From e16b170b676f4988b8ad3a0dd05023991a639ecc Mon Sep 17 00:00:00 2001 From: Lukas Fittl Date: Mon, 10 Aug 2020 00:58:59 -0700 Subject: [PATCH] Update Parser to Postgres 13, use new protobuf-generated structs This is a breaking change in the API, but necessary in order to significantly improve the performance of parsing a query into Go structs, as well as allowing future bi-directional passing of parse trees between Go and C, such as for a future addition of a deparser. --- .gitignore | 1 + Makefile | 24 +- benchmark_test.go | 27 +- fingerprint_test.go | 2 + go.mod | 7 +- go.sum | 22 + nodes/a_array_expr.go | 45 - nodes/a_array_expr_deparse.go | 7 - nodes/a_array_expr_fingerprint.go | 20 - nodes/a_const.go | 45 - nodes/a_const_deparse.go | 7 - nodes/a_const_fingerprint.go | 7 - nodes/a_expr.go | 69 - nodes/a_expr_deparse.go | 7 - nodes/a_expr_fingerprint.go | 51 - nodes/a_expr_kind.go | 27 - nodes/a_indices.go | 56 - nodes/a_indices_deparse.go | 7 - nodes/a_indices_fingerprint.go | 38 - nodes/a_indirection.go | 57 - nodes/a_indirection_deparse.go | 7 - nodes/a_indirection_fingerprint.go | 31 - nodes/a_star.go | 32 - nodes/a_star_deparse.go | 7 - nodes/a_star_fingerprint.go | 7 - nodes/access_priv.go | 49 - nodes/access_priv_deparse.go | 7 - nodes/access_priv_fingerprint.go | 24 - nodes/agg_split.go | 17 - nodes/agg_strategy.go | 18 - nodes/aggref.go | 213 - nodes/aggref_deparse.go | 7 - nodes/aggref_fingerprint.go | 146 - nodes/alias.go | 51 - nodes/alias_deparse.go | 7 - nodes/alias_fingerprint.go | 7 - nodes/alter_collation_stmt.go | 38 - nodes/alter_collation_stmt_deparse.go | 7 - nodes/alter_collation_stmt_fingerprint.go | 19 - nodes/alter_database_set_stmt.go | 51 - nodes/alter_database_set_stmt_deparse.go | 7 - nodes/alter_database_set_stmt_fingerprint.go | 24 - nodes/alter_database_stmt.go | 46 - nodes/alter_database_stmt_deparse.go | 7 - nodes/alter_database_stmt_fingerprint.go | 24 - nodes/alter_default_privileges_stmt.go | 51 - .../alter_default_privileges_stmt_deparse.go | 7 - ...ter_default_privileges_stmt_fingerprint.go | 31 - nodes/alter_domain_stmt.go | 91 - nodes/alter_domain_stmt_deparse.go | 7 - nodes/alter_domain_stmt_fingerprint.go | 54 - nodes/alter_enum_stmt.go | 78 - nodes/alter_enum_stmt_deparse.go | 7 - nodes/alter_enum_stmt_fingerprint.go | 46 - nodes/alter_event_trig_stmt.go | 49 - nodes/alter_event_trig_stmt_deparse.go | 7 - nodes/alter_event_trig_stmt_fingerprint.go | 18 - nodes/alter_extension_contents_stmt.go | 62 - .../alter_extension_contents_stmt_deparse.go | 7 - ...ter_extension_contents_stmt_fingerprint.go | 36 - nodes/alter_extension_stmt.go | 43 - nodes/alter_extension_stmt_deparse.go | 7 - nodes/alter_extension_stmt_fingerprint.go | 24 - nodes/alter_fdw_stmt.go | 54 - nodes/alter_fdw_stmt_deparse.go | 7 - nodes/alter_fdw_stmt_fingerprint.go | 36 - nodes/alter_foreign_server_stmt.go | 62 - nodes/alter_foreign_server_stmt_deparse.go | 7 - .../alter_foreign_server_stmt_fingerprint.go | 36 - nodes/alter_function_stmt.go | 51 - nodes/alter_function_stmt_deparse.go | 7 - nodes/alter_function_stmt_fingerprint.go | 31 - nodes/alter_object_depends_stmt.go | 67 - nodes/alter_object_depends_stmt_deparse.go | 7 - .../alter_object_depends_stmt_fingerprint.go | 50 - nodes/alter_object_schema_stmt.go | 75 - nodes/alter_object_schema_stmt_deparse.go | 7 - nodes/alter_object_schema_stmt_fingerprint.go | 48 - nodes/alter_op_family_stmt.go | 62 - nodes/alter_op_family_stmt_deparse.go | 7 - nodes/alter_op_family_stmt_fingerprint.go | 43 - nodes/alter_operator_stmt.go | 51 - nodes/alter_operator_stmt_deparse.go | 7 - nodes/alter_operator_stmt_fingerprint.go | 31 - nodes/alter_owner_stmt.go | 72 - nodes/alter_owner_stmt_deparse.go | 7 - nodes/alter_owner_stmt_fingerprint.go | 50 - nodes/alter_policy_stmt.go | 75 - nodes/alter_policy_stmt_deparse.go | 7 - nodes/alter_policy_stmt_fingerprint.go | 60 - nodes/alter_publication_stmt.go | 70 - nodes/alter_publication_stmt_deparse.go | 7 - nodes/alter_publication_stmt_fingerprint.go | 48 - nodes/alter_role_set_stmt.go | 69 - nodes/alter_role_set_stmt_deparse.go | 7 - nodes/alter_role_set_stmt_fingerprint.go | 36 - nodes/alter_role_stmt.go | 64 - nodes/alter_role_stmt_deparse.go | 7 - nodes/alter_role_stmt_fingerprint.go | 38 - nodes/alter_seq_stmt.go | 67 - nodes/alter_seq_stmt_deparse.go | 7 - nodes/alter_seq_stmt_fingerprint.go | 43 - nodes/alter_subscription_stmt.go | 66 - nodes/alter_subscription_stmt_deparse.go | 7 - nodes/alter_subscription_stmt_fingerprint.go | 48 - nodes/alter_subscription_type.go | 13 - nodes/alter_system_stmt.go | 43 - nodes/alter_system_stmt_deparse.go | 7 - nodes/alter_system_stmt_fingerprint.go | 19 - nodes/alter_table_cmd.go | 87 - nodes/alter_table_cmd_deparse.go | 7 - nodes/alter_table_cmd_fingerprint.go | 53 - nodes/alter_table_move_all_stmt.go | 66 - nodes/alter_table_move_all_stmt_deparse.go | 7 - .../alter_table_move_all_stmt_fingerprint.go | 41 - nodes/alter_table_space_options_stmt.go | 50 - .../alter_table_space_options_stmt_deparse.go | 7 - ...er_table_space_options_stmt_fingerprint.go | 31 - nodes/alter_table_stmt.go | 67 - nodes/alter_table_stmt_deparse.go | 7 - nodes/alter_table_stmt_fingerprint.go | 43 - nodes/alter_table_type.go | 76 - nodes/alter_ts_config_type.go | 16 - nodes/alter_ts_configuration_stmt.go | 87 - nodes/alter_ts_configuration_stmt_deparse.go | 7 - ...alter_ts_configuration_stmt_fingerprint.go | 65 - nodes/alter_ts_dictionary_stmt.go | 45 - nodes/alter_ts_dictionary_stmt_deparse.go | 7 - nodes/alter_ts_dictionary_stmt_fingerprint.go | 31 - nodes/alter_user_mapping_stmt.go | 59 - nodes/alter_user_mapping_stmt_deparse.go | 7 - nodes/alter_user_mapping_stmt_fingerprint.go | 36 - nodes/alternative_sub_plan.go | 50 - nodes/alternative_sub_plan_deparse.go | 7 - nodes/alternative_sub_plan_fingerprint.go | 31 - nodes/array_coerce_expr.go | 109 - nodes/array_coerce_expr_deparse.go | 7 - nodes/array_coerce_expr_fingerprint.go | 65 - nodes/array_expr.go | 90 - nodes/array_expr_deparse.go | 7 - nodes/array_expr_fingerprint.go | 54 - nodes/array_ref.go | 135 - nodes/array_ref_deparse.go | 7 - nodes/array_ref_fingerprint.go | 89 - nodes/bit_string.go | 34 - nodes/bit_string_deparse.go | 7 - nodes/bit_string_fingerprint.go | 11 - nodes/block_id_data.go | 58 - nodes/block_id_data_deparse.go | 7 - nodes/block_id_data_fingerprint.go | 19 - nodes/bool_expr.go | 58 - nodes/bool_expr_deparse.go | 7 - nodes/bool_expr_fingerprint.go | 40 - nodes/bool_expr_type.go | 17 - nodes/bool_test_type.go | 18 - nodes/boolean_test_deparse.go | 7 - nodes/boolean_test_expr.go | 66 - nodes/boolean_test_fingerprint.go | 40 - nodes/case_expr.go | 104 - nodes/case_expr_deparse.go | 7 - nodes/case_expr_fingerprint.go | 68 - nodes/case_test_expr.go | 66 - nodes/case_test_expr_deparse.go | 7 - nodes/case_test_expr_fingerprint.go | 36 - nodes/case_when.go | 61 - nodes/case_when_deparse.go | 7 - nodes/case_when_fingerprint.go | 44 - nodes/check_point_stmt.go | 30 - nodes/check_point_stmt_deparse.go | 7 - nodes/check_point_stmt_fingerprint.go | 7 - nodes/close_portal_stmt.go | 40 - nodes/close_portal_stmt_deparse.go | 7 - nodes/close_portal_stmt_fingerprint.go | 8 - nodes/cluster_stmt.go | 59 - nodes/cluster_stmt_deparse.go | 7 - nodes/cluster_stmt_fingerprint.go | 31 - nodes/cmd_type.go | 24 - nodes/coalesce_expr.go | 69 - nodes/coalesce_expr_deparse.go | 7 - nodes/coalesce_expr_fingerprint.go | 45 - nodes/coerce_to_domain.go | 91 - nodes/coerce_to_domain_deparse.go | 7 - nodes/coerce_to_domain_fingerprint.go | 55 - nodes/coerce_to_domain_value.go | 75 - nodes/coerce_to_domain_value_deparse.go | 7 - nodes/coerce_to_domain_value_fingerprint.go | 38 - nodes/coerce_via_io.go | 84 - nodes/coerce_via_io_deparse.go | 7 - nodes/coerce_via_io_fingerprint.go | 50 - nodes/coercion_context.go | 17 - nodes/coercion_form.go | 20 - nodes/collate_clause.go | 53 - nodes/collate_clause_deparse.go | 7 - nodes/collate_clause_fingerprint.go | 32 - nodes/collate_expr.go | 65 - nodes/collate_expr_deparse.go | 7 - nodes/collate_expr_fingerprint.go | 40 - nodes/column_def.go | 186 - nodes/column_def_deparse.go | 7 - nodes/column_def_fingerprint.go | 130 - nodes/column_ref.go | 55 - nodes/column_ref_deparse.go | 7 - nodes/column_ref_fingerprint.go | 20 - nodes/comment_stmt.go | 54 - nodes/comment_stmt_deparse.go | 7 - nodes/comment_stmt_fingerprint.go | 31 - nodes/common_table_expr.go | 118 - nodes/common_table_expr_deparse.go | 7 - nodes/common_table_expr_fingerprint.go | 98 - nodes/composite_type_stmt.go | 51 - nodes/composite_type_stmt_deparse.go | 7 - nodes/composite_type_stmt_fingerprint.go | 31 - nodes/const.go | 112 - nodes/const_deparse.go | 7 - nodes/const_fingerprint.go | 53 - nodes/constr_type.go | 53 - nodes/constraint.go | 265 - nodes/constraint_deparse.go | 7 - nodes/constraint_fingerprint.go | 202 - nodes/constraints_set_stmt.go | 46 - nodes/constraints_set_stmt_deparse.go | 7 - nodes/constraints_set_stmt_fingerprint.go | 26 - nodes/convert_rowtype_expr.go | 79 - nodes/convert_rowtype_expr_deparse.go | 7 - nodes/convert_rowtype_expr_fingerprint.go | 45 - nodes/copy_stmt.go | 99 - nodes/copy_stmt_deparse.go | 7 - nodes/copy_stmt_fingerprint.go | 72 - nodes/create_am_stmt.go | 56 - nodes/create_am_stmt_deparse.go | 7 - nodes/create_am_stmt_fingerprint.go | 30 - nodes/create_cast_stmt.go | 85 - nodes/create_cast_stmt_deparse.go | 7 - nodes/create_cast_stmt_fingerprint.go | 55 - nodes/create_conversion_stmt.go | 70 - nodes/create_conversion_stmt_deparse.go | 7 - nodes/create_conversion_stmt_fingerprint.go | 48 - nodes/create_domain_stmt.go | 72 - nodes/create_domain_stmt_deparse.go | 7 - nodes/create_domain_stmt_fingerprint.go | 55 - nodes/create_enum_stmt.go | 46 - nodes/create_enum_stmt_deparse.go | 7 - nodes/create_enum_stmt_fingerprint.go | 31 - nodes/create_event_trig_stmt.go | 62 - nodes/create_event_trig_stmt_deparse.go | 7 - nodes/create_event_trig_stmt_fingerprint.go | 41 - nodes/create_extension_stmt.go | 54 - nodes/create_extension_stmt_deparse.go | 7 - nodes/create_extension_stmt_fingerprint.go | 31 - nodes/create_fdw_stmt.go | 54 - nodes/create_fdw_stmt_deparse.go | 7 - nodes/create_fdw_stmt_fingerprint.go | 36 - nodes/create_foreign_server_stmt.go | 78 - nodes/create_foreign_server_stmt_deparse.go | 7 - .../create_foreign_server_stmt_fingerprint.go | 46 - nodes/create_foreign_table_stmt.go | 56 - nodes/create_foreign_table_stmt_deparse.go | 7 - .../create_foreign_table_stmt_fingerprint.go | 26 - nodes/create_function_stmt.go | 83 - nodes/create_function_stmt_deparse.go | 7 - nodes/create_function_stmt_fingerprint.go | 74 - nodes/create_op_class_item.go | 91 - nodes/create_op_class_item_deparse.go | 7 - nodes/create_op_class_item_fingerprint.go | 67 - nodes/create_op_class_stmt.go | 83 - nodes/create_op_class_stmt_deparse.go | 7 - nodes/create_op_class_stmt_fingerprint.go | 67 - nodes/create_op_family_stmt.go | 46 - nodes/create_op_family_stmt_deparse.go | 7 - nodes/create_op_family_stmt_fingerprint.go | 24 - nodes/create_p_lang_stmt.go | 79 - nodes/create_p_lang_stmt_deparse.go | 7 - nodes/create_p_lang_stmt_fingerprint.go | 60 - nodes/create_policy_stmt.go | 91 - nodes/create_policy_stmt_deparse.go | 7 - nodes/create_policy_stmt_fingerprint.go | 72 - nodes/create_publication_stmt.go | 58 - nodes/create_publication_stmt_deparse.go | 7 - nodes/create_publication_stmt_fingerprint.go | 43 - nodes/create_range_stmt.go | 46 - nodes/create_range_stmt_deparse.go | 7 - nodes/create_range_stmt_fingerprint.go | 31 - nodes/create_role_stmt.go | 59 - nodes/create_role_stmt_deparse.go | 7 - nodes/create_role_stmt_fingerprint.go | 31 - nodes/create_schema_stmt.go | 71 - nodes/create_schema_stmt_deparse.go | 7 - nodes/create_schema_stmt_fingerprint.go | 43 - nodes/create_seq_stmt.go | 75 - nodes/create_seq_stmt_deparse.go | 7 - nodes/create_seq_stmt_fingerprint.go | 48 - nodes/create_stats_stmt.go | 70 - nodes/create_stats_stmt_deparse.go | 7 - nodes/create_stats_stmt_fingerprint.go | 62 - nodes/create_stmt.go | 146 - nodes/create_stmt_deparse.go | 7 - nodes/create_stmt_fingerprint.go | 120 - nodes/create_subscription_stmt.go | 58 - nodes/create_subscription_stmt_deparse.go | 7 - nodes/create_subscription_stmt_fingerprint.go | 41 - nodes/create_table_as_stmt.go | 84 - nodes/create_table_as_stmt_deparse.go | 7 - nodes/create_table_as_stmt_fingerprint.go | 48 - nodes/create_table_space_stmt.go | 67 - nodes/create_table_space_stmt_deparse.go | 7 - nodes/create_table_space_stmt_fingerprint.go | 37 - nodes/create_transform_stmt.go | 85 - nodes/create_transform_stmt_deparse.go | 7 - nodes/create_transform_stmt_fingerprint.go | 55 - nodes/create_trig_stmt.go | 160 - nodes/create_trig_stmt_deparse.go | 7 - nodes/create_trig_stmt_fingerprint.go | 128 - nodes/create_user_mapping_stmt.go | 67 - nodes/create_user_mapping_stmt_deparse.go | 7 - nodes/create_user_mapping_stmt_fingerprint.go | 43 - nodes/createdb_stmt.go | 46 - nodes/createdb_stmt_deparse.go | 7 - nodes/createdb_stmt_fingerprint.go | 24 - nodes/current_of_expr.go | 70 - nodes/current_of_expr_deparse.go | 7 - nodes/current_of_expr_fingerprint.go | 36 - nodes/deallocate_stmt.go | 40 - nodes/deallocate_stmt_deparse.go | 7 - nodes/deallocate_stmt_fingerprint.go | 8 - nodes/declare_cursor_stmt.go | 51 - nodes/declare_cursor_stmt_deparse.go | 7 - nodes/declare_cursor_stmt_fingerprint.go | 28 - nodes/def_elem.go | 76 - nodes/def_elem_action.go | 22 - nodes/def_elem_deparse.go | 7 - nodes/def_elem_fingerprint.go | 38 - nodes/define_stmt.go | 78 - nodes/define_stmt_deparse.go | 7 - nodes/define_stmt_fingerprint.go | 60 - nodes/delete_stmt.go | 80 - nodes/delete_stmt_deparse.go | 7 - nodes/delete_stmt_fingerprint.go | 67 - nodes/discard_mode.go | 16 - nodes/discard_stmt.go | 38 - nodes/discard_stmt_deparse.go | 7 - nodes/discard_stmt_fingerprint.go | 14 - nodes/do_stmt.go | 40 - nodes/do_stmt_deparse.go | 7 - nodes/do_stmt_fingerprint.go | 19 - nodes/drop_behavior.go | 10 - nodes/drop_owned_stmt.go | 45 - nodes/drop_owned_stmt_deparse.go | 7 - nodes/drop_owned_stmt_fingerprint.go | 26 - nodes/drop_role_stmt.go | 51 - nodes/drop_role_stmt_deparse.go | 7 - nodes/drop_role_stmt_fingerprint.go | 26 - nodes/drop_stmt.go | 70 - nodes/drop_stmt_deparse.go | 7 - nodes/drop_stmt_fingerprint.go | 41 - nodes/drop_subscription_stmt.go | 50 - nodes/drop_subscription_stmt_deparse.go | 7 - nodes/drop_subscription_stmt_fingerprint.go | 24 - nodes/drop_table_space_stmt.go | 46 - nodes/drop_table_space_stmt_deparse.go | 7 - nodes/drop_table_space_stmt_fingerprint.go | 19 - nodes/drop_user_mapping_stmt.go | 59 - nodes/drop_user_mapping_stmt_deparse.go | 7 - nodes/drop_user_mapping_stmt_fingerprint.go | 31 - nodes/dropdb_stmt.go | 46 - nodes/dropdb_stmt_deparse.go | 7 - nodes/dropdb_stmt_fingerprint.go | 19 - nodes/execute_stmt.go | 46 - nodes/execute_stmt_deparse.go | 7 - nodes/execute_stmt_fingerprint.go | 20 - nodes/explain_stmt.go | 50 - nodes/explain_stmt_deparse.go | 7 - nodes/explain_stmt_fingerprint.go | 31 - nodes/expr.go | 34 - nodes/expr_deparse.go | 7 - nodes/expr_fingerprint.go | 7 - nodes/fetch_direction.go | 19 - nodes/fetch_stmt.go | 62 - nodes/fetch_stmt_deparse.go | 7 - nodes/fetch_stmt_fingerprint.go | 26 - nodes/field_select.go | 84 - nodes/field_select_deparse.go | 7 - nodes/field_select_fingerprint.go | 53 - nodes/field_store.go | 82 - nodes/field_store_deparse.go | 7 - nodes/field_store_fingerprint.go | 62 - nodes/float.go | 34 - nodes/float_deparse.go | 7 - nodes/float_fingerprint.go | 11 - nodes/from_expr.go | 51 - nodes/from_expr_deparse.go | 7 - nodes/from_expr_fingerprint.go | 31 - nodes/func_call.go | 125 - nodes/func_call_deparse.go | 7 - nodes/func_call_fingerprint.go | 90 - nodes/func_expr.go | 111 - nodes/func_expr_deparse.go | 7 - nodes/func_expr_fingerprint.go | 70 - nodes/function_parameter.go | 67 - nodes/function_parameter_deparse.go | 7 - nodes/function_parameter_fingerprint.go | 43 - nodes/function_parameter_mode.go | 14 - nodes/grant_object_type.go | 21 - nodes/grant_role_stmt.go | 88 - nodes/grant_role_stmt_deparse.go | 7 - nodes/grant_role_stmt_fingerprint.go | 60 - nodes/grant_stmt.go | 98 - nodes/grant_stmt_deparse.go | 7 - nodes/grant_stmt_fingerprint.go | 70 - nodes/grant_target_type.go | 15 - nodes/grouping_func.go | 100 - nodes/grouping_func_deparse.go | 7 - nodes/grouping_func_fingerprint.go | 63 - nodes/grouping_set.go | 50 - nodes/grouping_set_deparse.go | 7 - nodes/grouping_set_fingerprint.go | 28 - nodes/grouping_set_kind.go | 63 - nodes/import_foreign_schema_stmt.go | 74 - nodes/import_foreign_schema_stmt_deparse.go | 7 - .../import_foreign_schema_stmt_fingerprint.go | 53 - nodes/import_foreign_schema_type.go | 15 - nodes/index_elem.go | 89 - nodes/index_elem_deparse.go | 7 - nodes/index_elem_fingerprint.go | 65 - nodes/index_stmt.go | 194 - nodes/index_stmt_deparse.go | 7 - nodes/index_stmt_fingerprint.go | 139 - nodes/infer_clause.go | 64 - nodes/infer_clause_deparse.go | 7 - nodes/infer_clause_fingerprint.go | 37 - nodes/inference_elem.go | 65 - nodes/inference_elem_deparse.go | 7 - nodes/inference_elem_fingerprint.go | 43 - nodes/inline_code_block.go | 56 - nodes/inline_code_block_deparse.go | 7 - nodes/inline_code_block_fingerprint.go | 24 - nodes/insert_stmt.go | 105 - nodes/insert_stmt_deparse.go | 7 - nodes/insert_stmt_fingerprint.go | 86 - nodes/integer.go | 34 - nodes/integer_deparse.go | 7 - nodes/integer_fingerprint.go | 14 - nodes/into_clause.go | 95 - nodes/into_clause_deparse.go | 7 - nodes/into_clause_fingerprint.go | 72 - nodes/join_expr.go | 118 - nodes/join_expr_deparse.go | 7 - nodes/join_expr_fingerprint.go | 84 - nodes/join_type.go | 49 - nodes/list.go | 34 - nodes/list_deparse.go | 7 - nodes/list_fingerprint.go | 33 - nodes/listen_stmt.go | 38 - nodes/listen_stmt_deparse.go | 7 - nodes/listen_stmt_fingerprint.go | 12 - nodes/load_stmt.go | 38 - nodes/load_stmt_deparse.go | 7 - nodes/load_stmt_fingerprint.go | 12 - nodes/lock_clause_strength.go | 18 - nodes/lock_stmt.go | 54 - nodes/lock_stmt_deparse.go | 7 - nodes/lock_stmt_fingerprint.go | 31 - nodes/lock_wait_policy.go | 22 - nodes/locking_clause.go | 59 - nodes/locking_clause_deparse.go | 7 - nodes/locking_clause_fingerprint.go | 31 - nodes/min_max_expr.go | 85 - nodes/min_max_expr_deparse.go | 7 - nodes/min_max_expr_fingerprint.go | 55 - nodes/min_max_op.go | 13 - nodes/multi_assign_ref.go | 59 - nodes/multi_assign_ref_deparse.go | 7 - nodes/multi_assign_ref_fingerprint.go | 31 - nodes/named_arg_expr.go | 80 - nodes/named_arg_expr_deparse.go | 7 - nodes/named_arg_expr_fingerprint.go | 45 - nodes/next_value_expr.go | 57 - nodes/next_value_expr_deparse.go | 7 - nodes/next_value_expr_fingerprint.go | 31 - nodes/node.go | 84 - nodes/node_unmarshal.go | 1618 - nodes/node_unmarshal_helper.go | 59 - nodes/notify_stmt.go | 46 - nodes/notify_stmt_deparse.go | 7 - nodes/notify_stmt_fingerprint.go | 17 - nodes/null.go | 26 - nodes/null_deparse.go | 7 - nodes/null_fingerprint.go | 7 - nodes/null_test_deparse.go | 7 - nodes/null_test_expr.go | 84 - nodes/null_test_fingerprint.go | 45 - nodes/null_test_type.go | 28 - nodes/object_type.go | 61 - nodes/object_with_args.go | 57 - nodes/object_with_args_deparse.go | 7 - nodes/object_with_args_fingerprint.go | 38 - nodes/on_commit_action.go | 13 - nodes/on_conflict_action.go | 17 - nodes/on_conflict_clause.go | 77 - nodes/on_conflict_clause_deparse.go | 7 - nodes/on_conflict_clause_fingerprint.go | 51 - nodes/on_conflict_expr.go | 105 - nodes/on_conflict_expr_deparse.go | 7 - nodes/on_conflict_expr_fingerprint.go | 84 - nodes/op_expr.go | 107 - nodes/op_expr_deparse.go | 7 - nodes/op_expr_fingerprint.go | 65 - nodes/overriding_kind.go | 32 - nodes/param.go | 109 - nodes/param_deparse.go | 7 - nodes/param_exec_data.go | 66 - nodes/param_exec_data_deparse.go | 7 - nodes/param_exec_data_fingerprint.go | 14 - nodes/param_extern_data.go | 87 - nodes/param_extern_data_deparse.go | 7 - nodes/param_extern_data_fingerprint.go | 24 - nodes/param_fingerprint.go | 47 - nodes/param_kind.go | 39 - nodes/param_list_info_data.go | 87 - nodes/param_list_info_data_deparse.go | 7 - nodes/param_list_info_data_fingerprint.go | 19 - nodes/param_ref.go | 45 - nodes/param_ref_deparse.go | 7 - nodes/param_ref_fingerprint.go | 7 - nodes/partition_bound_spec.go | 79 - nodes/partition_bound_spec_deparse.go | 7 - nodes/partition_bound_spec_fingerprint.go | 50 - nodes/partition_cmd.go | 55 - nodes/partition_cmd_deparse.go | 7 - nodes/partition_cmd_fingerprint.go | 31 - nodes/partition_elem.go | 72 - nodes/partition_elem_deparse.go | 7 - nodes/partition_elem_fingerprint.go | 49 - nodes/partition_range_datum.go | 52 - nodes/partition_range_datum_deparse.go | 7 - nodes/partition_range_datum_fingerprint.go | 28 - nodes/partition_range_datum_kind.go | 16 - nodes/partition_spec.go | 55 - nodes/partition_spec_deparse.go | 7 - nodes/partition_spec_fingerprint.go | 25 - nodes/prepare_stmt.go | 54 - nodes/prepare_stmt_deparse.go | 7 - nodes/prepare_stmt_fingerprint.go | 32 - nodes/query.go | 370 - nodes/query_deparse.go | 7 - nodes/query_fingerprint.go | 322 - nodes/query_source.go | 14 - nodes/range_function.go | 94 - nodes/range_function_deparse.go | 7 - nodes/range_function_fingerprint.go | 60 - nodes/range_subselect.go | 58 - nodes/range_subselect_deparse.go | 7 - nodes/range_subselect_fingerprint.go | 38 - nodes/range_table_func.go | 90 - nodes/range_table_func_col.go | 93 - nodes/range_table_func_col_deparse.go | 7 - nodes/range_table_func_col_fingerprint.go | 62 - nodes/range_table_func_deparse.go | 7 - nodes/range_table_func_fingerprint.go | 76 - nodes/range_table_sample.go | 76 - nodes/range_table_sample_deparse.go | 7 - nodes/range_table_sample_fingerprint.go | 56 - nodes/range_tbl_entry.go | 459 - nodes/range_tbl_entry_deparse.go | 7 - nodes/range_tbl_entry_fingerprint.go | 246 - nodes/range_tbl_function.go | 102 - nodes/range_tbl_function_deparse.go | 7 - nodes/range_tbl_function_fingerprint.go | 78 - nodes/range_tbl_ref.go | 41 - nodes/range_tbl_ref_deparse.go | 7 - nodes/range_tbl_ref_fingerprint.go | 14 - nodes/range_var.go | 99 - nodes/range_var_deparse.go | 7 - nodes/range_var_fingerprint.go | 49 - nodes/raw_stmt.go | 62 - nodes/raw_stmt_deparse.go | 7 - nodes/raw_stmt_fingerprint.go | 22 - nodes/reassign_owned_stmt.go | 50 - nodes/reassign_owned_stmt_deparse.go | 7 - nodes/reassign_owned_stmt_fingerprint.go | 31 - nodes/refresh_mat_view_stmt.go | 59 - nodes/refresh_mat_view_stmt_deparse.go | 7 - nodes/refresh_mat_view_stmt_fingerprint.go | 31 - nodes/reindex_object_type.go | 14 - nodes/reindex_stmt.go | 65 - nodes/reindex_stmt_deparse.go | 7 - nodes/reindex_stmt_fingerprint.go | 36 - nodes/relabel_type.go | 94 - nodes/relabel_type_deparse.go | 7 - nodes/relabel_type_fingerprint.go | 54 - nodes/rename_stmt.go | 101 - nodes/rename_stmt_deparse.go | 7 - nodes/rename_stmt_fingerprint.go | 63 - nodes/replica_identity_stmt.go | 48 - nodes/replica_identity_stmt_deparse.go | 7 - nodes/replica_identity_stmt_fingerprint.go | 18 - nodes/res_target.go | 76 - nodes/res_target_deparse.go | 7 - nodes/res_target_fingerprint.go | 45 - nodes/role_spec.go | 50 - nodes/role_spec_deparse.go | 7 - nodes/role_spec_fingerprint.go | 20 - nodes/role_spec_type.go | 15 - nodes/role_stmt_type.go | 20 - nodes/row_compare_expr.go | 96 - nodes/row_compare_expr_deparse.go | 7 - nodes/row_compare_expr_fingerprint.go | 86 - nodes/row_compare_type.go | 29 - nodes/row_expr.go | 107 - nodes/row_expr_deparse.go | 7 - nodes/row_expr_fingerprint.go | 56 - nodes/row_mark_clause.go | 70 - nodes/row_mark_clause_deparse.go | 7 - nodes/row_mark_clause_fingerprint.go | 29 - nodes/rte_kind.go | 96 - nodes/rule_stmt.go | 91 - nodes/rule_stmt_deparse.go | 7 - nodes/rule_stmt_fingerprint.go | 65 - nodes/scalar_array_op_expr.go | 92 - nodes/scalar_array_op_expr_deparse.go | 7 - nodes/scalar_array_op_expr_fingerprint.go | 55 - nodes/scan_direction.go | 15 - nodes/sec_label_stmt.go | 62 - nodes/sec_label_stmt_deparse.go | 7 - nodes/sec_label_stmt_fingerprint.go | 36 - nodes/select_stmt.go | 228 - nodes/select_stmt_deparse.go | 7 - nodes/select_stmt_fingerprint.go | 229 - nodes/set_op_cmd.go | 18 - nodes/set_op_strategy.go | 10 - nodes/set_operation.go | 25 - nodes/set_operation_stmt.go | 115 - nodes/set_operation_stmt_deparse.go | 7 - nodes/set_operation_stmt_fingerprint.go | 91 - nodes/set_to_default.go | 73 - nodes/set_to_default_deparse.go | 7 - nodes/set_to_default_fingerprint.go | 7 - nodes/sort_by.go | 69 - nodes/sort_by_deparse.go | 7 - nodes/sort_by_dir.go | 13 - nodes/sort_by_fingerprint.go | 44 - nodes/sort_by_nulls.go | 11 - nodes/sort_group_clause.go | 124 - nodes/sort_group_clause_deparse.go | 7 - nodes/sort_group_clause_fingerprint.go | 34 - nodes/sql_value_function.go | 66 - nodes/sql_value_function_deparse.go | 7 - nodes/sql_value_function_fingerprint.go | 37 - nodes/sql_value_function_op.go | 34 - nodes/string.go | 34 - nodes/string_deparse.go | 7 - nodes/string_fingerprint.go | 11 - nodes/sub_link.go | 133 - nodes/sub_link_deparse.go | 7 - nodes/sub_link_fingerprint.go | 68 - nodes/sub_link_type.go | 67 - nodes/sub_plan.go | 228 - nodes/sub_plan_deparse.go | 7 - nodes/sub_plan_fingerprint.go | 130 - nodes/table_func.go | 133 - nodes/table_func_deparse.go | 7 - nodes/table_func_fingerprint.go | 140 - nodes/table_like_clause.go | 50 - nodes/table_like_clause_deparse.go | 7 - nodes/table_like_clause_fingerprint.go | 26 - nodes/table_like_option.go | 15 - nodes/table_sample_clause.go | 55 - nodes/table_sample_clause_deparse.go | 7 - nodes/table_sample_clause_fingerprint.go | 38 - nodes/target_entry.go | 147 - nodes/target_entry_deparse.go | 7 - nodes/target_entry_fingerprint.go | 63 - nodes/transaction_stmt.go | 54 - nodes/transaction_stmt_deparse.go | 7 - nodes/transaction_stmt_fingerprint.go | 17 - nodes/transaction_stmt_kind.go | 22 - nodes/trigger_transition.go | 58 - nodes/trigger_transition_deparse.go | 7 - nodes/trigger_transition_fingerprint.go | 24 - nodes/truncate_stmt.go | 54 - nodes/truncate_stmt_deparse.go | 7 - nodes/truncate_stmt_fingerprint.go | 31 - nodes/type_cast.go | 58 - nodes/type_cast_deparse.go | 7 - nodes/type_cast_fingerprint.go | 32 - nodes/type_name.go | 103 - nodes/type_name_deparse.go | 7 - nodes/type_name_fingerprint.go | 66 - nodes/typedefs.go | 51 - nodes/unlisten_stmt.go | 38 - nodes/unlisten_stmt_deparse.go | 7 - nodes/unlisten_stmt_fingerprint.go | 12 - nodes/update_stmt.go | 88 - nodes/update_stmt_deparse.go | 7 - nodes/update_stmt_fingerprint.go | 79 - nodes/vacuum_option.go | 24 - nodes/vacuum_stmt.go | 63 - nodes/vacuum_stmt_deparse.go | 7 - nodes/vacuum_stmt_fingerprint.go | 38 - nodes/var.go | 114 - nodes/var_deparse.go | 7 - nodes/var_fingerprint.go | 62 - nodes/varatt_external.go | 70 - nodes/varatt_external_deparse.go | 7 - nodes/varatt_external_fingerprint.go | 29 - nodes/variable_set_kind.go | 21 - nodes/variable_set_stmt.go | 58 - nodes/variable_set_stmt_deparse.go | 7 - nodes/variable_set_stmt_fingerprint.go | 36 - nodes/variable_show_stmt.go | 38 - nodes/variable_show_stmt_deparse.go | 7 - nodes/variable_show_stmt_fingerprint.go | 12 - nodes/vartag_external.go | 17 - nodes/view_check_option.go | 15 - nodes/view_stmt.go | 83 - nodes/view_stmt_deparse.go | 7 - nodes/view_stmt_fingerprint.go | 67 - nodes/wco_kind.go | 18 - nodes/window_clause.go | 112 - nodes/window_clause_deparse.go | 7 - nodes/window_clause_fingerprint.go | 82 - nodes/window_def.go | 98 - nodes/window_def_deparse.go | 7 - nodes/window_def_fingerprint.go | 74 - nodes/window_func.go | 117 - nodes/window_func_deparse.go | 7 - nodes/window_func_fingerprint.go | 82 - nodes/with_check_option.go | 66 - nodes/with_check_option_deparse.go | 7 - nodes/with_check_option_fingerprint.go | 41 - nodes/with_clause.go | 57 - nodes/with_clause_deparse.go | 7 - nodes/with_clause_fingerprint.go | 27 - nodes/xml_expr.go | 106 - nodes/xml_expr_deparse.go | 7 - nodes/xml_expr_fingerprint.go | 83 - nodes/xml_expr_op.go | 27 - nodes/xml_option_type.go | 10 - nodes/xml_serialize.go | 66 - nodes/xml_serialize_deparse.go | 7 - nodes/xml_serialize_fingerprint.go | 39 - parse_test.go | 61 +- parser/contrib_pgcrypto_sha1.c | 353 - parser/include/access/amapi.h | 23 +- parser/include/access/attmap.h | 52 + parser/include/access/attnum.h | 4 +- parser/include/access/clog.h | 61 + parser/include/access/commit_ts.h | 16 +- parser/include/access/detoast.h | 92 + parser/include/access/genam.h | 85 +- parser/include/access/gin.h | 12 +- parser/include/access/hash.h | 427 - parser/include/access/heapam.h | 204 - parser/include/access/htup.h | 5 +- parser/include/access/htup_details.h | 123 +- parser/include/access/itup.h | 36 +- parser/include/access/parallel.h | 19 +- parser/include/access/printtup.h | 10 +- parser/include/access/relation.h | 28 + parser/include/access/relscan.h | 176 + parser/include/access/rmgrlist.h | 4 +- parser/include/access/sdir.h | 2 +- parser/include/access/skey.h | 38 +- parser/include/access/stratnum.h | 12 +- parser/include/access/sysattr.h | 15 +- parser/include/access/table.h | 27 + parser/include/access/tableam.h | 1825 + parser/include/access/transam.h | 115 +- parser/include/access/tupconvert.h | 24 +- parser/include/access/tupdesc.h | 72 +- parser/include/access/tupmacs.h | 16 +- parser/include/access/twophase.h | 15 +- parser/include/access/xact.h | 121 +- parser/include/access/xlog.h | 95 +- parser/include/access/xlog_internal.h | 114 +- parser/include/access/xlogdefs.h | 11 +- parser/include/access/xloginsert.h | 12 +- parser/include/access/xlogreader.h | 181 +- parser/include/access/xlogrecord.h | 17 +- parser/include/bootstrap/bootstrap.h | 22 +- parser/include/c.h | 330 +- parser/include/catalog/catalog.h | 42 + parser/include/catalog/catversion.h | 58 + parser/include/catalog/dependency.h | 143 +- parser/include/catalog/genbki.h | 38 +- parser/include/catalog/index.h | 199 +- parser/include/catalog/indexing.h | 55 +- parser/include/catalog/namespace.h | 67 +- parser/include/catalog/objectaccess.h | 24 +- parser/include/catalog/objectaddress.h | 29 +- parser/include/catalog/partition.h | 101 - parser/include/catalog/pg_aggregate.h | 405 +- parser/include/catalog/pg_aggregate_d.h | 77 + parser/include/catalog/pg_am.h | 69 +- parser/include/catalog/pg_am_d.h | 45 + parser/include/catalog/pg_attribute.h | 105 +- parser/include/catalog/pg_attribute_d.h | 59 + parser/include/catalog/pg_authid.h | 70 +- parser/include/catalog/pg_authid_d.h | 49 + parser/include/catalog/pg_class.h | 231 +- parser/include/catalog/pg_class_d.h | 103 + parser/include/catalog/pg_collation.h | 63 +- parser/include/catalog/pg_collation_d.h | 45 + parser/include/catalog/pg_constraint.h | 146 +- parser/include/catalog/pg_constraint_d.h | 67 + parser/include/catalog/pg_control.h | 13 +- parser/include/catalog/pg_conversion.h | 85 +- parser/include/catalog/pg_conversion_d.h | 35 + parser/include/catalog/pg_conversion_fn.h | 27 - parser/include/catalog/pg_depend.h | 53 +- parser/include/catalog/pg_depend_d.h | 34 + parser/include/catalog/pg_event_trigger.h | 27 +- parser/include/catalog/pg_event_trigger_d.h | 34 + parser/include/catalog/pg_index.h | 51 +- parser/include/catalog/pg_index_d.h | 56 + parser/include/catalog/pg_language.h | 75 +- parser/include/catalog/pg_language_d.h | 39 + parser/include/catalog/pg_namespace.h | 44 +- parser/include/catalog/pg_namespace_d.h | 34 + parser/include/catalog/pg_opclass.h | 227 +- parser/include/catalog/pg_opclass_d.h | 49 + parser/include/catalog/pg_operator.h | 1869 +- parser/include/catalog/pg_operator_d.h | 106 + parser/include/catalog/pg_opfamily.h | 176 +- parser/include/catalog/pg_opfamily_d.h | 47 + parser/include/catalog/pg_partitioned_table.h | 31 +- .../include/catalog/pg_partitioned_table_d.h | 35 + parser/include/catalog/pg_proc.h | 5537 +- parser/include/catalog/pg_proc_d.h | 99 + parser/include/catalog/pg_proc_fn.h | 51 - parser/include/catalog/pg_publication.h | 62 +- parser/include/catalog/pg_publication_d.h | 36 + .../include/catalog/pg_replication_origin.h | 29 +- .../include/catalog/pg_replication_origin_d.h | 29 + parser/include/catalog/pg_statistic.h | 101 +- parser/include/catalog/pg_statistic_d.h | 194 + parser/include/catalog/pg_statistic_ext.h | 40 +- parser/include/catalog/pg_statistic_ext_d.h | 40 + parser/include/catalog/pg_transform.h | 26 +- parser/include/catalog/pg_transform_d.h | 32 + parser/include/catalog/pg_trigger.h | 41 +- parser/include/catalog/pg_trigger_d.h | 106 + parser/include/catalog/pg_ts_config.h | 52 +- parser/include/catalog/pg_ts_config_d.h | 32 + parser/include/catalog/pg_ts_dict.h | 56 +- parser/include/catalog/pg_ts_dict_d.h | 33 + parser/include/catalog/pg_ts_parser.h | 64 +- parser/include/catalog/pg_ts_parser_d.h | 35 + parser/include/catalog/pg_ts_template.h | 55 +- parser/include/catalog/pg_ts_template_d.h | 32 + parser/include/catalog/pg_type.h | 672 +- parser/include/catalog/pg_type_d.h | 285 + parser/include/catalog/storage.h | 48 + parser/include/commands/async.h | 11 +- parser/include/commands/dbcommands.h | 9 +- parser/include/commands/defrem.h | 92 +- parser/include/commands/event_trigger.h | 29 +- parser/include/commands/explain.h | 61 +- parser/include/commands/prepare.h | 23 +- parser/include/commands/tablespace.h | 5 +- parser/include/commands/trigger.h | 123 +- parser/include/commands/vacuum.h | 168 +- parser/include/commands/variable.h | 6 +- parser/include/common/file_perm.h | 56 + parser/include/common/hashfn.h | 104 + parser/include/common/ip.h | 16 +- parser/include/common/keywords.h | 27 +- parser/include/common/kwlookup.h | 44 + parser/include/common/relpath.h | 20 +- parser/include/common/string.h | 19 + .../include/common/unicode_combining_table.h | 196 + parser/include/datatype/timestamp.h | 2 +- parser/include/executor/execdesc.h | 16 +- parser/include/executor/executor.h | 330 +- parser/include/executor/functions.h | 18 +- parser/include/executor/instrument.h | 51 +- parser/include/executor/spi.h | 79 +- parser/include/executor/tablefunc.h | 18 +- parser/include/executor/tuptable.h | 526 +- parser/include/fmgr.h | 246 +- parser/include/funcapi.h | 64 +- parser/include/getaddrinfo.h | 12 +- parser/include/jit/jit.h | 105 + parser/include/kwlist_d.h | 1072 + parser/include/lib/ilist.h | 2 +- parser/include/lib/pairingheap.h | 8 +- parser/include/lib/simplehash.h | 170 +- parser/include/lib/stringinfo.h | 19 +- parser/include/libpq/auth.h | 2 +- parser/include/libpq/be-fsstubs.h | 37 - parser/include/libpq/crypt.h | 16 +- parser/include/libpq/hba.h | 21 +- parser/include/libpq/libpq-be.h | 126 +- parser/include/libpq/libpq.h | 46 +- parser/include/libpq/pqcomm.h | 13 +- parser/include/libpq/pqformat.h | 172 +- parser/include/libpq/pqsignal.h | 2 +- parser/include/mb/pg_wchar.h | 175 +- parser/include/mb/stringinfo_mb.h | 24 + parser/include/miscadmin.h | 72 +- parser/include/nodes/bitmapset.h | 22 +- parser/include/nodes/execnodes.h | 709 +- parser/include/nodes/extensible.h | 11 +- parser/include/nodes/lockoptions.h | 17 +- parser/include/nodes/makefuncs.h | 71 +- parser/include/nodes/memnodes.h | 21 +- parser/include/nodes/nodeFuncs.h | 89 +- parser/include/nodes/nodes.h | 64 +- parser/include/nodes/params.h | 97 +- parser/include/nodes/parsenodes.h | 321 +- .../include/nodes/{relation.h => pathnodes.h} | 548 +- parser/include/nodes/pg_list.h | 594 +- parser/include/nodes/plannodes.h | 251 +- parser/include/nodes/primnodes.h | 146 +- parser/include/nodes/print.h | 4 +- parser/include/nodes/tidbitmap.h | 11 +- parser/include/nodes/value.h | 8 +- parser/include/optimizer/cost.h | 207 +- parser/include/optimizer/geqo.h | 6 +- parser/include/optimizer/geqo_gene.h | 2 +- parser/include/optimizer/optimizer.h | 199 + parser/include/optimizer/paths.h | 200 +- parser/include/optimizer/planmain.h | 88 +- parser/include/optimizer/planner.h | 64 - parser/include/optimizer/tlist.h | 72 - parser/include/optimizer/var.h | 40 - parser/include/parser/analyze.h | 18 +- parser/include/parser/gram.h | 1853 +- parser/include/parser/gramparse.h | 6 +- parser/include/parser/kwlist.h | 25 +- parser/include/parser/parse_agg.h | 56 +- parser/include/parser/parse_clause.h | 38 +- parser/include/parser/parse_coerce.h | 85 +- parser/include/parser/parse_collate.h | 2 +- parser/include/parser/parse_expr.h | 2 +- parser/include/parser/parse_func.h | 56 +- parser/include/parser/parse_node.h | 87 +- parser/include/parser/parse_oper.h | 30 +- parser/include/parser/parse_relation.h | 185 +- parser/include/parser/parse_target.h | 30 +- parser/include/parser/parse_type.h | 16 +- parser/include/parser/parser.h | 2 +- parser/include/parser/parsetree.h | 24 +- parser/include/parser/scanner.h | 42 +- parser/include/parser/scansup.h | 6 +- parser/include/partitioning/partdefs.h | 26 + parser/include/pg_config.h | 338 +- parser/include/pg_config_manual.h | 80 +- parser/include/pg_getopt.h | 2 +- parser/include/pg_query.h | 63 +- parser/include/pg_query_enum_defs.c | 2454 + parser/include/pg_query_fingerprint_conds.c | 245 +- parser/include/pg_query_fingerprint_defs.c | 9977 +- parser/include/pg_query_json_conds.c | 642 - parser/include/pg_query_json_defs.c | 2563 - parser/include/pg_query_json_helper.c | 72 +- parser/include/pg_query_outfuncs_conds.c | 686 + parser/include/pg_query_outfuncs_defs.c | 2437 + parser/include/pg_query_readfuncs_conds.c | 222 + parser/include/pg_query_readfuncs_defs.c | 2878 + parser/include/pg_trace.h | 2 +- parser/include/pgstat.h | 234 +- parser/include/pgtime.h | 26 +- parser/include/pl_gram.h | 459 +- parser/include/pl_reserved_kwlist.h | 52 + parser/include/pl_reserved_kwlist_d.h | 114 + parser/include/pl_unreserved_kwlist.h | 112 + parser/include/pl_unreserved_kwlist_d.h | 246 + parser/include/plerrcodes.h | 72 + parser/include/plpgsql.h | 444 +- parser/include/port.h | 249 +- parser/include/port/atomics.h | 15 +- parser/include/port/atomics/arch-arm.h | 2 +- parser/include/port/atomics/arch-ppc.h | 227 +- parser/include/port/atomics/arch-x86.h | 2 +- parser/include/port/atomics/fallback.h | 2 +- parser/include/port/atomics/generic-gcc.h | 60 +- parser/include/port/atomics/generic.h | 88 +- parser/include/port/pg_bitutils.h | 226 + parser/include/port/pg_bswap.h | 142 +- parser/include/port/pg_crc32c.h | 30 +- parser/include/portability/instr_time.h | 10 +- parser/include/postgres.h | 148 +- parser/include/postmaster/autovacuum.h | 8 +- parser/include/postmaster/bgworker.h | 23 +- .../include/postmaster/bgworker_internals.h | 2 +- parser/include/postmaster/bgwriter.h | 10 +- parser/include/postmaster/fork_process.h | 2 +- parser/include/postmaster/interrupt.h | 32 + parser/include/postmaster/pgarch.h | 2 +- parser/include/postmaster/postmaster.h | 4 +- parser/include/postmaster/syslogger.h | 7 +- parser/include/postmaster/walwriter.h | 2 +- parser/include/protobuf-c.h | 1106 + parser/include/protobuf-c/protobuf-c.h | 1106 + parser/include/protobuf/pg_query.pb-c.h | 10846 ++ parser/include/protobuf/pg_query.pb.h | 124718 +++++++++++++++ parser/include/regex/regex.h | 8 + parser/include/replication/logicallauncher.h | 2 +- parser/include/replication/logicalproto.h | 33 +- parser/include/replication/logicalworker.h | 2 +- parser/include/replication/origin.h | 13 +- parser/include/replication/reorderbuffer.h | 156 +- parser/include/replication/slot.h | 34 +- parser/include/replication/syncrep.h | 5 +- parser/include/replication/walreceiver.h | 89 +- parser/include/replication/walsender.h | 5 +- parser/include/rewrite/prs2lock.h | 4 +- parser/include/rewrite/rewriteHandler.h | 23 +- parser/include/rewrite/rewriteManip.h | 40 +- parser/include/rewrite/rewriteSupport.h | 2 +- parser/include/sha1.h | 75 - parser/include/storage/backendid.h | 2 +- parser/include/storage/block.h | 4 +- parser/include/storage/buf.h | 2 +- parser/include/storage/bufmgr.h | 52 +- parser/include/storage/bufpage.h | 41 +- parser/include/storage/condition_variable.h | 31 +- parser/include/storage/dsm.h | 10 +- parser/include/storage/dsm_impl.h | 13 +- parser/include/storage/fd.h | 80 +- parser/include/storage/ipc.h | 5 +- parser/include/storage/item.h | 2 +- parser/include/storage/itemid.h | 15 +- parser/include/storage/itemptr.h | 51 +- parser/include/storage/large_object.h | 100 + parser/include/storage/latch.h | 35 +- parser/include/storage/lmgr.h | 26 +- parser/include/storage/lock.h | 99 +- parser/include/storage/lockdefs.h | 12 +- parser/include/storage/lwlock.h | 40 +- parser/include/storage/lwlocknames.h | 23 +- parser/include/storage/off.h | 3 +- parser/include/storage/pg_sema.h | 4 +- parser/include/storage/pg_shmem.h | 25 +- parser/include/storage/pmsignal.h | 42 +- parser/include/storage/predicate.h | 32 +- parser/include/storage/proc.h | 31 +- parser/include/storage/proclist_types.h | 14 +- parser/include/storage/procsignal.h | 25 +- parser/include/storage/relfilenode.h | 2 +- parser/include/storage/s_lock.h | 8 +- parser/include/storage/sharedfileset.h | 45 + parser/include/storage/shm_mq.h | 10 +- parser/include/storage/shm_toc.h | 2 +- parser/include/storage/shmem.h | 11 +- parser/include/storage/sinval.h | 17 +- parser/include/storage/sinvaladt.h | 43 + parser/include/storage/smgr.h | 109 + parser/include/storage/spin.h | 4 +- parser/include/storage/standby.h | 14 +- parser/include/storage/standbydefs.h | 12 +- parser/include/storage/sync.h | 62 + parser/include/tcop/cmdtag.h | 58 + parser/include/tcop/cmdtaglist.h | 217 + parser/include/tcop/deparse_utility.h | 6 +- parser/include/tcop/dest.h | 9 +- parser/include/tcop/fastpath.h | 2 +- parser/include/tcop/pquery.h | 16 +- parser/include/tcop/tcopprot.h | 41 +- parser/include/tcop/utility.h | 71 +- parser/include/tsearch/ts_cache.h | 2 +- parser/include/utils/acl.h | 90 +- parser/include/utils/aclchk_internal.h | 6 +- parser/include/utils/array.h | 125 +- parser/include/utils/builtins.h | 61 +- parser/include/utils/bytea.h | 3 +- parser/include/utils/catcache.h | 142 +- parser/include/utils/date.h | 15 +- parser/include/utils/datetime.h | 54 +- parser/include/utils/datum.h | 17 +- parser/include/utils/dsa.h | 6 +- parser/include/utils/dynahash.h | 2 +- parser/include/utils/dynamic_loader.h | 25 - parser/include/utils/elog.h | 159 +- parser/include/utils/errcodes.h | 18 + parser/include/utils/expandeddatum.h | 10 +- parser/include/utils/expandedrecord.h | 231 + parser/include/utils/float.h | 356 + parser/include/utils/fmgroids.h | 342 +- parser/include/utils/fmgrprotos.h | 336 +- parser/include/utils/fmgrtab.h | 48 + parser/include/utils/guc.h | 184 +- parser/include/utils/guc_tables.h | 10 +- parser/include/utils/hsearch.h | 31 +- parser/include/utils/inval.h | 14 +- parser/include/utils/lsyscache.h | 69 +- parser/include/utils/memdebug.h | 2 +- parser/include/utils/memutils.h | 58 +- parser/include/utils/numeric.h | 14 +- parser/include/utils/palloc.h | 6 +- parser/include/utils/partcache.h | 102 + parser/include/utils/pg_locale.h | 9 +- parser/include/utils/pg_lsn.h | 29 + parser/include/utils/pidfile.h | 5 +- parser/include/utils/plancache.h | 90 +- parser/include/utils/portal.h | 38 +- parser/include/utils/probes.h | 2 +- parser/include/utils/ps_status.h | 5 +- parser/include/utils/queryenvironment.h | 2 +- parser/include/utils/regproc.h | 6 +- parser/include/utils/rel.h | 290 +- parser/include/utils/relcache.h | 56 +- parser/include/utils/reltrigger.h | 3 +- parser/include/utils/resowner.h | 20 +- parser/include/utils/rls.h | 2 +- parser/include/utils/ruleutils.h | 18 +- parser/include/utils/sharedtuplestore.h | 61 + parser/include/utils/snapmgr.h | 56 +- parser/include/utils/snapshot.h | 129 +- parser/include/utils/sortsupport.h | 12 +- parser/include/utils/syscache.h | 69 +- parser/include/utils/timeout.h | 3 +- parser/include/utils/timestamp.h | 19 +- parser/include/utils/tqual.h | 113 - parser/include/utils/tuplesort.h | 217 +- parser/include/utils/tuplestore.h | 16 +- parser/include/utils/typcache.h | 47 +- parser/include/utils/tzparser.h | 2 +- parser/include/utils/varlena.h | 30 +- parser/include/utils/xml.h | 16 +- parser/include/xxhash.h | 5445 + parser/include/xxhash/xxhash.h | 5445 + parser/parser.go | 22 +- parser/pg_query.c | 5 +- parser/pg_query.pb-c.c | 37628 +++++ parser/pg_query_deparse.c | 9953 ++ parser/pg_query_fingerprint.c | 239 +- parser/pg_query_json.c | 227 - parser/pg_query_json.h | 6 - parser/pg_query_json_plpgsql.c | 556 +- parser/pg_query_normalize.c | 30 +- parser/pg_query_outfuncs.h | 10 + parser/pg_query_outfuncs_json.c | 297 + parser/pg_query_outfuncs_protobuf.c | 237 + parser/pg_query_parse.c | 50 +- parser/pg_query_parse_plpgsql.c | 12 +- parser/pg_query_readfuncs.h | 11 + parser/pg_query_readfuncs_protobuf.c | 142 + parser/pg_query_scan.c | 173 + parser/pg_query_split.c | 221 + parser/protobuf-c.c | 3660 + parser/src_backend_catalog_namespace.c | 64 +- parser/src_backend_catalog_pg_proc.c | 14 +- parser/src_backend_commands_define.c | 117 + parser/src_backend_libpq_pqcomm.c | 34 +- parser/src_backend_nodes_bitmapset.c | 231 +- parser/src_backend_nodes_copyfuncs.c | 376 +- parser/src_backend_nodes_equalfuncs.c | 142 +- parser/src_backend_nodes_extensible.c | 2 +- parser/src_backend_nodes_list.c | 672 +- parser/src_backend_nodes_makefuncs.c | 89 +- parser/src_backend_nodes_nodeFuncs.c | 53 +- parser/src_backend_nodes_value.c | 15 +- parser/src_backend_parser_gram.c | 60425 +++---- parser/src_backend_parser_parse_expr.c | 31 +- parser/src_backend_parser_parser.c | 299 +- parser/src_backend_parser_scan.c | 11989 +- parser/src_backend_parser_scansup.c | 9 +- parser/src_backend_postmaster_postmaster.c | 181 +- parser/src_backend_storage_ipc_ipc.c | 9 +- parser/src_backend_storage_lmgr_s_lock.c | 5 +- parser/src_backend_tcop_postgres.c | 61 +- parser/src_backend_utils_adt_datum.c | 33 +- parser/src_backend_utils_adt_expandeddatum.c | 6 +- parser/src_backend_utils_adt_format_type.c | 45 +- parser/src_backend_utils_adt_ruleutils.c | 324 +- parser/src_backend_utils_error_assert.c | 15 +- parser/src_backend_utils_error_elog.c | 564 +- parser/src_backend_utils_fmgr_fmgr.c | 570 + parser/src_backend_utils_hash_dynahash.c | 30 +- parser/src_backend_utils_init_globals.c | 15 +- parser/src_backend_utils_mb_mbutils.c | 328 +- parser/src_backend_utils_misc_guc.c | 306 +- parser/src_backend_utils_mmgr_aset.c | 672 +- parser/src_backend_utils_mmgr_mcxt.c | 319 +- ...ls_mb_encnames.c => src_common_encnames.c} | 56 +- parser/src_common_keywords.c | 105 +- parser/src_common_kwlist_d.h | 1081 + parser/src_common_kwlookup.c | 91 + parser/src_common_psprintf.c | 78 +- parser/src_common_string.c | 86 + ...b_stringinfo.c => src_common_stringinfo.c} | 65 +- ...nd_utils_mb_wchar.c => src_common_wchar.c} | 321 +- parser/src_pl_plpgsql_src_pl_comp.c | 281 +- parser/src_pl_plpgsql_src_pl_funcs.c | 70 +- parser/src_pl_plpgsql_src_pl_gram.c | 4823 +- parser/src_pl_plpgsql_src_pl_handler.c | 6 +- .../src_pl_plpgsql_src_pl_reserved_kwlist_d.h | 123 + parser/src_pl_plpgsql_src_pl_scanner.c | 237 +- ...rc_pl_plpgsql_src_pl_unreserved_kwlist_d.h | 255 + parser/src_port_erand48.c | 61 +- parser/src_port_pg_bitutils.c | 246 + parser/src_port_pgsleep.c | 2 +- parser/src_port_pgstrcasecmp.c | 83 + parser/src_port_qsort.c | 2 +- parser/src_port_random.c | 4 +- parser/src_port_snprintf.c | 1449 + parser/src_port_strerror.c | 324 + parser/src_port_strnlen.c | 39 + parser/xxhash.c | 43 + parsetree_list.go | 48 - pg_query.go | 20 +- pg_query.pb.go | 36075 +++++ testdata/fingerprint.json | 380 +- util/testing.go | 6 +- 1205 files changed, 321253 insertions(+), 98946 deletions(-) delete mode 100644 nodes/a_array_expr.go delete mode 100644 nodes/a_array_expr_deparse.go delete mode 100644 nodes/a_array_expr_fingerprint.go delete mode 100644 nodes/a_const.go delete mode 100644 nodes/a_const_deparse.go delete mode 100644 nodes/a_const_fingerprint.go delete mode 100644 nodes/a_expr.go delete mode 100644 nodes/a_expr_deparse.go delete mode 100644 nodes/a_expr_fingerprint.go delete mode 100644 nodes/a_expr_kind.go delete mode 100644 nodes/a_indices.go delete mode 100644 nodes/a_indices_deparse.go delete mode 100644 nodes/a_indices_fingerprint.go delete mode 100644 nodes/a_indirection.go delete mode 100644 nodes/a_indirection_deparse.go delete mode 100644 nodes/a_indirection_fingerprint.go delete mode 100644 nodes/a_star.go delete mode 100644 nodes/a_star_deparse.go delete mode 100644 nodes/a_star_fingerprint.go delete mode 100644 nodes/access_priv.go delete mode 100644 nodes/access_priv_deparse.go delete mode 100644 nodes/access_priv_fingerprint.go delete mode 100644 nodes/agg_split.go delete mode 100644 nodes/agg_strategy.go delete mode 100644 nodes/aggref.go delete mode 100644 nodes/aggref_deparse.go delete mode 100644 nodes/aggref_fingerprint.go delete mode 100644 nodes/alias.go delete mode 100644 nodes/alias_deparse.go delete mode 100644 nodes/alias_fingerprint.go delete mode 100644 nodes/alter_collation_stmt.go delete mode 100644 nodes/alter_collation_stmt_deparse.go delete mode 100644 nodes/alter_collation_stmt_fingerprint.go delete mode 100644 nodes/alter_database_set_stmt.go delete mode 100644 nodes/alter_database_set_stmt_deparse.go delete mode 100644 nodes/alter_database_set_stmt_fingerprint.go delete mode 100644 nodes/alter_database_stmt.go delete mode 100644 nodes/alter_database_stmt_deparse.go delete mode 100644 nodes/alter_database_stmt_fingerprint.go delete mode 100644 nodes/alter_default_privileges_stmt.go delete mode 100644 nodes/alter_default_privileges_stmt_deparse.go delete mode 100644 nodes/alter_default_privileges_stmt_fingerprint.go delete mode 100644 nodes/alter_domain_stmt.go delete mode 100644 nodes/alter_domain_stmt_deparse.go delete mode 100644 nodes/alter_domain_stmt_fingerprint.go delete mode 100644 nodes/alter_enum_stmt.go delete mode 100644 nodes/alter_enum_stmt_deparse.go delete mode 100644 nodes/alter_enum_stmt_fingerprint.go delete mode 100644 nodes/alter_event_trig_stmt.go delete mode 100644 nodes/alter_event_trig_stmt_deparse.go delete mode 100644 nodes/alter_event_trig_stmt_fingerprint.go delete mode 100644 nodes/alter_extension_contents_stmt.go delete mode 100644 nodes/alter_extension_contents_stmt_deparse.go delete mode 100644 nodes/alter_extension_contents_stmt_fingerprint.go delete mode 100644 nodes/alter_extension_stmt.go delete mode 100644 nodes/alter_extension_stmt_deparse.go delete mode 100644 nodes/alter_extension_stmt_fingerprint.go delete mode 100644 nodes/alter_fdw_stmt.go delete mode 100644 nodes/alter_fdw_stmt_deparse.go delete mode 100644 nodes/alter_fdw_stmt_fingerprint.go delete mode 100644 nodes/alter_foreign_server_stmt.go delete mode 100644 nodes/alter_foreign_server_stmt_deparse.go delete mode 100644 nodes/alter_foreign_server_stmt_fingerprint.go delete mode 100644 nodes/alter_function_stmt.go delete mode 100644 nodes/alter_function_stmt_deparse.go delete mode 100644 nodes/alter_function_stmt_fingerprint.go delete mode 100644 nodes/alter_object_depends_stmt.go delete mode 100644 nodes/alter_object_depends_stmt_deparse.go delete mode 100644 nodes/alter_object_depends_stmt_fingerprint.go delete mode 100644 nodes/alter_object_schema_stmt.go delete mode 100644 nodes/alter_object_schema_stmt_deparse.go delete mode 100644 nodes/alter_object_schema_stmt_fingerprint.go delete mode 100644 nodes/alter_op_family_stmt.go delete mode 100644 nodes/alter_op_family_stmt_deparse.go delete mode 100644 nodes/alter_op_family_stmt_fingerprint.go delete mode 100644 nodes/alter_operator_stmt.go delete mode 100644 nodes/alter_operator_stmt_deparse.go delete mode 100644 nodes/alter_operator_stmt_fingerprint.go delete mode 100644 nodes/alter_owner_stmt.go delete mode 100644 nodes/alter_owner_stmt_deparse.go delete mode 100644 nodes/alter_owner_stmt_fingerprint.go delete mode 100644 nodes/alter_policy_stmt.go delete mode 100644 nodes/alter_policy_stmt_deparse.go delete mode 100644 nodes/alter_policy_stmt_fingerprint.go delete mode 100644 nodes/alter_publication_stmt.go delete mode 100644 nodes/alter_publication_stmt_deparse.go delete mode 100644 nodes/alter_publication_stmt_fingerprint.go delete mode 100644 nodes/alter_role_set_stmt.go delete mode 100644 nodes/alter_role_set_stmt_deparse.go delete mode 100644 nodes/alter_role_set_stmt_fingerprint.go delete mode 100644 nodes/alter_role_stmt.go delete mode 100644 nodes/alter_role_stmt_deparse.go delete mode 100644 nodes/alter_role_stmt_fingerprint.go delete mode 100644 nodes/alter_seq_stmt.go delete mode 100644 nodes/alter_seq_stmt_deparse.go delete mode 100644 nodes/alter_seq_stmt_fingerprint.go delete mode 100644 nodes/alter_subscription_stmt.go delete mode 100644 nodes/alter_subscription_stmt_deparse.go delete mode 100644 nodes/alter_subscription_stmt_fingerprint.go delete mode 100644 nodes/alter_subscription_type.go delete mode 100644 nodes/alter_system_stmt.go delete mode 100644 nodes/alter_system_stmt_deparse.go delete mode 100644 nodes/alter_system_stmt_fingerprint.go delete mode 100644 nodes/alter_table_cmd.go delete mode 100644 nodes/alter_table_cmd_deparse.go delete mode 100644 nodes/alter_table_cmd_fingerprint.go delete mode 100644 nodes/alter_table_move_all_stmt.go delete mode 100644 nodes/alter_table_move_all_stmt_deparse.go delete mode 100644 nodes/alter_table_move_all_stmt_fingerprint.go delete mode 100644 nodes/alter_table_space_options_stmt.go delete mode 100644 nodes/alter_table_space_options_stmt_deparse.go delete mode 100644 nodes/alter_table_space_options_stmt_fingerprint.go delete mode 100644 nodes/alter_table_stmt.go delete mode 100644 nodes/alter_table_stmt_deparse.go delete mode 100644 nodes/alter_table_stmt_fingerprint.go delete mode 100644 nodes/alter_table_type.go delete mode 100644 nodes/alter_ts_config_type.go delete mode 100644 nodes/alter_ts_configuration_stmt.go delete mode 100644 nodes/alter_ts_configuration_stmt_deparse.go delete mode 100644 nodes/alter_ts_configuration_stmt_fingerprint.go delete mode 100644 nodes/alter_ts_dictionary_stmt.go delete mode 100644 nodes/alter_ts_dictionary_stmt_deparse.go delete mode 100644 nodes/alter_ts_dictionary_stmt_fingerprint.go delete mode 100644 nodes/alter_user_mapping_stmt.go delete mode 100644 nodes/alter_user_mapping_stmt_deparse.go delete mode 100644 nodes/alter_user_mapping_stmt_fingerprint.go delete mode 100644 nodes/alternative_sub_plan.go delete mode 100644 nodes/alternative_sub_plan_deparse.go delete mode 100644 nodes/alternative_sub_plan_fingerprint.go delete mode 100644 nodes/array_coerce_expr.go delete mode 100644 nodes/array_coerce_expr_deparse.go delete mode 100644 nodes/array_coerce_expr_fingerprint.go delete mode 100644 nodes/array_expr.go delete mode 100644 nodes/array_expr_deparse.go delete mode 100644 nodes/array_expr_fingerprint.go delete mode 100644 nodes/array_ref.go delete mode 100644 nodes/array_ref_deparse.go delete mode 100644 nodes/array_ref_fingerprint.go delete mode 100644 nodes/bit_string.go delete mode 100644 nodes/bit_string_deparse.go delete mode 100644 nodes/bit_string_fingerprint.go delete mode 100644 nodes/block_id_data.go delete mode 100644 nodes/block_id_data_deparse.go delete mode 100644 nodes/block_id_data_fingerprint.go delete mode 100644 nodes/bool_expr.go delete mode 100644 nodes/bool_expr_deparse.go delete mode 100644 nodes/bool_expr_fingerprint.go delete mode 100644 nodes/bool_expr_type.go delete mode 100644 nodes/bool_test_type.go delete mode 100644 nodes/boolean_test_deparse.go delete mode 100644 nodes/boolean_test_expr.go delete mode 100644 nodes/boolean_test_fingerprint.go delete mode 100644 nodes/case_expr.go delete mode 100644 nodes/case_expr_deparse.go delete mode 100644 nodes/case_expr_fingerprint.go delete mode 100644 nodes/case_test_expr.go delete mode 100644 nodes/case_test_expr_deparse.go delete mode 100644 nodes/case_test_expr_fingerprint.go delete mode 100644 nodes/case_when.go delete mode 100644 nodes/case_when_deparse.go delete mode 100644 nodes/case_when_fingerprint.go delete mode 100644 nodes/check_point_stmt.go delete mode 100644 nodes/check_point_stmt_deparse.go delete mode 100644 nodes/check_point_stmt_fingerprint.go delete mode 100644 nodes/close_portal_stmt.go delete mode 100644 nodes/close_portal_stmt_deparse.go delete mode 100644 nodes/close_portal_stmt_fingerprint.go delete mode 100644 nodes/cluster_stmt.go delete mode 100644 nodes/cluster_stmt_deparse.go delete mode 100644 nodes/cluster_stmt_fingerprint.go delete mode 100644 nodes/cmd_type.go delete mode 100644 nodes/coalesce_expr.go delete mode 100644 nodes/coalesce_expr_deparse.go delete mode 100644 nodes/coalesce_expr_fingerprint.go delete mode 100644 nodes/coerce_to_domain.go delete mode 100644 nodes/coerce_to_domain_deparse.go delete mode 100644 nodes/coerce_to_domain_fingerprint.go delete mode 100644 nodes/coerce_to_domain_value.go delete mode 100644 nodes/coerce_to_domain_value_deparse.go delete mode 100644 nodes/coerce_to_domain_value_fingerprint.go delete mode 100644 nodes/coerce_via_io.go delete mode 100644 nodes/coerce_via_io_deparse.go delete mode 100644 nodes/coerce_via_io_fingerprint.go delete mode 100644 nodes/coercion_context.go delete mode 100644 nodes/coercion_form.go delete mode 100644 nodes/collate_clause.go delete mode 100644 nodes/collate_clause_deparse.go delete mode 100644 nodes/collate_clause_fingerprint.go delete mode 100644 nodes/collate_expr.go delete mode 100644 nodes/collate_expr_deparse.go delete mode 100644 nodes/collate_expr_fingerprint.go delete mode 100644 nodes/column_def.go delete mode 100644 nodes/column_def_deparse.go delete mode 100644 nodes/column_def_fingerprint.go delete mode 100644 nodes/column_ref.go delete mode 100644 nodes/column_ref_deparse.go delete mode 100644 nodes/column_ref_fingerprint.go delete mode 100644 nodes/comment_stmt.go delete mode 100644 nodes/comment_stmt_deparse.go delete mode 100644 nodes/comment_stmt_fingerprint.go delete mode 100644 nodes/common_table_expr.go delete mode 100644 nodes/common_table_expr_deparse.go delete mode 100644 nodes/common_table_expr_fingerprint.go delete mode 100644 nodes/composite_type_stmt.go delete mode 100644 nodes/composite_type_stmt_deparse.go delete mode 100644 nodes/composite_type_stmt_fingerprint.go delete mode 100644 nodes/const.go delete mode 100644 nodes/const_deparse.go delete mode 100644 nodes/const_fingerprint.go delete mode 100644 nodes/constr_type.go delete mode 100644 nodes/constraint.go delete mode 100644 nodes/constraint_deparse.go delete mode 100644 nodes/constraint_fingerprint.go delete mode 100644 nodes/constraints_set_stmt.go delete mode 100644 nodes/constraints_set_stmt_deparse.go delete mode 100644 nodes/constraints_set_stmt_fingerprint.go delete mode 100644 nodes/convert_rowtype_expr.go delete mode 100644 nodes/convert_rowtype_expr_deparse.go delete mode 100644 nodes/convert_rowtype_expr_fingerprint.go delete mode 100644 nodes/copy_stmt.go delete mode 100644 nodes/copy_stmt_deparse.go delete mode 100644 nodes/copy_stmt_fingerprint.go delete mode 100644 nodes/create_am_stmt.go delete mode 100644 nodes/create_am_stmt_deparse.go delete mode 100644 nodes/create_am_stmt_fingerprint.go delete mode 100644 nodes/create_cast_stmt.go delete mode 100644 nodes/create_cast_stmt_deparse.go delete mode 100644 nodes/create_cast_stmt_fingerprint.go delete mode 100644 nodes/create_conversion_stmt.go delete mode 100644 nodes/create_conversion_stmt_deparse.go delete mode 100644 nodes/create_conversion_stmt_fingerprint.go delete mode 100644 nodes/create_domain_stmt.go delete mode 100644 nodes/create_domain_stmt_deparse.go delete mode 100644 nodes/create_domain_stmt_fingerprint.go delete mode 100644 nodes/create_enum_stmt.go delete mode 100644 nodes/create_enum_stmt_deparse.go delete mode 100644 nodes/create_enum_stmt_fingerprint.go delete mode 100644 nodes/create_event_trig_stmt.go delete mode 100644 nodes/create_event_trig_stmt_deparse.go delete mode 100644 nodes/create_event_trig_stmt_fingerprint.go delete mode 100644 nodes/create_extension_stmt.go delete mode 100644 nodes/create_extension_stmt_deparse.go delete mode 100644 nodes/create_extension_stmt_fingerprint.go delete mode 100644 nodes/create_fdw_stmt.go delete mode 100644 nodes/create_fdw_stmt_deparse.go delete mode 100644 nodes/create_fdw_stmt_fingerprint.go delete mode 100644 nodes/create_foreign_server_stmt.go delete mode 100644 nodes/create_foreign_server_stmt_deparse.go delete mode 100644 nodes/create_foreign_server_stmt_fingerprint.go delete mode 100644 nodes/create_foreign_table_stmt.go delete mode 100644 nodes/create_foreign_table_stmt_deparse.go delete mode 100644 nodes/create_foreign_table_stmt_fingerprint.go delete mode 100644 nodes/create_function_stmt.go delete mode 100644 nodes/create_function_stmt_deparse.go delete mode 100644 nodes/create_function_stmt_fingerprint.go delete mode 100644 nodes/create_op_class_item.go delete mode 100644 nodes/create_op_class_item_deparse.go delete mode 100644 nodes/create_op_class_item_fingerprint.go delete mode 100644 nodes/create_op_class_stmt.go delete mode 100644 nodes/create_op_class_stmt_deparse.go delete mode 100644 nodes/create_op_class_stmt_fingerprint.go delete mode 100644 nodes/create_op_family_stmt.go delete mode 100644 nodes/create_op_family_stmt_deparse.go delete mode 100644 nodes/create_op_family_stmt_fingerprint.go delete mode 100644 nodes/create_p_lang_stmt.go delete mode 100644 nodes/create_p_lang_stmt_deparse.go delete mode 100644 nodes/create_p_lang_stmt_fingerprint.go delete mode 100644 nodes/create_policy_stmt.go delete mode 100644 nodes/create_policy_stmt_deparse.go delete mode 100644 nodes/create_policy_stmt_fingerprint.go delete mode 100644 nodes/create_publication_stmt.go delete mode 100644 nodes/create_publication_stmt_deparse.go delete mode 100644 nodes/create_publication_stmt_fingerprint.go delete mode 100644 nodes/create_range_stmt.go delete mode 100644 nodes/create_range_stmt_deparse.go delete mode 100644 nodes/create_range_stmt_fingerprint.go delete mode 100644 nodes/create_role_stmt.go delete mode 100644 nodes/create_role_stmt_deparse.go delete mode 100644 nodes/create_role_stmt_fingerprint.go delete mode 100644 nodes/create_schema_stmt.go delete mode 100644 nodes/create_schema_stmt_deparse.go delete mode 100644 nodes/create_schema_stmt_fingerprint.go delete mode 100644 nodes/create_seq_stmt.go delete mode 100644 nodes/create_seq_stmt_deparse.go delete mode 100644 nodes/create_seq_stmt_fingerprint.go delete mode 100644 nodes/create_stats_stmt.go delete mode 100644 nodes/create_stats_stmt_deparse.go delete mode 100644 nodes/create_stats_stmt_fingerprint.go delete mode 100644 nodes/create_stmt.go delete mode 100644 nodes/create_stmt_deparse.go delete mode 100644 nodes/create_stmt_fingerprint.go delete mode 100644 nodes/create_subscription_stmt.go delete mode 100644 nodes/create_subscription_stmt_deparse.go delete mode 100644 nodes/create_subscription_stmt_fingerprint.go delete mode 100644 nodes/create_table_as_stmt.go delete mode 100644 nodes/create_table_as_stmt_deparse.go delete mode 100644 nodes/create_table_as_stmt_fingerprint.go delete mode 100644 nodes/create_table_space_stmt.go delete mode 100644 nodes/create_table_space_stmt_deparse.go delete mode 100644 nodes/create_table_space_stmt_fingerprint.go delete mode 100644 nodes/create_transform_stmt.go delete mode 100644 nodes/create_transform_stmt_deparse.go delete mode 100644 nodes/create_transform_stmt_fingerprint.go delete mode 100644 nodes/create_trig_stmt.go delete mode 100644 nodes/create_trig_stmt_deparse.go delete mode 100644 nodes/create_trig_stmt_fingerprint.go delete mode 100644 nodes/create_user_mapping_stmt.go delete mode 100644 nodes/create_user_mapping_stmt_deparse.go delete mode 100644 nodes/create_user_mapping_stmt_fingerprint.go delete mode 100644 nodes/createdb_stmt.go delete mode 100644 nodes/createdb_stmt_deparse.go delete mode 100644 nodes/createdb_stmt_fingerprint.go delete mode 100644 nodes/current_of_expr.go delete mode 100644 nodes/current_of_expr_deparse.go delete mode 100644 nodes/current_of_expr_fingerprint.go delete mode 100644 nodes/deallocate_stmt.go delete mode 100644 nodes/deallocate_stmt_deparse.go delete mode 100644 nodes/deallocate_stmt_fingerprint.go delete mode 100644 nodes/declare_cursor_stmt.go delete mode 100644 nodes/declare_cursor_stmt_deparse.go delete mode 100644 nodes/declare_cursor_stmt_fingerprint.go delete mode 100644 nodes/def_elem.go delete mode 100644 nodes/def_elem_action.go delete mode 100644 nodes/def_elem_deparse.go delete mode 100644 nodes/def_elem_fingerprint.go delete mode 100644 nodes/define_stmt.go delete mode 100644 nodes/define_stmt_deparse.go delete mode 100644 nodes/define_stmt_fingerprint.go delete mode 100644 nodes/delete_stmt.go delete mode 100644 nodes/delete_stmt_deparse.go delete mode 100644 nodes/delete_stmt_fingerprint.go delete mode 100644 nodes/discard_mode.go delete mode 100644 nodes/discard_stmt.go delete mode 100644 nodes/discard_stmt_deparse.go delete mode 100644 nodes/discard_stmt_fingerprint.go delete mode 100644 nodes/do_stmt.go delete mode 100644 nodes/do_stmt_deparse.go delete mode 100644 nodes/do_stmt_fingerprint.go delete mode 100644 nodes/drop_behavior.go delete mode 100644 nodes/drop_owned_stmt.go delete mode 100644 nodes/drop_owned_stmt_deparse.go delete mode 100644 nodes/drop_owned_stmt_fingerprint.go delete mode 100644 nodes/drop_role_stmt.go delete mode 100644 nodes/drop_role_stmt_deparse.go delete mode 100644 nodes/drop_role_stmt_fingerprint.go delete mode 100644 nodes/drop_stmt.go delete mode 100644 nodes/drop_stmt_deparse.go delete mode 100644 nodes/drop_stmt_fingerprint.go delete mode 100644 nodes/drop_subscription_stmt.go delete mode 100644 nodes/drop_subscription_stmt_deparse.go delete mode 100644 nodes/drop_subscription_stmt_fingerprint.go delete mode 100644 nodes/drop_table_space_stmt.go delete mode 100644 nodes/drop_table_space_stmt_deparse.go delete mode 100644 nodes/drop_table_space_stmt_fingerprint.go delete mode 100644 nodes/drop_user_mapping_stmt.go delete mode 100644 nodes/drop_user_mapping_stmt_deparse.go delete mode 100644 nodes/drop_user_mapping_stmt_fingerprint.go delete mode 100644 nodes/dropdb_stmt.go delete mode 100644 nodes/dropdb_stmt_deparse.go delete mode 100644 nodes/dropdb_stmt_fingerprint.go delete mode 100644 nodes/execute_stmt.go delete mode 100644 nodes/execute_stmt_deparse.go delete mode 100644 nodes/execute_stmt_fingerprint.go delete mode 100644 nodes/explain_stmt.go delete mode 100644 nodes/explain_stmt_deparse.go delete mode 100644 nodes/explain_stmt_fingerprint.go delete mode 100644 nodes/expr.go delete mode 100644 nodes/expr_deparse.go delete mode 100644 nodes/expr_fingerprint.go delete mode 100644 nodes/fetch_direction.go delete mode 100644 nodes/fetch_stmt.go delete mode 100644 nodes/fetch_stmt_deparse.go delete mode 100644 nodes/fetch_stmt_fingerprint.go delete mode 100644 nodes/field_select.go delete mode 100644 nodes/field_select_deparse.go delete mode 100644 nodes/field_select_fingerprint.go delete mode 100644 nodes/field_store.go delete mode 100644 nodes/field_store_deparse.go delete mode 100644 nodes/field_store_fingerprint.go delete mode 100644 nodes/float.go delete mode 100644 nodes/float_deparse.go delete mode 100644 nodes/float_fingerprint.go delete mode 100644 nodes/from_expr.go delete mode 100644 nodes/from_expr_deparse.go delete mode 100644 nodes/from_expr_fingerprint.go delete mode 100644 nodes/func_call.go delete mode 100644 nodes/func_call_deparse.go delete mode 100644 nodes/func_call_fingerprint.go delete mode 100644 nodes/func_expr.go delete mode 100644 nodes/func_expr_deparse.go delete mode 100644 nodes/func_expr_fingerprint.go delete mode 100644 nodes/function_parameter.go delete mode 100644 nodes/function_parameter_deparse.go delete mode 100644 nodes/function_parameter_fingerprint.go delete mode 100644 nodes/function_parameter_mode.go delete mode 100644 nodes/grant_object_type.go delete mode 100644 nodes/grant_role_stmt.go delete mode 100644 nodes/grant_role_stmt_deparse.go delete mode 100644 nodes/grant_role_stmt_fingerprint.go delete mode 100644 nodes/grant_stmt.go delete mode 100644 nodes/grant_stmt_deparse.go delete mode 100644 nodes/grant_stmt_fingerprint.go delete mode 100644 nodes/grant_target_type.go delete mode 100644 nodes/grouping_func.go delete mode 100644 nodes/grouping_func_deparse.go delete mode 100644 nodes/grouping_func_fingerprint.go delete mode 100644 nodes/grouping_set.go delete mode 100644 nodes/grouping_set_deparse.go delete mode 100644 nodes/grouping_set_fingerprint.go delete mode 100644 nodes/grouping_set_kind.go delete mode 100644 nodes/import_foreign_schema_stmt.go delete mode 100644 nodes/import_foreign_schema_stmt_deparse.go delete mode 100644 nodes/import_foreign_schema_stmt_fingerprint.go delete mode 100644 nodes/import_foreign_schema_type.go delete mode 100644 nodes/index_elem.go delete mode 100644 nodes/index_elem_deparse.go delete mode 100644 nodes/index_elem_fingerprint.go delete mode 100644 nodes/index_stmt.go delete mode 100644 nodes/index_stmt_deparse.go delete mode 100644 nodes/index_stmt_fingerprint.go delete mode 100644 nodes/infer_clause.go delete mode 100644 nodes/infer_clause_deparse.go delete mode 100644 nodes/infer_clause_fingerprint.go delete mode 100644 nodes/inference_elem.go delete mode 100644 nodes/inference_elem_deparse.go delete mode 100644 nodes/inference_elem_fingerprint.go delete mode 100644 nodes/inline_code_block.go delete mode 100644 nodes/inline_code_block_deparse.go delete mode 100644 nodes/inline_code_block_fingerprint.go delete mode 100644 nodes/insert_stmt.go delete mode 100644 nodes/insert_stmt_deparse.go delete mode 100644 nodes/insert_stmt_fingerprint.go delete mode 100644 nodes/integer.go delete mode 100644 nodes/integer_deparse.go delete mode 100644 nodes/integer_fingerprint.go delete mode 100644 nodes/into_clause.go delete mode 100644 nodes/into_clause_deparse.go delete mode 100644 nodes/into_clause_fingerprint.go delete mode 100644 nodes/join_expr.go delete mode 100644 nodes/join_expr_deparse.go delete mode 100644 nodes/join_expr_fingerprint.go delete mode 100644 nodes/join_type.go delete mode 100644 nodes/list.go delete mode 100644 nodes/list_deparse.go delete mode 100644 nodes/list_fingerprint.go delete mode 100644 nodes/listen_stmt.go delete mode 100644 nodes/listen_stmt_deparse.go delete mode 100644 nodes/listen_stmt_fingerprint.go delete mode 100644 nodes/load_stmt.go delete mode 100644 nodes/load_stmt_deparse.go delete mode 100644 nodes/load_stmt_fingerprint.go delete mode 100644 nodes/lock_clause_strength.go delete mode 100644 nodes/lock_stmt.go delete mode 100644 nodes/lock_stmt_deparse.go delete mode 100644 nodes/lock_stmt_fingerprint.go delete mode 100644 nodes/lock_wait_policy.go delete mode 100644 nodes/locking_clause.go delete mode 100644 nodes/locking_clause_deparse.go delete mode 100644 nodes/locking_clause_fingerprint.go delete mode 100644 nodes/min_max_expr.go delete mode 100644 nodes/min_max_expr_deparse.go delete mode 100644 nodes/min_max_expr_fingerprint.go delete mode 100644 nodes/min_max_op.go delete mode 100644 nodes/multi_assign_ref.go delete mode 100644 nodes/multi_assign_ref_deparse.go delete mode 100644 nodes/multi_assign_ref_fingerprint.go delete mode 100644 nodes/named_arg_expr.go delete mode 100644 nodes/named_arg_expr_deparse.go delete mode 100644 nodes/named_arg_expr_fingerprint.go delete mode 100644 nodes/next_value_expr.go delete mode 100644 nodes/next_value_expr_deparse.go delete mode 100644 nodes/next_value_expr_fingerprint.go delete mode 100644 nodes/node.go delete mode 100644 nodes/node_unmarshal.go delete mode 100644 nodes/node_unmarshal_helper.go delete mode 100644 nodes/notify_stmt.go delete mode 100644 nodes/notify_stmt_deparse.go delete mode 100644 nodes/notify_stmt_fingerprint.go delete mode 100644 nodes/null.go delete mode 100644 nodes/null_deparse.go delete mode 100644 nodes/null_fingerprint.go delete mode 100644 nodes/null_test_deparse.go delete mode 100644 nodes/null_test_expr.go delete mode 100644 nodes/null_test_fingerprint.go delete mode 100644 nodes/null_test_type.go delete mode 100644 nodes/object_type.go delete mode 100644 nodes/object_with_args.go delete mode 100644 nodes/object_with_args_deparse.go delete mode 100644 nodes/object_with_args_fingerprint.go delete mode 100644 nodes/on_commit_action.go delete mode 100644 nodes/on_conflict_action.go delete mode 100644 nodes/on_conflict_clause.go delete mode 100644 nodes/on_conflict_clause_deparse.go delete mode 100644 nodes/on_conflict_clause_fingerprint.go delete mode 100644 nodes/on_conflict_expr.go delete mode 100644 nodes/on_conflict_expr_deparse.go delete mode 100644 nodes/on_conflict_expr_fingerprint.go delete mode 100644 nodes/op_expr.go delete mode 100644 nodes/op_expr_deparse.go delete mode 100644 nodes/op_expr_fingerprint.go delete mode 100644 nodes/overriding_kind.go delete mode 100644 nodes/param.go delete mode 100644 nodes/param_deparse.go delete mode 100644 nodes/param_exec_data.go delete mode 100644 nodes/param_exec_data_deparse.go delete mode 100644 nodes/param_exec_data_fingerprint.go delete mode 100644 nodes/param_extern_data.go delete mode 100644 nodes/param_extern_data_deparse.go delete mode 100644 nodes/param_extern_data_fingerprint.go delete mode 100644 nodes/param_fingerprint.go delete mode 100644 nodes/param_kind.go delete mode 100644 nodes/param_list_info_data.go delete mode 100644 nodes/param_list_info_data_deparse.go delete mode 100644 nodes/param_list_info_data_fingerprint.go delete mode 100644 nodes/param_ref.go delete mode 100644 nodes/param_ref_deparse.go delete mode 100644 nodes/param_ref_fingerprint.go delete mode 100644 nodes/partition_bound_spec.go delete mode 100644 nodes/partition_bound_spec_deparse.go delete mode 100644 nodes/partition_bound_spec_fingerprint.go delete mode 100644 nodes/partition_cmd.go delete mode 100644 nodes/partition_cmd_deparse.go delete mode 100644 nodes/partition_cmd_fingerprint.go delete mode 100644 nodes/partition_elem.go delete mode 100644 nodes/partition_elem_deparse.go delete mode 100644 nodes/partition_elem_fingerprint.go delete mode 100644 nodes/partition_range_datum.go delete mode 100644 nodes/partition_range_datum_deparse.go delete mode 100644 nodes/partition_range_datum_fingerprint.go delete mode 100644 nodes/partition_range_datum_kind.go delete mode 100644 nodes/partition_spec.go delete mode 100644 nodes/partition_spec_deparse.go delete mode 100644 nodes/partition_spec_fingerprint.go delete mode 100644 nodes/prepare_stmt.go delete mode 100644 nodes/prepare_stmt_deparse.go delete mode 100644 nodes/prepare_stmt_fingerprint.go delete mode 100644 nodes/query.go delete mode 100644 nodes/query_deparse.go delete mode 100644 nodes/query_fingerprint.go delete mode 100644 nodes/query_source.go delete mode 100644 nodes/range_function.go delete mode 100644 nodes/range_function_deparse.go delete mode 100644 nodes/range_function_fingerprint.go delete mode 100644 nodes/range_subselect.go delete mode 100644 nodes/range_subselect_deparse.go delete mode 100644 nodes/range_subselect_fingerprint.go delete mode 100644 nodes/range_table_func.go delete mode 100644 nodes/range_table_func_col.go delete mode 100644 nodes/range_table_func_col_deparse.go delete mode 100644 nodes/range_table_func_col_fingerprint.go delete mode 100644 nodes/range_table_func_deparse.go delete mode 100644 nodes/range_table_func_fingerprint.go delete mode 100644 nodes/range_table_sample.go delete mode 100644 nodes/range_table_sample_deparse.go delete mode 100644 nodes/range_table_sample_fingerprint.go delete mode 100644 nodes/range_tbl_entry.go delete mode 100644 nodes/range_tbl_entry_deparse.go delete mode 100644 nodes/range_tbl_entry_fingerprint.go delete mode 100644 nodes/range_tbl_function.go delete mode 100644 nodes/range_tbl_function_deparse.go delete mode 100644 nodes/range_tbl_function_fingerprint.go delete mode 100644 nodes/range_tbl_ref.go delete mode 100644 nodes/range_tbl_ref_deparse.go delete mode 100644 nodes/range_tbl_ref_fingerprint.go delete mode 100644 nodes/range_var.go delete mode 100644 nodes/range_var_deparse.go delete mode 100644 nodes/range_var_fingerprint.go delete mode 100644 nodes/raw_stmt.go delete mode 100644 nodes/raw_stmt_deparse.go delete mode 100644 nodes/raw_stmt_fingerprint.go delete mode 100644 nodes/reassign_owned_stmt.go delete mode 100644 nodes/reassign_owned_stmt_deparse.go delete mode 100644 nodes/reassign_owned_stmt_fingerprint.go delete mode 100644 nodes/refresh_mat_view_stmt.go delete mode 100644 nodes/refresh_mat_view_stmt_deparse.go delete mode 100644 nodes/refresh_mat_view_stmt_fingerprint.go delete mode 100644 nodes/reindex_object_type.go delete mode 100644 nodes/reindex_stmt.go delete mode 100644 nodes/reindex_stmt_deparse.go delete mode 100644 nodes/reindex_stmt_fingerprint.go delete mode 100644 nodes/relabel_type.go delete mode 100644 nodes/relabel_type_deparse.go delete mode 100644 nodes/relabel_type_fingerprint.go delete mode 100644 nodes/rename_stmt.go delete mode 100644 nodes/rename_stmt_deparse.go delete mode 100644 nodes/rename_stmt_fingerprint.go delete mode 100644 nodes/replica_identity_stmt.go delete mode 100644 nodes/replica_identity_stmt_deparse.go delete mode 100644 nodes/replica_identity_stmt_fingerprint.go delete mode 100644 nodes/res_target.go delete mode 100644 nodes/res_target_deparse.go delete mode 100644 nodes/res_target_fingerprint.go delete mode 100644 nodes/role_spec.go delete mode 100644 nodes/role_spec_deparse.go delete mode 100644 nodes/role_spec_fingerprint.go delete mode 100644 nodes/role_spec_type.go delete mode 100644 nodes/role_stmt_type.go delete mode 100644 nodes/row_compare_expr.go delete mode 100644 nodes/row_compare_expr_deparse.go delete mode 100644 nodes/row_compare_expr_fingerprint.go delete mode 100644 nodes/row_compare_type.go delete mode 100644 nodes/row_expr.go delete mode 100644 nodes/row_expr_deparse.go delete mode 100644 nodes/row_expr_fingerprint.go delete mode 100644 nodes/row_mark_clause.go delete mode 100644 nodes/row_mark_clause_deparse.go delete mode 100644 nodes/row_mark_clause_fingerprint.go delete mode 100644 nodes/rte_kind.go delete mode 100644 nodes/rule_stmt.go delete mode 100644 nodes/rule_stmt_deparse.go delete mode 100644 nodes/rule_stmt_fingerprint.go delete mode 100644 nodes/scalar_array_op_expr.go delete mode 100644 nodes/scalar_array_op_expr_deparse.go delete mode 100644 nodes/scalar_array_op_expr_fingerprint.go delete mode 100644 nodes/scan_direction.go delete mode 100644 nodes/sec_label_stmt.go delete mode 100644 nodes/sec_label_stmt_deparse.go delete mode 100644 nodes/sec_label_stmt_fingerprint.go delete mode 100644 nodes/select_stmt.go delete mode 100644 nodes/select_stmt_deparse.go delete mode 100644 nodes/select_stmt_fingerprint.go delete mode 100644 nodes/set_op_cmd.go delete mode 100644 nodes/set_op_strategy.go delete mode 100644 nodes/set_operation.go delete mode 100644 nodes/set_operation_stmt.go delete mode 100644 nodes/set_operation_stmt_deparse.go delete mode 100644 nodes/set_operation_stmt_fingerprint.go delete mode 100644 nodes/set_to_default.go delete mode 100644 nodes/set_to_default_deparse.go delete mode 100644 nodes/set_to_default_fingerprint.go delete mode 100644 nodes/sort_by.go delete mode 100644 nodes/sort_by_deparse.go delete mode 100644 nodes/sort_by_dir.go delete mode 100644 nodes/sort_by_fingerprint.go delete mode 100644 nodes/sort_by_nulls.go delete mode 100644 nodes/sort_group_clause.go delete mode 100644 nodes/sort_group_clause_deparse.go delete mode 100644 nodes/sort_group_clause_fingerprint.go delete mode 100644 nodes/sql_value_function.go delete mode 100644 nodes/sql_value_function_deparse.go delete mode 100644 nodes/sql_value_function_fingerprint.go delete mode 100644 nodes/sql_value_function_op.go delete mode 100644 nodes/string.go delete mode 100644 nodes/string_deparse.go delete mode 100644 nodes/string_fingerprint.go delete mode 100644 nodes/sub_link.go delete mode 100644 nodes/sub_link_deparse.go delete mode 100644 nodes/sub_link_fingerprint.go delete mode 100644 nodes/sub_link_type.go delete mode 100644 nodes/sub_plan.go delete mode 100644 nodes/sub_plan_deparse.go delete mode 100644 nodes/sub_plan_fingerprint.go delete mode 100644 nodes/table_func.go delete mode 100644 nodes/table_func_deparse.go delete mode 100644 nodes/table_func_fingerprint.go delete mode 100644 nodes/table_like_clause.go delete mode 100644 nodes/table_like_clause_deparse.go delete mode 100644 nodes/table_like_clause_fingerprint.go delete mode 100644 nodes/table_like_option.go delete mode 100644 nodes/table_sample_clause.go delete mode 100644 nodes/table_sample_clause_deparse.go delete mode 100644 nodes/table_sample_clause_fingerprint.go delete mode 100644 nodes/target_entry.go delete mode 100644 nodes/target_entry_deparse.go delete mode 100644 nodes/target_entry_fingerprint.go delete mode 100644 nodes/transaction_stmt.go delete mode 100644 nodes/transaction_stmt_deparse.go delete mode 100644 nodes/transaction_stmt_fingerprint.go delete mode 100644 nodes/transaction_stmt_kind.go delete mode 100644 nodes/trigger_transition.go delete mode 100644 nodes/trigger_transition_deparse.go delete mode 100644 nodes/trigger_transition_fingerprint.go delete mode 100644 nodes/truncate_stmt.go delete mode 100644 nodes/truncate_stmt_deparse.go delete mode 100644 nodes/truncate_stmt_fingerprint.go delete mode 100644 nodes/type_cast.go delete mode 100644 nodes/type_cast_deparse.go delete mode 100644 nodes/type_cast_fingerprint.go delete mode 100644 nodes/type_name.go delete mode 100644 nodes/type_name_deparse.go delete mode 100644 nodes/type_name_fingerprint.go delete mode 100644 nodes/typedefs.go delete mode 100644 nodes/unlisten_stmt.go delete mode 100644 nodes/unlisten_stmt_deparse.go delete mode 100644 nodes/unlisten_stmt_fingerprint.go delete mode 100644 nodes/update_stmt.go delete mode 100644 nodes/update_stmt_deparse.go delete mode 100644 nodes/update_stmt_fingerprint.go delete mode 100644 nodes/vacuum_option.go delete mode 100644 nodes/vacuum_stmt.go delete mode 100644 nodes/vacuum_stmt_deparse.go delete mode 100644 nodes/vacuum_stmt_fingerprint.go delete mode 100644 nodes/var.go delete mode 100644 nodes/var_deparse.go delete mode 100644 nodes/var_fingerprint.go delete mode 100644 nodes/varatt_external.go delete mode 100644 nodes/varatt_external_deparse.go delete mode 100644 nodes/varatt_external_fingerprint.go delete mode 100644 nodes/variable_set_kind.go delete mode 100644 nodes/variable_set_stmt.go delete mode 100644 nodes/variable_set_stmt_deparse.go delete mode 100644 nodes/variable_set_stmt_fingerprint.go delete mode 100644 nodes/variable_show_stmt.go delete mode 100644 nodes/variable_show_stmt_deparse.go delete mode 100644 nodes/variable_show_stmt_fingerprint.go delete mode 100644 nodes/vartag_external.go delete mode 100644 nodes/view_check_option.go delete mode 100644 nodes/view_stmt.go delete mode 100644 nodes/view_stmt_deparse.go delete mode 100644 nodes/view_stmt_fingerprint.go delete mode 100644 nodes/wco_kind.go delete mode 100644 nodes/window_clause.go delete mode 100644 nodes/window_clause_deparse.go delete mode 100644 nodes/window_clause_fingerprint.go delete mode 100644 nodes/window_def.go delete mode 100644 nodes/window_def_deparse.go delete mode 100644 nodes/window_def_fingerprint.go delete mode 100644 nodes/window_func.go delete mode 100644 nodes/window_func_deparse.go delete mode 100644 nodes/window_func_fingerprint.go delete mode 100644 nodes/with_check_option.go delete mode 100644 nodes/with_check_option_deparse.go delete mode 100644 nodes/with_check_option_fingerprint.go delete mode 100644 nodes/with_clause.go delete mode 100644 nodes/with_clause_deparse.go delete mode 100644 nodes/with_clause_fingerprint.go delete mode 100644 nodes/xml_expr.go delete mode 100644 nodes/xml_expr_deparse.go delete mode 100644 nodes/xml_expr_fingerprint.go delete mode 100644 nodes/xml_expr_op.go delete mode 100644 nodes/xml_option_type.go delete mode 100644 nodes/xml_serialize.go delete mode 100644 nodes/xml_serialize_deparse.go delete mode 100644 nodes/xml_serialize_fingerprint.go delete mode 100644 parser/contrib_pgcrypto_sha1.c create mode 100644 parser/include/access/attmap.h create mode 100644 parser/include/access/clog.h create mode 100644 parser/include/access/detoast.h delete mode 100644 parser/include/access/hash.h delete mode 100644 parser/include/access/heapam.h create mode 100644 parser/include/access/relation.h create mode 100644 parser/include/access/relscan.h create mode 100644 parser/include/access/table.h create mode 100644 parser/include/access/tableam.h create mode 100644 parser/include/catalog/catalog.h create mode 100644 parser/include/catalog/catversion.h delete mode 100644 parser/include/catalog/partition.h create mode 100644 parser/include/catalog/pg_aggregate_d.h create mode 100644 parser/include/catalog/pg_am_d.h create mode 100644 parser/include/catalog/pg_attribute_d.h create mode 100644 parser/include/catalog/pg_authid_d.h create mode 100644 parser/include/catalog/pg_class_d.h create mode 100644 parser/include/catalog/pg_collation_d.h create mode 100644 parser/include/catalog/pg_constraint_d.h create mode 100644 parser/include/catalog/pg_conversion_d.h delete mode 100644 parser/include/catalog/pg_conversion_fn.h create mode 100644 parser/include/catalog/pg_depend_d.h create mode 100644 parser/include/catalog/pg_event_trigger_d.h create mode 100644 parser/include/catalog/pg_index_d.h create mode 100644 parser/include/catalog/pg_language_d.h create mode 100644 parser/include/catalog/pg_namespace_d.h create mode 100644 parser/include/catalog/pg_opclass_d.h create mode 100644 parser/include/catalog/pg_operator_d.h create mode 100644 parser/include/catalog/pg_opfamily_d.h create mode 100644 parser/include/catalog/pg_partitioned_table_d.h create mode 100644 parser/include/catalog/pg_proc_d.h delete mode 100644 parser/include/catalog/pg_proc_fn.h create mode 100644 parser/include/catalog/pg_publication_d.h create mode 100644 parser/include/catalog/pg_replication_origin_d.h create mode 100644 parser/include/catalog/pg_statistic_d.h create mode 100644 parser/include/catalog/pg_statistic_ext_d.h create mode 100644 parser/include/catalog/pg_transform_d.h create mode 100644 parser/include/catalog/pg_trigger_d.h create mode 100644 parser/include/catalog/pg_ts_config_d.h create mode 100644 parser/include/catalog/pg_ts_dict_d.h create mode 100644 parser/include/catalog/pg_ts_parser_d.h create mode 100644 parser/include/catalog/pg_ts_template_d.h create mode 100644 parser/include/catalog/pg_type_d.h create mode 100644 parser/include/catalog/storage.h create mode 100644 parser/include/common/file_perm.h create mode 100644 parser/include/common/hashfn.h create mode 100644 parser/include/common/kwlookup.h create mode 100644 parser/include/common/string.h create mode 100644 parser/include/common/unicode_combining_table.h create mode 100644 parser/include/jit/jit.h create mode 100644 parser/include/kwlist_d.h delete mode 100644 parser/include/libpq/be-fsstubs.h create mode 100644 parser/include/mb/stringinfo_mb.h rename parser/include/nodes/{relation.h => pathnodes.h} (82%) create mode 100644 parser/include/optimizer/optimizer.h delete mode 100644 parser/include/optimizer/planner.h delete mode 100644 parser/include/optimizer/tlist.h delete mode 100644 parser/include/optimizer/var.h create mode 100644 parser/include/partitioning/partdefs.h create mode 100644 parser/include/pg_query_enum_defs.c delete mode 100644 parser/include/pg_query_json_conds.c delete mode 100644 parser/include/pg_query_json_defs.c create mode 100644 parser/include/pg_query_outfuncs_conds.c create mode 100644 parser/include/pg_query_outfuncs_defs.c create mode 100644 parser/include/pg_query_readfuncs_conds.c create mode 100644 parser/include/pg_query_readfuncs_defs.c create mode 100644 parser/include/pl_reserved_kwlist.h create mode 100644 parser/include/pl_reserved_kwlist_d.h create mode 100644 parser/include/pl_unreserved_kwlist.h create mode 100644 parser/include/pl_unreserved_kwlist_d.h create mode 100644 parser/include/port/pg_bitutils.h create mode 100644 parser/include/postmaster/interrupt.h create mode 100644 parser/include/protobuf-c.h create mode 100644 parser/include/protobuf-c/protobuf-c.h create mode 100644 parser/include/protobuf/pg_query.pb-c.h create mode 100644 parser/include/protobuf/pg_query.pb.h delete mode 100644 parser/include/sha1.h create mode 100644 parser/include/storage/large_object.h create mode 100644 parser/include/storage/sharedfileset.h create mode 100644 parser/include/storage/sinvaladt.h create mode 100644 parser/include/storage/smgr.h create mode 100644 parser/include/storage/sync.h create mode 100644 parser/include/tcop/cmdtag.h create mode 100644 parser/include/tcop/cmdtaglist.h delete mode 100644 parser/include/utils/dynamic_loader.h create mode 100644 parser/include/utils/expandedrecord.h create mode 100644 parser/include/utils/float.h create mode 100644 parser/include/utils/fmgrtab.h create mode 100644 parser/include/utils/partcache.h create mode 100644 parser/include/utils/pg_lsn.h create mode 100644 parser/include/utils/sharedtuplestore.h delete mode 100644 parser/include/utils/tqual.h create mode 100644 parser/include/xxhash.h create mode 100644 parser/include/xxhash/xxhash.h create mode 100644 parser/pg_query.pb-c.c create mode 100644 parser/pg_query_deparse.c delete mode 100644 parser/pg_query_json.c delete mode 100644 parser/pg_query_json.h create mode 100644 parser/pg_query_outfuncs.h create mode 100644 parser/pg_query_outfuncs_json.c create mode 100644 parser/pg_query_outfuncs_protobuf.c create mode 100644 parser/pg_query_readfuncs.h create mode 100644 parser/pg_query_readfuncs_protobuf.c create mode 100644 parser/pg_query_scan.c create mode 100644 parser/pg_query_split.c create mode 100644 parser/protobuf-c.c create mode 100644 parser/src_backend_commands_define.c create mode 100644 parser/src_backend_utils_fmgr_fmgr.c rename parser/{src_backend_utils_mb_encnames.c => src_common_encnames.c} (79%) create mode 100644 parser/src_common_kwlist_d.h create mode 100644 parser/src_common_kwlookup.c create mode 100644 parser/src_common_string.c rename parser/{src_backend_lib_stringinfo.c => src_common_stringinfo.c} (81%) rename parser/{src_backend_utils_mb_wchar.c => src_common_wchar.c} (78%) create mode 100644 parser/src_pl_plpgsql_src_pl_reserved_kwlist_d.h create mode 100644 parser/src_pl_plpgsql_src_pl_unreserved_kwlist_d.h create mode 100644 parser/src_port_pg_bitutils.c create mode 100644 parser/src_port_pgstrcasecmp.c create mode 100644 parser/src_port_snprintf.c create mode 100644 parser/src_port_strerror.c create mode 100644 parser/src_port_strnlen.c create mode 100644 parser/xxhash.c delete mode 100644 parsetree_list.go create mode 100644 pg_query.pb.go diff --git a/.gitignore b/.gitignore index 11c04594..a9ce3b54 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,5 @@ tmp/* +bin/ *.o *.a diff --git a/Makefile b/Makefile index effd6f58..c50eabeb 100644 --- a/Makefile +++ b/Makefile @@ -17,7 +17,7 @@ benchmark: # --- Below only needed for releasing new versions -LIB_PG_QUERY_TAG = 10-1.0.5 +LIB_PG_QUERY_TAG = 13-latest-develop root_dir := $(shell dirname $(realpath $(lastword $(MAKEFILE_LIST)))) LIB_TMPDIR = $(root_dir)/tmp @@ -37,16 +37,32 @@ update_source: $(LIBDIR) rm -fr parser/include # Reduce everything down to one directory cp -a $(LIBDIR)/src/* parser/ + rm parser/pg_query_outfuncs_protobuf_cpp.cc mv parser/postgres/* parser/ rmdir parser/postgres cp -a $(LIBDIR)/pg_query.h parser/include - # Make sure every .c file in the top-level directory is its own translation unit + # Make sure every .c and .cc file in the top-level directory is its own translation unit mv parser/*{_conds,_defs,_helper}.c parser/include + # Protobuf definitions + mkdir -p $(PWD)/bin + GOBIN=$(PWD)/bin go install github.com/golang/protobuf/protoc-gen-go + PATH=$(PWD)/bin:$(PATH) protoc --proto_path=$(LIBDIR)/protobuf --go_out=. $(LIBDIR)/protobuf/pg_query.proto + mkdir -p parser/include/protobuf + cp -a $(LIBDIR)/protobuf/*.h parser/include/protobuf + cp -a $(LIBDIR)/protobuf/*.c parser/ + # Protobuf library code + mkdir -p parser/include/protobuf-c + cp -a $(LIBDIR)/vendor/protobuf-c/*.h parser/include + cp -a $(LIBDIR)/vendor/protobuf-c/*.h parser/include/protobuf-c + cp -a $(LIBDIR)/vendor/protobuf-c/*.c parser/ + # xxhash library code + mkdir -p parser/include/xxhash + cp -a $(LIBDIR)/vendor/xxhash/*.h parser/include + cp -a $(LIBDIR)/vendor/xxhash/*.h parser/include/xxhash + cp -a $(LIBDIR)/vendor/xxhash/*.c parser/ # Other support files rm -fr testdata cp -a $(LIBDIR)/testdata testdata - # Update nodes directory - ruby scripts/generate_nodes.rb clean: -@ $(RM) -r $(LIB_TMPDIR) diff --git a/benchmark_test.go b/benchmark_test.go index bf3444c4..8d3a4c6b 100644 --- a/benchmark_test.go +++ b/benchmark_test.go @@ -4,12 +4,13 @@ import ( "testing" "github.com/lfittl/pg_query_go" + nodes "github.com/lfittl/pg_query_go/nodes" ) // Prevent compiler optimizations by assigning all results to global variables var err error var resultStr string -var resultTree pg_query.ParsetreeList +var resultTree *nodes.Node func benchmarkParse(input string, b *testing.B) { for i := 0; i < b.N; i++ { @@ -19,33 +20,33 @@ func benchmarkParse(input string, b *testing.B) { b.Errorf("Benchmark produced error %s\n\n", err) } - if len(resultTree.Statements) == 0 { + /*if len(resultTree.Statements) == 0 { b.Errorf("Benchmark produced empty result\n\n") - } + }*/ } } func benchmarkParseParallel(input string, b *testing.B) { b.RunParallel(func(pb *testing.PB) { - var tree pg_query.ParsetreeList + //var tree nodes.Node for pb.Next() { - tree, err = pg_query.Parse(input) + _, err = pg_query.Parse(input) if err != nil { b.Errorf("Benchmark produced error %s\n\n", err) } - if len(tree.Statements) == 0 { + /*if len(tree.Statements) == 0 { b.Errorf("Benchmark produced empty result\n\n") - } + }*/ } }) } func benchmarkRawParse(input string, b *testing.B) { for i := 0; i < b.N; i++ { - resultStr, err = pg_query.ParseToJSON(input) + resultStr, err = pg_query.ParseToProtobuf(input) if err != nil { b.Errorf("Benchmark produced error %s\n\n", err) @@ -62,7 +63,7 @@ func benchmarkRawParseParallel(input string, b *testing.B) { var str string for pb.Next() { - str, err = pg_query.ParseToJSON(input) + str, err = pg_query.ParseToProtobuf(input) if err != nil { b.Errorf("Benchmark produced error %s\n\n", err) @@ -75,7 +76,7 @@ func benchmarkRawParseParallel(input string, b *testing.B) { }) } -func benchmarkFingerprint(input string, b *testing.B) { +/*func benchmarkFingerprint(input string, b *testing.B) { for i := 0; i < b.N; i++ { resultTree, err = pg_query.Parse(input) if err != nil { @@ -88,7 +89,7 @@ func benchmarkFingerprint(input string, b *testing.B) { b.Errorf("Benchmark produced empty result\n\n") } } -} +}*/ func benchmarkFastFingerprint(input string, b *testing.B) { for i := 0; i < b.N; i++ { @@ -154,7 +155,7 @@ func BenchmarkRawParseCreateTableParallel(b *testing.B) { benchmarkRawParseParallel("CREATE TABLE types (a float(2), b float(49), c NUMERIC(2, 3), d character(4), e char(5), f varchar(6), g character varying(7))", b) } -func BenchmarkFingerprintSelect1(b *testing.B) { +/*func BenchmarkFingerprintSelect1(b *testing.B) { benchmarkFingerprint("SELECT 1", b) } func BenchmarkFingerprintSelect2(b *testing.B) { @@ -162,7 +163,7 @@ func BenchmarkFingerprintSelect2(b *testing.B) { } func BenchmarkFingerprintCreateTable(b *testing.B) { benchmarkFingerprint("CREATE TABLE types (a float(2), b float(49), c NUMERIC(2, 3), d character(4), e char(5), f varchar(6), g character varying(7))", b) -} +}*/ func BenchmarkFastFingerprintSelect1(b *testing.B) { benchmarkFastFingerprint("SELECT 1", b) diff --git a/fingerprint_test.go b/fingerprint_test.go index 8227929a..dc72ec16 100644 --- a/fingerprint_test.go +++ b/fingerprint_test.go @@ -1,5 +1,6 @@ package pg_query_test +/* import ( "encoding/json" "fmt" @@ -55,3 +56,4 @@ func TestFingerprint(t *testing.T) { fmt.Printf("\n") } +*/ diff --git a/go.mod b/go.mod index 1b6e13f6..660a36c4 100644 --- a/go.mod +++ b/go.mod @@ -2,4 +2,9 @@ module github.com/lfittl/pg_query_go go 1.14 -require github.com/kr/pretty v0.2.1 +require ( + github.com/golang/protobuf v1.4.2 + github.com/google/go-cmp v0.5.1 + github.com/kr/pretty v0.2.1 + google.golang.org/protobuf v1.23.0 +) diff --git a/go.sum b/go.sum index cfe07e73..eaee737f 100644 --- a/go.sum +++ b/go.sum @@ -1,3 +1,15 @@ +github.com/golang/protobuf v1.4.0-rc.1/go.mod h1:ceaxUfeHdC40wWswd/P6IGgMaK3YpKi5j83Wpe3EHw8= +github.com/golang/protobuf v1.4.0-rc.1.0.20200221234624-67d41d38c208/go.mod h1:xKAWHe0F5eneWXFV3EuXVDTCmh+JuBKY0li0aMyXATA= +github.com/golang/protobuf v1.4.0-rc.2/go.mod h1:LlEzMj4AhA7rCAGe4KMBDvJI+AwstrUpVNzEA03Pprs= +github.com/golang/protobuf v1.4.0-rc.4.0.20200313231945-b860323f09d0/go.mod h1:WU3c8KckQ9AFe+yFwt9sWVRKCVIyN9cPHBJSNnbL67w= +github.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvqG2KuDX0= +github.com/golang/protobuf v1.4.2 h1:+Z5KGCizgyZCbGh1KZqA0fcLLkwbsjIzS4aV2v7wJX0= +github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= +github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= +github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= +github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.1 h1:JFrFEBb2xKufg6XkJsJr+WbKb4FQlURi5RUcBveYu9k= +github.com/google/go-cmp v0.5.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/kr/pretty v0.1.0 h1:L/CwN0zerZDmRFUapSPitk6f+Q3+0za1rQkzVuMiMFI= github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= github.com/kr/pretty v0.2.1 h1:Fmg33tUaq4/8ym9TJN1x7sLJnHVwhP33CNkpYV/7rwI= @@ -5,3 +17,13 @@ github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfn github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= github.com/kr/text v0.1.0 h1:45sCR5RtlFHMR4UwH9sdQ5TC8v0qDQCHnXt+kaKSTVE= github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= +golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543 h1:E7g+9GITq07hpfrRu66IVDexMakfv52eLZ2CXBWiKr4= +golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= +google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= +google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= +google.golang.org/protobuf v1.20.1-0.20200309200217-e05f789c0967/go.mod h1:A+miEFZTKqfCUM6K7xSMQL9OKL/b6hQv+e19PK+JZNE= +google.golang.org/protobuf v1.21.0/go.mod h1:47Nbq4nVaFHyn7ilMalzfO3qCViNmqZ2kzikPIcrTAo= +google.golang.org/protobuf v1.23.0 h1:4MY060fB1DLGMB/7MBTLnwQUY6+F09GEiz6SsrNqyzM= +google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= +google.golang.org/protobuf v1.25.0 h1:Ejskq+SyPohKW+1uil0JJMtmHCgJPJ/qWTxr8qp+R4c= diff --git a/nodes/a_array_expr.go b/nodes/a_array_expr.go deleted file mode 100644 index 62a3fb8a..00000000 --- a/nodes/a_array_expr.go +++ /dev/null @@ -1,45 +0,0 @@ -// Auto-generated from postgres/src/include/nodes/parsenodes.h - DO NOT EDIT - -package pg_query - -import "encoding/json" - -/* - * A_ArrayExpr - an ARRAY[] construct - */ -type A_ArrayExpr struct { - Elements List `json:"elements"` /* array element expressions */ - Location int `json:"location"` /* token location, or -1 if unknown */ -} - -func (node A_ArrayExpr) MarshalJSON() ([]byte, error) { - type A_ArrayExprMarshalAlias A_ArrayExpr - return json.Marshal(map[string]interface{}{ - "A_ArrayExpr": (*A_ArrayExprMarshalAlias)(&node), - }) -} - -func (node *A_ArrayExpr) UnmarshalJSON(input []byte) (err error) { - var fields map[string]json.RawMessage - - err = json.Unmarshal(input, &fields) - if err != nil { - return - } - - if fields["elements"] != nil { - node.Elements.Items, err = UnmarshalNodeArrayJSON(fields["elements"]) - if err != nil { - return - } - } - - if fields["location"] != nil { - err = json.Unmarshal(fields["location"], &node.Location) - if err != nil { - return - } - } - - return -} diff --git a/nodes/a_array_expr_deparse.go b/nodes/a_array_expr_deparse.go deleted file mode 100644 index 6b82c387..00000000 --- a/nodes/a_array_expr_deparse.go +++ /dev/null @@ -1,7 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -func (node A_ArrayExpr) Deparse() string { - panic("Not Implemented") -} diff --git a/nodes/a_array_expr_fingerprint.go b/nodes/a_array_expr_fingerprint.go deleted file mode 100644 index 44ef5780..00000000 --- a/nodes/a_array_expr_fingerprint.go +++ /dev/null @@ -1,20 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -func (node A_ArrayExpr) Fingerprint(ctx FingerprintContext, parentNode Node, parentFieldName string) { - ctx.WriteString("A_ArrayExpr") - - if len(node.Elements.Items) > 0 { - subCtx := FingerprintSubContext{} - node.Elements.Fingerprint(&subCtx, node, "Elements") - - if len(subCtx.parts) > 0 { - ctx.WriteString("elements") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - // Intentionally ignoring node.Location for fingerprinting -} diff --git a/nodes/a_const.go b/nodes/a_const.go deleted file mode 100644 index 933f93be..00000000 --- a/nodes/a_const.go +++ /dev/null @@ -1,45 +0,0 @@ -// Auto-generated from postgres/src/include/nodes/parsenodes.h - DO NOT EDIT - -package pg_query - -import "encoding/json" - -/* - * A_Const - a literal constant - */ -type A_Const struct { - Val Node `json:"val"` /* value (includes type info, see value.h) */ - Location int `json:"location"` /* token location, or -1 if unknown */ -} - -func (node A_Const) MarshalJSON() ([]byte, error) { - type A_ConstMarshalAlias A_Const - return json.Marshal(map[string]interface{}{ - "A_Const": (*A_ConstMarshalAlias)(&node), - }) -} - -func (node *A_Const) UnmarshalJSON(input []byte) (err error) { - var fields map[string]json.RawMessage - - err = json.Unmarshal(input, &fields) - if err != nil { - return - } - - if fields["val"] != nil { - node.Val, err = UnmarshalNodeJSON(fields["val"]) - if err != nil { - return - } - } - - if fields["location"] != nil { - err = json.Unmarshal(fields["location"], &node.Location) - if err != nil { - return - } - } - - return -} diff --git a/nodes/a_const_deparse.go b/nodes/a_const_deparse.go deleted file mode 100644 index 96c8d57f..00000000 --- a/nodes/a_const_deparse.go +++ /dev/null @@ -1,7 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -func (node A_Const) Deparse() string { - panic("Not Implemented") -} diff --git a/nodes/a_const_fingerprint.go b/nodes/a_const_fingerprint.go deleted file mode 100644 index 8bf93545..00000000 --- a/nodes/a_const_fingerprint.go +++ /dev/null @@ -1,7 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -func (node A_Const) Fingerprint(ctx FingerprintContext, parentNode Node, parentFieldName string) { - // Intentionally ignoring all fields for fingerprinting -} diff --git a/nodes/a_expr.go b/nodes/a_expr.go deleted file mode 100644 index 50af714c..00000000 --- a/nodes/a_expr.go +++ /dev/null @@ -1,69 +0,0 @@ -// Auto-generated from postgres/src/include/nodes/parsenodes.h - DO NOT EDIT - -package pg_query - -import "encoding/json" - -/* - * A_Expr - infix, prefix, and postfix expressions - */ -type A_Expr struct { - Kind A_Expr_Kind `json:"kind"` /* see above */ - Name List `json:"name"` /* possibly-qualified name of operator */ - Lexpr Node `json:"lexpr"` /* left argument, or NULL if none */ - Rexpr Node `json:"rexpr"` /* right argument, or NULL if none */ - Location int `json:"location"` /* token location, or -1 if unknown */ -} - -func (node A_Expr) MarshalJSON() ([]byte, error) { - type A_ExprMarshalAlias A_Expr - return json.Marshal(map[string]interface{}{ - "A_Expr": (*A_ExprMarshalAlias)(&node), - }) -} - -func (node *A_Expr) UnmarshalJSON(input []byte) (err error) { - var fields map[string]json.RawMessage - - err = json.Unmarshal(input, &fields) - if err != nil { - return - } - - if fields["kind"] != nil { - err = json.Unmarshal(fields["kind"], &node.Kind) - if err != nil { - return - } - } - - if fields["name"] != nil { - node.Name.Items, err = UnmarshalNodeArrayJSON(fields["name"]) - if err != nil { - return - } - } - - if fields["lexpr"] != nil { - node.Lexpr, err = UnmarshalNodeJSON(fields["lexpr"]) - if err != nil { - return - } - } - - if fields["rexpr"] != nil { - node.Rexpr, err = UnmarshalNodeJSON(fields["rexpr"]) - if err != nil { - return - } - } - - if fields["location"] != nil { - err = json.Unmarshal(fields["location"], &node.Location) - if err != nil { - return - } - } - - return -} diff --git a/nodes/a_expr_deparse.go b/nodes/a_expr_deparse.go deleted file mode 100644 index f0a2043d..00000000 --- a/nodes/a_expr_deparse.go +++ /dev/null @@ -1,7 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -func (node A_Expr) Deparse() string { - panic("Not Implemented") -} diff --git a/nodes/a_expr_fingerprint.go b/nodes/a_expr_fingerprint.go deleted file mode 100644 index aad9d256..00000000 --- a/nodes/a_expr_fingerprint.go +++ /dev/null @@ -1,51 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -import "strconv" - -func (node A_Expr) Fingerprint(ctx FingerprintContext, parentNode Node, parentFieldName string) { - ctx.WriteString("A_Expr") - - if int(node.Kind) != 0 { - ctx.WriteString("kind") - ctx.WriteString(strconv.Itoa(int(node.Kind))) - } - - if node.Lexpr != nil { - subCtx := FingerprintSubContext{} - node.Lexpr.Fingerprint(&subCtx, node, "Lexpr") - - if len(subCtx.parts) > 0 { - ctx.WriteString("lexpr") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - // Intentionally ignoring node.Location for fingerprinting - - if len(node.Name.Items) > 0 { - subCtx := FingerprintSubContext{} - node.Name.Fingerprint(&subCtx, node, "Name") - - if len(subCtx.parts) > 0 { - ctx.WriteString("name") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if node.Rexpr != nil { - subCtx := FingerprintSubContext{} - node.Rexpr.Fingerprint(&subCtx, node, "Rexpr") - - if len(subCtx.parts) > 0 { - ctx.WriteString("rexpr") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } -} diff --git a/nodes/a_expr_kind.go b/nodes/a_expr_kind.go deleted file mode 100644 index 39889437..00000000 --- a/nodes/a_expr_kind.go +++ /dev/null @@ -1,27 +0,0 @@ -// Auto-generated from postgres/src/include/nodes/parsenodes.h - DO NOT EDIT - -package pg_query - -/* - * A_Expr - infix, prefix, and postfix expressions - */ -type A_Expr_Kind uint - -const ( - AEXPR_OP A_Expr_Kind = iota /* normal operator */ - AEXPR_OP_ANY /* scalar op ANY (array) */ - AEXPR_OP_ALL /* scalar op ALL (array) */ - AEXPR_DISTINCT /* IS DISTINCT FROM - name must be "=" */ - AEXPR_NOT_DISTINCT /* IS NOT DISTINCT FROM - name must be "=" */ - AEXPR_NULLIF /* NULLIF - name must be "=" */ - AEXPR_OF /* IS [NOT] OF - name must be "=" or "<>" */ - AEXPR_IN /* [NOT] IN - name must be "=" or "<>" */ - AEXPR_LIKE /* [NOT] LIKE - name must be "~~" or "!~~" */ - AEXPR_ILIKE /* [NOT] ILIKE - name must be "~~*" or "!~~*" */ - AEXPR_SIMILAR /* [NOT] SIMILAR - name must be "~" or "!~" */ - AEXPR_BETWEEN /* name must be "BETWEEN" */ - AEXPR_NOT_BETWEEN /* name must be "NOT BETWEEN" */ - AEXPR_BETWEEN_SYM /* name must be "BETWEEN SYMMETRIC" */ - AEXPR_NOT_BETWEEN_SYM /* name must be "NOT BETWEEN SYMMETRIC" */ - AEXPR_PAREN /* nameless dummy node for parentheses */ -) diff --git a/nodes/a_indices.go b/nodes/a_indices.go deleted file mode 100644 index 5037bdbf..00000000 --- a/nodes/a_indices.go +++ /dev/null @@ -1,56 +0,0 @@ -// Auto-generated from postgres/src/include/nodes/parsenodes.h - DO NOT EDIT - -package pg_query - -import "encoding/json" - -/* - * A_Indices - array subscript or slice bounds ([idx] or [lidx:uidx]) - * - * In slice case, either or both of lidx and uidx can be NULL (omitted). - * In non-slice case, uidx holds the single subscript and lidx is always NULL. - */ -type A_Indices struct { - IsSlice bool `json:"is_slice"` /* true if slice (i.e., colon present) */ - Lidx Node `json:"lidx"` /* slice lower bound, if any */ - Uidx Node `json:"uidx"` /* subscript, or slice upper bound if any */ -} - -func (node A_Indices) MarshalJSON() ([]byte, error) { - type A_IndicesMarshalAlias A_Indices - return json.Marshal(map[string]interface{}{ - "A_Indices": (*A_IndicesMarshalAlias)(&node), - }) -} - -func (node *A_Indices) UnmarshalJSON(input []byte) (err error) { - var fields map[string]json.RawMessage - - err = json.Unmarshal(input, &fields) - if err != nil { - return - } - - if fields["is_slice"] != nil { - err = json.Unmarshal(fields["is_slice"], &node.IsSlice) - if err != nil { - return - } - } - - if fields["lidx"] != nil { - node.Lidx, err = UnmarshalNodeJSON(fields["lidx"]) - if err != nil { - return - } - } - - if fields["uidx"] != nil { - node.Uidx, err = UnmarshalNodeJSON(fields["uidx"]) - if err != nil { - return - } - } - - return -} diff --git a/nodes/a_indices_deparse.go b/nodes/a_indices_deparse.go deleted file mode 100644 index 9d42071e..00000000 --- a/nodes/a_indices_deparse.go +++ /dev/null @@ -1,7 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -func (node A_Indices) Deparse() string { - panic("Not Implemented") -} diff --git a/nodes/a_indices_fingerprint.go b/nodes/a_indices_fingerprint.go deleted file mode 100644 index e232ad47..00000000 --- a/nodes/a_indices_fingerprint.go +++ /dev/null @@ -1,38 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -import "strconv" - -func (node A_Indices) Fingerprint(ctx FingerprintContext, parentNode Node, parentFieldName string) { - ctx.WriteString("A_Indices") - - if node.IsSlice { - ctx.WriteString("is_slice") - ctx.WriteString(strconv.FormatBool(node.IsSlice)) - } - - if node.Lidx != nil { - subCtx := FingerprintSubContext{} - node.Lidx.Fingerprint(&subCtx, node, "Lidx") - - if len(subCtx.parts) > 0 { - ctx.WriteString("lidx") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if node.Uidx != nil { - subCtx := FingerprintSubContext{} - node.Uidx.Fingerprint(&subCtx, node, "Uidx") - - if len(subCtx.parts) > 0 { - ctx.WriteString("uidx") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } -} diff --git a/nodes/a_indirection.go b/nodes/a_indirection.go deleted file mode 100644 index f8d4e4fc..00000000 --- a/nodes/a_indirection.go +++ /dev/null @@ -1,57 +0,0 @@ -// Auto-generated from postgres/src/include/nodes/parsenodes.h - DO NOT EDIT - -package pg_query - -import "encoding/json" - -/* - * A_Indirection - select a field and/or array element from an expression - * - * The indirection list can contain A_Indices nodes (representing - * subscripting), string Value nodes (representing field selection --- the - * string value is the name of the field to select), and A_Star nodes - * (representing selection of all fields of a composite type). - * For example, a complex selection operation like - * (foo).field1[42][7].field2 - * would be represented with a single A_Indirection node having a 4-element - * indirection list. - * - * Currently, A_Star must appear only as the last list element --- the grammar - * is responsible for enforcing this! - */ -type A_Indirection struct { - Arg Node `json:"arg"` /* the thing being selected from */ - Indirection List `json:"indirection"` /* subscripts and/or field names and/or * */ -} - -func (node A_Indirection) MarshalJSON() ([]byte, error) { - type A_IndirectionMarshalAlias A_Indirection - return json.Marshal(map[string]interface{}{ - "A_Indirection": (*A_IndirectionMarshalAlias)(&node), - }) -} - -func (node *A_Indirection) UnmarshalJSON(input []byte) (err error) { - var fields map[string]json.RawMessage - - err = json.Unmarshal(input, &fields) - if err != nil { - return - } - - if fields["arg"] != nil { - node.Arg, err = UnmarshalNodeJSON(fields["arg"]) - if err != nil { - return - } - } - - if fields["indirection"] != nil { - node.Indirection.Items, err = UnmarshalNodeArrayJSON(fields["indirection"]) - if err != nil { - return - } - } - - return -} diff --git a/nodes/a_indirection_deparse.go b/nodes/a_indirection_deparse.go deleted file mode 100644 index 56c96222..00000000 --- a/nodes/a_indirection_deparse.go +++ /dev/null @@ -1,7 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -func (node A_Indirection) Deparse() string { - panic("Not Implemented") -} diff --git a/nodes/a_indirection_fingerprint.go b/nodes/a_indirection_fingerprint.go deleted file mode 100644 index 132a74c0..00000000 --- a/nodes/a_indirection_fingerprint.go +++ /dev/null @@ -1,31 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -func (node A_Indirection) Fingerprint(ctx FingerprintContext, parentNode Node, parentFieldName string) { - ctx.WriteString("A_Indirection") - - if node.Arg != nil { - subCtx := FingerprintSubContext{} - node.Arg.Fingerprint(&subCtx, node, "Arg") - - if len(subCtx.parts) > 0 { - ctx.WriteString("arg") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if len(node.Indirection.Items) > 0 { - subCtx := FingerprintSubContext{} - node.Indirection.Fingerprint(&subCtx, node, "Indirection") - - if len(subCtx.parts) > 0 { - ctx.WriteString("indirection") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } -} diff --git a/nodes/a_star.go b/nodes/a_star.go deleted file mode 100644 index ea9ad78a..00000000 --- a/nodes/a_star.go +++ /dev/null @@ -1,32 +0,0 @@ -// Auto-generated from postgres/src/include/nodes/parsenodes.h - DO NOT EDIT - -package pg_query - -import "encoding/json" - -/* - * A_Star - '*' representing all columns of a table or compound field - * - * This can appear within ColumnRef.fields, A_Indirection.indirection, and - * ResTarget.indirection lists. - */ -type A_Star struct { -} - -func (node A_Star) MarshalJSON() ([]byte, error) { - type A_StarMarshalAlias A_Star - return json.Marshal(map[string]interface{}{ - "A_Star": (*A_StarMarshalAlias)(&node), - }) -} - -func (node *A_Star) UnmarshalJSON(input []byte) (err error) { - var fields map[string]json.RawMessage - - err = json.Unmarshal(input, &fields) - if err != nil { - return - } - - return -} diff --git a/nodes/a_star_deparse.go b/nodes/a_star_deparse.go deleted file mode 100644 index 087c4b08..00000000 --- a/nodes/a_star_deparse.go +++ /dev/null @@ -1,7 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -func (node A_Star) Deparse() string { - panic("Not Implemented") -} diff --git a/nodes/a_star_fingerprint.go b/nodes/a_star_fingerprint.go deleted file mode 100644 index bd40a4a7..00000000 --- a/nodes/a_star_fingerprint.go +++ /dev/null @@ -1,7 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -func (node A_Star) Fingerprint(ctx FingerprintContext, parentNode Node, parentFieldName string) { - ctx.WriteString("A_Star") -} diff --git a/nodes/access_priv.go b/nodes/access_priv.go deleted file mode 100644 index aabf8c0b..00000000 --- a/nodes/access_priv.go +++ /dev/null @@ -1,49 +0,0 @@ -// Auto-generated from postgres/src/include/nodes/parsenodes.h - DO NOT EDIT - -package pg_query - -import "encoding/json" - -/* - * An access privilege, with optional list of column names - * priv_name == NULL denotes ALL PRIVILEGES (only used with a column list) - * cols == NIL denotes "all columns" - * Note that simple "ALL PRIVILEGES" is represented as a NIL list, not - * an AccessPriv with both fields null. - */ -type AccessPriv struct { - PrivName *string `json:"priv_name"` /* string name of privilege */ - Cols List `json:"cols"` /* list of Value strings */ -} - -func (node AccessPriv) MarshalJSON() ([]byte, error) { - type AccessPrivMarshalAlias AccessPriv - return json.Marshal(map[string]interface{}{ - "AccessPriv": (*AccessPrivMarshalAlias)(&node), - }) -} - -func (node *AccessPriv) UnmarshalJSON(input []byte) (err error) { - var fields map[string]json.RawMessage - - err = json.Unmarshal(input, &fields) - if err != nil { - return - } - - if fields["priv_name"] != nil { - err = json.Unmarshal(fields["priv_name"], &node.PrivName) - if err != nil { - return - } - } - - if fields["cols"] != nil { - node.Cols.Items, err = UnmarshalNodeArrayJSON(fields["cols"]) - if err != nil { - return - } - } - - return -} diff --git a/nodes/access_priv_deparse.go b/nodes/access_priv_deparse.go deleted file mode 100644 index 46eb68f3..00000000 --- a/nodes/access_priv_deparse.go +++ /dev/null @@ -1,7 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -func (node AccessPriv) Deparse() string { - panic("Not Implemented") -} diff --git a/nodes/access_priv_fingerprint.go b/nodes/access_priv_fingerprint.go deleted file mode 100644 index 47da209c..00000000 --- a/nodes/access_priv_fingerprint.go +++ /dev/null @@ -1,24 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -func (node AccessPriv) Fingerprint(ctx FingerprintContext, parentNode Node, parentFieldName string) { - ctx.WriteString("AccessPriv") - - if len(node.Cols.Items) > 0 { - subCtx := FingerprintSubContext{} - node.Cols.Fingerprint(&subCtx, node, "Cols") - - if len(subCtx.parts) > 0 { - ctx.WriteString("cols") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if node.PrivName != nil { - ctx.WriteString("priv_name") - ctx.WriteString(*node.PrivName) - } -} diff --git a/nodes/agg_split.go b/nodes/agg_split.go deleted file mode 100644 index f9462bb5..00000000 --- a/nodes/agg_split.go +++ /dev/null @@ -1,17 +0,0 @@ -// Auto-generated from postgres/src/include/nodes/nodes.h - DO NOT EDIT - -package pg_query - -/* Supported operating modes (i.e., useful combinations of these options): */ -type AggSplit uint - -const ( - /* Basic, non-split aggregation: */ - AGGSPLIT_SIMPLE AggSplit = iota - - /* Initial phase of partial aggregation, with serialization: */ - AGGSPLIT_INITIAL_SERIAL - - /* Final phase of partial aggregation, with deserialization: */ - AGGSPLIT_FINAL_DESERIAL -) diff --git a/nodes/agg_strategy.go b/nodes/agg_strategy.go deleted file mode 100644 index 6cda65d2..00000000 --- a/nodes/agg_strategy.go +++ /dev/null @@ -1,18 +0,0 @@ -// Auto-generated from postgres/src/include/nodes/nodes.h - DO NOT EDIT - -package pg_query - -/* - * AggStrategy - - * overall execution strategies for Agg plan nodes - * - * This is needed in both plannodes.h and relation.h, so put it here... - */ -type AggStrategy uint - -const ( - AGG_PLAIN AggStrategy = iota /* simple agg across all input rows */ - AGG_SORTED /* grouped agg, input must be sorted */ - AGG_HASHED /* grouped agg, use internal hashtable */ - AGG_MIXED /* grouped agg, hash and sort both used */ -) diff --git a/nodes/aggref.go b/nodes/aggref.go deleted file mode 100644 index 6bef59f1..00000000 --- a/nodes/aggref.go +++ /dev/null @@ -1,213 +0,0 @@ -// Auto-generated from postgres/src/include/nodes/primnodes.h - DO NOT EDIT - -package pg_query - -import "encoding/json" - -/* - * Aggref - * - * The aggregate's args list is a targetlist, ie, a list of TargetEntry nodes. - * - * For a normal (non-ordered-set) aggregate, the non-resjunk TargetEntries - * represent the aggregate's regular arguments (if any) and resjunk TLEs can - * be added at the end to represent ORDER BY expressions that are not also - * arguments. As in a top-level Query, the TLEs can be marked with - * ressortgroupref indexes to let them be referenced by SortGroupClause - * entries in the aggorder and/or aggdistinct lists. This represents ORDER BY - * and DISTINCT operations to be applied to the aggregate input rows before - * they are passed to the transition function. The grammar only allows a - * simple "DISTINCT" specifier for the arguments, but we use the full - * query-level representation to allow more code sharing. - * - * For an ordered-set aggregate, the args list represents the WITHIN GROUP - * (aggregated) arguments, all of which will be listed in the aggorder list. - * DISTINCT is not supported in this case, so aggdistinct will be NIL. - * The direct arguments appear in aggdirectargs (as a list of plain - * expressions, not TargetEntry nodes). - * - * aggtranstype is the data type of the state transition values for this - * aggregate (resolved to an actual type, if agg's transtype is polymorphic). - * This is determined during planning and is InvalidOid before that. - * - * aggargtypes is an OID list of the data types of the direct and regular - * arguments. Normally it's redundant with the aggdirectargs and args lists, - * but in a combining aggregate, it's not because the args list has been - * replaced with a single argument representing the partial-aggregate - * transition values. - * - * aggsplit indicates the expected partial-aggregation mode for the Aggref's - * parent plan node. It's always set to AGGSPLIT_SIMPLE in the parser, but - * the planner might change it to something else. We use this mainly as - * a crosscheck that the Aggrefs match the plan; but note that when aggsplit - * indicates a non-final mode, aggtype reflects the transition data type - * not the SQL-level output type of the aggregate. - */ -type Aggref struct { - Xpr Node `json:"xpr"` - Aggfnoid Oid `json:"aggfnoid"` /* pg_proc Oid of the aggregate */ - Aggtype Oid `json:"aggtype"` /* type Oid of result of the aggregate */ - Aggcollid Oid `json:"aggcollid"` /* OID of collation of result */ - Inputcollid Oid `json:"inputcollid"` /* OID of collation that function should use */ - Aggtranstype Oid `json:"aggtranstype"` /* type Oid of aggregate's transition value */ - Aggargtypes List `json:"aggargtypes"` /* type Oids of direct and aggregated args */ - Aggdirectargs List `json:"aggdirectargs"` /* direct arguments, if an ordered-set agg */ - Args List `json:"args"` /* aggregated arguments and sort expressions */ - Aggorder List `json:"aggorder"` /* ORDER BY (list of SortGroupClause) */ - Aggdistinct List `json:"aggdistinct"` /* DISTINCT (list of SortGroupClause) */ - Aggfilter Node `json:"aggfilter"` /* FILTER expression, if any */ - Aggstar bool `json:"aggstar"` /* TRUE if argument list was really '*' */ - Aggvariadic bool `json:"aggvariadic"` /* true if variadic arguments have been - * combined into an array last argument */ - - Aggkind byte `json:"aggkind"` /* aggregate kind (see pg_aggregate.h) */ - Agglevelsup Index `json:"agglevelsup"` /* > 0 if agg belongs to outer query */ - Aggsplit AggSplit `json:"aggsplit"` /* expected agg-splitting mode of parent Agg */ - Location int `json:"location"` /* token location, or -1 if unknown */ -} - -func (node Aggref) MarshalJSON() ([]byte, error) { - type AggrefMarshalAlias Aggref - return json.Marshal(map[string]interface{}{ - "Aggref": (*AggrefMarshalAlias)(&node), - }) -} - -func (node *Aggref) UnmarshalJSON(input []byte) (err error) { - var fields map[string]json.RawMessage - - err = json.Unmarshal(input, &fields) - if err != nil { - return - } - - if fields["xpr"] != nil { - node.Xpr, err = UnmarshalNodeJSON(fields["xpr"]) - if err != nil { - return - } - } - - if fields["aggfnoid"] != nil { - err = json.Unmarshal(fields["aggfnoid"], &node.Aggfnoid) - if err != nil { - return - } - } - - if fields["aggtype"] != nil { - err = json.Unmarshal(fields["aggtype"], &node.Aggtype) - if err != nil { - return - } - } - - if fields["aggcollid"] != nil { - err = json.Unmarshal(fields["aggcollid"], &node.Aggcollid) - if err != nil { - return - } - } - - if fields["inputcollid"] != nil { - err = json.Unmarshal(fields["inputcollid"], &node.Inputcollid) - if err != nil { - return - } - } - - if fields["aggtranstype"] != nil { - err = json.Unmarshal(fields["aggtranstype"], &node.Aggtranstype) - if err != nil { - return - } - } - - if fields["aggargtypes"] != nil { - node.Aggargtypes.Items, err = UnmarshalNodeArrayJSON(fields["aggargtypes"]) - if err != nil { - return - } - } - - if fields["aggdirectargs"] != nil { - node.Aggdirectargs.Items, err = UnmarshalNodeArrayJSON(fields["aggdirectargs"]) - if err != nil { - return - } - } - - if fields["args"] != nil { - node.Args.Items, err = UnmarshalNodeArrayJSON(fields["args"]) - if err != nil { - return - } - } - - if fields["aggorder"] != nil { - node.Aggorder.Items, err = UnmarshalNodeArrayJSON(fields["aggorder"]) - if err != nil { - return - } - } - - if fields["aggdistinct"] != nil { - node.Aggdistinct.Items, err = UnmarshalNodeArrayJSON(fields["aggdistinct"]) - if err != nil { - return - } - } - - if fields["aggfilter"] != nil { - node.Aggfilter, err = UnmarshalNodeJSON(fields["aggfilter"]) - if err != nil { - return - } - } - - if fields["aggstar"] != nil { - err = json.Unmarshal(fields["aggstar"], &node.Aggstar) - if err != nil { - return - } - } - - if fields["aggvariadic"] != nil { - err = json.Unmarshal(fields["aggvariadic"], &node.Aggvariadic) - if err != nil { - return - } - } - - if fields["aggkind"] != nil { - var strVal string - err = json.Unmarshal(fields["aggkind"], &strVal) - node.Aggkind = strVal[0] - if err != nil { - return - } - } - - if fields["agglevelsup"] != nil { - err = json.Unmarshal(fields["agglevelsup"], &node.Agglevelsup) - if err != nil { - return - } - } - - if fields["aggsplit"] != nil { - err = json.Unmarshal(fields["aggsplit"], &node.Aggsplit) - if err != nil { - return - } - } - - if fields["location"] != nil { - err = json.Unmarshal(fields["location"], &node.Location) - if err != nil { - return - } - } - - return -} diff --git a/nodes/aggref_deparse.go b/nodes/aggref_deparse.go deleted file mode 100644 index d264deab..00000000 --- a/nodes/aggref_deparse.go +++ /dev/null @@ -1,7 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -func (node Aggref) Deparse() string { - panic("Not Implemented") -} diff --git a/nodes/aggref_fingerprint.go b/nodes/aggref_fingerprint.go deleted file mode 100644 index 79598d94..00000000 --- a/nodes/aggref_fingerprint.go +++ /dev/null @@ -1,146 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -import "strconv" - -func (node Aggref) Fingerprint(ctx FingerprintContext, parentNode Node, parentFieldName string) { - ctx.WriteString("Aggref") - - if len(node.Aggargtypes.Items) > 0 { - subCtx := FingerprintSubContext{} - node.Aggargtypes.Fingerprint(&subCtx, node, "Aggargtypes") - - if len(subCtx.parts) > 0 { - ctx.WriteString("aggargtypes") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if node.Aggcollid != 0 { - ctx.WriteString("aggcollid") - ctx.WriteString(strconv.Itoa(int(node.Aggcollid))) - } - - if len(node.Aggdirectargs.Items) > 0 { - subCtx := FingerprintSubContext{} - node.Aggdirectargs.Fingerprint(&subCtx, node, "Aggdirectargs") - - if len(subCtx.parts) > 0 { - ctx.WriteString("aggdirectargs") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if len(node.Aggdistinct.Items) > 0 { - subCtx := FingerprintSubContext{} - node.Aggdistinct.Fingerprint(&subCtx, node, "Aggdistinct") - - if len(subCtx.parts) > 0 { - ctx.WriteString("aggdistinct") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if node.Aggfilter != nil { - subCtx := FingerprintSubContext{} - node.Aggfilter.Fingerprint(&subCtx, node, "Aggfilter") - - if len(subCtx.parts) > 0 { - ctx.WriteString("aggfilter") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if node.Aggfnoid != 0 { - ctx.WriteString("aggfnoid") - ctx.WriteString(strconv.Itoa(int(node.Aggfnoid))) - } - - if node.Aggkind != 0 { - ctx.WriteString("aggkind") - ctx.WriteString(string(node.Aggkind)) - - } - - if node.Agglevelsup != 0 { - ctx.WriteString("agglevelsup") - ctx.WriteString(strconv.Itoa(int(node.Agglevelsup))) - } - - if len(node.Aggorder.Items) > 0 { - subCtx := FingerprintSubContext{} - node.Aggorder.Fingerprint(&subCtx, node, "Aggorder") - - if len(subCtx.parts) > 0 { - ctx.WriteString("aggorder") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if int(node.Aggsplit) != 0 { - ctx.WriteString("aggsplit") - ctx.WriteString(strconv.Itoa(int(node.Aggsplit))) - } - - if node.Aggstar { - ctx.WriteString("aggstar") - ctx.WriteString(strconv.FormatBool(node.Aggstar)) - } - - if node.Aggtranstype != 0 { - ctx.WriteString("aggtranstype") - ctx.WriteString(strconv.Itoa(int(node.Aggtranstype))) - } - - if node.Aggtype != 0 { - ctx.WriteString("aggtype") - ctx.WriteString(strconv.Itoa(int(node.Aggtype))) - } - - if node.Aggvariadic { - ctx.WriteString("aggvariadic") - ctx.WriteString(strconv.FormatBool(node.Aggvariadic)) - } - - if len(node.Args.Items) > 0 { - subCtx := FingerprintSubContext{} - node.Args.Fingerprint(&subCtx, node, "Args") - - if len(subCtx.parts) > 0 { - ctx.WriteString("args") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if node.Inputcollid != 0 { - ctx.WriteString("inputcollid") - ctx.WriteString(strconv.Itoa(int(node.Inputcollid))) - } - - // Intentionally ignoring node.Location for fingerprinting - - if node.Xpr != nil { - subCtx := FingerprintSubContext{} - node.Xpr.Fingerprint(&subCtx, node, "Xpr") - - if len(subCtx.parts) > 0 { - ctx.WriteString("xpr") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } -} diff --git a/nodes/alias.go b/nodes/alias.go deleted file mode 100644 index f0b175d8..00000000 --- a/nodes/alias.go +++ /dev/null @@ -1,51 +0,0 @@ -// Auto-generated from postgres/src/include/nodes/primnodes.h - DO NOT EDIT - -package pg_query - -import "encoding/json" - -/* - * Alias - - * specifies an alias for a range variable; the alias might also - * specify renaming of columns within the table. - * - * Note: colnames is a list of Value nodes (always strings). In Alias structs - * associated with RTEs, there may be entries corresponding to dropped - * columns; these are normally empty strings (""). See parsenodes.h for info. - */ -type Alias struct { - Aliasname *string `json:"aliasname"` /* aliased rel name (never qualified) */ - Colnames List `json:"colnames"` /* optional list of column aliases */ -} - -func (node Alias) MarshalJSON() ([]byte, error) { - type AliasMarshalAlias Alias - return json.Marshal(map[string]interface{}{ - "Alias": (*AliasMarshalAlias)(&node), - }) -} - -func (node *Alias) UnmarshalJSON(input []byte) (err error) { - var fields map[string]json.RawMessage - - err = json.Unmarshal(input, &fields) - if err != nil { - return - } - - if fields["aliasname"] != nil { - err = json.Unmarshal(fields["aliasname"], &node.Aliasname) - if err != nil { - return - } - } - - if fields["colnames"] != nil { - node.Colnames.Items, err = UnmarshalNodeArrayJSON(fields["colnames"]) - if err != nil { - return - } - } - - return -} diff --git a/nodes/alias_deparse.go b/nodes/alias_deparse.go deleted file mode 100644 index 509d23b0..00000000 --- a/nodes/alias_deparse.go +++ /dev/null @@ -1,7 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -func (node Alias) Deparse() string { - panic("Not Implemented") -} diff --git a/nodes/alias_fingerprint.go b/nodes/alias_fingerprint.go deleted file mode 100644 index 9aa47beb..00000000 --- a/nodes/alias_fingerprint.go +++ /dev/null @@ -1,7 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -func (node Alias) Fingerprint(ctx FingerprintContext, parentNode Node, parentFieldName string) { - // Intentionally ignoring all fields for fingerprinting -} diff --git a/nodes/alter_collation_stmt.go b/nodes/alter_collation_stmt.go deleted file mode 100644 index e3cd0664..00000000 --- a/nodes/alter_collation_stmt.go +++ /dev/null @@ -1,38 +0,0 @@ -// Auto-generated from postgres/src/include/nodes/parsenodes.h - DO NOT EDIT - -package pg_query - -import "encoding/json" - -/* ---------------------- - * Alter Collation - * ---------------------- - */ -type AlterCollationStmt struct { - Collname List `json:"collname"` -} - -func (node AlterCollationStmt) MarshalJSON() ([]byte, error) { - type AlterCollationStmtMarshalAlias AlterCollationStmt - return json.Marshal(map[string]interface{}{ - "AlterCollationStmt": (*AlterCollationStmtMarshalAlias)(&node), - }) -} - -func (node *AlterCollationStmt) UnmarshalJSON(input []byte) (err error) { - var fields map[string]json.RawMessage - - err = json.Unmarshal(input, &fields) - if err != nil { - return - } - - if fields["collname"] != nil { - node.Collname.Items, err = UnmarshalNodeArrayJSON(fields["collname"]) - if err != nil { - return - } - } - - return -} diff --git a/nodes/alter_collation_stmt_deparse.go b/nodes/alter_collation_stmt_deparse.go deleted file mode 100644 index b0411b12..00000000 --- a/nodes/alter_collation_stmt_deparse.go +++ /dev/null @@ -1,7 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -func (node AlterCollationStmt) Deparse() string { - panic("Not Implemented") -} diff --git a/nodes/alter_collation_stmt_fingerprint.go b/nodes/alter_collation_stmt_fingerprint.go deleted file mode 100644 index 504ccdfd..00000000 --- a/nodes/alter_collation_stmt_fingerprint.go +++ /dev/null @@ -1,19 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -func (node AlterCollationStmt) Fingerprint(ctx FingerprintContext, parentNode Node, parentFieldName string) { - ctx.WriteString("AlterCollationStmt") - - if len(node.Collname.Items) > 0 { - subCtx := FingerprintSubContext{} - node.Collname.Fingerprint(&subCtx, node, "Collname") - - if len(subCtx.parts) > 0 { - ctx.WriteString("collname") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } -} diff --git a/nodes/alter_database_set_stmt.go b/nodes/alter_database_set_stmt.go deleted file mode 100644 index 34397c96..00000000 --- a/nodes/alter_database_set_stmt.go +++ /dev/null @@ -1,51 +0,0 @@ -// Auto-generated from postgres/src/include/nodes/parsenodes.h - DO NOT EDIT - -package pg_query - -import "encoding/json" - -/* ---------------------- - * Alter Database - * ---------------------- - */ -type AlterDatabaseSetStmt struct { - Dbname *string `json:"dbname"` /* database name */ - Setstmt *VariableSetStmt `json:"setstmt"` /* SET or RESET subcommand */ -} - -func (node AlterDatabaseSetStmt) MarshalJSON() ([]byte, error) { - type AlterDatabaseSetStmtMarshalAlias AlterDatabaseSetStmt - return json.Marshal(map[string]interface{}{ - "AlterDatabaseSetStmt": (*AlterDatabaseSetStmtMarshalAlias)(&node), - }) -} - -func (node *AlterDatabaseSetStmt) UnmarshalJSON(input []byte) (err error) { - var fields map[string]json.RawMessage - - err = json.Unmarshal(input, &fields) - if err != nil { - return - } - - if fields["dbname"] != nil { - err = json.Unmarshal(fields["dbname"], &node.Dbname) - if err != nil { - return - } - } - - if fields["setstmt"] != nil { - var nodePtr *Node - nodePtr, err = UnmarshalNodePtrJSON(fields["setstmt"]) - if err != nil { - return - } - if nodePtr != nil && *nodePtr != nil { - val := (*nodePtr).(VariableSetStmt) - node.Setstmt = &val - } - } - - return -} diff --git a/nodes/alter_database_set_stmt_deparse.go b/nodes/alter_database_set_stmt_deparse.go deleted file mode 100644 index 2f65ebef..00000000 --- a/nodes/alter_database_set_stmt_deparse.go +++ /dev/null @@ -1,7 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -func (node AlterDatabaseSetStmt) Deparse() string { - panic("Not Implemented") -} diff --git a/nodes/alter_database_set_stmt_fingerprint.go b/nodes/alter_database_set_stmt_fingerprint.go deleted file mode 100644 index 694949c8..00000000 --- a/nodes/alter_database_set_stmt_fingerprint.go +++ /dev/null @@ -1,24 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -func (node AlterDatabaseSetStmt) Fingerprint(ctx FingerprintContext, parentNode Node, parentFieldName string) { - ctx.WriteString("AlterDatabaseSetStmt") - - if node.Dbname != nil { - ctx.WriteString("dbname") - ctx.WriteString(*node.Dbname) - } - - if node.Setstmt != nil { - subCtx := FingerprintSubContext{} - node.Setstmt.Fingerprint(&subCtx, node, "Setstmt") - - if len(subCtx.parts) > 0 { - ctx.WriteString("setstmt") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } -} diff --git a/nodes/alter_database_stmt.go b/nodes/alter_database_stmt.go deleted file mode 100644 index 4b3348d1..00000000 --- a/nodes/alter_database_stmt.go +++ /dev/null @@ -1,46 +0,0 @@ -// Auto-generated from postgres/src/include/nodes/parsenodes.h - DO NOT EDIT - -package pg_query - -import "encoding/json" - -/* ---------------------- - * Alter Database - * ---------------------- - */ -type AlterDatabaseStmt struct { - Dbname *string `json:"dbname"` /* name of database to alter */ - Options List `json:"options"` /* List of DefElem nodes */ -} - -func (node AlterDatabaseStmt) MarshalJSON() ([]byte, error) { - type AlterDatabaseStmtMarshalAlias AlterDatabaseStmt - return json.Marshal(map[string]interface{}{ - "AlterDatabaseStmt": (*AlterDatabaseStmtMarshalAlias)(&node), - }) -} - -func (node *AlterDatabaseStmt) UnmarshalJSON(input []byte) (err error) { - var fields map[string]json.RawMessage - - err = json.Unmarshal(input, &fields) - if err != nil { - return - } - - if fields["dbname"] != nil { - err = json.Unmarshal(fields["dbname"], &node.Dbname) - if err != nil { - return - } - } - - if fields["options"] != nil { - node.Options.Items, err = UnmarshalNodeArrayJSON(fields["options"]) - if err != nil { - return - } - } - - return -} diff --git a/nodes/alter_database_stmt_deparse.go b/nodes/alter_database_stmt_deparse.go deleted file mode 100644 index e06fe6c9..00000000 --- a/nodes/alter_database_stmt_deparse.go +++ /dev/null @@ -1,7 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -func (node AlterDatabaseStmt) Deparse() string { - panic("Not Implemented") -} diff --git a/nodes/alter_database_stmt_fingerprint.go b/nodes/alter_database_stmt_fingerprint.go deleted file mode 100644 index 69d5b1db..00000000 --- a/nodes/alter_database_stmt_fingerprint.go +++ /dev/null @@ -1,24 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -func (node AlterDatabaseStmt) Fingerprint(ctx FingerprintContext, parentNode Node, parentFieldName string) { - ctx.WriteString("AlterDatabaseStmt") - - if node.Dbname != nil { - ctx.WriteString("dbname") - ctx.WriteString(*node.Dbname) - } - - if len(node.Options.Items) > 0 { - subCtx := FingerprintSubContext{} - node.Options.Fingerprint(&subCtx, node, "Options") - - if len(subCtx.parts) > 0 { - ctx.WriteString("options") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } -} diff --git a/nodes/alter_default_privileges_stmt.go b/nodes/alter_default_privileges_stmt.go deleted file mode 100644 index d47ba9a7..00000000 --- a/nodes/alter_default_privileges_stmt.go +++ /dev/null @@ -1,51 +0,0 @@ -// Auto-generated from postgres/src/include/nodes/parsenodes.h - DO NOT EDIT - -package pg_query - -import "encoding/json" - -/* ---------------------- - * Alter Default Privileges Statement - * ---------------------- - */ -type AlterDefaultPrivilegesStmt struct { - Options List `json:"options"` /* list of DefElem */ - Action *GrantStmt `json:"action"` /* GRANT/REVOKE action (with objects=NIL) */ -} - -func (node AlterDefaultPrivilegesStmt) MarshalJSON() ([]byte, error) { - type AlterDefaultPrivilegesStmtMarshalAlias AlterDefaultPrivilegesStmt - return json.Marshal(map[string]interface{}{ - "AlterDefaultPrivilegesStmt": (*AlterDefaultPrivilegesStmtMarshalAlias)(&node), - }) -} - -func (node *AlterDefaultPrivilegesStmt) UnmarshalJSON(input []byte) (err error) { - var fields map[string]json.RawMessage - - err = json.Unmarshal(input, &fields) - if err != nil { - return - } - - if fields["options"] != nil { - node.Options.Items, err = UnmarshalNodeArrayJSON(fields["options"]) - if err != nil { - return - } - } - - if fields["action"] != nil { - var nodePtr *Node - nodePtr, err = UnmarshalNodePtrJSON(fields["action"]) - if err != nil { - return - } - if nodePtr != nil && *nodePtr != nil { - val := (*nodePtr).(GrantStmt) - node.Action = &val - } - } - - return -} diff --git a/nodes/alter_default_privileges_stmt_deparse.go b/nodes/alter_default_privileges_stmt_deparse.go deleted file mode 100644 index 28c5af71..00000000 --- a/nodes/alter_default_privileges_stmt_deparse.go +++ /dev/null @@ -1,7 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -func (node AlterDefaultPrivilegesStmt) Deparse() string { - panic("Not Implemented") -} diff --git a/nodes/alter_default_privileges_stmt_fingerprint.go b/nodes/alter_default_privileges_stmt_fingerprint.go deleted file mode 100644 index e25c77d6..00000000 --- a/nodes/alter_default_privileges_stmt_fingerprint.go +++ /dev/null @@ -1,31 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -func (node AlterDefaultPrivilegesStmt) Fingerprint(ctx FingerprintContext, parentNode Node, parentFieldName string) { - ctx.WriteString("AlterDefaultPrivilegesStmt") - - if node.Action != nil { - subCtx := FingerprintSubContext{} - node.Action.Fingerprint(&subCtx, node, "Action") - - if len(subCtx.parts) > 0 { - ctx.WriteString("action") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if len(node.Options.Items) > 0 { - subCtx := FingerprintSubContext{} - node.Options.Fingerprint(&subCtx, node, "Options") - - if len(subCtx.parts) > 0 { - ctx.WriteString("options") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } -} diff --git a/nodes/alter_domain_stmt.go b/nodes/alter_domain_stmt.go deleted file mode 100644 index b2dab678..00000000 --- a/nodes/alter_domain_stmt.go +++ /dev/null @@ -1,91 +0,0 @@ -// Auto-generated from postgres/src/include/nodes/parsenodes.h - DO NOT EDIT - -package pg_query - -import "encoding/json" - -/* ---------------------- - * Alter Domain - * - * The fields are used in different ways by the different variants of - * this command. - * ---------------------- - */ -type AlterDomainStmt struct { - Subtype byte `json:"subtype"` /*------------ - * T = alter column default - * N = alter column drop not null - * O = alter column set not null - * C = add constraint - * X = drop constraint - *------------ - */ - - TypeName List `json:"typeName"` /* domain to work on */ - Name *string `json:"name"` /* column or constraint name to act on */ - Def Node `json:"def"` /* definition of default or constraint */ - Behavior DropBehavior `json:"behavior"` /* RESTRICT or CASCADE for DROP cases */ - MissingOk bool `json:"missing_ok"` /* skip error if missing? */ -} - -func (node AlterDomainStmt) MarshalJSON() ([]byte, error) { - type AlterDomainStmtMarshalAlias AlterDomainStmt - return json.Marshal(map[string]interface{}{ - "AlterDomainStmt": (*AlterDomainStmtMarshalAlias)(&node), - }) -} - -func (node *AlterDomainStmt) UnmarshalJSON(input []byte) (err error) { - var fields map[string]json.RawMessage - - err = json.Unmarshal(input, &fields) - if err != nil { - return - } - - if fields["subtype"] != nil { - var strVal string - err = json.Unmarshal(fields["subtype"], &strVal) - node.Subtype = strVal[0] - if err != nil { - return - } - } - - if fields["typeName"] != nil { - node.TypeName.Items, err = UnmarshalNodeArrayJSON(fields["typeName"]) - if err != nil { - return - } - } - - if fields["name"] != nil { - err = json.Unmarshal(fields["name"], &node.Name) - if err != nil { - return - } - } - - if fields["def"] != nil { - node.Def, err = UnmarshalNodeJSON(fields["def"]) - if err != nil { - return - } - } - - if fields["behavior"] != nil { - err = json.Unmarshal(fields["behavior"], &node.Behavior) - if err != nil { - return - } - } - - if fields["missing_ok"] != nil { - err = json.Unmarshal(fields["missing_ok"], &node.MissingOk) - if err != nil { - return - } - } - - return -} diff --git a/nodes/alter_domain_stmt_deparse.go b/nodes/alter_domain_stmt_deparse.go deleted file mode 100644 index 5aa20db0..00000000 --- a/nodes/alter_domain_stmt_deparse.go +++ /dev/null @@ -1,7 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -func (node AlterDomainStmt) Deparse() string { - panic("Not Implemented") -} diff --git a/nodes/alter_domain_stmt_fingerprint.go b/nodes/alter_domain_stmt_fingerprint.go deleted file mode 100644 index e2011e2f..00000000 --- a/nodes/alter_domain_stmt_fingerprint.go +++ /dev/null @@ -1,54 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -import "strconv" - -func (node AlterDomainStmt) Fingerprint(ctx FingerprintContext, parentNode Node, parentFieldName string) { - ctx.WriteString("AlterDomainStmt") - - if int(node.Behavior) != 0 { - ctx.WriteString("behavior") - ctx.WriteString(strconv.Itoa(int(node.Behavior))) - } - - if node.Def != nil { - subCtx := FingerprintSubContext{} - node.Def.Fingerprint(&subCtx, node, "Def") - - if len(subCtx.parts) > 0 { - ctx.WriteString("def") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if node.MissingOk { - ctx.WriteString("missing_ok") - ctx.WriteString(strconv.FormatBool(node.MissingOk)) - } - - if node.Name != nil { - ctx.WriteString("name") - ctx.WriteString(*node.Name) - } - - if node.Subtype != 0 { - ctx.WriteString("subtype") - ctx.WriteString(string(node.Subtype)) - - } - - if len(node.TypeName.Items) > 0 { - subCtx := FingerprintSubContext{} - node.TypeName.Fingerprint(&subCtx, node, "TypeName") - - if len(subCtx.parts) > 0 { - ctx.WriteString("typeName") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } -} diff --git a/nodes/alter_enum_stmt.go b/nodes/alter_enum_stmt.go deleted file mode 100644 index 85acb782..00000000 --- a/nodes/alter_enum_stmt.go +++ /dev/null @@ -1,78 +0,0 @@ -// Auto-generated from postgres/src/include/nodes/parsenodes.h - DO NOT EDIT - -package pg_query - -import "encoding/json" - -/* ---------------------- - * Alter Type Statement, enum types - * ---------------------- - */ -type AlterEnumStmt struct { - TypeName List `json:"typeName"` /* qualified name (list of Value strings) */ - OldVal *string `json:"oldVal"` /* old enum value's name, if renaming */ - NewVal *string `json:"newVal"` /* new enum value's name */ - NewValNeighbor *string `json:"newValNeighbor"` /* neighboring enum value, if specified */ - NewValIsAfter bool `json:"newValIsAfter"` /* place new enum value after neighbor? */ - SkipIfNewValExists bool `json:"skipIfNewValExists"` /* no error if new already exists? */ -} - -func (node AlterEnumStmt) MarshalJSON() ([]byte, error) { - type AlterEnumStmtMarshalAlias AlterEnumStmt - return json.Marshal(map[string]interface{}{ - "AlterEnumStmt": (*AlterEnumStmtMarshalAlias)(&node), - }) -} - -func (node *AlterEnumStmt) UnmarshalJSON(input []byte) (err error) { - var fields map[string]json.RawMessage - - err = json.Unmarshal(input, &fields) - if err != nil { - return - } - - if fields["typeName"] != nil { - node.TypeName.Items, err = UnmarshalNodeArrayJSON(fields["typeName"]) - if err != nil { - return - } - } - - if fields["oldVal"] != nil { - err = json.Unmarshal(fields["oldVal"], &node.OldVal) - if err != nil { - return - } - } - - if fields["newVal"] != nil { - err = json.Unmarshal(fields["newVal"], &node.NewVal) - if err != nil { - return - } - } - - if fields["newValNeighbor"] != nil { - err = json.Unmarshal(fields["newValNeighbor"], &node.NewValNeighbor) - if err != nil { - return - } - } - - if fields["newValIsAfter"] != nil { - err = json.Unmarshal(fields["newValIsAfter"], &node.NewValIsAfter) - if err != nil { - return - } - } - - if fields["skipIfNewValExists"] != nil { - err = json.Unmarshal(fields["skipIfNewValExists"], &node.SkipIfNewValExists) - if err != nil { - return - } - } - - return -} diff --git a/nodes/alter_enum_stmt_deparse.go b/nodes/alter_enum_stmt_deparse.go deleted file mode 100644 index 86c2ae02..00000000 --- a/nodes/alter_enum_stmt_deparse.go +++ /dev/null @@ -1,7 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -func (node AlterEnumStmt) Deparse() string { - panic("Not Implemented") -} diff --git a/nodes/alter_enum_stmt_fingerprint.go b/nodes/alter_enum_stmt_fingerprint.go deleted file mode 100644 index 2951063a..00000000 --- a/nodes/alter_enum_stmt_fingerprint.go +++ /dev/null @@ -1,46 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -import "strconv" - -func (node AlterEnumStmt) Fingerprint(ctx FingerprintContext, parentNode Node, parentFieldName string) { - ctx.WriteString("AlterEnumStmt") - - if node.NewVal != nil { - ctx.WriteString("newVal") - ctx.WriteString(*node.NewVal) - } - - if node.NewValIsAfter { - ctx.WriteString("newValIsAfter") - ctx.WriteString(strconv.FormatBool(node.NewValIsAfter)) - } - - if node.NewValNeighbor != nil { - ctx.WriteString("newValNeighbor") - ctx.WriteString(*node.NewValNeighbor) - } - - if node.OldVal != nil { - ctx.WriteString("oldVal") - ctx.WriteString(*node.OldVal) - } - - if node.SkipIfNewValExists { - ctx.WriteString("skipIfNewValExists") - ctx.WriteString(strconv.FormatBool(node.SkipIfNewValExists)) - } - - if len(node.TypeName.Items) > 0 { - subCtx := FingerprintSubContext{} - node.TypeName.Fingerprint(&subCtx, node, "TypeName") - - if len(subCtx.parts) > 0 { - ctx.WriteString("typeName") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } -} diff --git a/nodes/alter_event_trig_stmt.go b/nodes/alter_event_trig_stmt.go deleted file mode 100644 index 80f48960..00000000 --- a/nodes/alter_event_trig_stmt.go +++ /dev/null @@ -1,49 +0,0 @@ -// Auto-generated from postgres/src/include/nodes/parsenodes.h - DO NOT EDIT - -package pg_query - -import "encoding/json" - -/* ---------------------- - * Alter EVENT TRIGGER Statement - * ---------------------- - */ -type AlterEventTrigStmt struct { - Trigname *string `json:"trigname"` /* TRIGGER's name */ - Tgenabled byte `json:"tgenabled"` /* trigger's firing configuration WRT - * session_replication_role */ -} - -func (node AlterEventTrigStmt) MarshalJSON() ([]byte, error) { - type AlterEventTrigStmtMarshalAlias AlterEventTrigStmt - return json.Marshal(map[string]interface{}{ - "AlterEventTrigStmt": (*AlterEventTrigStmtMarshalAlias)(&node), - }) -} - -func (node *AlterEventTrigStmt) UnmarshalJSON(input []byte) (err error) { - var fields map[string]json.RawMessage - - err = json.Unmarshal(input, &fields) - if err != nil { - return - } - - if fields["trigname"] != nil { - err = json.Unmarshal(fields["trigname"], &node.Trigname) - if err != nil { - return - } - } - - if fields["tgenabled"] != nil { - var strVal string - err = json.Unmarshal(fields["tgenabled"], &strVal) - node.Tgenabled = strVal[0] - if err != nil { - return - } - } - - return -} diff --git a/nodes/alter_event_trig_stmt_deparse.go b/nodes/alter_event_trig_stmt_deparse.go deleted file mode 100644 index ee77d7cc..00000000 --- a/nodes/alter_event_trig_stmt_deparse.go +++ /dev/null @@ -1,7 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -func (node AlterEventTrigStmt) Deparse() string { - panic("Not Implemented") -} diff --git a/nodes/alter_event_trig_stmt_fingerprint.go b/nodes/alter_event_trig_stmt_fingerprint.go deleted file mode 100644 index efc5c108..00000000 --- a/nodes/alter_event_trig_stmt_fingerprint.go +++ /dev/null @@ -1,18 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -func (node AlterEventTrigStmt) Fingerprint(ctx FingerprintContext, parentNode Node, parentFieldName string) { - ctx.WriteString("AlterEventTrigStmt") - - if node.Tgenabled != 0 { - ctx.WriteString("tgenabled") - ctx.WriteString(string(node.Tgenabled)) - - } - - if node.Trigname != nil { - ctx.WriteString("trigname") - ctx.WriteString(*node.Trigname) - } -} diff --git a/nodes/alter_extension_contents_stmt.go b/nodes/alter_extension_contents_stmt.go deleted file mode 100644 index 66609fe2..00000000 --- a/nodes/alter_extension_contents_stmt.go +++ /dev/null @@ -1,62 +0,0 @@ -// Auto-generated from postgres/src/include/nodes/parsenodes.h - DO NOT EDIT - -package pg_query - -import "encoding/json" - -/* ---------------------- - * Create/Alter Extension Statements - * ---------------------- - */ -type AlterExtensionContentsStmt struct { - Extname *string `json:"extname"` /* Extension's name */ - Action int `json:"action"` /* +1 = add object, -1 = drop object */ - Objtype ObjectType `json:"objtype"` /* Object's type */ - Object Node `json:"object"` /* Qualified name of the object */ -} - -func (node AlterExtensionContentsStmt) MarshalJSON() ([]byte, error) { - type AlterExtensionContentsStmtMarshalAlias AlterExtensionContentsStmt - return json.Marshal(map[string]interface{}{ - "AlterExtensionContentsStmt": (*AlterExtensionContentsStmtMarshalAlias)(&node), - }) -} - -func (node *AlterExtensionContentsStmt) UnmarshalJSON(input []byte) (err error) { - var fields map[string]json.RawMessage - - err = json.Unmarshal(input, &fields) - if err != nil { - return - } - - if fields["extname"] != nil { - err = json.Unmarshal(fields["extname"], &node.Extname) - if err != nil { - return - } - } - - if fields["action"] != nil { - err = json.Unmarshal(fields["action"], &node.Action) - if err != nil { - return - } - } - - if fields["objtype"] != nil { - err = json.Unmarshal(fields["objtype"], &node.Objtype) - if err != nil { - return - } - } - - if fields["object"] != nil { - node.Object, err = UnmarshalNodeJSON(fields["object"]) - if err != nil { - return - } - } - - return -} diff --git a/nodes/alter_extension_contents_stmt_deparse.go b/nodes/alter_extension_contents_stmt_deparse.go deleted file mode 100644 index a202e267..00000000 --- a/nodes/alter_extension_contents_stmt_deparse.go +++ /dev/null @@ -1,7 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -func (node AlterExtensionContentsStmt) Deparse() string { - panic("Not Implemented") -} diff --git a/nodes/alter_extension_contents_stmt_fingerprint.go b/nodes/alter_extension_contents_stmt_fingerprint.go deleted file mode 100644 index 250c5599..00000000 --- a/nodes/alter_extension_contents_stmt_fingerprint.go +++ /dev/null @@ -1,36 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -import "strconv" - -func (node AlterExtensionContentsStmt) Fingerprint(ctx FingerprintContext, parentNode Node, parentFieldName string) { - ctx.WriteString("AlterExtensionContentsStmt") - - if node.Action != 0 { - ctx.WriteString("action") - ctx.WriteString(strconv.Itoa(int(node.Action))) - } - - if node.Extname != nil { - ctx.WriteString("extname") - ctx.WriteString(*node.Extname) - } - - if node.Object != nil { - subCtx := FingerprintSubContext{} - node.Object.Fingerprint(&subCtx, node, "Object") - - if len(subCtx.parts) > 0 { - ctx.WriteString("object") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if int(node.Objtype) != 0 { - ctx.WriteString("objtype") - ctx.WriteString(strconv.Itoa(int(node.Objtype))) - } -} diff --git a/nodes/alter_extension_stmt.go b/nodes/alter_extension_stmt.go deleted file mode 100644 index 0529f619..00000000 --- a/nodes/alter_extension_stmt.go +++ /dev/null @@ -1,43 +0,0 @@ -// Auto-generated from postgres/src/include/nodes/parsenodes.h - DO NOT EDIT - -package pg_query - -import "encoding/json" - -/* Only used for ALTER EXTENSION UPDATE; later might need an action field */ -type AlterExtensionStmt struct { - Extname *string `json:"extname"` - Options List `json:"options"` /* List of DefElem nodes */ -} - -func (node AlterExtensionStmt) MarshalJSON() ([]byte, error) { - type AlterExtensionStmtMarshalAlias AlterExtensionStmt - return json.Marshal(map[string]interface{}{ - "AlterExtensionStmt": (*AlterExtensionStmtMarshalAlias)(&node), - }) -} - -func (node *AlterExtensionStmt) UnmarshalJSON(input []byte) (err error) { - var fields map[string]json.RawMessage - - err = json.Unmarshal(input, &fields) - if err != nil { - return - } - - if fields["extname"] != nil { - err = json.Unmarshal(fields["extname"], &node.Extname) - if err != nil { - return - } - } - - if fields["options"] != nil { - node.Options.Items, err = UnmarshalNodeArrayJSON(fields["options"]) - if err != nil { - return - } - } - - return -} diff --git a/nodes/alter_extension_stmt_deparse.go b/nodes/alter_extension_stmt_deparse.go deleted file mode 100644 index a7ca1e26..00000000 --- a/nodes/alter_extension_stmt_deparse.go +++ /dev/null @@ -1,7 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -func (node AlterExtensionStmt) Deparse() string { - panic("Not Implemented") -} diff --git a/nodes/alter_extension_stmt_fingerprint.go b/nodes/alter_extension_stmt_fingerprint.go deleted file mode 100644 index 6cfbab6a..00000000 --- a/nodes/alter_extension_stmt_fingerprint.go +++ /dev/null @@ -1,24 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -func (node AlterExtensionStmt) Fingerprint(ctx FingerprintContext, parentNode Node, parentFieldName string) { - ctx.WriteString("AlterExtensionStmt") - - if node.Extname != nil { - ctx.WriteString("extname") - ctx.WriteString(*node.Extname) - } - - if len(node.Options.Items) > 0 { - subCtx := FingerprintSubContext{} - node.Options.Fingerprint(&subCtx, node, "Options") - - if len(subCtx.parts) > 0 { - ctx.WriteString("options") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } -} diff --git a/nodes/alter_fdw_stmt.go b/nodes/alter_fdw_stmt.go deleted file mode 100644 index 415ebb39..00000000 --- a/nodes/alter_fdw_stmt.go +++ /dev/null @@ -1,54 +0,0 @@ -// Auto-generated from postgres/src/include/nodes/parsenodes.h - DO NOT EDIT - -package pg_query - -import "encoding/json" - -/* ---------------------- - * Create/Alter FOREIGN DATA WRAPPER Statements - * ---------------------- - */ -type AlterFdwStmt struct { - Fdwname *string `json:"fdwname"` /* foreign-data wrapper name */ - FuncOptions List `json:"func_options"` /* HANDLER/VALIDATOR options */ - Options List `json:"options"` /* generic options to FDW */ -} - -func (node AlterFdwStmt) MarshalJSON() ([]byte, error) { - type AlterFdwStmtMarshalAlias AlterFdwStmt - return json.Marshal(map[string]interface{}{ - "AlterFdwStmt": (*AlterFdwStmtMarshalAlias)(&node), - }) -} - -func (node *AlterFdwStmt) UnmarshalJSON(input []byte) (err error) { - var fields map[string]json.RawMessage - - err = json.Unmarshal(input, &fields) - if err != nil { - return - } - - if fields["fdwname"] != nil { - err = json.Unmarshal(fields["fdwname"], &node.Fdwname) - if err != nil { - return - } - } - - if fields["func_options"] != nil { - node.FuncOptions.Items, err = UnmarshalNodeArrayJSON(fields["func_options"]) - if err != nil { - return - } - } - - if fields["options"] != nil { - node.Options.Items, err = UnmarshalNodeArrayJSON(fields["options"]) - if err != nil { - return - } - } - - return -} diff --git a/nodes/alter_fdw_stmt_deparse.go b/nodes/alter_fdw_stmt_deparse.go deleted file mode 100644 index 69246dad..00000000 --- a/nodes/alter_fdw_stmt_deparse.go +++ /dev/null @@ -1,7 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -func (node AlterFdwStmt) Deparse() string { - panic("Not Implemented") -} diff --git a/nodes/alter_fdw_stmt_fingerprint.go b/nodes/alter_fdw_stmt_fingerprint.go deleted file mode 100644 index fc942fa1..00000000 --- a/nodes/alter_fdw_stmt_fingerprint.go +++ /dev/null @@ -1,36 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -func (node AlterFdwStmt) Fingerprint(ctx FingerprintContext, parentNode Node, parentFieldName string) { - ctx.WriteString("AlterFdwStmt") - - if node.Fdwname != nil { - ctx.WriteString("fdwname") - ctx.WriteString(*node.Fdwname) - } - - if len(node.FuncOptions.Items) > 0 { - subCtx := FingerprintSubContext{} - node.FuncOptions.Fingerprint(&subCtx, node, "FuncOptions") - - if len(subCtx.parts) > 0 { - ctx.WriteString("func_options") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if len(node.Options.Items) > 0 { - subCtx := FingerprintSubContext{} - node.Options.Fingerprint(&subCtx, node, "Options") - - if len(subCtx.parts) > 0 { - ctx.WriteString("options") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } -} diff --git a/nodes/alter_foreign_server_stmt.go b/nodes/alter_foreign_server_stmt.go deleted file mode 100644 index 7c724e74..00000000 --- a/nodes/alter_foreign_server_stmt.go +++ /dev/null @@ -1,62 +0,0 @@ -// Auto-generated from postgres/src/include/nodes/parsenodes.h - DO NOT EDIT - -package pg_query - -import "encoding/json" - -/* ---------------------- - * Create/Alter FOREIGN SERVER Statements - * ---------------------- - */ -type AlterForeignServerStmt struct { - Servername *string `json:"servername"` /* server name */ - Version *string `json:"version"` /* optional server version */ - Options List `json:"options"` /* generic options to server */ - HasVersion bool `json:"has_version"` /* version specified */ -} - -func (node AlterForeignServerStmt) MarshalJSON() ([]byte, error) { - type AlterForeignServerStmtMarshalAlias AlterForeignServerStmt - return json.Marshal(map[string]interface{}{ - "AlterForeignServerStmt": (*AlterForeignServerStmtMarshalAlias)(&node), - }) -} - -func (node *AlterForeignServerStmt) UnmarshalJSON(input []byte) (err error) { - var fields map[string]json.RawMessage - - err = json.Unmarshal(input, &fields) - if err != nil { - return - } - - if fields["servername"] != nil { - err = json.Unmarshal(fields["servername"], &node.Servername) - if err != nil { - return - } - } - - if fields["version"] != nil { - err = json.Unmarshal(fields["version"], &node.Version) - if err != nil { - return - } - } - - if fields["options"] != nil { - node.Options.Items, err = UnmarshalNodeArrayJSON(fields["options"]) - if err != nil { - return - } - } - - if fields["has_version"] != nil { - err = json.Unmarshal(fields["has_version"], &node.HasVersion) - if err != nil { - return - } - } - - return -} diff --git a/nodes/alter_foreign_server_stmt_deparse.go b/nodes/alter_foreign_server_stmt_deparse.go deleted file mode 100644 index 9d670623..00000000 --- a/nodes/alter_foreign_server_stmt_deparse.go +++ /dev/null @@ -1,7 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -func (node AlterForeignServerStmt) Deparse() string { - panic("Not Implemented") -} diff --git a/nodes/alter_foreign_server_stmt_fingerprint.go b/nodes/alter_foreign_server_stmt_fingerprint.go deleted file mode 100644 index 6d99939b..00000000 --- a/nodes/alter_foreign_server_stmt_fingerprint.go +++ /dev/null @@ -1,36 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -import "strconv" - -func (node AlterForeignServerStmt) Fingerprint(ctx FingerprintContext, parentNode Node, parentFieldName string) { - ctx.WriteString("AlterForeignServerStmt") - - if node.HasVersion { - ctx.WriteString("has_version") - ctx.WriteString(strconv.FormatBool(node.HasVersion)) - } - - if len(node.Options.Items) > 0 { - subCtx := FingerprintSubContext{} - node.Options.Fingerprint(&subCtx, node, "Options") - - if len(subCtx.parts) > 0 { - ctx.WriteString("options") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if node.Servername != nil { - ctx.WriteString("servername") - ctx.WriteString(*node.Servername) - } - - if node.Version != nil { - ctx.WriteString("version") - ctx.WriteString(*node.Version) - } -} diff --git a/nodes/alter_function_stmt.go b/nodes/alter_function_stmt.go deleted file mode 100644 index d82e360b..00000000 --- a/nodes/alter_function_stmt.go +++ /dev/null @@ -1,51 +0,0 @@ -// Auto-generated from postgres/src/include/nodes/parsenodes.h - DO NOT EDIT - -package pg_query - -import "encoding/json" - -/* ---------------------- - * Create Function Statement - * ---------------------- - */ -type AlterFunctionStmt struct { - Func *ObjectWithArgs `json:"func"` /* name and args of function */ - Actions List `json:"actions"` /* list of DefElem */ -} - -func (node AlterFunctionStmt) MarshalJSON() ([]byte, error) { - type AlterFunctionStmtMarshalAlias AlterFunctionStmt - return json.Marshal(map[string]interface{}{ - "AlterFunctionStmt": (*AlterFunctionStmtMarshalAlias)(&node), - }) -} - -func (node *AlterFunctionStmt) UnmarshalJSON(input []byte) (err error) { - var fields map[string]json.RawMessage - - err = json.Unmarshal(input, &fields) - if err != nil { - return - } - - if fields["func"] != nil { - var nodePtr *Node - nodePtr, err = UnmarshalNodePtrJSON(fields["func"]) - if err != nil { - return - } - if nodePtr != nil && *nodePtr != nil { - val := (*nodePtr).(ObjectWithArgs) - node.Func = &val - } - } - - if fields["actions"] != nil { - node.Actions.Items, err = UnmarshalNodeArrayJSON(fields["actions"]) - if err != nil { - return - } - } - - return -} diff --git a/nodes/alter_function_stmt_deparse.go b/nodes/alter_function_stmt_deparse.go deleted file mode 100644 index b9afb2b6..00000000 --- a/nodes/alter_function_stmt_deparse.go +++ /dev/null @@ -1,7 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -func (node AlterFunctionStmt) Deparse() string { - panic("Not Implemented") -} diff --git a/nodes/alter_function_stmt_fingerprint.go b/nodes/alter_function_stmt_fingerprint.go deleted file mode 100644 index 8f5f9f6c..00000000 --- a/nodes/alter_function_stmt_fingerprint.go +++ /dev/null @@ -1,31 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -func (node AlterFunctionStmt) Fingerprint(ctx FingerprintContext, parentNode Node, parentFieldName string) { - ctx.WriteString("AlterFunctionStmt") - - if len(node.Actions.Items) > 0 { - subCtx := FingerprintSubContext{} - node.Actions.Fingerprint(&subCtx, node, "Actions") - - if len(subCtx.parts) > 0 { - ctx.WriteString("actions") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if node.Func != nil { - subCtx := FingerprintSubContext{} - node.Func.Fingerprint(&subCtx, node, "Func") - - if len(subCtx.parts) > 0 { - ctx.WriteString("func") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } -} diff --git a/nodes/alter_object_depends_stmt.go b/nodes/alter_object_depends_stmt.go deleted file mode 100644 index be33d82b..00000000 --- a/nodes/alter_object_depends_stmt.go +++ /dev/null @@ -1,67 +0,0 @@ -// Auto-generated from postgres/src/include/nodes/parsenodes.h - DO NOT EDIT - -package pg_query - -import "encoding/json" - -/* ---------------------- - * ALTER object DEPENDS ON EXTENSION extname - * ---------------------- - */ -type AlterObjectDependsStmt struct { - ObjectType ObjectType `json:"objectType"` /* OBJECT_FUNCTION, OBJECT_TRIGGER, etc */ - Relation *RangeVar `json:"relation"` /* in case a table is involved */ - Object Node `json:"object"` /* name of the object */ - Extname Node `json:"extname"` /* extension name */ -} - -func (node AlterObjectDependsStmt) MarshalJSON() ([]byte, error) { - type AlterObjectDependsStmtMarshalAlias AlterObjectDependsStmt - return json.Marshal(map[string]interface{}{ - "AlterObjectDependsStmt": (*AlterObjectDependsStmtMarshalAlias)(&node), - }) -} - -func (node *AlterObjectDependsStmt) UnmarshalJSON(input []byte) (err error) { - var fields map[string]json.RawMessage - - err = json.Unmarshal(input, &fields) - if err != nil { - return - } - - if fields["objectType"] != nil { - err = json.Unmarshal(fields["objectType"], &node.ObjectType) - if err != nil { - return - } - } - - if fields["relation"] != nil { - var nodePtr *Node - nodePtr, err = UnmarshalNodePtrJSON(fields["relation"]) - if err != nil { - return - } - if nodePtr != nil && *nodePtr != nil { - val := (*nodePtr).(RangeVar) - node.Relation = &val - } - } - - if fields["object"] != nil { - node.Object, err = UnmarshalNodeJSON(fields["object"]) - if err != nil { - return - } - } - - if fields["extname"] != nil { - node.Extname, err = UnmarshalNodeJSON(fields["extname"]) - if err != nil { - return - } - } - - return -} diff --git a/nodes/alter_object_depends_stmt_deparse.go b/nodes/alter_object_depends_stmt_deparse.go deleted file mode 100644 index 4ae7a9c2..00000000 --- a/nodes/alter_object_depends_stmt_deparse.go +++ /dev/null @@ -1,7 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -func (node AlterObjectDependsStmt) Deparse() string { - panic("Not Implemented") -} diff --git a/nodes/alter_object_depends_stmt_fingerprint.go b/nodes/alter_object_depends_stmt_fingerprint.go deleted file mode 100644 index 16bcd155..00000000 --- a/nodes/alter_object_depends_stmt_fingerprint.go +++ /dev/null @@ -1,50 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -import "strconv" - -func (node AlterObjectDependsStmt) Fingerprint(ctx FingerprintContext, parentNode Node, parentFieldName string) { - ctx.WriteString("AlterObjectDependsStmt") - - if node.Extname != nil { - subCtx := FingerprintSubContext{} - node.Extname.Fingerprint(&subCtx, node, "Extname") - - if len(subCtx.parts) > 0 { - ctx.WriteString("extname") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if node.Object != nil { - subCtx := FingerprintSubContext{} - node.Object.Fingerprint(&subCtx, node, "Object") - - if len(subCtx.parts) > 0 { - ctx.WriteString("object") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if int(node.ObjectType) != 0 { - ctx.WriteString("objectType") - ctx.WriteString(strconv.Itoa(int(node.ObjectType))) - } - - if node.Relation != nil { - subCtx := FingerprintSubContext{} - node.Relation.Fingerprint(&subCtx, node, "Relation") - - if len(subCtx.parts) > 0 { - ctx.WriteString("relation") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } -} diff --git a/nodes/alter_object_schema_stmt.go b/nodes/alter_object_schema_stmt.go deleted file mode 100644 index 7b1358cf..00000000 --- a/nodes/alter_object_schema_stmt.go +++ /dev/null @@ -1,75 +0,0 @@ -// Auto-generated from postgres/src/include/nodes/parsenodes.h - DO NOT EDIT - -package pg_query - -import "encoding/json" - -/* ---------------------- - * ALTER object SET SCHEMA Statement - * ---------------------- - */ -type AlterObjectSchemaStmt struct { - ObjectType ObjectType `json:"objectType"` /* OBJECT_TABLE, OBJECT_TYPE, etc */ - Relation *RangeVar `json:"relation"` /* in case it's a table */ - Object Node `json:"object"` /* in case it's some other object */ - Newschema *string `json:"newschema"` /* the new schema */ - MissingOk bool `json:"missing_ok"` /* skip error if missing? */ -} - -func (node AlterObjectSchemaStmt) MarshalJSON() ([]byte, error) { - type AlterObjectSchemaStmtMarshalAlias AlterObjectSchemaStmt - return json.Marshal(map[string]interface{}{ - "AlterObjectSchemaStmt": (*AlterObjectSchemaStmtMarshalAlias)(&node), - }) -} - -func (node *AlterObjectSchemaStmt) UnmarshalJSON(input []byte) (err error) { - var fields map[string]json.RawMessage - - err = json.Unmarshal(input, &fields) - if err != nil { - return - } - - if fields["objectType"] != nil { - err = json.Unmarshal(fields["objectType"], &node.ObjectType) - if err != nil { - return - } - } - - if fields["relation"] != nil { - var nodePtr *Node - nodePtr, err = UnmarshalNodePtrJSON(fields["relation"]) - if err != nil { - return - } - if nodePtr != nil && *nodePtr != nil { - val := (*nodePtr).(RangeVar) - node.Relation = &val - } - } - - if fields["object"] != nil { - node.Object, err = UnmarshalNodeJSON(fields["object"]) - if err != nil { - return - } - } - - if fields["newschema"] != nil { - err = json.Unmarshal(fields["newschema"], &node.Newschema) - if err != nil { - return - } - } - - if fields["missing_ok"] != nil { - err = json.Unmarshal(fields["missing_ok"], &node.MissingOk) - if err != nil { - return - } - } - - return -} diff --git a/nodes/alter_object_schema_stmt_deparse.go b/nodes/alter_object_schema_stmt_deparse.go deleted file mode 100644 index 5c273462..00000000 --- a/nodes/alter_object_schema_stmt_deparse.go +++ /dev/null @@ -1,7 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -func (node AlterObjectSchemaStmt) Deparse() string { - panic("Not Implemented") -} diff --git a/nodes/alter_object_schema_stmt_fingerprint.go b/nodes/alter_object_schema_stmt_fingerprint.go deleted file mode 100644 index f442d0fa..00000000 --- a/nodes/alter_object_schema_stmt_fingerprint.go +++ /dev/null @@ -1,48 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -import "strconv" - -func (node AlterObjectSchemaStmt) Fingerprint(ctx FingerprintContext, parentNode Node, parentFieldName string) { - ctx.WriteString("AlterObjectSchemaStmt") - - if node.MissingOk { - ctx.WriteString("missing_ok") - ctx.WriteString(strconv.FormatBool(node.MissingOk)) - } - - if node.Newschema != nil { - ctx.WriteString("newschema") - ctx.WriteString(*node.Newschema) - } - - if node.Object != nil { - subCtx := FingerprintSubContext{} - node.Object.Fingerprint(&subCtx, node, "Object") - - if len(subCtx.parts) > 0 { - ctx.WriteString("object") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if int(node.ObjectType) != 0 { - ctx.WriteString("objectType") - ctx.WriteString(strconv.Itoa(int(node.ObjectType))) - } - - if node.Relation != nil { - subCtx := FingerprintSubContext{} - node.Relation.Fingerprint(&subCtx, node, "Relation") - - if len(subCtx.parts) > 0 { - ctx.WriteString("relation") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } -} diff --git a/nodes/alter_op_family_stmt.go b/nodes/alter_op_family_stmt.go deleted file mode 100644 index bb48f4d1..00000000 --- a/nodes/alter_op_family_stmt.go +++ /dev/null @@ -1,62 +0,0 @@ -// Auto-generated from postgres/src/include/nodes/parsenodes.h - DO NOT EDIT - -package pg_query - -import "encoding/json" - -/* ---------------------- - * Alter Operator Family Statement - * ---------------------- - */ -type AlterOpFamilyStmt struct { - Opfamilyname List `json:"opfamilyname"` /* qualified name (list of Value strings) */ - Amname *string `json:"amname"` /* name of index AM opfamily is for */ - IsDrop bool `json:"isDrop"` /* ADD or DROP the items? */ - Items List `json:"items"` /* List of CreateOpClassItem nodes */ -} - -func (node AlterOpFamilyStmt) MarshalJSON() ([]byte, error) { - type AlterOpFamilyStmtMarshalAlias AlterOpFamilyStmt - return json.Marshal(map[string]interface{}{ - "AlterOpFamilyStmt": (*AlterOpFamilyStmtMarshalAlias)(&node), - }) -} - -func (node *AlterOpFamilyStmt) UnmarshalJSON(input []byte) (err error) { - var fields map[string]json.RawMessage - - err = json.Unmarshal(input, &fields) - if err != nil { - return - } - - if fields["opfamilyname"] != nil { - node.Opfamilyname.Items, err = UnmarshalNodeArrayJSON(fields["opfamilyname"]) - if err != nil { - return - } - } - - if fields["amname"] != nil { - err = json.Unmarshal(fields["amname"], &node.Amname) - if err != nil { - return - } - } - - if fields["isDrop"] != nil { - err = json.Unmarshal(fields["isDrop"], &node.IsDrop) - if err != nil { - return - } - } - - if fields["items"] != nil { - node.Items.Items, err = UnmarshalNodeArrayJSON(fields["items"]) - if err != nil { - return - } - } - - return -} diff --git a/nodes/alter_op_family_stmt_deparse.go b/nodes/alter_op_family_stmt_deparse.go deleted file mode 100644 index df57ac85..00000000 --- a/nodes/alter_op_family_stmt_deparse.go +++ /dev/null @@ -1,7 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -func (node AlterOpFamilyStmt) Deparse() string { - panic("Not Implemented") -} diff --git a/nodes/alter_op_family_stmt_fingerprint.go b/nodes/alter_op_family_stmt_fingerprint.go deleted file mode 100644 index dbe44b3a..00000000 --- a/nodes/alter_op_family_stmt_fingerprint.go +++ /dev/null @@ -1,43 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -import "strconv" - -func (node AlterOpFamilyStmt) Fingerprint(ctx FingerprintContext, parentNode Node, parentFieldName string) { - ctx.WriteString("AlterOpFamilyStmt") - - if node.Amname != nil { - ctx.WriteString("amname") - ctx.WriteString(*node.Amname) - } - - if node.IsDrop { - ctx.WriteString("isDrop") - ctx.WriteString(strconv.FormatBool(node.IsDrop)) - } - - if len(node.Items.Items) > 0 { - subCtx := FingerprintSubContext{} - node.Items.Fingerprint(&subCtx, node, "Items") - - if len(subCtx.parts) > 0 { - ctx.WriteString("items") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if len(node.Opfamilyname.Items) > 0 { - subCtx := FingerprintSubContext{} - node.Opfamilyname.Fingerprint(&subCtx, node, "Opfamilyname") - - if len(subCtx.parts) > 0 { - ctx.WriteString("opfamilyname") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } -} diff --git a/nodes/alter_operator_stmt.go b/nodes/alter_operator_stmt.go deleted file mode 100644 index a0c8d9e0..00000000 --- a/nodes/alter_operator_stmt.go +++ /dev/null @@ -1,51 +0,0 @@ -// Auto-generated from postgres/src/include/nodes/parsenodes.h - DO NOT EDIT - -package pg_query - -import "encoding/json" - -/* ---------------------- - * Alter Operator Set Restrict, Join - * ---------------------- - */ -type AlterOperatorStmt struct { - Opername *ObjectWithArgs `json:"opername"` /* operator name and argument types */ - Options List `json:"options"` /* List of DefElem nodes */ -} - -func (node AlterOperatorStmt) MarshalJSON() ([]byte, error) { - type AlterOperatorStmtMarshalAlias AlterOperatorStmt - return json.Marshal(map[string]interface{}{ - "AlterOperatorStmt": (*AlterOperatorStmtMarshalAlias)(&node), - }) -} - -func (node *AlterOperatorStmt) UnmarshalJSON(input []byte) (err error) { - var fields map[string]json.RawMessage - - err = json.Unmarshal(input, &fields) - if err != nil { - return - } - - if fields["opername"] != nil { - var nodePtr *Node - nodePtr, err = UnmarshalNodePtrJSON(fields["opername"]) - if err != nil { - return - } - if nodePtr != nil && *nodePtr != nil { - val := (*nodePtr).(ObjectWithArgs) - node.Opername = &val - } - } - - if fields["options"] != nil { - node.Options.Items, err = UnmarshalNodeArrayJSON(fields["options"]) - if err != nil { - return - } - } - - return -} diff --git a/nodes/alter_operator_stmt_deparse.go b/nodes/alter_operator_stmt_deparse.go deleted file mode 100644 index 51a56882..00000000 --- a/nodes/alter_operator_stmt_deparse.go +++ /dev/null @@ -1,7 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -func (node AlterOperatorStmt) Deparse() string { - panic("Not Implemented") -} diff --git a/nodes/alter_operator_stmt_fingerprint.go b/nodes/alter_operator_stmt_fingerprint.go deleted file mode 100644 index 85e5e70c..00000000 --- a/nodes/alter_operator_stmt_fingerprint.go +++ /dev/null @@ -1,31 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -func (node AlterOperatorStmt) Fingerprint(ctx FingerprintContext, parentNode Node, parentFieldName string) { - ctx.WriteString("AlterOperatorStmt") - - if node.Opername != nil { - subCtx := FingerprintSubContext{} - node.Opername.Fingerprint(&subCtx, node, "Opername") - - if len(subCtx.parts) > 0 { - ctx.WriteString("opername") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if len(node.Options.Items) > 0 { - subCtx := FingerprintSubContext{} - node.Options.Fingerprint(&subCtx, node, "Options") - - if len(subCtx.parts) > 0 { - ctx.WriteString("options") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } -} diff --git a/nodes/alter_owner_stmt.go b/nodes/alter_owner_stmt.go deleted file mode 100644 index 1810de73..00000000 --- a/nodes/alter_owner_stmt.go +++ /dev/null @@ -1,72 +0,0 @@ -// Auto-generated from postgres/src/include/nodes/parsenodes.h - DO NOT EDIT - -package pg_query - -import "encoding/json" - -/* ---------------------- - * Alter Object Owner Statement - * ---------------------- - */ -type AlterOwnerStmt struct { - ObjectType ObjectType `json:"objectType"` /* OBJECT_TABLE, OBJECT_TYPE, etc */ - Relation *RangeVar `json:"relation"` /* in case it's a table */ - Object Node `json:"object"` /* in case it's some other object */ - Newowner *RoleSpec `json:"newowner"` /* the new owner */ -} - -func (node AlterOwnerStmt) MarshalJSON() ([]byte, error) { - type AlterOwnerStmtMarshalAlias AlterOwnerStmt - return json.Marshal(map[string]interface{}{ - "AlterOwnerStmt": (*AlterOwnerStmtMarshalAlias)(&node), - }) -} - -func (node *AlterOwnerStmt) UnmarshalJSON(input []byte) (err error) { - var fields map[string]json.RawMessage - - err = json.Unmarshal(input, &fields) - if err != nil { - return - } - - if fields["objectType"] != nil { - err = json.Unmarshal(fields["objectType"], &node.ObjectType) - if err != nil { - return - } - } - - if fields["relation"] != nil { - var nodePtr *Node - nodePtr, err = UnmarshalNodePtrJSON(fields["relation"]) - if err != nil { - return - } - if nodePtr != nil && *nodePtr != nil { - val := (*nodePtr).(RangeVar) - node.Relation = &val - } - } - - if fields["object"] != nil { - node.Object, err = UnmarshalNodeJSON(fields["object"]) - if err != nil { - return - } - } - - if fields["newowner"] != nil { - var nodePtr *Node - nodePtr, err = UnmarshalNodePtrJSON(fields["newowner"]) - if err != nil { - return - } - if nodePtr != nil && *nodePtr != nil { - val := (*nodePtr).(RoleSpec) - node.Newowner = &val - } - } - - return -} diff --git a/nodes/alter_owner_stmt_deparse.go b/nodes/alter_owner_stmt_deparse.go deleted file mode 100644 index f89ca54d..00000000 --- a/nodes/alter_owner_stmt_deparse.go +++ /dev/null @@ -1,7 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -func (node AlterOwnerStmt) Deparse() string { - panic("Not Implemented") -} diff --git a/nodes/alter_owner_stmt_fingerprint.go b/nodes/alter_owner_stmt_fingerprint.go deleted file mode 100644 index f690a211..00000000 --- a/nodes/alter_owner_stmt_fingerprint.go +++ /dev/null @@ -1,50 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -import "strconv" - -func (node AlterOwnerStmt) Fingerprint(ctx FingerprintContext, parentNode Node, parentFieldName string) { - ctx.WriteString("AlterOwnerStmt") - - if node.Newowner != nil { - subCtx := FingerprintSubContext{} - node.Newowner.Fingerprint(&subCtx, node, "Newowner") - - if len(subCtx.parts) > 0 { - ctx.WriteString("newowner") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if node.Object != nil { - subCtx := FingerprintSubContext{} - node.Object.Fingerprint(&subCtx, node, "Object") - - if len(subCtx.parts) > 0 { - ctx.WriteString("object") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if int(node.ObjectType) != 0 { - ctx.WriteString("objectType") - ctx.WriteString(strconv.Itoa(int(node.ObjectType))) - } - - if node.Relation != nil { - subCtx := FingerprintSubContext{} - node.Relation.Fingerprint(&subCtx, node, "Relation") - - if len(subCtx.parts) > 0 { - ctx.WriteString("relation") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } -} diff --git a/nodes/alter_policy_stmt.go b/nodes/alter_policy_stmt.go deleted file mode 100644 index 06cd3abd..00000000 --- a/nodes/alter_policy_stmt.go +++ /dev/null @@ -1,75 +0,0 @@ -// Auto-generated from postgres/src/include/nodes/parsenodes.h - DO NOT EDIT - -package pg_query - -import "encoding/json" - -/*---------------------- - * Alter POLICY Statement - *---------------------- - */ -type AlterPolicyStmt struct { - PolicyName *string `json:"policy_name"` /* Policy's name */ - Table *RangeVar `json:"table"` /* the table name the policy applies to */ - Roles List `json:"roles"` /* the roles associated with the policy */ - Qual Node `json:"qual"` /* the policy's condition */ - WithCheck Node `json:"with_check"` /* the policy's WITH CHECK condition. */ -} - -func (node AlterPolicyStmt) MarshalJSON() ([]byte, error) { - type AlterPolicyStmtMarshalAlias AlterPolicyStmt - return json.Marshal(map[string]interface{}{ - "AlterPolicyStmt": (*AlterPolicyStmtMarshalAlias)(&node), - }) -} - -func (node *AlterPolicyStmt) UnmarshalJSON(input []byte) (err error) { - var fields map[string]json.RawMessage - - err = json.Unmarshal(input, &fields) - if err != nil { - return - } - - if fields["policy_name"] != nil { - err = json.Unmarshal(fields["policy_name"], &node.PolicyName) - if err != nil { - return - } - } - - if fields["table"] != nil { - var nodePtr *Node - nodePtr, err = UnmarshalNodePtrJSON(fields["table"]) - if err != nil { - return - } - if nodePtr != nil && *nodePtr != nil { - val := (*nodePtr).(RangeVar) - node.Table = &val - } - } - - if fields["roles"] != nil { - node.Roles.Items, err = UnmarshalNodeArrayJSON(fields["roles"]) - if err != nil { - return - } - } - - if fields["qual"] != nil { - node.Qual, err = UnmarshalNodeJSON(fields["qual"]) - if err != nil { - return - } - } - - if fields["with_check"] != nil { - node.WithCheck, err = UnmarshalNodeJSON(fields["with_check"]) - if err != nil { - return - } - } - - return -} diff --git a/nodes/alter_policy_stmt_deparse.go b/nodes/alter_policy_stmt_deparse.go deleted file mode 100644 index bcf11a0c..00000000 --- a/nodes/alter_policy_stmt_deparse.go +++ /dev/null @@ -1,7 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -func (node AlterPolicyStmt) Deparse() string { - panic("Not Implemented") -} diff --git a/nodes/alter_policy_stmt_fingerprint.go b/nodes/alter_policy_stmt_fingerprint.go deleted file mode 100644 index 1d3fcf8e..00000000 --- a/nodes/alter_policy_stmt_fingerprint.go +++ /dev/null @@ -1,60 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -func (node AlterPolicyStmt) Fingerprint(ctx FingerprintContext, parentNode Node, parentFieldName string) { - ctx.WriteString("AlterPolicyStmt") - - if node.PolicyName != nil { - ctx.WriteString("policy_name") - ctx.WriteString(*node.PolicyName) - } - - if node.Qual != nil { - subCtx := FingerprintSubContext{} - node.Qual.Fingerprint(&subCtx, node, "Qual") - - if len(subCtx.parts) > 0 { - ctx.WriteString("qual") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if len(node.Roles.Items) > 0 { - subCtx := FingerprintSubContext{} - node.Roles.Fingerprint(&subCtx, node, "Roles") - - if len(subCtx.parts) > 0 { - ctx.WriteString("roles") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if node.Table != nil { - subCtx := FingerprintSubContext{} - node.Table.Fingerprint(&subCtx, node, "Table") - - if len(subCtx.parts) > 0 { - ctx.WriteString("table") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if node.WithCheck != nil { - subCtx := FingerprintSubContext{} - node.WithCheck.Fingerprint(&subCtx, node, "WithCheck") - - if len(subCtx.parts) > 0 { - ctx.WriteString("with_check") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } -} diff --git a/nodes/alter_publication_stmt.go b/nodes/alter_publication_stmt.go deleted file mode 100644 index 64a5dceb..00000000 --- a/nodes/alter_publication_stmt.go +++ /dev/null @@ -1,70 +0,0 @@ -// Auto-generated from postgres/src/include/nodes/parsenodes.h - DO NOT EDIT - -package pg_query - -import "encoding/json" - -type AlterPublicationStmt struct { - Pubname *string `json:"pubname"` /* Name of of the publication */ - - /* parameters used for ALTER PUBLICATION ... WITH */ - Options List `json:"options"` /* List of DefElem nodes */ - - /* parameters used for ALTER PUBLICATION ... ADD/DROP TABLE */ - Tables List `json:"tables"` /* List of tables to add/drop */ - ForAllTables bool `json:"for_all_tables"` /* Special publication for all tables in db */ - TableAction DefElemAction `json:"tableAction"` /* What action to perform with the tables */ -} - -func (node AlterPublicationStmt) MarshalJSON() ([]byte, error) { - type AlterPublicationStmtMarshalAlias AlterPublicationStmt - return json.Marshal(map[string]interface{}{ - "AlterPublicationStmt": (*AlterPublicationStmtMarshalAlias)(&node), - }) -} - -func (node *AlterPublicationStmt) UnmarshalJSON(input []byte) (err error) { - var fields map[string]json.RawMessage - - err = json.Unmarshal(input, &fields) - if err != nil { - return - } - - if fields["pubname"] != nil { - err = json.Unmarshal(fields["pubname"], &node.Pubname) - if err != nil { - return - } - } - - if fields["options"] != nil { - node.Options.Items, err = UnmarshalNodeArrayJSON(fields["options"]) - if err != nil { - return - } - } - - if fields["tables"] != nil { - node.Tables.Items, err = UnmarshalNodeArrayJSON(fields["tables"]) - if err != nil { - return - } - } - - if fields["for_all_tables"] != nil { - err = json.Unmarshal(fields["for_all_tables"], &node.ForAllTables) - if err != nil { - return - } - } - - if fields["tableAction"] != nil { - err = json.Unmarshal(fields["tableAction"], &node.TableAction) - if err != nil { - return - } - } - - return -} diff --git a/nodes/alter_publication_stmt_deparse.go b/nodes/alter_publication_stmt_deparse.go deleted file mode 100644 index 3591ba2f..00000000 --- a/nodes/alter_publication_stmt_deparse.go +++ /dev/null @@ -1,7 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -func (node AlterPublicationStmt) Deparse() string { - panic("Not Implemented") -} diff --git a/nodes/alter_publication_stmt_fingerprint.go b/nodes/alter_publication_stmt_fingerprint.go deleted file mode 100644 index 8d9a4895..00000000 --- a/nodes/alter_publication_stmt_fingerprint.go +++ /dev/null @@ -1,48 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -import "strconv" - -func (node AlterPublicationStmt) Fingerprint(ctx FingerprintContext, parentNode Node, parentFieldName string) { - ctx.WriteString("AlterPublicationStmt") - - if node.ForAllTables { - ctx.WriteString("for_all_tables") - ctx.WriteString(strconv.FormatBool(node.ForAllTables)) - } - - if len(node.Options.Items) > 0 { - subCtx := FingerprintSubContext{} - node.Options.Fingerprint(&subCtx, node, "Options") - - if len(subCtx.parts) > 0 { - ctx.WriteString("options") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if node.Pubname != nil { - ctx.WriteString("pubname") - ctx.WriteString(*node.Pubname) - } - - if int(node.TableAction) != 0 { - ctx.WriteString("tableAction") - ctx.WriteString(strconv.Itoa(int(node.TableAction))) - } - - if len(node.Tables.Items) > 0 { - subCtx := FingerprintSubContext{} - node.Tables.Fingerprint(&subCtx, node, "Tables") - - if len(subCtx.parts) > 0 { - ctx.WriteString("tables") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } -} diff --git a/nodes/alter_role_set_stmt.go b/nodes/alter_role_set_stmt.go deleted file mode 100644 index 2439df9b..00000000 --- a/nodes/alter_role_set_stmt.go +++ /dev/null @@ -1,69 +0,0 @@ -// Auto-generated from postgres/src/include/nodes/parsenodes.h - DO NOT EDIT - -package pg_query - -import "encoding/json" - -/* ---------------------- - * Create/Alter/Drop Role Statements - * - * Note: these node types are also used for the backwards-compatible - * Create/Alter/Drop User/Group statements. In the ALTER and DROP cases - * there's really no need to distinguish what the original spelling was, - * but for CREATE we mark the type because the defaults vary. - * ---------------------- - */ -type AlterRoleSetStmt struct { - Role *RoleSpec `json:"role"` /* role */ - Database *string `json:"database"` /* database name, or NULL */ - Setstmt *VariableSetStmt `json:"setstmt"` /* SET or RESET subcommand */ -} - -func (node AlterRoleSetStmt) MarshalJSON() ([]byte, error) { - type AlterRoleSetStmtMarshalAlias AlterRoleSetStmt - return json.Marshal(map[string]interface{}{ - "AlterRoleSetStmt": (*AlterRoleSetStmtMarshalAlias)(&node), - }) -} - -func (node *AlterRoleSetStmt) UnmarshalJSON(input []byte) (err error) { - var fields map[string]json.RawMessage - - err = json.Unmarshal(input, &fields) - if err != nil { - return - } - - if fields["role"] != nil { - var nodePtr *Node - nodePtr, err = UnmarshalNodePtrJSON(fields["role"]) - if err != nil { - return - } - if nodePtr != nil && *nodePtr != nil { - val := (*nodePtr).(RoleSpec) - node.Role = &val - } - } - - if fields["database"] != nil { - err = json.Unmarshal(fields["database"], &node.Database) - if err != nil { - return - } - } - - if fields["setstmt"] != nil { - var nodePtr *Node - nodePtr, err = UnmarshalNodePtrJSON(fields["setstmt"]) - if err != nil { - return - } - if nodePtr != nil && *nodePtr != nil { - val := (*nodePtr).(VariableSetStmt) - node.Setstmt = &val - } - } - - return -} diff --git a/nodes/alter_role_set_stmt_deparse.go b/nodes/alter_role_set_stmt_deparse.go deleted file mode 100644 index aa59c03e..00000000 --- a/nodes/alter_role_set_stmt_deparse.go +++ /dev/null @@ -1,7 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -func (node AlterRoleSetStmt) Deparse() string { - panic("Not Implemented") -} diff --git a/nodes/alter_role_set_stmt_fingerprint.go b/nodes/alter_role_set_stmt_fingerprint.go deleted file mode 100644 index b8635937..00000000 --- a/nodes/alter_role_set_stmt_fingerprint.go +++ /dev/null @@ -1,36 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -func (node AlterRoleSetStmt) Fingerprint(ctx FingerprintContext, parentNode Node, parentFieldName string) { - ctx.WriteString("AlterRoleSetStmt") - - if node.Database != nil { - ctx.WriteString("database") - ctx.WriteString(*node.Database) - } - - if node.Role != nil { - subCtx := FingerprintSubContext{} - node.Role.Fingerprint(&subCtx, node, "Role") - - if len(subCtx.parts) > 0 { - ctx.WriteString("role") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if node.Setstmt != nil { - subCtx := FingerprintSubContext{} - node.Setstmt.Fingerprint(&subCtx, node, "Setstmt") - - if len(subCtx.parts) > 0 { - ctx.WriteString("setstmt") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } -} diff --git a/nodes/alter_role_stmt.go b/nodes/alter_role_stmt.go deleted file mode 100644 index 320524c8..00000000 --- a/nodes/alter_role_stmt.go +++ /dev/null @@ -1,64 +0,0 @@ -// Auto-generated from postgres/src/include/nodes/parsenodes.h - DO NOT EDIT - -package pg_query - -import "encoding/json" - -/* ---------------------- - * Create/Alter/Drop Role Statements - * - * Note: these node types are also used for the backwards-compatible - * Create/Alter/Drop User/Group statements. In the ALTER and DROP cases - * there's really no need to distinguish what the original spelling was, - * but for CREATE we mark the type because the defaults vary. - * ---------------------- - */ -type AlterRoleStmt struct { - Role *RoleSpec `json:"role"` /* role */ - Options List `json:"options"` /* List of DefElem nodes */ - Action int `json:"action"` /* +1 = add members, -1 = drop members */ -} - -func (node AlterRoleStmt) MarshalJSON() ([]byte, error) { - type AlterRoleStmtMarshalAlias AlterRoleStmt - return json.Marshal(map[string]interface{}{ - "AlterRoleStmt": (*AlterRoleStmtMarshalAlias)(&node), - }) -} - -func (node *AlterRoleStmt) UnmarshalJSON(input []byte) (err error) { - var fields map[string]json.RawMessage - - err = json.Unmarshal(input, &fields) - if err != nil { - return - } - - if fields["role"] != nil { - var nodePtr *Node - nodePtr, err = UnmarshalNodePtrJSON(fields["role"]) - if err != nil { - return - } - if nodePtr != nil && *nodePtr != nil { - val := (*nodePtr).(RoleSpec) - node.Role = &val - } - } - - if fields["options"] != nil { - node.Options.Items, err = UnmarshalNodeArrayJSON(fields["options"]) - if err != nil { - return - } - } - - if fields["action"] != nil { - err = json.Unmarshal(fields["action"], &node.Action) - if err != nil { - return - } - } - - return -} diff --git a/nodes/alter_role_stmt_deparse.go b/nodes/alter_role_stmt_deparse.go deleted file mode 100644 index 279da06a..00000000 --- a/nodes/alter_role_stmt_deparse.go +++ /dev/null @@ -1,7 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -func (node AlterRoleStmt) Deparse() string { - panic("Not Implemented") -} diff --git a/nodes/alter_role_stmt_fingerprint.go b/nodes/alter_role_stmt_fingerprint.go deleted file mode 100644 index 5f8179cf..00000000 --- a/nodes/alter_role_stmt_fingerprint.go +++ /dev/null @@ -1,38 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -import "strconv" - -func (node AlterRoleStmt) Fingerprint(ctx FingerprintContext, parentNode Node, parentFieldName string) { - ctx.WriteString("AlterRoleStmt") - - if node.Action != 0 { - ctx.WriteString("action") - ctx.WriteString(strconv.Itoa(int(node.Action))) - } - - if len(node.Options.Items) > 0 { - subCtx := FingerprintSubContext{} - node.Options.Fingerprint(&subCtx, node, "Options") - - if len(subCtx.parts) > 0 { - ctx.WriteString("options") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if node.Role != nil { - subCtx := FingerprintSubContext{} - node.Role.Fingerprint(&subCtx, node, "Role") - - if len(subCtx.parts) > 0 { - ctx.WriteString("role") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } -} diff --git a/nodes/alter_seq_stmt.go b/nodes/alter_seq_stmt.go deleted file mode 100644 index ef38928f..00000000 --- a/nodes/alter_seq_stmt.go +++ /dev/null @@ -1,67 +0,0 @@ -// Auto-generated from postgres/src/include/nodes/parsenodes.h - DO NOT EDIT - -package pg_query - -import "encoding/json" - -/* ---------------------- - * {Create|Alter} SEQUENCE Statement - * ---------------------- - */ -type AlterSeqStmt struct { - Sequence *RangeVar `json:"sequence"` /* the sequence to alter */ - Options List `json:"options"` - ForIdentity bool `json:"for_identity"` - MissingOk bool `json:"missing_ok"` /* skip error if a role is missing? */ -} - -func (node AlterSeqStmt) MarshalJSON() ([]byte, error) { - type AlterSeqStmtMarshalAlias AlterSeqStmt - return json.Marshal(map[string]interface{}{ - "AlterSeqStmt": (*AlterSeqStmtMarshalAlias)(&node), - }) -} - -func (node *AlterSeqStmt) UnmarshalJSON(input []byte) (err error) { - var fields map[string]json.RawMessage - - err = json.Unmarshal(input, &fields) - if err != nil { - return - } - - if fields["sequence"] != nil { - var nodePtr *Node - nodePtr, err = UnmarshalNodePtrJSON(fields["sequence"]) - if err != nil { - return - } - if nodePtr != nil && *nodePtr != nil { - val := (*nodePtr).(RangeVar) - node.Sequence = &val - } - } - - if fields["options"] != nil { - node.Options.Items, err = UnmarshalNodeArrayJSON(fields["options"]) - if err != nil { - return - } - } - - if fields["for_identity"] != nil { - err = json.Unmarshal(fields["for_identity"], &node.ForIdentity) - if err != nil { - return - } - } - - if fields["missing_ok"] != nil { - err = json.Unmarshal(fields["missing_ok"], &node.MissingOk) - if err != nil { - return - } - } - - return -} diff --git a/nodes/alter_seq_stmt_deparse.go b/nodes/alter_seq_stmt_deparse.go deleted file mode 100644 index ec311564..00000000 --- a/nodes/alter_seq_stmt_deparse.go +++ /dev/null @@ -1,7 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -func (node AlterSeqStmt) Deparse() string { - panic("Not Implemented") -} diff --git a/nodes/alter_seq_stmt_fingerprint.go b/nodes/alter_seq_stmt_fingerprint.go deleted file mode 100644 index 93568b79..00000000 --- a/nodes/alter_seq_stmt_fingerprint.go +++ /dev/null @@ -1,43 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -import "strconv" - -func (node AlterSeqStmt) Fingerprint(ctx FingerprintContext, parentNode Node, parentFieldName string) { - ctx.WriteString("AlterSeqStmt") - - if node.ForIdentity { - ctx.WriteString("for_identity") - ctx.WriteString(strconv.FormatBool(node.ForIdentity)) - } - - if node.MissingOk { - ctx.WriteString("missing_ok") - ctx.WriteString(strconv.FormatBool(node.MissingOk)) - } - - if len(node.Options.Items) > 0 { - subCtx := FingerprintSubContext{} - node.Options.Fingerprint(&subCtx, node, "Options") - - if len(subCtx.parts) > 0 { - ctx.WriteString("options") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if node.Sequence != nil { - subCtx := FingerprintSubContext{} - node.Sequence.Fingerprint(&subCtx, node, "Sequence") - - if len(subCtx.parts) > 0 { - ctx.WriteString("sequence") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } -} diff --git a/nodes/alter_subscription_stmt.go b/nodes/alter_subscription_stmt.go deleted file mode 100644 index 71eb15fd..00000000 --- a/nodes/alter_subscription_stmt.go +++ /dev/null @@ -1,66 +0,0 @@ -// Auto-generated from postgres/src/include/nodes/parsenodes.h - DO NOT EDIT - -package pg_query - -import "encoding/json" - -type AlterSubscriptionStmt struct { - Kind AlterSubscriptionType `json:"kind"` /* ALTER_SUBSCRIPTION_OPTIONS, etc */ - Subname *string `json:"subname"` /* Name of of the subscription */ - Conninfo *string `json:"conninfo"` /* Connection string to publisher */ - Publication List `json:"publication"` /* One or more publication to subscribe to */ - Options List `json:"options"` /* List of DefElem nodes */ -} - -func (node AlterSubscriptionStmt) MarshalJSON() ([]byte, error) { - type AlterSubscriptionStmtMarshalAlias AlterSubscriptionStmt - return json.Marshal(map[string]interface{}{ - "AlterSubscriptionStmt": (*AlterSubscriptionStmtMarshalAlias)(&node), - }) -} - -func (node *AlterSubscriptionStmt) UnmarshalJSON(input []byte) (err error) { - var fields map[string]json.RawMessage - - err = json.Unmarshal(input, &fields) - if err != nil { - return - } - - if fields["kind"] != nil { - err = json.Unmarshal(fields["kind"], &node.Kind) - if err != nil { - return - } - } - - if fields["subname"] != nil { - err = json.Unmarshal(fields["subname"], &node.Subname) - if err != nil { - return - } - } - - if fields["conninfo"] != nil { - err = json.Unmarshal(fields["conninfo"], &node.Conninfo) - if err != nil { - return - } - } - - if fields["publication"] != nil { - node.Publication.Items, err = UnmarshalNodeArrayJSON(fields["publication"]) - if err != nil { - return - } - } - - if fields["options"] != nil { - node.Options.Items, err = UnmarshalNodeArrayJSON(fields["options"]) - if err != nil { - return - } - } - - return -} diff --git a/nodes/alter_subscription_stmt_deparse.go b/nodes/alter_subscription_stmt_deparse.go deleted file mode 100644 index 386ddef3..00000000 --- a/nodes/alter_subscription_stmt_deparse.go +++ /dev/null @@ -1,7 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -func (node AlterSubscriptionStmt) Deparse() string { - panic("Not Implemented") -} diff --git a/nodes/alter_subscription_stmt_fingerprint.go b/nodes/alter_subscription_stmt_fingerprint.go deleted file mode 100644 index 49066263..00000000 --- a/nodes/alter_subscription_stmt_fingerprint.go +++ /dev/null @@ -1,48 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -import "strconv" - -func (node AlterSubscriptionStmt) Fingerprint(ctx FingerprintContext, parentNode Node, parentFieldName string) { - ctx.WriteString("AlterSubscriptionStmt") - - if node.Conninfo != nil { - ctx.WriteString("conninfo") - ctx.WriteString(*node.Conninfo) - } - - if int(node.Kind) != 0 { - ctx.WriteString("kind") - ctx.WriteString(strconv.Itoa(int(node.Kind))) - } - - if len(node.Options.Items) > 0 { - subCtx := FingerprintSubContext{} - node.Options.Fingerprint(&subCtx, node, "Options") - - if len(subCtx.parts) > 0 { - ctx.WriteString("options") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if len(node.Publication.Items) > 0 { - subCtx := FingerprintSubContext{} - node.Publication.Fingerprint(&subCtx, node, "Publication") - - if len(subCtx.parts) > 0 { - ctx.WriteString("publication") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if node.Subname != nil { - ctx.WriteString("subname") - ctx.WriteString(*node.Subname) - } -} diff --git a/nodes/alter_subscription_type.go b/nodes/alter_subscription_type.go deleted file mode 100644 index 39a17a77..00000000 --- a/nodes/alter_subscription_type.go +++ /dev/null @@ -1,13 +0,0 @@ -// Auto-generated from postgres/src/include/nodes/parsenodes.h - DO NOT EDIT - -package pg_query - -type AlterSubscriptionType uint - -const ( - ALTER_SUBSCRIPTION_OPTIONS AlterSubscriptionType = iota - ALTER_SUBSCRIPTION_CONNECTION - ALTER_SUBSCRIPTION_PUBLICATION - ALTER_SUBSCRIPTION_REFRESH - ALTER_SUBSCRIPTION_ENABLED -) diff --git a/nodes/alter_system_stmt.go b/nodes/alter_system_stmt.go deleted file mode 100644 index d44f88fd..00000000 --- a/nodes/alter_system_stmt.go +++ /dev/null @@ -1,43 +0,0 @@ -// Auto-generated from postgres/src/include/nodes/parsenodes.h - DO NOT EDIT - -package pg_query - -import "encoding/json" - -/* ---------------------- - * Alter System Statement - * ---------------------- - */ -type AlterSystemStmt struct { - Setstmt *VariableSetStmt `json:"setstmt"` /* SET subcommand */ -} - -func (node AlterSystemStmt) MarshalJSON() ([]byte, error) { - type AlterSystemStmtMarshalAlias AlterSystemStmt - return json.Marshal(map[string]interface{}{ - "AlterSystemStmt": (*AlterSystemStmtMarshalAlias)(&node), - }) -} - -func (node *AlterSystemStmt) UnmarshalJSON(input []byte) (err error) { - var fields map[string]json.RawMessage - - err = json.Unmarshal(input, &fields) - if err != nil { - return - } - - if fields["setstmt"] != nil { - var nodePtr *Node - nodePtr, err = UnmarshalNodePtrJSON(fields["setstmt"]) - if err != nil { - return - } - if nodePtr != nil && *nodePtr != nil { - val := (*nodePtr).(VariableSetStmt) - node.Setstmt = &val - } - } - - return -} diff --git a/nodes/alter_system_stmt_deparse.go b/nodes/alter_system_stmt_deparse.go deleted file mode 100644 index 82f6e46c..00000000 --- a/nodes/alter_system_stmt_deparse.go +++ /dev/null @@ -1,7 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -func (node AlterSystemStmt) Deparse() string { - panic("Not Implemented") -} diff --git a/nodes/alter_system_stmt_fingerprint.go b/nodes/alter_system_stmt_fingerprint.go deleted file mode 100644 index ca5b39b2..00000000 --- a/nodes/alter_system_stmt_fingerprint.go +++ /dev/null @@ -1,19 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -func (node AlterSystemStmt) Fingerprint(ctx FingerprintContext, parentNode Node, parentFieldName string) { - ctx.WriteString("AlterSystemStmt") - - if node.Setstmt != nil { - subCtx := FingerprintSubContext{} - node.Setstmt.Fingerprint(&subCtx, node, "Setstmt") - - if len(subCtx.parts) > 0 { - ctx.WriteString("setstmt") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } -} diff --git a/nodes/alter_table_cmd.go b/nodes/alter_table_cmd.go deleted file mode 100644 index 35cd1346..00000000 --- a/nodes/alter_table_cmd.go +++ /dev/null @@ -1,87 +0,0 @@ -// Auto-generated from postgres/src/include/nodes/parsenodes.h - DO NOT EDIT - -package pg_query - -import "encoding/json" - -/* ---------------------- - * Alter Table - * ---------------------- - */ -type AlterTableCmd struct { - Subtype AlterTableType `json:"subtype"` /* Type of table alteration to apply */ - Name *string `json:"name"` /* column, constraint, or trigger to act on, - * or tablespace */ - - Newowner *RoleSpec `json:"newowner"` - Def Node `json:"def"` /* definition of new column, index, - * constraint, or parent table */ - - Behavior DropBehavior `json:"behavior"` /* RESTRICT or CASCADE for DROP cases */ - MissingOk bool `json:"missing_ok"` /* skip error if missing? */ -} - -func (node AlterTableCmd) MarshalJSON() ([]byte, error) { - type AlterTableCmdMarshalAlias AlterTableCmd - return json.Marshal(map[string]interface{}{ - "AlterTableCmd": (*AlterTableCmdMarshalAlias)(&node), - }) -} - -func (node *AlterTableCmd) UnmarshalJSON(input []byte) (err error) { - var fields map[string]json.RawMessage - - err = json.Unmarshal(input, &fields) - if err != nil { - return - } - - if fields["subtype"] != nil { - err = json.Unmarshal(fields["subtype"], &node.Subtype) - if err != nil { - return - } - } - - if fields["name"] != nil { - err = json.Unmarshal(fields["name"], &node.Name) - if err != nil { - return - } - } - - if fields["newowner"] != nil { - var nodePtr *Node - nodePtr, err = UnmarshalNodePtrJSON(fields["newowner"]) - if err != nil { - return - } - if nodePtr != nil && *nodePtr != nil { - val := (*nodePtr).(RoleSpec) - node.Newowner = &val - } - } - - if fields["def"] != nil { - node.Def, err = UnmarshalNodeJSON(fields["def"]) - if err != nil { - return - } - } - - if fields["behavior"] != nil { - err = json.Unmarshal(fields["behavior"], &node.Behavior) - if err != nil { - return - } - } - - if fields["missing_ok"] != nil { - err = json.Unmarshal(fields["missing_ok"], &node.MissingOk) - if err != nil { - return - } - } - - return -} diff --git a/nodes/alter_table_cmd_deparse.go b/nodes/alter_table_cmd_deparse.go deleted file mode 100644 index e913a4ee..00000000 --- a/nodes/alter_table_cmd_deparse.go +++ /dev/null @@ -1,7 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -func (node AlterTableCmd) Deparse() string { - panic("Not Implemented") -} diff --git a/nodes/alter_table_cmd_fingerprint.go b/nodes/alter_table_cmd_fingerprint.go deleted file mode 100644 index 4e47e964..00000000 --- a/nodes/alter_table_cmd_fingerprint.go +++ /dev/null @@ -1,53 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -import "strconv" - -func (node AlterTableCmd) Fingerprint(ctx FingerprintContext, parentNode Node, parentFieldName string) { - ctx.WriteString("AlterTableCmd") - - if int(node.Behavior) != 0 { - ctx.WriteString("behavior") - ctx.WriteString(strconv.Itoa(int(node.Behavior))) - } - - if node.Def != nil { - subCtx := FingerprintSubContext{} - node.Def.Fingerprint(&subCtx, node, "Def") - - if len(subCtx.parts) > 0 { - ctx.WriteString("def") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if node.MissingOk { - ctx.WriteString("missing_ok") - ctx.WriteString(strconv.FormatBool(node.MissingOk)) - } - - if node.Name != nil { - ctx.WriteString("name") - ctx.WriteString(*node.Name) - } - - if node.Newowner != nil { - subCtx := FingerprintSubContext{} - node.Newowner.Fingerprint(&subCtx, node, "Newowner") - - if len(subCtx.parts) > 0 { - ctx.WriteString("newowner") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if int(node.Subtype) != 0 { - ctx.WriteString("subtype") - ctx.WriteString(strconv.Itoa(int(node.Subtype))) - } -} diff --git a/nodes/alter_table_move_all_stmt.go b/nodes/alter_table_move_all_stmt.go deleted file mode 100644 index 80ffda12..00000000 --- a/nodes/alter_table_move_all_stmt.go +++ /dev/null @@ -1,66 +0,0 @@ -// Auto-generated from postgres/src/include/nodes/parsenodes.h - DO NOT EDIT - -package pg_query - -import "encoding/json" - -type AlterTableMoveAllStmt struct { - OrigTablespacename *string `json:"orig_tablespacename"` - Objtype ObjectType `json:"objtype"` /* Object type to move */ - Roles List `json:"roles"` /* List of roles to move objects of */ - NewTablespacename *string `json:"new_tablespacename"` - Nowait bool `json:"nowait"` -} - -func (node AlterTableMoveAllStmt) MarshalJSON() ([]byte, error) { - type AlterTableMoveAllStmtMarshalAlias AlterTableMoveAllStmt - return json.Marshal(map[string]interface{}{ - "AlterTableMoveAllStmt": (*AlterTableMoveAllStmtMarshalAlias)(&node), - }) -} - -func (node *AlterTableMoveAllStmt) UnmarshalJSON(input []byte) (err error) { - var fields map[string]json.RawMessage - - err = json.Unmarshal(input, &fields) - if err != nil { - return - } - - if fields["orig_tablespacename"] != nil { - err = json.Unmarshal(fields["orig_tablespacename"], &node.OrigTablespacename) - if err != nil { - return - } - } - - if fields["objtype"] != nil { - err = json.Unmarshal(fields["objtype"], &node.Objtype) - if err != nil { - return - } - } - - if fields["roles"] != nil { - node.Roles.Items, err = UnmarshalNodeArrayJSON(fields["roles"]) - if err != nil { - return - } - } - - if fields["new_tablespacename"] != nil { - err = json.Unmarshal(fields["new_tablespacename"], &node.NewTablespacename) - if err != nil { - return - } - } - - if fields["nowait"] != nil { - err = json.Unmarshal(fields["nowait"], &node.Nowait) - if err != nil { - return - } - } - - return -} diff --git a/nodes/alter_table_move_all_stmt_deparse.go b/nodes/alter_table_move_all_stmt_deparse.go deleted file mode 100644 index 42e0042e..00000000 --- a/nodes/alter_table_move_all_stmt_deparse.go +++ /dev/null @@ -1,7 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -func (node AlterTableMoveAllStmt) Deparse() string { - panic("Not Implemented") -} diff --git a/nodes/alter_table_move_all_stmt_fingerprint.go b/nodes/alter_table_move_all_stmt_fingerprint.go deleted file mode 100644 index 1f01291e..00000000 --- a/nodes/alter_table_move_all_stmt_fingerprint.go +++ /dev/null @@ -1,41 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -import "strconv" - -func (node AlterTableMoveAllStmt) Fingerprint(ctx FingerprintContext, parentNode Node, parentFieldName string) { - ctx.WriteString("AlterTableMoveAllStmt") - - if node.NewTablespacename != nil { - ctx.WriteString("new_tablespacename") - ctx.WriteString(*node.NewTablespacename) - } - - if node.Nowait { - ctx.WriteString("nowait") - ctx.WriteString(strconv.FormatBool(node.Nowait)) - } - - if int(node.Objtype) != 0 { - ctx.WriteString("objtype") - ctx.WriteString(strconv.Itoa(int(node.Objtype))) - } - - if node.OrigTablespacename != nil { - ctx.WriteString("orig_tablespacename") - ctx.WriteString(*node.OrigTablespacename) - } - - if len(node.Roles.Items) > 0 { - subCtx := FingerprintSubContext{} - node.Roles.Fingerprint(&subCtx, node, "Roles") - - if len(subCtx.parts) > 0 { - ctx.WriteString("roles") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } -} diff --git a/nodes/alter_table_space_options_stmt.go b/nodes/alter_table_space_options_stmt.go deleted file mode 100644 index b30a2907..00000000 --- a/nodes/alter_table_space_options_stmt.go +++ /dev/null @@ -1,50 +0,0 @@ -// Auto-generated from postgres/src/include/nodes/parsenodes.h - DO NOT EDIT - -package pg_query - -import "encoding/json" - -type AlterTableSpaceOptionsStmt struct { - Tablespacename *string `json:"tablespacename"` - Options List `json:"options"` - IsReset bool `json:"isReset"` -} - -func (node AlterTableSpaceOptionsStmt) MarshalJSON() ([]byte, error) { - type AlterTableSpaceOptionsStmtMarshalAlias AlterTableSpaceOptionsStmt - return json.Marshal(map[string]interface{}{ - "AlterTableSpaceOptionsStmt": (*AlterTableSpaceOptionsStmtMarshalAlias)(&node), - }) -} - -func (node *AlterTableSpaceOptionsStmt) UnmarshalJSON(input []byte) (err error) { - var fields map[string]json.RawMessage - - err = json.Unmarshal(input, &fields) - if err != nil { - return - } - - if fields["tablespacename"] != nil { - err = json.Unmarshal(fields["tablespacename"], &node.Tablespacename) - if err != nil { - return - } - } - - if fields["options"] != nil { - node.Options.Items, err = UnmarshalNodeArrayJSON(fields["options"]) - if err != nil { - return - } - } - - if fields["isReset"] != nil { - err = json.Unmarshal(fields["isReset"], &node.IsReset) - if err != nil { - return - } - } - - return -} diff --git a/nodes/alter_table_space_options_stmt_deparse.go b/nodes/alter_table_space_options_stmt_deparse.go deleted file mode 100644 index 80712724..00000000 --- a/nodes/alter_table_space_options_stmt_deparse.go +++ /dev/null @@ -1,7 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -func (node AlterTableSpaceOptionsStmt) Deparse() string { - panic("Not Implemented") -} diff --git a/nodes/alter_table_space_options_stmt_fingerprint.go b/nodes/alter_table_space_options_stmt_fingerprint.go deleted file mode 100644 index aab0badf..00000000 --- a/nodes/alter_table_space_options_stmt_fingerprint.go +++ /dev/null @@ -1,31 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -import "strconv" - -func (node AlterTableSpaceOptionsStmt) Fingerprint(ctx FingerprintContext, parentNode Node, parentFieldName string) { - ctx.WriteString("AlterTableSpaceOptionsStmt") - - if node.IsReset { - ctx.WriteString("isReset") - ctx.WriteString(strconv.FormatBool(node.IsReset)) - } - - if len(node.Options.Items) > 0 { - subCtx := FingerprintSubContext{} - node.Options.Fingerprint(&subCtx, node, "Options") - - if len(subCtx.parts) > 0 { - ctx.WriteString("options") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if node.Tablespacename != nil { - ctx.WriteString("tablespacename") - ctx.WriteString(*node.Tablespacename) - } -} diff --git a/nodes/alter_table_stmt.go b/nodes/alter_table_stmt.go deleted file mode 100644 index 3ec92299..00000000 --- a/nodes/alter_table_stmt.go +++ /dev/null @@ -1,67 +0,0 @@ -// Auto-generated from postgres/src/include/nodes/parsenodes.h - DO NOT EDIT - -package pg_query - -import "encoding/json" - -/* ---------------------- - * Alter Table - * ---------------------- - */ -type AlterTableStmt struct { - Relation *RangeVar `json:"relation"` /* table to work on */ - Cmds List `json:"cmds"` /* list of subcommands */ - Relkind ObjectType `json:"relkind"` /* type of object */ - MissingOk bool `json:"missing_ok"` /* skip error if table missing */ -} - -func (node AlterTableStmt) MarshalJSON() ([]byte, error) { - type AlterTableStmtMarshalAlias AlterTableStmt - return json.Marshal(map[string]interface{}{ - "AlterTableStmt": (*AlterTableStmtMarshalAlias)(&node), - }) -} - -func (node *AlterTableStmt) UnmarshalJSON(input []byte) (err error) { - var fields map[string]json.RawMessage - - err = json.Unmarshal(input, &fields) - if err != nil { - return - } - - if fields["relation"] != nil { - var nodePtr *Node - nodePtr, err = UnmarshalNodePtrJSON(fields["relation"]) - if err != nil { - return - } - if nodePtr != nil && *nodePtr != nil { - val := (*nodePtr).(RangeVar) - node.Relation = &val - } - } - - if fields["cmds"] != nil { - node.Cmds.Items, err = UnmarshalNodeArrayJSON(fields["cmds"]) - if err != nil { - return - } - } - - if fields["relkind"] != nil { - err = json.Unmarshal(fields["relkind"], &node.Relkind) - if err != nil { - return - } - } - - if fields["missing_ok"] != nil { - err = json.Unmarshal(fields["missing_ok"], &node.MissingOk) - if err != nil { - return - } - } - - return -} diff --git a/nodes/alter_table_stmt_deparse.go b/nodes/alter_table_stmt_deparse.go deleted file mode 100644 index 4a29937b..00000000 --- a/nodes/alter_table_stmt_deparse.go +++ /dev/null @@ -1,7 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -func (node AlterTableStmt) Deparse() string { - panic("Not Implemented") -} diff --git a/nodes/alter_table_stmt_fingerprint.go b/nodes/alter_table_stmt_fingerprint.go deleted file mode 100644 index ace96002..00000000 --- a/nodes/alter_table_stmt_fingerprint.go +++ /dev/null @@ -1,43 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -import "strconv" - -func (node AlterTableStmt) Fingerprint(ctx FingerprintContext, parentNode Node, parentFieldName string) { - ctx.WriteString("AlterTableStmt") - - if len(node.Cmds.Items) > 0 { - subCtx := FingerprintSubContext{} - node.Cmds.Fingerprint(&subCtx, node, "Cmds") - - if len(subCtx.parts) > 0 { - ctx.WriteString("cmds") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if node.MissingOk { - ctx.WriteString("missing_ok") - ctx.WriteString(strconv.FormatBool(node.MissingOk)) - } - - if node.Relation != nil { - subCtx := FingerprintSubContext{} - node.Relation.Fingerprint(&subCtx, node, "Relation") - - if len(subCtx.parts) > 0 { - ctx.WriteString("relation") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if int(node.Relkind) != 0 { - ctx.WriteString("relkind") - ctx.WriteString(strconv.Itoa(int(node.Relkind))) - } -} diff --git a/nodes/alter_table_type.go b/nodes/alter_table_type.go deleted file mode 100644 index 07d4459a..00000000 --- a/nodes/alter_table_type.go +++ /dev/null @@ -1,76 +0,0 @@ -// Auto-generated from postgres/src/include/nodes/parsenodes.h - DO NOT EDIT - -package pg_query - -type AlterTableType uint - -const ( - AT_AddColumn AlterTableType = iota /* add column */ - AT_AddColumnRecurse /* internal to commands/tablecmds.c */ - AT_AddColumnToView /* implicitly via CREATE OR REPLACE VIEW */ - AT_ColumnDefault /* alter column default */ - AT_DropNotNull /* alter column drop not null */ - AT_SetNotNull /* alter column set not null */ - AT_SetStatistics /* alter column set statistics */ - AT_SetOptions /* alter column set ( options ) */ - AT_ResetOptions /* alter column reset ( options ) */ - AT_SetStorage /* alter column set storage */ - AT_DropColumn /* drop column */ - AT_DropColumnRecurse /* internal to commands/tablecmds.c */ - AT_AddIndex /* add index */ - AT_ReAddIndex /* internal to commands/tablecmds.c */ - AT_AddConstraint /* add constraint */ - AT_AddConstraintRecurse /* internal to commands/tablecmds.c */ - AT_ReAddConstraint /* internal to commands/tablecmds.c */ - AT_AlterConstraint /* alter constraint */ - AT_ValidateConstraint /* validate constraint */ - AT_ValidateConstraintRecurse /* internal to commands/tablecmds.c */ - AT_ProcessedConstraint /* pre-processed add constraint (local in - * parser/parse_utilcmd.c) */ - - AT_AddIndexConstraint /* add constraint using existing index */ - AT_DropConstraint /* drop constraint */ - AT_DropConstraintRecurse /* internal to commands/tablecmds.c */ - AT_ReAddComment /* internal to commands/tablecmds.c */ - AT_AlterColumnType /* alter column type */ - AT_AlterColumnGenericOptions /* alter column OPTIONS (...) */ - AT_ChangeOwner /* change owner */ - AT_ClusterOn /* CLUSTER ON */ - AT_DropCluster /* SET WITHOUT CLUSTER */ - AT_SetLogged /* SET LOGGED */ - AT_SetUnLogged /* SET UNLOGGED */ - AT_AddOids /* SET WITH OIDS */ - AT_AddOidsRecurse /* internal to commands/tablecmds.c */ - AT_DropOids /* SET WITHOUT OIDS */ - AT_SetTableSpace /* SET TABLESPACE */ - AT_SetRelOptions /* SET (...) -- AM specific parameters */ - AT_ResetRelOptions /* RESET (...) -- AM specific parameters */ - AT_ReplaceRelOptions /* replace reloption list in its entirety */ - AT_EnableTrig /* ENABLE TRIGGER name */ - AT_EnableAlwaysTrig /* ENABLE ALWAYS TRIGGER name */ - AT_EnableReplicaTrig /* ENABLE REPLICA TRIGGER name */ - AT_DisableTrig /* DISABLE TRIGGER name */ - AT_EnableTrigAll /* ENABLE TRIGGER ALL */ - AT_DisableTrigAll /* DISABLE TRIGGER ALL */ - AT_EnableTrigUser /* ENABLE TRIGGER USER */ - AT_DisableTrigUser /* DISABLE TRIGGER USER */ - AT_EnableRule /* ENABLE RULE name */ - AT_EnableAlwaysRule /* ENABLE ALWAYS RULE name */ - AT_EnableReplicaRule /* ENABLE REPLICA RULE name */ - AT_DisableRule /* DISABLE RULE name */ - AT_AddInherit /* INHERIT parent */ - AT_DropInherit /* NO INHERIT parent */ - AT_AddOf /* OF */ - AT_DropOf /* NOT OF */ - AT_ReplicaIdentity /* REPLICA IDENTITY */ - AT_EnableRowSecurity /* ENABLE ROW SECURITY */ - AT_DisableRowSecurity /* DISABLE ROW SECURITY */ - AT_ForceRowSecurity /* FORCE ROW SECURITY */ - AT_NoForceRowSecurity /* NO FORCE ROW SECURITY */ - AT_GenericOptions /* OPTIONS (...) */ - AT_AttachPartition /* ATTACH PARTITION */ - AT_DetachPartition /* DETACH PARTITION */ - AT_AddIdentity /* ADD IDENTITY */ - AT_SetIdentity /* SET identity column options */ - AT_DropIdentity /* DROP IDENTITY */ -) diff --git a/nodes/alter_ts_config_type.go b/nodes/alter_ts_config_type.go deleted file mode 100644 index ab263f9e..00000000 --- a/nodes/alter_ts_config_type.go +++ /dev/null @@ -1,16 +0,0 @@ -// Auto-generated from postgres/src/include/nodes/parsenodes.h - DO NOT EDIT - -package pg_query - -/* - * TS Configuration stmts: DefineStmt, RenameStmt and DropStmt are default - */ -type AlterTSConfigType uint - -const ( - ALTER_TSCONFIG_ADD_MAPPING AlterTSConfigType = iota - ALTER_TSCONFIG_ALTER_MAPPING_FOR_TOKEN - ALTER_TSCONFIG_REPLACE_DICT - ALTER_TSCONFIG_REPLACE_DICT_FOR_TOKEN - ALTER_TSCONFIG_DROP_MAPPING -) diff --git a/nodes/alter_ts_configuration_stmt.go b/nodes/alter_ts_configuration_stmt.go deleted file mode 100644 index 87c47229..00000000 --- a/nodes/alter_ts_configuration_stmt.go +++ /dev/null @@ -1,87 +0,0 @@ -// Auto-generated from postgres/src/include/nodes/parsenodes.h - DO NOT EDIT - -package pg_query - -import "encoding/json" - -type AlterTSConfigurationStmt struct { - Kind AlterTSConfigType `json:"kind"` /* ALTER_TSCONFIG_ADD_MAPPING, etc */ - Cfgname List `json:"cfgname"` /* qualified name (list of Value strings) */ - - /* - * dicts will be non-NIL if ADD/ALTER MAPPING was specified. If dicts is - * NIL, but tokentype isn't, DROP MAPPING was specified. - */ - Tokentype List `json:"tokentype"` /* list of Value strings */ - Dicts List `json:"dicts"` /* list of list of Value strings */ - Override bool `json:"override"` /* if true - remove old variant */ - Replace bool `json:"replace"` /* if true - replace dictionary by another */ - MissingOk bool `json:"missing_ok"` /* for DROP - skip error if missing? */ -} - -func (node AlterTSConfigurationStmt) MarshalJSON() ([]byte, error) { - type AlterTSConfigurationStmtMarshalAlias AlterTSConfigurationStmt - return json.Marshal(map[string]interface{}{ - "AlterTSConfigurationStmt": (*AlterTSConfigurationStmtMarshalAlias)(&node), - }) -} - -func (node *AlterTSConfigurationStmt) UnmarshalJSON(input []byte) (err error) { - var fields map[string]json.RawMessage - - err = json.Unmarshal(input, &fields) - if err != nil { - return - } - - if fields["kind"] != nil { - err = json.Unmarshal(fields["kind"], &node.Kind) - if err != nil { - return - } - } - - if fields["cfgname"] != nil { - node.Cfgname.Items, err = UnmarshalNodeArrayJSON(fields["cfgname"]) - if err != nil { - return - } - } - - if fields["tokentype"] != nil { - node.Tokentype.Items, err = UnmarshalNodeArrayJSON(fields["tokentype"]) - if err != nil { - return - } - } - - if fields["dicts"] != nil { - node.Dicts.Items, err = UnmarshalNodeArrayJSON(fields["dicts"]) - if err != nil { - return - } - } - - if fields["override"] != nil { - err = json.Unmarshal(fields["override"], &node.Override) - if err != nil { - return - } - } - - if fields["replace"] != nil { - err = json.Unmarshal(fields["replace"], &node.Replace) - if err != nil { - return - } - } - - if fields["missing_ok"] != nil { - err = json.Unmarshal(fields["missing_ok"], &node.MissingOk) - if err != nil { - return - } - } - - return -} diff --git a/nodes/alter_ts_configuration_stmt_deparse.go b/nodes/alter_ts_configuration_stmt_deparse.go deleted file mode 100644 index 5cb08c58..00000000 --- a/nodes/alter_ts_configuration_stmt_deparse.go +++ /dev/null @@ -1,7 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -func (node AlterTSConfigurationStmt) Deparse() string { - panic("Not Implemented") -} diff --git a/nodes/alter_ts_configuration_stmt_fingerprint.go b/nodes/alter_ts_configuration_stmt_fingerprint.go deleted file mode 100644 index b25f8d76..00000000 --- a/nodes/alter_ts_configuration_stmt_fingerprint.go +++ /dev/null @@ -1,65 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -import "strconv" - -func (node AlterTSConfigurationStmt) Fingerprint(ctx FingerprintContext, parentNode Node, parentFieldName string) { - ctx.WriteString("AlterTSConfigurationStmt") - - if len(node.Cfgname.Items) > 0 { - subCtx := FingerprintSubContext{} - node.Cfgname.Fingerprint(&subCtx, node, "Cfgname") - - if len(subCtx.parts) > 0 { - ctx.WriteString("cfgname") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if len(node.Dicts.Items) > 0 { - subCtx := FingerprintSubContext{} - node.Dicts.Fingerprint(&subCtx, node, "Dicts") - - if len(subCtx.parts) > 0 { - ctx.WriteString("dicts") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if int(node.Kind) != 0 { - ctx.WriteString("kind") - ctx.WriteString(strconv.Itoa(int(node.Kind))) - } - - if node.MissingOk { - ctx.WriteString("missing_ok") - ctx.WriteString(strconv.FormatBool(node.MissingOk)) - } - - if node.Override { - ctx.WriteString("override") - ctx.WriteString(strconv.FormatBool(node.Override)) - } - - if node.Replace { - ctx.WriteString("replace") - ctx.WriteString(strconv.FormatBool(node.Replace)) - } - - if len(node.Tokentype.Items) > 0 { - subCtx := FingerprintSubContext{} - node.Tokentype.Fingerprint(&subCtx, node, "Tokentype") - - if len(subCtx.parts) > 0 { - ctx.WriteString("tokentype") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } -} diff --git a/nodes/alter_ts_dictionary_stmt.go b/nodes/alter_ts_dictionary_stmt.go deleted file mode 100644 index c78fc6a2..00000000 --- a/nodes/alter_ts_dictionary_stmt.go +++ /dev/null @@ -1,45 +0,0 @@ -// Auto-generated from postgres/src/include/nodes/parsenodes.h - DO NOT EDIT - -package pg_query - -import "encoding/json" - -/* - * TS Dictionary stmts: DefineStmt, RenameStmt and DropStmt are default - */ -type AlterTSDictionaryStmt struct { - Dictname List `json:"dictname"` /* qualified name (list of Value strings) */ - Options List `json:"options"` /* List of DefElem nodes */ -} - -func (node AlterTSDictionaryStmt) MarshalJSON() ([]byte, error) { - type AlterTSDictionaryStmtMarshalAlias AlterTSDictionaryStmt - return json.Marshal(map[string]interface{}{ - "AlterTSDictionaryStmt": (*AlterTSDictionaryStmtMarshalAlias)(&node), - }) -} - -func (node *AlterTSDictionaryStmt) UnmarshalJSON(input []byte) (err error) { - var fields map[string]json.RawMessage - - err = json.Unmarshal(input, &fields) - if err != nil { - return - } - - if fields["dictname"] != nil { - node.Dictname.Items, err = UnmarshalNodeArrayJSON(fields["dictname"]) - if err != nil { - return - } - } - - if fields["options"] != nil { - node.Options.Items, err = UnmarshalNodeArrayJSON(fields["options"]) - if err != nil { - return - } - } - - return -} diff --git a/nodes/alter_ts_dictionary_stmt_deparse.go b/nodes/alter_ts_dictionary_stmt_deparse.go deleted file mode 100644 index 4c9bc579..00000000 --- a/nodes/alter_ts_dictionary_stmt_deparse.go +++ /dev/null @@ -1,7 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -func (node AlterTSDictionaryStmt) Deparse() string { - panic("Not Implemented") -} diff --git a/nodes/alter_ts_dictionary_stmt_fingerprint.go b/nodes/alter_ts_dictionary_stmt_fingerprint.go deleted file mode 100644 index a16efd1b..00000000 --- a/nodes/alter_ts_dictionary_stmt_fingerprint.go +++ /dev/null @@ -1,31 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -func (node AlterTSDictionaryStmt) Fingerprint(ctx FingerprintContext, parentNode Node, parentFieldName string) { - ctx.WriteString("AlterTSDictionaryStmt") - - if len(node.Dictname.Items) > 0 { - subCtx := FingerprintSubContext{} - node.Dictname.Fingerprint(&subCtx, node, "Dictname") - - if len(subCtx.parts) > 0 { - ctx.WriteString("dictname") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if len(node.Options.Items) > 0 { - subCtx := FingerprintSubContext{} - node.Options.Fingerprint(&subCtx, node, "Options") - - if len(subCtx.parts) > 0 { - ctx.WriteString("options") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } -} diff --git a/nodes/alter_user_mapping_stmt.go b/nodes/alter_user_mapping_stmt.go deleted file mode 100644 index 1412738f..00000000 --- a/nodes/alter_user_mapping_stmt.go +++ /dev/null @@ -1,59 +0,0 @@ -// Auto-generated from postgres/src/include/nodes/parsenodes.h - DO NOT EDIT - -package pg_query - -import "encoding/json" - -/* ---------------------- - * Create/Drop USER MAPPING Statements - * ---------------------- - */ -type AlterUserMappingStmt struct { - User *RoleSpec `json:"user"` /* user role */ - Servername *string `json:"servername"` /* server name */ - Options List `json:"options"` /* generic options to server */ -} - -func (node AlterUserMappingStmt) MarshalJSON() ([]byte, error) { - type AlterUserMappingStmtMarshalAlias AlterUserMappingStmt - return json.Marshal(map[string]interface{}{ - "AlterUserMappingStmt": (*AlterUserMappingStmtMarshalAlias)(&node), - }) -} - -func (node *AlterUserMappingStmt) UnmarshalJSON(input []byte) (err error) { - var fields map[string]json.RawMessage - - err = json.Unmarshal(input, &fields) - if err != nil { - return - } - - if fields["user"] != nil { - var nodePtr *Node - nodePtr, err = UnmarshalNodePtrJSON(fields["user"]) - if err != nil { - return - } - if nodePtr != nil && *nodePtr != nil { - val := (*nodePtr).(RoleSpec) - node.User = &val - } - } - - if fields["servername"] != nil { - err = json.Unmarshal(fields["servername"], &node.Servername) - if err != nil { - return - } - } - - if fields["options"] != nil { - node.Options.Items, err = UnmarshalNodeArrayJSON(fields["options"]) - if err != nil { - return - } - } - - return -} diff --git a/nodes/alter_user_mapping_stmt_deparse.go b/nodes/alter_user_mapping_stmt_deparse.go deleted file mode 100644 index 116a034b..00000000 --- a/nodes/alter_user_mapping_stmt_deparse.go +++ /dev/null @@ -1,7 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -func (node AlterUserMappingStmt) Deparse() string { - panic("Not Implemented") -} diff --git a/nodes/alter_user_mapping_stmt_fingerprint.go b/nodes/alter_user_mapping_stmt_fingerprint.go deleted file mode 100644 index 9fc97e11..00000000 --- a/nodes/alter_user_mapping_stmt_fingerprint.go +++ /dev/null @@ -1,36 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -func (node AlterUserMappingStmt) Fingerprint(ctx FingerprintContext, parentNode Node, parentFieldName string) { - ctx.WriteString("AlterUserMappingStmt") - - if len(node.Options.Items) > 0 { - subCtx := FingerprintSubContext{} - node.Options.Fingerprint(&subCtx, node, "Options") - - if len(subCtx.parts) > 0 { - ctx.WriteString("options") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if node.Servername != nil { - ctx.WriteString("servername") - ctx.WriteString(*node.Servername) - } - - if node.User != nil { - subCtx := FingerprintSubContext{} - node.User.Fingerprint(&subCtx, node, "User") - - if len(subCtx.parts) > 0 { - ctx.WriteString("user") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } -} diff --git a/nodes/alternative_sub_plan.go b/nodes/alternative_sub_plan.go deleted file mode 100644 index c107a7ea..00000000 --- a/nodes/alternative_sub_plan.go +++ /dev/null @@ -1,50 +0,0 @@ -// Auto-generated from postgres/src/include/nodes/primnodes.h - DO NOT EDIT - -package pg_query - -import "encoding/json" - -/* - * AlternativeSubPlan - expression node for a choice among SubPlans - * - * The subplans are given as a List so that the node definition need not - * change if there's ever more than two alternatives. For the moment, - * though, there are always exactly two; and the first one is the fast-start - * plan. - */ -type AlternativeSubPlan struct { - Xpr Node `json:"xpr"` - Subplans List `json:"subplans"` /* SubPlan(s) with equivalent results */ -} - -func (node AlternativeSubPlan) MarshalJSON() ([]byte, error) { - type AlternativeSubPlanMarshalAlias AlternativeSubPlan - return json.Marshal(map[string]interface{}{ - "AlternativeSubPlan": (*AlternativeSubPlanMarshalAlias)(&node), - }) -} - -func (node *AlternativeSubPlan) UnmarshalJSON(input []byte) (err error) { - var fields map[string]json.RawMessage - - err = json.Unmarshal(input, &fields) - if err != nil { - return - } - - if fields["xpr"] != nil { - node.Xpr, err = UnmarshalNodeJSON(fields["xpr"]) - if err != nil { - return - } - } - - if fields["subplans"] != nil { - node.Subplans.Items, err = UnmarshalNodeArrayJSON(fields["subplans"]) - if err != nil { - return - } - } - - return -} diff --git a/nodes/alternative_sub_plan_deparse.go b/nodes/alternative_sub_plan_deparse.go deleted file mode 100644 index 9884c60e..00000000 --- a/nodes/alternative_sub_plan_deparse.go +++ /dev/null @@ -1,7 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -func (node AlternativeSubPlan) Deparse() string { - panic("Not Implemented") -} diff --git a/nodes/alternative_sub_plan_fingerprint.go b/nodes/alternative_sub_plan_fingerprint.go deleted file mode 100644 index cb3eb765..00000000 --- a/nodes/alternative_sub_plan_fingerprint.go +++ /dev/null @@ -1,31 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -func (node AlternativeSubPlan) Fingerprint(ctx FingerprintContext, parentNode Node, parentFieldName string) { - ctx.WriteString("AlternativeSubPlan") - - if len(node.Subplans.Items) > 0 { - subCtx := FingerprintSubContext{} - node.Subplans.Fingerprint(&subCtx, node, "Subplans") - - if len(subCtx.parts) > 0 { - ctx.WriteString("subplans") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if node.Xpr != nil { - subCtx := FingerprintSubContext{} - node.Xpr.Fingerprint(&subCtx, node, "Xpr") - - if len(subCtx.parts) > 0 { - ctx.WriteString("xpr") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } -} diff --git a/nodes/array_coerce_expr.go b/nodes/array_coerce_expr.go deleted file mode 100644 index 0539ced9..00000000 --- a/nodes/array_coerce_expr.go +++ /dev/null @@ -1,109 +0,0 @@ -// Auto-generated from postgres/src/include/nodes/primnodes.h - DO NOT EDIT - -package pg_query - -import "encoding/json" - -/* ---------------- - * ArrayCoerceExpr - * - * ArrayCoerceExpr represents a type coercion from one array type to another, - * which is implemented by applying the indicated element-type coercion - * function to each element of the source array. If elemfuncid is InvalidOid - * then the element types are binary-compatible, but the coercion still - * requires some effort (we have to fix the element type ID stored in the - * array header). - * ---------------- - */ -type ArrayCoerceExpr struct { - Xpr Node `json:"xpr"` - Arg Node `json:"arg"` /* input expression (yields an array) */ - Elemfuncid Oid `json:"elemfuncid"` /* OID of element coercion function, or 0 */ - Resulttype Oid `json:"resulttype"` /* output type of coercion (an array type) */ - Resulttypmod int32 `json:"resulttypmod"` /* output typmod (also element typmod) */ - Resultcollid Oid `json:"resultcollid"` /* OID of collation, or InvalidOid if none */ - IsExplicit bool `json:"isExplicit"` /* conversion semantics flag to pass to func */ - Coerceformat CoercionForm `json:"coerceformat"` /* how to display this node */ - Location int `json:"location"` /* token location, or -1 if unknown */ -} - -func (node ArrayCoerceExpr) MarshalJSON() ([]byte, error) { - type ArrayCoerceExprMarshalAlias ArrayCoerceExpr - return json.Marshal(map[string]interface{}{ - "ArrayCoerceExpr": (*ArrayCoerceExprMarshalAlias)(&node), - }) -} - -func (node *ArrayCoerceExpr) UnmarshalJSON(input []byte) (err error) { - var fields map[string]json.RawMessage - - err = json.Unmarshal(input, &fields) - if err != nil { - return - } - - if fields["xpr"] != nil { - node.Xpr, err = UnmarshalNodeJSON(fields["xpr"]) - if err != nil { - return - } - } - - if fields["arg"] != nil { - node.Arg, err = UnmarshalNodeJSON(fields["arg"]) - if err != nil { - return - } - } - - if fields["elemfuncid"] != nil { - err = json.Unmarshal(fields["elemfuncid"], &node.Elemfuncid) - if err != nil { - return - } - } - - if fields["resulttype"] != nil { - err = json.Unmarshal(fields["resulttype"], &node.Resulttype) - if err != nil { - return - } - } - - if fields["resulttypmod"] != nil { - err = json.Unmarshal(fields["resulttypmod"], &node.Resulttypmod) - if err != nil { - return - } - } - - if fields["resultcollid"] != nil { - err = json.Unmarshal(fields["resultcollid"], &node.Resultcollid) - if err != nil { - return - } - } - - if fields["isExplicit"] != nil { - err = json.Unmarshal(fields["isExplicit"], &node.IsExplicit) - if err != nil { - return - } - } - - if fields["coerceformat"] != nil { - err = json.Unmarshal(fields["coerceformat"], &node.Coerceformat) - if err != nil { - return - } - } - - if fields["location"] != nil { - err = json.Unmarshal(fields["location"], &node.Location) - if err != nil { - return - } - } - - return -} diff --git a/nodes/array_coerce_expr_deparse.go b/nodes/array_coerce_expr_deparse.go deleted file mode 100644 index 44277426..00000000 --- a/nodes/array_coerce_expr_deparse.go +++ /dev/null @@ -1,7 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -func (node ArrayCoerceExpr) Deparse() string { - panic("Not Implemented") -} diff --git a/nodes/array_coerce_expr_fingerprint.go b/nodes/array_coerce_expr_fingerprint.go deleted file mode 100644 index 95ae7b15..00000000 --- a/nodes/array_coerce_expr_fingerprint.go +++ /dev/null @@ -1,65 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -import "strconv" - -func (node ArrayCoerceExpr) Fingerprint(ctx FingerprintContext, parentNode Node, parentFieldName string) { - ctx.WriteString("ArrayCoerceExpr") - - if node.Arg != nil { - subCtx := FingerprintSubContext{} - node.Arg.Fingerprint(&subCtx, node, "Arg") - - if len(subCtx.parts) > 0 { - ctx.WriteString("arg") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if int(node.Coerceformat) != 0 { - ctx.WriteString("coerceformat") - ctx.WriteString(strconv.Itoa(int(node.Coerceformat))) - } - - if node.Elemfuncid != 0 { - ctx.WriteString("elemfuncid") - ctx.WriteString(strconv.Itoa(int(node.Elemfuncid))) - } - - if node.IsExplicit { - ctx.WriteString("isExplicit") - ctx.WriteString(strconv.FormatBool(node.IsExplicit)) - } - - // Intentionally ignoring node.Location for fingerprinting - - if node.Resultcollid != 0 { - ctx.WriteString("resultcollid") - ctx.WriteString(strconv.Itoa(int(node.Resultcollid))) - } - - if node.Resulttype != 0 { - ctx.WriteString("resulttype") - ctx.WriteString(strconv.Itoa(int(node.Resulttype))) - } - - if node.Resulttypmod != 0 { - ctx.WriteString("resulttypmod") - ctx.WriteString(strconv.Itoa(int(node.Resulttypmod))) - } - - if node.Xpr != nil { - subCtx := FingerprintSubContext{} - node.Xpr.Fingerprint(&subCtx, node, "Xpr") - - if len(subCtx.parts) > 0 { - ctx.WriteString("xpr") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } -} diff --git a/nodes/array_expr.go b/nodes/array_expr.go deleted file mode 100644 index 2f796ff0..00000000 --- a/nodes/array_expr.go +++ /dev/null @@ -1,90 +0,0 @@ -// Auto-generated from postgres/src/include/nodes/primnodes.h - DO NOT EDIT - -package pg_query - -import "encoding/json" - -/* - * ArrayExpr - an ARRAY[] expression - * - * Note: if multidims is false, the constituent expressions all yield the - * scalar type identified by element_typeid. If multidims is true, the - * constituent expressions all yield arrays of element_typeid (ie, the same - * type as array_typeid); at runtime we must check for compatible subscripts. - */ -type ArrayExpr struct { - Xpr Node `json:"xpr"` - ArrayTypeid Oid `json:"array_typeid"` /* type of expression result */ - ArrayCollid Oid `json:"array_collid"` /* OID of collation, or InvalidOid if none */ - ElementTypeid Oid `json:"element_typeid"` /* common type of array elements */ - Elements List `json:"elements"` /* the array elements or sub-arrays */ - Multidims bool `json:"multidims"` /* true if elements are sub-arrays */ - Location int `json:"location"` /* token location, or -1 if unknown */ -} - -func (node ArrayExpr) MarshalJSON() ([]byte, error) { - type ArrayExprMarshalAlias ArrayExpr - return json.Marshal(map[string]interface{}{ - "ArrayExpr": (*ArrayExprMarshalAlias)(&node), - }) -} - -func (node *ArrayExpr) UnmarshalJSON(input []byte) (err error) { - var fields map[string]json.RawMessage - - err = json.Unmarshal(input, &fields) - if err != nil { - return - } - - if fields["xpr"] != nil { - node.Xpr, err = UnmarshalNodeJSON(fields["xpr"]) - if err != nil { - return - } - } - - if fields["array_typeid"] != nil { - err = json.Unmarshal(fields["array_typeid"], &node.ArrayTypeid) - if err != nil { - return - } - } - - if fields["array_collid"] != nil { - err = json.Unmarshal(fields["array_collid"], &node.ArrayCollid) - if err != nil { - return - } - } - - if fields["element_typeid"] != nil { - err = json.Unmarshal(fields["element_typeid"], &node.ElementTypeid) - if err != nil { - return - } - } - - if fields["elements"] != nil { - node.Elements.Items, err = UnmarshalNodeArrayJSON(fields["elements"]) - if err != nil { - return - } - } - - if fields["multidims"] != nil { - err = json.Unmarshal(fields["multidims"], &node.Multidims) - if err != nil { - return - } - } - - if fields["location"] != nil { - err = json.Unmarshal(fields["location"], &node.Location) - if err != nil { - return - } - } - - return -} diff --git a/nodes/array_expr_deparse.go b/nodes/array_expr_deparse.go deleted file mode 100644 index fb45788e..00000000 --- a/nodes/array_expr_deparse.go +++ /dev/null @@ -1,7 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -func (node ArrayExpr) Deparse() string { - panic("Not Implemented") -} diff --git a/nodes/array_expr_fingerprint.go b/nodes/array_expr_fingerprint.go deleted file mode 100644 index f5220776..00000000 --- a/nodes/array_expr_fingerprint.go +++ /dev/null @@ -1,54 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -import "strconv" - -func (node ArrayExpr) Fingerprint(ctx FingerprintContext, parentNode Node, parentFieldName string) { - ctx.WriteString("ArrayExpr") - - if node.ArrayCollid != 0 { - ctx.WriteString("array_collid") - ctx.WriteString(strconv.Itoa(int(node.ArrayCollid))) - } - - if node.ArrayTypeid != 0 { - ctx.WriteString("array_typeid") - ctx.WriteString(strconv.Itoa(int(node.ArrayTypeid))) - } - - if node.ElementTypeid != 0 { - ctx.WriteString("element_typeid") - ctx.WriteString(strconv.Itoa(int(node.ElementTypeid))) - } - - if len(node.Elements.Items) > 0 { - subCtx := FingerprintSubContext{} - node.Elements.Fingerprint(&subCtx, node, "Elements") - - if len(subCtx.parts) > 0 { - ctx.WriteString("elements") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - // Intentionally ignoring node.Location for fingerprinting - - if node.Multidims { - ctx.WriteString("multidims") - ctx.WriteString(strconv.FormatBool(node.Multidims)) - } - - if node.Xpr != nil { - subCtx := FingerprintSubContext{} - node.Xpr.Fingerprint(&subCtx, node, "Xpr") - - if len(subCtx.parts) > 0 { - ctx.WriteString("xpr") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } -} diff --git a/nodes/array_ref.go b/nodes/array_ref.go deleted file mode 100644 index 26efd77f..00000000 --- a/nodes/array_ref.go +++ /dev/null @@ -1,135 +0,0 @@ -// Auto-generated from postgres/src/include/nodes/primnodes.h - DO NOT EDIT - -package pg_query - -import "encoding/json" - -/* ---------------- - * ArrayRef: describes an array subscripting operation - * - * An ArrayRef can describe fetching a single element from an array, - * fetching a subarray (array slice), storing a single element into - * an array, or storing a slice. The "store" cases work with an - * initial array value and a source value that is inserted into the - * appropriate part of the array; the result of the operation is an - * entire new modified array value. - * - * If reflowerindexpr = NIL, then we are fetching or storing a single array - * element at the subscripts given by refupperindexpr. Otherwise we are - * fetching or storing an array slice, that is a rectangular subarray - * with lower and upper bounds given by the index expressions. - * reflowerindexpr must be the same length as refupperindexpr when it - * is not NIL. - * - * In the slice case, individual expressions in the subscript lists can be - * NULL, meaning "substitute the array's current lower or upper bound". - * - * Note: the result datatype is the element type when fetching a single - * element; but it is the array type when doing subarray fetch or either - * type of store. - * - * Note: for the cases where an array is returned, if refexpr yields a R/W - * expanded array, then the implementation is allowed to modify that object - * in-place and return the same object.) - * ---------------- - */ -type ArrayRef struct { - Xpr Node `json:"xpr"` - Refarraytype Oid `json:"refarraytype"` /* type of the array proper */ - Refelemtype Oid `json:"refelemtype"` /* type of the array elements */ - Reftypmod int32 `json:"reftypmod"` /* typmod of the array (and elements too) */ - Refcollid Oid `json:"refcollid"` /* OID of collation, or InvalidOid if none */ - Refupperindexpr List `json:"refupperindexpr"` /* expressions that evaluate to upper - * array indexes */ - - Reflowerindexpr List `json:"reflowerindexpr"` /* expressions that evaluate to lower - * array indexes, or NIL for single array - * element */ - - Refexpr Node `json:"refexpr"` /* the expression that evaluates to an array - * value */ - - Refassgnexpr Node `json:"refassgnexpr"` /* expression for the source value, or NULL if - * fetch */ -} - -func (node ArrayRef) MarshalJSON() ([]byte, error) { - type ArrayRefMarshalAlias ArrayRef - return json.Marshal(map[string]interface{}{ - "ArrayRef": (*ArrayRefMarshalAlias)(&node), - }) -} - -func (node *ArrayRef) UnmarshalJSON(input []byte) (err error) { - var fields map[string]json.RawMessage - - err = json.Unmarshal(input, &fields) - if err != nil { - return - } - - if fields["xpr"] != nil { - node.Xpr, err = UnmarshalNodeJSON(fields["xpr"]) - if err != nil { - return - } - } - - if fields["refarraytype"] != nil { - err = json.Unmarshal(fields["refarraytype"], &node.Refarraytype) - if err != nil { - return - } - } - - if fields["refelemtype"] != nil { - err = json.Unmarshal(fields["refelemtype"], &node.Refelemtype) - if err != nil { - return - } - } - - if fields["reftypmod"] != nil { - err = json.Unmarshal(fields["reftypmod"], &node.Reftypmod) - if err != nil { - return - } - } - - if fields["refcollid"] != nil { - err = json.Unmarshal(fields["refcollid"], &node.Refcollid) - if err != nil { - return - } - } - - if fields["refupperindexpr"] != nil { - node.Refupperindexpr.Items, err = UnmarshalNodeArrayJSON(fields["refupperindexpr"]) - if err != nil { - return - } - } - - if fields["reflowerindexpr"] != nil { - node.Reflowerindexpr.Items, err = UnmarshalNodeArrayJSON(fields["reflowerindexpr"]) - if err != nil { - return - } - } - - if fields["refexpr"] != nil { - node.Refexpr, err = UnmarshalNodeJSON(fields["refexpr"]) - if err != nil { - return - } - } - - if fields["refassgnexpr"] != nil { - node.Refassgnexpr, err = UnmarshalNodeJSON(fields["refassgnexpr"]) - if err != nil { - return - } - } - - return -} diff --git a/nodes/array_ref_deparse.go b/nodes/array_ref_deparse.go deleted file mode 100644 index 40b83420..00000000 --- a/nodes/array_ref_deparse.go +++ /dev/null @@ -1,7 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -func (node ArrayRef) Deparse() string { - panic("Not Implemented") -} diff --git a/nodes/array_ref_fingerprint.go b/nodes/array_ref_fingerprint.go deleted file mode 100644 index 1e5bee6a..00000000 --- a/nodes/array_ref_fingerprint.go +++ /dev/null @@ -1,89 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -import "strconv" - -func (node ArrayRef) Fingerprint(ctx FingerprintContext, parentNode Node, parentFieldName string) { - ctx.WriteString("ArrayRef") - - if node.Refarraytype != 0 { - ctx.WriteString("refarraytype") - ctx.WriteString(strconv.Itoa(int(node.Refarraytype))) - } - - if node.Refassgnexpr != nil { - subCtx := FingerprintSubContext{} - node.Refassgnexpr.Fingerprint(&subCtx, node, "Refassgnexpr") - - if len(subCtx.parts) > 0 { - ctx.WriteString("refassgnexpr") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if node.Refcollid != 0 { - ctx.WriteString("refcollid") - ctx.WriteString(strconv.Itoa(int(node.Refcollid))) - } - - if node.Refelemtype != 0 { - ctx.WriteString("refelemtype") - ctx.WriteString(strconv.Itoa(int(node.Refelemtype))) - } - - if node.Refexpr != nil { - subCtx := FingerprintSubContext{} - node.Refexpr.Fingerprint(&subCtx, node, "Refexpr") - - if len(subCtx.parts) > 0 { - ctx.WriteString("refexpr") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if len(node.Reflowerindexpr.Items) > 0 { - subCtx := FingerprintSubContext{} - node.Reflowerindexpr.Fingerprint(&subCtx, node, "Reflowerindexpr") - - if len(subCtx.parts) > 0 { - ctx.WriteString("reflowerindexpr") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if node.Reftypmod != 0 { - ctx.WriteString("reftypmod") - ctx.WriteString(strconv.Itoa(int(node.Reftypmod))) - } - - if len(node.Refupperindexpr.Items) > 0 { - subCtx := FingerprintSubContext{} - node.Refupperindexpr.Fingerprint(&subCtx, node, "Refupperindexpr") - - if len(subCtx.parts) > 0 { - ctx.WriteString("refupperindexpr") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if node.Xpr != nil { - subCtx := FingerprintSubContext{} - node.Xpr.Fingerprint(&subCtx, node, "Xpr") - - if len(subCtx.parts) > 0 { - ctx.WriteString("xpr") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } -} diff --git a/nodes/bit_string.go b/nodes/bit_string.go deleted file mode 100644 index ff234cbd..00000000 --- a/nodes/bit_string.go +++ /dev/null @@ -1,34 +0,0 @@ -// Auto-generated from postgres/src/include/nodes/value.h - DO NOT EDIT - -package pg_query - -import "encoding/json" - -type BitString struct { - Str string `json:"str"` -} - -func (node BitString) MarshalJSON() ([]byte, error) { - type BitStringMarshalAlias BitString - return json.Marshal(map[string]interface{}{ - "BitString": (*BitStringMarshalAlias)(&node), - }) -} - -func (node *BitString) UnmarshalJSON(input []byte) (err error) { - var fields map[string]json.RawMessage - - err = json.Unmarshal(input, &fields) - if err != nil { - return - } - - if fields["str"] != nil { - err = json.Unmarshal(fields["str"], &node.Str) - if err != nil { - return - } - } - - return -} diff --git a/nodes/bit_string_deparse.go b/nodes/bit_string_deparse.go deleted file mode 100644 index f38f2466..00000000 --- a/nodes/bit_string_deparse.go +++ /dev/null @@ -1,7 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -func (node BitString) Deparse() string { - panic("Not Implemented") -} diff --git a/nodes/bit_string_fingerprint.go b/nodes/bit_string_fingerprint.go deleted file mode 100644 index e19e7114..00000000 --- a/nodes/bit_string_fingerprint.go +++ /dev/null @@ -1,11 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -func (node BitString) Fingerprint(ctx FingerprintContext, parentNode Node, parentFieldName string) { - ctx.WriteString("BitString") - if len(node.Str) > 0 { - ctx.WriteString("str") - ctx.WriteString(node.Str) - } -} diff --git a/nodes/block_id_data.go b/nodes/block_id_data.go deleted file mode 100644 index 41e0f534..00000000 --- a/nodes/block_id_data.go +++ /dev/null @@ -1,58 +0,0 @@ -// Auto-generated from postgres/src/include/storage/block.h - DO NOT EDIT - -package pg_query - -import "encoding/json" - -/* - * BlockId: - * - * this is a storage type for BlockNumber. in other words, this type - * is used for on-disk structures (e.g., in HeapTupleData) whereas - * BlockNumber is the type on which calculations are performed (e.g., - * in access method code). - * - * there doesn't appear to be any reason to have separate types except - * for the fact that BlockIds can be SHORTALIGN'd (and therefore any - * structures that contains them, such as ItemPointerData, can also be - * SHORTALIGN'd). this is an important consideration for reducing the - * space requirements of the line pointer (ItemIdData) array on each - * page and the header of each heap or index tuple, so it doesn't seem - * wise to change this without good reason. - */ -type BlockIdData struct { - BiHi uint16 `json:"bi_hi"` - BiLo uint16 `json:"bi_lo"` -} - -func (node BlockIdData) MarshalJSON() ([]byte, error) { - type BlockIdDataMarshalAlias BlockIdData - return json.Marshal(map[string]interface{}{ - "BlockIdData": (*BlockIdDataMarshalAlias)(&node), - }) -} - -func (node *BlockIdData) UnmarshalJSON(input []byte) (err error) { - var fields map[string]json.RawMessage - - err = json.Unmarshal(input, &fields) - if err != nil { - return - } - - if fields["bi_hi"] != nil { - err = json.Unmarshal(fields["bi_hi"], &node.BiHi) - if err != nil { - return - } - } - - if fields["bi_lo"] != nil { - err = json.Unmarshal(fields["bi_lo"], &node.BiLo) - if err != nil { - return - } - } - - return -} diff --git a/nodes/block_id_data_deparse.go b/nodes/block_id_data_deparse.go deleted file mode 100644 index 6e167b03..00000000 --- a/nodes/block_id_data_deparse.go +++ /dev/null @@ -1,7 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -func (node BlockIdData) Deparse() string { - panic("Not Implemented") -} diff --git a/nodes/block_id_data_fingerprint.go b/nodes/block_id_data_fingerprint.go deleted file mode 100644 index 27c06207..00000000 --- a/nodes/block_id_data_fingerprint.go +++ /dev/null @@ -1,19 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -import "strconv" - -func (node BlockIdData) Fingerprint(ctx FingerprintContext, parentNode Node, parentFieldName string) { - ctx.WriteString("BlockIdData") - - if node.BiHi != 0 { - ctx.WriteString("bi_hi") - ctx.WriteString(strconv.Itoa(int(node.BiHi))) - } - - if node.BiLo != 0 { - ctx.WriteString("bi_lo") - ctx.WriteString(strconv.Itoa(int(node.BiLo))) - } -} diff --git a/nodes/bool_expr.go b/nodes/bool_expr.go deleted file mode 100644 index 7622f689..00000000 --- a/nodes/bool_expr.go +++ /dev/null @@ -1,58 +0,0 @@ -// Auto-generated from postgres/src/include/nodes/primnodes.h - DO NOT EDIT - -package pg_query - -import "encoding/json" - -type BoolExpr struct { - Xpr Node `json:"xpr"` - Boolop BoolExprType `json:"boolop"` - Args List `json:"args"` /* arguments to this expression */ - Location int `json:"location"` /* token location, or -1 if unknown */ -} - -func (node BoolExpr) MarshalJSON() ([]byte, error) { - type BoolExprMarshalAlias BoolExpr - return json.Marshal(map[string]interface{}{ - "BoolExpr": (*BoolExprMarshalAlias)(&node), - }) -} - -func (node *BoolExpr) UnmarshalJSON(input []byte) (err error) { - var fields map[string]json.RawMessage - - err = json.Unmarshal(input, &fields) - if err != nil { - return - } - - if fields["xpr"] != nil { - node.Xpr, err = UnmarshalNodeJSON(fields["xpr"]) - if err != nil { - return - } - } - - if fields["boolop"] != nil { - err = json.Unmarshal(fields["boolop"], &node.Boolop) - if err != nil { - return - } - } - - if fields["args"] != nil { - node.Args.Items, err = UnmarshalNodeArrayJSON(fields["args"]) - if err != nil { - return - } - } - - if fields["location"] != nil { - err = json.Unmarshal(fields["location"], &node.Location) - if err != nil { - return - } - } - - return -} diff --git a/nodes/bool_expr_deparse.go b/nodes/bool_expr_deparse.go deleted file mode 100644 index 9a36a5de..00000000 --- a/nodes/bool_expr_deparse.go +++ /dev/null @@ -1,7 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -func (node BoolExpr) Deparse() string { - panic("Not Implemented") -} diff --git a/nodes/bool_expr_fingerprint.go b/nodes/bool_expr_fingerprint.go deleted file mode 100644 index 531f9f8d..00000000 --- a/nodes/bool_expr_fingerprint.go +++ /dev/null @@ -1,40 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -import "strconv" - -func (node BoolExpr) Fingerprint(ctx FingerprintContext, parentNode Node, parentFieldName string) { - ctx.WriteString("BoolExpr") - - if len(node.Args.Items) > 0 { - subCtx := FingerprintSubContext{} - node.Args.Fingerprint(&subCtx, node, "Args") - - if len(subCtx.parts) > 0 { - ctx.WriteString("args") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if int(node.Boolop) != 0 { - ctx.WriteString("boolop") - ctx.WriteString(strconv.Itoa(int(node.Boolop))) - } - - // Intentionally ignoring node.Location for fingerprinting - - if node.Xpr != nil { - subCtx := FingerprintSubContext{} - node.Xpr.Fingerprint(&subCtx, node, "Xpr") - - if len(subCtx.parts) > 0 { - ctx.WriteString("xpr") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } -} diff --git a/nodes/bool_expr_type.go b/nodes/bool_expr_type.go deleted file mode 100644 index 44d8dc2a..00000000 --- a/nodes/bool_expr_type.go +++ /dev/null @@ -1,17 +0,0 @@ -// Auto-generated from postgres/src/include/nodes/primnodes.h - DO NOT EDIT - -package pg_query - -/* - * BoolExpr - expression node for the basic Boolean operators AND, OR, NOT - * - * Notice the arguments are given as a List. For NOT, of course the list - * must always have exactly one element. For AND and OR, there can be two - * or more arguments. - */ -type BoolExprType uint - -const ( - AND_EXPR BoolExprType = iota - OR_EXPR -) diff --git a/nodes/bool_test_type.go b/nodes/bool_test_type.go deleted file mode 100644 index 0dd7d99f..00000000 --- a/nodes/bool_test_type.go +++ /dev/null @@ -1,18 +0,0 @@ -// Auto-generated from postgres/src/include/nodes/primnodes.h - DO NOT EDIT - -package pg_query - -/* - * BooleanTest - * - * BooleanTest represents the operation of determining whether a boolean - * is TRUE, FALSE, or UNKNOWN (ie, NULL). All six meaningful combinations - * are supported. Note that a NULL input does *not* cause a NULL result. - * The appropriate test is performed and returned as a boolean Datum. - */ -type BoolTestType uint - -const ( - IS_TRUE BoolTestType = iota - IS_NOT_TRUE -) diff --git a/nodes/boolean_test_deparse.go b/nodes/boolean_test_deparse.go deleted file mode 100644 index e7aa480d..00000000 --- a/nodes/boolean_test_deparse.go +++ /dev/null @@ -1,7 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -func (node BooleanTest) Deparse() string { - panic("Not Implemented") -} diff --git a/nodes/boolean_test_expr.go b/nodes/boolean_test_expr.go deleted file mode 100644 index 0c1d9d01..00000000 --- a/nodes/boolean_test_expr.go +++ /dev/null @@ -1,66 +0,0 @@ -// Auto-generated from postgres/src/include/nodes/primnodes.h - DO NOT EDIT - -package pg_query - -import "encoding/json" - -/* - * BooleanTest - * - * BooleanTest represents the operation of determining whether a boolean - * is TRUE, FALSE, or UNKNOWN (ie, NULL). All six meaningful combinations - * are supported. Note that a NULL input does *not* cause a NULL result. - * The appropriate test is performed and returned as a boolean Datum. - */ -type BooleanTest struct { - Xpr Node `json:"xpr"` - Arg Node `json:"arg"` /* input expression */ - Booltesttype BoolTestType `json:"booltesttype"` /* test type */ - Location int `json:"location"` /* token location, or -1 if unknown */ -} - -func (node BooleanTest) MarshalJSON() ([]byte, error) { - type BooleanTestMarshalAlias BooleanTest - return json.Marshal(map[string]interface{}{ - "BooleanTest": (*BooleanTestMarshalAlias)(&node), - }) -} - -func (node *BooleanTest) UnmarshalJSON(input []byte) (err error) { - var fields map[string]json.RawMessage - - err = json.Unmarshal(input, &fields) - if err != nil { - return - } - - if fields["xpr"] != nil { - node.Xpr, err = UnmarshalNodeJSON(fields["xpr"]) - if err != nil { - return - } - } - - if fields["arg"] != nil { - node.Arg, err = UnmarshalNodeJSON(fields["arg"]) - if err != nil { - return - } - } - - if fields["booltesttype"] != nil { - err = json.Unmarshal(fields["booltesttype"], &node.Booltesttype) - if err != nil { - return - } - } - - if fields["location"] != nil { - err = json.Unmarshal(fields["location"], &node.Location) - if err != nil { - return - } - } - - return -} diff --git a/nodes/boolean_test_fingerprint.go b/nodes/boolean_test_fingerprint.go deleted file mode 100644 index d3984718..00000000 --- a/nodes/boolean_test_fingerprint.go +++ /dev/null @@ -1,40 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -import "strconv" - -func (node BooleanTest) Fingerprint(ctx FingerprintContext, parentNode Node, parentFieldName string) { - ctx.WriteString("BooleanTest") - - if node.Arg != nil { - subCtx := FingerprintSubContext{} - node.Arg.Fingerprint(&subCtx, node, "Arg") - - if len(subCtx.parts) > 0 { - ctx.WriteString("arg") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if int(node.Booltesttype) != 0 { - ctx.WriteString("booltesttype") - ctx.WriteString(strconv.Itoa(int(node.Booltesttype))) - } - - // Intentionally ignoring node.Location for fingerprinting - - if node.Xpr != nil { - subCtx := FingerprintSubContext{} - node.Xpr.Fingerprint(&subCtx, node, "Xpr") - - if len(subCtx.parts) > 0 { - ctx.WriteString("xpr") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } -} diff --git a/nodes/case_expr.go b/nodes/case_expr.go deleted file mode 100644 index 7c42b63c..00000000 --- a/nodes/case_expr.go +++ /dev/null @@ -1,104 +0,0 @@ -// Auto-generated from postgres/src/include/nodes/primnodes.h - DO NOT EDIT - -package pg_query - -import "encoding/json" - -/*---------- - * CaseExpr - a CASE expression - * - * We support two distinct forms of CASE expression: - * CASE WHEN boolexpr THEN expr [ WHEN boolexpr THEN expr ... ] - * CASE testexpr WHEN compexpr THEN expr [ WHEN compexpr THEN expr ... ] - * These are distinguishable by the "arg" field being NULL in the first case - * and the testexpr in the second case. - * - * In the raw grammar output for the second form, the condition expressions - * of the WHEN clauses are just the comparison values. Parse analysis - * converts these to valid boolean expressions of the form - * CaseTestExpr '=' compexpr - * where the CaseTestExpr node is a placeholder that emits the correct - * value at runtime. This structure is used so that the testexpr need be - * evaluated only once. Note that after parse analysis, the condition - * expressions always yield boolean. - * - * Note: we can test whether a CaseExpr has been through parse analysis - * yet by checking whether casetype is InvalidOid or not. - *---------- - */ -type CaseExpr struct { - Xpr Node `json:"xpr"` - Casetype Oid `json:"casetype"` /* type of expression result */ - Casecollid Oid `json:"casecollid"` /* OID of collation, or InvalidOid if none */ - Arg Node `json:"arg"` /* implicit equality comparison argument */ - Args List `json:"args"` /* the arguments (list of WHEN clauses) */ - Defresult Node `json:"defresult"` /* the default result (ELSE clause) */ - Location int `json:"location"` /* token location, or -1 if unknown */ -} - -func (node CaseExpr) MarshalJSON() ([]byte, error) { - type CaseExprMarshalAlias CaseExpr - return json.Marshal(map[string]interface{}{ - "CaseExpr": (*CaseExprMarshalAlias)(&node), - }) -} - -func (node *CaseExpr) UnmarshalJSON(input []byte) (err error) { - var fields map[string]json.RawMessage - - err = json.Unmarshal(input, &fields) - if err != nil { - return - } - - if fields["xpr"] != nil { - node.Xpr, err = UnmarshalNodeJSON(fields["xpr"]) - if err != nil { - return - } - } - - if fields["casetype"] != nil { - err = json.Unmarshal(fields["casetype"], &node.Casetype) - if err != nil { - return - } - } - - if fields["casecollid"] != nil { - err = json.Unmarshal(fields["casecollid"], &node.Casecollid) - if err != nil { - return - } - } - - if fields["arg"] != nil { - node.Arg, err = UnmarshalNodeJSON(fields["arg"]) - if err != nil { - return - } - } - - if fields["args"] != nil { - node.Args.Items, err = UnmarshalNodeArrayJSON(fields["args"]) - if err != nil { - return - } - } - - if fields["defresult"] != nil { - node.Defresult, err = UnmarshalNodeJSON(fields["defresult"]) - if err != nil { - return - } - } - - if fields["location"] != nil { - err = json.Unmarshal(fields["location"], &node.Location) - if err != nil { - return - } - } - - return -} diff --git a/nodes/case_expr_deparse.go b/nodes/case_expr_deparse.go deleted file mode 100644 index dbb78178..00000000 --- a/nodes/case_expr_deparse.go +++ /dev/null @@ -1,7 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -func (node CaseExpr) Deparse() string { - panic("Not Implemented") -} diff --git a/nodes/case_expr_fingerprint.go b/nodes/case_expr_fingerprint.go deleted file mode 100644 index 3691bd7f..00000000 --- a/nodes/case_expr_fingerprint.go +++ /dev/null @@ -1,68 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -import "strconv" - -func (node CaseExpr) Fingerprint(ctx FingerprintContext, parentNode Node, parentFieldName string) { - ctx.WriteString("CaseExpr") - - if node.Arg != nil { - subCtx := FingerprintSubContext{} - node.Arg.Fingerprint(&subCtx, node, "Arg") - - if len(subCtx.parts) > 0 { - ctx.WriteString("arg") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if len(node.Args.Items) > 0 { - subCtx := FingerprintSubContext{} - node.Args.Fingerprint(&subCtx, node, "Args") - - if len(subCtx.parts) > 0 { - ctx.WriteString("args") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if node.Casecollid != 0 { - ctx.WriteString("casecollid") - ctx.WriteString(strconv.Itoa(int(node.Casecollid))) - } - - if node.Casetype != 0 { - ctx.WriteString("casetype") - ctx.WriteString(strconv.Itoa(int(node.Casetype))) - } - - if node.Defresult != nil { - subCtx := FingerprintSubContext{} - node.Defresult.Fingerprint(&subCtx, node, "Defresult") - - if len(subCtx.parts) > 0 { - ctx.WriteString("defresult") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - // Intentionally ignoring node.Location for fingerprinting - - if node.Xpr != nil { - subCtx := FingerprintSubContext{} - node.Xpr.Fingerprint(&subCtx, node, "Xpr") - - if len(subCtx.parts) > 0 { - ctx.WriteString("xpr") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } -} diff --git a/nodes/case_test_expr.go b/nodes/case_test_expr.go deleted file mode 100644 index ecf17532..00000000 --- a/nodes/case_test_expr.go +++ /dev/null @@ -1,66 +0,0 @@ -// Auto-generated from postgres/src/include/nodes/primnodes.h - DO NOT EDIT - -package pg_query - -import "encoding/json" - -/* - * Placeholder node for the test value to be processed by a CASE expression. - * This is effectively like a Param, but can be implemented more simply - * since we need only one replacement value at a time. - * - * We also use this in nested UPDATE expressions. - * See transformAssignmentIndirection(). - */ -type CaseTestExpr struct { - Xpr Node `json:"xpr"` - TypeId Oid `json:"typeId"` /* type for substituted value */ - TypeMod int32 `json:"typeMod"` /* typemod for substituted value */ - Collation Oid `json:"collation"` /* collation for the substituted value */ -} - -func (node CaseTestExpr) MarshalJSON() ([]byte, error) { - type CaseTestExprMarshalAlias CaseTestExpr - return json.Marshal(map[string]interface{}{ - "CaseTestExpr": (*CaseTestExprMarshalAlias)(&node), - }) -} - -func (node *CaseTestExpr) UnmarshalJSON(input []byte) (err error) { - var fields map[string]json.RawMessage - - err = json.Unmarshal(input, &fields) - if err != nil { - return - } - - if fields["xpr"] != nil { - node.Xpr, err = UnmarshalNodeJSON(fields["xpr"]) - if err != nil { - return - } - } - - if fields["typeId"] != nil { - err = json.Unmarshal(fields["typeId"], &node.TypeId) - if err != nil { - return - } - } - - if fields["typeMod"] != nil { - err = json.Unmarshal(fields["typeMod"], &node.TypeMod) - if err != nil { - return - } - } - - if fields["collation"] != nil { - err = json.Unmarshal(fields["collation"], &node.Collation) - if err != nil { - return - } - } - - return -} diff --git a/nodes/case_test_expr_deparse.go b/nodes/case_test_expr_deparse.go deleted file mode 100644 index d460de02..00000000 --- a/nodes/case_test_expr_deparse.go +++ /dev/null @@ -1,7 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -func (node CaseTestExpr) Deparse() string { - panic("Not Implemented") -} diff --git a/nodes/case_test_expr_fingerprint.go b/nodes/case_test_expr_fingerprint.go deleted file mode 100644 index 98e37120..00000000 --- a/nodes/case_test_expr_fingerprint.go +++ /dev/null @@ -1,36 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -import "strconv" - -func (node CaseTestExpr) Fingerprint(ctx FingerprintContext, parentNode Node, parentFieldName string) { - ctx.WriteString("CaseTestExpr") - - if node.Collation != 0 { - ctx.WriteString("collation") - ctx.WriteString(strconv.Itoa(int(node.Collation))) - } - - if node.TypeId != 0 { - ctx.WriteString("typeId") - ctx.WriteString(strconv.Itoa(int(node.TypeId))) - } - - if node.TypeMod != 0 { - ctx.WriteString("typeMod") - ctx.WriteString(strconv.Itoa(int(node.TypeMod))) - } - - if node.Xpr != nil { - subCtx := FingerprintSubContext{} - node.Xpr.Fingerprint(&subCtx, node, "Xpr") - - if len(subCtx.parts) > 0 { - ctx.WriteString("xpr") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } -} diff --git a/nodes/case_when.go b/nodes/case_when.go deleted file mode 100644 index ee61b3fd..00000000 --- a/nodes/case_when.go +++ /dev/null @@ -1,61 +0,0 @@ -// Auto-generated from postgres/src/include/nodes/primnodes.h - DO NOT EDIT - -package pg_query - -import "encoding/json" - -/* - * CaseWhen - one arm of a CASE expression - */ -type CaseWhen struct { - Xpr Node `json:"xpr"` - Expr Node `json:"expr"` /* condition expression */ - Result Node `json:"result"` /* substitution result */ - Location int `json:"location"` /* token location, or -1 if unknown */ -} - -func (node CaseWhen) MarshalJSON() ([]byte, error) { - type CaseWhenMarshalAlias CaseWhen - return json.Marshal(map[string]interface{}{ - "CaseWhen": (*CaseWhenMarshalAlias)(&node), - }) -} - -func (node *CaseWhen) UnmarshalJSON(input []byte) (err error) { - var fields map[string]json.RawMessage - - err = json.Unmarshal(input, &fields) - if err != nil { - return - } - - if fields["xpr"] != nil { - node.Xpr, err = UnmarshalNodeJSON(fields["xpr"]) - if err != nil { - return - } - } - - if fields["expr"] != nil { - node.Expr, err = UnmarshalNodeJSON(fields["expr"]) - if err != nil { - return - } - } - - if fields["result"] != nil { - node.Result, err = UnmarshalNodeJSON(fields["result"]) - if err != nil { - return - } - } - - if fields["location"] != nil { - err = json.Unmarshal(fields["location"], &node.Location) - if err != nil { - return - } - } - - return -} diff --git a/nodes/case_when_deparse.go b/nodes/case_when_deparse.go deleted file mode 100644 index c772a140..00000000 --- a/nodes/case_when_deparse.go +++ /dev/null @@ -1,7 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -func (node CaseWhen) Deparse() string { - panic("Not Implemented") -} diff --git a/nodes/case_when_fingerprint.go b/nodes/case_when_fingerprint.go deleted file mode 100644 index ba02a0fc..00000000 --- a/nodes/case_when_fingerprint.go +++ /dev/null @@ -1,44 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -func (node CaseWhen) Fingerprint(ctx FingerprintContext, parentNode Node, parentFieldName string) { - ctx.WriteString("CaseWhen") - - if node.Expr != nil { - subCtx := FingerprintSubContext{} - node.Expr.Fingerprint(&subCtx, node, "Expr") - - if len(subCtx.parts) > 0 { - ctx.WriteString("expr") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - // Intentionally ignoring node.Location for fingerprinting - - if node.Result != nil { - subCtx := FingerprintSubContext{} - node.Result.Fingerprint(&subCtx, node, "Result") - - if len(subCtx.parts) > 0 { - ctx.WriteString("result") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if node.Xpr != nil { - subCtx := FingerprintSubContext{} - node.Xpr.Fingerprint(&subCtx, node, "Xpr") - - if len(subCtx.parts) > 0 { - ctx.WriteString("xpr") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } -} diff --git a/nodes/check_point_stmt.go b/nodes/check_point_stmt.go deleted file mode 100644 index e2d7685d..00000000 --- a/nodes/check_point_stmt.go +++ /dev/null @@ -1,30 +0,0 @@ -// Auto-generated from postgres/src/include/nodes/parsenodes.h - DO NOT EDIT - -package pg_query - -import "encoding/json" - -/* ---------------------- - * Checkpoint Statement - * ---------------------- - */ -type CheckPointStmt struct { -} - -func (node CheckPointStmt) MarshalJSON() ([]byte, error) { - type CheckPointStmtMarshalAlias CheckPointStmt - return json.Marshal(map[string]interface{}{ - "CheckPointStmt": (*CheckPointStmtMarshalAlias)(&node), - }) -} - -func (node *CheckPointStmt) UnmarshalJSON(input []byte) (err error) { - var fields map[string]json.RawMessage - - err = json.Unmarshal(input, &fields) - if err != nil { - return - } - - return -} diff --git a/nodes/check_point_stmt_deparse.go b/nodes/check_point_stmt_deparse.go deleted file mode 100644 index 041bb4ae..00000000 --- a/nodes/check_point_stmt_deparse.go +++ /dev/null @@ -1,7 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -func (node CheckPointStmt) Deparse() string { - panic("Not Implemented") -} diff --git a/nodes/check_point_stmt_fingerprint.go b/nodes/check_point_stmt_fingerprint.go deleted file mode 100644 index 90f2a221..00000000 --- a/nodes/check_point_stmt_fingerprint.go +++ /dev/null @@ -1,7 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -func (node CheckPointStmt) Fingerprint(ctx FingerprintContext, parentNode Node, parentFieldName string) { - ctx.WriteString("CheckPointStmt") -} diff --git a/nodes/close_portal_stmt.go b/nodes/close_portal_stmt.go deleted file mode 100644 index 54b5469b..00000000 --- a/nodes/close_portal_stmt.go +++ /dev/null @@ -1,40 +0,0 @@ -// Auto-generated from postgres/src/include/nodes/parsenodes.h - DO NOT EDIT - -package pg_query - -import "encoding/json" - -/* ---------------------- - * Close Portal Statement - * ---------------------- - */ -type ClosePortalStmt struct { - Portalname *string `json:"portalname"` /* name of the portal (cursor) */ - - /* NULL means CLOSE ALL */ -} - -func (node ClosePortalStmt) MarshalJSON() ([]byte, error) { - type ClosePortalStmtMarshalAlias ClosePortalStmt - return json.Marshal(map[string]interface{}{ - "ClosePortalStmt": (*ClosePortalStmtMarshalAlias)(&node), - }) -} - -func (node *ClosePortalStmt) UnmarshalJSON(input []byte) (err error) { - var fields map[string]json.RawMessage - - err = json.Unmarshal(input, &fields) - if err != nil { - return - } - - if fields["portalname"] != nil { - err = json.Unmarshal(fields["portalname"], &node.Portalname) - if err != nil { - return - } - } - - return -} diff --git a/nodes/close_portal_stmt_deparse.go b/nodes/close_portal_stmt_deparse.go deleted file mode 100644 index c1258767..00000000 --- a/nodes/close_portal_stmt_deparse.go +++ /dev/null @@ -1,7 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -func (node ClosePortalStmt) Deparse() string { - panic("Not Implemented") -} diff --git a/nodes/close_portal_stmt_fingerprint.go b/nodes/close_portal_stmt_fingerprint.go deleted file mode 100644 index 04e4d610..00000000 --- a/nodes/close_portal_stmt_fingerprint.go +++ /dev/null @@ -1,8 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -func (node ClosePortalStmt) Fingerprint(ctx FingerprintContext, parentNode Node, parentFieldName string) { - ctx.WriteString("ClosePortalStmt") - // Intentionally ignoring node.Portalname for fingerprinting -} diff --git a/nodes/cluster_stmt.go b/nodes/cluster_stmt.go deleted file mode 100644 index 4b31fa3b..00000000 --- a/nodes/cluster_stmt.go +++ /dev/null @@ -1,59 +0,0 @@ -// Auto-generated from postgres/src/include/nodes/parsenodes.h - DO NOT EDIT - -package pg_query - -import "encoding/json" - -/* ---------------------- - * Cluster Statement (support pbrown's cluster index implementation) - * ---------------------- - */ -type ClusterStmt struct { - Relation *RangeVar `json:"relation"` /* relation being indexed, or NULL if all */ - Indexname *string `json:"indexname"` /* original index defined */ - Verbose bool `json:"verbose"` /* print progress info */ -} - -func (node ClusterStmt) MarshalJSON() ([]byte, error) { - type ClusterStmtMarshalAlias ClusterStmt - return json.Marshal(map[string]interface{}{ - "ClusterStmt": (*ClusterStmtMarshalAlias)(&node), - }) -} - -func (node *ClusterStmt) UnmarshalJSON(input []byte) (err error) { - var fields map[string]json.RawMessage - - err = json.Unmarshal(input, &fields) - if err != nil { - return - } - - if fields["relation"] != nil { - var nodePtr *Node - nodePtr, err = UnmarshalNodePtrJSON(fields["relation"]) - if err != nil { - return - } - if nodePtr != nil && *nodePtr != nil { - val := (*nodePtr).(RangeVar) - node.Relation = &val - } - } - - if fields["indexname"] != nil { - err = json.Unmarshal(fields["indexname"], &node.Indexname) - if err != nil { - return - } - } - - if fields["verbose"] != nil { - err = json.Unmarshal(fields["verbose"], &node.Verbose) - if err != nil { - return - } - } - - return -} diff --git a/nodes/cluster_stmt_deparse.go b/nodes/cluster_stmt_deparse.go deleted file mode 100644 index 041a659f..00000000 --- a/nodes/cluster_stmt_deparse.go +++ /dev/null @@ -1,7 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -func (node ClusterStmt) Deparse() string { - panic("Not Implemented") -} diff --git a/nodes/cluster_stmt_fingerprint.go b/nodes/cluster_stmt_fingerprint.go deleted file mode 100644 index a2f15bdf..00000000 --- a/nodes/cluster_stmt_fingerprint.go +++ /dev/null @@ -1,31 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -import "strconv" - -func (node ClusterStmt) Fingerprint(ctx FingerprintContext, parentNode Node, parentFieldName string) { - ctx.WriteString("ClusterStmt") - - if node.Indexname != nil { - ctx.WriteString("indexname") - ctx.WriteString(*node.Indexname) - } - - if node.Relation != nil { - subCtx := FingerprintSubContext{} - node.Relation.Fingerprint(&subCtx, node, "Relation") - - if len(subCtx.parts) > 0 { - ctx.WriteString("relation") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if node.Verbose { - ctx.WriteString("verbose") - ctx.WriteString(strconv.FormatBool(node.Verbose)) - } -} diff --git a/nodes/cmd_type.go b/nodes/cmd_type.go deleted file mode 100644 index 4d8a78da..00000000 --- a/nodes/cmd_type.go +++ /dev/null @@ -1,24 +0,0 @@ -// Auto-generated from postgres/src/include/nodes/nodes.h - DO NOT EDIT - -package pg_query - -/* - * CmdType - - * enums for type of operation represented by a Query or PlannedStmt - * - * This is needed in both parsenodes.h and plannodes.h, so put it here... - */ -type CmdType uint - -const ( - CMD_UNKNOWN CmdType = iota - CMD_SELECT /* select stmt */ - CMD_UPDATE /* update stmt */ - CMD_INSERT /* insert stmt */ - CMD_DELETE - CMD_UTILITY /* cmds like create, destroy, copy, vacuum, - * etc. */ - - CMD_NOTHING /* dummy command for instead nothing rules - * with qual */ -) diff --git a/nodes/coalesce_expr.go b/nodes/coalesce_expr.go deleted file mode 100644 index 0ad22f30..00000000 --- a/nodes/coalesce_expr.go +++ /dev/null @@ -1,69 +0,0 @@ -// Auto-generated from postgres/src/include/nodes/primnodes.h - DO NOT EDIT - -package pg_query - -import "encoding/json" - -/* - * CoalesceExpr - a COALESCE expression - */ -type CoalesceExpr struct { - Xpr Node `json:"xpr"` - Coalescetype Oid `json:"coalescetype"` /* type of expression result */ - Coalescecollid Oid `json:"coalescecollid"` /* OID of collation, or InvalidOid if none */ - Args List `json:"args"` /* the arguments */ - Location int `json:"location"` /* token location, or -1 if unknown */ -} - -func (node CoalesceExpr) MarshalJSON() ([]byte, error) { - type CoalesceExprMarshalAlias CoalesceExpr - return json.Marshal(map[string]interface{}{ - "CoalesceExpr": (*CoalesceExprMarshalAlias)(&node), - }) -} - -func (node *CoalesceExpr) UnmarshalJSON(input []byte) (err error) { - var fields map[string]json.RawMessage - - err = json.Unmarshal(input, &fields) - if err != nil { - return - } - - if fields["xpr"] != nil { - node.Xpr, err = UnmarshalNodeJSON(fields["xpr"]) - if err != nil { - return - } - } - - if fields["coalescetype"] != nil { - err = json.Unmarshal(fields["coalescetype"], &node.Coalescetype) - if err != nil { - return - } - } - - if fields["coalescecollid"] != nil { - err = json.Unmarshal(fields["coalescecollid"], &node.Coalescecollid) - if err != nil { - return - } - } - - if fields["args"] != nil { - node.Args.Items, err = UnmarshalNodeArrayJSON(fields["args"]) - if err != nil { - return - } - } - - if fields["location"] != nil { - err = json.Unmarshal(fields["location"], &node.Location) - if err != nil { - return - } - } - - return -} diff --git a/nodes/coalesce_expr_deparse.go b/nodes/coalesce_expr_deparse.go deleted file mode 100644 index 84bbf3ea..00000000 --- a/nodes/coalesce_expr_deparse.go +++ /dev/null @@ -1,7 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -func (node CoalesceExpr) Deparse() string { - panic("Not Implemented") -} diff --git a/nodes/coalesce_expr_fingerprint.go b/nodes/coalesce_expr_fingerprint.go deleted file mode 100644 index 7ec10e0e..00000000 --- a/nodes/coalesce_expr_fingerprint.go +++ /dev/null @@ -1,45 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -import "strconv" - -func (node CoalesceExpr) Fingerprint(ctx FingerprintContext, parentNode Node, parentFieldName string) { - ctx.WriteString("CoalesceExpr") - - if len(node.Args.Items) > 0 { - subCtx := FingerprintSubContext{} - node.Args.Fingerprint(&subCtx, node, "Args") - - if len(subCtx.parts) > 0 { - ctx.WriteString("args") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if node.Coalescecollid != 0 { - ctx.WriteString("coalescecollid") - ctx.WriteString(strconv.Itoa(int(node.Coalescecollid))) - } - - if node.Coalescetype != 0 { - ctx.WriteString("coalescetype") - ctx.WriteString(strconv.Itoa(int(node.Coalescetype))) - } - - // Intentionally ignoring node.Location for fingerprinting - - if node.Xpr != nil { - subCtx := FingerprintSubContext{} - node.Xpr.Fingerprint(&subCtx, node, "Xpr") - - if len(subCtx.parts) > 0 { - ctx.WriteString("xpr") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } -} diff --git a/nodes/coerce_to_domain.go b/nodes/coerce_to_domain.go deleted file mode 100644 index 74bee495..00000000 --- a/nodes/coerce_to_domain.go +++ /dev/null @@ -1,91 +0,0 @@ -// Auto-generated from postgres/src/include/nodes/primnodes.h - DO NOT EDIT - -package pg_query - -import "encoding/json" - -/* - * CoerceToDomain - * - * CoerceToDomain represents the operation of coercing a value to a domain - * type. At runtime (and not before) the precise set of constraints to be - * checked will be determined. If the value passes, it is returned as the - * result; if not, an error is raised. Note that this is equivalent to - * RelabelType in the scenario where no constraints are applied. - */ -type CoerceToDomain struct { - Xpr Node `json:"xpr"` - Arg Node `json:"arg"` /* input expression */ - Resulttype Oid `json:"resulttype"` /* domain type ID (result type) */ - Resulttypmod int32 `json:"resulttypmod"` /* output typmod (currently always -1) */ - Resultcollid Oid `json:"resultcollid"` /* OID of collation, or InvalidOid if none */ - Coercionformat CoercionForm `json:"coercionformat"` /* how to display this node */ - Location int `json:"location"` /* token location, or -1 if unknown */ -} - -func (node CoerceToDomain) MarshalJSON() ([]byte, error) { - type CoerceToDomainMarshalAlias CoerceToDomain - return json.Marshal(map[string]interface{}{ - "CoerceToDomain": (*CoerceToDomainMarshalAlias)(&node), - }) -} - -func (node *CoerceToDomain) UnmarshalJSON(input []byte) (err error) { - var fields map[string]json.RawMessage - - err = json.Unmarshal(input, &fields) - if err != nil { - return - } - - if fields["xpr"] != nil { - node.Xpr, err = UnmarshalNodeJSON(fields["xpr"]) - if err != nil { - return - } - } - - if fields["arg"] != nil { - node.Arg, err = UnmarshalNodeJSON(fields["arg"]) - if err != nil { - return - } - } - - if fields["resulttype"] != nil { - err = json.Unmarshal(fields["resulttype"], &node.Resulttype) - if err != nil { - return - } - } - - if fields["resulttypmod"] != nil { - err = json.Unmarshal(fields["resulttypmod"], &node.Resulttypmod) - if err != nil { - return - } - } - - if fields["resultcollid"] != nil { - err = json.Unmarshal(fields["resultcollid"], &node.Resultcollid) - if err != nil { - return - } - } - - if fields["coercionformat"] != nil { - err = json.Unmarshal(fields["coercionformat"], &node.Coercionformat) - if err != nil { - return - } - } - - if fields["location"] != nil { - err = json.Unmarshal(fields["location"], &node.Location) - if err != nil { - return - } - } - - return -} diff --git a/nodes/coerce_to_domain_deparse.go b/nodes/coerce_to_domain_deparse.go deleted file mode 100644 index 97895bd7..00000000 --- a/nodes/coerce_to_domain_deparse.go +++ /dev/null @@ -1,7 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -func (node CoerceToDomain) Deparse() string { - panic("Not Implemented") -} diff --git a/nodes/coerce_to_domain_fingerprint.go b/nodes/coerce_to_domain_fingerprint.go deleted file mode 100644 index a875e489..00000000 --- a/nodes/coerce_to_domain_fingerprint.go +++ /dev/null @@ -1,55 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -import "strconv" - -func (node CoerceToDomain) Fingerprint(ctx FingerprintContext, parentNode Node, parentFieldName string) { - ctx.WriteString("CoerceToDomain") - - if node.Arg != nil { - subCtx := FingerprintSubContext{} - node.Arg.Fingerprint(&subCtx, node, "Arg") - - if len(subCtx.parts) > 0 { - ctx.WriteString("arg") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if int(node.Coercionformat) != 0 { - ctx.WriteString("coercionformat") - ctx.WriteString(strconv.Itoa(int(node.Coercionformat))) - } - - // Intentionally ignoring node.Location for fingerprinting - - if node.Resultcollid != 0 { - ctx.WriteString("resultcollid") - ctx.WriteString(strconv.Itoa(int(node.Resultcollid))) - } - - if node.Resulttype != 0 { - ctx.WriteString("resulttype") - ctx.WriteString(strconv.Itoa(int(node.Resulttype))) - } - - if node.Resulttypmod != 0 { - ctx.WriteString("resulttypmod") - ctx.WriteString(strconv.Itoa(int(node.Resulttypmod))) - } - - if node.Xpr != nil { - subCtx := FingerprintSubContext{} - node.Xpr.Fingerprint(&subCtx, node, "Xpr") - - if len(subCtx.parts) > 0 { - ctx.WriteString("xpr") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } -} diff --git a/nodes/coerce_to_domain_value.go b/nodes/coerce_to_domain_value.go deleted file mode 100644 index 4f29aa5e..00000000 --- a/nodes/coerce_to_domain_value.go +++ /dev/null @@ -1,75 +0,0 @@ -// Auto-generated from postgres/src/include/nodes/primnodes.h - DO NOT EDIT - -package pg_query - -import "encoding/json" - -/* - * Placeholder node for the value to be processed by a domain's check - * constraint. This is effectively like a Param, but can be implemented more - * simply since we need only one replacement value at a time. - * - * Note: the typeId/typeMod/collation will be set from the domain's base type, - * not the domain itself. This is because we shouldn't consider the value - * to be a member of the domain if we haven't yet checked its constraints. - */ -type CoerceToDomainValue struct { - Xpr Node `json:"xpr"` - TypeId Oid `json:"typeId"` /* type for substituted value */ - TypeMod int32 `json:"typeMod"` /* typemod for substituted value */ - Collation Oid `json:"collation"` /* collation for the substituted value */ - Location int `json:"location"` /* token location, or -1 if unknown */ -} - -func (node CoerceToDomainValue) MarshalJSON() ([]byte, error) { - type CoerceToDomainValueMarshalAlias CoerceToDomainValue - return json.Marshal(map[string]interface{}{ - "CoerceToDomainValue": (*CoerceToDomainValueMarshalAlias)(&node), - }) -} - -func (node *CoerceToDomainValue) UnmarshalJSON(input []byte) (err error) { - var fields map[string]json.RawMessage - - err = json.Unmarshal(input, &fields) - if err != nil { - return - } - - if fields["xpr"] != nil { - node.Xpr, err = UnmarshalNodeJSON(fields["xpr"]) - if err != nil { - return - } - } - - if fields["typeId"] != nil { - err = json.Unmarshal(fields["typeId"], &node.TypeId) - if err != nil { - return - } - } - - if fields["typeMod"] != nil { - err = json.Unmarshal(fields["typeMod"], &node.TypeMod) - if err != nil { - return - } - } - - if fields["collation"] != nil { - err = json.Unmarshal(fields["collation"], &node.Collation) - if err != nil { - return - } - } - - if fields["location"] != nil { - err = json.Unmarshal(fields["location"], &node.Location) - if err != nil { - return - } - } - - return -} diff --git a/nodes/coerce_to_domain_value_deparse.go b/nodes/coerce_to_domain_value_deparse.go deleted file mode 100644 index c410e2e5..00000000 --- a/nodes/coerce_to_domain_value_deparse.go +++ /dev/null @@ -1,7 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -func (node CoerceToDomainValue) Deparse() string { - panic("Not Implemented") -} diff --git a/nodes/coerce_to_domain_value_fingerprint.go b/nodes/coerce_to_domain_value_fingerprint.go deleted file mode 100644 index c03979a1..00000000 --- a/nodes/coerce_to_domain_value_fingerprint.go +++ /dev/null @@ -1,38 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -import "strconv" - -func (node CoerceToDomainValue) Fingerprint(ctx FingerprintContext, parentNode Node, parentFieldName string) { - ctx.WriteString("CoerceToDomainValue") - - if node.Collation != 0 { - ctx.WriteString("collation") - ctx.WriteString(strconv.Itoa(int(node.Collation))) - } - - // Intentionally ignoring node.Location for fingerprinting - - if node.TypeId != 0 { - ctx.WriteString("typeId") - ctx.WriteString(strconv.Itoa(int(node.TypeId))) - } - - if node.TypeMod != 0 { - ctx.WriteString("typeMod") - ctx.WriteString(strconv.Itoa(int(node.TypeMod))) - } - - if node.Xpr != nil { - subCtx := FingerprintSubContext{} - node.Xpr.Fingerprint(&subCtx, node, "Xpr") - - if len(subCtx.parts) > 0 { - ctx.WriteString("xpr") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } -} diff --git a/nodes/coerce_via_io.go b/nodes/coerce_via_io.go deleted file mode 100644 index dd14116d..00000000 --- a/nodes/coerce_via_io.go +++ /dev/null @@ -1,84 +0,0 @@ -// Auto-generated from postgres/src/include/nodes/primnodes.h - DO NOT EDIT - -package pg_query - -import "encoding/json" - -/* ---------------- - * CoerceViaIO - * - * CoerceViaIO represents a type coercion between two types whose textual - * representations are compatible, implemented by invoking the source type's - * typoutput function then the destination type's typinput function. - * ---------------- - */ -type CoerceViaIO struct { - Xpr Node `json:"xpr"` - Arg Node `json:"arg"` /* input expression */ - Resulttype Oid `json:"resulttype"` /* output type of coercion */ - - /* output typmod is not stored, but is presumed -1 */ - Resultcollid Oid `json:"resultcollid"` /* OID of collation, or InvalidOid if none */ - Coerceformat CoercionForm `json:"coerceformat"` /* how to display this node */ - Location int `json:"location"` /* token location, or -1 if unknown */ -} - -func (node CoerceViaIO) MarshalJSON() ([]byte, error) { - type CoerceViaIOMarshalAlias CoerceViaIO - return json.Marshal(map[string]interface{}{ - "CoerceViaIO": (*CoerceViaIOMarshalAlias)(&node), - }) -} - -func (node *CoerceViaIO) UnmarshalJSON(input []byte) (err error) { - var fields map[string]json.RawMessage - - err = json.Unmarshal(input, &fields) - if err != nil { - return - } - - if fields["xpr"] != nil { - node.Xpr, err = UnmarshalNodeJSON(fields["xpr"]) - if err != nil { - return - } - } - - if fields["arg"] != nil { - node.Arg, err = UnmarshalNodeJSON(fields["arg"]) - if err != nil { - return - } - } - - if fields["resulttype"] != nil { - err = json.Unmarshal(fields["resulttype"], &node.Resulttype) - if err != nil { - return - } - } - - if fields["resultcollid"] != nil { - err = json.Unmarshal(fields["resultcollid"], &node.Resultcollid) - if err != nil { - return - } - } - - if fields["coerceformat"] != nil { - err = json.Unmarshal(fields["coerceformat"], &node.Coerceformat) - if err != nil { - return - } - } - - if fields["location"] != nil { - err = json.Unmarshal(fields["location"], &node.Location) - if err != nil { - return - } - } - - return -} diff --git a/nodes/coerce_via_io_deparse.go b/nodes/coerce_via_io_deparse.go deleted file mode 100644 index 105c08a3..00000000 --- a/nodes/coerce_via_io_deparse.go +++ /dev/null @@ -1,7 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -func (node CoerceViaIO) Deparse() string { - panic("Not Implemented") -} diff --git a/nodes/coerce_via_io_fingerprint.go b/nodes/coerce_via_io_fingerprint.go deleted file mode 100644 index 91af0006..00000000 --- a/nodes/coerce_via_io_fingerprint.go +++ /dev/null @@ -1,50 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -import "strconv" - -func (node CoerceViaIO) Fingerprint(ctx FingerprintContext, parentNode Node, parentFieldName string) { - ctx.WriteString("CoerceViaIO") - - if node.Arg != nil { - subCtx := FingerprintSubContext{} - node.Arg.Fingerprint(&subCtx, node, "Arg") - - if len(subCtx.parts) > 0 { - ctx.WriteString("arg") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if int(node.Coerceformat) != 0 { - ctx.WriteString("coerceformat") - ctx.WriteString(strconv.Itoa(int(node.Coerceformat))) - } - - // Intentionally ignoring node.Location for fingerprinting - - if node.Resultcollid != 0 { - ctx.WriteString("resultcollid") - ctx.WriteString(strconv.Itoa(int(node.Resultcollid))) - } - - if node.Resulttype != 0 { - ctx.WriteString("resulttype") - ctx.WriteString(strconv.Itoa(int(node.Resulttype))) - } - - if node.Xpr != nil { - subCtx := FingerprintSubContext{} - node.Xpr.Fingerprint(&subCtx, node, "Xpr") - - if len(subCtx.parts) > 0 { - ctx.WriteString("xpr") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } -} diff --git a/nodes/coercion_context.go b/nodes/coercion_context.go deleted file mode 100644 index 35c67018..00000000 --- a/nodes/coercion_context.go +++ /dev/null @@ -1,17 +0,0 @@ -// Auto-generated from postgres/src/include/nodes/primnodes.h - DO NOT EDIT - -package pg_query - -/* - * CoercionContext - distinguishes the allowed set of type casts - * - * NB: ordering of the alternatives is significant; later (larger) values - * allow more casts than earlier ones. - */ -type CoercionContext uint - -const ( - COERCION_IMPLICIT CoercionContext = iota /* coercion in context of expression */ - COERCION_ASSIGNMENT /* coercion in context of assignment */ - COERCION_EXPLICIT /* explicit cast operation */ -) diff --git a/nodes/coercion_form.go b/nodes/coercion_form.go deleted file mode 100644 index fffb3b2c..00000000 --- a/nodes/coercion_form.go +++ /dev/null @@ -1,20 +0,0 @@ -// Auto-generated from postgres/src/include/nodes/primnodes.h - DO NOT EDIT - -package pg_query - -/* - * CoercionForm - how to display a node that could have come from a cast - * - * NB: equal() ignores CoercionForm fields, therefore this *must* not carry - * any semantically significant information. We need that behavior so that - * the planner will consider equivalent implicit and explicit casts to be - * equivalent. In cases where those actually behave differently, the coercion - * function's arguments will be different. - */ -type CoercionForm uint - -const ( - COERCE_EXPLICIT_CALL CoercionForm = iota /* display as a function call */ - COERCE_EXPLICIT_CAST /* display as an explicit cast */ - COERCE_IMPLICIT_CAST /* implicit cast, so hide it */ -) diff --git a/nodes/collate_clause.go b/nodes/collate_clause.go deleted file mode 100644 index c149624d..00000000 --- a/nodes/collate_clause.go +++ /dev/null @@ -1,53 +0,0 @@ -// Auto-generated from postgres/src/include/nodes/parsenodes.h - DO NOT EDIT - -package pg_query - -import "encoding/json" - -/* - * CollateClause - a COLLATE expression - */ -type CollateClause struct { - Arg Node `json:"arg"` /* input expression */ - Collname List `json:"collname"` /* possibly-qualified collation name */ - Location int `json:"location"` /* token location, or -1 if unknown */ -} - -func (node CollateClause) MarshalJSON() ([]byte, error) { - type CollateClauseMarshalAlias CollateClause - return json.Marshal(map[string]interface{}{ - "CollateClause": (*CollateClauseMarshalAlias)(&node), - }) -} - -func (node *CollateClause) UnmarshalJSON(input []byte) (err error) { - var fields map[string]json.RawMessage - - err = json.Unmarshal(input, &fields) - if err != nil { - return - } - - if fields["arg"] != nil { - node.Arg, err = UnmarshalNodeJSON(fields["arg"]) - if err != nil { - return - } - } - - if fields["collname"] != nil { - node.Collname.Items, err = UnmarshalNodeArrayJSON(fields["collname"]) - if err != nil { - return - } - } - - if fields["location"] != nil { - err = json.Unmarshal(fields["location"], &node.Location) - if err != nil { - return - } - } - - return -} diff --git a/nodes/collate_clause_deparse.go b/nodes/collate_clause_deparse.go deleted file mode 100644 index 35755f8f..00000000 --- a/nodes/collate_clause_deparse.go +++ /dev/null @@ -1,7 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -func (node CollateClause) Deparse() string { - panic("Not Implemented") -} diff --git a/nodes/collate_clause_fingerprint.go b/nodes/collate_clause_fingerprint.go deleted file mode 100644 index 0e28413e..00000000 --- a/nodes/collate_clause_fingerprint.go +++ /dev/null @@ -1,32 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -func (node CollateClause) Fingerprint(ctx FingerprintContext, parentNode Node, parentFieldName string) { - ctx.WriteString("CollateClause") - - if node.Arg != nil { - subCtx := FingerprintSubContext{} - node.Arg.Fingerprint(&subCtx, node, "Arg") - - if len(subCtx.parts) > 0 { - ctx.WriteString("arg") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if len(node.Collname.Items) > 0 { - subCtx := FingerprintSubContext{} - node.Collname.Fingerprint(&subCtx, node, "Collname") - - if len(subCtx.parts) > 0 { - ctx.WriteString("collname") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - // Intentionally ignoring node.Location for fingerprinting -} diff --git a/nodes/collate_expr.go b/nodes/collate_expr.go deleted file mode 100644 index 85d3ae2f..00000000 --- a/nodes/collate_expr.go +++ /dev/null @@ -1,65 +0,0 @@ -// Auto-generated from postgres/src/include/nodes/primnodes.h - DO NOT EDIT - -package pg_query - -import "encoding/json" - -/*---------- - * CollateExpr - COLLATE - * - * The planner replaces CollateExpr with RelabelType during expression - * preprocessing, so execution never sees a CollateExpr. - *---------- - */ -type CollateExpr struct { - Xpr Node `json:"xpr"` - Arg Node `json:"arg"` /* input expression */ - CollOid Oid `json:"collOid"` /* collation's OID */ - Location int `json:"location"` /* token location, or -1 if unknown */ -} - -func (node CollateExpr) MarshalJSON() ([]byte, error) { - type CollateExprMarshalAlias CollateExpr - return json.Marshal(map[string]interface{}{ - "CollateExpr": (*CollateExprMarshalAlias)(&node), - }) -} - -func (node *CollateExpr) UnmarshalJSON(input []byte) (err error) { - var fields map[string]json.RawMessage - - err = json.Unmarshal(input, &fields) - if err != nil { - return - } - - if fields["xpr"] != nil { - node.Xpr, err = UnmarshalNodeJSON(fields["xpr"]) - if err != nil { - return - } - } - - if fields["arg"] != nil { - node.Arg, err = UnmarshalNodeJSON(fields["arg"]) - if err != nil { - return - } - } - - if fields["collOid"] != nil { - err = json.Unmarshal(fields["collOid"], &node.CollOid) - if err != nil { - return - } - } - - if fields["location"] != nil { - err = json.Unmarshal(fields["location"], &node.Location) - if err != nil { - return - } - } - - return -} diff --git a/nodes/collate_expr_deparse.go b/nodes/collate_expr_deparse.go deleted file mode 100644 index 3a283100..00000000 --- a/nodes/collate_expr_deparse.go +++ /dev/null @@ -1,7 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -func (node CollateExpr) Deparse() string { - panic("Not Implemented") -} diff --git a/nodes/collate_expr_fingerprint.go b/nodes/collate_expr_fingerprint.go deleted file mode 100644 index ff192ecd..00000000 --- a/nodes/collate_expr_fingerprint.go +++ /dev/null @@ -1,40 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -import "strconv" - -func (node CollateExpr) Fingerprint(ctx FingerprintContext, parentNode Node, parentFieldName string) { - ctx.WriteString("CollateExpr") - - if node.Arg != nil { - subCtx := FingerprintSubContext{} - node.Arg.Fingerprint(&subCtx, node, "Arg") - - if len(subCtx.parts) > 0 { - ctx.WriteString("arg") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if node.CollOid != 0 { - ctx.WriteString("collOid") - ctx.WriteString(strconv.Itoa(int(node.CollOid))) - } - - // Intentionally ignoring node.Location for fingerprinting - - if node.Xpr != nil { - subCtx := FingerprintSubContext{} - node.Xpr.Fingerprint(&subCtx, node, "Xpr") - - if len(subCtx.parts) > 0 { - ctx.WriteString("xpr") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } -} diff --git a/nodes/column_def.go b/nodes/column_def.go deleted file mode 100644 index 1de3cb4e..00000000 --- a/nodes/column_def.go +++ /dev/null @@ -1,186 +0,0 @@ -// Auto-generated from postgres/src/include/nodes/parsenodes.h - DO NOT EDIT - -package pg_query - -import "encoding/json" - -/* - * ColumnDef - column definition (used in various creates) - * - * If the column has a default value, we may have the value expression - * in either "raw" form (an untransformed parse tree) or "cooked" form - * (a post-parse-analysis, executable expression tree), depending on - * how this ColumnDef node was created (by parsing, or by inheritance - * from an existing relation). We should never have both in the same node! - * - * Similarly, we may have a COLLATE specification in either raw form - * (represented as a CollateClause with arg==NULL) or cooked form - * (the collation's OID). - * - * The constraints list may contain a CONSTR_DEFAULT item in a raw - * parsetree produced by gram.y, but transformCreateStmt will remove - * the item and set raw_default instead. CONSTR_DEFAULT items - * should not appear in any subsequent processing. - */ -type ColumnDef struct { - Colname *string `json:"colname"` /* name of column */ - TypeName *TypeName `json:"typeName"` /* type of column */ - Inhcount int `json:"inhcount"` /* number of times column is inherited */ - IsLocal bool `json:"is_local"` /* column has local (non-inherited) def'n */ - IsNotNull bool `json:"is_not_null"` /* NOT NULL constraint specified? */ - IsFromType bool `json:"is_from_type"` /* column definition came from table type */ - IsFromParent bool `json:"is_from_parent"` /* column def came from partition parent */ - Storage byte `json:"storage"` /* attstorage setting, or 0 for default */ - RawDefault Node `json:"raw_default"` /* default value (untransformed parse tree) */ - CookedDefault Node `json:"cooked_default"` /* default value (transformed expr tree) */ - Identity byte `json:"identity"` /* attidentity setting */ - CollClause *CollateClause `json:"collClause"` /* untransformed COLLATE spec, if any */ - CollOid Oid `json:"collOid"` /* collation OID (InvalidOid if not set) */ - Constraints List `json:"constraints"` /* other constraints on column */ - Fdwoptions List `json:"fdwoptions"` /* per-column FDW options */ - Location int `json:"location"` /* parse location, or -1 if none/unknown */ -} - -func (node ColumnDef) MarshalJSON() ([]byte, error) { - type ColumnDefMarshalAlias ColumnDef - return json.Marshal(map[string]interface{}{ - "ColumnDef": (*ColumnDefMarshalAlias)(&node), - }) -} - -func (node *ColumnDef) UnmarshalJSON(input []byte) (err error) { - var fields map[string]json.RawMessage - - err = json.Unmarshal(input, &fields) - if err != nil { - return - } - - if fields["colname"] != nil { - err = json.Unmarshal(fields["colname"], &node.Colname) - if err != nil { - return - } - } - - if fields["typeName"] != nil { - var nodePtr *Node - nodePtr, err = UnmarshalNodePtrJSON(fields["typeName"]) - if err != nil { - return - } - if nodePtr != nil && *nodePtr != nil { - val := (*nodePtr).(TypeName) - node.TypeName = &val - } - } - - if fields["inhcount"] != nil { - err = json.Unmarshal(fields["inhcount"], &node.Inhcount) - if err != nil { - return - } - } - - if fields["is_local"] != nil { - err = json.Unmarshal(fields["is_local"], &node.IsLocal) - if err != nil { - return - } - } - - if fields["is_not_null"] != nil { - err = json.Unmarshal(fields["is_not_null"], &node.IsNotNull) - if err != nil { - return - } - } - - if fields["is_from_type"] != nil { - err = json.Unmarshal(fields["is_from_type"], &node.IsFromType) - if err != nil { - return - } - } - - if fields["is_from_parent"] != nil { - err = json.Unmarshal(fields["is_from_parent"], &node.IsFromParent) - if err != nil { - return - } - } - - if fields["storage"] != nil { - var strVal string - err = json.Unmarshal(fields["storage"], &strVal) - node.Storage = strVal[0] - if err != nil { - return - } - } - - if fields["raw_default"] != nil { - node.RawDefault, err = UnmarshalNodeJSON(fields["raw_default"]) - if err != nil { - return - } - } - - if fields["cooked_default"] != nil { - node.CookedDefault, err = UnmarshalNodeJSON(fields["cooked_default"]) - if err != nil { - return - } - } - - if fields["identity"] != nil { - var strVal string - err = json.Unmarshal(fields["identity"], &strVal) - node.Identity = strVal[0] - if err != nil { - return - } - } - - if fields["collClause"] != nil { - var nodePtr *Node - nodePtr, err = UnmarshalNodePtrJSON(fields["collClause"]) - if err != nil { - return - } - if nodePtr != nil && *nodePtr != nil { - val := (*nodePtr).(CollateClause) - node.CollClause = &val - } - } - - if fields["collOid"] != nil { - err = json.Unmarshal(fields["collOid"], &node.CollOid) - if err != nil { - return - } - } - - if fields["constraints"] != nil { - node.Constraints.Items, err = UnmarshalNodeArrayJSON(fields["constraints"]) - if err != nil { - return - } - } - - if fields["fdwoptions"] != nil { - node.Fdwoptions.Items, err = UnmarshalNodeArrayJSON(fields["fdwoptions"]) - if err != nil { - return - } - } - - if fields["location"] != nil { - err = json.Unmarshal(fields["location"], &node.Location) - if err != nil { - return - } - } - - return -} diff --git a/nodes/column_def_deparse.go b/nodes/column_def_deparse.go deleted file mode 100644 index abc3c8ec..00000000 --- a/nodes/column_def_deparse.go +++ /dev/null @@ -1,7 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -func (node ColumnDef) Deparse() string { - panic("Not Implemented") -} diff --git a/nodes/column_def_fingerprint.go b/nodes/column_def_fingerprint.go deleted file mode 100644 index 42c7bfea..00000000 --- a/nodes/column_def_fingerprint.go +++ /dev/null @@ -1,130 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -import "strconv" - -func (node ColumnDef) Fingerprint(ctx FingerprintContext, parentNode Node, parentFieldName string) { - ctx.WriteString("ColumnDef") - - if node.CollClause != nil { - subCtx := FingerprintSubContext{} - node.CollClause.Fingerprint(&subCtx, node, "CollClause") - - if len(subCtx.parts) > 0 { - ctx.WriteString("collClause") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if node.CollOid != 0 { - ctx.WriteString("collOid") - ctx.WriteString(strconv.Itoa(int(node.CollOid))) - } - - if node.Colname != nil { - ctx.WriteString("colname") - ctx.WriteString(*node.Colname) - } - - if len(node.Constraints.Items) > 0 { - subCtx := FingerprintSubContext{} - node.Constraints.Fingerprint(&subCtx, node, "Constraints") - - if len(subCtx.parts) > 0 { - ctx.WriteString("constraints") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if node.CookedDefault != nil { - subCtx := FingerprintSubContext{} - node.CookedDefault.Fingerprint(&subCtx, node, "CookedDefault") - - if len(subCtx.parts) > 0 { - ctx.WriteString("cooked_default") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if len(node.Fdwoptions.Items) > 0 { - subCtx := FingerprintSubContext{} - node.Fdwoptions.Fingerprint(&subCtx, node, "Fdwoptions") - - if len(subCtx.parts) > 0 { - ctx.WriteString("fdwoptions") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if node.Identity != 0 { - ctx.WriteString("identity") - ctx.WriteString(string(node.Identity)) - - } - - if node.Inhcount != 0 { - ctx.WriteString("inhcount") - ctx.WriteString(strconv.Itoa(int(node.Inhcount))) - } - - if node.IsFromParent { - ctx.WriteString("is_from_parent") - ctx.WriteString(strconv.FormatBool(node.IsFromParent)) - } - - if node.IsFromType { - ctx.WriteString("is_from_type") - ctx.WriteString(strconv.FormatBool(node.IsFromType)) - } - - if node.IsLocal { - ctx.WriteString("is_local") - ctx.WriteString(strconv.FormatBool(node.IsLocal)) - } - - if node.IsNotNull { - ctx.WriteString("is_not_null") - ctx.WriteString(strconv.FormatBool(node.IsNotNull)) - } - - // Intentionally ignoring node.Location for fingerprinting - - if node.RawDefault != nil { - subCtx := FingerprintSubContext{} - node.RawDefault.Fingerprint(&subCtx, node, "RawDefault") - - if len(subCtx.parts) > 0 { - ctx.WriteString("raw_default") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if node.Storage != 0 { - ctx.WriteString("storage") - ctx.WriteString(string(node.Storage)) - - } - - if node.TypeName != nil { - subCtx := FingerprintSubContext{} - node.TypeName.Fingerprint(&subCtx, node, "TypeName") - - if len(subCtx.parts) > 0 { - ctx.WriteString("typeName") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } -} diff --git a/nodes/column_ref.go b/nodes/column_ref.go deleted file mode 100644 index 23006253..00000000 --- a/nodes/column_ref.go +++ /dev/null @@ -1,55 +0,0 @@ -// Auto-generated from postgres/src/include/nodes/parsenodes.h - DO NOT EDIT - -package pg_query - -import "encoding/json" - -/* - * ColumnRef - specifies a reference to a column, or possibly a whole tuple - * - * The "fields" list must be nonempty. It can contain string Value nodes - * (representing names) and A_Star nodes (representing occurrence of a '*'). - * Currently, A_Star must appear only as the last list element --- the grammar - * is responsible for enforcing this! - * - * Note: any array subscripting or selection of fields from composite columns - * is represented by an A_Indirection node above the ColumnRef. However, - * for simplicity in the normal case, initial field selection from a table - * name is represented within ColumnRef and not by adding A_Indirection. - */ -type ColumnRef struct { - Fields List `json:"fields"` /* field names (Value strings) or A_Star */ - Location int `json:"location"` /* token location, or -1 if unknown */ -} - -func (node ColumnRef) MarshalJSON() ([]byte, error) { - type ColumnRefMarshalAlias ColumnRef - return json.Marshal(map[string]interface{}{ - "ColumnRef": (*ColumnRefMarshalAlias)(&node), - }) -} - -func (node *ColumnRef) UnmarshalJSON(input []byte) (err error) { - var fields map[string]json.RawMessage - - err = json.Unmarshal(input, &fields) - if err != nil { - return - } - - if fields["fields"] != nil { - node.Fields.Items, err = UnmarshalNodeArrayJSON(fields["fields"]) - if err != nil { - return - } - } - - if fields["location"] != nil { - err = json.Unmarshal(fields["location"], &node.Location) - if err != nil { - return - } - } - - return -} diff --git a/nodes/column_ref_deparse.go b/nodes/column_ref_deparse.go deleted file mode 100644 index b32b2869..00000000 --- a/nodes/column_ref_deparse.go +++ /dev/null @@ -1,7 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -func (node ColumnRef) Deparse() string { - panic("Not Implemented") -} diff --git a/nodes/column_ref_fingerprint.go b/nodes/column_ref_fingerprint.go deleted file mode 100644 index 7e273c25..00000000 --- a/nodes/column_ref_fingerprint.go +++ /dev/null @@ -1,20 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -func (node ColumnRef) Fingerprint(ctx FingerprintContext, parentNode Node, parentFieldName string) { - ctx.WriteString("ColumnRef") - - if len(node.Fields.Items) > 0 { - subCtx := FingerprintSubContext{} - node.Fields.Fingerprint(&subCtx, node, "Fields") - - if len(subCtx.parts) > 0 { - ctx.WriteString("fields") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - // Intentionally ignoring node.Location for fingerprinting -} diff --git a/nodes/comment_stmt.go b/nodes/comment_stmt.go deleted file mode 100644 index 3ea2ac70..00000000 --- a/nodes/comment_stmt.go +++ /dev/null @@ -1,54 +0,0 @@ -// Auto-generated from postgres/src/include/nodes/parsenodes.h - DO NOT EDIT - -package pg_query - -import "encoding/json" - -/* ---------------------- - * Comment On Statement - * ---------------------- - */ -type CommentStmt struct { - Objtype ObjectType `json:"objtype"` /* Object's type */ - Object Node `json:"object"` /* Qualified name of the object */ - Comment *string `json:"comment"` /* Comment to insert, or NULL to remove */ -} - -func (node CommentStmt) MarshalJSON() ([]byte, error) { - type CommentStmtMarshalAlias CommentStmt - return json.Marshal(map[string]interface{}{ - "CommentStmt": (*CommentStmtMarshalAlias)(&node), - }) -} - -func (node *CommentStmt) UnmarshalJSON(input []byte) (err error) { - var fields map[string]json.RawMessage - - err = json.Unmarshal(input, &fields) - if err != nil { - return - } - - if fields["objtype"] != nil { - err = json.Unmarshal(fields["objtype"], &node.Objtype) - if err != nil { - return - } - } - - if fields["object"] != nil { - node.Object, err = UnmarshalNodeJSON(fields["object"]) - if err != nil { - return - } - } - - if fields["comment"] != nil { - err = json.Unmarshal(fields["comment"], &node.Comment) - if err != nil { - return - } - } - - return -} diff --git a/nodes/comment_stmt_deparse.go b/nodes/comment_stmt_deparse.go deleted file mode 100644 index 62252765..00000000 --- a/nodes/comment_stmt_deparse.go +++ /dev/null @@ -1,7 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -func (node CommentStmt) Deparse() string { - panic("Not Implemented") -} diff --git a/nodes/comment_stmt_fingerprint.go b/nodes/comment_stmt_fingerprint.go deleted file mode 100644 index 930314ee..00000000 --- a/nodes/comment_stmt_fingerprint.go +++ /dev/null @@ -1,31 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -import "strconv" - -func (node CommentStmt) Fingerprint(ctx FingerprintContext, parentNode Node, parentFieldName string) { - ctx.WriteString("CommentStmt") - - if node.Comment != nil { - ctx.WriteString("comment") - ctx.WriteString(*node.Comment) - } - - if node.Object != nil { - subCtx := FingerprintSubContext{} - node.Object.Fingerprint(&subCtx, node, "Object") - - if len(subCtx.parts) > 0 { - ctx.WriteString("object") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if int(node.Objtype) != 0 { - ctx.WriteString("objtype") - ctx.WriteString(strconv.Itoa(int(node.Objtype))) - } -} diff --git a/nodes/common_table_expr.go b/nodes/common_table_expr.go deleted file mode 100644 index 37f2cf18..00000000 --- a/nodes/common_table_expr.go +++ /dev/null @@ -1,118 +0,0 @@ -// Auto-generated from postgres/src/include/nodes/parsenodes.h - DO NOT EDIT - -package pg_query - -import "encoding/json" - -/* - * CommonTableExpr - - * representation of WITH list element - * - * We don't currently support the SEARCH or CYCLE clause. - */ -type CommonTableExpr struct { - Ctename *string `json:"ctename"` /* query name (never qualified) */ - Aliascolnames List `json:"aliascolnames"` /* optional list of column names */ - - /* SelectStmt/InsertStmt/etc before parse analysis, Query afterwards: */ - Ctequery Node `json:"ctequery"` /* the CTE's subquery */ - Location int `json:"location"` /* token location, or -1 if unknown */ - - /* These fields are set during parse analysis: */ - Cterecursive bool `json:"cterecursive"` /* is this CTE actually recursive? */ - Cterefcount int `json:"cterefcount"` /* number of RTEs referencing this CTE - * (excluding internal self-references) */ - - Ctecolnames List `json:"ctecolnames"` /* list of output column names */ - Ctecoltypes List `json:"ctecoltypes"` /* OID list of output column type OIDs */ - Ctecoltypmods List `json:"ctecoltypmods"` /* integer list of output column typmods */ - Ctecolcollations List `json:"ctecolcollations"` /* OID list of column collation OIDs */ -} - -func (node CommonTableExpr) MarshalJSON() ([]byte, error) { - type CommonTableExprMarshalAlias CommonTableExpr - return json.Marshal(map[string]interface{}{ - "CommonTableExpr": (*CommonTableExprMarshalAlias)(&node), - }) -} - -func (node *CommonTableExpr) UnmarshalJSON(input []byte) (err error) { - var fields map[string]json.RawMessage - - err = json.Unmarshal(input, &fields) - if err != nil { - return - } - - if fields["ctename"] != nil { - err = json.Unmarshal(fields["ctename"], &node.Ctename) - if err != nil { - return - } - } - - if fields["aliascolnames"] != nil { - node.Aliascolnames.Items, err = UnmarshalNodeArrayJSON(fields["aliascolnames"]) - if err != nil { - return - } - } - - if fields["ctequery"] != nil { - node.Ctequery, err = UnmarshalNodeJSON(fields["ctequery"]) - if err != nil { - return - } - } - - if fields["location"] != nil { - err = json.Unmarshal(fields["location"], &node.Location) - if err != nil { - return - } - } - - if fields["cterecursive"] != nil { - err = json.Unmarshal(fields["cterecursive"], &node.Cterecursive) - if err != nil { - return - } - } - - if fields["cterefcount"] != nil { - err = json.Unmarshal(fields["cterefcount"], &node.Cterefcount) - if err != nil { - return - } - } - - if fields["ctecolnames"] != nil { - node.Ctecolnames.Items, err = UnmarshalNodeArrayJSON(fields["ctecolnames"]) - if err != nil { - return - } - } - - if fields["ctecoltypes"] != nil { - node.Ctecoltypes.Items, err = UnmarshalNodeArrayJSON(fields["ctecoltypes"]) - if err != nil { - return - } - } - - if fields["ctecoltypmods"] != nil { - node.Ctecoltypmods.Items, err = UnmarshalNodeArrayJSON(fields["ctecoltypmods"]) - if err != nil { - return - } - } - - if fields["ctecolcollations"] != nil { - node.Ctecolcollations.Items, err = UnmarshalNodeArrayJSON(fields["ctecolcollations"]) - if err != nil { - return - } - } - - return -} diff --git a/nodes/common_table_expr_deparse.go b/nodes/common_table_expr_deparse.go deleted file mode 100644 index da2f83f0..00000000 --- a/nodes/common_table_expr_deparse.go +++ /dev/null @@ -1,7 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -func (node CommonTableExpr) Deparse() string { - panic("Not Implemented") -} diff --git a/nodes/common_table_expr_fingerprint.go b/nodes/common_table_expr_fingerprint.go deleted file mode 100644 index dbef1be5..00000000 --- a/nodes/common_table_expr_fingerprint.go +++ /dev/null @@ -1,98 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -import "strconv" - -func (node CommonTableExpr) Fingerprint(ctx FingerprintContext, parentNode Node, parentFieldName string) { - ctx.WriteString("CommonTableExpr") - - if len(node.Aliascolnames.Items) > 0 { - subCtx := FingerprintSubContext{} - node.Aliascolnames.Fingerprint(&subCtx, node, "Aliascolnames") - - if len(subCtx.parts) > 0 { - ctx.WriteString("aliascolnames") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if len(node.Ctecolcollations.Items) > 0 { - subCtx := FingerprintSubContext{} - node.Ctecolcollations.Fingerprint(&subCtx, node, "Ctecolcollations") - - if len(subCtx.parts) > 0 { - ctx.WriteString("ctecolcollations") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if len(node.Ctecolnames.Items) > 0 { - subCtx := FingerprintSubContext{} - node.Ctecolnames.Fingerprint(&subCtx, node, "Ctecolnames") - - if len(subCtx.parts) > 0 { - ctx.WriteString("ctecolnames") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if len(node.Ctecoltypes.Items) > 0 { - subCtx := FingerprintSubContext{} - node.Ctecoltypes.Fingerprint(&subCtx, node, "Ctecoltypes") - - if len(subCtx.parts) > 0 { - ctx.WriteString("ctecoltypes") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if len(node.Ctecoltypmods.Items) > 0 { - subCtx := FingerprintSubContext{} - node.Ctecoltypmods.Fingerprint(&subCtx, node, "Ctecoltypmods") - - if len(subCtx.parts) > 0 { - ctx.WriteString("ctecoltypmods") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if node.Ctename != nil { - ctx.WriteString("ctename") - ctx.WriteString(*node.Ctename) - } - - if node.Ctequery != nil { - subCtx := FingerprintSubContext{} - node.Ctequery.Fingerprint(&subCtx, node, "Ctequery") - - if len(subCtx.parts) > 0 { - ctx.WriteString("ctequery") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if node.Cterecursive { - ctx.WriteString("cterecursive") - ctx.WriteString(strconv.FormatBool(node.Cterecursive)) - } - - if node.Cterefcount != 0 { - ctx.WriteString("cterefcount") - ctx.WriteString(strconv.Itoa(int(node.Cterefcount))) - } - - // Intentionally ignoring node.Location for fingerprinting -} diff --git a/nodes/composite_type_stmt.go b/nodes/composite_type_stmt.go deleted file mode 100644 index 7f066065..00000000 --- a/nodes/composite_type_stmt.go +++ /dev/null @@ -1,51 +0,0 @@ -// Auto-generated from postgres/src/include/nodes/parsenodes.h - DO NOT EDIT - -package pg_query - -import "encoding/json" - -/* ---------------------- - * Create Type Statement, composite types - * ---------------------- - */ -type CompositeTypeStmt struct { - Typevar *RangeVar `json:"typevar"` /* the composite type to be created */ - Coldeflist List `json:"coldeflist"` /* list of ColumnDef nodes */ -} - -func (node CompositeTypeStmt) MarshalJSON() ([]byte, error) { - type CompositeTypeStmtMarshalAlias CompositeTypeStmt - return json.Marshal(map[string]interface{}{ - "CompositeTypeStmt": (*CompositeTypeStmtMarshalAlias)(&node), - }) -} - -func (node *CompositeTypeStmt) UnmarshalJSON(input []byte) (err error) { - var fields map[string]json.RawMessage - - err = json.Unmarshal(input, &fields) - if err != nil { - return - } - - if fields["typevar"] != nil { - var nodePtr *Node - nodePtr, err = UnmarshalNodePtrJSON(fields["typevar"]) - if err != nil { - return - } - if nodePtr != nil && *nodePtr != nil { - val := (*nodePtr).(RangeVar) - node.Typevar = &val - } - } - - if fields["coldeflist"] != nil { - node.Coldeflist.Items, err = UnmarshalNodeArrayJSON(fields["coldeflist"]) - if err != nil { - return - } - } - - return -} diff --git a/nodes/composite_type_stmt_deparse.go b/nodes/composite_type_stmt_deparse.go deleted file mode 100644 index 95891a42..00000000 --- a/nodes/composite_type_stmt_deparse.go +++ /dev/null @@ -1,7 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -func (node CompositeTypeStmt) Deparse() string { - panic("Not Implemented") -} diff --git a/nodes/composite_type_stmt_fingerprint.go b/nodes/composite_type_stmt_fingerprint.go deleted file mode 100644 index ddc7ac77..00000000 --- a/nodes/composite_type_stmt_fingerprint.go +++ /dev/null @@ -1,31 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -func (node CompositeTypeStmt) Fingerprint(ctx FingerprintContext, parentNode Node, parentFieldName string) { - ctx.WriteString("CompositeTypeStmt") - - if len(node.Coldeflist.Items) > 0 { - subCtx := FingerprintSubContext{} - node.Coldeflist.Fingerprint(&subCtx, node, "Coldeflist") - - if len(subCtx.parts) > 0 { - ctx.WriteString("coldeflist") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if node.Typevar != nil { - subCtx := FingerprintSubContext{} - node.Typevar.Fingerprint(&subCtx, node, "Typevar") - - if len(subCtx.parts) > 0 { - ctx.WriteString("typevar") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } -} diff --git a/nodes/const.go b/nodes/const.go deleted file mode 100644 index 557d28f7..00000000 --- a/nodes/const.go +++ /dev/null @@ -1,112 +0,0 @@ -// Auto-generated from postgres/src/include/nodes/primnodes.h - DO NOT EDIT - -package pg_query - -import "encoding/json" - -/* - * Const - * - * Note: for varlena data types, we make a rule that a Const node's value - * must be in non-extended form (4-byte header, no compression or external - * references). This ensures that the Const node is self-contained and makes - * it more likely that equal() will see logically identical values as equal. - */ -type Const struct { - Xpr Node `json:"xpr"` - Consttype Oid `json:"consttype"` /* pg_type OID of the constant's datatype */ - Consttypmod int32 `json:"consttypmod"` /* typmod value, if any */ - Constcollid Oid `json:"constcollid"` /* OID of collation, or InvalidOid if none */ - Constlen int `json:"constlen"` /* typlen of the constant's datatype */ - Constvalue Datum `json:"constvalue"` /* the constant's value */ - Constisnull bool `json:"constisnull"` /* whether the constant is null (if true, - * constvalue is undefined) */ - - Constbyval bool `json:"constbyval"` /* whether this datatype is passed by value. - * If true, then all the information is stored - * in the Datum. If false, then the Datum - * contains a pointer to the information. */ - - Location int `json:"location"` /* token location, or -1 if unknown */ -} - -func (node Const) MarshalJSON() ([]byte, error) { - type ConstMarshalAlias Const - return json.Marshal(map[string]interface{}{ - "Const": (*ConstMarshalAlias)(&node), - }) -} - -func (node *Const) UnmarshalJSON(input []byte) (err error) { - var fields map[string]json.RawMessage - - err = json.Unmarshal(input, &fields) - if err != nil { - return - } - - if fields["xpr"] != nil { - node.Xpr, err = UnmarshalNodeJSON(fields["xpr"]) - if err != nil { - return - } - } - - if fields["consttype"] != nil { - err = json.Unmarshal(fields["consttype"], &node.Consttype) - if err != nil { - return - } - } - - if fields["consttypmod"] != nil { - err = json.Unmarshal(fields["consttypmod"], &node.Consttypmod) - if err != nil { - return - } - } - - if fields["constcollid"] != nil { - err = json.Unmarshal(fields["constcollid"], &node.Constcollid) - if err != nil { - return - } - } - - if fields["constlen"] != nil { - err = json.Unmarshal(fields["constlen"], &node.Constlen) - if err != nil { - return - } - } - - if fields["constvalue"] != nil { - err = json.Unmarshal(fields["constvalue"], &node.Constvalue) - if err != nil { - return - } - } - - if fields["constisnull"] != nil { - err = json.Unmarshal(fields["constisnull"], &node.Constisnull) - if err != nil { - return - } - } - - if fields["constbyval"] != nil { - err = json.Unmarshal(fields["constbyval"], &node.Constbyval) - if err != nil { - return - } - } - - if fields["location"] != nil { - err = json.Unmarshal(fields["location"], &node.Location) - if err != nil { - return - } - } - - return -} diff --git a/nodes/const_deparse.go b/nodes/const_deparse.go deleted file mode 100644 index fd49b672..00000000 --- a/nodes/const_deparse.go +++ /dev/null @@ -1,7 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -func (node Const) Deparse() string { - panic("Not Implemented") -} diff --git a/nodes/const_fingerprint.go b/nodes/const_fingerprint.go deleted file mode 100644 index 9492794e..00000000 --- a/nodes/const_fingerprint.go +++ /dev/null @@ -1,53 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -import "strconv" - -func (node Const) Fingerprint(ctx FingerprintContext, parentNode Node, parentFieldName string) { - ctx.WriteString("Const") - - if node.Constbyval { - ctx.WriteString("constbyval") - ctx.WriteString(strconv.FormatBool(node.Constbyval)) - } - - if node.Constcollid != 0 { - ctx.WriteString("constcollid") - ctx.WriteString(strconv.Itoa(int(node.Constcollid))) - } - - if node.Constisnull { - ctx.WriteString("constisnull") - ctx.WriteString(strconv.FormatBool(node.Constisnull)) - } - - if node.Constlen != 0 { - ctx.WriteString("constlen") - ctx.WriteString(strconv.Itoa(int(node.Constlen))) - } - - if node.Consttype != 0 { - ctx.WriteString("consttype") - ctx.WriteString(strconv.Itoa(int(node.Consttype))) - } - - if node.Consttypmod != 0 { - ctx.WriteString("consttypmod") - ctx.WriteString(strconv.Itoa(int(node.Consttypmod))) - } - - // Intentionally ignoring node.Location for fingerprinting - - if node.Xpr != nil { - subCtx := FingerprintSubContext{} - node.Xpr.Fingerprint(&subCtx, node, "Xpr") - - if len(subCtx.parts) > 0 { - ctx.WriteString("xpr") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } -} diff --git a/nodes/constr_type.go b/nodes/constr_type.go deleted file mode 100644 index f7b47212..00000000 --- a/nodes/constr_type.go +++ /dev/null @@ -1,53 +0,0 @@ -// Auto-generated from postgres/src/include/nodes/parsenodes.h - DO NOT EDIT - -package pg_query - -/* ---------- - * Definitions for constraints in CreateStmt - * - * Note that column defaults are treated as a type of constraint, - * even though that's a bit odd semantically. - * - * For constraints that use expressions (CONSTR_CHECK, CONSTR_DEFAULT) - * we may have the expression in either "raw" form (an untransformed - * parse tree) or "cooked" form (the nodeToString representation of - * an executable expression tree), depending on how this Constraint - * node was created (by parsing, or by inheritance from an existing - * relation). We should never have both in the same node! - * - * FKCONSTR_ACTION_xxx values are stored into pg_constraint.confupdtype - * and pg_constraint.confdeltype columns; FKCONSTR_MATCH_xxx values are - * stored into pg_constraint.confmatchtype. Changing the code values may - * require an initdb! - * - * If skip_validation is true then we skip checking that the existing rows - * in the table satisfy the constraint, and just install the catalog entries - * for the constraint. A new FK constraint is marked as valid iff - * initially_valid is true. (Usually skip_validation and initially_valid - * are inverses, but we can set both true if the table is known empty.) - * - * Constraint attributes (DEFERRABLE etc) are initially represented as - * separate Constraint nodes for simplicity of parsing. parse_utilcmd.c makes - * a pass through the constraints list to insert the info into the appropriate - * Constraint node. - * ---------- - */ -type ConstrType uint - -const ( - CONSTR_NULL ConstrType = iota /* not standard SQL, but a lot of people - * expect it */ - - CONSTR_NOTNULL - CONSTR_DEFAULT - CONSTR_IDENTITY - CONSTR_CHECK - CONSTR_PRIMARY - CONSTR_UNIQUE - CONSTR_EXCLUSION - CONSTR_FOREIGN - CONSTR_ATTR_DEFERRABLE /* attributes for previous constraint node */ - CONSTR_ATTR_NOT_DEFERRABLE - CONSTR_ATTR_DEFERRED - CONSTR_ATTR_IMMEDIATE -) diff --git a/nodes/constraint.go b/nodes/constraint.go deleted file mode 100644 index 22c0a3e1..00000000 --- a/nodes/constraint.go +++ /dev/null @@ -1,265 +0,0 @@ -// Auto-generated from postgres/src/include/nodes/parsenodes.h - DO NOT EDIT - -package pg_query - -import "encoding/json" - -/* Foreign key matchtype codes */ -type Constraint struct { - Contype ConstrType `json:"contype"` /* see above */ - - /* Fields used for most/all constraint types: */ - Conname *string `json:"conname"` /* Constraint name, or NULL if unnamed */ - Deferrable bool `json:"deferrable"` /* DEFERRABLE? */ - Initdeferred bool `json:"initdeferred"` /* INITIALLY DEFERRED? */ - Location int `json:"location"` /* token location, or -1 if unknown */ - - /* Fields used for constraints with expressions (CHECK and DEFAULT): */ - IsNoInherit bool `json:"is_no_inherit"` /* is constraint non-inheritable? */ - RawExpr Node `json:"raw_expr"` /* expr, as untransformed parse tree */ - CookedExpr *string `json:"cooked_expr"` /* expr, as nodeToString representation */ - GeneratedWhen byte `json:"generated_when"` - - /* Fields used for unique constraints (UNIQUE and PRIMARY KEY): */ - Keys List `json:"keys"` /* String nodes naming referenced column(s) */ - - /* Fields used for EXCLUSION constraints: */ - Exclusions List `json:"exclusions"` /* list of (IndexElem, operator name) pairs */ - - /* Fields used for index constraints (UNIQUE, PRIMARY KEY, EXCLUSION): */ - Options List `json:"options"` /* options from WITH clause */ - Indexname *string `json:"indexname"` /* existing index to use; otherwise NULL */ - Indexspace *string `json:"indexspace"` /* index tablespace; NULL for default */ - - /* These could be, but currently are not, used for UNIQUE/PKEY: */ - AccessMethod *string `json:"access_method"` /* index access method; NULL for default */ - WhereClause Node `json:"where_clause"` /* partial index predicate */ - - /* Fields used for FOREIGN KEY constraints: */ - Pktable *RangeVar `json:"pktable"` /* Primary key table */ - FkAttrs List `json:"fk_attrs"` /* Attributes of foreign key */ - PkAttrs List `json:"pk_attrs"` /* Corresponding attrs in PK table */ - FkMatchtype byte `json:"fk_matchtype"` /* FULL, PARTIAL, SIMPLE */ - FkUpdAction byte `json:"fk_upd_action"` /* ON UPDATE action */ - FkDelAction byte `json:"fk_del_action"` /* ON DELETE action */ - OldConpfeqop List `json:"old_conpfeqop"` /* pg_constraint.conpfeqop of my former self */ - OldPktableOid Oid `json:"old_pktable_oid"` /* pg_constraint.confrelid of my former - * self */ - - /* Fields used for constraints that allow a NOT VALID specification */ - SkipValidation bool `json:"skip_validation"` /* skip validation of existing rows? */ - InitiallyValid bool `json:"initially_valid"` /* mark the new constraint as valid? */ -} - -func (node Constraint) MarshalJSON() ([]byte, error) { - type ConstraintMarshalAlias Constraint - return json.Marshal(map[string]interface{}{ - "Constraint": (*ConstraintMarshalAlias)(&node), - }) -} - -func (node *Constraint) UnmarshalJSON(input []byte) (err error) { - var fields map[string]json.RawMessage - - err = json.Unmarshal(input, &fields) - if err != nil { - return - } - - if fields["contype"] != nil { - err = json.Unmarshal(fields["contype"], &node.Contype) - if err != nil { - return - } - } - - if fields["conname"] != nil { - err = json.Unmarshal(fields["conname"], &node.Conname) - if err != nil { - return - } - } - - if fields["deferrable"] != nil { - err = json.Unmarshal(fields["deferrable"], &node.Deferrable) - if err != nil { - return - } - } - - if fields["initdeferred"] != nil { - err = json.Unmarshal(fields["initdeferred"], &node.Initdeferred) - if err != nil { - return - } - } - - if fields["location"] != nil { - err = json.Unmarshal(fields["location"], &node.Location) - if err != nil { - return - } - } - - if fields["is_no_inherit"] != nil { - err = json.Unmarshal(fields["is_no_inherit"], &node.IsNoInherit) - if err != nil { - return - } - } - - if fields["raw_expr"] != nil { - node.RawExpr, err = UnmarshalNodeJSON(fields["raw_expr"]) - if err != nil { - return - } - } - - if fields["cooked_expr"] != nil { - err = json.Unmarshal(fields["cooked_expr"], &node.CookedExpr) - if err != nil { - return - } - } - - if fields["generated_when"] != nil { - var strVal string - err = json.Unmarshal(fields["generated_when"], &strVal) - node.GeneratedWhen = strVal[0] - if err != nil { - return - } - } - - if fields["keys"] != nil { - node.Keys.Items, err = UnmarshalNodeArrayJSON(fields["keys"]) - if err != nil { - return - } - } - - if fields["exclusions"] != nil { - node.Exclusions.Items, err = UnmarshalNodeArrayJSON(fields["exclusions"]) - if err != nil { - return - } - } - - if fields["options"] != nil { - node.Options.Items, err = UnmarshalNodeArrayJSON(fields["options"]) - if err != nil { - return - } - } - - if fields["indexname"] != nil { - err = json.Unmarshal(fields["indexname"], &node.Indexname) - if err != nil { - return - } - } - - if fields["indexspace"] != nil { - err = json.Unmarshal(fields["indexspace"], &node.Indexspace) - if err != nil { - return - } - } - - if fields["access_method"] != nil { - err = json.Unmarshal(fields["access_method"], &node.AccessMethod) - if err != nil { - return - } - } - - if fields["where_clause"] != nil { - node.WhereClause, err = UnmarshalNodeJSON(fields["where_clause"]) - if err != nil { - return - } - } - - if fields["pktable"] != nil { - var nodePtr *Node - nodePtr, err = UnmarshalNodePtrJSON(fields["pktable"]) - if err != nil { - return - } - if nodePtr != nil && *nodePtr != nil { - val := (*nodePtr).(RangeVar) - node.Pktable = &val - } - } - - if fields["fk_attrs"] != nil { - node.FkAttrs.Items, err = UnmarshalNodeArrayJSON(fields["fk_attrs"]) - if err != nil { - return - } - } - - if fields["pk_attrs"] != nil { - node.PkAttrs.Items, err = UnmarshalNodeArrayJSON(fields["pk_attrs"]) - if err != nil { - return - } - } - - if fields["fk_matchtype"] != nil { - var strVal string - err = json.Unmarshal(fields["fk_matchtype"], &strVal) - node.FkMatchtype = strVal[0] - if err != nil { - return - } - } - - if fields["fk_upd_action"] != nil { - var strVal string - err = json.Unmarshal(fields["fk_upd_action"], &strVal) - node.FkUpdAction = strVal[0] - if err != nil { - return - } - } - - if fields["fk_del_action"] != nil { - var strVal string - err = json.Unmarshal(fields["fk_del_action"], &strVal) - node.FkDelAction = strVal[0] - if err != nil { - return - } - } - - if fields["old_conpfeqop"] != nil { - node.OldConpfeqop.Items, err = UnmarshalNodeArrayJSON(fields["old_conpfeqop"]) - if err != nil { - return - } - } - - if fields["old_pktable_oid"] != nil { - err = json.Unmarshal(fields["old_pktable_oid"], &node.OldPktableOid) - if err != nil { - return - } - } - - if fields["skip_validation"] != nil { - err = json.Unmarshal(fields["skip_validation"], &node.SkipValidation) - if err != nil { - return - } - } - - if fields["initially_valid"] != nil { - err = json.Unmarshal(fields["initially_valid"], &node.InitiallyValid) - if err != nil { - return - } - } - - return -} diff --git a/nodes/constraint_deparse.go b/nodes/constraint_deparse.go deleted file mode 100644 index 9482cb24..00000000 --- a/nodes/constraint_deparse.go +++ /dev/null @@ -1,7 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -func (node Constraint) Deparse() string { - panic("Not Implemented") -} diff --git a/nodes/constraint_fingerprint.go b/nodes/constraint_fingerprint.go deleted file mode 100644 index 023e5eaa..00000000 --- a/nodes/constraint_fingerprint.go +++ /dev/null @@ -1,202 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -import "strconv" - -func (node Constraint) Fingerprint(ctx FingerprintContext, parentNode Node, parentFieldName string) { - ctx.WriteString("Constraint") - - if node.AccessMethod != nil { - ctx.WriteString("access_method") - ctx.WriteString(*node.AccessMethod) - } - - if node.Conname != nil { - ctx.WriteString("conname") - ctx.WriteString(*node.Conname) - } - - if int(node.Contype) != 0 { - ctx.WriteString("contype") - ctx.WriteString(strconv.Itoa(int(node.Contype))) - } - - if node.CookedExpr != nil { - ctx.WriteString("cooked_expr") - ctx.WriteString(*node.CookedExpr) - } - - if node.Deferrable { - ctx.WriteString("deferrable") - ctx.WriteString(strconv.FormatBool(node.Deferrable)) - } - - if len(node.Exclusions.Items) > 0 { - subCtx := FingerprintSubContext{} - node.Exclusions.Fingerprint(&subCtx, node, "Exclusions") - - if len(subCtx.parts) > 0 { - ctx.WriteString("exclusions") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if len(node.FkAttrs.Items) > 0 { - subCtx := FingerprintSubContext{} - node.FkAttrs.Fingerprint(&subCtx, node, "FkAttrs") - - if len(subCtx.parts) > 0 { - ctx.WriteString("fk_attrs") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if node.FkDelAction != 0 { - ctx.WriteString("fk_del_action") - ctx.WriteString(string(node.FkDelAction)) - - } - - if node.FkMatchtype != 0 { - ctx.WriteString("fk_matchtype") - ctx.WriteString(string(node.FkMatchtype)) - - } - - if node.FkUpdAction != 0 { - ctx.WriteString("fk_upd_action") - ctx.WriteString(string(node.FkUpdAction)) - - } - - if node.GeneratedWhen != 0 { - ctx.WriteString("generated_when") - ctx.WriteString(string(node.GeneratedWhen)) - - } - - if node.Indexname != nil { - ctx.WriteString("indexname") - ctx.WriteString(*node.Indexname) - } - - if node.Indexspace != nil { - ctx.WriteString("indexspace") - ctx.WriteString(*node.Indexspace) - } - - if node.Initdeferred { - ctx.WriteString("initdeferred") - ctx.WriteString(strconv.FormatBool(node.Initdeferred)) - } - - if node.InitiallyValid { - ctx.WriteString("initially_valid") - ctx.WriteString(strconv.FormatBool(node.InitiallyValid)) - } - - if node.IsNoInherit { - ctx.WriteString("is_no_inherit") - ctx.WriteString(strconv.FormatBool(node.IsNoInherit)) - } - - if len(node.Keys.Items) > 0 { - subCtx := FingerprintSubContext{} - node.Keys.Fingerprint(&subCtx, node, "Keys") - - if len(subCtx.parts) > 0 { - ctx.WriteString("keys") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - // Intentionally ignoring node.Location for fingerprinting - - if len(node.OldConpfeqop.Items) > 0 { - subCtx := FingerprintSubContext{} - node.OldConpfeqop.Fingerprint(&subCtx, node, "OldConpfeqop") - - if len(subCtx.parts) > 0 { - ctx.WriteString("old_conpfeqop") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if node.OldPktableOid != 0 { - ctx.WriteString("old_pktable_oid") - ctx.WriteString(strconv.Itoa(int(node.OldPktableOid))) - } - - if len(node.Options.Items) > 0 { - subCtx := FingerprintSubContext{} - node.Options.Fingerprint(&subCtx, node, "Options") - - if len(subCtx.parts) > 0 { - ctx.WriteString("options") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if len(node.PkAttrs.Items) > 0 { - subCtx := FingerprintSubContext{} - node.PkAttrs.Fingerprint(&subCtx, node, "PkAttrs") - - if len(subCtx.parts) > 0 { - ctx.WriteString("pk_attrs") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if node.Pktable != nil { - subCtx := FingerprintSubContext{} - node.Pktable.Fingerprint(&subCtx, node, "Pktable") - - if len(subCtx.parts) > 0 { - ctx.WriteString("pktable") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if node.RawExpr != nil { - subCtx := FingerprintSubContext{} - node.RawExpr.Fingerprint(&subCtx, node, "RawExpr") - - if len(subCtx.parts) > 0 { - ctx.WriteString("raw_expr") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if node.SkipValidation { - ctx.WriteString("skip_validation") - ctx.WriteString(strconv.FormatBool(node.SkipValidation)) - } - - if node.WhereClause != nil { - subCtx := FingerprintSubContext{} - node.WhereClause.Fingerprint(&subCtx, node, "WhereClause") - - if len(subCtx.parts) > 0 { - ctx.WriteString("where_clause") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } -} diff --git a/nodes/constraints_set_stmt.go b/nodes/constraints_set_stmt.go deleted file mode 100644 index f58f7152..00000000 --- a/nodes/constraints_set_stmt.go +++ /dev/null @@ -1,46 +0,0 @@ -// Auto-generated from postgres/src/include/nodes/parsenodes.h - DO NOT EDIT - -package pg_query - -import "encoding/json" - -/* ---------------------- - * SET CONSTRAINTS Statement - * ---------------------- - */ -type ConstraintsSetStmt struct { - Constraints List `json:"constraints"` /* List of names as RangeVars */ - Deferred bool `json:"deferred"` -} - -func (node ConstraintsSetStmt) MarshalJSON() ([]byte, error) { - type ConstraintsSetStmtMarshalAlias ConstraintsSetStmt - return json.Marshal(map[string]interface{}{ - "ConstraintsSetStmt": (*ConstraintsSetStmtMarshalAlias)(&node), - }) -} - -func (node *ConstraintsSetStmt) UnmarshalJSON(input []byte) (err error) { - var fields map[string]json.RawMessage - - err = json.Unmarshal(input, &fields) - if err != nil { - return - } - - if fields["constraints"] != nil { - node.Constraints.Items, err = UnmarshalNodeArrayJSON(fields["constraints"]) - if err != nil { - return - } - } - - if fields["deferred"] != nil { - err = json.Unmarshal(fields["deferred"], &node.Deferred) - if err != nil { - return - } - } - - return -} diff --git a/nodes/constraints_set_stmt_deparse.go b/nodes/constraints_set_stmt_deparse.go deleted file mode 100644 index 9ae17a93..00000000 --- a/nodes/constraints_set_stmt_deparse.go +++ /dev/null @@ -1,7 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -func (node ConstraintsSetStmt) Deparse() string { - panic("Not Implemented") -} diff --git a/nodes/constraints_set_stmt_fingerprint.go b/nodes/constraints_set_stmt_fingerprint.go deleted file mode 100644 index a145f4ae..00000000 --- a/nodes/constraints_set_stmt_fingerprint.go +++ /dev/null @@ -1,26 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -import "strconv" - -func (node ConstraintsSetStmt) Fingerprint(ctx FingerprintContext, parentNode Node, parentFieldName string) { - ctx.WriteString("ConstraintsSetStmt") - - if len(node.Constraints.Items) > 0 { - subCtx := FingerprintSubContext{} - node.Constraints.Fingerprint(&subCtx, node, "Constraints") - - if len(subCtx.parts) > 0 { - ctx.WriteString("constraints") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if node.Deferred { - ctx.WriteString("deferred") - ctx.WriteString(strconv.FormatBool(node.Deferred)) - } -} diff --git a/nodes/convert_rowtype_expr.go b/nodes/convert_rowtype_expr.go deleted file mode 100644 index ccdab123..00000000 --- a/nodes/convert_rowtype_expr.go +++ /dev/null @@ -1,79 +0,0 @@ -// Auto-generated from postgres/src/include/nodes/primnodes.h - DO NOT EDIT - -package pg_query - -import "encoding/json" - -/* ---------------- - * ConvertRowtypeExpr - * - * ConvertRowtypeExpr represents a type coercion from one composite type - * to another, where the source type is guaranteed to contain all the columns - * needed for the destination type plus possibly others; the columns need not - * be in the same positions, but are matched up by name. This is primarily - * used to convert a whole-row value of an inheritance child table into a - * valid whole-row value of its parent table's rowtype. - * ---------------- - */ -type ConvertRowtypeExpr struct { - Xpr Node `json:"xpr"` - Arg Node `json:"arg"` /* input expression */ - Resulttype Oid `json:"resulttype"` /* output type (always a composite type) */ - - /* Like RowExpr, we deliberately omit a typmod and collation here */ - Convertformat CoercionForm `json:"convertformat"` /* how to display this node */ - Location int `json:"location"` /* token location, or -1 if unknown */ -} - -func (node ConvertRowtypeExpr) MarshalJSON() ([]byte, error) { - type ConvertRowtypeExprMarshalAlias ConvertRowtypeExpr - return json.Marshal(map[string]interface{}{ - "ConvertRowtypeExpr": (*ConvertRowtypeExprMarshalAlias)(&node), - }) -} - -func (node *ConvertRowtypeExpr) UnmarshalJSON(input []byte) (err error) { - var fields map[string]json.RawMessage - - err = json.Unmarshal(input, &fields) - if err != nil { - return - } - - if fields["xpr"] != nil { - node.Xpr, err = UnmarshalNodeJSON(fields["xpr"]) - if err != nil { - return - } - } - - if fields["arg"] != nil { - node.Arg, err = UnmarshalNodeJSON(fields["arg"]) - if err != nil { - return - } - } - - if fields["resulttype"] != nil { - err = json.Unmarshal(fields["resulttype"], &node.Resulttype) - if err != nil { - return - } - } - - if fields["convertformat"] != nil { - err = json.Unmarshal(fields["convertformat"], &node.Convertformat) - if err != nil { - return - } - } - - if fields["location"] != nil { - err = json.Unmarshal(fields["location"], &node.Location) - if err != nil { - return - } - } - - return -} diff --git a/nodes/convert_rowtype_expr_deparse.go b/nodes/convert_rowtype_expr_deparse.go deleted file mode 100644 index 84e712ba..00000000 --- a/nodes/convert_rowtype_expr_deparse.go +++ /dev/null @@ -1,7 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -func (node ConvertRowtypeExpr) Deparse() string { - panic("Not Implemented") -} diff --git a/nodes/convert_rowtype_expr_fingerprint.go b/nodes/convert_rowtype_expr_fingerprint.go deleted file mode 100644 index 07ed2e14..00000000 --- a/nodes/convert_rowtype_expr_fingerprint.go +++ /dev/null @@ -1,45 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -import "strconv" - -func (node ConvertRowtypeExpr) Fingerprint(ctx FingerprintContext, parentNode Node, parentFieldName string) { - ctx.WriteString("ConvertRowtypeExpr") - - if node.Arg != nil { - subCtx := FingerprintSubContext{} - node.Arg.Fingerprint(&subCtx, node, "Arg") - - if len(subCtx.parts) > 0 { - ctx.WriteString("arg") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if int(node.Convertformat) != 0 { - ctx.WriteString("convertformat") - ctx.WriteString(strconv.Itoa(int(node.Convertformat))) - } - - // Intentionally ignoring node.Location for fingerprinting - - if node.Resulttype != 0 { - ctx.WriteString("resulttype") - ctx.WriteString(strconv.Itoa(int(node.Resulttype))) - } - - if node.Xpr != nil { - subCtx := FingerprintSubContext{} - node.Xpr.Fingerprint(&subCtx, node, "Xpr") - - if len(subCtx.parts) > 0 { - ctx.WriteString("xpr") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } -} diff --git a/nodes/copy_stmt.go b/nodes/copy_stmt.go deleted file mode 100644 index 1790ae2b..00000000 --- a/nodes/copy_stmt.go +++ /dev/null @@ -1,99 +0,0 @@ -// Auto-generated from postgres/src/include/nodes/parsenodes.h - DO NOT EDIT - -package pg_query - -import "encoding/json" - -/* ---------------------- - * Copy Statement - * - * We support "COPY relation FROM file", "COPY relation TO file", and - * "COPY (query) TO file". In any given CopyStmt, exactly one of "relation" - * and "query" must be non-NULL. - * ---------------------- - */ -type CopyStmt struct { - Relation *RangeVar `json:"relation"` /* the relation to copy */ - Query Node `json:"query"` /* the query (SELECT or DML statement with - * RETURNING) to copy, as a raw parse tree */ - - Attlist List `json:"attlist"` /* List of column names (as Strings), or NIL - * for all columns */ - - IsFrom bool `json:"is_from"` /* TO or FROM */ - IsProgram bool `json:"is_program"` /* is 'filename' a program to popen? */ - Filename *string `json:"filename"` /* filename, or NULL for STDIN/STDOUT */ - Options List `json:"options"` /* List of DefElem nodes */ -} - -func (node CopyStmt) MarshalJSON() ([]byte, error) { - type CopyStmtMarshalAlias CopyStmt - return json.Marshal(map[string]interface{}{ - "CopyStmt": (*CopyStmtMarshalAlias)(&node), - }) -} - -func (node *CopyStmt) UnmarshalJSON(input []byte) (err error) { - var fields map[string]json.RawMessage - - err = json.Unmarshal(input, &fields) - if err != nil { - return - } - - if fields["relation"] != nil { - var nodePtr *Node - nodePtr, err = UnmarshalNodePtrJSON(fields["relation"]) - if err != nil { - return - } - if nodePtr != nil && *nodePtr != nil { - val := (*nodePtr).(RangeVar) - node.Relation = &val - } - } - - if fields["query"] != nil { - node.Query, err = UnmarshalNodeJSON(fields["query"]) - if err != nil { - return - } - } - - if fields["attlist"] != nil { - node.Attlist.Items, err = UnmarshalNodeArrayJSON(fields["attlist"]) - if err != nil { - return - } - } - - if fields["is_from"] != nil { - err = json.Unmarshal(fields["is_from"], &node.IsFrom) - if err != nil { - return - } - } - - if fields["is_program"] != nil { - err = json.Unmarshal(fields["is_program"], &node.IsProgram) - if err != nil { - return - } - } - - if fields["filename"] != nil { - err = json.Unmarshal(fields["filename"], &node.Filename) - if err != nil { - return - } - } - - if fields["options"] != nil { - node.Options.Items, err = UnmarshalNodeArrayJSON(fields["options"]) - if err != nil { - return - } - } - - return -} diff --git a/nodes/copy_stmt_deparse.go b/nodes/copy_stmt_deparse.go deleted file mode 100644 index ba491dc1..00000000 --- a/nodes/copy_stmt_deparse.go +++ /dev/null @@ -1,7 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -func (node CopyStmt) Deparse() string { - panic("Not Implemented") -} diff --git a/nodes/copy_stmt_fingerprint.go b/nodes/copy_stmt_fingerprint.go deleted file mode 100644 index da2fc43d..00000000 --- a/nodes/copy_stmt_fingerprint.go +++ /dev/null @@ -1,72 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -import "strconv" - -func (node CopyStmt) Fingerprint(ctx FingerprintContext, parentNode Node, parentFieldName string) { - ctx.WriteString("CopyStmt") - - if len(node.Attlist.Items) > 0 { - subCtx := FingerprintSubContext{} - node.Attlist.Fingerprint(&subCtx, node, "Attlist") - - if len(subCtx.parts) > 0 { - ctx.WriteString("attlist") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if node.Filename != nil { - ctx.WriteString("filename") - ctx.WriteString(*node.Filename) - } - - if node.IsFrom { - ctx.WriteString("is_from") - ctx.WriteString(strconv.FormatBool(node.IsFrom)) - } - - if node.IsProgram { - ctx.WriteString("is_program") - ctx.WriteString(strconv.FormatBool(node.IsProgram)) - } - - if len(node.Options.Items) > 0 { - subCtx := FingerprintSubContext{} - node.Options.Fingerprint(&subCtx, node, "Options") - - if len(subCtx.parts) > 0 { - ctx.WriteString("options") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if node.Query != nil { - subCtx := FingerprintSubContext{} - node.Query.Fingerprint(&subCtx, node, "Query") - - if len(subCtx.parts) > 0 { - ctx.WriteString("query") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if node.Relation != nil { - subCtx := FingerprintSubContext{} - node.Relation.Fingerprint(&subCtx, node, "Relation") - - if len(subCtx.parts) > 0 { - ctx.WriteString("relation") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } -} diff --git a/nodes/create_am_stmt.go b/nodes/create_am_stmt.go deleted file mode 100644 index a99f5e6b..00000000 --- a/nodes/create_am_stmt.go +++ /dev/null @@ -1,56 +0,0 @@ -// Auto-generated from postgres/src/include/nodes/parsenodes.h - DO NOT EDIT - -package pg_query - -import "encoding/json" - -/*---------------------- - * Create ACCESS METHOD Statement - *---------------------- - */ -type CreateAmStmt struct { - Amname *string `json:"amname"` /* access method name */ - HandlerName List `json:"handler_name"` /* handler function name */ - Amtype byte `json:"amtype"` /* type of access method */ -} - -func (node CreateAmStmt) MarshalJSON() ([]byte, error) { - type CreateAmStmtMarshalAlias CreateAmStmt - return json.Marshal(map[string]interface{}{ - "CreateAmStmt": (*CreateAmStmtMarshalAlias)(&node), - }) -} - -func (node *CreateAmStmt) UnmarshalJSON(input []byte) (err error) { - var fields map[string]json.RawMessage - - err = json.Unmarshal(input, &fields) - if err != nil { - return - } - - if fields["amname"] != nil { - err = json.Unmarshal(fields["amname"], &node.Amname) - if err != nil { - return - } - } - - if fields["handler_name"] != nil { - node.HandlerName.Items, err = UnmarshalNodeArrayJSON(fields["handler_name"]) - if err != nil { - return - } - } - - if fields["amtype"] != nil { - var strVal string - err = json.Unmarshal(fields["amtype"], &strVal) - node.Amtype = strVal[0] - if err != nil { - return - } - } - - return -} diff --git a/nodes/create_am_stmt_deparse.go b/nodes/create_am_stmt_deparse.go deleted file mode 100644 index 01aae2ed..00000000 --- a/nodes/create_am_stmt_deparse.go +++ /dev/null @@ -1,7 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -func (node CreateAmStmt) Deparse() string { - panic("Not Implemented") -} diff --git a/nodes/create_am_stmt_fingerprint.go b/nodes/create_am_stmt_fingerprint.go deleted file mode 100644 index 27aa6d96..00000000 --- a/nodes/create_am_stmt_fingerprint.go +++ /dev/null @@ -1,30 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -func (node CreateAmStmt) Fingerprint(ctx FingerprintContext, parentNode Node, parentFieldName string) { - ctx.WriteString("CreateAmStmt") - - if node.Amname != nil { - ctx.WriteString("amname") - ctx.WriteString(*node.Amname) - } - - if node.Amtype != 0 { - ctx.WriteString("amtype") - ctx.WriteString(string(node.Amtype)) - - } - - if len(node.HandlerName.Items) > 0 { - subCtx := FingerprintSubContext{} - node.HandlerName.Fingerprint(&subCtx, node, "HandlerName") - - if len(subCtx.parts) > 0 { - ctx.WriteString("handler_name") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } -} diff --git a/nodes/create_cast_stmt.go b/nodes/create_cast_stmt.go deleted file mode 100644 index b8c4348f..00000000 --- a/nodes/create_cast_stmt.go +++ /dev/null @@ -1,85 +0,0 @@ -// Auto-generated from postgres/src/include/nodes/parsenodes.h - DO NOT EDIT - -package pg_query - -import "encoding/json" - -/* ---------------------- - * CREATE CAST Statement - * ---------------------- - */ -type CreateCastStmt struct { - Sourcetype *TypeName `json:"sourcetype"` - Targettype *TypeName `json:"targettype"` - Func *ObjectWithArgs `json:"func"` - Context CoercionContext `json:"context"` - Inout bool `json:"inout"` -} - -func (node CreateCastStmt) MarshalJSON() ([]byte, error) { - type CreateCastStmtMarshalAlias CreateCastStmt - return json.Marshal(map[string]interface{}{ - "CreateCastStmt": (*CreateCastStmtMarshalAlias)(&node), - }) -} - -func (node *CreateCastStmt) UnmarshalJSON(input []byte) (err error) { - var fields map[string]json.RawMessage - - err = json.Unmarshal(input, &fields) - if err != nil { - return - } - - if fields["sourcetype"] != nil { - var nodePtr *Node - nodePtr, err = UnmarshalNodePtrJSON(fields["sourcetype"]) - if err != nil { - return - } - if nodePtr != nil && *nodePtr != nil { - val := (*nodePtr).(TypeName) - node.Sourcetype = &val - } - } - - if fields["targettype"] != nil { - var nodePtr *Node - nodePtr, err = UnmarshalNodePtrJSON(fields["targettype"]) - if err != nil { - return - } - if nodePtr != nil && *nodePtr != nil { - val := (*nodePtr).(TypeName) - node.Targettype = &val - } - } - - if fields["func"] != nil { - var nodePtr *Node - nodePtr, err = UnmarshalNodePtrJSON(fields["func"]) - if err != nil { - return - } - if nodePtr != nil && *nodePtr != nil { - val := (*nodePtr).(ObjectWithArgs) - node.Func = &val - } - } - - if fields["context"] != nil { - err = json.Unmarshal(fields["context"], &node.Context) - if err != nil { - return - } - } - - if fields["inout"] != nil { - err = json.Unmarshal(fields["inout"], &node.Inout) - if err != nil { - return - } - } - - return -} diff --git a/nodes/create_cast_stmt_deparse.go b/nodes/create_cast_stmt_deparse.go deleted file mode 100644 index f30f3f69..00000000 --- a/nodes/create_cast_stmt_deparse.go +++ /dev/null @@ -1,7 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -func (node CreateCastStmt) Deparse() string { - panic("Not Implemented") -} diff --git a/nodes/create_cast_stmt_fingerprint.go b/nodes/create_cast_stmt_fingerprint.go deleted file mode 100644 index e14937e9..00000000 --- a/nodes/create_cast_stmt_fingerprint.go +++ /dev/null @@ -1,55 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -import "strconv" - -func (node CreateCastStmt) Fingerprint(ctx FingerprintContext, parentNode Node, parentFieldName string) { - ctx.WriteString("CreateCastStmt") - - if int(node.Context) != 0 { - ctx.WriteString("context") - ctx.WriteString(strconv.Itoa(int(node.Context))) - } - - if node.Func != nil { - subCtx := FingerprintSubContext{} - node.Func.Fingerprint(&subCtx, node, "Func") - - if len(subCtx.parts) > 0 { - ctx.WriteString("func") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if node.Inout { - ctx.WriteString("inout") - ctx.WriteString(strconv.FormatBool(node.Inout)) - } - - if node.Sourcetype != nil { - subCtx := FingerprintSubContext{} - node.Sourcetype.Fingerprint(&subCtx, node, "Sourcetype") - - if len(subCtx.parts) > 0 { - ctx.WriteString("sourcetype") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if node.Targettype != nil { - subCtx := FingerprintSubContext{} - node.Targettype.Fingerprint(&subCtx, node, "Targettype") - - if len(subCtx.parts) > 0 { - ctx.WriteString("targettype") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } -} diff --git a/nodes/create_conversion_stmt.go b/nodes/create_conversion_stmt.go deleted file mode 100644 index d152f4c7..00000000 --- a/nodes/create_conversion_stmt.go +++ /dev/null @@ -1,70 +0,0 @@ -// Auto-generated from postgres/src/include/nodes/parsenodes.h - DO NOT EDIT - -package pg_query - -import "encoding/json" - -/* ---------------------- - * CREATE CONVERSION Statement - * ---------------------- - */ -type CreateConversionStmt struct { - ConversionName List `json:"conversion_name"` /* Name of the conversion */ - ForEncodingName *string `json:"for_encoding_name"` /* source encoding name */ - ToEncodingName *string `json:"to_encoding_name"` /* destination encoding name */ - FuncName List `json:"func_name"` /* qualified conversion function name */ - Def bool `json:"def"` /* is this a default conversion? */ -} - -func (node CreateConversionStmt) MarshalJSON() ([]byte, error) { - type CreateConversionStmtMarshalAlias CreateConversionStmt - return json.Marshal(map[string]interface{}{ - "CreateConversionStmt": (*CreateConversionStmtMarshalAlias)(&node), - }) -} - -func (node *CreateConversionStmt) UnmarshalJSON(input []byte) (err error) { - var fields map[string]json.RawMessage - - err = json.Unmarshal(input, &fields) - if err != nil { - return - } - - if fields["conversion_name"] != nil { - node.ConversionName.Items, err = UnmarshalNodeArrayJSON(fields["conversion_name"]) - if err != nil { - return - } - } - - if fields["for_encoding_name"] != nil { - err = json.Unmarshal(fields["for_encoding_name"], &node.ForEncodingName) - if err != nil { - return - } - } - - if fields["to_encoding_name"] != nil { - err = json.Unmarshal(fields["to_encoding_name"], &node.ToEncodingName) - if err != nil { - return - } - } - - if fields["func_name"] != nil { - node.FuncName.Items, err = UnmarshalNodeArrayJSON(fields["func_name"]) - if err != nil { - return - } - } - - if fields["def"] != nil { - err = json.Unmarshal(fields["def"], &node.Def) - if err != nil { - return - } - } - - return -} diff --git a/nodes/create_conversion_stmt_deparse.go b/nodes/create_conversion_stmt_deparse.go deleted file mode 100644 index 42c1d3ce..00000000 --- a/nodes/create_conversion_stmt_deparse.go +++ /dev/null @@ -1,7 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -func (node CreateConversionStmt) Deparse() string { - panic("Not Implemented") -} diff --git a/nodes/create_conversion_stmt_fingerprint.go b/nodes/create_conversion_stmt_fingerprint.go deleted file mode 100644 index f41406a5..00000000 --- a/nodes/create_conversion_stmt_fingerprint.go +++ /dev/null @@ -1,48 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -import "strconv" - -func (node CreateConversionStmt) Fingerprint(ctx FingerprintContext, parentNode Node, parentFieldName string) { - ctx.WriteString("CreateConversionStmt") - - if len(node.ConversionName.Items) > 0 { - subCtx := FingerprintSubContext{} - node.ConversionName.Fingerprint(&subCtx, node, "ConversionName") - - if len(subCtx.parts) > 0 { - ctx.WriteString("conversion_name") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if node.Def { - ctx.WriteString("def") - ctx.WriteString(strconv.FormatBool(node.Def)) - } - - if node.ForEncodingName != nil { - ctx.WriteString("for_encoding_name") - ctx.WriteString(*node.ForEncodingName) - } - - if len(node.FuncName.Items) > 0 { - subCtx := FingerprintSubContext{} - node.FuncName.Fingerprint(&subCtx, node, "FuncName") - - if len(subCtx.parts) > 0 { - ctx.WriteString("func_name") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if node.ToEncodingName != nil { - ctx.WriteString("to_encoding_name") - ctx.WriteString(*node.ToEncodingName) - } -} diff --git a/nodes/create_domain_stmt.go b/nodes/create_domain_stmt.go deleted file mode 100644 index 758aa2cf..00000000 --- a/nodes/create_domain_stmt.go +++ /dev/null @@ -1,72 +0,0 @@ -// Auto-generated from postgres/src/include/nodes/parsenodes.h - DO NOT EDIT - -package pg_query - -import "encoding/json" - -/* ---------------------- - * Create Domain Statement - * ---------------------- - */ -type CreateDomainStmt struct { - Domainname List `json:"domainname"` /* qualified name (list of Value strings) */ - TypeName *TypeName `json:"typeName"` /* the base type */ - CollClause *CollateClause `json:"collClause"` /* untransformed COLLATE spec, if any */ - Constraints List `json:"constraints"` /* constraints (list of Constraint nodes) */ -} - -func (node CreateDomainStmt) MarshalJSON() ([]byte, error) { - type CreateDomainStmtMarshalAlias CreateDomainStmt - return json.Marshal(map[string]interface{}{ - "CreateDomainStmt": (*CreateDomainStmtMarshalAlias)(&node), - }) -} - -func (node *CreateDomainStmt) UnmarshalJSON(input []byte) (err error) { - var fields map[string]json.RawMessage - - err = json.Unmarshal(input, &fields) - if err != nil { - return - } - - if fields["domainname"] != nil { - node.Domainname.Items, err = UnmarshalNodeArrayJSON(fields["domainname"]) - if err != nil { - return - } - } - - if fields["typeName"] != nil { - var nodePtr *Node - nodePtr, err = UnmarshalNodePtrJSON(fields["typeName"]) - if err != nil { - return - } - if nodePtr != nil && *nodePtr != nil { - val := (*nodePtr).(TypeName) - node.TypeName = &val - } - } - - if fields["collClause"] != nil { - var nodePtr *Node - nodePtr, err = UnmarshalNodePtrJSON(fields["collClause"]) - if err != nil { - return - } - if nodePtr != nil && *nodePtr != nil { - val := (*nodePtr).(CollateClause) - node.CollClause = &val - } - } - - if fields["constraints"] != nil { - node.Constraints.Items, err = UnmarshalNodeArrayJSON(fields["constraints"]) - if err != nil { - return - } - } - - return -} diff --git a/nodes/create_domain_stmt_deparse.go b/nodes/create_domain_stmt_deparse.go deleted file mode 100644 index ddd37ab2..00000000 --- a/nodes/create_domain_stmt_deparse.go +++ /dev/null @@ -1,7 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -func (node CreateDomainStmt) Deparse() string { - panic("Not Implemented") -} diff --git a/nodes/create_domain_stmt_fingerprint.go b/nodes/create_domain_stmt_fingerprint.go deleted file mode 100644 index cf2fb190..00000000 --- a/nodes/create_domain_stmt_fingerprint.go +++ /dev/null @@ -1,55 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -func (node CreateDomainStmt) Fingerprint(ctx FingerprintContext, parentNode Node, parentFieldName string) { - ctx.WriteString("CreateDomainStmt") - - if node.CollClause != nil { - subCtx := FingerprintSubContext{} - node.CollClause.Fingerprint(&subCtx, node, "CollClause") - - if len(subCtx.parts) > 0 { - ctx.WriteString("collClause") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if len(node.Constraints.Items) > 0 { - subCtx := FingerprintSubContext{} - node.Constraints.Fingerprint(&subCtx, node, "Constraints") - - if len(subCtx.parts) > 0 { - ctx.WriteString("constraints") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if len(node.Domainname.Items) > 0 { - subCtx := FingerprintSubContext{} - node.Domainname.Fingerprint(&subCtx, node, "Domainname") - - if len(subCtx.parts) > 0 { - ctx.WriteString("domainname") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if node.TypeName != nil { - subCtx := FingerprintSubContext{} - node.TypeName.Fingerprint(&subCtx, node, "TypeName") - - if len(subCtx.parts) > 0 { - ctx.WriteString("typeName") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } -} diff --git a/nodes/create_enum_stmt.go b/nodes/create_enum_stmt.go deleted file mode 100644 index 9a17abfc..00000000 --- a/nodes/create_enum_stmt.go +++ /dev/null @@ -1,46 +0,0 @@ -// Auto-generated from postgres/src/include/nodes/parsenodes.h - DO NOT EDIT - -package pg_query - -import "encoding/json" - -/* ---------------------- - * Create Type Statement, enum types - * ---------------------- - */ -type CreateEnumStmt struct { - TypeName List `json:"typeName"` /* qualified name (list of Value strings) */ - Vals List `json:"vals"` /* enum values (list of Value strings) */ -} - -func (node CreateEnumStmt) MarshalJSON() ([]byte, error) { - type CreateEnumStmtMarshalAlias CreateEnumStmt - return json.Marshal(map[string]interface{}{ - "CreateEnumStmt": (*CreateEnumStmtMarshalAlias)(&node), - }) -} - -func (node *CreateEnumStmt) UnmarshalJSON(input []byte) (err error) { - var fields map[string]json.RawMessage - - err = json.Unmarshal(input, &fields) - if err != nil { - return - } - - if fields["typeName"] != nil { - node.TypeName.Items, err = UnmarshalNodeArrayJSON(fields["typeName"]) - if err != nil { - return - } - } - - if fields["vals"] != nil { - node.Vals.Items, err = UnmarshalNodeArrayJSON(fields["vals"]) - if err != nil { - return - } - } - - return -} diff --git a/nodes/create_enum_stmt_deparse.go b/nodes/create_enum_stmt_deparse.go deleted file mode 100644 index b618bc04..00000000 --- a/nodes/create_enum_stmt_deparse.go +++ /dev/null @@ -1,7 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -func (node CreateEnumStmt) Deparse() string { - panic("Not Implemented") -} diff --git a/nodes/create_enum_stmt_fingerprint.go b/nodes/create_enum_stmt_fingerprint.go deleted file mode 100644 index 4b67fdbb..00000000 --- a/nodes/create_enum_stmt_fingerprint.go +++ /dev/null @@ -1,31 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -func (node CreateEnumStmt) Fingerprint(ctx FingerprintContext, parentNode Node, parentFieldName string) { - ctx.WriteString("CreateEnumStmt") - - if len(node.TypeName.Items) > 0 { - subCtx := FingerprintSubContext{} - node.TypeName.Fingerprint(&subCtx, node, "TypeName") - - if len(subCtx.parts) > 0 { - ctx.WriteString("typeName") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if len(node.Vals.Items) > 0 { - subCtx := FingerprintSubContext{} - node.Vals.Fingerprint(&subCtx, node, "Vals") - - if len(subCtx.parts) > 0 { - ctx.WriteString("vals") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } -} diff --git a/nodes/create_event_trig_stmt.go b/nodes/create_event_trig_stmt.go deleted file mode 100644 index d2db247c..00000000 --- a/nodes/create_event_trig_stmt.go +++ /dev/null @@ -1,62 +0,0 @@ -// Auto-generated from postgres/src/include/nodes/parsenodes.h - DO NOT EDIT - -package pg_query - -import "encoding/json" - -/* ---------------------- - * Create EVENT TRIGGER Statement - * ---------------------- - */ -type CreateEventTrigStmt struct { - Trigname *string `json:"trigname"` /* TRIGGER's name */ - Eventname *string `json:"eventname"` /* event's identifier */ - Whenclause List `json:"whenclause"` /* list of DefElems indicating filtering */ - Funcname List `json:"funcname"` /* qual. name of function to call */ -} - -func (node CreateEventTrigStmt) MarshalJSON() ([]byte, error) { - type CreateEventTrigStmtMarshalAlias CreateEventTrigStmt - return json.Marshal(map[string]interface{}{ - "CreateEventTrigStmt": (*CreateEventTrigStmtMarshalAlias)(&node), - }) -} - -func (node *CreateEventTrigStmt) UnmarshalJSON(input []byte) (err error) { - var fields map[string]json.RawMessage - - err = json.Unmarshal(input, &fields) - if err != nil { - return - } - - if fields["trigname"] != nil { - err = json.Unmarshal(fields["trigname"], &node.Trigname) - if err != nil { - return - } - } - - if fields["eventname"] != nil { - err = json.Unmarshal(fields["eventname"], &node.Eventname) - if err != nil { - return - } - } - - if fields["whenclause"] != nil { - node.Whenclause.Items, err = UnmarshalNodeArrayJSON(fields["whenclause"]) - if err != nil { - return - } - } - - if fields["funcname"] != nil { - node.Funcname.Items, err = UnmarshalNodeArrayJSON(fields["funcname"]) - if err != nil { - return - } - } - - return -} diff --git a/nodes/create_event_trig_stmt_deparse.go b/nodes/create_event_trig_stmt_deparse.go deleted file mode 100644 index 0cd1864c..00000000 --- a/nodes/create_event_trig_stmt_deparse.go +++ /dev/null @@ -1,7 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -func (node CreateEventTrigStmt) Deparse() string { - panic("Not Implemented") -} diff --git a/nodes/create_event_trig_stmt_fingerprint.go b/nodes/create_event_trig_stmt_fingerprint.go deleted file mode 100644 index 06a51b9a..00000000 --- a/nodes/create_event_trig_stmt_fingerprint.go +++ /dev/null @@ -1,41 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -func (node CreateEventTrigStmt) Fingerprint(ctx FingerprintContext, parentNode Node, parentFieldName string) { - ctx.WriteString("CreateEventTrigStmt") - - if node.Eventname != nil { - ctx.WriteString("eventname") - ctx.WriteString(*node.Eventname) - } - - if len(node.Funcname.Items) > 0 { - subCtx := FingerprintSubContext{} - node.Funcname.Fingerprint(&subCtx, node, "Funcname") - - if len(subCtx.parts) > 0 { - ctx.WriteString("funcname") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if node.Trigname != nil { - ctx.WriteString("trigname") - ctx.WriteString(*node.Trigname) - } - - if len(node.Whenclause.Items) > 0 { - subCtx := FingerprintSubContext{} - node.Whenclause.Fingerprint(&subCtx, node, "Whenclause") - - if len(subCtx.parts) > 0 { - ctx.WriteString("whenclause") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } -} diff --git a/nodes/create_extension_stmt.go b/nodes/create_extension_stmt.go deleted file mode 100644 index 57653595..00000000 --- a/nodes/create_extension_stmt.go +++ /dev/null @@ -1,54 +0,0 @@ -// Auto-generated from postgres/src/include/nodes/parsenodes.h - DO NOT EDIT - -package pg_query - -import "encoding/json" - -/* ---------------------- - * Create/Alter Extension Statements - * ---------------------- - */ -type CreateExtensionStmt struct { - Extname *string `json:"extname"` - IfNotExists bool `json:"if_not_exists"` /* just do nothing if it already exists? */ - Options List `json:"options"` /* List of DefElem nodes */ -} - -func (node CreateExtensionStmt) MarshalJSON() ([]byte, error) { - type CreateExtensionStmtMarshalAlias CreateExtensionStmt - return json.Marshal(map[string]interface{}{ - "CreateExtensionStmt": (*CreateExtensionStmtMarshalAlias)(&node), - }) -} - -func (node *CreateExtensionStmt) UnmarshalJSON(input []byte) (err error) { - var fields map[string]json.RawMessage - - err = json.Unmarshal(input, &fields) - if err != nil { - return - } - - if fields["extname"] != nil { - err = json.Unmarshal(fields["extname"], &node.Extname) - if err != nil { - return - } - } - - if fields["if_not_exists"] != nil { - err = json.Unmarshal(fields["if_not_exists"], &node.IfNotExists) - if err != nil { - return - } - } - - if fields["options"] != nil { - node.Options.Items, err = UnmarshalNodeArrayJSON(fields["options"]) - if err != nil { - return - } - } - - return -} diff --git a/nodes/create_extension_stmt_deparse.go b/nodes/create_extension_stmt_deparse.go deleted file mode 100644 index 77e93124..00000000 --- a/nodes/create_extension_stmt_deparse.go +++ /dev/null @@ -1,7 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -func (node CreateExtensionStmt) Deparse() string { - panic("Not Implemented") -} diff --git a/nodes/create_extension_stmt_fingerprint.go b/nodes/create_extension_stmt_fingerprint.go deleted file mode 100644 index 78d3825b..00000000 --- a/nodes/create_extension_stmt_fingerprint.go +++ /dev/null @@ -1,31 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -import "strconv" - -func (node CreateExtensionStmt) Fingerprint(ctx FingerprintContext, parentNode Node, parentFieldName string) { - ctx.WriteString("CreateExtensionStmt") - - if node.Extname != nil { - ctx.WriteString("extname") - ctx.WriteString(*node.Extname) - } - - if node.IfNotExists { - ctx.WriteString("if_not_exists") - ctx.WriteString(strconv.FormatBool(node.IfNotExists)) - } - - if len(node.Options.Items) > 0 { - subCtx := FingerprintSubContext{} - node.Options.Fingerprint(&subCtx, node, "Options") - - if len(subCtx.parts) > 0 { - ctx.WriteString("options") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } -} diff --git a/nodes/create_fdw_stmt.go b/nodes/create_fdw_stmt.go deleted file mode 100644 index f7965093..00000000 --- a/nodes/create_fdw_stmt.go +++ /dev/null @@ -1,54 +0,0 @@ -// Auto-generated from postgres/src/include/nodes/parsenodes.h - DO NOT EDIT - -package pg_query - -import "encoding/json" - -/* ---------------------- - * Create/Alter FOREIGN DATA WRAPPER Statements - * ---------------------- - */ -type CreateFdwStmt struct { - Fdwname *string `json:"fdwname"` /* foreign-data wrapper name */ - FuncOptions List `json:"func_options"` /* HANDLER/VALIDATOR options */ - Options List `json:"options"` /* generic options to FDW */ -} - -func (node CreateFdwStmt) MarshalJSON() ([]byte, error) { - type CreateFdwStmtMarshalAlias CreateFdwStmt - return json.Marshal(map[string]interface{}{ - "CreateFdwStmt": (*CreateFdwStmtMarshalAlias)(&node), - }) -} - -func (node *CreateFdwStmt) UnmarshalJSON(input []byte) (err error) { - var fields map[string]json.RawMessage - - err = json.Unmarshal(input, &fields) - if err != nil { - return - } - - if fields["fdwname"] != nil { - err = json.Unmarshal(fields["fdwname"], &node.Fdwname) - if err != nil { - return - } - } - - if fields["func_options"] != nil { - node.FuncOptions.Items, err = UnmarshalNodeArrayJSON(fields["func_options"]) - if err != nil { - return - } - } - - if fields["options"] != nil { - node.Options.Items, err = UnmarshalNodeArrayJSON(fields["options"]) - if err != nil { - return - } - } - - return -} diff --git a/nodes/create_fdw_stmt_deparse.go b/nodes/create_fdw_stmt_deparse.go deleted file mode 100644 index 32febb02..00000000 --- a/nodes/create_fdw_stmt_deparse.go +++ /dev/null @@ -1,7 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -func (node CreateFdwStmt) Deparse() string { - panic("Not Implemented") -} diff --git a/nodes/create_fdw_stmt_fingerprint.go b/nodes/create_fdw_stmt_fingerprint.go deleted file mode 100644 index 282affb7..00000000 --- a/nodes/create_fdw_stmt_fingerprint.go +++ /dev/null @@ -1,36 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -func (node CreateFdwStmt) Fingerprint(ctx FingerprintContext, parentNode Node, parentFieldName string) { - ctx.WriteString("CreateFdwStmt") - - if node.Fdwname != nil { - ctx.WriteString("fdwname") - ctx.WriteString(*node.Fdwname) - } - - if len(node.FuncOptions.Items) > 0 { - subCtx := FingerprintSubContext{} - node.FuncOptions.Fingerprint(&subCtx, node, "FuncOptions") - - if len(subCtx.parts) > 0 { - ctx.WriteString("func_options") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if len(node.Options.Items) > 0 { - subCtx := FingerprintSubContext{} - node.Options.Fingerprint(&subCtx, node, "Options") - - if len(subCtx.parts) > 0 { - ctx.WriteString("options") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } -} diff --git a/nodes/create_foreign_server_stmt.go b/nodes/create_foreign_server_stmt.go deleted file mode 100644 index 5f4f3d4f..00000000 --- a/nodes/create_foreign_server_stmt.go +++ /dev/null @@ -1,78 +0,0 @@ -// Auto-generated from postgres/src/include/nodes/parsenodes.h - DO NOT EDIT - -package pg_query - -import "encoding/json" - -/* ---------------------- - * Create/Alter FOREIGN SERVER Statements - * ---------------------- - */ -type CreateForeignServerStmt struct { - Servername *string `json:"servername"` /* server name */ - Servertype *string `json:"servertype"` /* optional server type */ - Version *string `json:"version"` /* optional server version */ - Fdwname *string `json:"fdwname"` /* FDW name */ - IfNotExists bool `json:"if_not_exists"` /* just do nothing if it already exists? */ - Options List `json:"options"` /* generic options to server */ -} - -func (node CreateForeignServerStmt) MarshalJSON() ([]byte, error) { - type CreateForeignServerStmtMarshalAlias CreateForeignServerStmt - return json.Marshal(map[string]interface{}{ - "CreateForeignServerStmt": (*CreateForeignServerStmtMarshalAlias)(&node), - }) -} - -func (node *CreateForeignServerStmt) UnmarshalJSON(input []byte) (err error) { - var fields map[string]json.RawMessage - - err = json.Unmarshal(input, &fields) - if err != nil { - return - } - - if fields["servername"] != nil { - err = json.Unmarshal(fields["servername"], &node.Servername) - if err != nil { - return - } - } - - if fields["servertype"] != nil { - err = json.Unmarshal(fields["servertype"], &node.Servertype) - if err != nil { - return - } - } - - if fields["version"] != nil { - err = json.Unmarshal(fields["version"], &node.Version) - if err != nil { - return - } - } - - if fields["fdwname"] != nil { - err = json.Unmarshal(fields["fdwname"], &node.Fdwname) - if err != nil { - return - } - } - - if fields["if_not_exists"] != nil { - err = json.Unmarshal(fields["if_not_exists"], &node.IfNotExists) - if err != nil { - return - } - } - - if fields["options"] != nil { - node.Options.Items, err = UnmarshalNodeArrayJSON(fields["options"]) - if err != nil { - return - } - } - - return -} diff --git a/nodes/create_foreign_server_stmt_deparse.go b/nodes/create_foreign_server_stmt_deparse.go deleted file mode 100644 index 2a2d46da..00000000 --- a/nodes/create_foreign_server_stmt_deparse.go +++ /dev/null @@ -1,7 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -func (node CreateForeignServerStmt) Deparse() string { - panic("Not Implemented") -} diff --git a/nodes/create_foreign_server_stmt_fingerprint.go b/nodes/create_foreign_server_stmt_fingerprint.go deleted file mode 100644 index b602eed9..00000000 --- a/nodes/create_foreign_server_stmt_fingerprint.go +++ /dev/null @@ -1,46 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -import "strconv" - -func (node CreateForeignServerStmt) Fingerprint(ctx FingerprintContext, parentNode Node, parentFieldName string) { - ctx.WriteString("CreateForeignServerStmt") - - if node.Fdwname != nil { - ctx.WriteString("fdwname") - ctx.WriteString(*node.Fdwname) - } - - if node.IfNotExists { - ctx.WriteString("if_not_exists") - ctx.WriteString(strconv.FormatBool(node.IfNotExists)) - } - - if len(node.Options.Items) > 0 { - subCtx := FingerprintSubContext{} - node.Options.Fingerprint(&subCtx, node, "Options") - - if len(subCtx.parts) > 0 { - ctx.WriteString("options") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if node.Servername != nil { - ctx.WriteString("servername") - ctx.WriteString(*node.Servername) - } - - if node.Servertype != nil { - ctx.WriteString("servertype") - ctx.WriteString(*node.Servertype) - } - - if node.Version != nil { - ctx.WriteString("version") - ctx.WriteString(*node.Version) - } -} diff --git a/nodes/create_foreign_table_stmt.go b/nodes/create_foreign_table_stmt.go deleted file mode 100644 index 1afa41af..00000000 --- a/nodes/create_foreign_table_stmt.go +++ /dev/null @@ -1,56 +0,0 @@ -// Auto-generated from postgres/src/include/nodes/parsenodes.h - DO NOT EDIT - -package pg_query - -import "encoding/json" - -/* ---------------------- - * Create FOREIGN TABLE Statement - * ---------------------- - */ -type CreateForeignTableStmt struct { - Base CreateStmt `json:"base"` - Servername *string `json:"servername"` - Options List `json:"options"` -} - -func (node CreateForeignTableStmt) MarshalJSON() ([]byte, error) { - type CreateForeignTableStmtMarshalAlias CreateForeignTableStmt - return json.Marshal(map[string]interface{}{ - "CreateForeignTableStmt": (*CreateForeignTableStmtMarshalAlias)(&node), - }) -} - -func (node *CreateForeignTableStmt) UnmarshalJSON(input []byte) (err error) { - var fields map[string]json.RawMessage - - err = json.Unmarshal(input, &fields) - if err != nil { - return - } - - if fields["base"] != nil { - var nodeField Node - nodeField, err = UnmarshalNodeJSON(fields["base"]) - if err != nil { - return - } - node.Base = nodeField.(CreateStmt) - } - - if fields["servername"] != nil { - err = json.Unmarshal(fields["servername"], &node.Servername) - if err != nil { - return - } - } - - if fields["options"] != nil { - node.Options.Items, err = UnmarshalNodeArrayJSON(fields["options"]) - if err != nil { - return - } - } - - return -} diff --git a/nodes/create_foreign_table_stmt_deparse.go b/nodes/create_foreign_table_stmt_deparse.go deleted file mode 100644 index d7ebaa02..00000000 --- a/nodes/create_foreign_table_stmt_deparse.go +++ /dev/null @@ -1,7 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -func (node CreateForeignTableStmt) Deparse() string { - panic("Not Implemented") -} diff --git a/nodes/create_foreign_table_stmt_fingerprint.go b/nodes/create_foreign_table_stmt_fingerprint.go deleted file mode 100644 index 248960fd..00000000 --- a/nodes/create_foreign_table_stmt_fingerprint.go +++ /dev/null @@ -1,26 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -func (node CreateForeignTableStmt) Fingerprint(ctx FingerprintContext, parentNode Node, parentFieldName string) { - ctx.WriteString("CreateForeignTableStmt") - ctx.WriteString("base") - node.Base.Fingerprint(ctx, node, "Base") - - if len(node.Options.Items) > 0 { - subCtx := FingerprintSubContext{} - node.Options.Fingerprint(&subCtx, node, "Options") - - if len(subCtx.parts) > 0 { - ctx.WriteString("options") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if node.Servername != nil { - ctx.WriteString("servername") - ctx.WriteString(*node.Servername) - } -} diff --git a/nodes/create_function_stmt.go b/nodes/create_function_stmt.go deleted file mode 100644 index 3248ceb2..00000000 --- a/nodes/create_function_stmt.go +++ /dev/null @@ -1,83 +0,0 @@ -// Auto-generated from postgres/src/include/nodes/parsenodes.h - DO NOT EDIT - -package pg_query - -import "encoding/json" - -/* ---------------------- - * Create Function Statement - * ---------------------- - */ -type CreateFunctionStmt struct { - Replace bool `json:"replace"` /* T => replace if already exists */ - Funcname List `json:"funcname"` /* qualified name of function to create */ - Parameters List `json:"parameters"` /* a list of FunctionParameter */ - ReturnType *TypeName `json:"returnType"` /* the return type */ - Options List `json:"options"` /* a list of DefElem */ - WithClause List `json:"withClause"` /* a list of DefElem */ -} - -func (node CreateFunctionStmt) MarshalJSON() ([]byte, error) { - type CreateFunctionStmtMarshalAlias CreateFunctionStmt - return json.Marshal(map[string]interface{}{ - "CreateFunctionStmt": (*CreateFunctionStmtMarshalAlias)(&node), - }) -} - -func (node *CreateFunctionStmt) UnmarshalJSON(input []byte) (err error) { - var fields map[string]json.RawMessage - - err = json.Unmarshal(input, &fields) - if err != nil { - return - } - - if fields["replace"] != nil { - err = json.Unmarshal(fields["replace"], &node.Replace) - if err != nil { - return - } - } - - if fields["funcname"] != nil { - node.Funcname.Items, err = UnmarshalNodeArrayJSON(fields["funcname"]) - if err != nil { - return - } - } - - if fields["parameters"] != nil { - node.Parameters.Items, err = UnmarshalNodeArrayJSON(fields["parameters"]) - if err != nil { - return - } - } - - if fields["returnType"] != nil { - var nodePtr *Node - nodePtr, err = UnmarshalNodePtrJSON(fields["returnType"]) - if err != nil { - return - } - if nodePtr != nil && *nodePtr != nil { - val := (*nodePtr).(TypeName) - node.ReturnType = &val - } - } - - if fields["options"] != nil { - node.Options.Items, err = UnmarshalNodeArrayJSON(fields["options"]) - if err != nil { - return - } - } - - if fields["withClause"] != nil { - node.WithClause.Items, err = UnmarshalNodeArrayJSON(fields["withClause"]) - if err != nil { - return - } - } - - return -} diff --git a/nodes/create_function_stmt_deparse.go b/nodes/create_function_stmt_deparse.go deleted file mode 100644 index 0934dabe..00000000 --- a/nodes/create_function_stmt_deparse.go +++ /dev/null @@ -1,7 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -func (node CreateFunctionStmt) Deparse() string { - panic("Not Implemented") -} diff --git a/nodes/create_function_stmt_fingerprint.go b/nodes/create_function_stmt_fingerprint.go deleted file mode 100644 index 8448952c..00000000 --- a/nodes/create_function_stmt_fingerprint.go +++ /dev/null @@ -1,74 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -import "strconv" - -func (node CreateFunctionStmt) Fingerprint(ctx FingerprintContext, parentNode Node, parentFieldName string) { - ctx.WriteString("CreateFunctionStmt") - - if len(node.Funcname.Items) > 0 { - subCtx := FingerprintSubContext{} - node.Funcname.Fingerprint(&subCtx, node, "Funcname") - - if len(subCtx.parts) > 0 { - ctx.WriteString("funcname") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if len(node.Options.Items) > 0 { - subCtx := FingerprintSubContext{} - node.Options.Fingerprint(&subCtx, node, "Options") - - if len(subCtx.parts) > 0 { - ctx.WriteString("options") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if len(node.Parameters.Items) > 0 { - subCtx := FingerprintSubContext{} - node.Parameters.Fingerprint(&subCtx, node, "Parameters") - - if len(subCtx.parts) > 0 { - ctx.WriteString("parameters") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if node.Replace { - ctx.WriteString("replace") - ctx.WriteString(strconv.FormatBool(node.Replace)) - } - - if node.ReturnType != nil { - subCtx := FingerprintSubContext{} - node.ReturnType.Fingerprint(&subCtx, node, "ReturnType") - - if len(subCtx.parts) > 0 { - ctx.WriteString("returnType") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if len(node.WithClause.Items) > 0 { - subCtx := FingerprintSubContext{} - node.WithClause.Fingerprint(&subCtx, node, "WithClause") - - if len(subCtx.parts) > 0 { - ctx.WriteString("withClause") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } -} diff --git a/nodes/create_op_class_item.go b/nodes/create_op_class_item.go deleted file mode 100644 index 805fb179..00000000 --- a/nodes/create_op_class_item.go +++ /dev/null @@ -1,91 +0,0 @@ -// Auto-generated from postgres/src/include/nodes/parsenodes.h - DO NOT EDIT - -package pg_query - -import "encoding/json" - -/* ---------------------- - * Create Operator Class Statement - * ---------------------- - */ -type CreateOpClassItem struct { - Itemtype int `json:"itemtype"` /* see codes above */ - Name *ObjectWithArgs `json:"name"` /* operator or function name and args */ - Number int `json:"number"` /* strategy num or support proc num */ - OrderFamily List `json:"order_family"` /* only used for ordering operators */ - ClassArgs List `json:"class_args"` /* amproclefttype/amprocrighttype or - * amoplefttype/amoprighttype */ - - /* fields used for a storagetype item: */ - Storedtype *TypeName `json:"storedtype"` /* datatype stored in index */ -} - -func (node CreateOpClassItem) MarshalJSON() ([]byte, error) { - type CreateOpClassItemMarshalAlias CreateOpClassItem - return json.Marshal(map[string]interface{}{ - "CreateOpClassItem": (*CreateOpClassItemMarshalAlias)(&node), - }) -} - -func (node *CreateOpClassItem) UnmarshalJSON(input []byte) (err error) { - var fields map[string]json.RawMessage - - err = json.Unmarshal(input, &fields) - if err != nil { - return - } - - if fields["itemtype"] != nil { - err = json.Unmarshal(fields["itemtype"], &node.Itemtype) - if err != nil { - return - } - } - - if fields["name"] != nil { - var nodePtr *Node - nodePtr, err = UnmarshalNodePtrJSON(fields["name"]) - if err != nil { - return - } - if nodePtr != nil && *nodePtr != nil { - val := (*nodePtr).(ObjectWithArgs) - node.Name = &val - } - } - - if fields["number"] != nil { - err = json.Unmarshal(fields["number"], &node.Number) - if err != nil { - return - } - } - - if fields["order_family"] != nil { - node.OrderFamily.Items, err = UnmarshalNodeArrayJSON(fields["order_family"]) - if err != nil { - return - } - } - - if fields["class_args"] != nil { - node.ClassArgs.Items, err = UnmarshalNodeArrayJSON(fields["class_args"]) - if err != nil { - return - } - } - - if fields["storedtype"] != nil { - var nodePtr *Node - nodePtr, err = UnmarshalNodePtrJSON(fields["storedtype"]) - if err != nil { - return - } - if nodePtr != nil && *nodePtr != nil { - val := (*nodePtr).(TypeName) - node.Storedtype = &val - } - } - - return -} diff --git a/nodes/create_op_class_item_deparse.go b/nodes/create_op_class_item_deparse.go deleted file mode 100644 index 491b7517..00000000 --- a/nodes/create_op_class_item_deparse.go +++ /dev/null @@ -1,7 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -func (node CreateOpClassItem) Deparse() string { - panic("Not Implemented") -} diff --git a/nodes/create_op_class_item_fingerprint.go b/nodes/create_op_class_item_fingerprint.go deleted file mode 100644 index 77ec674e..00000000 --- a/nodes/create_op_class_item_fingerprint.go +++ /dev/null @@ -1,67 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -import "strconv" - -func (node CreateOpClassItem) Fingerprint(ctx FingerprintContext, parentNode Node, parentFieldName string) { - ctx.WriteString("CreateOpClassItem") - - if len(node.ClassArgs.Items) > 0 { - subCtx := FingerprintSubContext{} - node.ClassArgs.Fingerprint(&subCtx, node, "ClassArgs") - - if len(subCtx.parts) > 0 { - ctx.WriteString("class_args") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if node.Itemtype != 0 { - ctx.WriteString("itemtype") - ctx.WriteString(strconv.Itoa(int(node.Itemtype))) - } - - if node.Name != nil { - subCtx := FingerprintSubContext{} - node.Name.Fingerprint(&subCtx, node, "Name") - - if len(subCtx.parts) > 0 { - ctx.WriteString("name") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if node.Number != 0 { - ctx.WriteString("number") - ctx.WriteString(strconv.Itoa(int(node.Number))) - } - - if len(node.OrderFamily.Items) > 0 { - subCtx := FingerprintSubContext{} - node.OrderFamily.Fingerprint(&subCtx, node, "OrderFamily") - - if len(subCtx.parts) > 0 { - ctx.WriteString("order_family") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if node.Storedtype != nil { - subCtx := FingerprintSubContext{} - node.Storedtype.Fingerprint(&subCtx, node, "Storedtype") - - if len(subCtx.parts) > 0 { - ctx.WriteString("storedtype") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } -} diff --git a/nodes/create_op_class_stmt.go b/nodes/create_op_class_stmt.go deleted file mode 100644 index ae1e2928..00000000 --- a/nodes/create_op_class_stmt.go +++ /dev/null @@ -1,83 +0,0 @@ -// Auto-generated from postgres/src/include/nodes/parsenodes.h - DO NOT EDIT - -package pg_query - -import "encoding/json" - -/* ---------------------- - * Create Operator Class Statement - * ---------------------- - */ -type CreateOpClassStmt struct { - Opclassname List `json:"opclassname"` /* qualified name (list of Value strings) */ - Opfamilyname List `json:"opfamilyname"` /* qualified name (ditto); NIL if omitted */ - Amname *string `json:"amname"` /* name of index AM opclass is for */ - Datatype *TypeName `json:"datatype"` /* datatype of indexed column */ - Items List `json:"items"` /* List of CreateOpClassItem nodes */ - IsDefault bool `json:"isDefault"` /* Should be marked as default for type? */ -} - -func (node CreateOpClassStmt) MarshalJSON() ([]byte, error) { - type CreateOpClassStmtMarshalAlias CreateOpClassStmt - return json.Marshal(map[string]interface{}{ - "CreateOpClassStmt": (*CreateOpClassStmtMarshalAlias)(&node), - }) -} - -func (node *CreateOpClassStmt) UnmarshalJSON(input []byte) (err error) { - var fields map[string]json.RawMessage - - err = json.Unmarshal(input, &fields) - if err != nil { - return - } - - if fields["opclassname"] != nil { - node.Opclassname.Items, err = UnmarshalNodeArrayJSON(fields["opclassname"]) - if err != nil { - return - } - } - - if fields["opfamilyname"] != nil { - node.Opfamilyname.Items, err = UnmarshalNodeArrayJSON(fields["opfamilyname"]) - if err != nil { - return - } - } - - if fields["amname"] != nil { - err = json.Unmarshal(fields["amname"], &node.Amname) - if err != nil { - return - } - } - - if fields["datatype"] != nil { - var nodePtr *Node - nodePtr, err = UnmarshalNodePtrJSON(fields["datatype"]) - if err != nil { - return - } - if nodePtr != nil && *nodePtr != nil { - val := (*nodePtr).(TypeName) - node.Datatype = &val - } - } - - if fields["items"] != nil { - node.Items.Items, err = UnmarshalNodeArrayJSON(fields["items"]) - if err != nil { - return - } - } - - if fields["isDefault"] != nil { - err = json.Unmarshal(fields["isDefault"], &node.IsDefault) - if err != nil { - return - } - } - - return -} diff --git a/nodes/create_op_class_stmt_deparse.go b/nodes/create_op_class_stmt_deparse.go deleted file mode 100644 index 868255f7..00000000 --- a/nodes/create_op_class_stmt_deparse.go +++ /dev/null @@ -1,7 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -func (node CreateOpClassStmt) Deparse() string { - panic("Not Implemented") -} diff --git a/nodes/create_op_class_stmt_fingerprint.go b/nodes/create_op_class_stmt_fingerprint.go deleted file mode 100644 index ea811d46..00000000 --- a/nodes/create_op_class_stmt_fingerprint.go +++ /dev/null @@ -1,67 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -import "strconv" - -func (node CreateOpClassStmt) Fingerprint(ctx FingerprintContext, parentNode Node, parentFieldName string) { - ctx.WriteString("CreateOpClassStmt") - - if node.Amname != nil { - ctx.WriteString("amname") - ctx.WriteString(*node.Amname) - } - - if node.Datatype != nil { - subCtx := FingerprintSubContext{} - node.Datatype.Fingerprint(&subCtx, node, "Datatype") - - if len(subCtx.parts) > 0 { - ctx.WriteString("datatype") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if node.IsDefault { - ctx.WriteString("isDefault") - ctx.WriteString(strconv.FormatBool(node.IsDefault)) - } - - if len(node.Items.Items) > 0 { - subCtx := FingerprintSubContext{} - node.Items.Fingerprint(&subCtx, node, "Items") - - if len(subCtx.parts) > 0 { - ctx.WriteString("items") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if len(node.Opclassname.Items) > 0 { - subCtx := FingerprintSubContext{} - node.Opclassname.Fingerprint(&subCtx, node, "Opclassname") - - if len(subCtx.parts) > 0 { - ctx.WriteString("opclassname") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if len(node.Opfamilyname.Items) > 0 { - subCtx := FingerprintSubContext{} - node.Opfamilyname.Fingerprint(&subCtx, node, "Opfamilyname") - - if len(subCtx.parts) > 0 { - ctx.WriteString("opfamilyname") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } -} diff --git a/nodes/create_op_family_stmt.go b/nodes/create_op_family_stmt.go deleted file mode 100644 index 8626cdc6..00000000 --- a/nodes/create_op_family_stmt.go +++ /dev/null @@ -1,46 +0,0 @@ -// Auto-generated from postgres/src/include/nodes/parsenodes.h - DO NOT EDIT - -package pg_query - -import "encoding/json" - -/* ---------------------- - * Create Operator Family Statement - * ---------------------- - */ -type CreateOpFamilyStmt struct { - Opfamilyname List `json:"opfamilyname"` /* qualified name (list of Value strings) */ - Amname *string `json:"amname"` /* name of index AM opfamily is for */ -} - -func (node CreateOpFamilyStmt) MarshalJSON() ([]byte, error) { - type CreateOpFamilyStmtMarshalAlias CreateOpFamilyStmt - return json.Marshal(map[string]interface{}{ - "CreateOpFamilyStmt": (*CreateOpFamilyStmtMarshalAlias)(&node), - }) -} - -func (node *CreateOpFamilyStmt) UnmarshalJSON(input []byte) (err error) { - var fields map[string]json.RawMessage - - err = json.Unmarshal(input, &fields) - if err != nil { - return - } - - if fields["opfamilyname"] != nil { - node.Opfamilyname.Items, err = UnmarshalNodeArrayJSON(fields["opfamilyname"]) - if err != nil { - return - } - } - - if fields["amname"] != nil { - err = json.Unmarshal(fields["amname"], &node.Amname) - if err != nil { - return - } - } - - return -} diff --git a/nodes/create_op_family_stmt_deparse.go b/nodes/create_op_family_stmt_deparse.go deleted file mode 100644 index 2c69ad67..00000000 --- a/nodes/create_op_family_stmt_deparse.go +++ /dev/null @@ -1,7 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -func (node CreateOpFamilyStmt) Deparse() string { - panic("Not Implemented") -} diff --git a/nodes/create_op_family_stmt_fingerprint.go b/nodes/create_op_family_stmt_fingerprint.go deleted file mode 100644 index dc13c908..00000000 --- a/nodes/create_op_family_stmt_fingerprint.go +++ /dev/null @@ -1,24 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -func (node CreateOpFamilyStmt) Fingerprint(ctx FingerprintContext, parentNode Node, parentFieldName string) { - ctx.WriteString("CreateOpFamilyStmt") - - if node.Amname != nil { - ctx.WriteString("amname") - ctx.WriteString(*node.Amname) - } - - if len(node.Opfamilyname.Items) > 0 { - subCtx := FingerprintSubContext{} - node.Opfamilyname.Fingerprint(&subCtx, node, "Opfamilyname") - - if len(subCtx.parts) > 0 { - ctx.WriteString("opfamilyname") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } -} diff --git a/nodes/create_p_lang_stmt.go b/nodes/create_p_lang_stmt.go deleted file mode 100644 index f68a15f1..00000000 --- a/nodes/create_p_lang_stmt.go +++ /dev/null @@ -1,79 +0,0 @@ -// Auto-generated from postgres/src/include/nodes/parsenodes.h - DO NOT EDIT - -package pg_query - -import "encoding/json" - -/* ---------------------- - * Create/Drop PROCEDURAL LANGUAGE Statements - * Create PROCEDURAL LANGUAGE Statements - * ---------------------- - */ -type CreatePLangStmt struct { - Replace bool `json:"replace"` /* T => replace if already exists */ - Plname *string `json:"plname"` /* PL name */ - Plhandler List `json:"plhandler"` /* PL call handler function (qual. name) */ - Plinline List `json:"plinline"` /* optional inline function (qual. name) */ - Plvalidator List `json:"plvalidator"` /* optional validator function (qual. name) */ - Pltrusted bool `json:"pltrusted"` /* PL is trusted */ -} - -func (node CreatePLangStmt) MarshalJSON() ([]byte, error) { - type CreatePLangStmtMarshalAlias CreatePLangStmt - return json.Marshal(map[string]interface{}{ - "CreatePLangStmt": (*CreatePLangStmtMarshalAlias)(&node), - }) -} - -func (node *CreatePLangStmt) UnmarshalJSON(input []byte) (err error) { - var fields map[string]json.RawMessage - - err = json.Unmarshal(input, &fields) - if err != nil { - return - } - - if fields["replace"] != nil { - err = json.Unmarshal(fields["replace"], &node.Replace) - if err != nil { - return - } - } - - if fields["plname"] != nil { - err = json.Unmarshal(fields["plname"], &node.Plname) - if err != nil { - return - } - } - - if fields["plhandler"] != nil { - node.Plhandler.Items, err = UnmarshalNodeArrayJSON(fields["plhandler"]) - if err != nil { - return - } - } - - if fields["plinline"] != nil { - node.Plinline.Items, err = UnmarshalNodeArrayJSON(fields["plinline"]) - if err != nil { - return - } - } - - if fields["plvalidator"] != nil { - node.Plvalidator.Items, err = UnmarshalNodeArrayJSON(fields["plvalidator"]) - if err != nil { - return - } - } - - if fields["pltrusted"] != nil { - err = json.Unmarshal(fields["pltrusted"], &node.Pltrusted) - if err != nil { - return - } - } - - return -} diff --git a/nodes/create_p_lang_stmt_deparse.go b/nodes/create_p_lang_stmt_deparse.go deleted file mode 100644 index 203f792a..00000000 --- a/nodes/create_p_lang_stmt_deparse.go +++ /dev/null @@ -1,7 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -func (node CreatePLangStmt) Deparse() string { - panic("Not Implemented") -} diff --git a/nodes/create_p_lang_stmt_fingerprint.go b/nodes/create_p_lang_stmt_fingerprint.go deleted file mode 100644 index e3305bcf..00000000 --- a/nodes/create_p_lang_stmt_fingerprint.go +++ /dev/null @@ -1,60 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -import "strconv" - -func (node CreatePLangStmt) Fingerprint(ctx FingerprintContext, parentNode Node, parentFieldName string) { - ctx.WriteString("CreatePLangStmt") - - if len(node.Plhandler.Items) > 0 { - subCtx := FingerprintSubContext{} - node.Plhandler.Fingerprint(&subCtx, node, "Plhandler") - - if len(subCtx.parts) > 0 { - ctx.WriteString("plhandler") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if len(node.Plinline.Items) > 0 { - subCtx := FingerprintSubContext{} - node.Plinline.Fingerprint(&subCtx, node, "Plinline") - - if len(subCtx.parts) > 0 { - ctx.WriteString("plinline") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if node.Plname != nil { - ctx.WriteString("plname") - ctx.WriteString(*node.Plname) - } - - if node.Pltrusted { - ctx.WriteString("pltrusted") - ctx.WriteString(strconv.FormatBool(node.Pltrusted)) - } - - if len(node.Plvalidator.Items) > 0 { - subCtx := FingerprintSubContext{} - node.Plvalidator.Fingerprint(&subCtx, node, "Plvalidator") - - if len(subCtx.parts) > 0 { - ctx.WriteString("plvalidator") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if node.Replace { - ctx.WriteString("replace") - ctx.WriteString(strconv.FormatBool(node.Replace)) - } -} diff --git a/nodes/create_policy_stmt.go b/nodes/create_policy_stmt.go deleted file mode 100644 index 2bcf9709..00000000 --- a/nodes/create_policy_stmt.go +++ /dev/null @@ -1,91 +0,0 @@ -// Auto-generated from postgres/src/include/nodes/parsenodes.h - DO NOT EDIT - -package pg_query - -import "encoding/json" - -/*---------------------- - * Create POLICY Statement - *---------------------- - */ -type CreatePolicyStmt struct { - PolicyName *string `json:"policy_name"` /* Policy's name */ - Table *RangeVar `json:"table"` /* the table name the policy applies to */ - CmdName *string `json:"cmd_name"` /* the command name the policy applies to */ - Permissive bool `json:"permissive"` /* restrictive or permissive policy */ - Roles List `json:"roles"` /* the roles associated with the policy */ - Qual Node `json:"qual"` /* the policy's condition */ - WithCheck Node `json:"with_check"` /* the policy's WITH CHECK condition. */ -} - -func (node CreatePolicyStmt) MarshalJSON() ([]byte, error) { - type CreatePolicyStmtMarshalAlias CreatePolicyStmt - return json.Marshal(map[string]interface{}{ - "CreatePolicyStmt": (*CreatePolicyStmtMarshalAlias)(&node), - }) -} - -func (node *CreatePolicyStmt) UnmarshalJSON(input []byte) (err error) { - var fields map[string]json.RawMessage - - err = json.Unmarshal(input, &fields) - if err != nil { - return - } - - if fields["policy_name"] != nil { - err = json.Unmarshal(fields["policy_name"], &node.PolicyName) - if err != nil { - return - } - } - - if fields["table"] != nil { - var nodePtr *Node - nodePtr, err = UnmarshalNodePtrJSON(fields["table"]) - if err != nil { - return - } - if nodePtr != nil && *nodePtr != nil { - val := (*nodePtr).(RangeVar) - node.Table = &val - } - } - - if fields["cmd_name"] != nil { - err = json.Unmarshal(fields["cmd_name"], &node.CmdName) - if err != nil { - return - } - } - - if fields["permissive"] != nil { - err = json.Unmarshal(fields["permissive"], &node.Permissive) - if err != nil { - return - } - } - - if fields["roles"] != nil { - node.Roles.Items, err = UnmarshalNodeArrayJSON(fields["roles"]) - if err != nil { - return - } - } - - if fields["qual"] != nil { - node.Qual, err = UnmarshalNodeJSON(fields["qual"]) - if err != nil { - return - } - } - - if fields["with_check"] != nil { - node.WithCheck, err = UnmarshalNodeJSON(fields["with_check"]) - if err != nil { - return - } - } - - return -} diff --git a/nodes/create_policy_stmt_deparse.go b/nodes/create_policy_stmt_deparse.go deleted file mode 100644 index 1da0438d..00000000 --- a/nodes/create_policy_stmt_deparse.go +++ /dev/null @@ -1,7 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -func (node CreatePolicyStmt) Deparse() string { - panic("Not Implemented") -} diff --git a/nodes/create_policy_stmt_fingerprint.go b/nodes/create_policy_stmt_fingerprint.go deleted file mode 100644 index 27cf5b23..00000000 --- a/nodes/create_policy_stmt_fingerprint.go +++ /dev/null @@ -1,72 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -import "strconv" - -func (node CreatePolicyStmt) Fingerprint(ctx FingerprintContext, parentNode Node, parentFieldName string) { - ctx.WriteString("CreatePolicyStmt") - - if node.CmdName != nil { - ctx.WriteString("cmd_name") - ctx.WriteString(*node.CmdName) - } - - if node.Permissive { - ctx.WriteString("permissive") - ctx.WriteString(strconv.FormatBool(node.Permissive)) - } - - if node.PolicyName != nil { - ctx.WriteString("policy_name") - ctx.WriteString(*node.PolicyName) - } - - if node.Qual != nil { - subCtx := FingerprintSubContext{} - node.Qual.Fingerprint(&subCtx, node, "Qual") - - if len(subCtx.parts) > 0 { - ctx.WriteString("qual") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if len(node.Roles.Items) > 0 { - subCtx := FingerprintSubContext{} - node.Roles.Fingerprint(&subCtx, node, "Roles") - - if len(subCtx.parts) > 0 { - ctx.WriteString("roles") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if node.Table != nil { - subCtx := FingerprintSubContext{} - node.Table.Fingerprint(&subCtx, node, "Table") - - if len(subCtx.parts) > 0 { - ctx.WriteString("table") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if node.WithCheck != nil { - subCtx := FingerprintSubContext{} - node.WithCheck.Fingerprint(&subCtx, node, "WithCheck") - - if len(subCtx.parts) > 0 { - ctx.WriteString("with_check") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } -} diff --git a/nodes/create_publication_stmt.go b/nodes/create_publication_stmt.go deleted file mode 100644 index d453b88b..00000000 --- a/nodes/create_publication_stmt.go +++ /dev/null @@ -1,58 +0,0 @@ -// Auto-generated from postgres/src/include/nodes/parsenodes.h - DO NOT EDIT - -package pg_query - -import "encoding/json" - -type CreatePublicationStmt struct { - Pubname *string `json:"pubname"` /* Name of of the publication */ - Options List `json:"options"` /* List of DefElem nodes */ - Tables List `json:"tables"` /* Optional list of tables to add */ - ForAllTables bool `json:"for_all_tables"` /* Special publication for all tables in db */ -} - -func (node CreatePublicationStmt) MarshalJSON() ([]byte, error) { - type CreatePublicationStmtMarshalAlias CreatePublicationStmt - return json.Marshal(map[string]interface{}{ - "CreatePublicationStmt": (*CreatePublicationStmtMarshalAlias)(&node), - }) -} - -func (node *CreatePublicationStmt) UnmarshalJSON(input []byte) (err error) { - var fields map[string]json.RawMessage - - err = json.Unmarshal(input, &fields) - if err != nil { - return - } - - if fields["pubname"] != nil { - err = json.Unmarshal(fields["pubname"], &node.Pubname) - if err != nil { - return - } - } - - if fields["options"] != nil { - node.Options.Items, err = UnmarshalNodeArrayJSON(fields["options"]) - if err != nil { - return - } - } - - if fields["tables"] != nil { - node.Tables.Items, err = UnmarshalNodeArrayJSON(fields["tables"]) - if err != nil { - return - } - } - - if fields["for_all_tables"] != nil { - err = json.Unmarshal(fields["for_all_tables"], &node.ForAllTables) - if err != nil { - return - } - } - - return -} diff --git a/nodes/create_publication_stmt_deparse.go b/nodes/create_publication_stmt_deparse.go deleted file mode 100644 index ea5ad24c..00000000 --- a/nodes/create_publication_stmt_deparse.go +++ /dev/null @@ -1,7 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -func (node CreatePublicationStmt) Deparse() string { - panic("Not Implemented") -} diff --git a/nodes/create_publication_stmt_fingerprint.go b/nodes/create_publication_stmt_fingerprint.go deleted file mode 100644 index 3f37a0f8..00000000 --- a/nodes/create_publication_stmt_fingerprint.go +++ /dev/null @@ -1,43 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -import "strconv" - -func (node CreatePublicationStmt) Fingerprint(ctx FingerprintContext, parentNode Node, parentFieldName string) { - ctx.WriteString("CreatePublicationStmt") - - if node.ForAllTables { - ctx.WriteString("for_all_tables") - ctx.WriteString(strconv.FormatBool(node.ForAllTables)) - } - - if len(node.Options.Items) > 0 { - subCtx := FingerprintSubContext{} - node.Options.Fingerprint(&subCtx, node, "Options") - - if len(subCtx.parts) > 0 { - ctx.WriteString("options") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if node.Pubname != nil { - ctx.WriteString("pubname") - ctx.WriteString(*node.Pubname) - } - - if len(node.Tables.Items) > 0 { - subCtx := FingerprintSubContext{} - node.Tables.Fingerprint(&subCtx, node, "Tables") - - if len(subCtx.parts) > 0 { - ctx.WriteString("tables") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } -} diff --git a/nodes/create_range_stmt.go b/nodes/create_range_stmt.go deleted file mode 100644 index e1590046..00000000 --- a/nodes/create_range_stmt.go +++ /dev/null @@ -1,46 +0,0 @@ -// Auto-generated from postgres/src/include/nodes/parsenodes.h - DO NOT EDIT - -package pg_query - -import "encoding/json" - -/* ---------------------- - * Create Type Statement, range types - * ---------------------- - */ -type CreateRangeStmt struct { - TypeName List `json:"typeName"` /* qualified name (list of Value strings) */ - Params List `json:"params"` /* range parameters (list of DefElem) */ -} - -func (node CreateRangeStmt) MarshalJSON() ([]byte, error) { - type CreateRangeStmtMarshalAlias CreateRangeStmt - return json.Marshal(map[string]interface{}{ - "CreateRangeStmt": (*CreateRangeStmtMarshalAlias)(&node), - }) -} - -func (node *CreateRangeStmt) UnmarshalJSON(input []byte) (err error) { - var fields map[string]json.RawMessage - - err = json.Unmarshal(input, &fields) - if err != nil { - return - } - - if fields["typeName"] != nil { - node.TypeName.Items, err = UnmarshalNodeArrayJSON(fields["typeName"]) - if err != nil { - return - } - } - - if fields["params"] != nil { - node.Params.Items, err = UnmarshalNodeArrayJSON(fields["params"]) - if err != nil { - return - } - } - - return -} diff --git a/nodes/create_range_stmt_deparse.go b/nodes/create_range_stmt_deparse.go deleted file mode 100644 index fce81024..00000000 --- a/nodes/create_range_stmt_deparse.go +++ /dev/null @@ -1,7 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -func (node CreateRangeStmt) Deparse() string { - panic("Not Implemented") -} diff --git a/nodes/create_range_stmt_fingerprint.go b/nodes/create_range_stmt_fingerprint.go deleted file mode 100644 index 62123f42..00000000 --- a/nodes/create_range_stmt_fingerprint.go +++ /dev/null @@ -1,31 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -func (node CreateRangeStmt) Fingerprint(ctx FingerprintContext, parentNode Node, parentFieldName string) { - ctx.WriteString("CreateRangeStmt") - - if len(node.Params.Items) > 0 { - subCtx := FingerprintSubContext{} - node.Params.Fingerprint(&subCtx, node, "Params") - - if len(subCtx.parts) > 0 { - ctx.WriteString("params") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if len(node.TypeName.Items) > 0 { - subCtx := FingerprintSubContext{} - node.TypeName.Fingerprint(&subCtx, node, "TypeName") - - if len(subCtx.parts) > 0 { - ctx.WriteString("typeName") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } -} diff --git a/nodes/create_role_stmt.go b/nodes/create_role_stmt.go deleted file mode 100644 index cb37d838..00000000 --- a/nodes/create_role_stmt.go +++ /dev/null @@ -1,59 +0,0 @@ -// Auto-generated from postgres/src/include/nodes/parsenodes.h - DO NOT EDIT - -package pg_query - -import "encoding/json" - -/* ---------------------- - * Create/Alter/Drop Role Statements - * - * Note: these node types are also used for the backwards-compatible - * Create/Alter/Drop User/Group statements. In the ALTER and DROP cases - * there's really no need to distinguish what the original spelling was, - * but for CREATE we mark the type because the defaults vary. - * ---------------------- - */ -type CreateRoleStmt struct { - StmtType RoleStmtType `json:"stmt_type"` /* ROLE/USER/GROUP */ - Role *string `json:"role"` /* role name */ - Options List `json:"options"` /* List of DefElem nodes */ -} - -func (node CreateRoleStmt) MarshalJSON() ([]byte, error) { - type CreateRoleStmtMarshalAlias CreateRoleStmt - return json.Marshal(map[string]interface{}{ - "CreateRoleStmt": (*CreateRoleStmtMarshalAlias)(&node), - }) -} - -func (node *CreateRoleStmt) UnmarshalJSON(input []byte) (err error) { - var fields map[string]json.RawMessage - - err = json.Unmarshal(input, &fields) - if err != nil { - return - } - - if fields["stmt_type"] != nil { - err = json.Unmarshal(fields["stmt_type"], &node.StmtType) - if err != nil { - return - } - } - - if fields["role"] != nil { - err = json.Unmarshal(fields["role"], &node.Role) - if err != nil { - return - } - } - - if fields["options"] != nil { - node.Options.Items, err = UnmarshalNodeArrayJSON(fields["options"]) - if err != nil { - return - } - } - - return -} diff --git a/nodes/create_role_stmt_deparse.go b/nodes/create_role_stmt_deparse.go deleted file mode 100644 index 2ea606de..00000000 --- a/nodes/create_role_stmt_deparse.go +++ /dev/null @@ -1,7 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -func (node CreateRoleStmt) Deparse() string { - panic("Not Implemented") -} diff --git a/nodes/create_role_stmt_fingerprint.go b/nodes/create_role_stmt_fingerprint.go deleted file mode 100644 index 1666a75e..00000000 --- a/nodes/create_role_stmt_fingerprint.go +++ /dev/null @@ -1,31 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -import "strconv" - -func (node CreateRoleStmt) Fingerprint(ctx FingerprintContext, parentNode Node, parentFieldName string) { - ctx.WriteString("CreateRoleStmt") - - if len(node.Options.Items) > 0 { - subCtx := FingerprintSubContext{} - node.Options.Fingerprint(&subCtx, node, "Options") - - if len(subCtx.parts) > 0 { - ctx.WriteString("options") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if node.Role != nil { - ctx.WriteString("role") - ctx.WriteString(*node.Role) - } - - if int(node.StmtType) != 0 { - ctx.WriteString("stmt_type") - ctx.WriteString(strconv.Itoa(int(node.StmtType))) - } -} diff --git a/nodes/create_schema_stmt.go b/nodes/create_schema_stmt.go deleted file mode 100644 index 7fe8db31..00000000 --- a/nodes/create_schema_stmt.go +++ /dev/null @@ -1,71 +0,0 @@ -// Auto-generated from postgres/src/include/nodes/parsenodes.h - DO NOT EDIT - -package pg_query - -import "encoding/json" - -/* ---------------------- - * Create Schema Statement - * - * NOTE: the schemaElts list contains raw parsetrees for component statements - * of the schema, such as CREATE TABLE, GRANT, etc. These are analyzed and - * executed after the schema itself is created. - * ---------------------- - */ -type CreateSchemaStmt struct { - Schemaname *string `json:"schemaname"` /* the name of the schema to create */ - Authrole *RoleSpec `json:"authrole"` /* the owner of the created schema */ - SchemaElts List `json:"schemaElts"` /* schema components (list of parsenodes) */ - IfNotExists bool `json:"if_not_exists"` /* just do nothing if schema already exists? */ -} - -func (node CreateSchemaStmt) MarshalJSON() ([]byte, error) { - type CreateSchemaStmtMarshalAlias CreateSchemaStmt - return json.Marshal(map[string]interface{}{ - "CreateSchemaStmt": (*CreateSchemaStmtMarshalAlias)(&node), - }) -} - -func (node *CreateSchemaStmt) UnmarshalJSON(input []byte) (err error) { - var fields map[string]json.RawMessage - - err = json.Unmarshal(input, &fields) - if err != nil { - return - } - - if fields["schemaname"] != nil { - err = json.Unmarshal(fields["schemaname"], &node.Schemaname) - if err != nil { - return - } - } - - if fields["authrole"] != nil { - var nodePtr *Node - nodePtr, err = UnmarshalNodePtrJSON(fields["authrole"]) - if err != nil { - return - } - if nodePtr != nil && *nodePtr != nil { - val := (*nodePtr).(RoleSpec) - node.Authrole = &val - } - } - - if fields["schemaElts"] != nil { - node.SchemaElts.Items, err = UnmarshalNodeArrayJSON(fields["schemaElts"]) - if err != nil { - return - } - } - - if fields["if_not_exists"] != nil { - err = json.Unmarshal(fields["if_not_exists"], &node.IfNotExists) - if err != nil { - return - } - } - - return -} diff --git a/nodes/create_schema_stmt_deparse.go b/nodes/create_schema_stmt_deparse.go deleted file mode 100644 index 7e037419..00000000 --- a/nodes/create_schema_stmt_deparse.go +++ /dev/null @@ -1,7 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -func (node CreateSchemaStmt) Deparse() string { - panic("Not Implemented") -} diff --git a/nodes/create_schema_stmt_fingerprint.go b/nodes/create_schema_stmt_fingerprint.go deleted file mode 100644 index c0a62fe0..00000000 --- a/nodes/create_schema_stmt_fingerprint.go +++ /dev/null @@ -1,43 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -import "strconv" - -func (node CreateSchemaStmt) Fingerprint(ctx FingerprintContext, parentNode Node, parentFieldName string) { - ctx.WriteString("CreateSchemaStmt") - - if node.Authrole != nil { - subCtx := FingerprintSubContext{} - node.Authrole.Fingerprint(&subCtx, node, "Authrole") - - if len(subCtx.parts) > 0 { - ctx.WriteString("authrole") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if node.IfNotExists { - ctx.WriteString("if_not_exists") - ctx.WriteString(strconv.FormatBool(node.IfNotExists)) - } - - if len(node.SchemaElts.Items) > 0 { - subCtx := FingerprintSubContext{} - node.SchemaElts.Fingerprint(&subCtx, node, "SchemaElts") - - if len(subCtx.parts) > 0 { - ctx.WriteString("schemaElts") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if node.Schemaname != nil { - ctx.WriteString("schemaname") - ctx.WriteString(*node.Schemaname) - } -} diff --git a/nodes/create_seq_stmt.go b/nodes/create_seq_stmt.go deleted file mode 100644 index c0292f16..00000000 --- a/nodes/create_seq_stmt.go +++ /dev/null @@ -1,75 +0,0 @@ -// Auto-generated from postgres/src/include/nodes/parsenodes.h - DO NOT EDIT - -package pg_query - -import "encoding/json" - -/* ---------------------- - * {Create|Alter} SEQUENCE Statement - * ---------------------- - */ -type CreateSeqStmt struct { - Sequence *RangeVar `json:"sequence"` /* the sequence to create */ - Options List `json:"options"` - OwnerId Oid `json:"ownerId"` /* ID of owner, or InvalidOid for default */ - ForIdentity bool `json:"for_identity"` - IfNotExists bool `json:"if_not_exists"` /* just do nothing if it already exists? */ -} - -func (node CreateSeqStmt) MarshalJSON() ([]byte, error) { - type CreateSeqStmtMarshalAlias CreateSeqStmt - return json.Marshal(map[string]interface{}{ - "CreateSeqStmt": (*CreateSeqStmtMarshalAlias)(&node), - }) -} - -func (node *CreateSeqStmt) UnmarshalJSON(input []byte) (err error) { - var fields map[string]json.RawMessage - - err = json.Unmarshal(input, &fields) - if err != nil { - return - } - - if fields["sequence"] != nil { - var nodePtr *Node - nodePtr, err = UnmarshalNodePtrJSON(fields["sequence"]) - if err != nil { - return - } - if nodePtr != nil && *nodePtr != nil { - val := (*nodePtr).(RangeVar) - node.Sequence = &val - } - } - - if fields["options"] != nil { - node.Options.Items, err = UnmarshalNodeArrayJSON(fields["options"]) - if err != nil { - return - } - } - - if fields["ownerId"] != nil { - err = json.Unmarshal(fields["ownerId"], &node.OwnerId) - if err != nil { - return - } - } - - if fields["for_identity"] != nil { - err = json.Unmarshal(fields["for_identity"], &node.ForIdentity) - if err != nil { - return - } - } - - if fields["if_not_exists"] != nil { - err = json.Unmarshal(fields["if_not_exists"], &node.IfNotExists) - if err != nil { - return - } - } - - return -} diff --git a/nodes/create_seq_stmt_deparse.go b/nodes/create_seq_stmt_deparse.go deleted file mode 100644 index c09f8c3f..00000000 --- a/nodes/create_seq_stmt_deparse.go +++ /dev/null @@ -1,7 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -func (node CreateSeqStmt) Deparse() string { - panic("Not Implemented") -} diff --git a/nodes/create_seq_stmt_fingerprint.go b/nodes/create_seq_stmt_fingerprint.go deleted file mode 100644 index ca3af3d9..00000000 --- a/nodes/create_seq_stmt_fingerprint.go +++ /dev/null @@ -1,48 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -import "strconv" - -func (node CreateSeqStmt) Fingerprint(ctx FingerprintContext, parentNode Node, parentFieldName string) { - ctx.WriteString("CreateSeqStmt") - - if node.ForIdentity { - ctx.WriteString("for_identity") - ctx.WriteString(strconv.FormatBool(node.ForIdentity)) - } - - if node.IfNotExists { - ctx.WriteString("if_not_exists") - ctx.WriteString(strconv.FormatBool(node.IfNotExists)) - } - - if len(node.Options.Items) > 0 { - subCtx := FingerprintSubContext{} - node.Options.Fingerprint(&subCtx, node, "Options") - - if len(subCtx.parts) > 0 { - ctx.WriteString("options") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if node.OwnerId != 0 { - ctx.WriteString("ownerId") - ctx.WriteString(strconv.Itoa(int(node.OwnerId))) - } - - if node.Sequence != nil { - subCtx := FingerprintSubContext{} - node.Sequence.Fingerprint(&subCtx, node, "Sequence") - - if len(subCtx.parts) > 0 { - ctx.WriteString("sequence") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } -} diff --git a/nodes/create_stats_stmt.go b/nodes/create_stats_stmt.go deleted file mode 100644 index 743b153e..00000000 --- a/nodes/create_stats_stmt.go +++ /dev/null @@ -1,70 +0,0 @@ -// Auto-generated from postgres/src/include/nodes/parsenodes.h - DO NOT EDIT - -package pg_query - -import "encoding/json" - -/* ---------------------- - * Create Statistics Statement - * ---------------------- - */ -type CreateStatsStmt struct { - Defnames List `json:"defnames"` /* qualified name (list of Value strings) */ - StatTypes List `json:"stat_types"` /* stat types (list of Value strings) */ - Exprs List `json:"exprs"` /* expressions to build statistics on */ - Relations List `json:"relations"` /* rels to build stats on (list of RangeVar) */ - IfNotExists bool `json:"if_not_exists"` /* do nothing if stats name already exists */ -} - -func (node CreateStatsStmt) MarshalJSON() ([]byte, error) { - type CreateStatsStmtMarshalAlias CreateStatsStmt - return json.Marshal(map[string]interface{}{ - "CreateStatsStmt": (*CreateStatsStmtMarshalAlias)(&node), - }) -} - -func (node *CreateStatsStmt) UnmarshalJSON(input []byte) (err error) { - var fields map[string]json.RawMessage - - err = json.Unmarshal(input, &fields) - if err != nil { - return - } - - if fields["defnames"] != nil { - node.Defnames.Items, err = UnmarshalNodeArrayJSON(fields["defnames"]) - if err != nil { - return - } - } - - if fields["stat_types"] != nil { - node.StatTypes.Items, err = UnmarshalNodeArrayJSON(fields["stat_types"]) - if err != nil { - return - } - } - - if fields["exprs"] != nil { - node.Exprs.Items, err = UnmarshalNodeArrayJSON(fields["exprs"]) - if err != nil { - return - } - } - - if fields["relations"] != nil { - node.Relations.Items, err = UnmarshalNodeArrayJSON(fields["relations"]) - if err != nil { - return - } - } - - if fields["if_not_exists"] != nil { - err = json.Unmarshal(fields["if_not_exists"], &node.IfNotExists) - if err != nil { - return - } - } - - return -} diff --git a/nodes/create_stats_stmt_deparse.go b/nodes/create_stats_stmt_deparse.go deleted file mode 100644 index 33bd2170..00000000 --- a/nodes/create_stats_stmt_deparse.go +++ /dev/null @@ -1,7 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -func (node CreateStatsStmt) Deparse() string { - panic("Not Implemented") -} diff --git a/nodes/create_stats_stmt_fingerprint.go b/nodes/create_stats_stmt_fingerprint.go deleted file mode 100644 index 8a56060a..00000000 --- a/nodes/create_stats_stmt_fingerprint.go +++ /dev/null @@ -1,62 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -import "strconv" - -func (node CreateStatsStmt) Fingerprint(ctx FingerprintContext, parentNode Node, parentFieldName string) { - ctx.WriteString("CreateStatsStmt") - - if len(node.Defnames.Items) > 0 { - subCtx := FingerprintSubContext{} - node.Defnames.Fingerprint(&subCtx, node, "Defnames") - - if len(subCtx.parts) > 0 { - ctx.WriteString("defnames") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if len(node.Exprs.Items) > 0 { - subCtx := FingerprintSubContext{} - node.Exprs.Fingerprint(&subCtx, node, "Exprs") - - if len(subCtx.parts) > 0 { - ctx.WriteString("exprs") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if node.IfNotExists { - ctx.WriteString("if_not_exists") - ctx.WriteString(strconv.FormatBool(node.IfNotExists)) - } - - if len(node.Relations.Items) > 0 { - subCtx := FingerprintSubContext{} - node.Relations.Fingerprint(&subCtx, node, "Relations") - - if len(subCtx.parts) > 0 { - ctx.WriteString("relations") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if len(node.StatTypes.Items) > 0 { - subCtx := FingerprintSubContext{} - node.StatTypes.Fingerprint(&subCtx, node, "StatTypes") - - if len(subCtx.parts) > 0 { - ctx.WriteString("stat_types") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } -} diff --git a/nodes/create_stmt.go b/nodes/create_stmt.go deleted file mode 100644 index 1e29bc44..00000000 --- a/nodes/create_stmt.go +++ /dev/null @@ -1,146 +0,0 @@ -// Auto-generated from postgres/src/include/nodes/parsenodes.h - DO NOT EDIT - -package pg_query - -import "encoding/json" - -/* ---------------------- - * Create Table Statement - * - * NOTE: in the raw gram.y output, ColumnDef and Constraint nodes are - * intermixed in tableElts, and constraints is NIL. After parse analysis, - * tableElts contains just ColumnDefs, and constraints contains just - * Constraint nodes (in fact, only CONSTR_CHECK nodes, in the present - * implementation). - * ---------------------- - */ -type CreateStmt struct { - Relation *RangeVar `json:"relation"` /* relation to create */ - TableElts List `json:"tableElts"` /* column definitions (list of ColumnDef) */ - InhRelations List `json:"inhRelations"` /* relations to inherit from (list of - * inhRelation) */ - - Partbound *PartitionBoundSpec `json:"partbound"` /* FOR VALUES clause */ - Partspec *PartitionSpec `json:"partspec"` /* PARTITION BY clause */ - OfTypename *TypeName `json:"ofTypename"` /* OF typename */ - Constraints List `json:"constraints"` /* constraints (list of Constraint nodes) */ - Options List `json:"options"` /* options from WITH clause */ - Oncommit OnCommitAction `json:"oncommit"` /* what do we do at COMMIT? */ - Tablespacename *string `json:"tablespacename"` /* table space to use, or NULL */ - IfNotExists bool `json:"if_not_exists"` /* just do nothing if it already exists? */ -} - -func (node CreateStmt) MarshalJSON() ([]byte, error) { - type CreateStmtMarshalAlias CreateStmt - return json.Marshal(map[string]interface{}{ - "CreateStmt": (*CreateStmtMarshalAlias)(&node), - }) -} - -func (node *CreateStmt) UnmarshalJSON(input []byte) (err error) { - var fields map[string]json.RawMessage - - err = json.Unmarshal(input, &fields) - if err != nil { - return - } - - if fields["relation"] != nil { - var nodePtr *Node - nodePtr, err = UnmarshalNodePtrJSON(fields["relation"]) - if err != nil { - return - } - if nodePtr != nil && *nodePtr != nil { - val := (*nodePtr).(RangeVar) - node.Relation = &val - } - } - - if fields["tableElts"] != nil { - node.TableElts.Items, err = UnmarshalNodeArrayJSON(fields["tableElts"]) - if err != nil { - return - } - } - - if fields["inhRelations"] != nil { - node.InhRelations.Items, err = UnmarshalNodeArrayJSON(fields["inhRelations"]) - if err != nil { - return - } - } - - if fields["partbound"] != nil { - var nodePtr *Node - nodePtr, err = UnmarshalNodePtrJSON(fields["partbound"]) - if err != nil { - return - } - if nodePtr != nil && *nodePtr != nil { - val := (*nodePtr).(PartitionBoundSpec) - node.Partbound = &val - } - } - - if fields["partspec"] != nil { - var nodePtr *Node - nodePtr, err = UnmarshalNodePtrJSON(fields["partspec"]) - if err != nil { - return - } - if nodePtr != nil && *nodePtr != nil { - val := (*nodePtr).(PartitionSpec) - node.Partspec = &val - } - } - - if fields["ofTypename"] != nil { - var nodePtr *Node - nodePtr, err = UnmarshalNodePtrJSON(fields["ofTypename"]) - if err != nil { - return - } - if nodePtr != nil && *nodePtr != nil { - val := (*nodePtr).(TypeName) - node.OfTypename = &val - } - } - - if fields["constraints"] != nil { - node.Constraints.Items, err = UnmarshalNodeArrayJSON(fields["constraints"]) - if err != nil { - return - } - } - - if fields["options"] != nil { - node.Options.Items, err = UnmarshalNodeArrayJSON(fields["options"]) - if err != nil { - return - } - } - - if fields["oncommit"] != nil { - err = json.Unmarshal(fields["oncommit"], &node.Oncommit) - if err != nil { - return - } - } - - if fields["tablespacename"] != nil { - err = json.Unmarshal(fields["tablespacename"], &node.Tablespacename) - if err != nil { - return - } - } - - if fields["if_not_exists"] != nil { - err = json.Unmarshal(fields["if_not_exists"], &node.IfNotExists) - if err != nil { - return - } - } - - return -} diff --git a/nodes/create_stmt_deparse.go b/nodes/create_stmt_deparse.go deleted file mode 100644 index ddf63795..00000000 --- a/nodes/create_stmt_deparse.go +++ /dev/null @@ -1,7 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -func (node CreateStmt) Deparse() string { - panic("Not Implemented") -} diff --git a/nodes/create_stmt_fingerprint.go b/nodes/create_stmt_fingerprint.go deleted file mode 100644 index 5bf37b0e..00000000 --- a/nodes/create_stmt_fingerprint.go +++ /dev/null @@ -1,120 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -import "strconv" - -func (node CreateStmt) Fingerprint(ctx FingerprintContext, parentNode Node, parentFieldName string) { - ctx.WriteString("CreateStmt") - - if len(node.Constraints.Items) > 0 { - subCtx := FingerprintSubContext{} - node.Constraints.Fingerprint(&subCtx, node, "Constraints") - - if len(subCtx.parts) > 0 { - ctx.WriteString("constraints") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if node.IfNotExists { - ctx.WriteString("if_not_exists") - ctx.WriteString(strconv.FormatBool(node.IfNotExists)) - } - - if len(node.InhRelations.Items) > 0 { - subCtx := FingerprintSubContext{} - node.InhRelations.Fingerprint(&subCtx, node, "InhRelations") - - if len(subCtx.parts) > 0 { - ctx.WriteString("inhRelations") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if node.OfTypename != nil { - subCtx := FingerprintSubContext{} - node.OfTypename.Fingerprint(&subCtx, node, "OfTypename") - - if len(subCtx.parts) > 0 { - ctx.WriteString("ofTypename") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if int(node.Oncommit) != 0 { - ctx.WriteString("oncommit") - ctx.WriteString(strconv.Itoa(int(node.Oncommit))) - } - - if len(node.Options.Items) > 0 { - subCtx := FingerprintSubContext{} - node.Options.Fingerprint(&subCtx, node, "Options") - - if len(subCtx.parts) > 0 { - ctx.WriteString("options") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if node.Partbound != nil { - subCtx := FingerprintSubContext{} - node.Partbound.Fingerprint(&subCtx, node, "Partbound") - - if len(subCtx.parts) > 0 { - ctx.WriteString("partbound") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if node.Partspec != nil { - subCtx := FingerprintSubContext{} - node.Partspec.Fingerprint(&subCtx, node, "Partspec") - - if len(subCtx.parts) > 0 { - ctx.WriteString("partspec") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if node.Relation != nil { - subCtx := FingerprintSubContext{} - node.Relation.Fingerprint(&subCtx, node, "Relation") - - if len(subCtx.parts) > 0 { - ctx.WriteString("relation") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if len(node.TableElts.Items) > 0 { - subCtx := FingerprintSubContext{} - node.TableElts.Fingerprint(&subCtx, node, "TableElts") - - if len(subCtx.parts) > 0 { - ctx.WriteString("tableElts") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if node.Tablespacename != nil { - ctx.WriteString("tablespacename") - ctx.WriteString(*node.Tablespacename) - } -} diff --git a/nodes/create_subscription_stmt.go b/nodes/create_subscription_stmt.go deleted file mode 100644 index e911a474..00000000 --- a/nodes/create_subscription_stmt.go +++ /dev/null @@ -1,58 +0,0 @@ -// Auto-generated from postgres/src/include/nodes/parsenodes.h - DO NOT EDIT - -package pg_query - -import "encoding/json" - -type CreateSubscriptionStmt struct { - Subname *string `json:"subname"` /* Name of of the subscription */ - Conninfo *string `json:"conninfo"` /* Connection string to publisher */ - Publication List `json:"publication"` /* One or more publication to subscribe to */ - Options List `json:"options"` /* List of DefElem nodes */ -} - -func (node CreateSubscriptionStmt) MarshalJSON() ([]byte, error) { - type CreateSubscriptionStmtMarshalAlias CreateSubscriptionStmt - return json.Marshal(map[string]interface{}{ - "CreateSubscriptionStmt": (*CreateSubscriptionStmtMarshalAlias)(&node), - }) -} - -func (node *CreateSubscriptionStmt) UnmarshalJSON(input []byte) (err error) { - var fields map[string]json.RawMessage - - err = json.Unmarshal(input, &fields) - if err != nil { - return - } - - if fields["subname"] != nil { - err = json.Unmarshal(fields["subname"], &node.Subname) - if err != nil { - return - } - } - - if fields["conninfo"] != nil { - err = json.Unmarshal(fields["conninfo"], &node.Conninfo) - if err != nil { - return - } - } - - if fields["publication"] != nil { - node.Publication.Items, err = UnmarshalNodeArrayJSON(fields["publication"]) - if err != nil { - return - } - } - - if fields["options"] != nil { - node.Options.Items, err = UnmarshalNodeArrayJSON(fields["options"]) - if err != nil { - return - } - } - - return -} diff --git a/nodes/create_subscription_stmt_deparse.go b/nodes/create_subscription_stmt_deparse.go deleted file mode 100644 index d3014281..00000000 --- a/nodes/create_subscription_stmt_deparse.go +++ /dev/null @@ -1,7 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -func (node CreateSubscriptionStmt) Deparse() string { - panic("Not Implemented") -} diff --git a/nodes/create_subscription_stmt_fingerprint.go b/nodes/create_subscription_stmt_fingerprint.go deleted file mode 100644 index a459b4be..00000000 --- a/nodes/create_subscription_stmt_fingerprint.go +++ /dev/null @@ -1,41 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -func (node CreateSubscriptionStmt) Fingerprint(ctx FingerprintContext, parentNode Node, parentFieldName string) { - ctx.WriteString("CreateSubscriptionStmt") - - if node.Conninfo != nil { - ctx.WriteString("conninfo") - ctx.WriteString(*node.Conninfo) - } - - if len(node.Options.Items) > 0 { - subCtx := FingerprintSubContext{} - node.Options.Fingerprint(&subCtx, node, "Options") - - if len(subCtx.parts) > 0 { - ctx.WriteString("options") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if len(node.Publication.Items) > 0 { - subCtx := FingerprintSubContext{} - node.Publication.Fingerprint(&subCtx, node, "Publication") - - if len(subCtx.parts) > 0 { - ctx.WriteString("publication") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if node.Subname != nil { - ctx.WriteString("subname") - ctx.WriteString(*node.Subname) - } -} diff --git a/nodes/create_table_as_stmt.go b/nodes/create_table_as_stmt.go deleted file mode 100644 index 488496f5..00000000 --- a/nodes/create_table_as_stmt.go +++ /dev/null @@ -1,84 +0,0 @@ -// Auto-generated from postgres/src/include/nodes/parsenodes.h - DO NOT EDIT - -package pg_query - -import "encoding/json" - -/* ---------------------- - * CREATE TABLE AS Statement (a/k/a SELECT INTO) - * - * A query written as CREATE TABLE AS will produce this node type natively. - * A query written as SELECT ... INTO will be transformed to this form during - * parse analysis. - * A query written as CREATE MATERIALIZED view will produce this node type, - * during parse analysis, since it needs all the same data. - * - * The "query" field is handled similarly to EXPLAIN, though note that it - * can be a SELECT or an EXECUTE, but not other DML statements. - * ---------------------- - */ -type CreateTableAsStmt struct { - Query Node `json:"query"` /* the query (see comments above) */ - Into *IntoClause `json:"into"` /* destination table */ - Relkind ObjectType `json:"relkind"` /* OBJECT_TABLE or OBJECT_MATVIEW */ - IsSelectInto bool `json:"is_select_into"` /* it was written as SELECT INTO */ - IfNotExists bool `json:"if_not_exists"` /* just do nothing if it already exists? */ -} - -func (node CreateTableAsStmt) MarshalJSON() ([]byte, error) { - type CreateTableAsStmtMarshalAlias CreateTableAsStmt - return json.Marshal(map[string]interface{}{ - "CreateTableAsStmt": (*CreateTableAsStmtMarshalAlias)(&node), - }) -} - -func (node *CreateTableAsStmt) UnmarshalJSON(input []byte) (err error) { - var fields map[string]json.RawMessage - - err = json.Unmarshal(input, &fields) - if err != nil { - return - } - - if fields["query"] != nil { - node.Query, err = UnmarshalNodeJSON(fields["query"]) - if err != nil { - return - } - } - - if fields["into"] != nil { - var nodePtr *Node - nodePtr, err = UnmarshalNodePtrJSON(fields["into"]) - if err != nil { - return - } - if nodePtr != nil && *nodePtr != nil { - val := (*nodePtr).(IntoClause) - node.Into = &val - } - } - - if fields["relkind"] != nil { - err = json.Unmarshal(fields["relkind"], &node.Relkind) - if err != nil { - return - } - } - - if fields["is_select_into"] != nil { - err = json.Unmarshal(fields["is_select_into"], &node.IsSelectInto) - if err != nil { - return - } - } - - if fields["if_not_exists"] != nil { - err = json.Unmarshal(fields["if_not_exists"], &node.IfNotExists) - if err != nil { - return - } - } - - return -} diff --git a/nodes/create_table_as_stmt_deparse.go b/nodes/create_table_as_stmt_deparse.go deleted file mode 100644 index 7677d797..00000000 --- a/nodes/create_table_as_stmt_deparse.go +++ /dev/null @@ -1,7 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -func (node CreateTableAsStmt) Deparse() string { - panic("Not Implemented") -} diff --git a/nodes/create_table_as_stmt_fingerprint.go b/nodes/create_table_as_stmt_fingerprint.go deleted file mode 100644 index 2dc19111..00000000 --- a/nodes/create_table_as_stmt_fingerprint.go +++ /dev/null @@ -1,48 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -import "strconv" - -func (node CreateTableAsStmt) Fingerprint(ctx FingerprintContext, parentNode Node, parentFieldName string) { - ctx.WriteString("CreateTableAsStmt") - - if node.IfNotExists { - ctx.WriteString("if_not_exists") - ctx.WriteString(strconv.FormatBool(node.IfNotExists)) - } - - if node.Into != nil { - subCtx := FingerprintSubContext{} - node.Into.Fingerprint(&subCtx, node, "Into") - - if len(subCtx.parts) > 0 { - ctx.WriteString("into") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if node.IsSelectInto { - ctx.WriteString("is_select_into") - ctx.WriteString(strconv.FormatBool(node.IsSelectInto)) - } - - if node.Query != nil { - subCtx := FingerprintSubContext{} - node.Query.Fingerprint(&subCtx, node, "Query") - - if len(subCtx.parts) > 0 { - ctx.WriteString("query") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if int(node.Relkind) != 0 { - ctx.WriteString("relkind") - ctx.WriteString(strconv.Itoa(int(node.Relkind))) - } -} diff --git a/nodes/create_table_space_stmt.go b/nodes/create_table_space_stmt.go deleted file mode 100644 index a305b409..00000000 --- a/nodes/create_table_space_stmt.go +++ /dev/null @@ -1,67 +0,0 @@ -// Auto-generated from postgres/src/include/nodes/parsenodes.h - DO NOT EDIT - -package pg_query - -import "encoding/json" - -/* ---------------------- - * Create/Drop Table Space Statements - * ---------------------- - */ -type CreateTableSpaceStmt struct { - Tablespacename *string `json:"tablespacename"` - Owner *RoleSpec `json:"owner"` - Location *string `json:"location"` - Options List `json:"options"` -} - -func (node CreateTableSpaceStmt) MarshalJSON() ([]byte, error) { - type CreateTableSpaceStmtMarshalAlias CreateTableSpaceStmt - return json.Marshal(map[string]interface{}{ - "CreateTableSpaceStmt": (*CreateTableSpaceStmtMarshalAlias)(&node), - }) -} - -func (node *CreateTableSpaceStmt) UnmarshalJSON(input []byte) (err error) { - var fields map[string]json.RawMessage - - err = json.Unmarshal(input, &fields) - if err != nil { - return - } - - if fields["tablespacename"] != nil { - err = json.Unmarshal(fields["tablespacename"], &node.Tablespacename) - if err != nil { - return - } - } - - if fields["owner"] != nil { - var nodePtr *Node - nodePtr, err = UnmarshalNodePtrJSON(fields["owner"]) - if err != nil { - return - } - if nodePtr != nil && *nodePtr != nil { - val := (*nodePtr).(RoleSpec) - node.Owner = &val - } - } - - if fields["location"] != nil { - err = json.Unmarshal(fields["location"], &node.Location) - if err != nil { - return - } - } - - if fields["options"] != nil { - node.Options.Items, err = UnmarshalNodeArrayJSON(fields["options"]) - if err != nil { - return - } - } - - return -} diff --git a/nodes/create_table_space_stmt_deparse.go b/nodes/create_table_space_stmt_deparse.go deleted file mode 100644 index ca23e6f8..00000000 --- a/nodes/create_table_space_stmt_deparse.go +++ /dev/null @@ -1,7 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -func (node CreateTableSpaceStmt) Deparse() string { - panic("Not Implemented") -} diff --git a/nodes/create_table_space_stmt_fingerprint.go b/nodes/create_table_space_stmt_fingerprint.go deleted file mode 100644 index cc24fd3b..00000000 --- a/nodes/create_table_space_stmt_fingerprint.go +++ /dev/null @@ -1,37 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -func (node CreateTableSpaceStmt) Fingerprint(ctx FingerprintContext, parentNode Node, parentFieldName string) { - ctx.WriteString("CreateTableSpaceStmt") - // Intentionally ignoring node.Location for fingerprinting - - if len(node.Options.Items) > 0 { - subCtx := FingerprintSubContext{} - node.Options.Fingerprint(&subCtx, node, "Options") - - if len(subCtx.parts) > 0 { - ctx.WriteString("options") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if node.Owner != nil { - subCtx := FingerprintSubContext{} - node.Owner.Fingerprint(&subCtx, node, "Owner") - - if len(subCtx.parts) > 0 { - ctx.WriteString("owner") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if node.Tablespacename != nil { - ctx.WriteString("tablespacename") - ctx.WriteString(*node.Tablespacename) - } -} diff --git a/nodes/create_transform_stmt.go b/nodes/create_transform_stmt.go deleted file mode 100644 index 5895870e..00000000 --- a/nodes/create_transform_stmt.go +++ /dev/null @@ -1,85 +0,0 @@ -// Auto-generated from postgres/src/include/nodes/parsenodes.h - DO NOT EDIT - -package pg_query - -import "encoding/json" - -/* ---------------------- - * CREATE TRANSFORM Statement - * ---------------------- - */ -type CreateTransformStmt struct { - Replace bool `json:"replace"` - TypeName *TypeName `json:"type_name"` - Lang *string `json:"lang"` - Fromsql *ObjectWithArgs `json:"fromsql"` - Tosql *ObjectWithArgs `json:"tosql"` -} - -func (node CreateTransformStmt) MarshalJSON() ([]byte, error) { - type CreateTransformStmtMarshalAlias CreateTransformStmt - return json.Marshal(map[string]interface{}{ - "CreateTransformStmt": (*CreateTransformStmtMarshalAlias)(&node), - }) -} - -func (node *CreateTransformStmt) UnmarshalJSON(input []byte) (err error) { - var fields map[string]json.RawMessage - - err = json.Unmarshal(input, &fields) - if err != nil { - return - } - - if fields["replace"] != nil { - err = json.Unmarshal(fields["replace"], &node.Replace) - if err != nil { - return - } - } - - if fields["type_name"] != nil { - var nodePtr *Node - nodePtr, err = UnmarshalNodePtrJSON(fields["type_name"]) - if err != nil { - return - } - if nodePtr != nil && *nodePtr != nil { - val := (*nodePtr).(TypeName) - node.TypeName = &val - } - } - - if fields["lang"] != nil { - err = json.Unmarshal(fields["lang"], &node.Lang) - if err != nil { - return - } - } - - if fields["fromsql"] != nil { - var nodePtr *Node - nodePtr, err = UnmarshalNodePtrJSON(fields["fromsql"]) - if err != nil { - return - } - if nodePtr != nil && *nodePtr != nil { - val := (*nodePtr).(ObjectWithArgs) - node.Fromsql = &val - } - } - - if fields["tosql"] != nil { - var nodePtr *Node - nodePtr, err = UnmarshalNodePtrJSON(fields["tosql"]) - if err != nil { - return - } - if nodePtr != nil && *nodePtr != nil { - val := (*nodePtr).(ObjectWithArgs) - node.Tosql = &val - } - } - - return -} diff --git a/nodes/create_transform_stmt_deparse.go b/nodes/create_transform_stmt_deparse.go deleted file mode 100644 index f5a741f1..00000000 --- a/nodes/create_transform_stmt_deparse.go +++ /dev/null @@ -1,7 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -func (node CreateTransformStmt) Deparse() string { - panic("Not Implemented") -} diff --git a/nodes/create_transform_stmt_fingerprint.go b/nodes/create_transform_stmt_fingerprint.go deleted file mode 100644 index 17e5ce74..00000000 --- a/nodes/create_transform_stmt_fingerprint.go +++ /dev/null @@ -1,55 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -import "strconv" - -func (node CreateTransformStmt) Fingerprint(ctx FingerprintContext, parentNode Node, parentFieldName string) { - ctx.WriteString("CreateTransformStmt") - - if node.Fromsql != nil { - subCtx := FingerprintSubContext{} - node.Fromsql.Fingerprint(&subCtx, node, "Fromsql") - - if len(subCtx.parts) > 0 { - ctx.WriteString("fromsql") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if node.Lang != nil { - ctx.WriteString("lang") - ctx.WriteString(*node.Lang) - } - - if node.Replace { - ctx.WriteString("replace") - ctx.WriteString(strconv.FormatBool(node.Replace)) - } - - if node.Tosql != nil { - subCtx := FingerprintSubContext{} - node.Tosql.Fingerprint(&subCtx, node, "Tosql") - - if len(subCtx.parts) > 0 { - ctx.WriteString("tosql") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if node.TypeName != nil { - subCtx := FingerprintSubContext{} - node.TypeName.Fingerprint(&subCtx, node, "TypeName") - - if len(subCtx.parts) > 0 { - ctx.WriteString("type_name") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } -} diff --git a/nodes/create_trig_stmt.go b/nodes/create_trig_stmt.go deleted file mode 100644 index 34712c43..00000000 --- a/nodes/create_trig_stmt.go +++ /dev/null @@ -1,160 +0,0 @@ -// Auto-generated from postgres/src/include/nodes/parsenodes.h - DO NOT EDIT - -package pg_query - -import "encoding/json" - -/* ---------------------- - * Create TRIGGER Statement - * ---------------------- - */ -type CreateTrigStmt struct { - Trigname *string `json:"trigname"` /* TRIGGER's name */ - Relation *RangeVar `json:"relation"` /* relation trigger is on */ - Funcname List `json:"funcname"` /* qual. name of function to call */ - Args List `json:"args"` /* list of (T_String) Values or NIL */ - Row bool `json:"row"` /* ROW/STATEMENT */ - - /* timing uses the TRIGGER_TYPE bits defined in catalog/pg_trigger.h */ - Timing int16 `json:"timing"` /* BEFORE, AFTER, or INSTEAD */ - - /* events uses the TRIGGER_TYPE bits defined in catalog/pg_trigger.h */ - Events int16 `json:"events"` /* "OR" of INSERT/UPDATE/DELETE/TRUNCATE */ - Columns List `json:"columns"` /* column names, or NIL for all columns */ - WhenClause Node `json:"whenClause"` /* qual expression, or NULL if none */ - Isconstraint bool `json:"isconstraint"` /* This is a constraint trigger */ - - /* explicitly named transition data */ - TransitionRels List `json:"transitionRels"` /* TriggerTransition nodes, or NIL if none */ - - /* The remaining fields are only used for constraint triggers */ - Deferrable bool `json:"deferrable"` /* [NOT] DEFERRABLE */ - Initdeferred bool `json:"initdeferred"` /* INITIALLY {DEFERRED|IMMEDIATE} */ - Constrrel *RangeVar `json:"constrrel"` /* opposite relation, if RI trigger */ -} - -func (node CreateTrigStmt) MarshalJSON() ([]byte, error) { - type CreateTrigStmtMarshalAlias CreateTrigStmt - return json.Marshal(map[string]interface{}{ - "CreateTrigStmt": (*CreateTrigStmtMarshalAlias)(&node), - }) -} - -func (node *CreateTrigStmt) UnmarshalJSON(input []byte) (err error) { - var fields map[string]json.RawMessage - - err = json.Unmarshal(input, &fields) - if err != nil { - return - } - - if fields["trigname"] != nil { - err = json.Unmarshal(fields["trigname"], &node.Trigname) - if err != nil { - return - } - } - - if fields["relation"] != nil { - var nodePtr *Node - nodePtr, err = UnmarshalNodePtrJSON(fields["relation"]) - if err != nil { - return - } - if nodePtr != nil && *nodePtr != nil { - val := (*nodePtr).(RangeVar) - node.Relation = &val - } - } - - if fields["funcname"] != nil { - node.Funcname.Items, err = UnmarshalNodeArrayJSON(fields["funcname"]) - if err != nil { - return - } - } - - if fields["args"] != nil { - node.Args.Items, err = UnmarshalNodeArrayJSON(fields["args"]) - if err != nil { - return - } - } - - if fields["row"] != nil { - err = json.Unmarshal(fields["row"], &node.Row) - if err != nil { - return - } - } - - if fields["timing"] != nil { - err = json.Unmarshal(fields["timing"], &node.Timing) - if err != nil { - return - } - } - - if fields["events"] != nil { - err = json.Unmarshal(fields["events"], &node.Events) - if err != nil { - return - } - } - - if fields["columns"] != nil { - node.Columns.Items, err = UnmarshalNodeArrayJSON(fields["columns"]) - if err != nil { - return - } - } - - if fields["whenClause"] != nil { - node.WhenClause, err = UnmarshalNodeJSON(fields["whenClause"]) - if err != nil { - return - } - } - - if fields["isconstraint"] != nil { - err = json.Unmarshal(fields["isconstraint"], &node.Isconstraint) - if err != nil { - return - } - } - - if fields["transitionRels"] != nil { - node.TransitionRels.Items, err = UnmarshalNodeArrayJSON(fields["transitionRels"]) - if err != nil { - return - } - } - - if fields["deferrable"] != nil { - err = json.Unmarshal(fields["deferrable"], &node.Deferrable) - if err != nil { - return - } - } - - if fields["initdeferred"] != nil { - err = json.Unmarshal(fields["initdeferred"], &node.Initdeferred) - if err != nil { - return - } - } - - if fields["constrrel"] != nil { - var nodePtr *Node - nodePtr, err = UnmarshalNodePtrJSON(fields["constrrel"]) - if err != nil { - return - } - if nodePtr != nil && *nodePtr != nil { - val := (*nodePtr).(RangeVar) - node.Constrrel = &val - } - } - - return -} diff --git a/nodes/create_trig_stmt_deparse.go b/nodes/create_trig_stmt_deparse.go deleted file mode 100644 index aada2421..00000000 --- a/nodes/create_trig_stmt_deparse.go +++ /dev/null @@ -1,7 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -func (node CreateTrigStmt) Deparse() string { - panic("Not Implemented") -} diff --git a/nodes/create_trig_stmt_fingerprint.go b/nodes/create_trig_stmt_fingerprint.go deleted file mode 100644 index 3fa22a46..00000000 --- a/nodes/create_trig_stmt_fingerprint.go +++ /dev/null @@ -1,128 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -import "strconv" - -func (node CreateTrigStmt) Fingerprint(ctx FingerprintContext, parentNode Node, parentFieldName string) { - ctx.WriteString("CreateTrigStmt") - - if len(node.Args.Items) > 0 { - subCtx := FingerprintSubContext{} - node.Args.Fingerprint(&subCtx, node, "Args") - - if len(subCtx.parts) > 0 { - ctx.WriteString("args") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if len(node.Columns.Items) > 0 { - subCtx := FingerprintSubContext{} - node.Columns.Fingerprint(&subCtx, node, "Columns") - - if len(subCtx.parts) > 0 { - ctx.WriteString("columns") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if node.Constrrel != nil { - subCtx := FingerprintSubContext{} - node.Constrrel.Fingerprint(&subCtx, node, "Constrrel") - - if len(subCtx.parts) > 0 { - ctx.WriteString("constrrel") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if node.Deferrable { - ctx.WriteString("deferrable") - ctx.WriteString(strconv.FormatBool(node.Deferrable)) - } - - if node.Events != 0 { - ctx.WriteString("events") - ctx.WriteString(strconv.Itoa(int(node.Events))) - } - - if len(node.Funcname.Items) > 0 { - subCtx := FingerprintSubContext{} - node.Funcname.Fingerprint(&subCtx, node, "Funcname") - - if len(subCtx.parts) > 0 { - ctx.WriteString("funcname") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if node.Initdeferred { - ctx.WriteString("initdeferred") - ctx.WriteString(strconv.FormatBool(node.Initdeferred)) - } - - if node.Isconstraint { - ctx.WriteString("isconstraint") - ctx.WriteString(strconv.FormatBool(node.Isconstraint)) - } - - if node.Relation != nil { - subCtx := FingerprintSubContext{} - node.Relation.Fingerprint(&subCtx, node, "Relation") - - if len(subCtx.parts) > 0 { - ctx.WriteString("relation") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if node.Row { - ctx.WriteString("row") - ctx.WriteString(strconv.FormatBool(node.Row)) - } - - if node.Timing != 0 { - ctx.WriteString("timing") - ctx.WriteString(strconv.Itoa(int(node.Timing))) - } - - if len(node.TransitionRels.Items) > 0 { - subCtx := FingerprintSubContext{} - node.TransitionRels.Fingerprint(&subCtx, node, "TransitionRels") - - if len(subCtx.parts) > 0 { - ctx.WriteString("transitionRels") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if node.Trigname != nil { - ctx.WriteString("trigname") - ctx.WriteString(*node.Trigname) - } - - if node.WhenClause != nil { - subCtx := FingerprintSubContext{} - node.WhenClause.Fingerprint(&subCtx, node, "WhenClause") - - if len(subCtx.parts) > 0 { - ctx.WriteString("whenClause") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } -} diff --git a/nodes/create_user_mapping_stmt.go b/nodes/create_user_mapping_stmt.go deleted file mode 100644 index 825b98da..00000000 --- a/nodes/create_user_mapping_stmt.go +++ /dev/null @@ -1,67 +0,0 @@ -// Auto-generated from postgres/src/include/nodes/parsenodes.h - DO NOT EDIT - -package pg_query - -import "encoding/json" - -/* ---------------------- - * Create/Drop USER MAPPING Statements - * ---------------------- - */ -type CreateUserMappingStmt struct { - User *RoleSpec `json:"user"` /* user role */ - Servername *string `json:"servername"` /* server name */ - IfNotExists bool `json:"if_not_exists"` /* just do nothing if it already exists? */ - Options List `json:"options"` /* generic options to server */ -} - -func (node CreateUserMappingStmt) MarshalJSON() ([]byte, error) { - type CreateUserMappingStmtMarshalAlias CreateUserMappingStmt - return json.Marshal(map[string]interface{}{ - "CreateUserMappingStmt": (*CreateUserMappingStmtMarshalAlias)(&node), - }) -} - -func (node *CreateUserMappingStmt) UnmarshalJSON(input []byte) (err error) { - var fields map[string]json.RawMessage - - err = json.Unmarshal(input, &fields) - if err != nil { - return - } - - if fields["user"] != nil { - var nodePtr *Node - nodePtr, err = UnmarshalNodePtrJSON(fields["user"]) - if err != nil { - return - } - if nodePtr != nil && *nodePtr != nil { - val := (*nodePtr).(RoleSpec) - node.User = &val - } - } - - if fields["servername"] != nil { - err = json.Unmarshal(fields["servername"], &node.Servername) - if err != nil { - return - } - } - - if fields["if_not_exists"] != nil { - err = json.Unmarshal(fields["if_not_exists"], &node.IfNotExists) - if err != nil { - return - } - } - - if fields["options"] != nil { - node.Options.Items, err = UnmarshalNodeArrayJSON(fields["options"]) - if err != nil { - return - } - } - - return -} diff --git a/nodes/create_user_mapping_stmt_deparse.go b/nodes/create_user_mapping_stmt_deparse.go deleted file mode 100644 index 2fbb5dca..00000000 --- a/nodes/create_user_mapping_stmt_deparse.go +++ /dev/null @@ -1,7 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -func (node CreateUserMappingStmt) Deparse() string { - panic("Not Implemented") -} diff --git a/nodes/create_user_mapping_stmt_fingerprint.go b/nodes/create_user_mapping_stmt_fingerprint.go deleted file mode 100644 index 7e7a127b..00000000 --- a/nodes/create_user_mapping_stmt_fingerprint.go +++ /dev/null @@ -1,43 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -import "strconv" - -func (node CreateUserMappingStmt) Fingerprint(ctx FingerprintContext, parentNode Node, parentFieldName string) { - ctx.WriteString("CreateUserMappingStmt") - - if node.IfNotExists { - ctx.WriteString("if_not_exists") - ctx.WriteString(strconv.FormatBool(node.IfNotExists)) - } - - if len(node.Options.Items) > 0 { - subCtx := FingerprintSubContext{} - node.Options.Fingerprint(&subCtx, node, "Options") - - if len(subCtx.parts) > 0 { - ctx.WriteString("options") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if node.Servername != nil { - ctx.WriteString("servername") - ctx.WriteString(*node.Servername) - } - - if node.User != nil { - subCtx := FingerprintSubContext{} - node.User.Fingerprint(&subCtx, node, "User") - - if len(subCtx.parts) > 0 { - ctx.WriteString("user") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } -} diff --git a/nodes/createdb_stmt.go b/nodes/createdb_stmt.go deleted file mode 100644 index 20f98ad7..00000000 --- a/nodes/createdb_stmt.go +++ /dev/null @@ -1,46 +0,0 @@ -// Auto-generated from postgres/src/include/nodes/parsenodes.h - DO NOT EDIT - -package pg_query - -import "encoding/json" - -/* ---------------------- - * Createdb Statement - * ---------------------- - */ -type CreatedbStmt struct { - Dbname *string `json:"dbname"` /* name of database to create */ - Options List `json:"options"` /* List of DefElem nodes */ -} - -func (node CreatedbStmt) MarshalJSON() ([]byte, error) { - type CreatedbStmtMarshalAlias CreatedbStmt - return json.Marshal(map[string]interface{}{ - "CreatedbStmt": (*CreatedbStmtMarshalAlias)(&node), - }) -} - -func (node *CreatedbStmt) UnmarshalJSON(input []byte) (err error) { - var fields map[string]json.RawMessage - - err = json.Unmarshal(input, &fields) - if err != nil { - return - } - - if fields["dbname"] != nil { - err = json.Unmarshal(fields["dbname"], &node.Dbname) - if err != nil { - return - } - } - - if fields["options"] != nil { - node.Options.Items, err = UnmarshalNodeArrayJSON(fields["options"]) - if err != nil { - return - } - } - - return -} diff --git a/nodes/createdb_stmt_deparse.go b/nodes/createdb_stmt_deparse.go deleted file mode 100644 index 9619c146..00000000 --- a/nodes/createdb_stmt_deparse.go +++ /dev/null @@ -1,7 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -func (node CreatedbStmt) Deparse() string { - panic("Not Implemented") -} diff --git a/nodes/createdb_stmt_fingerprint.go b/nodes/createdb_stmt_fingerprint.go deleted file mode 100644 index 4d2b2eed..00000000 --- a/nodes/createdb_stmt_fingerprint.go +++ /dev/null @@ -1,24 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -func (node CreatedbStmt) Fingerprint(ctx FingerprintContext, parentNode Node, parentFieldName string) { - ctx.WriteString("CreatedbStmt") - - if node.Dbname != nil { - ctx.WriteString("dbname") - ctx.WriteString(*node.Dbname) - } - - if len(node.Options.Items) > 0 { - subCtx := FingerprintSubContext{} - node.Options.Fingerprint(&subCtx, node, "Options") - - if len(subCtx.parts) > 0 { - ctx.WriteString("options") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } -} diff --git a/nodes/current_of_expr.go b/nodes/current_of_expr.go deleted file mode 100644 index 215832bd..00000000 --- a/nodes/current_of_expr.go +++ /dev/null @@ -1,70 +0,0 @@ -// Auto-generated from postgres/src/include/nodes/primnodes.h - DO NOT EDIT - -package pg_query - -import "encoding/json" - -/* - * Node representing [WHERE] CURRENT OF cursor_name - * - * CURRENT OF is a bit like a Var, in that it carries the rangetable index - * of the target relation being constrained; this aids placing the expression - * correctly during planning. We can assume however that its "levelsup" is - * always zero, due to the syntactic constraints on where it can appear. - * - * The referenced cursor can be represented either as a hardwired string - * or as a reference to a run-time parameter of type REFCURSOR. The latter - * case is for the convenience of plpgsql. - */ -type CurrentOfExpr struct { - Xpr Node `json:"xpr"` - Cvarno Index `json:"cvarno"` /* RT index of target relation */ - CursorName *string `json:"cursor_name"` /* name of referenced cursor, or NULL */ - CursorParam int `json:"cursor_param"` /* refcursor parameter number, or 0 */ -} - -func (node CurrentOfExpr) MarshalJSON() ([]byte, error) { - type CurrentOfExprMarshalAlias CurrentOfExpr - return json.Marshal(map[string]interface{}{ - "CurrentOfExpr": (*CurrentOfExprMarshalAlias)(&node), - }) -} - -func (node *CurrentOfExpr) UnmarshalJSON(input []byte) (err error) { - var fields map[string]json.RawMessage - - err = json.Unmarshal(input, &fields) - if err != nil { - return - } - - if fields["xpr"] != nil { - node.Xpr, err = UnmarshalNodeJSON(fields["xpr"]) - if err != nil { - return - } - } - - if fields["cvarno"] != nil { - err = json.Unmarshal(fields["cvarno"], &node.Cvarno) - if err != nil { - return - } - } - - if fields["cursor_name"] != nil { - err = json.Unmarshal(fields["cursor_name"], &node.CursorName) - if err != nil { - return - } - } - - if fields["cursor_param"] != nil { - err = json.Unmarshal(fields["cursor_param"], &node.CursorParam) - if err != nil { - return - } - } - - return -} diff --git a/nodes/current_of_expr_deparse.go b/nodes/current_of_expr_deparse.go deleted file mode 100644 index 8ea0c78c..00000000 --- a/nodes/current_of_expr_deparse.go +++ /dev/null @@ -1,7 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -func (node CurrentOfExpr) Deparse() string { - panic("Not Implemented") -} diff --git a/nodes/current_of_expr_fingerprint.go b/nodes/current_of_expr_fingerprint.go deleted file mode 100644 index 8af5a06a..00000000 --- a/nodes/current_of_expr_fingerprint.go +++ /dev/null @@ -1,36 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -import "strconv" - -func (node CurrentOfExpr) Fingerprint(ctx FingerprintContext, parentNode Node, parentFieldName string) { - ctx.WriteString("CurrentOfExpr") - - if node.CursorName != nil { - ctx.WriteString("cursor_name") - ctx.WriteString(*node.CursorName) - } - - if node.CursorParam != 0 { - ctx.WriteString("cursor_param") - ctx.WriteString(strconv.Itoa(int(node.CursorParam))) - } - - if node.Cvarno != 0 { - ctx.WriteString("cvarno") - ctx.WriteString(strconv.Itoa(int(node.Cvarno))) - } - - if node.Xpr != nil { - subCtx := FingerprintSubContext{} - node.Xpr.Fingerprint(&subCtx, node, "Xpr") - - if len(subCtx.parts) > 0 { - ctx.WriteString("xpr") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } -} diff --git a/nodes/deallocate_stmt.go b/nodes/deallocate_stmt.go deleted file mode 100644 index 5b55ad65..00000000 --- a/nodes/deallocate_stmt.go +++ /dev/null @@ -1,40 +0,0 @@ -// Auto-generated from postgres/src/include/nodes/parsenodes.h - DO NOT EDIT - -package pg_query - -import "encoding/json" - -/* ---------------------- - * DEALLOCATE Statement - * ---------------------- - */ -type DeallocateStmt struct { - Name *string `json:"name"` /* The name of the plan to remove */ - - /* NULL means DEALLOCATE ALL */ -} - -func (node DeallocateStmt) MarshalJSON() ([]byte, error) { - type DeallocateStmtMarshalAlias DeallocateStmt - return json.Marshal(map[string]interface{}{ - "DeallocateStmt": (*DeallocateStmtMarshalAlias)(&node), - }) -} - -func (node *DeallocateStmt) UnmarshalJSON(input []byte) (err error) { - var fields map[string]json.RawMessage - - err = json.Unmarshal(input, &fields) - if err != nil { - return - } - - if fields["name"] != nil { - err = json.Unmarshal(fields["name"], &node.Name) - if err != nil { - return - } - } - - return -} diff --git a/nodes/deallocate_stmt_deparse.go b/nodes/deallocate_stmt_deparse.go deleted file mode 100644 index 584e3f27..00000000 --- a/nodes/deallocate_stmt_deparse.go +++ /dev/null @@ -1,7 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -func (node DeallocateStmt) Deparse() string { - panic("Not Implemented") -} diff --git a/nodes/deallocate_stmt_fingerprint.go b/nodes/deallocate_stmt_fingerprint.go deleted file mode 100644 index 087ecec8..00000000 --- a/nodes/deallocate_stmt_fingerprint.go +++ /dev/null @@ -1,8 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -func (node DeallocateStmt) Fingerprint(ctx FingerprintContext, parentNode Node, parentFieldName string) { - ctx.WriteString("DeallocateStmt") - // Intentionally ignoring node.Name for fingerprinting -} diff --git a/nodes/declare_cursor_stmt.go b/nodes/declare_cursor_stmt.go deleted file mode 100644 index a324c07d..00000000 --- a/nodes/declare_cursor_stmt.go +++ /dev/null @@ -1,51 +0,0 @@ -// Auto-generated from postgres/src/include/nodes/parsenodes.h - DO NOT EDIT - -package pg_query - -import "encoding/json" - -/* these planner-control flags do not correspond to any SQL grammar: */ -type DeclareCursorStmt struct { - Portalname *string `json:"portalname"` /* name of the portal (cursor) */ - Options int `json:"options"` /* bitmask of options (see above) */ - Query Node `json:"query"` /* the query (see comments above) */ -} - -func (node DeclareCursorStmt) MarshalJSON() ([]byte, error) { - type DeclareCursorStmtMarshalAlias DeclareCursorStmt - return json.Marshal(map[string]interface{}{ - "DeclareCursorStmt": (*DeclareCursorStmtMarshalAlias)(&node), - }) -} - -func (node *DeclareCursorStmt) UnmarshalJSON(input []byte) (err error) { - var fields map[string]json.RawMessage - - err = json.Unmarshal(input, &fields) - if err != nil { - return - } - - if fields["portalname"] != nil { - err = json.Unmarshal(fields["portalname"], &node.Portalname) - if err != nil { - return - } - } - - if fields["options"] != nil { - err = json.Unmarshal(fields["options"], &node.Options) - if err != nil { - return - } - } - - if fields["query"] != nil { - node.Query, err = UnmarshalNodeJSON(fields["query"]) - if err != nil { - return - } - } - - return -} diff --git a/nodes/declare_cursor_stmt_deparse.go b/nodes/declare_cursor_stmt_deparse.go deleted file mode 100644 index 74e26fa2..00000000 --- a/nodes/declare_cursor_stmt_deparse.go +++ /dev/null @@ -1,7 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -func (node DeclareCursorStmt) Deparse() string { - panic("Not Implemented") -} diff --git a/nodes/declare_cursor_stmt_fingerprint.go b/nodes/declare_cursor_stmt_fingerprint.go deleted file mode 100644 index 11ae82ef..00000000 --- a/nodes/declare_cursor_stmt_fingerprint.go +++ /dev/null @@ -1,28 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -import "strconv" - -func (node DeclareCursorStmt) Fingerprint(ctx FingerprintContext, parentNode Node, parentFieldName string) { - ctx.WriteString("DeclareCursorStmt") - - if node.Options != 0 { - ctx.WriteString("options") - ctx.WriteString(strconv.Itoa(int(node.Options))) - } - - // Intentionally ignoring node.Portalname for fingerprinting - - if node.Query != nil { - subCtx := FingerprintSubContext{} - node.Query.Fingerprint(&subCtx, node, "Query") - - if len(subCtx.parts) > 0 { - ctx.WriteString("query") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } -} diff --git a/nodes/def_elem.go b/nodes/def_elem.go deleted file mode 100644 index e37a6f4c..00000000 --- a/nodes/def_elem.go +++ /dev/null @@ -1,76 +0,0 @@ -// Auto-generated from postgres/src/include/nodes/parsenodes.h - DO NOT EDIT - -package pg_query - -import "encoding/json" - -/* - * DefElem - a generic "name = value" option definition - * - * In some contexts the name can be qualified. Also, certain SQL commands - * allow a SET/ADD/DROP action to be attached to option settings, so it's - * convenient to carry a field for that too. (Note: currently, it is our - * practice that the grammar allows namespace and action only in statements - * where they are relevant; C code can just ignore those fields in other - * statements.) - */ -type DefElem struct { - Defnamespace *string `json:"defnamespace"` /* NULL if unqualified name */ - Defname *string `json:"defname"` - Arg Node `json:"arg"` /* a (Value *) or a (TypeName *) */ - Defaction DefElemAction `json:"defaction"` /* unspecified action, or SET/ADD/DROP */ - Location int `json:"location"` /* token location, or -1 if unknown */ -} - -func (node DefElem) MarshalJSON() ([]byte, error) { - type DefElemMarshalAlias DefElem - return json.Marshal(map[string]interface{}{ - "DefElem": (*DefElemMarshalAlias)(&node), - }) -} - -func (node *DefElem) UnmarshalJSON(input []byte) (err error) { - var fields map[string]json.RawMessage - - err = json.Unmarshal(input, &fields) - if err != nil { - return - } - - if fields["defnamespace"] != nil { - err = json.Unmarshal(fields["defnamespace"], &node.Defnamespace) - if err != nil { - return - } - } - - if fields["defname"] != nil { - err = json.Unmarshal(fields["defname"], &node.Defname) - if err != nil { - return - } - } - - if fields["arg"] != nil { - node.Arg, err = UnmarshalNodeJSON(fields["arg"]) - if err != nil { - return - } - } - - if fields["defaction"] != nil { - err = json.Unmarshal(fields["defaction"], &node.Defaction) - if err != nil { - return - } - } - - if fields["location"] != nil { - err = json.Unmarshal(fields["location"], &node.Location) - if err != nil { - return - } - } - - return -} diff --git a/nodes/def_elem_action.go b/nodes/def_elem_action.go deleted file mode 100644 index d5dfdbcf..00000000 --- a/nodes/def_elem_action.go +++ /dev/null @@ -1,22 +0,0 @@ -// Auto-generated from postgres/src/include/nodes/parsenodes.h - DO NOT EDIT - -package pg_query - -/* - * DefElem - a generic "name = value" option definition - * - * In some contexts the name can be qualified. Also, certain SQL commands - * allow a SET/ADD/DROP action to be attached to option settings, so it's - * convenient to carry a field for that too. (Note: currently, it is our - * practice that the grammar allows namespace and action only in statements - * where they are relevant; C code can just ignore those fields in other - * statements.) - */ -type DefElemAction uint - -const ( - DEFELEM_UNSPEC DefElemAction = iota /* no action given */ - DEFELEM_SET - DEFELEM_ADD - DEFELEM_DROP -) diff --git a/nodes/def_elem_deparse.go b/nodes/def_elem_deparse.go deleted file mode 100644 index 12ec2cf1..00000000 --- a/nodes/def_elem_deparse.go +++ /dev/null @@ -1,7 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -func (node DefElem) Deparse() string { - panic("Not Implemented") -} diff --git a/nodes/def_elem_fingerprint.go b/nodes/def_elem_fingerprint.go deleted file mode 100644 index 7b156a77..00000000 --- a/nodes/def_elem_fingerprint.go +++ /dev/null @@ -1,38 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -import "strconv" - -func (node DefElem) Fingerprint(ctx FingerprintContext, parentNode Node, parentFieldName string) { - ctx.WriteString("DefElem") - - if node.Arg != nil { - subCtx := FingerprintSubContext{} - node.Arg.Fingerprint(&subCtx, node, "Arg") - - if len(subCtx.parts) > 0 { - ctx.WriteString("arg") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if int(node.Defaction) != 0 { - ctx.WriteString("defaction") - ctx.WriteString(strconv.Itoa(int(node.Defaction))) - } - - if node.Defname != nil { - ctx.WriteString("defname") - ctx.WriteString(*node.Defname) - } - - if node.Defnamespace != nil { - ctx.WriteString("defnamespace") - ctx.WriteString(*node.Defnamespace) - } - - // Intentionally ignoring node.Location for fingerprinting -} diff --git a/nodes/define_stmt.go b/nodes/define_stmt.go deleted file mode 100644 index bcf478d0..00000000 --- a/nodes/define_stmt.go +++ /dev/null @@ -1,78 +0,0 @@ -// Auto-generated from postgres/src/include/nodes/parsenodes.h - DO NOT EDIT - -package pg_query - -import "encoding/json" - -/* ---------------------- - * Create {Aggregate|Operator|Type} Statement - * ---------------------- - */ -type DefineStmt struct { - Kind ObjectType `json:"kind"` /* aggregate, operator, type */ - Oldstyle bool `json:"oldstyle"` /* hack to signal old CREATE AGG syntax */ - Defnames List `json:"defnames"` /* qualified name (list of Value strings) */ - Args List `json:"args"` /* a list of TypeName (if needed) */ - Definition List `json:"definition"` /* a list of DefElem */ - IfNotExists bool `json:"if_not_exists"` /* just do nothing if it already exists? */ -} - -func (node DefineStmt) MarshalJSON() ([]byte, error) { - type DefineStmtMarshalAlias DefineStmt - return json.Marshal(map[string]interface{}{ - "DefineStmt": (*DefineStmtMarshalAlias)(&node), - }) -} - -func (node *DefineStmt) UnmarshalJSON(input []byte) (err error) { - var fields map[string]json.RawMessage - - err = json.Unmarshal(input, &fields) - if err != nil { - return - } - - if fields["kind"] != nil { - err = json.Unmarshal(fields["kind"], &node.Kind) - if err != nil { - return - } - } - - if fields["oldstyle"] != nil { - err = json.Unmarshal(fields["oldstyle"], &node.Oldstyle) - if err != nil { - return - } - } - - if fields["defnames"] != nil { - node.Defnames.Items, err = UnmarshalNodeArrayJSON(fields["defnames"]) - if err != nil { - return - } - } - - if fields["args"] != nil { - node.Args.Items, err = UnmarshalNodeArrayJSON(fields["args"]) - if err != nil { - return - } - } - - if fields["definition"] != nil { - node.Definition.Items, err = UnmarshalNodeArrayJSON(fields["definition"]) - if err != nil { - return - } - } - - if fields["if_not_exists"] != nil { - err = json.Unmarshal(fields["if_not_exists"], &node.IfNotExists) - if err != nil { - return - } - } - - return -} diff --git a/nodes/define_stmt_deparse.go b/nodes/define_stmt_deparse.go deleted file mode 100644 index 689a91a2..00000000 --- a/nodes/define_stmt_deparse.go +++ /dev/null @@ -1,7 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -func (node DefineStmt) Deparse() string { - panic("Not Implemented") -} diff --git a/nodes/define_stmt_fingerprint.go b/nodes/define_stmt_fingerprint.go deleted file mode 100644 index 064b2097..00000000 --- a/nodes/define_stmt_fingerprint.go +++ /dev/null @@ -1,60 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -import "strconv" - -func (node DefineStmt) Fingerprint(ctx FingerprintContext, parentNode Node, parentFieldName string) { - ctx.WriteString("DefineStmt") - - if len(node.Args.Items) > 0 { - subCtx := FingerprintSubContext{} - node.Args.Fingerprint(&subCtx, node, "Args") - - if len(subCtx.parts) > 0 { - ctx.WriteString("args") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if len(node.Definition.Items) > 0 { - subCtx := FingerprintSubContext{} - node.Definition.Fingerprint(&subCtx, node, "Definition") - - if len(subCtx.parts) > 0 { - ctx.WriteString("definition") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if len(node.Defnames.Items) > 0 { - subCtx := FingerprintSubContext{} - node.Defnames.Fingerprint(&subCtx, node, "Defnames") - - if len(subCtx.parts) > 0 { - ctx.WriteString("defnames") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if node.IfNotExists { - ctx.WriteString("if_not_exists") - ctx.WriteString(strconv.FormatBool(node.IfNotExists)) - } - - if int(node.Kind) != 0 { - ctx.WriteString("kind") - ctx.WriteString(strconv.Itoa(int(node.Kind))) - } - - if node.Oldstyle { - ctx.WriteString("oldstyle") - ctx.WriteString(strconv.FormatBool(node.Oldstyle)) - } -} diff --git a/nodes/delete_stmt.go b/nodes/delete_stmt.go deleted file mode 100644 index acb92d14..00000000 --- a/nodes/delete_stmt.go +++ /dev/null @@ -1,80 +0,0 @@ -// Auto-generated from postgres/src/include/nodes/parsenodes.h - DO NOT EDIT - -package pg_query - -import "encoding/json" - -/* ---------------------- - * Delete Statement - * ---------------------- - */ -type DeleteStmt struct { - Relation *RangeVar `json:"relation"` /* relation to delete from */ - UsingClause List `json:"usingClause"` /* optional using clause for more tables */ - WhereClause Node `json:"whereClause"` /* qualifications */ - ReturningList List `json:"returningList"` /* list of expressions to return */ - WithClause *WithClause `json:"withClause"` /* WITH clause */ -} - -func (node DeleteStmt) MarshalJSON() ([]byte, error) { - type DeleteStmtMarshalAlias DeleteStmt - return json.Marshal(map[string]interface{}{ - "DeleteStmt": (*DeleteStmtMarshalAlias)(&node), - }) -} - -func (node *DeleteStmt) UnmarshalJSON(input []byte) (err error) { - var fields map[string]json.RawMessage - - err = json.Unmarshal(input, &fields) - if err != nil { - return - } - - if fields["relation"] != nil { - var nodePtr *Node - nodePtr, err = UnmarshalNodePtrJSON(fields["relation"]) - if err != nil { - return - } - if nodePtr != nil && *nodePtr != nil { - val := (*nodePtr).(RangeVar) - node.Relation = &val - } - } - - if fields["usingClause"] != nil { - node.UsingClause.Items, err = UnmarshalNodeArrayJSON(fields["usingClause"]) - if err != nil { - return - } - } - - if fields["whereClause"] != nil { - node.WhereClause, err = UnmarshalNodeJSON(fields["whereClause"]) - if err != nil { - return - } - } - - if fields["returningList"] != nil { - node.ReturningList.Items, err = UnmarshalNodeArrayJSON(fields["returningList"]) - if err != nil { - return - } - } - - if fields["withClause"] != nil { - var nodePtr *Node - nodePtr, err = UnmarshalNodePtrJSON(fields["withClause"]) - if err != nil { - return - } - if nodePtr != nil && *nodePtr != nil { - val := (*nodePtr).(WithClause) - node.WithClause = &val - } - } - - return -} diff --git a/nodes/delete_stmt_deparse.go b/nodes/delete_stmt_deparse.go deleted file mode 100644 index f962338a..00000000 --- a/nodes/delete_stmt_deparse.go +++ /dev/null @@ -1,7 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -func (node DeleteStmt) Deparse() string { - panic("Not Implemented") -} diff --git a/nodes/delete_stmt_fingerprint.go b/nodes/delete_stmt_fingerprint.go deleted file mode 100644 index d7d4f840..00000000 --- a/nodes/delete_stmt_fingerprint.go +++ /dev/null @@ -1,67 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -func (node DeleteStmt) Fingerprint(ctx FingerprintContext, parentNode Node, parentFieldName string) { - ctx.WriteString("DeleteStmt") - - if node.Relation != nil { - subCtx := FingerprintSubContext{} - node.Relation.Fingerprint(&subCtx, node, "Relation") - - if len(subCtx.parts) > 0 { - ctx.WriteString("relation") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if len(node.ReturningList.Items) > 0 { - subCtx := FingerprintSubContext{} - node.ReturningList.Fingerprint(&subCtx, node, "ReturningList") - - if len(subCtx.parts) > 0 { - ctx.WriteString("returningList") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if len(node.UsingClause.Items) > 0 { - subCtx := FingerprintSubContext{} - node.UsingClause.Fingerprint(&subCtx, node, "UsingClause") - - if len(subCtx.parts) > 0 { - ctx.WriteString("usingClause") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if node.WhereClause != nil { - subCtx := FingerprintSubContext{} - node.WhereClause.Fingerprint(&subCtx, node, "WhereClause") - - if len(subCtx.parts) > 0 { - ctx.WriteString("whereClause") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if node.WithClause != nil { - subCtx := FingerprintSubContext{} - node.WithClause.Fingerprint(&subCtx, node, "WithClause") - - if len(subCtx.parts) > 0 { - ctx.WriteString("withClause") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } -} diff --git a/nodes/discard_mode.go b/nodes/discard_mode.go deleted file mode 100644 index e1f7f3dd..00000000 --- a/nodes/discard_mode.go +++ /dev/null @@ -1,16 +0,0 @@ -// Auto-generated from postgres/src/include/nodes/parsenodes.h - DO NOT EDIT - -package pg_query - -/* ---------------------- - * Discard Statement - * ---------------------- - */ -type DiscardMode uint - -const ( - DISCARD_ALL DiscardMode = iota - DISCARD_PLANS - DISCARD_SEQUENCES - DISCARD_TEMP -) diff --git a/nodes/discard_stmt.go b/nodes/discard_stmt.go deleted file mode 100644 index 555691cd..00000000 --- a/nodes/discard_stmt.go +++ /dev/null @@ -1,38 +0,0 @@ -// Auto-generated from postgres/src/include/nodes/parsenodes.h - DO NOT EDIT - -package pg_query - -import "encoding/json" - -/* ---------------------- - * Discard Statement - * ---------------------- - */ -type DiscardStmt struct { - Target DiscardMode `json:"target"` -} - -func (node DiscardStmt) MarshalJSON() ([]byte, error) { - type DiscardStmtMarshalAlias DiscardStmt - return json.Marshal(map[string]interface{}{ - "DiscardStmt": (*DiscardStmtMarshalAlias)(&node), - }) -} - -func (node *DiscardStmt) UnmarshalJSON(input []byte) (err error) { - var fields map[string]json.RawMessage - - err = json.Unmarshal(input, &fields) - if err != nil { - return - } - - if fields["target"] != nil { - err = json.Unmarshal(fields["target"], &node.Target) - if err != nil { - return - } - } - - return -} diff --git a/nodes/discard_stmt_deparse.go b/nodes/discard_stmt_deparse.go deleted file mode 100644 index a61a8b06..00000000 --- a/nodes/discard_stmt_deparse.go +++ /dev/null @@ -1,7 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -func (node DiscardStmt) Deparse() string { - panic("Not Implemented") -} diff --git a/nodes/discard_stmt_fingerprint.go b/nodes/discard_stmt_fingerprint.go deleted file mode 100644 index 29b994b9..00000000 --- a/nodes/discard_stmt_fingerprint.go +++ /dev/null @@ -1,14 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -import "strconv" - -func (node DiscardStmt) Fingerprint(ctx FingerprintContext, parentNode Node, parentFieldName string) { - ctx.WriteString("DiscardStmt") - - if int(node.Target) != 0 { - ctx.WriteString("target") - ctx.WriteString(strconv.Itoa(int(node.Target))) - } -} diff --git a/nodes/do_stmt.go b/nodes/do_stmt.go deleted file mode 100644 index ca4ecc4d..00000000 --- a/nodes/do_stmt.go +++ /dev/null @@ -1,40 +0,0 @@ -// Auto-generated from postgres/src/include/nodes/parsenodes.h - DO NOT EDIT - -package pg_query - -import "encoding/json" - -/* ---------------------- - * DO Statement - * - * DoStmt is the raw parser output, InlineCodeBlock is the execution-time API - * ---------------------- - */ -type DoStmt struct { - Args List `json:"args"` /* List of DefElem nodes */ -} - -func (node DoStmt) MarshalJSON() ([]byte, error) { - type DoStmtMarshalAlias DoStmt - return json.Marshal(map[string]interface{}{ - "DoStmt": (*DoStmtMarshalAlias)(&node), - }) -} - -func (node *DoStmt) UnmarshalJSON(input []byte) (err error) { - var fields map[string]json.RawMessage - - err = json.Unmarshal(input, &fields) - if err != nil { - return - } - - if fields["args"] != nil { - node.Args.Items, err = UnmarshalNodeArrayJSON(fields["args"]) - if err != nil { - return - } - } - - return -} diff --git a/nodes/do_stmt_deparse.go b/nodes/do_stmt_deparse.go deleted file mode 100644 index a681b430..00000000 --- a/nodes/do_stmt_deparse.go +++ /dev/null @@ -1,7 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -func (node DoStmt) Deparse() string { - panic("Not Implemented") -} diff --git a/nodes/do_stmt_fingerprint.go b/nodes/do_stmt_fingerprint.go deleted file mode 100644 index 8843a19d..00000000 --- a/nodes/do_stmt_fingerprint.go +++ /dev/null @@ -1,19 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -func (node DoStmt) Fingerprint(ctx FingerprintContext, parentNode Node, parentFieldName string) { - ctx.WriteString("DoStmt") - - if len(node.Args.Items) > 0 { - subCtx := FingerprintSubContext{} - node.Args.Fingerprint(&subCtx, node, "Args") - - if len(subCtx.parts) > 0 { - ctx.WriteString("args") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } -} diff --git a/nodes/drop_behavior.go b/nodes/drop_behavior.go deleted file mode 100644 index 6bf49858..00000000 --- a/nodes/drop_behavior.go +++ /dev/null @@ -1,10 +0,0 @@ -// Auto-generated from postgres/src/include/nodes/parsenodes.h - DO NOT EDIT - -package pg_query - -type DropBehavior uint - -const ( - DROP_RESTRICT DropBehavior = iota /* drop fails if any dependent objects */ - DROP_CASCADE /* remove dependent objects too */ -) diff --git a/nodes/drop_owned_stmt.go b/nodes/drop_owned_stmt.go deleted file mode 100644 index 8508cd5a..00000000 --- a/nodes/drop_owned_stmt.go +++ /dev/null @@ -1,45 +0,0 @@ -// Auto-generated from postgres/src/include/nodes/parsenodes.h - DO NOT EDIT - -package pg_query - -import "encoding/json" - -/* - * DROP OWNED statement - */ -type DropOwnedStmt struct { - Roles List `json:"roles"` - Behavior DropBehavior `json:"behavior"` -} - -func (node DropOwnedStmt) MarshalJSON() ([]byte, error) { - type DropOwnedStmtMarshalAlias DropOwnedStmt - return json.Marshal(map[string]interface{}{ - "DropOwnedStmt": (*DropOwnedStmtMarshalAlias)(&node), - }) -} - -func (node *DropOwnedStmt) UnmarshalJSON(input []byte) (err error) { - var fields map[string]json.RawMessage - - err = json.Unmarshal(input, &fields) - if err != nil { - return - } - - if fields["roles"] != nil { - node.Roles.Items, err = UnmarshalNodeArrayJSON(fields["roles"]) - if err != nil { - return - } - } - - if fields["behavior"] != nil { - err = json.Unmarshal(fields["behavior"], &node.Behavior) - if err != nil { - return - } - } - - return -} diff --git a/nodes/drop_owned_stmt_deparse.go b/nodes/drop_owned_stmt_deparse.go deleted file mode 100644 index ed98be24..00000000 --- a/nodes/drop_owned_stmt_deparse.go +++ /dev/null @@ -1,7 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -func (node DropOwnedStmt) Deparse() string { - panic("Not Implemented") -} diff --git a/nodes/drop_owned_stmt_fingerprint.go b/nodes/drop_owned_stmt_fingerprint.go deleted file mode 100644 index 22db96f8..00000000 --- a/nodes/drop_owned_stmt_fingerprint.go +++ /dev/null @@ -1,26 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -import "strconv" - -func (node DropOwnedStmt) Fingerprint(ctx FingerprintContext, parentNode Node, parentFieldName string) { - ctx.WriteString("DropOwnedStmt") - - if int(node.Behavior) != 0 { - ctx.WriteString("behavior") - ctx.WriteString(strconv.Itoa(int(node.Behavior))) - } - - if len(node.Roles.Items) > 0 { - subCtx := FingerprintSubContext{} - node.Roles.Fingerprint(&subCtx, node, "Roles") - - if len(subCtx.parts) > 0 { - ctx.WriteString("roles") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } -} diff --git a/nodes/drop_role_stmt.go b/nodes/drop_role_stmt.go deleted file mode 100644 index 6027e774..00000000 --- a/nodes/drop_role_stmt.go +++ /dev/null @@ -1,51 +0,0 @@ -// Auto-generated from postgres/src/include/nodes/parsenodes.h - DO NOT EDIT - -package pg_query - -import "encoding/json" - -/* ---------------------- - * Create/Alter/Drop Role Statements - * - * Note: these node types are also used for the backwards-compatible - * Create/Alter/Drop User/Group statements. In the ALTER and DROP cases - * there's really no need to distinguish what the original spelling was, - * but for CREATE we mark the type because the defaults vary. - * ---------------------- - */ -type DropRoleStmt struct { - Roles List `json:"roles"` /* List of roles to remove */ - MissingOk bool `json:"missing_ok"` /* skip error if a role is missing? */ -} - -func (node DropRoleStmt) MarshalJSON() ([]byte, error) { - type DropRoleStmtMarshalAlias DropRoleStmt - return json.Marshal(map[string]interface{}{ - "DropRoleStmt": (*DropRoleStmtMarshalAlias)(&node), - }) -} - -func (node *DropRoleStmt) UnmarshalJSON(input []byte) (err error) { - var fields map[string]json.RawMessage - - err = json.Unmarshal(input, &fields) - if err != nil { - return - } - - if fields["roles"] != nil { - node.Roles.Items, err = UnmarshalNodeArrayJSON(fields["roles"]) - if err != nil { - return - } - } - - if fields["missing_ok"] != nil { - err = json.Unmarshal(fields["missing_ok"], &node.MissingOk) - if err != nil { - return - } - } - - return -} diff --git a/nodes/drop_role_stmt_deparse.go b/nodes/drop_role_stmt_deparse.go deleted file mode 100644 index 4645f422..00000000 --- a/nodes/drop_role_stmt_deparse.go +++ /dev/null @@ -1,7 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -func (node DropRoleStmt) Deparse() string { - panic("Not Implemented") -} diff --git a/nodes/drop_role_stmt_fingerprint.go b/nodes/drop_role_stmt_fingerprint.go deleted file mode 100644 index 9f1ec827..00000000 --- a/nodes/drop_role_stmt_fingerprint.go +++ /dev/null @@ -1,26 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -import "strconv" - -func (node DropRoleStmt) Fingerprint(ctx FingerprintContext, parentNode Node, parentFieldName string) { - ctx.WriteString("DropRoleStmt") - - if node.MissingOk { - ctx.WriteString("missing_ok") - ctx.WriteString(strconv.FormatBool(node.MissingOk)) - } - - if len(node.Roles.Items) > 0 { - subCtx := FingerprintSubContext{} - node.Roles.Fingerprint(&subCtx, node, "Roles") - - if len(subCtx.parts) > 0 { - ctx.WriteString("roles") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } -} diff --git a/nodes/drop_stmt.go b/nodes/drop_stmt.go deleted file mode 100644 index 72fa1015..00000000 --- a/nodes/drop_stmt.go +++ /dev/null @@ -1,70 +0,0 @@ -// Auto-generated from postgres/src/include/nodes/parsenodes.h - DO NOT EDIT - -package pg_query - -import "encoding/json" - -/* ---------------------- - * Drop Table|Sequence|View|Index|Type|Domain|Conversion|Schema Statement - * ---------------------- - */ -type DropStmt struct { - Objects List `json:"objects"` /* list of names */ - RemoveType ObjectType `json:"removeType"` /* object type */ - Behavior DropBehavior `json:"behavior"` /* RESTRICT or CASCADE behavior */ - MissingOk bool `json:"missing_ok"` /* skip error if object is missing? */ - Concurrent bool `json:"concurrent"` /* drop index concurrently? */ -} - -func (node DropStmt) MarshalJSON() ([]byte, error) { - type DropStmtMarshalAlias DropStmt - return json.Marshal(map[string]interface{}{ - "DropStmt": (*DropStmtMarshalAlias)(&node), - }) -} - -func (node *DropStmt) UnmarshalJSON(input []byte) (err error) { - var fields map[string]json.RawMessage - - err = json.Unmarshal(input, &fields) - if err != nil { - return - } - - if fields["objects"] != nil { - node.Objects.Items, err = UnmarshalNodeArrayJSON(fields["objects"]) - if err != nil { - return - } - } - - if fields["removeType"] != nil { - err = json.Unmarshal(fields["removeType"], &node.RemoveType) - if err != nil { - return - } - } - - if fields["behavior"] != nil { - err = json.Unmarshal(fields["behavior"], &node.Behavior) - if err != nil { - return - } - } - - if fields["missing_ok"] != nil { - err = json.Unmarshal(fields["missing_ok"], &node.MissingOk) - if err != nil { - return - } - } - - if fields["concurrent"] != nil { - err = json.Unmarshal(fields["concurrent"], &node.Concurrent) - if err != nil { - return - } - } - - return -} diff --git a/nodes/drop_stmt_deparse.go b/nodes/drop_stmt_deparse.go deleted file mode 100644 index 5866f67b..00000000 --- a/nodes/drop_stmt_deparse.go +++ /dev/null @@ -1,7 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -func (node DropStmt) Deparse() string { - panic("Not Implemented") -} diff --git a/nodes/drop_stmt_fingerprint.go b/nodes/drop_stmt_fingerprint.go deleted file mode 100644 index 84751f31..00000000 --- a/nodes/drop_stmt_fingerprint.go +++ /dev/null @@ -1,41 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -import "strconv" - -func (node DropStmt) Fingerprint(ctx FingerprintContext, parentNode Node, parentFieldName string) { - ctx.WriteString("DropStmt") - - if int(node.Behavior) != 0 { - ctx.WriteString("behavior") - ctx.WriteString(strconv.Itoa(int(node.Behavior))) - } - - if node.Concurrent { - ctx.WriteString("concurrent") - ctx.WriteString(strconv.FormatBool(node.Concurrent)) - } - - if node.MissingOk { - ctx.WriteString("missing_ok") - ctx.WriteString(strconv.FormatBool(node.MissingOk)) - } - - if len(node.Objects.Items) > 0 { - subCtx := FingerprintSubContext{} - node.Objects.Fingerprint(&subCtx, node, "Objects") - - if len(subCtx.parts) > 0 { - ctx.WriteString("objects") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if int(node.RemoveType) != 0 { - ctx.WriteString("removeType") - ctx.WriteString(strconv.Itoa(int(node.RemoveType))) - } -} diff --git a/nodes/drop_subscription_stmt.go b/nodes/drop_subscription_stmt.go deleted file mode 100644 index 5ab54292..00000000 --- a/nodes/drop_subscription_stmt.go +++ /dev/null @@ -1,50 +0,0 @@ -// Auto-generated from postgres/src/include/nodes/parsenodes.h - DO NOT EDIT - -package pg_query - -import "encoding/json" - -type DropSubscriptionStmt struct { - Subname *string `json:"subname"` /* Name of of the subscription */ - MissingOk bool `json:"missing_ok"` /* Skip error if missing? */ - Behavior DropBehavior `json:"behavior"` /* RESTRICT or CASCADE behavior */ -} - -func (node DropSubscriptionStmt) MarshalJSON() ([]byte, error) { - type DropSubscriptionStmtMarshalAlias DropSubscriptionStmt - return json.Marshal(map[string]interface{}{ - "DropSubscriptionStmt": (*DropSubscriptionStmtMarshalAlias)(&node), - }) -} - -func (node *DropSubscriptionStmt) UnmarshalJSON(input []byte) (err error) { - var fields map[string]json.RawMessage - - err = json.Unmarshal(input, &fields) - if err != nil { - return - } - - if fields["subname"] != nil { - err = json.Unmarshal(fields["subname"], &node.Subname) - if err != nil { - return - } - } - - if fields["missing_ok"] != nil { - err = json.Unmarshal(fields["missing_ok"], &node.MissingOk) - if err != nil { - return - } - } - - if fields["behavior"] != nil { - err = json.Unmarshal(fields["behavior"], &node.Behavior) - if err != nil { - return - } - } - - return -} diff --git a/nodes/drop_subscription_stmt_deparse.go b/nodes/drop_subscription_stmt_deparse.go deleted file mode 100644 index 927c1b39..00000000 --- a/nodes/drop_subscription_stmt_deparse.go +++ /dev/null @@ -1,7 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -func (node DropSubscriptionStmt) Deparse() string { - panic("Not Implemented") -} diff --git a/nodes/drop_subscription_stmt_fingerprint.go b/nodes/drop_subscription_stmt_fingerprint.go deleted file mode 100644 index 05bb0f09..00000000 --- a/nodes/drop_subscription_stmt_fingerprint.go +++ /dev/null @@ -1,24 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -import "strconv" - -func (node DropSubscriptionStmt) Fingerprint(ctx FingerprintContext, parentNode Node, parentFieldName string) { - ctx.WriteString("DropSubscriptionStmt") - - if int(node.Behavior) != 0 { - ctx.WriteString("behavior") - ctx.WriteString(strconv.Itoa(int(node.Behavior))) - } - - if node.MissingOk { - ctx.WriteString("missing_ok") - ctx.WriteString(strconv.FormatBool(node.MissingOk)) - } - - if node.Subname != nil { - ctx.WriteString("subname") - ctx.WriteString(*node.Subname) - } -} diff --git a/nodes/drop_table_space_stmt.go b/nodes/drop_table_space_stmt.go deleted file mode 100644 index 086801eb..00000000 --- a/nodes/drop_table_space_stmt.go +++ /dev/null @@ -1,46 +0,0 @@ -// Auto-generated from postgres/src/include/nodes/parsenodes.h - DO NOT EDIT - -package pg_query - -import "encoding/json" - -/* ---------------------- - * Create/Drop Table Space Statements - * ---------------------- - */ -type DropTableSpaceStmt struct { - Tablespacename *string `json:"tablespacename"` - MissingOk bool `json:"missing_ok"` /* skip error if missing? */ -} - -func (node DropTableSpaceStmt) MarshalJSON() ([]byte, error) { - type DropTableSpaceStmtMarshalAlias DropTableSpaceStmt - return json.Marshal(map[string]interface{}{ - "DropTableSpaceStmt": (*DropTableSpaceStmtMarshalAlias)(&node), - }) -} - -func (node *DropTableSpaceStmt) UnmarshalJSON(input []byte) (err error) { - var fields map[string]json.RawMessage - - err = json.Unmarshal(input, &fields) - if err != nil { - return - } - - if fields["tablespacename"] != nil { - err = json.Unmarshal(fields["tablespacename"], &node.Tablespacename) - if err != nil { - return - } - } - - if fields["missing_ok"] != nil { - err = json.Unmarshal(fields["missing_ok"], &node.MissingOk) - if err != nil { - return - } - } - - return -} diff --git a/nodes/drop_table_space_stmt_deparse.go b/nodes/drop_table_space_stmt_deparse.go deleted file mode 100644 index 89805354..00000000 --- a/nodes/drop_table_space_stmt_deparse.go +++ /dev/null @@ -1,7 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -func (node DropTableSpaceStmt) Deparse() string { - panic("Not Implemented") -} diff --git a/nodes/drop_table_space_stmt_fingerprint.go b/nodes/drop_table_space_stmt_fingerprint.go deleted file mode 100644 index 1d967e9d..00000000 --- a/nodes/drop_table_space_stmt_fingerprint.go +++ /dev/null @@ -1,19 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -import "strconv" - -func (node DropTableSpaceStmt) Fingerprint(ctx FingerprintContext, parentNode Node, parentFieldName string) { - ctx.WriteString("DropTableSpaceStmt") - - if node.MissingOk { - ctx.WriteString("missing_ok") - ctx.WriteString(strconv.FormatBool(node.MissingOk)) - } - - if node.Tablespacename != nil { - ctx.WriteString("tablespacename") - ctx.WriteString(*node.Tablespacename) - } -} diff --git a/nodes/drop_user_mapping_stmt.go b/nodes/drop_user_mapping_stmt.go deleted file mode 100644 index 48631e88..00000000 --- a/nodes/drop_user_mapping_stmt.go +++ /dev/null @@ -1,59 +0,0 @@ -// Auto-generated from postgres/src/include/nodes/parsenodes.h - DO NOT EDIT - -package pg_query - -import "encoding/json" - -/* ---------------------- - * Create/Drop USER MAPPING Statements - * ---------------------- - */ -type DropUserMappingStmt struct { - User *RoleSpec `json:"user"` /* user role */ - Servername *string `json:"servername"` /* server name */ - MissingOk bool `json:"missing_ok"` /* ignore missing mappings */ -} - -func (node DropUserMappingStmt) MarshalJSON() ([]byte, error) { - type DropUserMappingStmtMarshalAlias DropUserMappingStmt - return json.Marshal(map[string]interface{}{ - "DropUserMappingStmt": (*DropUserMappingStmtMarshalAlias)(&node), - }) -} - -func (node *DropUserMappingStmt) UnmarshalJSON(input []byte) (err error) { - var fields map[string]json.RawMessage - - err = json.Unmarshal(input, &fields) - if err != nil { - return - } - - if fields["user"] != nil { - var nodePtr *Node - nodePtr, err = UnmarshalNodePtrJSON(fields["user"]) - if err != nil { - return - } - if nodePtr != nil && *nodePtr != nil { - val := (*nodePtr).(RoleSpec) - node.User = &val - } - } - - if fields["servername"] != nil { - err = json.Unmarshal(fields["servername"], &node.Servername) - if err != nil { - return - } - } - - if fields["missing_ok"] != nil { - err = json.Unmarshal(fields["missing_ok"], &node.MissingOk) - if err != nil { - return - } - } - - return -} diff --git a/nodes/drop_user_mapping_stmt_deparse.go b/nodes/drop_user_mapping_stmt_deparse.go deleted file mode 100644 index b1359d74..00000000 --- a/nodes/drop_user_mapping_stmt_deparse.go +++ /dev/null @@ -1,7 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -func (node DropUserMappingStmt) Deparse() string { - panic("Not Implemented") -} diff --git a/nodes/drop_user_mapping_stmt_fingerprint.go b/nodes/drop_user_mapping_stmt_fingerprint.go deleted file mode 100644 index 8292fa3e..00000000 --- a/nodes/drop_user_mapping_stmt_fingerprint.go +++ /dev/null @@ -1,31 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -import "strconv" - -func (node DropUserMappingStmt) Fingerprint(ctx FingerprintContext, parentNode Node, parentFieldName string) { - ctx.WriteString("DropUserMappingStmt") - - if node.MissingOk { - ctx.WriteString("missing_ok") - ctx.WriteString(strconv.FormatBool(node.MissingOk)) - } - - if node.Servername != nil { - ctx.WriteString("servername") - ctx.WriteString(*node.Servername) - } - - if node.User != nil { - subCtx := FingerprintSubContext{} - node.User.Fingerprint(&subCtx, node, "User") - - if len(subCtx.parts) > 0 { - ctx.WriteString("user") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } -} diff --git a/nodes/dropdb_stmt.go b/nodes/dropdb_stmt.go deleted file mode 100644 index 2d568a9c..00000000 --- a/nodes/dropdb_stmt.go +++ /dev/null @@ -1,46 +0,0 @@ -// Auto-generated from postgres/src/include/nodes/parsenodes.h - DO NOT EDIT - -package pg_query - -import "encoding/json" - -/* ---------------------- - * Dropdb Statement - * ---------------------- - */ -type DropdbStmt struct { - Dbname *string `json:"dbname"` /* database to drop */ - MissingOk bool `json:"missing_ok"` /* skip error if db is missing? */ -} - -func (node DropdbStmt) MarshalJSON() ([]byte, error) { - type DropdbStmtMarshalAlias DropdbStmt - return json.Marshal(map[string]interface{}{ - "DropdbStmt": (*DropdbStmtMarshalAlias)(&node), - }) -} - -func (node *DropdbStmt) UnmarshalJSON(input []byte) (err error) { - var fields map[string]json.RawMessage - - err = json.Unmarshal(input, &fields) - if err != nil { - return - } - - if fields["dbname"] != nil { - err = json.Unmarshal(fields["dbname"], &node.Dbname) - if err != nil { - return - } - } - - if fields["missing_ok"] != nil { - err = json.Unmarshal(fields["missing_ok"], &node.MissingOk) - if err != nil { - return - } - } - - return -} diff --git a/nodes/dropdb_stmt_deparse.go b/nodes/dropdb_stmt_deparse.go deleted file mode 100644 index 1d2446e0..00000000 --- a/nodes/dropdb_stmt_deparse.go +++ /dev/null @@ -1,7 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -func (node DropdbStmt) Deparse() string { - panic("Not Implemented") -} diff --git a/nodes/dropdb_stmt_fingerprint.go b/nodes/dropdb_stmt_fingerprint.go deleted file mode 100644 index e1aa75ad..00000000 --- a/nodes/dropdb_stmt_fingerprint.go +++ /dev/null @@ -1,19 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -import "strconv" - -func (node DropdbStmt) Fingerprint(ctx FingerprintContext, parentNode Node, parentFieldName string) { - ctx.WriteString("DropdbStmt") - - if node.Dbname != nil { - ctx.WriteString("dbname") - ctx.WriteString(*node.Dbname) - } - - if node.MissingOk { - ctx.WriteString("missing_ok") - ctx.WriteString(strconv.FormatBool(node.MissingOk)) - } -} diff --git a/nodes/execute_stmt.go b/nodes/execute_stmt.go deleted file mode 100644 index 09f4fcc0..00000000 --- a/nodes/execute_stmt.go +++ /dev/null @@ -1,46 +0,0 @@ -// Auto-generated from postgres/src/include/nodes/parsenodes.h - DO NOT EDIT - -package pg_query - -import "encoding/json" - -/* ---------------------- - * EXECUTE Statement - * ---------------------- - */ -type ExecuteStmt struct { - Name *string `json:"name"` /* The name of the plan to execute */ - Params List `json:"params"` /* Values to assign to parameters */ -} - -func (node ExecuteStmt) MarshalJSON() ([]byte, error) { - type ExecuteStmtMarshalAlias ExecuteStmt - return json.Marshal(map[string]interface{}{ - "ExecuteStmt": (*ExecuteStmtMarshalAlias)(&node), - }) -} - -func (node *ExecuteStmt) UnmarshalJSON(input []byte) (err error) { - var fields map[string]json.RawMessage - - err = json.Unmarshal(input, &fields) - if err != nil { - return - } - - if fields["name"] != nil { - err = json.Unmarshal(fields["name"], &node.Name) - if err != nil { - return - } - } - - if fields["params"] != nil { - node.Params.Items, err = UnmarshalNodeArrayJSON(fields["params"]) - if err != nil { - return - } - } - - return -} diff --git a/nodes/execute_stmt_deparse.go b/nodes/execute_stmt_deparse.go deleted file mode 100644 index daf480e8..00000000 --- a/nodes/execute_stmt_deparse.go +++ /dev/null @@ -1,7 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -func (node ExecuteStmt) Deparse() string { - panic("Not Implemented") -} diff --git a/nodes/execute_stmt_fingerprint.go b/nodes/execute_stmt_fingerprint.go deleted file mode 100644 index 450f9327..00000000 --- a/nodes/execute_stmt_fingerprint.go +++ /dev/null @@ -1,20 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -func (node ExecuteStmt) Fingerprint(ctx FingerprintContext, parentNode Node, parentFieldName string) { - ctx.WriteString("ExecuteStmt") - // Intentionally ignoring node.Name for fingerprinting - - if len(node.Params.Items) > 0 { - subCtx := FingerprintSubContext{} - node.Params.Fingerprint(&subCtx, node, "Params") - - if len(subCtx.parts) > 0 { - ctx.WriteString("params") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } -} diff --git a/nodes/explain_stmt.go b/nodes/explain_stmt.go deleted file mode 100644 index 8fecb5b0..00000000 --- a/nodes/explain_stmt.go +++ /dev/null @@ -1,50 +0,0 @@ -// Auto-generated from postgres/src/include/nodes/parsenodes.h - DO NOT EDIT - -package pg_query - -import "encoding/json" - -/* ---------------------- - * Explain Statement - * - * The "query" field is initially a raw parse tree, and is converted to a - * Query node during parse analysis. Note that rewriting and planning - * of the query are always postponed until execution. - * ---------------------- - */ -type ExplainStmt struct { - Query Node `json:"query"` /* the query (see comments above) */ - Options List `json:"options"` /* list of DefElem nodes */ -} - -func (node ExplainStmt) MarshalJSON() ([]byte, error) { - type ExplainStmtMarshalAlias ExplainStmt - return json.Marshal(map[string]interface{}{ - "ExplainStmt": (*ExplainStmtMarshalAlias)(&node), - }) -} - -func (node *ExplainStmt) UnmarshalJSON(input []byte) (err error) { - var fields map[string]json.RawMessage - - err = json.Unmarshal(input, &fields) - if err != nil { - return - } - - if fields["query"] != nil { - node.Query, err = UnmarshalNodeJSON(fields["query"]) - if err != nil { - return - } - } - - if fields["options"] != nil { - node.Options.Items, err = UnmarshalNodeArrayJSON(fields["options"]) - if err != nil { - return - } - } - - return -} diff --git a/nodes/explain_stmt_deparse.go b/nodes/explain_stmt_deparse.go deleted file mode 100644 index 72a1bdbc..00000000 --- a/nodes/explain_stmt_deparse.go +++ /dev/null @@ -1,7 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -func (node ExplainStmt) Deparse() string { - panic("Not Implemented") -} diff --git a/nodes/explain_stmt_fingerprint.go b/nodes/explain_stmt_fingerprint.go deleted file mode 100644 index e6a65f8c..00000000 --- a/nodes/explain_stmt_fingerprint.go +++ /dev/null @@ -1,31 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -func (node ExplainStmt) Fingerprint(ctx FingerprintContext, parentNode Node, parentFieldName string) { - ctx.WriteString("ExplainStmt") - - if len(node.Options.Items) > 0 { - subCtx := FingerprintSubContext{} - node.Options.Fingerprint(&subCtx, node, "Options") - - if len(subCtx.parts) > 0 { - ctx.WriteString("options") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if node.Query != nil { - subCtx := FingerprintSubContext{} - node.Query.Fingerprint(&subCtx, node, "Query") - - if len(subCtx.parts) > 0 { - ctx.WriteString("query") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } -} diff --git a/nodes/expr.go b/nodes/expr.go deleted file mode 100644 index 5df788eb..00000000 --- a/nodes/expr.go +++ /dev/null @@ -1,34 +0,0 @@ -// Auto-generated from postgres/src/include/nodes/primnodes.h - DO NOT EDIT - -package pg_query - -import "encoding/json" - -/* - * Expr - generic superclass for executable-expression nodes - * - * All node types that are used in executable expression trees should derive - * from Expr (that is, have Expr as their first field). Since Expr only - * contains NodeTag, this is a formality, but it is an easy form of - * documentation. See also the ExprState node types in execnodes.h. - */ -type Expr struct { -} - -func (node Expr) MarshalJSON() ([]byte, error) { - type ExprMarshalAlias Expr - return json.Marshal(map[string]interface{}{ - "Expr": (*ExprMarshalAlias)(&node), - }) -} - -func (node *Expr) UnmarshalJSON(input []byte) (err error) { - var fields map[string]json.RawMessage - - err = json.Unmarshal(input, &fields) - if err != nil { - return - } - - return -} diff --git a/nodes/expr_deparse.go b/nodes/expr_deparse.go deleted file mode 100644 index fe12b527..00000000 --- a/nodes/expr_deparse.go +++ /dev/null @@ -1,7 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -func (node Expr) Deparse() string { - panic("Not Implemented") -} diff --git a/nodes/expr_fingerprint.go b/nodes/expr_fingerprint.go deleted file mode 100644 index 566400e5..00000000 --- a/nodes/expr_fingerprint.go +++ /dev/null @@ -1,7 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -func (node Expr) Fingerprint(ctx FingerprintContext, parentNode Node, parentFieldName string) { - ctx.WriteString("Expr") -} diff --git a/nodes/fetch_direction.go b/nodes/fetch_direction.go deleted file mode 100644 index dd84dd7c..00000000 --- a/nodes/fetch_direction.go +++ /dev/null @@ -1,19 +0,0 @@ -// Auto-generated from postgres/src/include/nodes/parsenodes.h - DO NOT EDIT - -package pg_query - -/* ---------------------- - * Fetch Statement (also Move) - * ---------------------- - */ -type FetchDirection uint - -const ( - /* for these, howMany is how many rows to fetch; FETCH_ALL means ALL */ - FETCH_FORWARD FetchDirection = iota - FETCH_BACKWARD - - /* for these, howMany indicates a position; only one row is fetched */ - FETCH_ABSOLUTE - FETCH_RELATIVE -) diff --git a/nodes/fetch_stmt.go b/nodes/fetch_stmt.go deleted file mode 100644 index 87c08454..00000000 --- a/nodes/fetch_stmt.go +++ /dev/null @@ -1,62 +0,0 @@ -// Auto-generated from postgres/src/include/nodes/parsenodes.h - DO NOT EDIT - -package pg_query - -import "encoding/json" - -/* ---------------------- - * Fetch Statement (also Move) - * ---------------------- - */ -type FetchStmt struct { - Direction FetchDirection `json:"direction"` /* see above */ - HowMany int64 `json:"howMany"` /* number of rows, or position argument */ - Portalname *string `json:"portalname"` /* name of portal (cursor) */ - Ismove bool `json:"ismove"` /* TRUE if MOVE */ -} - -func (node FetchStmt) MarshalJSON() ([]byte, error) { - type FetchStmtMarshalAlias FetchStmt - return json.Marshal(map[string]interface{}{ - "FetchStmt": (*FetchStmtMarshalAlias)(&node), - }) -} - -func (node *FetchStmt) UnmarshalJSON(input []byte) (err error) { - var fields map[string]json.RawMessage - - err = json.Unmarshal(input, &fields) - if err != nil { - return - } - - if fields["direction"] != nil { - err = json.Unmarshal(fields["direction"], &node.Direction) - if err != nil { - return - } - } - - if fields["howMany"] != nil { - err = json.Unmarshal(fields["howMany"], &node.HowMany) - if err != nil { - return - } - } - - if fields["portalname"] != nil { - err = json.Unmarshal(fields["portalname"], &node.Portalname) - if err != nil { - return - } - } - - if fields["ismove"] != nil { - err = json.Unmarshal(fields["ismove"], &node.Ismove) - if err != nil { - return - } - } - - return -} diff --git a/nodes/fetch_stmt_deparse.go b/nodes/fetch_stmt_deparse.go deleted file mode 100644 index 0f2996ff..00000000 --- a/nodes/fetch_stmt_deparse.go +++ /dev/null @@ -1,7 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -func (node FetchStmt) Deparse() string { - panic("Not Implemented") -} diff --git a/nodes/fetch_stmt_fingerprint.go b/nodes/fetch_stmt_fingerprint.go deleted file mode 100644 index 09ba960a..00000000 --- a/nodes/fetch_stmt_fingerprint.go +++ /dev/null @@ -1,26 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -import "strconv" - -func (node FetchStmt) Fingerprint(ctx FingerprintContext, parentNode Node, parentFieldName string) { - ctx.WriteString("FetchStmt") - - if int(node.Direction) != 0 { - ctx.WriteString("direction") - ctx.WriteString(strconv.Itoa(int(node.Direction))) - } - - if node.HowMany != 0 { - ctx.WriteString("howMany") - ctx.WriteString(strconv.Itoa(int(node.HowMany))) - } - - if node.Ismove { - ctx.WriteString("ismove") - ctx.WriteString(strconv.FormatBool(node.Ismove)) - } - - // Intentionally ignoring node.Portalname for fingerprinting -} diff --git a/nodes/field_select.go b/nodes/field_select.go deleted file mode 100644 index c5c1af9b..00000000 --- a/nodes/field_select.go +++ /dev/null @@ -1,84 +0,0 @@ -// Auto-generated from postgres/src/include/nodes/primnodes.h - DO NOT EDIT - -package pg_query - -import "encoding/json" - -/* ---------------- - * FieldSelect - * - * FieldSelect represents the operation of extracting one field from a tuple - * value. At runtime, the input expression is expected to yield a rowtype - * Datum. The specified field number is extracted and returned as a Datum. - * ---------------- - */ -type FieldSelect struct { - Xpr Node `json:"xpr"` - Arg Node `json:"arg"` /* input expression */ - Fieldnum AttrNumber `json:"fieldnum"` /* attribute number of field to extract */ - Resulttype Oid `json:"resulttype"` /* type of the field (result type of this - * node) */ - - Resulttypmod int32 `json:"resulttypmod"` /* output typmod (usually -1) */ - Resultcollid Oid `json:"resultcollid"` /* OID of collation of the field */ -} - -func (node FieldSelect) MarshalJSON() ([]byte, error) { - type FieldSelectMarshalAlias FieldSelect - return json.Marshal(map[string]interface{}{ - "FieldSelect": (*FieldSelectMarshalAlias)(&node), - }) -} - -func (node *FieldSelect) UnmarshalJSON(input []byte) (err error) { - var fields map[string]json.RawMessage - - err = json.Unmarshal(input, &fields) - if err != nil { - return - } - - if fields["xpr"] != nil { - node.Xpr, err = UnmarshalNodeJSON(fields["xpr"]) - if err != nil { - return - } - } - - if fields["arg"] != nil { - node.Arg, err = UnmarshalNodeJSON(fields["arg"]) - if err != nil { - return - } - } - - if fields["fieldnum"] != nil { - err = json.Unmarshal(fields["fieldnum"], &node.Fieldnum) - if err != nil { - return - } - } - - if fields["resulttype"] != nil { - err = json.Unmarshal(fields["resulttype"], &node.Resulttype) - if err != nil { - return - } - } - - if fields["resulttypmod"] != nil { - err = json.Unmarshal(fields["resulttypmod"], &node.Resulttypmod) - if err != nil { - return - } - } - - if fields["resultcollid"] != nil { - err = json.Unmarshal(fields["resultcollid"], &node.Resultcollid) - if err != nil { - return - } - } - - return -} diff --git a/nodes/field_select_deparse.go b/nodes/field_select_deparse.go deleted file mode 100644 index b6cd35fe..00000000 --- a/nodes/field_select_deparse.go +++ /dev/null @@ -1,7 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -func (node FieldSelect) Deparse() string { - panic("Not Implemented") -} diff --git a/nodes/field_select_fingerprint.go b/nodes/field_select_fingerprint.go deleted file mode 100644 index 1dbb4538..00000000 --- a/nodes/field_select_fingerprint.go +++ /dev/null @@ -1,53 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -import "strconv" - -func (node FieldSelect) Fingerprint(ctx FingerprintContext, parentNode Node, parentFieldName string) { - ctx.WriteString("FieldSelect") - - if node.Arg != nil { - subCtx := FingerprintSubContext{} - node.Arg.Fingerprint(&subCtx, node, "Arg") - - if len(subCtx.parts) > 0 { - ctx.WriteString("arg") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if node.Fieldnum != 0 { - ctx.WriteString("fieldnum") - ctx.WriteString(strconv.Itoa(int(node.Fieldnum))) - } - - if node.Resultcollid != 0 { - ctx.WriteString("resultcollid") - ctx.WriteString(strconv.Itoa(int(node.Resultcollid))) - } - - if node.Resulttype != 0 { - ctx.WriteString("resulttype") - ctx.WriteString(strconv.Itoa(int(node.Resulttype))) - } - - if node.Resulttypmod != 0 { - ctx.WriteString("resulttypmod") - ctx.WriteString(strconv.Itoa(int(node.Resulttypmod))) - } - - if node.Xpr != nil { - subCtx := FingerprintSubContext{} - node.Xpr.Fingerprint(&subCtx, node, "Xpr") - - if len(subCtx.parts) > 0 { - ctx.WriteString("xpr") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } -} diff --git a/nodes/field_store.go b/nodes/field_store.go deleted file mode 100644 index 1cd8bfea..00000000 --- a/nodes/field_store.go +++ /dev/null @@ -1,82 +0,0 @@ -// Auto-generated from postgres/src/include/nodes/primnodes.h - DO NOT EDIT - -package pg_query - -import "encoding/json" - -/* ---------------- - * FieldStore - * - * FieldStore represents the operation of modifying one field in a tuple - * value, yielding a new tuple value (the input is not touched!). Like - * the assign case of ArrayRef, this is used to implement UPDATE of a - * portion of a column. - * - * A single FieldStore can actually represent updates of several different - * fields. The parser only generates FieldStores with single-element lists, - * but the planner will collapse multiple updates of the same base column - * into one FieldStore. - * ---------------- - */ -type FieldStore struct { - Xpr Node `json:"xpr"` - Arg Node `json:"arg"` /* input tuple value */ - Newvals List `json:"newvals"` /* new value(s) for field(s) */ - Fieldnums List `json:"fieldnums"` /* integer list of field attnums */ - Resulttype Oid `json:"resulttype"` /* type of result (same as type of arg) */ - - /* Like RowExpr, we deliberately omit a typmod and collation here */ -} - -func (node FieldStore) MarshalJSON() ([]byte, error) { - type FieldStoreMarshalAlias FieldStore - return json.Marshal(map[string]interface{}{ - "FieldStore": (*FieldStoreMarshalAlias)(&node), - }) -} - -func (node *FieldStore) UnmarshalJSON(input []byte) (err error) { - var fields map[string]json.RawMessage - - err = json.Unmarshal(input, &fields) - if err != nil { - return - } - - if fields["xpr"] != nil { - node.Xpr, err = UnmarshalNodeJSON(fields["xpr"]) - if err != nil { - return - } - } - - if fields["arg"] != nil { - node.Arg, err = UnmarshalNodeJSON(fields["arg"]) - if err != nil { - return - } - } - - if fields["newvals"] != nil { - node.Newvals.Items, err = UnmarshalNodeArrayJSON(fields["newvals"]) - if err != nil { - return - } - } - - if fields["fieldnums"] != nil { - node.Fieldnums.Items, err = UnmarshalNodeArrayJSON(fields["fieldnums"]) - if err != nil { - return - } - } - - if fields["resulttype"] != nil { - err = json.Unmarshal(fields["resulttype"], &node.Resulttype) - if err != nil { - return - } - } - - return -} diff --git a/nodes/field_store_deparse.go b/nodes/field_store_deparse.go deleted file mode 100644 index 7fd9004c..00000000 --- a/nodes/field_store_deparse.go +++ /dev/null @@ -1,7 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -func (node FieldStore) Deparse() string { - panic("Not Implemented") -} diff --git a/nodes/field_store_fingerprint.go b/nodes/field_store_fingerprint.go deleted file mode 100644 index f40f42f9..00000000 --- a/nodes/field_store_fingerprint.go +++ /dev/null @@ -1,62 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -import "strconv" - -func (node FieldStore) Fingerprint(ctx FingerprintContext, parentNode Node, parentFieldName string) { - ctx.WriteString("FieldStore") - - if node.Arg != nil { - subCtx := FingerprintSubContext{} - node.Arg.Fingerprint(&subCtx, node, "Arg") - - if len(subCtx.parts) > 0 { - ctx.WriteString("arg") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if len(node.Fieldnums.Items) > 0 { - subCtx := FingerprintSubContext{} - node.Fieldnums.Fingerprint(&subCtx, node, "Fieldnums") - - if len(subCtx.parts) > 0 { - ctx.WriteString("fieldnums") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if len(node.Newvals.Items) > 0 { - subCtx := FingerprintSubContext{} - node.Newvals.Fingerprint(&subCtx, node, "Newvals") - - if len(subCtx.parts) > 0 { - ctx.WriteString("newvals") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if node.Resulttype != 0 { - ctx.WriteString("resulttype") - ctx.WriteString(strconv.Itoa(int(node.Resulttype))) - } - - if node.Xpr != nil { - subCtx := FingerprintSubContext{} - node.Xpr.Fingerprint(&subCtx, node, "Xpr") - - if len(subCtx.parts) > 0 { - ctx.WriteString("xpr") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } -} diff --git a/nodes/float.go b/nodes/float.go deleted file mode 100644 index 08e88eeb..00000000 --- a/nodes/float.go +++ /dev/null @@ -1,34 +0,0 @@ -// Auto-generated from postgres/src/include/nodes/value.h - DO NOT EDIT - -package pg_query - -import "encoding/json" - -type Float struct { - Str string `json:"str"` -} - -func (node Float) MarshalJSON() ([]byte, error) { - type FloatMarshalAlias Float - return json.Marshal(map[string]interface{}{ - "Float": (*FloatMarshalAlias)(&node), - }) -} - -func (node *Float) UnmarshalJSON(input []byte) (err error) { - var fields map[string]json.RawMessage - - err = json.Unmarshal(input, &fields) - if err != nil { - return - } - - if fields["str"] != nil { - err = json.Unmarshal(fields["str"], &node.Str) - if err != nil { - return - } - } - - return -} diff --git a/nodes/float_deparse.go b/nodes/float_deparse.go deleted file mode 100644 index 363b8423..00000000 --- a/nodes/float_deparse.go +++ /dev/null @@ -1,7 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -func (node Float) Deparse() string { - panic("Not Implemented") -} diff --git a/nodes/float_fingerprint.go b/nodes/float_fingerprint.go deleted file mode 100644 index cbc91d21..00000000 --- a/nodes/float_fingerprint.go +++ /dev/null @@ -1,11 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -func (node Float) Fingerprint(ctx FingerprintContext, parentNode Node, parentFieldName string) { - ctx.WriteString("Float") - if len(node.Str) > 0 { - ctx.WriteString("str") - ctx.WriteString(node.Str) - } -} diff --git a/nodes/from_expr.go b/nodes/from_expr.go deleted file mode 100644 index 27d6a2d7..00000000 --- a/nodes/from_expr.go +++ /dev/null @@ -1,51 +0,0 @@ -// Auto-generated from postgres/src/include/nodes/primnodes.h - DO NOT EDIT - -package pg_query - -import "encoding/json" - -/*---------- - * FromExpr - represents a FROM ... WHERE ... construct - * - * This is both more flexible than a JoinExpr (it can have any number of - * children, including zero) and less so --- we don't need to deal with - * aliases and so on. The output column set is implicitly just the union - * of the outputs of the children. - *---------- - */ -type FromExpr struct { - Fromlist List `json:"fromlist"` /* List of join subtrees */ - Quals Node `json:"quals"` /* qualifiers on join, if any */ -} - -func (node FromExpr) MarshalJSON() ([]byte, error) { - type FromExprMarshalAlias FromExpr - return json.Marshal(map[string]interface{}{ - "FromExpr": (*FromExprMarshalAlias)(&node), - }) -} - -func (node *FromExpr) UnmarshalJSON(input []byte) (err error) { - var fields map[string]json.RawMessage - - err = json.Unmarshal(input, &fields) - if err != nil { - return - } - - if fields["fromlist"] != nil { - node.Fromlist.Items, err = UnmarshalNodeArrayJSON(fields["fromlist"]) - if err != nil { - return - } - } - - if fields["quals"] != nil { - node.Quals, err = UnmarshalNodeJSON(fields["quals"]) - if err != nil { - return - } - } - - return -} diff --git a/nodes/from_expr_deparse.go b/nodes/from_expr_deparse.go deleted file mode 100644 index 4a813d4d..00000000 --- a/nodes/from_expr_deparse.go +++ /dev/null @@ -1,7 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -func (node FromExpr) Deparse() string { - panic("Not Implemented") -} diff --git a/nodes/from_expr_fingerprint.go b/nodes/from_expr_fingerprint.go deleted file mode 100644 index 619492b4..00000000 --- a/nodes/from_expr_fingerprint.go +++ /dev/null @@ -1,31 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -func (node FromExpr) Fingerprint(ctx FingerprintContext, parentNode Node, parentFieldName string) { - ctx.WriteString("FromExpr") - - if len(node.Fromlist.Items) > 0 { - subCtx := FingerprintSubContext{} - node.Fromlist.Fingerprint(&subCtx, node, "Fromlist") - - if len(subCtx.parts) > 0 { - ctx.WriteString("fromlist") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if node.Quals != nil { - subCtx := FingerprintSubContext{} - node.Quals.Fingerprint(&subCtx, node, "Quals") - - if len(subCtx.parts) > 0 { - ctx.WriteString("quals") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } -} diff --git a/nodes/func_call.go b/nodes/func_call.go deleted file mode 100644 index 8144a112..00000000 --- a/nodes/func_call.go +++ /dev/null @@ -1,125 +0,0 @@ -// Auto-generated from postgres/src/include/nodes/parsenodes.h - DO NOT EDIT - -package pg_query - -import "encoding/json" - -/* - * FuncCall - a function or aggregate invocation - * - * agg_order (if not NIL) indicates we saw 'foo(... ORDER BY ...)', or if - * agg_within_group is true, it was 'foo(...) WITHIN GROUP (ORDER BY ...)'. - * agg_star indicates we saw a 'foo(*)' construct, while agg_distinct - * indicates we saw 'foo(DISTINCT ...)'. In any of these cases, the - * construct *must* be an aggregate call. Otherwise, it might be either an - * aggregate or some other kind of function. However, if FILTER or OVER is - * present it had better be an aggregate or window function. - * - * Normally, you'd initialize this via makeFuncCall() and then only change the - * parts of the struct its defaults don't match afterwards, as needed. - */ -type FuncCall struct { - Funcname List `json:"funcname"` /* qualified name of function */ - Args List `json:"args"` /* the arguments (list of exprs) */ - AggOrder List `json:"agg_order"` /* ORDER BY (list of SortBy) */ - AggFilter Node `json:"agg_filter"` /* FILTER clause, if any */ - AggWithinGroup bool `json:"agg_within_group"` /* ORDER BY appeared in WITHIN GROUP */ - AggStar bool `json:"agg_star"` /* argument was really '*' */ - AggDistinct bool `json:"agg_distinct"` /* arguments were labeled DISTINCT */ - FuncVariadic bool `json:"func_variadic"` /* last argument was labeled VARIADIC */ - Over *WindowDef `json:"over"` /* OVER clause, if any */ - Location int `json:"location"` /* token location, or -1 if unknown */ -} - -func (node FuncCall) MarshalJSON() ([]byte, error) { - type FuncCallMarshalAlias FuncCall - return json.Marshal(map[string]interface{}{ - "FuncCall": (*FuncCallMarshalAlias)(&node), - }) -} - -func (node *FuncCall) UnmarshalJSON(input []byte) (err error) { - var fields map[string]json.RawMessage - - err = json.Unmarshal(input, &fields) - if err != nil { - return - } - - if fields["funcname"] != nil { - node.Funcname.Items, err = UnmarshalNodeArrayJSON(fields["funcname"]) - if err != nil { - return - } - } - - if fields["args"] != nil { - node.Args.Items, err = UnmarshalNodeArrayJSON(fields["args"]) - if err != nil { - return - } - } - - if fields["agg_order"] != nil { - node.AggOrder.Items, err = UnmarshalNodeArrayJSON(fields["agg_order"]) - if err != nil { - return - } - } - - if fields["agg_filter"] != nil { - node.AggFilter, err = UnmarshalNodeJSON(fields["agg_filter"]) - if err != nil { - return - } - } - - if fields["agg_within_group"] != nil { - err = json.Unmarshal(fields["agg_within_group"], &node.AggWithinGroup) - if err != nil { - return - } - } - - if fields["agg_star"] != nil { - err = json.Unmarshal(fields["agg_star"], &node.AggStar) - if err != nil { - return - } - } - - if fields["agg_distinct"] != nil { - err = json.Unmarshal(fields["agg_distinct"], &node.AggDistinct) - if err != nil { - return - } - } - - if fields["func_variadic"] != nil { - err = json.Unmarshal(fields["func_variadic"], &node.FuncVariadic) - if err != nil { - return - } - } - - if fields["over"] != nil { - var nodePtr *Node - nodePtr, err = UnmarshalNodePtrJSON(fields["over"]) - if err != nil { - return - } - if nodePtr != nil && *nodePtr != nil { - val := (*nodePtr).(WindowDef) - node.Over = &val - } - } - - if fields["location"] != nil { - err = json.Unmarshal(fields["location"], &node.Location) - if err != nil { - return - } - } - - return -} diff --git a/nodes/func_call_deparse.go b/nodes/func_call_deparse.go deleted file mode 100644 index 45f467b1..00000000 --- a/nodes/func_call_deparse.go +++ /dev/null @@ -1,7 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -func (node FuncCall) Deparse() string { - panic("Not Implemented") -} diff --git a/nodes/func_call_fingerprint.go b/nodes/func_call_fingerprint.go deleted file mode 100644 index fb8b6cf8..00000000 --- a/nodes/func_call_fingerprint.go +++ /dev/null @@ -1,90 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -import "strconv" - -func (node FuncCall) Fingerprint(ctx FingerprintContext, parentNode Node, parentFieldName string) { - ctx.WriteString("FuncCall") - - if node.AggDistinct { - ctx.WriteString("agg_distinct") - ctx.WriteString(strconv.FormatBool(node.AggDistinct)) - } - - if node.AggFilter != nil { - subCtx := FingerprintSubContext{} - node.AggFilter.Fingerprint(&subCtx, node, "AggFilter") - - if len(subCtx.parts) > 0 { - ctx.WriteString("agg_filter") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if len(node.AggOrder.Items) > 0 { - subCtx := FingerprintSubContext{} - node.AggOrder.Fingerprint(&subCtx, node, "AggOrder") - - if len(subCtx.parts) > 0 { - ctx.WriteString("agg_order") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if node.AggStar { - ctx.WriteString("agg_star") - ctx.WriteString(strconv.FormatBool(node.AggStar)) - } - - if node.AggWithinGroup { - ctx.WriteString("agg_within_group") - ctx.WriteString(strconv.FormatBool(node.AggWithinGroup)) - } - - if len(node.Args.Items) > 0 { - subCtx := FingerprintSubContext{} - node.Args.Fingerprint(&subCtx, node, "Args") - - if len(subCtx.parts) > 0 { - ctx.WriteString("args") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if node.FuncVariadic { - ctx.WriteString("func_variadic") - ctx.WriteString(strconv.FormatBool(node.FuncVariadic)) - } - - if len(node.Funcname.Items) > 0 { - subCtx := FingerprintSubContext{} - node.Funcname.Fingerprint(&subCtx, node, "Funcname") - - if len(subCtx.parts) > 0 { - ctx.WriteString("funcname") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - // Intentionally ignoring node.Location for fingerprinting - - if node.Over != nil { - subCtx := FingerprintSubContext{} - node.Over.Fingerprint(&subCtx, node, "Over") - - if len(subCtx.parts) > 0 { - ctx.WriteString("over") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } -} diff --git a/nodes/func_expr.go b/nodes/func_expr.go deleted file mode 100644 index 77151c02..00000000 --- a/nodes/func_expr.go +++ /dev/null @@ -1,111 +0,0 @@ -// Auto-generated from postgres/src/include/nodes/primnodes.h - DO NOT EDIT - -package pg_query - -import "encoding/json" - -/* - * FuncExpr - expression node for a function call - */ -type FuncExpr struct { - Xpr Node `json:"xpr"` - Funcid Oid `json:"funcid"` /* PG_PROC OID of the function */ - Funcresulttype Oid `json:"funcresulttype"` /* PG_TYPE OID of result value */ - Funcretset bool `json:"funcretset"` /* true if function returns set */ - Funcvariadic bool `json:"funcvariadic"` /* true if variadic arguments have been - * combined into an array last argument */ - - Funcformat CoercionForm `json:"funcformat"` /* how to display this function call */ - Funccollid Oid `json:"funccollid"` /* OID of collation of result */ - Inputcollid Oid `json:"inputcollid"` /* OID of collation that function should use */ - Args List `json:"args"` /* arguments to the function */ - Location int `json:"location"` /* token location, or -1 if unknown */ -} - -func (node FuncExpr) MarshalJSON() ([]byte, error) { - type FuncExprMarshalAlias FuncExpr - return json.Marshal(map[string]interface{}{ - "FuncExpr": (*FuncExprMarshalAlias)(&node), - }) -} - -func (node *FuncExpr) UnmarshalJSON(input []byte) (err error) { - var fields map[string]json.RawMessage - - err = json.Unmarshal(input, &fields) - if err != nil { - return - } - - if fields["xpr"] != nil { - node.Xpr, err = UnmarshalNodeJSON(fields["xpr"]) - if err != nil { - return - } - } - - if fields["funcid"] != nil { - err = json.Unmarshal(fields["funcid"], &node.Funcid) - if err != nil { - return - } - } - - if fields["funcresulttype"] != nil { - err = json.Unmarshal(fields["funcresulttype"], &node.Funcresulttype) - if err != nil { - return - } - } - - if fields["funcretset"] != nil { - err = json.Unmarshal(fields["funcretset"], &node.Funcretset) - if err != nil { - return - } - } - - if fields["funcvariadic"] != nil { - err = json.Unmarshal(fields["funcvariadic"], &node.Funcvariadic) - if err != nil { - return - } - } - - if fields["funcformat"] != nil { - err = json.Unmarshal(fields["funcformat"], &node.Funcformat) - if err != nil { - return - } - } - - if fields["funccollid"] != nil { - err = json.Unmarshal(fields["funccollid"], &node.Funccollid) - if err != nil { - return - } - } - - if fields["inputcollid"] != nil { - err = json.Unmarshal(fields["inputcollid"], &node.Inputcollid) - if err != nil { - return - } - } - - if fields["args"] != nil { - node.Args.Items, err = UnmarshalNodeArrayJSON(fields["args"]) - if err != nil { - return - } - } - - if fields["location"] != nil { - err = json.Unmarshal(fields["location"], &node.Location) - if err != nil { - return - } - } - - return -} diff --git a/nodes/func_expr_deparse.go b/nodes/func_expr_deparse.go deleted file mode 100644 index 1d220ece..00000000 --- a/nodes/func_expr_deparse.go +++ /dev/null @@ -1,7 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -func (node FuncExpr) Deparse() string { - panic("Not Implemented") -} diff --git a/nodes/func_expr_fingerprint.go b/nodes/func_expr_fingerprint.go deleted file mode 100644 index 6f83626f..00000000 --- a/nodes/func_expr_fingerprint.go +++ /dev/null @@ -1,70 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -import "strconv" - -func (node FuncExpr) Fingerprint(ctx FingerprintContext, parentNode Node, parentFieldName string) { - ctx.WriteString("FuncExpr") - - if len(node.Args.Items) > 0 { - subCtx := FingerprintSubContext{} - node.Args.Fingerprint(&subCtx, node, "Args") - - if len(subCtx.parts) > 0 { - ctx.WriteString("args") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if node.Funccollid != 0 { - ctx.WriteString("funccollid") - ctx.WriteString(strconv.Itoa(int(node.Funccollid))) - } - - if int(node.Funcformat) != 0 { - ctx.WriteString("funcformat") - ctx.WriteString(strconv.Itoa(int(node.Funcformat))) - } - - if node.Funcid != 0 { - ctx.WriteString("funcid") - ctx.WriteString(strconv.Itoa(int(node.Funcid))) - } - - if node.Funcresulttype != 0 { - ctx.WriteString("funcresulttype") - ctx.WriteString(strconv.Itoa(int(node.Funcresulttype))) - } - - if node.Funcretset { - ctx.WriteString("funcretset") - ctx.WriteString(strconv.FormatBool(node.Funcretset)) - } - - if node.Funcvariadic { - ctx.WriteString("funcvariadic") - ctx.WriteString(strconv.FormatBool(node.Funcvariadic)) - } - - if node.Inputcollid != 0 { - ctx.WriteString("inputcollid") - ctx.WriteString(strconv.Itoa(int(node.Inputcollid))) - } - - // Intentionally ignoring node.Location for fingerprinting - - if node.Xpr != nil { - subCtx := FingerprintSubContext{} - node.Xpr.Fingerprint(&subCtx, node, "Xpr") - - if len(subCtx.parts) > 0 { - ctx.WriteString("xpr") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } -} diff --git a/nodes/function_parameter.go b/nodes/function_parameter.go deleted file mode 100644 index 06a38bcf..00000000 --- a/nodes/function_parameter.go +++ /dev/null @@ -1,67 +0,0 @@ -// Auto-generated from postgres/src/include/nodes/parsenodes.h - DO NOT EDIT - -package pg_query - -import "encoding/json" - -/* ---------------------- - * Create Function Statement - * ---------------------- - */ -type FunctionParameter struct { - Name *string `json:"name"` /* parameter name, or NULL if not given */ - ArgType *TypeName `json:"argType"` /* TypeName for parameter type */ - Mode FunctionParameterMode `json:"mode"` /* IN/OUT/etc */ - Defexpr Node `json:"defexpr"` /* raw default expr, or NULL if not given */ -} - -func (node FunctionParameter) MarshalJSON() ([]byte, error) { - type FunctionParameterMarshalAlias FunctionParameter - return json.Marshal(map[string]interface{}{ - "FunctionParameter": (*FunctionParameterMarshalAlias)(&node), - }) -} - -func (node *FunctionParameter) UnmarshalJSON(input []byte) (err error) { - var fields map[string]json.RawMessage - - err = json.Unmarshal(input, &fields) - if err != nil { - return - } - - if fields["name"] != nil { - err = json.Unmarshal(fields["name"], &node.Name) - if err != nil { - return - } - } - - if fields["argType"] != nil { - var nodePtr *Node - nodePtr, err = UnmarshalNodePtrJSON(fields["argType"]) - if err != nil { - return - } - if nodePtr != nil && *nodePtr != nil { - val := (*nodePtr).(TypeName) - node.ArgType = &val - } - } - - if fields["mode"] != nil { - err = json.Unmarshal(fields["mode"], &node.Mode) - if err != nil { - return - } - } - - if fields["defexpr"] != nil { - node.Defexpr, err = UnmarshalNodeJSON(fields["defexpr"]) - if err != nil { - return - } - } - - return -} diff --git a/nodes/function_parameter_deparse.go b/nodes/function_parameter_deparse.go deleted file mode 100644 index 5cc1ccc9..00000000 --- a/nodes/function_parameter_deparse.go +++ /dev/null @@ -1,7 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -func (node FunctionParameter) Deparse() string { - panic("Not Implemented") -} diff --git a/nodes/function_parameter_fingerprint.go b/nodes/function_parameter_fingerprint.go deleted file mode 100644 index beeb962b..00000000 --- a/nodes/function_parameter_fingerprint.go +++ /dev/null @@ -1,43 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -import "strconv" - -func (node FunctionParameter) Fingerprint(ctx FingerprintContext, parentNode Node, parentFieldName string) { - ctx.WriteString("FunctionParameter") - - if node.ArgType != nil { - subCtx := FingerprintSubContext{} - node.ArgType.Fingerprint(&subCtx, node, "ArgType") - - if len(subCtx.parts) > 0 { - ctx.WriteString("argType") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if node.Defexpr != nil { - subCtx := FingerprintSubContext{} - node.Defexpr.Fingerprint(&subCtx, node, "Defexpr") - - if len(subCtx.parts) > 0 { - ctx.WriteString("defexpr") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if int(node.Mode) != 0 { - ctx.WriteString("mode") - ctx.WriteString(strconv.Itoa(int(node.Mode))) - } - - if node.Name != nil { - ctx.WriteString("name") - ctx.WriteString(*node.Name) - } -} diff --git a/nodes/function_parameter_mode.go b/nodes/function_parameter_mode.go deleted file mode 100644 index 4bc4ec6b..00000000 --- a/nodes/function_parameter_mode.go +++ /dev/null @@ -1,14 +0,0 @@ -// Auto-generated from postgres/src/include/nodes/parsenodes.h - DO NOT EDIT - -package pg_query - -type FunctionParameterMode uint - -const ( - /* the assigned enum values appear in pg_proc, don't change 'em! */ - FUNC_PARAM_IN FunctionParameterMode = iota - FUNC_PARAM_OUT - FUNC_PARAM_INOUT - FUNC_PARAM_VARIADIC - FUNC_PARAM_TABLE -) diff --git a/nodes/grant_object_type.go b/nodes/grant_object_type.go deleted file mode 100644 index a047ca24..00000000 --- a/nodes/grant_object_type.go +++ /dev/null @@ -1,21 +0,0 @@ -// Auto-generated from postgres/src/include/nodes/parsenodes.h - DO NOT EDIT - -package pg_query - -type GrantObjectType uint - -const ( - ACL_OBJECT_COLUMN GrantObjectType = iota /* column */ - ACL_OBJECT_RELATION /* table, view */ - ACL_OBJECT_SEQUENCE /* sequence */ - ACL_OBJECT_DATABASE /* database */ - ACL_OBJECT_DOMAIN /* domain */ - ACL_OBJECT_FDW /* foreign-data wrapper */ - ACL_OBJECT_FOREIGN_SERVER /* foreign server */ - ACL_OBJECT_FUNCTION /* function */ - ACL_OBJECT_LANGUAGE /* procedural language */ - ACL_OBJECT_LARGEOBJECT /* largeobject */ - ACL_OBJECT_NAMESPACE /* namespace */ - ACL_OBJECT_TABLESPACE /* tablespace */ - ACL_OBJECT_TYPE /* type */ -) diff --git a/nodes/grant_role_stmt.go b/nodes/grant_role_stmt.go deleted file mode 100644 index b1fd2327..00000000 --- a/nodes/grant_role_stmt.go +++ /dev/null @@ -1,88 +0,0 @@ -// Auto-generated from postgres/src/include/nodes/parsenodes.h - DO NOT EDIT - -package pg_query - -import "encoding/json" - -/* ---------------------- - * Grant/Revoke Role Statement - * - * Note: because of the parsing ambiguity with the GRANT - * statement, granted_roles is a list of AccessPriv; the execution code - * should complain if any column lists appear. grantee_roles is a list - * of role names, as Value strings. - * ---------------------- - */ -type GrantRoleStmt struct { - GrantedRoles List `json:"granted_roles"` /* list of roles to be granted/revoked */ - GranteeRoles List `json:"grantee_roles"` /* list of member roles to add/delete */ - IsGrant bool `json:"is_grant"` /* true = GRANT, false = REVOKE */ - AdminOpt bool `json:"admin_opt"` /* with admin option */ - Grantor *RoleSpec `json:"grantor"` /* set grantor to other than current role */ - Behavior DropBehavior `json:"behavior"` /* drop behavior (for REVOKE) */ -} - -func (node GrantRoleStmt) MarshalJSON() ([]byte, error) { - type GrantRoleStmtMarshalAlias GrantRoleStmt - return json.Marshal(map[string]interface{}{ - "GrantRoleStmt": (*GrantRoleStmtMarshalAlias)(&node), - }) -} - -func (node *GrantRoleStmt) UnmarshalJSON(input []byte) (err error) { - var fields map[string]json.RawMessage - - err = json.Unmarshal(input, &fields) - if err != nil { - return - } - - if fields["granted_roles"] != nil { - node.GrantedRoles.Items, err = UnmarshalNodeArrayJSON(fields["granted_roles"]) - if err != nil { - return - } - } - - if fields["grantee_roles"] != nil { - node.GranteeRoles.Items, err = UnmarshalNodeArrayJSON(fields["grantee_roles"]) - if err != nil { - return - } - } - - if fields["is_grant"] != nil { - err = json.Unmarshal(fields["is_grant"], &node.IsGrant) - if err != nil { - return - } - } - - if fields["admin_opt"] != nil { - err = json.Unmarshal(fields["admin_opt"], &node.AdminOpt) - if err != nil { - return - } - } - - if fields["grantor"] != nil { - var nodePtr *Node - nodePtr, err = UnmarshalNodePtrJSON(fields["grantor"]) - if err != nil { - return - } - if nodePtr != nil && *nodePtr != nil { - val := (*nodePtr).(RoleSpec) - node.Grantor = &val - } - } - - if fields["behavior"] != nil { - err = json.Unmarshal(fields["behavior"], &node.Behavior) - if err != nil { - return - } - } - - return -} diff --git a/nodes/grant_role_stmt_deparse.go b/nodes/grant_role_stmt_deparse.go deleted file mode 100644 index d31b7684..00000000 --- a/nodes/grant_role_stmt_deparse.go +++ /dev/null @@ -1,7 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -func (node GrantRoleStmt) Deparse() string { - panic("Not Implemented") -} diff --git a/nodes/grant_role_stmt_fingerprint.go b/nodes/grant_role_stmt_fingerprint.go deleted file mode 100644 index 588261c1..00000000 --- a/nodes/grant_role_stmt_fingerprint.go +++ /dev/null @@ -1,60 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -import "strconv" - -func (node GrantRoleStmt) Fingerprint(ctx FingerprintContext, parentNode Node, parentFieldName string) { - ctx.WriteString("GrantRoleStmt") - - if node.AdminOpt { - ctx.WriteString("admin_opt") - ctx.WriteString(strconv.FormatBool(node.AdminOpt)) - } - - if int(node.Behavior) != 0 { - ctx.WriteString("behavior") - ctx.WriteString(strconv.Itoa(int(node.Behavior))) - } - - if len(node.GrantedRoles.Items) > 0 { - subCtx := FingerprintSubContext{} - node.GrantedRoles.Fingerprint(&subCtx, node, "GrantedRoles") - - if len(subCtx.parts) > 0 { - ctx.WriteString("granted_roles") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if len(node.GranteeRoles.Items) > 0 { - subCtx := FingerprintSubContext{} - node.GranteeRoles.Fingerprint(&subCtx, node, "GranteeRoles") - - if len(subCtx.parts) > 0 { - ctx.WriteString("grantee_roles") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if node.Grantor != nil { - subCtx := FingerprintSubContext{} - node.Grantor.Fingerprint(&subCtx, node, "Grantor") - - if len(subCtx.parts) > 0 { - ctx.WriteString("grantor") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if node.IsGrant { - ctx.WriteString("is_grant") - ctx.WriteString(strconv.FormatBool(node.IsGrant)) - } -} diff --git a/nodes/grant_stmt.go b/nodes/grant_stmt.go deleted file mode 100644 index 58bf1861..00000000 --- a/nodes/grant_stmt.go +++ /dev/null @@ -1,98 +0,0 @@ -// Auto-generated from postgres/src/include/nodes/parsenodes.h - DO NOT EDIT - -package pg_query - -import "encoding/json" - -/* ---------------------- - * Grant|Revoke Statement - * ---------------------- - */ -type GrantStmt struct { - IsGrant bool `json:"is_grant"` /* true = GRANT, false = REVOKE */ - Targtype GrantTargetType `json:"targtype"` /* type of the grant target */ - Objtype GrantObjectType `json:"objtype"` /* kind of object being operated on */ - Objects List `json:"objects"` /* list of RangeVar nodes, ObjectWithArgs - * nodes, or plain names (as Value strings) */ - - Privileges List `json:"privileges"` /* list of AccessPriv nodes */ - - /* privileges == NIL denotes ALL PRIVILEGES */ - Grantees List `json:"grantees"` /* list of RoleSpec nodes */ - GrantOption bool `json:"grant_option"` /* grant or revoke grant option */ - Behavior DropBehavior `json:"behavior"` /* drop behavior (for REVOKE) */ -} - -func (node GrantStmt) MarshalJSON() ([]byte, error) { - type GrantStmtMarshalAlias GrantStmt - return json.Marshal(map[string]interface{}{ - "GrantStmt": (*GrantStmtMarshalAlias)(&node), - }) -} - -func (node *GrantStmt) UnmarshalJSON(input []byte) (err error) { - var fields map[string]json.RawMessage - - err = json.Unmarshal(input, &fields) - if err != nil { - return - } - - if fields["is_grant"] != nil { - err = json.Unmarshal(fields["is_grant"], &node.IsGrant) - if err != nil { - return - } - } - - if fields["targtype"] != nil { - err = json.Unmarshal(fields["targtype"], &node.Targtype) - if err != nil { - return - } - } - - if fields["objtype"] != nil { - err = json.Unmarshal(fields["objtype"], &node.Objtype) - if err != nil { - return - } - } - - if fields["objects"] != nil { - node.Objects.Items, err = UnmarshalNodeArrayJSON(fields["objects"]) - if err != nil { - return - } - } - - if fields["privileges"] != nil { - node.Privileges.Items, err = UnmarshalNodeArrayJSON(fields["privileges"]) - if err != nil { - return - } - } - - if fields["grantees"] != nil { - node.Grantees.Items, err = UnmarshalNodeArrayJSON(fields["grantees"]) - if err != nil { - return - } - } - - if fields["grant_option"] != nil { - err = json.Unmarshal(fields["grant_option"], &node.GrantOption) - if err != nil { - return - } - } - - if fields["behavior"] != nil { - err = json.Unmarshal(fields["behavior"], &node.Behavior) - if err != nil { - return - } - } - - return -} diff --git a/nodes/grant_stmt_deparse.go b/nodes/grant_stmt_deparse.go deleted file mode 100644 index 1cb08859..00000000 --- a/nodes/grant_stmt_deparse.go +++ /dev/null @@ -1,7 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -func (node GrantStmt) Deparse() string { - panic("Not Implemented") -} diff --git a/nodes/grant_stmt_fingerprint.go b/nodes/grant_stmt_fingerprint.go deleted file mode 100644 index a2c27947..00000000 --- a/nodes/grant_stmt_fingerprint.go +++ /dev/null @@ -1,70 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -import "strconv" - -func (node GrantStmt) Fingerprint(ctx FingerprintContext, parentNode Node, parentFieldName string) { - ctx.WriteString("GrantStmt") - - if int(node.Behavior) != 0 { - ctx.WriteString("behavior") - ctx.WriteString(strconv.Itoa(int(node.Behavior))) - } - - if node.GrantOption { - ctx.WriteString("grant_option") - ctx.WriteString(strconv.FormatBool(node.GrantOption)) - } - - if len(node.Grantees.Items) > 0 { - subCtx := FingerprintSubContext{} - node.Grantees.Fingerprint(&subCtx, node, "Grantees") - - if len(subCtx.parts) > 0 { - ctx.WriteString("grantees") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if node.IsGrant { - ctx.WriteString("is_grant") - ctx.WriteString(strconv.FormatBool(node.IsGrant)) - } - - if len(node.Objects.Items) > 0 { - subCtx := FingerprintSubContext{} - node.Objects.Fingerprint(&subCtx, node, "Objects") - - if len(subCtx.parts) > 0 { - ctx.WriteString("objects") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if int(node.Objtype) != 0 { - ctx.WriteString("objtype") - ctx.WriteString(strconv.Itoa(int(node.Objtype))) - } - - if len(node.Privileges.Items) > 0 { - subCtx := FingerprintSubContext{} - node.Privileges.Fingerprint(&subCtx, node, "Privileges") - - if len(subCtx.parts) > 0 { - ctx.WriteString("privileges") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if int(node.Targtype) != 0 { - ctx.WriteString("targtype") - ctx.WriteString(strconv.Itoa(int(node.Targtype))) - } -} diff --git a/nodes/grant_target_type.go b/nodes/grant_target_type.go deleted file mode 100644 index e8e1e84a..00000000 --- a/nodes/grant_target_type.go +++ /dev/null @@ -1,15 +0,0 @@ -// Auto-generated from postgres/src/include/nodes/parsenodes.h - DO NOT EDIT - -package pg_query - -/* ---------------------- - * Grant|Revoke Statement - * ---------------------- - */ -type GrantTargetType uint - -const ( - ACL_TARGET_OBJECT GrantTargetType = iota /* grant on specific named object(s) */ - ACL_TARGET_ALL_IN_SCHEMA /* grant on all objects in given schema(s) */ - ACL_TARGET_DEFAULTS /* ALTER DEFAULT PRIVILEGES */ -) diff --git a/nodes/grouping_func.go b/nodes/grouping_func.go deleted file mode 100644 index 8c823844..00000000 --- a/nodes/grouping_func.go +++ /dev/null @@ -1,100 +0,0 @@ -// Auto-generated from postgres/src/include/nodes/primnodes.h - DO NOT EDIT - -package pg_query - -import "encoding/json" - -/* - * GroupingFunc - * - * A GroupingFunc is a GROUPING(...) expression, which behaves in many ways - * like an aggregate function (e.g. it "belongs" to a specific query level, - * which might not be the one immediately containing it), but also differs in - * an important respect: it never evaluates its arguments, they merely - * designate expressions from the GROUP BY clause of the query level to which - * it belongs. - * - * The spec defines the evaluation of GROUPING() purely by syntactic - * replacement, but we make it a real expression for optimization purposes so - * that one Agg node can handle multiple grouping sets at once. Evaluating the - * result only needs the column positions to check against the grouping set - * being projected. However, for EXPLAIN to produce meaningful output, we have - * to keep the original expressions around, since expression deparse does not - * give us any feasible way to get at the GROUP BY clause. - * - * Also, we treat two GroupingFunc nodes as equal if they have equal arguments - * lists and agglevelsup, without comparing the refs and cols annotations. - * - * In raw parse output we have only the args list; parse analysis fills in the - * refs list, and the planner fills in the cols list. - */ -type GroupingFunc struct { - Xpr Node `json:"xpr"` - Args List `json:"args"` /* arguments, not evaluated but kept for - * benefit of EXPLAIN etc. */ - - Refs List `json:"refs"` /* ressortgrouprefs of arguments */ - Cols List `json:"cols"` /* actual column positions set by planner */ - Agglevelsup Index `json:"agglevelsup"` /* same as Aggref.agglevelsup */ - Location int `json:"location"` /* token location */ -} - -func (node GroupingFunc) MarshalJSON() ([]byte, error) { - type GroupingFuncMarshalAlias GroupingFunc - return json.Marshal(map[string]interface{}{ - "GroupingFunc": (*GroupingFuncMarshalAlias)(&node), - }) -} - -func (node *GroupingFunc) UnmarshalJSON(input []byte) (err error) { - var fields map[string]json.RawMessage - - err = json.Unmarshal(input, &fields) - if err != nil { - return - } - - if fields["xpr"] != nil { - node.Xpr, err = UnmarshalNodeJSON(fields["xpr"]) - if err != nil { - return - } - } - - if fields["args"] != nil { - node.Args.Items, err = UnmarshalNodeArrayJSON(fields["args"]) - if err != nil { - return - } - } - - if fields["refs"] != nil { - node.Refs.Items, err = UnmarshalNodeArrayJSON(fields["refs"]) - if err != nil { - return - } - } - - if fields["cols"] != nil { - node.Cols.Items, err = UnmarshalNodeArrayJSON(fields["cols"]) - if err != nil { - return - } - } - - if fields["agglevelsup"] != nil { - err = json.Unmarshal(fields["agglevelsup"], &node.Agglevelsup) - if err != nil { - return - } - } - - if fields["location"] != nil { - err = json.Unmarshal(fields["location"], &node.Location) - if err != nil { - return - } - } - - return -} diff --git a/nodes/grouping_func_deparse.go b/nodes/grouping_func_deparse.go deleted file mode 100644 index 0242e7ef..00000000 --- a/nodes/grouping_func_deparse.go +++ /dev/null @@ -1,7 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -func (node GroupingFunc) Deparse() string { - panic("Not Implemented") -} diff --git a/nodes/grouping_func_fingerprint.go b/nodes/grouping_func_fingerprint.go deleted file mode 100644 index 9e882782..00000000 --- a/nodes/grouping_func_fingerprint.go +++ /dev/null @@ -1,63 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -import "strconv" - -func (node GroupingFunc) Fingerprint(ctx FingerprintContext, parentNode Node, parentFieldName string) { - ctx.WriteString("GroupingFunc") - - if node.Agglevelsup != 0 { - ctx.WriteString("agglevelsup") - ctx.WriteString(strconv.Itoa(int(node.Agglevelsup))) - } - - if len(node.Args.Items) > 0 { - subCtx := FingerprintSubContext{} - node.Args.Fingerprint(&subCtx, node, "Args") - - if len(subCtx.parts) > 0 { - ctx.WriteString("args") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if len(node.Cols.Items) > 0 { - subCtx := FingerprintSubContext{} - node.Cols.Fingerprint(&subCtx, node, "Cols") - - if len(subCtx.parts) > 0 { - ctx.WriteString("cols") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - // Intentionally ignoring node.Location for fingerprinting - - if len(node.Refs.Items) > 0 { - subCtx := FingerprintSubContext{} - node.Refs.Fingerprint(&subCtx, node, "Refs") - - if len(subCtx.parts) > 0 { - ctx.WriteString("refs") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if node.Xpr != nil { - subCtx := FingerprintSubContext{} - node.Xpr.Fingerprint(&subCtx, node, "Xpr") - - if len(subCtx.parts) > 0 { - ctx.WriteString("xpr") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } -} diff --git a/nodes/grouping_set.go b/nodes/grouping_set.go deleted file mode 100644 index 23b1ead5..00000000 --- a/nodes/grouping_set.go +++ /dev/null @@ -1,50 +0,0 @@ -// Auto-generated from postgres/src/include/nodes/parsenodes.h - DO NOT EDIT - -package pg_query - -import "encoding/json" - -type GroupingSet struct { - Kind GroupingSetKind `json:"kind"` - Content List `json:"content"` - Location int `json:"location"` -} - -func (node GroupingSet) MarshalJSON() ([]byte, error) { - type GroupingSetMarshalAlias GroupingSet - return json.Marshal(map[string]interface{}{ - "GroupingSet": (*GroupingSetMarshalAlias)(&node), - }) -} - -func (node *GroupingSet) UnmarshalJSON(input []byte) (err error) { - var fields map[string]json.RawMessage - - err = json.Unmarshal(input, &fields) - if err != nil { - return - } - - if fields["kind"] != nil { - err = json.Unmarshal(fields["kind"], &node.Kind) - if err != nil { - return - } - } - - if fields["content"] != nil { - node.Content.Items, err = UnmarshalNodeArrayJSON(fields["content"]) - if err != nil { - return - } - } - - if fields["location"] != nil { - err = json.Unmarshal(fields["location"], &node.Location) - if err != nil { - return - } - } - - return -} diff --git a/nodes/grouping_set_deparse.go b/nodes/grouping_set_deparse.go deleted file mode 100644 index 178257ad..00000000 --- a/nodes/grouping_set_deparse.go +++ /dev/null @@ -1,7 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -func (node GroupingSet) Deparse() string { - panic("Not Implemented") -} diff --git a/nodes/grouping_set_fingerprint.go b/nodes/grouping_set_fingerprint.go deleted file mode 100644 index ed9cc10b..00000000 --- a/nodes/grouping_set_fingerprint.go +++ /dev/null @@ -1,28 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -import "strconv" - -func (node GroupingSet) Fingerprint(ctx FingerprintContext, parentNode Node, parentFieldName string) { - ctx.WriteString("GroupingSet") - - if len(node.Content.Items) > 0 { - subCtx := FingerprintSubContext{} - node.Content.Fingerprint(&subCtx, node, "Content") - - if len(subCtx.parts) > 0 { - ctx.WriteString("content") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if int(node.Kind) != 0 { - ctx.WriteString("kind") - ctx.WriteString(strconv.Itoa(int(node.Kind))) - } - - // Intentionally ignoring node.Location for fingerprinting -} diff --git a/nodes/grouping_set_kind.go b/nodes/grouping_set_kind.go deleted file mode 100644 index c1f937f2..00000000 --- a/nodes/grouping_set_kind.go +++ /dev/null @@ -1,63 +0,0 @@ -// Auto-generated from postgres/src/include/nodes/parsenodes.h - DO NOT EDIT - -package pg_query - -/* - * GroupingSet - - * representation of CUBE, ROLLUP and GROUPING SETS clauses - * - * In a Query with grouping sets, the groupClause contains a flat list of - * SortGroupClause nodes for each distinct expression used. The actual - * structure of the GROUP BY clause is given by the groupingSets tree. - * - * In the raw parser output, GroupingSet nodes (of all types except SIMPLE - * which is not used) are potentially mixed in with the expressions in the - * groupClause of the SelectStmt. (An expression can't contain a GroupingSet, - * but a list may mix GroupingSet and expression nodes.) At this stage, the - * content of each node is a list of expressions, some of which may be RowExprs - * which represent sublists rather than actual row constructors, and nested - * GroupingSet nodes where legal in the grammar. The structure directly - * reflects the query syntax. - * - * In parse analysis, the transformed expressions are used to build the tlist - * and groupClause list (of SortGroupClause nodes), and the groupingSets tree - * is eventually reduced to a fixed format: - * - * EMPTY nodes represent (), and obviously have no content - * - * SIMPLE nodes represent a list of one or more expressions to be treated as an - * atom by the enclosing structure; the content is an integer list of - * ressortgroupref values (see SortGroupClause) - * - * CUBE and ROLLUP nodes contain a list of one or more SIMPLE nodes. - * - * SETS nodes contain a list of EMPTY, SIMPLE, CUBE or ROLLUP nodes, but after - * parse analysis they cannot contain more SETS nodes; enough of the syntactic - * transforms of the spec have been applied that we no longer have arbitrarily - * deep nesting (though we still preserve the use of cube/rollup). - * - * Note that if the groupingSets tree contains no SIMPLE nodes (only EMPTY - * nodes at the leaves), then the groupClause will be empty, but this is still - * an aggregation query (similar to using aggs or HAVING without GROUP BY). - * - * As an example, the following clause: - * - * GROUP BY GROUPING SETS ((a,b), CUBE(c,(d,e))) - * - * looks like this after raw parsing: - * - * SETS( RowExpr(a,b) , CUBE( c, RowExpr(d,e) ) ) - * - * and parse analysis converts it to: - * - * SETS( SIMPLE(1,2), CUBE( SIMPLE(3), SIMPLE(4,5) ) ) - */ -type GroupingSetKind uint - -const ( - GROUPING_SET_EMPTY GroupingSetKind = iota - GROUPING_SET_SIMPLE - GROUPING_SET_ROLLUP - GROUPING_SET_CUBE - GROUPING_SET_SETS -) diff --git a/nodes/import_foreign_schema_stmt.go b/nodes/import_foreign_schema_stmt.go deleted file mode 100644 index 40d63adb..00000000 --- a/nodes/import_foreign_schema_stmt.go +++ /dev/null @@ -1,74 +0,0 @@ -// Auto-generated from postgres/src/include/nodes/parsenodes.h - DO NOT EDIT - -package pg_query - -import "encoding/json" - -type ImportForeignSchemaStmt struct { - ServerName *string `json:"server_name"` /* FDW server name */ - RemoteSchema *string `json:"remote_schema"` /* remote schema name to query */ - LocalSchema *string `json:"local_schema"` /* local schema to create objects in */ - ListType ImportForeignSchemaType `json:"list_type"` /* type of table list */ - TableList List `json:"table_list"` /* List of RangeVar */ - Options List `json:"options"` /* list of options to pass to FDW */ -} - -func (node ImportForeignSchemaStmt) MarshalJSON() ([]byte, error) { - type ImportForeignSchemaStmtMarshalAlias ImportForeignSchemaStmt - return json.Marshal(map[string]interface{}{ - "ImportForeignSchemaStmt": (*ImportForeignSchemaStmtMarshalAlias)(&node), - }) -} - -func (node *ImportForeignSchemaStmt) UnmarshalJSON(input []byte) (err error) { - var fields map[string]json.RawMessage - - err = json.Unmarshal(input, &fields) - if err != nil { - return - } - - if fields["server_name"] != nil { - err = json.Unmarshal(fields["server_name"], &node.ServerName) - if err != nil { - return - } - } - - if fields["remote_schema"] != nil { - err = json.Unmarshal(fields["remote_schema"], &node.RemoteSchema) - if err != nil { - return - } - } - - if fields["local_schema"] != nil { - err = json.Unmarshal(fields["local_schema"], &node.LocalSchema) - if err != nil { - return - } - } - - if fields["list_type"] != nil { - err = json.Unmarshal(fields["list_type"], &node.ListType) - if err != nil { - return - } - } - - if fields["table_list"] != nil { - node.TableList.Items, err = UnmarshalNodeArrayJSON(fields["table_list"]) - if err != nil { - return - } - } - - if fields["options"] != nil { - node.Options.Items, err = UnmarshalNodeArrayJSON(fields["options"]) - if err != nil { - return - } - } - - return -} diff --git a/nodes/import_foreign_schema_stmt_deparse.go b/nodes/import_foreign_schema_stmt_deparse.go deleted file mode 100644 index a38e2238..00000000 --- a/nodes/import_foreign_schema_stmt_deparse.go +++ /dev/null @@ -1,7 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -func (node ImportForeignSchemaStmt) Deparse() string { - panic("Not Implemented") -} diff --git a/nodes/import_foreign_schema_stmt_fingerprint.go b/nodes/import_foreign_schema_stmt_fingerprint.go deleted file mode 100644 index 4a44fdb5..00000000 --- a/nodes/import_foreign_schema_stmt_fingerprint.go +++ /dev/null @@ -1,53 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -import "strconv" - -func (node ImportForeignSchemaStmt) Fingerprint(ctx FingerprintContext, parentNode Node, parentFieldName string) { - ctx.WriteString("ImportForeignSchemaStmt") - - if int(node.ListType) != 0 { - ctx.WriteString("list_type") - ctx.WriteString(strconv.Itoa(int(node.ListType))) - } - - if node.LocalSchema != nil { - ctx.WriteString("local_schema") - ctx.WriteString(*node.LocalSchema) - } - - if len(node.Options.Items) > 0 { - subCtx := FingerprintSubContext{} - node.Options.Fingerprint(&subCtx, node, "Options") - - if len(subCtx.parts) > 0 { - ctx.WriteString("options") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if node.RemoteSchema != nil { - ctx.WriteString("remote_schema") - ctx.WriteString(*node.RemoteSchema) - } - - if node.ServerName != nil { - ctx.WriteString("server_name") - ctx.WriteString(*node.ServerName) - } - - if len(node.TableList.Items) > 0 { - subCtx := FingerprintSubContext{} - node.TableList.Fingerprint(&subCtx, node, "TableList") - - if len(subCtx.parts) > 0 { - ctx.WriteString("table_list") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } -} diff --git a/nodes/import_foreign_schema_type.go b/nodes/import_foreign_schema_type.go deleted file mode 100644 index 6f66e37b..00000000 --- a/nodes/import_foreign_schema_type.go +++ /dev/null @@ -1,15 +0,0 @@ -// Auto-generated from postgres/src/include/nodes/parsenodes.h - DO NOT EDIT - -package pg_query - -/* ---------------------- - * Import Foreign Schema Statement - * ---------------------- - */ -type ImportForeignSchemaType uint - -const ( - FDW_IMPORT_SCHEMA_ALL ImportForeignSchemaType = iota /* all relations wanted */ - FDW_IMPORT_SCHEMA_LIMIT_TO /* include only listed tables in import */ - FDW_IMPORT_SCHEMA_EXCEPT /* exclude listed tables from import */ -) diff --git a/nodes/index_elem.go b/nodes/index_elem.go deleted file mode 100644 index 55dbd011..00000000 --- a/nodes/index_elem.go +++ /dev/null @@ -1,89 +0,0 @@ -// Auto-generated from postgres/src/include/nodes/parsenodes.h - DO NOT EDIT - -package pg_query - -import "encoding/json" - -/* - * IndexElem - index parameters (used in CREATE INDEX, and in ON CONFLICT) - * - * For a plain index attribute, 'name' is the name of the table column to - * index, and 'expr' is NULL. For an index expression, 'name' is NULL and - * 'expr' is the expression tree. - */ -type IndexElem struct { - Name *string `json:"name"` /* name of attribute to index, or NULL */ - Expr Node `json:"expr"` /* expression to index, or NULL */ - Indexcolname *string `json:"indexcolname"` /* name for index column; NULL = default */ - Collation List `json:"collation"` /* name of collation; NIL = default */ - Opclass List `json:"opclass"` /* name of desired opclass; NIL = default */ - Ordering SortByDir `json:"ordering"` /* ASC/DESC/default */ - NullsOrdering SortByNulls `json:"nulls_ordering"` /* FIRST/LAST/default */ -} - -func (node IndexElem) MarshalJSON() ([]byte, error) { - type IndexElemMarshalAlias IndexElem - return json.Marshal(map[string]interface{}{ - "IndexElem": (*IndexElemMarshalAlias)(&node), - }) -} - -func (node *IndexElem) UnmarshalJSON(input []byte) (err error) { - var fields map[string]json.RawMessage - - err = json.Unmarshal(input, &fields) - if err != nil { - return - } - - if fields["name"] != nil { - err = json.Unmarshal(fields["name"], &node.Name) - if err != nil { - return - } - } - - if fields["expr"] != nil { - node.Expr, err = UnmarshalNodeJSON(fields["expr"]) - if err != nil { - return - } - } - - if fields["indexcolname"] != nil { - err = json.Unmarshal(fields["indexcolname"], &node.Indexcolname) - if err != nil { - return - } - } - - if fields["collation"] != nil { - node.Collation.Items, err = UnmarshalNodeArrayJSON(fields["collation"]) - if err != nil { - return - } - } - - if fields["opclass"] != nil { - node.Opclass.Items, err = UnmarshalNodeArrayJSON(fields["opclass"]) - if err != nil { - return - } - } - - if fields["ordering"] != nil { - err = json.Unmarshal(fields["ordering"], &node.Ordering) - if err != nil { - return - } - } - - if fields["nulls_ordering"] != nil { - err = json.Unmarshal(fields["nulls_ordering"], &node.NullsOrdering) - if err != nil { - return - } - } - - return -} diff --git a/nodes/index_elem_deparse.go b/nodes/index_elem_deparse.go deleted file mode 100644 index 2a5c1963..00000000 --- a/nodes/index_elem_deparse.go +++ /dev/null @@ -1,7 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -func (node IndexElem) Deparse() string { - panic("Not Implemented") -} diff --git a/nodes/index_elem_fingerprint.go b/nodes/index_elem_fingerprint.go deleted file mode 100644 index a4a43bee..00000000 --- a/nodes/index_elem_fingerprint.go +++ /dev/null @@ -1,65 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -import "strconv" - -func (node IndexElem) Fingerprint(ctx FingerprintContext, parentNode Node, parentFieldName string) { - ctx.WriteString("IndexElem") - - if len(node.Collation.Items) > 0 { - subCtx := FingerprintSubContext{} - node.Collation.Fingerprint(&subCtx, node, "Collation") - - if len(subCtx.parts) > 0 { - ctx.WriteString("collation") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if node.Expr != nil { - subCtx := FingerprintSubContext{} - node.Expr.Fingerprint(&subCtx, node, "Expr") - - if len(subCtx.parts) > 0 { - ctx.WriteString("expr") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if node.Indexcolname != nil { - ctx.WriteString("indexcolname") - ctx.WriteString(*node.Indexcolname) - } - - if node.Name != nil { - ctx.WriteString("name") - ctx.WriteString(*node.Name) - } - - if int(node.NullsOrdering) != 0 { - ctx.WriteString("nulls_ordering") - ctx.WriteString(strconv.Itoa(int(node.NullsOrdering))) - } - - if len(node.Opclass.Items) > 0 { - subCtx := FingerprintSubContext{} - node.Opclass.Fingerprint(&subCtx, node, "Opclass") - - if len(subCtx.parts) > 0 { - ctx.WriteString("opclass") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if int(node.Ordering) != 0 { - ctx.WriteString("ordering") - ctx.WriteString(strconv.Itoa(int(node.Ordering))) - } -} diff --git a/nodes/index_stmt.go b/nodes/index_stmt.go deleted file mode 100644 index f39bf3d0..00000000 --- a/nodes/index_stmt.go +++ /dev/null @@ -1,194 +0,0 @@ -// Auto-generated from postgres/src/include/nodes/parsenodes.h - DO NOT EDIT - -package pg_query - -import "encoding/json" - -/* ---------------------- - * Create Index Statement - * - * This represents creation of an index and/or an associated constraint. - * If isconstraint is true, we should create a pg_constraint entry along - * with the index. But if indexOid isn't InvalidOid, we are not creating an - * index, just a UNIQUE/PKEY constraint using an existing index. isconstraint - * must always be true in this case, and the fields describing the index - * properties are empty. - * ---------------------- - */ -type IndexStmt struct { - Idxname *string `json:"idxname"` /* name of new index, or NULL for default */ - Relation *RangeVar `json:"relation"` /* relation to build index on */ - AccessMethod *string `json:"accessMethod"` /* name of access method (eg. btree) */ - TableSpace *string `json:"tableSpace"` /* tablespace, or NULL for default */ - IndexParams List `json:"indexParams"` /* columns to index: a list of IndexElem */ - Options List `json:"options"` /* WITH clause options: a list of DefElem */ - WhereClause Node `json:"whereClause"` /* qualification (partial-index predicate) */ - ExcludeOpNames List `json:"excludeOpNames"` /* exclusion operator names, or NIL if none */ - Idxcomment *string `json:"idxcomment"` /* comment to apply to index, or NULL */ - IndexOid Oid `json:"indexOid"` /* OID of an existing index, if any */ - OldNode Oid `json:"oldNode"` /* relfilenode of existing storage, if any */ - Unique bool `json:"unique"` /* is index unique? */ - Primary bool `json:"primary"` /* is index a primary key? */ - Isconstraint bool `json:"isconstraint"` /* is it for a pkey/unique constraint? */ - Deferrable bool `json:"deferrable"` /* is the constraint DEFERRABLE? */ - Initdeferred bool `json:"initdeferred"` /* is the constraint INITIALLY DEFERRED? */ - Transformed bool `json:"transformed"` /* true when transformIndexStmt is finished */ - Concurrent bool `json:"concurrent"` /* should this be a concurrent index build? */ - IfNotExists bool `json:"if_not_exists"` /* just do nothing if index already exists? */ -} - -func (node IndexStmt) MarshalJSON() ([]byte, error) { - type IndexStmtMarshalAlias IndexStmt - return json.Marshal(map[string]interface{}{ - "IndexStmt": (*IndexStmtMarshalAlias)(&node), - }) -} - -func (node *IndexStmt) UnmarshalJSON(input []byte) (err error) { - var fields map[string]json.RawMessage - - err = json.Unmarshal(input, &fields) - if err != nil { - return - } - - if fields["idxname"] != nil { - err = json.Unmarshal(fields["idxname"], &node.Idxname) - if err != nil { - return - } - } - - if fields["relation"] != nil { - var nodePtr *Node - nodePtr, err = UnmarshalNodePtrJSON(fields["relation"]) - if err != nil { - return - } - if nodePtr != nil && *nodePtr != nil { - val := (*nodePtr).(RangeVar) - node.Relation = &val - } - } - - if fields["accessMethod"] != nil { - err = json.Unmarshal(fields["accessMethod"], &node.AccessMethod) - if err != nil { - return - } - } - - if fields["tableSpace"] != nil { - err = json.Unmarshal(fields["tableSpace"], &node.TableSpace) - if err != nil { - return - } - } - - if fields["indexParams"] != nil { - node.IndexParams.Items, err = UnmarshalNodeArrayJSON(fields["indexParams"]) - if err != nil { - return - } - } - - if fields["options"] != nil { - node.Options.Items, err = UnmarshalNodeArrayJSON(fields["options"]) - if err != nil { - return - } - } - - if fields["whereClause"] != nil { - node.WhereClause, err = UnmarshalNodeJSON(fields["whereClause"]) - if err != nil { - return - } - } - - if fields["excludeOpNames"] != nil { - node.ExcludeOpNames.Items, err = UnmarshalNodeArrayJSON(fields["excludeOpNames"]) - if err != nil { - return - } - } - - if fields["idxcomment"] != nil { - err = json.Unmarshal(fields["idxcomment"], &node.Idxcomment) - if err != nil { - return - } - } - - if fields["indexOid"] != nil { - err = json.Unmarshal(fields["indexOid"], &node.IndexOid) - if err != nil { - return - } - } - - if fields["oldNode"] != nil { - err = json.Unmarshal(fields["oldNode"], &node.OldNode) - if err != nil { - return - } - } - - if fields["unique"] != nil { - err = json.Unmarshal(fields["unique"], &node.Unique) - if err != nil { - return - } - } - - if fields["primary"] != nil { - err = json.Unmarshal(fields["primary"], &node.Primary) - if err != nil { - return - } - } - - if fields["isconstraint"] != nil { - err = json.Unmarshal(fields["isconstraint"], &node.Isconstraint) - if err != nil { - return - } - } - - if fields["deferrable"] != nil { - err = json.Unmarshal(fields["deferrable"], &node.Deferrable) - if err != nil { - return - } - } - - if fields["initdeferred"] != nil { - err = json.Unmarshal(fields["initdeferred"], &node.Initdeferred) - if err != nil { - return - } - } - - if fields["transformed"] != nil { - err = json.Unmarshal(fields["transformed"], &node.Transformed) - if err != nil { - return - } - } - - if fields["concurrent"] != nil { - err = json.Unmarshal(fields["concurrent"], &node.Concurrent) - if err != nil { - return - } - } - - if fields["if_not_exists"] != nil { - err = json.Unmarshal(fields["if_not_exists"], &node.IfNotExists) - if err != nil { - return - } - } - - return -} diff --git a/nodes/index_stmt_deparse.go b/nodes/index_stmt_deparse.go deleted file mode 100644 index a9b6cfae..00000000 --- a/nodes/index_stmt_deparse.go +++ /dev/null @@ -1,7 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -func (node IndexStmt) Deparse() string { - panic("Not Implemented") -} diff --git a/nodes/index_stmt_fingerprint.go b/nodes/index_stmt_fingerprint.go deleted file mode 100644 index 1c651d31..00000000 --- a/nodes/index_stmt_fingerprint.go +++ /dev/null @@ -1,139 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -import "strconv" - -func (node IndexStmt) Fingerprint(ctx FingerprintContext, parentNode Node, parentFieldName string) { - ctx.WriteString("IndexStmt") - - if node.AccessMethod != nil { - ctx.WriteString("accessMethod") - ctx.WriteString(*node.AccessMethod) - } - - if node.Concurrent { - ctx.WriteString("concurrent") - ctx.WriteString(strconv.FormatBool(node.Concurrent)) - } - - if node.Deferrable { - ctx.WriteString("deferrable") - ctx.WriteString(strconv.FormatBool(node.Deferrable)) - } - - if len(node.ExcludeOpNames.Items) > 0 { - subCtx := FingerprintSubContext{} - node.ExcludeOpNames.Fingerprint(&subCtx, node, "ExcludeOpNames") - - if len(subCtx.parts) > 0 { - ctx.WriteString("excludeOpNames") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if node.Idxcomment != nil { - ctx.WriteString("idxcomment") - ctx.WriteString(*node.Idxcomment) - } - - if node.Idxname != nil { - ctx.WriteString("idxname") - ctx.WriteString(*node.Idxname) - } - - if node.IfNotExists { - ctx.WriteString("if_not_exists") - ctx.WriteString(strconv.FormatBool(node.IfNotExists)) - } - - if node.IndexOid != 0 { - ctx.WriteString("indexOid") - ctx.WriteString(strconv.Itoa(int(node.IndexOid))) - } - - if len(node.IndexParams.Items) > 0 { - subCtx := FingerprintSubContext{} - node.IndexParams.Fingerprint(&subCtx, node, "IndexParams") - - if len(subCtx.parts) > 0 { - ctx.WriteString("indexParams") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if node.Initdeferred { - ctx.WriteString("initdeferred") - ctx.WriteString(strconv.FormatBool(node.Initdeferred)) - } - - if node.Isconstraint { - ctx.WriteString("isconstraint") - ctx.WriteString(strconv.FormatBool(node.Isconstraint)) - } - - if node.OldNode != 0 { - ctx.WriteString("oldNode") - ctx.WriteString(strconv.Itoa(int(node.OldNode))) - } - - if len(node.Options.Items) > 0 { - subCtx := FingerprintSubContext{} - node.Options.Fingerprint(&subCtx, node, "Options") - - if len(subCtx.parts) > 0 { - ctx.WriteString("options") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if node.Primary { - ctx.WriteString("primary") - ctx.WriteString(strconv.FormatBool(node.Primary)) - } - - if node.Relation != nil { - subCtx := FingerprintSubContext{} - node.Relation.Fingerprint(&subCtx, node, "Relation") - - if len(subCtx.parts) > 0 { - ctx.WriteString("relation") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if node.TableSpace != nil { - ctx.WriteString("tableSpace") - ctx.WriteString(*node.TableSpace) - } - - if node.Transformed { - ctx.WriteString("transformed") - ctx.WriteString(strconv.FormatBool(node.Transformed)) - } - - if node.Unique { - ctx.WriteString("unique") - ctx.WriteString(strconv.FormatBool(node.Unique)) - } - - if node.WhereClause != nil { - subCtx := FingerprintSubContext{} - node.WhereClause.Fingerprint(&subCtx, node, "WhereClause") - - if len(subCtx.parts) > 0 { - ctx.WriteString("whereClause") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } -} diff --git a/nodes/infer_clause.go b/nodes/infer_clause.go deleted file mode 100644 index ca16ab3e..00000000 --- a/nodes/infer_clause.go +++ /dev/null @@ -1,64 +0,0 @@ -// Auto-generated from postgres/src/include/nodes/parsenodes.h - DO NOT EDIT - -package pg_query - -import "encoding/json" - -/* - * InferClause - - * ON CONFLICT unique index inference clause - * - * Note: InferClause does not propagate into the Query representation. - */ -type InferClause struct { - IndexElems List `json:"indexElems"` /* IndexElems to infer unique index */ - WhereClause Node `json:"whereClause"` /* qualification (partial-index predicate) */ - Conname *string `json:"conname"` /* Constraint name, or NULL if unnamed */ - Location int `json:"location"` /* token location, or -1 if unknown */ -} - -func (node InferClause) MarshalJSON() ([]byte, error) { - type InferClauseMarshalAlias InferClause - return json.Marshal(map[string]interface{}{ - "InferClause": (*InferClauseMarshalAlias)(&node), - }) -} - -func (node *InferClause) UnmarshalJSON(input []byte) (err error) { - var fields map[string]json.RawMessage - - err = json.Unmarshal(input, &fields) - if err != nil { - return - } - - if fields["indexElems"] != nil { - node.IndexElems.Items, err = UnmarshalNodeArrayJSON(fields["indexElems"]) - if err != nil { - return - } - } - - if fields["whereClause"] != nil { - node.WhereClause, err = UnmarshalNodeJSON(fields["whereClause"]) - if err != nil { - return - } - } - - if fields["conname"] != nil { - err = json.Unmarshal(fields["conname"], &node.Conname) - if err != nil { - return - } - } - - if fields["location"] != nil { - err = json.Unmarshal(fields["location"], &node.Location) - if err != nil { - return - } - } - - return -} diff --git a/nodes/infer_clause_deparse.go b/nodes/infer_clause_deparse.go deleted file mode 100644 index a1c61127..00000000 --- a/nodes/infer_clause_deparse.go +++ /dev/null @@ -1,7 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -func (node InferClause) Deparse() string { - panic("Not Implemented") -} diff --git a/nodes/infer_clause_fingerprint.go b/nodes/infer_clause_fingerprint.go deleted file mode 100644 index 0128fb67..00000000 --- a/nodes/infer_clause_fingerprint.go +++ /dev/null @@ -1,37 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -func (node InferClause) Fingerprint(ctx FingerprintContext, parentNode Node, parentFieldName string) { - ctx.WriteString("InferClause") - - if node.Conname != nil { - ctx.WriteString("conname") - ctx.WriteString(*node.Conname) - } - - if len(node.IndexElems.Items) > 0 { - subCtx := FingerprintSubContext{} - node.IndexElems.Fingerprint(&subCtx, node, "IndexElems") - - if len(subCtx.parts) > 0 { - ctx.WriteString("indexElems") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - // Intentionally ignoring node.Location for fingerprinting - - if node.WhereClause != nil { - subCtx := FingerprintSubContext{} - node.WhereClause.Fingerprint(&subCtx, node, "WhereClause") - - if len(subCtx.parts) > 0 { - ctx.WriteString("whereClause") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } -} diff --git a/nodes/inference_elem.go b/nodes/inference_elem.go deleted file mode 100644 index 227c8cbf..00000000 --- a/nodes/inference_elem.go +++ /dev/null @@ -1,65 +0,0 @@ -// Auto-generated from postgres/src/include/nodes/primnodes.h - DO NOT EDIT - -package pg_query - -import "encoding/json" - -/* - * InferenceElem - an element of a unique index inference specification - * - * This mostly matches the structure of IndexElems, but having a dedicated - * primnode allows for a clean separation between the use of index parameters - * by utility commands, and this node. - */ -type InferenceElem struct { - Xpr Node `json:"xpr"` - Expr Node `json:"expr"` /* expression to infer from, or NULL */ - Infercollid Oid `json:"infercollid"` /* OID of collation, or InvalidOid */ - Inferopclass Oid `json:"inferopclass"` /* OID of att opclass, or InvalidOid */ -} - -func (node InferenceElem) MarshalJSON() ([]byte, error) { - type InferenceElemMarshalAlias InferenceElem - return json.Marshal(map[string]interface{}{ - "InferenceElem": (*InferenceElemMarshalAlias)(&node), - }) -} - -func (node *InferenceElem) UnmarshalJSON(input []byte) (err error) { - var fields map[string]json.RawMessage - - err = json.Unmarshal(input, &fields) - if err != nil { - return - } - - if fields["xpr"] != nil { - node.Xpr, err = UnmarshalNodeJSON(fields["xpr"]) - if err != nil { - return - } - } - - if fields["expr"] != nil { - node.Expr, err = UnmarshalNodeJSON(fields["expr"]) - if err != nil { - return - } - } - - if fields["infercollid"] != nil { - err = json.Unmarshal(fields["infercollid"], &node.Infercollid) - if err != nil { - return - } - } - - if fields["inferopclass"] != nil { - err = json.Unmarshal(fields["inferopclass"], &node.Inferopclass) - if err != nil { - return - } - } - - return -} diff --git a/nodes/inference_elem_deparse.go b/nodes/inference_elem_deparse.go deleted file mode 100644 index edf3afda..00000000 --- a/nodes/inference_elem_deparse.go +++ /dev/null @@ -1,7 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -func (node InferenceElem) Deparse() string { - panic("Not Implemented") -} diff --git a/nodes/inference_elem_fingerprint.go b/nodes/inference_elem_fingerprint.go deleted file mode 100644 index 0afe1e32..00000000 --- a/nodes/inference_elem_fingerprint.go +++ /dev/null @@ -1,43 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -import "strconv" - -func (node InferenceElem) Fingerprint(ctx FingerprintContext, parentNode Node, parentFieldName string) { - ctx.WriteString("InferenceElem") - - if node.Expr != nil { - subCtx := FingerprintSubContext{} - node.Expr.Fingerprint(&subCtx, node, "Expr") - - if len(subCtx.parts) > 0 { - ctx.WriteString("expr") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if node.Infercollid != 0 { - ctx.WriteString("infercollid") - ctx.WriteString(strconv.Itoa(int(node.Infercollid))) - } - - if node.Inferopclass != 0 { - ctx.WriteString("inferopclass") - ctx.WriteString(strconv.Itoa(int(node.Inferopclass))) - } - - if node.Xpr != nil { - subCtx := FingerprintSubContext{} - node.Xpr.Fingerprint(&subCtx, node, "Xpr") - - if len(subCtx.parts) > 0 { - ctx.WriteString("xpr") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } -} diff --git a/nodes/inline_code_block.go b/nodes/inline_code_block.go deleted file mode 100644 index 0e121210..00000000 --- a/nodes/inline_code_block.go +++ /dev/null @@ -1,56 +0,0 @@ -// Auto-generated from postgres/src/include/nodes/parsenodes.h - DO NOT EDIT - -package pg_query - -import "encoding/json" - -/* ---------------------- - * DO Statement - * - * DoStmt is the raw parser output, InlineCodeBlock is the execution-time API - * ---------------------- - */ -type InlineCodeBlock struct { - SourceText *string `json:"source_text"` /* source text of anonymous code block */ - LangOid Oid `json:"langOid"` /* OID of selected language */ - LangIsTrusted bool `json:"langIsTrusted"` /* trusted property of the language */ -} - -func (node InlineCodeBlock) MarshalJSON() ([]byte, error) { - type InlineCodeBlockMarshalAlias InlineCodeBlock - return json.Marshal(map[string]interface{}{ - "InlineCodeBlock": (*InlineCodeBlockMarshalAlias)(&node), - }) -} - -func (node *InlineCodeBlock) UnmarshalJSON(input []byte) (err error) { - var fields map[string]json.RawMessage - - err = json.Unmarshal(input, &fields) - if err != nil { - return - } - - if fields["source_text"] != nil { - err = json.Unmarshal(fields["source_text"], &node.SourceText) - if err != nil { - return - } - } - - if fields["langOid"] != nil { - err = json.Unmarshal(fields["langOid"], &node.LangOid) - if err != nil { - return - } - } - - if fields["langIsTrusted"] != nil { - err = json.Unmarshal(fields["langIsTrusted"], &node.LangIsTrusted) - if err != nil { - return - } - } - - return -} diff --git a/nodes/inline_code_block_deparse.go b/nodes/inline_code_block_deparse.go deleted file mode 100644 index adfe3b7e..00000000 --- a/nodes/inline_code_block_deparse.go +++ /dev/null @@ -1,7 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -func (node InlineCodeBlock) Deparse() string { - panic("Not Implemented") -} diff --git a/nodes/inline_code_block_fingerprint.go b/nodes/inline_code_block_fingerprint.go deleted file mode 100644 index cb6b6e06..00000000 --- a/nodes/inline_code_block_fingerprint.go +++ /dev/null @@ -1,24 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -import "strconv" - -func (node InlineCodeBlock) Fingerprint(ctx FingerprintContext, parentNode Node, parentFieldName string) { - ctx.WriteString("InlineCodeBlock") - - if node.LangIsTrusted { - ctx.WriteString("langIsTrusted") - ctx.WriteString(strconv.FormatBool(node.LangIsTrusted)) - } - - if node.LangOid != 0 { - ctx.WriteString("langOid") - ctx.WriteString(strconv.Itoa(int(node.LangOid))) - } - - if node.SourceText != nil { - ctx.WriteString("source_text") - ctx.WriteString(*node.SourceText) - } -} diff --git a/nodes/insert_stmt.go b/nodes/insert_stmt.go deleted file mode 100644 index e59556a0..00000000 --- a/nodes/insert_stmt.go +++ /dev/null @@ -1,105 +0,0 @@ -// Auto-generated from postgres/src/include/nodes/parsenodes.h - DO NOT EDIT - -package pg_query - -import "encoding/json" - -/* ---------------------- - * Insert Statement - * - * The source expression is represented by SelectStmt for both the - * SELECT and VALUES cases. If selectStmt is NULL, then the query - * is INSERT ... DEFAULT VALUES. - * ---------------------- - */ -type InsertStmt struct { - Relation *RangeVar `json:"relation"` /* relation to insert into */ - Cols List `json:"cols"` /* optional: names of the target columns */ - SelectStmt Node `json:"selectStmt"` /* the source SELECT/VALUES, or NULL */ - OnConflictClause *OnConflictClause `json:"onConflictClause"` /* ON CONFLICT clause */ - ReturningList List `json:"returningList"` /* list of expressions to return */ - WithClause *WithClause `json:"withClause"` /* WITH clause */ - Override OverridingKind `json:"override"` /* OVERRIDING clause */ -} - -func (node InsertStmt) MarshalJSON() ([]byte, error) { - type InsertStmtMarshalAlias InsertStmt - return json.Marshal(map[string]interface{}{ - "InsertStmt": (*InsertStmtMarshalAlias)(&node), - }) -} - -func (node *InsertStmt) UnmarshalJSON(input []byte) (err error) { - var fields map[string]json.RawMessage - - err = json.Unmarshal(input, &fields) - if err != nil { - return - } - - if fields["relation"] != nil { - var nodePtr *Node - nodePtr, err = UnmarshalNodePtrJSON(fields["relation"]) - if err != nil { - return - } - if nodePtr != nil && *nodePtr != nil { - val := (*nodePtr).(RangeVar) - node.Relation = &val - } - } - - if fields["cols"] != nil { - node.Cols.Items, err = UnmarshalNodeArrayJSON(fields["cols"]) - if err != nil { - return - } - } - - if fields["selectStmt"] != nil { - node.SelectStmt, err = UnmarshalNodeJSON(fields["selectStmt"]) - if err != nil { - return - } - } - - if fields["onConflictClause"] != nil { - var nodePtr *Node - nodePtr, err = UnmarshalNodePtrJSON(fields["onConflictClause"]) - if err != nil { - return - } - if nodePtr != nil && *nodePtr != nil { - val := (*nodePtr).(OnConflictClause) - node.OnConflictClause = &val - } - } - - if fields["returningList"] != nil { - node.ReturningList.Items, err = UnmarshalNodeArrayJSON(fields["returningList"]) - if err != nil { - return - } - } - - if fields["withClause"] != nil { - var nodePtr *Node - nodePtr, err = UnmarshalNodePtrJSON(fields["withClause"]) - if err != nil { - return - } - if nodePtr != nil && *nodePtr != nil { - val := (*nodePtr).(WithClause) - node.WithClause = &val - } - } - - if fields["override"] != nil { - err = json.Unmarshal(fields["override"], &node.Override) - if err != nil { - return - } - } - - return -} diff --git a/nodes/insert_stmt_deparse.go b/nodes/insert_stmt_deparse.go deleted file mode 100644 index a94e08d6..00000000 --- a/nodes/insert_stmt_deparse.go +++ /dev/null @@ -1,7 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -func (node InsertStmt) Deparse() string { - panic("Not Implemented") -} diff --git a/nodes/insert_stmt_fingerprint.go b/nodes/insert_stmt_fingerprint.go deleted file mode 100644 index 4b0d13c8..00000000 --- a/nodes/insert_stmt_fingerprint.go +++ /dev/null @@ -1,86 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -import "strconv" - -func (node InsertStmt) Fingerprint(ctx FingerprintContext, parentNode Node, parentFieldName string) { - ctx.WriteString("InsertStmt") - - if len(node.Cols.Items) > 0 { - subCtx := FingerprintSubContext{} - node.Cols.Fingerprint(&subCtx, node, "Cols") - - if len(subCtx.parts) > 0 { - ctx.WriteString("cols") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if node.OnConflictClause != nil { - subCtx := FingerprintSubContext{} - node.OnConflictClause.Fingerprint(&subCtx, node, "OnConflictClause") - - if len(subCtx.parts) > 0 { - ctx.WriteString("onConflictClause") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if int(node.Override) != 0 { - ctx.WriteString("override") - ctx.WriteString(strconv.Itoa(int(node.Override))) - } - - if node.Relation != nil { - subCtx := FingerprintSubContext{} - node.Relation.Fingerprint(&subCtx, node, "Relation") - - if len(subCtx.parts) > 0 { - ctx.WriteString("relation") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if len(node.ReturningList.Items) > 0 { - subCtx := FingerprintSubContext{} - node.ReturningList.Fingerprint(&subCtx, node, "ReturningList") - - if len(subCtx.parts) > 0 { - ctx.WriteString("returningList") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if node.SelectStmt != nil { - subCtx := FingerprintSubContext{} - node.SelectStmt.Fingerprint(&subCtx, node, "SelectStmt") - - if len(subCtx.parts) > 0 { - ctx.WriteString("selectStmt") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if node.WithClause != nil { - subCtx := FingerprintSubContext{} - node.WithClause.Fingerprint(&subCtx, node, "WithClause") - - if len(subCtx.parts) > 0 { - ctx.WriteString("withClause") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } -} diff --git a/nodes/integer.go b/nodes/integer.go deleted file mode 100644 index b54dac6a..00000000 --- a/nodes/integer.go +++ /dev/null @@ -1,34 +0,0 @@ -// Auto-generated from postgres/src/include/nodes/value.h - DO NOT EDIT - -package pg_query - -import "encoding/json" - -type Integer struct { - Ival int64 `json:"ival"` -} - -func (node Integer) MarshalJSON() ([]byte, error) { - type IntegerMarshalAlias Integer - return json.Marshal(map[string]interface{}{ - "Integer": (*IntegerMarshalAlias)(&node), - }) -} - -func (node *Integer) UnmarshalJSON(input []byte) (err error) { - var fields map[string]json.RawMessage - - err = json.Unmarshal(input, &fields) - if err != nil { - return - } - - if fields["ival"] != nil { - err = json.Unmarshal(fields["ival"], &node.Ival) - if err != nil { - return - } - } - - return -} diff --git a/nodes/integer_deparse.go b/nodes/integer_deparse.go deleted file mode 100644 index 3f91b9d4..00000000 --- a/nodes/integer_deparse.go +++ /dev/null @@ -1,7 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -func (node Integer) Deparse() string { - panic("Not Implemented") -} diff --git a/nodes/integer_fingerprint.go b/nodes/integer_fingerprint.go deleted file mode 100644 index e8d8a163..00000000 --- a/nodes/integer_fingerprint.go +++ /dev/null @@ -1,14 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -import "strconv" - -func (node Integer) Fingerprint(ctx FingerprintContext, parentNode Node, parentFieldName string) { - ctx.WriteString("Integer") - - if node.Ival != 0 { - ctx.WriteString("ival") - ctx.WriteString(strconv.Itoa(int(node.Ival))) - } -} diff --git a/nodes/into_clause.go b/nodes/into_clause.go deleted file mode 100644 index f313d205..00000000 --- a/nodes/into_clause.go +++ /dev/null @@ -1,95 +0,0 @@ -// Auto-generated from postgres/src/include/nodes/primnodes.h - DO NOT EDIT - -package pg_query - -import "encoding/json" - -/* - * IntoClause - target information for SELECT INTO, CREATE TABLE AS, and - * CREATE MATERIALIZED VIEW - * - * For CREATE MATERIALIZED VIEW, viewQuery is the parsed-but-not-rewritten - * SELECT Query for the view; otherwise it's NULL. (Although it's actually - * Query*, we declare it as Node* to avoid a forward reference.) - */ -type IntoClause struct { - Rel *RangeVar `json:"rel"` /* target relation name */ - ColNames List `json:"colNames"` /* column names to assign, or NIL */ - Options List `json:"options"` /* options from WITH clause */ - OnCommit OnCommitAction `json:"onCommit"` /* what do we do at COMMIT? */ - TableSpaceName *string `json:"tableSpaceName"` /* table space to use, or NULL */ - ViewQuery Node `json:"viewQuery"` /* materialized view's SELECT query */ - SkipData bool `json:"skipData"` /* true for WITH NO DATA */ -} - -func (node IntoClause) MarshalJSON() ([]byte, error) { - type IntoClauseMarshalAlias IntoClause - return json.Marshal(map[string]interface{}{ - "IntoClause": (*IntoClauseMarshalAlias)(&node), - }) -} - -func (node *IntoClause) UnmarshalJSON(input []byte) (err error) { - var fields map[string]json.RawMessage - - err = json.Unmarshal(input, &fields) - if err != nil { - return - } - - if fields["rel"] != nil { - var nodePtr *Node - nodePtr, err = UnmarshalNodePtrJSON(fields["rel"]) - if err != nil { - return - } - if nodePtr != nil && *nodePtr != nil { - val := (*nodePtr).(RangeVar) - node.Rel = &val - } - } - - if fields["colNames"] != nil { - node.ColNames.Items, err = UnmarshalNodeArrayJSON(fields["colNames"]) - if err != nil { - return - } - } - - if fields["options"] != nil { - node.Options.Items, err = UnmarshalNodeArrayJSON(fields["options"]) - if err != nil { - return - } - } - - if fields["onCommit"] != nil { - err = json.Unmarshal(fields["onCommit"], &node.OnCommit) - if err != nil { - return - } - } - - if fields["tableSpaceName"] != nil { - err = json.Unmarshal(fields["tableSpaceName"], &node.TableSpaceName) - if err != nil { - return - } - } - - if fields["viewQuery"] != nil { - node.ViewQuery, err = UnmarshalNodeJSON(fields["viewQuery"]) - if err != nil { - return - } - } - - if fields["skipData"] != nil { - err = json.Unmarshal(fields["skipData"], &node.SkipData) - if err != nil { - return - } - } - - return -} diff --git a/nodes/into_clause_deparse.go b/nodes/into_clause_deparse.go deleted file mode 100644 index 145c8136..00000000 --- a/nodes/into_clause_deparse.go +++ /dev/null @@ -1,7 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -func (node IntoClause) Deparse() string { - panic("Not Implemented") -} diff --git a/nodes/into_clause_fingerprint.go b/nodes/into_clause_fingerprint.go deleted file mode 100644 index 8d5071b2..00000000 --- a/nodes/into_clause_fingerprint.go +++ /dev/null @@ -1,72 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -import "strconv" - -func (node IntoClause) Fingerprint(ctx FingerprintContext, parentNode Node, parentFieldName string) { - ctx.WriteString("IntoClause") - - if len(node.ColNames.Items) > 0 { - subCtx := FingerprintSubContext{} - node.ColNames.Fingerprint(&subCtx, node, "ColNames") - - if len(subCtx.parts) > 0 { - ctx.WriteString("colNames") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if int(node.OnCommit) != 0 { - ctx.WriteString("onCommit") - ctx.WriteString(strconv.Itoa(int(node.OnCommit))) - } - - if len(node.Options.Items) > 0 { - subCtx := FingerprintSubContext{} - node.Options.Fingerprint(&subCtx, node, "Options") - - if len(subCtx.parts) > 0 { - ctx.WriteString("options") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if node.Rel != nil { - subCtx := FingerprintSubContext{} - node.Rel.Fingerprint(&subCtx, node, "Rel") - - if len(subCtx.parts) > 0 { - ctx.WriteString("rel") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if node.SkipData { - ctx.WriteString("skipData") - ctx.WriteString(strconv.FormatBool(node.SkipData)) - } - - if node.TableSpaceName != nil { - ctx.WriteString("tableSpaceName") - ctx.WriteString(*node.TableSpaceName) - } - - if node.ViewQuery != nil { - subCtx := FingerprintSubContext{} - node.ViewQuery.Fingerprint(&subCtx, node, "ViewQuery") - - if len(subCtx.parts) > 0 { - ctx.WriteString("viewQuery") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } -} diff --git a/nodes/join_expr.go b/nodes/join_expr.go deleted file mode 100644 index 2c756945..00000000 --- a/nodes/join_expr.go +++ /dev/null @@ -1,118 +0,0 @@ -// Auto-generated from postgres/src/include/nodes/primnodes.h - DO NOT EDIT - -package pg_query - -import "encoding/json" - -/*---------- - * JoinExpr - for SQL JOIN expressions - * - * isNatural, usingClause, and quals are interdependent. The user can write - * only one of NATURAL, USING(), or ON() (this is enforced by the grammar). - * If he writes NATURAL then parse analysis generates the equivalent USING() - * list, and from that fills in "quals" with the right equality comparisons. - * If he writes USING() then "quals" is filled with equality comparisons. - * If he writes ON() then only "quals" is set. Note that NATURAL/USING - * are not equivalent to ON() since they also affect the output column list. - * - * alias is an Alias node representing the AS alias-clause attached to the - * join expression, or NULL if no clause. NB: presence or absence of the - * alias has a critical impact on semantics, because a join with an alias - * restricts visibility of the tables/columns inside it. - * - * During parse analysis, an RTE is created for the Join, and its index - * is filled into rtindex. This RTE is present mainly so that Vars can - * be created that refer to the outputs of the join. The planner sometimes - * generates JoinExprs internally; these can have rtindex = 0 if there are - * no join alias variables referencing such joins. - *---------- - */ -type JoinExpr struct { - Jointype JoinType `json:"jointype"` /* type of join */ - IsNatural bool `json:"isNatural"` /* Natural join? Will need to shape table */ - Larg Node `json:"larg"` /* left subtree */ - Rarg Node `json:"rarg"` /* right subtree */ - UsingClause List `json:"usingClause"` /* USING clause, if any (list of String) */ - Quals Node `json:"quals"` /* qualifiers on join, if any */ - Alias *Alias `json:"alias"` /* user-written alias clause, if any */ - Rtindex int `json:"rtindex"` /* RT index assigned for join, or 0 */ -} - -func (node JoinExpr) MarshalJSON() ([]byte, error) { - type JoinExprMarshalAlias JoinExpr - return json.Marshal(map[string]interface{}{ - "JoinExpr": (*JoinExprMarshalAlias)(&node), - }) -} - -func (node *JoinExpr) UnmarshalJSON(input []byte) (err error) { - var fields map[string]json.RawMessage - - err = json.Unmarshal(input, &fields) - if err != nil { - return - } - - if fields["jointype"] != nil { - err = json.Unmarshal(fields["jointype"], &node.Jointype) - if err != nil { - return - } - } - - if fields["isNatural"] != nil { - err = json.Unmarshal(fields["isNatural"], &node.IsNatural) - if err != nil { - return - } - } - - if fields["larg"] != nil { - node.Larg, err = UnmarshalNodeJSON(fields["larg"]) - if err != nil { - return - } - } - - if fields["rarg"] != nil { - node.Rarg, err = UnmarshalNodeJSON(fields["rarg"]) - if err != nil { - return - } - } - - if fields["usingClause"] != nil { - node.UsingClause.Items, err = UnmarshalNodeArrayJSON(fields["usingClause"]) - if err != nil { - return - } - } - - if fields["quals"] != nil { - node.Quals, err = UnmarshalNodeJSON(fields["quals"]) - if err != nil { - return - } - } - - if fields["alias"] != nil { - var nodePtr *Node - nodePtr, err = UnmarshalNodePtrJSON(fields["alias"]) - if err != nil { - return - } - if nodePtr != nil && *nodePtr != nil { - val := (*nodePtr).(Alias) - node.Alias = &val - } - } - - if fields["rtindex"] != nil { - err = json.Unmarshal(fields["rtindex"], &node.Rtindex) - if err != nil { - return - } - } - - return -} diff --git a/nodes/join_expr_deparse.go b/nodes/join_expr_deparse.go deleted file mode 100644 index 25d8563e..00000000 --- a/nodes/join_expr_deparse.go +++ /dev/null @@ -1,7 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -func (node JoinExpr) Deparse() string { - panic("Not Implemented") -} diff --git a/nodes/join_expr_fingerprint.go b/nodes/join_expr_fingerprint.go deleted file mode 100644 index 55cd163e..00000000 --- a/nodes/join_expr_fingerprint.go +++ /dev/null @@ -1,84 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -import "strconv" - -func (node JoinExpr) Fingerprint(ctx FingerprintContext, parentNode Node, parentFieldName string) { - ctx.WriteString("JoinExpr") - - if node.Alias != nil { - subCtx := FingerprintSubContext{} - node.Alias.Fingerprint(&subCtx, node, "Alias") - - if len(subCtx.parts) > 0 { - ctx.WriteString("alias") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if node.IsNatural { - ctx.WriteString("isNatural") - ctx.WriteString(strconv.FormatBool(node.IsNatural)) - } - - if int(node.Jointype) != 0 { - ctx.WriteString("jointype") - ctx.WriteString(strconv.Itoa(int(node.Jointype))) - } - - if node.Larg != nil { - subCtx := FingerprintSubContext{} - node.Larg.Fingerprint(&subCtx, node, "Larg") - - if len(subCtx.parts) > 0 { - ctx.WriteString("larg") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if node.Quals != nil { - subCtx := FingerprintSubContext{} - node.Quals.Fingerprint(&subCtx, node, "Quals") - - if len(subCtx.parts) > 0 { - ctx.WriteString("quals") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if node.Rarg != nil { - subCtx := FingerprintSubContext{} - node.Rarg.Fingerprint(&subCtx, node, "Rarg") - - if len(subCtx.parts) > 0 { - ctx.WriteString("rarg") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if node.Rtindex != 0 { - ctx.WriteString("rtindex") - ctx.WriteString(strconv.Itoa(int(node.Rtindex))) - } - - if len(node.UsingClause.Items) > 0 { - subCtx := FingerprintSubContext{} - node.UsingClause.Fingerprint(&subCtx, node, "UsingClause") - - if len(subCtx.parts) > 0 { - ctx.WriteString("usingClause") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } -} diff --git a/nodes/join_type.go b/nodes/join_type.go deleted file mode 100644 index 5228cc89..00000000 --- a/nodes/join_type.go +++ /dev/null @@ -1,49 +0,0 @@ -// Auto-generated from postgres/src/include/nodes/nodes.h - DO NOT EDIT - -package pg_query - -/* - * JoinType - - * enums for types of relation joins - * - * JoinType determines the exact semantics of joining two relations using - * a matching qualification. For example, it tells what to do with a tuple - * that has no match in the other relation. - * - * This is needed in both parsenodes.h and plannodes.h, so put it here... - */ -type JoinType uint - -const ( - /* - * The canonical kinds of joins according to the SQL JOIN syntax. Only - * these codes can appear in parser output (e.g., JoinExpr nodes). - */ - JOIN_INNER JoinType = iota /* matching tuple pairs only */ - JOIN_LEFT /* pairs + unmatched LHS tuples */ - JOIN_FULL /* pairs + unmatched LHS + unmatched RHS */ - JOIN_RIGHT /* pairs + unmatched RHS tuples */ - - /* - * Semijoins and anti-semijoins (as defined in relational theory) do not - * appear in the SQL JOIN syntax, but there are standard idioms for - * representing them (e.g., using EXISTS). The planner recognizes these - * cases and converts them to joins. So the planner and executor must - * support these codes. NOTE: in JOIN_SEMI output, it is unspecified - * which matching RHS row is joined to. In JOIN_ANTI output, the row is - * guaranteed to be null-extended. - */ - JOIN_SEMI /* 1 copy of each LHS row that has match(es) */ - JOIN_ANTI /* 1 copy of each LHS row that has no match */ - - /* - * These codes are used internally in the planner, but are not supported - * by the executor (nor, indeed, by most of the planner). - */ - JOIN_UNIQUE_OUTER /* LHS path must be made unique */ - JOIN_UNIQUE_INNER /* RHS path must be made unique */ - - /* - * We might need additional join types someday. - */ -) diff --git a/nodes/list.go b/nodes/list.go deleted file mode 100644 index a6a40f76..00000000 --- a/nodes/list.go +++ /dev/null @@ -1,34 +0,0 @@ -// Auto-generated from postgres/src/include/nodes/pg_list.h - DO NOT EDIT - -package pg_query - -import "encoding/json" - -type List struct { - Items []Node `json:"items"` -} - -func (node List) MarshalJSON() ([]byte, error) { - type ListMarshalAlias List - return json.Marshal(map[string]interface{}{ - "List": (*ListMarshalAlias)(&node), - }) -} - -func (node *List) UnmarshalJSON(input []byte) (err error) { - var fields map[string]json.RawMessage - - err = json.Unmarshal(input, &fields) - if err != nil { - return - } - - if fields["items"] != nil { - node.Items, err = UnmarshalNodeArrayJSON(fields["items"]) - if err != nil { - return - } - } - - return -} diff --git a/nodes/list_deparse.go b/nodes/list_deparse.go deleted file mode 100644 index 50079555..00000000 --- a/nodes/list_deparse.go +++ /dev/null @@ -1,7 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -func (node List) Deparse() string { - panic("Not Implemented") -} diff --git a/nodes/list_fingerprint.go b/nodes/list_fingerprint.go deleted file mode 100644 index 12f17ad2..00000000 --- a/nodes/list_fingerprint.go +++ /dev/null @@ -1,33 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -import "sort" - -func (node List) Fingerprint(ctx FingerprintContext, parentNode Node, parentFieldName string) { - if parentFieldName == "FromClause" || parentFieldName == "TargetList" || parentFieldName == "Cols" || parentFieldName == "Rexpr" { - var itemsFingerprints FingerprintSubContextSlice - - for _, subNode := range node.Items { - if subNode != nil { - subCtx := FingerprintSubContext{} - subNode.Fingerprint(&subCtx, parentNode, parentFieldName) - itemsFingerprints.AddIfUnique(subCtx) - } - } - - sort.Sort(itemsFingerprints) - - for _, fingerprint := range itemsFingerprints { - for _, part := range fingerprint.parts { - ctx.WriteString(part) - } - } - } else { - for _, subNode := range node.Items { - if subNode != nil { - subNode.Fingerprint(ctx, parentNode, parentFieldName) - } - } - } -} diff --git a/nodes/listen_stmt.go b/nodes/listen_stmt.go deleted file mode 100644 index cb6757a2..00000000 --- a/nodes/listen_stmt.go +++ /dev/null @@ -1,38 +0,0 @@ -// Auto-generated from postgres/src/include/nodes/parsenodes.h - DO NOT EDIT - -package pg_query - -import "encoding/json" - -/* ---------------------- - * Listen Statement - * ---------------------- - */ -type ListenStmt struct { - Conditionname *string `json:"conditionname"` /* condition name to listen on */ -} - -func (node ListenStmt) MarshalJSON() ([]byte, error) { - type ListenStmtMarshalAlias ListenStmt - return json.Marshal(map[string]interface{}{ - "ListenStmt": (*ListenStmtMarshalAlias)(&node), - }) -} - -func (node *ListenStmt) UnmarshalJSON(input []byte) (err error) { - var fields map[string]json.RawMessage - - err = json.Unmarshal(input, &fields) - if err != nil { - return - } - - if fields["conditionname"] != nil { - err = json.Unmarshal(fields["conditionname"], &node.Conditionname) - if err != nil { - return - } - } - - return -} diff --git a/nodes/listen_stmt_deparse.go b/nodes/listen_stmt_deparse.go deleted file mode 100644 index 53307862..00000000 --- a/nodes/listen_stmt_deparse.go +++ /dev/null @@ -1,7 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -func (node ListenStmt) Deparse() string { - panic("Not Implemented") -} diff --git a/nodes/listen_stmt_fingerprint.go b/nodes/listen_stmt_fingerprint.go deleted file mode 100644 index 624fb80d..00000000 --- a/nodes/listen_stmt_fingerprint.go +++ /dev/null @@ -1,12 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -func (node ListenStmt) Fingerprint(ctx FingerprintContext, parentNode Node, parentFieldName string) { - ctx.WriteString("ListenStmt") - - if node.Conditionname != nil { - ctx.WriteString("conditionname") - ctx.WriteString(*node.Conditionname) - } -} diff --git a/nodes/load_stmt.go b/nodes/load_stmt.go deleted file mode 100644 index 75c1511e..00000000 --- a/nodes/load_stmt.go +++ /dev/null @@ -1,38 +0,0 @@ -// Auto-generated from postgres/src/include/nodes/parsenodes.h - DO NOT EDIT - -package pg_query - -import "encoding/json" - -/* ---------------------- - * Load Statement - * ---------------------- - */ -type LoadStmt struct { - Filename *string `json:"filename"` /* file to load */ -} - -func (node LoadStmt) MarshalJSON() ([]byte, error) { - type LoadStmtMarshalAlias LoadStmt - return json.Marshal(map[string]interface{}{ - "LoadStmt": (*LoadStmtMarshalAlias)(&node), - }) -} - -func (node *LoadStmt) UnmarshalJSON(input []byte) (err error) { - var fields map[string]json.RawMessage - - err = json.Unmarshal(input, &fields) - if err != nil { - return - } - - if fields["filename"] != nil { - err = json.Unmarshal(fields["filename"], &node.Filename) - if err != nil { - return - } - } - - return -} diff --git a/nodes/load_stmt_deparse.go b/nodes/load_stmt_deparse.go deleted file mode 100644 index ee13989f..00000000 --- a/nodes/load_stmt_deparse.go +++ /dev/null @@ -1,7 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -func (node LoadStmt) Deparse() string { - panic("Not Implemented") -} diff --git a/nodes/load_stmt_fingerprint.go b/nodes/load_stmt_fingerprint.go deleted file mode 100644 index c1a0c9e8..00000000 --- a/nodes/load_stmt_fingerprint.go +++ /dev/null @@ -1,12 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -func (node LoadStmt) Fingerprint(ctx FingerprintContext, parentNode Node, parentFieldName string) { - ctx.WriteString("LoadStmt") - - if node.Filename != nil { - ctx.WriteString("filename") - ctx.WriteString(*node.Filename) - } -} diff --git a/nodes/lock_clause_strength.go b/nodes/lock_clause_strength.go deleted file mode 100644 index 25d38ac9..00000000 --- a/nodes/lock_clause_strength.go +++ /dev/null @@ -1,18 +0,0 @@ -// Auto-generated from postgres/src/include/nodes/lockoptions.h - DO NOT EDIT - -package pg_query - -/* - * This enum represents the different strengths of FOR UPDATE/SHARE clauses. - * The ordering here is important, because the highest numerical value takes - * precedence when a RTE is specified multiple ways. See applyLockingClause. - */ -type LockClauseStrength uint - -const ( - LCS_NONE LockClauseStrength = iota /* no such clause - only used in PlanRowMark */ - LCS_FORKEYSHARE /* FOR KEY SHARE */ - LCS_FORSHARE /* FOR SHARE */ - LCS_FORNOKEYUPDATE /* FOR NO KEY UPDATE */ - LCS_FORUPDATE /* FOR UPDATE */ -) diff --git a/nodes/lock_stmt.go b/nodes/lock_stmt.go deleted file mode 100644 index f8746cf1..00000000 --- a/nodes/lock_stmt.go +++ /dev/null @@ -1,54 +0,0 @@ -// Auto-generated from postgres/src/include/nodes/parsenodes.h - DO NOT EDIT - -package pg_query - -import "encoding/json" - -/* ---------------------- - * LOCK Statement - * ---------------------- - */ -type LockStmt struct { - Relations List `json:"relations"` /* relations to lock */ - Mode int `json:"mode"` /* lock mode */ - Nowait bool `json:"nowait"` /* no wait mode */ -} - -func (node LockStmt) MarshalJSON() ([]byte, error) { - type LockStmtMarshalAlias LockStmt - return json.Marshal(map[string]interface{}{ - "LockStmt": (*LockStmtMarshalAlias)(&node), - }) -} - -func (node *LockStmt) UnmarshalJSON(input []byte) (err error) { - var fields map[string]json.RawMessage - - err = json.Unmarshal(input, &fields) - if err != nil { - return - } - - if fields["relations"] != nil { - node.Relations.Items, err = UnmarshalNodeArrayJSON(fields["relations"]) - if err != nil { - return - } - } - - if fields["mode"] != nil { - err = json.Unmarshal(fields["mode"], &node.Mode) - if err != nil { - return - } - } - - if fields["nowait"] != nil { - err = json.Unmarshal(fields["nowait"], &node.Nowait) - if err != nil { - return - } - } - - return -} diff --git a/nodes/lock_stmt_deparse.go b/nodes/lock_stmt_deparse.go deleted file mode 100644 index 745be0df..00000000 --- a/nodes/lock_stmt_deparse.go +++ /dev/null @@ -1,7 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -func (node LockStmt) Deparse() string { - panic("Not Implemented") -} diff --git a/nodes/lock_stmt_fingerprint.go b/nodes/lock_stmt_fingerprint.go deleted file mode 100644 index ffde0d84..00000000 --- a/nodes/lock_stmt_fingerprint.go +++ /dev/null @@ -1,31 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -import "strconv" - -func (node LockStmt) Fingerprint(ctx FingerprintContext, parentNode Node, parentFieldName string) { - ctx.WriteString("LockStmt") - - if node.Mode != 0 { - ctx.WriteString("mode") - ctx.WriteString(strconv.Itoa(int(node.Mode))) - } - - if node.Nowait { - ctx.WriteString("nowait") - ctx.WriteString(strconv.FormatBool(node.Nowait)) - } - - if len(node.Relations.Items) > 0 { - subCtx := FingerprintSubContext{} - node.Relations.Fingerprint(&subCtx, node, "Relations") - - if len(subCtx.parts) > 0 { - ctx.WriteString("relations") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } -} diff --git a/nodes/lock_wait_policy.go b/nodes/lock_wait_policy.go deleted file mode 100644 index 0deb5389..00000000 --- a/nodes/lock_wait_policy.go +++ /dev/null @@ -1,22 +0,0 @@ -// Auto-generated from postgres/src/include/nodes/lockoptions.h - DO NOT EDIT - -package pg_query - -/* - * This enum controls how to deal with rows being locked by FOR UPDATE/SHARE - * clauses (i.e., it represents the NOWAIT and SKIP LOCKED options). - * The ordering here is important, because the highest numerical value takes - * precedence when a RTE is specified multiple ways. See applyLockingClause. - */ -type LockWaitPolicy uint - -const ( - /* Wait for the lock to become available (default behavior) */ - LockWaitBlock LockWaitPolicy = iota - - /* Skip rows that can't be locked (SKIP LOCKED) */ - LockWaitSkip - - /* Raise an error if a row cannot be locked (NOWAIT) */ - LockWaitError -) diff --git a/nodes/locking_clause.go b/nodes/locking_clause.go deleted file mode 100644 index 0bf87347..00000000 --- a/nodes/locking_clause.go +++ /dev/null @@ -1,59 +0,0 @@ -// Auto-generated from postgres/src/include/nodes/parsenodes.h - DO NOT EDIT - -package pg_query - -import "encoding/json" - -/* - * LockingClause - raw representation of FOR [NO KEY] UPDATE/[KEY] SHARE - * options - * - * Note: lockedRels == NIL means "all relations in query". Otherwise it - * is a list of RangeVar nodes. (We use RangeVar mainly because it carries - * a location field --- currently, parse analysis insists on unqualified - * names in LockingClause.) - */ -type LockingClause struct { - LockedRels List `json:"lockedRels"` /* FOR [KEY] UPDATE/SHARE relations */ - Strength LockClauseStrength `json:"strength"` - WaitPolicy LockWaitPolicy `json:"waitPolicy"` /* NOWAIT and SKIP LOCKED */ -} - -func (node LockingClause) MarshalJSON() ([]byte, error) { - type LockingClauseMarshalAlias LockingClause - return json.Marshal(map[string]interface{}{ - "LockingClause": (*LockingClauseMarshalAlias)(&node), - }) -} - -func (node *LockingClause) UnmarshalJSON(input []byte) (err error) { - var fields map[string]json.RawMessage - - err = json.Unmarshal(input, &fields) - if err != nil { - return - } - - if fields["lockedRels"] != nil { - node.LockedRels.Items, err = UnmarshalNodeArrayJSON(fields["lockedRels"]) - if err != nil { - return - } - } - - if fields["strength"] != nil { - err = json.Unmarshal(fields["strength"], &node.Strength) - if err != nil { - return - } - } - - if fields["waitPolicy"] != nil { - err = json.Unmarshal(fields["waitPolicy"], &node.WaitPolicy) - if err != nil { - return - } - } - - return -} diff --git a/nodes/locking_clause_deparse.go b/nodes/locking_clause_deparse.go deleted file mode 100644 index f17c5817..00000000 --- a/nodes/locking_clause_deparse.go +++ /dev/null @@ -1,7 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -func (node LockingClause) Deparse() string { - panic("Not Implemented") -} diff --git a/nodes/locking_clause_fingerprint.go b/nodes/locking_clause_fingerprint.go deleted file mode 100644 index 2c7a8309..00000000 --- a/nodes/locking_clause_fingerprint.go +++ /dev/null @@ -1,31 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -import "strconv" - -func (node LockingClause) Fingerprint(ctx FingerprintContext, parentNode Node, parentFieldName string) { - ctx.WriteString("LockingClause") - - if len(node.LockedRels.Items) > 0 { - subCtx := FingerprintSubContext{} - node.LockedRels.Fingerprint(&subCtx, node, "LockedRels") - - if len(subCtx.parts) > 0 { - ctx.WriteString("lockedRels") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if int(node.Strength) != 0 { - ctx.WriteString("strength") - ctx.WriteString(strconv.Itoa(int(node.Strength))) - } - - if int(node.WaitPolicy) != 0 { - ctx.WriteString("waitPolicy") - ctx.WriteString(strconv.Itoa(int(node.WaitPolicy))) - } -} diff --git a/nodes/min_max_expr.go b/nodes/min_max_expr.go deleted file mode 100644 index d8799466..00000000 --- a/nodes/min_max_expr.go +++ /dev/null @@ -1,85 +0,0 @@ -// Auto-generated from postgres/src/include/nodes/primnodes.h - DO NOT EDIT - -package pg_query - -import "encoding/json" - -/* - * MinMaxExpr - a GREATEST or LEAST function - */ -type MinMaxExpr struct { - Xpr Node `json:"xpr"` - Minmaxtype Oid `json:"minmaxtype"` /* common type of arguments and result */ - Minmaxcollid Oid `json:"minmaxcollid"` /* OID of collation of result */ - Inputcollid Oid `json:"inputcollid"` /* OID of collation that function should use */ - Op MinMaxOp `json:"op"` /* function to execute */ - Args List `json:"args"` /* the arguments */ - Location int `json:"location"` /* token location, or -1 if unknown */ -} - -func (node MinMaxExpr) MarshalJSON() ([]byte, error) { - type MinMaxExprMarshalAlias MinMaxExpr - return json.Marshal(map[string]interface{}{ - "MinMaxExpr": (*MinMaxExprMarshalAlias)(&node), - }) -} - -func (node *MinMaxExpr) UnmarshalJSON(input []byte) (err error) { - var fields map[string]json.RawMessage - - err = json.Unmarshal(input, &fields) - if err != nil { - return - } - - if fields["xpr"] != nil { - node.Xpr, err = UnmarshalNodeJSON(fields["xpr"]) - if err != nil { - return - } - } - - if fields["minmaxtype"] != nil { - err = json.Unmarshal(fields["minmaxtype"], &node.Minmaxtype) - if err != nil { - return - } - } - - if fields["minmaxcollid"] != nil { - err = json.Unmarshal(fields["minmaxcollid"], &node.Minmaxcollid) - if err != nil { - return - } - } - - if fields["inputcollid"] != nil { - err = json.Unmarshal(fields["inputcollid"], &node.Inputcollid) - if err != nil { - return - } - } - - if fields["op"] != nil { - err = json.Unmarshal(fields["op"], &node.Op) - if err != nil { - return - } - } - - if fields["args"] != nil { - node.Args.Items, err = UnmarshalNodeArrayJSON(fields["args"]) - if err != nil { - return - } - } - - if fields["location"] != nil { - err = json.Unmarshal(fields["location"], &node.Location) - if err != nil { - return - } - } - - return -} diff --git a/nodes/min_max_expr_deparse.go b/nodes/min_max_expr_deparse.go deleted file mode 100644 index b458bd37..00000000 --- a/nodes/min_max_expr_deparse.go +++ /dev/null @@ -1,7 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -func (node MinMaxExpr) Deparse() string { - panic("Not Implemented") -} diff --git a/nodes/min_max_expr_fingerprint.go b/nodes/min_max_expr_fingerprint.go deleted file mode 100644 index 034a8915..00000000 --- a/nodes/min_max_expr_fingerprint.go +++ /dev/null @@ -1,55 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -import "strconv" - -func (node MinMaxExpr) Fingerprint(ctx FingerprintContext, parentNode Node, parentFieldName string) { - ctx.WriteString("MinMaxExpr") - - if len(node.Args.Items) > 0 { - subCtx := FingerprintSubContext{} - node.Args.Fingerprint(&subCtx, node, "Args") - - if len(subCtx.parts) > 0 { - ctx.WriteString("args") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if node.Inputcollid != 0 { - ctx.WriteString("inputcollid") - ctx.WriteString(strconv.Itoa(int(node.Inputcollid))) - } - - // Intentionally ignoring node.Location for fingerprinting - - if node.Minmaxcollid != 0 { - ctx.WriteString("minmaxcollid") - ctx.WriteString(strconv.Itoa(int(node.Minmaxcollid))) - } - - if node.Minmaxtype != 0 { - ctx.WriteString("minmaxtype") - ctx.WriteString(strconv.Itoa(int(node.Minmaxtype))) - } - - if int(node.Op) != 0 { - ctx.WriteString("op") - ctx.WriteString(strconv.Itoa(int(node.Op))) - } - - if node.Xpr != nil { - subCtx := FingerprintSubContext{} - node.Xpr.Fingerprint(&subCtx, node, "Xpr") - - if len(subCtx.parts) > 0 { - ctx.WriteString("xpr") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } -} diff --git a/nodes/min_max_op.go b/nodes/min_max_op.go deleted file mode 100644 index afdbfc03..00000000 --- a/nodes/min_max_op.go +++ /dev/null @@ -1,13 +0,0 @@ -// Auto-generated from postgres/src/include/nodes/primnodes.h - DO NOT EDIT - -package pg_query - -/* - * MinMaxExpr - a GREATEST or LEAST function - */ -type MinMaxOp uint - -const ( - IS_GREATEST MinMaxOp = iota - IS_LEAST -) diff --git a/nodes/multi_assign_ref.go b/nodes/multi_assign_ref.go deleted file mode 100644 index 20742b36..00000000 --- a/nodes/multi_assign_ref.go +++ /dev/null @@ -1,59 +0,0 @@ -// Auto-generated from postgres/src/include/nodes/parsenodes.h - DO NOT EDIT - -package pg_query - -import "encoding/json" - -/* - * MultiAssignRef - element of a row source expression for UPDATE - * - * In an UPDATE target list, when we have SET (a,b,c) = row-valued-expression, - * we generate separate ResTarget items for each of a,b,c. Their "val" trees - * are MultiAssignRef nodes numbered 1..n, linking to a common copy of the - * row-valued-expression (which parse analysis will process only once, when - * handling the MultiAssignRef with colno=1). - */ -type MultiAssignRef struct { - Source Node `json:"source"` /* the row-valued expression */ - Colno int `json:"colno"` /* column number for this target (1..n) */ - Ncolumns int `json:"ncolumns"` /* number of targets in the construct */ -} - -func (node MultiAssignRef) MarshalJSON() ([]byte, error) { - type MultiAssignRefMarshalAlias MultiAssignRef - return json.Marshal(map[string]interface{}{ - "MultiAssignRef": (*MultiAssignRefMarshalAlias)(&node), - }) -} - -func (node *MultiAssignRef) UnmarshalJSON(input []byte) (err error) { - var fields map[string]json.RawMessage - - err = json.Unmarshal(input, &fields) - if err != nil { - return - } - - if fields["source"] != nil { - node.Source, err = UnmarshalNodeJSON(fields["source"]) - if err != nil { - return - } - } - - if fields["colno"] != nil { - err = json.Unmarshal(fields["colno"], &node.Colno) - if err != nil { - return - } - } - - if fields["ncolumns"] != nil { - err = json.Unmarshal(fields["ncolumns"], &node.Ncolumns) - if err != nil { - return - } - } - - return -} diff --git a/nodes/multi_assign_ref_deparse.go b/nodes/multi_assign_ref_deparse.go deleted file mode 100644 index 9744cb17..00000000 --- a/nodes/multi_assign_ref_deparse.go +++ /dev/null @@ -1,7 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -func (node MultiAssignRef) Deparse() string { - panic("Not Implemented") -} diff --git a/nodes/multi_assign_ref_fingerprint.go b/nodes/multi_assign_ref_fingerprint.go deleted file mode 100644 index 5582f5c0..00000000 --- a/nodes/multi_assign_ref_fingerprint.go +++ /dev/null @@ -1,31 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -import "strconv" - -func (node MultiAssignRef) Fingerprint(ctx FingerprintContext, parentNode Node, parentFieldName string) { - ctx.WriteString("MultiAssignRef") - - if node.Colno != 0 { - ctx.WriteString("colno") - ctx.WriteString(strconv.Itoa(int(node.Colno))) - } - - if node.Ncolumns != 0 { - ctx.WriteString("ncolumns") - ctx.WriteString(strconv.Itoa(int(node.Ncolumns))) - } - - if node.Source != nil { - subCtx := FingerprintSubContext{} - node.Source.Fingerprint(&subCtx, node, "Source") - - if len(subCtx.parts) > 0 { - ctx.WriteString("source") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } -} diff --git a/nodes/named_arg_expr.go b/nodes/named_arg_expr.go deleted file mode 100644 index 2a4eeb74..00000000 --- a/nodes/named_arg_expr.go +++ /dev/null @@ -1,80 +0,0 @@ -// Auto-generated from postgres/src/include/nodes/primnodes.h - DO NOT EDIT - -package pg_query - -import "encoding/json" - -/* - * NamedArgExpr - a named argument of a function - * - * This node type can only appear in the args list of a FuncCall or FuncExpr - * node. We support pure positional call notation (no named arguments), - * named notation (all arguments are named), and mixed notation (unnamed - * arguments followed by named ones). - * - * Parse analysis sets argnumber to the positional index of the argument, - * but doesn't rearrange the argument list. - * - * The planner will convert argument lists to pure positional notation - * during expression preprocessing, so execution never sees a NamedArgExpr. - */ -type NamedArgExpr struct { - Xpr Node `json:"xpr"` - Arg Node `json:"arg"` /* the argument expression */ - Name *string `json:"name"` /* the name */ - Argnumber int `json:"argnumber"` /* argument's number in positional notation */ - Location int `json:"location"` /* argument name location, or -1 if unknown */ -} - -func (node NamedArgExpr) MarshalJSON() ([]byte, error) { - type NamedArgExprMarshalAlias NamedArgExpr - return json.Marshal(map[string]interface{}{ - "NamedArgExpr": (*NamedArgExprMarshalAlias)(&node), - }) -} - -func (node *NamedArgExpr) UnmarshalJSON(input []byte) (err error) { - var fields map[string]json.RawMessage - - err = json.Unmarshal(input, &fields) - if err != nil { - return - } - - if fields["xpr"] != nil { - node.Xpr, err = UnmarshalNodeJSON(fields["xpr"]) - if err != nil { - return - } - } - - if fields["arg"] != nil { - node.Arg, err = UnmarshalNodeJSON(fields["arg"]) - if err != nil { - return - } - } - - if fields["name"] != nil { - err = json.Unmarshal(fields["name"], &node.Name) - if err != nil { - return - } - } - - if fields["argnumber"] != nil { - err = json.Unmarshal(fields["argnumber"], &node.Argnumber) - if err != nil { - return - } - } - - if fields["location"] != nil { - err = json.Unmarshal(fields["location"], &node.Location) - if err != nil { - return - } - } - - return -} diff --git a/nodes/named_arg_expr_deparse.go b/nodes/named_arg_expr_deparse.go deleted file mode 100644 index ac1a6133..00000000 --- a/nodes/named_arg_expr_deparse.go +++ /dev/null @@ -1,7 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -func (node NamedArgExpr) Deparse() string { - panic("Not Implemented") -} diff --git a/nodes/named_arg_expr_fingerprint.go b/nodes/named_arg_expr_fingerprint.go deleted file mode 100644 index 8b45f622..00000000 --- a/nodes/named_arg_expr_fingerprint.go +++ /dev/null @@ -1,45 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -import "strconv" - -func (node NamedArgExpr) Fingerprint(ctx FingerprintContext, parentNode Node, parentFieldName string) { - ctx.WriteString("NamedArgExpr") - - if node.Arg != nil { - subCtx := FingerprintSubContext{} - node.Arg.Fingerprint(&subCtx, node, "Arg") - - if len(subCtx.parts) > 0 { - ctx.WriteString("arg") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if node.Argnumber != 0 { - ctx.WriteString("argnumber") - ctx.WriteString(strconv.Itoa(int(node.Argnumber))) - } - - // Intentionally ignoring node.Location for fingerprinting - - if node.Name != nil { - ctx.WriteString("name") - ctx.WriteString(*node.Name) - } - - if node.Xpr != nil { - subCtx := FingerprintSubContext{} - node.Xpr.Fingerprint(&subCtx, node, "Xpr") - - if len(subCtx.parts) > 0 { - ctx.WriteString("xpr") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } -} diff --git a/nodes/next_value_expr.go b/nodes/next_value_expr.go deleted file mode 100644 index cedc5304..00000000 --- a/nodes/next_value_expr.go +++ /dev/null @@ -1,57 +0,0 @@ -// Auto-generated from postgres/src/include/nodes/primnodes.h - DO NOT EDIT - -package pg_query - -import "encoding/json" - -/* - * NextValueExpr - get next value from sequence - * - * This has the same effect as calling the nextval() function, but it does not - * check permissions on the sequence. This is used for identity columns, - * where the sequence is an implicit dependency without its own permissions. - */ -type NextValueExpr struct { - Xpr Node `json:"xpr"` - Seqid Oid `json:"seqid"` - TypeId Oid `json:"typeId"` -} - -func (node NextValueExpr) MarshalJSON() ([]byte, error) { - type NextValueExprMarshalAlias NextValueExpr - return json.Marshal(map[string]interface{}{ - "NextValueExpr": (*NextValueExprMarshalAlias)(&node), - }) -} - -func (node *NextValueExpr) UnmarshalJSON(input []byte) (err error) { - var fields map[string]json.RawMessage - - err = json.Unmarshal(input, &fields) - if err != nil { - return - } - - if fields["xpr"] != nil { - node.Xpr, err = UnmarshalNodeJSON(fields["xpr"]) - if err != nil { - return - } - } - - if fields["seqid"] != nil { - err = json.Unmarshal(fields["seqid"], &node.Seqid) - if err != nil { - return - } - } - - if fields["typeId"] != nil { - err = json.Unmarshal(fields["typeId"], &node.TypeId) - if err != nil { - return - } - } - - return -} diff --git a/nodes/next_value_expr_deparse.go b/nodes/next_value_expr_deparse.go deleted file mode 100644 index 7e688780..00000000 --- a/nodes/next_value_expr_deparse.go +++ /dev/null @@ -1,7 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -func (node NextValueExpr) Deparse() string { - panic("Not Implemented") -} diff --git a/nodes/next_value_expr_fingerprint.go b/nodes/next_value_expr_fingerprint.go deleted file mode 100644 index 04f6e17c..00000000 --- a/nodes/next_value_expr_fingerprint.go +++ /dev/null @@ -1,31 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -import "strconv" - -func (node NextValueExpr) Fingerprint(ctx FingerprintContext, parentNode Node, parentFieldName string) { - ctx.WriteString("NextValueExpr") - - if node.Seqid != 0 { - ctx.WriteString("seqid") - ctx.WriteString(strconv.Itoa(int(node.Seqid))) - } - - if node.TypeId != 0 { - ctx.WriteString("typeId") - ctx.WriteString(strconv.Itoa(int(node.TypeId))) - } - - if node.Xpr != nil { - subCtx := FingerprintSubContext{} - node.Xpr.Fingerprint(&subCtx, node, "Xpr") - - if len(subCtx.parts) > 0 { - ctx.WriteString("xpr") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } -} diff --git a/nodes/node.go b/nodes/node.go deleted file mode 100644 index 87f80038..00000000 --- a/nodes/node.go +++ /dev/null @@ -1,84 +0,0 @@ -package pg_query - -import ( - "crypto/sha1" - "hash" - "io" - "reflect" - "strings" -) - -type FingerprintContext interface { - WriteString(string) -} - -type FingerprintHashContext struct { - hash hash.Hash -} - -func NewFingerprintHashContext() *FingerprintHashContext { - return &FingerprintHashContext{hash: sha1.New()} -} - -func (ctx FingerprintHashContext) WriteString(str string) { - io.WriteString(ctx.hash, str) -} - -func (ctx FingerprintHashContext) Sum() []byte { - return ctx.hash.Sum(nil) -} - -// ... - -type FingerprintSubContext struct { - parts []string -} - -type FingerprintSubContextSlice []FingerprintSubContext - -func NewFingerprintSubContext() *FingerprintSubContext { - return &FingerprintSubContext{parts: []string{}} -} - -func (ctx *FingerprintSubContext) WriteString(str string) { - ctx.parts = append(ctx.parts, str) -} - -func (ctx FingerprintSubContext) Sum() []string { - return ctx.parts -} - -func (ctx FingerprintSubContext) Equal(other FingerprintSubContext) bool { - return reflect.DeepEqual(ctx, other) -} - -func (p FingerprintSubContextSlice) Len() int { - return len(p) -} - -func (p FingerprintSubContextSlice) Less(i, j int) bool { - left := strings.Join(p[i].parts, "") - right := strings.Join(p[j].parts, "") - return left < right -} - -func (p FingerprintSubContextSlice) Swap(i, j int) { - p[i], p[j] = p[j], p[i] -} - -func (p *FingerprintSubContextSlice) AddIfUnique(ctx FingerprintSubContext) { - for _, existing := range *p { - if ctx.Equal(existing) { - return - } - } - - *p = append(*p, ctx) -} - -// ... - -type Node interface { - Deparse() string - Fingerprint(FingerprintContext, Node, string) -} diff --git a/nodes/node_unmarshal.go b/nodes/node_unmarshal.go deleted file mode 100644 index cb9b4ca8..00000000 --- a/nodes/node_unmarshal.go +++ /dev/null @@ -1,1618 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -import ( - "encoding/json" - "fmt" - "strings" -) - -func UnmarshalNodeJSON(input json.RawMessage) (node Node, err error) { - if input == nil || string(input) == "null" { - return - } - - if strings.HasPrefix(string(input), "[") { - var list List - list.Items, err = UnmarshalNodeArrayJSON(input) - if err != nil { - return - } - node = list - return - } - - var nodeMap map[string]json.RawMessage - - err = json.Unmarshal(input, &nodeMap) - if err != nil { - return - } - - for nodeType, jsonText := range nodeMap { - switch nodeType { - - case "Query": - var outNode Query - err = json.Unmarshal(jsonText, &outNode) - if err != nil { - return - } - node = outNode - case "TypeName": - var outNode TypeName - err = json.Unmarshal(jsonText, &outNode) - if err != nil { - return - } - node = outNode - case "ColumnRef": - var outNode ColumnRef - err = json.Unmarshal(jsonText, &outNode) - if err != nil { - return - } - node = outNode - case "ParamRef": - var outNode ParamRef - err = json.Unmarshal(jsonText, &outNode) - if err != nil { - return - } - node = outNode - case "A_Expr": - var outNode A_Expr - err = json.Unmarshal(jsonText, &outNode) - if err != nil { - return - } - node = outNode - case "A_Const": - var outNode A_Const - err = json.Unmarshal(jsonText, &outNode) - if err != nil { - return - } - node = outNode - case "TypeCast": - var outNode TypeCast - err = json.Unmarshal(jsonText, &outNode) - if err != nil { - return - } - node = outNode - case "CollateClause": - var outNode CollateClause - err = json.Unmarshal(jsonText, &outNode) - if err != nil { - return - } - node = outNode - case "RoleSpec": - var outNode RoleSpec - err = json.Unmarshal(jsonText, &outNode) - if err != nil { - return - } - node = outNode - case "FuncCall": - var outNode FuncCall - err = json.Unmarshal(jsonText, &outNode) - if err != nil { - return - } - node = outNode - case "A_Star": - var outNode A_Star - err = json.Unmarshal(jsonText, &outNode) - if err != nil { - return - } - node = outNode - case "A_Indices": - var outNode A_Indices - err = json.Unmarshal(jsonText, &outNode) - if err != nil { - return - } - node = outNode - case "A_Indirection": - var outNode A_Indirection - err = json.Unmarshal(jsonText, &outNode) - if err != nil { - return - } - node = outNode - case "A_ArrayExpr": - var outNode A_ArrayExpr - err = json.Unmarshal(jsonText, &outNode) - if err != nil { - return - } - node = outNode - case "ResTarget": - var outNode ResTarget - err = json.Unmarshal(jsonText, &outNode) - if err != nil { - return - } - node = outNode - case "MultiAssignRef": - var outNode MultiAssignRef - err = json.Unmarshal(jsonText, &outNode) - if err != nil { - return - } - node = outNode - case "SortBy": - var outNode SortBy - err = json.Unmarshal(jsonText, &outNode) - if err != nil { - return - } - node = outNode - case "WindowDef": - var outNode WindowDef - err = json.Unmarshal(jsonText, &outNode) - if err != nil { - return - } - node = outNode - case "RangeSubselect": - var outNode RangeSubselect - err = json.Unmarshal(jsonText, &outNode) - if err != nil { - return - } - node = outNode - case "RangeFunction": - var outNode RangeFunction - err = json.Unmarshal(jsonText, &outNode) - if err != nil { - return - } - node = outNode - case "RangeTableFunc": - var outNode RangeTableFunc - err = json.Unmarshal(jsonText, &outNode) - if err != nil { - return - } - node = outNode - case "RangeTableFuncCol": - var outNode RangeTableFuncCol - err = json.Unmarshal(jsonText, &outNode) - if err != nil { - return - } - node = outNode - case "RangeTableSample": - var outNode RangeTableSample - err = json.Unmarshal(jsonText, &outNode) - if err != nil { - return - } - node = outNode - case "ColumnDef": - var outNode ColumnDef - err = json.Unmarshal(jsonText, &outNode) - if err != nil { - return - } - node = outNode - case "TableLikeClause": - var outNode TableLikeClause - err = json.Unmarshal(jsonText, &outNode) - if err != nil { - return - } - node = outNode - case "IndexElem": - var outNode IndexElem - err = json.Unmarshal(jsonText, &outNode) - if err != nil { - return - } - node = outNode - case "DefElem": - var outNode DefElem - err = json.Unmarshal(jsonText, &outNode) - if err != nil { - return - } - node = outNode - case "LockingClause": - var outNode LockingClause - err = json.Unmarshal(jsonText, &outNode) - if err != nil { - return - } - node = outNode - case "XmlSerialize": - var outNode XmlSerialize - err = json.Unmarshal(jsonText, &outNode) - if err != nil { - return - } - node = outNode - case "PartitionElem": - var outNode PartitionElem - err = json.Unmarshal(jsonText, &outNode) - if err != nil { - return - } - node = outNode - case "PartitionSpec": - var outNode PartitionSpec - err = json.Unmarshal(jsonText, &outNode) - if err != nil { - return - } - node = outNode - case "PartitionBoundSpec": - var outNode PartitionBoundSpec - err = json.Unmarshal(jsonText, &outNode) - if err != nil { - return - } - node = outNode - case "PartitionRangeDatum": - var outNode PartitionRangeDatum - err = json.Unmarshal(jsonText, &outNode) - if err != nil { - return - } - node = outNode - case "PartitionCmd": - var outNode PartitionCmd - err = json.Unmarshal(jsonText, &outNode) - if err != nil { - return - } - node = outNode - case "RangeTblEntry": - var outNode RangeTblEntry - err = json.Unmarshal(jsonText, &outNode) - if err != nil { - return - } - node = outNode - case "RangeTblFunction": - var outNode RangeTblFunction - err = json.Unmarshal(jsonText, &outNode) - if err != nil { - return - } - node = outNode - case "TableSampleClause": - var outNode TableSampleClause - err = json.Unmarshal(jsonText, &outNode) - if err != nil { - return - } - node = outNode - case "WithCheckOption": - var outNode WithCheckOption - err = json.Unmarshal(jsonText, &outNode) - if err != nil { - return - } - node = outNode - case "SortGroupClause": - var outNode SortGroupClause - err = json.Unmarshal(jsonText, &outNode) - if err != nil { - return - } - node = outNode - case "GroupingSet": - var outNode GroupingSet - err = json.Unmarshal(jsonText, &outNode) - if err != nil { - return - } - node = outNode - case "WindowClause": - var outNode WindowClause - err = json.Unmarshal(jsonText, &outNode) - if err != nil { - return - } - node = outNode - case "RowMarkClause": - var outNode RowMarkClause - err = json.Unmarshal(jsonText, &outNode) - if err != nil { - return - } - node = outNode - case "WithClause": - var outNode WithClause - err = json.Unmarshal(jsonText, &outNode) - if err != nil { - return - } - node = outNode - case "InferClause": - var outNode InferClause - err = json.Unmarshal(jsonText, &outNode) - if err != nil { - return - } - node = outNode - case "OnConflictClause": - var outNode OnConflictClause - err = json.Unmarshal(jsonText, &outNode) - if err != nil { - return - } - node = outNode - case "CommonTableExpr": - var outNode CommonTableExpr - err = json.Unmarshal(jsonText, &outNode) - if err != nil { - return - } - node = outNode - case "TriggerTransition": - var outNode TriggerTransition - err = json.Unmarshal(jsonText, &outNode) - if err != nil { - return - } - node = outNode - case "RawStmt": - var outNode RawStmt - err = json.Unmarshal(jsonText, &outNode) - if err != nil { - return - } - node = outNode - case "InsertStmt": - var outNode InsertStmt - err = json.Unmarshal(jsonText, &outNode) - if err != nil { - return - } - node = outNode - case "DeleteStmt": - var outNode DeleteStmt - err = json.Unmarshal(jsonText, &outNode) - if err != nil { - return - } - node = outNode - case "UpdateStmt": - var outNode UpdateStmt - err = json.Unmarshal(jsonText, &outNode) - if err != nil { - return - } - node = outNode - case "SelectStmt": - var outNode SelectStmt - err = json.Unmarshal(jsonText, &outNode) - if err != nil { - return - } - node = outNode - case "SetOperationStmt": - var outNode SetOperationStmt - err = json.Unmarshal(jsonText, &outNode) - if err != nil { - return - } - node = outNode - case "CreateSchemaStmt": - var outNode CreateSchemaStmt - err = json.Unmarshal(jsonText, &outNode) - if err != nil { - return - } - node = outNode - case "AlterTableStmt": - var outNode AlterTableStmt - err = json.Unmarshal(jsonText, &outNode) - if err != nil { - return - } - node = outNode - case "ReplicaIdentityStmt": - var outNode ReplicaIdentityStmt - err = json.Unmarshal(jsonText, &outNode) - if err != nil { - return - } - node = outNode - case "AlterTableCmd": - var outNode AlterTableCmd - err = json.Unmarshal(jsonText, &outNode) - if err != nil { - return - } - node = outNode - case "AlterCollationStmt": - var outNode AlterCollationStmt - err = json.Unmarshal(jsonText, &outNode) - if err != nil { - return - } - node = outNode - case "AlterDomainStmt": - var outNode AlterDomainStmt - err = json.Unmarshal(jsonText, &outNode) - if err != nil { - return - } - node = outNode - case "GrantStmt": - var outNode GrantStmt - err = json.Unmarshal(jsonText, &outNode) - if err != nil { - return - } - node = outNode - case "ObjectWithArgs": - var outNode ObjectWithArgs - err = json.Unmarshal(jsonText, &outNode) - if err != nil { - return - } - node = outNode - case "AccessPriv": - var outNode AccessPriv - err = json.Unmarshal(jsonText, &outNode) - if err != nil { - return - } - node = outNode - case "GrantRoleStmt": - var outNode GrantRoleStmt - err = json.Unmarshal(jsonText, &outNode) - if err != nil { - return - } - node = outNode - case "AlterDefaultPrivilegesStmt": - var outNode AlterDefaultPrivilegesStmt - err = json.Unmarshal(jsonText, &outNode) - if err != nil { - return - } - node = outNode - case "CopyStmt": - var outNode CopyStmt - err = json.Unmarshal(jsonText, &outNode) - if err != nil { - return - } - node = outNode - case "VariableSetStmt": - var outNode VariableSetStmt - err = json.Unmarshal(jsonText, &outNode) - if err != nil { - return - } - node = outNode - case "VariableShowStmt": - var outNode VariableShowStmt - err = json.Unmarshal(jsonText, &outNode) - if err != nil { - return - } - node = outNode - case "CreateStmt": - var outNode CreateStmt - err = json.Unmarshal(jsonText, &outNode) - if err != nil { - return - } - node = outNode - case "Constraint": - var outNode Constraint - err = json.Unmarshal(jsonText, &outNode) - if err != nil { - return - } - node = outNode - case "CreateTableSpaceStmt": - var outNode CreateTableSpaceStmt - err = json.Unmarshal(jsonText, &outNode) - if err != nil { - return - } - node = outNode - case "DropTableSpaceStmt": - var outNode DropTableSpaceStmt - err = json.Unmarshal(jsonText, &outNode) - if err != nil { - return - } - node = outNode - case "AlterTableSpaceOptionsStmt": - var outNode AlterTableSpaceOptionsStmt - err = json.Unmarshal(jsonText, &outNode) - if err != nil { - return - } - node = outNode - case "AlterTableMoveAllStmt": - var outNode AlterTableMoveAllStmt - err = json.Unmarshal(jsonText, &outNode) - if err != nil { - return - } - node = outNode - case "CreateExtensionStmt": - var outNode CreateExtensionStmt - err = json.Unmarshal(jsonText, &outNode) - if err != nil { - return - } - node = outNode - case "AlterExtensionStmt": - var outNode AlterExtensionStmt - err = json.Unmarshal(jsonText, &outNode) - if err != nil { - return - } - node = outNode - case "AlterExtensionContentsStmt": - var outNode AlterExtensionContentsStmt - err = json.Unmarshal(jsonText, &outNode) - if err != nil { - return - } - node = outNode - case "CreateFdwStmt": - var outNode CreateFdwStmt - err = json.Unmarshal(jsonText, &outNode) - if err != nil { - return - } - node = outNode - case "AlterFdwStmt": - var outNode AlterFdwStmt - err = json.Unmarshal(jsonText, &outNode) - if err != nil { - return - } - node = outNode - case "CreateForeignServerStmt": - var outNode CreateForeignServerStmt - err = json.Unmarshal(jsonText, &outNode) - if err != nil { - return - } - node = outNode - case "AlterForeignServerStmt": - var outNode AlterForeignServerStmt - err = json.Unmarshal(jsonText, &outNode) - if err != nil { - return - } - node = outNode - case "CreateForeignTableStmt": - var outNode CreateForeignTableStmt - err = json.Unmarshal(jsonText, &outNode) - if err != nil { - return - } - node = outNode - case "CreateUserMappingStmt": - var outNode CreateUserMappingStmt - err = json.Unmarshal(jsonText, &outNode) - if err != nil { - return - } - node = outNode - case "AlterUserMappingStmt": - var outNode AlterUserMappingStmt - err = json.Unmarshal(jsonText, &outNode) - if err != nil { - return - } - node = outNode - case "DropUserMappingStmt": - var outNode DropUserMappingStmt - err = json.Unmarshal(jsonText, &outNode) - if err != nil { - return - } - node = outNode - case "ImportForeignSchemaStmt": - var outNode ImportForeignSchemaStmt - err = json.Unmarshal(jsonText, &outNode) - if err != nil { - return - } - node = outNode - case "CreatePolicyStmt": - var outNode CreatePolicyStmt - err = json.Unmarshal(jsonText, &outNode) - if err != nil { - return - } - node = outNode - case "AlterPolicyStmt": - var outNode AlterPolicyStmt - err = json.Unmarshal(jsonText, &outNode) - if err != nil { - return - } - node = outNode - case "CreateAmStmt": - var outNode CreateAmStmt - err = json.Unmarshal(jsonText, &outNode) - if err != nil { - return - } - node = outNode - case "CreateTrigStmt": - var outNode CreateTrigStmt - err = json.Unmarshal(jsonText, &outNode) - if err != nil { - return - } - node = outNode - case "CreateEventTrigStmt": - var outNode CreateEventTrigStmt - err = json.Unmarshal(jsonText, &outNode) - if err != nil { - return - } - node = outNode - case "AlterEventTrigStmt": - var outNode AlterEventTrigStmt - err = json.Unmarshal(jsonText, &outNode) - if err != nil { - return - } - node = outNode - case "CreatePLangStmt": - var outNode CreatePLangStmt - err = json.Unmarshal(jsonText, &outNode) - if err != nil { - return - } - node = outNode - case "CreateRoleStmt": - var outNode CreateRoleStmt - err = json.Unmarshal(jsonText, &outNode) - if err != nil { - return - } - node = outNode - case "AlterRoleStmt": - var outNode AlterRoleStmt - err = json.Unmarshal(jsonText, &outNode) - if err != nil { - return - } - node = outNode - case "AlterRoleSetStmt": - var outNode AlterRoleSetStmt - err = json.Unmarshal(jsonText, &outNode) - if err != nil { - return - } - node = outNode - case "DropRoleStmt": - var outNode DropRoleStmt - err = json.Unmarshal(jsonText, &outNode) - if err != nil { - return - } - node = outNode - case "CreateSeqStmt": - var outNode CreateSeqStmt - err = json.Unmarshal(jsonText, &outNode) - if err != nil { - return - } - node = outNode - case "AlterSeqStmt": - var outNode AlterSeqStmt - err = json.Unmarshal(jsonText, &outNode) - if err != nil { - return - } - node = outNode - case "DefineStmt": - var outNode DefineStmt - err = json.Unmarshal(jsonText, &outNode) - if err != nil { - return - } - node = outNode - case "CreateDomainStmt": - var outNode CreateDomainStmt - err = json.Unmarshal(jsonText, &outNode) - if err != nil { - return - } - node = outNode - case "CreateOpClassStmt": - var outNode CreateOpClassStmt - err = json.Unmarshal(jsonText, &outNode) - if err != nil { - return - } - node = outNode - case "CreateOpClassItem": - var outNode CreateOpClassItem - err = json.Unmarshal(jsonText, &outNode) - if err != nil { - return - } - node = outNode - case "CreateOpFamilyStmt": - var outNode CreateOpFamilyStmt - err = json.Unmarshal(jsonText, &outNode) - if err != nil { - return - } - node = outNode - case "AlterOpFamilyStmt": - var outNode AlterOpFamilyStmt - err = json.Unmarshal(jsonText, &outNode) - if err != nil { - return - } - node = outNode - case "DropStmt": - var outNode DropStmt - err = json.Unmarshal(jsonText, &outNode) - if err != nil { - return - } - node = outNode - case "TruncateStmt": - var outNode TruncateStmt - err = json.Unmarshal(jsonText, &outNode) - if err != nil { - return - } - node = outNode - case "CommentStmt": - var outNode CommentStmt - err = json.Unmarshal(jsonText, &outNode) - if err != nil { - return - } - node = outNode - case "SecLabelStmt": - var outNode SecLabelStmt - err = json.Unmarshal(jsonText, &outNode) - if err != nil { - return - } - node = outNode - case "DeclareCursorStmt": - var outNode DeclareCursorStmt - err = json.Unmarshal(jsonText, &outNode) - if err != nil { - return - } - node = outNode - case "ClosePortalStmt": - var outNode ClosePortalStmt - err = json.Unmarshal(jsonText, &outNode) - if err != nil { - return - } - node = outNode - case "FetchStmt": - var outNode FetchStmt - err = json.Unmarshal(jsonText, &outNode) - if err != nil { - return - } - node = outNode - case "IndexStmt": - var outNode IndexStmt - err = json.Unmarshal(jsonText, &outNode) - if err != nil { - return - } - node = outNode - case "CreateStatsStmt": - var outNode CreateStatsStmt - err = json.Unmarshal(jsonText, &outNode) - if err != nil { - return - } - node = outNode - case "CreateFunctionStmt": - var outNode CreateFunctionStmt - err = json.Unmarshal(jsonText, &outNode) - if err != nil { - return - } - node = outNode - case "FunctionParameter": - var outNode FunctionParameter - err = json.Unmarshal(jsonText, &outNode) - if err != nil { - return - } - node = outNode - case "AlterFunctionStmt": - var outNode AlterFunctionStmt - err = json.Unmarshal(jsonText, &outNode) - if err != nil { - return - } - node = outNode - case "DoStmt": - var outNode DoStmt - err = json.Unmarshal(jsonText, &outNode) - if err != nil { - return - } - node = outNode - case "InlineCodeBlock": - var outNode InlineCodeBlock - err = json.Unmarshal(jsonText, &outNode) - if err != nil { - return - } - node = outNode - case "RenameStmt": - var outNode RenameStmt - err = json.Unmarshal(jsonText, &outNode) - if err != nil { - return - } - node = outNode - case "AlterObjectDependsStmt": - var outNode AlterObjectDependsStmt - err = json.Unmarshal(jsonText, &outNode) - if err != nil { - return - } - node = outNode - case "AlterObjectSchemaStmt": - var outNode AlterObjectSchemaStmt - err = json.Unmarshal(jsonText, &outNode) - if err != nil { - return - } - node = outNode - case "AlterOwnerStmt": - var outNode AlterOwnerStmt - err = json.Unmarshal(jsonText, &outNode) - if err != nil { - return - } - node = outNode - case "AlterOperatorStmt": - var outNode AlterOperatorStmt - err = json.Unmarshal(jsonText, &outNode) - if err != nil { - return - } - node = outNode - case "RuleStmt": - var outNode RuleStmt - err = json.Unmarshal(jsonText, &outNode) - if err != nil { - return - } - node = outNode - case "NotifyStmt": - var outNode NotifyStmt - err = json.Unmarshal(jsonText, &outNode) - if err != nil { - return - } - node = outNode - case "ListenStmt": - var outNode ListenStmt - err = json.Unmarshal(jsonText, &outNode) - if err != nil { - return - } - node = outNode - case "UnlistenStmt": - var outNode UnlistenStmt - err = json.Unmarshal(jsonText, &outNode) - if err != nil { - return - } - node = outNode - case "TransactionStmt": - var outNode TransactionStmt - err = json.Unmarshal(jsonText, &outNode) - if err != nil { - return - } - node = outNode - case "CompositeTypeStmt": - var outNode CompositeTypeStmt - err = json.Unmarshal(jsonText, &outNode) - if err != nil { - return - } - node = outNode - case "CreateEnumStmt": - var outNode CreateEnumStmt - err = json.Unmarshal(jsonText, &outNode) - if err != nil { - return - } - node = outNode - case "CreateRangeStmt": - var outNode CreateRangeStmt - err = json.Unmarshal(jsonText, &outNode) - if err != nil { - return - } - node = outNode - case "AlterEnumStmt": - var outNode AlterEnumStmt - err = json.Unmarshal(jsonText, &outNode) - if err != nil { - return - } - node = outNode - case "ViewStmt": - var outNode ViewStmt - err = json.Unmarshal(jsonText, &outNode) - if err != nil { - return - } - node = outNode - case "LoadStmt": - var outNode LoadStmt - err = json.Unmarshal(jsonText, &outNode) - if err != nil { - return - } - node = outNode - case "CreatedbStmt": - var outNode CreatedbStmt - err = json.Unmarshal(jsonText, &outNode) - if err != nil { - return - } - node = outNode - case "AlterDatabaseStmt": - var outNode AlterDatabaseStmt - err = json.Unmarshal(jsonText, &outNode) - if err != nil { - return - } - node = outNode - case "AlterDatabaseSetStmt": - var outNode AlterDatabaseSetStmt - err = json.Unmarshal(jsonText, &outNode) - if err != nil { - return - } - node = outNode - case "DropdbStmt": - var outNode DropdbStmt - err = json.Unmarshal(jsonText, &outNode) - if err != nil { - return - } - node = outNode - case "AlterSystemStmt": - var outNode AlterSystemStmt - err = json.Unmarshal(jsonText, &outNode) - if err != nil { - return - } - node = outNode - case "ClusterStmt": - var outNode ClusterStmt - err = json.Unmarshal(jsonText, &outNode) - if err != nil { - return - } - node = outNode - case "VacuumStmt": - var outNode VacuumStmt - err = json.Unmarshal(jsonText, &outNode) - if err != nil { - return - } - node = outNode - case "ExplainStmt": - var outNode ExplainStmt - err = json.Unmarshal(jsonText, &outNode) - if err != nil { - return - } - node = outNode - case "CreateTableAsStmt": - var outNode CreateTableAsStmt - err = json.Unmarshal(jsonText, &outNode) - if err != nil { - return - } - node = outNode - case "RefreshMatViewStmt": - var outNode RefreshMatViewStmt - err = json.Unmarshal(jsonText, &outNode) - if err != nil { - return - } - node = outNode - case "CheckPointStmt": - var outNode CheckPointStmt - err = json.Unmarshal(jsonText, &outNode) - if err != nil { - return - } - node = outNode - case "DiscardStmt": - var outNode DiscardStmt - err = json.Unmarshal(jsonText, &outNode) - if err != nil { - return - } - node = outNode - case "LockStmt": - var outNode LockStmt - err = json.Unmarshal(jsonText, &outNode) - if err != nil { - return - } - node = outNode - case "ConstraintsSetStmt": - var outNode ConstraintsSetStmt - err = json.Unmarshal(jsonText, &outNode) - if err != nil { - return - } - node = outNode - case "ReindexStmt": - var outNode ReindexStmt - err = json.Unmarshal(jsonText, &outNode) - if err != nil { - return - } - node = outNode - case "CreateConversionStmt": - var outNode CreateConversionStmt - err = json.Unmarshal(jsonText, &outNode) - if err != nil { - return - } - node = outNode - case "CreateCastStmt": - var outNode CreateCastStmt - err = json.Unmarshal(jsonText, &outNode) - if err != nil { - return - } - node = outNode - case "CreateTransformStmt": - var outNode CreateTransformStmt - err = json.Unmarshal(jsonText, &outNode) - if err != nil { - return - } - node = outNode - case "PrepareStmt": - var outNode PrepareStmt - err = json.Unmarshal(jsonText, &outNode) - if err != nil { - return - } - node = outNode - case "ExecuteStmt": - var outNode ExecuteStmt - err = json.Unmarshal(jsonText, &outNode) - if err != nil { - return - } - node = outNode - case "DeallocateStmt": - var outNode DeallocateStmt - err = json.Unmarshal(jsonText, &outNode) - if err != nil { - return - } - node = outNode - case "DropOwnedStmt": - var outNode DropOwnedStmt - err = json.Unmarshal(jsonText, &outNode) - if err != nil { - return - } - node = outNode - case "ReassignOwnedStmt": - var outNode ReassignOwnedStmt - err = json.Unmarshal(jsonText, &outNode) - if err != nil { - return - } - node = outNode - case "AlterTSDictionaryStmt": - var outNode AlterTSDictionaryStmt - err = json.Unmarshal(jsonText, &outNode) - if err != nil { - return - } - node = outNode - case "AlterTSConfigurationStmt": - var outNode AlterTSConfigurationStmt - err = json.Unmarshal(jsonText, &outNode) - if err != nil { - return - } - node = outNode - case "CreatePublicationStmt": - var outNode CreatePublicationStmt - err = json.Unmarshal(jsonText, &outNode) - if err != nil { - return - } - node = outNode - case "AlterPublicationStmt": - var outNode AlterPublicationStmt - err = json.Unmarshal(jsonText, &outNode) - if err != nil { - return - } - node = outNode - case "CreateSubscriptionStmt": - var outNode CreateSubscriptionStmt - err = json.Unmarshal(jsonText, &outNode) - if err != nil { - return - } - node = outNode - case "AlterSubscriptionStmt": - var outNode AlterSubscriptionStmt - err = json.Unmarshal(jsonText, &outNode) - if err != nil { - return - } - node = outNode - case "DropSubscriptionStmt": - var outNode DropSubscriptionStmt - err = json.Unmarshal(jsonText, &outNode) - if err != nil { - return - } - node = outNode - case "Alias": - var outNode Alias - err = json.Unmarshal(jsonText, &outNode) - if err != nil { - return - } - node = outNode - case "RangeVar": - var outNode RangeVar - err = json.Unmarshal(jsonText, &outNode) - if err != nil { - return - } - node = outNode - case "TableFunc": - var outNode TableFunc - err = json.Unmarshal(jsonText, &outNode) - if err != nil { - return - } - node = outNode - case "IntoClause": - var outNode IntoClause - err = json.Unmarshal(jsonText, &outNode) - if err != nil { - return - } - node = outNode - case "Expr": - var outNode Expr - err = json.Unmarshal(jsonText, &outNode) - if err != nil { - return - } - node = outNode - case "Var": - var outNode Var - err = json.Unmarshal(jsonText, &outNode) - if err != nil { - return - } - node = outNode - case "Const": - var outNode Const - err = json.Unmarshal(jsonText, &outNode) - if err != nil { - return - } - node = outNode - case "Param": - var outNode Param - err = json.Unmarshal(jsonText, &outNode) - if err != nil { - return - } - node = outNode - case "Aggref": - var outNode Aggref - err = json.Unmarshal(jsonText, &outNode) - if err != nil { - return - } - node = outNode - case "GroupingFunc": - var outNode GroupingFunc - err = json.Unmarshal(jsonText, &outNode) - if err != nil { - return - } - node = outNode - case "WindowFunc": - var outNode WindowFunc - err = json.Unmarshal(jsonText, &outNode) - if err != nil { - return - } - node = outNode - case "ArrayRef": - var outNode ArrayRef - err = json.Unmarshal(jsonText, &outNode) - if err != nil { - return - } - node = outNode - case "FuncExpr": - var outNode FuncExpr - err = json.Unmarshal(jsonText, &outNode) - if err != nil { - return - } - node = outNode - case "NamedArgExpr": - var outNode NamedArgExpr - err = json.Unmarshal(jsonText, &outNode) - if err != nil { - return - } - node = outNode - case "OpExpr": - var outNode OpExpr - err = json.Unmarshal(jsonText, &outNode) - if err != nil { - return - } - node = outNode - case "ScalarArrayOpExpr": - var outNode ScalarArrayOpExpr - err = json.Unmarshal(jsonText, &outNode) - if err != nil { - return - } - node = outNode - case "BoolExpr": - var outNode BoolExpr - err = json.Unmarshal(jsonText, &outNode) - if err != nil { - return - } - node = outNode - case "SubLink": - var outNode SubLink - err = json.Unmarshal(jsonText, &outNode) - if err != nil { - return - } - node = outNode - case "SubPlan": - var outNode SubPlan - err = json.Unmarshal(jsonText, &outNode) - if err != nil { - return - } - node = outNode - case "AlternativeSubPlan": - var outNode AlternativeSubPlan - err = json.Unmarshal(jsonText, &outNode) - if err != nil { - return - } - node = outNode - case "FieldSelect": - var outNode FieldSelect - err = json.Unmarshal(jsonText, &outNode) - if err != nil { - return - } - node = outNode - case "FieldStore": - var outNode FieldStore - err = json.Unmarshal(jsonText, &outNode) - if err != nil { - return - } - node = outNode - case "RelabelType": - var outNode RelabelType - err = json.Unmarshal(jsonText, &outNode) - if err != nil { - return - } - node = outNode - case "CoerceViaIO": - var outNode CoerceViaIO - err = json.Unmarshal(jsonText, &outNode) - if err != nil { - return - } - node = outNode - case "ArrayCoerceExpr": - var outNode ArrayCoerceExpr - err = json.Unmarshal(jsonText, &outNode) - if err != nil { - return - } - node = outNode - case "ConvertRowtypeExpr": - var outNode ConvertRowtypeExpr - err = json.Unmarshal(jsonText, &outNode) - if err != nil { - return - } - node = outNode - case "CollateExpr": - var outNode CollateExpr - err = json.Unmarshal(jsonText, &outNode) - if err != nil { - return - } - node = outNode - case "CaseExpr": - var outNode CaseExpr - err = json.Unmarshal(jsonText, &outNode) - if err != nil { - return - } - node = outNode - case "CaseWhen": - var outNode CaseWhen - err = json.Unmarshal(jsonText, &outNode) - if err != nil { - return - } - node = outNode - case "CaseTestExpr": - var outNode CaseTestExpr - err = json.Unmarshal(jsonText, &outNode) - if err != nil { - return - } - node = outNode - case "ArrayExpr": - var outNode ArrayExpr - err = json.Unmarshal(jsonText, &outNode) - if err != nil { - return - } - node = outNode - case "RowExpr": - var outNode RowExpr - err = json.Unmarshal(jsonText, &outNode) - if err != nil { - return - } - node = outNode - case "RowCompareExpr": - var outNode RowCompareExpr - err = json.Unmarshal(jsonText, &outNode) - if err != nil { - return - } - node = outNode - case "CoalesceExpr": - var outNode CoalesceExpr - err = json.Unmarshal(jsonText, &outNode) - if err != nil { - return - } - node = outNode - case "MinMaxExpr": - var outNode MinMaxExpr - err = json.Unmarshal(jsonText, &outNode) - if err != nil { - return - } - node = outNode - case "SQLValueFunction": - var outNode SQLValueFunction - err = json.Unmarshal(jsonText, &outNode) - if err != nil { - return - } - node = outNode - case "XmlExpr": - var outNode XmlExpr - err = json.Unmarshal(jsonText, &outNode) - if err != nil { - return - } - node = outNode - case "NullTest": - var outNode NullTest - err = json.Unmarshal(jsonText, &outNode) - if err != nil { - return - } - node = outNode - case "BooleanTest": - var outNode BooleanTest - err = json.Unmarshal(jsonText, &outNode) - if err != nil { - return - } - node = outNode - case "CoerceToDomain": - var outNode CoerceToDomain - err = json.Unmarshal(jsonText, &outNode) - if err != nil { - return - } - node = outNode - case "CoerceToDomainValue": - var outNode CoerceToDomainValue - err = json.Unmarshal(jsonText, &outNode) - if err != nil { - return - } - node = outNode - case "SetToDefault": - var outNode SetToDefault - err = json.Unmarshal(jsonText, &outNode) - if err != nil { - return - } - node = outNode - case "CurrentOfExpr": - var outNode CurrentOfExpr - err = json.Unmarshal(jsonText, &outNode) - if err != nil { - return - } - node = outNode - case "NextValueExpr": - var outNode NextValueExpr - err = json.Unmarshal(jsonText, &outNode) - if err != nil { - return - } - node = outNode - case "InferenceElem": - var outNode InferenceElem - err = json.Unmarshal(jsonText, &outNode) - if err != nil { - return - } - node = outNode - case "TargetEntry": - var outNode TargetEntry - err = json.Unmarshal(jsonText, &outNode) - if err != nil { - return - } - node = outNode - case "RangeTblRef": - var outNode RangeTblRef - err = json.Unmarshal(jsonText, &outNode) - if err != nil { - return - } - node = outNode - case "JoinExpr": - var outNode JoinExpr - err = json.Unmarshal(jsonText, &outNode) - if err != nil { - return - } - node = outNode - case "FromExpr": - var outNode FromExpr - err = json.Unmarshal(jsonText, &outNode) - if err != nil { - return - } - node = outNode - case "OnConflictExpr": - var outNode OnConflictExpr - err = json.Unmarshal(jsonText, &outNode) - if err != nil { - return - } - node = outNode - case "ParamExternData": - var outNode ParamExternData - err = json.Unmarshal(jsonText, &outNode) - if err != nil { - return - } - node = outNode - case "ParamListInfoData": - var outNode ParamListInfoData - err = json.Unmarshal(jsonText, &outNode) - if err != nil { - return - } - node = outNode - case "ParamExecData": - var outNode ParamExecData - err = json.Unmarshal(jsonText, &outNode) - if err != nil { - return - } - node = outNode - case "varatt_external": - var outNode varatt_external - err = json.Unmarshal(jsonText, &outNode) - if err != nil { - return - } - node = outNode - case "BlockIdData": - var outNode BlockIdData - err = json.Unmarshal(jsonText, &outNode) - if err != nil { - return - } - node = outNode - case "Integer": - var outNode Integer - err = json.Unmarshal(jsonText, &outNode) - if err != nil { - return - } - node = outNode - case "Float": - var outNode Float - err = json.Unmarshal(jsonText, &outNode) - if err != nil { - return - } - node = outNode - case "String": - var outNode String - err = json.Unmarshal(jsonText, &outNode) - if err != nil { - return - } - node = outNode - case "BitString": - var outNode BitString - err = json.Unmarshal(jsonText, &outNode) - if err != nil { - return - } - node = outNode - case "Null": - var outNode Null - err = json.Unmarshal(jsonText, &outNode) - if err != nil { - return - } - node = outNode - case "List": - var outNode List - err = json.Unmarshal(jsonText, &outNode) - if err != nil { - return - } - node = outNode - default: - err = fmt.Errorf("Could not unmarshal node of type %s and content %s", nodeType, jsonText) - return - } - } - - return -} diff --git a/nodes/node_unmarshal_helper.go b/nodes/node_unmarshal_helper.go deleted file mode 100644 index 800d7238..00000000 --- a/nodes/node_unmarshal_helper.go +++ /dev/null @@ -1,59 +0,0 @@ -package pg_query - -import "encoding/json" - -func UnmarshalNodePtrJSON(input json.RawMessage) (nodePtr *Node, err error) { - if input == nil { - return - } - - node, err := UnmarshalNodeJSON(input) - if err != nil { - return - } - - nodePtr = &node - return -} - -func UnmarshalNodeArrayJSON(input json.RawMessage) (nodes []Node, err error) { - var items []json.RawMessage - - err = json.Unmarshal(input, &items) - if err != nil { - return - } - - for _, itemJSON := range items { - var node Node - node, err = UnmarshalNodeJSON(itemJSON) - if err != nil { - return - } - - nodes = append(nodes, node) - } - - return -} - -func UnmarshalNodeArrayArrayJSON(input json.RawMessage) (nodeLists [][]Node, err error) { - var items []json.RawMessage - - err = json.Unmarshal(input, &items) - if err != nil { - return - } - - for _, itemJSON := range items { - var nodeList []Node - nodeList, err = UnmarshalNodeArrayJSON(itemJSON) - if err != nil { - return - } - - nodeLists = append(nodeLists, nodeList) - } - - return -} diff --git a/nodes/notify_stmt.go b/nodes/notify_stmt.go deleted file mode 100644 index 27226ba6..00000000 --- a/nodes/notify_stmt.go +++ /dev/null @@ -1,46 +0,0 @@ -// Auto-generated from postgres/src/include/nodes/parsenodes.h - DO NOT EDIT - -package pg_query - -import "encoding/json" - -/* ---------------------- - * Notify Statement - * ---------------------- - */ -type NotifyStmt struct { - Conditionname *string `json:"conditionname"` /* condition name to notify */ - Payload *string `json:"payload"` /* the payload string, or NULL if none */ -} - -func (node NotifyStmt) MarshalJSON() ([]byte, error) { - type NotifyStmtMarshalAlias NotifyStmt - return json.Marshal(map[string]interface{}{ - "NotifyStmt": (*NotifyStmtMarshalAlias)(&node), - }) -} - -func (node *NotifyStmt) UnmarshalJSON(input []byte) (err error) { - var fields map[string]json.RawMessage - - err = json.Unmarshal(input, &fields) - if err != nil { - return - } - - if fields["conditionname"] != nil { - err = json.Unmarshal(fields["conditionname"], &node.Conditionname) - if err != nil { - return - } - } - - if fields["payload"] != nil { - err = json.Unmarshal(fields["payload"], &node.Payload) - if err != nil { - return - } - } - - return -} diff --git a/nodes/notify_stmt_deparse.go b/nodes/notify_stmt_deparse.go deleted file mode 100644 index 9c937b25..00000000 --- a/nodes/notify_stmt_deparse.go +++ /dev/null @@ -1,7 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -func (node NotifyStmt) Deparse() string { - panic("Not Implemented") -} diff --git a/nodes/notify_stmt_fingerprint.go b/nodes/notify_stmt_fingerprint.go deleted file mode 100644 index 642229e9..00000000 --- a/nodes/notify_stmt_fingerprint.go +++ /dev/null @@ -1,17 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -func (node NotifyStmt) Fingerprint(ctx FingerprintContext, parentNode Node, parentFieldName string) { - ctx.WriteString("NotifyStmt") - - if node.Conditionname != nil { - ctx.WriteString("conditionname") - ctx.WriteString(*node.Conditionname) - } - - if node.Payload != nil { - ctx.WriteString("payload") - ctx.WriteString(*node.Payload) - } -} diff --git a/nodes/null.go b/nodes/null.go deleted file mode 100644 index c2187949..00000000 --- a/nodes/null.go +++ /dev/null @@ -1,26 +0,0 @@ -// Auto-generated from postgres/src/include/nodes/value.h - DO NOT EDIT - -package pg_query - -import "encoding/json" - -type Null struct { -} - -func (node Null) MarshalJSON() ([]byte, error) { - type NullMarshalAlias Null - return json.Marshal(map[string]interface{}{ - "Null": (*NullMarshalAlias)(&node), - }) -} - -func (node *Null) UnmarshalJSON(input []byte) (err error) { - var fields map[string]json.RawMessage - - err = json.Unmarshal(input, &fields) - if err != nil { - return - } - - return -} diff --git a/nodes/null_deparse.go b/nodes/null_deparse.go deleted file mode 100644 index 93bcac7f..00000000 --- a/nodes/null_deparse.go +++ /dev/null @@ -1,7 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -func (node Null) Deparse() string { - panic("Not Implemented") -} diff --git a/nodes/null_fingerprint.go b/nodes/null_fingerprint.go deleted file mode 100644 index a338dd0d..00000000 --- a/nodes/null_fingerprint.go +++ /dev/null @@ -1,7 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -func (node Null) Fingerprint(ctx FingerprintContext, parentNode Node, parentFieldName string) { - // Intentionally ignoring all fields for fingerprinting -} diff --git a/nodes/null_test_deparse.go b/nodes/null_test_deparse.go deleted file mode 100644 index 5aeb2685..00000000 --- a/nodes/null_test_deparse.go +++ /dev/null @@ -1,7 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -func (node NullTest) Deparse() string { - panic("Not Implemented") -} diff --git a/nodes/null_test_expr.go b/nodes/null_test_expr.go deleted file mode 100644 index bafe2d99..00000000 --- a/nodes/null_test_expr.go +++ /dev/null @@ -1,84 +0,0 @@ -// Auto-generated from postgres/src/include/nodes/primnodes.h - DO NOT EDIT - -package pg_query - -import "encoding/json" - -/* ---------------- - * NullTest - * - * NullTest represents the operation of testing a value for NULLness. - * The appropriate test is performed and returned as a boolean Datum. - * - * When argisrow is false, this simply represents a test for the null value. - * - * When argisrow is true, the input expression must yield a rowtype, and - * the node implements "row IS [NOT] NULL" per the SQL standard. This - * includes checking individual fields for NULLness when the row datum - * itself isn't NULL. - * - * NOTE: the combination of a rowtype input and argisrow==false does NOT - * correspond to the SQL notation "row IS [NOT] NULL"; instead, this case - * represents the SQL notation "row IS [NOT] DISTINCT FROM NULL". - * ---------------- - */ -type NullTest struct { - Xpr Node `json:"xpr"` - Arg Node `json:"arg"` /* input expression */ - Nulltesttype NullTestType `json:"nulltesttype"` /* IS NULL, IS NOT NULL */ - Argisrow bool `json:"argisrow"` /* T to perform field-by-field null checks */ - Location int `json:"location"` /* token location, or -1 if unknown */ -} - -func (node NullTest) MarshalJSON() ([]byte, error) { - type NullTestMarshalAlias NullTest - return json.Marshal(map[string]interface{}{ - "NullTest": (*NullTestMarshalAlias)(&node), - }) -} - -func (node *NullTest) UnmarshalJSON(input []byte) (err error) { - var fields map[string]json.RawMessage - - err = json.Unmarshal(input, &fields) - if err != nil { - return - } - - if fields["xpr"] != nil { - node.Xpr, err = UnmarshalNodeJSON(fields["xpr"]) - if err != nil { - return - } - } - - if fields["arg"] != nil { - node.Arg, err = UnmarshalNodeJSON(fields["arg"]) - if err != nil { - return - } - } - - if fields["nulltesttype"] != nil { - err = json.Unmarshal(fields["nulltesttype"], &node.Nulltesttype) - if err != nil { - return - } - } - - if fields["argisrow"] != nil { - err = json.Unmarshal(fields["argisrow"], &node.Argisrow) - if err != nil { - return - } - } - - if fields["location"] != nil { - err = json.Unmarshal(fields["location"], &node.Location) - if err != nil { - return - } - } - - return -} diff --git a/nodes/null_test_fingerprint.go b/nodes/null_test_fingerprint.go deleted file mode 100644 index d0591b2b..00000000 --- a/nodes/null_test_fingerprint.go +++ /dev/null @@ -1,45 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -import "strconv" - -func (node NullTest) Fingerprint(ctx FingerprintContext, parentNode Node, parentFieldName string) { - ctx.WriteString("NullTest") - - if node.Arg != nil { - subCtx := FingerprintSubContext{} - node.Arg.Fingerprint(&subCtx, node, "Arg") - - if len(subCtx.parts) > 0 { - ctx.WriteString("arg") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if node.Argisrow { - ctx.WriteString("argisrow") - ctx.WriteString(strconv.FormatBool(node.Argisrow)) - } - - // Intentionally ignoring node.Location for fingerprinting - - if int(node.Nulltesttype) != 0 { - ctx.WriteString("nulltesttype") - ctx.WriteString(strconv.Itoa(int(node.Nulltesttype))) - } - - if node.Xpr != nil { - subCtx := FingerprintSubContext{} - node.Xpr.Fingerprint(&subCtx, node, "Xpr") - - if len(subCtx.parts) > 0 { - ctx.WriteString("xpr") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } -} diff --git a/nodes/null_test_type.go b/nodes/null_test_type.go deleted file mode 100644 index bd6b144b..00000000 --- a/nodes/null_test_type.go +++ /dev/null @@ -1,28 +0,0 @@ -// Auto-generated from postgres/src/include/nodes/primnodes.h - DO NOT EDIT - -package pg_query - -/* ---------------- - * NullTest - * - * NullTest represents the operation of testing a value for NULLness. - * The appropriate test is performed and returned as a boolean Datum. - * - * When argisrow is false, this simply represents a test for the null value. - * - * When argisrow is true, the input expression must yield a rowtype, and - * the node implements "row IS [NOT] NULL" per the SQL standard. This - * includes checking individual fields for NULLness when the row datum - * itself isn't NULL. - * - * NOTE: the combination of a rowtype input and argisrow==false does NOT - * correspond to the SQL notation "row IS [NOT] NULL"; instead, this case - * represents the SQL notation "row IS [NOT] DISTINCT FROM NULL". - * ---------------- - */ -type NullTestType uint - -const ( - IS_NULL NullTestType = iota - IS_NOT_NULL -) diff --git a/nodes/object_type.go b/nodes/object_type.go deleted file mode 100644 index 5746cf7e..00000000 --- a/nodes/object_type.go +++ /dev/null @@ -1,61 +0,0 @@ -// Auto-generated from postgres/src/include/nodes/parsenodes.h - DO NOT EDIT - -package pg_query - -/* - * When a command can act on several kinds of objects with only one - * parse structure required, use these constants to designate the - * object type. Note that commands typically don't support all the types. - */ -type ObjectType uint - -const ( - OBJECT_ACCESS_METHOD ObjectType = iota - OBJECT_AGGREGATE - OBJECT_AMOP - OBJECT_AMPROC - OBJECT_ATTRIBUTE /* type's attribute, when distinct from column */ - OBJECT_CAST - OBJECT_COLUMN - OBJECT_COLLATION - OBJECT_CONVERSION - OBJECT_DATABASE - OBJECT_DEFAULT - OBJECT_DEFACL - OBJECT_DOMAIN - OBJECT_DOMCONSTRAINT - OBJECT_EVENT_TRIGGER - OBJECT_EXTENSION - OBJECT_FDW - OBJECT_FOREIGN_SERVER - OBJECT_FOREIGN_TABLE - OBJECT_FUNCTION - OBJECT_INDEX - OBJECT_LANGUAGE - OBJECT_LARGEOBJECT - OBJECT_MATVIEW - OBJECT_OPCLASS - OBJECT_OPERATOR - OBJECT_OPFAMILY - OBJECT_POLICY - OBJECT_PUBLICATION - OBJECT_PUBLICATION_REL - OBJECT_ROLE - OBJECT_RULE - OBJECT_SCHEMA - OBJECT_SEQUENCE - OBJECT_SUBSCRIPTION - OBJECT_STATISTIC_EXT - OBJECT_TABCONSTRAINT - OBJECT_TABLE - OBJECT_TABLESPACE - OBJECT_TRANSFORM - OBJECT_TRIGGER - OBJECT_TSCONFIGURATION - OBJECT_TSDICTIONARY - OBJECT_TSPARSER - OBJECT_TSTEMPLATE - OBJECT_TYPE - OBJECT_USER_MAPPING - OBJECT_VIEW -) diff --git a/nodes/object_with_args.go b/nodes/object_with_args.go deleted file mode 100644 index 8141beb7..00000000 --- a/nodes/object_with_args.go +++ /dev/null @@ -1,57 +0,0 @@ -// Auto-generated from postgres/src/include/nodes/parsenodes.h - DO NOT EDIT - -package pg_query - -import "encoding/json" - -/* - * Note: ObjectWithArgs carries only the types of the input parameters of the - * function. So it is sufficient to identify an existing function, but it - * is not enough info to define a function nor to call it. - */ -type ObjectWithArgs struct { - Objname List `json:"objname"` /* qualified name of function/operator */ - Objargs List `json:"objargs"` /* list of Typename nodes */ - ArgsUnspecified bool `json:"args_unspecified"` /* argument list was omitted, so name must - * be unique (note that objargs == NIL - * means zero args) */ -} - -func (node ObjectWithArgs) MarshalJSON() ([]byte, error) { - type ObjectWithArgsMarshalAlias ObjectWithArgs - return json.Marshal(map[string]interface{}{ - "ObjectWithArgs": (*ObjectWithArgsMarshalAlias)(&node), - }) -} - -func (node *ObjectWithArgs) UnmarshalJSON(input []byte) (err error) { - var fields map[string]json.RawMessage - - err = json.Unmarshal(input, &fields) - if err != nil { - return - } - - if fields["objname"] != nil { - node.Objname.Items, err = UnmarshalNodeArrayJSON(fields["objname"]) - if err != nil { - return - } - } - - if fields["objargs"] != nil { - node.Objargs.Items, err = UnmarshalNodeArrayJSON(fields["objargs"]) - if err != nil { - return - } - } - - if fields["args_unspecified"] != nil { - err = json.Unmarshal(fields["args_unspecified"], &node.ArgsUnspecified) - if err != nil { - return - } - } - - return -} diff --git a/nodes/object_with_args_deparse.go b/nodes/object_with_args_deparse.go deleted file mode 100644 index c9996efd..00000000 --- a/nodes/object_with_args_deparse.go +++ /dev/null @@ -1,7 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -func (node ObjectWithArgs) Deparse() string { - panic("Not Implemented") -} diff --git a/nodes/object_with_args_fingerprint.go b/nodes/object_with_args_fingerprint.go deleted file mode 100644 index 662df24c..00000000 --- a/nodes/object_with_args_fingerprint.go +++ /dev/null @@ -1,38 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -import "strconv" - -func (node ObjectWithArgs) Fingerprint(ctx FingerprintContext, parentNode Node, parentFieldName string) { - ctx.WriteString("ObjectWithArgs") - - if node.ArgsUnspecified { - ctx.WriteString("args_unspecified") - ctx.WriteString(strconv.FormatBool(node.ArgsUnspecified)) - } - - if len(node.Objargs.Items) > 0 { - subCtx := FingerprintSubContext{} - node.Objargs.Fingerprint(&subCtx, node, "Objargs") - - if len(subCtx.parts) > 0 { - ctx.WriteString("objargs") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if len(node.Objname.Items) > 0 { - subCtx := FingerprintSubContext{} - node.Objname.Fingerprint(&subCtx, node, "Objname") - - if len(subCtx.parts) > 0 { - ctx.WriteString("objname") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } -} diff --git a/nodes/on_commit_action.go b/nodes/on_commit_action.go deleted file mode 100644 index 3c7b045f..00000000 --- a/nodes/on_commit_action.go +++ /dev/null @@ -1,13 +0,0 @@ -// Auto-generated from postgres/src/include/nodes/primnodes.h - DO NOT EDIT - -package pg_query - -/* What to do at commit time for temporary relations */ -type OnCommitAction uint - -const ( - ONCOMMIT_NOOP OnCommitAction = iota /* No ON COMMIT clause (do nothing) */ - ONCOMMIT_PRESERVE_ROWS /* ON COMMIT PRESERVE ROWS (do nothing) */ - ONCOMMIT_DELETE_ROWS /* ON COMMIT DELETE ROWS */ - ONCOMMIT_DROP /* ON COMMIT DROP */ -) diff --git a/nodes/on_conflict_action.go b/nodes/on_conflict_action.go deleted file mode 100644 index 67b9351f..00000000 --- a/nodes/on_conflict_action.go +++ /dev/null @@ -1,17 +0,0 @@ -// Auto-generated from postgres/src/include/nodes/nodes.h - DO NOT EDIT - -package pg_query - -/* - * OnConflictAction - - * "ON CONFLICT" clause type of query - * - * This is needed in both parsenodes.h and plannodes.h, so put it here... - */ -type OnConflictAction uint - -const ( - ONCONFLICT_NONE OnConflictAction = iota /* No "ON CONFLICT" clause */ - ONCONFLICT_NOTHING /* ON CONFLICT ... DO NOTHING */ - ONCONFLICT_UPDATE /* ON CONFLICT ... DO UPDATE */ -) diff --git a/nodes/on_conflict_clause.go b/nodes/on_conflict_clause.go deleted file mode 100644 index f9ca3eb7..00000000 --- a/nodes/on_conflict_clause.go +++ /dev/null @@ -1,77 +0,0 @@ -// Auto-generated from postgres/src/include/nodes/parsenodes.h - DO NOT EDIT - -package pg_query - -import "encoding/json" - -/* - * OnConflictClause - - * representation of ON CONFLICT clause - * - * Note: OnConflictClause does not propagate into the Query representation. - */ -type OnConflictClause struct { - Action OnConflictAction `json:"action"` /* DO NOTHING or UPDATE? */ - Infer *InferClause `json:"infer"` /* Optional index inference clause */ - TargetList List `json:"targetList"` /* the target list (of ResTarget) */ - WhereClause Node `json:"whereClause"` /* qualifications */ - Location int `json:"location"` /* token location, or -1 if unknown */ -} - -func (node OnConflictClause) MarshalJSON() ([]byte, error) { - type OnConflictClauseMarshalAlias OnConflictClause - return json.Marshal(map[string]interface{}{ - "OnConflictClause": (*OnConflictClauseMarshalAlias)(&node), - }) -} - -func (node *OnConflictClause) UnmarshalJSON(input []byte) (err error) { - var fields map[string]json.RawMessage - - err = json.Unmarshal(input, &fields) - if err != nil { - return - } - - if fields["action"] != nil { - err = json.Unmarshal(fields["action"], &node.Action) - if err != nil { - return - } - } - - if fields["infer"] != nil { - var nodePtr *Node - nodePtr, err = UnmarshalNodePtrJSON(fields["infer"]) - if err != nil { - return - } - if nodePtr != nil && *nodePtr != nil { - val := (*nodePtr).(InferClause) - node.Infer = &val - } - } - - if fields["targetList"] != nil { - node.TargetList.Items, err = UnmarshalNodeArrayJSON(fields["targetList"]) - if err != nil { - return - } - } - - if fields["whereClause"] != nil { - node.WhereClause, err = UnmarshalNodeJSON(fields["whereClause"]) - if err != nil { - return - } - } - - if fields["location"] != nil { - err = json.Unmarshal(fields["location"], &node.Location) - if err != nil { - return - } - } - - return -} diff --git a/nodes/on_conflict_clause_deparse.go b/nodes/on_conflict_clause_deparse.go deleted file mode 100644 index e5705972..00000000 --- a/nodes/on_conflict_clause_deparse.go +++ /dev/null @@ -1,7 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -func (node OnConflictClause) Deparse() string { - panic("Not Implemented") -} diff --git a/nodes/on_conflict_clause_fingerprint.go b/nodes/on_conflict_clause_fingerprint.go deleted file mode 100644 index 8c69ad76..00000000 --- a/nodes/on_conflict_clause_fingerprint.go +++ /dev/null @@ -1,51 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -import "strconv" - -func (node OnConflictClause) Fingerprint(ctx FingerprintContext, parentNode Node, parentFieldName string) { - ctx.WriteString("OnConflictClause") - - if int(node.Action) != 0 { - ctx.WriteString("action") - ctx.WriteString(strconv.Itoa(int(node.Action))) - } - - if node.Infer != nil { - subCtx := FingerprintSubContext{} - node.Infer.Fingerprint(&subCtx, node, "Infer") - - if len(subCtx.parts) > 0 { - ctx.WriteString("infer") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - // Intentionally ignoring node.Location for fingerprinting - - if len(node.TargetList.Items) > 0 { - subCtx := FingerprintSubContext{} - node.TargetList.Fingerprint(&subCtx, node, "TargetList") - - if len(subCtx.parts) > 0 { - ctx.WriteString("targetList") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if node.WhereClause != nil { - subCtx := FingerprintSubContext{} - node.WhereClause.Fingerprint(&subCtx, node, "WhereClause") - - if len(subCtx.parts) > 0 { - ctx.WriteString("whereClause") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } -} diff --git a/nodes/on_conflict_expr.go b/nodes/on_conflict_expr.go deleted file mode 100644 index 7e07b19a..00000000 --- a/nodes/on_conflict_expr.go +++ /dev/null @@ -1,105 +0,0 @@ -// Auto-generated from postgres/src/include/nodes/primnodes.h - DO NOT EDIT - -package pg_query - -import "encoding/json" - -/*---------- - * OnConflictExpr - represents an ON CONFLICT DO ... expression - * - * The optimizer requires a list of inference elements, and optionally a WHERE - * clause to infer a unique index. The unique index (or, occasionally, - * indexes) inferred are used to arbitrate whether or not the alternative ON - * CONFLICT path is taken. - *---------- - */ -type OnConflictExpr struct { - Action OnConflictAction `json:"action"` /* DO NOTHING or UPDATE? */ - - /* Arbiter */ - ArbiterElems List `json:"arbiterElems"` /* unique index arbiter list (of - * InferenceElem's) */ - - ArbiterWhere Node `json:"arbiterWhere"` /* unique index arbiter WHERE clause */ - Constraint Oid `json:"constraint"` /* pg_constraint OID for arbiter */ - - /* ON CONFLICT UPDATE */ - OnConflictSet List `json:"onConflictSet"` /* List of ON CONFLICT SET TargetEntrys */ - OnConflictWhere Node `json:"onConflictWhere"` /* qualifiers to restrict UPDATE to */ - ExclRelIndex int `json:"exclRelIndex"` /* RT index of 'excluded' relation */ - ExclRelTlist List `json:"exclRelTlist"` /* tlist of the EXCLUDED pseudo relation */ -} - -func (node OnConflictExpr) MarshalJSON() ([]byte, error) { - type OnConflictExprMarshalAlias OnConflictExpr - return json.Marshal(map[string]interface{}{ - "OnConflictExpr": (*OnConflictExprMarshalAlias)(&node), - }) -} - -func (node *OnConflictExpr) UnmarshalJSON(input []byte) (err error) { - var fields map[string]json.RawMessage - - err = json.Unmarshal(input, &fields) - if err != nil { - return - } - - if fields["action"] != nil { - err = json.Unmarshal(fields["action"], &node.Action) - if err != nil { - return - } - } - - if fields["arbiterElems"] != nil { - node.ArbiterElems.Items, err = UnmarshalNodeArrayJSON(fields["arbiterElems"]) - if err != nil { - return - } - } - - if fields["arbiterWhere"] != nil { - node.ArbiterWhere, err = UnmarshalNodeJSON(fields["arbiterWhere"]) - if err != nil { - return - } - } - - if fields["constraint"] != nil { - err = json.Unmarshal(fields["constraint"], &node.Constraint) - if err != nil { - return - } - } - - if fields["onConflictSet"] != nil { - node.OnConflictSet.Items, err = UnmarshalNodeArrayJSON(fields["onConflictSet"]) - if err != nil { - return - } - } - - if fields["onConflictWhere"] != nil { - node.OnConflictWhere, err = UnmarshalNodeJSON(fields["onConflictWhere"]) - if err != nil { - return - } - } - - if fields["exclRelIndex"] != nil { - err = json.Unmarshal(fields["exclRelIndex"], &node.ExclRelIndex) - if err != nil { - return - } - } - - if fields["exclRelTlist"] != nil { - node.ExclRelTlist.Items, err = UnmarshalNodeArrayJSON(fields["exclRelTlist"]) - if err != nil { - return - } - } - - return -} diff --git a/nodes/on_conflict_expr_deparse.go b/nodes/on_conflict_expr_deparse.go deleted file mode 100644 index a246af7b..00000000 --- a/nodes/on_conflict_expr_deparse.go +++ /dev/null @@ -1,7 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -func (node OnConflictExpr) Deparse() string { - panic("Not Implemented") -} diff --git a/nodes/on_conflict_expr_fingerprint.go b/nodes/on_conflict_expr_fingerprint.go deleted file mode 100644 index bfec23ef..00000000 --- a/nodes/on_conflict_expr_fingerprint.go +++ /dev/null @@ -1,84 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -import "strconv" - -func (node OnConflictExpr) Fingerprint(ctx FingerprintContext, parentNode Node, parentFieldName string) { - ctx.WriteString("OnConflictExpr") - - if int(node.Action) != 0 { - ctx.WriteString("action") - ctx.WriteString(strconv.Itoa(int(node.Action))) - } - - if len(node.ArbiterElems.Items) > 0 { - subCtx := FingerprintSubContext{} - node.ArbiterElems.Fingerprint(&subCtx, node, "ArbiterElems") - - if len(subCtx.parts) > 0 { - ctx.WriteString("arbiterElems") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if node.ArbiterWhere != nil { - subCtx := FingerprintSubContext{} - node.ArbiterWhere.Fingerprint(&subCtx, node, "ArbiterWhere") - - if len(subCtx.parts) > 0 { - ctx.WriteString("arbiterWhere") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if node.Constraint != 0 { - ctx.WriteString("constraint") - ctx.WriteString(strconv.Itoa(int(node.Constraint))) - } - - if node.ExclRelIndex != 0 { - ctx.WriteString("exclRelIndex") - ctx.WriteString(strconv.Itoa(int(node.ExclRelIndex))) - } - - if len(node.ExclRelTlist.Items) > 0 { - subCtx := FingerprintSubContext{} - node.ExclRelTlist.Fingerprint(&subCtx, node, "ExclRelTlist") - - if len(subCtx.parts) > 0 { - ctx.WriteString("exclRelTlist") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if len(node.OnConflictSet.Items) > 0 { - subCtx := FingerprintSubContext{} - node.OnConflictSet.Fingerprint(&subCtx, node, "OnConflictSet") - - if len(subCtx.parts) > 0 { - ctx.WriteString("onConflictSet") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if node.OnConflictWhere != nil { - subCtx := FingerprintSubContext{} - node.OnConflictWhere.Fingerprint(&subCtx, node, "OnConflictWhere") - - if len(subCtx.parts) > 0 { - ctx.WriteString("onConflictWhere") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } -} diff --git a/nodes/op_expr.go b/nodes/op_expr.go deleted file mode 100644 index 3c2c89bf..00000000 --- a/nodes/op_expr.go +++ /dev/null @@ -1,107 +0,0 @@ -// Auto-generated from postgres/src/include/nodes/primnodes.h - DO NOT EDIT - -package pg_query - -import "encoding/json" - -/* - * OpExpr - expression node for an operator invocation - * - * Semantically, this is essentially the same as a function call. - * - * Note that opfuncid is not necessarily filled in immediately on creation - * of the node. The planner makes sure it is valid before passing the node - * tree to the executor, but during parsing/planning opfuncid can be 0. - */ -type OpExpr struct { - Xpr Node `json:"xpr"` - Opno Oid `json:"opno"` /* PG_OPERATOR OID of the operator */ - Opfuncid Oid `json:"opfuncid"` /* PG_PROC OID of underlying function */ - Opresulttype Oid `json:"opresulttype"` /* PG_TYPE OID of result value */ - Opretset bool `json:"opretset"` /* true if operator returns set */ - Opcollid Oid `json:"opcollid"` /* OID of collation of result */ - Inputcollid Oid `json:"inputcollid"` /* OID of collation that operator should use */ - Args List `json:"args"` /* arguments to the operator (1 or 2) */ - Location int `json:"location"` /* token location, or -1 if unknown */ -} - -func (node OpExpr) MarshalJSON() ([]byte, error) { - type OpExprMarshalAlias OpExpr - return json.Marshal(map[string]interface{}{ - "OpExpr": (*OpExprMarshalAlias)(&node), - }) -} - -func (node *OpExpr) UnmarshalJSON(input []byte) (err error) { - var fields map[string]json.RawMessage - - err = json.Unmarshal(input, &fields) - if err != nil { - return - } - - if fields["xpr"] != nil { - node.Xpr, err = UnmarshalNodeJSON(fields["xpr"]) - if err != nil { - return - } - } - - if fields["opno"] != nil { - err = json.Unmarshal(fields["opno"], &node.Opno) - if err != nil { - return - } - } - - if fields["opfuncid"] != nil { - err = json.Unmarshal(fields["opfuncid"], &node.Opfuncid) - if err != nil { - return - } - } - - if fields["opresulttype"] != nil { - err = json.Unmarshal(fields["opresulttype"], &node.Opresulttype) - if err != nil { - return - } - } - - if fields["opretset"] != nil { - err = json.Unmarshal(fields["opretset"], &node.Opretset) - if err != nil { - return - } - } - - if fields["opcollid"] != nil { - err = json.Unmarshal(fields["opcollid"], &node.Opcollid) - if err != nil { - return - } - } - - if fields["inputcollid"] != nil { - err = json.Unmarshal(fields["inputcollid"], &node.Inputcollid) - if err != nil { - return - } - } - - if fields["args"] != nil { - node.Args.Items, err = UnmarshalNodeArrayJSON(fields["args"]) - if err != nil { - return - } - } - - if fields["location"] != nil { - err = json.Unmarshal(fields["location"], &node.Location) - if err != nil { - return - } - } - - return -} diff --git a/nodes/op_expr_deparse.go b/nodes/op_expr_deparse.go deleted file mode 100644 index 837d6bcc..00000000 --- a/nodes/op_expr_deparse.go +++ /dev/null @@ -1,7 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -func (node OpExpr) Deparse() string { - panic("Not Implemented") -} diff --git a/nodes/op_expr_fingerprint.go b/nodes/op_expr_fingerprint.go deleted file mode 100644 index b60fb6ee..00000000 --- a/nodes/op_expr_fingerprint.go +++ /dev/null @@ -1,65 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -import "strconv" - -func (node OpExpr) Fingerprint(ctx FingerprintContext, parentNode Node, parentFieldName string) { - ctx.WriteString("OpExpr") - - if len(node.Args.Items) > 0 { - subCtx := FingerprintSubContext{} - node.Args.Fingerprint(&subCtx, node, "Args") - - if len(subCtx.parts) > 0 { - ctx.WriteString("args") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if node.Inputcollid != 0 { - ctx.WriteString("inputcollid") - ctx.WriteString(strconv.Itoa(int(node.Inputcollid))) - } - - // Intentionally ignoring node.Location for fingerprinting - - if node.Opcollid != 0 { - ctx.WriteString("opcollid") - ctx.WriteString(strconv.Itoa(int(node.Opcollid))) - } - - if node.Opfuncid != 0 { - ctx.WriteString("opfuncid") - ctx.WriteString(strconv.Itoa(int(node.Opfuncid))) - } - - if node.Opno != 0 { - ctx.WriteString("opno") - ctx.WriteString(strconv.Itoa(int(node.Opno))) - } - - if node.Opresulttype != 0 { - ctx.WriteString("opresulttype") - ctx.WriteString(strconv.Itoa(int(node.Opresulttype))) - } - - if node.Opretset { - ctx.WriteString("opretset") - ctx.WriteString(strconv.FormatBool(node.Opretset)) - } - - if node.Xpr != nil { - subCtx := FingerprintSubContext{} - node.Xpr.Fingerprint(&subCtx, node, "Xpr") - - if len(subCtx.parts) > 0 { - ctx.WriteString("xpr") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } -} diff --git a/nodes/overriding_kind.go b/nodes/overriding_kind.go deleted file mode 100644 index ec821668..00000000 --- a/nodes/overriding_kind.go +++ /dev/null @@ -1,32 +0,0 @@ -// Auto-generated from postgres/src/include/nodes/parsenodes.h - DO NOT EDIT - -package pg_query - -/*------------------------------------------------------------------------- - * - * parsenodes.h - * definitions for parse tree nodes - * - * Many of the node types used in parsetrees include a "location" field. - * This is a byte (not character) offset in the original source text, to be - * used for positioning an error cursor when there is an error related to - * the node. Access to the original source text is needed to make use of - * the location. At the topmost (statement) level, we also provide a - * statement length, likewise measured in bytes, for convenience in - * identifying statement boundaries in multi-statement source strings. - * - * - * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group - * Portions Copyright (c) 1994, Regents of the University of California - * - * src/include/nodes/parsenodes.h - * - *------------------------------------------------------------------------- - */ -type OverridingKind uint - -const ( - OVERRIDING_NOT_SET OverridingKind = iota - OVERRIDING_USER_VALUE - OVERRIDING_SYSTEM_VALUE -) diff --git a/nodes/param.go b/nodes/param.go deleted file mode 100644 index a66bd7c0..00000000 --- a/nodes/param.go +++ /dev/null @@ -1,109 +0,0 @@ -// Auto-generated from postgres/src/include/nodes/primnodes.h - DO NOT EDIT - -package pg_query - -import "encoding/json" - -/* - * Param - * - * paramkind specifies the kind of parameter. The possible values - * for this field are: - * - * PARAM_EXTERN: The parameter value is supplied from outside the plan. - * Such parameters are numbered from 1 to n. - * - * PARAM_EXEC: The parameter is an internal executor parameter, used - * for passing values into and out of sub-queries or from - * nestloop joins to their inner scans. - * For historical reasons, such parameters are numbered from 0. - * These numbers are independent of PARAM_EXTERN numbers. - * - * PARAM_SUBLINK: The parameter represents an output column of a SubLink - * node's sub-select. The column number is contained in the - * `paramid' field. (This type of Param is converted to - * PARAM_EXEC during planning.) - * - * PARAM_MULTIEXPR: Like PARAM_SUBLINK, the parameter represents an - * output column of a SubLink node's sub-select, but here, the - * SubLink is always a MULTIEXPR SubLink. The high-order 16 bits - * of the `paramid' field contain the SubLink's subLinkId, and - * the low-order 16 bits contain the column number. (This type - * of Param is also converted to PARAM_EXEC during planning.) - */ -type Param struct { - Xpr Node `json:"xpr"` - Paramkind ParamKind `json:"paramkind"` /* kind of parameter. See above */ - Paramid int `json:"paramid"` /* numeric ID for parameter */ - Paramtype Oid `json:"paramtype"` /* pg_type OID of parameter's datatype */ - Paramtypmod int32 `json:"paramtypmod"` /* typmod value, if known */ - Paramcollid Oid `json:"paramcollid"` /* OID of collation, or InvalidOid if none */ - Location int `json:"location"` /* token location, or -1 if unknown */ -} - -func (node Param) MarshalJSON() ([]byte, error) { - type ParamMarshalAlias Param - return json.Marshal(map[string]interface{}{ - "Param": (*ParamMarshalAlias)(&node), - }) -} - -func (node *Param) UnmarshalJSON(input []byte) (err error) { - var fields map[string]json.RawMessage - - err = json.Unmarshal(input, &fields) - if err != nil { - return - } - - if fields["xpr"] != nil { - node.Xpr, err = UnmarshalNodeJSON(fields["xpr"]) - if err != nil { - return - } - } - - if fields["paramkind"] != nil { - err = json.Unmarshal(fields["paramkind"], &node.Paramkind) - if err != nil { - return - } - } - - if fields["paramid"] != nil { - err = json.Unmarshal(fields["paramid"], &node.Paramid) - if err != nil { - return - } - } - - if fields["paramtype"] != nil { - err = json.Unmarshal(fields["paramtype"], &node.Paramtype) - if err != nil { - return - } - } - - if fields["paramtypmod"] != nil { - err = json.Unmarshal(fields["paramtypmod"], &node.Paramtypmod) - if err != nil { - return - } - } - - if fields["paramcollid"] != nil { - err = json.Unmarshal(fields["paramcollid"], &node.Paramcollid) - if err != nil { - return - } - } - - if fields["location"] != nil { - err = json.Unmarshal(fields["location"], &node.Location) - if err != nil { - return - } - } - - return -} diff --git a/nodes/param_deparse.go b/nodes/param_deparse.go deleted file mode 100644 index 68671e2c..00000000 --- a/nodes/param_deparse.go +++ /dev/null @@ -1,7 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -func (node Param) Deparse() string { - panic("Not Implemented") -} diff --git a/nodes/param_exec_data.go b/nodes/param_exec_data.go deleted file mode 100644 index 9fe922f0..00000000 --- a/nodes/param_exec_data.go +++ /dev/null @@ -1,66 +0,0 @@ -// Auto-generated from postgres/src/include/nodes/params.h - DO NOT EDIT - -package pg_query - -import "encoding/json" - -/* ---------------- - * ParamExecData - * - * ParamExecData entries are used for executor internal parameters - * (that is, values being passed into or out of a sub-query). The - * paramid of a PARAM_EXEC Param is a (zero-based) index into an - * array of ParamExecData records, which is referenced through - * es_param_exec_vals or ecxt_param_exec_vals. - * - * If execPlan is not NULL, it points to a SubPlanState node that needs - * to be executed to produce the value. (This is done so that we can have - * lazy evaluation of InitPlans: they aren't executed until/unless a - * result value is needed.) Otherwise the value is assumed to be valid - * when needed. - * ---------------- - */ -type ParamExecData struct { - ExecPlan interface{} `json:"execPlan"` /* should be "SubPlanState *" */ - Value Datum `json:"value"` - Isnull bool `json:"isnull"` -} - -func (node ParamExecData) MarshalJSON() ([]byte, error) { - type ParamExecDataMarshalAlias ParamExecData - return json.Marshal(map[string]interface{}{ - "ParamExecData": (*ParamExecDataMarshalAlias)(&node), - }) -} - -func (node *ParamExecData) UnmarshalJSON(input []byte) (err error) { - var fields map[string]json.RawMessage - - err = json.Unmarshal(input, &fields) - if err != nil { - return - } - - if fields["execPlan"] != nil { - err = json.Unmarshal(fields["execPlan"], &node.ExecPlan) - if err != nil { - return - } - } - - if fields["value"] != nil { - err = json.Unmarshal(fields["value"], &node.Value) - if err != nil { - return - } - } - - if fields["isnull"] != nil { - err = json.Unmarshal(fields["isnull"], &node.Isnull) - if err != nil { - return - } - } - - return -} diff --git a/nodes/param_exec_data_deparse.go b/nodes/param_exec_data_deparse.go deleted file mode 100644 index a2635e15..00000000 --- a/nodes/param_exec_data_deparse.go +++ /dev/null @@ -1,7 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -func (node ParamExecData) Deparse() string { - panic("Not Implemented") -} diff --git a/nodes/param_exec_data_fingerprint.go b/nodes/param_exec_data_fingerprint.go deleted file mode 100644 index da4f32ed..00000000 --- a/nodes/param_exec_data_fingerprint.go +++ /dev/null @@ -1,14 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -import "strconv" - -func (node ParamExecData) Fingerprint(ctx FingerprintContext, parentNode Node, parentFieldName string) { - ctx.WriteString("ParamExecData") - - if node.Isnull { - ctx.WriteString("isnull") - ctx.WriteString(strconv.FormatBool(node.Isnull)) - } -} diff --git a/nodes/param_extern_data.go b/nodes/param_extern_data.go deleted file mode 100644 index 05606e6d..00000000 --- a/nodes/param_extern_data.go +++ /dev/null @@ -1,87 +0,0 @@ -// Auto-generated from postgres/src/include/nodes/params.h - DO NOT EDIT - -package pg_query - -import "encoding/json" - -/* ---------------- - * ParamListInfo - * - * ParamListInfo arrays are used to pass parameters into the executor - * for parameterized plans. Each entry in the array defines the value - * to be substituted for a PARAM_EXTERN parameter. The "paramid" - * of a PARAM_EXTERN Param can range from 1 to numParams. - * - * Although parameter numbers are normally consecutive, we allow - * ptype == InvalidOid to signal an unused array entry. - * - * pflags is a flags field. Currently the only used bit is: - * PARAM_FLAG_CONST signals the planner that it may treat this parameter - * as a constant (i.e., generate a plan that works only for this value - * of the parameter). - * - * There are two hook functions that can be associated with a ParamListInfo - * array to support dynamic parameter handling. First, if paramFetch - * isn't null and the executor requires a value for an invalid parameter - * (one with ptype == InvalidOid), the paramFetch hook is called to give - * it a chance to fill in the parameter value. Second, a parserSetup - * hook can be supplied to re-instantiate the original parsing hooks if - * a query needs to be re-parsed/planned (as a substitute for supposing - * that the current ptype values represent a fixed set of parameter types). - - * Although the data structure is really an array, not a list, we keep - * the old typedef name to avoid unnecessary code changes. - * ---------------- - */ -type ParamExternData struct { - Value Datum `json:"value"` /* parameter value */ - Isnull bool `json:"isnull"` /* is it NULL? */ - Pflags uint16 `json:"pflags"` /* flag bits, see above */ - Ptype Oid `json:"ptype"` /* parameter's datatype, or 0 */ -} - -func (node ParamExternData) MarshalJSON() ([]byte, error) { - type ParamExternDataMarshalAlias ParamExternData - return json.Marshal(map[string]interface{}{ - "ParamExternData": (*ParamExternDataMarshalAlias)(&node), - }) -} - -func (node *ParamExternData) UnmarshalJSON(input []byte) (err error) { - var fields map[string]json.RawMessage - - err = json.Unmarshal(input, &fields) - if err != nil { - return - } - - if fields["value"] != nil { - err = json.Unmarshal(fields["value"], &node.Value) - if err != nil { - return - } - } - - if fields["isnull"] != nil { - err = json.Unmarshal(fields["isnull"], &node.Isnull) - if err != nil { - return - } - } - - if fields["pflags"] != nil { - err = json.Unmarshal(fields["pflags"], &node.Pflags) - if err != nil { - return - } - } - - if fields["ptype"] != nil { - err = json.Unmarshal(fields["ptype"], &node.Ptype) - if err != nil { - return - } - } - - return -} diff --git a/nodes/param_extern_data_deparse.go b/nodes/param_extern_data_deparse.go deleted file mode 100644 index e4a1a97a..00000000 --- a/nodes/param_extern_data_deparse.go +++ /dev/null @@ -1,7 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -func (node ParamExternData) Deparse() string { - panic("Not Implemented") -} diff --git a/nodes/param_extern_data_fingerprint.go b/nodes/param_extern_data_fingerprint.go deleted file mode 100644 index 456a88cd..00000000 --- a/nodes/param_extern_data_fingerprint.go +++ /dev/null @@ -1,24 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -import "strconv" - -func (node ParamExternData) Fingerprint(ctx FingerprintContext, parentNode Node, parentFieldName string) { - ctx.WriteString("ParamExternData") - - if node.Isnull { - ctx.WriteString("isnull") - ctx.WriteString(strconv.FormatBool(node.Isnull)) - } - - if node.Pflags != 0 { - ctx.WriteString("pflags") - ctx.WriteString(strconv.Itoa(int(node.Pflags))) - } - - if node.Ptype != 0 { - ctx.WriteString("ptype") - ctx.WriteString(strconv.Itoa(int(node.Ptype))) - } -} diff --git a/nodes/param_fingerprint.go b/nodes/param_fingerprint.go deleted file mode 100644 index 42592c54..00000000 --- a/nodes/param_fingerprint.go +++ /dev/null @@ -1,47 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -import "strconv" - -func (node Param) Fingerprint(ctx FingerprintContext, parentNode Node, parentFieldName string) { - ctx.WriteString("Param") - // Intentionally ignoring node.Location for fingerprinting - - if node.Paramcollid != 0 { - ctx.WriteString("paramcollid") - ctx.WriteString(strconv.Itoa(int(node.Paramcollid))) - } - - if node.Paramid != 0 { - ctx.WriteString("paramid") - ctx.WriteString(strconv.Itoa(int(node.Paramid))) - } - - if int(node.Paramkind) != 0 { - ctx.WriteString("paramkind") - ctx.WriteString(strconv.Itoa(int(node.Paramkind))) - } - - if node.Paramtype != 0 { - ctx.WriteString("paramtype") - ctx.WriteString(strconv.Itoa(int(node.Paramtype))) - } - - if node.Paramtypmod != 0 { - ctx.WriteString("paramtypmod") - ctx.WriteString(strconv.Itoa(int(node.Paramtypmod))) - } - - if node.Xpr != nil { - subCtx := FingerprintSubContext{} - node.Xpr.Fingerprint(&subCtx, node, "Xpr") - - if len(subCtx.parts) > 0 { - ctx.WriteString("xpr") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } -} diff --git a/nodes/param_kind.go b/nodes/param_kind.go deleted file mode 100644 index eae4c965..00000000 --- a/nodes/param_kind.go +++ /dev/null @@ -1,39 +0,0 @@ -// Auto-generated from postgres/src/include/nodes/primnodes.h - DO NOT EDIT - -package pg_query - -/* - * Param - * - * paramkind specifies the kind of parameter. The possible values - * for this field are: - * - * PARAM_EXTERN: The parameter value is supplied from outside the plan. - * Such parameters are numbered from 1 to n. - * - * PARAM_EXEC: The parameter is an internal executor parameter, used - * for passing values into and out of sub-queries or from - * nestloop joins to their inner scans. - * For historical reasons, such parameters are numbered from 0. - * These numbers are independent of PARAM_EXTERN numbers. - * - * PARAM_SUBLINK: The parameter represents an output column of a SubLink - * node's sub-select. The column number is contained in the - * `paramid' field. (This type of Param is converted to - * PARAM_EXEC during planning.) - * - * PARAM_MULTIEXPR: Like PARAM_SUBLINK, the parameter represents an - * output column of a SubLink node's sub-select, but here, the - * SubLink is always a MULTIEXPR SubLink. The high-order 16 bits - * of the `paramid' field contain the SubLink's subLinkId, and - * the low-order 16 bits contain the column number. (This type - * of Param is also converted to PARAM_EXEC during planning.) - */ -type ParamKind uint - -const ( - PARAM_EXTERN ParamKind = iota - PARAM_EXEC - PARAM_SUBLINK - PARAM_MULTIEXPR -) diff --git a/nodes/param_list_info_data.go b/nodes/param_list_info_data.go deleted file mode 100644 index fe9184cb..00000000 --- a/nodes/param_list_info_data.go +++ /dev/null @@ -1,87 +0,0 @@ -// Auto-generated from postgres/src/include/nodes/params.h - DO NOT EDIT - -package pg_query - -import "encoding/json" - -/* ---------------- - * ParamListInfo - * - * ParamListInfo arrays are used to pass parameters into the executor - * for parameterized plans. Each entry in the array defines the value - * to be substituted for a PARAM_EXTERN parameter. The "paramid" - * of a PARAM_EXTERN Param can range from 1 to numParams. - * - * Although parameter numbers are normally consecutive, we allow - * ptype == InvalidOid to signal an unused array entry. - * - * pflags is a flags field. Currently the only used bit is: - * PARAM_FLAG_CONST signals the planner that it may treat this parameter - * as a constant (i.e., generate a plan that works only for this value - * of the parameter). - * - * There are two hook functions that can be associated with a ParamListInfo - * array to support dynamic parameter handling. First, if paramFetch - * isn't null and the executor requires a value for an invalid parameter - * (one with ptype == InvalidOid), the paramFetch hook is called to give - * it a chance to fill in the parameter value. Second, a parserSetup - * hook can be supplied to re-instantiate the original parsing hooks if - * a query needs to be re-parsed/planned (as a substitute for supposing - * that the current ptype values represent a fixed set of parameter types). - - * Although the data structure is really an array, not a list, we keep - * the old typedef name to avoid unnecessary code changes. - * ---------------- - */ -type ParamListInfoData struct { - ParamFetchArg interface{} `json:"paramFetchArg"` - ParserSetupArg interface{} `json:"parserSetupArg"` - NumParams int `json:"numParams"` /* number of ParamExternDatas following */ - ParamMask []uint32 `json:"paramMask"` /* if non-NULL, can ignore omitted params */ -} - -func (node ParamListInfoData) MarshalJSON() ([]byte, error) { - type ParamListInfoDataMarshalAlias ParamListInfoData - return json.Marshal(map[string]interface{}{ - "ParamListInfoData": (*ParamListInfoDataMarshalAlias)(&node), - }) -} - -func (node *ParamListInfoData) UnmarshalJSON(input []byte) (err error) { - var fields map[string]json.RawMessage - - err = json.Unmarshal(input, &fields) - if err != nil { - return - } - - if fields["paramFetchArg"] != nil { - err = json.Unmarshal(fields["paramFetchArg"], &node.ParamFetchArg) - if err != nil { - return - } - } - - if fields["parserSetupArg"] != nil { - err = json.Unmarshal(fields["parserSetupArg"], &node.ParserSetupArg) - if err != nil { - return - } - } - - if fields["numParams"] != nil { - err = json.Unmarshal(fields["numParams"], &node.NumParams) - if err != nil { - return - } - } - - if fields["paramMask"] != nil { - err = json.Unmarshal(fields["paramMask"], &node.ParamMask) - if err != nil { - return - } - } - - return -} diff --git a/nodes/param_list_info_data_deparse.go b/nodes/param_list_info_data_deparse.go deleted file mode 100644 index 462f0245..00000000 --- a/nodes/param_list_info_data_deparse.go +++ /dev/null @@ -1,7 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -func (node ParamListInfoData) Deparse() string { - panic("Not Implemented") -} diff --git a/nodes/param_list_info_data_fingerprint.go b/nodes/param_list_info_data_fingerprint.go deleted file mode 100644 index 668ff504..00000000 --- a/nodes/param_list_info_data_fingerprint.go +++ /dev/null @@ -1,19 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -import "strconv" - -func (node ParamListInfoData) Fingerprint(ctx FingerprintContext, parentNode Node, parentFieldName string) { - ctx.WriteString("ParamListInfoData") - - if node.NumParams != 0 { - ctx.WriteString("numParams") - ctx.WriteString(strconv.Itoa(int(node.NumParams))) - } - - ctx.WriteString("paramMask") - for _, val := range node.ParamMask { - ctx.WriteString(strconv.Itoa(int(val))) - } -} diff --git a/nodes/param_ref.go b/nodes/param_ref.go deleted file mode 100644 index 60d463e1..00000000 --- a/nodes/param_ref.go +++ /dev/null @@ -1,45 +0,0 @@ -// Auto-generated from postgres/src/include/nodes/parsenodes.h - DO NOT EDIT - -package pg_query - -import "encoding/json" - -/* - * ParamRef - specifies a $n parameter reference - */ -type ParamRef struct { - Number int `json:"number"` /* the number of the parameter */ - Location int `json:"location"` /* token location, or -1 if unknown */ -} - -func (node ParamRef) MarshalJSON() ([]byte, error) { - type ParamRefMarshalAlias ParamRef - return json.Marshal(map[string]interface{}{ - "ParamRef": (*ParamRefMarshalAlias)(&node), - }) -} - -func (node *ParamRef) UnmarshalJSON(input []byte) (err error) { - var fields map[string]json.RawMessage - - err = json.Unmarshal(input, &fields) - if err != nil { - return - } - - if fields["number"] != nil { - err = json.Unmarshal(fields["number"], &node.Number) - if err != nil { - return - } - } - - if fields["location"] != nil { - err = json.Unmarshal(fields["location"], &node.Location) - if err != nil { - return - } - } - - return -} diff --git a/nodes/param_ref_deparse.go b/nodes/param_ref_deparse.go deleted file mode 100644 index a8e10de7..00000000 --- a/nodes/param_ref_deparse.go +++ /dev/null @@ -1,7 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -func (node ParamRef) Deparse() string { - panic("Not Implemented") -} diff --git a/nodes/param_ref_fingerprint.go b/nodes/param_ref_fingerprint.go deleted file mode 100644 index 83e603eb..00000000 --- a/nodes/param_ref_fingerprint.go +++ /dev/null @@ -1,7 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -func (node ParamRef) Fingerprint(ctx FingerprintContext, parentNode Node, parentFieldName string) { - // Intentionally ignoring all fields for fingerprinting -} diff --git a/nodes/partition_bound_spec.go b/nodes/partition_bound_spec.go deleted file mode 100644 index cda8ae77..00000000 --- a/nodes/partition_bound_spec.go +++ /dev/null @@ -1,79 +0,0 @@ -// Auto-generated from postgres/src/include/nodes/parsenodes.h - DO NOT EDIT - -package pg_query - -import "encoding/json" - -/* - * PartitionBoundSpec - a partition bound specification - * - * This represents the portion of the partition key space assigned to a - * particular partition. These are stored on disk in pg_class.relpartbound. - */ -type PartitionBoundSpec struct { - Strategy byte `json:"strategy"` /* see PARTITION_STRATEGY codes above */ - - /* Partitioning info for LIST strategy: */ - Listdatums List `json:"listdatums"` /* List of Consts (or A_Consts in raw tree) */ - - /* Partitioning info for RANGE strategy: */ - Lowerdatums List `json:"lowerdatums"` /* List of PartitionRangeDatums */ - Upperdatums List `json:"upperdatums"` /* List of PartitionRangeDatums */ - - Location int `json:"location"` /* token location, or -1 if unknown */ -} - -func (node PartitionBoundSpec) MarshalJSON() ([]byte, error) { - type PartitionBoundSpecMarshalAlias PartitionBoundSpec - return json.Marshal(map[string]interface{}{ - "PartitionBoundSpec": (*PartitionBoundSpecMarshalAlias)(&node), - }) -} - -func (node *PartitionBoundSpec) UnmarshalJSON(input []byte) (err error) { - var fields map[string]json.RawMessage - - err = json.Unmarshal(input, &fields) - if err != nil { - return - } - - if fields["strategy"] != nil { - var strVal string - err = json.Unmarshal(fields["strategy"], &strVal) - node.Strategy = strVal[0] - if err != nil { - return - } - } - - if fields["listdatums"] != nil { - node.Listdatums.Items, err = UnmarshalNodeArrayJSON(fields["listdatums"]) - if err != nil { - return - } - } - - if fields["lowerdatums"] != nil { - node.Lowerdatums.Items, err = UnmarshalNodeArrayJSON(fields["lowerdatums"]) - if err != nil { - return - } - } - - if fields["upperdatums"] != nil { - node.Upperdatums.Items, err = UnmarshalNodeArrayJSON(fields["upperdatums"]) - if err != nil { - return - } - } - - if fields["location"] != nil { - err = json.Unmarshal(fields["location"], &node.Location) - if err != nil { - return - } - } - - return -} diff --git a/nodes/partition_bound_spec_deparse.go b/nodes/partition_bound_spec_deparse.go deleted file mode 100644 index b8dbf5fe..00000000 --- a/nodes/partition_bound_spec_deparse.go +++ /dev/null @@ -1,7 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -func (node PartitionBoundSpec) Deparse() string { - panic("Not Implemented") -} diff --git a/nodes/partition_bound_spec_fingerprint.go b/nodes/partition_bound_spec_fingerprint.go deleted file mode 100644 index 4f8da783..00000000 --- a/nodes/partition_bound_spec_fingerprint.go +++ /dev/null @@ -1,50 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -func (node PartitionBoundSpec) Fingerprint(ctx FingerprintContext, parentNode Node, parentFieldName string) { - ctx.WriteString("PartitionBoundSpec") - - if len(node.Listdatums.Items) > 0 { - subCtx := FingerprintSubContext{} - node.Listdatums.Fingerprint(&subCtx, node, "Listdatums") - - if len(subCtx.parts) > 0 { - ctx.WriteString("listdatums") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - // Intentionally ignoring node.Location for fingerprinting - - if len(node.Lowerdatums.Items) > 0 { - subCtx := FingerprintSubContext{} - node.Lowerdatums.Fingerprint(&subCtx, node, "Lowerdatums") - - if len(subCtx.parts) > 0 { - ctx.WriteString("lowerdatums") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if node.Strategy != 0 { - ctx.WriteString("strategy") - ctx.WriteString(string(node.Strategy)) - - } - - if len(node.Upperdatums.Items) > 0 { - subCtx := FingerprintSubContext{} - node.Upperdatums.Fingerprint(&subCtx, node, "Upperdatums") - - if len(subCtx.parts) > 0 { - ctx.WriteString("upperdatums") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } -} diff --git a/nodes/partition_cmd.go b/nodes/partition_cmd.go deleted file mode 100644 index 50a63897..00000000 --- a/nodes/partition_cmd.go +++ /dev/null @@ -1,55 +0,0 @@ -// Auto-generated from postgres/src/include/nodes/parsenodes.h - DO NOT EDIT - -package pg_query - -import "encoding/json" - -/* - * PartitionCmd - info for ALTER TABLE ATTACH/DETACH PARTITION commands - */ -type PartitionCmd struct { - Name *RangeVar `json:"name"` /* name of partition to attach/detach */ - Bound *PartitionBoundSpec `json:"bound"` /* FOR VALUES, if attaching */ -} - -func (node PartitionCmd) MarshalJSON() ([]byte, error) { - type PartitionCmdMarshalAlias PartitionCmd - return json.Marshal(map[string]interface{}{ - "PartitionCmd": (*PartitionCmdMarshalAlias)(&node), - }) -} - -func (node *PartitionCmd) UnmarshalJSON(input []byte) (err error) { - var fields map[string]json.RawMessage - - err = json.Unmarshal(input, &fields) - if err != nil { - return - } - - if fields["name"] != nil { - var nodePtr *Node - nodePtr, err = UnmarshalNodePtrJSON(fields["name"]) - if err != nil { - return - } - if nodePtr != nil && *nodePtr != nil { - val := (*nodePtr).(RangeVar) - node.Name = &val - } - } - - if fields["bound"] != nil { - var nodePtr *Node - nodePtr, err = UnmarshalNodePtrJSON(fields["bound"]) - if err != nil { - return - } - if nodePtr != nil && *nodePtr != nil { - val := (*nodePtr).(PartitionBoundSpec) - node.Bound = &val - } - } - - return -} diff --git a/nodes/partition_cmd_deparse.go b/nodes/partition_cmd_deparse.go deleted file mode 100644 index 30836194..00000000 --- a/nodes/partition_cmd_deparse.go +++ /dev/null @@ -1,7 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -func (node PartitionCmd) Deparse() string { - panic("Not Implemented") -} diff --git a/nodes/partition_cmd_fingerprint.go b/nodes/partition_cmd_fingerprint.go deleted file mode 100644 index f4fddd6b..00000000 --- a/nodes/partition_cmd_fingerprint.go +++ /dev/null @@ -1,31 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -func (node PartitionCmd) Fingerprint(ctx FingerprintContext, parentNode Node, parentFieldName string) { - ctx.WriteString("PartitionCmd") - - if node.Bound != nil { - subCtx := FingerprintSubContext{} - node.Bound.Fingerprint(&subCtx, node, "Bound") - - if len(subCtx.parts) > 0 { - ctx.WriteString("bound") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if node.Name != nil { - subCtx := FingerprintSubContext{} - node.Name.Fingerprint(&subCtx, node, "Name") - - if len(subCtx.parts) > 0 { - ctx.WriteString("name") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } -} diff --git a/nodes/partition_elem.go b/nodes/partition_elem.go deleted file mode 100644 index ece970eb..00000000 --- a/nodes/partition_elem.go +++ /dev/null @@ -1,72 +0,0 @@ -// Auto-generated from postgres/src/include/nodes/parsenodes.h - DO NOT EDIT - -package pg_query - -import "encoding/json" - -/* - * PartitionElem - parse-time representation of a single partition key - * - * expr can be either a raw expression tree or a parse-analyzed expression. - * We don't store these on-disk, though. - */ -type PartitionElem struct { - Name *string `json:"name"` /* name of column to partition on, or NULL */ - Expr Node `json:"expr"` /* expression to partition on, or NULL */ - Collation List `json:"collation"` /* name of collation; NIL = default */ - Opclass List `json:"opclass"` /* name of desired opclass; NIL = default */ - Location int `json:"location"` /* token location, or -1 if unknown */ -} - -func (node PartitionElem) MarshalJSON() ([]byte, error) { - type PartitionElemMarshalAlias PartitionElem - return json.Marshal(map[string]interface{}{ - "PartitionElem": (*PartitionElemMarshalAlias)(&node), - }) -} - -func (node *PartitionElem) UnmarshalJSON(input []byte) (err error) { - var fields map[string]json.RawMessage - - err = json.Unmarshal(input, &fields) - if err != nil { - return - } - - if fields["name"] != nil { - err = json.Unmarshal(fields["name"], &node.Name) - if err != nil { - return - } - } - - if fields["expr"] != nil { - node.Expr, err = UnmarshalNodeJSON(fields["expr"]) - if err != nil { - return - } - } - - if fields["collation"] != nil { - node.Collation.Items, err = UnmarshalNodeArrayJSON(fields["collation"]) - if err != nil { - return - } - } - - if fields["opclass"] != nil { - node.Opclass.Items, err = UnmarshalNodeArrayJSON(fields["opclass"]) - if err != nil { - return - } - } - - if fields["location"] != nil { - err = json.Unmarshal(fields["location"], &node.Location) - if err != nil { - return - } - } - - return -} diff --git a/nodes/partition_elem_deparse.go b/nodes/partition_elem_deparse.go deleted file mode 100644 index 2413aef3..00000000 --- a/nodes/partition_elem_deparse.go +++ /dev/null @@ -1,7 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -func (node PartitionElem) Deparse() string { - panic("Not Implemented") -} diff --git a/nodes/partition_elem_fingerprint.go b/nodes/partition_elem_fingerprint.go deleted file mode 100644 index 8b56e1cc..00000000 --- a/nodes/partition_elem_fingerprint.go +++ /dev/null @@ -1,49 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -func (node PartitionElem) Fingerprint(ctx FingerprintContext, parentNode Node, parentFieldName string) { - ctx.WriteString("PartitionElem") - - if len(node.Collation.Items) > 0 { - subCtx := FingerprintSubContext{} - node.Collation.Fingerprint(&subCtx, node, "Collation") - - if len(subCtx.parts) > 0 { - ctx.WriteString("collation") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if node.Expr != nil { - subCtx := FingerprintSubContext{} - node.Expr.Fingerprint(&subCtx, node, "Expr") - - if len(subCtx.parts) > 0 { - ctx.WriteString("expr") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - // Intentionally ignoring node.Location for fingerprinting - - if node.Name != nil { - ctx.WriteString("name") - ctx.WriteString(*node.Name) - } - - if len(node.Opclass.Items) > 0 { - subCtx := FingerprintSubContext{} - node.Opclass.Fingerprint(&subCtx, node, "Opclass") - - if len(subCtx.parts) > 0 { - ctx.WriteString("opclass") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } -} diff --git a/nodes/partition_range_datum.go b/nodes/partition_range_datum.go deleted file mode 100644 index ad758d5d..00000000 --- a/nodes/partition_range_datum.go +++ /dev/null @@ -1,52 +0,0 @@ -// Auto-generated from postgres/src/include/nodes/parsenodes.h - DO NOT EDIT - -package pg_query - -import "encoding/json" - -type PartitionRangeDatum struct { - Kind PartitionRangeDatumKind `json:"kind"` - Value Node `json:"value"` /* Const (or A_Const in raw tree), if kind is - * PARTITION_RANGE_DATUM_VALUE, else NULL */ - - Location int `json:"location"` /* token location, or -1 if unknown */ -} - -func (node PartitionRangeDatum) MarshalJSON() ([]byte, error) { - type PartitionRangeDatumMarshalAlias PartitionRangeDatum - return json.Marshal(map[string]interface{}{ - "PartitionRangeDatum": (*PartitionRangeDatumMarshalAlias)(&node), - }) -} - -func (node *PartitionRangeDatum) UnmarshalJSON(input []byte) (err error) { - var fields map[string]json.RawMessage - - err = json.Unmarshal(input, &fields) - if err != nil { - return - } - - if fields["kind"] != nil { - err = json.Unmarshal(fields["kind"], &node.Kind) - if err != nil { - return - } - } - - if fields["value"] != nil { - node.Value, err = UnmarshalNodeJSON(fields["value"]) - if err != nil { - return - } - } - - if fields["location"] != nil { - err = json.Unmarshal(fields["location"], &node.Location) - if err != nil { - return - } - } - - return -} diff --git a/nodes/partition_range_datum_deparse.go b/nodes/partition_range_datum_deparse.go deleted file mode 100644 index 86817542..00000000 --- a/nodes/partition_range_datum_deparse.go +++ /dev/null @@ -1,7 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -func (node PartitionRangeDatum) Deparse() string { - panic("Not Implemented") -} diff --git a/nodes/partition_range_datum_fingerprint.go b/nodes/partition_range_datum_fingerprint.go deleted file mode 100644 index 9579907f..00000000 --- a/nodes/partition_range_datum_fingerprint.go +++ /dev/null @@ -1,28 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -import "strconv" - -func (node PartitionRangeDatum) Fingerprint(ctx FingerprintContext, parentNode Node, parentFieldName string) { - ctx.WriteString("PartitionRangeDatum") - - if int(node.Kind) != 0 { - ctx.WriteString("kind") - ctx.WriteString(strconv.Itoa(int(node.Kind))) - } - - // Intentionally ignoring node.Location for fingerprinting - - if node.Value != nil { - subCtx := FingerprintSubContext{} - node.Value.Fingerprint(&subCtx, node, "Value") - - if len(subCtx.parts) > 0 { - ctx.WriteString("value") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } -} diff --git a/nodes/partition_range_datum_kind.go b/nodes/partition_range_datum_kind.go deleted file mode 100644 index 89ca9e5c..00000000 --- a/nodes/partition_range_datum_kind.go +++ /dev/null @@ -1,16 +0,0 @@ -// Auto-generated from postgres/src/include/nodes/parsenodes.h - DO NOT EDIT - -package pg_query - -/* - * PartitionRangeDatum - one of the values in a range partition bound - * - * This can be MINVALUE, MAXVALUE or a specific bounded value. - */ -type PartitionRangeDatumKind uint - -const ( - PARTITION_RANGE_DATUM_MINVALUE PartitionRangeDatumKind = iota - PARTITION_RANGE_DATUM_VALUE - PARTITION_RANGE_DATUM_MAXVALUE -) diff --git a/nodes/partition_spec.go b/nodes/partition_spec.go deleted file mode 100644 index 8dde68ab..00000000 --- a/nodes/partition_spec.go +++ /dev/null @@ -1,55 +0,0 @@ -// Auto-generated from postgres/src/include/nodes/parsenodes.h - DO NOT EDIT - -package pg_query - -import "encoding/json" - -/* - * PartitionSpec - parse-time representation of a partition key specification - * - * This represents the key space we will be partitioning on. - */ -type PartitionSpec struct { - Strategy *string `json:"strategy"` /* partitioning strategy ('list' or 'range') */ - PartParams List `json:"partParams"` /* List of PartitionElems */ - Location int `json:"location"` /* token location, or -1 if unknown */ -} - -func (node PartitionSpec) MarshalJSON() ([]byte, error) { - type PartitionSpecMarshalAlias PartitionSpec - return json.Marshal(map[string]interface{}{ - "PartitionSpec": (*PartitionSpecMarshalAlias)(&node), - }) -} - -func (node *PartitionSpec) UnmarshalJSON(input []byte) (err error) { - var fields map[string]json.RawMessage - - err = json.Unmarshal(input, &fields) - if err != nil { - return - } - - if fields["strategy"] != nil { - err = json.Unmarshal(fields["strategy"], &node.Strategy) - if err != nil { - return - } - } - - if fields["partParams"] != nil { - node.PartParams.Items, err = UnmarshalNodeArrayJSON(fields["partParams"]) - if err != nil { - return - } - } - - if fields["location"] != nil { - err = json.Unmarshal(fields["location"], &node.Location) - if err != nil { - return - } - } - - return -} diff --git a/nodes/partition_spec_deparse.go b/nodes/partition_spec_deparse.go deleted file mode 100644 index e13c6e91..00000000 --- a/nodes/partition_spec_deparse.go +++ /dev/null @@ -1,7 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -func (node PartitionSpec) Deparse() string { - panic("Not Implemented") -} diff --git a/nodes/partition_spec_fingerprint.go b/nodes/partition_spec_fingerprint.go deleted file mode 100644 index 7aa613d7..00000000 --- a/nodes/partition_spec_fingerprint.go +++ /dev/null @@ -1,25 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -func (node PartitionSpec) Fingerprint(ctx FingerprintContext, parentNode Node, parentFieldName string) { - ctx.WriteString("PartitionSpec") - // Intentionally ignoring node.Location for fingerprinting - - if len(node.PartParams.Items) > 0 { - subCtx := FingerprintSubContext{} - node.PartParams.Fingerprint(&subCtx, node, "PartParams") - - if len(subCtx.parts) > 0 { - ctx.WriteString("partParams") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if node.Strategy != nil { - ctx.WriteString("strategy") - ctx.WriteString(*node.Strategy) - } -} diff --git a/nodes/prepare_stmt.go b/nodes/prepare_stmt.go deleted file mode 100644 index da6ef039..00000000 --- a/nodes/prepare_stmt.go +++ /dev/null @@ -1,54 +0,0 @@ -// Auto-generated from postgres/src/include/nodes/parsenodes.h - DO NOT EDIT - -package pg_query - -import "encoding/json" - -/* ---------------------- - * PREPARE Statement - * ---------------------- - */ -type PrepareStmt struct { - Name *string `json:"name"` /* Name of plan, arbitrary */ - Argtypes List `json:"argtypes"` /* Types of parameters (List of TypeName) */ - Query Node `json:"query"` /* The query itself (as a raw parsetree) */ -} - -func (node PrepareStmt) MarshalJSON() ([]byte, error) { - type PrepareStmtMarshalAlias PrepareStmt - return json.Marshal(map[string]interface{}{ - "PrepareStmt": (*PrepareStmtMarshalAlias)(&node), - }) -} - -func (node *PrepareStmt) UnmarshalJSON(input []byte) (err error) { - var fields map[string]json.RawMessage - - err = json.Unmarshal(input, &fields) - if err != nil { - return - } - - if fields["name"] != nil { - err = json.Unmarshal(fields["name"], &node.Name) - if err != nil { - return - } - } - - if fields["argtypes"] != nil { - node.Argtypes.Items, err = UnmarshalNodeArrayJSON(fields["argtypes"]) - if err != nil { - return - } - } - - if fields["query"] != nil { - node.Query, err = UnmarshalNodeJSON(fields["query"]) - if err != nil { - return - } - } - - return -} diff --git a/nodes/prepare_stmt_deparse.go b/nodes/prepare_stmt_deparse.go deleted file mode 100644 index 0c97d2c3..00000000 --- a/nodes/prepare_stmt_deparse.go +++ /dev/null @@ -1,7 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -func (node PrepareStmt) Deparse() string { - panic("Not Implemented") -} diff --git a/nodes/prepare_stmt_fingerprint.go b/nodes/prepare_stmt_fingerprint.go deleted file mode 100644 index 95ba95be..00000000 --- a/nodes/prepare_stmt_fingerprint.go +++ /dev/null @@ -1,32 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -func (node PrepareStmt) Fingerprint(ctx FingerprintContext, parentNode Node, parentFieldName string) { - ctx.WriteString("PrepareStmt") - - if len(node.Argtypes.Items) > 0 { - subCtx := FingerprintSubContext{} - node.Argtypes.Fingerprint(&subCtx, node, "Argtypes") - - if len(subCtx.parts) > 0 { - ctx.WriteString("argtypes") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - // Intentionally ignoring node.Name for fingerprinting - - if node.Query != nil { - subCtx := FingerprintSubContext{} - node.Query.Fingerprint(&subCtx, node, "Query") - - if len(subCtx.parts) > 0 { - ctx.WriteString("query") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } -} diff --git a/nodes/query.go b/nodes/query.go deleted file mode 100644 index 5895bf3c..00000000 --- a/nodes/query.go +++ /dev/null @@ -1,370 +0,0 @@ -// Auto-generated from postgres/src/include/nodes/parsenodes.h - DO NOT EDIT - -package pg_query - -import "encoding/json" - -/* - * Query - - * Parse analysis turns all statements into a Query tree - * for further processing by the rewriter and planner. - * - * Utility statements (i.e. non-optimizable statements) have the - * utilityStmt field set, and the rest of the Query is mostly dummy. - * - * Planning converts a Query tree into a Plan tree headed by a PlannedStmt - * node --- the Query structure is not used by the executor. - */ -type Query struct { - CommandType CmdType `json:"commandType"` /* select|insert|update|delete|utility */ - - QuerySource QuerySource `json:"querySource"` /* where did I come from? */ - - QueryId uint32 `json:"queryId"` /* query identifier (can be set by plugins) */ - - CanSetTag bool `json:"canSetTag"` /* do I set the command result tag? */ - - UtilityStmt Node `json:"utilityStmt"` /* non-null if commandType == CMD_UTILITY */ - - ResultRelation int `json:"resultRelation"` /* rtable index of target relation for - * INSERT/UPDATE/DELETE; 0 for SELECT */ - - HasAggs bool `json:"hasAggs"` /* has aggregates in tlist or havingQual */ - HasWindowFuncs bool `json:"hasWindowFuncs"` /* has window functions in tlist */ - HasTargetSrfs bool `json:"hasTargetSRFs"` /* has set-returning functions in tlist */ - HasSubLinks bool `json:"hasSubLinks"` /* has subquery SubLink */ - HasDistinctOn bool `json:"hasDistinctOn"` /* distinctClause is from DISTINCT ON */ - HasRecursive bool `json:"hasRecursive"` /* WITH RECURSIVE was specified */ - HasModifyingCte bool `json:"hasModifyingCTE"` /* has INSERT/UPDATE/DELETE in WITH */ - HasForUpdate bool `json:"hasForUpdate"` /* FOR [KEY] UPDATE/SHARE was specified */ - HasRowSecurity bool `json:"hasRowSecurity"` /* rewriter has applied some RLS policy */ - - CteList List `json:"cteList"` /* WITH list (of CommonTableExpr's) */ - - Rtable List `json:"rtable"` /* list of range table entries */ - Jointree *FromExpr `json:"jointree"` /* table join tree (FROM and WHERE clauses) */ - - TargetList List `json:"targetList"` /* target list (of TargetEntry) */ - - Override OverridingKind `json:"override"` /* OVERRIDING clause */ - - OnConflict *OnConflictExpr `json:"onConflict"` /* ON CONFLICT DO [NOTHING | UPDATE] */ - - ReturningList List `json:"returningList"` /* return-values list (of TargetEntry) */ - - GroupClause List `json:"groupClause"` /* a list of SortGroupClause's */ - - GroupingSets List `json:"groupingSets"` /* a list of GroupingSet's if present */ - - HavingQual Node `json:"havingQual"` /* qualifications applied to groups */ - - WindowClause List `json:"windowClause"` /* a list of WindowClause's */ - - DistinctClause List `json:"distinctClause"` /* a list of SortGroupClause's */ - - SortClause List `json:"sortClause"` /* a list of SortGroupClause's */ - - LimitOffset Node `json:"limitOffset"` /* # of result tuples to skip (int8 expr) */ - LimitCount Node `json:"limitCount"` /* # of result tuples to return (int8 expr) */ - - RowMarks List `json:"rowMarks"` /* a list of RowMarkClause's */ - - SetOperations Node `json:"setOperations"` /* set-operation tree if this is top level of - * a UNION/INTERSECT/EXCEPT query */ - - ConstraintDeps List `json:"constraintDeps"` /* a list of pg_constraint OIDs that the query - * depends on to be semantically valid */ - - WithCheckOptions List `json:"withCheckOptions"` /* a list of WithCheckOption's, which are - * only added during rewrite and therefore - * are not written out as part of Query. */ - - /* - * The following two fields identify the portion of the source text string - * containing this query. They are typically only populated in top-level - * Queries, not in sub-queries. When not set, they might both be zero, or - * both be -1 meaning "unknown". - */ - StmtLocation int `json:"stmt_location"` /* start location, or -1 if unknown */ - StmtLen int `json:"stmt_len"` /* length in bytes; 0 means "rest of string" */ -} - -func (node Query) MarshalJSON() ([]byte, error) { - type QueryMarshalAlias Query - return json.Marshal(map[string]interface{}{ - "Query": (*QueryMarshalAlias)(&node), - }) -} - -func (node *Query) UnmarshalJSON(input []byte) (err error) { - var fields map[string]json.RawMessage - - err = json.Unmarshal(input, &fields) - if err != nil { - return - } - - if fields["commandType"] != nil { - err = json.Unmarshal(fields["commandType"], &node.CommandType) - if err != nil { - return - } - } - - if fields["querySource"] != nil { - err = json.Unmarshal(fields["querySource"], &node.QuerySource) - if err != nil { - return - } - } - - if fields["queryId"] != nil { - err = json.Unmarshal(fields["queryId"], &node.QueryId) - if err != nil { - return - } - } - - if fields["canSetTag"] != nil { - err = json.Unmarshal(fields["canSetTag"], &node.CanSetTag) - if err != nil { - return - } - } - - if fields["utilityStmt"] != nil { - node.UtilityStmt, err = UnmarshalNodeJSON(fields["utilityStmt"]) - if err != nil { - return - } - } - - if fields["resultRelation"] != nil { - err = json.Unmarshal(fields["resultRelation"], &node.ResultRelation) - if err != nil { - return - } - } - - if fields["hasAggs"] != nil { - err = json.Unmarshal(fields["hasAggs"], &node.HasAggs) - if err != nil { - return - } - } - - if fields["hasWindowFuncs"] != nil { - err = json.Unmarshal(fields["hasWindowFuncs"], &node.HasWindowFuncs) - if err != nil { - return - } - } - - if fields["hasTargetSRFs"] != nil { - err = json.Unmarshal(fields["hasTargetSRFs"], &node.HasTargetSrfs) - if err != nil { - return - } - } - - if fields["hasSubLinks"] != nil { - err = json.Unmarshal(fields["hasSubLinks"], &node.HasSubLinks) - if err != nil { - return - } - } - - if fields["hasDistinctOn"] != nil { - err = json.Unmarshal(fields["hasDistinctOn"], &node.HasDistinctOn) - if err != nil { - return - } - } - - if fields["hasRecursive"] != nil { - err = json.Unmarshal(fields["hasRecursive"], &node.HasRecursive) - if err != nil { - return - } - } - - if fields["hasModifyingCTE"] != nil { - err = json.Unmarshal(fields["hasModifyingCTE"], &node.HasModifyingCte) - if err != nil { - return - } - } - - if fields["hasForUpdate"] != nil { - err = json.Unmarshal(fields["hasForUpdate"], &node.HasForUpdate) - if err != nil { - return - } - } - - if fields["hasRowSecurity"] != nil { - err = json.Unmarshal(fields["hasRowSecurity"], &node.HasRowSecurity) - if err != nil { - return - } - } - - if fields["cteList"] != nil { - node.CteList.Items, err = UnmarshalNodeArrayJSON(fields["cteList"]) - if err != nil { - return - } - } - - if fields["rtable"] != nil { - node.Rtable.Items, err = UnmarshalNodeArrayJSON(fields["rtable"]) - if err != nil { - return - } - } - - if fields["jointree"] != nil { - var nodePtr *Node - nodePtr, err = UnmarshalNodePtrJSON(fields["jointree"]) - if err != nil { - return - } - if nodePtr != nil && *nodePtr != nil { - val := (*nodePtr).(FromExpr) - node.Jointree = &val - } - } - - if fields["targetList"] != nil { - node.TargetList.Items, err = UnmarshalNodeArrayJSON(fields["targetList"]) - if err != nil { - return - } - } - - if fields["override"] != nil { - err = json.Unmarshal(fields["override"], &node.Override) - if err != nil { - return - } - } - - if fields["onConflict"] != nil { - var nodePtr *Node - nodePtr, err = UnmarshalNodePtrJSON(fields["onConflict"]) - if err != nil { - return - } - if nodePtr != nil && *nodePtr != nil { - val := (*nodePtr).(OnConflictExpr) - node.OnConflict = &val - } - } - - if fields["returningList"] != nil { - node.ReturningList.Items, err = UnmarshalNodeArrayJSON(fields["returningList"]) - if err != nil { - return - } - } - - if fields["groupClause"] != nil { - node.GroupClause.Items, err = UnmarshalNodeArrayJSON(fields["groupClause"]) - if err != nil { - return - } - } - - if fields["groupingSets"] != nil { - node.GroupingSets.Items, err = UnmarshalNodeArrayJSON(fields["groupingSets"]) - if err != nil { - return - } - } - - if fields["havingQual"] != nil { - node.HavingQual, err = UnmarshalNodeJSON(fields["havingQual"]) - if err != nil { - return - } - } - - if fields["windowClause"] != nil { - node.WindowClause.Items, err = UnmarshalNodeArrayJSON(fields["windowClause"]) - if err != nil { - return - } - } - - if fields["distinctClause"] != nil { - node.DistinctClause.Items, err = UnmarshalNodeArrayJSON(fields["distinctClause"]) - if err != nil { - return - } - } - - if fields["sortClause"] != nil { - node.SortClause.Items, err = UnmarshalNodeArrayJSON(fields["sortClause"]) - if err != nil { - return - } - } - - if fields["limitOffset"] != nil { - node.LimitOffset, err = UnmarshalNodeJSON(fields["limitOffset"]) - if err != nil { - return - } - } - - if fields["limitCount"] != nil { - node.LimitCount, err = UnmarshalNodeJSON(fields["limitCount"]) - if err != nil { - return - } - } - - if fields["rowMarks"] != nil { - node.RowMarks.Items, err = UnmarshalNodeArrayJSON(fields["rowMarks"]) - if err != nil { - return - } - } - - if fields["setOperations"] != nil { - node.SetOperations, err = UnmarshalNodeJSON(fields["setOperations"]) - if err != nil { - return - } - } - - if fields["constraintDeps"] != nil { - node.ConstraintDeps.Items, err = UnmarshalNodeArrayJSON(fields["constraintDeps"]) - if err != nil { - return - } - } - - if fields["withCheckOptions"] != nil { - node.WithCheckOptions.Items, err = UnmarshalNodeArrayJSON(fields["withCheckOptions"]) - if err != nil { - return - } - } - - if fields["stmt_location"] != nil { - err = json.Unmarshal(fields["stmt_location"], &node.StmtLocation) - if err != nil { - return - } - } - - if fields["stmt_len"] != nil { - err = json.Unmarshal(fields["stmt_len"], &node.StmtLen) - if err != nil { - return - } - } - - return -} diff --git a/nodes/query_deparse.go b/nodes/query_deparse.go deleted file mode 100644 index 148d0d04..00000000 --- a/nodes/query_deparse.go +++ /dev/null @@ -1,7 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -func (node Query) Deparse() string { - panic("Not Implemented") -} diff --git a/nodes/query_fingerprint.go b/nodes/query_fingerprint.go deleted file mode 100644 index 340c46d4..00000000 --- a/nodes/query_fingerprint.go +++ /dev/null @@ -1,322 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -import "strconv" - -func (node Query) Fingerprint(ctx FingerprintContext, parentNode Node, parentFieldName string) { - ctx.WriteString("Query") - - if node.CanSetTag { - ctx.WriteString("canSetTag") - ctx.WriteString(strconv.FormatBool(node.CanSetTag)) - } - - if int(node.CommandType) != 0 { - ctx.WriteString("commandType") - ctx.WriteString(strconv.Itoa(int(node.CommandType))) - } - - if len(node.ConstraintDeps.Items) > 0 { - subCtx := FingerprintSubContext{} - node.ConstraintDeps.Fingerprint(&subCtx, node, "ConstraintDeps") - - if len(subCtx.parts) > 0 { - ctx.WriteString("constraintDeps") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if len(node.CteList.Items) > 0 { - subCtx := FingerprintSubContext{} - node.CteList.Fingerprint(&subCtx, node, "CteList") - - if len(subCtx.parts) > 0 { - ctx.WriteString("cteList") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if len(node.DistinctClause.Items) > 0 { - subCtx := FingerprintSubContext{} - node.DistinctClause.Fingerprint(&subCtx, node, "DistinctClause") - - if len(subCtx.parts) > 0 { - ctx.WriteString("distinctClause") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if len(node.GroupClause.Items) > 0 { - subCtx := FingerprintSubContext{} - node.GroupClause.Fingerprint(&subCtx, node, "GroupClause") - - if len(subCtx.parts) > 0 { - ctx.WriteString("groupClause") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if len(node.GroupingSets.Items) > 0 { - subCtx := FingerprintSubContext{} - node.GroupingSets.Fingerprint(&subCtx, node, "GroupingSets") - - if len(subCtx.parts) > 0 { - ctx.WriteString("groupingSets") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if node.HasAggs { - ctx.WriteString("hasAggs") - ctx.WriteString(strconv.FormatBool(node.HasAggs)) - } - - if node.HasDistinctOn { - ctx.WriteString("hasDistinctOn") - ctx.WriteString(strconv.FormatBool(node.HasDistinctOn)) - } - - if node.HasForUpdate { - ctx.WriteString("hasForUpdate") - ctx.WriteString(strconv.FormatBool(node.HasForUpdate)) - } - - if node.HasModifyingCte { - ctx.WriteString("hasModifyingCTE") - ctx.WriteString(strconv.FormatBool(node.HasModifyingCte)) - } - - if node.HasRecursive { - ctx.WriteString("hasRecursive") - ctx.WriteString(strconv.FormatBool(node.HasRecursive)) - } - - if node.HasRowSecurity { - ctx.WriteString("hasRowSecurity") - ctx.WriteString(strconv.FormatBool(node.HasRowSecurity)) - } - - if node.HasSubLinks { - ctx.WriteString("hasSubLinks") - ctx.WriteString(strconv.FormatBool(node.HasSubLinks)) - } - - if node.HasTargetSrfs { - ctx.WriteString("hasTargetSRFs") - ctx.WriteString(strconv.FormatBool(node.HasTargetSrfs)) - } - - if node.HasWindowFuncs { - ctx.WriteString("hasWindowFuncs") - ctx.WriteString(strconv.FormatBool(node.HasWindowFuncs)) - } - - if node.HavingQual != nil { - subCtx := FingerprintSubContext{} - node.HavingQual.Fingerprint(&subCtx, node, "HavingQual") - - if len(subCtx.parts) > 0 { - ctx.WriteString("havingQual") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if node.Jointree != nil { - subCtx := FingerprintSubContext{} - node.Jointree.Fingerprint(&subCtx, node, "Jointree") - - if len(subCtx.parts) > 0 { - ctx.WriteString("jointree") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if node.LimitCount != nil { - subCtx := FingerprintSubContext{} - node.LimitCount.Fingerprint(&subCtx, node, "LimitCount") - - if len(subCtx.parts) > 0 { - ctx.WriteString("limitCount") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if node.LimitOffset != nil { - subCtx := FingerprintSubContext{} - node.LimitOffset.Fingerprint(&subCtx, node, "LimitOffset") - - if len(subCtx.parts) > 0 { - ctx.WriteString("limitOffset") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if node.OnConflict != nil { - subCtx := FingerprintSubContext{} - node.OnConflict.Fingerprint(&subCtx, node, "OnConflict") - - if len(subCtx.parts) > 0 { - ctx.WriteString("onConflict") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if int(node.Override) != 0 { - ctx.WriteString("override") - ctx.WriteString(strconv.Itoa(int(node.Override))) - } - - if node.QueryId != 0 { - ctx.WriteString("queryId") - ctx.WriteString(strconv.Itoa(int(node.QueryId))) - } - - if int(node.QuerySource) != 0 { - ctx.WriteString("querySource") - ctx.WriteString(strconv.Itoa(int(node.QuerySource))) - } - - if node.ResultRelation != 0 { - ctx.WriteString("resultRelation") - ctx.WriteString(strconv.Itoa(int(node.ResultRelation))) - } - - if len(node.ReturningList.Items) > 0 { - subCtx := FingerprintSubContext{} - node.ReturningList.Fingerprint(&subCtx, node, "ReturningList") - - if len(subCtx.parts) > 0 { - ctx.WriteString("returningList") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if len(node.RowMarks.Items) > 0 { - subCtx := FingerprintSubContext{} - node.RowMarks.Fingerprint(&subCtx, node, "RowMarks") - - if len(subCtx.parts) > 0 { - ctx.WriteString("rowMarks") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if len(node.Rtable.Items) > 0 { - subCtx := FingerprintSubContext{} - node.Rtable.Fingerprint(&subCtx, node, "Rtable") - - if len(subCtx.parts) > 0 { - ctx.WriteString("rtable") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if node.SetOperations != nil { - subCtx := FingerprintSubContext{} - node.SetOperations.Fingerprint(&subCtx, node, "SetOperations") - - if len(subCtx.parts) > 0 { - ctx.WriteString("setOperations") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if len(node.SortClause.Items) > 0 { - subCtx := FingerprintSubContext{} - node.SortClause.Fingerprint(&subCtx, node, "SortClause") - - if len(subCtx.parts) > 0 { - ctx.WriteString("sortClause") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if node.StmtLen != 0 { - ctx.WriteString("stmt_len") - ctx.WriteString(strconv.Itoa(int(node.StmtLen))) - } - - if node.StmtLocation != 0 { - ctx.WriteString("stmt_location") - ctx.WriteString(strconv.Itoa(int(node.StmtLocation))) - } - - if len(node.TargetList.Items) > 0 { - subCtx := FingerprintSubContext{} - node.TargetList.Fingerprint(&subCtx, node, "TargetList") - - if len(subCtx.parts) > 0 { - ctx.WriteString("targetList") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if node.UtilityStmt != nil { - subCtx := FingerprintSubContext{} - node.UtilityStmt.Fingerprint(&subCtx, node, "UtilityStmt") - - if len(subCtx.parts) > 0 { - ctx.WriteString("utilityStmt") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if len(node.WindowClause.Items) > 0 { - subCtx := FingerprintSubContext{} - node.WindowClause.Fingerprint(&subCtx, node, "WindowClause") - - if len(subCtx.parts) > 0 { - ctx.WriteString("windowClause") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if len(node.WithCheckOptions.Items) > 0 { - subCtx := FingerprintSubContext{} - node.WithCheckOptions.Fingerprint(&subCtx, node, "WithCheckOptions") - - if len(subCtx.parts) > 0 { - ctx.WriteString("withCheckOptions") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } -} diff --git a/nodes/query_source.go b/nodes/query_source.go deleted file mode 100644 index 6bfcd69d..00000000 --- a/nodes/query_source.go +++ /dev/null @@ -1,14 +0,0 @@ -// Auto-generated from postgres/src/include/nodes/parsenodes.h - DO NOT EDIT - -package pg_query - -/* Possible sources of a Query */ -type QuerySource uint - -const ( - QSRC_ORIGINAL QuerySource = iota /* original parsetree (explicit query) */ - QSRC_PARSER /* added by parse analysis (now unused) */ - QSRC_INSTEAD_RULE /* added by unconditional INSTEAD rule */ - QSRC_QUAL_INSTEAD_RULE /* added by conditional INSTEAD rule */ - QSRC_NON_INSTEAD_RULE /* added by non-INSTEAD rule */ -) diff --git a/nodes/range_function.go b/nodes/range_function.go deleted file mode 100644 index 76134ef9..00000000 --- a/nodes/range_function.go +++ /dev/null @@ -1,94 +0,0 @@ -// Auto-generated from postgres/src/include/nodes/parsenodes.h - DO NOT EDIT - -package pg_query - -import "encoding/json" - -/* - * RangeFunction - function call appearing in a FROM clause - * - * functions is a List because we use this to represent the construct - * ROWS FROM(func1(...), func2(...), ...). Each element of this list is a - * two-element sublist, the first element being the untransformed function - * call tree, and the second element being a possibly-empty list of ColumnDef - * nodes representing any columndef list attached to that function within the - * ROWS FROM() syntax. - * - * alias and coldeflist represent any alias and/or columndef list attached - * at the top level. (We disallow coldeflist appearing both here and - * per-function, but that's checked in parse analysis, not by the grammar.) - */ -type RangeFunction struct { - Lateral bool `json:"lateral"` /* does it have LATERAL prefix? */ - Ordinality bool `json:"ordinality"` /* does it have WITH ORDINALITY suffix? */ - IsRowsfrom bool `json:"is_rowsfrom"` /* is result of ROWS FROM() syntax? */ - Functions List `json:"functions"` /* per-function information, see above */ - Alias *Alias `json:"alias"` /* table alias & optional column aliases */ - Coldeflist List `json:"coldeflist"` /* list of ColumnDef nodes to describe result - * of function returning RECORD */ -} - -func (node RangeFunction) MarshalJSON() ([]byte, error) { - type RangeFunctionMarshalAlias RangeFunction - return json.Marshal(map[string]interface{}{ - "RangeFunction": (*RangeFunctionMarshalAlias)(&node), - }) -} - -func (node *RangeFunction) UnmarshalJSON(input []byte) (err error) { - var fields map[string]json.RawMessage - - err = json.Unmarshal(input, &fields) - if err != nil { - return - } - - if fields["lateral"] != nil { - err = json.Unmarshal(fields["lateral"], &node.Lateral) - if err != nil { - return - } - } - - if fields["ordinality"] != nil { - err = json.Unmarshal(fields["ordinality"], &node.Ordinality) - if err != nil { - return - } - } - - if fields["is_rowsfrom"] != nil { - err = json.Unmarshal(fields["is_rowsfrom"], &node.IsRowsfrom) - if err != nil { - return - } - } - - if fields["functions"] != nil { - node.Functions.Items, err = UnmarshalNodeArrayJSON(fields["functions"]) - if err != nil { - return - } - } - - if fields["alias"] != nil { - var nodePtr *Node - nodePtr, err = UnmarshalNodePtrJSON(fields["alias"]) - if err != nil { - return - } - if nodePtr != nil && *nodePtr != nil { - val := (*nodePtr).(Alias) - node.Alias = &val - } - } - - if fields["coldeflist"] != nil { - node.Coldeflist.Items, err = UnmarshalNodeArrayJSON(fields["coldeflist"]) - if err != nil { - return - } - } - - return -} diff --git a/nodes/range_function_deparse.go b/nodes/range_function_deparse.go deleted file mode 100644 index 92961764..00000000 --- a/nodes/range_function_deparse.go +++ /dev/null @@ -1,7 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -func (node RangeFunction) Deparse() string { - panic("Not Implemented") -} diff --git a/nodes/range_function_fingerprint.go b/nodes/range_function_fingerprint.go deleted file mode 100644 index 8921e689..00000000 --- a/nodes/range_function_fingerprint.go +++ /dev/null @@ -1,60 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -import "strconv" - -func (node RangeFunction) Fingerprint(ctx FingerprintContext, parentNode Node, parentFieldName string) { - ctx.WriteString("RangeFunction") - - if node.Alias != nil { - subCtx := FingerprintSubContext{} - node.Alias.Fingerprint(&subCtx, node, "Alias") - - if len(subCtx.parts) > 0 { - ctx.WriteString("alias") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if len(node.Coldeflist.Items) > 0 { - subCtx := FingerprintSubContext{} - node.Coldeflist.Fingerprint(&subCtx, node, "Coldeflist") - - if len(subCtx.parts) > 0 { - ctx.WriteString("coldeflist") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if len(node.Functions.Items) > 0 { - subCtx := FingerprintSubContext{} - node.Functions.Fingerprint(&subCtx, node, "Functions") - - if len(subCtx.parts) > 0 { - ctx.WriteString("functions") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if node.IsRowsfrom { - ctx.WriteString("is_rowsfrom") - ctx.WriteString(strconv.FormatBool(node.IsRowsfrom)) - } - - if node.Lateral { - ctx.WriteString("lateral") - ctx.WriteString(strconv.FormatBool(node.Lateral)) - } - - if node.Ordinality { - ctx.WriteString("ordinality") - ctx.WriteString(strconv.FormatBool(node.Ordinality)) - } -} diff --git a/nodes/range_subselect.go b/nodes/range_subselect.go deleted file mode 100644 index 7f18aa86..00000000 --- a/nodes/range_subselect.go +++ /dev/null @@ -1,58 +0,0 @@ -// Auto-generated from postgres/src/include/nodes/parsenodes.h - DO NOT EDIT - -package pg_query - -import "encoding/json" - -/* - * RangeSubselect - subquery appearing in a FROM clause - */ -type RangeSubselect struct { - Lateral bool `json:"lateral"` /* does it have LATERAL prefix? */ - Subquery Node `json:"subquery"` /* the untransformed sub-select clause */ - Alias *Alias `json:"alias"` /* table alias & optional column aliases */ -} - -func (node RangeSubselect) MarshalJSON() ([]byte, error) { - type RangeSubselectMarshalAlias RangeSubselect - return json.Marshal(map[string]interface{}{ - "RangeSubselect": (*RangeSubselectMarshalAlias)(&node), - }) -} - -func (node *RangeSubselect) UnmarshalJSON(input []byte) (err error) { - var fields map[string]json.RawMessage - - err = json.Unmarshal(input, &fields) - if err != nil { - return - } - - if fields["lateral"] != nil { - err = json.Unmarshal(fields["lateral"], &node.Lateral) - if err != nil { - return - } - } - - if fields["subquery"] != nil { - node.Subquery, err = UnmarshalNodeJSON(fields["subquery"]) - if err != nil { - return - } - } - - if fields["alias"] != nil { - var nodePtr *Node - nodePtr, err = UnmarshalNodePtrJSON(fields["alias"]) - if err != nil { - return - } - if nodePtr != nil && *nodePtr != nil { - val := (*nodePtr).(Alias) - node.Alias = &val - } - } - - return -} diff --git a/nodes/range_subselect_deparse.go b/nodes/range_subselect_deparse.go deleted file mode 100644 index 541037f4..00000000 --- a/nodes/range_subselect_deparse.go +++ /dev/null @@ -1,7 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -func (node RangeSubselect) Deparse() string { - panic("Not Implemented") -} diff --git a/nodes/range_subselect_fingerprint.go b/nodes/range_subselect_fingerprint.go deleted file mode 100644 index b4dd9e6b..00000000 --- a/nodes/range_subselect_fingerprint.go +++ /dev/null @@ -1,38 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -import "strconv" - -func (node RangeSubselect) Fingerprint(ctx FingerprintContext, parentNode Node, parentFieldName string) { - ctx.WriteString("RangeSubselect") - - if node.Alias != nil { - subCtx := FingerprintSubContext{} - node.Alias.Fingerprint(&subCtx, node, "Alias") - - if len(subCtx.parts) > 0 { - ctx.WriteString("alias") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if node.Lateral { - ctx.WriteString("lateral") - ctx.WriteString(strconv.FormatBool(node.Lateral)) - } - - if node.Subquery != nil { - subCtx := FingerprintSubContext{} - node.Subquery.Fingerprint(&subCtx, node, "Subquery") - - if len(subCtx.parts) > 0 { - ctx.WriteString("subquery") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } -} diff --git a/nodes/range_table_func.go b/nodes/range_table_func.go deleted file mode 100644 index af0bc1ed..00000000 --- a/nodes/range_table_func.go +++ /dev/null @@ -1,90 +0,0 @@ -// Auto-generated from postgres/src/include/nodes/parsenodes.h - DO NOT EDIT - -package pg_query - -import "encoding/json" - -/* - * RangeTableFunc - raw form of "table functions" such as XMLTABLE - */ -type RangeTableFunc struct { - Lateral bool `json:"lateral"` /* does it have LATERAL prefix? */ - Docexpr Node `json:"docexpr"` /* document expression */ - Rowexpr Node `json:"rowexpr"` /* row generator expression */ - Namespaces List `json:"namespaces"` /* list of namespaces as ResTarget */ - Columns List `json:"columns"` /* list of RangeTableFuncCol */ - Alias *Alias `json:"alias"` /* table alias & optional column aliases */ - Location int `json:"location"` /* token location, or -1 if unknown */ -} - -func (node RangeTableFunc) MarshalJSON() ([]byte, error) { - type RangeTableFuncMarshalAlias RangeTableFunc - return json.Marshal(map[string]interface{}{ - "RangeTableFunc": (*RangeTableFuncMarshalAlias)(&node), - }) -} - -func (node *RangeTableFunc) UnmarshalJSON(input []byte) (err error) { - var fields map[string]json.RawMessage - - err = json.Unmarshal(input, &fields) - if err != nil { - return - } - - if fields["lateral"] != nil { - err = json.Unmarshal(fields["lateral"], &node.Lateral) - if err != nil { - return - } - } - - if fields["docexpr"] != nil { - node.Docexpr, err = UnmarshalNodeJSON(fields["docexpr"]) - if err != nil { - return - } - } - - if fields["rowexpr"] != nil { - node.Rowexpr, err = UnmarshalNodeJSON(fields["rowexpr"]) - if err != nil { - return - } - } - - if fields["namespaces"] != nil { - node.Namespaces.Items, err = UnmarshalNodeArrayJSON(fields["namespaces"]) - if err != nil { - return - } - } - - if fields["columns"] != nil { - node.Columns.Items, err = UnmarshalNodeArrayJSON(fields["columns"]) - if err != nil { - return - } - } - - if fields["alias"] != nil { - var nodePtr *Node - nodePtr, err = UnmarshalNodePtrJSON(fields["alias"]) - if err != nil { - return - } - if nodePtr != nil && *nodePtr != nil { - val := (*nodePtr).(Alias) - node.Alias = &val - } - } - - if fields["location"] != nil { - err = json.Unmarshal(fields["location"], &node.Location) - if err != nil { - return - } - } - - return -} diff --git a/nodes/range_table_func_col.go b/nodes/range_table_func_col.go deleted file mode 100644 index 6cfb81de..00000000 --- a/nodes/range_table_func_col.go +++ /dev/null @@ -1,93 +0,0 @@ -// Auto-generated from postgres/src/include/nodes/parsenodes.h - DO NOT EDIT - -package pg_query - -import "encoding/json" - -/* - * RangeTableFuncCol - one column in a RangeTableFunc->columns - * - * If for_ordinality is true (FOR ORDINALITY), then the column is an int4 - * column and the rest of the fields are ignored. - */ -type RangeTableFuncCol struct { - Colname *string `json:"colname"` /* name of generated column */ - TypeName *TypeName `json:"typeName"` /* type of generated column */ - ForOrdinality bool `json:"for_ordinality"` /* does it have FOR ORDINALITY? */ - IsNotNull bool `json:"is_not_null"` /* does it have NOT NULL? */ - Colexpr Node `json:"colexpr"` /* column filter expression */ - Coldefexpr Node `json:"coldefexpr"` /* column default value expression */ - Location int `json:"location"` /* token location, or -1 if unknown */ -} - -func (node RangeTableFuncCol) MarshalJSON() ([]byte, error) { - type RangeTableFuncColMarshalAlias RangeTableFuncCol - return json.Marshal(map[string]interface{}{ - "RangeTableFuncCol": (*RangeTableFuncColMarshalAlias)(&node), - }) -} - -func (node *RangeTableFuncCol) UnmarshalJSON(input []byte) (err error) { - var fields map[string]json.RawMessage - - err = json.Unmarshal(input, &fields) - if err != nil { - return - } - - if fields["colname"] != nil { - err = json.Unmarshal(fields["colname"], &node.Colname) - if err != nil { - return - } - } - - if fields["typeName"] != nil { - var nodePtr *Node - nodePtr, err = UnmarshalNodePtrJSON(fields["typeName"]) - if err != nil { - return - } - if nodePtr != nil && *nodePtr != nil { - val := (*nodePtr).(TypeName) - node.TypeName = &val - } - } - - if fields["for_ordinality"] != nil { - err = json.Unmarshal(fields["for_ordinality"], &node.ForOrdinality) - if err != nil { - return - } - } - - if fields["is_not_null"] != nil { - err = json.Unmarshal(fields["is_not_null"], &node.IsNotNull) - if err != nil { - return - } - } - - if fields["colexpr"] != nil { - node.Colexpr, err = UnmarshalNodeJSON(fields["colexpr"]) - if err != nil { - return - } - } - - if fields["coldefexpr"] != nil { - node.Coldefexpr, err = UnmarshalNodeJSON(fields["coldefexpr"]) - if err != nil { - return - } - } - - if fields["location"] != nil { - err = json.Unmarshal(fields["location"], &node.Location) - if err != nil { - return - } - } - - return -} diff --git a/nodes/range_table_func_col_deparse.go b/nodes/range_table_func_col_deparse.go deleted file mode 100644 index abaa6966..00000000 --- a/nodes/range_table_func_col_deparse.go +++ /dev/null @@ -1,7 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -func (node RangeTableFuncCol) Deparse() string { - panic("Not Implemented") -} diff --git a/nodes/range_table_func_col_fingerprint.go b/nodes/range_table_func_col_fingerprint.go deleted file mode 100644 index b71db7a2..00000000 --- a/nodes/range_table_func_col_fingerprint.go +++ /dev/null @@ -1,62 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -import "strconv" - -func (node RangeTableFuncCol) Fingerprint(ctx FingerprintContext, parentNode Node, parentFieldName string) { - ctx.WriteString("RangeTableFuncCol") - - if node.Coldefexpr != nil { - subCtx := FingerprintSubContext{} - node.Coldefexpr.Fingerprint(&subCtx, node, "Coldefexpr") - - if len(subCtx.parts) > 0 { - ctx.WriteString("coldefexpr") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if node.Colexpr != nil { - subCtx := FingerprintSubContext{} - node.Colexpr.Fingerprint(&subCtx, node, "Colexpr") - - if len(subCtx.parts) > 0 { - ctx.WriteString("colexpr") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if node.Colname != nil { - ctx.WriteString("colname") - ctx.WriteString(*node.Colname) - } - - if node.ForOrdinality { - ctx.WriteString("for_ordinality") - ctx.WriteString(strconv.FormatBool(node.ForOrdinality)) - } - - if node.IsNotNull { - ctx.WriteString("is_not_null") - ctx.WriteString(strconv.FormatBool(node.IsNotNull)) - } - - // Intentionally ignoring node.Location for fingerprinting - - if node.TypeName != nil { - subCtx := FingerprintSubContext{} - node.TypeName.Fingerprint(&subCtx, node, "TypeName") - - if len(subCtx.parts) > 0 { - ctx.WriteString("typeName") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } -} diff --git a/nodes/range_table_func_deparse.go b/nodes/range_table_func_deparse.go deleted file mode 100644 index 40484492..00000000 --- a/nodes/range_table_func_deparse.go +++ /dev/null @@ -1,7 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -func (node RangeTableFunc) Deparse() string { - panic("Not Implemented") -} diff --git a/nodes/range_table_func_fingerprint.go b/nodes/range_table_func_fingerprint.go deleted file mode 100644 index 37ddd02f..00000000 --- a/nodes/range_table_func_fingerprint.go +++ /dev/null @@ -1,76 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -import "strconv" - -func (node RangeTableFunc) Fingerprint(ctx FingerprintContext, parentNode Node, parentFieldName string) { - ctx.WriteString("RangeTableFunc") - - if node.Alias != nil { - subCtx := FingerprintSubContext{} - node.Alias.Fingerprint(&subCtx, node, "Alias") - - if len(subCtx.parts) > 0 { - ctx.WriteString("alias") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if len(node.Columns.Items) > 0 { - subCtx := FingerprintSubContext{} - node.Columns.Fingerprint(&subCtx, node, "Columns") - - if len(subCtx.parts) > 0 { - ctx.WriteString("columns") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if node.Docexpr != nil { - subCtx := FingerprintSubContext{} - node.Docexpr.Fingerprint(&subCtx, node, "Docexpr") - - if len(subCtx.parts) > 0 { - ctx.WriteString("docexpr") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if node.Lateral { - ctx.WriteString("lateral") - ctx.WriteString(strconv.FormatBool(node.Lateral)) - } - - // Intentionally ignoring node.Location for fingerprinting - - if len(node.Namespaces.Items) > 0 { - subCtx := FingerprintSubContext{} - node.Namespaces.Fingerprint(&subCtx, node, "Namespaces") - - if len(subCtx.parts) > 0 { - ctx.WriteString("namespaces") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if node.Rowexpr != nil { - subCtx := FingerprintSubContext{} - node.Rowexpr.Fingerprint(&subCtx, node, "Rowexpr") - - if len(subCtx.parts) > 0 { - ctx.WriteString("rowexpr") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } -} diff --git a/nodes/range_table_sample.go b/nodes/range_table_sample.go deleted file mode 100644 index 793bbe86..00000000 --- a/nodes/range_table_sample.go +++ /dev/null @@ -1,76 +0,0 @@ -// Auto-generated from postgres/src/include/nodes/parsenodes.h - DO NOT EDIT - -package pg_query - -import "encoding/json" - -/* - * RangeTableSample - TABLESAMPLE appearing in a raw FROM clause - * - * This node, appearing only in raw parse trees, represents - * TABLESAMPLE () REPEATABLE () - * Currently, the can only be a RangeVar, but we might in future - * allow RangeSubselect and other options. Note that the RangeTableSample - * is wrapped around the node representing the , rather than being - * a subfield of it. - */ -type RangeTableSample struct { - Relation Node `json:"relation"` /* relation to be sampled */ - Method List `json:"method"` /* sampling method name (possibly qualified) */ - Args List `json:"args"` /* argument(s) for sampling method */ - Repeatable Node `json:"repeatable"` /* REPEATABLE expression, or NULL if none */ - Location int `json:"location"` /* method name location, or -1 if unknown */ -} - -func (node RangeTableSample) MarshalJSON() ([]byte, error) { - type RangeTableSampleMarshalAlias RangeTableSample - return json.Marshal(map[string]interface{}{ - "RangeTableSample": (*RangeTableSampleMarshalAlias)(&node), - }) -} - -func (node *RangeTableSample) UnmarshalJSON(input []byte) (err error) { - var fields map[string]json.RawMessage - - err = json.Unmarshal(input, &fields) - if err != nil { - return - } - - if fields["relation"] != nil { - node.Relation, err = UnmarshalNodeJSON(fields["relation"]) - if err != nil { - return - } - } - - if fields["method"] != nil { - node.Method.Items, err = UnmarshalNodeArrayJSON(fields["method"]) - if err != nil { - return - } - } - - if fields["args"] != nil { - node.Args.Items, err = UnmarshalNodeArrayJSON(fields["args"]) - if err != nil { - return - } - } - - if fields["repeatable"] != nil { - node.Repeatable, err = UnmarshalNodeJSON(fields["repeatable"]) - if err != nil { - return - } - } - - if fields["location"] != nil { - err = json.Unmarshal(fields["location"], &node.Location) - if err != nil { - return - } - } - - return -} diff --git a/nodes/range_table_sample_deparse.go b/nodes/range_table_sample_deparse.go deleted file mode 100644 index 765a6a11..00000000 --- a/nodes/range_table_sample_deparse.go +++ /dev/null @@ -1,7 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -func (node RangeTableSample) Deparse() string { - panic("Not Implemented") -} diff --git a/nodes/range_table_sample_fingerprint.go b/nodes/range_table_sample_fingerprint.go deleted file mode 100644 index de006a84..00000000 --- a/nodes/range_table_sample_fingerprint.go +++ /dev/null @@ -1,56 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -func (node RangeTableSample) Fingerprint(ctx FingerprintContext, parentNode Node, parentFieldName string) { - ctx.WriteString("RangeTableSample") - - if len(node.Args.Items) > 0 { - subCtx := FingerprintSubContext{} - node.Args.Fingerprint(&subCtx, node, "Args") - - if len(subCtx.parts) > 0 { - ctx.WriteString("args") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - // Intentionally ignoring node.Location for fingerprinting - - if len(node.Method.Items) > 0 { - subCtx := FingerprintSubContext{} - node.Method.Fingerprint(&subCtx, node, "Method") - - if len(subCtx.parts) > 0 { - ctx.WriteString("method") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if node.Relation != nil { - subCtx := FingerprintSubContext{} - node.Relation.Fingerprint(&subCtx, node, "Relation") - - if len(subCtx.parts) > 0 { - ctx.WriteString("relation") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if node.Repeatable != nil { - subCtx := FingerprintSubContext{} - node.Repeatable.Fingerprint(&subCtx, node, "Repeatable") - - if len(subCtx.parts) > 0 { - ctx.WriteString("repeatable") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } -} diff --git a/nodes/range_tbl_entry.go b/nodes/range_tbl_entry.go deleted file mode 100644 index d21392c7..00000000 --- a/nodes/range_tbl_entry.go +++ /dev/null @@ -1,459 +0,0 @@ -// Auto-generated from postgres/src/include/nodes/parsenodes.h - DO NOT EDIT - -package pg_query - -import "encoding/json" - -/*-------------------- - * RangeTblEntry - - * A range table is a List of RangeTblEntry nodes. - * - * A range table entry may represent a plain relation, a sub-select in - * FROM, or the result of a JOIN clause. (Only explicit JOIN syntax - * produces an RTE, not the implicit join resulting from multiple FROM - * items. This is because we only need the RTE to deal with SQL features - * like outer joins and join-output-column aliasing.) Other special - * RTE types also exist, as indicated by RTEKind. - * - * Note that we consider RTE_RELATION to cover anything that has a pg_class - * entry. relkind distinguishes the sub-cases. - * - * alias is an Alias node representing the AS alias-clause attached to the - * FROM expression, or NULL if no clause. - * - * eref is the table reference name and column reference names (either - * real or aliases). Note that system columns (OID etc) are not included - * in the column list. - * eref->aliasname is required to be present, and should generally be used - * to identify the RTE for error messages etc. - * - * In RELATION RTEs, the colnames in both alias and eref are indexed by - * physical attribute number; this means there must be colname entries for - * dropped columns. When building an RTE we insert empty strings ("") for - * dropped columns. Note however that a stored rule may have nonempty - * colnames for columns dropped since the rule was created (and for that - * matter the colnames might be out of date due to column renamings). - * The same comments apply to FUNCTION RTEs when a function's return type - * is a named composite type. - * - * In JOIN RTEs, the colnames in both alias and eref are one-to-one with - * joinaliasvars entries. A JOIN RTE will omit columns of its inputs when - * those columns are known to be dropped at parse time. Again, however, - * a stored rule might contain entries for columns dropped since the rule - * was created. (This is only possible for columns not actually referenced - * in the rule.) When loading a stored rule, we replace the joinaliasvars - * items for any such columns with null pointers. (We can't simply delete - * them from the joinaliasvars list, because that would affect the attnums - * of Vars referencing the rest of the list.) - * - * inh is TRUE for relation references that should be expanded to include - * inheritance children, if the rel has any. This *must* be FALSE for - * RTEs other than RTE_RELATION entries. - * - * inFromCl marks those range variables that are listed in the FROM clause. - * It's false for RTEs that are added to a query behind the scenes, such - * as the NEW and OLD variables for a rule, or the subqueries of a UNION. - * This flag is not used anymore during parsing, since the parser now uses - * a separate "namespace" data structure to control visibility, but it is - * needed by ruleutils.c to determine whether RTEs should be shown in - * decompiled queries. - * - * requiredPerms and checkAsUser specify run-time access permissions - * checks to be performed at query startup. The user must have *all* - * of the permissions that are OR'd together in requiredPerms (zero - * indicates no permissions checking). If checkAsUser is not zero, - * then do the permissions checks using the access rights of that user, - * not the current effective user ID. (This allows rules to act as - * setuid gateways.) Permissions checks only apply to RELATION RTEs. - * - * For SELECT/INSERT/UPDATE permissions, if the user doesn't have - * table-wide permissions then it is sufficient to have the permissions - * on all columns identified in selectedCols (for SELECT) and/or - * insertedCols and/or updatedCols (INSERT with ON CONFLICT DO UPDATE may - * have all 3). selectedCols, insertedCols and updatedCols are bitmapsets, - * which cannot have negative integer members, so we subtract - * FirstLowInvalidHeapAttributeNumber from column numbers before storing - * them in these fields. A whole-row Var reference is represented by - * setting the bit for InvalidAttrNumber. - * - * securityQuals is a list of security barrier quals (boolean expressions), - * to be tested in the listed order before returning a row from the - * relation. It is always NIL in parser output. Entries are added by the - * rewriter to implement security-barrier views and/or row-level security. - * Note that the planner turns each boolean expression into an implicitly - * AND'ed sublist, as is its usual habit with qualification expressions. - *-------------------- - */ -type RangeTblEntry struct { - Rtekind RTEKind `json:"rtekind"` /* see above */ - - /* - * XXX the fields applicable to only some rte kinds should be merged into - * a union. I didn't do this yet because the diffs would impact a lot of - * code that is being actively worked on. FIXME someday. - */ - - /* - * Fields valid for a plain relation RTE (else zero): - * - * As a special case, RTE_NAMEDTUPLESTORE can also set relid to indicate - * that the tuple format of the tuplestore is the same as the referenced - * relation. This allows plans referencing AFTER trigger transition - * tables to be invalidated if the underlying table is altered. - */ - Relid Oid `json:"relid"` /* OID of the relation */ - Relkind byte `json:"relkind"` /* relation kind (see pg_class.relkind) */ - Tablesample *TableSampleClause `json:"tablesample"` /* sampling info, or NULL */ - - /* - * Fields valid for a subquery RTE (else NULL): - */ - Subquery *Query `json:"subquery"` /* the sub-query */ - SecurityBarrier bool `json:"security_barrier"` /* is from security_barrier view? */ - - /* - * Fields valid for a join RTE (else NULL/zero): - * - * joinaliasvars is a list of (usually) Vars corresponding to the columns - * of the join result. An alias Var referencing column K of the join - * result can be replaced by the K'th element of joinaliasvars --- but to - * simplify the task of reverse-listing aliases correctly, we do not do - * that until planning time. In detail: an element of joinaliasvars can - * be a Var of one of the join's input relations, or such a Var with an - * implicit coercion to the join's output column type, or a COALESCE - * expression containing the two input column Vars (possibly coerced). - * Within a Query loaded from a stored rule, it is also possible for - * joinaliasvars items to be null pointers, which are placeholders for - * (necessarily unreferenced) columns dropped since the rule was made. - * Also, once planning begins, joinaliasvars items can be almost anything, - * as a result of subquery-flattening substitutions. - */ - Jointype JoinType `json:"jointype"` /* type of join */ - Joinaliasvars List `json:"joinaliasvars"` /* list of alias-var expansions */ - - /* - * Fields valid for a function RTE (else NIL/zero): - * - * When funcordinality is true, the eref->colnames list includes an alias - * for the ordinality column. The ordinality column is otherwise - * implicit, and must be accounted for "by hand" in places such as - * expandRTE(). - */ - Functions List `json:"functions"` /* list of RangeTblFunction nodes */ - Funcordinality bool `json:"funcordinality"` /* is this called WITH ORDINALITY? */ - - /* - * Fields valid for a TableFunc RTE (else NULL): - */ - Tablefunc *TableFunc `json:"tablefunc"` - - /* - * Fields valid for a values RTE (else NIL): - */ - ValuesLists List `json:"values_lists"` /* list of expression lists */ - - /* - * Fields valid for a CTE RTE (else NULL/zero): - */ - Ctename *string `json:"ctename"` /* name of the WITH list item */ - Ctelevelsup Index `json:"ctelevelsup"` /* number of query levels up */ - SelfReference bool `json:"self_reference"` /* is this a recursive self-reference? */ - - /* - * Fields valid for table functions, values, CTE and ENR RTEs (else NIL): - * - * We need these for CTE RTEs so that the types of self-referential - * columns are well-defined. For VALUES RTEs, storing these explicitly - * saves having to re-determine the info by scanning the values_lists. For - * ENRs, we store the types explicitly here (we could get the information - * from the catalogs if 'relid' was supplied, but we'd still need these - * for TupleDesc-based ENRs, so we might as well always store the type - * info here). - */ - Coltypes List `json:"coltypes"` /* OID list of column type OIDs */ - Coltypmods List `json:"coltypmods"` /* integer list of column typmods */ - Colcollations List `json:"colcollations"` /* OID list of column collation OIDs */ - - /* - * Fields valid for ENR RTEs (else NULL/zero): - */ - Enrname *string `json:"enrname"` /* name of ephemeral named relation */ - Enrtuples float64 `json:"enrtuples"` /* estimated or actual from caller */ - - /* - * Fields valid in all RTEs: - */ - Alias *Alias `json:"alias"` /* user-written alias clause, if any */ - Eref *Alias `json:"eref"` /* expanded reference names */ - Lateral bool `json:"lateral"` /* subquery, function, or values is LATERAL? */ - Inh bool `json:"inh"` /* inheritance requested? */ - InFromCl bool `json:"inFromCl"` /* present in FROM clause? */ - RequiredPerms AclMode `json:"requiredPerms"` /* bitmask of required access permissions */ - CheckAsUser Oid `json:"checkAsUser"` /* if valid, check access as this role */ - SelectedCols []uint32 `json:"selectedCols"` /* columns needing SELECT permission */ - InsertedCols []uint32 `json:"insertedCols"` /* columns needing INSERT permission */ - UpdatedCols []uint32 `json:"updatedCols"` /* columns needing UPDATE permission */ - SecurityQuals List `json:"securityQuals"` /* security barrier quals to apply, if any */ -} - -func (node RangeTblEntry) MarshalJSON() ([]byte, error) { - type RangeTblEntryMarshalAlias RangeTblEntry - return json.Marshal(map[string]interface{}{ - "RangeTblEntry": (*RangeTblEntryMarshalAlias)(&node), - }) -} - -func (node *RangeTblEntry) UnmarshalJSON(input []byte) (err error) { - var fields map[string]json.RawMessage - - err = json.Unmarshal(input, &fields) - if err != nil { - return - } - - if fields["rtekind"] != nil { - err = json.Unmarshal(fields["rtekind"], &node.Rtekind) - if err != nil { - return - } - } - - if fields["relid"] != nil { - err = json.Unmarshal(fields["relid"], &node.Relid) - if err != nil { - return - } - } - - if fields["relkind"] != nil { - var strVal string - err = json.Unmarshal(fields["relkind"], &strVal) - node.Relkind = strVal[0] - if err != nil { - return - } - } - - if fields["tablesample"] != nil { - var nodePtr *Node - nodePtr, err = UnmarshalNodePtrJSON(fields["tablesample"]) - if err != nil { - return - } - if nodePtr != nil && *nodePtr != nil { - val := (*nodePtr).(TableSampleClause) - node.Tablesample = &val - } - } - - if fields["subquery"] != nil { - var nodePtr *Node - nodePtr, err = UnmarshalNodePtrJSON(fields["subquery"]) - if err != nil { - return - } - if nodePtr != nil && *nodePtr != nil { - val := (*nodePtr).(Query) - node.Subquery = &val - } - } - - if fields["security_barrier"] != nil { - err = json.Unmarshal(fields["security_barrier"], &node.SecurityBarrier) - if err != nil { - return - } - } - - if fields["jointype"] != nil { - err = json.Unmarshal(fields["jointype"], &node.Jointype) - if err != nil { - return - } - } - - if fields["joinaliasvars"] != nil { - node.Joinaliasvars.Items, err = UnmarshalNodeArrayJSON(fields["joinaliasvars"]) - if err != nil { - return - } - } - - if fields["functions"] != nil { - node.Functions.Items, err = UnmarshalNodeArrayJSON(fields["functions"]) - if err != nil { - return - } - } - - if fields["funcordinality"] != nil { - err = json.Unmarshal(fields["funcordinality"], &node.Funcordinality) - if err != nil { - return - } - } - - if fields["tablefunc"] != nil { - var nodePtr *Node - nodePtr, err = UnmarshalNodePtrJSON(fields["tablefunc"]) - if err != nil { - return - } - if nodePtr != nil && *nodePtr != nil { - val := (*nodePtr).(TableFunc) - node.Tablefunc = &val - } - } - - if fields["values_lists"] != nil { - node.ValuesLists.Items, err = UnmarshalNodeArrayJSON(fields["values_lists"]) - if err != nil { - return - } - } - - if fields["ctename"] != nil { - err = json.Unmarshal(fields["ctename"], &node.Ctename) - if err != nil { - return - } - } - - if fields["ctelevelsup"] != nil { - err = json.Unmarshal(fields["ctelevelsup"], &node.Ctelevelsup) - if err != nil { - return - } - } - - if fields["self_reference"] != nil { - err = json.Unmarshal(fields["self_reference"], &node.SelfReference) - if err != nil { - return - } - } - - if fields["coltypes"] != nil { - node.Coltypes.Items, err = UnmarshalNodeArrayJSON(fields["coltypes"]) - if err != nil { - return - } - } - - if fields["coltypmods"] != nil { - node.Coltypmods.Items, err = UnmarshalNodeArrayJSON(fields["coltypmods"]) - if err != nil { - return - } - } - - if fields["colcollations"] != nil { - node.Colcollations.Items, err = UnmarshalNodeArrayJSON(fields["colcollations"]) - if err != nil { - return - } - } - - if fields["enrname"] != nil { - err = json.Unmarshal(fields["enrname"], &node.Enrname) - if err != nil { - return - } - } - - if fields["enrtuples"] != nil { - err = json.Unmarshal(fields["enrtuples"], &node.Enrtuples) - if err != nil { - return - } - } - - if fields["alias"] != nil { - var nodePtr *Node - nodePtr, err = UnmarshalNodePtrJSON(fields["alias"]) - if err != nil { - return - } - if nodePtr != nil && *nodePtr != nil { - val := (*nodePtr).(Alias) - node.Alias = &val - } - } - - if fields["eref"] != nil { - var nodePtr *Node - nodePtr, err = UnmarshalNodePtrJSON(fields["eref"]) - if err != nil { - return - } - if nodePtr != nil && *nodePtr != nil { - val := (*nodePtr).(Alias) - node.Eref = &val - } - } - - if fields["lateral"] != nil { - err = json.Unmarshal(fields["lateral"], &node.Lateral) - if err != nil { - return - } - } - - if fields["inh"] != nil { - err = json.Unmarshal(fields["inh"], &node.Inh) - if err != nil { - return - } - } - - if fields["inFromCl"] != nil { - err = json.Unmarshal(fields["inFromCl"], &node.InFromCl) - if err != nil { - return - } - } - - if fields["requiredPerms"] != nil { - err = json.Unmarshal(fields["requiredPerms"], &node.RequiredPerms) - if err != nil { - return - } - } - - if fields["checkAsUser"] != nil { - err = json.Unmarshal(fields["checkAsUser"], &node.CheckAsUser) - if err != nil { - return - } - } - - if fields["selectedCols"] != nil { - err = json.Unmarshal(fields["selectedCols"], &node.SelectedCols) - if err != nil { - return - } - } - - if fields["insertedCols"] != nil { - err = json.Unmarshal(fields["insertedCols"], &node.InsertedCols) - if err != nil { - return - } - } - - if fields["updatedCols"] != nil { - err = json.Unmarshal(fields["updatedCols"], &node.UpdatedCols) - if err != nil { - return - } - } - - if fields["securityQuals"] != nil { - node.SecurityQuals.Items, err = UnmarshalNodeArrayJSON(fields["securityQuals"]) - if err != nil { - return - } - } - - return -} diff --git a/nodes/range_tbl_entry_deparse.go b/nodes/range_tbl_entry_deparse.go deleted file mode 100644 index 1054be80..00000000 --- a/nodes/range_tbl_entry_deparse.go +++ /dev/null @@ -1,7 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -func (node RangeTblEntry) Deparse() string { - panic("Not Implemented") -} diff --git a/nodes/range_tbl_entry_fingerprint.go b/nodes/range_tbl_entry_fingerprint.go deleted file mode 100644 index dbc99b03..00000000 --- a/nodes/range_tbl_entry_fingerprint.go +++ /dev/null @@ -1,246 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -import "strconv" - -func (node RangeTblEntry) Fingerprint(ctx FingerprintContext, parentNode Node, parentFieldName string) { - ctx.WriteString("RangeTblEntry") - - if node.Alias != nil { - subCtx := FingerprintSubContext{} - node.Alias.Fingerprint(&subCtx, node, "Alias") - - if len(subCtx.parts) > 0 { - ctx.WriteString("alias") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if node.CheckAsUser != 0 { - ctx.WriteString("checkAsUser") - ctx.WriteString(strconv.Itoa(int(node.CheckAsUser))) - } - - if len(node.Colcollations.Items) > 0 { - subCtx := FingerprintSubContext{} - node.Colcollations.Fingerprint(&subCtx, node, "Colcollations") - - if len(subCtx.parts) > 0 { - ctx.WriteString("colcollations") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if len(node.Coltypes.Items) > 0 { - subCtx := FingerprintSubContext{} - node.Coltypes.Fingerprint(&subCtx, node, "Coltypes") - - if len(subCtx.parts) > 0 { - ctx.WriteString("coltypes") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if len(node.Coltypmods.Items) > 0 { - subCtx := FingerprintSubContext{} - node.Coltypmods.Fingerprint(&subCtx, node, "Coltypmods") - - if len(subCtx.parts) > 0 { - ctx.WriteString("coltypmods") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if node.Ctelevelsup != 0 { - ctx.WriteString("ctelevelsup") - ctx.WriteString(strconv.Itoa(int(node.Ctelevelsup))) - } - - if node.Ctename != nil { - ctx.WriteString("ctename") - ctx.WriteString(*node.Ctename) - } - - if node.Enrname != nil { - ctx.WriteString("enrname") - ctx.WriteString(*node.Enrname) - } - - ctx.WriteString("enrtuples") - ctx.WriteString(strconv.FormatFloat(float64(node.Enrtuples), 'E', -1, 64)) - - if node.Eref != nil { - subCtx := FingerprintSubContext{} - node.Eref.Fingerprint(&subCtx, node, "Eref") - - if len(subCtx.parts) > 0 { - ctx.WriteString("eref") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if node.Funcordinality { - ctx.WriteString("funcordinality") - ctx.WriteString(strconv.FormatBool(node.Funcordinality)) - } - - if len(node.Functions.Items) > 0 { - subCtx := FingerprintSubContext{} - node.Functions.Fingerprint(&subCtx, node, "Functions") - - if len(subCtx.parts) > 0 { - ctx.WriteString("functions") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if node.InFromCl { - ctx.WriteString("inFromCl") - ctx.WriteString(strconv.FormatBool(node.InFromCl)) - } - - if node.Inh { - ctx.WriteString("inh") - ctx.WriteString(strconv.FormatBool(node.Inh)) - } - - ctx.WriteString("insertedCols") - for _, val := range node.InsertedCols { - ctx.WriteString(strconv.Itoa(int(val))) - } - - if len(node.Joinaliasvars.Items) > 0 { - subCtx := FingerprintSubContext{} - node.Joinaliasvars.Fingerprint(&subCtx, node, "Joinaliasvars") - - if len(subCtx.parts) > 0 { - ctx.WriteString("joinaliasvars") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if int(node.Jointype) != 0 { - ctx.WriteString("jointype") - ctx.WriteString(strconv.Itoa(int(node.Jointype))) - } - - if node.Lateral { - ctx.WriteString("lateral") - ctx.WriteString(strconv.FormatBool(node.Lateral)) - } - - if node.Relid != 0 { - ctx.WriteString("relid") - ctx.WriteString(strconv.Itoa(int(node.Relid))) - } - - if node.Relkind != 0 { - ctx.WriteString("relkind") - ctx.WriteString(string(node.Relkind)) - - } - - if node.RequiredPerms != 0 { - ctx.WriteString("requiredPerms") - ctx.WriteString(strconv.Itoa(int(node.RequiredPerms))) - } - - if int(node.Rtekind) != 0 { - ctx.WriteString("rtekind") - ctx.WriteString(strconv.Itoa(int(node.Rtekind))) - } - - if len(node.SecurityQuals.Items) > 0 { - subCtx := FingerprintSubContext{} - node.SecurityQuals.Fingerprint(&subCtx, node, "SecurityQuals") - - if len(subCtx.parts) > 0 { - ctx.WriteString("securityQuals") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if node.SecurityBarrier { - ctx.WriteString("security_barrier") - ctx.WriteString(strconv.FormatBool(node.SecurityBarrier)) - } - - ctx.WriteString("selectedCols") - for _, val := range node.SelectedCols { - ctx.WriteString(strconv.Itoa(int(val))) - } - - if node.SelfReference { - ctx.WriteString("self_reference") - ctx.WriteString(strconv.FormatBool(node.SelfReference)) - } - - if node.Subquery != nil { - subCtx := FingerprintSubContext{} - node.Subquery.Fingerprint(&subCtx, node, "Subquery") - - if len(subCtx.parts) > 0 { - ctx.WriteString("subquery") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if node.Tablefunc != nil { - subCtx := FingerprintSubContext{} - node.Tablefunc.Fingerprint(&subCtx, node, "Tablefunc") - - if len(subCtx.parts) > 0 { - ctx.WriteString("tablefunc") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if node.Tablesample != nil { - subCtx := FingerprintSubContext{} - node.Tablesample.Fingerprint(&subCtx, node, "Tablesample") - - if len(subCtx.parts) > 0 { - ctx.WriteString("tablesample") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - ctx.WriteString("updatedCols") - for _, val := range node.UpdatedCols { - ctx.WriteString(strconv.Itoa(int(val))) - } - - if len(node.ValuesLists.Items) > 0 { - subCtx := FingerprintSubContext{} - node.ValuesLists.Fingerprint(&subCtx, node, "ValuesLists") - - if len(subCtx.parts) > 0 { - ctx.WriteString("values_lists") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } -} diff --git a/nodes/range_tbl_function.go b/nodes/range_tbl_function.go deleted file mode 100644 index bf9d2de8..00000000 --- a/nodes/range_tbl_function.go +++ /dev/null @@ -1,102 +0,0 @@ -// Auto-generated from postgres/src/include/nodes/parsenodes.h - DO NOT EDIT - -package pg_query - -import "encoding/json" - -/* - * RangeTblFunction - - * RangeTblEntry subsidiary data for one function in a FUNCTION RTE. - * - * If the function had a column definition list (required for an - * otherwise-unspecified RECORD result), funccolnames lists the names given - * in the definition list, funccoltypes lists their declared column types, - * funccoltypmods lists their typmods, funccolcollations their collations. - * Otherwise, those fields are NIL. - * - * Notice we don't attempt to store info about the results of functions - * returning named composite types, because those can change from time to - * time. We do however remember how many columns we thought the type had - * (including dropped columns!), so that we can successfully ignore any - * columns added after the query was parsed. - */ -type RangeTblFunction struct { - Funcexpr Node `json:"funcexpr"` /* expression tree for func call */ - Funccolcount int `json:"funccolcount"` /* number of columns it contributes to RTE */ - - /* These fields record the contents of a column definition list, if any: */ - Funccolnames List `json:"funccolnames"` /* column names (list of String) */ - Funccoltypes List `json:"funccoltypes"` /* OID list of column type OIDs */ - Funccoltypmods List `json:"funccoltypmods"` /* integer list of column typmods */ - Funccolcollations List `json:"funccolcollations"` /* OID list of column collation OIDs */ - - /* This is set during planning for use by the executor: */ - Funcparams []uint32 `json:"funcparams"` /* PARAM_EXEC Param IDs affecting this func */ -} - -func (node RangeTblFunction) MarshalJSON() ([]byte, error) { - type RangeTblFunctionMarshalAlias RangeTblFunction - return json.Marshal(map[string]interface{}{ - "RangeTblFunction": (*RangeTblFunctionMarshalAlias)(&node), - }) -} - -func (node *RangeTblFunction) UnmarshalJSON(input []byte) (err error) { - var fields map[string]json.RawMessage - - err = json.Unmarshal(input, &fields) - if err != nil { - return - } - - if fields["funcexpr"] != nil { - node.Funcexpr, err = UnmarshalNodeJSON(fields["funcexpr"]) - if err != nil { - return - } - } - - if fields["funccolcount"] != nil { - err = json.Unmarshal(fields["funccolcount"], &node.Funccolcount) - if err != nil { - return - } - } - - if fields["funccolnames"] != nil { - node.Funccolnames.Items, err = UnmarshalNodeArrayJSON(fields["funccolnames"]) - if err != nil { - return - } - } - - if fields["funccoltypes"] != nil { - node.Funccoltypes.Items, err = UnmarshalNodeArrayJSON(fields["funccoltypes"]) - if err != nil { - return - } - } - - if fields["funccoltypmods"] != nil { - node.Funccoltypmods.Items, err = UnmarshalNodeArrayJSON(fields["funccoltypmods"]) - if err != nil { - return - } - } - - if fields["funccolcollations"] != nil { - node.Funccolcollations.Items, err = UnmarshalNodeArrayJSON(fields["funccolcollations"]) - if err != nil { - return - } - } - - if fields["funcparams"] != nil { - err = json.Unmarshal(fields["funcparams"], &node.Funcparams) - if err != nil { - return - } - } - - return -} diff --git a/nodes/range_tbl_function_deparse.go b/nodes/range_tbl_function_deparse.go deleted file mode 100644 index edb8498c..00000000 --- a/nodes/range_tbl_function_deparse.go +++ /dev/null @@ -1,7 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -func (node RangeTblFunction) Deparse() string { - panic("Not Implemented") -} diff --git a/nodes/range_tbl_function_fingerprint.go b/nodes/range_tbl_function_fingerprint.go deleted file mode 100644 index 87391e1c..00000000 --- a/nodes/range_tbl_function_fingerprint.go +++ /dev/null @@ -1,78 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -import "strconv" - -func (node RangeTblFunction) Fingerprint(ctx FingerprintContext, parentNode Node, parentFieldName string) { - ctx.WriteString("RangeTblFunction") - - if len(node.Funccolcollations.Items) > 0 { - subCtx := FingerprintSubContext{} - node.Funccolcollations.Fingerprint(&subCtx, node, "Funccolcollations") - - if len(subCtx.parts) > 0 { - ctx.WriteString("funccolcollations") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if node.Funccolcount != 0 { - ctx.WriteString("funccolcount") - ctx.WriteString(strconv.Itoa(int(node.Funccolcount))) - } - - if len(node.Funccolnames.Items) > 0 { - subCtx := FingerprintSubContext{} - node.Funccolnames.Fingerprint(&subCtx, node, "Funccolnames") - - if len(subCtx.parts) > 0 { - ctx.WriteString("funccolnames") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if len(node.Funccoltypes.Items) > 0 { - subCtx := FingerprintSubContext{} - node.Funccoltypes.Fingerprint(&subCtx, node, "Funccoltypes") - - if len(subCtx.parts) > 0 { - ctx.WriteString("funccoltypes") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if len(node.Funccoltypmods.Items) > 0 { - subCtx := FingerprintSubContext{} - node.Funccoltypmods.Fingerprint(&subCtx, node, "Funccoltypmods") - - if len(subCtx.parts) > 0 { - ctx.WriteString("funccoltypmods") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if node.Funcexpr != nil { - subCtx := FingerprintSubContext{} - node.Funcexpr.Fingerprint(&subCtx, node, "Funcexpr") - - if len(subCtx.parts) > 0 { - ctx.WriteString("funcexpr") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - ctx.WriteString("funcparams") - for _, val := range node.Funcparams { - ctx.WriteString(strconv.Itoa(int(val))) - } -} diff --git a/nodes/range_tbl_ref.go b/nodes/range_tbl_ref.go deleted file mode 100644 index 7f820fa0..00000000 --- a/nodes/range_tbl_ref.go +++ /dev/null @@ -1,41 +0,0 @@ -// Auto-generated from postgres/src/include/nodes/primnodes.h - DO NOT EDIT - -package pg_query - -import "encoding/json" - -/* - * RangeTblRef - reference to an entry in the query's rangetable - * - * We could use direct pointers to the RT entries and skip having these - * nodes, but multiple pointers to the same node in a querytree cause - * lots of headaches, so it seems better to store an index into the RT. - */ -type RangeTblRef struct { - Rtindex int `json:"rtindex"` -} - -func (node RangeTblRef) MarshalJSON() ([]byte, error) { - type RangeTblRefMarshalAlias RangeTblRef - return json.Marshal(map[string]interface{}{ - "RangeTblRef": (*RangeTblRefMarshalAlias)(&node), - }) -} - -func (node *RangeTblRef) UnmarshalJSON(input []byte) (err error) { - var fields map[string]json.RawMessage - - err = json.Unmarshal(input, &fields) - if err != nil { - return - } - - if fields["rtindex"] != nil { - err = json.Unmarshal(fields["rtindex"], &node.Rtindex) - if err != nil { - return - } - } - - return -} diff --git a/nodes/range_tbl_ref_deparse.go b/nodes/range_tbl_ref_deparse.go deleted file mode 100644 index a552092f..00000000 --- a/nodes/range_tbl_ref_deparse.go +++ /dev/null @@ -1,7 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -func (node RangeTblRef) Deparse() string { - panic("Not Implemented") -} diff --git a/nodes/range_tbl_ref_fingerprint.go b/nodes/range_tbl_ref_fingerprint.go deleted file mode 100644 index 385f0cc4..00000000 --- a/nodes/range_tbl_ref_fingerprint.go +++ /dev/null @@ -1,14 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -import "strconv" - -func (node RangeTblRef) Fingerprint(ctx FingerprintContext, parentNode Node, parentFieldName string) { - ctx.WriteString("RangeTblRef") - - if node.Rtindex != 0 { - ctx.WriteString("rtindex") - ctx.WriteString(strconv.Itoa(int(node.Rtindex))) - } -} diff --git a/nodes/range_var.go b/nodes/range_var.go deleted file mode 100644 index 943c0f2d..00000000 --- a/nodes/range_var.go +++ /dev/null @@ -1,99 +0,0 @@ -// Auto-generated from postgres/src/include/nodes/primnodes.h - DO NOT EDIT - -package pg_query - -import "encoding/json" - -/* - * RangeVar - range variable, used in FROM clauses - * - * Also used to represent table names in utility statements; there, the alias - * field is not used, and inh tells whether to apply the operation - * recursively to child tables. In some contexts it is also useful to carry - * a TEMP table indication here. - */ -type RangeVar struct { - Catalogname *string `json:"catalogname"` /* the catalog (database) name, or NULL */ - Schemaname *string `json:"schemaname"` /* the schema name, or NULL */ - Relname *string `json:"relname"` /* the relation/sequence name */ - Inh bool `json:"inh"` /* expand rel by inheritance? recursively act - * on children? */ - - Relpersistence byte `json:"relpersistence"` /* see RELPERSISTENCE_* in pg_class.h */ - Alias *Alias `json:"alias"` /* table alias & optional column aliases */ - Location int `json:"location"` /* token location, or -1 if unknown */ -} - -func (node RangeVar) MarshalJSON() ([]byte, error) { - type RangeVarMarshalAlias RangeVar - return json.Marshal(map[string]interface{}{ - "RangeVar": (*RangeVarMarshalAlias)(&node), - }) -} - -func (node *RangeVar) UnmarshalJSON(input []byte) (err error) { - var fields map[string]json.RawMessage - - err = json.Unmarshal(input, &fields) - if err != nil { - return - } - - if fields["catalogname"] != nil { - err = json.Unmarshal(fields["catalogname"], &node.Catalogname) - if err != nil { - return - } - } - - if fields["schemaname"] != nil { - err = json.Unmarshal(fields["schemaname"], &node.Schemaname) - if err != nil { - return - } - } - - if fields["relname"] != nil { - err = json.Unmarshal(fields["relname"], &node.Relname) - if err != nil { - return - } - } - - if fields["inh"] != nil { - err = json.Unmarshal(fields["inh"], &node.Inh) - if err != nil { - return - } - } - - if fields["relpersistence"] != nil { - var strVal string - err = json.Unmarshal(fields["relpersistence"], &strVal) - node.Relpersistence = strVal[0] - if err != nil { - return - } - } - - if fields["alias"] != nil { - var nodePtr *Node - nodePtr, err = UnmarshalNodePtrJSON(fields["alias"]) - if err != nil { - return - } - if nodePtr != nil && *nodePtr != nil { - val := (*nodePtr).(Alias) - node.Alias = &val - } - } - - if fields["location"] != nil { - err = json.Unmarshal(fields["location"], &node.Location) - if err != nil { - return - } - } - - return -} diff --git a/nodes/range_var_deparse.go b/nodes/range_var_deparse.go deleted file mode 100644 index faf2996a..00000000 --- a/nodes/range_var_deparse.go +++ /dev/null @@ -1,7 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -func (node RangeVar) Deparse() string { - panic("Not Implemented") -} diff --git a/nodes/range_var_fingerprint.go b/nodes/range_var_fingerprint.go deleted file mode 100644 index 5de8121a..00000000 --- a/nodes/range_var_fingerprint.go +++ /dev/null @@ -1,49 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -import "strconv" - -func (node RangeVar) Fingerprint(ctx FingerprintContext, parentNode Node, parentFieldName string) { - ctx.WriteString("RangeVar") - - if node.Alias != nil { - subCtx := FingerprintSubContext{} - node.Alias.Fingerprint(&subCtx, node, "Alias") - - if len(subCtx.parts) > 0 { - ctx.WriteString("alias") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if node.Catalogname != nil { - ctx.WriteString("catalogname") - ctx.WriteString(*node.Catalogname) - } - - if node.Inh { - ctx.WriteString("inh") - ctx.WriteString(strconv.FormatBool(node.Inh)) - } - - // Intentionally ignoring node.Location for fingerprinting - - if node.Relname != nil && node.Relpersistence != 't' { - ctx.WriteString("relname") - ctx.WriteString(*node.Relname) - } - - if node.Relpersistence != 0 { - ctx.WriteString("relpersistence") - ctx.WriteString(string(node.Relpersistence)) - - } - - if node.Schemaname != nil { - ctx.WriteString("schemaname") - ctx.WriteString(*node.Schemaname) - } -} diff --git a/nodes/raw_stmt.go b/nodes/raw_stmt.go deleted file mode 100644 index 88d65e7c..00000000 --- a/nodes/raw_stmt.go +++ /dev/null @@ -1,62 +0,0 @@ -// Auto-generated from postgres/src/include/nodes/parsenodes.h - DO NOT EDIT - -package pg_query - -import "encoding/json" - -/* - * RawStmt --- container for any one statement's raw parse tree - * - * Parse analysis converts a raw parse tree headed by a RawStmt node into - * an analyzed statement headed by a Query node. For optimizable statements, - * the conversion is complex. For utility statements, the parser usually just - * transfers the raw parse tree (sans RawStmt) into the utilityStmt field of - * the Query node, and all the useful work happens at execution time. - * - * stmt_location/stmt_len identify the portion of the source text string - * containing this raw statement (useful for multi-statement strings). - */ -type RawStmt struct { - Stmt Node `json:"stmt"` /* raw parse tree */ - StmtLocation int `json:"stmt_location"` /* start location, or -1 if unknown */ - StmtLen int `json:"stmt_len"` /* length in bytes; 0 means "rest of string" */ -} - -func (node RawStmt) MarshalJSON() ([]byte, error) { - type RawStmtMarshalAlias RawStmt - return json.Marshal(map[string]interface{}{ - "RawStmt": (*RawStmtMarshalAlias)(&node), - }) -} - -func (node *RawStmt) UnmarshalJSON(input []byte) (err error) { - var fields map[string]json.RawMessage - - err = json.Unmarshal(input, &fields) - if err != nil { - return - } - - if fields["stmt"] != nil { - node.Stmt, err = UnmarshalNodeJSON(fields["stmt"]) - if err != nil { - return - } - } - - if fields["stmt_location"] != nil { - err = json.Unmarshal(fields["stmt_location"], &node.StmtLocation) - if err != nil { - return - } - } - - if fields["stmt_len"] != nil { - err = json.Unmarshal(fields["stmt_len"], &node.StmtLen) - if err != nil { - return - } - } - - return -} diff --git a/nodes/raw_stmt_deparse.go b/nodes/raw_stmt_deparse.go deleted file mode 100644 index 79ca467f..00000000 --- a/nodes/raw_stmt_deparse.go +++ /dev/null @@ -1,7 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -func (node RawStmt) Deparse() string { - panic("Not Implemented") -} diff --git a/nodes/raw_stmt_fingerprint.go b/nodes/raw_stmt_fingerprint.go deleted file mode 100644 index 220e7364..00000000 --- a/nodes/raw_stmt_fingerprint.go +++ /dev/null @@ -1,22 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -func (node RawStmt) Fingerprint(ctx FingerprintContext, parentNode Node, parentFieldName string) { - ctx.WriteString("RawStmt") - - if node.Stmt != nil { - subCtx := FingerprintSubContext{} - node.Stmt.Fingerprint(&subCtx, node, "Stmt") - - if len(subCtx.parts) > 0 { - ctx.WriteString("stmt") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - // Intentionally ignoring node.StmtLen for fingerprinting - - // Intentionally ignoring node.StmtLocation for fingerprinting -} diff --git a/nodes/reassign_owned_stmt.go b/nodes/reassign_owned_stmt.go deleted file mode 100644 index 56b061eb..00000000 --- a/nodes/reassign_owned_stmt.go +++ /dev/null @@ -1,50 +0,0 @@ -// Auto-generated from postgres/src/include/nodes/parsenodes.h - DO NOT EDIT - -package pg_query - -import "encoding/json" - -/* - * REASSIGN OWNED statement - */ -type ReassignOwnedStmt struct { - Roles List `json:"roles"` - Newrole *RoleSpec `json:"newrole"` -} - -func (node ReassignOwnedStmt) MarshalJSON() ([]byte, error) { - type ReassignOwnedStmtMarshalAlias ReassignOwnedStmt - return json.Marshal(map[string]interface{}{ - "ReassignOwnedStmt": (*ReassignOwnedStmtMarshalAlias)(&node), - }) -} - -func (node *ReassignOwnedStmt) UnmarshalJSON(input []byte) (err error) { - var fields map[string]json.RawMessage - - err = json.Unmarshal(input, &fields) - if err != nil { - return - } - - if fields["roles"] != nil { - node.Roles.Items, err = UnmarshalNodeArrayJSON(fields["roles"]) - if err != nil { - return - } - } - - if fields["newrole"] != nil { - var nodePtr *Node - nodePtr, err = UnmarshalNodePtrJSON(fields["newrole"]) - if err != nil { - return - } - if nodePtr != nil && *nodePtr != nil { - val := (*nodePtr).(RoleSpec) - node.Newrole = &val - } - } - - return -} diff --git a/nodes/reassign_owned_stmt_deparse.go b/nodes/reassign_owned_stmt_deparse.go deleted file mode 100644 index 0ee93866..00000000 --- a/nodes/reassign_owned_stmt_deparse.go +++ /dev/null @@ -1,7 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -func (node ReassignOwnedStmt) Deparse() string { - panic("Not Implemented") -} diff --git a/nodes/reassign_owned_stmt_fingerprint.go b/nodes/reassign_owned_stmt_fingerprint.go deleted file mode 100644 index 4acc6eb6..00000000 --- a/nodes/reassign_owned_stmt_fingerprint.go +++ /dev/null @@ -1,31 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -func (node ReassignOwnedStmt) Fingerprint(ctx FingerprintContext, parentNode Node, parentFieldName string) { - ctx.WriteString("ReassignOwnedStmt") - - if node.Newrole != nil { - subCtx := FingerprintSubContext{} - node.Newrole.Fingerprint(&subCtx, node, "Newrole") - - if len(subCtx.parts) > 0 { - ctx.WriteString("newrole") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if len(node.Roles.Items) > 0 { - subCtx := FingerprintSubContext{} - node.Roles.Fingerprint(&subCtx, node, "Roles") - - if len(subCtx.parts) > 0 { - ctx.WriteString("roles") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } -} diff --git a/nodes/refresh_mat_view_stmt.go b/nodes/refresh_mat_view_stmt.go deleted file mode 100644 index b0f0eef1..00000000 --- a/nodes/refresh_mat_view_stmt.go +++ /dev/null @@ -1,59 +0,0 @@ -// Auto-generated from postgres/src/include/nodes/parsenodes.h - DO NOT EDIT - -package pg_query - -import "encoding/json" - -/* ---------------------- - * REFRESH MATERIALIZED VIEW Statement - * ---------------------- - */ -type RefreshMatViewStmt struct { - Concurrent bool `json:"concurrent"` /* allow concurrent access? */ - SkipData bool `json:"skipData"` /* true for WITH NO DATA */ - Relation *RangeVar `json:"relation"` /* relation to insert into */ -} - -func (node RefreshMatViewStmt) MarshalJSON() ([]byte, error) { - type RefreshMatViewStmtMarshalAlias RefreshMatViewStmt - return json.Marshal(map[string]interface{}{ - "RefreshMatViewStmt": (*RefreshMatViewStmtMarshalAlias)(&node), - }) -} - -func (node *RefreshMatViewStmt) UnmarshalJSON(input []byte) (err error) { - var fields map[string]json.RawMessage - - err = json.Unmarshal(input, &fields) - if err != nil { - return - } - - if fields["concurrent"] != nil { - err = json.Unmarshal(fields["concurrent"], &node.Concurrent) - if err != nil { - return - } - } - - if fields["skipData"] != nil { - err = json.Unmarshal(fields["skipData"], &node.SkipData) - if err != nil { - return - } - } - - if fields["relation"] != nil { - var nodePtr *Node - nodePtr, err = UnmarshalNodePtrJSON(fields["relation"]) - if err != nil { - return - } - if nodePtr != nil && *nodePtr != nil { - val := (*nodePtr).(RangeVar) - node.Relation = &val - } - } - - return -} diff --git a/nodes/refresh_mat_view_stmt_deparse.go b/nodes/refresh_mat_view_stmt_deparse.go deleted file mode 100644 index 508ebf87..00000000 --- a/nodes/refresh_mat_view_stmt_deparse.go +++ /dev/null @@ -1,7 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -func (node RefreshMatViewStmt) Deparse() string { - panic("Not Implemented") -} diff --git a/nodes/refresh_mat_view_stmt_fingerprint.go b/nodes/refresh_mat_view_stmt_fingerprint.go deleted file mode 100644 index 199781a5..00000000 --- a/nodes/refresh_mat_view_stmt_fingerprint.go +++ /dev/null @@ -1,31 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -import "strconv" - -func (node RefreshMatViewStmt) Fingerprint(ctx FingerprintContext, parentNode Node, parentFieldName string) { - ctx.WriteString("RefreshMatViewStmt") - - if node.Concurrent { - ctx.WriteString("concurrent") - ctx.WriteString(strconv.FormatBool(node.Concurrent)) - } - - if node.Relation != nil { - subCtx := FingerprintSubContext{} - node.Relation.Fingerprint(&subCtx, node, "Relation") - - if len(subCtx.parts) > 0 { - ctx.WriteString("relation") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if node.SkipData { - ctx.WriteString("skipData") - ctx.WriteString(strconv.FormatBool(node.SkipData)) - } -} diff --git a/nodes/reindex_object_type.go b/nodes/reindex_object_type.go deleted file mode 100644 index cc942e3e..00000000 --- a/nodes/reindex_object_type.go +++ /dev/null @@ -1,14 +0,0 @@ -// Auto-generated from postgres/src/include/nodes/parsenodes.h - DO NOT EDIT - -package pg_query - -/* Reindex options */ -type ReindexObjectType uint - -const ( - REINDEX_OBJECT_INDEX ReindexObjectType = iota /* index */ - REINDEX_OBJECT_TABLE /* table or materialized view */ - REINDEX_OBJECT_SCHEMA /* schema */ - REINDEX_OBJECT_SYSTEM /* system catalogs */ - REINDEX_OBJECT_DATABASE /* database */ -) diff --git a/nodes/reindex_stmt.go b/nodes/reindex_stmt.go deleted file mode 100644 index bfac4a3b..00000000 --- a/nodes/reindex_stmt.go +++ /dev/null @@ -1,65 +0,0 @@ -// Auto-generated from postgres/src/include/nodes/parsenodes.h - DO NOT EDIT - -package pg_query - -import "encoding/json" - -type ReindexStmt struct { - Kind ReindexObjectType `json:"kind"` /* REINDEX_OBJECT_INDEX, REINDEX_OBJECT_TABLE, - * etc. */ - - Relation *RangeVar `json:"relation"` /* Table or index to reindex */ - Name *string `json:"name"` /* name of database to reindex */ - Options int `json:"options"` /* Reindex options flags */ -} - -func (node ReindexStmt) MarshalJSON() ([]byte, error) { - type ReindexStmtMarshalAlias ReindexStmt - return json.Marshal(map[string]interface{}{ - "ReindexStmt": (*ReindexStmtMarshalAlias)(&node), - }) -} - -func (node *ReindexStmt) UnmarshalJSON(input []byte) (err error) { - var fields map[string]json.RawMessage - - err = json.Unmarshal(input, &fields) - if err != nil { - return - } - - if fields["kind"] != nil { - err = json.Unmarshal(fields["kind"], &node.Kind) - if err != nil { - return - } - } - - if fields["relation"] != nil { - var nodePtr *Node - nodePtr, err = UnmarshalNodePtrJSON(fields["relation"]) - if err != nil { - return - } - if nodePtr != nil && *nodePtr != nil { - val := (*nodePtr).(RangeVar) - node.Relation = &val - } - } - - if fields["name"] != nil { - err = json.Unmarshal(fields["name"], &node.Name) - if err != nil { - return - } - } - - if fields["options"] != nil { - err = json.Unmarshal(fields["options"], &node.Options) - if err != nil { - return - } - } - - return -} diff --git a/nodes/reindex_stmt_deparse.go b/nodes/reindex_stmt_deparse.go deleted file mode 100644 index 73c96e35..00000000 --- a/nodes/reindex_stmt_deparse.go +++ /dev/null @@ -1,7 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -func (node ReindexStmt) Deparse() string { - panic("Not Implemented") -} diff --git a/nodes/reindex_stmt_fingerprint.go b/nodes/reindex_stmt_fingerprint.go deleted file mode 100644 index 1afe1f1e..00000000 --- a/nodes/reindex_stmt_fingerprint.go +++ /dev/null @@ -1,36 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -import "strconv" - -func (node ReindexStmt) Fingerprint(ctx FingerprintContext, parentNode Node, parentFieldName string) { - ctx.WriteString("ReindexStmt") - - if int(node.Kind) != 0 { - ctx.WriteString("kind") - ctx.WriteString(strconv.Itoa(int(node.Kind))) - } - - if node.Name != nil { - ctx.WriteString("name") - ctx.WriteString(*node.Name) - } - - if node.Options != 0 { - ctx.WriteString("options") - ctx.WriteString(strconv.Itoa(int(node.Options))) - } - - if node.Relation != nil { - subCtx := FingerprintSubContext{} - node.Relation.Fingerprint(&subCtx, node, "Relation") - - if len(subCtx.parts) > 0 { - ctx.WriteString("relation") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } -} diff --git a/nodes/relabel_type.go b/nodes/relabel_type.go deleted file mode 100644 index 1a9d8fdd..00000000 --- a/nodes/relabel_type.go +++ /dev/null @@ -1,94 +0,0 @@ -// Auto-generated from postgres/src/include/nodes/primnodes.h - DO NOT EDIT - -package pg_query - -import "encoding/json" - -/* ---------------- - * RelabelType - * - * RelabelType represents a "dummy" type coercion between two binary- - * compatible datatypes, such as reinterpreting the result of an OID - * expression as an int4. It is a no-op at runtime; we only need it - * to provide a place to store the correct type to be attributed to - * the expression result during type resolution. (We can't get away - * with just overwriting the type field of the input expression node, - * so we need a separate node to show the coercion's result type.) - * ---------------- - */ -type RelabelType struct { - Xpr Node `json:"xpr"` - Arg Node `json:"arg"` /* input expression */ - Resulttype Oid `json:"resulttype"` /* output type of coercion expression */ - Resulttypmod int32 `json:"resulttypmod"` /* output typmod (usually -1) */ - Resultcollid Oid `json:"resultcollid"` /* OID of collation, or InvalidOid if none */ - Relabelformat CoercionForm `json:"relabelformat"` /* how to display this node */ - Location int `json:"location"` /* token location, or -1 if unknown */ -} - -func (node RelabelType) MarshalJSON() ([]byte, error) { - type RelabelTypeMarshalAlias RelabelType - return json.Marshal(map[string]interface{}{ - "RelabelType": (*RelabelTypeMarshalAlias)(&node), - }) -} - -func (node *RelabelType) UnmarshalJSON(input []byte) (err error) { - var fields map[string]json.RawMessage - - err = json.Unmarshal(input, &fields) - if err != nil { - return - } - - if fields["xpr"] != nil { - node.Xpr, err = UnmarshalNodeJSON(fields["xpr"]) - if err != nil { - return - } - } - - if fields["arg"] != nil { - node.Arg, err = UnmarshalNodeJSON(fields["arg"]) - if err != nil { - return - } - } - - if fields["resulttype"] != nil { - err = json.Unmarshal(fields["resulttype"], &node.Resulttype) - if err != nil { - return - } - } - - if fields["resulttypmod"] != nil { - err = json.Unmarshal(fields["resulttypmod"], &node.Resulttypmod) - if err != nil { - return - } - } - - if fields["resultcollid"] != nil { - err = json.Unmarshal(fields["resultcollid"], &node.Resultcollid) - if err != nil { - return - } - } - - if fields["relabelformat"] != nil { - err = json.Unmarshal(fields["relabelformat"], &node.Relabelformat) - if err != nil { - return - } - } - - if fields["location"] != nil { - err = json.Unmarshal(fields["location"], &node.Location) - if err != nil { - return - } - } - - return -} diff --git a/nodes/relabel_type_deparse.go b/nodes/relabel_type_deparse.go deleted file mode 100644 index 7aebcf7b..00000000 --- a/nodes/relabel_type_deparse.go +++ /dev/null @@ -1,7 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -func (node RelabelType) Deparse() string { - panic("Not Implemented") -} diff --git a/nodes/relabel_type_fingerprint.go b/nodes/relabel_type_fingerprint.go deleted file mode 100644 index 78d5651d..00000000 --- a/nodes/relabel_type_fingerprint.go +++ /dev/null @@ -1,54 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -import "strconv" - -func (node RelabelType) Fingerprint(ctx FingerprintContext, parentNode Node, parentFieldName string) { - ctx.WriteString("RelabelType") - - if node.Arg != nil { - subCtx := FingerprintSubContext{} - node.Arg.Fingerprint(&subCtx, node, "Arg") - - if len(subCtx.parts) > 0 { - ctx.WriteString("arg") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - // Intentionally ignoring node.Location for fingerprinting - - if int(node.Relabelformat) != 0 { - ctx.WriteString("relabelformat") - ctx.WriteString(strconv.Itoa(int(node.Relabelformat))) - } - - if node.Resultcollid != 0 { - ctx.WriteString("resultcollid") - ctx.WriteString(strconv.Itoa(int(node.Resultcollid))) - } - - if node.Resulttype != 0 { - ctx.WriteString("resulttype") - ctx.WriteString(strconv.Itoa(int(node.Resulttype))) - } - - if node.Resulttypmod != 0 { - ctx.WriteString("resulttypmod") - ctx.WriteString(strconv.Itoa(int(node.Resulttypmod))) - } - - if node.Xpr != nil { - subCtx := FingerprintSubContext{} - node.Xpr.Fingerprint(&subCtx, node, "Xpr") - - if len(subCtx.parts) > 0 { - ctx.WriteString("xpr") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } -} diff --git a/nodes/rename_stmt.go b/nodes/rename_stmt.go deleted file mode 100644 index 47ac872b..00000000 --- a/nodes/rename_stmt.go +++ /dev/null @@ -1,101 +0,0 @@ -// Auto-generated from postgres/src/include/nodes/parsenodes.h - DO NOT EDIT - -package pg_query - -import "encoding/json" - -/* ---------------------- - * Alter Object Rename Statement - * ---------------------- - */ -type RenameStmt struct { - RenameType ObjectType `json:"renameType"` /* OBJECT_TABLE, OBJECT_COLUMN, etc */ - RelationType ObjectType `json:"relationType"` /* if column name, associated relation type */ - Relation *RangeVar `json:"relation"` /* in case it's a table */ - Object Node `json:"object"` /* in case it's some other object */ - Subname *string `json:"subname"` /* name of contained object (column, rule, - * trigger, etc) */ - - Newname *string `json:"newname"` /* the new name */ - Behavior DropBehavior `json:"behavior"` /* RESTRICT or CASCADE behavior */ - MissingOk bool `json:"missing_ok"` /* skip error if missing? */ -} - -func (node RenameStmt) MarshalJSON() ([]byte, error) { - type RenameStmtMarshalAlias RenameStmt - return json.Marshal(map[string]interface{}{ - "RenameStmt": (*RenameStmtMarshalAlias)(&node), - }) -} - -func (node *RenameStmt) UnmarshalJSON(input []byte) (err error) { - var fields map[string]json.RawMessage - - err = json.Unmarshal(input, &fields) - if err != nil { - return - } - - if fields["renameType"] != nil { - err = json.Unmarshal(fields["renameType"], &node.RenameType) - if err != nil { - return - } - } - - if fields["relationType"] != nil { - err = json.Unmarshal(fields["relationType"], &node.RelationType) - if err != nil { - return - } - } - - if fields["relation"] != nil { - var nodePtr *Node - nodePtr, err = UnmarshalNodePtrJSON(fields["relation"]) - if err != nil { - return - } - if nodePtr != nil && *nodePtr != nil { - val := (*nodePtr).(RangeVar) - node.Relation = &val - } - } - - if fields["object"] != nil { - node.Object, err = UnmarshalNodeJSON(fields["object"]) - if err != nil { - return - } - } - - if fields["subname"] != nil { - err = json.Unmarshal(fields["subname"], &node.Subname) - if err != nil { - return - } - } - - if fields["newname"] != nil { - err = json.Unmarshal(fields["newname"], &node.Newname) - if err != nil { - return - } - } - - if fields["behavior"] != nil { - err = json.Unmarshal(fields["behavior"], &node.Behavior) - if err != nil { - return - } - } - - if fields["missing_ok"] != nil { - err = json.Unmarshal(fields["missing_ok"], &node.MissingOk) - if err != nil { - return - } - } - - return -} diff --git a/nodes/rename_stmt_deparse.go b/nodes/rename_stmt_deparse.go deleted file mode 100644 index 764ad14a..00000000 --- a/nodes/rename_stmt_deparse.go +++ /dev/null @@ -1,7 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -func (node RenameStmt) Deparse() string { - panic("Not Implemented") -} diff --git a/nodes/rename_stmt_fingerprint.go b/nodes/rename_stmt_fingerprint.go deleted file mode 100644 index 1ee090ce..00000000 --- a/nodes/rename_stmt_fingerprint.go +++ /dev/null @@ -1,63 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -import "strconv" - -func (node RenameStmt) Fingerprint(ctx FingerprintContext, parentNode Node, parentFieldName string) { - ctx.WriteString("RenameStmt") - - if int(node.Behavior) != 0 { - ctx.WriteString("behavior") - ctx.WriteString(strconv.Itoa(int(node.Behavior))) - } - - if node.MissingOk { - ctx.WriteString("missing_ok") - ctx.WriteString(strconv.FormatBool(node.MissingOk)) - } - - if node.Newname != nil { - ctx.WriteString("newname") - ctx.WriteString(*node.Newname) - } - - if node.Object != nil { - subCtx := FingerprintSubContext{} - node.Object.Fingerprint(&subCtx, node, "Object") - - if len(subCtx.parts) > 0 { - ctx.WriteString("object") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if node.Relation != nil { - subCtx := FingerprintSubContext{} - node.Relation.Fingerprint(&subCtx, node, "Relation") - - if len(subCtx.parts) > 0 { - ctx.WriteString("relation") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if int(node.RelationType) != 0 { - ctx.WriteString("relationType") - ctx.WriteString(strconv.Itoa(int(node.RelationType))) - } - - if int(node.RenameType) != 0 { - ctx.WriteString("renameType") - ctx.WriteString(strconv.Itoa(int(node.RenameType))) - } - - if node.Subname != nil { - ctx.WriteString("subname") - ctx.WriteString(*node.Subname) - } -} diff --git a/nodes/replica_identity_stmt.go b/nodes/replica_identity_stmt.go deleted file mode 100644 index 860e32c7..00000000 --- a/nodes/replica_identity_stmt.go +++ /dev/null @@ -1,48 +0,0 @@ -// Auto-generated from postgres/src/include/nodes/parsenodes.h - DO NOT EDIT - -package pg_query - -import "encoding/json" - -/* ---------------------- - * Alter Table - * ---------------------- - */ -type ReplicaIdentityStmt struct { - IdentityType byte `json:"identity_type"` - Name *string `json:"name"` -} - -func (node ReplicaIdentityStmt) MarshalJSON() ([]byte, error) { - type ReplicaIdentityStmtMarshalAlias ReplicaIdentityStmt - return json.Marshal(map[string]interface{}{ - "ReplicaIdentityStmt": (*ReplicaIdentityStmtMarshalAlias)(&node), - }) -} - -func (node *ReplicaIdentityStmt) UnmarshalJSON(input []byte) (err error) { - var fields map[string]json.RawMessage - - err = json.Unmarshal(input, &fields) - if err != nil { - return - } - - if fields["identity_type"] != nil { - var strVal string - err = json.Unmarshal(fields["identity_type"], &strVal) - node.IdentityType = strVal[0] - if err != nil { - return - } - } - - if fields["name"] != nil { - err = json.Unmarshal(fields["name"], &node.Name) - if err != nil { - return - } - } - - return -} diff --git a/nodes/replica_identity_stmt_deparse.go b/nodes/replica_identity_stmt_deparse.go deleted file mode 100644 index 9ad1b180..00000000 --- a/nodes/replica_identity_stmt_deparse.go +++ /dev/null @@ -1,7 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -func (node ReplicaIdentityStmt) Deparse() string { - panic("Not Implemented") -} diff --git a/nodes/replica_identity_stmt_fingerprint.go b/nodes/replica_identity_stmt_fingerprint.go deleted file mode 100644 index ea65bcee..00000000 --- a/nodes/replica_identity_stmt_fingerprint.go +++ /dev/null @@ -1,18 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -func (node ReplicaIdentityStmt) Fingerprint(ctx FingerprintContext, parentNode Node, parentFieldName string) { - ctx.WriteString("ReplicaIdentityStmt") - - if node.IdentityType != 0 { - ctx.WriteString("identity_type") - ctx.WriteString(string(node.IdentityType)) - - } - - if node.Name != nil { - ctx.WriteString("name") - ctx.WriteString(*node.Name) - } -} diff --git a/nodes/res_target.go b/nodes/res_target.go deleted file mode 100644 index b0f6f5a8..00000000 --- a/nodes/res_target.go +++ /dev/null @@ -1,76 +0,0 @@ -// Auto-generated from postgres/src/include/nodes/parsenodes.h - DO NOT EDIT - -package pg_query - -import "encoding/json" - -/* - * ResTarget - - * result target (used in target list of pre-transformed parse trees) - * - * In a SELECT target list, 'name' is the column label from an - * 'AS ColumnLabel' clause, or NULL if there was none, and 'val' is the - * value expression itself. The 'indirection' field is not used. - * - * INSERT uses ResTarget in its target-column-names list. Here, 'name' is - * the name of the destination column, 'indirection' stores any subscripts - * attached to the destination, and 'val' is not used. - * - * In an UPDATE target list, 'name' is the name of the destination column, - * 'indirection' stores any subscripts attached to the destination, and - * 'val' is the expression to assign. - * - * See A_Indirection for more info about what can appear in 'indirection'. - */ -type ResTarget struct { - Name *string `json:"name"` /* column name or NULL */ - Indirection List `json:"indirection"` /* subscripts, field names, and '*', or NIL */ - Val Node `json:"val"` /* the value expression to compute or assign */ - Location int `json:"location"` /* token location, or -1 if unknown */ -} - -func (node ResTarget) MarshalJSON() ([]byte, error) { - type ResTargetMarshalAlias ResTarget - return json.Marshal(map[string]interface{}{ - "ResTarget": (*ResTargetMarshalAlias)(&node), - }) -} - -func (node *ResTarget) UnmarshalJSON(input []byte) (err error) { - var fields map[string]json.RawMessage - - err = json.Unmarshal(input, &fields) - if err != nil { - return - } - - if fields["name"] != nil { - err = json.Unmarshal(fields["name"], &node.Name) - if err != nil { - return - } - } - - if fields["indirection"] != nil { - node.Indirection.Items, err = UnmarshalNodeArrayJSON(fields["indirection"]) - if err != nil { - return - } - } - - if fields["val"] != nil { - node.Val, err = UnmarshalNodeJSON(fields["val"]) - if err != nil { - return - } - } - - if fields["location"] != nil { - err = json.Unmarshal(fields["location"], &node.Location) - if err != nil { - return - } - } - - return -} diff --git a/nodes/res_target_deparse.go b/nodes/res_target_deparse.go deleted file mode 100644 index b2ca10d9..00000000 --- a/nodes/res_target_deparse.go +++ /dev/null @@ -1,7 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -func (node ResTarget) Deparse() string { - panic("Not Implemented") -} diff --git a/nodes/res_target_fingerprint.go b/nodes/res_target_fingerprint.go deleted file mode 100644 index dfe65a1b..00000000 --- a/nodes/res_target_fingerprint.go +++ /dev/null @@ -1,45 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -func (node ResTarget) Fingerprint(ctx FingerprintContext, parentNode Node, parentFieldName string) { - ctx.WriteString("ResTarget") - - if len(node.Indirection.Items) > 0 { - subCtx := FingerprintSubContext{} - node.Indirection.Fingerprint(&subCtx, node, "Indirection") - - if len(subCtx.parts) > 0 { - ctx.WriteString("indirection") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - // Intentionally ignoring node.Location for fingerprinting - - switch parentNode.(type) { - case SelectStmt: - if node.Name != nil && parentFieldName != "TargetList" { - ctx.WriteString("name") - ctx.WriteString(*node.Name) - } - default: - if node.Name != nil { - ctx.WriteString("name") - ctx.WriteString(*node.Name) - } - } - - if node.Val != nil { - subCtx := FingerprintSubContext{} - node.Val.Fingerprint(&subCtx, node, "Val") - - if len(subCtx.parts) > 0 { - ctx.WriteString("val") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } -} diff --git a/nodes/role_spec.go b/nodes/role_spec.go deleted file mode 100644 index fe1b1824..00000000 --- a/nodes/role_spec.go +++ /dev/null @@ -1,50 +0,0 @@ -// Auto-generated from postgres/src/include/nodes/parsenodes.h - DO NOT EDIT - -package pg_query - -import "encoding/json" - -type RoleSpec struct { - Roletype RoleSpecType `json:"roletype"` /* Type of this rolespec */ - Rolename *string `json:"rolename"` /* filled only for ROLESPEC_CSTRING */ - Location int `json:"location"` /* token location, or -1 if unknown */ -} - -func (node RoleSpec) MarshalJSON() ([]byte, error) { - type RoleSpecMarshalAlias RoleSpec - return json.Marshal(map[string]interface{}{ - "RoleSpec": (*RoleSpecMarshalAlias)(&node), - }) -} - -func (node *RoleSpec) UnmarshalJSON(input []byte) (err error) { - var fields map[string]json.RawMessage - - err = json.Unmarshal(input, &fields) - if err != nil { - return - } - - if fields["roletype"] != nil { - err = json.Unmarshal(fields["roletype"], &node.Roletype) - if err != nil { - return - } - } - - if fields["rolename"] != nil { - err = json.Unmarshal(fields["rolename"], &node.Rolename) - if err != nil { - return - } - } - - if fields["location"] != nil { - err = json.Unmarshal(fields["location"], &node.Location) - if err != nil { - return - } - } - - return -} diff --git a/nodes/role_spec_deparse.go b/nodes/role_spec_deparse.go deleted file mode 100644 index 3876e8a8..00000000 --- a/nodes/role_spec_deparse.go +++ /dev/null @@ -1,7 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -func (node RoleSpec) Deparse() string { - panic("Not Implemented") -} diff --git a/nodes/role_spec_fingerprint.go b/nodes/role_spec_fingerprint.go deleted file mode 100644 index a582292b..00000000 --- a/nodes/role_spec_fingerprint.go +++ /dev/null @@ -1,20 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -import "strconv" - -func (node RoleSpec) Fingerprint(ctx FingerprintContext, parentNode Node, parentFieldName string) { - ctx.WriteString("RoleSpec") - // Intentionally ignoring node.Location for fingerprinting - - if node.Rolename != nil { - ctx.WriteString("rolename") - ctx.WriteString(*node.Rolename) - } - - if int(node.Roletype) != 0 { - ctx.WriteString("roletype") - ctx.WriteString(strconv.Itoa(int(node.Roletype))) - } -} diff --git a/nodes/role_spec_type.go b/nodes/role_spec_type.go deleted file mode 100644 index f6d504e8..00000000 --- a/nodes/role_spec_type.go +++ /dev/null @@ -1,15 +0,0 @@ -// Auto-generated from postgres/src/include/nodes/parsenodes.h - DO NOT EDIT - -package pg_query - -/* - * RoleSpec - a role name or one of a few special values. - */ -type RoleSpecType uint - -const ( - ROLESPEC_CSTRING RoleSpecType = iota /* role name is stored as a C string */ - ROLESPEC_CURRENT_USER /* role spec is CURRENT_USER */ - ROLESPEC_SESSION_USER /* role spec is SESSION_USER */ - ROLESPEC_PUBLIC /* role name is "public" */ -) diff --git a/nodes/role_stmt_type.go b/nodes/role_stmt_type.go deleted file mode 100644 index ac6aebbb..00000000 --- a/nodes/role_stmt_type.go +++ /dev/null @@ -1,20 +0,0 @@ -// Auto-generated from postgres/src/include/nodes/parsenodes.h - DO NOT EDIT - -package pg_query - -/* ---------------------- - * Create/Alter/Drop Role Statements - * - * Note: these node types are also used for the backwards-compatible - * Create/Alter/Drop User/Group statements. In the ALTER and DROP cases - * there's really no need to distinguish what the original spelling was, - * but for CREATE we mark the type because the defaults vary. - * ---------------------- - */ -type RoleStmtType uint - -const ( - ROLESTMT_ROLE RoleStmtType = iota - ROLESTMT_USER - ROLESTMT_GROUP -) diff --git a/nodes/row_compare_expr.go b/nodes/row_compare_expr.go deleted file mode 100644 index 1bd73d1f..00000000 --- a/nodes/row_compare_expr.go +++ /dev/null @@ -1,96 +0,0 @@ -// Auto-generated from postgres/src/include/nodes/primnodes.h - DO NOT EDIT - -package pg_query - -import "encoding/json" - -/* - * RowCompareExpr - row-wise comparison, such as (a, b) <= (1, 2) - * - * We support row comparison for any operator that can be determined to - * act like =, <>, <, <=, >, or >= (we determine this by looking for the - * operator in btree opfamilies). Note that the same operator name might - * map to a different operator for each pair of row elements, since the - * element datatypes can vary. - * - * A RowCompareExpr node is only generated for the < <= > >= cases; - * the = and <> cases are translated to simple AND or OR combinations - * of the pairwise comparisons. However, we include = and <> in the - * RowCompareType enum for the convenience of parser logic. - */ -type RowCompareExpr struct { - Xpr Node `json:"xpr"` - Rctype RowCompareType `json:"rctype"` /* LT LE GE or GT, never EQ or NE */ - Opnos List `json:"opnos"` /* OID list of pairwise comparison ops */ - Opfamilies List `json:"opfamilies"` /* OID list of containing operator families */ - Inputcollids List `json:"inputcollids"` /* OID list of collations for comparisons */ - Largs List `json:"largs"` /* the left-hand input arguments */ - Rargs List `json:"rargs"` /* the right-hand input arguments */ -} - -func (node RowCompareExpr) MarshalJSON() ([]byte, error) { - type RowCompareExprMarshalAlias RowCompareExpr - return json.Marshal(map[string]interface{}{ - "RowCompareExpr": (*RowCompareExprMarshalAlias)(&node), - }) -} - -func (node *RowCompareExpr) UnmarshalJSON(input []byte) (err error) { - var fields map[string]json.RawMessage - - err = json.Unmarshal(input, &fields) - if err != nil { - return - } - - if fields["xpr"] != nil { - node.Xpr, err = UnmarshalNodeJSON(fields["xpr"]) - if err != nil { - return - } - } - - if fields["rctype"] != nil { - err = json.Unmarshal(fields["rctype"], &node.Rctype) - if err != nil { - return - } - } - - if fields["opnos"] != nil { - node.Opnos.Items, err = UnmarshalNodeArrayJSON(fields["opnos"]) - if err != nil { - return - } - } - - if fields["opfamilies"] != nil { - node.Opfamilies.Items, err = UnmarshalNodeArrayJSON(fields["opfamilies"]) - if err != nil { - return - } - } - - if fields["inputcollids"] != nil { - node.Inputcollids.Items, err = UnmarshalNodeArrayJSON(fields["inputcollids"]) - if err != nil { - return - } - } - - if fields["largs"] != nil { - node.Largs.Items, err = UnmarshalNodeArrayJSON(fields["largs"]) - if err != nil { - return - } - } - - if fields["rargs"] != nil { - node.Rargs.Items, err = UnmarshalNodeArrayJSON(fields["rargs"]) - if err != nil { - return - } - } - - return -} diff --git a/nodes/row_compare_expr_deparse.go b/nodes/row_compare_expr_deparse.go deleted file mode 100644 index 467e2380..00000000 --- a/nodes/row_compare_expr_deparse.go +++ /dev/null @@ -1,7 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -func (node RowCompareExpr) Deparse() string { - panic("Not Implemented") -} diff --git a/nodes/row_compare_expr_fingerprint.go b/nodes/row_compare_expr_fingerprint.go deleted file mode 100644 index d0366e27..00000000 --- a/nodes/row_compare_expr_fingerprint.go +++ /dev/null @@ -1,86 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -import "strconv" - -func (node RowCompareExpr) Fingerprint(ctx FingerprintContext, parentNode Node, parentFieldName string) { - ctx.WriteString("RowCompareExpr") - - if len(node.Inputcollids.Items) > 0 { - subCtx := FingerprintSubContext{} - node.Inputcollids.Fingerprint(&subCtx, node, "Inputcollids") - - if len(subCtx.parts) > 0 { - ctx.WriteString("inputcollids") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if len(node.Largs.Items) > 0 { - subCtx := FingerprintSubContext{} - node.Largs.Fingerprint(&subCtx, node, "Largs") - - if len(subCtx.parts) > 0 { - ctx.WriteString("largs") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if len(node.Opfamilies.Items) > 0 { - subCtx := FingerprintSubContext{} - node.Opfamilies.Fingerprint(&subCtx, node, "Opfamilies") - - if len(subCtx.parts) > 0 { - ctx.WriteString("opfamilies") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if len(node.Opnos.Items) > 0 { - subCtx := FingerprintSubContext{} - node.Opnos.Fingerprint(&subCtx, node, "Opnos") - - if len(subCtx.parts) > 0 { - ctx.WriteString("opnos") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if len(node.Rargs.Items) > 0 { - subCtx := FingerprintSubContext{} - node.Rargs.Fingerprint(&subCtx, node, "Rargs") - - if len(subCtx.parts) > 0 { - ctx.WriteString("rargs") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if int(node.Rctype) != 0 { - ctx.WriteString("rctype") - ctx.WriteString(strconv.Itoa(int(node.Rctype))) - } - - if node.Xpr != nil { - subCtx := FingerprintSubContext{} - node.Xpr.Fingerprint(&subCtx, node, "Xpr") - - if len(subCtx.parts) > 0 { - ctx.WriteString("xpr") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } -} diff --git a/nodes/row_compare_type.go b/nodes/row_compare_type.go deleted file mode 100644 index 615c33d8..00000000 --- a/nodes/row_compare_type.go +++ /dev/null @@ -1,29 +0,0 @@ -// Auto-generated from postgres/src/include/nodes/primnodes.h - DO NOT EDIT - -package pg_query - -/* - * RowCompareExpr - row-wise comparison, such as (a, b) <= (1, 2) - * - * We support row comparison for any operator that can be determined to - * act like =, <>, <, <=, >, or >= (we determine this by looking for the - * operator in btree opfamilies). Note that the same operator name might - * map to a different operator for each pair of row elements, since the - * element datatypes can vary. - * - * A RowCompareExpr node is only generated for the < <= > >= cases; - * the = and <> cases are translated to simple AND or OR combinations - * of the pairwise comparisons. However, we include = and <> in the - * RowCompareType enum for the convenience of parser logic. - */ -type RowCompareType uint - -const ( - /* Values of this enum are chosen to match btree strategy numbers */ - ROWCOMPARE_LT RowCompareType = iota - ROWCOMPARE_LE - ROWCOMPARE_EQ - ROWCOMPARE_GE - ROWCOMPARE_GT - ROWCOMPARE_NE -) diff --git a/nodes/row_expr.go b/nodes/row_expr.go deleted file mode 100644 index 21d92372..00000000 --- a/nodes/row_expr.go +++ /dev/null @@ -1,107 +0,0 @@ -// Auto-generated from postgres/src/include/nodes/primnodes.h - DO NOT EDIT - -package pg_query - -import "encoding/json" - -/* - * RowExpr - a ROW() expression - * - * Note: the list of fields must have a one-for-one correspondence with - * physical fields of the associated rowtype, although it is okay for it - * to be shorter than the rowtype. That is, the N'th list element must - * match up with the N'th physical field. When the N'th physical field - * is a dropped column (attisdropped) then the N'th list element can just - * be a NULL constant. (This case can only occur for named composite types, - * not RECORD types, since those are built from the RowExpr itself rather - * than vice versa.) It is important not to assume that length(args) is - * the same as the number of columns logically present in the rowtype. - * - * colnames provides field names in cases where the names can't easily be - * obtained otherwise. Names *must* be provided if row_typeid is RECORDOID. - * If row_typeid identifies a known composite type, colnames can be NIL to - * indicate the type's cataloged field names apply. Note that colnames can - * be non-NIL even for a composite type, and typically is when the RowExpr - * was created by expanding a whole-row Var. This is so that we can retain - * the column alias names of the RTE that the Var referenced (which would - * otherwise be very difficult to extract from the parsetree). Like the - * args list, colnames is one-for-one with physical fields of the rowtype. - */ -type RowExpr struct { - Xpr Node `json:"xpr"` - Args List `json:"args"` /* the fields */ - RowTypeid Oid `json:"row_typeid"` /* RECORDOID or a composite type's ID */ - - /* - * Note: we deliberately do NOT store a typmod. Although a typmod will be - * associated with specific RECORD types at runtime, it will differ for - * different backends, and so cannot safely be stored in stored - * parsetrees. We must assume typmod -1 for a RowExpr node. - * - * We don't need to store a collation either. The result type is - * necessarily composite, and composite types never have a collation. - */ - RowFormat CoercionForm `json:"row_format"` /* how to display this node */ - Colnames List `json:"colnames"` /* list of String, or NIL */ - Location int `json:"location"` /* token location, or -1 if unknown */ -} - -func (node RowExpr) MarshalJSON() ([]byte, error) { - type RowExprMarshalAlias RowExpr - return json.Marshal(map[string]interface{}{ - "RowExpr": (*RowExprMarshalAlias)(&node), - }) -} - -func (node *RowExpr) UnmarshalJSON(input []byte) (err error) { - var fields map[string]json.RawMessage - - err = json.Unmarshal(input, &fields) - if err != nil { - return - } - - if fields["xpr"] != nil { - node.Xpr, err = UnmarshalNodeJSON(fields["xpr"]) - if err != nil { - return - } - } - - if fields["args"] != nil { - node.Args.Items, err = UnmarshalNodeArrayJSON(fields["args"]) - if err != nil { - return - } - } - - if fields["row_typeid"] != nil { - err = json.Unmarshal(fields["row_typeid"], &node.RowTypeid) - if err != nil { - return - } - } - - if fields["row_format"] != nil { - err = json.Unmarshal(fields["row_format"], &node.RowFormat) - if err != nil { - return - } - } - - if fields["colnames"] != nil { - node.Colnames.Items, err = UnmarshalNodeArrayJSON(fields["colnames"]) - if err != nil { - return - } - } - - if fields["location"] != nil { - err = json.Unmarshal(fields["location"], &node.Location) - if err != nil { - return - } - } - - return -} diff --git a/nodes/row_expr_deparse.go b/nodes/row_expr_deparse.go deleted file mode 100644 index 7457aae3..00000000 --- a/nodes/row_expr_deparse.go +++ /dev/null @@ -1,7 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -func (node RowExpr) Deparse() string { - panic("Not Implemented") -} diff --git a/nodes/row_expr_fingerprint.go b/nodes/row_expr_fingerprint.go deleted file mode 100644 index 9f0b80fb..00000000 --- a/nodes/row_expr_fingerprint.go +++ /dev/null @@ -1,56 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -import "strconv" - -func (node RowExpr) Fingerprint(ctx FingerprintContext, parentNode Node, parentFieldName string) { - ctx.WriteString("RowExpr") - - if len(node.Args.Items) > 0 { - subCtx := FingerprintSubContext{} - node.Args.Fingerprint(&subCtx, node, "Args") - - if len(subCtx.parts) > 0 { - ctx.WriteString("args") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if len(node.Colnames.Items) > 0 { - subCtx := FingerprintSubContext{} - node.Colnames.Fingerprint(&subCtx, node, "Colnames") - - if len(subCtx.parts) > 0 { - ctx.WriteString("colnames") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - // Intentionally ignoring node.Location for fingerprinting - - if int(node.RowFormat) != 0 { - ctx.WriteString("row_format") - ctx.WriteString(strconv.Itoa(int(node.RowFormat))) - } - - if node.RowTypeid != 0 { - ctx.WriteString("row_typeid") - ctx.WriteString(strconv.Itoa(int(node.RowTypeid))) - } - - if node.Xpr != nil { - subCtx := FingerprintSubContext{} - node.Xpr.Fingerprint(&subCtx, node, "Xpr") - - if len(subCtx.parts) > 0 { - ctx.WriteString("xpr") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } -} diff --git a/nodes/row_mark_clause.go b/nodes/row_mark_clause.go deleted file mode 100644 index f9f89e48..00000000 --- a/nodes/row_mark_clause.go +++ /dev/null @@ -1,70 +0,0 @@ -// Auto-generated from postgres/src/include/nodes/parsenodes.h - DO NOT EDIT - -package pg_query - -import "encoding/json" - -/* - * RowMarkClause - - * parser output representation of FOR [KEY] UPDATE/SHARE clauses - * - * Query.rowMarks contains a separate RowMarkClause node for each relation - * identified as a FOR [KEY] UPDATE/SHARE target. If one of these clauses - * is applied to a subquery, we generate RowMarkClauses for all normal and - * subquery rels in the subquery, but they are marked pushedDown = true to - * distinguish them from clauses that were explicitly written at this query - * level. Also, Query.hasForUpdate tells whether there were explicit FOR - * UPDATE/SHARE/KEY SHARE clauses in the current query level. - */ -type RowMarkClause struct { - Rti Index `json:"rti"` /* range table index of target relation */ - Strength LockClauseStrength `json:"strength"` - WaitPolicy LockWaitPolicy `json:"waitPolicy"` /* NOWAIT and SKIP LOCKED */ - PushedDown bool `json:"pushedDown"` /* pushed down from higher query level? */ -} - -func (node RowMarkClause) MarshalJSON() ([]byte, error) { - type RowMarkClauseMarshalAlias RowMarkClause - return json.Marshal(map[string]interface{}{ - "RowMarkClause": (*RowMarkClauseMarshalAlias)(&node), - }) -} - -func (node *RowMarkClause) UnmarshalJSON(input []byte) (err error) { - var fields map[string]json.RawMessage - - err = json.Unmarshal(input, &fields) - if err != nil { - return - } - - if fields["rti"] != nil { - err = json.Unmarshal(fields["rti"], &node.Rti) - if err != nil { - return - } - } - - if fields["strength"] != nil { - err = json.Unmarshal(fields["strength"], &node.Strength) - if err != nil { - return - } - } - - if fields["waitPolicy"] != nil { - err = json.Unmarshal(fields["waitPolicy"], &node.WaitPolicy) - if err != nil { - return - } - } - - if fields["pushedDown"] != nil { - err = json.Unmarshal(fields["pushedDown"], &node.PushedDown) - if err != nil { - return - } - } - - return -} diff --git a/nodes/row_mark_clause_deparse.go b/nodes/row_mark_clause_deparse.go deleted file mode 100644 index 854cb56a..00000000 --- a/nodes/row_mark_clause_deparse.go +++ /dev/null @@ -1,7 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -func (node RowMarkClause) Deparse() string { - panic("Not Implemented") -} diff --git a/nodes/row_mark_clause_fingerprint.go b/nodes/row_mark_clause_fingerprint.go deleted file mode 100644 index cd2acd64..00000000 --- a/nodes/row_mark_clause_fingerprint.go +++ /dev/null @@ -1,29 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -import "strconv" - -func (node RowMarkClause) Fingerprint(ctx FingerprintContext, parentNode Node, parentFieldName string) { - ctx.WriteString("RowMarkClause") - - if node.PushedDown { - ctx.WriteString("pushedDown") - ctx.WriteString(strconv.FormatBool(node.PushedDown)) - } - - if node.Rti != 0 { - ctx.WriteString("rti") - ctx.WriteString(strconv.Itoa(int(node.Rti))) - } - - if int(node.Strength) != 0 { - ctx.WriteString("strength") - ctx.WriteString(strconv.Itoa(int(node.Strength))) - } - - if int(node.WaitPolicy) != 0 { - ctx.WriteString("waitPolicy") - ctx.WriteString(strconv.Itoa(int(node.WaitPolicy))) - } -} diff --git a/nodes/rte_kind.go b/nodes/rte_kind.go deleted file mode 100644 index 17c5f82a..00000000 --- a/nodes/rte_kind.go +++ /dev/null @@ -1,96 +0,0 @@ -// Auto-generated from postgres/src/include/nodes/parsenodes.h - DO NOT EDIT - -package pg_query - -/*-------------------- - * RangeTblEntry - - * A range table is a List of RangeTblEntry nodes. - * - * A range table entry may represent a plain relation, a sub-select in - * FROM, or the result of a JOIN clause. (Only explicit JOIN syntax - * produces an RTE, not the implicit join resulting from multiple FROM - * items. This is because we only need the RTE to deal with SQL features - * like outer joins and join-output-column aliasing.) Other special - * RTE types also exist, as indicated by RTEKind. - * - * Note that we consider RTE_RELATION to cover anything that has a pg_class - * entry. relkind distinguishes the sub-cases. - * - * alias is an Alias node representing the AS alias-clause attached to the - * FROM expression, or NULL if no clause. - * - * eref is the table reference name and column reference names (either - * real or aliases). Note that system columns (OID etc) are not included - * in the column list. - * eref->aliasname is required to be present, and should generally be used - * to identify the RTE for error messages etc. - * - * In RELATION RTEs, the colnames in both alias and eref are indexed by - * physical attribute number; this means there must be colname entries for - * dropped columns. When building an RTE we insert empty strings ("") for - * dropped columns. Note however that a stored rule may have nonempty - * colnames for columns dropped since the rule was created (and for that - * matter the colnames might be out of date due to column renamings). - * The same comments apply to FUNCTION RTEs when a function's return type - * is a named composite type. - * - * In JOIN RTEs, the colnames in both alias and eref are one-to-one with - * joinaliasvars entries. A JOIN RTE will omit columns of its inputs when - * those columns are known to be dropped at parse time. Again, however, - * a stored rule might contain entries for columns dropped since the rule - * was created. (This is only possible for columns not actually referenced - * in the rule.) When loading a stored rule, we replace the joinaliasvars - * items for any such columns with null pointers. (We can't simply delete - * them from the joinaliasvars list, because that would affect the attnums - * of Vars referencing the rest of the list.) - * - * inh is TRUE for relation references that should be expanded to include - * inheritance children, if the rel has any. This *must* be FALSE for - * RTEs other than RTE_RELATION entries. - * - * inFromCl marks those range variables that are listed in the FROM clause. - * It's false for RTEs that are added to a query behind the scenes, such - * as the NEW and OLD variables for a rule, or the subqueries of a UNION. - * This flag is not used anymore during parsing, since the parser now uses - * a separate "namespace" data structure to control visibility, but it is - * needed by ruleutils.c to determine whether RTEs should be shown in - * decompiled queries. - * - * requiredPerms and checkAsUser specify run-time access permissions - * checks to be performed at query startup. The user must have *all* - * of the permissions that are OR'd together in requiredPerms (zero - * indicates no permissions checking). If checkAsUser is not zero, - * then do the permissions checks using the access rights of that user, - * not the current effective user ID. (This allows rules to act as - * setuid gateways.) Permissions checks only apply to RELATION RTEs. - * - * For SELECT/INSERT/UPDATE permissions, if the user doesn't have - * table-wide permissions then it is sufficient to have the permissions - * on all columns identified in selectedCols (for SELECT) and/or - * insertedCols and/or updatedCols (INSERT with ON CONFLICT DO UPDATE may - * have all 3). selectedCols, insertedCols and updatedCols are bitmapsets, - * which cannot have negative integer members, so we subtract - * FirstLowInvalidHeapAttributeNumber from column numbers before storing - * them in these fields. A whole-row Var reference is represented by - * setting the bit for InvalidAttrNumber. - * - * securityQuals is a list of security barrier quals (boolean expressions), - * to be tested in the listed order before returning a row from the - * relation. It is always NIL in parser output. Entries are added by the - * rewriter to implement security-barrier views and/or row-level security. - * Note that the planner turns each boolean expression into an implicitly - * AND'ed sublist, as is its usual habit with qualification expressions. - *-------------------- - */ -type RTEKind uint - -const ( - RTE_RELATION RTEKind = iota /* ordinary relation reference */ - RTE_SUBQUERY /* subquery in FROM */ - RTE_JOIN /* join */ - RTE_FUNCTION /* function in FROM */ - RTE_TABLEFUNC /* TableFunc(.., column list) */ - RTE_VALUES /* VALUES (), (), ... */ - RTE_CTE /* common table expr (WITH list element) */ - RTE_NAMEDTUPLESTORE /* tuplestore, e.g. for AFTER triggers */ -) diff --git a/nodes/rule_stmt.go b/nodes/rule_stmt.go deleted file mode 100644 index a017d916..00000000 --- a/nodes/rule_stmt.go +++ /dev/null @@ -1,91 +0,0 @@ -// Auto-generated from postgres/src/include/nodes/parsenodes.h - DO NOT EDIT - -package pg_query - -import "encoding/json" - -/* ---------------------- - * Create Rule Statement - * ---------------------- - */ -type RuleStmt struct { - Relation *RangeVar `json:"relation"` /* relation the rule is for */ - Rulename *string `json:"rulename"` /* name of the rule */ - WhereClause Node `json:"whereClause"` /* qualifications */ - Event CmdType `json:"event"` /* SELECT, INSERT, etc */ - Instead bool `json:"instead"` /* is a 'do instead'? */ - Actions List `json:"actions"` /* the action statements */ - Replace bool `json:"replace"` /* OR REPLACE */ -} - -func (node RuleStmt) MarshalJSON() ([]byte, error) { - type RuleStmtMarshalAlias RuleStmt - return json.Marshal(map[string]interface{}{ - "RuleStmt": (*RuleStmtMarshalAlias)(&node), - }) -} - -func (node *RuleStmt) UnmarshalJSON(input []byte) (err error) { - var fields map[string]json.RawMessage - - err = json.Unmarshal(input, &fields) - if err != nil { - return - } - - if fields["relation"] != nil { - var nodePtr *Node - nodePtr, err = UnmarshalNodePtrJSON(fields["relation"]) - if err != nil { - return - } - if nodePtr != nil && *nodePtr != nil { - val := (*nodePtr).(RangeVar) - node.Relation = &val - } - } - - if fields["rulename"] != nil { - err = json.Unmarshal(fields["rulename"], &node.Rulename) - if err != nil { - return - } - } - - if fields["whereClause"] != nil { - node.WhereClause, err = UnmarshalNodeJSON(fields["whereClause"]) - if err != nil { - return - } - } - - if fields["event"] != nil { - err = json.Unmarshal(fields["event"], &node.Event) - if err != nil { - return - } - } - - if fields["instead"] != nil { - err = json.Unmarshal(fields["instead"], &node.Instead) - if err != nil { - return - } - } - - if fields["actions"] != nil { - node.Actions.Items, err = UnmarshalNodeArrayJSON(fields["actions"]) - if err != nil { - return - } - } - - if fields["replace"] != nil { - err = json.Unmarshal(fields["replace"], &node.Replace) - if err != nil { - return - } - } - - return -} diff --git a/nodes/rule_stmt_deparse.go b/nodes/rule_stmt_deparse.go deleted file mode 100644 index b2acf0fc..00000000 --- a/nodes/rule_stmt_deparse.go +++ /dev/null @@ -1,7 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -func (node RuleStmt) Deparse() string { - panic("Not Implemented") -} diff --git a/nodes/rule_stmt_fingerprint.go b/nodes/rule_stmt_fingerprint.go deleted file mode 100644 index 0e01d914..00000000 --- a/nodes/rule_stmt_fingerprint.go +++ /dev/null @@ -1,65 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -import "strconv" - -func (node RuleStmt) Fingerprint(ctx FingerprintContext, parentNode Node, parentFieldName string) { - ctx.WriteString("RuleStmt") - - if len(node.Actions.Items) > 0 { - subCtx := FingerprintSubContext{} - node.Actions.Fingerprint(&subCtx, node, "Actions") - - if len(subCtx.parts) > 0 { - ctx.WriteString("actions") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if int(node.Event) != 0 { - ctx.WriteString("event") - ctx.WriteString(strconv.Itoa(int(node.Event))) - } - - if node.Instead { - ctx.WriteString("instead") - ctx.WriteString(strconv.FormatBool(node.Instead)) - } - - if node.Relation != nil { - subCtx := FingerprintSubContext{} - node.Relation.Fingerprint(&subCtx, node, "Relation") - - if len(subCtx.parts) > 0 { - ctx.WriteString("relation") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if node.Replace { - ctx.WriteString("replace") - ctx.WriteString(strconv.FormatBool(node.Replace)) - } - - if node.Rulename != nil { - ctx.WriteString("rulename") - ctx.WriteString(*node.Rulename) - } - - if node.WhereClause != nil { - subCtx := FingerprintSubContext{} - node.WhereClause.Fingerprint(&subCtx, node, "WhereClause") - - if len(subCtx.parts) > 0 { - ctx.WriteString("whereClause") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } -} diff --git a/nodes/scalar_array_op_expr.go b/nodes/scalar_array_op_expr.go deleted file mode 100644 index 5fe21123..00000000 --- a/nodes/scalar_array_op_expr.go +++ /dev/null @@ -1,92 +0,0 @@ -// Auto-generated from postgres/src/include/nodes/primnodes.h - DO NOT EDIT - -package pg_query - -import "encoding/json" - -/* - * ScalarArrayOpExpr - expression node for "scalar op ANY/ALL (array)" - * - * The operator must yield boolean. It is applied to the left operand - * and each element of the righthand array, and the results are combined - * with OR or AND (for ANY or ALL respectively). The node representation - * is almost the same as for the underlying operator, but we need a useOr - * flag to remember whether it's ANY or ALL, and we don't have to store - * the result type (or the collation) because it must be boolean. - */ -type ScalarArrayOpExpr struct { - Xpr Node `json:"xpr"` - Opno Oid `json:"opno"` /* PG_OPERATOR OID of the operator */ - Opfuncid Oid `json:"opfuncid"` /* PG_PROC OID of underlying function */ - UseOr bool `json:"useOr"` /* true for ANY, false for ALL */ - Inputcollid Oid `json:"inputcollid"` /* OID of collation that operator should use */ - Args List `json:"args"` /* the scalar and array operands */ - Location int `json:"location"` /* token location, or -1 if unknown */ -} - -func (node ScalarArrayOpExpr) MarshalJSON() ([]byte, error) { - type ScalarArrayOpExprMarshalAlias ScalarArrayOpExpr - return json.Marshal(map[string]interface{}{ - "ScalarArrayOpExpr": (*ScalarArrayOpExprMarshalAlias)(&node), - }) -} - -func (node *ScalarArrayOpExpr) UnmarshalJSON(input []byte) (err error) { - var fields map[string]json.RawMessage - - err = json.Unmarshal(input, &fields) - if err != nil { - return - } - - if fields["xpr"] != nil { - node.Xpr, err = UnmarshalNodeJSON(fields["xpr"]) - if err != nil { - return - } - } - - if fields["opno"] != nil { - err = json.Unmarshal(fields["opno"], &node.Opno) - if err != nil { - return - } - } - - if fields["opfuncid"] != nil { - err = json.Unmarshal(fields["opfuncid"], &node.Opfuncid) - if err != nil { - return - } - } - - if fields["useOr"] != nil { - err = json.Unmarshal(fields["useOr"], &node.UseOr) - if err != nil { - return - } - } - - if fields["inputcollid"] != nil { - err = json.Unmarshal(fields["inputcollid"], &node.Inputcollid) - if err != nil { - return - } - } - - if fields["args"] != nil { - node.Args.Items, err = UnmarshalNodeArrayJSON(fields["args"]) - if err != nil { - return - } - } - - if fields["location"] != nil { - err = json.Unmarshal(fields["location"], &node.Location) - if err != nil { - return - } - } - - return -} diff --git a/nodes/scalar_array_op_expr_deparse.go b/nodes/scalar_array_op_expr_deparse.go deleted file mode 100644 index 6980cb92..00000000 --- a/nodes/scalar_array_op_expr_deparse.go +++ /dev/null @@ -1,7 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -func (node ScalarArrayOpExpr) Deparse() string { - panic("Not Implemented") -} diff --git a/nodes/scalar_array_op_expr_fingerprint.go b/nodes/scalar_array_op_expr_fingerprint.go deleted file mode 100644 index d66f0101..00000000 --- a/nodes/scalar_array_op_expr_fingerprint.go +++ /dev/null @@ -1,55 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -import "strconv" - -func (node ScalarArrayOpExpr) Fingerprint(ctx FingerprintContext, parentNode Node, parentFieldName string) { - ctx.WriteString("ScalarArrayOpExpr") - - if len(node.Args.Items) > 0 { - subCtx := FingerprintSubContext{} - node.Args.Fingerprint(&subCtx, node, "Args") - - if len(subCtx.parts) > 0 { - ctx.WriteString("args") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if node.Inputcollid != 0 { - ctx.WriteString("inputcollid") - ctx.WriteString(strconv.Itoa(int(node.Inputcollid))) - } - - // Intentionally ignoring node.Location for fingerprinting - - if node.Opfuncid != 0 { - ctx.WriteString("opfuncid") - ctx.WriteString(strconv.Itoa(int(node.Opfuncid))) - } - - if node.Opno != 0 { - ctx.WriteString("opno") - ctx.WriteString(strconv.Itoa(int(node.Opno))) - } - - if node.UseOr { - ctx.WriteString("useOr") - ctx.WriteString(strconv.FormatBool(node.UseOr)) - } - - if node.Xpr != nil { - subCtx := FingerprintSubContext{} - node.Xpr.Fingerprint(&subCtx, node, "Xpr") - - if len(subCtx.parts) > 0 { - ctx.WriteString("xpr") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } -} diff --git a/nodes/scan_direction.go b/nodes/scan_direction.go deleted file mode 100644 index 01c05805..00000000 --- a/nodes/scan_direction.go +++ /dev/null @@ -1,15 +0,0 @@ -// Auto-generated from postgres/src/include/access/sdir.h - DO NOT EDIT - -package pg_query - -/* - * ScanDirection was an int8 for no apparent reason. I kept the original - * values because I'm not sure if I'll break anything otherwise. -ay 2/95 - */ -type ScanDirection uint - -const ( - BackwardScanDirection ScanDirection = iota - NoMovementScanDirection - ForwardScanDirection -) diff --git a/nodes/sec_label_stmt.go b/nodes/sec_label_stmt.go deleted file mode 100644 index aa366622..00000000 --- a/nodes/sec_label_stmt.go +++ /dev/null @@ -1,62 +0,0 @@ -// Auto-generated from postgres/src/include/nodes/parsenodes.h - DO NOT EDIT - -package pg_query - -import "encoding/json" - -/* ---------------------- - * SECURITY LABEL Statement - * ---------------------- - */ -type SecLabelStmt struct { - Objtype ObjectType `json:"objtype"` /* Object's type */ - Object Node `json:"object"` /* Qualified name of the object */ - Provider *string `json:"provider"` /* Label provider (or NULL) */ - Label *string `json:"label"` /* New security label to be assigned */ -} - -func (node SecLabelStmt) MarshalJSON() ([]byte, error) { - type SecLabelStmtMarshalAlias SecLabelStmt - return json.Marshal(map[string]interface{}{ - "SecLabelStmt": (*SecLabelStmtMarshalAlias)(&node), - }) -} - -func (node *SecLabelStmt) UnmarshalJSON(input []byte) (err error) { - var fields map[string]json.RawMessage - - err = json.Unmarshal(input, &fields) - if err != nil { - return - } - - if fields["objtype"] != nil { - err = json.Unmarshal(fields["objtype"], &node.Objtype) - if err != nil { - return - } - } - - if fields["object"] != nil { - node.Object, err = UnmarshalNodeJSON(fields["object"]) - if err != nil { - return - } - } - - if fields["provider"] != nil { - err = json.Unmarshal(fields["provider"], &node.Provider) - if err != nil { - return - } - } - - if fields["label"] != nil { - err = json.Unmarshal(fields["label"], &node.Label) - if err != nil { - return - } - } - - return -} diff --git a/nodes/sec_label_stmt_deparse.go b/nodes/sec_label_stmt_deparse.go deleted file mode 100644 index 399914ce..00000000 --- a/nodes/sec_label_stmt_deparse.go +++ /dev/null @@ -1,7 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -func (node SecLabelStmt) Deparse() string { - panic("Not Implemented") -} diff --git a/nodes/sec_label_stmt_fingerprint.go b/nodes/sec_label_stmt_fingerprint.go deleted file mode 100644 index d6fec5d3..00000000 --- a/nodes/sec_label_stmt_fingerprint.go +++ /dev/null @@ -1,36 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -import "strconv" - -func (node SecLabelStmt) Fingerprint(ctx FingerprintContext, parentNode Node, parentFieldName string) { - ctx.WriteString("SecLabelStmt") - - if node.Label != nil { - ctx.WriteString("label") - ctx.WriteString(*node.Label) - } - - if node.Object != nil { - subCtx := FingerprintSubContext{} - node.Object.Fingerprint(&subCtx, node, "Object") - - if len(subCtx.parts) > 0 { - ctx.WriteString("object") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if int(node.Objtype) != 0 { - ctx.WriteString("objtype") - ctx.WriteString(strconv.Itoa(int(node.Objtype))) - } - - if node.Provider != nil { - ctx.WriteString("provider") - ctx.WriteString(*node.Provider) - } -} diff --git a/nodes/select_stmt.go b/nodes/select_stmt.go deleted file mode 100644 index 394adb98..00000000 --- a/nodes/select_stmt.go +++ /dev/null @@ -1,228 +0,0 @@ -// Auto-generated from postgres/src/include/nodes/parsenodes.h - DO NOT EDIT - -package pg_query - -import "encoding/json" - -/* ---------------------- - * Select Statement - * - * A "simple" SELECT is represented in the output of gram.y by a single - * SelectStmt node; so is a VALUES construct. A query containing set - * operators (UNION, INTERSECT, EXCEPT) is represented by a tree of SelectStmt - * nodes, in which the leaf nodes are component SELECTs and the internal nodes - * represent UNION, INTERSECT, or EXCEPT operators. Using the same node - * type for both leaf and internal nodes allows gram.y to stick ORDER BY, - * LIMIT, etc, clause values into a SELECT statement without worrying - * whether it is a simple or compound SELECT. - * ---------------------- - */ -type SelectStmt struct { - /* - * These fields are used only in "leaf" SelectStmts. - */ - DistinctClause List `json:"distinctClause"` /* NULL, list of DISTINCT ON exprs, or - * lcons(NIL,NIL) for all (SELECT DISTINCT) */ - - IntoClause *IntoClause `json:"intoClause"` /* target for SELECT INTO */ - TargetList List `json:"targetList"` /* the target list (of ResTarget) */ - FromClause List `json:"fromClause"` /* the FROM clause */ - WhereClause Node `json:"whereClause"` /* WHERE qualification */ - GroupClause List `json:"groupClause"` /* GROUP BY clauses */ - HavingClause Node `json:"havingClause"` /* HAVING conditional-expression */ - WindowClause List `json:"windowClause"` /* WINDOW window_name AS (...), ... */ - - /* - * In a "leaf" node representing a VALUES list, the above fields are all - * null, and instead this field is set. Note that the elements of the - * sublists are just expressions, without ResTarget decoration. Also note - * that a list element can be DEFAULT (represented as a SetToDefault - * node), regardless of the context of the VALUES list. It's up to parse - * analysis to reject that where not valid. - */ - ValuesLists [][]Node `json:"valuesLists"` /* untransformed list of expression lists */ - - /* - * These fields are used in both "leaf" SelectStmts and upper-level - * SelectStmts. - */ - SortClause List `json:"sortClause"` /* sort clause (a list of SortBy's) */ - LimitOffset Node `json:"limitOffset"` /* # of result tuples to skip */ - LimitCount Node `json:"limitCount"` /* # of result tuples to return */ - LockingClause List `json:"lockingClause"` /* FOR UPDATE (list of LockingClause's) */ - WithClause *WithClause `json:"withClause"` /* WITH clause */ - - /* - * These fields are used only in upper-level SelectStmts. - */ - Op SetOperation `json:"op"` /* type of set op */ - All bool `json:"all"` /* ALL specified? */ - Larg *SelectStmt `json:"larg"` /* left child */ - Rarg *SelectStmt `json:"rarg"` /* right child */ - - /* Eventually add fields for CORRESPONDING spec here */ -} - -func (node SelectStmt) MarshalJSON() ([]byte, error) { - type SelectStmtMarshalAlias SelectStmt - return json.Marshal(map[string]interface{}{ - "SelectStmt": (*SelectStmtMarshalAlias)(&node), - }) -} - -func (node *SelectStmt) UnmarshalJSON(input []byte) (err error) { - var fields map[string]json.RawMessage - - err = json.Unmarshal(input, &fields) - if err != nil { - return - } - - if fields["distinctClause"] != nil { - node.DistinctClause.Items, err = UnmarshalNodeArrayJSON(fields["distinctClause"]) - if err != nil { - return - } - } - - if fields["intoClause"] != nil { - var nodePtr *Node - nodePtr, err = UnmarshalNodePtrJSON(fields["intoClause"]) - if err != nil { - return - } - if nodePtr != nil && *nodePtr != nil { - val := (*nodePtr).(IntoClause) - node.IntoClause = &val - } - } - - if fields["targetList"] != nil { - node.TargetList.Items, err = UnmarshalNodeArrayJSON(fields["targetList"]) - if err != nil { - return - } - } - - if fields["fromClause"] != nil { - node.FromClause.Items, err = UnmarshalNodeArrayJSON(fields["fromClause"]) - if err != nil { - return - } - } - - if fields["whereClause"] != nil { - node.WhereClause, err = UnmarshalNodeJSON(fields["whereClause"]) - if err != nil { - return - } - } - - if fields["groupClause"] != nil { - node.GroupClause.Items, err = UnmarshalNodeArrayJSON(fields["groupClause"]) - if err != nil { - return - } - } - - if fields["havingClause"] != nil { - node.HavingClause, err = UnmarshalNodeJSON(fields["havingClause"]) - if err != nil { - return - } - } - - if fields["windowClause"] != nil { - node.WindowClause.Items, err = UnmarshalNodeArrayJSON(fields["windowClause"]) - if err != nil { - return - } - } - - if fields["valuesLists"] != nil { - node.ValuesLists, err = UnmarshalNodeArrayArrayJSON(fields["valuesLists"]) - if err != nil { - return - } - } - - if fields["sortClause"] != nil { - node.SortClause.Items, err = UnmarshalNodeArrayJSON(fields["sortClause"]) - if err != nil { - return - } - } - - if fields["limitOffset"] != nil { - node.LimitOffset, err = UnmarshalNodeJSON(fields["limitOffset"]) - if err != nil { - return - } - } - - if fields["limitCount"] != nil { - node.LimitCount, err = UnmarshalNodeJSON(fields["limitCount"]) - if err != nil { - return - } - } - - if fields["lockingClause"] != nil { - node.LockingClause.Items, err = UnmarshalNodeArrayJSON(fields["lockingClause"]) - if err != nil { - return - } - } - - if fields["withClause"] != nil { - var nodePtr *Node - nodePtr, err = UnmarshalNodePtrJSON(fields["withClause"]) - if err != nil { - return - } - if nodePtr != nil && *nodePtr != nil { - val := (*nodePtr).(WithClause) - node.WithClause = &val - } - } - - if fields["op"] != nil { - err = json.Unmarshal(fields["op"], &node.Op) - if err != nil { - return - } - } - - if fields["all"] != nil { - err = json.Unmarshal(fields["all"], &node.All) - if err != nil { - return - } - } - - if fields["larg"] != nil { - var nodePtr *Node - nodePtr, err = UnmarshalNodePtrJSON(fields["larg"]) - if err != nil { - return - } - if nodePtr != nil && *nodePtr != nil { - val := (*nodePtr).(SelectStmt) - node.Larg = &val - } - } - - if fields["rarg"] != nil { - var nodePtr *Node - nodePtr, err = UnmarshalNodePtrJSON(fields["rarg"]) - if err != nil { - return - } - if nodePtr != nil && *nodePtr != nil { - val := (*nodePtr).(SelectStmt) - node.Rarg = &val - } - } - - return -} diff --git a/nodes/select_stmt_deparse.go b/nodes/select_stmt_deparse.go deleted file mode 100644 index 89c09f5a..00000000 --- a/nodes/select_stmt_deparse.go +++ /dev/null @@ -1,7 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -func (node SelectStmt) Deparse() string { - panic("Not Implemented") -} diff --git a/nodes/select_stmt_fingerprint.go b/nodes/select_stmt_fingerprint.go deleted file mode 100644 index f16a2f80..00000000 --- a/nodes/select_stmt_fingerprint.go +++ /dev/null @@ -1,229 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -import ( - "sort" - "strconv" -) - -func (node SelectStmt) Fingerprint(ctx FingerprintContext, parentNode Node, parentFieldName string) { - ctx.WriteString("SelectStmt") - - if node.All { - ctx.WriteString("all") - ctx.WriteString(strconv.FormatBool(node.All)) - } - - if len(node.DistinctClause.Items) > 0 { - subCtx := FingerprintSubContext{} - node.DistinctClause.Fingerprint(&subCtx, node, "DistinctClause") - - if len(subCtx.parts) > 0 { - ctx.WriteString("distinctClause") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if len(node.FromClause.Items) > 0 { - subCtx := FingerprintSubContext{} - node.FromClause.Fingerprint(&subCtx, node, "FromClause") - - if len(subCtx.parts) > 0 { - ctx.WriteString("fromClause") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if len(node.GroupClause.Items) > 0 { - subCtx := FingerprintSubContext{} - node.GroupClause.Fingerprint(&subCtx, node, "GroupClause") - - if len(subCtx.parts) > 0 { - ctx.WriteString("groupClause") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if node.HavingClause != nil { - subCtx := FingerprintSubContext{} - node.HavingClause.Fingerprint(&subCtx, node, "HavingClause") - - if len(subCtx.parts) > 0 { - ctx.WriteString("havingClause") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if node.IntoClause != nil { - subCtx := FingerprintSubContext{} - node.IntoClause.Fingerprint(&subCtx, node, "IntoClause") - - if len(subCtx.parts) > 0 { - ctx.WriteString("intoClause") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if node.Larg != nil { - subCtx := FingerprintSubContext{} - node.Larg.Fingerprint(&subCtx, node, "Larg") - - if len(subCtx.parts) > 0 { - ctx.WriteString("larg") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if node.LimitCount != nil { - subCtx := FingerprintSubContext{} - node.LimitCount.Fingerprint(&subCtx, node, "LimitCount") - - if len(subCtx.parts) > 0 { - ctx.WriteString("limitCount") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if node.LimitOffset != nil { - subCtx := FingerprintSubContext{} - node.LimitOffset.Fingerprint(&subCtx, node, "LimitOffset") - - if len(subCtx.parts) > 0 { - ctx.WriteString("limitOffset") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if len(node.LockingClause.Items) > 0 { - subCtx := FingerprintSubContext{} - node.LockingClause.Fingerprint(&subCtx, node, "LockingClause") - - if len(subCtx.parts) > 0 { - ctx.WriteString("lockingClause") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if int(node.Op) != 0 { - ctx.WriteString("op") - ctx.WriteString(strconv.Itoa(int(node.Op))) - } - - if node.Rarg != nil { - subCtx := FingerprintSubContext{} - node.Rarg.Fingerprint(&subCtx, node, "Rarg") - - if len(subCtx.parts) > 0 { - ctx.WriteString("rarg") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if len(node.SortClause.Items) > 0 { - subCtx := FingerprintSubContext{} - node.SortClause.Fingerprint(&subCtx, node, "SortClause") - - if len(subCtx.parts) > 0 { - ctx.WriteString("sortClause") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if len(node.TargetList.Items) > 0 { - subCtx := FingerprintSubContext{} - node.TargetList.Fingerprint(&subCtx, node, "TargetList") - - if len(subCtx.parts) > 0 { - ctx.WriteString("targetList") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if len(node.ValuesLists) > 0 { - var itemsFingerprints FingerprintSubContextSlice - - for _, nodeList := range node.ValuesLists { - subCtx := FingerprintSubContext{} - for _, subNode := range nodeList { - subNode.Fingerprint(&subCtx, node, "ValuesLists") - } - itemsFingerprints.AddIfUnique(subCtx) - } - - sort.Sort(itemsFingerprints) - - if len(itemsFingerprints) > 0 { - firstItem := true - for _, fingerprint := range itemsFingerprints { - for _, part := range fingerprint.parts { - if firstItem { - ctx.WriteString("valuesLists") - firstItem = false - } - ctx.WriteString(part) - } - } - } - } - - if node.WhereClause != nil { - subCtx := FingerprintSubContext{} - node.WhereClause.Fingerprint(&subCtx, node, "WhereClause") - - if len(subCtx.parts) > 0 { - ctx.WriteString("whereClause") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if len(node.WindowClause.Items) > 0 { - subCtx := FingerprintSubContext{} - node.WindowClause.Fingerprint(&subCtx, node, "WindowClause") - - if len(subCtx.parts) > 0 { - ctx.WriteString("windowClause") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if node.WithClause != nil { - subCtx := FingerprintSubContext{} - node.WithClause.Fingerprint(&subCtx, node, "WithClause") - - if len(subCtx.parts) > 0 { - ctx.WriteString("withClause") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } -} diff --git a/nodes/set_op_cmd.go b/nodes/set_op_cmd.go deleted file mode 100644 index a36f6cc5..00000000 --- a/nodes/set_op_cmd.go +++ /dev/null @@ -1,18 +0,0 @@ -// Auto-generated from postgres/src/include/nodes/nodes.h - DO NOT EDIT - -package pg_query - -/* - * SetOpCmd and SetOpStrategy - - * overall semantics and execution strategies for SetOp plan nodes - * - * This is needed in both plannodes.h and relation.h, so put it here... - */ -type SetOpCmd uint - -const ( - SETOPCMD_INTERSECT SetOpCmd = iota - SETOPCMD_INTERSECT_ALL - SETOPCMD_EXCEPT - SETOPCMD_EXCEPT_ALL -) diff --git a/nodes/set_op_strategy.go b/nodes/set_op_strategy.go deleted file mode 100644 index 8ece4fe8..00000000 --- a/nodes/set_op_strategy.go +++ /dev/null @@ -1,10 +0,0 @@ -// Auto-generated from postgres/src/include/nodes/nodes.h - DO NOT EDIT - -package pg_query - -type SetOpStrategy uint - -const ( - SETOP_SORTED SetOpStrategy = iota /* input must be sorted */ - SETOP_HASHED /* use internal hashtable */ -) diff --git a/nodes/set_operation.go b/nodes/set_operation.go deleted file mode 100644 index ec48b3d9..00000000 --- a/nodes/set_operation.go +++ /dev/null @@ -1,25 +0,0 @@ -// Auto-generated from postgres/src/include/nodes/parsenodes.h - DO NOT EDIT - -package pg_query - -/* ---------------------- - * Select Statement - * - * A "simple" SELECT is represented in the output of gram.y by a single - * SelectStmt node; so is a VALUES construct. A query containing set - * operators (UNION, INTERSECT, EXCEPT) is represented by a tree of SelectStmt - * nodes, in which the leaf nodes are component SELECTs and the internal nodes - * represent UNION, INTERSECT, or EXCEPT operators. Using the same node - * type for both leaf and internal nodes allows gram.y to stick ORDER BY, - * LIMIT, etc, clause values into a SELECT statement without worrying - * whether it is a simple or compound SELECT. - * ---------------------- - */ -type SetOperation uint - -const ( - SETOP_NONE SetOperation = iota - SETOP_UNION - SETOP_INTERSECT - SETOP_EXCEPT -) diff --git a/nodes/set_operation_stmt.go b/nodes/set_operation_stmt.go deleted file mode 100644 index 29eb7a5d..00000000 --- a/nodes/set_operation_stmt.go +++ /dev/null @@ -1,115 +0,0 @@ -// Auto-generated from postgres/src/include/nodes/parsenodes.h - DO NOT EDIT - -package pg_query - -import "encoding/json" - -/* ---------------------- - * Set Operation node for post-analysis query trees - * - * After parse analysis, a SELECT with set operations is represented by a - * top-level Query node containing the leaf SELECTs as subqueries in its - * range table. Its setOperations field shows the tree of set operations, - * with leaf SelectStmt nodes replaced by RangeTblRef nodes, and internal - * nodes replaced by SetOperationStmt nodes. Information about the output - * column types is added, too. (Note that the child nodes do not necessarily - * produce these types directly, but we've checked that their output types - * can be coerced to the output column type.) Also, if it's not UNION ALL, - * information about the types' sort/group semantics is provided in the form - * of a SortGroupClause list (same representation as, eg, DISTINCT). - * The resolved common column collations are provided too; but note that if - * it's not UNION ALL, it's okay for a column to not have a common collation, - * so a member of the colCollations list could be InvalidOid even though the - * column has a collatable type. - * ---------------------- - */ -type SetOperationStmt struct { - Op SetOperation `json:"op"` /* type of set op */ - All bool `json:"all"` /* ALL specified? */ - Larg Node `json:"larg"` /* left child */ - Rarg Node `json:"rarg"` /* right child */ - - /* Eventually add fields for CORRESPONDING spec here */ - - /* Fields derived during parse analysis: */ - ColTypes List `json:"colTypes"` /* OID list of output column type OIDs */ - ColTypmods List `json:"colTypmods"` /* integer list of output column typmods */ - ColCollations List `json:"colCollations"` /* OID list of output column collation OIDs */ - GroupClauses List `json:"groupClauses"` /* a list of SortGroupClause's */ - - /* groupClauses is NIL if UNION ALL, but must be set otherwise */ -} - -func (node SetOperationStmt) MarshalJSON() ([]byte, error) { - type SetOperationStmtMarshalAlias SetOperationStmt - return json.Marshal(map[string]interface{}{ - "SetOperationStmt": (*SetOperationStmtMarshalAlias)(&node), - }) -} - -func (node *SetOperationStmt) UnmarshalJSON(input []byte) (err error) { - var fields map[string]json.RawMessage - - err = json.Unmarshal(input, &fields) - if err != nil { - return - } - - if fields["op"] != nil { - err = json.Unmarshal(fields["op"], &node.Op) - if err != nil { - return - } - } - - if fields["all"] != nil { - err = json.Unmarshal(fields["all"], &node.All) - if err != nil { - return - } - } - - if fields["larg"] != nil { - node.Larg, err = UnmarshalNodeJSON(fields["larg"]) - if err != nil { - return - } - } - - if fields["rarg"] != nil { - node.Rarg, err = UnmarshalNodeJSON(fields["rarg"]) - if err != nil { - return - } - } - - if fields["colTypes"] != nil { - node.ColTypes.Items, err = UnmarshalNodeArrayJSON(fields["colTypes"]) - if err != nil { - return - } - } - - if fields["colTypmods"] != nil { - node.ColTypmods.Items, err = UnmarshalNodeArrayJSON(fields["colTypmods"]) - if err != nil { - return - } - } - - if fields["colCollations"] != nil { - node.ColCollations.Items, err = UnmarshalNodeArrayJSON(fields["colCollations"]) - if err != nil { - return - } - } - - if fields["groupClauses"] != nil { - node.GroupClauses.Items, err = UnmarshalNodeArrayJSON(fields["groupClauses"]) - if err != nil { - return - } - } - - return -} diff --git a/nodes/set_operation_stmt_deparse.go b/nodes/set_operation_stmt_deparse.go deleted file mode 100644 index 69d7df07..00000000 --- a/nodes/set_operation_stmt_deparse.go +++ /dev/null @@ -1,7 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -func (node SetOperationStmt) Deparse() string { - panic("Not Implemented") -} diff --git a/nodes/set_operation_stmt_fingerprint.go b/nodes/set_operation_stmt_fingerprint.go deleted file mode 100644 index 52b7a82b..00000000 --- a/nodes/set_operation_stmt_fingerprint.go +++ /dev/null @@ -1,91 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -import "strconv" - -func (node SetOperationStmt) Fingerprint(ctx FingerprintContext, parentNode Node, parentFieldName string) { - ctx.WriteString("SetOperationStmt") - - if node.All { - ctx.WriteString("all") - ctx.WriteString(strconv.FormatBool(node.All)) - } - - if len(node.ColCollations.Items) > 0 { - subCtx := FingerprintSubContext{} - node.ColCollations.Fingerprint(&subCtx, node, "ColCollations") - - if len(subCtx.parts) > 0 { - ctx.WriteString("colCollations") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if len(node.ColTypes.Items) > 0 { - subCtx := FingerprintSubContext{} - node.ColTypes.Fingerprint(&subCtx, node, "ColTypes") - - if len(subCtx.parts) > 0 { - ctx.WriteString("colTypes") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if len(node.ColTypmods.Items) > 0 { - subCtx := FingerprintSubContext{} - node.ColTypmods.Fingerprint(&subCtx, node, "ColTypmods") - - if len(subCtx.parts) > 0 { - ctx.WriteString("colTypmods") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if len(node.GroupClauses.Items) > 0 { - subCtx := FingerprintSubContext{} - node.GroupClauses.Fingerprint(&subCtx, node, "GroupClauses") - - if len(subCtx.parts) > 0 { - ctx.WriteString("groupClauses") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if node.Larg != nil { - subCtx := FingerprintSubContext{} - node.Larg.Fingerprint(&subCtx, node, "Larg") - - if len(subCtx.parts) > 0 { - ctx.WriteString("larg") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if int(node.Op) != 0 { - ctx.WriteString("op") - ctx.WriteString(strconv.Itoa(int(node.Op))) - } - - if node.Rarg != nil { - subCtx := FingerprintSubContext{} - node.Rarg.Fingerprint(&subCtx, node, "Rarg") - - if len(subCtx.parts) > 0 { - ctx.WriteString("rarg") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } -} diff --git a/nodes/set_to_default.go b/nodes/set_to_default.go deleted file mode 100644 index 9a6f769d..00000000 --- a/nodes/set_to_default.go +++ /dev/null @@ -1,73 +0,0 @@ -// Auto-generated from postgres/src/include/nodes/primnodes.h - DO NOT EDIT - -package pg_query - -import "encoding/json" - -/* - * Placeholder node for a DEFAULT marker in an INSERT or UPDATE command. - * - * This is not an executable expression: it must be replaced by the actual - * column default expression during rewriting. But it is convenient to - * treat it as an expression node during parsing and rewriting. - */ -type SetToDefault struct { - Xpr Node `json:"xpr"` - TypeId Oid `json:"typeId"` /* type for substituted value */ - TypeMod int32 `json:"typeMod"` /* typemod for substituted value */ - Collation Oid `json:"collation"` /* collation for the substituted value */ - Location int `json:"location"` /* token location, or -1 if unknown */ -} - -func (node SetToDefault) MarshalJSON() ([]byte, error) { - type SetToDefaultMarshalAlias SetToDefault - return json.Marshal(map[string]interface{}{ - "SetToDefault": (*SetToDefaultMarshalAlias)(&node), - }) -} - -func (node *SetToDefault) UnmarshalJSON(input []byte) (err error) { - var fields map[string]json.RawMessage - - err = json.Unmarshal(input, &fields) - if err != nil { - return - } - - if fields["xpr"] != nil { - node.Xpr, err = UnmarshalNodeJSON(fields["xpr"]) - if err != nil { - return - } - } - - if fields["typeId"] != nil { - err = json.Unmarshal(fields["typeId"], &node.TypeId) - if err != nil { - return - } - } - - if fields["typeMod"] != nil { - err = json.Unmarshal(fields["typeMod"], &node.TypeMod) - if err != nil { - return - } - } - - if fields["collation"] != nil { - err = json.Unmarshal(fields["collation"], &node.Collation) - if err != nil { - return - } - } - - if fields["location"] != nil { - err = json.Unmarshal(fields["location"], &node.Location) - if err != nil { - return - } - } - - return -} diff --git a/nodes/set_to_default_deparse.go b/nodes/set_to_default_deparse.go deleted file mode 100644 index 82042f67..00000000 --- a/nodes/set_to_default_deparse.go +++ /dev/null @@ -1,7 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -func (node SetToDefault) Deparse() string { - panic("Not Implemented") -} diff --git a/nodes/set_to_default_fingerprint.go b/nodes/set_to_default_fingerprint.go deleted file mode 100644 index 11cdb03a..00000000 --- a/nodes/set_to_default_fingerprint.go +++ /dev/null @@ -1,7 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -func (node SetToDefault) Fingerprint(ctx FingerprintContext, parentNode Node, parentFieldName string) { - // Intentionally ignoring all fields for fingerprinting -} diff --git a/nodes/sort_by.go b/nodes/sort_by.go deleted file mode 100644 index e415eb22..00000000 --- a/nodes/sort_by.go +++ /dev/null @@ -1,69 +0,0 @@ -// Auto-generated from postgres/src/include/nodes/parsenodes.h - DO NOT EDIT - -package pg_query - -import "encoding/json" - -/* - * SortBy - for ORDER BY clause - */ -type SortBy struct { - Node Node `json:"node"` /* expression to sort on */ - SortbyDir SortByDir `json:"sortby_dir"` /* ASC/DESC/USING/default */ - SortbyNulls SortByNulls `json:"sortby_nulls"` /* NULLS FIRST/LAST */ - UseOp List `json:"useOp"` /* name of op to use, if SORTBY_USING */ - Location int `json:"location"` /* operator location, or -1 if none/unknown */ -} - -func (node SortBy) MarshalJSON() ([]byte, error) { - type SortByMarshalAlias SortBy - return json.Marshal(map[string]interface{}{ - "SortBy": (*SortByMarshalAlias)(&node), - }) -} - -func (node *SortBy) UnmarshalJSON(input []byte) (err error) { - var fields map[string]json.RawMessage - - err = json.Unmarshal(input, &fields) - if err != nil { - return - } - - if fields["node"] != nil { - node.Node, err = UnmarshalNodeJSON(fields["node"]) - if err != nil { - return - } - } - - if fields["sortby_dir"] != nil { - err = json.Unmarshal(fields["sortby_dir"], &node.SortbyDir) - if err != nil { - return - } - } - - if fields["sortby_nulls"] != nil { - err = json.Unmarshal(fields["sortby_nulls"], &node.SortbyNulls) - if err != nil { - return - } - } - - if fields["useOp"] != nil { - node.UseOp.Items, err = UnmarshalNodeArrayJSON(fields["useOp"]) - if err != nil { - return - } - } - - if fields["location"] != nil { - err = json.Unmarshal(fields["location"], &node.Location) - if err != nil { - return - } - } - - return -} diff --git a/nodes/sort_by_deparse.go b/nodes/sort_by_deparse.go deleted file mode 100644 index 2c42c0a7..00000000 --- a/nodes/sort_by_deparse.go +++ /dev/null @@ -1,7 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -func (node SortBy) Deparse() string { - panic("Not Implemented") -} diff --git a/nodes/sort_by_dir.go b/nodes/sort_by_dir.go deleted file mode 100644 index c286e402..00000000 --- a/nodes/sort_by_dir.go +++ /dev/null @@ -1,13 +0,0 @@ -// Auto-generated from postgres/src/include/nodes/parsenodes.h - DO NOT EDIT - -package pg_query - -/* Sort ordering options for ORDER BY and CREATE INDEX */ -type SortByDir uint - -const ( - SORTBY_DEFAULT SortByDir = iota - SORTBY_ASC - SORTBY_DESC - SORTBY_USING /* not allowed in CREATE INDEX ... */ -) diff --git a/nodes/sort_by_fingerprint.go b/nodes/sort_by_fingerprint.go deleted file mode 100644 index d347f1bc..00000000 --- a/nodes/sort_by_fingerprint.go +++ /dev/null @@ -1,44 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -import "strconv" - -func (node SortBy) Fingerprint(ctx FingerprintContext, parentNode Node, parentFieldName string) { - ctx.WriteString("SortBy") - // Intentionally ignoring node.Location for fingerprinting - - if node.Node != nil { - subCtx := FingerprintSubContext{} - node.Node.Fingerprint(&subCtx, node, "Node") - - if len(subCtx.parts) > 0 { - ctx.WriteString("node") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if int(node.SortbyDir) != 0 { - ctx.WriteString("sortby_dir") - ctx.WriteString(strconv.Itoa(int(node.SortbyDir))) - } - - if int(node.SortbyNulls) != 0 { - ctx.WriteString("sortby_nulls") - ctx.WriteString(strconv.Itoa(int(node.SortbyNulls))) - } - - if len(node.UseOp.Items) > 0 { - subCtx := FingerprintSubContext{} - node.UseOp.Fingerprint(&subCtx, node, "UseOp") - - if len(subCtx.parts) > 0 { - ctx.WriteString("useOp") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } -} diff --git a/nodes/sort_by_nulls.go b/nodes/sort_by_nulls.go deleted file mode 100644 index bd25bcc4..00000000 --- a/nodes/sort_by_nulls.go +++ /dev/null @@ -1,11 +0,0 @@ -// Auto-generated from postgres/src/include/nodes/parsenodes.h - DO NOT EDIT - -package pg_query - -type SortByNulls uint - -const ( - SORTBY_NULLS_DEFAULT SortByNulls = iota - SORTBY_NULLS_FIRST - SORTBY_NULLS_LAST -) diff --git a/nodes/sort_group_clause.go b/nodes/sort_group_clause.go deleted file mode 100644 index f0cfd051..00000000 --- a/nodes/sort_group_clause.go +++ /dev/null @@ -1,124 +0,0 @@ -// Auto-generated from postgres/src/include/nodes/parsenodes.h - DO NOT EDIT - -package pg_query - -import "encoding/json" - -/* - * SortGroupClause - - * representation of ORDER BY, GROUP BY, PARTITION BY, - * DISTINCT, DISTINCT ON items - * - * You might think that ORDER BY is only interested in defining ordering, - * and GROUP/DISTINCT are only interested in defining equality. However, - * one way to implement grouping is to sort and then apply a "uniq"-like - * filter. So it's also interesting to keep track of possible sort operators - * for GROUP/DISTINCT, and in particular to try to sort for the grouping - * in a way that will also yield a requested ORDER BY ordering. So we need - * to be able to compare ORDER BY and GROUP/DISTINCT lists, which motivates - * the decision to give them the same representation. - * - * tleSortGroupRef must match ressortgroupref of exactly one entry of the - * query's targetlist; that is the expression to be sorted or grouped by. - * eqop is the OID of the equality operator. - * sortop is the OID of the ordering operator (a "<" or ">" operator), - * or InvalidOid if not available. - * nulls_first means about what you'd expect. If sortop is InvalidOid - * then nulls_first is meaningless and should be set to false. - * hashable is TRUE if eqop is hashable (note this condition also depends - * on the datatype of the input expression). - * - * In an ORDER BY item, all fields must be valid. (The eqop isn't essential - * here, but it's cheap to get it along with the sortop, and requiring it - * to be valid eases comparisons to grouping items.) Note that this isn't - * actually enough information to determine an ordering: if the sortop is - * collation-sensitive, a collation OID is needed too. We don't store the - * collation in SortGroupClause because it's not available at the time the - * parser builds the SortGroupClause; instead, consult the exposed collation - * of the referenced targetlist expression to find out what it is. - * - * In a grouping item, eqop must be valid. If the eqop is a btree equality - * operator, then sortop should be set to a compatible ordering operator. - * We prefer to set eqop/sortop/nulls_first to match any ORDER BY item that - * the query presents for the same tlist item. If there is none, we just - * use the default ordering op for the datatype. - * - * If the tlist item's type has a hash opclass but no btree opclass, then - * we will set eqop to the hash equality operator, sortop to InvalidOid, - * and nulls_first to false. A grouping item of this kind can only be - * implemented by hashing, and of course it'll never match an ORDER BY item. - * - * The hashable flag is provided since we generally have the requisite - * information readily available when the SortGroupClause is constructed, - * and it's relatively expensive to get it again later. Note there is no - * need for a "sortable" flag since OidIsValid(sortop) serves the purpose. - * - * A query might have both ORDER BY and DISTINCT (or DISTINCT ON) clauses. - * In SELECT DISTINCT, the distinctClause list is as long or longer than the - * sortClause list, while in SELECT DISTINCT ON it's typically shorter. - * The two lists must match up to the end of the shorter one --- the parser - * rearranges the distinctClause if necessary to make this true. (This - * restriction ensures that only one sort step is needed to both satisfy the - * ORDER BY and set up for the Unique step. This is semantically necessary - * for DISTINCT ON, and presents no real drawback for DISTINCT.) - */ -type SortGroupClause struct { - TleSortGroupRef Index `json:"tleSortGroupRef"` /* reference into targetlist */ - Eqop Oid `json:"eqop"` /* the equality operator ('=' op) */ - Sortop Oid `json:"sortop"` /* the ordering operator ('<' op), or 0 */ - NullsFirst bool `json:"nulls_first"` /* do NULLs come before normal values? */ - Hashable bool `json:"hashable"` /* can eqop be implemented by hashing? */ -} - -func (node SortGroupClause) MarshalJSON() ([]byte, error) { - type SortGroupClauseMarshalAlias SortGroupClause - return json.Marshal(map[string]interface{}{ - "SortGroupClause": (*SortGroupClauseMarshalAlias)(&node), - }) -} - -func (node *SortGroupClause) UnmarshalJSON(input []byte) (err error) { - var fields map[string]json.RawMessage - - err = json.Unmarshal(input, &fields) - if err != nil { - return - } - - if fields["tleSortGroupRef"] != nil { - err = json.Unmarshal(fields["tleSortGroupRef"], &node.TleSortGroupRef) - if err != nil { - return - } - } - - if fields["eqop"] != nil { - err = json.Unmarshal(fields["eqop"], &node.Eqop) - if err != nil { - return - } - } - - if fields["sortop"] != nil { - err = json.Unmarshal(fields["sortop"], &node.Sortop) - if err != nil { - return - } - } - - if fields["nulls_first"] != nil { - err = json.Unmarshal(fields["nulls_first"], &node.NullsFirst) - if err != nil { - return - } - } - - if fields["hashable"] != nil { - err = json.Unmarshal(fields["hashable"], &node.Hashable) - if err != nil { - return - } - } - - return -} diff --git a/nodes/sort_group_clause_deparse.go b/nodes/sort_group_clause_deparse.go deleted file mode 100644 index 997eb49c..00000000 --- a/nodes/sort_group_clause_deparse.go +++ /dev/null @@ -1,7 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -func (node SortGroupClause) Deparse() string { - panic("Not Implemented") -} diff --git a/nodes/sort_group_clause_fingerprint.go b/nodes/sort_group_clause_fingerprint.go deleted file mode 100644 index 32b94a78..00000000 --- a/nodes/sort_group_clause_fingerprint.go +++ /dev/null @@ -1,34 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -import "strconv" - -func (node SortGroupClause) Fingerprint(ctx FingerprintContext, parentNode Node, parentFieldName string) { - ctx.WriteString("SortGroupClause") - - if node.Eqop != 0 { - ctx.WriteString("eqop") - ctx.WriteString(strconv.Itoa(int(node.Eqop))) - } - - if node.Hashable { - ctx.WriteString("hashable") - ctx.WriteString(strconv.FormatBool(node.Hashable)) - } - - if node.NullsFirst { - ctx.WriteString("nulls_first") - ctx.WriteString(strconv.FormatBool(node.NullsFirst)) - } - - if node.Sortop != 0 { - ctx.WriteString("sortop") - ctx.WriteString(strconv.Itoa(int(node.Sortop))) - } - - if node.TleSortGroupRef != 0 { - ctx.WriteString("tleSortGroupRef") - ctx.WriteString(strconv.Itoa(int(node.TleSortGroupRef))) - } -} diff --git a/nodes/sql_value_function.go b/nodes/sql_value_function.go deleted file mode 100644 index 744ec5c2..00000000 --- a/nodes/sql_value_function.go +++ /dev/null @@ -1,66 +0,0 @@ -// Auto-generated from postgres/src/include/nodes/primnodes.h - DO NOT EDIT - -package pg_query - -import "encoding/json" - -type SQLValueFunction struct { - Xpr Node `json:"xpr"` - Op SQLValueFunctionOp `json:"op"` /* which function this is */ - Type Oid `json:"type"` /* result type/typmod */ - Typmod int32 `json:"typmod"` - Location int `json:"location"` /* token location, or -1 if unknown */ -} - -func (node SQLValueFunction) MarshalJSON() ([]byte, error) { - type SQLValueFunctionMarshalAlias SQLValueFunction - return json.Marshal(map[string]interface{}{ - "SQLValueFunction": (*SQLValueFunctionMarshalAlias)(&node), - }) -} - -func (node *SQLValueFunction) UnmarshalJSON(input []byte) (err error) { - var fields map[string]json.RawMessage - - err = json.Unmarshal(input, &fields) - if err != nil { - return - } - - if fields["xpr"] != nil { - node.Xpr, err = UnmarshalNodeJSON(fields["xpr"]) - if err != nil { - return - } - } - - if fields["op"] != nil { - err = json.Unmarshal(fields["op"], &node.Op) - if err != nil { - return - } - } - - if fields["type"] != nil { - err = json.Unmarshal(fields["type"], &node.Type) - if err != nil { - return - } - } - - if fields["typmod"] != nil { - err = json.Unmarshal(fields["typmod"], &node.Typmod) - if err != nil { - return - } - } - - if fields["location"] != nil { - err = json.Unmarshal(fields["location"], &node.Location) - if err != nil { - return - } - } - - return -} diff --git a/nodes/sql_value_function_deparse.go b/nodes/sql_value_function_deparse.go deleted file mode 100644 index 890b72d9..00000000 --- a/nodes/sql_value_function_deparse.go +++ /dev/null @@ -1,7 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -func (node SQLValueFunction) Deparse() string { - panic("Not Implemented") -} diff --git a/nodes/sql_value_function_fingerprint.go b/nodes/sql_value_function_fingerprint.go deleted file mode 100644 index f9ca83ac..00000000 --- a/nodes/sql_value_function_fingerprint.go +++ /dev/null @@ -1,37 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -import "strconv" - -func (node SQLValueFunction) Fingerprint(ctx FingerprintContext, parentNode Node, parentFieldName string) { - ctx.WriteString("SQLValueFunction") - // Intentionally ignoring node.Location for fingerprinting - - if int(node.Op) != 0 { - ctx.WriteString("op") - ctx.WriteString(strconv.Itoa(int(node.Op))) - } - - if node.Type != 0 { - ctx.WriteString("type") - ctx.WriteString(strconv.Itoa(int(node.Type))) - } - - if node.Typmod != 0 { - ctx.WriteString("typmod") - ctx.WriteString(strconv.Itoa(int(node.Typmod))) - } - - if node.Xpr != nil { - subCtx := FingerprintSubContext{} - node.Xpr.Fingerprint(&subCtx, node, "Xpr") - - if len(subCtx.parts) > 0 { - ctx.WriteString("xpr") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } -} diff --git a/nodes/sql_value_function_op.go b/nodes/sql_value_function_op.go deleted file mode 100644 index 58e1db73..00000000 --- a/nodes/sql_value_function_op.go +++ /dev/null @@ -1,34 +0,0 @@ -// Auto-generated from postgres/src/include/nodes/primnodes.h - DO NOT EDIT - -package pg_query - -/* - * SQLValueFunction - parameterless functions with special grammar productions - * - * The SQL standard categorizes some of these as - * and others as . We call 'em SQLValueFunctions - * for lack of a better term. We store type and typmod of the result so that - * some code doesn't need to know each function individually, and because - * we would need to store typmod anyway for some of the datetime functions. - * Note that currently, all variants return non-collating datatypes, so we do - * not need a collation field; also, all these functions are stable. - */ -type SQLValueFunctionOp uint - -const ( - SVFOP_CURRENT_DATE SQLValueFunctionOp = iota - SVFOP_CURRENT_TIME - SVFOP_CURRENT_TIME_N - SVFOP_CURRENT_TIMESTAMP - SVFOP_CURRENT_TIMESTAMP_N - SVFOP_LOCALTIME - SVFOP_LOCALTIME_N - SVFOP_LOCALTIMESTAMP - SVFOP_LOCALTIMESTAMP_N - SVFOP_CURRENT_ROLE - SVFOP_CURRENT_USER - SVFOP_USER - SVFOP_SESSION_USER - SVFOP_CURRENT_CATALOG - SVFOP_CURRENT_SCHEMA -) diff --git a/nodes/string.go b/nodes/string.go deleted file mode 100644 index 25f56aeb..00000000 --- a/nodes/string.go +++ /dev/null @@ -1,34 +0,0 @@ -// Auto-generated from postgres/src/include/nodes/value.h - DO NOT EDIT - -package pg_query - -import "encoding/json" - -type String struct { - Str string `json:"str"` -} - -func (node String) MarshalJSON() ([]byte, error) { - type StringMarshalAlias String - return json.Marshal(map[string]interface{}{ - "String": (*StringMarshalAlias)(&node), - }) -} - -func (node *String) UnmarshalJSON(input []byte) (err error) { - var fields map[string]json.RawMessage - - err = json.Unmarshal(input, &fields) - if err != nil { - return - } - - if fields["str"] != nil { - err = json.Unmarshal(fields["str"], &node.Str) - if err != nil { - return - } - } - - return -} diff --git a/nodes/string_deparse.go b/nodes/string_deparse.go deleted file mode 100644 index f39d7df5..00000000 --- a/nodes/string_deparse.go +++ /dev/null @@ -1,7 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -func (node String) Deparse() string { - panic("Not Implemented") -} diff --git a/nodes/string_fingerprint.go b/nodes/string_fingerprint.go deleted file mode 100644 index 0844394b..00000000 --- a/nodes/string_fingerprint.go +++ /dev/null @@ -1,11 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -func (node String) Fingerprint(ctx FingerprintContext, parentNode Node, parentFieldName string) { - ctx.WriteString("String") - if len(node.Str) > 0 { - ctx.WriteString("str") - ctx.WriteString(node.Str) - } -} diff --git a/nodes/sub_link.go b/nodes/sub_link.go deleted file mode 100644 index ca8bf1d3..00000000 --- a/nodes/sub_link.go +++ /dev/null @@ -1,133 +0,0 @@ -// Auto-generated from postgres/src/include/nodes/primnodes.h - DO NOT EDIT - -package pg_query - -import "encoding/json" - -/* - * SubLink - * - * A SubLink represents a subselect appearing in an expression, and in some - * cases also the combining operator(s) just above it. The subLinkType - * indicates the form of the expression represented: - * EXISTS_SUBLINK EXISTS(SELECT ...) - * ALL_SUBLINK (lefthand) op ALL (SELECT ...) - * ANY_SUBLINK (lefthand) op ANY (SELECT ...) - * ROWCOMPARE_SUBLINK (lefthand) op (SELECT ...) - * EXPR_SUBLINK (SELECT with single targetlist item ...) - * MULTIEXPR_SUBLINK (SELECT with multiple targetlist items ...) - * ARRAY_SUBLINK ARRAY(SELECT with single targetlist item ...) - * CTE_SUBLINK WITH query (never actually part of an expression) - * For ALL, ANY, and ROWCOMPARE, the lefthand is a list of expressions of the - * same length as the subselect's targetlist. ROWCOMPARE will *always* have - * a list with more than one entry; if the subselect has just one target - * then the parser will create an EXPR_SUBLINK instead (and any operator - * above the subselect will be represented separately). - * ROWCOMPARE, EXPR, and MULTIEXPR require the subselect to deliver at most - * one row (if it returns no rows, the result is NULL). - * ALL, ANY, and ROWCOMPARE require the combining operators to deliver boolean - * results. ALL and ANY combine the per-row results using AND and OR - * semantics respectively. - * ARRAY requires just one target column, and creates an array of the target - * column's type using any number of rows resulting from the subselect. - * - * SubLink is classed as an Expr node, but it is not actually executable; - * it must be replaced in the expression tree by a SubPlan node during - * planning. - * - * NOTE: in the raw output of gram.y, testexpr contains just the raw form - * of the lefthand expression (if any), and operName is the String name of - * the combining operator. Also, subselect is a raw parsetree. During parse - * analysis, the parser transforms testexpr into a complete boolean expression - * that compares the lefthand value(s) to PARAM_SUBLINK nodes representing the - * output columns of the subselect. And subselect is transformed to a Query. - * This is the representation seen in saved rules and in the rewriter. - * - * In EXISTS, EXPR, MULTIEXPR, and ARRAY SubLinks, testexpr and operName - * are unused and are always null. - * - * subLinkId is currently used only for MULTIEXPR SubLinks, and is zero in - * other SubLinks. This number identifies different multiple-assignment - * subqueries within an UPDATE statement's SET list. It is unique only - * within a particular targetlist. The output column(s) of the MULTIEXPR - * are referenced by PARAM_MULTIEXPR Params appearing elsewhere in the tlist. - * - * The CTE_SUBLINK case never occurs in actual SubLink nodes, but it is used - * in SubPlans generated for WITH subqueries. - */ -type SubLink struct { - Xpr Node `json:"xpr"` - SubLinkType SubLinkType `json:"subLinkType"` /* see above */ - SubLinkId int `json:"subLinkId"` /* ID (1..n); 0 if not MULTIEXPR */ - Testexpr Node `json:"testexpr"` /* outer-query test for ALL/ANY/ROWCOMPARE */ - OperName List `json:"operName"` /* originally specified operator name */ - Subselect Node `json:"subselect"` /* subselect as Query* or raw parsetree */ - Location int `json:"location"` /* token location, or -1 if unknown */ -} - -func (node SubLink) MarshalJSON() ([]byte, error) { - type SubLinkMarshalAlias SubLink - return json.Marshal(map[string]interface{}{ - "SubLink": (*SubLinkMarshalAlias)(&node), - }) -} - -func (node *SubLink) UnmarshalJSON(input []byte) (err error) { - var fields map[string]json.RawMessage - - err = json.Unmarshal(input, &fields) - if err != nil { - return - } - - if fields["xpr"] != nil { - node.Xpr, err = UnmarshalNodeJSON(fields["xpr"]) - if err != nil { - return - } - } - - if fields["subLinkType"] != nil { - err = json.Unmarshal(fields["subLinkType"], &node.SubLinkType) - if err != nil { - return - } - } - - if fields["subLinkId"] != nil { - err = json.Unmarshal(fields["subLinkId"], &node.SubLinkId) - if err != nil { - return - } - } - - if fields["testexpr"] != nil { - node.Testexpr, err = UnmarshalNodeJSON(fields["testexpr"]) - if err != nil { - return - } - } - - if fields["operName"] != nil { - node.OperName.Items, err = UnmarshalNodeArrayJSON(fields["operName"]) - if err != nil { - return - } - } - - if fields["subselect"] != nil { - node.Subselect, err = UnmarshalNodeJSON(fields["subselect"]) - if err != nil { - return - } - } - - if fields["location"] != nil { - err = json.Unmarshal(fields["location"], &node.Location) - if err != nil { - return - } - } - - return -} diff --git a/nodes/sub_link_deparse.go b/nodes/sub_link_deparse.go deleted file mode 100644 index 5d931bbb..00000000 --- a/nodes/sub_link_deparse.go +++ /dev/null @@ -1,7 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -func (node SubLink) Deparse() string { - panic("Not Implemented") -} diff --git a/nodes/sub_link_fingerprint.go b/nodes/sub_link_fingerprint.go deleted file mode 100644 index 9f1efd49..00000000 --- a/nodes/sub_link_fingerprint.go +++ /dev/null @@ -1,68 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -import "strconv" - -func (node SubLink) Fingerprint(ctx FingerprintContext, parentNode Node, parentFieldName string) { - ctx.WriteString("SubLink") - // Intentionally ignoring node.Location for fingerprinting - - if len(node.OperName.Items) > 0 { - subCtx := FingerprintSubContext{} - node.OperName.Fingerprint(&subCtx, node, "OperName") - - if len(subCtx.parts) > 0 { - ctx.WriteString("operName") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if node.SubLinkId != 0 { - ctx.WriteString("subLinkId") - ctx.WriteString(strconv.Itoa(int(node.SubLinkId))) - } - - if int(node.SubLinkType) != 0 { - ctx.WriteString("subLinkType") - ctx.WriteString(strconv.Itoa(int(node.SubLinkType))) - } - - if node.Subselect != nil { - subCtx := FingerprintSubContext{} - node.Subselect.Fingerprint(&subCtx, node, "Subselect") - - if len(subCtx.parts) > 0 { - ctx.WriteString("subselect") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if node.Testexpr != nil { - subCtx := FingerprintSubContext{} - node.Testexpr.Fingerprint(&subCtx, node, "Testexpr") - - if len(subCtx.parts) > 0 { - ctx.WriteString("testexpr") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if node.Xpr != nil { - subCtx := FingerprintSubContext{} - node.Xpr.Fingerprint(&subCtx, node, "Xpr") - - if len(subCtx.parts) > 0 { - ctx.WriteString("xpr") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } -} diff --git a/nodes/sub_link_type.go b/nodes/sub_link_type.go deleted file mode 100644 index 143794fd..00000000 --- a/nodes/sub_link_type.go +++ /dev/null @@ -1,67 +0,0 @@ -// Auto-generated from postgres/src/include/nodes/primnodes.h - DO NOT EDIT - -package pg_query - -/* - * SubLink - * - * A SubLink represents a subselect appearing in an expression, and in some - * cases also the combining operator(s) just above it. The subLinkType - * indicates the form of the expression represented: - * EXISTS_SUBLINK EXISTS(SELECT ...) - * ALL_SUBLINK (lefthand) op ALL (SELECT ...) - * ANY_SUBLINK (lefthand) op ANY (SELECT ...) - * ROWCOMPARE_SUBLINK (lefthand) op (SELECT ...) - * EXPR_SUBLINK (SELECT with single targetlist item ...) - * MULTIEXPR_SUBLINK (SELECT with multiple targetlist items ...) - * ARRAY_SUBLINK ARRAY(SELECT with single targetlist item ...) - * CTE_SUBLINK WITH query (never actually part of an expression) - * For ALL, ANY, and ROWCOMPARE, the lefthand is a list of expressions of the - * same length as the subselect's targetlist. ROWCOMPARE will *always* have - * a list with more than one entry; if the subselect has just one target - * then the parser will create an EXPR_SUBLINK instead (and any operator - * above the subselect will be represented separately). - * ROWCOMPARE, EXPR, and MULTIEXPR require the subselect to deliver at most - * one row (if it returns no rows, the result is NULL). - * ALL, ANY, and ROWCOMPARE require the combining operators to deliver boolean - * results. ALL and ANY combine the per-row results using AND and OR - * semantics respectively. - * ARRAY requires just one target column, and creates an array of the target - * column's type using any number of rows resulting from the subselect. - * - * SubLink is classed as an Expr node, but it is not actually executable; - * it must be replaced in the expression tree by a SubPlan node during - * planning. - * - * NOTE: in the raw output of gram.y, testexpr contains just the raw form - * of the lefthand expression (if any), and operName is the String name of - * the combining operator. Also, subselect is a raw parsetree. During parse - * analysis, the parser transforms testexpr into a complete boolean expression - * that compares the lefthand value(s) to PARAM_SUBLINK nodes representing the - * output columns of the subselect. And subselect is transformed to a Query. - * This is the representation seen in saved rules and in the rewriter. - * - * In EXISTS, EXPR, MULTIEXPR, and ARRAY SubLinks, testexpr and operName - * are unused and are always null. - * - * subLinkId is currently used only for MULTIEXPR SubLinks, and is zero in - * other SubLinks. This number identifies different multiple-assignment - * subqueries within an UPDATE statement's SET list. It is unique only - * within a particular targetlist. The output column(s) of the MULTIEXPR - * are referenced by PARAM_MULTIEXPR Params appearing elsewhere in the tlist. - * - * The CTE_SUBLINK case never occurs in actual SubLink nodes, but it is used - * in SubPlans generated for WITH subqueries. - */ -type SubLinkType uint - -const ( - EXISTS_SUBLINK SubLinkType = iota - ALL_SUBLINK - ANY_SUBLINK - ROWCOMPARE_SUBLINK - EXPR_SUBLINK - MULTIEXPR_SUBLINK - ARRAY_SUBLINK - CTE_SUBLINK /* for SubPlans only */ -) diff --git a/nodes/sub_plan.go b/nodes/sub_plan.go deleted file mode 100644 index 55744264..00000000 --- a/nodes/sub_plan.go +++ /dev/null @@ -1,228 +0,0 @@ -// Auto-generated from postgres/src/include/nodes/primnodes.h - DO NOT EDIT - -package pg_query - -import "encoding/json" - -/* - * SubPlan - executable expression node for a subplan (sub-SELECT) - * - * The planner replaces SubLink nodes in expression trees with SubPlan - * nodes after it has finished planning the subquery. SubPlan references - * a sub-plantree stored in the subplans list of the toplevel PlannedStmt. - * (We avoid a direct link to make it easier to copy expression trees - * without causing multiple processing of the subplan.) - * - * In an ordinary subplan, testexpr points to an executable expression - * (OpExpr, an AND/OR tree of OpExprs, or RowCompareExpr) for the combining - * operator(s); the left-hand arguments are the original lefthand expressions, - * and the right-hand arguments are PARAM_EXEC Param nodes representing the - * outputs of the sub-select. (NOTE: runtime coercion functions may be - * inserted as well.) This is just the same expression tree as testexpr in - * the original SubLink node, but the PARAM_SUBLINK nodes are replaced by - * suitably numbered PARAM_EXEC nodes. - * - * If the sub-select becomes an initplan rather than a subplan, the executable - * expression is part of the outer plan's expression tree (and the SubPlan - * node itself is not, but rather is found in the outer plan's initPlan - * list). In this case testexpr is NULL to avoid duplication. - * - * The planner also derives lists of the values that need to be passed into - * and out of the subplan. Input values are represented as a list "args" of - * expressions to be evaluated in the outer-query context (currently these - * args are always just Vars, but in principle they could be any expression). - * The values are assigned to the global PARAM_EXEC params indexed by parParam - * (the parParam and args lists must have the same ordering). setParam is a - * list of the PARAM_EXEC params that are computed by the sub-select, if it - * is an initplan; they are listed in order by sub-select output column - * position. (parParam and setParam are integer Lists, not Bitmapsets, - * because their ordering is significant.) - * - * Also, the planner computes startup and per-call costs for use of the - * SubPlan. Note that these include the cost of the subquery proper, - * evaluation of the testexpr if any, and any hashtable management overhead. - */ -type SubPlan struct { - Xpr Node `json:"xpr"` - - /* Fields copied from original SubLink: */ - SubLinkType SubLinkType `json:"subLinkType"` /* see above */ - - /* The combining operators, transformed to an executable expression: */ - Testexpr Node `json:"testexpr"` /* OpExpr or RowCompareExpr expression tree */ - ParamIds List `json:"paramIds"` /* IDs of Params embedded in the above */ - - /* Identification of the Plan tree to use: */ - PlanId int `json:"plan_id"` /* Index (from 1) in PlannedStmt.subplans */ - - /* Identification of the SubPlan for EXPLAIN and debugging purposes: */ - PlanName *string `json:"plan_name"` /* A name assigned during planning */ - - /* Extra data useful for determining subplan's output type: */ - FirstColType Oid `json:"firstColType"` /* Type of first column of subplan result */ - FirstColTypmod int32 `json:"firstColTypmod"` /* Typmod of first column of subplan result */ - FirstColCollation Oid `json:"firstColCollation"` /* Collation of first column of subplan - * result */ - - /* Information about execution strategy: */ - UseHashTable bool `json:"useHashTable"` /* TRUE to store subselect output in a hash - * table (implies we are doing "IN") */ - - UnknownEqFalse bool `json:"unknownEqFalse"` /* TRUE if it's okay to return FALSE when the - * spec result is UNKNOWN; this allows much - * simpler handling of null values */ - - ParallelSafe bool `json:"parallel_safe"` /* is the subplan parallel-safe? */ - - /* Note: parallel_safe does not consider contents of testexpr or args */ - - /* Information for passing params into and out of the subselect: */ - - /* setParam and parParam are lists of integers (param IDs) */ - SetParam List `json:"setParam"` /* initplan subqueries have to set these - * Params for parent plan */ - - ParParam List `json:"parParam"` /* indices of input Params from parent plan */ - Args List `json:"args"` /* exprs to pass as parParam values */ - - /* Estimated execution costs: */ - StartupCost Cost `json:"startup_cost"` /* one-time setup cost */ - PerCallCost Cost `json:"per_call_cost"` /* cost for each subplan evaluation */ -} - -func (node SubPlan) MarshalJSON() ([]byte, error) { - type SubPlanMarshalAlias SubPlan - return json.Marshal(map[string]interface{}{ - "SubPlan": (*SubPlanMarshalAlias)(&node), - }) -} - -func (node *SubPlan) UnmarshalJSON(input []byte) (err error) { - var fields map[string]json.RawMessage - - err = json.Unmarshal(input, &fields) - if err != nil { - return - } - - if fields["xpr"] != nil { - node.Xpr, err = UnmarshalNodeJSON(fields["xpr"]) - if err != nil { - return - } - } - - if fields["subLinkType"] != nil { - err = json.Unmarshal(fields["subLinkType"], &node.SubLinkType) - if err != nil { - return - } - } - - if fields["testexpr"] != nil { - node.Testexpr, err = UnmarshalNodeJSON(fields["testexpr"]) - if err != nil { - return - } - } - - if fields["paramIds"] != nil { - node.ParamIds.Items, err = UnmarshalNodeArrayJSON(fields["paramIds"]) - if err != nil { - return - } - } - - if fields["plan_id"] != nil { - err = json.Unmarshal(fields["plan_id"], &node.PlanId) - if err != nil { - return - } - } - - if fields["plan_name"] != nil { - err = json.Unmarshal(fields["plan_name"], &node.PlanName) - if err != nil { - return - } - } - - if fields["firstColType"] != nil { - err = json.Unmarshal(fields["firstColType"], &node.FirstColType) - if err != nil { - return - } - } - - if fields["firstColTypmod"] != nil { - err = json.Unmarshal(fields["firstColTypmod"], &node.FirstColTypmod) - if err != nil { - return - } - } - - if fields["firstColCollation"] != nil { - err = json.Unmarshal(fields["firstColCollation"], &node.FirstColCollation) - if err != nil { - return - } - } - - if fields["useHashTable"] != nil { - err = json.Unmarshal(fields["useHashTable"], &node.UseHashTable) - if err != nil { - return - } - } - - if fields["unknownEqFalse"] != nil { - err = json.Unmarshal(fields["unknownEqFalse"], &node.UnknownEqFalse) - if err != nil { - return - } - } - - if fields["parallel_safe"] != nil { - err = json.Unmarshal(fields["parallel_safe"], &node.ParallelSafe) - if err != nil { - return - } - } - - if fields["setParam"] != nil { - node.SetParam.Items, err = UnmarshalNodeArrayJSON(fields["setParam"]) - if err != nil { - return - } - } - - if fields["parParam"] != nil { - node.ParParam.Items, err = UnmarshalNodeArrayJSON(fields["parParam"]) - if err != nil { - return - } - } - - if fields["args"] != nil { - node.Args.Items, err = UnmarshalNodeArrayJSON(fields["args"]) - if err != nil { - return - } - } - - if fields["startup_cost"] != nil { - err = json.Unmarshal(fields["startup_cost"], &node.StartupCost) - if err != nil { - return - } - } - - if fields["per_call_cost"] != nil { - err = json.Unmarshal(fields["per_call_cost"], &node.PerCallCost) - if err != nil { - return - } - } - - return -} diff --git a/nodes/sub_plan_deparse.go b/nodes/sub_plan_deparse.go deleted file mode 100644 index 2b645262..00000000 --- a/nodes/sub_plan_deparse.go +++ /dev/null @@ -1,7 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -func (node SubPlan) Deparse() string { - panic("Not Implemented") -} diff --git a/nodes/sub_plan_fingerprint.go b/nodes/sub_plan_fingerprint.go deleted file mode 100644 index 7b9495ff..00000000 --- a/nodes/sub_plan_fingerprint.go +++ /dev/null @@ -1,130 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -import "strconv" - -func (node SubPlan) Fingerprint(ctx FingerprintContext, parentNode Node, parentFieldName string) { - ctx.WriteString("SubPlan") - - if len(node.Args.Items) > 0 { - subCtx := FingerprintSubContext{} - node.Args.Fingerprint(&subCtx, node, "Args") - - if len(subCtx.parts) > 0 { - ctx.WriteString("args") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if node.FirstColCollation != 0 { - ctx.WriteString("firstColCollation") - ctx.WriteString(strconv.Itoa(int(node.FirstColCollation))) - } - - if node.FirstColType != 0 { - ctx.WriteString("firstColType") - ctx.WriteString(strconv.Itoa(int(node.FirstColType))) - } - - if node.FirstColTypmod != 0 { - ctx.WriteString("firstColTypmod") - ctx.WriteString(strconv.Itoa(int(node.FirstColTypmod))) - } - - if len(node.ParParam.Items) > 0 { - subCtx := FingerprintSubContext{} - node.ParParam.Fingerprint(&subCtx, node, "ParParam") - - if len(subCtx.parts) > 0 { - ctx.WriteString("parParam") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if node.ParallelSafe { - ctx.WriteString("parallel_safe") - ctx.WriteString(strconv.FormatBool(node.ParallelSafe)) - } - - if len(node.ParamIds.Items) > 0 { - subCtx := FingerprintSubContext{} - node.ParamIds.Fingerprint(&subCtx, node, "ParamIds") - - if len(subCtx.parts) > 0 { - ctx.WriteString("paramIds") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - ctx.WriteString("per_call_cost") - ctx.WriteString(strconv.FormatFloat(float64(node.PerCallCost), 'E', -1, 64)) - - if node.PlanId != 0 { - ctx.WriteString("plan_id") - ctx.WriteString(strconv.Itoa(int(node.PlanId))) - } - - if node.PlanName != nil { - ctx.WriteString("plan_name") - ctx.WriteString(*node.PlanName) - } - - if len(node.SetParam.Items) > 0 { - subCtx := FingerprintSubContext{} - node.SetParam.Fingerprint(&subCtx, node, "SetParam") - - if len(subCtx.parts) > 0 { - ctx.WriteString("setParam") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - ctx.WriteString("startup_cost") - ctx.WriteString(strconv.FormatFloat(float64(node.StartupCost), 'E', -1, 64)) - - if int(node.SubLinkType) != 0 { - ctx.WriteString("subLinkType") - ctx.WriteString(strconv.Itoa(int(node.SubLinkType))) - } - - if node.Testexpr != nil { - subCtx := FingerprintSubContext{} - node.Testexpr.Fingerprint(&subCtx, node, "Testexpr") - - if len(subCtx.parts) > 0 { - ctx.WriteString("testexpr") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if node.UnknownEqFalse { - ctx.WriteString("unknownEqFalse") - ctx.WriteString(strconv.FormatBool(node.UnknownEqFalse)) - } - - if node.UseHashTable { - ctx.WriteString("useHashTable") - ctx.WriteString(strconv.FormatBool(node.UseHashTable)) - } - - if node.Xpr != nil { - subCtx := FingerprintSubContext{} - node.Xpr.Fingerprint(&subCtx, node, "Xpr") - - if len(subCtx.parts) > 0 { - ctx.WriteString("xpr") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } -} diff --git a/nodes/table_func.go b/nodes/table_func.go deleted file mode 100644 index 1e1dfaea..00000000 --- a/nodes/table_func.go +++ /dev/null @@ -1,133 +0,0 @@ -// Auto-generated from postgres/src/include/nodes/primnodes.h - DO NOT EDIT - -package pg_query - -import "encoding/json" - -/* - * TableFunc - node for a table function, such as XMLTABLE. - */ -type TableFunc struct { - NsUris List `json:"ns_uris"` /* list of namespace uri */ - NsNames List `json:"ns_names"` /* list of namespace names */ - Docexpr Node `json:"docexpr"` /* input document expression */ - Rowexpr Node `json:"rowexpr"` /* row filter expression */ - Colnames List `json:"colnames"` /* column names (list of String) */ - Coltypes List `json:"coltypes"` /* OID list of column type OIDs */ - Coltypmods List `json:"coltypmods"` /* integer list of column typmods */ - Colcollations List `json:"colcollations"` /* OID list of column collation OIDs */ - Colexprs List `json:"colexprs"` /* list of column filter expressions */ - Coldefexprs List `json:"coldefexprs"` /* list of column default expressions */ - Notnulls []uint32 `json:"notnulls"` /* nullability flag for each output column */ - Ordinalitycol int `json:"ordinalitycol"` /* counts from 0; -1 if none specified */ - Location int `json:"location"` /* token location, or -1 if unknown */ -} - -func (node TableFunc) MarshalJSON() ([]byte, error) { - type TableFuncMarshalAlias TableFunc - return json.Marshal(map[string]interface{}{ - "TableFunc": (*TableFuncMarshalAlias)(&node), - }) -} - -func (node *TableFunc) UnmarshalJSON(input []byte) (err error) { - var fields map[string]json.RawMessage - - err = json.Unmarshal(input, &fields) - if err != nil { - return - } - - if fields["ns_uris"] != nil { - node.NsUris.Items, err = UnmarshalNodeArrayJSON(fields["ns_uris"]) - if err != nil { - return - } - } - - if fields["ns_names"] != nil { - node.NsNames.Items, err = UnmarshalNodeArrayJSON(fields["ns_names"]) - if err != nil { - return - } - } - - if fields["docexpr"] != nil { - node.Docexpr, err = UnmarshalNodeJSON(fields["docexpr"]) - if err != nil { - return - } - } - - if fields["rowexpr"] != nil { - node.Rowexpr, err = UnmarshalNodeJSON(fields["rowexpr"]) - if err != nil { - return - } - } - - if fields["colnames"] != nil { - node.Colnames.Items, err = UnmarshalNodeArrayJSON(fields["colnames"]) - if err != nil { - return - } - } - - if fields["coltypes"] != nil { - node.Coltypes.Items, err = UnmarshalNodeArrayJSON(fields["coltypes"]) - if err != nil { - return - } - } - - if fields["coltypmods"] != nil { - node.Coltypmods.Items, err = UnmarshalNodeArrayJSON(fields["coltypmods"]) - if err != nil { - return - } - } - - if fields["colcollations"] != nil { - node.Colcollations.Items, err = UnmarshalNodeArrayJSON(fields["colcollations"]) - if err != nil { - return - } - } - - if fields["colexprs"] != nil { - node.Colexprs.Items, err = UnmarshalNodeArrayJSON(fields["colexprs"]) - if err != nil { - return - } - } - - if fields["coldefexprs"] != nil { - node.Coldefexprs.Items, err = UnmarshalNodeArrayJSON(fields["coldefexprs"]) - if err != nil { - return - } - } - - if fields["notnulls"] != nil { - err = json.Unmarshal(fields["notnulls"], &node.Notnulls) - if err != nil { - return - } - } - - if fields["ordinalitycol"] != nil { - err = json.Unmarshal(fields["ordinalitycol"], &node.Ordinalitycol) - if err != nil { - return - } - } - - if fields["location"] != nil { - err = json.Unmarshal(fields["location"], &node.Location) - if err != nil { - return - } - } - - return -} diff --git a/nodes/table_func_deparse.go b/nodes/table_func_deparse.go deleted file mode 100644 index b550760d..00000000 --- a/nodes/table_func_deparse.go +++ /dev/null @@ -1,7 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -func (node TableFunc) Deparse() string { - panic("Not Implemented") -} diff --git a/nodes/table_func_fingerprint.go b/nodes/table_func_fingerprint.go deleted file mode 100644 index b0d0f9d0..00000000 --- a/nodes/table_func_fingerprint.go +++ /dev/null @@ -1,140 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -import "strconv" - -func (node TableFunc) Fingerprint(ctx FingerprintContext, parentNode Node, parentFieldName string) { - ctx.WriteString("TableFunc") - - if len(node.Colcollations.Items) > 0 { - subCtx := FingerprintSubContext{} - node.Colcollations.Fingerprint(&subCtx, node, "Colcollations") - - if len(subCtx.parts) > 0 { - ctx.WriteString("colcollations") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if len(node.Coldefexprs.Items) > 0 { - subCtx := FingerprintSubContext{} - node.Coldefexprs.Fingerprint(&subCtx, node, "Coldefexprs") - - if len(subCtx.parts) > 0 { - ctx.WriteString("coldefexprs") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if len(node.Colexprs.Items) > 0 { - subCtx := FingerprintSubContext{} - node.Colexprs.Fingerprint(&subCtx, node, "Colexprs") - - if len(subCtx.parts) > 0 { - ctx.WriteString("colexprs") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if len(node.Colnames.Items) > 0 { - subCtx := FingerprintSubContext{} - node.Colnames.Fingerprint(&subCtx, node, "Colnames") - - if len(subCtx.parts) > 0 { - ctx.WriteString("colnames") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if len(node.Coltypes.Items) > 0 { - subCtx := FingerprintSubContext{} - node.Coltypes.Fingerprint(&subCtx, node, "Coltypes") - - if len(subCtx.parts) > 0 { - ctx.WriteString("coltypes") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if len(node.Coltypmods.Items) > 0 { - subCtx := FingerprintSubContext{} - node.Coltypmods.Fingerprint(&subCtx, node, "Coltypmods") - - if len(subCtx.parts) > 0 { - ctx.WriteString("coltypmods") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if node.Docexpr != nil { - subCtx := FingerprintSubContext{} - node.Docexpr.Fingerprint(&subCtx, node, "Docexpr") - - if len(subCtx.parts) > 0 { - ctx.WriteString("docexpr") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - // Intentionally ignoring node.Location for fingerprinting - - ctx.WriteString("notnulls") - for _, val := range node.Notnulls { - ctx.WriteString(strconv.Itoa(int(val))) - } - - if len(node.NsNames.Items) > 0 { - subCtx := FingerprintSubContext{} - node.NsNames.Fingerprint(&subCtx, node, "NsNames") - - if len(subCtx.parts) > 0 { - ctx.WriteString("ns_names") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if len(node.NsUris.Items) > 0 { - subCtx := FingerprintSubContext{} - node.NsUris.Fingerprint(&subCtx, node, "NsUris") - - if len(subCtx.parts) > 0 { - ctx.WriteString("ns_uris") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if node.Ordinalitycol != 0 { - ctx.WriteString("ordinalitycol") - ctx.WriteString(strconv.Itoa(int(node.Ordinalitycol))) - } - - if node.Rowexpr != nil { - subCtx := FingerprintSubContext{} - node.Rowexpr.Fingerprint(&subCtx, node, "Rowexpr") - - if len(subCtx.parts) > 0 { - ctx.WriteString("rowexpr") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } -} diff --git a/nodes/table_like_clause.go b/nodes/table_like_clause.go deleted file mode 100644 index 7a68f12a..00000000 --- a/nodes/table_like_clause.go +++ /dev/null @@ -1,50 +0,0 @@ -// Auto-generated from postgres/src/include/nodes/parsenodes.h - DO NOT EDIT - -package pg_query - -import "encoding/json" - -/* - * TableLikeClause - CREATE TABLE ( ... LIKE ... ) clause - */ -type TableLikeClause struct { - Relation *RangeVar `json:"relation"` - Options uint32 `json:"options"` /* OR of TableLikeOption flags */ -} - -func (node TableLikeClause) MarshalJSON() ([]byte, error) { - type TableLikeClauseMarshalAlias TableLikeClause - return json.Marshal(map[string]interface{}{ - "TableLikeClause": (*TableLikeClauseMarshalAlias)(&node), - }) -} - -func (node *TableLikeClause) UnmarshalJSON(input []byte) (err error) { - var fields map[string]json.RawMessage - - err = json.Unmarshal(input, &fields) - if err != nil { - return - } - - if fields["relation"] != nil { - var nodePtr *Node - nodePtr, err = UnmarshalNodePtrJSON(fields["relation"]) - if err != nil { - return - } - if nodePtr != nil && *nodePtr != nil { - val := (*nodePtr).(RangeVar) - node.Relation = &val - } - } - - if fields["options"] != nil { - err = json.Unmarshal(fields["options"], &node.Options) - if err != nil { - return - } - } - - return -} diff --git a/nodes/table_like_clause_deparse.go b/nodes/table_like_clause_deparse.go deleted file mode 100644 index cd4e8117..00000000 --- a/nodes/table_like_clause_deparse.go +++ /dev/null @@ -1,7 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -func (node TableLikeClause) Deparse() string { - panic("Not Implemented") -} diff --git a/nodes/table_like_clause_fingerprint.go b/nodes/table_like_clause_fingerprint.go deleted file mode 100644 index 40eacc09..00000000 --- a/nodes/table_like_clause_fingerprint.go +++ /dev/null @@ -1,26 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -import "strconv" - -func (node TableLikeClause) Fingerprint(ctx FingerprintContext, parentNode Node, parentFieldName string) { - ctx.WriteString("TableLikeClause") - - if node.Options != 0 { - ctx.WriteString("options") - ctx.WriteString(strconv.Itoa(int(node.Options))) - } - - if node.Relation != nil { - subCtx := FingerprintSubContext{} - node.Relation.Fingerprint(&subCtx, node, "Relation") - - if len(subCtx.parts) > 0 { - ctx.WriteString("relation") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } -} diff --git a/nodes/table_like_option.go b/nodes/table_like_option.go deleted file mode 100644 index a533fe40..00000000 --- a/nodes/table_like_option.go +++ /dev/null @@ -1,15 +0,0 @@ -// Auto-generated from postgres/src/include/nodes/parsenodes.h - DO NOT EDIT - -package pg_query - -type TableLikeOption uint - -const ( - CREATE_TABLE_LIKE_DEFAULTS TableLikeOption = iota - CREATE_TABLE_LIKE_CONSTRAINTS - CREATE_TABLE_LIKE_IDENTITY - CREATE_TABLE_LIKE_INDEXES - CREATE_TABLE_LIKE_STORAGE - CREATE_TABLE_LIKE_COMMENTS - CREATE_TABLE_LIKE_ALL -) diff --git a/nodes/table_sample_clause.go b/nodes/table_sample_clause.go deleted file mode 100644 index 7f196528..00000000 --- a/nodes/table_sample_clause.go +++ /dev/null @@ -1,55 +0,0 @@ -// Auto-generated from postgres/src/include/nodes/parsenodes.h - DO NOT EDIT - -package pg_query - -import "encoding/json" - -/* - * TableSampleClause - TABLESAMPLE appearing in a transformed FROM clause - * - * Unlike RangeTableSample, this is a subnode of the relevant RangeTblEntry. - */ -type TableSampleClause struct { - Tsmhandler Oid `json:"tsmhandler"` /* OID of the tablesample handler function */ - Args List `json:"args"` /* tablesample argument expression(s) */ - Repeatable Node `json:"repeatable"` /* REPEATABLE expression, or NULL if none */ -} - -func (node TableSampleClause) MarshalJSON() ([]byte, error) { - type TableSampleClauseMarshalAlias TableSampleClause - return json.Marshal(map[string]interface{}{ - "TableSampleClause": (*TableSampleClauseMarshalAlias)(&node), - }) -} - -func (node *TableSampleClause) UnmarshalJSON(input []byte) (err error) { - var fields map[string]json.RawMessage - - err = json.Unmarshal(input, &fields) - if err != nil { - return - } - - if fields["tsmhandler"] != nil { - err = json.Unmarshal(fields["tsmhandler"], &node.Tsmhandler) - if err != nil { - return - } - } - - if fields["args"] != nil { - node.Args.Items, err = UnmarshalNodeArrayJSON(fields["args"]) - if err != nil { - return - } - } - - if fields["repeatable"] != nil { - node.Repeatable, err = UnmarshalNodeJSON(fields["repeatable"]) - if err != nil { - return - } - } - - return -} diff --git a/nodes/table_sample_clause_deparse.go b/nodes/table_sample_clause_deparse.go deleted file mode 100644 index 090eaac9..00000000 --- a/nodes/table_sample_clause_deparse.go +++ /dev/null @@ -1,7 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -func (node TableSampleClause) Deparse() string { - panic("Not Implemented") -} diff --git a/nodes/table_sample_clause_fingerprint.go b/nodes/table_sample_clause_fingerprint.go deleted file mode 100644 index f3283b59..00000000 --- a/nodes/table_sample_clause_fingerprint.go +++ /dev/null @@ -1,38 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -import "strconv" - -func (node TableSampleClause) Fingerprint(ctx FingerprintContext, parentNode Node, parentFieldName string) { - ctx.WriteString("TableSampleClause") - - if len(node.Args.Items) > 0 { - subCtx := FingerprintSubContext{} - node.Args.Fingerprint(&subCtx, node, "Args") - - if len(subCtx.parts) > 0 { - ctx.WriteString("args") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if node.Repeatable != nil { - subCtx := FingerprintSubContext{} - node.Repeatable.Fingerprint(&subCtx, node, "Repeatable") - - if len(subCtx.parts) > 0 { - ctx.WriteString("repeatable") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if node.Tsmhandler != 0 { - ctx.WriteString("tsmhandler") - ctx.WriteString(strconv.Itoa(int(node.Tsmhandler))) - } -} diff --git a/nodes/target_entry.go b/nodes/target_entry.go deleted file mode 100644 index d62b4504..00000000 --- a/nodes/target_entry.go +++ /dev/null @@ -1,147 +0,0 @@ -// Auto-generated from postgres/src/include/nodes/primnodes.h - DO NOT EDIT - -package pg_query - -import "encoding/json" - -/*-------------------- - * TargetEntry - - * a target entry (used in query target lists) - * - * Strictly speaking, a TargetEntry isn't an expression node (since it can't - * be evaluated by ExecEvalExpr). But we treat it as one anyway, since in - * very many places it's convenient to process a whole query targetlist as a - * single expression tree. - * - * In a SELECT's targetlist, resno should always be equal to the item's - * ordinal position (counting from 1). However, in an INSERT or UPDATE - * targetlist, resno represents the attribute number of the destination - * column for the item; so there may be missing or out-of-order resnos. - * It is even legal to have duplicated resnos; consider - * UPDATE table SET arraycol[1] = ..., arraycol[2] = ..., ... - * The two meanings come together in the executor, because the planner - * transforms INSERT/UPDATE tlists into a normalized form with exactly - * one entry for each column of the destination table. Before that's - * happened, however, it is risky to assume that resno == position. - * Generally get_tle_by_resno() should be used rather than list_nth() - * to fetch tlist entries by resno, and only in SELECT should you assume - * that resno is a unique identifier. - * - * resname is required to represent the correct column name in non-resjunk - * entries of top-level SELECT targetlists, since it will be used as the - * column title sent to the frontend. In most other contexts it is only - * a debugging aid, and may be wrong or even NULL. (In particular, it may - * be wrong in a tlist from a stored rule, if the referenced column has been - * renamed by ALTER TABLE since the rule was made. Also, the planner tends - * to store NULL rather than look up a valid name for tlist entries in - * non-toplevel plan nodes.) In resjunk entries, resname should be either - * a specific system-generated name (such as "ctid") or NULL; anything else - * risks confusing ExecGetJunkAttribute! - * - * ressortgroupref is used in the representation of ORDER BY, GROUP BY, and - * DISTINCT items. Targetlist entries with ressortgroupref=0 are not - * sort/group items. If ressortgroupref>0, then this item is an ORDER BY, - * GROUP BY, and/or DISTINCT target value. No two entries in a targetlist - * may have the same nonzero ressortgroupref --- but there is no particular - * meaning to the nonzero values, except as tags. (For example, one must - * not assume that lower ressortgroupref means a more significant sort key.) - * The order of the associated SortGroupClause lists determine the semantics. - * - * resorigtbl/resorigcol identify the source of the column, if it is a - * simple reference to a column of a base table (or view). If it is not - * a simple reference, these fields are zeroes. - * - * If resjunk is true then the column is a working column (such as a sort key) - * that should be removed from the final output of the query. Resjunk columns - * must have resnos that cannot duplicate any regular column's resno. Also - * note that there are places that assume resjunk columns come after non-junk - * columns. - *-------------------- - */ -type TargetEntry struct { - Xpr Node `json:"xpr"` - Expr Node `json:"expr"` /* expression to evaluate */ - Resno AttrNumber `json:"resno"` /* attribute number (see notes above) */ - Resname *string `json:"resname"` /* name of the column (could be NULL) */ - Ressortgroupref Index `json:"ressortgroupref"` /* nonzero if referenced by a sort/group - * clause */ - - Resorigtbl Oid `json:"resorigtbl"` /* OID of column's source table */ - Resorigcol AttrNumber `json:"resorigcol"` /* column's number in source table */ - Resjunk bool `json:"resjunk"` /* set to true to eliminate the attribute from - * final target list */ -} - -func (node TargetEntry) MarshalJSON() ([]byte, error) { - type TargetEntryMarshalAlias TargetEntry - return json.Marshal(map[string]interface{}{ - "TargetEntry": (*TargetEntryMarshalAlias)(&node), - }) -} - -func (node *TargetEntry) UnmarshalJSON(input []byte) (err error) { - var fields map[string]json.RawMessage - - err = json.Unmarshal(input, &fields) - if err != nil { - return - } - - if fields["xpr"] != nil { - node.Xpr, err = UnmarshalNodeJSON(fields["xpr"]) - if err != nil { - return - } - } - - if fields["expr"] != nil { - node.Expr, err = UnmarshalNodeJSON(fields["expr"]) - if err != nil { - return - } - } - - if fields["resno"] != nil { - err = json.Unmarshal(fields["resno"], &node.Resno) - if err != nil { - return - } - } - - if fields["resname"] != nil { - err = json.Unmarshal(fields["resname"], &node.Resname) - if err != nil { - return - } - } - - if fields["ressortgroupref"] != nil { - err = json.Unmarshal(fields["ressortgroupref"], &node.Ressortgroupref) - if err != nil { - return - } - } - - if fields["resorigtbl"] != nil { - err = json.Unmarshal(fields["resorigtbl"], &node.Resorigtbl) - if err != nil { - return - } - } - - if fields["resorigcol"] != nil { - err = json.Unmarshal(fields["resorigcol"], &node.Resorigcol) - if err != nil { - return - } - } - - if fields["resjunk"] != nil { - err = json.Unmarshal(fields["resjunk"], &node.Resjunk) - if err != nil { - return - } - } - - return -} diff --git a/nodes/target_entry_deparse.go b/nodes/target_entry_deparse.go deleted file mode 100644 index 590811db..00000000 --- a/nodes/target_entry_deparse.go +++ /dev/null @@ -1,7 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -func (node TargetEntry) Deparse() string { - panic("Not Implemented") -} diff --git a/nodes/target_entry_fingerprint.go b/nodes/target_entry_fingerprint.go deleted file mode 100644 index 77e4bae3..00000000 --- a/nodes/target_entry_fingerprint.go +++ /dev/null @@ -1,63 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -import "strconv" - -func (node TargetEntry) Fingerprint(ctx FingerprintContext, parentNode Node, parentFieldName string) { - ctx.WriteString("TargetEntry") - - if node.Expr != nil { - subCtx := FingerprintSubContext{} - node.Expr.Fingerprint(&subCtx, node, "Expr") - - if len(subCtx.parts) > 0 { - ctx.WriteString("expr") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if node.Resjunk { - ctx.WriteString("resjunk") - ctx.WriteString(strconv.FormatBool(node.Resjunk)) - } - - if node.Resname != nil { - ctx.WriteString("resname") - ctx.WriteString(*node.Resname) - } - - if node.Resno != 0 { - ctx.WriteString("resno") - ctx.WriteString(strconv.Itoa(int(node.Resno))) - } - - if node.Resorigcol != 0 { - ctx.WriteString("resorigcol") - ctx.WriteString(strconv.Itoa(int(node.Resorigcol))) - } - - if node.Resorigtbl != 0 { - ctx.WriteString("resorigtbl") - ctx.WriteString(strconv.Itoa(int(node.Resorigtbl))) - } - - if node.Ressortgroupref != 0 { - ctx.WriteString("ressortgroupref") - ctx.WriteString(strconv.Itoa(int(node.Ressortgroupref))) - } - - if node.Xpr != nil { - subCtx := FingerprintSubContext{} - node.Xpr.Fingerprint(&subCtx, node, "Xpr") - - if len(subCtx.parts) > 0 { - ctx.WriteString("xpr") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } -} diff --git a/nodes/transaction_stmt.go b/nodes/transaction_stmt.go deleted file mode 100644 index 3a1a5dd4..00000000 --- a/nodes/transaction_stmt.go +++ /dev/null @@ -1,54 +0,0 @@ -// Auto-generated from postgres/src/include/nodes/parsenodes.h - DO NOT EDIT - -package pg_query - -import "encoding/json" - -/* ---------------------- - * {Begin|Commit|Rollback} Transaction Statement - * ---------------------- - */ -type TransactionStmt struct { - Kind TransactionStmtKind `json:"kind"` /* see above */ - Options List `json:"options"` /* for BEGIN/START and savepoint commands */ - Gid *string `json:"gid"` /* for two-phase-commit related commands */ -} - -func (node TransactionStmt) MarshalJSON() ([]byte, error) { - type TransactionStmtMarshalAlias TransactionStmt - return json.Marshal(map[string]interface{}{ - "TransactionStmt": (*TransactionStmtMarshalAlias)(&node), - }) -} - -func (node *TransactionStmt) UnmarshalJSON(input []byte) (err error) { - var fields map[string]json.RawMessage - - err = json.Unmarshal(input, &fields) - if err != nil { - return - } - - if fields["kind"] != nil { - err = json.Unmarshal(fields["kind"], &node.Kind) - if err != nil { - return - } - } - - if fields["options"] != nil { - node.Options.Items, err = UnmarshalNodeArrayJSON(fields["options"]) - if err != nil { - return - } - } - - if fields["gid"] != nil { - err = json.Unmarshal(fields["gid"], &node.Gid) - if err != nil { - return - } - } - - return -} diff --git a/nodes/transaction_stmt_deparse.go b/nodes/transaction_stmt_deparse.go deleted file mode 100644 index b60c5237..00000000 --- a/nodes/transaction_stmt_deparse.go +++ /dev/null @@ -1,7 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -func (node TransactionStmt) Deparse() string { - panic("Not Implemented") -} diff --git a/nodes/transaction_stmt_fingerprint.go b/nodes/transaction_stmt_fingerprint.go deleted file mode 100644 index 130dc80e..00000000 --- a/nodes/transaction_stmt_fingerprint.go +++ /dev/null @@ -1,17 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -import "strconv" - -func (node TransactionStmt) Fingerprint(ctx FingerprintContext, parentNode Node, parentFieldName string) { - ctx.WriteString("TransactionStmt") - // Intentionally ignoring node.Gid for fingerprinting - - if int(node.Kind) != 0 { - ctx.WriteString("kind") - ctx.WriteString(strconv.Itoa(int(node.Kind))) - } - - // Intentionally ignoring node.Options for fingerprinting -} diff --git a/nodes/transaction_stmt_kind.go b/nodes/transaction_stmt_kind.go deleted file mode 100644 index b7053ef7..00000000 --- a/nodes/transaction_stmt_kind.go +++ /dev/null @@ -1,22 +0,0 @@ -// Auto-generated from postgres/src/include/nodes/parsenodes.h - DO NOT EDIT - -package pg_query - -/* ---------------------- - * {Begin|Commit|Rollback} Transaction Statement - * ---------------------- - */ -type TransactionStmtKind uint - -const ( - TRANS_STMT_BEGIN TransactionStmtKind = iota - TRANS_STMT_START /* semantically identical to BEGIN */ - TRANS_STMT_COMMIT - TRANS_STMT_ROLLBACK - TRANS_STMT_SAVEPOINT - TRANS_STMT_RELEASE - TRANS_STMT_ROLLBACK_TO - TRANS_STMT_PREPARE - TRANS_STMT_COMMIT_PREPARED - TRANS_STMT_ROLLBACK_PREPARED -) diff --git a/nodes/trigger_transition.go b/nodes/trigger_transition.go deleted file mode 100644 index cb123f3c..00000000 --- a/nodes/trigger_transition.go +++ /dev/null @@ -1,58 +0,0 @@ -// Auto-generated from postgres/src/include/nodes/parsenodes.h - DO NOT EDIT - -package pg_query - -import "encoding/json" - -/* - * TriggerTransition - - * representation of transition row or table naming clause - * - * Only transition tables are initially supported in the syntax, and only for - * AFTER triggers, but other permutations are accepted by the parser so we can - * give a meaningful message from C code. - */ -type TriggerTransition struct { - Name *string `json:"name"` - IsNew bool `json:"isNew"` - IsTable bool `json:"isTable"` -} - -func (node TriggerTransition) MarshalJSON() ([]byte, error) { - type TriggerTransitionMarshalAlias TriggerTransition - return json.Marshal(map[string]interface{}{ - "TriggerTransition": (*TriggerTransitionMarshalAlias)(&node), - }) -} - -func (node *TriggerTransition) UnmarshalJSON(input []byte) (err error) { - var fields map[string]json.RawMessage - - err = json.Unmarshal(input, &fields) - if err != nil { - return - } - - if fields["name"] != nil { - err = json.Unmarshal(fields["name"], &node.Name) - if err != nil { - return - } - } - - if fields["isNew"] != nil { - err = json.Unmarshal(fields["isNew"], &node.IsNew) - if err != nil { - return - } - } - - if fields["isTable"] != nil { - err = json.Unmarshal(fields["isTable"], &node.IsTable) - if err != nil { - return - } - } - - return -} diff --git a/nodes/trigger_transition_deparse.go b/nodes/trigger_transition_deparse.go deleted file mode 100644 index 7305cdf6..00000000 --- a/nodes/trigger_transition_deparse.go +++ /dev/null @@ -1,7 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -func (node TriggerTransition) Deparse() string { - panic("Not Implemented") -} diff --git a/nodes/trigger_transition_fingerprint.go b/nodes/trigger_transition_fingerprint.go deleted file mode 100644 index a0c8e26c..00000000 --- a/nodes/trigger_transition_fingerprint.go +++ /dev/null @@ -1,24 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -import "strconv" - -func (node TriggerTransition) Fingerprint(ctx FingerprintContext, parentNode Node, parentFieldName string) { - ctx.WriteString("TriggerTransition") - - if node.IsNew { - ctx.WriteString("isNew") - ctx.WriteString(strconv.FormatBool(node.IsNew)) - } - - if node.IsTable { - ctx.WriteString("isTable") - ctx.WriteString(strconv.FormatBool(node.IsTable)) - } - - if node.Name != nil { - ctx.WriteString("name") - ctx.WriteString(*node.Name) - } -} diff --git a/nodes/truncate_stmt.go b/nodes/truncate_stmt.go deleted file mode 100644 index 5a8bfe27..00000000 --- a/nodes/truncate_stmt.go +++ /dev/null @@ -1,54 +0,0 @@ -// Auto-generated from postgres/src/include/nodes/parsenodes.h - DO NOT EDIT - -package pg_query - -import "encoding/json" - -/* ---------------------- - * Truncate Table Statement - * ---------------------- - */ -type TruncateStmt struct { - Relations List `json:"relations"` /* relations (RangeVars) to be truncated */ - RestartSeqs bool `json:"restart_seqs"` /* restart owned sequences? */ - Behavior DropBehavior `json:"behavior"` /* RESTRICT or CASCADE behavior */ -} - -func (node TruncateStmt) MarshalJSON() ([]byte, error) { - type TruncateStmtMarshalAlias TruncateStmt - return json.Marshal(map[string]interface{}{ - "TruncateStmt": (*TruncateStmtMarshalAlias)(&node), - }) -} - -func (node *TruncateStmt) UnmarshalJSON(input []byte) (err error) { - var fields map[string]json.RawMessage - - err = json.Unmarshal(input, &fields) - if err != nil { - return - } - - if fields["relations"] != nil { - node.Relations.Items, err = UnmarshalNodeArrayJSON(fields["relations"]) - if err != nil { - return - } - } - - if fields["restart_seqs"] != nil { - err = json.Unmarshal(fields["restart_seqs"], &node.RestartSeqs) - if err != nil { - return - } - } - - if fields["behavior"] != nil { - err = json.Unmarshal(fields["behavior"], &node.Behavior) - if err != nil { - return - } - } - - return -} diff --git a/nodes/truncate_stmt_deparse.go b/nodes/truncate_stmt_deparse.go deleted file mode 100644 index 3d662e23..00000000 --- a/nodes/truncate_stmt_deparse.go +++ /dev/null @@ -1,7 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -func (node TruncateStmt) Deparse() string { - panic("Not Implemented") -} diff --git a/nodes/truncate_stmt_fingerprint.go b/nodes/truncate_stmt_fingerprint.go deleted file mode 100644 index 5add9351..00000000 --- a/nodes/truncate_stmt_fingerprint.go +++ /dev/null @@ -1,31 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -import "strconv" - -func (node TruncateStmt) Fingerprint(ctx FingerprintContext, parentNode Node, parentFieldName string) { - ctx.WriteString("TruncateStmt") - - if int(node.Behavior) != 0 { - ctx.WriteString("behavior") - ctx.WriteString(strconv.Itoa(int(node.Behavior))) - } - - if len(node.Relations.Items) > 0 { - subCtx := FingerprintSubContext{} - node.Relations.Fingerprint(&subCtx, node, "Relations") - - if len(subCtx.parts) > 0 { - ctx.WriteString("relations") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if node.RestartSeqs { - ctx.WriteString("restart_seqs") - ctx.WriteString(strconv.FormatBool(node.RestartSeqs)) - } -} diff --git a/nodes/type_cast.go b/nodes/type_cast.go deleted file mode 100644 index 15541c1c..00000000 --- a/nodes/type_cast.go +++ /dev/null @@ -1,58 +0,0 @@ -// Auto-generated from postgres/src/include/nodes/parsenodes.h - DO NOT EDIT - -package pg_query - -import "encoding/json" - -/* - * TypeCast - a CAST expression - */ -type TypeCast struct { - Arg Node `json:"arg"` /* the expression being casted */ - TypeName *TypeName `json:"typeName"` /* the target type */ - Location int `json:"location"` /* token location, or -1 if unknown */ -} - -func (node TypeCast) MarshalJSON() ([]byte, error) { - type TypeCastMarshalAlias TypeCast - return json.Marshal(map[string]interface{}{ - "TypeCast": (*TypeCastMarshalAlias)(&node), - }) -} - -func (node *TypeCast) UnmarshalJSON(input []byte) (err error) { - var fields map[string]json.RawMessage - - err = json.Unmarshal(input, &fields) - if err != nil { - return - } - - if fields["arg"] != nil { - node.Arg, err = UnmarshalNodeJSON(fields["arg"]) - if err != nil { - return - } - } - - if fields["typeName"] != nil { - var nodePtr *Node - nodePtr, err = UnmarshalNodePtrJSON(fields["typeName"]) - if err != nil { - return - } - if nodePtr != nil && *nodePtr != nil { - val := (*nodePtr).(TypeName) - node.TypeName = &val - } - } - - if fields["location"] != nil { - err = json.Unmarshal(fields["location"], &node.Location) - if err != nil { - return - } - } - - return -} diff --git a/nodes/type_cast_deparse.go b/nodes/type_cast_deparse.go deleted file mode 100644 index ad2dd2c8..00000000 --- a/nodes/type_cast_deparse.go +++ /dev/null @@ -1,7 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -func (node TypeCast) Deparse() string { - panic("Not Implemented") -} diff --git a/nodes/type_cast_fingerprint.go b/nodes/type_cast_fingerprint.go deleted file mode 100644 index 402d8ca4..00000000 --- a/nodes/type_cast_fingerprint.go +++ /dev/null @@ -1,32 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -func (node TypeCast) Fingerprint(ctx FingerprintContext, parentNode Node, parentFieldName string) { - ctx.WriteString("TypeCast") - - if node.Arg != nil { - subCtx := FingerprintSubContext{} - node.Arg.Fingerprint(&subCtx, node, "Arg") - - if len(subCtx.parts) > 0 { - ctx.WriteString("arg") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - // Intentionally ignoring node.Location for fingerprinting - - if node.TypeName != nil { - subCtx := FingerprintSubContext{} - node.TypeName.Fingerprint(&subCtx, node, "TypeName") - - if len(subCtx.parts) > 0 { - ctx.WriteString("typeName") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } -} diff --git a/nodes/type_name.go b/nodes/type_name.go deleted file mode 100644 index 74038f9f..00000000 --- a/nodes/type_name.go +++ /dev/null @@ -1,103 +0,0 @@ -// Auto-generated from postgres/src/include/nodes/parsenodes.h - DO NOT EDIT - -package pg_query - -import "encoding/json" - -/* - * TypeName - specifies a type in definitions - * - * For TypeName structures generated internally, it is often easier to - * specify the type by OID than by name. If "names" is NIL then the - * actual type OID is given by typeOid, otherwise typeOid is unused. - * Similarly, if "typmods" is NIL then the actual typmod is expected to - * be prespecified in typemod, otherwise typemod is unused. - * - * If pct_type is TRUE, then names is actually a field name and we look up - * the type of that field. Otherwise (the normal case), names is a type - * name possibly qualified with schema and database name. - */ -type TypeName struct { - Names List `json:"names"` /* qualified name (list of Value strings) */ - TypeOid Oid `json:"typeOid"` /* type identified by OID */ - Setof bool `json:"setof"` /* is a set? */ - PctType bool `json:"pct_type"` /* %TYPE specified? */ - Typmods List `json:"typmods"` /* type modifier expression(s) */ - Typemod int32 `json:"typemod"` /* prespecified type modifier */ - ArrayBounds List `json:"arrayBounds"` /* array bounds */ - Location int `json:"location"` /* token location, or -1 if unknown */ -} - -func (node TypeName) MarshalJSON() ([]byte, error) { - type TypeNameMarshalAlias TypeName - return json.Marshal(map[string]interface{}{ - "TypeName": (*TypeNameMarshalAlias)(&node), - }) -} - -func (node *TypeName) UnmarshalJSON(input []byte) (err error) { - var fields map[string]json.RawMessage - - err = json.Unmarshal(input, &fields) - if err != nil { - return - } - - if fields["names"] != nil { - node.Names.Items, err = UnmarshalNodeArrayJSON(fields["names"]) - if err != nil { - return - } - } - - if fields["typeOid"] != nil { - err = json.Unmarshal(fields["typeOid"], &node.TypeOid) - if err != nil { - return - } - } - - if fields["setof"] != nil { - err = json.Unmarshal(fields["setof"], &node.Setof) - if err != nil { - return - } - } - - if fields["pct_type"] != nil { - err = json.Unmarshal(fields["pct_type"], &node.PctType) - if err != nil { - return - } - } - - if fields["typmods"] != nil { - node.Typmods.Items, err = UnmarshalNodeArrayJSON(fields["typmods"]) - if err != nil { - return - } - } - - if fields["typemod"] != nil { - err = json.Unmarshal(fields["typemod"], &node.Typemod) - if err != nil { - return - } - } - - if fields["arrayBounds"] != nil { - node.ArrayBounds.Items, err = UnmarshalNodeArrayJSON(fields["arrayBounds"]) - if err != nil { - return - } - } - - if fields["location"] != nil { - err = json.Unmarshal(fields["location"], &node.Location) - if err != nil { - return - } - } - - return -} diff --git a/nodes/type_name_deparse.go b/nodes/type_name_deparse.go deleted file mode 100644 index ca63349c..00000000 --- a/nodes/type_name_deparse.go +++ /dev/null @@ -1,7 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -func (node TypeName) Deparse() string { - panic("Not Implemented") -} diff --git a/nodes/type_name_fingerprint.go b/nodes/type_name_fingerprint.go deleted file mode 100644 index eed47ba6..00000000 --- a/nodes/type_name_fingerprint.go +++ /dev/null @@ -1,66 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -import "strconv" - -func (node TypeName) Fingerprint(ctx FingerprintContext, parentNode Node, parentFieldName string) { - ctx.WriteString("TypeName") - - if len(node.ArrayBounds.Items) > 0 { - subCtx := FingerprintSubContext{} - node.ArrayBounds.Fingerprint(&subCtx, node, "ArrayBounds") - - if len(subCtx.parts) > 0 { - ctx.WriteString("arrayBounds") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - // Intentionally ignoring node.Location for fingerprinting - - if len(node.Names.Items) > 0 { - subCtx := FingerprintSubContext{} - node.Names.Fingerprint(&subCtx, node, "Names") - - if len(subCtx.parts) > 0 { - ctx.WriteString("names") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if node.PctType { - ctx.WriteString("pct_type") - ctx.WriteString(strconv.FormatBool(node.PctType)) - } - - if node.Setof { - ctx.WriteString("setof") - ctx.WriteString(strconv.FormatBool(node.Setof)) - } - - if node.TypeOid != 0 { - ctx.WriteString("typeOid") - ctx.WriteString(strconv.Itoa(int(node.TypeOid))) - } - - if node.Typemod != 0 { - ctx.WriteString("typemod") - ctx.WriteString(strconv.Itoa(int(node.Typemod))) - } - - if len(node.Typmods.Items) > 0 { - subCtx := FingerprintSubContext{} - node.Typmods.Fingerprint(&subCtx, node, "Typmods") - - if len(subCtx.parts) > 0 { - ctx.WriteString("typmods") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } -} diff --git a/nodes/typedefs.go b/nodes/typedefs.go deleted file mode 100644 index 5b5ab87c..00000000 --- a/nodes/typedefs.go +++ /dev/null @@ -1,51 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -type AclMode uint32 - -type DistinctExpr OpExpr - -type NullIfExpr OpExpr - -type Selectivity float64 - -type Cost float64 - -type ParamListInfo ParamListInfoData - -type AttrNumber int16 - -type Pointer byte - -type Index uint64 - -type Offset int64 - -type regproc Oid - -type RegProcedure regproc - -type TransactionId uint32 - -type LocalTransactionId uint32 - -type SubTransactionId uint32 - -type MultiXactId TransactionId - -type MultiXactOffset uint32 - -type CommandId uint32 - -type Name *string - -type Datum uintptr - -type DatumPtr Datum - -type Oid uint64 - -type BlockNumber uint32 - -type BlockId BlockIdData diff --git a/nodes/unlisten_stmt.go b/nodes/unlisten_stmt.go deleted file mode 100644 index 526d76a8..00000000 --- a/nodes/unlisten_stmt.go +++ /dev/null @@ -1,38 +0,0 @@ -// Auto-generated from postgres/src/include/nodes/parsenodes.h - DO NOT EDIT - -package pg_query - -import "encoding/json" - -/* ---------------------- - * Unlisten Statement - * ---------------------- - */ -type UnlistenStmt struct { - Conditionname *string `json:"conditionname"` /* name to unlisten on, or NULL for all */ -} - -func (node UnlistenStmt) MarshalJSON() ([]byte, error) { - type UnlistenStmtMarshalAlias UnlistenStmt - return json.Marshal(map[string]interface{}{ - "UnlistenStmt": (*UnlistenStmtMarshalAlias)(&node), - }) -} - -func (node *UnlistenStmt) UnmarshalJSON(input []byte) (err error) { - var fields map[string]json.RawMessage - - err = json.Unmarshal(input, &fields) - if err != nil { - return - } - - if fields["conditionname"] != nil { - err = json.Unmarshal(fields["conditionname"], &node.Conditionname) - if err != nil { - return - } - } - - return -} diff --git a/nodes/unlisten_stmt_deparse.go b/nodes/unlisten_stmt_deparse.go deleted file mode 100644 index 7e0dc664..00000000 --- a/nodes/unlisten_stmt_deparse.go +++ /dev/null @@ -1,7 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -func (node UnlistenStmt) Deparse() string { - panic("Not Implemented") -} diff --git a/nodes/unlisten_stmt_fingerprint.go b/nodes/unlisten_stmt_fingerprint.go deleted file mode 100644 index 7662eb79..00000000 --- a/nodes/unlisten_stmt_fingerprint.go +++ /dev/null @@ -1,12 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -func (node UnlistenStmt) Fingerprint(ctx FingerprintContext, parentNode Node, parentFieldName string) { - ctx.WriteString("UnlistenStmt") - - if node.Conditionname != nil { - ctx.WriteString("conditionname") - ctx.WriteString(*node.Conditionname) - } -} diff --git a/nodes/update_stmt.go b/nodes/update_stmt.go deleted file mode 100644 index c758e821..00000000 --- a/nodes/update_stmt.go +++ /dev/null @@ -1,88 +0,0 @@ -// Auto-generated from postgres/src/include/nodes/parsenodes.h - DO NOT EDIT - -package pg_query - -import "encoding/json" - -/* ---------------------- - * Update Statement - * ---------------------- - */ -type UpdateStmt struct { - Relation *RangeVar `json:"relation"` /* relation to update */ - TargetList List `json:"targetList"` /* the target list (of ResTarget) */ - WhereClause Node `json:"whereClause"` /* qualifications */ - FromClause List `json:"fromClause"` /* optional from clause for more tables */ - ReturningList List `json:"returningList"` /* list of expressions to return */ - WithClause *WithClause `json:"withClause"` /* WITH clause */ -} - -func (node UpdateStmt) MarshalJSON() ([]byte, error) { - type UpdateStmtMarshalAlias UpdateStmt - return json.Marshal(map[string]interface{}{ - "UpdateStmt": (*UpdateStmtMarshalAlias)(&node), - }) -} - -func (node *UpdateStmt) UnmarshalJSON(input []byte) (err error) { - var fields map[string]json.RawMessage - - err = json.Unmarshal(input, &fields) - if err != nil { - return - } - - if fields["relation"] != nil { - var nodePtr *Node - nodePtr, err = UnmarshalNodePtrJSON(fields["relation"]) - if err != nil { - return - } - if nodePtr != nil && *nodePtr != nil { - val := (*nodePtr).(RangeVar) - node.Relation = &val - } - } - - if fields["targetList"] != nil { - node.TargetList.Items, err = UnmarshalNodeArrayJSON(fields["targetList"]) - if err != nil { - return - } - } - - if fields["whereClause"] != nil { - node.WhereClause, err = UnmarshalNodeJSON(fields["whereClause"]) - if err != nil { - return - } - } - - if fields["fromClause"] != nil { - node.FromClause.Items, err = UnmarshalNodeArrayJSON(fields["fromClause"]) - if err != nil { - return - } - } - - if fields["returningList"] != nil { - node.ReturningList.Items, err = UnmarshalNodeArrayJSON(fields["returningList"]) - if err != nil { - return - } - } - - if fields["withClause"] != nil { - var nodePtr *Node - nodePtr, err = UnmarshalNodePtrJSON(fields["withClause"]) - if err != nil { - return - } - if nodePtr != nil && *nodePtr != nil { - val := (*nodePtr).(WithClause) - node.WithClause = &val - } - } - - return -} diff --git a/nodes/update_stmt_deparse.go b/nodes/update_stmt_deparse.go deleted file mode 100644 index ba769bc1..00000000 --- a/nodes/update_stmt_deparse.go +++ /dev/null @@ -1,7 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -func (node UpdateStmt) Deparse() string { - panic("Not Implemented") -} diff --git a/nodes/update_stmt_fingerprint.go b/nodes/update_stmt_fingerprint.go deleted file mode 100644 index 232c6afb..00000000 --- a/nodes/update_stmt_fingerprint.go +++ /dev/null @@ -1,79 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -func (node UpdateStmt) Fingerprint(ctx FingerprintContext, parentNode Node, parentFieldName string) { - ctx.WriteString("UpdateStmt") - - if len(node.FromClause.Items) > 0 { - subCtx := FingerprintSubContext{} - node.FromClause.Fingerprint(&subCtx, node, "FromClause") - - if len(subCtx.parts) > 0 { - ctx.WriteString("fromClause") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if node.Relation != nil { - subCtx := FingerprintSubContext{} - node.Relation.Fingerprint(&subCtx, node, "Relation") - - if len(subCtx.parts) > 0 { - ctx.WriteString("relation") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if len(node.ReturningList.Items) > 0 { - subCtx := FingerprintSubContext{} - node.ReturningList.Fingerprint(&subCtx, node, "ReturningList") - - if len(subCtx.parts) > 0 { - ctx.WriteString("returningList") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if len(node.TargetList.Items) > 0 { - subCtx := FingerprintSubContext{} - node.TargetList.Fingerprint(&subCtx, node, "TargetList") - - if len(subCtx.parts) > 0 { - ctx.WriteString("targetList") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if node.WhereClause != nil { - subCtx := FingerprintSubContext{} - node.WhereClause.Fingerprint(&subCtx, node, "WhereClause") - - if len(subCtx.parts) > 0 { - ctx.WriteString("whereClause") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if node.WithClause != nil { - subCtx := FingerprintSubContext{} - node.WithClause.Fingerprint(&subCtx, node, "WithClause") - - if len(subCtx.parts) > 0 { - ctx.WriteString("withClause") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } -} diff --git a/nodes/vacuum_option.go b/nodes/vacuum_option.go deleted file mode 100644 index 39a3e220..00000000 --- a/nodes/vacuum_option.go +++ /dev/null @@ -1,24 +0,0 @@ -// Auto-generated from postgres/src/include/nodes/parsenodes.h - DO NOT EDIT - -package pg_query - -/* ---------------------- - * Vacuum and Analyze Statements - * - * Even though these are nominally two statements, it's convenient to use - * just one node type for both. Note that at least one of VACOPT_VACUUM - * and VACOPT_ANALYZE must be set in options. - * ---------------------- - */ -type VacuumOption uint - -const ( - VACOPT_VACUUM VacuumOption = iota - VACOPT_ANALYZE - VACOPT_VERBOSE - VACOPT_FREEZE - VACOPT_FULL - VACOPT_NOWAIT - VACOPT_SKIPTOAST - VACOPT_DISABLE_PAGE_SKIPPING -) diff --git a/nodes/vacuum_stmt.go b/nodes/vacuum_stmt.go deleted file mode 100644 index 50e93c03..00000000 --- a/nodes/vacuum_stmt.go +++ /dev/null @@ -1,63 +0,0 @@ -// Auto-generated from postgres/src/include/nodes/parsenodes.h - DO NOT EDIT - -package pg_query - -import "encoding/json" - -/* ---------------------- - * Vacuum and Analyze Statements - * - * Even though these are nominally two statements, it's convenient to use - * just one node type for both. Note that at least one of VACOPT_VACUUM - * and VACOPT_ANALYZE must be set in options. - * ---------------------- - */ -type VacuumStmt struct { - Options int `json:"options"` /* OR of VacuumOption flags */ - Relation *RangeVar `json:"relation"` /* single table to process, or NULL */ - VaCols List `json:"va_cols"` /* list of column names, or NIL for all */ -} - -func (node VacuumStmt) MarshalJSON() ([]byte, error) { - type VacuumStmtMarshalAlias VacuumStmt - return json.Marshal(map[string]interface{}{ - "VacuumStmt": (*VacuumStmtMarshalAlias)(&node), - }) -} - -func (node *VacuumStmt) UnmarshalJSON(input []byte) (err error) { - var fields map[string]json.RawMessage - - err = json.Unmarshal(input, &fields) - if err != nil { - return - } - - if fields["options"] != nil { - err = json.Unmarshal(fields["options"], &node.Options) - if err != nil { - return - } - } - - if fields["relation"] != nil { - var nodePtr *Node - nodePtr, err = UnmarshalNodePtrJSON(fields["relation"]) - if err != nil { - return - } - if nodePtr != nil && *nodePtr != nil { - val := (*nodePtr).(RangeVar) - node.Relation = &val - } - } - - if fields["va_cols"] != nil { - node.VaCols.Items, err = UnmarshalNodeArrayJSON(fields["va_cols"]) - if err != nil { - return - } - } - - return -} diff --git a/nodes/vacuum_stmt_deparse.go b/nodes/vacuum_stmt_deparse.go deleted file mode 100644 index acd2a405..00000000 --- a/nodes/vacuum_stmt_deparse.go +++ /dev/null @@ -1,7 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -func (node VacuumStmt) Deparse() string { - panic("Not Implemented") -} diff --git a/nodes/vacuum_stmt_fingerprint.go b/nodes/vacuum_stmt_fingerprint.go deleted file mode 100644 index 4e5cb5f0..00000000 --- a/nodes/vacuum_stmt_fingerprint.go +++ /dev/null @@ -1,38 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -import "strconv" - -func (node VacuumStmt) Fingerprint(ctx FingerprintContext, parentNode Node, parentFieldName string) { - ctx.WriteString("VacuumStmt") - - if node.Options != 0 { - ctx.WriteString("options") - ctx.WriteString(strconv.Itoa(int(node.Options))) - } - - if node.Relation != nil { - subCtx := FingerprintSubContext{} - node.Relation.Fingerprint(&subCtx, node, "Relation") - - if len(subCtx.parts) > 0 { - ctx.WriteString("relation") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if len(node.VaCols.Items) > 0 { - subCtx := FingerprintSubContext{} - node.VaCols.Fingerprint(&subCtx, node, "VaCols") - - if len(subCtx.parts) > 0 { - ctx.WriteString("va_cols") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } -} diff --git a/nodes/var.go b/nodes/var.go deleted file mode 100644 index 02bf8fae..00000000 --- a/nodes/var.go +++ /dev/null @@ -1,114 +0,0 @@ -// Auto-generated from postgres/src/include/nodes/primnodes.h - DO NOT EDIT - -package pg_query - -import "encoding/json" - -/* Symbols for the indexes of the special RTE entries in rules */ -type Var struct { - Xpr Node `json:"xpr"` - Varno Index `json:"varno"` /* index of this var's relation in the range - * table, or INNER_VAR/OUTER_VAR/INDEX_VAR */ - - Varattno AttrNumber `json:"varattno"` /* attribute number of this var, or zero for - * all */ - - Vartype Oid `json:"vartype"` /* pg_type OID for the type of this var */ - Vartypmod int32 `json:"vartypmod"` /* pg_attribute typmod value */ - Varcollid Oid `json:"varcollid"` /* OID of collation, or InvalidOid if none */ - Varlevelsup Index `json:"varlevelsup"` /* for subquery variables referencing outer - * relations; 0 in a normal var, >0 means N - * levels up */ - - Varnoold Index `json:"varnoold"` /* original value of varno, for debugging */ - Varoattno AttrNumber `json:"varoattno"` /* original value of varattno */ - Location int `json:"location"` /* token location, or -1 if unknown */ -} - -func (node Var) MarshalJSON() ([]byte, error) { - type VarMarshalAlias Var - return json.Marshal(map[string]interface{}{ - "Var": (*VarMarshalAlias)(&node), - }) -} - -func (node *Var) UnmarshalJSON(input []byte) (err error) { - var fields map[string]json.RawMessage - - err = json.Unmarshal(input, &fields) - if err != nil { - return - } - - if fields["xpr"] != nil { - node.Xpr, err = UnmarshalNodeJSON(fields["xpr"]) - if err != nil { - return - } - } - - if fields["varno"] != nil { - err = json.Unmarshal(fields["varno"], &node.Varno) - if err != nil { - return - } - } - - if fields["varattno"] != nil { - err = json.Unmarshal(fields["varattno"], &node.Varattno) - if err != nil { - return - } - } - - if fields["vartype"] != nil { - err = json.Unmarshal(fields["vartype"], &node.Vartype) - if err != nil { - return - } - } - - if fields["vartypmod"] != nil { - err = json.Unmarshal(fields["vartypmod"], &node.Vartypmod) - if err != nil { - return - } - } - - if fields["varcollid"] != nil { - err = json.Unmarshal(fields["varcollid"], &node.Varcollid) - if err != nil { - return - } - } - - if fields["varlevelsup"] != nil { - err = json.Unmarshal(fields["varlevelsup"], &node.Varlevelsup) - if err != nil { - return - } - } - - if fields["varnoold"] != nil { - err = json.Unmarshal(fields["varnoold"], &node.Varnoold) - if err != nil { - return - } - } - - if fields["varoattno"] != nil { - err = json.Unmarshal(fields["varoattno"], &node.Varoattno) - if err != nil { - return - } - } - - if fields["location"] != nil { - err = json.Unmarshal(fields["location"], &node.Location) - if err != nil { - return - } - } - - return -} diff --git a/nodes/var_deparse.go b/nodes/var_deparse.go deleted file mode 100644 index 3cd926b0..00000000 --- a/nodes/var_deparse.go +++ /dev/null @@ -1,7 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -func (node Var) Deparse() string { - panic("Not Implemented") -} diff --git a/nodes/var_fingerprint.go b/nodes/var_fingerprint.go deleted file mode 100644 index 861ff64b..00000000 --- a/nodes/var_fingerprint.go +++ /dev/null @@ -1,62 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -import "strconv" - -func (node Var) Fingerprint(ctx FingerprintContext, parentNode Node, parentFieldName string) { - ctx.WriteString("Var") - // Intentionally ignoring node.Location for fingerprinting - - if node.Varattno != 0 { - ctx.WriteString("varattno") - ctx.WriteString(strconv.Itoa(int(node.Varattno))) - } - - if node.Varcollid != 0 { - ctx.WriteString("varcollid") - ctx.WriteString(strconv.Itoa(int(node.Varcollid))) - } - - if node.Varlevelsup != 0 { - ctx.WriteString("varlevelsup") - ctx.WriteString(strconv.Itoa(int(node.Varlevelsup))) - } - - if node.Varno != 0 { - ctx.WriteString("varno") - ctx.WriteString(strconv.Itoa(int(node.Varno))) - } - - if node.Varnoold != 0 { - ctx.WriteString("varnoold") - ctx.WriteString(strconv.Itoa(int(node.Varnoold))) - } - - if node.Varoattno != 0 { - ctx.WriteString("varoattno") - ctx.WriteString(strconv.Itoa(int(node.Varoattno))) - } - - if node.Vartype != 0 { - ctx.WriteString("vartype") - ctx.WriteString(strconv.Itoa(int(node.Vartype))) - } - - if node.Vartypmod != 0 { - ctx.WriteString("vartypmod") - ctx.WriteString(strconv.Itoa(int(node.Vartypmod))) - } - - if node.Xpr != nil { - subCtx := FingerprintSubContext{} - node.Xpr.Fingerprint(&subCtx, node, "Xpr") - - if len(subCtx.parts) > 0 { - ctx.WriteString("xpr") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } -} diff --git a/nodes/varatt_external.go b/nodes/varatt_external.go deleted file mode 100644 index 1c26736e..00000000 --- a/nodes/varatt_external.go +++ /dev/null @@ -1,70 +0,0 @@ -// Auto-generated from postgres/src/include/postgres.h - DO NOT EDIT - -package pg_query - -import "encoding/json" - -/* - * struct varatt_external is a traditional "TOAST pointer", that is, the - * information needed to fetch a Datum stored out-of-line in a TOAST table. - * The data is compressed if and only if va_extsize < va_rawsize - VARHDRSZ. - * This struct must not contain any padding, because we sometimes compare - * these pointers using memcmp. - * - * Note that this information is stored unaligned within actual tuples, so - * you need to memcpy from the tuple into a local struct variable before - * you can look at these fields! (The reason we use memcmp is to avoid - * having to do that just to detect equality of two TOAST pointers...) - */ -type varatt_external struct { - VaRawsize int32 `json:"va_rawsize"` /* Original data size (includes header) */ - VaExtsize int32 `json:"va_extsize"` /* External saved size (doesn't) */ - VaValueid Oid `json:"va_valueid"` /* Unique ID of value within TOAST table */ - VaToastrelid Oid `json:"va_toastrelid"` /* RelID of TOAST table containing it */ -} - -func (node varatt_external) MarshalJSON() ([]byte, error) { - type varatt_externalMarshalAlias varatt_external - return json.Marshal(map[string]interface{}{ - "varatt_external": (*varatt_externalMarshalAlias)(&node), - }) -} - -func (node *varatt_external) UnmarshalJSON(input []byte) (err error) { - var fields map[string]json.RawMessage - - err = json.Unmarshal(input, &fields) - if err != nil { - return - } - - if fields["va_rawsize"] != nil { - err = json.Unmarshal(fields["va_rawsize"], &node.VaRawsize) - if err != nil { - return - } - } - - if fields["va_extsize"] != nil { - err = json.Unmarshal(fields["va_extsize"], &node.VaExtsize) - if err != nil { - return - } - } - - if fields["va_valueid"] != nil { - err = json.Unmarshal(fields["va_valueid"], &node.VaValueid) - if err != nil { - return - } - } - - if fields["va_toastrelid"] != nil { - err = json.Unmarshal(fields["va_toastrelid"], &node.VaToastrelid) - if err != nil { - return - } - } - - return -} diff --git a/nodes/varatt_external_deparse.go b/nodes/varatt_external_deparse.go deleted file mode 100644 index 764ca2fb..00000000 --- a/nodes/varatt_external_deparse.go +++ /dev/null @@ -1,7 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -func (node varatt_external) Deparse() string { - panic("Not Implemented") -} diff --git a/nodes/varatt_external_fingerprint.go b/nodes/varatt_external_fingerprint.go deleted file mode 100644 index 0c0a09b2..00000000 --- a/nodes/varatt_external_fingerprint.go +++ /dev/null @@ -1,29 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -import "strconv" - -func (node varatt_external) Fingerprint(ctx FingerprintContext, parentNode Node, parentFieldName string) { - ctx.WriteString("varatt_external") - - if node.VaExtsize != 0 { - ctx.WriteString("va_extsize") - ctx.WriteString(strconv.Itoa(int(node.VaExtsize))) - } - - if node.VaRawsize != 0 { - ctx.WriteString("va_rawsize") - ctx.WriteString(strconv.Itoa(int(node.VaRawsize))) - } - - if node.VaToastrelid != 0 { - ctx.WriteString("va_toastrelid") - ctx.WriteString(strconv.Itoa(int(node.VaToastrelid))) - } - - if node.VaValueid != 0 { - ctx.WriteString("va_valueid") - ctx.WriteString(strconv.Itoa(int(node.VaValueid))) - } -} diff --git a/nodes/variable_set_kind.go b/nodes/variable_set_kind.go deleted file mode 100644 index 388d08a3..00000000 --- a/nodes/variable_set_kind.go +++ /dev/null @@ -1,21 +0,0 @@ -// Auto-generated from postgres/src/include/nodes/parsenodes.h - DO NOT EDIT - -package pg_query - -/* ---------------------- - * SET Statement (includes RESET) - * - * "SET var TO DEFAULT" and "RESET var" are semantically equivalent, but we - * preserve the distinction in VariableSetKind for CreateCommandTag(). - * ---------------------- - */ -type VariableSetKind uint - -const ( - VAR_SET_VALUE VariableSetKind = iota /* SET var = value */ - VAR_SET_DEFAULT /* SET var TO DEFAULT */ - VAR_SET_CURRENT /* SET var FROM CURRENT */ - VAR_SET_MULTI /* special case for SET TRANSACTION ... */ - VAR_RESET /* RESET var */ - VAR_RESET_ALL /* RESET ALL */ -) diff --git a/nodes/variable_set_stmt.go b/nodes/variable_set_stmt.go deleted file mode 100644 index f3af04ea..00000000 --- a/nodes/variable_set_stmt.go +++ /dev/null @@ -1,58 +0,0 @@ -// Auto-generated from postgres/src/include/nodes/parsenodes.h - DO NOT EDIT - -package pg_query - -import "encoding/json" - -type VariableSetStmt struct { - Kind VariableSetKind `json:"kind"` - Name *string `json:"name"` /* variable to be set */ - Args List `json:"args"` /* List of A_Const nodes */ - IsLocal bool `json:"is_local"` /* SET LOCAL? */ -} - -func (node VariableSetStmt) MarshalJSON() ([]byte, error) { - type VariableSetStmtMarshalAlias VariableSetStmt - return json.Marshal(map[string]interface{}{ - "VariableSetStmt": (*VariableSetStmtMarshalAlias)(&node), - }) -} - -func (node *VariableSetStmt) UnmarshalJSON(input []byte) (err error) { - var fields map[string]json.RawMessage - - err = json.Unmarshal(input, &fields) - if err != nil { - return - } - - if fields["kind"] != nil { - err = json.Unmarshal(fields["kind"], &node.Kind) - if err != nil { - return - } - } - - if fields["name"] != nil { - err = json.Unmarshal(fields["name"], &node.Name) - if err != nil { - return - } - } - - if fields["args"] != nil { - node.Args.Items, err = UnmarshalNodeArrayJSON(fields["args"]) - if err != nil { - return - } - } - - if fields["is_local"] != nil { - err = json.Unmarshal(fields["is_local"], &node.IsLocal) - if err != nil { - return - } - } - - return -} diff --git a/nodes/variable_set_stmt_deparse.go b/nodes/variable_set_stmt_deparse.go deleted file mode 100644 index 5471bf1c..00000000 --- a/nodes/variable_set_stmt_deparse.go +++ /dev/null @@ -1,7 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -func (node VariableSetStmt) Deparse() string { - panic("Not Implemented") -} diff --git a/nodes/variable_set_stmt_fingerprint.go b/nodes/variable_set_stmt_fingerprint.go deleted file mode 100644 index 2d99ae9d..00000000 --- a/nodes/variable_set_stmt_fingerprint.go +++ /dev/null @@ -1,36 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -import "strconv" - -func (node VariableSetStmt) Fingerprint(ctx FingerprintContext, parentNode Node, parentFieldName string) { - ctx.WriteString("VariableSetStmt") - - if len(node.Args.Items) > 0 { - subCtx := FingerprintSubContext{} - node.Args.Fingerprint(&subCtx, node, "Args") - - if len(subCtx.parts) > 0 { - ctx.WriteString("args") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if node.IsLocal { - ctx.WriteString("is_local") - ctx.WriteString(strconv.FormatBool(node.IsLocal)) - } - - if int(node.Kind) != 0 { - ctx.WriteString("kind") - ctx.WriteString(strconv.Itoa(int(node.Kind))) - } - - if node.Name != nil { - ctx.WriteString("name") - ctx.WriteString(*node.Name) - } -} diff --git a/nodes/variable_show_stmt.go b/nodes/variable_show_stmt.go deleted file mode 100644 index fadf3500..00000000 --- a/nodes/variable_show_stmt.go +++ /dev/null @@ -1,38 +0,0 @@ -// Auto-generated from postgres/src/include/nodes/parsenodes.h - DO NOT EDIT - -package pg_query - -import "encoding/json" - -/* ---------------------- - * Show Statement - * ---------------------- - */ -type VariableShowStmt struct { - Name *string `json:"name"` -} - -func (node VariableShowStmt) MarshalJSON() ([]byte, error) { - type VariableShowStmtMarshalAlias VariableShowStmt - return json.Marshal(map[string]interface{}{ - "VariableShowStmt": (*VariableShowStmtMarshalAlias)(&node), - }) -} - -func (node *VariableShowStmt) UnmarshalJSON(input []byte) (err error) { - var fields map[string]json.RawMessage - - err = json.Unmarshal(input, &fields) - if err != nil { - return - } - - if fields["name"] != nil { - err = json.Unmarshal(fields["name"], &node.Name) - if err != nil { - return - } - } - - return -} diff --git a/nodes/variable_show_stmt_deparse.go b/nodes/variable_show_stmt_deparse.go deleted file mode 100644 index 3d43a8ec..00000000 --- a/nodes/variable_show_stmt_deparse.go +++ /dev/null @@ -1,7 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -func (node VariableShowStmt) Deparse() string { - panic("Not Implemented") -} diff --git a/nodes/variable_show_stmt_fingerprint.go b/nodes/variable_show_stmt_fingerprint.go deleted file mode 100644 index 5a0f20dd..00000000 --- a/nodes/variable_show_stmt_fingerprint.go +++ /dev/null @@ -1,12 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -func (node VariableShowStmt) Fingerprint(ctx FingerprintContext, parentNode Node, parentFieldName string) { - ctx.WriteString("VariableShowStmt") - - if node.Name != nil { - ctx.WriteString("name") - ctx.WriteString(*node.Name) - } -} diff --git a/nodes/vartag_external.go b/nodes/vartag_external.go deleted file mode 100644 index 61e11ba8..00000000 --- a/nodes/vartag_external.go +++ /dev/null @@ -1,17 +0,0 @@ -// Auto-generated from postgres/src/include/postgres.h - DO NOT EDIT - -package pg_query - -/* - * Type tag for the various sorts of "TOAST pointer" datums. The peculiar - * value for VARTAG_ONDISK comes from a requirement for on-disk compatibility - * with a previous notion that the tag field was the pointer datum's length. - */ -type vartag_external uint - -const ( - VARTAG_INDIRECT vartag_external = iota - VARTAG_EXPANDED_RO - VARTAG_EXPANDED_RW - VARTAG_ONDISK -) diff --git a/nodes/view_check_option.go b/nodes/view_check_option.go deleted file mode 100644 index fb85d72d..00000000 --- a/nodes/view_check_option.go +++ /dev/null @@ -1,15 +0,0 @@ -// Auto-generated from postgres/src/include/nodes/parsenodes.h - DO NOT EDIT - -package pg_query - -/* ---------------------- - * Create View Statement - * ---------------------- - */ -type ViewCheckOption uint - -const ( - NO_CHECK_OPTION ViewCheckOption = iota - LOCAL_CHECK_OPTION - CASCADED_CHECK_OPTION -) diff --git a/nodes/view_stmt.go b/nodes/view_stmt.go deleted file mode 100644 index 10244d2d..00000000 --- a/nodes/view_stmt.go +++ /dev/null @@ -1,83 +0,0 @@ -// Auto-generated from postgres/src/include/nodes/parsenodes.h - DO NOT EDIT - -package pg_query - -import "encoding/json" - -/* ---------------------- - * Create View Statement - * ---------------------- - */ -type ViewStmt struct { - View *RangeVar `json:"view"` /* the view to be created */ - Aliases List `json:"aliases"` /* target column names */ - Query Node `json:"query"` /* the SELECT query (as a raw parse tree) */ - Replace bool `json:"replace"` /* replace an existing view? */ - Options List `json:"options"` /* options from WITH clause */ - WithCheckOption ViewCheckOption `json:"withCheckOption"` /* WITH CHECK OPTION */ -} - -func (node ViewStmt) MarshalJSON() ([]byte, error) { - type ViewStmtMarshalAlias ViewStmt - return json.Marshal(map[string]interface{}{ - "ViewStmt": (*ViewStmtMarshalAlias)(&node), - }) -} - -func (node *ViewStmt) UnmarshalJSON(input []byte) (err error) { - var fields map[string]json.RawMessage - - err = json.Unmarshal(input, &fields) - if err != nil { - return - } - - if fields["view"] != nil { - var nodePtr *Node - nodePtr, err = UnmarshalNodePtrJSON(fields["view"]) - if err != nil { - return - } - if nodePtr != nil && *nodePtr != nil { - val := (*nodePtr).(RangeVar) - node.View = &val - } - } - - if fields["aliases"] != nil { - node.Aliases.Items, err = UnmarshalNodeArrayJSON(fields["aliases"]) - if err != nil { - return - } - } - - if fields["query"] != nil { - node.Query, err = UnmarshalNodeJSON(fields["query"]) - if err != nil { - return - } - } - - if fields["replace"] != nil { - err = json.Unmarshal(fields["replace"], &node.Replace) - if err != nil { - return - } - } - - if fields["options"] != nil { - node.Options.Items, err = UnmarshalNodeArrayJSON(fields["options"]) - if err != nil { - return - } - } - - if fields["withCheckOption"] != nil { - err = json.Unmarshal(fields["withCheckOption"], &node.WithCheckOption) - if err != nil { - return - } - } - - return -} diff --git a/nodes/view_stmt_deparse.go b/nodes/view_stmt_deparse.go deleted file mode 100644 index 4d58e280..00000000 --- a/nodes/view_stmt_deparse.go +++ /dev/null @@ -1,7 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -func (node ViewStmt) Deparse() string { - panic("Not Implemented") -} diff --git a/nodes/view_stmt_fingerprint.go b/nodes/view_stmt_fingerprint.go deleted file mode 100644 index 65fd7dab..00000000 --- a/nodes/view_stmt_fingerprint.go +++ /dev/null @@ -1,67 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -import "strconv" - -func (node ViewStmt) Fingerprint(ctx FingerprintContext, parentNode Node, parentFieldName string) { - ctx.WriteString("ViewStmt") - - if len(node.Aliases.Items) > 0 { - subCtx := FingerprintSubContext{} - node.Aliases.Fingerprint(&subCtx, node, "Aliases") - - if len(subCtx.parts) > 0 { - ctx.WriteString("aliases") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if len(node.Options.Items) > 0 { - subCtx := FingerprintSubContext{} - node.Options.Fingerprint(&subCtx, node, "Options") - - if len(subCtx.parts) > 0 { - ctx.WriteString("options") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if node.Query != nil { - subCtx := FingerprintSubContext{} - node.Query.Fingerprint(&subCtx, node, "Query") - - if len(subCtx.parts) > 0 { - ctx.WriteString("query") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if node.Replace { - ctx.WriteString("replace") - ctx.WriteString(strconv.FormatBool(node.Replace)) - } - - if node.View != nil { - subCtx := FingerprintSubContext{} - node.View.Fingerprint(&subCtx, node, "View") - - if len(subCtx.parts) > 0 { - ctx.WriteString("view") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if int(node.WithCheckOption) != 0 { - ctx.WriteString("withCheckOption") - ctx.WriteString(strconv.Itoa(int(node.WithCheckOption))) - } -} diff --git a/nodes/wco_kind.go b/nodes/wco_kind.go deleted file mode 100644 index 7ecbd7f9..00000000 --- a/nodes/wco_kind.go +++ /dev/null @@ -1,18 +0,0 @@ -// Auto-generated from postgres/src/include/nodes/parsenodes.h - DO NOT EDIT - -package pg_query - -/* - * WithCheckOption - - * representation of WITH CHECK OPTION checks to be applied to new tuples - * when inserting/updating an auto-updatable view, or RLS WITH CHECK - * policies to be applied when inserting/updating a relation with RLS. - */ -type WCOKind uint - -const ( - WCO_VIEW_CHECK WCOKind = iota /* WCO on an auto-updatable view */ - WCO_RLS_INSERT_CHECK /* RLS INSERT WITH CHECK policy */ - WCO_RLS_UPDATE_CHECK /* RLS UPDATE WITH CHECK policy */ - WCO_RLS_CONFLICT_CHECK /* RLS ON CONFLICT DO UPDATE USING policy */ -) diff --git a/nodes/window_clause.go b/nodes/window_clause.go deleted file mode 100644 index 7f1675ac..00000000 --- a/nodes/window_clause.go +++ /dev/null @@ -1,112 +0,0 @@ -// Auto-generated from postgres/src/include/nodes/parsenodes.h - DO NOT EDIT - -package pg_query - -import "encoding/json" - -/* - * WindowClause - - * transformed representation of WINDOW and OVER clauses - * - * A parsed Query's windowClause list contains these structs. "name" is set - * if the clause originally came from WINDOW, and is NULL if it originally - * was an OVER clause (but note that we collapse out duplicate OVERs). - * partitionClause and orderClause are lists of SortGroupClause structs. - * winref is an ID number referenced by WindowFunc nodes; it must be unique - * among the members of a Query's windowClause list. - * When refname isn't null, the partitionClause is always copied from there; - * the orderClause might or might not be copied (see copiedOrder); the framing - * options are never copied, per spec. - */ -type WindowClause struct { - Name *string `json:"name"` /* window name (NULL in an OVER clause) */ - Refname *string `json:"refname"` /* referenced window name, if any */ - PartitionClause List `json:"partitionClause"` /* PARTITION BY list */ - OrderClause List `json:"orderClause"` /* ORDER BY list */ - FrameOptions int `json:"frameOptions"` /* frame_clause options, see WindowDef */ - StartOffset Node `json:"startOffset"` /* expression for starting bound, if any */ - EndOffset Node `json:"endOffset"` /* expression for ending bound, if any */ - Winref Index `json:"winref"` /* ID referenced by window functions */ - CopiedOrder bool `json:"copiedOrder"` /* did we copy orderClause from refname? */ -} - -func (node WindowClause) MarshalJSON() ([]byte, error) { - type WindowClauseMarshalAlias WindowClause - return json.Marshal(map[string]interface{}{ - "WindowClause": (*WindowClauseMarshalAlias)(&node), - }) -} - -func (node *WindowClause) UnmarshalJSON(input []byte) (err error) { - var fields map[string]json.RawMessage - - err = json.Unmarshal(input, &fields) - if err != nil { - return - } - - if fields["name"] != nil { - err = json.Unmarshal(fields["name"], &node.Name) - if err != nil { - return - } - } - - if fields["refname"] != nil { - err = json.Unmarshal(fields["refname"], &node.Refname) - if err != nil { - return - } - } - - if fields["partitionClause"] != nil { - node.PartitionClause.Items, err = UnmarshalNodeArrayJSON(fields["partitionClause"]) - if err != nil { - return - } - } - - if fields["orderClause"] != nil { - node.OrderClause.Items, err = UnmarshalNodeArrayJSON(fields["orderClause"]) - if err != nil { - return - } - } - - if fields["frameOptions"] != nil { - err = json.Unmarshal(fields["frameOptions"], &node.FrameOptions) - if err != nil { - return - } - } - - if fields["startOffset"] != nil { - node.StartOffset, err = UnmarshalNodeJSON(fields["startOffset"]) - if err != nil { - return - } - } - - if fields["endOffset"] != nil { - node.EndOffset, err = UnmarshalNodeJSON(fields["endOffset"]) - if err != nil { - return - } - } - - if fields["winref"] != nil { - err = json.Unmarshal(fields["winref"], &node.Winref) - if err != nil { - return - } - } - - if fields["copiedOrder"] != nil { - err = json.Unmarshal(fields["copiedOrder"], &node.CopiedOrder) - if err != nil { - return - } - } - - return -} diff --git a/nodes/window_clause_deparse.go b/nodes/window_clause_deparse.go deleted file mode 100644 index c43fcc0d..00000000 --- a/nodes/window_clause_deparse.go +++ /dev/null @@ -1,7 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -func (node WindowClause) Deparse() string { - panic("Not Implemented") -} diff --git a/nodes/window_clause_fingerprint.go b/nodes/window_clause_fingerprint.go deleted file mode 100644 index ac1e8c78..00000000 --- a/nodes/window_clause_fingerprint.go +++ /dev/null @@ -1,82 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -import "strconv" - -func (node WindowClause) Fingerprint(ctx FingerprintContext, parentNode Node, parentFieldName string) { - ctx.WriteString("WindowClause") - - if node.CopiedOrder { - ctx.WriteString("copiedOrder") - ctx.WriteString(strconv.FormatBool(node.CopiedOrder)) - } - - if node.EndOffset != nil { - subCtx := FingerprintSubContext{} - node.EndOffset.Fingerprint(&subCtx, node, "EndOffset") - - if len(subCtx.parts) > 0 { - ctx.WriteString("endOffset") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if node.FrameOptions != 0 { - ctx.WriteString("frameOptions") - ctx.WriteString(strconv.Itoa(int(node.FrameOptions))) - } - - if node.Name != nil { - ctx.WriteString("name") - ctx.WriteString(*node.Name) - } - - if len(node.OrderClause.Items) > 0 { - subCtx := FingerprintSubContext{} - node.OrderClause.Fingerprint(&subCtx, node, "OrderClause") - - if len(subCtx.parts) > 0 { - ctx.WriteString("orderClause") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if len(node.PartitionClause.Items) > 0 { - subCtx := FingerprintSubContext{} - node.PartitionClause.Fingerprint(&subCtx, node, "PartitionClause") - - if len(subCtx.parts) > 0 { - ctx.WriteString("partitionClause") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if node.Refname != nil { - ctx.WriteString("refname") - ctx.WriteString(*node.Refname) - } - - if node.StartOffset != nil { - subCtx := FingerprintSubContext{} - node.StartOffset.Fingerprint(&subCtx, node, "StartOffset") - - if len(subCtx.parts) > 0 { - ctx.WriteString("startOffset") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if node.Winref != 0 { - ctx.WriteString("winref") - ctx.WriteString(strconv.Itoa(int(node.Winref))) - } -} diff --git a/nodes/window_def.go b/nodes/window_def.go deleted file mode 100644 index 2278986b..00000000 --- a/nodes/window_def.go +++ /dev/null @@ -1,98 +0,0 @@ -// Auto-generated from postgres/src/include/nodes/parsenodes.h - DO NOT EDIT - -package pg_query - -import "encoding/json" - -/* - * WindowDef - raw representation of WINDOW and OVER clauses - * - * For entries in a WINDOW list, "name" is the window name being defined. - * For OVER clauses, we use "name" for the "OVER window" syntax, or "refname" - * for the "OVER (window)" syntax, which is subtly different --- the latter - * implies overriding the window frame clause. - */ -type WindowDef struct { - Name *string `json:"name"` /* window's own name */ - Refname *string `json:"refname"` /* referenced window name, if any */ - PartitionClause List `json:"partitionClause"` /* PARTITION BY expression list */ - OrderClause List `json:"orderClause"` /* ORDER BY (list of SortBy) */ - FrameOptions int `json:"frameOptions"` /* frame_clause options, see below */ - StartOffset Node `json:"startOffset"` /* expression for starting bound, if any */ - EndOffset Node `json:"endOffset"` /* expression for ending bound, if any */ - Location int `json:"location"` /* parse location, or -1 if none/unknown */ -} - -func (node WindowDef) MarshalJSON() ([]byte, error) { - type WindowDefMarshalAlias WindowDef - return json.Marshal(map[string]interface{}{ - "WindowDef": (*WindowDefMarshalAlias)(&node), - }) -} - -func (node *WindowDef) UnmarshalJSON(input []byte) (err error) { - var fields map[string]json.RawMessage - - err = json.Unmarshal(input, &fields) - if err != nil { - return - } - - if fields["name"] != nil { - err = json.Unmarshal(fields["name"], &node.Name) - if err != nil { - return - } - } - - if fields["refname"] != nil { - err = json.Unmarshal(fields["refname"], &node.Refname) - if err != nil { - return - } - } - - if fields["partitionClause"] != nil { - node.PartitionClause.Items, err = UnmarshalNodeArrayJSON(fields["partitionClause"]) - if err != nil { - return - } - } - - if fields["orderClause"] != nil { - node.OrderClause.Items, err = UnmarshalNodeArrayJSON(fields["orderClause"]) - if err != nil { - return - } - } - - if fields["frameOptions"] != nil { - err = json.Unmarshal(fields["frameOptions"], &node.FrameOptions) - if err != nil { - return - } - } - - if fields["startOffset"] != nil { - node.StartOffset, err = UnmarshalNodeJSON(fields["startOffset"]) - if err != nil { - return - } - } - - if fields["endOffset"] != nil { - node.EndOffset, err = UnmarshalNodeJSON(fields["endOffset"]) - if err != nil { - return - } - } - - if fields["location"] != nil { - err = json.Unmarshal(fields["location"], &node.Location) - if err != nil { - return - } - } - - return -} diff --git a/nodes/window_def_deparse.go b/nodes/window_def_deparse.go deleted file mode 100644 index 6bc327a9..00000000 --- a/nodes/window_def_deparse.go +++ /dev/null @@ -1,7 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -func (node WindowDef) Deparse() string { - panic("Not Implemented") -} diff --git a/nodes/window_def_fingerprint.go b/nodes/window_def_fingerprint.go deleted file mode 100644 index 555ec32c..00000000 --- a/nodes/window_def_fingerprint.go +++ /dev/null @@ -1,74 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -import "strconv" - -func (node WindowDef) Fingerprint(ctx FingerprintContext, parentNode Node, parentFieldName string) { - ctx.WriteString("WindowDef") - - if node.EndOffset != nil { - subCtx := FingerprintSubContext{} - node.EndOffset.Fingerprint(&subCtx, node, "EndOffset") - - if len(subCtx.parts) > 0 { - ctx.WriteString("endOffset") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if node.FrameOptions != 0 { - ctx.WriteString("frameOptions") - ctx.WriteString(strconv.Itoa(int(node.FrameOptions))) - } - - // Intentionally ignoring node.Location for fingerprinting - - if node.Name != nil { - ctx.WriteString("name") - ctx.WriteString(*node.Name) - } - - if len(node.OrderClause.Items) > 0 { - subCtx := FingerprintSubContext{} - node.OrderClause.Fingerprint(&subCtx, node, "OrderClause") - - if len(subCtx.parts) > 0 { - ctx.WriteString("orderClause") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if len(node.PartitionClause.Items) > 0 { - subCtx := FingerprintSubContext{} - node.PartitionClause.Fingerprint(&subCtx, node, "PartitionClause") - - if len(subCtx.parts) > 0 { - ctx.WriteString("partitionClause") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if node.Refname != nil { - ctx.WriteString("refname") - ctx.WriteString(*node.Refname) - } - - if node.StartOffset != nil { - subCtx := FingerprintSubContext{} - node.StartOffset.Fingerprint(&subCtx, node, "StartOffset") - - if len(subCtx.parts) > 0 { - ctx.WriteString("startOffset") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } -} diff --git a/nodes/window_func.go b/nodes/window_func.go deleted file mode 100644 index 73087c2e..00000000 --- a/nodes/window_func.go +++ /dev/null @@ -1,117 +0,0 @@ -// Auto-generated from postgres/src/include/nodes/primnodes.h - DO NOT EDIT - -package pg_query - -import "encoding/json" - -/* - * WindowFunc - */ -type WindowFunc struct { - Xpr Node `json:"xpr"` - Winfnoid Oid `json:"winfnoid"` /* pg_proc Oid of the function */ - Wintype Oid `json:"wintype"` /* type Oid of result of the window function */ - Wincollid Oid `json:"wincollid"` /* OID of collation of result */ - Inputcollid Oid `json:"inputcollid"` /* OID of collation that function should use */ - Args List `json:"args"` /* arguments to the window function */ - Aggfilter Node `json:"aggfilter"` /* FILTER expression, if any */ - Winref Index `json:"winref"` /* index of associated WindowClause */ - Winstar bool `json:"winstar"` /* TRUE if argument list was really '*' */ - Winagg bool `json:"winagg"` /* is function a simple aggregate? */ - Location int `json:"location"` /* token location, or -1 if unknown */ -} - -func (node WindowFunc) MarshalJSON() ([]byte, error) { - type WindowFuncMarshalAlias WindowFunc - return json.Marshal(map[string]interface{}{ - "WindowFunc": (*WindowFuncMarshalAlias)(&node), - }) -} - -func (node *WindowFunc) UnmarshalJSON(input []byte) (err error) { - var fields map[string]json.RawMessage - - err = json.Unmarshal(input, &fields) - if err != nil { - return - } - - if fields["xpr"] != nil { - node.Xpr, err = UnmarshalNodeJSON(fields["xpr"]) - if err != nil { - return - } - } - - if fields["winfnoid"] != nil { - err = json.Unmarshal(fields["winfnoid"], &node.Winfnoid) - if err != nil { - return - } - } - - if fields["wintype"] != nil { - err = json.Unmarshal(fields["wintype"], &node.Wintype) - if err != nil { - return - } - } - - if fields["wincollid"] != nil { - err = json.Unmarshal(fields["wincollid"], &node.Wincollid) - if err != nil { - return - } - } - - if fields["inputcollid"] != nil { - err = json.Unmarshal(fields["inputcollid"], &node.Inputcollid) - if err != nil { - return - } - } - - if fields["args"] != nil { - node.Args.Items, err = UnmarshalNodeArrayJSON(fields["args"]) - if err != nil { - return - } - } - - if fields["aggfilter"] != nil { - node.Aggfilter, err = UnmarshalNodeJSON(fields["aggfilter"]) - if err != nil { - return - } - } - - if fields["winref"] != nil { - err = json.Unmarshal(fields["winref"], &node.Winref) - if err != nil { - return - } - } - - if fields["winstar"] != nil { - err = json.Unmarshal(fields["winstar"], &node.Winstar) - if err != nil { - return - } - } - - if fields["winagg"] != nil { - err = json.Unmarshal(fields["winagg"], &node.Winagg) - if err != nil { - return - } - } - - if fields["location"] != nil { - err = json.Unmarshal(fields["location"], &node.Location) - if err != nil { - return - } - } - - return -} diff --git a/nodes/window_func_deparse.go b/nodes/window_func_deparse.go deleted file mode 100644 index 04cf528b..00000000 --- a/nodes/window_func_deparse.go +++ /dev/null @@ -1,7 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -func (node WindowFunc) Deparse() string { - panic("Not Implemented") -} diff --git a/nodes/window_func_fingerprint.go b/nodes/window_func_fingerprint.go deleted file mode 100644 index 2750d116..00000000 --- a/nodes/window_func_fingerprint.go +++ /dev/null @@ -1,82 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -import "strconv" - -func (node WindowFunc) Fingerprint(ctx FingerprintContext, parentNode Node, parentFieldName string) { - ctx.WriteString("WindowFunc") - - if node.Aggfilter != nil { - subCtx := FingerprintSubContext{} - node.Aggfilter.Fingerprint(&subCtx, node, "Aggfilter") - - if len(subCtx.parts) > 0 { - ctx.WriteString("aggfilter") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if len(node.Args.Items) > 0 { - subCtx := FingerprintSubContext{} - node.Args.Fingerprint(&subCtx, node, "Args") - - if len(subCtx.parts) > 0 { - ctx.WriteString("args") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if node.Inputcollid != 0 { - ctx.WriteString("inputcollid") - ctx.WriteString(strconv.Itoa(int(node.Inputcollid))) - } - - // Intentionally ignoring node.Location for fingerprinting - - if node.Winagg { - ctx.WriteString("winagg") - ctx.WriteString(strconv.FormatBool(node.Winagg)) - } - - if node.Wincollid != 0 { - ctx.WriteString("wincollid") - ctx.WriteString(strconv.Itoa(int(node.Wincollid))) - } - - if node.Winfnoid != 0 { - ctx.WriteString("winfnoid") - ctx.WriteString(strconv.Itoa(int(node.Winfnoid))) - } - - if node.Winref != 0 { - ctx.WriteString("winref") - ctx.WriteString(strconv.Itoa(int(node.Winref))) - } - - if node.Winstar { - ctx.WriteString("winstar") - ctx.WriteString(strconv.FormatBool(node.Winstar)) - } - - if node.Wintype != 0 { - ctx.WriteString("wintype") - ctx.WriteString(strconv.Itoa(int(node.Wintype))) - } - - if node.Xpr != nil { - subCtx := FingerprintSubContext{} - node.Xpr.Fingerprint(&subCtx, node, "Xpr") - - if len(subCtx.parts) > 0 { - ctx.WriteString("xpr") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } -} diff --git a/nodes/with_check_option.go b/nodes/with_check_option.go deleted file mode 100644 index dd66f6bb..00000000 --- a/nodes/with_check_option.go +++ /dev/null @@ -1,66 +0,0 @@ -// Auto-generated from postgres/src/include/nodes/parsenodes.h - DO NOT EDIT - -package pg_query - -import "encoding/json" - -type WithCheckOption struct { - Kind WCOKind `json:"kind"` /* kind of WCO */ - Relname *string `json:"relname"` /* name of relation that specified the WCO */ - Polname *string `json:"polname"` /* name of RLS policy being checked */ - Qual Node `json:"qual"` /* constraint qual to check */ - Cascaded bool `json:"cascaded"` /* true for a cascaded WCO on a view */ -} - -func (node WithCheckOption) MarshalJSON() ([]byte, error) { - type WithCheckOptionMarshalAlias WithCheckOption - return json.Marshal(map[string]interface{}{ - "WithCheckOption": (*WithCheckOptionMarshalAlias)(&node), - }) -} - -func (node *WithCheckOption) UnmarshalJSON(input []byte) (err error) { - var fields map[string]json.RawMessage - - err = json.Unmarshal(input, &fields) - if err != nil { - return - } - - if fields["kind"] != nil { - err = json.Unmarshal(fields["kind"], &node.Kind) - if err != nil { - return - } - } - - if fields["relname"] != nil { - err = json.Unmarshal(fields["relname"], &node.Relname) - if err != nil { - return - } - } - - if fields["polname"] != nil { - err = json.Unmarshal(fields["polname"], &node.Polname) - if err != nil { - return - } - } - - if fields["qual"] != nil { - node.Qual, err = UnmarshalNodeJSON(fields["qual"]) - if err != nil { - return - } - } - - if fields["cascaded"] != nil { - err = json.Unmarshal(fields["cascaded"], &node.Cascaded) - if err != nil { - return - } - } - - return -} diff --git a/nodes/with_check_option_deparse.go b/nodes/with_check_option_deparse.go deleted file mode 100644 index 012c841c..00000000 --- a/nodes/with_check_option_deparse.go +++ /dev/null @@ -1,7 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -func (node WithCheckOption) Deparse() string { - panic("Not Implemented") -} diff --git a/nodes/with_check_option_fingerprint.go b/nodes/with_check_option_fingerprint.go deleted file mode 100644 index f4542405..00000000 --- a/nodes/with_check_option_fingerprint.go +++ /dev/null @@ -1,41 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -import "strconv" - -func (node WithCheckOption) Fingerprint(ctx FingerprintContext, parentNode Node, parentFieldName string) { - ctx.WriteString("WithCheckOption") - - if node.Cascaded { - ctx.WriteString("cascaded") - ctx.WriteString(strconv.FormatBool(node.Cascaded)) - } - - if int(node.Kind) != 0 { - ctx.WriteString("kind") - ctx.WriteString(strconv.Itoa(int(node.Kind))) - } - - if node.Polname != nil { - ctx.WriteString("polname") - ctx.WriteString(*node.Polname) - } - - if node.Qual != nil { - subCtx := FingerprintSubContext{} - node.Qual.Fingerprint(&subCtx, node, "Qual") - - if len(subCtx.parts) > 0 { - ctx.WriteString("qual") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if node.Relname != nil { - ctx.WriteString("relname") - ctx.WriteString(*node.Relname) - } -} diff --git a/nodes/with_clause.go b/nodes/with_clause.go deleted file mode 100644 index de91e4d8..00000000 --- a/nodes/with_clause.go +++ /dev/null @@ -1,57 +0,0 @@ -// Auto-generated from postgres/src/include/nodes/parsenodes.h - DO NOT EDIT - -package pg_query - -import "encoding/json" - -/* - * WithClause - - * representation of WITH clause - * - * Note: WithClause does not propagate into the Query representation; - * but CommonTableExpr does. - */ -type WithClause struct { - Ctes List `json:"ctes"` /* list of CommonTableExprs */ - Recursive bool `json:"recursive"` /* true = WITH RECURSIVE */ - Location int `json:"location"` /* token location, or -1 if unknown */ -} - -func (node WithClause) MarshalJSON() ([]byte, error) { - type WithClauseMarshalAlias WithClause - return json.Marshal(map[string]interface{}{ - "WithClause": (*WithClauseMarshalAlias)(&node), - }) -} - -func (node *WithClause) UnmarshalJSON(input []byte) (err error) { - var fields map[string]json.RawMessage - - err = json.Unmarshal(input, &fields) - if err != nil { - return - } - - if fields["ctes"] != nil { - node.Ctes.Items, err = UnmarshalNodeArrayJSON(fields["ctes"]) - if err != nil { - return - } - } - - if fields["recursive"] != nil { - err = json.Unmarshal(fields["recursive"], &node.Recursive) - if err != nil { - return - } - } - - if fields["location"] != nil { - err = json.Unmarshal(fields["location"], &node.Location) - if err != nil { - return - } - } - - return -} diff --git a/nodes/with_clause_deparse.go b/nodes/with_clause_deparse.go deleted file mode 100644 index 8515640e..00000000 --- a/nodes/with_clause_deparse.go +++ /dev/null @@ -1,7 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -func (node WithClause) Deparse() string { - panic("Not Implemented") -} diff --git a/nodes/with_clause_fingerprint.go b/nodes/with_clause_fingerprint.go deleted file mode 100644 index 1798cde1..00000000 --- a/nodes/with_clause_fingerprint.go +++ /dev/null @@ -1,27 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -import "strconv" - -func (node WithClause) Fingerprint(ctx FingerprintContext, parentNode Node, parentFieldName string) { - ctx.WriteString("WithClause") - - if len(node.Ctes.Items) > 0 { - subCtx := FingerprintSubContext{} - node.Ctes.Fingerprint(&subCtx, node, "Ctes") - - if len(subCtx.parts) > 0 { - ctx.WriteString("ctes") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - // Intentionally ignoring node.Location for fingerprinting - - if node.Recursive { - ctx.WriteString("recursive") - ctx.WriteString(strconv.FormatBool(node.Recursive)) - } -} diff --git a/nodes/xml_expr.go b/nodes/xml_expr.go deleted file mode 100644 index e6b88157..00000000 --- a/nodes/xml_expr.go +++ /dev/null @@ -1,106 +0,0 @@ -// Auto-generated from postgres/src/include/nodes/primnodes.h - DO NOT EDIT - -package pg_query - -import "encoding/json" - -type XmlExpr struct { - Xpr Node `json:"xpr"` - Op XmlExprOp `json:"op"` /* xml function ID */ - Name *string `json:"name"` /* name in xml(NAME foo ...) syntaxes */ - NamedArgs List `json:"named_args"` /* non-XML expressions for xml_attributes */ - ArgNames List `json:"arg_names"` /* parallel list of Value strings */ - Args List `json:"args"` /* list of expressions */ - Xmloption XmlOptionType `json:"xmloption"` /* DOCUMENT or CONTENT */ - Type Oid `json:"type"` /* target type/typmod for XMLSERIALIZE */ - Typmod int32 `json:"typmod"` - Location int `json:"location"` /* token location, or -1 if unknown */ -} - -func (node XmlExpr) MarshalJSON() ([]byte, error) { - type XmlExprMarshalAlias XmlExpr - return json.Marshal(map[string]interface{}{ - "XmlExpr": (*XmlExprMarshalAlias)(&node), - }) -} - -func (node *XmlExpr) UnmarshalJSON(input []byte) (err error) { - var fields map[string]json.RawMessage - - err = json.Unmarshal(input, &fields) - if err != nil { - return - } - - if fields["xpr"] != nil { - node.Xpr, err = UnmarshalNodeJSON(fields["xpr"]) - if err != nil { - return - } - } - - if fields["op"] != nil { - err = json.Unmarshal(fields["op"], &node.Op) - if err != nil { - return - } - } - - if fields["name"] != nil { - err = json.Unmarshal(fields["name"], &node.Name) - if err != nil { - return - } - } - - if fields["named_args"] != nil { - node.NamedArgs.Items, err = UnmarshalNodeArrayJSON(fields["named_args"]) - if err != nil { - return - } - } - - if fields["arg_names"] != nil { - node.ArgNames.Items, err = UnmarshalNodeArrayJSON(fields["arg_names"]) - if err != nil { - return - } - } - - if fields["args"] != nil { - node.Args.Items, err = UnmarshalNodeArrayJSON(fields["args"]) - if err != nil { - return - } - } - - if fields["xmloption"] != nil { - err = json.Unmarshal(fields["xmloption"], &node.Xmloption) - if err != nil { - return - } - } - - if fields["type"] != nil { - err = json.Unmarshal(fields["type"], &node.Type) - if err != nil { - return - } - } - - if fields["typmod"] != nil { - err = json.Unmarshal(fields["typmod"], &node.Typmod) - if err != nil { - return - } - } - - if fields["location"] != nil { - err = json.Unmarshal(fields["location"], &node.Location) - if err != nil { - return - } - } - - return -} diff --git a/nodes/xml_expr_deparse.go b/nodes/xml_expr_deparse.go deleted file mode 100644 index f73ef832..00000000 --- a/nodes/xml_expr_deparse.go +++ /dev/null @@ -1,7 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -func (node XmlExpr) Deparse() string { - panic("Not Implemented") -} diff --git a/nodes/xml_expr_fingerprint.go b/nodes/xml_expr_fingerprint.go deleted file mode 100644 index a4dfb996..00000000 --- a/nodes/xml_expr_fingerprint.go +++ /dev/null @@ -1,83 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -import "strconv" - -func (node XmlExpr) Fingerprint(ctx FingerprintContext, parentNode Node, parentFieldName string) { - ctx.WriteString("XmlExpr") - - if len(node.ArgNames.Items) > 0 { - subCtx := FingerprintSubContext{} - node.ArgNames.Fingerprint(&subCtx, node, "ArgNames") - - if len(subCtx.parts) > 0 { - ctx.WriteString("arg_names") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if len(node.Args.Items) > 0 { - subCtx := FingerprintSubContext{} - node.Args.Fingerprint(&subCtx, node, "Args") - - if len(subCtx.parts) > 0 { - ctx.WriteString("args") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - // Intentionally ignoring node.Location for fingerprinting - - if node.Name != nil { - ctx.WriteString("name") - ctx.WriteString(*node.Name) - } - - if len(node.NamedArgs.Items) > 0 { - subCtx := FingerprintSubContext{} - node.NamedArgs.Fingerprint(&subCtx, node, "NamedArgs") - - if len(subCtx.parts) > 0 { - ctx.WriteString("named_args") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if int(node.Op) != 0 { - ctx.WriteString("op") - ctx.WriteString(strconv.Itoa(int(node.Op))) - } - - if node.Type != 0 { - ctx.WriteString("type") - ctx.WriteString(strconv.Itoa(int(node.Type))) - } - - if node.Typmod != 0 { - ctx.WriteString("typmod") - ctx.WriteString(strconv.Itoa(int(node.Typmod))) - } - - if int(node.Xmloption) != 0 { - ctx.WriteString("xmloption") - ctx.WriteString(strconv.Itoa(int(node.Xmloption))) - } - - if node.Xpr != nil { - subCtx := FingerprintSubContext{} - node.Xpr.Fingerprint(&subCtx, node, "Xpr") - - if len(subCtx.parts) > 0 { - ctx.WriteString("xpr") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } -} diff --git a/nodes/xml_expr_op.go b/nodes/xml_expr_op.go deleted file mode 100644 index 4bd3de87..00000000 --- a/nodes/xml_expr_op.go +++ /dev/null @@ -1,27 +0,0 @@ -// Auto-generated from postgres/src/include/nodes/primnodes.h - DO NOT EDIT - -package pg_query - -/* - * XmlExpr - various SQL/XML functions requiring special grammar productions - * - * 'name' carries the "NAME foo" argument (already XML-escaped). - * 'named_args' and 'arg_names' represent an xml_attribute list. - * 'args' carries all other arguments. - * - * Note: result type/typmod/collation are not stored, but can be deduced - * from the XmlExprOp. The type/typmod fields are just used for display - * purposes, and are NOT necessarily the true result type of the node. - */ -type XmlExprOp uint - -const ( - IS_XMLCONCAT XmlExprOp = iota /* XMLCONCAT(args) */ - IS_XMLELEMENT /* XMLELEMENT(name, xml_attributes, args) */ - IS_XMLFOREST /* XMLFOREST(xml_attributes) */ - IS_XMLPARSE /* XMLPARSE(text, is_doc, preserve_ws) */ - IS_XMLPI /* XMLPI(name [, args]) */ - IS_XMLROOT /* XMLROOT(xml, version, standalone) */ - IS_XMLSERIALIZE /* XMLSERIALIZE(is_document, xmlval) */ - IS_DOCUMENT /* xmlval IS DOCUMENT */ -) diff --git a/nodes/xml_option_type.go b/nodes/xml_option_type.go deleted file mode 100644 index 652fb0f9..00000000 --- a/nodes/xml_option_type.go +++ /dev/null @@ -1,10 +0,0 @@ -// Auto-generated from postgres/src/include/nodes/primnodes.h - DO NOT EDIT - -package pg_query - -type XmlOptionType uint - -const ( - XMLOPTION_DOCUMENT XmlOptionType = iota - XMLOPTION_CONTENT -) diff --git a/nodes/xml_serialize.go b/nodes/xml_serialize.go deleted file mode 100644 index 2d29dc24..00000000 --- a/nodes/xml_serialize.go +++ /dev/null @@ -1,66 +0,0 @@ -// Auto-generated from postgres/src/include/nodes/parsenodes.h - DO NOT EDIT - -package pg_query - -import "encoding/json" - -/* - * XMLSERIALIZE (in raw parse tree only) - */ -type XmlSerialize struct { - Xmloption XmlOptionType `json:"xmloption"` /* DOCUMENT or CONTENT */ - Expr Node `json:"expr"` - TypeName *TypeName `json:"typeName"` - Location int `json:"location"` /* token location, or -1 if unknown */ -} - -func (node XmlSerialize) MarshalJSON() ([]byte, error) { - type XmlSerializeMarshalAlias XmlSerialize - return json.Marshal(map[string]interface{}{ - "XmlSerialize": (*XmlSerializeMarshalAlias)(&node), - }) -} - -func (node *XmlSerialize) UnmarshalJSON(input []byte) (err error) { - var fields map[string]json.RawMessage - - err = json.Unmarshal(input, &fields) - if err != nil { - return - } - - if fields["xmloption"] != nil { - err = json.Unmarshal(fields["xmloption"], &node.Xmloption) - if err != nil { - return - } - } - - if fields["expr"] != nil { - node.Expr, err = UnmarshalNodeJSON(fields["expr"]) - if err != nil { - return - } - } - - if fields["typeName"] != nil { - var nodePtr *Node - nodePtr, err = UnmarshalNodePtrJSON(fields["typeName"]) - if err != nil { - return - } - if nodePtr != nil && *nodePtr != nil { - val := (*nodePtr).(TypeName) - node.TypeName = &val - } - } - - if fields["location"] != nil { - err = json.Unmarshal(fields["location"], &node.Location) - if err != nil { - return - } - } - - return -} diff --git a/nodes/xml_serialize_deparse.go b/nodes/xml_serialize_deparse.go deleted file mode 100644 index 29ea9df6..00000000 --- a/nodes/xml_serialize_deparse.go +++ /dev/null @@ -1,7 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -func (node XmlSerialize) Deparse() string { - panic("Not Implemented") -} diff --git a/nodes/xml_serialize_fingerprint.go b/nodes/xml_serialize_fingerprint.go deleted file mode 100644 index 557ee467..00000000 --- a/nodes/xml_serialize_fingerprint.go +++ /dev/null @@ -1,39 +0,0 @@ -// Auto-generated - DO NOT EDIT - -package pg_query - -import "strconv" - -func (node XmlSerialize) Fingerprint(ctx FingerprintContext, parentNode Node, parentFieldName string) { - ctx.WriteString("XmlSerialize") - - if node.Expr != nil { - subCtx := FingerprintSubContext{} - node.Expr.Fingerprint(&subCtx, node, "Expr") - - if len(subCtx.parts) > 0 { - ctx.WriteString("expr") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - // Intentionally ignoring node.Location for fingerprinting - - if node.TypeName != nil { - subCtx := FingerprintSubContext{} - node.TypeName.Fingerprint(&subCtx, node, "TypeName") - - if len(subCtx.parts) > 0 { - ctx.WriteString("typeName") - for _, part := range subCtx.parts { - ctx.WriteString(part) - } - } - } - - if int(node.Xmloption) != 0 { - ctx.WriteString("xmloption") - ctx.WriteString(strconv.Itoa(int(node.Xmloption))) - } -} diff --git a/parse_test.go b/parse_test.go index a5107da8..ad1120aa 100644 --- a/parse_test.go +++ b/parse_test.go @@ -7,8 +7,9 @@ import ( "sync" "testing" - "github.com/kr/pretty" "github.com/lfittl/pg_query_go" + "github.com/google/go-cmp/cmp" + "google.golang.org/protobuf/testing/protocmp" nodes "github.com/lfittl/pg_query_go/nodes" util "github.com/lfittl/pg_query_go/util" ) @@ -16,31 +17,51 @@ import ( var parseTests = []struct { input string expectedJSON string - expectedTree pg_query.ParsetreeList + expectedTree *nodes.Node }{ { "SELECT 1", - `[{"RawStmt": {"stmt": {"SelectStmt": {"targetList": [{"ResTarget": {"val": {"A_Const": {"val": ` + - `{"Integer": {"ival": 1}}, "location": 7}}, "location": 7}}], "op": 0}}}}]`, - pg_query.ParsetreeList{ - Statements: []nodes.Node{ - nodes.RawStmt{ - Stmt: nodes.SelectStmt{ - TargetList: util.MakeListNode([]nodes.Node{ - nodes.ResTarget{ - Val: nodes.A_Const{ - Val: util.MakeIntNode(1), - Location: 7, + `[{"RawStmt":{"stmt":{"SelectStmt":{"targetList":[{"ResTarget":{"val":{"A_Const":{"val":` + + `{"Integer":{"ival":1}},"location":7}},"location":7}}]}}}}]`, + &nodes.Node{ + Node: &nodes.Node_List{ + List: &nodes.List{ + Items: []*nodes.Node{ + &nodes.Node{ + Node: &nodes.Node_RawStmt{ + RawStmt: &nodes.RawStmt{ + Stmt: &nodes.Node{ + Node: &nodes.Node_SelectStmt{ + SelectStmt: &nodes.SelectStmt{ + TargetList: []*nodes.Node{ + &nodes.Node{ + Node: &nodes.Node_ResTarget{ + ResTarget: &nodes.ResTarget{ + Val: &nodes.Node{ + Node: &nodes.Node_AConst{ + AConst: &nodes.A_Const{ + Val: util.MakeIntNode(1), + Location: 7, + }, + }, + }, + Location: 7, + }, + }, + }, + }, + }, + }, + }, }, - Location: 7, }, - }), + }, }, }, }, }, }, - { + /*{ "SELECT * FROM x WHERE z = 1", `[{"RawStmt": {"stmt": {"SelectStmt": {"targetList": [{"ResTarget": {"val": {"ColumnRef": {"fields": ` + `[{"A_Star": {}}], "location": 7}}, "location": 7}}], "fromClause": [{"RangeVar": ` + @@ -668,7 +689,7 @@ var parseTests = []struct { }, }, }, - }, + },*/ } func TestParse(t *testing.T) { @@ -683,9 +704,9 @@ func TestParse(t *testing.T) { actualTree, err := pg_query.Parse(test.input) if err != nil { - t.Errorf("Unmarshal(%s)\nerror %s\n\n", actualJSON, err) - } else if !reflect.DeepEqual(actualTree, test.expectedTree) { - t.Errorf("Unmarshal(%s)\ndiff %s\n\n", actualJSON, pretty.Diff(test.expectedTree, actualTree)) + t.Errorf("protobuf error %s\n\n", err) + } else if diff := cmp.Diff(actualTree, test.expectedTree, protocmp.Transform()); diff != "" { + t.Errorf("protobuf unexpected difference:\n%v", diff) } } } diff --git a/parser/contrib_pgcrypto_sha1.c b/parser/contrib_pgcrypto_sha1.c deleted file mode 100644 index 8800a403..00000000 --- a/parser/contrib_pgcrypto_sha1.c +++ /dev/null @@ -1,353 +0,0 @@ -/*-------------------------------------------------------------------- - * Symbols referenced in this file: - * - sha1_result - * - sha1_pad - * - sha1_step - * - _K - * - sha1_init - * - sha1_loop - *-------------------------------------------------------------------- - */ - -/* $KAME: sha1.c,v 1.3 2000/02/22 14:01:18 itojun Exp $ */ - -/* - * Copyright (C) 1995, 1996, 1997, and 1998 WIDE Project. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the project nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * contrib/pgcrypto/sha1.c - */ -/* - * FIPS pub 180-1: Secure Hash Algorithm (SHA-1) - * based on: http://www.itl.nist.gov/fipspubs/fip180-1.htm - * implemented by Jun-ichiro itojun Itoh - */ - -#include "postgres.h" - -#include - -#include "sha1.h" - -/* constant table */ -static __thread uint32 _K[] = {0x5a827999, 0x6ed9eba1, 0x8f1bbcdc, 0xca62c1d6}; - - -#define K(t) _K[(t) / 20] - -#define F0(b, c, d) (((b) & (c)) | ((~(b)) & (d))) -#define F1(b, c, d) (((b) ^ (c)) ^ (d)) -#define F2(b, c, d) (((b) & (c)) | ((b) & (d)) | ((c) & (d))) -#define F3(b, c, d) (((b) ^ (c)) ^ (d)) - -#define S(n, x) (((x) << (n)) | ((x) >> (32 - (n)))) - -#define H(n) (ctxt->h.b32[(n)]) -#define COUNT (ctxt->count) -#define BCOUNT (ctxt->c.b64[0] / 8) -#define W(n) (ctxt->m.b32[(n)]) - -#define PUTBYTE(x) \ -do { \ - ctxt->m.b8[(COUNT % 64)] = (x); \ - COUNT++; \ - COUNT %= 64; \ - ctxt->c.b64[0] += 8; \ - if (COUNT % 64 == 0) \ - sha1_step(ctxt); \ -} while (0) - -#define PUTPAD(x) \ -do { \ - ctxt->m.b8[(COUNT % 64)] = (x); \ - COUNT++; \ - COUNT %= 64; \ - if (COUNT % 64 == 0) \ - sha1_step(ctxt); \ -} while (0) - -static void sha1_step(struct sha1_ctxt *); - -static void -sha1_step(struct sha1_ctxt *ctxt) -{ - uint32 a, - b, - c, - d, - e; - size_t t, - s; - uint32 tmp; - -#ifndef WORDS_BIGENDIAN - struct sha1_ctxt tctxt; - - memmove(&tctxt.m.b8[0], &ctxt->m.b8[0], 64); - ctxt->m.b8[0] = tctxt.m.b8[3]; - ctxt->m.b8[1] = tctxt.m.b8[2]; - ctxt->m.b8[2] = tctxt.m.b8[1]; - ctxt->m.b8[3] = tctxt.m.b8[0]; - ctxt->m.b8[4] = tctxt.m.b8[7]; - ctxt->m.b8[5] = tctxt.m.b8[6]; - ctxt->m.b8[6] = tctxt.m.b8[5]; - ctxt->m.b8[7] = tctxt.m.b8[4]; - ctxt->m.b8[8] = tctxt.m.b8[11]; - ctxt->m.b8[9] = tctxt.m.b8[10]; - ctxt->m.b8[10] = tctxt.m.b8[9]; - ctxt->m.b8[11] = tctxt.m.b8[8]; - ctxt->m.b8[12] = tctxt.m.b8[15]; - ctxt->m.b8[13] = tctxt.m.b8[14]; - ctxt->m.b8[14] = tctxt.m.b8[13]; - ctxt->m.b8[15] = tctxt.m.b8[12]; - ctxt->m.b8[16] = tctxt.m.b8[19]; - ctxt->m.b8[17] = tctxt.m.b8[18]; - ctxt->m.b8[18] = tctxt.m.b8[17]; - ctxt->m.b8[19] = tctxt.m.b8[16]; - ctxt->m.b8[20] = tctxt.m.b8[23]; - ctxt->m.b8[21] = tctxt.m.b8[22]; - ctxt->m.b8[22] = tctxt.m.b8[21]; - ctxt->m.b8[23] = tctxt.m.b8[20]; - ctxt->m.b8[24] = tctxt.m.b8[27]; - ctxt->m.b8[25] = tctxt.m.b8[26]; - ctxt->m.b8[26] = tctxt.m.b8[25]; - ctxt->m.b8[27] = tctxt.m.b8[24]; - ctxt->m.b8[28] = tctxt.m.b8[31]; - ctxt->m.b8[29] = tctxt.m.b8[30]; - ctxt->m.b8[30] = tctxt.m.b8[29]; - ctxt->m.b8[31] = tctxt.m.b8[28]; - ctxt->m.b8[32] = tctxt.m.b8[35]; - ctxt->m.b8[33] = tctxt.m.b8[34]; - ctxt->m.b8[34] = tctxt.m.b8[33]; - ctxt->m.b8[35] = tctxt.m.b8[32]; - ctxt->m.b8[36] = tctxt.m.b8[39]; - ctxt->m.b8[37] = tctxt.m.b8[38]; - ctxt->m.b8[38] = tctxt.m.b8[37]; - ctxt->m.b8[39] = tctxt.m.b8[36]; - ctxt->m.b8[40] = tctxt.m.b8[43]; - ctxt->m.b8[41] = tctxt.m.b8[42]; - ctxt->m.b8[42] = tctxt.m.b8[41]; - ctxt->m.b8[43] = tctxt.m.b8[40]; - ctxt->m.b8[44] = tctxt.m.b8[47]; - ctxt->m.b8[45] = tctxt.m.b8[46]; - ctxt->m.b8[46] = tctxt.m.b8[45]; - ctxt->m.b8[47] = tctxt.m.b8[44]; - ctxt->m.b8[48] = tctxt.m.b8[51]; - ctxt->m.b8[49] = tctxt.m.b8[50]; - ctxt->m.b8[50] = tctxt.m.b8[49]; - ctxt->m.b8[51] = tctxt.m.b8[48]; - ctxt->m.b8[52] = tctxt.m.b8[55]; - ctxt->m.b8[53] = tctxt.m.b8[54]; - ctxt->m.b8[54] = tctxt.m.b8[53]; - ctxt->m.b8[55] = tctxt.m.b8[52]; - ctxt->m.b8[56] = tctxt.m.b8[59]; - ctxt->m.b8[57] = tctxt.m.b8[58]; - ctxt->m.b8[58] = tctxt.m.b8[57]; - ctxt->m.b8[59] = tctxt.m.b8[56]; - ctxt->m.b8[60] = tctxt.m.b8[63]; - ctxt->m.b8[61] = tctxt.m.b8[62]; - ctxt->m.b8[62] = tctxt.m.b8[61]; - ctxt->m.b8[63] = tctxt.m.b8[60]; -#endif - - a = H(0); - b = H(1); - c = H(2); - d = H(3); - e = H(4); - - for (t = 0; t < 20; t++) - { - s = t & 0x0f; - if (t >= 16) - W(s) = S(1, W((s + 13) & 0x0f) ^ W((s + 8) & 0x0f) ^ W((s + 2) & 0x0f) ^ W(s)); - tmp = S(5, a) + F0(b, c, d) + e + W(s) + K(t); - e = d; - d = c; - c = S(30, b); - b = a; - a = tmp; - } - for (t = 20; t < 40; t++) - { - s = t & 0x0f; - W(s) = S(1, W((s + 13) & 0x0f) ^ W((s + 8) & 0x0f) ^ W((s + 2) & 0x0f) ^ W(s)); - tmp = S(5, a) + F1(b, c, d) + e + W(s) + K(t); - e = d; - d = c; - c = S(30, b); - b = a; - a = tmp; - } - for (t = 40; t < 60; t++) - { - s = t & 0x0f; - W(s) = S(1, W((s + 13) & 0x0f) ^ W((s + 8) & 0x0f) ^ W((s + 2) & 0x0f) ^ W(s)); - tmp = S(5, a) + F2(b, c, d) + e + W(s) + K(t); - e = d; - d = c; - c = S(30, b); - b = a; - a = tmp; - } - for (t = 60; t < 80; t++) - { - s = t & 0x0f; - W(s) = S(1, W((s + 13) & 0x0f) ^ W((s + 8) & 0x0f) ^ W((s + 2) & 0x0f) ^ W(s)); - tmp = S(5, a) + F3(b, c, d) + e + W(s) + K(t); - e = d; - d = c; - c = S(30, b); - b = a; - a = tmp; - } - - H(0) = H(0) + a; - H(1) = H(1) + b; - H(2) = H(2) + c; - H(3) = H(3) + d; - H(4) = H(4) + e; - - memset(&ctxt->m.b8[0], 0, 64); -} - -/*------------------------------------------------------------*/ - -void -sha1_init(struct sha1_ctxt *ctxt) -{ - memset(ctxt, 0, sizeof(struct sha1_ctxt)); - H(0) = 0x67452301; - H(1) = 0xefcdab89; - H(2) = 0x98badcfe; - H(3) = 0x10325476; - H(4) = 0xc3d2e1f0; -} - -void -sha1_pad(struct sha1_ctxt *ctxt) -{ - size_t padlen; /* pad length in bytes */ - size_t padstart; - - PUTPAD(0x80); - - padstart = COUNT % 64; - padlen = 64 - padstart; - if (padlen < 8) - { - memset(&ctxt->m.b8[padstart], 0, padlen); - COUNT += padlen; - COUNT %= 64; - sha1_step(ctxt); - padstart = COUNT % 64; /* should be 0 */ - padlen = 64 - padstart; /* should be 64 */ - } - memset(&ctxt->m.b8[padstart], 0, padlen - 8); - COUNT += (padlen - 8); - COUNT %= 64; -#ifdef WORDS_BIGENDIAN - PUTPAD(ctxt->c.b8[0]); - PUTPAD(ctxt->c.b8[1]); - PUTPAD(ctxt->c.b8[2]); - PUTPAD(ctxt->c.b8[3]); - PUTPAD(ctxt->c.b8[4]); - PUTPAD(ctxt->c.b8[5]); - PUTPAD(ctxt->c.b8[6]); - PUTPAD(ctxt->c.b8[7]); -#else - PUTPAD(ctxt->c.b8[7]); - PUTPAD(ctxt->c.b8[6]); - PUTPAD(ctxt->c.b8[5]); - PUTPAD(ctxt->c.b8[4]); - PUTPAD(ctxt->c.b8[3]); - PUTPAD(ctxt->c.b8[2]); - PUTPAD(ctxt->c.b8[1]); - PUTPAD(ctxt->c.b8[0]); -#endif -} - -void -sha1_loop(struct sha1_ctxt *ctxt, const uint8 *input0, size_t len) -{ - const uint8 *input; - size_t gaplen; - size_t gapstart; - size_t off; - size_t copysiz; - - input = (const uint8 *) input0; - off = 0; - - while (off < len) - { - gapstart = COUNT % 64; - gaplen = 64 - gapstart; - - copysiz = (gaplen < len - off) ? gaplen : len - off; - memmove(&ctxt->m.b8[gapstart], &input[off], copysiz); - COUNT += copysiz; - COUNT %= 64; - ctxt->c.b64[0] += copysiz * 8; - if (COUNT % 64 == 0) - sha1_step(ctxt); - off += copysiz; - } -} - -void -sha1_result(struct sha1_ctxt *ctxt, uint8 *digest0) -{ - uint8 *digest; - - digest = (uint8 *) digest0; - sha1_pad(ctxt); -#ifdef WORDS_BIGENDIAN - memmove(digest, &ctxt->h.b8[0], 20); -#else - digest[0] = ctxt->h.b8[3]; - digest[1] = ctxt->h.b8[2]; - digest[2] = ctxt->h.b8[1]; - digest[3] = ctxt->h.b8[0]; - digest[4] = ctxt->h.b8[7]; - digest[5] = ctxt->h.b8[6]; - digest[6] = ctxt->h.b8[5]; - digest[7] = ctxt->h.b8[4]; - digest[8] = ctxt->h.b8[11]; - digest[9] = ctxt->h.b8[10]; - digest[10] = ctxt->h.b8[9]; - digest[11] = ctxt->h.b8[8]; - digest[12] = ctxt->h.b8[15]; - digest[13] = ctxt->h.b8[14]; - digest[14] = ctxt->h.b8[13]; - digest[15] = ctxt->h.b8[12]; - digest[16] = ctxt->h.b8[19]; - digest[17] = ctxt->h.b8[18]; - digest[18] = ctxt->h.b8[17]; - digest[19] = ctxt->h.b8[16]; -#endif -} diff --git a/parser/include/access/amapi.h b/parser/include/access/amapi.h index 0db4fc73..4325faa4 100644 --- a/parser/include/access/amapi.h +++ b/parser/include/access/amapi.h @@ -3,7 +3,7 @@ * amapi.h * API for Postgres index access methods. * - * Copyright (c) 2015-2017, PostgreSQL Global Development Group + * Copyright (c) 2015-2020, PostgreSQL Global Development Group * * src/include/access/amapi.h * @@ -50,7 +50,8 @@ typedef enum IndexAMProperty AMPROP_CAN_ORDER, /* AM properties */ AMPROP_CAN_UNIQUE, AMPROP_CAN_MULTI_COL, - AMPROP_CAN_EXCLUDE + AMPROP_CAN_EXCLUDE, + AMPROP_CAN_INCLUDE } IndexAMProperty; @@ -107,6 +108,9 @@ typedef bool (*amproperty_function) (Oid index_oid, int attno, IndexAMProperty prop, const char *propname, bool *res, bool *isnull); +/* name of phase as used in progress reporting */ +typedef char *(*ambuildphasename_function) (int64 phasenum); + /* validate definition of an opclass for this AM */ typedef bool (*amvalidate_function) (Oid opclassoid); @@ -167,6 +171,8 @@ typedef struct IndexAmRoutine uint16 amstrategies; /* total number of support functions that this AM uses */ uint16 amsupport; + /* opclass options support function number or 0 */ + uint16 amoptsprocnum; /* does AM support ORDER BY indexed column's value? */ bool amcanorder; /* does AM support ORDER BY result of an operator on indexed column? */ @@ -191,9 +197,21 @@ typedef struct IndexAmRoutine bool ampredlocks; /* does AM support parallel scan? */ bool amcanparallel; + /* does AM support columns included with clause INCLUDE? */ + bool amcaninclude; + /* does AM use maintenance_work_mem? */ + bool amusemaintenanceworkmem; + /* OR of parallel vacuum flags. See vacuum.h for flags. */ + uint8 amparallelvacuumoptions; /* type of data stored in index, or InvalidOid if variable */ Oid amkeytype; + /* + * If you add new properties to either the above or the below lists, then + * they should also (usually) be exposed via the property API (see + * IndexAMProperty at the top of the file, and utils/adt/amutils.c). + */ + /* interface functions */ ambuild_function ambuild; ambuildempty_function ambuildempty; @@ -204,6 +222,7 @@ typedef struct IndexAmRoutine amcostestimate_function amcostestimate; amoptions_function amoptions; amproperty_function amproperty; /* can be NULL */ + ambuildphasename_function ambuildphasename; /* can be NULL */ amvalidate_function amvalidate; ambeginscan_function ambeginscan; amrescan_function amrescan; diff --git a/parser/include/access/attmap.h b/parser/include/access/attmap.h new file mode 100644 index 00000000..64bc7158 --- /dev/null +++ b/parser/include/access/attmap.h @@ -0,0 +1,52 @@ +/*------------------------------------------------------------------------- + * + * attmap.h + * Definitions for PostgreSQL attribute mappings + * + * + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group + * Portions Copyright (c) 1994, Regents of the University of California + * + * src/include/access/attmap.h + * + *------------------------------------------------------------------------- + */ +#ifndef ATTMAP_H +#define ATTMAP_H + +#include "access/attnum.h" +#include "access/tupdesc.h" + +/* + * Attribute mapping structure + * + * This maps attribute numbers between a pair of relations, designated + * 'input' and 'output' (most typically inheritance parent and child + * relations), whose common columns may have different attribute numbers. + * Such difference may arise due to the columns being ordered differently + * in the two relations or the two relations having dropped columns at + * different positions. + * + * 'maplen' is set to the number of attributes of the 'output' relation, + * taking into account any of its dropped attributes, with the corresponding + * elements of the 'attnums' array set to 0. + */ +typedef struct AttrMap +{ + AttrNumber *attnums; + int maplen; +} AttrMap; + +extern AttrMap *make_attrmap(int maplen); +extern void free_attrmap(AttrMap *map); + +/* Conversion routines to build mappings */ +extern AttrMap *build_attrmap_by_name(TupleDesc indesc, + TupleDesc outdesc); +extern AttrMap *build_attrmap_by_name_if_req(TupleDesc indesc, + TupleDesc outdesc); +extern AttrMap *build_attrmap_by_position(TupleDesc indesc, + TupleDesc outdesc, + const char *msg); + +#endif /* ATTMAP_H */ diff --git a/parser/include/access/attnum.h b/parser/include/access/attnum.h index d23888b0..87b208e0 100644 --- a/parser/include/access/attnum.h +++ b/parser/include/access/attnum.h @@ -4,7 +4,7 @@ * POSTGRES attribute number definitions. * * - * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/access/attnum.h @@ -55,7 +55,7 @@ typedef int16 AttrNumber; ) /* - * AttributeOffsetGetAttributeNumber + * AttrOffsetGetAttrNumber * Returns the attribute number for an attribute offset. */ #define AttrOffsetGetAttrNumber(attributeOffset) \ diff --git a/parser/include/access/clog.h b/parser/include/access/clog.h new file mode 100644 index 00000000..2db8acb1 --- /dev/null +++ b/parser/include/access/clog.h @@ -0,0 +1,61 @@ +/* + * clog.h + * + * PostgreSQL transaction-commit-log manager + * + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group + * Portions Copyright (c) 1994, Regents of the University of California + * + * src/include/access/clog.h + */ +#ifndef CLOG_H +#define CLOG_H + +#include "access/xlogreader.h" +#include "lib/stringinfo.h" + +/* + * Possible transaction statuses --- note that all-zeroes is the initial + * state. + * + * A "subcommitted" transaction is a committed subtransaction whose parent + * hasn't committed or aborted yet. + */ +typedef int XidStatus; + +#define TRANSACTION_STATUS_IN_PROGRESS 0x00 +#define TRANSACTION_STATUS_COMMITTED 0x01 +#define TRANSACTION_STATUS_ABORTED 0x02 +#define TRANSACTION_STATUS_SUB_COMMITTED 0x03 + +typedef struct xl_clog_truncate +{ + int pageno; + TransactionId oldestXact; + Oid oldestXactDb; +} xl_clog_truncate; + +extern void TransactionIdSetTreeStatus(TransactionId xid, int nsubxids, + TransactionId *subxids, XidStatus status, XLogRecPtr lsn); +extern XidStatus TransactionIdGetStatus(TransactionId xid, XLogRecPtr *lsn); + +extern Size CLOGShmemBuffers(void); +extern Size CLOGShmemSize(void); +extern void CLOGShmemInit(void); +extern void BootStrapCLOG(void); +extern void StartupCLOG(void); +extern void TrimCLOG(void); +extern void ShutdownCLOG(void); +extern void CheckPointCLOG(void); +extern void ExtendCLOG(TransactionId newestXact); +extern void TruncateCLOG(TransactionId oldestXact, Oid oldestxid_datoid); + +/* XLOG stuff */ +#define CLOG_ZEROPAGE 0x00 +#define CLOG_TRUNCATE 0x10 + +extern void clog_redo(XLogReaderState *record); +extern void clog_desc(StringInfo buf, XLogReaderState *record); +extern const char *clog_identify(uint8 info); + +#endif /* CLOG_H */ diff --git a/parser/include/access/commit_ts.h b/parser/include/access/commit_ts.h index 31936faf..2740c02a 100644 --- a/parser/include/access/commit_ts.h +++ b/parser/include/access/commit_ts.h @@ -3,7 +3,7 @@ * * PostgreSQL commit timestamp manager * - * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/access/commit_ts.h @@ -20,29 +20,29 @@ extern PGDLLIMPORT bool track_commit_timestamp; extern bool check_track_commit_timestamp(bool *newval, void **extra, - GucSource source); + GucSource source); extern void TransactionTreeSetCommitTsData(TransactionId xid, int nsubxids, - TransactionId *subxids, TimestampTz timestamp, - RepOriginId nodeid, bool write_xlog); + TransactionId *subxids, TimestampTz timestamp, + RepOriginId nodeid, bool write_xlog); extern bool TransactionIdGetCommitTsData(TransactionId xid, - TimestampTz *ts, RepOriginId *nodeid); + TimestampTz *ts, RepOriginId *nodeid); extern TransactionId GetLatestCommitTsData(TimestampTz *ts, - RepOriginId *nodeid); + RepOriginId *nodeid); extern Size CommitTsShmemBuffers(void); extern Size CommitTsShmemSize(void); extern void CommitTsShmemInit(void); extern void BootStrapCommitTs(void); extern void StartupCommitTs(void); -extern void CommitTsParameterChange(bool xlrecvalue, bool pgcontrolvalue); +extern void CommitTsParameterChange(bool newvalue, bool oldvalue); extern void CompleteCommitTsInitialization(void); extern void ShutdownCommitTs(void); extern void CheckPointCommitTs(void); extern void ExtendCommitTs(TransactionId newestXact); extern void TruncateCommitTs(TransactionId oldestXact); extern void SetCommitTsLimit(TransactionId oldestXact, - TransactionId newestXact); + TransactionId newestXact); extern void AdvanceOldestCommitTsXid(TransactionId oldestXact); /* XLOG stuff */ diff --git a/parser/include/access/detoast.h b/parser/include/access/detoast.h new file mode 100644 index 00000000..86bad7e7 --- /dev/null +++ b/parser/include/access/detoast.h @@ -0,0 +1,92 @@ +/*------------------------------------------------------------------------- + * + * detoast.h + * Access to compressed and external varlena values. + * + * Copyright (c) 2000-2020, PostgreSQL Global Development Group + * + * src/include/access/detoast.h + * + *------------------------------------------------------------------------- + */ +#ifndef DETOAST_H +#define DETOAST_H + +/* + * Testing whether an externally-stored value is compressed now requires + * comparing extsize (the actual length of the external data) to rawsize + * (the original uncompressed datum's size). The latter includes VARHDRSZ + * overhead, the former doesn't. We never use compression unless it actually + * saves space, so we expect either equality or less-than. + */ +#define VARATT_EXTERNAL_IS_COMPRESSED(toast_pointer) \ + ((toast_pointer).va_extsize < (toast_pointer).va_rawsize - VARHDRSZ) + +/* + * Macro to fetch the possibly-unaligned contents of an EXTERNAL datum + * into a local "struct varatt_external" toast pointer. This should be + * just a memcpy, but some versions of gcc seem to produce broken code + * that assumes the datum contents are aligned. Introducing an explicit + * intermediate "varattrib_1b_e *" variable seems to fix it. + */ +#define VARATT_EXTERNAL_GET_POINTER(toast_pointer, attr) \ +do { \ + varattrib_1b_e *attre = (varattrib_1b_e *) (attr); \ + Assert(VARATT_IS_EXTERNAL(attre)); \ + Assert(VARSIZE_EXTERNAL(attre) == sizeof(toast_pointer) + VARHDRSZ_EXTERNAL); \ + memcpy(&(toast_pointer), VARDATA_EXTERNAL(attre), sizeof(toast_pointer)); \ +} while (0) + +/* Size of an EXTERNAL datum that contains a standard TOAST pointer */ +#define TOAST_POINTER_SIZE (VARHDRSZ_EXTERNAL + sizeof(varatt_external)) + +/* Size of an EXTERNAL datum that contains an indirection pointer */ +#define INDIRECT_POINTER_SIZE (VARHDRSZ_EXTERNAL + sizeof(varatt_indirect)) + +/* ---------- + * detoast_external_attr() - + * + * Fetches an external stored attribute from the toast + * relation. Does NOT decompress it, if stored external + * in compressed format. + * ---------- + */ +extern struct varlena *detoast_external_attr(struct varlena *attr); + +/* ---------- + * detoast_attr() - + * + * Fully detoasts one attribute, fetching and/or decompressing + * it as needed. + * ---------- + */ +extern struct varlena *detoast_attr(struct varlena *attr); + +/* ---------- + * detoast_attr_slice() - + * + * Fetches only the specified portion of an attribute. + * (Handles all cases for attribute storage) + * ---------- + */ +extern struct varlena *detoast_attr_slice(struct varlena *attr, + int32 sliceoffset, + int32 slicelength); + +/* ---------- + * toast_raw_datum_size - + * + * Return the raw (detoasted) size of a varlena datum + * ---------- + */ +extern Size toast_raw_datum_size(Datum value); + +/* ---------- + * toast_datum_size - + * + * Return the storage size of a varlena datum + * ---------- + */ +extern Size toast_datum_size(Datum value); + +#endif /* DETOAST_H */ diff --git a/parser/include/access/genam.h b/parser/include/access/genam.h index ca22a1ce..931257bd 100644 --- a/parser/include/access/genam.h +++ b/parser/include/access/genam.h @@ -4,7 +4,7 @@ * POSTGRES generalized index access method definitions. * * - * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/access/genam.h @@ -45,6 +45,7 @@ typedef struct IndexVacuumInfo { Relation index; /* the index being vacuumed */ bool analyze_only; /* ANALYZE (without any actual vacuum) */ + bool report_progress; /* emit progress.h status reports */ bool estimated_count; /* num_heap_tuples is an estimate */ int message_level; /* ereport level for progress messages */ double num_heap_tuples; /* tuples remaining in heap */ @@ -138,76 +139,90 @@ extern Relation index_open(Oid relationId, LOCKMODE lockmode); extern void index_close(Relation relation, LOCKMODE lockmode); extern bool index_insert(Relation indexRelation, - Datum *values, bool *isnull, - ItemPointer heap_t_ctid, - Relation heapRelation, - IndexUniqueCheck checkUnique, - struct IndexInfo *indexInfo); + Datum *values, bool *isnull, + ItemPointer heap_t_ctid, + Relation heapRelation, + IndexUniqueCheck checkUnique, + struct IndexInfo *indexInfo); extern IndexScanDesc index_beginscan(Relation heapRelation, - Relation indexRelation, - Snapshot snapshot, - int nkeys, int norderbys); + Relation indexRelation, + Snapshot snapshot, + int nkeys, int norderbys); extern IndexScanDesc index_beginscan_bitmap(Relation indexRelation, - Snapshot snapshot, - int nkeys); + Snapshot snapshot, + int nkeys); extern void index_rescan(IndexScanDesc scan, - ScanKey keys, int nkeys, - ScanKey orderbys, int norderbys); + ScanKey keys, int nkeys, + ScanKey orderbys, int norderbys); extern void index_endscan(IndexScanDesc scan); extern void index_markpos(IndexScanDesc scan); extern void index_restrpos(IndexScanDesc scan); extern Size index_parallelscan_estimate(Relation indexrel, Snapshot snapshot); extern void index_parallelscan_initialize(Relation heaprel, Relation indexrel, - Snapshot snapshot, ParallelIndexScanDesc target); + Snapshot snapshot, ParallelIndexScanDesc target); extern void index_parallelrescan(IndexScanDesc scan); extern IndexScanDesc index_beginscan_parallel(Relation heaprel, - Relation indexrel, int nkeys, int norderbys, - ParallelIndexScanDesc pscan); + Relation indexrel, int nkeys, int norderbys, + ParallelIndexScanDesc pscan); extern ItemPointer index_getnext_tid(IndexScanDesc scan, - ScanDirection direction); -extern HeapTuple index_fetch_heap(IndexScanDesc scan); -extern HeapTuple index_getnext(IndexScanDesc scan, ScanDirection direction); + ScanDirection direction); +struct TupleTableSlot; +extern bool index_fetch_heap(IndexScanDesc scan, struct TupleTableSlot *slot); +extern bool index_getnext_slot(IndexScanDesc scan, ScanDirection direction, + struct TupleTableSlot *slot); extern int64 index_getbitmap(IndexScanDesc scan, TIDBitmap *bitmap); extern IndexBulkDeleteResult *index_bulk_delete(IndexVacuumInfo *info, - IndexBulkDeleteResult *stats, - IndexBulkDeleteCallback callback, - void *callback_state); + IndexBulkDeleteResult *stats, + IndexBulkDeleteCallback callback, + void *callback_state); extern IndexBulkDeleteResult *index_vacuum_cleanup(IndexVacuumInfo *info, - IndexBulkDeleteResult *stats); + IndexBulkDeleteResult *stats); extern bool index_can_return(Relation indexRelation, int attno); extern RegProcedure index_getprocid(Relation irel, AttrNumber attnum, - uint16 procnum); + uint16 procnum); extern FmgrInfo *index_getprocinfo(Relation irel, AttrNumber attnum, - uint16 procnum); + uint16 procnum); +extern void index_store_float8_orderby_distances(IndexScanDesc scan, + Oid *orderByTypes, + IndexOrderByDistance *distances, + bool recheckOrderBy); +extern bytea *index_opclass_options(Relation relation, AttrNumber attnum, + Datum attoptions, bool validate); + /* * index access method support routines (in genam.c) */ extern IndexScanDesc RelationGetIndexScan(Relation indexRelation, - int nkeys, int norderbys); + int nkeys, int norderbys); extern void IndexScanEnd(IndexScanDesc scan); extern char *BuildIndexValueDescription(Relation indexRelation, - Datum *values, bool *isnull); + Datum *values, bool *isnull); +extern TransactionId index_compute_xid_horizon_for_tuples(Relation irel, + Relation hrel, + Buffer ibuf, + OffsetNumber *itemnos, + int nitems); /* * heap-or-index access to system catalogs (in genam.c) */ extern SysScanDesc systable_beginscan(Relation heapRelation, - Oid indexId, - bool indexOK, - Snapshot snapshot, - int nkeys, ScanKey key); + Oid indexId, + bool indexOK, + Snapshot snapshot, + int nkeys, ScanKey key); extern HeapTuple systable_getnext(SysScanDesc sysscan); extern bool systable_recheck_tuple(SysScanDesc sysscan, HeapTuple tup); extern void systable_endscan(SysScanDesc sysscan); extern SysScanDesc systable_beginscan_ordered(Relation heapRelation, - Relation indexRelation, - Snapshot snapshot, - int nkeys, ScanKey key); + Relation indexRelation, + Snapshot snapshot, + int nkeys, ScanKey key); extern HeapTuple systable_getnext_ordered(SysScanDesc sysscan, - ScanDirection direction); + ScanDirection direction); extern void systable_endscan_ordered(SysScanDesc sysscan); #endif /* GENAM_H */ diff --git a/parser/include/access/gin.h b/parser/include/access/gin.h index ec830580..990e8b3e 100644 --- a/parser/include/access/gin.h +++ b/parser/include/access/gin.h @@ -2,7 +2,7 @@ * gin.h * Public header file for Generalized Inverted Index access method. * - * Copyright (c) 2006-2017, PostgreSQL Global Development Group + * Copyright (c) 2006-2020, PostgreSQL Global Development Group * * src/include/access/gin.h *-------------------------------------------------------------------------- @@ -25,7 +25,8 @@ #define GIN_CONSISTENT_PROC 4 #define GIN_COMPARE_PARTIAL_PROC 5 #define GIN_TRICONSISTENT_PROC 6 -#define GINNProcs 6 +#define GIN_OPTIONS_PROC 7 +#define GINNProcs 7 /* * searchMode settings for extractQueryFn. @@ -51,8 +52,8 @@ typedef struct GinStatsData /* * A ternary value used by tri-consistent functions. * - * For convenience, this is compatible with booleans. A boolean can be - * safely cast to a GinTernaryValue. + * This must be of the same size as a bool because some code will cast a + * pointer to a bool to a pointer to a GinTernaryValue. */ typedef char GinTernaryValue; @@ -71,6 +72,7 @@ extern int gin_pending_list_limit; /* ginutil.c */ extern void ginGetStats(Relation index, GinStatsData *stats); -extern void ginUpdateStats(Relation index, const GinStatsData *stats); +extern void ginUpdateStats(Relation index, const GinStatsData *stats, + bool is_build); #endif /* GIN_H */ diff --git a/parser/include/access/hash.h b/parser/include/access/hash.h deleted file mode 100644 index 9cac23c9..00000000 --- a/parser/include/access/hash.h +++ /dev/null @@ -1,427 +0,0 @@ -/*------------------------------------------------------------------------- - * - * hash.h - * header file for postgres hash access method implementation - * - * - * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group - * Portions Copyright (c) 1994, Regents of the University of California - * - * src/include/access/hash.h - * - * NOTES - * modeled after Margo Seltzer's hash implementation for unix. - * - *------------------------------------------------------------------------- - */ -#ifndef HASH_H -#define HASH_H - -#include "access/amapi.h" -#include "access/itup.h" -#include "access/sdir.h" -#include "fmgr.h" -#include "lib/stringinfo.h" -#include "storage/bufmgr.h" -#include "storage/lockdefs.h" -#include "utils/hsearch.h" -#include "utils/relcache.h" - -/* - * Mapping from hash bucket number to physical block number of bucket's - * starting page. Beware of multiple evaluations of argument! - */ -typedef uint32 Bucket; - -#define InvalidBucket ((Bucket) 0xFFFFFFFF) - -#define BUCKET_TO_BLKNO(metap,B) \ - ((BlockNumber) ((B) + ((B) ? (metap)->hashm_spares[_hash_spareindex((B)+1)-1] : 0)) + 1) - -/* - * Special space for hash index pages. - * - * hasho_flag's LH_PAGE_TYPE bits tell us which type of page we're looking at. - * Additional bits in the flag word are used for more transient purposes. - * - * To test a page's type, do (hasho_flag & LH_PAGE_TYPE) == LH_xxx_PAGE. - * However, we ensure that each used page type has a distinct bit so that - * we can OR together page types for uses such as the allowable-page-types - * argument of _hash_checkpage(). - */ -#define LH_UNUSED_PAGE (0) -#define LH_OVERFLOW_PAGE (1 << 0) -#define LH_BUCKET_PAGE (1 << 1) -#define LH_BITMAP_PAGE (1 << 2) -#define LH_META_PAGE (1 << 3) -#define LH_BUCKET_BEING_POPULATED (1 << 4) -#define LH_BUCKET_BEING_SPLIT (1 << 5) -#define LH_BUCKET_NEEDS_SPLIT_CLEANUP (1 << 6) -#define LH_PAGE_HAS_DEAD_TUPLES (1 << 7) - -#define LH_PAGE_TYPE \ - (LH_OVERFLOW_PAGE | LH_BUCKET_PAGE | LH_BITMAP_PAGE | LH_META_PAGE) - -/* - * In an overflow page, hasho_prevblkno stores the block number of the previous - * page in the bucket chain; in a bucket page, hasho_prevblkno stores the - * hashm_maxbucket value as of the last time the bucket was last split, or - * else as of the time the bucket was created. The latter convention is used - * to determine whether a cached copy of the metapage is too stale to be used - * without needing to lock or pin the metapage. - * - * hasho_nextblkno is always the block number of the next page in the - * bucket chain, or InvalidBlockNumber if there are no more such pages. - */ -typedef struct HashPageOpaqueData -{ - BlockNumber hasho_prevblkno; /* see above */ - BlockNumber hasho_nextblkno; /* see above */ - Bucket hasho_bucket; /* bucket number this pg belongs to */ - uint16 hasho_flag; /* page type code + flag bits, see above */ - uint16 hasho_page_id; /* for identification of hash indexes */ -} HashPageOpaqueData; - -typedef HashPageOpaqueData *HashPageOpaque; - -#define H_NEEDS_SPLIT_CLEANUP(opaque) (((opaque)->hasho_flag & LH_BUCKET_NEEDS_SPLIT_CLEANUP) != 0) -#define H_BUCKET_BEING_SPLIT(opaque) (((opaque)->hasho_flag & LH_BUCKET_BEING_SPLIT) != 0) -#define H_BUCKET_BEING_POPULATED(opaque) (((opaque)->hasho_flag & LH_BUCKET_BEING_POPULATED) != 0) -#define H_HAS_DEAD_TUPLES(opaque) (((opaque)->hasho_flag & LH_PAGE_HAS_DEAD_TUPLES) != 0) - -/* - * The page ID is for the convenience of pg_filedump and similar utilities, - * which otherwise would have a hard time telling pages of different index - * types apart. It should be the last 2 bytes on the page. This is more or - * less "free" due to alignment considerations. - */ -#define HASHO_PAGE_ID 0xFF80 - -typedef struct HashScanPosItem /* what we remember about each match */ -{ - ItemPointerData heapTid; /* TID of referenced heap item */ - OffsetNumber indexOffset; /* index item's location within page */ -} HashScanPosItem; - - -/* - * HashScanOpaqueData is private state for a hash index scan. - */ -typedef struct HashScanOpaqueData -{ - /* Hash value of the scan key, ie, the hash key we seek */ - uint32 hashso_sk_hash; - - /* - * We also want to remember which buffer we're currently examining in the - * scan. We keep the buffer pinned (but not locked) across hashgettuple - * calls, in order to avoid doing a ReadBuffer() for every tuple in the - * index. - */ - Buffer hashso_curbuf; - - /* remember the buffer associated with primary bucket */ - Buffer hashso_bucket_buf; - - /* - * remember the buffer associated with primary bucket page of bucket being - * split. it is required during the scan of the bucket which is being - * populated during split operation. - */ - Buffer hashso_split_bucket_buf; - - /* Current position of the scan, as an index TID */ - ItemPointerData hashso_curpos; - - /* Current position of the scan, as a heap TID */ - ItemPointerData hashso_heappos; - - /* Whether scan starts on bucket being populated due to split */ - bool hashso_buc_populated; - - /* - * Whether scanning bucket being split? The value of this parameter is - * referred only when hashso_buc_populated is true. - */ - bool hashso_buc_split; - /* info about killed items if any (killedItems is NULL if never used) */ - HashScanPosItem *killedItems; /* tids and offset numbers of killed items */ - int numKilled; /* number of currently stored items */ -} HashScanOpaqueData; - -typedef HashScanOpaqueData *HashScanOpaque; - -/* - * Definitions for metapage. - */ - -#define HASH_METAPAGE 0 /* metapage is always block 0 */ - -#define HASH_MAGIC 0x6440640 -#define HASH_VERSION 4 - -/* - * spares[] holds the number of overflow pages currently allocated at or - * before a certain splitpoint. For example, if spares[3] = 7 then there are - * 7 ovflpages before splitpoint 3 (compare BUCKET_TO_BLKNO macro). The - * value in spares[ovflpoint] increases as overflow pages are added at the - * end of the index. Once ovflpoint increases (ie, we have actually allocated - * the bucket pages belonging to that splitpoint) the number of spares at the - * prior splitpoint cannot change anymore. - * - * ovflpages that have been recycled for reuse can be found by looking at - * bitmaps that are stored within ovflpages dedicated for the purpose. - * The blknos of these bitmap pages are kept in mapp[]; nmaps is the - * number of currently existing bitmaps. - * - * The limitation on the size of spares[] comes from the fact that there's - * no point in having more than 2^32 buckets with only uint32 hashcodes. - * (Note: The value of HASH_MAX_SPLITPOINTS which is the size of spares[] is - * adjusted in such a way to accommodate multi phased allocation of buckets - * after HASH_SPLITPOINT_GROUPS_WITH_ONE_PHASE). - * - * There is no particular upper limit on the size of mapp[], other than - * needing to fit into the metapage. (With 8K block size, 1024 bitmaps - * limit us to 256 GB of overflow space...). For smaller block size we - * can not use 1024 bitmaps as it will lead to the meta page data crossing - * the block size boundary. So we use BLCKSZ to determine the maximum number - * of bitmaps. - */ -#define HASH_MAX_BITMAPS Min(BLCKSZ / 8, 1024) - -#define HASH_SPLITPOINT_PHASE_BITS 2 -#define HASH_SPLITPOINT_PHASES_PER_GRP (1 << HASH_SPLITPOINT_PHASE_BITS) -#define HASH_SPLITPOINT_PHASE_MASK (HASH_SPLITPOINT_PHASES_PER_GRP - 1) -#define HASH_SPLITPOINT_GROUPS_WITH_ONE_PHASE 10 - -/* defines max number of splitpoit phases a hash index can have */ -#define HASH_MAX_SPLITPOINT_GROUP 32 -#define HASH_MAX_SPLITPOINTS \ - (((HASH_MAX_SPLITPOINT_GROUP - HASH_SPLITPOINT_GROUPS_WITH_ONE_PHASE) * \ - HASH_SPLITPOINT_PHASES_PER_GRP) + \ - HASH_SPLITPOINT_GROUPS_WITH_ONE_PHASE) - -typedef struct HashMetaPageData -{ - uint32 hashm_magic; /* magic no. for hash tables */ - uint32 hashm_version; /* version ID */ - double hashm_ntuples; /* number of tuples stored in the table */ - uint16 hashm_ffactor; /* target fill factor (tuples/bucket) */ - uint16 hashm_bsize; /* index page size (bytes) */ - uint16 hashm_bmsize; /* bitmap array size (bytes) - must be a power - * of 2 */ - uint16 hashm_bmshift; /* log2(bitmap array size in BITS) */ - uint32 hashm_maxbucket; /* ID of maximum bucket in use */ - uint32 hashm_highmask; /* mask to modulo into entire table */ - uint32 hashm_lowmask; /* mask to modulo into lower half of table */ - uint32 hashm_ovflpoint; /* splitpoint from which ovflpgs being - * allocated */ - uint32 hashm_firstfree; /* lowest-number free ovflpage (bit#) */ - uint32 hashm_nmaps; /* number of bitmap pages */ - RegProcedure hashm_procid; /* hash procedure id from pg_proc */ - uint32 hashm_spares[HASH_MAX_SPLITPOINTS]; /* spare pages before each - * splitpoint */ - BlockNumber hashm_mapp[HASH_MAX_BITMAPS]; /* blknos of ovfl bitmaps */ -} HashMetaPageData; - -typedef HashMetaPageData *HashMetaPage; - -/* - * Maximum size of a hash index item (it's okay to have only one per page) - */ -#define HashMaxItemSize(page) \ - MAXALIGN_DOWN(PageGetPageSize(page) - \ - SizeOfPageHeaderData - \ - sizeof(ItemIdData) - \ - MAXALIGN(sizeof(HashPageOpaqueData))) - -#define INDEX_MOVED_BY_SPLIT_MASK 0x2000 - -#define HASH_MIN_FILLFACTOR 10 -#define HASH_DEFAULT_FILLFACTOR 75 - -/* - * Constants - */ -#define BYTE_TO_BIT 3 /* 2^3 bits/byte */ -#define ALL_SET ((uint32) ~0) - -/* - * Bitmap pages do not contain tuples. They do contain the standard - * page headers and trailers; however, everything in between is a - * giant bit array. The number of bits that fit on a page obviously - * depends on the page size and the header/trailer overhead. We require - * the number of bits per page to be a power of 2. - */ -#define BMPGSZ_BYTE(metap) ((metap)->hashm_bmsize) -#define BMPGSZ_BIT(metap) ((metap)->hashm_bmsize << BYTE_TO_BIT) -#define BMPG_SHIFT(metap) ((metap)->hashm_bmshift) -#define BMPG_MASK(metap) (BMPGSZ_BIT(metap) - 1) - -#define HashPageGetBitmap(page) \ - ((uint32 *) PageGetContents(page)) - -#define HashGetMaxBitmapSize(page) \ - (PageGetPageSize((Page) page) - \ - (MAXALIGN(SizeOfPageHeaderData) + MAXALIGN(sizeof(HashPageOpaqueData)))) - -#define HashPageGetMeta(page) \ - ((HashMetaPage) PageGetContents(page)) - -/* - * The number of bits in an ovflpage bitmap word. - */ -#define BITS_PER_MAP 32 /* Number of bits in uint32 */ - -/* Given the address of the beginning of a bit map, clear/set the nth bit */ -#define CLRBIT(A, N) ((A)[(N)/BITS_PER_MAP] &= ~(1<<((N)%BITS_PER_MAP))) -#define SETBIT(A, N) ((A)[(N)/BITS_PER_MAP] |= (1<<((N)%BITS_PER_MAP))) -#define ISSET(A, N) ((A)[(N)/BITS_PER_MAP] & (1<<((N)%BITS_PER_MAP))) - -/* - * page-level and high-level locking modes (see README) - */ -#define HASH_READ BUFFER_LOCK_SHARE -#define HASH_WRITE BUFFER_LOCK_EXCLUSIVE -#define HASH_NOLOCK (-1) - -/* - * Strategy number. There's only one valid strategy for hashing: equality. - */ -#define HTEqualStrategyNumber 1 -#define HTMaxStrategyNumber 1 - -/* - * When a new operator class is declared, we require that the user supply - * us with an amproc procedure for hashing a key of the new type. - * Since we only have one such proc in amproc, it's number 1. - */ -#define HASHPROC 1 -#define HASHNProcs 1 - - -/* public routines */ - -extern IndexBuildResult *hashbuild(Relation heap, Relation index, - struct IndexInfo *indexInfo); -extern void hashbuildempty(Relation index); -extern bool hashinsert(Relation rel, Datum *values, bool *isnull, - ItemPointer ht_ctid, Relation heapRel, - IndexUniqueCheck checkUnique, - struct IndexInfo *indexInfo); -extern bool hashgettuple(IndexScanDesc scan, ScanDirection dir); -extern int64 hashgetbitmap(IndexScanDesc scan, TIDBitmap *tbm); -extern IndexScanDesc hashbeginscan(Relation rel, int nkeys, int norderbys); -extern void hashrescan(IndexScanDesc scan, ScanKey scankey, int nscankeys, - ScanKey orderbys, int norderbys); -extern void hashendscan(IndexScanDesc scan); -extern IndexBulkDeleteResult *hashbulkdelete(IndexVacuumInfo *info, - IndexBulkDeleteResult *stats, - IndexBulkDeleteCallback callback, - void *callback_state); -extern IndexBulkDeleteResult *hashvacuumcleanup(IndexVacuumInfo *info, - IndexBulkDeleteResult *stats); -extern bytea *hashoptions(Datum reloptions, bool validate); -extern bool hashvalidate(Oid opclassoid); - -extern Datum hash_any(register const unsigned char *k, register int keylen); -extern Datum hash_uint32(uint32 k); - -/* private routines */ - -/* hashinsert.c */ -extern void _hash_doinsert(Relation rel, IndexTuple itup, Relation heapRel); -extern OffsetNumber _hash_pgaddtup(Relation rel, Buffer buf, - Size itemsize, IndexTuple itup); -extern void _hash_pgaddmultitup(Relation rel, Buffer buf, IndexTuple *itups, - OffsetNumber *itup_offsets, uint16 nitups); - -/* hashovfl.c */ -extern Buffer _hash_addovflpage(Relation rel, Buffer metabuf, Buffer buf, bool retain_pin); -extern BlockNumber _hash_freeovflpage(Relation rel, Buffer bucketbuf, Buffer ovflbuf, - Buffer wbuf, IndexTuple *itups, OffsetNumber *itup_offsets, - Size *tups_size, uint16 nitups, BufferAccessStrategy bstrategy); -extern void _hash_initbitmapbuffer(Buffer buf, uint16 bmsize, bool initpage); -extern void _hash_squeezebucket(Relation rel, - Bucket bucket, BlockNumber bucket_blkno, - Buffer bucket_buf, - BufferAccessStrategy bstrategy); -extern uint32 _hash_ovflblkno_to_bitno(HashMetaPage metap, BlockNumber ovflblkno); - -/* hashpage.c */ -extern Buffer _hash_getbuf(Relation rel, BlockNumber blkno, - int access, int flags); -extern Buffer _hash_getbuf_with_condlock_cleanup(Relation rel, - BlockNumber blkno, int flags); -extern HashMetaPage _hash_getcachedmetap(Relation rel, Buffer *metabuf, - bool force_refresh); -extern Buffer _hash_getbucketbuf_from_hashkey(Relation rel, uint32 hashkey, - int access, - HashMetaPage *cachedmetap); -extern Buffer _hash_getinitbuf(Relation rel, BlockNumber blkno); -extern void _hash_initbuf(Buffer buf, uint32 max_bucket, uint32 num_bucket, - uint32 flag, bool initpage); -extern Buffer _hash_getnewbuf(Relation rel, BlockNumber blkno, - ForkNumber forkNum); -extern Buffer _hash_getbuf_with_strategy(Relation rel, BlockNumber blkno, - int access, int flags, - BufferAccessStrategy bstrategy); -extern void _hash_relbuf(Relation rel, Buffer buf); -extern void _hash_dropbuf(Relation rel, Buffer buf); -extern void _hash_dropscanbuf(Relation rel, HashScanOpaque so); -extern uint32 _hash_init(Relation rel, double num_tuples, - ForkNumber forkNum); -extern void _hash_init_metabuffer(Buffer buf, double num_tuples, - RegProcedure procid, uint16 ffactor, bool initpage); -extern void _hash_pageinit(Page page, Size size); -extern void _hash_expandtable(Relation rel, Buffer metabuf); -extern void _hash_finish_split(Relation rel, Buffer metabuf, Buffer obuf, - Bucket obucket, uint32 maxbucket, uint32 highmask, - uint32 lowmask); - -/* hashsearch.c */ -extern bool _hash_next(IndexScanDesc scan, ScanDirection dir); -extern bool _hash_first(IndexScanDesc scan, ScanDirection dir); -extern bool _hash_step(IndexScanDesc scan, Buffer *bufP, ScanDirection dir); - -/* hashsort.c */ -typedef struct HSpool HSpool; /* opaque struct in hashsort.c */ - -extern HSpool *_h_spoolinit(Relation heap, Relation index, uint32 num_buckets); -extern void _h_spooldestroy(HSpool *hspool); -extern void _h_spool(HSpool *hspool, ItemPointer self, - Datum *values, bool *isnull); -extern void _h_indexbuild(HSpool *hspool, Relation heapRel); - -/* hashutil.c */ -extern bool _hash_checkqual(IndexScanDesc scan, IndexTuple itup); -extern uint32 _hash_datum2hashkey(Relation rel, Datum key); -extern uint32 _hash_datum2hashkey_type(Relation rel, Datum key, Oid keytype); -extern Bucket _hash_hashkey2bucket(uint32 hashkey, uint32 maxbucket, - uint32 highmask, uint32 lowmask); -extern uint32 _hash_log2(uint32 num); -extern uint32 _hash_spareindex(uint32 num_bucket); -extern uint32 _hash_get_totalbuckets(uint32 splitpoint_phase); -extern void _hash_checkpage(Relation rel, Buffer buf, int flags); -extern uint32 _hash_get_indextuple_hashkey(IndexTuple itup); -extern bool _hash_convert_tuple(Relation index, - Datum *user_values, bool *user_isnull, - Datum *index_values, bool *index_isnull); -extern OffsetNumber _hash_binsearch(Page page, uint32 hash_value); -extern OffsetNumber _hash_binsearch_last(Page page, uint32 hash_value); -extern BlockNumber _hash_get_oldblock_from_newbucket(Relation rel, Bucket new_bucket); -extern BlockNumber _hash_get_newblock_from_oldbucket(Relation rel, Bucket old_bucket); -extern Bucket _hash_get_newbucket_from_oldbucket(Relation rel, Bucket old_bucket, - uint32 lowmask, uint32 maxbucket); -extern void _hash_kill_items(IndexScanDesc scan); - -/* hash.c */ -extern void hashbucketcleanup(Relation rel, Bucket cur_bucket, - Buffer bucket_buf, BlockNumber bucket_blkno, - BufferAccessStrategy bstrategy, - uint32 maxbucket, uint32 highmask, uint32 lowmask, - double *tuples_removed, double *num_index_tuples, - bool bucket_has_garbage, - IndexBulkDeleteCallback callback, void *callback_state); - -#endif /* HASH_H */ diff --git a/parser/include/access/heapam.h b/parser/include/access/heapam.h deleted file mode 100644 index 051994d2..00000000 --- a/parser/include/access/heapam.h +++ /dev/null @@ -1,204 +0,0 @@ -/*------------------------------------------------------------------------- - * - * heapam.h - * POSTGRES heap access method definitions. - * - * - * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group - * Portions Copyright (c) 1994, Regents of the University of California - * - * src/include/access/heapam.h - * - *------------------------------------------------------------------------- - */ -#ifndef HEAPAM_H -#define HEAPAM_H - -#include "access/sdir.h" -#include "access/skey.h" -#include "nodes/lockoptions.h" -#include "nodes/primnodes.h" -#include "storage/bufpage.h" -#include "storage/lockdefs.h" -#include "utils/relcache.h" -#include "utils/snapshot.h" - - -/* "options" flag bits for heap_insert */ -#define HEAP_INSERT_SKIP_WAL 0x0001 -#define HEAP_INSERT_SKIP_FSM 0x0002 -#define HEAP_INSERT_FROZEN 0x0004 -#define HEAP_INSERT_SPECULATIVE 0x0008 -#define HEAP_INSERT_NO_LOGICAL 0x0010 - -typedef struct BulkInsertStateData *BulkInsertState; - -/* - * Possible lock modes for a tuple. - */ -typedef enum LockTupleMode -{ - /* SELECT FOR KEY SHARE */ - LockTupleKeyShare, - /* SELECT FOR SHARE */ - LockTupleShare, - /* SELECT FOR NO KEY UPDATE, and UPDATEs that don't modify key columns */ - LockTupleNoKeyExclusive, - /* SELECT FOR UPDATE, UPDATEs that modify key columns, and DELETE */ - LockTupleExclusive -} LockTupleMode; - -#define MaxLockTupleMode LockTupleExclusive - -/* - * When heap_update, heap_delete, or heap_lock_tuple fail because the target - * tuple is already outdated, they fill in this struct to provide information - * to the caller about what happened. - * ctid is the target's ctid link: it is the same as the target's TID if the - * target was deleted, or the location of the replacement tuple if the target - * was updated. - * xmax is the outdating transaction's XID. If the caller wants to visit the - * replacement tuple, it must check that this matches before believing the - * replacement is really a match. - * cmax is the outdating command's CID, but only when the failure code is - * HeapTupleSelfUpdated (i.e., something in the current transaction outdated - * the tuple); otherwise cmax is zero. (We make this restriction because - * HeapTupleHeaderGetCmax doesn't work for tuples outdated in other - * transactions.) - */ -typedef struct HeapUpdateFailureData -{ - ItemPointerData ctid; - TransactionId xmax; - CommandId cmax; -} HeapUpdateFailureData; - - -/* ---------------- - * function prototypes for heap access method - * - * heap_create, heap_create_with_catalog, and heap_drop_with_catalog - * are declared in catalog/heap.h - * ---------------- - */ - -/* in heap/heapam.c */ -extern Relation relation_open(Oid relationId, LOCKMODE lockmode); -extern Relation try_relation_open(Oid relationId, LOCKMODE lockmode); -extern Relation relation_openrv(const RangeVar *relation, LOCKMODE lockmode); -extern Relation relation_openrv_extended(const RangeVar *relation, - LOCKMODE lockmode, bool missing_ok); -extern void relation_close(Relation relation, LOCKMODE lockmode); - -extern Relation heap_open(Oid relationId, LOCKMODE lockmode); -extern Relation heap_openrv(const RangeVar *relation, LOCKMODE lockmode); -extern Relation heap_openrv_extended(const RangeVar *relation, - LOCKMODE lockmode, bool missing_ok); - -#define heap_close(r,l) relation_close(r,l) - -/* struct definitions appear in relscan.h */ -typedef struct HeapScanDescData *HeapScanDesc; -typedef struct ParallelHeapScanDescData *ParallelHeapScanDesc; - -/* - * HeapScanIsValid - * True iff the heap scan is valid. - */ -#define HeapScanIsValid(scan) PointerIsValid(scan) - -extern HeapScanDesc heap_beginscan(Relation relation, Snapshot snapshot, - int nkeys, ScanKey key); -extern HeapScanDesc heap_beginscan_catalog(Relation relation, int nkeys, - ScanKey key); -extern HeapScanDesc heap_beginscan_strat(Relation relation, Snapshot snapshot, - int nkeys, ScanKey key, - bool allow_strat, bool allow_sync); -extern HeapScanDesc heap_beginscan_bm(Relation relation, Snapshot snapshot, - int nkeys, ScanKey key); -extern HeapScanDesc heap_beginscan_sampling(Relation relation, - Snapshot snapshot, int nkeys, ScanKey key, - bool allow_strat, bool allow_sync, bool allow_pagemode); -extern void heap_setscanlimits(HeapScanDesc scan, BlockNumber startBlk, - BlockNumber endBlk); -extern void heapgetpage(HeapScanDesc scan, BlockNumber page); -extern void heap_rescan(HeapScanDesc scan, ScanKey key); -extern void heap_rescan_set_params(HeapScanDesc scan, ScanKey key, - bool allow_strat, bool allow_sync, bool allow_pagemode); -extern void heap_endscan(HeapScanDesc scan); -extern HeapTuple heap_getnext(HeapScanDesc scan, ScanDirection direction); - -extern Size heap_parallelscan_estimate(Snapshot snapshot); -extern void heap_parallelscan_initialize(ParallelHeapScanDesc target, - Relation relation, Snapshot snapshot); -extern void heap_parallelscan_reinitialize(ParallelHeapScanDesc parallel_scan); -extern HeapScanDesc heap_beginscan_parallel(Relation, ParallelHeapScanDesc); - -extern bool heap_fetch(Relation relation, Snapshot snapshot, - HeapTuple tuple, Buffer *userbuf, bool keep_buf, - Relation stats_relation); -extern bool heap_hot_search_buffer(ItemPointer tid, Relation relation, - Buffer buffer, Snapshot snapshot, HeapTuple heapTuple, - bool *all_dead, bool first_call); -extern bool heap_hot_search(ItemPointer tid, Relation relation, - Snapshot snapshot, bool *all_dead); - -extern void heap_get_latest_tid(Relation relation, Snapshot snapshot, - ItemPointer tid); -extern void setLastTid(const ItemPointer tid); - -extern BulkInsertState GetBulkInsertState(void); -extern void FreeBulkInsertState(BulkInsertState); -extern void ReleaseBulkInsertStatePin(BulkInsertState bistate); - -extern Oid heap_insert(Relation relation, HeapTuple tup, CommandId cid, - int options, BulkInsertState bistate); -extern void heap_multi_insert(Relation relation, HeapTuple *tuples, int ntuples, - CommandId cid, int options, BulkInsertState bistate); -extern HTSU_Result heap_delete(Relation relation, ItemPointer tid, - CommandId cid, Snapshot crosscheck, bool wait, - HeapUpdateFailureData *hufd); -extern void heap_finish_speculative(Relation relation, HeapTuple tuple); -extern void heap_abort_speculative(Relation relation, HeapTuple tuple); -extern HTSU_Result heap_update(Relation relation, ItemPointer otid, - HeapTuple newtup, - CommandId cid, Snapshot crosscheck, bool wait, - HeapUpdateFailureData *hufd, LockTupleMode *lockmode); -extern HTSU_Result heap_lock_tuple(Relation relation, HeapTuple tuple, - CommandId cid, LockTupleMode mode, LockWaitPolicy wait_policy, - bool follow_update, - Buffer *buffer, HeapUpdateFailureData *hufd); -extern void heap_inplace_update(Relation relation, HeapTuple tuple); -extern bool heap_freeze_tuple(HeapTupleHeader tuple, - TransactionId relfrozenxid, TransactionId relminmxid, - TransactionId cutoff_xid, TransactionId cutoff_multi); -extern bool heap_tuple_needs_freeze(HeapTupleHeader tuple, TransactionId cutoff_xid, - MultiXactId cutoff_multi, Buffer buf); -extern bool heap_tuple_needs_eventual_freeze(HeapTupleHeader tuple); - -extern Oid simple_heap_insert(Relation relation, HeapTuple tup); -extern void simple_heap_delete(Relation relation, ItemPointer tid); -extern void simple_heap_update(Relation relation, ItemPointer otid, - HeapTuple tup); - -extern void heap_sync(Relation relation); -extern void heap_update_snapshot(HeapScanDesc scan, Snapshot snapshot); - -/* in heap/pruneheap.c */ -extern void heap_page_prune_opt(Relation relation, Buffer buffer); -extern int heap_page_prune(Relation relation, Buffer buffer, - TransactionId OldestXmin, - bool report_stats, TransactionId *latestRemovedXid); -extern void heap_page_prune_execute(Buffer buffer, - OffsetNumber *redirected, int nredirected, - OffsetNumber *nowdead, int ndead, - OffsetNumber *nowunused, int nunused); -extern void heap_get_root_tuples(Page page, OffsetNumber *root_offsets); - -/* in heap/syncscan.c */ -extern void ss_report_location(Relation rel, BlockNumber location); -extern BlockNumber ss_get_location(Relation rel, BlockNumber relnblocks); -extern void SyncScanShmemInit(void); -extern Size SyncScanShmemSize(void); - -#endif /* HEAPAM_H */ diff --git a/parser/include/access/htup.h b/parser/include/access/htup.h index 61b3e686..791883c4 100644 --- a/parser/include/access/htup.h +++ b/parser/include/access/htup.h @@ -4,7 +4,7 @@ * POSTGRES heap tuple definitions. * * - * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/access/htup.h @@ -64,6 +64,7 @@ typedef struct HeapTupleData uint32 t_len; /* length of *t_data */ ItemPointerData t_self; /* SelfItemPointer */ Oid t_tableOid; /* table the tuple came from */ +#define FIELDNO_HEAPTUPLEDATA_DATA 3 HeapTupleHeader t_data; /* -> tuple header and data */ } HeapTupleData; @@ -80,7 +81,7 @@ typedef HeapTupleData *HeapTuple; extern CommandId HeapTupleHeaderGetCmin(HeapTupleHeader tup); extern CommandId HeapTupleHeaderGetCmax(HeapTupleHeader tup); extern void HeapTupleHeaderAdjustCmax(HeapTupleHeader tup, - CommandId *cmax, bool *iscombo); + CommandId *cmax, bool *iscombo); /* Prototype for HeapTupleHeader accessors in heapam.c */ extern TransactionId HeapTupleGetUpdateXid(HeapTupleHeader tuple); diff --git a/parser/include/access/htup_details.h b/parser/include/access/htup_details.h index 3e1676c7..aebb1082 100644 --- a/parser/include/access/htup_details.h +++ b/parser/include/access/htup_details.h @@ -4,7 +4,7 @@ * POSTGRES heap tuple header definitions. * * - * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/access/htup_details.h @@ -15,9 +15,9 @@ #define HTUP_DETAILS_H #include "access/htup.h" +#include "access/transam.h" #include "access/tupdesc.h" #include "access/tupmacs.h" -#include "access/transam.h" #include "storage/bufpage.h" /* @@ -65,7 +65,8 @@ * fixed fields (HeapTupleHeaderData struct) * nulls bitmap (if HEAP_HASNULL is set in t_infomask) * alignment padding (as needed to make user data MAXALIGN'd) - * object ID (if HEAP_HASOID is set in t_infomask) + * object ID (if HEAP_HASOID_OLD is set in t_infomask, not created + * anymore) * user data fields * * We store five "virtual" fields Xmin, Cmin, Xmax, Cmax, and Xvac in three @@ -83,11 +84,15 @@ * * A word about t_ctid: whenever a new tuple is stored on disk, its t_ctid * is initialized with its own TID (location). If the tuple is ever updated, - * its t_ctid is changed to point to the replacement version of the tuple. - * Thus, a tuple is the latest version of its row iff XMAX is invalid or + * its t_ctid is changed to point to the replacement version of the tuple. Or + * if the tuple is moved from one partition to another, due to an update of + * the partition key, t_ctid is set to a special value to indicate that + * (see ItemPointerSetMovedPartitions). Thus, a tuple is the latest version + * of its row iff XMAX is invalid or * t_ctid points to itself (in which case, if XMAX is valid, the tuple is * either locked or deleted). One can follow the chain of t_ctid links - * to find the newest version of the row. Beware however that VACUUM might + * to find the newest version of the row, unless it was moved to a different + * partition. Beware however that VACUUM might * erase the pointed-to (newer) tuple before erasing the pointing (older) * tuple. Hence, when following a t_ctid link, it is necessary to check * to see if the referenced slot is empty or contains an unrelated tuple. @@ -134,6 +139,11 @@ typedef struct DatumTupleFields Oid datum_typeid; /* composite type OID, or RECORDOID */ /* + * datum_typeid cannot be a domain over composite, only plain composite, + * even if the datum is meant as a value of a domain-over-composite type. + * This is in line with the general principle that CoerceToDomain does not + * change the physical representation of the base type value. + * * Note: field ordering is chosen with thought that Oid might someday * widen to 64 bits. */ @@ -152,14 +162,18 @@ struct HeapTupleHeaderData /* Fields below here must match MinimalTupleData! */ +#define FIELDNO_HEAPTUPLEHEADERDATA_INFOMASK2 2 uint16 t_infomask2; /* number of attributes + various flags */ +#define FIELDNO_HEAPTUPLEHEADERDATA_INFOMASK 3 uint16 t_infomask; /* various flag bits, see below */ +#define FIELDNO_HEAPTUPLEHEADERDATA_HOFF 4 uint8 t_hoff; /* sizeof header incl. bitmap, padding */ /* ^ - 23 bytes - ^ */ +#define FIELDNO_HEAPTUPLEHEADERDATA_BITS 5 bits8 t_bits[FLEXIBLE_ARRAY_MEMBER]; /* bitmap of NULLs */ /* MORE DATA FOLLOWS AT END OF STRUCT */ @@ -175,7 +189,7 @@ struct HeapTupleHeaderData #define HEAP_HASNULL 0x0001 /* has null attribute(s) */ #define HEAP_HASVARWIDTH 0x0002 /* has variable-width attribute(s) */ #define HEAP_HASEXTERNAL 0x0004 /* has external stored attribute(s) */ -#define HEAP_HASOID 0x0008 /* has an object-id field */ +#define HEAP_HASOID_OLD 0x0008 /* has an object-id field */ #define HEAP_XMAX_KEYSHR_LOCK 0x0010 /* xmax is a key-shared locker */ #define HEAP_COMBOCID 0x0020 /* t_cid is a combo cid */ #define HEAP_XMAX_EXCL_LOCK 0x0040 /* xmax is exclusive locker */ @@ -219,7 +233,7 @@ struct HeapTupleHeaderData /* * A tuple that has HEAP_XMAX_IS_MULTI and HEAP_XMAX_LOCK_ONLY but neither of - * XMAX_EXCL_LOCK and XMAX_KEYSHR_LOCK must come from a tuple that was + * HEAP_XMAX_EXCL_LOCK and HEAP_XMAX_KEYSHR_LOCK must come from a tuple that was * share-locked in 9.2 or earlier and then pg_upgrade'd. * * In 9.2 and prior, HEAP_XMAX_IS_MULTI was only set when there were multiple @@ -276,14 +290,6 @@ struct HeapTupleHeaderData */ #define HEAP_TUPLE_HAS_MATCH HEAP_ONLY_TUPLE /* tuple has a join match */ -/* - * Special value used in t_ctid.ip_posid, to indicate that it holds a - * speculative insertion token rather than a real TID. This must be higher - * than MaxOffsetNumber, so that it can be distinguished from a valid - * offset number in a regular item pointer. - */ -#define SpecTokenOffsetNumber 0xfffe - /* * HeapTupleHeader accessor macros * @@ -436,6 +442,13 @@ do { \ ItemPointerSet(&(tup)->t_ctid, token, SpecTokenOffsetNumber) \ ) +#define HeapTupleHeaderIndicatesMovedPartitions(tup) \ + (ItemPointerGetOffsetNumber(&(tup)->t_ctid) == MovedPartitionsOffsetNumber && \ + ItemPointerGetBlockNumberNoCheck(&(tup)->t_ctid) == MovedPartitionsBlockNumber) + +#define HeapTupleHeaderSetMovedPartitions(tup) \ + ItemPointerSet(&(tup)->t_ctid, MovedPartitionsBlockNumber, MovedPartitionsOffsetNumber) + #define HeapTupleHeaderGetDatumLength(tup) \ VARSIZE(tup) @@ -462,20 +475,6 @@ do { \ (tup)->t_choice.t_datum.datum_typmod = (typmod) \ ) -#define HeapTupleHeaderGetOid(tup) \ -( \ - ((tup)->t_infomask & HEAP_HASOID) ? \ - *((Oid *) ((char *)(tup) + (tup)->t_hoff - sizeof(Oid))) \ - : \ - InvalidOid \ -) - -#define HeapTupleHeaderSetOid(tup, oid) \ -do { \ - Assert((tup)->t_infomask & HEAP_HASOID); \ - *((Oid *) ((char *)(tup) + (tup)->t_hoff - sizeof(Oid))) = (oid); \ -} while (0) - /* * Note that we stop considering a tuple HOT-updated as soon as it is known * aborted or the would-be updating transaction is known aborted. For best @@ -565,7 +564,7 @@ do { \ * MaxHeapTuplesPerPage is an upper bound on the number of tuples that can * fit on one heap page. (Note that indexes could have more, because they * use a smaller tuple header.) We arrive at the divisor because each tuple - * must be maxaligned, and it must have an associated item pointer. + * must be maxaligned, and it must have an associated line pointer. * * Note: with HOT, there could theoretically be more line pointers (not actual * tuples) than this on a heap page. However we constrain the number of line @@ -692,12 +691,6 @@ struct MinimalTupleData #define HeapTupleClearHeapOnly(tuple) \ HeapTupleHeaderClearHeapOnly((tuple)->t_data) -#define HeapTupleGetOid(tuple) \ - HeapTupleHeaderGetOid((tuple)->t_data) - -#define HeapTupleSetOid(tuple, oid) \ - HeapTupleHeaderSetOid((tuple)->t_data, (oid)) - /* ---------------- * fastgetattr @@ -722,11 +715,11 @@ struct MinimalTupleData (*(isnull) = false), \ HeapTupleNoNulls(tup) ? \ ( \ - (tupleDesc)->attrs[(attnum)-1]->attcacheoff >= 0 ? \ + TupleDescAttr((tupleDesc), (attnum)-1)->attcacheoff >= 0 ? \ ( \ - fetchatt((tupleDesc)->attrs[(attnum)-1], \ + fetchatt(TupleDescAttr((tupleDesc), (attnum)-1), \ (char *) (tup)->t_data + (tup)->t_data->t_hoff + \ - (tupleDesc)->attrs[(attnum)-1]->attcacheoff) \ + TupleDescAttr((tupleDesc), (attnum)-1)->attcacheoff)\ ) \ : \ nocachegetattr((tup), (attnum), (tupleDesc)) \ @@ -747,7 +740,7 @@ struct MinimalTupleData #else /* defined(DISABLE_COMPLEX_MACRO) */ extern Datum fastgetattr(HeapTuple tup, int attnum, TupleDesc tupleDesc, - bool *isnull); + bool *isnull); #endif /* defined(DISABLE_COMPLEX_MACRO) */ @@ -771,10 +764,7 @@ extern Datum fastgetattr(HeapTuple tup, int attnum, TupleDesc tupleDesc, ((attnum) > 0) ? \ ( \ ((attnum) > (int) HeapTupleHeaderGetNatts((tup)->t_data)) ? \ - ( \ - (*(isnull) = true), \ - (Datum)NULL \ - ) \ + getmissingattr((tupleDesc), (attnum), (isnull)) \ : \ fastgetattr((tup), (attnum), (tupleDesc), (isnull)) \ ) \ @@ -785,40 +775,45 @@ extern Datum fastgetattr(HeapTuple tup, int attnum, TupleDesc tupleDesc, /* prototypes for functions in common/heaptuple.c */ extern Size heap_compute_data_size(TupleDesc tupleDesc, - Datum *values, bool *isnull); + Datum *values, bool *isnull); extern void heap_fill_tuple(TupleDesc tupleDesc, - Datum *values, bool *isnull, - char *data, Size data_size, - uint16 *infomask, bits8 *bit); -extern bool heap_attisnull(HeapTuple tup, int attnum); + Datum *values, bool *isnull, + char *data, Size data_size, + uint16 *infomask, bits8 *bit); +extern bool heap_attisnull(HeapTuple tup, int attnum, TupleDesc tupleDesc); extern Datum nocachegetattr(HeapTuple tup, int attnum, - TupleDesc att); + TupleDesc att); extern Datum heap_getsysattr(HeapTuple tup, int attnum, TupleDesc tupleDesc, - bool *isnull); + bool *isnull); +extern Datum getmissingattr(TupleDesc tupleDesc, + int attnum, bool *isnull); extern HeapTuple heap_copytuple(HeapTuple tuple); extern void heap_copytuple_with_tuple(HeapTuple src, HeapTuple dest); extern Datum heap_copy_tuple_as_datum(HeapTuple tuple, TupleDesc tupleDesc); extern HeapTuple heap_form_tuple(TupleDesc tupleDescriptor, - Datum *values, bool *isnull); + Datum *values, bool *isnull); extern HeapTuple heap_modify_tuple(HeapTuple tuple, - TupleDesc tupleDesc, - Datum *replValues, - bool *replIsnull, - bool *doReplace); + TupleDesc tupleDesc, + Datum *replValues, + bool *replIsnull, + bool *doReplace); extern HeapTuple heap_modify_tuple_by_cols(HeapTuple tuple, - TupleDesc tupleDesc, - int nCols, - int *replCols, - Datum *replValues, - bool *replIsnull); + TupleDesc tupleDesc, + int nCols, + int *replCols, + Datum *replValues, + bool *replIsnull); extern void heap_deform_tuple(HeapTuple tuple, TupleDesc tupleDesc, - Datum *values, bool *isnull); + Datum *values, bool *isnull); extern void heap_freetuple(HeapTuple htup); extern MinimalTuple heap_form_minimal_tuple(TupleDesc tupleDescriptor, - Datum *values, bool *isnull); + Datum *values, bool *isnull); extern void heap_free_minimal_tuple(MinimalTuple mtup); extern MinimalTuple heap_copy_minimal_tuple(MinimalTuple mtup); extern HeapTuple heap_tuple_from_minimal_tuple(MinimalTuple mtup); extern MinimalTuple minimal_tuple_from_heap_tuple(HeapTuple htup); +extern size_t varsize_any(void *p); +extern HeapTuple heap_expand_tuple(HeapTuple sourceTuple, TupleDesc tupleDesc); +extern MinimalTuple minimal_expand_tuple(HeapTuple sourceTuple, TupleDesc tupleDesc); #endif /* HTUP_DETAILS_H */ diff --git a/parser/include/access/itup.h b/parser/include/access/itup.h index a94e7948..b9c41d34 100644 --- a/parser/include/access/itup.h +++ b/parser/include/access/itup.h @@ -4,7 +4,7 @@ * POSTGRES index tuple definitions. * * - * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/access/itup.h @@ -41,7 +41,7 @@ typedef struct IndexTupleData * * 15th (high) bit: has nulls * 14th bit: has var-width attributes - * 13th bit: unused + * 13th bit: AM-defined meaning * 12-0 bit: size of tuple * --------------- */ @@ -63,12 +63,12 @@ typedef IndexAttributeBitMapData * IndexAttributeBitMap; * t_info manipulation macros */ #define INDEX_SIZE_MASK 0x1FFF -/* bit 0x2000 is reserved for index-AM specific usage */ +#define INDEX_AM_RESERVED_BIT 0x2000 /* reserved for index-AM specific + * usage */ #define INDEX_VAR_MASK 0x4000 #define INDEX_NULL_MASK 0x8000 -#define IndexTupleSize(itup) ((Size) (((IndexTuple) (itup))->t_info & INDEX_SIZE_MASK)) -#define IndexTupleDSize(itup) ((Size) ((itup).t_info & INDEX_SIZE_MASK)) +#define IndexTupleSize(itup) ((Size) ((itup)->t_info & INDEX_SIZE_MASK)) #define IndexTupleHasNulls(itup) ((((IndexTuple) (itup))->t_info & INDEX_NULL_MASK)) #define IndexTupleHasVarwidths(itup) ((((IndexTuple) (itup))->t_info & INDEX_VAR_MASK)) @@ -103,11 +103,11 @@ typedef IndexAttributeBitMapData * IndexAttributeBitMap; *(isnull) = false, \ !IndexTupleHasNulls(tup) ? \ ( \ - (tupleDesc)->attrs[(attnum)-1]->attcacheoff >= 0 ? \ + TupleDescAttr((tupleDesc), (attnum)-1)->attcacheoff >= 0 ? \ ( \ - fetchatt((tupleDesc)->attrs[(attnum)-1], \ + fetchatt(TupleDescAttr((tupleDesc), (attnum)-1), \ (char *) (tup) + IndexInfoFindDataOffset((tup)->t_info) \ - + (tupleDesc)->attrs[(attnum)-1]->attcacheoff) \ + + TupleDescAttr((tupleDesc), (attnum)-1)->attcacheoff) \ ) \ : \ nocache_index_getattr((tup), (attnum), (tupleDesc)) \ @@ -131,9 +131,17 @@ typedef IndexAttributeBitMapData * IndexAttributeBitMap; * fit on one index page. An index tuple must have either data or a null * bitmap, so we can safely assume it's at least 1 byte bigger than a bare * IndexTupleData struct. We arrive at the divisor because each tuple - * must be maxaligned, and it must have an associated item pointer. + * must be maxaligned, and it must have an associated line pointer. + * + * To be index-type-independent, this does not account for any special space + * on the page, and is thus conservative. + * + * Note: in btree non-leaf pages, the first tuple has no key (it's implicitly + * minus infinity), thus breaking the "at least 1 byte bigger" assumption. + * On such a page, N tuples could take one MAXALIGN quantum less space than + * estimated here, seemingly allowing one more tuple than estimated here. + * But such a page always has at least MAXALIGN special space, so we're safe. */ -#define MinIndexTupleSize MAXALIGN(sizeof(IndexTupleData) + 1) #define MaxIndexTuplesPerPage \ ((int) ((BLCKSZ - SizeOfPageHeaderData) / \ (MAXALIGN(sizeof(IndexTupleData) + 1) + sizeof(ItemIdData)))) @@ -141,11 +149,13 @@ typedef IndexAttributeBitMapData * IndexAttributeBitMap; /* routines in indextuple.c */ extern IndexTuple index_form_tuple(TupleDesc tupleDescriptor, - Datum *values, bool *isnull); + Datum *values, bool *isnull); extern Datum nocache_index_getattr(IndexTuple tup, int attnum, - TupleDesc tupleDesc); + TupleDesc tupleDesc); extern void index_deform_tuple(IndexTuple tup, TupleDesc tupleDescriptor, - Datum *values, bool *isnull); + Datum *values, bool *isnull); extern IndexTuple CopyIndexTuple(IndexTuple source); +extern IndexTuple index_truncate_tuple(TupleDesc sourceDescriptor, + IndexTuple source, int leavenatts); #endif /* ITUP_H */ diff --git a/parser/include/access/parallel.h b/parser/include/access/parallel.h index f8e467f2..fc6a5603 100644 --- a/parser/include/access/parallel.h +++ b/parser/include/access/parallel.h @@ -3,7 +3,7 @@ * parallel.h * Infrastructure for launching parallel workers * - * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/access/parallel.h @@ -33,7 +33,8 @@ typedef struct ParallelContext { dlist_node node; SubTransactionId subid; - int nworkers; + int nworkers; /* Maximum number of workers to launch */ + int nworkers_to_launch; /* Actual number of workers to launch */ int nworkers_launched; char *library_name; char *function_name; @@ -43,19 +44,29 @@ typedef struct ParallelContext void *private_memory; shm_toc *toc; ParallelWorkerInfo *worker; - bool *any_message_received; + int nknown_attached_workers; + bool *known_attached_workers; } ParallelContext; +typedef struct ParallelWorkerContext +{ + dsm_segment *seg; + shm_toc *toc; +} ParallelWorkerContext; + extern volatile bool ParallelMessagePending; extern PGDLLIMPORT int ParallelWorkerNumber; extern PGDLLIMPORT bool InitializingParallelWorker; #define IsParallelWorker() (ParallelWorkerNumber >= 0) -extern ParallelContext *CreateParallelContext(const char *library_name, const char *function_name, int nworkers); +extern ParallelContext *CreateParallelContext(const char *library_name, + const char *function_name, int nworkers); extern void InitializeParallelDSM(ParallelContext *pcxt); extern void ReinitializeParallelDSM(ParallelContext *pcxt); +extern void ReinitializeParallelWorkers(ParallelContext *pcxt, int nworkers_to_launch); extern void LaunchParallelWorkers(ParallelContext *pcxt); +extern void WaitForParallelWorkersToAttach(ParallelContext *pcxt); extern void WaitForParallelWorkersToFinish(ParallelContext *pcxt); extern void DestroyParallelContext(ParallelContext *pcxt); extern bool ParallelContextActive(void); diff --git a/parser/include/access/printtup.h b/parser/include/access/printtup.h index 641715e4..c367825b 100644 --- a/parser/include/access/printtup.h +++ b/parser/include/access/printtup.h @@ -4,7 +4,7 @@ * * * - * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/access/printtup.h @@ -20,16 +20,16 @@ extern DestReceiver *printtup_create_DR(CommandDest dest); extern void SetRemoteDestReceiverParams(DestReceiver *self, Portal portal); -extern void SendRowDescriptionMessage(TupleDesc typeinfo, List *targetlist, - int16 *formats); +extern void SendRowDescriptionMessage(StringInfo buf, + TupleDesc typeinfo, List *targetlist, int16 *formats); extern void debugStartup(DestReceiver *self, int operation, - TupleDesc typeinfo); + TupleDesc typeinfo); extern bool debugtup(TupleTableSlot *slot, DestReceiver *self); /* XXX these are really in executor/spi.c */ extern void spi_dest_startup(DestReceiver *self, int operation, - TupleDesc typeinfo); + TupleDesc typeinfo); extern bool spi_printtup(TupleTableSlot *slot, DestReceiver *self); #endif /* PRINTTUP_H */ diff --git a/parser/include/access/relation.h b/parser/include/access/relation.h new file mode 100644 index 00000000..2ed0f8ea --- /dev/null +++ b/parser/include/access/relation.h @@ -0,0 +1,28 @@ +/*------------------------------------------------------------------------- + * + * relation.h + * Generic relation related routines. + * + * + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group + * Portions Copyright (c) 1994, Regents of the University of California + * + * src/include/access/relation.h + * + *------------------------------------------------------------------------- + */ +#ifndef ACCESS_RELATION_H +#define ACCESS_RELATION_H + +#include "nodes/primnodes.h" +#include "storage/lockdefs.h" +#include "utils/relcache.h" + +extern Relation relation_open(Oid relationId, LOCKMODE lockmode); +extern Relation try_relation_open(Oid relationId, LOCKMODE lockmode); +extern Relation relation_openrv(const RangeVar *relation, LOCKMODE lockmode); +extern Relation relation_openrv_extended(const RangeVar *relation, + LOCKMODE lockmode, bool missing_ok); +extern void relation_close(Relation relation, LOCKMODE lockmode); + +#endif /* ACCESS_RELATION_H */ diff --git a/parser/include/access/relscan.h b/parser/include/access/relscan.h new file mode 100644 index 00000000..6f025883 --- /dev/null +++ b/parser/include/access/relscan.h @@ -0,0 +1,176 @@ +/*------------------------------------------------------------------------- + * + * relscan.h + * POSTGRES relation scan descriptor definitions. + * + * + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group + * Portions Copyright (c) 1994, Regents of the University of California + * + * src/include/access/relscan.h + * + *------------------------------------------------------------------------- + */ +#ifndef RELSCAN_H +#define RELSCAN_H + +#include "access/htup_details.h" +#include "access/itup.h" +#include "port/atomics.h" +#include "storage/buf.h" +#include "storage/spin.h" +#include "utils/relcache.h" + + +struct ParallelTableScanDescData; + +/* + * Generic descriptor for table scans. This is the base-class for table scans, + * which needs to be embedded in the scans of individual AMs. + */ +typedef struct TableScanDescData +{ + /* scan parameters */ + Relation rs_rd; /* heap relation descriptor */ + struct SnapshotData *rs_snapshot; /* snapshot to see */ + int rs_nkeys; /* number of scan keys */ + struct ScanKeyData *rs_key; /* array of scan key descriptors */ + + /* + * Information about type and behaviour of the scan, a bitmask of members + * of the ScanOptions enum (see tableam.h). + */ + uint32 rs_flags; + + struct ParallelTableScanDescData *rs_parallel; /* parallel scan + * information */ + +} TableScanDescData; +typedef struct TableScanDescData *TableScanDesc; + +/* + * Shared state for parallel table scan. + * + * Each backend participating in a parallel table scan has its own + * TableScanDesc in backend-private memory, and those objects all contain a + * pointer to this structure. The information here must be sufficient to + * properly initialize each new TableScanDesc as workers join the scan, and it + * must act as a information what to scan for those workers. + */ +typedef struct ParallelTableScanDescData +{ + Oid phs_relid; /* OID of relation to scan */ + bool phs_syncscan; /* report location to syncscan logic? */ + bool phs_snapshot_any; /* SnapshotAny, not phs_snapshot_data? */ + Size phs_snapshot_off; /* data for snapshot */ +} ParallelTableScanDescData; +typedef struct ParallelTableScanDescData *ParallelTableScanDesc; + +/* + * Shared state for parallel table scans, for block oriented storage. + */ +typedef struct ParallelBlockTableScanDescData +{ + ParallelTableScanDescData base; + + BlockNumber phs_nblocks; /* # blocks in relation at start of scan */ + slock_t phs_mutex; /* mutual exclusion for setting startblock */ + BlockNumber phs_startblock; /* starting block number */ + pg_atomic_uint64 phs_nallocated; /* number of blocks allocated to + * workers so far. */ +} ParallelBlockTableScanDescData; +typedef struct ParallelBlockTableScanDescData *ParallelBlockTableScanDesc; + +/* + * Base class for fetches from a table via an index. This is the base-class + * for such scans, which needs to be embedded in the respective struct for + * individual AMs. + */ +typedef struct IndexFetchTableData +{ + Relation rel; +} IndexFetchTableData; + +/* + * We use the same IndexScanDescData structure for both amgettuple-based + * and amgetbitmap-based index scans. Some fields are only relevant in + * amgettuple-based scans. + */ +typedef struct IndexScanDescData +{ + /* scan parameters */ + Relation heapRelation; /* heap relation descriptor, or NULL */ + Relation indexRelation; /* index relation descriptor */ + struct SnapshotData *xs_snapshot; /* snapshot to see */ + int numberOfKeys; /* number of index qualifier conditions */ + int numberOfOrderBys; /* number of ordering operators */ + struct ScanKeyData *keyData; /* array of index qualifier descriptors */ + struct ScanKeyData *orderByData; /* array of ordering op descriptors */ + bool xs_want_itup; /* caller requests index tuples */ + bool xs_temp_snap; /* unregister snapshot at scan end? */ + + /* signaling to index AM about killing index tuples */ + bool kill_prior_tuple; /* last-returned tuple is dead */ + bool ignore_killed_tuples; /* do not return killed entries */ + bool xactStartedInRecovery; /* prevents killing/seeing killed + * tuples */ + + /* index access method's private state */ + void *opaque; /* access-method-specific info */ + + /* + * In an index-only scan, a successful amgettuple call must fill either + * xs_itup (and xs_itupdesc) or xs_hitup (and xs_hitupdesc) to provide the + * data returned by the scan. It can fill both, in which case the heap + * format will be used. + */ + IndexTuple xs_itup; /* index tuple returned by AM */ + struct TupleDescData *xs_itupdesc; /* rowtype descriptor of xs_itup */ + HeapTuple xs_hitup; /* index data returned by AM, as HeapTuple */ + struct TupleDescData *xs_hitupdesc; /* rowtype descriptor of xs_hitup */ + + ItemPointerData xs_heaptid; /* result */ + bool xs_heap_continue; /* T if must keep walking, potential + * further results */ + IndexFetchTableData *xs_heapfetch; + + bool xs_recheck; /* T means scan keys must be rechecked */ + + /* + * When fetching with an ordering operator, the values of the ORDER BY + * expressions of the last returned tuple, according to the index. If + * xs_recheckorderby is true, these need to be rechecked just like the + * scan keys, and the values returned here are a lower-bound on the actual + * values. + */ + Datum *xs_orderbyvals; + bool *xs_orderbynulls; + bool xs_recheckorderby; + + /* parallel index scan information, in shared memory */ + struct ParallelIndexScanDescData *parallel_scan; +} IndexScanDescData; + +/* Generic structure for parallel scans */ +typedef struct ParallelIndexScanDescData +{ + Oid ps_relid; + Oid ps_indexid; + Size ps_offset; /* Offset in bytes of am specific structure */ + char ps_snapshot_data[FLEXIBLE_ARRAY_MEMBER]; +} ParallelIndexScanDescData; + +struct TupleTableSlot; + +/* Struct for storage-or-index scans of system tables */ +typedef struct SysScanDescData +{ + Relation heap_rel; /* catalog being scanned */ + Relation irel; /* NULL if doing heap scan */ + struct TableScanDescData *scan; /* only valid in storage-scan case */ + struct IndexScanDescData *iscan; /* only valid in index-scan case */ + struct SnapshotData *snapshot; /* snapshot to unregister at end of scan */ + struct TupleTableSlot *slot; +} SysScanDescData; + +#endif /* RELSCAN_H */ diff --git a/parser/include/access/rmgrlist.h b/parser/include/access/rmgrlist.h index 2f43c199..6c15df7e 100644 --- a/parser/include/access/rmgrlist.h +++ b/parser/include/access/rmgrlist.h @@ -6,7 +6,7 @@ * by the PG_RMGR macro, which is not defined in this file; it can be * defined by the caller for special purposes. * - * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/access/rmgrlist.h @@ -36,7 +36,7 @@ PG_RMGR(RM_RELMAP_ID, "RelMap", relmap_redo, relmap_desc, relmap_identify, NULL, PG_RMGR(RM_STANDBY_ID, "Standby", standby_redo, standby_desc, standby_identify, NULL, NULL, NULL) PG_RMGR(RM_HEAP2_ID, "Heap2", heap2_redo, heap2_desc, heap2_identify, NULL, NULL, heap_mask) PG_RMGR(RM_HEAP_ID, "Heap", heap_redo, heap_desc, heap_identify, NULL, NULL, heap_mask) -PG_RMGR(RM_BTREE_ID, "Btree", btree_redo, btree_desc, btree_identify, NULL, NULL, btree_mask) +PG_RMGR(RM_BTREE_ID, "Btree", btree_redo, btree_desc, btree_identify, btree_xlog_startup, btree_xlog_cleanup, btree_mask) PG_RMGR(RM_HASH_ID, "Hash", hash_redo, hash_desc, hash_identify, NULL, NULL, hash_mask) PG_RMGR(RM_GIN_ID, "Gin", gin_redo, gin_desc, gin_identify, gin_xlog_startup, gin_xlog_cleanup, gin_mask) PG_RMGR(RM_GIST_ID, "Gist", gist_redo, gist_desc, gist_identify, gist_xlog_startup, gist_xlog_cleanup, gist_mask) diff --git a/parser/include/access/sdir.h b/parser/include/access/sdir.h index 65eab485..23feb909 100644 --- a/parser/include/access/sdir.h +++ b/parser/include/access/sdir.h @@ -4,7 +4,7 @@ * POSTGRES scan direction definitions. * * - * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/access/sdir.h diff --git a/parser/include/access/skey.h b/parser/include/access/skey.h index 2f4814f1..7d2df1ba 100644 --- a/parser/include/access/skey.h +++ b/parser/include/access/skey.h @@ -4,7 +4,7 @@ * POSTGRES scan key definitions. * * - * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/access/skey.h @@ -127,25 +127,25 @@ typedef ScanKeyData *ScanKey; * prototypes for functions in access/common/scankey.c */ extern void ScanKeyInit(ScanKey entry, - AttrNumber attributeNumber, - StrategyNumber strategy, - RegProcedure procedure, - Datum argument); + AttrNumber attributeNumber, + StrategyNumber strategy, + RegProcedure procedure, + Datum argument); extern void ScanKeyEntryInitialize(ScanKey entry, - int flags, - AttrNumber attributeNumber, - StrategyNumber strategy, - Oid subtype, - Oid collation, - RegProcedure procedure, - Datum argument); + int flags, + AttrNumber attributeNumber, + StrategyNumber strategy, + Oid subtype, + Oid collation, + RegProcedure procedure, + Datum argument); extern void ScanKeyEntryInitializeWithInfo(ScanKey entry, - int flags, - AttrNumber attributeNumber, - StrategyNumber strategy, - Oid subtype, - Oid collation, - FmgrInfo *finfo, - Datum argument); + int flags, + AttrNumber attributeNumber, + StrategyNumber strategy, + Oid subtype, + Oid collation, + FmgrInfo *finfo, + Datum argument); #endif /* SKEY_H */ diff --git a/parser/include/access/stratnum.h b/parser/include/access/stratnum.h index 91d57605..d280f7e4 100644 --- a/parser/include/access/stratnum.h +++ b/parser/include/access/stratnum.h @@ -4,7 +4,7 @@ * POSTGRES strategy number definitions. * * - * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/access/stratnum.h @@ -34,6 +34,13 @@ typedef uint16 StrategyNumber; #define BTMaxStrategyNumber 5 +/* + * Strategy numbers for hash indexes. There's only one valid strategy for + * hashing: equality. + */ +#define HTEqualStrategyNumber 1 + +#define HTMaxStrategyNumber 1 /* * Strategy numbers common to (some) GiST, SP-GiST and BRIN opclasses. @@ -68,8 +75,9 @@ typedef uint16 StrategyNumber; #define RTSubEqualStrategyNumber 25 /* for inet <<= */ #define RTSuperStrategyNumber 26 /* for inet << */ #define RTSuperEqualStrategyNumber 27 /* for inet >>= */ +#define RTPrefixStrategyNumber 28 /* for text ^@ */ -#define RTMaxStrategyNumber 27 +#define RTMaxStrategyNumber 28 #endif /* STRATNUM_H */ diff --git a/parser/include/access/sysattr.h b/parser/include/access/sysattr.h index b88c5e11..734976d5 100644 --- a/parser/include/access/sysattr.h +++ b/parser/include/access/sysattr.h @@ -4,7 +4,7 @@ * POSTGRES system attribute definitions. * * - * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/access/sysattr.h @@ -19,12 +19,11 @@ * Attribute numbers for the system-defined attributes */ #define SelfItemPointerAttributeNumber (-1) -#define ObjectIdAttributeNumber (-2) -#define MinTransactionIdAttributeNumber (-3) -#define MinCommandIdAttributeNumber (-4) -#define MaxTransactionIdAttributeNumber (-5) -#define MaxCommandIdAttributeNumber (-6) -#define TableOidAttributeNumber (-7) -#define FirstLowInvalidHeapAttributeNumber (-8) +#define MinTransactionIdAttributeNumber (-2) +#define MinCommandIdAttributeNumber (-3) +#define MaxTransactionIdAttributeNumber (-4) +#define MaxCommandIdAttributeNumber (-5) +#define TableOidAttributeNumber (-6) +#define FirstLowInvalidHeapAttributeNumber (-7) #endif /* SYSATTR_H */ diff --git a/parser/include/access/table.h b/parser/include/access/table.h new file mode 100644 index 00000000..cf0ef7b3 --- /dev/null +++ b/parser/include/access/table.h @@ -0,0 +1,27 @@ +/*------------------------------------------------------------------------- + * + * table.h + * Generic routines for table related code. + * + * + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group + * Portions Copyright (c) 1994, Regents of the University of California + * + * src/include/access/table.h + * + *------------------------------------------------------------------------- + */ +#ifndef TABLE_H +#define TABLE_H + +#include "nodes/primnodes.h" +#include "storage/lockdefs.h" +#include "utils/relcache.h" + +extern Relation table_open(Oid relationId, LOCKMODE lockmode); +extern Relation table_openrv(const RangeVar *relation, LOCKMODE lockmode); +extern Relation table_openrv_extended(const RangeVar *relation, + LOCKMODE lockmode, bool missing_ok); +extern void table_close(Relation relation, LOCKMODE lockmode); + +#endif /* TABLE_H */ diff --git a/parser/include/access/tableam.h b/parser/include/access/tableam.h new file mode 100644 index 00000000..0d28f01c --- /dev/null +++ b/parser/include/access/tableam.h @@ -0,0 +1,1825 @@ +/*------------------------------------------------------------------------- + * + * tableam.h + * POSTGRES table access method definitions. + * + * + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group + * Portions Copyright (c) 1994, Regents of the University of California + * + * src/include/access/tableam.h + * + * NOTES + * See tableam.sgml for higher level documentation. + * + *------------------------------------------------------------------------- + */ +#ifndef TABLEAM_H +#define TABLEAM_H + +#include "access/relscan.h" +#include "access/sdir.h" +#include "utils/guc.h" +#include "utils/rel.h" +#include "utils/snapshot.h" + + +#define DEFAULT_TABLE_ACCESS_METHOD "heap" + +/* GUCs */ +extern char *default_table_access_method; +extern bool synchronize_seqscans; + + +struct BulkInsertStateData; +struct IndexInfo; +struct SampleScanState; +struct TBMIterateResult; +struct VacuumParams; +struct ValidateIndexState; + +/* + * Bitmask values for the flags argument to the scan_begin callback. + */ +typedef enum ScanOptions +{ + /* one of SO_TYPE_* may be specified */ + SO_TYPE_SEQSCAN = 1 << 0, + SO_TYPE_BITMAPSCAN = 1 << 1, + SO_TYPE_SAMPLESCAN = 1 << 2, + SO_TYPE_TIDSCAN = 1 << 3, + SO_TYPE_ANALYZE = 1 << 4, + + /* several of SO_ALLOW_* may be specified */ + /* allow or disallow use of access strategy */ + SO_ALLOW_STRAT = 1 << 5, + /* report location to syncscan logic? */ + SO_ALLOW_SYNC = 1 << 6, + /* verify visibility page-at-a-time? */ + SO_ALLOW_PAGEMODE = 1 << 7, + + /* unregister snapshot at scan end? */ + SO_TEMP_SNAPSHOT = 1 << 8 +} ScanOptions; + +/* + * Result codes for table_{update,delete,lock_tuple}, and for visibility + * routines inside table AMs. + */ +typedef enum TM_Result +{ + /* + * Signals that the action succeeded (i.e. update/delete performed, lock + * was acquired) + */ + TM_Ok, + + /* The affected tuple wasn't visible to the relevant snapshot */ + TM_Invisible, + + /* The affected tuple was already modified by the calling backend */ + TM_SelfModified, + + /* + * The affected tuple was updated by another transaction. This includes + * the case where tuple was moved to another partition. + */ + TM_Updated, + + /* The affected tuple was deleted by another transaction */ + TM_Deleted, + + /* + * The affected tuple is currently being modified by another session. This + * will only be returned if table_(update/delete/lock_tuple) are + * instructed not to wait. + */ + TM_BeingModified, + + /* lock couldn't be acquired, action skipped. Only used by lock_tuple */ + TM_WouldBlock +} TM_Result; + +/* + * When table_tuple_update, table_tuple_delete, or table_tuple_lock fail + * because the target tuple is already outdated, they fill in this struct to + * provide information to the caller about what happened. + * + * ctid is the target's ctid link: it is the same as the target's TID if the + * target was deleted, or the location of the replacement tuple if the target + * was updated. + * + * xmax is the outdating transaction's XID. If the caller wants to visit the + * replacement tuple, it must check that this matches before believing the + * replacement is really a match. + * + * cmax is the outdating command's CID, but only when the failure code is + * TM_SelfModified (i.e., something in the current transaction outdated the + * tuple); otherwise cmax is zero. (We make this restriction because + * HeapTupleHeaderGetCmax doesn't work for tuples outdated in other + * transactions.) + */ +typedef struct TM_FailureData +{ + ItemPointerData ctid; + TransactionId xmax; + CommandId cmax; + bool traversed; +} TM_FailureData; + +/* "options" flag bits for table_tuple_insert */ +/* TABLE_INSERT_SKIP_WAL was 0x0001; RelationNeedsWAL() now governs */ +#define TABLE_INSERT_SKIP_FSM 0x0002 +#define TABLE_INSERT_FROZEN 0x0004 +#define TABLE_INSERT_NO_LOGICAL 0x0008 + +/* flag bits for table_tuple_lock */ +/* Follow tuples whose update is in progress if lock modes don't conflict */ +#define TUPLE_LOCK_FLAG_LOCK_UPDATE_IN_PROGRESS (1 << 0) +/* Follow update chain and lock latest version of tuple */ +#define TUPLE_LOCK_FLAG_FIND_LAST_VERSION (1 << 1) + + +/* Typedef for callback function for table_index_build_scan */ +typedef void (*IndexBuildCallback) (Relation index, + ItemPointer tid, + Datum *values, + bool *isnull, + bool tupleIsAlive, + void *state); + +/* + * API struct for a table AM. Note this must be allocated in a + * server-lifetime manner, typically as a static const struct, which then gets + * returned by FormData_pg_am.amhandler. + * + * In most cases it's not appropriate to call the callbacks directly, use the + * table_* wrapper functions instead. + * + * GetTableAmRoutine() asserts that required callbacks are filled in, remember + * to update when adding a callback. + */ +typedef struct TableAmRoutine +{ + /* this must be set to T_TableAmRoutine */ + NodeTag type; + + + /* ------------------------------------------------------------------------ + * Slot related callbacks. + * ------------------------------------------------------------------------ + */ + + /* + * Return slot implementation suitable for storing a tuple of this AM. + */ + const TupleTableSlotOps *(*slot_callbacks) (Relation rel); + + + /* ------------------------------------------------------------------------ + * Table scan callbacks. + * ------------------------------------------------------------------------ + */ + + /* + * Start a scan of `rel`. The callback has to return a TableScanDesc, + * which will typically be embedded in a larger, AM specific, struct. + * + * If nkeys != 0, the results need to be filtered by those scan keys. + * + * pscan, if not NULL, will have already been initialized with + * parallelscan_initialize(), and has to be for the same relation. Will + * only be set coming from table_beginscan_parallel(). + * + * `flags` is a bitmask indicating the type of scan (ScanOptions's + * SO_TYPE_*, currently only one may be specified), options controlling + * the scan's behaviour (ScanOptions's SO_ALLOW_*, several may be + * specified, an AM may ignore unsupported ones) and whether the snapshot + * needs to be deallocated at scan_end (ScanOptions's SO_TEMP_SNAPSHOT). + */ + TableScanDesc (*scan_begin) (Relation rel, + Snapshot snapshot, + int nkeys, struct ScanKeyData *key, + ParallelTableScanDesc pscan, + uint32 flags); + + /* + * Release resources and deallocate scan. If TableScanDesc.temp_snap, + * TableScanDesc.rs_snapshot needs to be unregistered. + */ + void (*scan_end) (TableScanDesc scan); + + /* + * Restart relation scan. If set_params is set to true, allow_{strat, + * sync, pagemode} (see scan_begin) changes should be taken into account. + */ + void (*scan_rescan) (TableScanDesc scan, struct ScanKeyData *key, + bool set_params, bool allow_strat, + bool allow_sync, bool allow_pagemode); + + /* + * Return next tuple from `scan`, store in slot. + */ + bool (*scan_getnextslot) (TableScanDesc scan, + ScanDirection direction, + TupleTableSlot *slot); + + + /* ------------------------------------------------------------------------ + * Parallel table scan related functions. + * ------------------------------------------------------------------------ + */ + + /* + * Estimate the size of shared memory needed for a parallel scan of this + * relation. The snapshot does not need to be accounted for. + */ + Size (*parallelscan_estimate) (Relation rel); + + /* + * Initialize ParallelTableScanDesc for a parallel scan of this relation. + * `pscan` will be sized according to parallelscan_estimate() for the same + * relation. + */ + Size (*parallelscan_initialize) (Relation rel, + ParallelTableScanDesc pscan); + + /* + * Reinitialize `pscan` for a new scan. `rel` will be the same relation as + * when `pscan` was initialized by parallelscan_initialize. + */ + void (*parallelscan_reinitialize) (Relation rel, + ParallelTableScanDesc pscan); + + + /* ------------------------------------------------------------------------ + * Index Scan Callbacks + * ------------------------------------------------------------------------ + */ + + /* + * Prepare to fetch tuples from the relation, as needed when fetching + * tuples for an index scan. The callback has to return an + * IndexFetchTableData, which the AM will typically embed in a larger + * structure with additional information. + * + * Tuples for an index scan can then be fetched via index_fetch_tuple. + */ + struct IndexFetchTableData *(*index_fetch_begin) (Relation rel); + + /* + * Reset index fetch. Typically this will release cross index fetch + * resources held in IndexFetchTableData. + */ + void (*index_fetch_reset) (struct IndexFetchTableData *data); + + /* + * Release resources and deallocate index fetch. + */ + void (*index_fetch_end) (struct IndexFetchTableData *data); + + /* + * Fetch tuple at `tid` into `slot`, after doing a visibility test + * according to `snapshot`. If a tuple was found and passed the visibility + * test, return true, false otherwise. + * + * Note that AMs that do not necessarily update indexes when indexed + * columns do not change, need to return the current/correct version of + * the tuple that is visible to the snapshot, even if the tid points to an + * older version of the tuple. + * + * *call_again is false on the first call to index_fetch_tuple for a tid. + * If there potentially is another tuple matching the tid, *call_again + * needs to be set to true by index_fetch_tuple, signaling to the caller + * that index_fetch_tuple should be called again for the same tid. + * + * *all_dead, if all_dead is not NULL, should be set to true by + * index_fetch_tuple iff it is guaranteed that no backend needs to see + * that tuple. Index AMs can use that to avoid returning that tid in + * future searches. + */ + bool (*index_fetch_tuple) (struct IndexFetchTableData *scan, + ItemPointer tid, + Snapshot snapshot, + TupleTableSlot *slot, + bool *call_again, bool *all_dead); + + + /* ------------------------------------------------------------------------ + * Callbacks for non-modifying operations on individual tuples + * ------------------------------------------------------------------------ + */ + + /* + * Fetch tuple at `tid` into `slot`, after doing a visibility test + * according to `snapshot`. If a tuple was found and passed the visibility + * test, returns true, false otherwise. + */ + bool (*tuple_fetch_row_version) (Relation rel, + ItemPointer tid, + Snapshot snapshot, + TupleTableSlot *slot); + + /* + * Is tid valid for a scan of this relation. + */ + bool (*tuple_tid_valid) (TableScanDesc scan, + ItemPointer tid); + + /* + * Return the latest version of the tuple at `tid`, by updating `tid` to + * point at the newest version. + */ + void (*tuple_get_latest_tid) (TableScanDesc scan, + ItemPointer tid); + + /* + * Does the tuple in `slot` satisfy `snapshot`? The slot needs to be of + * the appropriate type for the AM. + */ + bool (*tuple_satisfies_snapshot) (Relation rel, + TupleTableSlot *slot, + Snapshot snapshot); + + /* see table_compute_xid_horizon_for_tuples() */ + TransactionId (*compute_xid_horizon_for_tuples) (Relation rel, + ItemPointerData *items, + int nitems); + + + /* ------------------------------------------------------------------------ + * Manipulations of physical tuples. + * ------------------------------------------------------------------------ + */ + + /* see table_tuple_insert() for reference about parameters */ + void (*tuple_insert) (Relation rel, TupleTableSlot *slot, + CommandId cid, int options, + struct BulkInsertStateData *bistate); + + /* see table_tuple_insert_speculative() for reference about parameters */ + void (*tuple_insert_speculative) (Relation rel, + TupleTableSlot *slot, + CommandId cid, + int options, + struct BulkInsertStateData *bistate, + uint32 specToken); + + /* see table_tuple_complete_speculative() for reference about parameters */ + void (*tuple_complete_speculative) (Relation rel, + TupleTableSlot *slot, + uint32 specToken, + bool succeeded); + + /* see table_multi_insert() for reference about parameters */ + void (*multi_insert) (Relation rel, TupleTableSlot **slots, int nslots, + CommandId cid, int options, struct BulkInsertStateData *bistate); + + /* see table_tuple_delete() for reference about parameters */ + TM_Result (*tuple_delete) (Relation rel, + ItemPointer tid, + CommandId cid, + Snapshot snapshot, + Snapshot crosscheck, + bool wait, + TM_FailureData *tmfd, + bool changingPart); + + /* see table_tuple_update() for reference about parameters */ + TM_Result (*tuple_update) (Relation rel, + ItemPointer otid, + TupleTableSlot *slot, + CommandId cid, + Snapshot snapshot, + Snapshot crosscheck, + bool wait, + TM_FailureData *tmfd, + LockTupleMode *lockmode, + bool *update_indexes); + + /* see table_tuple_lock() for reference about parameters */ + TM_Result (*tuple_lock) (Relation rel, + ItemPointer tid, + Snapshot snapshot, + TupleTableSlot *slot, + CommandId cid, + LockTupleMode mode, + LockWaitPolicy wait_policy, + uint8 flags, + TM_FailureData *tmfd); + + /* + * Perform operations necessary to complete insertions made via + * tuple_insert and multi_insert with a BulkInsertState specified. In-tree + * access methods ceased to use this. + * + * Typically callers of tuple_insert and multi_insert will just pass all + * the flags that apply to them, and each AM has to decide which of them + * make sense for it, and then only take actions in finish_bulk_insert for + * those flags, and ignore others. + * + * Optional callback. + */ + void (*finish_bulk_insert) (Relation rel, int options); + + + /* ------------------------------------------------------------------------ + * DDL related functionality. + * ------------------------------------------------------------------------ + */ + + /* + * This callback needs to create a new relation filenode for `rel`, with + * appropriate durability behaviour for `persistence`. + * + * Note that only the subset of the relcache filled by + * RelationBuildLocalRelation() can be relied upon and that the relation's + * catalog entries will either not yet exist (new relation), or will still + * reference the old relfilenode. + * + * As output *freezeXid, *minmulti must be set to the values appropriate + * for pg_class.{relfrozenxid, relminmxid}. For AMs that don't need those + * fields to be filled they can be set to InvalidTransactionId and + * InvalidMultiXactId, respectively. + * + * See also table_relation_set_new_filenode(). + */ + void (*relation_set_new_filenode) (Relation rel, + const RelFileNode *newrnode, + char persistence, + TransactionId *freezeXid, + MultiXactId *minmulti); + + /* + * This callback needs to remove all contents from `rel`'s current + * relfilenode. No provisions for transactional behaviour need to be made. + * Often this can be implemented by truncating the underlying storage to + * its minimal size. + * + * See also table_relation_nontransactional_truncate(). + */ + void (*relation_nontransactional_truncate) (Relation rel); + + /* + * See table_relation_copy_data(). + * + * This can typically be implemented by directly copying the underlying + * storage, unless it contains references to the tablespace internally. + */ + void (*relation_copy_data) (Relation rel, + const RelFileNode *newrnode); + + /* See table_relation_copy_for_cluster() */ + void (*relation_copy_for_cluster) (Relation NewTable, + Relation OldTable, + Relation OldIndex, + bool use_sort, + TransactionId OldestXmin, + TransactionId *xid_cutoff, + MultiXactId *multi_cutoff, + double *num_tuples, + double *tups_vacuumed, + double *tups_recently_dead); + + /* + * React to VACUUM command on the relation. The VACUUM can be triggered by + * a user or by autovacuum. The specific actions performed by the AM will + * depend heavily on the individual AM. + * + * On entry a transaction is already established, and the relation is + * locked with a ShareUpdateExclusive lock. + * + * Note that neither VACUUM FULL (and CLUSTER), nor ANALYZE go through + * this routine, even if (for ANALYZE) it is part of the same VACUUM + * command. + * + * There probably, in the future, needs to be a separate callback to + * integrate with autovacuum's scheduling. + */ + void (*relation_vacuum) (Relation onerel, + struct VacuumParams *params, + BufferAccessStrategy bstrategy); + + /* + * Prepare to analyze block `blockno` of `scan`. The scan has been started + * with table_beginscan_analyze(). See also + * table_scan_analyze_next_block(). + * + * The callback may acquire resources like locks that are held until + * table_scan_analyze_next_tuple() returns false. It e.g. can make sense + * to hold a lock until all tuples on a block have been analyzed by + * scan_analyze_next_tuple. + * + * The callback can return false if the block is not suitable for + * sampling, e.g. because it's a metapage that could never contain tuples. + * + * XXX: This obviously is primarily suited for block-based AMs. It's not + * clear what a good interface for non block based AMs would be, so there + * isn't one yet. + */ + bool (*scan_analyze_next_block) (TableScanDesc scan, + BlockNumber blockno, + BufferAccessStrategy bstrategy); + + /* + * See table_scan_analyze_next_tuple(). + * + * Not every AM might have a meaningful concept of dead rows, in which + * case it's OK to not increment *deadrows - but note that that may + * influence autovacuum scheduling (see comment for relation_vacuum + * callback). + */ + bool (*scan_analyze_next_tuple) (TableScanDesc scan, + TransactionId OldestXmin, + double *liverows, + double *deadrows, + TupleTableSlot *slot); + + /* see table_index_build_range_scan for reference about parameters */ + double (*index_build_range_scan) (Relation table_rel, + Relation index_rel, + struct IndexInfo *index_info, + bool allow_sync, + bool anyvisible, + bool progress, + BlockNumber start_blockno, + BlockNumber numblocks, + IndexBuildCallback callback, + void *callback_state, + TableScanDesc scan); + + /* see table_index_validate_scan for reference about parameters */ + void (*index_validate_scan) (Relation table_rel, + Relation index_rel, + struct IndexInfo *index_info, + Snapshot snapshot, + struct ValidateIndexState *state); + + + /* ------------------------------------------------------------------------ + * Miscellaneous functions. + * ------------------------------------------------------------------------ + */ + + /* + * See table_relation_size(). + * + * Note that currently a few callers use the MAIN_FORKNUM size to figure + * out the range of potentially interesting blocks (brin, analyze). It's + * probable that we'll need to revise the interface for those at some + * point. + */ + uint64 (*relation_size) (Relation rel, ForkNumber forkNumber); + + + /* + * This callback should return true if the relation requires a TOAST table + * and false if it does not. It may wish to examine the relation's tuple + * descriptor before making a decision, but if it uses some other method + * of storing large values (or if it does not support them) it can simply + * return false. + */ + bool (*relation_needs_toast_table) (Relation rel); + + /* + * This callback should return the OID of the table AM that implements + * TOAST tables for this AM. If the relation_needs_toast_table callback + * always returns false, this callback is not required. + */ + Oid (*relation_toast_am) (Relation rel); + + /* + * This callback is invoked when detoasting a value stored in a toast + * table implemented by this AM. See table_relation_fetch_toast_slice() + * for more details. + */ + void (*relation_fetch_toast_slice) (Relation toastrel, Oid valueid, + int32 attrsize, + int32 sliceoffset, + int32 slicelength, + struct varlena *result); + + + /* ------------------------------------------------------------------------ + * Planner related functions. + * ------------------------------------------------------------------------ + */ + + /* + * See table_relation_estimate_size(). + * + * While block oriented, it shouldn't be too hard for an AM that doesn't + * internally use blocks to convert into a usable representation. + * + * This differs from the relation_size callback by returning size + * estimates (both relation size and tuple count) for planning purposes, + * rather than returning a currently correct estimate. + */ + void (*relation_estimate_size) (Relation rel, int32 *attr_widths, + BlockNumber *pages, double *tuples, + double *allvisfrac); + + + /* ------------------------------------------------------------------------ + * Executor related functions. + * ------------------------------------------------------------------------ + */ + + /* + * Prepare to fetch / check / return tuples from `tbmres->blockno` as part + * of a bitmap table scan. `scan` was started via table_beginscan_bm(). + * Return false if there are no tuples to be found on the page, true + * otherwise. + * + * This will typically read and pin the target block, and do the necessary + * work to allow scan_bitmap_next_tuple() to return tuples (e.g. it might + * make sense to perform tuple visibility checks at this time). For some + * AMs it will make more sense to do all the work referencing `tbmres` + * contents here, for others it might be better to defer more work to + * scan_bitmap_next_tuple. + * + * If `tbmres->blockno` is -1, this is a lossy scan and all visible tuples + * on the page have to be returned, otherwise the tuples at offsets in + * `tbmres->offsets` need to be returned. + * + * XXX: Currently this may only be implemented if the AM uses md.c as its + * storage manager, and uses ItemPointer->ip_blkid in a manner that maps + * blockids directly to the underlying storage. nodeBitmapHeapscan.c + * performs prefetching directly using that interface. This probably + * needs to be rectified at a later point. + * + * XXX: Currently this may only be implemented if the AM uses the + * visibilitymap, as nodeBitmapHeapscan.c unconditionally accesses it to + * perform prefetching. This probably needs to be rectified at a later + * point. + * + * Optional callback, but either both scan_bitmap_next_block and + * scan_bitmap_next_tuple need to exist, or neither. + */ + bool (*scan_bitmap_next_block) (TableScanDesc scan, + struct TBMIterateResult *tbmres); + + /* + * Fetch the next tuple of a bitmap table scan into `slot` and return true + * if a visible tuple was found, false otherwise. + * + * For some AMs it will make more sense to do all the work referencing + * `tbmres` contents in scan_bitmap_next_block, for others it might be + * better to defer more work to this callback. + * + * Optional callback, but either both scan_bitmap_next_block and + * scan_bitmap_next_tuple need to exist, or neither. + */ + bool (*scan_bitmap_next_tuple) (TableScanDesc scan, + struct TBMIterateResult *tbmres, + TupleTableSlot *slot); + + /* + * Prepare to fetch tuples from the next block in a sample scan. Return + * false if the sample scan is finished, true otherwise. `scan` was + * started via table_beginscan_sampling(). + * + * Typically this will first determine the target block by calling the + * TsmRoutine's NextSampleBlock() callback if not NULL, or alternatively + * perform a sequential scan over all blocks. The determined block is + * then typically read and pinned. + * + * As the TsmRoutine interface is block based, a block needs to be passed + * to NextSampleBlock(). If that's not appropriate for an AM, it + * internally needs to perform mapping between the internal and a block + * based representation. + * + * Note that it's not acceptable to hold deadlock prone resources such as + * lwlocks until scan_sample_next_tuple() has exhausted the tuples on the + * block - the tuple is likely to be returned to an upper query node, and + * the next call could be off a long while. Holding buffer pins and such + * is obviously OK. + * + * Currently it is required to implement this interface, as there's no + * alternative way (contrary e.g. to bitmap scans) to implement sample + * scans. If infeasible to implement, the AM may raise an error. + */ + bool (*scan_sample_next_block) (TableScanDesc scan, + struct SampleScanState *scanstate); + + /* + * This callback, only called after scan_sample_next_block has returned + * true, should determine the next tuple to be returned from the selected + * block using the TsmRoutine's NextSampleTuple() callback. + * + * The callback needs to perform visibility checks, and only return + * visible tuples. That obviously can mean calling NextSampleTuple() + * multiple times. + * + * The TsmRoutine interface assumes that there's a maximum offset on a + * given page, so if that doesn't apply to an AM, it needs to emulate that + * assumption somehow. + */ + bool (*scan_sample_next_tuple) (TableScanDesc scan, + struct SampleScanState *scanstate, + TupleTableSlot *slot); + +} TableAmRoutine; + + +/* ---------------------------------------------------------------------------- + * Slot functions. + * ---------------------------------------------------------------------------- + */ + +/* + * Returns slot callbacks suitable for holding tuples of the appropriate type + * for the relation. Works for tables, views, foreign tables and partitioned + * tables. + */ +extern const TupleTableSlotOps *table_slot_callbacks(Relation rel); + +/* + * Returns slot using the callbacks returned by table_slot_callbacks(), and + * registers it on *reglist. + */ +extern TupleTableSlot *table_slot_create(Relation rel, List **reglist); + + +/* ---------------------------------------------------------------------------- + * Table scan functions. + * ---------------------------------------------------------------------------- + */ + +/* + * Start a scan of `rel`. Returned tuples pass a visibility test of + * `snapshot`, and if nkeys != 0, the results are filtered by those scan keys. + */ +static inline TableScanDesc +table_beginscan(Relation rel, Snapshot snapshot, + int nkeys, struct ScanKeyData *key) +{ + uint32 flags = SO_TYPE_SEQSCAN | + SO_ALLOW_STRAT | SO_ALLOW_SYNC | SO_ALLOW_PAGEMODE; + + return rel->rd_tableam->scan_begin(rel, snapshot, nkeys, key, NULL, flags); +} + +/* + * Like table_beginscan(), but for scanning catalog. It'll automatically use a + * snapshot appropriate for scanning catalog relations. + */ +extern TableScanDesc table_beginscan_catalog(Relation rel, int nkeys, + struct ScanKeyData *key); + +/* + * Like table_beginscan(), but table_beginscan_strat() offers an extended API + * that lets the caller control whether a nondefault buffer access strategy + * can be used, and whether syncscan can be chosen (possibly resulting in the + * scan not starting from block zero). Both of these default to true with + * plain table_beginscan. + */ +static inline TableScanDesc +table_beginscan_strat(Relation rel, Snapshot snapshot, + int nkeys, struct ScanKeyData *key, + bool allow_strat, bool allow_sync) +{ + uint32 flags = SO_TYPE_SEQSCAN | SO_ALLOW_PAGEMODE; + + if (allow_strat) + flags |= SO_ALLOW_STRAT; + if (allow_sync) + flags |= SO_ALLOW_SYNC; + + return rel->rd_tableam->scan_begin(rel, snapshot, nkeys, key, NULL, flags); +} + +/* + * table_beginscan_bm is an alternative entry point for setting up a + * TableScanDesc for a bitmap heap scan. Although that scan technology is + * really quite unlike a standard seqscan, there is just enough commonality to + * make it worth using the same data structure. + */ +static inline TableScanDesc +table_beginscan_bm(Relation rel, Snapshot snapshot, + int nkeys, struct ScanKeyData *key) +{ + uint32 flags = SO_TYPE_BITMAPSCAN | SO_ALLOW_PAGEMODE; + + return rel->rd_tableam->scan_begin(rel, snapshot, nkeys, key, NULL, flags); +} + +/* + * table_beginscan_sampling is an alternative entry point for setting up a + * TableScanDesc for a TABLESAMPLE scan. As with bitmap scans, it's worth + * using the same data structure although the behavior is rather different. + * In addition to the options offered by table_beginscan_strat, this call + * also allows control of whether page-mode visibility checking is used. + */ +static inline TableScanDesc +table_beginscan_sampling(Relation rel, Snapshot snapshot, + int nkeys, struct ScanKeyData *key, + bool allow_strat, bool allow_sync, + bool allow_pagemode) +{ + uint32 flags = SO_TYPE_SAMPLESCAN; + + if (allow_strat) + flags |= SO_ALLOW_STRAT; + if (allow_sync) + flags |= SO_ALLOW_SYNC; + if (allow_pagemode) + flags |= SO_ALLOW_PAGEMODE; + + return rel->rd_tableam->scan_begin(rel, snapshot, nkeys, key, NULL, flags); +} + +/* + * table_beginscan_tid is an alternative entry point for setting up a + * TableScanDesc for a Tid scan. As with bitmap scans, it's worth using + * the same data structure although the behavior is rather different. + */ +static inline TableScanDesc +table_beginscan_tid(Relation rel, Snapshot snapshot) +{ + uint32 flags = SO_TYPE_TIDSCAN; + + return rel->rd_tableam->scan_begin(rel, snapshot, 0, NULL, NULL, flags); +} + +/* + * table_beginscan_analyze is an alternative entry point for setting up a + * TableScanDesc for an ANALYZE scan. As with bitmap scans, it's worth using + * the same data structure although the behavior is rather different. + */ +static inline TableScanDesc +table_beginscan_analyze(Relation rel) +{ + uint32 flags = SO_TYPE_ANALYZE; + + return rel->rd_tableam->scan_begin(rel, NULL, 0, NULL, NULL, flags); +} + +/* + * End relation scan. + */ +static inline void +table_endscan(TableScanDesc scan) +{ + scan->rs_rd->rd_tableam->scan_end(scan); +} + +/* + * Restart a relation scan. + */ +static inline void +table_rescan(TableScanDesc scan, + struct ScanKeyData *key) +{ + scan->rs_rd->rd_tableam->scan_rescan(scan, key, false, false, false, false); +} + +/* + * Restart a relation scan after changing params. + * + * This call allows changing the buffer strategy, syncscan, and pagemode + * options before starting a fresh scan. Note that although the actual use of + * syncscan might change (effectively, enabling or disabling reporting), the + * previously selected startblock will be kept. + */ +static inline void +table_rescan_set_params(TableScanDesc scan, struct ScanKeyData *key, + bool allow_strat, bool allow_sync, bool allow_pagemode) +{ + scan->rs_rd->rd_tableam->scan_rescan(scan, key, true, + allow_strat, allow_sync, + allow_pagemode); +} + +/* + * Update snapshot used by the scan. + */ +extern void table_scan_update_snapshot(TableScanDesc scan, Snapshot snapshot); + +/* + * Return next tuple from `scan`, store in slot. + */ +static inline bool +table_scan_getnextslot(TableScanDesc sscan, ScanDirection direction, TupleTableSlot *slot) +{ + slot->tts_tableOid = RelationGetRelid(sscan->rs_rd); + return sscan->rs_rd->rd_tableam->scan_getnextslot(sscan, direction, slot); +} + + +/* ---------------------------------------------------------------------------- + * Parallel table scan related functions. + * ---------------------------------------------------------------------------- + */ + +/* + * Estimate the size of shared memory needed for a parallel scan of this + * relation. + */ +extern Size table_parallelscan_estimate(Relation rel, Snapshot snapshot); + +/* + * Initialize ParallelTableScanDesc for a parallel scan of this + * relation. `pscan` needs to be sized according to parallelscan_estimate() + * for the same relation. Call this just once in the leader process; then, + * individual workers attach via table_beginscan_parallel. + */ +extern void table_parallelscan_initialize(Relation rel, + ParallelTableScanDesc pscan, + Snapshot snapshot); + +/* + * Begin a parallel scan. `pscan` needs to have been initialized with + * table_parallelscan_initialize(), for the same relation. The initialization + * does not need to have happened in this backend. + * + * Caller must hold a suitable lock on the relation. + */ +extern TableScanDesc table_beginscan_parallel(Relation rel, + ParallelTableScanDesc pscan); + +/* + * Restart a parallel scan. Call this in the leader process. Caller is + * responsible for making sure that all workers have finished the scan + * beforehand. + */ +static inline void +table_parallelscan_reinitialize(Relation rel, ParallelTableScanDesc pscan) +{ + rel->rd_tableam->parallelscan_reinitialize(rel, pscan); +} + + +/* ---------------------------------------------------------------------------- + * Index scan related functions. + * ---------------------------------------------------------------------------- + */ + +/* + * Prepare to fetch tuples from the relation, as needed when fetching tuples + * for an index scan. + * + * Tuples for an index scan can then be fetched via table_index_fetch_tuple(). + */ +static inline IndexFetchTableData * +table_index_fetch_begin(Relation rel) +{ + return rel->rd_tableam->index_fetch_begin(rel); +} + +/* + * Reset index fetch. Typically this will release cross index fetch resources + * held in IndexFetchTableData. + */ +static inline void +table_index_fetch_reset(struct IndexFetchTableData *scan) +{ + scan->rel->rd_tableam->index_fetch_reset(scan); +} + +/* + * Release resources and deallocate index fetch. + */ +static inline void +table_index_fetch_end(struct IndexFetchTableData *scan) +{ + scan->rel->rd_tableam->index_fetch_end(scan); +} + +/* + * Fetches, as part of an index scan, tuple at `tid` into `slot`, after doing + * a visibility test according to `snapshot`. If a tuple was found and passed + * the visibility test, returns true, false otherwise. Note that *tid may be + * modified when we return true (see later remarks on multiple row versions + * reachable via a single index entry). + * + * *call_again needs to be false on the first call to table_index_fetch_tuple() for + * a tid. If there potentially is another tuple matching the tid, *call_again + * will be set to true, signaling that table_index_fetch_tuple() should be called + * again for the same tid. + * + * *all_dead, if all_dead is not NULL, will be set to true by + * table_index_fetch_tuple() iff it is guaranteed that no backend needs to see + * that tuple. Index AMs can use that to avoid returning that tid in future + * searches. + * + * The difference between this function and table_tuple_fetch_row_version() + * is that this function returns the currently visible version of a row if + * the AM supports storing multiple row versions reachable via a single index + * entry (like heap's HOT). Whereas table_tuple_fetch_row_version() only + * evaluates the tuple exactly at `tid`. Outside of index entry ->table tuple + * lookups, table_tuple_fetch_row_version() is what's usually needed. + */ +static inline bool +table_index_fetch_tuple(struct IndexFetchTableData *scan, + ItemPointer tid, + Snapshot snapshot, + TupleTableSlot *slot, + bool *call_again, bool *all_dead) +{ + + return scan->rel->rd_tableam->index_fetch_tuple(scan, tid, snapshot, + slot, call_again, + all_dead); +} + +/* + * This is a convenience wrapper around table_index_fetch_tuple() which + * returns whether there are table tuple items corresponding to an index + * entry. This likely is only useful to verify if there's a conflict in a + * unique index. + */ +extern bool table_index_fetch_tuple_check(Relation rel, + ItemPointer tid, + Snapshot snapshot, + bool *all_dead); + + +/* ------------------------------------------------------------------------ + * Functions for non-modifying operations on individual tuples + * ------------------------------------------------------------------------ + */ + + +/* + * Fetch tuple at `tid` into `slot`, after doing a visibility test according to + * `snapshot`. If a tuple was found and passed the visibility test, returns + * true, false otherwise. + * + * See table_index_fetch_tuple's comment about what the difference between + * these functions is. It is correct to use this function outside of index + * entry->table tuple lookups. + */ +static inline bool +table_tuple_fetch_row_version(Relation rel, + ItemPointer tid, + Snapshot snapshot, + TupleTableSlot *slot) +{ + return rel->rd_tableam->tuple_fetch_row_version(rel, tid, snapshot, slot); +} + +/* + * Verify that `tid` is a potentially valid tuple identifier. That doesn't + * mean that the pointed to row needs to exist or be visible, but that + * attempting to fetch the row (e.g. with table_tuple_get_latest_tid() or + * table_tuple_fetch_row_version()) should not error out if called with that + * tid. + * + * `scan` needs to have been started via table_beginscan(). + */ +static inline bool +table_tuple_tid_valid(TableScanDesc scan, ItemPointer tid) +{ + return scan->rs_rd->rd_tableam->tuple_tid_valid(scan, tid); +} + +/* + * Return the latest version of the tuple at `tid`, by updating `tid` to + * point at the newest version. + */ +extern void table_tuple_get_latest_tid(TableScanDesc scan, ItemPointer tid); + +/* + * Return true iff tuple in slot satisfies the snapshot. + * + * This assumes the slot's tuple is valid, and of the appropriate type for the + * AM. + * + * Some AMs might modify the data underlying the tuple as a side-effect. If so + * they ought to mark the relevant buffer dirty. + */ +static inline bool +table_tuple_satisfies_snapshot(Relation rel, TupleTableSlot *slot, + Snapshot snapshot) +{ + return rel->rd_tableam->tuple_satisfies_snapshot(rel, slot, snapshot); +} + +/* + * Compute the newest xid among the tuples pointed to by items. This is used + * to compute what snapshots to conflict with when replaying WAL records for + * page-level index vacuums. + */ +static inline TransactionId +table_compute_xid_horizon_for_tuples(Relation rel, + ItemPointerData *items, + int nitems) +{ + return rel->rd_tableam->compute_xid_horizon_for_tuples(rel, items, nitems); +} + + +/* ---------------------------------------------------------------------------- + * Functions for manipulations of physical tuples. + * ---------------------------------------------------------------------------- + */ + +/* + * Insert a tuple from a slot into table AM routine. + * + * The options bitmask allows the caller to specify options that may change the + * behaviour of the AM. The AM will ignore options that it does not support. + * + * If the TABLE_INSERT_SKIP_FSM option is specified, AMs are free to not reuse + * free space in the relation. This can save some cycles when we know the + * relation is new and doesn't contain useful amounts of free space. + * TABLE_INSERT_SKIP_FSM is commonly passed directly to + * RelationGetBufferForTuple. See that method for more information. + * + * TABLE_INSERT_FROZEN should only be specified for inserts into + * relfilenodes created during the current subtransaction and when + * there are no prior snapshots or pre-existing portals open. + * This causes rows to be frozen, which is an MVCC violation and + * requires explicit options chosen by user. + * + * TABLE_INSERT_NO_LOGICAL force-disables the emitting of logical decoding + * information for the tuple. This should solely be used during table rewrites + * where RelationIsLogicallyLogged(relation) is not yet accurate for the new + * relation. + * + * Note that most of these options will be applied when inserting into the + * heap's TOAST table, too, if the tuple requires any out-of-line data. + * + * The BulkInsertState object (if any; bistate can be NULL for default + * behavior) is also just passed through to RelationGetBufferForTuple. If + * `bistate` is provided, table_finish_bulk_insert() needs to be called. + * + * On return the slot's tts_tid and tts_tableOid are updated to reflect the + * insertion. But note that any toasting of fields within the slot is NOT + * reflected in the slots contents. + */ +static inline void +table_tuple_insert(Relation rel, TupleTableSlot *slot, CommandId cid, + int options, struct BulkInsertStateData *bistate) +{ + rel->rd_tableam->tuple_insert(rel, slot, cid, options, + bistate); +} + +/* + * Perform a "speculative insertion". These can be backed out afterwards + * without aborting the whole transaction. Other sessions can wait for the + * speculative insertion to be confirmed, turning it into a regular tuple, or + * aborted, as if it never existed. Speculatively inserted tuples behave as + * "value locks" of short duration, used to implement INSERT .. ON CONFLICT. + * + * A transaction having performed a speculative insertion has to either abort, + * or finish the speculative insertion with + * table_tuple_complete_speculative(succeeded = ...). + */ +static inline void +table_tuple_insert_speculative(Relation rel, TupleTableSlot *slot, + CommandId cid, int options, + struct BulkInsertStateData *bistate, + uint32 specToken) +{ + rel->rd_tableam->tuple_insert_speculative(rel, slot, cid, options, + bistate, specToken); +} + +/* + * Complete "speculative insertion" started in the same transaction. If + * succeeded is true, the tuple is fully inserted, if false, it's removed. + */ +static inline void +table_tuple_complete_speculative(Relation rel, TupleTableSlot *slot, + uint32 specToken, bool succeeded) +{ + rel->rd_tableam->tuple_complete_speculative(rel, slot, specToken, + succeeded); +} + +/* + * Insert multiple tuples into a table. + * + * This is like table_tuple_insert(), but inserts multiple tuples in one + * operation. That's often faster than calling table_tuple_insert() in a loop, + * because e.g. the AM can reduce WAL logging and page locking overhead. + * + * Except for taking `nslots` tuples as input, and an array of TupleTableSlots + * in `slots`, the parameters for table_multi_insert() are the same as for + * table_tuple_insert(). + * + * Note: this leaks memory into the current memory context. You can create a + * temporary context before calling this, if that's a problem. + */ +static inline void +table_multi_insert(Relation rel, TupleTableSlot **slots, int nslots, + CommandId cid, int options, struct BulkInsertStateData *bistate) +{ + rel->rd_tableam->multi_insert(rel, slots, nslots, + cid, options, bistate); +} + +/* + * Delete a tuple. + * + * NB: do not call this directly unless prepared to deal with + * concurrent-update conditions. Use simple_table_tuple_delete instead. + * + * Input parameters: + * relation - table to be modified (caller must hold suitable lock) + * tid - TID of tuple to be deleted + * cid - delete command ID (used for visibility test, and stored into + * cmax if successful) + * crosscheck - if not InvalidSnapshot, also check tuple against this + * wait - true if should wait for any conflicting update to commit/abort + * Output parameters: + * tmfd - filled in failure cases (see below) + * changingPart - true iff the tuple is being moved to another partition + * table due to an update of the partition key. Otherwise, false. + * + * Normal, successful return value is TM_Ok, which means we did actually + * delete it. Failure return codes are TM_SelfModified, TM_Updated, and + * TM_BeingModified (the last only possible if wait == false). + * + * In the failure cases, the routine fills *tmfd with the tuple's t_ctid, + * t_xmax, and, if possible, and, if possible, t_cmax. See comments for + * struct TM_FailureData for additional info. + */ +static inline TM_Result +table_tuple_delete(Relation rel, ItemPointer tid, CommandId cid, + Snapshot snapshot, Snapshot crosscheck, bool wait, + TM_FailureData *tmfd, bool changingPart) +{ + return rel->rd_tableam->tuple_delete(rel, tid, cid, + snapshot, crosscheck, + wait, tmfd, changingPart); +} + +/* + * Update a tuple. + * + * NB: do not call this directly unless you are prepared to deal with + * concurrent-update conditions. Use simple_table_tuple_update instead. + * + * Input parameters: + * relation - table to be modified (caller must hold suitable lock) + * otid - TID of old tuple to be replaced + * slot - newly constructed tuple data to store + * cid - update command ID (used for visibility test, and stored into + * cmax/cmin if successful) + * crosscheck - if not InvalidSnapshot, also check old tuple against this + * wait - true if should wait for any conflicting update to commit/abort + * Output parameters: + * tmfd - filled in failure cases (see below) + * lockmode - filled with lock mode acquired on tuple + * update_indexes - in success cases this is set to true if new index entries + * are required for this tuple + * + * Normal, successful return value is TM_Ok, which means we did actually + * update it. Failure return codes are TM_SelfModified, TM_Updated, and + * TM_BeingModified (the last only possible if wait == false). + * + * On success, the slot's tts_tid and tts_tableOid are updated to match the new + * stored tuple; in particular, slot->tts_tid is set to the TID where the + * new tuple was inserted, and its HEAP_ONLY_TUPLE flag is set iff a HOT + * update was done. However, any TOAST changes in the new tuple's + * data are not reflected into *newtup. + * + * In the failure cases, the routine fills *tmfd with the tuple's t_ctid, + * t_xmax, and, if possible, t_cmax. See comments for struct TM_FailureData + * for additional info. + */ +static inline TM_Result +table_tuple_update(Relation rel, ItemPointer otid, TupleTableSlot *slot, + CommandId cid, Snapshot snapshot, Snapshot crosscheck, + bool wait, TM_FailureData *tmfd, LockTupleMode *lockmode, + bool *update_indexes) +{ + return rel->rd_tableam->tuple_update(rel, otid, slot, + cid, snapshot, crosscheck, + wait, tmfd, + lockmode, update_indexes); +} + +/* + * Lock a tuple in the specified mode. + * + * Input parameters: + * relation: relation containing tuple (caller must hold suitable lock) + * tid: TID of tuple to lock + * snapshot: snapshot to use for visibility determinations + * cid: current command ID (used for visibility test, and stored into + * tuple's cmax if lock is successful) + * mode: lock mode desired + * wait_policy: what to do if tuple lock is not available + * flags: + * If TUPLE_LOCK_FLAG_LOCK_UPDATE_IN_PROGRESS, follow the update chain to + * also lock descendant tuples if lock modes don't conflict. + * If TUPLE_LOCK_FLAG_FIND_LAST_VERSION, follow the update chain and lock + * latest version. + * + * Output parameters: + * *slot: contains the target tuple + * *tmfd: filled in failure cases (see below) + * + * Function result may be: + * TM_Ok: lock was successfully acquired + * TM_Invisible: lock failed because tuple was never visible to us + * TM_SelfModified: lock failed because tuple updated by self + * TM_Updated: lock failed because tuple updated by other xact + * TM_Deleted: lock failed because tuple deleted by other xact + * TM_WouldBlock: lock couldn't be acquired and wait_policy is skip + * + * In the failure cases other than TM_Invisible and TM_Deleted, the routine + * fills *tmfd with the tuple's t_ctid, t_xmax, and, if possible, t_cmax. See + * comments for struct TM_FailureData for additional info. + */ +static inline TM_Result +table_tuple_lock(Relation rel, ItemPointer tid, Snapshot snapshot, + TupleTableSlot *slot, CommandId cid, LockTupleMode mode, + LockWaitPolicy wait_policy, uint8 flags, + TM_FailureData *tmfd) +{ + return rel->rd_tableam->tuple_lock(rel, tid, snapshot, slot, + cid, mode, wait_policy, + flags, tmfd); +} + +/* + * Perform operations necessary to complete insertions made via + * tuple_insert and multi_insert with a BulkInsertState specified. + */ +static inline void +table_finish_bulk_insert(Relation rel, int options) +{ + /* optional callback */ + if (rel->rd_tableam && rel->rd_tableam->finish_bulk_insert) + rel->rd_tableam->finish_bulk_insert(rel, options); +} + + +/* ------------------------------------------------------------------------ + * DDL related functionality. + * ------------------------------------------------------------------------ + */ + +/* + * Create storage for `rel` in `newrnode`, with persistence set to + * `persistence`. + * + * This is used both during relation creation and various DDL operations to + * create a new relfilenode that can be filled from scratch. When creating + * new storage for an existing relfilenode, this should be called before the + * relcache entry has been updated. + * + * *freezeXid, *minmulti are set to the xid / multixact horizon for the table + * that pg_class.{relfrozenxid, relminmxid} have to be set to. + */ +static inline void +table_relation_set_new_filenode(Relation rel, + const RelFileNode *newrnode, + char persistence, + TransactionId *freezeXid, + MultiXactId *minmulti) +{ + rel->rd_tableam->relation_set_new_filenode(rel, newrnode, persistence, + freezeXid, minmulti); +} + +/* + * Remove all table contents from `rel`, in a non-transactional manner. + * Non-transactional meaning that there's no need to support rollbacks. This + * commonly only is used to perform truncations for relfilenodes created in the + * current transaction. + */ +static inline void +table_relation_nontransactional_truncate(Relation rel) +{ + rel->rd_tableam->relation_nontransactional_truncate(rel); +} + +/* + * Copy data from `rel` into the new relfilenode `newrnode`. The new + * relfilenode may not have storage associated before this function is + * called. This is only supposed to be used for low level operations like + * changing a relation's tablespace. + */ +static inline void +table_relation_copy_data(Relation rel, const RelFileNode *newrnode) +{ + rel->rd_tableam->relation_copy_data(rel, newrnode); +} + +/* + * Copy data from `OldTable` into `NewTable`, as part of a CLUSTER or VACUUM + * FULL. + * + * Additional Input parameters: + * - use_sort - if true, the table contents are sorted appropriate for + * `OldIndex`; if false and OldIndex is not InvalidOid, the data is copied + * in that index's order; if false and OldIndex is InvalidOid, no sorting is + * performed + * - OldIndex - see use_sort + * - OldestXmin - computed by vacuum_set_xid_limits(), even when + * not needed for the relation's AM + * - *xid_cutoff - ditto + * - *multi_cutoff - ditto + * + * Output parameters: + * - *xid_cutoff - rel's new relfrozenxid value, may be invalid + * - *multi_cutoff - rel's new relminmxid value, may be invalid + * - *tups_vacuumed - stats, for logging, if appropriate for AM + * - *tups_recently_dead - stats, for logging, if appropriate for AM + */ +static inline void +table_relation_copy_for_cluster(Relation OldTable, Relation NewTable, + Relation OldIndex, + bool use_sort, + TransactionId OldestXmin, + TransactionId *xid_cutoff, + MultiXactId *multi_cutoff, + double *num_tuples, + double *tups_vacuumed, + double *tups_recently_dead) +{ + OldTable->rd_tableam->relation_copy_for_cluster(OldTable, NewTable, OldIndex, + use_sort, OldestXmin, + xid_cutoff, multi_cutoff, + num_tuples, tups_vacuumed, + tups_recently_dead); +} + +/* + * Perform VACUUM on the relation. The VACUUM can be triggered by a user or by + * autovacuum. The specific actions performed by the AM will depend heavily on + * the individual AM. + * + * On entry a transaction needs to already been established, and the + * table is locked with a ShareUpdateExclusive lock. + * + * Note that neither VACUUM FULL (and CLUSTER), nor ANALYZE go through this + * routine, even if (for ANALYZE) it is part of the same VACUUM command. + */ +static inline void +table_relation_vacuum(Relation rel, struct VacuumParams *params, + BufferAccessStrategy bstrategy) +{ + rel->rd_tableam->relation_vacuum(rel, params, bstrategy); +} + +/* + * Prepare to analyze block `blockno` of `scan`. The scan needs to have been + * started with table_beginscan_analyze(). Note that this routine might + * acquire resources like locks that are held until + * table_scan_analyze_next_tuple() returns false. + * + * Returns false if block is unsuitable for sampling, true otherwise. + */ +static inline bool +table_scan_analyze_next_block(TableScanDesc scan, BlockNumber blockno, + BufferAccessStrategy bstrategy) +{ + return scan->rs_rd->rd_tableam->scan_analyze_next_block(scan, blockno, + bstrategy); +} + +/* + * Iterate over tuples in the block selected with + * table_scan_analyze_next_block() (which needs to have returned true, and + * this routine may not have returned false for the same block before). If a + * tuple that's suitable for sampling is found, true is returned and a tuple + * is stored in `slot`. + * + * *liverows and *deadrows are incremented according to the encountered + * tuples. + */ +static inline bool +table_scan_analyze_next_tuple(TableScanDesc scan, TransactionId OldestXmin, + double *liverows, double *deadrows, + TupleTableSlot *slot) +{ + return scan->rs_rd->rd_tableam->scan_analyze_next_tuple(scan, OldestXmin, + liverows, deadrows, + slot); +} + +/* + * table_index_build_scan - scan the table to find tuples to be indexed + * + * This is called back from an access-method-specific index build procedure + * after the AM has done whatever setup it needs. The parent table relation + * is scanned to find tuples that should be entered into the index. Each + * such tuple is passed to the AM's callback routine, which does the right + * things to add it to the new index. After we return, the AM's index + * build procedure does whatever cleanup it needs. + * + * The total count of live tuples is returned. This is for updating pg_class + * statistics. (It's annoying not to be able to do that here, but we want to + * merge that update with others; see index_update_stats.) Note that the + * index AM itself must keep track of the number of index tuples; we don't do + * so here because the AM might reject some of the tuples for its own reasons, + * such as being unable to store NULLs. + * + * If 'progress', the PROGRESS_SCAN_BLOCKS_TOTAL counter is updated when + * starting the scan, and PROGRESS_SCAN_BLOCKS_DONE is updated as we go along. + * + * A side effect is to set indexInfo->ii_BrokenHotChain to true if we detect + * any potentially broken HOT chains. Currently, we set this if there are any + * RECENTLY_DEAD or DELETE_IN_PROGRESS entries in a HOT chain, without trying + * very hard to detect whether they're really incompatible with the chain tip. + * This only really makes sense for heap AM, it might need to be generalized + * for other AMs later. + */ +static inline double +table_index_build_scan(Relation table_rel, + Relation index_rel, + struct IndexInfo *index_info, + bool allow_sync, + bool progress, + IndexBuildCallback callback, + void *callback_state, + TableScanDesc scan) +{ + return table_rel->rd_tableam->index_build_range_scan(table_rel, + index_rel, + index_info, + allow_sync, + false, + progress, + 0, + InvalidBlockNumber, + callback, + callback_state, + scan); +} + +/* + * As table_index_build_scan(), except that instead of scanning the complete + * table, only the given number of blocks are scanned. Scan to end-of-rel can + * be signaled by passing InvalidBlockNumber as numblocks. Note that + * restricting the range to scan cannot be done when requesting syncscan. + * + * When "anyvisible" mode is requested, all tuples visible to any transaction + * are indexed and counted as live, including those inserted or deleted by + * transactions that are still in progress. + */ +static inline double +table_index_build_range_scan(Relation table_rel, + Relation index_rel, + struct IndexInfo *index_info, + bool allow_sync, + bool anyvisible, + bool progress, + BlockNumber start_blockno, + BlockNumber numblocks, + IndexBuildCallback callback, + void *callback_state, + TableScanDesc scan) +{ + return table_rel->rd_tableam->index_build_range_scan(table_rel, + index_rel, + index_info, + allow_sync, + anyvisible, + progress, + start_blockno, + numblocks, + callback, + callback_state, + scan); +} + +/* + * table_index_validate_scan - second table scan for concurrent index build + * + * See validate_index() for an explanation. + */ +static inline void +table_index_validate_scan(Relation table_rel, + Relation index_rel, + struct IndexInfo *index_info, + Snapshot snapshot, + struct ValidateIndexState *state) +{ + table_rel->rd_tableam->index_validate_scan(table_rel, + index_rel, + index_info, + snapshot, + state); +} + + +/* ---------------------------------------------------------------------------- + * Miscellaneous functionality + * ---------------------------------------------------------------------------- + */ + +/* + * Return the current size of `rel` in bytes. If `forkNumber` is + * InvalidForkNumber, return the relation's overall size, otherwise the size + * for the indicated fork. + * + * Note that the overall size might not be the equivalent of the sum of sizes + * for the individual forks for some AMs, e.g. because the AMs storage does + * not neatly map onto the builtin types of forks. + */ +static inline uint64 +table_relation_size(Relation rel, ForkNumber forkNumber) +{ + return rel->rd_tableam->relation_size(rel, forkNumber); +} + +/* + * table_relation_needs_toast_table - does this relation need a toast table? + */ +static inline bool +table_relation_needs_toast_table(Relation rel) +{ + return rel->rd_tableam->relation_needs_toast_table(rel); +} + +/* + * Return the OID of the AM that should be used to implement the TOAST table + * for this relation. + */ +static inline Oid +table_relation_toast_am(Relation rel) +{ + return rel->rd_tableam->relation_toast_am(rel); +} + +/* + * Fetch all or part of a TOAST value from a TOAST table. + * + * If this AM is never used to implement a TOAST table, then this callback + * is not needed. But, if toasted values are ever stored in a table of this + * type, then you will need this callback. + * + * toastrel is the relation in which the toasted value is stored. + * + * valueid identifes which toast value is to be fetched. For the heap, + * this corresponds to the values stored in the chunk_id column. + * + * attrsize is the total size of the toast value to be fetched. + * + * sliceoffset is the offset within the toast value of the first byte that + * should be fetched. + * + * slicelength is the number of bytes from the toast value that should be + * fetched. + * + * result is caller-allocated space into which the fetched bytes should be + * stored. + */ +static inline void +table_relation_fetch_toast_slice(Relation toastrel, Oid valueid, + int32 attrsize, int32 sliceoffset, + int32 slicelength, struct varlena *result) +{ + toastrel->rd_tableam->relation_fetch_toast_slice(toastrel, valueid, + attrsize, + sliceoffset, slicelength, + result); +} + + +/* ---------------------------------------------------------------------------- + * Planner related functionality + * ---------------------------------------------------------------------------- + */ + +/* + * Estimate the current size of the relation, as an AM specific workhorse for + * estimate_rel_size(). Look there for an explanation of the parameters. + */ +static inline void +table_relation_estimate_size(Relation rel, int32 *attr_widths, + BlockNumber *pages, double *tuples, + double *allvisfrac) +{ + rel->rd_tableam->relation_estimate_size(rel, attr_widths, pages, tuples, + allvisfrac); +} + + +/* ---------------------------------------------------------------------------- + * Executor related functionality + * ---------------------------------------------------------------------------- + */ + +/* + * Prepare to fetch / check / return tuples from `tbmres->blockno` as part of + * a bitmap table scan. `scan` needs to have been started via + * table_beginscan_bm(). Returns false if there are no tuples to be found on + * the page, true otherwise. + * + * Note, this is an optionally implemented function, therefore should only be + * used after verifying the presence (at plan time or such). + */ +static inline bool +table_scan_bitmap_next_block(TableScanDesc scan, + struct TBMIterateResult *tbmres) +{ + return scan->rs_rd->rd_tableam->scan_bitmap_next_block(scan, + tbmres); +} + +/* + * Fetch the next tuple of a bitmap table scan into `slot` and return true if + * a visible tuple was found, false otherwise. + * table_scan_bitmap_next_block() needs to previously have selected a + * block (i.e. returned true), and no previous + * table_scan_bitmap_next_tuple() for the same block may have + * returned false. + */ +static inline bool +table_scan_bitmap_next_tuple(TableScanDesc scan, + struct TBMIterateResult *tbmres, + TupleTableSlot *slot) +{ + return scan->rs_rd->rd_tableam->scan_bitmap_next_tuple(scan, + tbmres, + slot); +} + +/* + * Prepare to fetch tuples from the next block in a sample scan. Returns false + * if the sample scan is finished, true otherwise. `scan` needs to have been + * started via table_beginscan_sampling(). + * + * This will call the TsmRoutine's NextSampleBlock() callback if necessary + * (i.e. NextSampleBlock is not NULL), or perform a sequential scan over the + * underlying relation. + */ +static inline bool +table_scan_sample_next_block(TableScanDesc scan, + struct SampleScanState *scanstate) +{ + return scan->rs_rd->rd_tableam->scan_sample_next_block(scan, scanstate); +} + +/* + * Fetch the next sample tuple into `slot` and return true if a visible tuple + * was found, false otherwise. table_scan_sample_next_block() needs to + * previously have selected a block (i.e. returned true), and no previous + * table_scan_sample_next_tuple() for the same block may have returned false. + * + * This will call the TsmRoutine's NextSampleTuple() callback. + */ +static inline bool +table_scan_sample_next_tuple(TableScanDesc scan, + struct SampleScanState *scanstate, + TupleTableSlot *slot) +{ + return scan->rs_rd->rd_tableam->scan_sample_next_tuple(scan, scanstate, + slot); +} + + +/* ---------------------------------------------------------------------------- + * Functions to make modifications a bit simpler. + * ---------------------------------------------------------------------------- + */ + +extern void simple_table_tuple_insert(Relation rel, TupleTableSlot *slot); +extern void simple_table_tuple_delete(Relation rel, ItemPointer tid, + Snapshot snapshot); +extern void simple_table_tuple_update(Relation rel, ItemPointer otid, + TupleTableSlot *slot, Snapshot snapshot, + bool *update_indexes); + + +/* ---------------------------------------------------------------------------- + * Helper functions to implement parallel scans for block oriented AMs. + * ---------------------------------------------------------------------------- + */ + +extern Size table_block_parallelscan_estimate(Relation rel); +extern Size table_block_parallelscan_initialize(Relation rel, + ParallelTableScanDesc pscan); +extern void table_block_parallelscan_reinitialize(Relation rel, + ParallelTableScanDesc pscan); +extern BlockNumber table_block_parallelscan_nextpage(Relation rel, + ParallelBlockTableScanDesc pbscan); +extern void table_block_parallelscan_startblock_init(Relation rel, + ParallelBlockTableScanDesc pbscan); + + +/* ---------------------------------------------------------------------------- + * Helper functions to implement relation sizing for block oriented AMs. + * ---------------------------------------------------------------------------- + */ + +extern uint64 table_block_relation_size(Relation rel, ForkNumber forkNumber); +extern void table_block_relation_estimate_size(Relation rel, + int32 *attr_widths, + BlockNumber *pages, + double *tuples, + double *allvisfrac, + Size overhead_bytes_per_tuple, + Size usable_bytes_per_page); + +/* ---------------------------------------------------------------------------- + * Functions in tableamapi.c + * ---------------------------------------------------------------------------- + */ + +extern const TableAmRoutine *GetTableAmRoutine(Oid amhandler); +extern const TableAmRoutine *GetHeapamTableAmRoutine(void); +extern bool check_default_table_access_method(char **newval, void **extra, + GucSource source); + +#endif /* TABLEAM_H */ diff --git a/parser/include/access/transam.h b/parser/include/access/transam.h index 86076ded..a91a0c74 100644 --- a/parser/include/access/transam.h +++ b/parser/include/access/transam.h @@ -4,7 +4,7 @@ * postgres transaction access method support code * * - * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/access/transam.h @@ -44,6 +44,47 @@ #define TransactionIdStore(xid, dest) (*(dest) = (xid)) #define StoreInvalidTransactionId(dest) (*(dest) = InvalidTransactionId) +#define EpochFromFullTransactionId(x) ((uint32) ((x).value >> 32)) +#define XidFromFullTransactionId(x) ((uint32) (x).value) +#define U64FromFullTransactionId(x) ((x).value) +#define FullTransactionIdEquals(a, b) ((a).value == (b).value) +#define FullTransactionIdPrecedes(a, b) ((a).value < (b).value) +#define FullTransactionIdPrecedesOrEquals(a, b) ((a).value <= (b).value) +#define FullTransactionIdFollows(a, b) ((a).value > (b).value) +#define FullTransactionIdFollowsOrEquals(a, b) ((a).value >= (b).value) +#define FullTransactionIdIsValid(x) TransactionIdIsValid(XidFromFullTransactionId(x)) +#define InvalidFullTransactionId FullTransactionIdFromEpochAndXid(0, InvalidTransactionId) + +/* + * A 64 bit value that contains an epoch and a TransactionId. This is + * wrapped in a struct to prevent implicit conversion to/from TransactionId. + * Not all values represent valid normal XIDs. + */ +typedef struct FullTransactionId +{ + uint64 value; +} FullTransactionId; + +static inline FullTransactionId +FullTransactionIdFromEpochAndXid(uint32 epoch, TransactionId xid) +{ + FullTransactionId result; + + result.value = ((uint64) epoch) << 32 | xid; + + return result; +} + +static inline FullTransactionId +FullTransactionIdFromU64(uint64 value) +{ + FullTransactionId result; + + result.value = value; + + return result; +} + /* advance a transaction ID variable, handling wraparound correctly */ #define TransactionIdAdvance(dest) \ do { \ @@ -52,6 +93,15 @@ (dest) = FirstNormalTransactionId; \ } while(0) +/* advance a FullTransactionId variable, stepping over special XIDs */ +static inline void +FullTransactionIdAdvance(FullTransactionId *dest) +{ + dest->value++; + while (XidFromFullTransactionId(*dest) < FirstNormalTransactionId) + dest->value++; +} + /* back up a transaction ID variable, handling wraparound correctly */ #define TransactionIdRetreat(dest) \ do { \ @@ -71,26 +121,37 @@ /* ---------- * Object ID (OID) zero is InvalidOid. * - * OIDs 1-9999 are reserved for manual assignment (see the files - * in src/include/catalog/). + * OIDs 1-9999 are reserved for manual assignment (see .dat files in + * src/include/catalog/). Of these, 8000-9999 are reserved for + * development purposes (such as in-progress patches and forks); + * they should not appear in released versions. * - * OIDS 10000-16383 are reserved for assignment during initdb - * using the OID generator. (We start the generator at 10000.) + * OIDs 10000-11999 are reserved for assignment by genbki.pl, for use + * when the .dat files in src/include/catalog/ do not specify an OID + * for a catalog entry that requires one. + * + * OIDS 12000-16383 are reserved for assignment during initdb + * using the OID generator. (We start the generator at 12000.) * * OIDs beginning at 16384 are assigned from the OID generator * during normal multiuser operation. (We force the generator up to * 16384 as soon as we are in normal operation.) * - * The choices of 10000 and 16384 are completely arbitrary, and can be moved - * if we run low on OIDs in either category. Changing the macros below - * should be sufficient to do this. + * The choices of 8000, 10000 and 12000 are completely arbitrary, and can be + * moved if we run low on OIDs in any category. Changing the macros below, + * and updating relevant documentation (see bki.sgml and RELEASE_CHANGES), + * should be sufficient to do this. Moving the 16384 boundary between + * initdb-assigned OIDs and user-defined objects would be substantially + * more painful, however, since some user-defined OIDs will appear in + * on-disk data; such a change would probably break pg_upgrade. * * NOTE: if the OID generator wraps around, we skip over OIDs 0-16383 * and resume with 16384. This minimizes the odds of OID conflict, by not * reassigning OIDs that might have been assigned during initdb. * ---------- */ -#define FirstBootstrapObjectId 10000 +#define FirstGenbkiObjectId 10000 +#define FirstBootstrapObjectId 12000 #define FirstNormalObjectId 16384 /* @@ -114,12 +175,12 @@ typedef struct VariableCacheData /* * These fields are protected by XidGenLock. */ - TransactionId nextXid; /* next XID to assign */ + FullTransactionId nextFullXid; /* next full XID to assign */ TransactionId oldestXid; /* cluster-wide minimum datfrozenxid */ TransactionId xidVacLimit; /* start forcing autovacuums here */ TransactionId xidWarnLimit; /* start complaining here */ - TransactionId xidStopLimit; /* refuse to advance nextXid beyond here */ + TransactionId xidStopLimit; /* refuse to advance nextFullXid beyond here */ TransactionId xidWrapLimit; /* where the world ends */ Oid oldestXidDB; /* database with minimum datfrozenxid */ @@ -136,7 +197,7 @@ typedef struct VariableCacheData * aborted */ /* - * These fields are protected by CLogTruncationLock + * These fields are protected by XactTruncationLock */ TransactionId oldestClogXid; /* oldest it's safe to look up in clog */ @@ -162,7 +223,6 @@ extern PGDLLIMPORT VariableCache ShmemVariableCache; extern bool TransactionIdDidCommit(TransactionId transactionId); extern bool TransactionIdDidAbort(TransactionId transactionId); extern bool TransactionIdIsKnownCompleted(TransactionId transactionId); -extern void TransactionIdAbort(TransactionId transactionId); extern void TransactionIdCommitTree(TransactionId xid, int nxids, TransactionId *xids); extern void TransactionIdAsyncCommitTree(TransactionId xid, int nxids, TransactionId *xids, XLogRecPtr lsn); extern void TransactionIdAbortTree(TransactionId xid, int nxids, TransactionId *xids); @@ -171,16 +231,35 @@ extern bool TransactionIdPrecedesOrEquals(TransactionId id1, TransactionId id2); extern bool TransactionIdFollows(TransactionId id1, TransactionId id2); extern bool TransactionIdFollowsOrEquals(TransactionId id1, TransactionId id2); extern TransactionId TransactionIdLatest(TransactionId mainxid, - int nxids, const TransactionId *xids); + int nxids, const TransactionId *xids); extern XLogRecPtr TransactionIdGetCommitLSN(TransactionId xid); /* in transam/varsup.c */ -extern TransactionId GetNewTransactionId(bool isSubXact); -extern TransactionId ReadNewTransactionId(void); +extern FullTransactionId GetNewTransactionId(bool isSubXact); +extern void AdvanceNextFullTransactionIdPastXid(TransactionId xid); +extern FullTransactionId ReadNextFullTransactionId(void); extern void SetTransactionIdLimit(TransactionId oldest_datfrozenxid, - Oid oldest_datoid); + Oid oldest_datoid); extern void AdvanceOldestClogXid(TransactionId oldest_datfrozenxid); extern bool ForceTransactionIdLimitUpdate(void); extern Oid GetNewObjectId(void); -#endif /* TRAMSAM_H */ +/* + * Some frontend programs include this header. For compilers that emit static + * inline functions even when they're unused, that leads to unsatisfied + * external references; hence hide them with #ifndef FRONTEND. + */ +#ifndef FRONTEND + +/* + * For callers that just need the XID part of the next transaction ID. + */ +static inline TransactionId +ReadNewTransactionId(void) +{ + return XidFromFullTransactionId(ReadNextFullTransactionId()); +} + +#endif /* FRONTEND */ + +#endif /* TRANSAM_H */ diff --git a/parser/include/access/tupconvert.h b/parser/include/access/tupconvert.h index 173904ad..08619609 100644 --- a/parser/include/access/tupconvert.h +++ b/parser/include/access/tupconvert.h @@ -4,7 +4,7 @@ * Tuple conversion support. * * - * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/access/tupconvert.h @@ -14,15 +14,18 @@ #ifndef TUPCONVERT_H #define TUPCONVERT_H +#include "access/attmap.h" #include "access/htup.h" #include "access/tupdesc.h" +#include "executor/tuptable.h" +#include "nodes/bitmapset.h" typedef struct TupleConversionMap { TupleDesc indesc; /* tupdesc for source rowtype */ TupleDesc outdesc; /* tupdesc for result rowtype */ - AttrNumber *attrMap; /* indexes of input fields, or 0 for null */ + AttrMap *attrMap; /* indexes of input fields, or 0 for null */ Datum *invalues; /* workspace for deconstructing source */ bool *inisnull; Datum *outvalues; /* workspace for constructing result */ @@ -31,18 +34,17 @@ typedef struct TupleConversionMap extern TupleConversionMap *convert_tuples_by_position(TupleDesc indesc, - TupleDesc outdesc, - const char *msg); + TupleDesc outdesc, + const char *msg); extern TupleConversionMap *convert_tuples_by_name(TupleDesc indesc, - TupleDesc outdesc, - const char *msg); + TupleDesc outdesc); -extern AttrNumber *convert_tuples_by_name_map(TupleDesc indesc, - TupleDesc outdesc, - const char *msg); - -extern HeapTuple do_convert_tuple(HeapTuple tuple, TupleConversionMap *map); +extern HeapTuple execute_attr_map_tuple(HeapTuple tuple, TupleConversionMap *map); +extern TupleTableSlot *execute_attr_map_slot(AttrMap *attrMap, + TupleTableSlot *in_slot, + TupleTableSlot *out_slot); +extern Bitmapset *execute_attr_map_cols(AttrMap *attrMap, Bitmapset *inbitmap); extern void free_conversion_map(TupleConversionMap *map); diff --git a/parser/include/access/tupdesc.h b/parser/include/access/tupdesc.h index ef739763..d17af13e 100644 --- a/parser/include/access/tupdesc.h +++ b/parser/include/access/tupdesc.h @@ -4,7 +4,7 @@ * POSTGRES tuple descriptor definitions. * * - * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/access/tupdesc.h @@ -19,13 +19,13 @@ #include "nodes/pg_list.h" -typedef struct attrDefault +typedef struct AttrDefault { AttrNumber adnum; char *adbin; /* nodeToString representation of expr */ } AttrDefault; -typedef struct constrCheck +typedef struct ConstrCheck { char *ccname; char *ccbin; /* nodeToString representation of expr */ @@ -34,13 +34,15 @@ typedef struct constrCheck } ConstrCheck; /* This structure contains constraints of a tuple */ -typedef struct tupleConstr +typedef struct TupleConstr { AttrDefault *defval; /* array */ ConstrCheck *check; /* array */ + struct AttrMissing *missing; /* missing attributes values, NULL if none */ uint16 num_defval; uint16 num_check; bool has_not_null; + bool has_generated_stored; } TupleConstr; /* @@ -52,7 +54,7 @@ typedef struct tupleConstr * structure is designed to let the constraints be omitted efficiently. * * Note that only user attributes, not system attributes, are mentioned in - * TupleDesc; with the exception that tdhasoid indicates if OID is present. + * TupleDesc. * * If the tupdesc is known to correspond to a named rowtype (such as a table's * rowtype) then tdtypeid identifies that type and tdtypmod is -1. Otherwise @@ -60,6 +62,12 @@ typedef struct tupleConstr * row type, or a value >= 0 to allow the rowtype to be looked up in the * typcache.c type cache. * + * Note that tdtypeid is never the OID of a domain over composite, even if + * we are dealing with values that are known (at some higher level) to be of + * a domain-over-composite type. This is because tdtypeid/tdtypmod need to + * match up with the type labeling of composite Datums, and those are never + * explicitly marked as being of a domain type, either. + * * Tuple descriptors that live in caches (relcache or typcache, at present) * are reference-counted: they can be deleted when their reference count goes * to zero. Tuple descriptors created by the executor need no reference @@ -68,33 +76,37 @@ typedef struct tupleConstr * field of such a descriptor to -1, while reference-counted descriptors * always have tdrefcount >= 0. */ -typedef struct tupleDesc +typedef struct TupleDescData { int natts; /* number of attributes in the tuple */ - Form_pg_attribute *attrs; - /* attrs[N] is a pointer to the description of Attribute Number N+1 */ - TupleConstr *constr; /* constraints, or NULL if none */ Oid tdtypeid; /* composite type ID for tuple type */ int32 tdtypmod; /* typmod for tuple type */ - bool tdhasoid; /* tuple has oid attribute in its header */ int tdrefcount; /* reference count, or -1 if not counting */ -} *TupleDesc; - + TupleConstr *constr; /* constraints, or NULL if none */ + /* attrs[N] is the description of Attribute Number N+1 */ + FormData_pg_attribute attrs[FLEXIBLE_ARRAY_MEMBER]; +} TupleDescData; +typedef struct TupleDescData *TupleDesc; /* Accessor for the i'th attribute of tupdesc. */ -#define TupleDescAttr(tupdesc, i) ((tupdesc)->attrs[(i)]) +#define TupleDescAttr(tupdesc, i) (&(tupdesc)->attrs[(i)]) -extern TupleDesc CreateTemplateTupleDesc(int natts, bool hasoid); +extern TupleDesc CreateTemplateTupleDesc(int natts); -extern TupleDesc CreateTupleDesc(int natts, bool hasoid, - Form_pg_attribute *attrs); +extern TupleDesc CreateTupleDesc(int natts, Form_pg_attribute *attrs); extern TupleDesc CreateTupleDescCopy(TupleDesc tupdesc); extern TupleDesc CreateTupleDescCopyConstr(TupleDesc tupdesc); +#define TupleDescSize(src) \ + (offsetof(struct TupleDescData, attrs) + \ + (src)->natts * sizeof(FormData_pg_attribute)) + +extern void TupleDescCopy(TupleDesc dst, TupleDesc src); + extern void TupleDescCopyEntry(TupleDesc dst, AttrNumber dstAttno, - TupleDesc src, AttrNumber srcAttno); + TupleDesc src, AttrNumber srcAttno); extern void FreeTupleDesc(TupleDesc tupdesc); @@ -115,23 +127,25 @@ extern void DecrTupleDescRefCount(TupleDesc tupdesc); extern bool equalTupleDescs(TupleDesc tupdesc1, TupleDesc tupdesc2); +extern uint32 hashTupleDesc(TupleDesc tupdesc); + extern void TupleDescInitEntry(TupleDesc desc, - AttrNumber attributeNumber, - const char *attributeName, - Oid oidtypeid, - int32 typmod, - int attdim); + AttrNumber attributeNumber, + const char *attributeName, + Oid oidtypeid, + int32 typmod, + int attdim); extern void TupleDescInitBuiltinEntry(TupleDesc desc, - AttrNumber attributeNumber, - const char *attributeName, - Oid oidtypeid, - int32 typmod, - int attdim); + AttrNumber attributeNumber, + const char *attributeName, + Oid oidtypeid, + int32 typmod, + int attdim); extern void TupleDescInitEntryCollation(TupleDesc desc, - AttrNumber attributeNumber, - Oid collationid); + AttrNumber attributeNumber, + Oid collationid); extern TupleDesc BuildDescForRelation(List *schema); diff --git a/parser/include/access/tupmacs.h b/parser/include/access/tupmacs.h index 67462038..70157cf9 100644 --- a/parser/include/access/tupmacs.h +++ b/parser/include/access/tupmacs.h @@ -4,7 +4,7 @@ * Tuple macros used by both index tuples and heap tuples. * * - * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/access/tupmacs.h @@ -14,9 +14,13 @@ #ifndef TUPMACS_H #define TUPMACS_H +#include "catalog/pg_type_d.h" /* for TYPALIGN macros */ + /* - * check to see if the ATT'th bit of an array of 8-bit bytes is set. + * Check a tuple's null bitmap to determine whether the attribute is null. + * Note that a 0 in the null bitmap indicates a null, while 1 indicates + * non-null. */ #define att_isnull(ATT, BITS) (!((BITS)[(ATT) >> 3] & (1 << ((ATT) & 0x07)))) @@ -143,11 +147,11 @@ */ #define att_align_nominal(cur_offset, attalign) \ ( \ - ((attalign) == 'i') ? INTALIGN(cur_offset) : \ - (((attalign) == 'c') ? (uintptr_t) (cur_offset) : \ - (((attalign) == 'd') ? DOUBLEALIGN(cur_offset) : \ + ((attalign) == TYPALIGN_INT) ? INTALIGN(cur_offset) : \ + (((attalign) == TYPALIGN_CHAR) ? (uintptr_t) (cur_offset) : \ + (((attalign) == TYPALIGN_DOUBLE) ? DOUBLEALIGN(cur_offset) : \ ( \ - AssertMacro((attalign) == 's'), \ + AssertMacro((attalign) == TYPALIGN_SHORT), \ SHORTALIGN(cur_offset) \ ))) \ ) diff --git a/parser/include/access/twophase.h b/parser/include/access/twophase.h index f5fbbea4..2ca71c34 100644 --- a/parser/include/access/twophase.h +++ b/parser/include/access/twophase.h @@ -4,7 +4,7 @@ * Two-phase-commit related declarations. * * - * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/access/twophase.h @@ -14,6 +14,7 @@ #ifndef TWOPHASE_H #define TWOPHASE_H +#include "access/xact.h" #include "access/xlogdefs.h" #include "datatype/timestamp.h" #include "storage/lock.h" @@ -33,19 +34,19 @@ extern void TwoPhaseShmemInit(void); extern void AtAbort_Twophase(void); extern void PostPrepare_Twophase(void); -extern PGPROC *TwoPhaseGetDummyProc(TransactionId xid); -extern BackendId TwoPhaseGetDummyBackendId(TransactionId xid); +extern PGPROC *TwoPhaseGetDummyProc(TransactionId xid, bool lock_held); +extern BackendId TwoPhaseGetDummyBackendId(TransactionId xid, bool lock_held); extern GlobalTransaction MarkAsPreparing(TransactionId xid, const char *gid, - TimestampTz prepared_at, - Oid owner, Oid databaseid); + TimestampTz prepared_at, + Oid owner, Oid databaseid); extern void StartPrepare(GlobalTransaction gxact); extern void EndPrepare(GlobalTransaction gxact); extern bool StandbyTransactionIdIsPrepared(TransactionId xid); extern TransactionId PrescanPreparedTransactions(TransactionId **xids_p, - int *nxids_p); + int *nxids_p); extern void StandbyRecoverPreparedTransactions(void); extern void RecoverPreparedTransactions(void); @@ -54,7 +55,7 @@ extern void CheckPointTwoPhase(XLogRecPtr redo_horizon); extern void FinishPreparedTransaction(const char *gid, bool isCommit); extern void PrepareRedoAdd(char *buf, XLogRecPtr start_lsn, - XLogRecPtr end_lsn); + XLogRecPtr end_lsn, RepOriginId origin_id); extern void PrepareRedoRemove(TransactionId xid, bool giveWarning); extern void restoreTwoPhaseData(void); #endif /* TWOPHASE_H */ diff --git a/parser/include/access/xact.h b/parser/include/access/xact.h index 1bccc954..3c66119d 100644 --- a/parser/include/access/xact.h +++ b/parser/include/access/xact.h @@ -4,7 +4,7 @@ * postgres transaction system definitions * * - * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/access/xact.h @@ -14,6 +14,7 @@ #ifndef XACT_H #define XACT_H +#include "access/transam.h" #include "access/xlogreader.h" #include "lib/stringinfo.h" #include "nodes/pg_list.h" @@ -21,6 +22,13 @@ #include "storage/sinval.h" #include "utils/datetime.h" +/* + * Maximum size of Global Transaction ID (including '\0'). + * + * Note that the max value of GIDSIZE must fit in the uint16 gidlen, + * specified in TwoPhaseFileHeader. + */ +#define GIDSIZE 200 /* * Xact isolation levels @@ -47,6 +55,9 @@ extern PGDLLIMPORT int XactIsoLevel; extern bool DefaultXactReadOnly; extern bool XactReadOnly; +/* flag for logging statements in this transaction */ +extern bool xact_is_sampled; + /* * Xact is deferrable -- only meaningful (currently) for read only * SERIALIZABLE transactions @@ -81,10 +92,10 @@ extern int synchronous_commit; extern int MyXactFlags; /* - * XACT_FLAGS_ACCESSEDTEMPREL - set when a temporary relation is accessed. We - * don't allow PREPARE TRANSACTION in that case. + * XACT_FLAGS_ACCESSEDTEMPNAMESPACE - set when a temporary object is accessed. + * We don't allow PREPARE TRANSACTION in that case. */ -#define XACT_FLAGS_ACCESSEDTEMPREL (1U << 0) +#define XACT_FLAGS_ACCESSEDTEMPNAMESPACE (1U << 0) /* * XACT_FLAGS_ACQUIREDACCESSEXCLUSIVELOCK - records whether the top level xact @@ -92,12 +103,6 @@ extern int MyXactFlags; */ #define XACT_FLAGS_ACQUIREDACCESSEXCLUSIVELOCK (1U << 1) -/* - * XACT_FLAGS_ACCESSEDTEMPNAMESPACE - set when a temporary namespace is - * accessed. We don't allow PREPARE TRANSACTION in that case. - */ -#define XACT_FLAGS_ACCESSEDTEMPNAMESPACE (1U << 2) - /* * start- and end-of-transaction callbacks for dynamically loaded modules */ @@ -162,6 +167,7 @@ typedef void (*SubXactCallback) (SubXactEvent event, SubTransactionId mySubid, #define XACT_XINFO_HAS_TWOPHASE (1U << 4) #define XACT_XINFO_HAS_ORIGIN (1U << 5) #define XACT_XINFO_HAS_AE_LOCKS (1U << 6) +#define XACT_XINFO_HAS_GID (1U << 7) /* * Also stored in xinfo, these indicating a variety of additional actions that @@ -199,7 +205,7 @@ typedef struct xl_xact_assignment * * A minimal commit/abort record only consists of a xl_xact_commit/abort * struct. The presence of additional information is indicated by bits set in - * 'xl_xact_xinfo->xinfo'. The presence of the xinfo field itself is signalled + * 'xl_xact_xinfo->xinfo'. The presence of the xinfo field itself is signaled * by a set XLOG_XACT_HAS_INFO bit in the xl_info field. * * NB: All the individual data chunks should be sized to multiples of @@ -234,7 +240,7 @@ typedef struct xl_xact_subxacts typedef struct xl_xact_relfilenodes { - int nrels; /* number of subtransaction XIDs */ + int nrels; /* number of relations */ RelFileNode xnodes[FLEXIBLE_ARRAY_MEMBER]; } xl_xact_relfilenodes; #define MinSizeOfXactRelfilenodes offsetof(xl_xact_relfilenodes, xnodes) @@ -267,6 +273,7 @@ typedef struct xl_xact_commit /* xl_xact_relfilenodes follows if XINFO_HAS_RELFILENODES */ /* xl_xact_invals follows if XINFO_HAS_INVALS */ /* xl_xact_twophase follows if XINFO_HAS_TWOPHASE */ + /* twophase_gid follows if XINFO_HAS_GID. As a null-terminated string. */ /* xl_xact_origin follows if XINFO_HAS_ORIGIN, stored unaligned! */ } xl_xact_commit; #define MinSizeOfXactCommit (offsetof(xl_xact_commit, xact_time) + sizeof(TimestampTz)) @@ -276,14 +283,34 @@ typedef struct xl_xact_abort TimestampTz xact_time; /* time of abort */ /* xl_xact_xinfo follows if XLOG_XACT_HAS_INFO */ - /* No db_info required */ - /* xl_xact_subxacts follows if HAS_SUBXACT */ - /* xl_xact_relfilenodes follows if HAS_RELFILENODES */ + /* xl_xact_dbinfo follows if XINFO_HAS_DBINFO */ + /* xl_xact_subxacts follows if XINFO_HAS_SUBXACT */ + /* xl_xact_relfilenodes follows if XINFO_HAS_RELFILENODES */ /* No invalidation messages needed. */ /* xl_xact_twophase follows if XINFO_HAS_TWOPHASE */ + /* twophase_gid follows if XINFO_HAS_GID. As a null-terminated string. */ + /* xl_xact_origin follows if XINFO_HAS_ORIGIN, stored unaligned! */ } xl_xact_abort; #define MinSizeOfXactAbort sizeof(xl_xact_abort) +typedef struct xl_xact_prepare +{ + uint32 magic; /* format identifier */ + uint32 total_len; /* actual file length */ + TransactionId xid; /* original transaction XID */ + Oid database; /* OID of database it was in */ + TimestampTz prepared_at; /* time of preparation */ + Oid owner; /* user running the transaction */ + int32 nsubxacts; /* number of following subxact XIDs */ + int32 ncommitrels; /* number of delete-on-commit rels */ + int32 nabortrels; /* number of delete-on-abort rels */ + int32 ninvalmsgs; /* number of cache invalidation messages */ + bool initfileinval; /* does relcache init file need invalidation? */ + uint16 gidlen; /* length of the GID - GID follows the header */ + XLogRecPtr origin_lsn; /* lsn of this record at origin node */ + TimestampTz origin_timestamp; /* time of prepare at origin node */ +} xl_xact_prepare; + /* * Commit/Abort records in the above form are a bit verbose to parse, so * there's a deconstructed versions generated by ParseCommit/AbortRecord() for @@ -292,7 +319,6 @@ typedef struct xl_xact_abort typedef struct xl_xact_parsed_commit { TimestampTz xact_time; - uint32 xinfo; Oid dbId; /* MyDatabaseId */ @@ -308,16 +334,24 @@ typedef struct xl_xact_parsed_commit SharedInvalidationMessage *msgs; TransactionId twophase_xid; /* only for 2PC */ + char twophase_gid[GIDSIZE]; /* only for 2PC */ + int nabortrels; /* only for 2PC */ + RelFileNode *abortnodes; /* only for 2PC */ XLogRecPtr origin_lsn; TimestampTz origin_timestamp; } xl_xact_parsed_commit; +typedef xl_xact_parsed_commit xl_xact_parsed_prepare; + typedef struct xl_xact_parsed_abort { TimestampTz xact_time; uint32 xinfo; + Oid dbId; /* MyDatabaseId */ + Oid tsId; /* MyDatabaseTableSpace */ + int nsubxacts; TransactionId *subxacts; @@ -325,6 +359,10 @@ typedef struct xl_xact_parsed_abort RelFileNode *xnodes; TransactionId twophase_xid; /* only for 2PC */ + char twophase_gid[GIDSIZE]; /* only for 2PC */ + + XLogRecPtr origin_lsn; + TimestampTz origin_timestamp; } xl_xact_parsed_abort; @@ -340,6 +378,10 @@ extern TransactionId GetCurrentTransactionId(void); extern TransactionId GetCurrentTransactionIdIfAny(void); extern TransactionId GetStableLatestTransactionId(void); extern SubTransactionId GetCurrentSubTransactionId(void); +extern FullTransactionId GetTopFullTransactionId(void); +extern FullTransactionId GetTopFullTransactionIdIfAny(void); +extern FullTransactionId GetCurrentFullTransactionId(void); +extern FullTransactionId GetCurrentFullTransactionIdIfAny(void); extern void MarkCurrentTransactionIdLoggedIfAny(void); extern bool SubTransactionIsActive(SubTransactionId subxid); extern CommandId GetCurrentCommandId(bool used); @@ -353,16 +395,20 @@ extern bool TransactionIdIsCurrentTransactionId(TransactionId xid); extern void CommandCounterIncrement(void); extern void ForceSyncCommit(void); extern void StartTransactionCommand(void); +extern void SaveTransactionCharacteristics(void); +extern void RestoreTransactionCharacteristics(void); extern void CommitTransactionCommand(void); extern void AbortCurrentTransaction(void); extern void BeginTransactionBlock(void); -extern bool EndTransactionBlock(void); -extern bool PrepareTransactionBlock(char *gid); -extern void UserAbortTransactionBlock(void); -extern void ReleaseSavepoint(List *options); -extern void DefineSavepoint(char *name); -extern void RollbackToSavepoint(List *options); -extern void BeginInternalSubTransaction(char *name); +extern bool EndTransactionBlock(bool chain); +extern bool PrepareTransactionBlock(const char *gid); +extern void UserAbortTransactionBlock(bool chain); +extern void BeginImplicitTransactionBlock(void); +extern void EndImplicitTransactionBlock(void); +extern void ReleaseSavepoint(const char *name); +extern void DefineSavepoint(const char *name); +extern void RollbackToSavepoint(const char *name); +extern void BeginInternalSubTransaction(const char *name); extern void ReleaseCurrentSubTransaction(void); extern void RollbackAndReleaseCurrentSubTransaction(void); extern bool IsSubTransaction(void); @@ -374,10 +420,10 @@ extern bool IsTransactionBlock(void); extern bool IsTransactionOrTransactionBlock(void); extern char TransactionBlockStatusCode(void); extern void AbortOutOfAnyTransaction(void); -extern void PreventTransactionChain(bool isTopLevel, const char *stmtType); -extern void RequireTransactionChain(bool isTopLevel, const char *stmtType); -extern void WarnNoTransactionChain(bool isTopLevel, const char *stmtType); -extern bool IsInTransactionChain(bool isTopLevel); +extern void PreventInTransactionBlock(bool isTopLevel, const char *stmtType); +extern void RequireTransactionBlock(bool isTopLevel, const char *stmtType); +extern void WarnNoTransactionBlock(bool isTopLevel, const char *stmtType); +extern bool IsInTransactionBlock(bool isTopLevel); extern void RegisterXactCallback(XactCallback callback, void *arg); extern void UnregisterXactCallback(XactCallback callback, void *arg); extern void RegisterSubXactCallback(SubXactCallback callback, void *arg); @@ -386,17 +432,19 @@ extern void UnregisterSubXactCallback(SubXactCallback callback, void *arg); extern int xactGetCommittedChildren(TransactionId **ptr); extern XLogRecPtr XactLogCommitRecord(TimestampTz commit_time, - int nsubxacts, TransactionId *subxacts, - int nrels, RelFileNode *rels, - int nmsgs, SharedInvalidationMessage *msgs, - bool relcacheInval, bool forceSync, - int xactflags, - TransactionId twophase_xid); + int nsubxacts, TransactionId *subxacts, + int nrels, RelFileNode *rels, + int nmsgs, SharedInvalidationMessage *msgs, + bool relcacheInval, bool forceSync, + int xactflags, + TransactionId twophase_xid, + const char *twophase_gid); extern XLogRecPtr XactLogAbortRecord(TimestampTz abort_time, - int nsubxacts, TransactionId *subxacts, - int nrels, RelFileNode *rels, - int xactflags, TransactionId twophase_xid); + int nsubxacts, TransactionId *subxacts, + int nrels, RelFileNode *rels, + int xactflags, TransactionId twophase_xid, + const char *twophase_gid); extern void xact_redo(XLogReaderState *record); /* xactdesc.c */ @@ -406,6 +454,7 @@ extern const char *xact_identify(uint8 info); /* also in xactdesc.c, so they can be shared between front/backend code */ extern void ParseCommitRecord(uint8 info, xl_xact_commit *xlrec, xl_xact_parsed_commit *parsed); extern void ParseAbortRecord(uint8 info, xl_xact_abort *xlrec, xl_xact_parsed_abort *parsed); +extern void ParsePrepareRecord(uint8 info, xl_xact_prepare *xlrec, xl_xact_parsed_prepare *parsed); extern void EnterParallelMode(void); extern void ExitParallelMode(void); diff --git a/parser/include/access/xlog.h b/parser/include/access/xlog.h index d41fefc1..01b3b0a7 100644 --- a/parser/include/access/xlog.h +++ b/parser/include/access/xlog.h @@ -3,7 +3,7 @@ * * PostgreSQL write-ahead log manager * - * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/access/xlog.h @@ -43,7 +43,7 @@ extern bool InRecovery; /* * Like InRecovery, standbyState is only valid in the startup process. * In all other processes it will have the value STANDBY_DISABLED (so - * InHotStandby will read as FALSE). + * InHotStandby will read as false). * * In DISABLED state, we're performing crash recovery or hot standby was * disabled in postgresql.conf. @@ -75,7 +75,7 @@ extern HotStandbyState standbyState; /* * Recovery target type. - * Only set during a Point in Time recovery, not when standby_mode = on + * Only set during a Point in Time recovery, not when in standby mode. */ typedef enum { @@ -87,6 +87,16 @@ typedef enum RECOVERY_TARGET_IMMEDIATE } RecoveryTargetType; +/* + * Recovery target TimeLine goal + */ +typedef enum +{ + RECOVERY_TARGET_TIMELINE_CONTROLFILE, + RECOVERY_TARGET_TIMELINE_LATEST, + RECOVERY_TARGET_TIMELINE_NUMERIC +} RecoveryTargetTimeLineGoal; + extern XLogRecPtr ProcLastRecPtr; extern XLogRecPtr XactLastRecEnd; extern PGDLLIMPORT XLogRecPtr XactLastCommitEnd; @@ -94,9 +104,11 @@ extern PGDLLIMPORT XLogRecPtr XactLastCommitEnd; extern bool reachedConsistency; /* these variables are GUC parameters related to XLOG */ +extern int wal_segment_size; extern int min_wal_size_mb; extern int max_wal_size_mb; -extern int wal_keep_segments; +extern int wal_keep_size_mb; +extern int max_slot_wal_keep_size_mb; extern int XLOGbuffers; extern int XLogArchiveTimeout; extern int wal_retrieve_retry_interval; @@ -105,12 +117,38 @@ extern bool EnableHotStandby; extern bool fullPageWrites; extern bool wal_log_hints; extern bool wal_compression; +extern bool wal_init_zero; +extern bool wal_recycle; extern bool *wal_consistency_checking; extern char *wal_consistency_checking_string; extern bool log_checkpoints; +extern char *recoveryRestoreCommand; +extern char *recoveryEndCommand; +extern char *archiveCleanupCommand; +extern bool recoveryTargetInclusive; +extern int recoveryTargetAction; +extern int recovery_min_apply_delay; +extern char *PrimaryConnInfo; +extern char *PrimarySlotName; +extern bool wal_receiver_create_temp_slot; + +/* indirectly set via GUC system */ +extern TransactionId recoveryTargetXid; +extern char *recovery_target_time_string; +extern const char *recoveryTargetName; +extern XLogRecPtr recoveryTargetLSN; +extern RecoveryTargetType recoveryTarget; +extern char *PromoteTriggerFile; +extern RecoveryTargetTimeLineGoal recoveryTargetTimeLineGoal; +extern TimeLineID recoveryTargetTLIRequested; +extern TimeLineID recoveryTargetTLI; extern int CheckPointSegments; +/* option set locally in startup process only when signal files exist */ +extern bool StandbyModeRequested; +extern bool StandbyMode; + /* Archive modes */ typedef enum ArchiveMode { @@ -189,11 +227,10 @@ extern bool XLOG_DEBUG; * belonging to unlogged tables */ /* These are important to RequestCheckpoint */ #define CHECKPOINT_WAIT 0x0020 /* Wait for completion */ +#define CHECKPOINT_REQUESTED 0x0040 /* Checkpoint request has been made */ /* These indicate the cause of a checkpoint request */ -#define CHECKPOINT_CAUSE_XLOG 0x0040 /* XLOG consumption */ -#define CHECKPOINT_CAUSE_TIME 0x0080 /* Elapsed time */ -/* We set this to ensure that ckpt_flags is not 0 if a request has been made */ -#define CHECKPOINT_REQUESTED 0x0100 /* Checkpoint request has been made */ +#define CHECKPOINT_CAUSE_XLOG 0x0080 /* XLOG consumption */ +#define CHECKPOINT_CAUSE_TIME 0x0100 /* Elapsed time */ /* * Flag bits for the record being inserted, set using XLogSetRecordFlags(). @@ -227,11 +264,25 @@ typedef struct CheckpointStatsData extern CheckpointStatsData CheckpointStats; +/* + * GetWALAvailability return codes + */ +typedef enum WALAvailability +{ + WALAVAIL_INVALID_LSN, /* parameter error */ + WALAVAIL_RESERVED, /* WAL segment is within max_wal_size */ + WALAVAIL_EXTENDED, /* WAL segment is reserved by a slot or + * wal_keep_size */ + WALAVAIL_UNRESERVED, /* no longer reserved, but not removed yet */ + WALAVAIL_REMOVED /* WAL segment has been removed */ +} WALAvailability; + struct XLogRecData; extern XLogRecPtr XLogInsertRecord(struct XLogRecData *rdata, - XLogRecPtr fpw_lsn, - uint8 flags); + XLogRecPtr fpw_lsn, + uint8 flags, + int num_fpi); extern void XLogFlush(XLogRecPtr RecPtr); extern bool XLogBackgroundFlush(void); extern bool XLogNeedsFlush(XLogRecPtr RecPtr); @@ -262,7 +313,6 @@ extern bool RecoveryIsPaused(void); extern void SetRecoveryPause(bool recoveryPause); extern TimestampTz GetLatestXTime(void); extern TimestampTz GetCurrentChunkReplayStartTime(void); -extern char *XLogFileNameP(TimeLineID tli, XLogSegNo segno); extern void UpdateControlFile(void); extern uint64 GetSystemIdentifier(void); @@ -272,11 +322,14 @@ extern XLogRecPtr GetFakeLSNForUnloggedRel(void); extern Size XLOGShmemSize(void); extern void XLOGShmemInit(void); extern void BootStrapXLOG(void); +extern void LocalProcessControlFile(bool reset); extern void StartupXLOG(void); extern void ShutdownXLOG(int code, Datum arg); extern void InitXLOGAccess(void); extern void CreateCheckPoint(int flags); extern bool CreateRestartPoint(int flags); +extern WALAvailability GetWALAvailability(XLogRecPtr targetLSN); +extern XLogRecPtr CalculateMaxmumSafeLSN(void); extern void XLogPutNextOid(Oid nextOid); extern XLogRecPtr XLogRestorePoint(const char *rpName); extern void UpdateFullPageWrites(void); @@ -285,13 +338,14 @@ extern XLogRecPtr GetRedoRecPtr(void); extern XLogRecPtr GetInsertRecPtr(void); extern XLogRecPtr GetFlushRecPtr(void); extern XLogRecPtr GetLastImportantRecPtr(void); -extern void GetNextXidAndEpoch(TransactionId *xid, uint32 *epoch); extern void RemovePromoteSignalFiles(void); +extern bool PromoteIsTriggered(void); extern bool CheckPromoteSignal(void); extern void WakeupRecovery(void); extern void SetWalWriterSleeping(bool sleeping); +extern void StartupRequestWalReceiverRestart(void); extern void XLogRequestWalReceiverReply(void); extern void assign_max_wal_size(int newval, void *extra); @@ -319,19 +373,26 @@ typedef enum SessionBackupState } SessionBackupState; extern XLogRecPtr do_pg_start_backup(const char *backupidstr, bool fast, - TimeLineID *starttli_p, StringInfo labelfile, DIR *tblspcdir, - List **tablespaces, StringInfo tblspcmapfile, bool infotbssize, - bool needtblspcmapfile); + TimeLineID *starttli_p, StringInfo labelfile, + List **tablespaces, StringInfo tblspcmapfile, bool infotbssize, + bool needtblspcmapfile); extern XLogRecPtr do_pg_stop_backup(char *labelfile, bool waitforarchive, - TimeLineID *stoptli_p); -extern void do_pg_abort_backup(void); + TimeLineID *stoptli_p); +extern void do_pg_abort_backup(int code, Datum arg); +extern void register_persistent_abort_backup_handler(void); extern SessionBackupState get_backup_status(void); /* File path names (all relative to $PGDATA) */ +#define RECOVERY_SIGNAL_FILE "recovery.signal" +#define STANDBY_SIGNAL_FILE "standby.signal" #define BACKUP_LABEL_FILE "backup_label" #define BACKUP_LABEL_OLD "backup_label.old" #define TABLESPACE_MAP "tablespace_map" #define TABLESPACE_MAP_OLD "tablespace_map.old" +/* files to signal promotion to primary */ +#define PROMOTE_SIGNAL_FILE "promote" +#define FALLBACK_PROMOTE_SIGNAL_FILE "fallback_promote" + #endif /* XLOG_H */ diff --git a/parser/include/access/xlog_internal.h b/parser/include/access/xlog_internal.h index 7453dcbd..88f3d767 100644 --- a/parser/include/access/xlog_internal.h +++ b/parser/include/access/xlog_internal.h @@ -11,7 +11,7 @@ * Note: This file must be includable in both frontend and backend contexts, * to allow stand-alone tools like pg_receivewal to deal with WAL files. * - * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/access/xlog_internal.h @@ -31,7 +31,7 @@ /* * Each page of XLOG file has a header like this: */ -#define XLOG_PAGE_MAGIC 0xD097 /* can be used as WAL version indicator */ +#define XLOG_PAGE_MAGIC 0xD106 /* can be used as WAL version indicator */ typedef struct XLogPageHeaderData { @@ -45,7 +45,7 @@ typedef struct XLogPageHeaderData * continue on the next page. xlp_rem_len is the number of bytes * remaining from a previous page. * - * Note that xl_rem_len includes backup-block data; that is, it tracks + * Note that xlp_rem_len includes backup-block data; that is, it tracks * xl_tot_len not xl_len in the initial header. Also note that the * continuation data isn't necessarily aligned. */ @@ -85,15 +85,27 @@ typedef XLogLongPageHeaderData *XLogLongPageHeader; #define XLogPageHeaderSize(hdr) \ (((hdr)->xlp_info & XLP_LONG_HEADER) ? SizeOfXLogLongPHD : SizeOfXLogShortPHD) -/* - * The XLOG is split into WAL segments (physical files) of the size indicated - * by XLOG_SEG_SIZE. - */ -#define XLogSegSize ((uint32) XLOG_SEG_SIZE) -#define XLogSegmentsPerXLogId (UINT64CONST(0x100000000) / XLOG_SEG_SIZE) +/* wal_segment_size can range from 1MB to 1GB */ +#define WalSegMinSize 1024 * 1024 +#define WalSegMaxSize 1024 * 1024 * 1024 +/* default number of min and max wal segments */ +#define DEFAULT_MIN_WAL_SEGS 5 +#define DEFAULT_MAX_WAL_SEGS 64 + +/* check that the given size is a valid wal_segment_size */ +#define IsPowerOf2(x) (x > 0 && ((x) & ((x)-1)) == 0) +#define IsValidWalSegSize(size) \ + (IsPowerOf2(size) && \ + ((size) >= WalSegMinSize && (size) <= WalSegMaxSize)) + +#define XLogSegmentsPerXLogId(wal_segsz_bytes) \ + (UINT64CONST(0x100000000) / (wal_segsz_bytes)) -#define XLogSegNoOffsetToRecPtr(segno, offset, dest) \ - (dest) = (segno) * XLOG_SEG_SIZE + (offset) +#define XLogSegNoOffsetToRecPtr(segno, offset, wal_segsz_bytes, dest) \ + (dest) = (segno) * (wal_segsz_bytes) + (offset) + +#define XLogSegmentOffset(xlogptr, wal_segsz_bytes) \ + ((xlogptr) & ((wal_segsz_bytes) - 1)) /* * Compute a segment number from an XLogRecPtr. @@ -103,11 +115,18 @@ typedef XLogLongPageHeaderData *XLogLongPageHeader; * for deciding which segment to write given a pointer to a record end, * for example. */ -#define XLByteToSeg(xlrp, logSegNo) \ - logSegNo = (xlrp) / XLogSegSize +#define XLByteToSeg(xlrp, logSegNo, wal_segsz_bytes) \ + logSegNo = (xlrp) / (wal_segsz_bytes) -#define XLByteToPrevSeg(xlrp, logSegNo) \ - logSegNo = ((xlrp) - 1) / XLogSegSize +#define XLByteToPrevSeg(xlrp, logSegNo, wal_segsz_bytes) \ + logSegNo = ((xlrp) - 1) / (wal_segsz_bytes) + +/* + * Convert values of GUCs measured in megabytes to equiv. segment count. + * Rounds down. + */ +#define XLogMBVarToSegs(mbvar, wal_segsz_bytes) \ + ((mbvar) / ((wal_segsz_bytes) / (1024 * 1024))) /* * Is an XLogRecPtr within a particular XLOG segment? @@ -115,11 +134,11 @@ typedef XLogLongPageHeaderData *XLogLongPageHeader; * For XLByteInSeg, do the computation at face value. For XLByteInPrevSeg, * a boundary byte is taken to be in the previous segment. */ -#define XLByteInSeg(xlrp, logSegNo) \ - (((xlrp) / XLogSegSize) == (logSegNo)) +#define XLByteInSeg(xlrp, logSegNo, wal_segsz_bytes) \ + (((xlrp) / (wal_segsz_bytes)) == (logSegNo)) -#define XLByteInPrevSeg(xlrp, logSegNo) \ - ((((xlrp) - 1) / XLogSegSize) == (logSegNo)) +#define XLByteInPrevSeg(xlrp, logSegNo, wal_segsz_bytes) \ + ((((xlrp) - 1) / (wal_segsz_bytes)) == (logSegNo)) /* Check if an XLogRecPtr value is in a plausible range */ #define XRecOffIsValid(xlrp) \ @@ -140,10 +159,14 @@ typedef XLogLongPageHeaderData *XLogLongPageHeader; /* Length of XLog file name */ #define XLOG_FNAME_LEN 24 -#define XLogFileName(fname, tli, logSegNo) \ +/* + * Generate a WAL segment file name. Do not use this macro in a helper + * function allocating the result generated. + */ +#define XLogFileName(fname, tli, logSegNo, wal_segsz_bytes) \ snprintf(fname, MAXFNAMELEN, "%08X%08X%08X", tli, \ - (uint32) ((logSegNo) / XLogSegmentsPerXLogId), \ - (uint32) ((logSegNo) % XLogSegmentsPerXLogId)) + (uint32) ((logSegNo) / XLogSegmentsPerXLogId(wal_segsz_bytes)), \ + (uint32) ((logSegNo) % XLogSegmentsPerXLogId(wal_segsz_bytes))) #define XLogFileNameById(fname, tli, log, seg) \ snprintf(fname, MAXFNAMELEN, "%08X%08X%08X", tli, log, seg) @@ -162,18 +185,18 @@ typedef XLogLongPageHeaderData *XLogLongPageHeader; strspn(fname, "0123456789ABCDEF") == XLOG_FNAME_LEN && \ strcmp((fname) + XLOG_FNAME_LEN, ".partial") == 0) -#define XLogFromFileName(fname, tli, logSegNo) \ +#define XLogFromFileName(fname, tli, logSegNo, wal_segsz_bytes) \ do { \ uint32 log; \ uint32 seg; \ sscanf(fname, "%08X%08X%08X", tli, &log, &seg); \ - *logSegNo = (uint64) log * XLogSegmentsPerXLogId + seg; \ + *logSegNo = (uint64) log * XLogSegmentsPerXLogId(wal_segsz_bytes) + seg; \ } while (0) -#define XLogFilePath(path, tli, logSegNo) \ - snprintf(path, MAXPGPATH, XLOGDIR "/%08X%08X%08X", tli, \ - (uint32) ((logSegNo) / XLogSegmentsPerXLogId), \ - (uint32) ((logSegNo) % XLogSegmentsPerXLogId)) +#define XLogFilePath(path, tli, logSegNo, wal_segsz_bytes) \ + snprintf(path, MAXPGPATH, XLOGDIR "/%08X%08X%08X", tli, \ + (uint32) ((logSegNo) / XLogSegmentsPerXLogId(wal_segsz_bytes)), \ + (uint32) ((logSegNo) % XLogSegmentsPerXLogId(wal_segsz_bytes))) #define TLHistoryFileName(fname, tli) \ snprintf(fname, MAXFNAMELEN, "%08X.history", tli) @@ -189,20 +212,22 @@ typedef XLogLongPageHeaderData *XLogLongPageHeader; #define StatusFilePath(path, xlog, suffix) \ snprintf(path, MAXPGPATH, XLOGDIR "/archive_status/%s%s", xlog, suffix) -#define BackupHistoryFileName(fname, tli, logSegNo, offset) \ +#define BackupHistoryFileName(fname, tli, logSegNo, startpoint, wal_segsz_bytes) \ snprintf(fname, MAXFNAMELEN, "%08X%08X%08X.%08X.backup", tli, \ - (uint32) ((logSegNo) / XLogSegmentsPerXLogId), \ - (uint32) ((logSegNo) % XLogSegmentsPerXLogId), offset) + (uint32) ((logSegNo) / XLogSegmentsPerXLogId(wal_segsz_bytes)), \ + (uint32) ((logSegNo) % XLogSegmentsPerXLogId(wal_segsz_bytes)), \ + (uint32) (XLogSegmentOffset(startpoint, wal_segsz_bytes))) #define IsBackupHistoryFileName(fname) \ (strlen(fname) > XLOG_FNAME_LEN && \ strspn(fname, "0123456789ABCDEF") == XLOG_FNAME_LEN && \ strcmp((fname) + strlen(fname) - strlen(".backup"), ".backup") == 0) -#define BackupHistoryFilePath(path, tli, logSegNo, offset) \ +#define BackupHistoryFilePath(path, tli, logSegNo, startpoint, wal_segsz_bytes) \ snprintf(path, MAXPGPATH, XLOGDIR "/%08X%08X%08X.%08X.backup", tli, \ - (uint32) ((logSegNo) / XLogSegmentsPerXLogId), \ - (uint32) ((logSegNo) % XLogSegmentsPerXLogId), offset) + (uint32) ((logSegNo) / XLogSegmentsPerXLogId(wal_segsz_bytes)), \ + (uint32) ((logSegNo) % XLogSegmentsPerXLogId(wal_segsz_bytes)), \ + (uint32) (XLogSegmentOffset((startpoint), wal_segsz_bytes))) /* * Information logged when we detect a change in one of the parameters @@ -212,6 +237,7 @@ typedef struct xl_parameter_change { int MaxConnections; int max_worker_processes; + int max_wal_senders; int max_prepared_xacts; int max_locks_per_xact; int wal_level; @@ -253,7 +279,7 @@ typedef enum RECOVERY_TARGET_ACTION_PAUSE, RECOVERY_TARGET_ACTION_PROMOTE, RECOVERY_TARGET_ACTION_SHUTDOWN -} RecoveryTargetAction; +} RecoveryTargetAction; /* * Method table for resource managers. @@ -301,22 +327,4 @@ extern bool InArchiveRecovery; extern bool StandbyMode; extern char *recoveryRestoreCommand; -/* - * Prototypes for functions in xlogarchive.c - */ -extern bool RestoreArchivedFile(char *path, const char *xlogfname, - const char *recovername, off_t expectedSize, - bool cleanupEnabled); -extern void ExecuteRecoveryCommand(char *command, char *commandName, - bool failOnerror); -extern void KeepFileRestoredFromArchive(char *path, char *xlogfname); -extern void XLogArchiveNotify(const char *xlog); -extern void XLogArchiveNotifySeg(XLogSegNo segno); -extern void XLogArchiveForceDone(const char *xlog); -extern bool XLogArchiveCheckDone(const char *xlog); -extern bool XLogArchiveIsBusy(const char *xlog); -extern bool XLogArchiveIsReady(const char *xlog); -extern bool XLogArchiveIsReadyOrDone(const char *xlog); -extern void XLogArchiveCleanup(const char *xlog); - #endif /* XLOG_INTERNAL_H */ diff --git a/parser/include/access/xlogdefs.h b/parser/include/access/xlogdefs.h index 3a80d6be..e1f58122 100644 --- a/parser/include/access/xlogdefs.h +++ b/parser/include/access/xlogdefs.h @@ -4,7 +4,7 @@ * Postgres write-ahead log manager record pointer and * timeline number definitions * - * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/access/xlogdefs.h @@ -22,12 +22,19 @@ typedef uint64 XLogRecPtr; /* * Zero is used indicate an invalid pointer. Bootstrap skips the first possible - * WAL segment, initializing the first WAL page at XLOG_SEG_SIZE, so no XLOG + * WAL segment, initializing the first WAL page at WAL segment size, so no XLOG * record can begin at zero. */ #define InvalidXLogRecPtr 0 #define XLogRecPtrIsInvalid(r) ((r) == InvalidXLogRecPtr) +/* + * First LSN to use for "fake" LSNs. + * + * Values smaller than this can be used for special per-AM purposes. + */ +#define FirstNormalUnloggedLSN ((XLogRecPtr) 1000) + /* * XLogSegNo - physical log file sequence number. */ diff --git a/parser/include/access/xloginsert.h b/parser/include/access/xloginsert.h index 09bf9463..63df25ae 100644 --- a/parser/include/access/xloginsert.h +++ b/parser/include/access/xloginsert.h @@ -3,7 +3,7 @@ * * Functions for generating WAL records * - * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/access/xloginsert.h @@ -42,21 +42,21 @@ extern void XLogBeginInsert(void); extern void XLogSetRecordFlags(uint8 flags); extern XLogRecPtr XLogInsert(RmgrId rmid, uint8 info); -extern void XLogEnsureRecordSpace(int nbuffers, int ndatas); +extern void XLogEnsureRecordSpace(int max_block_id, int ndatas); extern void XLogRegisterData(char *data, int len); extern void XLogRegisterBuffer(uint8 block_id, Buffer buffer, uint8 flags); extern void XLogRegisterBlock(uint8 block_id, RelFileNode *rnode, - ForkNumber forknum, BlockNumber blknum, char *page, - uint8 flags); + ForkNumber forknum, BlockNumber blknum, char *page, + uint8 flags); extern void XLogRegisterBufData(uint8 block_id, char *data, int len); extern void XLogResetInsertion(void); extern bool XLogCheckBufferNeedsBackup(Buffer buffer); extern XLogRecPtr log_newpage(RelFileNode *rnode, ForkNumber forkNum, - BlockNumber blk, char *page, bool page_std); + BlockNumber blk, char *page, bool page_std); extern XLogRecPtr log_newpage_buffer(Buffer buffer, bool page_std); extern void log_newpage_range(Relation rel, ForkNumber forkNum, - BlockNumber startblk, BlockNumber endblk, bool page_std); + BlockNumber startblk, BlockNumber endblk, bool page_std); extern XLogRecPtr XLogSaveBufferForHint(Buffer buffer, bool buffer_std); extern void InitXLogInsert(void); diff --git a/parser/include/access/xlogreader.h b/parser/include/access/xlogreader.h index f4358bd1..b0f2a6ed 100644 --- a/parser/include/access/xlogreader.h +++ b/parser/include/access/xlogreader.h @@ -3,7 +3,7 @@ * xlogreader.h * Definitions for the generic XLog reading facility * - * Portions Copyright (c) 2013-2017, PostgreSQL Global Development Group + * Portions Copyright (c) 2013-2020, PostgreSQL Global Development Group * * IDENTIFICATION * src/include/access/xlogreader.h @@ -13,7 +13,16 @@ * how to use the XLogReader infrastructure. * * The basic idea is to allocate an XLogReaderState via - * XLogReaderAllocate(), and call XLogReadRecord() until it returns NULL. + * XLogReaderAllocate(), position the reader to the first record with + * XLogBeginRead() or XLogFindNextRecord(), and call XLogReadRecord() + * until it returns NULL. + * + * Callers supply a page_read callback if they want to to call + * XLogReadRecord or XLogFindNextRecord; it can be passed in as NULL + * otherwise. The WALRead function can be used as a helper to write + * page_read callbacks, but it is not mandatory; callers that use it, + * must supply segment_open callbacks. The segment_close callback + * must always be supplied. * * After reading a record with XLogReadRecord(), it's decomposed into * the per-block and main data parts, and the parts can be accessed @@ -25,17 +34,86 @@ #ifndef XLOGREADER_H #define XLOGREADER_H +#ifndef FRONTEND +#include "access/transam.h" +#endif + #include "access/xlogrecord.h" +/* WALOpenSegment represents a WAL segment being read. */ +typedef struct WALOpenSegment +{ + int ws_file; /* segment file descriptor */ + XLogSegNo ws_segno; /* segment number */ + TimeLineID ws_tli; /* timeline ID of the currently open file */ +} WALOpenSegment; + +/* WALSegmentContext carries context information about WAL segments to read */ +typedef struct WALSegmentContext +{ + char ws_dir[MAXPGPATH]; + int ws_segsize; +} WALSegmentContext; + typedef struct XLogReaderState XLogReaderState; -/* Function type definition for the read_page callback */ +/* Function type definitions for various xlogreader interactions */ typedef int (*XLogPageReadCB) (XLogReaderState *xlogreader, XLogRecPtr targetPagePtr, int reqLen, XLogRecPtr targetRecPtr, - char *readBuf, - TimeLineID *pageTLI); + char *readBuf); +typedef void (*WALSegmentOpenCB) (XLogReaderState *xlogreader, + XLogSegNo nextSegNo, + TimeLineID *tli_p); +typedef void (*WALSegmentCloseCB) (XLogReaderState *xlogreader); + +typedef struct XLogReaderRoutine +{ + /* + * Data input callback + * + * This callback shall read at least reqLen valid bytes of the xlog page + * starting at targetPagePtr, and store them in readBuf. The callback + * shall return the number of bytes read (never more than XLOG_BLCKSZ), or + * -1 on failure. The callback shall sleep, if necessary, to wait for the + * requested bytes to become available. The callback will not be invoked + * again for the same page unless more than the returned number of bytes + * are needed. + * + * targetRecPtr is the position of the WAL record we're reading. Usually + * it is equal to targetPagePtr + reqLen, but sometimes xlogreader needs + * to read and verify the page or segment header, before it reads the + * actual WAL record it's interested in. In that case, targetRecPtr can + * be used to determine which timeline to read the page from. + * + * The callback shall set ->seg.ws_tli to the TLI of the file the page was + * read from. + */ + XLogPageReadCB page_read; + + /* + * Callback to open the specified WAL segment for reading. ->seg.ws_file + * shall be set to the file descriptor of the opened segment. In case of + * failure, an error shall be raised by the callback and it shall not + * return. + * + * "nextSegNo" is the number of the segment to be opened. + * + * "tli_p" is an input/output argument. WALRead() uses it to pass the + * timeline in which the new segment should be found, but the callback can + * use it to return the TLI that it actually opened. + */ + WALSegmentOpenCB segment_open; + + /* + * WAL segment close callback. ->seg.ws_file shall be set to a negative + * number. + */ + WALSegmentCloseCB segment_close; +} XLogReaderRoutine; + +#define XL_ROUTINE(...) &(XLogReaderRoutine){__VA_ARGS__} typedef struct { @@ -68,34 +146,16 @@ typedef struct struct XLogReaderState { + /* + * Operational callbacks + */ + XLogReaderRoutine routine; + /* ---------------------------------------- * Public parameters * ---------------------------------------- */ - /* - * Data input callback (mandatory). - * - * This callback shall read at least reqLen valid bytes of the xlog page - * starting at targetPagePtr, and store them in readBuf. The callback - * shall return the number of bytes read (never more than XLOG_BLCKSZ), or - * -1 on failure. The callback shall sleep, if necessary, to wait for the - * requested bytes to become available. The callback will not be invoked - * again for the same page unless more than the returned number of bytes - * are needed. - * - * targetRecPtr is the position of the WAL record we're reading. Usually - * it is equal to targetPagePtr + reqLen, but sometimes xlogreader needs - * to read and verify the page or segment header, before it reads the - * actual WAL record it's interested in. In that case, targetRecPtr can - * be used to determine which timeline to read the page from. - * - * The callback shall set *pageTLI to the TLI of the file the page was - * read from. It is currently used only for error reporting purposes, to - * reconstruct the name of the WAL file where an error occurred. - */ - XLogPageReadCB read_page; - /* * System identifier of the xlog files we're about to read. Set to zero * (the default value) if unknown or unimportant. @@ -109,7 +169,8 @@ struct XLogReaderState /* * Start and end point of last record read. EndRecPtr is also used as the - * position to read next, if XLogReadRecord receives an invalid recptr. + * position to read next. Calling XLogBeginRead() sets EndRecPtr to the + * starting position and ReadRecPtr to invalid. */ XLogRecPtr ReadRecPtr; /* start of last record read */ XLogRecPtr EndRecPtr; /* end+1 of last record read */ @@ -147,10 +208,10 @@ struct XLogReaderState char *readBuf; uint32 readLen; - /* last read segment, segment offset, TLI for data currently in readBuf */ - XLogSegNo readSegNo; - uint32 readOff; - TimeLineID readPageTLI; + /* last read XLOG position for data currently in readBuf */ + WALSegmentContext segcxt; + WALOpenSegment seg; + uint32 segoff; /* * beginning of prior page read, and its TLI. Doesn't necessarily @@ -180,7 +241,10 @@ struct XLogReaderState */ TimeLineID nextTLI; - /* Buffer for current ReadRecord result (expandable) */ + /* + * Buffer for current ReadRecord result (expandable), used when a record + * crosses a page boundary. + */ char *readRecordBuf; uint32 readRecordBufSize; @@ -189,31 +253,50 @@ struct XLogReaderState }; /* Get a new XLogReader */ -extern XLogReaderState *XLogReaderAllocate(XLogPageReadCB pagereadfunc, - void *private_data); +extern XLogReaderState *XLogReaderAllocate(int wal_segment_size, + const char *waldir, + XLogReaderRoutine *routine, + void *private_data); +extern XLogReaderRoutine *LocalXLogReaderRoutine(void); /* Free an XLogReader */ extern void XLogReaderFree(XLogReaderState *state); +/* Position the XLogReader to given record */ +extern void XLogBeginRead(XLogReaderState *state, XLogRecPtr RecPtr); +#ifdef FRONTEND +extern XLogRecPtr XLogFindNextRecord(XLogReaderState *state, XLogRecPtr RecPtr); +#endif /* FRONTEND */ + /* Read the next XLog record. Returns NULL on end-of-WAL or failure */ extern struct XLogRecord *XLogReadRecord(XLogReaderState *state, - XLogRecPtr recptr, char **errormsg); + char **errormsg); /* Validate a page */ extern bool XLogReaderValidatePageHeader(XLogReaderState *state, - XLogRecPtr recptr, char *phdr); + XLogRecPtr recptr, char *phdr); -/* Invalidate read state */ -extern void XLogReaderInvalReadState(XLogReaderState *state); +/* + * Error information from WALRead that both backend and frontend caller can + * process. Currently only errors from pg_pread can be reported. + */ +typedef struct WALReadError +{ + int wre_errno; /* errno set by the last pg_pread() */ + int wre_off; /* Offset we tried to read from. */ + int wre_req; /* Bytes requested to be read. */ + int wre_read; /* Bytes read by the last read(). */ + WALOpenSegment wre_seg; /* Segment we tried to read from. */ +} WALReadError; -#ifdef FRONTEND -extern XLogRecPtr XLogFindNextRecord(XLogReaderState *state, XLogRecPtr RecPtr); -#endif /* FRONTEND */ +extern bool WALRead(XLogReaderState *state, + char *buf, XLogRecPtr startptr, Size count, + TimeLineID tli, WALReadError *errinfo); /* Functions for decoding an XLogRecord */ extern bool DecodeXLogRecord(XLogReaderState *state, XLogRecord *record, - char **errmsg); + char **errmsg); #define XLogRecGetTotalLen(decoder) ((decoder)->decoded_record->xl_tot_len) #define XLogRecGetPrev(decoder) ((decoder)->decoded_record->xl_prev) @@ -231,10 +314,14 @@ extern bool DecodeXLogRecord(XLogReaderState *state, XLogRecord *record, #define XLogRecBlockImageApply(decoder, block_id) \ ((decoder)->blocks[block_id].apply_image) -extern bool RestoreBlockImage(XLogReaderState *recoder, uint8 block_id, char *dst); +#ifndef FRONTEND +extern FullTransactionId XLogRecGetFullXid(XLogReaderState *record); +#endif + +extern bool RestoreBlockImage(XLogReaderState *record, uint8 block_id, char *page); extern char *XLogRecGetBlockData(XLogReaderState *record, uint8 block_id, Size *len); extern bool XLogRecGetBlockTag(XLogReaderState *record, uint8 block_id, - RelFileNode *rnode, ForkNumber *forknum, - BlockNumber *blknum); + RelFileNode *rnode, ForkNumber *forknum, + BlockNumber *blknum); #endif /* XLOGREADER_H */ diff --git a/parser/include/access/xlogrecord.h b/parser/include/access/xlogrecord.h index b53960e1..acd9af01 100644 --- a/parser/include/access/xlogrecord.h +++ b/parser/include/access/xlogrecord.h @@ -3,7 +3,7 @@ * * Definitions for the WAL record format. * - * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/access/xlogrecord.h @@ -107,15 +107,14 @@ typedef struct XLogRecordBlockHeader * Additional header information when a full-page image is included * (i.e. when BKPBLOCK_HAS_IMAGE is set). * - * As a trivial form of data compression, the XLOG code is aware that - * PG data pages usually contain an unused "hole" in the middle, which - * contains only zero bytes. If the length of "hole" > 0 then we have removed - * such a "hole" from the stored data (and it's not counted in the - * XLOG record's CRC, either). Hence, the amount of block data actually - * present is BLCKSZ - the length of "hole" bytes. + * The XLOG code is aware that PG data pages usually contain an unused "hole" + * in the middle, which contains only zero bytes. Since we know that the + * "hole" is all zeros, we remove it from the stored data (and it's not counted + * in the XLOG record's CRC, either). Hence, the amount of block data actually + * present is (BLCKSZ - ). * - * When wal_compression is enabled, a full page image which "hole" was - * removed is additionally compressed using PGLZ compression algorithm. + * Additionally, when wal_compression is enabled, we will try to compress full + * page images using the PGLZ compression algorithm, after removing the "hole". * This can reduce the WAL volume, but at some extra cost of CPU spent * on the compression during WAL logging. In this case, since the "hole" * length cannot be calculated by subtracting the number of page image bytes diff --git a/parser/include/bootstrap/bootstrap.h b/parser/include/bootstrap/bootstrap.h index 35eb9a4f..b67fa9ac 100644 --- a/parser/include/bootstrap/bootstrap.h +++ b/parser/include/bootstrap/bootstrap.h @@ -4,7 +4,7 @@ * include file for the bootstrapping code * * - * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/bootstrap/bootstrap.h @@ -34,29 +34,25 @@ extern int numattr; extern void AuxiliaryProcessMain(int argc, char *argv[]) pg_attribute_noreturn(); -extern void err_out(void); - extern void closerel(char *name); extern void boot_openrel(char *name); extern void DefineAttr(char *name, char *type, int attnum, int nullness); -extern void InsertOneTuple(Oid objectid); +extern void InsertOneTuple(void); extern void InsertOneValue(char *value, int i); extern void InsertOneNull(int i); -extern char *MapArrayTypeName(const char *s); - extern void index_register(Oid heap, Oid ind, IndexInfo *indexInfo); extern void build_indices(void); extern void boot_get_type_io_data(Oid typid, - int16 *typlen, - bool *typbyval, - char *typalign, - char *typdelim, - Oid *typioparam, - Oid *typinput, - Oid *typoutput); + int16 *typlen, + bool *typbyval, + char *typalign, + char *typdelim, + Oid *typioparam, + Oid *typinput, + Oid *typoutput); extern int boot_yyparse(void); diff --git a/parser/include/c.h b/parser/include/c.h index dcd414af..a0bd5128 100644 --- a/parser/include/c.h +++ b/parser/include/c.h @@ -9,7 +9,7 @@ * polluting the namespace with lots of stuff... * * - * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/c.h @@ -27,18 +27,19 @@ * ------- ------------------------------------------------ * 0) pg_config.h and standard system headers * 1) compiler characteristics - * 2) bool, true, false, TRUE, FALSE, NULL + * 2) bool, true, false * 3) standard system types * 4) IsValid macros for system types - * 5) offsetof, lengthof, endof, alignment + * 5) offsetof, lengthof, alignment * 6) assertions * 7) widely useful macros * 8) random stuff * 9) system-specific hacks * - * NOTE: since this file is included by both frontend and backend modules, it's - * almost certainly wrong to put an "extern" declaration here. typedefs and - * macros are the kind of thing that might go here. + * NOTE: since this file is included by both frontend and backend modules, + * it's usually wrong to put an "extern" declaration here, unless it's + * ifdef'd so that it's seen in only one case or the other. + * typedefs and macros are the kind of thing that might go here. * *---------------------------------------------------------------- */ @@ -52,32 +53,9 @@ #include "pg_config.h" #include "pg_config_manual.h" /* must be after pg_config.h */ - -/* - * We always rely on the WIN32 macro being set by our build system, - * but _WIN32 is the compiler pre-defined macro. So make sure we define - * WIN32 whenever _WIN32 is set, to facilitate standalone building. - */ -#if defined(_WIN32) && !defined(WIN32) -#define WIN32 -#endif - -#if !defined(WIN32) && !defined(__CYGWIN__) /* win32 includes further down */ #include "pg_config_os.h" /* must be before any system header files */ -#endif - -#if _MSC_VER >= 1400 || defined(HAVE_CRTDEFS_H) -#define errcode __msvc_errcode -#include -#undef errcode -#endif - -/* - * We have to include stdlib.h here because it defines many of these macros - * on some platforms, and we only want our definitions used if stdlib.h doesn't - * have its own. The same goes for stddef and stdarg if present. - */ +/* System header files that should be available everywhere in Postgres */ #include #include #include @@ -86,9 +64,7 @@ #ifdef HAVE_STRINGS_H #include #endif -#ifdef HAVE_STDINT_H #include -#endif #include #include #if defined(WIN32) || defined(__CYGWIN__) @@ -99,11 +75,6 @@ #include #endif -#if defined(WIN32) || defined(__CYGWIN__) -/* We have to redefine some system functions after they are included above. */ -#include "pg_config_os.h" -#endif - /* ---------------------------------------------------------------- * Section 1: compiler characteristics @@ -128,8 +99,8 @@ * GCC: https://gcc.gnu.org/onlinedocs/gcc/Function-Attributes.html * GCC: https://gcc.gnu.org/onlinedocs/gcc/Type-Attributes.html * Sunpro: https://docs.oracle.com/cd/E18659_01/html/821-1384/gjzke.html - * XLC: http://www-01.ibm.com/support/knowledgecenter/SSGH2K_11.1.0/com.ibm.xlc111.aix.doc/language_ref/function_attributes.html - * XLC: http://www-01.ibm.com/support/knowledgecenter/SSGH2K_11.1.0/com.ibm.xlc111.aix.doc/language_ref/type_attrib.html + * XLC: https://www.ibm.com/support/knowledgecenter/SSGH2K_13.1.2/com.ibm.xlc131.aix.doc/language_ref/function_attributes.html + * XLC: https://www.ibm.com/support/knowledgecenter/SSGH2K_13.1.2/com.ibm.xlc131.aix.doc/language_ref/type_attrib.html */ /* only GCC supports the unused attribute */ @@ -174,6 +145,39 @@ #define pg_attribute_noreturn() #endif +/* + * Use "pg_attribute_always_inline" in place of "inline" for functions that + * we wish to force inlining of, even when the compiler's heuristics would + * choose not to. But, if possible, don't force inlining in unoptimized + * debug builds. + */ +#if (defined(__GNUC__) && __GNUC__ > 3 && defined(__OPTIMIZE__)) || defined(__SUNPRO_C) || defined(__IBMC__) +/* GCC > 3, Sunpro and XLC support always_inline via __attribute__ */ +#define pg_attribute_always_inline __attribute__((always_inline)) inline +#elif defined(_MSC_VER) +/* MSVC has a special keyword for this */ +#define pg_attribute_always_inline __forceinline +#else +/* Otherwise, the best we can do is to say "inline" */ +#define pg_attribute_always_inline inline +#endif + +/* + * Forcing a function not to be inlined can be useful if it's the slow path of + * a performance-critical function, or should be visible in profiles to allow + * for proper cost attribution. Note that unlike the pg_attribute_XXX macros + * above, this should be placed before the function's return type and name. + */ +/* GCC, Sunpro and XLC support noinline via __attribute__ */ +#if (defined(__GNUC__) && __GNUC__ > 2) || defined(__SUNPRO_C) || defined(__IBMC__) +#define pg_noinline __attribute__((noinline)) +/* msvc via declspec */ +#elif defined(_MSC_VER) +#define pg_noinline __declspec(noinline) +#else +#define pg_noinline +#endif + /* * Mark a point as unreachable in a portable fashion. This should preferably * be something that the compiler understands, to aid code generation. @@ -218,6 +222,39 @@ #define CppAsString2(x) CppAsString(x) #define CppConcat(x, y) x##y +/* + * VA_ARGS_NARGS + * Returns the number of macro arguments it is passed. + * + * An empty argument still counts as an argument, so effectively, this is + * "one more than the number of commas in the argument list". + * + * This works for up to 63 arguments. Internally, VA_ARGS_NARGS_() is passed + * 64+N arguments, and the C99 standard only requires macros to allow up to + * 127 arguments, so we can't portably go higher. The implementation is + * pretty trivial: VA_ARGS_NARGS_() returns its 64th argument, and we set up + * the call so that that is the appropriate one of the list of constants. + * This idea is due to Laurent Deniau. + */ +#define VA_ARGS_NARGS(...) \ + VA_ARGS_NARGS_(__VA_ARGS__, \ + 63,62,61,60, \ + 59,58,57,56,55,54,53,52,51,50, \ + 49,48,47,46,45,44,43,42,41,40, \ + 39,38,37,36,35,34,33,32,31,30, \ + 29,28,27,26,25,24,23,22,21,20, \ + 19,18,17,16,15,14,13,12,11,10, \ + 9, 8, 7, 6, 5, 4, 3, 2, 1, 0) +#define VA_ARGS_NARGS_( \ + _01,_02,_03,_04,_05,_06,_07,_08,_09,_10, \ + _11,_12,_13,_14,_15,_16,_17,_18,_19,_20, \ + _21,_22,_23,_24,_25,_26,_27,_28,_29,_30, \ + _31,_32,_33,_34,_35,_36,_37,_38,_39,_40, \ + _41,_42,_43,_44,_45,_46,_47,_48,_49,_50, \ + _51,_52,_53,_54,_55,_56,_57,_58,_59,_60, \ + _61,_62,_63, N, ...) \ + (N) + /* * dummyret is used to set return values in macros that use ?: to make * assignments. gcc wants these to be void, other compilers like char @@ -228,6 +265,16 @@ #define dummyret char #endif +/* + * We require C99, hence the compiler should understand flexible array + * members. However, for documentation purposes we still consider it to be + * project style to write "field[FLEXIBLE_ARRAY_MEMBER]" not just "field[]". + * When computing the size of such an object, use "offsetof(struct s, f)" + * for portability. Don't use "offsetof(struct s, f[0])", as this doesn't + * work with MSVC and with C++ compilers. + */ +#define FLEXIBLE_ARRAY_MEMBER /* empty */ + /* Which __func__ symbol do we have, if any? */ #ifdef HAVE_FUNCNAME__FUNC #define PG_FUNCNAME_MACRO __func__ @@ -241,7 +288,7 @@ /* ---------------------------------------------------------------- - * Section 2: bool, true, false, TRUE, FALSE, NULL + * Section 2: bool, true, false * ---------------------------------------------------------------- */ @@ -249,14 +296,25 @@ * bool * Boolean value, either true or false. * - * XXX for C++ compilers, we assume the compiler has a compatible - * built-in definition of bool. + * We use stdbool.h if available and its bool has size 1. That's useful for + * better compiler and debugger output and for compatibility with third-party + * libraries. But PostgreSQL currently cannot deal with bool of other sizes; + * there are static assertions around the code to prevent that. + * + * For C++ compilers, we assume the compiler has a compatible built-in + * definition of bool. + * + * See also the version of this code in src/interfaces/ecpg/include/ecpglib.h. */ #ifndef __cplusplus +#ifdef PG_USE_STDBOOL +#include +#else + #ifndef bool -typedef char bool; +typedef unsigned char bool; #endif #ifndef true @@ -267,26 +325,9 @@ typedef char bool; #define false ((bool) 0) #endif +#endif /* not PG_USE_STDBOOL */ #endif /* not C++ */ -typedef bool *BoolPtr; - -#ifndef TRUE -#define TRUE 1 -#endif - -#ifndef FALSE -#define FALSE 0 -#endif - -/* - * NULL - * Null pointer. - */ -#ifndef NULL -#define NULL ((void *) 0) -#endif - /* ---------------------------------------------------------------- * Section 3: standard system types @@ -382,22 +423,22 @@ typedef unsigned long long int uint64; typedef PG_INT128_TYPE int128 #if defined(pg_attribute_aligned) -pg_attribute_aligned(MAXIMUM_ALIGNOF) + pg_attribute_aligned(MAXIMUM_ALIGNOF) #endif -; + ; typedef unsigned PG_INT128_TYPE uint128 #if defined(pg_attribute_aligned) -pg_attribute_aligned(MAXIMUM_ALIGNOF) + pg_attribute_aligned(MAXIMUM_ALIGNOF) #endif -; + ; #endif #endif /* - * stdint.h limits aren't guaranteed to be present and aren't guaranteed to - * have compatible types with our fixed width types. So just define our own. + * stdint.h limits aren't guaranteed to have compatible types with our fixed + * width types. So just define our own. */ #define PG_INT8_MIN (-0x7F-1) #define PG_INT8_MAX (0x7F) @@ -412,15 +453,6 @@ pg_attribute_aligned(MAXIMUM_ALIGNOF) #define PG_INT64_MAX INT64CONST(0x7FFFFFFFFFFFFFFF) #define PG_UINT64_MAX UINT64CONST(0xFFFFFFFFFFFFFFFF) -/* Max value of size_t might also be missing if we don't have stdint.h */ -#ifndef SIZE_MAX -#if SIZEOF_SIZE_T == 8 -#define SIZE_MAX PG_UINT64_MAX -#else -#define SIZE_MAX PG_UINT32_MAX -#endif -#endif - /* * We now always use int64 timestamps, but keep this symbol defined for the * benefit of external code that might test it. @@ -458,6 +490,12 @@ typedef signed int Offset; typedef float float4; typedef double float8; +#ifdef USE_FLOAT8_BYVAL +#define FLOAT8PASSBYVAL true +#else +#define FLOAT8PASSBYVAL false +#endif + /* * Oid, RegProcedure, TransactionId, SubTransactionId, MultiXactId, * CommandId @@ -609,7 +647,7 @@ typedef NameData *Name; /* ---------------------------------------------------------------- - * Section 5: offsetof, lengthof, endof, alignment + * Section 5: offsetof, lengthof, alignment * ---------------------------------------------------------------- */ /* @@ -629,12 +667,6 @@ typedef NameData *Name; */ #define lengthof(array) (sizeof (array) / sizeof ((array)[0])) -/* - * endof - * Address of the element one past the last in an array. - */ -#define endof(array) (&(array)[lengthof(array)]) - /* ---------------- * Alignment macros: align a length or address appropriately for a given type. * The fooALIGN() macros round up to a multiple of the required alignment, @@ -669,6 +701,7 @@ typedef NameData *Name; #define LONGALIGN_DOWN(LEN) TYPEALIGN_DOWN(ALIGNOF_LONG, (LEN)) #define DOUBLEALIGN_DOWN(LEN) TYPEALIGN_DOWN(ALIGNOF_DOUBLE, (LEN)) #define MAXALIGN_DOWN(LEN) TYPEALIGN_DOWN(MAXIMUM_ALIGNOF, (LEN)) +#define BUFFERALIGN_DOWN(LEN) TYPEALIGN_DOWN(ALIGNOF_BUFFER, (LEN)) /* * The above macros will not work with types wider than uintptr_t, like with @@ -728,7 +761,7 @@ typedef NameData *Name; #define Trap(condition, errorType) \ do { \ if (condition) \ - ExceptionalCondition(CppAsString(condition), (errorType), \ + ExceptionalCondition(#condition, (errorType), \ __FILE__, __LINE__); \ } while (0) @@ -741,20 +774,34 @@ typedef NameData *Name; */ #define TrapMacro(condition, errorType) \ ((bool) (! (condition) || \ - (ExceptionalCondition(CppAsString(condition), (errorType), \ + (ExceptionalCondition(#condition, (errorType), \ __FILE__, __LINE__), 0))) #define Assert(condition) \ - Trap(!(condition), "FailedAssertion") + do { \ + if (!(condition)) \ + ExceptionalCondition(#condition, "FailedAssertion", \ + __FILE__, __LINE__); \ + } while (0) #define AssertMacro(condition) \ - ((void) TrapMacro(!(condition), "FailedAssertion")) + ((void) ((condition) || \ + (ExceptionalCondition(#condition, "FailedAssertion", \ + __FILE__, __LINE__), 0))) #define AssertArg(condition) \ - Trap(!(condition), "BadArgument") + do { \ + if (!(condition)) \ + ExceptionalCondition(#condition, "BadArgument", \ + __FILE__, __LINE__); \ + } while (0) #define AssertState(condition) \ - Trap(!(condition), "BadState") + do { \ + if (!(condition)) \ + ExceptionalCondition(#condition, "BadState", \ + __FILE__, __LINE__); \ + } while (0) /* * Check that `ptr' is `bndr' aligned. @@ -765,6 +812,18 @@ typedef NameData *Name; #endif /* USE_ASSERT_CHECKING && !FRONTEND */ +/* + * ExceptionalCondition is compiled into the backend whether or not + * USE_ASSERT_CHECKING is defined, so as to support use of extensions + * that are built with that #define with a backend that isn't. Hence, + * we should declare it as long as !FRONTEND. + */ +#ifndef FRONTEND +extern void ExceptionalCondition(const char *conditionName, + const char *errorType, + const char *fileName, int lineNumber) pg_attribute_noreturn(); +#endif + /* * Macros to support compile-time assertion checks. * @@ -772,24 +831,48 @@ typedef NameData *Name; * throw a compile error using the "errmessage" (a string literal). * * gcc 4.6 and up supports _Static_assert(), but there are bizarre syntactic - * placement restrictions. These macros make it safe to use as a statement - * or in an expression, respectively. + * placement restrictions. Macros StaticAssertStmt() and StaticAssertExpr() + * make it safe to use as a statement or in an expression, respectively. + * The macro StaticAssertDecl() is suitable for use at file scope (outside of + * any function). * * Otherwise we fall back on a kluge that assumes the compiler will complain * about a negative width for a struct bit-field. This will not include a * helpful error message, but it beats not getting an error at all. */ +#ifndef __cplusplus #ifdef HAVE__STATIC_ASSERT #define StaticAssertStmt(condition, errmessage) \ do { _Static_assert(condition, errmessage); } while(0) #define StaticAssertExpr(condition, errmessage) \ - ({ StaticAssertStmt(condition, errmessage); true; }) + ((void) ({ StaticAssertStmt(condition, errmessage); true; })) +#define StaticAssertDecl(condition, errmessage) \ + _Static_assert(condition, errmessage) #else /* !HAVE__STATIC_ASSERT */ #define StaticAssertStmt(condition, errmessage) \ ((void) sizeof(struct { int static_assert_failure : (condition) ? 1 : -1; })) #define StaticAssertExpr(condition, errmessage) \ StaticAssertStmt(condition, errmessage) +#define StaticAssertDecl(condition, errmessage) \ + extern void static_assert_func(int static_assert_failure[(condition) ? 1 : -1]) #endif /* HAVE__STATIC_ASSERT */ +#else /* C++ */ +#if defined(__cpp_static_assert) && __cpp_static_assert >= 200410 +#define StaticAssertStmt(condition, errmessage) \ + static_assert(condition, errmessage) +#define StaticAssertExpr(condition, errmessage) \ + ({ static_assert(condition, errmessage); }) +#define StaticAssertDecl(condition, errmessage) \ + static_assert(condition, errmessage) +#else /* !__cpp_static_assert */ +#define StaticAssertStmt(condition, errmessage) \ + do { struct static_assert_struct { int static_assert_failure : (condition) ? 1 : -1; }; } while(0) +#define StaticAssertExpr(condition, errmessage) \ + ((void) ({ StaticAssertStmt(condition, errmessage); })) +#define StaticAssertDecl(condition, errmessage) \ + extern void static_assert_func(int static_assert_failure[(condition) ? 1 : -1]) +#endif /* __cpp_static_assert */ +#endif /* C++ */ /* @@ -808,14 +891,14 @@ typedef NameData *Name; StaticAssertStmt(__builtin_types_compatible_p(__typeof__(varname), typename), \ CppAsString(varname) " does not have type " CppAsString(typename)) #define AssertVariableIsOfTypeMacro(varname, typename) \ - ((void) StaticAssertExpr(__builtin_types_compatible_p(__typeof__(varname), typename), \ + (StaticAssertExpr(__builtin_types_compatible_p(__typeof__(varname), typename), \ CppAsString(varname) " does not have type " CppAsString(typename))) #else /* !HAVE__BUILTIN_TYPES_COMPATIBLE_P */ #define AssertVariableIsOfType(varname, typename) \ StaticAssertStmt(sizeof(varname) == sizeof(typename), \ CppAsString(varname) " does not have type " CppAsString(typename)) #define AssertVariableIsOfTypeMacro(varname, typename) \ - ((void) StaticAssertExpr(sizeof(varname) == sizeof(typename), \ + (StaticAssertExpr(sizeof(varname) == sizeof(typename), \ CppAsString(varname) " does not have type " CppAsString(typename))) #endif /* HAVE__BUILTIN_TYPES_COMPATIBLE_P */ @@ -993,6 +1076,10 @@ typedef NameData *Name; * ---------------------------------------------------------------- */ +#ifdef HAVE_STRUCT_SOCKADDR_UN +#define HAVE_UNIX_SOCKETS 1 +#endif + /* * Invert the sign of a qsort-style comparison result, ie, exchange negative * and positive integer values, being careful not to get the wrong answer @@ -1032,7 +1119,7 @@ typedef union PGAlignedXLogBlock #define IS_HIGHBIT_SET(ch) ((unsigned char)(ch) & HIGHBIT) /* - * Support macros for escaping strings. escape_backslash should be TRUE + * Support macros for escaping strings. escape_backslash should be true * if generating a non-standard-conforming string. Prefixing a string * with ESCAPE_STRING_SYNTAX guarantees it is non-standard-conforming. * Beware of multiple evaluation of the "ch" argument! @@ -1046,7 +1133,6 @@ typedef union PGAlignedXLogBlock #define STATUS_OK (0) #define STATUS_ERROR (-1) #define STATUS_EOF (-2) -#define STATUS_FOUND (1) #define STATUS_WAITING (2) /* @@ -1092,6 +1178,36 @@ typedef union PGAlignedXLogBlock #define PG_TEXTDOMAIN(domain) (domain "-" PG_MAJORVERSION) #endif +/* + * Macro that allows to cast constness and volatile away from an expression, but doesn't + * allow changing the underlying type. Enforcement of the latter + * currently only works for gcc like compilers. + * + * Please note IT IS NOT SAFE to cast constness away if the result will ever + * be modified (it would be undefined behaviour). Doing so anyway can cause + * compiler misoptimizations or runtime crashes (modifying readonly memory). + * It is only safe to use when the result will not be modified, but API + * design or language restrictions prevent you from declaring that + * (e.g. because a function returns both const and non-const variables). + * + * Note that this only works in function scope, not for global variables (it'd + * be nice, but not trivial, to improve that). + */ +#if defined(HAVE__BUILTIN_TYPES_COMPATIBLE_P) +#define unconstify(underlying_type, expr) \ + (StaticAssertExpr(__builtin_types_compatible_p(__typeof(expr), const underlying_type), \ + "wrong cast"), \ + (underlying_type) (expr)) +#define unvolatize(underlying_type, expr) \ + (StaticAssertExpr(__builtin_types_compatible_p(__typeof(expr), volatile underlying_type), \ + "wrong cast"), \ + (underlying_type) (expr)) +#else +#define unconstify(underlying_type, expr) \ + ((underlying_type) (expr)) +#define unvolatize(underlying_type, expr) \ + ((underlying_type) (expr)) +#endif /* ---------------------------------------------------------------- * Section 9: system-specific hacks @@ -1126,19 +1242,10 @@ typedef union PGAlignedXLogBlock * standard C library. */ -#if !HAVE_DECL_SNPRINTF -extern int snprintf(char *str, size_t count, const char *fmt,...) pg_attribute_printf(3, 4); -#endif - -#if !HAVE_DECL_VSNPRINTF -extern int vsnprintf(char *str, size_t count, const char *fmt, va_list args); -#endif - #if defined(HAVE_FDATASYNC) && !HAVE_DECL_FDATASYNC extern int fdatasync(int fildes); #endif -#ifdef HAVE_LONG_LONG_INT /* Older platforms may provide strto[u]ll functionality under other names */ #if !defined(HAVE_STRTOLL) && defined(HAVE___STRTOLL) #define strtoll __strtoll @@ -1167,11 +1274,6 @@ extern long long strtoll(const char *str, char **endptr, int base); #if defined(HAVE_STRTOULL) && !HAVE_DECL_STRTOULL extern unsigned long long strtoull(const char *str, char **endptr, int base); #endif -#endif /* HAVE_LONG_LONG_INT */ - -#if !defined(HAVE_MEMMOVE) && !defined(memmove) -#define memmove(d, s, c) bcopy(s, d, c) -#endif /* no special DLL markers on most ports */ #ifndef PGDLLIMPORT @@ -1205,14 +1307,6 @@ extern unsigned long long strtoull(const char *str, char **endptr, int base); #define siglongjmp longjmp #endif -/* - * We assume if we have these two functions, we have their friends too, and - * can use the wide-character functions. - */ -#if defined(HAVE_WCSTOMBS) && defined(HAVE_TOWLOWER) -#define USE_WIDE_UPPER_LOWER -#endif - /* EXEC_BACKEND defines */ #ifdef EXEC_BACKEND #define NON_EXEC_STATIC diff --git a/parser/include/catalog/catalog.h b/parser/include/catalog/catalog.h new file mode 100644 index 00000000..7824a123 --- /dev/null +++ b/parser/include/catalog/catalog.h @@ -0,0 +1,42 @@ +/*------------------------------------------------------------------------- + * + * catalog.h + * prototypes for functions in backend/catalog/catalog.c + * + * + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group + * Portions Copyright (c) 1994, Regents of the University of California + * + * src/include/catalog/catalog.h + * + *------------------------------------------------------------------------- + */ +#ifndef CATALOG_H +#define CATALOG_H + +#include "catalog/pg_class.h" +#include "utils/relcache.h" + + +extern bool IsSystemRelation(Relation relation); +extern bool IsToastRelation(Relation relation); +extern bool IsCatalogRelation(Relation relation); + +extern bool IsSystemClass(Oid relid, Form_pg_class reltuple); +extern bool IsToastClass(Form_pg_class reltuple); + +extern bool IsCatalogRelationOid(Oid relid); + +extern bool IsCatalogNamespace(Oid namespaceId); +extern bool IsToastNamespace(Oid namespaceId); + +extern bool IsReservedName(const char *name); + +extern bool IsSharedRelation(Oid relationId); + +extern Oid GetNewOidWithIndex(Relation relation, Oid indexId, + AttrNumber oidcolumn); +extern Oid GetNewRelFileNode(Oid reltablespace, Relation pg_class, + char relpersistence); + +#endif /* CATALOG_H */ diff --git a/parser/include/catalog/catversion.h b/parser/include/catalog/catversion.h new file mode 100644 index 00000000..282019c4 --- /dev/null +++ b/parser/include/catalog/catversion.h @@ -0,0 +1,58 @@ +/*------------------------------------------------------------------------- + * + * catversion.h + * "Catalog version number" for PostgreSQL. + * + * The catalog version number is used to flag incompatible changes in + * the PostgreSQL system catalogs. Whenever anyone changes the format of + * a system catalog relation, or adds, deletes, or modifies standard + * catalog entries in such a way that an updated backend wouldn't work + * with an old database (or vice versa), the catalog version number + * should be changed. The version number stored in pg_control by initdb + * is checked against the version number compiled into the backend at + * startup time, so that a backend can refuse to run in an incompatible + * database. + * + * The point of this feature is to provide a finer grain of compatibility + * checking than is possible from looking at the major version number + * stored in PG_VERSION. It shouldn't matter to end users, but during + * development cycles we usually make quite a few incompatible changes + * to the contents of the system catalogs, and we don't want to bump the + * major version number for each one. What we can do instead is bump + * this internal version number. This should save some grief for + * developers who might otherwise waste time tracking down "bugs" that + * are really just code-vs-database incompatibilities. + * + * The rule for developers is: if you commit a change that requires + * an initdb, you should update the catalog version number (as well as + * notifying the pgsql-hackers mailing list, which has been the + * informal practice for a long time). + * + * The catalog version number is placed here since modifying files in + * include/catalog is the most common kind of initdb-forcing change. + * But it could be used to protect any kind of incompatible change in + * database contents or layout, such as altering tuple headers. + * + * + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group + * Portions Copyright (c) 1994, Regents of the University of California + * + * src/include/catalog/catversion.h + * + *------------------------------------------------------------------------- + */ +#ifndef CATVERSION_H +#define CATVERSION_H + +/* + * We could use anything we wanted for version numbers, but I recommend + * following the "YYYYMMDDN" style often used for DNS zone serial numbers. + * YYYYMMDD are the date of the change, and N is the number of the change + * on that day. (Hopefully we'll never commit ten independent sets of + * catalog changes on the same day...) + */ + +/* yyyymmddN */ +#define CATALOG_VERSION_NO 202007201 + +#endif diff --git a/parser/include/catalog/dependency.h b/parser/include/catalog/dependency.h index c732f62e..7fe3fb7e 100644 --- a/parser/include/catalog/dependency.h +++ b/parser/include/catalog/dependency.h @@ -4,7 +4,7 @@ * Routines to support inter-object dependencies. * * - * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/catalog/dependency.h @@ -24,50 +24,8 @@ * * In all cases, a dependency relationship indicates that the referenced * object may not be dropped without also dropping the dependent object. - * However, there are several subflavors: - * - * DEPENDENCY_NORMAL ('n'): normal relationship between separately-created - * objects. The dependent object may be dropped without affecting the - * referenced object. The referenced object may only be dropped by - * specifying CASCADE, in which case the dependent object is dropped too. - * Example: a table column has a normal dependency on its datatype. - * - * DEPENDENCY_AUTO ('a'): the dependent object can be dropped separately - * from the referenced object, and should be automatically dropped - * (regardless of RESTRICT or CASCADE mode) if the referenced object - * is dropped. - * Example: a named constraint on a table is made auto-dependent on - * the table, so that it will go away if the table is dropped. - * - * DEPENDENCY_INTERNAL ('i'): the dependent object was created as part - * of creation of the referenced object, and is really just a part of - * its internal implementation. A DROP of the dependent object will be - * disallowed outright (we'll tell the user to issue a DROP against the - * referenced object, instead). A DROP of the referenced object will be - * propagated through to drop the dependent object whether CASCADE is - * specified or not. - * Example: a trigger that's created to enforce a foreign-key constraint - * is made internally dependent on the constraint's pg_constraint entry. - * - * DEPENDENCY_EXTENSION ('e'): the dependent object is a member of the - * extension that is the referenced object. The dependent object can be - * dropped only via DROP EXTENSION on the referenced object. Functionally - * this dependency type acts the same as an internal dependency, but it's - * kept separate for clarity and to simplify pg_dump. - * - * DEPENDENCY_AUTO_EXTENSION ('x'): the dependent object is not a member - * of the extension that is the referenced object (and so should not be - * ignored by pg_dump), but cannot function without the extension and - * should be dropped when the extension itself is. The dependent object - * may be dropped on its own as well. - * - * DEPENDENCY_PIN ('p'): there is no dependent object; this type of entry - * is a signal that the system itself depends on the referenced object, - * and so that object must never be deleted. Entries of this type are - * created only during initdb. The fields for the dependent object - * contain zeroes. - * - * Other dependency flavors may be needed in future. + * However, there are several subflavors; see the description of pg_depend + * in catalogs.sgml for details. */ typedef enum DependencyType @@ -75,6 +33,8 @@ typedef enum DependencyType DEPENDENCY_NORMAL = 'n', DEPENDENCY_AUTO = 'a', DEPENDENCY_INTERNAL = 'i', + DEPENDENCY_PARTITION_PRI = 'P', + DEPENDENCY_PARTITION_SEC = 'S', DEPENDENCY_EXTENSION = 'e', DEPENDENCY_AUTO_EXTENSION = 'x', DEPENDENCY_PIN = 'p' @@ -107,6 +67,12 @@ typedef enum DependencyType * a role mentioned in a policy object. The referenced object must be a * pg_authid entry. * + * (e) a SHARED_DEPENDENCY_TABLESPACE entry means that the referenced + * object is a tablespace mentioned in a relation without storage. The + * referenced object must be a pg_tablespace entry. (Relations that have + * storage don't need this: they are protected by the existence of a physical + * file in the tablespace.) + * * SHARED_DEPENDENCY_INVALID is a value used as a parameter in internal * routines, and is not valid in the catalog itself. */ @@ -116,6 +82,7 @@ typedef enum SharedDependencyType SHARED_DEPENDENCY_OWNER = 'o', SHARED_DEPENDENCY_ACL = 'a', SHARED_DEPENDENCY_POLICY = 'r', + SHARED_DEPENDENCY_TABLESPACE = 't', SHARED_DEPENDENCY_INVALID = 0 } SharedDependencyType; @@ -176,6 +143,8 @@ typedef enum ObjectClass #define PERFORM_DELETION_QUIETLY 0x0004 /* suppress notices */ #define PERFORM_DELETION_SKIP_ORIGINAL 0x0008 /* keep original obj */ #define PERFORM_DELETION_SKIP_EXTENSIONS 0x0010 /* keep extensions */ +#define PERFORM_DELETION_CONCURRENT_LOCK 0x0020 /* normal drop with + * concurrent lock mode */ /* in dependency.c */ @@ -185,93 +154,113 @@ extern void AcquireDeletionLock(const ObjectAddress *object, int flags); extern void ReleaseDeletionLock(const ObjectAddress *object); extern void performDeletion(const ObjectAddress *object, - DropBehavior behavior, int flags); + DropBehavior behavior, int flags); extern void performMultipleDeletions(const ObjectAddresses *objects, - DropBehavior behavior, int flags); + DropBehavior behavior, int flags); extern void recordDependencyOnExpr(const ObjectAddress *depender, - Node *expr, List *rtable, - DependencyType behavior); + Node *expr, List *rtable, + DependencyType behavior); extern void recordDependencyOnSingleRelExpr(const ObjectAddress *depender, - Node *expr, Oid relId, - DependencyType behavior, - DependencyType self_behavior, - bool reverse_self); + Node *expr, Oid relId, + DependencyType behavior, + DependencyType self_behavior, + bool reverse_self); extern ObjectClass getObjectClass(const ObjectAddress *object); extern ObjectAddresses *new_object_addresses(void); extern void add_exact_object_address(const ObjectAddress *object, - ObjectAddresses *addrs); + ObjectAddresses *addrs); extern bool object_address_present(const ObjectAddress *object, - const ObjectAddresses *addrs); + const ObjectAddresses *addrs); extern void record_object_address_dependencies(const ObjectAddress *depender, - ObjectAddresses *referenced, - DependencyType behavior); + ObjectAddresses *referenced, + DependencyType behavior); + +extern void sort_object_addresses(ObjectAddresses *addrs); extern void free_object_addresses(ObjectAddresses *addrs); /* in pg_depend.c */ extern void recordDependencyOn(const ObjectAddress *depender, - const ObjectAddress *referenced, - DependencyType behavior); + const ObjectAddress *referenced, + DependencyType behavior); extern void recordMultipleDependencies(const ObjectAddress *depender, - const ObjectAddress *referenced, - int nreferenced, - DependencyType behavior); + const ObjectAddress *referenced, + int nreferenced, + DependencyType behavior); extern void recordDependencyOnCurrentExtension(const ObjectAddress *object, - bool isReplace); + bool isReplace); extern long deleteDependencyRecordsFor(Oid classId, Oid objectId, - bool skipExtensionDeps); + bool skipExtensionDeps); extern long deleteDependencyRecordsForClass(Oid classId, Oid objectId, - Oid refclassId, char deptype); + Oid refclassId, char deptype); + +extern long deleteDependencyRecordsForSpecific(Oid classId, Oid objectId, + char deptype, + Oid refclassId, Oid refobjectId); extern long changeDependencyFor(Oid classId, Oid objectId, - Oid refClassId, Oid oldRefObjectId, - Oid newRefObjectId); + Oid refClassId, Oid oldRefObjectId, + Oid newRefObjectId); + +extern long changeDependenciesOf(Oid classId, Oid oldObjectId, + Oid newObjectId); + +extern long changeDependenciesOn(Oid refClassId, Oid oldRefObjectId, + Oid newRefObjectId); extern Oid getExtensionOfObject(Oid classId, Oid objectId); extern List *getAutoExtensionsOfObject(Oid classId, Oid objectId); extern bool sequenceIsOwned(Oid seqId, char deptype, Oid *tableId, int32 *colId); -extern List *getOwnedSequences(Oid relid, AttrNumber attnum); -extern Oid getOwnedSequence(Oid relid, AttrNumber attnum); +extern List *getOwnedSequences(Oid relid); +extern Oid getIdentitySequence(Oid relid, AttrNumber attnum, bool missing_ok); extern Oid get_constraint_index(Oid constraintId); extern Oid get_index_constraint(Oid indexId); +extern List *get_index_ref_constraints(Oid indexId); + /* in pg_shdepend.c */ extern void recordSharedDependencyOn(ObjectAddress *depender, - ObjectAddress *referenced, - SharedDependencyType deptype); + ObjectAddress *referenced, + SharedDependencyType deptype); extern void deleteSharedDependencyRecordsFor(Oid classId, Oid objectId, - int32 objectSubId); + int32 objectSubId); extern void recordDependencyOnOwner(Oid classId, Oid objectId, Oid owner); extern void changeDependencyOnOwner(Oid classId, Oid objectId, - Oid newOwnerId); + Oid newOwnerId); + +extern void recordDependencyOnTablespace(Oid classId, Oid objectId, + Oid tablespace); + +extern void changeDependencyOnTablespace(Oid classId, Oid objectId, + Oid newTablespaceId); extern void updateAclDependencies(Oid classId, Oid objectId, int32 objectSubId, - Oid ownerId, - int noldmembers, Oid *oldmembers, - int nnewmembers, Oid *newmembers); + Oid ownerId, + int noldmembers, Oid *oldmembers, + int nnewmembers, Oid *newmembers); extern bool checkSharedDependencies(Oid classId, Oid objectId, - char **detail_msg, char **detail_log_msg); + char **detail_msg, char **detail_log_msg); extern void shdepLockAndCheckObject(Oid classId, Oid objectId); diff --git a/parser/include/catalog/genbki.h b/parser/include/catalog/genbki.h index a2cb313d..4a6c8636 100644 --- a/parser/include/catalog/genbki.h +++ b/parser/include/catalog/genbki.h @@ -3,13 +3,13 @@ * genbki.h * Required include file for all POSTGRES catalog header files * - * genbki.h defines CATALOG(), DATA(), BKI_BOOTSTRAP and related macros + * genbki.h defines CATALOG(), BKI_BOOTSTRAP and related macros * so that the catalog header files can be read by the C compiler. * (These same words are recognized by genbki.pl to build the BKI * bootstrap file from these header files.) * * - * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/catalog/genbki.h @@ -20,20 +20,30 @@ #define GENBKI_H /* Introduces a catalog's structure definition */ -#define CATALOG(name,oid) typedef struct CppConcat(FormData_,name) +#define CATALOG(name,oid,oidmacro) typedef struct CppConcat(FormData_,name) /* Options that may appear after CATALOG (on the same line) */ #define BKI_BOOTSTRAP #define BKI_SHARED_RELATION -#define BKI_WITHOUT_OIDS -#define BKI_ROWTYPE_OID(oid) +#define BKI_ROWTYPE_OID(oid,oidmacro) #define BKI_SCHEMA_MACRO + +/* Options that may appear after an attribute (on the same line) */ #define BKI_FORCE_NULL #define BKI_FORCE_NOT_NULL +/* Specifies a default value for a catalog field */ +#define BKI_DEFAULT(value) +/* Specifies a default value for auto-generated array types */ +#define BKI_ARRAY_DEFAULT(value) +/* + * Indicates how to perform name lookups, typically for an OID or + * OID-array field + */ +#define BKI_LOOKUP(catalog) + +/* The following are never defined; they are here only for documentation. */ /* - * This is never defined; it's here only for documentation. - * * Variable-length catalog fields (except possibly the first not nullable one) * should not be visible in C structures, so they are made invisible by #ifdefs * of an undefined symbol. See also MARKNOTNULL in bootstrap.c for how this is @@ -41,10 +51,14 @@ */ #undef CATALOG_VARLEN -/* Declarations that provide the initial content of a catalog */ -/* In C, these need to expand into some harmless, repeatable declaration */ -#define DATA(x) extern int no_such_variable -#define DESCR(x) extern int no_such_variable -#define SHDESCR(x) extern int no_such_variable +/* + * There is code in some catalog headers that needs to be visible to clients, + * but we don't want clients to include the full header because of safety + * issues with other code in the header. To handle that, surround code that + * should be visible to clients with "#ifdef EXPOSE_TO_CLIENT_CODE". That + * instructs genbki.pl to copy the section when generating the corresponding + * "_d" header, which can be included by both client and backend code. + */ +#undef EXPOSE_TO_CLIENT_CODE #endif /* GENBKI_H */ diff --git a/parser/include/catalog/index.h b/parser/include/catalog/index.h index 7a7ad3e3..f58e8675 100644 --- a/parser/include/catalog/index.h +++ b/parser/include/catalog/index.h @@ -4,7 +4,7 @@ * prototypes for catalog/index.c. * * - * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/catalog/index.h @@ -20,14 +20,6 @@ #define DEFAULT_INDEX_TYPE "btree" -/* Typedef for callback function for IndexBuildHeapScan */ -typedef void (*IndexBuildCallback) (Relation index, - HeapTuple htup, - Datum *values, - bool *isnull, - bool tupleIsAlive, - void *state); - /* Action code for index_set_state_flags */ typedef enum { @@ -37,82 +29,103 @@ typedef enum INDEX_DROP_SET_DEAD } IndexStateFlagsAction; +/* state info for validate_index bulkdelete callback */ +typedef struct ValidateIndexState +{ + Tuplesortstate *tuplesort; /* for sorting the index TIDs */ + /* statistics (for debug purposes only): */ + double htups, + itups, + tups_inserted; +} ValidateIndexState; extern void index_check_primary_key(Relation heapRel, - IndexInfo *indexInfo, - bool is_alter_table, - IndexStmt *stmt); - -extern Oid index_create(Relation heapRelation, - const char *indexRelationName, - Oid indexRelationId, - Oid relFileNode, - IndexInfo *indexInfo, - List *indexColNames, - Oid accessMethodObjectId, - Oid tableSpaceId, - Oid *collationObjectId, - Oid *classObjectId, - int16 *coloptions, - Datum reloptions, - bool isprimary, - bool isconstraint, - bool deferrable, - bool initdeferred, - bool allow_system_table_mods, - bool skip_build, - bool concurrent, - bool is_internal, - bool if_not_exists); + IndexInfo *indexInfo, + bool is_alter_table, + IndexStmt *stmt); + +#define INDEX_CREATE_IS_PRIMARY (1 << 0) +#define INDEX_CREATE_ADD_CONSTRAINT (1 << 1) +#define INDEX_CREATE_SKIP_BUILD (1 << 2) +#define INDEX_CREATE_CONCURRENT (1 << 3) +#define INDEX_CREATE_IF_NOT_EXISTS (1 << 4) +#define INDEX_CREATE_PARTITIONED (1 << 5) +#define INDEX_CREATE_INVALID (1 << 6) + +extern Oid index_create(Relation heapRelation, + const char *indexRelationName, + Oid indexRelationId, + Oid parentIndexRelid, + Oid parentConstraintId, + Oid relFileNode, + IndexInfo *indexInfo, + List *indexColNames, + Oid accessMethodObjectId, + Oid tableSpaceId, + Oid *collationObjectId, + Oid *classObjectId, + int16 *coloptions, + Datum reloptions, + bits16 flags, + bits16 constr_flags, + bool allow_system_table_mods, + bool is_internal, + Oid *constraintId); + +#define INDEX_CONSTR_CREATE_MARK_AS_PRIMARY (1 << 0) +#define INDEX_CONSTR_CREATE_DEFERRABLE (1 << 1) +#define INDEX_CONSTR_CREATE_INIT_DEFERRED (1 << 2) +#define INDEX_CONSTR_CREATE_UPDATE_INDEX (1 << 3) +#define INDEX_CONSTR_CREATE_REMOVE_OLD_DEPS (1 << 4) + +extern Oid index_concurrently_create_copy(Relation heapRelation, + Oid oldIndexId, + const char *newName); + +extern void index_concurrently_build(Oid heapRelationId, + Oid indexRelationId); + +extern void index_concurrently_swap(Oid newIndexId, + Oid oldIndexId, + const char *oldName); + +extern void index_concurrently_set_dead(Oid heapId, + Oid indexId); extern ObjectAddress index_constraint_create(Relation heapRelation, - Oid indexRelationId, - IndexInfo *indexInfo, - const char *constraintName, - char constraintType, - bool deferrable, - bool initdeferred, - bool mark_as_primary, - bool update_pgindex, - bool remove_old_dependencies, - bool allow_system_table_mods, - bool is_internal); - -extern void index_drop(Oid indexId, bool concurrent); + Oid indexRelationId, + Oid parentConstraintId, + IndexInfo *indexInfo, + const char *constraintName, + char constraintType, + bits16 constr_flags, + bool allow_system_table_mods, + bool is_internal); + +extern void index_drop(Oid indexId, bool concurrent, bool concurrent_lock_mode); extern IndexInfo *BuildIndexInfo(Relation index); extern IndexInfo *BuildDummyIndexInfo(Relation index); +extern bool CompareIndexInfo(IndexInfo *info1, IndexInfo *info2, + Oid *collations1, Oid *collations2, + Oid *opfamilies1, Oid *opfamilies2, + AttrMap *attmap); + extern void BuildSpeculativeIndexInfo(Relation index, IndexInfo *ii); extern void FormIndexDatum(IndexInfo *indexInfo, - TupleTableSlot *slot, - EState *estate, - Datum *values, - bool *isnull); + TupleTableSlot *slot, + EState *estate, + Datum *values, + bool *isnull); extern void index_build(Relation heapRelation, - Relation indexRelation, - IndexInfo *indexInfo, - bool isprimary, - bool isreindex); - -extern double IndexBuildHeapScan(Relation heapRelation, - Relation indexRelation, - IndexInfo *indexInfo, - bool allow_sync, - IndexBuildCallback callback, - void *callback_state); -extern double IndexBuildHeapRangeScan(Relation heapRelation, Relation indexRelation, IndexInfo *indexInfo, - bool allow_sync, - bool anyvisible, - BlockNumber start_blockno, - BlockNumber end_blockno, - IndexBuildCallback callback, - void *callback_state); + bool isreindex, + bool parallel); extern void validate_index(Oid heapId, Oid indexId, Snapshot snapshot); @@ -121,7 +134,7 @@ extern void index_set_state_flags(Oid indexId, IndexStateFlagsAction action); extern Oid IndexGetRelation(Oid indexId, bool missing_ok); extern void reindex_index(Oid indexId, bool skip_constraint_checks, - char relpersistence, int options); + char relpersistence, int options); /* Flag bits for reindex_relation(): */ #define REINDEX_REL_PROCESS_TOAST 0x01 @@ -136,5 +149,51 @@ extern bool ReindexIsProcessingHeap(Oid heapOid); extern bool ReindexIsProcessingIndex(Oid indexOid); extern void ResetReindexState(int nestLevel); +extern Size EstimateReindexStateSpace(void); +extern void SerializeReindexState(Size maxsize, char *start_address); +extern void RestoreReindexState(void *reindexstate); + +extern void IndexSetParentIndex(Relation idx, Oid parentOid); + + +/* + * itemptr_encode - Encode ItemPointer as int64/int8 + * + * This representation must produce values encoded as int64 that sort in the + * same order as their corresponding original TID values would (using the + * default int8 opclass to produce a result equivalent to the default TID + * opclass). + * + * As noted in validate_index(), this can be significantly faster. + */ +static inline int64 +itemptr_encode(ItemPointer itemptr) +{ + BlockNumber block = ItemPointerGetBlockNumber(itemptr); + OffsetNumber offset = ItemPointerGetOffsetNumber(itemptr); + int64 encoded; + + /* + * Use the 16 least significant bits for the offset. 32 adjacent bits are + * used for the block number. Since remaining bits are unused, there + * cannot be negative encoded values (We assume a two's complement + * representation). + */ + encoded = ((uint64) block << 16) | (uint16) offset; + + return encoded; +} + +/* + * itemptr_decode - Decode int64/int8 representation back to ItemPointer + */ +static inline void +itemptr_decode(ItemPointer itemptr, int64 encoded) +{ + BlockNumber block = (BlockNumber) (encoded >> 16); + OffsetNumber offset = (OffsetNumber) (encoded & 0xFFFF); + + ItemPointerSet(itemptr, block, offset); +} #endif /* INDEX_H */ diff --git a/parser/include/catalog/indexing.h b/parser/include/catalog/indexing.h index ef849367..8be30387 100644 --- a/parser/include/catalog/indexing.h +++ b/parser/include/catalog/indexing.h @@ -4,8 +4,11 @@ * This file provides some definitions to support indexing * on system catalogs * + * Caution: all #define's with numeric values in this file had better be + * object OIDs, else renumber_oids.pl might change them inappropriately. * - * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group + * + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/catalog/indexing.h @@ -30,24 +33,23 @@ typedef struct ResultRelInfo *CatalogIndexState; */ extern CatalogIndexState CatalogOpenIndexes(Relation heapRel); extern void CatalogCloseIndexes(CatalogIndexState indstate); -extern Oid CatalogTupleInsert(Relation heapRel, HeapTuple tup); -extern Oid CatalogTupleInsertWithInfo(Relation heapRel, HeapTuple tup, - CatalogIndexState indstate); +extern void CatalogTupleInsert(Relation heapRel, HeapTuple tup); +extern void CatalogTupleInsertWithInfo(Relation heapRel, HeapTuple tup, + CatalogIndexState indstate); extern void CatalogTupleUpdate(Relation heapRel, ItemPointer otid, - HeapTuple tup); + HeapTuple tup); extern void CatalogTupleUpdateWithInfo(Relation heapRel, - ItemPointer otid, HeapTuple tup, - CatalogIndexState indstate); + ItemPointer otid, HeapTuple tup, + CatalogIndexState indstate); extern void CatalogTupleDelete(Relation heapRel, ItemPointer tid); /* * These macros are just to keep the C compiler from spitting up on the - * upcoming commands for genbki.pl. + * upcoming commands for Catalog.pm. */ #define DECLARE_INDEX(name,oid,decl) extern int no_such_variable #define DECLARE_UNIQUE_INDEX(name,oid,decl) extern int no_such_variable -#define BUILD_INDICES /* @@ -122,12 +124,14 @@ DECLARE_UNIQUE_INDEX(pg_collation_oid_index, 3085, on pg_collation using btree(o DECLARE_INDEX(pg_constraint_conname_nsp_index, 2664, on pg_constraint using btree(conname name_ops, connamespace oid_ops)); #define ConstraintNameNspIndexId 2664 -DECLARE_INDEX(pg_constraint_conrelid_index, 2665, on pg_constraint using btree(conrelid oid_ops)); -#define ConstraintRelidIndexId 2665 +DECLARE_UNIQUE_INDEX(pg_constraint_conrelid_contypid_conname_index, 2665, on pg_constraint using btree(conrelid oid_ops, contypid oid_ops, conname name_ops)); +#define ConstraintRelidTypidNameIndexId 2665 DECLARE_INDEX(pg_constraint_contypid_index, 2666, on pg_constraint using btree(contypid oid_ops)); #define ConstraintTypidIndexId 2666 DECLARE_UNIQUE_INDEX(pg_constraint_oid_index, 2667, on pg_constraint using btree(oid oid_ops)); #define ConstraintOidIndexId 2667 +DECLARE_INDEX(pg_constraint_conparentid_index, 2579, on pg_constraint using btree(conparentid oid_ops)); +#define ConstraintParentIndexId 2579 DECLARE_UNIQUE_INDEX(pg_conversion_default_index, 2668, on pg_conversion using btree(connamespace oid_ops, conforencoding int4_ops, contoencoding int4_ops, oid oid_ops)); #define ConversionDefaultIndexId 2668 @@ -182,13 +186,6 @@ DECLARE_UNIQUE_INDEX(pg_largeobject_loid_pn_index, 2683, on pg_largeobject using DECLARE_UNIQUE_INDEX(pg_largeobject_metadata_oid_index, 2996, on pg_largeobject_metadata using btree(oid oid_ops)); #define LargeObjectMetadataOidIndexId 2996 -DECLARE_UNIQUE_INDEX(pg_statistic_ext_oid_index, 3380, on pg_statistic_ext using btree(oid oid_ops)); -#define StatisticExtOidIndexId 3380 -DECLARE_UNIQUE_INDEX(pg_statistic_ext_name_index, 3997, on pg_statistic_ext using btree(stxname name_ops, stxnamespace oid_ops)); -#define StatisticExtNameIndexId 3997 -DECLARE_INDEX(pg_statistic_ext_relid_index, 3379, on pg_statistic_ext using btree(stxrelid oid_ops)); -#define StatisticExtRelidIndexId 3379 - DECLARE_UNIQUE_INDEX(pg_namespace_nspname_index, 2684, on pg_namespace using btree(nspname name_ops)); #define NamespaceNameIndexId 2684 DECLARE_UNIQUE_INDEX(pg_namespace_oid_index, 2685, on pg_namespace using btree(oid oid_ops)); @@ -209,9 +206,6 @@ DECLARE_UNIQUE_INDEX(pg_opfamily_am_name_nsp_index, 2754, on pg_opfamily using b DECLARE_UNIQUE_INDEX(pg_opfamily_oid_index, 2755, on pg_opfamily using btree(oid oid_ops)); #define OpfamilyOidIndexId 2755 -DECLARE_UNIQUE_INDEX(pg_pltemplate_name_index, 1137, on pg_pltemplate using btree(tmplname name_ops)); -#define PLTemplateNameIndexId 1137 - DECLARE_UNIQUE_INDEX(pg_proc_oid_index, 2690, on pg_proc using btree(oid oid_ops)); #define ProcedureOidIndexId 2690 DECLARE_UNIQUE_INDEX(pg_proc_proname_args_nsp_index, 2691, on pg_proc using btree(proname name_ops, proargtypes oidvector_ops, pronamespace oid_ops)); @@ -233,6 +227,16 @@ DECLARE_INDEX(pg_shdepend_reference_index, 1233, on pg_shdepend using btree(refc DECLARE_UNIQUE_INDEX(pg_statistic_relid_att_inh_index, 2696, on pg_statistic using btree(starelid oid_ops, staattnum int2_ops, stainherit bool_ops)); #define StatisticRelidAttnumInhIndexId 2696 +DECLARE_UNIQUE_INDEX(pg_statistic_ext_oid_index, 3380, on pg_statistic_ext using btree(oid oid_ops)); +#define StatisticExtOidIndexId 3380 +DECLARE_UNIQUE_INDEX(pg_statistic_ext_name_index, 3997, on pg_statistic_ext using btree(stxname name_ops, stxnamespace oid_ops)); +#define StatisticExtNameIndexId 3997 +DECLARE_INDEX(pg_statistic_ext_relid_index, 3379, on pg_statistic_ext using btree(stxrelid oid_ops)); +#define StatisticExtRelidIndexId 3379 + +DECLARE_UNIQUE_INDEX(pg_statistic_ext_data_stxoid_index, 3433, on pg_statistic_ext_data using btree(stxoid oid_ops)); +#define StatisticExtDataStxoidIndexId 3433 + DECLARE_UNIQUE_INDEX(pg_tablespace_oid_index, 2697, on pg_tablespace using btree(oid oid_ops)); #define TablespaceOidIndexId 2697 DECLARE_UNIQUE_INDEX(pg_tablespace_spcname_index, 2698, on pg_tablespace using btree(spcname name_ops)); @@ -309,10 +313,10 @@ DECLARE_UNIQUE_INDEX(pg_default_acl_oid_index, 828, on pg_default_acl using btre DECLARE_UNIQUE_INDEX(pg_db_role_setting_databaseid_rol_index, 2965, on pg_db_role_setting using btree(setdatabase oid_ops, setrole oid_ops)); #define DbRoleSettingDatidRolidIndexId 2965 -DECLARE_UNIQUE_INDEX(pg_seclabel_object_index, 3597, on pg_seclabel using btree(objoid oid_ops, classoid oid_ops, objsubid int4_ops, provider text_pattern_ops)); +DECLARE_UNIQUE_INDEX(pg_seclabel_object_index, 3597, on pg_seclabel using btree(objoid oid_ops, classoid oid_ops, objsubid int4_ops, provider text_ops)); #define SecLabelObjectIndexId 3597 -DECLARE_UNIQUE_INDEX(pg_shseclabel_object_index, 3593, on pg_shseclabel using btree(objoid oid_ops, classoid oid_ops, provider text_pattern_ops)); +DECLARE_UNIQUE_INDEX(pg_shseclabel_object_index, 3593, on pg_shseclabel using btree(objoid oid_ops, classoid oid_ops, provider text_ops)); #define SharedSecLabelObjectIndexId 3593 DECLARE_UNIQUE_INDEX(pg_extension_oid_index, 3080, on pg_extension using btree(oid oid_ops)); @@ -332,7 +336,7 @@ DECLARE_UNIQUE_INDEX(pg_policy_polrelid_polname_index, 3258, on pg_policy using DECLARE_UNIQUE_INDEX(pg_replication_origin_roiident_index, 6001, on pg_replication_origin using btree(roident oid_ops)); #define ReplicationOriginIdentIndex 6001 -DECLARE_UNIQUE_INDEX(pg_replication_origin_roname_index, 6002, on pg_replication_origin using btree(roname text_pattern_ops)); +DECLARE_UNIQUE_INDEX(pg_replication_origin_roname_index, 6002, on pg_replication_origin using btree(roname text_ops)); #define ReplicationOriginNameIndex 6002 DECLARE_UNIQUE_INDEX(pg_partitioned_table_partrelid_index, 3351, on pg_partitioned_table using btree(partrelid oid_ops)); @@ -359,7 +363,4 @@ DECLARE_UNIQUE_INDEX(pg_subscription_subname_index, 6115, on pg_subscription usi DECLARE_UNIQUE_INDEX(pg_subscription_rel_srrelid_srsubid_index, 6117, on pg_subscription_rel using btree(srrelid oid_ops, srsubid oid_ops)); #define SubscriptionRelSrrelidSrsubidIndexId 6117 -/* last step of initialization script: build the indexes declared above */ -BUILD_INDICES - #endif /* INDEXING_H */ diff --git a/parser/include/catalog/namespace.h b/parser/include/catalog/namespace.h index 59c5ea5b..2456c08b 100644 --- a/parser/include/catalog/namespace.h +++ b/parser/include/catalog/namespace.h @@ -4,7 +4,7 @@ * prototypes for functions in backend/catalog/namespace.c * * - * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/catalog/namespace.h @@ -37,30 +37,56 @@ typedef struct _FuncCandidateList Oid args[FLEXIBLE_ARRAY_MEMBER]; /* arg types */ } *FuncCandidateList; +/* + * Result of checkTempNamespaceStatus + */ +typedef enum TempNamespaceStatus +{ + TEMP_NAMESPACE_NOT_TEMP, /* nonexistent, or non-temp namespace */ + TEMP_NAMESPACE_IDLE, /* exists, belongs to no active session */ + TEMP_NAMESPACE_IN_USE /* belongs to some active session */ +} TempNamespaceStatus; + /* * Structure for xxxOverrideSearchPath functions + * + * The generation counter is private to namespace.c and shouldn't be touched + * by other code. It can be initialized to zero if necessary (that means + * "not known equal to the current active path"). */ typedef struct OverrideSearchPath { List *schemas; /* OIDs of explicitly named schemas */ bool addCatalog; /* implicitly prepend pg_catalog? */ bool addTemp; /* implicitly prepend temp schema? */ + uint64 generation; /* for quick detection of equality to active */ } OverrideSearchPath; +/* + * Option flag bits for RangeVarGetRelidExtended(). + */ +typedef enum RVROption +{ + RVR_MISSING_OK = 1 << 0, /* don't error if relation doesn't exist */ + RVR_NOWAIT = 1 << 1, /* error if relation cannot be locked */ + RVR_SKIP_LOCKED = 1 << 2 /* skip if relation cannot be locked */ +} RVROption; + typedef void (*RangeVarGetRelidCallback) (const RangeVar *relation, Oid relId, Oid oldRelId, void *callback_arg); #define RangeVarGetRelid(relation, lockmode, missing_ok) \ - RangeVarGetRelidExtended(relation, lockmode, missing_ok, false, NULL, NULL) + RangeVarGetRelidExtended(relation, lockmode, \ + (missing_ok) ? RVR_MISSING_OK : 0, NULL, NULL) -extern Oid RangeVarGetRelidExtended(const RangeVar *relation, - LOCKMODE lockmode, bool missing_ok, bool nowait, - RangeVarGetRelidCallback callback, - void *callback_arg); +extern Oid RangeVarGetRelidExtended(const RangeVar *relation, + LOCKMODE lockmode, uint32 flags, + RangeVarGetRelidCallback callback, + void *callback_arg); extern Oid RangeVarGetCreationNamespace(const RangeVar *newRelation); -extern Oid RangeVarGetAndCheckCreationNamespace(RangeVar *newRelation, - LOCKMODE lockmode, - Oid *existing_relation_id); +extern Oid RangeVarGetAndCheckCreationNamespace(RangeVar *newRelation, + LOCKMODE lockmode, + Oid *existing_relation_id); extern void RangeVarAdjustRelationPersistence(RangeVar *newRelation, Oid nspid); extern Oid RelnameGetRelid(const char *relname); extern bool RelationIsVisible(Oid relid); @@ -70,15 +96,15 @@ extern Oid TypenameGetTypidExtended(const char *typname, bool temp_ok); extern bool TypeIsVisible(Oid typid); extern FuncCandidateList FuncnameGetCandidates(List *names, - int nargs, List *argnames, - bool expand_variadic, - bool expand_defaults, - bool missing_ok); + int nargs, List *argnames, + bool expand_variadic, + bool expand_defaults, + bool missing_ok); extern bool FunctionIsVisible(Oid funcid); extern Oid OpernameGetOprid(List *names, Oid oprleft, Oid oprright); extern FuncCandidateList OpernameGetCandidates(List *names, char oprkind, - bool missing_schema_ok); + bool missing_schema_ok); extern bool OperatorIsVisible(Oid oprid); extern Oid OpclassnameGetOpcid(Oid amid, const char *opcname); @@ -94,7 +120,7 @@ extern Oid ConversionGetConid(const char *conname); extern bool ConversionIsVisible(Oid conid); extern Oid get_statistics_object_oid(List *names, bool missing_ok); -extern bool StatisticsObjIsVisible(Oid stxid); +extern bool StatisticsObjIsVisible(Oid relid); extern Oid get_ts_parser_oid(List *names, bool missing_ok); extern bool TSParserIsVisible(Oid prsId); @@ -109,8 +135,8 @@ extern Oid get_ts_config_oid(List *names, bool missing_ok); extern bool TSConfigIsVisible(Oid cfgid); extern void DeconstructQualifiedName(List *names, - char **nspname_p, - char **objname_p); + char **nspname_p, + char **objname_p); extern Oid LookupNamespaceNoError(const char *nspname); extern Oid LookupExplicitNamespace(const char *nspname, bool missing_ok); extern Oid get_namespace_oid(const char *nspname, bool missing_ok); @@ -127,12 +153,13 @@ extern bool isTempToastNamespace(Oid namespaceId); extern bool isTempOrTempToastNamespace(Oid namespaceId); extern bool isAnyTempNamespace(Oid namespaceId); extern bool isOtherTempNamespace(Oid namespaceId); +extern TempNamespaceStatus checkTempNamespaceStatus(Oid namespaceId); extern int GetTempNamespaceBackendId(Oid namespaceId); extern Oid GetTempToastNamespace(void); extern void GetTempNamespaceState(Oid *tempNamespaceId, - Oid *tempToastNamespaceId); + Oid *tempToastNamespaceId); extern void SetTempNamespaceState(Oid tempNamespaceId, - Oid tempToastNamespaceId); + Oid tempToastNamespaceId); extern void ResetTempTableNamespace(void); extern OverrideSearchPath *GetOverrideSearchPath(MemoryContext context); @@ -150,7 +177,7 @@ extern Oid FindDefaultConversionProc(int32 for_encoding, int32 to_encoding); extern void InitializeSearchPath(void); extern void AtEOXact_Namespace(bool isCommit, bool parallel); extern void AtEOSubXact_Namespace(bool isCommit, SubTransactionId mySubid, - SubTransactionId parentSubid); + SubTransactionId parentSubid); /* stuff for search_path GUC variable */ extern char *namespace_search_path; diff --git a/parser/include/catalog/objectaccess.h b/parser/include/catalog/objectaccess.h index 251eb6fd..fef38369 100644 --- a/parser/include/catalog/objectaccess.h +++ b/parser/include/catalog/objectaccess.h @@ -3,7 +3,7 @@ * * Object access hooks. * - * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California */ @@ -37,6 +37,10 @@ * creation or altering, because OAT_POST_CREATE or OAT_POST_ALTER are * sufficient for extensions to track these kind of checks. * + * OAT_TRUNCATE should be invoked just before truncation of objects. This + * event is equivalent to truncate permission on a relation under the + * default access control mechanism. + * * Other types may be added in the future. */ typedef enum ObjectAccessType @@ -45,7 +49,8 @@ typedef enum ObjectAccessType OAT_DROP, OAT_POST_ALTER, OAT_NAMESPACE_SEARCH, - OAT_FUNCTION_EXECUTE + OAT_FUNCTION_EXECUTE, + OAT_TRUNCATE } ObjectAccessType; /* @@ -128,12 +133,13 @@ extern PGDLLIMPORT object_access_hook_type object_access_hook; /* Core code uses these functions to call the hook (see macros below). */ extern void RunObjectPostCreateHook(Oid classId, Oid objectId, int subId, - bool is_internal); + bool is_internal); extern void RunObjectDropHook(Oid classId, Oid objectId, int subId, - int dropflags); + int dropflags); +extern void RunObjectTruncateHook(Oid objectId); extern void RunObjectPostAlterHook(Oid classId, Oid objectId, int subId, - Oid auxiliaryId, bool is_internal); -extern bool RunNamespaceSearchHook(Oid objectId, bool ereport_on_volation); + Oid auxiliaryId, bool is_internal); +extern bool RunNamespaceSearchHook(Oid objectId, bool ereport_on_violation); extern void RunFunctionExecuteHook(Oid objectId); /* @@ -160,6 +166,12 @@ extern void RunFunctionExecuteHook(Oid objectId); (dropflags)); \ } while(0) +#define InvokeObjectTruncateHook(objectId) \ + do { \ + if (object_access_hook) \ + RunObjectTruncateHook(objectId); \ + } while(0) + #define InvokeObjectPostAlterHook(classId,objectId,subId) \ InvokeObjectPostAlterHookArg((classId),(objectId),(subId), \ InvalidOid,false) diff --git a/parser/include/catalog/objectaddress.h b/parser/include/catalog/objectaddress.h index 5fc54d0e..7f15efd5 100644 --- a/parser/include/catalog/objectaddress.h +++ b/parser/include/catalog/objectaddress.h @@ -3,7 +3,7 @@ * objectaddress.h * functions for working with object addresses * - * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/catalog/objectaddress.h @@ -13,9 +13,9 @@ #ifndef OBJECTADDRESS_H #define OBJECTADDRESS_H -#include "nodes/pg_list.h" +#include "access/htup.h" +#include "nodes/parsenodes.h" #include "storage/lockdefs.h" -#include "utils/acl.h" #include "utils/relcache.h" /* @@ -41,16 +41,16 @@ extern const ObjectAddress InvalidObjectAddress; ObjectAddressSubSet(addr, class_id, object_id, 0) extern ObjectAddress get_object_address(ObjectType objtype, Node *object, - Relation *relp, - LOCKMODE lockmode, bool missing_ok); + Relation *relp, + LOCKMODE lockmode, bool missing_ok); extern ObjectAddress get_object_address_rv(ObjectType objtype, RangeVar *rel, - List *object, Relation *relp, - LOCKMODE lockmode, bool missing_ok); + List *object, Relation *relp, + LOCKMODE lockmode, bool missing_ok); extern void check_object_ownership(Oid roleid, - ObjectType objtype, ObjectAddress address, - Node *object, Relation relation); + ObjectType objtype, ObjectAddress address, + Node *object, Relation relation); extern Oid get_object_namespace(const ObjectAddress *address); @@ -58,15 +58,16 @@ extern bool is_objectclass_supported(Oid class_id); extern Oid get_object_oid_index(Oid class_id); extern int get_object_catcache_oid(Oid class_id); extern int get_object_catcache_name(Oid class_id); +extern AttrNumber get_object_attnum_oid(Oid class_id); extern AttrNumber get_object_attnum_name(Oid class_id); extern AttrNumber get_object_attnum_namespace(Oid class_id); extern AttrNumber get_object_attnum_owner(Oid class_id); extern AttrNumber get_object_attnum_acl(Oid class_id); -extern AclObjectKind get_object_aclkind(Oid class_id); +extern ObjectType get_object_type(Oid class_id, Oid object_id); extern bool get_object_namensp_unique(Oid class_id); extern HeapTuple get_catalog_object_by_oid(Relation catalog, - Oid objectId); + AttrNumber oidcol, Oid objectId); extern char *getObjectDescription(const ObjectAddress *object); extern char *getObjectDescriptionOids(Oid classid, Oid objid); @@ -75,7 +76,9 @@ extern int read_objtype_from_string(const char *objtype); extern char *getObjectTypeDescription(const ObjectAddress *object); extern char *getObjectIdentity(const ObjectAddress *address); extern char *getObjectIdentityParts(const ObjectAddress *address, - List **objname, List **objargs); -extern ArrayType *strlist_to_textarray(List *list); + List **objname, List **objargs); +extern struct ArrayType *strlist_to_textarray(List *list); + +extern ObjectType get_relkind_objtype(char relkind); #endif /* OBJECTADDRESS_H */ diff --git a/parser/include/catalog/partition.h b/parser/include/catalog/partition.h deleted file mode 100644 index 7e415fe8..00000000 --- a/parser/include/catalog/partition.h +++ /dev/null @@ -1,101 +0,0 @@ -/*------------------------------------------------------------------------- - * - * partition.h - * Header file for structures and utility functions related to - * partitioning - * - * Copyright (c) 2007-2017, PostgreSQL Global Development Group - * - * src/include/catalog/partition.h - * - *------------------------------------------------------------------------- - */ -#ifndef PARTITION_H -#define PARTITION_H - -#include "fmgr.h" -#include "executor/tuptable.h" -#include "nodes/execnodes.h" -#include "parser/parse_node.h" -#include "utils/rel.h" - -/* - * PartitionBoundInfo encapsulates a set of partition bounds. It is usually - * associated with partitioned tables as part of its partition descriptor. - * - * The internal structure is opaque outside partition.c. - */ -typedef struct PartitionBoundInfoData *PartitionBoundInfo; - -/* - * Information about partitions of a partitioned table. - */ -typedef struct PartitionDescData -{ - int nparts; /* Number of partitions */ - Oid *oids; /* OIDs of partitions */ - PartitionBoundInfo boundinfo; /* collection of partition bounds */ -} PartitionDescData; - -typedef struct PartitionDescData *PartitionDesc; - -/*----------------------- - * PartitionDispatch - information about one partitioned table in a partition - * hierarchy required to route a tuple to one of its partitions - * - * reldesc Relation descriptor of the table - * key Partition key information of the table - * keystate Execution state required for expressions in the partition key - * partdesc Partition descriptor of the table - * tupslot A standalone TupleTableSlot initialized with this table's tuple - * descriptor - * tupmap TupleConversionMap to convert from the parent's rowtype to - * this table's rowtype (when extracting the partition key of a - * tuple just before routing it through this table) - * indexes Array with partdesc->nparts members (for details on what - * individual members represent, see how they are set in - * RelationGetPartitionDispatchInfo()) - *----------------------- - */ -typedef struct PartitionDispatchData -{ - Relation reldesc; - PartitionKey key; - List *keystate; /* list of ExprState */ - PartitionDesc partdesc; - TupleTableSlot *tupslot; - TupleConversionMap *tupmap; - int *indexes; -} PartitionDispatchData; - -typedef struct PartitionDispatchData *PartitionDispatch; - -extern void RelationBuildPartitionDesc(Relation relation); -extern bool partition_bounds_equal(PartitionKey key, - PartitionBoundInfo p1, PartitionBoundInfo p2); - -extern void check_new_partition_bound(char *relname, Relation parent, - PartitionBoundSpec *spec); -extern Oid get_partition_parent(Oid relid); -extern List *get_qual_from_partbound(Relation rel, Relation parent, - PartitionBoundSpec *spec); -extern List *map_partition_varattnos(List *expr, int target_varno, - Relation partrel, Relation parent, - bool *found_whole_row); -extern List *RelationGetPartitionQual(Relation rel); -extern Expr *get_partition_qual_relid(Oid relid); - -/* For tuple routing */ -extern PartitionDispatch *RelationGetPartitionDispatchInfo(Relation rel, - int *num_parted, List **leaf_part_oids); -extern void FormPartitionKeyDatum(PartitionDispatch pd, - TupleTableSlot *slot, - EState *estate, - Datum *values, - bool *isnull); -extern int get_partition_for_tuple(PartitionDispatch *pd, - TupleTableSlot *slot, - EState *estate, - PartitionDispatchData **failed_at, - TupleTableSlot **failed_slot); -#endif /* PARTITION_H */ diff --git a/parser/include/catalog/pg_aggregate.h b/parser/include/catalog/pg_aggregate.h index 4d5b9bb9..457ca184 100644 --- a/parser/include/catalog/pg_aggregate.h +++ b/parser/include/catalog/pg_aggregate.h @@ -1,18 +1,17 @@ /*------------------------------------------------------------------------- * * pg_aggregate.h - * definition of the system "aggregate" relation (pg_aggregate) - * along with the relation's initial contents. + * definition of the "aggregate" system catalog (pg_aggregate) * * - * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/catalog/pg_aggregate.h * * NOTES - * the genbki.pl script reads this file and generates .bki - * information from the DATA() statements. + * The Catalog.pm module reads this file and derives schema + * information. * *------------------------------------------------------------------------- */ @@ -20,62 +19,85 @@ #define PG_AGGREGATE_H #include "catalog/genbki.h" +#include "catalog/pg_aggregate_d.h" + #include "catalog/objectaddress.h" #include "nodes/pg_list.h" /* ---------------------------------------------------------------- * pg_aggregate definition. - * * cpp turns this into typedef struct FormData_pg_aggregate - * - * aggfnoid pg_proc OID of the aggregate itself - * aggkind aggregate kind, see AGGKIND_ categories below - * aggnumdirectargs number of arguments that are "direct" arguments - * aggtransfn transition function - * aggfinalfn final function (0 if none) - * aggcombinefn combine function (0 if none) - * aggserialfn function to convert transtype to bytea (0 if none) - * aggdeserialfn function to convert bytea to transtype (0 if none) - * aggmtransfn forward function for moving-aggregate mode (0 if none) - * aggminvtransfn inverse function for moving-aggregate mode (0 if none) - * aggmfinalfn final function for moving-aggregate mode (0 if none) - * aggfinalextra true to pass extra dummy arguments to aggfinalfn - * aggmfinalextra true to pass extra dummy arguments to aggmfinalfn - * aggsortop associated sort operator (0 if none) - * aggtranstype type of aggregate's transition (state) data - * aggtransspace estimated size of state data (0 for default estimate) - * aggmtranstype type of moving-aggregate state data (0 if none) - * aggmtransspace estimated size of moving-agg state (0 for default est) - * agginitval initial value for transition state (can be NULL) - * aggminitval initial value for moving-agg state (can be NULL) * ---------------------------------------------------------------- */ -#define AggregateRelationId 2600 - -CATALOG(pg_aggregate,2600) BKI_WITHOUT_OIDS +CATALOG(pg_aggregate,2600,AggregateRelationId) { - regproc aggfnoid; - char aggkind; - int16 aggnumdirectargs; - regproc aggtransfn; - regproc aggfinalfn; - regproc aggcombinefn; - regproc aggserialfn; - regproc aggdeserialfn; - regproc aggmtransfn; - regproc aggminvtransfn; - regproc aggmfinalfn; - bool aggfinalextra; - bool aggmfinalextra; - Oid aggsortop; - Oid aggtranstype; - int32 aggtransspace; - Oid aggmtranstype; - int32 aggmtransspace; + /* pg_proc OID of the aggregate itself */ + regproc aggfnoid BKI_LOOKUP(pg_proc); + + /* aggregate kind, see AGGKIND_ categories below */ + char aggkind BKI_DEFAULT(n); + + /* number of arguments that are "direct" arguments */ + int16 aggnumdirectargs BKI_DEFAULT(0); + + /* transition function */ + regproc aggtransfn BKI_LOOKUP(pg_proc); + + /* final function (0 if none) */ + regproc aggfinalfn BKI_DEFAULT(-) BKI_LOOKUP(pg_proc); + + /* combine function (0 if none) */ + regproc aggcombinefn BKI_DEFAULT(-) BKI_LOOKUP(pg_proc); + + /* function to convert transtype to bytea (0 if none) */ + regproc aggserialfn BKI_DEFAULT(-) BKI_LOOKUP(pg_proc); + + /* function to convert bytea to transtype (0 if none) */ + regproc aggdeserialfn BKI_DEFAULT(-) BKI_LOOKUP(pg_proc); + + /* forward function for moving-aggregate mode (0 if none) */ + regproc aggmtransfn BKI_DEFAULT(-) BKI_LOOKUP(pg_proc); + + /* inverse function for moving-aggregate mode (0 if none) */ + regproc aggminvtransfn BKI_DEFAULT(-) BKI_LOOKUP(pg_proc); + + /* final function for moving-aggregate mode (0 if none) */ + regproc aggmfinalfn BKI_DEFAULT(-) BKI_LOOKUP(pg_proc); + + /* true to pass extra dummy arguments to aggfinalfn */ + bool aggfinalextra BKI_DEFAULT(f); + + /* true to pass extra dummy arguments to aggmfinalfn */ + bool aggmfinalextra BKI_DEFAULT(f); + + /* tells whether aggfinalfn modifies transition state */ + char aggfinalmodify BKI_DEFAULT(r); + + /* tells whether aggmfinalfn modifies transition state */ + char aggmfinalmodify BKI_DEFAULT(r); + + /* associated sort operator (0 if none) */ + Oid aggsortop BKI_DEFAULT(0) BKI_LOOKUP(pg_operator); + + /* type of aggregate's transition (state) data */ + Oid aggtranstype BKI_LOOKUP(pg_type); + + /* estimated size of state data (0 for default estimate) */ + int32 aggtransspace BKI_DEFAULT(0); + + /* type of moving-aggregate state data (0 if none) */ + Oid aggmtranstype BKI_DEFAULT(0) BKI_LOOKUP(pg_type); + + /* estimated size of moving-agg state (0 for default est) */ + int32 aggmtransspace BKI_DEFAULT(0); #ifdef CATALOG_VARLEN /* variable-length fields start here */ - text agginitval; - text aggminitval; + + /* initial value for transition state (can be NULL) */ + text agginitval BKI_DEFAULT(_null_); + + /* initial value for moving-agg state (can be NULL) */ + text aggminitval BKI_DEFAULT(_null_); #endif } FormData_pg_aggregate; @@ -86,32 +108,7 @@ CATALOG(pg_aggregate,2600) BKI_WITHOUT_OIDS */ typedef FormData_pg_aggregate *Form_pg_aggregate; -/* ---------------- - * compiler constants for pg_aggregate - * ---------------- - */ - -#define Natts_pg_aggregate 20 -#define Anum_pg_aggregate_aggfnoid 1 -#define Anum_pg_aggregate_aggkind 2 -#define Anum_pg_aggregate_aggnumdirectargs 3 -#define Anum_pg_aggregate_aggtransfn 4 -#define Anum_pg_aggregate_aggfinalfn 5 -#define Anum_pg_aggregate_aggcombinefn 6 -#define Anum_pg_aggregate_aggserialfn 7 -#define Anum_pg_aggregate_aggdeserialfn 8 -#define Anum_pg_aggregate_aggmtransfn 9 -#define Anum_pg_aggregate_aggminvtransfn 10 -#define Anum_pg_aggregate_aggmfinalfn 11 -#define Anum_pg_aggregate_aggfinalextra 12 -#define Anum_pg_aggregate_aggmfinalextra 13 -#define Anum_pg_aggregate_aggsortop 14 -#define Anum_pg_aggregate_aggtranstype 15 -#define Anum_pg_aggregate_aggtransspace 16 -#define Anum_pg_aggregate_aggmtranstype 17 -#define Anum_pg_aggregate_aggmtransspace 18 -#define Anum_pg_aggregate_agginitval 19 -#define Anum_pg_aggregate_aggminitval 20 +#ifdef EXPOSE_TO_CLIENT_CODE /* * Symbolic values for aggkind column. We distinguish normal aggregates @@ -128,224 +125,52 @@ typedef FormData_pg_aggregate *Form_pg_aggregate; /* Use this macro to test for "ordered-set agg including hypothetical case" */ #define AGGKIND_IS_ORDERED_SET(kind) ((kind) != AGGKIND_NORMAL) - -/* ---------------- - * initial contents of pg_aggregate - * --------------- +/* + * Symbolic values for aggfinalmodify and aggmfinalmodify columns. + * Preferably, finalfns do not modify the transition state value at all, + * but in some cases that would cost too much performance. We distinguish + * "pure read only" and "trashes it arbitrarily" cases, as well as the + * intermediate case where multiple finalfn calls are allowed but the + * transfn cannot be applied anymore after the first finalfn call. */ +#define AGGMODIFY_READ_ONLY 'r' +#define AGGMODIFY_SHAREABLE 's' +#define AGGMODIFY_READ_WRITE 'w' -/* avg */ -DATA(insert ( 2100 n 0 int8_avg_accum numeric_poly_avg int8_avg_combine int8_avg_serialize int8_avg_deserialize int8_avg_accum int8_avg_accum_inv numeric_poly_avg f f 0 2281 48 2281 48 _null_ _null_ )); -DATA(insert ( 2101 n 0 int4_avg_accum int8_avg int4_avg_combine - - int4_avg_accum int4_avg_accum_inv int8_avg f f 0 1016 0 1016 0 "{0,0}" "{0,0}" )); -DATA(insert ( 2102 n 0 int2_avg_accum int8_avg int4_avg_combine - - int2_avg_accum int2_avg_accum_inv int8_avg f f 0 1016 0 1016 0 "{0,0}" "{0,0}" )); -DATA(insert ( 2103 n 0 numeric_avg_accum numeric_avg numeric_avg_combine numeric_avg_serialize numeric_avg_deserialize numeric_avg_accum numeric_accum_inv numeric_avg f f 0 2281 128 2281 128 _null_ _null_ )); -DATA(insert ( 2104 n 0 float4_accum float8_avg float8_combine - - - - - f f 0 1022 0 0 0 "{0,0,0}" _null_ )); -DATA(insert ( 2105 n 0 float8_accum float8_avg float8_combine - - - - - f f 0 1022 0 0 0 "{0,0,0}" _null_ )); -DATA(insert ( 2106 n 0 interval_accum interval_avg interval_combine - - interval_accum interval_accum_inv interval_avg f f 0 1187 0 1187 0 "{0 second,0 second}" "{0 second,0 second}" )); - -/* sum */ -DATA(insert ( 2107 n 0 int8_avg_accum numeric_poly_sum int8_avg_combine int8_avg_serialize int8_avg_deserialize int8_avg_accum int8_avg_accum_inv numeric_poly_sum f f 0 2281 48 2281 48 _null_ _null_ )); -DATA(insert ( 2108 n 0 int4_sum - int8pl - - int4_avg_accum int4_avg_accum_inv int2int4_sum f f 0 20 0 1016 0 _null_ "{0,0}" )); -DATA(insert ( 2109 n 0 int2_sum - int8pl - - int2_avg_accum int2_avg_accum_inv int2int4_sum f f 0 20 0 1016 0 _null_ "{0,0}" )); -DATA(insert ( 2110 n 0 float4pl - float4pl - - - - - f f 0 700 0 0 0 _null_ _null_ )); -DATA(insert ( 2111 n 0 float8pl - float8pl - - - - - f f 0 701 0 0 0 _null_ _null_ )); -DATA(insert ( 2112 n 0 cash_pl - cash_pl - - cash_pl cash_mi - f f 0 790 0 790 0 _null_ _null_ )); -DATA(insert ( 2113 n 0 interval_pl - interval_pl - - interval_pl interval_mi - f f 0 1186 0 1186 0 _null_ _null_ )); -DATA(insert ( 2114 n 0 numeric_avg_accum numeric_sum numeric_avg_combine numeric_avg_serialize numeric_avg_deserialize numeric_avg_accum numeric_accum_inv numeric_sum f f 0 2281 128 2281 128 _null_ _null_ )); - -/* max */ -DATA(insert ( 2115 n 0 int8larger - int8larger - - - - - f f 413 20 0 0 0 _null_ _null_ )); -DATA(insert ( 2116 n 0 int4larger - int4larger - - - - - f f 521 23 0 0 0 _null_ _null_ )); -DATA(insert ( 2117 n 0 int2larger - int2larger - - - - - f f 520 21 0 0 0 _null_ _null_ )); -DATA(insert ( 2118 n 0 oidlarger - oidlarger - - - - - f f 610 26 0 0 0 _null_ _null_ )); -DATA(insert ( 2119 n 0 float4larger - float4larger - - - - - f f 623 700 0 0 0 _null_ _null_ )); -DATA(insert ( 2120 n 0 float8larger - float8larger - - - - - f f 674 701 0 0 0 _null_ _null_ )); -DATA(insert ( 2121 n 0 int4larger - int4larger - - - - - f f 563 702 0 0 0 _null_ _null_ )); -DATA(insert ( 2122 n 0 date_larger - date_larger - - - - - f f 1097 1082 0 0 0 _null_ _null_ )); -DATA(insert ( 2123 n 0 time_larger - time_larger - - - - - f f 1112 1083 0 0 0 _null_ _null_ )); -DATA(insert ( 2124 n 0 timetz_larger - timetz_larger - - - - - f f 1554 1266 0 0 0 _null_ _null_ )); -DATA(insert ( 2125 n 0 cashlarger - cashlarger - - - - - f f 903 790 0 0 0 _null_ _null_ )); -DATA(insert ( 2126 n 0 timestamp_larger - timestamp_larger - - - - - f f 2064 1114 0 0 0 _null_ _null_ )); -DATA(insert ( 2127 n 0 timestamptz_larger - timestamptz_larger - - - - - f f 1324 1184 0 0 0 _null_ _null_ )); -DATA(insert ( 2128 n 0 interval_larger - interval_larger - - - - - f f 1334 1186 0 0 0 _null_ _null_ )); -DATA(insert ( 2129 n 0 text_larger - text_larger - - - - - f f 666 25 0 0 0 _null_ _null_ )); -DATA(insert ( 2130 n 0 numeric_larger - numeric_larger - - - - - f f 1756 1700 0 0 0 _null_ _null_ )); -DATA(insert ( 2050 n 0 array_larger - array_larger - - - - - f f 1073 2277 0 0 0 _null_ _null_ )); -DATA(insert ( 2244 n 0 bpchar_larger - bpchar_larger - - - - - f f 1060 1042 0 0 0 _null_ _null_ )); -DATA(insert ( 2797 n 0 tidlarger - tidlarger - - - - - f f 2800 27 0 0 0 _null_ _null_ )); -DATA(insert ( 3526 n 0 enum_larger - enum_larger - - - - - f f 3519 3500 0 0 0 _null_ _null_ )); -DATA(insert ( 3564 n 0 network_larger - network_larger - - - - - f f 1205 869 0 0 0 _null_ _null_ )); - -/* min */ -DATA(insert ( 2131 n 0 int8smaller - int8smaller - - - - - f f 412 20 0 0 0 _null_ _null_ )); -DATA(insert ( 2132 n 0 int4smaller - int4smaller - - - - - f f 97 23 0 0 0 _null_ _null_ )); -DATA(insert ( 2133 n 0 int2smaller - int2smaller - - - - - f f 95 21 0 0 0 _null_ _null_ )); -DATA(insert ( 2134 n 0 oidsmaller - oidsmaller - - - - - f f 609 26 0 0 0 _null_ _null_ )); -DATA(insert ( 2135 n 0 float4smaller - float4smaller - - - - - f f 622 700 0 0 0 _null_ _null_ )); -DATA(insert ( 2136 n 0 float8smaller - float8smaller - - - - - f f 672 701 0 0 0 _null_ _null_ )); -DATA(insert ( 2137 n 0 int4smaller - int4smaller - - - - - f f 562 702 0 0 0 _null_ _null_ )); -DATA(insert ( 2138 n 0 date_smaller - date_smaller - - - - - f f 1095 1082 0 0 0 _null_ _null_ )); -DATA(insert ( 2139 n 0 time_smaller - time_smaller - - - - - f f 1110 1083 0 0 0 _null_ _null_ )); -DATA(insert ( 2140 n 0 timetz_smaller - timetz_smaller - - - - - f f 1552 1266 0 0 0 _null_ _null_ )); -DATA(insert ( 2141 n 0 cashsmaller - cashsmaller - - - - - f f 902 790 0 0 0 _null_ _null_ )); -DATA(insert ( 2142 n 0 timestamp_smaller - timestamp_smaller - - - - - f f 2062 1114 0 0 0 _null_ _null_ )); -DATA(insert ( 2143 n 0 timestamptz_smaller - timestamptz_smaller - - - - - f f 1322 1184 0 0 0 _null_ _null_ )); -DATA(insert ( 2144 n 0 interval_smaller - interval_smaller - - - - - f f 1332 1186 0 0 0 _null_ _null_ )); -DATA(insert ( 2145 n 0 text_smaller - text_smaller - - - - - f f 664 25 0 0 0 _null_ _null_ )); -DATA(insert ( 2146 n 0 numeric_smaller - numeric_smaller - - - - - f f 1754 1700 0 0 0 _null_ _null_ )); -DATA(insert ( 2051 n 0 array_smaller - array_smaller - - - - - f f 1072 2277 0 0 0 _null_ _null_ )); -DATA(insert ( 2245 n 0 bpchar_smaller - bpchar_smaller - - - - - f f 1058 1042 0 0 0 _null_ _null_ )); -DATA(insert ( 2798 n 0 tidsmaller - tidsmaller - - - - - f f 2799 27 0 0 0 _null_ _null_ )); -DATA(insert ( 3527 n 0 enum_smaller - enum_smaller - - - - - f f 3518 3500 0 0 0 _null_ _null_ )); -DATA(insert ( 3565 n 0 network_smaller - network_smaller - - - - - f f 1203 869 0 0 0 _null_ _null_ )); - -/* count */ -DATA(insert ( 2147 n 0 int8inc_any - int8pl - - int8inc_any int8dec_any - f f 0 20 0 20 0 "0" "0" )); -DATA(insert ( 2803 n 0 int8inc - int8pl - - int8inc int8dec - f f 0 20 0 20 0 "0" "0" )); - -/* var_pop */ -DATA(insert ( 2718 n 0 int8_accum numeric_var_pop numeric_combine numeric_serialize numeric_deserialize int8_accum int8_accum_inv numeric_var_pop f f 0 2281 128 2281 128 _null_ _null_ )); -DATA(insert ( 2719 n 0 int4_accum numeric_poly_var_pop numeric_poly_combine numeric_poly_serialize numeric_poly_deserialize int4_accum int4_accum_inv numeric_poly_var_pop f f 0 2281 48 2281 48 _null_ _null_ )); -DATA(insert ( 2720 n 0 int2_accum numeric_poly_var_pop numeric_poly_combine numeric_poly_serialize numeric_poly_deserialize int2_accum int2_accum_inv numeric_poly_var_pop f f 0 2281 48 2281 48 _null_ _null_ )); -DATA(insert ( 2721 n 0 float4_accum float8_var_pop float8_combine - - - - - f f 0 1022 0 0 0 "{0,0,0}" _null_ )); -DATA(insert ( 2722 n 0 float8_accum float8_var_pop float8_combine - - - - - f f 0 1022 0 0 0 "{0,0,0}" _null_ )); -DATA(insert ( 2723 n 0 numeric_accum numeric_var_pop numeric_combine numeric_serialize numeric_deserialize numeric_accum numeric_accum_inv numeric_var_pop f f 0 2281 128 2281 128 _null_ _null_ )); - -/* var_samp */ -DATA(insert ( 2641 n 0 int8_accum numeric_var_samp numeric_combine numeric_serialize numeric_deserialize int8_accum int8_accum_inv numeric_var_samp f f 0 2281 128 2281 128 _null_ _null_ )); -DATA(insert ( 2642 n 0 int4_accum numeric_poly_var_samp numeric_poly_combine numeric_poly_serialize numeric_poly_deserialize int4_accum int4_accum_inv numeric_poly_var_samp f f 0 2281 48 2281 48 _null_ _null_ )); -DATA(insert ( 2643 n 0 int2_accum numeric_poly_var_samp numeric_poly_combine numeric_poly_serialize numeric_poly_deserialize int2_accum int2_accum_inv numeric_poly_var_samp f f 0 2281 48 2281 48 _null_ _null_ )); -DATA(insert ( 2644 n 0 float4_accum float8_var_samp float8_combine - - - - - f f 0 1022 0 0 0 "{0,0,0}" _null_ )); -DATA(insert ( 2645 n 0 float8_accum float8_var_samp float8_combine - - - - - f f 0 1022 0 0 0 "{0,0,0}" _null_ )); -DATA(insert ( 2646 n 0 numeric_accum numeric_var_samp numeric_combine numeric_serialize numeric_deserialize numeric_accum numeric_accum_inv numeric_var_samp f f 0 2281 128 2281 128 _null_ _null_ )); - -/* variance: historical Postgres syntax for var_samp */ -DATA(insert ( 2148 n 0 int8_accum numeric_var_samp numeric_combine numeric_serialize numeric_deserialize int8_accum int8_accum_inv numeric_var_samp f f 0 2281 128 2281 128 _null_ _null_ )); -DATA(insert ( 2149 n 0 int4_accum numeric_poly_var_samp numeric_poly_combine numeric_poly_serialize numeric_poly_deserialize int4_accum int4_accum_inv numeric_poly_var_samp f f 0 2281 48 2281 48 _null_ _null_ )); -DATA(insert ( 2150 n 0 int2_accum numeric_poly_var_samp numeric_poly_combine numeric_poly_serialize numeric_poly_deserialize int2_accum int2_accum_inv numeric_poly_var_samp f f 0 2281 48 2281 48 _null_ _null_ )); -DATA(insert ( 2151 n 0 float4_accum float8_var_samp float8_combine - - - - - f f 0 1022 0 0 0 "{0,0,0}" _null_ )); -DATA(insert ( 2152 n 0 float8_accum float8_var_samp float8_combine - - - - - f f 0 1022 0 0 0 "{0,0,0}" _null_ )); -DATA(insert ( 2153 n 0 numeric_accum numeric_var_samp numeric_combine numeric_serialize numeric_deserialize numeric_accum numeric_accum_inv numeric_var_samp f f 0 2281 128 2281 128 _null_ _null_ )); - -/* stddev_pop */ -DATA(insert ( 2724 n 0 int8_accum numeric_stddev_pop numeric_combine numeric_serialize numeric_deserialize int8_accum int8_accum_inv numeric_stddev_pop f f 0 2281 128 2281 128 _null_ _null_ )); -DATA(insert ( 2725 n 0 int4_accum numeric_poly_stddev_pop numeric_poly_combine numeric_poly_serialize numeric_poly_deserialize int4_accum int4_accum_inv numeric_poly_stddev_pop f f 0 2281 48 2281 48 _null_ _null_ )); -DATA(insert ( 2726 n 0 int2_accum numeric_poly_stddev_pop numeric_poly_combine numeric_poly_serialize numeric_poly_deserialize int2_accum int2_accum_inv numeric_poly_stddev_pop f f 0 2281 48 2281 48 _null_ _null_ )); -DATA(insert ( 2727 n 0 float4_accum float8_stddev_pop float8_combine - - - - - f f 0 1022 0 0 0 "{0,0,0}" _null_ )); -DATA(insert ( 2728 n 0 float8_accum float8_stddev_pop float8_combine - - - - - f f 0 1022 0 0 0 "{0,0,0}" _null_ )); -DATA(insert ( 2729 n 0 numeric_accum numeric_stddev_pop numeric_combine numeric_serialize numeric_deserialize numeric_accum numeric_accum_inv numeric_stddev_pop f f 0 2281 128 2281 128 _null_ _null_ )); - -/* stddev_samp */ -DATA(insert ( 2712 n 0 int8_accum numeric_stddev_samp numeric_combine numeric_serialize numeric_deserialize int8_accum int8_accum_inv numeric_stddev_samp f f 0 2281 128 2281 128 _null_ _null_ )); -DATA(insert ( 2713 n 0 int4_accum numeric_poly_stddev_samp numeric_poly_combine numeric_poly_serialize numeric_poly_deserialize int4_accum int4_accum_inv numeric_poly_stddev_samp f f 0 2281 48 2281 48 _null_ _null_ )); -DATA(insert ( 2714 n 0 int2_accum numeric_poly_stddev_samp numeric_poly_combine numeric_poly_serialize numeric_poly_deserialize int2_accum int2_accum_inv numeric_poly_stddev_samp f f 0 2281 48 2281 48 _null_ _null_ )); -DATA(insert ( 2715 n 0 float4_accum float8_stddev_samp float8_combine - - - - - f f 0 1022 0 0 0 "{0,0,0}" _null_ )); -DATA(insert ( 2716 n 0 float8_accum float8_stddev_samp float8_combine - - - - - f f 0 1022 0 0 0 "{0,0,0}" _null_ )); -DATA(insert ( 2717 n 0 numeric_accum numeric_stddev_samp numeric_combine numeric_serialize numeric_deserialize numeric_accum numeric_accum_inv numeric_stddev_samp f f 0 2281 128 2281 128 _null_ _null_ )); - -/* stddev: historical Postgres syntax for stddev_samp */ -DATA(insert ( 2154 n 0 int8_accum numeric_stddev_samp numeric_combine numeric_serialize numeric_deserialize int8_accum int8_accum_inv numeric_stddev_samp f f 0 2281 128 2281 128 _null_ _null_ )); -DATA(insert ( 2155 n 0 int4_accum numeric_poly_stddev_samp numeric_poly_combine numeric_poly_serialize numeric_poly_deserialize int4_accum int4_accum_inv numeric_poly_stddev_samp f f 0 2281 48 2281 48 _null_ _null_ )); -DATA(insert ( 2156 n 0 int2_accum numeric_poly_stddev_samp numeric_poly_combine numeric_poly_serialize numeric_poly_deserialize int2_accum int2_accum_inv numeric_poly_stddev_samp f f 0 2281 48 2281 48 _null_ _null_ )); -DATA(insert ( 2157 n 0 float4_accum float8_stddev_samp float8_combine - - - - - f f 0 1022 0 0 0 "{0,0,0}" _null_ )); -DATA(insert ( 2158 n 0 float8_accum float8_stddev_samp float8_combine - - - - - f f 0 1022 0 0 0 "{0,0,0}" _null_ )); -DATA(insert ( 2159 n 0 numeric_accum numeric_stddev_samp numeric_combine numeric_serialize numeric_deserialize numeric_accum numeric_accum_inv numeric_stddev_samp f f 0 2281 128 2281 128 _null_ _null_ )); - -/* SQL2003 binary regression aggregates */ -DATA(insert ( 2818 n 0 int8inc_float8_float8 - int8pl - - - - - f f 0 20 0 0 0 "0" _null_ )); -DATA(insert ( 2819 n 0 float8_regr_accum float8_regr_sxx float8_regr_combine - - - - - f f 0 1022 0 0 0 "{0,0,0,0,0,0}" _null_ )); -DATA(insert ( 2820 n 0 float8_regr_accum float8_regr_syy float8_regr_combine - - - - - f f 0 1022 0 0 0 "{0,0,0,0,0,0}" _null_ )); -DATA(insert ( 2821 n 0 float8_regr_accum float8_regr_sxy float8_regr_combine - - - - - f f 0 1022 0 0 0 "{0,0,0,0,0,0}" _null_ )); -DATA(insert ( 2822 n 0 float8_regr_accum float8_regr_avgx float8_regr_combine - - - - - f f 0 1022 0 0 0 "{0,0,0,0,0,0}" _null_ )); -DATA(insert ( 2823 n 0 float8_regr_accum float8_regr_avgy float8_regr_combine - - - - - f f 0 1022 0 0 0 "{0,0,0,0,0,0}" _null_ )); -DATA(insert ( 2824 n 0 float8_regr_accum float8_regr_r2 float8_regr_combine - - - - - f f 0 1022 0 0 0 "{0,0,0,0,0,0}" _null_ )); -DATA(insert ( 2825 n 0 float8_regr_accum float8_regr_slope float8_regr_combine - - - - - f f 0 1022 0 0 0 "{0,0,0,0,0,0}" _null_ )); -DATA(insert ( 2826 n 0 float8_regr_accum float8_regr_intercept float8_regr_combine - - - - - f f 0 1022 0 0 0 "{0,0,0,0,0,0}" _null_ )); -DATA(insert ( 2827 n 0 float8_regr_accum float8_covar_pop float8_regr_combine - - - - - f f 0 1022 0 0 0 "{0,0,0,0,0,0}" _null_ )); -DATA(insert ( 2828 n 0 float8_regr_accum float8_covar_samp float8_regr_combine - - - - - f f 0 1022 0 0 0 "{0,0,0,0,0,0}" _null_ )); -DATA(insert ( 2829 n 0 float8_regr_accum float8_corr float8_regr_combine - - - - - f f 0 1022 0 0 0 "{0,0,0,0,0,0}" _null_ )); - -/* boolean-and and boolean-or */ -DATA(insert ( 2517 n 0 booland_statefunc - booland_statefunc - - bool_accum bool_accum_inv bool_alltrue f f 58 16 0 2281 16 _null_ _null_ )); -DATA(insert ( 2518 n 0 boolor_statefunc - boolor_statefunc - - bool_accum bool_accum_inv bool_anytrue f f 59 16 0 2281 16 _null_ _null_ )); -DATA(insert ( 2519 n 0 booland_statefunc - booland_statefunc - - bool_accum bool_accum_inv bool_alltrue f f 58 16 0 2281 16 _null_ _null_ )); - -/* bitwise integer */ -DATA(insert ( 2236 n 0 int2and - int2and - - - - - f f 0 21 0 0 0 _null_ _null_ )); -DATA(insert ( 2237 n 0 int2or - int2or - - - - - f f 0 21 0 0 0 _null_ _null_ )); -DATA(insert ( 2238 n 0 int4and - int4and - - - - - f f 0 23 0 0 0 _null_ _null_ )); -DATA(insert ( 2239 n 0 int4or - int4or - - - - - f f 0 23 0 0 0 _null_ _null_ )); -DATA(insert ( 2240 n 0 int8and - int8and - - - - - f f 0 20 0 0 0 _null_ _null_ )); -DATA(insert ( 2241 n 0 int8or - int8or - - - - - f f 0 20 0 0 0 _null_ _null_ )); -DATA(insert ( 2242 n 0 bitand - bitand - - - - - f f 0 1560 0 0 0 _null_ _null_ )); -DATA(insert ( 2243 n 0 bitor - bitor - - - - - f f 0 1560 0 0 0 _null_ _null_ )); - -/* xml */ -DATA(insert ( 2901 n 0 xmlconcat2 - - - - - - - f f 0 142 0 0 0 _null_ _null_ )); - -/* array */ -DATA(insert ( 2335 n 0 array_agg_transfn array_agg_finalfn - - - - - - t f 0 2281 0 0 0 _null_ _null_ )); -DATA(insert ( 4053 n 0 array_agg_array_transfn array_agg_array_finalfn - - - - - - t f 0 2281 0 0 0 _null_ _null_ )); - -/* text */ -DATA(insert ( 3538 n 0 string_agg_transfn string_agg_finalfn - - - - - - f f 0 2281 0 0 0 _null_ _null_ )); - -/* bytea */ -DATA(insert ( 3545 n 0 bytea_string_agg_transfn bytea_string_agg_finalfn - - - - - - f f 0 2281 0 0 0 _null_ _null_ )); - -/* json */ -DATA(insert ( 3175 n 0 json_agg_transfn json_agg_finalfn - - - - - - f f 0 2281 0 0 0 _null_ _null_ )); -DATA(insert ( 3197 n 0 json_object_agg_transfn json_object_agg_finalfn - - - - - - f f 0 2281 0 0 0 _null_ _null_ )); - -/* jsonb */ -DATA(insert ( 3267 n 0 jsonb_agg_transfn jsonb_agg_finalfn - - - - - - f f 0 2281 0 0 0 _null_ _null_ )); -DATA(insert ( 3270 n 0 jsonb_object_agg_transfn jsonb_object_agg_finalfn - - - - - - f f 0 2281 0 0 0 _null_ _null_ )); - -/* ordered-set and hypothetical-set aggregates */ -DATA(insert ( 3972 o 1 ordered_set_transition percentile_disc_final - - - - - - t f 0 2281 0 0 0 _null_ _null_ )); -DATA(insert ( 3974 o 1 ordered_set_transition percentile_cont_float8_final - - - - - - f f 0 2281 0 0 0 _null_ _null_ )); -DATA(insert ( 3976 o 1 ordered_set_transition percentile_cont_interval_final - - - - - - f f 0 2281 0 0 0 _null_ _null_ )); -DATA(insert ( 3978 o 1 ordered_set_transition percentile_disc_multi_final - - - - - - t f 0 2281 0 0 0 _null_ _null_ )); -DATA(insert ( 3980 o 1 ordered_set_transition percentile_cont_float8_multi_final - - - - - - f f 0 2281 0 0 0 _null_ _null_ )); -DATA(insert ( 3982 o 1 ordered_set_transition percentile_cont_interval_multi_final - - - - - - f f 0 2281 0 0 0 _null_ _null_ )); -DATA(insert ( 3984 o 0 ordered_set_transition mode_final - - - - - - t f 0 2281 0 0 0 _null_ _null_ )); -DATA(insert ( 3986 h 1 ordered_set_transition_multi rank_final - - - - - - t f 0 2281 0 0 0 _null_ _null_ )); -DATA(insert ( 3988 h 1 ordered_set_transition_multi percent_rank_final - - - - - - t f 0 2281 0 0 0 _null_ _null_ )); -DATA(insert ( 3990 h 1 ordered_set_transition_multi cume_dist_final - - - - - - t f 0 2281 0 0 0 _null_ _null_ )); -DATA(insert ( 3992 h 1 ordered_set_transition_multi dense_rank_final - - - - - - t f 0 2281 0 0 0 _null_ _null_ )); +#endif /* EXPOSE_TO_CLIENT_CODE */ -/* - * prototypes for functions in pg_aggregate.c - */ extern ObjectAddress AggregateCreate(const char *aggName, - Oid aggNamespace, - char aggKind, - int numArgs, - int numDirectArgs, - oidvector *parameterTypes, - Datum allParameterTypes, - Datum parameterModes, - Datum parameterNames, - List *parameterDefaults, - Oid variadicArgType, - List *aggtransfnName, - List *aggfinalfnName, - List *aggcombinefnName, - List *aggserialfnName, - List *aggdeserialfnName, - List *aggmtransfnName, - List *aggminvtransfnName, - List *aggmfinalfnName, - bool finalfnExtraArgs, - bool mfinalfnExtraArgs, - List *aggsortopName, - Oid aggTransType, - int32 aggTransSpace, - Oid aggmTransType, - int32 aggmTransSpace, - const char *agginitval, - const char *aggminitval, - char proparallel); + Oid aggNamespace, + bool replace, + char aggKind, + int numArgs, + int numDirectArgs, + oidvector *parameterTypes, + Datum allParameterTypes, + Datum parameterModes, + Datum parameterNames, + List *parameterDefaults, + Oid variadicArgType, + List *aggtransfnName, + List *aggfinalfnName, + List *aggcombinefnName, + List *aggserialfnName, + List *aggdeserialfnName, + List *aggmtransfnName, + List *aggminvtransfnName, + List *aggmfinalfnName, + bool finalfnExtraArgs, + bool mfinalfnExtraArgs, + char finalfnModify, + char mfinalfnModify, + List *aggsortopName, + Oid aggTransType, + int32 aggTransSpace, + Oid aggmTransType, + int32 aggmTransSpace, + const char *agginitval, + const char *aggminitval, + char proparallel); #endif /* PG_AGGREGATE_H */ diff --git a/parser/include/catalog/pg_aggregate_d.h b/parser/include/catalog/pg_aggregate_d.h new file mode 100644 index 00000000..a00cd1f2 --- /dev/null +++ b/parser/include/catalog/pg_aggregate_d.h @@ -0,0 +1,77 @@ +/*------------------------------------------------------------------------- + * + * pg_aggregate_d.h + * Macro definitions for pg_aggregate + * + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group + * Portions Copyright (c) 1994, Regents of the University of California + * + * NOTES + * ****************************** + * *** DO NOT EDIT THIS FILE! *** + * ****************************** + * + * It has been GENERATED by src/backend/catalog/genbki.pl + * + *------------------------------------------------------------------------- + */ +#ifndef PG_AGGREGATE_D_H +#define PG_AGGREGATE_D_H + +#define AggregateRelationId 2600 + +#define Anum_pg_aggregate_aggfnoid 1 +#define Anum_pg_aggregate_aggkind 2 +#define Anum_pg_aggregate_aggnumdirectargs 3 +#define Anum_pg_aggregate_aggtransfn 4 +#define Anum_pg_aggregate_aggfinalfn 5 +#define Anum_pg_aggregate_aggcombinefn 6 +#define Anum_pg_aggregate_aggserialfn 7 +#define Anum_pg_aggregate_aggdeserialfn 8 +#define Anum_pg_aggregate_aggmtransfn 9 +#define Anum_pg_aggregate_aggminvtransfn 10 +#define Anum_pg_aggregate_aggmfinalfn 11 +#define Anum_pg_aggregate_aggfinalextra 12 +#define Anum_pg_aggregate_aggmfinalextra 13 +#define Anum_pg_aggregate_aggfinalmodify 14 +#define Anum_pg_aggregate_aggmfinalmodify 15 +#define Anum_pg_aggregate_aggsortop 16 +#define Anum_pg_aggregate_aggtranstype 17 +#define Anum_pg_aggregate_aggtransspace 18 +#define Anum_pg_aggregate_aggmtranstype 19 +#define Anum_pg_aggregate_aggmtransspace 20 +#define Anum_pg_aggregate_agginitval 21 +#define Anum_pg_aggregate_aggminitval 22 + +#define Natts_pg_aggregate 22 + + +/* + * Symbolic values for aggkind column. We distinguish normal aggregates + * from ordered-set aggregates (which have two sets of arguments, namely + * direct and aggregated arguments) and from hypothetical-set aggregates + * (which are a subclass of ordered-set aggregates in which the last + * direct arguments have to match up in number and datatypes with the + * aggregated arguments). + */ +#define AGGKIND_NORMAL 'n' +#define AGGKIND_ORDERED_SET 'o' +#define AGGKIND_HYPOTHETICAL 'h' + +/* Use this macro to test for "ordered-set agg including hypothetical case" */ +#define AGGKIND_IS_ORDERED_SET(kind) ((kind) != AGGKIND_NORMAL) + +/* + * Symbolic values for aggfinalmodify and aggmfinalmodify columns. + * Preferably, finalfns do not modify the transition state value at all, + * but in some cases that would cost too much performance. We distinguish + * "pure read only" and "trashes it arbitrarily" cases, as well as the + * intermediate case where multiple finalfn calls are allowed but the + * transfn cannot be applied anymore after the first finalfn call. + */ +#define AGGMODIFY_READ_ONLY 'r' +#define AGGMODIFY_SHAREABLE 's' +#define AGGMODIFY_READ_WRITE 'w' + + +#endif /* PG_AGGREGATE_D_H */ diff --git a/parser/include/catalog/pg_am.h b/parser/include/catalog/pg_am.h index e021f5b8..63c03c43 100644 --- a/parser/include/catalog/pg_am.h +++ b/parser/include/catalog/pg_am.h @@ -1,21 +1,17 @@ /*------------------------------------------------------------------------- * * pg_am.h - * definition of the system "access method" relation (pg_am) - * along with the relation's initial contents. + * definition of the "access method" system catalog (pg_am) * * - * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/catalog/pg_am.h * * NOTES - * the genbki.pl script reads this file and generates .bki - * information from the DATA() statements. - * - * XXX do NOT break up DATA() statements into multiple lines! - * the scripts are not as smart as you might think... + * The Catalog.pm module reads this file and derives schema + * information. * *------------------------------------------------------------------------- */ @@ -23,19 +19,25 @@ #define PG_AM_H #include "catalog/genbki.h" +#include "catalog/pg_am_d.h" /* ---------------- * pg_am definition. cpp turns this into * typedef struct FormData_pg_am * ---------------- */ -#define AccessMethodRelationId 2601 - -CATALOG(pg_am,2601) +CATALOG(pg_am,2601,AccessMethodRelationId) { - NameData amname; /* access method name */ - regproc amhandler; /* handler function */ - char amtype; /* see AMTYPE_xxx constants below */ + Oid oid; /* oid */ + + /* access method name */ + NameData amname; + + /* handler function */ + regproc amhandler BKI_LOOKUP(pg_proc); + + /* see AMTYPE_xxx constants below */ + char amtype; } FormData_pg_am; /* ---------------- @@ -45,43 +47,14 @@ CATALOG(pg_am,2601) */ typedef FormData_pg_am *Form_pg_am; -/* ---------------- - * compiler constants for pg_am - * ---------------- - */ -#define Natts_pg_am 3 -#define Anum_pg_am_amname 1 -#define Anum_pg_am_amhandler 2 -#define Anum_pg_am_amtype 3 +#ifdef EXPOSE_TO_CLIENT_CODE -/* ---------------- - * compiler constant for amtype - * ---------------- +/* + * Allowed values for amtype */ #define AMTYPE_INDEX 'i' /* index access method */ +#define AMTYPE_TABLE 't' /* table access method */ -/* ---------------- - * initial contents of pg_am - * ---------------- - */ - -DATA(insert OID = 403 ( btree bthandler i )); -DESCR("b-tree index access method"); -#define BTREE_AM_OID 403 -DATA(insert OID = 405 ( hash hashhandler i )); -DESCR("hash index access method"); -#define HASH_AM_OID 405 -DATA(insert OID = 783 ( gist gisthandler i )); -DESCR("GiST index access method"); -#define GIST_AM_OID 783 -DATA(insert OID = 2742 ( gin ginhandler i )); -DESCR("GIN index access method"); -#define GIN_AM_OID 2742 -DATA(insert OID = 4000 ( spgist spghandler i )); -DESCR("SP-GiST index access method"); -#define SPGIST_AM_OID 4000 -DATA(insert OID = 3580 ( brin brinhandler i )); -DESCR("block range index (BRIN) access method"); -#define BRIN_AM_OID 3580 +#endif /* EXPOSE_TO_CLIENT_CODE */ #endif /* PG_AM_H */ diff --git a/parser/include/catalog/pg_am_d.h b/parser/include/catalog/pg_am_d.h new file mode 100644 index 00000000..2b6b941c --- /dev/null +++ b/parser/include/catalog/pg_am_d.h @@ -0,0 +1,45 @@ +/*------------------------------------------------------------------------- + * + * pg_am_d.h + * Macro definitions for pg_am + * + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group + * Portions Copyright (c) 1994, Regents of the University of California + * + * NOTES + * ****************************** + * *** DO NOT EDIT THIS FILE! *** + * ****************************** + * + * It has been GENERATED by src/backend/catalog/genbki.pl + * + *------------------------------------------------------------------------- + */ +#ifndef PG_AM_D_H +#define PG_AM_D_H + +#define AccessMethodRelationId 2601 + +#define Anum_pg_am_oid 1 +#define Anum_pg_am_amname 2 +#define Anum_pg_am_amhandler 3 +#define Anum_pg_am_amtype 4 + +#define Natts_pg_am 4 + + +/* + * Allowed values for amtype + */ +#define AMTYPE_INDEX 'i' /* index access method */ +#define AMTYPE_TABLE 't' /* table access method */ + +#define HEAP_TABLE_AM_OID 2 +#define BTREE_AM_OID 403 +#define HASH_AM_OID 405 +#define GIST_AM_OID 783 +#define GIN_AM_OID 2742 +#define SPGIST_AM_OID 4000 +#define BRIN_AM_OID 3580 + +#endif /* PG_AM_D_H */ diff --git a/parser/include/catalog/pg_attribute.h b/parser/include/catalog/pg_attribute.h index bcf28e8f..a4cc80ad 100644 --- a/parser/include/catalog/pg_attribute.h +++ b/parser/include/catalog/pg_attribute.h @@ -1,18 +1,21 @@ /*------------------------------------------------------------------------- * * pg_attribute.h - * definition of the system "attribute" relation (pg_attribute) - * along with the relation's initial contents. + * definition of the "attribute" system catalog (pg_attribute) + * + * The initial contents of pg_attribute are generated at compile time by + * genbki.pl, so there is no pg_attribute.dat file. Only "bootstrapped" + * relations need be included. * * - * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/catalog/pg_attribute.h * * NOTES - * the genbki.pl script reads this file and generates .bki - * information from the DATA() statements. + * The Catalog.pm module reads this file and derives schema + * information. * *------------------------------------------------------------------------- */ @@ -20,6 +23,7 @@ #define PG_ATTRIBUTE_H #include "catalog/genbki.h" +#include "catalog/pg_attribute_d.h" /* ---------------- * pg_attribute definition. cpp turns this into @@ -30,10 +34,7 @@ * You may need to change catalog/genbki.pl as well. * ---------------- */ -#define AttributeRelationId 1249 -#define AttributeRelation_Rowtype_Id 75 - -CATALOG(pg_attribute,1249) BKI_BOOTSTRAP BKI_WITHOUT_OIDS BKI_ROWTYPE_OID(75) BKI_SCHEMA_MACRO +CATALOG(pg_attribute,1249,AttributeRelationId) BKI_BOOTSTRAP BKI_ROWTYPE_OID(75,AttributeRelation_Rowtype_Id) BKI_SCHEMA_MACRO { Oid attrelid; /* OID of relation containing this attribute */ NameData attname; /* name of attribute */ @@ -54,7 +55,7 @@ CATALOG(pg_attribute,1249) BKI_BOOTSTRAP BKI_WITHOUT_OIDS BKI_ROWTYPE_OID(75) BK * that no value has been explicitly set for this column, so ANALYZE * should use the default setting. */ - int32 attstattarget; + int32 attstattarget BKI_DEFAULT(-1); /* * attlen is a copy of the typlen field from pg_type for this attribute. @@ -90,7 +91,7 @@ CATALOG(pg_attribute,1249) BKI_BOOTSTRAP BKI_WITHOUT_OIDS BKI_ROWTYPE_OID(75) BK * descriptor, we may then update attcacheoff in the copies. This speeds * up the attribute walking process. */ - int32 attcacheoff; + int32 attcacheoff BKI_DEFAULT(-1); /* * atttypmod records type-specific data supplied at table creation time @@ -98,7 +99,7 @@ CATALOG(pg_attribute,1249) BKI_BOOTSTRAP BKI_WITHOUT_OIDS BKI_ROWTYPE_OID(75) BK * type-specific input and output functions as the third argument. The * value will generally be -1 for types that do not need typmod. */ - int32 atttypmod; + int32 atttypmod BKI_DEFAULT(-1); /* * attbyval is a copy of the typbyval field from pg_type for this @@ -109,14 +110,7 @@ CATALOG(pg_attribute,1249) BKI_BOOTSTRAP BKI_WITHOUT_OIDS BKI_ROWTYPE_OID(75) BK /*---------- * attstorage tells for VARLENA attributes, what the heap access * methods can do to it if a given tuple doesn't fit into a page. - * Possible values are - * 'p': Value must be stored plain always - * 'e': Value can be stored in "secondary" relation (if relation - * has one, see pg_class.reltoastrelid) - * 'm': Value can be stored compressed inline - * 'x': Value can be stored compressed inline or in "secondary" - * Note that 'm' fields can also be moved out to secondary storage, - * but only as a last resort ('e' and 'x' fields are moved first). + * Possible values are as for pg_type.typstorage (see TYPSTORAGE macros). *---------- */ char attstorage; @@ -131,13 +125,19 @@ CATALOG(pg_attribute,1249) BKI_BOOTSTRAP BKI_WITHOUT_OIDS BKI_ROWTYPE_OID(75) BK bool attnotnull; /* Has DEFAULT value or not */ - bool atthasdef; + bool atthasdef BKI_DEFAULT(f); + + /* Has a missing value or not */ + bool atthasmissing BKI_DEFAULT(f); /* One of the ATTRIBUTE_IDENTITY_* constants below, or '\0' */ - char attidentity; + char attidentity BKI_DEFAULT('\0'); + + /* One of the ATTRIBUTE_GENERATED_* constants below, or '\0' */ + char attgenerated BKI_DEFAULT('\0'); /* Is dropped (ie, logically invisible) or not */ - bool attisdropped; + bool attisdropped BKI_DEFAULT(f); /* * This flag specifies whether this column has ever had a local @@ -148,10 +148,10 @@ CATALOG(pg_attribute,1249) BKI_BOOTSTRAP BKI_WITHOUT_OIDS BKI_ROWTYPE_OID(75) BK * not dropped by a parent's DROP COLUMN even if this causes the column's * attinhcount to become zero. */ - bool attislocal; + bool attislocal BKI_DEFAULT(t); /* Number of times inherited from direct parent relation(s) */ - int32 attinhcount; + int32 attinhcount BKI_DEFAULT(0); /* attribute's collation */ Oid attcollation; @@ -160,13 +160,19 @@ CATALOG(pg_attribute,1249) BKI_BOOTSTRAP BKI_WITHOUT_OIDS BKI_ROWTYPE_OID(75) BK /* NOTE: The following fields are not present in tuple descriptors. */ /* Column-level access permissions */ - aclitem attacl[1]; + aclitem attacl[1] BKI_DEFAULT(_null_); /* Column-level options */ - text attoptions[1]; + text attoptions[1] BKI_DEFAULT(_null_); /* Column-level FDW options */ - text attfdwoptions[1]; + text attfdwoptions[1] BKI_DEFAULT(_null_); + + /* + * Missing value for added columns. This is a one element array which lets + * us store a value of the attribute type here. + */ + anyarray attmissingval BKI_DEFAULT(_null_); #endif } FormData_pg_attribute; @@ -186,46 +192,13 @@ CATALOG(pg_attribute,1249) BKI_BOOTSTRAP BKI_WITHOUT_OIDS BKI_ROWTYPE_OID(75) BK */ typedef FormData_pg_attribute *Form_pg_attribute; -/* ---------------- - * compiler constants for pg_attribute - * ---------------- - */ - -#define Natts_pg_attribute 22 -#define Anum_pg_attribute_attrelid 1 -#define Anum_pg_attribute_attname 2 -#define Anum_pg_attribute_atttypid 3 -#define Anum_pg_attribute_attstattarget 4 -#define Anum_pg_attribute_attlen 5 -#define Anum_pg_attribute_attnum 6 -#define Anum_pg_attribute_attndims 7 -#define Anum_pg_attribute_attcacheoff 8 -#define Anum_pg_attribute_atttypmod 9 -#define Anum_pg_attribute_attbyval 10 -#define Anum_pg_attribute_attstorage 11 -#define Anum_pg_attribute_attalign 12 -#define Anum_pg_attribute_attnotnull 13 -#define Anum_pg_attribute_atthasdef 14 -#define Anum_pg_attribute_attidentity 15 -#define Anum_pg_attribute_attisdropped 16 -#define Anum_pg_attribute_attislocal 17 -#define Anum_pg_attribute_attinhcount 18 -#define Anum_pg_attribute_attcollation 19 -#define Anum_pg_attribute_attacl 20 -#define Anum_pg_attribute_attoptions 21 -#define Anum_pg_attribute_attfdwoptions 22 - - -/* ---------------- - * initial contents of pg_attribute - * - * The initial contents of pg_attribute are generated at compile time by - * genbki.pl. Only "bootstrapped" relations need be included. - * ---------------- - */ - +#ifdef EXPOSE_TO_CLIENT_CODE #define ATTRIBUTE_IDENTITY_ALWAYS 'a' #define ATTRIBUTE_IDENTITY_BY_DEFAULT 'd' +#define ATTRIBUTE_GENERATED_STORED 's' + +#endif /* EXPOSE_TO_CLIENT_CODE */ + #endif /* PG_ATTRIBUTE_H */ diff --git a/parser/include/catalog/pg_attribute_d.h b/parser/include/catalog/pg_attribute_d.h new file mode 100644 index 00000000..d736b6c1 --- /dev/null +++ b/parser/include/catalog/pg_attribute_d.h @@ -0,0 +1,59 @@ +/*------------------------------------------------------------------------- + * + * pg_attribute_d.h + * Macro definitions for pg_attribute + * + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group + * Portions Copyright (c) 1994, Regents of the University of California + * + * NOTES + * ****************************** + * *** DO NOT EDIT THIS FILE! *** + * ****************************** + * + * It has been GENERATED by src/backend/catalog/genbki.pl + * + *------------------------------------------------------------------------- + */ +#ifndef PG_ATTRIBUTE_D_H +#define PG_ATTRIBUTE_D_H + +#define AttributeRelationId 1249 +#define AttributeRelation_Rowtype_Id 75 + +#define Anum_pg_attribute_attrelid 1 +#define Anum_pg_attribute_attname 2 +#define Anum_pg_attribute_atttypid 3 +#define Anum_pg_attribute_attstattarget 4 +#define Anum_pg_attribute_attlen 5 +#define Anum_pg_attribute_attnum 6 +#define Anum_pg_attribute_attndims 7 +#define Anum_pg_attribute_attcacheoff 8 +#define Anum_pg_attribute_atttypmod 9 +#define Anum_pg_attribute_attbyval 10 +#define Anum_pg_attribute_attstorage 11 +#define Anum_pg_attribute_attalign 12 +#define Anum_pg_attribute_attnotnull 13 +#define Anum_pg_attribute_atthasdef 14 +#define Anum_pg_attribute_atthasmissing 15 +#define Anum_pg_attribute_attidentity 16 +#define Anum_pg_attribute_attgenerated 17 +#define Anum_pg_attribute_attisdropped 18 +#define Anum_pg_attribute_attislocal 19 +#define Anum_pg_attribute_attinhcount 20 +#define Anum_pg_attribute_attcollation 21 +#define Anum_pg_attribute_attacl 22 +#define Anum_pg_attribute_attoptions 23 +#define Anum_pg_attribute_attfdwoptions 24 +#define Anum_pg_attribute_attmissingval 25 + +#define Natts_pg_attribute 25 + + +#define ATTRIBUTE_IDENTITY_ALWAYS 'a' +#define ATTRIBUTE_IDENTITY_BY_DEFAULT 'd' + +#define ATTRIBUTE_GENERATED_STORED 's' + + +#endif /* PG_ATTRIBUTE_D_H */ diff --git a/parser/include/catalog/pg_authid.h b/parser/include/catalog/pg_authid.h index 9b6b52c9..88a53730 100644 --- a/parser/include/catalog/pg_authid.h +++ b/parser/include/catalog/pg_authid.h @@ -1,20 +1,19 @@ /*------------------------------------------------------------------------- * * pg_authid.h - * definition of the system "authorization identifier" relation (pg_authid) - * along with the relation's initial contents. + * definition of the "authorization identifier" system catalog (pg_authid) * * pg_shadow and pg_group are now publicly accessible views on pg_authid. * * - * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/catalog/pg_authid.h * * NOTES - * the genbki.pl script reads this file and generates .bki - * information from the DATA() statements. + * The Catalog.pm module reads this file and derives schema + * information. * *------------------------------------------------------------------------- */ @@ -22,28 +21,16 @@ #define PG_AUTHID_H #include "catalog/genbki.h" - -/* - * The CATALOG definition has to refer to the type of rolvaliduntil as - * "timestamptz" (lower case) so that bootstrap mode recognizes it. But - * the C header files define this type as TimestampTz. Since the field is - * potentially-null and therefore can't be accessed directly from C code, - * there is no particular need for the C struct definition to show the - * field type as TimestampTz --- instead we just make it int. - */ -#define timestamptz int - +#include "catalog/pg_authid_d.h" /* ---------------- * pg_authid definition. cpp turns this into * typedef struct FormData_pg_authid * ---------------- */ -#define AuthIdRelationId 1260 -#define AuthIdRelation_Rowtype_Id 2842 - -CATALOG(pg_authid,1260) BKI_SHARED_RELATION BKI_ROWTYPE_OID(2842) BKI_SCHEMA_MACRO +CATALOG(pg_authid,1260,AuthIdRelationId) BKI_SHARED_RELATION BKI_ROWTYPE_OID(2842,AuthIdRelation_Rowtype_Id) BKI_SCHEMA_MACRO { + Oid oid; /* oid */ NameData rolname; /* name of role */ bool rolsuper; /* read this field via superuser() only! */ bool rolinherit; /* inherit privileges from other roles? */ @@ -61,9 +48,6 @@ CATALOG(pg_authid,1260) BKI_SHARED_RELATION BKI_ROWTYPE_OID(2842) BKI_SCHEMA_MAC #endif } FormData_pg_authid; -#undef timestamptz - - /* ---------------- * Form_pg_authid corresponds to a pointer to a tuple with * the format of pg_authid relation. @@ -71,44 +55,4 @@ CATALOG(pg_authid,1260) BKI_SHARED_RELATION BKI_ROWTYPE_OID(2842) BKI_SCHEMA_MAC */ typedef FormData_pg_authid *Form_pg_authid; -/* ---------------- - * compiler constants for pg_authid - * ---------------- - */ -#define Natts_pg_authid 11 -#define Anum_pg_authid_rolname 1 -#define Anum_pg_authid_rolsuper 2 -#define Anum_pg_authid_rolinherit 3 -#define Anum_pg_authid_rolcreaterole 4 -#define Anum_pg_authid_rolcreatedb 5 -#define Anum_pg_authid_rolcanlogin 6 -#define Anum_pg_authid_rolreplication 7 -#define Anum_pg_authid_rolbypassrls 8 -#define Anum_pg_authid_rolconnlimit 9 -#define Anum_pg_authid_rolpassword 10 -#define Anum_pg_authid_rolvaliduntil 11 - -/* ---------------- - * initial contents of pg_authid - * - * The uppercase quantities will be replaced at initdb time with - * user choices. - * - * The C code typically refers to these roles using the #define symbols, - * so be sure to keep those in sync with the DATA lines. - * ---------------- - */ -DATA(insert OID = 10 ( "POSTGRES" t t t t t t t -1 _null_ _null_)); -#define BOOTSTRAP_SUPERUSERID 10 -DATA(insert OID = 3373 ( "pg_monitor" f t f f f f f -1 _null_ _null_)); -#define DEFAULT_ROLE_MONITOR 3373 -DATA(insert OID = 3374 ( "pg_read_all_settings" f t f f f f f -1 _null_ _null_)); -#define DEFAULT_ROLE_READ_ALL_SETTINGS 3374 -DATA(insert OID = 3375 ( "pg_read_all_stats" f t f f f f f -1 _null_ _null_)); -#define DEFAULT_ROLE_READ_ALL_STATS 3375 -DATA(insert OID = 3377 ( "pg_stat_scan_tables" f t f f f f f -1 _null_ _null_)); -#define DEFAULT_ROLE_STAT_SCAN_TABLES 3377 -DATA(insert OID = 4200 ( "pg_signal_backend" f t f f f f f -1 _null_ _null_)); -#define DEFAULT_ROLE_SIGNAL_BACKENDID 4200 - #endif /* PG_AUTHID_H */ diff --git a/parser/include/catalog/pg_authid_d.h b/parser/include/catalog/pg_authid_d.h new file mode 100644 index 00000000..e8944795 --- /dev/null +++ b/parser/include/catalog/pg_authid_d.h @@ -0,0 +1,49 @@ +/*------------------------------------------------------------------------- + * + * pg_authid_d.h + * Macro definitions for pg_authid + * + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group + * Portions Copyright (c) 1994, Regents of the University of California + * + * NOTES + * ****************************** + * *** DO NOT EDIT THIS FILE! *** + * ****************************** + * + * It has been GENERATED by src/backend/catalog/genbki.pl + * + *------------------------------------------------------------------------- + */ +#ifndef PG_AUTHID_D_H +#define PG_AUTHID_D_H + +#define AuthIdRelationId 1260 +#define AuthIdRelation_Rowtype_Id 2842 + +#define Anum_pg_authid_oid 1 +#define Anum_pg_authid_rolname 2 +#define Anum_pg_authid_rolsuper 3 +#define Anum_pg_authid_rolinherit 4 +#define Anum_pg_authid_rolcreaterole 5 +#define Anum_pg_authid_rolcreatedb 6 +#define Anum_pg_authid_rolcanlogin 7 +#define Anum_pg_authid_rolreplication 8 +#define Anum_pg_authid_rolbypassrls 9 +#define Anum_pg_authid_rolconnlimit 10 +#define Anum_pg_authid_rolpassword 11 +#define Anum_pg_authid_rolvaliduntil 12 + +#define Natts_pg_authid 12 + +#define BOOTSTRAP_SUPERUSERID 10 +#define DEFAULT_ROLE_MONITOR 3373 +#define DEFAULT_ROLE_READ_ALL_SETTINGS 3374 +#define DEFAULT_ROLE_READ_ALL_STATS 3375 +#define DEFAULT_ROLE_STAT_SCAN_TABLES 3377 +#define DEFAULT_ROLE_READ_SERVER_FILES 4569 +#define DEFAULT_ROLE_WRITE_SERVER_FILES 4570 +#define DEFAULT_ROLE_EXECUTE_SERVER_PROGRAM 4571 +#define DEFAULT_ROLE_SIGNAL_BACKENDID 4200 + +#endif /* PG_AUTHID_D_H */ diff --git a/parser/include/catalog/pg_class.h b/parser/include/catalog/pg_class.h index b256657b..78b33b2a 100644 --- a/parser/include/catalog/pg_class.h +++ b/parser/include/catalog/pg_class.h @@ -1,18 +1,17 @@ /*------------------------------------------------------------------------- * * pg_class.h - * definition of the system "relation" relation (pg_class) - * along with the relation's initial contents. + * definition of the "relation" system catalog (pg_class) * * - * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/catalog/pg_class.h * * NOTES - * the genbki.pl script reads this file and generates .bki - * information from the DATA() statements. + * The Catalog.pm module reads this file and derives schema + * information. * *------------------------------------------------------------------------- */ @@ -20,66 +19,125 @@ #define PG_CLASS_H #include "catalog/genbki.h" +#include "catalog/pg_class_d.h" /* ---------------- * pg_class definition. cpp turns this into * typedef struct FormData_pg_class + * + * Note that the BKI_DEFAULT values below are only used for rows describing + * BKI_BOOTSTRAP catalogs, since only those rows appear in pg_class.dat. * ---------------- */ -#define RelationRelationId 1259 -#define RelationRelation_Rowtype_Id 83 - -CATALOG(pg_class,1259) BKI_BOOTSTRAP BKI_ROWTYPE_OID(83) BKI_SCHEMA_MACRO +CATALOG(pg_class,1259,RelationRelationId) BKI_BOOTSTRAP BKI_ROWTYPE_OID(83,RelationRelation_Rowtype_Id) BKI_SCHEMA_MACRO { - NameData relname; /* class name */ - Oid relnamespace; /* OID of namespace containing this class */ - Oid reltype; /* OID of entry in pg_type for table's - * implicit row type */ - Oid reloftype; /* OID of entry in pg_type for underlying - * composite type */ - Oid relowner; /* class owner */ - Oid relam; /* index access method; 0 if not an index */ - Oid relfilenode; /* identifier of physical storage file */ + /* oid */ + Oid oid; + + /* class name */ + NameData relname; + + /* OID of namespace containing this class */ + Oid relnamespace BKI_DEFAULT(PGNSP); + + /* OID of entry in pg_type for table's implicit row type */ + Oid reltype BKI_LOOKUP(pg_type); + + /* OID of entry in pg_type for underlying composite type */ + Oid reloftype BKI_DEFAULT(0) BKI_LOOKUP(pg_type); + + /* class owner */ + Oid relowner BKI_DEFAULT(PGUID); + /* access method; 0 if not a table / index */ + Oid relam BKI_DEFAULT(heap) BKI_LOOKUP(pg_am); + + /* identifier of physical storage file */ /* relfilenode == 0 means it is a "mapped" relation, see relmapper.c */ - Oid reltablespace; /* identifier of table space for relation */ - int32 relpages; /* # of blocks (not always up-to-date) */ - float4 reltuples; /* # of tuples (not always up-to-date) */ - int32 relallvisible; /* # of all-visible blocks (not always - * up-to-date) */ - Oid reltoastrelid; /* OID of toast table; 0 if none */ - bool relhasindex; /* T if has (or has had) any indexes */ - bool relisshared; /* T if shared across databases */ - char relpersistence; /* see RELPERSISTENCE_xxx constants below */ - char relkind; /* see RELKIND_xxx constants below */ - int16 relnatts; /* number of user attributes */ + Oid relfilenode BKI_DEFAULT(0); + + /* identifier of table space for relation (0 means default for database) */ + Oid reltablespace BKI_DEFAULT(0) BKI_LOOKUP(pg_tablespace); + + /* # of blocks (not always up-to-date) */ + int32 relpages BKI_DEFAULT(0); + + /* # of tuples (not always up-to-date) */ + float4 reltuples BKI_DEFAULT(0); + + /* # of all-visible blocks (not always up-to-date) */ + int32 relallvisible BKI_DEFAULT(0); + + /* OID of toast table; 0 if none */ + Oid reltoastrelid BKI_DEFAULT(0); + + /* T if has (or has had) any indexes */ + bool relhasindex BKI_DEFAULT(f); + + /* T if shared across databases */ + bool relisshared BKI_DEFAULT(f); + + /* see RELPERSISTENCE_xxx constants below */ + char relpersistence BKI_DEFAULT(p); + + /* see RELKIND_xxx constants below */ + char relkind BKI_DEFAULT(r); + + /* number of user attributes */ + int16 relnatts BKI_DEFAULT(0); /* genbki.pl will fill this in */ /* * Class pg_attribute must contain exactly "relnatts" user attributes * (with attnums ranging from 1 to relnatts) for this class. It may also * contain entries with negative attnums for system attributes. */ - int16 relchecks; /* # of CHECK constraints for class */ - bool relhasoids; /* T if we generate OIDs for rows of rel */ - bool relhaspkey; /* has (or has had) PRIMARY KEY index */ - bool relhasrules; /* has (or has had) any rules */ - bool relhastriggers; /* has (or has had) any TRIGGERs */ - bool relhassubclass; /* has (or has had) derived classes */ - bool relrowsecurity; /* row security is enabled or not */ - bool relforcerowsecurity; /* row security forced for owners or - * not */ - bool relispopulated; /* matview currently holds query results */ - char relreplident; /* see REPLICA_IDENTITY_xxx constants */ - bool relispartition; /* is relation a partition? */ - TransactionId relfrozenxid; /* all Xids < this are frozen in this rel */ - TransactionId relminmxid; /* all multixacts in this rel are >= this. - * this is really a MultiXactId */ + + /* # of CHECK constraints for class */ + int16 relchecks BKI_DEFAULT(0); + + /* has (or has had) any rules */ + bool relhasrules BKI_DEFAULT(f); + + /* has (or has had) any TRIGGERs */ + bool relhastriggers BKI_DEFAULT(f); + + /* has (or has had) child tables or indexes */ + bool relhassubclass BKI_DEFAULT(f); + + /* row security is enabled or not */ + bool relrowsecurity BKI_DEFAULT(f); + + /* row security forced for owners or not */ + bool relforcerowsecurity BKI_DEFAULT(f); + + /* matview currently holds query results */ + bool relispopulated BKI_DEFAULT(t); + + /* see REPLICA_IDENTITY_xxx constants */ + char relreplident BKI_DEFAULT(n); + + /* is relation a partition? */ + bool relispartition BKI_DEFAULT(f); + + /* heap for rewrite during DDL, link to original rel */ + Oid relrewrite BKI_DEFAULT(0); + + /* all Xids < this are frozen in this rel */ + TransactionId relfrozenxid BKI_DEFAULT(3); /* FirstNormalTransactionId */ + + /* all multixacts in this rel are >= this; it is really a MultiXactId */ + TransactionId relminmxid BKI_DEFAULT(1); /* FirstMultiXactId */ #ifdef CATALOG_VARLEN /* variable-length fields start here */ /* NOTE: These fields are not present in a relcache entry's rd_rel field. */ - aclitem relacl[1]; /* access permissions */ - text reloptions[1]; /* access-method-specific options */ - pg_node_tree relpartbound; /* partition bound node tree */ + /* access permissions */ + aclitem relacl[1] BKI_DEFAULT(_null_); + + /* access-method-specific options */ + text reloptions[1] BKI_DEFAULT(_null_); + + /* partition bound node tree */ + pg_node_tree relpartbound BKI_DEFAULT(_null_); #endif } FormData_pg_class; @@ -94,68 +152,7 @@ CATALOG(pg_class,1259) BKI_BOOTSTRAP BKI_ROWTYPE_OID(83) BKI_SCHEMA_MACRO */ typedef FormData_pg_class *Form_pg_class; -/* ---------------- - * compiler constants for pg_class - * ---------------- - */ - -#define Natts_pg_class 33 -#define Anum_pg_class_relname 1 -#define Anum_pg_class_relnamespace 2 -#define Anum_pg_class_reltype 3 -#define Anum_pg_class_reloftype 4 -#define Anum_pg_class_relowner 5 -#define Anum_pg_class_relam 6 -#define Anum_pg_class_relfilenode 7 -#define Anum_pg_class_reltablespace 8 -#define Anum_pg_class_relpages 9 -#define Anum_pg_class_reltuples 10 -#define Anum_pg_class_relallvisible 11 -#define Anum_pg_class_reltoastrelid 12 -#define Anum_pg_class_relhasindex 13 -#define Anum_pg_class_relisshared 14 -#define Anum_pg_class_relpersistence 15 -#define Anum_pg_class_relkind 16 -#define Anum_pg_class_relnatts 17 -#define Anum_pg_class_relchecks 18 -#define Anum_pg_class_relhasoids 19 -#define Anum_pg_class_relhaspkey 20 -#define Anum_pg_class_relhasrules 21 -#define Anum_pg_class_relhastriggers 22 -#define Anum_pg_class_relhassubclass 23 -#define Anum_pg_class_relrowsecurity 24 -#define Anum_pg_class_relforcerowsecurity 25 -#define Anum_pg_class_relispopulated 26 -#define Anum_pg_class_relreplident 27 -#define Anum_pg_class_relispartition 28 -#define Anum_pg_class_relfrozenxid 29 -#define Anum_pg_class_relminmxid 30 -#define Anum_pg_class_relacl 31 -#define Anum_pg_class_reloptions 32 -#define Anum_pg_class_relpartbound 33 - -/* ---------------- - * initial contents of pg_class - * - * NOTE: only "bootstrapped" relations need to be declared here. Be sure that - * the OIDs listed here match those given in their CATALOG macros, and that - * the relnatts values are correct. - * ---------------- - */ - -/* - * Note: "3" in the relfrozenxid column stands for FirstNormalTransactionId; - * similarly, "1" in relminmxid stands for FirstMultiXactId - */ -DATA(insert OID = 1247 ( pg_type PGNSP 71 0 PGUID 0 0 0 0 0 0 0 f f p r 30 0 t f f f f f f t n f 3 1 _null_ _null_ _null_)); -DESCR(""); -DATA(insert OID = 1249 ( pg_attribute PGNSP 75 0 PGUID 0 0 0 0 0 0 0 f f p r 22 0 f f f f f f f t n f 3 1 _null_ _null_ _null_)); -DESCR(""); -DATA(insert OID = 1255 ( pg_proc PGNSP 81 0 PGUID 0 0 0 0 0 0 0 f f p r 29 0 t f f f f f f t n f 3 1 _null_ _null_ _null_)); -DESCR(""); -DATA(insert OID = 1259 ( pg_class PGNSP 83 0 PGUID 0 0 0 0 0 0 0 f f p r 33 0 t f f f f f f t n f 3 1 _null_ _null_ _null_)); -DESCR(""); - +#ifdef EXPOSE_TO_CLIENT_CODE #define RELKIND_RELATION 'r' /* ordinary table */ #define RELKIND_INDEX 'i' /* secondary index */ @@ -166,6 +163,7 @@ DESCR(""); #define RELKIND_COMPOSITE_TYPE 'c' /* composite type */ #define RELKIND_FOREIGN_TABLE 'f' /* foreign table */ #define RELKIND_PARTITIONED_TABLE 'p' /* partitioned table */ +#define RELKIND_PARTITIONED_INDEX 'I' /* partitioned index */ #define RELPERSISTENCE_PERMANENT 'p' /* regular table */ #define RELPERSISTENCE_UNLOGGED 'u' /* unlogged permanent table */ @@ -184,4 +182,19 @@ DESCR(""); */ #define REPLICA_IDENTITY_INDEX 'i' +/* + * Relation kinds that have physical storage. These relations normally have + * relfilenode set to non-zero, but it can also be zero if the relation is + * mapped. + */ +#define RELKIND_HAS_STORAGE(relkind) \ + ((relkind) == RELKIND_RELATION || \ + (relkind) == RELKIND_INDEX || \ + (relkind) == RELKIND_SEQUENCE || \ + (relkind) == RELKIND_TOASTVALUE || \ + (relkind) == RELKIND_MATVIEW) + + +#endif /* EXPOSE_TO_CLIENT_CODE */ + #endif /* PG_CLASS_H */ diff --git a/parser/include/catalog/pg_class_d.h b/parser/include/catalog/pg_class_d.h new file mode 100644 index 00000000..7f9a66c8 --- /dev/null +++ b/parser/include/catalog/pg_class_d.h @@ -0,0 +1,103 @@ +/*------------------------------------------------------------------------- + * + * pg_class_d.h + * Macro definitions for pg_class + * + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group + * Portions Copyright (c) 1994, Regents of the University of California + * + * NOTES + * ****************************** + * *** DO NOT EDIT THIS FILE! *** + * ****************************** + * + * It has been GENERATED by src/backend/catalog/genbki.pl + * + *------------------------------------------------------------------------- + */ +#ifndef PG_CLASS_D_H +#define PG_CLASS_D_H + +#define RelationRelationId 1259 +#define RelationRelation_Rowtype_Id 83 + +#define Anum_pg_class_oid 1 +#define Anum_pg_class_relname 2 +#define Anum_pg_class_relnamespace 3 +#define Anum_pg_class_reltype 4 +#define Anum_pg_class_reloftype 5 +#define Anum_pg_class_relowner 6 +#define Anum_pg_class_relam 7 +#define Anum_pg_class_relfilenode 8 +#define Anum_pg_class_reltablespace 9 +#define Anum_pg_class_relpages 10 +#define Anum_pg_class_reltuples 11 +#define Anum_pg_class_relallvisible 12 +#define Anum_pg_class_reltoastrelid 13 +#define Anum_pg_class_relhasindex 14 +#define Anum_pg_class_relisshared 15 +#define Anum_pg_class_relpersistence 16 +#define Anum_pg_class_relkind 17 +#define Anum_pg_class_relnatts 18 +#define Anum_pg_class_relchecks 19 +#define Anum_pg_class_relhasrules 20 +#define Anum_pg_class_relhastriggers 21 +#define Anum_pg_class_relhassubclass 22 +#define Anum_pg_class_relrowsecurity 23 +#define Anum_pg_class_relforcerowsecurity 24 +#define Anum_pg_class_relispopulated 25 +#define Anum_pg_class_relreplident 26 +#define Anum_pg_class_relispartition 27 +#define Anum_pg_class_relrewrite 28 +#define Anum_pg_class_relfrozenxid 29 +#define Anum_pg_class_relminmxid 30 +#define Anum_pg_class_relacl 31 +#define Anum_pg_class_reloptions 32 +#define Anum_pg_class_relpartbound 33 + +#define Natts_pg_class 33 + + +#define RELKIND_RELATION 'r' /* ordinary table */ +#define RELKIND_INDEX 'i' /* secondary index */ +#define RELKIND_SEQUENCE 'S' /* sequence object */ +#define RELKIND_TOASTVALUE 't' /* for out-of-line values */ +#define RELKIND_VIEW 'v' /* view */ +#define RELKIND_MATVIEW 'm' /* materialized view */ +#define RELKIND_COMPOSITE_TYPE 'c' /* composite type */ +#define RELKIND_FOREIGN_TABLE 'f' /* foreign table */ +#define RELKIND_PARTITIONED_TABLE 'p' /* partitioned table */ +#define RELKIND_PARTITIONED_INDEX 'I' /* partitioned index */ + +#define RELPERSISTENCE_PERMANENT 'p' /* regular table */ +#define RELPERSISTENCE_UNLOGGED 'u' /* unlogged permanent table */ +#define RELPERSISTENCE_TEMP 't' /* temporary table */ + +/* default selection for replica identity (primary key or nothing) */ +#define REPLICA_IDENTITY_DEFAULT 'd' +/* no replica identity is logged for this relation */ +#define REPLICA_IDENTITY_NOTHING 'n' +/* all columns are logged as replica identity */ +#define REPLICA_IDENTITY_FULL 'f' +/* + * an explicitly chosen candidate key's columns are used as replica identity. + * Note this will still be set if the index has been dropped; in that case it + * has the same meaning as 'd'. + */ +#define REPLICA_IDENTITY_INDEX 'i' + +/* + * Relation kinds that have physical storage. These relations normally have + * relfilenode set to non-zero, but it can also be zero if the relation is + * mapped. + */ +#define RELKIND_HAS_STORAGE(relkind) \ + ((relkind) == RELKIND_RELATION || \ + (relkind) == RELKIND_INDEX || \ + (relkind) == RELKIND_SEQUENCE || \ + (relkind) == RELKIND_TOASTVALUE || \ + (relkind) == RELKIND_MATVIEW) + + + +#endif /* PG_CLASS_D_H */ diff --git a/parser/include/catalog/pg_collation.h b/parser/include/catalog/pg_collation.h index 0cac7cae..6955bb12 100644 --- a/parser/include/catalog/pg_collation.h +++ b/parser/include/catalog/pg_collation.h @@ -1,19 +1,17 @@ /*------------------------------------------------------------------------- * * pg_collation.h - * definition of the system "collation" relation (pg_collation) - * along with the relation's initial contents. + * definition of the "collation" system catalog (pg_collation) * * - * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * - * IDENTIFICATION - * src/include/catalog/pg_collation.h + * src/include/catalog/pg_collation.h * * NOTES - * the genbki.pl script reads this file and generates .bki - * information from the DATA() statements. + * The Catalog.pm module reads this file and derives schema + * information. * *------------------------------------------------------------------------- */ @@ -21,20 +19,21 @@ #define PG_COLLATION_H #include "catalog/genbki.h" +#include "catalog/pg_collation_d.h" /* ---------------- * pg_collation definition. cpp turns this into * typedef struct FormData_pg_collation * ---------------- */ -#define CollationRelationId 3456 - -CATALOG(pg_collation,3456) +CATALOG(pg_collation,3456,CollationRelationId) { + Oid oid; /* oid */ NameData collname; /* collation name */ Oid collnamespace; /* OID of namespace containing collation */ Oid collowner; /* owner of collation */ char collprovider; /* see constants below */ + bool collisdeterministic BKI_DEFAULT(t); int32 collencoding; /* encoding for this collation; -1 = "all" */ NameData collcollate; /* LC_COLLATE setting */ NameData collctype; /* LC_CTYPE setting */ @@ -51,38 +50,24 @@ CATALOG(pg_collation,3456) */ typedef FormData_pg_collation *Form_pg_collation; -/* ---------------- - * compiler constants for pg_collation - * ---------------- - */ -#define Natts_pg_collation 8 -#define Anum_pg_collation_collname 1 -#define Anum_pg_collation_collnamespace 2 -#define Anum_pg_collation_collowner 3 -#define Anum_pg_collation_collprovider 4 -#define Anum_pg_collation_collencoding 5 -#define Anum_pg_collation_collcollate 6 -#define Anum_pg_collation_collctype 7 -#define Anum_pg_collation_collversion 8 - -/* ---------------- - * initial contents of pg_collation - * ---------------- - */ - -DATA(insert OID = 100 ( default PGNSP PGUID d -1 "" "" _null_ )); -DESCR("database's default collation"); -#define DEFAULT_COLLATION_OID 100 -DATA(insert OID = 950 ( C PGNSP PGUID c -1 "C" "C" _null_ )); -DESCR("standard C collation"); -#define C_COLLATION_OID 950 -DATA(insert OID = 951 ( POSIX PGNSP PGUID c -1 "POSIX" "POSIX" _null_ )); -DESCR("standard POSIX collation"); -#define POSIX_COLLATION_OID 951 - +#ifdef EXPOSE_TO_CLIENT_CODE #define COLLPROVIDER_DEFAULT 'd' #define COLLPROVIDER_ICU 'i' #define COLLPROVIDER_LIBC 'c' +#endif /* EXPOSE_TO_CLIENT_CODE */ + + +extern Oid CollationCreate(const char *collname, Oid collnamespace, + Oid collowner, + char collprovider, + bool collisdeterministic, + int32 collencoding, + const char *collcollate, const char *collctype, + const char *collversion, + bool if_not_exists, + bool quiet); +extern void RemoveCollationById(Oid collationOid); + #endif /* PG_COLLATION_H */ diff --git a/parser/include/catalog/pg_collation_d.h b/parser/include/catalog/pg_collation_d.h new file mode 100644 index 00000000..e7545ff0 --- /dev/null +++ b/parser/include/catalog/pg_collation_d.h @@ -0,0 +1,45 @@ +/*------------------------------------------------------------------------- + * + * pg_collation_d.h + * Macro definitions for pg_collation + * + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group + * Portions Copyright (c) 1994, Regents of the University of California + * + * NOTES + * ****************************** + * *** DO NOT EDIT THIS FILE! *** + * ****************************** + * + * It has been GENERATED by src/backend/catalog/genbki.pl + * + *------------------------------------------------------------------------- + */ +#ifndef PG_COLLATION_D_H +#define PG_COLLATION_D_H + +#define CollationRelationId 3456 + +#define Anum_pg_collation_oid 1 +#define Anum_pg_collation_collname 2 +#define Anum_pg_collation_collnamespace 3 +#define Anum_pg_collation_collowner 4 +#define Anum_pg_collation_collprovider 5 +#define Anum_pg_collation_collisdeterministic 6 +#define Anum_pg_collation_collencoding 7 +#define Anum_pg_collation_collcollate 8 +#define Anum_pg_collation_collctype 9 +#define Anum_pg_collation_collversion 10 + +#define Natts_pg_collation 10 + + +#define COLLPROVIDER_DEFAULT 'd' +#define COLLPROVIDER_ICU 'i' +#define COLLPROVIDER_LIBC 'c' + +#define DEFAULT_COLLATION_OID 100 +#define C_COLLATION_OID 950 +#define POSIX_COLLATION_OID 951 + +#endif /* PG_COLLATION_D_H */ diff --git a/parser/include/catalog/pg_constraint.h b/parser/include/catalog/pg_constraint.h index ec035d84..9600ece9 100644 --- a/parser/include/catalog/pg_constraint.h +++ b/parser/include/catalog/pg_constraint.h @@ -1,35 +1,37 @@ /*------------------------------------------------------------------------- * * pg_constraint.h - * definition of the system "constraint" relation (pg_constraint) - * along with the relation's initial contents. + * definition of the "constraint" system catalog (pg_constraint) * * - * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/catalog/pg_constraint.h * * NOTES - * the genbki.pl script reads this file and generates .bki - * information from the DATA() statements. + * The Catalog.pm module reads this file and derives schema + * information. * *------------------------------------------------------------------------- */ #ifndef PG_CONSTRAINT_H #define PG_CONSTRAINT_H +#include "catalog/dependency.h" #include "catalog/genbki.h" +#include "catalog/pg_constraint_d.h" +#include "nodes/pg_list.h" /* ---------------- * pg_constraint definition. cpp turns this into * typedef struct FormData_pg_constraint * ---------------- */ -#define ConstraintRelationId 2606 - -CATALOG(pg_constraint,2606) +CATALOG(pg_constraint,2606,ConstraintRelationId) { + Oid oid; /* oid */ + /* * conname + connamespace is deliberately not unique; we allow, for * example, the same name to be used for constraints of different @@ -38,6 +40,10 @@ CATALOG(pg_constraint,2606) * global lock to generate a globally unique name for a nameless * constraint. We associate a namespace with constraint names only for * SQL-spec compatibility. + * + * However, we do require conname to be unique among the constraints of a + * single relation or domain. This is enforced by a unique index on + * conrelid + contypid + conname. */ NameData conname; /* name of this constraint */ Oid connamespace; /* OID of namespace containing constraint */ @@ -72,6 +78,12 @@ CATALOG(pg_constraint,2606) */ Oid conindid; /* index supporting this constraint */ + /* + * If this constraint is on a partition inherited from a partitioned + * table, this is the OID of the corresponding constraint in the parent. + */ + Oid conparentid; + /* * These fields, plus confkey, are only meaningful for a foreign-key * constraint. Otherwise confrelid is 0 and the char fields are spaces. @@ -131,11 +143,6 @@ CATALOG(pg_constraint,2606) * If a check constraint, nodeToString representation of expression */ pg_node_tree conbin; - - /* - * If a check constraint, source-text representation of expression - */ - text consrc; #endif } FormData_pg_constraint; @@ -146,43 +153,7 @@ CATALOG(pg_constraint,2606) */ typedef FormData_pg_constraint *Form_pg_constraint; -/* ---------------- - * compiler constants for pg_constraint - * ---------------- - */ -#define Natts_pg_constraint 24 -#define Anum_pg_constraint_conname 1 -#define Anum_pg_constraint_connamespace 2 -#define Anum_pg_constraint_contype 3 -#define Anum_pg_constraint_condeferrable 4 -#define Anum_pg_constraint_condeferred 5 -#define Anum_pg_constraint_convalidated 6 -#define Anum_pg_constraint_conrelid 7 -#define Anum_pg_constraint_contypid 8 -#define Anum_pg_constraint_conindid 9 -#define Anum_pg_constraint_confrelid 10 -#define Anum_pg_constraint_confupdtype 11 -#define Anum_pg_constraint_confdeltype 12 -#define Anum_pg_constraint_confmatchtype 13 -#define Anum_pg_constraint_conislocal 14 -#define Anum_pg_constraint_coninhcount 15 -#define Anum_pg_constraint_connoinherit 16 -#define Anum_pg_constraint_conkey 17 -#define Anum_pg_constraint_confkey 18 -#define Anum_pg_constraint_conpfeqop 19 -#define Anum_pg_constraint_conppeqop 20 -#define Anum_pg_constraint_conffeqop 21 -#define Anum_pg_constraint_conexclop 22 -#define Anum_pg_constraint_conbin 23 -#define Anum_pg_constraint_consrc 24 - -/* ---------------- - * initial contents of pg_constraint - * ---------------- - */ - -/* nothing, at present */ - +#ifdef EXPOSE_TO_CLIENT_CODE /* Valid values for contype */ #define CONSTRAINT_CHECK 'c' @@ -198,4 +169,79 @@ typedef FormData_pg_constraint *Form_pg_constraint; * the FKCONSTR_MATCH_xxx constants defined in parsenodes.h. */ +#endif /* EXPOSE_TO_CLIENT_CODE */ + +/* + * Identify constraint type for lookup purposes + */ +typedef enum ConstraintCategory +{ + CONSTRAINT_RELATION, + CONSTRAINT_DOMAIN, + CONSTRAINT_ASSERTION /* for future expansion */ +} ConstraintCategory; + + +extern Oid CreateConstraintEntry(const char *constraintName, + Oid constraintNamespace, + char constraintType, + bool isDeferrable, + bool isDeferred, + bool isValidated, + Oid parentConstrId, + Oid relId, + const int16 *constraintKey, + int constraintNKeys, + int constraintNTotalKeys, + Oid domainId, + Oid indexRelId, + Oid foreignRelId, + const int16 *foreignKey, + const Oid *pfEqOp, + const Oid *ppEqOp, + const Oid *ffEqOp, + int foreignNKeys, + char foreignUpdateType, + char foreignDeleteType, + char foreignMatchType, + const Oid *exclOp, + Node *conExpr, + const char *conBin, + bool conIsLocal, + int conInhCount, + bool conNoInherit, + bool is_internal); + +extern void RemoveConstraintById(Oid conId); +extern void RenameConstraintById(Oid conId, const char *newname); + +extern bool ConstraintNameIsUsed(ConstraintCategory conCat, Oid objId, + const char *conname); +extern bool ConstraintNameExists(const char *conname, Oid namespaceid); +extern char *ChooseConstraintName(const char *name1, const char *name2, + const char *label, Oid namespaceid, + List *others); + +extern void AlterConstraintNamespaces(Oid ownerId, Oid oldNspId, + Oid newNspId, bool isType, ObjectAddresses *objsMoved); +extern void ConstraintSetParentConstraint(Oid childConstrId, + Oid parentConstrId, + Oid childTableId); +extern Oid get_relation_constraint_oid(Oid relid, const char *conname, bool missing_ok); +extern Bitmapset *get_relation_constraint_attnos(Oid relid, const char *conname, + bool missing_ok, Oid *constraintOid); +extern Oid get_domain_constraint_oid(Oid typid, const char *conname, bool missing_ok); +extern Oid get_relation_idx_constraint_oid(Oid relationId, Oid indexId); + +extern Bitmapset *get_primary_key_attnos(Oid relid, bool deferrableOk, + Oid *constraintOid); +extern void DeconstructFkConstraintRow(HeapTuple tuple, int *numfks, + AttrNumber *conkey, AttrNumber *confkey, + Oid *pf_eq_oprs, Oid *pp_eq_oprs, Oid *ff_eq_oprs); + +extern bool check_functional_grouping(Oid relid, + Index varno, Index varlevelsup, + List *grouping_columns, + List **constraintDeps); + #endif /* PG_CONSTRAINT_H */ diff --git a/parser/include/catalog/pg_constraint_d.h b/parser/include/catalog/pg_constraint_d.h new file mode 100644 index 00000000..3d98c62e --- /dev/null +++ b/parser/include/catalog/pg_constraint_d.h @@ -0,0 +1,67 @@ +/*------------------------------------------------------------------------- + * + * pg_constraint_d.h + * Macro definitions for pg_constraint + * + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group + * Portions Copyright (c) 1994, Regents of the University of California + * + * NOTES + * ****************************** + * *** DO NOT EDIT THIS FILE! *** + * ****************************** + * + * It has been GENERATED by src/backend/catalog/genbki.pl + * + *------------------------------------------------------------------------- + */ +#ifndef PG_CONSTRAINT_D_H +#define PG_CONSTRAINT_D_H + +#define ConstraintRelationId 2606 + +#define Anum_pg_constraint_oid 1 +#define Anum_pg_constraint_conname 2 +#define Anum_pg_constraint_connamespace 3 +#define Anum_pg_constraint_contype 4 +#define Anum_pg_constraint_condeferrable 5 +#define Anum_pg_constraint_condeferred 6 +#define Anum_pg_constraint_convalidated 7 +#define Anum_pg_constraint_conrelid 8 +#define Anum_pg_constraint_contypid 9 +#define Anum_pg_constraint_conindid 10 +#define Anum_pg_constraint_conparentid 11 +#define Anum_pg_constraint_confrelid 12 +#define Anum_pg_constraint_confupdtype 13 +#define Anum_pg_constraint_confdeltype 14 +#define Anum_pg_constraint_confmatchtype 15 +#define Anum_pg_constraint_conislocal 16 +#define Anum_pg_constraint_coninhcount 17 +#define Anum_pg_constraint_connoinherit 18 +#define Anum_pg_constraint_conkey 19 +#define Anum_pg_constraint_confkey 20 +#define Anum_pg_constraint_conpfeqop 21 +#define Anum_pg_constraint_conppeqop 22 +#define Anum_pg_constraint_conffeqop 23 +#define Anum_pg_constraint_conexclop 24 +#define Anum_pg_constraint_conbin 25 + +#define Natts_pg_constraint 25 + + +/* Valid values for contype */ +#define CONSTRAINT_CHECK 'c' +#define CONSTRAINT_FOREIGN 'f' +#define CONSTRAINT_PRIMARY 'p' +#define CONSTRAINT_UNIQUE 'u' +#define CONSTRAINT_TRIGGER 't' +#define CONSTRAINT_EXCLUSION 'x' + +/* + * Valid values for confupdtype and confdeltype are the FKCONSTR_ACTION_xxx + * constants defined in parsenodes.h. Valid values for confmatchtype are + * the FKCONSTR_MATCH_xxx constants defined in parsenodes.h. + */ + + +#endif /* PG_CONSTRAINT_D_H */ diff --git a/parser/include/catalog/pg_control.h b/parser/include/catalog/pg_control.h index 77b7a5e5..de5670e5 100644 --- a/parser/include/catalog/pg_control.h +++ b/parser/include/catalog/pg_control.h @@ -5,7 +5,7 @@ * However, we define it here so that the format is documented. * * - * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/catalog/pg_control.h @@ -15,13 +15,14 @@ #ifndef PG_CONTROL_H #define PG_CONTROL_H +#include "access/transam.h" #include "access/xlogdefs.h" #include "pgtime.h" /* for pg_time_t */ #include "port/pg_crc32c.h" /* Version identifier for this pg_control format */ -#define PG_CONTROL_VERSION 1002 +#define PG_CONTROL_VERSION 1300 /* Nonce key length, see below */ #define MOCK_AUTH_NONCE_LEN 32 @@ -39,8 +40,7 @@ typedef struct CheckPoint TimeLineID PrevTimeLineID; /* previous TLI, if this record begins a new * timeline (equals ThisTimeLineID otherwise) */ bool fullPageWrites; /* current full_page_writes */ - uint32 nextXidEpoch; /* higher-order bits of nextXid */ - TransactionId nextXid; /* next free XID */ + FullTransactionId nextFullXid; /* next free full transaction ID */ Oid nextOid; /* next free OID */ MultiXactId nextMulti; /* next free MultiXactId */ MultiXactOffset nextMultiOffset; /* next free MultiXact offset */ @@ -76,7 +76,6 @@ typedef struct CheckPoint #define XLOG_END_OF_RECOVERY 0x90 #define XLOG_FPI_FOR_HINT 0xA0 #define XLOG_FPI 0xB0 -#define XLOG_FPI_MULTI 0xC0 /* @@ -128,7 +127,6 @@ typedef struct ControlFileData DBState state; /* see enum above */ pg_time_t time; /* time stamp of last pg_control update */ XLogRecPtr checkPoint; /* last check point record ptr */ - XLogRecPtr prevCheckPoint; /* previous check point record ptr */ CheckPoint checkPointCopy; /* copy of last check point record */ @@ -179,6 +177,7 @@ typedef struct ControlFileData bool wal_log_hints; int MaxConnections; int max_worker_processes; + int max_wal_senders; int max_prepared_xacts; int max_locks_per_xact; bool track_commit_timestamp; @@ -215,8 +214,6 @@ typedef struct ControlFileData uint32 toast_max_chunk_size; /* chunk size in TOAST tables */ uint32 loblksize; /* chunk size in pg_largeobject */ - /* flags indicating pass-by-value status of various types */ - bool float4ByVal; /* float4 pass-by-value? */ bool float8ByVal; /* float8, int8, etc pass-by-value? */ /* Are data pages protected by checksums? Zero if no checksum version */ diff --git a/parser/include/catalog/pg_conversion.h b/parser/include/catalog/pg_conversion.h index 0682d7eb..0e7f13e1 100644 --- a/parser/include/catalog/pg_conversion.h +++ b/parser/include/catalog/pg_conversion.h @@ -1,18 +1,16 @@ /*------------------------------------------------------------------------- * * pg_conversion.h - * definition of the system "conversion" relation (pg_conversion) - * along with the relation's initial contents. + * definition of the "conversion" system catalog (pg_conversion) * - * - * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/catalog/pg_conversion.h * * NOTES - * the genbki.pl script reads this file and generates .bki - * information from the DATA() statements. + * The Catalog.pm module reads this file and derives schema + * information. * *------------------------------------------------------------------------- */ @@ -20,32 +18,39 @@ #define PG_CONVERSION_H #include "catalog/genbki.h" +#include "catalog/objectaddress.h" +#include "catalog/pg_conversion_d.h" -/* ---------------------------------------------------------------- - * pg_conversion definition. - * - * cpp turns this into typedef struct FormData_pg_namespace - * - * conname name of the conversion - * connamespace name space which the conversion belongs to - * conowner owner of the conversion - * conforencoding FOR encoding id - * contoencoding TO encoding id - * conproc OID of the conversion proc - * condefault TRUE if this is a default conversion - * ---------------------------------------------------------------- +/* ---------------- + * pg_conversion definition. cpp turns this into + * typedef struct FormData_pg_conversion + * ---------------- */ -#define ConversionRelationId 2607 - -CATALOG(pg_conversion,2607) +CATALOG(pg_conversion,2607,ConversionRelationId) { + /* oid */ + Oid oid; + + /* name of the conversion */ NameData conname; - Oid connamespace; - Oid conowner; - int32 conforencoding; - int32 contoencoding; - regproc conproc; - bool condefault; + + /* namespace that the conversion belongs to */ + Oid connamespace BKI_DEFAULT(PGNSP); + + /* owner of the conversion */ + Oid conowner BKI_DEFAULT(PGUID); + + /* FOR encoding id */ + int32 conforencoding BKI_LOOKUP(encoding); + + /* TO encoding id */ + int32 contoencoding BKI_LOOKUP(encoding); + + /* OID of the conversion proc */ + regproc conproc BKI_LOOKUP(pg_proc); + + /* true if this is a default conversion */ + bool condefault BKI_DEFAULT(t); } FormData_pg_conversion; /* ---------------- @@ -55,23 +60,13 @@ CATALOG(pg_conversion,2607) */ typedef FormData_pg_conversion *Form_pg_conversion; -/* ---------------- - * compiler constants for pg_conversion - * ---------------- - */ - -#define Natts_pg_conversion 7 -#define Anum_pg_conversion_conname 1 -#define Anum_pg_conversion_connamespace 2 -#define Anum_pg_conversion_conowner 3 -#define Anum_pg_conversion_conforencoding 4 -#define Anum_pg_conversion_contoencoding 5 -#define Anum_pg_conversion_conproc 6 -#define Anum_pg_conversion_condefault 7 -/* ---------------- - * initial contents of pg_conversion - * --------------- - */ +extern ObjectAddress ConversionCreate(const char *conname, Oid connamespace, + Oid conowner, + int32 conforencoding, int32 contoencoding, + Oid conproc, bool def); +extern void RemoveConversionById(Oid conversionOid); +extern Oid FindDefaultConversion(Oid connamespace, int32 for_encoding, + int32 to_encoding); #endif /* PG_CONVERSION_H */ diff --git a/parser/include/catalog/pg_conversion_d.h b/parser/include/catalog/pg_conversion_d.h new file mode 100644 index 00000000..c9918718 --- /dev/null +++ b/parser/include/catalog/pg_conversion_d.h @@ -0,0 +1,35 @@ +/*------------------------------------------------------------------------- + * + * pg_conversion_d.h + * Macro definitions for pg_conversion + * + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group + * Portions Copyright (c) 1994, Regents of the University of California + * + * NOTES + * ****************************** + * *** DO NOT EDIT THIS FILE! *** + * ****************************** + * + * It has been GENERATED by src/backend/catalog/genbki.pl + * + *------------------------------------------------------------------------- + */ +#ifndef PG_CONVERSION_D_H +#define PG_CONVERSION_D_H + +#define ConversionRelationId 2607 + +#define Anum_pg_conversion_oid 1 +#define Anum_pg_conversion_conname 2 +#define Anum_pg_conversion_connamespace 3 +#define Anum_pg_conversion_conowner 4 +#define Anum_pg_conversion_conforencoding 5 +#define Anum_pg_conversion_contoencoding 6 +#define Anum_pg_conversion_conproc 7 +#define Anum_pg_conversion_condefault 8 + +#define Natts_pg_conversion 8 + + +#endif /* PG_CONVERSION_D_H */ diff --git a/parser/include/catalog/pg_conversion_fn.h b/parser/include/catalog/pg_conversion_fn.h deleted file mode 100644 index 7074bcf1..00000000 --- a/parser/include/catalog/pg_conversion_fn.h +++ /dev/null @@ -1,27 +0,0 @@ -/*------------------------------------------------------------------------- - * - * pg_conversion_fn.h - * prototypes for functions in catalog/pg_conversion.c - * - * - * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group - * Portions Copyright (c) 1994, Regents of the University of California - * - * src/include/catalog/pg_conversion_fn.h - * - *------------------------------------------------------------------------- - */ -#ifndef PG_CONVERSION_FN_H -#define PG_CONVERSION_FN_H - - -#include "catalog/objectaddress.h" - -extern ObjectAddress ConversionCreate(const char *conname, Oid connamespace, - Oid conowner, - int32 conforencoding, int32 contoencoding, - Oid conproc, bool def); -extern void RemoveConversionById(Oid conversionOid); -extern Oid FindDefaultConversion(Oid connamespace, int32 for_encoding, int32 to_encoding); - -#endif /* PG_CONVERSION_FN_H */ diff --git a/parser/include/catalog/pg_depend.h b/parser/include/catalog/pg_depend.h index 8bda78d9..ccf0a983 100644 --- a/parser/include/catalog/pg_depend.h +++ b/parser/include/catalog/pg_depend.h @@ -1,18 +1,29 @@ /*------------------------------------------------------------------------- * * pg_depend.h - * definition of the system "dependency" relation (pg_depend) - * along with the relation's initial contents. + * definition of the "dependency" system catalog (pg_depend) * + * pg_depend has no preloaded contents, so there is no pg_depend.dat + * file; system-defined dependencies are loaded into it during a late stage + * of the initdb process. * - * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group + * NOTE: we do not represent all possible dependency pairs in pg_depend; + * for example, there's not much value in creating an explicit dependency + * from an attribute to its relation. Usually we make a dependency for + * cases where the relationship is conditional rather than essential + * (for example, not all triggers are dependent on constraints, but all + * attributes are dependent on relations) or where the dependency is not + * convenient to find from the contents of other catalogs. + * + * + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/catalog/pg_depend.h * * NOTES - * the genbki.pl script reads this file and generates .bki - * information from the DATA() statements. + * The Catalog.pm module reads this file and derives schema + * information. * *------------------------------------------------------------------------- */ @@ -20,15 +31,14 @@ #define PG_DEPEND_H #include "catalog/genbki.h" +#include "catalog/pg_depend_d.h" /* ---------------- * pg_depend definition. cpp turns this into * typedef struct FormData_pg_depend * ---------------- */ -#define DependRelationId 2608 - -CATALOG(pg_depend,2608) BKI_WITHOUT_OIDS +CATALOG(pg_depend,2608,DependRelationId) { /* * Identification of the dependent (referencing) object. @@ -60,31 +70,4 @@ CATALOG(pg_depend,2608) BKI_WITHOUT_OIDS */ typedef FormData_pg_depend *Form_pg_depend; -/* ---------------- - * compiler constants for pg_depend - * ---------------- - */ -#define Natts_pg_depend 7 -#define Anum_pg_depend_classid 1 -#define Anum_pg_depend_objid 2 -#define Anum_pg_depend_objsubid 3 -#define Anum_pg_depend_refclassid 4 -#define Anum_pg_depend_refobjid 5 -#define Anum_pg_depend_refobjsubid 6 -#define Anum_pg_depend_deptype 7 - - -/* - * pg_depend has no preloaded contents; system-defined dependencies are - * loaded into it during a late stage of the initdb process. - * - * NOTE: we do not represent all possible dependency pairs in pg_depend; - * for example, there's not much value in creating an explicit dependency - * from an attribute to its relation. Usually we make a dependency for - * cases where the relationship is conditional rather than essential - * (for example, not all triggers are dependent on constraints, but all - * attributes are dependent on relations) or where the dependency is not - * convenient to find from the contents of other catalogs. - */ - #endif /* PG_DEPEND_H */ diff --git a/parser/include/catalog/pg_depend_d.h b/parser/include/catalog/pg_depend_d.h new file mode 100644 index 00000000..c0bbe9a9 --- /dev/null +++ b/parser/include/catalog/pg_depend_d.h @@ -0,0 +1,34 @@ +/*------------------------------------------------------------------------- + * + * pg_depend_d.h + * Macro definitions for pg_depend + * + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group + * Portions Copyright (c) 1994, Regents of the University of California + * + * NOTES + * ****************************** + * *** DO NOT EDIT THIS FILE! *** + * ****************************** + * + * It has been GENERATED by src/backend/catalog/genbki.pl + * + *------------------------------------------------------------------------- + */ +#ifndef PG_DEPEND_D_H +#define PG_DEPEND_D_H + +#define DependRelationId 2608 + +#define Anum_pg_depend_classid 1 +#define Anum_pg_depend_objid 2 +#define Anum_pg_depend_objsubid 3 +#define Anum_pg_depend_refclassid 4 +#define Anum_pg_depend_refobjid 5 +#define Anum_pg_depend_refobjsubid 6 +#define Anum_pg_depend_deptype 7 + +#define Natts_pg_depend 7 + + +#endif /* PG_DEPEND_D_H */ diff --git a/parser/include/catalog/pg_event_trigger.h b/parser/include/catalog/pg_event_trigger.h index f9f568b2..24e4b1a1 100644 --- a/parser/include/catalog/pg_event_trigger.h +++ b/parser/include/catalog/pg_event_trigger.h @@ -1,18 +1,17 @@ /*------------------------------------------------------------------------- * * pg_event_trigger.h - * definition of the system "event trigger" relation (pg_event_trigger) - * along with the relation's initial contents. + * definition of the "event trigger" system catalog (pg_event_trigger) * * - * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/catalog/pg_event_trigger.h * * NOTES - * the genbki.pl script reads this file and generates .bki - * information from the DATA() statements. + * The Catalog.pm module reads this file and derives schema + * information. * *------------------------------------------------------------------------- */ @@ -20,16 +19,16 @@ #define PG_EVENT_TRIGGER_H #include "catalog/genbki.h" +#include "catalog/pg_event_trigger_d.h" /* ---------------- * pg_event_trigger definition. cpp turns this into * typedef struct FormData_pg_event_trigger * ---------------- */ -#define EventTriggerRelationId 3466 - -CATALOG(pg_event_trigger,3466) +CATALOG(pg_event_trigger,3466,EventTriggerRelationId) { + Oid oid; /* oid */ NameData evtname; /* trigger's name */ NameData evtevent; /* trigger's event */ Oid evtowner; /* trigger's owner */ @@ -49,16 +48,4 @@ CATALOG(pg_event_trigger,3466) */ typedef FormData_pg_event_trigger *Form_pg_event_trigger; -/* ---------------- - * compiler constants for pg_event_trigger - * ---------------- - */ -#define Natts_pg_event_trigger 6 -#define Anum_pg_event_trigger_evtname 1 -#define Anum_pg_event_trigger_evtevent 2 -#define Anum_pg_event_trigger_evtowner 3 -#define Anum_pg_event_trigger_evtfoid 4 -#define Anum_pg_event_trigger_evtenabled 5 -#define Anum_pg_event_trigger_evttags 6 - #endif /* PG_EVENT_TRIGGER_H */ diff --git a/parser/include/catalog/pg_event_trigger_d.h b/parser/include/catalog/pg_event_trigger_d.h new file mode 100644 index 00000000..aa8aaa25 --- /dev/null +++ b/parser/include/catalog/pg_event_trigger_d.h @@ -0,0 +1,34 @@ +/*------------------------------------------------------------------------- + * + * pg_event_trigger_d.h + * Macro definitions for pg_event_trigger + * + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group + * Portions Copyright (c) 1994, Regents of the University of California + * + * NOTES + * ****************************** + * *** DO NOT EDIT THIS FILE! *** + * ****************************** + * + * It has been GENERATED by src/backend/catalog/genbki.pl + * + *------------------------------------------------------------------------- + */ +#ifndef PG_EVENT_TRIGGER_D_H +#define PG_EVENT_TRIGGER_D_H + +#define EventTriggerRelationId 3466 + +#define Anum_pg_event_trigger_oid 1 +#define Anum_pg_event_trigger_evtname 2 +#define Anum_pg_event_trigger_evtevent 3 +#define Anum_pg_event_trigger_evtowner 4 +#define Anum_pg_event_trigger_evtfoid 5 +#define Anum_pg_event_trigger_evtenabled 6 +#define Anum_pg_event_trigger_evttags 7 + +#define Natts_pg_event_trigger 7 + + +#endif /* PG_EVENT_TRIGGER_D_H */ diff --git a/parser/include/catalog/pg_index.h b/parser/include/catalog/pg_index.h index 8505c3be..d3d7ea77 100644 --- a/parser/include/catalog/pg_index.h +++ b/parser/include/catalog/pg_index.h @@ -1,18 +1,17 @@ /*------------------------------------------------------------------------- * * pg_index.h - * definition of the system "index" relation (pg_index) - * along with the relation's initial contents. + * definition of the "index" system catalog (pg_index) * * - * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/catalog/pg_index.h * * NOTES - * the genbki.pl script reads this file and generates .bki - * information from the DATA() statements. + * The Catalog.pm module reads this file and derives schema + * information. * *------------------------------------------------------------------------- */ @@ -20,19 +19,19 @@ #define PG_INDEX_H #include "catalog/genbki.h" +#include "catalog/pg_index_d.h" /* ---------------- * pg_index definition. cpp turns this into * typedef struct FormData_pg_index. * ---------------- */ -#define IndexRelationId 2610 - -CATALOG(pg_index,2610) BKI_WITHOUT_OIDS BKI_SCHEMA_MACRO +CATALOG(pg_index,2610,IndexRelationId) BKI_SCHEMA_MACRO { Oid indexrelid; /* OID of the index */ Oid indrelid; /* OID of the relation it indexes */ - int16 indnatts; /* number of columns in index */ + int16 indnatts; /* total number of columns in index */ + int16 indnkeyatts; /* number of key columns in index */ bool indisunique; /* is this a unique index? */ bool indisprimary; /* is this index for primary key? */ bool indisexclusion; /* is this index for exclusion constraint? */ @@ -66,30 +65,7 @@ CATALOG(pg_index,2610) BKI_WITHOUT_OIDS BKI_SCHEMA_MACRO */ typedef FormData_pg_index *Form_pg_index; -/* ---------------- - * compiler constants for pg_index - * ---------------- - */ -#define Natts_pg_index 19 -#define Anum_pg_index_indexrelid 1 -#define Anum_pg_index_indrelid 2 -#define Anum_pg_index_indnatts 3 -#define Anum_pg_index_indisunique 4 -#define Anum_pg_index_indisprimary 5 -#define Anum_pg_index_indisexclusion 6 -#define Anum_pg_index_indimmediate 7 -#define Anum_pg_index_indisclustered 8 -#define Anum_pg_index_indisvalid 9 -#define Anum_pg_index_indcheckxmin 10 -#define Anum_pg_index_indisready 11 -#define Anum_pg_index_indislive 12 -#define Anum_pg_index_indisreplident 13 -#define Anum_pg_index_indkey 14 -#define Anum_pg_index_indcollation 15 -#define Anum_pg_index_indclass 16 -#define Anum_pg_index_indoption 17 -#define Anum_pg_index_indexprs 18 -#define Anum_pg_index_indpred 19 +#ifdef EXPOSE_TO_CLIENT_CODE /* * Index AMs that support ordered scans must support these two indoption @@ -99,13 +75,6 @@ typedef FormData_pg_index *Form_pg_index; #define INDOPTION_DESC 0x0001 /* values are in reverse order */ #define INDOPTION_NULLS_FIRST 0x0002 /* NULLs are first instead of last */ -/* - * Use of these macros is recommended over direct examination of the state - * flag columns where possible; this allows source code compatibility with - * the hacky representation used in 9.2. - */ -#define IndexIsValid(indexForm) ((indexForm)->indisvalid) -#define IndexIsReady(indexForm) ((indexForm)->indisready) -#define IndexIsLive(indexForm) ((indexForm)->indislive) +#endif /* EXPOSE_TO_CLIENT_CODE */ #endif /* PG_INDEX_H */ diff --git a/parser/include/catalog/pg_index_d.h b/parser/include/catalog/pg_index_d.h new file mode 100644 index 00000000..80835e78 --- /dev/null +++ b/parser/include/catalog/pg_index_d.h @@ -0,0 +1,56 @@ +/*------------------------------------------------------------------------- + * + * pg_index_d.h + * Macro definitions for pg_index + * + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group + * Portions Copyright (c) 1994, Regents of the University of California + * + * NOTES + * ****************************** + * *** DO NOT EDIT THIS FILE! *** + * ****************************** + * + * It has been GENERATED by src/backend/catalog/genbki.pl + * + *------------------------------------------------------------------------- + */ +#ifndef PG_INDEX_D_H +#define PG_INDEX_D_H + +#define IndexRelationId 2610 + +#define Anum_pg_index_indexrelid 1 +#define Anum_pg_index_indrelid 2 +#define Anum_pg_index_indnatts 3 +#define Anum_pg_index_indnkeyatts 4 +#define Anum_pg_index_indisunique 5 +#define Anum_pg_index_indisprimary 6 +#define Anum_pg_index_indisexclusion 7 +#define Anum_pg_index_indimmediate 8 +#define Anum_pg_index_indisclustered 9 +#define Anum_pg_index_indisvalid 10 +#define Anum_pg_index_indcheckxmin 11 +#define Anum_pg_index_indisready 12 +#define Anum_pg_index_indislive 13 +#define Anum_pg_index_indisreplident 14 +#define Anum_pg_index_indkey 15 +#define Anum_pg_index_indcollation 16 +#define Anum_pg_index_indclass 17 +#define Anum_pg_index_indoption 18 +#define Anum_pg_index_indexprs 19 +#define Anum_pg_index_indpred 20 + +#define Natts_pg_index 20 + + +/* + * Index AMs that support ordered scans must support these two indoption + * bits. Otherwise, the content of the per-column indoption fields is + * open for future definition. + */ +#define INDOPTION_DESC 0x0001 /* values are in reverse order */ +#define INDOPTION_NULLS_FIRST 0x0002 /* NULLs are first instead of last */ + + +#endif /* PG_INDEX_D_H */ diff --git a/parser/include/catalog/pg_language.h b/parser/include/catalog/pg_language.h index ad244e83..937bacbf 100644 --- a/parser/include/catalog/pg_language.h +++ b/parser/include/catalog/pg_language.h @@ -1,18 +1,17 @@ /*------------------------------------------------------------------------- * * pg_language.h - * definition of the system "language" relation (pg_language) - * along with the relation's initial contents. + * definition of the "language" system catalog (pg_language) * * - * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/catalog/pg_language.h * * NOTES - * the genbki.pl script reads this file and generates .bki - * information from the DATA() statements. + * The Catalog.pm module reads this file and derives schema + * information. * *------------------------------------------------------------------------- */ @@ -20,26 +19,41 @@ #define PG_LANGUAGE_H #include "catalog/genbki.h" +#include "catalog/pg_language_d.h" /* ---------------- * pg_language definition. cpp turns this into * typedef struct FormData_pg_language * ---------------- */ -#define LanguageRelationId 2612 - -CATALOG(pg_language,2612) +CATALOG(pg_language,2612,LanguageRelationId) { - NameData lanname; /* Language name */ - Oid lanowner; /* Language's owner */ - bool lanispl; /* Is a procedural language */ - bool lanpltrusted; /* PL is trusted */ - Oid lanplcallfoid; /* Call handler for PL */ - Oid laninline; /* Optional anonymous-block handler function */ - Oid lanvalidator; /* Optional validation function */ + Oid oid; /* oid */ + + /* Language name */ + NameData lanname; + + /* Language's owner */ + Oid lanowner BKI_DEFAULT(PGUID); + + /* Is a procedural language */ + bool lanispl BKI_DEFAULT(f); + + /* PL is trusted */ + bool lanpltrusted BKI_DEFAULT(f); + + /* Call handler, if it's a PL */ + Oid lanplcallfoid BKI_DEFAULT(0) BKI_LOOKUP(pg_proc); + + /* Optional anonymous-block handler function */ + Oid laninline BKI_DEFAULT(0) BKI_LOOKUP(pg_proc); + + /* Optional validation function */ + Oid lanvalidator BKI_DEFAULT(0) BKI_LOOKUP(pg_proc); #ifdef CATALOG_VARLEN /* variable-length fields start here */ - aclitem lanacl[1]; /* Access privileges */ + /* Access privileges */ + aclitem lanacl[1] BKI_DEFAULT(_null_); #endif } FormData_pg_language; @@ -50,33 +64,4 @@ CATALOG(pg_language,2612) */ typedef FormData_pg_language *Form_pg_language; -/* ---------------- - * compiler constants for pg_language - * ---------------- - */ -#define Natts_pg_language 8 -#define Anum_pg_language_lanname 1 -#define Anum_pg_language_lanowner 2 -#define Anum_pg_language_lanispl 3 -#define Anum_pg_language_lanpltrusted 4 -#define Anum_pg_language_lanplcallfoid 5 -#define Anum_pg_language_laninline 6 -#define Anum_pg_language_lanvalidator 7 -#define Anum_pg_language_lanacl 8 - -/* ---------------- - * initial contents of pg_language - * ---------------- - */ - -DATA(insert OID = 12 ( "internal" PGUID f f 0 0 2246 _null_ )); -DESCR("built-in functions"); -#define INTERNALlanguageId 12 -DATA(insert OID = 13 ( "c" PGUID f f 0 0 2247 _null_ )); -DESCR("dynamically-loaded C functions"); -#define ClanguageId 13 -DATA(insert OID = 14 ( "sql" PGUID f t 0 0 2248 _null_ )); -DESCR("SQL-language functions"); -#define SQLlanguageId 14 - #endif /* PG_LANGUAGE_H */ diff --git a/parser/include/catalog/pg_language_d.h b/parser/include/catalog/pg_language_d.h new file mode 100644 index 00000000..be461675 --- /dev/null +++ b/parser/include/catalog/pg_language_d.h @@ -0,0 +1,39 @@ +/*------------------------------------------------------------------------- + * + * pg_language_d.h + * Macro definitions for pg_language + * + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group + * Portions Copyright (c) 1994, Regents of the University of California + * + * NOTES + * ****************************** + * *** DO NOT EDIT THIS FILE! *** + * ****************************** + * + * It has been GENERATED by src/backend/catalog/genbki.pl + * + *------------------------------------------------------------------------- + */ +#ifndef PG_LANGUAGE_D_H +#define PG_LANGUAGE_D_H + +#define LanguageRelationId 2612 + +#define Anum_pg_language_oid 1 +#define Anum_pg_language_lanname 2 +#define Anum_pg_language_lanowner 3 +#define Anum_pg_language_lanispl 4 +#define Anum_pg_language_lanpltrusted 5 +#define Anum_pg_language_lanplcallfoid 6 +#define Anum_pg_language_laninline 7 +#define Anum_pg_language_lanvalidator 8 +#define Anum_pg_language_lanacl 9 + +#define Natts_pg_language 9 + +#define INTERNALlanguageId 12 +#define ClanguageId 13 +#define SQLlanguageId 14 + +#endif /* PG_LANGUAGE_D_H */ diff --git a/parser/include/catalog/pg_namespace.h b/parser/include/catalog/pg_namespace.h index a61a8635..db93b270 100644 --- a/parser/include/catalog/pg_namespace.h +++ b/parser/include/catalog/pg_namespace.h @@ -1,18 +1,17 @@ /*------------------------------------------------------------------------- * * pg_namespace.h - * definition of the system "namespace" relation (pg_namespace) - * along with the relation's initial contents. + * definition of the "namespace" system catalog (pg_namespace) * * - * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/catalog/pg_namespace.h * * NOTES - * the genbki.pl script reads this file and generates .bki - * information from the DATA() statements. + * The Catalog.pm module reads this file and derives schema + * information. * *------------------------------------------------------------------------- */ @@ -20,6 +19,8 @@ #define PG_NAMESPACE_H #include "catalog/genbki.h" +#include "catalog/pg_namespace_d.h" +#include "utils/acl.h" /* ---------------------------------------------------------------- * pg_namespace definition. @@ -31,10 +32,10 @@ * nspacl access privilege list * ---------------------------------------------------------------- */ -#define NamespaceRelationId 2615 - -CATALOG(pg_namespace,2615) +CATALOG(pg_namespace,2615,NamespaceRelationId) { + Oid oid; /* oid */ + NameData nspname; Oid nspowner; @@ -50,33 +51,6 @@ CATALOG(pg_namespace,2615) */ typedef FormData_pg_namespace *Form_pg_namespace; -/* ---------------- - * compiler constants for pg_namespace - * ---------------- - */ - -#define Natts_pg_namespace 3 -#define Anum_pg_namespace_nspname 1 -#define Anum_pg_namespace_nspowner 2 -#define Anum_pg_namespace_nspacl 3 - - -/* ---------------- - * initial contents of pg_namespace - * --------------- - */ - -DATA(insert OID = 11 ( "pg_catalog" PGUID _null_ )); -DESCR("system catalog schema"); -#define PG_CATALOG_NAMESPACE 11 -DATA(insert OID = 99 ( "pg_toast" PGUID _null_ )); -DESCR("reserved schema for TOAST tables"); -#define PG_TOAST_NAMESPACE 99 -DATA(insert OID = 2200 ( "public" PGUID _null_ )); -DESCR("standard public schema"); -#define PG_PUBLIC_NAMESPACE 2200 - - /* * prototypes for functions in pg_namespace.c */ diff --git a/parser/include/catalog/pg_namespace_d.h b/parser/include/catalog/pg_namespace_d.h new file mode 100644 index 00000000..44493fbf --- /dev/null +++ b/parser/include/catalog/pg_namespace_d.h @@ -0,0 +1,34 @@ +/*------------------------------------------------------------------------- + * + * pg_namespace_d.h + * Macro definitions for pg_namespace + * + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group + * Portions Copyright (c) 1994, Regents of the University of California + * + * NOTES + * ****************************** + * *** DO NOT EDIT THIS FILE! *** + * ****************************** + * + * It has been GENERATED by src/backend/catalog/genbki.pl + * + *------------------------------------------------------------------------- + */ +#ifndef PG_NAMESPACE_D_H +#define PG_NAMESPACE_D_H + +#define NamespaceRelationId 2615 + +#define Anum_pg_namespace_oid 1 +#define Anum_pg_namespace_nspname 2 +#define Anum_pg_namespace_nspowner 3 +#define Anum_pg_namespace_nspacl 4 + +#define Natts_pg_namespace 4 + +#define PG_CATALOG_NAMESPACE 11 +#define PG_TOAST_NAMESPACE 99 +#define PG_PUBLIC_NAMESPACE 2200 + +#endif /* PG_NAMESPACE_D_H */ diff --git a/parser/include/catalog/pg_opclass.h b/parser/include/catalog/pg_opclass.h index 28dbc747..963ab3ea 100644 --- a/parser/include/catalog/pg_opclass.h +++ b/parser/include/catalog/pg_opclass.h @@ -1,8 +1,7 @@ /*------------------------------------------------------------------------- * * pg_opclass.h - * definition of the system "opclass" relation (pg_opclass) - * along with the relation's initial contents. + * definition of the "operator class" system catalog (pg_opclass) * * The primary key for this table is --- * that is, there is a row for each valid combination of opclass name and @@ -25,14 +24,14 @@ * AMs support this. * * - * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/catalog/pg_opclass.h * * NOTES - * the genbki.pl script reads this file and generates .bki - * information from the DATA() statements. + * The Catalog.pm module reads this file and derives schema + * information. * *------------------------------------------------------------------------- */ @@ -40,24 +39,40 @@ #define PG_OPCLASS_H #include "catalog/genbki.h" +#include "catalog/pg_opclass_d.h" /* ---------------- * pg_opclass definition. cpp turns this into * typedef struct FormData_pg_opclass * ---------------- */ -#define OperatorClassRelationId 2616 - -CATALOG(pg_opclass,2616) +CATALOG(pg_opclass,2616,OperatorClassRelationId) { - Oid opcmethod; /* index access method opclass is for */ - NameData opcname; /* name of this opclass */ - Oid opcnamespace; /* namespace of this opclass */ - Oid opcowner; /* opclass owner */ - Oid opcfamily; /* containing operator family */ - Oid opcintype; /* type of data indexed by opclass */ - bool opcdefault; /* T if opclass is default for opcintype */ - Oid opckeytype; /* type of data in index, or InvalidOid */ + Oid oid; /* oid */ + + /* index access method opclass is for */ + Oid opcmethod BKI_LOOKUP(pg_am); + + /* name of this opclass */ + NameData opcname; + + /* namespace of this opclass */ + Oid opcnamespace BKI_DEFAULT(PGNSP); + + /* opclass owner */ + Oid opcowner BKI_DEFAULT(PGUID); + + /* containing operator family */ + Oid opcfamily BKI_LOOKUP(pg_opfamily); + + /* type of data indexed by opclass */ + Oid opcintype BKI_LOOKUP(pg_type); + + /* T if opclass is default for opcintype */ + bool opcdefault BKI_DEFAULT(t); + + /* type of data in index, or InvalidOid */ + Oid opckeytype BKI_DEFAULT(0) BKI_LOOKUP(pg_type); } FormData_pg_opclass; /* ---------------- @@ -67,184 +82,4 @@ CATALOG(pg_opclass,2616) */ typedef FormData_pg_opclass *Form_pg_opclass; -/* ---------------- - * compiler constants for pg_opclass - * ---------------- - */ -#define Natts_pg_opclass 8 -#define Anum_pg_opclass_opcmethod 1 -#define Anum_pg_opclass_opcname 2 -#define Anum_pg_opclass_opcnamespace 3 -#define Anum_pg_opclass_opcowner 4 -#define Anum_pg_opclass_opcfamily 5 -#define Anum_pg_opclass_opcintype 6 -#define Anum_pg_opclass_opcdefault 7 -#define Anum_pg_opclass_opckeytype 8 - -/* ---------------- - * initial contents of pg_opclass - * - * Note: we hard-wire an OID only for a few entries that have to be explicitly - * referenced in the C code or in built-in catalog entries. The rest get OIDs - * assigned on-the-fly during initdb. - * ---------------- - */ - -DATA(insert ( 403 abstime_ops PGNSP PGUID 421 702 t 0 )); -DATA(insert ( 403 array_ops PGNSP PGUID 397 2277 t 0 )); -DATA(insert ( 405 array_ops PGNSP PGUID 627 2277 t 0 )); -DATA(insert ( 403 bit_ops PGNSP PGUID 423 1560 t 0 )); -DATA(insert ( 403 bool_ops PGNSP PGUID 424 16 t 0 )); -DATA(insert ( 403 bpchar_ops PGNSP PGUID 426 1042 t 0 )); -DATA(insert ( 405 bpchar_ops PGNSP PGUID 427 1042 t 0 )); -DATA(insert ( 403 bytea_ops PGNSP PGUID 428 17 t 0 )); -DATA(insert ( 403 char_ops PGNSP PGUID 429 18 t 0 )); -DATA(insert ( 405 char_ops PGNSP PGUID 431 18 t 0 )); -DATA(insert ( 403 cidr_ops PGNSP PGUID 1974 869 f 0 )); -DATA(insert ( 405 cidr_ops PGNSP PGUID 1975 869 f 0 )); -DATA(insert OID = 3122 ( 403 date_ops PGNSP PGUID 434 1082 t 0 )); -#define DATE_BTREE_OPS_OID 3122 -DATA(insert ( 405 date_ops PGNSP PGUID 435 1082 t 0 )); -DATA(insert ( 403 float4_ops PGNSP PGUID 1970 700 t 0 )); -DATA(insert ( 405 float4_ops PGNSP PGUID 1971 700 t 0 )); -DATA(insert OID = 3123 ( 403 float8_ops PGNSP PGUID 1970 701 t 0 )); -#define FLOAT8_BTREE_OPS_OID 3123 -DATA(insert ( 405 float8_ops PGNSP PGUID 1971 701 t 0 )); -DATA(insert ( 403 inet_ops PGNSP PGUID 1974 869 t 0 )); -DATA(insert ( 405 inet_ops PGNSP PGUID 1975 869 t 0 )); -DATA(insert ( 783 inet_ops PGNSP PGUID 3550 869 f 0 )); -DATA(insert ( 4000 inet_ops PGNSP PGUID 3794 869 t 0 )); -DATA(insert OID = 1979 ( 403 int2_ops PGNSP PGUID 1976 21 t 0 )); -#define INT2_BTREE_OPS_OID 1979 -DATA(insert ( 405 int2_ops PGNSP PGUID 1977 21 t 0 )); -DATA(insert OID = 1978 ( 403 int4_ops PGNSP PGUID 1976 23 t 0 )); -#define INT4_BTREE_OPS_OID 1978 -DATA(insert ( 405 int4_ops PGNSP PGUID 1977 23 t 0 )); -DATA(insert OID = 3124 ( 403 int8_ops PGNSP PGUID 1976 20 t 0 )); -#define INT8_BTREE_OPS_OID 3124 -DATA(insert ( 405 int8_ops PGNSP PGUID 1977 20 t 0 )); -DATA(insert ( 403 interval_ops PGNSP PGUID 1982 1186 t 0 )); -DATA(insert ( 405 interval_ops PGNSP PGUID 1983 1186 t 0 )); -DATA(insert ( 403 macaddr_ops PGNSP PGUID 1984 829 t 0 )); -DATA(insert ( 405 macaddr_ops PGNSP PGUID 1985 829 t 0 )); -DATA(insert ( 403 macaddr8_ops PGNSP PGUID 3371 774 t 0 )); -DATA(insert ( 405 macaddr8_ops PGNSP PGUID 3372 774 t 0 )); -/* - * Here's an ugly little hack to save space in the system catalog indexes. - * btree doesn't ordinarily allow a storage type different from input type; - * but cstring and name are the same thing except for trailing padding, - * and we can safely omit that within an index entry. So we declare the - * btree opclass for name as using cstring storage type. - */ -DATA(insert ( 403 name_ops PGNSP PGUID 1986 19 t 2275 )); -DATA(insert ( 405 name_ops PGNSP PGUID 1987 19 t 0 )); -DATA(insert OID = 3125 ( 403 numeric_ops PGNSP PGUID 1988 1700 t 0 )); -#define NUMERIC_BTREE_OPS_OID 3125 -DATA(insert ( 405 numeric_ops PGNSP PGUID 1998 1700 t 0 )); -DATA(insert OID = 1981 ( 403 oid_ops PGNSP PGUID 1989 26 t 0 )); -#define OID_BTREE_OPS_OID 1981 -DATA(insert ( 405 oid_ops PGNSP PGUID 1990 26 t 0 )); -DATA(insert ( 403 oidvector_ops PGNSP PGUID 1991 30 t 0 )); -DATA(insert ( 405 oidvector_ops PGNSP PGUID 1992 30 t 0 )); -DATA(insert ( 403 record_ops PGNSP PGUID 2994 2249 t 0 )); -DATA(insert ( 403 record_image_ops PGNSP PGUID 3194 2249 f 0 )); -DATA(insert OID = 3126 ( 403 text_ops PGNSP PGUID 1994 25 t 0 )); -#define TEXT_BTREE_OPS_OID 3126 -DATA(insert ( 405 text_ops PGNSP PGUID 1995 25 t 0 )); -DATA(insert ( 403 time_ops PGNSP PGUID 1996 1083 t 0 )); -DATA(insert ( 405 time_ops PGNSP PGUID 1997 1083 t 0 )); -DATA(insert OID = 3127 ( 403 timestamptz_ops PGNSP PGUID 434 1184 t 0 )); -#define TIMESTAMPTZ_BTREE_OPS_OID 3127 -DATA(insert ( 405 timestamptz_ops PGNSP PGUID 1999 1184 t 0 )); -DATA(insert ( 403 timetz_ops PGNSP PGUID 2000 1266 t 0 )); -DATA(insert ( 405 timetz_ops PGNSP PGUID 2001 1266 t 0 )); -DATA(insert ( 403 varbit_ops PGNSP PGUID 2002 1562 t 0 )); -DATA(insert ( 403 varchar_ops PGNSP PGUID 1994 25 f 0 )); -DATA(insert ( 405 varchar_ops PGNSP PGUID 1995 25 f 0 )); -DATA(insert OID = 3128 ( 403 timestamp_ops PGNSP PGUID 434 1114 t 0 )); -#define TIMESTAMP_BTREE_OPS_OID 3128 -DATA(insert ( 405 timestamp_ops PGNSP PGUID 2040 1114 t 0 )); -DATA(insert ( 403 text_pattern_ops PGNSP PGUID 2095 25 f 0 )); -DATA(insert ( 403 varchar_pattern_ops PGNSP PGUID 2095 25 f 0 )); -DATA(insert ( 403 bpchar_pattern_ops PGNSP PGUID 2097 1042 f 0 )); -DATA(insert ( 403 money_ops PGNSP PGUID 2099 790 t 0 )); -DATA(insert ( 405 bool_ops PGNSP PGUID 2222 16 t 0 )); -DATA(insert ( 405 bytea_ops PGNSP PGUID 2223 17 t 0 )); -DATA(insert ( 403 tid_ops PGNSP PGUID 2789 27 t 0 )); -DATA(insert ( 405 xid_ops PGNSP PGUID 2225 28 t 0 )); -DATA(insert ( 405 cid_ops PGNSP PGUID 2226 29 t 0 )); -DATA(insert ( 405 abstime_ops PGNSP PGUID 2227 702 t 0 )); -DATA(insert ( 405 reltime_ops PGNSP PGUID 2228 703 t 0 )); -DATA(insert ( 405 text_pattern_ops PGNSP PGUID 2229 25 f 0 )); -DATA(insert ( 405 varchar_pattern_ops PGNSP PGUID 2229 25 f 0 )); -DATA(insert ( 405 bpchar_pattern_ops PGNSP PGUID 2231 1042 f 0 )); -DATA(insert ( 403 reltime_ops PGNSP PGUID 2233 703 t 0 )); -DATA(insert ( 403 tinterval_ops PGNSP PGUID 2234 704 t 0 )); -DATA(insert ( 405 aclitem_ops PGNSP PGUID 2235 1033 t 0 )); -DATA(insert ( 783 box_ops PGNSP PGUID 2593 603 t 0 )); -DATA(insert ( 783 point_ops PGNSP PGUID 1029 600 t 603 )); -DATA(insert ( 783 poly_ops PGNSP PGUID 2594 604 t 603 )); -DATA(insert ( 783 circle_ops PGNSP PGUID 2595 718 t 603 )); -DATA(insert ( 2742 array_ops PGNSP PGUID 2745 2277 t 2283 )); -DATA(insert ( 403 uuid_ops PGNSP PGUID 2968 2950 t 0 )); -DATA(insert ( 405 uuid_ops PGNSP PGUID 2969 2950 t 0 )); -DATA(insert ( 403 pg_lsn_ops PGNSP PGUID 3253 3220 t 0 )); -DATA(insert ( 405 pg_lsn_ops PGNSP PGUID 3254 3220 t 0 )); -DATA(insert ( 403 enum_ops PGNSP PGUID 3522 3500 t 0 )); -DATA(insert ( 405 enum_ops PGNSP PGUID 3523 3500 t 0 )); -DATA(insert ( 403 tsvector_ops PGNSP PGUID 3626 3614 t 0 )); -DATA(insert ( 783 tsvector_ops PGNSP PGUID 3655 3614 t 3642 )); -DATA(insert ( 2742 tsvector_ops PGNSP PGUID 3659 3614 t 25 )); -DATA(insert ( 403 tsquery_ops PGNSP PGUID 3683 3615 t 0 )); -DATA(insert ( 783 tsquery_ops PGNSP PGUID 3702 3615 t 20 )); -DATA(insert ( 403 range_ops PGNSP PGUID 3901 3831 t 0 )); -DATA(insert ( 405 range_ops PGNSP PGUID 3903 3831 t 0 )); -DATA(insert ( 783 range_ops PGNSP PGUID 3919 3831 t 0 )); -DATA(insert ( 4000 range_ops PGNSP PGUID 3474 3831 t 0 )); -DATA(insert ( 4000 box_ops PGNSP PGUID 5000 603 t 0 )); -DATA(insert ( 4000 quad_point_ops PGNSP PGUID 4015 600 t 0 )); -DATA(insert ( 4000 kd_point_ops PGNSP PGUID 4016 600 f 0 )); -DATA(insert ( 4000 text_ops PGNSP PGUID 4017 25 t 0 )); -DATA(insert ( 403 jsonb_ops PGNSP PGUID 4033 3802 t 0 )); -DATA(insert ( 405 jsonb_ops PGNSP PGUID 4034 3802 t 0 )); -DATA(insert ( 2742 jsonb_ops PGNSP PGUID 4036 3802 t 25 )); -DATA(insert ( 2742 jsonb_path_ops PGNSP PGUID 4037 3802 f 23 )); - -/* BRIN operator classes */ -/* no brin opclass for bool */ -DATA(insert ( 3580 bytea_minmax_ops PGNSP PGUID 4064 17 t 17 )); -DATA(insert ( 3580 char_minmax_ops PGNSP PGUID 4062 18 t 18 )); -DATA(insert ( 3580 name_minmax_ops PGNSP PGUID 4065 19 t 19 )); -DATA(insert ( 3580 int8_minmax_ops PGNSP PGUID 4054 20 t 20 )); -DATA(insert ( 3580 int2_minmax_ops PGNSP PGUID 4054 21 t 21 )); -DATA(insert ( 3580 int4_minmax_ops PGNSP PGUID 4054 23 t 23 )); -DATA(insert ( 3580 text_minmax_ops PGNSP PGUID 4056 25 t 25 )); -DATA(insert ( 3580 oid_minmax_ops PGNSP PGUID 4068 26 t 26 )); -DATA(insert ( 3580 tid_minmax_ops PGNSP PGUID 4069 27 t 27 )); -DATA(insert ( 3580 float4_minmax_ops PGNSP PGUID 4070 700 t 700 )); -DATA(insert ( 3580 float8_minmax_ops PGNSP PGUID 4070 701 t 701 )); -DATA(insert ( 3580 abstime_minmax_ops PGNSP PGUID 4072 702 t 702 )); -DATA(insert ( 3580 reltime_minmax_ops PGNSP PGUID 4073 703 t 703 )); -DATA(insert ( 3580 macaddr_minmax_ops PGNSP PGUID 4074 829 t 829 )); -DATA(insert ( 3580 macaddr8_minmax_ops PGNSP PGUID 4109 774 t 774 )); -DATA(insert ( 3580 inet_minmax_ops PGNSP PGUID 4075 869 f 869 )); -DATA(insert ( 3580 inet_inclusion_ops PGNSP PGUID 4102 869 t 869 )); -DATA(insert ( 3580 bpchar_minmax_ops PGNSP PGUID 4076 1042 t 1042 )); -DATA(insert ( 3580 time_minmax_ops PGNSP PGUID 4077 1083 t 1083 )); -DATA(insert ( 3580 date_minmax_ops PGNSP PGUID 4059 1082 t 1082 )); -DATA(insert ( 3580 timestamp_minmax_ops PGNSP PGUID 4059 1114 t 1114 )); -DATA(insert ( 3580 timestamptz_minmax_ops PGNSP PGUID 4059 1184 t 1184 )); -DATA(insert ( 3580 interval_minmax_ops PGNSP PGUID 4078 1186 t 1186 )); -DATA(insert ( 3580 timetz_minmax_ops PGNSP PGUID 4058 1266 t 1266 )); -DATA(insert ( 3580 bit_minmax_ops PGNSP PGUID 4079 1560 t 1560 )); -DATA(insert ( 3580 varbit_minmax_ops PGNSP PGUID 4080 1562 t 1562 )); -DATA(insert ( 3580 numeric_minmax_ops PGNSP PGUID 4055 1700 t 1700 )); -/* no brin opclass for record, anyarray */ -DATA(insert ( 3580 uuid_minmax_ops PGNSP PGUID 4081 2950 t 2950 )); -DATA(insert ( 3580 range_inclusion_ops PGNSP PGUID 4103 3831 t 3831 )); -DATA(insert ( 3580 pg_lsn_minmax_ops PGNSP PGUID 4082 3220 t 3220 )); -/* no brin opclass for enum, tsvector, tsquery, jsonb */ -DATA(insert ( 3580 box_inclusion_ops PGNSP PGUID 4104 603 t 603 )); -/* no brin opclass for the geometric types except box */ - #endif /* PG_OPCLASS_H */ diff --git a/parser/include/catalog/pg_opclass_d.h b/parser/include/catalog/pg_opclass_d.h new file mode 100644 index 00000000..bc7b4689 --- /dev/null +++ b/parser/include/catalog/pg_opclass_d.h @@ -0,0 +1,49 @@ +/*------------------------------------------------------------------------- + * + * pg_opclass_d.h + * Macro definitions for pg_opclass + * + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group + * Portions Copyright (c) 1994, Regents of the University of California + * + * NOTES + * ****************************** + * *** DO NOT EDIT THIS FILE! *** + * ****************************** + * + * It has been GENERATED by src/backend/catalog/genbki.pl + * + *------------------------------------------------------------------------- + */ +#ifndef PG_OPCLASS_D_H +#define PG_OPCLASS_D_H + +#define OperatorClassRelationId 2616 + +#define Anum_pg_opclass_oid 1 +#define Anum_pg_opclass_opcmethod 2 +#define Anum_pg_opclass_opcname 3 +#define Anum_pg_opclass_opcnamespace 4 +#define Anum_pg_opclass_opcowner 5 +#define Anum_pg_opclass_opcfamily 6 +#define Anum_pg_opclass_opcintype 7 +#define Anum_pg_opclass_opcdefault 8 +#define Anum_pg_opclass_opckeytype 9 + +#define Natts_pg_opclass 9 + +#define DATE_BTREE_OPS_OID 3122 +#define FLOAT8_BTREE_OPS_OID 3123 +#define INT2_BTREE_OPS_OID 1979 +#define INT4_BTREE_OPS_OID 1978 +#define INT8_BTREE_OPS_OID 3124 +#define NUMERIC_BTREE_OPS_OID 3125 +#define OID_BTREE_OPS_OID 1981 +#define TEXT_BTREE_OPS_OID 3126 +#define TIMESTAMPTZ_BTREE_OPS_OID 3127 +#define TIMESTAMP_BTREE_OPS_OID 3128 +#define TEXT_BTREE_PATTERN_OPS_OID 4217 +#define VARCHAR_BTREE_PATTERN_OPS_OID 4218 +#define BPCHAR_BTREE_PATTERN_OPS_OID 4219 + +#endif /* PG_OPCLASS_D_H */ diff --git a/parser/include/catalog/pg_operator.h b/parser/include/catalog/pg_operator.h index ffabc200..1daa2638 100644 --- a/parser/include/catalog/pg_operator.h +++ b/parser/include/catalog/pg_operator.h @@ -1,21 +1,17 @@ /*------------------------------------------------------------------------- * * pg_operator.h - * definition of the system "operator" relation (pg_operator) - * along with the relation's initial contents. + * definition of the "operator" system catalog (pg_operator) * * - * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/catalog/pg_operator.h * * NOTES - * the genbki.pl script reads this file and generates .bki - * information from the DATA() statements. - * - * XXX do NOT break up DATA() statements into multiple lines! - * the scripts are not as smart as you might think... + * The Catalog.pm module reads this file and derives schema + * information. * *------------------------------------------------------------------------- */ @@ -23,1835 +19,84 @@ #define PG_OPERATOR_H #include "catalog/genbki.h" +#include "catalog/objectaddress.h" +#include "catalog/pg_operator_d.h" +#include "nodes/pg_list.h" /* ---------------- * pg_operator definition. cpp turns this into * typedef struct FormData_pg_operator * ---------------- */ -#define OperatorRelationId 2617 - -CATALOG(pg_operator,2617) +CATALOG(pg_operator,2617,OperatorRelationId) { - NameData oprname; /* name of operator */ - Oid oprnamespace; /* OID of namespace containing this oper */ - Oid oprowner; /* operator owner */ - char oprkind; /* 'l', 'r', or 'b' */ - bool oprcanmerge; /* can be used in merge join? */ - bool oprcanhash; /* can be used in hash join? */ - Oid oprleft; /* left arg type, or 0 if 'l' oprkind */ - Oid oprright; /* right arg type, or 0 if 'r' oprkind */ - Oid oprresult; /* result datatype */ - Oid oprcom; /* OID of commutator oper, or 0 if none */ - Oid oprnegate; /* OID of negator oper, or 0 if none */ - regproc oprcode; /* OID of underlying function */ - regproc oprrest; /* OID of restriction estimator, or 0 */ - regproc oprjoin; /* OID of join estimator, or 0 */ -} FormData_pg_operator; - -/* ---------------- - * Form_pg_operator corresponds to a pointer to a tuple with - * the format of pg_operator relation. - * ---------------- - */ -typedef FormData_pg_operator *Form_pg_operator; - -/* ---------------- - * compiler constants for pg_operator - * ---------------- - */ - -#define Natts_pg_operator 14 -#define Anum_pg_operator_oprname 1 -#define Anum_pg_operator_oprnamespace 2 -#define Anum_pg_operator_oprowner 3 -#define Anum_pg_operator_oprkind 4 -#define Anum_pg_operator_oprcanmerge 5 -#define Anum_pg_operator_oprcanhash 6 -#define Anum_pg_operator_oprleft 7 -#define Anum_pg_operator_oprright 8 -#define Anum_pg_operator_oprresult 9 -#define Anum_pg_operator_oprcom 10 -#define Anum_pg_operator_oprnegate 11 -#define Anum_pg_operator_oprcode 12 -#define Anum_pg_operator_oprrest 13 -#define Anum_pg_operator_oprjoin 14 - -/* ---------------- - * initial contents of pg_operator - * ---------------- - */ - -/* - * Note: every entry in pg_operator.h is expected to have a DESCR() comment. - * If the operator is a deprecated equivalent of some other entry, be sure - * to comment it as such so that initdb doesn't think it's a preferred name - * for the underlying function. - */ - -DATA(insert OID = 15 ( "=" PGNSP PGUID b t t 23 20 16 416 36 int48eq eqsel eqjoinsel )); -DESCR("equal"); -DATA(insert OID = 36 ( "<>" PGNSP PGUID b f f 23 20 16 417 15 int48ne neqsel neqjoinsel )); -DESCR("not equal"); -DATA(insert OID = 37 ( "<" PGNSP PGUID b f f 23 20 16 419 82 int48lt scalarltsel scalarltjoinsel )); -DESCR("less than"); -DATA(insert OID = 76 ( ">" PGNSP PGUID b f f 23 20 16 418 80 int48gt scalargtsel scalargtjoinsel )); -DESCR("greater than"); -DATA(insert OID = 80 ( "<=" PGNSP PGUID b f f 23 20 16 430 76 int48le scalarltsel scalarltjoinsel )); -DESCR("less than or equal"); -DATA(insert OID = 82 ( ">=" PGNSP PGUID b f f 23 20 16 420 37 int48ge scalargtsel scalargtjoinsel )); -DESCR("greater than or equal"); - -DATA(insert OID = 58 ( "<" PGNSP PGUID b f f 16 16 16 59 1695 boollt scalarltsel scalarltjoinsel )); -DESCR("less than"); -DATA(insert OID = 59 ( ">" PGNSP PGUID b f f 16 16 16 58 1694 boolgt scalargtsel scalargtjoinsel )); -DESCR("greater than"); -DATA(insert OID = 85 ( "<>" PGNSP PGUID b f f 16 16 16 85 91 boolne neqsel neqjoinsel )); -DESCR("not equal"); -#define BooleanNotEqualOperator 85 -DATA(insert OID = 91 ( "=" PGNSP PGUID b t t 16 16 16 91 85 booleq eqsel eqjoinsel )); -DESCR("equal"); -#define BooleanEqualOperator 91 -DATA(insert OID = 1694 ( "<=" PGNSP PGUID b f f 16 16 16 1695 59 boolle scalarltsel scalarltjoinsel )); -DESCR("less than or equal"); -DATA(insert OID = 1695 ( ">=" PGNSP PGUID b f f 16 16 16 1694 58 boolge scalargtsel scalargtjoinsel )); -DESCR("greater than or equal"); - -DATA(insert OID = 92 ( "=" PGNSP PGUID b t t 18 18 16 92 630 chareq eqsel eqjoinsel )); -DESCR("equal"); -DATA(insert OID = 93 ( "=" PGNSP PGUID b t t 19 19 16 93 643 nameeq eqsel eqjoinsel )); -DESCR("equal"); -DATA(insert OID = 94 ( "=" PGNSP PGUID b t t 21 21 16 94 519 int2eq eqsel eqjoinsel )); -DESCR("equal"); -DATA(insert OID = 95 ( "<" PGNSP PGUID b f f 21 21 16 520 524 int2lt scalarltsel scalarltjoinsel )); -DESCR("less than"); -DATA(insert OID = 96 ( "=" PGNSP PGUID b t t 23 23 16 96 518 int4eq eqsel eqjoinsel )); -DESCR("equal"); -#define Int4EqualOperator 96 -DATA(insert OID = 97 ( "<" PGNSP PGUID b f f 23 23 16 521 525 int4lt scalarltsel scalarltjoinsel )); -DESCR("less than"); -#define Int4LessOperator 97 -DATA(insert OID = 98 ( "=" PGNSP PGUID b t t 25 25 16 98 531 texteq eqsel eqjoinsel )); -DESCR("equal"); -#define TextEqualOperator 98 - -DATA(insert OID = 349 ( "||" PGNSP PGUID b f f 2277 2283 2277 0 0 array_append - - )); -DESCR("append element onto end of array"); -DATA(insert OID = 374 ( "||" PGNSP PGUID b f f 2283 2277 2277 0 0 array_prepend - - )); -DESCR("prepend element onto front of array"); -DATA(insert OID = 375 ( "||" PGNSP PGUID b f f 2277 2277 2277 0 0 array_cat - - )); -DESCR("concatenate"); - -DATA(insert OID = 352 ( "=" PGNSP PGUID b f t 28 28 16 352 3315 xideq eqsel eqjoinsel )); -DESCR("equal"); -DATA(insert OID = 353 ( "=" PGNSP PGUID b f f 28 23 16 0 3316 xideqint4 eqsel eqjoinsel )); -DESCR("equal"); -DATA(insert OID = 3315 ( "<>" PGNSP PGUID b f f 28 28 16 3315 352 xidneq neqsel neqjoinsel )); -DESCR("not equal"); -DATA(insert OID = 3316 ( "<>" PGNSP PGUID b f f 28 23 16 0 353 xidneqint4 neqsel neqjoinsel )); -DESCR("not equal"); -DATA(insert OID = 388 ( "!" PGNSP PGUID r f f 20 0 1700 0 0 numeric_fac - - )); -DESCR("factorial"); -DATA(insert OID = 389 ( "!!" PGNSP PGUID l f f 0 20 1700 0 0 numeric_fac - - )); -DESCR("deprecated, use ! instead"); -DATA(insert OID = 385 ( "=" PGNSP PGUID b f t 29 29 16 385 0 cideq eqsel eqjoinsel )); -DESCR("equal"); - -DATA(insert OID = 387 ( "=" PGNSP PGUID b t f 27 27 16 387 402 tideq eqsel eqjoinsel )); -DESCR("equal"); -#define TIDEqualOperator 387 -DATA(insert OID = 402 ( "<>" PGNSP PGUID b f f 27 27 16 402 387 tidne neqsel neqjoinsel )); -DESCR("not equal"); -DATA(insert OID = 2799 ( "<" PGNSP PGUID b f f 27 27 16 2800 2802 tidlt scalarltsel scalarltjoinsel )); -DESCR("less than"); -#define TIDLessOperator 2799 -DATA(insert OID = 2800 ( ">" PGNSP PGUID b f f 27 27 16 2799 2801 tidgt scalargtsel scalargtjoinsel )); -DESCR("greater than"); -DATA(insert OID = 2801 ( "<=" PGNSP PGUID b f f 27 27 16 2802 2800 tidle scalarltsel scalarltjoinsel )); -DESCR("less than or equal"); -DATA(insert OID = 2802 ( ">=" PGNSP PGUID b f f 27 27 16 2801 2799 tidge scalargtsel scalargtjoinsel )); -DESCR("greater than or equal"); - -DATA(insert OID = 410 ( "=" PGNSP PGUID b t t 20 20 16 410 411 int8eq eqsel eqjoinsel )); -DESCR("equal"); -DATA(insert OID = 411 ( "<>" PGNSP PGUID b f f 20 20 16 411 410 int8ne neqsel neqjoinsel )); -DESCR("not equal"); -DATA(insert OID = 412 ( "<" PGNSP PGUID b f f 20 20 16 413 415 int8lt scalarltsel scalarltjoinsel )); -DESCR("less than"); -#define Int8LessOperator 412 -DATA(insert OID = 413 ( ">" PGNSP PGUID b f f 20 20 16 412 414 int8gt scalargtsel scalargtjoinsel )); -DESCR("greater than"); -DATA(insert OID = 414 ( "<=" PGNSP PGUID b f f 20 20 16 415 413 int8le scalarltsel scalarltjoinsel )); -DESCR("less than or equal"); -DATA(insert OID = 415 ( ">=" PGNSP PGUID b f f 20 20 16 414 412 int8ge scalargtsel scalargtjoinsel )); -DESCR("greater than or equal"); - -DATA(insert OID = 416 ( "=" PGNSP PGUID b t t 20 23 16 15 417 int84eq eqsel eqjoinsel )); -DESCR("equal"); -DATA(insert OID = 417 ( "<>" PGNSP PGUID b f f 20 23 16 36 416 int84ne neqsel neqjoinsel )); -DESCR("not equal"); -DATA(insert OID = 418 ( "<" PGNSP PGUID b f f 20 23 16 76 430 int84lt scalarltsel scalarltjoinsel )); -DESCR("less than"); -DATA(insert OID = 419 ( ">" PGNSP PGUID b f f 20 23 16 37 420 int84gt scalargtsel scalargtjoinsel )); -DESCR("greater than"); -DATA(insert OID = 420 ( "<=" PGNSP PGUID b f f 20 23 16 82 419 int84le scalarltsel scalarltjoinsel )); -DESCR("less than or equal"); -DATA(insert OID = 430 ( ">=" PGNSP PGUID b f f 20 23 16 80 418 int84ge scalargtsel scalargtjoinsel )); -DESCR("greater than or equal"); -DATA(insert OID = 439 ( "%" PGNSP PGUID b f f 20 20 20 0 0 int8mod - - )); -DESCR("modulus"); -DATA(insert OID = 473 ( "@" PGNSP PGUID l f f 0 20 20 0 0 int8abs - - )); -DESCR("absolute value"); - -DATA(insert OID = 484 ( "-" PGNSP PGUID l f f 0 20 20 0 0 int8um - - )); -DESCR("negate"); -DATA(insert OID = 485 ( "<<" PGNSP PGUID b f f 604 604 16 0 0 poly_left positionsel positionjoinsel )); -DESCR("is left of"); -DATA(insert OID = 486 ( "&<" PGNSP PGUID b f f 604 604 16 0 0 poly_overleft positionsel positionjoinsel )); -DESCR("overlaps or is left of"); -DATA(insert OID = 487 ( "&>" PGNSP PGUID b f f 604 604 16 0 0 poly_overright positionsel positionjoinsel )); -DESCR("overlaps or is right of"); -DATA(insert OID = 488 ( ">>" PGNSP PGUID b f f 604 604 16 0 0 poly_right positionsel positionjoinsel )); -DESCR("is right of"); -DATA(insert OID = 489 ( "<@" PGNSP PGUID b f f 604 604 16 490 0 poly_contained contsel contjoinsel )); -DESCR("is contained by"); -DATA(insert OID = 490 ( "@>" PGNSP PGUID b f f 604 604 16 489 0 poly_contain contsel contjoinsel )); -DESCR("contains"); -DATA(insert OID = 491 ( "~=" PGNSP PGUID b f f 604 604 16 491 0 poly_same eqsel eqjoinsel )); -DESCR("same as"); -DATA(insert OID = 492 ( "&&" PGNSP PGUID b f f 604 604 16 492 0 poly_overlap areasel areajoinsel )); -DESCR("overlaps"); -DATA(insert OID = 493 ( "<<" PGNSP PGUID b f f 603 603 16 0 0 box_left positionsel positionjoinsel )); -DESCR("is left of"); -DATA(insert OID = 494 ( "&<" PGNSP PGUID b f f 603 603 16 0 0 box_overleft positionsel positionjoinsel )); -DESCR("overlaps or is left of"); -DATA(insert OID = 495 ( "&>" PGNSP PGUID b f f 603 603 16 0 0 box_overright positionsel positionjoinsel )); -DESCR("overlaps or is right of"); -DATA(insert OID = 496 ( ">>" PGNSP PGUID b f f 603 603 16 0 0 box_right positionsel positionjoinsel )); -DESCR("is right of"); -DATA(insert OID = 497 ( "<@" PGNSP PGUID b f f 603 603 16 498 0 box_contained contsel contjoinsel )); -DESCR("is contained by"); -DATA(insert OID = 498 ( "@>" PGNSP PGUID b f f 603 603 16 497 0 box_contain contsel contjoinsel )); -DESCR("contains"); -DATA(insert OID = 499 ( "~=" PGNSP PGUID b f f 603 603 16 499 0 box_same eqsel eqjoinsel )); -DESCR("same as"); -DATA(insert OID = 500 ( "&&" PGNSP PGUID b f f 603 603 16 500 0 box_overlap areasel areajoinsel )); -DESCR("overlaps"); -DATA(insert OID = 501 ( ">=" PGNSP PGUID b f f 603 603 16 505 504 box_ge areasel areajoinsel )); -DESCR("greater than or equal by area"); -DATA(insert OID = 502 ( ">" PGNSP PGUID b f f 603 603 16 504 505 box_gt areasel areajoinsel )); -DESCR("greater than by area"); -DATA(insert OID = 503 ( "=" PGNSP PGUID b f f 603 603 16 503 0 box_eq eqsel eqjoinsel )); -DESCR("equal by area"); -DATA(insert OID = 504 ( "<" PGNSP PGUID b f f 603 603 16 502 501 box_lt areasel areajoinsel )); -DESCR("less than by area"); -DATA(insert OID = 505 ( "<=" PGNSP PGUID b f f 603 603 16 501 502 box_le areasel areajoinsel )); -DESCR("less than or equal by area"); -DATA(insert OID = 506 ( ">^" PGNSP PGUID b f f 600 600 16 0 0 point_above positionsel positionjoinsel )); -DESCR("is above"); -DATA(insert OID = 507 ( "<<" PGNSP PGUID b f f 600 600 16 0 0 point_left positionsel positionjoinsel )); -DESCR("is left of"); -DATA(insert OID = 508 ( ">>" PGNSP PGUID b f f 600 600 16 0 0 point_right positionsel positionjoinsel )); -DESCR("is right of"); -DATA(insert OID = 509 ( "<^" PGNSP PGUID b f f 600 600 16 0 0 point_below positionsel positionjoinsel )); -DESCR("is below"); -DATA(insert OID = 510 ( "~=" PGNSP PGUID b f f 600 600 16 510 713 point_eq eqsel eqjoinsel )); -DESCR("same as"); -DATA(insert OID = 511 ( "<@" PGNSP PGUID b f f 600 603 16 433 0 on_pb contsel contjoinsel )); -DESCR("point inside box"); -DATA(insert OID = 433 ( "@>" PGNSP PGUID b f f 603 600 16 511 0 box_contain_pt contsel contjoinsel )); -DESCR("contains"); -DATA(insert OID = 512 ( "<@" PGNSP PGUID b f f 600 602 16 755 0 on_ppath - - )); -DESCR("point within closed path, or point on open path"); -DATA(insert OID = 513 ( "@@" PGNSP PGUID l f f 0 603 600 0 0 box_center - - )); -DESCR("center of"); -DATA(insert OID = 514 ( "*" PGNSP PGUID b f f 23 23 23 514 0 int4mul - - )); -DESCR("multiply"); -DATA(insert OID = 517 ( "<->" PGNSP PGUID b f f 600 600 701 517 0 point_distance - - )); -DESCR("distance between"); -DATA(insert OID = 518 ( "<>" PGNSP PGUID b f f 23 23 16 518 96 int4ne neqsel neqjoinsel )); -DESCR("not equal"); -DATA(insert OID = 519 ( "<>" PGNSP PGUID b f f 21 21 16 519 94 int2ne neqsel neqjoinsel )); -DESCR("not equal"); -DATA(insert OID = 520 ( ">" PGNSP PGUID b f f 21 21 16 95 522 int2gt scalargtsel scalargtjoinsel )); -DESCR("greater than"); -DATA(insert OID = 521 ( ">" PGNSP PGUID b f f 23 23 16 97 523 int4gt scalargtsel scalargtjoinsel )); -DESCR("greater than"); -DATA(insert OID = 522 ( "<=" PGNSP PGUID b f f 21 21 16 524 520 int2le scalarltsel scalarltjoinsel )); -DESCR("less than or equal"); -DATA(insert OID = 523 ( "<=" PGNSP PGUID b f f 23 23 16 525 521 int4le scalarltsel scalarltjoinsel )); -DESCR("less than or equal"); -DATA(insert OID = 524 ( ">=" PGNSP PGUID b f f 21 21 16 522 95 int2ge scalargtsel scalargtjoinsel )); -DESCR("greater than or equal"); -DATA(insert OID = 525 ( ">=" PGNSP PGUID b f f 23 23 16 523 97 int4ge scalargtsel scalargtjoinsel )); -DESCR("greater than or equal"); -DATA(insert OID = 526 ( "*" PGNSP PGUID b f f 21 21 21 526 0 int2mul - - )); -DESCR("multiply"); -DATA(insert OID = 527 ( "/" PGNSP PGUID b f f 21 21 21 0 0 int2div - - )); -DESCR("divide"); -DATA(insert OID = 528 ( "/" PGNSP PGUID b f f 23 23 23 0 0 int4div - - )); -DESCR("divide"); -DATA(insert OID = 529 ( "%" PGNSP PGUID b f f 21 21 21 0 0 int2mod - - )); -DESCR("modulus"); -DATA(insert OID = 530 ( "%" PGNSP PGUID b f f 23 23 23 0 0 int4mod - - )); -DESCR("modulus"); -DATA(insert OID = 531 ( "<>" PGNSP PGUID b f f 25 25 16 531 98 textne neqsel neqjoinsel )); -DESCR("not equal"); -DATA(insert OID = 532 ( "=" PGNSP PGUID b t t 21 23 16 533 538 int24eq eqsel eqjoinsel )); -DESCR("equal"); -DATA(insert OID = 533 ( "=" PGNSP PGUID b t t 23 21 16 532 539 int42eq eqsel eqjoinsel )); -DESCR("equal"); -DATA(insert OID = 534 ( "<" PGNSP PGUID b f f 21 23 16 537 542 int24lt scalarltsel scalarltjoinsel )); -DESCR("less than"); -DATA(insert OID = 535 ( "<" PGNSP PGUID b f f 23 21 16 536 543 int42lt scalarltsel scalarltjoinsel )); -DESCR("less than"); -DATA(insert OID = 536 ( ">" PGNSP PGUID b f f 21 23 16 535 540 int24gt scalargtsel scalargtjoinsel )); -DESCR("greater than"); -DATA(insert OID = 537 ( ">" PGNSP PGUID b f f 23 21 16 534 541 int42gt scalargtsel scalargtjoinsel )); -DESCR("greater than"); -DATA(insert OID = 538 ( "<>" PGNSP PGUID b f f 21 23 16 539 532 int24ne neqsel neqjoinsel )); -DESCR("not equal"); -DATA(insert OID = 539 ( "<>" PGNSP PGUID b f f 23 21 16 538 533 int42ne neqsel neqjoinsel )); -DESCR("not equal"); -DATA(insert OID = 540 ( "<=" PGNSP PGUID b f f 21 23 16 543 536 int24le scalarltsel scalarltjoinsel )); -DESCR("less than or equal"); -DATA(insert OID = 541 ( "<=" PGNSP PGUID b f f 23 21 16 542 537 int42le scalarltsel scalarltjoinsel )); -DESCR("less than or equal"); -DATA(insert OID = 542 ( ">=" PGNSP PGUID b f f 21 23 16 541 534 int24ge scalargtsel scalargtjoinsel )); -DESCR("greater than or equal"); -DATA(insert OID = 543 ( ">=" PGNSP PGUID b f f 23 21 16 540 535 int42ge scalargtsel scalargtjoinsel )); -DESCR("greater than or equal"); -DATA(insert OID = 544 ( "*" PGNSP PGUID b f f 21 23 23 545 0 int24mul - - )); -DESCR("multiply"); -DATA(insert OID = 545 ( "*" PGNSP PGUID b f f 23 21 23 544 0 int42mul - - )); -DESCR("multiply"); -DATA(insert OID = 546 ( "/" PGNSP PGUID b f f 21 23 23 0 0 int24div - - )); -DESCR("divide"); -DATA(insert OID = 547 ( "/" PGNSP PGUID b f f 23 21 23 0 0 int42div - - )); -DESCR("divide"); -DATA(insert OID = 550 ( "+" PGNSP PGUID b f f 21 21 21 550 0 int2pl - - )); -DESCR("add"); -DATA(insert OID = 551 ( "+" PGNSP PGUID b f f 23 23 23 551 0 int4pl - - )); -DESCR("add"); -DATA(insert OID = 552 ( "+" PGNSP PGUID b f f 21 23 23 553 0 int24pl - - )); -DESCR("add"); -DATA(insert OID = 553 ( "+" PGNSP PGUID b f f 23 21 23 552 0 int42pl - - )); -DESCR("add"); -DATA(insert OID = 554 ( "-" PGNSP PGUID b f f 21 21 21 0 0 int2mi - - )); -DESCR("subtract"); -DATA(insert OID = 555 ( "-" PGNSP PGUID b f f 23 23 23 0 0 int4mi - - )); -DESCR("subtract"); -DATA(insert OID = 556 ( "-" PGNSP PGUID b f f 21 23 23 0 0 int24mi - - )); -DESCR("subtract"); -DATA(insert OID = 557 ( "-" PGNSP PGUID b f f 23 21 23 0 0 int42mi - - )); -DESCR("subtract"); -DATA(insert OID = 558 ( "-" PGNSP PGUID l f f 0 23 23 0 0 int4um - - )); -DESCR("negate"); -DATA(insert OID = 559 ( "-" PGNSP PGUID l f f 0 21 21 0 0 int2um - - )); -DESCR("negate"); -DATA(insert OID = 560 ( "=" PGNSP PGUID b t t 702 702 16 560 561 abstimeeq eqsel eqjoinsel )); -DESCR("equal"); -DATA(insert OID = 561 ( "<>" PGNSP PGUID b f f 702 702 16 561 560 abstimene neqsel neqjoinsel )); -DESCR("not equal"); -DATA(insert OID = 562 ( "<" PGNSP PGUID b f f 702 702 16 563 565 abstimelt scalarltsel scalarltjoinsel )); -DESCR("less than"); -DATA(insert OID = 563 ( ">" PGNSP PGUID b f f 702 702 16 562 564 abstimegt scalargtsel scalargtjoinsel )); -DESCR("greater than"); -DATA(insert OID = 564 ( "<=" PGNSP PGUID b f f 702 702 16 565 563 abstimele scalarltsel scalarltjoinsel )); -DESCR("less than or equal"); -DATA(insert OID = 565 ( ">=" PGNSP PGUID b f f 702 702 16 564 562 abstimege scalargtsel scalargtjoinsel )); -DESCR("greater than or equal"); -DATA(insert OID = 566 ( "=" PGNSP PGUID b t t 703 703 16 566 567 reltimeeq eqsel eqjoinsel )); -DESCR("equal"); -DATA(insert OID = 567 ( "<>" PGNSP PGUID b f f 703 703 16 567 566 reltimene neqsel neqjoinsel )); -DESCR("not equal"); -DATA(insert OID = 568 ( "<" PGNSP PGUID b f f 703 703 16 569 571 reltimelt scalarltsel scalarltjoinsel )); -DESCR("less than"); -DATA(insert OID = 569 ( ">" PGNSP PGUID b f f 703 703 16 568 570 reltimegt scalargtsel scalargtjoinsel )); -DESCR("greater than"); -DATA(insert OID = 570 ( "<=" PGNSP PGUID b f f 703 703 16 571 569 reltimele scalarltsel scalarltjoinsel )); -DESCR("less than or equal"); -DATA(insert OID = 571 ( ">=" PGNSP PGUID b f f 703 703 16 570 568 reltimege scalargtsel scalargtjoinsel )); -DESCR("greater than or equal"); -DATA(insert OID = 572 ( "~=" PGNSP PGUID b f f 704 704 16 572 0 tintervalsame eqsel eqjoinsel )); -DESCR("same as"); -DATA(insert OID = 573 ( "<<" PGNSP PGUID b f f 704 704 16 0 0 tintervalct - - )); -DESCR("contains"); -DATA(insert OID = 574 ( "&&" PGNSP PGUID b f f 704 704 16 574 0 tintervalov - - )); -DESCR("overlaps"); -DATA(insert OID = 575 ( "#=" PGNSP PGUID b f f 704 703 16 0 576 tintervalleneq - - )); -DESCR("equal by length"); -DATA(insert OID = 576 ( "#<>" PGNSP PGUID b f f 704 703 16 0 575 tintervallenne - - )); -DESCR("not equal by length"); -DATA(insert OID = 577 ( "#<" PGNSP PGUID b f f 704 703 16 0 580 tintervallenlt - - )); -DESCR("less than by length"); -DATA(insert OID = 578 ( "#>" PGNSP PGUID b f f 704 703 16 0 579 tintervallengt - - )); -DESCR("greater than by length"); -DATA(insert OID = 579 ( "#<=" PGNSP PGUID b f f 704 703 16 0 578 tintervallenle - - )); -DESCR("less than or equal by length"); -DATA(insert OID = 580 ( "#>=" PGNSP PGUID b f f 704 703 16 0 577 tintervallenge - - )); -DESCR("greater than or equal by length"); -DATA(insert OID = 581 ( "+" PGNSP PGUID b f f 702 703 702 0 0 timepl - - )); -DESCR("add"); -DATA(insert OID = 582 ( "-" PGNSP PGUID b f f 702 703 702 0 0 timemi - - )); -DESCR("subtract"); -DATA(insert OID = 583 ( "" PGNSP PGUID b f f 702 704 16 0 0 intinterval - - )); -DESCR("is contained by"); -DATA(insert OID = 584 ( "-" PGNSP PGUID l f f 0 700 700 0 0 float4um - - )); -DESCR("negate"); -DATA(insert OID = 585 ( "-" PGNSP PGUID l f f 0 701 701 0 0 float8um - - )); -DESCR("negate"); -DATA(insert OID = 586 ( "+" PGNSP PGUID b f f 700 700 700 586 0 float4pl - - )); -DESCR("add"); -DATA(insert OID = 587 ( "-" PGNSP PGUID b f f 700 700 700 0 0 float4mi - - )); -DESCR("subtract"); -DATA(insert OID = 588 ( "/" PGNSP PGUID b f f 700 700 700 0 0 float4div - - )); -DESCR("divide"); -DATA(insert OID = 589 ( "*" PGNSP PGUID b f f 700 700 700 589 0 float4mul - - )); -DESCR("multiply"); -DATA(insert OID = 590 ( "@" PGNSP PGUID l f f 0 700 700 0 0 float4abs - - )); -DESCR("absolute value"); -DATA(insert OID = 591 ( "+" PGNSP PGUID b f f 701 701 701 591 0 float8pl - - )); -DESCR("add"); -DATA(insert OID = 592 ( "-" PGNSP PGUID b f f 701 701 701 0 0 float8mi - - )); -DESCR("subtract"); -DATA(insert OID = 593 ( "/" PGNSP PGUID b f f 701 701 701 0 0 float8div - - )); -DESCR("divide"); -DATA(insert OID = 594 ( "*" PGNSP PGUID b f f 701 701 701 594 0 float8mul - - )); -DESCR("multiply"); -DATA(insert OID = 595 ( "@" PGNSP PGUID l f f 0 701 701 0 0 float8abs - - )); -DESCR("absolute value"); -DATA(insert OID = 596 ( "|/" PGNSP PGUID l f f 0 701 701 0 0 dsqrt - - )); -DESCR("square root"); -DATA(insert OID = 597 ( "||/" PGNSP PGUID l f f 0 701 701 0 0 dcbrt - - )); -DESCR("cube root"); -DATA(insert OID = 1284 ( "|" PGNSP PGUID l f f 0 704 702 0 0 tintervalstart - - )); -DESCR("start of interval"); -DATA(insert OID = 606 ( "<#>" PGNSP PGUID b f f 702 702 704 0 0 mktinterval - - )); -DESCR("convert to tinterval"); - -DATA(insert OID = 607 ( "=" PGNSP PGUID b t t 26 26 16 607 608 oideq eqsel eqjoinsel )); -DESCR("equal"); -DATA(insert OID = 608 ( "<>" PGNSP PGUID b f f 26 26 16 608 607 oidne neqsel neqjoinsel )); -DESCR("not equal"); -DATA(insert OID = 609 ( "<" PGNSP PGUID b f f 26 26 16 610 612 oidlt scalarltsel scalarltjoinsel )); -DESCR("less than"); -DATA(insert OID = 610 ( ">" PGNSP PGUID b f f 26 26 16 609 611 oidgt scalargtsel scalargtjoinsel )); -DESCR("greater than"); -DATA(insert OID = 611 ( "<=" PGNSP PGUID b f f 26 26 16 612 610 oidle scalarltsel scalarltjoinsel )); -DESCR("less than or equal"); -DATA(insert OID = 612 ( ">=" PGNSP PGUID b f f 26 26 16 611 609 oidge scalargtsel scalargtjoinsel )); -DESCR("greater than or equal"); - -DATA(insert OID = 644 ( "<>" PGNSP PGUID b f f 30 30 16 644 649 oidvectorne neqsel neqjoinsel )); -DESCR("not equal"); -DATA(insert OID = 645 ( "<" PGNSP PGUID b f f 30 30 16 646 648 oidvectorlt scalarltsel scalarltjoinsel )); -DESCR("less than"); -DATA(insert OID = 646 ( ">" PGNSP PGUID b f f 30 30 16 645 647 oidvectorgt scalargtsel scalargtjoinsel )); -DESCR("greater than"); -DATA(insert OID = 647 ( "<=" PGNSP PGUID b f f 30 30 16 648 646 oidvectorle scalarltsel scalarltjoinsel )); -DESCR("less than or equal"); -DATA(insert OID = 648 ( ">=" PGNSP PGUID b f f 30 30 16 647 645 oidvectorge scalargtsel scalargtjoinsel )); -DESCR("greater than or equal"); -DATA(insert OID = 649 ( "=" PGNSP PGUID b t t 30 30 16 649 644 oidvectoreq eqsel eqjoinsel )); -DESCR("equal"); - -DATA(insert OID = 613 ( "<->" PGNSP PGUID b f f 600 628 701 0 0 dist_pl - - )); -DESCR("distance between"); -DATA(insert OID = 614 ( "<->" PGNSP PGUID b f f 600 601 701 0 0 dist_ps - - )); -DESCR("distance between"); -DATA(insert OID = 615 ( "<->" PGNSP PGUID b f f 600 603 701 0 0 dist_pb - - )); -DESCR("distance between"); -DATA(insert OID = 616 ( "<->" PGNSP PGUID b f f 601 628 701 0 0 dist_sl - - )); -DESCR("distance between"); -DATA(insert OID = 617 ( "<->" PGNSP PGUID b f f 601 603 701 0 0 dist_sb - - )); -DESCR("distance between"); -DATA(insert OID = 618 ( "<->" PGNSP PGUID b f f 600 602 701 0 0 dist_ppath - - )); -DESCR("distance between"); - -DATA(insert OID = 620 ( "=" PGNSP PGUID b t t 700 700 16 620 621 float4eq eqsel eqjoinsel )); -DESCR("equal"); -DATA(insert OID = 621 ( "<>" PGNSP PGUID b f f 700 700 16 621 620 float4ne neqsel neqjoinsel )); -DESCR("not equal"); -DATA(insert OID = 622 ( "<" PGNSP PGUID b f f 700 700 16 623 625 float4lt scalarltsel scalarltjoinsel )); -DESCR("less than"); -DATA(insert OID = 623 ( ">" PGNSP PGUID b f f 700 700 16 622 624 float4gt scalargtsel scalargtjoinsel )); -DESCR("greater than"); -DATA(insert OID = 624 ( "<=" PGNSP PGUID b f f 700 700 16 625 623 float4le scalarltsel scalarltjoinsel )); -DESCR("less than or equal"); -DATA(insert OID = 625 ( ">=" PGNSP PGUID b f f 700 700 16 624 622 float4ge scalargtsel scalargtjoinsel )); -DESCR("greater than or equal"); -DATA(insert OID = 630 ( "<>" PGNSP PGUID b f f 18 18 16 630 92 charne neqsel neqjoinsel )); -DESCR("not equal"); - -DATA(insert OID = 631 ( "<" PGNSP PGUID b f f 18 18 16 633 634 charlt scalarltsel scalarltjoinsel )); -DESCR("less than"); -DATA(insert OID = 632 ( "<=" PGNSP PGUID b f f 18 18 16 634 633 charle scalarltsel scalarltjoinsel )); -DESCR("less than or equal"); -DATA(insert OID = 633 ( ">" PGNSP PGUID b f f 18 18 16 631 632 chargt scalargtsel scalargtjoinsel )); -DESCR("greater than"); -DATA(insert OID = 634 ( ">=" PGNSP PGUID b f f 18 18 16 632 631 charge scalargtsel scalargtjoinsel )); -DESCR("greater than or equal"); - -DATA(insert OID = 639 ( "~" PGNSP PGUID b f f 19 25 16 0 640 nameregexeq regexeqsel regexeqjoinsel )); -DESCR("matches regular expression, case-sensitive"); -#define OID_NAME_REGEXEQ_OP 639 -DATA(insert OID = 640 ( "!~" PGNSP PGUID b f f 19 25 16 0 639 nameregexne regexnesel regexnejoinsel )); -DESCR("does not match regular expression, case-sensitive"); -DATA(insert OID = 641 ( "~" PGNSP PGUID b f f 25 25 16 0 642 textregexeq regexeqsel regexeqjoinsel )); -DESCR("matches regular expression, case-sensitive"); -#define OID_TEXT_REGEXEQ_OP 641 -DATA(insert OID = 642 ( "!~" PGNSP PGUID b f f 25 25 16 0 641 textregexne regexnesel regexnejoinsel )); -DESCR("does not match regular expression, case-sensitive"); -DATA(insert OID = 643 ( "<>" PGNSP PGUID b f f 19 19 16 643 93 namene neqsel neqjoinsel )); -DESCR("not equal"); -DATA(insert OID = 654 ( "||" PGNSP PGUID b f f 25 25 25 0 0 textcat - - )); -DESCR("concatenate"); - -DATA(insert OID = 660 ( "<" PGNSP PGUID b f f 19 19 16 662 663 namelt scalarltsel scalarltjoinsel )); -DESCR("less than"); -DATA(insert OID = 661 ( "<=" PGNSP PGUID b f f 19 19 16 663 662 namele scalarltsel scalarltjoinsel )); -DESCR("less than or equal"); -DATA(insert OID = 662 ( ">" PGNSP PGUID b f f 19 19 16 660 661 namegt scalargtsel scalargtjoinsel )); -DESCR("greater than"); -DATA(insert OID = 663 ( ">=" PGNSP PGUID b f f 19 19 16 661 660 namege scalargtsel scalargtjoinsel )); -DESCR("greater than or equal"); -DATA(insert OID = 664 ( "<" PGNSP PGUID b f f 25 25 16 666 667 text_lt scalarltsel scalarltjoinsel )); -DESCR("less than"); -DATA(insert OID = 665 ( "<=" PGNSP PGUID b f f 25 25 16 667 666 text_le scalarltsel scalarltjoinsel )); -DESCR("less than or equal"); -DATA(insert OID = 666 ( ">" PGNSP PGUID b f f 25 25 16 664 665 text_gt scalargtsel scalargtjoinsel )); -DESCR("greater than"); -DATA(insert OID = 667 ( ">=" PGNSP PGUID b f f 25 25 16 665 664 text_ge scalargtsel scalargtjoinsel )); -DESCR("greater than or equal"); - -DATA(insert OID = 670 ( "=" PGNSP PGUID b t t 701 701 16 670 671 float8eq eqsel eqjoinsel )); -DESCR("equal"); -DATA(insert OID = 671 ( "<>" PGNSP PGUID b f f 701 701 16 671 670 float8ne neqsel neqjoinsel )); -DESCR("not equal"); -DATA(insert OID = 672 ( "<" PGNSP PGUID b f f 701 701 16 674 675 float8lt scalarltsel scalarltjoinsel )); -DESCR("less than"); -#define Float8LessOperator 672 -DATA(insert OID = 673 ( "<=" PGNSP PGUID b f f 701 701 16 675 674 float8le scalarltsel scalarltjoinsel )); -DESCR("less than or equal"); -DATA(insert OID = 674 ( ">" PGNSP PGUID b f f 701 701 16 672 673 float8gt scalargtsel scalargtjoinsel )); -DESCR("greater than"); -DATA(insert OID = 675 ( ">=" PGNSP PGUID b f f 701 701 16 673 672 float8ge scalargtsel scalargtjoinsel )); -DESCR("greater than or equal"); - -DATA(insert OID = 682 ( "@" PGNSP PGUID l f f 0 21 21 0 0 int2abs - - )); -DESCR("absolute value"); -DATA(insert OID = 684 ( "+" PGNSP PGUID b f f 20 20 20 684 0 int8pl - - )); -DESCR("add"); -DATA(insert OID = 685 ( "-" PGNSP PGUID b f f 20 20 20 0 0 int8mi - - )); -DESCR("subtract"); -DATA(insert OID = 686 ( "*" PGNSP PGUID b f f 20 20 20 686 0 int8mul - - )); -DESCR("multiply"); -DATA(insert OID = 687 ( "/" PGNSP PGUID b f f 20 20 20 0 0 int8div - - )); -DESCR("divide"); - -DATA(insert OID = 688 ( "+" PGNSP PGUID b f f 20 23 20 692 0 int84pl - - )); -DESCR("add"); -DATA(insert OID = 689 ( "-" PGNSP PGUID b f f 20 23 20 0 0 int84mi - - )); -DESCR("subtract"); -DATA(insert OID = 690 ( "*" PGNSP PGUID b f f 20 23 20 694 0 int84mul - - )); -DESCR("multiply"); -DATA(insert OID = 691 ( "/" PGNSP PGUID b f f 20 23 20 0 0 int84div - - )); -DESCR("divide"); -DATA(insert OID = 692 ( "+" PGNSP PGUID b f f 23 20 20 688 0 int48pl - - )); -DESCR("add"); -DATA(insert OID = 693 ( "-" PGNSP PGUID b f f 23 20 20 0 0 int48mi - - )); -DESCR("subtract"); -DATA(insert OID = 694 ( "*" PGNSP PGUID b f f 23 20 20 690 0 int48mul - - )); -DESCR("multiply"); -DATA(insert OID = 695 ( "/" PGNSP PGUID b f f 23 20 20 0 0 int48div - - )); -DESCR("divide"); - -DATA(insert OID = 818 ( "+" PGNSP PGUID b f f 20 21 20 822 0 int82pl - - )); -DESCR("add"); -DATA(insert OID = 819 ( "-" PGNSP PGUID b f f 20 21 20 0 0 int82mi - - )); -DESCR("subtract"); -DATA(insert OID = 820 ( "*" PGNSP PGUID b f f 20 21 20 824 0 int82mul - - )); -DESCR("multiply"); -DATA(insert OID = 821 ( "/" PGNSP PGUID b f f 20 21 20 0 0 int82div - - )); -DESCR("divide"); -DATA(insert OID = 822 ( "+" PGNSP PGUID b f f 21 20 20 818 0 int28pl - - )); -DESCR("add"); -DATA(insert OID = 823 ( "-" PGNSP PGUID b f f 21 20 20 0 0 int28mi - - )); -DESCR("subtract"); -DATA(insert OID = 824 ( "*" PGNSP PGUID b f f 21 20 20 820 0 int28mul - - )); -DESCR("multiply"); -DATA(insert OID = 825 ( "/" PGNSP PGUID b f f 21 20 20 0 0 int28div - - )); -DESCR("divide"); - -DATA(insert OID = 706 ( "<->" PGNSP PGUID b f f 603 603 701 706 0 box_distance - - )); -DESCR("distance between"); -DATA(insert OID = 707 ( "<->" PGNSP PGUID b f f 602 602 701 707 0 path_distance - - )); -DESCR("distance between"); -DATA(insert OID = 708 ( "<->" PGNSP PGUID b f f 628 628 701 708 0 line_distance - - )); -DESCR("distance between"); -DATA(insert OID = 709 ( "<->" PGNSP PGUID b f f 601 601 701 709 0 lseg_distance - - )); -DESCR("distance between"); -DATA(insert OID = 712 ( "<->" PGNSP PGUID b f f 604 604 701 712 0 poly_distance - - )); -DESCR("distance between"); - -DATA(insert OID = 713 ( "<>" PGNSP PGUID b f f 600 600 16 713 510 point_ne neqsel neqjoinsel )); -DESCR("not equal"); - -/* add translation/rotation/scaling operators for geometric types. - thomas 97/05/10 */ -DATA(insert OID = 731 ( "+" PGNSP PGUID b f f 600 600 600 731 0 point_add - - )); -DESCR("add points (translate)"); -DATA(insert OID = 732 ( "-" PGNSP PGUID b f f 600 600 600 0 0 point_sub - - )); -DESCR("subtract points (translate)"); -DATA(insert OID = 733 ( "*" PGNSP PGUID b f f 600 600 600 733 0 point_mul - - )); -DESCR("multiply points (scale/rotate)"); -DATA(insert OID = 734 ( "/" PGNSP PGUID b f f 600 600 600 0 0 point_div - - )); -DESCR("divide points (scale/rotate)"); -DATA(insert OID = 735 ( "+" PGNSP PGUID b f f 602 602 602 735 0 path_add - - )); -DESCR("concatenate"); -DATA(insert OID = 736 ( "+" PGNSP PGUID b f f 602 600 602 0 0 path_add_pt - - )); -DESCR("add (translate path)"); -DATA(insert OID = 737 ( "-" PGNSP PGUID b f f 602 600 602 0 0 path_sub_pt - - )); -DESCR("subtract (translate path)"); -DATA(insert OID = 738 ( "*" PGNSP PGUID b f f 602 600 602 0 0 path_mul_pt - - )); -DESCR("multiply (rotate/scale path)"); -DATA(insert OID = 739 ( "/" PGNSP PGUID b f f 602 600 602 0 0 path_div_pt - - )); -DESCR("divide (rotate/scale path)"); -DATA(insert OID = 755 ( "@>" PGNSP PGUID b f f 602 600 16 512 0 path_contain_pt - - )); -DESCR("contains"); -DATA(insert OID = 756 ( "<@" PGNSP PGUID b f f 600 604 16 757 0 pt_contained_poly contsel contjoinsel )); -DESCR("is contained by"); -DATA(insert OID = 757 ( "@>" PGNSP PGUID b f f 604 600 16 756 0 poly_contain_pt contsel contjoinsel )); -DESCR("contains"); -DATA(insert OID = 758 ( "<@" PGNSP PGUID b f f 600 718 16 759 0 pt_contained_circle contsel contjoinsel )); -DESCR("is contained by"); -DATA(insert OID = 759 ( "@>" PGNSP PGUID b f f 718 600 16 758 0 circle_contain_pt contsel contjoinsel )); -DESCR("contains"); - -DATA(insert OID = 773 ( "@" PGNSP PGUID l f f 0 23 23 0 0 int4abs - - )); -DESCR("absolute value"); - -/* additional operators for geometric types - thomas 1997-07-09 */ -DATA(insert OID = 792 ( "=" PGNSP PGUID b f f 602 602 16 792 0 path_n_eq eqsel eqjoinsel )); -DESCR("equal"); -DATA(insert OID = 793 ( "<" PGNSP PGUID b f f 602 602 16 794 0 path_n_lt - - )); -DESCR("less than"); -DATA(insert OID = 794 ( ">" PGNSP PGUID b f f 602 602 16 793 0 path_n_gt - - )); -DESCR("greater than"); -DATA(insert OID = 795 ( "<=" PGNSP PGUID b f f 602 602 16 796 0 path_n_le - - )); -DESCR("less than or equal"); -DATA(insert OID = 796 ( ">=" PGNSP PGUID b f f 602 602 16 795 0 path_n_ge - - )); -DESCR("greater than or equal"); -DATA(insert OID = 797 ( "#" PGNSP PGUID l f f 0 602 23 0 0 path_npoints - - )); -DESCR("number of points"); -DATA(insert OID = 798 ( "?#" PGNSP PGUID b f f 602 602 16 0 0 path_inter - - )); -DESCR("intersect"); -DATA(insert OID = 799 ( "@-@" PGNSP PGUID l f f 0 602 701 0 0 path_length - - )); -DESCR("sum of path segment lengths"); -DATA(insert OID = 800 ( ">^" PGNSP PGUID b f f 603 603 16 0 0 box_above_eq positionsel positionjoinsel )); -DESCR("is above (allows touching)"); -DATA(insert OID = 801 ( "<^" PGNSP PGUID b f f 603 603 16 0 0 box_below_eq positionsel positionjoinsel )); -DESCR("is below (allows touching)"); -DATA(insert OID = 802 ( "?#" PGNSP PGUID b f f 603 603 16 0 0 box_overlap areasel areajoinsel )); -DESCR("deprecated, use && instead"); -DATA(insert OID = 803 ( "#" PGNSP PGUID b f f 603 603 603 0 0 box_intersect - - )); -DESCR("box intersection"); -DATA(insert OID = 804 ( "+" PGNSP PGUID b f f 603 600 603 0 0 box_add - - )); -DESCR("add point to box (translate)"); -DATA(insert OID = 805 ( "-" PGNSP PGUID b f f 603 600 603 0 0 box_sub - - )); -DESCR("subtract point from box (translate)"); -DATA(insert OID = 806 ( "*" PGNSP PGUID b f f 603 600 603 0 0 box_mul - - )); -DESCR("multiply box by point (scale)"); -DATA(insert OID = 807 ( "/" PGNSP PGUID b f f 603 600 603 0 0 box_div - - )); -DESCR("divide box by point (scale)"); -DATA(insert OID = 808 ( "?-" PGNSP PGUID b f f 600 600 16 808 0 point_horiz - - )); -DESCR("horizontally aligned"); -DATA(insert OID = 809 ( "?|" PGNSP PGUID b f f 600 600 16 809 0 point_vert - - )); -DESCR("vertically aligned"); - -DATA(insert OID = 811 ( "=" PGNSP PGUID b t f 704 704 16 811 812 tintervaleq eqsel eqjoinsel )); -DESCR("equal"); -DATA(insert OID = 812 ( "<>" PGNSP PGUID b f f 704 704 16 812 811 tintervalne neqsel neqjoinsel )); -DESCR("not equal"); -DATA(insert OID = 813 ( "<" PGNSP PGUID b f f 704 704 16 814 816 tintervallt scalarltsel scalarltjoinsel )); -DESCR("less than"); -DATA(insert OID = 814 ( ">" PGNSP PGUID b f f 704 704 16 813 815 tintervalgt scalargtsel scalargtjoinsel )); -DESCR("greater than"); -DATA(insert OID = 815 ( "<=" PGNSP PGUID b f f 704 704 16 816 814 tintervalle scalarltsel scalarltjoinsel )); -DESCR("less than or equal"); -DATA(insert OID = 816 ( ">=" PGNSP PGUID b f f 704 704 16 815 813 tintervalge scalargtsel scalargtjoinsel )); -DESCR("greater than or equal"); - -DATA(insert OID = 843 ( "*" PGNSP PGUID b f f 790 700 790 845 0 cash_mul_flt4 - - )); -DESCR("multiply"); -DATA(insert OID = 844 ( "/" PGNSP PGUID b f f 790 700 790 0 0 cash_div_flt4 - - )); -DESCR("divide"); -DATA(insert OID = 845 ( "*" PGNSP PGUID b f f 700 790 790 843 0 flt4_mul_cash - - )); -DESCR("multiply"); - -DATA(insert OID = 900 ( "=" PGNSP PGUID b t f 790 790 16 900 901 cash_eq eqsel eqjoinsel )); -DESCR("equal"); -DATA(insert OID = 901 ( "<>" PGNSP PGUID b f f 790 790 16 901 900 cash_ne neqsel neqjoinsel )); -DESCR("not equal"); -DATA(insert OID = 902 ( "<" PGNSP PGUID b f f 790 790 16 903 905 cash_lt scalarltsel scalarltjoinsel )); -DESCR("less than"); -DATA(insert OID = 903 ( ">" PGNSP PGUID b f f 790 790 16 902 904 cash_gt scalargtsel scalargtjoinsel )); -DESCR("greater than"); -DATA(insert OID = 904 ( "<=" PGNSP PGUID b f f 790 790 16 905 903 cash_le scalarltsel scalarltjoinsel )); -DESCR("less than or equal"); -DATA(insert OID = 905 ( ">=" PGNSP PGUID b f f 790 790 16 904 902 cash_ge scalargtsel scalargtjoinsel )); -DESCR("greater than or equal"); -DATA(insert OID = 906 ( "+" PGNSP PGUID b f f 790 790 790 906 0 cash_pl - - )); -DESCR("add"); -DATA(insert OID = 907 ( "-" PGNSP PGUID b f f 790 790 790 0 0 cash_mi - - )); -DESCR("subtract"); -DATA(insert OID = 908 ( "*" PGNSP PGUID b f f 790 701 790 916 0 cash_mul_flt8 - - )); -DESCR("multiply"); -DATA(insert OID = 909 ( "/" PGNSP PGUID b f f 790 701 790 0 0 cash_div_flt8 - - )); -DESCR("divide"); -DATA(insert OID = 3346 ( "*" PGNSP PGUID b f f 790 20 790 3349 0 cash_mul_int8 - - )); -DESCR("multiply"); -DATA(insert OID = 3347 ( "/" PGNSP PGUID b f f 790 20 790 0 0 cash_div_int8 - - )); -DESCR("divide"); -DATA(insert OID = 912 ( "*" PGNSP PGUID b f f 790 23 790 917 0 cash_mul_int4 - - )); -DESCR("multiply"); -DATA(insert OID = 913 ( "/" PGNSP PGUID b f f 790 23 790 0 0 cash_div_int4 - - )); -DESCR("divide"); -DATA(insert OID = 914 ( "*" PGNSP PGUID b f f 790 21 790 918 0 cash_mul_int2 - - )); -DESCR("multiply"); -DATA(insert OID = 915 ( "/" PGNSP PGUID b f f 790 21 790 0 0 cash_div_int2 - - )); -DESCR("divide"); -DATA(insert OID = 916 ( "*" PGNSP PGUID b f f 701 790 790 908 0 flt8_mul_cash - - )); -DESCR("multiply"); -DATA(insert OID = 3349 ( "*" PGNSP PGUID b f f 20 790 790 3346 0 int8_mul_cash - - )); -DESCR("multiply"); -DATA(insert OID = 917 ( "*" PGNSP PGUID b f f 23 790 790 912 0 int4_mul_cash - - )); -DESCR("multiply"); -DATA(insert OID = 918 ( "*" PGNSP PGUID b f f 21 790 790 914 0 int2_mul_cash - - )); -DESCR("multiply"); -DATA(insert OID = 3825 ( "/" PGNSP PGUID b f f 790 790 701 0 0 cash_div_cash - - )); -DESCR("divide"); - -DATA(insert OID = 965 ( "^" PGNSP PGUID b f f 701 701 701 0 0 dpow - - )); -DESCR("exponentiation"); -DATA(insert OID = 966 ( "+" PGNSP PGUID b f f 1034 1033 1034 0 0 aclinsert - - )); -DESCR("add/update ACL item"); -DATA(insert OID = 967 ( "-" PGNSP PGUID b f f 1034 1033 1034 0 0 aclremove - - )); -DESCR("remove ACL item"); -DATA(insert OID = 968 ( "@>" PGNSP PGUID b f f 1034 1033 16 0 0 aclcontains - - )); -DESCR("contains"); -DATA(insert OID = 974 ( "=" PGNSP PGUID b f t 1033 1033 16 974 0 aclitemeq eqsel eqjoinsel )); -DESCR("equal"); - -/* additional geometric operators - thomas 1997-07-09 */ -DATA(insert OID = 969 ( "@@" PGNSP PGUID l f f 0 601 600 0 0 lseg_center - - )); -DESCR("center of"); -DATA(insert OID = 970 ( "@@" PGNSP PGUID l f f 0 602 600 0 0 path_center - - )); -DESCR("center of"); -DATA(insert OID = 971 ( "@@" PGNSP PGUID l f f 0 604 600 0 0 poly_center - - )); -DESCR("center of"); - -DATA(insert OID = 1054 ( "=" PGNSP PGUID b t t 1042 1042 16 1054 1057 bpchareq eqsel eqjoinsel )); -DESCR("equal"); - -DATA(insert OID = 1055 ( "~" PGNSP PGUID b f f 1042 25 16 0 1056 bpcharregexeq regexeqsel regexeqjoinsel )); -DESCR("matches regular expression, case-sensitive"); -#define OID_BPCHAR_REGEXEQ_OP 1055 -DATA(insert OID = 1056 ( "!~" PGNSP PGUID b f f 1042 25 16 0 1055 bpcharregexne regexnesel regexnejoinsel )); -DESCR("does not match regular expression, case-sensitive"); -DATA(insert OID = 1057 ( "<>" PGNSP PGUID b f f 1042 1042 16 1057 1054 bpcharne neqsel neqjoinsel )); -DESCR("not equal"); -DATA(insert OID = 1058 ( "<" PGNSP PGUID b f f 1042 1042 16 1060 1061 bpcharlt scalarltsel scalarltjoinsel )); -DESCR("less than"); -DATA(insert OID = 1059 ( "<=" PGNSP PGUID b f f 1042 1042 16 1061 1060 bpcharle scalarltsel scalarltjoinsel )); -DESCR("less than or equal"); -DATA(insert OID = 1060 ( ">" PGNSP PGUID b f f 1042 1042 16 1058 1059 bpchargt scalargtsel scalargtjoinsel )); -DESCR("greater than"); -DATA(insert OID = 1061 ( ">=" PGNSP PGUID b f f 1042 1042 16 1059 1058 bpcharge scalargtsel scalargtjoinsel )); -DESCR("greater than or equal"); - -/* generic array comparison operators */ -DATA(insert OID = 1070 ( "=" PGNSP PGUID b t t 2277 2277 16 1070 1071 array_eq eqsel eqjoinsel )); -DESCR("equal"); -#define ARRAY_EQ_OP 1070 -DATA(insert OID = 1071 ( "<>" PGNSP PGUID b f f 2277 2277 16 1071 1070 array_ne neqsel neqjoinsel )); -DESCR("not equal"); -DATA(insert OID = 1072 ( "<" PGNSP PGUID b f f 2277 2277 16 1073 1075 array_lt scalarltsel scalarltjoinsel )); -DESCR("less than"); -#define ARRAY_LT_OP 1072 -DATA(insert OID = 1073 ( ">" PGNSP PGUID b f f 2277 2277 16 1072 1074 array_gt scalargtsel scalargtjoinsel )); -DESCR("greater than"); -#define ARRAY_GT_OP 1073 -DATA(insert OID = 1074 ( "<=" PGNSP PGUID b f f 2277 2277 16 1075 1073 array_le scalarltsel scalarltjoinsel )); -DESCR("less than or equal"); -DATA(insert OID = 1075 ( ">=" PGNSP PGUID b f f 2277 2277 16 1074 1072 array_ge scalargtsel scalargtjoinsel )); -DESCR("greater than or equal"); - -/* date operators */ -DATA(insert OID = 1076 ( "+" PGNSP PGUID b f f 1082 1186 1114 2551 0 date_pl_interval - - )); -DESCR("add"); -DATA(insert OID = 1077 ( "-" PGNSP PGUID b f f 1082 1186 1114 0 0 date_mi_interval - - )); -DESCR("subtract"); -DATA(insert OID = 1093 ( "=" PGNSP PGUID b t t 1082 1082 16 1093 1094 date_eq eqsel eqjoinsel )); -DESCR("equal"); -DATA(insert OID = 1094 ( "<>" PGNSP PGUID b f f 1082 1082 16 1094 1093 date_ne neqsel neqjoinsel )); -DESCR("not equal"); -DATA(insert OID = 1095 ( "<" PGNSP PGUID b f f 1082 1082 16 1097 1098 date_lt scalarltsel scalarltjoinsel )); -DESCR("less than"); -DATA(insert OID = 1096 ( "<=" PGNSP PGUID b f f 1082 1082 16 1098 1097 date_le scalarltsel scalarltjoinsel )); -DESCR("less than or equal"); -DATA(insert OID = 1097 ( ">" PGNSP PGUID b f f 1082 1082 16 1095 1096 date_gt scalargtsel scalargtjoinsel )); -DESCR("greater than"); -DATA(insert OID = 1098 ( ">=" PGNSP PGUID b f f 1082 1082 16 1096 1095 date_ge scalargtsel scalargtjoinsel )); -DESCR("greater than or equal"); -DATA(insert OID = 1099 ( "-" PGNSP PGUID b f f 1082 1082 23 0 0 date_mi - - )); -DESCR("subtract"); -DATA(insert OID = 1100 ( "+" PGNSP PGUID b f f 1082 23 1082 2555 0 date_pli - - )); -DESCR("add"); -DATA(insert OID = 1101 ( "-" PGNSP PGUID b f f 1082 23 1082 0 0 date_mii - - )); -DESCR("subtract"); - -/* time operators */ -DATA(insert OID = 1108 ( "=" PGNSP PGUID b t t 1083 1083 16 1108 1109 time_eq eqsel eqjoinsel )); -DESCR("equal"); -DATA(insert OID = 1109 ( "<>" PGNSP PGUID b f f 1083 1083 16 1109 1108 time_ne neqsel neqjoinsel )); -DESCR("not equal"); -DATA(insert OID = 1110 ( "<" PGNSP PGUID b f f 1083 1083 16 1112 1113 time_lt scalarltsel scalarltjoinsel )); -DESCR("less than"); -DATA(insert OID = 1111 ( "<=" PGNSP PGUID b f f 1083 1083 16 1113 1112 time_le scalarltsel scalarltjoinsel )); -DESCR("less than or equal"); -DATA(insert OID = 1112 ( ">" PGNSP PGUID b f f 1083 1083 16 1110 1111 time_gt scalargtsel scalargtjoinsel )); -DESCR("greater than"); -DATA(insert OID = 1113 ( ">=" PGNSP PGUID b f f 1083 1083 16 1111 1110 time_ge scalargtsel scalargtjoinsel )); -DESCR("greater than or equal"); + Oid oid; /* oid */ -/* timetz operators */ -DATA(insert OID = 1550 ( "=" PGNSP PGUID b t t 1266 1266 16 1550 1551 timetz_eq eqsel eqjoinsel )); -DESCR("equal"); -DATA(insert OID = 1551 ( "<>" PGNSP PGUID b f f 1266 1266 16 1551 1550 timetz_ne neqsel neqjoinsel )); -DESCR("not equal"); -DATA(insert OID = 1552 ( "<" PGNSP PGUID b f f 1266 1266 16 1554 1555 timetz_lt scalarltsel scalarltjoinsel )); -DESCR("less than"); -DATA(insert OID = 1553 ( "<=" PGNSP PGUID b f f 1266 1266 16 1555 1554 timetz_le scalarltsel scalarltjoinsel )); -DESCR("less than or equal"); -DATA(insert OID = 1554 ( ">" PGNSP PGUID b f f 1266 1266 16 1552 1553 timetz_gt scalargtsel scalargtjoinsel )); -DESCR("greater than"); -DATA(insert OID = 1555 ( ">=" PGNSP PGUID b f f 1266 1266 16 1553 1552 timetz_ge scalargtsel scalargtjoinsel )); -DESCR("greater than or equal"); + /* name of operator */ + NameData oprname; -/* float48 operators */ -DATA(insert OID = 1116 ( "+" PGNSP PGUID b f f 700 701 701 1126 0 float48pl - - )); -DESCR("add"); -DATA(insert OID = 1117 ( "-" PGNSP PGUID b f f 700 701 701 0 0 float48mi - - )); -DESCR("subtract"); -DATA(insert OID = 1118 ( "/" PGNSP PGUID b f f 700 701 701 0 0 float48div - - )); -DESCR("divide"); -DATA(insert OID = 1119 ( "*" PGNSP PGUID b f f 700 701 701 1129 0 float48mul - - )); -DESCR("multiply"); -DATA(insert OID = 1120 ( "=" PGNSP PGUID b t t 700 701 16 1130 1121 float48eq eqsel eqjoinsel )); -DESCR("equal"); -DATA(insert OID = 1121 ( "<>" PGNSP PGUID b f f 700 701 16 1131 1120 float48ne neqsel neqjoinsel )); -DESCR("not equal"); -DATA(insert OID = 1122 ( "<" PGNSP PGUID b f f 700 701 16 1133 1125 float48lt scalarltsel scalarltjoinsel )); -DESCR("less than"); -DATA(insert OID = 1123 ( ">" PGNSP PGUID b f f 700 701 16 1132 1124 float48gt scalargtsel scalargtjoinsel )); -DESCR("greater than"); -DATA(insert OID = 1124 ( "<=" PGNSP PGUID b f f 700 701 16 1135 1123 float48le scalarltsel scalarltjoinsel )); -DESCR("less than or equal"); -DATA(insert OID = 1125 ( ">=" PGNSP PGUID b f f 700 701 16 1134 1122 float48ge scalargtsel scalargtjoinsel )); -DESCR("greater than or equal"); + /* OID of namespace containing this oper */ + Oid oprnamespace BKI_DEFAULT(PGNSP); -/* float84 operators */ -DATA(insert OID = 1126 ( "+" PGNSP PGUID b f f 701 700 701 1116 0 float84pl - - )); -DESCR("add"); -DATA(insert OID = 1127 ( "-" PGNSP PGUID b f f 701 700 701 0 0 float84mi - - )); -DESCR("subtract"); -DATA(insert OID = 1128 ( "/" PGNSP PGUID b f f 701 700 701 0 0 float84div - - )); -DESCR("divide"); -DATA(insert OID = 1129 ( "*" PGNSP PGUID b f f 701 700 701 1119 0 float84mul - - )); -DESCR("multiply"); -DATA(insert OID = 1130 ( "=" PGNSP PGUID b t t 701 700 16 1120 1131 float84eq eqsel eqjoinsel )); -DESCR("equal"); -DATA(insert OID = 1131 ( "<>" PGNSP PGUID b f f 701 700 16 1121 1130 float84ne neqsel neqjoinsel )); -DESCR("not equal"); -DATA(insert OID = 1132 ( "<" PGNSP PGUID b f f 701 700 16 1123 1135 float84lt scalarltsel scalarltjoinsel )); -DESCR("less than"); -DATA(insert OID = 1133 ( ">" PGNSP PGUID b f f 701 700 16 1122 1134 float84gt scalargtsel scalargtjoinsel )); -DESCR("greater than"); -DATA(insert OID = 1134 ( "<=" PGNSP PGUID b f f 701 700 16 1125 1133 float84le scalarltsel scalarltjoinsel )); -DESCR("less than or equal"); -DATA(insert OID = 1135 ( ">=" PGNSP PGUID b f f 701 700 16 1124 1132 float84ge scalargtsel scalargtjoinsel )); -DESCR("greater than or equal"); + /* operator owner */ + Oid oprowner BKI_DEFAULT(PGUID); + /* 'l', 'r', or 'b' */ + char oprkind BKI_DEFAULT(b); -/* LIKE hacks by Keith Parks. */ -DATA(insert OID = 1207 ( "~~" PGNSP PGUID b f f 19 25 16 0 1208 namelike likesel likejoinsel )); -DESCR("matches LIKE expression"); -#define OID_NAME_LIKE_OP 1207 -DATA(insert OID = 1208 ( "!~~" PGNSP PGUID b f f 19 25 16 0 1207 namenlike nlikesel nlikejoinsel )); -DESCR("does not match LIKE expression"); -DATA(insert OID = 1209 ( "~~" PGNSP PGUID b f f 25 25 16 0 1210 textlike likesel likejoinsel )); -DESCR("matches LIKE expression"); -#define OID_TEXT_LIKE_OP 1209 -DATA(insert OID = 1210 ( "!~~" PGNSP PGUID b f f 25 25 16 0 1209 textnlike nlikesel nlikejoinsel )); -DESCR("does not match LIKE expression"); -DATA(insert OID = 1211 ( "~~" PGNSP PGUID b f f 1042 25 16 0 1212 bpcharlike likesel likejoinsel )); -DESCR("matches LIKE expression"); -#define OID_BPCHAR_LIKE_OP 1211 -DATA(insert OID = 1212 ( "!~~" PGNSP PGUID b f f 1042 25 16 0 1211 bpcharnlike nlikesel nlikejoinsel )); -DESCR("does not match LIKE expression"); + /* can be used in merge join? */ + bool oprcanmerge BKI_DEFAULT(f); -/* case-insensitive regex hacks */ -DATA(insert OID = 1226 ( "~*" PGNSP PGUID b f f 19 25 16 0 1227 nameicregexeq icregexeqsel icregexeqjoinsel )); -DESCR("matches regular expression, case-insensitive"); -#define OID_NAME_ICREGEXEQ_OP 1226 -DATA(insert OID = 1227 ( "!~*" PGNSP PGUID b f f 19 25 16 0 1226 nameicregexne icregexnesel icregexnejoinsel )); -DESCR("does not match regular expression, case-insensitive"); -DATA(insert OID = 1228 ( "~*" PGNSP PGUID b f f 25 25 16 0 1229 texticregexeq icregexeqsel icregexeqjoinsel )); -DESCR("matches regular expression, case-insensitive"); -#define OID_TEXT_ICREGEXEQ_OP 1228 -DATA(insert OID = 1229 ( "!~*" PGNSP PGUID b f f 25 25 16 0 1228 texticregexne icregexnesel icregexnejoinsel )); -DESCR("does not match regular expression, case-insensitive"); -DATA(insert OID = 1234 ( "~*" PGNSP PGUID b f f 1042 25 16 0 1235 bpcharicregexeq icregexeqsel icregexeqjoinsel )); -DESCR("matches regular expression, case-insensitive"); -#define OID_BPCHAR_ICREGEXEQ_OP 1234 -DATA(insert OID = 1235 ( "!~*" PGNSP PGUID b f f 1042 25 16 0 1234 bpcharicregexne icregexnesel icregexnejoinsel )); -DESCR("does not match regular expression, case-insensitive"); + /* can be used in hash join? */ + bool oprcanhash BKI_DEFAULT(f); -/* timestamptz operators */ -DATA(insert OID = 1320 ( "=" PGNSP PGUID b t t 1184 1184 16 1320 1321 timestamptz_eq eqsel eqjoinsel )); -DESCR("equal"); -DATA(insert OID = 1321 ( "<>" PGNSP PGUID b f f 1184 1184 16 1321 1320 timestamptz_ne neqsel neqjoinsel )); -DESCR("not equal"); -DATA(insert OID = 1322 ( "<" PGNSP PGUID b f f 1184 1184 16 1324 1325 timestamptz_lt scalarltsel scalarltjoinsel )); -DESCR("less than"); -DATA(insert OID = 1323 ( "<=" PGNSP PGUID b f f 1184 1184 16 1325 1324 timestamptz_le scalarltsel scalarltjoinsel )); -DESCR("less than or equal"); -DATA(insert OID = 1324 ( ">" PGNSP PGUID b f f 1184 1184 16 1322 1323 timestamptz_gt scalargtsel scalargtjoinsel )); -DESCR("greater than"); -DATA(insert OID = 1325 ( ">=" PGNSP PGUID b f f 1184 1184 16 1323 1322 timestamptz_ge scalargtsel scalargtjoinsel )); -DESCR("greater than or equal"); -DATA(insert OID = 1327 ( "+" PGNSP PGUID b f f 1184 1186 1184 2554 0 timestamptz_pl_interval - - )); -DESCR("add"); -DATA(insert OID = 1328 ( "-" PGNSP PGUID b f f 1184 1184 1186 0 0 timestamptz_mi - - )); -DESCR("subtract"); -DATA(insert OID = 1329 ( "-" PGNSP PGUID b f f 1184 1186 1184 0 0 timestamptz_mi_interval - - )); -DESCR("subtract"); + /* left arg type, or 0 if 'l' oprkind */ + Oid oprleft BKI_LOOKUP(pg_type); -/* interval operators */ -DATA(insert OID = 1330 ( "=" PGNSP PGUID b t t 1186 1186 16 1330 1331 interval_eq eqsel eqjoinsel )); -DESCR("equal"); -DATA(insert OID = 1331 ( "<>" PGNSP PGUID b f f 1186 1186 16 1331 1330 interval_ne neqsel neqjoinsel )); -DESCR("not equal"); -DATA(insert OID = 1332 ( "<" PGNSP PGUID b f f 1186 1186 16 1334 1335 interval_lt scalarltsel scalarltjoinsel )); -DESCR("less than"); -DATA(insert OID = 1333 ( "<=" PGNSP PGUID b f f 1186 1186 16 1335 1334 interval_le scalarltsel scalarltjoinsel )); -DESCR("less than or equal"); -DATA(insert OID = 1334 ( ">" PGNSP PGUID b f f 1186 1186 16 1332 1333 interval_gt scalargtsel scalargtjoinsel )); -DESCR("greater than"); -DATA(insert OID = 1335 ( ">=" PGNSP PGUID b f f 1186 1186 16 1333 1332 interval_ge scalargtsel scalargtjoinsel )); -DESCR("greater than or equal"); + /* right arg type, or 0 if 'r' oprkind */ + Oid oprright BKI_LOOKUP(pg_type); -DATA(insert OID = 1336 ( "-" PGNSP PGUID l f f 0 1186 1186 0 0 interval_um - - )); -DESCR("negate"); -DATA(insert OID = 1337 ( "+" PGNSP PGUID b f f 1186 1186 1186 1337 0 interval_pl - - )); -DESCR("add"); -DATA(insert OID = 1338 ( "-" PGNSP PGUID b f f 1186 1186 1186 0 0 interval_mi - - )); -DESCR("subtract"); + /* result datatype */ + Oid oprresult BKI_LOOKUP(pg_type); -DATA(insert OID = 1360 ( "+" PGNSP PGUID b f f 1082 1083 1114 1363 0 datetime_pl - - )); -DESCR("convert date and time to timestamp"); -DATA(insert OID = 1361 ( "+" PGNSP PGUID b f f 1082 1266 1184 1366 0 datetimetz_pl - - )); -DESCR("convert date and time with time zone to timestamp with time zone"); -DATA(insert OID = 1363 ( "+" PGNSP PGUID b f f 1083 1082 1114 1360 0 timedate_pl - - )); -DESCR("convert time and date to timestamp"); -DATA(insert OID = 1366 ( "+" PGNSP PGUID b f f 1266 1082 1184 1361 0 timetzdate_pl - - )); -DESCR("convert time with time zone and date to timestamp with time zone"); + /* OID of commutator oper, or 0 if none */ + Oid oprcom BKI_DEFAULT(0) BKI_LOOKUP(pg_operator); -DATA(insert OID = 1399 ( "-" PGNSP PGUID b f f 1083 1083 1186 0 0 time_mi_time - - )); -DESCR("subtract"); + /* OID of negator oper, or 0 if none */ + Oid oprnegate BKI_DEFAULT(0) BKI_LOOKUP(pg_operator); -/* additional geometric operators - thomas 97/04/18 */ -DATA(insert OID = 1420 ( "@@" PGNSP PGUID l f f 0 718 600 0 0 circle_center - - )); -DESCR("center of"); -DATA(insert OID = 1500 ( "=" PGNSP PGUID b f f 718 718 16 1500 1501 circle_eq eqsel eqjoinsel )); -DESCR("equal by area"); -DATA(insert OID = 1501 ( "<>" PGNSP PGUID b f f 718 718 16 1501 1500 circle_ne neqsel neqjoinsel )); -DESCR("not equal by area"); -DATA(insert OID = 1502 ( "<" PGNSP PGUID b f f 718 718 16 1503 1505 circle_lt areasel areajoinsel )); -DESCR("less than by area"); -DATA(insert OID = 1503 ( ">" PGNSP PGUID b f f 718 718 16 1502 1504 circle_gt areasel areajoinsel )); -DESCR("greater than by area"); -DATA(insert OID = 1504 ( "<=" PGNSP PGUID b f f 718 718 16 1505 1503 circle_le areasel areajoinsel )); -DESCR("less than or equal by area"); -DATA(insert OID = 1505 ( ">=" PGNSP PGUID b f f 718 718 16 1504 1502 circle_ge areasel areajoinsel )); -DESCR("greater than or equal by area"); + /* OID of underlying function */ + regproc oprcode BKI_LOOKUP(pg_proc); -DATA(insert OID = 1506 ( "<<" PGNSP PGUID b f f 718 718 16 0 0 circle_left positionsel positionjoinsel )); -DESCR("is left of"); -DATA(insert OID = 1507 ( "&<" PGNSP PGUID b f f 718 718 16 0 0 circle_overleft positionsel positionjoinsel )); -DESCR("overlaps or is left of"); -DATA(insert OID = 1508 ( "&>" PGNSP PGUID b f f 718 718 16 0 0 circle_overright positionsel positionjoinsel )); -DESCR("overlaps or is right of"); -DATA(insert OID = 1509 ( ">>" PGNSP PGUID b f f 718 718 16 0 0 circle_right positionsel positionjoinsel )); -DESCR("is right of"); -DATA(insert OID = 1510 ( "<@" PGNSP PGUID b f f 718 718 16 1511 0 circle_contained contsel contjoinsel )); -DESCR("is contained by"); -DATA(insert OID = 1511 ( "@>" PGNSP PGUID b f f 718 718 16 1510 0 circle_contain contsel contjoinsel )); -DESCR("contains"); -DATA(insert OID = 1512 ( "~=" PGNSP PGUID b f f 718 718 16 1512 0 circle_same eqsel eqjoinsel )); -DESCR("same as"); -DATA(insert OID = 1513 ( "&&" PGNSP PGUID b f f 718 718 16 1513 0 circle_overlap areasel areajoinsel )); -DESCR("overlaps"); -DATA(insert OID = 1514 ( "|>>" PGNSP PGUID b f f 718 718 16 0 0 circle_above positionsel positionjoinsel )); -DESCR("is above"); -DATA(insert OID = 1515 ( "<<|" PGNSP PGUID b f f 718 718 16 0 0 circle_below positionsel positionjoinsel )); -DESCR("is below"); + /* OID of restriction estimator, or 0 */ + regproc oprrest BKI_DEFAULT(-) BKI_LOOKUP(pg_proc); -DATA(insert OID = 1516 ( "+" PGNSP PGUID b f f 718 600 718 0 0 circle_add_pt - - )); -DESCR("add"); -DATA(insert OID = 1517 ( "-" PGNSP PGUID b f f 718 600 718 0 0 circle_sub_pt - - )); -DESCR("subtract"); -DATA(insert OID = 1518 ( "*" PGNSP PGUID b f f 718 600 718 0 0 circle_mul_pt - - )); -DESCR("multiply"); -DATA(insert OID = 1519 ( "/" PGNSP PGUID b f f 718 600 718 0 0 circle_div_pt - - )); -DESCR("divide"); - -DATA(insert OID = 1520 ( "<->" PGNSP PGUID b f f 718 718 701 1520 0 circle_distance - - )); -DESCR("distance between"); -DATA(insert OID = 1521 ( "#" PGNSP PGUID l f f 0 604 23 0 0 poly_npoints - - )); -DESCR("number of points"); -DATA(insert OID = 1522 ( "<->" PGNSP PGUID b f f 600 718 701 3291 0 dist_pc - - )); -DESCR("distance between"); -DATA(insert OID = 3291 ( "<->" PGNSP PGUID b f f 718 600 701 1522 0 dist_cpoint - - )); -DESCR("distance between"); -DATA(insert OID = 3276 ( "<->" PGNSP PGUID b f f 600 604 701 3289 0 dist_ppoly - - )); -DESCR("distance between"); -DATA(insert OID = 3289 ( "<->" PGNSP PGUID b f f 604 600 701 3276 0 dist_polyp - - )); -DESCR("distance between"); -DATA(insert OID = 1523 ( "<->" PGNSP PGUID b f f 718 604 701 0 0 dist_cpoly - - )); -DESCR("distance between"); - -/* additional geometric operators - thomas 1997-07-09 */ -DATA(insert OID = 1524 ( "<->" PGNSP PGUID b f f 628 603 701 0 0 dist_lb - - )); -DESCR("distance between"); - -DATA(insert OID = 1525 ( "?#" PGNSP PGUID b f f 601 601 16 1525 0 lseg_intersect - - )); -DESCR("intersect"); -DATA(insert OID = 1526 ( "?||" PGNSP PGUID b f f 601 601 16 1526 0 lseg_parallel - - )); -DESCR("parallel"); -DATA(insert OID = 1527 ( "?-|" PGNSP PGUID b f f 601 601 16 1527 0 lseg_perp - - )); -DESCR("perpendicular"); -DATA(insert OID = 1528 ( "?-" PGNSP PGUID l f f 0 601 16 0 0 lseg_horizontal - - )); -DESCR("horizontal"); -DATA(insert OID = 1529 ( "?|" PGNSP PGUID l f f 0 601 16 0 0 lseg_vertical - - )); -DESCR("vertical"); -DATA(insert OID = 1535 ( "=" PGNSP PGUID b f f 601 601 16 1535 1586 lseg_eq eqsel eqjoinsel )); -DESCR("equal"); -DATA(insert OID = 1536 ( "#" PGNSP PGUID b f f 601 601 600 1536 0 lseg_interpt - - )); -DESCR("intersection point"); -DATA(insert OID = 1537 ( "?#" PGNSP PGUID b f f 601 628 16 0 0 inter_sl - - )); -DESCR("intersect"); -DATA(insert OID = 1538 ( "?#" PGNSP PGUID b f f 601 603 16 0 0 inter_sb - - )); -DESCR("intersect"); -DATA(insert OID = 1539 ( "?#" PGNSP PGUID b f f 628 603 16 0 0 inter_lb - - )); -DESCR("intersect"); - -DATA(insert OID = 1546 ( "<@" PGNSP PGUID b f f 600 628 16 0 0 on_pl - - )); -DESCR("point on line"); -DATA(insert OID = 1547 ( "<@" PGNSP PGUID b f f 600 601 16 0 0 on_ps - - )); -DESCR("is contained by"); -DATA(insert OID = 1548 ( "<@" PGNSP PGUID b f f 601 628 16 0 0 on_sl - - )); -DESCR("lseg on line"); -DATA(insert OID = 1549 ( "<@" PGNSP PGUID b f f 601 603 16 0 0 on_sb - - )); -DESCR("is contained by"); - -DATA(insert OID = 1557 ( "##" PGNSP PGUID b f f 600 628 600 0 0 close_pl - - )); -DESCR("closest point to A on B"); -DATA(insert OID = 1558 ( "##" PGNSP PGUID b f f 600 601 600 0 0 close_ps - - )); -DESCR("closest point to A on B"); -DATA(insert OID = 1559 ( "##" PGNSP PGUID b f f 600 603 600 0 0 close_pb - - )); -DESCR("closest point to A on B"); - -DATA(insert OID = 1566 ( "##" PGNSP PGUID b f f 601 628 600 0 0 close_sl - - )); -DESCR("closest point to A on B"); -DATA(insert OID = 1567 ( "##" PGNSP PGUID b f f 601 603 600 0 0 close_sb - - )); -DESCR("closest point to A on B"); -DATA(insert OID = 1568 ( "##" PGNSP PGUID b f f 628 603 600 0 0 close_lb - - )); -DESCR("closest point to A on B"); -DATA(insert OID = 1577 ( "##" PGNSP PGUID b f f 628 601 600 0 0 close_ls - - )); -DESCR("closest point to A on B"); -DATA(insert OID = 1578 ( "##" PGNSP PGUID b f f 601 601 600 0 0 close_lseg - - )); -DESCR("closest point to A on B"); -DATA(insert OID = 1583 ( "*" PGNSP PGUID b f f 1186 701 1186 1584 0 interval_mul - - )); -DESCR("multiply"); -DATA(insert OID = 1584 ( "*" PGNSP PGUID b f f 701 1186 1186 1583 0 mul_d_interval - - )); -DESCR("multiply"); -DATA(insert OID = 1585 ( "/" PGNSP PGUID b f f 1186 701 1186 0 0 interval_div - - )); -DESCR("divide"); - -DATA(insert OID = 1586 ( "<>" PGNSP PGUID b f f 601 601 16 1586 1535 lseg_ne neqsel neqjoinsel )); -DESCR("not equal"); -DATA(insert OID = 1587 ( "<" PGNSP PGUID b f f 601 601 16 1589 1590 lseg_lt - - )); -DESCR("less than by length"); -DATA(insert OID = 1588 ( "<=" PGNSP PGUID b f f 601 601 16 1590 1589 lseg_le - - )); -DESCR("less than or equal by length"); -DATA(insert OID = 1589 ( ">" PGNSP PGUID b f f 601 601 16 1587 1588 lseg_gt - - )); -DESCR("greater than by length"); -DATA(insert OID = 1590 ( ">=" PGNSP PGUID b f f 601 601 16 1588 1587 lseg_ge - - )); -DESCR("greater than or equal by length"); - -DATA(insert OID = 1591 ( "@-@" PGNSP PGUID l f f 0 601 701 0 0 lseg_length - - )); -DESCR("distance between endpoints"); - -DATA(insert OID = 1611 ( "?#" PGNSP PGUID b f f 628 628 16 1611 0 line_intersect - - )); -DESCR("intersect"); -DATA(insert OID = 1612 ( "?||" PGNSP PGUID b f f 628 628 16 1612 0 line_parallel - - )); -DESCR("parallel"); -DATA(insert OID = 1613 ( "?-|" PGNSP PGUID b f f 628 628 16 1613 0 line_perp - - )); -DESCR("perpendicular"); -DATA(insert OID = 1614 ( "?-" PGNSP PGUID l f f 0 628 16 0 0 line_horizontal - - )); -DESCR("horizontal"); -DATA(insert OID = 1615 ( "?|" PGNSP PGUID l f f 0 628 16 0 0 line_vertical - - )); -DESCR("vertical"); -DATA(insert OID = 1616 ( "=" PGNSP PGUID b f f 628 628 16 1616 0 line_eq eqsel eqjoinsel )); -DESCR("equal"); -DATA(insert OID = 1617 ( "#" PGNSP PGUID b f f 628 628 600 1617 0 line_interpt - - )); -DESCR("intersection point"); - -/* MACADDR type */ -DATA(insert OID = 1220 ( "=" PGNSP PGUID b t t 829 829 16 1220 1221 macaddr_eq eqsel eqjoinsel )); -DESCR("equal"); -DATA(insert OID = 1221 ( "<>" PGNSP PGUID b f f 829 829 16 1221 1220 macaddr_ne neqsel neqjoinsel )); -DESCR("not equal"); -DATA(insert OID = 1222 ( "<" PGNSP PGUID b f f 829 829 16 1224 1225 macaddr_lt scalarltsel scalarltjoinsel )); -DESCR("less than"); -DATA(insert OID = 1223 ( "<=" PGNSP PGUID b f f 829 829 16 1225 1224 macaddr_le scalarltsel scalarltjoinsel )); -DESCR("less than or equal"); -DATA(insert OID = 1224 ( ">" PGNSP PGUID b f f 829 829 16 1222 1223 macaddr_gt scalargtsel scalargtjoinsel )); -DESCR("greater than"); -DATA(insert OID = 1225 ( ">=" PGNSP PGUID b f f 829 829 16 1223 1222 macaddr_ge scalargtsel scalargtjoinsel )); -DESCR("greater than or equal"); - -DATA(insert OID = 3147 ( "~" PGNSP PGUID l f f 0 829 829 0 0 macaddr_not - - )); -DESCR("bitwise not"); -DATA(insert OID = 3148 ( "&" PGNSP PGUID b f f 829 829 829 0 0 macaddr_and - - )); -DESCR("bitwise and"); -DATA(insert OID = 3149 ( "|" PGNSP PGUID b f f 829 829 829 0 0 macaddr_or - - )); -DESCR("bitwise or"); - -/* MACADDR8 type */ -DATA(insert OID = 3362 ( "=" PGNSP PGUID b t t 774 774 16 3362 3363 macaddr8_eq eqsel eqjoinsel )); -DESCR("equal"); -DATA(insert OID = 3363 ( "<>" PGNSP PGUID b f f 774 774 16 3363 3362 macaddr8_ne neqsel neqjoinsel )); -DESCR("not equal"); -DATA(insert OID = 3364 ( "<" PGNSP PGUID b f f 774 774 16 3366 3367 macaddr8_lt scalarltsel scalarltjoinsel )); -DESCR("less than"); -DATA(insert OID = 3365 ( "<=" PGNSP PGUID b f f 774 774 16 3367 3366 macaddr8_le scalarltsel scalarltjoinsel )); -DESCR("less than or equal"); -DATA(insert OID = 3366 ( ">" PGNSP PGUID b f f 774 774 16 3364 3365 macaddr8_gt scalargtsel scalargtjoinsel )); -DESCR("greater than"); -DATA(insert OID = 3367 ( ">=" PGNSP PGUID b f f 774 774 16 3365 3364 macaddr8_ge scalargtsel scalargtjoinsel )); -DESCR("greater than or equal"); - -DATA(insert OID = 3368 ( "~" PGNSP PGUID l f f 0 774 774 0 0 macaddr8_not - - )); -DESCR("bitwise not"); -DATA(insert OID = 3369 ( "&" PGNSP PGUID b f f 774 774 774 0 0 macaddr8_and - - )); -DESCR("bitwise and"); -DATA(insert OID = 3370 ( "|" PGNSP PGUID b f f 774 774 774 0 0 macaddr8_or - - )); -DESCR("bitwise or"); - -/* INET type (these also support CIDR via implicit cast) */ -DATA(insert OID = 1201 ( "=" PGNSP PGUID b t t 869 869 16 1201 1202 network_eq eqsel eqjoinsel )); -DESCR("equal"); -DATA(insert OID = 1202 ( "<>" PGNSP PGUID b f f 869 869 16 1202 1201 network_ne neqsel neqjoinsel )); -DESCR("not equal"); -DATA(insert OID = 1203 ( "<" PGNSP PGUID b f f 869 869 16 1205 1206 network_lt scalarltsel scalarltjoinsel )); -DESCR("less than"); -DATA(insert OID = 1204 ( "<=" PGNSP PGUID b f f 869 869 16 1206 1205 network_le scalarltsel scalarltjoinsel )); -DESCR("less than or equal"); -DATA(insert OID = 1205 ( ">" PGNSP PGUID b f f 869 869 16 1203 1204 network_gt scalargtsel scalargtjoinsel )); -DESCR("greater than"); -DATA(insert OID = 1206 ( ">=" PGNSP PGUID b f f 869 869 16 1204 1203 network_ge scalargtsel scalargtjoinsel )); -DESCR("greater than or equal"); -DATA(insert OID = 931 ( "<<" PGNSP PGUID b f f 869 869 16 933 0 network_sub networksel networkjoinsel )); -DESCR("is subnet"); -#define OID_INET_SUB_OP 931 -DATA(insert OID = 932 ( "<<=" PGNSP PGUID b f f 869 869 16 934 0 network_subeq networksel networkjoinsel )); -DESCR("is subnet or equal"); -#define OID_INET_SUBEQ_OP 932 -DATA(insert OID = 933 ( ">>" PGNSP PGUID b f f 869 869 16 931 0 network_sup networksel networkjoinsel )); -DESCR("is supernet"); -#define OID_INET_SUP_OP 933 -DATA(insert OID = 934 ( ">>=" PGNSP PGUID b f f 869 869 16 932 0 network_supeq networksel networkjoinsel )); -DESCR("is supernet or equal"); -#define OID_INET_SUPEQ_OP 934 -DATA(insert OID = 3552 ( "&&" PGNSP PGUID b f f 869 869 16 3552 0 network_overlap networksel networkjoinsel )); -DESCR("overlaps (is subnet or supernet)"); -#define OID_INET_OVERLAP_OP 3552 - -DATA(insert OID = 2634 ( "~" PGNSP PGUID l f f 0 869 869 0 0 inetnot - - )); -DESCR("bitwise not"); -DATA(insert OID = 2635 ( "&" PGNSP PGUID b f f 869 869 869 0 0 inetand - - )); -DESCR("bitwise and"); -DATA(insert OID = 2636 ( "|" PGNSP PGUID b f f 869 869 869 0 0 inetor - - )); -DESCR("bitwise or"); -DATA(insert OID = 2637 ( "+" PGNSP PGUID b f f 869 20 869 2638 0 inetpl - - )); -DESCR("add"); -DATA(insert OID = 2638 ( "+" PGNSP PGUID b f f 20 869 869 2637 0 int8pl_inet - - )); -DESCR("add"); -DATA(insert OID = 2639 ( "-" PGNSP PGUID b f f 869 20 869 0 0 inetmi_int8 - - )); -DESCR("subtract"); -DATA(insert OID = 2640 ( "-" PGNSP PGUID b f f 869 869 20 0 0 inetmi - - )); -DESCR("subtract"); - -/* case-insensitive LIKE hacks */ -DATA(insert OID = 1625 ( "~~*" PGNSP PGUID b f f 19 25 16 0 1626 nameiclike iclikesel iclikejoinsel )); -DESCR("matches LIKE expression, case-insensitive"); -#define OID_NAME_ICLIKE_OP 1625 -DATA(insert OID = 1626 ( "!~~*" PGNSP PGUID b f f 19 25 16 0 1625 nameicnlike icnlikesel icnlikejoinsel )); -DESCR("does not match LIKE expression, case-insensitive"); -DATA(insert OID = 1627 ( "~~*" PGNSP PGUID b f f 25 25 16 0 1628 texticlike iclikesel iclikejoinsel )); -DESCR("matches LIKE expression, case-insensitive"); -#define OID_TEXT_ICLIKE_OP 1627 -DATA(insert OID = 1628 ( "!~~*" PGNSP PGUID b f f 25 25 16 0 1627 texticnlike icnlikesel icnlikejoinsel )); -DESCR("does not match LIKE expression, case-insensitive"); -DATA(insert OID = 1629 ( "~~*" PGNSP PGUID b f f 1042 25 16 0 1630 bpchariclike iclikesel iclikejoinsel )); -DESCR("matches LIKE expression, case-insensitive"); -#define OID_BPCHAR_ICLIKE_OP 1629 -DATA(insert OID = 1630 ( "!~~*" PGNSP PGUID b f f 1042 25 16 0 1629 bpcharicnlike icnlikesel icnlikejoinsel )); -DESCR("does not match LIKE expression, case-insensitive"); - -/* NUMERIC type - OID's 1700-1799 */ -DATA(insert OID = 1751 ( "-" PGNSP PGUID l f f 0 1700 1700 0 0 numeric_uminus - - )); -DESCR("negate"); -DATA(insert OID = 1752 ( "=" PGNSP PGUID b t t 1700 1700 16 1752 1753 numeric_eq eqsel eqjoinsel )); -DESCR("equal"); -DATA(insert OID = 1753 ( "<>" PGNSP PGUID b f f 1700 1700 16 1753 1752 numeric_ne neqsel neqjoinsel )); -DESCR("not equal"); -DATA(insert OID = 1754 ( "<" PGNSP PGUID b f f 1700 1700 16 1756 1757 numeric_lt scalarltsel scalarltjoinsel )); -DESCR("less than"); -DATA(insert OID = 1755 ( "<=" PGNSP PGUID b f f 1700 1700 16 1757 1756 numeric_le scalarltsel scalarltjoinsel )); -DESCR("less than or equal"); -DATA(insert OID = 1756 ( ">" PGNSP PGUID b f f 1700 1700 16 1754 1755 numeric_gt scalargtsel scalargtjoinsel )); -DESCR("greater than"); -DATA(insert OID = 1757 ( ">=" PGNSP PGUID b f f 1700 1700 16 1755 1754 numeric_ge scalargtsel scalargtjoinsel )); -DESCR("greater than or equal"); -DATA(insert OID = 1758 ( "+" PGNSP PGUID b f f 1700 1700 1700 1758 0 numeric_add - - )); -DESCR("add"); -DATA(insert OID = 1759 ( "-" PGNSP PGUID b f f 1700 1700 1700 0 0 numeric_sub - - )); -DESCR("subtract"); -DATA(insert OID = 1760 ( "*" PGNSP PGUID b f f 1700 1700 1700 1760 0 numeric_mul - - )); -DESCR("multiply"); -DATA(insert OID = 1761 ( "/" PGNSP PGUID b f f 1700 1700 1700 0 0 numeric_div - - )); -DESCR("divide"); -DATA(insert OID = 1762 ( "%" PGNSP PGUID b f f 1700 1700 1700 0 0 numeric_mod - - )); -DESCR("modulus"); -DATA(insert OID = 1038 ( "^" PGNSP PGUID b f f 1700 1700 1700 0 0 numeric_power - - )); -DESCR("exponentiation"); -DATA(insert OID = 1763 ( "@" PGNSP PGUID l f f 0 1700 1700 0 0 numeric_abs - - )); -DESCR("absolute value"); - -DATA(insert OID = 1784 ( "=" PGNSP PGUID b t f 1560 1560 16 1784 1785 biteq eqsel eqjoinsel )); -DESCR("equal"); -DATA(insert OID = 1785 ( "<>" PGNSP PGUID b f f 1560 1560 16 1785 1784 bitne neqsel neqjoinsel )); -DESCR("not equal"); -DATA(insert OID = 1786 ( "<" PGNSP PGUID b f f 1560 1560 16 1787 1789 bitlt scalarltsel scalarltjoinsel )); -DESCR("less than"); -DATA(insert OID = 1787 ( ">" PGNSP PGUID b f f 1560 1560 16 1786 1788 bitgt scalargtsel scalargtjoinsel )); -DESCR("greater than"); -DATA(insert OID = 1788 ( "<=" PGNSP PGUID b f f 1560 1560 16 1789 1787 bitle scalarltsel scalarltjoinsel )); -DESCR("less than or equal"); -DATA(insert OID = 1789 ( ">=" PGNSP PGUID b f f 1560 1560 16 1788 1786 bitge scalargtsel scalargtjoinsel )); -DESCR("greater than or equal"); -DATA(insert OID = 1791 ( "&" PGNSP PGUID b f f 1560 1560 1560 1791 0 bitand - - )); -DESCR("bitwise and"); -DATA(insert OID = 1792 ( "|" PGNSP PGUID b f f 1560 1560 1560 1792 0 bitor - - )); -DESCR("bitwise or"); -DATA(insert OID = 1793 ( "#" PGNSP PGUID b f f 1560 1560 1560 1793 0 bitxor - - )); -DESCR("bitwise exclusive or"); -DATA(insert OID = 1794 ( "~" PGNSP PGUID l f f 0 1560 1560 0 0 bitnot - - )); -DESCR("bitwise not"); -DATA(insert OID = 1795 ( "<<" PGNSP PGUID b f f 1560 23 1560 0 0 bitshiftleft - - )); -DESCR("bitwise shift left"); -DATA(insert OID = 1796 ( ">>" PGNSP PGUID b f f 1560 23 1560 0 0 bitshiftright - - )); -DESCR("bitwise shift right"); -DATA(insert OID = 1797 ( "||" PGNSP PGUID b f f 1562 1562 1562 0 0 bitcat - - )); -DESCR("concatenate"); - -DATA(insert OID = 1800 ( "+" PGNSP PGUID b f f 1083 1186 1083 1849 0 time_pl_interval - - )); -DESCR("add"); -DATA(insert OID = 1801 ( "-" PGNSP PGUID b f f 1083 1186 1083 0 0 time_mi_interval - - )); -DESCR("subtract"); -DATA(insert OID = 1802 ( "+" PGNSP PGUID b f f 1266 1186 1266 2552 0 timetz_pl_interval - - )); -DESCR("add"); -DATA(insert OID = 1803 ( "-" PGNSP PGUID b f f 1266 1186 1266 0 0 timetz_mi_interval - - )); -DESCR("subtract"); - -DATA(insert OID = 1804 ( "=" PGNSP PGUID b t f 1562 1562 16 1804 1805 varbiteq eqsel eqjoinsel )); -DESCR("equal"); -DATA(insert OID = 1805 ( "<>" PGNSP PGUID b f f 1562 1562 16 1805 1804 varbitne neqsel neqjoinsel )); -DESCR("not equal"); -DATA(insert OID = 1806 ( "<" PGNSP PGUID b f f 1562 1562 16 1807 1809 varbitlt scalarltsel scalarltjoinsel )); -DESCR("less than"); -DATA(insert OID = 1807 ( ">" PGNSP PGUID b f f 1562 1562 16 1806 1808 varbitgt scalargtsel scalargtjoinsel )); -DESCR("greater than"); -DATA(insert OID = 1808 ( "<=" PGNSP PGUID b f f 1562 1562 16 1809 1807 varbitle scalarltsel scalarltjoinsel )); -DESCR("less than or equal"); -DATA(insert OID = 1809 ( ">=" PGNSP PGUID b f f 1562 1562 16 1808 1806 varbitge scalargtsel scalargtjoinsel )); -DESCR("greater than or equal"); - -DATA(insert OID = 1849 ( "+" PGNSP PGUID b f f 1186 1083 1083 1800 0 interval_pl_time - - )); -DESCR("add"); - -DATA(insert OID = 1862 ( "=" PGNSP PGUID b t t 21 20 16 1868 1863 int28eq eqsel eqjoinsel )); -DESCR("equal"); -DATA(insert OID = 1863 ( "<>" PGNSP PGUID b f f 21 20 16 1869 1862 int28ne neqsel neqjoinsel )); -DESCR("not equal"); -DATA(insert OID = 1864 ( "<" PGNSP PGUID b f f 21 20 16 1871 1867 int28lt scalarltsel scalarltjoinsel )); -DESCR("less than"); -DATA(insert OID = 1865 ( ">" PGNSP PGUID b f f 21 20 16 1870 1866 int28gt scalargtsel scalargtjoinsel )); -DESCR("greater than"); -DATA(insert OID = 1866 ( "<=" PGNSP PGUID b f f 21 20 16 1873 1865 int28le scalarltsel scalarltjoinsel )); -DESCR("less than or equal"); -DATA(insert OID = 1867 ( ">=" PGNSP PGUID b f f 21 20 16 1872 1864 int28ge scalargtsel scalargtjoinsel )); -DESCR("greater than or equal"); - -DATA(insert OID = 1868 ( "=" PGNSP PGUID b t t 20 21 16 1862 1869 int82eq eqsel eqjoinsel )); -DESCR("equal"); -DATA(insert OID = 1869 ( "<>" PGNSP PGUID b f f 20 21 16 1863 1868 int82ne neqsel neqjoinsel )); -DESCR("not equal"); -DATA(insert OID = 1870 ( "<" PGNSP PGUID b f f 20 21 16 1865 1873 int82lt scalarltsel scalarltjoinsel )); -DESCR("less than"); -DATA(insert OID = 1871 ( ">" PGNSP PGUID b f f 20 21 16 1864 1872 int82gt scalargtsel scalargtjoinsel )); -DESCR("greater than"); -DATA(insert OID = 1872 ( "<=" PGNSP PGUID b f f 20 21 16 1867 1871 int82le scalarltsel scalarltjoinsel )); -DESCR("less than or equal"); -DATA(insert OID = 1873 ( ">=" PGNSP PGUID b f f 20 21 16 1866 1870 int82ge scalargtsel scalargtjoinsel )); -DESCR("greater than or equal"); - -DATA(insert OID = 1874 ( "&" PGNSP PGUID b f f 21 21 21 1874 0 int2and - - )); -DESCR("bitwise and"); -DATA(insert OID = 1875 ( "|" PGNSP PGUID b f f 21 21 21 1875 0 int2or - - )); -DESCR("bitwise or"); -DATA(insert OID = 1876 ( "#" PGNSP PGUID b f f 21 21 21 1876 0 int2xor - - )); -DESCR("bitwise exclusive or"); -DATA(insert OID = 1877 ( "~" PGNSP PGUID l f f 0 21 21 0 0 int2not - - )); -DESCR("bitwise not"); -DATA(insert OID = 1878 ( "<<" PGNSP PGUID b f f 21 23 21 0 0 int2shl - - )); -DESCR("bitwise shift left"); -DATA(insert OID = 1879 ( ">>" PGNSP PGUID b f f 21 23 21 0 0 int2shr - - )); -DESCR("bitwise shift right"); - -DATA(insert OID = 1880 ( "&" PGNSP PGUID b f f 23 23 23 1880 0 int4and - - )); -DESCR("bitwise and"); -DATA(insert OID = 1881 ( "|" PGNSP PGUID b f f 23 23 23 1881 0 int4or - - )); -DESCR("bitwise or"); -DATA(insert OID = 1882 ( "#" PGNSP PGUID b f f 23 23 23 1882 0 int4xor - - )); -DESCR("bitwise exclusive or"); -DATA(insert OID = 1883 ( "~" PGNSP PGUID l f f 0 23 23 0 0 int4not - - )); -DESCR("bitwise not"); -DATA(insert OID = 1884 ( "<<" PGNSP PGUID b f f 23 23 23 0 0 int4shl - - )); -DESCR("bitwise shift left"); -DATA(insert OID = 1885 ( ">>" PGNSP PGUID b f f 23 23 23 0 0 int4shr - - )); -DESCR("bitwise shift right"); - -DATA(insert OID = 1886 ( "&" PGNSP PGUID b f f 20 20 20 1886 0 int8and - - )); -DESCR("bitwise and"); -DATA(insert OID = 1887 ( "|" PGNSP PGUID b f f 20 20 20 1887 0 int8or - - )); -DESCR("bitwise or"); -DATA(insert OID = 1888 ( "#" PGNSP PGUID b f f 20 20 20 1888 0 int8xor - - )); -DESCR("bitwise exclusive or"); -DATA(insert OID = 1889 ( "~" PGNSP PGUID l f f 0 20 20 0 0 int8not - - )); -DESCR("bitwise not"); -DATA(insert OID = 1890 ( "<<" PGNSP PGUID b f f 20 23 20 0 0 int8shl - - )); -DESCR("bitwise shift left"); -DATA(insert OID = 1891 ( ">>" PGNSP PGUID b f f 20 23 20 0 0 int8shr - - )); -DESCR("bitwise shift right"); - -DATA(insert OID = 1916 ( "+" PGNSP PGUID l f f 0 20 20 0 0 int8up - - )); -DESCR("unary plus"); -DATA(insert OID = 1917 ( "+" PGNSP PGUID l f f 0 21 21 0 0 int2up - - )); -DESCR("unary plus"); -DATA(insert OID = 1918 ( "+" PGNSP PGUID l f f 0 23 23 0 0 int4up - - )); -DESCR("unary plus"); -DATA(insert OID = 1919 ( "+" PGNSP PGUID l f f 0 700 700 0 0 float4up - - )); -DESCR("unary plus"); -DATA(insert OID = 1920 ( "+" PGNSP PGUID l f f 0 701 701 0 0 float8up - - )); -DESCR("unary plus"); -DATA(insert OID = 1921 ( "+" PGNSP PGUID l f f 0 1700 1700 0 0 numeric_uplus - - )); -DESCR("unary plus"); - -/* bytea operators */ -DATA(insert OID = 1955 ( "=" PGNSP PGUID b t t 17 17 16 1955 1956 byteaeq eqsel eqjoinsel )); -DESCR("equal"); -DATA(insert OID = 1956 ( "<>" PGNSP PGUID b f f 17 17 16 1956 1955 byteane neqsel neqjoinsel )); -DESCR("not equal"); -DATA(insert OID = 1957 ( "<" PGNSP PGUID b f f 17 17 16 1959 1960 bytealt scalarltsel scalarltjoinsel )); -DESCR("less than"); -DATA(insert OID = 1958 ( "<=" PGNSP PGUID b f f 17 17 16 1960 1959 byteale scalarltsel scalarltjoinsel )); -DESCR("less than or equal"); -DATA(insert OID = 1959 ( ">" PGNSP PGUID b f f 17 17 16 1957 1958 byteagt scalargtsel scalargtjoinsel )); -DESCR("greater than"); -DATA(insert OID = 1960 ( ">=" PGNSP PGUID b f f 17 17 16 1958 1957 byteage scalargtsel scalargtjoinsel )); -DESCR("greater than or equal"); - -DATA(insert OID = 2016 ( "~~" PGNSP PGUID b f f 17 17 16 0 2017 bytealike likesel likejoinsel )); -DESCR("matches LIKE expression"); -#define OID_BYTEA_LIKE_OP 2016 -DATA(insert OID = 2017 ( "!~~" PGNSP PGUID b f f 17 17 16 0 2016 byteanlike nlikesel nlikejoinsel )); -DESCR("does not match LIKE expression"); -DATA(insert OID = 2018 ( "||" PGNSP PGUID b f f 17 17 17 0 0 byteacat - - )); -DESCR("concatenate"); - -/* timestamp operators */ -DATA(insert OID = 2060 ( "=" PGNSP PGUID b t t 1114 1114 16 2060 2061 timestamp_eq eqsel eqjoinsel )); -DESCR("equal"); -DATA(insert OID = 2061 ( "<>" PGNSP PGUID b f f 1114 1114 16 2061 2060 timestamp_ne neqsel neqjoinsel )); -DESCR("not equal"); -DATA(insert OID = 2062 ( "<" PGNSP PGUID b f f 1114 1114 16 2064 2065 timestamp_lt scalarltsel scalarltjoinsel )); -DESCR("less than"); -DATA(insert OID = 2063 ( "<=" PGNSP PGUID b f f 1114 1114 16 2065 2064 timestamp_le scalarltsel scalarltjoinsel )); -DESCR("less than or equal"); -DATA(insert OID = 2064 ( ">" PGNSP PGUID b f f 1114 1114 16 2062 2063 timestamp_gt scalargtsel scalargtjoinsel )); -DESCR("greater than"); -DATA(insert OID = 2065 ( ">=" PGNSP PGUID b f f 1114 1114 16 2063 2062 timestamp_ge scalargtsel scalargtjoinsel )); -DESCR("greater than or equal"); -DATA(insert OID = 2066 ( "+" PGNSP PGUID b f f 1114 1186 1114 2553 0 timestamp_pl_interval - - )); -DESCR("add"); -DATA(insert OID = 2067 ( "-" PGNSP PGUID b f f 1114 1114 1186 0 0 timestamp_mi - - )); -DESCR("subtract"); -DATA(insert OID = 2068 ( "-" PGNSP PGUID b f f 1114 1186 1114 0 0 timestamp_mi_interval - - )); -DESCR("subtract"); - -/* character-by-character (not collation order) comparison operators for character types */ - -DATA(insert OID = 2314 ( "~<~" PGNSP PGUID b f f 25 25 16 2318 2317 text_pattern_lt scalarltsel scalarltjoinsel )); -DESCR("less than"); -DATA(insert OID = 2315 ( "~<=~" PGNSP PGUID b f f 25 25 16 2317 2318 text_pattern_le scalarltsel scalarltjoinsel )); -DESCR("less than or equal"); -DATA(insert OID = 2317 ( "~>=~" PGNSP PGUID b f f 25 25 16 2315 2314 text_pattern_ge scalargtsel scalargtjoinsel )); -DESCR("greater than or equal"); -DATA(insert OID = 2318 ( "~>~" PGNSP PGUID b f f 25 25 16 2314 2315 text_pattern_gt scalargtsel scalargtjoinsel )); -DESCR("greater than"); - -DATA(insert OID = 2326 ( "~<~" PGNSP PGUID b f f 1042 1042 16 2330 2329 bpchar_pattern_lt scalarltsel scalarltjoinsel )); -DESCR("less than"); -DATA(insert OID = 2327 ( "~<=~" PGNSP PGUID b f f 1042 1042 16 2329 2330 bpchar_pattern_le scalarltsel scalarltjoinsel )); -DESCR("less than or equal"); -DATA(insert OID = 2329 ( "~>=~" PGNSP PGUID b f f 1042 1042 16 2327 2326 bpchar_pattern_ge scalargtsel scalargtjoinsel )); -DESCR("greater than or equal"); -DATA(insert OID = 2330 ( "~>~" PGNSP PGUID b f f 1042 1042 16 2326 2327 bpchar_pattern_gt scalargtsel scalargtjoinsel )); -DESCR("greater than"); - -/* crosstype operations for date vs. timestamp and timestamptz */ - -DATA(insert OID = 2345 ( "<" PGNSP PGUID b f f 1082 1114 16 2375 2348 date_lt_timestamp scalarltsel scalarltjoinsel )); -DESCR("less than"); -DATA(insert OID = 2346 ( "<=" PGNSP PGUID b f f 1082 1114 16 2374 2349 date_le_timestamp scalarltsel scalarltjoinsel )); -DESCR("less than or equal"); -DATA(insert OID = 2347 ( "=" PGNSP PGUID b t f 1082 1114 16 2373 2350 date_eq_timestamp eqsel eqjoinsel )); -DESCR("equal"); -DATA(insert OID = 2348 ( ">=" PGNSP PGUID b f f 1082 1114 16 2372 2345 date_ge_timestamp scalargtsel scalargtjoinsel )); -DESCR("greater than or equal"); -DATA(insert OID = 2349 ( ">" PGNSP PGUID b f f 1082 1114 16 2371 2346 date_gt_timestamp scalargtsel scalargtjoinsel )); -DESCR("greater than"); -DATA(insert OID = 2350 ( "<>" PGNSP PGUID b f f 1082 1114 16 2376 2347 date_ne_timestamp neqsel neqjoinsel )); -DESCR("not equal"); - -DATA(insert OID = 2358 ( "<" PGNSP PGUID b f f 1082 1184 16 2388 2361 date_lt_timestamptz scalarltsel scalarltjoinsel )); -DESCR("less than"); -DATA(insert OID = 2359 ( "<=" PGNSP PGUID b f f 1082 1184 16 2387 2362 date_le_timestamptz scalarltsel scalarltjoinsel )); -DESCR("less than or equal"); -DATA(insert OID = 2360 ( "=" PGNSP PGUID b t f 1082 1184 16 2386 2363 date_eq_timestamptz eqsel eqjoinsel )); -DESCR("equal"); -DATA(insert OID = 2361 ( ">=" PGNSP PGUID b f f 1082 1184 16 2385 2358 date_ge_timestamptz scalargtsel scalargtjoinsel )); -DESCR("greater than or equal"); -DATA(insert OID = 2362 ( ">" PGNSP PGUID b f f 1082 1184 16 2384 2359 date_gt_timestamptz scalargtsel scalargtjoinsel )); -DESCR("greater than"); -DATA(insert OID = 2363 ( "<>" PGNSP PGUID b f f 1082 1184 16 2389 2360 date_ne_timestamptz neqsel neqjoinsel )); -DESCR("not equal"); - -DATA(insert OID = 2371 ( "<" PGNSP PGUID b f f 1114 1082 16 2349 2374 timestamp_lt_date scalarltsel scalarltjoinsel )); -DESCR("less than"); -DATA(insert OID = 2372 ( "<=" PGNSP PGUID b f f 1114 1082 16 2348 2375 timestamp_le_date scalarltsel scalarltjoinsel )); -DESCR("less than or equal"); -DATA(insert OID = 2373 ( "=" PGNSP PGUID b t f 1114 1082 16 2347 2376 timestamp_eq_date eqsel eqjoinsel )); -DESCR("equal"); -DATA(insert OID = 2374 ( ">=" PGNSP PGUID b f f 1114 1082 16 2346 2371 timestamp_ge_date scalargtsel scalargtjoinsel )); -DESCR("greater than or equal"); -DATA(insert OID = 2375 ( ">" PGNSP PGUID b f f 1114 1082 16 2345 2372 timestamp_gt_date scalargtsel scalargtjoinsel )); -DESCR("greater than"); -DATA(insert OID = 2376 ( "<>" PGNSP PGUID b f f 1114 1082 16 2350 2373 timestamp_ne_date neqsel neqjoinsel )); -DESCR("not equal"); - -DATA(insert OID = 2384 ( "<" PGNSP PGUID b f f 1184 1082 16 2362 2387 timestamptz_lt_date scalarltsel scalarltjoinsel )); -DESCR("less than"); -DATA(insert OID = 2385 ( "<=" PGNSP PGUID b f f 1184 1082 16 2361 2388 timestamptz_le_date scalarltsel scalarltjoinsel )); -DESCR("less than or equal"); -DATA(insert OID = 2386 ( "=" PGNSP PGUID b t f 1184 1082 16 2360 2389 timestamptz_eq_date eqsel eqjoinsel )); -DESCR("equal"); -DATA(insert OID = 2387 ( ">=" PGNSP PGUID b f f 1184 1082 16 2359 2384 timestamptz_ge_date scalargtsel scalargtjoinsel )); -DESCR("greater than or equal"); -DATA(insert OID = 2388 ( ">" PGNSP PGUID b f f 1184 1082 16 2358 2385 timestamptz_gt_date scalargtsel scalargtjoinsel )); -DESCR("greater than"); -DATA(insert OID = 2389 ( "<>" PGNSP PGUID b f f 1184 1082 16 2363 2386 timestamptz_ne_date neqsel neqjoinsel )); -DESCR("not equal"); - -/* crosstype operations for timestamp vs. timestamptz */ - -DATA(insert OID = 2534 ( "<" PGNSP PGUID b f f 1114 1184 16 2544 2537 timestamp_lt_timestamptz scalarltsel scalarltjoinsel )); -DESCR("less than"); -DATA(insert OID = 2535 ( "<=" PGNSP PGUID b f f 1114 1184 16 2543 2538 timestamp_le_timestamptz scalarltsel scalarltjoinsel )); -DESCR("less than or equal"); -DATA(insert OID = 2536 ( "=" PGNSP PGUID b t f 1114 1184 16 2542 2539 timestamp_eq_timestamptz eqsel eqjoinsel )); -DESCR("equal"); -DATA(insert OID = 2537 ( ">=" PGNSP PGUID b f f 1114 1184 16 2541 2534 timestamp_ge_timestamptz scalargtsel scalargtjoinsel )); -DESCR("greater than or equal"); -DATA(insert OID = 2538 ( ">" PGNSP PGUID b f f 1114 1184 16 2540 2535 timestamp_gt_timestamptz scalargtsel scalargtjoinsel )); -DESCR("greater than"); -DATA(insert OID = 2539 ( "<>" PGNSP PGUID b f f 1114 1184 16 2545 2536 timestamp_ne_timestamptz neqsel neqjoinsel )); -DESCR("not equal"); - -DATA(insert OID = 2540 ( "<" PGNSP PGUID b f f 1184 1114 16 2538 2543 timestamptz_lt_timestamp scalarltsel scalarltjoinsel )); -DESCR("less than"); -DATA(insert OID = 2541 ( "<=" PGNSP PGUID b f f 1184 1114 16 2537 2544 timestamptz_le_timestamp scalarltsel scalarltjoinsel )); -DESCR("less than or equal"); -DATA(insert OID = 2542 ( "=" PGNSP PGUID b t f 1184 1114 16 2536 2545 timestamptz_eq_timestamp eqsel eqjoinsel )); -DESCR("equal"); -DATA(insert OID = 2543 ( ">=" PGNSP PGUID b f f 1184 1114 16 2535 2540 timestamptz_ge_timestamp scalargtsel scalargtjoinsel )); -DESCR("greater than or equal"); -DATA(insert OID = 2544 ( ">" PGNSP PGUID b f f 1184 1114 16 2534 2541 timestamptz_gt_timestamp scalargtsel scalargtjoinsel )); -DESCR("greater than"); -DATA(insert OID = 2545 ( "<>" PGNSP PGUID b f f 1184 1114 16 2539 2542 timestamptz_ne_timestamp neqsel neqjoinsel )); -DESCR("not equal"); - -/* formerly-missing interval + datetime operators */ -DATA(insert OID = 2551 ( "+" PGNSP PGUID b f f 1186 1082 1114 1076 0 interval_pl_date - - )); -DESCR("add"); -DATA(insert OID = 2552 ( "+" PGNSP PGUID b f f 1186 1266 1266 1802 0 interval_pl_timetz - - )); -DESCR("add"); -DATA(insert OID = 2553 ( "+" PGNSP PGUID b f f 1186 1114 1114 2066 0 interval_pl_timestamp - - )); -DESCR("add"); -DATA(insert OID = 2554 ( "+" PGNSP PGUID b f f 1186 1184 1184 1327 0 interval_pl_timestamptz - - )); -DESCR("add"); -DATA(insert OID = 2555 ( "+" PGNSP PGUID b f f 23 1082 1082 1100 0 integer_pl_date - - )); -DESCR("add"); - -/* new operators for Y-direction rtree opfamilies */ -DATA(insert OID = 2570 ( "<<|" PGNSP PGUID b f f 603 603 16 0 0 box_below positionsel positionjoinsel )); -DESCR("is below"); -DATA(insert OID = 2571 ( "&<|" PGNSP PGUID b f f 603 603 16 0 0 box_overbelow positionsel positionjoinsel )); -DESCR("overlaps or is below"); -DATA(insert OID = 2572 ( "|&>" PGNSP PGUID b f f 603 603 16 0 0 box_overabove positionsel positionjoinsel )); -DESCR("overlaps or is above"); -DATA(insert OID = 2573 ( "|>>" PGNSP PGUID b f f 603 603 16 0 0 box_above positionsel positionjoinsel )); -DESCR("is above"); -DATA(insert OID = 2574 ( "<<|" PGNSP PGUID b f f 604 604 16 0 0 poly_below positionsel positionjoinsel )); -DESCR("is below"); -DATA(insert OID = 2575 ( "&<|" PGNSP PGUID b f f 604 604 16 0 0 poly_overbelow positionsel positionjoinsel )); -DESCR("overlaps or is below"); -DATA(insert OID = 2576 ( "|&>" PGNSP PGUID b f f 604 604 16 0 0 poly_overabove positionsel positionjoinsel )); -DESCR("overlaps or is above"); -DATA(insert OID = 2577 ( "|>>" PGNSP PGUID b f f 604 604 16 0 0 poly_above positionsel positionjoinsel )); -DESCR("is above"); -DATA(insert OID = 2589 ( "&<|" PGNSP PGUID b f f 718 718 16 0 0 circle_overbelow positionsel positionjoinsel )); -DESCR("overlaps or is below"); -DATA(insert OID = 2590 ( "|&>" PGNSP PGUID b f f 718 718 16 0 0 circle_overabove positionsel positionjoinsel )); -DESCR("overlaps or is above"); - -/* overlap/contains/contained for arrays */ -DATA(insert OID = 2750 ( "&&" PGNSP PGUID b f f 2277 2277 16 2750 0 arrayoverlap arraycontsel arraycontjoinsel )); -DESCR("overlaps"); -#define OID_ARRAY_OVERLAP_OP 2750 -DATA(insert OID = 2751 ( "@>" PGNSP PGUID b f f 2277 2277 16 2752 0 arraycontains arraycontsel arraycontjoinsel )); -DESCR("contains"); -#define OID_ARRAY_CONTAINS_OP 2751 -DATA(insert OID = 2752 ( "<@" PGNSP PGUID b f f 2277 2277 16 2751 0 arraycontained arraycontsel arraycontjoinsel )); -DESCR("is contained by"); -#define OID_ARRAY_CONTAINED_OP 2752 - -/* capturing operators to preserve pre-8.3 behavior of text concatenation */ -DATA(insert OID = 2779 ( "||" PGNSP PGUID b f f 25 2776 25 0 0 textanycat - - )); -DESCR("concatenate"); -DATA(insert OID = 2780 ( "||" PGNSP PGUID b f f 2776 25 25 0 0 anytextcat - - )); -DESCR("concatenate"); - -/* obsolete names for contains/contained-by operators; remove these someday */ -DATA(insert OID = 2860 ( "@" PGNSP PGUID b f f 604 604 16 2861 0 poly_contained contsel contjoinsel )); -DESCR("deprecated, use <@ instead"); -DATA(insert OID = 2861 ( "~" PGNSP PGUID b f f 604 604 16 2860 0 poly_contain contsel contjoinsel )); -DESCR("deprecated, use @> instead"); -DATA(insert OID = 2862 ( "@" PGNSP PGUID b f f 603 603 16 2863 0 box_contained contsel contjoinsel )); -DESCR("deprecated, use <@ instead"); -DATA(insert OID = 2863 ( "~" PGNSP PGUID b f f 603 603 16 2862 0 box_contain contsel contjoinsel )); -DESCR("deprecated, use @> instead"); -DATA(insert OID = 2864 ( "@" PGNSP PGUID b f f 718 718 16 2865 0 circle_contained contsel contjoinsel )); -DESCR("deprecated, use <@ instead"); -DATA(insert OID = 2865 ( "~" PGNSP PGUID b f f 718 718 16 2864 0 circle_contain contsel contjoinsel )); -DESCR("deprecated, use @> instead"); -DATA(insert OID = 2866 ( "@" PGNSP PGUID b f f 600 603 16 0 0 on_pb - - )); -DESCR("deprecated, use <@ instead"); -DATA(insert OID = 2867 ( "@" PGNSP PGUID b f f 600 602 16 2868 0 on_ppath - - )); -DESCR("deprecated, use <@ instead"); -DATA(insert OID = 2868 ( "~" PGNSP PGUID b f f 602 600 16 2867 0 path_contain_pt - - )); -DESCR("deprecated, use @> instead"); -DATA(insert OID = 2869 ( "@" PGNSP PGUID b f f 600 604 16 2870 0 pt_contained_poly - - )); -DESCR("deprecated, use <@ instead"); -DATA(insert OID = 2870 ( "~" PGNSP PGUID b f f 604 600 16 2869 0 poly_contain_pt - - )); -DESCR("deprecated, use @> instead"); -DATA(insert OID = 2871 ( "@" PGNSP PGUID b f f 600 718 16 2872 0 pt_contained_circle - - )); -DESCR("deprecated, use <@ instead"); -DATA(insert OID = 2872 ( "~" PGNSP PGUID b f f 718 600 16 2871 0 circle_contain_pt - - )); -DESCR("deprecated, use @> instead"); -DATA(insert OID = 2873 ( "@" PGNSP PGUID b f f 600 628 16 0 0 on_pl - - )); -DESCR("deprecated, use <@ instead"); -DATA(insert OID = 2874 ( "@" PGNSP PGUID b f f 600 601 16 0 0 on_ps - - )); -DESCR("deprecated, use <@ instead"); -DATA(insert OID = 2875 ( "@" PGNSP PGUID b f f 601 628 16 0 0 on_sl - - )); -DESCR("deprecated, use <@ instead"); -DATA(insert OID = 2876 ( "@" PGNSP PGUID b f f 601 603 16 0 0 on_sb - - )); -DESCR("deprecated, use <@ instead"); -DATA(insert OID = 2877 ( "~" PGNSP PGUID b f f 1034 1033 16 0 0 aclcontains - - )); -DESCR("deprecated, use @> instead"); - -/* uuid operators */ -DATA(insert OID = 2972 ( "=" PGNSP PGUID b t t 2950 2950 16 2972 2973 uuid_eq eqsel eqjoinsel )); -DESCR("equal"); -DATA(insert OID = 2973 ( "<>" PGNSP PGUID b f f 2950 2950 16 2973 2972 uuid_ne neqsel neqjoinsel )); -DESCR("not equal"); -DATA(insert OID = 2974 ( "<" PGNSP PGUID b f f 2950 2950 16 2975 2977 uuid_lt scalarltsel scalarltjoinsel )); -DESCR("less than"); -DATA(insert OID = 2975 ( ">" PGNSP PGUID b f f 2950 2950 16 2974 2976 uuid_gt scalargtsel scalargtjoinsel )); -DESCR("greater than"); -DATA(insert OID = 2976 ( "<=" PGNSP PGUID b f f 2950 2950 16 2977 2975 uuid_le scalarltsel scalarltjoinsel )); -DESCR("less than or equal"); -DATA(insert OID = 2977 ( ">=" PGNSP PGUID b f f 2950 2950 16 2976 2974 uuid_ge scalargtsel scalargtjoinsel )); -DESCR("greater than or equal"); - -/* pg_lsn operators */ -DATA(insert OID = 3222 ( "=" PGNSP PGUID b t t 3220 3220 16 3222 3223 pg_lsn_eq eqsel eqjoinsel )); -DESCR("equal"); -DATA(insert OID = 3223 ( "<>" PGNSP PGUID b f f 3220 3220 16 3223 3222 pg_lsn_ne neqsel neqjoinsel )); -DESCR("not equal"); -DATA(insert OID = 3224 ( "<" PGNSP PGUID b f f 3220 3220 16 3225 3227 pg_lsn_lt scalarltsel scalarltjoinsel )); -DESCR("less than"); -DATA(insert OID = 3225 ( ">" PGNSP PGUID b f f 3220 3220 16 3224 3226 pg_lsn_gt scalargtsel scalargtjoinsel )); -DESCR("greater than"); -DATA(insert OID = 3226 ( "<=" PGNSP PGUID b f f 3220 3220 16 3227 3225 pg_lsn_le scalarltsel scalarltjoinsel )); -DESCR("less than or equal"); -DATA(insert OID = 3227 ( ">=" PGNSP PGUID b f f 3220 3220 16 3226 3224 pg_lsn_ge scalargtsel scalargtjoinsel )); -DESCR("greater than or equal"); -DATA(insert OID = 3228 ( "-" PGNSP PGUID b f f 3220 3220 1700 0 0 pg_lsn_mi - - )); -DESCR("minus"); - -/* enum operators */ -DATA(insert OID = 3516 ( "=" PGNSP PGUID b t t 3500 3500 16 3516 3517 enum_eq eqsel eqjoinsel )); -DESCR("equal"); -DATA(insert OID = 3517 ( "<>" PGNSP PGUID b f f 3500 3500 16 3517 3516 enum_ne neqsel neqjoinsel )); -DESCR("not equal"); -DATA(insert OID = 3518 ( "<" PGNSP PGUID b f f 3500 3500 16 3519 3521 enum_lt scalarltsel scalarltjoinsel )); -DESCR("less than"); -DATA(insert OID = 3519 ( ">" PGNSP PGUID b f f 3500 3500 16 3518 3520 enum_gt scalargtsel scalargtjoinsel )); -DESCR("greater than"); -DATA(insert OID = 3520 ( "<=" PGNSP PGUID b f f 3500 3500 16 3521 3519 enum_le scalarltsel scalarltjoinsel )); -DESCR("less than or equal"); -DATA(insert OID = 3521 ( ">=" PGNSP PGUID b f f 3500 3500 16 3520 3518 enum_ge scalargtsel scalargtjoinsel )); -DESCR("greater than or equal"); + /* OID of join estimator, or 0 */ + regproc oprjoin BKI_DEFAULT(-) BKI_LOOKUP(pg_proc); +} FormData_pg_operator; -/* - * tsearch operations +/* ---------------- + * Form_pg_operator corresponds to a pointer to a tuple with + * the format of pg_operator relation. + * ---------------- */ -DATA(insert OID = 3627 ( "<" PGNSP PGUID b f f 3614 3614 16 3632 3631 tsvector_lt scalarltsel scalarltjoinsel )); -DESCR("less than"); -DATA(insert OID = 3628 ( "<=" PGNSP PGUID b f f 3614 3614 16 3631 3632 tsvector_le scalarltsel scalarltjoinsel )); -DESCR("less than or equal"); -DATA(insert OID = 3629 ( "=" PGNSP PGUID b t f 3614 3614 16 3629 3630 tsvector_eq eqsel eqjoinsel )); -DESCR("equal"); -DATA(insert OID = 3630 ( "<>" PGNSP PGUID b f f 3614 3614 16 3630 3629 tsvector_ne neqsel neqjoinsel )); -DESCR("not equal"); -DATA(insert OID = 3631 ( ">=" PGNSP PGUID b f f 3614 3614 16 3628 3627 tsvector_ge scalargtsel scalargtjoinsel )); -DESCR("greater than or equal"); -DATA(insert OID = 3632 ( ">" PGNSP PGUID b f f 3614 3614 16 3627 3628 tsvector_gt scalargtsel scalargtjoinsel )); -DESCR("greater than"); -DATA(insert OID = 3633 ( "||" PGNSP PGUID b f f 3614 3614 3614 0 0 tsvector_concat - - )); -DESCR("concatenate"); -DATA(insert OID = 3636 ( "@@" PGNSP PGUID b f f 3614 3615 16 3637 0 ts_match_vq tsmatchsel tsmatchjoinsel )); -DESCR("text search match"); -DATA(insert OID = 3637 ( "@@" PGNSP PGUID b f f 3615 3614 16 3636 0 ts_match_qv tsmatchsel tsmatchjoinsel )); -DESCR("text search match"); -DATA(insert OID = 3660 ( "@@@" PGNSP PGUID b f f 3614 3615 16 3661 0 ts_match_vq tsmatchsel tsmatchjoinsel )); -DESCR("deprecated, use @@ instead"); -DATA(insert OID = 3661 ( "@@@" PGNSP PGUID b f f 3615 3614 16 3660 0 ts_match_qv tsmatchsel tsmatchjoinsel )); -DESCR("deprecated, use @@ instead"); -DATA(insert OID = 3674 ( "<" PGNSP PGUID b f f 3615 3615 16 3679 3678 tsquery_lt scalarltsel scalarltjoinsel )); -DESCR("less than"); -DATA(insert OID = 3675 ( "<=" PGNSP PGUID b f f 3615 3615 16 3678 3679 tsquery_le scalarltsel scalarltjoinsel )); -DESCR("less than or equal"); -DATA(insert OID = 3676 ( "=" PGNSP PGUID b t f 3615 3615 16 3676 3677 tsquery_eq eqsel eqjoinsel )); -DESCR("equal"); -DATA(insert OID = 3677 ( "<>" PGNSP PGUID b f f 3615 3615 16 3677 3676 tsquery_ne neqsel neqjoinsel )); -DESCR("not equal"); -DATA(insert OID = 3678 ( ">=" PGNSP PGUID b f f 3615 3615 16 3675 3674 tsquery_ge scalargtsel scalargtjoinsel )); -DESCR("greater than or equal"); -DATA(insert OID = 3679 ( ">" PGNSP PGUID b f f 3615 3615 16 3674 3675 tsquery_gt scalargtsel scalargtjoinsel )); -DESCR("greater than"); -DATA(insert OID = 3680 ( "&&" PGNSP PGUID b f f 3615 3615 3615 0 0 tsquery_and - - )); -DESCR("AND-concatenate"); -DATA(insert OID = 3681 ( "||" PGNSP PGUID b f f 3615 3615 3615 0 0 tsquery_or - - )); -DESCR("OR-concatenate"); -/* <-> operation calls tsquery_phrase, but function is polymorphic. So, point to OID of the tsquery_phrase */ -DATA(insert OID = 5005 ( "<->" PGNSP PGUID b f f 3615 3615 3615 0 0 5003 - - )); -DESCR("phrase-concatenate"); -DATA(insert OID = 3682 ( "!!" PGNSP PGUID l f f 0 3615 3615 0 0 tsquery_not - - )); -DESCR("NOT tsquery"); -DATA(insert OID = 3693 ( "@>" PGNSP PGUID b f f 3615 3615 16 3694 0 tsq_mcontains contsel contjoinsel )); -DESCR("contains"); -DATA(insert OID = 3694 ( "<@" PGNSP PGUID b f f 3615 3615 16 3693 0 tsq_mcontained contsel contjoinsel )); -DESCR("is contained by"); -DATA(insert OID = 3762 ( "@@" PGNSP PGUID b f f 25 25 16 0 0 ts_match_tt contsel contjoinsel )); -DESCR("text search match"); -DATA(insert OID = 3763 ( "@@" PGNSP PGUID b f f 25 3615 16 0 0 ts_match_tq contsel contjoinsel )); -DESCR("text search match"); +typedef FormData_pg_operator *Form_pg_operator; + -/* generic record comparison operators */ -DATA(insert OID = 2988 ( "=" PGNSP PGUID b t f 2249 2249 16 2988 2989 record_eq eqsel eqjoinsel )); -DESCR("equal"); -#define RECORD_EQ_OP 2988 -DATA(insert OID = 2989 ( "<>" PGNSP PGUID b f f 2249 2249 16 2989 2988 record_ne neqsel neqjoinsel )); -DESCR("not equal"); -DATA(insert OID = 2990 ( "<" PGNSP PGUID b f f 2249 2249 16 2991 2993 record_lt scalarltsel scalarltjoinsel )); -DESCR("less than"); -#define RECORD_LT_OP 2990 -DATA(insert OID = 2991 ( ">" PGNSP PGUID b f f 2249 2249 16 2990 2992 record_gt scalargtsel scalargtjoinsel )); -DESCR("greater than"); -#define RECORD_GT_OP 2991 -DATA(insert OID = 2992 ( "<=" PGNSP PGUID b f f 2249 2249 16 2993 2991 record_le scalarltsel scalarltjoinsel )); -DESCR("less than or equal"); -DATA(insert OID = 2993 ( ">=" PGNSP PGUID b f f 2249 2249 16 2992 2990 record_ge scalargtsel scalargtjoinsel )); -DESCR("greater than or equal"); +extern ObjectAddress OperatorCreate(const char *operatorName, + Oid operatorNamespace, + Oid leftTypeId, + Oid rightTypeId, + Oid procedureId, + List *commutatorName, + List *negatorName, + Oid restrictionId, + Oid joinId, + bool canMerge, + bool canHash); -/* byte-oriented tests for identical rows and fast sorting */ -DATA(insert OID = 3188 ( "*=" PGNSP PGUID b t f 2249 2249 16 3188 3189 record_image_eq eqsel eqjoinsel )); -DESCR("identical"); -DATA(insert OID = 3189 ( "*<>" PGNSP PGUID b f f 2249 2249 16 3189 3188 record_image_ne neqsel neqjoinsel )); -DESCR("not identical"); -DATA(insert OID = 3190 ( "*<" PGNSP PGUID b f f 2249 2249 16 3191 3193 record_image_lt scalarltsel scalarltjoinsel )); -DESCR("less than"); -DATA(insert OID = 3191 ( "*>" PGNSP PGUID b f f 2249 2249 16 3190 3192 record_image_gt scalargtsel scalargtjoinsel )); -DESCR("greater than"); -DATA(insert OID = 3192 ( "*<=" PGNSP PGUID b f f 2249 2249 16 3193 3191 record_image_le scalarltsel scalarltjoinsel )); -DESCR("less than or equal"); -DATA(insert OID = 3193 ( "*>=" PGNSP PGUID b f f 2249 2249 16 3192 3190 record_image_ge scalargtsel scalargtjoinsel )); -DESCR("greater than or equal"); +extern ObjectAddress makeOperatorDependencies(HeapTuple tuple, bool isUpdate); -/* generic range type operators */ -DATA(insert OID = 3882 ( "=" PGNSP PGUID b t t 3831 3831 16 3882 3883 range_eq eqsel eqjoinsel )); -DESCR("equal"); -DATA(insert OID = 3883 ( "<>" PGNSP PGUID b f f 3831 3831 16 3883 3882 range_ne neqsel neqjoinsel )); -DESCR("not equal"); -DATA(insert OID = 3884 ( "<" PGNSP PGUID b f f 3831 3831 16 3887 3886 range_lt rangesel scalarltjoinsel )); -DESCR("less than"); -#define OID_RANGE_LESS_OP 3884 -DATA(insert OID = 3885 ( "<=" PGNSP PGUID b f f 3831 3831 16 3886 3887 range_le rangesel scalarltjoinsel )); -DESCR("less than or equal"); -#define OID_RANGE_LESS_EQUAL_OP 3885 -DATA(insert OID = 3886 ( ">=" PGNSP PGUID b f f 3831 3831 16 3885 3884 range_ge rangesel scalargtjoinsel )); -DESCR("greater than or equal"); -#define OID_RANGE_GREATER_EQUAL_OP 3886 -DATA(insert OID = 3887 ( ">" PGNSP PGUID b f f 3831 3831 16 3884 3885 range_gt rangesel scalargtjoinsel )); -DESCR("greater than"); -#define OID_RANGE_GREATER_OP 3887 -DATA(insert OID = 3888 ( "&&" PGNSP PGUID b f f 3831 3831 16 3888 0 range_overlaps rangesel areajoinsel )); -DESCR("overlaps"); -#define OID_RANGE_OVERLAP_OP 3888 -DATA(insert OID = 3889 ( "@>" PGNSP PGUID b f f 3831 2283 16 3891 0 range_contains_elem rangesel contjoinsel )); -DESCR("contains"); -#define OID_RANGE_CONTAINS_ELEM_OP 3889 -DATA(insert OID = 3890 ( "@>" PGNSP PGUID b f f 3831 3831 16 3892 0 range_contains rangesel contjoinsel )); -DESCR("contains"); -#define OID_RANGE_CONTAINS_OP 3890 -DATA(insert OID = 3891 ( "<@" PGNSP PGUID b f f 2283 3831 16 3889 0 elem_contained_by_range rangesel contjoinsel )); -DESCR("is contained by"); -#define OID_RANGE_ELEM_CONTAINED_OP 3891 -DATA(insert OID = 3892 ( "<@" PGNSP PGUID b f f 3831 3831 16 3890 0 range_contained_by rangesel contjoinsel )); -DESCR("is contained by"); -#define OID_RANGE_CONTAINED_OP 3892 -DATA(insert OID = 3893 ( "<<" PGNSP PGUID b f f 3831 3831 16 3894 0 range_before rangesel scalarltjoinsel )); -DESCR("is left of"); -#define OID_RANGE_LEFT_OP 3893 -DATA(insert OID = 3894 ( ">>" PGNSP PGUID b f f 3831 3831 16 3893 0 range_after rangesel scalargtjoinsel )); -DESCR("is right of"); -#define OID_RANGE_RIGHT_OP 3894 -DATA(insert OID = 3895 ( "&<" PGNSP PGUID b f f 3831 3831 16 0 0 range_overleft rangesel scalarltjoinsel )); -DESCR("overlaps or is left of"); -#define OID_RANGE_OVERLAPS_LEFT_OP 3895 -DATA(insert OID = 3896 ( "&>" PGNSP PGUID b f f 3831 3831 16 0 0 range_overright rangesel scalargtjoinsel )); -DESCR("overlaps or is right of"); -#define OID_RANGE_OVERLAPS_RIGHT_OP 3896 -DATA(insert OID = 3897 ( "-|-" PGNSP PGUID b f f 3831 3831 16 3897 0 range_adjacent contsel contjoinsel )); -DESCR("is adjacent to"); -DATA(insert OID = 3898 ( "+" PGNSP PGUID b f f 3831 3831 3831 3898 0 range_union - - )); -DESCR("range union"); -DATA(insert OID = 3899 ( "-" PGNSP PGUID b f f 3831 3831 3831 0 0 range_minus - - )); -DESCR("range difference"); -DATA(insert OID = 3900 ( "*" PGNSP PGUID b f f 3831 3831 3831 3900 0 range_intersect - - )); -DESCR("range intersection"); -DATA(insert OID = 3962 ( "->" PGNSP PGUID b f f 114 25 114 0 0 json_object_field - - )); -DESCR("get json object field"); -DATA(insert OID = 3963 ( "->>" PGNSP PGUID b f f 114 25 25 0 0 json_object_field_text - - )); -DESCR("get json object field as text"); -DATA(insert OID = 3964 ( "->" PGNSP PGUID b f f 114 23 114 0 0 json_array_element - - )); -DESCR("get json array element"); -DATA(insert OID = 3965 ( "->>" PGNSP PGUID b f f 114 23 25 0 0 json_array_element_text - - )); -DESCR("get json array element as text"); -DATA(insert OID = 3966 ( "#>" PGNSP PGUID b f f 114 1009 114 0 0 json_extract_path - - )); -DESCR("get value from json with path elements"); -DATA(insert OID = 3967 ( "#>>" PGNSP PGUID b f f 114 1009 25 0 0 json_extract_path_text - - )); -DESCR("get value from json as text with path elements"); -DATA(insert OID = 3211 ( "->" PGNSP PGUID b f f 3802 25 3802 0 0 jsonb_object_field - - )); -DESCR("get jsonb object field"); -DATA(insert OID = 3477 ( "->>" PGNSP PGUID b f f 3802 25 25 0 0 jsonb_object_field_text - - )); -DESCR("get jsonb object field as text"); -DATA(insert OID = 3212 ( "->" PGNSP PGUID b f f 3802 23 3802 0 0 jsonb_array_element - - )); -DESCR("get jsonb array element"); -DATA(insert OID = 3481 ( "->>" PGNSP PGUID b f f 3802 23 25 0 0 jsonb_array_element_text - - )); -DESCR("get jsonb array element as text"); -DATA(insert OID = 3213 ( "#>" PGNSP PGUID b f f 3802 1009 3802 0 0 jsonb_extract_path - - )); -DESCR("get value from jsonb with path elements"); -DATA(insert OID = 3206 ( "#>>" PGNSP PGUID b f f 3802 1009 25 0 0 jsonb_extract_path_text - - )); -DESCR("get value from jsonb as text with path elements"); -DATA(insert OID = 3240 ( "=" PGNSP PGUID b t t 3802 3802 16 3240 3241 jsonb_eq eqsel eqjoinsel )); -DESCR("equal"); -DATA(insert OID = 3241 ( "<>" PGNSP PGUID b f f 3802 3802 16 3241 3240 jsonb_ne neqsel neqjoinsel )); -DESCR("not equal"); -DATA(insert OID = 3242 ( "<" PGNSP PGUID b f f 3802 3802 16 3243 3245 jsonb_lt scalarltsel scalarltjoinsel )); -DESCR("less than"); -DATA(insert OID = 3243 ( ">" PGNSP PGUID b f f 3802 3802 16 3242 3244 jsonb_gt scalargtsel scalargtjoinsel )); -DESCR("greater than"); -DATA(insert OID = 3244 ( "<=" PGNSP PGUID b f f 3802 3802 16 3245 3243 jsonb_le scalarltsel scalarltjoinsel )); -DESCR("less than or equal"); -DATA(insert OID = 3245 ( ">=" PGNSP PGUID b f f 3802 3802 16 3244 3242 jsonb_ge scalargtsel scalargtjoinsel )); -DESCR("greater than or equal"); -DATA(insert OID = 3246 ( "@>" PGNSP PGUID b f f 3802 3802 16 3250 0 jsonb_contains contsel contjoinsel )); -DESCR("contains"); -DATA(insert OID = 3247 ( "?" PGNSP PGUID b f f 3802 25 16 0 0 jsonb_exists contsel contjoinsel )); -DESCR("key exists"); -DATA(insert OID = 3248 ( "?|" PGNSP PGUID b f f 3802 1009 16 0 0 jsonb_exists_any contsel contjoinsel )); -DESCR("any key exists"); -DATA(insert OID = 3249 ( "?&" PGNSP PGUID b f f 3802 1009 16 0 0 jsonb_exists_all contsel contjoinsel )); -DESCR("all keys exist"); -DATA(insert OID = 3250 ( "<@" PGNSP PGUID b f f 3802 3802 16 3246 0 jsonb_contained contsel contjoinsel )); -DESCR("is contained by"); -DATA(insert OID = 3284 ( "||" PGNSP PGUID b f f 3802 3802 3802 0 0 jsonb_concat - - )); -DESCR("concatenate"); -DATA(insert OID = 3285 ( "-" PGNSP PGUID b f f 3802 25 3802 0 0 3302 - - )); -DESCR("delete object field"); -DATA(insert OID = 3398 ( "-" PGNSP PGUID b f f 3802 1009 3802 0 0 3343 - -)); -DESCR("delete object fields"); -DATA(insert OID = 3286 ( "-" PGNSP PGUID b f f 3802 23 3802 0 0 3303 - - )); -DESCR("delete array element"); -DATA(insert OID = 3287 ( "#-" PGNSP PGUID b f f 3802 1009 3802 0 0 jsonb_delete_path - - )); -DESCR("delete path"); +extern void OperatorUpd(Oid baseId, Oid commId, Oid negId, bool isDelete); #endif /* PG_OPERATOR_H */ diff --git a/parser/include/catalog/pg_operator_d.h b/parser/include/catalog/pg_operator_d.h new file mode 100644 index 00000000..02a59564 --- /dev/null +++ b/parser/include/catalog/pg_operator_d.h @@ -0,0 +1,106 @@ +/*------------------------------------------------------------------------- + * + * pg_operator_d.h + * Macro definitions for pg_operator + * + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group + * Portions Copyright (c) 1994, Regents of the University of California + * + * NOTES + * ****************************** + * *** DO NOT EDIT THIS FILE! *** + * ****************************** + * + * It has been GENERATED by src/backend/catalog/genbki.pl + * + *------------------------------------------------------------------------- + */ +#ifndef PG_OPERATOR_D_H +#define PG_OPERATOR_D_H + +#define OperatorRelationId 2617 + +#define Anum_pg_operator_oid 1 +#define Anum_pg_operator_oprname 2 +#define Anum_pg_operator_oprnamespace 3 +#define Anum_pg_operator_oprowner 4 +#define Anum_pg_operator_oprkind 5 +#define Anum_pg_operator_oprcanmerge 6 +#define Anum_pg_operator_oprcanhash 7 +#define Anum_pg_operator_oprleft 8 +#define Anum_pg_operator_oprright 9 +#define Anum_pg_operator_oprresult 10 +#define Anum_pg_operator_oprcom 11 +#define Anum_pg_operator_oprnegate 12 +#define Anum_pg_operator_oprcode 13 +#define Anum_pg_operator_oprrest 14 +#define Anum_pg_operator_oprjoin 15 + +#define Natts_pg_operator 15 + +#define BooleanNotEqualOperator 85 +#define BooleanEqualOperator 91 +#define Int4EqualOperator 96 +#define Int4LessOperator 97 +#define TextEqualOperator 98 +#define NameEqualTextOperator 254 +#define NameLessTextOperator 255 +#define NameGreaterEqualTextOperator 257 +#define TIDEqualOperator 387 +#define TIDLessOperator 2799 +#define Int8LessOperator 412 +#define OID_NAME_REGEXEQ_OP 639 +#define OID_TEXT_REGEXEQ_OP 641 +#define TextLessOperator 664 +#define TextGreaterEqualOperator 667 +#define Float8LessOperator 672 +#define BpcharEqualOperator 1054 +#define OID_BPCHAR_REGEXEQ_OP 1055 +#define BpcharLessOperator 1058 +#define BpcharGreaterEqualOperator 1061 +#define ARRAY_EQ_OP 1070 +#define ARRAY_LT_OP 1072 +#define ARRAY_GT_OP 1073 +#define OID_NAME_LIKE_OP 1207 +#define OID_TEXT_LIKE_OP 1209 +#define OID_BPCHAR_LIKE_OP 1211 +#define OID_NAME_ICREGEXEQ_OP 1226 +#define OID_TEXT_ICREGEXEQ_OP 1228 +#define OID_BPCHAR_ICREGEXEQ_OP 1234 +#define OID_INET_SUB_OP 931 +#define OID_INET_SUBEQ_OP 932 +#define OID_INET_SUP_OP 933 +#define OID_INET_SUPEQ_OP 934 +#define OID_INET_OVERLAP_OP 3552 +#define OID_NAME_ICLIKE_OP 1625 +#define OID_TEXT_ICLIKE_OP 1627 +#define OID_BPCHAR_ICLIKE_OP 1629 +#define ByteaEqualOperator 1955 +#define ByteaLessOperator 1957 +#define ByteaGreaterEqualOperator 1960 +#define OID_BYTEA_LIKE_OP 2016 +#define TextPatternLessOperator 2314 +#define TextPatternGreaterEqualOperator 2317 +#define BpcharPatternLessOperator 2326 +#define BpcharPatternGreaterEqualOperator 2329 +#define OID_ARRAY_OVERLAP_OP 2750 +#define OID_ARRAY_CONTAINS_OP 2751 +#define OID_ARRAY_CONTAINED_OP 2752 +#define RECORD_EQ_OP 2988 +#define RECORD_LT_OP 2990 +#define RECORD_GT_OP 2991 +#define OID_RANGE_LESS_OP 3884 +#define OID_RANGE_LESS_EQUAL_OP 3885 +#define OID_RANGE_GREATER_EQUAL_OP 3886 +#define OID_RANGE_GREATER_OP 3887 +#define OID_RANGE_OVERLAP_OP 3888 +#define OID_RANGE_CONTAINS_ELEM_OP 3889 +#define OID_RANGE_CONTAINS_OP 3890 +#define OID_RANGE_ELEM_CONTAINED_OP 3891 +#define OID_RANGE_CONTAINED_OP 3892 +#define OID_RANGE_LEFT_OP 3893 +#define OID_RANGE_RIGHT_OP 3894 +#define OID_RANGE_OVERLAPS_LEFT_OP 3895 +#define OID_RANGE_OVERLAPS_RIGHT_OP 3896 + +#endif /* PG_OPERATOR_D_H */ diff --git a/parser/include/catalog/pg_opfamily.h b/parser/include/catalog/pg_opfamily.h index 0d0ba7c6..503f0d2f 100644 --- a/parser/include/catalog/pg_opfamily.h +++ b/parser/include/catalog/pg_opfamily.h @@ -1,18 +1,17 @@ /*------------------------------------------------------------------------- * * pg_opfamily.h - * definition of the system "opfamily" relation (pg_opfamily) - * along with the relation's initial contents. + * definition of the "operator family" system catalog (pg_opfamily) * * - * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/catalog/pg_opfamily.h * * NOTES - * the genbki.pl script reads this file and generates .bki - * information from the DATA() statements. + * The Catalog.pm module reads this file and derives schema + * information. * *------------------------------------------------------------------------- */ @@ -20,20 +19,28 @@ #define PG_OPFAMILY_H #include "catalog/genbki.h" +#include "catalog/pg_opfamily_d.h" /* ---------------- * pg_opfamily definition. cpp turns this into * typedef struct FormData_pg_opfamily * ---------------- */ -#define OperatorFamilyRelationId 2753 - -CATALOG(pg_opfamily,2753) +CATALOG(pg_opfamily,2753,OperatorFamilyRelationId) { - Oid opfmethod; /* index access method opfamily is for */ - NameData opfname; /* name of this opfamily */ - Oid opfnamespace; /* namespace of this opfamily */ - Oid opfowner; /* opfamily owner */ + Oid oid; /* oid */ + + /* index access method opfamily is for */ + Oid opfmethod BKI_LOOKUP(pg_am); + + /* name of this opfamily */ + NameData opfname; + + /* namespace of this opfamily */ + Oid opfnamespace BKI_DEFAULT(PGNSP); + + /* opfamily owner */ + Oid opfowner BKI_DEFAULT(PGUID); } FormData_pg_opfamily; /* ---------------- @@ -43,148 +50,11 @@ CATALOG(pg_opfamily,2753) */ typedef FormData_pg_opfamily *Form_pg_opfamily; -/* ---------------- - * compiler constants for pg_opfamily - * ---------------- - */ -#define Natts_pg_opfamily 4 -#define Anum_pg_opfamily_opfmethod 1 -#define Anum_pg_opfamily_opfname 2 -#define Anum_pg_opfamily_opfnamespace 3 -#define Anum_pg_opfamily_opfowner 4 - -/* ---------------- - * initial contents of pg_opfamily - * ---------------- - */ +#ifdef EXPOSE_TO_CLIENT_CODE -DATA(insert OID = 421 ( 403 abstime_ops PGNSP PGUID )); -DATA(insert OID = 397 ( 403 array_ops PGNSP PGUID )); -DATA(insert OID = 627 ( 405 array_ops PGNSP PGUID )); -DATA(insert OID = 423 ( 403 bit_ops PGNSP PGUID )); -DATA(insert OID = 424 ( 403 bool_ops PGNSP PGUID )); -#define BOOL_BTREE_FAM_OID 424 -DATA(insert OID = 426 ( 403 bpchar_ops PGNSP PGUID )); -#define BPCHAR_BTREE_FAM_OID 426 -DATA(insert OID = 427 ( 405 bpchar_ops PGNSP PGUID )); -DATA(insert OID = 428 ( 403 bytea_ops PGNSP PGUID )); -#define BYTEA_BTREE_FAM_OID 428 -DATA(insert OID = 429 ( 403 char_ops PGNSP PGUID )); -DATA(insert OID = 431 ( 405 char_ops PGNSP PGUID )); -DATA(insert OID = 434 ( 403 datetime_ops PGNSP PGUID )); -DATA(insert OID = 435 ( 405 date_ops PGNSP PGUID )); -DATA(insert OID = 1970 ( 403 float_ops PGNSP PGUID )); -DATA(insert OID = 1971 ( 405 float_ops PGNSP PGUID )); -DATA(insert OID = 1974 ( 403 network_ops PGNSP PGUID )); -#define NETWORK_BTREE_FAM_OID 1974 -DATA(insert OID = 1975 ( 405 network_ops PGNSP PGUID )); -DATA(insert OID = 3550 ( 783 network_ops PGNSP PGUID )); -DATA(insert OID = 3794 ( 4000 network_ops PGNSP PGUID )); -DATA(insert OID = 1976 ( 403 integer_ops PGNSP PGUID )); -#define INTEGER_BTREE_FAM_OID 1976 -DATA(insert OID = 1977 ( 405 integer_ops PGNSP PGUID )); -DATA(insert OID = 1982 ( 403 interval_ops PGNSP PGUID )); -DATA(insert OID = 1983 ( 405 interval_ops PGNSP PGUID )); -DATA(insert OID = 1984 ( 403 macaddr_ops PGNSP PGUID )); -DATA(insert OID = 1985 ( 405 macaddr_ops PGNSP PGUID )); -DATA(insert OID = 3371 ( 403 macaddr8_ops PGNSP PGUID )); -DATA(insert OID = 3372 ( 405 macaddr8_ops PGNSP PGUID )); -DATA(insert OID = 1986 ( 403 name_ops PGNSP PGUID )); -#define NAME_BTREE_FAM_OID 1986 -DATA(insert OID = 1987 ( 405 name_ops PGNSP PGUID )); -DATA(insert OID = 1988 ( 403 numeric_ops PGNSP PGUID )); -DATA(insert OID = 1998 ( 405 numeric_ops PGNSP PGUID )); -DATA(insert OID = 1989 ( 403 oid_ops PGNSP PGUID )); -#define OID_BTREE_FAM_OID 1989 -DATA(insert OID = 1990 ( 405 oid_ops PGNSP PGUID )); -DATA(insert OID = 1991 ( 403 oidvector_ops PGNSP PGUID )); -DATA(insert OID = 1992 ( 405 oidvector_ops PGNSP PGUID )); -DATA(insert OID = 2994 ( 403 record_ops PGNSP PGUID )); -DATA(insert OID = 3194 ( 403 record_image_ops PGNSP PGUID )); -DATA(insert OID = 1994 ( 403 text_ops PGNSP PGUID )); -#define TEXT_BTREE_FAM_OID 1994 -DATA(insert OID = 1995 ( 405 text_ops PGNSP PGUID )); -DATA(insert OID = 1996 ( 403 time_ops PGNSP PGUID )); -DATA(insert OID = 1997 ( 405 time_ops PGNSP PGUID )); -DATA(insert OID = 1999 ( 405 timestamptz_ops PGNSP PGUID )); -DATA(insert OID = 2000 ( 403 timetz_ops PGNSP PGUID )); -DATA(insert OID = 2001 ( 405 timetz_ops PGNSP PGUID )); -DATA(insert OID = 2002 ( 403 varbit_ops PGNSP PGUID )); -DATA(insert OID = 2040 ( 405 timestamp_ops PGNSP PGUID )); -DATA(insert OID = 2095 ( 403 text_pattern_ops PGNSP PGUID )); -#define TEXT_PATTERN_BTREE_FAM_OID 2095 -DATA(insert OID = 2097 ( 403 bpchar_pattern_ops PGNSP PGUID )); -#define BPCHAR_PATTERN_BTREE_FAM_OID 2097 -DATA(insert OID = 2099 ( 403 money_ops PGNSP PGUID )); -DATA(insert OID = 2222 ( 405 bool_ops PGNSP PGUID )); -#define BOOL_HASH_FAM_OID 2222 -DATA(insert OID = 2223 ( 405 bytea_ops PGNSP PGUID )); -DATA(insert OID = 2789 ( 403 tid_ops PGNSP PGUID )); -DATA(insert OID = 2225 ( 405 xid_ops PGNSP PGUID )); -DATA(insert OID = 2226 ( 405 cid_ops PGNSP PGUID )); -DATA(insert OID = 2227 ( 405 abstime_ops PGNSP PGUID )); -DATA(insert OID = 2228 ( 405 reltime_ops PGNSP PGUID )); -DATA(insert OID = 2229 ( 405 text_pattern_ops PGNSP PGUID )); -DATA(insert OID = 2231 ( 405 bpchar_pattern_ops PGNSP PGUID )); -DATA(insert OID = 2233 ( 403 reltime_ops PGNSP PGUID )); -DATA(insert OID = 2234 ( 403 tinterval_ops PGNSP PGUID )); -DATA(insert OID = 2235 ( 405 aclitem_ops PGNSP PGUID )); -DATA(insert OID = 2593 ( 783 box_ops PGNSP PGUID )); -DATA(insert OID = 2594 ( 783 poly_ops PGNSP PGUID )); -DATA(insert OID = 2595 ( 783 circle_ops PGNSP PGUID )); -DATA(insert OID = 1029 ( 783 point_ops PGNSP PGUID )); -DATA(insert OID = 2745 ( 2742 array_ops PGNSP PGUID )); -DATA(insert OID = 2968 ( 403 uuid_ops PGNSP PGUID )); -DATA(insert OID = 2969 ( 405 uuid_ops PGNSP PGUID )); -DATA(insert OID = 3253 ( 403 pg_lsn_ops PGNSP PGUID )); -DATA(insert OID = 3254 ( 405 pg_lsn_ops PGNSP PGUID )); -DATA(insert OID = 3522 ( 403 enum_ops PGNSP PGUID )); -DATA(insert OID = 3523 ( 405 enum_ops PGNSP PGUID )); -DATA(insert OID = 3626 ( 403 tsvector_ops PGNSP PGUID )); -DATA(insert OID = 3655 ( 783 tsvector_ops PGNSP PGUID )); -DATA(insert OID = 3659 ( 2742 tsvector_ops PGNSP PGUID )); -DATA(insert OID = 3683 ( 403 tsquery_ops PGNSP PGUID )); -DATA(insert OID = 3702 ( 783 tsquery_ops PGNSP PGUID )); -DATA(insert OID = 3901 ( 403 range_ops PGNSP PGUID )); -DATA(insert OID = 3903 ( 405 range_ops PGNSP PGUID )); -DATA(insert OID = 3919 ( 783 range_ops PGNSP PGUID )); -DATA(insert OID = 3474 ( 4000 range_ops PGNSP PGUID )); -DATA(insert OID = 4015 ( 4000 quad_point_ops PGNSP PGUID )); -DATA(insert OID = 4016 ( 4000 kd_point_ops PGNSP PGUID )); -DATA(insert OID = 4017 ( 4000 text_ops PGNSP PGUID )); -#define TEXT_SPGIST_FAM_OID 4017 -DATA(insert OID = 4033 ( 403 jsonb_ops PGNSP PGUID )); -DATA(insert OID = 4034 ( 405 jsonb_ops PGNSP PGUID )); -DATA(insert OID = 4035 ( 783 jsonb_ops PGNSP PGUID )); -DATA(insert OID = 4036 ( 2742 jsonb_ops PGNSP PGUID )); -DATA(insert OID = 4037 ( 2742 jsonb_path_ops PGNSP PGUID )); +#define IsBooleanOpfamily(opfamily) \ + ((opfamily) == BOOL_BTREE_FAM_OID || (opfamily) == BOOL_HASH_FAM_OID) -DATA(insert OID = 4054 ( 3580 integer_minmax_ops PGNSP PGUID )); -DATA(insert OID = 4055 ( 3580 numeric_minmax_ops PGNSP PGUID )); -DATA(insert OID = 4056 ( 3580 text_minmax_ops PGNSP PGUID )); -DATA(insert OID = 4058 ( 3580 timetz_minmax_ops PGNSP PGUID )); -DATA(insert OID = 4059 ( 3580 datetime_minmax_ops PGNSP PGUID )); -DATA(insert OID = 4062 ( 3580 char_minmax_ops PGNSP PGUID )); -DATA(insert OID = 4064 ( 3580 bytea_minmax_ops PGNSP PGUID )); -DATA(insert OID = 4065 ( 3580 name_minmax_ops PGNSP PGUID )); -DATA(insert OID = 4068 ( 3580 oid_minmax_ops PGNSP PGUID )); -DATA(insert OID = 4069 ( 3580 tid_minmax_ops PGNSP PGUID )); -DATA(insert OID = 4070 ( 3580 float_minmax_ops PGNSP PGUID )); -DATA(insert OID = 4072 ( 3580 abstime_minmax_ops PGNSP PGUID )); -DATA(insert OID = 4073 ( 3580 reltime_minmax_ops PGNSP PGUID )); -DATA(insert OID = 4074 ( 3580 macaddr_minmax_ops PGNSP PGUID )); -DATA(insert OID = 4109 ( 3580 macaddr8_minmax_ops PGNSP PGUID )); -DATA(insert OID = 4075 ( 3580 network_minmax_ops PGNSP PGUID )); -DATA(insert OID = 4102 ( 3580 network_inclusion_ops PGNSP PGUID )); -DATA(insert OID = 4076 ( 3580 bpchar_minmax_ops PGNSP PGUID )); -DATA(insert OID = 4077 ( 3580 time_minmax_ops PGNSP PGUID )); -DATA(insert OID = 4078 ( 3580 interval_minmax_ops PGNSP PGUID )); -DATA(insert OID = 4079 ( 3580 bit_minmax_ops PGNSP PGUID )); -DATA(insert OID = 4080 ( 3580 varbit_minmax_ops PGNSP PGUID )); -DATA(insert OID = 4081 ( 3580 uuid_minmax_ops PGNSP PGUID )); -DATA(insert OID = 4103 ( 3580 range_inclusion_ops PGNSP PGUID )); -DATA(insert OID = 4082 ( 3580 pg_lsn_minmax_ops PGNSP PGUID )); -DATA(insert OID = 4104 ( 3580 box_inclusion_ops PGNSP PGUID )); -DATA(insert OID = 5000 ( 4000 box_ops PGNSP PGUID )); +#endif /* EXPOSE_TO_CLIENT_CODE */ #endif /* PG_OPFAMILY_H */ diff --git a/parser/include/catalog/pg_opfamily_d.h b/parser/include/catalog/pg_opfamily_d.h new file mode 100644 index 00000000..353f6865 --- /dev/null +++ b/parser/include/catalog/pg_opfamily_d.h @@ -0,0 +1,47 @@ +/*------------------------------------------------------------------------- + * + * pg_opfamily_d.h + * Macro definitions for pg_opfamily + * + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group + * Portions Copyright (c) 1994, Regents of the University of California + * + * NOTES + * ****************************** + * *** DO NOT EDIT THIS FILE! *** + * ****************************** + * + * It has been GENERATED by src/backend/catalog/genbki.pl + * + *------------------------------------------------------------------------- + */ +#ifndef PG_OPFAMILY_D_H +#define PG_OPFAMILY_D_H + +#define OperatorFamilyRelationId 2753 + +#define Anum_pg_opfamily_oid 1 +#define Anum_pg_opfamily_opfmethod 2 +#define Anum_pg_opfamily_opfname 3 +#define Anum_pg_opfamily_opfnamespace 4 +#define Anum_pg_opfamily_opfowner 5 + +#define Natts_pg_opfamily 5 + + +#define IsBooleanOpfamily(opfamily) \ + ((opfamily) == BOOL_BTREE_FAM_OID || (opfamily) == BOOL_HASH_FAM_OID) + +#define BOOL_BTREE_FAM_OID 424 +#define BPCHAR_BTREE_FAM_OID 426 +#define BYTEA_BTREE_FAM_OID 428 +#define NETWORK_BTREE_FAM_OID 1974 +#define INTEGER_BTREE_FAM_OID 1976 +#define OID_BTREE_FAM_OID 1989 +#define TEXT_BTREE_FAM_OID 1994 +#define TEXT_PATTERN_BTREE_FAM_OID 2095 +#define BPCHAR_PATTERN_BTREE_FAM_OID 2097 +#define BOOL_HASH_FAM_OID 2222 +#define TEXT_SPGIST_FAM_OID 4017 + +#endif /* PG_OPFAMILY_D_H */ diff --git a/parser/include/catalog/pg_partitioned_table.h b/parser/include/catalog/pg_partitioned_table.h index 38d64d65..a73cd0d3 100644 --- a/parser/include/catalog/pg_partitioned_table.h +++ b/parser/include/catalog/pg_partitioned_table.h @@ -1,17 +1,18 @@ /*------------------------------------------------------------------------- * * pg_partitioned_table.h - * definition of the system "partitioned table" relation - * along with the relation's initial contents. + * definition of the "partitioned table" system catalog + * (pg_partitioned_table) * * - * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group + * Portions Copyright (c) 1994, Regents of the University of California * * src/include/catalog/pg_partitioned_table.h * * NOTES - * the genbki.sh script reads this file and generates .bki - * information from the DATA() statements. + * The Catalog.pm module reads this file and derives schema + * information. * *------------------------------------------------------------------------- */ @@ -19,19 +20,20 @@ #define PG_PARTITIONED_TABLE_H #include "catalog/genbki.h" +#include "catalog/pg_partitioned_table_d.h" /* ---------------- * pg_partitioned_table definition. cpp turns this into * typedef struct FormData_pg_partitioned_table * ---------------- */ -#define PartitionedRelationId 3350 - -CATALOG(pg_partitioned_table,3350) BKI_WITHOUT_OIDS +CATALOG(pg_partitioned_table,3350,PartitionedRelationId) { Oid partrelid; /* partitioned table oid */ char partstrat; /* partitioning strategy */ int16 partnatts; /* number of partition key columns */ + Oid partdefid; /* default partition oid; InvalidOid if there + * isn't one */ /* * variable-length fields start here, but we allow direct access to @@ -58,17 +60,4 @@ CATALOG(pg_partitioned_table,3350) BKI_WITHOUT_OIDS */ typedef FormData_pg_partitioned_table *Form_pg_partitioned_table; -/* ---------------- - * compiler constants for pg_partitioned_table - * ---------------- - */ -#define Natts_pg_partitioned_table 7 -#define Anum_pg_partitioned_table_partrelid 1 -#define Anum_pg_partitioned_table_partstrat 2 -#define Anum_pg_partitioned_table_partnatts 3 -#define Anum_pg_partitioned_table_partattrs 4 -#define Anum_pg_partitioned_table_partclass 5 -#define Anum_pg_partitioned_table_partcollation 6 -#define Anum_pg_partitioned_table_partexprs 7 - #endif /* PG_PARTITIONED_TABLE_H */ diff --git a/parser/include/catalog/pg_partitioned_table_d.h b/parser/include/catalog/pg_partitioned_table_d.h new file mode 100644 index 00000000..cc273498 --- /dev/null +++ b/parser/include/catalog/pg_partitioned_table_d.h @@ -0,0 +1,35 @@ +/*------------------------------------------------------------------------- + * + * pg_partitioned_table_d.h + * Macro definitions for pg_partitioned_table + * + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group + * Portions Copyright (c) 1994, Regents of the University of California + * + * NOTES + * ****************************** + * *** DO NOT EDIT THIS FILE! *** + * ****************************** + * + * It has been GENERATED by src/backend/catalog/genbki.pl + * + *------------------------------------------------------------------------- + */ +#ifndef PG_PARTITIONED_TABLE_D_H +#define PG_PARTITIONED_TABLE_D_H + +#define PartitionedRelationId 3350 + +#define Anum_pg_partitioned_table_partrelid 1 +#define Anum_pg_partitioned_table_partstrat 2 +#define Anum_pg_partitioned_table_partnatts 3 +#define Anum_pg_partitioned_table_partdefid 4 +#define Anum_pg_partitioned_table_partattrs 5 +#define Anum_pg_partitioned_table_partclass 6 +#define Anum_pg_partitioned_table_partcollation 7 +#define Anum_pg_partitioned_table_partexprs 8 + +#define Natts_pg_partitioned_table 8 + + +#endif /* PG_PARTITIONED_TABLE_D_H */ diff --git a/parser/include/catalog/pg_proc.h b/parser/include/catalog/pg_proc.h index 6a01566b..ee3959da 100644 --- a/parser/include/catalog/pg_proc.h +++ b/parser/include/catalog/pg_proc.h @@ -1,22 +1,16 @@ /*------------------------------------------------------------------------- * * pg_proc.h - * definition of the system "procedure" relation (pg_proc) - * along with the relation's initial contents. + * definition of the "procedure" system catalog (pg_proc) * - * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/catalog/pg_proc.h * * NOTES - * The script catalog/genbki.pl reads this file and generates .bki - * information from the DATA() statements. utils/Gen_fmgrtab.pl - * generates fmgroids.h and fmgrtab.c the same way. - * - * XXX do NOT break up DATA() statements into multiple lines! - * the scripts are not as smart as you might think... - * XXX (eg. #if 0 #endif won't do what you think) + * The Catalog.pm module reads this file and derives schema + * information. * *------------------------------------------------------------------------- */ @@ -24,5456 +18,129 @@ #define PG_PROC_H #include "catalog/genbki.h" +#include "catalog/objectaddress.h" +#include "catalog/pg_proc_d.h" +#include "nodes/pg_list.h" /* ---------------- * pg_proc definition. cpp turns this into * typedef struct FormData_pg_proc * ---------------- */ -#define ProcedureRelationId 1255 -#define ProcedureRelation_Rowtype_Id 81 - -CATALOG(pg_proc,1255) BKI_BOOTSTRAP BKI_ROWTYPE_OID(81) BKI_SCHEMA_MACRO +CATALOG(pg_proc,1255,ProcedureRelationId) BKI_BOOTSTRAP BKI_ROWTYPE_OID(81,ProcedureRelation_Rowtype_Id) BKI_SCHEMA_MACRO { - NameData proname; /* procedure name */ - Oid pronamespace; /* OID of namespace containing this proc */ - Oid proowner; /* procedure owner */ - Oid prolang; /* OID of pg_language entry */ - float4 procost; /* estimated execution cost */ - float4 prorows; /* estimated # of rows out (if proretset) */ - Oid provariadic; /* element type of variadic array, or 0 */ - regproc protransform; /* transforms calls to it during planning */ - bool proisagg; /* is it an aggregate? */ - bool proiswindow; /* is it a window function? */ - bool prosecdef; /* security definer */ - bool proleakproof; /* is it a leak-proof function? */ - bool proisstrict; /* strict with respect to NULLs? */ - bool proretset; /* returns a set? */ - char provolatile; /* see PROVOLATILE_ categories below */ - char proparallel; /* see PROPARALLEL_ categories below */ - int16 pronargs; /* number of arguments */ - int16 pronargdefaults; /* number of arguments with defaults */ - Oid prorettype; /* OID of result type */ - - /* - * variable-length fields start here, but we allow direct access to - * proargtypes - */ - oidvector proargtypes; /* parameter types (excludes OUT params) */ - -#ifdef CATALOG_VARLEN - Oid proallargtypes[1]; /* all param types (NULL if IN only) */ - char proargmodes[1]; /* parameter modes (NULL if IN only) */ - text proargnames[1]; /* parameter names (NULL if no names) */ - pg_node_tree proargdefaults; /* list of expression trees for argument - * defaults (NULL if none) */ - Oid protrftypes[1]; /* types for which to apply transforms */ - text prosrc BKI_FORCE_NOT_NULL; /* procedure source text */ - text probin; /* secondary procedure info (can be NULL) */ - text proconfig[1]; /* procedure-local GUC settings */ - aclitem proacl[1]; /* access permissions */ -#endif -} FormData_pg_proc; - -/* ---------------- - * Form_pg_proc corresponds to a pointer to a tuple with - * the format of pg_proc relation. - * ---------------- - */ -typedef FormData_pg_proc *Form_pg_proc; - -/* ---------------- - * compiler constants for pg_proc - * ---------------- - */ -#define Natts_pg_proc 29 -#define Anum_pg_proc_proname 1 -#define Anum_pg_proc_pronamespace 2 -#define Anum_pg_proc_proowner 3 -#define Anum_pg_proc_prolang 4 -#define Anum_pg_proc_procost 5 -#define Anum_pg_proc_prorows 6 -#define Anum_pg_proc_provariadic 7 -#define Anum_pg_proc_protransform 8 -#define Anum_pg_proc_proisagg 9 -#define Anum_pg_proc_proiswindow 10 -#define Anum_pg_proc_prosecdef 11 -#define Anum_pg_proc_proleakproof 12 -#define Anum_pg_proc_proisstrict 13 -#define Anum_pg_proc_proretset 14 -#define Anum_pg_proc_provolatile 15 -#define Anum_pg_proc_proparallel 16 -#define Anum_pg_proc_pronargs 17 -#define Anum_pg_proc_pronargdefaults 18 -#define Anum_pg_proc_prorettype 19 -#define Anum_pg_proc_proargtypes 20 -#define Anum_pg_proc_proallargtypes 21 -#define Anum_pg_proc_proargmodes 22 -#define Anum_pg_proc_proargnames 23 -#define Anum_pg_proc_proargdefaults 24 -#define Anum_pg_proc_protrftypes 25 -#define Anum_pg_proc_prosrc 26 -#define Anum_pg_proc_probin 27 -#define Anum_pg_proc_proconfig 28 -#define Anum_pg_proc_proacl 29 - -/* ---------------- - * initial contents of pg_proc - * ---------------- - */ - -/* - * Note: every entry in pg_proc.h is expected to have a DESCR() comment, - * except for functions that implement pg_operator.h operators and don't - * have a good reason to be called directly rather than via the operator. - * (If you do expect such a function to be used directly, you should - * duplicate the operator's comment.) initdb will supply suitable default - * comments for functions referenced by pg_operator. - * - * Try to follow the style of existing functions' comments. - * Some recommended conventions: - * "I/O" for typinput, typoutput, typreceive, typsend functions - * "I/O typmod" for typmodin, typmodout functions - * "aggregate transition function" for aggtransfn functions, unless - * they are reasonably useful in their own right - * "aggregate final function" for aggfinalfn functions (likewise) - * "convert srctypename to desttypename" for cast functions - * "less-equal-greater" for B-tree comparison functions - */ - -/* keep the following ordered by OID so that later changes can be made easier */ - -/* OIDS 1 - 99 */ - -DATA(insert OID = 1242 ( boolin PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 16 "2275" _null_ _null_ _null_ _null_ _null_ boolin _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 1243 ( boolout PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 2275 "16" _null_ _null_ _null_ _null_ _null_ boolout _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 1244 ( byteain PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 17 "2275" _null_ _null_ _null_ _null_ _null_ byteain _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 31 ( byteaout PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 2275 "17" _null_ _null_ _null_ _null_ _null_ byteaout _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 1245 ( charin PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 18 "2275" _null_ _null_ _null_ _null_ _null_ charin _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 33 ( charout PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 2275 "18" _null_ _null_ _null_ _null_ _null_ charout _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 34 ( namein PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 19 "2275" _null_ _null_ _null_ _null_ _null_ namein _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 35 ( nameout PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 2275 "19" _null_ _null_ _null_ _null_ _null_ nameout _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 38 ( int2in PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 21 "2275" _null_ _null_ _null_ _null_ _null_ int2in _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 39 ( int2out PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 2275 "21" _null_ _null_ _null_ _null_ _null_ int2out _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 40 ( int2vectorin PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 22 "2275" _null_ _null_ _null_ _null_ _null_ int2vectorin _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 41 ( int2vectorout PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 2275 "22" _null_ _null_ _null_ _null_ _null_ int2vectorout _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 42 ( int4in PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 23 "2275" _null_ _null_ _null_ _null_ _null_ int4in _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 43 ( int4out PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 2275 "23" _null_ _null_ _null_ _null_ _null_ int4out _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 44 ( regprocin PGNSP PGUID 12 1 0 0 0 f f f f t f s s 1 0 24 "2275" _null_ _null_ _null_ _null_ _null_ regprocin _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 45 ( regprocout PGNSP PGUID 12 1 0 0 0 f f f f t f s s 1 0 2275 "24" _null_ _null_ _null_ _null_ _null_ regprocout _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 3494 ( to_regproc PGNSP PGUID 12 1 0 0 0 f f f f t f s s 1 0 24 "25" _null_ _null_ _null_ _null_ _null_ to_regproc _null_ _null_ _null_ )); -DESCR("convert proname to regproc"); -DATA(insert OID = 3479 ( to_regprocedure PGNSP PGUID 12 1 0 0 0 f f f f t f s s 1 0 2202 "25" _null_ _null_ _null_ _null_ _null_ to_regprocedure _null_ _null_ _null_ )); -DESCR("convert proname to regprocedure"); -DATA(insert OID = 46 ( textin PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 25 "2275" _null_ _null_ _null_ _null_ _null_ textin _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 47 ( textout PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 2275 "25" _null_ _null_ _null_ _null_ _null_ textout _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 48 ( tidin PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 27 "2275" _null_ _null_ _null_ _null_ _null_ tidin _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 49 ( tidout PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 2275 "27" _null_ _null_ _null_ _null_ _null_ tidout _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 50 ( xidin PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 28 "2275" _null_ _null_ _null_ _null_ _null_ xidin _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 51 ( xidout PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 2275 "28" _null_ _null_ _null_ _null_ _null_ xidout _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 52 ( cidin PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 29 "2275" _null_ _null_ _null_ _null_ _null_ cidin _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 53 ( cidout PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 2275 "29" _null_ _null_ _null_ _null_ _null_ cidout _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 54 ( oidvectorin PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 30 "2275" _null_ _null_ _null_ _null_ _null_ oidvectorin _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 55 ( oidvectorout PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 2275 "30" _null_ _null_ _null_ _null_ _null_ oidvectorout _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 56 ( boollt PGNSP PGUID 12 1 0 0 0 f f f t t f i s 2 0 16 "16 16" _null_ _null_ _null_ _null_ _null_ boollt _null_ _null_ _null_ )); -DATA(insert OID = 57 ( boolgt PGNSP PGUID 12 1 0 0 0 f f f t t f i s 2 0 16 "16 16" _null_ _null_ _null_ _null_ _null_ boolgt _null_ _null_ _null_ )); -DATA(insert OID = 60 ( booleq PGNSP PGUID 12 1 0 0 0 f f f t t f i s 2 0 16 "16 16" _null_ _null_ _null_ _null_ _null_ booleq _null_ _null_ _null_ )); -DATA(insert OID = 61 ( chareq PGNSP PGUID 12 1 0 0 0 f f f t t f i s 2 0 16 "18 18" _null_ _null_ _null_ _null_ _null_ chareq _null_ _null_ _null_ )); -DATA(insert OID = 62 ( nameeq PGNSP PGUID 12 1 0 0 0 f f f t t f i s 2 0 16 "19 19" _null_ _null_ _null_ _null_ _null_ nameeq _null_ _null_ _null_ )); -DATA(insert OID = 63 ( int2eq PGNSP PGUID 12 1 0 0 0 f f f t t f i s 2 0 16 "21 21" _null_ _null_ _null_ _null_ _null_ int2eq _null_ _null_ _null_ )); -DATA(insert OID = 64 ( int2lt PGNSP PGUID 12 1 0 0 0 f f f t t f i s 2 0 16 "21 21" _null_ _null_ _null_ _null_ _null_ int2lt _null_ _null_ _null_ )); -DATA(insert OID = 65 ( int4eq PGNSP PGUID 12 1 0 0 0 f f f t t f i s 2 0 16 "23 23" _null_ _null_ _null_ _null_ _null_ int4eq _null_ _null_ _null_ )); -DATA(insert OID = 66 ( int4lt PGNSP PGUID 12 1 0 0 0 f f f t t f i s 2 0 16 "23 23" _null_ _null_ _null_ _null_ _null_ int4lt _null_ _null_ _null_ )); -DATA(insert OID = 67 ( texteq PGNSP PGUID 12 1 0 0 0 f f f t t f i s 2 0 16 "25 25" _null_ _null_ _null_ _null_ _null_ texteq _null_ _null_ _null_ )); -DATA(insert OID = 68 ( xideq PGNSP PGUID 12 1 0 0 0 f f f t t f i s 2 0 16 "28 28" _null_ _null_ _null_ _null_ _null_ xideq _null_ _null_ _null_ )); -DATA(insert OID = 3308 ( xidneq PGNSP PGUID 12 1 0 0 0 f f f t t f i s 2 0 16 "28 28" _null_ _null_ _null_ _null_ _null_ xidneq _null_ _null_ _null_ )); -DATA(insert OID = 69 ( cideq PGNSP PGUID 12 1 0 0 0 f f f t t f i s 2 0 16 "29 29" _null_ _null_ _null_ _null_ _null_ cideq _null_ _null_ _null_ )); -DATA(insert OID = 70 ( charne PGNSP PGUID 12 1 0 0 0 f f f t t f i s 2 0 16 "18 18" _null_ _null_ _null_ _null_ _null_ charne _null_ _null_ _null_ )); -DATA(insert OID = 1246 ( charlt PGNSP PGUID 12 1 0 0 0 f f f t t f i s 2 0 16 "18 18" _null_ _null_ _null_ _null_ _null_ charlt _null_ _null_ _null_ )); -DATA(insert OID = 72 ( charle PGNSP PGUID 12 1 0 0 0 f f f t t f i s 2 0 16 "18 18" _null_ _null_ _null_ _null_ _null_ charle _null_ _null_ _null_ )); -DATA(insert OID = 73 ( chargt PGNSP PGUID 12 1 0 0 0 f f f t t f i s 2 0 16 "18 18" _null_ _null_ _null_ _null_ _null_ chargt _null_ _null_ _null_ )); -DATA(insert OID = 74 ( charge PGNSP PGUID 12 1 0 0 0 f f f t t f i s 2 0 16 "18 18" _null_ _null_ _null_ _null_ _null_ charge _null_ _null_ _null_ )); -DATA(insert OID = 77 ( int4 PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 23 "18" _null_ _null_ _null_ _null_ _null_ chartoi4 _null_ _null_ _null_ )); -DESCR("convert char to int4"); -DATA(insert OID = 78 ( char PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 18 "23" _null_ _null_ _null_ _null_ _null_ i4tochar _null_ _null_ _null_ )); -DESCR("convert int4 to char"); - -DATA(insert OID = 79 ( nameregexeq PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 16 "19 25" _null_ _null_ _null_ _null_ _null_ nameregexeq _null_ _null_ _null_ )); -DATA(insert OID = 1252 ( nameregexne PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 16 "19 25" _null_ _null_ _null_ _null_ _null_ nameregexne _null_ _null_ _null_ )); -DATA(insert OID = 1254 ( textregexeq PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 16 "25 25" _null_ _null_ _null_ _null_ _null_ textregexeq _null_ _null_ _null_ )); -DATA(insert OID = 1256 ( textregexne PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 16 "25 25" _null_ _null_ _null_ _null_ _null_ textregexne _null_ _null_ _null_ )); -DATA(insert OID = 1257 ( textlen PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 23 "25" _null_ _null_ _null_ _null_ _null_ textlen _null_ _null_ _null_ )); -DESCR("length"); -DATA(insert OID = 1258 ( textcat PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 25 "25 25" _null_ _null_ _null_ _null_ _null_ textcat _null_ _null_ _null_ )); - -DATA(insert OID = 84 ( boolne PGNSP PGUID 12 1 0 0 0 f f f t t f i s 2 0 16 "16 16" _null_ _null_ _null_ _null_ _null_ boolne _null_ _null_ _null_ )); -DATA(insert OID = 89 ( version PGNSP PGUID 12 1 0 0 0 f f f f t f s s 0 0 25 "" _null_ _null_ _null_ _null_ _null_ pgsql_version _null_ _null_ _null_ )); -DESCR("PostgreSQL version string"); - -DATA(insert OID = 86 ( pg_ddl_command_in PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 32 "2275" _null_ _null_ _null_ _null_ _null_ pg_ddl_command_in _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 87 ( pg_ddl_command_out PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 2275 "32" _null_ _null_ _null_ _null_ _null_ pg_ddl_command_out _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 88 ( pg_ddl_command_recv PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 32 "2281" _null_ _null_ _null_ _null_ _null_ pg_ddl_command_recv _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 90 ( pg_ddl_command_send PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 17 "32" _null_ _null_ _null_ _null_ _null_ pg_ddl_command_send _null_ _null_ _null_ )); -DESCR("I/O"); - -/* OIDS 100 - 199 */ - -DATA(insert OID = 101 ( eqsel PGNSP PGUID 12 1 0 0 0 f f f f t f s s 4 0 701 "2281 26 2281 23" _null_ _null_ _null_ _null_ _null_ eqsel _null_ _null_ _null_ )); -DESCR("restriction selectivity of = and related operators"); -DATA(insert OID = 102 ( neqsel PGNSP PGUID 12 1 0 0 0 f f f f t f s s 4 0 701 "2281 26 2281 23" _null_ _null_ _null_ _null_ _null_ neqsel _null_ _null_ _null_ )); -DESCR("restriction selectivity of <> and related operators"); -DATA(insert OID = 103 ( scalarltsel PGNSP PGUID 12 1 0 0 0 f f f f t f s s 4 0 701 "2281 26 2281 23" _null_ _null_ _null_ _null_ _null_ scalarltsel _null_ _null_ _null_ )); -DESCR("restriction selectivity of < and related operators on scalar datatypes"); -DATA(insert OID = 104 ( scalargtsel PGNSP PGUID 12 1 0 0 0 f f f f t f s s 4 0 701 "2281 26 2281 23" _null_ _null_ _null_ _null_ _null_ scalargtsel _null_ _null_ _null_ )); -DESCR("restriction selectivity of > and related operators on scalar datatypes"); -DATA(insert OID = 105 ( eqjoinsel PGNSP PGUID 12 1 0 0 0 f f f f t f s s 5 0 701 "2281 26 2281 21 2281" _null_ _null_ _null_ _null_ _null_ eqjoinsel _null_ _null_ _null_ )); -DESCR("join selectivity of = and related operators"); -DATA(insert OID = 106 ( neqjoinsel PGNSP PGUID 12 1 0 0 0 f f f f t f s s 5 0 701 "2281 26 2281 21 2281" _null_ _null_ _null_ _null_ _null_ neqjoinsel _null_ _null_ _null_ )); -DESCR("join selectivity of <> and related operators"); -DATA(insert OID = 107 ( scalarltjoinsel PGNSP PGUID 12 1 0 0 0 f f f f t f s s 5 0 701 "2281 26 2281 21 2281" _null_ _null_ _null_ _null_ _null_ scalarltjoinsel _null_ _null_ _null_ )); -DESCR("join selectivity of < and related operators on scalar datatypes"); -DATA(insert OID = 108 ( scalargtjoinsel PGNSP PGUID 12 1 0 0 0 f f f f t f s s 5 0 701 "2281 26 2281 21 2281" _null_ _null_ _null_ _null_ _null_ scalargtjoinsel _null_ _null_ _null_ )); -DESCR("join selectivity of > and related operators on scalar datatypes"); - -DATA(insert OID = 109 ( unknownin PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 705 "2275" _null_ _null_ _null_ _null_ _null_ unknownin _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 110 ( unknownout PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 2275 "705" _null_ _null_ _null_ _null_ _null_ unknownout _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 111 ( numeric_fac PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 1700 "20" _null_ _null_ _null_ _null_ _null_ numeric_fac _null_ _null_ _null_ )); - -DATA(insert OID = 115 ( box_above_eq PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 16 "603 603" _null_ _null_ _null_ _null_ _null_ box_above_eq _null_ _null_ _null_ )); -DATA(insert OID = 116 ( box_below_eq PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 16 "603 603" _null_ _null_ _null_ _null_ _null_ box_below_eq _null_ _null_ _null_ )); - -DATA(insert OID = 117 ( point_in PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 600 "2275" _null_ _null_ _null_ _null_ _null_ point_in _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 118 ( point_out PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 2275 "600" _null_ _null_ _null_ _null_ _null_ point_out _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 119 ( lseg_in PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 601 "2275" _null_ _null_ _null_ _null_ _null_ lseg_in _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 120 ( lseg_out PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 2275 "601" _null_ _null_ _null_ _null_ _null_ lseg_out _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 121 ( path_in PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 602 "2275" _null_ _null_ _null_ _null_ _null_ path_in _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 122 ( path_out PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 2275 "602" _null_ _null_ _null_ _null_ _null_ path_out _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 123 ( box_in PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 603 "2275" _null_ _null_ _null_ _null_ _null_ box_in _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 124 ( box_out PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 2275 "603" _null_ _null_ _null_ _null_ _null_ box_out _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 125 ( box_overlap PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 16 "603 603" _null_ _null_ _null_ _null_ _null_ box_overlap _null_ _null_ _null_ )); -DATA(insert OID = 126 ( box_ge PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 16 "603 603" _null_ _null_ _null_ _null_ _null_ box_ge _null_ _null_ _null_ )); -DATA(insert OID = 127 ( box_gt PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 16 "603 603" _null_ _null_ _null_ _null_ _null_ box_gt _null_ _null_ _null_ )); -DATA(insert OID = 128 ( box_eq PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 16 "603 603" _null_ _null_ _null_ _null_ _null_ box_eq _null_ _null_ _null_ )); -DATA(insert OID = 129 ( box_lt PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 16 "603 603" _null_ _null_ _null_ _null_ _null_ box_lt _null_ _null_ _null_ )); -DATA(insert OID = 130 ( box_le PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 16 "603 603" _null_ _null_ _null_ _null_ _null_ box_le _null_ _null_ _null_ )); -DATA(insert OID = 131 ( point_above PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 16 "600 600" _null_ _null_ _null_ _null_ _null_ point_above _null_ _null_ _null_ )); -DATA(insert OID = 132 ( point_left PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 16 "600 600" _null_ _null_ _null_ _null_ _null_ point_left _null_ _null_ _null_ )); -DATA(insert OID = 133 ( point_right PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 16 "600 600" _null_ _null_ _null_ _null_ _null_ point_right _null_ _null_ _null_ )); -DATA(insert OID = 134 ( point_below PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 16 "600 600" _null_ _null_ _null_ _null_ _null_ point_below _null_ _null_ _null_ )); -DATA(insert OID = 135 ( point_eq PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 16 "600 600" _null_ _null_ _null_ _null_ _null_ point_eq _null_ _null_ _null_ )); -DATA(insert OID = 136 ( on_pb PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 16 "600 603" _null_ _null_ _null_ _null_ _null_ on_pb _null_ _null_ _null_ )); -DATA(insert OID = 137 ( on_ppath PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 16 "600 602" _null_ _null_ _null_ _null_ _null_ on_ppath _null_ _null_ _null_ )); -DATA(insert OID = 138 ( box_center PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 600 "603" _null_ _null_ _null_ _null_ _null_ box_center _null_ _null_ _null_ )); -DATA(insert OID = 139 ( areasel PGNSP PGUID 12 1 0 0 0 f f f f t f s s 4 0 701 "2281 26 2281 23" _null_ _null_ _null_ _null_ _null_ areasel _null_ _null_ _null_ )); -DESCR("restriction selectivity for area-comparison operators"); -DATA(insert OID = 140 ( areajoinsel PGNSP PGUID 12 1 0 0 0 f f f f t f s s 5 0 701 "2281 26 2281 21 2281" _null_ _null_ _null_ _null_ _null_ areajoinsel _null_ _null_ _null_ )); -DESCR("join selectivity for area-comparison operators"); -DATA(insert OID = 141 ( int4mul PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 23 "23 23" _null_ _null_ _null_ _null_ _null_ int4mul _null_ _null_ _null_ )); -DATA(insert OID = 144 ( int4ne PGNSP PGUID 12 1 0 0 0 f f f t t f i s 2 0 16 "23 23" _null_ _null_ _null_ _null_ _null_ int4ne _null_ _null_ _null_ )); -DATA(insert OID = 145 ( int2ne PGNSP PGUID 12 1 0 0 0 f f f t t f i s 2 0 16 "21 21" _null_ _null_ _null_ _null_ _null_ int2ne _null_ _null_ _null_ )); -DATA(insert OID = 146 ( int2gt PGNSP PGUID 12 1 0 0 0 f f f t t f i s 2 0 16 "21 21" _null_ _null_ _null_ _null_ _null_ int2gt _null_ _null_ _null_ )); -DATA(insert OID = 147 ( int4gt PGNSP PGUID 12 1 0 0 0 f f f t t f i s 2 0 16 "23 23" _null_ _null_ _null_ _null_ _null_ int4gt _null_ _null_ _null_ )); -DATA(insert OID = 148 ( int2le PGNSP PGUID 12 1 0 0 0 f f f t t f i s 2 0 16 "21 21" _null_ _null_ _null_ _null_ _null_ int2le _null_ _null_ _null_ )); -DATA(insert OID = 149 ( int4le PGNSP PGUID 12 1 0 0 0 f f f t t f i s 2 0 16 "23 23" _null_ _null_ _null_ _null_ _null_ int4le _null_ _null_ _null_ )); -DATA(insert OID = 150 ( int4ge PGNSP PGUID 12 1 0 0 0 f f f t t f i s 2 0 16 "23 23" _null_ _null_ _null_ _null_ _null_ int4ge _null_ _null_ _null_ )); -DATA(insert OID = 151 ( int2ge PGNSP PGUID 12 1 0 0 0 f f f t t f i s 2 0 16 "21 21" _null_ _null_ _null_ _null_ _null_ int2ge _null_ _null_ _null_ )); -DATA(insert OID = 152 ( int2mul PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 21 "21 21" _null_ _null_ _null_ _null_ _null_ int2mul _null_ _null_ _null_ )); -DATA(insert OID = 153 ( int2div PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 21 "21 21" _null_ _null_ _null_ _null_ _null_ int2div _null_ _null_ _null_ )); -DATA(insert OID = 154 ( int4div PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 23 "23 23" _null_ _null_ _null_ _null_ _null_ int4div _null_ _null_ _null_ )); -DATA(insert OID = 155 ( int2mod PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 21 "21 21" _null_ _null_ _null_ _null_ _null_ int2mod _null_ _null_ _null_ )); -DATA(insert OID = 156 ( int4mod PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 23 "23 23" _null_ _null_ _null_ _null_ _null_ int4mod _null_ _null_ _null_ )); -DATA(insert OID = 157 ( textne PGNSP PGUID 12 1 0 0 0 f f f t t f i s 2 0 16 "25 25" _null_ _null_ _null_ _null_ _null_ textne _null_ _null_ _null_ )); -DATA(insert OID = 158 ( int24eq PGNSP PGUID 12 1 0 0 0 f f f t t f i s 2 0 16 "21 23" _null_ _null_ _null_ _null_ _null_ int24eq _null_ _null_ _null_ )); -DATA(insert OID = 159 ( int42eq PGNSP PGUID 12 1 0 0 0 f f f t t f i s 2 0 16 "23 21" _null_ _null_ _null_ _null_ _null_ int42eq _null_ _null_ _null_ )); -DATA(insert OID = 160 ( int24lt PGNSP PGUID 12 1 0 0 0 f f f t t f i s 2 0 16 "21 23" _null_ _null_ _null_ _null_ _null_ int24lt _null_ _null_ _null_ )); -DATA(insert OID = 161 ( int42lt PGNSP PGUID 12 1 0 0 0 f f f t t f i s 2 0 16 "23 21" _null_ _null_ _null_ _null_ _null_ int42lt _null_ _null_ _null_ )); -DATA(insert OID = 162 ( int24gt PGNSP PGUID 12 1 0 0 0 f f f t t f i s 2 0 16 "21 23" _null_ _null_ _null_ _null_ _null_ int24gt _null_ _null_ _null_ )); -DATA(insert OID = 163 ( int42gt PGNSP PGUID 12 1 0 0 0 f f f t t f i s 2 0 16 "23 21" _null_ _null_ _null_ _null_ _null_ int42gt _null_ _null_ _null_ )); -DATA(insert OID = 164 ( int24ne PGNSP PGUID 12 1 0 0 0 f f f t t f i s 2 0 16 "21 23" _null_ _null_ _null_ _null_ _null_ int24ne _null_ _null_ _null_ )); -DATA(insert OID = 165 ( int42ne PGNSP PGUID 12 1 0 0 0 f f f t t f i s 2 0 16 "23 21" _null_ _null_ _null_ _null_ _null_ int42ne _null_ _null_ _null_ )); -DATA(insert OID = 166 ( int24le PGNSP PGUID 12 1 0 0 0 f f f t t f i s 2 0 16 "21 23" _null_ _null_ _null_ _null_ _null_ int24le _null_ _null_ _null_ )); -DATA(insert OID = 167 ( int42le PGNSP PGUID 12 1 0 0 0 f f f t t f i s 2 0 16 "23 21" _null_ _null_ _null_ _null_ _null_ int42le _null_ _null_ _null_ )); -DATA(insert OID = 168 ( int24ge PGNSP PGUID 12 1 0 0 0 f f f t t f i s 2 0 16 "21 23" _null_ _null_ _null_ _null_ _null_ int24ge _null_ _null_ _null_ )); -DATA(insert OID = 169 ( int42ge PGNSP PGUID 12 1 0 0 0 f f f t t f i s 2 0 16 "23 21" _null_ _null_ _null_ _null_ _null_ int42ge _null_ _null_ _null_ )); -DATA(insert OID = 170 ( int24mul PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 23 "21 23" _null_ _null_ _null_ _null_ _null_ int24mul _null_ _null_ _null_ )); -DATA(insert OID = 171 ( int42mul PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 23 "23 21" _null_ _null_ _null_ _null_ _null_ int42mul _null_ _null_ _null_ )); -DATA(insert OID = 172 ( int24div PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 23 "21 23" _null_ _null_ _null_ _null_ _null_ int24div _null_ _null_ _null_ )); -DATA(insert OID = 173 ( int42div PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 23 "23 21" _null_ _null_ _null_ _null_ _null_ int42div _null_ _null_ _null_ )); -DATA(insert OID = 176 ( int2pl PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 21 "21 21" _null_ _null_ _null_ _null_ _null_ int2pl _null_ _null_ _null_ )); -DATA(insert OID = 177 ( int4pl PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 23 "23 23" _null_ _null_ _null_ _null_ _null_ int4pl _null_ _null_ _null_ )); -DATA(insert OID = 178 ( int24pl PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 23 "21 23" _null_ _null_ _null_ _null_ _null_ int24pl _null_ _null_ _null_ )); -DATA(insert OID = 179 ( int42pl PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 23 "23 21" _null_ _null_ _null_ _null_ _null_ int42pl _null_ _null_ _null_ )); -DATA(insert OID = 180 ( int2mi PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 21 "21 21" _null_ _null_ _null_ _null_ _null_ int2mi _null_ _null_ _null_ )); -DATA(insert OID = 181 ( int4mi PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 23 "23 23" _null_ _null_ _null_ _null_ _null_ int4mi _null_ _null_ _null_ )); -DATA(insert OID = 182 ( int24mi PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 23 "21 23" _null_ _null_ _null_ _null_ _null_ int24mi _null_ _null_ _null_ )); -DATA(insert OID = 183 ( int42mi PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 23 "23 21" _null_ _null_ _null_ _null_ _null_ int42mi _null_ _null_ _null_ )); -DATA(insert OID = 184 ( oideq PGNSP PGUID 12 1 0 0 0 f f f t t f i s 2 0 16 "26 26" _null_ _null_ _null_ _null_ _null_ oideq _null_ _null_ _null_ )); -DATA(insert OID = 185 ( oidne PGNSP PGUID 12 1 0 0 0 f f f t t f i s 2 0 16 "26 26" _null_ _null_ _null_ _null_ _null_ oidne _null_ _null_ _null_ )); -DATA(insert OID = 186 ( box_same PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 16 "603 603" _null_ _null_ _null_ _null_ _null_ box_same _null_ _null_ _null_ )); -DATA(insert OID = 187 ( box_contain PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 16 "603 603" _null_ _null_ _null_ _null_ _null_ box_contain _null_ _null_ _null_ )); -DATA(insert OID = 188 ( box_left PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 16 "603 603" _null_ _null_ _null_ _null_ _null_ box_left _null_ _null_ _null_ )); -DATA(insert OID = 189 ( box_overleft PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 16 "603 603" _null_ _null_ _null_ _null_ _null_ box_overleft _null_ _null_ _null_ )); -DATA(insert OID = 190 ( box_overright PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 16 "603 603" _null_ _null_ _null_ _null_ _null_ box_overright _null_ _null_ _null_ )); -DATA(insert OID = 191 ( box_right PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 16 "603 603" _null_ _null_ _null_ _null_ _null_ box_right _null_ _null_ _null_ )); -DATA(insert OID = 192 ( box_contained PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 16 "603 603" _null_ _null_ _null_ _null_ _null_ box_contained _null_ _null_ _null_ )); -DATA(insert OID = 193 ( box_contain_pt PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 16 "603 600" _null_ _null_ _null_ _null_ _null_ box_contain_pt _null_ _null_ _null_ )); - -DATA(insert OID = 195 ( pg_node_tree_in PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 194 "2275" _null_ _null_ _null_ _null_ _null_ pg_node_tree_in _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 196 ( pg_node_tree_out PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 2275 "194" _null_ _null_ _null_ _null_ _null_ pg_node_tree_out _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 197 ( pg_node_tree_recv PGNSP PGUID 12 1 0 0 0 f f f f t f s s 1 0 194 "2281" _null_ _null_ _null_ _null_ _null_ pg_node_tree_recv _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 198 ( pg_node_tree_send PGNSP PGUID 12 1 0 0 0 f f f f t f s s 1 0 17 "194" _null_ _null_ _null_ _null_ _null_ pg_node_tree_send _null_ _null_ _null_ )); -DESCR("I/O"); - -/* OIDS 200 - 299 */ - -DATA(insert OID = 200 ( float4in PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 700 "2275" _null_ _null_ _null_ _null_ _null_ float4in _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 201 ( float4out PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 2275 "700" _null_ _null_ _null_ _null_ _null_ float4out _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 202 ( float4mul PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 700 "700 700" _null_ _null_ _null_ _null_ _null_ float4mul _null_ _null_ _null_ )); -DATA(insert OID = 203 ( float4div PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 700 "700 700" _null_ _null_ _null_ _null_ _null_ float4div _null_ _null_ _null_ )); -DATA(insert OID = 204 ( float4pl PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 700 "700 700" _null_ _null_ _null_ _null_ _null_ float4pl _null_ _null_ _null_ )); -DATA(insert OID = 205 ( float4mi PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 700 "700 700" _null_ _null_ _null_ _null_ _null_ float4mi _null_ _null_ _null_ )); -DATA(insert OID = 206 ( float4um PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 700 "700" _null_ _null_ _null_ _null_ _null_ float4um _null_ _null_ _null_ )); -DATA(insert OID = 207 ( float4abs PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 700 "700" _null_ _null_ _null_ _null_ _null_ float4abs _null_ _null_ _null_ )); -DATA(insert OID = 208 ( float4_accum PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 1022 "1022 700" _null_ _null_ _null_ _null_ _null_ float4_accum _null_ _null_ _null_ )); -DESCR("aggregate transition function"); -DATA(insert OID = 209 ( float4larger PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 700 "700 700" _null_ _null_ _null_ _null_ _null_ float4larger _null_ _null_ _null_ )); -DESCR("larger of two"); -DATA(insert OID = 211 ( float4smaller PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 700 "700 700" _null_ _null_ _null_ _null_ _null_ float4smaller _null_ _null_ _null_ )); -DESCR("smaller of two"); - -DATA(insert OID = 212 ( int4um PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 23 "23" _null_ _null_ _null_ _null_ _null_ int4um _null_ _null_ _null_ )); -DATA(insert OID = 213 ( int2um PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 21 "21" _null_ _null_ _null_ _null_ _null_ int2um _null_ _null_ _null_ )); - -DATA(insert OID = 214 ( float8in PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 701 "2275" _null_ _null_ _null_ _null_ _null_ float8in _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 215 ( float8out PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 2275 "701" _null_ _null_ _null_ _null_ _null_ float8out _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 216 ( float8mul PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 701 "701 701" _null_ _null_ _null_ _null_ _null_ float8mul _null_ _null_ _null_ )); -DATA(insert OID = 217 ( float8div PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 701 "701 701" _null_ _null_ _null_ _null_ _null_ float8div _null_ _null_ _null_ )); -DATA(insert OID = 218 ( float8pl PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 701 "701 701" _null_ _null_ _null_ _null_ _null_ float8pl _null_ _null_ _null_ )); -DATA(insert OID = 219 ( float8mi PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 701 "701 701" _null_ _null_ _null_ _null_ _null_ float8mi _null_ _null_ _null_ )); -DATA(insert OID = 220 ( float8um PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 701 "701" _null_ _null_ _null_ _null_ _null_ float8um _null_ _null_ _null_ )); -DATA(insert OID = 221 ( float8abs PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 701 "701" _null_ _null_ _null_ _null_ _null_ float8abs _null_ _null_ _null_ )); -DATA(insert OID = 222 ( float8_accum PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 1022 "1022 701" _null_ _null_ _null_ _null_ _null_ float8_accum _null_ _null_ _null_ )); -DESCR("aggregate transition function"); -DATA(insert OID = 276 ( float8_combine PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 1022 "1022 1022" _null_ _null_ _null_ _null_ _null_ float8_combine _null_ _null_ _null_ )); -DESCR("aggregate combine function"); -DATA(insert OID = 223 ( float8larger PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 701 "701 701" _null_ _null_ _null_ _null_ _null_ float8larger _null_ _null_ _null_ )); -DESCR("larger of two"); -DATA(insert OID = 224 ( float8smaller PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 701 "701 701" _null_ _null_ _null_ _null_ _null_ float8smaller _null_ _null_ _null_ )); -DESCR("smaller of two"); - -DATA(insert OID = 225 ( lseg_center PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 600 "601" _null_ _null_ _null_ _null_ _null_ lseg_center _null_ _null_ _null_ )); -DATA(insert OID = 226 ( path_center PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 600 "602" _null_ _null_ _null_ _null_ _null_ path_center _null_ _null_ _null_ )); -DATA(insert OID = 227 ( poly_center PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 600 "604" _null_ _null_ _null_ _null_ _null_ poly_center _null_ _null_ _null_ )); - -DATA(insert OID = 228 ( dround PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 701 "701" _null_ _null_ _null_ _null_ _null_ dround _null_ _null_ _null_ )); -DESCR("round to nearest integer"); -DATA(insert OID = 229 ( dtrunc PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 701 "701" _null_ _null_ _null_ _null_ _null_ dtrunc _null_ _null_ _null_ )); -DESCR("truncate to integer"); -DATA(insert OID = 2308 ( ceil PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 701 "701" _null_ _null_ _null_ _null_ _null_ dceil _null_ _null_ _null_ )); -DESCR("nearest integer >= value"); -DATA(insert OID = 2320 ( ceiling PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 701 "701" _null_ _null_ _null_ _null_ _null_ dceil _null_ _null_ _null_ )); -DESCR("nearest integer >= value"); -DATA(insert OID = 2309 ( floor PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 701 "701" _null_ _null_ _null_ _null_ _null_ dfloor _null_ _null_ _null_ )); -DESCR("nearest integer <= value"); -DATA(insert OID = 2310 ( sign PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 701 "701" _null_ _null_ _null_ _null_ _null_ dsign _null_ _null_ _null_ )); -DESCR("sign of value"); -DATA(insert OID = 230 ( dsqrt PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 701 "701" _null_ _null_ _null_ _null_ _null_ dsqrt _null_ _null_ _null_ )); -DATA(insert OID = 231 ( dcbrt PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 701 "701" _null_ _null_ _null_ _null_ _null_ dcbrt _null_ _null_ _null_ )); -DATA(insert OID = 232 ( dpow PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 701 "701 701" _null_ _null_ _null_ _null_ _null_ dpow _null_ _null_ _null_ )); -DATA(insert OID = 233 ( dexp PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 701 "701" _null_ _null_ _null_ _null_ _null_ dexp _null_ _null_ _null_ )); -DESCR("natural exponential (e^x)"); -DATA(insert OID = 234 ( dlog1 PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 701 "701" _null_ _null_ _null_ _null_ _null_ dlog1 _null_ _null_ _null_ )); -DESCR("natural logarithm"); -DATA(insert OID = 235 ( float8 PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 701 "21" _null_ _null_ _null_ _null_ _null_ i2tod _null_ _null_ _null_ )); -DESCR("convert int2 to float8"); -DATA(insert OID = 236 ( float4 PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 700 "21" _null_ _null_ _null_ _null_ _null_ i2tof _null_ _null_ _null_ )); -DESCR("convert int2 to float4"); -DATA(insert OID = 237 ( int2 PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 21 "701" _null_ _null_ _null_ _null_ _null_ dtoi2 _null_ _null_ _null_ )); -DESCR("convert float8 to int2"); -DATA(insert OID = 238 ( int2 PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 21 "700" _null_ _null_ _null_ _null_ _null_ ftoi2 _null_ _null_ _null_ )); -DESCR("convert float4 to int2"); -DATA(insert OID = 239 ( line_distance PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 701 "628 628" _null_ _null_ _null_ _null_ _null_ line_distance _null_ _null_ _null_ )); - -DATA(insert OID = 240 ( abstimein PGNSP PGUID 12 1 0 0 0 f f f f t f s s 1 0 702 "2275" _null_ _null_ _null_ _null_ _null_ abstimein _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 241 ( abstimeout PGNSP PGUID 12 1 0 0 0 f f f f t f s s 1 0 2275 "702" _null_ _null_ _null_ _null_ _null_ abstimeout _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 242 ( reltimein PGNSP PGUID 12 1 0 0 0 f f f f t f s s 1 0 703 "2275" _null_ _null_ _null_ _null_ _null_ reltimein _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 243 ( reltimeout PGNSP PGUID 12 1 0 0 0 f f f f t f s s 1 0 2275 "703" _null_ _null_ _null_ _null_ _null_ reltimeout _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 244 ( timepl PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 702 "702 703" _null_ _null_ _null_ _null_ _null_ timepl _null_ _null_ _null_ )); -DATA(insert OID = 245 ( timemi PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 702 "702 703" _null_ _null_ _null_ _null_ _null_ timemi _null_ _null_ _null_ )); -DATA(insert OID = 246 ( tintervalin PGNSP PGUID 12 1 0 0 0 f f f f t f s s 1 0 704 "2275" _null_ _null_ _null_ _null_ _null_ tintervalin _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 247 ( tintervalout PGNSP PGUID 12 1 0 0 0 f f f f t f s s 1 0 2275 "704" _null_ _null_ _null_ _null_ _null_ tintervalout _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 248 ( intinterval PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 16 "702 704" _null_ _null_ _null_ _null_ _null_ intinterval _null_ _null_ _null_ )); -DATA(insert OID = 249 ( tintervalrel PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 703 "704" _null_ _null_ _null_ _null_ _null_ tintervalrel _null_ _null_ _null_ )); -DESCR("tinterval to reltime"); -DATA(insert OID = 250 ( timenow PGNSP PGUID 12 1 0 0 0 f f f f t f s s 0 0 702 "" _null_ _null_ _null_ _null_ _null_ timenow _null_ _null_ _null_ )); -DESCR("current date and time (abstime)"); -DATA(insert OID = 251 ( abstimeeq PGNSP PGUID 12 1 0 0 0 f f f t t f i s 2 0 16 "702 702" _null_ _null_ _null_ _null_ _null_ abstimeeq _null_ _null_ _null_ )); -DATA(insert OID = 252 ( abstimene PGNSP PGUID 12 1 0 0 0 f f f t t f i s 2 0 16 "702 702" _null_ _null_ _null_ _null_ _null_ abstimene _null_ _null_ _null_ )); -DATA(insert OID = 253 ( abstimelt PGNSP PGUID 12 1 0 0 0 f f f t t f i s 2 0 16 "702 702" _null_ _null_ _null_ _null_ _null_ abstimelt _null_ _null_ _null_ )); -DATA(insert OID = 254 ( abstimegt PGNSP PGUID 12 1 0 0 0 f f f t t f i s 2 0 16 "702 702" _null_ _null_ _null_ _null_ _null_ abstimegt _null_ _null_ _null_ )); -DATA(insert OID = 255 ( abstimele PGNSP PGUID 12 1 0 0 0 f f f t t f i s 2 0 16 "702 702" _null_ _null_ _null_ _null_ _null_ abstimele _null_ _null_ _null_ )); -DATA(insert OID = 256 ( abstimege PGNSP PGUID 12 1 0 0 0 f f f t t f i s 2 0 16 "702 702" _null_ _null_ _null_ _null_ _null_ abstimege _null_ _null_ _null_ )); -DATA(insert OID = 257 ( reltimeeq PGNSP PGUID 12 1 0 0 0 f f f t t f i s 2 0 16 "703 703" _null_ _null_ _null_ _null_ _null_ reltimeeq _null_ _null_ _null_ )); -DATA(insert OID = 258 ( reltimene PGNSP PGUID 12 1 0 0 0 f f f t t f i s 2 0 16 "703 703" _null_ _null_ _null_ _null_ _null_ reltimene _null_ _null_ _null_ )); -DATA(insert OID = 259 ( reltimelt PGNSP PGUID 12 1 0 0 0 f f f t t f i s 2 0 16 "703 703" _null_ _null_ _null_ _null_ _null_ reltimelt _null_ _null_ _null_ )); -DATA(insert OID = 260 ( reltimegt PGNSP PGUID 12 1 0 0 0 f f f t t f i s 2 0 16 "703 703" _null_ _null_ _null_ _null_ _null_ reltimegt _null_ _null_ _null_ )); -DATA(insert OID = 261 ( reltimele PGNSP PGUID 12 1 0 0 0 f f f t t f i s 2 0 16 "703 703" _null_ _null_ _null_ _null_ _null_ reltimele _null_ _null_ _null_ )); -DATA(insert OID = 262 ( reltimege PGNSP PGUID 12 1 0 0 0 f f f t t f i s 2 0 16 "703 703" _null_ _null_ _null_ _null_ _null_ reltimege _null_ _null_ _null_ )); -DATA(insert OID = 263 ( tintervalsame PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 16 "704 704" _null_ _null_ _null_ _null_ _null_ tintervalsame _null_ _null_ _null_ )); -DATA(insert OID = 264 ( tintervalct PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 16 "704 704" _null_ _null_ _null_ _null_ _null_ tintervalct _null_ _null_ _null_ )); -DATA(insert OID = 265 ( tintervalov PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 16 "704 704" _null_ _null_ _null_ _null_ _null_ tintervalov _null_ _null_ _null_ )); -DATA(insert OID = 266 ( tintervalleneq PGNSP PGUID 12 1 0 0 0 f f f t t f i s 2 0 16 "704 703" _null_ _null_ _null_ _null_ _null_ tintervalleneq _null_ _null_ _null_ )); -DATA(insert OID = 267 ( tintervallenne PGNSP PGUID 12 1 0 0 0 f f f t t f i s 2 0 16 "704 703" _null_ _null_ _null_ _null_ _null_ tintervallenne _null_ _null_ _null_ )); -DATA(insert OID = 268 ( tintervallenlt PGNSP PGUID 12 1 0 0 0 f f f t t f i s 2 0 16 "704 703" _null_ _null_ _null_ _null_ _null_ tintervallenlt _null_ _null_ _null_ )); -DATA(insert OID = 269 ( tintervallengt PGNSP PGUID 12 1 0 0 0 f f f t t f i s 2 0 16 "704 703" _null_ _null_ _null_ _null_ _null_ tintervallengt _null_ _null_ _null_ )); -DATA(insert OID = 270 ( tintervallenle PGNSP PGUID 12 1 0 0 0 f f f t t f i s 2 0 16 "704 703" _null_ _null_ _null_ _null_ _null_ tintervallenle _null_ _null_ _null_ )); -DATA(insert OID = 271 ( tintervallenge PGNSP PGUID 12 1 0 0 0 f f f t t f i s 2 0 16 "704 703" _null_ _null_ _null_ _null_ _null_ tintervallenge _null_ _null_ _null_ )); -DATA(insert OID = 272 ( tintervalstart PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 702 "704" _null_ _null_ _null_ _null_ _null_ tintervalstart _null_ _null_ _null_ )); -DATA(insert OID = 273 ( tintervalend PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 702 "704" _null_ _null_ _null_ _null_ _null_ tintervalend _null_ _null_ _null_ )); -DESCR("end of interval"); -DATA(insert OID = 274 ( timeofday PGNSP PGUID 12 1 0 0 0 f f f f t f v s 0 0 25 "" _null_ _null_ _null_ _null_ _null_ timeofday _null_ _null_ _null_ )); -DESCR("current date and time - increments during transactions"); -DATA(insert OID = 275 ( isfinite PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 16 "702" _null_ _null_ _null_ _null_ _null_ abstime_finite _null_ _null_ _null_ )); -DESCR("finite abstime?"); - -DATA(insert OID = 277 ( inter_sl PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 16 "601 628" _null_ _null_ _null_ _null_ _null_ inter_sl _null_ _null_ _null_ )); -DATA(insert OID = 278 ( inter_lb PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 16 "628 603" _null_ _null_ _null_ _null_ _null_ inter_lb _null_ _null_ _null_ )); - -DATA(insert OID = 279 ( float48mul PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 701 "700 701" _null_ _null_ _null_ _null_ _null_ float48mul _null_ _null_ _null_ )); -DATA(insert OID = 280 ( float48div PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 701 "700 701" _null_ _null_ _null_ _null_ _null_ float48div _null_ _null_ _null_ )); -DATA(insert OID = 281 ( float48pl PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 701 "700 701" _null_ _null_ _null_ _null_ _null_ float48pl _null_ _null_ _null_ )); -DATA(insert OID = 282 ( float48mi PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 701 "700 701" _null_ _null_ _null_ _null_ _null_ float48mi _null_ _null_ _null_ )); -DATA(insert OID = 283 ( float84mul PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 701 "701 700" _null_ _null_ _null_ _null_ _null_ float84mul _null_ _null_ _null_ )); -DATA(insert OID = 284 ( float84div PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 701 "701 700" _null_ _null_ _null_ _null_ _null_ float84div _null_ _null_ _null_ )); -DATA(insert OID = 285 ( float84pl PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 701 "701 700" _null_ _null_ _null_ _null_ _null_ float84pl _null_ _null_ _null_ )); -DATA(insert OID = 286 ( float84mi PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 701 "701 700" _null_ _null_ _null_ _null_ _null_ float84mi _null_ _null_ _null_ )); - -DATA(insert OID = 287 ( float4eq PGNSP PGUID 12 1 0 0 0 f f f t t f i s 2 0 16 "700 700" _null_ _null_ _null_ _null_ _null_ float4eq _null_ _null_ _null_ )); -DATA(insert OID = 288 ( float4ne PGNSP PGUID 12 1 0 0 0 f f f t t f i s 2 0 16 "700 700" _null_ _null_ _null_ _null_ _null_ float4ne _null_ _null_ _null_ )); -DATA(insert OID = 289 ( float4lt PGNSP PGUID 12 1 0 0 0 f f f t t f i s 2 0 16 "700 700" _null_ _null_ _null_ _null_ _null_ float4lt _null_ _null_ _null_ )); -DATA(insert OID = 290 ( float4le PGNSP PGUID 12 1 0 0 0 f f f t t f i s 2 0 16 "700 700" _null_ _null_ _null_ _null_ _null_ float4le _null_ _null_ _null_ )); -DATA(insert OID = 291 ( float4gt PGNSP PGUID 12 1 0 0 0 f f f t t f i s 2 0 16 "700 700" _null_ _null_ _null_ _null_ _null_ float4gt _null_ _null_ _null_ )); -DATA(insert OID = 292 ( float4ge PGNSP PGUID 12 1 0 0 0 f f f t t f i s 2 0 16 "700 700" _null_ _null_ _null_ _null_ _null_ float4ge _null_ _null_ _null_ )); - -DATA(insert OID = 293 ( float8eq PGNSP PGUID 12 1 0 0 0 f f f t t f i s 2 0 16 "701 701" _null_ _null_ _null_ _null_ _null_ float8eq _null_ _null_ _null_ )); -DATA(insert OID = 294 ( float8ne PGNSP PGUID 12 1 0 0 0 f f f t t f i s 2 0 16 "701 701" _null_ _null_ _null_ _null_ _null_ float8ne _null_ _null_ _null_ )); -DATA(insert OID = 295 ( float8lt PGNSP PGUID 12 1 0 0 0 f f f t t f i s 2 0 16 "701 701" _null_ _null_ _null_ _null_ _null_ float8lt _null_ _null_ _null_ )); -DATA(insert OID = 296 ( float8le PGNSP PGUID 12 1 0 0 0 f f f t t f i s 2 0 16 "701 701" _null_ _null_ _null_ _null_ _null_ float8le _null_ _null_ _null_ )); -DATA(insert OID = 297 ( float8gt PGNSP PGUID 12 1 0 0 0 f f f t t f i s 2 0 16 "701 701" _null_ _null_ _null_ _null_ _null_ float8gt _null_ _null_ _null_ )); -DATA(insert OID = 298 ( float8ge PGNSP PGUID 12 1 0 0 0 f f f t t f i s 2 0 16 "701 701" _null_ _null_ _null_ _null_ _null_ float8ge _null_ _null_ _null_ )); - -DATA(insert OID = 299 ( float48eq PGNSP PGUID 12 1 0 0 0 f f f t t f i s 2 0 16 "700 701" _null_ _null_ _null_ _null_ _null_ float48eq _null_ _null_ _null_ )); - -/* OIDS 300 - 399 */ - -DATA(insert OID = 300 ( float48ne PGNSP PGUID 12 1 0 0 0 f f f t t f i s 2 0 16 "700 701" _null_ _null_ _null_ _null_ _null_ float48ne _null_ _null_ _null_ )); -DATA(insert OID = 301 ( float48lt PGNSP PGUID 12 1 0 0 0 f f f t t f i s 2 0 16 "700 701" _null_ _null_ _null_ _null_ _null_ float48lt _null_ _null_ _null_ )); -DATA(insert OID = 302 ( float48le PGNSP PGUID 12 1 0 0 0 f f f t t f i s 2 0 16 "700 701" _null_ _null_ _null_ _null_ _null_ float48le _null_ _null_ _null_ )); -DATA(insert OID = 303 ( float48gt PGNSP PGUID 12 1 0 0 0 f f f t t f i s 2 0 16 "700 701" _null_ _null_ _null_ _null_ _null_ float48gt _null_ _null_ _null_ )); -DATA(insert OID = 304 ( float48ge PGNSP PGUID 12 1 0 0 0 f f f t t f i s 2 0 16 "700 701" _null_ _null_ _null_ _null_ _null_ float48ge _null_ _null_ _null_ )); -DATA(insert OID = 305 ( float84eq PGNSP PGUID 12 1 0 0 0 f f f t t f i s 2 0 16 "701 700" _null_ _null_ _null_ _null_ _null_ float84eq _null_ _null_ _null_ )); -DATA(insert OID = 306 ( float84ne PGNSP PGUID 12 1 0 0 0 f f f t t f i s 2 0 16 "701 700" _null_ _null_ _null_ _null_ _null_ float84ne _null_ _null_ _null_ )); -DATA(insert OID = 307 ( float84lt PGNSP PGUID 12 1 0 0 0 f f f t t f i s 2 0 16 "701 700" _null_ _null_ _null_ _null_ _null_ float84lt _null_ _null_ _null_ )); -DATA(insert OID = 308 ( float84le PGNSP PGUID 12 1 0 0 0 f f f t t f i s 2 0 16 "701 700" _null_ _null_ _null_ _null_ _null_ float84le _null_ _null_ _null_ )); -DATA(insert OID = 309 ( float84gt PGNSP PGUID 12 1 0 0 0 f f f t t f i s 2 0 16 "701 700" _null_ _null_ _null_ _null_ _null_ float84gt _null_ _null_ _null_ )); -DATA(insert OID = 310 ( float84ge PGNSP PGUID 12 1 0 0 0 f f f t t f i s 2 0 16 "701 700" _null_ _null_ _null_ _null_ _null_ float84ge _null_ _null_ _null_ )); -DATA(insert OID = 320 ( width_bucket PGNSP PGUID 12 1 0 0 0 f f f f t f i s 4 0 23 "701 701 701 23" _null_ _null_ _null_ _null_ _null_ width_bucket_float8 _null_ _null_ _null_ )); -DESCR("bucket number of operand in equal-width histogram"); - -DATA(insert OID = 311 ( float8 PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 701 "700" _null_ _null_ _null_ _null_ _null_ ftod _null_ _null_ _null_ )); -DESCR("convert float4 to float8"); -DATA(insert OID = 312 ( float4 PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 700 "701" _null_ _null_ _null_ _null_ _null_ dtof _null_ _null_ _null_ )); -DESCR("convert float8 to float4"); -DATA(insert OID = 313 ( int4 PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 23 "21" _null_ _null_ _null_ _null_ _null_ i2toi4 _null_ _null_ _null_ )); -DESCR("convert int2 to int4"); -DATA(insert OID = 314 ( int2 PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 21 "23" _null_ _null_ _null_ _null_ _null_ i4toi2 _null_ _null_ _null_ )); -DESCR("convert int4 to int2"); -DATA(insert OID = 316 ( float8 PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 701 "23" _null_ _null_ _null_ _null_ _null_ i4tod _null_ _null_ _null_ )); -DESCR("convert int4 to float8"); -DATA(insert OID = 317 ( int4 PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 23 "701" _null_ _null_ _null_ _null_ _null_ dtoi4 _null_ _null_ _null_ )); -DESCR("convert float8 to int4"); -DATA(insert OID = 318 ( float4 PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 700 "23" _null_ _null_ _null_ _null_ _null_ i4tof _null_ _null_ _null_ )); -DESCR("convert int4 to float4"); -DATA(insert OID = 319 ( int4 PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 23 "700" _null_ _null_ _null_ _null_ _null_ ftoi4 _null_ _null_ _null_ )); -DESCR("convert float4 to int4"); - -/* Index access method handlers */ -DATA(insert OID = 330 ( bthandler PGNSP PGUID 12 1 0 0 0 f f f f t f v s 1 0 325 "2281" _null_ _null_ _null_ _null_ _null_ bthandler _null_ _null_ _null_ )); -DESCR("btree index access method handler"); -DATA(insert OID = 331 ( hashhandler PGNSP PGUID 12 1 0 0 0 f f f f t f v s 1 0 325 "2281" _null_ _null_ _null_ _null_ _null_ hashhandler _null_ _null_ _null_ )); -DESCR("hash index access method handler"); -DATA(insert OID = 332 ( gisthandler PGNSP PGUID 12 1 0 0 0 f f f f t f v s 1 0 325 "2281" _null_ _null_ _null_ _null_ _null_ gisthandler _null_ _null_ _null_ )); -DESCR("gist index access method handler"); -DATA(insert OID = 333 ( ginhandler PGNSP PGUID 12 1 0 0 0 f f f f t f v s 1 0 325 "2281" _null_ _null_ _null_ _null_ _null_ ginhandler _null_ _null_ _null_ )); -DESCR("gin index access method handler"); -DATA(insert OID = 334 ( spghandler PGNSP PGUID 12 1 0 0 0 f f f f t f v s 1 0 325 "2281" _null_ _null_ _null_ _null_ _null_ spghandler _null_ _null_ _null_ )); -DESCR("spgist index access method handler"); -DATA(insert OID = 335 ( brinhandler PGNSP PGUID 12 1 0 0 0 f f f f t f v s 1 0 325 "2281" _null_ _null_ _null_ _null_ _null_ brinhandler _null_ _null_ _null_ )); -DESCR("brin index access method handler"); -DATA(insert OID = 3952 ( brin_summarize_new_values PGNSP PGUID 12 1 0 0 0 f f f f t f v u 1 0 23 "2205" _null_ _null_ _null_ _null_ _null_ brin_summarize_new_values _null_ _null_ _null_ )); -DESCR("brin: standalone scan new table pages"); -DATA(insert OID = 3999 ( brin_summarize_range PGNSP PGUID 12 1 0 0 0 f f f f t f v u 2 0 23 "2205 20" _null_ _null_ _null_ _null_ _null_ brin_summarize_range _null_ _null_ _null_ )); -DESCR("brin: standalone scan new table pages"); -DATA(insert OID = 4014 ( brin_desummarize_range PGNSP PGUID 12 1 0 0 0 f f f f t f v u 2 0 2278 "2205 20" _null_ _null_ _null_ _null_ _null_ brin_desummarize_range _null_ _null_ _null_ )); -DESCR("brin: desummarize page range"); - -DATA(insert OID = 338 ( amvalidate PGNSP PGUID 12 1 0 0 0 f f f f t f v s 1 0 16 "26" _null_ _null_ _null_ _null_ _null_ amvalidate _null_ _null_ _null_ )); -DESCR("validate an operator class"); - -DATA(insert OID = 636 ( pg_indexam_has_property PGNSP PGUID 12 1 0 0 0 f f f f t f s s 2 0 16 "26 25" _null_ _null_ _null_ _null_ _null_ pg_indexam_has_property _null_ _null_ _null_ )); -DESCR("test property of an index access method"); -DATA(insert OID = 637 ( pg_index_has_property PGNSP PGUID 12 1 0 0 0 f f f f t f s s 2 0 16 "2205 25" _null_ _null_ _null_ _null_ _null_ pg_index_has_property _null_ _null_ _null_ )); -DESCR("test property of an index"); -DATA(insert OID = 638 ( pg_index_column_has_property PGNSP PGUID 12 1 0 0 0 f f f f t f s s 3 0 16 "2205 23 25" _null_ _null_ _null_ _null_ _null_ pg_index_column_has_property _null_ _null_ _null_ )); -DESCR("test property of an index column"); - -DATA(insert OID = 339 ( poly_same PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 16 "604 604" _null_ _null_ _null_ _null_ _null_ poly_same _null_ _null_ _null_ )); -DATA(insert OID = 340 ( poly_contain PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 16 "604 604" _null_ _null_ _null_ _null_ _null_ poly_contain _null_ _null_ _null_ )); -DATA(insert OID = 341 ( poly_left PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 16 "604 604" _null_ _null_ _null_ _null_ _null_ poly_left _null_ _null_ _null_ )); -DATA(insert OID = 342 ( poly_overleft PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 16 "604 604" _null_ _null_ _null_ _null_ _null_ poly_overleft _null_ _null_ _null_ )); -DATA(insert OID = 343 ( poly_overright PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 16 "604 604" _null_ _null_ _null_ _null_ _null_ poly_overright _null_ _null_ _null_ )); -DATA(insert OID = 344 ( poly_right PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 16 "604 604" _null_ _null_ _null_ _null_ _null_ poly_right _null_ _null_ _null_ )); -DATA(insert OID = 345 ( poly_contained PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 16 "604 604" _null_ _null_ _null_ _null_ _null_ poly_contained _null_ _null_ _null_ )); -DATA(insert OID = 346 ( poly_overlap PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 16 "604 604" _null_ _null_ _null_ _null_ _null_ poly_overlap _null_ _null_ _null_ )); -DATA(insert OID = 347 ( poly_in PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 604 "2275" _null_ _null_ _null_ _null_ _null_ poly_in _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 348 ( poly_out PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 2275 "604" _null_ _null_ _null_ _null_ _null_ poly_out _null_ _null_ _null_ )); -DESCR("I/O"); - -DATA(insert OID = 350 ( btint2cmp PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 23 "21 21" _null_ _null_ _null_ _null_ _null_ btint2cmp _null_ _null_ _null_ )); -DESCR("less-equal-greater"); -DATA(insert OID = 3129 ( btint2sortsupport PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 2278 "2281" _null_ _null_ _null_ _null_ _null_ btint2sortsupport _null_ _null_ _null_ )); -DESCR("sort support"); -DATA(insert OID = 351 ( btint4cmp PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 23 "23 23" _null_ _null_ _null_ _null_ _null_ btint4cmp _null_ _null_ _null_ )); -DESCR("less-equal-greater"); -DATA(insert OID = 3130 ( btint4sortsupport PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 2278 "2281" _null_ _null_ _null_ _null_ _null_ btint4sortsupport _null_ _null_ _null_ )); -DESCR("sort support"); -DATA(insert OID = 842 ( btint8cmp PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 23 "20 20" _null_ _null_ _null_ _null_ _null_ btint8cmp _null_ _null_ _null_ )); -DESCR("less-equal-greater"); -DATA(insert OID = 3131 ( btint8sortsupport PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 2278 "2281" _null_ _null_ _null_ _null_ _null_ btint8sortsupport _null_ _null_ _null_ )); -DESCR("sort support"); -DATA(insert OID = 354 ( btfloat4cmp PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 23 "700 700" _null_ _null_ _null_ _null_ _null_ btfloat4cmp _null_ _null_ _null_ )); -DESCR("less-equal-greater"); -DATA(insert OID = 3132 ( btfloat4sortsupport PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 2278 "2281" _null_ _null_ _null_ _null_ _null_ btfloat4sortsupport _null_ _null_ _null_ )); -DESCR("sort support"); -DATA(insert OID = 355 ( btfloat8cmp PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 23 "701 701" _null_ _null_ _null_ _null_ _null_ btfloat8cmp _null_ _null_ _null_ )); -DESCR("less-equal-greater"); -DATA(insert OID = 3133 ( btfloat8sortsupport PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 2278 "2281" _null_ _null_ _null_ _null_ _null_ btfloat8sortsupport _null_ _null_ _null_ )); -DESCR("sort support"); -DATA(insert OID = 356 ( btoidcmp PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 23 "26 26" _null_ _null_ _null_ _null_ _null_ btoidcmp _null_ _null_ _null_ )); -DESCR("less-equal-greater"); -DATA(insert OID = 3134 ( btoidsortsupport PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 2278 "2281" _null_ _null_ _null_ _null_ _null_ btoidsortsupport _null_ _null_ _null_ )); -DESCR("sort support"); -DATA(insert OID = 404 ( btoidvectorcmp PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 23 "30 30" _null_ _null_ _null_ _null_ _null_ btoidvectorcmp _null_ _null_ _null_ )); -DESCR("less-equal-greater"); -DATA(insert OID = 357 ( btabstimecmp PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 23 "702 702" _null_ _null_ _null_ _null_ _null_ btabstimecmp _null_ _null_ _null_ )); -DESCR("less-equal-greater"); -DATA(insert OID = 358 ( btcharcmp PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 23 "18 18" _null_ _null_ _null_ _null_ _null_ btcharcmp _null_ _null_ _null_ )); -DESCR("less-equal-greater"); -DATA(insert OID = 359 ( btnamecmp PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 23 "19 19" _null_ _null_ _null_ _null_ _null_ btnamecmp _null_ _null_ _null_ )); -DESCR("less-equal-greater"); -DATA(insert OID = 3135 ( btnamesortsupport PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 2278 "2281" _null_ _null_ _null_ _null_ _null_ btnamesortsupport _null_ _null_ _null_ )); -DESCR("sort support"); -DATA(insert OID = 360 ( bttextcmp PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 23 "25 25" _null_ _null_ _null_ _null_ _null_ bttextcmp _null_ _null_ _null_ )); -DESCR("less-equal-greater"); -DATA(insert OID = 3255 ( bttextsortsupport PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 2278 "2281" _null_ _null_ _null_ _null_ _null_ bttextsortsupport _null_ _null_ _null_ )); -DESCR("sort support"); -DATA(insert OID = 377 ( cash_cmp PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 23 "790 790" _null_ _null_ _null_ _null_ _null_ cash_cmp _null_ _null_ _null_ )); -DESCR("less-equal-greater"); -DATA(insert OID = 380 ( btreltimecmp PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 23 "703 703" _null_ _null_ _null_ _null_ _null_ btreltimecmp _null_ _null_ _null_ )); -DESCR("less-equal-greater"); -DATA(insert OID = 381 ( bttintervalcmp PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 23 "704 704" _null_ _null_ _null_ _null_ _null_ bttintervalcmp _null_ _null_ _null_ )); -DESCR("less-equal-greater"); -DATA(insert OID = 382 ( btarraycmp PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 23 "2277 2277" _null_ _null_ _null_ _null_ _null_ btarraycmp _null_ _null_ _null_ )); -DESCR("less-equal-greater"); - -DATA(insert OID = 361 ( lseg_distance PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 701 "601 601" _null_ _null_ _null_ _null_ _null_ lseg_distance _null_ _null_ _null_ )); -DATA(insert OID = 362 ( lseg_interpt PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 600 "601 601" _null_ _null_ _null_ _null_ _null_ lseg_interpt _null_ _null_ _null_ )); -DATA(insert OID = 363 ( dist_ps PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 701 "600 601" _null_ _null_ _null_ _null_ _null_ dist_ps _null_ _null_ _null_ )); -DATA(insert OID = 364 ( dist_pb PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 701 "600 603" _null_ _null_ _null_ _null_ _null_ dist_pb _null_ _null_ _null_ )); -DATA(insert OID = 365 ( dist_sb PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 701 "601 603" _null_ _null_ _null_ _null_ _null_ dist_sb _null_ _null_ _null_ )); -DATA(insert OID = 366 ( close_ps PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 600 "600 601" _null_ _null_ _null_ _null_ _null_ close_ps _null_ _null_ _null_ )); -DATA(insert OID = 367 ( close_pb PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 600 "600 603" _null_ _null_ _null_ _null_ _null_ close_pb _null_ _null_ _null_ )); -DATA(insert OID = 368 ( close_sb PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 600 "601 603" _null_ _null_ _null_ _null_ _null_ close_sb _null_ _null_ _null_ )); -DATA(insert OID = 369 ( on_ps PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 16 "600 601" _null_ _null_ _null_ _null_ _null_ on_ps _null_ _null_ _null_ )); -DATA(insert OID = 370 ( path_distance PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 701 "602 602" _null_ _null_ _null_ _null_ _null_ path_distance _null_ _null_ _null_ )); -DATA(insert OID = 371 ( dist_ppath PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 701 "600 602" _null_ _null_ _null_ _null_ _null_ dist_ppath _null_ _null_ _null_ )); -DATA(insert OID = 372 ( on_sb PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 16 "601 603" _null_ _null_ _null_ _null_ _null_ on_sb _null_ _null_ _null_ )); -DATA(insert OID = 373 ( inter_sb PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 16 "601 603" _null_ _null_ _null_ _null_ _null_ inter_sb _null_ _null_ _null_ )); - -/* OIDS 400 - 499 */ - -DATA(insert OID = 401 ( text PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 25 "1042" _null_ _null_ _null_ _null_ _null_ rtrim1 _null_ _null_ _null_ )); -DESCR("convert char(n) to text"); -DATA(insert OID = 406 ( text PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 25 "19" _null_ _null_ _null_ _null_ _null_ name_text _null_ _null_ _null_ )); -DESCR("convert name to text"); -DATA(insert OID = 407 ( name PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 19 "25" _null_ _null_ _null_ _null_ _null_ text_name _null_ _null_ _null_ )); -DESCR("convert text to name"); -DATA(insert OID = 408 ( bpchar PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 1042 "19" _null_ _null_ _null_ _null_ _null_ name_bpchar _null_ _null_ _null_ )); -DESCR("convert name to char(n)"); -DATA(insert OID = 409 ( name PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 19 "1042" _null_ _null_ _null_ _null_ _null_ bpchar_name _null_ _null_ _null_ )); -DESCR("convert char(n) to name"); - -DATA(insert OID = 449 ( hashint2 PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 23 "21" _null_ _null_ _null_ _null_ _null_ hashint2 _null_ _null_ _null_ )); -DESCR("hash"); -DATA(insert OID = 450 ( hashint4 PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 23 "23" _null_ _null_ _null_ _null_ _null_ hashint4 _null_ _null_ _null_ )); -DESCR("hash"); -DATA(insert OID = 949 ( hashint8 PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 23 "20" _null_ _null_ _null_ _null_ _null_ hashint8 _null_ _null_ _null_ )); -DESCR("hash"); -DATA(insert OID = 451 ( hashfloat4 PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 23 "700" _null_ _null_ _null_ _null_ _null_ hashfloat4 _null_ _null_ _null_ )); -DESCR("hash"); -DATA(insert OID = 452 ( hashfloat8 PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 23 "701" _null_ _null_ _null_ _null_ _null_ hashfloat8 _null_ _null_ _null_ )); -DESCR("hash"); -DATA(insert OID = 453 ( hashoid PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 23 "26" _null_ _null_ _null_ _null_ _null_ hashoid _null_ _null_ _null_ )); -DESCR("hash"); -DATA(insert OID = 454 ( hashchar PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 23 "18" _null_ _null_ _null_ _null_ _null_ hashchar _null_ _null_ _null_ )); -DESCR("hash"); -DATA(insert OID = 455 ( hashname PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 23 "19" _null_ _null_ _null_ _null_ _null_ hashname _null_ _null_ _null_ )); -DESCR("hash"); -DATA(insert OID = 400 ( hashtext PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 23 "25" _null_ _null_ _null_ _null_ _null_ hashtext _null_ _null_ _null_ )); -DESCR("hash"); -DATA(insert OID = 456 ( hashvarlena PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 23 "2281" _null_ _null_ _null_ _null_ _null_ hashvarlena _null_ _null_ _null_ )); -DESCR("hash"); -DATA(insert OID = 457 ( hashoidvector PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 23 "30" _null_ _null_ _null_ _null_ _null_ hashoidvector _null_ _null_ _null_ )); -DESCR("hash"); -DATA(insert OID = 329 ( hash_aclitem PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 23 "1033" _null_ _null_ _null_ _null_ _null_ hash_aclitem _null_ _null_ _null_ )); -DESCR("hash"); -DATA(insert OID = 399 ( hashmacaddr PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 23 "829" _null_ _null_ _null_ _null_ _null_ hashmacaddr _null_ _null_ _null_ )); -DESCR("hash"); -DATA(insert OID = 422 ( hashinet PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 23 "869" _null_ _null_ _null_ _null_ _null_ hashinet _null_ _null_ _null_ )); -DESCR("hash"); -DATA(insert OID = 432 ( hash_numeric PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 23 "1700" _null_ _null_ _null_ _null_ _null_ hash_numeric _null_ _null_ _null_ )); -DESCR("hash"); -DATA(insert OID = 328 ( hashmacaddr8 PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 23 "774" _null_ _null_ _null_ _null_ _null_ hashmacaddr8 _null_ _null_ _null_ )); -DESCR("hash"); - -DATA(insert OID = 438 ( num_nulls PGNSP PGUID 12 1 0 2276 0 f f f f f f i s 1 0 23 "2276" "{2276}" "{v}" _null_ _null_ _null_ pg_num_nulls _null_ _null_ _null_ )); -DESCR("count the number of NULL arguments"); -DATA(insert OID = 440 ( num_nonnulls PGNSP PGUID 12 1 0 2276 0 f f f f f f i s 1 0 23 "2276" "{2276}" "{v}" _null_ _null_ _null_ pg_num_nonnulls _null_ _null_ _null_ )); -DESCR("count the number of non-NULL arguments"); - -DATA(insert OID = 458 ( text_larger PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 25 "25 25" _null_ _null_ _null_ _null_ _null_ text_larger _null_ _null_ _null_ )); -DESCR("larger of two"); -DATA(insert OID = 459 ( text_smaller PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 25 "25 25" _null_ _null_ _null_ _null_ _null_ text_smaller _null_ _null_ _null_ )); -DESCR("smaller of two"); - -DATA(insert OID = 460 ( int8in PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 20 "2275" _null_ _null_ _null_ _null_ _null_ int8in _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 461 ( int8out PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 2275 "20" _null_ _null_ _null_ _null_ _null_ int8out _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 462 ( int8um PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 20 "20" _null_ _null_ _null_ _null_ _null_ int8um _null_ _null_ _null_ )); -DATA(insert OID = 463 ( int8pl PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 20 "20 20" _null_ _null_ _null_ _null_ _null_ int8pl _null_ _null_ _null_ )); -DATA(insert OID = 464 ( int8mi PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 20 "20 20" _null_ _null_ _null_ _null_ _null_ int8mi _null_ _null_ _null_ )); -DATA(insert OID = 465 ( int8mul PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 20 "20 20" _null_ _null_ _null_ _null_ _null_ int8mul _null_ _null_ _null_ )); -DATA(insert OID = 466 ( int8div PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 20 "20 20" _null_ _null_ _null_ _null_ _null_ int8div _null_ _null_ _null_ )); -DATA(insert OID = 467 ( int8eq PGNSP PGUID 12 1 0 0 0 f f f t t f i s 2 0 16 "20 20" _null_ _null_ _null_ _null_ _null_ int8eq _null_ _null_ _null_ )); -DATA(insert OID = 468 ( int8ne PGNSP PGUID 12 1 0 0 0 f f f t t f i s 2 0 16 "20 20" _null_ _null_ _null_ _null_ _null_ int8ne _null_ _null_ _null_ )); -DATA(insert OID = 469 ( int8lt PGNSP PGUID 12 1 0 0 0 f f f t t f i s 2 0 16 "20 20" _null_ _null_ _null_ _null_ _null_ int8lt _null_ _null_ _null_ )); -DATA(insert OID = 470 ( int8gt PGNSP PGUID 12 1 0 0 0 f f f t t f i s 2 0 16 "20 20" _null_ _null_ _null_ _null_ _null_ int8gt _null_ _null_ _null_ )); -DATA(insert OID = 471 ( int8le PGNSP PGUID 12 1 0 0 0 f f f t t f i s 2 0 16 "20 20" _null_ _null_ _null_ _null_ _null_ int8le _null_ _null_ _null_ )); -DATA(insert OID = 472 ( int8ge PGNSP PGUID 12 1 0 0 0 f f f t t f i s 2 0 16 "20 20" _null_ _null_ _null_ _null_ _null_ int8ge _null_ _null_ _null_ )); - -DATA(insert OID = 474 ( int84eq PGNSP PGUID 12 1 0 0 0 f f f t t f i s 2 0 16 "20 23" _null_ _null_ _null_ _null_ _null_ int84eq _null_ _null_ _null_ )); -DATA(insert OID = 475 ( int84ne PGNSP PGUID 12 1 0 0 0 f f f t t f i s 2 0 16 "20 23" _null_ _null_ _null_ _null_ _null_ int84ne _null_ _null_ _null_ )); -DATA(insert OID = 476 ( int84lt PGNSP PGUID 12 1 0 0 0 f f f t t f i s 2 0 16 "20 23" _null_ _null_ _null_ _null_ _null_ int84lt _null_ _null_ _null_ )); -DATA(insert OID = 477 ( int84gt PGNSP PGUID 12 1 0 0 0 f f f t t f i s 2 0 16 "20 23" _null_ _null_ _null_ _null_ _null_ int84gt _null_ _null_ _null_ )); -DATA(insert OID = 478 ( int84le PGNSP PGUID 12 1 0 0 0 f f f t t f i s 2 0 16 "20 23" _null_ _null_ _null_ _null_ _null_ int84le _null_ _null_ _null_ )); -DATA(insert OID = 479 ( int84ge PGNSP PGUID 12 1 0 0 0 f f f t t f i s 2 0 16 "20 23" _null_ _null_ _null_ _null_ _null_ int84ge _null_ _null_ _null_ )); - -DATA(insert OID = 480 ( int4 PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 23 "20" _null_ _null_ _null_ _null_ _null_ int84 _null_ _null_ _null_ )); -DESCR("convert int8 to int4"); -DATA(insert OID = 481 ( int8 PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 20 "23" _null_ _null_ _null_ _null_ _null_ int48 _null_ _null_ _null_ )); -DESCR("convert int4 to int8"); -DATA(insert OID = 482 ( float8 PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 701 "20" _null_ _null_ _null_ _null_ _null_ i8tod _null_ _null_ _null_ )); -DESCR("convert int8 to float8"); -DATA(insert OID = 483 ( int8 PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 20 "701" _null_ _null_ _null_ _null_ _null_ dtoi8 _null_ _null_ _null_ )); -DESCR("convert float8 to int8"); - -/* OIDS 500 - 599 */ - -/* OIDS 600 - 699 */ - -DATA(insert OID = 626 ( hash_array PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 23 "2277" _null_ _null_ _null_ _null_ _null_ hash_array _null_ _null_ _null_ )); -DESCR("hash"); - -DATA(insert OID = 652 ( float4 PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 700 "20" _null_ _null_ _null_ _null_ _null_ i8tof _null_ _null_ _null_ )); -DESCR("convert int8 to float4"); -DATA(insert OID = 653 ( int8 PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 20 "700" _null_ _null_ _null_ _null_ _null_ ftoi8 _null_ _null_ _null_ )); -DESCR("convert float4 to int8"); - -DATA(insert OID = 714 ( int2 PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 21 "20" _null_ _null_ _null_ _null_ _null_ int82 _null_ _null_ _null_ )); -DESCR("convert int8 to int2"); -DATA(insert OID = 754 ( int8 PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 20 "21" _null_ _null_ _null_ _null_ _null_ int28 _null_ _null_ _null_ )); -DESCR("convert int2 to int8"); - -DATA(insert OID = 655 ( namelt PGNSP PGUID 12 1 0 0 0 f f f t t f i s 2 0 16 "19 19" _null_ _null_ _null_ _null_ _null_ namelt _null_ _null_ _null_ )); -DATA(insert OID = 656 ( namele PGNSP PGUID 12 1 0 0 0 f f f t t f i s 2 0 16 "19 19" _null_ _null_ _null_ _null_ _null_ namele _null_ _null_ _null_ )); -DATA(insert OID = 657 ( namegt PGNSP PGUID 12 1 0 0 0 f f f t t f i s 2 0 16 "19 19" _null_ _null_ _null_ _null_ _null_ namegt _null_ _null_ _null_ )); -DATA(insert OID = 658 ( namege PGNSP PGUID 12 1 0 0 0 f f f t t f i s 2 0 16 "19 19" _null_ _null_ _null_ _null_ _null_ namege _null_ _null_ _null_ )); -DATA(insert OID = 659 ( namene PGNSP PGUID 12 1 0 0 0 f f f t t f i s 2 0 16 "19 19" _null_ _null_ _null_ _null_ _null_ namene _null_ _null_ _null_ )); - -DATA(insert OID = 668 ( bpchar PGNSP PGUID 12 1 0 0 0 f f f f t f i s 3 0 1042 "1042 23 16" _null_ _null_ _null_ _null_ _null_ bpchar _null_ _null_ _null_ )); -DESCR("adjust char() to typmod length"); -DATA(insert OID = 3097 ( varchar_transform PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 2281 "2281" _null_ _null_ _null_ _null_ _null_ varchar_transform _null_ _null_ _null_ )); -DESCR("transform a varchar length coercion"); -DATA(insert OID = 669 ( varchar PGNSP PGUID 12 1 0 0 varchar_transform f f f f t f i s 3 0 1043 "1043 23 16" _null_ _null_ _null_ _null_ _null_ varchar _null_ _null_ _null_ )); -DESCR("adjust varchar() to typmod length"); - -DATA(insert OID = 676 ( mktinterval PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 704 "702 702" _null_ _null_ _null_ _null_ _null_ mktinterval _null_ _null_ _null_ )); - -DATA(insert OID = 619 ( oidvectorne PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 16 "30 30" _null_ _null_ _null_ _null_ _null_ oidvectorne _null_ _null_ _null_ )); -DATA(insert OID = 677 ( oidvectorlt PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 16 "30 30" _null_ _null_ _null_ _null_ _null_ oidvectorlt _null_ _null_ _null_ )); -DATA(insert OID = 678 ( oidvectorle PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 16 "30 30" _null_ _null_ _null_ _null_ _null_ oidvectorle _null_ _null_ _null_ )); -DATA(insert OID = 679 ( oidvectoreq PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 16 "30 30" _null_ _null_ _null_ _null_ _null_ oidvectoreq _null_ _null_ _null_ )); -DATA(insert OID = 680 ( oidvectorge PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 16 "30 30" _null_ _null_ _null_ _null_ _null_ oidvectorge _null_ _null_ _null_ )); -DATA(insert OID = 681 ( oidvectorgt PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 16 "30 30" _null_ _null_ _null_ _null_ _null_ oidvectorgt _null_ _null_ _null_ )); - -/* OIDS 700 - 799 */ -DATA(insert OID = 710 ( getpgusername PGNSP PGUID 12 1 0 0 0 f f f f t f s s 0 0 19 "" _null_ _null_ _null_ _null_ _null_ current_user _null_ _null_ _null_ )); -DESCR("deprecated, use current_user instead"); -DATA(insert OID = 716 ( oidlt PGNSP PGUID 12 1 0 0 0 f f f t t f i s 2 0 16 "26 26" _null_ _null_ _null_ _null_ _null_ oidlt _null_ _null_ _null_ )); -DATA(insert OID = 717 ( oidle PGNSP PGUID 12 1 0 0 0 f f f t t f i s 2 0 16 "26 26" _null_ _null_ _null_ _null_ _null_ oidle _null_ _null_ _null_ )); - -DATA(insert OID = 720 ( octet_length PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 23 "17" _null_ _null_ _null_ _null_ _null_ byteaoctetlen _null_ _null_ _null_ )); -DESCR("octet length"); -DATA(insert OID = 721 ( get_byte PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 23 "17 23" _null_ _null_ _null_ _null_ _null_ byteaGetByte _null_ _null_ _null_ )); -DESCR("get byte"); -DATA(insert OID = 722 ( set_byte PGNSP PGUID 12 1 0 0 0 f f f f t f i s 3 0 17 "17 23 23" _null_ _null_ _null_ _null_ _null_ byteaSetByte _null_ _null_ _null_ )); -DESCR("set byte"); -DATA(insert OID = 723 ( get_bit PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 23 "17 23" _null_ _null_ _null_ _null_ _null_ byteaGetBit _null_ _null_ _null_ )); -DESCR("get bit"); -DATA(insert OID = 724 ( set_bit PGNSP PGUID 12 1 0 0 0 f f f f t f i s 3 0 17 "17 23 23" _null_ _null_ _null_ _null_ _null_ byteaSetBit _null_ _null_ _null_ )); -DESCR("set bit"); -DATA(insert OID = 749 ( overlay PGNSP PGUID 12 1 0 0 0 f f f f t f i s 4 0 17 "17 17 23 23" _null_ _null_ _null_ _null_ _null_ byteaoverlay _null_ _null_ _null_ )); -DESCR("substitute portion of string"); -DATA(insert OID = 752 ( overlay PGNSP PGUID 12 1 0 0 0 f f f f t f i s 3 0 17 "17 17 23" _null_ _null_ _null_ _null_ _null_ byteaoverlay_no_len _null_ _null_ _null_ )); -DESCR("substitute portion of string"); - -DATA(insert OID = 725 ( dist_pl PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 701 "600 628" _null_ _null_ _null_ _null_ _null_ dist_pl _null_ _null_ _null_ )); -DATA(insert OID = 726 ( dist_lb PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 701 "628 603" _null_ _null_ _null_ _null_ _null_ dist_lb _null_ _null_ _null_ )); -DATA(insert OID = 727 ( dist_sl PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 701 "601 628" _null_ _null_ _null_ _null_ _null_ dist_sl _null_ _null_ _null_ )); -DATA(insert OID = 728 ( dist_cpoly PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 701 "718 604" _null_ _null_ _null_ _null_ _null_ dist_cpoly _null_ _null_ _null_ )); -DATA(insert OID = 729 ( poly_distance PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 701 "604 604" _null_ _null_ _null_ _null_ _null_ poly_distance _null_ _null_ _null_ )); -DATA(insert OID = 3275 ( dist_ppoly PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 701 "600 604" _null_ _null_ _null_ _null_ _null_ dist_ppoly _null_ _null_ _null_ )); -DATA(insert OID = 3292 ( dist_polyp PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 701 "604 600" _null_ _null_ _null_ _null_ _null_ dist_polyp _null_ _null_ _null_ )); -DATA(insert OID = 3290 ( dist_cpoint PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 701 "718 600" _null_ _null_ _null_ _null_ _null_ dist_cpoint _null_ _null_ _null_ )); - -DATA(insert OID = 740 ( text_lt PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 16 "25 25" _null_ _null_ _null_ _null_ _null_ text_lt _null_ _null_ _null_ )); -DATA(insert OID = 741 ( text_le PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 16 "25 25" _null_ _null_ _null_ _null_ _null_ text_le _null_ _null_ _null_ )); -DATA(insert OID = 742 ( text_gt PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 16 "25 25" _null_ _null_ _null_ _null_ _null_ text_gt _null_ _null_ _null_ )); -DATA(insert OID = 743 ( text_ge PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 16 "25 25" _null_ _null_ _null_ _null_ _null_ text_ge _null_ _null_ _null_ )); - -DATA(insert OID = 745 ( current_user PGNSP PGUID 12 1 0 0 0 f f f f t f s s 0 0 19 "" _null_ _null_ _null_ _null_ _null_ current_user _null_ _null_ _null_ )); -DESCR("current user name"); -DATA(insert OID = 746 ( session_user PGNSP PGUID 12 1 0 0 0 f f f f t f s s 0 0 19 "" _null_ _null_ _null_ _null_ _null_ session_user _null_ _null_ _null_ )); -DESCR("session user name"); - -DATA(insert OID = 744 ( array_eq PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 16 "2277 2277" _null_ _null_ _null_ _null_ _null_ array_eq _null_ _null_ _null_ )); -DATA(insert OID = 390 ( array_ne PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 16 "2277 2277" _null_ _null_ _null_ _null_ _null_ array_ne _null_ _null_ _null_ )); -DATA(insert OID = 391 ( array_lt PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 16 "2277 2277" _null_ _null_ _null_ _null_ _null_ array_lt _null_ _null_ _null_ )); -DATA(insert OID = 392 ( array_gt PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 16 "2277 2277" _null_ _null_ _null_ _null_ _null_ array_gt _null_ _null_ _null_ )); -DATA(insert OID = 393 ( array_le PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 16 "2277 2277" _null_ _null_ _null_ _null_ _null_ array_le _null_ _null_ _null_ )); -DATA(insert OID = 396 ( array_ge PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 16 "2277 2277" _null_ _null_ _null_ _null_ _null_ array_ge _null_ _null_ _null_ )); -DATA(insert OID = 747 ( array_dims PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 25 "2277" _null_ _null_ _null_ _null_ _null_ array_dims _null_ _null_ _null_ )); -DESCR("array dimensions"); -DATA(insert OID = 748 ( array_ndims PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 23 "2277" _null_ _null_ _null_ _null_ _null_ array_ndims _null_ _null_ _null_ )); -DESCR("number of array dimensions"); -DATA(insert OID = 750 ( array_in PGNSP PGUID 12 1 0 0 0 f f f f t f s s 3 0 2277 "2275 26 23" _null_ _null_ _null_ _null_ _null_ array_in _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 751 ( array_out PGNSP PGUID 12 1 0 0 0 f f f f t f s s 1 0 2275 "2277" _null_ _null_ _null_ _null_ _null_ array_out _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 2091 ( array_lower PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 23 "2277 23" _null_ _null_ _null_ _null_ _null_ array_lower _null_ _null_ _null_ )); -DESCR("array lower dimension"); -DATA(insert OID = 2092 ( array_upper PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 23 "2277 23" _null_ _null_ _null_ _null_ _null_ array_upper _null_ _null_ _null_ )); -DESCR("array upper dimension"); -DATA(insert OID = 2176 ( array_length PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 23 "2277 23" _null_ _null_ _null_ _null_ _null_ array_length _null_ _null_ _null_ )); -DESCR("array length"); -DATA(insert OID = 3179 ( cardinality PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 23 "2277" _null_ _null_ _null_ _null_ _null_ array_cardinality _null_ _null_ _null_ )); -DESCR("array cardinality"); -DATA(insert OID = 378 ( array_append PGNSP PGUID 12 1 0 0 0 f f f f f f i s 2 0 2277 "2277 2283" _null_ _null_ _null_ _null_ _null_ array_append _null_ _null_ _null_ )); -DESCR("append element onto end of array"); -DATA(insert OID = 379 ( array_prepend PGNSP PGUID 12 1 0 0 0 f f f f f f i s 2 0 2277 "2283 2277" _null_ _null_ _null_ _null_ _null_ array_prepend _null_ _null_ _null_ )); -DESCR("prepend element onto front of array"); -DATA(insert OID = 383 ( array_cat PGNSP PGUID 12 1 0 0 0 f f f f f f i s 2 0 2277 "2277 2277" _null_ _null_ _null_ _null_ _null_ array_cat _null_ _null_ _null_ )); -DATA(insert OID = 394 ( string_to_array PGNSP PGUID 12 1 0 0 0 f f f f f f i s 2 0 1009 "25 25" _null_ _null_ _null_ _null_ _null_ text_to_array _null_ _null_ _null_ )); -DESCR("split delimited text into text[]"); -DATA(insert OID = 395 ( array_to_string PGNSP PGUID 12 1 0 0 0 f f f f t f s s 2 0 25 "2277 25" _null_ _null_ _null_ _null_ _null_ array_to_text _null_ _null_ _null_ )); -DESCR("concatenate array elements, using delimiter, into text"); -DATA(insert OID = 376 ( string_to_array PGNSP PGUID 12 1 0 0 0 f f f f f f i s 3 0 1009 "25 25 25" _null_ _null_ _null_ _null_ _null_ text_to_array_null _null_ _null_ _null_ )); -DESCR("split delimited text into text[], with null string"); -DATA(insert OID = 384 ( array_to_string PGNSP PGUID 12 1 0 0 0 f f f f f f s s 3 0 25 "2277 25 25" _null_ _null_ _null_ _null_ _null_ array_to_text_null _null_ _null_ _null_ )); -DESCR("concatenate array elements, using delimiter and null string, into text"); -DATA(insert OID = 515 ( array_larger PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 2277 "2277 2277" _null_ _null_ _null_ _null_ _null_ array_larger _null_ _null_ _null_ )); -DESCR("larger of two"); -DATA(insert OID = 516 ( array_smaller PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 2277 "2277 2277" _null_ _null_ _null_ _null_ _null_ array_smaller _null_ _null_ _null_ )); -DESCR("smaller of two"); -DATA(insert OID = 3277 ( array_position PGNSP PGUID 12 1 0 0 0 f f f f f f i s 2 0 23 "2277 2283" _null_ _null_ _null_ _null_ _null_ array_position _null_ _null_ _null_ )); -DESCR("returns an offset of value in array"); -DATA(insert OID = 3278 ( array_position PGNSP PGUID 12 1 0 0 0 f f f f f f i s 3 0 23 "2277 2283 23" _null_ _null_ _null_ _null_ _null_ array_position_start _null_ _null_ _null_ )); -DESCR("returns an offset of value in array with start index"); -DATA(insert OID = 3279 ( array_positions PGNSP PGUID 12 1 0 0 0 f f f f f f i s 2 0 1007 "2277 2283" _null_ _null_ _null_ _null_ _null_ array_positions _null_ _null_ _null_ )); -DESCR("returns an array of offsets of some value in array"); -DATA(insert OID = 1191 ( generate_subscripts PGNSP PGUID 12 1 1000 0 0 f f f f t t i s 3 0 23 "2277 23 16" _null_ _null_ _null_ _null_ _null_ generate_subscripts _null_ _null_ _null_ )); -DESCR("array subscripts generator"); -DATA(insert OID = 1192 ( generate_subscripts PGNSP PGUID 12 1 1000 0 0 f f f f t t i s 2 0 23 "2277 23" _null_ _null_ _null_ _null_ _null_ generate_subscripts_nodir _null_ _null_ _null_ )); -DESCR("array subscripts generator"); -DATA(insert OID = 1193 ( array_fill PGNSP PGUID 12 1 0 0 0 f f f f f f i s 2 0 2277 "2283 1007" _null_ _null_ _null_ _null_ _null_ array_fill _null_ _null_ _null_ )); -DESCR("array constructor with value"); -DATA(insert OID = 1286 ( array_fill PGNSP PGUID 12 1 0 0 0 f f f f f f i s 3 0 2277 "2283 1007 1007" _null_ _null_ _null_ _null_ _null_ array_fill_with_lower_bounds _null_ _null_ _null_ )); -DESCR("array constructor with value"); -DATA(insert OID = 2331 ( unnest PGNSP PGUID 12 1 100 0 0 f f f f t t i s 1 0 2283 "2277" _null_ _null_ _null_ _null_ _null_ array_unnest _null_ _null_ _null_ )); -DESCR("expand array to set of rows"); -DATA(insert OID = 3167 ( array_remove PGNSP PGUID 12 1 0 0 0 f f f f f f i s 2 0 2277 "2277 2283" _null_ _null_ _null_ _null_ _null_ array_remove _null_ _null_ _null_ )); -DESCR("remove any occurrences of an element from an array"); -DATA(insert OID = 3168 ( array_replace PGNSP PGUID 12 1 0 0 0 f f f f f f i s 3 0 2277 "2277 2283 2283" _null_ _null_ _null_ _null_ _null_ array_replace _null_ _null_ _null_ )); -DESCR("replace any occurrences of an element in an array"); -DATA(insert OID = 2333 ( array_agg_transfn PGNSP PGUID 12 1 0 0 0 f f f f f f i s 2 0 2281 "2281 2776" _null_ _null_ _null_ _null_ _null_ array_agg_transfn _null_ _null_ _null_ )); -DESCR("aggregate transition function"); -DATA(insert OID = 2334 ( array_agg_finalfn PGNSP PGUID 12 1 0 0 0 f f f f f f i s 2 0 2277 "2281 2776" _null_ _null_ _null_ _null_ _null_ array_agg_finalfn _null_ _null_ _null_ )); -DESCR("aggregate final function"); -DATA(insert OID = 2335 ( array_agg PGNSP PGUID 12 1 0 0 0 t f f f f f i s 1 0 2277 "2776" _null_ _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ )); -DESCR("concatenate aggregate input into an array"); -DATA(insert OID = 4051 ( array_agg_array_transfn PGNSP PGUID 12 1 0 0 0 f f f f f f i s 2 0 2281 "2281 2277" _null_ _null_ _null_ _null_ _null_ array_agg_array_transfn _null_ _null_ _null_ )); -DESCR("aggregate transition function"); -DATA(insert OID = 4052 ( array_agg_array_finalfn PGNSP PGUID 12 1 0 0 0 f f f f f f i s 2 0 2277 "2281 2277" _null_ _null_ _null_ _null_ _null_ array_agg_array_finalfn _null_ _null_ _null_ )); -DESCR("aggregate final function"); -DATA(insert OID = 4053 ( array_agg PGNSP PGUID 12 1 0 0 0 t f f f f f i s 1 0 2277 "2277" _null_ _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ )); -DESCR("concatenate aggregate input into an array"); -DATA(insert OID = 3218 ( width_bucket PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 23 "2283 2277" _null_ _null_ _null_ _null_ _null_ width_bucket_array _null_ _null_ _null_ )); -DESCR("bucket number of operand given a sorted array of bucket lower bounds"); -DATA(insert OID = 3816 ( array_typanalyze PGNSP PGUID 12 1 0 0 0 f f f f t f s s 1 0 16 "2281" _null_ _null_ _null_ _null_ _null_ array_typanalyze _null_ _null_ _null_ )); -DESCR("array typanalyze"); -DATA(insert OID = 3817 ( arraycontsel PGNSP PGUID 12 1 0 0 0 f f f f t f s s 4 0 701 "2281 26 2281 23" _null_ _null_ _null_ _null_ _null_ arraycontsel _null_ _null_ _null_ )); -DESCR("restriction selectivity for array-containment operators"); -DATA(insert OID = 3818 ( arraycontjoinsel PGNSP PGUID 12 1 0 0 0 f f f f t f s s 5 0 701 "2281 26 2281 21 2281" _null_ _null_ _null_ _null_ _null_ arraycontjoinsel _null_ _null_ _null_ )); -DESCR("join selectivity for array-containment operators"); - -DATA(insert OID = 760 ( smgrin PGNSP PGUID 12 1 0 0 0 f f f f t f s s 1 0 210 "2275" _null_ _null_ _null_ _null_ _null_ smgrin _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 761 ( smgrout PGNSP PGUID 12 1 0 0 0 f f f f t f s s 1 0 2275 "210" _null_ _null_ _null_ _null_ _null_ smgrout _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 762 ( smgreq PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 16 "210 210" _null_ _null_ _null_ _null_ _null_ smgreq _null_ _null_ _null_ )); -DESCR("storage manager"); -DATA(insert OID = 763 ( smgrne PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 16 "210 210" _null_ _null_ _null_ _null_ _null_ smgrne _null_ _null_ _null_ )); -DESCR("storage manager"); - -DATA(insert OID = 764 ( lo_import PGNSP PGUID 12 1 0 0 0 f f f f t f v u 1 0 26 "25" _null_ _null_ _null_ _null_ _null_ be_lo_import _null_ _null_ _null_ )); -DESCR("large object import"); -DATA(insert OID = 767 ( lo_import PGNSP PGUID 12 1 0 0 0 f f f f t f v u 2 0 26 "25 26" _null_ _null_ _null_ _null_ _null_ be_lo_import_with_oid _null_ _null_ _null_ )); -DESCR("large object import"); -DATA(insert OID = 765 ( lo_export PGNSP PGUID 12 1 0 0 0 f f f f t f v u 2 0 23 "26 25" _null_ _null_ _null_ _null_ _null_ be_lo_export _null_ _null_ _null_ )); -DESCR("large object export"); - -DATA(insert OID = 766 ( int4inc PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 23 "23" _null_ _null_ _null_ _null_ _null_ int4inc _null_ _null_ _null_ )); -DESCR("increment"); -DATA(insert OID = 768 ( int4larger PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 23 "23 23" _null_ _null_ _null_ _null_ _null_ int4larger _null_ _null_ _null_ )); -DESCR("larger of two"); -DATA(insert OID = 769 ( int4smaller PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 23 "23 23" _null_ _null_ _null_ _null_ _null_ int4smaller _null_ _null_ _null_ )); -DESCR("smaller of two"); -DATA(insert OID = 770 ( int2larger PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 21 "21 21" _null_ _null_ _null_ _null_ _null_ int2larger _null_ _null_ _null_ )); -DESCR("larger of two"); -DATA(insert OID = 771 ( int2smaller PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 21 "21 21" _null_ _null_ _null_ _null_ _null_ int2smaller _null_ _null_ _null_ )); -DESCR("smaller of two"); - -DATA(insert OID = 784 ( tintervaleq PGNSP PGUID 12 1 0 0 0 f f f t t f i s 2 0 16 "704 704" _null_ _null_ _null_ _null_ _null_ tintervaleq _null_ _null_ _null_ )); -DATA(insert OID = 785 ( tintervalne PGNSP PGUID 12 1 0 0 0 f f f t t f i s 2 0 16 "704 704" _null_ _null_ _null_ _null_ _null_ tintervalne _null_ _null_ _null_ )); -DATA(insert OID = 786 ( tintervallt PGNSP PGUID 12 1 0 0 0 f f f t t f i s 2 0 16 "704 704" _null_ _null_ _null_ _null_ _null_ tintervallt _null_ _null_ _null_ )); -DATA(insert OID = 787 ( tintervalgt PGNSP PGUID 12 1 0 0 0 f f f t t f i s 2 0 16 "704 704" _null_ _null_ _null_ _null_ _null_ tintervalgt _null_ _null_ _null_ )); -DATA(insert OID = 788 ( tintervalle PGNSP PGUID 12 1 0 0 0 f f f t t f i s 2 0 16 "704 704" _null_ _null_ _null_ _null_ _null_ tintervalle _null_ _null_ _null_ )); -DATA(insert OID = 789 ( tintervalge PGNSP PGUID 12 1 0 0 0 f f f t t f i s 2 0 16 "704 704" _null_ _null_ _null_ _null_ _null_ tintervalge _null_ _null_ _null_ )); - -/* OIDS 800 - 899 */ - -DATA(insert OID = 846 ( cash_mul_flt4 PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 790 "790 700" _null_ _null_ _null_ _null_ _null_ cash_mul_flt4 _null_ _null_ _null_ )); -DATA(insert OID = 847 ( cash_div_flt4 PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 790 "790 700" _null_ _null_ _null_ _null_ _null_ cash_div_flt4 _null_ _null_ _null_ )); -DATA(insert OID = 848 ( flt4_mul_cash PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 790 "700 790" _null_ _null_ _null_ _null_ _null_ flt4_mul_cash _null_ _null_ _null_ )); - -DATA(insert OID = 849 ( position PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 23 "25 25" _null_ _null_ _null_ _null_ _null_ textpos _null_ _null_ _null_ )); -DESCR("position of substring"); -DATA(insert OID = 850 ( textlike PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 16 "25 25" _null_ _null_ _null_ _null_ _null_ textlike _null_ _null_ _null_ )); -DATA(insert OID = 851 ( textnlike PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 16 "25 25" _null_ _null_ _null_ _null_ _null_ textnlike _null_ _null_ _null_ )); - -DATA(insert OID = 852 ( int48eq PGNSP PGUID 12 1 0 0 0 f f f t t f i s 2 0 16 "23 20" _null_ _null_ _null_ _null_ _null_ int48eq _null_ _null_ _null_ )); -DATA(insert OID = 853 ( int48ne PGNSP PGUID 12 1 0 0 0 f f f t t f i s 2 0 16 "23 20" _null_ _null_ _null_ _null_ _null_ int48ne _null_ _null_ _null_ )); -DATA(insert OID = 854 ( int48lt PGNSP PGUID 12 1 0 0 0 f f f t t f i s 2 0 16 "23 20" _null_ _null_ _null_ _null_ _null_ int48lt _null_ _null_ _null_ )); -DATA(insert OID = 855 ( int48gt PGNSP PGUID 12 1 0 0 0 f f f t t f i s 2 0 16 "23 20" _null_ _null_ _null_ _null_ _null_ int48gt _null_ _null_ _null_ )); -DATA(insert OID = 856 ( int48le PGNSP PGUID 12 1 0 0 0 f f f t t f i s 2 0 16 "23 20" _null_ _null_ _null_ _null_ _null_ int48le _null_ _null_ _null_ )); -DATA(insert OID = 857 ( int48ge PGNSP PGUID 12 1 0 0 0 f f f t t f i s 2 0 16 "23 20" _null_ _null_ _null_ _null_ _null_ int48ge _null_ _null_ _null_ )); - -DATA(insert OID = 858 ( namelike PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 16 "19 25" _null_ _null_ _null_ _null_ _null_ namelike _null_ _null_ _null_ )); -DATA(insert OID = 859 ( namenlike PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 16 "19 25" _null_ _null_ _null_ _null_ _null_ namenlike _null_ _null_ _null_ )); - -DATA(insert OID = 860 ( bpchar PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 1042 "18" _null_ _null_ _null_ _null_ _null_ char_bpchar _null_ _null_ _null_ )); -DESCR("convert char to char(n)"); - -DATA(insert OID = 861 ( current_database PGNSP PGUID 12 1 0 0 0 f f f f t f s s 0 0 19 "" _null_ _null_ _null_ _null_ _null_ current_database _null_ _null_ _null_ )); -DESCR("name of the current database"); -DATA(insert OID = 817 ( current_query PGNSP PGUID 12 1 0 0 0 f f f f f f v r 0 0 25 "" _null_ _null_ _null_ _null_ _null_ current_query _null_ _null_ _null_ )); -DESCR("get the currently executing query"); - -DATA(insert OID = 3399 ( int8_mul_cash PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 790 "20 790" _null_ _null_ _null_ _null_ _null_ int8_mul_cash _null_ _null_ _null_ )); -DATA(insert OID = 862 ( int4_mul_cash PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 790 "23 790" _null_ _null_ _null_ _null_ _null_ int4_mul_cash _null_ _null_ _null_ )); -DATA(insert OID = 863 ( int2_mul_cash PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 790 "21 790" _null_ _null_ _null_ _null_ _null_ int2_mul_cash _null_ _null_ _null_ )); -DATA(insert OID = 3344 ( cash_mul_int8 PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 790 "790 20" _null_ _null_ _null_ _null_ _null_ cash_mul_int8 _null_ _null_ _null_ )); -DATA(insert OID = 3345 ( cash_div_int8 PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 790 "790 20" _null_ _null_ _null_ _null_ _null_ cash_div_int8 _null_ _null_ _null_ )); -DATA(insert OID = 864 ( cash_mul_int4 PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 790 "790 23" _null_ _null_ _null_ _null_ _null_ cash_mul_int4 _null_ _null_ _null_ )); -DATA(insert OID = 865 ( cash_div_int4 PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 790 "790 23" _null_ _null_ _null_ _null_ _null_ cash_div_int4 _null_ _null_ _null_ )); -DATA(insert OID = 866 ( cash_mul_int2 PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 790 "790 21" _null_ _null_ _null_ _null_ _null_ cash_mul_int2 _null_ _null_ _null_ )); -DATA(insert OID = 867 ( cash_div_int2 PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 790 "790 21" _null_ _null_ _null_ _null_ _null_ cash_div_int2 _null_ _null_ _null_ )); - -DATA(insert OID = 886 ( cash_in PGNSP PGUID 12 1 0 0 0 f f f f t f s s 1 0 790 "2275" _null_ _null_ _null_ _null_ _null_ cash_in _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 887 ( cash_out PGNSP PGUID 12 1 0 0 0 f f f f t f s s 1 0 2275 "790" _null_ _null_ _null_ _null_ _null_ cash_out _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 888 ( cash_eq PGNSP PGUID 12 1 0 0 0 f f f t t f i s 2 0 16 "790 790" _null_ _null_ _null_ _null_ _null_ cash_eq _null_ _null_ _null_ )); -DATA(insert OID = 889 ( cash_ne PGNSP PGUID 12 1 0 0 0 f f f t t f i s 2 0 16 "790 790" _null_ _null_ _null_ _null_ _null_ cash_ne _null_ _null_ _null_ )); -DATA(insert OID = 890 ( cash_lt PGNSP PGUID 12 1 0 0 0 f f f t t f i s 2 0 16 "790 790" _null_ _null_ _null_ _null_ _null_ cash_lt _null_ _null_ _null_ )); -DATA(insert OID = 891 ( cash_le PGNSP PGUID 12 1 0 0 0 f f f t t f i s 2 0 16 "790 790" _null_ _null_ _null_ _null_ _null_ cash_le _null_ _null_ _null_ )); -DATA(insert OID = 892 ( cash_gt PGNSP PGUID 12 1 0 0 0 f f f t t f i s 2 0 16 "790 790" _null_ _null_ _null_ _null_ _null_ cash_gt _null_ _null_ _null_ )); -DATA(insert OID = 893 ( cash_ge PGNSP PGUID 12 1 0 0 0 f f f t t f i s 2 0 16 "790 790" _null_ _null_ _null_ _null_ _null_ cash_ge _null_ _null_ _null_ )); -DATA(insert OID = 894 ( cash_pl PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 790 "790 790" _null_ _null_ _null_ _null_ _null_ cash_pl _null_ _null_ _null_ )); -DATA(insert OID = 895 ( cash_mi PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 790 "790 790" _null_ _null_ _null_ _null_ _null_ cash_mi _null_ _null_ _null_ )); -DATA(insert OID = 896 ( cash_mul_flt8 PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 790 "790 701" _null_ _null_ _null_ _null_ _null_ cash_mul_flt8 _null_ _null_ _null_ )); -DATA(insert OID = 897 ( cash_div_flt8 PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 790 "790 701" _null_ _null_ _null_ _null_ _null_ cash_div_flt8 _null_ _null_ _null_ )); -DATA(insert OID = 898 ( cashlarger PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 790 "790 790" _null_ _null_ _null_ _null_ _null_ cashlarger _null_ _null_ _null_ )); -DESCR("larger of two"); -DATA(insert OID = 899 ( cashsmaller PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 790 "790 790" _null_ _null_ _null_ _null_ _null_ cashsmaller _null_ _null_ _null_ )); -DESCR("smaller of two"); -DATA(insert OID = 919 ( flt8_mul_cash PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 790 "701 790" _null_ _null_ _null_ _null_ _null_ flt8_mul_cash _null_ _null_ _null_ )); -DATA(insert OID = 935 ( cash_words PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 25 "790" _null_ _null_ _null_ _null_ _null_ cash_words _null_ _null_ _null_ )); -DESCR("output money amount as words"); -DATA(insert OID = 3822 ( cash_div_cash PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 701 "790 790" _null_ _null_ _null_ _null_ _null_ cash_div_cash _null_ _null_ _null_ )); -DATA(insert OID = 3823 ( numeric PGNSP PGUID 12 1 0 0 0 f f f f t f s s 1 0 1700 "790" _null_ _null_ _null_ _null_ _null_ cash_numeric _null_ _null_ _null_ )); -DESCR("convert money to numeric"); -DATA(insert OID = 3824 ( money PGNSP PGUID 12 1 0 0 0 f f f f t f s s 1 0 790 "1700" _null_ _null_ _null_ _null_ _null_ numeric_cash _null_ _null_ _null_ )); -DESCR("convert numeric to money"); -DATA(insert OID = 3811 ( money PGNSP PGUID 12 1 0 0 0 f f f f t f s s 1 0 790 "23" _null_ _null_ _null_ _null_ _null_ int4_cash _null_ _null_ _null_ )); -DESCR("convert int4 to money"); -DATA(insert OID = 3812 ( money PGNSP PGUID 12 1 0 0 0 f f f f t f s s 1 0 790 "20" _null_ _null_ _null_ _null_ _null_ int8_cash _null_ _null_ _null_ )); -DESCR("convert int8 to money"); - -/* OIDS 900 - 999 */ - -DATA(insert OID = 940 ( mod PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 21 "21 21" _null_ _null_ _null_ _null_ _null_ int2mod _null_ _null_ _null_ )); -DESCR("modulus"); -DATA(insert OID = 941 ( mod PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 23 "23 23" _null_ _null_ _null_ _null_ _null_ int4mod _null_ _null_ _null_ )); -DESCR("modulus"); - -DATA(insert OID = 945 ( int8mod PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 20 "20 20" _null_ _null_ _null_ _null_ _null_ int8mod _null_ _null_ _null_ )); -DATA(insert OID = 947 ( mod PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 20 "20 20" _null_ _null_ _null_ _null_ _null_ int8mod _null_ _null_ _null_ )); -DESCR("modulus"); - -DATA(insert OID = 944 ( char PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 18 "25" _null_ _null_ _null_ _null_ _null_ text_char _null_ _null_ _null_ )); -DESCR("convert text to char"); -DATA(insert OID = 946 ( text PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 25 "18" _null_ _null_ _null_ _null_ _null_ char_text _null_ _null_ _null_ )); -DESCR("convert char to text"); - -DATA(insert OID = 952 ( lo_open PGNSP PGUID 12 1 0 0 0 f f f f t f v u 2 0 23 "26 23" _null_ _null_ _null_ _null_ _null_ be_lo_open _null_ _null_ _null_ )); -DESCR("large object open"); -DATA(insert OID = 953 ( lo_close PGNSP PGUID 12 1 0 0 0 f f f f t f v u 1 0 23 "23" _null_ _null_ _null_ _null_ _null_ be_lo_close _null_ _null_ _null_ )); -DESCR("large object close"); -DATA(insert OID = 954 ( loread PGNSP PGUID 12 1 0 0 0 f f f f t f v u 2 0 17 "23 23" _null_ _null_ _null_ _null_ _null_ be_loread _null_ _null_ _null_ )); -DESCR("large object read"); -DATA(insert OID = 955 ( lowrite PGNSP PGUID 12 1 0 0 0 f f f f t f v u 2 0 23 "23 17" _null_ _null_ _null_ _null_ _null_ be_lowrite _null_ _null_ _null_ )); -DESCR("large object write"); -DATA(insert OID = 956 ( lo_lseek PGNSP PGUID 12 1 0 0 0 f f f f t f v u 3 0 23 "23 23 23" _null_ _null_ _null_ _null_ _null_ be_lo_lseek _null_ _null_ _null_ )); -DESCR("large object seek"); -DATA(insert OID = 3170 ( lo_lseek64 PGNSP PGUID 12 1 0 0 0 f f f f t f v u 3 0 20 "23 20 23" _null_ _null_ _null_ _null_ _null_ be_lo_lseek64 _null_ _null_ _null_ )); -DESCR("large object seek (64 bit)"); -DATA(insert OID = 957 ( lo_creat PGNSP PGUID 12 1 0 0 0 f f f f t f v u 1 0 26 "23" _null_ _null_ _null_ _null_ _null_ be_lo_creat _null_ _null_ _null_ )); -DESCR("large object create"); -DATA(insert OID = 715 ( lo_create PGNSP PGUID 12 1 0 0 0 f f f f t f v u 1 0 26 "26" _null_ _null_ _null_ _null_ _null_ be_lo_create _null_ _null_ _null_ )); -DESCR("large object create"); -DATA(insert OID = 958 ( lo_tell PGNSP PGUID 12 1 0 0 0 f f f f t f v u 1 0 23 "23" _null_ _null_ _null_ _null_ _null_ be_lo_tell _null_ _null_ _null_ )); -DESCR("large object position"); -DATA(insert OID = 3171 ( lo_tell64 PGNSP PGUID 12 1 0 0 0 f f f f t f v u 1 0 20 "23" _null_ _null_ _null_ _null_ _null_ be_lo_tell64 _null_ _null_ _null_ )); -DESCR("large object position (64 bit)"); -DATA(insert OID = 1004 ( lo_truncate PGNSP PGUID 12 1 0 0 0 f f f f t f v u 2 0 23 "23 23" _null_ _null_ _null_ _null_ _null_ be_lo_truncate _null_ _null_ _null_ )); -DESCR("truncate large object"); -DATA(insert OID = 3172 ( lo_truncate64 PGNSP PGUID 12 1 0 0 0 f f f f t f v u 2 0 23 "23 20" _null_ _null_ _null_ _null_ _null_ be_lo_truncate64 _null_ _null_ _null_ )); -DESCR("truncate large object (64 bit)"); - -DATA(insert OID = 3457 ( lo_from_bytea PGNSP PGUID 12 1 0 0 0 f f f f t f v u 2 0 26 "26 17" _null_ _null_ _null_ _null_ _null_ be_lo_from_bytea _null_ _null_ _null_ )); -DESCR("create new large object with given content"); -DATA(insert OID = 3458 ( lo_get PGNSP PGUID 12 1 0 0 0 f f f f t f v u 1 0 17 "26" _null_ _null_ _null_ _null_ _null_ be_lo_get _null_ _null_ _null_ )); -DESCR("read entire large object"); -DATA(insert OID = 3459 ( lo_get PGNSP PGUID 12 1 0 0 0 f f f f t f v u 3 0 17 "26 20 23" _null_ _null_ _null_ _null_ _null_ be_lo_get_fragment _null_ _null_ _null_ )); -DESCR("read large object from offset for length"); -DATA(insert OID = 3460 ( lo_put PGNSP PGUID 12 1 0 0 0 f f f f t f v u 3 0 2278 "26 20 17" _null_ _null_ _null_ _null_ _null_ be_lo_put _null_ _null_ _null_ )); -DESCR("write data at offset"); - -DATA(insert OID = 959 ( on_pl PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 16 "600 628" _null_ _null_ _null_ _null_ _null_ on_pl _null_ _null_ _null_ )); -DATA(insert OID = 960 ( on_sl PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 16 "601 628" _null_ _null_ _null_ _null_ _null_ on_sl _null_ _null_ _null_ )); -DATA(insert OID = 961 ( close_pl PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 600 "600 628" _null_ _null_ _null_ _null_ _null_ close_pl _null_ _null_ _null_ )); -DATA(insert OID = 962 ( close_sl PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 600 "601 628" _null_ _null_ _null_ _null_ _null_ close_sl _null_ _null_ _null_ )); -DATA(insert OID = 963 ( close_lb PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 600 "628 603" _null_ _null_ _null_ _null_ _null_ close_lb _null_ _null_ _null_ )); - -DATA(insert OID = 964 ( lo_unlink PGNSP PGUID 12 1 0 0 0 f f f f t f v u 1 0 23 "26" _null_ _null_ _null_ _null_ _null_ be_lo_unlink _null_ _null_ _null_ )); -DESCR("large object unlink (delete)"); + Oid oid; /* oid */ -DATA(insert OID = 973 ( path_inter PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 16 "602 602" _null_ _null_ _null_ _null_ _null_ path_inter _null_ _null_ _null_ )); -DATA(insert OID = 975 ( area PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 701 "603" _null_ _null_ _null_ _null_ _null_ box_area _null_ _null_ _null_ )); -DESCR("box area"); -DATA(insert OID = 976 ( width PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 701 "603" _null_ _null_ _null_ _null_ _null_ box_width _null_ _null_ _null_ )); -DESCR("box width"); -DATA(insert OID = 977 ( height PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 701 "603" _null_ _null_ _null_ _null_ _null_ box_height _null_ _null_ _null_ )); -DESCR("box height"); -DATA(insert OID = 978 ( box_distance PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 701 "603 603" _null_ _null_ _null_ _null_ _null_ box_distance _null_ _null_ _null_ )); -DATA(insert OID = 979 ( area PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 701 "602" _null_ _null_ _null_ _null_ _null_ path_area _null_ _null_ _null_ )); -DESCR("area of a closed path"); -DATA(insert OID = 980 ( box_intersect PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 603 "603 603" _null_ _null_ _null_ _null_ _null_ box_intersect _null_ _null_ _null_ )); -DATA(insert OID = 4067 ( bound_box PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 603 "603 603" _null_ _null_ _null_ _null_ _null_ boxes_bound_box _null_ _null_ _null_ )); -DESCR("bounding box of two boxes"); -DATA(insert OID = 981 ( diagonal PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 601 "603" _null_ _null_ _null_ _null_ _null_ box_diagonal _null_ _null_ _null_ )); -DESCR("box diagonal"); -DATA(insert OID = 982 ( path_n_lt PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 16 "602 602" _null_ _null_ _null_ _null_ _null_ path_n_lt _null_ _null_ _null_ )); -DATA(insert OID = 983 ( path_n_gt PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 16 "602 602" _null_ _null_ _null_ _null_ _null_ path_n_gt _null_ _null_ _null_ )); -DATA(insert OID = 984 ( path_n_eq PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 16 "602 602" _null_ _null_ _null_ _null_ _null_ path_n_eq _null_ _null_ _null_ )); -DATA(insert OID = 985 ( path_n_le PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 16 "602 602" _null_ _null_ _null_ _null_ _null_ path_n_le _null_ _null_ _null_ )); -DATA(insert OID = 986 ( path_n_ge PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 16 "602 602" _null_ _null_ _null_ _null_ _null_ path_n_ge _null_ _null_ _null_ )); -DATA(insert OID = 987 ( path_length PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 701 "602" _null_ _null_ _null_ _null_ _null_ path_length _null_ _null_ _null_ )); -DATA(insert OID = 988 ( point_ne PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 16 "600 600" _null_ _null_ _null_ _null_ _null_ point_ne _null_ _null_ _null_ )); -DATA(insert OID = 989 ( point_vert PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 16 "600 600" _null_ _null_ _null_ _null_ _null_ point_vert _null_ _null_ _null_ )); -DATA(insert OID = 990 ( point_horiz PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 16 "600 600" _null_ _null_ _null_ _null_ _null_ point_horiz _null_ _null_ _null_ )); -DATA(insert OID = 991 ( point_distance PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 701 "600 600" _null_ _null_ _null_ _null_ _null_ point_distance _null_ _null_ _null_ )); -DATA(insert OID = 992 ( slope PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 701 "600 600" _null_ _null_ _null_ _null_ _null_ point_slope _null_ _null_ _null_ )); -DESCR("slope between points"); -DATA(insert OID = 993 ( lseg PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 601 "600 600" _null_ _null_ _null_ _null_ _null_ lseg_construct _null_ _null_ _null_ )); -DESCR("convert points to line segment"); -DATA(insert OID = 994 ( lseg_intersect PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 16 "601 601" _null_ _null_ _null_ _null_ _null_ lseg_intersect _null_ _null_ _null_ )); -DATA(insert OID = 995 ( lseg_parallel PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 16 "601 601" _null_ _null_ _null_ _null_ _null_ lseg_parallel _null_ _null_ _null_ )); -DATA(insert OID = 996 ( lseg_perp PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 16 "601 601" _null_ _null_ _null_ _null_ _null_ lseg_perp _null_ _null_ _null_ )); -DATA(insert OID = 997 ( lseg_vertical PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 16 "601" _null_ _null_ _null_ _null_ _null_ lseg_vertical _null_ _null_ _null_ )); -DATA(insert OID = 998 ( lseg_horizontal PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 16 "601" _null_ _null_ _null_ _null_ _null_ lseg_horizontal _null_ _null_ _null_ )); -DATA(insert OID = 999 ( lseg_eq PGNSP PGUID 12 1 0 0 0 f f f t t f i s 2 0 16 "601 601" _null_ _null_ _null_ _null_ _null_ lseg_eq _null_ _null_ _null_ )); + /* procedure name */ + NameData proname; -/* OIDS 1000 - 1999 */ + /* OID of namespace containing this proc */ + Oid pronamespace BKI_DEFAULT(PGNSP); -DATA(insert OID = 3994 ( timestamp_izone_transform PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 2281 "2281" _null_ _null_ _null_ _null_ _null_ timestamp_izone_transform _null_ _null_ _null_ )); -DESCR("transform a time zone adjustment"); -DATA(insert OID = 1026 ( timezone PGNSP PGUID 12 1 0 0 timestamp_izone_transform f f f f t f i s 2 0 1114 "1186 1184" _null_ _null_ _null_ _null_ _null_ timestamptz_izone _null_ _null_ _null_ )); -DESCR("adjust timestamp to new time zone"); + /* procedure owner */ + Oid proowner BKI_DEFAULT(PGUID); -DATA(insert OID = 1031 ( aclitemin PGNSP PGUID 12 1 0 0 0 f f f f t f s s 1 0 1033 "2275" _null_ _null_ _null_ _null_ _null_ aclitemin _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 1032 ( aclitemout PGNSP PGUID 12 1 0 0 0 f f f f t f s s 1 0 2275 "1033" _null_ _null_ _null_ _null_ _null_ aclitemout _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 1035 ( aclinsert PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 1034 "1034 1033" _null_ _null_ _null_ _null_ _null_ aclinsert _null_ _null_ _null_ )); -DESCR("add/update ACL item"); -DATA(insert OID = 1036 ( aclremove PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 1034 "1034 1033" _null_ _null_ _null_ _null_ _null_ aclremove _null_ _null_ _null_ )); -DESCR("remove ACL item"); -DATA(insert OID = 1037 ( aclcontains PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 16 "1034 1033" _null_ _null_ _null_ _null_ _null_ aclcontains _null_ _null_ _null_ )); -DESCR("contains"); -DATA(insert OID = 1062 ( aclitemeq PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 16 "1033 1033" _null_ _null_ _null_ _null_ _null_ aclitem_eq _null_ _null_ _null_ )); -DATA(insert OID = 1365 ( makeaclitem PGNSP PGUID 12 1 0 0 0 f f f f t f i s 4 0 1033 "26 26 25 16" _null_ _null_ _null_ _null_ _null_ makeaclitem _null_ _null_ _null_ )); -DESCR("make ACL item"); -DATA(insert OID = 3943 ( acldefault PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 1034 "18 26" _null_ _null_ _null_ _null_ _null_ acldefault_sql _null_ _null_ _null_ )); -DESCR("TODO"); -DATA(insert OID = 1689 ( aclexplode PGNSP PGUID 12 1 10 0 0 f f f f t t s s 1 0 2249 "1034" "{1034,26,26,25,16}" "{i,o,o,o,o}" "{acl,grantor,grantee,privilege_type,is_grantable}" _null_ _null_ aclexplode _null_ _null_ _null_ )); -DESCR("convert ACL item array to table, for use by information schema"); -DATA(insert OID = 1044 ( bpcharin PGNSP PGUID 12 1 0 0 0 f f f f t f i s 3 0 1042 "2275 26 23" _null_ _null_ _null_ _null_ _null_ bpcharin _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 1045 ( bpcharout PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 2275 "1042" _null_ _null_ _null_ _null_ _null_ bpcharout _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 2913 ( bpchartypmodin PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 23 "1263" _null_ _null_ _null_ _null_ _null_ bpchartypmodin _null_ _null_ _null_ )); -DESCR("I/O typmod"); -DATA(insert OID = 2914 ( bpchartypmodout PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 2275 "23" _null_ _null_ _null_ _null_ _null_ bpchartypmodout _null_ _null_ _null_ )); -DESCR("I/O typmod"); -DATA(insert OID = 1046 ( varcharin PGNSP PGUID 12 1 0 0 0 f f f f t f i s 3 0 1043 "2275 26 23" _null_ _null_ _null_ _null_ _null_ varcharin _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 1047 ( varcharout PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 2275 "1043" _null_ _null_ _null_ _null_ _null_ varcharout _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 2915 ( varchartypmodin PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 23 "1263" _null_ _null_ _null_ _null_ _null_ varchartypmodin _null_ _null_ _null_ )); -DESCR("I/O typmod"); -DATA(insert OID = 2916 ( varchartypmodout PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 2275 "23" _null_ _null_ _null_ _null_ _null_ varchartypmodout _null_ _null_ _null_ )); -DESCR("I/O typmod"); -DATA(insert OID = 1048 ( bpchareq PGNSP PGUID 12 1 0 0 0 f f f t t f i s 2 0 16 "1042 1042" _null_ _null_ _null_ _null_ _null_ bpchareq _null_ _null_ _null_ )); -DATA(insert OID = 1049 ( bpcharlt PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 16 "1042 1042" _null_ _null_ _null_ _null_ _null_ bpcharlt _null_ _null_ _null_ )); -DATA(insert OID = 1050 ( bpcharle PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 16 "1042 1042" _null_ _null_ _null_ _null_ _null_ bpcharle _null_ _null_ _null_ )); -DATA(insert OID = 1051 ( bpchargt PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 16 "1042 1042" _null_ _null_ _null_ _null_ _null_ bpchargt _null_ _null_ _null_ )); -DATA(insert OID = 1052 ( bpcharge PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 16 "1042 1042" _null_ _null_ _null_ _null_ _null_ bpcharge _null_ _null_ _null_ )); -DATA(insert OID = 1053 ( bpcharne PGNSP PGUID 12 1 0 0 0 f f f t t f i s 2 0 16 "1042 1042" _null_ _null_ _null_ _null_ _null_ bpcharne _null_ _null_ _null_ )); -DATA(insert OID = 1063 ( bpchar_larger PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 1042 "1042 1042" _null_ _null_ _null_ _null_ _null_ bpchar_larger _null_ _null_ _null_ )); -DESCR("larger of two"); -DATA(insert OID = 1064 ( bpchar_smaller PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 1042 "1042 1042" _null_ _null_ _null_ _null_ _null_ bpchar_smaller _null_ _null_ _null_ )); -DESCR("smaller of two"); -DATA(insert OID = 1078 ( bpcharcmp PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 23 "1042 1042" _null_ _null_ _null_ _null_ _null_ bpcharcmp _null_ _null_ _null_ )); -DESCR("less-equal-greater"); -DATA(insert OID = 3328 ( bpchar_sortsupport PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 2278 "2281" _null_ _null_ _null_ _null_ _null_ bpchar_sortsupport _null_ _null_ _null_ )); -DESCR("sort support"); -DATA(insert OID = 1080 ( hashbpchar PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 23 "1042" _null_ _null_ _null_ _null_ _null_ hashbpchar _null_ _null_ _null_ )); -DESCR("hash"); -DATA(insert OID = 1081 ( format_type PGNSP PGUID 12 1 0 0 0 f f f f f f s s 2 0 25 "26 23" _null_ _null_ _null_ _null_ _null_ format_type _null_ _null_ _null_ )); -DESCR("format a type oid and atttypmod to canonical SQL"); -DATA(insert OID = 1084 ( date_in PGNSP PGUID 12 1 0 0 0 f f f f t f s s 1 0 1082 "2275" _null_ _null_ _null_ _null_ _null_ date_in _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 1085 ( date_out PGNSP PGUID 12 1 0 0 0 f f f f t f s s 1 0 2275 "1082" _null_ _null_ _null_ _null_ _null_ date_out _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 1086 ( date_eq PGNSP PGUID 12 1 0 0 0 f f f t t f i s 2 0 16 "1082 1082" _null_ _null_ _null_ _null_ _null_ date_eq _null_ _null_ _null_ )); -DATA(insert OID = 1087 ( date_lt PGNSP PGUID 12 1 0 0 0 f f f t t f i s 2 0 16 "1082 1082" _null_ _null_ _null_ _null_ _null_ date_lt _null_ _null_ _null_ )); -DATA(insert OID = 1088 ( date_le PGNSP PGUID 12 1 0 0 0 f f f t t f i s 2 0 16 "1082 1082" _null_ _null_ _null_ _null_ _null_ date_le _null_ _null_ _null_ )); -DATA(insert OID = 1089 ( date_gt PGNSP PGUID 12 1 0 0 0 f f f t t f i s 2 0 16 "1082 1082" _null_ _null_ _null_ _null_ _null_ date_gt _null_ _null_ _null_ )); -DATA(insert OID = 1090 ( date_ge PGNSP PGUID 12 1 0 0 0 f f f t t f i s 2 0 16 "1082 1082" _null_ _null_ _null_ _null_ _null_ date_ge _null_ _null_ _null_ )); -DATA(insert OID = 1091 ( date_ne PGNSP PGUID 12 1 0 0 0 f f f t t f i s 2 0 16 "1082 1082" _null_ _null_ _null_ _null_ _null_ date_ne _null_ _null_ _null_ )); -DATA(insert OID = 1092 ( date_cmp PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 23 "1082 1082" _null_ _null_ _null_ _null_ _null_ date_cmp _null_ _null_ _null_ )); -DESCR("less-equal-greater"); -DATA(insert OID = 3136 ( date_sortsupport PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 2278 "2281" _null_ _null_ _null_ _null_ _null_ date_sortsupport _null_ _null_ _null_ )); -DESCR("sort support"); + /* OID of pg_language entry */ + Oid prolang BKI_DEFAULT(internal) BKI_LOOKUP(pg_language); -/* OIDS 1100 - 1199 */ + /* estimated execution cost */ + float4 procost BKI_DEFAULT(1); -DATA(insert OID = 1102 ( time_lt PGNSP PGUID 12 1 0 0 0 f f f t t f i s 2 0 16 "1083 1083" _null_ _null_ _null_ _null_ _null_ time_lt _null_ _null_ _null_ )); -DATA(insert OID = 1103 ( time_le PGNSP PGUID 12 1 0 0 0 f f f t t f i s 2 0 16 "1083 1083" _null_ _null_ _null_ _null_ _null_ time_le _null_ _null_ _null_ )); -DATA(insert OID = 1104 ( time_gt PGNSP PGUID 12 1 0 0 0 f f f t t f i s 2 0 16 "1083 1083" _null_ _null_ _null_ _null_ _null_ time_gt _null_ _null_ _null_ )); -DATA(insert OID = 1105 ( time_ge PGNSP PGUID 12 1 0 0 0 f f f t t f i s 2 0 16 "1083 1083" _null_ _null_ _null_ _null_ _null_ time_ge _null_ _null_ _null_ )); -DATA(insert OID = 1106 ( time_ne PGNSP PGUID 12 1 0 0 0 f f f t t f i s 2 0 16 "1083 1083" _null_ _null_ _null_ _null_ _null_ time_ne _null_ _null_ _null_ )); -DATA(insert OID = 1107 ( time_cmp PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 23 "1083 1083" _null_ _null_ _null_ _null_ _null_ time_cmp _null_ _null_ _null_ )); -DESCR("less-equal-greater"); -DATA(insert OID = 1138 ( date_larger PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 1082 "1082 1082" _null_ _null_ _null_ _null_ _null_ date_larger _null_ _null_ _null_ )); -DESCR("larger of two"); -DATA(insert OID = 1139 ( date_smaller PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 1082 "1082 1082" _null_ _null_ _null_ _null_ _null_ date_smaller _null_ _null_ _null_ )); -DESCR("smaller of two"); -DATA(insert OID = 1140 ( date_mi PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 23 "1082 1082" _null_ _null_ _null_ _null_ _null_ date_mi _null_ _null_ _null_ )); -DATA(insert OID = 1141 ( date_pli PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 1082 "1082 23" _null_ _null_ _null_ _null_ _null_ date_pli _null_ _null_ _null_ )); -DATA(insert OID = 1142 ( date_mii PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 1082 "1082 23" _null_ _null_ _null_ _null_ _null_ date_mii _null_ _null_ _null_ )); -DATA(insert OID = 1143 ( time_in PGNSP PGUID 12 1 0 0 0 f f f f t f s s 3 0 1083 "2275 26 23" _null_ _null_ _null_ _null_ _null_ time_in _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 1144 ( time_out PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 2275 "1083" _null_ _null_ _null_ _null_ _null_ time_out _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 2909 ( timetypmodin PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 23 "1263" _null_ _null_ _null_ _null_ _null_ timetypmodin _null_ _null_ _null_ )); -DESCR("I/O typmod"); -DATA(insert OID = 2910 ( timetypmodout PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 2275 "23" _null_ _null_ _null_ _null_ _null_ timetypmodout _null_ _null_ _null_ )); -DESCR("I/O typmod"); -DATA(insert OID = 1145 ( time_eq PGNSP PGUID 12 1 0 0 0 f f f t t f i s 2 0 16 "1083 1083" _null_ _null_ _null_ _null_ _null_ time_eq _null_ _null_ _null_ )); + /* estimated # of rows out (if proretset) */ + float4 prorows BKI_DEFAULT(0); -DATA(insert OID = 1146 ( circle_add_pt PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 718 "718 600" _null_ _null_ _null_ _null_ _null_ circle_add_pt _null_ _null_ _null_ )); -DATA(insert OID = 1147 ( circle_sub_pt PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 718 "718 600" _null_ _null_ _null_ _null_ _null_ circle_sub_pt _null_ _null_ _null_ )); -DATA(insert OID = 1148 ( circle_mul_pt PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 718 "718 600" _null_ _null_ _null_ _null_ _null_ circle_mul_pt _null_ _null_ _null_ )); -DATA(insert OID = 1149 ( circle_div_pt PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 718 "718 600" _null_ _null_ _null_ _null_ _null_ circle_div_pt _null_ _null_ _null_ )); + /* element type of variadic array, or 0 */ + Oid provariadic BKI_DEFAULT(0) BKI_LOOKUP(pg_type); -DATA(insert OID = 1150 ( timestamptz_in PGNSP PGUID 12 1 0 0 0 f f f f t f s s 3 0 1184 "2275 26 23" _null_ _null_ _null_ _null_ _null_ timestamptz_in _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 1151 ( timestamptz_out PGNSP PGUID 12 1 0 0 0 f f f f t f s s 1 0 2275 "1184" _null_ _null_ _null_ _null_ _null_ timestamptz_out _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 2907 ( timestamptztypmodin PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 23 "1263" _null_ _null_ _null_ _null_ _null_ timestamptztypmodin _null_ _null_ _null_ )); -DESCR("I/O typmod"); -DATA(insert OID = 2908 ( timestamptztypmodout PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 2275 "23" _null_ _null_ _null_ _null_ _null_ timestamptztypmodout _null_ _null_ _null_ )); -DESCR("I/O typmod"); -DATA(insert OID = 1152 ( timestamptz_eq PGNSP PGUID 12 1 0 0 0 f f f t t f i s 2 0 16 "1184 1184" _null_ _null_ _null_ _null_ _null_ timestamp_eq _null_ _null_ _null_ )); -DATA(insert OID = 1153 ( timestamptz_ne PGNSP PGUID 12 1 0 0 0 f f f t t f i s 2 0 16 "1184 1184" _null_ _null_ _null_ _null_ _null_ timestamp_ne _null_ _null_ _null_ )); -DATA(insert OID = 1154 ( timestamptz_lt PGNSP PGUID 12 1 0 0 0 f f f t t f i s 2 0 16 "1184 1184" _null_ _null_ _null_ _null_ _null_ timestamp_lt _null_ _null_ _null_ )); -DATA(insert OID = 1155 ( timestamptz_le PGNSP PGUID 12 1 0 0 0 f f f t t f i s 2 0 16 "1184 1184" _null_ _null_ _null_ _null_ _null_ timestamp_le _null_ _null_ _null_ )); -DATA(insert OID = 1156 ( timestamptz_ge PGNSP PGUID 12 1 0 0 0 f f f t t f i s 2 0 16 "1184 1184" _null_ _null_ _null_ _null_ _null_ timestamp_ge _null_ _null_ _null_ )); -DATA(insert OID = 1157 ( timestamptz_gt PGNSP PGUID 12 1 0 0 0 f f f t t f i s 2 0 16 "1184 1184" _null_ _null_ _null_ _null_ _null_ timestamp_gt _null_ _null_ _null_ )); -DATA(insert OID = 1158 ( to_timestamp PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 1184 "701" _null_ _null_ _null_ _null_ _null_ float8_timestamptz _null_ _null_ _null_ )); -DESCR("convert UNIX epoch to timestamptz"); -DATA(insert OID = 3995 ( timestamp_zone_transform PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 2281 "2281" _null_ _null_ _null_ _null_ _null_ timestamp_zone_transform _null_ _null_ _null_ )); -DESCR("transform a time zone adjustment"); -DATA(insert OID = 1159 ( timezone PGNSP PGUID 12 1 0 0 timestamp_zone_transform f f f f t f i s 2 0 1114 "25 1184" _null_ _null_ _null_ _null_ _null_ timestamptz_zone _null_ _null_ _null_ )); -DESCR("adjust timestamp to new time zone"); + /* planner support function for this function, or 0 if none */ + regproc prosupport BKI_DEFAULT(0) BKI_LOOKUP(pg_proc); -DATA(insert OID = 1160 ( interval_in PGNSP PGUID 12 1 0 0 0 f f f f t f s s 3 0 1186 "2275 26 23" _null_ _null_ _null_ _null_ _null_ interval_in _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 1161 ( interval_out PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 2275 "1186" _null_ _null_ _null_ _null_ _null_ interval_out _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 2903 ( intervaltypmodin PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 23 "1263" _null_ _null_ _null_ _null_ _null_ intervaltypmodin _null_ _null_ _null_ )); -DESCR("I/O typmod"); -DATA(insert OID = 2904 ( intervaltypmodout PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 2275 "23" _null_ _null_ _null_ _null_ _null_ intervaltypmodout _null_ _null_ _null_ )); -DESCR("I/O typmod"); -DATA(insert OID = 1162 ( interval_eq PGNSP PGUID 12 1 0 0 0 f f f t t f i s 2 0 16 "1186 1186" _null_ _null_ _null_ _null_ _null_ interval_eq _null_ _null_ _null_ )); -DATA(insert OID = 1163 ( interval_ne PGNSP PGUID 12 1 0 0 0 f f f t t f i s 2 0 16 "1186 1186" _null_ _null_ _null_ _null_ _null_ interval_ne _null_ _null_ _null_ )); -DATA(insert OID = 1164 ( interval_lt PGNSP PGUID 12 1 0 0 0 f f f t t f i s 2 0 16 "1186 1186" _null_ _null_ _null_ _null_ _null_ interval_lt _null_ _null_ _null_ )); -DATA(insert OID = 1165 ( interval_le PGNSP PGUID 12 1 0 0 0 f f f t t f i s 2 0 16 "1186 1186" _null_ _null_ _null_ _null_ _null_ interval_le _null_ _null_ _null_ )); -DATA(insert OID = 1166 ( interval_ge PGNSP PGUID 12 1 0 0 0 f f f t t f i s 2 0 16 "1186 1186" _null_ _null_ _null_ _null_ _null_ interval_ge _null_ _null_ _null_ )); -DATA(insert OID = 1167 ( interval_gt PGNSP PGUID 12 1 0 0 0 f f f t t f i s 2 0 16 "1186 1186" _null_ _null_ _null_ _null_ _null_ interval_gt _null_ _null_ _null_ )); -DATA(insert OID = 1168 ( interval_um PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 1186 "1186" _null_ _null_ _null_ _null_ _null_ interval_um _null_ _null_ _null_ )); -DATA(insert OID = 1169 ( interval_pl PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 1186 "1186 1186" _null_ _null_ _null_ _null_ _null_ interval_pl _null_ _null_ _null_ )); -DATA(insert OID = 1170 ( interval_mi PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 1186 "1186 1186" _null_ _null_ _null_ _null_ _null_ interval_mi _null_ _null_ _null_ )); -DATA(insert OID = 1171 ( date_part PGNSP PGUID 12 1 0 0 0 f f f f t f s s 2 0 701 "25 1184" _null_ _null_ _null_ _null_ _null_ timestamptz_part _null_ _null_ _null_ )); -DESCR("extract field from timestamp with time zone"); -DATA(insert OID = 1172 ( date_part PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 701 "25 1186" _null_ _null_ _null_ _null_ _null_ interval_part _null_ _null_ _null_ )); -DESCR("extract field from interval"); -DATA(insert OID = 1173 ( timestamptz PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 1184 "702" _null_ _null_ _null_ _null_ _null_ abstime_timestamptz _null_ _null_ _null_ )); -DESCR("convert abstime to timestamp with time zone"); -DATA(insert OID = 1174 ( timestamptz PGNSP PGUID 12 1 0 0 0 f f f f t f s s 1 0 1184 "1082" _null_ _null_ _null_ _null_ _null_ date_timestamptz _null_ _null_ _null_ )); -DESCR("convert date to timestamp with time zone"); -DATA(insert OID = 2711 ( justify_interval PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 1186 "1186" _null_ _null_ _null_ _null_ _null_ interval_justify_interval _null_ _null_ _null_ )); -DESCR("promote groups of 24 hours to numbers of days and promote groups of 30 days to numbers of months"); -DATA(insert OID = 1175 ( justify_hours PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 1186 "1186" _null_ _null_ _null_ _null_ _null_ interval_justify_hours _null_ _null_ _null_ )); -DESCR("promote groups of 24 hours to numbers of days"); -DATA(insert OID = 1295 ( justify_days PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 1186 "1186" _null_ _null_ _null_ _null_ _null_ interval_justify_days _null_ _null_ _null_ )); -DESCR("promote groups of 30 days to numbers of months"); -DATA(insert OID = 1176 ( timestamptz PGNSP PGUID 14 1 0 0 0 f f f f t f s s 2 0 1184 "1082 1083" _null_ _null_ _null_ _null_ _null_ "select cast(($1 + $2) as timestamp with time zone)" _null_ _null_ _null_ )); -DESCR("convert date and time to timestamp with time zone"); -DATA(insert OID = 1177 ( interval PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 1186 "703" _null_ _null_ _null_ _null_ _null_ reltime_interval _null_ _null_ _null_ )); -DESCR("convert reltime to interval"); -DATA(insert OID = 1178 ( date PGNSP PGUID 12 1 0 0 0 f f f f t f s s 1 0 1082 "1184" _null_ _null_ _null_ _null_ _null_ timestamptz_date _null_ _null_ _null_ )); -DESCR("convert timestamp with time zone to date"); -DATA(insert OID = 1179 ( date PGNSP PGUID 12 1 0 0 0 f f f f t f s s 1 0 1082 "702" _null_ _null_ _null_ _null_ _null_ abstime_date _null_ _null_ _null_ )); -DESCR("convert abstime to date"); -DATA(insert OID = 1180 ( abstime PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 702 "1184" _null_ _null_ _null_ _null_ _null_ timestamptz_abstime _null_ _null_ _null_ )); -DESCR("convert timestamp with time zone to abstime"); -DATA(insert OID = 1181 ( age PGNSP PGUID 12 1 0 0 0 f f f f t f s r 1 0 23 "28" _null_ _null_ _null_ _null_ _null_ xid_age _null_ _null_ _null_ )); -DESCR("age of a transaction ID, in transactions before current transaction"); -DATA(insert OID = 3939 ( mxid_age PGNSP PGUID 12 1 0 0 0 f f f f t f s s 1 0 23 "28" _null_ _null_ _null_ _null_ _null_ mxid_age _null_ _null_ _null_ )); -DESCR("age of a multi-transaction ID, in multi-transactions before current multi-transaction"); + /* see PROKIND_ categories below */ + char prokind BKI_DEFAULT(f); -DATA(insert OID = 1188 ( timestamptz_mi PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 1186 "1184 1184" _null_ _null_ _null_ _null_ _null_ timestamp_mi _null_ _null_ _null_ )); -DATA(insert OID = 1189 ( timestamptz_pl_interval PGNSP PGUID 12 1 0 0 0 f f f f t f s s 2 0 1184 "1184 1186" _null_ _null_ _null_ _null_ _null_ timestamptz_pl_interval _null_ _null_ _null_ )); -DATA(insert OID = 1190 ( timestamptz_mi_interval PGNSP PGUID 12 1 0 0 0 f f f f t f s s 2 0 1184 "1184 1186" _null_ _null_ _null_ _null_ _null_ timestamptz_mi_interval _null_ _null_ _null_ )); -DATA(insert OID = 1194 ( reltime PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 703 "1186" _null_ _null_ _null_ _null_ _null_ interval_reltime _null_ _null_ _null_ )); -DESCR("convert interval to reltime"); -DATA(insert OID = 1195 ( timestamptz_smaller PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 1184 "1184 1184" _null_ _null_ _null_ _null_ _null_ timestamp_smaller _null_ _null_ _null_ )); -DESCR("smaller of two"); -DATA(insert OID = 1196 ( timestamptz_larger PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 1184 "1184 1184" _null_ _null_ _null_ _null_ _null_ timestamp_larger _null_ _null_ _null_ )); -DESCR("larger of two"); -DATA(insert OID = 1197 ( interval_smaller PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 1186 "1186 1186" _null_ _null_ _null_ _null_ _null_ interval_smaller _null_ _null_ _null_ )); -DESCR("smaller of two"); -DATA(insert OID = 1198 ( interval_larger PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 1186 "1186 1186" _null_ _null_ _null_ _null_ _null_ interval_larger _null_ _null_ _null_ )); -DESCR("larger of two"); -DATA(insert OID = 1199 ( age PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 1186 "1184 1184" _null_ _null_ _null_ _null_ _null_ timestamptz_age _null_ _null_ _null_ )); -DESCR("date difference preserving months and years"); + /* security definer */ + bool prosecdef BKI_DEFAULT(f); -/* OIDS 1200 - 1299 */ + /* is it a leak-proof function? */ + bool proleakproof BKI_DEFAULT(f); -DATA(insert OID = 3918 ( interval_transform PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 2281 "2281" _null_ _null_ _null_ _null_ _null_ interval_transform _null_ _null_ _null_ )); -DESCR("transform an interval length coercion"); -DATA(insert OID = 1200 ( interval PGNSP PGUID 12 1 0 0 interval_transform f f f f t f i s 2 0 1186 "1186 23" _null_ _null_ _null_ _null_ _null_ interval_scale _null_ _null_ _null_ )); -DESCR("adjust interval precision"); + /* strict with respect to NULLs? */ + bool proisstrict BKI_DEFAULT(t); -DATA(insert OID = 1215 ( obj_description PGNSP PGUID 14 100 0 0 0 f f f f t f s s 2 0 25 "26 19" _null_ _null_ _null_ _null_ _null_ "select description from pg_catalog.pg_description where objoid = $1 and classoid = (select oid from pg_catalog.pg_class where relname = $2 and relnamespace = PGNSP) and objsubid = 0" _null_ _null_ _null_ )); -DESCR("get description for object id and catalog name"); -DATA(insert OID = 1216 ( col_description PGNSP PGUID 14 100 0 0 0 f f f f t f s s 2 0 25 "26 23" _null_ _null_ _null_ _null_ _null_ "select description from pg_catalog.pg_description where objoid = $1 and classoid = ''pg_catalog.pg_class''::pg_catalog.regclass and objsubid = $2" _null_ _null_ _null_ )); -DESCR("get description for table column"); -DATA(insert OID = 1993 ( shobj_description PGNSP PGUID 14 100 0 0 0 f f f f t f s s 2 0 25 "26 19" _null_ _null_ _null_ _null_ _null_ "select description from pg_catalog.pg_shdescription where objoid = $1 and classoid = (select oid from pg_catalog.pg_class where relname = $2 and relnamespace = PGNSP)" _null_ _null_ _null_ )); -DESCR("get description for object id and shared catalog name"); + /* returns a set? */ + bool proretset BKI_DEFAULT(f); -DATA(insert OID = 1217 ( date_trunc PGNSP PGUID 12 1 0 0 0 f f f f t f s s 2 0 1184 "25 1184" _null_ _null_ _null_ _null_ _null_ timestamptz_trunc _null_ _null_ _null_ )); -DESCR("truncate timestamp with time zone to specified units"); -DATA(insert OID = 1218 ( date_trunc PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 1186 "25 1186" _null_ _null_ _null_ _null_ _null_ interval_trunc _null_ _null_ _null_ )); -DESCR("truncate interval to specified units"); + /* see PROVOLATILE_ categories below */ + char provolatile BKI_DEFAULT(i); -DATA(insert OID = 1219 ( int8inc PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 20 "20" _null_ _null_ _null_ _null_ _null_ int8inc _null_ _null_ _null_ )); -DESCR("increment"); -DATA(insert OID = 3546 ( int8dec PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 20 "20" _null_ _null_ _null_ _null_ _null_ int8dec _null_ _null_ _null_ )); -DESCR("decrement"); -DATA(insert OID = 2804 ( int8inc_any PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 20 "20 2276" _null_ _null_ _null_ _null_ _null_ int8inc_any _null_ _null_ _null_ )); -DESCR("increment, ignores second argument"); -DATA(insert OID = 3547 ( int8dec_any PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 20 "20 2276" _null_ _null_ _null_ _null_ _null_ int8dec_any _null_ _null_ _null_ )); -DESCR("decrement, ignores second argument"); -DATA(insert OID = 1230 ( int8abs PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 20 "20" _null_ _null_ _null_ _null_ _null_ int8abs _null_ _null_ _null_ )); + /* see PROPARALLEL_ categories below */ + char proparallel BKI_DEFAULT(s); -DATA(insert OID = 1236 ( int8larger PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 20 "20 20" _null_ _null_ _null_ _null_ _null_ int8larger _null_ _null_ _null_ )); -DESCR("larger of two"); -DATA(insert OID = 1237 ( int8smaller PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 20 "20 20" _null_ _null_ _null_ _null_ _null_ int8smaller _null_ _null_ _null_ )); -DESCR("smaller of two"); + /* number of arguments */ + /* Note: need not be given in pg_proc.dat; genbki.pl will compute it */ + int16 pronargs; -DATA(insert OID = 1238 ( texticregexeq PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 16 "25 25" _null_ _null_ _null_ _null_ _null_ texticregexeq _null_ _null_ _null_ )); -DATA(insert OID = 1239 ( texticregexne PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 16 "25 25" _null_ _null_ _null_ _null_ _null_ texticregexne _null_ _null_ _null_ )); -DATA(insert OID = 1240 ( nameicregexeq PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 16 "19 25" _null_ _null_ _null_ _null_ _null_ nameicregexeq _null_ _null_ _null_ )); -DATA(insert OID = 1241 ( nameicregexne PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 16 "19 25" _null_ _null_ _null_ _null_ _null_ nameicregexne _null_ _null_ _null_ )); + /* number of arguments with defaults */ + int16 pronargdefaults BKI_DEFAULT(0); -DATA(insert OID = 1251 ( int4abs PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 23 "23" _null_ _null_ _null_ _null_ _null_ int4abs _null_ _null_ _null_ )); -DATA(insert OID = 1253 ( int2abs PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 21 "21" _null_ _null_ _null_ _null_ _null_ int2abs _null_ _null_ _null_ )); + /* OID of result type */ + Oid prorettype BKI_LOOKUP(pg_type); -DATA(insert OID = 1271 ( overlaps PGNSP PGUID 12 1 0 0 0 f f f f f f i s 4 0 16 "1266 1266 1266 1266" _null_ _null_ _null_ _null_ _null_ overlaps_timetz _null_ _null_ _null_ )); -DESCR("intervals overlap?"); -DATA(insert OID = 1272 ( datetime_pl PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 1114 "1082 1083" _null_ _null_ _null_ _null_ _null_ datetime_timestamp _null_ _null_ _null_ )); -DATA(insert OID = 1273 ( date_part PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 701 "25 1266" _null_ _null_ _null_ _null_ _null_ timetz_part _null_ _null_ _null_ )); -DESCR("extract field from time with time zone"); -DATA(insert OID = 1274 ( int84pl PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 20 "20 23" _null_ _null_ _null_ _null_ _null_ int84pl _null_ _null_ _null_ )); -DATA(insert OID = 1275 ( int84mi PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 20 "20 23" _null_ _null_ _null_ _null_ _null_ int84mi _null_ _null_ _null_ )); -DATA(insert OID = 1276 ( int84mul PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 20 "20 23" _null_ _null_ _null_ _null_ _null_ int84mul _null_ _null_ _null_ )); -DATA(insert OID = 1277 ( int84div PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 20 "20 23" _null_ _null_ _null_ _null_ _null_ int84div _null_ _null_ _null_ )); -DATA(insert OID = 1278 ( int48pl PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 20 "23 20" _null_ _null_ _null_ _null_ _null_ int48pl _null_ _null_ _null_ )); -DATA(insert OID = 1279 ( int48mi PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 20 "23 20" _null_ _null_ _null_ _null_ _null_ int48mi _null_ _null_ _null_ )); -DATA(insert OID = 1280 ( int48mul PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 20 "23 20" _null_ _null_ _null_ _null_ _null_ int48mul _null_ _null_ _null_ )); -DATA(insert OID = 1281 ( int48div PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 20 "23 20" _null_ _null_ _null_ _null_ _null_ int48div _null_ _null_ _null_ )); - -DATA(insert OID = 837 ( int82pl PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 20 "20 21" _null_ _null_ _null_ _null_ _null_ int82pl _null_ _null_ _null_ )); -DATA(insert OID = 838 ( int82mi PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 20 "20 21" _null_ _null_ _null_ _null_ _null_ int82mi _null_ _null_ _null_ )); -DATA(insert OID = 839 ( int82mul PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 20 "20 21" _null_ _null_ _null_ _null_ _null_ int82mul _null_ _null_ _null_ )); -DATA(insert OID = 840 ( int82div PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 20 "20 21" _null_ _null_ _null_ _null_ _null_ int82div _null_ _null_ _null_ )); -DATA(insert OID = 841 ( int28pl PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 20 "21 20" _null_ _null_ _null_ _null_ _null_ int28pl _null_ _null_ _null_ )); -DATA(insert OID = 942 ( int28mi PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 20 "21 20" _null_ _null_ _null_ _null_ _null_ int28mi _null_ _null_ _null_ )); -DATA(insert OID = 943 ( int28mul PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 20 "21 20" _null_ _null_ _null_ _null_ _null_ int28mul _null_ _null_ _null_ )); -DATA(insert OID = 948 ( int28div PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 20 "21 20" _null_ _null_ _null_ _null_ _null_ int28div _null_ _null_ _null_ )); - -DATA(insert OID = 1287 ( oid PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 26 "20" _null_ _null_ _null_ _null_ _null_ i8tooid _null_ _null_ _null_ )); -DESCR("convert int8 to oid"); -DATA(insert OID = 1288 ( int8 PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 20 "26" _null_ _null_ _null_ _null_ _null_ oidtoi8 _null_ _null_ _null_ )); -DESCR("convert oid to int8"); - -DATA(insert OID = 1291 ( suppress_redundant_updates_trigger PGNSP PGUID 12 1 0 0 0 f f f f t f v s 0 0 2279 "" _null_ _null_ _null_ _null_ _null_ suppress_redundant_updates_trigger _null_ _null_ _null_ )); -DESCR("trigger to suppress updates when new and old records match"); + /* + * variable-length fields start here, but we allow direct access to + * proargtypes + */ -DATA(insert OID = 1292 ( tideq PGNSP PGUID 12 1 0 0 0 f f f t t f i s 2 0 16 "27 27" _null_ _null_ _null_ _null_ _null_ tideq _null_ _null_ _null_ )); -DATA(insert OID = 1293 ( currtid PGNSP PGUID 12 1 0 0 0 f f f f t f v u 2 0 27 "26 27" _null_ _null_ _null_ _null_ _null_ currtid_byreloid _null_ _null_ _null_ )); -DESCR("latest tid of a tuple"); -DATA(insert OID = 1294 ( currtid2 PGNSP PGUID 12 1 0 0 0 f f f f t f v u 2 0 27 "25 27" _null_ _null_ _null_ _null_ _null_ currtid_byrelname _null_ _null_ _null_ )); -DESCR("latest tid of a tuple"); -DATA(insert OID = 1265 ( tidne PGNSP PGUID 12 1 0 0 0 f f f t t f i s 2 0 16 "27 27" _null_ _null_ _null_ _null_ _null_ tidne _null_ _null_ _null_ )); -DATA(insert OID = 2790 ( tidgt PGNSP PGUID 12 1 0 0 0 f f f t t f i s 2 0 16 "27 27" _null_ _null_ _null_ _null_ _null_ tidgt _null_ _null_ _null_ )); -DATA(insert OID = 2791 ( tidlt PGNSP PGUID 12 1 0 0 0 f f f t t f i s 2 0 16 "27 27" _null_ _null_ _null_ _null_ _null_ tidlt _null_ _null_ _null_ )); -DATA(insert OID = 2792 ( tidge PGNSP PGUID 12 1 0 0 0 f f f t t f i s 2 0 16 "27 27" _null_ _null_ _null_ _null_ _null_ tidge _null_ _null_ _null_ )); -DATA(insert OID = 2793 ( tidle PGNSP PGUID 12 1 0 0 0 f f f t t f i s 2 0 16 "27 27" _null_ _null_ _null_ _null_ _null_ tidle _null_ _null_ _null_ )); -DATA(insert OID = 2794 ( bttidcmp PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 23 "27 27" _null_ _null_ _null_ _null_ _null_ bttidcmp _null_ _null_ _null_ )); -DESCR("less-equal-greater"); -DATA(insert OID = 2795 ( tidlarger PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 27 "27 27" _null_ _null_ _null_ _null_ _null_ tidlarger _null_ _null_ _null_ )); -DESCR("larger of two"); -DATA(insert OID = 2796 ( tidsmaller PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 27 "27 27" _null_ _null_ _null_ _null_ _null_ tidsmaller _null_ _null_ _null_ )); -DESCR("smaller of two"); + /* parameter types (excludes OUT params) */ + oidvector proargtypes BKI_LOOKUP(pg_type); -DATA(insert OID = 1296 ( timedate_pl PGNSP PGUID 14 1 0 0 0 f f f f t f i s 2 0 1114 "1083 1082" _null_ _null_ _null_ _null_ _null_ "select ($2 + $1)" _null_ _null_ _null_ )); -DATA(insert OID = 1297 ( datetimetz_pl PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 1184 "1082 1266" _null_ _null_ _null_ _null_ _null_ datetimetz_timestamptz _null_ _null_ _null_ )); -DATA(insert OID = 1298 ( timetzdate_pl PGNSP PGUID 14 1 0 0 0 f f f f t f i s 2 0 1184 "1266 1082" _null_ _null_ _null_ _null_ _null_ "select ($2 + $1)" _null_ _null_ _null_ )); -DATA(insert OID = 1299 ( now PGNSP PGUID 12 1 0 0 0 f f f f t f s r 0 0 1184 "" _null_ _null_ _null_ _null_ _null_ now _null_ _null_ _null_ )); -DESCR("current transaction time"); -DATA(insert OID = 2647 ( transaction_timestamp PGNSP PGUID 12 1 0 0 0 f f f f t f s s 0 0 1184 "" _null_ _null_ _null_ _null_ _null_ now _null_ _null_ _null_ )); -DESCR("current transaction time"); -DATA(insert OID = 2648 ( statement_timestamp PGNSP PGUID 12 1 0 0 0 f f f f t f s r 0 0 1184 "" _null_ _null_ _null_ _null_ _null_ statement_timestamp _null_ _null_ _null_ )); -DESCR("current statement time"); -DATA(insert OID = 2649 ( clock_timestamp PGNSP PGUID 12 1 0 0 0 f f f f t f v s 0 0 1184 "" _null_ _null_ _null_ _null_ _null_ clock_timestamp _null_ _null_ _null_ )); -DESCR("current clock time"); +#ifdef CATALOG_VARLEN -/* OIDS 1300 - 1399 */ + /* all param types (NULL if IN only) */ + Oid proallargtypes[1] BKI_DEFAULT(_null_) BKI_LOOKUP(pg_type); -DATA(insert OID = 1300 ( positionsel PGNSP PGUID 12 1 0 0 0 f f f f t f s s 4 0 701 "2281 26 2281 23" _null_ _null_ _null_ _null_ _null_ positionsel _null_ _null_ _null_ )); -DESCR("restriction selectivity for position-comparison operators"); -DATA(insert OID = 1301 ( positionjoinsel PGNSP PGUID 12 1 0 0 0 f f f f t f s s 5 0 701 "2281 26 2281 21 2281" _null_ _null_ _null_ _null_ _null_ positionjoinsel _null_ _null_ _null_ )); -DESCR("join selectivity for position-comparison operators"); -DATA(insert OID = 1302 ( contsel PGNSP PGUID 12 1 0 0 0 f f f f t f s s 4 0 701 "2281 26 2281 23" _null_ _null_ _null_ _null_ _null_ contsel _null_ _null_ _null_ )); -DESCR("restriction selectivity for containment comparison operators"); -DATA(insert OID = 1303 ( contjoinsel PGNSP PGUID 12 1 0 0 0 f f f f t f s s 5 0 701 "2281 26 2281 21 2281" _null_ _null_ _null_ _null_ _null_ contjoinsel _null_ _null_ _null_ )); -DESCR("join selectivity for containment comparison operators"); + /* parameter modes (NULL if IN only) */ + char proargmodes[1] BKI_DEFAULT(_null_); -DATA(insert OID = 1304 ( overlaps PGNSP PGUID 12 1 0 0 0 f f f f f f i s 4 0 16 "1184 1184 1184 1184" _null_ _null_ _null_ _null_ _null_ overlaps_timestamp _null_ _null_ _null_ )); -DESCR("intervals overlap?"); -DATA(insert OID = 1305 ( overlaps PGNSP PGUID 14 1 0 0 0 f f f f f f s s 4 0 16 "1184 1186 1184 1186" _null_ _null_ _null_ _null_ _null_ "select ($1, ($1 + $2)) overlaps ($3, ($3 + $4))" _null_ _null_ _null_ )); -DESCR("intervals overlap?"); -DATA(insert OID = 1306 ( overlaps PGNSP PGUID 14 1 0 0 0 f f f f f f s s 4 0 16 "1184 1184 1184 1186" _null_ _null_ _null_ _null_ _null_ "select ($1, $2) overlaps ($3, ($3 + $4))" _null_ _null_ _null_ )); -DESCR("intervals overlap?"); -DATA(insert OID = 1307 ( overlaps PGNSP PGUID 14 1 0 0 0 f f f f f f s s 4 0 16 "1184 1186 1184 1184" _null_ _null_ _null_ _null_ _null_ "select ($1, ($1 + $2)) overlaps ($3, $4)" _null_ _null_ _null_ )); -DESCR("intervals overlap?"); + /* parameter names (NULL if no names) */ + text proargnames[1] BKI_DEFAULT(_null_); -DATA(insert OID = 1308 ( overlaps PGNSP PGUID 12 1 0 0 0 f f f f f f i s 4 0 16 "1083 1083 1083 1083" _null_ _null_ _null_ _null_ _null_ overlaps_time _null_ _null_ _null_ )); -DESCR("intervals overlap?"); -DATA(insert OID = 1309 ( overlaps PGNSP PGUID 14 1 0 0 0 f f f f f f i s 4 0 16 "1083 1186 1083 1186" _null_ _null_ _null_ _null_ _null_ "select ($1, ($1 + $2)) overlaps ($3, ($3 + $4))" _null_ _null_ _null_ )); -DESCR("intervals overlap?"); -DATA(insert OID = 1310 ( overlaps PGNSP PGUID 14 1 0 0 0 f f f f f f i s 4 0 16 "1083 1083 1083 1186" _null_ _null_ _null_ _null_ _null_ "select ($1, $2) overlaps ($3, ($3 + $4))" _null_ _null_ _null_ )); -DESCR("intervals overlap?"); -DATA(insert OID = 1311 ( overlaps PGNSP PGUID 14 1 0 0 0 f f f f f f i s 4 0 16 "1083 1186 1083 1083" _null_ _null_ _null_ _null_ _null_ "select ($1, ($1 + $2)) overlaps ($3, $4)" _null_ _null_ _null_ )); -DESCR("intervals overlap?"); + /* list of expression trees for argument defaults (NULL if none) */ + pg_node_tree proargdefaults BKI_DEFAULT(_null_); -DATA(insert OID = 1312 ( timestamp_in PGNSP PGUID 12 1 0 0 0 f f f f t f s s 3 0 1114 "2275 26 23" _null_ _null_ _null_ _null_ _null_ timestamp_in _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 1313 ( timestamp_out PGNSP PGUID 12 1 0 0 0 f f f f t f s s 1 0 2275 "1114" _null_ _null_ _null_ _null_ _null_ timestamp_out _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 2905 ( timestamptypmodin PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 23 "1263" _null_ _null_ _null_ _null_ _null_ timestamptypmodin _null_ _null_ _null_ )); -DESCR("I/O typmod"); -DATA(insert OID = 2906 ( timestamptypmodout PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 2275 "23" _null_ _null_ _null_ _null_ _null_ timestamptypmodout _null_ _null_ _null_ )); -DESCR("I/O typmod"); -DATA(insert OID = 1314 ( timestamptz_cmp PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 23 "1184 1184" _null_ _null_ _null_ _null_ _null_ timestamp_cmp _null_ _null_ _null_ )); -DESCR("less-equal-greater"); -DATA(insert OID = 1315 ( interval_cmp PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 23 "1186 1186" _null_ _null_ _null_ _null_ _null_ interval_cmp _null_ _null_ _null_ )); -DESCR("less-equal-greater"); -DATA(insert OID = 1316 ( time PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 1083 "1114" _null_ _null_ _null_ _null_ _null_ timestamp_time _null_ _null_ _null_ )); -DESCR("convert timestamp to time"); + /* types for which to apply transforms */ + Oid protrftypes[1] BKI_DEFAULT(_null_); -DATA(insert OID = 1317 ( length PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 23 "25" _null_ _null_ _null_ _null_ _null_ textlen _null_ _null_ _null_ )); -DESCR("length"); -DATA(insert OID = 1318 ( length PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 23 "1042" _null_ _null_ _null_ _null_ _null_ bpcharlen _null_ _null_ _null_ )); -DESCR("character length"); + /* procedure source text */ + text prosrc BKI_FORCE_NOT_NULL; -DATA(insert OID = 1319 ( xideqint4 PGNSP PGUID 12 1 0 0 0 f f f t t f i s 2 0 16 "28 23" _null_ _null_ _null_ _null_ _null_ xideq _null_ _null_ _null_ )); -DATA(insert OID = 3309 ( xidneqint4 PGNSP PGUID 12 1 0 0 0 f f f t t f i s 2 0 16 "28 23" _null_ _null_ _null_ _null_ _null_ xidneq _null_ _null_ _null_ )); + /* secondary procedure info (can be NULL) */ + text probin BKI_DEFAULT(_null_); -DATA(insert OID = 1326 ( interval_div PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 1186 "1186 701" _null_ _null_ _null_ _null_ _null_ interval_div _null_ _null_ _null_ )); + /* procedure-local GUC settings */ + text proconfig[1] BKI_DEFAULT(_null_); -DATA(insert OID = 1339 ( dlog10 PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 701 "701" _null_ _null_ _null_ _null_ _null_ dlog10 _null_ _null_ _null_ )); -DESCR("base 10 logarithm"); -DATA(insert OID = 1340 ( log PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 701 "701" _null_ _null_ _null_ _null_ _null_ dlog10 _null_ _null_ _null_ )); -DESCR("base 10 logarithm"); -DATA(insert OID = 1341 ( ln PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 701 "701" _null_ _null_ _null_ _null_ _null_ dlog1 _null_ _null_ _null_ )); -DESCR("natural logarithm"); -DATA(insert OID = 1342 ( round PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 701 "701" _null_ _null_ _null_ _null_ _null_ dround _null_ _null_ _null_ )); -DESCR("round to nearest integer"); -DATA(insert OID = 1343 ( trunc PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 701 "701" _null_ _null_ _null_ _null_ _null_ dtrunc _null_ _null_ _null_ )); -DESCR("truncate to integer"); -DATA(insert OID = 1344 ( sqrt PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 701 "701" _null_ _null_ _null_ _null_ _null_ dsqrt _null_ _null_ _null_ )); -DESCR("square root"); -DATA(insert OID = 1345 ( cbrt PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 701 "701" _null_ _null_ _null_ _null_ _null_ dcbrt _null_ _null_ _null_ )); -DESCR("cube root"); -DATA(insert OID = 1346 ( pow PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 701 "701 701" _null_ _null_ _null_ _null_ _null_ dpow _null_ _null_ _null_ )); -DESCR("exponentiation"); -DATA(insert OID = 1368 ( power PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 701 "701 701" _null_ _null_ _null_ _null_ _null_ dpow _null_ _null_ _null_ )); -DESCR("exponentiation"); -DATA(insert OID = 1347 ( exp PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 701 "701" _null_ _null_ _null_ _null_ _null_ dexp _null_ _null_ _null_ )); -DESCR("natural exponential (e^x)"); + /* access permissions */ + aclitem proacl[1] BKI_DEFAULT(_null_); +#endif +} FormData_pg_proc; -/* - * This form of obj_description is now deprecated, since it will fail if - * OIDs are not unique across system catalogs. Use the other form instead. +/* ---------------- + * Form_pg_proc corresponds to a pointer to a tuple with + * the format of pg_proc relation. + * ---------------- */ -DATA(insert OID = 1348 ( obj_description PGNSP PGUID 14 100 0 0 0 f f f f t f s s 1 0 25 "26" _null_ _null_ _null_ _null_ _null_ "select description from pg_catalog.pg_description where objoid = $1 and objsubid = 0" _null_ _null_ _null_ )); -DESCR("deprecated, use two-argument form instead"); -DATA(insert OID = 1349 ( oidvectortypes PGNSP PGUID 12 1 0 0 0 f f f f t f s s 1 0 25 "30" _null_ _null_ _null_ _null_ _null_ oidvectortypes _null_ _null_ _null_ )); -DESCR("print type names of oidvector field"); - - -DATA(insert OID = 1350 ( timetz_in PGNSP PGUID 12 1 0 0 0 f f f f t f s s 3 0 1266 "2275 26 23" _null_ _null_ _null_ _null_ _null_ timetz_in _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 1351 ( timetz_out PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 2275 "1266" _null_ _null_ _null_ _null_ _null_ timetz_out _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 2911 ( timetztypmodin PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 23 "1263" _null_ _null_ _null_ _null_ _null_ timetztypmodin _null_ _null_ _null_ )); -DESCR("I/O typmod"); -DATA(insert OID = 2912 ( timetztypmodout PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 2275 "23" _null_ _null_ _null_ _null_ _null_ timetztypmodout _null_ _null_ _null_ )); -DESCR("I/O typmod"); -DATA(insert OID = 1352 ( timetz_eq PGNSP PGUID 12 1 0 0 0 f f f t t f i s 2 0 16 "1266 1266" _null_ _null_ _null_ _null_ _null_ timetz_eq _null_ _null_ _null_ )); -DATA(insert OID = 1353 ( timetz_ne PGNSP PGUID 12 1 0 0 0 f f f t t f i s 2 0 16 "1266 1266" _null_ _null_ _null_ _null_ _null_ timetz_ne _null_ _null_ _null_ )); -DATA(insert OID = 1354 ( timetz_lt PGNSP PGUID 12 1 0 0 0 f f f t t f i s 2 0 16 "1266 1266" _null_ _null_ _null_ _null_ _null_ timetz_lt _null_ _null_ _null_ )); -DATA(insert OID = 1355 ( timetz_le PGNSP PGUID 12 1 0 0 0 f f f t t f i s 2 0 16 "1266 1266" _null_ _null_ _null_ _null_ _null_ timetz_le _null_ _null_ _null_ )); -DATA(insert OID = 1356 ( timetz_ge PGNSP PGUID 12 1 0 0 0 f f f t t f i s 2 0 16 "1266 1266" _null_ _null_ _null_ _null_ _null_ timetz_ge _null_ _null_ _null_ )); -DATA(insert OID = 1357 ( timetz_gt PGNSP PGUID 12 1 0 0 0 f f f t t f i s 2 0 16 "1266 1266" _null_ _null_ _null_ _null_ _null_ timetz_gt _null_ _null_ _null_ )); -DATA(insert OID = 1358 ( timetz_cmp PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 23 "1266 1266" _null_ _null_ _null_ _null_ _null_ timetz_cmp _null_ _null_ _null_ )); -DESCR("less-equal-greater"); -DATA(insert OID = 1359 ( timestamptz PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 1184 "1082 1266" _null_ _null_ _null_ _null_ _null_ datetimetz_timestamptz _null_ _null_ _null_ )); -DESCR("convert date and time with time zone to timestamp with time zone"); - -DATA(insert OID = 1364 ( time PGNSP PGUID 14 1 0 0 0 f f f f t f s s 1 0 1083 "702" _null_ _null_ _null_ _null_ _null_ "select cast(cast($1 as timestamp without time zone) as pg_catalog.time)" _null_ _null_ _null_ )); -DESCR("convert abstime to time"); - -DATA(insert OID = 1367 ( character_length PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 23 "1042" _null_ _null_ _null_ _null_ _null_ bpcharlen _null_ _null_ _null_ )); -DESCR("character length"); -DATA(insert OID = 1369 ( character_length PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 23 "25" _null_ _null_ _null_ _null_ _null_ textlen _null_ _null_ _null_ )); -DESCR("character length"); - -DATA(insert OID = 1370 ( interval PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 1186 "1083" _null_ _null_ _null_ _null_ _null_ time_interval _null_ _null_ _null_ )); -DESCR("convert time to interval"); -DATA(insert OID = 1372 ( char_length PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 23 "1042" _null_ _null_ _null_ _null_ _null_ bpcharlen _null_ _null_ _null_ )); -DESCR("character length"); -DATA(insert OID = 1374 ( octet_length PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 23 "25" _null_ _null_ _null_ _null_ _null_ textoctetlen _null_ _null_ _null_ )); -DESCR("octet length"); -DATA(insert OID = 1375 ( octet_length PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 23 "1042" _null_ _null_ _null_ _null_ _null_ bpcharoctetlen _null_ _null_ _null_ )); -DESCR("octet length"); - -DATA(insert OID = 1377 ( time_larger PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 1083 "1083 1083" _null_ _null_ _null_ _null_ _null_ time_larger _null_ _null_ _null_ )); -DESCR("larger of two"); -DATA(insert OID = 1378 ( time_smaller PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 1083 "1083 1083" _null_ _null_ _null_ _null_ _null_ time_smaller _null_ _null_ _null_ )); -DESCR("smaller of two"); -DATA(insert OID = 1379 ( timetz_larger PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 1266 "1266 1266" _null_ _null_ _null_ _null_ _null_ timetz_larger _null_ _null_ _null_ )); -DESCR("larger of two"); -DATA(insert OID = 1380 ( timetz_smaller PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 1266 "1266 1266" _null_ _null_ _null_ _null_ _null_ timetz_smaller _null_ _null_ _null_ )); -DESCR("smaller of two"); - -DATA(insert OID = 1381 ( char_length PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 23 "25" _null_ _null_ _null_ _null_ _null_ textlen _null_ _null_ _null_ )); -DESCR("character length"); - -DATA(insert OID = 1382 ( date_part PGNSP PGUID 14 1 0 0 0 f f f f t f s s 2 0 701 "25 702" _null_ _null_ _null_ _null_ _null_ "select pg_catalog.date_part($1, cast($2 as timestamp with time zone))" _null_ _null_ _null_ )); -DESCR("extract field from abstime"); -DATA(insert OID = 1383 ( date_part PGNSP PGUID 14 1 0 0 0 f f f f t f s s 2 0 701 "25 703" _null_ _null_ _null_ _null_ _null_ "select pg_catalog.date_part($1, cast($2 as pg_catalog.interval))" _null_ _null_ _null_ )); -DESCR("extract field from reltime"); -DATA(insert OID = 1384 ( date_part PGNSP PGUID 14 1 0 0 0 f f f f t f i s 2 0 701 "25 1082" _null_ _null_ _null_ _null_ _null_ "select pg_catalog.date_part($1, cast($2 as timestamp without time zone))" _null_ _null_ _null_ )); -DESCR("extract field from date"); -DATA(insert OID = 1385 ( date_part PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 701 "25 1083" _null_ _null_ _null_ _null_ _null_ time_part _null_ _null_ _null_ )); -DESCR("extract field from time"); -DATA(insert OID = 1386 ( age PGNSP PGUID 14 1 0 0 0 f f f f t f s s 1 0 1186 "1184" _null_ _null_ _null_ _null_ _null_ "select pg_catalog.age(cast(current_date as timestamp with time zone), $1)" _null_ _null_ _null_ )); -DESCR("date difference from today preserving months and years"); - -DATA(insert OID = 1388 ( timetz PGNSP PGUID 12 1 0 0 0 f f f f t f s s 1 0 1266 "1184" _null_ _null_ _null_ _null_ _null_ timestamptz_timetz _null_ _null_ _null_ )); -DESCR("convert timestamp with time zone to time with time zone"); - -DATA(insert OID = 1373 ( isfinite PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 16 "1082" _null_ _null_ _null_ _null_ _null_ date_finite _null_ _null_ _null_ )); -DESCR("finite date?"); -DATA(insert OID = 1389 ( isfinite PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 16 "1184" _null_ _null_ _null_ _null_ _null_ timestamp_finite _null_ _null_ _null_ )); -DESCR("finite timestamp?"); -DATA(insert OID = 1390 ( isfinite PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 16 "1186" _null_ _null_ _null_ _null_ _null_ interval_finite _null_ _null_ _null_ )); -DESCR("finite interval?"); - - -DATA(insert OID = 1376 ( factorial PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 1700 "20" _null_ _null_ _null_ _null_ _null_ numeric_fac _null_ _null_ _null_ )); -DESCR("factorial"); -DATA(insert OID = 1394 ( abs PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 700 "700" _null_ _null_ _null_ _null_ _null_ float4abs _null_ _null_ _null_ )); -DESCR("absolute value"); -DATA(insert OID = 1395 ( abs PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 701 "701" _null_ _null_ _null_ _null_ _null_ float8abs _null_ _null_ _null_ )); -DESCR("absolute value"); -DATA(insert OID = 1396 ( abs PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 20 "20" _null_ _null_ _null_ _null_ _null_ int8abs _null_ _null_ _null_ )); -DESCR("absolute value"); -DATA(insert OID = 1397 ( abs PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 23 "23" _null_ _null_ _null_ _null_ _null_ int4abs _null_ _null_ _null_ )); -DESCR("absolute value"); -DATA(insert OID = 1398 ( abs PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 21 "21" _null_ _null_ _null_ _null_ _null_ int2abs _null_ _null_ _null_ )); -DESCR("absolute value"); - -/* OIDS 1400 - 1499 */ - -DATA(insert OID = 1400 ( name PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 19 "1043" _null_ _null_ _null_ _null_ _null_ text_name _null_ _null_ _null_ )); -DESCR("convert varchar to name"); -DATA(insert OID = 1401 ( varchar PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 1043 "19" _null_ _null_ _null_ _null_ _null_ name_text _null_ _null_ _null_ )); -DESCR("convert name to varchar"); - -DATA(insert OID = 1402 ( current_schema PGNSP PGUID 12 1 0 0 0 f f f f t f s s 0 0 19 "" _null_ _null_ _null_ _null_ _null_ current_schema _null_ _null_ _null_ )); -DESCR("current schema name"); -DATA(insert OID = 1403 ( current_schemas PGNSP PGUID 12 1 0 0 0 f f f f t f s s 1 0 1003 "16" _null_ _null_ _null_ _null_ _null_ current_schemas _null_ _null_ _null_ )); -DESCR("current schema search list"); - -DATA(insert OID = 1404 ( overlay PGNSP PGUID 12 1 0 0 0 f f f f t f i s 4 0 25 "25 25 23 23" _null_ _null_ _null_ _null_ _null_ textoverlay _null_ _null_ _null_ )); -DESCR("substitute portion of string"); -DATA(insert OID = 1405 ( overlay PGNSP PGUID 12 1 0 0 0 f f f f t f i s 3 0 25 "25 25 23" _null_ _null_ _null_ _null_ _null_ textoverlay_no_len _null_ _null_ _null_ )); -DESCR("substitute portion of string"); - -DATA(insert OID = 1406 ( isvertical PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 16 "600 600" _null_ _null_ _null_ _null_ _null_ point_vert _null_ _null_ _null_ )); -DESCR("vertically aligned"); -DATA(insert OID = 1407 ( ishorizontal PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 16 "600 600" _null_ _null_ _null_ _null_ _null_ point_horiz _null_ _null_ _null_ )); -DESCR("horizontally aligned"); -DATA(insert OID = 1408 ( isparallel PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 16 "601 601" _null_ _null_ _null_ _null_ _null_ lseg_parallel _null_ _null_ _null_ )); -DESCR("parallel"); -DATA(insert OID = 1409 ( isperp PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 16 "601 601" _null_ _null_ _null_ _null_ _null_ lseg_perp _null_ _null_ _null_ )); -DESCR("perpendicular"); -DATA(insert OID = 1410 ( isvertical PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 16 "601" _null_ _null_ _null_ _null_ _null_ lseg_vertical _null_ _null_ _null_ )); -DESCR("vertical"); -DATA(insert OID = 1411 ( ishorizontal PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 16 "601" _null_ _null_ _null_ _null_ _null_ lseg_horizontal _null_ _null_ _null_ )); -DESCR("horizontal"); -DATA(insert OID = 1412 ( isparallel PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 16 "628 628" _null_ _null_ _null_ _null_ _null_ line_parallel _null_ _null_ _null_ )); -DESCR("parallel"); -DATA(insert OID = 1413 ( isperp PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 16 "628 628" _null_ _null_ _null_ _null_ _null_ line_perp _null_ _null_ _null_ )); -DESCR("perpendicular"); -DATA(insert OID = 1414 ( isvertical PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 16 "628" _null_ _null_ _null_ _null_ _null_ line_vertical _null_ _null_ _null_ )); -DESCR("vertical"); -DATA(insert OID = 1415 ( ishorizontal PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 16 "628" _null_ _null_ _null_ _null_ _null_ line_horizontal _null_ _null_ _null_ )); -DESCR("horizontal"); -DATA(insert OID = 1416 ( point PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 600 "718" _null_ _null_ _null_ _null_ _null_ circle_center _null_ _null_ _null_ )); -DESCR("center of"); - -DATA(insert OID = 1419 ( time PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 1083 "1186" _null_ _null_ _null_ _null_ _null_ interval_time _null_ _null_ _null_ )); -DESCR("convert interval to time"); - -DATA(insert OID = 1421 ( box PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 603 "600 600" _null_ _null_ _null_ _null_ _null_ points_box _null_ _null_ _null_ )); -DESCR("convert points to box"); -DATA(insert OID = 1422 ( box_add PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 603 "603 600" _null_ _null_ _null_ _null_ _null_ box_add _null_ _null_ _null_ )); -DATA(insert OID = 1423 ( box_sub PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 603 "603 600" _null_ _null_ _null_ _null_ _null_ box_sub _null_ _null_ _null_ )); -DATA(insert OID = 1424 ( box_mul PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 603 "603 600" _null_ _null_ _null_ _null_ _null_ box_mul _null_ _null_ _null_ )); -DATA(insert OID = 1425 ( box_div PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 603 "603 600" _null_ _null_ _null_ _null_ _null_ box_div _null_ _null_ _null_ )); -DATA(insert OID = 1426 ( path_contain_pt PGNSP PGUID 14 1 0 0 0 f f f f t f i s 2 0 16 "602 600" _null_ _null_ _null_ _null_ _null_ "select pg_catalog.on_ppath($2, $1)" _null_ _null_ _null_ )); -DATA(insert OID = 1428 ( poly_contain_pt PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 16 "604 600" _null_ _null_ _null_ _null_ _null_ poly_contain_pt _null_ _null_ _null_ )); -DATA(insert OID = 1429 ( pt_contained_poly PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 16 "600 604" _null_ _null_ _null_ _null_ _null_ pt_contained_poly _null_ _null_ _null_ )); +typedef FormData_pg_proc *Form_pg_proc; -DATA(insert OID = 1430 ( isclosed PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 16 "602" _null_ _null_ _null_ _null_ _null_ path_isclosed _null_ _null_ _null_ )); -DESCR("path closed?"); -DATA(insert OID = 1431 ( isopen PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 16 "602" _null_ _null_ _null_ _null_ _null_ path_isopen _null_ _null_ _null_ )); -DESCR("path open?"); -DATA(insert OID = 1432 ( path_npoints PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 23 "602" _null_ _null_ _null_ _null_ _null_ path_npoints _null_ _null_ _null_ )); +#ifdef EXPOSE_TO_CLIENT_CODE -/* pclose and popen might better be named close and open, but that crashes initdb. - * - thomas 97/04/20 +/* + * Symbolic values for prokind column */ - -DATA(insert OID = 1433 ( pclose PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 602 "602" _null_ _null_ _null_ _null_ _null_ path_close _null_ _null_ _null_ )); -DESCR("close path"); -DATA(insert OID = 1434 ( popen PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 602 "602" _null_ _null_ _null_ _null_ _null_ path_open _null_ _null_ _null_ )); -DESCR("open path"); -DATA(insert OID = 1435 ( path_add PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 602 "602 602" _null_ _null_ _null_ _null_ _null_ path_add _null_ _null_ _null_ )); -DATA(insert OID = 1436 ( path_add_pt PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 602 "602 600" _null_ _null_ _null_ _null_ _null_ path_add_pt _null_ _null_ _null_ )); -DATA(insert OID = 1437 ( path_sub_pt PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 602 "602 600" _null_ _null_ _null_ _null_ _null_ path_sub_pt _null_ _null_ _null_ )); -DATA(insert OID = 1438 ( path_mul_pt PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 602 "602 600" _null_ _null_ _null_ _null_ _null_ path_mul_pt _null_ _null_ _null_ )); -DATA(insert OID = 1439 ( path_div_pt PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 602 "602 600" _null_ _null_ _null_ _null_ _null_ path_div_pt _null_ _null_ _null_ )); - -DATA(insert OID = 1440 ( point PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 600 "701 701" _null_ _null_ _null_ _null_ _null_ construct_point _null_ _null_ _null_ )); -DESCR("convert x, y to point"); -DATA(insert OID = 1441 ( point_add PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 600 "600 600" _null_ _null_ _null_ _null_ _null_ point_add _null_ _null_ _null_ )); -DATA(insert OID = 1442 ( point_sub PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 600 "600 600" _null_ _null_ _null_ _null_ _null_ point_sub _null_ _null_ _null_ )); -DATA(insert OID = 1443 ( point_mul PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 600 "600 600" _null_ _null_ _null_ _null_ _null_ point_mul _null_ _null_ _null_ )); -DATA(insert OID = 1444 ( point_div PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 600 "600 600" _null_ _null_ _null_ _null_ _null_ point_div _null_ _null_ _null_ )); - -DATA(insert OID = 1445 ( poly_npoints PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 23 "604" _null_ _null_ _null_ _null_ _null_ poly_npoints _null_ _null_ _null_ )); -DATA(insert OID = 1446 ( box PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 603 "604" _null_ _null_ _null_ _null_ _null_ poly_box _null_ _null_ _null_ )); -DESCR("convert polygon to bounding box"); -DATA(insert OID = 1447 ( path PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 602 "604" _null_ _null_ _null_ _null_ _null_ poly_path _null_ _null_ _null_ )); -DESCR("convert polygon to path"); -DATA(insert OID = 1448 ( polygon PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 604 "603" _null_ _null_ _null_ _null_ _null_ box_poly _null_ _null_ _null_ )); -DESCR("convert box to polygon"); -DATA(insert OID = 1449 ( polygon PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 604 "602" _null_ _null_ _null_ _null_ _null_ path_poly _null_ _null_ _null_ )); -DESCR("convert path to polygon"); - -DATA(insert OID = 1450 ( circle_in PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 718 "2275" _null_ _null_ _null_ _null_ _null_ circle_in _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 1451 ( circle_out PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 2275 "718" _null_ _null_ _null_ _null_ _null_ circle_out _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 1452 ( circle_same PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 16 "718 718" _null_ _null_ _null_ _null_ _null_ circle_same _null_ _null_ _null_ )); -DATA(insert OID = 1453 ( circle_contain PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 16 "718 718" _null_ _null_ _null_ _null_ _null_ circle_contain _null_ _null_ _null_ )); -DATA(insert OID = 1454 ( circle_left PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 16 "718 718" _null_ _null_ _null_ _null_ _null_ circle_left _null_ _null_ _null_ )); -DATA(insert OID = 1455 ( circle_overleft PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 16 "718 718" _null_ _null_ _null_ _null_ _null_ circle_overleft _null_ _null_ _null_ )); -DATA(insert OID = 1456 ( circle_overright PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 16 "718 718" _null_ _null_ _null_ _null_ _null_ circle_overright _null_ _null_ _null_ )); -DATA(insert OID = 1457 ( circle_right PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 16 "718 718" _null_ _null_ _null_ _null_ _null_ circle_right _null_ _null_ _null_ )); -DATA(insert OID = 1458 ( circle_contained PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 16 "718 718" _null_ _null_ _null_ _null_ _null_ circle_contained _null_ _null_ _null_ )); -DATA(insert OID = 1459 ( circle_overlap PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 16 "718 718" _null_ _null_ _null_ _null_ _null_ circle_overlap _null_ _null_ _null_ )); -DATA(insert OID = 1460 ( circle_below PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 16 "718 718" _null_ _null_ _null_ _null_ _null_ circle_below _null_ _null_ _null_ )); -DATA(insert OID = 1461 ( circle_above PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 16 "718 718" _null_ _null_ _null_ _null_ _null_ circle_above _null_ _null_ _null_ )); -DATA(insert OID = 1462 ( circle_eq PGNSP PGUID 12 1 0 0 0 f f f t t f i s 2 0 16 "718 718" _null_ _null_ _null_ _null_ _null_ circle_eq _null_ _null_ _null_ )); -DATA(insert OID = 1463 ( circle_ne PGNSP PGUID 12 1 0 0 0 f f f t t f i s 2 0 16 "718 718" _null_ _null_ _null_ _null_ _null_ circle_ne _null_ _null_ _null_ )); -DATA(insert OID = 1464 ( circle_lt PGNSP PGUID 12 1 0 0 0 f f f t t f i s 2 0 16 "718 718" _null_ _null_ _null_ _null_ _null_ circle_lt _null_ _null_ _null_ )); -DATA(insert OID = 1465 ( circle_gt PGNSP PGUID 12 1 0 0 0 f f f t t f i s 2 0 16 "718 718" _null_ _null_ _null_ _null_ _null_ circle_gt _null_ _null_ _null_ )); -DATA(insert OID = 1466 ( circle_le PGNSP PGUID 12 1 0 0 0 f f f t t f i s 2 0 16 "718 718" _null_ _null_ _null_ _null_ _null_ circle_le _null_ _null_ _null_ )); -DATA(insert OID = 1467 ( circle_ge PGNSP PGUID 12 1 0 0 0 f f f t t f i s 2 0 16 "718 718" _null_ _null_ _null_ _null_ _null_ circle_ge _null_ _null_ _null_ )); -DATA(insert OID = 1468 ( area PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 701 "718" _null_ _null_ _null_ _null_ _null_ circle_area _null_ _null_ _null_ )); -DESCR("area of circle"); -DATA(insert OID = 1469 ( diameter PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 701 "718" _null_ _null_ _null_ _null_ _null_ circle_diameter _null_ _null_ _null_ )); -DESCR("diameter of circle"); -DATA(insert OID = 1470 ( radius PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 701 "718" _null_ _null_ _null_ _null_ _null_ circle_radius _null_ _null_ _null_ )); -DESCR("radius of circle"); -DATA(insert OID = 1471 ( circle_distance PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 701 "718 718" _null_ _null_ _null_ _null_ _null_ circle_distance _null_ _null_ _null_ )); -DATA(insert OID = 1472 ( circle_center PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 600 "718" _null_ _null_ _null_ _null_ _null_ circle_center _null_ _null_ _null_ )); -DATA(insert OID = 1473 ( circle PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 718 "600 701" _null_ _null_ _null_ _null_ _null_ cr_circle _null_ _null_ _null_ )); -DESCR("convert point and radius to circle"); -DATA(insert OID = 1474 ( circle PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 718 "604" _null_ _null_ _null_ _null_ _null_ poly_circle _null_ _null_ _null_ )); -DESCR("convert polygon to circle"); -DATA(insert OID = 1475 ( polygon PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 604 "23 718" _null_ _null_ _null_ _null_ _null_ circle_poly _null_ _null_ _null_ )); -DESCR("convert vertex count and circle to polygon"); -DATA(insert OID = 1476 ( dist_pc PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 701 "600 718" _null_ _null_ _null_ _null_ _null_ dist_pc _null_ _null_ _null_ )); -DATA(insert OID = 1477 ( circle_contain_pt PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 16 "718 600" _null_ _null_ _null_ _null_ _null_ circle_contain_pt _null_ _null_ _null_ )); -DATA(insert OID = 1478 ( pt_contained_circle PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 16 "600 718" _null_ _null_ _null_ _null_ _null_ pt_contained_circle _null_ _null_ _null_ )); -DATA(insert OID = 4091 ( box PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 603 "600" _null_ _null_ _null_ _null_ _null_ point_box _null_ _null_ _null_ )); -DESCR("convert point to empty box"); -DATA(insert OID = 1479 ( circle PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 718 "603" _null_ _null_ _null_ _null_ _null_ box_circle _null_ _null_ _null_ )); -DESCR("convert box to circle"); -DATA(insert OID = 1480 ( box PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 603 "718" _null_ _null_ _null_ _null_ _null_ circle_box _null_ _null_ _null_ )); -DESCR("convert circle to box"); -DATA(insert OID = 1481 ( tinterval PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 704 "702 702" _null_ _null_ _null_ _null_ _null_ mktinterval _null_ _null_ _null_ )); -DESCR("convert to tinterval"); - -DATA(insert OID = 1482 ( lseg_ne PGNSP PGUID 12 1 0 0 0 f f f t t f i s 2 0 16 "601 601" _null_ _null_ _null_ _null_ _null_ lseg_ne _null_ _null_ _null_ )); -DATA(insert OID = 1483 ( lseg_lt PGNSP PGUID 12 1 0 0 0 f f f t t f i s 2 0 16 "601 601" _null_ _null_ _null_ _null_ _null_ lseg_lt _null_ _null_ _null_ )); -DATA(insert OID = 1484 ( lseg_le PGNSP PGUID 12 1 0 0 0 f f f t t f i s 2 0 16 "601 601" _null_ _null_ _null_ _null_ _null_ lseg_le _null_ _null_ _null_ )); -DATA(insert OID = 1485 ( lseg_gt PGNSP PGUID 12 1 0 0 0 f f f t t f i s 2 0 16 "601 601" _null_ _null_ _null_ _null_ _null_ lseg_gt _null_ _null_ _null_ )); -DATA(insert OID = 1486 ( lseg_ge PGNSP PGUID 12 1 0 0 0 f f f t t f i s 2 0 16 "601 601" _null_ _null_ _null_ _null_ _null_ lseg_ge _null_ _null_ _null_ )); -DATA(insert OID = 1487 ( lseg_length PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 701 "601" _null_ _null_ _null_ _null_ _null_ lseg_length _null_ _null_ _null_ )); -DATA(insert OID = 1488 ( close_ls PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 600 "628 601" _null_ _null_ _null_ _null_ _null_ close_ls _null_ _null_ _null_ )); -DATA(insert OID = 1489 ( close_lseg PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 600 "601 601" _null_ _null_ _null_ _null_ _null_ close_lseg _null_ _null_ _null_ )); - -DATA(insert OID = 1490 ( line_in PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 628 "2275" _null_ _null_ _null_ _null_ _null_ line_in _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 1491 ( line_out PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 2275 "628" _null_ _null_ _null_ _null_ _null_ line_out _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 1492 ( line_eq PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 16 "628 628" _null_ _null_ _null_ _null_ _null_ line_eq _null_ _null_ _null_ )); -DATA(insert OID = 1493 ( line PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 628 "600 600" _null_ _null_ _null_ _null_ _null_ line_construct_pp _null_ _null_ _null_ )); -DESCR("construct line from points"); -DATA(insert OID = 1494 ( line_interpt PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 600 "628 628" _null_ _null_ _null_ _null_ _null_ line_interpt _null_ _null_ _null_ )); -DATA(insert OID = 1495 ( line_intersect PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 16 "628 628" _null_ _null_ _null_ _null_ _null_ line_intersect _null_ _null_ _null_ )); -DATA(insert OID = 1496 ( line_parallel PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 16 "628 628" _null_ _null_ _null_ _null_ _null_ line_parallel _null_ _null_ _null_ )); -DATA(insert OID = 1497 ( line_perp PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 16 "628 628" _null_ _null_ _null_ _null_ _null_ line_perp _null_ _null_ _null_ )); -DATA(insert OID = 1498 ( line_vertical PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 16 "628" _null_ _null_ _null_ _null_ _null_ line_vertical _null_ _null_ _null_ )); -DATA(insert OID = 1499 ( line_horizontal PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 16 "628" _null_ _null_ _null_ _null_ _null_ line_horizontal _null_ _null_ _null_ )); - -/* OIDS 1500 - 1599 */ - -DATA(insert OID = 1530 ( length PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 701 "601" _null_ _null_ _null_ _null_ _null_ lseg_length _null_ _null_ _null_ )); -DESCR("distance between endpoints"); -DATA(insert OID = 1531 ( length PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 701 "602" _null_ _null_ _null_ _null_ _null_ path_length _null_ _null_ _null_ )); -DESCR("sum of path segments"); - - -DATA(insert OID = 1532 ( point PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 600 "601" _null_ _null_ _null_ _null_ _null_ lseg_center _null_ _null_ _null_ )); -DESCR("center of"); -DATA(insert OID = 1533 ( point PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 600 "602" _null_ _null_ _null_ _null_ _null_ path_center _null_ _null_ _null_ )); -DESCR("center of"); -DATA(insert OID = 1534 ( point PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 600 "603" _null_ _null_ _null_ _null_ _null_ box_center _null_ _null_ _null_ )); -DESCR("center of"); -DATA(insert OID = 1540 ( point PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 600 "604" _null_ _null_ _null_ _null_ _null_ poly_center _null_ _null_ _null_ )); -DESCR("center of"); -DATA(insert OID = 1541 ( lseg PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 601 "603" _null_ _null_ _null_ _null_ _null_ box_diagonal _null_ _null_ _null_ )); -DESCR("diagonal of"); -DATA(insert OID = 1542 ( center PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 600 "603" _null_ _null_ _null_ _null_ _null_ box_center _null_ _null_ _null_ )); -DESCR("center of"); -DATA(insert OID = 1543 ( center PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 600 "718" _null_ _null_ _null_ _null_ _null_ circle_center _null_ _null_ _null_ )); -DESCR("center of"); -DATA(insert OID = 1544 ( polygon PGNSP PGUID 14 1 0 0 0 f f f f t f i s 1 0 604 "718" _null_ _null_ _null_ _null_ _null_ "select pg_catalog.polygon(12, $1)" _null_ _null_ _null_ )); -DESCR("convert circle to 12-vertex polygon"); -DATA(insert OID = 1545 ( npoints PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 23 "602" _null_ _null_ _null_ _null_ _null_ path_npoints _null_ _null_ _null_ )); -DESCR("number of points"); -DATA(insert OID = 1556 ( npoints PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 23 "604" _null_ _null_ _null_ _null_ _null_ poly_npoints _null_ _null_ _null_ )); -DESCR("number of points"); - -DATA(insert OID = 1564 ( bit_in PGNSP PGUID 12 1 0 0 0 f f f f t f i s 3 0 1560 "2275 26 23" _null_ _null_ _null_ _null_ _null_ bit_in _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 1565 ( bit_out PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 2275 "1560" _null_ _null_ _null_ _null_ _null_ bit_out _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 2919 ( bittypmodin PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 23 "1263" _null_ _null_ _null_ _null_ _null_ bittypmodin _null_ _null_ _null_ )); -DESCR("I/O typmod"); -DATA(insert OID = 2920 ( bittypmodout PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 2275 "23" _null_ _null_ _null_ _null_ _null_ bittypmodout _null_ _null_ _null_ )); -DESCR("I/O typmod"); - -DATA(insert OID = 1569 ( like PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 16 "25 25" _null_ _null_ _null_ _null_ _null_ textlike _null_ _null_ _null_ )); -DESCR("matches LIKE expression"); -DATA(insert OID = 1570 ( notlike PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 16 "25 25" _null_ _null_ _null_ _null_ _null_ textnlike _null_ _null_ _null_ )); -DESCR("does not match LIKE expression"); -DATA(insert OID = 1571 ( like PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 16 "19 25" _null_ _null_ _null_ _null_ _null_ namelike _null_ _null_ _null_ )); -DESCR("matches LIKE expression"); -DATA(insert OID = 1572 ( notlike PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 16 "19 25" _null_ _null_ _null_ _null_ _null_ namenlike _null_ _null_ _null_ )); -DESCR("does not match LIKE expression"); - - -/* SEQUENCE functions */ -DATA(insert OID = 1574 ( nextval PGNSP PGUID 12 1 0 0 0 f f f f t f v u 1 0 20 "2205" _null_ _null_ _null_ _null_ _null_ nextval_oid _null_ _null_ _null_ )); -DESCR("sequence next value"); -DATA(insert OID = 1575 ( currval PGNSP PGUID 12 1 0 0 0 f f f f t f v u 1 0 20 "2205" _null_ _null_ _null_ _null_ _null_ currval_oid _null_ _null_ _null_ )); -DESCR("sequence current value"); -DATA(insert OID = 1576 ( setval PGNSP PGUID 12 1 0 0 0 f f f f t f v u 2 0 20 "2205 20" _null_ _null_ _null_ _null_ _null_ setval_oid _null_ _null_ _null_ )); -DESCR("set sequence value"); -DATA(insert OID = 1765 ( setval PGNSP PGUID 12 1 0 0 0 f f f f t f v u 3 0 20 "2205 20 16" _null_ _null_ _null_ _null_ _null_ setval3_oid _null_ _null_ _null_ )); -DESCR("set sequence value and is_called status"); -DATA(insert OID = 3078 ( pg_sequence_parameters PGNSP PGUID 12 1 0 0 0 f f f f t f s s 1 0 2249 "26" "{26,20,20,20,20,16,20,26}" "{i,o,o,o,o,o,o,o}" "{sequence_oid,start_value,minimum_value,maximum_value,increment,cycle_option,cache_size,data_type}" _null_ _null_ pg_sequence_parameters _null_ _null_ _null_)); -DESCR("sequence parameters, for use by information schema"); -DATA(insert OID = 4032 ( pg_sequence_last_value PGNSP PGUID 12 1 0 0 0 f f f f t f v u 1 0 20 "2205" _null_ _null_ _null_ _null_ _null_ pg_sequence_last_value _null_ _null_ _null_ )); -DESCR("sequence last value"); - -DATA(insert OID = 1579 ( varbit_in PGNSP PGUID 12 1 0 0 0 f f f f t f i s 3 0 1562 "2275 26 23" _null_ _null_ _null_ _null_ _null_ varbit_in _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 1580 ( varbit_out PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 2275 "1562" _null_ _null_ _null_ _null_ _null_ varbit_out _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 2902 ( varbittypmodin PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 23 "1263" _null_ _null_ _null_ _null_ _null_ varbittypmodin _null_ _null_ _null_ )); -DESCR("I/O typmod"); -DATA(insert OID = 2921 ( varbittypmodout PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 2275 "23" _null_ _null_ _null_ _null_ _null_ varbittypmodout _null_ _null_ _null_ )); -DESCR("I/O typmod"); - -DATA(insert OID = 1581 ( biteq PGNSP PGUID 12 1 0 0 0 f f f t t f i s 2 0 16 "1560 1560" _null_ _null_ _null_ _null_ _null_ biteq _null_ _null_ _null_ )); -DATA(insert OID = 1582 ( bitne PGNSP PGUID 12 1 0 0 0 f f f t t f i s 2 0 16 "1560 1560" _null_ _null_ _null_ _null_ _null_ bitne _null_ _null_ _null_ )); -DATA(insert OID = 1592 ( bitge PGNSP PGUID 12 1 0 0 0 f f f t t f i s 2 0 16 "1560 1560" _null_ _null_ _null_ _null_ _null_ bitge _null_ _null_ _null_ )); -DATA(insert OID = 1593 ( bitgt PGNSP PGUID 12 1 0 0 0 f f f t t f i s 2 0 16 "1560 1560" _null_ _null_ _null_ _null_ _null_ bitgt _null_ _null_ _null_ )); -DATA(insert OID = 1594 ( bitle PGNSP PGUID 12 1 0 0 0 f f f t t f i s 2 0 16 "1560 1560" _null_ _null_ _null_ _null_ _null_ bitle _null_ _null_ _null_ )); -DATA(insert OID = 1595 ( bitlt PGNSP PGUID 12 1 0 0 0 f f f t t f i s 2 0 16 "1560 1560" _null_ _null_ _null_ _null_ _null_ bitlt _null_ _null_ _null_ )); -DATA(insert OID = 1596 ( bitcmp PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 23 "1560 1560" _null_ _null_ _null_ _null_ _null_ bitcmp _null_ _null_ _null_ )); -DESCR("less-equal-greater"); - -DATA(insert OID = 1598 ( random PGNSP PGUID 12 1 0 0 0 f f f f t f v r 0 0 701 "" _null_ _null_ _null_ _null_ _null_ drandom _null_ _null_ _null_ )); -DESCR("random value"); -DATA(insert OID = 1599 ( setseed PGNSP PGUID 12 1 0 0 0 f f f f t f v r 1 0 2278 "701" _null_ _null_ _null_ _null_ _null_ setseed _null_ _null_ _null_ )); -DESCR("set random seed"); - -/* OIDS 1600 - 1699 */ - -DATA(insert OID = 1600 ( asin PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 701 "701" _null_ _null_ _null_ _null_ _null_ dasin _null_ _null_ _null_ )); -DESCR("arcsine"); -DATA(insert OID = 1601 ( acos PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 701 "701" _null_ _null_ _null_ _null_ _null_ dacos _null_ _null_ _null_ )); -DESCR("arccosine"); -DATA(insert OID = 1602 ( atan PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 701 "701" _null_ _null_ _null_ _null_ _null_ datan _null_ _null_ _null_ )); -DESCR("arctangent"); -DATA(insert OID = 1603 ( atan2 PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 701 "701 701" _null_ _null_ _null_ _null_ _null_ datan2 _null_ _null_ _null_ )); -DESCR("arctangent, two arguments"); -DATA(insert OID = 1604 ( sin PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 701 "701" _null_ _null_ _null_ _null_ _null_ dsin _null_ _null_ _null_ )); -DESCR("sine"); -DATA(insert OID = 1605 ( cos PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 701 "701" _null_ _null_ _null_ _null_ _null_ dcos _null_ _null_ _null_ )); -DESCR("cosine"); -DATA(insert OID = 1606 ( tan PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 701 "701" _null_ _null_ _null_ _null_ _null_ dtan _null_ _null_ _null_ )); -DESCR("tangent"); -DATA(insert OID = 1607 ( cot PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 701 "701" _null_ _null_ _null_ _null_ _null_ dcot _null_ _null_ _null_ )); -DESCR("cotangent"); - -DATA(insert OID = 2731 ( asind PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 701 "701" _null_ _null_ _null_ _null_ _null_ dasind _null_ _null_ _null_ )); -DESCR("arcsine, degrees"); -DATA(insert OID = 2732 ( acosd PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 701 "701" _null_ _null_ _null_ _null_ _null_ dacosd _null_ _null_ _null_ )); -DESCR("arccosine, degrees"); -DATA(insert OID = 2733 ( atand PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 701 "701" _null_ _null_ _null_ _null_ _null_ datand _null_ _null_ _null_ )); -DESCR("arctangent, degrees"); -DATA(insert OID = 2734 ( atan2d PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 701 "701 701" _null_ _null_ _null_ _null_ _null_ datan2d _null_ _null_ _null_ )); -DESCR("arctangent, two arguments, degrees"); -DATA(insert OID = 2735 ( sind PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 701 "701" _null_ _null_ _null_ _null_ _null_ dsind _null_ _null_ _null_ )); -DESCR("sine, degrees"); -DATA(insert OID = 2736 ( cosd PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 701 "701" _null_ _null_ _null_ _null_ _null_ dcosd _null_ _null_ _null_ )); -DESCR("cosine, degrees"); -DATA(insert OID = 2737 ( tand PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 701 "701" _null_ _null_ _null_ _null_ _null_ dtand _null_ _null_ _null_ )); -DESCR("tangent, degrees"); -DATA(insert OID = 2738 ( cotd PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 701 "701" _null_ _null_ _null_ _null_ _null_ dcotd _null_ _null_ _null_ )); -DESCR("cotangent, degrees"); - -DATA(insert OID = 1608 ( degrees PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 701 "701" _null_ _null_ _null_ _null_ _null_ degrees _null_ _null_ _null_ )); -DESCR("radians to degrees"); -DATA(insert OID = 1609 ( radians PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 701 "701" _null_ _null_ _null_ _null_ _null_ radians _null_ _null_ _null_ )); -DESCR("degrees to radians"); -DATA(insert OID = 1610 ( pi PGNSP PGUID 12 1 0 0 0 f f f f t f i s 0 0 701 "" _null_ _null_ _null_ _null_ _null_ dpi _null_ _null_ _null_ )); -DESCR("PI"); - -DATA(insert OID = 1618 ( interval_mul PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 1186 "1186 701" _null_ _null_ _null_ _null_ _null_ interval_mul _null_ _null_ _null_ )); - -DATA(insert OID = 1620 ( ascii PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 23 "25" _null_ _null_ _null_ _null_ _null_ ascii _null_ _null_ _null_ )); -DESCR("convert first char to int4"); -DATA(insert OID = 1621 ( chr PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 25 "23" _null_ _null_ _null_ _null_ _null_ chr _null_ _null_ _null_ )); -DESCR("convert int4 to char"); -DATA(insert OID = 1622 ( repeat PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 25 "25 23" _null_ _null_ _null_ _null_ _null_ repeat _null_ _null_ _null_ )); -DESCR("replicate string n times"); - -DATA(insert OID = 1623 ( similar_escape PGNSP PGUID 12 1 0 0 0 f f f f f f i s 2 0 25 "25 25" _null_ _null_ _null_ _null_ _null_ similar_escape _null_ _null_ _null_ )); -DESCR("convert SQL99 regexp pattern to POSIX style"); - -DATA(insert OID = 1624 ( mul_d_interval PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 1186 "701 1186" _null_ _null_ _null_ _null_ _null_ mul_d_interval _null_ _null_ _null_ )); - -DATA(insert OID = 1631 ( bpcharlike PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 16 "1042 25" _null_ _null_ _null_ _null_ _null_ textlike _null_ _null_ _null_ )); -DATA(insert OID = 1632 ( bpcharnlike PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 16 "1042 25" _null_ _null_ _null_ _null_ _null_ textnlike _null_ _null_ _null_ )); - -DATA(insert OID = 1633 ( texticlike PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 16 "25 25" _null_ _null_ _null_ _null_ _null_ texticlike _null_ _null_ _null_ )); -DATA(insert OID = 1634 ( texticnlike PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 16 "25 25" _null_ _null_ _null_ _null_ _null_ texticnlike _null_ _null_ _null_ )); -DATA(insert OID = 1635 ( nameiclike PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 16 "19 25" _null_ _null_ _null_ _null_ _null_ nameiclike _null_ _null_ _null_ )); -DATA(insert OID = 1636 ( nameicnlike PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 16 "19 25" _null_ _null_ _null_ _null_ _null_ nameicnlike _null_ _null_ _null_ )); -DATA(insert OID = 1637 ( like_escape PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 25 "25 25" _null_ _null_ _null_ _null_ _null_ like_escape _null_ _null_ _null_ )); -DESCR("convert LIKE pattern to use backslash escapes"); - -DATA(insert OID = 1656 ( bpcharicregexeq PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 16 "1042 25" _null_ _null_ _null_ _null_ _null_ texticregexeq _null_ _null_ _null_ )); -DATA(insert OID = 1657 ( bpcharicregexne PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 16 "1042 25" _null_ _null_ _null_ _null_ _null_ texticregexne _null_ _null_ _null_ )); -DATA(insert OID = 1658 ( bpcharregexeq PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 16 "1042 25" _null_ _null_ _null_ _null_ _null_ textregexeq _null_ _null_ _null_ )); -DATA(insert OID = 1659 ( bpcharregexne PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 16 "1042 25" _null_ _null_ _null_ _null_ _null_ textregexne _null_ _null_ _null_ )); -DATA(insert OID = 1660 ( bpchariclike PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 16 "1042 25" _null_ _null_ _null_ _null_ _null_ texticlike _null_ _null_ _null_ )); -DATA(insert OID = 1661 ( bpcharicnlike PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 16 "1042 25" _null_ _null_ _null_ _null_ _null_ texticnlike _null_ _null_ _null_ )); - -/* Oracle Compatibility Related Functions - By Edmund Mergl */ -DATA(insert OID = 868 ( strpos PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 23 "25 25" _null_ _null_ _null_ _null_ _null_ textpos _null_ _null_ _null_ )); -DESCR("position of substring"); -DATA(insert OID = 870 ( lower PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 25 "25" _null_ _null_ _null_ _null_ _null_ lower _null_ _null_ _null_ )); -DESCR("lowercase"); -DATA(insert OID = 871 ( upper PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 25 "25" _null_ _null_ _null_ _null_ _null_ upper _null_ _null_ _null_ )); -DESCR("uppercase"); -DATA(insert OID = 872 ( initcap PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 25 "25" _null_ _null_ _null_ _null_ _null_ initcap _null_ _null_ _null_ )); -DESCR("capitalize each word"); -DATA(insert OID = 873 ( lpad PGNSP PGUID 12 1 0 0 0 f f f f t f i s 3 0 25 "25 23 25" _null_ _null_ _null_ _null_ _null_ lpad _null_ _null_ _null_ )); -DESCR("left-pad string to length"); -DATA(insert OID = 874 ( rpad PGNSP PGUID 12 1 0 0 0 f f f f t f i s 3 0 25 "25 23 25" _null_ _null_ _null_ _null_ _null_ rpad _null_ _null_ _null_ )); -DESCR("right-pad string to length"); -DATA(insert OID = 875 ( ltrim PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 25 "25 25" _null_ _null_ _null_ _null_ _null_ ltrim _null_ _null_ _null_ )); -DESCR("trim selected characters from left end of string"); -DATA(insert OID = 876 ( rtrim PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 25 "25 25" _null_ _null_ _null_ _null_ _null_ rtrim _null_ _null_ _null_ )); -DESCR("trim selected characters from right end of string"); -DATA(insert OID = 877 ( substr PGNSP PGUID 12 1 0 0 0 f f f f t f i s 3 0 25 "25 23 23" _null_ _null_ _null_ _null_ _null_ text_substr _null_ _null_ _null_ )); -DESCR("extract portion of string"); -DATA(insert OID = 878 ( translate PGNSP PGUID 12 1 0 0 0 f f f f t f i s 3 0 25 "25 25 25" _null_ _null_ _null_ _null_ _null_ translate _null_ _null_ _null_ )); -DESCR("map a set of characters appearing in string"); -DATA(insert OID = 879 ( lpad PGNSP PGUID 14 1 0 0 0 f f f f t f i s 2 0 25 "25 23" _null_ _null_ _null_ _null_ _null_ "select pg_catalog.lpad($1, $2, '' '')" _null_ _null_ _null_ )); -DESCR("left-pad string to length"); -DATA(insert OID = 880 ( rpad PGNSP PGUID 14 1 0 0 0 f f f f t f i s 2 0 25 "25 23" _null_ _null_ _null_ _null_ _null_ "select pg_catalog.rpad($1, $2, '' '')" _null_ _null_ _null_ )); -DESCR("right-pad string to length"); -DATA(insert OID = 881 ( ltrim PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 25 "25" _null_ _null_ _null_ _null_ _null_ ltrim1 _null_ _null_ _null_ )); -DESCR("trim spaces from left end of string"); -DATA(insert OID = 882 ( rtrim PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 25 "25" _null_ _null_ _null_ _null_ _null_ rtrim1 _null_ _null_ _null_ )); -DESCR("trim spaces from right end of string"); -DATA(insert OID = 883 ( substr PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 25 "25 23" _null_ _null_ _null_ _null_ _null_ text_substr_no_len _null_ _null_ _null_ )); -DESCR("extract portion of string"); -DATA(insert OID = 884 ( btrim PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 25 "25 25" _null_ _null_ _null_ _null_ _null_ btrim _null_ _null_ _null_ )); -DESCR("trim selected characters from both ends of string"); -DATA(insert OID = 885 ( btrim PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 25 "25" _null_ _null_ _null_ _null_ _null_ btrim1 _null_ _null_ _null_ )); -DESCR("trim spaces from both ends of string"); - -DATA(insert OID = 936 ( substring PGNSP PGUID 12 1 0 0 0 f f f f t f i s 3 0 25 "25 23 23" _null_ _null_ _null_ _null_ _null_ text_substr _null_ _null_ _null_ )); -DESCR("extract portion of string"); -DATA(insert OID = 937 ( substring PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 25 "25 23" _null_ _null_ _null_ _null_ _null_ text_substr_no_len _null_ _null_ _null_ )); -DESCR("extract portion of string"); -DATA(insert OID = 2087 ( replace PGNSP PGUID 12 1 0 0 0 f f f f t f i s 3 0 25 "25 25 25" _null_ _null_ _null_ _null_ _null_ replace_text _null_ _null_ _null_ )); -DESCR("replace all occurrences in string of old_substr with new_substr"); -DATA(insert OID = 2284 ( regexp_replace PGNSP PGUID 12 1 0 0 0 f f f f t f i s 3 0 25 "25 25 25" _null_ _null_ _null_ _null_ _null_ textregexreplace_noopt _null_ _null_ _null_ )); -DESCR("replace text using regexp"); -DATA(insert OID = 2285 ( regexp_replace PGNSP PGUID 12 1 0 0 0 f f f f t f i s 4 0 25 "25 25 25 25" _null_ _null_ _null_ _null_ _null_ textregexreplace _null_ _null_ _null_ )); -DESCR("replace text using regexp"); -DATA(insert OID = 3396 ( regexp_match PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 1009 "25 25" _null_ _null_ _null_ _null_ _null_ regexp_match_no_flags _null_ _null_ _null_ )); -DESCR("find first match for regexp"); -DATA(insert OID = 3397 ( regexp_match PGNSP PGUID 12 1 0 0 0 f f f f t f i s 3 0 1009 "25 25 25" _null_ _null_ _null_ _null_ _null_ regexp_match _null_ _null_ _null_ )); -DESCR("find first match for regexp"); -DATA(insert OID = 2763 ( regexp_matches PGNSP PGUID 12 1 1 0 0 f f f f t t i s 2 0 1009 "25 25" _null_ _null_ _null_ _null_ _null_ regexp_matches_no_flags _null_ _null_ _null_ )); -DESCR("find match(es) for regexp"); -DATA(insert OID = 2764 ( regexp_matches PGNSP PGUID 12 1 10 0 0 f f f f t t i s 3 0 1009 "25 25 25" _null_ _null_ _null_ _null_ _null_ regexp_matches _null_ _null_ _null_ )); -DESCR("find match(es) for regexp"); -DATA(insert OID = 2088 ( split_part PGNSP PGUID 12 1 0 0 0 f f f f t f i s 3 0 25 "25 25 23" _null_ _null_ _null_ _null_ _null_ split_text _null_ _null_ _null_ )); -DESCR("split string by field_sep and return field_num"); -DATA(insert OID = 2765 ( regexp_split_to_table PGNSP PGUID 12 1 1000 0 0 f f f f t t i s 2 0 25 "25 25" _null_ _null_ _null_ _null_ _null_ regexp_split_to_table_no_flags _null_ _null_ _null_ )); -DESCR("split string by pattern"); -DATA(insert OID = 2766 ( regexp_split_to_table PGNSP PGUID 12 1 1000 0 0 f f f f t t i s 3 0 25 "25 25 25" _null_ _null_ _null_ _null_ _null_ regexp_split_to_table _null_ _null_ _null_ )); -DESCR("split string by pattern"); -DATA(insert OID = 2767 ( regexp_split_to_array PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 1009 "25 25" _null_ _null_ _null_ _null_ _null_ regexp_split_to_array_no_flags _null_ _null_ _null_ )); -DESCR("split string by pattern"); -DATA(insert OID = 2768 ( regexp_split_to_array PGNSP PGUID 12 1 0 0 0 f f f f t f i s 3 0 1009 "25 25 25" _null_ _null_ _null_ _null_ _null_ regexp_split_to_array _null_ _null_ _null_ )); -DESCR("split string by pattern"); -DATA(insert OID = 2089 ( to_hex PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 25 "23" _null_ _null_ _null_ _null_ _null_ to_hex32 _null_ _null_ _null_ )); -DESCR("convert int4 number to hex"); -DATA(insert OID = 2090 ( to_hex PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 25 "20" _null_ _null_ _null_ _null_ _null_ to_hex64 _null_ _null_ _null_ )); -DESCR("convert int8 number to hex"); - -/* for character set encoding support */ - -/* return database encoding name */ -DATA(insert OID = 1039 ( getdatabaseencoding PGNSP PGUID 12 1 0 0 0 f f f f t f s s 0 0 19 "" _null_ _null_ _null_ _null_ _null_ getdatabaseencoding _null_ _null_ _null_ )); -DESCR("encoding name of current database"); - -/* return client encoding name i.e. session encoding */ -DATA(insert OID = 810 ( pg_client_encoding PGNSP PGUID 12 1 0 0 0 f f f f t f s s 0 0 19 "" _null_ _null_ _null_ _null_ _null_ pg_client_encoding _null_ _null_ _null_ )); -DESCR("encoding name of current database"); - -DATA(insert OID = 1713 ( length PGNSP PGUID 12 1 0 0 0 f f f f t f s s 2 0 23 "17 19" _null_ _null_ _null_ _null_ _null_ length_in_encoding _null_ _null_ _null_ )); -DESCR("length of string in specified encoding"); - -DATA(insert OID = 1714 ( convert_from PGNSP PGUID 12 1 0 0 0 f f f f t f s s 2 0 25 "17 19" _null_ _null_ _null_ _null_ _null_ pg_convert_from _null_ _null_ _null_ )); -DESCR("convert string with specified source encoding name"); - -DATA(insert OID = 1717 ( convert_to PGNSP PGUID 12 1 0 0 0 f f f f t f s s 2 0 17 "25 19" _null_ _null_ _null_ _null_ _null_ pg_convert_to _null_ _null_ _null_ )); -DESCR("convert string with specified destination encoding name"); - -DATA(insert OID = 1813 ( convert PGNSP PGUID 12 1 0 0 0 f f f f t f s s 3 0 17 "17 19 19" _null_ _null_ _null_ _null_ _null_ pg_convert _null_ _null_ _null_ )); -DESCR("convert string with specified encoding names"); - -DATA(insert OID = 1264 ( pg_char_to_encoding PGNSP PGUID 12 1 0 0 0 f f f f t f s s 1 0 23 "19" _null_ _null_ _null_ _null_ _null_ PG_char_to_encoding _null_ _null_ _null_ )); -DESCR("convert encoding name to encoding id"); - -DATA(insert OID = 1597 ( pg_encoding_to_char PGNSP PGUID 12 1 0 0 0 f f f f t f s s 1 0 19 "23" _null_ _null_ _null_ _null_ _null_ PG_encoding_to_char _null_ _null_ _null_ )); -DESCR("convert encoding id to encoding name"); - -DATA(insert OID = 2319 ( pg_encoding_max_length PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 23 "23" _null_ _null_ _null_ _null_ _null_ pg_encoding_max_length_sql _null_ _null_ _null_ )); -DESCR("maximum octet length of a character in given encoding"); - -DATA(insert OID = 1638 ( oidgt PGNSP PGUID 12 1 0 0 0 f f f t t f i s 2 0 16 "26 26" _null_ _null_ _null_ _null_ _null_ oidgt _null_ _null_ _null_ )); -DATA(insert OID = 1639 ( oidge PGNSP PGUID 12 1 0 0 0 f f f t t f i s 2 0 16 "26 26" _null_ _null_ _null_ _null_ _null_ oidge _null_ _null_ _null_ )); - -/* System-view support functions */ -DATA(insert OID = 1573 ( pg_get_ruledef PGNSP PGUID 12 1 0 0 0 f f f f t f s s 1 0 25 "26" _null_ _null_ _null_ _null_ _null_ pg_get_ruledef _null_ _null_ _null_ )); -DESCR("source text of a rule"); -DATA(insert OID = 1640 ( pg_get_viewdef PGNSP PGUID 12 1 0 0 0 f f f f t f s r 1 0 25 "25" _null_ _null_ _null_ _null_ _null_ pg_get_viewdef_name _null_ _null_ _null_ )); -DESCR("select statement of a view"); -DATA(insert OID = 1641 ( pg_get_viewdef PGNSP PGUID 12 1 0 0 0 f f f f t f s r 1 0 25 "26" _null_ _null_ _null_ _null_ _null_ pg_get_viewdef _null_ _null_ _null_ )); -DESCR("select statement of a view"); -DATA(insert OID = 1642 ( pg_get_userbyid PGNSP PGUID 12 1 0 0 0 f f f f t f s s 1 0 19 "26" _null_ _null_ _null_ _null_ _null_ pg_get_userbyid _null_ _null_ _null_ )); -DESCR("role name by OID (with fallback)"); -DATA(insert OID = 1643 ( pg_get_indexdef PGNSP PGUID 12 1 0 0 0 f f f f t f s s 1 0 25 "26" _null_ _null_ _null_ _null_ _null_ pg_get_indexdef _null_ _null_ _null_ )); -DESCR("index description"); -DATA(insert OID = 3415 ( pg_get_statisticsobjdef PGNSP PGUID 12 1 0 0 0 f f f f t f s s 1 0 25 "26" _null_ _null_ _null_ _null_ _null_ pg_get_statisticsobjdef _null_ _null_ _null_ )); -DESCR("extended statistics object description"); -DATA(insert OID = 3352 ( pg_get_partkeydef PGNSP PGUID 12 1 0 0 0 f f f f t f s s 1 0 25 "26" _null_ _null_ _null_ _null_ _null_ pg_get_partkeydef _null_ _null_ _null_ )); -DESCR("partition key description"); -DATA(insert OID = 3408 ( pg_get_partition_constraintdef PGNSP PGUID 12 1 0 0 0 f f f f t f s s 1 0 25 "26" _null_ _null_ _null_ _null_ _null_ pg_get_partition_constraintdef _null_ _null_ _null_ )); -DESCR("partition constraint description"); -DATA(insert OID = 1662 ( pg_get_triggerdef PGNSP PGUID 12 1 0 0 0 f f f f t f s s 1 0 25 "26" _null_ _null_ _null_ _null_ _null_ pg_get_triggerdef _null_ _null_ _null_ )); -DESCR("trigger description"); -DATA(insert OID = 1387 ( pg_get_constraintdef PGNSP PGUID 12 1 0 0 0 f f f f t f s s 1 0 25 "26" _null_ _null_ _null_ _null_ _null_ pg_get_constraintdef _null_ _null_ _null_ )); -DESCR("constraint description"); -DATA(insert OID = 1716 ( pg_get_expr PGNSP PGUID 12 1 0 0 0 f f f f t f s s 2 0 25 "194 26" _null_ _null_ _null_ _null_ _null_ pg_get_expr _null_ _null_ _null_ )); -DESCR("deparse an encoded expression"); -DATA(insert OID = 1665 ( pg_get_serial_sequence PGNSP PGUID 12 1 0 0 0 f f f f t f s s 2 0 25 "25 25" _null_ _null_ _null_ _null_ _null_ pg_get_serial_sequence _null_ _null_ _null_ )); -DESCR("name of sequence for a serial column"); -DATA(insert OID = 2098 ( pg_get_functiondef PGNSP PGUID 12 1 0 0 0 f f f f t f s s 1 0 25 "26" _null_ _null_ _null_ _null_ _null_ pg_get_functiondef _null_ _null_ _null_ )); -DESCR("definition of a function"); -DATA(insert OID = 2162 ( pg_get_function_arguments PGNSP PGUID 12 1 0 0 0 f f f f t f s s 1 0 25 "26" _null_ _null_ _null_ _null_ _null_ pg_get_function_arguments _null_ _null_ _null_ )); -DESCR("argument list of a function"); -DATA(insert OID = 2232 ( pg_get_function_identity_arguments PGNSP PGUID 12 1 0 0 0 f f f f t f s s 1 0 25 "26" _null_ _null_ _null_ _null_ _null_ pg_get_function_identity_arguments _null_ _null_ _null_ )); -DESCR("identity argument list of a function"); -DATA(insert OID = 2165 ( pg_get_function_result PGNSP PGUID 12 1 0 0 0 f f f f t f s s 1 0 25 "26" _null_ _null_ _null_ _null_ _null_ pg_get_function_result _null_ _null_ _null_ )); -DESCR("result type of a function"); -DATA(insert OID = 3808 ( pg_get_function_arg_default PGNSP PGUID 12 1 0 0 0 f f f f t f s s 2 0 25 "26 23" _null_ _null_ _null_ _null_ _null_ pg_get_function_arg_default _null_ _null_ _null_ )); -DESCR("function argument default"); - -DATA(insert OID = 1686 ( pg_get_keywords PGNSP PGUID 12 10 400 0 0 f f f f t t s s 0 0 2249 "" "{25,18,25}" "{o,o,o}" "{word,catcode,catdesc}" _null_ _null_ pg_get_keywords _null_ _null_ _null_ )); -DESCR("list of SQL keywords"); - -DATA(insert OID = 2289 ( pg_options_to_table PGNSP PGUID 12 1 3 0 0 f f f f t t s s 1 0 2249 "1009" "{1009,25,25}" "{i,o,o}" "{options_array,option_name,option_value}" _null_ _null_ pg_options_to_table _null_ _null_ _null_ )); -DESCR("convert generic options array to name/value table"); - -DATA(insert OID = 1619 ( pg_typeof PGNSP PGUID 12 1 0 0 0 f f f f f f s s 1 0 2206 "2276" _null_ _null_ _null_ _null_ _null_ pg_typeof _null_ _null_ _null_ )); -DESCR("type of the argument"); -DATA(insert OID = 3162 ( pg_collation_for PGNSP PGUID 12 1 0 0 0 f f f f f f s s 1 0 25 "2276" _null_ _null_ _null_ _null_ _null_ pg_collation_for _null_ _null_ _null_ )); -DESCR("collation of the argument; implementation of the COLLATION FOR expression"); - -DATA(insert OID = 3842 ( pg_relation_is_updatable PGNSP PGUID 12 10 0 0 0 f f f f t f s s 2 0 23 "2205 16" _null_ _null_ _null_ _null_ _null_ pg_relation_is_updatable _null_ _null_ _null_ )); -DESCR("is a relation insertable/updatable/deletable"); -DATA(insert OID = 3843 ( pg_column_is_updatable PGNSP PGUID 12 10 0 0 0 f f f f t f s s 3 0 16 "2205 21 16" _null_ _null_ _null_ _null_ _null_ pg_column_is_updatable _null_ _null_ _null_ )); -DESCR("is a column updatable"); - -DATA(insert OID = 6120 ( pg_get_replica_identity_index PGNSP PGUID 12 10 0 0 0 f f f f t f s s 1 0 2205 "2205" _null_ _null_ _null_ _null_ _null_ pg_get_replica_identity_index _null_ _null_ _null_ )); -DESCR("oid of replica identity index if any"); - -/* Deferrable unique constraint trigger */ -DATA(insert OID = 1250 ( unique_key_recheck PGNSP PGUID 12 1 0 0 0 f f f f t f v s 0 0 2279 "" _null_ _null_ _null_ _null_ _null_ unique_key_recheck _null_ _null_ _null_ )); -DESCR("deferred UNIQUE constraint check"); - -/* Generic referential integrity constraint triggers */ -DATA(insert OID = 1644 ( RI_FKey_check_ins PGNSP PGUID 12 1 0 0 0 f f f f t f v s 0 0 2279 "" _null_ _null_ _null_ _null_ _null_ RI_FKey_check_ins _null_ _null_ _null_ )); -DESCR("referential integrity FOREIGN KEY ... REFERENCES"); -DATA(insert OID = 1645 ( RI_FKey_check_upd PGNSP PGUID 12 1 0 0 0 f f f f t f v s 0 0 2279 "" _null_ _null_ _null_ _null_ _null_ RI_FKey_check_upd _null_ _null_ _null_ )); -DESCR("referential integrity FOREIGN KEY ... REFERENCES"); -DATA(insert OID = 1646 ( RI_FKey_cascade_del PGNSP PGUID 12 1 0 0 0 f f f f t f v s 0 0 2279 "" _null_ _null_ _null_ _null_ _null_ RI_FKey_cascade_del _null_ _null_ _null_ )); -DESCR("referential integrity ON DELETE CASCADE"); -DATA(insert OID = 1647 ( RI_FKey_cascade_upd PGNSP PGUID 12 1 0 0 0 f f f f t f v s 0 0 2279 "" _null_ _null_ _null_ _null_ _null_ RI_FKey_cascade_upd _null_ _null_ _null_ )); -DESCR("referential integrity ON UPDATE CASCADE"); -DATA(insert OID = 1648 ( RI_FKey_restrict_del PGNSP PGUID 12 1 0 0 0 f f f f t f v s 0 0 2279 "" _null_ _null_ _null_ _null_ _null_ RI_FKey_restrict_del _null_ _null_ _null_ )); -DESCR("referential integrity ON DELETE RESTRICT"); -DATA(insert OID = 1649 ( RI_FKey_restrict_upd PGNSP PGUID 12 1 0 0 0 f f f f t f v s 0 0 2279 "" _null_ _null_ _null_ _null_ _null_ RI_FKey_restrict_upd _null_ _null_ _null_ )); -DESCR("referential integrity ON UPDATE RESTRICT"); -DATA(insert OID = 1650 ( RI_FKey_setnull_del PGNSP PGUID 12 1 0 0 0 f f f f t f v s 0 0 2279 "" _null_ _null_ _null_ _null_ _null_ RI_FKey_setnull_del _null_ _null_ _null_ )); -DESCR("referential integrity ON DELETE SET NULL"); -DATA(insert OID = 1651 ( RI_FKey_setnull_upd PGNSP PGUID 12 1 0 0 0 f f f f t f v s 0 0 2279 "" _null_ _null_ _null_ _null_ _null_ RI_FKey_setnull_upd _null_ _null_ _null_ )); -DESCR("referential integrity ON UPDATE SET NULL"); -DATA(insert OID = 1652 ( RI_FKey_setdefault_del PGNSP PGUID 12 1 0 0 0 f f f f t f v s 0 0 2279 "" _null_ _null_ _null_ _null_ _null_ RI_FKey_setdefault_del _null_ _null_ _null_ )); -DESCR("referential integrity ON DELETE SET DEFAULT"); -DATA(insert OID = 1653 ( RI_FKey_setdefault_upd PGNSP PGUID 12 1 0 0 0 f f f f t f v s 0 0 2279 "" _null_ _null_ _null_ _null_ _null_ RI_FKey_setdefault_upd _null_ _null_ _null_ )); -DESCR("referential integrity ON UPDATE SET DEFAULT"); -DATA(insert OID = 1654 ( RI_FKey_noaction_del PGNSP PGUID 12 1 0 0 0 f f f f t f v s 0 0 2279 "" _null_ _null_ _null_ _null_ _null_ RI_FKey_noaction_del _null_ _null_ _null_ )); -DESCR("referential integrity ON DELETE NO ACTION"); -DATA(insert OID = 1655 ( RI_FKey_noaction_upd PGNSP PGUID 12 1 0 0 0 f f f f t f v s 0 0 2279 "" _null_ _null_ _null_ _null_ _null_ RI_FKey_noaction_upd _null_ _null_ _null_ )); -DESCR("referential integrity ON UPDATE NO ACTION"); - -DATA(insert OID = 1666 ( varbiteq PGNSP PGUID 12 1 0 0 0 f f f t t f i s 2 0 16 "1562 1562" _null_ _null_ _null_ _null_ _null_ biteq _null_ _null_ _null_ )); -DATA(insert OID = 1667 ( varbitne PGNSP PGUID 12 1 0 0 0 f f f t t f i s 2 0 16 "1562 1562" _null_ _null_ _null_ _null_ _null_ bitne _null_ _null_ _null_ )); -DATA(insert OID = 1668 ( varbitge PGNSP PGUID 12 1 0 0 0 f f f t t f i s 2 0 16 "1562 1562" _null_ _null_ _null_ _null_ _null_ bitge _null_ _null_ _null_ )); -DATA(insert OID = 1669 ( varbitgt PGNSP PGUID 12 1 0 0 0 f f f t t f i s 2 0 16 "1562 1562" _null_ _null_ _null_ _null_ _null_ bitgt _null_ _null_ _null_ )); -DATA(insert OID = 1670 ( varbitle PGNSP PGUID 12 1 0 0 0 f f f t t f i s 2 0 16 "1562 1562" _null_ _null_ _null_ _null_ _null_ bitle _null_ _null_ _null_ )); -DATA(insert OID = 1671 ( varbitlt PGNSP PGUID 12 1 0 0 0 f f f t t f i s 2 0 16 "1562 1562" _null_ _null_ _null_ _null_ _null_ bitlt _null_ _null_ _null_ )); -DATA(insert OID = 1672 ( varbitcmp PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 23 "1562 1562" _null_ _null_ _null_ _null_ _null_ bitcmp _null_ _null_ _null_ )); -DESCR("less-equal-greater"); - -/* avoid the C names bitand and bitor, since they are C++ keywords */ -DATA(insert OID = 1673 ( bitand PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 1560 "1560 1560" _null_ _null_ _null_ _null_ _null_ bit_and _null_ _null_ _null_ )); -DATA(insert OID = 1674 ( bitor PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 1560 "1560 1560" _null_ _null_ _null_ _null_ _null_ bit_or _null_ _null_ _null_ )); -DATA(insert OID = 1675 ( bitxor PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 1560 "1560 1560" _null_ _null_ _null_ _null_ _null_ bitxor _null_ _null_ _null_ )); -DATA(insert OID = 1676 ( bitnot PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 1560 "1560" _null_ _null_ _null_ _null_ _null_ bitnot _null_ _null_ _null_ )); -DATA(insert OID = 1677 ( bitshiftleft PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 1560 "1560 23" _null_ _null_ _null_ _null_ _null_ bitshiftleft _null_ _null_ _null_ )); -DATA(insert OID = 1678 ( bitshiftright PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 1560 "1560 23" _null_ _null_ _null_ _null_ _null_ bitshiftright _null_ _null_ _null_ )); -DATA(insert OID = 1679 ( bitcat PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 1562 "1562 1562" _null_ _null_ _null_ _null_ _null_ bitcat _null_ _null_ _null_ )); -DATA(insert OID = 1680 ( substring PGNSP PGUID 12 1 0 0 0 f f f f t f i s 3 0 1560 "1560 23 23" _null_ _null_ _null_ _null_ _null_ bitsubstr _null_ _null_ _null_ )); -DESCR("extract portion of bitstring"); -DATA(insert OID = 1681 ( length PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 23 "1560" _null_ _null_ _null_ _null_ _null_ bitlength _null_ _null_ _null_ )); -DESCR("bitstring length"); -DATA(insert OID = 1682 ( octet_length PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 23 "1560" _null_ _null_ _null_ _null_ _null_ bitoctetlength _null_ _null_ _null_ )); -DESCR("octet length"); -DATA(insert OID = 1683 ( bit PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 1560 "23 23" _null_ _null_ _null_ _null_ _null_ bitfromint4 _null_ _null_ _null_ )); -DESCR("convert int4 to bitstring"); -DATA(insert OID = 1684 ( int4 PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 23 "1560" _null_ _null_ _null_ _null_ _null_ bittoint4 _null_ _null_ _null_ )); -DESCR("convert bitstring to int4"); - -DATA(insert OID = 1685 ( bit PGNSP PGUID 12 1 0 0 0 f f f f t f i s 3 0 1560 "1560 23 16" _null_ _null_ _null_ _null_ _null_ bit _null_ _null_ _null_ )); -DESCR("adjust bit() to typmod length"); -DATA(insert OID = 3158 ( varbit_transform PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 2281 "2281" _null_ _null_ _null_ _null_ _null_ varbit_transform _null_ _null_ _null_ )); -DESCR("transform a varbit length coercion"); -DATA(insert OID = 1687 ( varbit PGNSP PGUID 12 1 0 0 varbit_transform f f f f t f i s 3 0 1562 "1562 23 16" _null_ _null_ _null_ _null_ _null_ varbit _null_ _null_ _null_ )); -DESCR("adjust varbit() to typmod length"); - -DATA(insert OID = 1698 ( position PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 23 "1560 1560" _null_ _null_ _null_ _null_ _null_ bitposition _null_ _null_ _null_ )); -DESCR("position of sub-bitstring"); -DATA(insert OID = 1699 ( substring PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 1560 "1560 23" _null_ _null_ _null_ _null_ _null_ bitsubstr_no_len _null_ _null_ _null_ )); -DESCR("extract portion of bitstring"); - -DATA(insert OID = 3030 ( overlay PGNSP PGUID 12 1 0 0 0 f f f f t f i s 4 0 1560 "1560 1560 23 23" _null_ _null_ _null_ _null_ _null_ bitoverlay _null_ _null_ _null_ )); -DESCR("substitute portion of bitstring"); -DATA(insert OID = 3031 ( overlay PGNSP PGUID 12 1 0 0 0 f f f f t f i s 3 0 1560 "1560 1560 23" _null_ _null_ _null_ _null_ _null_ bitoverlay_no_len _null_ _null_ _null_ )); -DESCR("substitute portion of bitstring"); -DATA(insert OID = 3032 ( get_bit PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 23 "1560 23" _null_ _null_ _null_ _null_ _null_ bitgetbit _null_ _null_ _null_ )); -DESCR("get bit"); -DATA(insert OID = 3033 ( set_bit PGNSP PGUID 12 1 0 0 0 f f f f t f i s 3 0 1560 "1560 23 23" _null_ _null_ _null_ _null_ _null_ bitsetbit _null_ _null_ _null_ )); -DESCR("set bit"); - -/* for macaddr type support */ -DATA(insert OID = 436 ( macaddr_in PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 829 "2275" _null_ _null_ _null_ _null_ _null_ macaddr_in _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 437 ( macaddr_out PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 2275 "829" _null_ _null_ _null_ _null_ _null_ macaddr_out _null_ _null_ _null_ )); -DESCR("I/O"); - -DATA(insert OID = 753 ( trunc PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 829 "829" _null_ _null_ _null_ _null_ _null_ macaddr_trunc _null_ _null_ _null_ )); -DESCR("MACADDR manufacturer fields"); - -DATA(insert OID = 830 ( macaddr_eq PGNSP PGUID 12 1 0 0 0 f f f t t f i s 2 0 16 "829 829" _null_ _null_ _null_ _null_ _null_ macaddr_eq _null_ _null_ _null_ )); -DATA(insert OID = 831 ( macaddr_lt PGNSP PGUID 12 1 0 0 0 f f f t t f i s 2 0 16 "829 829" _null_ _null_ _null_ _null_ _null_ macaddr_lt _null_ _null_ _null_ )); -DATA(insert OID = 832 ( macaddr_le PGNSP PGUID 12 1 0 0 0 f f f t t f i s 2 0 16 "829 829" _null_ _null_ _null_ _null_ _null_ macaddr_le _null_ _null_ _null_ )); -DATA(insert OID = 833 ( macaddr_gt PGNSP PGUID 12 1 0 0 0 f f f t t f i s 2 0 16 "829 829" _null_ _null_ _null_ _null_ _null_ macaddr_gt _null_ _null_ _null_ )); -DATA(insert OID = 834 ( macaddr_ge PGNSP PGUID 12 1 0 0 0 f f f t t f i s 2 0 16 "829 829" _null_ _null_ _null_ _null_ _null_ macaddr_ge _null_ _null_ _null_ )); -DATA(insert OID = 835 ( macaddr_ne PGNSP PGUID 12 1 0 0 0 f f f t t f i s 2 0 16 "829 829" _null_ _null_ _null_ _null_ _null_ macaddr_ne _null_ _null_ _null_ )); -DATA(insert OID = 836 ( macaddr_cmp PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 23 "829 829" _null_ _null_ _null_ _null_ _null_ macaddr_cmp _null_ _null_ _null_ )); -DESCR("less-equal-greater"); -DATA(insert OID = 3144 ( macaddr_not PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 829 "829" _null_ _null_ _null_ _null_ _null_ macaddr_not _null_ _null_ _null_ )); -DATA(insert OID = 3145 ( macaddr_and PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 829 "829 829" _null_ _null_ _null_ _null_ _null_ macaddr_and _null_ _null_ _null_ )); -DATA(insert OID = 3146 ( macaddr_or PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 829 "829 829" _null_ _null_ _null_ _null_ _null_ macaddr_or _null_ _null_ _null_ )); -DATA(insert OID = 3359 ( macaddr_sortsupport PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 2278 "2281" _null_ _null_ _null_ _null_ _null_ macaddr_sortsupport _null_ _null_ _null_ )); -DESCR("sort support"); - -/* for macaddr8 type support */ -DATA(insert OID = 4110 ( macaddr8_in PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 774 "2275" _null_ _null_ _null_ _null_ _null_ macaddr8_in _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 4111 ( macaddr8_out PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 2275 "774" _null_ _null_ _null_ _null_ _null_ macaddr8_out _null_ _null_ _null_ )); -DESCR("I/O"); - -DATA(insert OID = 4112 ( trunc PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 774 "774" _null_ _null_ _null_ _null_ _null_ macaddr8_trunc _null_ _null_ _null_ )); -DESCR("MACADDR8 manufacturer fields"); - -DATA(insert OID = 4113 ( macaddr8_eq PGNSP PGUID 12 1 0 0 0 f f f t t f i s 2 0 16 "774 774" _null_ _null_ _null_ _null_ _null_ macaddr8_eq _null_ _null_ _null_ )); -DATA(insert OID = 4114 ( macaddr8_lt PGNSP PGUID 12 1 0 0 0 f f f t t f i s 2 0 16 "774 774" _null_ _null_ _null_ _null_ _null_ macaddr8_lt _null_ _null_ _null_ )); -DATA(insert OID = 4115 ( macaddr8_le PGNSP PGUID 12 1 0 0 0 f f f t t f i s 2 0 16 "774 774" _null_ _null_ _null_ _null_ _null_ macaddr8_le _null_ _null_ _null_ )); -DATA(insert OID = 4116 ( macaddr8_gt PGNSP PGUID 12 1 0 0 0 f f f t t f i s 2 0 16 "774 774" _null_ _null_ _null_ _null_ _null_ macaddr8_gt _null_ _null_ _null_ )); -DATA(insert OID = 4117 ( macaddr8_ge PGNSP PGUID 12 1 0 0 0 f f f t t f i s 2 0 16 "774 774" _null_ _null_ _null_ _null_ _null_ macaddr8_ge _null_ _null_ _null_ )); -DATA(insert OID = 4118 ( macaddr8_ne PGNSP PGUID 12 1 0 0 0 f f f t t f i s 2 0 16 "774 774" _null_ _null_ _null_ _null_ _null_ macaddr8_ne _null_ _null_ _null_ )); -DATA(insert OID = 4119 ( macaddr8_cmp PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 23 "774 774" _null_ _null_ _null_ _null_ _null_ macaddr8_cmp _null_ _null_ _null_ )); -DESCR("less-equal-greater"); -DATA(insert OID = 4120 ( macaddr8_not PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 774 "774" _null_ _null_ _null_ _null_ _null_ macaddr8_not _null_ _null_ _null_ )); -DATA(insert OID = 4121 ( macaddr8_and PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 774 "774 774" _null_ _null_ _null_ _null_ _null_ macaddr8_and _null_ _null_ _null_ )); -DATA(insert OID = 4122 ( macaddr8_or PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 774 "774 774" _null_ _null_ _null_ _null_ _null_ macaddr8_or _null_ _null_ _null_ )); -DATA(insert OID = 4123 ( macaddr8 PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 774 "829" _null_ _null_ _null_ _null_ _null_ macaddrtomacaddr8 _null_ _null_ _null_ )); -DESCR("convert macaddr to macaddr8"); -DATA(insert OID = 4124 ( macaddr PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 829 "774" _null_ _null_ _null_ _null_ _null_ macaddr8tomacaddr _null_ _null_ _null_ )); -DESCR("convert macaddr8 to macaddr"); -DATA(insert OID = 4125 ( macaddr8_set7bit PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 774 "774" _null_ _null_ _null_ _null_ _null_ macaddr8_set7bit _null_ _null_ _null_ )); -DESCR("set 7th bit in macaddr8"); - -/* for inet type support */ -DATA(insert OID = 910 ( inet_in PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 869 "2275" _null_ _null_ _null_ _null_ _null_ inet_in _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 911 ( inet_out PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 2275 "869" _null_ _null_ _null_ _null_ _null_ inet_out _null_ _null_ _null_ )); -DESCR("I/O"); - -/* for cidr type support */ -DATA(insert OID = 1267 ( cidr_in PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 650 "2275" _null_ _null_ _null_ _null_ _null_ cidr_in _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 1427 ( cidr_out PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 2275 "650" _null_ _null_ _null_ _null_ _null_ cidr_out _null_ _null_ _null_ )); -DESCR("I/O"); - -/* these are used for both inet and cidr */ -DATA(insert OID = 920 ( network_eq PGNSP PGUID 12 1 0 0 0 f f f t t f i s 2 0 16 "869 869" _null_ _null_ _null_ _null_ _null_ network_eq _null_ _null_ _null_ )); -DATA(insert OID = 921 ( network_lt PGNSP PGUID 12 1 0 0 0 f f f t t f i s 2 0 16 "869 869" _null_ _null_ _null_ _null_ _null_ network_lt _null_ _null_ _null_ )); -DATA(insert OID = 922 ( network_le PGNSP PGUID 12 1 0 0 0 f f f t t f i s 2 0 16 "869 869" _null_ _null_ _null_ _null_ _null_ network_le _null_ _null_ _null_ )); -DATA(insert OID = 923 ( network_gt PGNSP PGUID 12 1 0 0 0 f f f t t f i s 2 0 16 "869 869" _null_ _null_ _null_ _null_ _null_ network_gt _null_ _null_ _null_ )); -DATA(insert OID = 924 ( network_ge PGNSP PGUID 12 1 0 0 0 f f f t t f i s 2 0 16 "869 869" _null_ _null_ _null_ _null_ _null_ network_ge _null_ _null_ _null_ )); -DATA(insert OID = 925 ( network_ne PGNSP PGUID 12 1 0 0 0 f f f t t f i s 2 0 16 "869 869" _null_ _null_ _null_ _null_ _null_ network_ne _null_ _null_ _null_ )); -DATA(insert OID = 3562 ( network_larger PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 869 "869 869" _null_ _null_ _null_ _null_ _null_ network_larger _null_ _null_ _null_ )); -DESCR("larger of two"); -DATA(insert OID = 3563 ( network_smaller PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 869 "869 869" _null_ _null_ _null_ _null_ _null_ network_smaller _null_ _null_ _null_ )); -DESCR("smaller of two"); -DATA(insert OID = 926 ( network_cmp PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 23 "869 869" _null_ _null_ _null_ _null_ _null_ network_cmp _null_ _null_ _null_ )); -DESCR("less-equal-greater"); -DATA(insert OID = 927 ( network_sub PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 16 "869 869" _null_ _null_ _null_ _null_ _null_ network_sub _null_ _null_ _null_ )); -DATA(insert OID = 928 ( network_subeq PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 16 "869 869" _null_ _null_ _null_ _null_ _null_ network_subeq _null_ _null_ _null_ )); -DATA(insert OID = 929 ( network_sup PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 16 "869 869" _null_ _null_ _null_ _null_ _null_ network_sup _null_ _null_ _null_ )); -DATA(insert OID = 930 ( network_supeq PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 16 "869 869" _null_ _null_ _null_ _null_ _null_ network_supeq _null_ _null_ _null_ )); -DATA(insert OID = 3551 ( network_overlap PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 16 "869 869" _null_ _null_ _null_ _null_ _null_ network_overlap _null_ _null_ _null_ )); - -/* inet/cidr functions */ -DATA(insert OID = 598 ( abbrev PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 25 "869" _null_ _null_ _null_ _null_ _null_ inet_abbrev _null_ _null_ _null_ )); -DESCR("abbreviated display of inet value"); -DATA(insert OID = 599 ( abbrev PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 25 "650" _null_ _null_ _null_ _null_ _null_ cidr_abbrev _null_ _null_ _null_ )); -DESCR("abbreviated display of cidr value"); -DATA(insert OID = 605 ( set_masklen PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 869 "869 23" _null_ _null_ _null_ _null_ _null_ inet_set_masklen _null_ _null_ _null_ )); -DESCR("change netmask of inet"); -DATA(insert OID = 635 ( set_masklen PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 650 "650 23" _null_ _null_ _null_ _null_ _null_ cidr_set_masklen _null_ _null_ _null_ )); -DESCR("change netmask of cidr"); -DATA(insert OID = 711 ( family PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 23 "869" _null_ _null_ _null_ _null_ _null_ network_family _null_ _null_ _null_ )); -DESCR("address family (4 for IPv4, 6 for IPv6)"); -DATA(insert OID = 683 ( network PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 650 "869" _null_ _null_ _null_ _null_ _null_ network_network _null_ _null_ _null_ )); -DESCR("network part of address"); -DATA(insert OID = 696 ( netmask PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 869 "869" _null_ _null_ _null_ _null_ _null_ network_netmask _null_ _null_ _null_ )); -DESCR("netmask of address"); -DATA(insert OID = 697 ( masklen PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 23 "869" _null_ _null_ _null_ _null_ _null_ network_masklen _null_ _null_ _null_ )); -DESCR("netmask length"); -DATA(insert OID = 698 ( broadcast PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 869 "869" _null_ _null_ _null_ _null_ _null_ network_broadcast _null_ _null_ _null_ )); -DESCR("broadcast address of network"); -DATA(insert OID = 699 ( host PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 25 "869" _null_ _null_ _null_ _null_ _null_ network_host _null_ _null_ _null_ )); -DESCR("show address octets only"); -DATA(insert OID = 730 ( text PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 25 "869" _null_ _null_ _null_ _null_ _null_ network_show _null_ _null_ _null_ )); -DESCR("show all parts of inet/cidr value"); -DATA(insert OID = 1362 ( hostmask PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 869 "869" _null_ _null_ _null_ _null_ _null_ network_hostmask _null_ _null_ _null_ )); -DESCR("hostmask of address"); -DATA(insert OID = 1715 ( cidr PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 650 "869" _null_ _null_ _null_ _null_ _null_ inet_to_cidr _null_ _null_ _null_ )); -DESCR("convert inet to cidr"); - -DATA(insert OID = 2196 ( inet_client_addr PGNSP PGUID 12 1 0 0 0 f f f f f f s r 0 0 869 "" _null_ _null_ _null_ _null_ _null_ inet_client_addr _null_ _null_ _null_ )); -DESCR("inet address of the client"); -DATA(insert OID = 2197 ( inet_client_port PGNSP PGUID 12 1 0 0 0 f f f f f f s r 0 0 23 "" _null_ _null_ _null_ _null_ _null_ inet_client_port _null_ _null_ _null_ )); -DESCR("client's port number for this connection"); -DATA(insert OID = 2198 ( inet_server_addr PGNSP PGUID 12 1 0 0 0 f f f f f f s s 0 0 869 "" _null_ _null_ _null_ _null_ _null_ inet_server_addr _null_ _null_ _null_ )); -DESCR("inet address of the server"); -DATA(insert OID = 2199 ( inet_server_port PGNSP PGUID 12 1 0 0 0 f f f f f f s s 0 0 23 "" _null_ _null_ _null_ _null_ _null_ inet_server_port _null_ _null_ _null_ )); -DESCR("server's port number for this connection"); - -DATA(insert OID = 2627 ( inetnot PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 869 "869" _null_ _null_ _null_ _null_ _null_ inetnot _null_ _null_ _null_ )); -DATA(insert OID = 2628 ( inetand PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 869 "869 869" _null_ _null_ _null_ _null_ _null_ inetand _null_ _null_ _null_ )); -DATA(insert OID = 2629 ( inetor PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 869 "869 869" _null_ _null_ _null_ _null_ _null_ inetor _null_ _null_ _null_ )); -DATA(insert OID = 2630 ( inetpl PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 869 "869 20" _null_ _null_ _null_ _null_ _null_ inetpl _null_ _null_ _null_ )); -DATA(insert OID = 2631 ( int8pl_inet PGNSP PGUID 14 1 0 0 0 f f f f t f i s 2 0 869 "20 869" _null_ _null_ _null_ _null_ _null_ "select $2 + $1" _null_ _null_ _null_ )); -DATA(insert OID = 2632 ( inetmi_int8 PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 869 "869 20" _null_ _null_ _null_ _null_ _null_ inetmi_int8 _null_ _null_ _null_ )); -DATA(insert OID = 2633 ( inetmi PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 20 "869 869" _null_ _null_ _null_ _null_ _null_ inetmi _null_ _null_ _null_ )); -DATA(insert OID = 4071 ( inet_same_family PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 16 "869 869" _null_ _null_ _null_ _null_ _null_ inet_same_family _null_ _null_ _null_ )); -DESCR("are the addresses from the same family?"); -DATA(insert OID = 4063 ( inet_merge PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 650 "869 869" _null_ _null_ _null_ _null_ _null_ inet_merge _null_ _null_ _null_ )); -DESCR("the smallest network which includes both of the given networks"); - -/* GiST support for inet and cidr */ -DATA(insert OID = 3553 ( inet_gist_consistent PGNSP PGUID 12 1 0 0 0 f f f f t f i s 5 0 16 "2281 869 21 26 2281" _null_ _null_ _null_ _null_ _null_ inet_gist_consistent _null_ _null_ _null_ )); -DESCR("GiST support"); -DATA(insert OID = 3554 ( inet_gist_union PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 869 "2281 2281" _null_ _null_ _null_ _null_ _null_ inet_gist_union _null_ _null_ _null_ )); -DESCR("GiST support"); -DATA(insert OID = 3555 ( inet_gist_compress PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 2281 "2281" _null_ _null_ _null_ _null_ _null_ inet_gist_compress _null_ _null_ _null_ )); -DESCR("GiST support"); -DATA(insert OID = 3556 ( inet_gist_decompress PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 2281 "2281" _null_ _null_ _null_ _null_ _null_ inet_gist_decompress _null_ _null_ _null_ )); -DESCR("GiST support"); -DATA(insert OID = 3573 ( inet_gist_fetch PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 2281 "2281" _null_ _null_ _null_ _null_ _null_ inet_gist_fetch _null_ _null_ _null_ )); -DESCR("GiST support"); -DATA(insert OID = 3557 ( inet_gist_penalty PGNSP PGUID 12 1 0 0 0 f f f f t f i s 3 0 2281 "2281 2281 2281" _null_ _null_ _null_ _null_ _null_ inet_gist_penalty _null_ _null_ _null_ )); -DESCR("GiST support"); -DATA(insert OID = 3558 ( inet_gist_picksplit PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 2281 "2281 2281" _null_ _null_ _null_ _null_ _null_ inet_gist_picksplit _null_ _null_ _null_ )); -DESCR("GiST support"); -DATA(insert OID = 3559 ( inet_gist_same PGNSP PGUID 12 1 0 0 0 f f f f t f i s 3 0 2281 "869 869 2281" _null_ _null_ _null_ _null_ _null_ inet_gist_same _null_ _null_ _null_ )); -DESCR("GiST support"); - -/* SP-GiST support for inet and cidr */ -DATA(insert OID = 3795 ( inet_spg_config PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 2278 "2281 2281" _null_ _null_ _null_ _null_ _null_ inet_spg_config _null_ _null_ _null_ )); -DESCR("SP-GiST support"); -DATA(insert OID = 3796 ( inet_spg_choose PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 2278 "2281 2281" _null_ _null_ _null_ _null_ _null_ inet_spg_choose _null_ _null_ _null_ )); -DESCR("SP-GiST support"); -DATA(insert OID = 3797 ( inet_spg_picksplit PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 2278 "2281 2281" _null_ _null_ _null_ _null_ _null_ inet_spg_picksplit _null_ _null_ _null_ )); -DESCR("SP-GiST support"); -DATA(insert OID = 3798 ( inet_spg_inner_consistent PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 2278 "2281 2281" _null_ _null_ _null_ _null_ _null_ inet_spg_inner_consistent _null_ _null_ _null_ )); -DESCR("SP-GiST support"); -DATA(insert OID = 3799 ( inet_spg_leaf_consistent PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 16 "2281 2281" _null_ _null_ _null_ _null_ _null_ inet_spg_leaf_consistent _null_ _null_ _null_ )); -DESCR("SP-GiST support"); - -/* Selectivity estimation for inet and cidr */ -DATA(insert OID = 3560 ( networksel PGNSP PGUID 12 1 0 0 0 f f f f t f s s 4 0 701 "2281 26 2281 23" _null_ _null_ _null_ _null_ _null_ networksel _null_ _null_ _null_ )); -DESCR("restriction selectivity for network operators"); -DATA(insert OID = 3561 ( networkjoinsel PGNSP PGUID 12 1 0 0 0 f f f f t f s s 5 0 701 "2281 26 2281 21 2281" _null_ _null_ _null_ _null_ _null_ networkjoinsel _null_ _null_ _null_ )); -DESCR("join selectivity for network operators"); - -DATA(insert OID = 1690 ( time_mi_time PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 1186 "1083 1083" _null_ _null_ _null_ _null_ _null_ time_mi_time _null_ _null_ _null_ )); - -DATA(insert OID = 1691 ( boolle PGNSP PGUID 12 1 0 0 0 f f f t t f i s 2 0 16 "16 16" _null_ _null_ _null_ _null_ _null_ boolle _null_ _null_ _null_ )); -DATA(insert OID = 1692 ( boolge PGNSP PGUID 12 1 0 0 0 f f f t t f i s 2 0 16 "16 16" _null_ _null_ _null_ _null_ _null_ boolge _null_ _null_ _null_ )); -DATA(insert OID = 1693 ( btboolcmp PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 23 "16 16" _null_ _null_ _null_ _null_ _null_ btboolcmp _null_ _null_ _null_ )); -DESCR("less-equal-greater"); - -DATA(insert OID = 1688 ( time_hash PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 23 "1083" _null_ _null_ _null_ _null_ _null_ time_hash _null_ _null_ _null_ )); -DESCR("hash"); -DATA(insert OID = 1696 ( timetz_hash PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 23 "1266" _null_ _null_ _null_ _null_ _null_ timetz_hash _null_ _null_ _null_ )); -DESCR("hash"); -DATA(insert OID = 1697 ( interval_hash PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 23 "1186" _null_ _null_ _null_ _null_ _null_ interval_hash _null_ _null_ _null_ )); -DESCR("hash"); - - -/* OID's 1700 - 1799 NUMERIC data type */ -DATA(insert OID = 1701 ( numeric_in PGNSP PGUID 12 1 0 0 0 f f f f t f i s 3 0 1700 "2275 26 23" _null_ _null_ _null_ _null_ _null_ numeric_in _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 1702 ( numeric_out PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 2275 "1700" _null_ _null_ _null_ _null_ _null_ numeric_out _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 2917 ( numerictypmodin PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 23 "1263" _null_ _null_ _null_ _null_ _null_ numerictypmodin _null_ _null_ _null_ )); -DESCR("I/O typmod"); -DATA(insert OID = 2918 ( numerictypmodout PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 2275 "23" _null_ _null_ _null_ _null_ _null_ numerictypmodout _null_ _null_ _null_ )); -DESCR("I/O typmod"); -DATA(insert OID = 3157 ( numeric_transform PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 2281 "2281" _null_ _null_ _null_ _null_ _null_ numeric_transform _null_ _null_ _null_ )); -DESCR("transform a numeric length coercion"); -DATA(insert OID = 1703 ( numeric PGNSP PGUID 12 1 0 0 numeric_transform f f f f t f i s 2 0 1700 "1700 23" _null_ _null_ _null_ _null_ _null_ numeric _null_ _null_ _null_ )); -DESCR("adjust numeric to typmod precision/scale"); -DATA(insert OID = 1704 ( numeric_abs PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 1700 "1700" _null_ _null_ _null_ _null_ _null_ numeric_abs _null_ _null_ _null_ )); -DATA(insert OID = 1705 ( abs PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 1700 "1700" _null_ _null_ _null_ _null_ _null_ numeric_abs _null_ _null_ _null_ )); -DESCR("absolute value"); -DATA(insert OID = 1706 ( sign PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 1700 "1700" _null_ _null_ _null_ _null_ _null_ numeric_sign _null_ _null_ _null_ )); -DESCR("sign of value"); -DATA(insert OID = 1707 ( round PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 1700 "1700 23" _null_ _null_ _null_ _null_ _null_ numeric_round _null_ _null_ _null_ )); -DESCR("value rounded to 'scale'"); -DATA(insert OID = 1708 ( round PGNSP PGUID 14 1 0 0 0 f f f f t f i s 1 0 1700 "1700" _null_ _null_ _null_ _null_ _null_ "select pg_catalog.round($1,0)" _null_ _null_ _null_ )); -DESCR("value rounded to 'scale' of zero"); -DATA(insert OID = 1709 ( trunc PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 1700 "1700 23" _null_ _null_ _null_ _null_ _null_ numeric_trunc _null_ _null_ _null_ )); -DESCR("value truncated to 'scale'"); -DATA(insert OID = 1710 ( trunc PGNSP PGUID 14 1 0 0 0 f f f f t f i s 1 0 1700 "1700" _null_ _null_ _null_ _null_ _null_ "select pg_catalog.trunc($1,0)" _null_ _null_ _null_ )); -DESCR("value truncated to 'scale' of zero"); -DATA(insert OID = 1711 ( ceil PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 1700 "1700" _null_ _null_ _null_ _null_ _null_ numeric_ceil _null_ _null_ _null_ )); -DESCR("nearest integer >= value"); -DATA(insert OID = 2167 ( ceiling PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 1700 "1700" _null_ _null_ _null_ _null_ _null_ numeric_ceil _null_ _null_ _null_ )); -DESCR("nearest integer >= value"); -DATA(insert OID = 1712 ( floor PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 1700 "1700" _null_ _null_ _null_ _null_ _null_ numeric_floor _null_ _null_ _null_ )); -DESCR("nearest integer <= value"); -DATA(insert OID = 1718 ( numeric_eq PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 16 "1700 1700" _null_ _null_ _null_ _null_ _null_ numeric_eq _null_ _null_ _null_ )); -DATA(insert OID = 1719 ( numeric_ne PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 16 "1700 1700" _null_ _null_ _null_ _null_ _null_ numeric_ne _null_ _null_ _null_ )); -DATA(insert OID = 1720 ( numeric_gt PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 16 "1700 1700" _null_ _null_ _null_ _null_ _null_ numeric_gt _null_ _null_ _null_ )); -DATA(insert OID = 1721 ( numeric_ge PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 16 "1700 1700" _null_ _null_ _null_ _null_ _null_ numeric_ge _null_ _null_ _null_ )); -DATA(insert OID = 1722 ( numeric_lt PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 16 "1700 1700" _null_ _null_ _null_ _null_ _null_ numeric_lt _null_ _null_ _null_ )); -DATA(insert OID = 1723 ( numeric_le PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 16 "1700 1700" _null_ _null_ _null_ _null_ _null_ numeric_le _null_ _null_ _null_ )); -DATA(insert OID = 1724 ( numeric_add PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 1700 "1700 1700" _null_ _null_ _null_ _null_ _null_ numeric_add _null_ _null_ _null_ )); -DATA(insert OID = 1725 ( numeric_sub PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 1700 "1700 1700" _null_ _null_ _null_ _null_ _null_ numeric_sub _null_ _null_ _null_ )); -DATA(insert OID = 1726 ( numeric_mul PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 1700 "1700 1700" _null_ _null_ _null_ _null_ _null_ numeric_mul _null_ _null_ _null_ )); -DATA(insert OID = 1727 ( numeric_div PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 1700 "1700 1700" _null_ _null_ _null_ _null_ _null_ numeric_div _null_ _null_ _null_ )); -DATA(insert OID = 1728 ( mod PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 1700 "1700 1700" _null_ _null_ _null_ _null_ _null_ numeric_mod _null_ _null_ _null_ )); -DESCR("modulus"); -DATA(insert OID = 1729 ( numeric_mod PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 1700 "1700 1700" _null_ _null_ _null_ _null_ _null_ numeric_mod _null_ _null_ _null_ )); -DATA(insert OID = 1730 ( sqrt PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 1700 "1700" _null_ _null_ _null_ _null_ _null_ numeric_sqrt _null_ _null_ _null_ )); -DESCR("square root"); -DATA(insert OID = 1731 ( numeric_sqrt PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 1700 "1700" _null_ _null_ _null_ _null_ _null_ numeric_sqrt _null_ _null_ _null_ )); -DESCR("square root"); -DATA(insert OID = 1732 ( exp PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 1700 "1700" _null_ _null_ _null_ _null_ _null_ numeric_exp _null_ _null_ _null_ )); -DESCR("natural exponential (e^x)"); -DATA(insert OID = 1733 ( numeric_exp PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 1700 "1700" _null_ _null_ _null_ _null_ _null_ numeric_exp _null_ _null_ _null_ )); -DESCR("natural exponential (e^x)"); -DATA(insert OID = 1734 ( ln PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 1700 "1700" _null_ _null_ _null_ _null_ _null_ numeric_ln _null_ _null_ _null_ )); -DESCR("natural logarithm"); -DATA(insert OID = 1735 ( numeric_ln PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 1700 "1700" _null_ _null_ _null_ _null_ _null_ numeric_ln _null_ _null_ _null_ )); -DESCR("natural logarithm"); -DATA(insert OID = 1736 ( log PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 1700 "1700 1700" _null_ _null_ _null_ _null_ _null_ numeric_log _null_ _null_ _null_ )); -DESCR("logarithm base m of n"); -DATA(insert OID = 1737 ( numeric_log PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 1700 "1700 1700" _null_ _null_ _null_ _null_ _null_ numeric_log _null_ _null_ _null_ )); -DESCR("logarithm base m of n"); -DATA(insert OID = 1738 ( pow PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 1700 "1700 1700" _null_ _null_ _null_ _null_ _null_ numeric_power _null_ _null_ _null_ )); -DESCR("exponentiation"); -DATA(insert OID = 2169 ( power PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 1700 "1700 1700" _null_ _null_ _null_ _null_ _null_ numeric_power _null_ _null_ _null_ )); -DESCR("exponentiation"); -DATA(insert OID = 1739 ( numeric_power PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 1700 "1700 1700" _null_ _null_ _null_ _null_ _null_ numeric_power _null_ _null_ _null_ )); -DATA(insert OID = 8888 ( scale PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 23 "1700" _null_ _null_ _null_ _null_ _null_ numeric_scale _null_ _null_ _null_ )); -DESCR("number of decimal digits in the fractional part"); -DATA(insert OID = 1740 ( numeric PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 1700 "23" _null_ _null_ _null_ _null_ _null_ int4_numeric _null_ _null_ _null_ )); -DESCR("convert int4 to numeric"); -DATA(insert OID = 1741 ( log PGNSP PGUID 14 1 0 0 0 f f f f t f i s 1 0 1700 "1700" _null_ _null_ _null_ _null_ _null_ "select pg_catalog.log(10, $1)" _null_ _null_ _null_ )); -DESCR("base 10 logarithm"); -DATA(insert OID = 1742 ( numeric PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 1700 "700" _null_ _null_ _null_ _null_ _null_ float4_numeric _null_ _null_ _null_ )); -DESCR("convert float4 to numeric"); -DATA(insert OID = 1743 ( numeric PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 1700 "701" _null_ _null_ _null_ _null_ _null_ float8_numeric _null_ _null_ _null_ )); -DESCR("convert float8 to numeric"); -DATA(insert OID = 1744 ( int4 PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 23 "1700" _null_ _null_ _null_ _null_ _null_ numeric_int4 _null_ _null_ _null_ )); -DESCR("convert numeric to int4"); -DATA(insert OID = 1745 ( float4 PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 700 "1700" _null_ _null_ _null_ _null_ _null_ numeric_float4 _null_ _null_ _null_ )); -DESCR("convert numeric to float4"); -DATA(insert OID = 1746 ( float8 PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 701 "1700" _null_ _null_ _null_ _null_ _null_ numeric_float8 _null_ _null_ _null_ )); -DESCR("convert numeric to float8"); -DATA(insert OID = 1973 ( div PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 1700 "1700 1700" _null_ _null_ _null_ _null_ _null_ numeric_div_trunc _null_ _null_ _null_ )); -DESCR("trunc(x/y)"); -DATA(insert OID = 1980 ( numeric_div_trunc PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 1700 "1700 1700" _null_ _null_ _null_ _null_ _null_ numeric_div_trunc _null_ _null_ _null_ )); -DESCR("trunc(x/y)"); -DATA(insert OID = 2170 ( width_bucket PGNSP PGUID 12 1 0 0 0 f f f f t f i s 4 0 23 "1700 1700 1700 23" _null_ _null_ _null_ _null_ _null_ width_bucket_numeric _null_ _null_ _null_ )); -DESCR("bucket number of operand in equal-width histogram"); - -DATA(insert OID = 1747 ( time_pl_interval PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 1083 "1083 1186" _null_ _null_ _null_ _null_ _null_ time_pl_interval _null_ _null_ _null_ )); -DATA(insert OID = 1748 ( time_mi_interval PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 1083 "1083 1186" _null_ _null_ _null_ _null_ _null_ time_mi_interval _null_ _null_ _null_ )); -DATA(insert OID = 1749 ( timetz_pl_interval PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 1266 "1266 1186" _null_ _null_ _null_ _null_ _null_ timetz_pl_interval _null_ _null_ _null_ )); -DATA(insert OID = 1750 ( timetz_mi_interval PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 1266 "1266 1186" _null_ _null_ _null_ _null_ _null_ timetz_mi_interval _null_ _null_ _null_ )); - -DATA(insert OID = 1764 ( numeric_inc PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 1700 "1700" _null_ _null_ _null_ _null_ _null_ numeric_inc _null_ _null_ _null_ )); -DESCR("increment by one"); -DATA(insert OID = 1766 ( numeric_smaller PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 1700 "1700 1700" _null_ _null_ _null_ _null_ _null_ numeric_smaller _null_ _null_ _null_ )); -DESCR("smaller of two"); -DATA(insert OID = 1767 ( numeric_larger PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 1700 "1700 1700" _null_ _null_ _null_ _null_ _null_ numeric_larger _null_ _null_ _null_ )); -DESCR("larger of two"); -DATA(insert OID = 1769 ( numeric_cmp PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 23 "1700 1700" _null_ _null_ _null_ _null_ _null_ numeric_cmp _null_ _null_ _null_ )); -DESCR("less-equal-greater"); -DATA(insert OID = 3283 ( numeric_sortsupport PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 2278 "2281" _null_ _null_ _null_ _null_ _null_ numeric_sortsupport _null_ _null_ _null_ )); -DESCR("sort support"); -DATA(insert OID = 1771 ( numeric_uminus PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 1700 "1700" _null_ _null_ _null_ _null_ _null_ numeric_uminus _null_ _null_ _null_ )); -DATA(insert OID = 1779 ( int8 PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 20 "1700" _null_ _null_ _null_ _null_ _null_ numeric_int8 _null_ _null_ _null_ )); -DESCR("convert numeric to int8"); -DATA(insert OID = 1781 ( numeric PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 1700 "20" _null_ _null_ _null_ _null_ _null_ int8_numeric _null_ _null_ _null_ )); -DESCR("convert int8 to numeric"); -DATA(insert OID = 1782 ( numeric PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 1700 "21" _null_ _null_ _null_ _null_ _null_ int2_numeric _null_ _null_ _null_ )); -DESCR("convert int2 to numeric"); -DATA(insert OID = 1783 ( int2 PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 21 "1700" _null_ _null_ _null_ _null_ _null_ numeric_int2 _null_ _null_ _null_ )); -DESCR("convert numeric to int2"); - -/* formatting */ -DATA(insert OID = 1770 ( to_char PGNSP PGUID 12 1 0 0 0 f f f f t f s s 2 0 25 "1184 25" _null_ _null_ _null_ _null_ _null_ timestamptz_to_char _null_ _null_ _null_ )); -DESCR("format timestamp with time zone to text"); -DATA(insert OID = 1772 ( to_char PGNSP PGUID 12 1 0 0 0 f f f f t f s s 2 0 25 "1700 25" _null_ _null_ _null_ _null_ _null_ numeric_to_char _null_ _null_ _null_ )); -DESCR("format numeric to text"); -DATA(insert OID = 1773 ( to_char PGNSP PGUID 12 1 0 0 0 f f f f t f s s 2 0 25 "23 25" _null_ _null_ _null_ _null_ _null_ int4_to_char _null_ _null_ _null_ )); -DESCR("format int4 to text"); -DATA(insert OID = 1774 ( to_char PGNSP PGUID 12 1 0 0 0 f f f f t f s s 2 0 25 "20 25" _null_ _null_ _null_ _null_ _null_ int8_to_char _null_ _null_ _null_ )); -DESCR("format int8 to text"); -DATA(insert OID = 1775 ( to_char PGNSP PGUID 12 1 0 0 0 f f f f t f s s 2 0 25 "700 25" _null_ _null_ _null_ _null_ _null_ float4_to_char _null_ _null_ _null_ )); -DESCR("format float4 to text"); -DATA(insert OID = 1776 ( to_char PGNSP PGUID 12 1 0 0 0 f f f f t f s s 2 0 25 "701 25" _null_ _null_ _null_ _null_ _null_ float8_to_char _null_ _null_ _null_ )); -DESCR("format float8 to text"); -DATA(insert OID = 1777 ( to_number PGNSP PGUID 12 1 0 0 0 f f f f t f s s 2 0 1700 "25 25" _null_ _null_ _null_ _null_ _null_ numeric_to_number _null_ _null_ _null_ )); -DESCR("convert text to numeric"); -DATA(insert OID = 1778 ( to_timestamp PGNSP PGUID 12 1 0 0 0 f f f f t f s s 2 0 1184 "25 25" _null_ _null_ _null_ _null_ _null_ to_timestamp _null_ _null_ _null_ )); -DESCR("convert text to timestamp with time zone"); -DATA(insert OID = 1780 ( to_date PGNSP PGUID 12 1 0 0 0 f f f f t f s s 2 0 1082 "25 25" _null_ _null_ _null_ _null_ _null_ to_date _null_ _null_ _null_ )); -DESCR("convert text to date"); -DATA(insert OID = 1768 ( to_char PGNSP PGUID 12 1 0 0 0 f f f f t f s s 2 0 25 "1186 25" _null_ _null_ _null_ _null_ _null_ interval_to_char _null_ _null_ _null_ )); -DESCR("format interval to text"); - -DATA(insert OID = 1282 ( quote_ident PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 25 "25" _null_ _null_ _null_ _null_ _null_ quote_ident _null_ _null_ _null_ )); -DESCR("quote an identifier for usage in a querystring"); -DATA(insert OID = 1283 ( quote_literal PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 25 "25" _null_ _null_ _null_ _null_ _null_ quote_literal _null_ _null_ _null_ )); -DESCR("quote a literal for usage in a querystring"); -DATA(insert OID = 1285 ( quote_literal PGNSP PGUID 14 1 0 0 0 f f f f t f s s 1 0 25 "2283" _null_ _null_ _null_ _null_ _null_ "select pg_catalog.quote_literal($1::pg_catalog.text)" _null_ _null_ _null_ )); -DESCR("quote a data value for usage in a querystring"); -DATA(insert OID = 1289 ( quote_nullable PGNSP PGUID 12 1 0 0 0 f f f f f f i s 1 0 25 "25" _null_ _null_ _null_ _null_ _null_ quote_nullable _null_ _null_ _null_ )); -DESCR("quote a possibly-null literal for usage in a querystring"); -DATA(insert OID = 1290 ( quote_nullable PGNSP PGUID 14 1 0 0 0 f f f f f f s s 1 0 25 "2283" _null_ _null_ _null_ _null_ _null_ "select pg_catalog.quote_nullable($1::pg_catalog.text)" _null_ _null_ _null_ )); -DESCR("quote a possibly-null data value for usage in a querystring"); - -DATA(insert OID = 1798 ( oidin PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 26 "2275" _null_ _null_ _null_ _null_ _null_ oidin _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 1799 ( oidout PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 2275 "26" _null_ _null_ _null_ _null_ _null_ oidout _null_ _null_ _null_ )); -DESCR("I/O"); - -DATA(insert OID = 3058 ( concat PGNSP PGUID 12 1 0 2276 0 f f f f f f s s 1 0 25 "2276" "{2276}" "{v}" _null_ _null_ _null_ text_concat _null_ _null_ _null_ )); -DESCR("concatenate values"); -DATA(insert OID = 3059 ( concat_ws PGNSP PGUID 12 1 0 2276 0 f f f f f f s s 2 0 25 "25 2276" "{25,2276}" "{i,v}" _null_ _null_ _null_ text_concat_ws _null_ _null_ _null_ )); -DESCR("concatenate values with separators"); -DATA(insert OID = 3060 ( left PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 25 "25 23" _null_ _null_ _null_ _null_ _null_ text_left _null_ _null_ _null_ )); -DESCR("extract the first n characters"); -DATA(insert OID = 3061 ( right PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 25 "25 23" _null_ _null_ _null_ _null_ _null_ text_right _null_ _null_ _null_ )); -DESCR("extract the last n characters"); -DATA(insert OID = 3062 ( reverse PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 25 "25" _null_ _null_ _null_ _null_ _null_ text_reverse _null_ _null_ _null_ )); -DESCR("reverse text"); -DATA(insert OID = 3539 ( format PGNSP PGUID 12 1 0 2276 0 f f f f f f s s 2 0 25 "25 2276" "{25,2276}" "{i,v}" _null_ _null_ _null_ text_format _null_ _null_ _null_ )); -DESCR("format text message"); -DATA(insert OID = 3540 ( format PGNSP PGUID 12 1 0 0 0 f f f f f f s s 1 0 25 "25" _null_ _null_ _null_ _null_ _null_ text_format_nv _null_ _null_ _null_ )); -DESCR("format text message"); - -DATA(insert OID = 1810 ( bit_length PGNSP PGUID 14 1 0 0 0 f f f f t f i s 1 0 23 "17" _null_ _null_ _null_ _null_ _null_ "select pg_catalog.octet_length($1) * 8" _null_ _null_ _null_ )); -DESCR("length in bits"); -DATA(insert OID = 1811 ( bit_length PGNSP PGUID 14 1 0 0 0 f f f f t f i s 1 0 23 "25" _null_ _null_ _null_ _null_ _null_ "select pg_catalog.octet_length($1) * 8" _null_ _null_ _null_ )); -DESCR("length in bits"); -DATA(insert OID = 1812 ( bit_length PGNSP PGUID 14 1 0 0 0 f f f f t f i s 1 0 23 "1560" _null_ _null_ _null_ _null_ _null_ "select pg_catalog.length($1)" _null_ _null_ _null_ )); -DESCR("length in bits"); - -/* Selectivity estimators for LIKE and related operators */ -DATA(insert OID = 1814 ( iclikesel PGNSP PGUID 12 1 0 0 0 f f f f t f s s 4 0 701 "2281 26 2281 23" _null_ _null_ _null_ _null_ _null_ iclikesel _null_ _null_ _null_ )); -DESCR("restriction selectivity of ILIKE"); -DATA(insert OID = 1815 ( icnlikesel PGNSP PGUID 12 1 0 0 0 f f f f t f s s 4 0 701 "2281 26 2281 23" _null_ _null_ _null_ _null_ _null_ icnlikesel _null_ _null_ _null_ )); -DESCR("restriction selectivity of NOT ILIKE"); -DATA(insert OID = 1816 ( iclikejoinsel PGNSP PGUID 12 1 0 0 0 f f f f t f s s 5 0 701 "2281 26 2281 21 2281" _null_ _null_ _null_ _null_ _null_ iclikejoinsel _null_ _null_ _null_ )); -DESCR("join selectivity of ILIKE"); -DATA(insert OID = 1817 ( icnlikejoinsel PGNSP PGUID 12 1 0 0 0 f f f f t f s s 5 0 701 "2281 26 2281 21 2281" _null_ _null_ _null_ _null_ _null_ icnlikejoinsel _null_ _null_ _null_ )); -DESCR("join selectivity of NOT ILIKE"); -DATA(insert OID = 1818 ( regexeqsel PGNSP PGUID 12 1 0 0 0 f f f f t f s s 4 0 701 "2281 26 2281 23" _null_ _null_ _null_ _null_ _null_ regexeqsel _null_ _null_ _null_ )); -DESCR("restriction selectivity of regex match"); -DATA(insert OID = 1819 ( likesel PGNSP PGUID 12 1 0 0 0 f f f f t f s s 4 0 701 "2281 26 2281 23" _null_ _null_ _null_ _null_ _null_ likesel _null_ _null_ _null_ )); -DESCR("restriction selectivity of LIKE"); -DATA(insert OID = 1820 ( icregexeqsel PGNSP PGUID 12 1 0 0 0 f f f f t f s s 4 0 701 "2281 26 2281 23" _null_ _null_ _null_ _null_ _null_ icregexeqsel _null_ _null_ _null_ )); -DESCR("restriction selectivity of case-insensitive regex match"); -DATA(insert OID = 1821 ( regexnesel PGNSP PGUID 12 1 0 0 0 f f f f t f s s 4 0 701 "2281 26 2281 23" _null_ _null_ _null_ _null_ _null_ regexnesel _null_ _null_ _null_ )); -DESCR("restriction selectivity of regex non-match"); -DATA(insert OID = 1822 ( nlikesel PGNSP PGUID 12 1 0 0 0 f f f f t f s s 4 0 701 "2281 26 2281 23" _null_ _null_ _null_ _null_ _null_ nlikesel _null_ _null_ _null_ )); -DESCR("restriction selectivity of NOT LIKE"); -DATA(insert OID = 1823 ( icregexnesel PGNSP PGUID 12 1 0 0 0 f f f f t f s s 4 0 701 "2281 26 2281 23" _null_ _null_ _null_ _null_ _null_ icregexnesel _null_ _null_ _null_ )); -DESCR("restriction selectivity of case-insensitive regex non-match"); -DATA(insert OID = 1824 ( regexeqjoinsel PGNSP PGUID 12 1 0 0 0 f f f f t f s s 5 0 701 "2281 26 2281 21 2281" _null_ _null_ _null_ _null_ _null_ regexeqjoinsel _null_ _null_ _null_ )); -DESCR("join selectivity of regex match"); -DATA(insert OID = 1825 ( likejoinsel PGNSP PGUID 12 1 0 0 0 f f f f t f s s 5 0 701 "2281 26 2281 21 2281" _null_ _null_ _null_ _null_ _null_ likejoinsel _null_ _null_ _null_ )); -DESCR("join selectivity of LIKE"); -DATA(insert OID = 1826 ( icregexeqjoinsel PGNSP PGUID 12 1 0 0 0 f f f f t f s s 5 0 701 "2281 26 2281 21 2281" _null_ _null_ _null_ _null_ _null_ icregexeqjoinsel _null_ _null_ _null_ )); -DESCR("join selectivity of case-insensitive regex match"); -DATA(insert OID = 1827 ( regexnejoinsel PGNSP PGUID 12 1 0 0 0 f f f f t f s s 5 0 701 "2281 26 2281 21 2281" _null_ _null_ _null_ _null_ _null_ regexnejoinsel _null_ _null_ _null_ )); -DESCR("join selectivity of regex non-match"); -DATA(insert OID = 1828 ( nlikejoinsel PGNSP PGUID 12 1 0 0 0 f f f f t f s s 5 0 701 "2281 26 2281 21 2281" _null_ _null_ _null_ _null_ _null_ nlikejoinsel _null_ _null_ _null_ )); -DESCR("join selectivity of NOT LIKE"); -DATA(insert OID = 1829 ( icregexnejoinsel PGNSP PGUID 12 1 0 0 0 f f f f t f s s 5 0 701 "2281 26 2281 21 2281" _null_ _null_ _null_ _null_ _null_ icregexnejoinsel _null_ _null_ _null_ )); -DESCR("join selectivity of case-insensitive regex non-match"); - -/* Aggregate-related functions */ -DATA(insert OID = 1830 ( float8_avg PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 701 "1022" _null_ _null_ _null_ _null_ _null_ float8_avg _null_ _null_ _null_ )); -DESCR("aggregate final function"); -DATA(insert OID = 2512 ( float8_var_pop PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 701 "1022" _null_ _null_ _null_ _null_ _null_ float8_var_pop _null_ _null_ _null_ )); -DESCR("aggregate final function"); -DATA(insert OID = 1831 ( float8_var_samp PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 701 "1022" _null_ _null_ _null_ _null_ _null_ float8_var_samp _null_ _null_ _null_ )); -DESCR("aggregate final function"); -DATA(insert OID = 2513 ( float8_stddev_pop PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 701 "1022" _null_ _null_ _null_ _null_ _null_ float8_stddev_pop _null_ _null_ _null_ )); -DESCR("aggregate final function"); -DATA(insert OID = 1832 ( float8_stddev_samp PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 701 "1022" _null_ _null_ _null_ _null_ _null_ float8_stddev_samp _null_ _null_ _null_ )); -DESCR("aggregate final function"); -DATA(insert OID = 1833 ( numeric_accum PGNSP PGUID 12 1 0 0 0 f f f f f f i s 2 0 2281 "2281 1700" _null_ _null_ _null_ _null_ _null_ numeric_accum _null_ _null_ _null_ )); -DESCR("aggregate transition function"); -DATA(insert OID = 3341 ( numeric_combine PGNSP PGUID 12 1 0 0 0 f f f f f f i s 2 0 2281 "2281 2281" _null_ _null_ _null_ _null_ _null_ numeric_combine _null_ _null_ _null_ )); -DESCR("aggregate combine function"); -DATA(insert OID = 2858 ( numeric_avg_accum PGNSP PGUID 12 1 0 0 0 f f f f f f i s 2 0 2281 "2281 1700" _null_ _null_ _null_ _null_ _null_ numeric_avg_accum _null_ _null_ _null_ )); -DESCR("aggregate transition function"); -DATA(insert OID = 3337 ( numeric_avg_combine PGNSP PGUID 12 1 0 0 0 f f f f f f i s 2 0 2281 "2281 2281" _null_ _null_ _null_ _null_ _null_ numeric_avg_combine _null_ _null_ _null_ )); -DESCR("aggregate combine function"); -DATA(insert OID = 2740 ( numeric_avg_serialize PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 17 "2281" _null_ _null_ _null_ _null_ _null_ numeric_avg_serialize _null_ _null_ _null_ )); -DESCR("aggregate serial function"); -DATA(insert OID = 2741 ( numeric_avg_deserialize PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 2281 "17 2281" _null_ _null_ _null_ _null_ _null_ numeric_avg_deserialize _null_ _null_ _null_ )); -DESCR("aggregate deserial function"); -DATA(insert OID = 3335 ( numeric_serialize PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 17 "2281" _null_ _null_ _null_ _null_ _null_ numeric_serialize _null_ _null_ _null_ )); -DESCR("aggregate serial function"); -DATA(insert OID = 3336 ( numeric_deserialize PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 2281 "17 2281" _null_ _null_ _null_ _null_ _null_ numeric_deserialize _null_ _null_ _null_ )); -DESCR("aggregate deserial function"); -DATA(insert OID = 3548 ( numeric_accum_inv PGNSP PGUID 12 1 0 0 0 f f f f f f i s 2 0 2281 "2281 1700" _null_ _null_ _null_ _null_ _null_ numeric_accum_inv _null_ _null_ _null_ )); -DESCR("aggregate transition function"); -DATA(insert OID = 1834 ( int2_accum PGNSP PGUID 12 1 0 0 0 f f f f f f i s 2 0 2281 "2281 21" _null_ _null_ _null_ _null_ _null_ int2_accum _null_ _null_ _null_ )); -DESCR("aggregate transition function"); -DATA(insert OID = 1835 ( int4_accum PGNSP PGUID 12 1 0 0 0 f f f f f f i s 2 0 2281 "2281 23" _null_ _null_ _null_ _null_ _null_ int4_accum _null_ _null_ _null_ )); -DESCR("aggregate transition function"); -DATA(insert OID = 1836 ( int8_accum PGNSP PGUID 12 1 0 0 0 f f f f f f i s 2 0 2281 "2281 20" _null_ _null_ _null_ _null_ _null_ int8_accum _null_ _null_ _null_ )); -DESCR("aggregate transition function"); -DATA(insert OID = 3338 ( numeric_poly_combine PGNSP PGUID 12 1 0 0 0 f f f f f f i s 2 0 2281 "2281 2281" _null_ _null_ _null_ _null_ _null_ numeric_poly_combine _null_ _null_ _null_ )); -DESCR("aggregate combine function"); -DATA(insert OID = 3339 ( numeric_poly_serialize PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 17 "2281" _null_ _null_ _null_ _null_ _null_ numeric_poly_serialize _null_ _null_ _null_ )); -DESCR("aggregate serial function"); -DATA(insert OID = 3340 ( numeric_poly_deserialize PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 2281 "17 2281" _null_ _null_ _null_ _null_ _null_ numeric_poly_deserialize _null_ _null_ _null_ )); -DESCR("aggregate deserial function"); -DATA(insert OID = 2746 ( int8_avg_accum PGNSP PGUID 12 1 0 0 0 f f f f f f i s 2 0 2281 "2281 20" _null_ _null_ _null_ _null_ _null_ int8_avg_accum _null_ _null_ _null_ )); -DESCR("aggregate transition function"); -DATA(insert OID = 3567 ( int2_accum_inv PGNSP PGUID 12 1 0 0 0 f f f f f f i s 2 0 2281 "2281 21" _null_ _null_ _null_ _null_ _null_ int2_accum_inv _null_ _null_ _null_ )); -DESCR("aggregate transition function"); -DATA(insert OID = 3568 ( int4_accum_inv PGNSP PGUID 12 1 0 0 0 f f f f f f i s 2 0 2281 "2281 23" _null_ _null_ _null_ _null_ _null_ int4_accum_inv _null_ _null_ _null_ )); -DESCR("aggregate transition function"); -DATA(insert OID = 3569 ( int8_accum_inv PGNSP PGUID 12 1 0 0 0 f f f f f f i s 2 0 2281 "2281 20" _null_ _null_ _null_ _null_ _null_ int8_accum_inv _null_ _null_ _null_ )); -DESCR("aggregate transition function"); -DATA(insert OID = 3387 ( int8_avg_accum_inv PGNSP PGUID 12 1 0 0 0 f f f f f f i s 2 0 2281 "2281 20" _null_ _null_ _null_ _null_ _null_ int8_avg_accum_inv _null_ _null_ _null_ )); -DESCR("aggregate transition function"); -DATA(insert OID = 2785 ( int8_avg_combine PGNSP PGUID 12 1 0 0 0 f f f f f f i s 2 0 2281 "2281 2281" _null_ _null_ _null_ _null_ _null_ int8_avg_combine _null_ _null_ _null_ )); -DESCR("aggregate combine function"); -DATA(insert OID = 2786 ( int8_avg_serialize PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 17 "2281" _null_ _null_ _null_ _null_ _null_ int8_avg_serialize _null_ _null_ _null_ )); -DESCR("aggregate serial function"); -DATA(insert OID = 2787 ( int8_avg_deserialize PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 2281 "17 2281" _null_ _null_ _null_ _null_ _null_ int8_avg_deserialize _null_ _null_ _null_ )); -DESCR("aggregate deserial function"); -DATA(insert OID = 3324 ( int4_avg_combine PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 1016 "1016 1016" _null_ _null_ _null_ _null_ _null_ int4_avg_combine _null_ _null_ _null_ )); -DESCR("aggregate combine function"); -DATA(insert OID = 3178 ( numeric_sum PGNSP PGUID 12 1 0 0 0 f f f f f f i s 1 0 1700 "2281" _null_ _null_ _null_ _null_ _null_ numeric_sum _null_ _null_ _null_ )); -DESCR("aggregate final function"); -DATA(insert OID = 1837 ( numeric_avg PGNSP PGUID 12 1 0 0 0 f f f f f f i s 1 0 1700 "2281" _null_ _null_ _null_ _null_ _null_ numeric_avg _null_ _null_ _null_ )); -DESCR("aggregate final function"); -DATA(insert OID = 2514 ( numeric_var_pop PGNSP PGUID 12 1 0 0 0 f f f f f f i s 1 0 1700 "2281" _null_ _null_ _null_ _null_ _null_ numeric_var_pop _null_ _null_ _null_ )); -DESCR("aggregate final function"); -DATA(insert OID = 1838 ( numeric_var_samp PGNSP PGUID 12 1 0 0 0 f f f f f f i s 1 0 1700 "2281" _null_ _null_ _null_ _null_ _null_ numeric_var_samp _null_ _null_ _null_ )); -DESCR("aggregate final function"); -DATA(insert OID = 2596 ( numeric_stddev_pop PGNSP PGUID 12 1 0 0 0 f f f f f f i s 1 0 1700 "2281" _null_ _null_ _null_ _null_ _null_ numeric_stddev_pop _null_ _null_ _null_ )); -DESCR("aggregate final function"); -DATA(insert OID = 1839 ( numeric_stddev_samp PGNSP PGUID 12 1 0 0 0 f f f f f f i s 1 0 1700 "2281" _null_ _null_ _null_ _null_ _null_ numeric_stddev_samp _null_ _null_ _null_ )); -DESCR("aggregate final function"); -DATA(insert OID = 1840 ( int2_sum PGNSP PGUID 12 1 0 0 0 f f f f f f i s 2 0 20 "20 21" _null_ _null_ _null_ _null_ _null_ int2_sum _null_ _null_ _null_ )); -DESCR("aggregate transition function"); -DATA(insert OID = 1841 ( int4_sum PGNSP PGUID 12 1 0 0 0 f f f f f f i s 2 0 20 "20 23" _null_ _null_ _null_ _null_ _null_ int4_sum _null_ _null_ _null_ )); -DESCR("aggregate transition function"); -DATA(insert OID = 1842 ( int8_sum PGNSP PGUID 12 1 0 0 0 f f f f f f i s 2 0 1700 "1700 20" _null_ _null_ _null_ _null_ _null_ int8_sum _null_ _null_ _null_ )); -DESCR("aggregate transition function"); -DATA(insert OID = 3388 ( numeric_poly_sum PGNSP PGUID 12 1 0 0 0 f f f f f f i s 1 0 1700 "2281" _null_ _null_ _null_ _null_ _null_ numeric_poly_sum _null_ _null_ _null_ )); -DESCR("aggregate final function"); -DATA(insert OID = 3389 ( numeric_poly_avg PGNSP PGUID 12 1 0 0 0 f f f f f f i s 1 0 1700 "2281" _null_ _null_ _null_ _null_ _null_ numeric_poly_avg _null_ _null_ _null_ )); -DESCR("aggregate final function"); -DATA(insert OID = 3390 ( numeric_poly_var_pop PGNSP PGUID 12 1 0 0 0 f f f f f f i s 1 0 1700 "2281" _null_ _null_ _null_ _null_ _null_ numeric_poly_var_pop _null_ _null_ _null_ )); -DESCR("aggregate final function"); -DATA(insert OID = 3391 ( numeric_poly_var_samp PGNSP PGUID 12 1 0 0 0 f f f f f f i s 1 0 1700 "2281" _null_ _null_ _null_ _null_ _null_ numeric_poly_var_samp _null_ _null_ _null_ )); -DESCR("aggregate final function"); -DATA(insert OID = 3392 ( numeric_poly_stddev_pop PGNSP PGUID 12 1 0 0 0 f f f f f f i s 1 0 1700 "2281" _null_ _null_ _null_ _null_ _null_ numeric_poly_stddev_pop _null_ _null_ _null_ )); -DESCR("aggregate final function"); -DATA(insert OID = 3393 ( numeric_poly_stddev_samp PGNSP PGUID 12 1 0 0 0 f f f f f f i s 1 0 1700 "2281" _null_ _null_ _null_ _null_ _null_ numeric_poly_stddev_samp _null_ _null_ _null_ )); -DESCR("aggregate final function"); - -DATA(insert OID = 1843 ( interval_accum PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 1187 "1187 1186" _null_ _null_ _null_ _null_ _null_ interval_accum _null_ _null_ _null_ )); -DESCR("aggregate transition function"); -DATA(insert OID = 3325 ( interval_combine PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 1187 "1187 1187" _null_ _null_ _null_ _null_ _null_ interval_combine _null_ _null_ _null_ )); -DESCR("aggregate combine function"); -DATA(insert OID = 3549 ( interval_accum_inv PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 1187 "1187 1186" _null_ _null_ _null_ _null_ _null_ interval_accum_inv _null_ _null_ _null_ )); -DESCR("aggregate transition function"); -DATA(insert OID = 1844 ( interval_avg PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 1186 "1187" _null_ _null_ _null_ _null_ _null_ interval_avg _null_ _null_ _null_ )); -DESCR("aggregate final function"); -DATA(insert OID = 1962 ( int2_avg_accum PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 1016 "1016 21" _null_ _null_ _null_ _null_ _null_ int2_avg_accum _null_ _null_ _null_ )); -DESCR("aggregate transition function"); -DATA(insert OID = 1963 ( int4_avg_accum PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 1016 "1016 23" _null_ _null_ _null_ _null_ _null_ int4_avg_accum _null_ _null_ _null_ )); -DESCR("aggregate transition function"); -DATA(insert OID = 3570 ( int2_avg_accum_inv PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 1016 "1016 21" _null_ _null_ _null_ _null_ _null_ int2_avg_accum_inv _null_ _null_ _null_ )); -DESCR("aggregate transition function"); -DATA(insert OID = 3571 ( int4_avg_accum_inv PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 1016 "1016 23" _null_ _null_ _null_ _null_ _null_ int4_avg_accum_inv _null_ _null_ _null_ )); -DESCR("aggregate transition function"); -DATA(insert OID = 1964 ( int8_avg PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 1700 "1016" _null_ _null_ _null_ _null_ _null_ int8_avg _null_ _null_ _null_ )); -DESCR("aggregate final function"); -DATA(insert OID = 3572 ( int2int4_sum PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 20 "1016" _null_ _null_ _null_ _null_ _null_ int2int4_sum _null_ _null_ _null_ )); -DESCR("aggregate final function"); -DATA(insert OID = 2805 ( int8inc_float8_float8 PGNSP PGUID 12 1 0 0 0 f f f f t f i s 3 0 20 "20 701 701" _null_ _null_ _null_ _null_ _null_ int8inc_float8_float8 _null_ _null_ _null_ )); -DESCR("aggregate transition function"); -DATA(insert OID = 2806 ( float8_regr_accum PGNSP PGUID 12 1 0 0 0 f f f f t f i s 3 0 1022 "1022 701 701" _null_ _null_ _null_ _null_ _null_ float8_regr_accum _null_ _null_ _null_ )); -DESCR("aggregate transition function"); -DATA(insert OID = 3342 ( float8_regr_combine PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 1022 "1022 1022" _null_ _null_ _null_ _null_ _null_ float8_regr_combine _null_ _null_ _null_ )); -DESCR("aggregate combine function"); -DATA(insert OID = 2807 ( float8_regr_sxx PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 701 "1022" _null_ _null_ _null_ _null_ _null_ float8_regr_sxx _null_ _null_ _null_ )); -DESCR("aggregate final function"); -DATA(insert OID = 2808 ( float8_regr_syy PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 701 "1022" _null_ _null_ _null_ _null_ _null_ float8_regr_syy _null_ _null_ _null_ )); -DESCR("aggregate final function"); -DATA(insert OID = 2809 ( float8_regr_sxy PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 701 "1022" _null_ _null_ _null_ _null_ _null_ float8_regr_sxy _null_ _null_ _null_ )); -DESCR("aggregate final function"); -DATA(insert OID = 2810 ( float8_regr_avgx PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 701 "1022" _null_ _null_ _null_ _null_ _null_ float8_regr_avgx _null_ _null_ _null_ )); -DESCR("aggregate final function"); -DATA(insert OID = 2811 ( float8_regr_avgy PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 701 "1022" _null_ _null_ _null_ _null_ _null_ float8_regr_avgy _null_ _null_ _null_ )); -DESCR("aggregate final function"); -DATA(insert OID = 2812 ( float8_regr_r2 PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 701 "1022" _null_ _null_ _null_ _null_ _null_ float8_regr_r2 _null_ _null_ _null_ )); -DESCR("aggregate final function"); -DATA(insert OID = 2813 ( float8_regr_slope PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 701 "1022" _null_ _null_ _null_ _null_ _null_ float8_regr_slope _null_ _null_ _null_ )); -DESCR("aggregate final function"); -DATA(insert OID = 2814 ( float8_regr_intercept PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 701 "1022" _null_ _null_ _null_ _null_ _null_ float8_regr_intercept _null_ _null_ _null_ )); -DESCR("aggregate final function"); -DATA(insert OID = 2815 ( float8_covar_pop PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 701 "1022" _null_ _null_ _null_ _null_ _null_ float8_covar_pop _null_ _null_ _null_ )); -DESCR("aggregate final function"); -DATA(insert OID = 2816 ( float8_covar_samp PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 701 "1022" _null_ _null_ _null_ _null_ _null_ float8_covar_samp _null_ _null_ _null_ )); -DESCR("aggregate final function"); -DATA(insert OID = 2817 ( float8_corr PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 701 "1022" _null_ _null_ _null_ _null_ _null_ float8_corr _null_ _null_ _null_ )); -DESCR("aggregate final function"); - -DATA(insert OID = 3535 ( string_agg_transfn PGNSP PGUID 12 1 0 0 0 f f f f f f i s 3 0 2281 "2281 25 25" _null_ _null_ _null_ _null_ _null_ string_agg_transfn _null_ _null_ _null_ )); -DESCR("aggregate transition function"); -DATA(insert OID = 3536 ( string_agg_finalfn PGNSP PGUID 12 1 0 0 0 f f f f f f i s 1 0 25 "2281" _null_ _null_ _null_ _null_ _null_ string_agg_finalfn _null_ _null_ _null_ )); -DESCR("aggregate final function"); -DATA(insert OID = 3538 ( string_agg PGNSP PGUID 12 1 0 0 0 t f f f f f i s 2 0 25 "25 25" _null_ _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ )); -DESCR("concatenate aggregate input into a string"); -DATA(insert OID = 3543 ( bytea_string_agg_transfn PGNSP PGUID 12 1 0 0 0 f f f f f f i s 3 0 2281 "2281 17 17" _null_ _null_ _null_ _null_ _null_ bytea_string_agg_transfn _null_ _null_ _null_ )); -DESCR("aggregate transition function"); -DATA(insert OID = 3544 ( bytea_string_agg_finalfn PGNSP PGUID 12 1 0 0 0 f f f f f f i s 1 0 17 "2281" _null_ _null_ _null_ _null_ _null_ bytea_string_agg_finalfn _null_ _null_ _null_ )); -DESCR("aggregate final function"); -DATA(insert OID = 3545 ( string_agg PGNSP PGUID 12 1 0 0 0 t f f f f f i s 2 0 17 "17 17" _null_ _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ )); -DESCR("concatenate aggregate input into a bytea"); - -/* To ASCII conversion */ -DATA(insert OID = 1845 ( to_ascii PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 25 "25" _null_ _null_ _null_ _null_ _null_ to_ascii_default _null_ _null_ _null_ )); -DESCR("encode text from DB encoding to ASCII text"); -DATA(insert OID = 1846 ( to_ascii PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 25 "25 23" _null_ _null_ _null_ _null_ _null_ to_ascii_enc _null_ _null_ _null_ )); -DESCR("encode text from encoding to ASCII text"); -DATA(insert OID = 1847 ( to_ascii PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 25 "25 19" _null_ _null_ _null_ _null_ _null_ to_ascii_encname _null_ _null_ _null_ )); -DESCR("encode text from encoding to ASCII text"); - -DATA(insert OID = 1848 ( interval_pl_time PGNSP PGUID 14 1 0 0 0 f f f f t f i s 2 0 1083 "1186 1083" _null_ _null_ _null_ _null_ _null_ "select $2 + $1" _null_ _null_ _null_ )); - -DATA(insert OID = 1850 ( int28eq PGNSP PGUID 12 1 0 0 0 f f f t t f i s 2 0 16 "21 20" _null_ _null_ _null_ _null_ _null_ int28eq _null_ _null_ _null_ )); -DATA(insert OID = 1851 ( int28ne PGNSP PGUID 12 1 0 0 0 f f f t t f i s 2 0 16 "21 20" _null_ _null_ _null_ _null_ _null_ int28ne _null_ _null_ _null_ )); -DATA(insert OID = 1852 ( int28lt PGNSP PGUID 12 1 0 0 0 f f f t t f i s 2 0 16 "21 20" _null_ _null_ _null_ _null_ _null_ int28lt _null_ _null_ _null_ )); -DATA(insert OID = 1853 ( int28gt PGNSP PGUID 12 1 0 0 0 f f f t t f i s 2 0 16 "21 20" _null_ _null_ _null_ _null_ _null_ int28gt _null_ _null_ _null_ )); -DATA(insert OID = 1854 ( int28le PGNSP PGUID 12 1 0 0 0 f f f t t f i s 2 0 16 "21 20" _null_ _null_ _null_ _null_ _null_ int28le _null_ _null_ _null_ )); -DATA(insert OID = 1855 ( int28ge PGNSP PGUID 12 1 0 0 0 f f f t t f i s 2 0 16 "21 20" _null_ _null_ _null_ _null_ _null_ int28ge _null_ _null_ _null_ )); - -DATA(insert OID = 1856 ( int82eq PGNSP PGUID 12 1 0 0 0 f f f t t f i s 2 0 16 "20 21" _null_ _null_ _null_ _null_ _null_ int82eq _null_ _null_ _null_ )); -DATA(insert OID = 1857 ( int82ne PGNSP PGUID 12 1 0 0 0 f f f t t f i s 2 0 16 "20 21" _null_ _null_ _null_ _null_ _null_ int82ne _null_ _null_ _null_ )); -DATA(insert OID = 1858 ( int82lt PGNSP PGUID 12 1 0 0 0 f f f t t f i s 2 0 16 "20 21" _null_ _null_ _null_ _null_ _null_ int82lt _null_ _null_ _null_ )); -DATA(insert OID = 1859 ( int82gt PGNSP PGUID 12 1 0 0 0 f f f t t f i s 2 0 16 "20 21" _null_ _null_ _null_ _null_ _null_ int82gt _null_ _null_ _null_ )); -DATA(insert OID = 1860 ( int82le PGNSP PGUID 12 1 0 0 0 f f f t t f i s 2 0 16 "20 21" _null_ _null_ _null_ _null_ _null_ int82le _null_ _null_ _null_ )); -DATA(insert OID = 1861 ( int82ge PGNSP PGUID 12 1 0 0 0 f f f t t f i s 2 0 16 "20 21" _null_ _null_ _null_ _null_ _null_ int82ge _null_ _null_ _null_ )); - -DATA(insert OID = 1892 ( int2and PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 21 "21 21" _null_ _null_ _null_ _null_ _null_ int2and _null_ _null_ _null_ )); -DATA(insert OID = 1893 ( int2or PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 21 "21 21" _null_ _null_ _null_ _null_ _null_ int2or _null_ _null_ _null_ )); -DATA(insert OID = 1894 ( int2xor PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 21 "21 21" _null_ _null_ _null_ _null_ _null_ int2xor _null_ _null_ _null_ )); -DATA(insert OID = 1895 ( int2not PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 21 "21" _null_ _null_ _null_ _null_ _null_ int2not _null_ _null_ _null_ )); -DATA(insert OID = 1896 ( int2shl PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 21 "21 23" _null_ _null_ _null_ _null_ _null_ int2shl _null_ _null_ _null_ )); -DATA(insert OID = 1897 ( int2shr PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 21 "21 23" _null_ _null_ _null_ _null_ _null_ int2shr _null_ _null_ _null_ )); - -DATA(insert OID = 1898 ( int4and PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 23 "23 23" _null_ _null_ _null_ _null_ _null_ int4and _null_ _null_ _null_ )); -DATA(insert OID = 1899 ( int4or PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 23 "23 23" _null_ _null_ _null_ _null_ _null_ int4or _null_ _null_ _null_ )); -DATA(insert OID = 1900 ( int4xor PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 23 "23 23" _null_ _null_ _null_ _null_ _null_ int4xor _null_ _null_ _null_ )); -DATA(insert OID = 1901 ( int4not PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 23 "23" _null_ _null_ _null_ _null_ _null_ int4not _null_ _null_ _null_ )); -DATA(insert OID = 1902 ( int4shl PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 23 "23 23" _null_ _null_ _null_ _null_ _null_ int4shl _null_ _null_ _null_ )); -DATA(insert OID = 1903 ( int4shr PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 23 "23 23" _null_ _null_ _null_ _null_ _null_ int4shr _null_ _null_ _null_ )); - -DATA(insert OID = 1904 ( int8and PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 20 "20 20" _null_ _null_ _null_ _null_ _null_ int8and _null_ _null_ _null_ )); -DATA(insert OID = 1905 ( int8or PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 20 "20 20" _null_ _null_ _null_ _null_ _null_ int8or _null_ _null_ _null_ )); -DATA(insert OID = 1906 ( int8xor PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 20 "20 20" _null_ _null_ _null_ _null_ _null_ int8xor _null_ _null_ _null_ )); -DATA(insert OID = 1907 ( int8not PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 20 "20" _null_ _null_ _null_ _null_ _null_ int8not _null_ _null_ _null_ )); -DATA(insert OID = 1908 ( int8shl PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 20 "20 23" _null_ _null_ _null_ _null_ _null_ int8shl _null_ _null_ _null_ )); -DATA(insert OID = 1909 ( int8shr PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 20 "20 23" _null_ _null_ _null_ _null_ _null_ int8shr _null_ _null_ _null_ )); - -DATA(insert OID = 1910 ( int8up PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 20 "20" _null_ _null_ _null_ _null_ _null_ int8up _null_ _null_ _null_ )); -DATA(insert OID = 1911 ( int2up PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 21 "21" _null_ _null_ _null_ _null_ _null_ int2up _null_ _null_ _null_ )); -DATA(insert OID = 1912 ( int4up PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 23 "23" _null_ _null_ _null_ _null_ _null_ int4up _null_ _null_ _null_ )); -DATA(insert OID = 1913 ( float4up PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 700 "700" _null_ _null_ _null_ _null_ _null_ float4up _null_ _null_ _null_ )); -DATA(insert OID = 1914 ( float8up PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 701 "701" _null_ _null_ _null_ _null_ _null_ float8up _null_ _null_ _null_ )); -DATA(insert OID = 1915 ( numeric_uplus PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 1700 "1700" _null_ _null_ _null_ _null_ _null_ numeric_uplus _null_ _null_ _null_ )); - -DATA(insert OID = 1922 ( has_table_privilege PGNSP PGUID 12 1 0 0 0 f f f f t f s s 3 0 16 "19 25 25" _null_ _null_ _null_ _null_ _null_ has_table_privilege_name_name _null_ _null_ _null_ )); -DESCR("user privilege on relation by username, rel name"); -DATA(insert OID = 1923 ( has_table_privilege PGNSP PGUID 12 1 0 0 0 f f f f t f s s 3 0 16 "19 26 25" _null_ _null_ _null_ _null_ _null_ has_table_privilege_name_id _null_ _null_ _null_ )); -DESCR("user privilege on relation by username, rel oid"); -DATA(insert OID = 1924 ( has_table_privilege PGNSP PGUID 12 1 0 0 0 f f f f t f s s 3 0 16 "26 25 25" _null_ _null_ _null_ _null_ _null_ has_table_privilege_id_name _null_ _null_ _null_ )); -DESCR("user privilege on relation by user oid, rel name"); -DATA(insert OID = 1925 ( has_table_privilege PGNSP PGUID 12 1 0 0 0 f f f f t f s s 3 0 16 "26 26 25" _null_ _null_ _null_ _null_ _null_ has_table_privilege_id_id _null_ _null_ _null_ )); -DESCR("user privilege on relation by user oid, rel oid"); -DATA(insert OID = 1926 ( has_table_privilege PGNSP PGUID 12 1 0 0 0 f f f f t f s s 2 0 16 "25 25" _null_ _null_ _null_ _null_ _null_ has_table_privilege_name _null_ _null_ _null_ )); -DESCR("current user privilege on relation by rel name"); -DATA(insert OID = 1927 ( has_table_privilege PGNSP PGUID 12 1 0 0 0 f f f f t f s s 2 0 16 "26 25" _null_ _null_ _null_ _null_ _null_ has_table_privilege_id _null_ _null_ _null_ )); -DESCR("current user privilege on relation by rel oid"); - -DATA(insert OID = 2181 ( has_sequence_privilege PGNSP PGUID 12 1 0 0 0 f f f f t f s s 3 0 16 "19 25 25" _null_ _null_ _null_ _null_ _null_ has_sequence_privilege_name_name _null_ _null_ _null_ )); -DESCR("user privilege on sequence by username, seq name"); -DATA(insert OID = 2182 ( has_sequence_privilege PGNSP PGUID 12 1 0 0 0 f f f f t f s s 3 0 16 "19 26 25" _null_ _null_ _null_ _null_ _null_ has_sequence_privilege_name_id _null_ _null_ _null_ )); -DESCR("user privilege on sequence by username, seq oid"); -DATA(insert OID = 2183 ( has_sequence_privilege PGNSP PGUID 12 1 0 0 0 f f f f t f s s 3 0 16 "26 25 25" _null_ _null_ _null_ _null_ _null_ has_sequence_privilege_id_name _null_ _null_ _null_ )); -DESCR("user privilege on sequence by user oid, seq name"); -DATA(insert OID = 2184 ( has_sequence_privilege PGNSP PGUID 12 1 0 0 0 f f f f t f s s 3 0 16 "26 26 25" _null_ _null_ _null_ _null_ _null_ has_sequence_privilege_id_id _null_ _null_ _null_ )); -DESCR("user privilege on sequence by user oid, seq oid"); -DATA(insert OID = 2185 ( has_sequence_privilege PGNSP PGUID 12 1 0 0 0 f f f f t f s s 2 0 16 "25 25" _null_ _null_ _null_ _null_ _null_ has_sequence_privilege_name _null_ _null_ _null_ )); -DESCR("current user privilege on sequence by seq name"); -DATA(insert OID = 2186 ( has_sequence_privilege PGNSP PGUID 12 1 0 0 0 f f f f t f s s 2 0 16 "26 25" _null_ _null_ _null_ _null_ _null_ has_sequence_privilege_id _null_ _null_ _null_ )); -DESCR("current user privilege on sequence by seq oid"); - -DATA(insert OID = 3012 ( has_column_privilege PGNSP PGUID 12 1 0 0 0 f f f f t f s s 4 0 16 "19 25 25 25" _null_ _null_ _null_ _null_ _null_ has_column_privilege_name_name_name _null_ _null_ _null_ )); -DESCR("user privilege on column by username, rel name, col name"); -DATA(insert OID = 3013 ( has_column_privilege PGNSP PGUID 12 1 0 0 0 f f f f t f s s 4 0 16 "19 25 21 25" _null_ _null_ _null_ _null_ _null_ has_column_privilege_name_name_attnum _null_ _null_ _null_ )); -DESCR("user privilege on column by username, rel name, col attnum"); -DATA(insert OID = 3014 ( has_column_privilege PGNSP PGUID 12 1 0 0 0 f f f f t f s s 4 0 16 "19 26 25 25" _null_ _null_ _null_ _null_ _null_ has_column_privilege_name_id_name _null_ _null_ _null_ )); -DESCR("user privilege on column by username, rel oid, col name"); -DATA(insert OID = 3015 ( has_column_privilege PGNSP PGUID 12 1 0 0 0 f f f f t f s s 4 0 16 "19 26 21 25" _null_ _null_ _null_ _null_ _null_ has_column_privilege_name_id_attnum _null_ _null_ _null_ )); -DESCR("user privilege on column by username, rel oid, col attnum"); -DATA(insert OID = 3016 ( has_column_privilege PGNSP PGUID 12 1 0 0 0 f f f f t f s s 4 0 16 "26 25 25 25" _null_ _null_ _null_ _null_ _null_ has_column_privilege_id_name_name _null_ _null_ _null_ )); -DESCR("user privilege on column by user oid, rel name, col name"); -DATA(insert OID = 3017 ( has_column_privilege PGNSP PGUID 12 1 0 0 0 f f f f t f s s 4 0 16 "26 25 21 25" _null_ _null_ _null_ _null_ _null_ has_column_privilege_id_name_attnum _null_ _null_ _null_ )); -DESCR("user privilege on column by user oid, rel name, col attnum"); -DATA(insert OID = 3018 ( has_column_privilege PGNSP PGUID 12 1 0 0 0 f f f f t f s s 4 0 16 "26 26 25 25" _null_ _null_ _null_ _null_ _null_ has_column_privilege_id_id_name _null_ _null_ _null_ )); -DESCR("user privilege on column by user oid, rel oid, col name"); -DATA(insert OID = 3019 ( has_column_privilege PGNSP PGUID 12 1 0 0 0 f f f f t f s s 4 0 16 "26 26 21 25" _null_ _null_ _null_ _null_ _null_ has_column_privilege_id_id_attnum _null_ _null_ _null_ )); -DESCR("user privilege on column by user oid, rel oid, col attnum"); -DATA(insert OID = 3020 ( has_column_privilege PGNSP PGUID 12 1 0 0 0 f f f f t f s s 3 0 16 "25 25 25" _null_ _null_ _null_ _null_ _null_ has_column_privilege_name_name _null_ _null_ _null_ )); -DESCR("current user privilege on column by rel name, col name"); -DATA(insert OID = 3021 ( has_column_privilege PGNSP PGUID 12 1 0 0 0 f f f f t f s s 3 0 16 "25 21 25" _null_ _null_ _null_ _null_ _null_ has_column_privilege_name_attnum _null_ _null_ _null_ )); -DESCR("current user privilege on column by rel name, col attnum"); -DATA(insert OID = 3022 ( has_column_privilege PGNSP PGUID 12 1 0 0 0 f f f f t f s s 3 0 16 "26 25 25" _null_ _null_ _null_ _null_ _null_ has_column_privilege_id_name _null_ _null_ _null_ )); -DESCR("current user privilege on column by rel oid, col name"); -DATA(insert OID = 3023 ( has_column_privilege PGNSP PGUID 12 1 0 0 0 f f f f t f s s 3 0 16 "26 21 25" _null_ _null_ _null_ _null_ _null_ has_column_privilege_id_attnum _null_ _null_ _null_ )); -DESCR("current user privilege on column by rel oid, col attnum"); - -DATA(insert OID = 3024 ( has_any_column_privilege PGNSP PGUID 12 10 0 0 0 f f f f t f s s 3 0 16 "19 25 25" _null_ _null_ _null_ _null_ _null_ has_any_column_privilege_name_name _null_ _null_ _null_ )); -DESCR("user privilege on any column by username, rel name"); -DATA(insert OID = 3025 ( has_any_column_privilege PGNSP PGUID 12 10 0 0 0 f f f f t f s s 3 0 16 "19 26 25" _null_ _null_ _null_ _null_ _null_ has_any_column_privilege_name_id _null_ _null_ _null_ )); -DESCR("user privilege on any column by username, rel oid"); -DATA(insert OID = 3026 ( has_any_column_privilege PGNSP PGUID 12 10 0 0 0 f f f f t f s s 3 0 16 "26 25 25" _null_ _null_ _null_ _null_ _null_ has_any_column_privilege_id_name _null_ _null_ _null_ )); -DESCR("user privilege on any column by user oid, rel name"); -DATA(insert OID = 3027 ( has_any_column_privilege PGNSP PGUID 12 10 0 0 0 f f f f t f s s 3 0 16 "26 26 25" _null_ _null_ _null_ _null_ _null_ has_any_column_privilege_id_id _null_ _null_ _null_ )); -DESCR("user privilege on any column by user oid, rel oid"); -DATA(insert OID = 3028 ( has_any_column_privilege PGNSP PGUID 12 10 0 0 0 f f f f t f s s 2 0 16 "25 25" _null_ _null_ _null_ _null_ _null_ has_any_column_privilege_name _null_ _null_ _null_ )); -DESCR("current user privilege on any column by rel name"); -DATA(insert OID = 3029 ( has_any_column_privilege PGNSP PGUID 12 10 0 0 0 f f f f t f s s 2 0 16 "26 25" _null_ _null_ _null_ _null_ _null_ has_any_column_privilege_id _null_ _null_ _null_ )); -DESCR("current user privilege on any column by rel oid"); - -DATA(insert OID = 3355 ( pg_ndistinct_in PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 3361 "2275" _null_ _null_ _null_ _null_ _null_ pg_ndistinct_in _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 3356 ( pg_ndistinct_out PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 2275 "3361" _null_ _null_ _null_ _null_ _null_ pg_ndistinct_out _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 3357 ( pg_ndistinct_recv PGNSP PGUID 12 1 0 0 0 f f f f t f s s 1 0 3361 "2281" _null_ _null_ _null_ _null_ _null_ pg_ndistinct_recv _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 3358 ( pg_ndistinct_send PGNSP PGUID 12 1 0 0 0 f f f f t f s s 1 0 17 "3361" _null_ _null_ _null_ _null_ _null_ pg_ndistinct_send _null_ _null_ _null_ )); -DESCR("I/O"); - -DATA(insert OID = 3404 ( pg_dependencies_in PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 3402 "2275" _null_ _null_ _null_ _null_ _null_ pg_dependencies_in _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 3405 ( pg_dependencies_out PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 2275 "3402" _null_ _null_ _null_ _null_ _null_ pg_dependencies_out _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 3406 ( pg_dependencies_recv PGNSP PGUID 12 1 0 0 0 f f f f t f s s 1 0 3402 "2281" _null_ _null_ _null_ _null_ _null_ pg_dependencies_recv _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 3407 ( pg_dependencies_send PGNSP PGUID 12 1 0 0 0 f f f f t f s s 1 0 17 "3402" _null_ _null_ _null_ _null_ _null_ pg_dependencies_send _null_ _null_ _null_ )); -DESCR("I/O"); - -DATA(insert OID = 1928 ( pg_stat_get_numscans PGNSP PGUID 12 1 0 0 0 f f f f t f s r 1 0 20 "26" _null_ _null_ _null_ _null_ _null_ pg_stat_get_numscans _null_ _null_ _null_ )); -DESCR("statistics: number of scans done for table/index"); -DATA(insert OID = 1929 ( pg_stat_get_tuples_returned PGNSP PGUID 12 1 0 0 0 f f f f t f s r 1 0 20 "26" _null_ _null_ _null_ _null_ _null_ pg_stat_get_tuples_returned _null_ _null_ _null_ )); -DESCR("statistics: number of tuples read by seqscan"); -DATA(insert OID = 1930 ( pg_stat_get_tuples_fetched PGNSP PGUID 12 1 0 0 0 f f f f t f s r 1 0 20 "26" _null_ _null_ _null_ _null_ _null_ pg_stat_get_tuples_fetched _null_ _null_ _null_ )); -DESCR("statistics: number of tuples fetched by idxscan"); -DATA(insert OID = 1931 ( pg_stat_get_tuples_inserted PGNSP PGUID 12 1 0 0 0 f f f f t f s r 1 0 20 "26" _null_ _null_ _null_ _null_ _null_ pg_stat_get_tuples_inserted _null_ _null_ _null_ )); -DESCR("statistics: number of tuples inserted"); -DATA(insert OID = 1932 ( pg_stat_get_tuples_updated PGNSP PGUID 12 1 0 0 0 f f f f t f s r 1 0 20 "26" _null_ _null_ _null_ _null_ _null_ pg_stat_get_tuples_updated _null_ _null_ _null_ )); -DESCR("statistics: number of tuples updated"); -DATA(insert OID = 1933 ( pg_stat_get_tuples_deleted PGNSP PGUID 12 1 0 0 0 f f f f t f s r 1 0 20 "26" _null_ _null_ _null_ _null_ _null_ pg_stat_get_tuples_deleted _null_ _null_ _null_ )); -DESCR("statistics: number of tuples deleted"); -DATA(insert OID = 1972 ( pg_stat_get_tuples_hot_updated PGNSP PGUID 12 1 0 0 0 f f f f t f s r 1 0 20 "26" _null_ _null_ _null_ _null_ _null_ pg_stat_get_tuples_hot_updated _null_ _null_ _null_ )); -DESCR("statistics: number of tuples hot updated"); -DATA(insert OID = 2878 ( pg_stat_get_live_tuples PGNSP PGUID 12 1 0 0 0 f f f f t f s r 1 0 20 "26" _null_ _null_ _null_ _null_ _null_ pg_stat_get_live_tuples _null_ _null_ _null_ )); -DESCR("statistics: number of live tuples"); -DATA(insert OID = 2879 ( pg_stat_get_dead_tuples PGNSP PGUID 12 1 0 0 0 f f f f t f s r 1 0 20 "26" _null_ _null_ _null_ _null_ _null_ pg_stat_get_dead_tuples _null_ _null_ _null_ )); -DESCR("statistics: number of dead tuples"); -DATA(insert OID = 3177 ( pg_stat_get_mod_since_analyze PGNSP PGUID 12 1 0 0 0 f f f f t f s r 1 0 20 "26" _null_ _null_ _null_ _null_ _null_ pg_stat_get_mod_since_analyze _null_ _null_ _null_ )); -DESCR("statistics: number of tuples changed since last analyze"); -DATA(insert OID = 1934 ( pg_stat_get_blocks_fetched PGNSP PGUID 12 1 0 0 0 f f f f t f s r 1 0 20 "26" _null_ _null_ _null_ _null_ _null_ pg_stat_get_blocks_fetched _null_ _null_ _null_ )); -DESCR("statistics: number of blocks fetched"); -DATA(insert OID = 1935 ( pg_stat_get_blocks_hit PGNSP PGUID 12 1 0 0 0 f f f f t f s r 1 0 20 "26" _null_ _null_ _null_ _null_ _null_ pg_stat_get_blocks_hit _null_ _null_ _null_ )); -DESCR("statistics: number of blocks found in cache"); -DATA(insert OID = 2781 ( pg_stat_get_last_vacuum_time PGNSP PGUID 12 1 0 0 0 f f f f t f s r 1 0 1184 "26" _null_ _null_ _null_ _null_ _null_ pg_stat_get_last_vacuum_time _null_ _null_ _null_ )); -DESCR("statistics: last manual vacuum time for a table"); -DATA(insert OID = 2782 ( pg_stat_get_last_autovacuum_time PGNSP PGUID 12 1 0 0 0 f f f f t f s r 1 0 1184 "26" _null_ _null_ _null_ _null_ _null_ pg_stat_get_last_autovacuum_time _null_ _null_ _null_ )); -DESCR("statistics: last auto vacuum time for a table"); -DATA(insert OID = 2783 ( pg_stat_get_last_analyze_time PGNSP PGUID 12 1 0 0 0 f f f f t f s r 1 0 1184 "26" _null_ _null_ _null_ _null_ _null_ pg_stat_get_last_analyze_time _null_ _null_ _null_ )); -DESCR("statistics: last manual analyze time for a table"); -DATA(insert OID = 2784 ( pg_stat_get_last_autoanalyze_time PGNSP PGUID 12 1 0 0 0 f f f f t f s r 1 0 1184 "26" _null_ _null_ _null_ _null_ _null_ pg_stat_get_last_autoanalyze_time _null_ _null_ _null_ )); -DESCR("statistics: last auto analyze time for a table"); -DATA(insert OID = 3054 ( pg_stat_get_vacuum_count PGNSP PGUID 12 1 0 0 0 f f f f t f s r 1 0 20 "26" _null_ _null_ _null_ _null_ _null_ pg_stat_get_vacuum_count _null_ _null_ _null_ )); -DESCR("statistics: number of manual vacuums for a table"); -DATA(insert OID = 3055 ( pg_stat_get_autovacuum_count PGNSP PGUID 12 1 0 0 0 f f f f t f s r 1 0 20 "26" _null_ _null_ _null_ _null_ _null_ pg_stat_get_autovacuum_count _null_ _null_ _null_ )); -DESCR("statistics: number of auto vacuums for a table"); -DATA(insert OID = 3056 ( pg_stat_get_analyze_count PGNSP PGUID 12 1 0 0 0 f f f f t f s r 1 0 20 "26" _null_ _null_ _null_ _null_ _null_ pg_stat_get_analyze_count _null_ _null_ _null_ )); -DESCR("statistics: number of manual analyzes for a table"); -DATA(insert OID = 3057 ( pg_stat_get_autoanalyze_count PGNSP PGUID 12 1 0 0 0 f f f f t f s r 1 0 20 "26" _null_ _null_ _null_ _null_ _null_ pg_stat_get_autoanalyze_count _null_ _null_ _null_ )); -DESCR("statistics: number of auto analyzes for a table"); -DATA(insert OID = 1936 ( pg_stat_get_backend_idset PGNSP PGUID 12 1 100 0 0 f f f f t t s r 0 0 23 "" _null_ _null_ _null_ _null_ _null_ pg_stat_get_backend_idset _null_ _null_ _null_ )); -DESCR("statistics: currently active backend IDs"); -DATA(insert OID = 2022 ( pg_stat_get_activity PGNSP PGUID 12 1 100 0 0 f f f f f t s r 1 0 2249 "23" "{23,26,23,26,25,25,25,25,25,1184,1184,1184,1184,869,25,23,28,28,25,16,25,25,23,16,25}" "{i,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o}" "{pid,datid,pid,usesysid,application_name,state,query,wait_event_type,wait_event,xact_start,query_start,backend_start,state_change,client_addr,client_hostname,client_port,backend_xid,backend_xmin,backend_type,ssl,sslversion,sslcipher,sslbits,sslcompression,sslclientdn}" _null_ _null_ pg_stat_get_activity _null_ _null_ _null_ )); -DESCR("statistics: information about currently active backends"); -DATA(insert OID = 3318 ( pg_stat_get_progress_info PGNSP PGUID 12 1 100 0 0 f f f f t t s r 1 0 2249 "25" "{25,23,26,26,20,20,20,20,20,20,20,20,20,20}" "{i,o,o,o,o,o,o,o,o,o,o,o,o,o}" "{cmdtype,pid,datid,relid,param1,param2,param3,param4,param5,param6,param7,param8,param9,param10}" _null_ _null_ pg_stat_get_progress_info _null_ _null_ _null_ )); -DESCR("statistics: information about progress of backends running maintenance command"); -DATA(insert OID = 3099 ( pg_stat_get_wal_senders PGNSP PGUID 12 1 10 0 0 f f f f f t s r 0 0 2249 "" "{23,25,3220,3220,3220,3220,1186,1186,1186,23,25}" "{o,o,o,o,o,o,o,o,o,o,o}" "{pid,state,sent_lsn,write_lsn,flush_lsn,replay_lsn,write_lag,flush_lag,replay_lag,sync_priority,sync_state}" _null_ _null_ pg_stat_get_wal_senders _null_ _null_ _null_ )); -DESCR("statistics: information about currently active replication"); -DATA(insert OID = 3317 ( pg_stat_get_wal_receiver PGNSP PGUID 12 1 0 0 0 f f f f f f s r 0 0 2249 "" "{23,25,3220,23,3220,23,1184,1184,3220,1184,25,25}" "{o,o,o,o,o,o,o,o,o,o,o,o}" "{pid,status,receive_start_lsn,receive_start_tli,received_lsn,received_tli,last_msg_send_time,last_msg_receipt_time,latest_end_lsn,latest_end_time,slot_name,conninfo}" _null_ _null_ pg_stat_get_wal_receiver _null_ _null_ _null_ )); -DESCR("statistics: information about WAL receiver"); -DATA(insert OID = 6118 ( pg_stat_get_subscription PGNSP PGUID 12 1 0 0 0 f f f f f f s r 1 0 2249 "26" "{26,26,26,23,3220,1184,1184,3220,1184}" "{i,o,o,o,o,o,o,o,o}" "{subid,subid,relid,pid,received_lsn,last_msg_send_time,last_msg_receipt_time,latest_end_lsn,latest_end_time}" _null_ _null_ pg_stat_get_subscription _null_ _null_ _null_ )); -DESCR("statistics: information about subscription"); -DATA(insert OID = 2026 ( pg_backend_pid PGNSP PGUID 12 1 0 0 0 f f f f t f s r 0 0 23 "" _null_ _null_ _null_ _null_ _null_ pg_backend_pid _null_ _null_ _null_ )); -DESCR("statistics: current backend PID"); -DATA(insert OID = 1937 ( pg_stat_get_backend_pid PGNSP PGUID 12 1 0 0 0 f f f f t f s r 1 0 23 "23" _null_ _null_ _null_ _null_ _null_ pg_stat_get_backend_pid _null_ _null_ _null_ )); -DESCR("statistics: PID of backend"); -DATA(insert OID = 1938 ( pg_stat_get_backend_dbid PGNSP PGUID 12 1 0 0 0 f f f f t f s r 1 0 26 "23" _null_ _null_ _null_ _null_ _null_ pg_stat_get_backend_dbid _null_ _null_ _null_ )); -DESCR("statistics: database ID of backend"); -DATA(insert OID = 1939 ( pg_stat_get_backend_userid PGNSP PGUID 12 1 0 0 0 f f f f t f s r 1 0 26 "23" _null_ _null_ _null_ _null_ _null_ pg_stat_get_backend_userid _null_ _null_ _null_ )); -DESCR("statistics: user ID of backend"); -DATA(insert OID = 1940 ( pg_stat_get_backend_activity PGNSP PGUID 12 1 0 0 0 f f f f t f s r 1 0 25 "23" _null_ _null_ _null_ _null_ _null_ pg_stat_get_backend_activity _null_ _null_ _null_ )); -DESCR("statistics: current query of backend"); -DATA(insert OID = 2788 ( pg_stat_get_backend_wait_event_type PGNSP PGUID 12 1 0 0 0 f f f f t f s r 1 0 25 "23" _null_ _null_ _null_ _null_ _null_ pg_stat_get_backend_wait_event_type _null_ _null_ _null_ )); -DESCR("statistics: wait event type on which backend is currently waiting"); -DATA(insert OID = 2853 ( pg_stat_get_backend_wait_event PGNSP PGUID 12 1 0 0 0 f f f f t f s r 1 0 25 "23" _null_ _null_ _null_ _null_ _null_ pg_stat_get_backend_wait_event _null_ _null_ _null_ )); -DESCR("statistics: wait event on which backend is currently waiting"); -DATA(insert OID = 2094 ( pg_stat_get_backend_activity_start PGNSP PGUID 12 1 0 0 0 f f f f t f s r 1 0 1184 "23" _null_ _null_ _null_ _null_ _null_ pg_stat_get_backend_activity_start _null_ _null_ _null_ )); -DESCR("statistics: start time for current query of backend"); -DATA(insert OID = 2857 ( pg_stat_get_backend_xact_start PGNSP PGUID 12 1 0 0 0 f f f f t f s r 1 0 1184 "23" _null_ _null_ _null_ _null_ _null_ pg_stat_get_backend_xact_start _null_ _null_ _null_ )); -DESCR("statistics: start time for backend's current transaction"); -DATA(insert OID = 1391 ( pg_stat_get_backend_start PGNSP PGUID 12 1 0 0 0 f f f f t f s r 1 0 1184 "23" _null_ _null_ _null_ _null_ _null_ pg_stat_get_backend_start _null_ _null_ _null_ )); -DESCR("statistics: start time for current backend session"); -DATA(insert OID = 1392 ( pg_stat_get_backend_client_addr PGNSP PGUID 12 1 0 0 0 f f f f t f s r 1 0 869 "23" _null_ _null_ _null_ _null_ _null_ pg_stat_get_backend_client_addr _null_ _null_ _null_ )); -DESCR("statistics: address of client connected to backend"); -DATA(insert OID = 1393 ( pg_stat_get_backend_client_port PGNSP PGUID 12 1 0 0 0 f f f f t f s r 1 0 23 "23" _null_ _null_ _null_ _null_ _null_ pg_stat_get_backend_client_port _null_ _null_ _null_ )); -DESCR("statistics: port number of client connected to backend"); -DATA(insert OID = 1941 ( pg_stat_get_db_numbackends PGNSP PGUID 12 1 0 0 0 f f f f t f s r 1 0 23 "26" _null_ _null_ _null_ _null_ _null_ pg_stat_get_db_numbackends _null_ _null_ _null_ )); -DESCR("statistics: number of backends in database"); -DATA(insert OID = 1942 ( pg_stat_get_db_xact_commit PGNSP PGUID 12 1 0 0 0 f f f f t f s r 1 0 20 "26" _null_ _null_ _null_ _null_ _null_ pg_stat_get_db_xact_commit _null_ _null_ _null_ )); -DESCR("statistics: transactions committed"); -DATA(insert OID = 1943 ( pg_stat_get_db_xact_rollback PGNSP PGUID 12 1 0 0 0 f f f f t f s r 1 0 20 "26" _null_ _null_ _null_ _null_ _null_ pg_stat_get_db_xact_rollback _null_ _null_ _null_ )); -DESCR("statistics: transactions rolled back"); -DATA(insert OID = 1944 ( pg_stat_get_db_blocks_fetched PGNSP PGUID 12 1 0 0 0 f f f f t f s r 1 0 20 "26" _null_ _null_ _null_ _null_ _null_ pg_stat_get_db_blocks_fetched _null_ _null_ _null_ )); -DESCR("statistics: blocks fetched for database"); -DATA(insert OID = 1945 ( pg_stat_get_db_blocks_hit PGNSP PGUID 12 1 0 0 0 f f f f t f s r 1 0 20 "26" _null_ _null_ _null_ _null_ _null_ pg_stat_get_db_blocks_hit _null_ _null_ _null_ )); -DESCR("statistics: blocks found in cache for database"); -DATA(insert OID = 2758 ( pg_stat_get_db_tuples_returned PGNSP PGUID 12 1 0 0 0 f f f f t f s r 1 0 20 "26" _null_ _null_ _null_ _null_ _null_ pg_stat_get_db_tuples_returned _null_ _null_ _null_ )); -DESCR("statistics: tuples returned for database"); -DATA(insert OID = 2759 ( pg_stat_get_db_tuples_fetched PGNSP PGUID 12 1 0 0 0 f f f f t f s r 1 0 20 "26" _null_ _null_ _null_ _null_ _null_ pg_stat_get_db_tuples_fetched _null_ _null_ _null_ )); -DESCR("statistics: tuples fetched for database"); -DATA(insert OID = 2760 ( pg_stat_get_db_tuples_inserted PGNSP PGUID 12 1 0 0 0 f f f f t f s r 1 0 20 "26" _null_ _null_ _null_ _null_ _null_ pg_stat_get_db_tuples_inserted _null_ _null_ _null_ )); -DESCR("statistics: tuples inserted in database"); -DATA(insert OID = 2761 ( pg_stat_get_db_tuples_updated PGNSP PGUID 12 1 0 0 0 f f f f t f s r 1 0 20 "26" _null_ _null_ _null_ _null_ _null_ pg_stat_get_db_tuples_updated _null_ _null_ _null_ )); -DESCR("statistics: tuples updated in database"); -DATA(insert OID = 2762 ( pg_stat_get_db_tuples_deleted PGNSP PGUID 12 1 0 0 0 f f f f t f s r 1 0 20 "26" _null_ _null_ _null_ _null_ _null_ pg_stat_get_db_tuples_deleted _null_ _null_ _null_ )); -DESCR("statistics: tuples deleted in database"); -DATA(insert OID = 3065 ( pg_stat_get_db_conflict_tablespace PGNSP PGUID 12 1 0 0 0 f f f f t f s r 1 0 20 "26" _null_ _null_ _null_ _null_ _null_ pg_stat_get_db_conflict_tablespace _null_ _null_ _null_ )); -DESCR("statistics: recovery conflicts in database caused by drop tablespace"); -DATA(insert OID = 3066 ( pg_stat_get_db_conflict_lock PGNSP PGUID 12 1 0 0 0 f f f f t f s r 1 0 20 "26" _null_ _null_ _null_ _null_ _null_ pg_stat_get_db_conflict_lock _null_ _null_ _null_ )); -DESCR("statistics: recovery conflicts in database caused by relation lock"); -DATA(insert OID = 3067 ( pg_stat_get_db_conflict_snapshot PGNSP PGUID 12 1 0 0 0 f f f f t f s r 1 0 20 "26" _null_ _null_ _null_ _null_ _null_ pg_stat_get_db_conflict_snapshot _null_ _null_ _null_ )); -DESCR("statistics: recovery conflicts in database caused by snapshot expiry"); -DATA(insert OID = 3068 ( pg_stat_get_db_conflict_bufferpin PGNSP PGUID 12 1 0 0 0 f f f f t f s r 1 0 20 "26" _null_ _null_ _null_ _null_ _null_ pg_stat_get_db_conflict_bufferpin _null_ _null_ _null_ )); -DESCR("statistics: recovery conflicts in database caused by shared buffer pin"); -DATA(insert OID = 3069 ( pg_stat_get_db_conflict_startup_deadlock PGNSP PGUID 12 1 0 0 0 f f f f t f s r 1 0 20 "26" _null_ _null_ _null_ _null_ _null_ pg_stat_get_db_conflict_startup_deadlock _null_ _null_ _null_ )); -DESCR("statistics: recovery conflicts in database caused by buffer deadlock"); -DATA(insert OID = 3070 ( pg_stat_get_db_conflict_all PGNSP PGUID 12 1 0 0 0 f f f f t f s r 1 0 20 "26" _null_ _null_ _null_ _null_ _null_ pg_stat_get_db_conflict_all _null_ _null_ _null_ )); -DESCR("statistics: recovery conflicts in database"); -DATA(insert OID = 3152 ( pg_stat_get_db_deadlocks PGNSP PGUID 12 1 0 0 0 f f f f t f s r 1 0 20 "26" _null_ _null_ _null_ _null_ _null_ pg_stat_get_db_deadlocks _null_ _null_ _null_ )); -DESCR("statistics: deadlocks detected in database"); -DATA(insert OID = 3074 ( pg_stat_get_db_stat_reset_time PGNSP PGUID 12 1 0 0 0 f f f f t f s r 1 0 1184 "26" _null_ _null_ _null_ _null_ _null_ pg_stat_get_db_stat_reset_time _null_ _null_ _null_ )); -DESCR("statistics: last reset for a database"); -DATA(insert OID = 3150 ( pg_stat_get_db_temp_files PGNSP PGUID 12 1 0 0 0 f f f f t f s r 1 0 20 "26" _null_ _null_ _null_ _null_ _null_ pg_stat_get_db_temp_files _null_ _null_ _null_ )); -DESCR("statistics: number of temporary files written"); -DATA(insert OID = 3151 ( pg_stat_get_db_temp_bytes PGNSP PGUID 12 1 0 0 0 f f f f t f s r 1 0 20 "26" _null_ _null_ _null_ _null_ _null_ pg_stat_get_db_temp_bytes _null_ _null_ _null_ )); -DESCR("statistics: number of bytes in temporary files written"); -DATA(insert OID = 2844 ( pg_stat_get_db_blk_read_time PGNSP PGUID 12 1 0 0 0 f f f f t f s r 1 0 701 "26" _null_ _null_ _null_ _null_ _null_ pg_stat_get_db_blk_read_time _null_ _null_ _null_ )); -DESCR("statistics: block read time, in milliseconds"); -DATA(insert OID = 2845 ( pg_stat_get_db_blk_write_time PGNSP PGUID 12 1 0 0 0 f f f f t f s r 1 0 701 "26" _null_ _null_ _null_ _null_ _null_ pg_stat_get_db_blk_write_time _null_ _null_ _null_ )); -DESCR("statistics: block write time, in milliseconds"); -DATA(insert OID = 3195 ( pg_stat_get_archiver PGNSP PGUID 12 1 0 0 0 f f f f f f s r 0 0 2249 "" "{20,25,1184,20,25,1184,1184}" "{o,o,o,o,o,o,o}" "{archived_count,last_archived_wal,last_archived_time,failed_count,last_failed_wal,last_failed_time,stats_reset}" _null_ _null_ pg_stat_get_archiver _null_ _null_ _null_ )); -DESCR("statistics: information about WAL archiver"); -DATA(insert OID = 2769 ( pg_stat_get_bgwriter_timed_checkpoints PGNSP PGUID 12 1 0 0 0 f f f f t f s r 0 0 20 "" _null_ _null_ _null_ _null_ _null_ pg_stat_get_bgwriter_timed_checkpoints _null_ _null_ _null_ )); -DESCR("statistics: number of timed checkpoints started by the bgwriter"); -DATA(insert OID = 2770 ( pg_stat_get_bgwriter_requested_checkpoints PGNSP PGUID 12 1 0 0 0 f f f f t f s r 0 0 20 "" _null_ _null_ _null_ _null_ _null_ pg_stat_get_bgwriter_requested_checkpoints _null_ _null_ _null_ )); -DESCR("statistics: number of backend requested checkpoints started by the bgwriter"); -DATA(insert OID = 2771 ( pg_stat_get_bgwriter_buf_written_checkpoints PGNSP PGUID 12 1 0 0 0 f f f f t f s r 0 0 20 "" _null_ _null_ _null_ _null_ _null_ pg_stat_get_bgwriter_buf_written_checkpoints _null_ _null_ _null_ )); -DESCR("statistics: number of buffers written by the bgwriter during checkpoints"); -DATA(insert OID = 2772 ( pg_stat_get_bgwriter_buf_written_clean PGNSP PGUID 12 1 0 0 0 f f f f t f s r 0 0 20 "" _null_ _null_ _null_ _null_ _null_ pg_stat_get_bgwriter_buf_written_clean _null_ _null_ _null_ )); -DESCR("statistics: number of buffers written by the bgwriter for cleaning dirty buffers"); -DATA(insert OID = 2773 ( pg_stat_get_bgwriter_maxwritten_clean PGNSP PGUID 12 1 0 0 0 f f f f t f s r 0 0 20 "" _null_ _null_ _null_ _null_ _null_ pg_stat_get_bgwriter_maxwritten_clean _null_ _null_ _null_ )); -DESCR("statistics: number of times the bgwriter stopped processing when it had written too many buffers while cleaning"); -DATA(insert OID = 3075 ( pg_stat_get_bgwriter_stat_reset_time PGNSP PGUID 12 1 0 0 0 f f f f t f s r 0 0 1184 "" _null_ _null_ _null_ _null_ _null_ pg_stat_get_bgwriter_stat_reset_time _null_ _null_ _null_ )); -DESCR("statistics: last reset for the bgwriter"); -DATA(insert OID = 3160 ( pg_stat_get_checkpoint_write_time PGNSP PGUID 12 1 0 0 0 f f f f t f s r 0 0 701 "" _null_ _null_ _null_ _null_ _null_ pg_stat_get_checkpoint_write_time _null_ _null_ _null_ )); -DESCR("statistics: checkpoint time spent writing buffers to disk, in milliseconds"); -DATA(insert OID = 3161 ( pg_stat_get_checkpoint_sync_time PGNSP PGUID 12 1 0 0 0 f f f f t f s r 0 0 701 "" _null_ _null_ _null_ _null_ _null_ pg_stat_get_checkpoint_sync_time _null_ _null_ _null_ )); -DESCR("statistics: checkpoint time spent synchronizing buffers to disk, in milliseconds"); -DATA(insert OID = 2775 ( pg_stat_get_buf_written_backend PGNSP PGUID 12 1 0 0 0 f f f f t f s r 0 0 20 "" _null_ _null_ _null_ _null_ _null_ pg_stat_get_buf_written_backend _null_ _null_ _null_ )); -DESCR("statistics: number of buffers written by backends"); -DATA(insert OID = 3063 ( pg_stat_get_buf_fsync_backend PGNSP PGUID 12 1 0 0 0 f f f f t f s r 0 0 20 "" _null_ _null_ _null_ _null_ _null_ pg_stat_get_buf_fsync_backend _null_ _null_ _null_ )); -DESCR("statistics: number of backend buffer writes that did their own fsync"); -DATA(insert OID = 2859 ( pg_stat_get_buf_alloc PGNSP PGUID 12 1 0 0 0 f f f f t f s r 0 0 20 "" _null_ _null_ _null_ _null_ _null_ pg_stat_get_buf_alloc _null_ _null_ _null_ )); -DESCR("statistics: number of buffer allocations"); - -DATA(insert OID = 2978 ( pg_stat_get_function_calls PGNSP PGUID 12 1 0 0 0 f f f f t f s r 1 0 20 "26" _null_ _null_ _null_ _null_ _null_ pg_stat_get_function_calls _null_ _null_ _null_ )); -DESCR("statistics: number of function calls"); -DATA(insert OID = 2979 ( pg_stat_get_function_total_time PGNSP PGUID 12 1 0 0 0 f f f f t f s r 1 0 701 "26" _null_ _null_ _null_ _null_ _null_ pg_stat_get_function_total_time _null_ _null_ _null_ )); -DESCR("statistics: total execution time of function, in milliseconds"); -DATA(insert OID = 2980 ( pg_stat_get_function_self_time PGNSP PGUID 12 1 0 0 0 f f f f t f s r 1 0 701 "26" _null_ _null_ _null_ _null_ _null_ pg_stat_get_function_self_time _null_ _null_ _null_ )); -DESCR("statistics: self execution time of function, in milliseconds"); - -DATA(insert OID = 3037 ( pg_stat_get_xact_numscans PGNSP PGUID 12 1 0 0 0 f f f f t f v r 1 0 20 "26" _null_ _null_ _null_ _null_ _null_ pg_stat_get_xact_numscans _null_ _null_ _null_ )); -DESCR("statistics: number of scans done for table/index in current transaction"); -DATA(insert OID = 3038 ( pg_stat_get_xact_tuples_returned PGNSP PGUID 12 1 0 0 0 f f f f t f v r 1 0 20 "26" _null_ _null_ _null_ _null_ _null_ pg_stat_get_xact_tuples_returned _null_ _null_ _null_ )); -DESCR("statistics: number of tuples read by seqscan in current transaction"); -DATA(insert OID = 3039 ( pg_stat_get_xact_tuples_fetched PGNSP PGUID 12 1 0 0 0 f f f f t f v r 1 0 20 "26" _null_ _null_ _null_ _null_ _null_ pg_stat_get_xact_tuples_fetched _null_ _null_ _null_ )); -DESCR("statistics: number of tuples fetched by idxscan in current transaction"); -DATA(insert OID = 3040 ( pg_stat_get_xact_tuples_inserted PGNSP PGUID 12 1 0 0 0 f f f f t f v r 1 0 20 "26" _null_ _null_ _null_ _null_ _null_ pg_stat_get_xact_tuples_inserted _null_ _null_ _null_ )); -DESCR("statistics: number of tuples inserted in current transaction"); -DATA(insert OID = 3041 ( pg_stat_get_xact_tuples_updated PGNSP PGUID 12 1 0 0 0 f f f f t f v r 1 0 20 "26" _null_ _null_ _null_ _null_ _null_ pg_stat_get_xact_tuples_updated _null_ _null_ _null_ )); -DESCR("statistics: number of tuples updated in current transaction"); -DATA(insert OID = 3042 ( pg_stat_get_xact_tuples_deleted PGNSP PGUID 12 1 0 0 0 f f f f t f v r 1 0 20 "26" _null_ _null_ _null_ _null_ _null_ pg_stat_get_xact_tuples_deleted _null_ _null_ _null_ )); -DESCR("statistics: number of tuples deleted in current transaction"); -DATA(insert OID = 3043 ( pg_stat_get_xact_tuples_hot_updated PGNSP PGUID 12 1 0 0 0 f f f f t f v r 1 0 20 "26" _null_ _null_ _null_ _null_ _null_ pg_stat_get_xact_tuples_hot_updated _null_ _null_ _null_ )); -DESCR("statistics: number of tuples hot updated in current transaction"); -DATA(insert OID = 3044 ( pg_stat_get_xact_blocks_fetched PGNSP PGUID 12 1 0 0 0 f f f f t f v r 1 0 20 "26" _null_ _null_ _null_ _null_ _null_ pg_stat_get_xact_blocks_fetched _null_ _null_ _null_ )); -DESCR("statistics: number of blocks fetched in current transaction"); -DATA(insert OID = 3045 ( pg_stat_get_xact_blocks_hit PGNSP PGUID 12 1 0 0 0 f f f f t f v r 1 0 20 "26" _null_ _null_ _null_ _null_ _null_ pg_stat_get_xact_blocks_hit _null_ _null_ _null_ )); -DESCR("statistics: number of blocks found in cache in current transaction"); -DATA(insert OID = 3046 ( pg_stat_get_xact_function_calls PGNSP PGUID 12 1 0 0 0 f f f f t f v r 1 0 20 "26" _null_ _null_ _null_ _null_ _null_ pg_stat_get_xact_function_calls _null_ _null_ _null_ )); -DESCR("statistics: number of function calls in current transaction"); -DATA(insert OID = 3047 ( pg_stat_get_xact_function_total_time PGNSP PGUID 12 1 0 0 0 f f f f t f v r 1 0 701 "26" _null_ _null_ _null_ _null_ _null_ pg_stat_get_xact_function_total_time _null_ _null_ _null_ )); -DESCR("statistics: total execution time of function in current transaction, in milliseconds"); -DATA(insert OID = 3048 ( pg_stat_get_xact_function_self_time PGNSP PGUID 12 1 0 0 0 f f f f t f v r 1 0 701 "26" _null_ _null_ _null_ _null_ _null_ pg_stat_get_xact_function_self_time _null_ _null_ _null_ )); -DESCR("statistics: self execution time of function in current transaction, in milliseconds"); - -DATA(insert OID = 3788 ( pg_stat_get_snapshot_timestamp PGNSP PGUID 12 1 0 0 0 f f f f t f s r 0 0 1184 "" _null_ _null_ _null_ _null_ _null_ pg_stat_get_snapshot_timestamp _null_ _null_ _null_ )); -DESCR("statistics: timestamp of the current statistics snapshot"); -DATA(insert OID = 2230 ( pg_stat_clear_snapshot PGNSP PGUID 12 1 0 0 0 f f f f f f v r 0 0 2278 "" _null_ _null_ _null_ _null_ _null_ pg_stat_clear_snapshot _null_ _null_ _null_ )); -DESCR("statistics: discard current transaction's statistics snapshot"); -DATA(insert OID = 2274 ( pg_stat_reset PGNSP PGUID 12 1 0 0 0 f f f f f f v s 0 0 2278 "" _null_ _null_ _null_ _null_ _null_ pg_stat_reset _null_ _null_ _null_ )); -DESCR("statistics: reset collected statistics for current database"); -DATA(insert OID = 3775 ( pg_stat_reset_shared PGNSP PGUID 12 1 0 0 0 f f f f t f v s 1 0 2278 "25" _null_ _null_ _null_ _null_ _null_ pg_stat_reset_shared _null_ _null_ _null_ )); -DESCR("statistics: reset collected statistics shared across the cluster"); -DATA(insert OID = 3776 ( pg_stat_reset_single_table_counters PGNSP PGUID 12 1 0 0 0 f f f f t f v s 1 0 2278 "26" _null_ _null_ _null_ _null_ _null_ pg_stat_reset_single_table_counters _null_ _null_ _null_ )); -DESCR("statistics: reset collected statistics for a single table or index in the current database"); -DATA(insert OID = 3777 ( pg_stat_reset_single_function_counters PGNSP PGUID 12 1 0 0 0 f f f f t f v s 1 0 2278 "26" _null_ _null_ _null_ _null_ _null_ pg_stat_reset_single_function_counters _null_ _null_ _null_ )); -DESCR("statistics: reset collected statistics for a single function in the current database"); - -DATA(insert OID = 3163 ( pg_trigger_depth PGNSP PGUID 12 1 0 0 0 f f f f t f s r 0 0 23 "" _null_ _null_ _null_ _null_ _null_ pg_trigger_depth _null_ _null_ _null_ )); -DESCR("current trigger depth"); - -DATA(insert OID = 3778 ( pg_tablespace_location PGNSP PGUID 12 1 0 0 0 f f f f t f s s 1 0 25 "26" _null_ _null_ _null_ _null_ _null_ pg_tablespace_location _null_ _null_ _null_ )); -DESCR("tablespace location"); - -DATA(insert OID = 1946 ( encode PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 25 "17 25" _null_ _null_ _null_ _null_ _null_ binary_encode _null_ _null_ _null_ )); -DESCR("convert bytea value into some ascii-only text string"); -DATA(insert OID = 1947 ( decode PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 17 "25 25" _null_ _null_ _null_ _null_ _null_ binary_decode _null_ _null_ _null_ )); -DESCR("convert ascii-encoded text string into bytea value"); - -DATA(insert OID = 1948 ( byteaeq PGNSP PGUID 12 1 0 0 0 f f f t t f i s 2 0 16 "17 17" _null_ _null_ _null_ _null_ _null_ byteaeq _null_ _null_ _null_ )); -DATA(insert OID = 1949 ( bytealt PGNSP PGUID 12 1 0 0 0 f f f t t f i s 2 0 16 "17 17" _null_ _null_ _null_ _null_ _null_ bytealt _null_ _null_ _null_ )); -DATA(insert OID = 1950 ( byteale PGNSP PGUID 12 1 0 0 0 f f f t t f i s 2 0 16 "17 17" _null_ _null_ _null_ _null_ _null_ byteale _null_ _null_ _null_ )); -DATA(insert OID = 1951 ( byteagt PGNSP PGUID 12 1 0 0 0 f f f t t f i s 2 0 16 "17 17" _null_ _null_ _null_ _null_ _null_ byteagt _null_ _null_ _null_ )); -DATA(insert OID = 1952 ( byteage PGNSP PGUID 12 1 0 0 0 f f f t t f i s 2 0 16 "17 17" _null_ _null_ _null_ _null_ _null_ byteage _null_ _null_ _null_ )); -DATA(insert OID = 1953 ( byteane PGNSP PGUID 12 1 0 0 0 f f f t t f i s 2 0 16 "17 17" _null_ _null_ _null_ _null_ _null_ byteane _null_ _null_ _null_ )); -DATA(insert OID = 1954 ( byteacmp PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 23 "17 17" _null_ _null_ _null_ _null_ _null_ byteacmp _null_ _null_ _null_ )); -DESCR("less-equal-greater"); -DATA(insert OID = 3331 ( bytea_sortsupport PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 2278 "2281" _null_ _null_ _null_ _null_ _null_ bytea_sortsupport _null_ _null_ _null_ )); -DESCR("sort support"); - -DATA(insert OID = 3917 ( timestamp_transform PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 2281 "2281" _null_ _null_ _null_ _null_ _null_ timestamp_transform _null_ _null_ _null_ )); -DESCR("transform a timestamp length coercion"); -DATA(insert OID = 3944 ( time_transform PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 2281 "2281" _null_ _null_ _null_ _null_ _null_ time_transform _null_ _null_ _null_ )); -DESCR("transform a time length coercion"); - -DATA(insert OID = 1961 ( timestamp PGNSP PGUID 12 1 0 0 timestamp_transform f f f f t f i s 2 0 1114 "1114 23" _null_ _null_ _null_ _null_ _null_ timestamp_scale _null_ _null_ _null_ )); -DESCR("adjust timestamp precision"); - -DATA(insert OID = 1965 ( oidlarger PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 26 "26 26" _null_ _null_ _null_ _null_ _null_ oidlarger _null_ _null_ _null_ )); -DESCR("larger of two"); -DATA(insert OID = 1966 ( oidsmaller PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 26 "26 26" _null_ _null_ _null_ _null_ _null_ oidsmaller _null_ _null_ _null_ )); -DESCR("smaller of two"); - -DATA(insert OID = 1967 ( timestamptz PGNSP PGUID 12 1 0 0 timestamp_transform f f f f t f i s 2 0 1184 "1184 23" _null_ _null_ _null_ _null_ _null_ timestamptz_scale _null_ _null_ _null_ )); -DESCR("adjust timestamptz precision"); -DATA(insert OID = 1968 ( time PGNSP PGUID 12 1 0 0 time_transform f f f f t f i s 2 0 1083 "1083 23" _null_ _null_ _null_ _null_ _null_ time_scale _null_ _null_ _null_ )); -DESCR("adjust time precision"); -DATA(insert OID = 1969 ( timetz PGNSP PGUID 12 1 0 0 time_transform f f f f t f i s 2 0 1266 "1266 23" _null_ _null_ _null_ _null_ _null_ timetz_scale _null_ _null_ _null_ )); -DESCR("adjust time with time zone precision"); - -DATA(insert OID = 2003 ( textanycat PGNSP PGUID 14 1 0 0 0 f f f f t f s s 2 0 25 "25 2776" _null_ _null_ _null_ _null_ _null_ "select $1 || $2::pg_catalog.text" _null_ _null_ _null_ )); -DATA(insert OID = 2004 ( anytextcat PGNSP PGUID 14 1 0 0 0 f f f f t f s s 2 0 25 "2776 25" _null_ _null_ _null_ _null_ _null_ "select $1::pg_catalog.text || $2" _null_ _null_ _null_ )); - -DATA(insert OID = 2005 ( bytealike PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 16 "17 17" _null_ _null_ _null_ _null_ _null_ bytealike _null_ _null_ _null_ )); -DATA(insert OID = 2006 ( byteanlike PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 16 "17 17" _null_ _null_ _null_ _null_ _null_ byteanlike _null_ _null_ _null_ )); -DATA(insert OID = 2007 ( like PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 16 "17 17" _null_ _null_ _null_ _null_ _null_ bytealike _null_ _null_ _null_ )); -DESCR("matches LIKE expression"); -DATA(insert OID = 2008 ( notlike PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 16 "17 17" _null_ _null_ _null_ _null_ _null_ byteanlike _null_ _null_ _null_ )); -DESCR("does not match LIKE expression"); -DATA(insert OID = 2009 ( like_escape PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 17 "17 17" _null_ _null_ _null_ _null_ _null_ like_escape_bytea _null_ _null_ _null_ )); -DESCR("convert LIKE pattern to use backslash escapes"); -DATA(insert OID = 2010 ( length PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 23 "17" _null_ _null_ _null_ _null_ _null_ byteaoctetlen _null_ _null_ _null_ )); -DESCR("octet length"); -DATA(insert OID = 2011 ( byteacat PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 17 "17 17" _null_ _null_ _null_ _null_ _null_ byteacat _null_ _null_ _null_ )); -DATA(insert OID = 2012 ( substring PGNSP PGUID 12 1 0 0 0 f f f f t f i s 3 0 17 "17 23 23" _null_ _null_ _null_ _null_ _null_ bytea_substr _null_ _null_ _null_ )); -DESCR("extract portion of string"); -DATA(insert OID = 2013 ( substring PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 17 "17 23" _null_ _null_ _null_ _null_ _null_ bytea_substr_no_len _null_ _null_ _null_ )); -DESCR("extract portion of string"); -DATA(insert OID = 2085 ( substr PGNSP PGUID 12 1 0 0 0 f f f f t f i s 3 0 17 "17 23 23" _null_ _null_ _null_ _null_ _null_ bytea_substr _null_ _null_ _null_ )); -DESCR("extract portion of string"); -DATA(insert OID = 2086 ( substr PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 17 "17 23" _null_ _null_ _null_ _null_ _null_ bytea_substr_no_len _null_ _null_ _null_ )); -DESCR("extract portion of string"); -DATA(insert OID = 2014 ( position PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 23 "17 17" _null_ _null_ _null_ _null_ _null_ byteapos _null_ _null_ _null_ )); -DESCR("position of substring"); -DATA(insert OID = 2015 ( btrim PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 17 "17 17" _null_ _null_ _null_ _null_ _null_ byteatrim _null_ _null_ _null_ )); -DESCR("trim both ends of string"); - -DATA(insert OID = 2019 ( time PGNSP PGUID 12 1 0 0 0 f f f f t f s s 1 0 1083 "1184" _null_ _null_ _null_ _null_ _null_ timestamptz_time _null_ _null_ _null_ )); -DESCR("convert timestamp with time zone to time"); -DATA(insert OID = 2020 ( date_trunc PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 1114 "25 1114" _null_ _null_ _null_ _null_ _null_ timestamp_trunc _null_ _null_ _null_ )); -DESCR("truncate timestamp to specified units"); -DATA(insert OID = 2021 ( date_part PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 701 "25 1114" _null_ _null_ _null_ _null_ _null_ timestamp_part _null_ _null_ _null_ )); -DESCR("extract field from timestamp"); -DATA(insert OID = 2023 ( timestamp PGNSP PGUID 12 1 0 0 0 f f f f t f s s 1 0 1114 "702" _null_ _null_ _null_ _null_ _null_ abstime_timestamp _null_ _null_ _null_ )); -DESCR("convert abstime to timestamp"); -DATA(insert OID = 2024 ( timestamp PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 1114 "1082" _null_ _null_ _null_ _null_ _null_ date_timestamp _null_ _null_ _null_ )); -DESCR("convert date to timestamp"); -DATA(insert OID = 2025 ( timestamp PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 1114 "1082 1083" _null_ _null_ _null_ _null_ _null_ datetime_timestamp _null_ _null_ _null_ )); -DESCR("convert date and time to timestamp"); -DATA(insert OID = 2027 ( timestamp PGNSP PGUID 12 1 0 0 0 f f f f t f s s 1 0 1114 "1184" _null_ _null_ _null_ _null_ _null_ timestamptz_timestamp _null_ _null_ _null_ )); -DESCR("convert timestamp with time zone to timestamp"); -DATA(insert OID = 2028 ( timestamptz PGNSP PGUID 12 1 0 0 0 f f f f t f s s 1 0 1184 "1114" _null_ _null_ _null_ _null_ _null_ timestamp_timestamptz _null_ _null_ _null_ )); -DESCR("convert timestamp to timestamp with time zone"); -DATA(insert OID = 2029 ( date PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 1082 "1114" _null_ _null_ _null_ _null_ _null_ timestamp_date _null_ _null_ _null_ )); -DESCR("convert timestamp to date"); -DATA(insert OID = 2030 ( abstime PGNSP PGUID 12 1 0 0 0 f f f f t f s s 1 0 702 "1114" _null_ _null_ _null_ _null_ _null_ timestamp_abstime _null_ _null_ _null_ )); -DESCR("convert timestamp to abstime"); -DATA(insert OID = 2031 ( timestamp_mi PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 1186 "1114 1114" _null_ _null_ _null_ _null_ _null_ timestamp_mi _null_ _null_ _null_ )); -DATA(insert OID = 2032 ( timestamp_pl_interval PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 1114 "1114 1186" _null_ _null_ _null_ _null_ _null_ timestamp_pl_interval _null_ _null_ _null_ )); -DATA(insert OID = 2033 ( timestamp_mi_interval PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 1114 "1114 1186" _null_ _null_ _null_ _null_ _null_ timestamp_mi_interval _null_ _null_ _null_ )); -DATA(insert OID = 2035 ( timestamp_smaller PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 1114 "1114 1114" _null_ _null_ _null_ _null_ _null_ timestamp_smaller _null_ _null_ _null_ )); -DESCR("smaller of two"); -DATA(insert OID = 2036 ( timestamp_larger PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 1114 "1114 1114" _null_ _null_ _null_ _null_ _null_ timestamp_larger _null_ _null_ _null_ )); -DESCR("larger of two"); -DATA(insert OID = 2037 ( timezone PGNSP PGUID 12 1 0 0 0 f f f f t f v s 2 0 1266 "25 1266" _null_ _null_ _null_ _null_ _null_ timetz_zone _null_ _null_ _null_ )); -DESCR("adjust time with time zone to new zone"); -DATA(insert OID = 2038 ( timezone PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 1266 "1186 1266" _null_ _null_ _null_ _null_ _null_ timetz_izone _null_ _null_ _null_ )); -DESCR("adjust time with time zone to new zone"); -DATA(insert OID = 2039 ( timestamp_hash PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 23 "1114" _null_ _null_ _null_ _null_ _null_ timestamp_hash _null_ _null_ _null_ )); -DESCR("hash"); -DATA(insert OID = 2041 ( overlaps PGNSP PGUID 12 1 0 0 0 f f f f f f i s 4 0 16 "1114 1114 1114 1114" _null_ _null_ _null_ _null_ _null_ overlaps_timestamp _null_ _null_ _null_ )); -DESCR("intervals overlap?"); -DATA(insert OID = 2042 ( overlaps PGNSP PGUID 14 1 0 0 0 f f f f f f i s 4 0 16 "1114 1186 1114 1186" _null_ _null_ _null_ _null_ _null_ "select ($1, ($1 + $2)) overlaps ($3, ($3 + $4))" _null_ _null_ _null_ )); -DESCR("intervals overlap?"); -DATA(insert OID = 2043 ( overlaps PGNSP PGUID 14 1 0 0 0 f f f f f f i s 4 0 16 "1114 1114 1114 1186" _null_ _null_ _null_ _null_ _null_ "select ($1, $2) overlaps ($3, ($3 + $4))" _null_ _null_ _null_ )); -DESCR("intervals overlap?"); -DATA(insert OID = 2044 ( overlaps PGNSP PGUID 14 1 0 0 0 f f f f f f i s 4 0 16 "1114 1186 1114 1114" _null_ _null_ _null_ _null_ _null_ "select ($1, ($1 + $2)) overlaps ($3, $4)" _null_ _null_ _null_ )); -DESCR("intervals overlap?"); -DATA(insert OID = 2045 ( timestamp_cmp PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 23 "1114 1114" _null_ _null_ _null_ _null_ _null_ timestamp_cmp _null_ _null_ _null_ )); -DESCR("less-equal-greater"); -DATA(insert OID = 3137 ( timestamp_sortsupport PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 2278 "2281" _null_ _null_ _null_ _null_ _null_ timestamp_sortsupport _null_ _null_ _null_ )); -DESCR("sort support"); -DATA(insert OID = 2046 ( time PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 1083 "1266" _null_ _null_ _null_ _null_ _null_ timetz_time _null_ _null_ _null_ )); -DESCR("convert time with time zone to time"); -DATA(insert OID = 2047 ( timetz PGNSP PGUID 12 1 0 0 0 f f f f t f s s 1 0 1266 "1083" _null_ _null_ _null_ _null_ _null_ time_timetz _null_ _null_ _null_ )); -DESCR("convert time to time with time zone"); -DATA(insert OID = 2048 ( isfinite PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 16 "1114" _null_ _null_ _null_ _null_ _null_ timestamp_finite _null_ _null_ _null_ )); -DESCR("finite timestamp?"); -DATA(insert OID = 2049 ( to_char PGNSP PGUID 12 1 0 0 0 f f f f t f s s 2 0 25 "1114 25" _null_ _null_ _null_ _null_ _null_ timestamp_to_char _null_ _null_ _null_ )); -DESCR("format timestamp to text"); -DATA(insert OID = 2052 ( timestamp_eq PGNSP PGUID 12 1 0 0 0 f f f t t f i s 2 0 16 "1114 1114" _null_ _null_ _null_ _null_ _null_ timestamp_eq _null_ _null_ _null_ )); -DATA(insert OID = 2053 ( timestamp_ne PGNSP PGUID 12 1 0 0 0 f f f t t f i s 2 0 16 "1114 1114" _null_ _null_ _null_ _null_ _null_ timestamp_ne _null_ _null_ _null_ )); -DATA(insert OID = 2054 ( timestamp_lt PGNSP PGUID 12 1 0 0 0 f f f t t f i s 2 0 16 "1114 1114" _null_ _null_ _null_ _null_ _null_ timestamp_lt _null_ _null_ _null_ )); -DATA(insert OID = 2055 ( timestamp_le PGNSP PGUID 12 1 0 0 0 f f f t t f i s 2 0 16 "1114 1114" _null_ _null_ _null_ _null_ _null_ timestamp_le _null_ _null_ _null_ )); -DATA(insert OID = 2056 ( timestamp_ge PGNSP PGUID 12 1 0 0 0 f f f t t f i s 2 0 16 "1114 1114" _null_ _null_ _null_ _null_ _null_ timestamp_ge _null_ _null_ _null_ )); -DATA(insert OID = 2057 ( timestamp_gt PGNSP PGUID 12 1 0 0 0 f f f t t f i s 2 0 16 "1114 1114" _null_ _null_ _null_ _null_ _null_ timestamp_gt _null_ _null_ _null_ )); -DATA(insert OID = 2058 ( age PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 1186 "1114 1114" _null_ _null_ _null_ _null_ _null_ timestamp_age _null_ _null_ _null_ )); -DESCR("date difference preserving months and years"); -DATA(insert OID = 2059 ( age PGNSP PGUID 14 1 0 0 0 f f f f t f s s 1 0 1186 "1114" _null_ _null_ _null_ _null_ _null_ "select pg_catalog.age(cast(current_date as timestamp without time zone), $1)" _null_ _null_ _null_ )); -DESCR("date difference from today preserving months and years"); - -DATA(insert OID = 2069 ( timezone PGNSP PGUID 12 1 0 0 timestamp_zone_transform f f f f t f i s 2 0 1184 "25 1114" _null_ _null_ _null_ _null_ _null_ timestamp_zone _null_ _null_ _null_ )); -DESCR("adjust timestamp to new time zone"); -DATA(insert OID = 2070 ( timezone PGNSP PGUID 12 1 0 0 timestamp_izone_transform f f f f t f i s 2 0 1184 "1186 1114" _null_ _null_ _null_ _null_ _null_ timestamp_izone _null_ _null_ _null_ )); -DESCR("adjust timestamp to new time zone"); -DATA(insert OID = 2071 ( date_pl_interval PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 1114 "1082 1186" _null_ _null_ _null_ _null_ _null_ date_pl_interval _null_ _null_ _null_ )); -DATA(insert OID = 2072 ( date_mi_interval PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 1114 "1082 1186" _null_ _null_ _null_ _null_ _null_ date_mi_interval _null_ _null_ _null_ )); - -DATA(insert OID = 2073 ( substring PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 25 "25 25" _null_ _null_ _null_ _null_ _null_ textregexsubstr _null_ _null_ _null_ )); -DESCR("extract text matching regular expression"); -DATA(insert OID = 2074 ( substring PGNSP PGUID 14 1 0 0 0 f f f f t f i s 3 0 25 "25 25 25" _null_ _null_ _null_ _null_ _null_ "select pg_catalog.substring($1, pg_catalog.similar_escape($2, $3))" _null_ _null_ _null_ )); -DESCR("extract text matching SQL99 regular expression"); - -DATA(insert OID = 2075 ( bit PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 1560 "20 23" _null_ _null_ _null_ _null_ _null_ bitfromint8 _null_ _null_ _null_ )); -DESCR("convert int8 to bitstring"); -DATA(insert OID = 2076 ( int8 PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 20 "1560" _null_ _null_ _null_ _null_ _null_ bittoint8 _null_ _null_ _null_ )); -DESCR("convert bitstring to int8"); - -DATA(insert OID = 2077 ( current_setting PGNSP PGUID 12 1 0 0 0 f f f f t f s s 1 0 25 "25" _null_ _null_ _null_ _null_ _null_ show_config_by_name _null_ _null_ _null_ )); -DESCR("SHOW X as a function"); -DATA(insert OID = 3294 ( current_setting PGNSP PGUID 12 1 0 0 0 f f f f t f s s 2 0 25 "25 16" _null_ _null_ _null_ _null_ _null_ show_config_by_name_missing_ok _null_ _null_ _null_ )); -DESCR("SHOW X as a function, optionally no error for missing variable"); -DATA(insert OID = 2078 ( set_config PGNSP PGUID 12 1 0 0 0 f f f f f f v u 3 0 25 "25 25 16" _null_ _null_ _null_ _null_ _null_ set_config_by_name _null_ _null_ _null_ )); -DESCR("SET X as a function"); -DATA(insert OID = 2084 ( pg_show_all_settings PGNSP PGUID 12 1 1000 0 0 f f f f t t s s 0 0 2249 "" "{25,25,25,25,25,25,25,25,25,25,25,1009,25,25,25,23,16}" "{o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o}" "{name,setting,unit,category,short_desc,extra_desc,context,vartype,source,min_val,max_val,enumvals,boot_val,reset_val,sourcefile,sourceline,pending_restart}" _null_ _null_ show_all_settings _null_ _null_ _null_ )); -DESCR("SHOW ALL as a function"); -DATA(insert OID = 3329 ( pg_show_all_file_settings PGNSP PGUID 12 1 1000 0 0 f f f f t t v s 0 0 2249 "" "{25,23,23,25,25,16,25}" "{o,o,o,o,o,o,o}" "{sourcefile,sourceline,seqno,name,setting,applied,error}" _null_ _null_ show_all_file_settings _null_ _null_ _null_ )); -DESCR("show config file settings"); -DATA(insert OID = 3401 ( pg_hba_file_rules PGNSP PGUID 12 1 1000 0 0 f f f f t t v s 0 0 2249 "" "{23,25,1009,1009,25,25,25,1009,25}" "{o,o,o,o,o,o,o,o,o}" "{line_number,type,database,user_name,address,netmask,auth_method,options,error}" _null_ _null_ pg_hba_file_rules _null_ _null_ _null_ )); -DESCR("show pg_hba.conf rules"); -DATA(insert OID = 1371 ( pg_lock_status PGNSP PGUID 12 1 1000 0 0 f f f f t t v s 0 0 2249 "" "{25,26,26,23,21,25,28,26,26,21,25,23,25,16,16}" "{o,o,o,o,o,o,o,o,o,o,o,o,o,o,o}" "{locktype,database,relation,page,tuple,virtualxid,transactionid,classid,objid,objsubid,virtualtransaction,pid,mode,granted,fastpath}" _null_ _null_ pg_lock_status _null_ _null_ _null_ )); -DESCR("view system lock information"); -DATA(insert OID = 2561 ( pg_blocking_pids PGNSP PGUID 12 1 0 0 0 f f f f t f v s 1 0 1007 "23" _null_ _null_ _null_ _null_ _null_ pg_blocking_pids _null_ _null_ _null_ )); -DESCR("get array of PIDs of sessions blocking specified backend PID from acquiring a heavyweight lock"); -DATA(insert OID = 3376 ( pg_safe_snapshot_blocking_pids PGNSP PGUID 12 1 0 0 0 f f f f t f v s 1 0 1007 "23" _null_ _null_ _null_ _null_ _null_ pg_safe_snapshot_blocking_pids _null_ _null_ _null_ )); -DESCR("get array of PIDs of sessions blocking specified backend PID from acquiring a safe snapshot"); -DATA(insert OID = 3378 ( pg_isolation_test_session_is_blocked PGNSP PGUID 12 1 0 0 0 f f f f t f v s 2 0 16 "23 1007" _null_ _null_ _null_ _null_ _null_ pg_isolation_test_session_is_blocked _null_ _null_ _null_ )); -DESCR("isolationtester support function"); -DATA(insert OID = 1065 ( pg_prepared_xact PGNSP PGUID 12 1 1000 0 0 f f f f t t v s 0 0 2249 "" "{28,25,1184,26,26}" "{o,o,o,o,o}" "{transaction,gid,prepared,ownerid,dbid}" _null_ _null_ pg_prepared_xact _null_ _null_ _null_ )); -DESCR("view two-phase transactions"); -DATA(insert OID = 3819 ( pg_get_multixact_members PGNSP PGUID 12 1 1000 0 0 f f f f t t v s 1 0 2249 "28" "{28,28,25}" "{i,o,o}" "{multixid,xid,mode}" _null_ _null_ pg_get_multixact_members _null_ _null_ _null_ )); -DESCR("view members of a multixactid"); - -DATA(insert OID = 3581 ( pg_xact_commit_timestamp PGNSP PGUID 12 1 0 0 0 f f f f t f v s 1 0 1184 "28" _null_ _null_ _null_ _null_ _null_ pg_xact_commit_timestamp _null_ _null_ _null_ )); -DESCR("get commit timestamp of a transaction"); - -DATA(insert OID = 3583 ( pg_last_committed_xact PGNSP PGUID 12 1 0 0 0 f f f f t f v s 0 0 2249 "" "{28,1184}" "{o,o}" "{xid,timestamp}" _null_ _null_ pg_last_committed_xact _null_ _null_ _null_ )); -DESCR("get transaction Id and commit timestamp of latest transaction commit"); - -DATA(insert OID = 3537 ( pg_describe_object PGNSP PGUID 12 1 0 0 0 f f f f t f s s 3 0 25 "26 26 23" _null_ _null_ _null_ _null_ _null_ pg_describe_object _null_ _null_ _null_ )); -DESCR("get identification of SQL object"); - -DATA(insert OID = 3839 ( pg_identify_object PGNSP PGUID 12 1 0 0 0 f f f f t f s s 3 0 2249 "26 26 23" "{26,26,23,25,25,25,25}" "{i,i,i,o,o,o,o}" "{classid,objid,objsubid,type,schema,name,identity}" _null_ _null_ pg_identify_object _null_ _null_ _null_ )); -DESCR("get machine-parseable identification of SQL object"); - -DATA(insert OID = 3382 ( pg_identify_object_as_address PGNSP PGUID 12 1 0 0 0 f f f f t f s s 3 0 2249 "26 26 23" "{26,26,23,25,1009,1009}" "{i,i,i,o,o,o}" "{classid,objid,objsubid,type,object_names,object_args}" _null_ _null_ pg_identify_object_as_address _null_ _null_ _null_ )); -DESCR("get identification of SQL object for pg_get_object_address()"); - -DATA(insert OID = 3954 ( pg_get_object_address PGNSP PGUID 12 1 0 0 0 f f f f t f s s 3 0 2249 "25 1009 1009" "{25,1009,1009,26,26,23}" "{i,i,i,o,o,o}" "{type,name,args,classid,objid,objsubid}" _null_ _null_ pg_get_object_address _null_ _null_ _null_ )); -DESCR("get OID-based object address from name/args arrays"); - -DATA(insert OID = 2079 ( pg_table_is_visible PGNSP PGUID 12 10 0 0 0 f f f f t f s s 1 0 16 "26" _null_ _null_ _null_ _null_ _null_ pg_table_is_visible _null_ _null_ _null_ )); -DESCR("is table visible in search path?"); -DATA(insert OID = 2080 ( pg_type_is_visible PGNSP PGUID 12 10 0 0 0 f f f f t f s s 1 0 16 "26" _null_ _null_ _null_ _null_ _null_ pg_type_is_visible _null_ _null_ _null_ )); -DESCR("is type visible in search path?"); -DATA(insert OID = 2081 ( pg_function_is_visible PGNSP PGUID 12 10 0 0 0 f f f f t f s s 1 0 16 "26" _null_ _null_ _null_ _null_ _null_ pg_function_is_visible _null_ _null_ _null_ )); -DESCR("is function visible in search path?"); -DATA(insert OID = 2082 ( pg_operator_is_visible PGNSP PGUID 12 10 0 0 0 f f f f t f s s 1 0 16 "26" _null_ _null_ _null_ _null_ _null_ pg_operator_is_visible _null_ _null_ _null_ )); -DESCR("is operator visible in search path?"); -DATA(insert OID = 2083 ( pg_opclass_is_visible PGNSP PGUID 12 10 0 0 0 f f f f t f s s 1 0 16 "26" _null_ _null_ _null_ _null_ _null_ pg_opclass_is_visible _null_ _null_ _null_ )); -DESCR("is opclass visible in search path?"); -DATA(insert OID = 3829 ( pg_opfamily_is_visible PGNSP PGUID 12 10 0 0 0 f f f f t f s s 1 0 16 "26" _null_ _null_ _null_ _null_ _null_ pg_opfamily_is_visible _null_ _null_ _null_ )); -DESCR("is opfamily visible in search path?"); -DATA(insert OID = 2093 ( pg_conversion_is_visible PGNSP PGUID 12 10 0 0 0 f f f f t f s s 1 0 16 "26" _null_ _null_ _null_ _null_ _null_ pg_conversion_is_visible _null_ _null_ _null_ )); -DESCR("is conversion visible in search path?"); -DATA(insert OID = 3403 ( pg_statistics_obj_is_visible PGNSP PGUID 12 10 0 0 0 f f f f t f s s 1 0 16 "26" _null_ _null_ _null_ _null_ _null_ pg_statistics_obj_is_visible _null_ _null_ _null_ )); -DESCR("is statistics object visible in search path?"); -DATA(insert OID = 3756 ( pg_ts_parser_is_visible PGNSP PGUID 12 10 0 0 0 f f f f t f s s 1 0 16 "26" _null_ _null_ _null_ _null_ _null_ pg_ts_parser_is_visible _null_ _null_ _null_ )); -DESCR("is text search parser visible in search path?"); -DATA(insert OID = 3757 ( pg_ts_dict_is_visible PGNSP PGUID 12 10 0 0 0 f f f f t f s s 1 0 16 "26" _null_ _null_ _null_ _null_ _null_ pg_ts_dict_is_visible _null_ _null_ _null_ )); -DESCR("is text search dictionary visible in search path?"); -DATA(insert OID = 3768 ( pg_ts_template_is_visible PGNSP PGUID 12 10 0 0 0 f f f f t f s s 1 0 16 "26" _null_ _null_ _null_ _null_ _null_ pg_ts_template_is_visible _null_ _null_ _null_ )); -DESCR("is text search template visible in search path?"); -DATA(insert OID = 3758 ( pg_ts_config_is_visible PGNSP PGUID 12 10 0 0 0 f f f f t f s s 1 0 16 "26" _null_ _null_ _null_ _null_ _null_ pg_ts_config_is_visible _null_ _null_ _null_ )); -DESCR("is text search configuration visible in search path?"); -DATA(insert OID = 3815 ( pg_collation_is_visible PGNSP PGUID 12 10 0 0 0 f f f f t f s s 1 0 16 "26" _null_ _null_ _null_ _null_ _null_ pg_collation_is_visible _null_ _null_ _null_ )); -DESCR("is collation visible in search path?"); - -DATA(insert OID = 2854 ( pg_my_temp_schema PGNSP PGUID 12 1 0 0 0 f f f f t f s r 0 0 26 "" _null_ _null_ _null_ _null_ _null_ pg_my_temp_schema _null_ _null_ _null_ )); -DESCR("get OID of current session's temp schema, if any"); -DATA(insert OID = 2855 ( pg_is_other_temp_schema PGNSP PGUID 12 1 0 0 0 f f f f t f s s 1 0 16 "26" _null_ _null_ _null_ _null_ _null_ pg_is_other_temp_schema _null_ _null_ _null_ )); -DESCR("is schema another session's temp schema?"); - -DATA(insert OID = 2171 ( pg_cancel_backend PGNSP PGUID 12 1 0 0 0 f f f f t f v s 1 0 16 "23" _null_ _null_ _null_ _null_ _null_ pg_cancel_backend _null_ _null_ _null_ )); -DESCR("cancel a server process' current query"); -DATA(insert OID = 2096 ( pg_terminate_backend PGNSP PGUID 12 1 0 0 0 f f f f t f v s 1 0 16 "23" _null_ _null_ _null_ _null_ _null_ pg_terminate_backend _null_ _null_ _null_ )); -DESCR("terminate a server process"); -DATA(insert OID = 2172 ( pg_start_backup PGNSP PGUID 12 1 0 0 0 f f f f t f v r 3 0 3220 "25 16 16" _null_ _null_ _null_ _null_ _null_ pg_start_backup _null_ _null_ _null_ )); -DESCR("prepare for taking an online backup"); -DATA(insert OID = 2173 ( pg_stop_backup PGNSP PGUID 12 1 0 0 0 f f f f t f v r 0 0 3220 "" _null_ _null_ _null_ _null_ _null_ pg_stop_backup _null_ _null_ _null_ )); -DESCR("finish taking an online backup"); -DATA(insert OID = 2739 ( pg_stop_backup PGNSP PGUID 12 1 1 0 0 f f f f t t v r 2 0 2249 "16 16" "{16,16,3220,25,25}" "{i,i,o,o,o}" "{exclusive,wait_for_archive,lsn,labelfile,spcmapfile}" _null_ _null_ pg_stop_backup_v2 _null_ _null_ _null_ )); -DESCR("finish taking an online backup"); -DATA(insert OID = 3813 ( pg_is_in_backup PGNSP PGUID 12 1 0 0 0 f f f f t f v s 0 0 16 "" _null_ _null_ _null_ _null_ _null_ pg_is_in_backup _null_ _null_ _null_ )); -DESCR("true if server is in online backup"); -DATA(insert OID = 3814 ( pg_backup_start_time PGNSP PGUID 12 1 0 0 0 f f f f t f s s 0 0 1184 "" _null_ _null_ _null_ _null_ _null_ pg_backup_start_time _null_ _null_ _null_ )); -DESCR("start time of an online backup"); -DATA(insert OID = 2848 ( pg_switch_wal PGNSP PGUID 12 1 0 0 0 f f f f t f v s 0 0 3220 "" _null_ _null_ _null_ _null_ _null_ pg_switch_wal _null_ _null_ _null_ )); -DESCR("switch to new wal file"); -DATA(insert OID = 3098 ( pg_create_restore_point PGNSP PGUID 12 1 0 0 0 f f f f t f v s 1 0 3220 "25" _null_ _null_ _null_ _null_ _null_ pg_create_restore_point _null_ _null_ _null_ )); -DESCR("create a named restore point"); -DATA(insert OID = 2849 ( pg_current_wal_lsn PGNSP PGUID 12 1 0 0 0 f f f f t f v s 0 0 3220 "" _null_ _null_ _null_ _null_ _null_ pg_current_wal_lsn _null_ _null_ _null_ )); -DESCR("current wal write location"); -DATA(insert OID = 2852 ( pg_current_wal_insert_lsn PGNSP PGUID 12 1 0 0 0 f f f f t f v s 0 0 3220 "" _null_ _null_ _null_ _null_ _null_ pg_current_wal_insert_lsn _null_ _null_ _null_ )); -DESCR("current wal insert location"); -DATA(insert OID = 3330 ( pg_current_wal_flush_lsn PGNSP PGUID 12 1 0 0 0 f f f f t f v s 0 0 3220 "" _null_ _null_ _null_ _null_ _null_ pg_current_wal_flush_lsn _null_ _null_ _null_ )); -DESCR("current wal flush location"); -DATA(insert OID = 2850 ( pg_walfile_name_offset PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 2249 "3220" "{3220,25,23}" "{i,o,o}" "{lsn,file_name,file_offset}" _null_ _null_ pg_walfile_name_offset _null_ _null_ _null_ )); -DESCR("wal filename and byte offset, given a wal location"); -DATA(insert OID = 2851 ( pg_walfile_name PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 25 "3220" _null_ _null_ _null_ _null_ _null_ pg_walfile_name _null_ _null_ _null_ )); -DESCR("wal filename, given a wal location"); - -DATA(insert OID = 3165 ( pg_wal_lsn_diff PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 1700 "3220 3220" _null_ _null_ _null_ _null_ _null_ pg_wal_lsn_diff _null_ _null_ _null_ )); -DESCR("difference in bytes, given two wal locations"); - -DATA(insert OID = 3809 ( pg_export_snapshot PGNSP PGUID 12 1 0 0 0 f f f f t f v u 0 0 25 "" _null_ _null_ _null_ _null_ _null_ pg_export_snapshot _null_ _null_ _null_ )); -DESCR("export a snapshot"); - -DATA(insert OID = 3810 ( pg_is_in_recovery PGNSP PGUID 12 1 0 0 0 f f f f t f v s 0 0 16 "" _null_ _null_ _null_ _null_ _null_ pg_is_in_recovery _null_ _null_ _null_ )); -DESCR("true if server is in recovery"); - -DATA(insert OID = 3820 ( pg_last_wal_receive_lsn PGNSP PGUID 12 1 0 0 0 f f f f t f v s 0 0 3220 "" _null_ _null_ _null_ _null_ _null_ pg_last_wal_receive_lsn _null_ _null_ _null_ )); -DESCR("current wal flush location"); -DATA(insert OID = 3821 ( pg_last_wal_replay_lsn PGNSP PGUID 12 1 0 0 0 f f f f t f v s 0 0 3220 "" _null_ _null_ _null_ _null_ _null_ pg_last_wal_replay_lsn _null_ _null_ _null_ )); -DESCR("last wal replay location"); -DATA(insert OID = 3830 ( pg_last_xact_replay_timestamp PGNSP PGUID 12 1 0 0 0 f f f f t f v s 0 0 1184 "" _null_ _null_ _null_ _null_ _null_ pg_last_xact_replay_timestamp _null_ _null_ _null_ )); -DESCR("timestamp of last replay xact"); - -DATA(insert OID = 3071 ( pg_wal_replay_pause PGNSP PGUID 12 1 0 0 0 f f f f t f v s 0 0 2278 "" _null_ _null_ _null_ _null_ _null_ pg_wal_replay_pause _null_ _null_ _null_ )); -DESCR("pause wal replay"); -DATA(insert OID = 3072 ( pg_wal_replay_resume PGNSP PGUID 12 1 0 0 0 f f f f t f v s 0 0 2278 "" _null_ _null_ _null_ _null_ _null_ pg_wal_replay_resume _null_ _null_ _null_ )); -DESCR("resume wal replay, if it was paused"); -DATA(insert OID = 3073 ( pg_is_wal_replay_paused PGNSP PGUID 12 1 0 0 0 f f f f t f v s 0 0 16 "" _null_ _null_ _null_ _null_ _null_ pg_is_wal_replay_paused _null_ _null_ _null_ )); -DESCR("true if wal replay is paused"); - -DATA(insert OID = 2621 ( pg_reload_conf PGNSP PGUID 12 1 0 0 0 f f f f t f v s 0 0 16 "" _null_ _null_ _null_ _null_ _null_ pg_reload_conf _null_ _null_ _null_ )); -DESCR("reload configuration files"); -DATA(insert OID = 2622 ( pg_rotate_logfile PGNSP PGUID 12 1 0 0 0 f f f f t f v s 0 0 16 "" _null_ _null_ _null_ _null_ _null_ pg_rotate_logfile _null_ _null_ _null_ )); -DESCR("rotate log file"); -DATA(insert OID = 3800 ( pg_current_logfile PGNSP PGUID 12 1 0 0 0 f f f f f f v s 0 0 25 "" _null_ _null_ _null_ _null_ _null_ pg_current_logfile _null_ _null_ _null_ )); -DESCR("current logging collector file location"); -DATA(insert OID = 3801 ( pg_current_logfile PGNSP PGUID 12 1 0 0 0 f f f f f f v s 1 0 25 "25" _null_ _null_ _null_ _null_ _null_ pg_current_logfile_1arg _null_ _null_ _null_ )); -DESCR("current logging collector file location"); - -DATA(insert OID = 2623 ( pg_stat_file PGNSP PGUID 12 1 0 0 0 f f f f t f v s 1 0 2249 "25" "{25,20,1184,1184,1184,1184,16}" "{i,o,o,o,o,o,o}" "{filename,size,access,modification,change,creation,isdir}" _null_ _null_ pg_stat_file_1arg _null_ _null_ _null_ )); -DESCR("get information about file"); -DATA(insert OID = 3307 ( pg_stat_file PGNSP PGUID 12 1 0 0 0 f f f f t f v s 2 0 2249 "25 16" "{25,16,20,1184,1184,1184,1184,16}" "{i,i,o,o,o,o,o,o}" "{filename,missing_ok,size,access,modification,change,creation,isdir}" _null_ _null_ pg_stat_file _null_ _null_ _null_ )); -DESCR("get information about file"); -DATA(insert OID = 2624 ( pg_read_file PGNSP PGUID 12 1 0 0 0 f f f f t f v s 3 0 25 "25 20 20" _null_ _null_ _null_ _null_ _null_ pg_read_file_off_len _null_ _null_ _null_ )); -DESCR("read text from a file"); -DATA(insert OID = 3293 ( pg_read_file PGNSP PGUID 12 1 0 0 0 f f f f t f v s 4 0 25 "25 20 20 16" _null_ _null_ _null_ _null_ _null_ pg_read_file _null_ _null_ _null_ )); -DESCR("read text from a file"); -DATA(insert OID = 3826 ( pg_read_file PGNSP PGUID 12 1 0 0 0 f f f f t f v s 1 0 25 "25" _null_ _null_ _null_ _null_ _null_ pg_read_file_all _null_ _null_ _null_ )); -DESCR("read text from a file"); -DATA(insert OID = 3827 ( pg_read_binary_file PGNSP PGUID 12 1 0 0 0 f f f f t f v s 3 0 17 "25 20 20" _null_ _null_ _null_ _null_ _null_ pg_read_binary_file_off_len _null_ _null_ _null_ )); -DESCR("read bytea from a file"); -DATA(insert OID = 3295 ( pg_read_binary_file PGNSP PGUID 12 1 0 0 0 f f f f t f v s 4 0 17 "25 20 20 16" _null_ _null_ _null_ _null_ _null_ pg_read_binary_file _null_ _null_ _null_ )); -DESCR("read bytea from a file"); -DATA(insert OID = 3828 ( pg_read_binary_file PGNSP PGUID 12 1 0 0 0 f f f f t f v s 1 0 17 "25" _null_ _null_ _null_ _null_ _null_ pg_read_binary_file_all _null_ _null_ _null_ )); -DESCR("read bytea from a file"); -DATA(insert OID = 2625 ( pg_ls_dir PGNSP PGUID 12 1 1000 0 0 f f f f t t v s 1 0 25 "25" _null_ _null_ _null_ _null_ _null_ pg_ls_dir_1arg _null_ _null_ _null_ )); -DESCR("list all files in a directory"); -DATA(insert OID = 3297 ( pg_ls_dir PGNSP PGUID 12 1 1000 0 0 f f f f t t v s 3 0 25 "25 16 16" _null_ _null_ _null_ _null_ _null_ pg_ls_dir _null_ _null_ _null_ )); -DESCR("list all files in a directory"); -DATA(insert OID = 2626 ( pg_sleep PGNSP PGUID 12 1 0 0 0 f f f f t f v s 1 0 2278 "701" _null_ _null_ _null_ _null_ _null_ pg_sleep _null_ _null_ _null_ )); -DESCR("sleep for the specified time in seconds"); -DATA(insert OID = 3935 ( pg_sleep_for PGNSP PGUID 14 1 0 0 0 f f f f t f v s 1 0 2278 "1186" _null_ _null_ _null_ _null_ _null_ "select pg_catalog.pg_sleep(extract(epoch from pg_catalog.clock_timestamp() operator(pg_catalog.+) $1) operator(pg_catalog.-) extract(epoch from pg_catalog.clock_timestamp()))" _null_ _null_ _null_ )); -DESCR("sleep for the specified interval"); -DATA(insert OID = 3936 ( pg_sleep_until PGNSP PGUID 14 1 0 0 0 f f f f t f v s 1 0 2278 "1184" _null_ _null_ _null_ _null_ _null_ "select pg_catalog.pg_sleep(extract(epoch from $1) operator(pg_catalog.-) extract(epoch from pg_catalog.clock_timestamp()))" _null_ _null_ _null_ )); -DESCR("sleep until the specified time"); - -DATA(insert OID = 2971 ( text PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 25 "16" _null_ _null_ _null_ _null_ _null_ booltext _null_ _null_ _null_ )); -DESCR("convert boolean to text"); - -/* Aggregates (moved here from pg_aggregate for 7.3) */ - -DATA(insert OID = 2100 ( avg PGNSP PGUID 12 1 0 0 0 t f f f f f i s 1 0 1700 "20" _null_ _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ )); -DESCR("the average (arithmetic mean) as numeric of all bigint values"); -DATA(insert OID = 2101 ( avg PGNSP PGUID 12 1 0 0 0 t f f f f f i s 1 0 1700 "23" _null_ _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ )); -DESCR("the average (arithmetic mean) as numeric of all integer values"); -DATA(insert OID = 2102 ( avg PGNSP PGUID 12 1 0 0 0 t f f f f f i s 1 0 1700 "21" _null_ _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ )); -DESCR("the average (arithmetic mean) as numeric of all smallint values"); -DATA(insert OID = 2103 ( avg PGNSP PGUID 12 1 0 0 0 t f f f f f i s 1 0 1700 "1700" _null_ _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ )); -DESCR("the average (arithmetic mean) as numeric of all numeric values"); -DATA(insert OID = 2104 ( avg PGNSP PGUID 12 1 0 0 0 t f f f f f i s 1 0 701 "700" _null_ _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ )); -DESCR("the average (arithmetic mean) as float8 of all float4 values"); -DATA(insert OID = 2105 ( avg PGNSP PGUID 12 1 0 0 0 t f f f f f i s 1 0 701 "701" _null_ _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ )); -DESCR("the average (arithmetic mean) as float8 of all float8 values"); -DATA(insert OID = 2106 ( avg PGNSP PGUID 12 1 0 0 0 t f f f f f i s 1 0 1186 "1186" _null_ _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ )); -DESCR("the average (arithmetic mean) as interval of all interval values"); - -DATA(insert OID = 2107 ( sum PGNSP PGUID 12 1 0 0 0 t f f f f f i s 1 0 1700 "20" _null_ _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ )); -DESCR("sum as numeric across all bigint input values"); -DATA(insert OID = 2108 ( sum PGNSP PGUID 12 1 0 0 0 t f f f f f i s 1 0 20 "23" _null_ _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ )); -DESCR("sum as bigint across all integer input values"); -DATA(insert OID = 2109 ( sum PGNSP PGUID 12 1 0 0 0 t f f f f f i s 1 0 20 "21" _null_ _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ )); -DESCR("sum as bigint across all smallint input values"); -DATA(insert OID = 2110 ( sum PGNSP PGUID 12 1 0 0 0 t f f f f f i s 1 0 700 "700" _null_ _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ )); -DESCR("sum as float4 across all float4 input values"); -DATA(insert OID = 2111 ( sum PGNSP PGUID 12 1 0 0 0 t f f f f f i s 1 0 701 "701" _null_ _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ )); -DESCR("sum as float8 across all float8 input values"); -DATA(insert OID = 2112 ( sum PGNSP PGUID 12 1 0 0 0 t f f f f f i s 1 0 790 "790" _null_ _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ )); -DESCR("sum as money across all money input values"); -DATA(insert OID = 2113 ( sum PGNSP PGUID 12 1 0 0 0 t f f f f f i s 1 0 1186 "1186" _null_ _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ )); -DESCR("sum as interval across all interval input values"); -DATA(insert OID = 2114 ( sum PGNSP PGUID 12 1 0 0 0 t f f f f f i s 1 0 1700 "1700" _null_ _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ )); -DESCR("sum as numeric across all numeric input values"); - -DATA(insert OID = 2115 ( max PGNSP PGUID 12 1 0 0 0 t f f f f f i s 1 0 20 "20" _null_ _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ )); -DESCR("maximum value of all bigint input values"); -DATA(insert OID = 2116 ( max PGNSP PGUID 12 1 0 0 0 t f f f f f i s 1 0 23 "23" _null_ _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ )); -DESCR("maximum value of all integer input values"); -DATA(insert OID = 2117 ( max PGNSP PGUID 12 1 0 0 0 t f f f f f i s 1 0 21 "21" _null_ _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ )); -DESCR("maximum value of all smallint input values"); -DATA(insert OID = 2118 ( max PGNSP PGUID 12 1 0 0 0 t f f f f f i s 1 0 26 "26" _null_ _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ )); -DESCR("maximum value of all oid input values"); -DATA(insert OID = 2119 ( max PGNSP PGUID 12 1 0 0 0 t f f f f f i s 1 0 700 "700" _null_ _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ )); -DESCR("maximum value of all float4 input values"); -DATA(insert OID = 2120 ( max PGNSP PGUID 12 1 0 0 0 t f f f f f i s 1 0 701 "701" _null_ _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ )); -DESCR("maximum value of all float8 input values"); -DATA(insert OID = 2121 ( max PGNSP PGUID 12 1 0 0 0 t f f f f f i s 1 0 702 "702" _null_ _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ )); -DESCR("maximum value of all abstime input values"); -DATA(insert OID = 2122 ( max PGNSP PGUID 12 1 0 0 0 t f f f f f i s 1 0 1082 "1082" _null_ _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ )); -DESCR("maximum value of all date input values"); -DATA(insert OID = 2123 ( max PGNSP PGUID 12 1 0 0 0 t f f f f f i s 1 0 1083 "1083" _null_ _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ )); -DESCR("maximum value of all time input values"); -DATA(insert OID = 2124 ( max PGNSP PGUID 12 1 0 0 0 t f f f f f i s 1 0 1266 "1266" _null_ _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ )); -DESCR("maximum value of all time with time zone input values"); -DATA(insert OID = 2125 ( max PGNSP PGUID 12 1 0 0 0 t f f f f f i s 1 0 790 "790" _null_ _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ )); -DESCR("maximum value of all money input values"); -DATA(insert OID = 2126 ( max PGNSP PGUID 12 1 0 0 0 t f f f f f i s 1 0 1114 "1114" _null_ _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ )); -DESCR("maximum value of all timestamp input values"); -DATA(insert OID = 2127 ( max PGNSP PGUID 12 1 0 0 0 t f f f f f i s 1 0 1184 "1184" _null_ _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ )); -DESCR("maximum value of all timestamp with time zone input values"); -DATA(insert OID = 2128 ( max PGNSP PGUID 12 1 0 0 0 t f f f f f i s 1 0 1186 "1186" _null_ _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ )); -DESCR("maximum value of all interval input values"); -DATA(insert OID = 2129 ( max PGNSP PGUID 12 1 0 0 0 t f f f f f i s 1 0 25 "25" _null_ _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ )); -DESCR("maximum value of all text input values"); -DATA(insert OID = 2130 ( max PGNSP PGUID 12 1 0 0 0 t f f f f f i s 1 0 1700 "1700" _null_ _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ )); -DESCR("maximum value of all numeric input values"); -DATA(insert OID = 2050 ( max PGNSP PGUID 12 1 0 0 0 t f f f f f i s 1 0 2277 "2277" _null_ _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ )); -DESCR("maximum value of all anyarray input values"); -DATA(insert OID = 2244 ( max PGNSP PGUID 12 1 0 0 0 t f f f f f i s 1 0 1042 "1042" _null_ _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ )); -DESCR("maximum value of all bpchar input values"); -DATA(insert OID = 2797 ( max PGNSP PGUID 12 1 0 0 0 t f f f f f i s 1 0 27 "27" _null_ _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ )); -DESCR("maximum value of all tid input values"); -DATA(insert OID = 3564 ( max PGNSP PGUID 12 1 0 0 0 t f f f f f i s 1 0 869 "869" _null_ _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ )); -DESCR("maximum value of all inet input values"); - -DATA(insert OID = 2131 ( min PGNSP PGUID 12 1 0 0 0 t f f f f f i s 1 0 20 "20" _null_ _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ )); -DESCR("minimum value of all bigint input values"); -DATA(insert OID = 2132 ( min PGNSP PGUID 12 1 0 0 0 t f f f f f i s 1 0 23 "23" _null_ _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ )); -DESCR("minimum value of all integer input values"); -DATA(insert OID = 2133 ( min PGNSP PGUID 12 1 0 0 0 t f f f f f i s 1 0 21 "21" _null_ _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ )); -DESCR("minimum value of all smallint input values"); -DATA(insert OID = 2134 ( min PGNSP PGUID 12 1 0 0 0 t f f f f f i s 1 0 26 "26" _null_ _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ )); -DESCR("minimum value of all oid input values"); -DATA(insert OID = 2135 ( min PGNSP PGUID 12 1 0 0 0 t f f f f f i s 1 0 700 "700" _null_ _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ )); -DESCR("minimum value of all float4 input values"); -DATA(insert OID = 2136 ( min PGNSP PGUID 12 1 0 0 0 t f f f f f i s 1 0 701 "701" _null_ _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ )); -DESCR("minimum value of all float8 input values"); -DATA(insert OID = 2137 ( min PGNSP PGUID 12 1 0 0 0 t f f f f f i s 1 0 702 "702" _null_ _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ )); -DESCR("minimum value of all abstime input values"); -DATA(insert OID = 2138 ( min PGNSP PGUID 12 1 0 0 0 t f f f f f i s 1 0 1082 "1082" _null_ _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ )); -DESCR("minimum value of all date input values"); -DATA(insert OID = 2139 ( min PGNSP PGUID 12 1 0 0 0 t f f f f f i s 1 0 1083 "1083" _null_ _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ )); -DESCR("minimum value of all time input values"); -DATA(insert OID = 2140 ( min PGNSP PGUID 12 1 0 0 0 t f f f f f i s 1 0 1266 "1266" _null_ _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ )); -DESCR("minimum value of all time with time zone input values"); -DATA(insert OID = 2141 ( min PGNSP PGUID 12 1 0 0 0 t f f f f f i s 1 0 790 "790" _null_ _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ )); -DESCR("minimum value of all money input values"); -DATA(insert OID = 2142 ( min PGNSP PGUID 12 1 0 0 0 t f f f f f i s 1 0 1114 "1114" _null_ _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ )); -DESCR("minimum value of all timestamp input values"); -DATA(insert OID = 2143 ( min PGNSP PGUID 12 1 0 0 0 t f f f f f i s 1 0 1184 "1184" _null_ _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ )); -DESCR("minimum value of all timestamp with time zone input values"); -DATA(insert OID = 2144 ( min PGNSP PGUID 12 1 0 0 0 t f f f f f i s 1 0 1186 "1186" _null_ _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ )); -DESCR("minimum value of all interval input values"); -DATA(insert OID = 2145 ( min PGNSP PGUID 12 1 0 0 0 t f f f f f i s 1 0 25 "25" _null_ _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ )); -DESCR("minimum value of all text values"); -DATA(insert OID = 2146 ( min PGNSP PGUID 12 1 0 0 0 t f f f f f i s 1 0 1700 "1700" _null_ _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ )); -DESCR("minimum value of all numeric input values"); -DATA(insert OID = 2051 ( min PGNSP PGUID 12 1 0 0 0 t f f f f f i s 1 0 2277 "2277" _null_ _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ )); -DESCR("minimum value of all anyarray input values"); -DATA(insert OID = 2245 ( min PGNSP PGUID 12 1 0 0 0 t f f f f f i s 1 0 1042 "1042" _null_ _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ )); -DESCR("minimum value of all bpchar input values"); -DATA(insert OID = 2798 ( min PGNSP PGUID 12 1 0 0 0 t f f f f f i s 1 0 27 "27" _null_ _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ )); -DESCR("minimum value of all tid input values"); -DATA(insert OID = 3565 ( min PGNSP PGUID 12 1 0 0 0 t f f f f f i s 1 0 869 "869" _null_ _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ )); -DESCR("minimum value of all inet input values"); - -/* count has two forms: count(any) and count(*) */ -DATA(insert OID = 2147 ( count PGNSP PGUID 12 1 0 0 0 t f f f f f i s 1 0 20 "2276" _null_ _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ )); -DESCR("number of input rows for which the input expression is not null"); -DATA(insert OID = 2803 ( count PGNSP PGUID 12 1 0 0 0 t f f f f f i s 0 0 20 "" _null_ _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ )); -DESCR("number of input rows"); - -DATA(insert OID = 2718 ( var_pop PGNSP PGUID 12 1 0 0 0 t f f f f f i s 1 0 1700 "20" _null_ _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ )); -DESCR("population variance of bigint input values (square of the population standard deviation)"); -DATA(insert OID = 2719 ( var_pop PGNSP PGUID 12 1 0 0 0 t f f f f f i s 1 0 1700 "23" _null_ _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ )); -DESCR("population variance of integer input values (square of the population standard deviation)"); -DATA(insert OID = 2720 ( var_pop PGNSP PGUID 12 1 0 0 0 t f f f f f i s 1 0 1700 "21" _null_ _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ )); -DESCR("population variance of smallint input values (square of the population standard deviation)"); -DATA(insert OID = 2721 ( var_pop PGNSP PGUID 12 1 0 0 0 t f f f f f i s 1 0 701 "700" _null_ _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ )); -DESCR("population variance of float4 input values (square of the population standard deviation)"); -DATA(insert OID = 2722 ( var_pop PGNSP PGUID 12 1 0 0 0 t f f f f f i s 1 0 701 "701" _null_ _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ )); -DESCR("population variance of float8 input values (square of the population standard deviation)"); -DATA(insert OID = 2723 ( var_pop PGNSP PGUID 12 1 0 0 0 t f f f f f i s 1 0 1700 "1700" _null_ _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ )); -DESCR("population variance of numeric input values (square of the population standard deviation)"); - -DATA(insert OID = 2641 ( var_samp PGNSP PGUID 12 1 0 0 0 t f f f f f i s 1 0 1700 "20" _null_ _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ )); -DESCR("sample variance of bigint input values (square of the sample standard deviation)"); -DATA(insert OID = 2642 ( var_samp PGNSP PGUID 12 1 0 0 0 t f f f f f i s 1 0 1700 "23" _null_ _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ )); -DESCR("sample variance of integer input values (square of the sample standard deviation)"); -DATA(insert OID = 2643 ( var_samp PGNSP PGUID 12 1 0 0 0 t f f f f f i s 1 0 1700 "21" _null_ _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ )); -DESCR("sample variance of smallint input values (square of the sample standard deviation)"); -DATA(insert OID = 2644 ( var_samp PGNSP PGUID 12 1 0 0 0 t f f f f f i s 1 0 701 "700" _null_ _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ )); -DESCR("sample variance of float4 input values (square of the sample standard deviation)"); - -DATA(insert OID = 2645 ( var_samp PGNSP PGUID 12 1 0 0 0 t f f f f f i s 1 0 701 "701" _null_ _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ )); -DESCR("sample variance of float8 input values (square of the sample standard deviation)"); -DATA(insert OID = 2646 ( var_samp PGNSP PGUID 12 1 0 0 0 t f f f f f i s 1 0 1700 "1700" _null_ _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ )); -DESCR("sample variance of numeric input values (square of the sample standard deviation)"); - -DATA(insert OID = 2148 ( variance PGNSP PGUID 12 1 0 0 0 t f f f f f i s 1 0 1700 "20" _null_ _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ )); -DESCR("historical alias for var_samp"); -DATA(insert OID = 2149 ( variance PGNSP PGUID 12 1 0 0 0 t f f f f f i s 1 0 1700 "23" _null_ _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ )); -DESCR("historical alias for var_samp"); -DATA(insert OID = 2150 ( variance PGNSP PGUID 12 1 0 0 0 t f f f f f i s 1 0 1700 "21" _null_ _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ )); -DESCR("historical alias for var_samp"); -DATA(insert OID = 2151 ( variance PGNSP PGUID 12 1 0 0 0 t f f f f f i s 1 0 701 "700" _null_ _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ )); -DESCR("historical alias for var_samp"); -DATA(insert OID = 2152 ( variance PGNSP PGUID 12 1 0 0 0 t f f f f f i s 1 0 701 "701" _null_ _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ )); -DESCR("historical alias for var_samp"); -DATA(insert OID = 2153 ( variance PGNSP PGUID 12 1 0 0 0 t f f f f f i s 1 0 1700 "1700" _null_ _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ )); -DESCR("historical alias for var_samp"); - -DATA(insert OID = 2724 ( stddev_pop PGNSP PGUID 12 1 0 0 0 t f f f f f i s 1 0 1700 "20" _null_ _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ )); -DESCR("population standard deviation of bigint input values"); -DATA(insert OID = 2725 ( stddev_pop PGNSP PGUID 12 1 0 0 0 t f f f f f i s 1 0 1700 "23" _null_ _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ )); -DESCR("population standard deviation of integer input values"); -DATA(insert OID = 2726 ( stddev_pop PGNSP PGUID 12 1 0 0 0 t f f f f f i s 1 0 1700 "21" _null_ _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ )); -DESCR("population standard deviation of smallint input values"); -DATA(insert OID = 2727 ( stddev_pop PGNSP PGUID 12 1 0 0 0 t f f f f f i s 1 0 701 "700" _null_ _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ )); -DESCR("population standard deviation of float4 input values"); -DATA(insert OID = 2728 ( stddev_pop PGNSP PGUID 12 1 0 0 0 t f f f f f i s 1 0 701 "701" _null_ _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ )); -DESCR("population standard deviation of float8 input values"); -DATA(insert OID = 2729 ( stddev_pop PGNSP PGUID 12 1 0 0 0 t f f f f f i s 1 0 1700 "1700" _null_ _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ )); -DESCR("population standard deviation of numeric input values"); - -DATA(insert OID = 2712 ( stddev_samp PGNSP PGUID 12 1 0 0 0 t f f f f f i s 1 0 1700 "20" _null_ _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ )); -DESCR("sample standard deviation of bigint input values"); -DATA(insert OID = 2713 ( stddev_samp PGNSP PGUID 12 1 0 0 0 t f f f f f i s 1 0 1700 "23" _null_ _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ )); -DESCR("sample standard deviation of integer input values"); -DATA(insert OID = 2714 ( stddev_samp PGNSP PGUID 12 1 0 0 0 t f f f f f i s 1 0 1700 "21" _null_ _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ )); -DESCR("sample standard deviation of smallint input values"); -DATA(insert OID = 2715 ( stddev_samp PGNSP PGUID 12 1 0 0 0 t f f f f f i s 1 0 701 "700" _null_ _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ )); -DESCR("sample standard deviation of float4 input values"); -DATA(insert OID = 2716 ( stddev_samp PGNSP PGUID 12 1 0 0 0 t f f f f f i s 1 0 701 "701" _null_ _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ )); -DESCR("sample standard deviation of float8 input values"); -DATA(insert OID = 2717 ( stddev_samp PGNSP PGUID 12 1 0 0 0 t f f f f f i s 1 0 1700 "1700" _null_ _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ )); -DESCR("sample standard deviation of numeric input values"); - -DATA(insert OID = 2154 ( stddev PGNSP PGUID 12 1 0 0 0 t f f f f f i s 1 0 1700 "20" _null_ _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ )); -DESCR("historical alias for stddev_samp"); -DATA(insert OID = 2155 ( stddev PGNSP PGUID 12 1 0 0 0 t f f f f f i s 1 0 1700 "23" _null_ _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ )); -DESCR("historical alias for stddev_samp"); -DATA(insert OID = 2156 ( stddev PGNSP PGUID 12 1 0 0 0 t f f f f f i s 1 0 1700 "21" _null_ _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ )); -DESCR("historical alias for stddev_samp"); -DATA(insert OID = 2157 ( stddev PGNSP PGUID 12 1 0 0 0 t f f f f f i s 1 0 701 "700" _null_ _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ )); -DESCR("historical alias for stddev_samp"); -DATA(insert OID = 2158 ( stddev PGNSP PGUID 12 1 0 0 0 t f f f f f i s 1 0 701 "701" _null_ _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ )); -DESCR("historical alias for stddev_samp"); -DATA(insert OID = 2159 ( stddev PGNSP PGUID 12 1 0 0 0 t f f f f f i s 1 0 1700 "1700" _null_ _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ )); -DESCR("historical alias for stddev_samp"); - -DATA(insert OID = 2818 ( regr_count PGNSP PGUID 12 1 0 0 0 t f f f f f i s 2 0 20 "701 701" _null_ _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ )); -DESCR("number of input rows in which both expressions are not null"); -DATA(insert OID = 2819 ( regr_sxx PGNSP PGUID 12 1 0 0 0 t f f f f f i s 2 0 701 "701 701" _null_ _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ )); -DESCR("sum of squares of the independent variable (sum(X^2) - sum(X)^2/N)"); -DATA(insert OID = 2820 ( regr_syy PGNSP PGUID 12 1 0 0 0 t f f f f f i s 2 0 701 "701 701" _null_ _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ )); -DESCR("sum of squares of the dependent variable (sum(Y^2) - sum(Y)^2/N)"); -DATA(insert OID = 2821 ( regr_sxy PGNSP PGUID 12 1 0 0 0 t f f f f f i s 2 0 701 "701 701" _null_ _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ )); -DESCR("sum of products of independent times dependent variable (sum(X*Y) - sum(X) * sum(Y)/N)"); -DATA(insert OID = 2822 ( regr_avgx PGNSP PGUID 12 1 0 0 0 t f f f f f i s 2 0 701 "701 701" _null_ _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ )); -DESCR("average of the independent variable (sum(X)/N)"); -DATA(insert OID = 2823 ( regr_avgy PGNSP PGUID 12 1 0 0 0 t f f f f f i s 2 0 701 "701 701" _null_ _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ )); -DESCR("average of the dependent variable (sum(Y)/N)"); -DATA(insert OID = 2824 ( regr_r2 PGNSP PGUID 12 1 0 0 0 t f f f f f i s 2 0 701 "701 701" _null_ _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ )); -DESCR("square of the correlation coefficient"); -DATA(insert OID = 2825 ( regr_slope PGNSP PGUID 12 1 0 0 0 t f f f f f i s 2 0 701 "701 701" _null_ _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ )); -DESCR("slope of the least-squares-fit linear equation determined by the (X, Y) pairs"); -DATA(insert OID = 2826 ( regr_intercept PGNSP PGUID 12 1 0 0 0 t f f f f f i s 2 0 701 "701 701" _null_ _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ )); -DESCR("y-intercept of the least-squares-fit linear equation determined by the (X, Y) pairs"); - -DATA(insert OID = 2827 ( covar_pop PGNSP PGUID 12 1 0 0 0 t f f f f f i s 2 0 701 "701 701" _null_ _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ )); -DESCR("population covariance"); -DATA(insert OID = 2828 ( covar_samp PGNSP PGUID 12 1 0 0 0 t f f f f f i s 2 0 701 "701 701" _null_ _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ )); -DESCR("sample covariance"); -DATA(insert OID = 2829 ( corr PGNSP PGUID 12 1 0 0 0 t f f f f f i s 2 0 701 "701 701" _null_ _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ )); -DESCR("correlation coefficient"); - -DATA(insert OID = 2160 ( text_pattern_lt PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 16 "25 25" _null_ _null_ _null_ _null_ _null_ text_pattern_lt _null_ _null_ _null_ )); -DATA(insert OID = 2161 ( text_pattern_le PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 16 "25 25" _null_ _null_ _null_ _null_ _null_ text_pattern_le _null_ _null_ _null_ )); -DATA(insert OID = 2163 ( text_pattern_ge PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 16 "25 25" _null_ _null_ _null_ _null_ _null_ text_pattern_ge _null_ _null_ _null_ )); -DATA(insert OID = 2164 ( text_pattern_gt PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 16 "25 25" _null_ _null_ _null_ _null_ _null_ text_pattern_gt _null_ _null_ _null_ )); -DATA(insert OID = 2166 ( bttext_pattern_cmp PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 23 "25 25" _null_ _null_ _null_ _null_ _null_ bttext_pattern_cmp _null_ _null_ _null_ )); -DESCR("less-equal-greater"); -DATA(insert OID = 3332 ( bttext_pattern_sortsupport PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 2278 "2281" _null_ _null_ _null_ _null_ _null_ bttext_pattern_sortsupport _null_ _null_ _null_ )); -DESCR("sort support"); - -DATA(insert OID = 2174 ( bpchar_pattern_lt PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 16 "1042 1042" _null_ _null_ _null_ _null_ _null_ bpchar_pattern_lt _null_ _null_ _null_ )); -DATA(insert OID = 2175 ( bpchar_pattern_le PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 16 "1042 1042" _null_ _null_ _null_ _null_ _null_ bpchar_pattern_le _null_ _null_ _null_ )); -DATA(insert OID = 2177 ( bpchar_pattern_ge PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 16 "1042 1042" _null_ _null_ _null_ _null_ _null_ bpchar_pattern_ge _null_ _null_ _null_ )); -DATA(insert OID = 2178 ( bpchar_pattern_gt PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 16 "1042 1042" _null_ _null_ _null_ _null_ _null_ bpchar_pattern_gt _null_ _null_ _null_ )); -DATA(insert OID = 2180 ( btbpchar_pattern_cmp PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 23 "1042 1042" _null_ _null_ _null_ _null_ _null_ btbpchar_pattern_cmp _null_ _null_ _null_ )); -DESCR("less-equal-greater"); -DATA(insert OID = 3333 ( btbpchar_pattern_sortsupport PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 2278 "2281" _null_ _null_ _null_ _null_ _null_ btbpchar_pattern_sortsupport _null_ _null_ _null_ )); -DESCR("sort support"); - -DATA(insert OID = 2188 ( btint48cmp PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 23 "23 20" _null_ _null_ _null_ _null_ _null_ btint48cmp _null_ _null_ _null_ )); -DESCR("less-equal-greater"); -DATA(insert OID = 2189 ( btint84cmp PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 23 "20 23" _null_ _null_ _null_ _null_ _null_ btint84cmp _null_ _null_ _null_ )); -DESCR("less-equal-greater"); -DATA(insert OID = 2190 ( btint24cmp PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 23 "21 23" _null_ _null_ _null_ _null_ _null_ btint24cmp _null_ _null_ _null_ )); -DESCR("less-equal-greater"); -DATA(insert OID = 2191 ( btint42cmp PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 23 "23 21" _null_ _null_ _null_ _null_ _null_ btint42cmp _null_ _null_ _null_ )); -DESCR("less-equal-greater"); -DATA(insert OID = 2192 ( btint28cmp PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 23 "21 20" _null_ _null_ _null_ _null_ _null_ btint28cmp _null_ _null_ _null_ )); -DESCR("less-equal-greater"); -DATA(insert OID = 2193 ( btint82cmp PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 23 "20 21" _null_ _null_ _null_ _null_ _null_ btint82cmp _null_ _null_ _null_ )); -DESCR("less-equal-greater"); -DATA(insert OID = 2194 ( btfloat48cmp PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 23 "700 701" _null_ _null_ _null_ _null_ _null_ btfloat48cmp _null_ _null_ _null_ )); -DESCR("less-equal-greater"); -DATA(insert OID = 2195 ( btfloat84cmp PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 23 "701 700" _null_ _null_ _null_ _null_ _null_ btfloat84cmp _null_ _null_ _null_ )); -DESCR("less-equal-greater"); - -DATA(insert OID = 2212 ( regprocedurein PGNSP PGUID 12 1 0 0 0 f f f f t f s s 1 0 2202 "2275" _null_ _null_ _null_ _null_ _null_ regprocedurein _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 2213 ( regprocedureout PGNSP PGUID 12 1 0 0 0 f f f f t f s s 1 0 2275 "2202" _null_ _null_ _null_ _null_ _null_ regprocedureout _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 2214 ( regoperin PGNSP PGUID 12 1 0 0 0 f f f f t f s s 1 0 2203 "2275" _null_ _null_ _null_ _null_ _null_ regoperin _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 2215 ( regoperout PGNSP PGUID 12 1 0 0 0 f f f f t f s s 1 0 2275 "2203" _null_ _null_ _null_ _null_ _null_ regoperout _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 3492 ( to_regoper PGNSP PGUID 12 1 0 0 0 f f f f t f s s 1 0 2203 "25" _null_ _null_ _null_ _null_ _null_ to_regoper _null_ _null_ _null_ )); -DESCR("convert operator name to regoper"); -DATA(insert OID = 3476 ( to_regoperator PGNSP PGUID 12 1 0 0 0 f f f f t f s s 1 0 2204 "25" _null_ _null_ _null_ _null_ _null_ to_regoperator _null_ _null_ _null_ )); -DESCR("convert operator name to regoperator"); -DATA(insert OID = 2216 ( regoperatorin PGNSP PGUID 12 1 0 0 0 f f f f t f s s 1 0 2204 "2275" _null_ _null_ _null_ _null_ _null_ regoperatorin _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 2217 ( regoperatorout PGNSP PGUID 12 1 0 0 0 f f f f t f s s 1 0 2275 "2204" _null_ _null_ _null_ _null_ _null_ regoperatorout _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 2218 ( regclassin PGNSP PGUID 12 1 0 0 0 f f f f t f s s 1 0 2205 "2275" _null_ _null_ _null_ _null_ _null_ regclassin _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 2219 ( regclassout PGNSP PGUID 12 1 0 0 0 f f f f t f s s 1 0 2275 "2205" _null_ _null_ _null_ _null_ _null_ regclassout _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 3495 ( to_regclass PGNSP PGUID 12 1 0 0 0 f f f f t f s s 1 0 2205 "25" _null_ _null_ _null_ _null_ _null_ to_regclass _null_ _null_ _null_ )); -DESCR("convert classname to regclass"); -DATA(insert OID = 2220 ( regtypein PGNSP PGUID 12 1 0 0 0 f f f f t f s s 1 0 2206 "2275" _null_ _null_ _null_ _null_ _null_ regtypein _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 2221 ( regtypeout PGNSP PGUID 12 1 0 0 0 f f f f t f s s 1 0 2275 "2206" _null_ _null_ _null_ _null_ _null_ regtypeout _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 3493 ( to_regtype PGNSP PGUID 12 1 0 0 0 f f f f t f s s 1 0 2206 "25" _null_ _null_ _null_ _null_ _null_ to_regtype _null_ _null_ _null_ )); -DESCR("convert type name to regtype"); -DATA(insert OID = 1079 ( regclass PGNSP PGUID 12 1 0 0 0 f f f f t f s s 1 0 2205 "25" _null_ _null_ _null_ _null_ _null_ text_regclass _null_ _null_ _null_ )); -DESCR("convert text to regclass"); - -DATA(insert OID = 4098 ( regrolein PGNSP PGUID 12 1 0 0 0 f f f f t f s s 1 0 4096 "2275" _null_ _null_ _null_ _null_ _null_ regrolein _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 4092 ( regroleout PGNSP PGUID 12 1 0 0 0 f f f f t f s s 1 0 2275 "4096" _null_ _null_ _null_ _null_ _null_ regroleout _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 4093 ( to_regrole PGNSP PGUID 12 1 0 0 0 f f f f t f s s 1 0 4096 "25" _null_ _null_ _null_ _null_ _null_ to_regrole _null_ _null_ _null_ )); -DESCR("convert role name to regrole"); - -DATA(insert OID = 4084 ( regnamespacein PGNSP PGUID 12 1 0 0 0 f f f f t f s s 1 0 4089 "2275" _null_ _null_ _null_ _null_ _null_ regnamespacein _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 4085 ( regnamespaceout PGNSP PGUID 12 1 0 0 0 f f f f t f s s 1 0 2275 "4089" _null_ _null_ _null_ _null_ _null_ regnamespaceout _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 4086 ( to_regnamespace PGNSP PGUID 12 1 0 0 0 f f f f t f s s 1 0 4089 "25" _null_ _null_ _null_ _null_ _null_ to_regnamespace _null_ _null_ _null_ )); -DESCR("convert namespace name to regnamespace"); - -DATA(insert OID = 1268 ( parse_ident PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 1009 "25 16" _null_ _null_ "{str,strict}" _null_ _null_ parse_ident _null_ _null_ _null_ )); -DESCR("parse qualified identifier to array of identifiers"); - -DATA(insert OID = 2246 ( fmgr_internal_validator PGNSP PGUID 12 1 0 0 0 f f f f t f s s 1 0 2278 "26" _null_ _null_ _null_ _null_ _null_ fmgr_internal_validator _null_ _null_ _null_ )); -DESCR("(internal)"); -DATA(insert OID = 2247 ( fmgr_c_validator PGNSP PGUID 12 1 0 0 0 f f f f t f s s 1 0 2278 "26" _null_ _null_ _null_ _null_ _null_ fmgr_c_validator _null_ _null_ _null_ )); -DESCR("(internal)"); -DATA(insert OID = 2248 ( fmgr_sql_validator PGNSP PGUID 12 1 0 0 0 f f f f t f s s 1 0 2278 "26" _null_ _null_ _null_ _null_ _null_ fmgr_sql_validator _null_ _null_ _null_ )); -DESCR("(internal)"); - -DATA(insert OID = 2250 ( has_database_privilege PGNSP PGUID 12 1 0 0 0 f f f f t f s s 3 0 16 "19 25 25" _null_ _null_ _null_ _null_ _null_ has_database_privilege_name_name _null_ _null_ _null_ )); -DESCR("user privilege on database by username, database name"); -DATA(insert OID = 2251 ( has_database_privilege PGNSP PGUID 12 1 0 0 0 f f f f t f s s 3 0 16 "19 26 25" _null_ _null_ _null_ _null_ _null_ has_database_privilege_name_id _null_ _null_ _null_ )); -DESCR("user privilege on database by username, database oid"); -DATA(insert OID = 2252 ( has_database_privilege PGNSP PGUID 12 1 0 0 0 f f f f t f s s 3 0 16 "26 25 25" _null_ _null_ _null_ _null_ _null_ has_database_privilege_id_name _null_ _null_ _null_ )); -DESCR("user privilege on database by user oid, database name"); -DATA(insert OID = 2253 ( has_database_privilege PGNSP PGUID 12 1 0 0 0 f f f f t f s s 3 0 16 "26 26 25" _null_ _null_ _null_ _null_ _null_ has_database_privilege_id_id _null_ _null_ _null_ )); -DESCR("user privilege on database by user oid, database oid"); -DATA(insert OID = 2254 ( has_database_privilege PGNSP PGUID 12 1 0 0 0 f f f f t f s s 2 0 16 "25 25" _null_ _null_ _null_ _null_ _null_ has_database_privilege_name _null_ _null_ _null_ )); -DESCR("current user privilege on database by database name"); -DATA(insert OID = 2255 ( has_database_privilege PGNSP PGUID 12 1 0 0 0 f f f f t f s s 2 0 16 "26 25" _null_ _null_ _null_ _null_ _null_ has_database_privilege_id _null_ _null_ _null_ )); -DESCR("current user privilege on database by database oid"); - -DATA(insert OID = 2256 ( has_function_privilege PGNSP PGUID 12 1 0 0 0 f f f f t f s s 3 0 16 "19 25 25" _null_ _null_ _null_ _null_ _null_ has_function_privilege_name_name _null_ _null_ _null_ )); -DESCR("user privilege on function by username, function name"); -DATA(insert OID = 2257 ( has_function_privilege PGNSP PGUID 12 1 0 0 0 f f f f t f s s 3 0 16 "19 26 25" _null_ _null_ _null_ _null_ _null_ has_function_privilege_name_id _null_ _null_ _null_ )); -DESCR("user privilege on function by username, function oid"); -DATA(insert OID = 2258 ( has_function_privilege PGNSP PGUID 12 1 0 0 0 f f f f t f s s 3 0 16 "26 25 25" _null_ _null_ _null_ _null_ _null_ has_function_privilege_id_name _null_ _null_ _null_ )); -DESCR("user privilege on function by user oid, function name"); -DATA(insert OID = 2259 ( has_function_privilege PGNSP PGUID 12 1 0 0 0 f f f f t f s s 3 0 16 "26 26 25" _null_ _null_ _null_ _null_ _null_ has_function_privilege_id_id _null_ _null_ _null_ )); -DESCR("user privilege on function by user oid, function oid"); -DATA(insert OID = 2260 ( has_function_privilege PGNSP PGUID 12 1 0 0 0 f f f f t f s s 2 0 16 "25 25" _null_ _null_ _null_ _null_ _null_ has_function_privilege_name _null_ _null_ _null_ )); -DESCR("current user privilege on function by function name"); -DATA(insert OID = 2261 ( has_function_privilege PGNSP PGUID 12 1 0 0 0 f f f f t f s s 2 0 16 "26 25" _null_ _null_ _null_ _null_ _null_ has_function_privilege_id _null_ _null_ _null_ )); -DESCR("current user privilege on function by function oid"); - -DATA(insert OID = 2262 ( has_language_privilege PGNSP PGUID 12 1 0 0 0 f f f f t f s s 3 0 16 "19 25 25" _null_ _null_ _null_ _null_ _null_ has_language_privilege_name_name _null_ _null_ _null_ )); -DESCR("user privilege on language by username, language name"); -DATA(insert OID = 2263 ( has_language_privilege PGNSP PGUID 12 1 0 0 0 f f f f t f s s 3 0 16 "19 26 25" _null_ _null_ _null_ _null_ _null_ has_language_privilege_name_id _null_ _null_ _null_ )); -DESCR("user privilege on language by username, language oid"); -DATA(insert OID = 2264 ( has_language_privilege PGNSP PGUID 12 1 0 0 0 f f f f t f s s 3 0 16 "26 25 25" _null_ _null_ _null_ _null_ _null_ has_language_privilege_id_name _null_ _null_ _null_ )); -DESCR("user privilege on language by user oid, language name"); -DATA(insert OID = 2265 ( has_language_privilege PGNSP PGUID 12 1 0 0 0 f f f f t f s s 3 0 16 "26 26 25" _null_ _null_ _null_ _null_ _null_ has_language_privilege_id_id _null_ _null_ _null_ )); -DESCR("user privilege on language by user oid, language oid"); -DATA(insert OID = 2266 ( has_language_privilege PGNSP PGUID 12 1 0 0 0 f f f f t f s s 2 0 16 "25 25" _null_ _null_ _null_ _null_ _null_ has_language_privilege_name _null_ _null_ _null_ )); -DESCR("current user privilege on language by language name"); -DATA(insert OID = 2267 ( has_language_privilege PGNSP PGUID 12 1 0 0 0 f f f f t f s s 2 0 16 "26 25" _null_ _null_ _null_ _null_ _null_ has_language_privilege_id _null_ _null_ _null_ )); -DESCR("current user privilege on language by language oid"); - -DATA(insert OID = 2268 ( has_schema_privilege PGNSP PGUID 12 1 0 0 0 f f f f t f s s 3 0 16 "19 25 25" _null_ _null_ _null_ _null_ _null_ has_schema_privilege_name_name _null_ _null_ _null_ )); -DESCR("user privilege on schema by username, schema name"); -DATA(insert OID = 2269 ( has_schema_privilege PGNSP PGUID 12 1 0 0 0 f f f f t f s s 3 0 16 "19 26 25" _null_ _null_ _null_ _null_ _null_ has_schema_privilege_name_id _null_ _null_ _null_ )); -DESCR("user privilege on schema by username, schema oid"); -DATA(insert OID = 2270 ( has_schema_privilege PGNSP PGUID 12 1 0 0 0 f f f f t f s s 3 0 16 "26 25 25" _null_ _null_ _null_ _null_ _null_ has_schema_privilege_id_name _null_ _null_ _null_ )); -DESCR("user privilege on schema by user oid, schema name"); -DATA(insert OID = 2271 ( has_schema_privilege PGNSP PGUID 12 1 0 0 0 f f f f t f s s 3 0 16 "26 26 25" _null_ _null_ _null_ _null_ _null_ has_schema_privilege_id_id _null_ _null_ _null_ )); -DESCR("user privilege on schema by user oid, schema oid"); -DATA(insert OID = 2272 ( has_schema_privilege PGNSP PGUID 12 1 0 0 0 f f f f t f s s 2 0 16 "25 25" _null_ _null_ _null_ _null_ _null_ has_schema_privilege_name _null_ _null_ _null_ )); -DESCR("current user privilege on schema by schema name"); -DATA(insert OID = 2273 ( has_schema_privilege PGNSP PGUID 12 1 0 0 0 f f f f t f s s 2 0 16 "26 25" _null_ _null_ _null_ _null_ _null_ has_schema_privilege_id _null_ _null_ _null_ )); -DESCR("current user privilege on schema by schema oid"); - -DATA(insert OID = 2390 ( has_tablespace_privilege PGNSP PGUID 12 1 0 0 0 f f f f t f s s 3 0 16 "19 25 25" _null_ _null_ _null_ _null_ _null_ has_tablespace_privilege_name_name _null_ _null_ _null_ )); -DESCR("user privilege on tablespace by username, tablespace name"); -DATA(insert OID = 2391 ( has_tablespace_privilege PGNSP PGUID 12 1 0 0 0 f f f f t f s s 3 0 16 "19 26 25" _null_ _null_ _null_ _null_ _null_ has_tablespace_privilege_name_id _null_ _null_ _null_ )); -DESCR("user privilege on tablespace by username, tablespace oid"); -DATA(insert OID = 2392 ( has_tablespace_privilege PGNSP PGUID 12 1 0 0 0 f f f f t f s s 3 0 16 "26 25 25" _null_ _null_ _null_ _null_ _null_ has_tablespace_privilege_id_name _null_ _null_ _null_ )); -DESCR("user privilege on tablespace by user oid, tablespace name"); -DATA(insert OID = 2393 ( has_tablespace_privilege PGNSP PGUID 12 1 0 0 0 f f f f t f s s 3 0 16 "26 26 25" _null_ _null_ _null_ _null_ _null_ has_tablespace_privilege_id_id _null_ _null_ _null_ )); -DESCR("user privilege on tablespace by user oid, tablespace oid"); -DATA(insert OID = 2394 ( has_tablespace_privilege PGNSP PGUID 12 1 0 0 0 f f f f t f s s 2 0 16 "25 25" _null_ _null_ _null_ _null_ _null_ has_tablespace_privilege_name _null_ _null_ _null_ )); -DESCR("current user privilege on tablespace by tablespace name"); -DATA(insert OID = 2395 ( has_tablespace_privilege PGNSP PGUID 12 1 0 0 0 f f f f t f s s 2 0 16 "26 25" _null_ _null_ _null_ _null_ _null_ has_tablespace_privilege_id _null_ _null_ _null_ )); -DESCR("current user privilege on tablespace by tablespace oid"); - -DATA(insert OID = 3000 ( has_foreign_data_wrapper_privilege PGNSP PGUID 12 1 0 0 0 f f f f t f s s 3 0 16 "19 25 25" _null_ _null_ _null_ _null_ _null_ has_foreign_data_wrapper_privilege_name_name _null_ _null_ _null_ )); -DESCR("user privilege on foreign data wrapper by username, foreign data wrapper name"); -DATA(insert OID = 3001 ( has_foreign_data_wrapper_privilege PGNSP PGUID 12 1 0 0 0 f f f f t f s s 3 0 16 "19 26 25" _null_ _null_ _null_ _null_ _null_ has_foreign_data_wrapper_privilege_name_id _null_ _null_ _null_ )); -DESCR("user privilege on foreign data wrapper by username, foreign data wrapper oid"); -DATA(insert OID = 3002 ( has_foreign_data_wrapper_privilege PGNSP PGUID 12 1 0 0 0 f f f f t f s s 3 0 16 "26 25 25" _null_ _null_ _null_ _null_ _null_ has_foreign_data_wrapper_privilege_id_name _null_ _null_ _null_ )); -DESCR("user privilege on foreign data wrapper by user oid, foreign data wrapper name"); -DATA(insert OID = 3003 ( has_foreign_data_wrapper_privilege PGNSP PGUID 12 1 0 0 0 f f f f t f s s 3 0 16 "26 26 25" _null_ _null_ _null_ _null_ _null_ has_foreign_data_wrapper_privilege_id_id _null_ _null_ _null_ )); -DESCR("user privilege on foreign data wrapper by user oid, foreign data wrapper oid"); -DATA(insert OID = 3004 ( has_foreign_data_wrapper_privilege PGNSP PGUID 12 1 0 0 0 f f f f t f s s 2 0 16 "25 25" _null_ _null_ _null_ _null_ _null_ has_foreign_data_wrapper_privilege_name _null_ _null_ _null_ )); -DESCR("current user privilege on foreign data wrapper by foreign data wrapper name"); -DATA(insert OID = 3005 ( has_foreign_data_wrapper_privilege PGNSP PGUID 12 1 0 0 0 f f f f t f s s 2 0 16 "26 25" _null_ _null_ _null_ _null_ _null_ has_foreign_data_wrapper_privilege_id _null_ _null_ _null_ )); -DESCR("current user privilege on foreign data wrapper by foreign data wrapper oid"); - -DATA(insert OID = 3006 ( has_server_privilege PGNSP PGUID 12 1 0 0 0 f f f f t f s s 3 0 16 "19 25 25" _null_ _null_ _null_ _null_ _null_ has_server_privilege_name_name _null_ _null_ _null_ )); -DESCR("user privilege on server by username, server name"); -DATA(insert OID = 3007 ( has_server_privilege PGNSP PGUID 12 1 0 0 0 f f f f t f s s 3 0 16 "19 26 25" _null_ _null_ _null_ _null_ _null_ has_server_privilege_name_id _null_ _null_ _null_ )); -DESCR("user privilege on server by username, server oid"); -DATA(insert OID = 3008 ( has_server_privilege PGNSP PGUID 12 1 0 0 0 f f f f t f s s 3 0 16 "26 25 25" _null_ _null_ _null_ _null_ _null_ has_server_privilege_id_name _null_ _null_ _null_ )); -DESCR("user privilege on server by user oid, server name"); -DATA(insert OID = 3009 ( has_server_privilege PGNSP PGUID 12 1 0 0 0 f f f f t f s s 3 0 16 "26 26 25" _null_ _null_ _null_ _null_ _null_ has_server_privilege_id_id _null_ _null_ _null_ )); -DESCR("user privilege on server by user oid, server oid"); -DATA(insert OID = 3010 ( has_server_privilege PGNSP PGUID 12 1 0 0 0 f f f f t f s s 2 0 16 "25 25" _null_ _null_ _null_ _null_ _null_ has_server_privilege_name _null_ _null_ _null_ )); -DESCR("current user privilege on server by server name"); -DATA(insert OID = 3011 ( has_server_privilege PGNSP PGUID 12 1 0 0 0 f f f f t f s s 2 0 16 "26 25" _null_ _null_ _null_ _null_ _null_ has_server_privilege_id _null_ _null_ _null_ )); -DESCR("current user privilege on server by server oid"); - -DATA(insert OID = 3138 ( has_type_privilege PGNSP PGUID 12 1 0 0 0 f f f f t f s s 3 0 16 "19 25 25" _null_ _null_ _null_ _null_ _null_ has_type_privilege_name_name _null_ _null_ _null_ )); -DESCR("user privilege on type by username, type name"); -DATA(insert OID = 3139 ( has_type_privilege PGNSP PGUID 12 1 0 0 0 f f f f t f s s 3 0 16 "19 26 25" _null_ _null_ _null_ _null_ _null_ has_type_privilege_name_id _null_ _null_ _null_ )); -DESCR("user privilege on type by username, type oid"); -DATA(insert OID = 3140 ( has_type_privilege PGNSP PGUID 12 1 0 0 0 f f f f t f s s 3 0 16 "26 25 25" _null_ _null_ _null_ _null_ _null_ has_type_privilege_id_name _null_ _null_ _null_ )); -DESCR("user privilege on type by user oid, type name"); -DATA(insert OID = 3141 ( has_type_privilege PGNSP PGUID 12 1 0 0 0 f f f f t f s s 3 0 16 "26 26 25" _null_ _null_ _null_ _null_ _null_ has_type_privilege_id_id _null_ _null_ _null_ )); -DESCR("user privilege on type by user oid, type oid"); -DATA(insert OID = 3142 ( has_type_privilege PGNSP PGUID 12 1 0 0 0 f f f f t f s s 2 0 16 "25 25" _null_ _null_ _null_ _null_ _null_ has_type_privilege_name _null_ _null_ _null_ )); -DESCR("current user privilege on type by type name"); -DATA(insert OID = 3143 ( has_type_privilege PGNSP PGUID 12 1 0 0 0 f f f f t f s s 2 0 16 "26 25" _null_ _null_ _null_ _null_ _null_ has_type_privilege_id _null_ _null_ _null_ )); -DESCR("current user privilege on type by type oid"); - -DATA(insert OID = 2705 ( pg_has_role PGNSP PGUID 12 1 0 0 0 f f f f t f s s 3 0 16 "19 19 25" _null_ _null_ _null_ _null_ _null_ pg_has_role_name_name _null_ _null_ _null_ )); -DESCR("user privilege on role by username, role name"); -DATA(insert OID = 2706 ( pg_has_role PGNSP PGUID 12 1 0 0 0 f f f f t f s s 3 0 16 "19 26 25" _null_ _null_ _null_ _null_ _null_ pg_has_role_name_id _null_ _null_ _null_ )); -DESCR("user privilege on role by username, role oid"); -DATA(insert OID = 2707 ( pg_has_role PGNSP PGUID 12 1 0 0 0 f f f f t f s s 3 0 16 "26 19 25" _null_ _null_ _null_ _null_ _null_ pg_has_role_id_name _null_ _null_ _null_ )); -DESCR("user privilege on role by user oid, role name"); -DATA(insert OID = 2708 ( pg_has_role PGNSP PGUID 12 1 0 0 0 f f f f t f s s 3 0 16 "26 26 25" _null_ _null_ _null_ _null_ _null_ pg_has_role_id_id _null_ _null_ _null_ )); -DESCR("user privilege on role by user oid, role oid"); -DATA(insert OID = 2709 ( pg_has_role PGNSP PGUID 12 1 0 0 0 f f f f t f s s 2 0 16 "19 25" _null_ _null_ _null_ _null_ _null_ pg_has_role_name _null_ _null_ _null_ )); -DESCR("current user privilege on role by role name"); -DATA(insert OID = 2710 ( pg_has_role PGNSP PGUID 12 1 0 0 0 f f f f t f s s 2 0 16 "26 25" _null_ _null_ _null_ _null_ _null_ pg_has_role_id _null_ _null_ _null_ )); -DESCR("current user privilege on role by role oid"); - -DATA(insert OID = 1269 ( pg_column_size PGNSP PGUID 12 1 0 0 0 f f f f t f s s 1 0 23 "2276" _null_ _null_ _null_ _null_ _null_ pg_column_size _null_ _null_ _null_ )); -DESCR("bytes required to store the value, perhaps with compression"); -DATA(insert OID = 2322 ( pg_tablespace_size PGNSP PGUID 12 1 0 0 0 f f f f t f v s 1 0 20 "26" _null_ _null_ _null_ _null_ _null_ pg_tablespace_size_oid _null_ _null_ _null_ )); -DESCR("total disk space usage for the specified tablespace"); -DATA(insert OID = 2323 ( pg_tablespace_size PGNSP PGUID 12 1 0 0 0 f f f f t f v s 1 0 20 "19" _null_ _null_ _null_ _null_ _null_ pg_tablespace_size_name _null_ _null_ _null_ )); -DESCR("total disk space usage for the specified tablespace"); -DATA(insert OID = 2324 ( pg_database_size PGNSP PGUID 12 1 0 0 0 f f f f t f v s 1 0 20 "26" _null_ _null_ _null_ _null_ _null_ pg_database_size_oid _null_ _null_ _null_ )); -DESCR("total disk space usage for the specified database"); -DATA(insert OID = 2168 ( pg_database_size PGNSP PGUID 12 1 0 0 0 f f f f t f v s 1 0 20 "19" _null_ _null_ _null_ _null_ _null_ pg_database_size_name _null_ _null_ _null_ )); -DESCR("total disk space usage for the specified database"); -DATA(insert OID = 2325 ( pg_relation_size PGNSP PGUID 14 1 0 0 0 f f f f t f v s 1 0 20 "2205" _null_ _null_ _null_ _null_ _null_ "select pg_catalog.pg_relation_size($1, ''main'')" _null_ _null_ _null_ )); -DESCR("disk space usage for the main fork of the specified table or index"); -DATA(insert OID = 2332 ( pg_relation_size PGNSP PGUID 12 1 0 0 0 f f f f t f v s 2 0 20 "2205 25" _null_ _null_ _null_ _null_ _null_ pg_relation_size _null_ _null_ _null_ )); -DESCR("disk space usage for the specified fork of a table or index"); -DATA(insert OID = 2286 ( pg_total_relation_size PGNSP PGUID 12 1 0 0 0 f f f f t f v s 1 0 20 "2205" _null_ _null_ _null_ _null_ _null_ pg_total_relation_size _null_ _null_ _null_ )); -DESCR("total disk space usage for the specified table and associated indexes"); -DATA(insert OID = 2288 ( pg_size_pretty PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 25 "20" _null_ _null_ _null_ _null_ _null_ pg_size_pretty _null_ _null_ _null_ )); -DESCR("convert a long int to a human readable text using size units"); -DATA(insert OID = 3166 ( pg_size_pretty PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 25 "1700" _null_ _null_ _null_ _null_ _null_ pg_size_pretty_numeric _null_ _null_ _null_ )); -DESCR("convert a numeric to a human readable text using size units"); -DATA(insert OID = 3334 ( pg_size_bytes PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 20 "25" _null_ _null_ _null_ _null_ _null_ pg_size_bytes _null_ _null_ _null_ )); -DESCR("convert a size in human-readable format with size units into bytes"); -DATA(insert OID = 2997 ( pg_table_size PGNSP PGUID 12 1 0 0 0 f f f f t f v s 1 0 20 "2205" _null_ _null_ _null_ _null_ _null_ pg_table_size _null_ _null_ _null_ )); -DESCR("disk space usage for the specified table, including TOAST, free space and visibility map"); -DATA(insert OID = 2998 ( pg_indexes_size PGNSP PGUID 12 1 0 0 0 f f f f t f v s 1 0 20 "2205" _null_ _null_ _null_ _null_ _null_ pg_indexes_size _null_ _null_ _null_ )); -DESCR("disk space usage for all indexes attached to the specified table"); -DATA(insert OID = 2999 ( pg_relation_filenode PGNSP PGUID 12 1 0 0 0 f f f f t f s s 1 0 26 "2205" _null_ _null_ _null_ _null_ _null_ pg_relation_filenode _null_ _null_ _null_ )); -DESCR("filenode identifier of relation"); -DATA(insert OID = 3454 ( pg_filenode_relation PGNSP PGUID 12 1 0 0 0 f f f f t f s s 2 0 2205 "26 26" _null_ _null_ _null_ _null_ _null_ pg_filenode_relation _null_ _null_ _null_ )); -DESCR("relation OID for filenode and tablespace"); -DATA(insert OID = 3034 ( pg_relation_filepath PGNSP PGUID 12 1 0 0 0 f f f f t f s s 1 0 25 "2205" _null_ _null_ _null_ _null_ _null_ pg_relation_filepath _null_ _null_ _null_ )); -DESCR("file path of relation"); - -DATA(insert OID = 2316 ( postgresql_fdw_validator PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 16 "1009 26" _null_ _null_ _null_ _null_ _null_ postgresql_fdw_validator _null_ _null_ _null_)); -DESCR("(internal)"); - -DATA(insert OID = 2290 ( record_in PGNSP PGUID 12 1 0 0 0 f f f f t f s s 3 0 2249 "2275 26 23" _null_ _null_ _null_ _null_ _null_ record_in _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 2291 ( record_out PGNSP PGUID 12 1 0 0 0 f f f f t f s s 1 0 2275 "2249" _null_ _null_ _null_ _null_ _null_ record_out _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 2292 ( cstring_in PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 2275 "2275" _null_ _null_ _null_ _null_ _null_ cstring_in _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 2293 ( cstring_out PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 2275 "2275" _null_ _null_ _null_ _null_ _null_ cstring_out _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 2294 ( any_in PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 2276 "2275" _null_ _null_ _null_ _null_ _null_ any_in _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 2295 ( any_out PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 2275 "2276" _null_ _null_ _null_ _null_ _null_ any_out _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 2296 ( anyarray_in PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 2277 "2275" _null_ _null_ _null_ _null_ _null_ anyarray_in _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 2297 ( anyarray_out PGNSP PGUID 12 1 0 0 0 f f f f t f s s 1 0 2275 "2277" _null_ _null_ _null_ _null_ _null_ anyarray_out _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 2298 ( void_in PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 2278 "2275" _null_ _null_ _null_ _null_ _null_ void_in _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 2299 ( void_out PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 2275 "2278" _null_ _null_ _null_ _null_ _null_ void_out _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 2300 ( trigger_in PGNSP PGUID 12 1 0 0 0 f f f f f f i s 1 0 2279 "2275" _null_ _null_ _null_ _null_ _null_ trigger_in _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 2301 ( trigger_out PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 2275 "2279" _null_ _null_ _null_ _null_ _null_ trigger_out _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 3594 ( event_trigger_in PGNSP PGUID 12 1 0 0 0 f f f f f f i s 1 0 3838 "2275" _null_ _null_ _null_ _null_ _null_ event_trigger_in _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 3595 ( event_trigger_out PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 2275 "3838" _null_ _null_ _null_ _null_ _null_ event_trigger_out _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 2302 ( language_handler_in PGNSP PGUID 12 1 0 0 0 f f f f f f i s 1 0 2280 "2275" _null_ _null_ _null_ _null_ _null_ language_handler_in _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 2303 ( language_handler_out PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 2275 "2280" _null_ _null_ _null_ _null_ _null_ language_handler_out _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 2304 ( internal_in PGNSP PGUID 12 1 0 0 0 f f f f f f i s 1 0 2281 "2275" _null_ _null_ _null_ _null_ _null_ internal_in _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 2305 ( internal_out PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 2275 "2281" _null_ _null_ _null_ _null_ _null_ internal_out _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 2306 ( opaque_in PGNSP PGUID 12 1 0 0 0 f f f f f f i s 1 0 2282 "2275" _null_ _null_ _null_ _null_ _null_ opaque_in _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 2307 ( opaque_out PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 2275 "2282" _null_ _null_ _null_ _null_ _null_ opaque_out _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 2312 ( anyelement_in PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 2283 "2275" _null_ _null_ _null_ _null_ _null_ anyelement_in _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 2313 ( anyelement_out PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 2275 "2283" _null_ _null_ _null_ _null_ _null_ anyelement_out _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 2398 ( shell_in PGNSP PGUID 12 1 0 0 0 f f f f f f i s 1 0 2282 "2275" _null_ _null_ _null_ _null_ _null_ shell_in _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 2399 ( shell_out PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 2275 "2282" _null_ _null_ _null_ _null_ _null_ shell_out _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 2597 ( domain_in PGNSP PGUID 12 1 0 0 0 f f f f f f s s 3 0 2276 "2275 26 23" _null_ _null_ _null_ _null_ _null_ domain_in _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 2598 ( domain_recv PGNSP PGUID 12 1 0 0 0 f f f f f f s s 3 0 2276 "2281 26 23" _null_ _null_ _null_ _null_ _null_ domain_recv _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 2777 ( anynonarray_in PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 2776 "2275" _null_ _null_ _null_ _null_ _null_ anynonarray_in _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 2778 ( anynonarray_out PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 2275 "2776" _null_ _null_ _null_ _null_ _null_ anynonarray_out _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 3116 ( fdw_handler_in PGNSP PGUID 12 1 0 0 0 f f f f f f i s 1 0 3115 "2275" _null_ _null_ _null_ _null_ _null_ fdw_handler_in _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 3117 ( fdw_handler_out PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 2275 "3115" _null_ _null_ _null_ _null_ _null_ fdw_handler_out _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 326 ( index_am_handler_in PGNSP PGUID 12 1 0 0 0 f f f f f f i s 1 0 325 "2275" _null_ _null_ _null_ _null_ _null_ index_am_handler_in _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 327 ( index_am_handler_out PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 2275 "325" _null_ _null_ _null_ _null_ _null_ index_am_handler_out _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 3311 ( tsm_handler_in PGNSP PGUID 12 1 0 0 0 f f f f f f i s 1 0 3310 "2275" _null_ _null_ _null_ _null_ _null_ tsm_handler_in _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 3312 ( tsm_handler_out PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 2275 "3310" _null_ _null_ _null_ _null_ _null_ tsm_handler_out _null_ _null_ _null_ )); -DESCR("I/O"); - -/* tablesample method handlers */ -DATA(insert OID = 3313 ( bernoulli PGNSP PGUID 12 1 0 0 0 f f f f t f v s 1 0 3310 "2281" _null_ _null_ _null_ _null_ _null_ tsm_bernoulli_handler _null_ _null_ _null_ )); -DESCR("BERNOULLI tablesample method handler"); -DATA(insert OID = 3314 ( system PGNSP PGUID 12 1 0 0 0 f f f f t f v s 1 0 3310 "2281" _null_ _null_ _null_ _null_ _null_ tsm_system_handler _null_ _null_ _null_ )); -DESCR("SYSTEM tablesample method handler"); - -/* cryptographic */ -DATA(insert OID = 2311 ( md5 PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 25 "25" _null_ _null_ _null_ _null_ _null_ md5_text _null_ _null_ _null_ )); -DESCR("MD5 hash"); -DATA(insert OID = 2321 ( md5 PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 25 "17" _null_ _null_ _null_ _null_ _null_ md5_bytea _null_ _null_ _null_ )); -DESCR("MD5 hash"); - -/* crosstype operations for date vs. timestamp and timestamptz */ -DATA(insert OID = 2338 ( date_lt_timestamp PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 16 "1082 1114" _null_ _null_ _null_ _null_ _null_ date_lt_timestamp _null_ _null_ _null_ )); -DATA(insert OID = 2339 ( date_le_timestamp PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 16 "1082 1114" _null_ _null_ _null_ _null_ _null_ date_le_timestamp _null_ _null_ _null_ )); -DATA(insert OID = 2340 ( date_eq_timestamp PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 16 "1082 1114" _null_ _null_ _null_ _null_ _null_ date_eq_timestamp _null_ _null_ _null_ )); -DATA(insert OID = 2341 ( date_gt_timestamp PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 16 "1082 1114" _null_ _null_ _null_ _null_ _null_ date_gt_timestamp _null_ _null_ _null_ )); -DATA(insert OID = 2342 ( date_ge_timestamp PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 16 "1082 1114" _null_ _null_ _null_ _null_ _null_ date_ge_timestamp _null_ _null_ _null_ )); -DATA(insert OID = 2343 ( date_ne_timestamp PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 16 "1082 1114" _null_ _null_ _null_ _null_ _null_ date_ne_timestamp _null_ _null_ _null_ )); -DATA(insert OID = 2344 ( date_cmp_timestamp PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 23 "1082 1114" _null_ _null_ _null_ _null_ _null_ date_cmp_timestamp _null_ _null_ _null_ )); -DESCR("less-equal-greater"); - -DATA(insert OID = 2351 ( date_lt_timestamptz PGNSP PGUID 12 1 0 0 0 f f f f t f s s 2 0 16 "1082 1184" _null_ _null_ _null_ _null_ _null_ date_lt_timestamptz _null_ _null_ _null_ )); -DATA(insert OID = 2352 ( date_le_timestamptz PGNSP PGUID 12 1 0 0 0 f f f f t f s s 2 0 16 "1082 1184" _null_ _null_ _null_ _null_ _null_ date_le_timestamptz _null_ _null_ _null_ )); -DATA(insert OID = 2353 ( date_eq_timestamptz PGNSP PGUID 12 1 0 0 0 f f f f t f s s 2 0 16 "1082 1184" _null_ _null_ _null_ _null_ _null_ date_eq_timestamptz _null_ _null_ _null_ )); -DATA(insert OID = 2354 ( date_gt_timestamptz PGNSP PGUID 12 1 0 0 0 f f f f t f s s 2 0 16 "1082 1184" _null_ _null_ _null_ _null_ _null_ date_gt_timestamptz _null_ _null_ _null_ )); -DATA(insert OID = 2355 ( date_ge_timestamptz PGNSP PGUID 12 1 0 0 0 f f f f t f s s 2 0 16 "1082 1184" _null_ _null_ _null_ _null_ _null_ date_ge_timestamptz _null_ _null_ _null_ )); -DATA(insert OID = 2356 ( date_ne_timestamptz PGNSP PGUID 12 1 0 0 0 f f f f t f s s 2 0 16 "1082 1184" _null_ _null_ _null_ _null_ _null_ date_ne_timestamptz _null_ _null_ _null_ )); -DATA(insert OID = 2357 ( date_cmp_timestamptz PGNSP PGUID 12 1 0 0 0 f f f f t f s s 2 0 23 "1082 1184" _null_ _null_ _null_ _null_ _null_ date_cmp_timestamptz _null_ _null_ _null_ )); -DESCR("less-equal-greater"); - -DATA(insert OID = 2364 ( timestamp_lt_date PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 16 "1114 1082" _null_ _null_ _null_ _null_ _null_ timestamp_lt_date _null_ _null_ _null_ )); -DATA(insert OID = 2365 ( timestamp_le_date PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 16 "1114 1082" _null_ _null_ _null_ _null_ _null_ timestamp_le_date _null_ _null_ _null_ )); -DATA(insert OID = 2366 ( timestamp_eq_date PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 16 "1114 1082" _null_ _null_ _null_ _null_ _null_ timestamp_eq_date _null_ _null_ _null_ )); -DATA(insert OID = 2367 ( timestamp_gt_date PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 16 "1114 1082" _null_ _null_ _null_ _null_ _null_ timestamp_gt_date _null_ _null_ _null_ )); -DATA(insert OID = 2368 ( timestamp_ge_date PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 16 "1114 1082" _null_ _null_ _null_ _null_ _null_ timestamp_ge_date _null_ _null_ _null_ )); -DATA(insert OID = 2369 ( timestamp_ne_date PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 16 "1114 1082" _null_ _null_ _null_ _null_ _null_ timestamp_ne_date _null_ _null_ _null_ )); -DATA(insert OID = 2370 ( timestamp_cmp_date PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 23 "1114 1082" _null_ _null_ _null_ _null_ _null_ timestamp_cmp_date _null_ _null_ _null_ )); -DESCR("less-equal-greater"); - -DATA(insert OID = 2377 ( timestamptz_lt_date PGNSP PGUID 12 1 0 0 0 f f f f t f s s 2 0 16 "1184 1082" _null_ _null_ _null_ _null_ _null_ timestamptz_lt_date _null_ _null_ _null_ )); -DATA(insert OID = 2378 ( timestamptz_le_date PGNSP PGUID 12 1 0 0 0 f f f f t f s s 2 0 16 "1184 1082" _null_ _null_ _null_ _null_ _null_ timestamptz_le_date _null_ _null_ _null_ )); -DATA(insert OID = 2379 ( timestamptz_eq_date PGNSP PGUID 12 1 0 0 0 f f f f t f s s 2 0 16 "1184 1082" _null_ _null_ _null_ _null_ _null_ timestamptz_eq_date _null_ _null_ _null_ )); -DATA(insert OID = 2380 ( timestamptz_gt_date PGNSP PGUID 12 1 0 0 0 f f f f t f s s 2 0 16 "1184 1082" _null_ _null_ _null_ _null_ _null_ timestamptz_gt_date _null_ _null_ _null_ )); -DATA(insert OID = 2381 ( timestamptz_ge_date PGNSP PGUID 12 1 0 0 0 f f f f t f s s 2 0 16 "1184 1082" _null_ _null_ _null_ _null_ _null_ timestamptz_ge_date _null_ _null_ _null_ )); -DATA(insert OID = 2382 ( timestamptz_ne_date PGNSP PGUID 12 1 0 0 0 f f f f t f s s 2 0 16 "1184 1082" _null_ _null_ _null_ _null_ _null_ timestamptz_ne_date _null_ _null_ _null_ )); -DATA(insert OID = 2383 ( timestamptz_cmp_date PGNSP PGUID 12 1 0 0 0 f f f f t f s s 2 0 23 "1184 1082" _null_ _null_ _null_ _null_ _null_ timestamptz_cmp_date _null_ _null_ _null_ )); -DESCR("less-equal-greater"); - -/* crosstype operations for timestamp vs. timestamptz */ -DATA(insert OID = 2520 ( timestamp_lt_timestamptz PGNSP PGUID 12 1 0 0 0 f f f f t f s s 2 0 16 "1114 1184" _null_ _null_ _null_ _null_ _null_ timestamp_lt_timestamptz _null_ _null_ _null_ )); -DATA(insert OID = 2521 ( timestamp_le_timestamptz PGNSP PGUID 12 1 0 0 0 f f f f t f s s 2 0 16 "1114 1184" _null_ _null_ _null_ _null_ _null_ timestamp_le_timestamptz _null_ _null_ _null_ )); -DATA(insert OID = 2522 ( timestamp_eq_timestamptz PGNSP PGUID 12 1 0 0 0 f f f f t f s s 2 0 16 "1114 1184" _null_ _null_ _null_ _null_ _null_ timestamp_eq_timestamptz _null_ _null_ _null_ )); -DATA(insert OID = 2523 ( timestamp_gt_timestamptz PGNSP PGUID 12 1 0 0 0 f f f f t f s s 2 0 16 "1114 1184" _null_ _null_ _null_ _null_ _null_ timestamp_gt_timestamptz _null_ _null_ _null_ )); -DATA(insert OID = 2524 ( timestamp_ge_timestamptz PGNSP PGUID 12 1 0 0 0 f f f f t f s s 2 0 16 "1114 1184" _null_ _null_ _null_ _null_ _null_ timestamp_ge_timestamptz _null_ _null_ _null_ )); -DATA(insert OID = 2525 ( timestamp_ne_timestamptz PGNSP PGUID 12 1 0 0 0 f f f f t f s s 2 0 16 "1114 1184" _null_ _null_ _null_ _null_ _null_ timestamp_ne_timestamptz _null_ _null_ _null_ )); -DATA(insert OID = 2526 ( timestamp_cmp_timestamptz PGNSP PGUID 12 1 0 0 0 f f f f t f s s 2 0 23 "1114 1184" _null_ _null_ _null_ _null_ _null_ timestamp_cmp_timestamptz _null_ _null_ _null_ )); -DESCR("less-equal-greater"); - -DATA(insert OID = 2527 ( timestamptz_lt_timestamp PGNSP PGUID 12 1 0 0 0 f f f f t f s s 2 0 16 "1184 1114" _null_ _null_ _null_ _null_ _null_ timestamptz_lt_timestamp _null_ _null_ _null_ )); -DATA(insert OID = 2528 ( timestamptz_le_timestamp PGNSP PGUID 12 1 0 0 0 f f f f t f s s 2 0 16 "1184 1114" _null_ _null_ _null_ _null_ _null_ timestamptz_le_timestamp _null_ _null_ _null_ )); -DATA(insert OID = 2529 ( timestamptz_eq_timestamp PGNSP PGUID 12 1 0 0 0 f f f f t f s s 2 0 16 "1184 1114" _null_ _null_ _null_ _null_ _null_ timestamptz_eq_timestamp _null_ _null_ _null_ )); -DATA(insert OID = 2530 ( timestamptz_gt_timestamp PGNSP PGUID 12 1 0 0 0 f f f f t f s s 2 0 16 "1184 1114" _null_ _null_ _null_ _null_ _null_ timestamptz_gt_timestamp _null_ _null_ _null_ )); -DATA(insert OID = 2531 ( timestamptz_ge_timestamp PGNSP PGUID 12 1 0 0 0 f f f f t f s s 2 0 16 "1184 1114" _null_ _null_ _null_ _null_ _null_ timestamptz_ge_timestamp _null_ _null_ _null_ )); -DATA(insert OID = 2532 ( timestamptz_ne_timestamp PGNSP PGUID 12 1 0 0 0 f f f f t f s s 2 0 16 "1184 1114" _null_ _null_ _null_ _null_ _null_ timestamptz_ne_timestamp _null_ _null_ _null_ )); -DATA(insert OID = 2533 ( timestamptz_cmp_timestamp PGNSP PGUID 12 1 0 0 0 f f f f t f s s 2 0 23 "1184 1114" _null_ _null_ _null_ _null_ _null_ timestamptz_cmp_timestamp _null_ _null_ _null_ )); -DESCR("less-equal-greater"); - - -/* send/receive functions */ -DATA(insert OID = 2400 ( array_recv PGNSP PGUID 12 1 0 0 0 f f f f t f s s 3 0 2277 "2281 26 23" _null_ _null_ _null_ _null_ _null_ array_recv _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 2401 ( array_send PGNSP PGUID 12 1 0 0 0 f f f f t f s s 1 0 17 "2277" _null_ _null_ _null_ _null_ _null_ array_send _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 2402 ( record_recv PGNSP PGUID 12 1 0 0 0 f f f f t f s s 3 0 2249 "2281 26 23" _null_ _null_ _null_ _null_ _null_ record_recv _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 2403 ( record_send PGNSP PGUID 12 1 0 0 0 f f f f t f s s 1 0 17 "2249" _null_ _null_ _null_ _null_ _null_ record_send _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 2404 ( int2recv PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 21 "2281" _null_ _null_ _null_ _null_ _null_ int2recv _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 2405 ( int2send PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 17 "21" _null_ _null_ _null_ _null_ _null_ int2send _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 2406 ( int4recv PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 23 "2281" _null_ _null_ _null_ _null_ _null_ int4recv _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 2407 ( int4send PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 17 "23" _null_ _null_ _null_ _null_ _null_ int4send _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 2408 ( int8recv PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 20 "2281" _null_ _null_ _null_ _null_ _null_ int8recv _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 2409 ( int8send PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 17 "20" _null_ _null_ _null_ _null_ _null_ int8send _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 2410 ( int2vectorrecv PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 22 "2281" _null_ _null_ _null_ _null_ _null_ int2vectorrecv _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 2411 ( int2vectorsend PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 17 "22" _null_ _null_ _null_ _null_ _null_ int2vectorsend _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 2412 ( bytearecv PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 17 "2281" _null_ _null_ _null_ _null_ _null_ bytearecv _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 2413 ( byteasend PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 17 "17" _null_ _null_ _null_ _null_ _null_ byteasend _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 2414 ( textrecv PGNSP PGUID 12 1 0 0 0 f f f f t f s s 1 0 25 "2281" _null_ _null_ _null_ _null_ _null_ textrecv _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 2415 ( textsend PGNSP PGUID 12 1 0 0 0 f f f f t f s s 1 0 17 "25" _null_ _null_ _null_ _null_ _null_ textsend _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 2416 ( unknownrecv PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 705 "2281" _null_ _null_ _null_ _null_ _null_ unknownrecv _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 2417 ( unknownsend PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 17 "705" _null_ _null_ _null_ _null_ _null_ unknownsend _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 2418 ( oidrecv PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 26 "2281" _null_ _null_ _null_ _null_ _null_ oidrecv _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 2419 ( oidsend PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 17 "26" _null_ _null_ _null_ _null_ _null_ oidsend _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 2420 ( oidvectorrecv PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 30 "2281" _null_ _null_ _null_ _null_ _null_ oidvectorrecv _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 2421 ( oidvectorsend PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 17 "30" _null_ _null_ _null_ _null_ _null_ oidvectorsend _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 2422 ( namerecv PGNSP PGUID 12 1 0 0 0 f f f f t f s s 1 0 19 "2281" _null_ _null_ _null_ _null_ _null_ namerecv _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 2423 ( namesend PGNSP PGUID 12 1 0 0 0 f f f f t f s s 1 0 17 "19" _null_ _null_ _null_ _null_ _null_ namesend _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 2424 ( float4recv PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 700 "2281" _null_ _null_ _null_ _null_ _null_ float4recv _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 2425 ( float4send PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 17 "700" _null_ _null_ _null_ _null_ _null_ float4send _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 2426 ( float8recv PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 701 "2281" _null_ _null_ _null_ _null_ _null_ float8recv _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 2427 ( float8send PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 17 "701" _null_ _null_ _null_ _null_ _null_ float8send _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 2428 ( point_recv PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 600 "2281" _null_ _null_ _null_ _null_ _null_ point_recv _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 2429 ( point_send PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 17 "600" _null_ _null_ _null_ _null_ _null_ point_send _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 2430 ( bpcharrecv PGNSP PGUID 12 1 0 0 0 f f f f t f s s 3 0 1042 "2281 26 23" _null_ _null_ _null_ _null_ _null_ bpcharrecv _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 2431 ( bpcharsend PGNSP PGUID 12 1 0 0 0 f f f f t f s s 1 0 17 "1042" _null_ _null_ _null_ _null_ _null_ bpcharsend _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 2432 ( varcharrecv PGNSP PGUID 12 1 0 0 0 f f f f t f s s 3 0 1043 "2281 26 23" _null_ _null_ _null_ _null_ _null_ varcharrecv _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 2433 ( varcharsend PGNSP PGUID 12 1 0 0 0 f f f f t f s s 1 0 17 "1043" _null_ _null_ _null_ _null_ _null_ varcharsend _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 2434 ( charrecv PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 18 "2281" _null_ _null_ _null_ _null_ _null_ charrecv _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 2435 ( charsend PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 17 "18" _null_ _null_ _null_ _null_ _null_ charsend _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 2436 ( boolrecv PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 16 "2281" _null_ _null_ _null_ _null_ _null_ boolrecv _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 2437 ( boolsend PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 17 "16" _null_ _null_ _null_ _null_ _null_ boolsend _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 2438 ( tidrecv PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 27 "2281" _null_ _null_ _null_ _null_ _null_ tidrecv _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 2439 ( tidsend PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 17 "27" _null_ _null_ _null_ _null_ _null_ tidsend _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 2440 ( xidrecv PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 28 "2281" _null_ _null_ _null_ _null_ _null_ xidrecv _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 2441 ( xidsend PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 17 "28" _null_ _null_ _null_ _null_ _null_ xidsend _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 2442 ( cidrecv PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 29 "2281" _null_ _null_ _null_ _null_ _null_ cidrecv _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 2443 ( cidsend PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 17 "29" _null_ _null_ _null_ _null_ _null_ cidsend _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 2444 ( regprocrecv PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 24 "2281" _null_ _null_ _null_ _null_ _null_ regprocrecv _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 2445 ( regprocsend PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 17 "24" _null_ _null_ _null_ _null_ _null_ regprocsend _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 2446 ( regprocedurerecv PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 2202 "2281" _null_ _null_ _null_ _null_ _null_ regprocedurerecv _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 2447 ( regproceduresend PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 17 "2202" _null_ _null_ _null_ _null_ _null_ regproceduresend _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 2448 ( regoperrecv PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 2203 "2281" _null_ _null_ _null_ _null_ _null_ regoperrecv _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 2449 ( regopersend PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 17 "2203" _null_ _null_ _null_ _null_ _null_ regopersend _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 2450 ( regoperatorrecv PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 2204 "2281" _null_ _null_ _null_ _null_ _null_ regoperatorrecv _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 2451 ( regoperatorsend PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 17 "2204" _null_ _null_ _null_ _null_ _null_ regoperatorsend _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 2452 ( regclassrecv PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 2205 "2281" _null_ _null_ _null_ _null_ _null_ regclassrecv _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 2453 ( regclasssend PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 17 "2205" _null_ _null_ _null_ _null_ _null_ regclasssend _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 2454 ( regtyperecv PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 2206 "2281" _null_ _null_ _null_ _null_ _null_ regtyperecv _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 2455 ( regtypesend PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 17 "2206" _null_ _null_ _null_ _null_ _null_ regtypesend _null_ _null_ _null_ )); -DESCR("I/O"); - -DATA(insert OID = 4094 ( regrolerecv PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 4096 "2281" _null_ _null_ _null_ _null_ _null_ regrolerecv _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 4095 ( regrolesend PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 17 "4096" _null_ _null_ _null_ _null_ _null_ regrolesend _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 4087 ( regnamespacerecv PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 4089 "2281" _null_ _null_ _null_ _null_ _null_ regnamespacerecv _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 4088 ( regnamespacesend PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 17 "4089" _null_ _null_ _null_ _null_ _null_ regnamespacesend _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 2456 ( bit_recv PGNSP PGUID 12 1 0 0 0 f f f f t f i s 3 0 1560 "2281 26 23" _null_ _null_ _null_ _null_ _null_ bit_recv _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 2457 ( bit_send PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 17 "1560" _null_ _null_ _null_ _null_ _null_ bit_send _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 2458 ( varbit_recv PGNSP PGUID 12 1 0 0 0 f f f f t f i s 3 0 1562 "2281 26 23" _null_ _null_ _null_ _null_ _null_ varbit_recv _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 2459 ( varbit_send PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 17 "1562" _null_ _null_ _null_ _null_ _null_ varbit_send _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 2460 ( numeric_recv PGNSP PGUID 12 1 0 0 0 f f f f t f i s 3 0 1700 "2281 26 23" _null_ _null_ _null_ _null_ _null_ numeric_recv _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 2461 ( numeric_send PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 17 "1700" _null_ _null_ _null_ _null_ _null_ numeric_send _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 2462 ( abstimerecv PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 702 "2281" _null_ _null_ _null_ _null_ _null_ abstimerecv _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 2463 ( abstimesend PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 17 "702" _null_ _null_ _null_ _null_ _null_ abstimesend _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 2464 ( reltimerecv PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 703 "2281" _null_ _null_ _null_ _null_ _null_ reltimerecv _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 2465 ( reltimesend PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 17 "703" _null_ _null_ _null_ _null_ _null_ reltimesend _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 2466 ( tintervalrecv PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 704 "2281" _null_ _null_ _null_ _null_ _null_ tintervalrecv _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 2467 ( tintervalsend PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 17 "704" _null_ _null_ _null_ _null_ _null_ tintervalsend _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 2468 ( date_recv PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 1082 "2281" _null_ _null_ _null_ _null_ _null_ date_recv _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 2469 ( date_send PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 17 "1082" _null_ _null_ _null_ _null_ _null_ date_send _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 2470 ( time_recv PGNSP PGUID 12 1 0 0 0 f f f f t f i s 3 0 1083 "2281 26 23" _null_ _null_ _null_ _null_ _null_ time_recv _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 2471 ( time_send PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 17 "1083" _null_ _null_ _null_ _null_ _null_ time_send _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 2472 ( timetz_recv PGNSP PGUID 12 1 0 0 0 f f f f t f i s 3 0 1266 "2281 26 23" _null_ _null_ _null_ _null_ _null_ timetz_recv _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 2473 ( timetz_send PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 17 "1266" _null_ _null_ _null_ _null_ _null_ timetz_send _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 2474 ( timestamp_recv PGNSP PGUID 12 1 0 0 0 f f f f t f i s 3 0 1114 "2281 26 23" _null_ _null_ _null_ _null_ _null_ timestamp_recv _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 2475 ( timestamp_send PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 17 "1114" _null_ _null_ _null_ _null_ _null_ timestamp_send _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 2476 ( timestamptz_recv PGNSP PGUID 12 1 0 0 0 f f f f t f i s 3 0 1184 "2281 26 23" _null_ _null_ _null_ _null_ _null_ timestamptz_recv _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 2477 ( timestamptz_send PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 17 "1184" _null_ _null_ _null_ _null_ _null_ timestamptz_send _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 2478 ( interval_recv PGNSP PGUID 12 1 0 0 0 f f f f t f i s 3 0 1186 "2281 26 23" _null_ _null_ _null_ _null_ _null_ interval_recv _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 2479 ( interval_send PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 17 "1186" _null_ _null_ _null_ _null_ _null_ interval_send _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 2480 ( lseg_recv PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 601 "2281" _null_ _null_ _null_ _null_ _null_ lseg_recv _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 2481 ( lseg_send PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 17 "601" _null_ _null_ _null_ _null_ _null_ lseg_send _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 2482 ( path_recv PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 602 "2281" _null_ _null_ _null_ _null_ _null_ path_recv _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 2483 ( path_send PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 17 "602" _null_ _null_ _null_ _null_ _null_ path_send _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 2484 ( box_recv PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 603 "2281" _null_ _null_ _null_ _null_ _null_ box_recv _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 2485 ( box_send PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 17 "603" _null_ _null_ _null_ _null_ _null_ box_send _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 2486 ( poly_recv PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 604 "2281" _null_ _null_ _null_ _null_ _null_ poly_recv _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 2487 ( poly_send PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 17 "604" _null_ _null_ _null_ _null_ _null_ poly_send _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 2488 ( line_recv PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 628 "2281" _null_ _null_ _null_ _null_ _null_ line_recv _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 2489 ( line_send PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 17 "628" _null_ _null_ _null_ _null_ _null_ line_send _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 2490 ( circle_recv PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 718 "2281" _null_ _null_ _null_ _null_ _null_ circle_recv _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 2491 ( circle_send PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 17 "718" _null_ _null_ _null_ _null_ _null_ circle_send _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 2492 ( cash_recv PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 790 "2281" _null_ _null_ _null_ _null_ _null_ cash_recv _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 2493 ( cash_send PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 17 "790" _null_ _null_ _null_ _null_ _null_ cash_send _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 2494 ( macaddr_recv PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 829 "2281" _null_ _null_ _null_ _null_ _null_ macaddr_recv _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 2495 ( macaddr_send PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 17 "829" _null_ _null_ _null_ _null_ _null_ macaddr_send _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 2496 ( inet_recv PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 869 "2281" _null_ _null_ _null_ _null_ _null_ inet_recv _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 2497 ( inet_send PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 17 "869" _null_ _null_ _null_ _null_ _null_ inet_send _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 2498 ( cidr_recv PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 650 "2281" _null_ _null_ _null_ _null_ _null_ cidr_recv _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 2499 ( cidr_send PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 17 "650" _null_ _null_ _null_ _null_ _null_ cidr_send _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 2500 ( cstring_recv PGNSP PGUID 12 1 0 0 0 f f f f t f s s 1 0 2275 "2281" _null_ _null_ _null_ _null_ _null_ cstring_recv _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 2501 ( cstring_send PGNSP PGUID 12 1 0 0 0 f f f f t f s s 1 0 17 "2275" _null_ _null_ _null_ _null_ _null_ cstring_send _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 2502 ( anyarray_recv PGNSP PGUID 12 1 0 0 0 f f f f t f s s 1 0 2277 "2281" _null_ _null_ _null_ _null_ _null_ anyarray_recv _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 2503 ( anyarray_send PGNSP PGUID 12 1 0 0 0 f f f f t f s s 1 0 17 "2277" _null_ _null_ _null_ _null_ _null_ anyarray_send _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 3120 ( void_recv PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 2278 "2281" _null_ _null_ _null_ _null_ _null_ void_recv _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 3121 ( void_send PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 17 "2278" _null_ _null_ _null_ _null_ _null_ void_send _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 3446 ( macaddr8_recv PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 774 "2281" _null_ _null_ _null_ _null_ _null_ macaddr8_recv _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 3447 ( macaddr8_send PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 17 "774" _null_ _null_ _null_ _null_ _null_ macaddr8_send _null_ _null_ _null_ )); -DESCR("I/O"); - -/* System-view support functions with pretty-print option */ -DATA(insert OID = 2504 ( pg_get_ruledef PGNSP PGUID 12 1 0 0 0 f f f f t f s s 2 0 25 "26 16" _null_ _null_ _null_ _null_ _null_ pg_get_ruledef_ext _null_ _null_ _null_ )); -DESCR("source text of a rule with pretty-print option"); -DATA(insert OID = 2505 ( pg_get_viewdef PGNSP PGUID 12 1 0 0 0 f f f f t f s r 2 0 25 "25 16" _null_ _null_ _null_ _null_ _null_ pg_get_viewdef_name_ext _null_ _null_ _null_ )); -DESCR("select statement of a view with pretty-print option"); -DATA(insert OID = 2506 ( pg_get_viewdef PGNSP PGUID 12 1 0 0 0 f f f f t f s r 2 0 25 "26 16" _null_ _null_ _null_ _null_ _null_ pg_get_viewdef_ext _null_ _null_ _null_ )); -DESCR("select statement of a view with pretty-print option"); -DATA(insert OID = 3159 ( pg_get_viewdef PGNSP PGUID 12 1 0 0 0 f f f f t f s r 2 0 25 "26 23" _null_ _null_ _null_ _null_ _null_ pg_get_viewdef_wrap _null_ _null_ _null_ )); -DESCR("select statement of a view with pretty-printing and specified line wrapping"); -DATA(insert OID = 2507 ( pg_get_indexdef PGNSP PGUID 12 1 0 0 0 f f f f t f s s 3 0 25 "26 23 16" _null_ _null_ _null_ _null_ _null_ pg_get_indexdef_ext _null_ _null_ _null_ )); -DESCR("index description (full create statement or single expression) with pretty-print option"); -DATA(insert OID = 2508 ( pg_get_constraintdef PGNSP PGUID 12 1 0 0 0 f f f f t f s s 2 0 25 "26 16" _null_ _null_ _null_ _null_ _null_ pg_get_constraintdef_ext _null_ _null_ _null_ )); -DESCR("constraint description with pretty-print option"); -DATA(insert OID = 2509 ( pg_get_expr PGNSP PGUID 12 1 0 0 0 f f f f t f s s 3 0 25 "194 26 16" _null_ _null_ _null_ _null_ _null_ pg_get_expr_ext _null_ _null_ _null_ )); -DESCR("deparse an encoded expression with pretty-print option"); -DATA(insert OID = 2510 ( pg_prepared_statement PGNSP PGUID 12 1 1000 0 0 f f f f t t s r 0 0 2249 "" "{25,25,1184,2211,16}" "{o,o,o,o,o}" "{name,statement,prepare_time,parameter_types,from_sql}" _null_ _null_ pg_prepared_statement _null_ _null_ _null_ )); -DESCR("get the prepared statements for this session"); -DATA(insert OID = 2511 ( pg_cursor PGNSP PGUID 12 1 1000 0 0 f f f f t t s r 0 0 2249 "" "{25,25,16,16,16,1184}" "{o,o,o,o,o,o}" "{name,statement,is_holdable,is_binary,is_scrollable,creation_time}" _null_ _null_ pg_cursor _null_ _null_ _null_ )); -DESCR("get the open cursors for this session"); -DATA(insert OID = 2599 ( pg_timezone_abbrevs PGNSP PGUID 12 1 1000 0 0 f f f f t t s s 0 0 2249 "" "{25,1186,16}" "{o,o,o}" "{abbrev,utc_offset,is_dst}" _null_ _null_ pg_timezone_abbrevs _null_ _null_ _null_ )); -DESCR("get the available time zone abbreviations"); -DATA(insert OID = 2856 ( pg_timezone_names PGNSP PGUID 12 1 1000 0 0 f f f f t t s s 0 0 2249 "" "{25,25,1186,16}" "{o,o,o,o}" "{name,abbrev,utc_offset,is_dst}" _null_ _null_ pg_timezone_names _null_ _null_ _null_ )); -DESCR("get the available time zone names"); -DATA(insert OID = 2730 ( pg_get_triggerdef PGNSP PGUID 12 1 0 0 0 f f f f t f s s 2 0 25 "26 16" _null_ _null_ _null_ _null_ _null_ pg_get_triggerdef_ext _null_ _null_ _null_ )); -DESCR("trigger description with pretty-print option"); - -/* asynchronous notifications */ -DATA(insert OID = 3035 ( pg_listening_channels PGNSP PGUID 12 1 10 0 0 f f f f t t s r 0 0 25 "" _null_ _null_ _null_ _null_ _null_ pg_listening_channels _null_ _null_ _null_ )); -DESCR("get the channels that the current backend listens to"); -DATA(insert OID = 3036 ( pg_notify PGNSP PGUID 12 1 0 0 0 f f f f f f v r 2 0 2278 "25 25" _null_ _null_ _null_ _null_ _null_ pg_notify _null_ _null_ _null_ )); -DESCR("send a notification event"); -DATA(insert OID = 3296 ( pg_notification_queue_usage PGNSP PGUID 12 1 0 0 0 f f f f t f v s 0 0 701 "" _null_ _null_ _null_ _null_ _null_ pg_notification_queue_usage _null_ _null_ _null_ )); -DESCR("get the fraction of the asynchronous notification queue currently in use"); - -/* non-persistent series generator */ -DATA(insert OID = 1066 ( generate_series PGNSP PGUID 12 1 1000 0 0 f f f f t t i s 3 0 23 "23 23 23" _null_ _null_ _null_ _null_ _null_ generate_series_step_int4 _null_ _null_ _null_ )); -DESCR("non-persistent series generator"); -DATA(insert OID = 1067 ( generate_series PGNSP PGUID 12 1 1000 0 0 f f f f t t i s 2 0 23 "23 23" _null_ _null_ _null_ _null_ _null_ generate_series_int4 _null_ _null_ _null_ )); -DESCR("non-persistent series generator"); -DATA(insert OID = 1068 ( generate_series PGNSP PGUID 12 1 1000 0 0 f f f f t t i s 3 0 20 "20 20 20" _null_ _null_ _null_ _null_ _null_ generate_series_step_int8 _null_ _null_ _null_ )); -DESCR("non-persistent series generator"); -DATA(insert OID = 1069 ( generate_series PGNSP PGUID 12 1 1000 0 0 f f f f t t i s 2 0 20 "20 20" _null_ _null_ _null_ _null_ _null_ generate_series_int8 _null_ _null_ _null_ )); -DESCR("non-persistent series generator"); -DATA(insert OID = 3259 ( generate_series PGNSP PGUID 12 1 1000 0 0 f f f f t t i s 3 0 1700 "1700 1700 1700" _null_ _null_ _null_ _null_ _null_ generate_series_step_numeric _null_ _null_ _null_ )); -DESCR("non-persistent series generator"); -DATA(insert OID = 3260 ( generate_series PGNSP PGUID 12 1 1000 0 0 f f f f t t i s 2 0 1700 "1700 1700" _null_ _null_ _null_ _null_ _null_ generate_series_numeric _null_ _null_ _null_ )); -DESCR("non-persistent series generator"); -DATA(insert OID = 938 ( generate_series PGNSP PGUID 12 1 1000 0 0 f f f f t t i s 3 0 1114 "1114 1114 1186" _null_ _null_ _null_ _null_ _null_ generate_series_timestamp _null_ _null_ _null_ )); -DESCR("non-persistent series generator"); -DATA(insert OID = 939 ( generate_series PGNSP PGUID 12 1 1000 0 0 f f f f t t s s 3 0 1184 "1184 1184 1186" _null_ _null_ _null_ _null_ _null_ generate_series_timestamptz _null_ _null_ _null_ )); -DESCR("non-persistent series generator"); - -/* boolean aggregates */ -DATA(insert OID = 2515 ( booland_statefunc PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 16 "16 16" _null_ _null_ _null_ _null_ _null_ booland_statefunc _null_ _null_ _null_ )); -DESCR("aggregate transition function"); -DATA(insert OID = 2516 ( boolor_statefunc PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 16 "16 16" _null_ _null_ _null_ _null_ _null_ boolor_statefunc _null_ _null_ _null_ )); -DESCR("aggregate transition function"); -DATA(insert OID = 3496 ( bool_accum PGNSP PGUID 12 1 0 0 0 f f f f f f i s 2 0 2281 "2281 16" _null_ _null_ _null_ _null_ _null_ bool_accum _null_ _null_ _null_ )); -DESCR("aggregate transition function"); -DATA(insert OID = 3497 ( bool_accum_inv PGNSP PGUID 12 1 0 0 0 f f f f f f i s 2 0 2281 "2281 16" _null_ _null_ _null_ _null_ _null_ bool_accum_inv _null_ _null_ _null_ )); -DESCR("aggregate transition function"); -DATA(insert OID = 3498 ( bool_alltrue PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 16 "2281" _null_ _null_ _null_ _null_ _null_ bool_alltrue _null_ _null_ _null_ )); -DESCR("aggregate final function"); -DATA(insert OID = 3499 ( bool_anytrue PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 16 "2281" _null_ _null_ _null_ _null_ _null_ bool_anytrue _null_ _null_ _null_ )); -DESCR("aggregate final function"); -DATA(insert OID = 2517 ( bool_and PGNSP PGUID 12 1 0 0 0 t f f f f f i s 1 0 16 "16" _null_ _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ )); -DESCR("boolean-and aggregate"); -/* ANY, SOME? These names conflict with subquery operators. See doc. */ -DATA(insert OID = 2518 ( bool_or PGNSP PGUID 12 1 0 0 0 t f f f f f i s 1 0 16 "16" _null_ _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ )); -DESCR("boolean-or aggregate"); -DATA(insert OID = 2519 ( every PGNSP PGUID 12 1 0 0 0 t f f f f f i s 1 0 16 "16" _null_ _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ )); -DESCR("boolean-and aggregate"); - -/* bitwise integer aggregates */ -DATA(insert OID = 2236 ( bit_and PGNSP PGUID 12 1 0 0 0 t f f f f f i s 1 0 21 "21" _null_ _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ )); -DESCR("bitwise-and smallint aggregate"); -DATA(insert OID = 2237 ( bit_or PGNSP PGUID 12 1 0 0 0 t f f f f f i s 1 0 21 "21" _null_ _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ )); -DESCR("bitwise-or smallint aggregate"); -DATA(insert OID = 2238 ( bit_and PGNSP PGUID 12 1 0 0 0 t f f f f f i s 1 0 23 "23" _null_ _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ )); -DESCR("bitwise-and integer aggregate"); -DATA(insert OID = 2239 ( bit_or PGNSP PGUID 12 1 0 0 0 t f f f f f i s 1 0 23 "23" _null_ _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ )); -DESCR("bitwise-or integer aggregate"); -DATA(insert OID = 2240 ( bit_and PGNSP PGUID 12 1 0 0 0 t f f f f f i s 1 0 20 "20" _null_ _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ )); -DESCR("bitwise-and bigint aggregate"); -DATA(insert OID = 2241 ( bit_or PGNSP PGUID 12 1 0 0 0 t f f f f f i s 1 0 20 "20" _null_ _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ )); -DESCR("bitwise-or bigint aggregate"); -DATA(insert OID = 2242 ( bit_and PGNSP PGUID 12 1 0 0 0 t f f f f f i s 1 0 1560 "1560" _null_ _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ )); -DESCR("bitwise-and bit aggregate"); -DATA(insert OID = 2243 ( bit_or PGNSP PGUID 12 1 0 0 0 t f f f f f i s 1 0 1560 "1560" _null_ _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ )); -DESCR("bitwise-or bit aggregate"); - -/* formerly-missing interval + datetime operators */ -DATA(insert OID = 2546 ( interval_pl_date PGNSP PGUID 14 1 0 0 0 f f f f t f i s 2 0 1114 "1186 1082" _null_ _null_ _null_ _null_ _null_ "select $2 + $1" _null_ _null_ _null_ )); -DATA(insert OID = 2547 ( interval_pl_timetz PGNSP PGUID 14 1 0 0 0 f f f f t f i s 2 0 1266 "1186 1266" _null_ _null_ _null_ _null_ _null_ "select $2 + $1" _null_ _null_ _null_ )); -DATA(insert OID = 2548 ( interval_pl_timestamp PGNSP PGUID 14 1 0 0 0 f f f f t f i s 2 0 1114 "1186 1114" _null_ _null_ _null_ _null_ _null_ "select $2 + $1" _null_ _null_ _null_ )); -DATA(insert OID = 2549 ( interval_pl_timestamptz PGNSP PGUID 14 1 0 0 0 f f f f t f s s 2 0 1184 "1186 1184" _null_ _null_ _null_ _null_ _null_ "select $2 + $1" _null_ _null_ _null_ )); -DATA(insert OID = 2550 ( integer_pl_date PGNSP PGUID 14 1 0 0 0 f f f f t f i s 2 0 1082 "23 1082" _null_ _null_ _null_ _null_ _null_ "select $2 + $1" _null_ _null_ _null_ )); - -DATA(insert OID = 2556 ( pg_tablespace_databases PGNSP PGUID 12 1 1000 0 0 f f f f t t s s 1 0 26 "26" _null_ _null_ _null_ _null_ _null_ pg_tablespace_databases _null_ _null_ _null_ )); -DESCR("get OIDs of databases in a tablespace"); - -DATA(insert OID = 2557 ( bool PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 16 "23" _null_ _null_ _null_ _null_ _null_ int4_bool _null_ _null_ _null_ )); -DESCR("convert int4 to boolean"); -DATA(insert OID = 2558 ( int4 PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 23 "16" _null_ _null_ _null_ _null_ _null_ bool_int4 _null_ _null_ _null_ )); -DESCR("convert boolean to int4"); -DATA(insert OID = 2559 ( lastval PGNSP PGUID 12 1 0 0 0 f f f f t f v u 0 0 20 "" _null_ _null_ _null_ _null_ _null_ lastval _null_ _null_ _null_ )); -DESCR("current value from last used sequence"); - -/* start time function */ -DATA(insert OID = 2560 ( pg_postmaster_start_time PGNSP PGUID 12 1 0 0 0 f f f f t f s s 0 0 1184 "" _null_ _null_ _null_ _null_ _null_ pg_postmaster_start_time _null_ _null_ _null_ )); -DESCR("postmaster start time"); -/* config reload time function */ -DATA(insert OID = 2034 ( pg_conf_load_time PGNSP PGUID 12 1 0 0 0 f f f f t f s r 0 0 1184 "" _null_ _null_ _null_ _null_ _null_ pg_conf_load_time _null_ _null_ _null_ )); -DESCR("configuration load time"); - -/* new functions for Y-direction rtree opclasses */ -DATA(insert OID = 2562 ( box_below PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 16 "603 603" _null_ _null_ _null_ _null_ _null_ box_below _null_ _null_ _null_ )); -DATA(insert OID = 2563 ( box_overbelow PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 16 "603 603" _null_ _null_ _null_ _null_ _null_ box_overbelow _null_ _null_ _null_ )); -DATA(insert OID = 2564 ( box_overabove PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 16 "603 603" _null_ _null_ _null_ _null_ _null_ box_overabove _null_ _null_ _null_ )); -DATA(insert OID = 2565 ( box_above PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 16 "603 603" _null_ _null_ _null_ _null_ _null_ box_above _null_ _null_ _null_ )); -DATA(insert OID = 2566 ( poly_below PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 16 "604 604" _null_ _null_ _null_ _null_ _null_ poly_below _null_ _null_ _null_ )); -DATA(insert OID = 2567 ( poly_overbelow PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 16 "604 604" _null_ _null_ _null_ _null_ _null_ poly_overbelow _null_ _null_ _null_ )); -DATA(insert OID = 2568 ( poly_overabove PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 16 "604 604" _null_ _null_ _null_ _null_ _null_ poly_overabove _null_ _null_ _null_ )); -DATA(insert OID = 2569 ( poly_above PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 16 "604 604" _null_ _null_ _null_ _null_ _null_ poly_above _null_ _null_ _null_ )); -DATA(insert OID = 2587 ( circle_overbelow PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 16 "718 718" _null_ _null_ _null_ _null_ _null_ circle_overbelow _null_ _null_ _null_ )); -DATA(insert OID = 2588 ( circle_overabove PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 16 "718 718" _null_ _null_ _null_ _null_ _null_ circle_overabove _null_ _null_ _null_ )); - -/* support functions for GiST r-tree emulation */ -DATA(insert OID = 2578 ( gist_box_consistent PGNSP PGUID 12 1 0 0 0 f f f f t f i s 5 0 16 "2281 603 21 26 2281" _null_ _null_ _null_ _null_ _null_ gist_box_consistent _null_ _null_ _null_ )); -DESCR("GiST support"); -DATA(insert OID = 2579 ( gist_box_compress PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 2281 "2281" _null_ _null_ _null_ _null_ _null_ gist_box_compress _null_ _null_ _null_ )); -DESCR("GiST support"); -DATA(insert OID = 2580 ( gist_box_decompress PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 2281 "2281" _null_ _null_ _null_ _null_ _null_ gist_box_decompress _null_ _null_ _null_ )); -DESCR("GiST support"); -DATA(insert OID = 3281 ( gist_box_fetch PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 2281 "2281" _null_ _null_ _null_ _null_ _null_ gist_box_fetch _null_ _null_ _null_ )); -DESCR("GiST support"); -DATA(insert OID = 2581 ( gist_box_penalty PGNSP PGUID 12 1 0 0 0 f f f f t f i s 3 0 2281 "2281 2281 2281" _null_ _null_ _null_ _null_ _null_ gist_box_penalty _null_ _null_ _null_ )); -DESCR("GiST support"); -DATA(insert OID = 2582 ( gist_box_picksplit PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 2281 "2281 2281" _null_ _null_ _null_ _null_ _null_ gist_box_picksplit _null_ _null_ _null_ )); -DESCR("GiST support"); -DATA(insert OID = 2583 ( gist_box_union PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 603 "2281 2281" _null_ _null_ _null_ _null_ _null_ gist_box_union _null_ _null_ _null_ )); -DESCR("GiST support"); -DATA(insert OID = 2584 ( gist_box_same PGNSP PGUID 12 1 0 0 0 f f f f t f i s 3 0 2281 "603 603 2281" _null_ _null_ _null_ _null_ _null_ gist_box_same _null_ _null_ _null_ )); -DESCR("GiST support"); -DATA(insert OID = 2585 ( gist_poly_consistent PGNSP PGUID 12 1 0 0 0 f f f f t f i s 5 0 16 "2281 604 21 26 2281" _null_ _null_ _null_ _null_ _null_ gist_poly_consistent _null_ _null_ _null_ )); -DESCR("GiST support"); -DATA(insert OID = 2586 ( gist_poly_compress PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 2281 "2281" _null_ _null_ _null_ _null_ _null_ gist_poly_compress _null_ _null_ _null_ )); -DESCR("GiST support"); -DATA(insert OID = 2591 ( gist_circle_consistent PGNSP PGUID 12 1 0 0 0 f f f f t f i s 5 0 16 "2281 718 21 26 2281" _null_ _null_ _null_ _null_ _null_ gist_circle_consistent _null_ _null_ _null_ )); -DESCR("GiST support"); -DATA(insert OID = 2592 ( gist_circle_compress PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 2281 "2281" _null_ _null_ _null_ _null_ _null_ gist_circle_compress _null_ _null_ _null_ )); -DESCR("GiST support"); -DATA(insert OID = 1030 ( gist_point_compress PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 2281 "2281" _null_ _null_ _null_ _null_ _null_ gist_point_compress _null_ _null_ _null_ )); -DESCR("GiST support"); -DATA(insert OID = 3282 ( gist_point_fetch PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 2281 "2281" _null_ _null_ _null_ _null_ _null_ gist_point_fetch _null_ _null_ _null_ )); -DESCR("GiST support"); -DATA(insert OID = 2179 ( gist_point_consistent PGNSP PGUID 12 1 0 0 0 f f f f t f i s 5 0 16 "2281 600 21 26 2281" _null_ _null_ _null_ _null_ _null_ gist_point_consistent _null_ _null_ _null_ )); -DESCR("GiST support"); -DATA(insert OID = 3064 ( gist_point_distance PGNSP PGUID 12 1 0 0 0 f f f f t f i s 5 0 701 "2281 600 21 26 2281" _null_ _null_ _null_ _null_ _null_ gist_point_distance _null_ _null_ _null_ )); -DESCR("GiST support"); -DATA(insert OID = 3280 ( gist_circle_distance PGNSP PGUID 12 1 0 0 0 f f f f t f i s 5 0 701 "2281 718 21 26 2281" _null_ _null_ _null_ _null_ _null_ gist_circle_distance _null_ _null_ _null_ )); -DESCR("GiST support"); -DATA(insert OID = 3288 ( gist_poly_distance PGNSP PGUID 12 1 0 0 0 f f f f t f i s 5 0 701 "2281 604 21 26 2281" _null_ _null_ _null_ _null_ _null_ gist_poly_distance _null_ _null_ _null_ )); -DESCR("GiST support"); - -/* GIN array support */ -DATA(insert OID = 2743 ( ginarrayextract PGNSP PGUID 12 1 0 0 0 f f f f t f i s 3 0 2281 "2277 2281 2281" _null_ _null_ _null_ _null_ _null_ ginarrayextract _null_ _null_ _null_ )); -DESCR("GIN array support"); -DATA(insert OID = 2774 ( ginqueryarrayextract PGNSP PGUID 12 1 0 0 0 f f f f t f i s 7 0 2281 "2277 2281 21 2281 2281 2281 2281" _null_ _null_ _null_ _null_ _null_ ginqueryarrayextract _null_ _null_ _null_ )); -DESCR("GIN array support"); -DATA(insert OID = 2744 ( ginarrayconsistent PGNSP PGUID 12 1 0 0 0 f f f f t f i s 8 0 16 "2281 21 2277 23 2281 2281 2281 2281" _null_ _null_ _null_ _null_ _null_ ginarrayconsistent _null_ _null_ _null_ )); -DESCR("GIN array support"); -DATA(insert OID = 3920 ( ginarraytriconsistent PGNSP PGUID 12 1 0 0 0 f f f f t f i s 7 0 18 "2281 21 2277 23 2281 2281 2281" _null_ _null_ _null_ _null_ _null_ ginarraytriconsistent _null_ _null_ _null_ )); -DESCR("GIN array support"); -DATA(insert OID = 3076 ( ginarrayextract PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 2281 "2277 2281" _null_ _null_ _null_ _null_ _null_ ginarrayextract_2args _null_ _null_ _null_ )); -DESCR("GIN array support (obsolete)"); - -/* overlap/contains/contained */ -DATA(insert OID = 2747 ( arrayoverlap PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 16 "2277 2277" _null_ _null_ _null_ _null_ _null_ arrayoverlap _null_ _null_ _null_ )); -DATA(insert OID = 2748 ( arraycontains PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 16 "2277 2277" _null_ _null_ _null_ _null_ _null_ arraycontains _null_ _null_ _null_ )); -DATA(insert OID = 2749 ( arraycontained PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 16 "2277 2277" _null_ _null_ _null_ _null_ _null_ arraycontained _null_ _null_ _null_ )); - -/* BRIN minmax */ -DATA(insert OID = 3383 ( brin_minmax_opcinfo PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 2281 "2281" _null_ _null_ _null_ _null_ _null_ brin_minmax_opcinfo _null_ _null_ _null_ )); -DESCR("BRIN minmax support"); -DATA(insert OID = 3384 ( brin_minmax_add_value PGNSP PGUID 12 1 0 0 0 f f f f t f i s 4 0 16 "2281 2281 2281 2281" _null_ _null_ _null_ _null_ _null_ brin_minmax_add_value _null_ _null_ _null_ )); -DESCR("BRIN minmax support"); -DATA(insert OID = 3385 ( brin_minmax_consistent PGNSP PGUID 12 1 0 0 0 f f f f t f i s 3 0 16 "2281 2281 2281" _null_ _null_ _null_ _null_ _null_ brin_minmax_consistent _null_ _null_ _null_ )); -DESCR("BRIN minmax support"); -DATA(insert OID = 3386 ( brin_minmax_union PGNSP PGUID 12 1 0 0 0 f f f f t f i s 3 0 16 "2281 2281 2281" _null_ _null_ _null_ _null_ _null_ brin_minmax_union _null_ _null_ _null_ )); -DESCR("BRIN minmax support"); - -/* BRIN inclusion */ -DATA(insert OID = 4105 ( brin_inclusion_opcinfo PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 2281 "2281" _null_ _null_ _null_ _null_ _null_ brin_inclusion_opcinfo _null_ _null_ _null_ )); -DESCR("BRIN inclusion support"); -DATA(insert OID = 4106 ( brin_inclusion_add_value PGNSP PGUID 12 1 0 0 0 f f f f t f i s 4 0 16 "2281 2281 2281 2281" _null_ _null_ _null_ _null_ _null_ brin_inclusion_add_value _null_ _null_ _null_ )); -DESCR("BRIN inclusion support"); -DATA(insert OID = 4107 ( brin_inclusion_consistent PGNSP PGUID 12 1 0 0 0 f f f f t f i s 3 0 16 "2281 2281 2281" _null_ _null_ _null_ _null_ _null_ brin_inclusion_consistent _null_ _null_ _null_ )); -DESCR("BRIN inclusion support"); -DATA(insert OID = 4108 ( brin_inclusion_union PGNSP PGUID 12 1 0 0 0 f f f f t f i s 3 0 16 "2281 2281 2281" _null_ _null_ _null_ _null_ _null_ brin_inclusion_union _null_ _null_ _null_ )); -DESCR("BRIN inclusion support"); - -/* userlock replacements */ -DATA(insert OID = 2880 ( pg_advisory_lock PGNSP PGUID 12 1 0 0 0 f f f f t f v u 1 0 2278 "20" _null_ _null_ _null_ _null_ _null_ pg_advisory_lock_int8 _null_ _null_ _null_ )); -DESCR("obtain exclusive advisory lock"); -DATA(insert OID = 3089 ( pg_advisory_xact_lock PGNSP PGUID 12 1 0 0 0 f f f f t f v u 1 0 2278 "20" _null_ _null_ _null_ _null_ _null_ pg_advisory_xact_lock_int8 _null_ _null_ _null_ )); -DESCR("obtain exclusive advisory lock"); -DATA(insert OID = 2881 ( pg_advisory_lock_shared PGNSP PGUID 12 1 0 0 0 f f f f t f v u 1 0 2278 "20" _null_ _null_ _null_ _null_ _null_ pg_advisory_lock_shared_int8 _null_ _null_ _null_ )); -DESCR("obtain shared advisory lock"); -DATA(insert OID = 3090 ( pg_advisory_xact_lock_shared PGNSP PGUID 12 1 0 0 0 f f f f t f v u 1 0 2278 "20" _null_ _null_ _null_ _null_ _null_ pg_advisory_xact_lock_shared_int8 _null_ _null_ _null_ )); -DESCR("obtain shared advisory lock"); -DATA(insert OID = 2882 ( pg_try_advisory_lock PGNSP PGUID 12 1 0 0 0 f f f f t f v u 1 0 16 "20" _null_ _null_ _null_ _null_ _null_ pg_try_advisory_lock_int8 _null_ _null_ _null_ )); -DESCR("obtain exclusive advisory lock if available"); -DATA(insert OID = 3091 ( pg_try_advisory_xact_lock PGNSP PGUID 12 1 0 0 0 f f f f t f v u 1 0 16 "20" _null_ _null_ _null_ _null_ _null_ pg_try_advisory_xact_lock_int8 _null_ _null_ _null_ )); -DESCR("obtain exclusive advisory lock if available"); -DATA(insert OID = 2883 ( pg_try_advisory_lock_shared PGNSP PGUID 12 1 0 0 0 f f f f t f v u 1 0 16 "20" _null_ _null_ _null_ _null_ _null_ pg_try_advisory_lock_shared_int8 _null_ _null_ _null_ )); -DESCR("obtain shared advisory lock if available"); -DATA(insert OID = 3092 ( pg_try_advisory_xact_lock_shared PGNSP PGUID 12 1 0 0 0 f f f f t f v u 1 0 16 "20" _null_ _null_ _null_ _null_ _null_ pg_try_advisory_xact_lock_shared_int8 _null_ _null_ _null_ )); -DESCR("obtain shared advisory lock if available"); -DATA(insert OID = 2884 ( pg_advisory_unlock PGNSP PGUID 12 1 0 0 0 f f f f t f v u 1 0 16 "20" _null_ _null_ _null_ _null_ _null_ pg_advisory_unlock_int8 _null_ _null_ _null_ )); -DESCR("release exclusive advisory lock"); -DATA(insert OID = 2885 ( pg_advisory_unlock_shared PGNSP PGUID 12 1 0 0 0 f f f f t f v u 1 0 16 "20" _null_ _null_ _null_ _null_ _null_ pg_advisory_unlock_shared_int8 _null_ _null_ _null_ )); -DESCR("release shared advisory lock"); -DATA(insert OID = 2886 ( pg_advisory_lock PGNSP PGUID 12 1 0 0 0 f f f f t f v u 2 0 2278 "23 23" _null_ _null_ _null_ _null_ _null_ pg_advisory_lock_int4 _null_ _null_ _null_ )); -DESCR("obtain exclusive advisory lock"); -DATA(insert OID = 3093 ( pg_advisory_xact_lock PGNSP PGUID 12 1 0 0 0 f f f f t f v u 2 0 2278 "23 23" _null_ _null_ _null_ _null_ _null_ pg_advisory_xact_lock_int4 _null_ _null_ _null_ )); -DESCR("obtain exclusive advisory lock"); -DATA(insert OID = 2887 ( pg_advisory_lock_shared PGNSP PGUID 12 1 0 0 0 f f f f t f v u 2 0 2278 "23 23" _null_ _null_ _null_ _null_ _null_ pg_advisory_lock_shared_int4 _null_ _null_ _null_ )); -DESCR("obtain shared advisory lock"); -DATA(insert OID = 3094 ( pg_advisory_xact_lock_shared PGNSP PGUID 12 1 0 0 0 f f f f t f v u 2 0 2278 "23 23" _null_ _null_ _null_ _null_ _null_ pg_advisory_xact_lock_shared_int4 _null_ _null_ _null_ )); -DESCR("obtain shared advisory lock"); -DATA(insert OID = 2888 ( pg_try_advisory_lock PGNSP PGUID 12 1 0 0 0 f f f f t f v u 2 0 16 "23 23" _null_ _null_ _null_ _null_ _null_ pg_try_advisory_lock_int4 _null_ _null_ _null_ )); -DESCR("obtain exclusive advisory lock if available"); -DATA(insert OID = 3095 ( pg_try_advisory_xact_lock PGNSP PGUID 12 1 0 0 0 f f f f t f v u 2 0 16 "23 23" _null_ _null_ _null_ _null_ _null_ pg_try_advisory_xact_lock_int4 _null_ _null_ _null_ )); -DESCR("obtain exclusive advisory lock if available"); -DATA(insert OID = 2889 ( pg_try_advisory_lock_shared PGNSP PGUID 12 1 0 0 0 f f f f t f v u 2 0 16 "23 23" _null_ _null_ _null_ _null_ _null_ pg_try_advisory_lock_shared_int4 _null_ _null_ _null_ )); -DESCR("obtain shared advisory lock if available"); -DATA(insert OID = 3096 ( pg_try_advisory_xact_lock_shared PGNSP PGUID 12 1 0 0 0 f f f f t f v u 2 0 16 "23 23" _null_ _null_ _null_ _null_ _null_ pg_try_advisory_xact_lock_shared_int4 _null_ _null_ _null_ )); -DESCR("obtain shared advisory lock if available"); -DATA(insert OID = 2890 ( pg_advisory_unlock PGNSP PGUID 12 1 0 0 0 f f f f t f v u 2 0 16 "23 23" _null_ _null_ _null_ _null_ _null_ pg_advisory_unlock_int4 _null_ _null_ _null_ )); -DESCR("release exclusive advisory lock"); -DATA(insert OID = 2891 ( pg_advisory_unlock_shared PGNSP PGUID 12 1 0 0 0 f f f f t f v u 2 0 16 "23 23" _null_ _null_ _null_ _null_ _null_ pg_advisory_unlock_shared_int4 _null_ _null_ _null_ )); -DESCR("release shared advisory lock"); -DATA(insert OID = 2892 ( pg_advisory_unlock_all PGNSP PGUID 12 1 0 0 0 f f f f t f v u 0 0 2278 "" _null_ _null_ _null_ _null_ _null_ pg_advisory_unlock_all _null_ _null_ _null_ )); -DESCR("release all advisory locks"); - -/* XML support */ -DATA(insert OID = 2893 ( xml_in PGNSP PGUID 12 1 0 0 0 f f f f t f s s 1 0 142 "2275" _null_ _null_ _null_ _null_ _null_ xml_in _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 2894 ( xml_out PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 2275 "142" _null_ _null_ _null_ _null_ _null_ xml_out _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 2895 ( xmlcomment PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 142 "25" _null_ _null_ _null_ _null_ _null_ xmlcomment _null_ _null_ _null_ )); -DESCR("generate XML comment"); -DATA(insert OID = 2896 ( xml PGNSP PGUID 12 1 0 0 0 f f f f t f s s 1 0 142 "25" _null_ _null_ _null_ _null_ _null_ texttoxml _null_ _null_ _null_ )); -DESCR("perform a non-validating parse of a character string to produce an XML value"); -DATA(insert OID = 2897 ( xmlvalidate PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 16 "142 25" _null_ _null_ _null_ _null_ _null_ xmlvalidate _null_ _null_ _null_ )); -DESCR("validate an XML value"); -DATA(insert OID = 2898 ( xml_recv PGNSP PGUID 12 1 0 0 0 f f f f t f s s 1 0 142 "2281" _null_ _null_ _null_ _null_ _null_ xml_recv _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 2899 ( xml_send PGNSP PGUID 12 1 0 0 0 f f f f t f s s 1 0 17 "142" _null_ _null_ _null_ _null_ _null_ xml_send _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 2900 ( xmlconcat2 PGNSP PGUID 12 1 0 0 0 f f f f f f i s 2 0 142 "142 142" _null_ _null_ _null_ _null_ _null_ xmlconcat2 _null_ _null_ _null_ )); -DESCR("aggregate transition function"); -DATA(insert OID = 2901 ( xmlagg PGNSP PGUID 12 1 0 0 0 t f f f f f i s 1 0 142 "142" _null_ _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ )); -DESCR("concatenate XML values"); -DATA(insert OID = 2922 ( text PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 25 "142" _null_ _null_ _null_ _null_ _null_ xmltotext _null_ _null_ _null_ )); -DESCR("serialize an XML value to a character string"); - -DATA(insert OID = 2923 ( table_to_xml PGNSP PGUID 12 100 0 0 0 f f f f t f s r 4 0 142 "2205 16 16 25" _null_ _null_ "{tbl,nulls,tableforest,targetns}" _null_ _null_ table_to_xml _null_ _null_ _null_ )); -DESCR("map table contents to XML"); -DATA(insert OID = 2924 ( query_to_xml PGNSP PGUID 12 100 0 0 0 f f f f t f v u 4 0 142 "25 16 16 25" _null_ _null_ "{query,nulls,tableforest,targetns}" _null_ _null_ query_to_xml _null_ _null_ _null_ )); -DESCR("map query result to XML"); -DATA(insert OID = 2925 ( cursor_to_xml PGNSP PGUID 12 100 0 0 0 f f f f t f v u 5 0 142 "1790 23 16 16 25" _null_ _null_ "{cursor,count,nulls,tableforest,targetns}" _null_ _null_ cursor_to_xml _null_ _null_ _null_ )); -DESCR("map rows from cursor to XML"); -DATA(insert OID = 2926 ( table_to_xmlschema PGNSP PGUID 12 100 0 0 0 f f f f t f s r 4 0 142 "2205 16 16 25" _null_ _null_ "{tbl,nulls,tableforest,targetns}" _null_ _null_ table_to_xmlschema _null_ _null_ _null_ )); -DESCR("map table structure to XML Schema"); -DATA(insert OID = 2927 ( query_to_xmlschema PGNSP PGUID 12 100 0 0 0 f f f f t f v u 4 0 142 "25 16 16 25" _null_ _null_ "{query,nulls,tableforest,targetns}" _null_ _null_ query_to_xmlschema _null_ _null_ _null_ )); -DESCR("map query result structure to XML Schema"); -DATA(insert OID = 2928 ( cursor_to_xmlschema PGNSP PGUID 12 100 0 0 0 f f f f t f v u 4 0 142 "1790 16 16 25" _null_ _null_ "{cursor,nulls,tableforest,targetns}" _null_ _null_ cursor_to_xmlschema _null_ _null_ _null_ )); -DESCR("map cursor structure to XML Schema"); -DATA(insert OID = 2929 ( table_to_xml_and_xmlschema PGNSP PGUID 12 100 0 0 0 f f f f t f s r 4 0 142 "2205 16 16 25" _null_ _null_ "{tbl,nulls,tableforest,targetns}" _null_ _null_ table_to_xml_and_xmlschema _null_ _null_ _null_ )); -DESCR("map table contents and structure to XML and XML Schema"); -DATA(insert OID = 2930 ( query_to_xml_and_xmlschema PGNSP PGUID 12 100 0 0 0 f f f f t f v u 4 0 142 "25 16 16 25" _null_ _null_ "{query,nulls,tableforest,targetns}" _null_ _null_ query_to_xml_and_xmlschema _null_ _null_ _null_ )); -DESCR("map query result and structure to XML and XML Schema"); - -DATA(insert OID = 2933 ( schema_to_xml PGNSP PGUID 12 100 0 0 0 f f f f t f s r 4 0 142 "19 16 16 25" _null_ _null_ "{schema,nulls,tableforest,targetns}" _null_ _null_ schema_to_xml _null_ _null_ _null_ )); -DESCR("map schema contents to XML"); -DATA(insert OID = 2934 ( schema_to_xmlschema PGNSP PGUID 12 100 0 0 0 f f f f t f s r 4 0 142 "19 16 16 25" _null_ _null_ "{schema,nulls,tableforest,targetns}" _null_ _null_ schema_to_xmlschema _null_ _null_ _null_ )); -DESCR("map schema structure to XML Schema"); -DATA(insert OID = 2935 ( schema_to_xml_and_xmlschema PGNSP PGUID 12 100 0 0 0 f f f f t f s r 4 0 142 "19 16 16 25" _null_ _null_ "{schema,nulls,tableforest,targetns}" _null_ _null_ schema_to_xml_and_xmlschema _null_ _null_ _null_ )); -DESCR("map schema contents and structure to XML and XML Schema"); - -DATA(insert OID = 2936 ( database_to_xml PGNSP PGUID 12 100 0 0 0 f f f f t f s r 3 0 142 "16 16 25" _null_ _null_ "{nulls,tableforest,targetns}" _null_ _null_ database_to_xml _null_ _null_ _null_ )); -DESCR("map database contents to XML"); -DATA(insert OID = 2937 ( database_to_xmlschema PGNSP PGUID 12 100 0 0 0 f f f f t f s r 3 0 142 "16 16 25" _null_ _null_ "{nulls,tableforest,targetns}" _null_ _null_ database_to_xmlschema _null_ _null_ _null_ )); -DESCR("map database structure to XML Schema"); -DATA(insert OID = 2938 ( database_to_xml_and_xmlschema PGNSP PGUID 12 100 0 0 0 f f f f t f s r 3 0 142 "16 16 25" _null_ _null_ "{nulls,tableforest,targetns}" _null_ _null_ database_to_xml_and_xmlschema _null_ _null_ _null_ )); -DESCR("map database contents and structure to XML and XML Schema"); - -DATA(insert OID = 2931 ( xpath PGNSP PGUID 12 1 0 0 0 f f f f t f i s 3 0 143 "25 142 1009" _null_ _null_ _null_ _null_ _null_ xpath _null_ _null_ _null_ )); -DESCR("evaluate XPath expression, with namespaces support"); -DATA(insert OID = 2932 ( xpath PGNSP PGUID 14 1 0 0 0 f f f f t f i s 2 0 143 "25 142" _null_ _null_ _null_ _null_ _null_ "select pg_catalog.xpath($1, $2, ''{}''::pg_catalog.text[])" _null_ _null_ _null_ )); -DESCR("evaluate XPath expression"); - -DATA(insert OID = 2614 ( xmlexists PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 16 "25 142" _null_ _null_ _null_ _null_ _null_ xmlexists _null_ _null_ _null_ )); -DESCR("test XML value against XPath expression"); - -DATA(insert OID = 3049 ( xpath_exists PGNSP PGUID 12 1 0 0 0 f f f f t f i s 3 0 16 "25 142 1009" _null_ _null_ _null_ _null_ _null_ xpath_exists _null_ _null_ _null_ )); -DESCR("test XML value against XPath expression, with namespace support"); -DATA(insert OID = 3050 ( xpath_exists PGNSP PGUID 14 1 0 0 0 f f f f t f i s 2 0 16 "25 142" _null_ _null_ _null_ _null_ _null_ "select pg_catalog.xpath_exists($1, $2, ''{}''::pg_catalog.text[])" _null_ _null_ _null_ )); -DESCR("test XML value against XPath expression"); -DATA(insert OID = 3051 ( xml_is_well_formed PGNSP PGUID 12 1 0 0 0 f f f f t f s s 1 0 16 "25" _null_ _null_ _null_ _null_ _null_ xml_is_well_formed _null_ _null_ _null_ )); -DESCR("determine if a string is well formed XML"); -DATA(insert OID = 3052 ( xml_is_well_formed_document PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 16 "25" _null_ _null_ _null_ _null_ _null_ xml_is_well_formed_document _null_ _null_ _null_ )); -DESCR("determine if a string is well formed XML document"); -DATA(insert OID = 3053 ( xml_is_well_formed_content PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 16 "25" _null_ _null_ _null_ _null_ _null_ xml_is_well_formed_content _null_ _null_ _null_ )); -DESCR("determine if a string is well formed XML content"); - -/* json */ -DATA(insert OID = 321 ( json_in PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 114 "2275" _null_ _null_ _null_ _null_ _null_ json_in _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 322 ( json_out PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 2275 "114" _null_ _null_ _null_ _null_ _null_ json_out _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 323 ( json_recv PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 114 "2281" _null_ _null_ _null_ _null_ _null_ json_recv _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 324 ( json_send PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 17 "114" _null_ _null_ _null_ _null_ _null_ json_send _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 3153 ( array_to_json PGNSP PGUID 12 1 0 0 0 f f f f t f s s 1 0 114 "2277" _null_ _null_ _null_ _null_ _null_ array_to_json _null_ _null_ _null_ )); -DESCR("map array to json"); -DATA(insert OID = 3154 ( array_to_json PGNSP PGUID 12 1 0 0 0 f f f f t f s s 2 0 114 "2277 16" _null_ _null_ _null_ _null_ _null_ array_to_json_pretty _null_ _null_ _null_ )); -DESCR("map array to json with optional pretty printing"); -DATA(insert OID = 3155 ( row_to_json PGNSP PGUID 12 1 0 0 0 f f f f t f s s 1 0 114 "2249" _null_ _null_ _null_ _null_ _null_ row_to_json _null_ _null_ _null_ )); -DESCR("map row to json"); -DATA(insert OID = 3156 ( row_to_json PGNSP PGUID 12 1 0 0 0 f f f f t f s s 2 0 114 "2249 16" _null_ _null_ _null_ _null_ _null_ row_to_json_pretty _null_ _null_ _null_ )); -DESCR("map row to json with optional pretty printing"); -DATA(insert OID = 3173 ( json_agg_transfn PGNSP PGUID 12 1 0 0 0 f f f f f f s s 2 0 2281 "2281 2283" _null_ _null_ _null_ _null_ _null_ json_agg_transfn _null_ _null_ _null_ )); -DESCR("json aggregate transition function"); -DATA(insert OID = 3174 ( json_agg_finalfn PGNSP PGUID 12 1 0 0 0 f f f f f f i s 1 0 114 "2281" _null_ _null_ _null_ _null_ _null_ json_agg_finalfn _null_ _null_ _null_ )); -DESCR("json aggregate final function"); -DATA(insert OID = 3175 ( json_agg PGNSP PGUID 12 1 0 0 0 t f f f f f s s 1 0 114 "2283" _null_ _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ )); -DESCR("aggregate input into json"); -DATA(insert OID = 3180 ( json_object_agg_transfn PGNSP PGUID 12 1 0 0 0 f f f f f f s s 3 0 2281 "2281 2276 2276" _null_ _null_ _null_ _null_ _null_ json_object_agg_transfn _null_ _null_ _null_ )); -DESCR("json object aggregate transition function"); -DATA(insert OID = 3196 ( json_object_agg_finalfn PGNSP PGUID 12 1 0 0 0 f f f f f f i s 1 0 114 "2281" _null_ _null_ _null_ _null_ _null_ json_object_agg_finalfn _null_ _null_ _null_ )); -DESCR("json object aggregate final function"); -DATA(insert OID = 3197 ( json_object_agg PGNSP PGUID 12 1 0 0 0 t f f f f f s s 2 0 114 "2276 2276" _null_ _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ )); -DESCR("aggregate input into a json object"); -DATA(insert OID = 3198 ( json_build_array PGNSP PGUID 12 1 0 2276 0 f f f f f f s s 1 0 114 "2276" "{2276}" "{v}" _null_ _null_ _null_ json_build_array _null_ _null_ _null_ )); -DESCR("build a json array from any inputs"); -DATA(insert OID = 3199 ( json_build_array PGNSP PGUID 12 1 0 0 0 f f f f f f s s 0 0 114 "" _null_ _null_ _null_ _null_ _null_ json_build_array_noargs _null_ _null_ _null_ )); -DESCR("build an empty json array"); -DATA(insert OID = 3200 ( json_build_object PGNSP PGUID 12 1 0 2276 0 f f f f f f s s 1 0 114 "2276" "{2276}" "{v}" _null_ _null_ _null_ json_build_object _null_ _null_ _null_ )); -DESCR("build a json object from pairwise key/value inputs"); -DATA(insert OID = 3201 ( json_build_object PGNSP PGUID 12 1 0 0 0 f f f f f f s s 0 0 114 "" _null_ _null_ _null_ _null_ _null_ json_build_object_noargs _null_ _null_ _null_ )); -DESCR("build an empty json object"); -DATA(insert OID = 3202 ( json_object PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 114 "1009" _null_ _null_ _null_ _null_ _null_ json_object _null_ _null_ _null_ )); -DESCR("map text array of key value pairs to json object"); -DATA(insert OID = 3203 ( json_object PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 114 "1009 1009" _null_ _null_ _null_ _null_ _null_ json_object_two_arg _null_ _null_ _null_ )); -DESCR("map text arrays of keys and values to json object"); -DATA(insert OID = 3176 ( to_json PGNSP PGUID 12 1 0 0 0 f f f f t f s s 1 0 114 "2283" _null_ _null_ _null_ _null_ _null_ to_json _null_ _null_ _null_ )); -DESCR("map input to json"); -DATA(insert OID = 3261 ( json_strip_nulls PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 114 "114" _null_ _null_ _null_ _null_ _null_ json_strip_nulls _null_ _null_ _null_ )); -DESCR("remove object fields with null values from json"); - -DATA(insert OID = 3947 ( json_object_field PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 114 "114 25" _null_ _null_ "{from_json, field_name}" _null_ _null_ json_object_field _null_ _null_ _null_ )); -DATA(insert OID = 3948 ( json_object_field_text PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 25 "114 25" _null_ _null_ "{from_json, field_name}" _null_ _null_ json_object_field_text _null_ _null_ _null_ )); -DATA(insert OID = 3949 ( json_array_element PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 114 "114 23" _null_ _null_ "{from_json, element_index}" _null_ _null_ json_array_element _null_ _null_ _null_ )); -DATA(insert OID = 3950 ( json_array_element_text PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 25 "114 23" _null_ _null_ "{from_json, element_index}" _null_ _null_ json_array_element_text _null_ _null_ _null_ )); -DATA(insert OID = 3951 ( json_extract_path PGNSP PGUID 12 1 0 25 0 f f f f t f i s 2 0 114 "114 1009" "{114,1009}" "{i,v}" "{from_json,path_elems}" _null_ _null_ json_extract_path _null_ _null_ _null_ )); -DESCR("get value from json with path elements"); -DATA(insert OID = 3953 ( json_extract_path_text PGNSP PGUID 12 1 0 25 0 f f f f t f i s 2 0 25 "114 1009" "{114,1009}" "{i,v}" "{from_json,path_elems}" _null_ _null_ json_extract_path_text _null_ _null_ _null_ )); -DESCR("get value from json as text with path elements"); -DATA(insert OID = 3955 ( json_array_elements PGNSP PGUID 12 1 100 0 0 f f f f t t i s 1 0 114 "114" "{114,114}" "{i,o}" "{from_json,value}" _null_ _null_ json_array_elements _null_ _null_ _null_ )); -DESCR("key value pairs of a json object"); -DATA(insert OID = 3969 ( json_array_elements_text PGNSP PGUID 12 1 100 0 0 f f f f t t i s 1 0 25 "114" "{114,25}" "{i,o}" "{from_json,value}" _null_ _null_ json_array_elements_text _null_ _null_ _null_ )); -DESCR("elements of json array"); -DATA(insert OID = 3956 ( json_array_length PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 23 "114" _null_ _null_ _null_ _null_ _null_ json_array_length _null_ _null_ _null_ )); -DESCR("length of json array"); -DATA(insert OID = 3957 ( json_object_keys PGNSP PGUID 12 1 100 0 0 f f f f t t i s 1 0 25 "114" _null_ _null_ _null_ _null_ _null_ json_object_keys _null_ _null_ _null_ )); -DESCR("get json object keys"); -DATA(insert OID = 3958 ( json_each PGNSP PGUID 12 1 100 0 0 f f f f t t i s 1 0 2249 "114" "{114,25,114}" "{i,o,o}" "{from_json,key,value}" _null_ _null_ json_each _null_ _null_ _null_ )); -DESCR("key value pairs of a json object"); -DATA(insert OID = 3959 ( json_each_text PGNSP PGUID 12 1 100 0 0 f f f f t t i s 1 0 2249 "114" "{114,25,25}" "{i,o,o}" "{from_json,key,value}" _null_ _null_ json_each_text _null_ _null_ _null_ )); -DESCR("key value pairs of a json object"); -DATA(insert OID = 3960 ( json_populate_record PGNSP PGUID 12 1 0 0 0 f f f f f f s s 3 0 2283 "2283 114 16" _null_ _null_ _null_ _null_ _null_ json_populate_record _null_ _null_ _null_ )); -DESCR("get record fields from a json object"); -DATA(insert OID = 3961 ( json_populate_recordset PGNSP PGUID 12 1 100 0 0 f f f f f t s s 3 0 2283 "2283 114 16" _null_ _null_ _null_ _null_ _null_ json_populate_recordset _null_ _null_ _null_ )); -DESCR("get set of records with fields from a json array of objects"); -DATA(insert OID = 3204 ( json_to_record PGNSP PGUID 12 1 0 0 0 f f f f t f s s 1 0 2249 "114" _null_ _null_ _null_ _null_ _null_ json_to_record _null_ _null_ _null_ )); -DESCR("get record fields from a json object"); -DATA(insert OID = 3205 ( json_to_recordset PGNSP PGUID 12 1 100 0 0 f f f f f t s s 1 0 2249 "114" _null_ _null_ _null_ _null_ _null_ json_to_recordset _null_ _null_ _null_ )); -DESCR("get set of records with fields from a json array of objects"); -DATA(insert OID = 3968 ( json_typeof PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 25 "114" _null_ _null_ _null_ _null_ _null_ json_typeof _null_ _null_ _null_ )); -DESCR("get the type of a json value"); - -/* uuid */ -DATA(insert OID = 2952 ( uuid_in PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 2950 "2275" _null_ _null_ _null_ _null_ _null_ uuid_in _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 2953 ( uuid_out PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 2275 "2950" _null_ _null_ _null_ _null_ _null_ uuid_out _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 2954 ( uuid_lt PGNSP PGUID 12 1 0 0 0 f f f t t f i s 2 0 16 "2950 2950" _null_ _null_ _null_ _null_ _null_ uuid_lt _null_ _null_ _null_ )); -DATA(insert OID = 2955 ( uuid_le PGNSP PGUID 12 1 0 0 0 f f f t t f i s 2 0 16 "2950 2950" _null_ _null_ _null_ _null_ _null_ uuid_le _null_ _null_ _null_ )); -DATA(insert OID = 2956 ( uuid_eq PGNSP PGUID 12 1 0 0 0 f f f t t f i s 2 0 16 "2950 2950" _null_ _null_ _null_ _null_ _null_ uuid_eq _null_ _null_ _null_ )); -DATA(insert OID = 2957 ( uuid_ge PGNSP PGUID 12 1 0 0 0 f f f t t f i s 2 0 16 "2950 2950" _null_ _null_ _null_ _null_ _null_ uuid_ge _null_ _null_ _null_ )); -DATA(insert OID = 2958 ( uuid_gt PGNSP PGUID 12 1 0 0 0 f f f t t f i s 2 0 16 "2950 2950" _null_ _null_ _null_ _null_ _null_ uuid_gt _null_ _null_ _null_ )); -DATA(insert OID = 2959 ( uuid_ne PGNSP PGUID 12 1 0 0 0 f f f t t f i s 2 0 16 "2950 2950" _null_ _null_ _null_ _null_ _null_ uuid_ne _null_ _null_ _null_ )); -DATA(insert OID = 2960 ( uuid_cmp PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 23 "2950 2950" _null_ _null_ _null_ _null_ _null_ uuid_cmp _null_ _null_ _null_ )); -DESCR("less-equal-greater"); -DATA(insert OID = 3300 ( uuid_sortsupport PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 2278 "2281" _null_ _null_ _null_ _null_ _null_ uuid_sortsupport _null_ _null_ _null_ )); -DESCR("sort support"); -DATA(insert OID = 2961 ( uuid_recv PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 2950 "2281" _null_ _null_ _null_ _null_ _null_ uuid_recv _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 2962 ( uuid_send PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 17 "2950" _null_ _null_ _null_ _null_ _null_ uuid_send _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 2963 ( uuid_hash PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 23 "2950" _null_ _null_ _null_ _null_ _null_ uuid_hash _null_ _null_ _null_ )); -DESCR("hash"); - -/* pg_lsn */ -DATA(insert OID = 3229 ( pg_lsn_in PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 3220 "2275" _null_ _null_ _null_ _null_ _null_ pg_lsn_in _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 3230 ( pg_lsn_out PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 2275 "3220" _null_ _null_ _null_ _null_ _null_ pg_lsn_out _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 3231 ( pg_lsn_lt PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 16 "3220 3220" _null_ _null_ _null_ _null_ _null_ pg_lsn_lt _null_ _null_ _null_ )); -DATA(insert OID = 3232 ( pg_lsn_le PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 16 "3220 3220" _null_ _null_ _null_ _null_ _null_ pg_lsn_le _null_ _null_ _null_ )); -DATA(insert OID = 3233 ( pg_lsn_eq PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 16 "3220 3220" _null_ _null_ _null_ _null_ _null_ pg_lsn_eq _null_ _null_ _null_ )); -DATA(insert OID = 3234 ( pg_lsn_ge PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 16 "3220 3220" _null_ _null_ _null_ _null_ _null_ pg_lsn_ge _null_ _null_ _null_ )); -DATA(insert OID = 3235 ( pg_lsn_gt PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 16 "3220 3220" _null_ _null_ _null_ _null_ _null_ pg_lsn_gt _null_ _null_ _null_ )); -DATA(insert OID = 3236 ( pg_lsn_ne PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 16 "3220 3220" _null_ _null_ _null_ _null_ _null_ pg_lsn_ne _null_ _null_ _null_ )); -DATA(insert OID = 3237 ( pg_lsn_mi PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 1700 "3220 3220" _null_ _null_ _null_ _null_ _null_ pg_lsn_mi _null_ _null_ _null_ )); -DATA(insert OID = 3238 ( pg_lsn_recv PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 3220 "2281" _null_ _null_ _null_ _null_ _null_ pg_lsn_recv _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 3239 ( pg_lsn_send PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 17 "3220" _null_ _null_ _null_ _null_ _null_ pg_lsn_send _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 3251 ( pg_lsn_cmp PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 23 "3220 3220" _null_ _null_ _null_ _null_ _null_ pg_lsn_cmp _null_ _null_ _null_ )); -DESCR("less-equal-greater"); -DATA(insert OID = 3252 ( pg_lsn_hash PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 23 "3220" _null_ _null_ _null_ _null_ _null_ pg_lsn_hash _null_ _null_ _null_ )); -DESCR("hash"); - -/* enum related procs */ -DATA(insert OID = 3504 ( anyenum_in PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 3500 "2275" _null_ _null_ _null_ _null_ _null_ anyenum_in _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 3505 ( anyenum_out PGNSP PGUID 12 1 0 0 0 f f f f t f s s 1 0 2275 "3500" _null_ _null_ _null_ _null_ _null_ anyenum_out _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 3506 ( enum_in PGNSP PGUID 12 1 0 0 0 f f f f t f s s 2 0 3500 "2275 26" _null_ _null_ _null_ _null_ _null_ enum_in _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 3507 ( enum_out PGNSP PGUID 12 1 0 0 0 f f f f t f s s 1 0 2275 "3500" _null_ _null_ _null_ _null_ _null_ enum_out _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 3508 ( enum_eq PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 16 "3500 3500" _null_ _null_ _null_ _null_ _null_ enum_eq _null_ _null_ _null_ )); -DATA(insert OID = 3509 ( enum_ne PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 16 "3500 3500" _null_ _null_ _null_ _null_ _null_ enum_ne _null_ _null_ _null_ )); -DATA(insert OID = 3510 ( enum_lt PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 16 "3500 3500" _null_ _null_ _null_ _null_ _null_ enum_lt _null_ _null_ _null_ )); -DATA(insert OID = 3511 ( enum_gt PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 16 "3500 3500" _null_ _null_ _null_ _null_ _null_ enum_gt _null_ _null_ _null_ )); -DATA(insert OID = 3512 ( enum_le PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 16 "3500 3500" _null_ _null_ _null_ _null_ _null_ enum_le _null_ _null_ _null_ )); -DATA(insert OID = 3513 ( enum_ge PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 16 "3500 3500" _null_ _null_ _null_ _null_ _null_ enum_ge _null_ _null_ _null_ )); -DATA(insert OID = 3514 ( enum_cmp PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 23 "3500 3500" _null_ _null_ _null_ _null_ _null_ enum_cmp _null_ _null_ _null_ )); -DESCR("less-equal-greater"); -DATA(insert OID = 3515 ( hashenum PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 23 "3500" _null_ _null_ _null_ _null_ _null_ hashenum _null_ _null_ _null_ )); -DESCR("hash"); -DATA(insert OID = 3524 ( enum_smaller PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 3500 "3500 3500" _null_ _null_ _null_ _null_ _null_ enum_smaller _null_ _null_ _null_ )); -DESCR("smaller of two"); -DATA(insert OID = 3525 ( enum_larger PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 3500 "3500 3500" _null_ _null_ _null_ _null_ _null_ enum_larger _null_ _null_ _null_ )); -DESCR("larger of two"); -DATA(insert OID = 3526 ( max PGNSP PGUID 12 1 0 0 0 t f f f f f i s 1 0 3500 "3500" _null_ _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ )); -DESCR("maximum value of all enum input values"); -DATA(insert OID = 3527 ( min PGNSP PGUID 12 1 0 0 0 t f f f f f i s 1 0 3500 "3500" _null_ _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ )); -DESCR("minimum value of all enum input values"); -DATA(insert OID = 3528 ( enum_first PGNSP PGUID 12 1 0 0 0 f f f f f f s s 1 0 3500 "3500" _null_ _null_ _null_ _null_ _null_ enum_first _null_ _null_ _null_ )); -DESCR("first value of the input enum type"); -DATA(insert OID = 3529 ( enum_last PGNSP PGUID 12 1 0 0 0 f f f f f f s s 1 0 3500 "3500" _null_ _null_ _null_ _null_ _null_ enum_last _null_ _null_ _null_ )); -DESCR("last value of the input enum type"); -DATA(insert OID = 3530 ( enum_range PGNSP PGUID 12 1 0 0 0 f f f f f f s s 2 0 2277 "3500 3500" _null_ _null_ _null_ _null_ _null_ enum_range_bounds _null_ _null_ _null_ )); -DESCR("range between the two given enum values, as an ordered array"); -DATA(insert OID = 3531 ( enum_range PGNSP PGUID 12 1 0 0 0 f f f f f f s s 1 0 2277 "3500" _null_ _null_ _null_ _null_ _null_ enum_range_all _null_ _null_ _null_ )); -DESCR("range of the given enum type, as an ordered array"); -DATA(insert OID = 3532 ( enum_recv PGNSP PGUID 12 1 0 0 0 f f f f t f s s 2 0 3500 "2281 26" _null_ _null_ _null_ _null_ _null_ enum_recv _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 3533 ( enum_send PGNSP PGUID 12 1 0 0 0 f f f f t f s s 1 0 17 "3500" _null_ _null_ _null_ _null_ _null_ enum_send _null_ _null_ _null_ )); -DESCR("I/O"); - -/* text search stuff */ -DATA(insert OID = 3610 ( tsvectorin PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 3614 "2275" _null_ _null_ _null_ _null_ _null_ tsvectorin _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 3639 ( tsvectorrecv PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 3614 "2281" _null_ _null_ _null_ _null_ _null_ tsvectorrecv _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 3611 ( tsvectorout PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 2275 "3614" _null_ _null_ _null_ _null_ _null_ tsvectorout _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 3638 ( tsvectorsend PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 17 "3614" _null_ _null_ _null_ _null_ _null_ tsvectorsend _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 3612 ( tsqueryin PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 3615 "2275" _null_ _null_ _null_ _null_ _null_ tsqueryin _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 3641 ( tsqueryrecv PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 3615 "2281" _null_ _null_ _null_ _null_ _null_ tsqueryrecv _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 3613 ( tsqueryout PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 2275 "3615" _null_ _null_ _null_ _null_ _null_ tsqueryout _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 3640 ( tsquerysend PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 17 "3615" _null_ _null_ _null_ _null_ _null_ tsquerysend _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 3646 ( gtsvectorin PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 3642 "2275" _null_ _null_ _null_ _null_ _null_ gtsvectorin _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 3647 ( gtsvectorout PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 2275 "3642" _null_ _null_ _null_ _null_ _null_ gtsvectorout _null_ _null_ _null_ )); -DESCR("I/O"); - -DATA(insert OID = 3616 ( tsvector_lt PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 16 "3614 3614" _null_ _null_ _null_ _null_ _null_ tsvector_lt _null_ _null_ _null_ )); -DATA(insert OID = 3617 ( tsvector_le PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 16 "3614 3614" _null_ _null_ _null_ _null_ _null_ tsvector_le _null_ _null_ _null_ )); -DATA(insert OID = 3618 ( tsvector_eq PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 16 "3614 3614" _null_ _null_ _null_ _null_ _null_ tsvector_eq _null_ _null_ _null_ )); -DATA(insert OID = 3619 ( tsvector_ne PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 16 "3614 3614" _null_ _null_ _null_ _null_ _null_ tsvector_ne _null_ _null_ _null_ )); -DATA(insert OID = 3620 ( tsvector_ge PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 16 "3614 3614" _null_ _null_ _null_ _null_ _null_ tsvector_ge _null_ _null_ _null_ )); -DATA(insert OID = 3621 ( tsvector_gt PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 16 "3614 3614" _null_ _null_ _null_ _null_ _null_ tsvector_gt _null_ _null_ _null_ )); -DATA(insert OID = 3622 ( tsvector_cmp PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 23 "3614 3614" _null_ _null_ _null_ _null_ _null_ tsvector_cmp _null_ _null_ _null_ )); -DESCR("less-equal-greater"); - -DATA(insert OID = 3711 ( length PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 23 "3614" _null_ _null_ _null_ _null_ _null_ tsvector_length _null_ _null_ _null_ )); -DESCR("number of lexemes"); -DATA(insert OID = 3623 ( strip PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 3614 "3614" _null_ _null_ _null_ _null_ _null_ tsvector_strip _null_ _null_ _null_ )); -DESCR("strip position information"); -DATA(insert OID = 3624 ( setweight PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 3614 "3614 18" _null_ _null_ _null_ _null_ _null_ tsvector_setweight _null_ _null_ _null_ )); -DESCR("set given weight for whole tsvector"); -DATA(insert OID = 3320 ( setweight PGNSP PGUID 12 1 0 0 0 f f f f t f i s 3 0 3614 "3614 18 1009" _null_ _null_ _null_ _null_ _null_ tsvector_setweight_by_filter _null_ _null_ _null_ )); -DESCR("set given weight for given lexemes"); -DATA(insert OID = 3625 ( tsvector_concat PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 3614 "3614 3614" _null_ _null_ _null_ _null_ _null_ tsvector_concat _null_ _null_ _null_ )); -DATA(insert OID = 3321 ( ts_delete PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 3614 "3614 25" _null_ _null_ _null_ _null_ _null_ tsvector_delete_str _null_ _null_ _null_ )); -DESCR("delete lexeme"); -DATA(insert OID = 3323 ( ts_delete PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 3614 "3614 1009" _null_ _null_ _null_ _null_ _null_ tsvector_delete_arr _null_ _null_ _null_ )); -DESCR("delete given lexemes"); -DATA(insert OID = 3322 ( unnest PGNSP PGUID 12 1 10 0 0 f f f f t t i s 1 0 2249 "3614" "{3614,25,1005,1009}" "{i,o,o,o}" "{tsvector,lexeme,positions,weights}" _null_ _null_ tsvector_unnest _null_ _null_ _null_ )); -DESCR("expand tsvector to set of rows"); -DATA(insert OID = 3326 ( tsvector_to_array PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 1009 "3614" _null_ _null_ _null_ _null_ _null_ tsvector_to_array _null_ _null_ _null_ )); -DESCR("convert tsvector to array of lexemes"); -DATA(insert OID = 3327 ( array_to_tsvector PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 3614 "1009" _null_ _null_ _null_ _null_ _null_ array_to_tsvector _null_ _null_ _null_ )); -DESCR("build tsvector from array of lexemes"); -DATA(insert OID = 3319 ( ts_filter PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 3614 "3614 1002" _null_ _null_ _null_ _null_ _null_ tsvector_filter _null_ _null_ _null_ )); -DESCR("delete lexemes that do not have one of the given weights"); - -DATA(insert OID = 3634 ( ts_match_vq PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 16 "3614 3615" _null_ _null_ _null_ _null_ _null_ ts_match_vq _null_ _null_ _null_ )); -DATA(insert OID = 3635 ( ts_match_qv PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 16 "3615 3614" _null_ _null_ _null_ _null_ _null_ ts_match_qv _null_ _null_ _null_ )); -DATA(insert OID = 3760 ( ts_match_tt PGNSP PGUID 12 100 0 0 0 f f f f t f s s 2 0 16 "25 25" _null_ _null_ _null_ _null_ _null_ ts_match_tt _null_ _null_ _null_ )); -DATA(insert OID = 3761 ( ts_match_tq PGNSP PGUID 12 100 0 0 0 f f f f t f s s 2 0 16 "25 3615" _null_ _null_ _null_ _null_ _null_ ts_match_tq _null_ _null_ _null_ )); - -DATA(insert OID = 3648 ( gtsvector_compress PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 2281 "2281" _null_ _null_ _null_ _null_ _null_ gtsvector_compress _null_ _null_ _null_ )); -DESCR("GiST tsvector support"); -DATA(insert OID = 3649 ( gtsvector_decompress PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 2281 "2281" _null_ _null_ _null_ _null_ _null_ gtsvector_decompress _null_ _null_ _null_ )); -DESCR("GiST tsvector support"); -DATA(insert OID = 3650 ( gtsvector_picksplit PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 2281 "2281 2281" _null_ _null_ _null_ _null_ _null_ gtsvector_picksplit _null_ _null_ _null_ )); -DESCR("GiST tsvector support"); -DATA(insert OID = 3651 ( gtsvector_union PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 3642 "2281 2281" _null_ _null_ _null_ _null_ _null_ gtsvector_union _null_ _null_ _null_ )); -DESCR("GiST tsvector support"); -DATA(insert OID = 3652 ( gtsvector_same PGNSP PGUID 12 1 0 0 0 f f f f t f i s 3 0 2281 "3642 3642 2281" _null_ _null_ _null_ _null_ _null_ gtsvector_same _null_ _null_ _null_ )); -DESCR("GiST tsvector support"); -DATA(insert OID = 3653 ( gtsvector_penalty PGNSP PGUID 12 1 0 0 0 f f f f t f i s 3 0 2281 "2281 2281 2281" _null_ _null_ _null_ _null_ _null_ gtsvector_penalty _null_ _null_ _null_ )); -DESCR("GiST tsvector support"); -DATA(insert OID = 3654 ( gtsvector_consistent PGNSP PGUID 12 1 0 0 0 f f f f t f i s 5 0 16 "2281 3614 21 26 2281" _null_ _null_ _null_ _null_ _null_ gtsvector_consistent _null_ _null_ _null_ )); -DESCR("GiST tsvector support"); -DATA(insert OID = 3790 ( gtsvector_consistent PGNSP PGUID 12 1 0 0 0 f f f f t f i s 5 0 16 "2281 3642 23 26 2281" _null_ _null_ _null_ _null_ _null_ gtsvector_consistent_oldsig _null_ _null_ _null_ )); -DESCR("GiST tsvector support (obsolete)"); - -DATA(insert OID = 3656 ( gin_extract_tsvector PGNSP PGUID 12 1 0 0 0 f f f f t f i s 3 0 2281 "3614 2281 2281" _null_ _null_ _null_ _null_ _null_ gin_extract_tsvector _null_ _null_ _null_ )); -DESCR("GIN tsvector support"); -DATA(insert OID = 3657 ( gin_extract_tsquery PGNSP PGUID 12 1 0 0 0 f f f f t f i s 7 0 2281 "3614 2281 21 2281 2281 2281 2281" _null_ _null_ _null_ _null_ _null_ gin_extract_tsquery _null_ _null_ _null_ )); -DESCR("GIN tsvector support"); -DATA(insert OID = 3658 ( gin_tsquery_consistent PGNSP PGUID 12 1 0 0 0 f f f f t f i s 8 0 16 "2281 21 3614 23 2281 2281 2281 2281" _null_ _null_ _null_ _null_ _null_ gin_tsquery_consistent _null_ _null_ _null_ )); -DESCR("GIN tsvector support"); -DATA(insert OID = 3921 ( gin_tsquery_triconsistent PGNSP PGUID 12 1 0 0 0 f f f f t f i s 7 0 18 "2281 21 3614 23 2281 2281 2281" _null_ _null_ _null_ _null_ _null_ gin_tsquery_triconsistent _null_ _null_ _null_ )); -DESCR("GIN tsvector support"); -DATA(insert OID = 3724 ( gin_cmp_tslexeme PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 23 "25 25" _null_ _null_ _null_ _null_ _null_ gin_cmp_tslexeme _null_ _null_ _null_ )); -DESCR("GIN tsvector support"); -DATA(insert OID = 2700 ( gin_cmp_prefix PGNSP PGUID 12 1 0 0 0 f f f f t f i s 4 0 23 "25 25 21 2281" _null_ _null_ _null_ _null_ _null_ gin_cmp_prefix _null_ _null_ _null_ )); -DESCR("GIN tsvector support"); -DATA(insert OID = 3077 ( gin_extract_tsvector PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 2281 "3614 2281" _null_ _null_ _null_ _null_ _null_ gin_extract_tsvector_2args _null_ _null_ _null_ )); -DESCR("GIN tsvector support (obsolete)"); -DATA(insert OID = 3087 ( gin_extract_tsquery PGNSP PGUID 12 1 0 0 0 f f f f t f i s 5 0 2281 "3615 2281 21 2281 2281" _null_ _null_ _null_ _null_ _null_ gin_extract_tsquery_5args _null_ _null_ _null_ )); -DESCR("GIN tsvector support (obsolete)"); -DATA(insert OID = 3088 ( gin_tsquery_consistent PGNSP PGUID 12 1 0 0 0 f f f f t f i s 6 0 16 "2281 21 3615 23 2281 2281" _null_ _null_ _null_ _null_ _null_ gin_tsquery_consistent_6args _null_ _null_ _null_ )); -DESCR("GIN tsvector support (obsolete)"); -DATA(insert OID = 3791 ( gin_extract_tsquery PGNSP PGUID 12 1 0 0 0 f f f f t f i s 7 0 2281 "3615 2281 21 2281 2281 2281 2281" _null_ _null_ _null_ _null_ _null_ gin_extract_tsquery_oldsig _null_ _null_ _null_ )); -DESCR("GIN tsvector support (obsolete)"); -DATA(insert OID = 3792 ( gin_tsquery_consistent PGNSP PGUID 12 1 0 0 0 f f f f t f i s 8 0 16 "2281 21 3615 23 2281 2281 2281 2281" _null_ _null_ _null_ _null_ _null_ gin_tsquery_consistent_oldsig _null_ _null_ _null_ )); -DESCR("GIN tsvector support (obsolete)"); - -DATA(insert OID = 3789 ( gin_clean_pending_list PGNSP PGUID 12 1 0 0 0 f f f f t f v u 1 0 20 "2205" _null_ _null_ _null_ _null_ _null_ gin_clean_pending_list _null_ _null_ _null_ )); -DESCR("clean up GIN pending list"); - -DATA(insert OID = 3662 ( tsquery_lt PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 16 "3615 3615" _null_ _null_ _null_ _null_ _null_ tsquery_lt _null_ _null_ _null_ )); -DATA(insert OID = 3663 ( tsquery_le PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 16 "3615 3615" _null_ _null_ _null_ _null_ _null_ tsquery_le _null_ _null_ _null_ )); -DATA(insert OID = 3664 ( tsquery_eq PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 16 "3615 3615" _null_ _null_ _null_ _null_ _null_ tsquery_eq _null_ _null_ _null_ )); -DATA(insert OID = 3665 ( tsquery_ne PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 16 "3615 3615" _null_ _null_ _null_ _null_ _null_ tsquery_ne _null_ _null_ _null_ )); -DATA(insert OID = 3666 ( tsquery_ge PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 16 "3615 3615" _null_ _null_ _null_ _null_ _null_ tsquery_ge _null_ _null_ _null_ )); -DATA(insert OID = 3667 ( tsquery_gt PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 16 "3615 3615" _null_ _null_ _null_ _null_ _null_ tsquery_gt _null_ _null_ _null_ )); -DATA(insert OID = 3668 ( tsquery_cmp PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 23 "3615 3615" _null_ _null_ _null_ _null_ _null_ tsquery_cmp _null_ _null_ _null_ )); -DESCR("less-equal-greater"); - -DATA(insert OID = 3669 ( tsquery_and PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 3615 "3615 3615" _null_ _null_ _null_ _null_ _null_ tsquery_and _null_ _null_ _null_ )); -DATA(insert OID = 3670 ( tsquery_or PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 3615 "3615 3615" _null_ _null_ _null_ _null_ _null_ tsquery_or _null_ _null_ _null_ )); -DATA(insert OID = 5003 ( tsquery_phrase PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 3615 "3615 3615" _null_ _null_ _null_ _null_ _null_ tsquery_phrase _null_ _null_ _null_ )); -DATA(insert OID = 5004 ( tsquery_phrase PGNSP PGUID 12 1 0 0 0 f f f f t f i s 3 0 3615 "3615 3615 23" _null_ _null_ _null_ _null_ _null_ tsquery_phrase_distance _null_ _null_ _null_ )); -DESCR("phrase-concatenate with distance"); -DATA(insert OID = 3671 ( tsquery_not PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 3615 "3615" _null_ _null_ _null_ _null_ _null_ tsquery_not _null_ _null_ _null_ )); - -DATA(insert OID = 3691 ( tsq_mcontains PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 16 "3615 3615" _null_ _null_ _null_ _null_ _null_ tsq_mcontains _null_ _null_ _null_ )); -DATA(insert OID = 3692 ( tsq_mcontained PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 16 "3615 3615" _null_ _null_ _null_ _null_ _null_ tsq_mcontained _null_ _null_ _null_ )); - -DATA(insert OID = 3672 ( numnode PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 23 "3615" _null_ _null_ _null_ _null_ _null_ tsquery_numnode _null_ _null_ _null_ )); -DESCR("number of nodes"); -DATA(insert OID = 3673 ( querytree PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 25 "3615" _null_ _null_ _null_ _null_ _null_ tsquerytree _null_ _null_ _null_ )); -DESCR("show real useful query for GiST index"); - -DATA(insert OID = 3684 ( ts_rewrite PGNSP PGUID 12 1 0 0 0 f f f f t f i s 3 0 3615 "3615 3615 3615" _null_ _null_ _null_ _null_ _null_ tsquery_rewrite _null_ _null_ _null_ )); -DESCR("rewrite tsquery"); -DATA(insert OID = 3685 ( ts_rewrite PGNSP PGUID 12 100 0 0 0 f f f f t f v u 2 0 3615 "3615 25" _null_ _null_ _null_ _null_ _null_ tsquery_rewrite_query _null_ _null_ _null_ )); -DESCR("rewrite tsquery"); - -DATA(insert OID = 3695 ( gtsquery_compress PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 2281 "2281" _null_ _null_ _null_ _null_ _null_ gtsquery_compress _null_ _null_ _null_ )); -DESCR("GiST tsquery support"); -DATA(insert OID = 3696 ( gtsquery_decompress PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 2281 "2281" _null_ _null_ _null_ _null_ _null_ gtsquery_decompress _null_ _null_ _null_ )); -DESCR("GiST tsquery support"); -DATA(insert OID = 3697 ( gtsquery_picksplit PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 2281 "2281 2281" _null_ _null_ _null_ _null_ _null_ gtsquery_picksplit _null_ _null_ _null_ )); -DESCR("GiST tsquery support"); -DATA(insert OID = 3698 ( gtsquery_union PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 20 "2281 2281" _null_ _null_ _null_ _null_ _null_ gtsquery_union _null_ _null_ _null_ )); -DESCR("GiST tsquery support"); -DATA(insert OID = 3699 ( gtsquery_same PGNSP PGUID 12 1 0 0 0 f f f f t f i s 3 0 2281 "20 20 2281" _null_ _null_ _null_ _null_ _null_ gtsquery_same _null_ _null_ _null_ )); -DESCR("GiST tsquery support"); -DATA(insert OID = 3700 ( gtsquery_penalty PGNSP PGUID 12 1 0 0 0 f f f f t f i s 3 0 2281 "2281 2281 2281" _null_ _null_ _null_ _null_ _null_ gtsquery_penalty _null_ _null_ _null_ )); -DESCR("GiST tsquery support"); -DATA(insert OID = 3701 ( gtsquery_consistent PGNSP PGUID 12 1 0 0 0 f f f f t f i s 5 0 16 "2281 3615 21 26 2281" _null_ _null_ _null_ _null_ _null_ gtsquery_consistent _null_ _null_ _null_ )); -DESCR("GiST tsquery support"); -DATA(insert OID = 3793 ( gtsquery_consistent PGNSP PGUID 12 1 0 0 0 f f f f t f i s 5 0 16 "2281 2281 23 26 2281" _null_ _null_ _null_ _null_ _null_ gtsquery_consistent_oldsig _null_ _null_ _null_ )); -DESCR("GiST tsquery support (obsolete)"); - -DATA(insert OID = 3686 ( tsmatchsel PGNSP PGUID 12 1 0 0 0 f f f f t f s s 4 0 701 "2281 26 2281 23" _null_ _null_ _null_ _null_ _null_ tsmatchsel _null_ _null_ _null_ )); -DESCR("restriction selectivity of tsvector @@ tsquery"); -DATA(insert OID = 3687 ( tsmatchjoinsel PGNSP PGUID 12 1 0 0 0 f f f f t f s s 5 0 701 "2281 26 2281 21 2281" _null_ _null_ _null_ _null_ _null_ tsmatchjoinsel _null_ _null_ _null_ )); -DESCR("join selectivity of tsvector @@ tsquery"); -DATA(insert OID = 3688 ( ts_typanalyze PGNSP PGUID 12 1 0 0 0 f f f f t f s s 1 0 16 "2281" _null_ _null_ _null_ _null_ _null_ ts_typanalyze _null_ _null_ _null_ )); -DESCR("tsvector typanalyze"); - -DATA(insert OID = 3689 ( ts_stat PGNSP PGUID 12 10 10000 0 0 f f f f t t v u 1 0 2249 "25" "{25,25,23,23}" "{i,o,o,o}" "{query,word,ndoc,nentry}" _null_ _null_ ts_stat1 _null_ _null_ _null_ )); -DESCR("statistics of tsvector column"); -DATA(insert OID = 3690 ( ts_stat PGNSP PGUID 12 10 10000 0 0 f f f f t t v u 2 0 2249 "25 25" "{25,25,25,23,23}" "{i,i,o,o,o}" "{query,weights,word,ndoc,nentry}" _null_ _null_ ts_stat2 _null_ _null_ _null_ )); -DESCR("statistics of tsvector column"); - -DATA(insert OID = 3703 ( ts_rank PGNSP PGUID 12 1 0 0 0 f f f f t f i s 4 0 700 "1021 3614 3615 23" _null_ _null_ _null_ _null_ _null_ ts_rank_wttf _null_ _null_ _null_ )); -DESCR("relevance"); -DATA(insert OID = 3704 ( ts_rank PGNSP PGUID 12 1 0 0 0 f f f f t f i s 3 0 700 "1021 3614 3615" _null_ _null_ _null_ _null_ _null_ ts_rank_wtt _null_ _null_ _null_ )); -DESCR("relevance"); -DATA(insert OID = 3705 ( ts_rank PGNSP PGUID 12 1 0 0 0 f f f f t f i s 3 0 700 "3614 3615 23" _null_ _null_ _null_ _null_ _null_ ts_rank_ttf _null_ _null_ _null_ )); -DESCR("relevance"); -DATA(insert OID = 3706 ( ts_rank PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 700 "3614 3615" _null_ _null_ _null_ _null_ _null_ ts_rank_tt _null_ _null_ _null_ )); -DESCR("relevance"); -DATA(insert OID = 3707 ( ts_rank_cd PGNSP PGUID 12 1 0 0 0 f f f f t f i s 4 0 700 "1021 3614 3615 23" _null_ _null_ _null_ _null_ _null_ ts_rankcd_wttf _null_ _null_ _null_ )); -DESCR("relevance"); -DATA(insert OID = 3708 ( ts_rank_cd PGNSP PGUID 12 1 0 0 0 f f f f t f i s 3 0 700 "1021 3614 3615" _null_ _null_ _null_ _null_ _null_ ts_rankcd_wtt _null_ _null_ _null_ )); -DESCR("relevance"); -DATA(insert OID = 3709 ( ts_rank_cd PGNSP PGUID 12 1 0 0 0 f f f f t f i s 3 0 700 "3614 3615 23" _null_ _null_ _null_ _null_ _null_ ts_rankcd_ttf _null_ _null_ _null_ )); -DESCR("relevance"); -DATA(insert OID = 3710 ( ts_rank_cd PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 700 "3614 3615" _null_ _null_ _null_ _null_ _null_ ts_rankcd_tt _null_ _null_ _null_ )); -DESCR("relevance"); - -DATA(insert OID = 3713 ( ts_token_type PGNSP PGUID 12 1 16 0 0 f f f f t t i s 1 0 2249 "26" "{26,23,25,25}" "{i,o,o,o}" "{parser_oid,tokid,alias,description}" _null_ _null_ ts_token_type_byid _null_ _null_ _null_ )); -DESCR("get parser's token types"); -DATA(insert OID = 3714 ( ts_token_type PGNSP PGUID 12 1 16 0 0 f f f f t t s s 1 0 2249 "25" "{25,23,25,25}" "{i,o,o,o}" "{parser_name,tokid,alias,description}" _null_ _null_ ts_token_type_byname _null_ _null_ _null_ )); -DESCR("get parser's token types"); -DATA(insert OID = 3715 ( ts_parse PGNSP PGUID 12 1 1000 0 0 f f f f t t i s 2 0 2249 "26 25" "{26,25,23,25}" "{i,i,o,o}" "{parser_oid,txt,tokid,token}" _null_ _null_ ts_parse_byid _null_ _null_ _null_ )); -DESCR("parse text to tokens"); -DATA(insert OID = 3716 ( ts_parse PGNSP PGUID 12 1 1000 0 0 f f f f t t s s 2 0 2249 "25 25" "{25,25,23,25}" "{i,i,o,o}" "{parser_name,txt,tokid,token}" _null_ _null_ ts_parse_byname _null_ _null_ _null_ )); -DESCR("parse text to tokens"); - -DATA(insert OID = 3717 ( prsd_start PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 2281 "2281 23" _null_ _null_ _null_ _null_ _null_ prsd_start _null_ _null_ _null_ )); -DESCR("(internal)"); -DATA(insert OID = 3718 ( prsd_nexttoken PGNSP PGUID 12 1 0 0 0 f f f f t f i s 3 0 2281 "2281 2281 2281" _null_ _null_ _null_ _null_ _null_ prsd_nexttoken _null_ _null_ _null_ )); -DESCR("(internal)"); -DATA(insert OID = 3719 ( prsd_end PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 2278 "2281" _null_ _null_ _null_ _null_ _null_ prsd_end _null_ _null_ _null_ )); -DESCR("(internal)"); -DATA(insert OID = 3720 ( prsd_headline PGNSP PGUID 12 1 0 0 0 f f f f t f i s 3 0 2281 "2281 2281 3615" _null_ _null_ _null_ _null_ _null_ prsd_headline _null_ _null_ _null_ )); -DESCR("(internal)"); -DATA(insert OID = 3721 ( prsd_lextype PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 2281 "2281" _null_ _null_ _null_ _null_ _null_ prsd_lextype _null_ _null_ _null_ )); -DESCR("(internal)"); - -DATA(insert OID = 3723 ( ts_lexize PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 1009 "3769 25" _null_ _null_ _null_ _null_ _null_ ts_lexize _null_ _null_ _null_ )); -DESCR("normalize one word by dictionary"); - -DATA(insert OID = 3725 ( dsimple_init PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 2281 "2281" _null_ _null_ _null_ _null_ _null_ dsimple_init _null_ _null_ _null_ )); -DESCR("(internal)"); -DATA(insert OID = 3726 ( dsimple_lexize PGNSP PGUID 12 1 0 0 0 f f f f t f i s 4 0 2281 "2281 2281 2281 2281" _null_ _null_ _null_ _null_ _null_ dsimple_lexize _null_ _null_ _null_ )); -DESCR("(internal)"); - -DATA(insert OID = 3728 ( dsynonym_init PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 2281 "2281" _null_ _null_ _null_ _null_ _null_ dsynonym_init _null_ _null_ _null_ )); -DESCR("(internal)"); -DATA(insert OID = 3729 ( dsynonym_lexize PGNSP PGUID 12 1 0 0 0 f f f f t f i s 4 0 2281 "2281 2281 2281 2281" _null_ _null_ _null_ _null_ _null_ dsynonym_lexize _null_ _null_ _null_ )); -DESCR("(internal)"); - -DATA(insert OID = 3731 ( dispell_init PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 2281 "2281" _null_ _null_ _null_ _null_ _null_ dispell_init _null_ _null_ _null_ )); -DESCR("(internal)"); -DATA(insert OID = 3732 ( dispell_lexize PGNSP PGUID 12 1 0 0 0 f f f f t f i s 4 0 2281 "2281 2281 2281 2281" _null_ _null_ _null_ _null_ _null_ dispell_lexize _null_ _null_ _null_ )); -DESCR("(internal)"); - -DATA(insert OID = 3740 ( thesaurus_init PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 2281 "2281" _null_ _null_ _null_ _null_ _null_ thesaurus_init _null_ _null_ _null_ )); -DESCR("(internal)"); -DATA(insert OID = 3741 ( thesaurus_lexize PGNSP PGUID 12 1 0 0 0 f f f f t f i s 4 0 2281 "2281 2281 2281 2281" _null_ _null_ _null_ _null_ _null_ thesaurus_lexize _null_ _null_ _null_ )); -DESCR("(internal)"); - -DATA(insert OID = 3743 ( ts_headline PGNSP PGUID 12 100 0 0 0 f f f f t f i s 4 0 25 "3734 25 3615 25" _null_ _null_ _null_ _null_ _null_ ts_headline_byid_opt _null_ _null_ _null_ )); -DESCR("generate headline"); -DATA(insert OID = 3744 ( ts_headline PGNSP PGUID 12 100 0 0 0 f f f f t f i s 3 0 25 "3734 25 3615" _null_ _null_ _null_ _null_ _null_ ts_headline_byid _null_ _null_ _null_ )); -DESCR("generate headline"); -DATA(insert OID = 3754 ( ts_headline PGNSP PGUID 12 100 0 0 0 f f f f t f s s 3 0 25 "25 3615 25" _null_ _null_ _null_ _null_ _null_ ts_headline_opt _null_ _null_ _null_ )); -DESCR("generate headline"); -DATA(insert OID = 3755 ( ts_headline PGNSP PGUID 12 100 0 0 0 f f f f t f s s 2 0 25 "25 3615" _null_ _null_ _null_ _null_ _null_ ts_headline _null_ _null_ _null_ )); -DESCR("generate headline"); - -DATA(insert OID = 4201 ( ts_headline PGNSP PGUID 12 100 0 0 0 f f f f t f i s 4 0 3802 "3734 3802 3615 25" _null_ _null_ _null_ _null_ _null_ ts_headline_jsonb_byid_opt _null_ _null_ _null_ )); -DESCR("generate headline from jsonb"); -DATA(insert OID = 4202 ( ts_headline PGNSP PGUID 12 100 0 0 0 f f f f t f i s 3 0 3802 "3734 3802 3615" _null_ _null_ _null_ _null_ _null_ ts_headline_jsonb_byid _null_ _null_ _null_ )); -DESCR("generate headline from jsonb"); -DATA(insert OID = 4203 ( ts_headline PGNSP PGUID 12 100 0 0 0 f f f f t f s s 3 0 3802 "3802 3615 25" _null_ _null_ _null_ _null_ _null_ ts_headline_jsonb_opt _null_ _null_ _null_ )); -DESCR("generate headline from jsonb"); -DATA(insert OID = 4204 ( ts_headline PGNSP PGUID 12 100 0 0 0 f f f f t f s s 2 0 3802 "3802 3615" _null_ _null_ _null_ _null_ _null_ ts_headline_jsonb _null_ _null_ _null_ )); -DESCR("generate headline from jsonb"); - -DATA(insert OID = 4205 ( ts_headline PGNSP PGUID 12 100 0 0 0 f f f f t f i s 4 0 114 "3734 114 3615 25" _null_ _null_ _null_ _null_ _null_ ts_headline_json_byid_opt _null_ _null_ _null_ )); -DESCR("generate headline from json"); -DATA(insert OID = 4206 ( ts_headline PGNSP PGUID 12 100 0 0 0 f f f f t f i s 3 0 114 "3734 114 3615" _null_ _null_ _null_ _null_ _null_ ts_headline_json_byid _null_ _null_ _null_ )); -DESCR("generate headline from json"); -DATA(insert OID = 4207 ( ts_headline PGNSP PGUID 12 100 0 0 0 f f f f t f s s 3 0 114 "114 3615 25" _null_ _null_ _null_ _null_ _null_ ts_headline_json_opt _null_ _null_ _null_ )); -DESCR("generate headline from json"); -DATA(insert OID = 4208 ( ts_headline PGNSP PGUID 12 100 0 0 0 f f f f t f s s 2 0 114 "114 3615" _null_ _null_ _null_ _null_ _null_ ts_headline_json _null_ _null_ _null_ )); -DESCR("generate headline from json"); - -DATA(insert OID = 3745 ( to_tsvector PGNSP PGUID 12 100 0 0 0 f f f f t f i s 2 0 3614 "3734 25" _null_ _null_ _null_ _null_ _null_ to_tsvector_byid _null_ _null_ _null_ )); -DESCR("transform to tsvector"); -DATA(insert OID = 3746 ( to_tsquery PGNSP PGUID 12 100 0 0 0 f f f f t f i s 2 0 3615 "3734 25" _null_ _null_ _null_ _null_ _null_ to_tsquery_byid _null_ _null_ _null_ )); -DESCR("make tsquery"); -DATA(insert OID = 3747 ( plainto_tsquery PGNSP PGUID 12 100 0 0 0 f f f f t f i s 2 0 3615 "3734 25" _null_ _null_ _null_ _null_ _null_ plainto_tsquery_byid _null_ _null_ _null_ )); -DESCR("transform to tsquery"); -DATA(insert OID = 5006 ( phraseto_tsquery PGNSP PGUID 12 100 0 0 0 f f f f t f i s 2 0 3615 "3734 25" _null_ _null_ _null_ _null_ _null_ phraseto_tsquery_byid _null_ _null_ _null_ )); -DESCR("transform to tsquery"); -DATA(insert OID = 3749 ( to_tsvector PGNSP PGUID 12 100 0 0 0 f f f f t f s s 1 0 3614 "25" _null_ _null_ _null_ _null_ _null_ to_tsvector _null_ _null_ _null_ )); -DESCR("transform to tsvector"); -DATA(insert OID = 3750 ( to_tsquery PGNSP PGUID 12 100 0 0 0 f f f f t f s s 1 0 3615 "25" _null_ _null_ _null_ _null_ _null_ to_tsquery _null_ _null_ _null_ )); -DESCR("make tsquery"); -DATA(insert OID = 3751 ( plainto_tsquery PGNSP PGUID 12 100 0 0 0 f f f f t f s s 1 0 3615 "25" _null_ _null_ _null_ _null_ _null_ plainto_tsquery _null_ _null_ _null_ )); -DESCR("transform to tsquery"); -DATA(insert OID = 5001 ( phraseto_tsquery PGNSP PGUID 12 100 0 0 0 f f f f t f s s 1 0 3615 "25" _null_ _null_ _null_ _null_ _null_ phraseto_tsquery _null_ _null_ _null_ )); -DESCR("transform to tsquery"); -DATA(insert OID = 4209 ( to_tsvector PGNSP PGUID 12 100 0 0 0 f f f f t f s s 1 0 3614 "3802" _null_ _null_ _null_ _null_ _null_ jsonb_to_tsvector _null_ _null_ _null_ )); -DESCR("transform jsonb to tsvector"); -DATA(insert OID = 4210 ( to_tsvector PGNSP PGUID 12 100 0 0 0 f f f f t f s s 1 0 3614 "114" _null_ _null_ _null_ _null_ _null_ json_to_tsvector _null_ _null_ _null_ )); -DESCR("transform json to tsvector"); -DATA(insert OID = 4211 ( to_tsvector PGNSP PGUID 12 100 0 0 0 f f f f t f i s 2 0 3614 "3734 3802" _null_ _null_ _null_ _null_ _null_ jsonb_to_tsvector_byid _null_ _null_ _null_ )); -DESCR("transform jsonb to tsvector"); -DATA(insert OID = 4212 ( to_tsvector PGNSP PGUID 12 100 0 0 0 f f f f t f i s 2 0 3614 "3734 114" _null_ _null_ _null_ _null_ _null_ json_to_tsvector_byid _null_ _null_ _null_ )); -DESCR("transform json to tsvector"); - -DATA(insert OID = 3752 ( tsvector_update_trigger PGNSP PGUID 12 1 0 0 0 f f f f f f v s 0 0 2279 "" _null_ _null_ _null_ _null_ _null_ tsvector_update_trigger_byid _null_ _null_ _null_ )); -DESCR("trigger for automatic update of tsvector column"); -DATA(insert OID = 3753 ( tsvector_update_trigger_column PGNSP PGUID 12 1 0 0 0 f f f f f f v s 0 0 2279 "" _null_ _null_ _null_ _null_ _null_ tsvector_update_trigger_bycolumn _null_ _null_ _null_ )); -DESCR("trigger for automatic update of tsvector column"); - -DATA(insert OID = 3759 ( get_current_ts_config PGNSP PGUID 12 1 0 0 0 f f f f t f s s 0 0 3734 "" _null_ _null_ _null_ _null_ _null_ get_current_ts_config _null_ _null_ _null_ )); -DESCR("get current tsearch configuration"); - -DATA(insert OID = 3736 ( regconfigin PGNSP PGUID 12 1 0 0 0 f f f f t f s s 1 0 3734 "2275" _null_ _null_ _null_ _null_ _null_ regconfigin _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 3737 ( regconfigout PGNSP PGUID 12 1 0 0 0 f f f f t f s s 1 0 2275 "3734" _null_ _null_ _null_ _null_ _null_ regconfigout _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 3738 ( regconfigrecv PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 3734 "2281" _null_ _null_ _null_ _null_ _null_ regconfigrecv _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 3739 ( regconfigsend PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 17 "3734" _null_ _null_ _null_ _null_ _null_ regconfigsend _null_ _null_ _null_ )); -DESCR("I/O"); - -DATA(insert OID = 3771 ( regdictionaryin PGNSP PGUID 12 1 0 0 0 f f f f t f s s 1 0 3769 "2275" _null_ _null_ _null_ _null_ _null_ regdictionaryin _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 3772 ( regdictionaryout PGNSP PGUID 12 1 0 0 0 f f f f t f s s 1 0 2275 "3769" _null_ _null_ _null_ _null_ _null_ regdictionaryout _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 3773 ( regdictionaryrecv PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 3769 "2281" _null_ _null_ _null_ _null_ _null_ regdictionaryrecv _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 3774 ( regdictionarysend PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 17 "3769" _null_ _null_ _null_ _null_ _null_ regdictionarysend _null_ _null_ _null_ )); -DESCR("I/O"); - -/* jsonb */ -DATA(insert OID = 3806 ( jsonb_in PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 3802 "2275" _null_ _null_ _null_ _null_ _null_ jsonb_in _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 3805 ( jsonb_recv PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 3802 "2281" _null_ _null_ _null_ _null_ _null_ jsonb_recv _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 3804 ( jsonb_out PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 2275 "3802" _null_ _null_ _null_ _null_ _null_ jsonb_out _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 3803 ( jsonb_send PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 17 "3802" _null_ _null_ _null_ _null_ _null_ jsonb_send _null_ _null_ _null_ )); -DESCR("I/O"); - -DATA(insert OID = 3263 ( jsonb_object PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 3802 "1009" _null_ _null_ _null_ _null_ _null_ jsonb_object _null_ _null_ _null_ )); -DESCR("map text array of key value pairs to jsonb object"); -DATA(insert OID = 3264 ( jsonb_object PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 3802 "1009 1009" _null_ _null_ _null_ _null_ _null_ jsonb_object_two_arg _null_ _null_ _null_ )); -DESCR("map text array of key value pairs to jsonb object"); -DATA(insert OID = 3787 ( to_jsonb PGNSP PGUID 12 1 0 0 0 f f f f t f s s 1 0 3802 "2283" _null_ _null_ _null_ _null_ _null_ to_jsonb _null_ _null_ _null_ )); -DESCR("map input to jsonb"); -DATA(insert OID = 3265 ( jsonb_agg_transfn PGNSP PGUID 12 1 0 0 0 f f f f f f s s 2 0 2281 "2281 2283" _null_ _null_ _null_ _null_ _null_ jsonb_agg_transfn _null_ _null_ _null_ )); -DESCR("jsonb aggregate transition function"); -DATA(insert OID = 3266 ( jsonb_agg_finalfn PGNSP PGUID 12 1 0 0 0 f f f f f f s s 1 0 3802 "2281" _null_ _null_ _null_ _null_ _null_ jsonb_agg_finalfn _null_ _null_ _null_ )); -DESCR("jsonb aggregate final function"); -DATA(insert OID = 3267 ( jsonb_agg PGNSP PGUID 12 1 0 0 0 t f f f f f s s 1 0 3802 "2283" _null_ _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ )); -DESCR("aggregate input into jsonb"); -DATA(insert OID = 3268 ( jsonb_object_agg_transfn PGNSP PGUID 12 1 0 0 0 f f f f f f s s 3 0 2281 "2281 2276 2276" _null_ _null_ _null_ _null_ _null_ jsonb_object_agg_transfn _null_ _null_ _null_ )); -DESCR("jsonb object aggregate transition function"); -DATA(insert OID = 3269 ( jsonb_object_agg_finalfn PGNSP PGUID 12 1 0 0 0 f f f f f f s s 1 0 3802 "2281" _null_ _null_ _null_ _null_ _null_ jsonb_object_agg_finalfn _null_ _null_ _null_ )); -DESCR("jsonb object aggregate final function"); -DATA(insert OID = 3270 ( jsonb_object_agg PGNSP PGUID 12 1 0 0 0 t f f f f f i s 2 0 3802 "2276 2276" _null_ _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ )); -DESCR("aggregate inputs into jsonb object"); -DATA(insert OID = 3271 ( jsonb_build_array PGNSP PGUID 12 1 0 2276 0 f f f f f f s s 1 0 3802 "2276" "{2276}" "{v}" _null_ _null_ _null_ jsonb_build_array _null_ _null_ _null_ )); -DESCR("build a jsonb array from any inputs"); -DATA(insert OID = 3272 ( jsonb_build_array PGNSP PGUID 12 1 0 0 0 f f f f f f s s 0 0 3802 "" _null_ _null_ _null_ _null_ _null_ jsonb_build_array_noargs _null_ _null_ _null_ )); -DESCR("build an empty jsonb array"); -DATA(insert OID = 3273 ( jsonb_build_object PGNSP PGUID 12 1 0 2276 0 f f f f f f s s 1 0 3802 "2276" "{2276}" "{v}" _null_ _null_ _null_ jsonb_build_object _null_ _null_ _null_ )); -DESCR("build a jsonb object from pairwise key/value inputs"); -DATA(insert OID = 3274 ( jsonb_build_object PGNSP PGUID 12 1 0 0 0 f f f f f f s s 0 0 3802 "" _null_ _null_ _null_ _null_ _null_ jsonb_build_object_noargs _null_ _null_ _null_ )); -DESCR("build an empty jsonb object"); -DATA(insert OID = 3262 ( jsonb_strip_nulls PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 3802 "3802" _null_ _null_ _null_ _null_ _null_ jsonb_strip_nulls _null_ _null_ _null_ )); -DESCR("remove object fields with null values from jsonb"); - -DATA(insert OID = 3478 ( jsonb_object_field PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 3802 "3802 25" _null_ _null_ "{from_json, field_name}" _null_ _null_ jsonb_object_field _null_ _null_ _null_ )); -DATA(insert OID = 3214 ( jsonb_object_field_text PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 25 "3802 25" _null_ _null_ "{from_json, field_name}" _null_ _null_ jsonb_object_field_text _null_ _null_ _null_ )); -DATA(insert OID = 3215 ( jsonb_array_element PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 3802 "3802 23" _null_ _null_ "{from_json, element_index}" _null_ _null_ jsonb_array_element _null_ _null_ _null_ )); -DATA(insert OID = 3216 ( jsonb_array_element_text PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 25 "3802 23" _null_ _null_ "{from_json, element_index}" _null_ _null_ jsonb_array_element_text _null_ _null_ _null_ )); -DATA(insert OID = 3217 ( jsonb_extract_path PGNSP PGUID 12 1 0 25 0 f f f f t f i s 2 0 3802 "3802 1009" "{3802,1009}" "{i,v}" "{from_json,path_elems}" _null_ _null_ jsonb_extract_path _null_ _null_ _null_ )); -DESCR("get value from jsonb with path elements"); -DATA(insert OID = 3940 ( jsonb_extract_path_text PGNSP PGUID 12 1 0 25 0 f f f f t f i s 2 0 25 "3802 1009" "{3802,1009}" "{i,v}" "{from_json,path_elems}" _null_ _null_ jsonb_extract_path_text _null_ _null_ _null_ )); -DESCR("get value from jsonb as text with path elements"); -DATA(insert OID = 3219 ( jsonb_array_elements PGNSP PGUID 12 1 100 0 0 f f f f t t i s 1 0 3802 "3802" "{3802,3802}" "{i,o}" "{from_json,value}" _null_ _null_ jsonb_array_elements _null_ _null_ _null_ )); -DESCR("elements of a jsonb array"); -DATA(insert OID = 3465 ( jsonb_array_elements_text PGNSP PGUID 12 1 100 0 0 f f f f t t i s 1 0 25 "3802" "{3802,25}" "{i,o}" "{from_json,value}" _null_ _null_ jsonb_array_elements_text _null_ _null_ _null_ )); -DESCR("elements of jsonb array"); -DATA(insert OID = 3207 ( jsonb_array_length PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 23 "3802" _null_ _null_ _null_ _null_ _null_ jsonb_array_length _null_ _null_ _null_ )); -DESCR("length of jsonb array"); -DATA(insert OID = 3931 ( jsonb_object_keys PGNSP PGUID 12 1 100 0 0 f f f f t t i s 1 0 25 "3802" _null_ _null_ _null_ _null_ _null_ jsonb_object_keys _null_ _null_ _null_ )); -DESCR("get jsonb object keys"); -DATA(insert OID = 3208 ( jsonb_each PGNSP PGUID 12 1 100 0 0 f f f f t t i s 1 0 2249 "3802" "{3802,25,3802}" "{i,o,o}" "{from_json,key,value}" _null_ _null_ jsonb_each _null_ _null_ _null_ )); -DESCR("key value pairs of a jsonb object"); -DATA(insert OID = 3932 ( jsonb_each_text PGNSP PGUID 12 1 100 0 0 f f f f t t i s 1 0 2249 "3802" "{3802,25,25}" "{i,o,o}" "{from_json,key,value}" _null_ _null_ jsonb_each_text _null_ _null_ _null_ )); -DESCR("key value pairs of a jsonb object"); -DATA(insert OID = 3209 ( jsonb_populate_record PGNSP PGUID 12 1 0 0 0 f f f f f f s s 2 0 2283 "2283 3802" _null_ _null_ _null_ _null_ _null_ jsonb_populate_record _null_ _null_ _null_ )); -DESCR("get record fields from a jsonb object"); -DATA(insert OID = 3475 ( jsonb_populate_recordset PGNSP PGUID 12 1 100 0 0 f f f f f t s s 2 0 2283 "2283 3802" _null_ _null_ _null_ _null_ _null_ jsonb_populate_recordset _null_ _null_ _null_ )); -DESCR("get set of records with fields from a jsonb array of objects"); -DATA(insert OID = 3490 ( jsonb_to_record PGNSP PGUID 12 1 0 0 0 f f f f t f s s 1 0 2249 "3802" _null_ _null_ _null_ _null_ _null_ jsonb_to_record _null_ _null_ _null_ )); -DESCR("get record fields from a jsonb object"); -DATA(insert OID = 3491 ( jsonb_to_recordset PGNSP PGUID 12 1 100 0 0 f f f f f t s s 1 0 2249 "3802" _null_ _null_ _null_ _null_ _null_ jsonb_to_recordset _null_ _null_ _null_ )); -DESCR("get set of records with fields from a jsonb array of objects"); -DATA(insert OID = 3210 ( jsonb_typeof PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 25 "3802" _null_ _null_ _null_ _null_ _null_ jsonb_typeof _null_ _null_ _null_ )); -DESCR("get the type of a jsonb value"); -DATA(insert OID = 4038 ( jsonb_ne PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 16 "3802 3802" _null_ _null_ _null_ _null_ _null_ jsonb_ne _null_ _null_ _null_ )); -DATA(insert OID = 4039 ( jsonb_lt PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 16 "3802 3802" _null_ _null_ _null_ _null_ _null_ jsonb_lt _null_ _null_ _null_ )); -DATA(insert OID = 4040 ( jsonb_gt PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 16 "3802 3802" _null_ _null_ _null_ _null_ _null_ jsonb_gt _null_ _null_ _null_ )); -DATA(insert OID = 4041 ( jsonb_le PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 16 "3802 3802" _null_ _null_ _null_ _null_ _null_ jsonb_le _null_ _null_ _null_ )); -DATA(insert OID = 4042 ( jsonb_ge PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 16 "3802 3802" _null_ _null_ _null_ _null_ _null_ jsonb_ge _null_ _null_ _null_ )); -DATA(insert OID = 4043 ( jsonb_eq PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 16 "3802 3802" _null_ _null_ _null_ _null_ _null_ jsonb_eq _null_ _null_ _null_ )); -DATA(insert OID = 4044 ( jsonb_cmp PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 23 "3802 3802" _null_ _null_ _null_ _null_ _null_ jsonb_cmp _null_ _null_ _null_ )); -DESCR("less-equal-greater"); -DATA(insert OID = 4045 ( jsonb_hash PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 23 "3802" _null_ _null_ _null_ _null_ _null_ jsonb_hash _null_ _null_ _null_ )); -DESCR("hash"); -DATA(insert OID = 4046 ( jsonb_contains PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 16 "3802 3802" _null_ _null_ _null_ _null_ _null_ jsonb_contains _null_ _null_ _null_ )); -DATA(insert OID = 4047 ( jsonb_exists PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 16 "3802 25" _null_ _null_ _null_ _null_ _null_ jsonb_exists _null_ _null_ _null_ )); -DATA(insert OID = 4048 ( jsonb_exists_any PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 16 "3802 1009" _null_ _null_ _null_ _null_ _null_ jsonb_exists_any _null_ _null_ _null_ )); -DATA(insert OID = 4049 ( jsonb_exists_all PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 16 "3802 1009" _null_ _null_ _null_ _null_ _null_ jsonb_exists_all _null_ _null_ _null_ )); -DATA(insert OID = 4050 ( jsonb_contained PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 16 "3802 3802" _null_ _null_ _null_ _null_ _null_ jsonb_contained _null_ _null_ _null_ )); -DATA(insert OID = 3480 ( gin_compare_jsonb PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 23 "25 25" _null_ _null_ _null_ _null_ _null_ gin_compare_jsonb _null_ _null_ _null_ )); -DESCR("GIN support"); -DATA(insert OID = 3482 ( gin_extract_jsonb PGNSP PGUID 12 1 0 0 0 f f f f t f i s 3 0 2281 "3802 2281 2281" _null_ _null_ _null_ _null_ _null_ gin_extract_jsonb _null_ _null_ _null_ )); -DESCR("GIN support"); -DATA(insert OID = 3483 ( gin_extract_jsonb_query PGNSP PGUID 12 1 0 0 0 f f f f t f i s 7 0 2281 "3802 2281 21 2281 2281 2281 2281" _null_ _null_ _null_ _null_ _null_ gin_extract_jsonb_query _null_ _null_ _null_ )); -DESCR("GIN support"); -DATA(insert OID = 3484 ( gin_consistent_jsonb PGNSP PGUID 12 1 0 0 0 f f f f t f i s 8 0 16 "2281 21 3802 23 2281 2281 2281 2281" _null_ _null_ _null_ _null_ _null_ gin_consistent_jsonb _null_ _null_ _null_ )); -DESCR("GIN support"); -DATA(insert OID = 3488 ( gin_triconsistent_jsonb PGNSP PGUID 12 1 0 0 0 f f f f t f i s 7 0 18 "2281 21 3802 23 2281 2281 2281" _null_ _null_ _null_ _null_ _null_ gin_triconsistent_jsonb _null_ _null_ _null_ )); -DESCR("GIN support"); -DATA(insert OID = 3485 ( gin_extract_jsonb_path PGNSP PGUID 12 1 0 0 0 f f f f t f i s 3 0 2281 "3802 2281 2281" _null_ _null_ _null_ _null_ _null_ gin_extract_jsonb_path _null_ _null_ _null_ )); -DESCR("GIN support"); -DATA(insert OID = 3486 ( gin_extract_jsonb_query_path PGNSP PGUID 12 1 0 0 0 f f f f t f i s 7 0 2281 "3802 2281 21 2281 2281 2281 2281" _null_ _null_ _null_ _null_ _null_ gin_extract_jsonb_query_path _null_ _null_ _null_ )); -DESCR("GIN support"); -DATA(insert OID = 3487 ( gin_consistent_jsonb_path PGNSP PGUID 12 1 0 0 0 f f f f t f i s 8 0 16 "2281 21 3802 23 2281 2281 2281 2281" _null_ _null_ _null_ _null_ _null_ gin_consistent_jsonb_path _null_ _null_ _null_ )); -DESCR("GIN support"); -DATA(insert OID = 3489 ( gin_triconsistent_jsonb_path PGNSP PGUID 12 1 0 0 0 f f f f t f i s 7 0 18 "2281 21 3802 23 2281 2281 2281" _null_ _null_ _null_ _null_ _null_ gin_triconsistent_jsonb_path _null_ _null_ _null_ )); -DESCR("GIN support"); -DATA(insert OID = 3301 ( jsonb_concat PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 3802 "3802 3802" _null_ _null_ _null_ _null_ _null_ jsonb_concat _null_ _null_ _null_ )); -DATA(insert OID = 3302 ( jsonb_delete PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 3802 "3802 25" _null_ _null_ _null_ _null_ _null_ jsonb_delete _null_ _null_ _null_ )); -DATA(insert OID = 3303 ( jsonb_delete PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 3802 "3802 23" _null_ _null_ _null_ _null_ _null_ jsonb_delete_idx _null_ _null_ _null_ )); -DATA(insert OID = 3343 ( jsonb_delete PGNSP PGUID 12 1 0 25 0 f f f f t f i s 2 0 3802 "3802 1009" "{3802,1009}" "{i,v}" "{from_json,path_elems}" _null_ _null_ jsonb_delete_array _null_ _null_ _null_ )); -DATA(insert OID = 3304 ( jsonb_delete_path PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 3802 "3802 1009" _null_ _null_ _null_ _null_ _null_ jsonb_delete_path _null_ _null_ _null_ )); -DATA(insert OID = 3305 ( jsonb_set PGNSP PGUID 12 1 0 0 0 f f f f t f i s 4 0 3802 "3802 1009 3802 16" _null_ _null_ _null_ _null_ _null_ jsonb_set _null_ _null_ _null_ )); -DESCR("Set part of a jsonb"); -DATA(insert OID = 3306 ( jsonb_pretty PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 25 "3802" _null_ _null_ _null_ _null_ _null_ jsonb_pretty _null_ _null_ _null_ )); -DESCR("Indented text from jsonb"); -DATA(insert OID = 3579 ( jsonb_insert PGNSP PGUID 12 1 0 0 0 f f f f t f i s 4 0 3802 "3802 1009 3802 16" _null_ _null_ _null_ _null_ _null_ jsonb_insert _null_ _null_ _null_ )); -DESCR("Insert value into a jsonb"); -/* txid */ -DATA(insert OID = 2939 ( txid_snapshot_in PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 2970 "2275" _null_ _null_ _null_ _null_ _null_ txid_snapshot_in _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 2940 ( txid_snapshot_out PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 2275 "2970" _null_ _null_ _null_ _null_ _null_ txid_snapshot_out _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 2941 ( txid_snapshot_recv PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 2970 "2281" _null_ _null_ _null_ _null_ _null_ txid_snapshot_recv _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 2942 ( txid_snapshot_send PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 17 "2970" _null_ _null_ _null_ _null_ _null_ txid_snapshot_send _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 2943 ( txid_current PGNSP PGUID 12 1 0 0 0 f f f f t f s u 0 0 20 "" _null_ _null_ _null_ _null_ _null_ txid_current _null_ _null_ _null_ )); -DESCR("get current transaction ID"); -DATA(insert OID = 3348 ( txid_current_if_assigned PGNSP PGUID 12 1 0 0 0 f f f f t f s u 0 0 20 "" _null_ _null_ _null_ _null_ _null_ txid_current_if_assigned _null_ _null_ _null_ )); -DESCR("get current transaction ID"); -DATA(insert OID = 2944 ( txid_current_snapshot PGNSP PGUID 12 1 0 0 0 f f f f t f s s 0 0 2970 "" _null_ _null_ _null_ _null_ _null_ txid_current_snapshot _null_ _null_ _null_ )); -DESCR("get current snapshot"); -DATA(insert OID = 2945 ( txid_snapshot_xmin PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 20 "2970" _null_ _null_ _null_ _null_ _null_ txid_snapshot_xmin _null_ _null_ _null_ )); -DESCR("get xmin of snapshot"); -DATA(insert OID = 2946 ( txid_snapshot_xmax PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 20 "2970" _null_ _null_ _null_ _null_ _null_ txid_snapshot_xmax _null_ _null_ _null_ )); -DESCR("get xmax of snapshot"); -DATA(insert OID = 2947 ( txid_snapshot_xip PGNSP PGUID 12 1 50 0 0 f f f f t t i s 1 0 20 "2970" _null_ _null_ _null_ _null_ _null_ txid_snapshot_xip _null_ _null_ _null_ )); -DESCR("get set of in-progress txids in snapshot"); -DATA(insert OID = 2948 ( txid_visible_in_snapshot PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 16 "20 2970" _null_ _null_ _null_ _null_ _null_ txid_visible_in_snapshot _null_ _null_ _null_ )); -DESCR("is txid visible in snapshot?"); -DATA(insert OID = 3360 ( txid_status PGNSP PGUID 12 1 0 0 0 f f f f t f v s 1 0 25 "20" _null_ _null_ _null_ _null_ _null_ txid_status _null_ _null_ _null_ )); -DESCR("commit status of transaction"); - -/* record comparison using normal comparison rules */ -DATA(insert OID = 2981 ( record_eq PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 16 "2249 2249" _null_ _null_ _null_ _null_ _null_ record_eq _null_ _null_ _null_ )); -DATA(insert OID = 2982 ( record_ne PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 16 "2249 2249" _null_ _null_ _null_ _null_ _null_ record_ne _null_ _null_ _null_ )); -DATA(insert OID = 2983 ( record_lt PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 16 "2249 2249" _null_ _null_ _null_ _null_ _null_ record_lt _null_ _null_ _null_ )); -DATA(insert OID = 2984 ( record_gt PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 16 "2249 2249" _null_ _null_ _null_ _null_ _null_ record_gt _null_ _null_ _null_ )); -DATA(insert OID = 2985 ( record_le PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 16 "2249 2249" _null_ _null_ _null_ _null_ _null_ record_le _null_ _null_ _null_ )); -DATA(insert OID = 2986 ( record_ge PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 16 "2249 2249" _null_ _null_ _null_ _null_ _null_ record_ge _null_ _null_ _null_ )); -DATA(insert OID = 2987 ( btrecordcmp PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 23 "2249 2249" _null_ _null_ _null_ _null_ _null_ btrecordcmp _null_ _null_ _null_ )); -DESCR("less-equal-greater"); - -/* record comparison using raw byte images */ -DATA(insert OID = 3181 ( record_image_eq PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 16 "2249 2249" _null_ _null_ _null_ _null_ _null_ record_image_eq _null_ _null_ _null_ )); -DATA(insert OID = 3182 ( record_image_ne PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 16 "2249 2249" _null_ _null_ _null_ _null_ _null_ record_image_ne _null_ _null_ _null_ )); -DATA(insert OID = 3183 ( record_image_lt PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 16 "2249 2249" _null_ _null_ _null_ _null_ _null_ record_image_lt _null_ _null_ _null_ )); -DATA(insert OID = 3184 ( record_image_gt PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 16 "2249 2249" _null_ _null_ _null_ _null_ _null_ record_image_gt _null_ _null_ _null_ )); -DATA(insert OID = 3185 ( record_image_le PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 16 "2249 2249" _null_ _null_ _null_ _null_ _null_ record_image_le _null_ _null_ _null_ )); -DATA(insert OID = 3186 ( record_image_ge PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 16 "2249 2249" _null_ _null_ _null_ _null_ _null_ record_image_ge _null_ _null_ _null_ )); -DATA(insert OID = 3187 ( btrecordimagecmp PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 23 "2249 2249" _null_ _null_ _null_ _null_ _null_ btrecordimagecmp _null_ _null_ _null_ )); -DESCR("less-equal-greater based on byte images"); - -/* Extensions */ -DATA(insert OID = 3082 ( pg_available_extensions PGNSP PGUID 12 10 100 0 0 f f f f t t s s 0 0 2249 "" "{19,25,25}" "{o,o,o}" "{name,default_version,comment}" _null_ _null_ pg_available_extensions _null_ _null_ _null_ )); -DESCR("list available extensions"); -DATA(insert OID = 3083 ( pg_available_extension_versions PGNSP PGUID 12 10 100 0 0 f f f f t t s s 0 0 2249 "" "{19,25,16,16,19,1003,25}" "{o,o,o,o,o,o,o}" "{name,version,superuser,relocatable,schema,requires,comment}" _null_ _null_ pg_available_extension_versions _null_ _null_ _null_ )); -DESCR("list available extension versions"); -DATA(insert OID = 3084 ( pg_extension_update_paths PGNSP PGUID 12 10 100 0 0 f f f f t t s s 1 0 2249 "19" "{19,25,25,25}" "{i,o,o,o}" "{name,source,target,path}" _null_ _null_ pg_extension_update_paths _null_ _null_ _null_ )); -DESCR("list an extension's version update paths"); -DATA(insert OID = 3086 ( pg_extension_config_dump PGNSP PGUID 12 1 0 0 0 f f f f t f v u 2 0 2278 "2205 25" _null_ _null_ _null_ _null_ _null_ pg_extension_config_dump _null_ _null_ _null_ )); -DESCR("flag an extension's table contents to be emitted by pg_dump"); - -/* SQL-spec window functions */ -DATA(insert OID = 3100 ( row_number PGNSP PGUID 12 1 0 0 0 f t f f f f i s 0 0 20 "" _null_ _null_ _null_ _null_ _null_ window_row_number _null_ _null_ _null_ )); -DESCR("row number within partition"); -DATA(insert OID = 3101 ( rank PGNSP PGUID 12 1 0 0 0 f t f f f f i s 0 0 20 "" _null_ _null_ _null_ _null_ _null_ window_rank _null_ _null_ _null_ )); -DESCR("integer rank with gaps"); -DATA(insert OID = 3102 ( dense_rank PGNSP PGUID 12 1 0 0 0 f t f f f f i s 0 0 20 "" _null_ _null_ _null_ _null_ _null_ window_dense_rank _null_ _null_ _null_ )); -DESCR("integer rank without gaps"); -DATA(insert OID = 3103 ( percent_rank PGNSP PGUID 12 1 0 0 0 f t f f f f i s 0 0 701 "" _null_ _null_ _null_ _null_ _null_ window_percent_rank _null_ _null_ _null_ )); -DESCR("fractional rank within partition"); -DATA(insert OID = 3104 ( cume_dist PGNSP PGUID 12 1 0 0 0 f t f f f f i s 0 0 701 "" _null_ _null_ _null_ _null_ _null_ window_cume_dist _null_ _null_ _null_ )); -DESCR("fractional row number within partition"); -DATA(insert OID = 3105 ( ntile PGNSP PGUID 12 1 0 0 0 f t f f t f i s 1 0 23 "23" _null_ _null_ _null_ _null_ _null_ window_ntile _null_ _null_ _null_ )); -DESCR("split rows into N groups"); -DATA(insert OID = 3106 ( lag PGNSP PGUID 12 1 0 0 0 f t f f t f i s 1 0 2283 "2283" _null_ _null_ _null_ _null_ _null_ window_lag _null_ _null_ _null_ )); -DESCR("fetch the preceding row value"); -DATA(insert OID = 3107 ( lag PGNSP PGUID 12 1 0 0 0 f t f f t f i s 2 0 2283 "2283 23" _null_ _null_ _null_ _null_ _null_ window_lag_with_offset _null_ _null_ _null_ )); -DESCR("fetch the Nth preceding row value"); -DATA(insert OID = 3108 ( lag PGNSP PGUID 12 1 0 0 0 f t f f t f i s 3 0 2283 "2283 23 2283" _null_ _null_ _null_ _null_ _null_ window_lag_with_offset_and_default _null_ _null_ _null_ )); -DESCR("fetch the Nth preceding row value with default"); -DATA(insert OID = 3109 ( lead PGNSP PGUID 12 1 0 0 0 f t f f t f i s 1 0 2283 "2283" _null_ _null_ _null_ _null_ _null_ window_lead _null_ _null_ _null_ )); -DESCR("fetch the following row value"); -DATA(insert OID = 3110 ( lead PGNSP PGUID 12 1 0 0 0 f t f f t f i s 2 0 2283 "2283 23" _null_ _null_ _null_ _null_ _null_ window_lead_with_offset _null_ _null_ _null_ )); -DESCR("fetch the Nth following row value"); -DATA(insert OID = 3111 ( lead PGNSP PGUID 12 1 0 0 0 f t f f t f i s 3 0 2283 "2283 23 2283" _null_ _null_ _null_ _null_ _null_ window_lead_with_offset_and_default _null_ _null_ _null_ )); -DESCR("fetch the Nth following row value with default"); -DATA(insert OID = 3112 ( first_value PGNSP PGUID 12 1 0 0 0 f t f f t f i s 1 0 2283 "2283" _null_ _null_ _null_ _null_ _null_ window_first_value _null_ _null_ _null_ )); -DESCR("fetch the first row value"); -DATA(insert OID = 3113 ( last_value PGNSP PGUID 12 1 0 0 0 f t f f t f i s 1 0 2283 "2283" _null_ _null_ _null_ _null_ _null_ window_last_value _null_ _null_ _null_ )); -DESCR("fetch the last row value"); -DATA(insert OID = 3114 ( nth_value PGNSP PGUID 12 1 0 0 0 f t f f t f i s 2 0 2283 "2283 23" _null_ _null_ _null_ _null_ _null_ window_nth_value _null_ _null_ _null_ )); -DESCR("fetch the Nth row value"); - -/* functions for range types */ -DATA(insert OID = 3832 ( anyrange_in PGNSP PGUID 12 1 0 0 0 f f f f t f s s 3 0 3831 "2275 26 23" _null_ _null_ _null_ _null_ _null_ anyrange_in _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 3833 ( anyrange_out PGNSP PGUID 12 1 0 0 0 f f f f t f s s 1 0 2275 "3831" _null_ _null_ _null_ _null_ _null_ anyrange_out _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 3834 ( range_in PGNSP PGUID 12 1 0 0 0 f f f f t f s s 3 0 3831 "2275 26 23" _null_ _null_ _null_ _null_ _null_ range_in _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 3835 ( range_out PGNSP PGUID 12 1 0 0 0 f f f f t f s s 1 0 2275 "3831" _null_ _null_ _null_ _null_ _null_ range_out _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 3836 ( range_recv PGNSP PGUID 12 1 0 0 0 f f f f t f s s 3 0 3831 "2281 26 23" _null_ _null_ _null_ _null_ _null_ range_recv _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 3837 ( range_send PGNSP PGUID 12 1 0 0 0 f f f f t f s s 1 0 17 "3831" _null_ _null_ _null_ _null_ _null_ range_send _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 3848 ( lower PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 2283 "3831" _null_ _null_ _null_ _null_ _null_ range_lower _null_ _null_ _null_ )); -DESCR("lower bound of range"); -DATA(insert OID = 3849 ( upper PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 2283 "3831" _null_ _null_ _null_ _null_ _null_ range_upper _null_ _null_ _null_ )); -DESCR("upper bound of range"); -DATA(insert OID = 3850 ( isempty PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 16 "3831" _null_ _null_ _null_ _null_ _null_ range_empty _null_ _null_ _null_ )); -DESCR("is the range empty?"); -DATA(insert OID = 3851 ( lower_inc PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 16 "3831" _null_ _null_ _null_ _null_ _null_ range_lower_inc _null_ _null_ _null_ )); -DESCR("is the range's lower bound inclusive?"); -DATA(insert OID = 3852 ( upper_inc PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 16 "3831" _null_ _null_ _null_ _null_ _null_ range_upper_inc _null_ _null_ _null_ )); -DESCR("is the range's upper bound inclusive?"); -DATA(insert OID = 3853 ( lower_inf PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 16 "3831" _null_ _null_ _null_ _null_ _null_ range_lower_inf _null_ _null_ _null_ )); -DESCR("is the range's lower bound infinite?"); -DATA(insert OID = 3854 ( upper_inf PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 16 "3831" _null_ _null_ _null_ _null_ _null_ range_upper_inf _null_ _null_ _null_ )); -DESCR("is the range's upper bound infinite?"); -DATA(insert OID = 3855 ( range_eq PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 16 "3831 3831" _null_ _null_ _null_ _null_ _null_ range_eq _null_ _null_ _null_ )); -DATA(insert OID = 3856 ( range_ne PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 16 "3831 3831" _null_ _null_ _null_ _null_ _null_ range_ne _null_ _null_ _null_ )); -DATA(insert OID = 3857 ( range_overlaps PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 16 "3831 3831" _null_ _null_ _null_ _null_ _null_ range_overlaps _null_ _null_ _null_ )); -DATA(insert OID = 3858 ( range_contains_elem PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 16 "3831 2283" _null_ _null_ _null_ _null_ _null_ range_contains_elem _null_ _null_ _null_ )); -DATA(insert OID = 3859 ( range_contains PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 16 "3831 3831" _null_ _null_ _null_ _null_ _null_ range_contains _null_ _null_ _null_ )); -DATA(insert OID = 3860 ( elem_contained_by_range PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 16 "2283 3831" _null_ _null_ _null_ _null_ _null_ elem_contained_by_range _null_ _null_ _null_ )); -DATA(insert OID = 3861 ( range_contained_by PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 16 "3831 3831" _null_ _null_ _null_ _null_ _null_ range_contained_by _null_ _null_ _null_ )); -DATA(insert OID = 3862 ( range_adjacent PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 16 "3831 3831" _null_ _null_ _null_ _null_ _null_ range_adjacent _null_ _null_ _null_ )); -DATA(insert OID = 3863 ( range_before PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 16 "3831 3831" _null_ _null_ _null_ _null_ _null_ range_before _null_ _null_ _null_ )); -DATA(insert OID = 3864 ( range_after PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 16 "3831 3831" _null_ _null_ _null_ _null_ _null_ range_after _null_ _null_ _null_ )); -DATA(insert OID = 3865 ( range_overleft PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 16 "3831 3831" _null_ _null_ _null_ _null_ _null_ range_overleft _null_ _null_ _null_ )); -DATA(insert OID = 3866 ( range_overright PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 16 "3831 3831" _null_ _null_ _null_ _null_ _null_ range_overright _null_ _null_ _null_ )); -DATA(insert OID = 3867 ( range_union PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 3831 "3831 3831" _null_ _null_ _null_ _null_ _null_ range_union _null_ _null_ _null_ )); -DATA(insert OID = 4057 ( range_merge PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 3831 "3831 3831" _null_ _null_ _null_ _null_ _null_ range_merge _null_ _null_ _null_ )); -DESCR("the smallest range which includes both of the given ranges"); -DATA(insert OID = 3868 ( range_intersect PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 3831 "3831 3831" _null_ _null_ _null_ _null_ _null_ range_intersect _null_ _null_ _null_ )); -DATA(insert OID = 3869 ( range_minus PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 3831 "3831 3831" _null_ _null_ _null_ _null_ _null_ range_minus _null_ _null_ _null_ )); -DATA(insert OID = 3870 ( range_cmp PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 23 "3831 3831" _null_ _null_ _null_ _null_ _null_ range_cmp _null_ _null_ _null_ )); -DESCR("less-equal-greater"); -DATA(insert OID = 3871 ( range_lt PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 16 "3831 3831" _null_ _null_ _null_ _null_ _null_ range_lt _null_ _null_ _null_ )); -DATA(insert OID = 3872 ( range_le PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 16 "3831 3831" _null_ _null_ _null_ _null_ _null_ range_le _null_ _null_ _null_ )); -DATA(insert OID = 3873 ( range_ge PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 16 "3831 3831" _null_ _null_ _null_ _null_ _null_ range_ge _null_ _null_ _null_ )); -DATA(insert OID = 3874 ( range_gt PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 16 "3831 3831" _null_ _null_ _null_ _null_ _null_ range_gt _null_ _null_ _null_ )); -DATA(insert OID = 3875 ( range_gist_consistent PGNSP PGUID 12 1 0 0 0 f f f f t f i s 5 0 16 "2281 3831 21 26 2281" _null_ _null_ _null_ _null_ _null_ range_gist_consistent _null_ _null_ _null_ )); -DESCR("GiST support"); -DATA(insert OID = 3876 ( range_gist_union PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 3831 "2281 2281" _null_ _null_ _null_ _null_ _null_ range_gist_union _null_ _null_ _null_ )); -DESCR("GiST support"); -DATA(insert OID = 3877 ( range_gist_compress PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 2281 "2281" _null_ _null_ _null_ _null_ _null_ range_gist_compress _null_ _null_ _null_ )); -DESCR("GiST support"); -DATA(insert OID = 3878 ( range_gist_decompress PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 2281 "2281" _null_ _null_ _null_ _null_ _null_ range_gist_decompress _null_ _null_ _null_ )); -DESCR("GiST support"); -DATA(insert OID = 3996 ( range_gist_fetch PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 2281 "2281" _null_ _null_ _null_ _null_ _null_ range_gist_fetch _null_ _null_ _null_ )); -DESCR("GiST support"); -DATA(insert OID = 3879 ( range_gist_penalty PGNSP PGUID 12 1 0 0 0 f f f f t f i s 3 0 2281 "2281 2281 2281" _null_ _null_ _null_ _null_ _null_ range_gist_penalty _null_ _null_ _null_ )); -DESCR("GiST support"); -DATA(insert OID = 3880 ( range_gist_picksplit PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 2281 "2281 2281" _null_ _null_ _null_ _null_ _null_ range_gist_picksplit _null_ _null_ _null_ )); -DESCR("GiST support"); -DATA(insert OID = 3881 ( range_gist_same PGNSP PGUID 12 1 0 0 0 f f f f t f i s 3 0 2281 "3831 3831 2281" _null_ _null_ _null_ _null_ _null_ range_gist_same _null_ _null_ _null_ )); -DESCR("GiST support"); -DATA(insert OID = 3902 ( hash_range PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 23 "3831" _null_ _null_ _null_ _null_ _null_ hash_range _null_ _null_ _null_ )); -DESCR("hash a range"); -DATA(insert OID = 3916 ( range_typanalyze PGNSP PGUID 12 1 0 0 0 f f f f t f s s 1 0 16 "2281" _null_ _null_ _null_ _null_ _null_ range_typanalyze _null_ _null_ _null_ )); -DESCR("range typanalyze"); -DATA(insert OID = 3169 ( rangesel PGNSP PGUID 12 1 0 0 0 f f f f t f s s 4 0 701 "2281 26 2281 23" _null_ _null_ _null_ _null_ _null_ rangesel _null_ _null_ _null_ )); -DESCR("restriction selectivity for range operators"); - -DATA(insert OID = 3914 ( int4range_canonical PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 3904 "3904" _null_ _null_ _null_ _null_ _null_ int4range_canonical _null_ _null_ _null_ )); -DESCR("convert an int4 range to canonical form"); -DATA(insert OID = 3928 ( int8range_canonical PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 3926 "3926" _null_ _null_ _null_ _null_ _null_ int8range_canonical _null_ _null_ _null_ )); -DESCR("convert an int8 range to canonical form"); -DATA(insert OID = 3915 ( daterange_canonical PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 3912 "3912" _null_ _null_ _null_ _null_ _null_ daterange_canonical _null_ _null_ _null_ )); -DESCR("convert a date range to canonical form"); -DATA(insert OID = 3922 ( int4range_subdiff PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 701 "23 23" _null_ _null_ _null_ _null_ _null_ int4range_subdiff _null_ _null_ _null_ )); -DESCR("float8 difference of two int4 values"); -DATA(insert OID = 3923 ( int8range_subdiff PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 701 "20 20" _null_ _null_ _null_ _null_ _null_ int8range_subdiff _null_ _null_ _null_ )); -DESCR("float8 difference of two int8 values"); -DATA(insert OID = 3924 ( numrange_subdiff PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 701 "1700 1700" _null_ _null_ _null_ _null_ _null_ numrange_subdiff _null_ _null_ _null_ )); -DESCR("float8 difference of two numeric values"); -DATA(insert OID = 3925 ( daterange_subdiff PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 701 "1082 1082" _null_ _null_ _null_ _null_ _null_ daterange_subdiff _null_ _null_ _null_ )); -DESCR("float8 difference of two date values"); -DATA(insert OID = 3929 ( tsrange_subdiff PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 701 "1114 1114" _null_ _null_ _null_ _null_ _null_ tsrange_subdiff _null_ _null_ _null_ )); -DESCR("float8 difference of two timestamp values"); -DATA(insert OID = 3930 ( tstzrange_subdiff PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 701 "1184 1184" _null_ _null_ _null_ _null_ _null_ tstzrange_subdiff _null_ _null_ _null_ )); -DESCR("float8 difference of two timestamp with time zone values"); - -DATA(insert OID = 3840 ( int4range PGNSP PGUID 12 1 0 0 0 f f f f f f i s 2 0 3904 "23 23" _null_ _null_ _null_ _null_ _null_ range_constructor2 _null_ _null_ _null_ )); -DESCR("int4range constructor"); -DATA(insert OID = 3841 ( int4range PGNSP PGUID 12 1 0 0 0 f f f f f f i s 3 0 3904 "23 23 25" _null_ _null_ _null_ _null_ _null_ range_constructor3 _null_ _null_ _null_ )); -DESCR("int4range constructor"); -DATA(insert OID = 3844 ( numrange PGNSP PGUID 12 1 0 0 0 f f f f f f i s 2 0 3906 "1700 1700" _null_ _null_ _null_ _null_ _null_ range_constructor2 _null_ _null_ _null_ )); -DESCR("numrange constructor"); -DATA(insert OID = 3845 ( numrange PGNSP PGUID 12 1 0 0 0 f f f f f f i s 3 0 3906 "1700 1700 25" _null_ _null_ _null_ _null_ _null_ range_constructor3 _null_ _null_ _null_ )); -DESCR("numrange constructor"); -DATA(insert OID = 3933 ( tsrange PGNSP PGUID 12 1 0 0 0 f f f f f f i s 2 0 3908 "1114 1114" _null_ _null_ _null_ _null_ _null_ range_constructor2 _null_ _null_ _null_ )); -DESCR("tsrange constructor"); -DATA(insert OID = 3934 ( tsrange PGNSP PGUID 12 1 0 0 0 f f f f f f i s 3 0 3908 "1114 1114 25" _null_ _null_ _null_ _null_ _null_ range_constructor3 _null_ _null_ _null_ )); -DESCR("tsrange constructor"); -DATA(insert OID = 3937 ( tstzrange PGNSP PGUID 12 1 0 0 0 f f f f f f i s 2 0 3910 "1184 1184" _null_ _null_ _null_ _null_ _null_ range_constructor2 _null_ _null_ _null_ )); -DESCR("tstzrange constructor"); -DATA(insert OID = 3938 ( tstzrange PGNSP PGUID 12 1 0 0 0 f f f f f f i s 3 0 3910 "1184 1184 25" _null_ _null_ _null_ _null_ _null_ range_constructor3 _null_ _null_ _null_ )); -DESCR("tstzrange constructor"); -DATA(insert OID = 3941 ( daterange PGNSP PGUID 12 1 0 0 0 f f f f f f i s 2 0 3912 "1082 1082" _null_ _null_ _null_ _null_ _null_ range_constructor2 _null_ _null_ _null_ )); -DESCR("daterange constructor"); -DATA(insert OID = 3942 ( daterange PGNSP PGUID 12 1 0 0 0 f f f f f f i s 3 0 3912 "1082 1082 25" _null_ _null_ _null_ _null_ _null_ range_constructor3 _null_ _null_ _null_ )); -DESCR("daterange constructor"); -DATA(insert OID = 3945 ( int8range PGNSP PGUID 12 1 0 0 0 f f f f f f i s 2 0 3926 "20 20" _null_ _null_ _null_ _null_ _null_ range_constructor2 _null_ _null_ _null_ )); -DESCR("int8range constructor"); -DATA(insert OID = 3946 ( int8range PGNSP PGUID 12 1 0 0 0 f f f f f f i s 3 0 3926 "20 20 25" _null_ _null_ _null_ _null_ _null_ range_constructor3 _null_ _null_ _null_ )); -DESCR("int8range constructor"); - -/* date, time, timestamp constructors */ -DATA(insert OID = 3846 ( make_date PGNSP PGUID 12 1 0 0 0 f f f f t f i s 3 0 1082 "23 23 23" _null_ _null_ "{year,month,day}" _null_ _null_ make_date _null_ _null_ _null_ )); -DESCR("construct date"); -DATA(insert OID = 3847 ( make_time PGNSP PGUID 12 1 0 0 0 f f f f t f i s 3 0 1083 "23 23 701" _null_ _null_ "{hour,min,sec}" _null_ _null_ make_time _null_ _null_ _null_ )); -DESCR("construct time"); -DATA(insert OID = 3461 ( make_timestamp PGNSP PGUID 12 1 0 0 0 f f f f t f i s 6 0 1114 "23 23 23 23 23 701" _null_ _null_ "{year,month,mday,hour,min,sec}" _null_ _null_ make_timestamp _null_ _null_ _null_ )); -DESCR("construct timestamp"); -DATA(insert OID = 3462 ( make_timestamptz PGNSP PGUID 12 1 0 0 0 f f f f t f s s 6 0 1184 "23 23 23 23 23 701" _null_ _null_ "{year,month,mday,hour,min,sec}" _null_ _null_ make_timestamptz _null_ _null_ _null_ )); -DESCR("construct timestamp with time zone"); -DATA(insert OID = 3463 ( make_timestamptz PGNSP PGUID 12 1 0 0 0 f f f f t f s s 7 0 1184 "23 23 23 23 23 701 25" _null_ _null_ "{year,month,mday,hour,min,sec,timezone}" _null_ _null_ make_timestamptz_at_timezone _null_ _null_ _null_ )); -DESCR("construct timestamp with time zone"); -DATA(insert OID = 3464 ( make_interval PGNSP PGUID 12 1 0 0 0 f f f f t f i s 7 0 1186 "23 23 23 23 23 23 701" _null_ _null_ "{years,months,weeks,days,hours,mins,secs}" _null_ _null_ make_interval _null_ _null_ _null_ )); -DESCR("construct interval"); - -/* spgist opclasses */ -DATA(insert OID = 4018 ( spg_quad_config PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 2278 "2281 2281" _null_ _null_ _null_ _null_ _null_ spg_quad_config _null_ _null_ _null_ )); -DESCR("SP-GiST support for quad tree over point"); -DATA(insert OID = 4019 ( spg_quad_choose PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 2278 "2281 2281" _null_ _null_ _null_ _null_ _null_ spg_quad_choose _null_ _null_ _null_ )); -DESCR("SP-GiST support for quad tree over point"); -DATA(insert OID = 4020 ( spg_quad_picksplit PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 2278 "2281 2281" _null_ _null_ _null_ _null_ _null_ spg_quad_picksplit _null_ _null_ _null_ )); -DESCR("SP-GiST support for quad tree over point"); -DATA(insert OID = 4021 ( spg_quad_inner_consistent PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 2278 "2281 2281" _null_ _null_ _null_ _null_ _null_ spg_quad_inner_consistent _null_ _null_ _null_ )); -DESCR("SP-GiST support for quad tree over point"); -DATA(insert OID = 4022 ( spg_quad_leaf_consistent PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 16 "2281 2281" _null_ _null_ _null_ _null_ _null_ spg_quad_leaf_consistent _null_ _null_ _null_ )); -DESCR("SP-GiST support for quad tree and k-d tree over point"); - -DATA(insert OID = 4023 ( spg_kd_config PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 2278 "2281 2281" _null_ _null_ _null_ _null_ _null_ spg_kd_config _null_ _null_ _null_ )); -DESCR("SP-GiST support for k-d tree over point"); -DATA(insert OID = 4024 ( spg_kd_choose PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 2278 "2281 2281" _null_ _null_ _null_ _null_ _null_ spg_kd_choose _null_ _null_ _null_ )); -DESCR("SP-GiST support for k-d tree over point"); -DATA(insert OID = 4025 ( spg_kd_picksplit PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 2278 "2281 2281" _null_ _null_ _null_ _null_ _null_ spg_kd_picksplit _null_ _null_ _null_ )); -DESCR("SP-GiST support for k-d tree over point"); -DATA(insert OID = 4026 ( spg_kd_inner_consistent PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 2278 "2281 2281" _null_ _null_ _null_ _null_ _null_ spg_kd_inner_consistent _null_ _null_ _null_ )); -DESCR("SP-GiST support for k-d tree over point"); - -DATA(insert OID = 4027 ( spg_text_config PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 2278 "2281 2281" _null_ _null_ _null_ _null_ _null_ spg_text_config _null_ _null_ _null_ )); -DESCR("SP-GiST support for radix tree over text"); -DATA(insert OID = 4028 ( spg_text_choose PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 2278 "2281 2281" _null_ _null_ _null_ _null_ _null_ spg_text_choose _null_ _null_ _null_ )); -DESCR("SP-GiST support for radix tree over text"); -DATA(insert OID = 4029 ( spg_text_picksplit PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 2278 "2281 2281" _null_ _null_ _null_ _null_ _null_ spg_text_picksplit _null_ _null_ _null_ )); -DESCR("SP-GiST support for radix tree over text"); -DATA(insert OID = 4030 ( spg_text_inner_consistent PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 2278 "2281 2281" _null_ _null_ _null_ _null_ _null_ spg_text_inner_consistent _null_ _null_ _null_ )); -DESCR("SP-GiST support for radix tree over text"); -DATA(insert OID = 4031 ( spg_text_leaf_consistent PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 16 "2281 2281" _null_ _null_ _null_ _null_ _null_ spg_text_leaf_consistent _null_ _null_ _null_ )); -DESCR("SP-GiST support for radix tree over text"); - -DATA(insert OID = 3469 ( spg_range_quad_config PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 2278 "2281 2281" _null_ _null_ _null_ _null_ _null_ spg_range_quad_config _null_ _null_ _null_ )); -DESCR("SP-GiST support for quad tree over range"); -DATA(insert OID = 3470 ( spg_range_quad_choose PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 2278 "2281 2281" _null_ _null_ _null_ _null_ _null_ spg_range_quad_choose _null_ _null_ _null_ )); -DESCR("SP-GiST support for quad tree over range"); -DATA(insert OID = 3471 ( spg_range_quad_picksplit PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 2278 "2281 2281" _null_ _null_ _null_ _null_ _null_ spg_range_quad_picksplit _null_ _null_ _null_ )); -DESCR("SP-GiST support for quad tree over range"); -DATA(insert OID = 3472 ( spg_range_quad_inner_consistent PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 2278 "2281 2281" _null_ _null_ _null_ _null_ _null_ spg_range_quad_inner_consistent _null_ _null_ _null_ )); -DESCR("SP-GiST support for quad tree over range"); -DATA(insert OID = 3473 ( spg_range_quad_leaf_consistent PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 16 "2281 2281" _null_ _null_ _null_ _null_ _null_ spg_range_quad_leaf_consistent _null_ _null_ _null_ )); -DESCR("SP-GiST support for quad tree over range"); - -DATA(insert OID = 5012 ( spg_box_quad_config PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 2278 "2281 2281" _null_ _null_ _null_ _null_ _null_ spg_box_quad_config _null_ _null_ _null_ )); -DESCR("SP-GiST support for quad tree over box"); -DATA(insert OID = 5013 ( spg_box_quad_choose PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 2278 "2281 2281" _null_ _null_ _null_ _null_ _null_ spg_box_quad_choose _null_ _null_ _null_ )); -DESCR("SP-GiST support for quad tree over box"); -DATA(insert OID = 5014 ( spg_box_quad_picksplit PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 2278 "2281 2281" _null_ _null_ _null_ _null_ _null_ spg_box_quad_picksplit _null_ _null_ _null_ )); -DESCR("SP-GiST support for quad tree over box"); -DATA(insert OID = 5015 ( spg_box_quad_inner_consistent PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 2278 "2281 2281" _null_ _null_ _null_ _null_ _null_ spg_box_quad_inner_consistent _null_ _null_ _null_ )); -DESCR("SP-GiST support for quad tree over box"); -DATA(insert OID = 5016 ( spg_box_quad_leaf_consistent PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 16 "2281 2281" _null_ _null_ _null_ _null_ _null_ spg_box_quad_leaf_consistent _null_ _null_ _null_ )); -DESCR("SP-GiST support for quad tree over box"); - -/* replication slots */ -DATA(insert OID = 3779 ( pg_create_physical_replication_slot PGNSP PGUID 12 1 0 0 0 f f f f t f v u 3 0 2249 "19 16 16" "{19,16,16,19,3220}" "{i,i,i,o,o}" "{slot_name,immediately_reserve,temporary,slot_name,lsn}" _null_ _null_ pg_create_physical_replication_slot _null_ _null_ _null_ )); -DESCR("create a physical replication slot"); -DATA(insert OID = 3780 ( pg_drop_replication_slot PGNSP PGUID 12 1 0 0 0 f f f f t f v u 1 0 2278 "19" _null_ _null_ _null_ _null_ _null_ pg_drop_replication_slot _null_ _null_ _null_ )); -DESCR("drop a replication slot"); -DATA(insert OID = 3781 ( pg_get_replication_slots PGNSP PGUID 12 1 10 0 0 f f f f f t s s 0 0 2249 "" "{19,19,25,26,16,16,23,28,28,3220,3220}" "{o,o,o,o,o,o,o,o,o,o,o}" "{slot_name,plugin,slot_type,datoid,temporary,active,active_pid,xmin,catalog_xmin,restart_lsn,confirmed_flush_lsn}" _null_ _null_ pg_get_replication_slots _null_ _null_ _null_ )); -DESCR("information about replication slots currently in use"); -DATA(insert OID = 3786 ( pg_create_logical_replication_slot PGNSP PGUID 12 1 0 0 0 f f f f t f v u 3 0 2249 "19 19 16" "{19,19,16,25,3220}" "{i,i,i,o,o}" "{slot_name,plugin,temporary,slot_name,lsn}" _null_ _null_ pg_create_logical_replication_slot _null_ _null_ _null_ )); -DESCR("set up a logical replication slot"); -DATA(insert OID = 3782 ( pg_logical_slot_get_changes PGNSP PGUID 12 1000 1000 25 0 f f f f f t v u 4 0 2249 "19 3220 23 1009" "{19,3220,23,1009,3220,28,25}" "{i,i,i,v,o,o,o}" "{slot_name,upto_lsn,upto_nchanges,options,lsn,xid,data}" _null_ _null_ pg_logical_slot_get_changes _null_ _null_ _null_ )); -DESCR("get changes from replication slot"); -DATA(insert OID = 3783 ( pg_logical_slot_get_binary_changes PGNSP PGUID 12 1000 1000 25 0 f f f f f t v u 4 0 2249 "19 3220 23 1009" "{19,3220,23,1009,3220,28,17}" "{i,i,i,v,o,o,o}" "{slot_name,upto_lsn,upto_nchanges,options,lsn,xid,data}" _null_ _null_ pg_logical_slot_get_binary_changes _null_ _null_ _null_ )); -DESCR("get binary changes from replication slot"); -DATA(insert OID = 3784 ( pg_logical_slot_peek_changes PGNSP PGUID 12 1000 1000 25 0 f f f f f t v u 4 0 2249 "19 3220 23 1009" "{19,3220,23,1009,3220,28,25}" "{i,i,i,v,o,o,o}" "{slot_name,upto_lsn,upto_nchanges,options,lsn,xid,data}" _null_ _null_ pg_logical_slot_peek_changes _null_ _null_ _null_ )); -DESCR("peek at changes from replication slot"); -DATA(insert OID = 3785 ( pg_logical_slot_peek_binary_changes PGNSP PGUID 12 1000 1000 25 0 f f f f f t v u 4 0 2249 "19 3220 23 1009" "{19,3220,23,1009,3220,28,17}" "{i,i,i,v,o,o,o}" "{slot_name,upto_lsn,upto_nchanges,options,lsn,xid,data}" _null_ _null_ pg_logical_slot_peek_binary_changes _null_ _null_ _null_ )); -DESCR("peek at binary changes from replication slot"); -DATA(insert OID = 3577 ( pg_logical_emit_message PGNSP PGUID 12 1 0 0 0 f f f f t f v u 3 0 3220 "16 25 25" _null_ _null_ _null_ _null_ _null_ pg_logical_emit_message_text _null_ _null_ _null_ )); -DESCR("emit a textual logical decoding message"); -DATA(insert OID = 3578 ( pg_logical_emit_message PGNSP PGUID 12 1 0 0 0 f f f f t f v u 3 0 3220 "16 25 17" _null_ _null_ _null_ _null_ _null_ pg_logical_emit_message_bytea _null_ _null_ _null_ )); -DESCR("emit a binary logical decoding message"); - -/* event triggers */ -DATA(insert OID = 3566 ( pg_event_trigger_dropped_objects PGNSP PGUID 12 10 100 0 0 f f f f t t s r 0 0 2249 "" "{26,26,23,16,16,16,25,25,25,25,1009,1009}" "{o,o,o,o,o,o,o,o,o,o,o,o}" "{classid, objid, objsubid, original, normal, is_temporary, object_type, schema_name, object_name, object_identity, address_names, address_args}" _null_ _null_ pg_event_trigger_dropped_objects _null_ _null_ _null_ )); -DESCR("list objects dropped by the current command"); -DATA(insert OID = 4566 ( pg_event_trigger_table_rewrite_oid PGNSP PGUID 12 1 0 0 0 f f f f t f s r 0 0 26 "" "{26}" "{o}" "{oid}" _null_ _null_ pg_event_trigger_table_rewrite_oid _null_ _null_ _null_ )); -DESCR("return Oid of the table getting rewritten"); -DATA(insert OID = 4567 ( pg_event_trigger_table_rewrite_reason PGNSP PGUID 12 1 0 0 0 f f f f t f s r 0 0 23 "" _null_ _null_ _null_ _null_ _null_ pg_event_trigger_table_rewrite_reason _null_ _null_ _null_ )); -DESCR("return reason code for table getting rewritten"); -DATA(insert OID = 4568 ( pg_event_trigger_ddl_commands PGNSP PGUID 12 10 100 0 0 f f f f t t s r 0 0 2249 "" "{26,26,23,25,25,25,25,16,32}" "{o,o,o,o,o,o,o,o,o}" "{classid, objid, objsubid, command_tag, object_type, schema_name, object_identity, in_extension, command}" _null_ _null_ pg_event_trigger_ddl_commands _null_ _null_ _null_ )); -DESCR("list DDL actions being executed by the current command"); - -/* generic transition functions for ordered-set aggregates */ -DATA(insert OID = 3970 ( ordered_set_transition PGNSP PGUID 12 1 0 0 0 f f f f f f i s 2 0 2281 "2281 2276" _null_ _null_ _null_ _null_ _null_ ordered_set_transition _null_ _null_ _null_ )); -DESCR("aggregate transition function"); -DATA(insert OID = 3971 ( ordered_set_transition_multi PGNSP PGUID 12 1 0 2276 0 f f f f f f i s 2 0 2281 "2281 2276" "{2281,2276}" "{i,v}" _null_ _null_ _null_ ordered_set_transition_multi _null_ _null_ _null_ )); -DESCR("aggregate transition function"); - -/* inverse distribution aggregates (and their support functions) */ -DATA(insert OID = 3972 ( percentile_disc PGNSP PGUID 12 1 0 0 0 t f f f f f i s 2 0 2283 "701 2283" _null_ _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ )); -DESCR("discrete percentile"); -DATA(insert OID = 3973 ( percentile_disc_final PGNSP PGUID 12 1 0 0 0 f f f f f f i s 3 0 2283 "2281 701 2283" _null_ _null_ _null_ _null_ _null_ percentile_disc_final _null_ _null_ _null_ )); -DESCR("aggregate final function"); -DATA(insert OID = 3974 ( percentile_cont PGNSP PGUID 12 1 0 0 0 t f f f f f i s 2 0 701 "701 701" _null_ _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ )); -DESCR("continuous distribution percentile"); -DATA(insert OID = 3975 ( percentile_cont_float8_final PGNSP PGUID 12 1 0 0 0 f f f f f f i s 2 0 701 "2281 701" _null_ _null_ _null_ _null_ _null_ percentile_cont_float8_final _null_ _null_ _null_ )); -DESCR("aggregate final function"); -DATA(insert OID = 3976 ( percentile_cont PGNSP PGUID 12 1 0 0 0 t f f f f f i s 2 0 1186 "701 1186" _null_ _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ )); -DESCR("continuous distribution percentile"); -DATA(insert OID = 3977 ( percentile_cont_interval_final PGNSP PGUID 12 1 0 0 0 f f f f f f i s 2 0 1186 "2281 701" _null_ _null_ _null_ _null_ _null_ percentile_cont_interval_final _null_ _null_ _null_ )); -DESCR("aggregate final function"); -DATA(insert OID = 3978 ( percentile_disc PGNSP PGUID 12 1 0 0 0 t f f f f f i s 2 0 2277 "1022 2283" _null_ _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ )); -DESCR("multiple discrete percentiles"); -DATA(insert OID = 3979 ( percentile_disc_multi_final PGNSP PGUID 12 1 0 0 0 f f f f f f i s 3 0 2277 "2281 1022 2283" _null_ _null_ _null_ _null_ _null_ percentile_disc_multi_final _null_ _null_ _null_ )); -DESCR("aggregate final function"); -DATA(insert OID = 3980 ( percentile_cont PGNSP PGUID 12 1 0 0 0 t f f f f f i s 2 0 1022 "1022 701" _null_ _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ )); -DESCR("multiple continuous percentiles"); -DATA(insert OID = 3981 ( percentile_cont_float8_multi_final PGNSP PGUID 12 1 0 0 0 f f f f f f i s 2 0 1022 "2281 1022" _null_ _null_ _null_ _null_ _null_ percentile_cont_float8_multi_final _null_ _null_ _null_ )); -DESCR("aggregate final function"); -DATA(insert OID = 3982 ( percentile_cont PGNSP PGUID 12 1 0 0 0 t f f f f f i s 2 0 1187 "1022 1186" _null_ _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ )); -DESCR("multiple continuous percentiles"); -DATA(insert OID = 3983 ( percentile_cont_interval_multi_final PGNSP PGUID 12 1 0 0 0 f f f f f f i s 2 0 1187 "2281 1022" _null_ _null_ _null_ _null_ _null_ percentile_cont_interval_multi_final _null_ _null_ _null_ )); -DESCR("aggregate final function"); -DATA(insert OID = 3984 ( mode PGNSP PGUID 12 1 0 0 0 t f f f f f i s 1 0 2283 "2283" _null_ _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ )); -DESCR("most common value"); -DATA(insert OID = 3985 ( mode_final PGNSP PGUID 12 1 0 0 0 f f f f f f i s 2 0 2283 "2281 2283" _null_ _null_ _null_ _null_ _null_ mode_final _null_ _null_ _null_ )); -DESCR("aggregate final function"); - -/* hypothetical-set aggregates (and their support functions) */ -DATA(insert OID = 3986 ( rank PGNSP PGUID 12 1 0 2276 0 t f f f f f i s 1 0 20 "2276" "{2276}" "{v}" _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ )); -DESCR("rank of hypothetical row"); -DATA(insert OID = 3987 ( rank_final PGNSP PGUID 12 1 0 2276 0 f f f f f f i s 2 0 20 "2281 2276" "{2281,2276}" "{i,v}" _null_ _null_ _null_ hypothetical_rank_final _null_ _null_ _null_ )); -DESCR("aggregate final function"); -DATA(insert OID = 3988 ( percent_rank PGNSP PGUID 12 1 0 2276 0 t f f f f f i s 1 0 701 "2276" "{2276}" "{v}" _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ )); -DESCR("fractional rank of hypothetical row"); -DATA(insert OID = 3989 ( percent_rank_final PGNSP PGUID 12 1 0 2276 0 f f f f f f i s 2 0 701 "2281 2276" "{2281,2276}" "{i,v}" _null_ _null_ _null_ hypothetical_percent_rank_final _null_ _null_ _null_ )); -DESCR("aggregate final function"); -DATA(insert OID = 3990 ( cume_dist PGNSP PGUID 12 1 0 2276 0 t f f f f f i s 1 0 701 "2276" "{2276}" "{v}" _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ )); -DESCR("cumulative distribution of hypothetical row"); -DATA(insert OID = 3991 ( cume_dist_final PGNSP PGUID 12 1 0 2276 0 f f f f f f i s 2 0 701 "2281 2276" "{2281,2276}" "{i,v}" _null_ _null_ _null_ hypothetical_cume_dist_final _null_ _null_ _null_ )); -DESCR("aggregate final function"); -DATA(insert OID = 3992 ( dense_rank PGNSP PGUID 12 1 0 2276 0 t f f f f f i s 1 0 20 "2276" "{2276}" "{v}" _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ )); -DESCR("rank of hypothetical row without gaps"); -DATA(insert OID = 3993 ( dense_rank_final PGNSP PGUID 12 1 0 2276 0 f f f f f f i s 2 0 20 "2281 2276" "{2281,2276}" "{i,v}" _null_ _null_ _null_ hypothetical_dense_rank_final _null_ _null_ _null_ )); -DESCR("aggregate final function"); - -/* pg_upgrade support */ -DATA(insert OID = 3582 ( binary_upgrade_set_next_pg_type_oid PGNSP PGUID 12 1 0 0 0 f f f f t f v r 1 0 2278 "26" _null_ _null_ _null_ _null_ _null_ binary_upgrade_set_next_pg_type_oid _null_ _null_ _null_ )); -DESCR("for use by pg_upgrade"); -DATA(insert OID = 3584 ( binary_upgrade_set_next_array_pg_type_oid PGNSP PGUID 12 1 0 0 0 f f f f t f v r 1 0 2278 "26" _null_ _null_ _null_ _null_ _null_ binary_upgrade_set_next_array_pg_type_oid _null_ _null_ _null_ )); -DESCR("for use by pg_upgrade"); -DATA(insert OID = 3585 ( binary_upgrade_set_next_toast_pg_type_oid PGNSP PGUID 12 1 0 0 0 f f f f t f v r 1 0 2278 "26" _null_ _null_ _null_ _null_ _null_ binary_upgrade_set_next_toast_pg_type_oid _null_ _null_ _null_ )); -DESCR("for use by pg_upgrade"); -DATA(insert OID = 3586 ( binary_upgrade_set_next_heap_pg_class_oid PGNSP PGUID 12 1 0 0 0 f f f f t f v r 1 0 2278 "26" _null_ _null_ _null_ _null_ _null_ binary_upgrade_set_next_heap_pg_class_oid _null_ _null_ _null_ )); -DESCR("for use by pg_upgrade"); -DATA(insert OID = 3587 ( binary_upgrade_set_next_index_pg_class_oid PGNSP PGUID 12 1 0 0 0 f f f f t f v r 1 0 2278 "26" _null_ _null_ _null_ _null_ _null_ binary_upgrade_set_next_index_pg_class_oid _null_ _null_ _null_ )); -DESCR("for use by pg_upgrade"); -DATA(insert OID = 3588 ( binary_upgrade_set_next_toast_pg_class_oid PGNSP PGUID 12 1 0 0 0 f f f f t f v r 1 0 2278 "26" _null_ _null_ _null_ _null_ _null_ binary_upgrade_set_next_toast_pg_class_oid _null_ _null_ _null_ )); -DESCR("for use by pg_upgrade"); -DATA(insert OID = 3589 ( binary_upgrade_set_next_pg_enum_oid PGNSP PGUID 12 1 0 0 0 f f f f t f v r 1 0 2278 "26" _null_ _null_ _null_ _null_ _null_ binary_upgrade_set_next_pg_enum_oid _null_ _null_ _null_ )); -DESCR("for use by pg_upgrade"); -DATA(insert OID = 3590 ( binary_upgrade_set_next_pg_authid_oid PGNSP PGUID 12 1 0 0 0 f f f f t f v r 1 0 2278 "26" _null_ _null_ _null_ _null_ _null_ binary_upgrade_set_next_pg_authid_oid _null_ _null_ _null_ )); -DESCR("for use by pg_upgrade"); -DATA(insert OID = 3591 ( binary_upgrade_create_empty_extension PGNSP PGUID 12 1 0 0 0 f f f f f f v u 7 0 2278 "25 25 16 25 1028 1009 1009" _null_ _null_ _null_ _null_ _null_ binary_upgrade_create_empty_extension _null_ _null_ _null_ )); -DESCR("for use by pg_upgrade"); -DATA(insert OID = 4083 ( binary_upgrade_set_record_init_privs PGNSP PGUID 12 1 0 0 0 f f f f t f v r 1 0 2278 "16" _null_ _null_ _null_ _null_ _null_ binary_upgrade_set_record_init_privs _null_ _null_ _null_ )); -DESCR("for use by pg_upgrade"); - -/* replication/origin.h */ -DATA(insert OID = 6003 ( pg_replication_origin_create PGNSP PGUID 12 1 0 0 0 f f f f t f v u 1 0 26 "25" _null_ _null_ _null_ _null_ _null_ pg_replication_origin_create _null_ _null_ _null_ )); -DESCR("create a replication origin"); - -DATA(insert OID = 6004 ( pg_replication_origin_drop PGNSP PGUID 12 1 0 0 0 f f f f t f v u 1 0 2278 "25" _null_ _null_ _null_ _null_ _null_ pg_replication_origin_drop _null_ _null_ _null_ )); -DESCR("drop replication origin identified by its name"); - -DATA(insert OID = 6005 ( pg_replication_origin_oid PGNSP PGUID 12 1 0 0 0 f f f f t f s s 1 0 26 "25" _null_ _null_ _null_ _null_ _null_ pg_replication_origin_oid _null_ _null_ _null_ )); -DESCR("translate the replication origin's name to its id"); - -DATA(insert OID = 6006 ( pg_replication_origin_session_setup PGNSP PGUID 12 1 0 0 0 f f f f t f v u 1 0 2278 "25" _null_ _null_ _null_ _null_ _null_ pg_replication_origin_session_setup _null_ _null_ _null_ )); -DESCR("configure session to maintain replication progress tracking for the passed in origin"); - -DATA(insert OID = 6007 ( pg_replication_origin_session_reset PGNSP PGUID 12 1 0 0 0 f f f f t f v u 0 0 2278 "" _null_ _null_ _null_ _null_ _null_ pg_replication_origin_session_reset _null_ _null_ _null_ )); -DESCR("teardown configured replication progress tracking"); - -DATA(insert OID = 6008 ( pg_replication_origin_session_is_setup PGNSP PGUID 12 1 0 0 0 f f f f t f v r 0 0 16 "" _null_ _null_ _null_ _null_ _null_ pg_replication_origin_session_is_setup _null_ _null_ _null_ )); -DESCR("is a replication origin configured in this session"); - -DATA(insert OID = 6009 ( pg_replication_origin_session_progress PGNSP PGUID 12 1 0 0 0 f f f f t f v u 1 0 3220 "16" _null_ _null_ _null_ _null_ _null_ pg_replication_origin_session_progress _null_ _null_ _null_ )); -DESCR("get the replication progress of the current session"); - -DATA(insert OID = 6010 ( pg_replication_origin_xact_setup PGNSP PGUID 12 1 0 0 0 f f f f t f v r 2 0 2278 "3220 1184" _null_ _null_ _null_ _null_ _null_ pg_replication_origin_xact_setup _null_ _null_ _null_ )); -DESCR("setup the transaction's origin lsn and timestamp"); - -DATA(insert OID = 6011 ( pg_replication_origin_xact_reset PGNSP PGUID 12 1 0 0 0 f f f f t f v r 0 0 2278 "" _null_ _null_ _null_ _null_ _null_ pg_replication_origin_xact_reset _null_ _null_ _null_ )); -DESCR("reset the transaction's origin lsn and timestamp"); - -DATA(insert OID = 6012 ( pg_replication_origin_advance PGNSP PGUID 12 1 0 0 0 f f f f t f v u 2 0 2278 "25 3220" _null_ _null_ _null_ _null_ _null_ pg_replication_origin_advance _null_ _null_ _null_ )); -DESCR("advance replication origin to specific location"); - -DATA(insert OID = 6013 ( pg_replication_origin_progress PGNSP PGUID 12 1 0 0 0 f f f f t f v u 2 0 3220 "25 16" _null_ _null_ _null_ _null_ _null_ pg_replication_origin_progress _null_ _null_ _null_ )); -DESCR("get an individual replication origin's replication progress"); - -DATA(insert OID = 6014 ( pg_show_replication_origin_status PGNSP PGUID 12 1 100 0 0 f f f f f t v r 0 0 2249 "" "{26,25,3220,3220}" "{o,o,o,o}" "{local_id, external_id, remote_lsn, local_lsn}" _null_ _null_ pg_show_replication_origin_status _null_ _null_ _null_ )); -DESCR("get progress for all replication origins"); - -/* publications */ -DATA(insert OID = 6119 ( pg_get_publication_tables PGNSP PGUID 12 1 1000 0 0 f f f f t t s s 1 0 26 "25" "{25,26}" "{i,o}" "{pubname,relid}" _null_ _null_ pg_get_publication_tables _null_ _null_ _null_ )); -DESCR("get OIDs of tables in a publication"); -DATA(insert OID = 6121 ( pg_relation_is_publishable PGNSP PGUID 12 1 0 0 0 f f f f t f s s 1 0 16 "2205" _null_ _null_ _null_ _null_ _null_ pg_relation_is_publishable _null_ _null_ _null_ )); -DESCR("returns whether a relation can be part of a publication"); - -/* rls */ -DATA(insert OID = 3298 ( row_security_active PGNSP PGUID 12 1 0 0 0 f f f f t f s s 1 0 16 "26" _null_ _null_ _null_ _null_ _null_ row_security_active _null_ _null_ _null_ )); -DESCR("row security for current context active on table by table oid"); -DATA(insert OID = 3299 ( row_security_active PGNSP PGUID 12 1 0 0 0 f f f f t f s s 1 0 16 "25" _null_ _null_ _null_ _null_ _null_ row_security_active_name _null_ _null_ _null_ )); -DESCR("row security for current context active on table by table name"); - -/* pg_config */ -DATA(insert OID = 3400 ( pg_config PGNSP PGUID 12 1 23 0 0 f f f f t t i r 0 0 2249 "" "{25,25}" "{o,o}" "{name,setting}" _null_ _null_ pg_config _null_ _null_ _null_ )); -DESCR("pg_config binary as a function"); - -/* pg_controldata related functions */ -DATA(insert OID = 3441 ( pg_control_system PGNSP PGUID 12 1 0 0 0 f f f f t f v s 0 0 2249 "" "{23,23,20,1184}" "{o,o,o,o}" "{pg_control_version,catalog_version_no,system_identifier,pg_control_last_modified}" _null_ _null_ pg_control_system _null_ _null_ _null_ )); -DESCR("pg_controldata general state information as a function"); - -DATA(insert OID = 3442 ( pg_control_checkpoint PGNSP PGUID 12 1 0 0 0 f f f f t f v s 0 0 2249 "" "{3220,3220,3220,25,23,23,16,25,26,28,28,28,26,28,28,26,28,28,1184}" "{o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o}" "{checkpoint_lsn,prior_lsn,redo_lsn,redo_wal_file,timeline_id,prev_timeline_id,full_page_writes,next_xid,next_oid,next_multixact_id,next_multi_offset,oldest_xid,oldest_xid_dbid,oldest_active_xid,oldest_multi_xid,oldest_multi_dbid,oldest_commit_ts_xid,newest_commit_ts_xid,checkpoint_time}" _null_ _null_ pg_control_checkpoint _null_ _null_ _null_ )); -DESCR("pg_controldata checkpoint state information as a function"); - -DATA(insert OID = 3443 ( pg_control_recovery PGNSP PGUID 12 1 0 0 0 f f f f t f v s 0 0 2249 "" "{3220,23,3220,3220,16}" "{o,o,o,o,o}" "{min_recovery_end_lsn,min_recovery_end_timeline,backup_start_lsn,backup_end_lsn,end_of_backup_record_required}" _null_ _null_ pg_control_recovery _null_ _null_ _null_ )); -DESCR("pg_controldata recovery state information as a function"); - -DATA(insert OID = 3444 ( pg_control_init PGNSP PGUID 12 1 0 0 0 f f f f t f v s 0 0 2249 "" "{23,23,23,23,23,23,23,23,23,16,16,23}" "{o,o,o,o,o,o,o,o,o,o,o,o}" "{max_data_alignment,database_block_size,blocks_per_segment,wal_block_size,bytes_per_wal_segment,max_identifier_length,max_index_columns,max_toast_chunk_size,large_object_chunk_size,float4_pass_by_value,float8_pass_by_value,data_page_checksum_version}" _null_ _null_ pg_control_init _null_ _null_ _null_ )); -DESCR("pg_controldata init state information as a function"); - -/* collation management functions */ -DATA(insert OID = 3445 ( pg_import_system_collations PGNSP PGUID 12 100 0 0 0 f f f f t f v u 1 0 23 "4089" _null_ _null_ _null_ _null_ _null_ pg_import_system_collations _null_ _null_ _null_ )); -DESCR("import collations from operating system"); - -DATA(insert OID = 3448 ( pg_collation_actual_version PGNSP PGUID 12 100 0 0 0 f f f f t f v s 1 0 25 "26" _null_ _null_ _null_ _null_ _null_ pg_collation_actual_version _null_ _null_ _null_ )); -DESCR("get actual version of collation from operating system"); - -/* system management/monitoring related functions */ -DATA(insert OID = 3353 ( pg_ls_logdir PGNSP PGUID 12 10 20 0 0 f f f f t t v s 0 0 2249 "" "{25,20,1184}" "{o,o,o}" "{name,size,modification}" _null_ _null_ pg_ls_logdir _null_ _null_ _null_ )); -DESCR("list files in the log directory"); -DATA(insert OID = 3354 ( pg_ls_waldir PGNSP PGUID 12 10 20 0 0 f f f f t t v s 0 0 2249 "" "{25,20,1184}" "{o,o,o}" "{name,size,modification}" _null_ _null_ pg_ls_waldir _null_ _null_ _null_ )); -DESCR("list of files in the WAL directory"); +#define PROKIND_FUNCTION 'f' +#define PROKIND_AGGREGATE 'a' +#define PROKIND_WINDOW 'w' +#define PROKIND_PROCEDURE 'p' /* * Symbolic values for provolatile column: these indicate whether the result @@ -5507,4 +174,38 @@ DESCR("list of files in the WAL directory"); #define PROARGMODE_VARIADIC 'v' #define PROARGMODE_TABLE 't' +#endif /* EXPOSE_TO_CLIENT_CODE */ + + +extern ObjectAddress ProcedureCreate(const char *procedureName, + Oid procNamespace, + bool replace, + bool returnsSet, + Oid returnType, + Oid proowner, + Oid languageObjectId, + Oid languageValidator, + const char *prosrc, + const char *probin, + char prokind, + bool security_definer, + bool isLeakProof, + bool isStrict, + char volatility, + char parallel, + oidvector *parameterTypes, + Datum allParameterTypes, + Datum parameterModes, + Datum parameterNames, + List *parameterDefaults, + Datum trftypes, + Datum proconfig, + Oid prosupport, + float4 procost, + float4 prorows); + +extern bool function_parse_error_transpose(const char *prosrc); + +extern List *oid_array_to_list(Datum datum); + #endif /* PG_PROC_H */ diff --git a/parser/include/catalog/pg_proc_d.h b/parser/include/catalog/pg_proc_d.h new file mode 100644 index 00000000..973c7798 --- /dev/null +++ b/parser/include/catalog/pg_proc_d.h @@ -0,0 +1,99 @@ +/*------------------------------------------------------------------------- + * + * pg_proc_d.h + * Macro definitions for pg_proc + * + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group + * Portions Copyright (c) 1994, Regents of the University of California + * + * NOTES + * ****************************** + * *** DO NOT EDIT THIS FILE! *** + * ****************************** + * + * It has been GENERATED by src/backend/catalog/genbki.pl + * + *------------------------------------------------------------------------- + */ +#ifndef PG_PROC_D_H +#define PG_PROC_D_H + +#define ProcedureRelationId 1255 +#define ProcedureRelation_Rowtype_Id 81 + +#define Anum_pg_proc_oid 1 +#define Anum_pg_proc_proname 2 +#define Anum_pg_proc_pronamespace 3 +#define Anum_pg_proc_proowner 4 +#define Anum_pg_proc_prolang 5 +#define Anum_pg_proc_procost 6 +#define Anum_pg_proc_prorows 7 +#define Anum_pg_proc_provariadic 8 +#define Anum_pg_proc_prosupport 9 +#define Anum_pg_proc_prokind 10 +#define Anum_pg_proc_prosecdef 11 +#define Anum_pg_proc_proleakproof 12 +#define Anum_pg_proc_proisstrict 13 +#define Anum_pg_proc_proretset 14 +#define Anum_pg_proc_provolatile 15 +#define Anum_pg_proc_proparallel 16 +#define Anum_pg_proc_pronargs 17 +#define Anum_pg_proc_pronargdefaults 18 +#define Anum_pg_proc_prorettype 19 +#define Anum_pg_proc_proargtypes 20 +#define Anum_pg_proc_proallargtypes 21 +#define Anum_pg_proc_proargmodes 22 +#define Anum_pg_proc_proargnames 23 +#define Anum_pg_proc_proargdefaults 24 +#define Anum_pg_proc_protrftypes 25 +#define Anum_pg_proc_prosrc 26 +#define Anum_pg_proc_probin 27 +#define Anum_pg_proc_proconfig 28 +#define Anum_pg_proc_proacl 29 + +#define Natts_pg_proc 29 + + +/* + * Symbolic values for prokind column + */ +#define PROKIND_FUNCTION 'f' +#define PROKIND_AGGREGATE 'a' +#define PROKIND_WINDOW 'w' +#define PROKIND_PROCEDURE 'p' + +/* + * Symbolic values for provolatile column: these indicate whether the result + * of a function is dependent *only* on the values of its explicit arguments, + * or can change due to outside factors (such as parameter variables or + * table contents). NOTE: functions having side-effects, such as setval(), + * must be labeled volatile to ensure they will not get optimized away, + * even if the actual return value is not changeable. + */ +#define PROVOLATILE_IMMUTABLE 'i' /* never changes for given input */ +#define PROVOLATILE_STABLE 's' /* does not change within a scan */ +#define PROVOLATILE_VOLATILE 'v' /* can change even within a scan */ + +/* + * Symbolic values for proparallel column: these indicate whether a function + * can be safely be run in a parallel backend, during parallelism but + * necessarily in the master, or only in non-parallel mode. + */ +#define PROPARALLEL_SAFE 's' /* can run in worker or master */ +#define PROPARALLEL_RESTRICTED 'r' /* can run in parallel master only */ +#define PROPARALLEL_UNSAFE 'u' /* banned while in parallel mode */ + +/* + * Symbolic values for proargmodes column. Note that these must agree with + * the FunctionParameterMode enum in parsenodes.h; we declare them here to + * be accessible from either header. + */ +#define PROARGMODE_IN 'i' +#define PROARGMODE_OUT 'o' +#define PROARGMODE_INOUT 'b' +#define PROARGMODE_VARIADIC 'v' +#define PROARGMODE_TABLE 't' + +#define HEAP_TABLE_AM_HANDLER_OID 3 + +#endif /* PG_PROC_D_H */ diff --git a/parser/include/catalog/pg_proc_fn.h b/parser/include/catalog/pg_proc_fn.h deleted file mode 100644 index 2c85f5d2..00000000 --- a/parser/include/catalog/pg_proc_fn.h +++ /dev/null @@ -1,51 +0,0 @@ -/*------------------------------------------------------------------------- - * - * pg_proc_fn.h - * prototypes for functions in catalog/pg_proc.c - * - * - * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group - * Portions Copyright (c) 1994, Regents of the University of California - * - * src/include/catalog/pg_proc_fn.h - * - *------------------------------------------------------------------------- - */ -#ifndef PG_PROC_FN_H -#define PG_PROC_FN_H - -#include "catalog/objectaddress.h" -#include "nodes/pg_list.h" - -extern ObjectAddress ProcedureCreate(const char *procedureName, - Oid procNamespace, - bool replace, - bool returnsSet, - Oid returnType, - Oid proowner, - Oid languageObjectId, - Oid languageValidator, - const char *prosrc, - const char *probin, - bool isAgg, - bool isWindowFunc, - bool security_definer, - bool isLeakProof, - bool isStrict, - char volatility, - char parallel, - oidvector *parameterTypes, - Datum allParameterTypes, - Datum parameterModes, - Datum parameterNames, - List *parameterDefaults, - Datum trftypes, - Datum proconfig, - float4 procost, - float4 prorows); - -extern bool function_parse_error_transpose(const char *prosrc); - -extern List *oid_array_to_list(Datum datum); - -#endif /* PG_PROC_FN_H */ diff --git a/parser/include/catalog/pg_publication.h b/parser/include/catalog/pg_publication.h index be498750..5955ba0c 100644 --- a/parser/include/catalog/pg_publication.h +++ b/parser/include/catalog/pg_publication.h @@ -1,16 +1,16 @@ /*------------------------------------------------------------------------- * * pg_publication.h - * definition of the relation sets relation (pg_publication) + * definition of the "publication" system catalog (pg_publication) * - * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/catalog/pg_publication.h * * NOTES - * the genbki.pl script reads this file and generates .bki - * information from the DATA() statements. + * The Catalog.pm module reads this file and derives schema + * information. * *------------------------------------------------------------------------- */ @@ -19,17 +19,17 @@ #include "catalog/genbki.h" #include "catalog/objectaddress.h" +#include "catalog/pg_publication_d.h" /* ---------------- * pg_publication definition. cpp turns this into * typedef struct FormData_pg_publication - * * ---------------- */ -#define PublicationRelationId 6104 - -CATALOG(pg_publication,6104) +CATALOG(pg_publication,6104,PublicationRelationId) { + Oid oid; /* oid */ + NameData pubname; /* name of the publication */ Oid pubowner; /* publication owner */ @@ -49,6 +49,11 @@ CATALOG(pg_publication,6104) /* true if deletes are published */ bool pubdelete; + /* true if truncates are published */ + bool pubtruncate; + + /* true if partition changes are published using root schema */ + bool pubviaroot; } FormData_pg_publication; /* ---------------- @@ -58,24 +63,12 @@ CATALOG(pg_publication,6104) */ typedef FormData_pg_publication *Form_pg_publication; -/* ---------------- - * compiler constants for pg_publication - * ---------------- - */ - -#define Natts_pg_publication 6 -#define Anum_pg_publication_pubname 1 -#define Anum_pg_publication_pubowner 2 -#define Anum_pg_publication_puballtables 3 -#define Anum_pg_publication_pubinsert 4 -#define Anum_pg_publication_pubupdate 5 -#define Anum_pg_publication_pubdelete 6 - typedef struct PublicationActions { bool pubinsert; bool pubupdate; bool pubdelete; + bool pubtruncate; } PublicationActions; typedef struct Publication @@ -83,23 +76,40 @@ typedef struct Publication Oid oid; char *name; bool alltables; + bool pubviaroot; PublicationActions pubactions; } Publication; extern Publication *GetPublication(Oid pubid); extern Publication *GetPublicationByName(const char *pubname, bool missing_ok); extern List *GetRelationPublications(Oid relid); -extern List *GetPublicationRelations(Oid pubid); + +/*--------- + * Expected values for pub_partopt parameter of GetRelationPublications(), + * which allows callers to specify which partitions of partitioned tables + * mentioned in the publication they expect to see. + * + * ROOT: only the table explicitly mentioned in the publication + * LEAF: only leaf partitions in given tree + * ALL: all partitions in given tree + */ +typedef enum PublicationPartOpt +{ + PUBLICATION_PART_ROOT, + PUBLICATION_PART_LEAF, + PUBLICATION_PART_ALL, +} PublicationPartOpt; + +extern List *GetPublicationRelations(Oid pubid, PublicationPartOpt pub_partopt); extern List *GetAllTablesPublications(void); -extern List *GetAllTablesPublicationRelations(void); +extern List *GetAllTablesPublicationRelations(bool pubviaroot); extern bool is_publishable_relation(Relation rel); extern ObjectAddress publication_add_relation(Oid pubid, Relation targetrel, - bool if_not_exists); + bool if_not_exists); extern Oid get_publication_oid(const char *pubname, bool missing_ok); -extern char *get_publication_name(Oid pubid); +extern char *get_publication_name(Oid pubid, bool missing_ok); -extern Datum pg_get_publication_tables(PG_FUNCTION_ARGS); #endif /* PG_PUBLICATION_H */ diff --git a/parser/include/catalog/pg_publication_d.h b/parser/include/catalog/pg_publication_d.h new file mode 100644 index 00000000..ac098531 --- /dev/null +++ b/parser/include/catalog/pg_publication_d.h @@ -0,0 +1,36 @@ +/*------------------------------------------------------------------------- + * + * pg_publication_d.h + * Macro definitions for pg_publication + * + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group + * Portions Copyright (c) 1994, Regents of the University of California + * + * NOTES + * ****************************** + * *** DO NOT EDIT THIS FILE! *** + * ****************************** + * + * It has been GENERATED by src/backend/catalog/genbki.pl + * + *------------------------------------------------------------------------- + */ +#ifndef PG_PUBLICATION_D_H +#define PG_PUBLICATION_D_H + +#define PublicationRelationId 6104 + +#define Anum_pg_publication_oid 1 +#define Anum_pg_publication_pubname 2 +#define Anum_pg_publication_pubowner 3 +#define Anum_pg_publication_puballtables 4 +#define Anum_pg_publication_pubinsert 5 +#define Anum_pg_publication_pubupdate 6 +#define Anum_pg_publication_pubdelete 7 +#define Anum_pg_publication_pubtruncate 8 +#define Anum_pg_publication_pubviaroot 9 + +#define Natts_pg_publication 9 + + +#endif /* PG_PUBLICATION_D_H */ diff --git a/parser/include/catalog/pg_replication_origin.h b/parser/include/catalog/pg_replication_origin.h index 24c8a843..7477ce49 100644 --- a/parser/include/catalog/pg_replication_origin.h +++ b/parser/include/catalog/pg_replication_origin.h @@ -1,33 +1,33 @@ /*------------------------------------------------------------------------- * * pg_replication_origin.h - * Persistent replication origin registry + * definition of the "replication origin" system catalog + * (pg_replication_origin) * - * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/catalog/pg_replication_origin.h * * NOTES - * the genbki.pl script reads this file and generates .bki - * information from the DATA() statements. + * The Catalog.pm module reads this file and derives schema + * information. * *------------------------------------------------------------------------- */ #ifndef PG_REPLICATION_ORIGIN_H #define PG_REPLICATION_ORIGIN_H -#include "catalog/genbki.h" #include "access/xlogdefs.h" +#include "catalog/genbki.h" +#include "catalog/pg_replication_origin_d.h" /* ---------------- * pg_replication_origin. cpp turns this into * typedef struct FormData_pg_replication_origin * ---------------- */ -#define ReplicationOriginRelationId 6000 - -CATALOG(pg_replication_origin,6000) BKI_SHARED_RELATION BKI_WITHOUT_OIDS +CATALOG(pg_replication_origin,6000,ReplicationOriginRelationId) BKI_SHARED_RELATION { /* * Locally known id that get included into WAL. @@ -54,17 +54,4 @@ CATALOG(pg_replication_origin,6000) BKI_SHARED_RELATION BKI_WITHOUT_OIDS typedef FormData_pg_replication_origin *Form_pg_replication_origin; -/* ---------------- - * compiler constants for pg_replication_origin - * ---------------- - */ -#define Natts_pg_replication_origin 2 -#define Anum_pg_replication_origin_roident 1 -#define Anum_pg_replication_origin_roname 2 - -/* ---------------- - * pg_replication_origin has no initial contents - * ---------------- - */ - #endif /* PG_REPLICATION_ORIGIN_H */ diff --git a/parser/include/catalog/pg_replication_origin_d.h b/parser/include/catalog/pg_replication_origin_d.h new file mode 100644 index 00000000..2fcdd7cf --- /dev/null +++ b/parser/include/catalog/pg_replication_origin_d.h @@ -0,0 +1,29 @@ +/*------------------------------------------------------------------------- + * + * pg_replication_origin_d.h + * Macro definitions for pg_replication_origin + * + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group + * Portions Copyright (c) 1994, Regents of the University of California + * + * NOTES + * ****************************** + * *** DO NOT EDIT THIS FILE! *** + * ****************************** + * + * It has been GENERATED by src/backend/catalog/genbki.pl + * + *------------------------------------------------------------------------- + */ +#ifndef PG_REPLICATION_ORIGIN_D_H +#define PG_REPLICATION_ORIGIN_D_H + +#define ReplicationOriginRelationId 6000 + +#define Anum_pg_replication_origin_roident 1 +#define Anum_pg_replication_origin_roname 2 + +#define Natts_pg_replication_origin 2 + + +#endif /* PG_REPLICATION_ORIGIN_D_H */ diff --git a/parser/include/catalog/pg_statistic.h b/parser/include/catalog/pg_statistic.h index 3713a56b..40a72601 100644 --- a/parser/include/catalog/pg_statistic.h +++ b/parser/include/catalog/pg_statistic.h @@ -1,18 +1,17 @@ /*------------------------------------------------------------------------- * * pg_statistic.h - * definition of the system "statistic" relation (pg_statistic) - * along with the relation's initial contents. + * definition of the "statistics" system catalog (pg_statistic) * * - * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/catalog/pg_statistic.h * * NOTES - * the genbki.pl script reads this file and generates .bki - * information from the DATA() statements. + * The Catalog.pm module reads this file and derives schema + * information. * *------------------------------------------------------------------------- */ @@ -20,15 +19,14 @@ #define PG_STATISTIC_H #include "catalog/genbki.h" +#include "catalog/pg_statistic_d.h" /* ---------------- * pg_statistic definition. cpp turns this into * typedef struct FormData_pg_statistic * ---------------- */ -#define StatisticRelationId 2619 - -CATALOG(pg_statistic,2619) BKI_WITHOUT_OIDS +CATALOG(pg_statistic,2619,StatisticRelationId) { /* These fields form the unique key for the entry: */ Oid starelid; /* relation containing attribute */ @@ -76,12 +74,13 @@ CATALOG(pg_statistic,2619) BKI_WITHOUT_OIDS * statistical data can be placed. Each slot includes: * kind integer code identifying kind of data (see below) * op OID of associated operator, if needed + * coll OID of relevant collation, or 0 if none * numbers float4 array (for statistical values) * values anyarray (for representations of data values) - * The ID and operator fields are never NULL; they are zeroes in an - * unused slot. The numbers and values fields are NULL in an unused - * slot, and might also be NULL in a used slot if the slot kind has - * no need for one or the other. + * The ID, operator, and collation fields are never NULL; they are zeroes + * in an unused slot. The numbers and values fields are NULL in an + * unused slot, and might also be NULL in a used slot if the slot kind + * has no need for one or the other. * ---------------- */ @@ -97,6 +96,12 @@ CATALOG(pg_statistic,2619) BKI_WITHOUT_OIDS Oid staop4; Oid staop5; + Oid stacoll1; + Oid stacoll2; + Oid stacoll3; + Oid stacoll4; + Oid stacoll5; + #ifdef CATALOG_VARLEN /* variable-length fields start here */ float4 stanumbers1[1]; float4 stanumbers2[1]; @@ -128,45 +133,13 @@ CATALOG(pg_statistic,2619) BKI_WITHOUT_OIDS */ typedef FormData_pg_statistic *Form_pg_statistic; -/* ---------------- - * compiler constants for pg_statistic - * ---------------- - */ -#define Natts_pg_statistic 26 -#define Anum_pg_statistic_starelid 1 -#define Anum_pg_statistic_staattnum 2 -#define Anum_pg_statistic_stainherit 3 -#define Anum_pg_statistic_stanullfrac 4 -#define Anum_pg_statistic_stawidth 5 -#define Anum_pg_statistic_stadistinct 6 -#define Anum_pg_statistic_stakind1 7 -#define Anum_pg_statistic_stakind2 8 -#define Anum_pg_statistic_stakind3 9 -#define Anum_pg_statistic_stakind4 10 -#define Anum_pg_statistic_stakind5 11 -#define Anum_pg_statistic_staop1 12 -#define Anum_pg_statistic_staop2 13 -#define Anum_pg_statistic_staop3 14 -#define Anum_pg_statistic_staop4 15 -#define Anum_pg_statistic_staop5 16 -#define Anum_pg_statistic_stanumbers1 17 -#define Anum_pg_statistic_stanumbers2 18 -#define Anum_pg_statistic_stanumbers3 19 -#define Anum_pg_statistic_stanumbers4 20 -#define Anum_pg_statistic_stanumbers5 21 -#define Anum_pg_statistic_stavalues1 22 -#define Anum_pg_statistic_stavalues2 23 -#define Anum_pg_statistic_stavalues3 24 -#define Anum_pg_statistic_stavalues4 25 -#define Anum_pg_statistic_stavalues5 26 +#ifdef EXPOSE_TO_CLIENT_CODE /* - * Currently, five statistical slot "kinds" are defined by core PostgreSQL, - * as documented below. Additional "kinds" will probably appear in - * future to help cope with non-scalar datatypes. Also, custom data types - * can define their own "kind" codes by mutual agreement between a custom - * typanalyze routine and the selectivity estimation functions of the type's - * operators. + * Several statistical slot "kinds" are defined by core PostgreSQL, as + * documented below. Also, custom data types can define their own "kind" + * codes by mutual agreement between a custom typanalyze routine and the + * selectivity estimation functions of the type's operators. * * Code reading the pg_statistic relation should not assume that a particular * data "kind" will appear in any particular slot. Instead, search the @@ -193,7 +166,8 @@ typedef FormData_pg_statistic *Form_pg_statistic; /* * In a "most common values" slot, staop is the OID of the "=" operator - * used to decide whether values are the same or not. stavalues contains + * used to decide whether values are the same or not, and stacoll is the + * collation used (same as column's collation). stavalues contains * the K most common non-null values appearing in the column, and stanumbers * contains their frequencies (fractions of total row count). The values * shall be ordered in decreasing frequency. Note that since the arrays are @@ -205,9 +179,11 @@ typedef FormData_pg_statistic *Form_pg_statistic; /* * A "histogram" slot describes the distribution of scalar data. staop is - * the OID of the "<" operator that describes the sort ordering. (In theory, - * more than one histogram could appear, if a datatype has more than one - * useful sort operator.) stavalues contains M (>=2) non-null values that + * the OID of the "<" operator that describes the sort ordering, and stacoll + * is the relevant collation. (In theory more than one histogram could appear, + * if a datatype has more than one useful sort operator or we care about more + * than one collation. Currently the collation will always be that of the + * underlying column.) stavalues contains M (>=2) non-null values that * divide the non-null column data values into M-1 bins of approximately equal * population. The first stavalues item is the MIN and the last is the MAX. * stanumbers is not used and should be NULL. IMPORTANT POINT: if an MCV @@ -224,11 +200,12 @@ typedef FormData_pg_statistic *Form_pg_statistic; /* * A "correlation" slot describes the correlation between the physical order * of table tuples and the ordering of data values of this column, as seen - * by the "<" operator identified by staop. (As with the histogram, more - * than one entry could theoretically appear.) stavalues is not used and - * should be NULL. stanumbers contains a single entry, the correlation - * coefficient between the sequence of data values and the sequence of - * their actual tuple positions. The coefficient ranges from +1 to -1. + * by the "<" operator identified by staop with the collation identified by + * stacoll. (As with the histogram, more than one entry could theoretically + * appear.) stavalues is not used and should be NULL. stanumbers contains + * a single entry, the correlation coefficient between the sequence of data + * values and the sequence of their actual tuple positions. The coefficient + * ranges from +1 to -1. */ #define STATISTIC_KIND_CORRELATION 3 @@ -237,7 +214,8 @@ typedef FormData_pg_statistic *Form_pg_statistic; * except that it stores the most common non-null *elements* of the column * values. This is useful when the column datatype is an array or some other * type with identifiable elements (for instance, tsvector). staop contains - * the equality operator appropriate to the element type. stavalues contains + * the equality operator appropriate to the element type, and stacoll + * contains the collation to use with it. stavalues contains * the most common element values, and stanumbers their frequencies. Unlike * MCV slots, frequencies are measured as the fraction of non-null rows the * element value appears in, not the frequency of all rows. Also unlike @@ -260,7 +238,8 @@ typedef FormData_pg_statistic *Form_pg_statistic; * A "distinct elements count histogram" slot describes the distribution of * the number of distinct element values present in each row of an array-type * column. Only non-null rows are considered, and only non-null elements. - * staop contains the equality operator appropriate to the element type. + * staop contains the equality operator appropriate to the element type, + * and stacoll contains the collation to use with it. * stavalues is not used and should be NULL. The last member of stanumbers is * the average count of distinct element values over all non-null rows. The * preceding M (>=2) members form a histogram that divides the population of @@ -291,4 +270,6 @@ typedef FormData_pg_statistic *Form_pg_statistic; */ #define STATISTIC_KIND_BOUNDS_HISTOGRAM 7 +#endif /* EXPOSE_TO_CLIENT_CODE */ + #endif /* PG_STATISTIC_H */ diff --git a/parser/include/catalog/pg_statistic_d.h b/parser/include/catalog/pg_statistic_d.h new file mode 100644 index 00000000..1174daa0 --- /dev/null +++ b/parser/include/catalog/pg_statistic_d.h @@ -0,0 +1,194 @@ +/*------------------------------------------------------------------------- + * + * pg_statistic_d.h + * Macro definitions for pg_statistic + * + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group + * Portions Copyright (c) 1994, Regents of the University of California + * + * NOTES + * ****************************** + * *** DO NOT EDIT THIS FILE! *** + * ****************************** + * + * It has been GENERATED by src/backend/catalog/genbki.pl + * + *------------------------------------------------------------------------- + */ +#ifndef PG_STATISTIC_D_H +#define PG_STATISTIC_D_H + +#define StatisticRelationId 2619 + +#define Anum_pg_statistic_starelid 1 +#define Anum_pg_statistic_staattnum 2 +#define Anum_pg_statistic_stainherit 3 +#define Anum_pg_statistic_stanullfrac 4 +#define Anum_pg_statistic_stawidth 5 +#define Anum_pg_statistic_stadistinct 6 +#define Anum_pg_statistic_stakind1 7 +#define Anum_pg_statistic_stakind2 8 +#define Anum_pg_statistic_stakind3 9 +#define Anum_pg_statistic_stakind4 10 +#define Anum_pg_statistic_stakind5 11 +#define Anum_pg_statistic_staop1 12 +#define Anum_pg_statistic_staop2 13 +#define Anum_pg_statistic_staop3 14 +#define Anum_pg_statistic_staop4 15 +#define Anum_pg_statistic_staop5 16 +#define Anum_pg_statistic_stacoll1 17 +#define Anum_pg_statistic_stacoll2 18 +#define Anum_pg_statistic_stacoll3 19 +#define Anum_pg_statistic_stacoll4 20 +#define Anum_pg_statistic_stacoll5 21 +#define Anum_pg_statistic_stanumbers1 22 +#define Anum_pg_statistic_stanumbers2 23 +#define Anum_pg_statistic_stanumbers3 24 +#define Anum_pg_statistic_stanumbers4 25 +#define Anum_pg_statistic_stanumbers5 26 +#define Anum_pg_statistic_stavalues1 27 +#define Anum_pg_statistic_stavalues2 28 +#define Anum_pg_statistic_stavalues3 29 +#define Anum_pg_statistic_stavalues4 30 +#define Anum_pg_statistic_stavalues5 31 + +#define Natts_pg_statistic 31 + + +/* + * Several statistical slot "kinds" are defined by core PostgreSQL, as + * documented below. Also, custom data types can define their own "kind" + * codes by mutual agreement between a custom typanalyze routine and the + * selectivity estimation functions of the type's operators. + * + * Code reading the pg_statistic relation should not assume that a particular + * data "kind" will appear in any particular slot. Instead, search the + * stakind fields to see if the desired data is available. (The standard + * function get_attstatsslot() may be used for this.) + */ + +/* + * The present allocation of "kind" codes is: + * + * 1-99: reserved for assignment by the core PostgreSQL project + * (values in this range will be documented in this file) + * 100-199: reserved for assignment by the PostGIS project + * (values to be documented in PostGIS documentation) + * 200-299: reserved for assignment by the ESRI ST_Geometry project + * (values to be documented in ESRI ST_Geometry documentation) + * 300-9999: reserved for future public assignments + * + * For private use you may choose a "kind" code at random in the range + * 10000-30000. However, for code that is to be widely disseminated it is + * better to obtain a publicly defined "kind" code by request from the + * PostgreSQL Global Development Group. + */ + +/* + * In a "most common values" slot, staop is the OID of the "=" operator + * used to decide whether values are the same or not, and stacoll is the + * collation used (same as column's collation). stavalues contains + * the K most common non-null values appearing in the column, and stanumbers + * contains their frequencies (fractions of total row count). The values + * shall be ordered in decreasing frequency. Note that since the arrays are + * variable-size, K may be chosen by the statistics collector. Values should + * not appear in MCV unless they have been observed to occur more than once; + * a unique column will have no MCV slot. + */ +#define STATISTIC_KIND_MCV 1 + +/* + * A "histogram" slot describes the distribution of scalar data. staop is + * the OID of the "<" operator that describes the sort ordering, and stacoll + * is the relevant collation. (In theory more than one histogram could appear, + * if a datatype has more than one useful sort operator or we care about more + * than one collation. Currently the collation will always be that of the + * underlying column.) stavalues contains M (>=2) non-null values that + * divide the non-null column data values into M-1 bins of approximately equal + * population. The first stavalues item is the MIN and the last is the MAX. + * stanumbers is not used and should be NULL. IMPORTANT POINT: if an MCV + * slot is also provided, then the histogram describes the data distribution + * *after removing the values listed in MCV* (thus, it's a "compressed + * histogram" in the technical parlance). This allows a more accurate + * representation of the distribution of a column with some very-common + * values. In a column with only a few distinct values, it's possible that + * the MCV list describes the entire data population; in this case the + * histogram reduces to empty and should be omitted. + */ +#define STATISTIC_KIND_HISTOGRAM 2 + +/* + * A "correlation" slot describes the correlation between the physical order + * of table tuples and the ordering of data values of this column, as seen + * by the "<" operator identified by staop with the collation identified by + * stacoll. (As with the histogram, more than one entry could theoretically + * appear.) stavalues is not used and should be NULL. stanumbers contains + * a single entry, the correlation coefficient between the sequence of data + * values and the sequence of their actual tuple positions. The coefficient + * ranges from +1 to -1. + */ +#define STATISTIC_KIND_CORRELATION 3 + +/* + * A "most common elements" slot is similar to a "most common values" slot, + * except that it stores the most common non-null *elements* of the column + * values. This is useful when the column datatype is an array or some other + * type with identifiable elements (for instance, tsvector). staop contains + * the equality operator appropriate to the element type, and stacoll + * contains the collation to use with it. stavalues contains + * the most common element values, and stanumbers their frequencies. Unlike + * MCV slots, frequencies are measured as the fraction of non-null rows the + * element value appears in, not the frequency of all rows. Also unlike + * MCV slots, the values are sorted into the element type's default order + * (to support binary search for a particular value). Since this puts the + * minimum and maximum frequencies at unpredictable spots in stanumbers, + * there are two extra members of stanumbers, holding copies of the minimum + * and maximum frequencies. Optionally, there can be a third extra member, + * which holds the frequency of null elements (expressed in the same terms: + * the fraction of non-null rows that contain at least one null element). If + * this member is omitted, the column is presumed to contain no null elements. + * + * Note: in current usage for tsvector columns, the stavalues elements are of + * type text, even though their representation within tsvector is not + * exactly text. + */ +#define STATISTIC_KIND_MCELEM 4 + +/* + * A "distinct elements count histogram" slot describes the distribution of + * the number of distinct element values present in each row of an array-type + * column. Only non-null rows are considered, and only non-null elements. + * staop contains the equality operator appropriate to the element type, + * and stacoll contains the collation to use with it. + * stavalues is not used and should be NULL. The last member of stanumbers is + * the average count of distinct element values over all non-null rows. The + * preceding M (>=2) members form a histogram that divides the population of + * distinct-elements counts into M-1 bins of approximately equal population. + * The first of these is the minimum observed count, and the last the maximum. + */ +#define STATISTIC_KIND_DECHIST 5 + +/* + * A "length histogram" slot describes the distribution of range lengths in + * rows of a range-type column. stanumbers contains a single entry, the + * fraction of empty ranges. stavalues is a histogram of non-empty lengths, in + * a format similar to STATISTIC_KIND_HISTOGRAM: it contains M (>=2) range + * values that divide the column data values into M-1 bins of approximately + * equal population. The lengths are stored as float8s, as measured by the + * range type's subdiff function. Only non-null rows are considered. + */ +#define STATISTIC_KIND_RANGE_LENGTH_HISTOGRAM 6 + +/* + * A "bounds histogram" slot is similar to STATISTIC_KIND_HISTOGRAM, but for + * a range-type column. stavalues contains M (>=2) range values that divide + * the column data values into M-1 bins of approximately equal population. + * Unlike a regular scalar histogram, this is actually two histograms combined + * into a single array, with the lower bounds of each value forming a + * histogram of lower bounds, and the upper bounds a histogram of upper + * bounds. Only non-NULL, non-empty ranges are included. + */ +#define STATISTIC_KIND_BOUNDS_HISTOGRAM 7 + + +#endif /* PG_STATISTIC_D_H */ diff --git a/parser/include/catalog/pg_statistic_ext.h b/parser/include/catalog/pg_statistic_ext.h index e6d1a8c3..a8cb1699 100644 --- a/parser/include/catalog/pg_statistic_ext.h +++ b/parser/include/catalog/pg_statistic_ext.h @@ -1,18 +1,21 @@ /*------------------------------------------------------------------------- * * pg_statistic_ext.h - * definition of the system "extended statistic" relation (pg_statistic_ext) - * along with the relation's initial contents. + * definition of the "extended statistics" system catalog + * (pg_statistic_ext) * + * Note that pg_statistic_ext contains the definitions of extended statistics + * objects, created by CREATE STATISTICS, but not the actual statistical data, + * created by running ANALYZE. * - * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/catalog/pg_statistic_ext.h * * NOTES - * the genbki.pl script reads this file and generates .bki - * information from the DATA() statements. + * The Catalog.pm module reads this file and derives schema + * information. * *------------------------------------------------------------------------- */ @@ -20,16 +23,17 @@ #define PG_STATISTIC_EXT_H #include "catalog/genbki.h" +#include "catalog/pg_statistic_ext_d.h" /* ---------------- * pg_statistic_ext definition. cpp turns this into * typedef struct FormData_pg_statistic_ext * ---------------- */ -#define StatisticExtRelationId 3381 - -CATALOG(pg_statistic_ext,3381) +CATALOG(pg_statistic_ext,3381,StatisticExtRelationId) { + Oid oid; /* oid */ + Oid stxrelid; /* relation containing attributes */ /* These two fields form the unique key for the entry: */ @@ -37,6 +41,7 @@ CATALOG(pg_statistic_ext,3381) Oid stxnamespace; /* OID of statistics object's namespace */ Oid stxowner; /* statistics object's owner */ + int32 stxstattarget BKI_DEFAULT(-1); /* statistics target */ /* * variable-length fields start here, but we allow direct access to @@ -47,8 +52,6 @@ CATALOG(pg_statistic_ext,3381) #ifdef CATALOG_VARLEN char stxkind[1] BKI_FORCE_NOT_NULL; /* statistics kinds requested * to build */ - pg_ndistinct stxndistinct; /* ndistinct coefficients (serialized) */ - pg_dependencies stxdependencies; /* dependencies (serialized) */ #endif } FormData_pg_statistic_ext; @@ -60,21 +63,12 @@ CATALOG(pg_statistic_ext,3381) */ typedef FormData_pg_statistic_ext *Form_pg_statistic_ext; -/* ---------------- - * compiler constants for pg_statistic_ext - * ---------------- - */ -#define Natts_pg_statistic_ext 8 -#define Anum_pg_statistic_ext_stxrelid 1 -#define Anum_pg_statistic_ext_stxname 2 -#define Anum_pg_statistic_ext_stxnamespace 3 -#define Anum_pg_statistic_ext_stxowner 4 -#define Anum_pg_statistic_ext_stxkeys 5 -#define Anum_pg_statistic_ext_stxkind 6 -#define Anum_pg_statistic_ext_stxndistinct 7 -#define Anum_pg_statistic_ext_stxdependencies 8 +#ifdef EXPOSE_TO_CLIENT_CODE #define STATS_EXT_NDISTINCT 'd' #define STATS_EXT_DEPENDENCIES 'f' +#define STATS_EXT_MCV 'm' + +#endif /* EXPOSE_TO_CLIENT_CODE */ #endif /* PG_STATISTIC_EXT_H */ diff --git a/parser/include/catalog/pg_statistic_ext_d.h b/parser/include/catalog/pg_statistic_ext_d.h new file mode 100644 index 00000000..809e97e8 --- /dev/null +++ b/parser/include/catalog/pg_statistic_ext_d.h @@ -0,0 +1,40 @@ +/*------------------------------------------------------------------------- + * + * pg_statistic_ext_d.h + * Macro definitions for pg_statistic_ext + * + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group + * Portions Copyright (c) 1994, Regents of the University of California + * + * NOTES + * ****************************** + * *** DO NOT EDIT THIS FILE! *** + * ****************************** + * + * It has been GENERATED by src/backend/catalog/genbki.pl + * + *------------------------------------------------------------------------- + */ +#ifndef PG_STATISTIC_EXT_D_H +#define PG_STATISTIC_EXT_D_H + +#define StatisticExtRelationId 3381 + +#define Anum_pg_statistic_ext_oid 1 +#define Anum_pg_statistic_ext_stxrelid 2 +#define Anum_pg_statistic_ext_stxname 3 +#define Anum_pg_statistic_ext_stxnamespace 4 +#define Anum_pg_statistic_ext_stxowner 5 +#define Anum_pg_statistic_ext_stxstattarget 6 +#define Anum_pg_statistic_ext_stxkeys 7 +#define Anum_pg_statistic_ext_stxkind 8 + +#define Natts_pg_statistic_ext 8 + + +#define STATS_EXT_NDISTINCT 'd' +#define STATS_EXT_DEPENDENCIES 'f' +#define STATS_EXT_MCV 'm' + + +#endif /* PG_STATISTIC_EXT_D_H */ diff --git a/parser/include/catalog/pg_transform.h b/parser/include/catalog/pg_transform.h index 8b1610bb..05f3e276 100644 --- a/parser/include/catalog/pg_transform.h +++ b/parser/include/catalog/pg_transform.h @@ -1,14 +1,17 @@ /*------------------------------------------------------------------------- * * pg_transform.h + * definition of the "transform" system catalog (pg_transform) * - * Copyright (c) 2012-2017, PostgreSQL Global Development Group + * + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group + * Portions Copyright (c) 1994, Regents of the University of California * * src/include/catalog/pg_transform.h * * NOTES - * the genbki.pl script reads this file and generates .bki - * information from the DATA() statements. + * The Catalog.pm module reads this file and derives schema + * information. * *------------------------------------------------------------------------- */ @@ -16,32 +19,27 @@ #define PG_TRANSFORM_H #include "catalog/genbki.h" +#include "catalog/pg_transform_d.h" /* ---------------- * pg_transform definition. cpp turns this into * typedef struct FormData_pg_transform * ---------------- */ -#define TransformRelationId 3576 - -CATALOG(pg_transform,3576) +CATALOG(pg_transform,3576,TransformRelationId) { + Oid oid; /* oid */ Oid trftype; Oid trflang; regproc trffromsql; regproc trftosql; } FormData_pg_transform; -typedef FormData_pg_transform *Form_pg_transform; - /* ---------------- - * compiler constants for pg_transform + * Form_pg_transform corresponds to a pointer to a tuple with + * the format of pg_transform relation. * ---------------- */ -#define Natts_pg_transform 4 -#define Anum_pg_transform_trftype 1 -#define Anum_pg_transform_trflang 2 -#define Anum_pg_transform_trffromsql 3 -#define Anum_pg_transform_trftosql 4 +typedef FormData_pg_transform *Form_pg_transform; #endif /* PG_TRANSFORM_H */ diff --git a/parser/include/catalog/pg_transform_d.h b/parser/include/catalog/pg_transform_d.h new file mode 100644 index 00000000..3bc064b9 --- /dev/null +++ b/parser/include/catalog/pg_transform_d.h @@ -0,0 +1,32 @@ +/*------------------------------------------------------------------------- + * + * pg_transform_d.h + * Macro definitions for pg_transform + * + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group + * Portions Copyright (c) 1994, Regents of the University of California + * + * NOTES + * ****************************** + * *** DO NOT EDIT THIS FILE! *** + * ****************************** + * + * It has been GENERATED by src/backend/catalog/genbki.pl + * + *------------------------------------------------------------------------- + */ +#ifndef PG_TRANSFORM_D_H +#define PG_TRANSFORM_D_H + +#define TransformRelationId 3576 + +#define Anum_pg_transform_oid 1 +#define Anum_pg_transform_trftype 2 +#define Anum_pg_transform_trflang 3 +#define Anum_pg_transform_trffromsql 4 +#define Anum_pg_transform_trftosql 5 + +#define Natts_pg_transform 5 + + +#endif /* PG_TRANSFORM_D_H */ diff --git a/parser/include/catalog/pg_trigger.h b/parser/include/catalog/pg_trigger.h index f413caf3..9612b9bd 100644 --- a/parser/include/catalog/pg_trigger.h +++ b/parser/include/catalog/pg_trigger.h @@ -1,18 +1,17 @@ /*------------------------------------------------------------------------- * * pg_trigger.h - * definition of the system "trigger" relation (pg_trigger) - * along with the relation's initial contents. + * definition of the "trigger" system catalog (pg_trigger) * * - * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/catalog/pg_trigger.h * * NOTES - * the genbki.pl script reads this file and generates .bki - * information from the DATA() statements. + * The Catalog.pm module reads this file and derives schema + * information. * *------------------------------------------------------------------------- */ @@ -20,6 +19,7 @@ #define PG_TRIGGER_H #include "catalog/genbki.h" +#include "catalog/pg_trigger_d.h" /* ---------------- * pg_trigger definition. cpp turns this into @@ -31,11 +31,11 @@ * to be associated with a deferrable constraint. * ---------------- */ -#define TriggerRelationId 2620 - -CATALOG(pg_trigger,2620) +CATALOG(pg_trigger,2620,TriggerRelationId) { + Oid oid; /* oid */ Oid tgrelid; /* relation trigger is attached to */ + Oid tgparentid; /* OID of parent trigger, if any */ NameData tgname; /* trigger's name */ Oid tgfoid; /* OID of function to be called */ int16 tgtype; /* BEFORE/AFTER/INSTEAD, UPDATE/DELETE/INSERT, @@ -71,28 +71,7 @@ CATALOG(pg_trigger,2620) */ typedef FormData_pg_trigger *Form_pg_trigger; -/* ---------------- - * compiler constants for pg_trigger - * ---------------- - */ -#define Natts_pg_trigger 17 -#define Anum_pg_trigger_tgrelid 1 -#define Anum_pg_trigger_tgname 2 -#define Anum_pg_trigger_tgfoid 3 -#define Anum_pg_trigger_tgtype 4 -#define Anum_pg_trigger_tgenabled 5 -#define Anum_pg_trigger_tgisinternal 6 -#define Anum_pg_trigger_tgconstrrelid 7 -#define Anum_pg_trigger_tgconstrindid 8 -#define Anum_pg_trigger_tgconstraint 9 -#define Anum_pg_trigger_tgdeferrable 10 -#define Anum_pg_trigger_tginitdeferred 11 -#define Anum_pg_trigger_tgnargs 12 -#define Anum_pg_trigger_tgattr 13 -#define Anum_pg_trigger_tgargs 14 -#define Anum_pg_trigger_tgqual 15 -#define Anum_pg_trigger_tgoldtable 16 -#define Anum_pg_trigger_tgnewtable 17 +#ifdef EXPOSE_TO_CLIENT_CODE /* Bits within tgtype */ #define TRIGGER_TYPE_ROW (1 << 0) @@ -153,4 +132,6 @@ typedef FormData_pg_trigger *Form_pg_trigger; #define TRIGGER_USES_TRANSITION_TABLE(namepointer) \ ((namepointer) != (char *) NULL) +#endif /* EXPOSE_TO_CLIENT_CODE */ + #endif /* PG_TRIGGER_H */ diff --git a/parser/include/catalog/pg_trigger_d.h b/parser/include/catalog/pg_trigger_d.h new file mode 100644 index 00000000..90d30587 --- /dev/null +++ b/parser/include/catalog/pg_trigger_d.h @@ -0,0 +1,106 @@ +/*------------------------------------------------------------------------- + * + * pg_trigger_d.h + * Macro definitions for pg_trigger + * + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group + * Portions Copyright (c) 1994, Regents of the University of California + * + * NOTES + * ****************************** + * *** DO NOT EDIT THIS FILE! *** + * ****************************** + * + * It has been GENERATED by src/backend/catalog/genbki.pl + * + *------------------------------------------------------------------------- + */ +#ifndef PG_TRIGGER_D_H +#define PG_TRIGGER_D_H + +#define TriggerRelationId 2620 + +#define Anum_pg_trigger_oid 1 +#define Anum_pg_trigger_tgrelid 2 +#define Anum_pg_trigger_tgparentid 3 +#define Anum_pg_trigger_tgname 4 +#define Anum_pg_trigger_tgfoid 5 +#define Anum_pg_trigger_tgtype 6 +#define Anum_pg_trigger_tgenabled 7 +#define Anum_pg_trigger_tgisinternal 8 +#define Anum_pg_trigger_tgconstrrelid 9 +#define Anum_pg_trigger_tgconstrindid 10 +#define Anum_pg_trigger_tgconstraint 11 +#define Anum_pg_trigger_tgdeferrable 12 +#define Anum_pg_trigger_tginitdeferred 13 +#define Anum_pg_trigger_tgnargs 14 +#define Anum_pg_trigger_tgattr 15 +#define Anum_pg_trigger_tgargs 16 +#define Anum_pg_trigger_tgqual 17 +#define Anum_pg_trigger_tgoldtable 18 +#define Anum_pg_trigger_tgnewtable 19 + +#define Natts_pg_trigger 19 + + +/* Bits within tgtype */ +#define TRIGGER_TYPE_ROW (1 << 0) +#define TRIGGER_TYPE_BEFORE (1 << 1) +#define TRIGGER_TYPE_INSERT (1 << 2) +#define TRIGGER_TYPE_DELETE (1 << 3) +#define TRIGGER_TYPE_UPDATE (1 << 4) +#define TRIGGER_TYPE_TRUNCATE (1 << 5) +#define TRIGGER_TYPE_INSTEAD (1 << 6) + +#define TRIGGER_TYPE_LEVEL_MASK (TRIGGER_TYPE_ROW) +#define TRIGGER_TYPE_STATEMENT 0 + +/* Note bits within TRIGGER_TYPE_TIMING_MASK aren't adjacent */ +#define TRIGGER_TYPE_TIMING_MASK \ + (TRIGGER_TYPE_BEFORE | TRIGGER_TYPE_INSTEAD) +#define TRIGGER_TYPE_AFTER 0 + +#define TRIGGER_TYPE_EVENT_MASK \ + (TRIGGER_TYPE_INSERT | TRIGGER_TYPE_DELETE | TRIGGER_TYPE_UPDATE | TRIGGER_TYPE_TRUNCATE) + +/* Macros for manipulating tgtype */ +#define TRIGGER_CLEAR_TYPE(type) ((type) = 0) + +#define TRIGGER_SETT_ROW(type) ((type) |= TRIGGER_TYPE_ROW) +#define TRIGGER_SETT_STATEMENT(type) ((type) |= TRIGGER_TYPE_STATEMENT) +#define TRIGGER_SETT_BEFORE(type) ((type) |= TRIGGER_TYPE_BEFORE) +#define TRIGGER_SETT_AFTER(type) ((type) |= TRIGGER_TYPE_AFTER) +#define TRIGGER_SETT_INSTEAD(type) ((type) |= TRIGGER_TYPE_INSTEAD) +#define TRIGGER_SETT_INSERT(type) ((type) |= TRIGGER_TYPE_INSERT) +#define TRIGGER_SETT_DELETE(type) ((type) |= TRIGGER_TYPE_DELETE) +#define TRIGGER_SETT_UPDATE(type) ((type) |= TRIGGER_TYPE_UPDATE) +#define TRIGGER_SETT_TRUNCATE(type) ((type) |= TRIGGER_TYPE_TRUNCATE) + +#define TRIGGER_FOR_ROW(type) ((type) & TRIGGER_TYPE_ROW) +#define TRIGGER_FOR_BEFORE(type) (((type) & TRIGGER_TYPE_TIMING_MASK) == TRIGGER_TYPE_BEFORE) +#define TRIGGER_FOR_AFTER(type) (((type) & TRIGGER_TYPE_TIMING_MASK) == TRIGGER_TYPE_AFTER) +#define TRIGGER_FOR_INSTEAD(type) (((type) & TRIGGER_TYPE_TIMING_MASK) == TRIGGER_TYPE_INSTEAD) +#define TRIGGER_FOR_INSERT(type) ((type) & TRIGGER_TYPE_INSERT) +#define TRIGGER_FOR_DELETE(type) ((type) & TRIGGER_TYPE_DELETE) +#define TRIGGER_FOR_UPDATE(type) ((type) & TRIGGER_TYPE_UPDATE) +#define TRIGGER_FOR_TRUNCATE(type) ((type) & TRIGGER_TYPE_TRUNCATE) + +/* + * Efficient macro for checking if tgtype matches a particular level + * (TRIGGER_TYPE_ROW or TRIGGER_TYPE_STATEMENT), timing (TRIGGER_TYPE_BEFORE, + * TRIGGER_TYPE_AFTER or TRIGGER_TYPE_INSTEAD), and event (TRIGGER_TYPE_INSERT, + * TRIGGER_TYPE_DELETE, TRIGGER_TYPE_UPDATE, or TRIGGER_TYPE_TRUNCATE). Note + * that a tgtype can match more than one event, but only one level or timing. + */ +#define TRIGGER_TYPE_MATCHES(type, level, timing, event) \ + (((type) & (TRIGGER_TYPE_LEVEL_MASK | TRIGGER_TYPE_TIMING_MASK | (event))) == ((level) | (timing) | (event))) + +/* + * Macro to determine whether tgnewtable or tgoldtable has been specified for + * a trigger. + */ +#define TRIGGER_USES_TRANSITION_TABLE(namepointer) \ + ((namepointer) != (char *) NULL) + + +#endif /* PG_TRIGGER_D_H */ diff --git a/parser/include/catalog/pg_ts_config.h b/parser/include/catalog/pg_ts_config.h index 0ba79a59..0d9c5e35 100644 --- a/parser/include/catalog/pg_ts_config.h +++ b/parser/include/catalog/pg_ts_config.h @@ -1,20 +1,18 @@ /*------------------------------------------------------------------------- * * pg_ts_config.h - * definition of configuration of tsearch + * definition of the "text search configuration" system catalog + * (pg_ts_config) * * - * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/catalog/pg_ts_config.h * * NOTES - * the genbki.pl script reads this file and generates .bki - * information from the DATA() statements. - * - * XXX do NOT break up DATA() statements into multiple lines! - * the scripts are not as smart as you might think... + * The Catalog.pm module reads this file and derives schema + * information. * *------------------------------------------------------------------------- */ @@ -22,39 +20,31 @@ #define PG_TS_CONFIG_H #include "catalog/genbki.h" +#include "catalog/pg_ts_config_d.h" /* ---------------- * pg_ts_config definition. cpp turns this into * typedef struct FormData_pg_ts_config * ---------------- */ -#define TSConfigRelationId 3602 - -CATALOG(pg_ts_config,3602) +CATALOG(pg_ts_config,3602,TSConfigRelationId) { - NameData cfgname; /* name of configuration */ - Oid cfgnamespace; /* name space */ - Oid cfgowner; /* owner */ - Oid cfgparser; /* OID of parser (in pg_ts_parser) */ -} FormData_pg_ts_config; + /* oid */ + Oid oid; -typedef FormData_pg_ts_config *Form_pg_ts_config; + /* name of configuration */ + NameData cfgname; -/* ---------------- - * compiler constants for pg_ts_config - * ---------------- - */ -#define Natts_pg_ts_config 4 -#define Anum_pg_ts_config_cfgname 1 -#define Anum_pg_ts_config_cfgnamespace 2 -#define Anum_pg_ts_config_cfgowner 3 -#define Anum_pg_ts_config_cfgparser 4 + /* name space */ + Oid cfgnamespace BKI_DEFAULT(PGNSP); -/* ---------------- - * initial contents of pg_ts_config - * ---------------- - */ -DATA(insert OID = 3748 ( "simple" PGNSP PGUID 3722 )); -DESCR("simple configuration"); + /* owner */ + Oid cfgowner BKI_DEFAULT(PGUID); + + /* OID of parser */ + Oid cfgparser BKI_LOOKUP(pg_ts_parser); +} FormData_pg_ts_config; + +typedef FormData_pg_ts_config *Form_pg_ts_config; #endif /* PG_TS_CONFIG_H */ diff --git a/parser/include/catalog/pg_ts_config_d.h b/parser/include/catalog/pg_ts_config_d.h new file mode 100644 index 00000000..7f2c9338 --- /dev/null +++ b/parser/include/catalog/pg_ts_config_d.h @@ -0,0 +1,32 @@ +/*------------------------------------------------------------------------- + * + * pg_ts_config_d.h + * Macro definitions for pg_ts_config + * + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group + * Portions Copyright (c) 1994, Regents of the University of California + * + * NOTES + * ****************************** + * *** DO NOT EDIT THIS FILE! *** + * ****************************** + * + * It has been GENERATED by src/backend/catalog/genbki.pl + * + *------------------------------------------------------------------------- + */ +#ifndef PG_TS_CONFIG_D_H +#define PG_TS_CONFIG_D_H + +#define TSConfigRelationId 3602 + +#define Anum_pg_ts_config_oid 1 +#define Anum_pg_ts_config_cfgname 2 +#define Anum_pg_ts_config_cfgnamespace 3 +#define Anum_pg_ts_config_cfgowner 4 +#define Anum_pg_ts_config_cfgparser 5 + +#define Natts_pg_ts_config 5 + + +#endif /* PG_TS_CONFIG_D_H */ diff --git a/parser/include/catalog/pg_ts_dict.h b/parser/include/catalog/pg_ts_dict.h index 634ea703..38128a31 100644 --- a/parser/include/catalog/pg_ts_dict.h +++ b/parser/include/catalog/pg_ts_dict.h @@ -1,20 +1,17 @@ /*------------------------------------------------------------------------- * * pg_ts_dict.h - * definition of dictionaries for tsearch + * definition of the "text search dictionary" system catalog (pg_ts_dict) * * - * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/catalog/pg_ts_dict.h * * NOTES - * the genbki.pl script reads this file and generates .bki - * information from the DATA() statements. - * - * XXX do NOT break up DATA() statements into multiple lines! - * the scripts are not as smart as you might think... + * The Catalog.pm module reads this file and derives schema + * information. * *------------------------------------------------------------------------- */ @@ -22,45 +19,36 @@ #define PG_TS_DICT_H #include "catalog/genbki.h" +#include "catalog/pg_ts_dict_d.h" /* ---------------- * pg_ts_dict definition. cpp turns this into * typedef struct FormData_pg_ts_dict * ---------------- */ -#define TSDictionaryRelationId 3600 - -CATALOG(pg_ts_dict,3600) +CATALOG(pg_ts_dict,3600,TSDictionaryRelationId) { - NameData dictname; /* dictionary name */ - Oid dictnamespace; /* name space */ - Oid dictowner; /* owner */ - Oid dicttemplate; /* dictionary's template */ + /* oid */ + Oid oid; + + /* dictionary name */ + NameData dictname; + + /* name space */ + Oid dictnamespace BKI_DEFAULT(PGNSP); + + /* owner */ + Oid dictowner BKI_DEFAULT(PGUID); + + /* dictionary's template */ + Oid dicttemplate BKI_LOOKUP(pg_ts_template); #ifdef CATALOG_VARLEN /* variable-length fields start here */ - text dictinitoption; /* options passed to dict_init() */ + /* options passed to dict_init() */ + text dictinitoption; #endif } FormData_pg_ts_dict; typedef FormData_pg_ts_dict *Form_pg_ts_dict; -/* ---------------- - * compiler constants for pg_ts_dict - * ---------------- - */ -#define Natts_pg_ts_dict 5 -#define Anum_pg_ts_dict_dictname 1 -#define Anum_pg_ts_dict_dictnamespace 2 -#define Anum_pg_ts_dict_dictowner 3 -#define Anum_pg_ts_dict_dicttemplate 4 -#define Anum_pg_ts_dict_dictinitoption 5 - -/* ---------------- - * initial contents of pg_ts_dict - * ---------------- - */ - -DATA(insert OID = 3765 ( "simple" PGNSP PGUID 3727 _null_)); -DESCR("simple dictionary: just lower case and check for stopword"); - #endif /* PG_TS_DICT_H */ diff --git a/parser/include/catalog/pg_ts_dict_d.h b/parser/include/catalog/pg_ts_dict_d.h new file mode 100644 index 00000000..d2e83823 --- /dev/null +++ b/parser/include/catalog/pg_ts_dict_d.h @@ -0,0 +1,33 @@ +/*------------------------------------------------------------------------- + * + * pg_ts_dict_d.h + * Macro definitions for pg_ts_dict + * + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group + * Portions Copyright (c) 1994, Regents of the University of California + * + * NOTES + * ****************************** + * *** DO NOT EDIT THIS FILE! *** + * ****************************** + * + * It has been GENERATED by src/backend/catalog/genbki.pl + * + *------------------------------------------------------------------------- + */ +#ifndef PG_TS_DICT_D_H +#define PG_TS_DICT_D_H + +#define TSDictionaryRelationId 3600 + +#define Anum_pg_ts_dict_oid 1 +#define Anum_pg_ts_dict_dictname 2 +#define Anum_pg_ts_dict_dictnamespace 3 +#define Anum_pg_ts_dict_dictowner 4 +#define Anum_pg_ts_dict_dicttemplate 5 +#define Anum_pg_ts_dict_dictinitoption 6 + +#define Natts_pg_ts_dict 6 + + +#endif /* PG_TS_DICT_D_H */ diff --git a/parser/include/catalog/pg_ts_parser.h b/parser/include/catalog/pg_ts_parser.h index 96e09bdc..641c6b6c 100644 --- a/parser/include/catalog/pg_ts_parser.h +++ b/parser/include/catalog/pg_ts_parser.h @@ -1,20 +1,17 @@ /*------------------------------------------------------------------------- * * pg_ts_parser.h - * definition of parsers for tsearch + * definition of the "text search parser" system catalog (pg_ts_parser) * * - * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/catalog/pg_ts_parser.h * * NOTES - * the genbki.pl script reads this file and generates .bki - * information from the DATA() statements. - * - * XXX do NOT break up DATA() statements into multiple lines! - * the scripts are not as smart as you might think... + * The Catalog.pm module reads this file and derives schema + * information. * *------------------------------------------------------------------------- */ @@ -22,46 +19,39 @@ #define PG_TS_PARSER_H #include "catalog/genbki.h" +#include "catalog/pg_ts_parser_d.h" /* ---------------- * pg_ts_parser definition. cpp turns this into * typedef struct FormData_pg_ts_parser * ---------------- */ -#define TSParserRelationId 3601 - -CATALOG(pg_ts_parser,3601) +CATALOG(pg_ts_parser,3601,TSParserRelationId) { - NameData prsname; /* parser's name */ - Oid prsnamespace; /* name space */ - regproc prsstart; /* init parsing session */ - regproc prstoken; /* return next token */ - regproc prsend; /* finalize parsing session */ - regproc prsheadline; /* return data for headline creation */ - regproc prslextype; /* return descriptions of lexeme's types */ -} FormData_pg_ts_parser; + Oid oid; /* oid */ -typedef FormData_pg_ts_parser *Form_pg_ts_parser; + /* parser's name */ + NameData prsname; -/* ---------------- - * compiler constants for pg_ts_parser - * ---------------- - */ -#define Natts_pg_ts_parser 7 -#define Anum_pg_ts_parser_prsname 1 -#define Anum_pg_ts_parser_prsnamespace 2 -#define Anum_pg_ts_parser_prsstart 3 -#define Anum_pg_ts_parser_prstoken 4 -#define Anum_pg_ts_parser_prsend 5 -#define Anum_pg_ts_parser_prsheadline 6 -#define Anum_pg_ts_parser_prslextype 7 + /* name space */ + Oid prsnamespace BKI_DEFAULT(PGNSP); -/* ---------------- - * initial contents of pg_ts_parser - * ---------------- - */ + /* init parsing session */ + regproc prsstart BKI_LOOKUP(pg_proc); + + /* return next token */ + regproc prstoken BKI_LOOKUP(pg_proc); + + /* finalize parsing session */ + regproc prsend BKI_LOOKUP(pg_proc); -DATA(insert OID = 3722 ( "default" PGNSP prsd_start prsd_nexttoken prsd_end prsd_headline prsd_lextype )); -DESCR("default word parser"); + /* return data for headline creation */ + regproc prsheadline BKI_LOOKUP(pg_proc); + + /* return descriptions of lexeme's types */ + regproc prslextype BKI_LOOKUP(pg_proc); +} FormData_pg_ts_parser; + +typedef FormData_pg_ts_parser *Form_pg_ts_parser; #endif /* PG_TS_PARSER_H */ diff --git a/parser/include/catalog/pg_ts_parser_d.h b/parser/include/catalog/pg_ts_parser_d.h new file mode 100644 index 00000000..635a4e48 --- /dev/null +++ b/parser/include/catalog/pg_ts_parser_d.h @@ -0,0 +1,35 @@ +/*------------------------------------------------------------------------- + * + * pg_ts_parser_d.h + * Macro definitions for pg_ts_parser + * + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group + * Portions Copyright (c) 1994, Regents of the University of California + * + * NOTES + * ****************************** + * *** DO NOT EDIT THIS FILE! *** + * ****************************** + * + * It has been GENERATED by src/backend/catalog/genbki.pl + * + *------------------------------------------------------------------------- + */ +#ifndef PG_TS_PARSER_D_H +#define PG_TS_PARSER_D_H + +#define TSParserRelationId 3601 + +#define Anum_pg_ts_parser_oid 1 +#define Anum_pg_ts_parser_prsname 2 +#define Anum_pg_ts_parser_prsnamespace 3 +#define Anum_pg_ts_parser_prsstart 4 +#define Anum_pg_ts_parser_prstoken 5 +#define Anum_pg_ts_parser_prsend 6 +#define Anum_pg_ts_parser_prsheadline 7 +#define Anum_pg_ts_parser_prslextype 8 + +#define Natts_pg_ts_parser 8 + + +#endif /* PG_TS_PARSER_D_H */ diff --git a/parser/include/catalog/pg_ts_template.h b/parser/include/catalog/pg_ts_template.h index dc0148c6..f610225b 100644 --- a/parser/include/catalog/pg_ts_template.h +++ b/parser/include/catalog/pg_ts_template.h @@ -1,20 +1,17 @@ /*------------------------------------------------------------------------- * * pg_ts_template.h - * definition of dictionary templates for tsearch + * definition of the "text search template" system catalog (pg_ts_template) * * - * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/catalog/pg_ts_template.h * * NOTES - * the genbki.pl script reads this file and generates .bki - * information from the DATA() statements. - * - * XXX do NOT break up DATA() statements into multiple lines! - * the scripts are not as smart as you might think... + * The Catalog.pm module reads this file and derives schema + * information. * *------------------------------------------------------------------------- */ @@ -22,46 +19,30 @@ #define PG_TS_TEMPLATE_H #include "catalog/genbki.h" +#include "catalog/pg_ts_template_d.h" /* ---------------- * pg_ts_template definition. cpp turns this into * typedef struct FormData_pg_ts_template * ---------------- */ -#define TSTemplateRelationId 3764 - -CATALOG(pg_ts_template,3764) +CATALOG(pg_ts_template,3764,TSTemplateRelationId) { - NameData tmplname; /* template name */ - Oid tmplnamespace; /* name space */ - regproc tmplinit; /* initialization method of dict (may be 0) */ - regproc tmpllexize; /* base method of dictionary */ -} FormData_pg_ts_template; + Oid oid; /* oid */ -typedef FormData_pg_ts_template *Form_pg_ts_template; + /* template name */ + NameData tmplname; -/* ---------------- - * compiler constants for pg_ts_template - * ---------------- - */ -#define Natts_pg_ts_template 4 -#define Anum_pg_ts_template_tmplname 1 -#define Anum_pg_ts_template_tmplnamespace 2 -#define Anum_pg_ts_template_tmplinit 3 -#define Anum_pg_ts_template_tmpllexize 4 + /* name space */ + Oid tmplnamespace BKI_DEFAULT(PGNSP); -/* ---------------- - * initial contents of pg_ts_template - * ---------------- - */ + /* initialization method of dict (may be 0) */ + regproc tmplinit BKI_LOOKUP(pg_proc); -DATA(insert OID = 3727 ( "simple" PGNSP dsimple_init dsimple_lexize )); -DESCR("simple dictionary: just lower case and check for stopword"); -DATA(insert OID = 3730 ( "synonym" PGNSP dsynonym_init dsynonym_lexize )); -DESCR("synonym dictionary: replace word by its synonym"); -DATA(insert OID = 3733 ( "ispell" PGNSP dispell_init dispell_lexize )); -DESCR("ispell dictionary"); -DATA(insert OID = 3742 ( "thesaurus" PGNSP thesaurus_init thesaurus_lexize )); -DESCR("thesaurus dictionary: phrase by phrase substitution"); + /* base method of dictionary */ + regproc tmpllexize BKI_LOOKUP(pg_proc); +} FormData_pg_ts_template; + +typedef FormData_pg_ts_template *Form_pg_ts_template; #endif /* PG_TS_TEMPLATE_H */ diff --git a/parser/include/catalog/pg_ts_template_d.h b/parser/include/catalog/pg_ts_template_d.h new file mode 100644 index 00000000..1a5f8f2f --- /dev/null +++ b/parser/include/catalog/pg_ts_template_d.h @@ -0,0 +1,32 @@ +/*------------------------------------------------------------------------- + * + * pg_ts_template_d.h + * Macro definitions for pg_ts_template + * + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group + * Portions Copyright (c) 1994, Regents of the University of California + * + * NOTES + * ****************************** + * *** DO NOT EDIT THIS FILE! *** + * ****************************** + * + * It has been GENERATED by src/backend/catalog/genbki.pl + * + *------------------------------------------------------------------------- + */ +#ifndef PG_TS_TEMPLATE_D_H +#define PG_TS_TEMPLATE_D_H + +#define TSTemplateRelationId 3764 + +#define Anum_pg_ts_template_oid 1 +#define Anum_pg_ts_template_tmplname 2 +#define Anum_pg_ts_template_tmplnamespace 3 +#define Anum_pg_ts_template_tmplinit 4 +#define Anum_pg_ts_template_tmpllexize 5 + +#define Natts_pg_ts_template 5 + + +#endif /* PG_TS_TEMPLATE_D_H */ diff --git a/parser/include/catalog/pg_type.h b/parser/include/catalog/pg_type.h index ffdb452b..7b375626 100644 --- a/parser/include/catalog/pg_type.h +++ b/parser/include/catalog/pg_type.h @@ -1,18 +1,17 @@ /*------------------------------------------------------------------------- * * pg_type.h - * definition of the system "type" relation (pg_type) - * along with the relation's initial contents. + * definition of the "type" system catalog (pg_type) * * - * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/catalog/pg_type.h * * NOTES - * the genbki.pl script reads this file and generates .bki - * information from the DATA() statements. + * The Catalog.pm module reads this file and derives schema + * information. * *------------------------------------------------------------------------- */ @@ -20,6 +19,9 @@ #define PG_TYPE_H #include "catalog/genbki.h" +#include "catalog/objectaddress.h" +#include "catalog/pg_type_d.h" +#include "nodes/nodes.h" /* ---------------- * pg_type definition. cpp turns this into @@ -31,14 +33,18 @@ * See struct FormData_pg_attribute for details. * ---------------- */ -#define TypeRelationId 1247 -#define TypeRelation_Rowtype_Id 71 - -CATALOG(pg_type,1247) BKI_BOOTSTRAP BKI_ROWTYPE_OID(71) BKI_SCHEMA_MACRO +CATALOG(pg_type,1247,TypeRelationId) BKI_BOOTSTRAP BKI_ROWTYPE_OID(71,TypeRelation_Rowtype_Id) BKI_SCHEMA_MACRO { - NameData typname; /* type name */ - Oid typnamespace; /* OID of namespace containing this type */ - Oid typowner; /* type owner */ + Oid oid; /* oid */ + + /* type name */ + NameData typname; + + /* OID of namespace containing this type */ + Oid typnamespace BKI_DEFAULT(PGNSP); + + /* type owner */ + Oid typowner BKI_DEFAULT(PGUID); /* * For a fixed-size type, typlen is the number of bytes we use to @@ -47,17 +53,17 @@ CATALOG(pg_type,1247) BKI_BOOTSTRAP BKI_ROWTYPE_OID(71) BKI_SCHEMA_MACRO * "varlena" type (one that has a length word), -2 to indicate a * null-terminated C string. */ - int16 typlen; + int16 typlen BKI_ARRAY_DEFAULT(-1); /* * typbyval determines whether internal Postgres routines pass a value of - * this type by value or by reference. typbyval had better be FALSE if + * this type by value or by reference. typbyval had better be false if * the length is not 1, 2, or 4 (or 8 on 8-byte-Datum machines). * Variable-length types are always passed by reference. Note that - * typbyval can be false even if the length would allow pass-by-value; - * this is currently true for type float4, for example. + * typbyval can be false even if the length would allow pass-by-value; for + * example, type macaddr8 is pass-by-ref even when Datum is 8 bytes. */ - bool typbyval; + bool typbyval BKI_ARRAY_DEFAULT(f); /* * typtype is 'b' for a base type, 'c' for a composite type (e.g., a @@ -66,7 +72,7 @@ CATALOG(pg_type,1247) BKI_BOOTSTRAP BKI_ROWTYPE_OID(71) BKI_SCHEMA_MACRO * * If typtype is 'c', typrelid is the OID of the class' entry in pg_class. */ - char typtype; + char typtype BKI_DEFAULT(b) BKI_ARRAY_DEFAULT(b); /* * typcategory and typispreferred help the parser distinguish preferred @@ -74,19 +80,25 @@ CATALOG(pg_type,1247) BKI_BOOTSTRAP BKI_ROWTYPE_OID(71) BKI_SCHEMA_MACRO * character (but not \0). The categories used for built-in types are * identified by the TYPCATEGORY macros below. */ - char typcategory; /* arbitrary type classification */ - bool typispreferred; /* is type "preferred" within its category? */ + /* arbitrary type classification */ + char typcategory BKI_ARRAY_DEFAULT(A); + + /* is type "preferred" within its category? */ + bool typispreferred BKI_DEFAULT(f) BKI_ARRAY_DEFAULT(f); /* * If typisdefined is false, the entry is only a placeholder (forward - * reference). We know the type name, but not yet anything else about it. + * reference). We know the type's name and owner, but not yet anything + * else about it. */ - bool typisdefined; + bool typisdefined BKI_DEFAULT(t); - char typdelim; /* delimiter for arrays of this type */ + /* delimiter for arrays of this type */ + char typdelim BKI_DEFAULT(','); - Oid typrelid; /* 0 if not a composite type */ + /* associated pg_class OID if a composite type, else 0 */ + Oid typrelid BKI_DEFAULT(0) BKI_ARRAY_DEFAULT(0) BKI_LOOKUP(pg_class); /* * If typelem is not 0 then it identifies another row in pg_type. The @@ -99,32 +111,36 @@ CATALOG(pg_type,1247) BKI_BOOTSTRAP BKI_ROWTYPE_OID(71) BKI_SCHEMA_MACRO * * typelem != 0 and typlen == -1. */ - Oid typelem; + Oid typelem BKI_DEFAULT(0) BKI_LOOKUP(pg_type); /* * If there is a "true" array type having this type as element type, * typarray links to it. Zero if no associated "true" array type. */ - Oid typarray; + Oid typarray BKI_DEFAULT(0) BKI_ARRAY_DEFAULT(0) BKI_LOOKUP(pg_type); /* * I/O conversion procedures for the datatype. */ - regproc typinput; /* text format (required) */ - regproc typoutput; - regproc typreceive; /* binary format (optional) */ - regproc typsend; + + /* text format (required) */ + regproc typinput BKI_ARRAY_DEFAULT(array_in) BKI_LOOKUP(pg_proc); + regproc typoutput BKI_ARRAY_DEFAULT(array_out) BKI_LOOKUP(pg_proc); + + /* binary format (optional) */ + regproc typreceive BKI_ARRAY_DEFAULT(array_recv) BKI_LOOKUP(pg_proc); + regproc typsend BKI_ARRAY_DEFAULT(array_send) BKI_LOOKUP(pg_proc); /* * I/O functions for optional type modifiers. */ - regproc typmodin; - regproc typmodout; + regproc typmodin BKI_DEFAULT(-) BKI_LOOKUP(pg_proc); + regproc typmodout BKI_DEFAULT(-) BKI_LOOKUP(pg_proc); /* * Custom ANALYZE procedure for the datatype (0 selects the default). */ - regproc typanalyze; + regproc typanalyze BKI_DEFAULT(-) BKI_ARRAY_DEFAULT(array_typanalyze) BKI_LOOKUP(pg_proc); /* ---------------- * typalign is the alignment required when storing a value of this @@ -139,6 +155,7 @@ CATALOG(pg_type,1247) BKI_BOOTSTRAP BKI_ROWTYPE_OID(71) BKI_SCHEMA_MACRO * 's' = SHORT alignment (2 bytes on most machines). * 'i' = INT alignment (4 bytes on most machines). * 'd' = DOUBLE alignment (8 bytes on many machines, but by no means all). + * (Use the TYPALIGN macros below for these.) * * See include/access/tupmacs.h for the macros that compute these * alignment requirements. Note also that we allow the nominal alignment @@ -160,9 +177,13 @@ CATALOG(pg_type,1247) BKI_BOOTSTRAP BKI_ROWTYPE_OID(71) BKI_SCHEMA_MACRO * 'e' EXTERNAL external storage possible, don't try to compress * 'x' EXTENDED try to compress and store external if required * 'm' MAIN like 'x' but try to keep in main tuple + * (Use the TYPSTORAGE macros below for these.) + * + * Note that 'm' fields can also be moved out to secondary storage, + * but only as a last resort ('e' and 'x' fields are moved first). * ---------------- */ - char typstorage; + char typstorage BKI_DEFAULT(p) BKI_ARRAY_DEFAULT(x); /* * This flag represents a "NOT NULL" constraint against this datatype. @@ -172,32 +193,33 @@ CATALOG(pg_type,1247) BKI_BOOTSTRAP BKI_ROWTYPE_OID(71) BKI_SCHEMA_MACRO * * Used primarily for domain types. */ - bool typnotnull; + bool typnotnull BKI_DEFAULT(f); /* * Domains use typbasetype to show the base (or domain) type that the * domain is based on. Zero if the type is not a domain. */ - Oid typbasetype; + Oid typbasetype BKI_DEFAULT(0); /* * Domains use typtypmod to record the typmod to be applied to their base * type (-1 if base type does not use a typmod). -1 if this type is not a * domain. */ - int32 typtypmod; + int32 typtypmod BKI_DEFAULT(-1); /* * typndims is the declared number of dimensions for an array domain type * (i.e., typbasetype is an array type). Otherwise zero. */ - int32 typndims; + int32 typndims BKI_DEFAULT(0); /* - * Collation: 0 if type cannot use collations, DEFAULT_COLLATION_OID for - * collatable base types, possibly other OID for domains + * Collation: 0 if type cannot use collations, nonzero (typically + * DEFAULT_COLLATION_OID) for collatable base types, possibly some other + * OID for domains over collatable types */ - Oid typcollation; + Oid typcollation BKI_DEFAULT(0) BKI_LOOKUP(pg_collation); #ifdef CATALOG_VARLEN /* variable-length fields start here */ @@ -206,7 +228,7 @@ CATALOG(pg_type,1247) BKI_BOOTSTRAP BKI_ROWTYPE_OID(71) BKI_SCHEMA_MACRO * a default expression for the type. Currently this is only used for * domains. */ - pg_node_tree typdefaultbin; + pg_node_tree typdefaultbin BKI_DEFAULT(_null_) BKI_ARRAY_DEFAULT(_null_); /* * typdefault is NULL if the type has no associated default value. If @@ -216,12 +238,12 @@ CATALOG(pg_type,1247) BKI_BOOTSTRAP BKI_ROWTYPE_OID(71) BKI_SCHEMA_MACRO * external representation of the type's default value, which may be fed * to the type's input converter to produce a constant. */ - text typdefault; + text typdefault BKI_DEFAULT(_null_) BKI_ARRAY_DEFAULT(_null_); /* * Access permissions */ - aclitem typacl[1]; + aclitem typacl[1] BKI_DEFAULT(_null_); #endif } FormData_pg_type; @@ -232,490 +254,10 @@ CATALOG(pg_type,1247) BKI_BOOTSTRAP BKI_ROWTYPE_OID(71) BKI_SCHEMA_MACRO */ typedef FormData_pg_type *Form_pg_type; -/* ---------------- - * compiler constants for pg_type - * ---------------- - */ -#define Natts_pg_type 30 -#define Anum_pg_type_typname 1 -#define Anum_pg_type_typnamespace 2 -#define Anum_pg_type_typowner 3 -#define Anum_pg_type_typlen 4 -#define Anum_pg_type_typbyval 5 -#define Anum_pg_type_typtype 6 -#define Anum_pg_type_typcategory 7 -#define Anum_pg_type_typispreferred 8 -#define Anum_pg_type_typisdefined 9 -#define Anum_pg_type_typdelim 10 -#define Anum_pg_type_typrelid 11 -#define Anum_pg_type_typelem 12 -#define Anum_pg_type_typarray 13 -#define Anum_pg_type_typinput 14 -#define Anum_pg_type_typoutput 15 -#define Anum_pg_type_typreceive 16 -#define Anum_pg_type_typsend 17 -#define Anum_pg_type_typmodin 18 -#define Anum_pg_type_typmodout 19 -#define Anum_pg_type_typanalyze 20 -#define Anum_pg_type_typalign 21 -#define Anum_pg_type_typstorage 22 -#define Anum_pg_type_typnotnull 23 -#define Anum_pg_type_typbasetype 24 -#define Anum_pg_type_typtypmod 25 -#define Anum_pg_type_typndims 26 -#define Anum_pg_type_typcollation 27 -#define Anum_pg_type_typdefaultbin 28 -#define Anum_pg_type_typdefault 29 -#define Anum_pg_type_typacl 30 - - -/* ---------------- - * initial contents of pg_type - * ---------------- - */ +#ifdef EXPOSE_TO_CLIENT_CODE /* - * Keep the following ordered by OID so that later changes can be made more - * easily. - * - * For types used in the system catalogs, make sure the values here match - * TypInfo[] in bootstrap.c. - */ - -/* OIDS 1 - 99 */ -DATA(insert OID = 16 ( bool PGNSP PGUID 1 t b B t t \054 0 0 1000 boolin boolout boolrecv boolsend - - - c p f 0 -1 0 0 _null_ _null_ _null_ )); -DESCR("boolean, 'true'/'false'"); -#define BOOLOID 16 - -DATA(insert OID = 17 ( bytea PGNSP PGUID -1 f b U f t \054 0 0 1001 byteain byteaout bytearecv byteasend - - - i x f 0 -1 0 0 _null_ _null_ _null_ )); -DESCR("variable-length string, binary values escaped"); -#define BYTEAOID 17 - -DATA(insert OID = 18 ( char PGNSP PGUID 1 t b S f t \054 0 0 1002 charin charout charrecv charsend - - - c p f 0 -1 0 0 _null_ _null_ _null_ )); -DESCR("single character"); -#define CHAROID 18 - -DATA(insert OID = 19 ( name PGNSP PGUID NAMEDATALEN f b S f t \054 0 18 1003 namein nameout namerecv namesend - - - c p f 0 -1 0 0 _null_ _null_ _null_ )); -DESCR("63-byte type for storing system identifiers"); -#define NAMEOID 19 - -DATA(insert OID = 20 ( int8 PGNSP PGUID 8 FLOAT8PASSBYVAL b N f t \054 0 0 1016 int8in int8out int8recv int8send - - - d p f 0 -1 0 0 _null_ _null_ _null_ )); -DESCR("~18 digit integer, 8-byte storage"); -#define INT8OID 20 - -DATA(insert OID = 21 ( int2 PGNSP PGUID 2 t b N f t \054 0 0 1005 int2in int2out int2recv int2send - - - s p f 0 -1 0 0 _null_ _null_ _null_ )); -DESCR("-32 thousand to 32 thousand, 2-byte storage"); -#define INT2OID 21 - -DATA(insert OID = 22 ( int2vector PGNSP PGUID -1 f b A f t \054 0 21 1006 int2vectorin int2vectorout int2vectorrecv int2vectorsend - - - i p f 0 -1 0 0 _null_ _null_ _null_ )); -DESCR("array of int2, used in system tables"); -#define INT2VECTOROID 22 - -DATA(insert OID = 23 ( int4 PGNSP PGUID 4 t b N f t \054 0 0 1007 int4in int4out int4recv int4send - - - i p f 0 -1 0 0 _null_ _null_ _null_ )); -DESCR("-2 billion to 2 billion integer, 4-byte storage"); -#define INT4OID 23 - -DATA(insert OID = 24 ( regproc PGNSP PGUID 4 t b N f t \054 0 0 1008 regprocin regprocout regprocrecv regprocsend - - - i p f 0 -1 0 0 _null_ _null_ _null_ )); -DESCR("registered procedure"); -#define REGPROCOID 24 - -DATA(insert OID = 25 ( text PGNSP PGUID -1 f b S t t \054 0 0 1009 textin textout textrecv textsend - - - i x f 0 -1 0 100 _null_ _null_ _null_ )); -DESCR("variable-length string, no limit specified"); -#define TEXTOID 25 - -DATA(insert OID = 26 ( oid PGNSP PGUID 4 t b N t t \054 0 0 1028 oidin oidout oidrecv oidsend - - - i p f 0 -1 0 0 _null_ _null_ _null_ )); -DESCR("object identifier(oid), maximum 4 billion"); -#define OIDOID 26 - -DATA(insert OID = 27 ( tid PGNSP PGUID 6 f b U f t \054 0 0 1010 tidin tidout tidrecv tidsend - - - s p f 0 -1 0 0 _null_ _null_ _null_ )); -DESCR("(block, offset), physical location of tuple"); -#define TIDOID 27 - -DATA(insert OID = 28 ( xid PGNSP PGUID 4 t b U f t \054 0 0 1011 xidin xidout xidrecv xidsend - - - i p f 0 -1 0 0 _null_ _null_ _null_ )); -DESCR("transaction id"); -#define XIDOID 28 - -DATA(insert OID = 29 ( cid PGNSP PGUID 4 t b U f t \054 0 0 1012 cidin cidout cidrecv cidsend - - - i p f 0 -1 0 0 _null_ _null_ _null_ )); -DESCR("command identifier type, sequence in transaction id"); -#define CIDOID 29 - -DATA(insert OID = 30 ( oidvector PGNSP PGUID -1 f b A f t \054 0 26 1013 oidvectorin oidvectorout oidvectorrecv oidvectorsend - - - i p f 0 -1 0 0 _null_ _null_ _null_ )); -DESCR("array of oids, used in system tables"); -#define OIDVECTOROID 30 - -/* hand-built rowtype entries for bootstrapped catalogs */ -/* NB: OIDs assigned here must match the BKI_ROWTYPE_OID declarations */ - -DATA(insert OID = 71 ( pg_type PGNSP PGUID -1 f c C f t \054 1247 0 0 record_in record_out record_recv record_send - - - d x f 0 -1 0 0 _null_ _null_ _null_ )); -DATA(insert OID = 75 ( pg_attribute PGNSP PGUID -1 f c C f t \054 1249 0 0 record_in record_out record_recv record_send - - - d x f 0 -1 0 0 _null_ _null_ _null_ )); -DATA(insert OID = 81 ( pg_proc PGNSP PGUID -1 f c C f t \054 1255 0 0 record_in record_out record_recv record_send - - - d x f 0 -1 0 0 _null_ _null_ _null_ )); -DATA(insert OID = 83 ( pg_class PGNSP PGUID -1 f c C f t \054 1259 0 0 record_in record_out record_recv record_send - - - d x f 0 -1 0 0 _null_ _null_ _null_ )); - -/* OIDS 100 - 199 */ -DATA(insert OID = 114 ( json PGNSP PGUID -1 f b U f t \054 0 0 199 json_in json_out json_recv json_send - - - i x f 0 -1 0 0 _null_ _null_ _null_ )); -#define JSONOID 114 -DATA(insert OID = 142 ( xml PGNSP PGUID -1 f b U f t \054 0 0 143 xml_in xml_out xml_recv xml_send - - - i x f 0 -1 0 0 _null_ _null_ _null_ )); -DESCR("XML content"); -#define XMLOID 142 -DATA(insert OID = 143 ( _xml PGNSP PGUID -1 f b A f t \054 0 142 0 array_in array_out array_recv array_send - - array_typanalyze i x f 0 -1 0 0 _null_ _null_ _null_ )); -DATA(insert OID = 199 ( _json PGNSP PGUID -1 f b A f t \054 0 114 0 array_in array_out array_recv array_send - - array_typanalyze i x f 0 -1 0 0 _null_ _null_ _null_ )); - -DATA(insert OID = 194 ( pg_node_tree PGNSP PGUID -1 f b S f t \054 0 0 0 pg_node_tree_in pg_node_tree_out pg_node_tree_recv pg_node_tree_send - - - i x f 0 -1 0 100 _null_ _null_ _null_ )); -DESCR("string representing an internal node tree"); -#define PGNODETREEOID 194 - -DATA(insert OID = 3361 ( pg_ndistinct PGNSP PGUID -1 f b S f t \054 0 0 0 pg_ndistinct_in pg_ndistinct_out pg_ndistinct_recv pg_ndistinct_send - - - i x f 0 -1 0 100 _null_ _null_ _null_ )); -DESCR("multivariate ndistinct coefficients"); -#define PGNDISTINCTOID 3361 - -DATA(insert OID = 3402 ( pg_dependencies PGNSP PGUID -1 f b S f t \054 0 0 0 pg_dependencies_in pg_dependencies_out pg_dependencies_recv pg_dependencies_send - - - i x f 0 -1 0 100 _null_ _null_ _null_ )); -DESCR("multivariate dependencies"); -#define PGDEPENDENCIESOID 3402 - -DATA(insert OID = 32 ( pg_ddl_command PGNSP PGUID SIZEOF_POINTER t p P f t \054 0 0 0 pg_ddl_command_in pg_ddl_command_out pg_ddl_command_recv pg_ddl_command_send - - - ALIGNOF_POINTER p f 0 -1 0 0 _null_ _null_ _null_ )); -DESCR("internal type for passing CollectedCommand"); -#define PGDDLCOMMANDOID 32 - -/* OIDS 200 - 299 */ - -DATA(insert OID = 210 ( smgr PGNSP PGUID 2 t b U f t \054 0 0 0 smgrin smgrout - - - - - s p f 0 -1 0 0 _null_ _null_ _null_ )); -DESCR("storage manager"); - -/* OIDS 300 - 399 */ - -/* OIDS 400 - 499 */ - -/* OIDS 500 - 599 */ - -/* OIDS 600 - 699 */ -DATA(insert OID = 600 ( point PGNSP PGUID 16 f b G f t \054 0 701 1017 point_in point_out point_recv point_send - - - d p f 0 -1 0 0 _null_ _null_ _null_ )); -DESCR("geometric point '(x, y)'"); -#define POINTOID 600 -DATA(insert OID = 601 ( lseg PGNSP PGUID 32 f b G f t \054 0 600 1018 lseg_in lseg_out lseg_recv lseg_send - - - d p f 0 -1 0 0 _null_ _null_ _null_ )); -DESCR("geometric line segment '(pt1,pt2)'"); -#define LSEGOID 601 -DATA(insert OID = 602 ( path PGNSP PGUID -1 f b G f t \054 0 0 1019 path_in path_out path_recv path_send - - - d x f 0 -1 0 0 _null_ _null_ _null_ )); -DESCR("geometric path '(pt1,...)'"); -#define PATHOID 602 -DATA(insert OID = 603 ( box PGNSP PGUID 32 f b G f t \073 0 600 1020 box_in box_out box_recv box_send - - - d p f 0 -1 0 0 _null_ _null_ _null_ )); -DESCR("geometric box '(lower left,upper right)'"); -#define BOXOID 603 -DATA(insert OID = 604 ( polygon PGNSP PGUID -1 f b G f t \054 0 0 1027 poly_in poly_out poly_recv poly_send - - - d x f 0 -1 0 0 _null_ _null_ _null_ )); -DESCR("geometric polygon '(pt1,...)'"); -#define POLYGONOID 604 - -DATA(insert OID = 628 ( line PGNSP PGUID 24 f b G f t \054 0 701 629 line_in line_out line_recv line_send - - - d p f 0 -1 0 0 _null_ _null_ _null_ )); -DESCR("geometric line"); -#define LINEOID 628 -DATA(insert OID = 629 ( _line PGNSP PGUID -1 f b A f t \054 0 628 0 array_in array_out array_recv array_send - - array_typanalyze d x f 0 -1 0 0 _null_ _null_ _null_ )); - -/* OIDS 700 - 799 */ - -DATA(insert OID = 700 ( float4 PGNSP PGUID 4 FLOAT4PASSBYVAL b N f t \054 0 0 1021 float4in float4out float4recv float4send - - - i p f 0 -1 0 0 _null_ _null_ _null_ )); -DESCR("single-precision floating point number, 4-byte storage"); -#define FLOAT4OID 700 -DATA(insert OID = 701 ( float8 PGNSP PGUID 8 FLOAT8PASSBYVAL b N t t \054 0 0 1022 float8in float8out float8recv float8send - - - d p f 0 -1 0 0 _null_ _null_ _null_ )); -DESCR("double-precision floating point number, 8-byte storage"); -#define FLOAT8OID 701 -DATA(insert OID = 702 ( abstime PGNSP PGUID 4 t b D f t \054 0 0 1023 abstimein abstimeout abstimerecv abstimesend - - - i p f 0 -1 0 0 _null_ _null_ _null_ )); -DESCR("absolute, limited-range date and time (Unix system time)"); -#define ABSTIMEOID 702 -DATA(insert OID = 703 ( reltime PGNSP PGUID 4 t b T f t \054 0 0 1024 reltimein reltimeout reltimerecv reltimesend - - - i p f 0 -1 0 0 _null_ _null_ _null_ )); -DESCR("relative, limited-range time interval (Unix delta time)"); -#define RELTIMEOID 703 -DATA(insert OID = 704 ( tinterval PGNSP PGUID 12 f b T f t \054 0 0 1025 tintervalin tintervalout tintervalrecv tintervalsend - - - i p f 0 -1 0 0 _null_ _null_ _null_ )); -DESCR("(abstime,abstime), time interval"); -#define TINTERVALOID 704 -DATA(insert OID = 705 ( unknown PGNSP PGUID -2 f p X f t \054 0 0 0 unknownin unknownout unknownrecv unknownsend - - - c p f 0 -1 0 0 _null_ _null_ _null_ )); -DESCR(""); -#define UNKNOWNOID 705 - -DATA(insert OID = 718 ( circle PGNSP PGUID 24 f b G f t \054 0 0 719 circle_in circle_out circle_recv circle_send - - - d p f 0 -1 0 0 _null_ _null_ _null_ )); -DESCR("geometric circle '(center,radius)'"); -#define CIRCLEOID 718 -DATA(insert OID = 719 ( _circle PGNSP PGUID -1 f b A f t \054 0 718 0 array_in array_out array_recv array_send - - array_typanalyze d x f 0 -1 0 0 _null_ _null_ _null_ )); -DATA(insert OID = 790 ( money PGNSP PGUID 8 FLOAT8PASSBYVAL b N f t \054 0 0 791 cash_in cash_out cash_recv cash_send - - - d p f 0 -1 0 0 _null_ _null_ _null_ )); -DESCR("monetary amounts, $d,ddd.cc"); -#define CASHOID 790 -DATA(insert OID = 791 ( _money PGNSP PGUID -1 f b A f t \054 0 790 0 array_in array_out array_recv array_send - - array_typanalyze d x f 0 -1 0 0 _null_ _null_ _null_ )); - -/* OIDS 800 - 899 */ -DATA(insert OID = 829 ( macaddr PGNSP PGUID 6 f b U f t \054 0 0 1040 macaddr_in macaddr_out macaddr_recv macaddr_send - - - i p f 0 -1 0 0 _null_ _null_ _null_ )); -DESCR("XX:XX:XX:XX:XX:XX, MAC address"); -#define MACADDROID 829 -DATA(insert OID = 869 ( inet PGNSP PGUID -1 f b I t t \054 0 0 1041 inet_in inet_out inet_recv inet_send - - - i m f 0 -1 0 0 _null_ _null_ _null_ )); -DESCR("IP address/netmask, host address, netmask optional"); -#define INETOID 869 -DATA(insert OID = 650 ( cidr PGNSP PGUID -1 f b I f t \054 0 0 651 cidr_in cidr_out cidr_recv cidr_send - - - i m f 0 -1 0 0 _null_ _null_ _null_ )); -DESCR("network IP address/netmask, network address"); -#define CIDROID 650 -DATA(insert OID = 774 ( macaddr8 PGNSP PGUID 8 f b U f t \054 0 0 775 macaddr8_in macaddr8_out macaddr8_recv macaddr8_send - - - i p f 0 -1 0 0 _null_ _null_ _null_ )); -DESCR("XX:XX:XX:XX:XX:XX:XX:XX, MAC address"); -#define MACADDR8OID 774 - -/* OIDS 900 - 999 */ - -/* OIDS 1000 - 1099 */ -DATA(insert OID = 1000 ( _bool PGNSP PGUID -1 f b A f t \054 0 16 0 array_in array_out array_recv array_send - - array_typanalyze i x f 0 -1 0 0 _null_ _null_ _null_ )); -DATA(insert OID = 1001 ( _bytea PGNSP PGUID -1 f b A f t \054 0 17 0 array_in array_out array_recv array_send - - array_typanalyze i x f 0 -1 0 0 _null_ _null_ _null_ )); -DATA(insert OID = 1002 ( _char PGNSP PGUID -1 f b A f t \054 0 18 0 array_in array_out array_recv array_send - - array_typanalyze i x f 0 -1 0 0 _null_ _null_ _null_ )); -DATA(insert OID = 1003 ( _name PGNSP PGUID -1 f b A f t \054 0 19 0 array_in array_out array_recv array_send - - array_typanalyze i x f 0 -1 0 0 _null_ _null_ _null_ )); -DATA(insert OID = 1005 ( _int2 PGNSP PGUID -1 f b A f t \054 0 21 0 array_in array_out array_recv array_send - - array_typanalyze i x f 0 -1 0 0 _null_ _null_ _null_ )); -#define INT2ARRAYOID 1005 -DATA(insert OID = 1006 ( _int2vector PGNSP PGUID -1 f b A f t \054 0 22 0 array_in array_out array_recv array_send - - array_typanalyze i x f 0 -1 0 0 _null_ _null_ _null_ )); -DATA(insert OID = 1007 ( _int4 PGNSP PGUID -1 f b A f t \054 0 23 0 array_in array_out array_recv array_send - - array_typanalyze i x f 0 -1 0 0 _null_ _null_ _null_ )); -#define INT4ARRAYOID 1007 -DATA(insert OID = 1008 ( _regproc PGNSP PGUID -1 f b A f t \054 0 24 0 array_in array_out array_recv array_send - - array_typanalyze i x f 0 -1 0 0 _null_ _null_ _null_ )); -DATA(insert OID = 1009 ( _text PGNSP PGUID -1 f b A f t \054 0 25 0 array_in array_out array_recv array_send - - array_typanalyze i x f 0 -1 0 100 _null_ _null_ _null_ )); -#define TEXTARRAYOID 1009 -DATA(insert OID = 1028 ( _oid PGNSP PGUID -1 f b A f t \054 0 26 0 array_in array_out array_recv array_send - - array_typanalyze i x f 0 -1 0 0 _null_ _null_ _null_ )); -#define OIDARRAYOID 1028 -DATA(insert OID = 1010 ( _tid PGNSP PGUID -1 f b A f t \054 0 27 0 array_in array_out array_recv array_send - - array_typanalyze i x f 0 -1 0 0 _null_ _null_ _null_ )); -DATA(insert OID = 1011 ( _xid PGNSP PGUID -1 f b A f t \054 0 28 0 array_in array_out array_recv array_send - - array_typanalyze i x f 0 -1 0 0 _null_ _null_ _null_ )); -DATA(insert OID = 1012 ( _cid PGNSP PGUID -1 f b A f t \054 0 29 0 array_in array_out array_recv array_send - - array_typanalyze i x f 0 -1 0 0 _null_ _null_ _null_ )); -DATA(insert OID = 1013 ( _oidvector PGNSP PGUID -1 f b A f t \054 0 30 0 array_in array_out array_recv array_send - - array_typanalyze i x f 0 -1 0 0 _null_ _null_ _null_ )); -DATA(insert OID = 1014 ( _bpchar PGNSP PGUID -1 f b A f t \054 0 1042 0 array_in array_out array_recv array_send bpchartypmodin bpchartypmodout array_typanalyze i x f 0 -1 0 100 _null_ _null_ _null_ )); -DATA(insert OID = 1015 ( _varchar PGNSP PGUID -1 f b A f t \054 0 1043 0 array_in array_out array_recv array_send varchartypmodin varchartypmodout array_typanalyze i x f 0 -1 0 100 _null_ _null_ _null_ )); -DATA(insert OID = 1016 ( _int8 PGNSP PGUID -1 f b A f t \054 0 20 0 array_in array_out array_recv array_send - - array_typanalyze d x f 0 -1 0 0 _null_ _null_ _null_ )); -DATA(insert OID = 1017 ( _point PGNSP PGUID -1 f b A f t \054 0 600 0 array_in array_out array_recv array_send - - array_typanalyze d x f 0 -1 0 0 _null_ _null_ _null_ )); -DATA(insert OID = 1018 ( _lseg PGNSP PGUID -1 f b A f t \054 0 601 0 array_in array_out array_recv array_send - - array_typanalyze d x f 0 -1 0 0 _null_ _null_ _null_ )); -DATA(insert OID = 1019 ( _path PGNSP PGUID -1 f b A f t \054 0 602 0 array_in array_out array_recv array_send - - array_typanalyze d x f 0 -1 0 0 _null_ _null_ _null_ )); -DATA(insert OID = 1020 ( _box PGNSP PGUID -1 f b A f t \073 0 603 0 array_in array_out array_recv array_send - - array_typanalyze d x f 0 -1 0 0 _null_ _null_ _null_ )); -DATA(insert OID = 1021 ( _float4 PGNSP PGUID -1 f b A f t \054 0 700 0 array_in array_out array_recv array_send - - array_typanalyze i x f 0 -1 0 0 _null_ _null_ _null_ )); -#define FLOAT4ARRAYOID 1021 -DATA(insert OID = 1022 ( _float8 PGNSP PGUID -1 f b A f t \054 0 701 0 array_in array_out array_recv array_send - - array_typanalyze d x f 0 -1 0 0 _null_ _null_ _null_ )); -DATA(insert OID = 1023 ( _abstime PGNSP PGUID -1 f b A f t \054 0 702 0 array_in array_out array_recv array_send - - array_typanalyze i x f 0 -1 0 0 _null_ _null_ _null_ )); -DATA(insert OID = 1024 ( _reltime PGNSP PGUID -1 f b A f t \054 0 703 0 array_in array_out array_recv array_send - - array_typanalyze i x f 0 -1 0 0 _null_ _null_ _null_ )); -DATA(insert OID = 1025 ( _tinterval PGNSP PGUID -1 f b A f t \054 0 704 0 array_in array_out array_recv array_send - - array_typanalyze i x f 0 -1 0 0 _null_ _null_ _null_ )); -DATA(insert OID = 1027 ( _polygon PGNSP PGUID -1 f b A f t \054 0 604 0 array_in array_out array_recv array_send - - array_typanalyze d x f 0 -1 0 0 _null_ _null_ _null_ )); -DATA(insert OID = 1033 ( aclitem PGNSP PGUID 12 f b U f t \054 0 0 1034 aclitemin aclitemout - - - - - i p f 0 -1 0 0 _null_ _null_ _null_ )); -DESCR("access control list"); -#define ACLITEMOID 1033 -DATA(insert OID = 1034 ( _aclitem PGNSP PGUID -1 f b A f t \054 0 1033 0 array_in array_out array_recv array_send - - array_typanalyze i x f 0 -1 0 0 _null_ _null_ _null_ )); -DATA(insert OID = 1040 ( _macaddr PGNSP PGUID -1 f b A f t \054 0 829 0 array_in array_out array_recv array_send - - array_typanalyze i x f 0 -1 0 0 _null_ _null_ _null_ )); -DATA(insert OID = 775 ( _macaddr8 PGNSP PGUID -1 f b A f t \054 0 774 0 array_in array_out array_recv array_send - - array_typanalyze i x f 0 -1 0 0 _null_ _null_ _null_ )); -DATA(insert OID = 1041 ( _inet PGNSP PGUID -1 f b A f t \054 0 869 0 array_in array_out array_recv array_send - - array_typanalyze i x f 0 -1 0 0 _null_ _null_ _null_ )); -DATA(insert OID = 651 ( _cidr PGNSP PGUID -1 f b A f t \054 0 650 0 array_in array_out array_recv array_send - - array_typanalyze i x f 0 -1 0 0 _null_ _null_ _null_ )); -DATA(insert OID = 1263 ( _cstring PGNSP PGUID -1 f b A f t \054 0 2275 0 array_in array_out array_recv array_send - - array_typanalyze i x f 0 -1 0 0 _null_ _null_ _null_ )); -#define CSTRINGARRAYOID 1263 - -DATA(insert OID = 1042 ( bpchar PGNSP PGUID -1 f b S f t \054 0 0 1014 bpcharin bpcharout bpcharrecv bpcharsend bpchartypmodin bpchartypmodout - i x f 0 -1 0 100 _null_ _null_ _null_ )); -DESCR("char(length), blank-padded string, fixed storage length"); -#define BPCHAROID 1042 -DATA(insert OID = 1043 ( varchar PGNSP PGUID -1 f b S f t \054 0 0 1015 varcharin varcharout varcharrecv varcharsend varchartypmodin varchartypmodout - i x f 0 -1 0 100 _null_ _null_ _null_ )); -DESCR("varchar(length), non-blank-padded string, variable storage length"); -#define VARCHAROID 1043 - -DATA(insert OID = 1082 ( date PGNSP PGUID 4 t b D f t \054 0 0 1182 date_in date_out date_recv date_send - - - i p f 0 -1 0 0 _null_ _null_ _null_ )); -DESCR("date"); -#define DATEOID 1082 -DATA(insert OID = 1083 ( time PGNSP PGUID 8 FLOAT8PASSBYVAL b D f t \054 0 0 1183 time_in time_out time_recv time_send timetypmodin timetypmodout - d p f 0 -1 0 0 _null_ _null_ _null_ )); -DESCR("time of day"); -#define TIMEOID 1083 - -/* OIDS 1100 - 1199 */ -DATA(insert OID = 1114 ( timestamp PGNSP PGUID 8 FLOAT8PASSBYVAL b D f t \054 0 0 1115 timestamp_in timestamp_out timestamp_recv timestamp_send timestamptypmodin timestamptypmodout - d p f 0 -1 0 0 _null_ _null_ _null_ )); -DESCR("date and time"); -#define TIMESTAMPOID 1114 -DATA(insert OID = 1115 ( _timestamp PGNSP PGUID -1 f b A f t \054 0 1114 0 array_in array_out array_recv array_send timestamptypmodin timestamptypmodout array_typanalyze d x f 0 -1 0 0 _null_ _null_ _null_ )); -DATA(insert OID = 1182 ( _date PGNSP PGUID -1 f b A f t \054 0 1082 0 array_in array_out array_recv array_send - - array_typanalyze i x f 0 -1 0 0 _null_ _null_ _null_ )); -DATA(insert OID = 1183 ( _time PGNSP PGUID -1 f b A f t \054 0 1083 0 array_in array_out array_recv array_send timetypmodin timetypmodout array_typanalyze d x f 0 -1 0 0 _null_ _null_ _null_ )); -DATA(insert OID = 1184 ( timestamptz PGNSP PGUID 8 FLOAT8PASSBYVAL b D t t \054 0 0 1185 timestamptz_in timestamptz_out timestamptz_recv timestamptz_send timestamptztypmodin timestamptztypmodout - d p f 0 -1 0 0 _null_ _null_ _null_ )); -DESCR("date and time with time zone"); -#define TIMESTAMPTZOID 1184 -DATA(insert OID = 1185 ( _timestamptz PGNSP PGUID -1 f b A f t \054 0 1184 0 array_in array_out array_recv array_send timestamptztypmodin timestamptztypmodout array_typanalyze d x f 0 -1 0 0 _null_ _null_ _null_ )); -DATA(insert OID = 1186 ( interval PGNSP PGUID 16 f b T t t \054 0 0 1187 interval_in interval_out interval_recv interval_send intervaltypmodin intervaltypmodout - d p f 0 -1 0 0 _null_ _null_ _null_ )); -DESCR("@ , time interval"); -#define INTERVALOID 1186 -DATA(insert OID = 1187 ( _interval PGNSP PGUID -1 f b A f t \054 0 1186 0 array_in array_out array_recv array_send intervaltypmodin intervaltypmodout array_typanalyze d x f 0 -1 0 0 _null_ _null_ _null_ )); - -/* OIDS 1200 - 1299 */ -DATA(insert OID = 1231 ( _numeric PGNSP PGUID -1 f b A f t \054 0 1700 0 array_in array_out array_recv array_send numerictypmodin numerictypmodout array_typanalyze i x f 0 -1 0 0 _null_ _null_ _null_ )); -DATA(insert OID = 1266 ( timetz PGNSP PGUID 12 f b D f t \054 0 0 1270 timetz_in timetz_out timetz_recv timetz_send timetztypmodin timetztypmodout - d p f 0 -1 0 0 _null_ _null_ _null_ )); -DESCR("time of day with time zone"); -#define TIMETZOID 1266 -DATA(insert OID = 1270 ( _timetz PGNSP PGUID -1 f b A f t \054 0 1266 0 array_in array_out array_recv array_send timetztypmodin timetztypmodout array_typanalyze d x f 0 -1 0 0 _null_ _null_ _null_ )); - -/* OIDS 1500 - 1599 */ -DATA(insert OID = 1560 ( bit PGNSP PGUID -1 f b V f t \054 0 0 1561 bit_in bit_out bit_recv bit_send bittypmodin bittypmodout - i x f 0 -1 0 0 _null_ _null_ _null_ )); -DESCR("fixed-length bit string"); -#define BITOID 1560 -DATA(insert OID = 1561 ( _bit PGNSP PGUID -1 f b A f t \054 0 1560 0 array_in array_out array_recv array_send bittypmodin bittypmodout array_typanalyze i x f 0 -1 0 0 _null_ _null_ _null_ )); -DATA(insert OID = 1562 ( varbit PGNSP PGUID -1 f b V t t \054 0 0 1563 varbit_in varbit_out varbit_recv varbit_send varbittypmodin varbittypmodout - i x f 0 -1 0 0 _null_ _null_ _null_ )); -DESCR("variable-length bit string"); -#define VARBITOID 1562 -DATA(insert OID = 1563 ( _varbit PGNSP PGUID -1 f b A f t \054 0 1562 0 array_in array_out array_recv array_send varbittypmodin varbittypmodout array_typanalyze i x f 0 -1 0 0 _null_ _null_ _null_ )); - -/* OIDS 1600 - 1699 */ - -/* OIDS 1700 - 1799 */ -DATA(insert OID = 1700 ( numeric PGNSP PGUID -1 f b N f t \054 0 0 1231 numeric_in numeric_out numeric_recv numeric_send numerictypmodin numerictypmodout - i m f 0 -1 0 0 _null_ _null_ _null_ )); -DESCR("numeric(precision, decimal), arbitrary precision number"); -#define NUMERICOID 1700 - -DATA(insert OID = 1790 ( refcursor PGNSP PGUID -1 f b U f t \054 0 0 2201 textin textout textrecv textsend - - - i x f 0 -1 0 0 _null_ _null_ _null_ )); -DESCR("reference to cursor (portal name)"); -#define REFCURSOROID 1790 - -/* OIDS 2200 - 2299 */ -DATA(insert OID = 2201 ( _refcursor PGNSP PGUID -1 f b A f t \054 0 1790 0 array_in array_out array_recv array_send - - array_typanalyze i x f 0 -1 0 0 _null_ _null_ _null_ )); - -DATA(insert OID = 2202 ( regprocedure PGNSP PGUID 4 t b N f t \054 0 0 2207 regprocedurein regprocedureout regprocedurerecv regproceduresend - - - i p f 0 -1 0 0 _null_ _null_ _null_ )); -DESCR("registered procedure (with args)"); -#define REGPROCEDUREOID 2202 - -DATA(insert OID = 2203 ( regoper PGNSP PGUID 4 t b N f t \054 0 0 2208 regoperin regoperout regoperrecv regopersend - - - i p f 0 -1 0 0 _null_ _null_ _null_ )); -DESCR("registered operator"); -#define REGOPEROID 2203 - -DATA(insert OID = 2204 ( regoperator PGNSP PGUID 4 t b N f t \054 0 0 2209 regoperatorin regoperatorout regoperatorrecv regoperatorsend - - - i p f 0 -1 0 0 _null_ _null_ _null_ )); -DESCR("registered operator (with args)"); -#define REGOPERATOROID 2204 - -DATA(insert OID = 2205 ( regclass PGNSP PGUID 4 t b N f t \054 0 0 2210 regclassin regclassout regclassrecv regclasssend - - - i p f 0 -1 0 0 _null_ _null_ _null_ )); -DESCR("registered class"); -#define REGCLASSOID 2205 - -DATA(insert OID = 2206 ( regtype PGNSP PGUID 4 t b N f t \054 0 0 2211 regtypein regtypeout regtyperecv regtypesend - - - i p f 0 -1 0 0 _null_ _null_ _null_ )); -DESCR("registered type"); -#define REGTYPEOID 2206 - -DATA(insert OID = 4096 ( regrole PGNSP PGUID 4 t b N f t \054 0 0 4097 regrolein regroleout regrolerecv regrolesend - - - i p f 0 -1 0 0 _null_ _null_ _null_ )); -DESCR("registered role"); -#define REGROLEOID 4096 - -DATA(insert OID = 4089 ( regnamespace PGNSP PGUID 4 t b N f t \054 0 0 4090 regnamespacein regnamespaceout regnamespacerecv regnamespacesend - - - i p f 0 -1 0 0 _null_ _null_ _null_ )); -DESCR("registered namespace"); -#define REGNAMESPACEOID 4089 - -DATA(insert OID = 2207 ( _regprocedure PGNSP PGUID -1 f b A f t \054 0 2202 0 array_in array_out array_recv array_send - - array_typanalyze i x f 0 -1 0 0 _null_ _null_ _null_ )); -DATA(insert OID = 2208 ( _regoper PGNSP PGUID -1 f b A f t \054 0 2203 0 array_in array_out array_recv array_send - - array_typanalyze i x f 0 -1 0 0 _null_ _null_ _null_ )); -DATA(insert OID = 2209 ( _regoperator PGNSP PGUID -1 f b A f t \054 0 2204 0 array_in array_out array_recv array_send - - array_typanalyze i x f 0 -1 0 0 _null_ _null_ _null_ )); -DATA(insert OID = 2210 ( _regclass PGNSP PGUID -1 f b A f t \054 0 2205 0 array_in array_out array_recv array_send - - array_typanalyze i x f 0 -1 0 0 _null_ _null_ _null_ )); -DATA(insert OID = 2211 ( _regtype PGNSP PGUID -1 f b A f t \054 0 2206 0 array_in array_out array_recv array_send - - array_typanalyze i x f 0 -1 0 0 _null_ _null_ _null_ )); -#define REGTYPEARRAYOID 2211 -DATA(insert OID = 4097 ( _regrole PGNSP PGUID -1 f b A f t \054 0 4096 0 array_in array_out array_recv array_send - - array_typanalyze i x f 0 -1 0 0 _null_ _null_ _null_ )); -DATA(insert OID = 4090 ( _regnamespace PGNSP PGUID -1 f b A f t \054 0 4089 0 array_in array_out array_recv array_send - - array_typanalyze i x f 0 -1 0 0 _null_ _null_ _null_ )); - -/* uuid */ -DATA(insert OID = 2950 ( uuid PGNSP PGUID 16 f b U f t \054 0 0 2951 uuid_in uuid_out uuid_recv uuid_send - - - c p f 0 -1 0 0 _null_ _null_ _null_ )); -DESCR("UUID datatype"); -#define UUIDOID 2950 -DATA(insert OID = 2951 ( _uuid PGNSP PGUID -1 f b A f t \054 0 2950 0 array_in array_out array_recv array_send - - array_typanalyze i x f 0 -1 0 0 _null_ _null_ _null_ )); - -/* pg_lsn */ -DATA(insert OID = 3220 ( pg_lsn PGNSP PGUID 8 FLOAT8PASSBYVAL b U f t \054 0 0 3221 pg_lsn_in pg_lsn_out pg_lsn_recv pg_lsn_send - - - d p f 0 -1 0 0 _null_ _null_ _null_ )); -DESCR("PostgreSQL LSN datatype"); -#define LSNOID 3220 -DATA(insert OID = 3221 ( _pg_lsn PGNSP PGUID -1 f b A f t \054 0 3220 0 array_in array_out array_recv array_send - - array_typanalyze d x f 0 -1 0 0 _null_ _null_ _null_ )); - -/* text search */ -DATA(insert OID = 3614 ( tsvector PGNSP PGUID -1 f b U f t \054 0 0 3643 tsvectorin tsvectorout tsvectorrecv tsvectorsend - - ts_typanalyze i x f 0 -1 0 0 _null_ _null_ _null_ )); -DESCR("text representation for text search"); -#define TSVECTOROID 3614 -DATA(insert OID = 3642 ( gtsvector PGNSP PGUID -1 f b U f t \054 0 0 3644 gtsvectorin gtsvectorout - - - - - i p f 0 -1 0 0 _null_ _null_ _null_ )); -DESCR("GiST index internal text representation for text search"); -#define GTSVECTOROID 3642 -DATA(insert OID = 3615 ( tsquery PGNSP PGUID -1 f b U f t \054 0 0 3645 tsqueryin tsqueryout tsqueryrecv tsquerysend - - - i p f 0 -1 0 0 _null_ _null_ _null_ )); -DESCR("query representation for text search"); -#define TSQUERYOID 3615 -DATA(insert OID = 3734 ( regconfig PGNSP PGUID 4 t b N f t \054 0 0 3735 regconfigin regconfigout regconfigrecv regconfigsend - - - i p f 0 -1 0 0 _null_ _null_ _null_ )); -DESCR("registered text search configuration"); -#define REGCONFIGOID 3734 -DATA(insert OID = 3769 ( regdictionary PGNSP PGUID 4 t b N f t \054 0 0 3770 regdictionaryin regdictionaryout regdictionaryrecv regdictionarysend - - - i p f 0 -1 0 0 _null_ _null_ _null_ )); -DESCR("registered text search dictionary"); -#define REGDICTIONARYOID 3769 - -DATA(insert OID = 3643 ( _tsvector PGNSP PGUID -1 f b A f t \054 0 3614 0 array_in array_out array_recv array_send - - array_typanalyze i x f 0 -1 0 0 _null_ _null_ _null_ )); -DATA(insert OID = 3644 ( _gtsvector PGNSP PGUID -1 f b A f t \054 0 3642 0 array_in array_out array_recv array_send - - array_typanalyze i x f 0 -1 0 0 _null_ _null_ _null_ )); -DATA(insert OID = 3645 ( _tsquery PGNSP PGUID -1 f b A f t \054 0 3615 0 array_in array_out array_recv array_send - - array_typanalyze i x f 0 -1 0 0 _null_ _null_ _null_ )); -DATA(insert OID = 3735 ( _regconfig PGNSP PGUID -1 f b A f t \054 0 3734 0 array_in array_out array_recv array_send - - array_typanalyze i x f 0 -1 0 0 _null_ _null_ _null_ )); -DATA(insert OID = 3770 ( _regdictionary PGNSP PGUID -1 f b A f t \054 0 3769 0 array_in array_out array_recv array_send - - array_typanalyze i x f 0 -1 0 0 _null_ _null_ _null_ )); - -/* jsonb */ -DATA(insert OID = 3802 ( jsonb PGNSP PGUID -1 f b U f t \054 0 0 3807 jsonb_in jsonb_out jsonb_recv jsonb_send - - - i x f 0 -1 0 0 _null_ _null_ _null_ )); -DESCR("Binary JSON"); -#define JSONBOID 3802 -DATA(insert OID = 3807 ( _jsonb PGNSP PGUID -1 f b A f t \054 0 3802 0 array_in array_out array_recv array_send - - array_typanalyze i x f 0 -1 0 0 _null_ _null_ _null_ )); - -DATA(insert OID = 2970 ( txid_snapshot PGNSP PGUID -1 f b U f t \054 0 0 2949 txid_snapshot_in txid_snapshot_out txid_snapshot_recv txid_snapshot_send - - - d x f 0 -1 0 0 _null_ _null_ _null_ )); -DESCR("txid snapshot"); -DATA(insert OID = 2949 ( _txid_snapshot PGNSP PGUID -1 f b A f t \054 0 2970 0 array_in array_out array_recv array_send - - array_typanalyze d x f 0 -1 0 0 _null_ _null_ _null_ )); - -/* range types */ -DATA(insert OID = 3904 ( int4range PGNSP PGUID -1 f r R f t \054 0 0 3905 range_in range_out range_recv range_send - - range_typanalyze i x f 0 -1 0 0 _null_ _null_ _null_ )); -DESCR("range of integers"); -#define INT4RANGEOID 3904 -DATA(insert OID = 3905 ( _int4range PGNSP PGUID -1 f b A f t \054 0 3904 0 array_in array_out array_recv array_send - - array_typanalyze i x f 0 -1 0 0 _null_ _null_ _null_ )); -DATA(insert OID = 3906 ( numrange PGNSP PGUID -1 f r R f t \054 0 0 3907 range_in range_out range_recv range_send - - range_typanalyze i x f 0 -1 0 0 _null_ _null_ _null_ )); -DESCR("range of numerics"); -DATA(insert OID = 3907 ( _numrange PGNSP PGUID -1 f b A f t \054 0 3906 0 array_in array_out array_recv array_send - - array_typanalyze i x f 0 -1 0 0 _null_ _null_ _null_ )); -DATA(insert OID = 3908 ( tsrange PGNSP PGUID -1 f r R f t \054 0 0 3909 range_in range_out range_recv range_send - - range_typanalyze d x f 0 -1 0 0 _null_ _null_ _null_ )); -DESCR("range of timestamps without time zone"); -DATA(insert OID = 3909 ( _tsrange PGNSP PGUID -1 f b A f t \054 0 3908 0 array_in array_out array_recv array_send - - array_typanalyze d x f 0 -1 0 0 _null_ _null_ _null_ )); -DATA(insert OID = 3910 ( tstzrange PGNSP PGUID -1 f r R f t \054 0 0 3911 range_in range_out range_recv range_send - - range_typanalyze d x f 0 -1 0 0 _null_ _null_ _null_ )); -DESCR("range of timestamps with time zone"); -DATA(insert OID = 3911 ( _tstzrange PGNSP PGUID -1 f b A f t \054 0 3910 0 array_in array_out array_recv array_send - - array_typanalyze d x f 0 -1 0 0 _null_ _null_ _null_ )); -DATA(insert OID = 3912 ( daterange PGNSP PGUID -1 f r R f t \054 0 0 3913 range_in range_out range_recv range_send - - range_typanalyze i x f 0 -1 0 0 _null_ _null_ _null_ )); -DESCR("range of dates"); -DATA(insert OID = 3913 ( _daterange PGNSP PGUID -1 f b A f t \054 0 3912 0 array_in array_out array_recv array_send - - array_typanalyze i x f 0 -1 0 0 _null_ _null_ _null_ )); -DATA(insert OID = 3926 ( int8range PGNSP PGUID -1 f r R f t \054 0 0 3927 range_in range_out range_recv range_send - - range_typanalyze d x f 0 -1 0 0 _null_ _null_ _null_ )); -DESCR("range of bigints"); -DATA(insert OID = 3927 ( _int8range PGNSP PGUID -1 f b A f t \054 0 3926 0 array_in array_out array_recv array_send - - array_typanalyze d x f 0 -1 0 0 _null_ _null_ _null_ )); - -/* - * pseudo-types - * - * types with typtype='p' represent various special cases in the type system. - * - * These cannot be used to define table columns, but are valid as function - * argument and result types (if supported by the function's implementation - * language). - * - * Note: cstring is a borderline case; it is still considered a pseudo-type, - * but there is now support for it in records and arrays. Perhaps we should - * just treat it as a regular base type? - */ -DATA(insert OID = 2249 ( record PGNSP PGUID -1 f p P f t \054 0 0 2287 record_in record_out record_recv record_send - - - d x f 0 -1 0 0 _null_ _null_ _null_ )); -#define RECORDOID 2249 -DATA(insert OID = 2287 ( _record PGNSP PGUID -1 f p P f t \054 0 2249 0 array_in array_out array_recv array_send - - array_typanalyze d x f 0 -1 0 0 _null_ _null_ _null_ )); -#define RECORDARRAYOID 2287 -DATA(insert OID = 2275 ( cstring PGNSP PGUID -2 f p P f t \054 0 0 1263 cstring_in cstring_out cstring_recv cstring_send - - - c p f 0 -1 0 0 _null_ _null_ _null_ )); -#define CSTRINGOID 2275 -DATA(insert OID = 2276 ( any PGNSP PGUID 4 t p P f t \054 0 0 0 any_in any_out - - - - - i p f 0 -1 0 0 _null_ _null_ _null_ )); -#define ANYOID 2276 -DATA(insert OID = 2277 ( anyarray PGNSP PGUID -1 f p P f t \054 0 0 0 anyarray_in anyarray_out anyarray_recv anyarray_send - - - d x f 0 -1 0 0 _null_ _null_ _null_ )); -#define ANYARRAYOID 2277 -DATA(insert OID = 2278 ( void PGNSP PGUID 4 t p P f t \054 0 0 0 void_in void_out void_recv void_send - - - i p f 0 -1 0 0 _null_ _null_ _null_ )); -#define VOIDOID 2278 -DATA(insert OID = 2279 ( trigger PGNSP PGUID 4 t p P f t \054 0 0 0 trigger_in trigger_out - - - - - i p f 0 -1 0 0 _null_ _null_ _null_ )); -#define TRIGGEROID 2279 -DATA(insert OID = 3838 ( event_trigger PGNSP PGUID 4 t p P f t \054 0 0 0 event_trigger_in event_trigger_out - - - - - i p f 0 -1 0 0 _null_ _null_ _null_ )); -#define EVTTRIGGEROID 3838 -DATA(insert OID = 2280 ( language_handler PGNSP PGUID 4 t p P f t \054 0 0 0 language_handler_in language_handler_out - - - - - i p f 0 -1 0 0 _null_ _null_ _null_ )); -#define LANGUAGE_HANDLEROID 2280 -DATA(insert OID = 2281 ( internal PGNSP PGUID SIZEOF_POINTER t p P f t \054 0 0 0 internal_in internal_out - - - - - ALIGNOF_POINTER p f 0 -1 0 0 _null_ _null_ _null_ )); -#define INTERNALOID 2281 -DATA(insert OID = 2282 ( opaque PGNSP PGUID 4 t p P f t \054 0 0 0 opaque_in opaque_out - - - - - i p f 0 -1 0 0 _null_ _null_ _null_ )); -#define OPAQUEOID 2282 -DATA(insert OID = 2283 ( anyelement PGNSP PGUID 4 t p P f t \054 0 0 0 anyelement_in anyelement_out - - - - - i p f 0 -1 0 0 _null_ _null_ _null_ )); -#define ANYELEMENTOID 2283 -DATA(insert OID = 2776 ( anynonarray PGNSP PGUID 4 t p P f t \054 0 0 0 anynonarray_in anynonarray_out - - - - - i p f 0 -1 0 0 _null_ _null_ _null_ )); -#define ANYNONARRAYOID 2776 -DATA(insert OID = 3500 ( anyenum PGNSP PGUID 4 t p P f t \054 0 0 0 anyenum_in anyenum_out - - - - - i p f 0 -1 0 0 _null_ _null_ _null_ )); -#define ANYENUMOID 3500 -DATA(insert OID = 3115 ( fdw_handler PGNSP PGUID 4 t p P f t \054 0 0 0 fdw_handler_in fdw_handler_out - - - - - i p f 0 -1 0 0 _null_ _null_ _null_ )); -#define FDW_HANDLEROID 3115 -DATA(insert OID = 325 ( index_am_handler PGNSP PGUID 4 t p P f t \054 0 0 0 index_am_handler_in index_am_handler_out - - - - - i p f 0 -1 0 0 _null_ _null_ _null_ )); -#define INDEX_AM_HANDLEROID 325 -DATA(insert OID = 3310 ( tsm_handler PGNSP PGUID 4 t p P f t \054 0 0 0 tsm_handler_in tsm_handler_out - - - - - i p f 0 -1 0 0 _null_ _null_ _null_ )); -#define TSM_HANDLEROID 3310 -DATA(insert OID = 3831 ( anyrange PGNSP PGUID -1 f p P f t \054 0 0 0 anyrange_in anyrange_out - - - - - d x f 0 -1 0 0 _null_ _null_ _null_ )); -#define ANYRANGEOID 3831 - - -/* - * macros + * macros for values of poor-mans-enumerated-type columns */ #define TYPTYPE_BASE 'b' /* base type (ordinary scalar type) */ #define TYPTYPE_COMPOSITE 'c' /* composite (e.g., table's rowtype) */ @@ -741,12 +283,90 @@ DATA(insert OID = 3831 ( anyrange PGNSP PGUID -1 f p P f t \054 0 0 0 anyrange #define TYPCATEGORY_BITSTRING 'V' /* er ... "varbit"? */ #define TYPCATEGORY_UNKNOWN 'X' +#define TYPALIGN_CHAR 'c' /* char alignment (i.e. unaligned) */ +#define TYPALIGN_SHORT 's' /* short alignment (typically 2 bytes) */ +#define TYPALIGN_INT 'i' /* int alignment (typically 4 bytes) */ +#define TYPALIGN_DOUBLE 'd' /* double alignment (often 8 bytes) */ + +#define TYPSTORAGE_PLAIN 'p' /* type not prepared for toasting */ +#define TYPSTORAGE_EXTERNAL 'e' /* toastable, don't try to compress */ +#define TYPSTORAGE_EXTENDED 'x' /* fully toastable */ +#define TYPSTORAGE_MAIN 'm' /* like 'x' but try to store inline */ + /* Is a type OID a polymorphic pseudotype? (Beware of multiple evaluation) */ #define IsPolymorphicType(typid) \ + (IsPolymorphicTypeFamily1(typid) || \ + IsPolymorphicTypeFamily2(typid)) + +/* Code not part of polymorphic type resolution should not use these macros: */ +#define IsPolymorphicTypeFamily1(typid) \ ((typid) == ANYELEMENTOID || \ (typid) == ANYARRAYOID || \ (typid) == ANYNONARRAYOID || \ (typid) == ANYENUMOID || \ (typid) == ANYRANGEOID) +#define IsPolymorphicTypeFamily2(typid) \ + ((typid) == ANYCOMPATIBLEOID || \ + (typid) == ANYCOMPATIBLEARRAYOID || \ + (typid) == ANYCOMPATIBLENONARRAYOID || \ + (typid) == ANYCOMPATIBLERANGEOID) + +#endif /* EXPOSE_TO_CLIENT_CODE */ + + +extern ObjectAddress TypeShellMake(const char *typeName, + Oid typeNamespace, + Oid ownerId); + +extern ObjectAddress TypeCreate(Oid newTypeOid, + const char *typeName, + Oid typeNamespace, + Oid relationOid, + char relationKind, + Oid ownerId, + int16 internalSize, + char typeType, + char typeCategory, + bool typePreferred, + char typDelim, + Oid inputProcedure, + Oid outputProcedure, + Oid receiveProcedure, + Oid sendProcedure, + Oid typmodinProcedure, + Oid typmodoutProcedure, + Oid analyzeProcedure, + Oid elementType, + bool isImplicitArray, + Oid arrayType, + Oid baseType, + const char *defaultTypeValue, + char *defaultTypeBin, + bool passedByValue, + char alignment, + char storage, + int32 typeMod, + int32 typNDims, + bool typeNotNull, + Oid typeCollation); + +extern void GenerateTypeDependencies(HeapTuple typeTuple, + Relation typeCatalog, + Node *defaultExpr, + void *typacl, + char relationKind, /* only for relation + * rowtypes */ + bool isImplicitArray, + bool isDependentType, + bool rebuild); + +extern void RenameTypeInternal(Oid typeOid, const char *newTypeName, + Oid typeNamespace); + +extern char *makeArrayTypeName(const char *typeName, Oid typeNamespace); + +extern bool moveArrayTypeName(Oid typeOid, const char *typeName, + Oid typeNamespace); + #endif /* PG_TYPE_H */ diff --git a/parser/include/catalog/pg_type_d.h b/parser/include/catalog/pg_type_d.h new file mode 100644 index 00000000..d967a690 --- /dev/null +++ b/parser/include/catalog/pg_type_d.h @@ -0,0 +1,285 @@ +/*------------------------------------------------------------------------- + * + * pg_type_d.h + * Macro definitions for pg_type + * + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group + * Portions Copyright (c) 1994, Regents of the University of California + * + * NOTES + * ****************************** + * *** DO NOT EDIT THIS FILE! *** + * ****************************** + * + * It has been GENERATED by src/backend/catalog/genbki.pl + * + *------------------------------------------------------------------------- + */ +#ifndef PG_TYPE_D_H +#define PG_TYPE_D_H + +#define TypeRelationId 1247 +#define TypeRelation_Rowtype_Id 71 + +#define Anum_pg_type_oid 1 +#define Anum_pg_type_typname 2 +#define Anum_pg_type_typnamespace 3 +#define Anum_pg_type_typowner 4 +#define Anum_pg_type_typlen 5 +#define Anum_pg_type_typbyval 6 +#define Anum_pg_type_typtype 7 +#define Anum_pg_type_typcategory 8 +#define Anum_pg_type_typispreferred 9 +#define Anum_pg_type_typisdefined 10 +#define Anum_pg_type_typdelim 11 +#define Anum_pg_type_typrelid 12 +#define Anum_pg_type_typelem 13 +#define Anum_pg_type_typarray 14 +#define Anum_pg_type_typinput 15 +#define Anum_pg_type_typoutput 16 +#define Anum_pg_type_typreceive 17 +#define Anum_pg_type_typsend 18 +#define Anum_pg_type_typmodin 19 +#define Anum_pg_type_typmodout 20 +#define Anum_pg_type_typanalyze 21 +#define Anum_pg_type_typalign 22 +#define Anum_pg_type_typstorage 23 +#define Anum_pg_type_typnotnull 24 +#define Anum_pg_type_typbasetype 25 +#define Anum_pg_type_typtypmod 26 +#define Anum_pg_type_typndims 27 +#define Anum_pg_type_typcollation 28 +#define Anum_pg_type_typdefaultbin 29 +#define Anum_pg_type_typdefault 30 +#define Anum_pg_type_typacl 31 + +#define Natts_pg_type 31 + + +/* + * macros for values of poor-mans-enumerated-type columns + */ +#define TYPTYPE_BASE 'b' /* base type (ordinary scalar type) */ +#define TYPTYPE_COMPOSITE 'c' /* composite (e.g., table's rowtype) */ +#define TYPTYPE_DOMAIN 'd' /* domain over another type */ +#define TYPTYPE_ENUM 'e' /* enumerated type */ +#define TYPTYPE_PSEUDO 'p' /* pseudo-type */ +#define TYPTYPE_RANGE 'r' /* range type */ + +#define TYPCATEGORY_INVALID '\0' /* not an allowed category */ +#define TYPCATEGORY_ARRAY 'A' +#define TYPCATEGORY_BOOLEAN 'B' +#define TYPCATEGORY_COMPOSITE 'C' +#define TYPCATEGORY_DATETIME 'D' +#define TYPCATEGORY_ENUM 'E' +#define TYPCATEGORY_GEOMETRIC 'G' +#define TYPCATEGORY_NETWORK 'I' /* think INET */ +#define TYPCATEGORY_NUMERIC 'N' +#define TYPCATEGORY_PSEUDOTYPE 'P' +#define TYPCATEGORY_RANGE 'R' +#define TYPCATEGORY_STRING 'S' +#define TYPCATEGORY_TIMESPAN 'T' +#define TYPCATEGORY_USER 'U' +#define TYPCATEGORY_BITSTRING 'V' /* er ... "varbit"? */ +#define TYPCATEGORY_UNKNOWN 'X' + +#define TYPALIGN_CHAR 'c' /* char alignment (i.e. unaligned) */ +#define TYPALIGN_SHORT 's' /* short alignment (typically 2 bytes) */ +#define TYPALIGN_INT 'i' /* int alignment (typically 4 bytes) */ +#define TYPALIGN_DOUBLE 'd' /* double alignment (often 8 bytes) */ + +#define TYPSTORAGE_PLAIN 'p' /* type not prepared for toasting */ +#define TYPSTORAGE_EXTERNAL 'e' /* toastable, don't try to compress */ +#define TYPSTORAGE_EXTENDED 'x' /* fully toastable */ +#define TYPSTORAGE_MAIN 'm' /* like 'x' but try to store inline */ + +/* Is a type OID a polymorphic pseudotype? (Beware of multiple evaluation) */ +#define IsPolymorphicType(typid) \ + (IsPolymorphicTypeFamily1(typid) || \ + IsPolymorphicTypeFamily2(typid)) + +/* Code not part of polymorphic type resolution should not use these macros: */ +#define IsPolymorphicTypeFamily1(typid) \ + ((typid) == ANYELEMENTOID || \ + (typid) == ANYARRAYOID || \ + (typid) == ANYNONARRAYOID || \ + (typid) == ANYENUMOID || \ + (typid) == ANYRANGEOID) + +#define IsPolymorphicTypeFamily2(typid) \ + ((typid) == ANYCOMPATIBLEOID || \ + (typid) == ANYCOMPATIBLEARRAYOID || \ + (typid) == ANYCOMPATIBLENONARRAYOID || \ + (typid) == ANYCOMPATIBLERANGEOID) + +#define BOOLOID 16 +#define BYTEAOID 17 +#define CHAROID 18 +#define NAMEOID 19 +#define INT8OID 20 +#define INT2OID 21 +#define INT2VECTOROID 22 +#define INT4OID 23 +#define REGPROCOID 24 +#define TEXTOID 25 +#define OIDOID 26 +#define TIDOID 27 +#define XIDOID 28 +#define CIDOID 29 +#define OIDVECTOROID 30 +#define JSONOID 114 +#define XMLOID 142 +#define PGNODETREEOID 194 +#define PGNDISTINCTOID 3361 +#define PGDEPENDENCIESOID 3402 +#define PGMCVLISTOID 5017 +#define PGDDLCOMMANDOID 32 +#define XID8OID 5069 +#define POINTOID 600 +#define LSEGOID 601 +#define PATHOID 602 +#define BOXOID 603 +#define POLYGONOID 604 +#define LINEOID 628 +#define FLOAT4OID 700 +#define FLOAT8OID 701 +#define UNKNOWNOID 705 +#define CIRCLEOID 718 +#define CASHOID 790 +#define MACADDROID 829 +#define INETOID 869 +#define CIDROID 650 +#define MACADDR8OID 774 +#define ACLITEMOID 1033 +#define BPCHAROID 1042 +#define VARCHAROID 1043 +#define DATEOID 1082 +#define TIMEOID 1083 +#define TIMESTAMPOID 1114 +#define TIMESTAMPTZOID 1184 +#define INTERVALOID 1186 +#define TIMETZOID 1266 +#define BITOID 1560 +#define VARBITOID 1562 +#define NUMERICOID 1700 +#define REFCURSOROID 1790 +#define REGPROCEDUREOID 2202 +#define REGOPEROID 2203 +#define REGOPERATOROID 2204 +#define REGCLASSOID 2205 +#define REGCOLLATIONOID 4191 +#define REGTYPEOID 2206 +#define REGROLEOID 4096 +#define REGNAMESPACEOID 4089 +#define UUIDOID 2950 +#define LSNOID 3220 +#define TSVECTOROID 3614 +#define GTSVECTOROID 3642 +#define TSQUERYOID 3615 +#define REGCONFIGOID 3734 +#define REGDICTIONARYOID 3769 +#define JSONBOID 3802 +#define JSONPATHOID 4072 +#define TXID_SNAPSHOTOID 2970 +#define PG_SNAPSHOTOID 5038 +#define INT4RANGEOID 3904 +#define NUMRANGEOID 3906 +#define TSRANGEOID 3908 +#define TSTZRANGEOID 3910 +#define DATERANGEOID 3912 +#define INT8RANGEOID 3926 +#define RECORDOID 2249 +#define RECORDARRAYOID 2287 +#define CSTRINGOID 2275 +#define ANYOID 2276 +#define ANYARRAYOID 2277 +#define VOIDOID 2278 +#define TRIGGEROID 2279 +#define EVTTRIGGEROID 3838 +#define LANGUAGE_HANDLEROID 2280 +#define INTERNALOID 2281 +#define ANYELEMENTOID 2283 +#define ANYNONARRAYOID 2776 +#define ANYENUMOID 3500 +#define FDW_HANDLEROID 3115 +#define INDEX_AM_HANDLEROID 325 +#define TSM_HANDLEROID 3310 +#define TABLE_AM_HANDLEROID 269 +#define ANYRANGEOID 3831 +#define ANYCOMPATIBLEOID 5077 +#define ANYCOMPATIBLEARRAYOID 5078 +#define ANYCOMPATIBLENONARRAYOID 5079 +#define ANYCOMPATIBLERANGEOID 5080 +#define BOOLARRAYOID 1000 +#define BYTEAARRAYOID 1001 +#define CHARARRAYOID 1002 +#define NAMEARRAYOID 1003 +#define INT8ARRAYOID 1016 +#define INT2ARRAYOID 1005 +#define INT2VECTORARRAYOID 1006 +#define INT4ARRAYOID 1007 +#define REGPROCARRAYOID 1008 +#define TEXTARRAYOID 1009 +#define OIDARRAYOID 1028 +#define TIDARRAYOID 1010 +#define XIDARRAYOID 1011 +#define CIDARRAYOID 1012 +#define OIDVECTORARRAYOID 1013 +#define JSONARRAYOID 199 +#define XMLARRAYOID 143 +#define XID8ARRAYOID 271 +#define POINTARRAYOID 1017 +#define LSEGARRAYOID 1018 +#define PATHARRAYOID 1019 +#define BOXARRAYOID 1020 +#define POLYGONARRAYOID 1027 +#define LINEARRAYOID 629 +#define FLOAT4ARRAYOID 1021 +#define FLOAT8ARRAYOID 1022 +#define CIRCLEARRAYOID 719 +#define MONEYARRAYOID 791 +#define MACADDRARRAYOID 1040 +#define INETARRAYOID 1041 +#define CIDRARRAYOID 651 +#define MACADDR8ARRAYOID 775 +#define ACLITEMARRAYOID 1034 +#define BPCHARARRAYOID 1014 +#define VARCHARARRAYOID 1015 +#define DATEARRAYOID 1182 +#define TIMEARRAYOID 1183 +#define TIMESTAMPARRAYOID 1115 +#define TIMESTAMPTZARRAYOID 1185 +#define INTERVALARRAYOID 1187 +#define TIMETZARRAYOID 1270 +#define BITARRAYOID 1561 +#define VARBITARRAYOID 1563 +#define NUMERICARRAYOID 1231 +#define REFCURSORARRAYOID 2201 +#define REGPROCEDUREARRAYOID 2207 +#define REGOPERARRAYOID 2208 +#define REGOPERATORARRAYOID 2209 +#define REGCLASSARRAYOID 2210 +#define REGCOLLATIONARRAYOID 4192 +#define REGTYPEARRAYOID 2211 +#define REGROLEARRAYOID 4097 +#define REGNAMESPACEARRAYOID 4090 +#define UUIDARRAYOID 2951 +#define PG_LSNARRAYOID 3221 +#define TSVECTORARRAYOID 3643 +#define GTSVECTORARRAYOID 3644 +#define TSQUERYARRAYOID 3645 +#define REGCONFIGARRAYOID 3735 +#define REGDICTIONARYARRAYOID 3770 +#define JSONBARRAYOID 3807 +#define JSONPATHARRAYOID 4073 +#define TXID_SNAPSHOTARRAYOID 2949 +#define PG_SNAPSHOTARRAYOID 5039 +#define INT4RANGEARRAYOID 3905 +#define NUMRANGEARRAYOID 3907 +#define TSRANGEARRAYOID 3909 +#define TSTZRANGEARRAYOID 3911 +#define DATERANGEARRAYOID 3913 +#define INT8RANGEARRAYOID 3927 +#define CSTRINGARRAYOID 1263 + +#endif /* PG_TYPE_D_H */ diff --git a/parser/include/catalog/storage.h b/parser/include/catalog/storage.h new file mode 100644 index 00000000..30c38e0c --- /dev/null +++ b/parser/include/catalog/storage.h @@ -0,0 +1,48 @@ +/*------------------------------------------------------------------------- + * + * storage.h + * prototypes for functions in backend/catalog/storage.c + * + * + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group + * Portions Copyright (c) 1994, Regents of the University of California + * + * src/include/catalog/storage.h + * + *------------------------------------------------------------------------- + */ +#ifndef STORAGE_H +#define STORAGE_H + +#include "storage/block.h" +#include "storage/relfilenode.h" +#include "storage/smgr.h" +#include "utils/relcache.h" + +/* GUC variables */ +extern int wal_skip_threshold; + +extern SMgrRelation RelationCreateStorage(RelFileNode rnode, char relpersistence); +extern void RelationDropStorage(Relation rel); +extern void RelationPreserveStorage(RelFileNode rnode, bool atCommit); +extern void RelationPreTruncate(Relation rel); +extern void RelationTruncate(Relation rel, BlockNumber nblocks); +extern void RelationCopyStorage(SMgrRelation src, SMgrRelation dst, + ForkNumber forkNum, char relpersistence); +extern bool RelFileNodeSkippingWAL(RelFileNode rnode); +extern Size EstimatePendingSyncsSpace(void); +extern void SerializePendingSyncs(Size maxSize, char *startAddress); +extern void RestorePendingSyncs(char *startAddress); + +/* + * These functions used to be in storage/smgr/smgr.c, which explains the + * naming + */ +extern void smgrDoPendingDeletes(bool isCommit); +extern void smgrDoPendingSyncs(bool isCommit, bool isParallelWorker); +extern int smgrGetPendingDeletes(bool forCommit, RelFileNode **ptr); +extern void AtSubCommit_smgr(void); +extern void AtSubAbort_smgr(void); +extern void PostPrepare_smgr(void); + +#endif /* STORAGE_H */ diff --git a/parser/include/commands/async.h b/parser/include/commands/async.h index 939711d8..4c35394f 100644 --- a/parser/include/commands/async.h +++ b/parser/include/commands/async.h @@ -3,7 +3,7 @@ * async.h * Asynchronous notification: NOTIFY, LISTEN, UNLISTEN * - * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/commands/async.h @@ -15,12 +15,10 @@ #include -#include "fmgr.h" - /* * The number of SLRU page buffers we use for the notification queue. */ -#define NUM_ASYNC_BUFFERS 8 +#define NUM_NOTIFY_BUFFERS 8 extern bool Trace_notify; extern volatile sig_atomic_t notifyInterruptPending; @@ -29,8 +27,8 @@ extern Size AsyncShmemSize(void); extern void AsyncShmemInit(void); extern void NotifyMyFrontEnd(const char *channel, - const char *payload, - int32 srcPid); + const char *payload, + int32 srcPid); /* notify-related SQL statements */ extern void Async_Notify(const char *channel, const char *payload); @@ -42,7 +40,6 @@ extern void Async_UnlistenAll(void); extern void PreCommit_Notify(void); extern void AtCommit_Notify(void); extern void AtAbort_Notify(void); -extern void AtSubStart_Notify(void); extern void AtSubCommit_Notify(void); extern void AtSubAbort_Notify(void); extern void AtPrepare_Notify(void); diff --git a/parser/include/commands/dbcommands.h b/parser/include/commands/dbcommands.h index f42c8cdb..fb8ccfdb 100644 --- a/parser/include/commands/dbcommands.h +++ b/parser/include/commands/dbcommands.h @@ -4,7 +4,7 @@ * Database management commands (create/drop database). * * - * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/commands/dbcommands.h @@ -17,16 +17,17 @@ #include "access/xlogreader.h" #include "catalog/objectaddress.h" #include "lib/stringinfo.h" -#include "nodes/parsenodes.h" +#include "parser/parse_node.h" extern Oid createdb(ParseState *pstate, const CreatedbStmt *stmt); -extern void dropdb(const char *dbname, bool missing_ok); +extern void dropdb(const char *dbname, bool missing_ok, bool force); +extern void DropDatabase(ParseState *pstate, DropdbStmt *stmt); extern ObjectAddress RenameDatabase(const char *oldname, const char *newname); extern Oid AlterDatabase(ParseState *pstate, AlterDatabaseStmt *stmt, bool isTopLevel); extern Oid AlterDatabaseSet(AlterDatabaseSetStmt *stmt); extern ObjectAddress AlterDatabaseOwner(const char *dbname, Oid newOwnerId); -extern Oid get_database_oid(const char *dbname, bool missingok); +extern Oid get_database_oid(const char *dbname, bool missing_ok); extern char *get_database_name(Oid dbid); extern void check_encoding_locale_matches(int encoding, const char *collate, const char *ctype); diff --git a/parser/include/commands/defrem.h b/parser/include/commands/defrem.h index f7bb4a54..c77c9a6e 100644 --- a/parser/include/commands/defrem.h +++ b/parser/include/commands/defrem.h @@ -4,7 +4,7 @@ * POSTGRES define and remove utility definitions. * * - * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/commands/defrem.h @@ -15,7 +15,9 @@ #define DEFREM_H #include "catalog/objectaddress.h" -#include "nodes/parsenodes.h" +#include "nodes/params.h" +#include "parser/parse_node.h" +#include "tcop/dest.h" #include "utils/array.h" /* commands/dropcmds.c */ @@ -23,55 +25,57 @@ extern void RemoveObjects(DropStmt *stmt); /* commands/indexcmds.c */ extern ObjectAddress DefineIndex(Oid relationId, - IndexStmt *stmt, - Oid indexRelationId, - bool is_alter_table, - bool check_rights, - bool check_not_in_use, - bool skip_build, - bool quiet); -extern Oid ReindexIndex(RangeVar *indexRelation, int options); -extern Oid ReindexTable(RangeVar *relation, int options); + IndexStmt *stmt, + Oid indexRelationId, + Oid parentIndexId, + Oid parentConstraintId, + bool is_alter_table, + bool check_rights, + bool check_not_in_use, + bool skip_build, + bool quiet); +extern void ReindexIndex(RangeVar *indexRelation, int options, bool concurrent); +extern Oid ReindexTable(RangeVar *relation, int options, bool concurrent); extern void ReindexMultipleTables(const char *objectName, ReindexObjectType objectKind, - int options); + int options, bool concurrent); extern char *makeObjectName(const char *name1, const char *name2, - const char *label); + const char *label); extern char *ChooseRelationName(const char *name1, const char *name2, - const char *label, Oid namespaceid); + const char *label, Oid namespaceid, + bool isconstraint); extern bool CheckIndexCompatible(Oid oldId, - char *accessMethodName, - List *attributeList, - List *exclusionOpNames); + const char *accessMethodName, + List *attributeList, + List *exclusionOpNames); extern Oid GetDefaultOpClass(Oid type_id, Oid am_id); -extern Oid ResolveOpClass(List *opclass, Oid attrType, - char *accessMethodName, Oid accessMethodId); +extern Oid ResolveOpClass(List *opclass, Oid attrType, + const char *accessMethodName, Oid accessMethodId); /* commands/functioncmds.c */ extern ObjectAddress CreateFunction(ParseState *pstate, CreateFunctionStmt *stmt); extern void RemoveFunctionById(Oid funcOid); -extern void SetFunctionReturnType(Oid funcOid, Oid newRetType); -extern void SetFunctionArgType(Oid funcOid, int argIndex, Oid newArgType); extern ObjectAddress AlterFunction(ParseState *pstate, AlterFunctionStmt *stmt); extern ObjectAddress CreateCast(CreateCastStmt *stmt); extern void DropCastById(Oid castOid); extern ObjectAddress CreateTransform(CreateTransformStmt *stmt); extern void DropTransformById(Oid transformOid); extern void IsThereFunctionInNamespace(const char *proname, int pronargs, - oidvector *proargtypes, Oid nspOid); -extern void ExecuteDoStmt(DoStmt *stmt); -extern Oid get_cast_oid(Oid sourcetypeid, Oid targettypeid, bool missing_ok); + oidvector *proargtypes, Oid nspOid); +extern void ExecuteDoStmt(DoStmt *stmt, bool atomic); +extern void ExecuteCallStmt(CallStmt *stmt, ParamListInfo params, bool atomic, DestReceiver *dest); +extern TupleDesc CallStmtResultDesc(CallStmt *stmt); extern Oid get_transform_oid(Oid type_id, Oid lang_id, bool missing_ok); extern void interpret_function_parameter_list(ParseState *pstate, - List *parameters, - Oid languageOid, - bool is_aggregate, - oidvector **parameterTypes, - ArrayType **allParameterTypes, - ArrayType **parameterModes, - ArrayType **parameterNames, - List **parameterDefaults, - Oid *variadicArgType, - Oid *requiredResultType); + List *parameters, + Oid languageOid, + ObjectType objtype, + oidvector **parameterTypes, + ArrayType **allParameterTypes, + ArrayType **parameterModes, + ArrayType **parameterNames, + List **parameterDefaults, + Oid *variadicArgType, + Oid *requiredResultType); /* commands/operatorcmds.c */ extern ObjectAddress DefineOperator(List *names, List *parameters); @@ -80,14 +84,15 @@ extern ObjectAddress AlterOperator(AlterOperatorStmt *stmt); /* commands/statscmds.c */ extern ObjectAddress CreateStatistics(CreateStatsStmt *stmt); +extern ObjectAddress AlterStatistics(AlterStatsStmt *stmt); extern void RemoveStatisticsById(Oid statsOid); extern void UpdateStatisticsForTypeChange(Oid statsOid, - Oid relationOid, int attnum, - Oid oldColumnType, Oid newColumnType); + Oid relationOid, int attnum, + Oid oldColumnType, Oid newColumnType); /* commands/aggregatecmds.c */ extern ObjectAddress DefineAggregate(ParseState *pstate, List *name, List *args, bool oldstyle, - List *parameters); + List *parameters, bool replace); /* commands/opclasscmds.c */ extern ObjectAddress DefineOpClass(CreateOpClassStmt *stmt); @@ -98,9 +103,9 @@ extern void RemoveOpFamilyById(Oid opfamilyOid); extern void RemoveAmOpEntryById(Oid entryOid); extern void RemoveAmProcEntryById(Oid entryOid); extern void IsThereOpClassInNamespace(const char *opcname, Oid opcmethod, - Oid opcnamespace); + Oid opcnamespace); extern void IsThereOpFamilyInNamespace(const char *opfname, Oid opfmethod, - Oid opfnamespace); + Oid opfnamespace); extern Oid get_opclass_oid(Oid amID, List *opclassname, bool missing_ok); extern Oid get_opfamily_oid(Oid amID, List *opfamilyname, bool missing_ok); @@ -116,7 +121,7 @@ extern ObjectAddress DefineTSTemplate(List *names, List *parameters); extern void RemoveTSTemplateById(Oid tmplId); extern ObjectAddress DefineTSConfiguration(List *names, List *parameters, - ObjectAddress *copied); + ObjectAddress *copied); extern void RemoveTSConfigurationById(Oid cfgId); extern ObjectAddress AlterTSConfiguration(AlterTSConfigurationStmt *stmt); @@ -141,14 +146,15 @@ extern void RemoveUserMappingById(Oid umId); extern void CreateForeignTable(CreateForeignTableStmt *stmt, Oid relid); extern void ImportForeignSchema(ImportForeignSchemaStmt *stmt); extern Datum transformGenericOptions(Oid catalogId, - Datum oldOptions, - List *options, - Oid fdwvalidator); + Datum oldOptions, + List *options, + Oid fdwvalidator); /* commands/amcmds.c */ extern ObjectAddress CreateAccessMethod(CreateAmStmt *stmt); extern void RemoveAccessMethodById(Oid amOid); extern Oid get_index_am_oid(const char *amname, bool missing_ok); +extern Oid get_table_am_oid(const char *amname, bool missing_ok); extern Oid get_am_oid(const char *amname, bool missing_ok); extern char *get_am_name(Oid amOid); diff --git a/parser/include/commands/event_trigger.h b/parser/include/commands/event_trigger.h index 2ce52827..28b35205 100644 --- a/parser/include/commands/event_trigger.h +++ b/parser/include/commands/event_trigger.h @@ -3,7 +3,7 @@ * event_trigger.h * Declarations for command trigger handling. * - * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/commands/event_trigger.h @@ -17,21 +17,21 @@ #include "catalog/objectaddress.h" #include "catalog/pg_event_trigger.h" #include "nodes/parsenodes.h" -#include "utils/aclchk_internal.h" +#include "tcop/cmdtag.h" #include "tcop/deparse_utility.h" +#include "utils/aclchk_internal.h" typedef struct EventTriggerData { NodeTag type; const char *event; /* event name */ Node *parsetree; /* parse tree */ - const char *tag; /* command tag */ + CommandTag tag; } EventTriggerData; #define AT_REWRITE_ALTER_PERSISTENCE 0x01 #define AT_REWRITE_DEFAULT_VAL 0x02 #define AT_REWRITE_COLUMN_REWRITE 0x04 -#define AT_REWRITE_ALTER_OID 0x08 /* * EventTriggerData is the node type that is passed as fmgr "context" info @@ -41,7 +41,7 @@ typedef struct EventTriggerData ((fcinfo)->context != NULL && IsA((fcinfo)->context, EventTriggerData)) extern Oid CreateEventTrigger(CreateEventTrigStmt *stmt); -extern void RemoveEventTriggerById(Oid ctrigOid); +extern void RemoveEventTriggerById(Oid trigOid); extern Oid get_event_trigger_oid(const char *trigname, bool missing_ok); extern Oid AlterEventTrigger(AlterEventTrigStmt *stmt); @@ -50,7 +50,6 @@ extern void AlterEventTriggerOwner_oid(Oid, Oid newOwnerId); extern bool EventTriggerSupportsObjectType(ObjectType obtype); extern bool EventTriggerSupportsObjectClass(ObjectClass objclass); -extern bool EventTriggerSupportsGrantObjectType(GrantObjectType objtype); extern void EventTriggerDDLCommandStart(Node *parsetree); extern void EventTriggerDDLCommandEnd(Node *parsetree); extern void EventTriggerSQLDrop(Node *parsetree); @@ -60,30 +59,30 @@ extern bool EventTriggerBeginCompleteQuery(void); extern void EventTriggerEndCompleteQuery(void); extern bool trackDroppedObjectsNeeded(void); extern void EventTriggerSQLDropAddObject(const ObjectAddress *object, - bool original, bool normal); + bool original, bool normal); extern void EventTriggerInhibitCommandCollection(void); extern void EventTriggerUndoInhibitCommandCollection(void); extern void EventTriggerCollectSimpleCommand(ObjectAddress address, - ObjectAddress secondaryObject, - Node *parsetree); + ObjectAddress secondaryObject, + Node *parsetree); extern void EventTriggerAlterTableStart(Node *parsetree); extern void EventTriggerAlterTableRelid(Oid objectId); extern void EventTriggerCollectAlterTableSubcmd(Node *subcmd, - ObjectAddress address); + ObjectAddress address); extern void EventTriggerAlterTableEnd(void); extern void EventTriggerCollectGrant(InternalGrant *istmt); extern void EventTriggerCollectAlterOpFam(AlterOpFamilyStmt *stmt, - Oid opfamoid, List *operators, - List *procedures); + Oid opfamoid, List *operators, + List *procedures); extern void EventTriggerCollectCreateOpClass(CreateOpClassStmt *stmt, - Oid opcoid, List *operators, - List *procedures); + Oid opcoid, List *operators, + List *procedures); extern void EventTriggerCollectAlterTSConfig(AlterTSConfigurationStmt *stmt, - Oid cfgId, Oid *dictIds, int ndicts); + Oid cfgId, Oid *dictIds, int ndicts); extern void EventTriggerCollectAlterDefPrivs(AlterDefaultPrivilegesStmt *stmt); #endif /* EVENT_TRIGGER_H */ diff --git a/parser/include/commands/explain.h b/parser/include/commands/explain.h index 78822b76..ba661d32 100644 --- a/parser/include/commands/explain.h +++ b/parser/include/commands/explain.h @@ -3,7 +3,7 @@ * explain.h * prototypes for explain.c * - * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994-5, Regents of the University of California * * src/include/commands/explain.h @@ -25,6 +25,15 @@ typedef enum ExplainFormat EXPLAIN_FORMAT_YAML } ExplainFormat; +typedef struct ExplainWorkersState +{ + int num_workers; /* # of worker processes the plan used */ + bool *worker_inited; /* per-worker state-initialized flags */ + StringInfoData *worker_str; /* per-worker transient output buffers */ + int *worker_state_save; /* per-worker grouping state save areas */ + StringInfo prev_str; /* saved output buffer while redirecting */ +} ExplainWorkersState; + typedef struct ExplainState { StringInfo str; /* output buffer */ @@ -33,8 +42,10 @@ typedef struct ExplainState bool analyze; /* print actual times */ bool costs; /* print estimated costs */ bool buffers; /* print buffer usage */ + bool wal; /* print WAL usage */ bool timing; /* print detailed node timing */ bool summary; /* print total planning and execution timing */ + bool settings; /* print modified settings */ ExplainFormat format; /* output format */ /* state for output formatting --- not reset for each new plan tree */ int indent; /* current indentation level */ @@ -45,6 +56,9 @@ typedef struct ExplainState List *rtable_names; /* alias names for RTEs */ List *deparse_cxt; /* context list for deparsing expressions */ Bitmapset *printed_subplans; /* ids of SubPlans we've printed */ + bool hide_workers; /* set if we find an invisible Gather */ + /* state related to the current plan node */ + ExplainWorkersState *workers_state; /* needed if parallel plan */ } ExplainState; /* Hook for plugins to get control in ExplainOneQuery() */ @@ -53,7 +67,8 @@ typedef void (*ExplainOneQuery_hook_type) (Query *query, IntoClause *into, ExplainState *es, const char *queryString, - ParamListInfo params); + ParamListInfo params, + QueryEnvironment *queryEnv); extern PGDLLIMPORT ExplainOneQuery_hook_type ExplainOneQuery_hook; /* Hook for plugins to get control in explain_get_index_name() */ @@ -61,25 +76,28 @@ typedef const char *(*explain_get_index_name_hook_type) (Oid indexId); extern PGDLLIMPORT explain_get_index_name_hook_type explain_get_index_name_hook; -extern void ExplainQuery(ParseState *pstate, ExplainStmt *stmt, const char *queryString, - ParamListInfo params, QueryEnvironment *queryEnv, DestReceiver *dest); +extern void ExplainQuery(ParseState *pstate, ExplainStmt *stmt, + ParamListInfo params, DestReceiver *dest); extern ExplainState *NewExplainState(void); extern TupleDesc ExplainResultDesc(ExplainStmt *stmt); extern void ExplainOneUtility(Node *utilityStmt, IntoClause *into, - ExplainState *es, const char *queryString, - ParamListInfo params, QueryEnvironment *queryEnv); + ExplainState *es, const char *queryString, + ParamListInfo params, QueryEnvironment *queryEnv); extern void ExplainOnePlan(PlannedStmt *plannedstmt, IntoClause *into, - ExplainState *es, const char *queryString, - ParamListInfo params, QueryEnvironment *queryEnv, - const instr_time *planduration); + ExplainState *es, const char *queryString, + ParamListInfo params, QueryEnvironment *queryEnv, + const instr_time *planduration, + const BufferUsage *bufusage); extern void ExplainPrintPlan(ExplainState *es, QueryDesc *queryDesc); extern void ExplainPrintTriggers(ExplainState *es, QueryDesc *queryDesc); +extern void ExplainPrintJITSummary(ExplainState *es, QueryDesc *queryDesc); + extern void ExplainQueryText(ExplainState *es, QueryDesc *queryDesc); extern void ExplainBeginOutput(ExplainState *es); @@ -87,18 +105,23 @@ extern void ExplainEndOutput(ExplainState *es); extern void ExplainSeparatePlans(ExplainState *es); extern void ExplainPropertyList(const char *qlabel, List *data, - ExplainState *es); + ExplainState *es); extern void ExplainPropertyListNested(const char *qlabel, List *data, - ExplainState *es); + ExplainState *es); extern void ExplainPropertyText(const char *qlabel, const char *value, - ExplainState *es); -extern void ExplainPropertyInteger(const char *qlabel, int value, - ExplainState *es); -extern void ExplainPropertyLong(const char *qlabel, long value, - ExplainState *es); -extern void ExplainPropertyFloat(const char *qlabel, double value, int ndigits, - ExplainState *es); + ExplainState *es); +extern void ExplainPropertyInteger(const char *qlabel, const char *unit, + int64 value, ExplainState *es); +extern void ExplainPropertyUInteger(const char *qlabel, const char *unit, + uint64 value, ExplainState *es); +extern void ExplainPropertyFloat(const char *qlabel, const char *unit, + double value, int ndigits, ExplainState *es); extern void ExplainPropertyBool(const char *qlabel, bool value, - ExplainState *es); + ExplainState *es); + +extern void ExplainOpenGroup(const char *objtype, const char *labelname, + bool labeled, ExplainState *es); +extern void ExplainCloseGroup(const char *objtype, const char *labelname, + bool labeled, ExplainState *es); #endif /* EXPLAIN_H */ diff --git a/parser/include/commands/prepare.h b/parser/include/commands/prepare.h index 5ec1200e..4fcf2406 100644 --- a/parser/include/commands/prepare.h +++ b/parser/include/commands/prepare.h @@ -4,7 +4,7 @@ * PREPARE, EXECUTE and DEALLOCATE commands, and prepared-stmt storage * * - * Copyright (c) 2002-2017, PostgreSQL Global Development Group + * Copyright (c) 2002-2020, PostgreSQL Global Development Group * * src/include/commands/prepare.h * @@ -35,22 +35,23 @@ typedef struct /* Utility statements PREPARE, EXECUTE, DEALLOCATE, EXPLAIN EXECUTE */ -extern void PrepareQuery(PrepareStmt *stmt, const char *queryString, - int stmt_location, int stmt_len); -extern void ExecuteQuery(ExecuteStmt *stmt, IntoClause *intoClause, - const char *queryString, ParamListInfo params, - DestReceiver *dest, char *completionTag); +extern void PrepareQuery(ParseState *pstate, PrepareStmt *stmt, + int stmt_location, int stmt_len); +extern void ExecuteQuery(ParseState *pstate, + ExecuteStmt *stmt, IntoClause *intoClause, + ParamListInfo params, + DestReceiver *dest, QueryCompletion *qc); extern void DeallocateQuery(DeallocateStmt *stmt); extern void ExplainExecuteQuery(ExecuteStmt *execstmt, IntoClause *into, - ExplainState *es, const char *queryString, - ParamListInfo params, QueryEnvironment *queryEnv); + ExplainState *es, const char *queryString, + ParamListInfo params, QueryEnvironment *queryEnv); /* Low-level access to stored prepared statements */ extern void StorePreparedStatement(const char *stmt_name, - CachedPlanSource *plansource, - bool from_sql); + CachedPlanSource *plansource, + bool from_sql); extern PreparedStatement *FetchPreparedStatement(const char *stmt_name, - bool throwError); + bool throwError); extern void DropPreparedStatement(const char *stmt_name, bool showError); extern TupleDesc FetchPreparedStatementResultDesc(PreparedStatement *stmt); extern List *FetchPreparedStatementTargetList(PreparedStatement *stmt); diff --git a/parser/include/commands/tablespace.h b/parser/include/commands/tablespace.h index ba8de32c..fd1b28fc 100644 --- a/parser/include/commands/tablespace.h +++ b/parser/include/commands/tablespace.h @@ -4,7 +4,7 @@ * Tablespace management commands (create/drop tablespace). * * - * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/commands/tablespace.h @@ -40,6 +40,7 @@ typedef struct TableSpaceOpts float8 random_page_cost; float8 seq_page_cost; int effective_io_concurrency; + int maintenance_io_concurrency; } TableSpaceOpts; extern Oid CreateTableSpace(CreateTableSpaceStmt *stmt); @@ -49,7 +50,7 @@ extern Oid AlterTableSpaceOptions(AlterTableSpaceOptionsStmt *stmt); extern void TablespaceCreateDbspace(Oid spcNode, Oid dbNode, bool isRedo); -extern Oid GetDefaultTablespace(char relpersistence); +extern Oid GetDefaultTablespace(char relpersistence, bool partitioned); extern void PrepareTempTablespaces(void); diff --git a/parser/include/commands/trigger.h b/parser/include/commands/trigger.h index adbcfa12..a40ddf5d 100644 --- a/parser/include/commands/trigger.h +++ b/parser/include/commands/trigger.h @@ -3,7 +3,7 @@ * trigger.h * Declarations for trigger handling. * - * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/commands/trigger.h @@ -35,10 +35,11 @@ typedef struct TriggerData HeapTuple tg_trigtuple; HeapTuple tg_newtuple; Trigger *tg_trigger; - Buffer tg_trigtuplebuf; - Buffer tg_newtuplebuf; + TupleTableSlot *tg_trigslot; + TupleTableSlot *tg_newslot; Tuplestorestate *tg_oldtable; Tuplestorestate *tg_newtable; + const Bitmapset *tg_updatedcols; } TriggerData; /* @@ -77,9 +78,9 @@ typedef struct TransitionCaptureState * format to parent format after they have already been converted in the * opposite direction during routing. In that case we bypass conversion * and allow the inserting code (copy.c and nodeModifyTable.c) to provide - * the original tuple directly. + * a slot containing the original tuple directly. */ - HeapTuple tcs_original_insert_tuple; + TupleTableSlot *tcs_original_insert_tuple; /* * Private data including the tuplestore(s) into which to insert tuples. @@ -158,8 +159,9 @@ extern PGDLLIMPORT int SessionReplicationRole; #define TRIGGER_DISABLED 'D' extern ObjectAddress CreateTrigger(CreateTrigStmt *stmt, const char *queryString, - Oid relOid, Oid refRelOid, Oid constraintOid, Oid indexOid, - bool isInternal); + Oid relOid, Oid refRelOid, Oid constraintOid, Oid indexOid, + Oid funcoid, Oid parentTriggerOid, Node *whenClause, + bool isInternal, bool in_partition); extern void RemoveTriggerById(Oid trigOid); extern Oid get_trigger_oid(Oid relid, const char *name, bool missing_ok); @@ -167,7 +169,7 @@ extern Oid get_trigger_oid(Oid relid, const char *name, bool missing_ok); extern ObjectAddress renametrig(RenameStmt *stmt); extern void EnableDisableTrigger(Relation rel, const char *tgname, - char fires_when, bool skip_system); + char fires_when, bool skip_system, LOCKMODE lockmode); extern void RelationBuildTriggers(Relation relation); @@ -176,70 +178,71 @@ extern TriggerDesc *CopyTriggerDesc(TriggerDesc *trigdesc); extern const char *FindTriggerIncompatibleWithInheritance(TriggerDesc *trigdesc); extern TransitionCaptureState *MakeTransitionCaptureState(TriggerDesc *trigdesc, - Oid relid, CmdType cmdType); + Oid relid, CmdType cmdType); extern void FreeTriggerDesc(TriggerDesc *trigdesc); extern void ExecBSInsertTriggers(EState *estate, - ResultRelInfo *relinfo); + ResultRelInfo *relinfo); extern void ExecASInsertTriggers(EState *estate, - ResultRelInfo *relinfo, - TransitionCaptureState *transition_capture); -extern TupleTableSlot *ExecBRInsertTriggers(EState *estate, - ResultRelInfo *relinfo, - TupleTableSlot *slot); + ResultRelInfo *relinfo, + TransitionCaptureState *transition_capture); +extern bool ExecBRInsertTriggers(EState *estate, + ResultRelInfo *relinfo, + TupleTableSlot *slot); extern void ExecARInsertTriggers(EState *estate, - ResultRelInfo *relinfo, - HeapTuple trigtuple, - List *recheckIndexes, - TransitionCaptureState *transition_capture); -extern TupleTableSlot *ExecIRInsertTriggers(EState *estate, - ResultRelInfo *relinfo, - TupleTableSlot *slot); + ResultRelInfo *relinfo, + TupleTableSlot *slot, + List *recheckIndexes, + TransitionCaptureState *transition_capture); +extern bool ExecIRInsertTriggers(EState *estate, + ResultRelInfo *relinfo, + TupleTableSlot *slot); extern void ExecBSDeleteTriggers(EState *estate, - ResultRelInfo *relinfo); + ResultRelInfo *relinfo); extern void ExecASDeleteTriggers(EState *estate, - ResultRelInfo *relinfo, - TransitionCaptureState *transition_capture); + ResultRelInfo *relinfo, + TransitionCaptureState *transition_capture); extern bool ExecBRDeleteTriggers(EState *estate, - EPQState *epqstate, - ResultRelInfo *relinfo, - ItemPointer tupleid, - HeapTuple fdw_trigtuple); + EPQState *epqstate, + ResultRelInfo *relinfo, + ItemPointer tupleid, + HeapTuple fdw_trigtuple, + TupleTableSlot **epqslot); extern void ExecARDeleteTriggers(EState *estate, - ResultRelInfo *relinfo, - ItemPointer tupleid, - HeapTuple fdw_trigtuple, - TransitionCaptureState *transition_capture); + ResultRelInfo *relinfo, + ItemPointer tupleid, + HeapTuple fdw_trigtuple, + TransitionCaptureState *transition_capture); extern bool ExecIRDeleteTriggers(EState *estate, - ResultRelInfo *relinfo, - HeapTuple trigtuple); + ResultRelInfo *relinfo, + HeapTuple trigtuple); extern void ExecBSUpdateTriggers(EState *estate, - ResultRelInfo *relinfo); + ResultRelInfo *relinfo); extern void ExecASUpdateTriggers(EState *estate, - ResultRelInfo *relinfo, - TransitionCaptureState *transition_capture); -extern TupleTableSlot *ExecBRUpdateTriggers(EState *estate, - EPQState *epqstate, - ResultRelInfo *relinfo, - ItemPointer tupleid, - HeapTuple fdw_trigtuple, - TupleTableSlot *slot); + ResultRelInfo *relinfo, + TransitionCaptureState *transition_capture); +extern bool ExecBRUpdateTriggers(EState *estate, + EPQState *epqstate, + ResultRelInfo *relinfo, + ItemPointer tupleid, + HeapTuple fdw_trigtuple, + TupleTableSlot *slot); extern void ExecARUpdateTriggers(EState *estate, - ResultRelInfo *relinfo, - ItemPointer tupleid, - HeapTuple fdw_trigtuple, - HeapTuple newtuple, - List *recheckIndexes, - TransitionCaptureState *transition_capture); -extern TupleTableSlot *ExecIRUpdateTriggers(EState *estate, - ResultRelInfo *relinfo, - HeapTuple trigtuple, - TupleTableSlot *slot); + ResultRelInfo *relinfo, + ItemPointer tupleid, + HeapTuple fdw_trigtuple, + TupleTableSlot *slot, + List *recheckIndexes, + TransitionCaptureState *transition_capture); +extern bool ExecIRUpdateTriggers(EState *estate, + ResultRelInfo *relinfo, + HeapTuple trigtuple, + TupleTableSlot *slot); extern void ExecBSTruncateTriggers(EState *estate, - ResultRelInfo *relinfo); + ResultRelInfo *relinfo); extern void ExecASTruncateTriggers(EState *estate, - ResultRelInfo *relinfo); + ResultRelInfo *relinfo); extern void AfterTriggerBeginXact(void); extern void AfterTriggerBeginQuery(void); @@ -256,11 +259,13 @@ extern bool AfterTriggerPendingOnRel(Oid relid); * in utils/adt/ri_triggers.c */ extern bool RI_FKey_pk_upd_check_required(Trigger *trigger, Relation pk_rel, - HeapTuple old_row, HeapTuple new_row); + TupleTableSlot *old_slot, TupleTableSlot *new_slot); extern bool RI_FKey_fk_upd_check_required(Trigger *trigger, Relation fk_rel, - HeapTuple old_row, HeapTuple new_row); + TupleTableSlot *old_slot, TupleTableSlot *new_slot); extern bool RI_Initial_Check(Trigger *trigger, - Relation fk_rel, Relation pk_rel); + Relation fk_rel, Relation pk_rel); +extern void RI_PartitionRemove_Check(Trigger *trigger, Relation fk_rel, + Relation pk_rel); /* result values for RI_FKey_trigger_type: */ #define RI_TRIGGER_PK 1 /* is a trigger on the PK relation */ diff --git a/parser/include/commands/vacuum.h b/parser/include/commands/vacuum.h index a9035112..a4cd7214 100644 --- a/parser/include/commands/vacuum.h +++ b/parser/include/commands/vacuum.h @@ -4,7 +4,7 @@ * header file for postgres vacuum cleaner and statistics analyzer * * - * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/commands/vacuum.h @@ -15,13 +15,52 @@ #define VACUUM_H #include "access/htup.h" +#include "catalog/pg_class.h" #include "catalog/pg_statistic.h" #include "catalog/pg_type.h" -#include "nodes/parsenodes.h" +#include "parser/parse_node.h" #include "storage/buf.h" #include "storage/lock.h" #include "utils/relcache.h" +/* + * Flags for amparallelvacuumoptions to control the participation of bulkdelete + * and vacuumcleanup in parallel vacuum. + */ + +/* + * Both bulkdelete and vacuumcleanup are disabled by default. This will be + * used by IndexAM's that don't want to or cannot participate in parallel + * vacuum. For example, if an index AM doesn't have a way to communicate the + * index statistics allocated by the first ambulkdelete call to the subsequent + * ones until amvacuumcleanup, the index AM cannot participate in parallel + * vacuum. + */ +#define VACUUM_OPTION_NO_PARALLEL 0 + +/* + * bulkdelete can be performed in parallel. This option can be used by + * IndexAm's that need to scan the index to delete the tuples. + */ +#define VACUUM_OPTION_PARALLEL_BULKDEL (1 << 0) + +/* + * vacuumcleanup can be performed in parallel if bulkdelete is not performed + * yet. This will be used by IndexAM's that can scan the index if the + * bulkdelete is not performed. + */ +#define VACUUM_OPTION_PARALLEL_COND_CLEANUP (1 << 1) + +/* + * vacuumcleanup can be performed in parallel even if bulkdelete has already + * processed the index. This will be used by IndexAM's that scan the index + * during the cleanup phase of index irrespective of whether the index is + * already scanned or not during bulkdelete phase. + */ +#define VACUUM_OPTION_PARALLEL_CLEANUP (1 << 2) + +/* value for checking vacuum flags */ +#define VACUUM_OPTION_MAX_VALID_VALUE ((1 << 3) - 1) /*---------- * ANALYZE builds one of these structs for each attribute (column) that is @@ -29,8 +68,8 @@ * so they live until the end of the ANALYZE operation. * * The type-specific typanalyze function is passed a pointer to this struct - * and must return TRUE to continue analysis, FALSE to skip analysis of this - * column. In the TRUE case it must set the compute_stats and minrows fields, + * and must return true to continue analysis, false to skip analysis of this + * column. In the true case it must set the compute_stats and minrows fields, * and can optionally set extra_data to pass additional info to compute_stats. * minrows is its request for the minimum number of sample rows to be gathered * (but note this request might not be honored, eg if there are fewer rows @@ -45,15 +84,17 @@ * The fetchfunc may be called with rownum running from 0 to samplerows-1. * It returns a Datum and an isNull flag. * - * compute_stats should set stats_valid TRUE if it is able to compute + * compute_stats should set stats_valid true if it is able to compute * any useful statistics. If it does, the remainder of the struct holds * the information to be stored in a pg_statistic row for the column. Be * careful to allocate any pointed-to data in anl_context, which will NOT * be CurrentMemoryContext when compute_stats is called. * - * Note: for the moment, all comparisons done for statistical purposes - * should use the database's default collation (DEFAULT_COLLATION_OID). - * This might change in some future release. + * Note: all comparisons done for statistical purposes should use the + * underlying column's collation (attcollation), except in situations + * where a noncollatable container type contains a collatable type; + * in that case use the type's default collation. Be sure to record + * the appropriate collation in stacoll. *---------- */ typedef struct VacAttrStats *VacAttrStatsP; @@ -77,16 +118,18 @@ typedef struct VacAttrStats * because some index opclasses store a different type than the underlying * column/expression. Instead use attrtypid, attrtypmod, and attrtype for * information about the datatype being fed to the typanalyze function. + * Likewise, use attrcollid not attr->attcollation. */ Form_pg_attribute attr; /* copy of pg_attribute row for column */ Oid attrtypid; /* type of data being analyzed */ int32 attrtypmod; /* typmod of data being analyzed */ Form_pg_type attrtype; /* copy of pg_type row for attrtypid */ + Oid attrcollid; /* collation of data being analyzed */ MemoryContext anl_context; /* where to save long-lived data */ /* * These fields must be filled in by the typanalyze routine, unless it - * returns FALSE. + * returns false. */ AnalyzeAttrComputeStatsFunc compute_stats; /* function pointer */ int minrows; /* Minimum # of rows wanted for stats */ @@ -102,6 +145,7 @@ typedef struct VacAttrStats float4 stadistinct; /* # distinct values */ int16 stakind[STATISTIC_NUM_SLOTS]; Oid staop[STATISTIC_NUM_SLOTS]; + Oid stacoll[STATISTIC_NUM_SLOTS]; int numnumbers[STATISTIC_NUM_SLOTS]; float4 *stanumbers[STATISTIC_NUM_SLOTS]; int numvalues[STATISTIC_NUM_SLOTS]; @@ -130,11 +174,40 @@ typedef struct VacAttrStats int rowstride; } VacAttrStats; +typedef enum VacuumOption +{ + VACOPT_VACUUM = 1 << 0, /* do VACUUM */ + VACOPT_ANALYZE = 1 << 1, /* do ANALYZE */ + VACOPT_VERBOSE = 1 << 2, /* print progress info */ + VACOPT_FREEZE = 1 << 3, /* FREEZE option */ + VACOPT_FULL = 1 << 4, /* FULL (non-concurrent) vacuum */ + VACOPT_SKIP_LOCKED = 1 << 5, /* skip if cannot get lock */ + VACOPT_SKIPTOAST = 1 << 6, /* don't process the TOAST table, if any */ + VACOPT_DISABLE_PAGE_SKIPPING = 1 << 7 /* don't skip any pages */ +} VacuumOption; + +/* + * A ternary value used by vacuum parameters. + * + * DEFAULT value is used to determine the value based on other + * configurations, e.g. reloptions. + */ +typedef enum VacOptTernaryValue +{ + VACOPT_TERNARY_DEFAULT = 0, + VACOPT_TERNARY_DISABLED, + VACOPT_TERNARY_ENABLED, +} VacOptTernaryValue; + /* * Parameters customizing behavior of VACUUM and ANALYZE. + * + * Note that at least one of VACOPT_VACUUM and VACOPT_ANALYZE must be set + * in options. */ typedef struct VacuumParams { + int options; /* bitmask of VacuumOption */ int freeze_min_age; /* min freeze age, -1 to use default */ int freeze_table_age; /* age at which to scan whole table */ int multixact_freeze_min_age; /* min multixact freeze age, -1 to @@ -145,6 +218,17 @@ typedef struct VacuumParams int log_min_duration; /* minimum execution threshold in ms at * which verbose logs are activated, -1 * to use default */ + VacOptTernaryValue index_cleanup; /* Do index vacuum and cleanup, + * default value depends on reloptions */ + VacOptTernaryValue truncate; /* Truncate empty pages at the end, + * default value depends on reloptions */ + + /* + * The number of parallel vacuum workers. 0 by default which means choose + * based on the number of indexes. -1 indicates parallel vacuum is + * disabled. + */ + int nworkers; } VacuumParams; /* GUC parameters */ @@ -154,47 +238,51 @@ extern int vacuum_freeze_table_age; extern int vacuum_multixact_freeze_min_age; extern int vacuum_multixact_freeze_table_age; +/* Variables for cost-based parallel vacuum */ +extern pg_atomic_uint32 *VacuumSharedCostBalance; +extern pg_atomic_uint32 *VacuumActiveNWorkers; +extern int VacuumCostBalanceLocal; + /* in commands/vacuum.c */ -extern void ExecVacuum(VacuumStmt *vacstmt, bool isTopLevel); -extern void vacuum(int options, RangeVar *relation, Oid relid, - VacuumParams *params, List *va_cols, - BufferAccessStrategy bstrategy, bool isTopLevel); +extern void ExecVacuum(ParseState *pstate, VacuumStmt *vacstmt, bool isTopLevel); +extern void vacuum(List *relations, VacuumParams *params, + BufferAccessStrategy bstrategy, bool isTopLevel); extern void vac_open_indexes(Relation relation, LOCKMODE lockmode, - int *nindexes, Relation **Irel); + int *nindexes, Relation **Irel); extern void vac_close_indexes(int nindexes, Relation *Irel, LOCKMODE lockmode); -extern double vac_estimate_reltuples(Relation relation, bool is_analyze, - BlockNumber total_pages, - BlockNumber scanned_pages, - double scanned_tuples); +extern double vac_estimate_reltuples(Relation relation, + BlockNumber total_pages, + BlockNumber scanned_pages, + double scanned_tuples); extern void vac_update_relstats(Relation relation, - BlockNumber num_pages, - double num_tuples, - BlockNumber num_all_visible_pages, - bool hasindex, - TransactionId frozenxid, - MultiXactId minmulti, - bool in_outer_xact); + BlockNumber num_pages, + double num_tuples, + BlockNumber num_all_visible_pages, + bool hasindex, + TransactionId frozenxid, + MultiXactId minmulti, + bool in_outer_xact); extern void vacuum_set_xid_limits(Relation rel, - int freeze_min_age, int freeze_table_age, - int multixact_freeze_min_age, - int multixact_freeze_table_age, - TransactionId *oldestXmin, - TransactionId *freezeLimit, - TransactionId *xidFullScanLimit, - MultiXactId *multiXactCutoff, - MultiXactId *mxactFullScanLimit); + int freeze_min_age, int freeze_table_age, + int multixact_freeze_min_age, + int multixact_freeze_table_age, + TransactionId *oldestXmin, + TransactionId *freezeLimit, + TransactionId *xidFullScanLimit, + MultiXactId *multiXactCutoff, + MultiXactId *mxactFullScanLimit); extern void vac_update_datfrozenxid(void); extern void vacuum_delay_point(void); - -/* in commands/vacuumlazy.c */ -extern void lazy_vacuum_rel(Relation onerel, int options, - VacuumParams *params, BufferAccessStrategy bstrategy); +extern bool vacuum_is_relation_owner(Oid relid, Form_pg_class reltuple, + int options); +extern Relation vacuum_open_relation(Oid relid, RangeVar *relation, + int options, bool verbose, LOCKMODE lmode); /* in commands/analyze.c */ -extern void analyze_rel(Oid relid, RangeVar *relation, int options, - VacuumParams *params, List *va_cols, bool in_outer_xact, - BufferAccessStrategy bstrategy); +extern void analyze_rel(Oid relid, RangeVar *relation, + VacuumParams *params, List *va_cols, bool in_outer_xact, + BufferAccessStrategy bstrategy); extern bool std_typanalyze(VacAttrStats *stats); /* in utils/misc/sampling.c --- duplicate of declarations in utils/sampling.h */ diff --git a/parser/include/commands/variable.h b/parser/include/commands/variable.h index 575339a6..2749ff19 100644 --- a/parser/include/commands/variable.h +++ b/parser/include/commands/variable.h @@ -2,7 +2,7 @@ * variable.h * Routines for handling specialized SET variables. * - * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/commands/variable.h @@ -22,9 +22,7 @@ extern bool check_log_timezone(char **newval, void **extra, GucSource source); extern void assign_log_timezone(const char *newval, void *extra); extern const char *show_log_timezone(void); extern bool check_transaction_read_only(bool *newval, void **extra, GucSource source); -extern bool check_XactIsoLevel(char **newval, void **extra, GucSource source); -extern void assign_XactIsoLevel(const char *newval, void *extra); -extern const char *show_XactIsoLevel(void); +extern bool check_XactIsoLevel(int *newval, void **extra, GucSource source); extern bool check_transaction_deferrable(bool *newval, void **extra, GucSource source); extern bool check_random_seed(double *newval, void **extra, GucSource source); extern void assign_random_seed(double newval, void *extra); diff --git a/parser/include/common/file_perm.h b/parser/include/common/file_perm.h new file mode 100644 index 00000000..d8788169 --- /dev/null +++ b/parser/include/common/file_perm.h @@ -0,0 +1,56 @@ +/*------------------------------------------------------------------------- + * + * File and directory permission definitions + * + * + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group + * Portions Copyright (c) 1994, Regents of the University of California + * + * src/include/common/file_perm.h + * + *------------------------------------------------------------------------- + */ +#ifndef FILE_PERM_H +#define FILE_PERM_H + +#include + +/* + * Mode mask for data directory permissions that only allows the owner to + * read/write directories and files. + * + * This is the default. + */ +#define PG_MODE_MASK_OWNER (S_IRWXG | S_IRWXO) + +/* + * Mode mask for data directory permissions that also allows group read/execute. + */ +#define PG_MODE_MASK_GROUP (S_IWGRP | S_IRWXO) + +/* Default mode for creating directories */ +#define PG_DIR_MODE_OWNER S_IRWXU + +/* Mode for creating directories that allows group read/execute */ +#define PG_DIR_MODE_GROUP (S_IRWXU | S_IRGRP | S_IXGRP) + +/* Default mode for creating files */ +#define PG_FILE_MODE_OWNER (S_IRUSR | S_IWUSR) + +/* Mode for creating files that allows group read */ +#define PG_FILE_MODE_GROUP (S_IRUSR | S_IWUSR | S_IRGRP) + +/* Modes for creating directories and files in the data directory */ +extern int pg_dir_create_mode; +extern int pg_file_create_mode; + +/* Mode mask to pass to umask() */ +extern int pg_mode_mask; + +/* Set permissions and mask based on the provided mode */ +extern void SetDataDirectoryCreatePerm(int dataDirMode); + +/* Set permissions and mask based on the mode of the data directory */ +extern bool GetDataDirectoryCreatePerm(const char *dataDir); + +#endif /* FILE_PERM_H */ diff --git a/parser/include/common/hashfn.h b/parser/include/common/hashfn.h new file mode 100644 index 00000000..6ecc864f --- /dev/null +++ b/parser/include/common/hashfn.h @@ -0,0 +1,104 @@ +/* + * Utilities for working with hash values. + * + * Portions Copyright (c) 2017-2020, PostgreSQL Global Development Group + */ + +#ifndef HASHFN_H +#define HASHFN_H + + +/* + * Rotate the high 32 bits and the low 32 bits separately. The standard + * hash function sometimes rotates the low 32 bits by one bit when + * combining elements. We want extended hash functions to be compatible with + * that algorithm when the seed is 0, so we can't just do a normal rotation. + * This works, though. + */ +#define ROTATE_HIGH_AND_LOW_32BITS(v) \ + ((((v) << 1) & UINT64CONST(0xfffffffefffffffe)) | \ + (((v) >> 31) & UINT64CONST(0x100000001))) + + +extern uint32 hash_bytes(const unsigned char *k, int keylen); +extern uint64 hash_bytes_extended(const unsigned char *k, + int keylen, uint64 seed); +extern uint32 hash_bytes_uint32(uint32 k); +extern uint64 hash_bytes_uint32_extended(uint32 k, uint64 seed); + +#ifndef FRONTEND +static inline Datum +hash_any(const unsigned char *k, int keylen) +{ + return UInt32GetDatum(hash_bytes(k, keylen)); +} + +static inline Datum +hash_any_extended(const unsigned char *k, int keylen, uint64 seed) +{ + return UInt64GetDatum(hash_bytes_extended(k, keylen, seed)); +} + +static inline Datum +hash_uint32(uint32 k) +{ + return UInt32GetDatum(hash_bytes_uint32(k)); +} + +static inline Datum +hash_uint32_extended(uint32 k, uint64 seed) +{ + return UInt64GetDatum(hash_bytes_uint32_extended(k, seed)); +} +#endif + +extern uint32 string_hash(const void *key, Size keysize); +extern uint32 tag_hash(const void *key, Size keysize); +extern uint32 uint32_hash(const void *key, Size keysize); + +#define oid_hash uint32_hash /* Remove me eventually */ + +/* + * Combine two 32-bit hash values, resulting in another hash value, with + * decent bit mixing. + * + * Similar to boost's hash_combine(). + */ +static inline uint32 +hash_combine(uint32 a, uint32 b) +{ + a ^= b + 0x9e3779b9 + (a << 6) + (a >> 2); + return a; +} + +/* + * Combine two 64-bit hash values, resulting in another hash value, using the + * same kind of technique as hash_combine(). Testing shows that this also + * produces good bit mixing. + */ +static inline uint64 +hash_combine64(uint64 a, uint64 b) +{ + /* 0x49a0f4dd15e5a8e3 is 64bit random data */ + a ^= b + UINT64CONST(0x49a0f4dd15e5a8e3) + (a << 54) + (a >> 7); + return a; +} + +/* + * Simple inline murmur hash implementation hashing a 32 bit integer, for + * performance. + */ +static inline uint32 +murmurhash32(uint32 data) +{ + uint32 h = data; + + h ^= h >> 16; + h *= 0x85ebca6b; + h ^= h >> 13; + h *= 0xc2b2ae35; + h ^= h >> 16; + return h; +} + +#endif /* HASHFN_H */ diff --git a/parser/include/common/ip.h b/parser/include/common/ip.h index f5301398..34c78eb5 100644 --- a/parser/include/common/ip.h +++ b/parser/include/common/ip.h @@ -5,7 +5,7 @@ * * These definitions are used by both frontend and backend code. * - * Copyright (c) 2003-2017, PostgreSQL Global Development Group + * Copyright (c) 2003-2020, PostgreSQL Global Development Group * * src/include/common/ip.h * @@ -24,14 +24,14 @@ #define IS_AF_UNIX(fam) (0) #endif -extern int pg_getaddrinfo_all(const char *hostname, const char *servname, - const struct addrinfo *hintp, - struct addrinfo **result); +extern int pg_getaddrinfo_all(const char *hostname, const char *servname, + const struct addrinfo *hintp, + struct addrinfo **result); extern void pg_freeaddrinfo_all(int hint_ai_family, struct addrinfo *ai); -extern int pg_getnameinfo_all(const struct sockaddr_storage *addr, int salen, - char *node, int nodelen, - char *service, int servicelen, - int flags); +extern int pg_getnameinfo_all(const struct sockaddr_storage *addr, int salen, + char *node, int nodelen, + char *service, int servicelen, + int flags); #endif /* IP_H */ diff --git a/parser/include/common/keywords.h b/parser/include/common/keywords.h index 60522715..257c0509 100644 --- a/parser/include/common/keywords.h +++ b/parser/include/common/keywords.h @@ -1,10 +1,10 @@ /*------------------------------------------------------------------------- * * keywords.h - * lexical token lookup for key words in PostgreSQL + * PostgreSQL's list of SQL keywords * * - * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/common/keywords.h @@ -14,31 +14,20 @@ #ifndef KEYWORDS_H #define KEYWORDS_H +#include "common/kwlookup.h" + /* Keyword categories --- should match lists in gram.y */ #define UNRESERVED_KEYWORD 0 #define COL_NAME_KEYWORD 1 #define TYPE_FUNC_NAME_KEYWORD 2 #define RESERVED_KEYWORD 3 - -typedef struct ScanKeyword -{ - const char *name; /* in lower case */ - int16 value; /* grammar's token code */ - int16 category; /* see codes above */ -} ScanKeyword; - #ifndef FRONTEND -extern PGDLLIMPORT const ScanKeyword ScanKeywords[]; -extern PGDLLIMPORT const int NumScanKeywords; +extern PGDLLIMPORT const ScanKeywordList ScanKeywords; +extern PGDLLIMPORT const uint8 ScanKeywordCategories[]; #else -extern const ScanKeyword ScanKeywords[]; -extern const int NumScanKeywords; +extern const ScanKeywordList ScanKeywords; +extern const uint8 ScanKeywordCategories[]; #endif - -extern const ScanKeyword *ScanKeywordLookup(const char *text, - const ScanKeyword *keywords, - int num_keywords); - #endif /* KEYWORDS_H */ diff --git a/parser/include/common/kwlookup.h b/parser/include/common/kwlookup.h new file mode 100644 index 00000000..9c0c7f88 --- /dev/null +++ b/parser/include/common/kwlookup.h @@ -0,0 +1,44 @@ +/*------------------------------------------------------------------------- + * + * kwlookup.h + * Key word lookup for PostgreSQL + * + * + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group + * Portions Copyright (c) 1994, Regents of the University of California + * + * src/include/common/kwlookup.h + * + *------------------------------------------------------------------------- + */ +#ifndef KWLOOKUP_H +#define KWLOOKUP_H + +/* Hash function used by ScanKeywordLookup */ +typedef int (*ScanKeywordHashFunc) (const void *key, size_t keylen); + +/* + * This struct contains the data needed by ScanKeywordLookup to perform a + * search within a set of keywords. The contents are typically generated by + * src/tools/gen_keywordlist.pl from a header containing PG_KEYWORD macros. + */ +typedef struct ScanKeywordList +{ + const char *kw_string; /* all keywords in order, separated by \0 */ + const uint16 *kw_offsets; /* offsets to the start of each keyword */ + ScanKeywordHashFunc hash; /* perfect hash function for keywords */ + int num_keywords; /* number of keywords */ + int max_kw_len; /* length of longest keyword */ +} ScanKeywordList; + + +extern int ScanKeywordLookup(const char *text, const ScanKeywordList *keywords); + +/* Code that wants to retrieve the text of the N'th keyword should use this. */ +static inline const char * +GetScanKeyword(int n, const ScanKeywordList *keywords) +{ + return keywords->kw_string + keywords->kw_offsets[n]; +} + +#endif /* KWLOOKUP_H */ diff --git a/parser/include/common/relpath.h b/parser/include/common/relpath.h index ec5ef994..869cabcc 100644 --- a/parser/include/common/relpath.h +++ b/parser/include/common/relpath.h @@ -3,7 +3,7 @@ * relpath.h * Declarations for GetRelationPath() and friends * - * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/common/relpath.h @@ -13,6 +13,22 @@ #ifndef RELPATH_H #define RELPATH_H +/* + * 'pgrminclude ignore' needed here because CppAsString2() does not throw + * an error if the symbol is not defined. + */ +#include "catalog/catversion.h" /* pgrminclude ignore */ + + +/* + * Name of major-version-specific tablespace subdirectories + */ +#define TABLESPACE_VERSION_DIRECTORY "PG_" PG_MAJORVERSION "_" \ + CppAsString2(CATALOG_VERSION_NO) + +/* Characters to allow for an OID in a relation path */ +#define OIDCHARS 10 /* max chars printed by %u */ + /* * Stuff for fork names. * @@ -51,7 +67,7 @@ extern int forkname_chars(const char *str, ForkNumber *fork); extern char *GetDatabasePath(Oid dbNode, Oid spcNode); extern char *GetRelationPath(Oid dbNode, Oid spcNode, Oid relNode, - int backendId, ForkNumber forkNumber); + int backendId, ForkNumber forkNumber); /* * Wrapper macros for GetRelationPath. Beware of multiple diff --git a/parser/include/common/string.h b/parser/include/common/string.h new file mode 100644 index 00000000..5113c044 --- /dev/null +++ b/parser/include/common/string.h @@ -0,0 +1,19 @@ +/* + * string.h + * string handling helpers + * + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group + * Portions Copyright (c) 1994, Regents of the University of California + * + * src/include/common/string.h + */ +#ifndef COMMON_STRING_H +#define COMMON_STRING_H + +extern bool pg_str_endswith(const char *str, const char *end); +extern int strtoint(const char *pg_restrict str, char **pg_restrict endptr, + int base); +extern void pg_clean_ascii(char *str); +extern int pg_strip_crlf(char *str); + +#endif /* COMMON_STRING_H */ diff --git a/parser/include/common/unicode_combining_table.h b/parser/include/common/unicode_combining_table.h new file mode 100644 index 00000000..a9f10c31 --- /dev/null +++ b/parser/include/common/unicode_combining_table.h @@ -0,0 +1,196 @@ +/* generated by src/common/unicode/generate-unicode_combining_table.pl, do not edit */ + +static const struct mbinterval combining[] = { + {0x0300, 0x036F}, + {0x0483, 0x0489}, + {0x0591, 0x05BD}, + {0x05BF, 0x05BF}, + {0x05C1, 0x05C2}, + {0x05C4, 0x05C5}, + {0x05C7, 0x05C7}, + {0x0610, 0x061A}, + {0x064B, 0x065F}, + {0x0670, 0x0670}, + {0x06D6, 0x06DC}, + {0x06DF, 0x06E4}, + {0x06E7, 0x06E8}, + {0x06EA, 0x06ED}, + {0x0711, 0x0711}, + {0x0730, 0x074A}, + {0x07A6, 0x07B0}, + {0x07EB, 0x07F3}, + {0x07FD, 0x07FD}, + {0x0816, 0x0819}, + {0x081B, 0x0823}, + {0x0825, 0x0827}, + {0x0829, 0x082D}, + {0x0859, 0x085B}, + {0x08D3, 0x08E1}, + {0x08E3, 0x0902}, + {0x093A, 0x093A}, + {0x093C, 0x093C}, + {0x0941, 0x0948}, + {0x094D, 0x094D}, + {0x0951, 0x0957}, + {0x0962, 0x0963}, + {0x0981, 0x0981}, + {0x09BC, 0x09BC}, + {0x09C1, 0x09C4}, + {0x09CD, 0x09CD}, + {0x09E2, 0x09E3}, + {0x09FE, 0x0A02}, + {0x0A3C, 0x0A3C}, + {0x0A41, 0x0A51}, + {0x0A70, 0x0A71}, + {0x0A75, 0x0A75}, + {0x0A81, 0x0A82}, + {0x0ABC, 0x0ABC}, + {0x0AC1, 0x0AC8}, + {0x0ACD, 0x0ACD}, + {0x0AE2, 0x0AE3}, + {0x0AFA, 0x0B01}, + {0x0B3C, 0x0B3C}, + {0x0B3F, 0x0B3F}, + {0x0B41, 0x0B44}, + {0x0B4D, 0x0B56}, + {0x0B62, 0x0B63}, + {0x0B82, 0x0B82}, + {0x0BC0, 0x0BC0}, + {0x0BCD, 0x0BCD}, + {0x0C00, 0x0C00}, + {0x0C04, 0x0C04}, + {0x0C3E, 0x0C40}, + {0x0C46, 0x0C56}, + {0x0C62, 0x0C63}, + {0x0C81, 0x0C81}, + {0x0CBC, 0x0CBC}, + {0x0CBF, 0x0CBF}, + {0x0CC6, 0x0CC6}, + {0x0CCC, 0x0CCD}, + {0x0CE2, 0x0CE3}, + {0x0D00, 0x0D01}, + {0x0D3B, 0x0D3C}, + {0x0D41, 0x0D44}, + {0x0D4D, 0x0D4D}, + {0x0D62, 0x0D63}, + {0x0D81, 0x0D81}, + {0x0DCA, 0x0DCA}, + {0x0DD2, 0x0DD6}, + {0x0E31, 0x0E31}, + {0x0E34, 0x0E3A}, + {0x0E47, 0x0E4E}, + {0x0EB1, 0x0EB1}, + {0x0EB4, 0x0EBC}, + {0x0EC8, 0x0ECD}, + {0x0F18, 0x0F19}, + {0x0F35, 0x0F35}, + {0x0F37, 0x0F37}, + {0x0F39, 0x0F39}, + {0x0F71, 0x0F7E}, + {0x0F80, 0x0F84}, + {0x0F86, 0x0F87}, + {0x0F8D, 0x0FBC}, + {0x0FC6, 0x0FC6}, + {0x102D, 0x1030}, + {0x1032, 0x1037}, + {0x1039, 0x103A}, + {0x103D, 0x103E}, + {0x1058, 0x1059}, + {0x105E, 0x1060}, + {0x1071, 0x1074}, + {0x1082, 0x1082}, + {0x1085, 0x1086}, + {0x108D, 0x108D}, + {0x109D, 0x109D}, + {0x135D, 0x135F}, + {0x1712, 0x1714}, + {0x1732, 0x1734}, + {0x1752, 0x1753}, + {0x1772, 0x1773}, + {0x17B4, 0x17B5}, + {0x17B7, 0x17BD}, + {0x17C6, 0x17C6}, + {0x17C9, 0x17D3}, + {0x17DD, 0x17DD}, + {0x180B, 0x180D}, + {0x1885, 0x1886}, + {0x18A9, 0x18A9}, + {0x1920, 0x1922}, + {0x1927, 0x1928}, + {0x1932, 0x1932}, + {0x1939, 0x193B}, + {0x1A17, 0x1A18}, + {0x1A1B, 0x1A1B}, + {0x1A56, 0x1A56}, + {0x1A58, 0x1A60}, + {0x1A62, 0x1A62}, + {0x1A65, 0x1A6C}, + {0x1A73, 0x1A7F}, + {0x1AB0, 0x1B03}, + {0x1B34, 0x1B34}, + {0x1B36, 0x1B3A}, + {0x1B3C, 0x1B3C}, + {0x1B42, 0x1B42}, + {0x1B6B, 0x1B73}, + {0x1B80, 0x1B81}, + {0x1BA2, 0x1BA5}, + {0x1BA8, 0x1BA9}, + {0x1BAB, 0x1BAD}, + {0x1BE6, 0x1BE6}, + {0x1BE8, 0x1BE9}, + {0x1BED, 0x1BED}, + {0x1BEF, 0x1BF1}, + {0x1C2C, 0x1C33}, + {0x1C36, 0x1C37}, + {0x1CD0, 0x1CD2}, + {0x1CD4, 0x1CE0}, + {0x1CE2, 0x1CE8}, + {0x1CED, 0x1CED}, + {0x1CF4, 0x1CF4}, + {0x1CF8, 0x1CF9}, + {0x1DC0, 0x1DFF}, + {0x20D0, 0x20F0}, + {0x2CEF, 0x2CF1}, + {0x2D7F, 0x2D7F}, + {0x2DE0, 0x2DFF}, + {0x302A, 0x302D}, + {0x3099, 0x309A}, + {0xA66F, 0xA672}, + {0xA674, 0xA67D}, + {0xA69E, 0xA69F}, + {0xA6F0, 0xA6F1}, + {0xA802, 0xA802}, + {0xA806, 0xA806}, + {0xA80B, 0xA80B}, + {0xA825, 0xA826}, + {0xA82C, 0xA82C}, + {0xA8C4, 0xA8C5}, + {0xA8E0, 0xA8F1}, + {0xA8FF, 0xA8FF}, + {0xA926, 0xA92D}, + {0xA947, 0xA951}, + {0xA980, 0xA982}, + {0xA9B3, 0xA9B3}, + {0xA9B6, 0xA9B9}, + {0xA9BC, 0xA9BD}, + {0xA9E5, 0xA9E5}, + {0xAA29, 0xAA2E}, + {0xAA31, 0xAA32}, + {0xAA35, 0xAA36}, + {0xAA43, 0xAA43}, + {0xAA4C, 0xAA4C}, + {0xAA7C, 0xAA7C}, + {0xAAB0, 0xAAB0}, + {0xAAB2, 0xAAB4}, + {0xAAB7, 0xAAB8}, + {0xAABE, 0xAABF}, + {0xAAC1, 0xAAC1}, + {0xAAEC, 0xAAED}, + {0xAAF6, 0xAAF6}, + {0xABE5, 0xABE5}, + {0xABE8, 0xABE8}, + {0xABED, 0xABED}, + {0xFB1E, 0xFB1E}, + {0xFE00, 0xFE0F}, + {0xFE20, 0xFE2F}, +}; diff --git a/parser/include/datatype/timestamp.h b/parser/include/datatype/timestamp.h index 6f48d1c7..6be6d35d 100644 --- a/parser/include/datatype/timestamp.h +++ b/parser/include/datatype/timestamp.h @@ -5,7 +5,7 @@ * * Note: this file must be includable in both frontend and backend contexts. * - * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/datatype/timestamp.h diff --git a/parser/include/executor/execdesc.h b/parser/include/executor/execdesc.h index 8c09961e..b5cead35 100644 --- a/parser/include/executor/execdesc.h +++ b/parser/include/executor/execdesc.h @@ -5,7 +5,7 @@ * and related modules. * * - * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/executor/execdesc.h @@ -57,13 +57,13 @@ typedef struct QueryDesc /* in pquery.c */ extern QueryDesc *CreateQueryDesc(PlannedStmt *plannedstmt, - const char *sourceText, - Snapshot snapshot, - Snapshot crosscheck_snapshot, - DestReceiver *dest, - ParamListInfo params, - QueryEnvironment *queryEnv, - int instrument_options); + const char *sourceText, + Snapshot snapshot, + Snapshot crosscheck_snapshot, + DestReceiver *dest, + ParamListInfo params, + QueryEnvironment *queryEnv, + int instrument_options); extern void FreeQueryDesc(QueryDesc *qdesc); diff --git a/parser/include/executor/executor.h b/parser/include/executor/executor.h index 379e7c77..45f4fd63 100644 --- a/parser/include/executor/executor.h +++ b/parser/include/executor/executor.h @@ -4,7 +4,7 @@ * support for the POSTGRES executor module * * - * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/executor/executor.h @@ -14,9 +14,11 @@ #ifndef EXECUTOR_H #define EXECUTOR_H -#include "catalog/partition.h" #include "executor/execdesc.h" +#include "fmgr.h" +#include "nodes/lockoptions.h" #include "nodes/parsenodes.h" +#include "utils/memutils.h" /* @@ -50,19 +52,13 @@ * AfterTriggerBeginQuery/AfterTriggerEndQuery. This does not necessarily * mean that the plan can't queue any AFTER triggers; just that the caller * is responsible for there being a trigger context for them to be queued in. - * - * WITH/WITHOUT_OIDS tell the executor to emit tuples with or without space - * for OIDs, respectively. These are currently used only for CREATE TABLE AS. - * If neither is set, the plan may or may not produce tuples including OIDs. */ #define EXEC_FLAG_EXPLAIN_ONLY 0x0001 /* EXPLAIN, no ANALYZE */ #define EXEC_FLAG_REWIND 0x0002 /* need efficient rescan */ #define EXEC_FLAG_BACKWARD 0x0004 /* need backward scan */ #define EXEC_FLAG_MARK 0x0008 /* need mark/restore */ #define EXEC_FLAG_SKIP_TRIGGERS 0x0010 /* skip AfterTrigger calls */ -#define EXEC_FLAG_WITH_OIDS 0x0020 /* force OIDs in returned tuples */ -#define EXEC_FLAG_WITHOUT_OIDS 0x0040 /* force no OIDs in returned tuples */ -#define EXEC_FLAG_WITH_NO_DATA 0x0080 /* rel scannability doesn't matter */ +#define EXEC_FLAG_WITH_NO_DATA 0x0020 /* rel scannability doesn't matter */ /* Hook for plugins to get control in ExecutorStart() */ @@ -92,7 +88,7 @@ extern PGDLLIMPORT ExecutorCheckPerms_hook_type ExecutorCheckPerms_hook; /* * prototypes from functions in execAmi.c */ -struct Path; /* avoid including relation.h here */ +struct Path; /* avoid including pathnodes.h here */ extern void ExecReScan(PlanState *node); extern void ExecMarkPos(PlanState *node); @@ -105,61 +101,75 @@ extern bool ExecMaterializesOutput(NodeTag plantype); * prototypes from functions in execCurrent.c */ extern bool execCurrentOf(CurrentOfExpr *cexpr, - ExprContext *econtext, - Oid table_oid, - ItemPointer current_tid); + ExprContext *econtext, + Oid table_oid, + ItemPointer current_tid); /* * prototypes from functions in execGrouping.c */ -extern bool execTuplesMatch(TupleTableSlot *slot1, - TupleTableSlot *slot2, - int numCols, - AttrNumber *matchColIdx, - FmgrInfo *eqfunctions, - MemoryContext evalContext); -extern bool execTuplesUnequal(TupleTableSlot *slot1, - TupleTableSlot *slot2, - int numCols, - AttrNumber *matchColIdx, - FmgrInfo *eqfunctions, - MemoryContext evalContext); -extern FmgrInfo *execTuplesMatchPrepare(int numCols, - Oid *eqOperators); +extern ExprState *execTuplesMatchPrepare(TupleDesc desc, + int numCols, + const AttrNumber *keyColIdx, + const Oid *eqOperators, + const Oid *collations, + PlanState *parent); extern void execTuplesHashPrepare(int numCols, - Oid *eqOperators, - FmgrInfo **eqFunctions, - FmgrInfo **hashFunctions); -extern TupleHashTable BuildTupleHashTable(int numCols, AttrNumber *keyColIdx, - FmgrInfo *eqfunctions, - FmgrInfo *hashfunctions, - long nbuckets, Size additionalsize, - MemoryContext tablecxt, - MemoryContext tempcxt, bool use_variable_hash_iv); + const Oid *eqOperators, + Oid **eqFuncOids, + FmgrInfo **hashFunctions); +extern TupleHashTable BuildTupleHashTable(PlanState *parent, + TupleDesc inputDesc, + int numCols, AttrNumber *keyColIdx, + const Oid *eqfuncoids, + FmgrInfo *hashfunctions, + Oid *collations, + long nbuckets, Size additionalsize, + MemoryContext tablecxt, + MemoryContext tempcxt, bool use_variable_hash_iv); +extern TupleHashTable BuildTupleHashTableExt(PlanState *parent, + TupleDesc inputDesc, + int numCols, AttrNumber *keyColIdx, + const Oid *eqfuncoids, + FmgrInfo *hashfunctions, + Oid *collations, + long nbuckets, Size additionalsize, + MemoryContext metacxt, + MemoryContext tablecxt, + MemoryContext tempcxt, bool use_variable_hash_iv); extern TupleHashEntry LookupTupleHashEntry(TupleHashTable hashtable, - TupleTableSlot *slot, - bool *isnew); + TupleTableSlot *slot, + bool *isnew, uint32 *hash); +extern uint32 TupleHashTableHash(TupleHashTable hashtable, + TupleTableSlot *slot); +extern TupleHashEntry LookupTupleHashEntryHash(TupleHashTable hashtable, + TupleTableSlot *slot, + bool *isnew, uint32 hash); extern TupleHashEntry FindTupleHashEntry(TupleHashTable hashtable, - TupleTableSlot *slot, - FmgrInfo *eqfunctions, - FmgrInfo *hashfunctions); + TupleTableSlot *slot, + ExprState *eqcomp, + FmgrInfo *hashfunctions); +extern void ResetTupleHashTable(TupleHashTable hashtable); /* * prototypes from functions in execJunk.c */ -extern JunkFilter *ExecInitJunkFilter(List *targetList, bool hasoid, - TupleTableSlot *slot); +extern JunkFilter *ExecInitJunkFilter(List *targetList, + TupleTableSlot *slot); +extern JunkFilter *ExecInitJunkFilterInsertion(List *targetList, + TupleDesc cleanTupType, + TupleTableSlot *slot); extern JunkFilter *ExecInitJunkFilterConversion(List *targetList, - TupleDesc cleanTupType, - TupleTableSlot *slot); + TupleDesc cleanTupType, + TupleTableSlot *slot); extern AttrNumber ExecFindJunkAttribute(JunkFilter *junkfilter, - const char *attrName); + const char *attrName); extern AttrNumber ExecFindJunkAttributeInTlist(List *targetlist, - const char *attrName); + const char *attrName); extern Datum ExecGetJunkAttribute(TupleTableSlot *slot, AttrNumber attno, - bool *isNull); + bool *isNull); extern TupleTableSlot *ExecFilterJunk(JunkFilter *junkfilter, - TupleTableSlot *slot); + TupleTableSlot *slot); /* @@ -168,9 +178,9 @@ extern TupleTableSlot *ExecFilterJunk(JunkFilter *junkfilter, extern void ExecutorStart(QueryDesc *queryDesc, int eflags); extern void standard_ExecutorStart(QueryDesc *queryDesc, int eflags); extern void ExecutorRun(QueryDesc *queryDesc, - ScanDirection direction, uint64 count, bool execute_once); + ScanDirection direction, uint64 count, bool execute_once); extern void standard_ExecutorRun(QueryDesc *queryDesc, - ScanDirection direction, uint64 count, bool execute_once); + ScanDirection direction, uint64 count, bool execute_once); extern void ExecutorFinish(QueryDesc *queryDesc); extern void standard_ExecutorFinish(QueryDesc *queryDesc); extern void ExecutorEnd(QueryDesc *queryDesc); @@ -179,59 +189,47 @@ extern void ExecutorRewind(QueryDesc *queryDesc); extern bool ExecCheckRTPerms(List *rangeTable, bool ereport_on_violation); extern void CheckValidResultRel(ResultRelInfo *resultRelInfo, CmdType operation); extern void InitResultRelInfo(ResultRelInfo *resultRelInfo, - Relation resultRelationDesc, - Index resultRelationIndex, - Relation partition_root, - int instrument_options); + Relation resultRelationDesc, + Index resultRelationIndex, + ResultRelInfo *partition_root_rri, + int instrument_options); extern ResultRelInfo *ExecGetTriggerResultRel(EState *estate, Oid relid); extern void ExecCleanUpTriggerState(EState *estate); -extern bool ExecContextForcesOids(PlanState *planstate, bool *hasoids); extern void ExecConstraints(ResultRelInfo *resultRelInfo, - TupleTableSlot *slot, EState *estate); + TupleTableSlot *slot, EState *estate); +extern bool ExecPartitionCheck(ResultRelInfo *resultRelInfo, + TupleTableSlot *slot, EState *estate, bool emitError); +extern void ExecPartitionCheckEmitError(ResultRelInfo *resultRelInfo, + TupleTableSlot *slot, EState *estate); extern void ExecWithCheckOptions(WCOKind kind, ResultRelInfo *resultRelInfo, - TupleTableSlot *slot, EState *estate); + TupleTableSlot *slot, EState *estate); extern LockTupleMode ExecUpdateLockMode(EState *estate, ResultRelInfo *relinfo); extern ExecRowMark *ExecFindRowMark(EState *estate, Index rti, bool missing_ok); extern ExecAuxRowMark *ExecBuildAuxRowMark(ExecRowMark *erm, List *targetlist); -extern TupleTableSlot *EvalPlanQual(EState *estate, EPQState *epqstate, - Relation relation, Index rti, int lockmode, - ItemPointer tid, TransactionId priorXmax); -extern HeapTuple EvalPlanQualFetch(EState *estate, Relation relation, - int lockmode, LockWaitPolicy wait_policy, ItemPointer tid, - TransactionId priorXmax); -extern void EvalPlanQualInit(EPQState *epqstate, EState *estate, - Plan *subplan, List *auxrowmarks, int epqParam); +extern TupleTableSlot *EvalPlanQual(EPQState *epqstate, Relation relation, + Index rti, TupleTableSlot *testslot); +extern void EvalPlanQualInit(EPQState *epqstate, EState *parentestate, + Plan *subplan, List *auxrowmarks, int epqParam); extern void EvalPlanQualSetPlan(EPQState *epqstate, - Plan *subplan, List *auxrowmarks); -extern void EvalPlanQualSetTuple(EPQState *epqstate, Index rti, - HeapTuple tuple); -extern HeapTuple EvalPlanQualGetTuple(EPQState *epqstate, Index rti); -extern void ExecSetupPartitionTupleRouting(Relation rel, - Index resultRTindex, - EState *estate, - PartitionDispatch **pd, - ResultRelInfo **partitions, - TupleConversionMap ***tup_conv_maps, - TupleTableSlot **partition_tuple_slot, - int *num_parted, int *num_partitions); -extern int ExecFindPartition(ResultRelInfo *resultRelInfo, - PartitionDispatch *pd, - TupleTableSlot *slot, - EState *estate); + Plan *subplan, List *auxrowmarks); +extern TupleTableSlot *EvalPlanQualSlot(EPQState *epqstate, + Relation relation, Index rti); #define EvalPlanQualSetSlot(epqstate, slot) ((epqstate)->origslot = (slot)) -extern void EvalPlanQualFetchRowMarks(EPQState *epqstate); +extern bool EvalPlanQualFetchRowMark(EPQState *epqstate, Index rti, TupleTableSlot *slot); extern TupleTableSlot *EvalPlanQualNext(EPQState *epqstate); -extern void EvalPlanQualBegin(EPQState *epqstate, EState *parentestate); +extern void EvalPlanQualBegin(EPQState *epqstate); extern void EvalPlanQualEnd(EPQState *epqstate); /* * functions in execProcnode.c */ extern PlanState *ExecInitNode(Plan *node, EState *estate, int eflags); +extern void ExecSetExecProcNode(PlanState *node, ExecProcNodeMtd function); extern Node *MultiExecProcNode(PlanState *node); extern void ExecEndNode(PlanState *node); extern bool ExecShutdownNode(PlanState *node); +extern void ExecSetTupleBound(int64 tuples_needed, PlanState *child_node); /* ---------------------------------------------------------------- @@ -255,14 +253,24 @@ ExecProcNode(PlanState *node) * prototypes from functions in execExpr.c */ extern ExprState *ExecInitExpr(Expr *node, PlanState *parent); +extern ExprState *ExecInitExprWithParams(Expr *node, ParamListInfo ext_params); extern ExprState *ExecInitQual(List *qual, PlanState *parent); extern ExprState *ExecInitCheck(List *qual, PlanState *parent); extern List *ExecInitExprList(List *nodes, PlanState *parent); +extern ExprState *ExecBuildAggTrans(AggState *aggstate, struct AggStatePerPhaseData *phase, + bool doSort, bool doHash, bool nullcheck); +extern ExprState *ExecBuildGroupingEqual(TupleDesc ldesc, TupleDesc rdesc, + const TupleTableSlotOps *lops, const TupleTableSlotOps *rops, + int numCols, + const AttrNumber *keyColIdx, + const Oid *eqfunctions, + const Oid *collations, + PlanState *parent); extern ProjectionInfo *ExecBuildProjectionInfo(List *targetList, - ExprContext *econtext, - TupleTableSlot *slot, - PlanState *parent, - TupleDesc inputDesc); + ExprContext *econtext, + TupleTableSlot *slot, + PlanState *parent, + TupleDesc inputDesc); extern ExprState *ExecPrepareExpr(Expr *node, EState *estate); extern ExprState *ExecPrepareQual(List *qual, EState *estate); extern ExprState *ExecPrepareCheck(List *qual, EState *estate); @@ -286,7 +294,7 @@ ExecEvalExpr(ExprState *state, ExprContext *econtext, bool *isNull) { - return (*state->evalfunc) (state, econtext, isNull); + return state->evalfunc(state, econtext, isNull); } #endif @@ -305,7 +313,7 @@ ExecEvalExprSwitchContext(ExprState *state, MemoryContext oldContext; oldContext = MemoryContextSwitchTo(econtext->ecxt_per_tuple_memory); - retDatum = (*state->evalfunc) (state, econtext, isNull); + retDatum = state->evalfunc(state, econtext, isNull); MemoryContextSwitchTo(oldContext); return retDatum; } @@ -315,7 +323,7 @@ ExecEvalExprSwitchContext(ExprState *state, * ExecProject * * Projects a tuple based on projection info and stores it in the slot passed - * to ExecBuildProjectInfo(). + * to ExecBuildProjectionInfo(). * * Note: the result is always a virtual tuple; therefore it may reference * the contents of the exprContext's scan tuples and/or temporary results @@ -345,7 +353,7 @@ ExecProject(ProjectionInfo *projInfo) * Successfully formed a result row. Mark the result slot as containing a * valid virtual tuple (inlined version of ExecStoreVirtualTuple()). */ - slot->tts_isempty = false; + slot->tts_flags &= ~TTS_FLAG_EMPTY; slot->tts_nvalid = slot->tts_tupleDescriptor->natts; return slot; @@ -383,24 +391,41 @@ ExecQual(ExprState *state, ExprContext *econtext) } #endif +/* + * ExecQualAndReset() - evaluate qual with ExecQual() and reset expression + * context. + */ +#ifndef FRONTEND +static inline bool +ExecQualAndReset(ExprState *state, ExprContext *econtext) +{ + bool ret = ExecQual(state, econtext); + + /* inline ResetExprContext, to avoid ordering issue in this file */ + MemoryContextReset(econtext->ecxt_per_tuple_memory); + return ret; +} +#endif + extern bool ExecCheck(ExprState *state, ExprContext *context); /* * prototypes from functions in execSRF.c */ extern SetExprState *ExecInitTableFunctionResult(Expr *expr, - ExprContext *econtext, PlanState *parent); + ExprContext *econtext, PlanState *parent); extern Tuplestorestate *ExecMakeTableFunctionResult(SetExprState *setexpr, - ExprContext *econtext, - MemoryContext argContext, - TupleDesc expectedDesc, - bool randomAccess); + ExprContext *econtext, + MemoryContext argContext, + TupleDesc expectedDesc, + bool randomAccess); extern SetExprState *ExecInitFunctionResultSet(Expr *expr, - ExprContext *econtext, PlanState *parent); + ExprContext *econtext, PlanState *parent); extern Datum ExecMakeFunctionResultSet(SetExprState *fcache, - ExprContext *econtext, - bool *isNull, - ExprDoneCond *isDone); + ExprContext *econtext, + MemoryContext argContext, + bool *isNull, + ExprDoneCond *isDone); /* * prototypes from functions in execScan.c @@ -409,7 +434,7 @@ typedef TupleTableSlot *(*ExecScanAccessMtd) (ScanState *node); typedef bool (*ExecScanRecheckMtd) (ScanState *node, TupleTableSlot *slot); extern TupleTableSlot *ExecScan(ScanState *node, ExecScanAccessMtd accessMtd, - ExecScanRecheckMtd recheckMtd); + ExecScanRecheckMtd recheckMtd); extern void ExecAssignScanProjectionInfo(ScanState *node); extern void ExecAssignScanProjectionInfoWithVarno(ScanState *node, Index varno); extern void ExecScanReScan(ScanState *node); @@ -417,13 +442,21 @@ extern void ExecScanReScan(ScanState *node); /* * prototypes from functions in execTuples.c */ -extern void ExecInitResultTupleSlot(EState *estate, PlanState *planstate); -extern void ExecInitScanTupleSlot(EState *estate, ScanState *scanstate); -extern TupleTableSlot *ExecInitExtraTupleSlot(EState *estate); -extern TupleTableSlot *ExecInitNullTupleSlot(EState *estate, - TupleDesc tupType); -extern TupleDesc ExecTypeFromTL(List *targetList, bool hasoid); -extern TupleDesc ExecCleanTypeFromTL(List *targetList, bool hasoid); +extern void ExecInitResultTypeTL(PlanState *planstate); +extern void ExecInitResultSlot(PlanState *planstate, + const TupleTableSlotOps *tts_ops); +extern void ExecInitResultTupleSlotTL(PlanState *planstate, + const TupleTableSlotOps *tts_ops); +extern void ExecInitScanTupleSlot(EState *estate, ScanState *scanstate, + TupleDesc tupleDesc, + const TupleTableSlotOps *tts_ops); +extern TupleTableSlot *ExecInitExtraTupleSlot(EState *estate, + TupleDesc tupledesc, + const TupleTableSlotOps *tts_ops); +extern TupleTableSlot *ExecInitNullTupleSlot(EState *estate, TupleDesc tupType, + const TupleTableSlotOps *tts_ops); +extern TupleDesc ExecTypeFromTL(List *targetList); +extern TupleDesc ExecCleanTypeFromTL(List *targetList); extern TupleDesc ExecTypeFromExprList(List *exprList); extern void ExecTypeSetColNames(TupleDesc typeInfo, List *namesList); extern void UpdateChangedParamSet(PlanState *node, Bitmapset *newchg); @@ -435,7 +468,8 @@ typedef struct TupOutputState } TupOutputState; extern TupOutputState *begin_tup_output_tupdesc(DestReceiver *dest, - TupleDesc tupdesc); + TupleDesc tupdesc, + const TupleTableSlotOps *tts_ops); extern void do_tup_output(TupOutputState *tstate, Datum *values, bool *isnull); extern void do_text_output_multiline(TupOutputState *tstate, const char *txt); extern void end_tup_output(TupOutputState *tstate); @@ -462,6 +496,7 @@ extern void end_tup_output(TupOutputState *tstate); extern EState *CreateExecutorState(void); extern void FreeExecutorState(EState *estate); extern ExprContext *CreateExprContext(EState *estate); +extern ExprContext *CreateWorkExprContext(EState *estate); extern ExprContext *CreateStandaloneExprContext(void); extern void FreeExprContext(ExprContext *econtext, bool isCommit); extern void ReScanExprContext(ExprContext *econtext); @@ -488,73 +523,92 @@ extern ExprContext *MakePerTupleExprContext(EState *estate); } while (0) extern void ExecAssignExprContext(EState *estate, PlanState *planstate); -extern void ExecAssignResultType(PlanState *planstate, TupleDesc tupDesc); -extern void ExecAssignResultTypeFromTL(PlanState *planstate); extern TupleDesc ExecGetResultType(PlanState *planstate); +extern const TupleTableSlotOps *ExecGetResultSlotOps(PlanState *planstate, + bool *isfixed); extern void ExecAssignProjectionInfo(PlanState *planstate, - TupleDesc inputDesc); + TupleDesc inputDesc); +extern void ExecConditionalAssignProjectionInfo(PlanState *planstate, + TupleDesc inputDesc, Index varno); extern void ExecFreeExprContext(PlanState *planstate); extern void ExecAssignScanType(ScanState *scanstate, TupleDesc tupDesc); -extern void ExecAssignScanTypeFromOuterPlan(ScanState *scanstate); +extern void ExecCreateScanSlotFromOuterPlan(EState *estate, + ScanState *scanstate, + const TupleTableSlotOps *tts_ops); extern bool ExecRelationIsTargetRelation(EState *estate, Index scanrelid); extern Relation ExecOpenScanRelation(EState *estate, Index scanrelid, int eflags); -extern void ExecCloseScanRelation(Relation scanrel); + +extern void ExecInitRangeTable(EState *estate, List *rangeTable); + +static inline RangeTblEntry * +exec_rt_fetch(Index rti, EState *estate) +{ + return (RangeTblEntry *) list_nth(estate->es_range_table, rti - 1); +} + +extern Relation ExecGetRangeTableRelation(EState *estate, Index rti); extern int executor_errposition(EState *estate, int location); extern void RegisterExprContextCallback(ExprContext *econtext, - ExprContextCallbackFunction function, - Datum arg); + ExprContextCallbackFunction function, + Datum arg); extern void UnregisterExprContextCallback(ExprContext *econtext, - ExprContextCallbackFunction function, - Datum arg); - -extern void ExecLockNonLeafAppendTables(List *partitioned_rels, EState *estate); + ExprContextCallbackFunction function, + Datum arg); extern Datum GetAttributeByName(HeapTupleHeader tuple, const char *attname, - bool *isNull); + bool *isNull); extern Datum GetAttributeByNum(HeapTupleHeader tuple, AttrNumber attrno, - bool *isNull); + bool *isNull); extern int ExecTargetListLength(List *targetlist); extern int ExecCleanTargetListLength(List *targetlist); +extern TupleTableSlot *ExecGetTriggerOldSlot(EState *estate, ResultRelInfo *relInfo); +extern TupleTableSlot *ExecGetTriggerNewSlot(EState *estate, ResultRelInfo *relInfo); +extern TupleTableSlot *ExecGetReturningSlot(EState *estate, ResultRelInfo *relInfo); + +extern Bitmapset *ExecGetInsertedCols(ResultRelInfo *relinfo, EState *estate); +extern Bitmapset *ExecGetUpdatedCols(ResultRelInfo *relinfo, EState *estate); +extern Bitmapset *ExecGetExtraUpdatedCols(ResultRelInfo *relinfo, EState *estate); +extern Bitmapset *ExecGetAllUpdatedCols(ResultRelInfo *relinfo, EState *estate); + /* * prototypes from functions in execIndexing.c */ extern void ExecOpenIndices(ResultRelInfo *resultRelInfo, bool speculative); extern void ExecCloseIndices(ResultRelInfo *resultRelInfo); -extern List *ExecInsertIndexTuples(TupleTableSlot *slot, ItemPointer tupleid, - EState *estate, bool noDupErr, bool *specConflict, - List *arbiterIndexes); +extern List *ExecInsertIndexTuples(TupleTableSlot *slot, EState *estate, bool noDupErr, + bool *specConflict, List *arbiterIndexes); extern bool ExecCheckIndexConstraints(TupleTableSlot *slot, EState *estate, - ItemPointer conflictTid, List *arbiterIndexes); + ItemPointer conflictTid, List *arbiterIndexes); extern void check_exclusion_constraint(Relation heap, Relation index, - IndexInfo *indexInfo, - ItemPointer tupleid, - Datum *values, bool *isnull, - EState *estate, bool newIndex); + IndexInfo *indexInfo, + ItemPointer tupleid, + Datum *values, bool *isnull, + EState *estate, bool newIndex); /* * prototypes from functions in execReplication.c */ extern bool RelationFindReplTupleByIndex(Relation rel, Oid idxoid, - LockTupleMode lockmode, - TupleTableSlot *searchslot, - TupleTableSlot *outslot); + LockTupleMode lockmode, + TupleTableSlot *searchslot, + TupleTableSlot *outslot); extern bool RelationFindReplTupleSeq(Relation rel, LockTupleMode lockmode, - TupleTableSlot *searchslot, TupleTableSlot *outslot); + TupleTableSlot *searchslot, TupleTableSlot *outslot); extern void ExecSimpleRelationInsert(EState *estate, TupleTableSlot *slot); extern void ExecSimpleRelationUpdate(EState *estate, EPQState *epqstate, - TupleTableSlot *searchslot, TupleTableSlot *slot); + TupleTableSlot *searchslot, TupleTableSlot *slot); extern void ExecSimpleRelationDelete(EState *estate, EPQState *epqstate, - TupleTableSlot *searchslot); + TupleTableSlot *searchslot); extern void CheckCmdReplicaIdentity(Relation rel, CmdType cmd); extern void CheckSubscriptionRelkind(char relkind, const char *nspname, - const char *relname); + const char *relname); #endif /* EXECUTOR_H */ diff --git a/parser/include/executor/functions.h b/parser/include/executor/functions.h index 718d8947..a0db24bd 100644 --- a/parser/include/executor/functions.h +++ b/parser/include/executor/functions.h @@ -4,7 +4,7 @@ * Declarations for execution of SQL-language functions. * * - * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/executor/functions.h @@ -23,16 +23,18 @@ typedef struct SQLFunctionParseInfo *SQLFunctionParseInfoPtr; extern Datum fmgr_sql(PG_FUNCTION_ARGS); extern SQLFunctionParseInfoPtr prepare_sql_fn_parse_info(HeapTuple procedureTuple, - Node *call_expr, - Oid inputCollation); + Node *call_expr, + Oid inputCollation); extern void sql_fn_parser_setup(struct ParseState *pstate, - SQLFunctionParseInfoPtr pinfo); + SQLFunctionParseInfoPtr pinfo); -extern bool check_sql_fn_retval(Oid func_id, Oid rettype, - List *queryTreeList, - bool *modifyTargetList, - JunkFilter **junkFilter); +extern void check_sql_fn_statements(List *queryTreeLists); + +extern bool check_sql_fn_retval(List *queryTreeLists, + Oid rettype, TupleDesc rettupdesc, + bool insertDroppedCols, + List **resultTargetList); extern DestReceiver *CreateSQLFunctionDestReceiver(void); diff --git a/parser/include/executor/instrument.h b/parser/include/executor/instrument.h index 31573145..a97562e7 100644 --- a/parser/include/executor/instrument.h +++ b/parser/include/executor/instrument.h @@ -4,7 +4,7 @@ * definitions for run-time statistics collection * * - * Copyright (c) 2001-2017, PostgreSQL Global Development Group + * Copyright (c) 2001-2020, PostgreSQL Global Development Group * * src/include/executor/instrument.h * @@ -32,35 +32,47 @@ typedef struct BufferUsage instr_time blk_write_time; /* time spent writing */ } BufferUsage; +typedef struct WalUsage +{ + long wal_records; /* # of WAL records produced */ + long wal_fpi; /* # of WAL full page images produced */ + uint64 wal_bytes; /* size of WAL records produced */ +} WalUsage; + /* Flag bits included in InstrAlloc's instrument_options bitmask */ typedef enum InstrumentOption { INSTRUMENT_TIMER = 1 << 0, /* needs timer (and row counts) */ INSTRUMENT_BUFFERS = 1 << 1, /* needs buffer usage */ INSTRUMENT_ROWS = 1 << 2, /* needs row count */ + INSTRUMENT_WAL = 1 << 3, /* needs WAL usage */ INSTRUMENT_ALL = PG_INT32_MAX } InstrumentOption; typedef struct Instrumentation { /* Parameters set at node creation: */ - bool need_timer; /* TRUE if we need timer data */ - bool need_bufusage; /* TRUE if we need buffer usage data */ + bool need_timer; /* true if we need timer data */ + bool need_bufusage; /* true if we need buffer usage data */ + bool need_walusage; /* true if we need WAL usage data */ /* Info about current plan cycle: */ - bool running; /* TRUE if we've completed first tuple */ - instr_time starttime; /* Start time of current iteration of node */ - instr_time counter; /* Accumulated runtime for this node */ - double firsttuple; /* Time for first tuple of this cycle */ - double tuplecount; /* Tuples emitted so far this cycle */ - BufferUsage bufusage_start; /* Buffer usage at start */ + bool running; /* true if we've completed first tuple */ + instr_time starttime; /* start time of current iteration of node */ + instr_time counter; /* accumulated runtime for this node */ + double firsttuple; /* time for first tuple of this cycle */ + double tuplecount; /* # of tuples emitted so far this cycle */ + BufferUsage bufusage_start; /* buffer usage at start */ + WalUsage walusage_start; /* WAL usage at start */ /* Accumulated statistics across all completed cycles: */ - double startup; /* Total startup time (in seconds) */ - double total; /* Total total time (in seconds) */ - double ntuples; /* Total tuples produced */ + double startup; /* total startup time (in seconds) */ + double total; /* total time (in seconds) */ + double ntuples; /* total tuples produced */ + double ntuples2; /* secondary node-specific tuple counter */ double nloops; /* # of run cycles for this node */ - double nfiltered1; /* # tuples removed by scanqual or joinqual */ - double nfiltered2; /* # tuples removed by "other" quals */ - BufferUsage bufusage; /* Total buffer usage */ + double nfiltered1; /* # of tuples removed by scanqual or joinqual */ + double nfiltered2; /* # of tuples removed by "other" quals */ + BufferUsage bufusage; /* total buffer usage */ + WalUsage walusage; /* total WAL usage */ } Instrumentation; typedef struct WorkerInstrumentation @@ -70,6 +82,7 @@ typedef struct WorkerInstrumentation } WorkerInstrumentation; extern PGDLLIMPORT BufferUsage pgBufferUsage; +extern PGDLLIMPORT WalUsage pgWalUsage; extern Instrumentation *InstrAlloc(int n, int instrument_options); extern void InstrInit(Instrumentation *instr, int instrument_options); @@ -78,7 +91,11 @@ extern void InstrStopNode(Instrumentation *instr, double nTuples); extern void InstrEndLoop(Instrumentation *instr); extern void InstrAggNode(Instrumentation *dst, Instrumentation *add); extern void InstrStartParallelQuery(void); -extern void InstrEndParallelQuery(BufferUsage *result); -extern void InstrAccumParallelQuery(BufferUsage *result); +extern void InstrEndParallelQuery(BufferUsage *bufusage, WalUsage *walusage); +extern void InstrAccumParallelQuery(BufferUsage *bufusage, WalUsage *walusage); +extern void BufferUsageAccumDiff(BufferUsage *dst, + const BufferUsage *add, const BufferUsage *sub); +extern void WalUsageAccumDiff(WalUsage *dst, const WalUsage *add, + const WalUsage *sub); #endif /* INSTRUMENT_H */ diff --git a/parser/include/executor/spi.h b/parser/include/executor/spi.h index acade7e9..06de20ad 100644 --- a/parser/include/executor/spi.h +++ b/parser/include/executor/spi.h @@ -3,7 +3,7 @@ * spi.h * Server Programming Interface public declarations * - * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/executor/spi.h @@ -21,11 +21,14 @@ typedef struct SPITupleTable { - MemoryContext tuptabcxt; /* memory context of result table */ - uint64 alloced; /* # of alloced vals */ - uint64 free; /* # of free vals */ + /* Public members */ TupleDesc tupdesc; /* tuple descriptor */ - HeapTuple *vals; /* tuples */ + HeapTuple *vals; /* array of tuples */ + uint64 numvals; /* number of valid tuples */ + + /* Private members, not intended for external callers */ + uint64 alloced; /* allocated length of vals array */ + MemoryContext tuptabcxt; /* memory context of result table */ slist_node next; /* link for internal bookkeeping */ SubTransactionId subid; /* subxact in which tuptable was created */ } SPITupleTable; @@ -65,6 +68,8 @@ typedef struct _SPI_plan *SPIPlanPtr; #define SPI_OK_REL_UNREGISTER 16 #define SPI_OK_TD_REGISTER 17 +#define SPI_OPT_NONATOMIC (1 << 0) + /* These used to be functions, now just no-ops for backwards compatibility */ #define SPI_push() ((void) 0) #define SPI_pop() ((void) 0) @@ -73,37 +78,37 @@ typedef struct _SPI_plan *SPIPlanPtr; #define SPI_restore_connection() ((void) 0) extern PGDLLIMPORT uint64 SPI_processed; -extern PGDLLIMPORT Oid SPI_lastoid; extern PGDLLIMPORT SPITupleTable *SPI_tuptable; extern PGDLLIMPORT int SPI_result; extern int SPI_connect(void); +extern int SPI_connect_ext(int options); extern int SPI_finish(void); extern int SPI_execute(const char *src, bool read_only, long tcount); -extern int SPI_execute_plan(SPIPlanPtr plan, Datum *Values, const char *Nulls, - bool read_only, long tcount); -extern int SPI_execute_plan_with_paramlist(SPIPlanPtr plan, - ParamListInfo params, - bool read_only, long tcount); +extern int SPI_execute_plan(SPIPlanPtr plan, Datum *Values, const char *Nulls, + bool read_only, long tcount); +extern int SPI_execute_plan_with_paramlist(SPIPlanPtr plan, + ParamListInfo params, + bool read_only, long tcount); extern int SPI_exec(const char *src, long tcount); -extern int SPI_execp(SPIPlanPtr plan, Datum *Values, const char *Nulls, - long tcount); -extern int SPI_execute_snapshot(SPIPlanPtr plan, - Datum *Values, const char *Nulls, - Snapshot snapshot, - Snapshot crosscheck_snapshot, - bool read_only, bool fire_triggers, long tcount); -extern int SPI_execute_with_args(const char *src, - int nargs, Oid *argtypes, - Datum *Values, const char *Nulls, - bool read_only, long tcount); +extern int SPI_execp(SPIPlanPtr plan, Datum *Values, const char *Nulls, + long tcount); +extern int SPI_execute_snapshot(SPIPlanPtr plan, + Datum *Values, const char *Nulls, + Snapshot snapshot, + Snapshot crosscheck_snapshot, + bool read_only, bool fire_triggers, long tcount); +extern int SPI_execute_with_args(const char *src, + int nargs, Oid *argtypes, + Datum *Values, const char *Nulls, + bool read_only, long tcount); extern SPIPlanPtr SPI_prepare(const char *src, int nargs, Oid *argtypes); extern SPIPlanPtr SPI_prepare_cursor(const char *src, int nargs, Oid *argtypes, - int cursorOptions); + int cursorOptions); extern SPIPlanPtr SPI_prepare_params(const char *src, - ParserSetupHook parserSetup, - void *parserSetupArg, - int cursorOptions); + ParserSetupHook parserSetup, + void *parserSetupArg, + int cursorOptions); extern int SPI_keepplan(SPIPlanPtr plan); extern SPIPlanPtr SPI_saveplan(SPIPlanPtr plan); extern int SPI_freeplan(SPIPlanPtr plan); @@ -120,7 +125,7 @@ extern CachedPlan *SPI_plan_get_cached_plan(SPIPlanPtr plan); extern HeapTuple SPI_copytuple(HeapTuple tuple); extern HeapTupleHeader SPI_returntuple(HeapTuple tuple, TupleDesc tupdesc); extern HeapTuple SPI_modifytuple(Relation rel, HeapTuple tuple, int natts, - int *attnum, Datum *Values, const char *Nulls); + int *attnum, Datum *Values, const char *Nulls); extern int SPI_fnumber(TupleDesc tupdesc, const char *fname); extern char *SPI_fname(TupleDesc tupdesc, int fnumber); extern char *SPI_getvalue(HeapTuple tuple, TupleDesc tupdesc, int fnumber); @@ -137,14 +142,14 @@ extern void SPI_freetuple(HeapTuple pointer); extern void SPI_freetuptable(SPITupleTable *tuptable); extern Portal SPI_cursor_open(const char *name, SPIPlanPtr plan, - Datum *Values, const char *Nulls, bool read_only); + Datum *Values, const char *Nulls, bool read_only); extern Portal SPI_cursor_open_with_args(const char *name, - const char *src, - int nargs, Oid *argtypes, - Datum *Values, const char *Nulls, - bool read_only, int cursorOptions); + const char *src, + int nargs, Oid *argtypes, + Datum *Values, const char *Nulls, + bool read_only, int cursorOptions); extern Portal SPI_cursor_open_with_paramlist(const char *name, SPIPlanPtr plan, - ParamListInfo params, bool read_only); + ParamListInfo params, bool read_only); extern Portal SPI_cursor_find(const char *name); extern void SPI_cursor_fetch(Portal portal, bool forward, long count); extern void SPI_cursor_move(Portal portal, bool forward, long count); @@ -156,7 +161,15 @@ extern int SPI_register_relation(EphemeralNamedRelation enr); extern int SPI_unregister_relation(const char *name); extern int SPI_register_trigger_data(TriggerData *tdata); +extern void SPI_start_transaction(void); +extern void SPI_commit(void); +extern void SPI_commit_and_chain(void); +extern void SPI_rollback(void); +extern void SPI_rollback_and_chain(void); + +extern void SPICleanup(void); extern void AtEOXact_SPI(bool isCommit); extern void AtEOSubXact_SPI(bool isCommit, SubTransactionId mySubid); +extern bool SPI_inside_nonatomic_context(void); #endif /* SPI_H */ diff --git a/parser/include/executor/tablefunc.h b/parser/include/executor/tablefunc.h index a24a555b..4131056b 100644 --- a/parser/include/executor/tablefunc.h +++ b/parser/include/executor/tablefunc.h @@ -3,7 +3,7 @@ * tablefunc.h * interface for TableFunc executor node * - * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/executor/tablefunc.h @@ -20,11 +20,11 @@ struct TableFuncScanState; * TableFuncRoutine holds function pointers used for generating content of * table-producer functions, such as XMLTABLE. * - * InitBuilder initialize table builder private objects. The output tuple + * InitOpaque initializes table builder private objects. The output tuple * descriptor, input functions for the columns, and typioparams are passed * from executor state. * - * SetDoc is called to define the input document. The table builder may + * SetDocument is called to define the input document. The table builder may * apply additional transformations not exposed outside the table builder * context. * @@ -45,19 +45,19 @@ struct TableFuncScanState; * builder context such that each subsequent GetValue call returns the values * for the indicated column for the row being processed. * - * DestroyBuilder shall release all resources associated with a table builder + * DestroyOpaque shall release all resources associated with a table builder * context. It may be called either because all rows have been consumed, or - * because an error ocurred while processing the table expression. + * because an error occurred while processing the table expression. */ typedef struct TableFuncRoutine { void (*InitOpaque) (struct TableFuncScanState *state, int natts); void (*SetDocument) (struct TableFuncScanState *state, Datum value); - void (*SetNamespace) (struct TableFuncScanState *state, char *name, - char *uri); - void (*SetRowFilter) (struct TableFuncScanState *state, char *path); + void (*SetNamespace) (struct TableFuncScanState *state, const char *name, + const char *uri); + void (*SetRowFilter) (struct TableFuncScanState *state, const char *path); void (*SetColumnFilter) (struct TableFuncScanState *state, - char *path, int colnum); + const char *path, int colnum); bool (*FetchRow) (struct TableFuncScanState *state); Datum (*GetValue) (struct TableFuncScanState *state, int colnum, Oid typid, int32 typmod, bool *isnull); diff --git a/parser/include/executor/tuptable.h b/parser/include/executor/tuptable.h index ec541bb1..f7df70b5 100644 --- a/parser/include/executor/tuptable.h +++ b/parser/include/executor/tuptable.h @@ -4,7 +4,7 @@ * tuple table support stuff * * - * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/executor/tuptable.h @@ -15,16 +15,27 @@ #define TUPTABLE_H #include "access/htup.h" +#include "access/htup_details.h" +#include "access/sysattr.h" #include "access/tupdesc.h" #include "storage/buf.h" /*---------- * The executor stores tuples in a "tuple table" which is a List of - * independent TupleTableSlots. There are several cases we need to handle: - * 1. physical tuple in a disk buffer page - * 2. physical tuple constructed in palloc'ed memory - * 3. "minimal" physical tuple constructed in palloc'ed memory - * 4. "virtual" tuple consisting of Datum/isnull arrays + * independent TupleTableSlots. + * + * There's various different types of tuple table slots, each being able to + * store different types of tuples. Additional types of slots can be added + * without modifying core code. The type of a slot is determined by the + * TupleTableSlotOps* passed to the slot creation routine. The builtin types + * of slots are + * + * 1. physical tuple in a disk buffer page (TTSOpsBufferHeapTuple) + * 2. physical tuple constructed in palloc'ed memory (TTSOpsHeapTuple) + * 3. "minimal" physical tuple constructed in palloc'ed memory + * (TTSOpsMinimalTuple) + * 4. "virtual" tuple consisting of Datum/isnull arrays (TTSOpsVirtual) + * * * The first two cases are similar in that they both deal with "materialized" * tuples, but resource management is different. For a tuple in a disk page @@ -37,39 +48,28 @@ * parallel to case 1. Note that a minimal tuple has no "system columns". * (Actually, it could have an OID, but we have no need to access the OID.) * - * A "virtual" tuple is an optimization used to minimize physical data - * copying in a nest of plan nodes. Any pass-by-reference Datums in the - * tuple point to storage that is not directly associated with the - * TupleTableSlot; generally they will point to part of a tuple stored in - * a lower plan node's output TupleTableSlot, or to a function result + * A "virtual" tuple is an optimization used to minimize physical data copying + * in a nest of plan nodes. Until materialized pass-by-reference Datums in + * the slot point to storage that is not directly associated with the + * TupleTableSlot; generally they will point to part of a tuple stored in a + * lower plan node's output TupleTableSlot, or to a function result * constructed in a plan node's per-tuple econtext. It is the responsibility - * of the generating plan node to be sure these resources are not released - * for as long as the virtual tuple needs to be valid. We only use virtual - * tuples in the result slots of plan nodes --- tuples to be copied anywhere - * else need to be "materialized" into physical tuples. Note also that a - * virtual tuple does not have any "system columns". - * - * It is also possible for a TupleTableSlot to hold both physical and minimal - * copies of a tuple. This is done when the slot is requested to provide - * the format other than the one it currently holds. (Originally we attempted - * to handle such requests by replacing one format with the other, but that - * had the fatal defect of invalidating any pass-by-reference Datums pointing - * into the existing slot contents.) Both copies must contain identical data - * payloads when this is the case. - * - * The Datum/isnull arrays of a TupleTableSlot serve double duty. When the - * slot contains a virtual tuple, they are the authoritative data. When the - * slot contains a physical tuple, the arrays contain data extracted from - * the tuple. (In this state, any pass-by-reference Datums point into - * the physical tuple.) The extracted information is built "lazily", - * ie, only as needed. This serves to avoid repeated extraction of data - * from the physical tuple. - * - * A TupleTableSlot can also be "empty", holding no valid data. This is - * the only valid state for a freshly-created slot that has not yet had a - * tuple descriptor assigned to it. In this state, tts_isempty must be - * TRUE, tts_shouldFree FALSE, tts_tuple NULL, tts_buffer InvalidBuffer, - * and tts_nvalid zero. + * of the generating plan node to be sure these resources are not released for + * as long as the virtual tuple needs to be valid or is materialized. Note + * also that a virtual tuple does not have any "system columns". + * + * The Datum/isnull arrays of a TupleTableSlot serve double duty. For virtual + * slots they are the authoritative data. For the other builtin slots, + * the arrays contain data extracted from the tuple. (In this state, any + * pass-by-reference Datums point into the physical tuple.) The extracted + * information is built "lazily", ie, only as needed. This serves to avoid + * repeated extraction of data from the physical tuple. + * + * A TupleTableSlot can also be "empty", indicated by flag TTS_FLAG_EMPTY set + * in tts_flags, holding no valid data. This is the only valid state for a + * freshly-created slot that has not yet had a tuple descriptor assigned to + * it. In this state, TTS_SHOULDFREE should not be set in tts_flags, tts_tuple + * must be NULL and tts_nvalid zero. * * The tupleDescriptor is simply referenced, not copied, by the TupleTableSlot * code. The caller of ExecSetSlotDescriptor() is responsible for providing @@ -79,97 +79,409 @@ * mechanism to do more. However, the slot will increment the tupdesc * reference count if a reference-counted tupdesc is supplied.) * - * When tts_shouldFree is true, the physical tuple is "owned" by the slot - * and should be freed when the slot's reference to the tuple is dropped. - * - * If tts_buffer is not InvalidBuffer, then the slot is holding a pin - * on the indicated buffer page; drop the pin when we release the - * slot's reference to that buffer. (tts_shouldFree should always be - * false in such a case, since presumably tts_tuple is pointing at the - * buffer page.) - * - * tts_nvalid indicates the number of valid columns in the tts_values/isnull - * arrays. When the slot is holding a "virtual" tuple this must be equal - * to the descriptor's natts. When the slot is holding a physical tuple - * this is equal to the number of columns we have extracted (we always - * extract columns from left to right, so there are no holes). - * - * tts_values/tts_isnull are allocated when a descriptor is assigned to the - * slot; they are of length equal to the descriptor's natts. - * - * tts_mintuple must always be NULL if the slot does not hold a "minimal" - * tuple. When it does, tts_mintuple points to the actual MinimalTupleData - * object (the thing to be pfree'd if tts_shouldFreeMin is true). If the slot - * has only a minimal and not also a regular physical tuple, then tts_tuple - * points at tts_minhdr and the fields of that struct are set correctly - * for access to the minimal tuple; in particular, tts_minhdr.t_data points - * MINIMAL_TUPLE_OFFSET bytes before tts_mintuple. This allows column - * extraction to treat the case identically to regular physical tuples. - * - * tts_slow/tts_off are saved state for slot_deform_tuple, and should not - * be touched by any other code. + * When TTS_SHOULDFREE is set in tts_flags, the physical tuple is "owned" by + * the slot and should be freed when the slot's reference to the tuple is + * dropped. + * + * tts_values/tts_isnull are allocated either when the slot is created (when + * the descriptor is provided), or when a descriptor is assigned to the slot; + * they are of length equal to the descriptor's natts. + * + * The TTS_FLAG_SLOW flag is saved state for + * slot_deform_heap_tuple, and should not be touched by any other code. *---------- */ + +/* true = slot is empty */ +#define TTS_FLAG_EMPTY (1 << 1) +#define TTS_EMPTY(slot) (((slot)->tts_flags & TTS_FLAG_EMPTY) != 0) + +/* should pfree tuple "owned" by the slot? */ +#define TTS_FLAG_SHOULDFREE (1 << 2) +#define TTS_SHOULDFREE(slot) (((slot)->tts_flags & TTS_FLAG_SHOULDFREE) != 0) + +/* saved state for slot_deform_heap_tuple */ +#define TTS_FLAG_SLOW (1 << 3) +#define TTS_SLOW(slot) (((slot)->tts_flags & TTS_FLAG_SLOW) != 0) + +/* fixed tuple descriptor */ +#define TTS_FLAG_FIXED (1 << 4) +#define TTS_FIXED(slot) (((slot)->tts_flags & TTS_FLAG_FIXED) != 0) + +struct TupleTableSlotOps; +typedef struct TupleTableSlotOps TupleTableSlotOps; + +/* base tuple table slot type */ typedef struct TupleTableSlot { NodeTag type; - bool tts_isempty; /* true = slot is empty */ - bool tts_shouldFree; /* should pfree tts_tuple? */ - bool tts_shouldFreeMin; /* should pfree tts_mintuple? */ - bool tts_slow; /* saved state for slot_deform_tuple */ - HeapTuple tts_tuple; /* physical tuple, or NULL if virtual */ +#define FIELDNO_TUPLETABLESLOT_FLAGS 1 + uint16 tts_flags; /* Boolean states */ +#define FIELDNO_TUPLETABLESLOT_NVALID 2 + AttrNumber tts_nvalid; /* # of valid values in tts_values */ + const TupleTableSlotOps *const tts_ops; /* implementation of slot */ +#define FIELDNO_TUPLETABLESLOT_TUPLEDESCRIPTOR 4 TupleDesc tts_tupleDescriptor; /* slot's tuple descriptor */ - MemoryContext tts_mcxt; /* slot itself is in this context */ - Buffer tts_buffer; /* tuple's buffer, or InvalidBuffer */ - int tts_nvalid; /* # of valid values in tts_values */ +#define FIELDNO_TUPLETABLESLOT_VALUES 5 Datum *tts_values; /* current per-attribute values */ +#define FIELDNO_TUPLETABLESLOT_ISNULL 6 bool *tts_isnull; /* current per-attribute isnull flags */ - MinimalTuple tts_mintuple; /* minimal tuple, or NULL if none */ - HeapTupleData tts_minhdr; /* workspace for minimal-tuple-only case */ - long tts_off; /* saved state for slot_deform_tuple */ + MemoryContext tts_mcxt; /* slot itself is in this context */ + ItemPointerData tts_tid; /* stored tuple's tid */ + Oid tts_tableOid; /* table oid of tuple */ } TupleTableSlot; -#define TTS_HAS_PHYSICAL_TUPLE(slot) \ - ((slot)->tts_tuple != NULL && (slot)->tts_tuple != &((slot)->tts_minhdr)) +/* routines for a TupleTableSlot implementation */ +struct TupleTableSlotOps +{ + /* Minimum size of the slot */ + size_t base_slot_size; + + /* Initialization. */ + void (*init) (TupleTableSlot *slot); + + /* Destruction. */ + void (*release) (TupleTableSlot *slot); + + /* + * Clear the contents of the slot. Only the contents are expected to be + * cleared and not the tuple descriptor. Typically an implementation of + * this callback should free the memory allocated for the tuple contained + * in the slot. + */ + void (*clear) (TupleTableSlot *slot); + + /* + * Fill up first natts entries of tts_values and tts_isnull arrays with + * values from the tuple contained in the slot. The function may be called + * with natts more than the number of attributes available in the tuple, + * in which case it should set tts_nvalid to the number of returned + * columns. + */ + void (*getsomeattrs) (TupleTableSlot *slot, int natts); + + /* + * Returns value of the given system attribute as a datum and sets isnull + * to false, if it's not NULL. Throws an error if the slot type does not + * support system attributes. + */ + Datum (*getsysattr) (TupleTableSlot *slot, int attnum, bool *isnull); + + /* + * Make the contents of the slot solely depend on the slot, and not on + * underlying resources (like another memory context, buffers, etc). + */ + void (*materialize) (TupleTableSlot *slot); + + /* + * Copy the contents of the source slot into the destination slot's own + * context. Invoked using callback of the destination slot. + */ + void (*copyslot) (TupleTableSlot *dstslot, TupleTableSlot *srcslot); + + /* + * Return a heap tuple "owned" by the slot. It is slot's responsibility to + * free the memory consumed by the heap tuple. If the slot can not "own" a + * heap tuple, it should not implement this callback and should set it as + * NULL. + */ + HeapTuple (*get_heap_tuple) (TupleTableSlot *slot); + + /* + * Return a minimal tuple "owned" by the slot. It is slot's responsibility + * to free the memory consumed by the minimal tuple. If the slot can not + * "own" a minimal tuple, it should not implement this callback and should + * set it as NULL. + */ + MinimalTuple (*get_minimal_tuple) (TupleTableSlot *slot); + + /* + * Return a copy of heap tuple representing the contents of the slot. The + * copy needs to be palloc'd in the current memory context. The slot + * itself is expected to remain unaffected. It is *not* expected to have + * meaningful "system columns" in the copy. The copy is not be "owned" by + * the slot i.e. the caller has to take responsibility to free memory + * consumed by the slot. + */ + HeapTuple (*copy_heap_tuple) (TupleTableSlot *slot); + + /* + * Return a copy of minimal tuple representing the contents of the slot. + * The copy needs to be palloc'd in the current memory context. The slot + * itself is expected to remain unaffected. It is *not* expected to have + * meaningful "system columns" in the copy. The copy is not be "owned" by + * the slot i.e. the caller has to take responsibility to free memory + * consumed by the slot. + */ + MinimalTuple (*copy_minimal_tuple) (TupleTableSlot *slot); +}; + +/* + * Predefined TupleTableSlotOps for various types of TupleTableSlotOps. The + * same are used to identify the type of a given slot. + */ +extern PGDLLIMPORT const TupleTableSlotOps TTSOpsVirtual; +extern PGDLLIMPORT const TupleTableSlotOps TTSOpsHeapTuple; +extern PGDLLIMPORT const TupleTableSlotOps TTSOpsMinimalTuple; +extern PGDLLIMPORT const TupleTableSlotOps TTSOpsBufferHeapTuple; + +#define TTS_IS_VIRTUAL(slot) ((slot)->tts_ops == &TTSOpsVirtual) +#define TTS_IS_HEAPTUPLE(slot) ((slot)->tts_ops == &TTSOpsHeapTuple) +#define TTS_IS_MINIMALTUPLE(slot) ((slot)->tts_ops == &TTSOpsMinimalTuple) +#define TTS_IS_BUFFERTUPLE(slot) ((slot)->tts_ops == &TTSOpsBufferHeapTuple) + + +/* + * Tuple table slot implementations. + */ + +typedef struct VirtualTupleTableSlot +{ + TupleTableSlot base; + + char *data; /* data for materialized slots */ +} VirtualTupleTableSlot; + +typedef struct HeapTupleTableSlot +{ + TupleTableSlot base; + +#define FIELDNO_HEAPTUPLETABLESLOT_TUPLE 1 + HeapTuple tuple; /* physical tuple */ +#define FIELDNO_HEAPTUPLETABLESLOT_OFF 2 + uint32 off; /* saved state for slot_deform_heap_tuple */ + HeapTupleData tupdata; /* optional workspace for storing tuple */ +} HeapTupleTableSlot; + +/* heap tuple residing in a buffer */ +typedef struct BufferHeapTupleTableSlot +{ + HeapTupleTableSlot base; + + /* + * If buffer is not InvalidBuffer, then the slot is holding a pin on the + * indicated buffer page; drop the pin when we release the slot's + * reference to that buffer. (TTS_FLAG_SHOULDFREE should not be set in + * such a case, since presumably tts_tuple is pointing into the buffer.) + */ + Buffer buffer; /* tuple's buffer, or InvalidBuffer */ +} BufferHeapTupleTableSlot; + +typedef struct MinimalTupleTableSlot +{ + TupleTableSlot base; + + /* + * In a minimal slot tuple points at minhdr and the fields of that struct + * are set correctly for access to the minimal tuple; in particular, + * minhdr.t_data points MINIMAL_TUPLE_OFFSET bytes before mintuple. This + * allows column extraction to treat the case identically to regular + * physical tuples. + */ +#define FIELDNO_MINIMALTUPLETABLESLOT_TUPLE 1 + HeapTuple tuple; /* tuple wrapper */ + MinimalTuple mintuple; /* minimal tuple, or NULL if none */ + HeapTupleData minhdr; /* workspace for minimal-tuple-only case */ +#define FIELDNO_MINIMALTUPLETABLESLOT_OFF 4 + uint32 off; /* saved state for slot_deform_heap_tuple */ +} MinimalTupleTableSlot; /* * TupIsNull -- is a TupleTableSlot empty? */ #define TupIsNull(slot) \ - ((slot) == NULL || (slot)->tts_isempty) + ((slot) == NULL || TTS_EMPTY(slot)) /* in executor/execTuples.c */ -extern TupleTableSlot *MakeTupleTableSlot(void); -extern TupleTableSlot *ExecAllocTableSlot(List **tupleTable); +extern TupleTableSlot *MakeTupleTableSlot(TupleDesc tupleDesc, + const TupleTableSlotOps *tts_ops); +extern TupleTableSlot *ExecAllocTableSlot(List **tupleTable, TupleDesc desc, + const TupleTableSlotOps *tts_ops); extern void ExecResetTupleTable(List *tupleTable, bool shouldFree); -extern TupleTableSlot *MakeSingleTupleTableSlot(TupleDesc tupdesc); +extern TupleTableSlot *MakeSingleTupleTableSlot(TupleDesc tupdesc, + const TupleTableSlotOps *tts_ops); extern void ExecDropSingleTupleTableSlot(TupleTableSlot *slot); extern void ExecSetSlotDescriptor(TupleTableSlot *slot, TupleDesc tupdesc); -extern TupleTableSlot *ExecStoreTuple(HeapTuple tuple, - TupleTableSlot *slot, - Buffer buffer, - bool shouldFree); +extern TupleTableSlot *ExecStoreHeapTuple(HeapTuple tuple, + TupleTableSlot *slot, + bool shouldFree); +extern void ExecForceStoreHeapTuple(HeapTuple tuple, + TupleTableSlot *slot, + bool shouldFree); +extern TupleTableSlot *ExecStoreBufferHeapTuple(HeapTuple tuple, + TupleTableSlot *slot, + Buffer buffer); +extern TupleTableSlot *ExecStorePinnedBufferHeapTuple(HeapTuple tuple, + TupleTableSlot *slot, + Buffer buffer); extern TupleTableSlot *ExecStoreMinimalTuple(MinimalTuple mtup, - TupleTableSlot *slot, - bool shouldFree); -extern TupleTableSlot *ExecClearTuple(TupleTableSlot *slot); + TupleTableSlot *slot, + bool shouldFree); +extern void ExecForceStoreMinimalTuple(MinimalTuple mtup, TupleTableSlot *slot, + bool shouldFree); extern TupleTableSlot *ExecStoreVirtualTuple(TupleTableSlot *slot); extern TupleTableSlot *ExecStoreAllNullTuple(TupleTableSlot *slot); -extern HeapTuple ExecCopySlotTuple(TupleTableSlot *slot); -extern MinimalTuple ExecCopySlotMinimalTuple(TupleTableSlot *slot); -extern HeapTuple ExecFetchSlotTuple(TupleTableSlot *slot); -extern MinimalTuple ExecFetchSlotMinimalTuple(TupleTableSlot *slot); -extern Datum ExecFetchSlotTupleDatum(TupleTableSlot *slot); -extern HeapTuple ExecMaterializeSlot(TupleTableSlot *slot); -extern TupleTableSlot *ExecCopySlot(TupleTableSlot *dstslot, - TupleTableSlot *srcslot); - -/* in access/common/heaptuple.c */ -extern Datum slot_getattr(TupleTableSlot *slot, int attnum, bool *isnull); -extern void slot_getallattrs(TupleTableSlot *slot); -extern void slot_getsomeattrs(TupleTableSlot *slot, int attnum); -extern bool slot_attisnull(TupleTableSlot *slot, int attnum); -extern bool slot_getsysattr(TupleTableSlot *slot, int attnum, - Datum *value, bool *isnull); +extern void ExecStoreHeapTupleDatum(Datum data, TupleTableSlot *slot); +extern HeapTuple ExecFetchSlotHeapTuple(TupleTableSlot *slot, bool materialize, bool *shouldFree); +extern MinimalTuple ExecFetchSlotMinimalTuple(TupleTableSlot *slot, + bool *shouldFree); +extern Datum ExecFetchSlotHeapTupleDatum(TupleTableSlot *slot); +extern void slot_getmissingattrs(TupleTableSlot *slot, int startAttNum, + int lastAttNum); +extern void slot_getsomeattrs_int(TupleTableSlot *slot, int attnum); + + +#ifndef FRONTEND + +/* + * This function forces the entries of the slot's Datum/isnull arrays to be + * valid at least up through the attnum'th entry. + */ +static inline void +slot_getsomeattrs(TupleTableSlot *slot, int attnum) +{ + if (slot->tts_nvalid < attnum) + slot_getsomeattrs_int(slot, attnum); +} + +/* + * slot_getallattrs + * This function forces all the entries of the slot's Datum/isnull + * arrays to be valid. The caller may then extract data directly + * from those arrays instead of using slot_getattr. + */ +static inline void +slot_getallattrs(TupleTableSlot *slot) +{ + slot_getsomeattrs(slot, slot->tts_tupleDescriptor->natts); +} + + +/* + * slot_attisnull + * + * Detect whether an attribute of the slot is null, without actually fetching + * it. + */ +static inline bool +slot_attisnull(TupleTableSlot *slot, int attnum) +{ + AssertArg(attnum > 0); + + if (attnum > slot->tts_nvalid) + slot_getsomeattrs(slot, attnum); + + return slot->tts_isnull[attnum - 1]; +} + +/* + * slot_getattr - fetch one attribute of the slot's contents. + */ +static inline Datum +slot_getattr(TupleTableSlot *slot, int attnum, + bool *isnull) +{ + AssertArg(attnum > 0); + + if (attnum > slot->tts_nvalid) + slot_getsomeattrs(slot, attnum); + + *isnull = slot->tts_isnull[attnum - 1]; + + return slot->tts_values[attnum - 1]; +} + +/* + * slot_getsysattr - fetch a system attribute of the slot's current tuple. + * + * If the slot type does not contain system attributes, this will throw an + * error. Hence before calling this function, callers should make sure that + * the slot type is the one that supports system attributes. + */ +static inline Datum +slot_getsysattr(TupleTableSlot *slot, int attnum, bool *isnull) +{ + AssertArg(attnum < 0); /* caller error */ + + if (attnum == TableOidAttributeNumber) + { + *isnull = false; + return ObjectIdGetDatum(slot->tts_tableOid); + } + else if (attnum == SelfItemPointerAttributeNumber) + { + *isnull = false; + return PointerGetDatum(&slot->tts_tid); + } + + /* Fetch the system attribute from the underlying tuple. */ + return slot->tts_ops->getsysattr(slot, attnum, isnull); +} + +/* + * ExecClearTuple - clear the slot's contents + */ +static inline TupleTableSlot * +ExecClearTuple(TupleTableSlot *slot) +{ + slot->tts_ops->clear(slot); + + return slot; +} + +/* ExecMaterializeSlot - force a slot into the "materialized" state. + * + * This causes the slot's tuple to be a local copy not dependent on any + * external storage (i.e. pointing into a Buffer, or having allocations in + * another memory context). + * + * A typical use for this operation is to prepare a computed tuple for being + * stored on disk. The original data may or may not be virtual, but in any + * case we need a private copy for heap_insert to scribble on. + */ +static inline void +ExecMaterializeSlot(TupleTableSlot *slot) +{ + slot->tts_ops->materialize(slot); +} + +/* + * ExecCopySlotHeapTuple - return HeapTuple allocated in caller's context + */ +static inline HeapTuple +ExecCopySlotHeapTuple(TupleTableSlot *slot) +{ + Assert(!TTS_EMPTY(slot)); + + return slot->tts_ops->copy_heap_tuple(slot); +} + +/* + * ExecCopySlotMinimalTuple - return MinimalTuple allocated in caller's context + */ +static inline MinimalTuple +ExecCopySlotMinimalTuple(TupleTableSlot *slot) +{ + return slot->tts_ops->copy_minimal_tuple(slot); +} + +/* + * ExecCopySlot - copy one slot's contents into another. + * + * If a source's system attributes are supposed to be accessed in the target + * slot, the target slot and source slot types need to match. + */ +static inline TupleTableSlot * +ExecCopySlot(TupleTableSlot *dstslot, TupleTableSlot *srcslot) +{ + Assert(!TTS_EMPTY(srcslot)); + AssertArg(srcslot != dstslot); + + dstslot->tts_ops->copyslot(dstslot, srcslot); + + return dstslot; +} + +#endif /* FRONTEND */ #endif /* TUPTABLE_H */ diff --git a/parser/include/fmgr.h b/parser/include/fmgr.h index 5c614e79..d349510b 100644 --- a/parser/include/fmgr.h +++ b/parser/include/fmgr.h @@ -8,7 +8,7 @@ * or call fmgr-callable functions. * * - * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/fmgr.h @@ -35,7 +35,7 @@ typedef struct StringInfoData *fmStringInfo; * signature.) */ -typedef struct FunctionCallInfoData *FunctionCallInfo; +typedef struct FunctionCallInfoBaseData *FunctionCallInfo; typedef Datum (*PGFunction) (FunctionCallInfo fcinfo); @@ -46,8 +46,8 @@ typedef Datum (*PGFunction) (FunctionCallInfo fcinfo); * info struct saved for re-use. * * Note that fn_expr really is parse-time-determined information about the - * arguments, rather than about the function itself. But it's convenient - * to store it here rather than in FunctionCallInfoData, where it might more + * arguments, rather than about the function itself. But it's convenient to + * store it here rather than in FunctionCallInfoBaseData, where it might more * logically belong. * * fn_extra is available for use by the called function; all other fields @@ -73,18 +73,49 @@ typedef struct FmgrInfo * fields in whatever resultinfo points to. It should not change any other * fields. (In particular, scribbling on the argument arrays is a bad idea, * since some callers assume they can re-call with the same arguments.) + * + * Note that enough space for arguments needs to be provided, either by using + * SizeForFunctionCallInfo() in dynamic allocations, or by using + * LOCAL_FCINFO() for on-stack allocations. + * + * This struct is named *BaseData, rather than *Data, to break pre v12 code + * that allocated FunctionCallInfoData itself, as it'd often silently break + * old code due to no space for arguments being provided. */ -typedef struct FunctionCallInfoData +typedef struct FunctionCallInfoBaseData { FmgrInfo *flinfo; /* ptr to lookup info used for this call */ fmNodePtr context; /* pass info about context of call */ fmNodePtr resultinfo; /* pass or return extra info about result */ Oid fncollation; /* collation for function to use */ +#define FIELDNO_FUNCTIONCALLINFODATA_ISNULL 4 bool isnull; /* function must set true if result is NULL */ short nargs; /* # arguments actually passed */ - Datum arg[FUNC_MAX_ARGS]; /* Arguments passed to function */ - bool argnull[FUNC_MAX_ARGS]; /* T if arg[i] is actually NULL */ -} FunctionCallInfoData; +#define FIELDNO_FUNCTIONCALLINFODATA_ARGS 6 + NullableDatum args[FLEXIBLE_ARRAY_MEMBER]; +} FunctionCallInfoBaseData; + +/* + * Space needed for a FunctionCallInfoBaseData struct with sufficient space + * for `nargs` arguments. + */ +#define SizeForFunctionCallInfo(nargs) \ + (offsetof(FunctionCallInfoBaseData, args) + \ + sizeof(NullableDatum) * (nargs)) + +/* + * This macro ensures that `name` points to a stack-allocated + * FunctionCallInfoBaseData struct with sufficient space for `nargs` arguments. + */ +#define LOCAL_FCINFO(name, nargs) \ + /* use union with FunctionCallInfoBaseData to guarantee alignment */ \ + union \ + { \ + FunctionCallInfoBaseData fcinfo; \ + /* ensure enough space for nargs args is available */ \ + char fcinfo_data[SizeForFunctionCallInfo(nargs)]; \ + } name##data; \ + FunctionCallInfo name = &name##data.fcinfo /* * This routine fills a FmgrInfo struct, given the OID @@ -98,7 +129,7 @@ extern void fmgr_info(Oid functionId, FmgrInfo *finfo); * and used to hold all subsidiary data of finfo. */ extern void fmgr_info_cxt(Oid functionId, FmgrInfo *finfo, - MemoryContext mcxt); + MemoryContext mcxt); /* Convenience macro for setting the fn_expr field */ #define fmgr_info_set_expr(expr, finfo) \ @@ -108,14 +139,13 @@ extern void fmgr_info_cxt(Oid functionId, FmgrInfo *finfo, * Copy an FmgrInfo struct */ extern void fmgr_info_copy(FmgrInfo *dstinfo, FmgrInfo *srcinfo, - MemoryContext destcxt); + MemoryContext destcxt); + +extern void fmgr_symbol(Oid functionId, char **mod, char **fn); /* - * This macro initializes all the fields of a FunctionCallInfoData except - * for the arg[] and argnull[] arrays. Performance testing has shown that - * the fastest way to set up argnull[] for small numbers of arguments is to - * explicitly set each required element to false, so we don't try to zero - * out the argnull[] array in the macro. + * This macro initializes all the fields of a FunctionCallInfoBaseData except + * for the args[] array. */ #define InitFunctionCallInfoData(Fcinfo, Flinfo, Nargs, Collation, Context, Resultinfo) \ do { \ @@ -128,7 +158,7 @@ extern void fmgr_info_copy(FmgrInfo *dstinfo, FmgrInfo *srcinfo, } while (0) /* - * This macro invokes a function given a filled-in FunctionCallInfoData + * This macro invokes a function given a filled-in FunctionCallInfoBaseData * struct. The macro result is the returned Datum --- but note that * caller must still check fcinfo->isnull! Also, if function is strict, * it is caller's responsibility to verify that no null arguments are present @@ -176,7 +206,7 @@ extern void fmgr_info_copy(FmgrInfo *dstinfo, FmgrInfo *srcinfo, * If function is not marked "proisstrict" in pg_proc, it must check for * null arguments using this macro. Do not try to GETARG a null argument! */ -#define PG_ARGISNULL(n) (fcinfo->argnull[n]) +#define PG_ARGISNULL(n) (fcinfo->args[n].isnull) /* * Support for fetching detoasted copies of toastable datatypes (all of @@ -204,7 +234,7 @@ extern void fmgr_info_copy(FmgrInfo *dstinfo, FmgrInfo *srcinfo, extern struct varlena *pg_detoast_datum(struct varlena *datum); extern struct varlena *pg_detoast_datum_copy(struct varlena *datum); extern struct varlena *pg_detoast_datum_slice(struct varlena *datum, - int32 first, int32 count); + int32 first, int32 count); extern struct varlena *pg_detoast_datum_packed(struct varlena *datum); #define PG_DETOAST_DATUM(datum) \ @@ -235,7 +265,7 @@ extern struct varlena *pg_detoast_datum_packed(struct varlena *datum); /* Macros for fetching arguments of standard types */ -#define PG_GETARG_DATUM(n) (fcinfo->arg[n]) +#define PG_GETARG_DATUM(n) (fcinfo->args[n].value) #define PG_GETARG_INT32(n) DatumGetInt32(PG_GETARG_DATUM(n)) #define PG_GETARG_UINT32(n) DatumGetUInt32(PG_GETARG_DATUM(n)) #define PG_GETARG_INT16(n) DatumGetInt16(PG_GETARG_DATUM(n)) @@ -306,6 +336,10 @@ extern struct varlena *pg_detoast_datum_packed(struct varlena *datum); #define PG_GETARG_BPCHAR_P(n) DatumGetBpCharP(PG_GETARG_DATUM(n)) #define PG_GETARG_VARCHAR_P(n) DatumGetVarCharP(PG_GETARG_DATUM(n)) +/* To access options from opclass support functions use this: */ +#define PG_HAS_OPCLASS_OPTIONS() has_fn_opclass_options(fcinfo->flinfo) +#define PG_GET_OPCLASS_OPTIONS() get_fn_opclass_options(fcinfo->flinfo) + /* To return a NULL do this: */ #define PG_RETURN_NULL() \ do { fcinfo->isnull = true; return (Datum) 0; } while (0) @@ -330,6 +364,7 @@ extern struct varlena *pg_detoast_datum_packed(struct varlena *datum); #define PG_RETURN_FLOAT4(x) return Float4GetDatum(x) #define PG_RETURN_FLOAT8(x) return Float8GetDatum(x) #define PG_RETURN_INT64(x) return Int64GetDatum(x) +#define PG_RETURN_UINT64(x) return UInt64GetDatum(x) /* RETURN macros for other pass-by-ref types will typically look like this: */ #define PG_RETURN_BYTEA_P(x) PG_RETURN_POINTER(x) #define PG_RETURN_TEXT_P(x) PG_RETURN_POINTER(x) @@ -420,7 +455,6 @@ typedef struct int funcmaxargs; /* FUNC_MAX_ARGS */ int indexmaxkeys; /* INDEX_MAX_KEYS */ int namedatalen; /* NAMEDATALEN */ - int float4byval; /* FLOAT4PASSBYVAL */ int float8byval; /* FLOAT8PASSBYVAL */ } Pg_magic_struct; @@ -432,7 +466,6 @@ typedef struct FUNC_MAX_ARGS, \ INDEX_MAX_KEYS, \ NAMEDATALEN, \ - FLOAT4PASSBYVAL, \ FLOAT8PASSBYVAL \ } @@ -463,38 +496,39 @@ extern int no_such_variable /* These are for invocation of a specifically named function with a * directly-computed parameter list. Note that neither arguments nor result - * are allowed to be NULL. + * are allowed to be NULL. Also, the function cannot be one that needs to + * look at FmgrInfo, since there won't be any. */ extern Datum DirectFunctionCall1Coll(PGFunction func, Oid collation, - Datum arg1); + Datum arg1); extern Datum DirectFunctionCall2Coll(PGFunction func, Oid collation, - Datum arg1, Datum arg2); + Datum arg1, Datum arg2); extern Datum DirectFunctionCall3Coll(PGFunction func, Oid collation, - Datum arg1, Datum arg2, - Datum arg3); + Datum arg1, Datum arg2, + Datum arg3); extern Datum DirectFunctionCall4Coll(PGFunction func, Oid collation, - Datum arg1, Datum arg2, - Datum arg3, Datum arg4); + Datum arg1, Datum arg2, + Datum arg3, Datum arg4); extern Datum DirectFunctionCall5Coll(PGFunction func, Oid collation, - Datum arg1, Datum arg2, - Datum arg3, Datum arg4, Datum arg5); + Datum arg1, Datum arg2, + Datum arg3, Datum arg4, Datum arg5); extern Datum DirectFunctionCall6Coll(PGFunction func, Oid collation, - Datum arg1, Datum arg2, - Datum arg3, Datum arg4, Datum arg5, - Datum arg6); + Datum arg1, Datum arg2, + Datum arg3, Datum arg4, Datum arg5, + Datum arg6); extern Datum DirectFunctionCall7Coll(PGFunction func, Oid collation, - Datum arg1, Datum arg2, - Datum arg3, Datum arg4, Datum arg5, - Datum arg6, Datum arg7); + Datum arg1, Datum arg2, + Datum arg3, Datum arg4, Datum arg5, + Datum arg6, Datum arg7); extern Datum DirectFunctionCall8Coll(PGFunction func, Oid collation, - Datum arg1, Datum arg2, - Datum arg3, Datum arg4, Datum arg5, - Datum arg6, Datum arg7, Datum arg8); + Datum arg1, Datum arg2, + Datum arg3, Datum arg4, Datum arg5, + Datum arg6, Datum arg7, Datum arg8); extern Datum DirectFunctionCall9Coll(PGFunction func, Oid collation, - Datum arg1, Datum arg2, - Datum arg3, Datum arg4, Datum arg5, - Datum arg6, Datum arg7, Datum arg8, - Datum arg9); + Datum arg1, Datum arg2, + Datum arg3, Datum arg4, Datum arg5, + Datum arg6, Datum arg7, Datum arg8, + Datum arg9); /* * These functions work like the DirectFunctionCall functions except that @@ -505,44 +539,45 @@ extern Datum DirectFunctionCall9Coll(PGFunction func, Oid collation, * used fn_extra, unless its use is known to be compatible with the callee's. */ extern Datum CallerFInfoFunctionCall1(PGFunction func, FmgrInfo *flinfo, - Oid collation, Datum arg1); + Oid collation, Datum arg1); extern Datum CallerFInfoFunctionCall2(PGFunction func, FmgrInfo *flinfo, - Oid collation, Datum arg1, Datum arg2); + Oid collation, Datum arg1, Datum arg2); /* These are for invocation of a previously-looked-up function with a * directly-computed parameter list. Note that neither arguments nor result * are allowed to be NULL. */ +extern Datum FunctionCall0Coll(FmgrInfo *flinfo, Oid collation); extern Datum FunctionCall1Coll(FmgrInfo *flinfo, Oid collation, - Datum arg1); + Datum arg1); extern Datum FunctionCall2Coll(FmgrInfo *flinfo, Oid collation, - Datum arg1, Datum arg2); + Datum arg1, Datum arg2); extern Datum FunctionCall3Coll(FmgrInfo *flinfo, Oid collation, - Datum arg1, Datum arg2, - Datum arg3); + Datum arg1, Datum arg2, + Datum arg3); extern Datum FunctionCall4Coll(FmgrInfo *flinfo, Oid collation, - Datum arg1, Datum arg2, - Datum arg3, Datum arg4); + Datum arg1, Datum arg2, + Datum arg3, Datum arg4); extern Datum FunctionCall5Coll(FmgrInfo *flinfo, Oid collation, - Datum arg1, Datum arg2, - Datum arg3, Datum arg4, Datum arg5); + Datum arg1, Datum arg2, + Datum arg3, Datum arg4, Datum arg5); extern Datum FunctionCall6Coll(FmgrInfo *flinfo, Oid collation, - Datum arg1, Datum arg2, - Datum arg3, Datum arg4, Datum arg5, - Datum arg6); + Datum arg1, Datum arg2, + Datum arg3, Datum arg4, Datum arg5, + Datum arg6); extern Datum FunctionCall7Coll(FmgrInfo *flinfo, Oid collation, - Datum arg1, Datum arg2, - Datum arg3, Datum arg4, Datum arg5, - Datum arg6, Datum arg7); + Datum arg1, Datum arg2, + Datum arg3, Datum arg4, Datum arg5, + Datum arg6, Datum arg7); extern Datum FunctionCall8Coll(FmgrInfo *flinfo, Oid collation, - Datum arg1, Datum arg2, - Datum arg3, Datum arg4, Datum arg5, - Datum arg6, Datum arg7, Datum arg8); + Datum arg1, Datum arg2, + Datum arg3, Datum arg4, Datum arg5, + Datum arg6, Datum arg7, Datum arg8); extern Datum FunctionCall9Coll(FmgrInfo *flinfo, Oid collation, - Datum arg1, Datum arg2, - Datum arg3, Datum arg4, Datum arg5, - Datum arg6, Datum arg7, Datum arg8, - Datum arg9); + Datum arg1, Datum arg2, + Datum arg3, Datum arg4, Datum arg5, + Datum arg6, Datum arg7, Datum arg8, + Datum arg9); /* These are for invocation of a function identified by OID with a * directly-computed parameter list. Note that neither arguments nor result @@ -552,35 +587,35 @@ extern Datum FunctionCall9Coll(FmgrInfo *flinfo, Oid collation, */ extern Datum OidFunctionCall0Coll(Oid functionId, Oid collation); extern Datum OidFunctionCall1Coll(Oid functionId, Oid collation, - Datum arg1); + Datum arg1); extern Datum OidFunctionCall2Coll(Oid functionId, Oid collation, - Datum arg1, Datum arg2); + Datum arg1, Datum arg2); extern Datum OidFunctionCall3Coll(Oid functionId, Oid collation, - Datum arg1, Datum arg2, - Datum arg3); + Datum arg1, Datum arg2, + Datum arg3); extern Datum OidFunctionCall4Coll(Oid functionId, Oid collation, - Datum arg1, Datum arg2, - Datum arg3, Datum arg4); + Datum arg1, Datum arg2, + Datum arg3, Datum arg4); extern Datum OidFunctionCall5Coll(Oid functionId, Oid collation, - Datum arg1, Datum arg2, - Datum arg3, Datum arg4, Datum arg5); + Datum arg1, Datum arg2, + Datum arg3, Datum arg4, Datum arg5); extern Datum OidFunctionCall6Coll(Oid functionId, Oid collation, - Datum arg1, Datum arg2, - Datum arg3, Datum arg4, Datum arg5, - Datum arg6); + Datum arg1, Datum arg2, + Datum arg3, Datum arg4, Datum arg5, + Datum arg6); extern Datum OidFunctionCall7Coll(Oid functionId, Oid collation, - Datum arg1, Datum arg2, - Datum arg3, Datum arg4, Datum arg5, - Datum arg6, Datum arg7); + Datum arg1, Datum arg2, + Datum arg3, Datum arg4, Datum arg5, + Datum arg6, Datum arg7); extern Datum OidFunctionCall8Coll(Oid functionId, Oid collation, - Datum arg1, Datum arg2, - Datum arg3, Datum arg4, Datum arg5, - Datum arg6, Datum arg7, Datum arg8); + Datum arg1, Datum arg2, + Datum arg3, Datum arg4, Datum arg5, + Datum arg6, Datum arg7, Datum arg8); extern Datum OidFunctionCall9Coll(Oid functionId, Oid collation, - Datum arg1, Datum arg2, - Datum arg3, Datum arg4, Datum arg5, - Datum arg6, Datum arg7, Datum arg8, - Datum arg9); + Datum arg1, Datum arg2, + Datum arg3, Datum arg4, Datum arg5, + Datum arg6, Datum arg7, Datum arg8, + Datum arg9); /* These macros allow the collation argument to be omitted (with a default of * InvalidOid, ie, no collation). They exist mostly for backwards @@ -646,15 +681,15 @@ extern Datum OidFunctionCall9Coll(Oid functionId, Oid collation, /* Special cases for convenient invocation of datatype I/O functions. */ extern Datum InputFunctionCall(FmgrInfo *flinfo, char *str, - Oid typioparam, int32 typmod); + Oid typioparam, int32 typmod); extern Datum OidInputFunctionCall(Oid functionId, char *str, - Oid typioparam, int32 typmod); + Oid typioparam, int32 typmod); extern char *OutputFunctionCall(FmgrInfo *flinfo, Datum val); extern char *OidOutputFunctionCall(Oid functionId, Datum val); extern Datum ReceiveFunctionCall(FmgrInfo *flinfo, fmStringInfo buf, - Oid typioparam, int32 typmod); + Oid typioparam, int32 typmod); extern Datum OidReceiveFunctionCall(Oid functionId, fmStringInfo buf, - Oid typioparam, int32 typmod); + Oid typioparam, int32 typmod); extern bytea *SendFunctionCall(FmgrInfo *flinfo, Datum val); extern bytea *OidSendFunctionCall(Oid functionId, Datum val); @@ -671,6 +706,9 @@ extern Oid get_call_expr_argtype(fmNodePtr expr, int argnum); extern bool get_fn_expr_arg_stable(FmgrInfo *flinfo, int argnum); extern bool get_call_expr_arg_stable(fmNodePtr expr, int argnum); extern bool get_fn_expr_variadic(FmgrInfo *flinfo); +extern bytea *get_fn_opclass_options(FmgrInfo *flinfo); +extern bool has_fn_opclass_options(FmgrInfo *flinfo); +extern void set_fn_opclass_options(FmgrInfo *flinfo, bytea *options); extern bool CheckFunctionValidatorAccess(Oid validatorOid, Oid functionOid); /* @@ -679,7 +717,7 @@ extern bool CheckFunctionValidatorAccess(Oid validatorOid, Oid functionOid); extern char *Dynamic_library_path; extern PGFunction load_external_function(const char *filename, const char *funcname, - bool signalNotFound, void **filehandle); + bool signalNotFound, void **filehandle); extern PGFunction lookup_external_function(void *filehandle, const char *funcname); extern void load_file(const char *filename, bool restricted); extern void **find_rendezvous_variable(const char *varName); @@ -698,13 +736,14 @@ extern void RestoreLibraryState(char *start_address); #define AGG_CONTEXT_AGGREGATE 1 /* regular aggregate */ #define AGG_CONTEXT_WINDOW 2 /* window function */ -extern int AggCheckCallContext(FunctionCallInfo fcinfo, - MemoryContext *aggcontext); +extern int AggCheckCallContext(FunctionCallInfo fcinfo, + MemoryContext *aggcontext); extern fmAggrefPtr AggGetAggref(FunctionCallInfo fcinfo); extern MemoryContext AggGetTempMemoryContext(FunctionCallInfo fcinfo); +extern bool AggStateIsShared(FunctionCallInfo fcinfo); extern void AggRegisterCallback(FunctionCallInfo fcinfo, - fmExprContextCallbackFunction func, - Datum arg); + fmExprContextCallbackFunction func, + Datum arg); /* * We allow plugin modules to hook function entry/exit. This is intended @@ -733,19 +772,4 @@ extern PGDLLIMPORT fmgr_hook_type fmgr_hook; #define FmgrHookIsNeeded(fn_oid) \ (!needs_fmgr_hook ? false : (*needs_fmgr_hook)(fn_oid)) -/* - * !!! OLD INTERFACE !!! - * - * fmgr() is the only remaining vestige of the old-style caller support - * functions. It's no longer used anywhere in the Postgres distribution, - * but we should leave it around for a release or two to ease the transition - * for user-supplied C functions. OidFunctionCallN() replaces it for new - * code. - */ - -/* - * DEPRECATED, DO NOT USE IN NEW CODE - */ -extern char *fmgr(Oid procedureId,...); - #endif /* FMGR_H */ diff --git a/parser/include/funcapi.h b/parser/include/funcapi.h index 466fd52a..b047acdc 100644 --- a/parser/include/funcapi.h +++ b/parser/include/funcapi.h @@ -8,7 +8,7 @@ * or call FUNCAPI-callable functions or macros. * * - * Copyright (c) 2002-2017, PostgreSQL Global Development Group + * Copyright (c) 2002-2020, PostgreSQL Global Development Group * * src/include/funcapi.h * @@ -17,11 +17,10 @@ #ifndef FUNCAPI_H #define FUNCAPI_H -#include "fmgr.h" #include "access/tupdesc.h" #include "executor/executor.h" #include "executor/tuptable.h" - +#include "fmgr.h" /*------------------------------------------------------------------------- * Support to ease writing Functions returning composite types @@ -74,14 +73,6 @@ typedef struct FuncCallContext */ uint64 max_calls; - /* - * OPTIONAL pointer to result slot - * - * This is obsolete and only present for backwards compatibility, viz, - * user-defined SRFs that use the deprecated TupleDescGetSlot(). - */ - TupleTableSlot *slot; - /* * OPTIONAL pointer to miscellaneous user-provided context information * @@ -144,6 +135,10 @@ typedef struct FuncCallContext * get_call_result_type. Note: the cases in which rowtypes cannot be * determined are different from the cases for get_call_result_type. * Do *not* use this if you can use one of the others. + * + * See also get_expr_result_tupdesc(), which is a convenient wrapper around + * get_expr_result_type() for use when the caller only cares about + * determinable-rowtype cases. *---------- */ @@ -152,37 +147,41 @@ typedef enum TypeFuncClass { TYPEFUNC_SCALAR, /* scalar result type */ TYPEFUNC_COMPOSITE, /* determinable rowtype result */ + TYPEFUNC_COMPOSITE_DOMAIN, /* domain over determinable rowtype result */ TYPEFUNC_RECORD, /* indeterminate rowtype result */ TYPEFUNC_OTHER /* bogus type, eg pseudotype */ } TypeFuncClass; extern TypeFuncClass get_call_result_type(FunctionCallInfo fcinfo, - Oid *resultTypeId, - TupleDesc *resultTupleDesc); + Oid *resultTypeId, + TupleDesc *resultTupleDesc); extern TypeFuncClass get_expr_result_type(Node *expr, - Oid *resultTypeId, - TupleDesc *resultTupleDesc); + Oid *resultTypeId, + TupleDesc *resultTupleDesc); extern TypeFuncClass get_func_result_type(Oid functionId, - Oid *resultTypeId, - TupleDesc *resultTupleDesc); + Oid *resultTypeId, + TupleDesc *resultTupleDesc); + +extern TupleDesc get_expr_result_tupdesc(Node *expr, bool noError); extern bool resolve_polymorphic_argtypes(int numargs, Oid *argtypes, - char *argmodes, - Node *call_expr); + char *argmodes, + Node *call_expr); -extern int get_func_arg_info(HeapTuple procTup, - Oid **p_argtypes, char ***p_argnames, - char **p_argmodes); +extern int get_func_arg_info(HeapTuple procTup, + Oid **p_argtypes, char ***p_argnames, + char **p_argmodes); -extern int get_func_input_arg_names(Datum proargnames, Datum proargmodes, - char ***arg_names); +extern int get_func_input_arg_names(Datum proargnames, Datum proargmodes, + char ***arg_names); extern int get_func_trftypes(HeapTuple procTup, Oid **p_trftypes); extern char *get_func_result_name(Oid functionId); -extern TupleDesc build_function_result_tupdesc_d(Datum proallargtypes, - Datum proargmodes, - Datum proargnames); +extern TupleDesc build_function_result_tupdesc_d(char prokind, + Datum proallargtypes, + Datum proargmodes, + Datum proargnames); extern TupleDesc build_function_result_tupdesc_t(HeapTuple procTuple); @@ -213,8 +212,6 @@ extern TupleDesc build_function_result_tupdesc_t(HeapTuple procTuple); * TupleDesc based on a named relation. * TupleDesc TypeGetTupleDesc(Oid typeoid, List *colaliases) - Use to get a * TupleDesc based on a type OID. - * TupleTableSlot *TupleDescGetSlot(TupleDesc tupdesc) - Builds a - * TupleTableSlot, which is not needed anymore. * TupleGetDatum(TupleTableSlot *slot, HeapTuple tuple) - get a Datum * given a tuple and a slot. *---------- @@ -232,7 +229,6 @@ extern TupleDesc BlessTupleDesc(TupleDesc tupdesc); extern AttInMetadata *TupleDescGetAttInMetadata(TupleDesc tupdesc); extern HeapTuple BuildTupleFromCStrings(AttInMetadata *attinmeta, char **values); extern Datum HeapTupleHeaderGetDatum(HeapTupleHeader tuple); -extern TupleTableSlot *TupleDescGetSlot(TupleDesc tupdesc); /*---------- @@ -255,7 +251,7 @@ extern TupleTableSlot *TupleDescGetSlot(TupleDesc tupdesc); * oldcontext = MemoryContextSwitchTo(funcctx->multi_call_memory_ctx); * * - * + * * * * // return to original context when allocating transient memory @@ -345,8 +341,8 @@ extern void end_MultiFuncCall(PG_FUNCTION_ARGS, FuncCallContext *funcctx); * The return result is the number of elements stored, or -1 in the case of * "VARIADIC NULL". */ -extern int extract_variadic_args(FunctionCallInfo fcinfo, int variadic_start, - bool convert_unknown, Datum **values, - Oid **types, bool **nulls); +extern int extract_variadic_args(FunctionCallInfo fcinfo, int variadic_start, + bool convert_unknown, Datum **values, + Oid **types, bool **nulls); #endif /* FUNCAPI_H */ diff --git a/parser/include/getaddrinfo.h b/parser/include/getaddrinfo.h index 3dcfc1fa..38fa3b84 100644 --- a/parser/include/getaddrinfo.h +++ b/parser/include/getaddrinfo.h @@ -13,7 +13,7 @@ * This code will also work on platforms where struct addrinfo is defined * in the system headers but no getaddrinfo() can be located. * - * Copyright (c) 2003-2017, PostgreSQL Global Development Group + * Copyright (c) 2003-2020, PostgreSQL Global Development Group * * src/include/getaddrinfo.h * @@ -150,13 +150,13 @@ struct addrinfo #endif #define getnameinfo pg_getnameinfo -extern int getaddrinfo(const char *node, const char *service, - const struct addrinfo *hints, struct addrinfo **res); +extern int getaddrinfo(const char *node, const char *service, + const struct addrinfo *hints, struct addrinfo **res); extern void freeaddrinfo(struct addrinfo *res); extern const char *gai_strerror(int errcode); -extern int getnameinfo(const struct sockaddr *sa, int salen, - char *node, int nodelen, - char *service, int servicelen, int flags); +extern int getnameinfo(const struct sockaddr *sa, int salen, + char *node, int nodelen, + char *service, int servicelen, int flags); #endif /* HAVE_GETADDRINFO */ #endif /* GETADDRINFO_H */ diff --git a/parser/include/jit/jit.h b/parser/include/jit/jit.h new file mode 100644 index 00000000..5a77f7d4 --- /dev/null +++ b/parser/include/jit/jit.h @@ -0,0 +1,105 @@ +/*------------------------------------------------------------------------- + * jit.h + * Provider independent JIT infrastructure. + * + * Copyright (c) 2016-2020, PostgreSQL Global Development Group + * + * src/include/jit/jit.h + * + *------------------------------------------------------------------------- + */ +#ifndef JIT_H +#define JIT_H + +#include "executor/instrument.h" +#include "utils/resowner.h" + + +/* Flags determining what kind of JIT operations to perform */ +#define PGJIT_NONE 0 +#define PGJIT_PERFORM (1 << 0) +#define PGJIT_OPT3 (1 << 1) +#define PGJIT_INLINE (1 << 2) +#define PGJIT_EXPR (1 << 3) +#define PGJIT_DEFORM (1 << 4) + + +typedef struct JitInstrumentation +{ + /* number of emitted functions */ + size_t created_functions; + + /* accumulated time to generate code */ + instr_time generation_counter; + + /* accumulated time for inlining */ + instr_time inlining_counter; + + /* accumulated time for optimization */ + instr_time optimization_counter; + + /* accumulated time for code emission */ + instr_time emission_counter; +} JitInstrumentation; + +/* + * DSM structure for accumulating jit instrumentation of all workers. + */ +typedef struct SharedJitInstrumentation +{ + int num_workers; + JitInstrumentation jit_instr[FLEXIBLE_ARRAY_MEMBER]; +} SharedJitInstrumentation; + +typedef struct JitContext +{ + /* see PGJIT_* above */ + int flags; + + ResourceOwner resowner; + + JitInstrumentation instr; +} JitContext; + +typedef struct JitProviderCallbacks JitProviderCallbacks; + +extern void _PG_jit_provider_init(JitProviderCallbacks *cb); +typedef void (*JitProviderInit) (JitProviderCallbacks *cb); +typedef void (*JitProviderResetAfterErrorCB) (void); +typedef void (*JitProviderReleaseContextCB) (JitContext *context); +struct ExprState; +typedef bool (*JitProviderCompileExprCB) (struct ExprState *state); + +struct JitProviderCallbacks +{ + JitProviderResetAfterErrorCB reset_after_error; + JitProviderReleaseContextCB release_context; + JitProviderCompileExprCB compile_expr; +}; + + +/* GUCs */ +extern bool jit_enabled; +extern char *jit_provider; +extern bool jit_debugging_support; +extern bool jit_dump_bitcode; +extern bool jit_expressions; +extern bool jit_profiling_support; +extern bool jit_tuple_deforming; +extern double jit_above_cost; +extern double jit_inline_above_cost; +extern double jit_optimize_above_cost; + + +extern void jit_reset_after_error(void); +extern void jit_release_context(JitContext *context); + +/* + * Functions for attempting to JIT code. Callers must accept that these might + * not be able to perform JIT (i.e. return false). + */ +extern bool jit_compile_expr(struct ExprState *state); +extern void InstrJitAgg(JitInstrumentation *dst, JitInstrumentation *add); + + +#endif /* JIT_H */ diff --git a/parser/include/kwlist_d.h b/parser/include/kwlist_d.h new file mode 100644 index 00000000..d536e474 --- /dev/null +++ b/parser/include/kwlist_d.h @@ -0,0 +1,1072 @@ +/*------------------------------------------------------------------------- + * + * kwlist_d.h + * List of keywords represented as a ScanKeywordList. + * + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group + * Portions Copyright (c) 1994, Regents of the University of California + * + * NOTES + * ****************************** + * *** DO NOT EDIT THIS FILE! *** + * ****************************** + * + * It has been GENERATED by src/tools/gen_keywordlist.pl + * + *------------------------------------------------------------------------- + */ + +#ifndef KWLIST_D_H +#define KWLIST_D_H + +#include "common/kwlookup.h" + +static const char ScanKeywords_kw_string[] = + "abort\0" + "absolute\0" + "access\0" + "action\0" + "add\0" + "admin\0" + "after\0" + "aggregate\0" + "all\0" + "also\0" + "alter\0" + "always\0" + "analyse\0" + "analyze\0" + "and\0" + "any\0" + "array\0" + "as\0" + "asc\0" + "assertion\0" + "assignment\0" + "asymmetric\0" + "at\0" + "attach\0" + "attribute\0" + "authorization\0" + "backward\0" + "before\0" + "begin\0" + "between\0" + "bigint\0" + "binary\0" + "bit\0" + "boolean\0" + "both\0" + "by\0" + "cache\0" + "call\0" + "called\0" + "cascade\0" + "cascaded\0" + "case\0" + "cast\0" + "catalog\0" + "chain\0" + "char\0" + "character\0" + "characteristics\0" + "check\0" + "checkpoint\0" + "class\0" + "close\0" + "cluster\0" + "coalesce\0" + "collate\0" + "collation\0" + "column\0" + "columns\0" + "comment\0" + "comments\0" + "commit\0" + "committed\0" + "concurrently\0" + "configuration\0" + "conflict\0" + "connection\0" + "constraint\0" + "constraints\0" + "content\0" + "continue\0" + "conversion\0" + "copy\0" + "cost\0" + "create\0" + "cross\0" + "csv\0" + "cube\0" + "current\0" + "current_catalog\0" + "current_date\0" + "current_role\0" + "current_schema\0" + "current_time\0" + "current_timestamp\0" + "current_user\0" + "cursor\0" + "cycle\0" + "data\0" + "database\0" + "day\0" + "deallocate\0" + "dec\0" + "decimal\0" + "declare\0" + "default\0" + "defaults\0" + "deferrable\0" + "deferred\0" + "definer\0" + "delete\0" + "delimiter\0" + "delimiters\0" + "depends\0" + "desc\0" + "detach\0" + "dictionary\0" + "disable\0" + "discard\0" + "distinct\0" + "do\0" + "document\0" + "domain\0" + "double\0" + "drop\0" + "each\0" + "else\0" + "enable\0" + "encoding\0" + "encrypted\0" + "end\0" + "enum\0" + "escape\0" + "event\0" + "except\0" + "exclude\0" + "excluding\0" + "exclusive\0" + "execute\0" + "exists\0" + "explain\0" + "expression\0" + "extension\0" + "external\0" + "extract\0" + "false\0" + "family\0" + "fetch\0" + "filter\0" + "first\0" + "float\0" + "following\0" + "for\0" + "force\0" + "foreign\0" + "forward\0" + "freeze\0" + "from\0" + "full\0" + "function\0" + "functions\0" + "generated\0" + "global\0" + "grant\0" + "granted\0" + "greatest\0" + "group\0" + "grouping\0" + "groups\0" + "handler\0" + "having\0" + "header\0" + "hold\0" + "hour\0" + "identity\0" + "if\0" + "ilike\0" + "immediate\0" + "immutable\0" + "implicit\0" + "import\0" + "in\0" + "include\0" + "including\0" + "increment\0" + "index\0" + "indexes\0" + "inherit\0" + "inherits\0" + "initially\0" + "inline\0" + "inner\0" + "inout\0" + "input\0" + "insensitive\0" + "insert\0" + "instead\0" + "int\0" + "integer\0" + "intersect\0" + "interval\0" + "into\0" + "invoker\0" + "is\0" + "isnull\0" + "isolation\0" + "join\0" + "key\0" + "label\0" + "language\0" + "large\0" + "last\0" + "lateral\0" + "leading\0" + "leakproof\0" + "least\0" + "left\0" + "level\0" + "like\0" + "limit\0" + "listen\0" + "load\0" + "local\0" + "localtime\0" + "localtimestamp\0" + "location\0" + "lock\0" + "locked\0" + "logged\0" + "mapping\0" + "match\0" + "materialized\0" + "maxvalue\0" + "method\0" + "minute\0" + "minvalue\0" + "mode\0" + "month\0" + "move\0" + "name\0" + "names\0" + "national\0" + "natural\0" + "nchar\0" + "new\0" + "next\0" + "nfc\0" + "nfd\0" + "nfkc\0" + "nfkd\0" + "no\0" + "none\0" + "normalize\0" + "normalized\0" + "not\0" + "nothing\0" + "notify\0" + "notnull\0" + "nowait\0" + "null\0" + "nullif\0" + "nulls\0" + "numeric\0" + "object\0" + "of\0" + "off\0" + "offset\0" + "oids\0" + "old\0" + "on\0" + "only\0" + "operator\0" + "option\0" + "options\0" + "or\0" + "order\0" + "ordinality\0" + "others\0" + "out\0" + "outer\0" + "over\0" + "overlaps\0" + "overlay\0" + "overriding\0" + "owned\0" + "owner\0" + "parallel\0" + "parser\0" + "partial\0" + "partition\0" + "passing\0" + "password\0" + "placing\0" + "plans\0" + "policy\0" + "position\0" + "preceding\0" + "precision\0" + "prepare\0" + "prepared\0" + "preserve\0" + "primary\0" + "prior\0" + "privileges\0" + "procedural\0" + "procedure\0" + "procedures\0" + "program\0" + "publication\0" + "quote\0" + "range\0" + "read\0" + "real\0" + "reassign\0" + "recheck\0" + "recursive\0" + "ref\0" + "references\0" + "referencing\0" + "refresh\0" + "reindex\0" + "relative\0" + "release\0" + "rename\0" + "repeatable\0" + "replace\0" + "replica\0" + "reset\0" + "restart\0" + "restrict\0" + "returning\0" + "returns\0" + "revoke\0" + "right\0" + "role\0" + "rollback\0" + "rollup\0" + "routine\0" + "routines\0" + "row\0" + "rows\0" + "rule\0" + "savepoint\0" + "schema\0" + "schemas\0" + "scroll\0" + "search\0" + "second\0" + "security\0" + "select\0" + "sequence\0" + "sequences\0" + "serializable\0" + "server\0" + "session\0" + "session_user\0" + "set\0" + "setof\0" + "sets\0" + "share\0" + "show\0" + "similar\0" + "simple\0" + "skip\0" + "smallint\0" + "snapshot\0" + "some\0" + "sql\0" + "stable\0" + "standalone\0" + "start\0" + "statement\0" + "statistics\0" + "stdin\0" + "stdout\0" + "storage\0" + "stored\0" + "strict\0" + "strip\0" + "subscription\0" + "substring\0" + "support\0" + "symmetric\0" + "sysid\0" + "system\0" + "table\0" + "tables\0" + "tablesample\0" + "tablespace\0" + "temp\0" + "template\0" + "temporary\0" + "text\0" + "then\0" + "ties\0" + "time\0" + "timestamp\0" + "to\0" + "trailing\0" + "transaction\0" + "transform\0" + "treat\0" + "trigger\0" + "trim\0" + "true\0" + "truncate\0" + "trusted\0" + "type\0" + "types\0" + "uescape\0" + "unbounded\0" + "uncommitted\0" + "unencrypted\0" + "union\0" + "unique\0" + "unknown\0" + "unlisten\0" + "unlogged\0" + "until\0" + "update\0" + "user\0" + "using\0" + "vacuum\0" + "valid\0" + "validate\0" + "validator\0" + "value\0" + "values\0" + "varchar\0" + "variadic\0" + "varying\0" + "verbose\0" + "version\0" + "view\0" + "views\0" + "volatile\0" + "when\0" + "where\0" + "whitespace\0" + "window\0" + "with\0" + "within\0" + "without\0" + "work\0" + "wrapper\0" + "write\0" + "xml\0" + "xmlattributes\0" + "xmlconcat\0" + "xmlelement\0" + "xmlexists\0" + "xmlforest\0" + "xmlnamespaces\0" + "xmlparse\0" + "xmlpi\0" + "xmlroot\0" + "xmlserialize\0" + "xmltable\0" + "year\0" + "yes\0" + "zone"; + +static const uint16 ScanKeywords_kw_offsets[] = { + 0, + 6, + 15, + 22, + 29, + 33, + 39, + 45, + 55, + 59, + 64, + 70, + 77, + 85, + 93, + 97, + 101, + 107, + 110, + 114, + 124, + 135, + 146, + 149, + 156, + 166, + 180, + 189, + 196, + 202, + 210, + 217, + 224, + 228, + 236, + 241, + 244, + 250, + 255, + 262, + 270, + 279, + 284, + 289, + 297, + 303, + 308, + 318, + 334, + 340, + 351, + 357, + 363, + 371, + 380, + 388, + 398, + 405, + 413, + 421, + 430, + 437, + 447, + 460, + 474, + 483, + 494, + 505, + 517, + 525, + 534, + 545, + 550, + 555, + 562, + 568, + 572, + 577, + 585, + 601, + 614, + 627, + 642, + 655, + 673, + 686, + 693, + 699, + 704, + 713, + 717, + 728, + 732, + 740, + 748, + 756, + 765, + 776, + 785, + 793, + 800, + 810, + 821, + 829, + 834, + 841, + 852, + 860, + 868, + 877, + 880, + 889, + 896, + 903, + 908, + 913, + 918, + 925, + 934, + 944, + 948, + 953, + 960, + 966, + 973, + 981, + 991, + 1001, + 1009, + 1016, + 1024, + 1035, + 1045, + 1054, + 1062, + 1068, + 1075, + 1081, + 1088, + 1094, + 1100, + 1110, + 1114, + 1120, + 1128, + 1136, + 1143, + 1148, + 1153, + 1162, + 1172, + 1182, + 1189, + 1195, + 1203, + 1212, + 1218, + 1227, + 1234, + 1242, + 1249, + 1256, + 1261, + 1266, + 1275, + 1278, + 1284, + 1294, + 1304, + 1313, + 1320, + 1323, + 1331, + 1341, + 1351, + 1357, + 1365, + 1373, + 1382, + 1392, + 1399, + 1405, + 1411, + 1417, + 1429, + 1436, + 1444, + 1448, + 1456, + 1466, + 1475, + 1480, + 1488, + 1491, + 1498, + 1508, + 1513, + 1517, + 1523, + 1532, + 1538, + 1543, + 1551, + 1559, + 1569, + 1575, + 1580, + 1586, + 1591, + 1597, + 1604, + 1609, + 1615, + 1625, + 1640, + 1649, + 1654, + 1661, + 1668, + 1676, + 1682, + 1695, + 1704, + 1711, + 1718, + 1727, + 1732, + 1738, + 1743, + 1748, + 1754, + 1763, + 1771, + 1777, + 1781, + 1786, + 1790, + 1794, + 1799, + 1804, + 1807, + 1812, + 1822, + 1833, + 1837, + 1845, + 1852, + 1860, + 1867, + 1872, + 1879, + 1885, + 1893, + 1900, + 1903, + 1907, + 1914, + 1919, + 1923, + 1926, + 1931, + 1940, + 1947, + 1955, + 1958, + 1964, + 1975, + 1982, + 1986, + 1992, + 1997, + 2006, + 2014, + 2025, + 2031, + 2037, + 2046, + 2053, + 2061, + 2071, + 2079, + 2088, + 2096, + 2102, + 2109, + 2118, + 2128, + 2138, + 2146, + 2155, + 2164, + 2172, + 2178, + 2189, + 2200, + 2210, + 2221, + 2229, + 2241, + 2247, + 2253, + 2258, + 2263, + 2272, + 2280, + 2290, + 2294, + 2305, + 2317, + 2325, + 2333, + 2342, + 2350, + 2357, + 2368, + 2376, + 2384, + 2390, + 2398, + 2407, + 2417, + 2425, + 2432, + 2438, + 2443, + 2452, + 2459, + 2467, + 2476, + 2480, + 2485, + 2490, + 2500, + 2507, + 2515, + 2522, + 2529, + 2536, + 2545, + 2552, + 2561, + 2571, + 2584, + 2591, + 2599, + 2612, + 2616, + 2622, + 2627, + 2633, + 2638, + 2646, + 2653, + 2658, + 2667, + 2676, + 2681, + 2685, + 2692, + 2703, + 2709, + 2719, + 2730, + 2736, + 2743, + 2751, + 2758, + 2765, + 2771, + 2784, + 2794, + 2802, + 2812, + 2818, + 2825, + 2831, + 2838, + 2850, + 2861, + 2866, + 2875, + 2885, + 2890, + 2895, + 2900, + 2905, + 2915, + 2918, + 2927, + 2939, + 2949, + 2955, + 2963, + 2968, + 2973, + 2982, + 2990, + 2995, + 3001, + 3009, + 3019, + 3031, + 3043, + 3049, + 3056, + 3064, + 3073, + 3082, + 3088, + 3095, + 3100, + 3106, + 3113, + 3119, + 3128, + 3138, + 3144, + 3151, + 3159, + 3168, + 3176, + 3184, + 3192, + 3197, + 3203, + 3212, + 3217, + 3223, + 3234, + 3241, + 3246, + 3253, + 3261, + 3266, + 3274, + 3280, + 3284, + 3298, + 3308, + 3319, + 3329, + 3339, + 3353, + 3362, + 3368, + 3376, + 3389, + 3398, + 3403, + 3407, +}; + +#define SCANKEYWORDS_NUM_KEYWORDS 450 + +static int +ScanKeywords_hash_func(const void *key, size_t keylen) +{ + static const int16 h[901] = { + -172, 32767, 32767, 32767, 0, 56, 362, 32767, + 0, 90, -251, 332, 32767, 66, 298, 0, + 32767, 88, 27, 22, -125, 317, 0, 32767, + -35, 0, 32767, 32767, 32767, 52, 32767, 275, + 32767, -277, 32767, 32767, 316, 177, 32767, 0, + 398, 58, 272, -88, 0, -147, 242, 143, + 401, 0, 32767, 0, 293, 355, 0, 0, + 303, 32767, 225, 580, 0, 378, 0, 0, + 32767, -25, -312, 32767, -210, 0, 32767, -19, + 32767, 91, 307, 354, 32767, 32767, -18, 36, + 32767, 32767, 402, 292, 165, 274, 0, 32767, + 10, -20, 32767, 294, 32767, -622, 326, 32767, + -128, 0, 33, 32767, 32767, 325, 32767, 276, + 343, 32767, 96, 173, 32767, 32767, 32767, 0, + 32767, 320, -128, 32767, 357, 24, -9, 427, + 32767, 32767, 0, 32767, 0, 0, 32767, 32767, + 405, 32767, 125, 32767, 0, 32767, -40, 32767, + 0, 80, 0, 32767, 0, 95, -146, 0, + 32767, 26, 165, 32767, 41, 32767, 418, 32767, + 32767, 40, 32767, 147, 32767, 32767, 32767, 91, + 110, 9, 305, -340, 32767, 103, 32767, 0, + 329, 32767, 32767, 310, 32767, 32767, 147, -262, + 422, 393, 382, 136, 32767, 177, 0, 32767, + 32767, 102, 0, 32767, 83, 141, 28, 167, + -421, 32767, 38, 111, 0, 479, 32767, 32767, + 29, 439, 32767, 427, -6, 182, 32767, 74, + 32767, 360, 236, 32767, 32767, 327, -63, 162, + 154, 184, 90, 263, 115, 127, 539, 347, + -72, 32767, -159, 32767, -249, 152, 32767, 357, + 404, -110, 32767, 404, 345, 32767, 80, 352, + 422, 61, 32767, 32767, 32767, 243, 126, 117, + 32767, 0, 32767, 32767, 208, 32767, 32767, -20, + 430, -195, 32767, 32767, 32767, 118, -62, 32767, + 32767, 98, 136, 0, 0, 32767, 261, 32767, + 0, 32767, 230, 37, 750, 154, 32767, -86, + 87, 32767, 6, 61, 32767, 205, 32767, 517, + 107, 66, 304, 32767, 0, 32767, 32767, 32767, + 333, 32767, 357, 239, 32767, 32767, 437, -26, + 32767, 210, 0, 20, 369, 10, 32767, -78, + 616, 70, 0, 32767, 86, 32767, 0, 32767, + 14, 60, 32, 32767, 373, 32767, -218, 320, + 32767, 268, 32767, 32767, 425, -67, 0, 32767, + 252, 32767, -93, 193, -362, -140, 32767, -328, + 32767, 0, 319, 336, 32767, 121, 0, 32767, + 207, 32767, 481, -176, 276, 47, 235, 32767, + 0, 221, 32767, 228, 32767, 84, 32767, 32767, + 32767, 32767, 32767, 32767, 290, 32767, 32767, 84, + -170, 82, 246, -43, 201, 155, -7, 299, + 32767, 32767, 241, 32767, -418, 32767, 32767, -303, + 32767, 32767, -40, 308, 32767, 0, 178, -67, + 32767, 273, 32767, 0, 32767, 69, 387, 32767, + 341, 0, 0, -19, 324, -88, 166, 32767, + 6, 20, 32767, 17, 22, 359, 32767, 32767, + 172, 0, 32767, 0, 206, 88, 0, 32767, + 35, 0, 275, 114, 339, 32767, 32767, 32767, + 32767, 32767, 524, 0, -52, 191, -115, 9, + 200, 102, 0, 32767, 3, 0, 0, 0, + -288, 0, -132, 32767, 0, 32767, 300, 0, + 0, 0, 212, 32767, 260, 32767, -279, 104, + 506, 0, 640, 38, 268, 32767, 131, 32767, + 32767, 32767, 32767, 0, 0, 32767, 32767, 18, + 100, 44, 67, 270, 245, 283, 224, -66, + 32767, 32767, 32767, -67, 32767, 389, 32767, 0, + 125, 354, 32767, 32767, -21, 124, 0, 204, + 32767, 0, 99, 32767, 267, 32767, 0, 32767, + 32767, 231, 32767, -129, -113, 108, 23, 0, + 0, 32767, 32767, 0, 32767, 269, 32767, 32767, + -133, 32767, -384, 32767, 32767, 0, 32767, 32767, + 32767, 0, 32767, 32767, 32767, 0, 322, 424, + 117, -29, 32767, 32767, 145, 0, 0, 323, + 119, 32767, 32767, 32767, 392, -164, -143, -25, + -106, 0, 97, 32767, 32767, 235, 32767, 0, + 32767, 411, 363, 32767, 31, 32767, 443, 32767, + 76, 29, 32767, 323, 32767, 142, 32767, 0, + 244, 0, 32767, 28, 32767, 0, 377, -8, + -45, 32767, 37, 0, 350, 0, 32767, 32767, + 38, 416, 32767, 265, -78, -308, -51, 705, + 32767, 32767, 0, 66, 0, 32767, 32767, 32767, + 81, -250, 32767, 1, 421, 32767, 32767, 0, + 32767, 401, 198, 32767, 256, 290, 210, 32767, + 32767, 32767, 32767, 0, 444, 211, -99, 220, + 64, 32767, 32767, 32767, 32767, 190, 19, 0, + 216, 32767, 262, 32767, 404, 562, -222, 0, + 0, -162, 32767, 192, 65, 32767, 150, 191, + 0, 218, 267, 32767, 32767, 32767, 399, 189, + 356, 532, 0, 32767, 429, 32767, 32767, 54, + 279, 151, 0, 353, 394, 176, 215, 32767, + 15, 153, 137, 92, 420, 47, 253, 0, + 298, 32767, 32767, 32767, 234, 164, 241, 32767, + 0, 409, 0, 32767, 0, 32767, 0, 70, + 32767, 32767, 32767, 0, 32767, 32767, 32767, -138, + 32767, 32767, -46, 32767, 97, 32767, 0, -126, + 32767, 169, 322, 392, 32767, 0, 32767, 32767, + 0, 282, 296, 32767, 0, 403, 32767, -24, + 32767, -34, 32767, 32767, 32767, 418, 32767, 0, + 97, 238, 32767, 144, 428, 32767, 2, 32767, + 32767, 32767, 194, -182, 12, 32767, 391, 32767, + 880, 32767, 32767, 50, 331, 0, 0, 358, + 20, 32767, 32767, 222, 317, 32767, 0, 125, + 32767, 0, 32767, 284, 32767, 32767, 197, 0, + 63, 32767, 0, 188, 32767, 32767, 147, 190, + 344, 32767, -42, 32767, 0, 187, 32767, 32767, + 350, 32767, 0, 0, 127, 32767, 32767, 161, + 32767, 0, 0, 382, 32767, 32767, 316, 130, + 32767, 379, 32767, 383, 368, 93, -195, 0, + 233, 73, 32767, 100, 32767, 338, 90, 32767, + 258, 32767, 32767, 235, 175, 32767, 32767, 0, + -9, 0, 0, 32767, 32767, 111, 417, 330, + 0, 0, 225, 32767, 0, 0, 32767, 0, + 64, 32767, 32767, 16, 113, 29, 0, 32767, + 32767, 0, 43, 0, 365, -41, -284, 0, + 0, 0, 61, 314, 255, 0, 32767, 145, + 32767, -445, 32767, 32767, 154, + }; + + const unsigned char *k = (const unsigned char *) key; + uint32 a = 0; + uint32 b = 3; + + while (keylen--) + { + unsigned char c = *k++ | 0x20; + + a = a * 31 + c; + b = b * 127 + c; + } + return h[a % 901] + h[b % 901]; +} + +const ScanKeywordList ScanKeywords = { + ScanKeywords_kw_string, + ScanKeywords_kw_offsets, + ScanKeywords_hash_func, + SCANKEYWORDS_NUM_KEYWORDS, + 17 +}; + +#endif /* KWLIST_D_H */ diff --git a/parser/include/lib/ilist.h b/parser/include/lib/ilist.h index e5ac5c21..98db885f 100644 --- a/parser/include/lib/ilist.h +++ b/parser/include/lib/ilist.h @@ -96,7 +96,7 @@ * } * * - * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * IDENTIFICATION diff --git a/parser/include/lib/pairingheap.h b/parser/include/lib/pairingheap.h index e3a75f51..7c5c0f76 100644 --- a/parser/include/lib/pairingheap.h +++ b/parser/include/lib/pairingheap.h @@ -3,7 +3,7 @@ * * A Pairing Heap implementation * - * Portions Copyright (c) 2012-2017, PostgreSQL Global Development Group + * Portions Copyright (c) 2012-2020, PostgreSQL Global Development Group * * src/include/lib/pairingheap.h */ @@ -76,7 +76,7 @@ typedef struct pairingheap } pairingheap; extern pairingheap *pairingheap_allocate(pairingheap_comparator compare, - void *arg); + void *arg); extern void pairingheap_free(pairingheap *heap); extern void pairingheap_add(pairingheap *heap, pairingheap_node *node); extern pairingheap_node *pairingheap_first(pairingheap *heap); @@ -85,8 +85,8 @@ extern void pairingheap_remove(pairingheap *heap, pairingheap_node *node); #ifdef PAIRINGHEAP_DEBUG extern char *pairingheap_dump(pairingheap *heap, - void (*dumpfunc) (pairingheap_node *node, StringInfo buf, void *opaque), - void *opaque); + void (*dumpfunc) (pairingheap_node *node, StringInfo buf, void *opaque), + void *opaque); #endif /* Resets the heap to be empty. */ diff --git a/parser/include/lib/simplehash.h b/parser/include/lib/simplehash.h index 5273d494..90dfa8a6 100644 --- a/parser/include/lib/simplehash.h +++ b/parser/include/lib/simplehash.h @@ -23,6 +23,8 @@ * - SH_DEFINE - if defined function definitions are generated * - SH_SCOPE - in which scope (e.g. extern, static inline) do function * declarations reside + * - SH_RAW_ALLOCATOR - if defined, memory contexts are not used; instead, + * use this to allocate bytes * - SH_USE_NONDEFAULT_ALLOCATOR - if defined no element allocator functions * are defined, so you can supply your own * The following parameters are only relevant when SH_DEFINE is defined: @@ -32,7 +34,7 @@ * - SH_STORE_HASH - if defined the hash is stored in the elements * - SH_GET_HASH(tb, a) - return the field to store the hash in * - * For examples of usage look at simplehash.c (file local definition) and + * For examples of usage look at tidbitmap.c (file local definition) and * execnodes.h/execGrouping.c (exposed declaration, file local * implementation). * @@ -55,6 +57,8 @@ * backwards, unless they're empty or already at their optimal position. */ +#include "port/pg_bitutils.h" + /* helpers */ #define SH_MAKE_PREFIX(a) CppConcat(a,_) #define SH_MAKE_NAME(name) SH_MAKE_NAME_(SH_MAKE_PREFIX(SH_PREFIX),name) @@ -65,16 +69,19 @@ /* type declarations */ #define SH_TYPE SH_MAKE_NAME(hash) #define SH_STATUS SH_MAKE_NAME(status) -#define SH_STATUS_EMPTY SH_MAKE_NAME(EMPTY) -#define SH_STATUS_IN_USE SH_MAKE_NAME(IN_USE) +#define SH_STATUS_EMPTY SH_MAKE_NAME(SH_EMPTY) +#define SH_STATUS_IN_USE SH_MAKE_NAME(SH_IN_USE) #define SH_ITERATOR SH_MAKE_NAME(iterator) /* function declarations */ #define SH_CREATE SH_MAKE_NAME(create) #define SH_DESTROY SH_MAKE_NAME(destroy) +#define SH_RESET SH_MAKE_NAME(reset) #define SH_INSERT SH_MAKE_NAME(insert) +#define SH_INSERT_HASH SH_MAKE_NAME(insert_hash) #define SH_DELETE SH_MAKE_NAME(delete) #define SH_LOOKUP SH_MAKE_NAME(lookup) +#define SH_LOOKUP_HASH SH_MAKE_NAME(lookup_hash) #define SH_GROW SH_MAKE_NAME(grow) #define SH_START_ITERATE SH_MAKE_NAME(start_iterate) #define SH_START_ITERATE_AT SH_MAKE_NAME(start_iterate_at) @@ -90,6 +97,8 @@ #define SH_DISTANCE_FROM_OPTIMAL SH_MAKE_NAME(distance) #define SH_INITIAL_BUCKET SH_MAKE_NAME(initial_bucket) #define SH_ENTRY_HASH SH_MAKE_NAME(entry_hash) +#define SH_INSERT_HASH_INTERNAL SH_MAKE_NAME(insert_hash_internal) +#define SH_LOOKUP_HASH_INTERNAL SH_MAKE_NAME(lookup_hash_internal) /* generate forward declarations necessary to use the hash table */ #ifdef SH_DECLARE @@ -116,8 +125,10 @@ typedef struct SH_TYPE /* hash buckets */ SH_ELEMENT_TYPE *data; +#ifndef SH_RAW_ALLOCATOR /* memory context to use for allocations */ MemoryContext ctx; +#endif /* user defined data, useful for callbacks */ void *private_data; @@ -137,12 +148,21 @@ typedef struct SH_ITERATOR } SH_ITERATOR; /* externally visible function prototypes */ +#ifdef SH_RAW_ALLOCATOR +SH_SCOPE SH_TYPE *SH_CREATE(uint32 nelements, void *private_data); +#else SH_SCOPE SH_TYPE *SH_CREATE(MemoryContext ctx, uint32 nelements, - void *private_data); + void *private_data); +#endif SH_SCOPE void SH_DESTROY(SH_TYPE * tb); +SH_SCOPE void SH_RESET(SH_TYPE * tb); SH_SCOPE void SH_GROW(SH_TYPE * tb, uint32 newsize); SH_SCOPE SH_ELEMENT_TYPE *SH_INSERT(SH_TYPE * tb, SH_KEY_TYPE key, bool *found); +SH_SCOPE SH_ELEMENT_TYPE *SH_INSERT_HASH(SH_TYPE * tb, SH_KEY_TYPE key, + uint32 hash, bool *found); SH_SCOPE SH_ELEMENT_TYPE *SH_LOOKUP(SH_TYPE * tb, SH_KEY_TYPE key); +SH_SCOPE SH_ELEMENT_TYPE *SH_LOOKUP_HASH(SH_TYPE * tb, SH_KEY_TYPE key, + uint32 hash); SH_SCOPE bool SH_DELETE(SH_TYPE * tb, SH_KEY_TYPE key); SH_SCOPE void SH_START_ITERATE(SH_TYPE * tb, SH_ITERATOR * iter); SH_SCOPE void SH_START_ITERATE_AT(SH_TYPE * tb, SH_ITERATOR * iter, uint32 at); @@ -155,7 +175,9 @@ SH_SCOPE void SH_STAT(SH_TYPE * tb); /* generate implementation of the hash table */ #ifdef SH_DEFINE +#ifndef SH_RAW_ALLOCATOR #include "utils/memutils.h" +#endif /* max data array size,we allow up to PG_UINT32_MAX buckets, including 0 */ #define SH_MAX_SIZE (((uint64) PG_UINT32_MAX) + 1) @@ -185,26 +207,25 @@ SH_SCOPE void SH_STAT(SH_TYPE * tb); #define SH_COMPARE_KEYS(tb, ahash, akey, b) (SH_EQUAL(tb, b->SH_KEY, akey)) #endif -/* FIXME: can we move these to a central location? */ - -/* calculate ceil(log base 2) of num */ -static inline uint64 -sh_log2(uint64 num) -{ - int i; - uint64 limit; +/* + * Wrap the following definitions in include guards, to avoid multiple + * definition errors if this header is included more than once. The rest of + * the file deliberately has no include guards, because it can be included + * with different parameters to define functions and types with non-colliding + * names. + */ +#ifndef SIMPLEHASH_H +#define SIMPLEHASH_H - for (i = 0, limit = 1; limit < num; i++, limit <<= 1) - ; - return i; -} +#ifdef FRONTEND +#define sh_error(...) pg_log_error(__VA_ARGS__) +#define sh_log(...) pg_log_info(__VA_ARGS__) +#else +#define sh_error(...) elog(ERROR, __VA_ARGS__) +#define sh_log(...) elog(LOG, __VA_ARGS__) +#endif -/* calculate first power of 2 >= num */ -static inline uint64 -sh_pow2(uint64 num) -{ - return ((uint64) 1) << sh_log2(num); -} +#endif /* * Compute sizing parameters for hashtable. Called when creating and growing @@ -219,15 +240,15 @@ SH_COMPUTE_PARAMETERS(SH_TYPE * tb, uint32 newsize) size = Max(newsize, 2); /* round up size to the next power of 2, that's how bucketing works */ - size = sh_pow2(size); + size = pg_nextpower2_64(size); Assert(size <= SH_MAX_SIZE); /* * Verify that allocation of ->data is possible on this platform, without * overflowing Size. */ - if ((((uint64) sizeof(SH_ELEMENT_TYPE)) * size) >= MaxAllocHugeSize) - elog(ERROR, "hash table too large"); + if ((((uint64) sizeof(SH_ELEMENT_TYPE)) * size) >= SIZE_MAX / 2) + sh_error("hash table too large"); /* now set size */ tb->size = size; @@ -306,8 +327,12 @@ static inline void SH_FREE(SH_TYPE * type, void *pointer); static inline void * SH_ALLOCATE(SH_TYPE * type, Size size) { +#ifdef SH_RAW_ALLOCATOR + return SH_RAW_ALLOCATOR(size); +#else return MemoryContextAllocExtended(type->ctx, size, MCXT_ALLOC_HUGE | MCXT_ALLOC_ZERO); +#endif } /* default memory free function */ @@ -328,14 +353,23 @@ SH_FREE(SH_TYPE * type, void *pointer) * Memory other than for the array of elements will still be allocated from * the passed-in context. */ +#ifdef SH_RAW_ALLOCATOR +SH_SCOPE SH_TYPE * +SH_CREATE(uint32 nelements, void *private_data) +#else SH_SCOPE SH_TYPE * SH_CREATE(MemoryContext ctx, uint32 nelements, void *private_data) +#endif { SH_TYPE *tb; uint64 size; +#ifdef SH_RAW_ALLOCATOR + tb = SH_RAW_ALLOCATOR(sizeof(SH_TYPE)); +#else tb = MemoryContextAllocZero(ctx, sizeof(SH_TYPE)); tb->ctx = ctx; +#endif tb->private_data = private_data; /* increase nelements by fillfactor, want to store nelements elements */ @@ -356,6 +390,14 @@ SH_DESTROY(SH_TYPE * tb) pfree(tb); } +/* reset the contents of a previously created hash table */ +SH_SCOPE void +SH_RESET(SH_TYPE * tb) +{ + memset(tb->data, 0, sizeof(SH_ELEMENT_TYPE) * tb->size); + tb->members = 0; +} + /* * Grow a hash table to at least `newsize` buckets. * @@ -373,7 +415,7 @@ SH_GROW(SH_TYPE * tb, uint32 newsize) uint32 startelem = 0; uint32 copyelem; - Assert(oldsize == sh_pow2(oldsize)); + Assert(oldsize == pg_nextpower2_64(oldsize)); Assert(oldsize != SH_MAX_SIZE); Assert(oldsize < newsize); @@ -470,14 +512,12 @@ SH_GROW(SH_TYPE * tb, uint32 newsize) } /* - * Insert the key key into the hash-table, set *found to true if the key - * already exists, false otherwise. Returns the hash-table entry in either - * case. + * This is a separate static inline function, so it can be reliably be inlined + * into its wrapper functions even if SH_SCOPE is extern. */ -SH_SCOPE SH_ELEMENT_TYPE * -SH_INSERT(SH_TYPE * tb, SH_KEY_TYPE key, bool *found) +static inline SH_ELEMENT_TYPE * +SH_INSERT_HASH_INTERNAL(SH_TYPE * tb, SH_KEY_TYPE key, uint32 hash, bool *found) { - uint32 hash = SH_HASH_KEY(tb, key); uint32 startelem; uint32 curelem; SH_ELEMENT_TYPE *data; @@ -498,7 +538,7 @@ SH_INSERT(SH_TYPE * tb, SH_KEY_TYPE key, bool *found) { if (tb->size == SH_MAX_SIZE) { - elog(ERROR, "hash table size exceeded"); + sh_error("hash table size exceeded"); } /* @@ -593,7 +633,7 @@ SH_INSERT(SH_TYPE * tb, SH_KEY_TYPE key, bool *found) /* shift forward, starting at last occupied element */ /* - * TODO: This could be optimized to be one memcpy in may cases, + * TODO: This could be optimized to be one memcpy in many cases, * excepting wrapping around at the end of ->data. Hasn't shown up * in profiles so far though. */ @@ -642,12 +682,36 @@ SH_INSERT(SH_TYPE * tb, SH_KEY_TYPE key, bool *found) } /* - * Lookup up entry in hash table. Returns NULL if key not present. + * Insert the key key into the hash-table, set *found to true if the key + * already exists, false otherwise. Returns the hash-table entry in either + * case. */ SH_SCOPE SH_ELEMENT_TYPE * -SH_LOOKUP(SH_TYPE * tb, SH_KEY_TYPE key) +SH_INSERT(SH_TYPE * tb, SH_KEY_TYPE key, bool *found) { uint32 hash = SH_HASH_KEY(tb, key); + + return SH_INSERT_HASH_INTERNAL(tb, key, hash, found); +} + +/* + * Insert the key key into the hash-table using an already-calculated + * hash. Set *found to true if the key already exists, false + * otherwise. Returns the hash-table entry in either case. + */ +SH_SCOPE SH_ELEMENT_TYPE * +SH_INSERT_HASH(SH_TYPE * tb, SH_KEY_TYPE key, uint32 hash, bool *found) +{ + return SH_INSERT_HASH_INTERNAL(tb, key, hash, found); +} + +/* + * This is a separate static inline function, so it can be reliably be inlined + * into its wrapper functions even if SH_SCOPE is extern. + */ +static inline SH_ELEMENT_TYPE * +SH_LOOKUP_HASH_INTERNAL(SH_TYPE * tb, SH_KEY_TYPE key, uint32 hash) +{ const uint32 startelem = SH_INITIAL_BUCKET(tb, hash); uint32 curelem = startelem; @@ -676,6 +740,28 @@ SH_LOOKUP(SH_TYPE * tb, SH_KEY_TYPE key) } } +/* + * Lookup up entry in hash table. Returns NULL if key not present. + */ +SH_SCOPE SH_ELEMENT_TYPE * +SH_LOOKUP(SH_TYPE * tb, SH_KEY_TYPE key) +{ + uint32 hash = SH_HASH_KEY(tb, key); + + return SH_LOOKUP_HASH_INTERNAL(tb, key, hash); +} + +/* + * Lookup up entry in hash table using an already-calculated hash. + * + * Returns NULL if key not present. + */ +SH_SCOPE SH_ELEMENT_TYPE * +SH_LOOKUP_HASH(SH_TYPE * tb, SH_KEY_TYPE key, uint32 hash) +{ + return SH_LOOKUP_HASH_INTERNAL(tb, key, hash); +} + /* * Delete entry from hash table. Returns whether to-be-deleted key was * present. @@ -904,9 +990,9 @@ SH_STAT(SH_TYPE * tb) avg_collisions = 0; } - elog(LOG, "size: " UINT64_FORMAT ", members: %u, filled: %f, total chain: %u, max chain: %u, avg chain: %f, total_collisions: %u, max_collisions: %i, avg_collisions: %f", - tb->size, tb->members, fillfactor, total_chain_length, max_chain_length, avg_chain_length, - total_collisions, max_collisions, avg_collisions); + sh_log("size: " UINT64_FORMAT ", members: %u, filled: %f, total chain: %u, max chain: %u, avg chain: %f, total_collisions: %u, max_collisions: %i, avg_collisions: %f", + tb->size, tb->members, fillfactor, total_chain_length, max_chain_length, avg_chain_length, + total_collisions, max_collisions, avg_collisions); } #endif /* SH_DEFINE */ @@ -924,6 +1010,7 @@ SH_STAT(SH_TYPE * tb) #undef SH_GET_HASH #undef SH_STORE_HASH #undef SH_USE_NONDEFAULT_ALLOCATOR +#undef SH_EQUAL /* undefine locally declared macros */ #undef SH_MAKE_PREFIX @@ -946,9 +1033,12 @@ SH_STAT(SH_TYPE * tb) /* external function names */ #undef SH_CREATE #undef SH_DESTROY +#undef SH_RESET #undef SH_INSERT +#undef SH_INSERT_HASH #undef SH_DELETE #undef SH_LOOKUP +#undef SH_LOOKUP_HASH #undef SH_GROW #undef SH_START_ITERATE #undef SH_START_ITERATE_AT @@ -965,3 +1055,5 @@ SH_STAT(SH_TYPE * tb) #undef SH_PREV #undef SH_DISTANCE_FROM_OPTIMAL #undef SH_ENTRY_HASH +#undef SH_INSERT_HASH_INTERNAL +#undef SH_LOOKUP_HASH_INTERNAL diff --git a/parser/include/lib/stringinfo.h b/parser/include/lib/stringinfo.h index 9694ea3f..5a2a3dbf 100644 --- a/parser/include/lib/stringinfo.h +++ b/parser/include/lib/stringinfo.h @@ -3,11 +3,12 @@ * stringinfo.h * Declarations/definitions for "StringInfo" functions. * - * StringInfo provides an indefinitely-extensible string data type. - * It can be used to buffer either ordinary C strings (null-terminated text) - * or arbitrary binary data. All storage is allocated with palloc(). + * StringInfo provides an extensible string data type (currently limited to a + * length of 1GB). It can be used to buffer either ordinary C strings + * (null-terminated text) or arbitrary binary data. All storage is allocated + * with palloc() (falling back to malloc in frontend code). * - * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/lib/stringinfo.h @@ -141,7 +142,15 @@ extern void appendStringInfoSpaces(StringInfo str, int count); * if necessary. */ extern void appendBinaryStringInfo(StringInfo str, - const char *data, int datalen); + const char *data, int datalen); + +/*------------------------ + * appendBinaryStringInfoNT + * Append arbitrary binary data to a StringInfo, allocating more space + * if necessary. Does not ensure a trailing null-byte exists. + */ +extern void appendBinaryStringInfoNT(StringInfo str, + const char *data, int datalen); /*------------------------ * enlargeStringInfo diff --git a/parser/include/libpq/auth.h b/parser/include/libpq/auth.h index 871cc03a..81202e60 100644 --- a/parser/include/libpq/auth.h +++ b/parser/include/libpq/auth.h @@ -4,7 +4,7 @@ * Definitions for network authentication routines * * - * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/libpq/auth.h diff --git a/parser/include/libpq/be-fsstubs.h b/parser/include/libpq/be-fsstubs.h deleted file mode 100644 index 96bcaa0f..00000000 --- a/parser/include/libpq/be-fsstubs.h +++ /dev/null @@ -1,37 +0,0 @@ -/*------------------------------------------------------------------------- - * - * be-fsstubs.h - * - * - * - * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group - * Portions Copyright (c) 1994, Regents of the University of California - * - * src/include/libpq/be-fsstubs.h - * - *------------------------------------------------------------------------- - */ -#ifndef BE_FSSTUBS_H -#define BE_FSSTUBS_H - -/* - * compatibility option for access control - */ -extern bool lo_compat_privileges; - -/* - * These are not fmgr-callable, but are available to C code. - * Probably these should have had the underscore-free names, - * but too late now... - */ -extern int lo_read(int fd, char *buf, int len); -extern int lo_write(int fd, const char *buf, int len); - -/* - * Cleanup LOs at xact commit/abort - */ -extern void AtEOXact_LargeObject(bool isCommit); -extern void AtEOSubXact_LargeObject(bool isCommit, SubTransactionId mySubid, - SubTransactionId parentSubid); - -#endif /* BE_FSSTUBS_H */ diff --git a/parser/include/libpq/crypt.h b/parser/include/libpq/crypt.h index 9bad67c8..0c99e6c1 100644 --- a/parser/include/libpq/crypt.h +++ b/parser/include/libpq/crypt.h @@ -3,7 +3,7 @@ * crypt.h * Interface to libpq/crypt.c * - * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/libpq/crypt.h @@ -16,7 +16,7 @@ #include "datatype/timestamp.h" /* - * Types of password hashes or verifiers. + * Types of password hashes or secrets. * * Plaintext passwords can be passed in by the user, in a CREATE/ALTER USER * command. They will be encrypted to MD5 or SCRAM-SHA-256 format, before @@ -33,14 +33,14 @@ typedef enum PasswordType extern PasswordType get_password_type(const char *shadow_pass); extern char *encrypt_password(PasswordType target_type, const char *role, - const char *password); + const char *password); extern char *get_role_password(const char *role, char **logdetail); -extern int md5_crypt_verify(const char *role, const char *shadow_pass, - const char *client_pass, const char *md5_salt, - int md5_salt_len, char **logdetail); -extern int plain_crypt_verify(const char *role, const char *shadow_pass, - const char *client_pass, char **logdetail); +extern int md5_crypt_verify(const char *role, const char *shadow_pass, + const char *client_pass, const char *md5_salt, + int md5_salt_len, char **logdetail); +extern int plain_crypt_verify(const char *role, const char *shadow_pass, + const char *client_pass, char **logdetail); #endif diff --git a/parser/include/libpq/hba.h b/parser/include/libpq/hba.h index c20076bf..c194d74c 100644 --- a/parser/include/libpq/hba.h +++ b/parser/include/libpq/hba.h @@ -59,9 +59,18 @@ typedef enum ConnType ctLocal, ctHost, ctHostSSL, - ctHostNoSSL + ctHostNoSSL, + ctHostGSS, + ctHostNoGSS, } ConnType; +typedef enum ClientCertMode +{ + clientCertOff, + clientCertCA, + clientCertFull +} ClientCertMode; + typedef struct HbaLine { int linenumber; @@ -79,16 +88,18 @@ typedef struct HbaLine char *pamservice; bool pam_use_hostname; bool ldaptls; + char *ldapscheme; char *ldapserver; int ldapport; char *ldapbinddn; char *ldapbindpasswd; char *ldapsearchattribute; + char *ldapsearchfilter; char *ldapbasedn; int ldapscope; char *ldapprefix; char *ldapsuffix; - bool clientcert; + ClientCertMode clientcert; char *krb_realm; bool include_realm; bool compat_realm; @@ -121,9 +132,9 @@ typedef struct Port hbaPort; extern bool load_hba(void); extern bool load_ident(void); extern void hba_getauthmethod(hbaPort *port); -extern int check_usermap(const char *usermap_name, - const char *pg_role, const char *auth_user, - bool case_sensitive); +extern int check_usermap(const char *usermap_name, + const char *pg_role, const char *auth_user, + bool case_sensitive); extern bool pg_isblank(const char c); #endif /* HBA_H */ diff --git a/parser/include/libpq/libpq-be.h b/parser/include/libpq/libpq-be.h index 6a76eab4..fa778e11 100644 --- a/parser/include/libpq/libpq-be.h +++ b/parser/include/libpq/libpq-be.h @@ -8,7 +8,7 @@ * Structs that need to be client-visible are in pqcomm.h. * * - * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/libpq/libpq-be.h @@ -86,6 +86,10 @@ typedef struct gss_cred_id_t cred; /* GSSAPI connection cred's */ gss_ctx_id_t ctx; /* GSSAPI connection context */ gss_name_t name; /* GSSAPI client name */ + char *princ; /* GSSAPI Principal used for auth, NULL if + * GSSAPI auth was not used */ + bool auth; /* GSSAPI Authentication used */ + bool enc; /* GSSAPI encryption in use */ #endif } pg_gssinfo; #endif @@ -139,19 +143,19 @@ typedef struct Port List *guc_options; /* - * Information that needs to be held during the authentication cycle. + * The startup packet application name, only used here for the "connection + * authorized" log message. We shouldn't use this post-startup, instead + * the GUC should be used as application can change it afterward. */ - HbaLine *hba; + char *application_name; /* - * Information that really has no business at all being in struct Port, - * but since it gets used by elog.c in the same way as database_name and - * other members of this struct, we may as well keep it here. + * Information that needs to be held during the authentication cycle. */ - TimestampTz SessionStartTime; /* backend start time */ + HbaLine *hba; /* - * TCP keepalive settings. + * TCP keepalive and user timeout settings. * * default values are 0 if AF_UNIX or not yet known; current values are 0 * if AF_UNIX or using the default. Also, -1 in a default value means we @@ -160,15 +164,21 @@ typedef struct Port int default_keepalives_idle; int default_keepalives_interval; int default_keepalives_count; + int default_tcp_user_timeout; int keepalives_idle; int keepalives_interval; int keepalives_count; + int tcp_user_timeout; + /* + * GSSAPI structures. + */ #if defined(ENABLE_GSS) || defined(ENABLE_SSPI) /* - * If GSSAPI is supported, store GSSAPI information. Otherwise, store a - * NULL pointer to make sure offsets in the struct remain the same. + * If GSSAPI is supported and used on this connection, store GSSAPI + * information. Even when GSSAPI is not compiled in, store a NULL pointer + * to keep struct offsets the same (for extension ABI compatibility). */ pg_gssinfo *gss; #else @@ -193,24 +203,112 @@ typedef struct Port } Port; #ifdef USE_SSL +/* + * Hardcoded DH parameters, used in ephemeral DH keying. (See also + * README.SSL for more details on EDH.) + * + * This is the 2048-bit DH parameter from RFC 3526. The generation of the + * prime is specified in RFC 2412 Appendix E, which also discusses the + * design choice of the generator. Note that when loaded with OpenSSL + * this causes DH_check() to fail on DH_NOT_SUITABLE_GENERATOR, where + * leaking a bit is preferred. + */ +#define FILE_DH2048 \ +"-----BEGIN DH PARAMETERS-----\n\ +MIIBCAKCAQEA///////////JD9qiIWjCNMTGYouA3BzRKQJOCIpnzHQCC76mOxOb\n\ +IlFKCHmONATd75UZs806QxswKwpt8l8UN0/hNW1tUcJF5IW1dmJefsb0TELppjft\n\ +awv/XLb0Brft7jhr+1qJn6WunyQRfEsf5kkoZlHs5Fs9wgB8uKFjvwWY2kg2HFXT\n\ +mmkWP6j9JM9fg2VdI9yjrZYcYvNWIIVSu57VKQdwlpZtZww1Tkq8mATxdGwIyhgh\n\ +fDKQXkYuNs474553LBgOhgObJ4Oi7Aeij7XFXfBvTFLJ3ivL9pVYFxg5lUl86pVq\n\ +5RXSJhiY+gUQFXKOWoqsqmj//////////wIBAg==\n\ +-----END DH PARAMETERS-----\n" + /* * These functions are implemented by the glue code specific to each * SSL implementation (e.g. be-secure-openssl.c) */ + +/* + * Initialize global SSL context. + * + * If isServerStart is true, report any errors as FATAL (so we don't return). + * Otherwise, log errors at LOG level and return -1 to indicate trouble, + * preserving the old SSL state if any. Returns 0 if OK. + */ extern int be_tls_init(bool isServerStart); + +/* + * Destroy global SSL context, if any. + */ extern void be_tls_destroy(void); + +/* + * Attempt to negotiate SSL connection. + */ extern int be_tls_open_server(Port *port); + +/* + * Close SSL connection. + */ extern void be_tls_close(Port *port); + +/* + * Read data from a secure connection. + */ extern ssize_t be_tls_read(Port *port, void *ptr, size_t len, int *waitfor); + +/* + * Write data to a secure connection. + */ extern ssize_t be_tls_write(Port *port, void *ptr, size_t len, int *waitfor); +/* + * Return information about the SSL connection. + */ extern int be_tls_get_cipher_bits(Port *port); extern bool be_tls_get_compression(Port *port); -extern void be_tls_get_version(Port *port, char *ptr, size_t len); -extern void be_tls_get_cipher(Port *port, char *ptr, size_t len); -extern void be_tls_get_peerdn_name(Port *port, char *ptr, size_t len); +extern const char *be_tls_get_version(Port *port); +extern const char *be_tls_get_cipher(Port *port); +extern void be_tls_get_peer_subject_name(Port *port, char *ptr, size_t len); +extern void be_tls_get_peer_issuer_name(Port *port, char *ptr, size_t len); +extern void be_tls_get_peer_serial(Port *port, char *ptr, size_t len); + +/* + * Get the server certificate hash for SCRAM channel binding type + * tls-server-end-point. + * + * The result is a palloc'd hash of the server certificate with its + * size, and NULL if there is no certificate available. + * + * This is not supported with old versions of OpenSSL that don't have + * the X509_get_signature_nid() function. + */ +#if defined(USE_OPENSSL) && defined(HAVE_X509_GET_SIGNATURE_NID) +#define HAVE_BE_TLS_GET_CERTIFICATE_HASH +extern char *be_tls_get_certificate_hash(Port *port, size_t *len); +#endif + +/* init hook for SSL, the default sets the password callback if appropriate */ +#ifdef USE_OPENSSL +typedef void (*openssl_tls_init_hook_typ) (SSL_CTX *context, bool isServerStart); +extern PGDLLIMPORT openssl_tls_init_hook_typ openssl_tls_init_hook; #endif +#endif /* USE_SSL */ + +#ifdef ENABLE_GSS +/* + * Return information about the GSSAPI authenticated connection + */ +extern bool be_gssapi_get_auth(Port *port); +extern bool be_gssapi_get_enc(Port *port); +extern const char *be_gssapi_get_princ(Port *port); + +/* Read and write to a GSSAPI-encrypted connection. */ +extern ssize_t be_gssapi_read(Port *port, void *ptr, size_t len); +extern ssize_t be_gssapi_write(Port *port, void *ptr, size_t len); +#endif /* ENABLE_GSS */ + extern ProtocolVersion FrontendProtocol; /* TCP keepalives configuration. These are no-ops on an AF_UNIX socket. */ @@ -218,9 +316,11 @@ extern ProtocolVersion FrontendProtocol; extern int pq_getkeepalivesidle(Port *port); extern int pq_getkeepalivesinterval(Port *port); extern int pq_getkeepalivescount(Port *port); +extern int pq_gettcpusertimeout(Port *port); extern int pq_setkeepalivesidle(int idle, Port *port); extern int pq_setkeepalivesinterval(int interval, Port *port); extern int pq_setkeepalivescount(int count, Port *port); +extern int pq_settcpusertimeout(int timeout, Port *port); #endif /* LIBPQ_BE_H */ diff --git a/parser/include/libpq/libpq.h b/parser/include/libpq/libpq.h index fd2dd585..b1152475 100644 --- a/parser/include/libpq/libpq.h +++ b/parser/include/libpq/libpq.h @@ -4,7 +4,7 @@ * POSTGRES LIBPQ buffer structure definitions. * * - * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/libpq/libpq.h @@ -33,7 +33,7 @@ typedef struct void (*endcopyout) (bool errorAbort); } PQcommMethods; -extern PGDLLIMPORT PQcommMethods *PqCommMethods; +extern const PGDLLIMPORT PQcommMethods *PqCommMethods; #define pq_comm_reset() (PqCommMethods->comm_reset()) #define pq_flush() (PqCommMethods->flush()) @@ -53,9 +53,11 @@ extern PGDLLIMPORT PQcommMethods *PqCommMethods; /* * prototypes for functions in pqcomm.c */ -extern int StreamServerPort(int family, char *hostName, - unsigned short portNumber, char *unixSocketDir, - pgsocket ListenSocket[], int MaxListen); +extern WaitEventSet *FeBeWaitSet; + +extern int StreamServerPort(int family, const char *hostName, + unsigned short portNumber, const char *unixSocketDir, + pgsocket ListenSocket[], int MaxListen); extern int StreamConnection(pgsocket server_fd, Port *port); extern void StreamClose(pgsocket sock); extern void TouchSocketFiles(void); @@ -75,11 +77,17 @@ extern int pq_putbytes(const char *s, size_t len); /* * prototypes for functions in be-secure.c */ +extern char *ssl_library; extern char *ssl_cert_file; extern char *ssl_key_file; extern char *ssl_ca_file; extern char *ssl_crl_file; extern char *ssl_dh_params_file; +extern PGDLLIMPORT char *ssl_passphrase_command; +extern PGDLLIMPORT bool ssl_passphrase_command_supports_reload; +#ifdef USE_SSL +extern bool ssl_loaded_verify_locations; +#endif extern int secure_initialize(bool isServerStart); extern bool secure_loaded_verify_locations(void); @@ -91,13 +99,35 @@ extern ssize_t secure_write(Port *port, void *ptr, size_t len); extern ssize_t secure_raw_read(Port *port, void *ptr, size_t len); extern ssize_t secure_raw_write(Port *port, const void *ptr, size_t len); -extern bool ssl_loaded_verify_locations; - -extern WaitEventSet *FeBeWaitSet; +/* + * prototypes for functions in be-secure-gssapi.c + */ +#ifdef ENABLE_GSS +extern ssize_t secure_open_gssapi(Port *port); +#endif /* GUCs */ extern char *SSLCipherSuites; extern char *SSLECDHCurve; extern bool SSLPreferServerCiphers; +extern int ssl_min_protocol_version; +extern int ssl_max_protocol_version; + +enum ssl_protocol_versions +{ + PG_TLS_ANY = 0, + PG_TLS1_VERSION, + PG_TLS1_1_VERSION, + PG_TLS1_2_VERSION, + PG_TLS1_3_VERSION, +}; + +/* + * prototypes for functions in be-secure-common.c + */ +extern int run_ssl_passphrase_command(const char *prompt, bool is_server_start, + char *buf, int size); +extern bool check_ssl_key_file_permissions(const char *ssl_key_file, + bool isServerStart); #endif /* LIBPQ_H */ diff --git a/parser/include/libpq/pqcomm.h b/parser/include/libpq/pqcomm.h index 10c7434c..781d86c8 100644 --- a/parser/include/libpq/pqcomm.h +++ b/parser/include/libpq/pqcomm.h @@ -6,7 +6,7 @@ * NOTE: for historical reasons, this does not correspond to pqcomm.c. * pqcomm.c's routines are declared in libpq.h. * - * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/libpq/pqcomm.h @@ -68,10 +68,10 @@ typedef struct /* Configure the UNIX socket location for the well known port. */ #define UNIXSOCK_PATH(path, port, sockdir) \ + (AssertMacro(sockdir), \ + AssertMacro(*(sockdir) != '\0'), \ snprintf(path, sizeof(path), "%s/.s.PGSQL.%d", \ - ((sockdir) && *(sockdir) != '\0') ? (sockdir) : \ - DEFAULT_PGSOCKET_DIR, \ - (port)) + (sockdir), (port))) /* * The maximum workable length of a socket path is what will fit into @@ -199,9 +199,10 @@ typedef struct CancelRequestPacket /* - * A client can also start by sending a SSL negotiation request, to get a - * secure channel. + * A client can also start by sending a SSL or GSSAPI negotiation request to + * get a secure channel. */ #define NEGOTIATE_SSL_CODE PG_PROTOCOL(1234,5679) +#define NEGOTIATE_GSS_CODE PG_PROTOCOL(1234,5680) #endif /* PQCOMM_H */ diff --git a/parser/include/libpq/pqformat.h b/parser/include/libpq/pqformat.h index 32112547..af31e9ca 100644 --- a/parser/include/libpq/pqformat.h +++ b/parser/include/libpq/pqformat.h @@ -3,7 +3,7 @@ * pqformat.h * Definitions for formatting and parsing frontend/backend messages * - * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/libpq/pqformat.h @@ -14,20 +14,180 @@ #define PQFORMAT_H #include "lib/stringinfo.h" +#include "mb/pg_wchar.h" +#include "port/pg_bswap.h" extern void pq_beginmessage(StringInfo buf, char msgtype); -extern void pq_sendbyte(StringInfo buf, int byt); +extern void pq_beginmessage_reuse(StringInfo buf, char msgtype); +extern void pq_endmessage(StringInfo buf); +extern void pq_endmessage_reuse(StringInfo buf); + extern void pq_sendbytes(StringInfo buf, const char *data, int datalen); extern void pq_sendcountedtext(StringInfo buf, const char *str, int slen, - bool countincludesself); + bool countincludesself); extern void pq_sendtext(StringInfo buf, const char *str, int slen); extern void pq_sendstring(StringInfo buf, const char *str); extern void pq_send_ascii_string(StringInfo buf, const char *str); -extern void pq_sendint(StringInfo buf, int i, int b); -extern void pq_sendint64(StringInfo buf, int64 i); extern void pq_sendfloat4(StringInfo buf, float4 f); extern void pq_sendfloat8(StringInfo buf, float8 f); -extern void pq_endmessage(StringInfo buf); + +/* + * Append a [u]int8 to a StringInfo buffer, which already has enough space + * preallocated. + * + * The use of pg_restrict allows the compiler to optimize the code based on + * the assumption that buf, buf->len, buf->data and *buf->data don't + * overlap. Without the annotation buf->len etc cannot be kept in a register + * over subsequent pq_writeintN calls. + * + * The use of StringInfoData * rather than StringInfo is due to MSVC being + * overly picky and demanding a * before a restrict. + */ +static inline void +pq_writeint8(StringInfoData *pg_restrict buf, uint8 i) +{ + uint8 ni = i; + + Assert(buf->len + (int) sizeof(uint8) <= buf->maxlen); + memcpy((char *pg_restrict) (buf->data + buf->len), &ni, sizeof(uint8)); + buf->len += sizeof(uint8); +} + +/* + * Append a [u]int16 to a StringInfo buffer, which already has enough space + * preallocated. + */ +static inline void +pq_writeint16(StringInfoData *pg_restrict buf, uint16 i) +{ + uint16 ni = pg_hton16(i); + + Assert(buf->len + (int) sizeof(uint16) <= buf->maxlen); + memcpy((char *pg_restrict) (buf->data + buf->len), &ni, sizeof(uint16)); + buf->len += sizeof(uint16); +} + +/* + * Append a [u]int32 to a StringInfo buffer, which already has enough space + * preallocated. + */ +static inline void +pq_writeint32(StringInfoData *pg_restrict buf, uint32 i) +{ + uint32 ni = pg_hton32(i); + + Assert(buf->len + (int) sizeof(uint32) <= buf->maxlen); + memcpy((char *pg_restrict) (buf->data + buf->len), &ni, sizeof(uint32)); + buf->len += sizeof(uint32); +} + +/* + * Append a [u]int64 to a StringInfo buffer, which already has enough space + * preallocated. + */ +static inline void +pq_writeint64(StringInfoData *pg_restrict buf, uint64 i) +{ + uint64 ni = pg_hton64(i); + + Assert(buf->len + (int) sizeof(uint64) <= buf->maxlen); + memcpy((char *pg_restrict) (buf->data + buf->len), &ni, sizeof(uint64)); + buf->len += sizeof(uint64); +} + +/* + * Append a null-terminated text string (with conversion) to a buffer with + * preallocated space. + * + * NB: The pre-allocated space needs to be sufficient for the string after + * converting to client encoding. + * + * NB: passed text string must be null-terminated, and so is the data + * sent to the frontend. + */ +static inline void +pq_writestring(StringInfoData *pg_restrict buf, const char *pg_restrict str) +{ + int slen = strlen(str); + char *p; + + p = pg_server_to_client(str, slen); + if (p != str) /* actual conversion has been done? */ + slen = strlen(p); + + Assert(buf->len + slen + 1 <= buf->maxlen); + + memcpy(((char *pg_restrict) buf->data + buf->len), p, slen + 1); + buf->len += slen + 1; + + if (p != str) + pfree(p); +} + +/* append a binary [u]int8 to a StringInfo buffer */ +static inline void +pq_sendint8(StringInfo buf, uint8 i) +{ + enlargeStringInfo(buf, sizeof(uint8)); + pq_writeint8(buf, i); +} + +/* append a binary [u]int16 to a StringInfo buffer */ +static inline void +pq_sendint16(StringInfo buf, uint16 i) +{ + enlargeStringInfo(buf, sizeof(uint16)); + pq_writeint16(buf, i); +} + +/* append a binary [u]int32 to a StringInfo buffer */ +static inline void +pq_sendint32(StringInfo buf, uint32 i) +{ + enlargeStringInfo(buf, sizeof(uint32)); + pq_writeint32(buf, i); +} + +/* append a binary [u]int64 to a StringInfo buffer */ +static inline void +pq_sendint64(StringInfo buf, uint64 i) +{ + enlargeStringInfo(buf, sizeof(uint64)); + pq_writeint64(buf, i); +} + +/* append a binary byte to a StringInfo buffer */ +static inline void +pq_sendbyte(StringInfo buf, uint8 byt) +{ + pq_sendint8(buf, byt); +} + +/* + * Append a binary integer to a StringInfo buffer + * + * This function is deprecated; prefer use of the functions above. + */ +static inline void +pq_sendint(StringInfo buf, uint32 i, int b) +{ + switch (b) + { + case 1: + pq_sendint8(buf, (uint8) i); + break; + case 2: + pq_sendint16(buf, (uint16) i); + break; + case 4: + pq_sendint32(buf, (uint32) i); + break; + default: + elog(ERROR, "unsupported integer size %d", b); + break; + } +} + extern void pq_begintypsend(StringInfo buf); extern bytea *pq_endtypsend(StringInfo buf); diff --git a/parser/include/libpq/pqsignal.h b/parser/include/libpq/pqsignal.h index 83cc559d..695c4dc3 100644 --- a/parser/include/libpq/pqsignal.h +++ b/parser/include/libpq/pqsignal.h @@ -3,7 +3,7 @@ * pqsignal.h * Backend signal(2) support (see also src/port/pqsignal.c) * - * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/libpq/pqsignal.h diff --git a/parser/include/mb/pg_wchar.h b/parser/include/mb/pg_wchar.h index d57ef017..494aefc7 100644 --- a/parser/include/mb/pg_wchar.h +++ b/parser/include/mb/pg_wchar.h @@ -3,13 +3,13 @@ * pg_wchar.h * multibyte-character support * - * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/mb/pg_wchar.h * * NOTES - * This is used both by the backend and by libpq, but should not be + * This is used both by the backend and by frontends, but should not be * included by libpq client programs. In particular, a libpq client * should not assume that the encoding IDs used by the version of libpq * it's linked to match up with the IDs declared here. @@ -222,8 +222,8 @@ typedef unsigned int pg_wchar; * PostgreSQL encoding identifiers * * WARNING: the order of this enum must be same as order of entries - * in the pg_enc2name_tbl[] array (in mb/encnames.c), and - * in the pg_wchar_table[] array (in mb/wchar.c)! + * in the pg_enc2name_tbl[] array (in src/common/encnames.c), and + * in the pg_wchar_table[] array (in src/common/wchar.c)! * * If you add some encoding don't forget to check * PG_ENCODING_BE_LAST macro. @@ -289,7 +289,7 @@ typedef enum pg_enc #define PG_ENCODING_BE_LAST PG_KOI8U /* - * Please use these tests before access to pg_encconv_tbl[] + * Please use these tests before access to pg_enc2name_tbl[] * or to other places... */ #define PG_VALID_BE_ENCODING(_enc) \ @@ -304,6 +304,26 @@ typedef enum pg_enc /* On FE are possible all encodings */ #define PG_VALID_FE_ENCODING(_enc) PG_VALID_ENCODING(_enc) +/* + * When converting strings between different encodings, we assume that space + * for converted result is 4-to-1 growth in the worst case. The rate for + * currently supported encoding pairs are within 3 (SJIS JIS X0201 half width + * kanna -> UTF8 is the worst case). So "4" should be enough for the moment. + * + * Note that this is not the same as the maximum character width in any + * particular encoding. + */ +#define MAX_CONVERSION_GROWTH 4 + +/* + * Maximum byte length of the string equivalent to any one Unicode code point, + * in any backend encoding. The current value assumes that a 4-byte UTF-8 + * character might expand by MAX_CONVERSION_GROWTH, which is a huge + * overestimate. But in current usage we don't allocate large multiples of + * this, so there's little point in being stingy. + */ +#define MAX_UNICODE_EQUIVALENT_STRING 16 + /* * Table for mapping an encoding number to official encoding name and * possibly other subsidiary data. Be careful to check encoding number @@ -334,12 +354,6 @@ typedef struct pg_enc2gettext extern const pg_enc2gettext pg_enc2gettext_tbl[]; -/* - * Encoding names for ICU - */ -extern bool is_encoding_supported_by_icu(int encoding); -extern const char *get_encoding_name_for_icu(int encoding); - /* * pg_wchar stuff */ @@ -399,7 +413,7 @@ extern const pg_wchar_tbl pg_wchar_table[]; * points to a lookup table for the second byte. And so on. * * Physically, all the trees are stored in one big array, in 'chars16' or - * 'chars32', depending on the maximum value that needs to be reprented. For + * 'chars32', depending on the maximum value that needs to be represented. For * each level in each tree, we also store lower and upper bound of allowed * values - values outside those bounds are considered invalid, and are left * out of the tables. @@ -497,6 +511,34 @@ typedef uint32 (*utf_local_conversion_func) (uint32 code); (destencoding)) +/* + * Some handy functions for Unicode-specific tests. + */ +static inline bool +is_valid_unicode_codepoint(pg_wchar c) +{ + return (c > 0 && c <= 0x10FFFF); +} + +static inline bool +is_utf16_surrogate_first(pg_wchar c) +{ + return (c >= 0xD800 && c <= 0xDBFF); +} + +static inline bool +is_utf16_surrogate_second(pg_wchar c) +{ + return (c >= 0xDC00 && c <= 0xDFFF); +} + +static inline pg_wchar +surrogate_pair_to_codepoint(pg_wchar first, pg_wchar second) +{ + return ((first & 0x3FF) << 10) + 0x10000 + (second & 0x3FF); +} + + /* * These functions are considered part of libpq's exported API and * are also declared in libpq-fe.h. @@ -506,35 +548,48 @@ extern const char *pg_encoding_to_char(int encoding); extern int pg_valid_server_encoding_id(int encoding); /* - * Remaining functions are not considered part of libpq's API, though many - * of them do exist inside libpq. + * These functions are available to frontend code that links with libpgcommon + * (in addition to the ones just above). The constant tables declared + * earlier in this file are also available from libpgcommon. + */ +extern int pg_encoding_mblen(int encoding, const char *mbstr); +extern int pg_encoding_dsplen(int encoding, const char *mbstr); +extern int pg_encoding_verifymb(int encoding, const char *mbstr, int len); +extern int pg_encoding_max_length(int encoding); +extern int pg_valid_client_encoding(const char *name); +extern int pg_valid_server_encoding(const char *name); +extern bool is_encoding_supported_by_icu(int encoding); +extern const char *get_encoding_name_for_icu(int encoding); + +extern unsigned char *unicode_to_utf8(pg_wchar c, unsigned char *utf8string); +extern pg_wchar utf8_to_unicode(const unsigned char *c); +extern bool pg_utf8_islegal(const unsigned char *source, int length); +extern int pg_utf_mblen(const unsigned char *s); +extern int pg_mule_mblen(const unsigned char *s); + +/* + * The remaining functions are backend-only. */ extern int pg_mb2wchar(const char *from, pg_wchar *to); extern int pg_mb2wchar_with_len(const char *from, pg_wchar *to, int len); -extern int pg_encoding_mb2wchar_with_len(int encoding, - const char *from, pg_wchar *to, int len); +extern int pg_encoding_mb2wchar_with_len(int encoding, + const char *from, pg_wchar *to, int len); extern int pg_wchar2mb(const pg_wchar *from, char *to); extern int pg_wchar2mb_with_len(const pg_wchar *from, char *to, int len); -extern int pg_encoding_wchar2mb_with_len(int encoding, - const pg_wchar *from, char *to, int len); +extern int pg_encoding_wchar2mb_with_len(int encoding, + const pg_wchar *from, char *to, int len); extern int pg_char_and_wchar_strcmp(const char *s1, const pg_wchar *s2); extern int pg_wchar_strncmp(const pg_wchar *s1, const pg_wchar *s2, size_t n); extern int pg_char_and_wchar_strncmp(const char *s1, const pg_wchar *s2, size_t n); extern size_t pg_wchar_strlen(const pg_wchar *wstr); extern int pg_mblen(const char *mbstr); extern int pg_dsplen(const char *mbstr); -extern int pg_encoding_mblen(int encoding, const char *mbstr); -extern int pg_encoding_dsplen(int encoding, const char *mbstr); -extern int pg_encoding_verifymb(int encoding, const char *mbstr, int len); -extern int pg_mule_mblen(const unsigned char *mbstr); -extern int pg_mic_mblen(const unsigned char *mbstr); extern int pg_mbstrlen(const char *mbstr); extern int pg_mbstrlen_with_len(const char *mbstr, int len); extern int pg_mbcliplen(const char *mbstr, int len, int limit); -extern int pg_encoding_mbcliplen(int encoding, const char *mbstr, - int len, int limit); -extern int pg_mbcharcliplen(const char *mbstr, int len, int imit); -extern int pg_encoding_max_length(int encoding); +extern int pg_encoding_mbcliplen(int encoding, const char *mbstr, + int len, int limit); +extern int pg_mbcharcliplen(const char *mbstr, int len, int limit); extern int pg_database_encoding_max_length(void); extern mbcharacter_incrementer pg_database_encoding_character_incrementer(void); @@ -554,69 +609,61 @@ extern int GetMessageEncoding(void); extern int pg_bind_textdomain_codeset(const char *domainname); #endif -extern int pg_valid_client_encoding(const char *name); -extern int pg_valid_server_encoding(const char *name); - -extern unsigned char *unicode_to_utf8(pg_wchar c, unsigned char *utf8string); -extern pg_wchar utf8_to_unicode(const unsigned char *c); -extern int pg_utf_mblen(const unsigned char *); extern unsigned char *pg_do_encoding_conversion(unsigned char *src, int len, - int src_encoding, - int dest_encoding); + int src_encoding, + int dest_encoding); extern char *pg_client_to_server(const char *s, int len); extern char *pg_server_to_client(const char *s, int len); extern char *pg_any_to_server(const char *s, int len, int encoding); extern char *pg_server_to_any(const char *s, int len, int encoding); +extern void pg_unicode_to_server(pg_wchar c, unsigned char *s); + extern unsigned short BIG5toCNS(unsigned short big5, unsigned char *lc); extern unsigned short CNStoBIG5(unsigned short cns, unsigned char lc); extern void UtfToLocal(const unsigned char *utf, int len, - unsigned char *iso, - const pg_mb_radix_tree *map, - const pg_utf_to_local_combined *cmap, int cmapsize, - utf_local_conversion_func conv_func, - int encoding); + unsigned char *iso, + const pg_mb_radix_tree *map, + const pg_utf_to_local_combined *cmap, int cmapsize, + utf_local_conversion_func conv_func, + int encoding); extern void LocalToUtf(const unsigned char *iso, int len, - unsigned char *utf, - const pg_mb_radix_tree *map, - const pg_local_to_utf_combined *cmap, int cmapsize, - utf_local_conversion_func conv_func, - int encoding); + unsigned char *utf, + const pg_mb_radix_tree *map, + const pg_local_to_utf_combined *cmap, int cmapsize, + utf_local_conversion_func conv_func, + int encoding); extern bool pg_verifymbstr(const char *mbstr, int len, bool noError); extern bool pg_verify_mbstr(int encoding, const char *mbstr, int len, - bool noError); -extern int pg_verify_mbstr_len(int encoding, const char *mbstr, int len, - bool noError); + bool noError); +extern int pg_verify_mbstr_len(int encoding, const char *mbstr, int len, + bool noError); extern void check_encoding_conversion_args(int src_encoding, - int dest_encoding, - int len, - int expected_src_encoding, - int expected_dest_encoding); + int dest_encoding, + int len, + int expected_src_encoding, + int expected_dest_encoding); extern void report_invalid_encoding(int encoding, const char *mbstr, int len) pg_attribute_noreturn(); extern void report_untranslatable_char(int src_encoding, int dest_encoding, - const char *mbstr, int len) pg_attribute_noreturn(); + const char *mbstr, int len) pg_attribute_noreturn(); extern void local2local(const unsigned char *l, unsigned char *p, int len, - int src_encoding, int dest_encoding, const unsigned char *tab); -extern void pg_ascii2mic(const unsigned char *l, unsigned char *p, int len); -extern void pg_mic2ascii(const unsigned char *mic, unsigned char *p, int len); + int src_encoding, int dest_encoding, const unsigned char *tab); extern void latin2mic(const unsigned char *l, unsigned char *p, int len, - int lc, int encoding); + int lc, int encoding); extern void mic2latin(const unsigned char *mic, unsigned char *p, int len, - int lc, int encoding); + int lc, int encoding); extern void latin2mic_with_table(const unsigned char *l, unsigned char *p, - int len, int lc, int encoding, - const unsigned char *tab); + int len, int lc, int encoding, + const unsigned char *tab); extern void mic2latin_with_table(const unsigned char *mic, unsigned char *p, - int len, int lc, int encoding, - const unsigned char *tab); - -extern bool pg_utf8_islegal(const unsigned char *source, int length); + int len, int lc, int encoding, + const unsigned char *tab); #ifdef WIN32 extern WCHAR *pgwin32_message_to_UTF16(const char *str, int len, int *utf16len); diff --git a/parser/include/mb/stringinfo_mb.h b/parser/include/mb/stringinfo_mb.h new file mode 100644 index 00000000..3bef568e --- /dev/null +++ b/parser/include/mb/stringinfo_mb.h @@ -0,0 +1,24 @@ +/*------------------------------------------------------------------------- + * + * stringinfo_mb.h + * multibyte support for StringInfo + * + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group + * Portions Copyright (c) 1994, Regents of the University of California + * + * src/include/mb/stringinfo_mb.h + *------------------------------------------------------------------------- + */ +#ifndef STRINGINFO_MB_H +#define STRINGINFO_MB_H + + +#include "lib/stringinfo.h" + +/* + * Multibyte-aware StringInfo support function. + */ +extern void appendStringInfoStringQuoted(StringInfo str, + const char *s, int maxlen); + +#endif /* STRINGINFO_MB_H */ diff --git a/parser/include/miscadmin.h b/parser/include/miscadmin.h index b5756f87..a3697fc0 100644 --- a/parser/include/miscadmin.h +++ b/parser/include/miscadmin.h @@ -10,7 +10,7 @@ * Over time, this has also become the preferred place for widely known * resource-limitation stuff, such as work_mem and check_stack_depth(). * - * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/miscadmin.h @@ -25,6 +25,7 @@ #include +#include "datatype/timestamp.h" /* for TimestampTz */ #include "pgtime.h" /* for pg_time_t */ @@ -77,13 +78,13 @@ /* in globals.c */ /* these are marked volatile because they are set by signal handlers: */ -extern PGDLLIMPORT __thread volatile bool InterruptPending; -extern PGDLLIMPORT volatile bool QueryCancelPending; -extern PGDLLIMPORT volatile bool ProcDiePending; -extern PGDLLIMPORT volatile bool IdleInTransactionSessionTimeoutPending; -extern PGDLLIMPORT volatile sig_atomic_t ConfigReloadPending; +extern PGDLLIMPORT __thread volatile sig_atomic_t InterruptPending; +extern PGDLLIMPORT volatile sig_atomic_t QueryCancelPending; +extern PGDLLIMPORT volatile sig_atomic_t ProcDiePending; +extern PGDLLIMPORT volatile sig_atomic_t IdleInTransactionSessionTimeoutPending; +extern PGDLLIMPORT volatile sig_atomic_t ProcSignalBarrierPending; -extern volatile bool ClientConnectionLost; +extern PGDLLIMPORT volatile sig_atomic_t ClientConnectionLost; /* these are marked volatile because they are examined by signal handlers: */ extern PGDLLIMPORT __thread volatile uint32 InterruptHoldoffCount; @@ -153,6 +154,7 @@ extern PGDLLIMPORT bool IsBinaryUpgrade; extern PGDLLIMPORT __thread bool ExitOnAnyError; extern PGDLLIMPORT char *DataDir; +extern PGDLLIMPORT int data_directory_mode; extern PGDLLIMPORT int NBuffers; extern PGDLLIMPORT int MaxBackends; @@ -162,6 +164,7 @@ extern PGDLLIMPORT int max_parallel_workers; extern PGDLLIMPORT int MyProcPid; extern PGDLLIMPORT pg_time_t MyStartTime; +extern PGDLLIMPORT TimestampTz MyStartTimestamp; extern PGDLLIMPORT struct Port *MyProcPort; extern PGDLLIMPORT struct Latch *MyLatch; extern int32 MyCancelKey; @@ -240,22 +243,25 @@ extern PGDLLIMPORT int IntervalStyle; extern bool enableFsync; extern PGDLLIMPORT bool allowSystemTableMods; extern PGDLLIMPORT int work_mem; +extern PGDLLIMPORT double hash_mem_multiplier; extern PGDLLIMPORT int maintenance_work_mem; -extern PGDLLIMPORT int replacement_sort_tuples; +extern PGDLLIMPORT int max_parallel_maintenance_workers; extern int VacuumCostPageHit; extern int VacuumCostPageMiss; extern int VacuumCostPageDirty; extern int VacuumCostLimit; -extern int VacuumCostDelay; +extern double VacuumCostDelay; -extern int VacuumPageHit; -extern int VacuumPageMiss; -extern int VacuumPageDirty; +extern int64 VacuumPageHit; +extern int64 VacuumPageMiss; +extern int64 VacuumPageDirty; extern int VacuumCostBalance; extern bool VacuumCostActive; +extern double vacuum_cleanup_index_scale_factor; + /* in tcop/postgres.c */ @@ -274,8 +280,6 @@ extern void restore_stack_base(pg_stack_base_t base); extern void check_stack_depth(void); extern bool stack_is_too_deep(void); -extern void PostgresSigHupHandler(SIGNAL_ARGS); - /* in tcop/utility.c */ extern void PreventCommandIfReadOnly(const char *cmdname); extern void PreventCommandIfParallelMode(const char *cmdname); @@ -300,8 +304,35 @@ extern char *DatabasePath; /* now in utils/init/miscinit.c */ extern void InitPostmasterChild(void); extern void InitStandaloneProcess(const char *argv0); +extern void SwitchToSharedLatch(void); +extern void SwitchBackToLocalLatch(void); + +typedef enum BackendType +{ + B_INVALID = 0, + B_AUTOVAC_LAUNCHER, + B_AUTOVAC_WORKER, + B_BACKEND, + B_BG_WORKER, + B_BG_WRITER, + B_CHECKPOINTER, + B_STARTUP, + B_WAL_RECEIVER, + B_WAL_SENDER, + B_WAL_WRITER, + B_ARCHIVER, + B_STATS_COLLECTOR, + B_LOGGER, +} BackendType; + +extern BackendType MyBackendType; + +extern const char *GetBackendTypeDesc(BackendType backendType); extern void SetDatabasePath(const char *path); +extern void checkDataDir(void); +extern void SetDataDir(const char *dir); +extern void ChangeToDataDir(void); extern char *GetUserNameFromId(Oid roleid, bool noerr); extern Oid GetUserId(void); @@ -321,12 +352,6 @@ extern void SetSessionAuthorization(Oid userid, bool is_superuser); extern Oid GetCurrentRoleId(void); extern void SetCurrentRoleId(Oid roleid, bool is_superuser); -extern void SetDataDir(const char *dir); -extern void ChangeToDataDir(void); - -extern void SwitchToSharedLatch(void); -extern void SwitchBackToLocalLatch(void); - /* in utils/misc/superuser.c */ extern bool superuser(void); /* current user is superuser */ extern bool superuser_arg(Oid roleid); /* given user is superuser */ @@ -419,7 +444,7 @@ extern AuxProcType MyAuxProcType; extern void pg_split_opts(char **argv, int *argcp, const char *optstr); extern void InitializeMaxBackends(void); extern void InitPostgres(const char *in_dbname, Oid dboid, const char *username, - Oid useroid, char *out_dbname); + Oid useroid, char *out_dbname, bool override_allow_connections); extern void BaseInit(void); /* in utils/init/miscinit.c */ @@ -431,7 +456,7 @@ extern char *local_preload_libraries_string; extern void CreateDataDirLockFile(bool amPostmaster); extern void CreateSocketLockFile(const char *socketfile, bool amPostmaster, - const char *socketDir); + const char *socketDir); extern void TouchSocketLockFiles(void); extern void AddToDataDirLockFile(int target_line, const char *str); extern bool RecheckDataDirLockFile(void); @@ -445,4 +470,7 @@ extern bool has_rolreplication(Oid roleid); extern bool BackupInProgress(void); extern void CancelBackup(void); +/* in executor/nodeHash.c */ +extern int get_hash_mem(void); + #endif /* MISCADMIN_H */ diff --git a/parser/include/nodes/bitmapset.h b/parser/include/nodes/bitmapset.h index aa3fb253..d113c271 100644 --- a/parser/include/nodes/bitmapset.h +++ b/parser/include/nodes/bitmapset.h @@ -11,7 +11,7 @@ * bms_is_empty() in preference to testing for NULL.) * * - * Copyright (c) 2003-2017, PostgreSQL Global Development Group + * Copyright (c) 2003-2020, PostgreSQL Global Development Group * * src/include/nodes/bitmapset.h * @@ -27,13 +27,25 @@ struct List; /* * Data representation + * + * Larger bitmap word sizes generally give better performance, so long as + * they're not wider than the processor can handle efficiently. We use + * 64-bit words if pointers are that large, else 32-bit words. */ +#if SIZEOF_VOID_P >= 8 + +#define BITS_PER_BITMAPWORD 64 +typedef uint64 bitmapword; /* must be an unsigned type */ +typedef int64 signedbitmapword; /* must be the matching signed type */ + +#else -/* The unit size can be adjusted by changing these three declarations: */ #define BITS_PER_BITMAPWORD 32 typedef uint32 bitmapword; /* must be an unsigned type */ typedef int32 signedbitmapword; /* must be the matching signed type */ +#endif + typedef struct Bitmapset { int nwords; /* number of words in array */ @@ -65,6 +77,7 @@ typedef enum extern Bitmapset *bms_copy(const Bitmapset *a); extern bool bms_equal(const Bitmapset *a, const Bitmapset *b); +extern int bms_compare(const Bitmapset *a, const Bitmapset *b); extern Bitmapset *bms_make_singleton(int x); extern void bms_free(Bitmapset *a); @@ -74,6 +87,7 @@ extern Bitmapset *bms_difference(const Bitmapset *a, const Bitmapset *b); extern bool bms_is_subset(const Bitmapset *a, const Bitmapset *b); extern BMS_Comparison bms_subset_compare(const Bitmapset *a, const Bitmapset *b); extern bool bms_is_member(int x, const Bitmapset *a); +extern int bms_member_index(Bitmapset *a, int x); extern bool bms_overlap(const Bitmapset *a, const Bitmapset *b); extern bool bms_overlap_list(const Bitmapset *a, const struct List *b); extern bool bms_nonempty_difference(const Bitmapset *a, const Bitmapset *b); @@ -90,6 +104,7 @@ extern bool bms_is_empty(const Bitmapset *a); extern Bitmapset *bms_add_member(Bitmapset *a, int x); extern Bitmapset *bms_del_member(Bitmapset *a, int x); extern Bitmapset *bms_add_members(Bitmapset *a, const Bitmapset *b); +extern Bitmapset *bms_add_range(Bitmapset *a, int lower, int upper); extern Bitmapset *bms_int_members(Bitmapset *a, const Bitmapset *b); extern Bitmapset *bms_del_members(Bitmapset *a, const Bitmapset *b); extern Bitmapset *bms_join(Bitmapset *a, Bitmapset *b); @@ -97,8 +112,11 @@ extern Bitmapset *bms_join(Bitmapset *a, Bitmapset *b); /* support for iterating through the integer elements of a set: */ extern int bms_first_member(Bitmapset *a); extern int bms_next_member(const Bitmapset *a, int prevbit); +extern int bms_prev_member(const Bitmapset *a, int prevbit); /* support for hashtables using Bitmapsets as keys: */ extern uint32 bms_hash_value(const Bitmapset *a); +extern uint32 bitmap_hash(const void *key, Size keysize); +extern int bitmap_match(const void *key1, const void *key2, Size keysize); #endif /* BITMAPSET_H */ diff --git a/parser/include/nodes/execnodes.h b/parser/include/nodes/execnodes.h index 10e39013..8e5ccb37 100644 --- a/parser/include/nodes/execnodes.h +++ b/parser/include/nodes/execnodes.h @@ -4,7 +4,7 @@ * definitions for executor state nodes * * - * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/nodes/execnodes.h @@ -14,21 +14,33 @@ #ifndef EXECNODES_H #define EXECNODES_H -#include "access/genam.h" -#include "access/heapam.h" #include "access/tupconvert.h" #include "executor/instrument.h" +#include "fmgr.h" #include "lib/pairingheap.h" #include "nodes/params.h" #include "nodes/plannodes.h" +#include "nodes/tidbitmap.h" +#include "partitioning/partdefs.h" +#include "storage/condition_variable.h" #include "utils/hsearch.h" #include "utils/queryenvironment.h" #include "utils/reltrigger.h" +#include "utils/sharedtuplestore.h" +#include "utils/snapshot.h" #include "utils/sortsupport.h" -#include "utils/tuplestore.h" #include "utils/tuplesort.h" -#include "nodes/tidbitmap.h" -#include "storage/condition_variable.h" +#include "utils/tuplestore.h" + +struct PlanState; /* forward references in this file */ +struct PartitionRoutingInfo; +struct ParallelHashJoinState; +struct ExecRowMark; +struct ExprState; +struct ExprContext; +struct RangeTblEntry; /* avoid including parsenodes.h here */ +struct ExprEvalStep; /* avoid including execExpr.h everywhere */ +struct CopyMultiInsertBuffer; /* ---------------- @@ -38,10 +50,6 @@ * It contains instructions (in ->steps) to evaluate the expression. * ---------------- */ -struct ExprState; /* forward references in this file */ -struct ExprContext; -struct ExprEvalStep; /* avoid including execExpr.h everywhere */ - typedef Datum (*ExprStateEvalFunc) (struct ExprState *expression, struct ExprContext *econtext, bool *isNull); @@ -52,7 +60,7 @@ typedef Datum (*ExprStateEvalFunc) (struct ExprState *expression, typedef struct ExprState { - Node tag; + NodeTag tag; uint8 flags; /* bitmask of EEO_FLAG_* bits, see above */ @@ -60,12 +68,15 @@ typedef struct ExprState * Storage for result value of a scalar expression, or for individual * column results within expressions built by ExecBuildProjectionInfo(). */ +#define FIELDNO_EXPRSTATE_RESNULL 2 bool resnull; +#define FIELDNO_EXPRSTATE_RESVALUE 3 Datum resvalue; /* * If projecting a tuple result, this slot holds the result; else NULL. */ +#define FIELDNO_EXPRSTATE_RESULTSLOT 4 TupleTableSlot *resultslot; /* @@ -82,13 +93,21 @@ typedef struct ExprState /* original expression tree, for debugging only */ Expr *expr; + /* private state for an evalfunc */ + void *evalfunc_private; + /* - * XXX: following only needed during "compilation", could be thrown away. + * XXX: following fields only needed during "compilation" (ExecInitExpr); + * could be thrown away afterwards. */ int steps_len; /* number of steps currently */ int steps_alloc; /* allocated length of steps array */ +#define FIELDNO_EXPRSTATE_PARENT 11 + struct PlanState *parent; /* parent PlanState node, if any */ + ParamListInfo ext_params; /* for compiling PARAM_EXTERN nodes */ + Datum *innermost_caseval; bool *innermost_casenull; @@ -104,9 +123,11 @@ typedef struct ExprState * entries for a particular index. Used for both index_build and * retail creation of index entries. * - * NumIndexAttrs number of columns in this index - * KeyAttrNumbers underlying-rel attribute numbers used as keys - * (zeroes indicate expressions) + * NumIndexAttrs total number of columns in this index + * NumIndexKeyAttrs number of key columns in index + * IndexAttrNumbers underlying-rel attribute numbers used as keys + * (zeroes indicate expressions). It also contains + * info about included columns. * Expressions expr trees for expression entries, or NIL if none * ExpressionsState exec state for expressions, or NIL if none * Predicate partial-index predicate, or NIL if none @@ -114,25 +135,29 @@ typedef struct ExprState * ExclusionOps Per-column exclusion operators, or NULL if none * ExclusionProcs Underlying function OIDs for ExclusionOps * ExclusionStrats Opclass strategy numbers for ExclusionOps - * UniqueOps Theses are like Exclusion*, but for unique indexes + * UniqueOps These are like Exclusion*, but for unique indexes * UniqueProcs * UniqueStrats * Unique is it a unique index? + * OpclassOptions opclass-specific options, or NULL if none * ReadyForInserts is it valid for inserts? * Concurrent are we doing a concurrent index build? * BrokenHotChain did we detect any broken HOT chains? + * ParallelWorkers # of workers requested (excludes leader) + * Am Oid of index AM * AmCache private cache area for index AM * Context memory context holding this IndexInfo * - * ii_Concurrent and ii_BrokenHotChain are used only during index build; - * they're conventionally set to false otherwise. + * ii_Concurrent, ii_BrokenHotChain, and ii_ParallelWorkers are used only + * during index build; they're conventionally zeroed otherwise. * ---------------- */ typedef struct IndexInfo { NodeTag type; - int ii_NumIndexAttrs; - AttrNumber ii_KeyAttrNumbers[INDEX_MAX_KEYS]; + int ii_NumIndexAttrs; /* total number of columns in index */ + int ii_NumIndexKeyAttrs; /* number of key columns in index */ + AttrNumber ii_IndexAttrNumbers[INDEX_MAX_KEYS]; List *ii_Expressions; /* list of Expr */ List *ii_ExpressionsState; /* list of ExprState */ List *ii_Predicate; /* list of Expr */ @@ -143,10 +168,13 @@ typedef struct IndexInfo Oid *ii_UniqueOps; /* array with one entry per column */ Oid *ii_UniqueProcs; /* array with one entry per column */ uint16 *ii_UniqueStrats; /* array with one entry per column */ + Datum *ii_OpclassOptions; /* array with one entry per column */ bool ii_Unique; bool ii_ReadyForInserts; bool ii_Concurrent; bool ii_BrokenHotChain; + int ii_ParallelWorkers; + Oid ii_Am; void *ii_AmCache; MemoryContext ii_Context; } IndexInfo; @@ -194,8 +222,11 @@ typedef struct ExprContext NodeTag type; /* Tuples that Var nodes in expression may refer to */ +#define FIELDNO_EXPRCONTEXT_SCANTUPLE 1 TupleTableSlot *ecxt_scantuple; +#define FIELDNO_EXPRCONTEXT_INNERTUPLE 2 TupleTableSlot *ecxt_innertuple; +#define FIELDNO_EXPRCONTEXT_OUTERTUPLE 3 TupleTableSlot *ecxt_outertuple; /* Memory contexts for expression evaluation --- see notes above */ @@ -210,15 +241,21 @@ typedef struct ExprContext * Values to substitute for Aggref nodes in the expressions of an Agg * node, or for WindowFunc nodes within a WindowAgg node. */ +#define FIELDNO_EXPRCONTEXT_AGGVALUES 8 Datum *ecxt_aggvalues; /* precomputed values for aggs/windowfuncs */ +#define FIELDNO_EXPRCONTEXT_AGGNULLS 9 bool *ecxt_aggnulls; /* null flags for aggs/windowfuncs */ /* Value to substitute for CaseTestExpr nodes in expression */ +#define FIELDNO_EXPRCONTEXT_CASEDATUM 10 Datum caseValue_datum; +#define FIELDNO_EXPRCONTEXT_CASENULL 11 bool caseValue_isNull; /* Value to substitute for CoerceToDomainValue nodes in expression */ +#define FIELDNO_EXPRCONTEXT_DOMAINDATUM 12 Datum domainValue_datum; +#define FIELDNO_EXPRCONTEXT_DOMAINNULL 13 bool domainValue_isNull; /* Link to containing EState (NULL if a standalone ExprContext) */ @@ -336,18 +373,40 @@ typedef struct JunkFilter AttrNumber jf_junkAttNo; } JunkFilter; +/* + * OnConflictSetState + * + * Executor state of an ON CONFLICT DO UPDATE operation. + */ +typedef struct OnConflictSetState +{ + NodeTag type; + + TupleTableSlot *oc_Existing; /* slot to store existing target tuple in */ + TupleTableSlot *oc_ProjSlot; /* CONFLICT ... SET ... projection target */ + ProjectionInfo *oc_ProjInfo; /* for ON CONFLICT DO UPDATE SET */ + ExprState *oc_WhereClause; /* state for the WHERE clause */ +} OnConflictSetState; + /* * ResultRelInfo * * Whenever we update an existing relation, we have to update indexes on the * relation, and perhaps also fire triggers. ResultRelInfo holds all the * information needed about a result relation, including indexes. + * + * Normally, a ResultRelInfo refers to a table that is in the query's + * range table; then ri_RangeTableIndex is the RT index and ri_RelationDesc + * is just a copy of the relevant es_relations[] entry. But sometimes, + * in ResultRelInfos used only for triggers, ri_RangeTableIndex is zero + * and ri_RelationDesc is a separately-opened relcache pointer that needs + * to be separately closed. See ExecGetTriggerResultRel. */ typedef struct ResultRelInfo { NodeTag type; - /* result relation's range table index */ + /* result relation's range table index, or 0 if not in range table */ Index ri_RangeTableIndex; /* relation descriptor for result relation */ @@ -374,6 +433,11 @@ typedef struct ResultRelInfo /* optional runtime measurements for triggers */ Instrumentation *ri_TrigInstrument; + /* On-demand created slots for triggers / returning processing */ + TupleTableSlot *ri_ReturningSlot; /* for trigger output tuples */ + TupleTableSlot *ri_TrigOldSlot; /* for a trigger's old tuple */ + TupleTableSlot *ri_TrigNewSlot; /* for a trigger's new tuple */ + /* FDW callback functions, if foreign table */ struct FdwRoutine *ri_FdwRoutine; @@ -392,17 +456,26 @@ typedef struct ResultRelInfo /* array of constraint-checking expr states */ ExprState **ri_ConstraintExprs; + /* array of stored generated columns expr states */ + ExprState **ri_GeneratedExprs; + + /* number of stored generated columns we need to compute */ + int ri_NumGeneratedNeeded; + /* for removing junk attributes from tuples */ JunkFilter *ri_junkFilter; + /* list of RETURNING expressions */ + List *ri_returningList; + /* for computing a RETURNING list */ ProjectionInfo *ri_projectReturning; - /* for computing ON CONFLICT DO UPDATE SET */ - ProjectionInfo *ri_onConflictSetProj; + /* list of arbiter indexes to use to check conflicts */ + List *ri_onConflictArbiterIndexes; - /* list of ON CONFLICT DO UPDATE exprs (qual) */ - ExprState *ri_onConflictSetWhere; + /* ON CONFLICT evaluation state */ + OnConflictSetState *ri_onConflict; /* partition check expression */ List *ri_PartitionCheck; @@ -410,8 +483,19 @@ typedef struct ResultRelInfo /* partition check expression state */ ExprState *ri_PartitionCheckExpr; - /* relation descriptor for root partitioned table */ - Relation ri_PartitionRoot; + /* + * RootResultRelInfo gives the target relation mentioned in the query, if + * it's a partitioned table. It is not set if the target relation + * mentioned in the query is an inherited table, nor when tuple routing is + * not needed. + */ + struct ResultRelInfo *ri_RootResultRelInfo; + + /* Additional information specific to partition tuple routing */ + struct PartitionRoutingInfo *ri_PartitionInfo; + + /* For use by copy.c when performing multi-inserts */ + struct CopyMultiInsertBuffer *ri_CopyMultiInsertBuffer; } ResultRelInfo; /* ---------------- @@ -429,6 +513,11 @@ typedef struct EState Snapshot es_snapshot; /* time qual to use */ Snapshot es_crosscheck_snapshot; /* crosscheck time qual for RI */ List *es_range_table; /* List of RangeTblEntry */ + Index es_range_table_size; /* size of the range table arrays */ + Relation *es_relations; /* Array of per-range-table-entry Relation + * pointers, or NULL if not yet opened */ + struct ExecRowMark **es_rowmarks; /* Array of per-range-table-entry + * ExecRowMarks, or NULL if none */ PlannedStmt *es_plannedstmt; /* link to top of plan tree */ const char *es_sourceText; /* Source text from QueryDesc */ @@ -443,23 +532,23 @@ typedef struct EState ResultRelInfo *es_result_relation_info; /* currently active array elt */ /* - * Info about the target partitioned target table root(s) for - * update/delete queries. They required only to fire any per-statement - * triggers defined on the table. It exists separately from - * es_result_relations, because partitioned tables don't appear in the - * plan tree for the update/delete cases. + * Info about the partition root table(s) for insert/update/delete queries + * targeting partitioned tables. Only leaf partitions are mentioned in + * es_result_relations, but we need access to the roots for firing + * triggers and for runtime tuple routing. */ ResultRelInfo *es_root_result_relations; /* array of ResultRelInfos */ int es_num_root_result_relations; /* length of the array */ + PartitionDirectory es_partition_directory; /* for PartitionDesc lookup */ - /* Info about leaf partitions of partitioned table(s) for insert queries: */ - List *es_leaf_result_relations; /* List of ResultRelInfos */ + /* + * The following list contains ResultRelInfos created by the tuple routing + * code for partitions that don't already have one. + */ + List *es_tuple_routing_result_relations; /* Stuff used for firing triggers: */ List *es_trig_target_relations; /* trigger-only ResultRelInfos */ - TupleTableSlot *es_trig_tuple_slot; /* for trigger output tuples */ - TupleTableSlot *es_trig_oldtup_slot; /* for TriggerEnabled */ - TupleTableSlot *es_trig_newtup_slot; /* for TriggerEnabled */ /* Parameter info: */ ParamListInfo es_param_list_info; /* values of external params */ @@ -472,10 +561,7 @@ typedef struct EState List *es_tupleTable; /* List of TupleTableSlots */ - List *es_rowMarks; /* List of ExecRowMarks */ - uint64 es_processed; /* # of tuples processed */ - Oid es_lastoid; /* last oid processed (by INSERT) */ int es_top_eflags; /* eflags passed to ExecutorStart */ int es_instrument; /* OR of InstrumentOption flags */ @@ -495,22 +581,30 @@ typedef struct EState ExprContext *es_per_tuple_exprcontext; /* - * These fields are for re-evaluating plan quals when an updated tuple is - * substituted in READ COMMITTED mode. es_epqTuple[] contains tuples that - * scan plan nodes should return instead of whatever they'd normally - * return, or NULL if nothing to return; es_epqTupleSet[] is true if a - * particular array entry is valid; and es_epqScanDone[] is state to - * remember if the tuple has been returned already. Arrays are of size - * list_length(es_range_table) and are indexed by scan node scanrelid - 1. + * If not NULL, this is an EPQState's EState. This is a field in EState + * both to allow EvalPlanQual aware executor nodes to detect that they + * need to perform EPQ related work, and to provide necessary information + * to do so. */ - HeapTuple *es_epqTuple; /* array of EPQ substitute tuples */ - bool *es_epqTupleSet; /* true if EPQ tuple is provided */ - bool *es_epqScanDone; /* true if EPQ tuple has been fetched */ + struct EPQState *es_epq_active; + + bool es_use_parallel_mode; /* can we use parallel workers? */ /* The per-query shared memory area to use for parallel execution. */ struct dsa_area *es_query_dsa; - bool es_use_parallel_mode; /* can we use parallel workers? */ + /* + * JIT information. es_jit_flags indicates whether JIT should be performed + * and with which options. es_jit is created on-demand when JITing is + * performed. + * + * es_jit_worker_instr is the combined, on demand allocated, + * instrumentation from all workers. The leader's instrumentation is kept + * separate, and is combined on demand by ExplainPrintJITSummary(). + */ + int es_jit_flags; + struct JitContext *es_jit; + struct JitInstrumentation *es_jit_worker_instr; } EState; @@ -529,7 +623,9 @@ typedef struct EState * node that sources the relation (e.g., for a foreign table the FDW can use * ermExtra to hold information). * - * EState->es_rowMarks is a list of these structs. + * EState->es_rowmarks is an array of these structs, indexed by RT index, + * with NULLs for irrelevant RT indexes. es_rowmarks itself is NULL if + * there are no rowmarks. */ typedef struct ExecRowMark { @@ -551,7 +647,7 @@ typedef struct ExecRowMark * additional runtime representation of FOR [KEY] UPDATE/SHARE clauses * * Each LockRows and ModifyTable node keeps a list of the rowmarks it needs to - * deal with. In addition to a pointer to the related entry in es_rowMarks, + * deal with. In addition to a pointer to the related entry in es_rowmarks, * this struct carries the column number(s) of the resjunk columns associated * with the rowmark (see comments for PlanRowMark for more detail). In the * case of ModifyTable, there has to be a separate ExecAuxRowMark list for @@ -560,7 +656,7 @@ typedef struct ExecRowMark */ typedef struct ExecAuxRowMark { - ExecRowMark *rowmark; /* related entry in es_rowMarks */ + ExecRowMark *rowmark; /* related entry in es_rowmarks */ AttrNumber ctidAttNo; /* resno of ctid junk attribute, if any */ AttrNumber toidAttNo; /* resno of tableoid junk attribute, if any */ AttrNumber wholeAttNo; /* resno of whole-row junk attribute, if any */ @@ -577,10 +673,10 @@ typedef struct ExecAuxRowMark * Normally these are the only functions used, but FindTupleHashEntry() * supports searching a hashtable using cross-data-type hashing. For that, * the caller must supply hash functions for the LHS datatype as well as - * the cross-type equality operators to use. in_hash_funcs and cur_eq_funcs + * the cross-type equality operators to use. in_hash_funcs and cur_eq_func * are set to point to the caller's function arrays while doing such a search. * During LookupTupleHashEntry(), they point to tab_hash_funcs and - * tab_eq_funcs respectively. + * tab_eq_func respectively. * ---------------------------------------------------------------- */ typedef struct TupleHashEntryData *TupleHashEntry; @@ -608,7 +704,8 @@ typedef struct TupleHashTableData int numCols; /* number of columns in lookup key */ AttrNumber *keyColIdx; /* attr numbers of key columns */ FmgrInfo *tab_hash_funcs; /* hash functions for table datatype(s) */ - FmgrInfo *tab_eq_funcs; /* equality functions for table datatype(s) */ + ExprState *tab_eq_func; /* comparator for table datatype(s) */ + Oid *tab_collations; /* collations for hash and comparison */ MemoryContext tablecxt; /* memory context containing table */ MemoryContext tempcxt; /* context for function evaluations */ Size entrysize; /* actual size to make each hash entry */ @@ -616,8 +713,9 @@ typedef struct TupleHashTableData /* The following fields are set transiently for each table search: */ TupleTableSlot *inputslot; /* current input tuple's slot */ FmgrInfo *in_hash_funcs; /* hash functions for input datatype(s) */ - FmgrInfo *cur_eq_funcs; /* equality functions for input vs. table */ + ExprState *cur_eq_func; /* comparator for input vs. table */ uint32 hash_iv; /* hash-function IV */ + ExprContext *exprcontext; /* expression context */ } TupleHashTableData; typedef tuplehash_iterator TupleHashIterator; @@ -746,7 +844,7 @@ typedef struct SetExprState * (by InitFunctionCallInfoData) if func.fn_oid is valid. It also saves * argument values between calls, when setArgsValid is true. */ - FunctionCallInfoData fcinfo_data; + FunctionCallInfo fcinfo; } SetExprState; /* ---------------- @@ -764,22 +862,27 @@ typedef struct SubPlanState HeapTuple curTuple; /* copy of most recent tuple from subplan */ Datum curArray; /* most recent array from ARRAY() subplan */ /* these are used when hashing the subselect's output: */ + TupleDesc descRight; /* subselect desc after projection */ ProjectionInfo *projLeft; /* for projecting lefthand exprs */ ProjectionInfo *projRight; /* for projecting subselect output */ TupleHashTable hashtable; /* hash table for no-nulls subselect rows */ TupleHashTable hashnulls; /* hash table for rows with null(s) */ - bool havehashrows; /* TRUE if hashtable is not empty */ - bool havenullrows; /* TRUE if hashnulls is not empty */ + bool havehashrows; /* true if hashtable is not empty */ + bool havenullrows; /* true if hashnulls is not empty */ MemoryContext hashtablecxt; /* memory context containing hash tables */ MemoryContext hashtempcxt; /* temp memory context for hash tables */ ExprContext *innerecontext; /* econtext for computing inner tuples */ - /* each of the following fields is an array of length numCols: */ + int numCols; /* number of columns being hashed */ + /* each of the remaining fields is an array of length numCols: */ AttrNumber *keyColIdx; /* control data for hash tables */ + Oid *tab_eq_funcoids; /* equality func oids for table + * datatype(s) */ + Oid *tab_collations; /* collations for hash and comparison */ FmgrInfo *tab_hash_funcs; /* hash functions for table datatype(s) */ FmgrInfo *tab_eq_funcs; /* equality functions for table datatype(s) */ FmgrInfo *lhs_hash_funcs; /* hash functions for lefthand datatype(s) */ FmgrInfo *cur_eq_funcs; /* equality functions for LHS vs. table */ - int numCols; /* number of columns being hashed */ + ExprState *cur_eq_comp; /* equality comparator for LHS vs. table */ } SubPlanState; /* ---------------- @@ -825,8 +928,6 @@ typedef struct DomainConstraintState * ---------------------------------------------------------------- */ -struct PlanState; - /* ---------------- * ExecProcNodeMtd * @@ -861,6 +962,9 @@ typedef struct PlanState Instrumentation *instrument; /* Optional runtime stats for this node */ WorkerInstrumentation *worker_instrument; /* per-worker instrumentation */ + /* Per-worker JIT instrumentation */ + struct SharedJitInstrumentation *worker_jit_instrument; + /* * Common structural data for all Plan types. These links to subsidiary * state trees parallel links in the associated plan tree (except for the @@ -869,6 +973,7 @@ typedef struct PlanState ExprState *qual; /* boolean qual condition */ struct PlanState *lefttree; /* input plan tree(s) */ struct PlanState *righttree; + List *initPlan; /* Init SubPlanState nodes (un-correlated expr * subselects) */ List *subPlan; /* SubPlanState nodes in my expressions */ @@ -881,9 +986,53 @@ typedef struct PlanState /* * Other run-time state needed by most if not all node types. */ + TupleDesc ps_ResultTupleDesc; /* node's return type */ TupleTableSlot *ps_ResultTupleSlot; /* slot for my result tuples */ ExprContext *ps_ExprContext; /* node's expression-evaluation context */ ProjectionInfo *ps_ProjInfo; /* info for doing tuple projection */ + + /* + * Scanslot's descriptor if known. This is a bit of a hack, but otherwise + * it's hard for expression compilation to optimize based on the + * descriptor, without encoding knowledge about all executor nodes. + */ + TupleDesc scandesc; + + /* + * Define the slot types for inner, outer and scanslots for expression + * contexts with this state as a parent. If *opsset is set, then + * *opsfixed indicates whether *ops is guaranteed to be the type of slot + * used. That means that every slot in the corresponding + * ExprContext.ecxt_*tuple will point to a slot of that type, while + * evaluating the expression. If *opsfixed is false, but *ops is set, + * that indicates the most likely type of slot. + * + * The scan* fields are set by ExecInitScanTupleSlot(). If that's not + * called, nodes can initialize the fields themselves. + * + * If outer/inneropsset is false, the information is inferred on-demand + * using ExecGetResultSlotOps() on ->righttree/lefttree, using the + * corresponding node's resultops* fields. + * + * The result* fields are automatically set when ExecInitResultSlot is + * used (be it directly or when the slot is created by + * ExecAssignScanProjectionInfo() / + * ExecConditionalAssignProjectionInfo()). If no projection is necessary + * ExecConditionalAssignProjectionInfo() defaults those fields to the scan + * operations. + */ + const TupleTableSlotOps *scanops; + const TupleTableSlotOps *outerops; + const TupleTableSlotOps *innerops; + const TupleTableSlotOps *resultops; + bool scanopsfixed; + bool outeropsfixed; + bool inneropsfixed; + bool resultopsfixed; + bool scanopsset; + bool outeropsset; + bool inneropsset; + bool resultopsset; } PlanState; /* ---------------- @@ -897,6 +1046,11 @@ typedef struct PlanState #define outerPlanState(node) (((PlanState *)(node))->lefttree) /* Macros for inline access to certain instrumentation counters */ +#define InstrCountTuples2(node, delta) \ + do { \ + if (((PlanState *)(node))->instrument) \ + ((PlanState *)(node))->instrument->ntuples2 += (delta); \ + } while (0) #define InstrCountFiltered1(node, delta) \ do { \ if (((PlanState *)(node))->instrument) \ @@ -910,17 +1064,73 @@ typedef struct PlanState /* * EPQState is state for executing an EvalPlanQual recheck on a candidate - * tuple in ModifyTable or LockRows. The estate and planstate fields are - * NULL if inactive. + * tuples e.g. in ModifyTable or LockRows. + * + * To execute EPQ a separate EState is created (stored in ->recheckestate), + * which shares some resources, like the rangetable, with the main query's + * EState (stored in ->parentestate). The (sub-)tree of the plan that needs to + * be rechecked (in ->plan), is separately initialized (into + * ->recheckplanstate), but shares plan nodes with the corresponding nodes in + * the main query. The scan nodes in that separate executor tree are changed + * to return only the current tuple of interest for the respective + * table. Those tuples are either provided by the caller (using + * EvalPlanQualSlot), and/or found using the rowmark mechanism (non-locking + * rowmarks by the EPQ machinery itself, locking ones by the caller). + * + * While the plan to be checked may be changed using EvalPlanQualSetPlan() - + * e.g. so all source plans for a ModifyTable node can be processed - all such + * plans need to share the same EState. */ typedef struct EPQState { - EState *estate; /* subsidiary EState */ - PlanState *planstate; /* plan state tree ready to be executed */ - TupleTableSlot *origslot; /* original output tuple to be rechecked */ + /* Initialized at EvalPlanQualInit() time: */ + + EState *parentestate; /* main query's EState */ + int epqParam; /* ID of Param to force scan node re-eval */ + + /* + * Tuples to be substituted by scan nodes. They need to set up, before + * calling EvalPlanQual()/EvalPlanQualNext(), into the slot returned by + * EvalPlanQualSlot(scanrelid). The array is indexed by scanrelid - 1. + */ + List *tuple_table; /* tuple table for relsubs_slot */ + TupleTableSlot **relsubs_slot; + + /* + * Initialized by EvalPlanQualInit(), may be changed later with + * EvalPlanQualSetPlan(): + */ + Plan *plan; /* plan tree to be executed */ List *arowMarks; /* ExecAuxRowMarks (non-locking only) */ - int epqParam; /* ID of Param to force scan node re-eval */ + + + /* + * The original output tuple to be rechecked. Set by + * EvalPlanQualSetSlot(), before EvalPlanQualNext() or EvalPlanQual() may + * be called. + */ + TupleTableSlot *origslot; + + + /* Initialized or reset by EvalPlanQualBegin(): */ + + EState *recheckestate; /* EState for EPQ execution, see above */ + + /* + * Rowmarks that can be fetched on-demand using + * EvalPlanQualFetchRowMark(), indexed by scanrelid - 1. Only non-locking + * rowmarks. + */ + ExecAuxRowMark **relsubs_rowmark; + + /* + * True if a relation's EPQ tuple has been fetched for relation, indexed + * by scanrelid - 1. + */ + bool *relsubs_done; + + PlanState *recheckplanstate; /* EPQ specific exec nodes, for ->plan */ } EPQState; @@ -950,6 +1160,7 @@ typedef struct ProjectSetState ExprDoneCond *elemdone; /* array of per-SRF is-done states */ int nelems; /* length of elemdone[] array */ bool pending_srf_tuples; /* still evaluating srfs in tlist? */ + MemoryContext argcontext; /* context for SRF arguments */ } ProjectSetState; /* ---------------- @@ -965,33 +1176,23 @@ typedef struct ModifyTableState PlanState **mt_plans; /* subplans (one per target rel) */ int mt_nplans; /* number of plans in the array */ int mt_whichplan; /* which one is being executed (0..n-1) */ + TupleTableSlot **mt_scans; /* input tuple corresponding to underlying + * plans */ ResultRelInfo *resultRelInfo; /* per-subplan target relations */ ResultRelInfo *rootResultRelInfo; /* root target relation (partitioned * table root) */ List **mt_arowmarks; /* per-subplan ExecAuxRowMark lists */ EPQState mt_epqstate; /* for evaluating EvalPlanQual rechecks */ bool fireBSTriggers; /* do we need to fire stmt triggers? */ - OnConflictAction mt_onconflict; /* ON CONFLICT type */ - List *mt_arbiterindexes; /* unique index OIDs to arbitrate taking - * alt path */ - TupleTableSlot *mt_existing; /* slot to store existing target tuple in */ - List *mt_excludedtlist; /* the excluded pseudo relation's tlist */ - TupleTableSlot *mt_conflproj; /* CONFLICT ... SET ... projection target */ - struct PartitionDispatchData **mt_partition_dispatch_info; - /* Tuple-routing support info */ - int mt_num_dispatch; /* Number of entries in the above array */ - int mt_num_partitions; /* Number of members in the following - * arrays */ - ResultRelInfo *mt_partitions; /* Per partition result relation */ - - /* Per partition tuple conversion map */ - TupleConversionMap **mt_partition_tupconv_maps; /* - * Used to manipulate any given leaf partition's rowtype after that - * partition is chosen for insertion by tuple-routing. + * Slot for storing tuples in the root partitioned table's rowtype during + * an UPDATE of a partitioned table. */ - TupleTableSlot *mt_partition_tuple_slot; + TupleTableSlot *mt_root_tuple_slot; + + /* Tuple-routing support info */ + struct PartitionTupleRouting *mt_partition_tuple_routing; /* controls transition table population for specified operation */ struct TransitionCaptureState *mt_transition_capture; @@ -999,24 +1200,43 @@ typedef struct ModifyTableState /* controls transition table population for INSERT...ON CONFLICT UPDATE */ struct TransitionCaptureState *mt_oc_transition_capture; - /* Per plan/partition tuple conversion */ - TupleConversionMap **mt_transition_tupconv_maps; + /* Per plan map for tuple conversion from child to root */ + TupleConversionMap **mt_per_subplan_tupconv_maps; } ModifyTableState; /* ---------------- * AppendState information * - * nplans how many plans are in the array - * whichplan which plan is being executed (0 .. n-1) + * nplans how many plans are in the array + * whichplan which plan is being executed (0 .. n-1), or a + * special negative value. See nodeAppend.c. + * prune_state details required to allow partitions to be + * eliminated from the scan, or NULL if not possible. + * valid_subplans for runtime pruning, valid appendplans indexes to + * scan. * ---------------- */ -typedef struct AppendState + +struct AppendState; +typedef struct AppendState AppendState; +struct ParallelAppendState; +typedef struct ParallelAppendState ParallelAppendState; +struct PartitionPruneState; + +struct AppendState { PlanState ps; /* its first field is NodeTag */ PlanState **appendplans; /* array of PlanStates for my inputs */ int as_nplans; int as_whichplan; -} AppendState; + int as_first_partial_plan; /* Index of 'appendplans' containing + * the first partial plan */ + ParallelAppendState *as_pstate; /* parallel coordination info */ + Size pstate_len; /* size of parallel coordination info */ + struct PartitionPruneState *as_prune_state; + Bitmapset *as_valid_subplans; + bool (*choose_next_subplan) (AppendState *); +}; /* ---------------- * MergeAppendState information @@ -1027,6 +1247,10 @@ typedef struct AppendState * slots current output tuple of each subplan * heap heap of active tuples * initialized true if we have fetched first tuple from each subplan + * prune_state details required to allow partitions to be + * eliminated from the scan, or NULL if not possible. + * valid_subplans for runtime pruning, valid mergeplans indexes to + * scan. * ---------------- */ typedef struct MergeAppendState @@ -1039,6 +1263,8 @@ typedef struct MergeAppendState TupleTableSlot **ms_slots; /* array of length ms_nplans */ struct binaryheap *ms_heap; /* binary heap of slot indices */ bool ms_initialized; /* are subplans started? */ + struct PartitionPruneState *ms_prune_state; + Bitmapset *ms_valid_subplans; } MergeAppendState; /* ---------------- @@ -1060,7 +1286,7 @@ typedef struct RecursiveUnionState Tuplestorestate *working_table; Tuplestorestate *intermediate_table; /* Remaining fields are unused in UNION ALL case */ - FmgrInfo *eqfunctions; /* per-grouping-field equality fns */ + Oid *eqfuncoids; /* per-grouping-field equality fns */ FmgrInfo *hashfunctions; /* per-grouping-field hash fns */ MemoryContext tempContext; /* short-term context for comparisons */ TupleHashTable hashtable; /* hash table for tuples already seen */ @@ -1112,7 +1338,7 @@ typedef struct ScanState { PlanState ps; /* its first field is NodeTag */ Relation ss_currentRelation; - HeapScanDesc ss_currentScanDesc; + struct TableScanDescData *ss_currentScanDesc; TupleTableSlot *ss_ScanTupleSlot; } ScanState; @@ -1142,6 +1368,9 @@ typedef struct SampleScanState bool use_pagemode; /* use page-at-a-time visibility checking? */ bool begun; /* false means need to call BeginSampleScan */ uint32 seed; /* random seed */ + int64 donetuples; /* number of tuples already returned */ + bool haveblock; /* has a block for sampling been determined */ + bool done; /* exhausted all tuples? */ } SampleScanState; /* @@ -1151,14 +1380,14 @@ typedef struct SampleScanState */ typedef struct { - ScanKey scan_key; /* scankey to put value into */ + struct ScanKeyData *scan_key; /* scankey to put value into */ ExprState *key_expr; /* expr to evaluate to get value */ bool key_toastable; /* is expr's result a toastable datatype? */ } IndexRuntimeKeyInfo; typedef struct { - ScanKey scan_key; /* scankey to put value into */ + struct ScanKeyData *scan_key; /* scankey to put value into */ ExprState *array_expr; /* expr to evaluate to get array value */ int next_elem; /* next array element to use */ int num_elems; /* number of elems in current array value */ @@ -1189,7 +1418,7 @@ typedef struct * SortSupport for reordering ORDER BY exprs * OrderByTypByVals is the datatype of order by expression pass-by-value? * OrderByTypLens typlens of the datatypes of order by expressions - * pscan_len size of parallel index scan descriptor + * PscanLen size of parallel index scan descriptor * ---------------- */ typedef struct IndexScanState @@ -1197,16 +1426,16 @@ typedef struct IndexScanState ScanState ss; /* its first field is NodeTag */ ExprState *indexqualorig; List *indexorderbyorig; - ScanKey iss_ScanKeys; + struct ScanKeyData *iss_ScanKeys; int iss_NumScanKeys; - ScanKey iss_OrderByKeys; + struct ScanKeyData *iss_OrderByKeys; int iss_NumOrderByKeys; IndexRuntimeKeyInfo *iss_RuntimeKeys; int iss_NumRuntimeKeys; bool iss_RuntimeKeysReady; ExprContext *iss_RuntimeContext; Relation iss_RelationDesc; - IndexScanDesc iss_ScanDesc; + struct IndexScanDescData *iss_ScanDesc; /* These are needed for re-checking ORDER BY expr ordering */ pairingheap *iss_ReorderQueue; @@ -1233,27 +1462,27 @@ typedef struct IndexScanState * RuntimeContext expr context for evaling runtime Skeys * RelationDesc index relation descriptor * ScanDesc index scan descriptor + * TableSlot slot for holding tuples fetched from the table * VMBuffer buffer in use for visibility map testing, if any - * HeapFetches number of tuples we were forced to fetch from heap - * ioss_PscanLen Size of parallel index-only scan descriptor + * PscanLen size of parallel index-only scan descriptor * ---------------- */ typedef struct IndexOnlyScanState { ScanState ss; /* its first field is NodeTag */ ExprState *indexqual; - ScanKey ioss_ScanKeys; + struct ScanKeyData *ioss_ScanKeys; int ioss_NumScanKeys; - ScanKey ioss_OrderByKeys; + struct ScanKeyData *ioss_OrderByKeys; int ioss_NumOrderByKeys; IndexRuntimeKeyInfo *ioss_RuntimeKeys; int ioss_NumRuntimeKeys; bool ioss_RuntimeKeysReady; ExprContext *ioss_RuntimeContext; Relation ioss_RelationDesc; - IndexScanDesc ioss_ScanDesc; + struct IndexScanDescData *ioss_ScanDesc; + TupleTableSlot *ioss_TableSlot; Buffer ioss_VMBuffer; - long ioss_HeapFetches; Size ioss_PscanLen; } IndexOnlyScanState; @@ -1277,7 +1506,7 @@ typedef struct BitmapIndexScanState { ScanState ss; /* its first field is NodeTag */ TIDBitmap *biss_result; - ScanKey biss_ScanKeys; + struct ScanKeyData *biss_ScanKeys; int biss_NumScanKeys; IndexRuntimeKeyInfo *biss_RuntimeKeys; int biss_NumRuntimeKeys; @@ -1286,7 +1515,7 @@ typedef struct BitmapIndexScanState bool biss_RuntimeKeysReady; ExprContext *biss_RuntimeContext; Relation biss_RelationDesc; - IndexScanDesc biss_ScanDesc; + struct IndexScanDescData *biss_ScanDesc; } BitmapIndexScanState; /* ---------------- @@ -1341,6 +1570,10 @@ typedef struct ParallelBitmapHeapState * tbm bitmap obtained from child index scan(s) * tbmiterator iterator for scanning current pages * tbmres current-page data + * can_skip_fetch can we potentially skip tuple fetches in this scan? + * return_empty_tuples number of empty tuples to return + * vmbuffer buffer for visibility-map lookups + * pvmbuffer ditto, for prefetched pages * exact_pages total number of exact pages retrieved * lossy_pages total number of lossy pages retrieved * prefetch_iterator iterator for prefetching ahead of current page @@ -1361,6 +1594,10 @@ typedef struct BitmapHeapScanState TIDBitmap *tbm; TBMIterator *tbmiterator; TBMIterateResult *tbmres; + bool can_skip_fetch; + int return_empty_tuples; + Buffer vmbuffer; + Buffer pvmbuffer; long exact_pages; long lossy_pages; TBMIterator *prefetch_iterator; @@ -1468,10 +1705,9 @@ typedef struct ValuesScanState ScanState ss; /* its first field is NodeTag */ ExprContext *rowcontext; List **exprlists; + List **exprstatelists; int array_len; int curr_idx; - /* in back branches, put this at the end to avoid ABI break: */ - List **exprstatelists; } ValuesScanState; /* ---------------- @@ -1683,7 +1919,6 @@ typedef struct MergeJoinState * * hashclauses original form of the hashjoin condition * hj_OuterHashKeys the outer hash keys in the hashjoin condition - * hj_InnerHashKeys the inner hash keys in the hashjoin condition * hj_HashOperators the join operators in the hashjoin condition * hj_HashTable hash table for the hashjoin * (NULL if table not built yet) @@ -1714,8 +1949,8 @@ typedef struct HashJoinState JoinState js; /* its first field is NodeTag */ ExprState *hashclauses; List *hj_OuterHashKeys; /* list of ExprState nodes */ - List *hj_InnerHashKeys; /* list of ExprState nodes */ List *hj_HashOperators; /* list of operator OIDs */ + List *hj_Collations; HashJoinTable hj_HashTable; uint32 hj_CurHashValue; int hj_CurBucketNo; @@ -1754,6 +1989,31 @@ typedef struct MaterialState Tuplestorestate *tuplestorestate; } MaterialState; + +/* ---------------- + * When performing sorting by multiple keys, it's possible that the input + * dataset is already sorted on a prefix of those keys. We call these + * "presorted keys". + * PresortedKeyData represents information about one such key. + * ---------------- + */ +typedef struct PresortedKeyData +{ + FmgrInfo flinfo; /* comparison function info */ + FunctionCallInfo fcinfo; /* comparison function call info */ + OffsetNumber attno; /* attribute number in tuple */ +} PresortedKeyData; + +/* ---------------- + * Shared memory container for per-worker sort information + * ---------------- + */ +typedef struct SharedSortInfo +{ + int num_workers; + TuplesortInstrumentation sinstrument[FLEXIBLE_ARRAY_MEMBER]; +} SharedSortInfo; + /* ---------------- * SortState information * ---------------- @@ -1768,8 +2028,75 @@ typedef struct SortState bool bounded_Done; /* value of bounded we did the sort with */ int64 bound_Done; /* value of bound we did the sort with */ void *tuplesortstate; /* private state of tuplesort.c */ + bool am_worker; /* are we a worker? */ + SharedSortInfo *shared_info; /* one entry per worker */ } SortState; +/* ---------------- + * Instrumentation information for IncrementalSort + * ---------------- + */ +typedef struct IncrementalSortGroupInfo +{ + int64 groupCount; + int64 maxDiskSpaceUsed; + int64 totalDiskSpaceUsed; + int64 maxMemorySpaceUsed; + int64 totalMemorySpaceUsed; + bits32 sortMethods; /* bitmask of TuplesortMethod */ +} IncrementalSortGroupInfo; + +typedef struct IncrementalSortInfo +{ + IncrementalSortGroupInfo fullsortGroupInfo; + IncrementalSortGroupInfo prefixsortGroupInfo; +} IncrementalSortInfo; + +/* ---------------- + * Shared memory container for per-worker incremental sort information + * ---------------- + */ +typedef struct SharedIncrementalSortInfo +{ + int num_workers; + IncrementalSortInfo sinfo[FLEXIBLE_ARRAY_MEMBER]; +} SharedIncrementalSortInfo; + +/* ---------------- + * IncrementalSortState information + * ---------------- + */ +typedef enum +{ + INCSORT_LOADFULLSORT, + INCSORT_LOADPREFIXSORT, + INCSORT_READFULLSORT, + INCSORT_READPREFIXSORT, +} IncrementalSortExecutionStatus; + +typedef struct IncrementalSortState +{ + ScanState ss; /* its first field is NodeTag */ + bool bounded; /* is the result set bounded? */ + int64 bound; /* if bounded, how many tuples are needed */ + bool outerNodeDone; /* finished fetching tuples from outer node */ + int64 bound_Done; /* value of bound we did the sort with */ + IncrementalSortExecutionStatus execution_status; + int64 n_fullsort_remaining; + Tuplesortstate *fullsort_state; /* private state of tuplesort.c */ + Tuplesortstate *prefixsort_state; /* private state of tuplesort.c */ + /* the keys by which the input path is already sorted */ + PresortedKeyData *presorted_keys; + + IncrementalSortInfo incsort_info; + + /* slot for pivot tuple defining values of presorted keys within group */ + TupleTableSlot *group_pivot; + TupleTableSlot *transfer_tuple; + bool am_worker; /* are we a worker? */ + SharedIncrementalSortInfo *shared_info; /* one entry per worker */ +} IncrementalSortState; + /* --------------------- * GroupState information * --------------------- @@ -1777,10 +2104,31 @@ typedef struct SortState typedef struct GroupState { ScanState ss; /* its first field is NodeTag */ - FmgrInfo *eqfunctions; /* per-field lookup data for equality fns */ + ExprState *eqfunction; /* equality function */ bool grp_done; /* indicates completion of Group scan */ } GroupState; +/* --------------------- + * per-worker aggregate information + * --------------------- + */ +typedef struct AggregateInstrumentation +{ + Size hash_mem_peak; /* peak hash table memory usage */ + uint64 hash_disk_used; /* kB of disk space used */ + int hash_batches_used; /* batches used during entire execution */ +} AggregateInstrumentation; + +/* ---------------- + * Shared memory container for per-worker aggregate information + * ---------------- + */ +typedef struct SharedAggInfo +{ + int num_workers; + AggregateInstrumentation sinstrument[FLEXIBLE_ARRAY_MEMBER]; +} SharedAggInfo; + /* --------------------- * AggState information * @@ -1816,14 +2164,21 @@ typedef struct AggState ExprContext *hashcontext; /* econtexts for long-lived data (hashtable) */ ExprContext **aggcontexts; /* econtexts for long-lived data (per GS) */ ExprContext *tmpcontext; /* econtext for input expressions */ +#define FIELDNO_AGGSTATE_CURAGGCONTEXT 14 ExprContext *curaggcontext; /* currently active aggcontext */ + AggStatePerAgg curperagg; /* currently active aggregate, if any */ +#define FIELDNO_AGGSTATE_CURPERTRANS 16 AggStatePerTrans curpertrans; /* currently active trans state, if any */ bool input_done; /* indicates end of input */ bool agg_done; /* indicates completion of Agg scan */ int projected_set; /* The last projected grouping set */ +#define FIELDNO_AGGSTATE_CURRENT_SET 20 int current_set; /* The current grouping set being evaluated */ Bitmapset *grouped_cols; /* grouped cols in current projection */ List *all_grouped_cols; /* list of all grouped cols in DESC order */ + Bitmapset *colnos_needed; /* all columns needed from the outer plan */ + int max_colno_needed; /* highest colno needed from outer plan */ + bool all_cols_needed; /* are all cols from outer plan needed? */ /* These fields are for grouping set phase data */ int maxsets; /* The max number of sets in any phase */ AggStatePerPhase phases; /* array of all phases */ @@ -1831,16 +2186,43 @@ typedef struct AggState Tuplesortstate *sort_out; /* input is copied here for next phase */ TupleTableSlot *sort_slot; /* slot for sort results */ /* these fields are used in AGG_PLAIN and AGG_SORTED modes: */ - AggStatePerGroup pergroup; /* per-Aggref-per-group working state */ + AggStatePerGroup *pergroups; /* grouping set indexed array of per-group + * pointers */ HeapTuple grp_firstTuple; /* copy of first tuple of current group */ /* these fields are used in AGG_HASHED and AGG_MIXED modes: */ bool table_filled; /* hash table filled yet? */ int num_hashes; - AggStatePerHash perhash; - AggStatePerGroup *hash_pergroup; /* array of per-group pointers */ + MemoryContext hash_metacxt; /* memory for hash table itself */ + struct HashTapeInfo *hash_tapeinfo; /* metadata for spill tapes */ + struct HashAggSpill *hash_spills; /* HashAggSpill for each grouping set, + * exists only during first pass */ + TupleTableSlot *hash_spill_rslot; /* for reading spill files */ + TupleTableSlot *hash_spill_wslot; /* for writing spill files */ + List *hash_batches; /* hash batches remaining to be processed */ + bool hash_ever_spilled; /* ever spilled during this execution? */ + bool hash_spill_mode; /* we hit a limit during the current batch + * and we must not create new groups */ + Size hash_mem_limit; /* limit before spilling hash table */ + uint64 hash_ngroups_limit; /* limit before spilling hash table */ + int hash_planned_partitions; /* number of partitions planned + * for first pass */ + double hashentrysize; /* estimate revised during execution */ + Size hash_mem_peak; /* peak hash table memory usage */ + uint64 hash_ngroups_current; /* number of groups currently in + * memory in all hash tables */ + uint64 hash_disk_used; /* kB of disk space used */ + int hash_batches_used; /* batches used during entire execution */ + + AggStatePerHash perhash; /* array of per-hashtable data */ + AggStatePerGroup *hash_pergroup; /* grouping set indexed array of + * per-group pointers */ + /* support for evaluation of agg input expressions: */ +#define FIELDNO_AGGSTATE_ALL_PERGROUPS 53 + AggStatePerGroup *all_pergroups; /* array of first ->pergroups, than + * ->hash_pergroup */ ProjectionInfo *combinedproj; /* projection machinery */ - AggStatePerAgg curperagg; /* currently active aggregate, if any */ + SharedAggInfo *shared_info; /* one entry per worker */ } AggState; /* ---------------- @@ -1862,14 +2244,17 @@ typedef struct WindowAggState WindowStatePerFunc perfunc; /* per-window-function information */ WindowStatePerAgg peragg; /* per-plain-aggregate information */ - FmgrInfo *partEqfunctions; /* equality funcs for partition columns */ - FmgrInfo *ordEqfunctions; /* equality funcs for ordering columns */ + ExprState *partEqfunction; /* equality funcs for partition columns */ + ExprState *ordEqfunction; /* equality funcs for ordering columns */ Tuplestorestate *buffer; /* stores rows of current partition */ - int current_ptr; /* read pointer # for current */ + int current_ptr; /* read pointer # for current row */ + int framehead_ptr; /* read pointer # for frame head, if used */ + int frametail_ptr; /* read pointer # for frame tail, if used */ + int grouptail_ptr; /* read pointer # for group tail, if used */ int64 spooled_rows; /* total # of rows in buffer */ int64 currentpos; /* position of current row in partition */ int64 frameheadpos; /* current frame head position */ - int64 frametailpos; /* current frame tail position */ + int64 frametailpos; /* current frame tail position (frame end+1) */ /* use struct pointer to avoid including windowapi.h here */ struct WindowObjectData *agg_winobj; /* winobj for aggregate fetches */ int64 aggregatedbase; /* start row for current aggregates */ @@ -1881,6 +2266,20 @@ typedef struct WindowAggState Datum startOffsetValue; /* result of startOffset evaluation */ Datum endOffsetValue; /* result of endOffset evaluation */ + /* these fields are used with RANGE offset PRECEDING/FOLLOWING: */ + FmgrInfo startInRangeFunc; /* in_range function for startOffset */ + FmgrInfo endInRangeFunc; /* in_range function for endOffset */ + Oid inRangeColl; /* collation for in_range tests */ + bool inRangeAsc; /* use ASC sort order for in_range tests? */ + bool inRangeNullsFirst; /* nulls sort first for in_range tests? */ + + /* these fields are used in GROUPS mode: */ + int64 currentgroup; /* peer group # of current row in partition */ + int64 frameheadgroup; /* peer group # of frame head row */ + int64 frametailgroup; /* peer group # of frame tail row */ + int64 groupheadpos; /* current row's peer group head position */ + int64 grouptailpos; /* " " " " tail position (group end+1) */ + MemoryContext partcontext; /* context for partition-lifespan data */ MemoryContext aggcontext; /* shared context for aggregate working data */ MemoryContext curaggcontext; /* current aggregate's working data */ @@ -1896,9 +2295,13 @@ typedef struct WindowAggState * date for current row */ bool frametail_valid; /* true if frametailpos is known up to * date for current row */ + bool grouptail_valid; /* true if grouptailpos is known up to + * date for current row */ TupleTableSlot *first_part_slot; /* first tuple of current or next * partition */ + TupleTableSlot *framehead_slot; /* first tuple of current frame */ + TupleTableSlot *frametail_slot; /* first tuple after current frame */ /* temporary slots for tuples fetched back from tuplestore */ TupleTableSlot *agg_row_slot; @@ -1920,8 +2323,7 @@ typedef struct WindowAggState typedef struct UniqueState { PlanState ps; /* its first field is NodeTag */ - FmgrInfo *eqfunctions; /* per-field lookup data for equality fns */ - MemoryContext tempContext; /* short-term context for comparisons */ + ExprState *eqfunction; /* tuple equality qual */ } UniqueState; /* ---------------- @@ -1936,6 +2338,7 @@ typedef struct GatherState PlanState ps; /* its first field is NodeTag */ bool initialized; /* workers launched? */ bool need_to_scan_locally; /* need to read from local plan? */ + int64 tuples_needed; /* tuple bound, see ExecSetTupleBound */ /* these fields are set up once: */ TupleTableSlot *funnel_slot; struct ParallelExecutorInfo *pei; @@ -1962,6 +2365,7 @@ typedef struct GatherMergeState bool initialized; /* workers launched? */ bool gm_initialized; /* gather_merge_init() done? */ bool need_to_scan_locally; /* need to read from local plan? */ + int64 tuples_needed; /* tuple bound, see ExecSetTupleBound */ /* these fields are set up once: */ TupleDesc tupDesc; /* descriptor for subplan result tuples */ int gm_nkeys; /* number of sort columns */ @@ -1977,6 +2381,29 @@ typedef struct GatherMergeState struct binaryheap *gm_heap; /* binary heap of slot indices */ } GatherMergeState; +/* ---------------- + * Values displayed by EXPLAIN ANALYZE + * ---------------- + */ +typedef struct HashInstrumentation +{ + int nbuckets; /* number of buckets at end of execution */ + int nbuckets_original; /* planned number of buckets */ + int nbatch; /* number of batches at end of execution */ + int nbatch_original; /* planned number of batches */ + Size space_peak; /* peak memory usage in bytes */ +} HashInstrumentation; + +/* ---------------- + * Shared memory container for per-worker hash information + * ---------------- + */ +typedef struct SharedHashInfo +{ + int num_workers; + HashInstrumentation hinstrument[FLEXIBLE_ARRAY_MEMBER]; +} SharedHashInfo; + /* ---------------- * HashState information * ---------------- @@ -1986,7 +2413,24 @@ typedef struct HashState PlanState ps; /* its first field is NodeTag */ HashJoinTable hashtable; /* hash table for the hashjoin */ List *hashkeys; /* list of ExprState nodes */ - /* hashkeys is same as parent's hj_InnerHashKeys */ + + /* + * In a parallelized hash join, the leader retains a pointer to the + * shared-memory stats area in its shared_info field, and then copies the + * shared-memory info back to local storage before DSM shutdown. The + * shared_info field remains NULL in workers, or in non-parallel joins. + */ + SharedHashInfo *shared_info; + + /* + * If we are collecting hash stats, this points to an initially-zeroed + * collection area, which could be either local storage or in shared + * memory; either way it's for just one process. + */ + HashInstrumentation *hinstrument; + + /* Parallel hash state. */ + struct ParallelHashJoinState *parallel_state; } HashState; /* ---------------- @@ -2004,11 +2448,11 @@ typedef struct SetOpStatePerGroupData *SetOpStatePerGroup; typedef struct SetOpState { PlanState ps; /* its first field is NodeTag */ - FmgrInfo *eqfunctions; /* per-grouping-field equality fns */ + ExprState *eqfunction; /* equality comparator */ + Oid *eqfuncoids; /* per-grouping-field equality fns */ FmgrInfo *hashfunctions; /* per-grouping-field hash fns */ bool setop_done; /* indicates completion of output scan */ long numOutput; /* number of dups left to output */ - MemoryContext tempContext; /* short-term context for comparisons */ /* these fields are used in SETOP_SORTED mode: */ SetOpStatePerGroup pergroup; /* per-group working state */ HeapTuple grp_firstTuple; /* copy of first tuple of current group */ @@ -2030,8 +2474,6 @@ typedef struct LockRowsState PlanState ps; /* its first field is NodeTag */ List *lr_arowMarks; /* List of ExecAuxRowMarks */ EPQState lr_epqstate; /* for evaluating EvalPlanQual rechecks */ - HeapTuple *lr_curtuples; /* locked tuples (one entry per RT entry) */ - int lr_ntables; /* length of lr_curtuples[] array */ } LockRowsState; /* ---------------- @@ -2052,6 +2494,7 @@ typedef enum LIMIT_RESCAN, /* rescan after recomputing parameters */ LIMIT_EMPTY, /* there are no returnable rows */ LIMIT_INWINDOW, /* have returned a row in the window */ + LIMIT_WINDOWEND_TIES, /* have returned a tied row */ LIMIT_SUBPLANEOF, /* at EOF of subplan (within window) */ LIMIT_WINDOWEND, /* stepped off end of window */ LIMIT_WINDOWSTART /* stepped off beginning of window */ @@ -2062,12 +2505,16 @@ typedef struct LimitState PlanState ps; /* its first field is NodeTag */ ExprState *limitOffset; /* OFFSET parameter, or NULL if none */ ExprState *limitCount; /* COUNT parameter, or NULL if none */ + LimitOption limitOption; /* limit specification type */ int64 offset; /* current OFFSET value */ int64 count; /* current COUNT, if any */ bool noCount; /* if true, ignore count */ LimitStateCond lstate; /* state machine status, as above */ int64 position; /* 1-based index of last tuple returned */ TupleTableSlot *subSlot; /* tuple last obtained from subplan */ + ExprState *eqfunction; /* tuple equality qual in case of WITH TIES + * option */ + TupleTableSlot *last_slot; /* slot for evaluation of ties */ } LimitState; #endif /* EXECNODES_H */ diff --git a/parser/include/nodes/extensible.h b/parser/include/nodes/extensible.h index 0654e79c..d7bf0ba9 100644 --- a/parser/include/nodes/extensible.h +++ b/parser/include/nodes/extensible.h @@ -4,7 +4,7 @@ * Definitions for extensible nodes and custom scans * * - * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/nodes/extensible.h @@ -17,8 +17,8 @@ #include "access/parallel.h" #include "commands/explain.h" #include "nodes/execnodes.h" +#include "nodes/pathnodes.h" #include "nodes/plannodes.h" -#include "nodes/relation.h" /* maximum length of an extensible node identifier */ #define EXTNODENAME_MAX_LEN 64 @@ -72,7 +72,7 @@ typedef struct ExtensibleNodeMethods extern void RegisterExtensibleNodeMethods(const ExtensibleNodeMethods *method); extern const ExtensibleNodeMethods *GetExtensibleNodeMethods(const char *name, - bool missing_ok); + bool missing_ok); /* * Flags for custom paths, indicating what capabilities the resulting scan @@ -96,6 +96,9 @@ typedef struct CustomPathMethods List *tlist, List *clauses, List *custom_plans); + struct List *(*ReparameterizeCustomPathByChild) (PlannerInfo *root, + List *custom_private, + RelOptInfo *child_rel); } CustomPathMethods; /* @@ -152,6 +155,6 @@ typedef struct CustomExecMethods extern void RegisterCustomScanMethods(const CustomScanMethods *methods); extern const CustomScanMethods *GetCustomScanMethods(const char *CustomName, - bool missing_ok); + bool missing_ok); #endif /* EXTENSIBLE_H */ diff --git a/parser/include/nodes/lockoptions.h b/parser/include/nodes/lockoptions.h index e0981dac..56dfe329 100644 --- a/parser/include/nodes/lockoptions.h +++ b/parser/include/nodes/lockoptions.h @@ -4,7 +4,7 @@ * Common header for some locking-related declarations. * * - * Copyright (c) 2014-2017, PostgreSQL Global Development Group + * Copyright (c) 2014-2020, PostgreSQL Global Development Group * * src/include/nodes/lockoptions.h * @@ -43,4 +43,19 @@ typedef enum LockWaitPolicy LockWaitError } LockWaitPolicy; +/* + * Possible lock modes for a tuple. + */ +typedef enum LockTupleMode +{ + /* SELECT FOR KEY SHARE */ + LockTupleKeyShare, + /* SELECT FOR SHARE */ + LockTupleShare, + /* SELECT FOR NO KEY UPDATE, and UPDATEs that don't modify key columns */ + LockTupleNoKeyExclusive, + /* SELECT FOR UPDATE, UPDATEs that modify key columns, and DELETE */ + LockTupleExclusive +} LockTupleMode; + #endif /* LOCKOPTIONS_H */ diff --git a/parser/include/nodes/makefuncs.h b/parser/include/nodes/makefuncs.h index 46a79b18..31d9aede 100644 --- a/parser/include/nodes/makefuncs.h +++ b/parser/include/nodes/makefuncs.h @@ -1,10 +1,10 @@ /*------------------------------------------------------------------------- * * makefuncs.h - * prototypes for the creator functions (for primitive nodes) + * prototypes for the creator functions of various nodes * * - * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/nodes/makefuncs.h @@ -14,46 +14,47 @@ #ifndef MAKEFUNC_H #define MAKEFUNC_H +#include "nodes/execnodes.h" #include "nodes/parsenodes.h" extern A_Expr *makeA_Expr(A_Expr_Kind kind, List *name, - Node *lexpr, Node *rexpr, int location); + Node *lexpr, Node *rexpr, int location); extern A_Expr *makeSimpleA_Expr(A_Expr_Kind kind, char *name, - Node *lexpr, Node *rexpr, int location); + Node *lexpr, Node *rexpr, int location); extern Var *makeVar(Index varno, - AttrNumber varattno, - Oid vartype, - int32 vartypmod, - Oid varcollid, - Index varlevelsup); + AttrNumber varattno, + Oid vartype, + int32 vartypmod, + Oid varcollid, + Index varlevelsup); extern Var *makeVarFromTargetEntry(Index varno, - TargetEntry *tle); + TargetEntry *tle); extern Var *makeWholeRowVar(RangeTblEntry *rte, - Index varno, - Index varlevelsup, - bool allowScalar); + Index varno, + Index varlevelsup, + bool allowScalar); extern TargetEntry *makeTargetEntry(Expr *expr, - AttrNumber resno, - char *resname, - bool resjunk); + AttrNumber resno, + char *resname, + bool resjunk); extern TargetEntry *flatCopyTargetEntry(TargetEntry *src_tle); extern FromExpr *makeFromExpr(List *fromlist, Node *quals); extern Const *makeConst(Oid consttype, - int32 consttypmod, - Oid constcollid, - int constlen, - Datum constvalue, - bool constisnull, - bool constbyval); + int32 consttypmod, + Oid constcollid, + int constlen, + Datum constvalue, + bool constisnull, + bool constbyval); extern Const *makeNullConst(Oid consttype, int32 consttypmod, Oid constcollid); @@ -64,7 +65,7 @@ extern Expr *makeBoolExpr(BoolExprType boolop, List *args, int location); extern Alias *makeAlias(const char *aliasname, List *colnames); extern RelabelType *makeRelabelType(Expr *arg, Oid rtype, int32 rtypmod, - Oid rcollid, CoercionForm rformat); + Oid rcollid, CoercionForm rformat); extern RangeVar *makeRangeVar(char *schemaname, char *relname, int location); @@ -73,17 +74,35 @@ extern TypeName *makeTypeNameFromNameList(List *names); extern TypeName *makeTypeNameFromOid(Oid typeOid, int32 typmod); extern ColumnDef *makeColumnDef(const char *colname, - Oid typeOid, int32 typmod, Oid collOid); + Oid typeOid, int32 typmod, Oid collOid); extern FuncExpr *makeFuncExpr(Oid funcid, Oid rettype, List *args, - Oid funccollid, Oid inputcollid, CoercionForm fformat); + Oid funccollid, Oid inputcollid, CoercionForm fformat); extern FuncCall *makeFuncCall(List *name, List *args, int location); +extern Expr *make_opclause(Oid opno, Oid opresulttype, bool opretset, + Expr *leftop, Expr *rightop, + Oid opcollid, Oid inputcollid); + +extern Expr *make_andclause(List *andclauses); +extern Expr *make_orclause(List *orclauses); +extern Expr *make_notclause(Expr *notclause); + +extern Node *make_and_qual(Node *qual1, Node *qual2); +extern Expr *make_ands_explicit(List *andclauses); +extern List *make_ands_implicit(Expr *clause); + +extern IndexInfo *makeIndexInfo(int numattrs, int numkeyattrs, Oid amoid, + List *expressions, List *predicates, + bool unique, bool isready, bool concurrent); + extern DefElem *makeDefElem(char *name, Node *arg, int location); extern DefElem *makeDefElemExtended(char *nameSpace, char *name, Node *arg, - DefElemAction defaction, int location); + DefElemAction defaction, int location); extern GroupingSet *makeGroupingSet(GroupingSetKind kind, List *content, int location); +extern VacuumRelation *makeVacuumRelation(RangeVar *relation, Oid oid, List *va_cols); + #endif /* MAKEFUNC_H */ diff --git a/parser/include/nodes/memnodes.h b/parser/include/nodes/memnodes.h index 60a30b6b..c9f2bbcb 100644 --- a/parser/include/nodes/memnodes.h +++ b/parser/include/nodes/memnodes.h @@ -4,7 +4,7 @@ * POSTGRES memory context node definitions. * * - * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/nodes/memnodes.h @@ -39,30 +39,33 @@ typedef struct MemoryContextCounters * A logical context in which memory allocations occur. * * MemoryContext itself is an abstract type that can have multiple - * implementations, though for now we have only AllocSetContext. + * implementations. * The function pointers in MemoryContextMethods define one specific * implementation of MemoryContext --- they are a virtual function table * in C++ terms. * * Node types that are actual implementations of memory contexts must - * begin with the same fields as MemoryContext. + * begin with the same fields as MemoryContextData. * * Note: for largely historical reasons, typedef MemoryContext is a pointer * to the context struct rather than the struct type itself. */ +typedef void (*MemoryStatsPrintFunc) (MemoryContext context, void *passthru, + const char *stats_string); + typedef struct MemoryContextMethods { void *(*alloc) (MemoryContext context, Size size); /* call this free_p in case someone #define's free() */ void (*free_p) (MemoryContext context, void *pointer); void *(*realloc) (MemoryContext context, void *pointer, Size size); - void (*init) (MemoryContext context); void (*reset) (MemoryContext context); void (*delete_context) (MemoryContext context); Size (*get_chunk_space) (MemoryContext context, void *pointer); bool (*is_empty) (MemoryContext context); - void (*stats) (MemoryContext context, int level, bool print, + void (*stats) (MemoryContext context, + MemoryStatsPrintFunc printfunc, void *passthru, MemoryContextCounters *totals); #ifdef MEMORY_CONTEXT_CHECKING void (*check) (MemoryContext context); @@ -76,12 +79,14 @@ typedef struct MemoryContextData /* these two fields are placed here to minimize alignment wastage: */ bool isReset; /* T = no space alloced since last reset */ bool allowInCritSection; /* allow palloc in critical section */ + Size mem_allocated; /* track memory allocated for this context */ const MemoryContextMethods *methods; /* virtual function table */ MemoryContext parent; /* NULL if no parent (toplevel context) */ MemoryContext firstchild; /* head of linked list of children */ MemoryContext prevchild; /* previous child of same parent */ MemoryContext nextchild; /* next child of same parent */ - char *name; /* context name (just for debugging) */ + const char *name; /* context name (just for debugging) */ + const char *ident; /* context ID if any (just for debugging) */ MemoryContextCallback *reset_cbs; /* list of reset/delete callbacks */ } MemoryContextData; @@ -96,6 +101,8 @@ typedef struct MemoryContextData */ #define MemoryContextIsValid(context) \ ((context) != NULL && \ - (IsA((context), AllocSetContext) || IsA((context), SlabContext))) + (IsA((context), AllocSetContext) || \ + IsA((context), SlabContext) || \ + IsA((context), GenerationContext))) #endif /* MEMNODES_H */ diff --git a/parser/include/nodes/nodeFuncs.h b/parser/include/nodes/nodeFuncs.h index b4b0fdf8..9cc56eec 100644 --- a/parser/include/nodes/nodeFuncs.h +++ b/parser/include/nodes/nodeFuncs.h @@ -3,7 +3,7 @@ * nodeFuncs.h * Various general-purpose manipulations of Node trees * - * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/nodes/nodeFuncs.h @@ -22,8 +22,11 @@ #define QTW_IGNORE_RC_SUBQUERIES 0x03 /* both of above */ #define QTW_IGNORE_JOINALIASES 0x04 /* JOIN alias var lists */ #define QTW_IGNORE_RANGE_TABLE 0x08 /* skip rangetable entirely */ -#define QTW_EXAMINE_RTES 0x10 /* examine RTEs */ -#define QTW_DONT_COPY_QUERY 0x20 /* do not copy top Query */ +#define QTW_EXAMINE_RTES_BEFORE 0x10 /* examine RTE nodes before their + * contents */ +#define QTW_EXAMINE_RTES_AFTER 0x20 /* examine RTE nodes after their + * contents */ +#define QTW_DONT_COPY_QUERY 0x40 /* do not copy top Query */ #define QTW_EXAMINE_SORTGROUP 0x80 /* include SortGroupNode lists */ /* callback function for check_functions_in_node */ @@ -33,6 +36,9 @@ typedef bool (*check_function_callback) (Oid func_id, void *context); extern Oid exprType(const Node *expr); extern int32 exprTypmod(const Node *expr); extern bool exprIsLengthCoercion(const Node *expr, int32 *coercedTypmod); +extern Node *applyRelabelType(Node *arg, Oid rtype, int32 rtypmod, Oid rcollid, + CoercionForm rformat, int rlocation, + bool overwrite_ok); extern Node *relabel_to_typmod(Node *expr, int32 typmod); extern Node *strip_implicit_coercions(Node *node); extern bool expression_returns_set(Node *clause); @@ -48,8 +54,80 @@ extern void fix_opfuncids(Node *node); extern void set_opfuncid(OpExpr *opexpr); extern void set_sa_opfuncid(ScalarArrayOpExpr *opexpr); +/* Is clause a FuncExpr clause? */ +static inline bool +is_funcclause(const void *clause) +{ + return clause != NULL && IsA(clause, FuncExpr); +} + +/* Is clause an OpExpr clause? */ +static inline bool +is_opclause(const void *clause) +{ + return clause != NULL && IsA(clause, OpExpr); +} + +/* Extract left arg of a binary opclause, or only arg of a unary opclause */ +static inline Node * +get_leftop(const void *clause) +{ + const OpExpr *expr = (const OpExpr *) clause; + + if (expr->args != NIL) + return (Node *) linitial(expr->args); + else + return NULL; +} + +/* Extract right arg of a binary opclause (NULL if it's a unary opclause) */ +static inline Node * +get_rightop(const void *clause) +{ + const OpExpr *expr = (const OpExpr *) clause; + + if (list_length(expr->args) >= 2) + return (Node *) lsecond(expr->args); + else + return NULL; +} + +/* Is clause an AND clause? */ +static inline bool +is_andclause(const void *clause) +{ + return (clause != NULL && + IsA(clause, BoolExpr) && + ((const BoolExpr *) clause)->boolop == AND_EXPR); +} + +/* Is clause an OR clause? */ +static inline bool +is_orclause(const void *clause) +{ + return (clause != NULL && + IsA(clause, BoolExpr) && + ((const BoolExpr *) clause)->boolop == OR_EXPR); +} + +/* Is clause a NOT clause? */ +static inline bool +is_notclause(const void *clause) +{ + return (clause != NULL && + IsA(clause, BoolExpr) && + ((const BoolExpr *) clause)->boolop == NOT_EXPR); +} + +/* Extract argument from a clause known to be a NOT clause */ +static inline Expr * +get_notclausearg(const void *notclause) +{ + return (Expr *) linitial(((const BoolExpr *) notclause)->args); +} + extern bool check_functions_in_node(Node *node, check_function_callback checker, - void *context); + void *context); extern bool expression_tree_walker(Node *node, bool (*walker) (), void *context); @@ -66,6 +144,9 @@ extern bool range_table_walker(List *rtable, bool (*walker) (), extern List *range_table_mutator(List *rtable, Node *(*mutator) (), void *context, int flags); +extern bool range_table_entry_walker(RangeTblEntry *rte, bool (*walker) (), + void *context, int flags); + extern bool query_or_expression_tree_walker(Node *node, bool (*walker) (), void *context, int flags); extern Node *query_or_expression_tree_mutator(Node *node, Node *(*mutator) (), diff --git a/parser/include/nodes/nodes.h b/parser/include/nodes/nodes.h index 27bd4f33..a540fce7 100644 --- a/parser/include/nodes/nodes.h +++ b/parser/include/nodes/nodes.h @@ -4,7 +4,7 @@ * Definitions for tagged nodes. * * - * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/nodes/nodes.h @@ -34,6 +34,7 @@ typedef enum NodeTag T_ExprContext, T_ProjectionInfo, T_JunkFilter, + T_OnConflictSetState, T_ResultRelInfo, T_EState, T_TupleTableSlot, @@ -73,6 +74,7 @@ typedef enum NodeTag T_HashJoin, T_Material, T_Sort, + T_IncrementalSort, T_Group, T_Agg, T_WindowAgg, @@ -86,6 +88,10 @@ typedef enum NodeTag /* these aren't subclasses of Plan: */ T_NestLoopParam, T_PlanRowMark, + T_PartitionPruneInfo, + T_PartitionedRelPruneInfo, + T_PartitionPruneStepOp, + T_PartitionPruneStepCombine, T_PlanInvalItem, /* @@ -125,6 +131,7 @@ typedef enum NodeTag T_HashJoinState, T_MaterialState, T_SortState, + T_IncrementalSortState, T_GroupState, T_AggState, T_WindowAggState, @@ -149,7 +156,7 @@ typedef enum NodeTag T_Aggref, T_GroupingFunc, T_WindowFunc, - T_ArrayRef, + T_SubscriptingRef, T_FuncExpr, T_NamedArgExpr, T_OpExpr, @@ -210,7 +217,7 @@ typedef enum NodeTag T_DomainConstraintState, /* - * TAGS FOR PLANNER NODES (relation.h) + * TAGS FOR PLANNER NODES (pathnodes.h) */ T_PlannerInfo, T_PlannerGlobal, @@ -232,7 +239,7 @@ typedef enum NodeTag T_HashPath, T_AppendPath, T_MergeAppendPath, - T_ResultPath, + T_GroupResultPath, T_MaterialPath, T_UniquePath, T_GatherPath, @@ -240,6 +247,7 @@ typedef enum NodeTag T_ProjectionPath, T_ProjectSetPath, T_SortPath, + T_IncrementalSortPath, T_GroupPath, T_UpperUniquePath, T_AggPath, @@ -257,10 +265,10 @@ typedef enum NodeTag T_PathKey, T_PathTarget, T_RestrictInfo, + T_IndexClause, T_PlaceHolderVar, T_SpecialJoinInfo, T_AppendRelInfo, - T_PartitionedChildRelInfo, T_PlaceHolderInfo, T_MinMaxAggInfo, T_PlannerParamItem, @@ -274,6 +282,7 @@ typedef enum NodeTag T_MemoryContext, T_AllocSetContext, T_SlabContext, + T_GenerationContext, /* * TAGS FOR VALUE NODES (value.h) @@ -374,6 +383,7 @@ typedef enum NodeTag T_AlterObjectSchemaStmt, T_AlterOwnerStmt, T_AlterOperatorStmt, + T_AlterTypeStmt, T_DropOwnedStmt, T_ReassignOwnedStmt, T_CompositeTypeStmt, @@ -413,6 +423,8 @@ typedef enum NodeTag T_DropSubscriptionStmt, T_CreateStatsStmt, T_AlterCollationStmt, + T_CallStmt, + T_AlterStatsStmt, /* * TAGS FOR PARSE TREE NODES (parsenodes.h) @@ -468,6 +480,7 @@ typedef enum NodeTag T_PartitionBoundSpec, T_PartitionRangeDatum, T_PartitionCmd, + T_VacuumRelation, /* * TAGS FOR REPLICATION GRAMMAR PARSE NODES (replnodes.h) @@ -496,8 +509,15 @@ typedef enum NodeTag T_InlineCodeBlock, /* in nodes/parsenodes.h */ T_FdwRoutine, /* in foreign/fdwapi.h */ T_IndexAmRoutine, /* in access/amapi.h */ + T_TableAmRoutine, /* in access/tableam.h */ T_TsmRoutine, /* in access/tsmapi.h */ - T_ForeignKeyCacheInfo /* in utils/rel.h */ + T_ForeignKeyCacheInfo, /* in utils/rel.h */ + T_CallContext, /* in nodes/parsenodes.h */ + T_SupportRequestSimplify, /* in nodes/supportnodes.h */ + T_SupportRequestSelectivity, /* in nodes/supportnodes.h */ + T_SupportRequestCost, /* in nodes/supportnodes.h */ + T_SupportRequestRows, /* in nodes/supportnodes.h */ + T_SupportRequestIndexCondition /* in nodes/supportnodes.h */ } NodeTag; /* @@ -593,16 +613,19 @@ struct StringInfoData; /* not to include stringinfo.h here */ extern void outNode(struct StringInfoData *str, const void *obj); extern void outToken(struct StringInfoData *str, const char *s); extern void outBitmapset(struct StringInfoData *str, - const struct Bitmapset *bms); + const struct Bitmapset *bms); extern void outDatum(struct StringInfoData *str, uintptr_t value, - int typlen, bool typbyval); + int typlen, bool typbyval); extern char *nodeToString(const void *obj); extern char *bmsToString(const struct Bitmapset *bms); /* * nodes/{readfuncs.c,read.c} */ -extern void *stringToNode(char *str); +extern void *stringToNode(const char *str); +#ifdef WRITE_READ_PARSE_PLAN_TREES +extern void *stringToNodeWithLocations(const char *str); +#endif extern struct Bitmapset *readBitmapset(void); extern uintptr_t readDatum(bool typbyval); extern bool *readBoolCols(int numCols); @@ -730,7 +753,7 @@ typedef enum JoinType * AggStrategy - * overall execution strategies for Agg plan nodes * - * This is needed in both plannodes.h and relation.h, so put it here... + * This is needed in both pathnodes.h and plannodes.h, so put it here... */ typedef enum AggStrategy { @@ -744,14 +767,14 @@ typedef enum AggStrategy * AggSplit - * splitting (partial aggregation) modes for Agg plan nodes * - * This is needed in both plannodes.h and relation.h, so put it here... + * This is needed in both pathnodes.h and plannodes.h, so put it here... */ /* Primitive options supported by nodeAgg.c: */ #define AGGSPLITOP_COMBINE 0x01 /* substitute combinefn for transfn */ #define AGGSPLITOP_SKIPFINAL 0x02 /* skip finalfn, return state as-is */ -#define AGGSPLITOP_SERIALIZE 0x04 /* apply serializefn to output */ -#define AGGSPLITOP_DESERIALIZE 0x08 /* apply deserializefn to input */ +#define AGGSPLITOP_SERIALIZE 0x04 /* apply serialfn to output */ +#define AGGSPLITOP_DESERIALIZE 0x08 /* apply deserialfn to input */ /* Supported operating modes (i.e., useful combinations of these options): */ typedef enum AggSplit @@ -774,7 +797,7 @@ typedef enum AggSplit * SetOpCmd and SetOpStrategy - * overall semantics and execution strategies for SetOp plan nodes * - * This is needed in both plannodes.h and relation.h, so put it here... + * This is needed in both pathnodes.h and plannodes.h, so put it here... */ typedef enum SetOpCmd { @@ -803,4 +826,17 @@ typedef enum OnConflictAction ONCONFLICT_UPDATE /* ON CONFLICT ... DO UPDATE */ } OnConflictAction; +/* + * LimitOption - + * LIMIT option of query + * + * This is needed in both parsenodes.h and plannodes.h, so put it here... + */ +typedef enum LimitOption +{ + LIMIT_OPTION_DEFAULT, /* No limit present */ + LIMIT_OPTION_COUNT, /* FETCH FIRST... ONLY */ + LIMIT_OPTION_WITH_TIES, /* FETCH FIRST... WITH TIES */ +} LimitOption; + #endif /* NODES_H */ diff --git a/parser/include/nodes/params.h b/parser/include/nodes/params.h index 55219dab..4898d908 100644 --- a/parser/include/nodes/params.h +++ b/parser/include/nodes/params.h @@ -4,7 +4,7 @@ * Support for finding the values associated with Param nodes. * * - * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/nodes/params.h @@ -16,16 +16,23 @@ /* Forward declarations, to avoid including other headers */ struct Bitmapset; +struct ExprState; +struct Param; struct ParseState; -/* ---------------- +/* * ParamListInfo * - * ParamListInfo arrays are used to pass parameters into the executor - * for parameterized plans. Each entry in the array defines the value - * to be substituted for a PARAM_EXTERN parameter. The "paramid" - * of a PARAM_EXTERN Param can range from 1 to numParams. + * ParamListInfo structures are used to pass parameters into the executor + * for parameterized plans. We support two basic approaches to supplying + * parameter values, the "static" way and the "dynamic" way. + * + * In the static approach, per-parameter data is stored in an array of + * ParamExternData structs appended to the ParamListInfo struct. + * Each entry in the array defines the value to be substituted for a + * PARAM_EXTERN parameter. The "paramid" of a PARAM_EXTERN Param + * can range from 1 to numParams. * * Although parameter numbers are normally consecutive, we allow * ptype == InvalidOid to signal an unused array entry. @@ -35,18 +42,47 @@ struct ParseState; * as a constant (i.e., generate a plan that works only for this value * of the parameter). * - * There are two hook functions that can be associated with a ParamListInfo - * array to support dynamic parameter handling. First, if paramFetch - * isn't null and the executor requires a value for an invalid parameter - * (one with ptype == InvalidOid), the paramFetch hook is called to give - * it a chance to fill in the parameter value. Second, a parserSetup - * hook can be supplied to re-instantiate the original parsing hooks if - * a query needs to be re-parsed/planned (as a substitute for supposing - * that the current ptype values represent a fixed set of parameter types). - + * In the dynamic approach, all access to parameter values is done through + * hook functions found in the ParamListInfo struct. In this case, + * the ParamExternData array is typically unused and not allocated; + * but the legal range of paramid is still 1 to numParams. + * * Although the data structure is really an array, not a list, we keep * the old typedef name to avoid unnecessary code changes. - * ---------------- + * + * There are 3 hook functions that can be associated with a ParamListInfo + * structure: + * + * If paramFetch isn't null, it is called to fetch the ParamExternData + * for a particular param ID, rather than accessing the relevant element + * of the ParamExternData array. This supports the case where the array + * isn't there at all, as well as cases where the data in the array + * might be obsolete or lazily evaluated. paramFetch must return the + * address of a ParamExternData struct describing the specified param ID; + * the convention above about ptype == InvalidOid signaling an invalid + * param ID still applies. The returned struct can either be placed in + * the "workspace" supplied by the caller, or it can be in storage + * controlled by the paramFetch hook if that's more convenient. + * (In either case, the struct is not expected to be long-lived.) + * If "speculative" is true, the paramFetch hook should not risk errors + * in trying to fetch the parameter value, and should report an invalid + * parameter instead. + * + * If paramCompile isn't null, then it controls what execExpr.c compiles + * for PARAM_EXTERN Param nodes --- typically, this hook would emit a + * EEOP_PARAM_CALLBACK step. This allows unnecessary work to be + * optimized away in compiled expressions. + * + * If parserSetup isn't null, then it is called to re-instantiate the + * original parsing hooks when a query needs to be re-parsed/planned. + * This is especially useful if the types of parameters might change + * from time to time, since it can replace the need to supply a fixed + * list of parameter types to the parser. + * + * Notice that the paramFetch and paramCompile hooks are actually passed + * the ParamListInfo struct's address; they can therefore access all + * three of the "arg" fields, and the distinction between paramFetchArg + * and paramCompileArg is rather arbitrary. */ #define PARAM_FLAG_CONST 0x0001 /* parameter is constant */ @@ -61,7 +97,13 @@ typedef struct ParamExternData typedef struct ParamListInfoData *ParamListInfo; -typedef void (*ParamFetchHook) (ParamListInfo params, int paramid); +typedef ParamExternData *(*ParamFetchHook) (ParamListInfo params, + int paramid, bool speculative, + ParamExternData *workspace); + +typedef void (*ParamCompileHook) (ParamListInfo params, struct Param *param, + struct ExprState *state, + Datum *resv, bool *resnull); typedef void (*ParserSetupHook) (struct ParseState *pstate, void *arg); @@ -69,10 +111,17 @@ typedef struct ParamListInfoData { ParamFetchHook paramFetch; /* parameter fetch hook */ void *paramFetchArg; + ParamCompileHook paramCompile; /* parameter compile hook */ + void *paramCompileArg; ParserSetupHook parserSetup; /* parser setup hook */ void *parserSetupArg; - int numParams; /* number of ParamExternDatas following */ - struct Bitmapset *paramMask; /* if non-NULL, can ignore omitted params */ + char *paramValuesStr; /* params as a single string for errors */ + int numParams; /* nominal/maximum # of Params represented */ + + /* + * params[] may be of length zero if paramFetch is supplied; otherwise it + * must be of length numParams. + */ ParamExternData params[FLEXIBLE_ARRAY_MEMBER]; } ParamListInfoData; @@ -101,11 +150,21 @@ typedef struct ParamExecData bool isnull; } ParamExecData; +/* type of argument for ParamsErrorCallback */ +typedef struct ParamsErrorCbData +{ + const char *portalName; + ParamListInfo params; +} ParamsErrorCbData; /* Functions found in src/backend/nodes/params.c */ +extern ParamListInfo makeParamList(int numParams); extern ParamListInfo copyParamList(ParamListInfo from); extern Size EstimateParamListSpace(ParamListInfo paramLI); extern void SerializeParamList(ParamListInfo paramLI, char **start_address); extern ParamListInfo RestoreParamList(char **start_address); +extern char *BuildParamLogString(ParamListInfo params, char **paramTextValues, + int valueLen); +extern void ParamsErrorCallback(void *arg); #endif /* PARAMS_H */ diff --git a/parser/include/nodes/parsenodes.h b/parser/include/nodes/parsenodes.h index b052508b..557074c2 100644 --- a/parser/include/nodes/parsenodes.h +++ b/parser/include/nodes/parsenodes.h @@ -12,7 +12,7 @@ * identifying statement boundaries in multi-statement source strings. * * - * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/nodes/parsenodes.h @@ -26,6 +26,8 @@ #include "nodes/lockoptions.h" #include "nodes/primnodes.h" #include "nodes/value.h" +#include "partitioning/partdefs.h" + typedef enum OverridingKind { @@ -111,7 +113,7 @@ typedef struct Query QuerySource querySource; /* where did I come from? */ - uint32 queryId; /* query identifier (can be set by plugins) */ + uint64 queryId; /* query identifier (can be set by plugins) */ bool canSetTag; /* do I set the command result tag? */ @@ -157,6 +159,7 @@ typedef struct Query Node *limitOffset; /* # of result tuples to skip (int8 expr) */ Node *limitCount; /* # of result tuples to return (int8 expr) */ + LimitOption limitOption; /* limit type */ List *rowMarks; /* a list of RowMarkClause's */ @@ -166,9 +169,8 @@ typedef struct Query List *constraintDeps; /* a list of pg_constraint OIDs that the query * depends on to be semantically valid */ - List *withCheckOptions; /* a list of WithCheckOption's, which are - * only added during rewrite and therefore - * are not written out as part of Query. */ + List *withCheckOptions; /* a list of WithCheckOption's (added + * during rewrite) */ /* * The following two fields identify the portion of the source text string @@ -198,7 +200,7 @@ typedef struct Query * Similarly, if "typmods" is NIL then the actual typmod is expected to * be prespecified in typemod, otherwise typemod is unused. * - * If pct_type is TRUE, then names is actually a field name and we look up + * If pct_type is true, then names is actually a field name and we look up * the type of that field. Otherwise (the normal case), names is a type * name possibly qualified with schema and database name. */ @@ -223,7 +225,7 @@ typedef struct TypeName * Currently, A_Star must appear only as the last list element --- the grammar * is responsible for enforcing this! * - * Note: any array subscripting or selection of fields from composite columns + * Note: any container subscripting or selection of fields from composite columns * is represented by an A_Indirection node above the ColumnRef. However, * for simplicity in the normal case, initial field selection from a table * name is represented within ColumnRef and not by adding A_Indirection. @@ -499,27 +501,33 @@ typedef struct WindowDef * which were defaulted; the correct behavioral bits must be set either way. * The START_foo and END_foo options must come in pairs of adjacent bits for * the convenience of gram.y, even though some of them are useless/invalid. - * We will need more bits (and fields) to cover the full SQL:2008 option set. */ #define FRAMEOPTION_NONDEFAULT 0x00001 /* any specified? */ #define FRAMEOPTION_RANGE 0x00002 /* RANGE behavior */ #define FRAMEOPTION_ROWS 0x00004 /* ROWS behavior */ -#define FRAMEOPTION_BETWEEN 0x00008 /* BETWEEN given? */ -#define FRAMEOPTION_START_UNBOUNDED_PRECEDING 0x00010 /* start is U. P. */ -#define FRAMEOPTION_END_UNBOUNDED_PRECEDING 0x00020 /* (disallowed) */ -#define FRAMEOPTION_START_UNBOUNDED_FOLLOWING 0x00040 /* (disallowed) */ -#define FRAMEOPTION_END_UNBOUNDED_FOLLOWING 0x00080 /* end is U. F. */ -#define FRAMEOPTION_START_CURRENT_ROW 0x00100 /* start is C. R. */ -#define FRAMEOPTION_END_CURRENT_ROW 0x00200 /* end is C. R. */ -#define FRAMEOPTION_START_VALUE_PRECEDING 0x00400 /* start is V. P. */ -#define FRAMEOPTION_END_VALUE_PRECEDING 0x00800 /* end is V. P. */ -#define FRAMEOPTION_START_VALUE_FOLLOWING 0x01000 /* start is V. F. */ -#define FRAMEOPTION_END_VALUE_FOLLOWING 0x02000 /* end is V. F. */ - -#define FRAMEOPTION_START_VALUE \ - (FRAMEOPTION_START_VALUE_PRECEDING | FRAMEOPTION_START_VALUE_FOLLOWING) -#define FRAMEOPTION_END_VALUE \ - (FRAMEOPTION_END_VALUE_PRECEDING | FRAMEOPTION_END_VALUE_FOLLOWING) +#define FRAMEOPTION_GROUPS 0x00008 /* GROUPS behavior */ +#define FRAMEOPTION_BETWEEN 0x00010 /* BETWEEN given? */ +#define FRAMEOPTION_START_UNBOUNDED_PRECEDING 0x00020 /* start is U. P. */ +#define FRAMEOPTION_END_UNBOUNDED_PRECEDING 0x00040 /* (disallowed) */ +#define FRAMEOPTION_START_UNBOUNDED_FOLLOWING 0x00080 /* (disallowed) */ +#define FRAMEOPTION_END_UNBOUNDED_FOLLOWING 0x00100 /* end is U. F. */ +#define FRAMEOPTION_START_CURRENT_ROW 0x00200 /* start is C. R. */ +#define FRAMEOPTION_END_CURRENT_ROW 0x00400 /* end is C. R. */ +#define FRAMEOPTION_START_OFFSET_PRECEDING 0x00800 /* start is O. P. */ +#define FRAMEOPTION_END_OFFSET_PRECEDING 0x01000 /* end is O. P. */ +#define FRAMEOPTION_START_OFFSET_FOLLOWING 0x02000 /* start is O. F. */ +#define FRAMEOPTION_END_OFFSET_FOLLOWING 0x04000 /* end is O. F. */ +#define FRAMEOPTION_EXCLUDE_CURRENT_ROW 0x08000 /* omit C.R. */ +#define FRAMEOPTION_EXCLUDE_GROUP 0x10000 /* omit C.R. & peers */ +#define FRAMEOPTION_EXCLUDE_TIES 0x20000 /* omit C.R.'s peers */ + +#define FRAMEOPTION_START_OFFSET \ + (FRAMEOPTION_START_OFFSET_PRECEDING | FRAMEOPTION_START_OFFSET_FOLLOWING) +#define FRAMEOPTION_END_OFFSET \ + (FRAMEOPTION_END_OFFSET_PRECEDING | FRAMEOPTION_END_OFFSET_FOLLOWING) +#define FRAMEOPTION_EXCLUSION \ + (FRAMEOPTION_EXCLUDE_CURRENT_ROW | FRAMEOPTION_EXCLUDE_GROUP | \ + FRAMEOPTION_EXCLUDE_TIES) #define FRAMEOPTION_DEFAULTS \ (FRAMEOPTION_RANGE | FRAMEOPTION_START_UNBOUNDED_PRECEDING | \ @@ -642,13 +650,13 @@ typedef struct ColumnDef bool is_local; /* column has local (non-inherited) def'n */ bool is_not_null; /* NOT NULL constraint specified? */ bool is_from_type; /* column definition came from table type */ - bool is_from_parent; /* XXX unused */ char storage; /* attstorage setting, or 0 for default */ Node *raw_default; /* default value (untransformed parse tree) */ Node *cooked_default; /* default value (transformed expr tree) */ char identity; /* attidentity setting */ - RangeVar *identitySequence; /* to store identity sequence name for ALTER - * TABLE ... ADD COLUMN */ + RangeVar *identitySequence; /* to store identity sequence name for + * ALTER TABLE ... ADD COLUMN */ + char generated; /* attgenerated setting */ CollateClause *collClause; /* untransformed COLLATE spec, if any */ Oid collOid; /* collation OID (InvalidOid if not set) */ List *constraints; /* other constraints on column */ @@ -669,13 +677,14 @@ typedef struct TableLikeClause typedef enum TableLikeOption { - CREATE_TABLE_LIKE_DEFAULTS = 1 << 0, + CREATE_TABLE_LIKE_COMMENTS = 1 << 0, CREATE_TABLE_LIKE_CONSTRAINTS = 1 << 1, - CREATE_TABLE_LIKE_IDENTITY = 1 << 2, - CREATE_TABLE_LIKE_INDEXES = 1 << 3, - CREATE_TABLE_LIKE_STORAGE = 1 << 4, - CREATE_TABLE_LIKE_COMMENTS = 1 << 5, + CREATE_TABLE_LIKE_DEFAULTS = 1 << 2, + CREATE_TABLE_LIKE_GENERATED = 1 << 3, + CREATE_TABLE_LIKE_IDENTITY = 1 << 4, + CREATE_TABLE_LIKE_INDEXES = 1 << 5, CREATE_TABLE_LIKE_STATISTICS = 1 << 6, + CREATE_TABLE_LIKE_STORAGE = 1 << 7, CREATE_TABLE_LIKE_ALL = PG_INT32_MAX } TableLikeOption; @@ -694,6 +703,7 @@ typedef struct IndexElem char *indexcolname; /* name for index column; NULL = default */ List *collation; /* name of collation; NIL = default */ List *opclass; /* name of desired opclass; NIL = default */ + List *opclassopts; /* opclass-specific options, or NIL */ SortByDir ordering; /* ASC/DESC/default */ SortByNulls nulls_ordering; /* FIRST/LAST/default */ } IndexElem; @@ -781,12 +791,14 @@ typedef struct PartitionElem typedef struct PartitionSpec { NodeTag type; - char *strategy; /* partitioning strategy ('list' or 'range') */ + char *strategy; /* partitioning strategy ('hash', 'list' or + * 'range') */ List *partParams; /* List of PartitionElems */ int location; /* token location, or -1 if unknown */ } PartitionSpec; /* Internal codes for partitioning strategies */ +#define PARTITION_STRATEGY_HASH 'h' #define PARTITION_STRATEGY_LIST 'l' #define PARTITION_STRATEGY_RANGE 'r' @@ -796,11 +808,16 @@ typedef struct PartitionSpec * This represents the portion of the partition key space assigned to a * particular partition. These are stored on disk in pg_class.relpartbound. */ -typedef struct PartitionBoundSpec +struct PartitionBoundSpec { NodeTag type; char strategy; /* see PARTITION_STRATEGY codes above */ + bool is_default; /* is it a default partition bound? */ + + /* Partitioning info for HASH strategy: */ + int modulus; + int remainder; /* Partitioning info for LIST strategy: */ List *listdatums; /* List of Consts (or A_Consts in raw tree) */ @@ -810,7 +827,7 @@ typedef struct PartitionBoundSpec List *upperdatums; /* List of PartitionRangeDatums */ int location; /* token location, or -1 if unknown */ -} PartitionBoundSpec; +}; /* * PartitionRangeDatum - one of the values in a range partition bound @@ -836,7 +853,7 @@ typedef struct PartitionRangeDatum } PartitionRangeDatum; /* - * PartitionCmd - info for ALTER TABLE ATTACH/DETACH PARTITION commands + * PartitionCmd - info for ALTER TABLE/INDEX ATTACH/DETACH PARTITION commands */ typedef struct PartitionCmd { @@ -891,8 +908,8 @@ typedef struct PartitionCmd * them from the joinaliasvars list, because that would affect the attnums * of Vars referencing the rest of the list.) * - * inh is TRUE for relation references that should be expanded to include - * inheritance children, if the rel has any. This *must* be FALSE for + * inh is true for relation references that should be expanded to include + * inheritance children, if the rel has any. This *must* be false for * RTEs other than RTE_RELATION entries. * * inFromCl marks those range variables that are listed in the FROM clause. @@ -921,6 +938,19 @@ typedef struct PartitionCmd * them in these fields. A whole-row Var reference is represented by * setting the bit for InvalidAttrNumber. * + * updatedCols is also used in some other places, for example, to determine + * which triggers to fire and in FDWs to know which changed columns they + * need to ship off. + * + * Generated columns that are caused to be updated by an update to a base + * column are listed in extraUpdatedCols. This is not considered for + * permission checking, but it is useful in those places that want to know + * the full set of columns being updated as opposed to only the ones the + * user explicitly mentioned in the query. (There is currently no need for + * an extraInsertedCols, but it could exist.) Note that extraUpdatedCols + * is populated during query rewrite, NOT in the parser, since generated + * columns could be added after a rule has been parsed and stored. + * * securityQuals is a list of security barrier quals (boolean expressions), * to be tested in the listed order before returning a row from the * relation. It is always NIL in parser output. Entries are added by the @@ -938,7 +968,10 @@ typedef enum RTEKind RTE_TABLEFUNC, /* TableFunc(.., column list) */ RTE_VALUES, /* VALUES (), (), ... */ RTE_CTE, /* common table expr (WITH list element) */ - RTE_NAMEDTUPLESTORE /* tuplestore, e.g. for AFTER triggers */ + RTE_NAMEDTUPLESTORE, /* tuplestore, e.g. for AFTER triggers */ + RTE_RESULT /* RTE represents an empty FROM clause; such + * RTEs are added by the planner, they're not + * present during parsing or rewriting */ } RTEKind; typedef struct RangeTblEntry @@ -960,9 +993,21 @@ typedef struct RangeTblEntry * that the tuple format of the tuplestore is the same as the referenced * relation. This allows plans referencing AFTER trigger transition * tables to be invalidated if the underlying table is altered. + * + * rellockmode is really LOCKMODE, but it's declared int to avoid having + * to include lock-related headers here. It must be RowExclusiveLock if + * the RTE is an INSERT/UPDATE/DELETE target, else RowShareLock if the RTE + * is a SELECT FOR UPDATE/FOR SHARE target, else AccessShareLock. + * + * Note: in some cases, rule expansion may result in RTEs that are marked + * with RowExclusiveLock even though they are not the target of the + * current query; this happens if a DO ALSO rule simply scans the original + * target table. We leave such RTEs with their original lockmode so as to + * avoid getting an additional, lesser lock. */ Oid relid; /* OID of the relation */ char relkind; /* relation kind (see pg_class.relkind) */ + int rellockmode; /* lock level that query requires on the rel */ struct TableSampleClause *tablesample; /* sampling info, or NULL */ /* @@ -982,14 +1027,35 @@ typedef struct RangeTblEntry * be a Var of one of the join's input relations, or such a Var with an * implicit coercion to the join's output column type, or a COALESCE * expression containing the two input column Vars (possibly coerced). - * Within a Query loaded from a stored rule, it is also possible for + * Elements beyond the first joinmergedcols entries are always just Vars, + * and are never referenced from elsewhere in the query (that is, join + * alias Vars are generated only for merged columns). We keep these + * entries only because they're needed in expandRTE() and similar code. + * + * Within a Query loaded from a stored rule, it is possible for non-merged * joinaliasvars items to be null pointers, which are placeholders for * (necessarily unreferenced) columns dropped since the rule was made. * Also, once planning begins, joinaliasvars items can be almost anything, * as a result of subquery-flattening substitutions. + * + * joinleftcols is an integer list of physical column numbers of the left + * join input rel that are included in the join; likewise joinrighttcols + * for the right join input rel. (Which rels those are can be determined + * from the associated JoinExpr.) If the join is USING/NATURAL, then the + * first joinmergedcols entries in each list identify the merged columns. + * The merged columns come first in the join output, then remaining + * columns of the left input, then remaining columns of the right. + * + * Note that input columns could have been dropped after creation of a + * stored rule, if they are not referenced in the query (in particular, + * merged columns could not be dropped); this is not accounted for in + * joinleftcols/joinrighttcols. */ JoinType jointype; /* type of join */ + int joinmergedcols; /* number of merged (JOIN USING) columns */ List *joinaliasvars; /* list of alias-var expansions */ + List *joinleftcols; /* left-side input column numbers */ + List *joinrightcols; /* right-side input column numbers */ /* * Fields valid for a function RTE (else NIL/zero): @@ -1060,6 +1126,7 @@ typedef struct RangeTblEntry Bitmapset *selectedCols; /* columns needing SELECT permission */ Bitmapset *insertedCols; /* columns needing INSERT permission */ Bitmapset *updatedCols; /* columns needing UPDATE permission */ + Bitmapset *extraUpdatedCols; /* generated columns being updated */ List *securityQuals; /* security barrier quals to apply, if any */ } RangeTblEntry; @@ -1152,7 +1219,7 @@ typedef struct WithCheckOption * or InvalidOid if not available. * nulls_first means about what you'd expect. If sortop is InvalidOid * then nulls_first is meaningless and should be set to false. - * hashable is TRUE if eqop is hashable (note this condition also depends + * hashable is true if eqop is hashable (note this condition also depends * on the datatype of the input expression). * * In an ORDER BY item, all fields must be valid. (The eqop isn't essential @@ -1274,6 +1341,9 @@ typedef struct GroupingSet * if the clause originally came from WINDOW, and is NULL if it originally * was an OVER clause (but note that we collapse out duplicate OVERs). * partitionClause and orderClause are lists of SortGroupClause structs. + * If we have RANGE with offset PRECEDING/FOLLOWING, the semantics of that are + * specified by startInRangeFunc/inRangeColl/inRangeAsc/inRangeNullsFirst + * for the start offset, or endInRangeFunc/inRange* for the end offset. * winref is an ID number referenced by WindowFunc nodes; it must be unique * among the members of a Query's windowClause list. * When refname isn't null, the partitionClause is always copied from there; @@ -1290,6 +1360,11 @@ typedef struct WindowClause int frameOptions; /* frame_clause options, see WindowDef */ Node *startOffset; /* expression for starting bound, if any */ Node *endOffset; /* expression for ending bound, if any */ + Oid startInRangeFunc; /* in_range function for startOffset */ + Oid endInRangeFunc; /* in_range function for endOffset */ + Oid inRangeColl; /* collation for in_range tests */ + bool inRangeAsc; /* use ASC sort order for in_range tests? */ + bool inRangeNullsFirst; /* nulls sort first for in_range tests? */ Index winref; /* ID referenced by window functions */ bool copiedOrder; /* did we copy orderClause from refname? */ } WindowClause; @@ -1367,11 +1442,19 @@ typedef struct OnConflictClause * * We don't currently support the SEARCH or CYCLE clause. */ +typedef enum CTEMaterialize +{ + CTEMaterializeDefault, /* no option specified */ + CTEMaterializeAlways, /* MATERIALIZED */ + CTEMaterializeNever /* NOT MATERIALIZED */ +} CTEMaterialize; + typedef struct CommonTableExpr { NodeTag type; char *ctename; /* query name (never qualified) */ List *aliascolnames; /* optional list of column names */ + CTEMaterialize ctematerialized; /* is this an optimization fence? */ /* SelectStmt/InsertStmt/etc before parse analysis, Query afterwards: */ Node *ctequery; /* the CTE's subquery */ int location; /* token location, or -1 if unknown */ @@ -1540,6 +1623,7 @@ typedef struct SelectStmt List *sortClause; /* sort clause (a list of SortBy's) */ Node *limitOffset; /* # of result tuples to skip */ Node *limitCount; /* # of result tuples to return */ + LimitOption limitOption; /* limit type */ List *lockingClause; /* FOR UPDATE (list of LockingClause's) */ WithClause *withClause; /* WITH clause */ @@ -1641,9 +1725,11 @@ typedef enum ObjectType OBJECT_OPERATOR, OBJECT_OPFAMILY, OBJECT_POLICY, + OBJECT_PROCEDURE, OBJECT_PUBLICATION, OBJECT_PUBLICATION_REL, OBJECT_ROLE, + OBJECT_ROUTINE, OBJECT_RULE, OBJECT_SCHEMA, OBJECT_SEQUENCE, @@ -1705,8 +1791,11 @@ typedef enum AlterTableType AT_AddColumnRecurse, /* internal to commands/tablecmds.c */ AT_AddColumnToView, /* implicitly via CREATE OR REPLACE VIEW */ AT_ColumnDefault, /* alter column default */ + AT_CookedColumnDefault, /* add a pre-cooked column default */ AT_DropNotNull, /* alter column drop not null */ AT_SetNotNull, /* alter column set not null */ + AT_DropExpression, /* alter column drop expression */ + AT_CheckNotNull, /* check column is already marked not null */ AT_SetStatistics, /* alter column set statistics */ AT_SetOptions, /* alter column set ( options ) */ AT_ResetOptions, /* alter column reset ( options ) */ @@ -1718,11 +1807,10 @@ typedef enum AlterTableType AT_AddConstraint, /* add constraint */ AT_AddConstraintRecurse, /* internal to commands/tablecmds.c */ AT_ReAddConstraint, /* internal to commands/tablecmds.c */ + AT_ReAddDomainConstraint, /* internal to commands/tablecmds.c */ AT_AlterConstraint, /* alter constraint */ AT_ValidateConstraint, /* validate constraint */ AT_ValidateConstraintRecurse, /* internal to commands/tablecmds.c */ - AT_ProcessedConstraint, /* pre-processed add constraint (local in - * parser/parse_utilcmd.c) */ AT_AddIndexConstraint, /* add constraint using existing index */ AT_DropConstraint, /* drop constraint */ AT_DropConstraintRecurse, /* internal to commands/tablecmds.c */ @@ -1734,8 +1822,6 @@ typedef enum AlterTableType AT_DropCluster, /* SET WITHOUT CLUSTER */ AT_SetLogged, /* SET LOGGED */ AT_SetUnLogged, /* SET UNLOGGED */ - AT_AddOids, /* SET WITH OIDS */ - AT_AddOidsRecurse, /* internal to commands/tablecmds.c */ AT_DropOids, /* SET WITHOUT OIDS */ AT_SetTableSpace, /* SET TABLESPACE */ AT_SetRelOptions, /* SET (...) -- AM specific parameters */ @@ -1783,6 +1869,8 @@ typedef struct AlterTableCmd /* one subcommand of an ALTER TABLE */ AlterTableType subtype; /* Type of table alteration to apply */ char *name; /* column, constraint, or trigger to act on, * or tablespace */ + int16 num; /* attribute number for columns referenced by + * number */ RoleSpec *newowner; Node *def; /* definition of new column, index, * constraint, or parent table */ @@ -1839,29 +1927,12 @@ typedef enum GrantTargetType ACL_TARGET_DEFAULTS /* ALTER DEFAULT PRIVILEGES */ } GrantTargetType; -typedef enum GrantObjectType -{ - ACL_OBJECT_COLUMN, /* column */ - ACL_OBJECT_RELATION, /* table, view */ - ACL_OBJECT_SEQUENCE, /* sequence */ - ACL_OBJECT_DATABASE, /* database */ - ACL_OBJECT_DOMAIN, /* domain */ - ACL_OBJECT_FDW, /* foreign-data wrapper */ - ACL_OBJECT_FOREIGN_SERVER, /* foreign server */ - ACL_OBJECT_FUNCTION, /* function */ - ACL_OBJECT_LANGUAGE, /* procedural language */ - ACL_OBJECT_LARGEOBJECT, /* largeobject */ - ACL_OBJECT_NAMESPACE, /* namespace */ - ACL_OBJECT_TABLESPACE, /* tablespace */ - ACL_OBJECT_TYPE /* type */ -} GrantObjectType; - typedef struct GrantStmt { NodeTag type; bool is_grant; /* true = GRANT, false = REVOKE */ GrantTargetType targtype; /* type of the grant target */ - GrantObjectType objtype; /* kind of object being operated on */ + ObjectType objtype; /* kind of object being operated on */ List *objects; /* list of RangeVar nodes, ObjectWithArgs * nodes, or plain names (as Value strings) */ List *privileges; /* list of AccessPriv nodes */ @@ -1951,6 +2022,7 @@ typedef struct CopyStmt bool is_program; /* is 'filename' a program to popen? */ char *filename; /* filename, or NULL for STDIN/STDOUT */ List *options; /* List of DefElem nodes */ + Node *whereClause; /* WHERE condition (or NULL) */ } CopyStmt; /* ---------------------- @@ -2014,6 +2086,7 @@ typedef struct CreateStmt List *options; /* options from WITH clause */ OnCommitAction oncommit; /* what do we do at COMMIT? */ char *tablespacename; /* table space to use, or NULL */ + char *accessMethod; /* table access method */ bool if_not_exists; /* just do nothing if it already exists? */ } CreateStmt; @@ -2055,6 +2128,7 @@ typedef enum ConstrType /* types of constraints */ CONSTR_NOTNULL, CONSTR_DEFAULT, CONSTR_IDENTITY, + CONSTR_GENERATED, CONSTR_CHECK, CONSTR_PRIMARY, CONSTR_UNIQUE, @@ -2093,10 +2167,13 @@ typedef struct Constraint bool is_no_inherit; /* is constraint non-inheritable? */ Node *raw_expr; /* expr, as untransformed parse tree */ char *cooked_expr; /* expr, as nodeToString representation */ - char generated_when; + char generated_when; /* ALWAYS or BY DEFAULT */ /* Fields used for unique constraints (UNIQUE and PRIMARY KEY): */ - List *keys; /* String nodes naming referenced column(s) */ + List *keys; /* String nodes naming referenced key + * column(s) */ + List *including; /* String nodes naming referenced nonkey + * column(s) */ /* Fields used for EXCLUSION constraints: */ List *exclusions; /* list of (IndexElem, operator name) pairs */ @@ -2105,6 +2182,8 @@ typedef struct Constraint List *options; /* options from WITH clause */ char *indexname; /* existing index to use; otherwise NULL */ char *indexspace; /* index tablespace; NULL for default */ + bool reset_default_tblspc; /* reset default_tablespace prior to + * creating the index */ /* These could be, but currently are not, used for UNIQUE/PKEY: */ char *access_method; /* index access method; NULL for default */ Node *where_clause; /* partial index predicate */ @@ -2400,8 +2479,7 @@ typedef struct AlterEventTrigStmt } AlterEventTrigStmt; /* ---------------------- - * Create/Drop PROCEDURAL LANGUAGE Statements - * Create PROCEDURAL LANGUAGE Statements + * Create LANGUAGE Statements * ---------------------- */ typedef struct CreatePLangStmt @@ -2499,6 +2577,7 @@ typedef struct DefineStmt List *args; /* a list of TypeName (if needed) */ List *definition; /* a list of DefElem */ bool if_not_exists; /* just do nothing if it already exists? */ + bool replace; /* replace if already exists? */ } DefineStmt; /* ---------------------- @@ -2682,7 +2761,7 @@ typedef struct FetchStmt FetchDirection direction; /* see above */ long howMany; /* number of rows, or position argument */ char *portalname; /* name of portal (cursor) */ - bool ismove; /* TRUE if MOVE */ + bool ismove; /* true if MOVE */ } FetchStmt; /* ---------------------- @@ -2704,12 +2783,17 @@ typedef struct IndexStmt char *accessMethod; /* name of access method (eg. btree) */ char *tableSpace; /* tablespace, or NULL for default */ List *indexParams; /* columns to index: a list of IndexElem */ + List *indexIncludingParams; /* additional columns to index: a list + * of IndexElem */ List *options; /* WITH clause options: a list of DefElem */ Node *whereClause; /* qualification (partial-index predicate) */ List *excludeOpNames; /* exclusion operator names, or NIL if none */ char *idxcomment; /* comment to apply to index, or NULL */ Oid indexOid; /* OID of an existing index, if any */ Oid oldNode; /* relfilenode of existing storage, if any */ + SubTransactionId oldCreateSubid; /* rd_createSubid of oldNode */ + SubTransactionId oldFirstRelfilenodeSubid; /* rd_firstRelfilenodeSubid of + * oldNode */ bool unique; /* is index unique? */ bool primary; /* is index a primary key? */ bool isconstraint; /* is it for a pkey/unique constraint? */ @@ -2718,6 +2802,8 @@ typedef struct IndexStmt bool transformed; /* true when transformIndexStmt is finished */ bool concurrent; /* should this be a concurrent index build? */ bool if_not_exists; /* just do nothing if index already exists? */ + bool reset_default_tblspc; /* reset default_tablespace prior to + * executing */ } IndexStmt; /* ---------------------- @@ -2731,9 +2817,22 @@ typedef struct CreateStatsStmt List *stat_types; /* stat types (list of Value strings) */ List *exprs; /* expressions to build statistics on */ List *relations; /* rels to build stats on (list of RangeVar) */ + char *stxcomment; /* comment to apply to stats, or NULL */ bool if_not_exists; /* do nothing if stats name already exists */ } CreateStatsStmt; +/* ---------------------- + * Alter Statistics Statement + * ---------------------- + */ +typedef struct AlterStatsStmt +{ + NodeTag type; + List *defnames; /* qualified name (list of Value strings) */ + int stxstattarget; /* statistics target */ + bool missing_ok; /* skip error if statistics object is missing */ +} AlterStatsStmt; + /* ---------------------- * Create Function Statement * ---------------------- @@ -2741,12 +2840,12 @@ typedef struct CreateStatsStmt typedef struct CreateFunctionStmt { NodeTag type; + bool is_procedure; /* it's really CREATE PROCEDURE */ bool replace; /* T => replace if already exists */ List *funcname; /* qualified name of function to create */ List *parameters; /* a list of FunctionParameter */ TypeName *returnType; /* the return type */ List *options; /* a list of DefElem */ - List *withClause; /* a list of DefElem */ } CreateFunctionStmt; typedef enum FunctionParameterMode @@ -2771,6 +2870,7 @@ typedef struct FunctionParameter typedef struct AlterFunctionStmt { NodeTag type; + ObjectType objtype; ObjectWithArgs *func; /* name and args of function */ List *actions; /* list of DefElem */ } AlterFunctionStmt; @@ -2793,8 +2893,26 @@ typedef struct InlineCodeBlock char *source_text; /* source text of anonymous code block */ Oid langOid; /* OID of selected language */ bool langIsTrusted; /* trusted property of the language */ + bool atomic; /* atomic execution context */ } InlineCodeBlock; +/* ---------------------- + * CALL statement + * ---------------------- + */ +typedef struct CallStmt +{ + NodeTag type; + FuncCall *funccall; /* from the parser */ + FuncExpr *funcexpr; /* transformed */ +} CallStmt; + +typedef struct CallContext +{ + NodeTag type; + bool atomic; +} CallContext; + /* ---------------------- * Alter Object Rename Statement * ---------------------- @@ -2824,6 +2942,7 @@ typedef struct AlterObjectDependsStmt RangeVar *relation; /* in case a table is involved */ Node *object; /* name of the object */ Value *extname; /* extension name */ + bool remove; /* set true to remove dep rather than add */ } AlterObjectDependsStmt; /* ---------------------- @@ -2853,9 +2972,8 @@ typedef struct AlterOwnerStmt RoleSpec *newowner; /* the new owner */ } AlterOwnerStmt; - /* ---------------------- - * Alter Operator Set Restrict, Join + * Alter Operator Set ( this-n-that ) * ---------------------- */ typedef struct AlterOperatorStmt @@ -2865,6 +2983,16 @@ typedef struct AlterOperatorStmt List *options; /* List of DefElem nodes */ } AlterOperatorStmt; +/* ------------------------ + * Alter Type Set ( this-n-that ) + * ------------------------ + */ +typedef struct AlterTypeStmt +{ + NodeTag type; + List *typeName; /* type name (possibly qualified) */ + List *options; /* List of DefElem nodes */ +} AlterTypeStmt; /* ---------------------- * Create Rule Statement @@ -2935,8 +3063,10 @@ typedef struct TransactionStmt { NodeTag type; TransactionStmtKind kind; /* see above */ - List *options; /* for BEGIN/START and savepoint commands */ + List *options; /* for BEGIN/START commands */ + char *savepoint_name; /* for savepoint commands */ char *gid; /* for two-phase-commit related commands */ + bool chain; /* AND CHAIN option */ } TransactionStmt; /* ---------------------- @@ -3057,6 +3187,7 @@ typedef struct DropdbStmt NodeTag type; char *dbname; /* database to drop */ bool missing_ok; /* skip error if db is missing? */ + List *options; /* currently only FORCE is supported */ } DropdbStmt; /* ---------------------- @@ -3073,41 +3204,49 @@ typedef struct AlterSystemStmt * Cluster Statement (support pbrown's cluster index implementation) * ---------------------- */ +typedef enum ClusterOption +{ + CLUOPT_RECHECK = 1 << 0, /* recheck relation state */ + CLUOPT_VERBOSE = 1 << 1 /* print progress info */ +} ClusterOption; + typedef struct ClusterStmt { NodeTag type; RangeVar *relation; /* relation being indexed, or NULL if all */ char *indexname; /* original index defined */ - bool verbose; /* print progress info */ + int options; /* OR of ClusterOption flags */ } ClusterStmt; /* ---------------------- * Vacuum and Analyze Statements * * Even though these are nominally two statements, it's convenient to use - * just one node type for both. Note that at least one of VACOPT_VACUUM - * and VACOPT_ANALYZE must be set in options. + * just one node type for both. * ---------------------- */ -typedef enum VacuumOption +typedef struct VacuumStmt { - VACOPT_VACUUM = 1 << 0, /* do VACUUM */ - VACOPT_ANALYZE = 1 << 1, /* do ANALYZE */ - VACOPT_VERBOSE = 1 << 2, /* print progress info */ - VACOPT_FREEZE = 1 << 3, /* FREEZE option */ - VACOPT_FULL = 1 << 4, /* FULL (non-concurrent) vacuum */ - VACOPT_NOWAIT = 1 << 5, /* don't wait to get lock (autovacuum only) */ - VACOPT_SKIPTOAST = 1 << 6, /* don't process the TOAST table, if any */ - VACOPT_DISABLE_PAGE_SKIPPING = 1 << 7 /* don't skip any pages */ -} VacuumOption; + NodeTag type; + List *options; /* list of DefElem nodes */ + List *rels; /* list of VacuumRelation, or NIL for all */ + bool is_vacuumcmd; /* true for VACUUM, false for ANALYZE */ +} VacuumStmt; -typedef struct VacuumStmt +/* + * Info about a single target table of VACUUM/ANALYZE. + * + * If the OID field is set, it always identifies the table to process. + * Then the relation field can be NULL; if it isn't, it's used only to report + * failure to open/lock the relation. + */ +typedef struct VacuumRelation { NodeTag type; - int options; /* OR of VacuumOption flags */ - RangeVar *relation; /* single table to process, or NULL */ + RangeVar *relation; /* table name to process, or NULL */ + Oid oid; /* table's OID; InvalidOid if not looked up */ List *va_cols; /* list of column names, or NIL for all */ -} VacuumStmt; +} VacuumRelation; /* ---------------------- * Explain Statement @@ -3216,7 +3355,8 @@ typedef struct ConstraintsSetStmt */ /* Reindex options */ -#define REINDEXOPT_VERBOSE (1 << 0) /* print progress info */ +#define REINDEXOPT_VERBOSE (1 << 0) /* print progress info */ +#define REINDEXOPT_REPORT_PROGRESS (1 << 1) /* report pgstat progress */ typedef enum ReindexObjectType { @@ -3235,6 +3375,7 @@ typedef struct ReindexStmt RangeVar *relation; /* Table or index to reindex */ const char *name; /* name of database to reindex */ int options; /* Reindex options flags */ + bool concurrent; /* reindex concurrently? */ } ReindexStmt; /* ---------------------- diff --git a/parser/include/nodes/relation.h b/parser/include/nodes/pathnodes.h similarity index 82% rename from parser/include/nodes/relation.h rename to parser/include/nodes/pathnodes.h index 3c7436cf..10f0a149 100644 --- a/parser/include/nodes/relation.h +++ b/parser/include/nodes/pathnodes.h @@ -1,18 +1,18 @@ /*------------------------------------------------------------------------- * - * relation.h - * Definitions for planner's internal data structures. + * pathnodes.h + * Definitions for planner's internal data structures, especially Paths. * * - * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * - * src/include/nodes/relation.h + * src/include/nodes/pathnodes.h * *------------------------------------------------------------------------- */ -#ifndef RELATION_H -#define RELATION_H +#ifndef PATHNODES_H +#define PATHNODES_H #include "access/sdir.h" #include "lib/stringinfo.h" @@ -60,7 +60,7 @@ typedef struct AggClauseCosts bool hasNonPartial; /* does any agg not support partial mode? */ bool hasNonSerial; /* is any partial agg non-serializable? */ QualCost transCost; /* total per-input-row execution costs */ - Cost finalCost; /* total per-aggregated-row costs */ + QualCost finalCost; /* total per-aggregated-row costs */ Size transitionSpace; /* space for pass-by-ref transition data */ } AggClauseCosts; @@ -71,6 +71,8 @@ typedef struct AggClauseCosts typedef enum UpperRelationKind { UPPERREL_SETOP, /* result of UNION/INTERSECT/EXCEPT, if any */ + UPPERREL_PARTIAL_GROUP_AGG, /* result of partial grouping/aggregation, if + * any */ UPPERREL_GROUP_AGG, /* result of grouping/aggregation, if any */ UPPERREL_WINDOW, /* result of window functions, if any */ UPPERREL_DISTINCT, /* result of "SELECT DISTINCT", if any */ @@ -79,6 +81,17 @@ typedef enum UpperRelationKind /* NB: UPPERREL_FINAL must be last enum entry; it's used to size arrays */ } UpperRelationKind; +/* + * This enum identifies which type of relation is being planned through the + * inheritance planner. INHKIND_NONE indicates the inheritance planner + * was not used. + */ +typedef enum InheritanceKind +{ + INHKIND_NONE, + INHKIND_INHERITED, + INHKIND_PARTITIONED +} InheritanceKind; /*---------- * PlannerGlobal @@ -107,14 +120,15 @@ typedef struct PlannerGlobal List *resultRelations; /* "flat" list of integer RT indexes */ - List *nonleafResultRelations; /* "flat" list of integer RT indexes */ List *rootResultRelations; /* "flat" list of integer RT indexes */ + List *appendRelations; /* "flat" list of AppendRelInfos */ + List *relationOids; /* OIDs of relations the plan depends on */ List *invalItems; /* other dependencies, as PlanInvalItems */ - int nParamExec; /* number of PARAM_EXEC Params used */ + List *paramExecTypes; /* type OIDs for PARAM_EXEC Params */ Index lastPHId; /* highest PlaceHolderVar ID assigned */ @@ -131,6 +145,8 @@ typedef struct PlannerGlobal bool parallelModeNeeded; /* parallel mode actually required? */ char maxParallelHazard; /* worst PROPARALLEL hazard level */ + + PartitionDirectory partition_directory; /* partition descriptors */ } PlannerGlobal; /* macro for fetching the Plan associated with a SubPlan node */ @@ -146,9 +162,17 @@ typedef struct PlannerGlobal * It holds links to all of the planner's working state, in addition to the * original Query. Note that at present the planner extensively modifies * the passed-in Query data structure; someday that should stop. + * + * For reasons explained in optimizer/optimizer.h, we define the typedef + * either here or in that header, whichever is read first. *---------- */ -typedef struct PlannerInfo +#ifndef HAVE_PLANNERINFO_TYPEDEF +typedef struct PlannerInfo PlannerInfo; +#define HAVE_PLANNERINFO_TYPEDEF 1 +#endif + +struct PlannerInfo { NodeTag type; @@ -158,7 +182,7 @@ typedef struct PlannerInfo Index query_level; /* 1 at the outermost Query */ - struct PlannerInfo *parent_root; /* NULL at outermost Query */ + PlannerInfo *parent_root; /* NULL at outermost Query */ /* * plan_params contains the expressions that this query level needs to @@ -181,12 +205,19 @@ typedef struct PlannerInfo /* * simple_rte_array is the same length as simple_rel_array and holds - * pointers to the associated rangetable entries. This lets us avoid - * rt_fetch(), which can be a bit slow once large inheritance sets have - * been expanded. + * pointers to the associated rangetable entries. Using this is a shade + * faster than using rt_fetch(), mostly due to fewer indirections. */ RangeTblEntry **simple_rte_array; /* rangetable as an array */ + /* + * append_rel_array is the same length as the above arrays, and holds + * pointers to the corresponding AppendRelInfo entry indexed by + * child_relid, or NULL if the rel is not an appendrel child. The array + * itself is not allocated if append_rel_list is empty. + */ + struct AppendRelInfo **append_rel_array; + /* * all_baserels is a Relids set of all base relids (but not "other" * relids) in the query; that is, the Relids identifier of the final join @@ -234,6 +265,8 @@ typedef struct PlannerInfo List *eq_classes; /* list of active EquivalenceClasses */ + bool ec_merging_done; /* set true once ECs are canonical */ + List *canon_pathkeys; /* list of "canonical" PathKeys */ List *left_join_clauses; /* list of RestrictInfos for mergejoinable @@ -249,10 +282,13 @@ typedef struct PlannerInfo List *join_info_list; /* list of SpecialJoinInfos */ + /* + * Note: for AppendRelInfos describing partitions of a partitioned table, + * we guarantee that partitions that come earlier in the partitioned + * table's PartitionDesc will appear earlier in append_rel_list. + */ List *append_rel_list; /* list of AppendRelInfos */ - List *pcinfo_list; /* list of PartitionedChildRelInfos */ - List *rowMarks; /* list of PlanRowMarks */ List *placeholder_list; /* list of PlaceHolderInfos */ @@ -266,6 +302,9 @@ typedef struct PlannerInfo List *distinct_pathkeys; /* distinctClause pathkeys, if any */ List *sort_pathkeys; /* sortClause pathkeys, if any */ + List *part_schemes; /* Canonicalised partition schemes used in the + * query. */ + List *initial_rels; /* RelOptInfos we are now trying to join */ /* Use fetch_upper_rel() to get any particular upper rel */ @@ -275,8 +314,13 @@ typedef struct PlannerInfo struct PathTarget *upper_targets[UPPERREL_FINAL + 1]; /* - * grouping_planner passes back its final processed targetlist here, for - * use in relabeling the topmost tlist of the finished Plan. + * The fully-processed targetlist is kept here. It differs from + * parse->targetList in that (for INSERT and UPDATE) it's been reordered + * to match the target table, and defaults have been filled in. Also, + * additional resjunk targets may be present. preprocess_targetlist() + * does most of this work, but note that more resjunk targets can get + * added during appendrel expansion. (Hence, upper_targets mustn't get + * set up till after that.) */ List *processed_tlist; @@ -286,7 +330,8 @@ typedef struct PlannerInfo MemoryContext planner_cxt; /* context holding PlannerInfo */ - double total_table_pages; /* # of pages in all tables of query */ + double total_table_pages; /* # of pages in all non-dummy tables of + * query */ double tuple_fraction; /* tuple_fraction passed to query_planner */ double limit_tuples; /* limit_tuples passed to query_planner */ @@ -294,11 +339,11 @@ typedef struct PlannerInfo Index qual_security_level; /* minimum security_level for quals */ /* Note: qual_security_level is zero if there are no securityQuals */ - bool hasInheritedTarget; /* true if parse->resultRelation is an - * inheritance child rel */ + InheritanceKind inhTargetKind; /* indicates if the target relation is an + * inheritance child or partition or a + * partitioned table */ bool hasJoinRTEs; /* true if any RTEs are RTE_JOIN kind */ bool hasLateralRTEs; /* true if any RTEs are marked LATERAL */ - bool hasDeletedRTEs; /* true if any RTE was deleted from jointree */ bool hasHavingQual; /* true if havingQual was non-null */ bool hasPseudoConstantQuals; /* true if any RestrictInfo has * pseudoconstant = true */ @@ -314,7 +359,10 @@ typedef struct PlannerInfo /* optional private data for join_search_hook, e.g., GEQO */ void *join_search_private; -} PlannerInfo; + + /* Does this query modify any partition key columns? */ + bool partColsUpdated; +}; /* @@ -326,6 +374,37 @@ typedef struct PlannerInfo ((root)->simple_rte_array ? (root)->simple_rte_array[rti] : \ rt_fetch(rti, (root)->parse->rtable)) +/* + * If multiple relations are partitioned the same way, all such partitions + * will have a pointer to the same PartitionScheme. A list of PartitionScheme + * objects is attached to the PlannerInfo. By design, the partition scheme + * incorporates only the general properties of the partition method (LIST vs. + * RANGE, number of partitioning columns and the type information for each) + * and not the specific bounds. + * + * We store the opclass-declared input data types instead of the partition key + * datatypes since the former rather than the latter are used to compare + * partition bounds. Since partition key data types and the opclass declared + * input data types are expected to be binary compatible (per ResolveOpClass), + * both of those should have same byval and length properties. + */ +typedef struct PartitionSchemeData +{ + char strategy; /* partition strategy */ + int16 partnatts; /* number of partition attributes */ + Oid *partopfamily; /* OIDs of operator families */ + Oid *partopcintype; /* OIDs of opclass declared input data types */ + Oid *partcollation; /* OIDs of partitioning collations */ + + /* Cached information about partition key data types. */ + int16 *parttyplen; + bool *parttypbyval; + + /* Cached information about partition comparison functions. */ + struct FmgrInfo *partsupfunc; +} PartitionSchemeData; + +typedef struct PartitionSchemeData *PartitionScheme; /*---------- * RelOptInfo @@ -360,6 +439,11 @@ typedef struct PlannerInfo * handling join alias Vars. Currently this is not needed because all join * alias Vars are expanded to non-aliased form during preprocess_expression. * + * We also have relations representing joins between child relations of + * different partitioned tables. These relations are not added to + * join_rel_level lists as they are not joined directly by the dynamic + * programming algorithm. + * * There is also a RelOptKind for "upper" relations, which are RelOptInfos * that describe post-scan/join processing steps, such as aggregation. * Many of the fields in these RelOptInfos are meaningless, but their Path @@ -407,7 +491,7 @@ typedef struct PlannerInfo * * relid - RTE index (this is redundant with the relids field, but * is provided for convenience of access) - * rtekind - distinguishes plain relation, subquery, or function RTE + * rtekind - copy of RTE's rtekind field * min_attr, max_attr - range of valid AttrNumbers for rel * attr_needed - array of bitmapsets indicating the highest joinrel * in which each attribute is needed; if bit 0 is set then @@ -423,6 +507,8 @@ typedef struct PlannerInfo * pages - number of disk pages in relation (zero if not a table) * tuples - number of tuples in relation (not considering restrictions) * allvisfrac - fraction of disk pages that are marked all-visible + * eclass_indexes - EquivalenceClasses that mention this rel (filled + * only after EC merging is complete) * subroot - PlannerInfo for subquery (NULL if it's not a subquery) * subplan_params - list of PlannerParamItems to be passed to subquery * @@ -456,7 +542,7 @@ typedef struct PlannerInfo * other rels for which we have tried and failed to prove * this one unique * - * The presence of the remaining fields depends on the restrictions + * The presence of the following fields depends on the restrictions * and joins that the relation participates in: * * baserestrictinfo - List of RestrictInfo nodes, containing info about @@ -487,6 +573,51 @@ typedef struct PlannerInfo * We store baserestrictcost in the RelOptInfo (for base relations) because * we know we will need it at least once (to price the sequential scan) * and may need it multiple times to price index scans. + * + * A join relation is considered to be partitioned if it is formed from a + * join of two relations that are partitioned, have matching partitioning + * schemes, and are joined on an equijoin of the partitioning columns. + * Under those conditions we can consider the join relation to be partitioned + * by either relation's partitioning keys, though some care is needed if + * either relation can be forced to null by outer-joining. For example, an + * outer join like (A LEFT JOIN B ON A.a = B.b) may produce rows with B.b + * NULL. These rows may not fit the partitioning conditions imposed on B. + * Hence, strictly speaking, the join is not partitioned by B.b and thus + * partition keys of an outer join should include partition key expressions + * from the non-nullable side only. However, if a subsequent join uses + * strict comparison operators (and all commonly-used equijoin operators are + * strict), the presence of nulls doesn't cause a problem: such rows couldn't + * match anything on the other side and thus they don't create a need to do + * any cross-partition sub-joins. Hence we can treat such values as still + * partitioning the join output for the purpose of additional partitionwise + * joining, so long as a strict join operator is used by the next join. + * + * If the relation is partitioned, these fields will be set: + * + * part_scheme - Partitioning scheme of the relation + * nparts - Number of partitions + * boundinfo - Partition bounds + * partbounds_merged - true if partition bounds are merged ones + * partition_qual - Partition constraint if not the root + * part_rels - RelOptInfos for each partition + * all_partrels - Relids set of all partition relids + * partexprs, nullable_partexprs - Partition key expressions + * partitioned_child_rels - RT indexes of unpruned partitions of + * this relation that are partitioned tables + * themselves, in hierarchical order + * + * The partexprs and nullable_partexprs arrays each contain + * part_scheme->partnatts elements. Each of the elements is a list of + * partition key expressions. For partitioned base relations, there is one + * expression in each partexprs element, and nullable_partexprs is empty. + * For partitioned join relations, each base relation within the join + * contributes one partition key expression per partitioning column; + * that expression goes in the partexprs[i] list if the base relation + * is not nullable by this join or any lower outer join, or in the + * nullable_partexprs[i] list if the base relation is nullable. + * Furthermore, FULL JOINs add extra nullable_partexprs expressions + * corresponding to COALESCE expressions of the left and right join columns, + * to simplify matching join clauses to those lists. *---------- */ typedef enum RelOptKind @@ -494,7 +625,9 @@ typedef enum RelOptKind RELOPT_BASEREL, RELOPT_JOINREL, RELOPT_OTHER_MEMBER_REL, + RELOPT_OTHER_JOINREL, RELOPT_UPPER_REL, + RELOPT_OTHER_UPPER_REL, RELOPT_DEADREL } RelOptKind; @@ -507,13 +640,20 @@ typedef enum RelOptKind (rel)->reloptkind == RELOPT_OTHER_MEMBER_REL) /* Is the given relation a join relation? */ -#define IS_JOIN_REL(rel) ((rel)->reloptkind == RELOPT_JOINREL) +#define IS_JOIN_REL(rel) \ + ((rel)->reloptkind == RELOPT_JOINREL || \ + (rel)->reloptkind == RELOPT_OTHER_JOINREL) /* Is the given relation an upper relation? */ -#define IS_UPPER_REL(rel) ((rel)->reloptkind == RELOPT_UPPER_REL) +#define IS_UPPER_REL(rel) \ + ((rel)->reloptkind == RELOPT_UPPER_REL || \ + (rel)->reloptkind == RELOPT_OTHER_UPPER_REL) /* Is the given relation an "other" relation? */ -#define IS_OTHER_REL(rel) ((rel)->reloptkind == RELOPT_OTHER_MEMBER_REL) +#define IS_OTHER_REL(rel) \ + ((rel)->reloptkind == RELOPT_OTHER_MEMBER_REL || \ + (rel)->reloptkind == RELOPT_OTHER_JOINREL || \ + (rel)->reloptkind == RELOPT_OTHER_UPPER_REL) typedef struct RelOptInfo { @@ -552,7 +692,7 @@ typedef struct RelOptInfo /* information about a base rel (not set for join rels!) */ Index relid; Oid reltablespace; /* containing tablespace */ - RTEKind rtekind; /* RELATION, SUBQUERY, or FUNCTION */ + RTEKind rtekind; /* RELATION, SUBQUERY, FUNCTION, etc */ AttrNumber min_attr; /* smallest attrno of rel (often <0) */ AttrNumber max_attr; /* largest attrno of rel */ Relids *attr_needed; /* array indexed [min_attr .. max_attr] */ @@ -564,6 +704,8 @@ typedef struct RelOptInfo BlockNumber pages; /* size estimates derived from pg_class */ double tuples; double allvisfrac; + Bitmapset *eclass_indexes; /* Indexes in PlannerInfo's eq_classes list of + * ECs that mention this rel */ PlannerInfo *subroot; /* if subquery */ List *subplan_params; /* if subquery */ int rel_parallel_workers; /* wanted number of parallel workers */ @@ -590,19 +732,59 @@ typedef struct RelOptInfo * involving this rel */ bool has_eclass_joins; /* T means joininfo is incomplete */ - /* used by "other" relations */ - Relids top_parent_relids; /* Relids of topmost parents */ + /* used by partitionwise joins: */ + bool consider_partitionwise_join; /* consider partitionwise join + * paths? (if partitioned rel) */ + Relids top_parent_relids; /* Relids of topmost parents (if "other" + * rel) */ + + /* used for partitioned relations: */ + PartitionScheme part_scheme; /* Partitioning scheme */ + int nparts; /* Number of partitions; -1 if not yet set; in + * case of a join relation 0 means it's + * considered unpartitioned */ + struct PartitionBoundInfoData *boundinfo; /* Partition bounds */ + bool partbounds_merged; /* True if partition bounds were created + * by partition_bounds_merge() */ + List *partition_qual; /* Partition constraint, if not the root */ + struct RelOptInfo **part_rels; /* Array of RelOptInfos of partitions, + * stored in the same order as bounds */ + Relids all_partrels; /* Relids set of all partition relids */ + List **partexprs; /* Non-nullable partition key expressions */ + List **nullable_partexprs; /* Nullable partition key expressions */ + List *partitioned_child_rels; /* List of RT indexes */ } RelOptInfo; +/* + * Is given relation partitioned? + * + * It's not enough to test whether rel->part_scheme is set, because it might + * be that the basic partitioning properties of the input relations matched + * but the partition bounds did not. Also, if we are able to prove a rel + * dummy (empty), we should henceforth treat it as unpartitioned. + */ +#define IS_PARTITIONED_REL(rel) \ + ((rel)->part_scheme && (rel)->boundinfo && (rel)->nparts > 0 && \ + (rel)->part_rels && !IS_DUMMY_REL(rel)) + +/* + * Convenience macro to make sure that a partitioned relation has all the + * required members set. + */ +#define REL_HAS_ALL_PART_PROPS(rel) \ + ((rel)->part_scheme && (rel)->boundinfo && (rel)->nparts > 0 && \ + (rel)->part_rels && (rel)->partexprs && (rel)->nullable_partexprs) + /* * IndexOptInfo * Per-index information for planning/optimization * - * indexkeys[], indexcollations[], opfamily[], and opcintype[] - * each have ncolumns entries. + * indexkeys[], indexcollations[] each have ncolumns entries. + * opfamily[], and opcintype[] each have nkeycolumns entries. They do + * not contain any information about included attributes. * - * sortopfamily[], reverse_sort[], and nulls_first[] likewise have - * ncolumns entries, if the index is ordered; but if it is unordered, + * sortopfamily[], reverse_sort[], and nulls_first[] have + * nkeycolumns entries, if the index is ordered; but if it is unordered, * those pointers are NULL. * * Zeroes in the indexkeys[] array indicate index columns that are @@ -624,7 +806,12 @@ typedef struct RelOptInfo * (by plancat.c), indrestrictinfo and predOK are set later, in * check_index_predicates(). */ -typedef struct IndexOptInfo +#ifndef HAVE_INDEXOPTINFO_TYPEDEF +typedef struct IndexOptInfo IndexOptInfo; +#define HAVE_INDEXOPTINFO_TYPEDEF 1 +#endif + +struct IndexOptInfo { NodeTag type; @@ -639,13 +826,16 @@ typedef struct IndexOptInfo /* index descriptor information */ int ncolumns; /* number of columns in index */ - int *indexkeys; /* column numbers of index's keys, or 0 */ + int nkeycolumns; /* number of key columns in index */ + int *indexkeys; /* column numbers of index's attributes both + * key and included columns, or 0 */ Oid *indexcollations; /* OIDs of collations of index columns */ Oid *opfamily; /* OIDs of operator families for columns */ Oid *opcintype; /* OIDs of opclass declared input data types */ Oid *sortopfamily; /* OIDs of btree opfamilies, if orderable */ bool *reverse_sort; /* is sort order descending? */ bool *nulls_first; /* do NULLs come first in the sort order? */ + bytea **opclassoptions; /* opclass-specific options for columns */ bool *canreturn; /* which index cols can be returned in an * index-only scan? */ Oid relam; /* OID of the access method (in pg_am) */ @@ -677,7 +867,7 @@ typedef struct IndexOptInfo bool amcanmarkpos; /* does AM support mark/restore? */ /* Rather than include amapi.h here, we declare amcostestimate like this */ void (*amcostestimate) (); /* AM's cost estimator */ -} IndexOptInfo; +}; /* * ForeignKeyOptInfo @@ -982,30 +1172,16 @@ typedef struct Path * * 'indexinfo' is the index to be scanned. * - * 'indexclauses' is a list of index qualification clauses, with implicit - * AND semantics across the list. Each clause is a RestrictInfo node from - * the query's WHERE or JOIN conditions. An empty list implies a full - * index scan. - * - * 'indexquals' has the same structure as 'indexclauses', but it contains - * the actual index qual conditions that can be used with the index. - * In simple cases this is identical to 'indexclauses', but when special - * indexable operators appear in 'indexclauses', they are replaced by the - * derived indexscannable conditions in 'indexquals'. - * - * 'indexqualcols' is an integer list of index column numbers (zero-based) - * of the same length as 'indexquals', showing which index column each qual - * is meant to be used with. 'indexquals' is required to be ordered by - * index column, so 'indexqualcols' must form a nondecreasing sequence. - * (The order of multiple quals for the same index column is unspecified.) + * 'indexclauses' is a list of IndexClause nodes, each representing one + * index-checkable restriction, with implicit AND semantics across the list. + * An empty list implies a full index scan. * * 'indexorderbys', if not NIL, is a list of ORDER BY expressions that have * been found to be usable as ordering operators for an amcanorderbyop index. * The list must match the path's pathkeys, ie, one expression per pathkey * in the same order. These are not RestrictInfos, just bare expressions, - * since they generally won't yield booleans. Also, unlike the case for - * quals, it's guaranteed that each expression has the index key on the left - * side of the operator. + * since they generally won't yield booleans. It's guaranteed that each + * expression has the index key on the left side of the operator. * * 'indexorderbycols' is an integer list of index column numbers (zero-based) * of the same length as 'indexorderbys', showing which index column each @@ -1031,8 +1207,6 @@ typedef struct IndexPath Path path; IndexOptInfo *indexinfo; List *indexclauses; - List *indexquals; - List *indexqualcols; List *indexorderbys; List *indexorderbycols; ScanDirection indexscandir; @@ -1040,6 +1214,50 @@ typedef struct IndexPath Selectivity indexselectivity; } IndexPath; +/* + * Each IndexClause references a RestrictInfo node from the query's WHERE + * or JOIN conditions, and shows how that restriction can be applied to + * the particular index. We support both indexclauses that are directly + * usable by the index machinery, which are typically of the form + * "indexcol OP pseudoconstant", and those from which an indexable qual + * can be derived. The simplest such transformation is that a clause + * of the form "pseudoconstant OP indexcol" can be commuted to produce an + * indexable qual (the index machinery expects the indexcol to be on the + * left always). Another example is that we might be able to extract an + * indexable range condition from a LIKE condition, as in "x LIKE 'foo%bar'" + * giving rise to "x >= 'foo' AND x < 'fop'". Derivation of such lossy + * conditions is done by a planner support function attached to the + * indexclause's top-level function or operator. + * + * indexquals is a list of RestrictInfos for the directly-usable index + * conditions associated with this IndexClause. In the simplest case + * it's a one-element list whose member is iclause->rinfo. Otherwise, + * it contains one or more directly-usable indexqual conditions extracted + * from the given clause. The 'lossy' flag indicates whether the + * indexquals are semantically equivalent to the original clause, or + * represent a weaker condition. + * + * Normally, indexcol is the index of the single index column the clause + * works on, and indexcols is NIL. But if the clause is a RowCompareExpr, + * indexcol is the index of the leading column, and indexcols is a list of + * all the affected columns. (Note that indexcols matches up with the + * columns of the actual indexable RowCompareExpr in indexquals, which + * might be different from the original in rinfo.) + * + * An IndexPath's IndexClause list is required to be ordered by index + * column, i.e. the indexcol values must form a nondecreasing sequence. + * (The order of multiple clauses for the same index column is unspecified.) + */ +typedef struct IndexClause +{ + NodeTag type; + struct RestrictInfo *rinfo; /* original restriction or join clause */ + List *indexquals; /* indexqual(s) derived from it */ + bool lossy; /* are indexquals a lossy version of clause? */ + AttrNumber indexcol; /* index column the clause uses (zero-based) */ + List *indexcols; /* multiple index columns, if RowCompare */ +} IndexClause; + /* * BitmapHeapPath represents one or more indexscans that generate TID bitmaps * instead of directly accessing the heap, followed by AND/OR combinations @@ -1093,8 +1311,8 @@ typedef struct BitmapOrPath * TidPath represents a scan by TID * * tidquals is an implicitly OR'ed list of qual expressions of the form - * "CTID = pseudoconstant" or "CTID = ANY(pseudoconstant_array)". - * Note they are bare expressions, not RestrictInfos. + * "CTID = pseudoconstant", or "CTID = ANY(pseudoconstant_array)", + * or a CurrentOfExpr for the relation. */ typedef struct TidPath { @@ -1168,6 +1386,9 @@ typedef struct CustomPath * AppendPath represents an Append plan, ie, successive execution of * several member plans. * + * For partial Append, 'subpaths' contains non-partial subpaths followed by + * partial subpaths. + * * Note: it is possible for "subpaths" to contain only one, or even no, * elements. These cases are optimized during create_append_plan. * In particular, an AppendPath with no subpaths is a "dummy" path that @@ -1182,6 +1403,9 @@ typedef struct AppendPath /* RT indexes of non-leaf tables in a partition tree */ List *partitioned_rels; List *subpaths; /* list of component Paths */ + /* Index of first partial path in subpaths; list_length(subpaths) if none */ + int first_partial_path; + double limit_tuples; /* hard limit on output tuples, or -1 */ } AppendPath; #define IS_DUMMY_APPEND(p) \ @@ -1209,17 +1433,17 @@ typedef struct MergeAppendPath } MergeAppendPath; /* - * ResultPath represents use of a Result plan node to compute a variable-free - * targetlist with no underlying tables (a "SELECT expressions" query). - * The query could have a WHERE clause, too, represented by "quals". + * GroupResultPath represents use of a Result plan node to compute the + * output of a degenerate GROUP BY case, wherein we know we should produce + * exactly one row, which might then be filtered by a HAVING qual. * * Note that quals is a list of bare clauses, not RestrictInfos. */ -typedef struct ResultPath +typedef struct GroupResultPath { Path path; List *quals; -} ResultPath; +} GroupResultPath; /* * MaterialPath represents use of a Material plan node, i.e., caching of @@ -1276,8 +1500,7 @@ typedef struct GatherPath /* * GatherMergePath runs several copies of a plan in parallel and collects - * the results, preserving their common sort order. For gather merge, the - * parallel leader always executes the plan too, so we don't need single_copy. + * the results, preserving their common sort order. */ typedef struct GatherMergePath { @@ -1342,14 +1565,14 @@ typedef JoinPath NestPath; * mergejoin. If it is not NIL then it is a PathKeys list describing * the ordering that must be created by an explicit Sort node. * - * skip_mark_restore is TRUE if the executor need not do mark/restore calls. + * skip_mark_restore is true if the executor need not do mark/restore calls. * Mark/restore overhead is usually required, but can be skipped if we know * that the executor need find only one match per outer tuple, and that the * mergeclauses are sufficient to identify a match. In such cases the * executor can immediately advance the outer relation after processing a - * match, and therefoere it need never back up the inner relation. + * match, and therefore it need never back up the inner relation. * - * materialize_inner is TRUE if a Material node should be placed atop the + * materialize_inner is true if a Material node should be placed atop the * inner input. This may appear with or without an inner Sort step. */ @@ -1377,6 +1600,7 @@ typedef struct HashPath JoinPath jpath; List *path_hashclauses; /* join clauses used for hashing */ int num_batches; /* number of batches expected */ + double inner_rows_total; /* total inner rows expected */ } HashPath; /* @@ -1425,6 +1649,18 @@ typedef struct SortPath Path *subpath; /* path representing input source */ } SortPath; +/* + * IncrementalSortPath represents an incremental sort step + * + * This is like a regular sort, except some leading key columns are assumed + * to be ordered already. + */ +typedef struct IncrementalSortPath +{ + SortPath spath; + int nPresortedCols; /* number of presorted columns */ +} IncrementalSortPath; + /* * GroupPath represents grouping (of presorted input) * @@ -1468,6 +1704,7 @@ typedef struct AggPath AggStrategy aggstrategy; /* basic strategy, see nodes.h */ AggSplit aggsplit; /* agg-splitting mode, see nodes.h */ double numGroups; /* estimated number of groups in input */ + uint64 transitionSpace; /* for pass-by-ref transition data */ List *groupClause; /* a list of SortGroupClause's */ List *qual; /* quals (HAVING quals), if any */ } AggPath; @@ -1505,6 +1742,7 @@ typedef struct GroupingSetsPath AggStrategy aggstrategy; /* basic strategy */ List *rollups; /* list of RollupData */ List *qual; /* quals (HAVING quals), if any */ + uint64 transitionSpace; /* for pass-by-ref transition data */ } GroupingSetsPath; /* @@ -1519,17 +1757,12 @@ typedef struct MinMaxAggPath /* * WindowAggPath represents generic computation of window functions - * - * Note: winpathkeys is separate from path.pathkeys because the actual sort - * order might be an extension of winpathkeys; but createplan.c needs to - * know exactly how many pathkeys match the window clause. */ typedef struct WindowAggPath { Path path; Path *subpath; /* path representing input source */ WindowClause *winclause; /* WindowClause we'll be using */ - List *winpathkeys; /* PathKeys for PARTITION keys + ORDER keys */ } WindowAggPath; /* @@ -1584,8 +1817,8 @@ typedef struct ModifyTablePath CmdType operation; /* INSERT, UPDATE, or DELETE */ bool canSetTag; /* do we set the command tag/es_processed? */ Index nominalRelation; /* Parent RT index for use of EXPLAIN */ - /* RT indexes of non-leaf tables in a partition tree */ - List *partitioned_rels; + Index rootRelation; /* Root RT index, if target is partitioned */ + bool partColsUpdated; /* some part key in hierarchy updated */ List *resultRelations; /* integer list of RT indexes */ List *subpaths; /* Path(s) producing source data */ List *subroots; /* per-target-table PlannerInfos */ @@ -1605,6 +1838,7 @@ typedef struct LimitPath Path *subpath; /* path representing input source */ Node *limitOffset; /* OFFSET parameter, or NULL if none */ Node *limitCount; /* COUNT parameter, or NULL if none */ + LimitOption limitOption; /* FETCH FIRST with ties or exact number */ } LimitPath; @@ -1754,15 +1988,15 @@ typedef struct RestrictInfo Expr *clause; /* the represented clause of WHERE or JOIN */ - bool is_pushed_down; /* TRUE if clause was pushed down in level */ + bool is_pushed_down; /* true if clause was pushed down in level */ - bool outerjoin_delayed; /* TRUE if delayed by lower outer join */ + bool outerjoin_delayed; /* true if delayed by lower outer join */ bool can_join; /* see comment above */ bool pseudoconstant; /* see comment above */ - bool leakproof; /* TRUE if known to contain no leaked Vars */ + bool leakproof; /* true if known to contain no leaked Vars */ Index security_level; /* see comment above */ @@ -1815,6 +2049,8 @@ typedef struct RestrictInfo /* cache space for hashclause processing; -1 if not yet set */ Selectivity left_bucketsize; /* avg bucketsize of left side */ Selectivity right_bucketsize; /* avg bucketsize of right side */ + Selectivity left_mcvfreq; /* left side's most common val's freq */ + Selectivity right_mcvfreq; /* right side's most common val's freq */ } RestrictInfo; /* @@ -1905,7 +2141,7 @@ typedef struct PlaceHolderVar * syntactically below this special join. (These are needed to help compute * min_lefthand and min_righthand for higher joins.) * - * delay_upper_joins is set TRUE if we detect a pushed-down clause that has + * delay_upper_joins is set true if we detect a pushed-down clause that has * to be evaluated after this join is formed (because it references the RHS). * Any outer joins that have such a clause and this join in their RHS cannot * commute with this join, because that would leave noplace to check the @@ -1932,8 +2168,12 @@ typedef struct PlaceHolderVar * plain innerjoin semantics. Note that lhs_strict, delay_upper_joins, and * of course the semi_xxx fields are not set meaningfully within such structs. */ +#ifndef HAVE_SPECIALJOININFO_TYPEDEF +typedef struct SpecialJoinInfo SpecialJoinInfo; +#define HAVE_SPECIALJOININFO_TYPEDEF 1 +#endif -typedef struct SpecialJoinInfo +struct SpecialJoinInfo { NodeTag type; Relids min_lefthand; /* base relids in minimum LHS for join */ @@ -1948,26 +2188,22 @@ typedef struct SpecialJoinInfo bool semi_can_hash; /* true if semi_operators are all hash */ List *semi_operators; /* OIDs of equality join operators */ List *semi_rhs_exprs; /* righthand-side expressions of these ops */ -} SpecialJoinInfo; +}; /* * Append-relation info. * * When we expand an inheritable table or a UNION-ALL subselect into an * "append relation" (essentially, a list of child RTEs), we build an - * AppendRelInfo for each non-partitioned child RTE. The list of - * AppendRelInfos indicates which child RTEs must be included when expanding - * the parent, and each node carries information needed to translate Vars - * referencing the parent into Vars referencing that child. - * - * These structs are kept in the PlannerInfo node's append_rel_list. - * Note that we just throw all the structs into one list, and scan the - * whole list when desiring to expand any one parent. We could have used - * a more complex data structure (eg, one list per parent), but this would - * be harder to update during operations such as pulling up subqueries, - * and not really any easier to scan. Considering that typical queries - * will not have many different append parents, it doesn't seem worthwhile - * to complicate things. + * AppendRelInfo for each child RTE. The list of AppendRelInfos indicates + * which child RTEs must be included when expanding the parent, and each node + * carries information needed to translate between columns of the parent and + * columns of the child. + * + * These structs are kept in the PlannerInfo node's append_rel_list, with + * append_rel_array[] providing a convenient lookup method for the struct + * associated with a particular child relid (there can be only one, though + * parent rels may have many entries in append_rel_list). * * Note: after completion of the planner prep phase, any given RTE is an * append parent having entries in append_rel_list if and only if its @@ -2024,6 +2260,15 @@ typedef struct AppendRelInfo */ List *translated_vars; /* Expressions in the child's Vars */ + /* + * This array simplifies translations in the reverse direction, from + * child's column numbers to parent's. The entry at [ccolno - 1] is the + * 1-based parent column number for child column ccolno, or zero if that + * child column is dropped or doesn't exist in the parent. + */ + int num_child_cols; /* length of array */ + AttrNumber *parent_colnos; /* array of parent attnos, or zeroes */ + /* * We store the parent table's OID here for inheritance, or InvalidOid for * UNION ALL. This is only needed to help in generating error messages if @@ -2032,25 +2277,6 @@ typedef struct AppendRelInfo Oid parent_reloid; /* OID of parent relation */ } AppendRelInfo; -/* - * For a partitioned table, this maps its RT index to the list of RT indexes - * of the partitioned child tables in the partition tree. We need to - * separately store this information, because we do not create AppendRelInfos - * for the partitioned child tables of a parent table, since AppendRelInfos - * contain information that is unnecessary for the partitioned child tables. - * The child_rels list must contain at least one element, because the parent - * partitioned table is itself counted as a child. - * - * These structs are kept in the PlannerInfo node's pcinfo_list. - */ -typedef struct PartitionedChildRelInfo -{ - NodeTag type; - - Index parent_relid; - List *child_rels; -} PartitionedChildRelInfo; - /* * For each distinct placeholder expression generated during planning, we * store a PlaceHolderInfo node in the PlannerInfo node's placeholder_list. @@ -2151,8 +2377,8 @@ typedef struct MinMaxAggInfo * from subplans (values that are setParam items for those subplans). These * IDs need not be tracked via PlannerParamItems, since we do not need any * duplicate-elimination nor later processing of the represented expressions. - * Instead, we just record the assignment of the slot number by incrementing - * root->glob->nParamExec. + * Instead, we just record the assignment of the slot number by appending to + * root->glob->paramExecTypes. */ typedef struct PlannerParamItem { @@ -2207,6 +2433,89 @@ typedef struct JoinPathExtraData Relids param_source_rels; } JoinPathExtraData; +/* + * Various flags indicating what kinds of grouping are possible. + * + * GROUPING_CAN_USE_SORT should be set if it's possible to perform + * sort-based implementations of grouping. When grouping sets are in use, + * this will be true if sorting is potentially usable for any of the grouping + * sets, even if it's not usable for all of them. + * + * GROUPING_CAN_USE_HASH should be set if it's possible to perform + * hash-based implementations of grouping. + * + * GROUPING_CAN_PARTIAL_AGG should be set if the aggregation is of a type + * for which we support partial aggregation (not, for example, grouping sets). + * It says nothing about parallel-safety or the availability of suitable paths. + */ +#define GROUPING_CAN_USE_SORT 0x0001 +#define GROUPING_CAN_USE_HASH 0x0002 +#define GROUPING_CAN_PARTIAL_AGG 0x0004 + +/* + * What kind of partitionwise aggregation is in use? + * + * PARTITIONWISE_AGGREGATE_NONE: Not used. + * + * PARTITIONWISE_AGGREGATE_FULL: Aggregate each partition separately, and + * append the results. + * + * PARTITIONWISE_AGGREGATE_PARTIAL: Partially aggregate each partition + * separately, append the results, and then finalize aggregation. + */ +typedef enum +{ + PARTITIONWISE_AGGREGATE_NONE, + PARTITIONWISE_AGGREGATE_FULL, + PARTITIONWISE_AGGREGATE_PARTIAL +} PartitionwiseAggregateType; + +/* + * Struct for extra information passed to subroutines of create_grouping_paths + * + * flags indicating what kinds of grouping are possible. + * partial_costs_set is true if the agg_partial_costs and agg_final_costs + * have been initialized. + * agg_partial_costs gives partial aggregation costs. + * agg_final_costs gives finalization costs. + * target_parallel_safe is true if target is parallel safe. + * havingQual gives list of quals to be applied after aggregation. + * targetList gives list of columns to be projected. + * patype is the type of partitionwise aggregation that is being performed. + */ +typedef struct +{ + /* Data which remains constant once set. */ + int flags; + bool partial_costs_set; + AggClauseCosts agg_partial_costs; + AggClauseCosts agg_final_costs; + + /* Data which may differ across partitions. */ + bool target_parallel_safe; + Node *havingQual; + List *targetList; + PartitionwiseAggregateType patype; +} GroupPathExtraData; + +/* + * Struct for extra information passed to subroutines of grouping_planner + * + * limit_needed is true if we actually need a Limit plan node. + * limit_tuples is an estimated bound on the number of output tuples, + * or -1 if no LIMIT or couldn't estimate. + * count_est and offset_est are the estimated values of the LIMIT and OFFSET + * expressions computed by preprocess_limit() (see comments for + * preprocess_limit() for more information). + */ +typedef struct +{ + bool limit_needed; + double limit_tuples; + int64 count_est; + int64 offset_est; +} FinalPathExtraData; + /* * For speed reasons, cost estimation for join paths is performed in two * phases: the first phase tries to quickly derive a lower bound for the @@ -2241,6 +2550,7 @@ typedef struct JoinCostWorkspace /* private for cost_hashjoin code */ int numbuckets; int numbatches; + double inner_rows_total; } JoinCostWorkspace; -#endif /* RELATION_H */ +#endif /* PATHNODES_H */ diff --git a/parser/include/nodes/pg_list.h b/parser/include/nodes/pg_list.h index 667d5e26..54447bb5 100644 --- a/parser/include/nodes/pg_list.h +++ b/parser/include/nodes/pg_list.h @@ -1,19 +1,19 @@ /*------------------------------------------------------------------------- * * pg_list.h - * interface for PostgreSQL generic linked list package + * interface for PostgreSQL generic list package * - * This package implements singly-linked homogeneous lists. + * Once upon a time, parts of Postgres were written in Lisp and used real + * cons-cell lists for major data structures. When that code was rewritten + * in C, we initially had a faithful emulation of cons-cell lists, which + * unsurprisingly was a performance bottleneck. A couple of major rewrites + * later, these data structures are actually simple expansible arrays; + * but the "List" name and a lot of the notation survives. * - * It is important to have constant-time length, append, and prepend - * operations. To achieve this, we deal with two distinct data - * structures: - * - * 1. A set of "list cells": each cell contains a data field and - * a link to the next cell in the list or NULL. - * 2. A single structure containing metadata about the list: the - * type of the list, pointers to the head and tail cells, and - * the length of the list. + * One important concession to the original implementation is that an empty + * list is always represented by a null pointer (preferentially written NIL). + * Non-empty lists have a header, which will not be relocated as long as the + * list remains non-empty, and an expansible data array. * * We support three types of lists: * @@ -27,7 +27,7 @@ * always be so; try to be careful to maintain the distinction.) * * - * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/nodes/pg_list.h @@ -40,51 +40,131 @@ #include "nodes/nodes.h" -typedef struct ListCell ListCell; +typedef union ListCell +{ + void *ptr_value; + int int_value; + Oid oid_value; +} ListCell; typedef struct List { NodeTag type; /* T_List, T_IntList, or T_OidList */ - int length; - ListCell *head; - ListCell *tail; + int length; /* number of elements currently present */ + int max_length; /* allocated length of elements[] */ + ListCell *elements; /* re-allocatable array of cells */ + /* We may allocate some cells along with the List header: */ + ListCell initial_elements[FLEXIBLE_ARRAY_MEMBER]; + /* If elements == initial_elements, it's not a separate allocation */ } List; -struct ListCell -{ - union - { - void *ptr_value; - int int_value; - Oid oid_value; - } data; - ListCell *next; -}; - /* * The *only* valid representation of an empty list is NIL; in other - * words, a non-NIL list is guaranteed to have length >= 1 and - * head/tail != NULL + * words, a non-NIL list is guaranteed to have length >= 1. */ #define NIL ((List *) NULL) /* - * These routines are used frequently. However, we can't implement - * them as macros, since we want to avoid double-evaluation of macro - * arguments. + * State structs for various looping macros below. + */ +typedef struct ForEachState +{ + const List *l; /* list we're looping through */ + int i; /* current element index */ +} ForEachState; + +typedef struct ForBothState +{ + const List *l1; /* lists we're looping through */ + const List *l2; + int i; /* common element index */ +} ForBothState; + +typedef struct ForBothCellState +{ + const List *l1; /* lists we're looping through */ + const List *l2; + int i1; /* current element indexes */ + int i2; +} ForBothCellState; + +typedef struct ForThreeState +{ + const List *l1; /* lists we're looping through */ + const List *l2; + const List *l3; + int i; /* common element index */ +} ForThreeState; + +typedef struct ForFourState +{ + const List *l1; /* lists we're looping through */ + const List *l2; + const List *l3; + const List *l4; + int i; /* common element index */ +} ForFourState; + +typedef struct ForFiveState +{ + const List *l1; /* lists we're looping through */ + const List *l2; + const List *l3; + const List *l4; + const List *l5; + int i; /* common element index */ +} ForFiveState; + +/* + * These routines are small enough, and used often enough, to justify being + * inline. */ + +/* Fetch address of list's first cell; NULL if empty list */ static inline ListCell * list_head(const List *l) { - return l ? l->head : NULL; + return l ? &l->elements[0] : NULL; +} + +/* Fetch address of list's last cell; NULL if empty list */ +static inline ListCell * +list_tail(const List *l) +{ + return l ? &l->elements[l->length - 1] : NULL; +} + +/* Fetch address of list's second cell, if it has one, else NULL */ +static inline ListCell * +list_second_cell(const List *l) +{ + if (l && l->length >= 2) + return &l->elements[1]; + else + return NULL; +} + +/* Fetch address of list's third cell, if it has one, else NULL */ +static inline ListCell * +list_third_cell(const List *l) +{ + if (l && l->length >= 3) + return &l->elements[2]; + else + return NULL; } +/* Fetch address of list's fourth cell, if it has one, else NULL */ static inline ListCell * -list_tail(List *l) +list_fourth_cell(const List *l) { - return l ? l->tail : NULL; + if (l && l->length >= 4) + return &l->elements[3]; + else + return NULL; } +/* Fetch list's length */ static inline int list_length(const List *l) { @@ -92,6 +172,11 @@ list_length(const List *l) } /* + * Macros to access the data values within List cells. + * + * Note that with the exception of the "xxx_node" macros, these are + * lvalues and can be assigned to. + * * NB: There is an unfortunate legacy from a previous incarnation of * the List API: the macro lfirst() was used to mean "the data in this * cons cell". To avoid changing every usage of lfirst(), that meaning @@ -99,13 +184,12 @@ list_length(const List *l) * the data it contains; to get the data in the first cell of a * List, use linitial(). Worse, lsecond() is more closely related to * linitial() than lfirst(): given a List, lsecond() returns the data - * in the second cons cell. + * in the second list cell. */ -#define lnext(lc) ((lc)->next) -#define lfirst(lc) ((lc)->data.ptr_value) -#define lfirst_int(lc) ((lc)->data.int_value) -#define lfirst_oid(lc) ((lc)->data.oid_value) +#define lfirst(lc) ((lc)->ptr_value) +#define lfirst_int(lc) ((lc)->int_value) +#define lfirst_oid(lc) ((lc)->oid_value) #define lfirst_node(type,lc) castNode(type, lfirst(lc)) #define linitial(l) lfirst(list_head(l)) @@ -113,19 +197,19 @@ list_length(const List *l) #define linitial_oid(l) lfirst_oid(list_head(l)) #define linitial_node(type,l) castNode(type, linitial(l)) -#define lsecond(l) lfirst(lnext(list_head(l))) -#define lsecond_int(l) lfirst_int(lnext(list_head(l))) -#define lsecond_oid(l) lfirst_oid(lnext(list_head(l))) +#define lsecond(l) lfirst(list_second_cell(l)) +#define lsecond_int(l) lfirst_int(list_second_cell(l)) +#define lsecond_oid(l) lfirst_oid(list_second_cell(l)) #define lsecond_node(type,l) castNode(type, lsecond(l)) -#define lthird(l) lfirst(lnext(lnext(list_head(l)))) -#define lthird_int(l) lfirst_int(lnext(lnext(list_head(l)))) -#define lthird_oid(l) lfirst_oid(lnext(lnext(list_head(l)))) +#define lthird(l) lfirst(list_third_cell(l)) +#define lthird_int(l) lfirst_int(list_third_cell(l)) +#define lthird_oid(l) lfirst_oid(list_third_cell(l)) #define lthird_node(type,l) castNode(type, lthird(l)) -#define lfourth(l) lfirst(lnext(lnext(lnext(list_head(l))))) -#define lfourth_int(l) lfirst_int(lnext(lnext(lnext(list_head(l))))) -#define lfourth_oid(l) lfirst_oid(lnext(lnext(lnext(list_head(l))))) +#define lfourth(l) lfirst(list_fourth_cell(l)) +#define lfourth_int(l) lfirst_int(list_fourth_cell(l)) +#define lfourth_oid(l) lfirst_oid(list_fourth_cell(l)) #define lfourth_node(type,l) castNode(type, lfourth(l)) #define llast(l) lfirst(list_tail(l)) @@ -136,38 +220,215 @@ list_length(const List *l) /* * Convenience macros for building fixed-length lists */ -#define list_make1(x1) lcons(x1, NIL) -#define list_make2(x1,x2) lcons(x1, list_make1(x2)) -#define list_make3(x1,x2,x3) lcons(x1, list_make2(x2, x3)) -#define list_make4(x1,x2,x3,x4) lcons(x1, list_make3(x2, x3, x4)) -#define list_make5(x1,x2,x3,x4,x5) lcons(x1, list_make4(x2, x3, x4, x5)) - -#define list_make1_int(x1) lcons_int(x1, NIL) -#define list_make2_int(x1,x2) lcons_int(x1, list_make1_int(x2)) -#define list_make3_int(x1,x2,x3) lcons_int(x1, list_make2_int(x2, x3)) -#define list_make4_int(x1,x2,x3,x4) lcons_int(x1, list_make3_int(x2, x3, x4)) -#define list_make5_int(x1,x2,x3,x4,x5) lcons_int(x1, list_make4_int(x2, x3, x4, x5)) - -#define list_make1_oid(x1) lcons_oid(x1, NIL) -#define list_make2_oid(x1,x2) lcons_oid(x1, list_make1_oid(x2)) -#define list_make3_oid(x1,x2,x3) lcons_oid(x1, list_make2_oid(x2, x3)) -#define list_make4_oid(x1,x2,x3,x4) lcons_oid(x1, list_make3_oid(x2, x3, x4)) -#define list_make5_oid(x1,x2,x3,x4,x5) lcons_oid(x1, list_make4_oid(x2, x3, x4, x5)) +#define list_make_ptr_cell(v) ((ListCell) {.ptr_value = (v)}) +#define list_make_int_cell(v) ((ListCell) {.int_value = (v)}) +#define list_make_oid_cell(v) ((ListCell) {.oid_value = (v)}) + +#define list_make1(x1) \ + list_make1_impl(T_List, list_make_ptr_cell(x1)) +#define list_make2(x1,x2) \ + list_make2_impl(T_List, list_make_ptr_cell(x1), list_make_ptr_cell(x2)) +#define list_make3(x1,x2,x3) \ + list_make3_impl(T_List, list_make_ptr_cell(x1), list_make_ptr_cell(x2), \ + list_make_ptr_cell(x3)) +#define list_make4(x1,x2,x3,x4) \ + list_make4_impl(T_List, list_make_ptr_cell(x1), list_make_ptr_cell(x2), \ + list_make_ptr_cell(x3), list_make_ptr_cell(x4)) + +#define list_make1_int(x1) \ + list_make1_impl(T_IntList, list_make_int_cell(x1)) +#define list_make2_int(x1,x2) \ + list_make2_impl(T_IntList, list_make_int_cell(x1), list_make_int_cell(x2)) +#define list_make3_int(x1,x2,x3) \ + list_make3_impl(T_IntList, list_make_int_cell(x1), list_make_int_cell(x2), \ + list_make_int_cell(x3)) +#define list_make4_int(x1,x2,x3,x4) \ + list_make4_impl(T_IntList, list_make_int_cell(x1), list_make_int_cell(x2), \ + list_make_int_cell(x3), list_make_int_cell(x4)) + +#define list_make1_oid(x1) \ + list_make1_impl(T_OidList, list_make_oid_cell(x1)) +#define list_make2_oid(x1,x2) \ + list_make2_impl(T_OidList, list_make_oid_cell(x1), list_make_oid_cell(x2)) +#define list_make3_oid(x1,x2,x3) \ + list_make3_impl(T_OidList, list_make_oid_cell(x1), list_make_oid_cell(x2), \ + list_make_oid_cell(x3)) +#define list_make4_oid(x1,x2,x3,x4) \ + list_make4_impl(T_OidList, list_make_oid_cell(x1), list_make_oid_cell(x2), \ + list_make_oid_cell(x3), list_make_oid_cell(x4)) + +/* + * Locate the n'th cell (counting from 0) of the list. + * It is an assertion failure if there is no such cell. + */ +static inline ListCell * +list_nth_cell(const List *list, int n) +{ + Assert(list != NIL); + Assert(n >= 0 && n < list->length); + return &list->elements[n]; +} + +/* + * Return the pointer value contained in the n'th element of the + * specified list. (List elements begin at 0.) + */ +static inline void * +list_nth(const List *list, int n) +{ + Assert(IsA(list, List)); + return lfirst(list_nth_cell(list, n)); +} + +/* + * Return the integer value contained in the n'th element of the + * specified list. + */ +static inline int +list_nth_int(const List *list, int n) +{ + Assert(IsA(list, IntList)); + return lfirst_int(list_nth_cell(list, n)); +} + +/* + * Return the OID value contained in the n'th element of the specified + * list. + */ +static inline Oid +list_nth_oid(const List *list, int n) +{ + Assert(IsA(list, OidList)); + return lfirst_oid(list_nth_cell(list, n)); +} + +#define list_nth_node(type,list,n) castNode(type, list_nth(list, n)) + +/* + * Get the given ListCell's index (from 0) in the given List. + */ +static inline int +list_cell_number(const List *l, const ListCell *c) +{ + Assert(c >= &l->elements[0] && c < &l->elements[l->length]); + return c - l->elements; +} + +/* + * Get the address of the next cell after "c" within list "l", or NULL if none. + */ +static inline ListCell * +lnext(const List *l, const ListCell *c) +{ + Assert(c >= &l->elements[0] && c < &l->elements[l->length]); + c++; + if (c < &l->elements[l->length]) + return (ListCell *) c; + else + return NULL; +} /* * foreach - - * a convenience macro which loops through the list + * a convenience macro for looping through a list + * + * "cell" must be the name of a "ListCell *" variable; it's made to point + * to each List element in turn. "cell" will be NULL after normal exit from + * the loop, but an early "break" will leave it pointing at the current + * List element. + * + * Beware of changing the List object while the loop is iterating. + * The current semantics are that we examine successive list indices in + * each iteration, so that insertion or deletion of list elements could + * cause elements to be re-visited or skipped unexpectedly. Previous + * implementations of foreach() behaved differently. However, it's safe + * to append elements to the List (or in general, insert them after the + * current element); such new elements are guaranteed to be visited. + * Also, the current element of the List can be deleted, if you use + * foreach_delete_current() to do so. BUT: either of these actions will + * invalidate the "cell" pointer for the remainder of the current iteration. + */ +#define foreach(cell, lst) \ + for (ForEachState cell##__state = {(lst), 0}; \ + (cell##__state.l != NIL && \ + cell##__state.i < cell##__state.l->length) ? \ + (cell = &cell##__state.l->elements[cell##__state.i], true) : \ + (cell = NULL, false); \ + cell##__state.i++) + +/* + * foreach_delete_current - + * delete the current list element from the List associated with a + * surrounding foreach() loop, returning the new List pointer. + * + * This is equivalent to list_delete_cell(), but it also adjusts the foreach + * loop's state so that no list elements will be missed. Do not delete + * elements from an active foreach loop's list in any other way! + */ +#define foreach_delete_current(lst, cell) \ + (cell##__state.i--, \ + (List *) (cell##__state.l = list_delete_cell(lst, cell))) + +/* + * foreach_current_index - + * get the zero-based list index of a surrounding foreach() loop's + * current element; pass the name of the "ListCell *" iterator variable. + * + * Beware of using this after foreach_delete_current(); the value will be + * out of sync for the rest of the current loop iteration. Anyway, since + * you just deleted the current element, the value is pretty meaningless. + */ +#define foreach_current_index(cell) (cell##__state.i) + +/* + * for_each_from - + * Like foreach(), but start from the N'th (zero-based) list element, + * not necessarily the first one. + * + * It's okay for N to exceed the list length, but not for it to be negative. + * + * The caveats for foreach() apply equally here. */ -#define foreach(cell, l) \ - for ((cell) = list_head(l); (cell) != NULL; (cell) = lnext(cell)) +#define for_each_from(cell, lst, N) \ + for (ForEachState cell##__state = for_each_from_setup(lst, N); \ + (cell##__state.l != NIL && \ + cell##__state.i < cell##__state.l->length) ? \ + (cell = &cell##__state.l->elements[cell##__state.i], true) : \ + (cell = NULL, false); \ + cell##__state.i++) + +static inline ForEachState +for_each_from_setup(const List *lst, int N) +{ + ForEachState r = {lst, N}; + + Assert(N >= 0); + return r; +} /* * for_each_cell - * a convenience macro which loops through a list starting from a * specified cell + * + * The caveats for foreach() apply equally here. */ -#define for_each_cell(cell, initcell) \ - for ((cell) = (initcell); (cell) != NULL; (cell) = lnext(cell)) +#define for_each_cell(cell, lst, initcell) \ + for (ForEachState cell##__state = for_each_cell_setup(lst, initcell); \ + (cell##__state.l != NIL && \ + cell##__state.i < cell##__state.l->length) ? \ + (cell = &cell##__state.l->elements[cell##__state.i], true) : \ + (cell = NULL, false); \ + cell##__state.i++) + +static inline ForEachState +for_each_cell_setup(const List *lst, const ListCell *initcell) +{ + ForEachState r = {lst, + initcell ? list_cell_number(lst, initcell) : list_length(lst)}; + + return r; +} /* * forboth - @@ -175,12 +436,22 @@ list_length(const List *l) * simultaneously. This macro loops through both lists at the same * time, stopping when either list runs out of elements. Depending * on the requirements of the call site, it may also be wise to - * assert that the lengths of the two lists are equal. + * assert that the lengths of the two lists are equal. (But, if they + * are not, some callers rely on the ending cell values being separately + * NULL or non-NULL as defined here; don't try to optimize that.) + * + * The caveats for foreach() apply equally here. */ #define forboth(cell1, list1, cell2, list2) \ - for ((cell1) = list_head(list1), (cell2) = list_head(list2); \ - (cell1) != NULL && (cell2) != NULL; \ - (cell1) = lnext(cell1), (cell2) = lnext(cell2)) + for (ForBothState cell1##__state = {(list1), (list2), 0}; \ + multi_for_advance_cell(cell1, cell1##__state, l1, i), \ + multi_for_advance_cell(cell2, cell1##__state, l2, i), \ + (cell1 != NULL && cell2 != NULL); \ + cell1##__state.i++) + +#define multi_for_advance_cell(cell, state, l, i) \ + (cell = (state.l != NIL && state.i < state.l->length) ? \ + &state.l->elements[state.i] : NULL) /* * for_both_cell - @@ -190,41 +461,93 @@ list_length(const List *l) * requirements of the call site, it may also be wise to assert that the * lengths of the two lists are equal, and initcell1 and initcell2 are at * the same position in the respective lists. + * + * The caveats for foreach() apply equally here. */ -#define for_both_cell(cell1, initcell1, cell2, initcell2) \ - for ((cell1) = (initcell1), (cell2) = (initcell2); \ - (cell1) != NULL && (cell2) != NULL; \ - (cell1) = lnext(cell1), (cell2) = lnext(cell2)) +#define for_both_cell(cell1, list1, initcell1, cell2, list2, initcell2) \ + for (ForBothCellState cell1##__state = \ + for_both_cell_setup(list1, initcell1, list2, initcell2); \ + multi_for_advance_cell(cell1, cell1##__state, l1, i1), \ + multi_for_advance_cell(cell2, cell1##__state, l2, i2), \ + (cell1 != NULL && cell2 != NULL); \ + cell1##__state.i1++, cell1##__state.i2++) + +static inline ForBothCellState +for_both_cell_setup(const List *list1, const ListCell *initcell1, + const List *list2, const ListCell *initcell2) +{ + ForBothCellState r = {list1, list2, + initcell1 ? list_cell_number(list1, initcell1) : list_length(list1), + initcell2 ? list_cell_number(list2, initcell2) : list_length(list2)}; + + return r; +} /* * forthree - * the same for three lists */ -#define forthree(cell1, list1, cell2, list2, cell3, list3) \ - for ((cell1) = list_head(list1), (cell2) = list_head(list2), (cell3) = list_head(list3); \ - (cell1) != NULL && (cell2) != NULL && (cell3) != NULL; \ - (cell1) = lnext(cell1), (cell2) = lnext(cell2), (cell3) = lnext(cell3)) +#define forthree(cell1, list1, cell2, list2, cell3, list3) \ + for (ForThreeState cell1##__state = {(list1), (list2), (list3), 0}; \ + multi_for_advance_cell(cell1, cell1##__state, l1, i), \ + multi_for_advance_cell(cell2, cell1##__state, l2, i), \ + multi_for_advance_cell(cell3, cell1##__state, l3, i), \ + (cell1 != NULL && cell2 != NULL && cell3 != NULL); \ + cell1##__state.i++) + +/* + * forfour - + * the same for four lists + */ +#define forfour(cell1, list1, cell2, list2, cell3, list3, cell4, list4) \ + for (ForFourState cell1##__state = {(list1), (list2), (list3), (list4), 0}; \ + multi_for_advance_cell(cell1, cell1##__state, l1, i), \ + multi_for_advance_cell(cell2, cell1##__state, l2, i), \ + multi_for_advance_cell(cell3, cell1##__state, l3, i), \ + multi_for_advance_cell(cell4, cell1##__state, l4, i), \ + (cell1 != NULL && cell2 != NULL && cell3 != NULL && cell4 != NULL); \ + cell1##__state.i++) + +/* + * forfive - + * the same for five lists + */ +#define forfive(cell1, list1, cell2, list2, cell3, list3, cell4, list4, cell5, list5) \ + for (ForFiveState cell1##__state = {(list1), (list2), (list3), (list4), (list5), 0}; \ + multi_for_advance_cell(cell1, cell1##__state, l1, i), \ + multi_for_advance_cell(cell2, cell1##__state, l2, i), \ + multi_for_advance_cell(cell3, cell1##__state, l3, i), \ + multi_for_advance_cell(cell4, cell1##__state, l4, i), \ + multi_for_advance_cell(cell5, cell1##__state, l5, i), \ + (cell1 != NULL && cell2 != NULL && cell3 != NULL && \ + cell4 != NULL && cell5 != NULL); \ + cell1##__state.i++) + +/* Functions in src/backend/nodes/list.c */ + +extern List *list_make1_impl(NodeTag t, ListCell datum1); +extern List *list_make2_impl(NodeTag t, ListCell datum1, ListCell datum2); +extern List *list_make3_impl(NodeTag t, ListCell datum1, ListCell datum2, + ListCell datum3); +extern List *list_make4_impl(NodeTag t, ListCell datum1, ListCell datum2, + ListCell datum3, ListCell datum4); extern List *lappend(List *list, void *datum); extern List *lappend_int(List *list, int datum); extern List *lappend_oid(List *list, Oid datum); -extern ListCell *lappend_cell(List *list, ListCell *prev, void *datum); -extern ListCell *lappend_cell_int(List *list, ListCell *prev, int datum); -extern ListCell *lappend_cell_oid(List *list, ListCell *prev, Oid datum); +extern List *list_insert_nth(List *list, int pos, void *datum); +extern List *list_insert_nth_int(List *list, int pos, int datum); +extern List *list_insert_nth_oid(List *list, int pos, Oid datum); extern List *lcons(void *datum, List *list); extern List *lcons_int(int datum, List *list); extern List *lcons_oid(Oid datum, List *list); -extern List *list_concat(List *list1, List *list2); -extern List *list_truncate(List *list, int new_size); +extern List *list_concat(List *list1, const List *list2); +extern List *list_concat_copy(const List *list1, const List *list2); -extern ListCell *list_nth_cell(const List *list, int n); -extern void *list_nth(const List *list, int n); -extern int list_nth_int(const List *list, int n); -extern Oid list_nth_oid(const List *list, int n); -#define list_nth_node(type,list,n) castNode(type, list_nth(list, n)) +extern List *list_truncate(List *list, int new_size); extern bool list_member(const List *list, const void *datum); extern bool list_member_ptr(const List *list, const void *datum); @@ -236,7 +559,9 @@ extern List *list_delete_ptr(List *list, void *datum); extern List *list_delete_int(List *list, int datum); extern List *list_delete_oid(List *list, Oid datum); extern List *list_delete_first(List *list); -extern List *list_delete_cell(List *list, ListCell *cell, ListCell *prev); +extern List *list_delete_last(List *list); +extern List *list_delete_nth_cell(List *list, int n); +extern List *list_delete_cell(List *list, ListCell *cell); extern List *list_union(const List *list1, const List *list2); extern List *list_union_ptr(const List *list1, const List *list2); @@ -258,84 +583,23 @@ extern List *list_append_unique_ptr(List *list, void *datum); extern List *list_append_unique_int(List *list, int datum); extern List *list_append_unique_oid(List *list, Oid datum); -extern List *list_concat_unique(List *list1, List *list2); -extern List *list_concat_unique_ptr(List *list1, List *list2); -extern List *list_concat_unique_int(List *list1, List *list2); -extern List *list_concat_unique_oid(List *list1, List *list2); +extern List *list_concat_unique(List *list1, const List *list2); +extern List *list_concat_unique_ptr(List *list1, const List *list2); +extern List *list_concat_unique_int(List *list1, const List *list2); +extern List *list_concat_unique_oid(List *list1, const List *list2); + +extern void list_deduplicate_oid(List *list); extern void list_free(List *list); extern void list_free_deep(List *list); extern List *list_copy(const List *list); extern List *list_copy_tail(const List *list, int nskip); +extern List *list_copy_deep(const List *oldlist); -/* - * To ease migration to the new list API, a set of compatibility - * macros are provided that reduce the impact of the list API changes - * as far as possible. Until client code has been rewritten to use the - * new list API, the ENABLE_LIST_COMPAT symbol can be defined before - * including pg_list.h - */ -#ifdef ENABLE_LIST_COMPAT - -#define lfirsti(lc) lfirst_int(lc) -#define lfirsto(lc) lfirst_oid(lc) - -#define makeList1(x1) list_make1(x1) -#define makeList2(x1, x2) list_make2(x1, x2) -#define makeList3(x1, x2, x3) list_make3(x1, x2, x3) -#define makeList4(x1, x2, x3, x4) list_make4(x1, x2, x3, x4) - -#define makeListi1(x1) list_make1_int(x1) -#define makeListi2(x1, x2) list_make2_int(x1, x2) - -#define makeListo1(x1) list_make1_oid(x1) -#define makeListo2(x1, x2) list_make2_oid(x1, x2) - -#define lconsi(datum, list) lcons_int(datum, list) -#define lconso(datum, list) lcons_oid(datum, list) - -#define lappendi(list, datum) lappend_int(list, datum) -#define lappendo(list, datum) lappend_oid(list, datum) - -#define nconc(l1, l2) list_concat(l1, l2) - -#define nth(n, list) list_nth(list, n) - -#define member(datum, list) list_member(list, datum) -#define ptrMember(datum, list) list_member_ptr(list, datum) -#define intMember(datum, list) list_member_int(list, datum) -#define oidMember(datum, list) list_member_oid(list, datum) - -/* - * Note that the old lremove() determined equality via pointer - * comparison, whereas the new list_delete() uses equal(); in order to - * keep the same behavior, we therefore need to map lremove() calls to - * list_delete_ptr() rather than list_delete() - */ -#define lremove(elem, list) list_delete_ptr(list, elem) -#define LispRemove(elem, list) list_delete(list, elem) -#define lremovei(elem, list) list_delete_int(list, elem) -#define lremoveo(elem, list) list_delete_oid(list, elem) - -#define ltruncate(n, list) list_truncate(list, n) - -#define set_union(l1, l2) list_union(l1, l2) -#define set_uniono(l1, l2) list_union_oid(l1, l2) -#define set_ptrUnion(l1, l2) list_union_ptr(l1, l2) - -#define set_difference(l1, l2) list_difference(l1, l2) -#define set_differenceo(l1, l2) list_difference_oid(l1, l2) -#define set_ptrDifference(l1, l2) list_difference_ptr(l1, l2) - -#define equali(l1, l2) equal(l1, l2) -#define equalo(l1, l2) equal(l1, l2) - -#define freeList(list) list_free(list) - -#define listCopy(list) list_copy(list) +typedef int (*list_sort_comparator) (const ListCell *a, const ListCell *b); +extern void list_sort(List *list, list_sort_comparator cmp); -extern int length(List *list); -#endif /* ENABLE_LIST_COMPAT */ +extern int list_oid_cmp(const ListCell *p1, const ListCell *p2); #endif /* PG_LIST_H */ diff --git a/parser/include/nodes/plannodes.h b/parser/include/nodes/plannodes.h index a382331f..83e01074 100644 --- a/parser/include/nodes/plannodes.h +++ b/parser/include/nodes/plannodes.h @@ -4,7 +4,7 @@ * definitions for query plan nodes * * - * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/nodes/plannodes.h @@ -15,6 +15,7 @@ #define PLANNODES_H #include "access/sdir.h" +#include "access/stratnum.h" #include "lib/stringinfo.h" #include "nodes/bitmapset.h" #include "nodes/lockoptions.h" @@ -44,7 +45,7 @@ typedef struct PlannedStmt CmdType commandType; /* select|insert|update|delete|utility */ - uint32 queryId; /* query identifier (copied from Query) */ + uint64 queryId; /* query identifier (copied from Query) */ bool hasReturning; /* is it insert|update|delete RETURNING? */ @@ -58,6 +59,8 @@ typedef struct PlannedStmt bool parallelModeNeeded; /* parallel mode required to execute? */ + int jitFlags; /* which forms of JIT should be performed */ + struct Plan *planTree; /* tree of Plan nodes */ List *rtable; /* list of RangeTblEntry nodes */ @@ -66,18 +69,13 @@ typedef struct PlannedStmt List *resultRelations; /* integer list of RT indexes, or NIL */ /* - * rtable indexes of non-leaf target relations for UPDATE/DELETE on all - * the partitioned tables mentioned in the query. - */ - List *nonleafResultRelations; - - /* - * rtable indexes of root target relations for UPDATE/DELETE; this list - * maintains a subset of the RT indexes in nonleafResultRelations, - * indicating the roots of the respective partition hierarchies. + * rtable indexes of partitioned table roots that are UPDATE/DELETE + * targets; needed for trigger firing. */ List *rootResultRelations; + List *appendRelations; /* list of AppendRelInfo nodes */ + List *subplans; /* Plan trees for SubPlan expressions; note * that some could be NULL */ @@ -89,7 +87,7 @@ typedef struct PlannedStmt List *invalItems; /* other dependencies, as PlanInvalItems */ - int nParamExec; /* number of PARAM_EXEC Params used */ + List *paramExecTypes; /* type OIDs for PARAM_EXEC Params */ Node *utilityStmt; /* non-null if this is utility stmt */ @@ -207,6 +205,12 @@ typedef struct ProjectSet * Apply rows produced by subplan(s) to result table(s), * by inserting, updating, or deleting. * + * If the originally named target table is a partitioned table, both + * nominalRelation and rootRelation contain the RT index of the partition + * root, which is not otherwise mentioned in the plan. Otherwise rootRelation + * is zero. However, nominalRelation will always be set, as it's the rel that + * EXPLAIN should claim is the INSERT/UPDATE/DELETE target. + * * Note that rowMarks and epqParam are presumed to be valid for all the * subplan(s); they can't contain any info that varies across subplans. * ---------------- @@ -217,8 +221,8 @@ typedef struct ModifyTable CmdType operation; /* INSERT, UPDATE, or DELETE */ bool canSetTag; /* do we set the command tag/es_processed? */ Index nominalRelation; /* Parent RT index for use of EXPLAIN */ - /* RT indexes of non-leaf tables in a partition tree */ - List *partitioned_rels; + Index rootRelation; /* Root RT index, if target is partitioned */ + bool partColsUpdated; /* some part key in hierarchy updated */ List *resultRelations; /* integer list of RT indexes */ int resultRelIndex; /* index of first resultRel in plan's list */ int rootResultRelIndex; /* index of the partitioned table root */ @@ -237,6 +241,8 @@ typedef struct ModifyTable List *exclRelTlist; /* tlist of the EXCLUDED pseudo relation */ } ModifyTable; +struct PartitionPruneInfo; /* forward reference to struct below */ + /* ---------------- * Append node - * Generate the concatenation of the results of sub-plans. @@ -245,9 +251,17 @@ typedef struct ModifyTable typedef struct Append { Plan plan; - /* RT indexes of non-leaf tables in a partition tree */ - List *partitioned_rels; + Bitmapset *apprelids; /* RTIs of appendrel(s) formed by this node */ List *appendplans; + + /* + * All 'appendplans' preceding this index are non-partial plans. All + * 'appendplans' from this index onwards are partial plans. + */ + int first_partial_plan; + + /* Info for run-time subplan pruning; NULL if we're not doing that */ + struct PartitionPruneInfo *part_prune_info; } Append; /* ---------------- @@ -258,15 +272,16 @@ typedef struct Append typedef struct MergeAppend { Plan plan; - /* RT indexes of non-leaf tables in a partition tree */ - List *partitioned_rels; + Bitmapset *apprelids; /* RTIs of appendrel(s) formed by this node */ List *mergeplans; - /* remaining fields are just like the sort-key info in struct Sort */ + /* these fields are just like the sort-key info in struct Sort: */ int numCols; /* number of sort-key columns */ AttrNumber *sortColIdx; /* their indexes in the target list */ Oid *sortOperators; /* OIDs of operators to sort them by */ Oid *collations; /* OIDs of collations */ bool *nullsFirst; /* NULLS FIRST/LAST directions */ + /* Info for run-time subplan pruning; NULL if we're not doing that */ + struct PartitionPruneInfo *part_prune_info; } MergeAppend; /* ---------------- @@ -286,6 +301,7 @@ typedef struct RecursiveUnion * duplicate-ness */ AttrNumber *dupColIdx; /* their indexes in the target list */ Oid *dupOperators; /* equality operators to compare with */ + Oid *dupCollations; long numGroups; /* estimated number of groups in input */ } RecursiveUnion; @@ -467,7 +483,8 @@ typedef struct BitmapHeapScan * tid scan node * * tidquals is an implicitly OR'ed list of qual expressions of the form - * "CTID = pseudoconstant" or "CTID = ANY(pseudoconstant_array)". + * "CTID = pseudoconstant", or "CTID = ANY(pseudoconstant_array)", + * or a CurrentOfExpr for the relation. * ---------------- */ typedef struct TidScan @@ -724,6 +741,14 @@ typedef struct HashJoin { Join join; List *hashclauses; + List *hashoperators; + List *hashcollations; + + /* + * List of expressions to be hashed for tuples from the outer plan, to + * perform lookups in the hashtable over the inner plan. + */ + List *hashkeys; } HashJoin; /* ---------------- @@ -749,6 +774,16 @@ typedef struct Sort bool *nullsFirst; /* NULLS FIRST/LAST directions */ } Sort; +/* ---------------- + * incremental sort node + * ---------------- + */ +typedef struct IncrementalSort +{ + Sort sort; + int nPresortedCols; /* number of presorted columns */ +} IncrementalSort; + /* --------------- * group node - * Used for queries with GROUP BY (but no aggregates) specified. @@ -761,6 +796,7 @@ typedef struct Group int numCols; /* number of grouping columns */ AttrNumber *grpColIdx; /* their indexes in the target list */ Oid *grpOperators; /* equality operators to compare with */ + Oid *grpCollations; } Group; /* --------------- @@ -785,7 +821,9 @@ typedef struct Agg int numCols; /* number of grouping columns */ AttrNumber *grpColIdx; /* their indexes in the target list */ Oid *grpOperators; /* equality operators to compare with */ + Oid *grpCollations; long numGroups; /* estimated number of groups in input */ + uint64 transitionSpace; /* for pass-by-ref transition data */ Bitmapset *aggParams; /* IDs of Params used in Aggref inputs */ /* Note: planner provides numGroups & aggParams only in HASHED/MIXED case */ List *groupingSets; /* grouping sets to use */ @@ -803,12 +841,20 @@ typedef struct WindowAgg int partNumCols; /* number of columns in partition clause */ AttrNumber *partColIdx; /* their indexes in the target list */ Oid *partOperators; /* equality operators for partition columns */ + Oid *partCollations; /* collations for partition columns */ int ordNumCols; /* number of columns in ordering clause */ AttrNumber *ordColIdx; /* their indexes in the target list */ Oid *ordOperators; /* equality operators for ordering columns */ + Oid *ordCollations; /* collations for ordering columns */ int frameOptions; /* frame_clause options, see WindowDef */ Node *startOffset; /* expression for starting bound, if any */ Node *endOffset; /* expression for ending bound, if any */ + /* these fields are used with RANGE offset PRECEDING/FOLLOWING: */ + Oid startInRangeFunc; /* in_range function for startOffset */ + Oid endInRangeFunc; /* in_range function for endOffset */ + Oid inRangeColl; /* collation for in_range tests */ + bool inRangeAsc; /* use ASC sort order for in_range tests? */ + bool inRangeNullsFirst; /* nulls sort first for in_range tests? */ } WindowAgg; /* ---------------- @@ -821,6 +867,7 @@ typedef struct Unique int numCols; /* number of columns to check for uniqueness */ AttrNumber *uniqColIdx; /* their indexes in the target list */ Oid *uniqOperators; /* equality operators to compare with */ + Oid *uniqCollations; /* collations for equality comparisons */ } Unique; /* ------------ @@ -841,6 +888,8 @@ typedef struct Gather int rescan_param; /* ID of Param that signals a rescan, or -1 */ bool single_copy; /* don't execute plan more than once */ bool invisible; /* suppress EXPLAIN display (for testing)? */ + Bitmapset *initParam; /* param id's of initplans which are referred + * at gather or one of it's child node */ } Gather; /* ------------ @@ -858,6 +907,8 @@ typedef struct GatherMerge Oid *sortOperators; /* OIDs of operators to sort them by */ Oid *collations; /* OIDs of collations */ bool *nullsFirst; /* NULLS FIRST/LAST directions */ + Bitmapset *initParam; /* param id's of initplans which are referred + * at gather merge or one of it's child node */ } GatherMerge; /* ---------------- @@ -871,10 +922,17 @@ typedef struct GatherMerge typedef struct Hash { Plan plan; + + /* + * List of expressions to be hashed for tuples from Hash's outer plan, + * needed to put them into the hashtable. + */ + List *hashkeys; /* hash keys for the hashjoin condition */ Oid skewTable; /* outer join key's table OID, or InvalidOid */ AttrNumber skewColumn; /* outer join key's column #, or zero */ bool skewInherit; /* is outer join rel an inheritance tree? */ /* all other info is in the parent HashJoin node */ + double rows_total; /* estimate total rows if parallel_aware */ } Hash; /* ---------------- @@ -890,6 +948,7 @@ typedef struct SetOp * duplicate-ness */ AttrNumber *dupColIdx; /* their indexes in the target list */ Oid *dupOperators; /* equality operators to compare with */ + Oid *dupCollations; AttrNumber flagColIdx; /* where is the flag column, if any */ int firstFlag; /* flag value for first input relation */ long numGroups; /* estimated number of groups in input */ @@ -923,6 +982,11 @@ typedef struct Limit Plan plan; Node *limitOffset; /* OFFSET parameter, or NULL if none */ Node *limitCount; /* COUNT parameter, or NULL if none */ + LimitOption limitOption; /* limit type */ + int uniqNumCols; /* number of columns to check for similarity */ + AttrNumber *uniqColIdx; /* their indexes in the target list */ + Oid *uniqOperators; /* equality operators to compare with */ + Oid *uniqCollations; /* collations for equality comparisons */ } Limit; @@ -1021,6 +1085,153 @@ typedef struct PlanRowMark } PlanRowMark; +/* + * Node types to represent partition pruning information. + */ + +/* + * PartitionPruneInfo - Details required to allow the executor to prune + * partitions. + * + * Here we store mapping details to allow translation of a partitioned table's + * index as returned by the partition pruning code into subplan indexes for + * plan types which support arbitrary numbers of subplans, such as Append. + * We also store various details to tell the executor when it should be + * performing partition pruning. + * + * Each PartitionedRelPruneInfo describes the partitioning rules for a single + * partitioned table (a/k/a level of partitioning). Since a partitioning + * hierarchy could contain multiple levels, we represent it by a List of + * PartitionedRelPruneInfos, where the first entry represents the topmost + * partitioned table and additional entries represent non-leaf child + * partitions, ordered such that parents appear before their children. + * Then, since an Append-type node could have multiple partitioning + * hierarchies among its children, we have an unordered List of those Lists. + * + * prune_infos List of Lists containing PartitionedRelPruneInfo nodes, + * one sublist per run-time-prunable partition hierarchy + * appearing in the parent plan node's subplans. + * other_subplans Indexes of any subplans that are not accounted for + * by any of the PartitionedRelPruneInfo nodes in + * "prune_infos". These subplans must not be pruned. + */ +typedef struct PartitionPruneInfo +{ + NodeTag type; + List *prune_infos; + Bitmapset *other_subplans; +} PartitionPruneInfo; + +/* + * PartitionedRelPruneInfo - Details required to allow the executor to prune + * partitions for a single partitioned table. + * + * subplan_map[] and subpart_map[] are indexed by partition index of the + * partitioned table referenced by 'rtindex', the partition index being the + * order that the partitions are defined in the table's PartitionDesc. For a + * leaf partition p, subplan_map[p] contains the zero-based index of the + * partition's subplan in the parent plan's subplan list; it is -1 if the + * partition is non-leaf or has been pruned. For a non-leaf partition p, + * subpart_map[p] contains the zero-based index of that sub-partition's + * PartitionedRelPruneInfo in the hierarchy's PartitionedRelPruneInfo list; + * it is -1 if the partition is a leaf or has been pruned. Note that subplan + * indexes, as stored in 'subplan_map', are global across the parent plan + * node, but partition indexes are valid only within a particular hierarchy. + * relid_map[p] contains the partition's OID, or 0 if the partition was pruned. + */ +typedef struct PartitionedRelPruneInfo +{ + NodeTag type; + Index rtindex; /* RT index of partition rel for this level */ + Bitmapset *present_parts; /* Indexes of all partitions which subplans or + * subparts are present for */ + int nparts; /* Length of the following arrays: */ + int *subplan_map; /* subplan index by partition index, or -1 */ + int *subpart_map; /* subpart index by partition index, or -1 */ + Oid *relid_map; /* relation OID by partition index, or 0 */ + + /* + * initial_pruning_steps shows how to prune during executor startup (i.e., + * without use of any PARAM_EXEC Params); it is NIL if no startup pruning + * is required. exec_pruning_steps shows how to prune with PARAM_EXEC + * Params; it is NIL if no per-scan pruning is required. + */ + List *initial_pruning_steps; /* List of PartitionPruneStep */ + List *exec_pruning_steps; /* List of PartitionPruneStep */ + Bitmapset *execparamids; /* All PARAM_EXEC Param IDs in + * exec_pruning_steps */ +} PartitionedRelPruneInfo; + +/* + * Abstract Node type for partition pruning steps (there are no concrete + * Nodes of this type). + * + * step_id is the global identifier of the step within its pruning context. + */ +typedef struct PartitionPruneStep +{ + NodeTag type; + int step_id; +} PartitionPruneStep; + +/* + * PartitionPruneStepOp - Information to prune using a set of mutually AND'd + * OpExpr clauses + * + * This contains information extracted from up to partnatts OpExpr clauses, + * where partnatts is the number of partition key columns. 'opstrategy' is the + * strategy of the operator in the clause matched to the last partition key. + * 'exprs' contains expressions which comprise the lookup key to be passed to + * the partition bound search function. 'cmpfns' contains the OIDs of + * comparison functions used to compare aforementioned expressions with + * partition bounds. Both 'exprs' and 'cmpfns' contain the same number of + * items, up to partnatts items. + * + * Once we find the offset of a partition bound using the lookup key, we + * determine which partitions to include in the result based on the value of + * 'opstrategy'. For example, if it were equality, we'd return just the + * partition that would contain that key or a set of partitions if the key + * didn't consist of all partitioning columns. For non-equality strategies, + * we'd need to include other partitions as appropriate. + * + * 'nullkeys' is the set containing the offset of the partition keys (0 to + * partnatts - 1) that were matched to an IS NULL clause. This is only + * considered for hash partitioning as we need to pass which keys are null + * to the hash partition bound search function. It is never possible to + * have an expression be present in 'exprs' for a given partition key and + * the corresponding bit set in 'nullkeys'. + */ +typedef struct PartitionPruneStepOp +{ + PartitionPruneStep step; + + StrategyNumber opstrategy; + List *exprs; + List *cmpfns; + Bitmapset *nullkeys; +} PartitionPruneStepOp; + +/* + * PartitionPruneStepCombine - Information to prune using a BoolExpr clause + * + * For BoolExpr clauses, we combine the set of partitions determined for each + * of the argument clauses. + */ +typedef enum PartitionPruneCombineOp +{ + PARTPRUNE_COMBINE_UNION, + PARTPRUNE_COMBINE_INTERSECT +} PartitionPruneCombineOp; + +typedef struct PartitionPruneStepCombine +{ + PartitionPruneStep step; + + PartitionPruneCombineOp combineOp; + List *source_stepids; +} PartitionPruneStepCombine; + + /* * Plan invalidation info * diff --git a/parser/include/nodes/primnodes.h b/parser/include/nodes/primnodes.h index 02288c84..d73be2ad 100644 --- a/parser/include/nodes/primnodes.h +++ b/parser/include/nodes/primnodes.h @@ -7,7 +7,7 @@ * and join trees. * * - * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/nodes/primnodes.h @@ -111,6 +111,7 @@ typedef struct IntoClause RangeVar *rel; /* target relation name */ List *colNames; /* column names to assign, or NIL */ + char *accessMethod; /* table access method */ List *options; /* options from WITH clause */ OnCommitAction onCommit; /* what do we do at COMMIT? */ char *tableSpaceName; /* table space to use, or NULL */ @@ -140,18 +141,32 @@ typedef struct Expr /* * Var - expression node representing a variable (ie, a table column) * - * Note: during parsing/planning, varnoold/varoattno are always just copies - * of varno/varattno. At the tail end of planning, Var nodes appearing in - * upper-level plan nodes are reassigned to point to the outputs of their - * subplans; for example, in a join node varno becomes INNER_VAR or OUTER_VAR - * and varattno becomes the index of the proper element of that subplan's - * target list. Similarly, INDEX_VAR is used to identify Vars that reference - * an index column rather than a heap column. (In ForeignScan and CustomScan - * plan nodes, INDEX_VAR is abused to signify references to columns of a - * custom scan tuple type.) In all these cases, varnoold/varoattno hold the - * original values. The code doesn't really need varnoold/varoattno, but they - * are very useful for debugging and interpreting completed plans, so we keep - * them around. + * In the parser and planner, varno and varattno identify the semantic + * referent, which is a base-relation column unless the reference is to a join + * USING column that isn't semantically equivalent to either join input column + * (because it is a FULL join or the input column requires a type coercion). + * In those cases varno and varattno refer to the JOIN RTE. (Early in the + * planner, we replace such join references by the implied expression; but up + * till then we want join reference Vars to keep their original identity for + * query-printing purposes.) + * + * At the end of planning, Var nodes appearing in upper-level plan nodes are + * reassigned to point to the outputs of their subplans; for example, in a + * join node varno becomes INNER_VAR or OUTER_VAR and varattno becomes the + * index of the proper element of that subplan's target list. Similarly, + * INDEX_VAR is used to identify Vars that reference an index column rather + * than a heap column. (In ForeignScan and CustomScan plan nodes, INDEX_VAR + * is abused to signify references to columns of a custom scan tuple type.) + * + * In the parser, varnosyn and varattnosyn are either identical to + * varno/varattno, or they specify the column's position in an aliased JOIN + * RTE that hides the semantic referent RTE's refname. This is a syntactic + * identifier as opposed to the semantic identifier; it tells ruleutils.c + * how to print the Var properly. varnosyn/varattnosyn retain their values + * throughout planning and execution, so they are particularly helpful to + * identify Vars when debugging. Note, however, that a Var that is generated + * in the planner and doesn't correspond to any simple relation column may + * have varnosyn = varattnosyn = 0. */ #define INNER_VAR 65000 /* reference to inner subplan */ #define OUTER_VAR 65001 /* reference to outer subplan */ @@ -169,15 +184,15 @@ typedef struct Var Index varno; /* index of this var's relation in the range * table, or INNER_VAR/OUTER_VAR/INDEX_VAR */ AttrNumber varattno; /* attribute number of this var, or zero for - * all */ + * all attrs ("whole-row Var") */ Oid vartype; /* pg_type OID for the type of this var */ int32 vartypmod; /* pg_attribute typmod value */ Oid varcollid; /* OID of collation, or InvalidOid if none */ Index varlevelsup; /* for subquery variables referencing outer * relations; 0 in a normal var, >0 means N * levels up */ - Index varnoold; /* original value of varno, for debugging */ - AttrNumber varoattno; /* original value of varattno */ + Index varnosyn; /* syntactic relation index (0 if unknown) */ + AttrNumber varattnosyn; /* syntactic attribute number */ int location; /* token location, or -1 if unknown */ } Var; @@ -305,7 +320,7 @@ typedef struct Aggref List *aggorder; /* ORDER BY (list of SortGroupClause) */ List *aggdistinct; /* DISTINCT (list of SortGroupClause) */ Expr *aggfilter; /* FILTER expression, if any */ - bool aggstar; /* TRUE if argument list was really '*' */ + bool aggstar; /* true if argument list was really '*' */ bool aggvariadic; /* true if variadic arguments have been * combined into an array last argument */ char aggkind; /* aggregate kind (see pg_aggregate.h) */ @@ -362,24 +377,25 @@ typedef struct WindowFunc List *args; /* arguments to the window function */ Expr *aggfilter; /* FILTER expression, if any */ Index winref; /* index of associated WindowClause */ - bool winstar; /* TRUE if argument list was really '*' */ + bool winstar; /* true if argument list was really '*' */ bool winagg; /* is function a simple aggregate? */ int location; /* token location, or -1 if unknown */ } WindowFunc; /* ---------------- - * ArrayRef: describes an array subscripting operation - * - * An ArrayRef can describe fetching a single element from an array, - * fetching a subarray (array slice), storing a single element into - * an array, or storing a slice. The "store" cases work with an - * initial array value and a source value that is inserted into the - * appropriate part of the array; the result of the operation is an - * entire new modified array value. - * - * If reflowerindexpr = NIL, then we are fetching or storing a single array - * element at the subscripts given by refupperindexpr. Otherwise we are - * fetching or storing an array slice, that is a rectangular subarray + * SubscriptingRef: describes a subscripting operation over a container + * (array, etc). + * + * A SubscriptingRef can describe fetching a single element from a container, + * fetching a part of container (e.g. array slice), storing a single element into + * a container, or storing a slice. The "store" cases work with an + * initial container value and a source value that is inserted into the + * appropriate part of the container; the result of the operation is an + * entire new modified container value. + * + * If reflowerindexpr = NIL, then we are fetching or storing a single container + * element at the subscripts given by refupperindexpr. Otherwise we are + * fetching or storing a container slice, that is a rectangular subcontainer * with lower and upper bounds given by the index expressions. * reflowerindexpr must be the same length as refupperindexpr when it * is not NIL. @@ -391,28 +407,29 @@ typedef struct WindowFunc * element; but it is the array type when doing subarray fetch or either * type of store. * - * Note: for the cases where an array is returned, if refexpr yields a R/W - * expanded array, then the implementation is allowed to modify that object + * Note: for the cases where a container is returned, if refexpr yields a R/W + * expanded container, then the implementation is allowed to modify that object * in-place and return the same object.) * ---------------- */ -typedef struct ArrayRef +typedef struct SubscriptingRef { Expr xpr; - Oid refarraytype; /* type of the array proper */ - Oid refelemtype; /* type of the array elements */ - int32 reftypmod; /* typmod of the array (and elements too) */ + Oid refcontainertype; /* type of the container proper */ + Oid refelemtype; /* type of the container elements */ + int32 reftypmod; /* typmod of the container (and elements too) */ Oid refcollid; /* OID of collation, or InvalidOid if none */ List *refupperindexpr; /* expressions that evaluate to upper - * array indexes */ + * container indexes */ List *reflowerindexpr; /* expressions that evaluate to lower - * array indexes, or NIL for single array - * element */ - Expr *refexpr; /* the expression that evaluates to an array - * value */ + * container indexes, or NIL for single + * container element */ + Expr *refexpr; /* the expression that evaluates to a + * container value */ + Expr *refassgnexpr; /* expression for the source value, or NULL if * fetch */ -} ArrayRef; +} SubscriptingRef; /* * CoercionContext - distinguishes the allowed set of type casts @@ -698,9 +715,9 @@ typedef struct SubPlan Oid firstColCollation; /* Collation of first column of subplan * result */ /* Information about execution strategy: */ - bool useHashTable; /* TRUE to store subselect output in a hash + bool useHashTable; /* true to store subselect output in a hash * table (implies we are doing "IN") */ - bool unknownEqFalse; /* TRUE if it's okay to return FALSE when the + bool unknownEqFalse; /* true if it's okay to return FALSE when the * spec result is UNKNOWN; this allows much * simpler handling of null values */ bool parallel_safe; /* is the subplan parallel-safe? */ @@ -755,9 +772,12 @@ typedef struct FieldSelect * * FieldStore represents the operation of modifying one field in a tuple * value, yielding a new tuple value (the input is not touched!). Like - * the assign case of ArrayRef, this is used to implement UPDATE of a + * the assign case of SubscriptingRef, this is used to implement UPDATE of a * portion of a column. * + * resulttype is always a named composite type (not a domain). To update + * a composite domain value, apply CoerceToDomain to the FieldStore. + * * A single FieldStore can actually represent updates of several different * fields. The parser only generates FieldStores with single-element lists, * but the planner will collapse multiple updates of the same base column @@ -823,11 +843,12 @@ typedef struct CoerceViaIO * ArrayCoerceExpr * * ArrayCoerceExpr represents a type coercion from one array type to another, - * which is implemented by applying the indicated element-type coercion - * function to each element of the source array. If elemfuncid is InvalidOid - * then the element types are binary-compatible, but the coercion still - * requires some effort (we have to fix the element type ID stored in the - * array header). + * which is implemented by applying the per-element coercion expression + * "elemexpr" to each element of the source array. Within elemexpr, the + * source element is represented by a CaseTestExpr node. Note that even if + * elemexpr is a no-op (that is, just CaseTestExpr + RelabelType), the + * coercion still requires some effort: we have to fix the element type OID + * stored in the array header. * ---------------- */ @@ -835,11 +856,10 @@ typedef struct ArrayCoerceExpr { Expr xpr; Expr *arg; /* input expression (yields an array) */ - Oid elemfuncid; /* OID of element coercion function, or 0 */ + Expr *elemexpr; /* expression representing per-element work */ Oid resulttype; /* output type of coercion (an array type) */ int32 resulttypmod; /* output typmod (also element typmod) */ Oid resultcollid; /* OID of collation, or InvalidOid if none */ - bool isExplicit; /* conversion semantics flag to pass to func */ CoercionForm coerceformat; /* how to display this node */ int location; /* token location, or -1 if unknown */ } ArrayCoerceExpr; @@ -852,7 +872,8 @@ typedef struct ArrayCoerceExpr * needed for the destination type plus possibly others; the columns need not * be in the same positions, but are matched up by name. This is primarily * used to convert a whole-row value of an inheritance child table into a - * valid whole-row value of its parent table's rowtype. + * valid whole-row value of its parent table's rowtype. Both resulttype + * and the exposed type of "arg" must be named composite types (not domains). * ---------------- */ @@ -930,8 +951,20 @@ typedef struct CaseWhen * This is effectively like a Param, but can be implemented more simply * since we need only one replacement value at a time. * - * We also use this in nested UPDATE expressions. - * See transformAssignmentIndirection(). + * We also abuse this node type for some other purposes, including: + * * Placeholder for the current array element value in ArrayCoerceExpr; + * see build_coercion_expression(). + * * Nested FieldStore/SubscriptingRef assignment expressions in INSERT/UPDATE; + * see transformAssignmentIndirection(). + * + * The uses in CaseExpr and ArrayCoerceExpr are safe only to the extent that + * there is not any other CaseExpr or ArrayCoerceExpr between the value source + * node and its child CaseTestExpr(s). This is true in the parse analysis + * output, but the planner's function-inlining logic has to be careful not to + * break it. + * + * The nested-assignment-expression case is safe because the only node types + * that can be above such CaseTestExprs are FieldStore and SubscriptingRef. */ typedef struct CaseTestExpr { @@ -990,6 +1023,9 @@ typedef struct RowExpr Oid row_typeid; /* RECORDOID or a composite type's ID */ /* + * row_typeid cannot be a domain over composite, only plain composite. To + * create a composite domain value, apply CoerceToDomain to the RowExpr. + * * Note: we deliberately do NOT store a typmod. Although a typmod will be * associated with specific RECORD types at runtime, it will differ for * different backends, and so cannot safely be stored in stored diff --git a/parser/include/nodes/print.h b/parser/include/nodes/print.h index fa01c2ad..6126b491 100644 --- a/parser/include/nodes/print.h +++ b/parser/include/nodes/print.h @@ -4,7 +4,7 @@ * definitions for nodes/print.c * * - * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/nodes/print.h @@ -22,7 +22,7 @@ extern void print(const void *obj); extern void pprint(const void *obj); extern void elog_node_display(int lev, const char *title, - const void *obj, bool pretty); + const void *obj, bool pretty); extern char *format_node_dump(const char *dump); extern char *pretty_format_node_dump(const char *dump); extern void print_rt(const List *rtable); diff --git a/parser/include/nodes/tidbitmap.h b/parser/include/nodes/tidbitmap.h index f9a1902d..d562fcae 100644 --- a/parser/include/nodes/tidbitmap.h +++ b/parser/include/nodes/tidbitmap.h @@ -13,7 +13,7 @@ * fact that a particular page needs to be visited. * * - * Copyright (c) 2003-2017, PostgreSQL Global Development Group + * Copyright (c) 2003-2020, PostgreSQL Global Development Group * * src/include/nodes/tidbitmap.h * @@ -37,7 +37,7 @@ typedef struct TBMIterator TBMIterator; typedef struct TBMSharedIterator TBMSharedIterator; /* Result structure for tbm_iterate */ -typedef struct +typedef struct TBMIterateResult { BlockNumber blockno; /* page number containing tuples */ int ntuples; /* -1 indicates lossy result */ @@ -53,8 +53,8 @@ extern void tbm_free(TIDBitmap *tbm); extern void tbm_free_shared_area(dsa_area *dsa, dsa_pointer dp); extern void tbm_add_tuples(TIDBitmap *tbm, - const ItemPointer tids, int ntids, - bool recheck); + const ItemPointer tids, int ntids, + bool recheck); extern void tbm_add_page(TIDBitmap *tbm, BlockNumber pageno); extern void tbm_union(TIDBitmap *a, const TIDBitmap *b); @@ -69,6 +69,7 @@ extern TBMIterateResult *tbm_shared_iterate(TBMSharedIterator *iterator); extern void tbm_end_iterate(TBMIterator *iterator); extern void tbm_end_shared_iterate(TBMSharedIterator *iterator); extern TBMSharedIterator *tbm_attach_shared_iterate(dsa_area *dsa, - dsa_pointer dp); + dsa_pointer dp); +extern long tbm_calculate_entries(double maxbytes); #endif /* TIDBITMAP_H */ diff --git a/parser/include/nodes/value.h b/parser/include/nodes/value.h index 83f5a19f..d4911b5d 100644 --- a/parser/include/nodes/value.h +++ b/parser/include/nodes/value.h @@ -4,7 +4,7 @@ * interface for Value nodes * * - * Copyright (c) 2003-2017, PostgreSQL Global Development Group + * Copyright (c) 2003-2020, PostgreSQL Global Development Group * * src/include/nodes/value.h * @@ -34,7 +34,7 @@ * better to use the more general representation.) * * Note that an integer-looking string will get lexed as T_Float if - * the value is too large to fit in a 'long'. + * the value is too large to fit in an 'int'. * * Nulls, of course, don't need the value part at all. *---------------------- @@ -44,7 +44,7 @@ typedef struct Value NodeTag type; /* tag appropriately (eg. T_String) */ union ValUnion { - long ival; /* machine integer */ + int ival; /* machine integer */ char *str; /* string */ } val; } Value; @@ -53,7 +53,7 @@ typedef struct Value #define floatVal(v) atof(((Value *)(v))->val.str) #define strVal(v) (((Value *)(v))->val.str) -extern Value *makeInteger(long i); +extern Value *makeInteger(int i); extern Value *makeFloat(char *numericStr); extern Value *makeString(char *str); extern Value *makeBitString(char *str); diff --git a/parser/include/optimizer/cost.h b/parser/include/optimizer/cost.h index 7925e4cc..6141654e 100644 --- a/parser/include/optimizer/cost.h +++ b/parser/include/optimizer/cost.h @@ -4,7 +4,7 @@ * prototypes for costsize.c and clausesel.c. * * - * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/optimizer/cost.h @@ -14,8 +14,8 @@ #ifndef COST_H #define COST_H +#include "nodes/pathnodes.h" #include "nodes/plannodes.h" -#include "nodes/relation.h" /* defaults for costsize.c's Cost parameters */ @@ -44,170 +44,163 @@ typedef enum * routines to compute costs and sizes */ -/* parameter variables and flags */ -extern PGDLLIMPORT double seq_page_cost; -extern PGDLLIMPORT double random_page_cost; -extern PGDLLIMPORT double cpu_tuple_cost; -extern PGDLLIMPORT double cpu_index_tuple_cost; -extern PGDLLIMPORT double cpu_operator_cost; -extern PGDLLIMPORT double parallel_tuple_cost; -extern PGDLLIMPORT double parallel_setup_cost; -extern PGDLLIMPORT int effective_cache_size; +/* parameter variables and flags (see also optimizer.h) */ extern PGDLLIMPORT Cost disable_cost; -extern PGDLLIMPORT int max_parallel_workers_per_gather; +extern PGDLLIMPORT int max_parallel_workers_per_gather; extern PGDLLIMPORT bool enable_seqscan; extern PGDLLIMPORT bool enable_indexscan; extern PGDLLIMPORT bool enable_indexonlyscan; extern PGDLLIMPORT bool enable_bitmapscan; extern PGDLLIMPORT bool enable_tidscan; extern PGDLLIMPORT bool enable_sort; +extern PGDLLIMPORT bool enable_incremental_sort; extern PGDLLIMPORT bool enable_hashagg; extern PGDLLIMPORT bool enable_nestloop; extern PGDLLIMPORT bool enable_material; extern PGDLLIMPORT bool enable_mergejoin; extern PGDLLIMPORT bool enable_hashjoin; extern PGDLLIMPORT bool enable_gathermerge; -extern PGDLLIMPORT int constraint_exclusion; +extern PGDLLIMPORT bool enable_partitionwise_join; +extern PGDLLIMPORT bool enable_partitionwise_aggregate; +extern PGDLLIMPORT bool enable_parallel_append; +extern PGDLLIMPORT bool enable_parallel_hash; +extern PGDLLIMPORT bool enable_partition_pruning; +extern PGDLLIMPORT int constraint_exclusion; -extern double clamp_row_est(double nrows); extern double index_pages_fetched(double tuples_fetched, BlockNumber pages, - double index_pages, PlannerInfo *root); + double index_pages, PlannerInfo *root); extern void cost_seqscan(Path *path, PlannerInfo *root, RelOptInfo *baserel, - ParamPathInfo *param_info); + ParamPathInfo *param_info); extern void cost_samplescan(Path *path, PlannerInfo *root, RelOptInfo *baserel, - ParamPathInfo *param_info); + ParamPathInfo *param_info); extern void cost_index(IndexPath *path, PlannerInfo *root, - double loop_count, bool partial_path); + double loop_count, bool partial_path); extern void cost_bitmap_heap_scan(Path *path, PlannerInfo *root, RelOptInfo *baserel, - ParamPathInfo *param_info, - Path *bitmapqual, double loop_count); + ParamPathInfo *param_info, + Path *bitmapqual, double loop_count); extern void cost_bitmap_and_node(BitmapAndPath *path, PlannerInfo *root); extern void cost_bitmap_or_node(BitmapOrPath *path, PlannerInfo *root); extern void cost_bitmap_tree_node(Path *path, Cost *cost, Selectivity *selec); extern void cost_tidscan(Path *path, PlannerInfo *root, - RelOptInfo *baserel, List *tidquals, ParamPathInfo *param_info); + RelOptInfo *baserel, List *tidquals, ParamPathInfo *param_info); extern void cost_subqueryscan(SubqueryScanPath *path, PlannerInfo *root, - RelOptInfo *baserel, ParamPathInfo *param_info); + RelOptInfo *baserel, ParamPathInfo *param_info); extern void cost_functionscan(Path *path, PlannerInfo *root, - RelOptInfo *baserel, ParamPathInfo *param_info); -extern void cost_tableexprscan(Path *path, PlannerInfo *root, - RelOptInfo *baserel, ParamPathInfo *param_info); + RelOptInfo *baserel, ParamPathInfo *param_info); extern void cost_valuesscan(Path *path, PlannerInfo *root, - RelOptInfo *baserel, ParamPathInfo *param_info); + RelOptInfo *baserel, ParamPathInfo *param_info); extern void cost_tablefuncscan(Path *path, PlannerInfo *root, - RelOptInfo *baserel, ParamPathInfo *param_info); + RelOptInfo *baserel, ParamPathInfo *param_info); extern void cost_ctescan(Path *path, PlannerInfo *root, - RelOptInfo *baserel, ParamPathInfo *param_info); -extern void cost_namedtuplestorescan(Path *path, PlannerInfo *root, RelOptInfo *baserel, ParamPathInfo *param_info); +extern void cost_namedtuplestorescan(Path *path, PlannerInfo *root, + RelOptInfo *baserel, ParamPathInfo *param_info); +extern void cost_resultscan(Path *path, PlannerInfo *root, + RelOptInfo *baserel, ParamPathInfo *param_info); extern void cost_recursive_union(Path *runion, Path *nrterm, Path *rterm); extern void cost_sort(Path *path, PlannerInfo *root, - List *pathkeys, Cost input_cost, double tuples, int width, - Cost comparison_cost, int sort_mem, - double limit_tuples); + List *pathkeys, Cost input_cost, double tuples, int width, + Cost comparison_cost, int sort_mem, + double limit_tuples); +extern void cost_incremental_sort(Path *path, + PlannerInfo *root, List *pathkeys, int presorted_keys, + Cost input_startup_cost, Cost input_total_cost, + double input_tuples, int width, Cost comparison_cost, int sort_mem, + double limit_tuples); +extern void cost_append(AppendPath *path); extern void cost_merge_append(Path *path, PlannerInfo *root, - List *pathkeys, int n_streams, - Cost input_startup_cost, Cost input_total_cost, - double tuples); + List *pathkeys, int n_streams, + Cost input_startup_cost, Cost input_total_cost, + double tuples); extern void cost_material(Path *path, - Cost input_startup_cost, Cost input_total_cost, - double tuples, int width); + Cost input_startup_cost, Cost input_total_cost, + double tuples, int width); extern void cost_agg(Path *path, PlannerInfo *root, - AggStrategy aggstrategy, const AggClauseCosts *aggcosts, - int numGroupCols, double numGroups, - Cost input_startup_cost, Cost input_total_cost, - double input_tuples); + AggStrategy aggstrategy, const AggClauseCosts *aggcosts, + int numGroupCols, double numGroups, + List *quals, + Cost input_startup_cost, Cost input_total_cost, + double input_tuples, double input_width); extern void cost_windowagg(Path *path, PlannerInfo *root, - List *windowFuncs, int numPartCols, int numOrderCols, - Cost input_startup_cost, Cost input_total_cost, - double input_tuples); + List *windowFuncs, int numPartCols, int numOrderCols, + Cost input_startup_cost, Cost input_total_cost, + double input_tuples); extern void cost_group(Path *path, PlannerInfo *root, - int numGroupCols, double numGroups, - Cost input_startup_cost, Cost input_total_cost, - double input_tuples); + int numGroupCols, double numGroups, + List *quals, + Cost input_startup_cost, Cost input_total_cost, + double input_tuples); extern void initial_cost_nestloop(PlannerInfo *root, - JoinCostWorkspace *workspace, - JoinType jointype, - Path *outer_path, Path *inner_path, - JoinPathExtraData *extra); + JoinCostWorkspace *workspace, + JoinType jointype, + Path *outer_path, Path *inner_path, + JoinPathExtraData *extra); extern void final_cost_nestloop(PlannerInfo *root, NestPath *path, - JoinCostWorkspace *workspace, - JoinPathExtraData *extra); + JoinCostWorkspace *workspace, + JoinPathExtraData *extra); extern void initial_cost_mergejoin(PlannerInfo *root, - JoinCostWorkspace *workspace, - JoinType jointype, - List *mergeclauses, - Path *outer_path, Path *inner_path, - List *outersortkeys, List *innersortkeys, - JoinPathExtraData *extra); + JoinCostWorkspace *workspace, + JoinType jointype, + List *mergeclauses, + Path *outer_path, Path *inner_path, + List *outersortkeys, List *innersortkeys, + JoinPathExtraData *extra); extern void final_cost_mergejoin(PlannerInfo *root, MergePath *path, - JoinCostWorkspace *workspace, - JoinPathExtraData *extra); + JoinCostWorkspace *workspace, + JoinPathExtraData *extra); extern void initial_cost_hashjoin(PlannerInfo *root, - JoinCostWorkspace *workspace, - JoinType jointype, - List *hashclauses, - Path *outer_path, Path *inner_path, - JoinPathExtraData *extra); + JoinCostWorkspace *workspace, + JoinType jointype, + List *hashclauses, + Path *outer_path, Path *inner_path, + JoinPathExtraData *extra, + bool parallel_hash); extern void final_cost_hashjoin(PlannerInfo *root, HashPath *path, - JoinCostWorkspace *workspace, - JoinPathExtraData *extra); + JoinCostWorkspace *workspace, + JoinPathExtraData *extra); extern void cost_gather(GatherPath *path, PlannerInfo *root, - RelOptInfo *baserel, ParamPathInfo *param_info, double *rows); + RelOptInfo *baserel, ParamPathInfo *param_info, double *rows); +extern void cost_gather_merge(GatherMergePath *path, PlannerInfo *root, + RelOptInfo *rel, ParamPathInfo *param_info, + Cost input_startup_cost, Cost input_total_cost, + double *rows); extern void cost_subplan(PlannerInfo *root, SubPlan *subplan, Plan *plan); extern void cost_qual_eval(QualCost *cost, List *quals, PlannerInfo *root); extern void cost_qual_eval_node(QualCost *cost, Node *qual, PlannerInfo *root); extern void compute_semi_anti_join_factors(PlannerInfo *root, - RelOptInfo *outerrel, - RelOptInfo *innerrel, - JoinType jointype, - SpecialJoinInfo *sjinfo, - List *restrictlist, - SemiAntiJoinFactors *semifactors); + RelOptInfo *joinrel, + RelOptInfo *outerrel, + RelOptInfo *innerrel, + JoinType jointype, + SpecialJoinInfo *sjinfo, + List *restrictlist, + SemiAntiJoinFactors *semifactors); extern void set_baserel_size_estimates(PlannerInfo *root, RelOptInfo *rel); extern double get_parameterized_baserel_size(PlannerInfo *root, - RelOptInfo *rel, - List *param_clauses); + RelOptInfo *rel, + List *param_clauses); extern double get_parameterized_joinrel_size(PlannerInfo *root, - RelOptInfo *rel, - Path *outer_path, - Path *inner_path, - SpecialJoinInfo *sjinfo, - List *restrict_clauses); + RelOptInfo *rel, + Path *outer_path, + Path *inner_path, + SpecialJoinInfo *sjinfo, + List *restrict_clauses); extern void set_joinrel_size_estimates(PlannerInfo *root, RelOptInfo *rel, - RelOptInfo *outer_rel, - RelOptInfo *inner_rel, - SpecialJoinInfo *sjinfo, - List *restrictlist); + RelOptInfo *outer_rel, + RelOptInfo *inner_rel, + SpecialJoinInfo *sjinfo, + List *restrictlist); extern void set_subquery_size_estimates(PlannerInfo *root, RelOptInfo *rel); extern void set_function_size_estimates(PlannerInfo *root, RelOptInfo *rel); extern void set_values_size_estimates(PlannerInfo *root, RelOptInfo *rel); extern void set_cte_size_estimates(PlannerInfo *root, RelOptInfo *rel, - double cte_rows); + double cte_rows); extern void set_tablefunc_size_estimates(PlannerInfo *root, RelOptInfo *rel); extern void set_namedtuplestore_size_estimates(PlannerInfo *root, RelOptInfo *rel); +extern void set_result_size_estimates(PlannerInfo *root, RelOptInfo *rel); extern void set_foreign_size_estimates(PlannerInfo *root, RelOptInfo *rel); extern PathTarget *set_pathtarget_cost_width(PlannerInfo *root, PathTarget *target); extern double compute_bitmap_pages(PlannerInfo *root, RelOptInfo *baserel, - Path *bitmapqual, int loop_count, Cost *cost, double *tuple); - -/* - * prototypes for clausesel.c - * routines to compute clause selectivities - */ -extern Selectivity clauselist_selectivity(PlannerInfo *root, - List *clauses, - int varRelid, - JoinType jointype, - SpecialJoinInfo *sjinfo); -extern Selectivity clause_selectivity(PlannerInfo *root, - Node *clause, - int varRelid, - JoinType jointype, - SpecialJoinInfo *sjinfo); -extern void cost_gather_merge(GatherMergePath *path, PlannerInfo *root, - RelOptInfo *rel, ParamPathInfo *param_info, - Cost input_startup_cost, Cost input_total_cost, - double *rows); + Path *bitmapqual, int loop_count, Cost *cost, double *tuple); #endif /* COST_H */ diff --git a/parser/include/optimizer/geqo.h b/parser/include/optimizer/geqo.h index d0158d7a..aba549f1 100644 --- a/parser/include/optimizer/geqo.h +++ b/parser/include/optimizer/geqo.h @@ -3,7 +3,7 @@ * geqo.h * prototypes for various files in optimizer/geqo * - * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/optimizer/geqo.h @@ -22,7 +22,7 @@ #ifndef GEQO_H #define GEQO_H -#include "nodes/relation.h" +#include "nodes/pathnodes.h" #include "optimizer/geqo_gene.h" @@ -79,7 +79,7 @@ typedef struct /* routines in geqo_main.c */ extern RelOptInfo *geqo(PlannerInfo *root, - int number_of_rels, List *initial_rels); + int number_of_rels, List *initial_rels); /* routines in geqo_eval.c */ extern Cost geqo_eval(PlannerInfo *root, Gene *tour, int num_gene); diff --git a/parser/include/optimizer/geqo_gene.h b/parser/include/optimizer/geqo_gene.h index 32821932..9d3a94f2 100644 --- a/parser/include/optimizer/geqo_gene.h +++ b/parser/include/optimizer/geqo_gene.h @@ -3,7 +3,7 @@ * geqo_gene.h * genome representation in optimizer/geqo * - * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/optimizer/geqo_gene.h diff --git a/parser/include/optimizer/optimizer.h b/parser/include/optimizer/optimizer.h new file mode 100644 index 00000000..3c588def --- /dev/null +++ b/parser/include/optimizer/optimizer.h @@ -0,0 +1,199 @@ +/*------------------------------------------------------------------------- + * + * optimizer.h + * External API for the Postgres planner. + * + * This header is meant to define everything that the core planner + * exposes for use by non-planner modules. + * + * Note that there are files outside src/backend/optimizer/ that are + * considered planner modules, because they're too much in bed with + * planner operations to be treated otherwise. FDW planning code is an + * example. For the most part, however, code outside the core planner + * should not need to include any optimizer/ header except this one. + * + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group + * Portions Copyright (c) 1994, Regents of the University of California + * + * src/include/optimizer/optimizer.h + * + *------------------------------------------------------------------------- + */ +#ifndef OPTIMIZER_H +#define OPTIMIZER_H + +#include "nodes/parsenodes.h" + +/* Test if an expression node represents a SRF call. Beware multiple eval! */ +#define IS_SRF_CALL(node) \ + ((IsA(node, FuncExpr) && ((FuncExpr *) (node))->funcretset) || \ + (IsA(node, OpExpr) && ((OpExpr *) (node))->opretset)) + +/* + * We don't want to include nodes/pathnodes.h here, because non-planner + * code should generally treat PlannerInfo as an opaque typedef. + * But we'd like such code to use that typedef name, so define the + * typedef either here or in pathnodes.h, whichever is read first. + */ +#ifndef HAVE_PLANNERINFO_TYPEDEF +typedef struct PlannerInfo PlannerInfo; +#define HAVE_PLANNERINFO_TYPEDEF 1 +#endif + +/* Likewise for IndexOptInfo and SpecialJoinInfo. */ +#ifndef HAVE_INDEXOPTINFO_TYPEDEF +typedef struct IndexOptInfo IndexOptInfo; +#define HAVE_INDEXOPTINFO_TYPEDEF 1 +#endif +#ifndef HAVE_SPECIALJOININFO_TYPEDEF +typedef struct SpecialJoinInfo SpecialJoinInfo; +#define HAVE_SPECIALJOININFO_TYPEDEF 1 +#endif + +/* It also seems best not to include plannodes.h, params.h, or htup.h here */ +struct PlannedStmt; +struct ParamListInfoData; +struct HeapTupleData; + + +/* in path/clausesel.c: */ + +extern Selectivity clause_selectivity(PlannerInfo *root, + Node *clause, + int varRelid, + JoinType jointype, + SpecialJoinInfo *sjinfo); +extern Selectivity clauselist_selectivity_simple(PlannerInfo *root, + List *clauses, + int varRelid, + JoinType jointype, + SpecialJoinInfo *sjinfo, + Bitmapset *estimatedclauses); +extern Selectivity clauselist_selectivity(PlannerInfo *root, + List *clauses, + int varRelid, + JoinType jointype, + SpecialJoinInfo *sjinfo); + +/* in path/costsize.c: */ + +/* widely used cost parameters */ +extern PGDLLIMPORT double seq_page_cost; +extern PGDLLIMPORT double random_page_cost; +extern PGDLLIMPORT double cpu_tuple_cost; +extern PGDLLIMPORT double cpu_index_tuple_cost; +extern PGDLLIMPORT double cpu_operator_cost; +extern PGDLLIMPORT double parallel_tuple_cost; +extern PGDLLIMPORT double parallel_setup_cost; +extern PGDLLIMPORT int effective_cache_size; + +extern double clamp_row_est(double nrows); + +/* in path/indxpath.c: */ + +extern bool is_pseudo_constant_for_index(Node *expr, IndexOptInfo *index); +extern bool is_pseudo_constant_for_index_new(PlannerInfo *root, Node *expr, + IndexOptInfo *index); + +/* in plan/planner.c: */ + +/* possible values for force_parallel_mode */ +typedef enum +{ + FORCE_PARALLEL_OFF, + FORCE_PARALLEL_ON, + FORCE_PARALLEL_REGRESS +} ForceParallelMode; + +/* GUC parameters */ +extern int force_parallel_mode; +extern bool parallel_leader_participation; + +extern struct PlannedStmt *planner(Query *parse, const char *query_string, + int cursorOptions, + struct ParamListInfoData *boundParams); + +extern Expr *expression_planner(Expr *expr); +extern Expr *expression_planner_with_deps(Expr *expr, + List **relationOids, + List **invalItems); + +extern bool plan_cluster_use_sort(Oid tableOid, Oid indexOid); +extern int plan_create_index_workers(Oid tableOid, Oid indexOid); + +/* in plan/setrefs.c: */ + +extern void extract_query_dependencies(Node *query, + List **relationOids, + List **invalItems, + bool *hasRowSecurity); + +/* in prep/prepqual.c: */ + +extern Node *negate_clause(Node *node); +extern Expr *canonicalize_qual(Expr *qual, bool is_check); + +/* in util/clauses.c: */ + +extern bool contain_mutable_functions(Node *clause); +extern bool contain_volatile_functions(Node *clause); +extern bool contain_volatile_functions_not_nextval(Node *clause); + +extern Node *eval_const_expressions(PlannerInfo *root, Node *node); + +extern Node *estimate_expression_value(PlannerInfo *root, Node *node); + +extern Expr *evaluate_expr(Expr *expr, Oid result_type, int32 result_typmod, + Oid result_collation); + +extern List *expand_function_arguments(List *args, Oid result_type, + struct HeapTupleData *func_tuple); + +/* in util/predtest.c: */ + +extern bool predicate_implied_by(List *predicate_list, List *clause_list, + bool weak); +extern bool predicate_refuted_by(List *predicate_list, List *clause_list, + bool weak); + +/* in util/tlist.c: */ + +extern int count_nonjunk_tlist_entries(List *tlist); +extern TargetEntry *get_sortgroupref_tle(Index sortref, + List *targetList); +extern TargetEntry *get_sortgroupclause_tle(SortGroupClause *sgClause, + List *targetList); +extern Node *get_sortgroupclause_expr(SortGroupClause *sgClause, + List *targetList); +extern List *get_sortgrouplist_exprs(List *sgClauses, + List *targetList); +extern SortGroupClause *get_sortgroupref_clause(Index sortref, + List *clauses); +extern SortGroupClause *get_sortgroupref_clause_noerr(Index sortref, + List *clauses); + +/* in util/var.c: */ + +/* Bits that can be OR'd into the flags argument of pull_var_clause() */ +#define PVC_INCLUDE_AGGREGATES 0x0001 /* include Aggrefs in output list */ +#define PVC_RECURSE_AGGREGATES 0x0002 /* recurse into Aggref arguments */ +#define PVC_INCLUDE_WINDOWFUNCS 0x0004 /* include WindowFuncs in output list */ +#define PVC_RECURSE_WINDOWFUNCS 0x0008 /* recurse into WindowFunc arguments */ +#define PVC_INCLUDE_PLACEHOLDERS 0x0010 /* include PlaceHolderVars in + * output list */ +#define PVC_RECURSE_PLACEHOLDERS 0x0020 /* recurse into PlaceHolderVar + * arguments */ + +extern Bitmapset *pull_varnos(Node *node); +extern Bitmapset *pull_varnos_of_level(Node *node, int levelsup); +extern Bitmapset *pull_varnos_new(PlannerInfo *root, Node *node); +extern Bitmapset *pull_varnos_of_level_new(PlannerInfo *root, Node *node, int levelsup); +extern void pull_varattnos(Node *node, Index varno, Bitmapset **varattnos); +extern List *pull_vars_of_level(Node *node, int levelsup); +extern bool contain_var_clause(Node *node); +extern bool contain_vars_of_level(Node *node, int levelsup); +extern int locate_var_of_level(Node *node, int levelsup); +extern List *pull_var_clause(Node *node, int flags); +extern Node *flatten_join_alias_vars(Query *query, Node *node); + +#endif /* OPTIMIZER_H */ diff --git a/parser/include/optimizer/paths.h b/parser/include/optimizer/paths.h index 1d3fb5c2..ea405d4e 100644 --- a/parser/include/optimizer/paths.h +++ b/parser/include/optimizer/paths.h @@ -4,7 +4,7 @@ * prototypes for various files in optimizer/path * * - * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/optimizer/paths.h @@ -14,16 +14,16 @@ #ifndef PATHS_H #define PATHS_H -#include "nodes/relation.h" +#include "nodes/pathnodes.h" /* * allpaths.c */ extern PGDLLIMPORT bool enable_geqo; -extern PGDLLIMPORT int geqo_threshold; -extern PGDLLIMPORT int min_parallel_table_scan_size; -extern PGDLLIMPORT int min_parallel_index_scan_size; +extern PGDLLIMPORT int geqo_threshold; +extern PGDLLIMPORT int min_parallel_table_scan_size; +extern PGDLLIMPORT int min_parallel_index_scan_size; /* Hook for plugins to get control in set_rel_pathlist() */ typedef void (*set_rel_pathlist_hook_type) (PlannerInfo *root, @@ -49,15 +49,19 @@ extern PGDLLIMPORT join_search_hook_type join_search_hook; extern RelOptInfo *make_one_rel(PlannerInfo *root, List *joinlist); -extern void set_dummy_rel_pathlist(RelOptInfo *rel); extern RelOptInfo *standard_join_search(PlannerInfo *root, int levels_needed, - List *initial_rels); - -extern void generate_gather_paths(PlannerInfo *root, RelOptInfo *rel); -extern int compute_parallel_worker(RelOptInfo *rel, double heap_pages, - double index_pages); + List *initial_rels); + +extern void generate_gather_paths(PlannerInfo *root, RelOptInfo *rel, + bool override_rows); +extern void generate_useful_gather_paths(PlannerInfo *root, RelOptInfo *rel, + bool override_rows); +extern int compute_parallel_worker(RelOptInfo *rel, double heap_pages, + double index_pages, int max_workers); extern void create_partial_bitmap_paths(PlannerInfo *root, RelOptInfo *rel, - Path *bitmapqual); + Path *bitmapqual); +extern void generate_partitionwise_join_paths(PlannerInfo *root, + RelOptInfo *rel); #ifdef OPTIMIZER_DEBUG extern void debug_print_rel(PlannerInfo *root, RelOptInfo *rel); @@ -69,21 +73,14 @@ extern void debug_print_rel(PlannerInfo *root, RelOptInfo *rel); */ extern void create_index_paths(PlannerInfo *root, RelOptInfo *rel); extern bool relation_has_unique_index_for(PlannerInfo *root, RelOptInfo *rel, - List *restrictlist, - List *exprlist, List *oprlist); -extern bool indexcol_is_bool_constant_for_query(IndexOptInfo *index, - int indexcol); + List *restrictlist, + List *exprlist, List *oprlist); +extern bool indexcol_is_bool_constant_for_query(PlannerInfo *root, + IndexOptInfo *index, + int indexcol); extern bool match_index_to_operand(Node *operand, int indexcol, - IndexOptInfo *index); -extern void expand_indexqual_conditions(IndexOptInfo *index, - List *indexclauses, List *indexclausecols, - List **indexquals_p, List **indexqualcols_p); + IndexOptInfo *index); extern void check_index_predicates(PlannerInfo *root, RelOptInfo *rel); -extern Expr *adjust_rowcompare_for_index(RowCompareExpr *clause, - IndexOptInfo *index, - int indexcol, - List **indexcolnos, - bool *var_on_left_p); /* * tidpath.h @@ -96,9 +93,9 @@ extern void create_tidscan_paths(PlannerInfo *root, RelOptInfo *rel); * routines to create join paths */ extern void add_paths_to_joinrel(PlannerInfo *root, RelOptInfo *joinrel, - RelOptInfo *outerrel, RelOptInfo *innerrel, - JoinType jointype, SpecialJoinInfo *sjinfo, - List *restrictlist); + RelOptInfo *outerrel, RelOptInfo *innerrel, + JoinType jointype, SpecialJoinInfo *sjinfo, + List *restrictlist); /* * joinrels.c @@ -106,11 +103,12 @@ extern void add_paths_to_joinrel(PlannerInfo *root, RelOptInfo *joinrel, */ extern void join_search_one_level(PlannerInfo *root, int level); extern RelOptInfo *make_join_rel(PlannerInfo *root, - RelOptInfo *rel1, RelOptInfo *rel2); + RelOptInfo *rel1, RelOptInfo *rel2); extern bool have_join_order_restriction(PlannerInfo *root, - RelOptInfo *rel1, RelOptInfo *rel2); + RelOptInfo *rel1, RelOptInfo *rel2); extern bool have_dangerous_phv(PlannerInfo *root, - Relids outer_relids, Relids inner_params); + Relids outer_relids, Relids inner_params); +extern void mark_dummy_rel(RelOptInfo *rel); /* * equivclass.c @@ -122,51 +120,64 @@ typedef bool (*ec_matches_callback_type) (PlannerInfo *root, EquivalenceMember *em, void *arg); -extern bool process_equivalence(PlannerInfo *root, RestrictInfo *restrictinfo, - bool below_outer_join); +extern bool process_equivalence(PlannerInfo *root, + RestrictInfo **p_restrictinfo, + bool below_outer_join); extern Expr *canonicalize_ec_expression(Expr *expr, - Oid req_type, Oid req_collation); + Oid req_type, Oid req_collation); extern void reconsider_outer_join_clauses(PlannerInfo *root); extern EquivalenceClass *get_eclass_for_sort_expr(PlannerInfo *root, - Expr *expr, - Relids nullable_relids, - List *opfamilies, - Oid opcintype, - Oid collation, - Index sortref, - Relids rel, - bool create_it); + Expr *expr, + Relids nullable_relids, + List *opfamilies, + Oid opcintype, + Oid collation, + Index sortref, + Relids rel, + bool create_it); +extern Expr *find_em_expr_for_rel(EquivalenceClass *ec, RelOptInfo *rel); +extern Expr *find_em_expr_usable_for_sorting_rel(PlannerInfo *root, + EquivalenceClass *ec, + RelOptInfo *rel, + bool require_parallel_safe); extern void generate_base_implied_equalities(PlannerInfo *root); extern List *generate_join_implied_equalities(PlannerInfo *root, - Relids join_relids, - Relids outer_relids, - RelOptInfo *inner_rel); + Relids join_relids, + Relids outer_relids, + RelOptInfo *inner_rel); extern List *generate_join_implied_equalities_for_ecs(PlannerInfo *root, - List *eclasses, - Relids join_relids, - Relids outer_relids, - RelOptInfo *inner_rel); + List *eclasses, + Relids join_relids, + Relids outer_relids, + RelOptInfo *inner_rel); extern bool exprs_known_equal(PlannerInfo *root, Node *item1, Node *item2); extern EquivalenceClass *match_eclasses_to_foreign_key_col(PlannerInfo *root, - ForeignKeyOptInfo *fkinfo, - int colno); + ForeignKeyOptInfo *fkinfo, + int colno); extern void add_child_rel_equivalences(PlannerInfo *root, - AppendRelInfo *appinfo, - RelOptInfo *parent_rel, - RelOptInfo *child_rel); + AppendRelInfo *appinfo, + RelOptInfo *parent_rel, + RelOptInfo *child_rel); +extern void add_child_join_rel_equivalences(PlannerInfo *root, + int nappinfos, + AppendRelInfo **appinfos, + RelOptInfo *parent_rel, + RelOptInfo *child_rel); extern List *generate_implied_equalities_for_column(PlannerInfo *root, - RelOptInfo *rel, - ec_matches_callback_type callback, - void *callback_arg, - Relids prohibited_rels); + RelOptInfo *rel, + ec_matches_callback_type callback, + void *callback_arg, + Relids prohibited_rels); extern bool have_relevant_eclass_joinclause(PlannerInfo *root, - RelOptInfo *rel1, RelOptInfo *rel2); + RelOptInfo *rel1, RelOptInfo *rel2); extern bool has_relevant_eclass_joinclause(PlannerInfo *root, - RelOptInfo *rel1); + RelOptInfo *rel1); extern bool eclass_useful_for_merging(PlannerInfo *root, - EquivalenceClass *eclass, - RelOptInfo *rel); + EquivalenceClass *eclass, + RelOptInfo *rel); extern bool is_redundant_derived_clause(RestrictInfo *rinfo, List *clauselist); +extern bool is_redundant_with_indexclauses(RestrictInfo *rinfo, + List *indexclauses); /* * pathkeys.c @@ -182,52 +193,57 @@ typedef enum extern PathKeysComparison compare_pathkeys(List *keys1, List *keys2); extern bool pathkeys_contained_in(List *keys1, List *keys2); +extern bool pathkeys_count_contained_in(List *keys1, List *keys2, int *n_common); extern Path *get_cheapest_path_for_pathkeys(List *paths, List *pathkeys, - Relids required_outer, - CostSelector cost_criterion, - bool require_parallel_safe); + Relids required_outer, + CostSelector cost_criterion, + bool require_parallel_safe); extern Path *get_cheapest_fractional_path_for_pathkeys(List *paths, - List *pathkeys, - Relids required_outer, - double fraction); + List *pathkeys, + Relids required_outer, + double fraction); extern Path *get_cheapest_parallel_safe_total_inner(List *paths); extern List *build_index_pathkeys(PlannerInfo *root, IndexOptInfo *index, - ScanDirection scandir); + ScanDirection scandir); +extern List *build_partition_pathkeys(PlannerInfo *root, RelOptInfo *partrel, + ScanDirection scandir, bool *partialkeys); extern List *build_expression_pathkey(PlannerInfo *root, Expr *expr, - Relids nullable_relids, Oid opno, - Relids rel, bool create_it); + Relids nullable_relids, Oid opno, + Relids rel, bool create_it); extern List *convert_subquery_pathkeys(PlannerInfo *root, RelOptInfo *rel, - List *subquery_pathkeys, - List *subquery_tlist); + List *subquery_pathkeys, + List *subquery_tlist); extern List *build_join_pathkeys(PlannerInfo *root, - RelOptInfo *joinrel, - JoinType jointype, - List *outer_pathkeys); + RelOptInfo *joinrel, + JoinType jointype, + List *outer_pathkeys); extern List *make_pathkeys_for_sortclauses(PlannerInfo *root, - List *sortclauses, - List *tlist); + List *sortclauses, + List *tlist); extern void initialize_mergeclause_eclasses(PlannerInfo *root, - RestrictInfo *restrictinfo); + RestrictInfo *restrictinfo); extern void update_mergeclause_eclasses(PlannerInfo *root, - RestrictInfo *restrictinfo); + RestrictInfo *restrictinfo); extern List *find_mergeclauses_for_outer_pathkeys(PlannerInfo *root, - List *pathkeys, - List *restrictinfos); + List *pathkeys, + List *restrictinfos); extern List *select_outer_pathkeys_for_merge(PlannerInfo *root, - List *mergeclauses, - RelOptInfo *joinrel); + List *mergeclauses, + RelOptInfo *joinrel); extern List *make_inner_pathkeys_for_merge(PlannerInfo *root, - List *mergeclauses, - List *outer_pathkeys); + List *mergeclauses, + List *outer_pathkeys); extern List *trim_mergeclauses_for_inner_pathkeys(PlannerInfo *root, - List *mergeclauses, - List *pathkeys); + List *mergeclauses, + List *pathkeys); extern List *truncate_useless_pathkeys(PlannerInfo *root, - RelOptInfo *rel, - List *pathkeys); + RelOptInfo *rel, + List *pathkeys); extern bool has_useful_pathkeys(PlannerInfo *root, RelOptInfo *rel); extern PathKey *make_canonical_pathkey(PlannerInfo *root, - EquivalenceClass *eclass, Oid opfamily, - int strategy, bool nulls_first); + EquivalenceClass *eclass, Oid opfamily, + int strategy, bool nulls_first); +extern void add_paths_to_append_rel(PlannerInfo *root, RelOptInfo *rel, + List *live_childrels); #endif /* PATHS_H */ diff --git a/parser/include/optimizer/planmain.h b/parser/include/optimizer/planmain.h index 51e3f0d2..8ce60e20 100644 --- a/parser/include/optimizer/planmain.h +++ b/parser/include/optimizer/planmain.h @@ -4,7 +4,7 @@ * prototypes for various files in optimizer/plan * * - * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/optimizer/planmain.h @@ -14,21 +14,12 @@ #ifndef PLANMAIN_H #define PLANMAIN_H +#include "nodes/pathnodes.h" #include "nodes/plannodes.h" -#include "nodes/relation.h" - -/* possible values for force_parallel_mode */ -typedef enum -{ - FORCE_PARALLEL_OFF, - FORCE_PARALLEL_ON, - FORCE_PARALLEL_REGRESS -} ForceParallelMode; /* GUC parameters */ #define DEFAULT_CURSOR_TUPLE_FRACTION 0.1 extern double cursor_tuple_fraction; -extern int force_parallel_mode; /* query_planner callback to compute query_pathkeys */ typedef void (*query_pathkeys_callback) (PlannerInfo *root, void *extra); @@ -36,24 +27,24 @@ typedef void (*query_pathkeys_callback) (PlannerInfo *root, void *extra); /* * prototypes for plan/planmain.c */ -extern RelOptInfo *query_planner(PlannerInfo *root, List *tlist, - query_pathkeys_callback qp_callback, void *qp_extra); +extern RelOptInfo *query_planner(PlannerInfo *root, + query_pathkeys_callback qp_callback, void *qp_extra); /* * prototypes for plan/planagg.c */ -extern void preprocess_minmax_aggregates(PlannerInfo *root, List *tlist); +extern void preprocess_minmax_aggregates(PlannerInfo *root); /* * prototypes for plan/createplan.c */ extern Plan *create_plan(PlannerInfo *root, Path *best_path); extern ForeignScan *make_foreignscan(List *qptlist, List *qpqual, - Index scanrelid, List *fdw_exprs, List *fdw_private, - List *fdw_scan_tlist, List *fdw_recheck_quals, - Plan *outer_plan); + Index scanrelid, List *fdw_exprs, List *fdw_private, + List *fdw_scan_tlist, List *fdw_recheck_quals, + Plan *outer_plan); extern Plan *change_plan_targetlist(Plan *subplan, List *tlist, - bool tlist_parallel_safe); + bool tlist_parallel_safe); extern Plan *materialize_finished_plan(Plan *subplan); extern bool is_projection_capable_path(Path *path); extern bool is_projection_capable_plan(Plan *plan); @@ -61,11 +52,14 @@ extern bool is_projection_capable_plan(Plan *plan); /* External use of these functions is deprecated: */ extern Sort *make_sort_from_sortclauses(List *sortcls, Plan *lefttree); extern Agg *make_agg(List *tlist, List *qual, - AggStrategy aggstrategy, AggSplit aggsplit, - int numGroupCols, AttrNumber *grpColIdx, Oid *grpOperators, - List *groupingSets, List *chain, - double dNumGroups, Plan *lefttree); -extern Limit *make_limit(Plan *lefttree, Node *limitOffset, Node *limitCount); + AggStrategy aggstrategy, AggSplit aggsplit, + int numGroupCols, AttrNumber *grpColIdx, Oid *grpOperators, Oid *grpCollations, + List *groupingSets, List *chain, double dNumGroups, + Size transitionSpace, Plan *lefttree); +extern Limit *make_limit(Plan *lefttree, Node *limitOffset, Node *limitCount, + LimitOption limitOption, int uniqNumCols, + AttrNumber *uniqColIdx, Oid *uniqOperators, + Oid *uniqCollations); /* * prototypes for plan/initsplan.c @@ -74,31 +68,33 @@ extern int from_collapse_limit; extern int join_collapse_limit; extern void add_base_rels_to_query(PlannerInfo *root, Node *jtnode); +extern void add_other_rels_to_query(PlannerInfo *root); extern void build_base_rel_tlists(PlannerInfo *root, List *final_tlist); extern void add_vars_to_targetlist(PlannerInfo *root, List *vars, - Relids where_needed, bool create_new_ph); + Relids where_needed, bool create_new_ph); extern void find_lateral_references(PlannerInfo *root); extern void create_lateral_join_info(PlannerInfo *root); extern List *deconstruct_jointree(PlannerInfo *root); extern void distribute_restrictinfo_to_rels(PlannerInfo *root, - RestrictInfo *restrictinfo); + RestrictInfo *restrictinfo); extern void process_implied_equality(PlannerInfo *root, - Oid opno, - Oid collation, - Expr *item1, - Expr *item2, - Relids qualscope, - Relids nullable_relids, - Index security_level, - bool below_outer_join, - bool both_const); -extern RestrictInfo *build_implied_join_equality(Oid opno, - Oid collation, - Expr *item1, - Expr *item2, - Relids qualscope, - Relids nullable_relids, - Index security_level); + Oid opno, + Oid collation, + Expr *item1, + Expr *item2, + Relids qualscope, + Relids nullable_relids, + Index security_level, + bool below_outer_join, + bool both_const); +extern RestrictInfo *build_implied_join_equality(PlannerInfo *root, + Oid opno, + Oid collation, + Expr *item1, + Expr *item2, + Relids qualscope, + Relids nullable_relids, + Index security_level); extern void match_foreign_keys_to_quals(PlannerInfo *root); /* @@ -109,17 +105,15 @@ extern void reduce_unique_semijoins(PlannerInfo *root); extern bool query_supports_distinctness(Query *query); extern bool query_is_distinct_for(Query *query, List *colnos, List *opids); extern bool innerrel_is_unique(PlannerInfo *root, - Relids outerrelids, RelOptInfo *innerrel, - JoinType jointype, List *restrictlist, bool force_cache); + Relids joinrelids, Relids outerrelids, RelOptInfo *innerrel, + JoinType jointype, List *restrictlist, bool force_cache); /* * prototypes for plan/setrefs.c */ extern Plan *set_plan_references(PlannerInfo *root, Plan *plan); extern void record_plan_function_dependency(PlannerInfo *root, Oid funcid); -extern void extract_query_dependencies(Node *query, - List **relationOids, - List **invalItems, - bool *hasRowSecurity); +extern void record_plan_type_dependency(PlannerInfo *root, Oid typid); +extern bool extract_query_dependencies_walker(Node *node, PlannerInfo *root); #endif /* PLANMAIN_H */ diff --git a/parser/include/optimizer/planner.h b/parser/include/optimizer/planner.h deleted file mode 100644 index acb709a5..00000000 --- a/parser/include/optimizer/planner.h +++ /dev/null @@ -1,64 +0,0 @@ -/*------------------------------------------------------------------------- - * - * planner.h - * prototypes for planner.c. - * - * - * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group - * Portions Copyright (c) 1994, Regents of the University of California - * - * src/include/optimizer/planner.h - * - *------------------------------------------------------------------------- - */ -#ifndef PLANNER_H -#define PLANNER_H - -#include "nodes/plannodes.h" -#include "nodes/relation.h" - - -/* Hook for plugins to get control in planner() */ -typedef PlannedStmt *(*planner_hook_type) (Query *parse, - int cursorOptions, - ParamListInfo boundParams); -extern PGDLLIMPORT planner_hook_type planner_hook; - -/* Hook for plugins to get control when grouping_planner() plans upper rels */ -typedef void (*create_upper_paths_hook_type) (PlannerInfo *root, - UpperRelationKind stage, - RelOptInfo *input_rel, - RelOptInfo *output_rel); -extern PGDLLIMPORT create_upper_paths_hook_type create_upper_paths_hook; - - -extern PlannedStmt *planner(Query *parse, int cursorOptions, - ParamListInfo boundParams); -extern PlannedStmt *standard_planner(Query *parse, int cursorOptions, - ParamListInfo boundParams); - -extern PlannerInfo *subquery_planner(PlannerGlobal *glob, Query *parse, - PlannerInfo *parent_root, - bool hasRecursion, double tuple_fraction); - -extern bool is_dummy_plan(Plan *plan); - -extern RowMarkType select_rowmark_type(RangeTblEntry *rte, - LockClauseStrength strength); - -extern bool limit_needed(Query *parse); - -extern void mark_partial_aggref(Aggref *agg, AggSplit aggsplit); - -extern Path *get_cheapest_fractional_path(RelOptInfo *rel, - double tuple_fraction); - -extern Expr *expression_planner(Expr *expr); - -extern Expr *preprocess_phv_expression(PlannerInfo *root, Expr *expr); - -extern bool plan_cluster_use_sort(Oid tableOid, Oid indexOid); - -extern List *get_partitioned_child_rels(PlannerInfo *root, Index rti); - -#endif /* PLANNER_H */ diff --git a/parser/include/optimizer/tlist.h b/parser/include/optimizer/tlist.h deleted file mode 100644 index 0d3ec920..00000000 --- a/parser/include/optimizer/tlist.h +++ /dev/null @@ -1,72 +0,0 @@ -/*------------------------------------------------------------------------- - * - * tlist.h - * prototypes for tlist.c. - * - * - * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group - * Portions Copyright (c) 1994, Regents of the University of California - * - * src/include/optimizer/tlist.h - * - *------------------------------------------------------------------------- - */ -#ifndef TLIST_H -#define TLIST_H - -#include "nodes/relation.h" - - -extern TargetEntry *tlist_member(Expr *node, List *targetlist); -extern TargetEntry *tlist_member_ignore_relabel(Expr *node, List *targetlist); - -extern List *add_to_flat_tlist(List *tlist, List *exprs); - -extern List *get_tlist_exprs(List *tlist, bool includeJunk); - -extern int count_nonjunk_tlist_entries(List *tlist); - -extern bool tlist_same_exprs(List *tlist1, List *tlist2); - -extern bool tlist_same_datatypes(List *tlist, List *colTypes, bool junkOK); -extern bool tlist_same_collations(List *tlist, List *colCollations, bool junkOK); - -extern void apply_tlist_labeling(List *dest_tlist, List *src_tlist); - -extern TargetEntry *get_sortgroupref_tle(Index sortref, - List *targetList); -extern TargetEntry *get_sortgroupclause_tle(SortGroupClause *sgClause, - List *targetList); -extern Node *get_sortgroupclause_expr(SortGroupClause *sgClause, - List *targetList); -extern List *get_sortgrouplist_exprs(List *sgClauses, - List *targetList); - -extern SortGroupClause *get_sortgroupref_clause(Index sortref, - List *clauses); -extern SortGroupClause *get_sortgroupref_clause_noerr(Index sortref, - List *clauses); - -extern Oid *extract_grouping_ops(List *groupClause); -extern AttrNumber *extract_grouping_cols(List *groupClause, List *tlist); -extern bool grouping_is_sortable(List *groupClause); -extern bool grouping_is_hashable(List *groupClause); - -extern PathTarget *make_pathtarget_from_tlist(List *tlist); -extern List *make_tlist_from_pathtarget(PathTarget *target); -extern PathTarget *copy_pathtarget(PathTarget *src); -extern PathTarget *create_empty_pathtarget(void); -extern void add_column_to_pathtarget(PathTarget *target, - Expr *expr, Index sortgroupref); -extern void add_new_column_to_pathtarget(PathTarget *target, Expr *expr); -extern void add_new_columns_to_pathtarget(PathTarget *target, List *exprs); -extern void apply_pathtarget_labeling_to_tlist(List *tlist, PathTarget *target); -extern void split_pathtarget_at_srfs(PlannerInfo *root, - PathTarget *target, PathTarget *input_target, - List **targets, List **targets_contain_srfs); - -/* Convenience macro to get a PathTarget with valid cost/width fields */ -#define create_pathtarget(root, tlist) \ - set_pathtarget_cost_width(root, make_pathtarget_from_tlist(tlist)) - -#endif /* TLIST_H */ diff --git a/parser/include/optimizer/var.h b/parser/include/optimizer/var.h deleted file mode 100644 index 61861528..00000000 --- a/parser/include/optimizer/var.h +++ /dev/null @@ -1,40 +0,0 @@ -/*------------------------------------------------------------------------- - * - * var.h - * prototypes for optimizer/util/var.c. - * - * - * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group - * Portions Copyright (c) 1994, Regents of the University of California - * - * src/include/optimizer/var.h - * - *------------------------------------------------------------------------- - */ -#ifndef VAR_H -#define VAR_H - -#include "nodes/relation.h" - -/* Bits that can be OR'd into the flags argument of pull_var_clause() */ -#define PVC_INCLUDE_AGGREGATES 0x0001 /* include Aggrefs in output list */ -#define PVC_RECURSE_AGGREGATES 0x0002 /* recurse into Aggref arguments */ -#define PVC_INCLUDE_WINDOWFUNCS 0x0004 /* include WindowFuncs in output list */ -#define PVC_RECURSE_WINDOWFUNCS 0x0008 /* recurse into WindowFunc arguments */ -#define PVC_INCLUDE_PLACEHOLDERS 0x0010 /* include PlaceHolderVars in - * output list */ -#define PVC_RECURSE_PLACEHOLDERS 0x0020 /* recurse into PlaceHolderVar - * arguments */ - - -extern Relids pull_varnos(Node *node); -extern Relids pull_varnos_of_level(Node *node, int levelsup); -extern void pull_varattnos(Node *node, Index varno, Bitmapset **varattnos); -extern List *pull_vars_of_level(Node *node, int levelsup); -extern bool contain_var_clause(Node *node); -extern bool contain_vars_of_level(Node *node, int levelsup); -extern int locate_var_of_level(Node *node, int levelsup); -extern List *pull_var_clause(Node *node, int flags); -extern Node *flatten_join_alias_vars(PlannerInfo *root, Node *node); - -#endif /* VAR_H */ diff --git a/parser/include/parser/analyze.h b/parser/include/parser/analyze.h index 4ee20052..d6a467a5 100644 --- a/parser/include/parser/analyze.h +++ b/parser/include/parser/analyze.h @@ -4,7 +4,7 @@ * parse analysis for optimizable statements * * - * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/parser/analyze.h @@ -23,14 +23,14 @@ extern PGDLLIMPORT post_parse_analyze_hook_type post_parse_analyze_hook; extern Query *parse_analyze(RawStmt *parseTree, const char *sourceText, - Oid *paramTypes, int numParams, QueryEnvironment *queryEnv); + Oid *paramTypes, int numParams, QueryEnvironment *queryEnv); extern Query *parse_analyze_varparams(RawStmt *parseTree, const char *sourceText, - Oid **paramTypes, int *numParams); + Oid **paramTypes, int *numParams); extern Query *parse_sub_analyze(Node *parseTree, ParseState *parentParseState, - CommonTableExpr *parentCTE, - bool locked_from_parent, - bool resolve_unknowns); + CommonTableExpr *parentCTE, + bool locked_from_parent, + bool resolve_unknowns); extern Query *transformTopLevelStmt(ParseState *pstate, RawStmt *parseTree); extern Query *transformStmt(ParseState *pstate, Node *parseTree); @@ -40,10 +40,10 @@ extern bool analyze_requires_snapshot(RawStmt *parseTree); extern const char *LCS_asString(LockClauseStrength strength); extern void CheckSelectLocking(Query *qry, LockClauseStrength strength); extern void applyLockingClause(Query *qry, Index rtindex, - LockClauseStrength strength, - LockWaitPolicy waitPolicy, bool pushedDown); + LockClauseStrength strength, + LockWaitPolicy waitPolicy, bool pushedDown); extern List *BuildOnConflictExcludedTargetlist(Relation targetrel, - Index exclRelIndex); + Index exclRelIndex); #endif /* ANALYZE_H */ diff --git a/parser/include/parser/gram.h b/parser/include/parser/gram.h index b2ef63c5..7cae4f3b 100644 --- a/parser/include/parser/gram.h +++ b/parser/include/parser/gram.h @@ -40,919 +40,963 @@ know about them. */ enum yytokentype { IDENT = 258, - FCONST = 259, - SCONST = 260, - BCONST = 261, - XCONST = 262, - Op = 263, - ICONST = 264, - PARAM = 265, - TYPECAST = 266, - DOT_DOT = 267, - COLON_EQUALS = 268, - EQUALS_GREATER = 269, - LESS_EQUALS = 270, - GREATER_EQUALS = 271, - NOT_EQUALS = 272, - ABORT_P = 273, - ABSOLUTE_P = 274, - ACCESS = 275, - ACTION = 276, - ADD_P = 277, - ADMIN = 278, - AFTER = 279, - AGGREGATE = 280, - ALL = 281, - ALSO = 282, - ALTER = 283, - ALWAYS = 284, - ANALYSE = 285, - ANALYZE = 286, - AND = 287, - ANY = 288, - ARRAY = 289, - AS = 290, - ASC = 291, - ASSERTION = 292, - ASSIGNMENT = 293, - ASYMMETRIC = 294, - AT = 295, - ATTACH = 296, - ATTRIBUTE = 297, - AUTHORIZATION = 298, - BACKWARD = 299, - BEFORE = 300, - BEGIN_P = 301, - BETWEEN = 302, - BIGINT = 303, - BINARY = 304, - BIT = 305, - BOOLEAN_P = 306, - BOTH = 307, - BY = 308, - CACHE = 309, - CALLED = 310, - CASCADE = 311, - CASCADED = 312, - CASE = 313, - CAST = 314, - CATALOG_P = 315, - CHAIN = 316, - CHAR_P = 317, - CHARACTER = 318, - CHARACTERISTICS = 319, - CHECK = 320, - CHECKPOINT = 321, - CLASS = 322, - CLOSE = 323, - CLUSTER = 324, - COALESCE = 325, - COLLATE = 326, - COLLATION = 327, - COLUMN = 328, - COLUMNS = 329, - COMMENT = 330, - COMMENTS = 331, - COMMIT = 332, - COMMITTED = 333, - CONCURRENTLY = 334, - CONFIGURATION = 335, - CONFLICT = 336, - CONNECTION = 337, - CONSTRAINT = 338, - CONSTRAINTS = 339, - CONTENT_P = 340, - CONTINUE_P = 341, - CONVERSION_P = 342, - COPY = 343, - COST = 344, - CREATE = 345, - CROSS = 346, - CSV = 347, - CUBE = 348, - CURRENT_P = 349, - CURRENT_CATALOG = 350, - CURRENT_DATE = 351, - CURRENT_ROLE = 352, - CURRENT_SCHEMA = 353, - CURRENT_TIME = 354, - CURRENT_TIMESTAMP = 355, - CURRENT_USER = 356, - CURSOR = 357, - CYCLE = 358, - DATA_P = 359, - DATABASE = 360, - DAY_P = 361, - DEALLOCATE = 362, - DEC = 363, - DECIMAL_P = 364, - DECLARE = 365, - DEFAULT = 366, - DEFAULTS = 367, - DEFERRABLE = 368, - DEFERRED = 369, - DEFINER = 370, - DELETE_P = 371, - DELIMITER = 372, - DELIMITERS = 373, - DEPENDS = 374, - DESC = 375, - DETACH = 376, - DICTIONARY = 377, - DISABLE_P = 378, - DISCARD = 379, - DISTINCT = 380, - DO = 381, - DOCUMENT_P = 382, - DOMAIN_P = 383, - DOUBLE_P = 384, - DROP = 385, - EACH = 386, - ELSE = 387, - ENABLE_P = 388, - ENCODING = 389, - ENCRYPTED = 390, - END_P = 391, - ENUM_P = 392, - ESCAPE = 393, - EVENT = 394, - EXCEPT = 395, - EXCLUDE = 396, - EXCLUDING = 397, - EXCLUSIVE = 398, - EXECUTE = 399, - EXISTS = 400, - EXPLAIN = 401, - EXTENSION = 402, - EXTERNAL = 403, - EXTRACT = 404, - FALSE_P = 405, - FAMILY = 406, - FETCH = 407, - FILTER = 408, - FIRST_P = 409, - FLOAT_P = 410, - FOLLOWING = 411, - FOR = 412, - FORCE = 413, - FOREIGN = 414, - FORWARD = 415, - FREEZE = 416, - FROM = 417, - FULL = 418, - FUNCTION = 419, - FUNCTIONS = 420, - GENERATED = 421, - GLOBAL = 422, - GRANT = 423, - GRANTED = 424, - GREATEST = 425, - GROUP_P = 426, - GROUPING = 427, - HANDLER = 428, - HAVING = 429, - HEADER_P = 430, - HOLD = 431, - HOUR_P = 432, - IDENTITY_P = 433, - IF_P = 434, - ILIKE = 435, - IMMEDIATE = 436, - IMMUTABLE = 437, - IMPLICIT_P = 438, - IMPORT_P = 439, - IN_P = 440, - INCLUDING = 441, - INCREMENT = 442, - INDEX = 443, - INDEXES = 444, - INHERIT = 445, - INHERITS = 446, - INITIALLY = 447, - INLINE_P = 448, - INNER_P = 449, - INOUT = 450, - INPUT_P = 451, - INSENSITIVE = 452, - INSERT = 453, - INSTEAD = 454, - INT_P = 455, - INTEGER = 456, - INTERSECT = 457, - INTERVAL = 458, - INTO = 459, - INVOKER = 460, - IS = 461, - ISNULL = 462, - ISOLATION = 463, - JOIN = 464, - KEY = 465, - LABEL = 466, - LANGUAGE = 467, - LARGE_P = 468, - LAST_P = 469, - LATERAL_P = 470, - LEADING = 471, - LEAKPROOF = 472, - LEAST = 473, - LEFT = 474, - LEVEL = 475, - LIKE = 476, - LIMIT = 477, - LISTEN = 478, - LOAD = 479, - LOCAL = 480, - LOCALTIME = 481, - LOCALTIMESTAMP = 482, - LOCATION = 483, - LOCK_P = 484, - LOCKED = 485, - LOGGED = 486, - MAPPING = 487, - MATCH = 488, - MATERIALIZED = 489, - MAXVALUE = 490, - METHOD = 491, - MINUTE_P = 492, - MINVALUE = 493, - MODE = 494, - MONTH_P = 495, - MOVE = 496, - NAME_P = 497, - NAMES = 498, - NATIONAL = 499, - NATURAL = 500, - NCHAR = 501, - NEW = 502, - NEXT = 503, - NO = 504, - NONE = 505, - NOT = 506, - NOTHING = 507, - NOTIFY = 508, - NOTNULL = 509, - NOWAIT = 510, - NULL_P = 511, - NULLIF = 512, - NULLS_P = 513, - NUMERIC = 514, - OBJECT_P = 515, - OF = 516, - OFF = 517, - OFFSET = 518, - OIDS = 519, - OLD = 520, - ON = 521, - ONLY = 522, - OPERATOR = 523, - OPTION = 524, - OPTIONS = 525, - OR = 526, - ORDER = 527, - ORDINALITY = 528, - OUT_P = 529, - OUTER_P = 530, - OVER = 531, - OVERLAPS = 532, - OVERLAY = 533, - OVERRIDING = 534, - OWNED = 535, - OWNER = 536, - PARALLEL = 537, - PARSER = 538, - PARTIAL = 539, - PARTITION = 540, - PASSING = 541, - PASSWORD = 542, - PLACING = 543, - PLANS = 544, - POLICY = 545, - POSITION = 546, - PRECEDING = 547, - PRECISION = 548, - PRESERVE = 549, - PREPARE = 550, - PREPARED = 551, - PRIMARY = 552, - PRIOR = 553, - PRIVILEGES = 554, - PROCEDURAL = 555, - PROCEDURE = 556, - PROGRAM = 557, - PUBLICATION = 558, - QUOTE = 559, - RANGE = 560, - READ = 561, - REAL = 562, - REASSIGN = 563, - RECHECK = 564, - RECURSIVE = 565, - REF = 566, - REFERENCES = 567, - REFERENCING = 568, - REFRESH = 569, - REINDEX = 570, - RELATIVE_P = 571, - RELEASE = 572, - RENAME = 573, - REPEATABLE = 574, - REPLACE = 575, - REPLICA = 576, - RESET = 577, - RESTART = 578, - RESTRICT = 579, - RETURNING = 580, - RETURNS = 581, - REVOKE = 582, - RIGHT = 583, - ROLE = 584, - ROLLBACK = 585, - ROLLUP = 586, - ROW = 587, - ROWS = 588, - RULE = 589, - SAVEPOINT = 590, - SCHEMA = 591, - SCHEMAS = 592, - SCROLL = 593, - SEARCH = 594, - SECOND_P = 595, - SECURITY = 596, - SELECT = 597, - SEQUENCE = 598, - SEQUENCES = 599, - SERIALIZABLE = 600, - SERVER = 601, - SESSION = 602, - SESSION_USER = 603, - SET = 604, - SETS = 605, - SETOF = 606, - SHARE = 607, - SHOW = 608, - SIMILAR = 609, - SIMPLE = 610, - SKIP = 611, - SMALLINT = 612, - SNAPSHOT = 613, - SOME = 614, - SQL_P = 615, - STABLE = 616, - STANDALONE_P = 617, - START = 618, - STATEMENT = 619, - STATISTICS = 620, - STDIN = 621, - STDOUT = 622, - STORAGE = 623, - STRICT_P = 624, - STRIP_P = 625, - SUBSCRIPTION = 626, - SUBSTRING = 627, - SYMMETRIC = 628, - SYSID = 629, - SYSTEM_P = 630, - TABLE = 631, - TABLES = 632, - TABLESAMPLE = 633, - TABLESPACE = 634, - TEMP = 635, - TEMPLATE = 636, - TEMPORARY = 637, - TEXT_P = 638, - THEN = 639, - TIME = 640, - TIMESTAMP = 641, - TO = 642, - TRAILING = 643, - TRANSACTION = 644, - TRANSFORM = 645, - TREAT = 646, - TRIGGER = 647, - TRIM = 648, - TRUE_P = 649, - TRUNCATE = 650, - TRUSTED = 651, - TYPE_P = 652, - TYPES_P = 653, - UNBOUNDED = 654, - UNCOMMITTED = 655, - UNENCRYPTED = 656, - UNION = 657, - UNIQUE = 658, - UNKNOWN = 659, - UNLISTEN = 660, - UNLOGGED = 661, - UNTIL = 662, - UPDATE = 663, - USER = 664, - USING = 665, - VACUUM = 666, - VALID = 667, - VALIDATE = 668, - VALIDATOR = 669, - VALUE_P = 670, - VALUES = 671, - VARCHAR = 672, - VARIADIC = 673, - VARYING = 674, - VERBOSE = 675, - VERSION_P = 676, - VIEW = 677, - VIEWS = 678, - VOLATILE = 679, - WHEN = 680, - WHERE = 681, - WHITESPACE_P = 682, - WINDOW = 683, - WITH = 684, - WITHIN = 685, - WITHOUT = 686, - WORK = 687, - WRAPPER = 688, - WRITE = 689, - XML_P = 690, - XMLATTRIBUTES = 691, - XMLCONCAT = 692, - XMLELEMENT = 693, - XMLEXISTS = 694, - XMLFOREST = 695, - XMLNAMESPACES = 696, - XMLPARSE = 697, - XMLPI = 698, - XMLROOT = 699, - XMLSERIALIZE = 700, - XMLTABLE = 701, - YEAR_P = 702, - YES_P = 703, - ZONE = 704, - NOT_LA = 705, - NULLS_LA = 706, - WITH_LA = 707, - POSTFIXOP = 708, - UMINUS = 709 + UIDENT = 259, + FCONST = 260, + SCONST = 261, + USCONST = 262, + BCONST = 263, + XCONST = 264, + Op = 265, + ICONST = 266, + PARAM = 267, + TYPECAST = 268, + DOT_DOT = 269, + COLON_EQUALS = 270, + EQUALS_GREATER = 271, + LESS_EQUALS = 272, + GREATER_EQUALS = 273, + NOT_EQUALS = 274, + SQL_COMMENT = 275, + C_COMMENT = 276, + ABORT_P = 277, + ABSOLUTE_P = 278, + ACCESS = 279, + ACTION = 280, + ADD_P = 281, + ADMIN = 282, + AFTER = 283, + AGGREGATE = 284, + ALL = 285, + ALSO = 286, + ALTER = 287, + ALWAYS = 288, + ANALYSE = 289, + ANALYZE = 290, + AND = 291, + ANY = 292, + ARRAY = 293, + AS = 294, + ASC = 295, + ASSERTION = 296, + ASSIGNMENT = 297, + ASYMMETRIC = 298, + AT = 299, + ATTACH = 300, + ATTRIBUTE = 301, + AUTHORIZATION = 302, + BACKWARD = 303, + BEFORE = 304, + BEGIN_P = 305, + BETWEEN = 306, + BIGINT = 307, + BINARY = 308, + BIT = 309, + BOOLEAN_P = 310, + BOTH = 311, + BY = 312, + CACHE = 313, + CALL = 314, + CALLED = 315, + CASCADE = 316, + CASCADED = 317, + CASE = 318, + CAST = 319, + CATALOG_P = 320, + CHAIN = 321, + CHAR_P = 322, + CHARACTER = 323, + CHARACTERISTICS = 324, + CHECK = 325, + CHECKPOINT = 326, + CLASS = 327, + CLOSE = 328, + CLUSTER = 329, + COALESCE = 330, + COLLATE = 331, + COLLATION = 332, + COLUMN = 333, + COLUMNS = 334, + COMMENT = 335, + COMMENTS = 336, + COMMIT = 337, + COMMITTED = 338, + CONCURRENTLY = 339, + CONFIGURATION = 340, + CONFLICT = 341, + CONNECTION = 342, + CONSTRAINT = 343, + CONSTRAINTS = 344, + CONTENT_P = 345, + CONTINUE_P = 346, + CONVERSION_P = 347, + COPY = 348, + COST = 349, + CREATE = 350, + CROSS = 351, + CSV = 352, + CUBE = 353, + CURRENT_P = 354, + CURRENT_CATALOG = 355, + CURRENT_DATE = 356, + CURRENT_ROLE = 357, + CURRENT_SCHEMA = 358, + CURRENT_TIME = 359, + CURRENT_TIMESTAMP = 360, + CURRENT_USER = 361, + CURSOR = 362, + CYCLE = 363, + DATA_P = 364, + DATABASE = 365, + DAY_P = 366, + DEALLOCATE = 367, + DEC = 368, + DECIMAL_P = 369, + DECLARE = 370, + DEFAULT = 371, + DEFAULTS = 372, + DEFERRABLE = 373, + DEFERRED = 374, + DEFINER = 375, + DELETE_P = 376, + DELIMITER = 377, + DELIMITERS = 378, + DEPENDS = 379, + DESC = 380, + DETACH = 381, + DICTIONARY = 382, + DISABLE_P = 383, + DISCARD = 384, + DISTINCT = 385, + DO = 386, + DOCUMENT_P = 387, + DOMAIN_P = 388, + DOUBLE_P = 389, + DROP = 390, + EACH = 391, + ELSE = 392, + ENABLE_P = 393, + ENCODING = 394, + ENCRYPTED = 395, + END_P = 396, + ENUM_P = 397, + ESCAPE = 398, + EVENT = 399, + EXCEPT = 400, + EXCLUDE = 401, + EXCLUDING = 402, + EXCLUSIVE = 403, + EXECUTE = 404, + EXISTS = 405, + EXPLAIN = 406, + EXPRESSION = 407, + EXTENSION = 408, + EXTERNAL = 409, + EXTRACT = 410, + FALSE_P = 411, + FAMILY = 412, + FETCH = 413, + FILTER = 414, + FIRST_P = 415, + FLOAT_P = 416, + FOLLOWING = 417, + FOR = 418, + FORCE = 419, + FOREIGN = 420, + FORWARD = 421, + FREEZE = 422, + FROM = 423, + FULL = 424, + FUNCTION = 425, + FUNCTIONS = 426, + GENERATED = 427, + GLOBAL = 428, + GRANT = 429, + GRANTED = 430, + GREATEST = 431, + GROUP_P = 432, + GROUPING = 433, + GROUPS = 434, + HANDLER = 435, + HAVING = 436, + HEADER_P = 437, + HOLD = 438, + HOUR_P = 439, + IDENTITY_P = 440, + IF_P = 441, + ILIKE = 442, + IMMEDIATE = 443, + IMMUTABLE = 444, + IMPLICIT_P = 445, + IMPORT_P = 446, + IN_P = 447, + INCLUDE = 448, + INCLUDING = 449, + INCREMENT = 450, + INDEX = 451, + INDEXES = 452, + INHERIT = 453, + INHERITS = 454, + INITIALLY = 455, + INLINE_P = 456, + INNER_P = 457, + INOUT = 458, + INPUT_P = 459, + INSENSITIVE = 460, + INSERT = 461, + INSTEAD = 462, + INT_P = 463, + INTEGER = 464, + INTERSECT = 465, + INTERVAL = 466, + INTO = 467, + INVOKER = 468, + IS = 469, + ISNULL = 470, + ISOLATION = 471, + JOIN = 472, + KEY = 473, + LABEL = 474, + LANGUAGE = 475, + LARGE_P = 476, + LAST_P = 477, + LATERAL_P = 478, + LEADING = 479, + LEAKPROOF = 480, + LEAST = 481, + LEFT = 482, + LEVEL = 483, + LIKE = 484, + LIMIT = 485, + LISTEN = 486, + LOAD = 487, + LOCAL = 488, + LOCALTIME = 489, + LOCALTIMESTAMP = 490, + LOCATION = 491, + LOCK_P = 492, + LOCKED = 493, + LOGGED = 494, + MAPPING = 495, + MATCH = 496, + MATERIALIZED = 497, + MAXVALUE = 498, + METHOD = 499, + MINUTE_P = 500, + MINVALUE = 501, + MODE = 502, + MONTH_P = 503, + MOVE = 504, + NAME_P = 505, + NAMES = 506, + NATIONAL = 507, + NATURAL = 508, + NCHAR = 509, + NEW = 510, + NEXT = 511, + NFC = 512, + NFD = 513, + NFKC = 514, + NFKD = 515, + NO = 516, + NONE = 517, + NORMALIZE = 518, + NORMALIZED = 519, + NOT = 520, + NOTHING = 521, + NOTIFY = 522, + NOTNULL = 523, + NOWAIT = 524, + NULL_P = 525, + NULLIF = 526, + NULLS_P = 527, + NUMERIC = 528, + OBJECT_P = 529, + OF = 530, + OFF = 531, + OFFSET = 532, + OIDS = 533, + OLD = 534, + ON = 535, + ONLY = 536, + OPERATOR = 537, + OPTION = 538, + OPTIONS = 539, + OR = 540, + ORDER = 541, + ORDINALITY = 542, + OTHERS = 543, + OUT_P = 544, + OUTER_P = 545, + OVER = 546, + OVERLAPS = 547, + OVERLAY = 548, + OVERRIDING = 549, + OWNED = 550, + OWNER = 551, + PARALLEL = 552, + PARSER = 553, + PARTIAL = 554, + PARTITION = 555, + PASSING = 556, + PASSWORD = 557, + PLACING = 558, + PLANS = 559, + POLICY = 560, + POSITION = 561, + PRECEDING = 562, + PRECISION = 563, + PRESERVE = 564, + PREPARE = 565, + PREPARED = 566, + PRIMARY = 567, + PRIOR = 568, + PRIVILEGES = 569, + PROCEDURAL = 570, + PROCEDURE = 571, + PROCEDURES = 572, + PROGRAM = 573, + PUBLICATION = 574, + QUOTE = 575, + RANGE = 576, + READ = 577, + REAL = 578, + REASSIGN = 579, + RECHECK = 580, + RECURSIVE = 581, + REF = 582, + REFERENCES = 583, + REFERENCING = 584, + REFRESH = 585, + REINDEX = 586, + RELATIVE_P = 587, + RELEASE = 588, + RENAME = 589, + REPEATABLE = 590, + REPLACE = 591, + REPLICA = 592, + RESET = 593, + RESTART = 594, + RESTRICT = 595, + RETURNING = 596, + RETURNS = 597, + REVOKE = 598, + RIGHT = 599, + ROLE = 600, + ROLLBACK = 601, + ROLLUP = 602, + ROUTINE = 603, + ROUTINES = 604, + ROW = 605, + ROWS = 606, + RULE = 607, + SAVEPOINT = 608, + SCHEMA = 609, + SCHEMAS = 610, + SCROLL = 611, + SEARCH = 612, + SECOND_P = 613, + SECURITY = 614, + SELECT = 615, + SEQUENCE = 616, + SEQUENCES = 617, + SERIALIZABLE = 618, + SERVER = 619, + SESSION = 620, + SESSION_USER = 621, + SET = 622, + SETS = 623, + SETOF = 624, + SHARE = 625, + SHOW = 626, + SIMILAR = 627, + SIMPLE = 628, + SKIP = 629, + SMALLINT = 630, + SNAPSHOT = 631, + SOME = 632, + SQL_P = 633, + STABLE = 634, + STANDALONE_P = 635, + START = 636, + STATEMENT = 637, + STATISTICS = 638, + STDIN = 639, + STDOUT = 640, + STORAGE = 641, + STORED = 642, + STRICT_P = 643, + STRIP_P = 644, + SUBSCRIPTION = 645, + SUBSTRING = 646, + SUPPORT = 647, + SYMMETRIC = 648, + SYSID = 649, + SYSTEM_P = 650, + TABLE = 651, + TABLES = 652, + TABLESAMPLE = 653, + TABLESPACE = 654, + TEMP = 655, + TEMPLATE = 656, + TEMPORARY = 657, + TEXT_P = 658, + THEN = 659, + TIES = 660, + TIME = 661, + TIMESTAMP = 662, + TO = 663, + TRAILING = 664, + TRANSACTION = 665, + TRANSFORM = 666, + TREAT = 667, + TRIGGER = 668, + TRIM = 669, + TRUE_P = 670, + TRUNCATE = 671, + TRUSTED = 672, + TYPE_P = 673, + TYPES_P = 674, + UESCAPE = 675, + UNBOUNDED = 676, + UNCOMMITTED = 677, + UNENCRYPTED = 678, + UNION = 679, + UNIQUE = 680, + UNKNOWN = 681, + UNLISTEN = 682, + UNLOGGED = 683, + UNTIL = 684, + UPDATE = 685, + USER = 686, + USING = 687, + VACUUM = 688, + VALID = 689, + VALIDATE = 690, + VALIDATOR = 691, + VALUE_P = 692, + VALUES = 693, + VARCHAR = 694, + VARIADIC = 695, + VARYING = 696, + VERBOSE = 697, + VERSION_P = 698, + VIEW = 699, + VIEWS = 700, + VOLATILE = 701, + WHEN = 702, + WHERE = 703, + WHITESPACE_P = 704, + WINDOW = 705, + WITH = 706, + WITHIN = 707, + WITHOUT = 708, + WORK = 709, + WRAPPER = 710, + WRITE = 711, + XML_P = 712, + XMLATTRIBUTES = 713, + XMLCONCAT = 714, + XMLELEMENT = 715, + XMLEXISTS = 716, + XMLFOREST = 717, + XMLNAMESPACES = 718, + XMLPARSE = 719, + XMLPI = 720, + XMLROOT = 721, + XMLSERIALIZE = 722, + XMLTABLE = 723, + YEAR_P = 724, + YES_P = 725, + ZONE = 726, + NOT_LA = 727, + NULLS_LA = 728, + WITH_LA = 729, + POSTFIXOP = 730, + UMINUS = 731 }; #endif /* Tokens. */ #define IDENT 258 -#define FCONST 259 -#define SCONST 260 -#define BCONST 261 -#define XCONST 262 -#define Op 263 -#define ICONST 264 -#define PARAM 265 -#define TYPECAST 266 -#define DOT_DOT 267 -#define COLON_EQUALS 268 -#define EQUALS_GREATER 269 -#define LESS_EQUALS 270 -#define GREATER_EQUALS 271 -#define NOT_EQUALS 272 -#define ABORT_P 273 -#define ABSOLUTE_P 274 -#define ACCESS 275 -#define ACTION 276 -#define ADD_P 277 -#define ADMIN 278 -#define AFTER 279 -#define AGGREGATE 280 -#define ALL 281 -#define ALSO 282 -#define ALTER 283 -#define ALWAYS 284 -#define ANALYSE 285 -#define ANALYZE 286 -#define AND 287 -#define ANY 288 -#define ARRAY 289 -#define AS 290 -#define ASC 291 -#define ASSERTION 292 -#define ASSIGNMENT 293 -#define ASYMMETRIC 294 -#define AT 295 -#define ATTACH 296 -#define ATTRIBUTE 297 -#define AUTHORIZATION 298 -#define BACKWARD 299 -#define BEFORE 300 -#define BEGIN_P 301 -#define BETWEEN 302 -#define BIGINT 303 -#define BINARY 304 -#define BIT 305 -#define BOOLEAN_P 306 -#define BOTH 307 -#define BY 308 -#define CACHE 309 -#define CALLED 310 -#define CASCADE 311 -#define CASCADED 312 -#define CASE 313 -#define CAST 314 -#define CATALOG_P 315 -#define CHAIN 316 -#define CHAR_P 317 -#define CHARACTER 318 -#define CHARACTERISTICS 319 -#define CHECK 320 -#define CHECKPOINT 321 -#define CLASS 322 -#define CLOSE 323 -#define CLUSTER 324 -#define COALESCE 325 -#define COLLATE 326 -#define COLLATION 327 -#define COLUMN 328 -#define COLUMNS 329 -#define COMMENT 330 -#define COMMENTS 331 -#define COMMIT 332 -#define COMMITTED 333 -#define CONCURRENTLY 334 -#define CONFIGURATION 335 -#define CONFLICT 336 -#define CONNECTION 337 -#define CONSTRAINT 338 -#define CONSTRAINTS 339 -#define CONTENT_P 340 -#define CONTINUE_P 341 -#define CONVERSION_P 342 -#define COPY 343 -#define COST 344 -#define CREATE 345 -#define CROSS 346 -#define CSV 347 -#define CUBE 348 -#define CURRENT_P 349 -#define CURRENT_CATALOG 350 -#define CURRENT_DATE 351 -#define CURRENT_ROLE 352 -#define CURRENT_SCHEMA 353 -#define CURRENT_TIME 354 -#define CURRENT_TIMESTAMP 355 -#define CURRENT_USER 356 -#define CURSOR 357 -#define CYCLE 358 -#define DATA_P 359 -#define DATABASE 360 -#define DAY_P 361 -#define DEALLOCATE 362 -#define DEC 363 -#define DECIMAL_P 364 -#define DECLARE 365 -#define DEFAULT 366 -#define DEFAULTS 367 -#define DEFERRABLE 368 -#define DEFERRED 369 -#define DEFINER 370 -#define DELETE_P 371 -#define DELIMITER 372 -#define DELIMITERS 373 -#define DEPENDS 374 -#define DESC 375 -#define DETACH 376 -#define DICTIONARY 377 -#define DISABLE_P 378 -#define DISCARD 379 -#define DISTINCT 380 -#define DO 381 -#define DOCUMENT_P 382 -#define DOMAIN_P 383 -#define DOUBLE_P 384 -#define DROP 385 -#define EACH 386 -#define ELSE 387 -#define ENABLE_P 388 -#define ENCODING 389 -#define ENCRYPTED 390 -#define END_P 391 -#define ENUM_P 392 -#define ESCAPE 393 -#define EVENT 394 -#define EXCEPT 395 -#define EXCLUDE 396 -#define EXCLUDING 397 -#define EXCLUSIVE 398 -#define EXECUTE 399 -#define EXISTS 400 -#define EXPLAIN 401 -#define EXTENSION 402 -#define EXTERNAL 403 -#define EXTRACT 404 -#define FALSE_P 405 -#define FAMILY 406 -#define FETCH 407 -#define FILTER 408 -#define FIRST_P 409 -#define FLOAT_P 410 -#define FOLLOWING 411 -#define FOR 412 -#define FORCE 413 -#define FOREIGN 414 -#define FORWARD 415 -#define FREEZE 416 -#define FROM 417 -#define FULL 418 -#define FUNCTION 419 -#define FUNCTIONS 420 -#define GENERATED 421 -#define GLOBAL 422 -#define GRANT 423 -#define GRANTED 424 -#define GREATEST 425 -#define GROUP_P 426 -#define GROUPING 427 -#define HANDLER 428 -#define HAVING 429 -#define HEADER_P 430 -#define HOLD 431 -#define HOUR_P 432 -#define IDENTITY_P 433 -#define IF_P 434 -#define ILIKE 435 -#define IMMEDIATE 436 -#define IMMUTABLE 437 -#define IMPLICIT_P 438 -#define IMPORT_P 439 -#define IN_P 440 -#define INCLUDING 441 -#define INCREMENT 442 -#define INDEX 443 -#define INDEXES 444 -#define INHERIT 445 -#define INHERITS 446 -#define INITIALLY 447 -#define INLINE_P 448 -#define INNER_P 449 -#define INOUT 450 -#define INPUT_P 451 -#define INSENSITIVE 452 -#define INSERT 453 -#define INSTEAD 454 -#define INT_P 455 -#define INTEGER 456 -#define INTERSECT 457 -#define INTERVAL 458 -#define INTO 459 -#define INVOKER 460 -#define IS 461 -#define ISNULL 462 -#define ISOLATION 463 -#define JOIN 464 -#define KEY 465 -#define LABEL 466 -#define LANGUAGE 467 -#define LARGE_P 468 -#define LAST_P 469 -#define LATERAL_P 470 -#define LEADING 471 -#define LEAKPROOF 472 -#define LEAST 473 -#define LEFT 474 -#define LEVEL 475 -#define LIKE 476 -#define LIMIT 477 -#define LISTEN 478 -#define LOAD 479 -#define LOCAL 480 -#define LOCALTIME 481 -#define LOCALTIMESTAMP 482 -#define LOCATION 483 -#define LOCK_P 484 -#define LOCKED 485 -#define LOGGED 486 -#define MAPPING 487 -#define MATCH 488 -#define MATERIALIZED 489 -#define MAXVALUE 490 -#define METHOD 491 -#define MINUTE_P 492 -#define MINVALUE 493 -#define MODE 494 -#define MONTH_P 495 -#define MOVE 496 -#define NAME_P 497 -#define NAMES 498 -#define NATIONAL 499 -#define NATURAL 500 -#define NCHAR 501 -#define NEW 502 -#define NEXT 503 -#define NO 504 -#define NONE 505 -#define NOT 506 -#define NOTHING 507 -#define NOTIFY 508 -#define NOTNULL 509 -#define NOWAIT 510 -#define NULL_P 511 -#define NULLIF 512 -#define NULLS_P 513 -#define NUMERIC 514 -#define OBJECT_P 515 -#define OF 516 -#define OFF 517 -#define OFFSET 518 -#define OIDS 519 -#define OLD 520 -#define ON 521 -#define ONLY 522 -#define OPERATOR 523 -#define OPTION 524 -#define OPTIONS 525 -#define OR 526 -#define ORDER 527 -#define ORDINALITY 528 -#define OUT_P 529 -#define OUTER_P 530 -#define OVER 531 -#define OVERLAPS 532 -#define OVERLAY 533 -#define OVERRIDING 534 -#define OWNED 535 -#define OWNER 536 -#define PARALLEL 537 -#define PARSER 538 -#define PARTIAL 539 -#define PARTITION 540 -#define PASSING 541 -#define PASSWORD 542 -#define PLACING 543 -#define PLANS 544 -#define POLICY 545 -#define POSITION 546 -#define PRECEDING 547 -#define PRECISION 548 -#define PRESERVE 549 -#define PREPARE 550 -#define PREPARED 551 -#define PRIMARY 552 -#define PRIOR 553 -#define PRIVILEGES 554 -#define PROCEDURAL 555 -#define PROCEDURE 556 -#define PROGRAM 557 -#define PUBLICATION 558 -#define QUOTE 559 -#define RANGE 560 -#define READ 561 -#define REAL 562 -#define REASSIGN 563 -#define RECHECK 564 -#define RECURSIVE 565 -#define REF 566 -#define REFERENCES 567 -#define REFERENCING 568 -#define REFRESH 569 -#define REINDEX 570 -#define RELATIVE_P 571 -#define RELEASE 572 -#define RENAME 573 -#define REPEATABLE 574 -#define REPLACE 575 -#define REPLICA 576 -#define RESET 577 -#define RESTART 578 -#define RESTRICT 579 -#define RETURNING 580 -#define RETURNS 581 -#define REVOKE 582 -#define RIGHT 583 -#define ROLE 584 -#define ROLLBACK 585 -#define ROLLUP 586 -#define ROW 587 -#define ROWS 588 -#define RULE 589 -#define SAVEPOINT 590 -#define SCHEMA 591 -#define SCHEMAS 592 -#define SCROLL 593 -#define SEARCH 594 -#define SECOND_P 595 -#define SECURITY 596 -#define SELECT 597 -#define SEQUENCE 598 -#define SEQUENCES 599 -#define SERIALIZABLE 600 -#define SERVER 601 -#define SESSION 602 -#define SESSION_USER 603 -#define SET 604 -#define SETS 605 -#define SETOF 606 -#define SHARE 607 -#define SHOW 608 -#define SIMILAR 609 -#define SIMPLE 610 -#define SKIP 611 -#define SMALLINT 612 -#define SNAPSHOT 613 -#define SOME 614 -#define SQL_P 615 -#define STABLE 616 -#define STANDALONE_P 617 -#define START 618 -#define STATEMENT 619 -#define STATISTICS 620 -#define STDIN 621 -#define STDOUT 622 -#define STORAGE 623 -#define STRICT_P 624 -#define STRIP_P 625 -#define SUBSCRIPTION 626 -#define SUBSTRING 627 -#define SYMMETRIC 628 -#define SYSID 629 -#define SYSTEM_P 630 -#define TABLE 631 -#define TABLES 632 -#define TABLESAMPLE 633 -#define TABLESPACE 634 -#define TEMP 635 -#define TEMPLATE 636 -#define TEMPORARY 637 -#define TEXT_P 638 -#define THEN 639 -#define TIME 640 -#define TIMESTAMP 641 -#define TO 642 -#define TRAILING 643 -#define TRANSACTION 644 -#define TRANSFORM 645 -#define TREAT 646 -#define TRIGGER 647 -#define TRIM 648 -#define TRUE_P 649 -#define TRUNCATE 650 -#define TRUSTED 651 -#define TYPE_P 652 -#define TYPES_P 653 -#define UNBOUNDED 654 -#define UNCOMMITTED 655 -#define UNENCRYPTED 656 -#define UNION 657 -#define UNIQUE 658 -#define UNKNOWN 659 -#define UNLISTEN 660 -#define UNLOGGED 661 -#define UNTIL 662 -#define UPDATE 663 -#define USER 664 -#define USING 665 -#define VACUUM 666 -#define VALID 667 -#define VALIDATE 668 -#define VALIDATOR 669 -#define VALUE_P 670 -#define VALUES 671 -#define VARCHAR 672 -#define VARIADIC 673 -#define VARYING 674 -#define VERBOSE 675 -#define VERSION_P 676 -#define VIEW 677 -#define VIEWS 678 -#define VOLATILE 679 -#define WHEN 680 -#define WHERE 681 -#define WHITESPACE_P 682 -#define WINDOW 683 -#define WITH 684 -#define WITHIN 685 -#define WITHOUT 686 -#define WORK 687 -#define WRAPPER 688 -#define WRITE 689 -#define XML_P 690 -#define XMLATTRIBUTES 691 -#define XMLCONCAT 692 -#define XMLELEMENT 693 -#define XMLEXISTS 694 -#define XMLFOREST 695 -#define XMLNAMESPACES 696 -#define XMLPARSE 697 -#define XMLPI 698 -#define XMLROOT 699 -#define XMLSERIALIZE 700 -#define XMLTABLE 701 -#define YEAR_P 702 -#define YES_P 703 -#define ZONE 704 -#define NOT_LA 705 -#define NULLS_LA 706 -#define WITH_LA 707 -#define POSTFIXOP 708 -#define UMINUS 709 +#define UIDENT 259 +#define FCONST 260 +#define SCONST 261 +#define USCONST 262 +#define BCONST 263 +#define XCONST 264 +#define Op 265 +#define ICONST 266 +#define PARAM 267 +#define TYPECAST 268 +#define DOT_DOT 269 +#define COLON_EQUALS 270 +#define EQUALS_GREATER 271 +#define LESS_EQUALS 272 +#define GREATER_EQUALS 273 +#define NOT_EQUALS 274 +#define SQL_COMMENT 275 +#define C_COMMENT 276 +#define ABORT_P 277 +#define ABSOLUTE_P 278 +#define ACCESS 279 +#define ACTION 280 +#define ADD_P 281 +#define ADMIN 282 +#define AFTER 283 +#define AGGREGATE 284 +#define ALL 285 +#define ALSO 286 +#define ALTER 287 +#define ALWAYS 288 +#define ANALYSE 289 +#define ANALYZE 290 +#define AND 291 +#define ANY 292 +#define ARRAY 293 +#define AS 294 +#define ASC 295 +#define ASSERTION 296 +#define ASSIGNMENT 297 +#define ASYMMETRIC 298 +#define AT 299 +#define ATTACH 300 +#define ATTRIBUTE 301 +#define AUTHORIZATION 302 +#define BACKWARD 303 +#define BEFORE 304 +#define BEGIN_P 305 +#define BETWEEN 306 +#define BIGINT 307 +#define BINARY 308 +#define BIT 309 +#define BOOLEAN_P 310 +#define BOTH 311 +#define BY 312 +#define CACHE 313 +#define CALL 314 +#define CALLED 315 +#define CASCADE 316 +#define CASCADED 317 +#define CASE 318 +#define CAST 319 +#define CATALOG_P 320 +#define CHAIN 321 +#define CHAR_P 322 +#define CHARACTER 323 +#define CHARACTERISTICS 324 +#define CHECK 325 +#define CHECKPOINT 326 +#define CLASS 327 +#define CLOSE 328 +#define CLUSTER 329 +#define COALESCE 330 +#define COLLATE 331 +#define COLLATION 332 +#define COLUMN 333 +#define COLUMNS 334 +#define COMMENT 335 +#define COMMENTS 336 +#define COMMIT 337 +#define COMMITTED 338 +#define CONCURRENTLY 339 +#define CONFIGURATION 340 +#define CONFLICT 341 +#define CONNECTION 342 +#define CONSTRAINT 343 +#define CONSTRAINTS 344 +#define CONTENT_P 345 +#define CONTINUE_P 346 +#define CONVERSION_P 347 +#define COPY 348 +#define COST 349 +#define CREATE 350 +#define CROSS 351 +#define CSV 352 +#define CUBE 353 +#define CURRENT_P 354 +#define CURRENT_CATALOG 355 +#define CURRENT_DATE 356 +#define CURRENT_ROLE 357 +#define CURRENT_SCHEMA 358 +#define CURRENT_TIME 359 +#define CURRENT_TIMESTAMP 360 +#define CURRENT_USER 361 +#define CURSOR 362 +#define CYCLE 363 +#define DATA_P 364 +#define DATABASE 365 +#define DAY_P 366 +#define DEALLOCATE 367 +#define DEC 368 +#define DECIMAL_P 369 +#define DECLARE 370 +#define DEFAULT 371 +#define DEFAULTS 372 +#define DEFERRABLE 373 +#define DEFERRED 374 +#define DEFINER 375 +#define DELETE_P 376 +#define DELIMITER 377 +#define DELIMITERS 378 +#define DEPENDS 379 +#define DESC 380 +#define DETACH 381 +#define DICTIONARY 382 +#define DISABLE_P 383 +#define DISCARD 384 +#define DISTINCT 385 +#define DO 386 +#define DOCUMENT_P 387 +#define DOMAIN_P 388 +#define DOUBLE_P 389 +#define DROP 390 +#define EACH 391 +#define ELSE 392 +#define ENABLE_P 393 +#define ENCODING 394 +#define ENCRYPTED 395 +#define END_P 396 +#define ENUM_P 397 +#define ESCAPE 398 +#define EVENT 399 +#define EXCEPT 400 +#define EXCLUDE 401 +#define EXCLUDING 402 +#define EXCLUSIVE 403 +#define EXECUTE 404 +#define EXISTS 405 +#define EXPLAIN 406 +#define EXPRESSION 407 +#define EXTENSION 408 +#define EXTERNAL 409 +#define EXTRACT 410 +#define FALSE_P 411 +#define FAMILY 412 +#define FETCH 413 +#define FILTER 414 +#define FIRST_P 415 +#define FLOAT_P 416 +#define FOLLOWING 417 +#define FOR 418 +#define FORCE 419 +#define FOREIGN 420 +#define FORWARD 421 +#define FREEZE 422 +#define FROM 423 +#define FULL 424 +#define FUNCTION 425 +#define FUNCTIONS 426 +#define GENERATED 427 +#define GLOBAL 428 +#define GRANT 429 +#define GRANTED 430 +#define GREATEST 431 +#define GROUP_P 432 +#define GROUPING 433 +#define GROUPS 434 +#define HANDLER 435 +#define HAVING 436 +#define HEADER_P 437 +#define HOLD 438 +#define HOUR_P 439 +#define IDENTITY_P 440 +#define IF_P 441 +#define ILIKE 442 +#define IMMEDIATE 443 +#define IMMUTABLE 444 +#define IMPLICIT_P 445 +#define IMPORT_P 446 +#define IN_P 447 +#define INCLUDE 448 +#define INCLUDING 449 +#define INCREMENT 450 +#define INDEX 451 +#define INDEXES 452 +#define INHERIT 453 +#define INHERITS 454 +#define INITIALLY 455 +#define INLINE_P 456 +#define INNER_P 457 +#define INOUT 458 +#define INPUT_P 459 +#define INSENSITIVE 460 +#define INSERT 461 +#define INSTEAD 462 +#define INT_P 463 +#define INTEGER 464 +#define INTERSECT 465 +#define INTERVAL 466 +#define INTO 467 +#define INVOKER 468 +#define IS 469 +#define ISNULL 470 +#define ISOLATION 471 +#define JOIN 472 +#define KEY 473 +#define LABEL 474 +#define LANGUAGE 475 +#define LARGE_P 476 +#define LAST_P 477 +#define LATERAL_P 478 +#define LEADING 479 +#define LEAKPROOF 480 +#define LEAST 481 +#define LEFT 482 +#define LEVEL 483 +#define LIKE 484 +#define LIMIT 485 +#define LISTEN 486 +#define LOAD 487 +#define LOCAL 488 +#define LOCALTIME 489 +#define LOCALTIMESTAMP 490 +#define LOCATION 491 +#define LOCK_P 492 +#define LOCKED 493 +#define LOGGED 494 +#define MAPPING 495 +#define MATCH 496 +#define MATERIALIZED 497 +#define MAXVALUE 498 +#define METHOD 499 +#define MINUTE_P 500 +#define MINVALUE 501 +#define MODE 502 +#define MONTH_P 503 +#define MOVE 504 +#define NAME_P 505 +#define NAMES 506 +#define NATIONAL 507 +#define NATURAL 508 +#define NCHAR 509 +#define NEW 510 +#define NEXT 511 +#define NFC 512 +#define NFD 513 +#define NFKC 514 +#define NFKD 515 +#define NO 516 +#define NONE 517 +#define NORMALIZE 518 +#define NORMALIZED 519 +#define NOT 520 +#define NOTHING 521 +#define NOTIFY 522 +#define NOTNULL 523 +#define NOWAIT 524 +#define NULL_P 525 +#define NULLIF 526 +#define NULLS_P 527 +#define NUMERIC 528 +#define OBJECT_P 529 +#define OF 530 +#define OFF 531 +#define OFFSET 532 +#define OIDS 533 +#define OLD 534 +#define ON 535 +#define ONLY 536 +#define OPERATOR 537 +#define OPTION 538 +#define OPTIONS 539 +#define OR 540 +#define ORDER 541 +#define ORDINALITY 542 +#define OTHERS 543 +#define OUT_P 544 +#define OUTER_P 545 +#define OVER 546 +#define OVERLAPS 547 +#define OVERLAY 548 +#define OVERRIDING 549 +#define OWNED 550 +#define OWNER 551 +#define PARALLEL 552 +#define PARSER 553 +#define PARTIAL 554 +#define PARTITION 555 +#define PASSING 556 +#define PASSWORD 557 +#define PLACING 558 +#define PLANS 559 +#define POLICY 560 +#define POSITION 561 +#define PRECEDING 562 +#define PRECISION 563 +#define PRESERVE 564 +#define PREPARE 565 +#define PREPARED 566 +#define PRIMARY 567 +#define PRIOR 568 +#define PRIVILEGES 569 +#define PROCEDURAL 570 +#define PROCEDURE 571 +#define PROCEDURES 572 +#define PROGRAM 573 +#define PUBLICATION 574 +#define QUOTE 575 +#define RANGE 576 +#define READ 577 +#define REAL 578 +#define REASSIGN 579 +#define RECHECK 580 +#define RECURSIVE 581 +#define REF 582 +#define REFERENCES 583 +#define REFERENCING 584 +#define REFRESH 585 +#define REINDEX 586 +#define RELATIVE_P 587 +#define RELEASE 588 +#define RENAME 589 +#define REPEATABLE 590 +#define REPLACE 591 +#define REPLICA 592 +#define RESET 593 +#define RESTART 594 +#define RESTRICT 595 +#define RETURNING 596 +#define RETURNS 597 +#define REVOKE 598 +#define RIGHT 599 +#define ROLE 600 +#define ROLLBACK 601 +#define ROLLUP 602 +#define ROUTINE 603 +#define ROUTINES 604 +#define ROW 605 +#define ROWS 606 +#define RULE 607 +#define SAVEPOINT 608 +#define SCHEMA 609 +#define SCHEMAS 610 +#define SCROLL 611 +#define SEARCH 612 +#define SECOND_P 613 +#define SECURITY 614 +#define SELECT 615 +#define SEQUENCE 616 +#define SEQUENCES 617 +#define SERIALIZABLE 618 +#define SERVER 619 +#define SESSION 620 +#define SESSION_USER 621 +#define SET 622 +#define SETS 623 +#define SETOF 624 +#define SHARE 625 +#define SHOW 626 +#define SIMILAR 627 +#define SIMPLE 628 +#define SKIP 629 +#define SMALLINT 630 +#define SNAPSHOT 631 +#define SOME 632 +#define SQL_P 633 +#define STABLE 634 +#define STANDALONE_P 635 +#define START 636 +#define STATEMENT 637 +#define STATISTICS 638 +#define STDIN 639 +#define STDOUT 640 +#define STORAGE 641 +#define STORED 642 +#define STRICT_P 643 +#define STRIP_P 644 +#define SUBSCRIPTION 645 +#define SUBSTRING 646 +#define SUPPORT 647 +#define SYMMETRIC 648 +#define SYSID 649 +#define SYSTEM_P 650 +#define TABLE 651 +#define TABLES 652 +#define TABLESAMPLE 653 +#define TABLESPACE 654 +#define TEMP 655 +#define TEMPLATE 656 +#define TEMPORARY 657 +#define TEXT_P 658 +#define THEN 659 +#define TIES 660 +#define TIME 661 +#define TIMESTAMP 662 +#define TO 663 +#define TRAILING 664 +#define TRANSACTION 665 +#define TRANSFORM 666 +#define TREAT 667 +#define TRIGGER 668 +#define TRIM 669 +#define TRUE_P 670 +#define TRUNCATE 671 +#define TRUSTED 672 +#define TYPE_P 673 +#define TYPES_P 674 +#define UESCAPE 675 +#define UNBOUNDED 676 +#define UNCOMMITTED 677 +#define UNENCRYPTED 678 +#define UNION 679 +#define UNIQUE 680 +#define UNKNOWN 681 +#define UNLISTEN 682 +#define UNLOGGED 683 +#define UNTIL 684 +#define UPDATE 685 +#define USER 686 +#define USING 687 +#define VACUUM 688 +#define VALID 689 +#define VALIDATE 690 +#define VALIDATOR 691 +#define VALUE_P 692 +#define VALUES 693 +#define VARCHAR 694 +#define VARIADIC 695 +#define VARYING 696 +#define VERBOSE 697 +#define VERSION_P 698 +#define VIEW 699 +#define VIEWS 700 +#define VOLATILE 701 +#define WHEN 702 +#define WHERE 703 +#define WHITESPACE_P 704 +#define WINDOW 705 +#define WITH 706 +#define WITHIN 707 +#define WITHOUT 708 +#define WORK 709 +#define WRAPPER 710 +#define WRITE 711 +#define XML_P 712 +#define XMLATTRIBUTES 713 +#define XMLCONCAT 714 +#define XMLELEMENT 715 +#define XMLEXISTS 716 +#define XMLFOREST 717 +#define XMLNAMESPACES 718 +#define XMLPARSE 719 +#define XMLPI 720 +#define XMLROOT 721 +#define XMLSERIALIZE 722 +#define XMLTABLE 723 +#define YEAR_P 724 +#define YES_P 725 +#define ZONE 726 +#define NOT_LA 727 +#define NULLS_LA 728 +#define WITH_LA 729 +#define POSTFIXOP 730 +#define UMINUS 731 #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED typedef union YYSTYPE -#line 205 "gram.y" +#line 214 "gram.y" { core_YYSTYPE core_yystype; /* these fields must match core_YYSTYPE: */ @@ -995,9 +1039,10 @@ typedef union YYSTYPE PartitionSpec *partspec; PartitionBoundSpec *partboundspec; RoleSpec *rolespec; + struct SelectLimit *selectlimit; } /* Line 1529 of yacc.c. */ -#line 1001 "gram.h" +#line 1046 "gram.h" YYSTYPE; # define yystype YYSTYPE /* obsolescent; will be withdrawn */ # define YYSTYPE_IS_DECLARED 1 diff --git a/parser/include/parser/gramparse.h b/parser/include/parser/gramparse.h index b6b67fb9..7c7be136 100644 --- a/parser/include/parser/gramparse.h +++ b/parser/include/parser/gramparse.h @@ -8,7 +8,7 @@ * Definitions that are needed outside the core parser should be in parser.h. * * - * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/parser/gramparse.h @@ -65,8 +65,8 @@ typedef struct base_yy_extra_type /* from parser.c */ -extern int base_yylex(YYSTYPE *lvalp, YYLTYPE *llocp, - core_yyscan_t yyscanner); +extern int base_yylex(YYSTYPE *lvalp, YYLTYPE *llocp, + core_yyscan_t yyscanner); /* from gram.y */ extern void parser_init(base_yy_extra_type *yyext); diff --git a/parser/include/parser/kwlist.h b/parser/include/parser/kwlist.h index f50e45e8..08f22ce2 100644 --- a/parser/include/parser/kwlist.h +++ b/parser/include/parser/kwlist.h @@ -2,12 +2,12 @@ * * kwlist.h * - * The keyword list is kept in its own source file for possible use by + * The keyword lists are kept in their own source files for use by * automatic tools. The exact representation of a keyword is determined * by the PG_KEYWORD macro, which is not defined in this file; it can * be defined by the caller for special purposes. * - * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * IDENTIFICATION @@ -21,8 +21,7 @@ /* * List of keyword (name, token-value, category) entries. * - * !!WARNING!!: This list must be sorted by ASCII name, because binary - * search is used to locate entries. + * Note: gen_keywordlist.pl requires the entries to appear in ASCII order. */ /* name, value, category */ @@ -63,6 +62,7 @@ PG_KEYWORD("boolean", BOOLEAN_P, COL_NAME_KEYWORD) PG_KEYWORD("both", BOTH, RESERVED_KEYWORD) PG_KEYWORD("by", BY, UNRESERVED_KEYWORD) PG_KEYWORD("cache", CACHE, UNRESERVED_KEYWORD) +PG_KEYWORD("call", CALL, UNRESERVED_KEYWORD) PG_KEYWORD("called", CALLED, UNRESERVED_KEYWORD) PG_KEYWORD("cascade", CASCADE, UNRESERVED_KEYWORD) PG_KEYWORD("cascaded", CASCADED, UNRESERVED_KEYWORD) @@ -155,6 +155,7 @@ PG_KEYWORD("exclusive", EXCLUSIVE, UNRESERVED_KEYWORD) PG_KEYWORD("execute", EXECUTE, UNRESERVED_KEYWORD) PG_KEYWORD("exists", EXISTS, COL_NAME_KEYWORD) PG_KEYWORD("explain", EXPLAIN, UNRESERVED_KEYWORD) +PG_KEYWORD("expression", EXPRESSION, UNRESERVED_KEYWORD) PG_KEYWORD("extension", EXTENSION, UNRESERVED_KEYWORD) PG_KEYWORD("external", EXTERNAL, UNRESERVED_KEYWORD) PG_KEYWORD("extract", EXTRACT, COL_NAME_KEYWORD) @@ -181,6 +182,7 @@ PG_KEYWORD("granted", GRANTED, UNRESERVED_KEYWORD) PG_KEYWORD("greatest", GREATEST, COL_NAME_KEYWORD) PG_KEYWORD("group", GROUP_P, RESERVED_KEYWORD) PG_KEYWORD("grouping", GROUPING, COL_NAME_KEYWORD) +PG_KEYWORD("groups", GROUPS, UNRESERVED_KEYWORD) PG_KEYWORD("handler", HANDLER, UNRESERVED_KEYWORD) PG_KEYWORD("having", HAVING, RESERVED_KEYWORD) PG_KEYWORD("header", HEADER_P, UNRESERVED_KEYWORD) @@ -194,6 +196,7 @@ PG_KEYWORD("immutable", IMMUTABLE, UNRESERVED_KEYWORD) PG_KEYWORD("implicit", IMPLICIT_P, UNRESERVED_KEYWORD) PG_KEYWORD("import", IMPORT_P, UNRESERVED_KEYWORD) PG_KEYWORD("in", IN_P, RESERVED_KEYWORD) +PG_KEYWORD("include", INCLUDE, UNRESERVED_KEYWORD) PG_KEYWORD("including", INCLUDING, UNRESERVED_KEYWORD) PG_KEYWORD("increment", INCREMENT, UNRESERVED_KEYWORD) PG_KEYWORD("index", INDEX, UNRESERVED_KEYWORD) @@ -257,8 +260,14 @@ PG_KEYWORD("natural", NATURAL, TYPE_FUNC_NAME_KEYWORD) PG_KEYWORD("nchar", NCHAR, COL_NAME_KEYWORD) PG_KEYWORD("new", NEW, UNRESERVED_KEYWORD) PG_KEYWORD("next", NEXT, UNRESERVED_KEYWORD) +PG_KEYWORD("nfc", NFC, UNRESERVED_KEYWORD) +PG_KEYWORD("nfd", NFD, UNRESERVED_KEYWORD) +PG_KEYWORD("nfkc", NFKC, UNRESERVED_KEYWORD) +PG_KEYWORD("nfkd", NFKD, UNRESERVED_KEYWORD) PG_KEYWORD("no", NO, UNRESERVED_KEYWORD) PG_KEYWORD("none", NONE, COL_NAME_KEYWORD) +PG_KEYWORD("normalize", NORMALIZE, COL_NAME_KEYWORD) +PG_KEYWORD("normalized", NORMALIZED, UNRESERVED_KEYWORD) PG_KEYWORD("not", NOT, RESERVED_KEYWORD) PG_KEYWORD("nothing", NOTHING, UNRESERVED_KEYWORD) PG_KEYWORD("notify", NOTIFY, UNRESERVED_KEYWORD) @@ -282,6 +291,7 @@ PG_KEYWORD("options", OPTIONS, UNRESERVED_KEYWORD) PG_KEYWORD("or", OR, RESERVED_KEYWORD) PG_KEYWORD("order", ORDER, RESERVED_KEYWORD) PG_KEYWORD("ordinality", ORDINALITY, UNRESERVED_KEYWORD) +PG_KEYWORD("others", OTHERS, UNRESERVED_KEYWORD) PG_KEYWORD("out", OUT_P, COL_NAME_KEYWORD) PG_KEYWORD("outer", OUTER_P, TYPE_FUNC_NAME_KEYWORD) PG_KEYWORD("over", OVER, UNRESERVED_KEYWORD) @@ -310,6 +320,7 @@ PG_KEYWORD("prior", PRIOR, UNRESERVED_KEYWORD) PG_KEYWORD("privileges", PRIVILEGES, UNRESERVED_KEYWORD) PG_KEYWORD("procedural", PROCEDURAL, UNRESERVED_KEYWORD) PG_KEYWORD("procedure", PROCEDURE, UNRESERVED_KEYWORD) +PG_KEYWORD("procedures", PROCEDURES, UNRESERVED_KEYWORD) PG_KEYWORD("program", PROGRAM, UNRESERVED_KEYWORD) PG_KEYWORD("publication", PUBLICATION, UNRESERVED_KEYWORD) PG_KEYWORD("quote", QUOTE, UNRESERVED_KEYWORD) @@ -340,6 +351,8 @@ PG_KEYWORD("right", RIGHT, TYPE_FUNC_NAME_KEYWORD) PG_KEYWORD("role", ROLE, UNRESERVED_KEYWORD) PG_KEYWORD("rollback", ROLLBACK, UNRESERVED_KEYWORD) PG_KEYWORD("rollup", ROLLUP, UNRESERVED_KEYWORD) +PG_KEYWORD("routine", ROUTINE, UNRESERVED_KEYWORD) +PG_KEYWORD("routines", ROUTINES, UNRESERVED_KEYWORD) PG_KEYWORD("row", ROW, COL_NAME_KEYWORD) PG_KEYWORD("rows", ROWS, UNRESERVED_KEYWORD) PG_KEYWORD("rule", RULE, UNRESERVED_KEYWORD) @@ -377,10 +390,12 @@ PG_KEYWORD("statistics", STATISTICS, UNRESERVED_KEYWORD) PG_KEYWORD("stdin", STDIN, UNRESERVED_KEYWORD) PG_KEYWORD("stdout", STDOUT, UNRESERVED_KEYWORD) PG_KEYWORD("storage", STORAGE, UNRESERVED_KEYWORD) +PG_KEYWORD("stored", STORED, UNRESERVED_KEYWORD) PG_KEYWORD("strict", STRICT_P, UNRESERVED_KEYWORD) PG_KEYWORD("strip", STRIP_P, UNRESERVED_KEYWORD) PG_KEYWORD("subscription", SUBSCRIPTION, UNRESERVED_KEYWORD) PG_KEYWORD("substring", SUBSTRING, COL_NAME_KEYWORD) +PG_KEYWORD("support", SUPPORT, UNRESERVED_KEYWORD) PG_KEYWORD("symmetric", SYMMETRIC, RESERVED_KEYWORD) PG_KEYWORD("sysid", SYSID, UNRESERVED_KEYWORD) PG_KEYWORD("system", SYSTEM_P, UNRESERVED_KEYWORD) @@ -393,6 +408,7 @@ PG_KEYWORD("template", TEMPLATE, UNRESERVED_KEYWORD) PG_KEYWORD("temporary", TEMPORARY, UNRESERVED_KEYWORD) PG_KEYWORD("text", TEXT_P, UNRESERVED_KEYWORD) PG_KEYWORD("then", THEN, RESERVED_KEYWORD) +PG_KEYWORD("ties", TIES, UNRESERVED_KEYWORD) PG_KEYWORD("time", TIME, COL_NAME_KEYWORD) PG_KEYWORD("timestamp", TIMESTAMP, COL_NAME_KEYWORD) PG_KEYWORD("to", TO, RESERVED_KEYWORD) @@ -407,6 +423,7 @@ PG_KEYWORD("truncate", TRUNCATE, UNRESERVED_KEYWORD) PG_KEYWORD("trusted", TRUSTED, UNRESERVED_KEYWORD) PG_KEYWORD("type", TYPE_P, UNRESERVED_KEYWORD) PG_KEYWORD("types", TYPES_P, UNRESERVED_KEYWORD) +PG_KEYWORD("uescape", UESCAPE, UNRESERVED_KEYWORD) PG_KEYWORD("unbounded", UNBOUNDED, UNRESERVED_KEYWORD) PG_KEYWORD("uncommitted", UNCOMMITTED, UNRESERVED_KEYWORD) PG_KEYWORD("unencrypted", UNENCRYPTED, UNRESERVED_KEYWORD) diff --git a/parser/include/parser/parse_agg.h b/parser/include/parser/parse_agg.h index 6947a018..1a364d5c 100644 --- a/parser/include/parser/parse_agg.h +++ b/parser/include/parser/parse_agg.h @@ -3,7 +3,7 @@ * parse_agg.h * handle aggregates and window functions in parser * - * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/parser/parse_agg.h @@ -16,13 +16,13 @@ #include "parser/parse_node.h" extern void transformAggregateCall(ParseState *pstate, Aggref *agg, - List *args, List *aggorder, - bool agg_distinct); + List *args, List *aggorder, + bool agg_distinct); extern Node *transformGroupingFunc(ParseState *pstate, GroupingFunc *g); extern void transformWindowFuncCall(ParseState *pstate, WindowFunc *wfunc, - WindowDef *windef); + WindowDef *windef); extern void parseCheckAggregates(ParseState *pstate, Query *qry); @@ -30,39 +30,39 @@ extern List *expand_grouping_sets(List *groupingSets, int limit); extern int get_aggregate_argtypes(Aggref *aggref, Oid *inputTypes); -extern Oid resolve_aggregate_transtype(Oid aggfuncid, - Oid aggtranstype, - Oid *inputTypes, - int numArguments); +extern Oid resolve_aggregate_transtype(Oid aggfuncid, + Oid aggtranstype, + Oid *inputTypes, + int numArguments); extern void build_aggregate_transfn_expr(Oid *agg_input_types, - int agg_num_inputs, - int agg_num_direct_inputs, - bool agg_variadic, - Oid agg_state_type, - Oid agg_input_collation, - Oid transfn_oid, - Oid invtransfn_oid, - Expr **transfnexpr, - Expr **invtransfnexpr); + int agg_num_inputs, + int agg_num_direct_inputs, + bool agg_variadic, + Oid agg_state_type, + Oid agg_input_collation, + Oid transfn_oid, + Oid invtransfn_oid, + Expr **transfnexpr, + Expr **invtransfnexpr); extern void build_aggregate_combinefn_expr(Oid agg_state_type, - Oid agg_input_collation, - Oid combinefn_oid, - Expr **combinefnexpr); + Oid agg_input_collation, + Oid combinefn_oid, + Expr **combinefnexpr); extern void build_aggregate_serialfn_expr(Oid serialfn_oid, - Expr **serialfnexpr); + Expr **serialfnexpr); extern void build_aggregate_deserialfn_expr(Oid deserialfn_oid, - Expr **deserialfnexpr); + Expr **deserialfnexpr); extern void build_aggregate_finalfn_expr(Oid *agg_input_types, - int num_finalfn_inputs, - Oid agg_state_type, - Oid agg_result_type, - Oid agg_input_collation, - Oid finalfn_oid, - Expr **finalfnexpr); + int num_finalfn_inputs, + Oid agg_state_type, + Oid agg_result_type, + Oid agg_input_collation, + Oid finalfn_oid, + Expr **finalfnexpr); #endif /* PARSE_AGG_H */ diff --git a/parser/include/parser/parse_clause.h b/parser/include/parser/parse_clause.h index 1d205c63..75a4fcfa 100644 --- a/parser/include/parser/parse_clause.h +++ b/parser/include/parser/parse_clause.h @@ -4,7 +4,7 @@ * handle clauses in parser * * - * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/parser/parse_clause.h @@ -17,37 +17,37 @@ #include "parser/parse_node.h" extern void transformFromClause(ParseState *pstate, List *frmList); -extern int setTargetTable(ParseState *pstate, RangeVar *relation, - bool inh, bool alsoSource, AclMode requiredPerms); -extern bool interpretOidsOption(List *defList, bool allowOids); +extern int setTargetTable(ParseState *pstate, RangeVar *relation, + bool inh, bool alsoSource, AclMode requiredPerms); extern Node *transformWhereClause(ParseState *pstate, Node *clause, - ParseExprKind exprKind, const char *constructName); + ParseExprKind exprKind, const char *constructName); extern Node *transformLimitClause(ParseState *pstate, Node *clause, - ParseExprKind exprKind, const char *constructName); + ParseExprKind exprKind, const char *constructName, + LimitOption limitOption); extern List *transformGroupClause(ParseState *pstate, List *grouplist, - List **groupingSets, - List **targetlist, List *sortClause, - ParseExprKind exprKind, bool useSQL99); + List **groupingSets, + List **targetlist, List *sortClause, + ParseExprKind exprKind, bool useSQL99); extern List *transformSortClause(ParseState *pstate, List *orderlist, - List **targetlist, ParseExprKind exprKind, - bool useSQL99); + List **targetlist, ParseExprKind exprKind, + bool useSQL99); extern List *transformWindowDefinitions(ParseState *pstate, - List *windowdefs, - List **targetlist); + List *windowdefs, + List **targetlist); extern List *transformDistinctClause(ParseState *pstate, - List **targetlist, List *sortClause, bool is_agg); + List **targetlist, List *sortClause, bool is_agg); extern List *transformDistinctOnClause(ParseState *pstate, List *distinctlist, - List **targetlist, List *sortClause); + List **targetlist, List *sortClause); extern void transformOnConflictArbiter(ParseState *pstate, - OnConflictClause *onConflictClause, - List **arbiterExpr, Node **arbiterWhere, - Oid *constraint); + OnConflictClause *onConflictClause, + List **arbiterExpr, Node **arbiterWhere, + Oid *constraint); extern List *addTargetToSortList(ParseState *pstate, TargetEntry *tle, - List *sortlist, List *targetlist, SortBy *sortby); + List *sortlist, List *targetlist, SortBy *sortby); extern Index assignSortGroupRef(TargetEntry *tle, List *tlist); extern bool targetIsInSortList(TargetEntry *tle, Oid sortop, List *sortList); diff --git a/parser/include/parser/parse_coerce.h b/parser/include/parser/parse_coerce.h index 06f65293..8686eaac 100644 --- a/parser/include/parser/parse_coerce.h +++ b/parser/include/parser/parse_coerce.h @@ -4,7 +4,7 @@ * Routines for type coercion. * * - * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/parser/parse_coerce.h @@ -36,59 +36,62 @@ extern bool IsPreferredType(TYPCATEGORY category, Oid type); extern TYPCATEGORY TypeCategory(Oid type); extern Node *coerce_to_target_type(ParseState *pstate, - Node *expr, Oid exprtype, - Oid targettype, int32 targettypmod, - CoercionContext ccontext, - CoercionForm cformat, - int location); -extern bool can_coerce_type(int nargs, Oid *input_typeids, Oid *target_typeids, - CoercionContext ccontext); + Node *expr, Oid exprtype, + Oid targettype, int32 targettypmod, + CoercionContext ccontext, + CoercionForm cformat, + int location); +extern bool can_coerce_type(int nargs, const Oid *input_typeids, const Oid *target_typeids, + CoercionContext ccontext); extern Node *coerce_type(ParseState *pstate, Node *node, - Oid inputTypeId, Oid targetTypeId, int32 targetTypeMod, - CoercionContext ccontext, CoercionForm cformat, int location); + Oid inputTypeId, Oid targetTypeId, int32 targetTypeMod, + CoercionContext ccontext, CoercionForm cformat, int location); extern Node *coerce_to_domain(Node *arg, Oid baseTypeId, int32 baseTypeMod, - Oid typeId, - CoercionForm cformat, int location, - bool hideInputCoercion, - bool lengthCoercionDone); + Oid typeId, + CoercionContext ccontext, CoercionForm cformat, int location, + bool hideInputCoercion); extern Node *coerce_to_boolean(ParseState *pstate, Node *node, - const char *constructName); + const char *constructName); extern Node *coerce_to_specific_type(ParseState *pstate, Node *node, - Oid targetTypeId, - const char *constructName); + Oid targetTypeId, + const char *constructName); extern Node *coerce_to_specific_type_typmod(ParseState *pstate, Node *node, - Oid targetTypeId, int32 targetTypmod, - const char *constructName); + Oid targetTypeId, int32 targetTypmod, + const char *constructName); -extern int parser_coercion_errposition(ParseState *pstate, - int coerce_location, - Node *input_expr); +extern int parser_coercion_errposition(ParseState *pstate, + int coerce_location, + Node *input_expr); -extern Oid select_common_type(ParseState *pstate, List *exprs, - const char *context, Node **which_expr); +extern Oid select_common_type(ParseState *pstate, List *exprs, + const char *context, Node **which_expr); extern Node *coerce_to_common_type(ParseState *pstate, Node *node, - Oid targetTypeId, - const char *context); + Oid targetTypeId, + const char *context); + +extern bool check_generic_type_consistency(const Oid *actual_arg_types, + const Oid *declared_arg_types, + int nargs); +extern Oid enforce_generic_type_consistency(const Oid *actual_arg_types, + Oid *declared_arg_types, + int nargs, + Oid rettype, + bool allow_poly); -extern bool check_generic_type_consistency(Oid *actual_arg_types, - Oid *declared_arg_types, - int nargs); -extern Oid enforce_generic_type_consistency(Oid *actual_arg_types, - Oid *declared_arg_types, - int nargs, - Oid rettype, - bool allow_poly); -extern Oid resolve_generic_type(Oid declared_type, - Oid context_actual_type, - Oid context_declared_type); +extern char *check_valid_polymorphic_signature(Oid ret_type, + const Oid *declared_arg_types, + int nargs); +extern char *check_valid_internal_signature(Oid ret_type, + const Oid *declared_arg_types, + int nargs); extern CoercionPathType find_coercion_pathway(Oid targetTypeId, - Oid sourceTypeId, - CoercionContext ccontext, - Oid *funcid); + Oid sourceTypeId, + CoercionContext ccontext, + Oid *funcid); extern CoercionPathType find_typmod_coercion_function(Oid typeId, - Oid *funcid); + Oid *funcid); #endif /* PARSE_COERCE_H */ diff --git a/parser/include/parser/parse_collate.h b/parser/include/parser/parse_collate.h index 7279fa4e..c1021e7c 100644 --- a/parser/include/parser/parse_collate.h +++ b/parser/include/parser/parse_collate.h @@ -4,7 +4,7 @@ * Routines for assigning collation information. * * - * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/parser/parse_collate.h diff --git a/parser/include/parser/parse_expr.h b/parser/include/parser/parse_expr.h index c133aa40..0d3a9ee1 100644 --- a/parser/include/parser/parse_expr.h +++ b/parser/include/parser/parse_expr.h @@ -3,7 +3,7 @@ * parse_expr.h * handle expressions in parser * - * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/parser/parse_expr.h diff --git a/parser/include/parser/parse_func.h b/parser/include/parser/parse_func.h index b4b6084b..dd189f54 100644 --- a/parser/include/parser/parse_func.h +++ b/parser/include/parser/parse_func.h @@ -4,15 +4,15 @@ * * * - * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/parser/parse_func.h * *------------------------------------------------------------------------- */ -#ifndef PARSER_FUNC_H -#define PARSER_FUNC_H +#ifndef PARSE_FUNC_H +#define PARSE_FUNC_H #include "catalog/namespace.h" #include "parser/parse_node.h" @@ -24,6 +24,7 @@ typedef enum FUNCDETAIL_NOTFOUND, /* no matching function */ FUNCDETAIL_MULTIPLE, /* too many matching functions */ FUNCDETAIL_NORMAL, /* found a matching regular function */ + FUNCDETAIL_PROCEDURE, /* found a matching procedure */ FUNCDETAIL_AGGREGATE, /* found a matching aggregate function */ FUNCDETAIL_WINDOWFUNC, /* found a matching window function */ FUNCDETAIL_COERCION /* it's a type coercion request */ @@ -31,43 +32,42 @@ typedef enum extern Node *ParseFuncOrColumn(ParseState *pstate, List *funcname, List *fargs, - Node *last_srf, FuncCall *fn, int location); + Node *last_srf, FuncCall *fn, bool proc_call, + int location); extern FuncDetailCode func_get_detail(List *funcname, - List *fargs, List *fargnames, - int nargs, Oid *argtypes, - bool expand_variadic, bool expand_defaults, - Oid *funcid, Oid *rettype, - bool *retset, int *nvargs, Oid *vatype, - Oid **true_typeids, List **argdefaults); + List *fargs, List *fargnames, + int nargs, Oid *argtypes, + bool expand_variadic, bool expand_defaults, + Oid *funcid, Oid *rettype, + bool *retset, int *nvargs, Oid *vatype, + Oid **true_typeids, List **argdefaults); -extern int func_match_argtypes(int nargs, - Oid *input_typeids, - FuncCandidateList raw_candidates, - FuncCandidateList *candidates); +extern int func_match_argtypes(int nargs, + Oid *input_typeids, + FuncCandidateList raw_candidates, + FuncCandidateList *candidates); extern FuncCandidateList func_select_candidate(int nargs, - Oid *input_typeids, - FuncCandidateList candidates); + Oid *input_typeids, + FuncCandidateList candidates); extern void make_fn_arguments(ParseState *pstate, - List *fargs, - Oid *actual_arg_types, - Oid *declared_arg_types); + List *fargs, + Oid *actual_arg_types, + Oid *declared_arg_types); extern const char *funcname_signature_string(const char *funcname, int nargs, - List *argnames, const Oid *argtypes); + List *argnames, const Oid *argtypes); extern const char *func_signature_string(List *funcname, int nargs, - List *argnames, const Oid *argtypes); + List *argnames, const Oid *argtypes); -extern Oid LookupFuncName(List *funcname, int nargs, const Oid *argtypes, - bool noError); -extern Oid LookupFuncWithArgs(ObjectWithArgs *func, - bool noError); -extern Oid LookupAggWithArgs(ObjectWithArgs *agg, - bool noError); +extern Oid LookupFuncName(List *funcname, int nargs, const Oid *argtypes, + bool missing_ok); +extern Oid LookupFuncWithArgs(ObjectType objtype, ObjectWithArgs *func, + bool missing_ok); extern void check_srf_call_placement(ParseState *pstate, Node *last_srf, - int location); + int location); #endif /* PARSE_FUNC_H */ diff --git a/parser/include/parser/parse_node.h b/parser/include/parser/parse_node.h index 68930c1f..d25819aa 100644 --- a/parser/include/parser/parse_node.h +++ b/parser/include/parser/parse_node.h @@ -4,7 +4,7 @@ * Internal definitions for parser * * - * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/parser/parse_node.h @@ -19,6 +19,11 @@ #include "utils/relcache.h" +/* Forward references for some structs declared below */ +typedef struct ParseState ParseState; +typedef struct ParseNamespaceItem ParseNamespaceItem; +typedef struct ParseNamespaceColumn ParseNamespaceColumn; + /* * Expression kinds distinguished by transformExpr(). Many of these are not * semantically distinct so far as expression transformation goes; rather, @@ -45,6 +50,7 @@ typedef enum ParseExprKind EXPR_KIND_WINDOW_ORDER, /* window definition ORDER BY */ EXPR_KIND_WINDOW_FRAME_RANGE, /* window frame clause with RANGE */ EXPR_KIND_WINDOW_FRAME_ROWS, /* window frame clause with ROWS */ + EXPR_KIND_WINDOW_FRAME_GROUPS, /* window frame clause with GROUPS */ EXPR_KIND_SELECT_TARGET, /* SELECT target list item */ EXPR_KIND_INSERT_TARGET, /* INSERT target list item */ EXPR_KIND_UPDATE_SOURCE, /* UPDATE assignment source item */ @@ -67,15 +73,17 @@ typedef enum ParseExprKind EXPR_KIND_EXECUTE_PARAMETER, /* parameter value in EXECUTE */ EXPR_KIND_TRIGGER_WHEN, /* WHEN condition in CREATE TRIGGER */ EXPR_KIND_POLICY, /* USING or WITH CHECK expr in policy */ - EXPR_KIND_PARTITION_EXPRESSION /* PARTITION BY expression */ + EXPR_KIND_PARTITION_BOUND, /* partition bound expression */ + EXPR_KIND_PARTITION_EXPRESSION, /* PARTITION BY expression */ + EXPR_KIND_CALL_ARGUMENT, /* procedure argument in CALL */ + EXPR_KIND_COPY_WHERE, /* WHERE condition in COPY FROM */ + EXPR_KIND_GENERATED_COLUMN, /* generation expression for a column */ } ParseExprKind; /* * Function signatures for parser hooks */ -typedef struct ParseState ParseState; - typedef Node *(*PreParseColumnRefHook) (ParseState *pstate, ColumnRef *cref); typedef Node *(*PostParseColumnRefHook) (ParseState *pstate, ColumnRef *cref, Node *var); typedef Node *(*ParseParamRefHook) (ParseState *pstate, ParamRef *pref); @@ -111,7 +119,7 @@ typedef Node *(*CoerceParamHook) (ParseState *pstate, Param *param, * namespace for table and column lookup. (The RTEs listed here may be just * a subset of the whole rtable. See ParseNamespaceItem comments below.) * - * p_lateral_active: TRUE if we are currently parsing a LATERAL subexpression + * p_lateral_active: true if we are currently parsing a LATERAL subexpression * of this parse level. This makes p_lateral_only namespace items visible, * whereas they are not visible when p_lateral_active is FALSE. * @@ -127,7 +135,7 @@ typedef Node *(*CoerceParamHook) (ParseState *pstate, Param *param, * * p_target_relation: target relation, if query is INSERT, UPDATE, or DELETE. * - * p_target_rangetblentry: target relation's entry in the rtable list. + * p_target_nsitem: target relation's ParseNamespaceItem. * * p_is_insert: true to process assignment expressions like INSERT, false * to process them like UPDATE. (Note this can change intra-statement, for @@ -167,7 +175,7 @@ typedef Node *(*CoerceParamHook) (ParseState *pstate, Param *param, */ struct ParseState { - struct ParseState *parentParseState; /* stack link */ + ParseState *parentParseState; /* stack link */ const char *p_sourcetext; /* source text, or NULL if not available */ List *p_rtable; /* range table so far */ List *p_joinexprs; /* JoinExprs for RTE_JOIN p_rtable entries */ @@ -180,7 +188,7 @@ struct ParseState List *p_future_ctes; /* common table exprs not yet in namespace */ CommonTableExpr *p_parent_cte; /* this query's containing CTE */ Relation p_target_relation; /* INSERT/UPDATE/DELETE target rel */ - RangeTblEntry *p_target_rangetblentry; /* target rel's RTE */ + ParseNamespaceItem *p_target_nsitem; /* target rel's NSItem, or NULL */ bool p_is_insert; /* process assignment like INSERT not UPDATE */ List *p_windowdefs; /* raw representations of window clauses */ ParseExprKind p_expr_kind; /* what kind of expression we're parsing */ @@ -217,6 +225,9 @@ struct ParseState /* * An element of a namespace list. * + * The p_nscolumns array contains info showing how to construct Vars + * referencing corresponding elements of the RTE's colnames list. + * * Namespace items with p_rel_visible set define which RTEs are accessible by * qualified names, while those with p_cols_visible set define which RTEs are * accessible by unqualified names. These sets are different because a JOIN @@ -241,14 +252,49 @@ struct ParseState * are more complicated than "must have different alias names", so in practice * code searching a namespace list has to check for ambiguous references. */ -typedef struct ParseNamespaceItem +struct ParseNamespaceItem { RangeTblEntry *p_rte; /* The relation's rangetable entry */ + int p_rtindex; /* The relation's index in the rangetable */ + /* array of same length as p_rte->eref->colnames: */ + ParseNamespaceColumn *p_nscolumns; /* per-column data */ bool p_rel_visible; /* Relation name is visible? */ bool p_cols_visible; /* Column names visible as unqualified refs? */ bool p_lateral_only; /* Is only visible to LATERAL expressions? */ bool p_lateral_ok; /* If so, does join type allow use? */ -} ParseNamespaceItem; +}; + +/* + * Data about one column of a ParseNamespaceItem. + * + * We track the info needed to construct a Var referencing the column + * (but only for user-defined columns; system column references and + * whole-row references are handled separately). + * + * p_varno and p_varattno identify the semantic referent, which is a + * base-relation column unless the reference is to a join USING column that + * isn't semantically equivalent to either join input column (because it is a + * FULL join or the input column requires a type coercion). In those cases + * p_varno and p_varattno refer to the JOIN RTE. + * + * p_varnosyn and p_varattnosyn are either identical to p_varno/p_varattno, + * or they specify the column's position in an aliased JOIN RTE that hides + * the semantic referent RTE's refname. (That could be either the JOIN RTE + * in which this ParseNamespaceColumn entry exists, or some lower join level.) + * + * If an RTE contains a dropped column, its ParseNamespaceColumn struct + * is all-zeroes. (Conventionally, test for p_varno == 0 to detect this.) + */ +struct ParseNamespaceColumn +{ + Index p_varno; /* rangetable index */ + AttrNumber p_varattno; /* attribute number of the column */ + Oid p_vartype; /* pg_type OID */ + int32 p_vartypmod; /* type modifier value */ + Oid p_varcollid; /* OID of collation, or InvalidOid */ + Index p_varnosyn; /* rangetable index of syntactic referent */ + AttrNumber p_varattnosyn; /* attribute number of syntactic referent */ +}; /* Support for parser_errposition_callback function */ typedef struct ParseCallbackState @@ -264,19 +310,18 @@ extern void free_parsestate(ParseState *pstate); extern int parser_errposition(ParseState *pstate, int location); extern void setup_parser_errposition_callback(ParseCallbackState *pcbstate, - ParseState *pstate, int location); + ParseState *pstate, int location); extern void cancel_parser_errposition_callback(ParseCallbackState *pcbstate); -extern Var *make_var(ParseState *pstate, RangeTblEntry *rte, int attrno, - int location); -extern Oid transformArrayType(Oid *arrayType, int32 *arrayTypmod); -extern ArrayRef *transformArraySubscripts(ParseState *pstate, - Node *arrayBase, - Oid arrayType, - Oid elementType, - int32 arrayTypMod, - List *indirection, - Node *assignFrom); +extern Oid transformContainerType(Oid *containerType, int32 *containerTypmod); + +extern SubscriptingRef *transformContainerSubscripts(ParseState *pstate, + Node *containerBase, + Oid containerType, + Oid elementType, + int32 containerTypMod, + List *indirection, + Node *assignFrom); extern Const *make_const(ParseState *pstate, Value *value, int location); #endif /* PARSE_NODE_H */ diff --git a/parser/include/parser/parse_oper.h b/parser/include/parser/parse_oper.h index 3cab732b..bcd861e4 100644 --- a/parser/include/parser/parse_oper.h +++ b/parser/include/parser/parse_oper.h @@ -4,7 +4,7 @@ * handle operator things for parser * * - * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/parser/parse_oper.h @@ -22,33 +22,33 @@ typedef HeapTuple Operator; /* Routines to look up an operator given name and exact input type(s) */ -extern Oid LookupOperName(ParseState *pstate, List *opername, - Oid oprleft, Oid oprright, - bool noError, int location); +extern Oid LookupOperName(ParseState *pstate, List *opername, + Oid oprleft, Oid oprright, + bool noError, int location); extern Oid LookupOperWithArgs(ObjectWithArgs *oper, bool noError); /* Routines to find operators matching a name and given input types */ /* NB: the selected operator may require coercion of the input types! */ extern Operator oper(ParseState *pstate, List *op, Oid arg1, Oid arg2, - bool noError, int location); + bool noError, int location); extern Operator right_oper(ParseState *pstate, List *op, Oid arg, - bool noError, int location); + bool noError, int location); extern Operator left_oper(ParseState *pstate, List *op, Oid arg, - bool noError, int location); + bool noError, int location); /* Routines to find operators that DO NOT require coercion --- ie, their */ /* input types are either exactly as given, or binary-compatible */ extern Operator compatible_oper(ParseState *pstate, List *op, - Oid arg1, Oid arg2, - bool noError, int location); + Oid arg1, Oid arg2, + bool noError, int location); /* currently no need for compatible_left_oper/compatible_right_oper */ /* Routines for identifying "<", "=", ">" operators for a type */ extern void get_sort_group_operators(Oid argtype, - bool needLT, bool needEQ, bool needGT, - Oid *ltOpr, Oid *eqOpr, Oid *gtOpr, - bool *isHashable); + bool needLT, bool needEQ, bool needGT, + Oid *ltOpr, Oid *eqOpr, Oid *gtOpr, + bool *isHashable); /* Convenience routines for common calls on the above */ extern Oid compatible_oper_opid(List *op, Oid arg1, Oid arg2, bool noError); @@ -59,9 +59,9 @@ extern Oid oprfuncid(Operator op); /* Build expression tree for an operator invocation */ extern Expr *make_op(ParseState *pstate, List *opname, - Node *ltree, Node *rtree, Node *last_srf, int location); + Node *ltree, Node *rtree, Node *last_srf, int location); extern Expr *make_scalar_array_op(ParseState *pstate, List *opname, - bool useOr, - Node *ltree, Node *rtree, int location); + bool useOr, + Node *ltree, Node *rtree, int location); #endif /* PARSE_OPER_H */ diff --git a/parser/include/parser/parse_relation.h b/parser/include/parser/parse_relation.h index 91542d4f..93f94466 100644 --- a/parser/include/parser/parse_relation.h +++ b/parser/include/parser/parse_relation.h @@ -4,7 +4,7 @@ * prototypes for parse_relation.c. * * - * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/parser/parse_relation.h @@ -17,114 +17,105 @@ #include "parser/parse_node.h" -/* - * Support for fuzzily matching column. - * - * This is for building diagnostic messages, where non-exact matching - * attributes are suggested to the user. The struct's fields may be facets of - * a particular RTE, or of an entire range table, depending on context. - */ -typedef struct -{ - int distance; /* Weighted distance (lowest so far) */ - RangeTblEntry *rfirst; /* RTE of first */ - AttrNumber first; /* Closest attribute so far */ - RangeTblEntry *rsecond; /* RTE of second */ - AttrNumber second; /* Second closest attribute so far */ -} FuzzyAttrMatchState; - - -extern RangeTblEntry *refnameRangeTblEntry(ParseState *pstate, - const char *schemaname, - const char *refname, - int location, - int *sublevels_up); +extern ParseNamespaceItem *refnameNamespaceItem(ParseState *pstate, + const char *schemaname, + const char *refname, + int location, + int *sublevels_up); extern CommonTableExpr *scanNameSpaceForCTE(ParseState *pstate, - const char *refname, - Index *ctelevelsup); + const char *refname, + Index *ctelevelsup); extern bool scanNameSpaceForENR(ParseState *pstate, const char *refname); extern void checkNameSpaceConflicts(ParseState *pstate, List *namespace1, - List *namespace2); -extern int RTERangeTablePosn(ParseState *pstate, - RangeTblEntry *rte, - int *sublevels_up); + List *namespace2); +extern ParseNamespaceItem *GetNSItemByRangeTablePosn(ParseState *pstate, + int varno, + int sublevels_up); extern RangeTblEntry *GetRTEByRangeTablePosn(ParseState *pstate, - int varno, - int sublevels_up); + int varno, + int sublevels_up); extern CommonTableExpr *GetCTEForRTE(ParseState *pstate, RangeTblEntry *rte, - int rtelevelsup); -extern Node *scanRTEForColumn(ParseState *pstate, RangeTblEntry *rte, - char *colname, int location, - int fuzzy_rte_penalty, FuzzyAttrMatchState *fuzzystate); -extern Node *colNameToVar(ParseState *pstate, char *colname, bool localonly, - int location); + int rtelevelsup); +extern Node *scanNSItemForColumn(ParseState *pstate, ParseNamespaceItem *nsitem, + int sublevels_up, const char *colname, + int location); +extern Node *colNameToVar(ParseState *pstate, const char *colname, bool localonly, + int location); extern void markVarForSelectPriv(ParseState *pstate, Var *var, - RangeTblEntry *rte); + RangeTblEntry *rte); extern Relation parserOpenTable(ParseState *pstate, const RangeVar *relation, - int lockmode); -extern RangeTblEntry *addRangeTableEntry(ParseState *pstate, - RangeVar *relation, - Alias *alias, - bool inh, - bool inFromCl); -extern RangeTblEntry *addRangeTableEntryForRelation(ParseState *pstate, - Relation rel, - Alias *alias, - bool inh, - bool inFromCl); -extern RangeTblEntry *addRangeTableEntryForSubquery(ParseState *pstate, - Query *subquery, - Alias *alias, - bool lateral, - bool inFromCl); -extern RangeTblEntry *addRangeTableEntryForFunction(ParseState *pstate, - List *funcnames, - List *funcexprs, - List *coldeflists, - RangeFunction *rangefunc, - bool lateral, - bool inFromCl); -extern RangeTblEntry *addRangeTableEntryForValues(ParseState *pstate, - List *exprs, - List *coltypes, - List *coltypmods, - List *colcollations, - Alias *alias, - bool lateral, - bool inFromCl); -extern RangeTblEntry *addRangeTableEntryForTableFunc(ParseState *pstate, - TableFunc *tf, - Alias *alias, - bool lateral, - bool inFromCl); -extern RangeTblEntry *addRangeTableEntryForJoin(ParseState *pstate, - List *colnames, - JoinType jointype, - List *aliasvars, - Alias *alias, - bool inFromCl); -extern RangeTblEntry *addRangeTableEntryForCTE(ParseState *pstate, - CommonTableExpr *cte, - Index levelsup, - RangeVar *rv, - bool inFromCl); -extern RangeTblEntry *addRangeTableEntryForENR(ParseState *pstate, - RangeVar *rv, - bool inFromCl); + int lockmode); +extern ParseNamespaceItem *addRangeTableEntry(ParseState *pstate, + RangeVar *relation, + Alias *alias, + bool inh, + bool inFromCl); +extern ParseNamespaceItem *addRangeTableEntryForRelation(ParseState *pstate, + Relation rel, + int lockmode, + Alias *alias, + bool inh, + bool inFromCl); +extern ParseNamespaceItem *addRangeTableEntryForSubquery(ParseState *pstate, + Query *subquery, + Alias *alias, + bool lateral, + bool inFromCl); +extern ParseNamespaceItem *addRangeTableEntryForFunction(ParseState *pstate, + List *funcnames, + List *funcexprs, + List *coldeflists, + RangeFunction *rangefunc, + bool lateral, + bool inFromCl); +extern ParseNamespaceItem *addRangeTableEntryForValues(ParseState *pstate, + List *exprs, + List *coltypes, + List *coltypmods, + List *colcollations, + Alias *alias, + bool lateral, + bool inFromCl); +extern ParseNamespaceItem *addRangeTableEntryForTableFunc(ParseState *pstate, + TableFunc *tf, + Alias *alias, + bool lateral, + bool inFromCl); +extern ParseNamespaceItem *addRangeTableEntryForJoin(ParseState *pstate, + List *colnames, + ParseNamespaceColumn *nscolumns, + JoinType jointype, + int nummergedcols, + List *aliasvars, + List *leftcols, + List *rightcols, + Alias *alias, + bool inFromCl); +extern ParseNamespaceItem *addRangeTableEntryForCTE(ParseState *pstate, + CommonTableExpr *cte, + Index levelsup, + RangeVar *rv, + bool inFromCl); +extern ParseNamespaceItem *addRangeTableEntryForENR(ParseState *pstate, + RangeVar *rv, + bool inFromCl); extern bool isLockedRefname(ParseState *pstate, const char *refname); -extern void addRTEtoQuery(ParseState *pstate, RangeTblEntry *rte, - bool addToJoinList, - bool addToRelNameSpace, bool addToVarNameSpace); +extern void addNSItemToQuery(ParseState *pstate, ParseNamespaceItem *nsitem, + bool addToJoinList, + bool addToRelNameSpace, bool addToVarNameSpace); extern void errorMissingRTE(ParseState *pstate, RangeVar *relation) pg_attribute_noreturn(); extern void errorMissingColumn(ParseState *pstate, - char *relname, char *colname, int location) pg_attribute_noreturn(); + const char *relname, const char *colname, int location) pg_attribute_noreturn(); extern void expandRTE(RangeTblEntry *rte, int rtindex, int sublevels_up, - int location, bool include_dropped, - List **colnames, List **colvars); -extern List *expandRelAttrs(ParseState *pstate, RangeTblEntry *rte, - int rtindex, int sublevels_up, int location); + int location, bool include_dropped, + List **colnames, List **colvars); +extern List *expandNSItemVars(ParseNamespaceItem *nsitem, + int sublevels_up, int location, + List **colnames); +extern List *expandNSItemAttrs(ParseState *pstate, ParseNamespaceItem *nsitem, + int sublevels_up, int location); extern int attnameAttNum(Relation rd, const char *attname, bool sysColOK); -extern Name attnumAttName(Relation rd, int attid); +extern const NameData *attnumAttName(Relation rd, int attid); extern Oid attnumTypeId(Relation rd, int attid); extern Oid attnumCollationId(Relation rd, int attid); extern bool isQueryUsingTempRelation(Query *query); diff --git a/parser/include/parser/parse_target.h b/parser/include/parser/parse_target.h index 44af46b1..7039df29 100644 --- a/parser/include/parser/parse_target.h +++ b/parser/include/parser/parse_target.h @@ -4,7 +4,7 @@ * handle target lists * * - * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/parser/parse_target.h @@ -18,28 +18,28 @@ extern List *transformTargetList(ParseState *pstate, List *targetlist, - ParseExprKind exprKind); + ParseExprKind exprKind); extern List *transformExpressionList(ParseState *pstate, List *exprlist, - ParseExprKind exprKind, bool allowDefault); + ParseExprKind exprKind, bool allowDefault); extern void resolveTargetListUnknowns(ParseState *pstate, List *targetlist); extern void markTargetListOrigins(ParseState *pstate, List *targetlist); extern TargetEntry *transformTargetEntry(ParseState *pstate, - Node *node, Node *expr, ParseExprKind exprKind, - char *colname, bool resjunk); + Node *node, Node *expr, ParseExprKind exprKind, + char *colname, bool resjunk); extern Expr *transformAssignedExpr(ParseState *pstate, Expr *expr, - ParseExprKind exprKind, - char *colname, - int attrno, - List *indirection, - int location); + ParseExprKind exprKind, + const char *colname, + int attrno, + List *indirection, + int location); extern void updateTargetListEntry(ParseState *pstate, TargetEntry *tle, - char *colname, int attrno, - List *indirection, - int location); + char *colname, int attrno, + List *indirection, + int location); extern List *checkInsertTargets(ParseState *pstate, List *cols, - List **attrnos); + List **attrnos); extern TupleDesc expandRecordVariable(ParseState *pstate, Var *var, - int levelsup); + int levelsup); extern char *FigureColname(Node *node); extern char *FigureIndexColname(Node *node); diff --git a/parser/include/parser/parse_type.h b/parser/include/parser/parse_type.h index ac1bf100..bb83d729 100644 --- a/parser/include/parser/parse_type.h +++ b/parser/include/parser/parse_type.h @@ -3,7 +3,7 @@ * parse_type.h * handle type operations for parser * - * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/parser/parse_type.h @@ -20,17 +20,17 @@ typedef HeapTuple Type; extern Type LookupTypeName(ParseState *pstate, const TypeName *typeName, - int32 *typmod_p, bool missing_ok); + int32 *typmod_p, bool missing_ok); extern Type LookupTypeNameExtended(ParseState *pstate, const TypeName *typeName, int32 *typmod_p, bool temp_ok, bool missing_ok); -extern Oid LookupTypeNameOid(ParseState *pstate, const TypeName *typeName, - bool missing_ok); +extern Oid LookupTypeNameOid(ParseState *pstate, const TypeName *typeName, + bool missing_ok); extern Type typenameType(ParseState *pstate, const TypeName *typeName, - int32 *typmod_p); + int32 *typmod_p); extern Oid typenameTypeId(ParseState *pstate, const TypeName *typeName); extern void typenameTypeIdAndMod(ParseState *pstate, const TypeName *typeName, - Oid *typeid_p, int32 *typmod_p); + Oid *typeid_p, int32 *typmod_p); extern char *TypeNameToString(const TypeName *typeName); extern char *TypeNameListToString(List *typenames); @@ -49,10 +49,12 @@ extern Oid typeTypeCollation(Type typ); extern Datum stringTypeDatum(Type tp, char *string, int32 atttypmod); extern Oid typeidTypeRelid(Oid type_id); +extern Oid typeOrDomainTypeRelid(Oid type_id); extern TypeName *typeStringToTypeName(const char *str); extern void parseTypeString(const char *str, Oid *typeid_p, int32 *typmod_p, bool missing_ok); -#define ISCOMPLEX(typeid) (typeidTypeRelid(typeid) != InvalidOid) +/* true if typeid is composite, or domain over composite, but not RECORD */ +#define ISCOMPLEX(typeid) (typeOrDomainTypeRelid(typeid) != InvalidOid) #endif /* PARSE_TYPE_H */ diff --git a/parser/include/parser/parser.h b/parser/include/parser/parser.h index cf38623b..133f9818 100644 --- a/parser/include/parser/parser.h +++ b/parser/include/parser/parser.h @@ -5,7 +5,7 @@ * * This is the external API for the raw lexing/parsing functions. * - * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/parser/parser.h diff --git a/parser/include/parser/parsetree.h b/parser/include/parser/parsetree.h index 96cb2e2f..3ed58626 100644 --- a/parser/include/parser/parsetree.h +++ b/parser/include/parser/parsetree.h @@ -5,7 +5,7 @@ * parse trees. * * - * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/parser/parsetree.h @@ -31,16 +31,6 @@ #define rt_fetch(rangetable_index, rangetable) \ ((RangeTblEntry *) list_nth(rangetable, (rangetable_index)-1)) -/* - * getrelid - * - * Given the range index of a relation, return the corresponding - * relation OID. Note that InvalidOid will be returned if the - * RTE is for a non-relation-type RTE. - */ -#define getrelid(rangeindex,rangetable) \ - (rt_fetch(rangeindex, rangetable)->relid) - /* * Given an RTE and an attribute number, return the appropriate * variable name or alias for that attribute of that RTE. @@ -48,18 +38,10 @@ extern char *get_rte_attribute_name(RangeTblEntry *rte, AttrNumber attnum); /* - * Given an RTE and an attribute number, return the appropriate - * type and typemod info for that attribute of that RTE. - */ -extern void get_rte_attribute_type(RangeTblEntry *rte, AttrNumber attnum, - Oid *vartype, int32 *vartypmod, Oid *varcollid); - -/* - * Check whether an attribute of an RTE has been dropped (note that - * get_rte_attribute_type will fail on such an attr) + * Check whether an attribute of an RTE has been dropped */ extern bool get_rte_attribute_is_dropped(RangeTblEntry *rte, - AttrNumber attnum); + AttrNumber attnum); /* ---------------- diff --git a/parser/include/parser/scanner.h b/parser/include/parser/scanner.h index bb95de73..29852fbd 100644 --- a/parser/include/parser/scanner.h +++ b/parser/include/parser/scanner.h @@ -8,7 +8,7 @@ * higher-level API provided by parser.h. * * - * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/parser/scanner.h @@ -48,7 +48,7 @@ typedef union core_YYSTYPE * However, those are not defined in this file, because bison insists on * defining them for itself. The token codes used by the core scanner are * the ASCII characters plus these: - * %token IDENT FCONST SCONST BCONST XCONST Op + * %token IDENT UIDENT FCONST SCONST USCONST BCONST XCONST Op * %token ICONST PARAM * %token TYPECAST DOT_DOT COLON_EQUALS EQUALS_GREATER * %token LESS_EQUALS GREATER_EQUALS NOT_EQUALS @@ -73,10 +73,10 @@ typedef struct core_yy_extra_type Size scanbuflen; /* - * The keyword list to use. + * The keyword list to use, and the associated grammar token codes. */ - const ScanKeyword *keywords; - int num_keywords; + const ScanKeywordList *keywordlist; + const uint16 *keyword_tokens; /* * Scanner settings to use. These are initialized from the corresponding @@ -99,8 +99,13 @@ typedef struct core_yy_extra_type int literallen; /* actual current string length */ int literalalloc; /* current allocated buffer size */ + /* + * Random assorted scanner state. + */ + int state_before_str_stop; /* start cond. before end quote */ int xcdepth; /* depth of nesting in slash-star comments */ char *dolqstart; /* current $foo$ quote start string */ + YYLTYPE save_yylloc; /* one-element stack for PUSH_YYLLOC() */ /* first part of UTF16 surrogate pair for Unicode escapes */ int32 utf16_first_part; @@ -108,6 +113,8 @@ typedef struct core_yy_extra_type /* state variables for literal-lexing warnings */ bool warn_on_first_escape; bool saw_non_ascii; + + int yyllocend; } core_yy_extra_type; /* @@ -115,16 +122,31 @@ typedef struct core_yy_extra_type */ typedef void *core_yyscan_t; +/* Support for scanner_errposition_callback function */ +typedef struct ScannerCallbackState +{ + core_yyscan_t yyscanner; + int location; + ErrorContextCallback errcallback; +} ScannerCallbackState; + + +/* Constant data exported from parser/scan.l */ +extern PGDLLIMPORT const uint16 ScanKeywordTokens[]; /* Entry points in parser/scan.l */ extern core_yyscan_t scanner_init(const char *str, - core_yy_extra_type *yyext, - const ScanKeyword *keywords, - int num_keywords); + core_yy_extra_type *yyext, + const ScanKeywordList *keywordlist, + const uint16 *keyword_tokens); extern void scanner_finish(core_yyscan_t yyscanner); -extern int core_yylex(core_YYSTYPE *lvalp, YYLTYPE *llocp, - core_yyscan_t yyscanner); +extern int core_yylex(core_YYSTYPE *lvalp, YYLTYPE *llocp, + core_yyscan_t yyscanner); extern int scanner_errposition(int location, core_yyscan_t yyscanner); +extern void setup_scanner_errposition_callback(ScannerCallbackState *scbstate, + core_yyscan_t yyscanner, + int location); +extern void cancel_scanner_errposition_callback(ScannerCallbackState *scbstate); extern void scanner_yyerror(const char *message, core_yyscan_t yyscanner) pg_attribute_noreturn(); #endif /* SCANNER_H */ diff --git a/parser/include/parser/scansup.h b/parser/include/parser/scansup.h index f9a36b5c..7a6ee529 100644 --- a/parser/include/parser/scansup.h +++ b/parser/include/parser/scansup.h @@ -4,7 +4,7 @@ * scanner support routines. used by both the bootstrap lexer * as well as the normal lexer * - * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/parser/scansup.h @@ -18,10 +18,10 @@ extern char *scanstr(const char *s); extern char *downcase_truncate_identifier(const char *ident, int len, - bool warn); + bool warn); extern char *downcase_identifier(const char *ident, int len, - bool warn, bool truncate); + bool warn, bool truncate); extern void truncate_identifier(char *ident, int len, bool warn); diff --git a/parser/include/partitioning/partdefs.h b/parser/include/partitioning/partdefs.h new file mode 100644 index 00000000..6414e2c1 --- /dev/null +++ b/parser/include/partitioning/partdefs.h @@ -0,0 +1,26 @@ +/*------------------------------------------------------------------------- + * + * partdefs.h + * Base definitions for partitioned table handling + * + * Copyright (c) 2007-2020, PostgreSQL Global Development Group + * + * src/include/partitioning/partdefs.h + * + *------------------------------------------------------------------------- + */ +#ifndef PARTDEFS_H +#define PARTDEFS_H + + +typedef struct PartitionBoundInfoData *PartitionBoundInfo; + +typedef struct PartitionKeyData *PartitionKey; + +typedef struct PartitionBoundSpec PartitionBoundSpec; + +typedef struct PartitionDescData *PartitionDesc; + +typedef struct PartitionDirectoryData *PartitionDirectory; + +#endif /* PARTDEFS_H */ diff --git a/parser/include/pg_config.h b/parser/include/pg_config.h index 0e6d17d1..862651ae 100644 --- a/parser/include/pg_config.h +++ b/parser/include/pg_config.h @@ -43,6 +43,9 @@ Changing BLCKSZ requires an initdb. */ #define BLCKSZ 8192 +/* Saved arguments from configure */ +#define CONFIGURE_ARGS " '--without-readline' '--without-zlib'" + /* Define to the default TCP port number on which the server listens and to which clients will try to connect. This can be overridden at run-time, but it's convenient if your clients have the right default compiled in. @@ -62,22 +65,6 @@ (--enable-thread-safety) */ #define ENABLE_THREAD_SAFETY 1 -/* Define to nothing if C supports flexible array members, and to 1 if it does - not. That way, with a declaration like `struct s { int n; double - d[FLEXIBLE_ARRAY_MEMBER]; };', the struct hack can be used with pre-C99 - compilers. When computing the size of such an object, don't use 'sizeof - (struct s)' as it overestimates the size. Use 'offsetof (struct s, d)' - instead. Don't use 'offsetof (struct s, d[0])', as this doesn't work with - MSVC and with C++ compilers. */ -#define FLEXIBLE_ARRAY_MEMBER /**/ - -/* float4 values are passed by value if 'true', by reference if 'false' */ -#define FLOAT4PASSBYVAL true - -/* float8, int8, and related values are passed by value if 'true', by - reference if 'false' */ -#define FLOAT8PASSBYVAL true - /* Define to 1 if gettimeofday() takes only 1 argument. */ /* #undef GETTIMEOFDAY_1ARG */ @@ -97,36 +84,33 @@ /* Define to 1 if you have the header file. */ /* #undef HAVE_ATOMIC_H */ +/* Define to 1 if you have the `backtrace_symbols' function. */ +#define HAVE_BACKTRACE_SYMBOLS 1 + /* Define to 1 if you have the `BIO_get_data' function. */ /* #undef HAVE_BIO_GET_DATA */ /* Define to 1 if you have the `BIO_meth_new' function. */ /* #undef HAVE_BIO_METH_NEW */ -/* Define to 1 if you have the `cbrt' function. */ -#define HAVE_CBRT 1 - -/* Define to 1 if you have the `class' function. */ -/* #undef HAVE_CLASS */ - /* Define to 1 if you have the `clock_gettime' function. */ #define HAVE_CLOCK_GETTIME 1 /* Define to 1 if your compiler handles computed gotos. */ #define HAVE_COMPUTED_GOTO 1 +/* Define to 1 if you have the `copyfile' function. */ +#define HAVE_COPYFILE 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_COPYFILE_H 1 + /* Define to 1 if you have the header file. */ /* #undef HAVE_CRTDEFS_H */ -/* Define to 1 if you have the `crypt' function. */ -#define HAVE_CRYPT 1 - /* Define to 1 if you have the `CRYPTO_lock' function. */ /* #undef HAVE_CRYPTO_LOCK */ -/* Define to 1 if you have the header file. */ -/* #undef HAVE_CRYPT_H */ - /* Define to 1 if you have the declaration of `fdatasync', and to 0 if you don't. */ #define HAVE_DECL_FDATASYNC 0 @@ -135,13 +119,37 @@ don't. */ #define HAVE_DECL_F_FULLFSYNC 1 +/* Define to 1 if you have the declaration of + `LLVMCreateGDBRegistrationListener', and to 0 if you don't. */ +/* #undef HAVE_DECL_LLVMCREATEGDBREGISTRATIONLISTENER */ + +/* Define to 1 if you have the declaration of + `LLVMCreatePerfJITEventListener', and to 0 if you don't. */ +/* #undef HAVE_DECL_LLVMCREATEPERFJITEVENTLISTENER */ + +/* Define to 1 if you have the declaration of `LLVMGetHostCPUFeatures', and to + 0 if you don't. */ +/* #undef HAVE_DECL_LLVMGETHOSTCPUFEATURES */ + +/* Define to 1 if you have the declaration of `LLVMGetHostCPUName', and to 0 + if you don't. */ +/* #undef HAVE_DECL_LLVMGETHOSTCPUNAME */ + +/* Define to 1 if you have the declaration of `LLVMOrcGetSymbolAddressIn', and + to 0 if you don't. */ +/* #undef HAVE_DECL_LLVMORCGETSYMBOLADDRESSIN */ + /* Define to 1 if you have the declaration of `posix_fadvise', and to 0 if you don't. */ #define HAVE_DECL_POSIX_FADVISE 0 -/* Define to 1 if you have the declaration of `snprintf', and to 0 if you +/* Define to 1 if you have the declaration of `RTLD_GLOBAL', and to 0 if you + don't. */ +#define HAVE_DECL_RTLD_GLOBAL 1 + +/* Define to 1 if you have the declaration of `RTLD_NOW', and to 0 if you don't. */ -#define HAVE_DECL_SNPRINTF 1 +#define HAVE_DECL_RTLD_NOW 1 /* Define to 1 if you have the declaration of `strlcat', and to 0 if you don't. */ @@ -151,6 +159,10 @@ don't. */ #define HAVE_DECL_STRLCPY 1 +/* Define to 1 if you have the declaration of `strnlen', and to 0 if you + don't. */ +#define HAVE_DECL_STRNLEN 1 + /* Define to 1 if you have the declaration of `strtoll', and to 0 if you don't. */ #define HAVE_DECL_STRTOLL 1 @@ -159,13 +171,6 @@ don't. */ #define HAVE_DECL_STRTOULL 1 -/* Define to 1 if you have the declaration of `vsnprintf', and to 0 if you - don't. */ -#define HAVE_DECL_VSNPRINTF 1 - -/* Define to 1 if you have the header file. */ -/* #undef HAVE_DLD_H */ - /* Define to 1 if you have the `dlopen' function. */ #define HAVE_DLOPEN 1 @@ -175,24 +180,18 @@ /* Define to 1 if you have the header file. */ /* #undef HAVE_EDITLINE_READLINE_H */ +/* Define to 1 if you have the header file. */ +#define HAVE_EXECINFO_H 1 + +/* Define to 1 if you have the `explicit_bzero' function. */ +/* #undef HAVE_EXPLICIT_BZERO */ + /* Define to 1 if you have the `fdatasync' function. */ #define HAVE_FDATASYNC 1 /* Define to 1 if you have the `fls' function. */ #define HAVE_FLS 1 -/* Define to 1 if you have the `fpclass' function. */ -/* #undef HAVE_FPCLASS */ - -/* Define to 1 if you have the `fp_class' function. */ -/* #undef HAVE_FP_CLASS */ - -/* Define to 1 if you have the `fp_class_d' function. */ -/* #undef HAVE_FP_CLASS_D */ - -/* Define to 1 if you have the header file. */ -/* #undef HAVE_FP_CLASS_H */ - /* Define to 1 if fseeko (and presumably ftello) exists and is declared. */ #define HAVE_FSEEKO 1 @@ -205,8 +204,8 @@ /* Define to 1 if you have __atomic_compare_exchange_n(int *, int *, int). */ #define HAVE_GCC__ATOMIC_INT32_CAS 1 -/* Define to 1 if you have __atomic_compare_exchange_n(int64 *, int *, int64). - */ +/* Define to 1 if you have __atomic_compare_exchange_n(int64 *, int64 *, + int64). */ #define HAVE_GCC__ATOMIC_INT64_CAS 1 /* Define to 1 if you have __sync_lock_test_and_set(char *) and friends. */ @@ -270,9 +269,6 @@ /* Define to 1 if you have the `history_truncate_file' function. */ /* #undef HAVE_HISTORY_TRUNCATE_FILE */ -/* Define to 1 if you have the header file. */ -/* #undef HAVE_IEEEFP_H */ - /* Define to 1 if you have the header file. */ #define HAVE_IFADDRS_H 1 @@ -285,9 +281,6 @@ /* Define to 1 if the system has the type `int8'. */ /* #undef HAVE_INT8 */ -/* Define to 1 if the system has the type `intptr_t'. */ -#define HAVE_INTPTR_T 1 - /* Define to 1 if you have the header file. */ #define HAVE_INTTYPES_H 1 @@ -303,8 +296,11 @@ /* Define to 1 if you have support for IPv6. */ #define HAVE_IPV6 1 -/* Define to 1 if you have isinf(). */ -#define HAVE_ISINF 1 +/* Define to 1 if __builtin_constant_p(x) implies "i"(x) acceptance. */ +/* #undef HAVE_I_CONSTRAINT__BUILTIN_CONSTANT_P */ + +/* Define to 1 if you have the `kqueue' function. */ +#define HAVE_KQUEUE 1 /* Define to 1 if you have the header file. */ #define HAVE_LANGINFO_H 1 @@ -312,6 +308,9 @@ /* Define to 1 if you have the header file. */ /* #undef HAVE_LDAP_H */ +/* Define to 1 if you have the `ldap_initialize' function. */ +/* #undef HAVE_LDAP_INITIALIZE */ + /* Define to 1 if you have the `crypto' library (-lcrypto). */ /* #undef HAVE_LIBCRYPTO */ @@ -348,15 +347,15 @@ /* Define to 1 if you have the `z' library (-lz). */ /* #undef HAVE_LIBZ */ +/* Define to 1 if you have the `link' function. */ +#define HAVE_LINK 1 + /* Define to 1 if the system has the type `locale_t'. */ #define HAVE_LOCALE_T 1 /* Define to 1 if `long int' works and is 64 bits. */ #define HAVE_LONG_INT_64 1 -/* Define to 1 if the system has the type `long long int'. */ -#define HAVE_LONG_LONG_INT 1 - /* Define to 1 if `long long int' works and is 64 bits. */ /* #undef HAVE_LONG_LONG_INT_64 */ @@ -366,12 +365,12 @@ /* Define to 1 if you have the `mbstowcs_l' function. */ #define HAVE_MBSTOWCS_L 1 -/* Define to 1 if you have the `memmove' function. */ -#define HAVE_MEMMOVE 1 - /* Define to 1 if you have the header file. */ #define HAVE_MEMORY_H 1 +/* Define to 1 if you have the `memset_s' function. */ +#define HAVE_MEMSET_S 1 + /* Define to 1 if the system has the type `MINIDUMP_TYPE'. */ /* #undef HAVE_MINIDUMP_TYPE */ @@ -408,6 +407,12 @@ /* Define to 1 if the assembler supports PPC's LWARX mutex hint bit. */ /* #undef HAVE_PPC_LWARX_MUTEX_HINT */ +/* Define to 1 if you have the `ppoll' function. */ +/* #undef HAVE_PPOLL */ + +/* Define to 1 if you have the `pread' function. */ +#define HAVE_PREAD 1 + /* Define to 1 if you have the `pstat' function. */ /* #undef HAVE_PSTAT */ @@ -423,12 +428,12 @@ /* Have PTHREAD_PRIO_INHERIT. */ #define HAVE_PTHREAD_PRIO_INHERIT 1 +/* Define to 1 if you have the `pwrite' function. */ +#define HAVE_PWRITE 1 + /* Define to 1 if you have the `random' function. */ #define HAVE_RANDOM 1 -/* Define to 1 if you have the `RAND_OpenSSL' function. */ -/* #undef HAVE_RAND_OPENSSL */ - /* Define to 1 if you have the header file. */ /* #undef HAVE_READLINE_H */ @@ -441,9 +446,6 @@ /* Define to 1 if you have the `readlink' function. */ #define HAVE_READLINK 1 -/* Define to 1 if you have the `rint' function. */ -#define HAVE_RINT 1 - /* Define to 1 if you have the global variable 'rl_completion_append_character'. */ /* #undef HAVE_RL_COMPLETION_APPEND_CHARACTER */ @@ -451,9 +453,21 @@ /* Define to 1 if you have the `rl_completion_matches' function. */ /* #undef HAVE_RL_COMPLETION_MATCHES */ +/* Define to 1 if you have the global variable 'rl_completion_suppress_quote'. + */ +/* #undef HAVE_RL_COMPLETION_SUPPRESS_QUOTE */ + /* Define to 1 if you have the `rl_filename_completion_function' function. */ /* #undef HAVE_RL_FILENAME_COMPLETION_FUNCTION */ +/* Define to 1 if you have the global variable 'rl_filename_quote_characters'. + */ +/* #undef HAVE_RL_FILENAME_QUOTE_CHARACTERS */ + +/* Define to 1 if you have the global variable 'rl_filename_quoting_function'. + */ +/* #undef HAVE_RL_FILENAME_QUOTING_FUNCTION */ + /* Define to 1 if you have the `rl_reset_screen_size' function. */ /* #undef HAVE_RL_RESET_SCREEN_SIZE */ @@ -463,23 +477,23 @@ /* Define to 1 if you have the `setproctitle' function. */ /* #undef HAVE_SETPROCTITLE */ +/* Define to 1 if you have the `setproctitle_fast' function. */ +/* #undef HAVE_SETPROCTITLE_FAST */ + /* Define to 1 if you have the `setsid' function. */ #define HAVE_SETSID 1 /* Define to 1 if you have the `shm_open' function. */ #define HAVE_SHM_OPEN 1 -/* Define to 1 if you have the `snprintf' function. */ -#define HAVE_SNPRINTF 1 - /* Define to 1 if you have spinlocks. */ #define HAVE_SPINLOCKS 1 /* Define to 1 if you have the `srandom' function. */ #define HAVE_SRANDOM 1 -/* Define to 1 if you have the `SSL_get_current_compression' function. */ -/* #undef HAVE_SSL_GET_CURRENT_COMPRESSION */ +/* Define to 1 if stdbool.h conforms to C99. */ +#define HAVE_STDBOOL_H 1 /* Define to 1 if you have the header file. */ #define HAVE_STDINT_H 1 @@ -487,8 +501,8 @@ /* Define to 1 if you have the header file. */ #define HAVE_STDLIB_H 1 -/* Define to 1 if you have the `strerror' function. */ -#define HAVE_STRERROR 1 +/* Define to 1 if you have the `strchrnul' function. */ +/* #undef HAVE_STRCHRNUL */ /* Define to 1 if you have the `strerror_r' function. */ #define HAVE_STRERROR_R 1 @@ -505,12 +519,15 @@ /* Define to 1 if you have the `strlcpy' function. */ #define HAVE_STRLCPY 1 -/* Define to use have a strong random number source */ -#define HAVE_STRONG_RANDOM 1 +/* Define to 1 if you have the `strnlen' function. */ +#define HAVE_STRNLEN 1 /* Define to 1 if you have the `strsignal' function. */ #define HAVE_STRSIGNAL 1 +/* Define to 1 if you have the `strtof' function. */ +#define HAVE_STRTOF 1 + /* Define to 1 if you have the `strtoll' function. */ #define HAVE_STRTOLL 1 @@ -550,6 +567,9 @@ /* Define to 1 if `__ss_len' is a member of `struct sockaddr_storage'. */ /* #undef HAVE_STRUCT_SOCKADDR_STORAGE___SS_LEN */ +/* Define to 1 if the system has the type `struct sockaddr_un'. */ +#define HAVE_STRUCT_SOCKADDR_UN 1 + /* Define to 1 if `tm_zone' is a member of `struct tm'. */ #define HAVE_STRUCT_TM_TM_ZONE 1 @@ -565,9 +585,18 @@ /* Define to 1 if you have the header file. */ /* #undef HAVE_SYS_EPOLL_H */ +/* Define to 1 if you have the header file. */ +#define HAVE_SYS_EVENT_H 1 + /* Define to 1 if you have the header file. */ #define HAVE_SYS_IPC_H 1 +/* Define to 1 if you have the header file. */ +/* #undef HAVE_SYS_PRCTL_H */ + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_SYS_PROCCTL_H */ + /* Define to 1 if you have the header file. */ /* #undef HAVE_SYS_PSTAT_H */ @@ -604,19 +633,9 @@ /* Define to 1 if you have the header file. */ #define HAVE_TERMIOS_H 1 -/* Define to 1 if your `struct tm' has `tm_zone'. Deprecated, use - `HAVE_STRUCT_TM_TM_ZONE' instead. */ -#define HAVE_TM_ZONE 1 - -/* Define to 1 if you have the `towlower' function. */ -#define HAVE_TOWLOWER 1 - /* Define to 1 if your compiler understands `typeof' or something similar. */ #define HAVE_TYPEOF 1 -/* Define to 1 if you have the external array `tzname'. */ -#define HAVE_TZNAME 1 - /* Define to 1 if you have the header file. */ /* #undef HAVE_UCRED_H */ @@ -626,36 +645,18 @@ /* Define to 1 if the system has the type `uint8'. */ /* #undef HAVE_UINT8 */ -/* Define to 1 if the system has the type `uintptr_t'. */ -#define HAVE_UINTPTR_T 1 - /* Define to 1 if the system has the type `union semun'. */ #define HAVE_UNION_SEMUN 1 /* Define to 1 if you have the header file. */ #define HAVE_UNISTD_H 1 -/* Define to 1 if you have unix sockets. */ -#define HAVE_UNIX_SOCKETS 1 - /* Define to 1 if you have the `unsetenv' function. */ #define HAVE_UNSETENV 1 -/* Define to 1 if the system has the type `unsigned long long int'. */ -#define HAVE_UNSIGNED_LONG_LONG_INT 1 - /* Define to 1 if you have the `uselocale' function. */ #define HAVE_USELOCALE 1 -/* Define to 1 if you have the `utime' function. */ -#define HAVE_UTIME 1 - -/* Define to 1 if you have the `utimes' function. */ -#define HAVE_UTIMES 1 - -/* Define to 1 if you have the header file. */ -#define HAVE_UTIME_H 1 - /* Define to 1 if you have BSD UUID support. */ /* #undef HAVE_UUID_BSD */ @@ -671,15 +672,6 @@ /* Define to 1 if you have the header file. */ /* #undef HAVE_UUID_UUID_H */ -/* Define to 1 if you have the `vsnprintf' function. */ -#define HAVE_VSNPRINTF 1 - -/* Define to 1 if you have the header file. */ -#define HAVE_WCHAR_H 1 - -/* Define to 1 if you have the `wcstombs' function. */ -#define HAVE_WCSTOMBS 1 - /* Define to 1 if you have the `wcstombs_l' function. */ #define HAVE_WCSTOMBS_L 1 @@ -689,15 +681,39 @@ /* Define to 1 if you have the header file. */ /* #undef HAVE_WINLDAP_H */ +/* Define to 1 if you have the `X509_get_signature_nid' function. */ +/* #undef HAVE_X509_GET_SIGNATURE_NID */ + +/* Define to 1 if the assembler supports X86_64's POPCNTQ instruction. */ +#define HAVE_X86_64_POPCNTQ 1 + +/* Define to 1 if the system has the type `_Bool'. */ +#define HAVE__BOOL 1 + +/* Define to 1 if your compiler understands __builtin_bswap16. */ +#define HAVE__BUILTIN_BSWAP16 1 + /* Define to 1 if your compiler understands __builtin_bswap32. */ #define HAVE__BUILTIN_BSWAP32 1 /* Define to 1 if your compiler understands __builtin_bswap64. */ #define HAVE__BUILTIN_BSWAP64 1 +/* Define to 1 if your compiler understands __builtin_clz. */ +#define HAVE__BUILTIN_CLZ 1 + /* Define to 1 if your compiler understands __builtin_constant_p. */ #define HAVE__BUILTIN_CONSTANT_P 1 +/* Define to 1 if your compiler understands __builtin_ctz. */ +#define HAVE__BUILTIN_CTZ 1 + +/* Define to 1 if your compiler understands __builtin_$op_overflow. */ +#define HAVE__BUILTIN_OP_OVERFLOW 1 + +/* Define to 1 if your compiler understands __builtin_popcount. */ +#define HAVE__BUILTIN_POPCOUNT 1 + /* Define to 1 if your compiler understands __builtin_types_compatible_p. */ #define HAVE__BUILTIN_TYPES_COMPATIBLE_P 1 @@ -716,16 +732,13 @@ /* Define to 1 if your compiler understands _Static_assert. */ #define HAVE__STATIC_ASSERT 1 -/* Define to 1 if your compiler understands __VA_ARGS__ in macros. */ -#define HAVE__VA_ARGS 1 - /* Define to 1 if you have the `__strtoll' function. */ /* #undef HAVE___STRTOLL */ /* Define to 1 if you have the `__strtoull' function. */ /* #undef HAVE___STRTOULL */ -/* Define to the appropriate snprintf length modifier for 64-bit ints. */ +/* Define to the appropriate printf length modifier for 64-bit ints. */ #define INT64_MODIFIER "l" /* Define to 1 if `locale_t' requires . */ @@ -738,22 +751,22 @@ #define MEMSET_LOOP_LIMIT 1024 /* Define to the address where bug reports for this package should be sent. */ -#define PACKAGE_BUGREPORT "pgsql-bugs@postgresql.org" +#define PACKAGE_BUGREPORT "pgsql-bugs@lists.postgresql.org" /* Define to the full name of this package. */ #define PACKAGE_NAME "PostgreSQL" /* Define to the full name and version of this package. */ -#define PACKAGE_STRING "PostgreSQL 10.16" +#define PACKAGE_STRING "PostgreSQL 13.2" /* Define to the one symbol short name of this package. */ #define PACKAGE_TARNAME "postgresql" /* Define to the home page for this package. */ -#define PACKAGE_URL "" +#define PACKAGE_URL "https://www.postgresql.org/" /* Define to the version of this package. */ -#define PACKAGE_VERSION "10.16" +#define PACKAGE_VERSION "13.2" /* Define to the name of a signed 128-bit integer type. */ #define PG_INT128_TYPE __int128 @@ -766,19 +779,28 @@ #define PG_KRB_SRVNAM "postgres" /* PostgreSQL major version as a string */ -#define PG_MAJORVERSION "10" +#define PG_MAJORVERSION "13" + +/* PostgreSQL major version number */ +#define PG_MAJORVERSION_NUM 13 + +/* PostgreSQL minor version number */ +#define PG_MINORVERSION_NUM 2 -/* Define to gnu_printf if compiler supports it, else printf. */ +/* Define to best printf format archetype, usually gnu_printf if available. */ #define PG_PRINTF_ATTRIBUTE printf +/* Define to 1 to use to define type bool. */ +#define PG_USE_STDBOOL 1 + /* PostgreSQL version as a string */ -#define PG_VERSION "10.16" +#define PG_VERSION "13.2" /* PostgreSQL version as a number */ -#define PG_VERSION_NUM 100016 +#define PG_VERSION_NUM 130002 /* A string containing the version number, platform, and C compiler */ -#define PG_VERSION_STR "PostgreSQL 10.16 on x86_64-apple-darwin19.6.0, compiled by Apple clang version 12.0.0 (clang-1200.0.32.29), 64-bit" +#define PG_VERSION_STR "PostgreSQL 13.2 on x86_64-apple-darwin19.6.0, compiled by Apple clang version 12.0.0 (clang-1200.0.32.29), 64-bit" /* Define to 1 to allow profiling output to be saved separately for each process. */ @@ -801,6 +823,9 @@ RELSEG_SIZE requires an initdb. */ #define RELSEG_SIZE 131072 +/* The size of `bool', as computed by sizeof. */ +#define SIZEOF_BOOL 1 + /* The size of `long', as computed by sizeof. */ #define SIZEOF_LONG 8 @@ -819,8 +844,11 @@ /* Define to 1 if strerror_r() returns int. */ #define STRERROR_R_INT 1 -/* Define to 1 if your declares `struct tm'. */ -/* #undef TM_IN_SYS_TIME */ +/* Define to 1 to use ARMv8 CRC Extension. */ +/* #undef USE_ARMV8_CRC32C */ + +/* Define to 1 to use ARMv8 CRC Extension with a runtime check. */ +/* #undef USE_ARMV8_CRC32C_WITH_RUNTIME_CHECK */ /* Define to 1 to build with assertion checks. (--enable-cassert) */ /* #undef USE_ASSERT_CHECKING */ @@ -834,14 +862,6 @@ /* Define to use /dev/urandom for random number generation */ #define USE_DEV_URANDOM 1 -/* Define to 1 if you want float4 values to be passed by value. - (--enable-float4-byval) */ -#define USE_FLOAT4_BYVAL 1 - -/* Define to 1 if you want float8, int8, etc values to be passed by value. - (--enable-float8-byval) */ -#define USE_FLOAT8_BYVAL 1 - /* Define to build with ICU support. (--with-icu) */ /* #undef USE_ICU */ @@ -855,6 +875,9 @@ (--with-libxslt) */ /* #undef USE_LIBXSLT */ +/* Define to 1 to build with LLVM based JIT support. (--with-llvm) */ +/* #undef USE_LLVM */ + /* Define to select named POSIX semaphores. */ /* #undef USE_NAMED_POSIX_SEMAPHORES */ @@ -867,9 +890,6 @@ /* Define to 1 to build with PAM support. (--with-pam) */ /* #undef USE_PAM */ -/* Use replacement snprintf() functions. */ -/* #undef USE_REPL_SNPRINTF */ - /* Define to 1 to use software CRC-32C implementation (slicing-by-8). */ /* #undef USE_SLICING_BY_8_CRC32C */ @@ -922,11 +942,6 @@ */ #define XLOG_BLCKSZ 8192 -/* XLOG_SEG_SIZE is the size of a single WAL file. This must be a power of 2 - and larger than XLOG_BLCKSZ (preferably, a great deal larger than - XLOG_BLCKSZ). Changing XLOG_SEG_SIZE requires an initdb. */ -#define XLOG_SEG_SIZE (16 * 1024 * 1024) - /* Number of bits in a file offset, on hosts where this is settable. */ @@ -944,19 +959,26 @@ /* #undef inline */ #endif -/* Define to the type of a signed integer type wide enough to hold a pointer, - if such a type exists, and if the system does not define it. */ -/* #undef intptr_t */ - -/* Define to empty if the C compiler does not understand signed types. */ -/* #undef signed */ +/* Define to keyword to use for C99 restrict support, or to nothing if not + supported */ +#define pg_restrict __restrict + +/* Define to the equivalent of the C99 'restrict' keyword, or to + nothing if this is not supported. Do not define if restrict is + supported directly. */ +#define restrict __restrict +/* Work around a bug in Sun C++: it does not support _Restrict or + __restrict__, even though the corresponding Sun C compiler ends up with + "#define restrict _Restrict" or "#define restrict __restrict__" in the + previous line. Perhaps some future version of Sun C++ will work with + restrict; if so, hopefully it defines __RESTRICT like Sun C does. */ +#if defined __SUNPRO_CC && !defined __RESTRICT +# define _Restrict +# define __restrict__ +#endif /* Define to how the compiler spells `typeof'. */ /* #undef typeof */ - -/* Define to the type of an unsigned integer type wide enough to hold a - pointer, if such a type exists, and if the system does not define it. */ -/* #undef uintptr_t */ #undef HAVE_LOCALE_T #undef LOCALE_T_IN_XLOCALE #undef WCSTOMBS_L_IN_XLOCALE diff --git a/parser/include/pg_config_manual.h b/parser/include/pg_config_manual.h index f3b35297..8f3ec6bd 100644 --- a/parser/include/pg_config_manual.h +++ b/parser/include/pg_config_manual.h @@ -6,13 +6,19 @@ * for developers. If you edit any of these, be sure to do a *full* * rebuild (and an initdb if noted). * - * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/pg_config_manual.h *------------------------------------------------------------------------ */ +/* + * This is the default value for wal_segment_size to be used when initdb is run + * without the --wal-segsize option. It must be a valid segment size. + */ +#define DEFAULT_XLOG_SEG_SIZE (16*1024*1024) + /* * Maximum length for identifiers (e.g. table names, column names, * function names). Names actually are limited to one less byte than this, @@ -50,6 +56,19 @@ */ #define PARTITION_MAX_KEYS 32 +/* + * Decide whether built-in 8-byte types, including float8, int8, and + * timestamp, are passed by value. This is on by default if sizeof(Datum) >= + * 8 (that is, on 64-bit platforms). If sizeof(Datum) < 8 (32-bit platforms), + * this must be off. We keep this here as an option so that it is easy to + * test the pass-by-reference code paths on 64-bit platforms. + * + * Changing this requires an initdb. + */ +#if SIZEOF_VOID_P >= 8 +#define USE_FLOAT8_BYVAL 1 +#endif + /* * When we don't have native spinlocks, we use semaphores to simulate them. * Decreasing this value reduces consumption of OS resources; increasing it @@ -66,16 +85,6 @@ */ #define NUM_ATOMICS_SEMAPHORES 64 -/* - * Define this if you want to allow the lo_import and lo_export SQL - * functions to be executed by ordinary users. By default these - * functions are only available to the Postgres superuser. CAUTION: - * These functions are SECURITY HOLES since they can read and write - * any file that the PostgreSQL server has permission to access. If - * you turn this on, don't say we didn't warn you. - */ -/* #define ALLOW_DANGEROUS_LO_FUNCTIONS */ - /* * MAXPGPATH: standard size of a pathname buffer in PostgreSQL (hence, * maximum usable pathname length is one less). @@ -114,17 +123,16 @@ #define ALIGNOF_BUFFER 32 /* - * Disable UNIX sockets for certain operating systems. + * If EXEC_BACKEND is defined, the postmaster uses an alternative method for + * starting subprocesses: Instead of simply using fork(), as is standard on + * Unix platforms, it uses fork()+exec() or something equivalent on Windows, + * as well as lots of extra code to bring the required global state to those + * new processes. This must be enabled on Windows (because there is no + * fork()). On other platforms, it's only useful for verifying those + * otherwise Windows-specific code paths. */ -#if defined(WIN32) -#undef HAVE_UNIX_SOCKETS -#endif - -/* - * Define this if your operating system supports link() - */ -#if !defined(WIN32) && !defined(__CYGWIN__) -#define HAVE_WORKING_LINK 1 +#if defined(WIN32) && !defined(__CYGWIN__) +#define EXEC_BACKEND #endif /* @@ -140,7 +148,9 @@ /* * USE_PREFETCH code should be compiled only if we have a way to implement * prefetching. (This is decoupled from USE_POSIX_FADVISE because there - * might in future be support for alternative low-level prefetch APIs.) + * might in future be support for alternative low-level prefetch APIs. + * If you change this, you probably need to adjust the error message in + * check_effective_io_concurrency.) */ #ifdef USE_POSIX_FADVISE #define USE_PREFETCH @@ -180,8 +190,21 @@ * directory. But if you just hate the idea of sockets in /tmp, * here's where to twiddle it. You can also override this at runtime * with the postmaster's -k switch. + * + * If set to an empty string, then AF_UNIX sockets are not used by default: A + * server will not create an AF_UNIX socket unless the run-time configuration + * is changed, a client will connect via TCP/IP by default and will only use + * an AF_UNIX socket if one is explicitly specified. + * + * This is done by default on Windows because there is no good standard + * location for AF_UNIX sockets and many installations on Windows don't + * support them yet. */ +#ifndef WIN32 #define DEFAULT_PGSOCKET_DIR "/tmp" +#else +#define DEFAULT_PGSOCKET_DIR "" +#endif /* * This is the default event source for Windows event log. @@ -290,6 +313,13 @@ */ /* #define COPY_PARSE_PLAN_TREES */ +/* + * Define this to force all parse and plan trees to be passed through + * outfuncs.c/readfuncs.c, to facilitate catching errors and omissions in + * those modules. + */ +/* #define WRITE_READ_PARSE_PLAN_TREES */ + /* * Define this to force all raw parse trees for DML statements to be scanned * by raw_expression_tree_walker(), to facilitate catching errors and @@ -318,9 +348,3 @@ * Enable tracing of syncscan operations (see also the trace_syncscan GUC var). */ /* #define TRACE_SYNCSCAN */ - -/* - * Other debug #defines (documentation, anyone?) - */ -/* #define HEAPDEBUGALL */ -/* #define ACLDEBUG */ diff --git a/parser/include/pg_getopt.h b/parser/include/pg_getopt.h index 58915cc6..e646fc34 100644 --- a/parser/include/pg_getopt.h +++ b/parser/include/pg_getopt.h @@ -11,7 +11,7 @@ * Portions Copyright (c) 1987, 1993, 1994 * The Regents of the University of California. All rights reserved. * - * Portions Copyright (c) 2003-2017, PostgreSQL Global Development Group + * Portions Copyright (c) 2003-2020, PostgreSQL Global Development Group * * src/include/pg_getopt.h */ diff --git a/parser/include/pg_query.h b/parser/include/pg_query.h index 44939425..2180c87b 100644 --- a/parser/include/pg_query.h +++ b/parser/include/pg_query.h @@ -1,6 +1,8 @@ #ifndef PG_QUERY_H #define PG_QUERY_H +#include + typedef struct { char* message; // exception message char* funcname; // source function of exception (e.g. SearchSysCache) @@ -10,19 +12,54 @@ typedef struct { char* context; // additional context (optional, can be NULL) } PgQueryError; +typedef struct { + unsigned int len; + char* data; +} PgQueryProtobuf; + +typedef struct { + PgQueryProtobuf pbuf; + char* stderr_buffer; + PgQueryError* error; +} PgQueryScanResult; + typedef struct { char* parse_tree; char* stderr_buffer; PgQueryError* error; } PgQueryParseResult; +typedef struct { + PgQueryProtobuf parse_tree; + char* stderr_buffer; + PgQueryError* error; +} PgQueryProtobufParseResult; + +typedef struct { + int stmt_location; + int stmt_len; +} PgQuerySplitStmt; + +typedef struct { + PgQuerySplitStmt **stmts; + int n_stmts; + char* stderr_buffer; + PgQueryError* error; +} PgQuerySplitResult; + +typedef struct { + char* query; + PgQueryError* error; +} PgQueryDeparseResult; + typedef struct { char* plpgsql_funcs; PgQueryError* error; } PgQueryPlpgsqlParseResult; typedef struct { - char* hexdigest; + uint64_t fingerprint; + char* fingerprint_str; char* stderr_buffer; PgQueryError* error; } PgQueryFingerprintResult; @@ -37,13 +74,31 @@ extern "C" { #endif PgQueryNormalizeResult pg_query_normalize(const char* input); +PgQueryScanResult pg_query_scan(const char* input); PgQueryParseResult pg_query_parse(const char* input); +PgQueryProtobufParseResult pg_query_parse_protobuf(const char* input); PgQueryPlpgsqlParseResult pg_query_parse_plpgsql(const char* input); PgQueryFingerprintResult pg_query_fingerprint(const char* input); +// Use pg_query_split_with_scanner when you need to split statements that may +// contain parse errors, otherwise pg_query_split_with_parser is recommended +// for improved accuracy due the parser adding additional token handling. +// +// Note that we try to support special cases like comments, strings containing +// ";" on both, as well as oddities like "CREATE RULE .. (SELECT 1; SELECT 2);" +// which is treated as as single statement. +PgQuerySplitResult pg_query_split_with_scanner(const char *input); +PgQuerySplitResult pg_query_split_with_parser(const char *input); + +PgQueryDeparseResult pg_query_deparse_protobuf(PgQueryProtobuf parse_tree); + void pg_query_free_normalize_result(PgQueryNormalizeResult result); +void pg_query_free_scan_result(PgQueryScanResult result); void pg_query_free_parse_result(PgQueryParseResult result); +void pg_query_free_split_result(PgQuerySplitResult result); +void pg_query_free_deparse_result(PgQueryDeparseResult result); +void pg_query_free_protobuf_parse_result(PgQueryProtobufParseResult result); void pg_query_free_plpgsql_parse_result(PgQueryPlpgsqlParseResult result); void pg_query_free_fingerprint_result(PgQueryFingerprintResult result); @@ -51,9 +106,9 @@ void pg_query_free_fingerprint_result(PgQueryFingerprintResult result); void pg_query_exit(void); // Postgres version information -#define PG_VERSION "10.16" -#define PG_MAJORVERSION "10" -#define PG_VERSION_NUM 100016 +#define PG_VERSION "13.2" +#define PG_MAJORVERSION "13" +#define PG_VERSION_NUM 130002 // Deprecated APIs below diff --git a/parser/include/pg_query_enum_defs.c b/parser/include/pg_query_enum_defs.c new file mode 100644 index 00000000..e8068c9b --- /dev/null +++ b/parser/include/pg_query_enum_defs.c @@ -0,0 +1,2454 @@ +// This file is autogenerated by ./scripts/generate_protobuf_and_funcs.rb + +static const char* +_enumToStringOverridingKind(OverridingKind value) { + switch(value) { + case OVERRIDING_NOT_SET: return "OVERRIDING_NOT_SET"; + case OVERRIDING_USER_VALUE: return "OVERRIDING_USER_VALUE"; + case OVERRIDING_SYSTEM_VALUE: return "OVERRIDING_SYSTEM_VALUE"; + } + Assert(false); + return NULL; +} + +static const char* +_enumToStringQuerySource(QuerySource value) { + switch(value) { + case QSRC_ORIGINAL: return "QSRC_ORIGINAL"; + case QSRC_PARSER: return "QSRC_PARSER"; + case QSRC_INSTEAD_RULE: return "QSRC_INSTEAD_RULE"; + case QSRC_QUAL_INSTEAD_RULE: return "QSRC_QUAL_INSTEAD_RULE"; + case QSRC_NON_INSTEAD_RULE: return "QSRC_NON_INSTEAD_RULE"; + } + Assert(false); + return NULL; +} + +static const char* +_enumToStringSortByDir(SortByDir value) { + switch(value) { + case SORTBY_DEFAULT: return "SORTBY_DEFAULT"; + case SORTBY_ASC: return "SORTBY_ASC"; + case SORTBY_DESC: return "SORTBY_DESC"; + case SORTBY_USING: return "SORTBY_USING"; + } + Assert(false); + return NULL; +} + +static const char* +_enumToStringSortByNulls(SortByNulls value) { + switch(value) { + case SORTBY_NULLS_DEFAULT: return "SORTBY_NULLS_DEFAULT"; + case SORTBY_NULLS_FIRST: return "SORTBY_NULLS_FIRST"; + case SORTBY_NULLS_LAST: return "SORTBY_NULLS_LAST"; + } + Assert(false); + return NULL; +} + +static const char* +_enumToStringA_Expr_Kind(A_Expr_Kind value) { + switch(value) { + case AEXPR_OP: return "AEXPR_OP"; + case AEXPR_OP_ANY: return "AEXPR_OP_ANY"; + case AEXPR_OP_ALL: return "AEXPR_OP_ALL"; + case AEXPR_DISTINCT: return "AEXPR_DISTINCT"; + case AEXPR_NOT_DISTINCT: return "AEXPR_NOT_DISTINCT"; + case AEXPR_NULLIF: return "AEXPR_NULLIF"; + case AEXPR_OF: return "AEXPR_OF"; + case AEXPR_IN: return "AEXPR_IN"; + case AEXPR_LIKE: return "AEXPR_LIKE"; + case AEXPR_ILIKE: return "AEXPR_ILIKE"; + case AEXPR_SIMILAR: return "AEXPR_SIMILAR"; + case AEXPR_BETWEEN: return "AEXPR_BETWEEN"; + case AEXPR_NOT_BETWEEN: return "AEXPR_NOT_BETWEEN"; + case AEXPR_BETWEEN_SYM: return "AEXPR_BETWEEN_SYM"; + case AEXPR_NOT_BETWEEN_SYM: return "AEXPR_NOT_BETWEEN_SYM"; + case AEXPR_PAREN: return "AEXPR_PAREN"; + } + Assert(false); + return NULL; +} + +static const char* +_enumToStringRoleSpecType(RoleSpecType value) { + switch(value) { + case ROLESPEC_CSTRING: return "ROLESPEC_CSTRING"; + case ROLESPEC_CURRENT_USER: return "ROLESPEC_CURRENT_USER"; + case ROLESPEC_SESSION_USER: return "ROLESPEC_SESSION_USER"; + case ROLESPEC_PUBLIC: return "ROLESPEC_PUBLIC"; + } + Assert(false); + return NULL; +} + +static const char* +_enumToStringTableLikeOption(TableLikeOption value) { + switch(value) { + case CREATE_TABLE_LIKE_COMMENTS: return "CREATE_TABLE_LIKE_COMMENTS"; + case CREATE_TABLE_LIKE_CONSTRAINTS: return "CREATE_TABLE_LIKE_CONSTRAINTS"; + case CREATE_TABLE_LIKE_DEFAULTS: return "CREATE_TABLE_LIKE_DEFAULTS"; + case CREATE_TABLE_LIKE_GENERATED: return "CREATE_TABLE_LIKE_GENERATED"; + case CREATE_TABLE_LIKE_IDENTITY: return "CREATE_TABLE_LIKE_IDENTITY"; + case CREATE_TABLE_LIKE_INDEXES: return "CREATE_TABLE_LIKE_INDEXES"; + case CREATE_TABLE_LIKE_STATISTICS: return "CREATE_TABLE_LIKE_STATISTICS"; + case CREATE_TABLE_LIKE_STORAGE: return "CREATE_TABLE_LIKE_STORAGE"; + case CREATE_TABLE_LIKE_ALL: return "CREATE_TABLE_LIKE_ALL"; + } + Assert(false); + return NULL; +} + +static const char* +_enumToStringDefElemAction(DefElemAction value) { + switch(value) { + case DEFELEM_UNSPEC: return "DEFELEM_UNSPEC"; + case DEFELEM_SET: return "DEFELEM_SET"; + case DEFELEM_ADD: return "DEFELEM_ADD"; + case DEFELEM_DROP: return "DEFELEM_DROP"; + } + Assert(false); + return NULL; +} + +static const char* +_enumToStringPartitionRangeDatumKind(PartitionRangeDatumKind value) { + switch(value) { + case PARTITION_RANGE_DATUM_MINVALUE: return "PARTITION_RANGE_DATUM_MINVALUE"; + case PARTITION_RANGE_DATUM_VALUE: return "PARTITION_RANGE_DATUM_VALUE"; + case PARTITION_RANGE_DATUM_MAXVALUE: return "PARTITION_RANGE_DATUM_MAXVALUE"; + } + Assert(false); + return NULL; +} + +static const char* +_enumToStringRTEKind(RTEKind value) { + switch(value) { + case RTE_RELATION: return "RTE_RELATION"; + case RTE_SUBQUERY: return "RTE_SUBQUERY"; + case RTE_JOIN: return "RTE_JOIN"; + case RTE_FUNCTION: return "RTE_FUNCTION"; + case RTE_TABLEFUNC: return "RTE_TABLEFUNC"; + case RTE_VALUES: return "RTE_VALUES"; + case RTE_CTE: return "RTE_CTE"; + case RTE_NAMEDTUPLESTORE: return "RTE_NAMEDTUPLESTORE"; + case RTE_RESULT: return "RTE_RESULT"; + } + Assert(false); + return NULL; +} + +static const char* +_enumToStringWCOKind(WCOKind value) { + switch(value) { + case WCO_VIEW_CHECK: return "WCO_VIEW_CHECK"; + case WCO_RLS_INSERT_CHECK: return "WCO_RLS_INSERT_CHECK"; + case WCO_RLS_UPDATE_CHECK: return "WCO_RLS_UPDATE_CHECK"; + case WCO_RLS_CONFLICT_CHECK: return "WCO_RLS_CONFLICT_CHECK"; + } + Assert(false); + return NULL; +} + +static const char* +_enumToStringGroupingSetKind(GroupingSetKind value) { + switch(value) { + case GROUPING_SET_EMPTY: return "GROUPING_SET_EMPTY"; + case GROUPING_SET_SIMPLE: return "GROUPING_SET_SIMPLE"; + case GROUPING_SET_ROLLUP: return "GROUPING_SET_ROLLUP"; + case GROUPING_SET_CUBE: return "GROUPING_SET_CUBE"; + case GROUPING_SET_SETS: return "GROUPING_SET_SETS"; + } + Assert(false); + return NULL; +} + +static const char* +_enumToStringCTEMaterialize(CTEMaterialize value) { + switch(value) { + case CTEMaterializeDefault: return "CTEMaterializeDefault"; + case CTEMaterializeAlways: return "CTEMaterializeAlways"; + case CTEMaterializeNever: return "CTEMaterializeNever"; + } + Assert(false); + return NULL; +} + +static const char* +_enumToStringSetOperation(SetOperation value) { + switch(value) { + case SETOP_NONE: return "SETOP_NONE"; + case SETOP_UNION: return "SETOP_UNION"; + case SETOP_INTERSECT: return "SETOP_INTERSECT"; + case SETOP_EXCEPT: return "SETOP_EXCEPT"; + } + Assert(false); + return NULL; +} + +static const char* +_enumToStringObjectType(ObjectType value) { + switch(value) { + case OBJECT_ACCESS_METHOD: return "OBJECT_ACCESS_METHOD"; + case OBJECT_AGGREGATE: return "OBJECT_AGGREGATE"; + case OBJECT_AMOP: return "OBJECT_AMOP"; + case OBJECT_AMPROC: return "OBJECT_AMPROC"; + case OBJECT_ATTRIBUTE: return "OBJECT_ATTRIBUTE"; + case OBJECT_CAST: return "OBJECT_CAST"; + case OBJECT_COLUMN: return "OBJECT_COLUMN"; + case OBJECT_COLLATION: return "OBJECT_COLLATION"; + case OBJECT_CONVERSION: return "OBJECT_CONVERSION"; + case OBJECT_DATABASE: return "OBJECT_DATABASE"; + case OBJECT_DEFAULT: return "OBJECT_DEFAULT"; + case OBJECT_DEFACL: return "OBJECT_DEFACL"; + case OBJECT_DOMAIN: return "OBJECT_DOMAIN"; + case OBJECT_DOMCONSTRAINT: return "OBJECT_DOMCONSTRAINT"; + case OBJECT_EVENT_TRIGGER: return "OBJECT_EVENT_TRIGGER"; + case OBJECT_EXTENSION: return "OBJECT_EXTENSION"; + case OBJECT_FDW: return "OBJECT_FDW"; + case OBJECT_FOREIGN_SERVER: return "OBJECT_FOREIGN_SERVER"; + case OBJECT_FOREIGN_TABLE: return "OBJECT_FOREIGN_TABLE"; + case OBJECT_FUNCTION: return "OBJECT_FUNCTION"; + case OBJECT_INDEX: return "OBJECT_INDEX"; + case OBJECT_LANGUAGE: return "OBJECT_LANGUAGE"; + case OBJECT_LARGEOBJECT: return "OBJECT_LARGEOBJECT"; + case OBJECT_MATVIEW: return "OBJECT_MATVIEW"; + case OBJECT_OPCLASS: return "OBJECT_OPCLASS"; + case OBJECT_OPERATOR: return "OBJECT_OPERATOR"; + case OBJECT_OPFAMILY: return "OBJECT_OPFAMILY"; + case OBJECT_POLICY: return "OBJECT_POLICY"; + case OBJECT_PROCEDURE: return "OBJECT_PROCEDURE"; + case OBJECT_PUBLICATION: return "OBJECT_PUBLICATION"; + case OBJECT_PUBLICATION_REL: return "OBJECT_PUBLICATION_REL"; + case OBJECT_ROLE: return "OBJECT_ROLE"; + case OBJECT_ROUTINE: return "OBJECT_ROUTINE"; + case OBJECT_RULE: return "OBJECT_RULE"; + case OBJECT_SCHEMA: return "OBJECT_SCHEMA"; + case OBJECT_SEQUENCE: return "OBJECT_SEQUENCE"; + case OBJECT_SUBSCRIPTION: return "OBJECT_SUBSCRIPTION"; + case OBJECT_STATISTIC_EXT: return "OBJECT_STATISTIC_EXT"; + case OBJECT_TABCONSTRAINT: return "OBJECT_TABCONSTRAINT"; + case OBJECT_TABLE: return "OBJECT_TABLE"; + case OBJECT_TABLESPACE: return "OBJECT_TABLESPACE"; + case OBJECT_TRANSFORM: return "OBJECT_TRANSFORM"; + case OBJECT_TRIGGER: return "OBJECT_TRIGGER"; + case OBJECT_TSCONFIGURATION: return "OBJECT_TSCONFIGURATION"; + case OBJECT_TSDICTIONARY: return "OBJECT_TSDICTIONARY"; + case OBJECT_TSPARSER: return "OBJECT_TSPARSER"; + case OBJECT_TSTEMPLATE: return "OBJECT_TSTEMPLATE"; + case OBJECT_TYPE: return "OBJECT_TYPE"; + case OBJECT_USER_MAPPING: return "OBJECT_USER_MAPPING"; + case OBJECT_VIEW: return "OBJECT_VIEW"; + } + Assert(false); + return NULL; +} + +static const char* +_enumToStringDropBehavior(DropBehavior value) { + switch(value) { + case DROP_RESTRICT: return "DROP_RESTRICT"; + case DROP_CASCADE: return "DROP_CASCADE"; + } + Assert(false); + return NULL; +} + +static const char* +_enumToStringAlterTableType(AlterTableType value) { + switch(value) { + case AT_AddColumn: return "AT_AddColumn"; + case AT_AddColumnRecurse: return "AT_AddColumnRecurse"; + case AT_AddColumnToView: return "AT_AddColumnToView"; + case AT_ColumnDefault: return "AT_ColumnDefault"; + case AT_CookedColumnDefault: return "AT_CookedColumnDefault"; + case AT_DropNotNull: return "AT_DropNotNull"; + case AT_SetNotNull: return "AT_SetNotNull"; + case AT_DropExpression: return "AT_DropExpression"; + case AT_CheckNotNull: return "AT_CheckNotNull"; + case AT_SetStatistics: return "AT_SetStatistics"; + case AT_SetOptions: return "AT_SetOptions"; + case AT_ResetOptions: return "AT_ResetOptions"; + case AT_SetStorage: return "AT_SetStorage"; + case AT_DropColumn: return "AT_DropColumn"; + case AT_DropColumnRecurse: return "AT_DropColumnRecurse"; + case AT_AddIndex: return "AT_AddIndex"; + case AT_ReAddIndex: return "AT_ReAddIndex"; + case AT_AddConstraint: return "AT_AddConstraint"; + case AT_AddConstraintRecurse: return "AT_AddConstraintRecurse"; + case AT_ReAddConstraint: return "AT_ReAddConstraint"; + case AT_ReAddDomainConstraint: return "AT_ReAddDomainConstraint"; + case AT_AlterConstraint: return "AT_AlterConstraint"; + case AT_ValidateConstraint: return "AT_ValidateConstraint"; + case AT_ValidateConstraintRecurse: return "AT_ValidateConstraintRecurse"; + case AT_AddIndexConstraint: return "AT_AddIndexConstraint"; + case AT_DropConstraint: return "AT_DropConstraint"; + case AT_DropConstraintRecurse: return "AT_DropConstraintRecurse"; + case AT_ReAddComment: return "AT_ReAddComment"; + case AT_AlterColumnType: return "AT_AlterColumnType"; + case AT_AlterColumnGenericOptions: return "AT_AlterColumnGenericOptions"; + case AT_ChangeOwner: return "AT_ChangeOwner"; + case AT_ClusterOn: return "AT_ClusterOn"; + case AT_DropCluster: return "AT_DropCluster"; + case AT_SetLogged: return "AT_SetLogged"; + case AT_SetUnLogged: return "AT_SetUnLogged"; + case AT_DropOids: return "AT_DropOids"; + case AT_SetTableSpace: return "AT_SetTableSpace"; + case AT_SetRelOptions: return "AT_SetRelOptions"; + case AT_ResetRelOptions: return "AT_ResetRelOptions"; + case AT_ReplaceRelOptions: return "AT_ReplaceRelOptions"; + case AT_EnableTrig: return "AT_EnableTrig"; + case AT_EnableAlwaysTrig: return "AT_EnableAlwaysTrig"; + case AT_EnableReplicaTrig: return "AT_EnableReplicaTrig"; + case AT_DisableTrig: return "AT_DisableTrig"; + case AT_EnableTrigAll: return "AT_EnableTrigAll"; + case AT_DisableTrigAll: return "AT_DisableTrigAll"; + case AT_EnableTrigUser: return "AT_EnableTrigUser"; + case AT_DisableTrigUser: return "AT_DisableTrigUser"; + case AT_EnableRule: return "AT_EnableRule"; + case AT_EnableAlwaysRule: return "AT_EnableAlwaysRule"; + case AT_EnableReplicaRule: return "AT_EnableReplicaRule"; + case AT_DisableRule: return "AT_DisableRule"; + case AT_AddInherit: return "AT_AddInherit"; + case AT_DropInherit: return "AT_DropInherit"; + case AT_AddOf: return "AT_AddOf"; + case AT_DropOf: return "AT_DropOf"; + case AT_ReplicaIdentity: return "AT_ReplicaIdentity"; + case AT_EnableRowSecurity: return "AT_EnableRowSecurity"; + case AT_DisableRowSecurity: return "AT_DisableRowSecurity"; + case AT_ForceRowSecurity: return "AT_ForceRowSecurity"; + case AT_NoForceRowSecurity: return "AT_NoForceRowSecurity"; + case AT_GenericOptions: return "AT_GenericOptions"; + case AT_AttachPartition: return "AT_AttachPartition"; + case AT_DetachPartition: return "AT_DetachPartition"; + case AT_AddIdentity: return "AT_AddIdentity"; + case AT_SetIdentity: return "AT_SetIdentity"; + case AT_DropIdentity: return "AT_DropIdentity"; + } + Assert(false); + return NULL; +} + +static const char* +_enumToStringGrantTargetType(GrantTargetType value) { + switch(value) { + case ACL_TARGET_OBJECT: return "ACL_TARGET_OBJECT"; + case ACL_TARGET_ALL_IN_SCHEMA: return "ACL_TARGET_ALL_IN_SCHEMA"; + case ACL_TARGET_DEFAULTS: return "ACL_TARGET_DEFAULTS"; + } + Assert(false); + return NULL; +} + +static const char* +_enumToStringVariableSetKind(VariableSetKind value) { + switch(value) { + case VAR_SET_VALUE: return "VAR_SET_VALUE"; + case VAR_SET_DEFAULT: return "VAR_SET_DEFAULT"; + case VAR_SET_CURRENT: return "VAR_SET_CURRENT"; + case VAR_SET_MULTI: return "VAR_SET_MULTI"; + case VAR_RESET: return "VAR_RESET"; + case VAR_RESET_ALL: return "VAR_RESET_ALL"; + } + Assert(false); + return NULL; +} + +static const char* +_enumToStringConstrType(ConstrType value) { + switch(value) { + case CONSTR_NULL: return "CONSTR_NULL"; + case CONSTR_NOTNULL: return "CONSTR_NOTNULL"; + case CONSTR_DEFAULT: return "CONSTR_DEFAULT"; + case CONSTR_IDENTITY: return "CONSTR_IDENTITY"; + case CONSTR_GENERATED: return "CONSTR_GENERATED"; + case CONSTR_CHECK: return "CONSTR_CHECK"; + case CONSTR_PRIMARY: return "CONSTR_PRIMARY"; + case CONSTR_UNIQUE: return "CONSTR_UNIQUE"; + case CONSTR_EXCLUSION: return "CONSTR_EXCLUSION"; + case CONSTR_FOREIGN: return "CONSTR_FOREIGN"; + case CONSTR_ATTR_DEFERRABLE: return "CONSTR_ATTR_DEFERRABLE"; + case CONSTR_ATTR_NOT_DEFERRABLE: return "CONSTR_ATTR_NOT_DEFERRABLE"; + case CONSTR_ATTR_DEFERRED: return "CONSTR_ATTR_DEFERRED"; + case CONSTR_ATTR_IMMEDIATE: return "CONSTR_ATTR_IMMEDIATE"; + } + Assert(false); + return NULL; +} + +static const char* +_enumToStringImportForeignSchemaType(ImportForeignSchemaType value) { + switch(value) { + case FDW_IMPORT_SCHEMA_ALL: return "FDW_IMPORT_SCHEMA_ALL"; + case FDW_IMPORT_SCHEMA_LIMIT_TO: return "FDW_IMPORT_SCHEMA_LIMIT_TO"; + case FDW_IMPORT_SCHEMA_EXCEPT: return "FDW_IMPORT_SCHEMA_EXCEPT"; + } + Assert(false); + return NULL; +} + +static const char* +_enumToStringRoleStmtType(RoleStmtType value) { + switch(value) { + case ROLESTMT_ROLE: return "ROLESTMT_ROLE"; + case ROLESTMT_USER: return "ROLESTMT_USER"; + case ROLESTMT_GROUP: return "ROLESTMT_GROUP"; + } + Assert(false); + return NULL; +} + +static const char* +_enumToStringFetchDirection(FetchDirection value) { + switch(value) { + case FETCH_FORWARD: return "FETCH_FORWARD"; + case FETCH_BACKWARD: return "FETCH_BACKWARD"; + case FETCH_ABSOLUTE: return "FETCH_ABSOLUTE"; + case FETCH_RELATIVE: return "FETCH_RELATIVE"; + } + Assert(false); + return NULL; +} + +static const char* +_enumToStringFunctionParameterMode(FunctionParameterMode value) { + switch(value) { + case FUNC_PARAM_IN: return "FUNC_PARAM_IN"; + case FUNC_PARAM_OUT: return "FUNC_PARAM_OUT"; + case FUNC_PARAM_INOUT: return "FUNC_PARAM_INOUT"; + case FUNC_PARAM_VARIADIC: return "FUNC_PARAM_VARIADIC"; + case FUNC_PARAM_TABLE: return "FUNC_PARAM_TABLE"; + } + Assert(false); + return NULL; +} + +static const char* +_enumToStringTransactionStmtKind(TransactionStmtKind value) { + switch(value) { + case TRANS_STMT_BEGIN: return "TRANS_STMT_BEGIN"; + case TRANS_STMT_START: return "TRANS_STMT_START"; + case TRANS_STMT_COMMIT: return "TRANS_STMT_COMMIT"; + case TRANS_STMT_ROLLBACK: return "TRANS_STMT_ROLLBACK"; + case TRANS_STMT_SAVEPOINT: return "TRANS_STMT_SAVEPOINT"; + case TRANS_STMT_RELEASE: return "TRANS_STMT_RELEASE"; + case TRANS_STMT_ROLLBACK_TO: return "TRANS_STMT_ROLLBACK_TO"; + case TRANS_STMT_PREPARE: return "TRANS_STMT_PREPARE"; + case TRANS_STMT_COMMIT_PREPARED: return "TRANS_STMT_COMMIT_PREPARED"; + case TRANS_STMT_ROLLBACK_PREPARED: return "TRANS_STMT_ROLLBACK_PREPARED"; + } + Assert(false); + return NULL; +} + +static const char* +_enumToStringViewCheckOption(ViewCheckOption value) { + switch(value) { + case NO_CHECK_OPTION: return "NO_CHECK_OPTION"; + case LOCAL_CHECK_OPTION: return "LOCAL_CHECK_OPTION"; + case CASCADED_CHECK_OPTION: return "CASCADED_CHECK_OPTION"; + } + Assert(false); + return NULL; +} + +static const char* +_enumToStringClusterOption(ClusterOption value) { + switch(value) { + case CLUOPT_RECHECK: return "CLUOPT_RECHECK"; + case CLUOPT_VERBOSE: return "CLUOPT_VERBOSE"; + } + Assert(false); + return NULL; +} + +static const char* +_enumToStringDiscardMode(DiscardMode value) { + switch(value) { + case DISCARD_ALL: return "DISCARD_ALL"; + case DISCARD_PLANS: return "DISCARD_PLANS"; + case DISCARD_SEQUENCES: return "DISCARD_SEQUENCES"; + case DISCARD_TEMP: return "DISCARD_TEMP"; + } + Assert(false); + return NULL; +} + +static const char* +_enumToStringReindexObjectType(ReindexObjectType value) { + switch(value) { + case REINDEX_OBJECT_INDEX: return "REINDEX_OBJECT_INDEX"; + case REINDEX_OBJECT_TABLE: return "REINDEX_OBJECT_TABLE"; + case REINDEX_OBJECT_SCHEMA: return "REINDEX_OBJECT_SCHEMA"; + case REINDEX_OBJECT_SYSTEM: return "REINDEX_OBJECT_SYSTEM"; + case REINDEX_OBJECT_DATABASE: return "REINDEX_OBJECT_DATABASE"; + } + Assert(false); + return NULL; +} + +static const char* +_enumToStringAlterTSConfigType(AlterTSConfigType value) { + switch(value) { + case ALTER_TSCONFIG_ADD_MAPPING: return "ALTER_TSCONFIG_ADD_MAPPING"; + case ALTER_TSCONFIG_ALTER_MAPPING_FOR_TOKEN: return "ALTER_TSCONFIG_ALTER_MAPPING_FOR_TOKEN"; + case ALTER_TSCONFIG_REPLACE_DICT: return "ALTER_TSCONFIG_REPLACE_DICT"; + case ALTER_TSCONFIG_REPLACE_DICT_FOR_TOKEN: return "ALTER_TSCONFIG_REPLACE_DICT_FOR_TOKEN"; + case ALTER_TSCONFIG_DROP_MAPPING: return "ALTER_TSCONFIG_DROP_MAPPING"; + } + Assert(false); + return NULL; +} + +static const char* +_enumToStringAlterSubscriptionType(AlterSubscriptionType value) { + switch(value) { + case ALTER_SUBSCRIPTION_OPTIONS: return "ALTER_SUBSCRIPTION_OPTIONS"; + case ALTER_SUBSCRIPTION_CONNECTION: return "ALTER_SUBSCRIPTION_CONNECTION"; + case ALTER_SUBSCRIPTION_PUBLICATION: return "ALTER_SUBSCRIPTION_PUBLICATION"; + case ALTER_SUBSCRIPTION_REFRESH: return "ALTER_SUBSCRIPTION_REFRESH"; + case ALTER_SUBSCRIPTION_ENABLED: return "ALTER_SUBSCRIPTION_ENABLED"; + } + Assert(false); + return NULL; +} + +static const char* +_enumToStringOnCommitAction(OnCommitAction value) { + switch(value) { + case ONCOMMIT_NOOP: return "ONCOMMIT_NOOP"; + case ONCOMMIT_PRESERVE_ROWS: return "ONCOMMIT_PRESERVE_ROWS"; + case ONCOMMIT_DELETE_ROWS: return "ONCOMMIT_DELETE_ROWS"; + case ONCOMMIT_DROP: return "ONCOMMIT_DROP"; + } + Assert(false); + return NULL; +} + +static const char* +_enumToStringParamKind(ParamKind value) { + switch(value) { + case PARAM_EXTERN: return "PARAM_EXTERN"; + case PARAM_EXEC: return "PARAM_EXEC"; + case PARAM_SUBLINK: return "PARAM_SUBLINK"; + case PARAM_MULTIEXPR: return "PARAM_MULTIEXPR"; + } + Assert(false); + return NULL; +} + +static const char* +_enumToStringCoercionContext(CoercionContext value) { + switch(value) { + case COERCION_IMPLICIT: return "COERCION_IMPLICIT"; + case COERCION_ASSIGNMENT: return "COERCION_ASSIGNMENT"; + case COERCION_EXPLICIT: return "COERCION_EXPLICIT"; + } + Assert(false); + return NULL; +} + +static const char* +_enumToStringCoercionForm(CoercionForm value) { + switch(value) { + case COERCE_EXPLICIT_CALL: return "COERCE_EXPLICIT_CALL"; + case COERCE_EXPLICIT_CAST: return "COERCE_EXPLICIT_CAST"; + case COERCE_IMPLICIT_CAST: return "COERCE_IMPLICIT_CAST"; + } + Assert(false); + return NULL; +} + +static const char* +_enumToStringBoolExprType(BoolExprType value) { + switch(value) { + case AND_EXPR: return "AND_EXPR"; + case OR_EXPR: return "OR_EXPR"; + case NOT_EXPR: return "NOT_EXPR"; + } + Assert(false); + return NULL; +} + +static const char* +_enumToStringSubLinkType(SubLinkType value) { + switch(value) { + case EXISTS_SUBLINK: return "EXISTS_SUBLINK"; + case ALL_SUBLINK: return "ALL_SUBLINK"; + case ANY_SUBLINK: return "ANY_SUBLINK"; + case ROWCOMPARE_SUBLINK: return "ROWCOMPARE_SUBLINK"; + case EXPR_SUBLINK: return "EXPR_SUBLINK"; + case MULTIEXPR_SUBLINK: return "MULTIEXPR_SUBLINK"; + case ARRAY_SUBLINK: return "ARRAY_SUBLINK"; + case CTE_SUBLINK: return "CTE_SUBLINK"; + } + Assert(false); + return NULL; +} + +static const char* +_enumToStringRowCompareType(RowCompareType value) { + switch(value) { + case ROWCOMPARE_LT: return "ROWCOMPARE_LT"; + case ROWCOMPARE_LE: return "ROWCOMPARE_LE"; + case ROWCOMPARE_EQ: return "ROWCOMPARE_EQ"; + case ROWCOMPARE_GE: return "ROWCOMPARE_GE"; + case ROWCOMPARE_GT: return "ROWCOMPARE_GT"; + case ROWCOMPARE_NE: return "ROWCOMPARE_NE"; + } + Assert(false); + return NULL; +} + +static const char* +_enumToStringMinMaxOp(MinMaxOp value) { + switch(value) { + case IS_GREATEST: return "IS_GREATEST"; + case IS_LEAST: return "IS_LEAST"; + } + Assert(false); + return NULL; +} + +static const char* +_enumToStringSQLValueFunctionOp(SQLValueFunctionOp value) { + switch(value) { + case SVFOP_CURRENT_DATE: return "SVFOP_CURRENT_DATE"; + case SVFOP_CURRENT_TIME: return "SVFOP_CURRENT_TIME"; + case SVFOP_CURRENT_TIME_N: return "SVFOP_CURRENT_TIME_N"; + case SVFOP_CURRENT_TIMESTAMP: return "SVFOP_CURRENT_TIMESTAMP"; + case SVFOP_CURRENT_TIMESTAMP_N: return "SVFOP_CURRENT_TIMESTAMP_N"; + case SVFOP_LOCALTIME: return "SVFOP_LOCALTIME"; + case SVFOP_LOCALTIME_N: return "SVFOP_LOCALTIME_N"; + case SVFOP_LOCALTIMESTAMP: return "SVFOP_LOCALTIMESTAMP"; + case SVFOP_LOCALTIMESTAMP_N: return "SVFOP_LOCALTIMESTAMP_N"; + case SVFOP_CURRENT_ROLE: return "SVFOP_CURRENT_ROLE"; + case SVFOP_CURRENT_USER: return "SVFOP_CURRENT_USER"; + case SVFOP_USER: return "SVFOP_USER"; + case SVFOP_SESSION_USER: return "SVFOP_SESSION_USER"; + case SVFOP_CURRENT_CATALOG: return "SVFOP_CURRENT_CATALOG"; + case SVFOP_CURRENT_SCHEMA: return "SVFOP_CURRENT_SCHEMA"; + } + Assert(false); + return NULL; +} + +static const char* +_enumToStringXmlExprOp(XmlExprOp value) { + switch(value) { + case IS_XMLCONCAT: return "IS_XMLCONCAT"; + case IS_XMLELEMENT: return "IS_XMLELEMENT"; + case IS_XMLFOREST: return "IS_XMLFOREST"; + case IS_XMLPARSE: return "IS_XMLPARSE"; + case IS_XMLPI: return "IS_XMLPI"; + case IS_XMLROOT: return "IS_XMLROOT"; + case IS_XMLSERIALIZE: return "IS_XMLSERIALIZE"; + case IS_DOCUMENT: return "IS_DOCUMENT"; + } + Assert(false); + return NULL; +} + +static const char* +_enumToStringXmlOptionType(XmlOptionType value) { + switch(value) { + case XMLOPTION_DOCUMENT: return "XMLOPTION_DOCUMENT"; + case XMLOPTION_CONTENT: return "XMLOPTION_CONTENT"; + } + Assert(false); + return NULL; +} + +static const char* +_enumToStringNullTestType(NullTestType value) { + switch(value) { + case IS_NULL: return "IS_NULL"; + case IS_NOT_NULL: return "IS_NOT_NULL"; + } + Assert(false); + return NULL; +} + +static const char* +_enumToStringBoolTestType(BoolTestType value) { + switch(value) { + case IS_TRUE: return "IS_TRUE"; + case IS_NOT_TRUE: return "IS_NOT_TRUE"; + case IS_FALSE: return "IS_FALSE"; + case IS_NOT_FALSE: return "IS_NOT_FALSE"; + case IS_UNKNOWN: return "IS_UNKNOWN"; + case IS_NOT_UNKNOWN: return "IS_NOT_UNKNOWN"; + } + Assert(false); + return NULL; +} + +static const char* +_enumToStringCmdType(CmdType value) { + switch(value) { + case CMD_UNKNOWN: return "CMD_UNKNOWN"; + case CMD_SELECT: return "CMD_SELECT"; + case CMD_UPDATE: return "CMD_UPDATE"; + case CMD_INSERT: return "CMD_INSERT"; + case CMD_DELETE: return "CMD_DELETE"; + case CMD_UTILITY: return "CMD_UTILITY"; + case CMD_NOTHING: return "CMD_NOTHING"; + } + Assert(false); + return NULL; +} + +static const char* +_enumToStringJoinType(JoinType value) { + switch(value) { + case JOIN_INNER: return "JOIN_INNER"; + case JOIN_LEFT: return "JOIN_LEFT"; + case JOIN_FULL: return "JOIN_FULL"; + case JOIN_RIGHT: return "JOIN_RIGHT"; + case JOIN_SEMI: return "JOIN_SEMI"; + case JOIN_ANTI: return "JOIN_ANTI"; + case JOIN_UNIQUE_OUTER: return "JOIN_UNIQUE_OUTER"; + case JOIN_UNIQUE_INNER: return "JOIN_UNIQUE_INNER"; + } + Assert(false); + return NULL; +} + +static const char* +_enumToStringAggStrategy(AggStrategy value) { + switch(value) { + case AGG_PLAIN: return "AGG_PLAIN"; + case AGG_SORTED: return "AGG_SORTED"; + case AGG_HASHED: return "AGG_HASHED"; + case AGG_MIXED: return "AGG_MIXED"; + } + Assert(false); + return NULL; +} + +static const char* +_enumToStringAggSplit(AggSplit value) { + switch(value) { + case AGGSPLIT_SIMPLE: return "AGGSPLIT_SIMPLE"; + case AGGSPLIT_INITIAL_SERIAL: return "AGGSPLIT_INITIAL_SERIAL"; + case AGGSPLIT_FINAL_DESERIAL: return "AGGSPLIT_FINAL_DESERIAL"; + } + Assert(false); + return NULL; +} + +static const char* +_enumToStringSetOpCmd(SetOpCmd value) { + switch(value) { + case SETOPCMD_INTERSECT: return "SETOPCMD_INTERSECT"; + case SETOPCMD_INTERSECT_ALL: return "SETOPCMD_INTERSECT_ALL"; + case SETOPCMD_EXCEPT: return "SETOPCMD_EXCEPT"; + case SETOPCMD_EXCEPT_ALL: return "SETOPCMD_EXCEPT_ALL"; + } + Assert(false); + return NULL; +} + +static const char* +_enumToStringSetOpStrategy(SetOpStrategy value) { + switch(value) { + case SETOP_SORTED: return "SETOP_SORTED"; + case SETOP_HASHED: return "SETOP_HASHED"; + } + Assert(false); + return NULL; +} + +static const char* +_enumToStringOnConflictAction(OnConflictAction value) { + switch(value) { + case ONCONFLICT_NONE: return "ONCONFLICT_NONE"; + case ONCONFLICT_NOTHING: return "ONCONFLICT_NOTHING"; + case ONCONFLICT_UPDATE: return "ONCONFLICT_UPDATE"; + } + Assert(false); + return NULL; +} + +static const char* +_enumToStringLimitOption(LimitOption value) { + switch(value) { + case LIMIT_OPTION_DEFAULT: return "LIMIT_OPTION_DEFAULT"; + case LIMIT_OPTION_COUNT: return "LIMIT_OPTION_COUNT"; + case LIMIT_OPTION_WITH_TIES: return "LIMIT_OPTION_WITH_TIES"; + } + Assert(false); + return NULL; +} + +static const char* +_enumToStringLockClauseStrength(LockClauseStrength value) { + switch(value) { + case LCS_NONE: return "LCS_NONE"; + case LCS_FORKEYSHARE: return "LCS_FORKEYSHARE"; + case LCS_FORSHARE: return "LCS_FORSHARE"; + case LCS_FORNOKEYUPDATE: return "LCS_FORNOKEYUPDATE"; + case LCS_FORUPDATE: return "LCS_FORUPDATE"; + } + Assert(false); + return NULL; +} + +static const char* +_enumToStringLockWaitPolicy(LockWaitPolicy value) { + switch(value) { + case LockWaitBlock: return "LockWaitBlock"; + case LockWaitSkip: return "LockWaitSkip"; + case LockWaitError: return "LockWaitError"; + } + Assert(false); + return NULL; +} + +static const char* +_enumToStringLockTupleMode(LockTupleMode value) { + switch(value) { + case LockTupleKeyShare: return "LockTupleKeyShare"; + case LockTupleShare: return "LockTupleShare"; + case LockTupleNoKeyExclusive: return "LockTupleNoKeyExclusive"; + case LockTupleExclusive: return "LockTupleExclusive"; + } + Assert(false); + return NULL; +}static int +_enumToIntOverridingKind(OverridingKind value) { + switch(value) { + case OVERRIDING_NOT_SET: return 1; + case OVERRIDING_USER_VALUE: return 2; + case OVERRIDING_SYSTEM_VALUE: return 3; + } + Assert(false); + return -1; +} + +static int +_enumToIntQuerySource(QuerySource value) { + switch(value) { + case QSRC_ORIGINAL: return 1; + case QSRC_PARSER: return 2; + case QSRC_INSTEAD_RULE: return 3; + case QSRC_QUAL_INSTEAD_RULE: return 4; + case QSRC_NON_INSTEAD_RULE: return 5; + } + Assert(false); + return -1; +} + +static int +_enumToIntSortByDir(SortByDir value) { + switch(value) { + case SORTBY_DEFAULT: return 1; + case SORTBY_ASC: return 2; + case SORTBY_DESC: return 3; + case SORTBY_USING: return 4; + } + Assert(false); + return -1; +} + +static int +_enumToIntSortByNulls(SortByNulls value) { + switch(value) { + case SORTBY_NULLS_DEFAULT: return 1; + case SORTBY_NULLS_FIRST: return 2; + case SORTBY_NULLS_LAST: return 3; + } + Assert(false); + return -1; +} + +static int +_enumToIntA_Expr_Kind(A_Expr_Kind value) { + switch(value) { + case AEXPR_OP: return 1; + case AEXPR_OP_ANY: return 2; + case AEXPR_OP_ALL: return 3; + case AEXPR_DISTINCT: return 4; + case AEXPR_NOT_DISTINCT: return 5; + case AEXPR_NULLIF: return 6; + case AEXPR_OF: return 7; + case AEXPR_IN: return 8; + case AEXPR_LIKE: return 9; + case AEXPR_ILIKE: return 10; + case AEXPR_SIMILAR: return 11; + case AEXPR_BETWEEN: return 12; + case AEXPR_NOT_BETWEEN: return 13; + case AEXPR_BETWEEN_SYM: return 14; + case AEXPR_NOT_BETWEEN_SYM: return 15; + case AEXPR_PAREN: return 16; + } + Assert(false); + return -1; +} + +static int +_enumToIntRoleSpecType(RoleSpecType value) { + switch(value) { + case ROLESPEC_CSTRING: return 1; + case ROLESPEC_CURRENT_USER: return 2; + case ROLESPEC_SESSION_USER: return 3; + case ROLESPEC_PUBLIC: return 4; + } + Assert(false); + return -1; +} + +static int +_enumToIntTableLikeOption(TableLikeOption value) { + switch(value) { + case CREATE_TABLE_LIKE_COMMENTS: return 1; + case CREATE_TABLE_LIKE_CONSTRAINTS: return 2; + case CREATE_TABLE_LIKE_DEFAULTS: return 3; + case CREATE_TABLE_LIKE_GENERATED: return 4; + case CREATE_TABLE_LIKE_IDENTITY: return 5; + case CREATE_TABLE_LIKE_INDEXES: return 6; + case CREATE_TABLE_LIKE_STATISTICS: return 7; + case CREATE_TABLE_LIKE_STORAGE: return 8; + case CREATE_TABLE_LIKE_ALL: return 9; + } + Assert(false); + return -1; +} + +static int +_enumToIntDefElemAction(DefElemAction value) { + switch(value) { + case DEFELEM_UNSPEC: return 1; + case DEFELEM_SET: return 2; + case DEFELEM_ADD: return 3; + case DEFELEM_DROP: return 4; + } + Assert(false); + return -1; +} + +static int +_enumToIntPartitionRangeDatumKind(PartitionRangeDatumKind value) { + switch(value) { + case PARTITION_RANGE_DATUM_MINVALUE: return 1; + case PARTITION_RANGE_DATUM_VALUE: return 2; + case PARTITION_RANGE_DATUM_MAXVALUE: return 3; + } + Assert(false); + return -1; +} + +static int +_enumToIntRTEKind(RTEKind value) { + switch(value) { + case RTE_RELATION: return 1; + case RTE_SUBQUERY: return 2; + case RTE_JOIN: return 3; + case RTE_FUNCTION: return 4; + case RTE_TABLEFUNC: return 5; + case RTE_VALUES: return 6; + case RTE_CTE: return 7; + case RTE_NAMEDTUPLESTORE: return 8; + case RTE_RESULT: return 9; + } + Assert(false); + return -1; +} + +static int +_enumToIntWCOKind(WCOKind value) { + switch(value) { + case WCO_VIEW_CHECK: return 1; + case WCO_RLS_INSERT_CHECK: return 2; + case WCO_RLS_UPDATE_CHECK: return 3; + case WCO_RLS_CONFLICT_CHECK: return 4; + } + Assert(false); + return -1; +} + +static int +_enumToIntGroupingSetKind(GroupingSetKind value) { + switch(value) { + case GROUPING_SET_EMPTY: return 1; + case GROUPING_SET_SIMPLE: return 2; + case GROUPING_SET_ROLLUP: return 3; + case GROUPING_SET_CUBE: return 4; + case GROUPING_SET_SETS: return 5; + } + Assert(false); + return -1; +} + +static int +_enumToIntCTEMaterialize(CTEMaterialize value) { + switch(value) { + case CTEMaterializeDefault: return 1; + case CTEMaterializeAlways: return 2; + case CTEMaterializeNever: return 3; + } + Assert(false); + return -1; +} + +static int +_enumToIntSetOperation(SetOperation value) { + switch(value) { + case SETOP_NONE: return 1; + case SETOP_UNION: return 2; + case SETOP_INTERSECT: return 3; + case SETOP_EXCEPT: return 4; + } + Assert(false); + return -1; +} + +static int +_enumToIntObjectType(ObjectType value) { + switch(value) { + case OBJECT_ACCESS_METHOD: return 1; + case OBJECT_AGGREGATE: return 2; + case OBJECT_AMOP: return 3; + case OBJECT_AMPROC: return 4; + case OBJECT_ATTRIBUTE: return 5; + case OBJECT_CAST: return 6; + case OBJECT_COLUMN: return 7; + case OBJECT_COLLATION: return 8; + case OBJECT_CONVERSION: return 9; + case OBJECT_DATABASE: return 10; + case OBJECT_DEFAULT: return 11; + case OBJECT_DEFACL: return 12; + case OBJECT_DOMAIN: return 13; + case OBJECT_DOMCONSTRAINT: return 14; + case OBJECT_EVENT_TRIGGER: return 15; + case OBJECT_EXTENSION: return 16; + case OBJECT_FDW: return 17; + case OBJECT_FOREIGN_SERVER: return 18; + case OBJECT_FOREIGN_TABLE: return 19; + case OBJECT_FUNCTION: return 20; + case OBJECT_INDEX: return 21; + case OBJECT_LANGUAGE: return 22; + case OBJECT_LARGEOBJECT: return 23; + case OBJECT_MATVIEW: return 24; + case OBJECT_OPCLASS: return 25; + case OBJECT_OPERATOR: return 26; + case OBJECT_OPFAMILY: return 27; + case OBJECT_POLICY: return 28; + case OBJECT_PROCEDURE: return 29; + case OBJECT_PUBLICATION: return 30; + case OBJECT_PUBLICATION_REL: return 31; + case OBJECT_ROLE: return 32; + case OBJECT_ROUTINE: return 33; + case OBJECT_RULE: return 34; + case OBJECT_SCHEMA: return 35; + case OBJECT_SEQUENCE: return 36; + case OBJECT_SUBSCRIPTION: return 37; + case OBJECT_STATISTIC_EXT: return 38; + case OBJECT_TABCONSTRAINT: return 39; + case OBJECT_TABLE: return 40; + case OBJECT_TABLESPACE: return 41; + case OBJECT_TRANSFORM: return 42; + case OBJECT_TRIGGER: return 43; + case OBJECT_TSCONFIGURATION: return 44; + case OBJECT_TSDICTIONARY: return 45; + case OBJECT_TSPARSER: return 46; + case OBJECT_TSTEMPLATE: return 47; + case OBJECT_TYPE: return 48; + case OBJECT_USER_MAPPING: return 49; + case OBJECT_VIEW: return 50; + } + Assert(false); + return -1; +} + +static int +_enumToIntDropBehavior(DropBehavior value) { + switch(value) { + case DROP_RESTRICT: return 1; + case DROP_CASCADE: return 2; + } + Assert(false); + return -1; +} + +static int +_enumToIntAlterTableType(AlterTableType value) { + switch(value) { + case AT_AddColumn: return 1; + case AT_AddColumnRecurse: return 2; + case AT_AddColumnToView: return 3; + case AT_ColumnDefault: return 4; + case AT_CookedColumnDefault: return 5; + case AT_DropNotNull: return 6; + case AT_SetNotNull: return 7; + case AT_DropExpression: return 8; + case AT_CheckNotNull: return 9; + case AT_SetStatistics: return 10; + case AT_SetOptions: return 11; + case AT_ResetOptions: return 12; + case AT_SetStorage: return 13; + case AT_DropColumn: return 14; + case AT_DropColumnRecurse: return 15; + case AT_AddIndex: return 16; + case AT_ReAddIndex: return 17; + case AT_AddConstraint: return 18; + case AT_AddConstraintRecurse: return 19; + case AT_ReAddConstraint: return 20; + case AT_ReAddDomainConstraint: return 21; + case AT_AlterConstraint: return 22; + case AT_ValidateConstraint: return 23; + case AT_ValidateConstraintRecurse: return 24; + case AT_AddIndexConstraint: return 25; + case AT_DropConstraint: return 26; + case AT_DropConstraintRecurse: return 27; + case AT_ReAddComment: return 28; + case AT_AlterColumnType: return 29; + case AT_AlterColumnGenericOptions: return 30; + case AT_ChangeOwner: return 31; + case AT_ClusterOn: return 32; + case AT_DropCluster: return 33; + case AT_SetLogged: return 34; + case AT_SetUnLogged: return 35; + case AT_DropOids: return 36; + case AT_SetTableSpace: return 37; + case AT_SetRelOptions: return 38; + case AT_ResetRelOptions: return 39; + case AT_ReplaceRelOptions: return 40; + case AT_EnableTrig: return 41; + case AT_EnableAlwaysTrig: return 42; + case AT_EnableReplicaTrig: return 43; + case AT_DisableTrig: return 44; + case AT_EnableTrigAll: return 45; + case AT_DisableTrigAll: return 46; + case AT_EnableTrigUser: return 47; + case AT_DisableTrigUser: return 48; + case AT_EnableRule: return 49; + case AT_EnableAlwaysRule: return 50; + case AT_EnableReplicaRule: return 51; + case AT_DisableRule: return 52; + case AT_AddInherit: return 53; + case AT_DropInherit: return 54; + case AT_AddOf: return 55; + case AT_DropOf: return 56; + case AT_ReplicaIdentity: return 57; + case AT_EnableRowSecurity: return 58; + case AT_DisableRowSecurity: return 59; + case AT_ForceRowSecurity: return 60; + case AT_NoForceRowSecurity: return 61; + case AT_GenericOptions: return 62; + case AT_AttachPartition: return 63; + case AT_DetachPartition: return 64; + case AT_AddIdentity: return 65; + case AT_SetIdentity: return 66; + case AT_DropIdentity: return 67; + } + Assert(false); + return -1; +} + +static int +_enumToIntGrantTargetType(GrantTargetType value) { + switch(value) { + case ACL_TARGET_OBJECT: return 1; + case ACL_TARGET_ALL_IN_SCHEMA: return 2; + case ACL_TARGET_DEFAULTS: return 3; + } + Assert(false); + return -1; +} + +static int +_enumToIntVariableSetKind(VariableSetKind value) { + switch(value) { + case VAR_SET_VALUE: return 1; + case VAR_SET_DEFAULT: return 2; + case VAR_SET_CURRENT: return 3; + case VAR_SET_MULTI: return 4; + case VAR_RESET: return 5; + case VAR_RESET_ALL: return 6; + } + Assert(false); + return -1; +} + +static int +_enumToIntConstrType(ConstrType value) { + switch(value) { + case CONSTR_NULL: return 1; + case CONSTR_NOTNULL: return 2; + case CONSTR_DEFAULT: return 3; + case CONSTR_IDENTITY: return 4; + case CONSTR_GENERATED: return 5; + case CONSTR_CHECK: return 6; + case CONSTR_PRIMARY: return 7; + case CONSTR_UNIQUE: return 8; + case CONSTR_EXCLUSION: return 9; + case CONSTR_FOREIGN: return 10; + case CONSTR_ATTR_DEFERRABLE: return 11; + case CONSTR_ATTR_NOT_DEFERRABLE: return 12; + case CONSTR_ATTR_DEFERRED: return 13; + case CONSTR_ATTR_IMMEDIATE: return 14; + } + Assert(false); + return -1; +} + +static int +_enumToIntImportForeignSchemaType(ImportForeignSchemaType value) { + switch(value) { + case FDW_IMPORT_SCHEMA_ALL: return 1; + case FDW_IMPORT_SCHEMA_LIMIT_TO: return 2; + case FDW_IMPORT_SCHEMA_EXCEPT: return 3; + } + Assert(false); + return -1; +} + +static int +_enumToIntRoleStmtType(RoleStmtType value) { + switch(value) { + case ROLESTMT_ROLE: return 1; + case ROLESTMT_USER: return 2; + case ROLESTMT_GROUP: return 3; + } + Assert(false); + return -1; +} + +static int +_enumToIntFetchDirection(FetchDirection value) { + switch(value) { + case FETCH_FORWARD: return 1; + case FETCH_BACKWARD: return 2; + case FETCH_ABSOLUTE: return 3; + case FETCH_RELATIVE: return 4; + } + Assert(false); + return -1; +} + +static int +_enumToIntFunctionParameterMode(FunctionParameterMode value) { + switch(value) { + case FUNC_PARAM_IN: return 1; + case FUNC_PARAM_OUT: return 2; + case FUNC_PARAM_INOUT: return 3; + case FUNC_PARAM_VARIADIC: return 4; + case FUNC_PARAM_TABLE: return 5; + } + Assert(false); + return -1; +} + +static int +_enumToIntTransactionStmtKind(TransactionStmtKind value) { + switch(value) { + case TRANS_STMT_BEGIN: return 1; + case TRANS_STMT_START: return 2; + case TRANS_STMT_COMMIT: return 3; + case TRANS_STMT_ROLLBACK: return 4; + case TRANS_STMT_SAVEPOINT: return 5; + case TRANS_STMT_RELEASE: return 6; + case TRANS_STMT_ROLLBACK_TO: return 7; + case TRANS_STMT_PREPARE: return 8; + case TRANS_STMT_COMMIT_PREPARED: return 9; + case TRANS_STMT_ROLLBACK_PREPARED: return 10; + } + Assert(false); + return -1; +} + +static int +_enumToIntViewCheckOption(ViewCheckOption value) { + switch(value) { + case NO_CHECK_OPTION: return 1; + case LOCAL_CHECK_OPTION: return 2; + case CASCADED_CHECK_OPTION: return 3; + } + Assert(false); + return -1; +} + +static int +_enumToIntClusterOption(ClusterOption value) { + switch(value) { + case CLUOPT_RECHECK: return 1; + case CLUOPT_VERBOSE: return 2; + } + Assert(false); + return -1; +} + +static int +_enumToIntDiscardMode(DiscardMode value) { + switch(value) { + case DISCARD_ALL: return 1; + case DISCARD_PLANS: return 2; + case DISCARD_SEQUENCES: return 3; + case DISCARD_TEMP: return 4; + } + Assert(false); + return -1; +} + +static int +_enumToIntReindexObjectType(ReindexObjectType value) { + switch(value) { + case REINDEX_OBJECT_INDEX: return 1; + case REINDEX_OBJECT_TABLE: return 2; + case REINDEX_OBJECT_SCHEMA: return 3; + case REINDEX_OBJECT_SYSTEM: return 4; + case REINDEX_OBJECT_DATABASE: return 5; + } + Assert(false); + return -1; +} + +static int +_enumToIntAlterTSConfigType(AlterTSConfigType value) { + switch(value) { + case ALTER_TSCONFIG_ADD_MAPPING: return 1; + case ALTER_TSCONFIG_ALTER_MAPPING_FOR_TOKEN: return 2; + case ALTER_TSCONFIG_REPLACE_DICT: return 3; + case ALTER_TSCONFIG_REPLACE_DICT_FOR_TOKEN: return 4; + case ALTER_TSCONFIG_DROP_MAPPING: return 5; + } + Assert(false); + return -1; +} + +static int +_enumToIntAlterSubscriptionType(AlterSubscriptionType value) { + switch(value) { + case ALTER_SUBSCRIPTION_OPTIONS: return 1; + case ALTER_SUBSCRIPTION_CONNECTION: return 2; + case ALTER_SUBSCRIPTION_PUBLICATION: return 3; + case ALTER_SUBSCRIPTION_REFRESH: return 4; + case ALTER_SUBSCRIPTION_ENABLED: return 5; + } + Assert(false); + return -1; +} + +static int +_enumToIntOnCommitAction(OnCommitAction value) { + switch(value) { + case ONCOMMIT_NOOP: return 1; + case ONCOMMIT_PRESERVE_ROWS: return 2; + case ONCOMMIT_DELETE_ROWS: return 3; + case ONCOMMIT_DROP: return 4; + } + Assert(false); + return -1; +} + +static int +_enumToIntParamKind(ParamKind value) { + switch(value) { + case PARAM_EXTERN: return 1; + case PARAM_EXEC: return 2; + case PARAM_SUBLINK: return 3; + case PARAM_MULTIEXPR: return 4; + } + Assert(false); + return -1; +} + +static int +_enumToIntCoercionContext(CoercionContext value) { + switch(value) { + case COERCION_IMPLICIT: return 1; + case COERCION_ASSIGNMENT: return 2; + case COERCION_EXPLICIT: return 3; + } + Assert(false); + return -1; +} + +static int +_enumToIntCoercionForm(CoercionForm value) { + switch(value) { + case COERCE_EXPLICIT_CALL: return 1; + case COERCE_EXPLICIT_CAST: return 2; + case COERCE_IMPLICIT_CAST: return 3; + } + Assert(false); + return -1; +} + +static int +_enumToIntBoolExprType(BoolExprType value) { + switch(value) { + case AND_EXPR: return 1; + case OR_EXPR: return 2; + case NOT_EXPR: return 3; + } + Assert(false); + return -1; +} + +static int +_enumToIntSubLinkType(SubLinkType value) { + switch(value) { + case EXISTS_SUBLINK: return 1; + case ALL_SUBLINK: return 2; + case ANY_SUBLINK: return 3; + case ROWCOMPARE_SUBLINK: return 4; + case EXPR_SUBLINK: return 5; + case MULTIEXPR_SUBLINK: return 6; + case ARRAY_SUBLINK: return 7; + case CTE_SUBLINK: return 8; + } + Assert(false); + return -1; +} + +static int +_enumToIntRowCompareType(RowCompareType value) { + switch(value) { + case ROWCOMPARE_LT: return 1; + case ROWCOMPARE_LE: return 2; + case ROWCOMPARE_EQ: return 3; + case ROWCOMPARE_GE: return 4; + case ROWCOMPARE_GT: return 5; + case ROWCOMPARE_NE: return 6; + } + Assert(false); + return -1; +} + +static int +_enumToIntMinMaxOp(MinMaxOp value) { + switch(value) { + case IS_GREATEST: return 1; + case IS_LEAST: return 2; + } + Assert(false); + return -1; +} + +static int +_enumToIntSQLValueFunctionOp(SQLValueFunctionOp value) { + switch(value) { + case SVFOP_CURRENT_DATE: return 1; + case SVFOP_CURRENT_TIME: return 2; + case SVFOP_CURRENT_TIME_N: return 3; + case SVFOP_CURRENT_TIMESTAMP: return 4; + case SVFOP_CURRENT_TIMESTAMP_N: return 5; + case SVFOP_LOCALTIME: return 6; + case SVFOP_LOCALTIME_N: return 7; + case SVFOP_LOCALTIMESTAMP: return 8; + case SVFOP_LOCALTIMESTAMP_N: return 9; + case SVFOP_CURRENT_ROLE: return 10; + case SVFOP_CURRENT_USER: return 11; + case SVFOP_USER: return 12; + case SVFOP_SESSION_USER: return 13; + case SVFOP_CURRENT_CATALOG: return 14; + case SVFOP_CURRENT_SCHEMA: return 15; + } + Assert(false); + return -1; +} + +static int +_enumToIntXmlExprOp(XmlExprOp value) { + switch(value) { + case IS_XMLCONCAT: return 1; + case IS_XMLELEMENT: return 2; + case IS_XMLFOREST: return 3; + case IS_XMLPARSE: return 4; + case IS_XMLPI: return 5; + case IS_XMLROOT: return 6; + case IS_XMLSERIALIZE: return 7; + case IS_DOCUMENT: return 8; + } + Assert(false); + return -1; +} + +static int +_enumToIntXmlOptionType(XmlOptionType value) { + switch(value) { + case XMLOPTION_DOCUMENT: return 1; + case XMLOPTION_CONTENT: return 2; + } + Assert(false); + return -1; +} + +static int +_enumToIntNullTestType(NullTestType value) { + switch(value) { + case IS_NULL: return 1; + case IS_NOT_NULL: return 2; + } + Assert(false); + return -1; +} + +static int +_enumToIntBoolTestType(BoolTestType value) { + switch(value) { + case IS_TRUE: return 1; + case IS_NOT_TRUE: return 2; + case IS_FALSE: return 3; + case IS_NOT_FALSE: return 4; + case IS_UNKNOWN: return 5; + case IS_NOT_UNKNOWN: return 6; + } + Assert(false); + return -1; +} + +static int +_enumToIntCmdType(CmdType value) { + switch(value) { + case CMD_UNKNOWN: return 1; + case CMD_SELECT: return 2; + case CMD_UPDATE: return 3; + case CMD_INSERT: return 4; + case CMD_DELETE: return 5; + case CMD_UTILITY: return 6; + case CMD_NOTHING: return 7; + } + Assert(false); + return -1; +} + +static int +_enumToIntJoinType(JoinType value) { + switch(value) { + case JOIN_INNER: return 1; + case JOIN_LEFT: return 2; + case JOIN_FULL: return 3; + case JOIN_RIGHT: return 4; + case JOIN_SEMI: return 5; + case JOIN_ANTI: return 6; + case JOIN_UNIQUE_OUTER: return 7; + case JOIN_UNIQUE_INNER: return 8; + } + Assert(false); + return -1; +} + +static int +_enumToIntAggStrategy(AggStrategy value) { + switch(value) { + case AGG_PLAIN: return 1; + case AGG_SORTED: return 2; + case AGG_HASHED: return 3; + case AGG_MIXED: return 4; + } + Assert(false); + return -1; +} + +static int +_enumToIntAggSplit(AggSplit value) { + switch(value) { + case AGGSPLIT_SIMPLE: return 1; + case AGGSPLIT_INITIAL_SERIAL: return 2; + case AGGSPLIT_FINAL_DESERIAL: return 3; + } + Assert(false); + return -1; +} + +static int +_enumToIntSetOpCmd(SetOpCmd value) { + switch(value) { + case SETOPCMD_INTERSECT: return 1; + case SETOPCMD_INTERSECT_ALL: return 2; + case SETOPCMD_EXCEPT: return 3; + case SETOPCMD_EXCEPT_ALL: return 4; + } + Assert(false); + return -1; +} + +static int +_enumToIntSetOpStrategy(SetOpStrategy value) { + switch(value) { + case SETOP_SORTED: return 1; + case SETOP_HASHED: return 2; + } + Assert(false); + return -1; +} + +static int +_enumToIntOnConflictAction(OnConflictAction value) { + switch(value) { + case ONCONFLICT_NONE: return 1; + case ONCONFLICT_NOTHING: return 2; + case ONCONFLICT_UPDATE: return 3; + } + Assert(false); + return -1; +} + +static int +_enumToIntLimitOption(LimitOption value) { + switch(value) { + case LIMIT_OPTION_DEFAULT: return 1; + case LIMIT_OPTION_COUNT: return 2; + case LIMIT_OPTION_WITH_TIES: return 3; + } + Assert(false); + return -1; +} + +static int +_enumToIntLockClauseStrength(LockClauseStrength value) { + switch(value) { + case LCS_NONE: return 1; + case LCS_FORKEYSHARE: return 2; + case LCS_FORSHARE: return 3; + case LCS_FORNOKEYUPDATE: return 4; + case LCS_FORUPDATE: return 5; + } + Assert(false); + return -1; +} + +static int +_enumToIntLockWaitPolicy(LockWaitPolicy value) { + switch(value) { + case LockWaitBlock: return 1; + case LockWaitSkip: return 2; + case LockWaitError: return 3; + } + Assert(false); + return -1; +} + +static int +_enumToIntLockTupleMode(LockTupleMode value) { + switch(value) { + case LockTupleKeyShare: return 1; + case LockTupleShare: return 2; + case LockTupleNoKeyExclusive: return 3; + case LockTupleExclusive: return 4; + } + Assert(false); + return -1; +}static OverridingKind +_intToEnumOverridingKind(int value) { + switch(value) { + case 1: return OVERRIDING_NOT_SET; + case 2: return OVERRIDING_USER_VALUE; + case 3: return OVERRIDING_SYSTEM_VALUE; + } + Assert(false); + return OVERRIDING_NOT_SET; +} + +static QuerySource +_intToEnumQuerySource(int value) { + switch(value) { + case 1: return QSRC_ORIGINAL; + case 2: return QSRC_PARSER; + case 3: return QSRC_INSTEAD_RULE; + case 4: return QSRC_QUAL_INSTEAD_RULE; + case 5: return QSRC_NON_INSTEAD_RULE; + } + Assert(false); + return QSRC_ORIGINAL; +} + +static SortByDir +_intToEnumSortByDir(int value) { + switch(value) { + case 1: return SORTBY_DEFAULT; + case 2: return SORTBY_ASC; + case 3: return SORTBY_DESC; + case 4: return SORTBY_USING; + } + Assert(false); + return SORTBY_DEFAULT; +} + +static SortByNulls +_intToEnumSortByNulls(int value) { + switch(value) { + case 1: return SORTBY_NULLS_DEFAULT; + case 2: return SORTBY_NULLS_FIRST; + case 3: return SORTBY_NULLS_LAST; + } + Assert(false); + return SORTBY_NULLS_DEFAULT; +} + +static A_Expr_Kind +_intToEnumA_Expr_Kind(int value) { + switch(value) { + case 1: return AEXPR_OP; + case 2: return AEXPR_OP_ANY; + case 3: return AEXPR_OP_ALL; + case 4: return AEXPR_DISTINCT; + case 5: return AEXPR_NOT_DISTINCT; + case 6: return AEXPR_NULLIF; + case 7: return AEXPR_OF; + case 8: return AEXPR_IN; + case 9: return AEXPR_LIKE; + case 10: return AEXPR_ILIKE; + case 11: return AEXPR_SIMILAR; + case 12: return AEXPR_BETWEEN; + case 13: return AEXPR_NOT_BETWEEN; + case 14: return AEXPR_BETWEEN_SYM; + case 15: return AEXPR_NOT_BETWEEN_SYM; + case 16: return AEXPR_PAREN; + } + Assert(false); + return AEXPR_OP; +} + +static RoleSpecType +_intToEnumRoleSpecType(int value) { + switch(value) { + case 1: return ROLESPEC_CSTRING; + case 2: return ROLESPEC_CURRENT_USER; + case 3: return ROLESPEC_SESSION_USER; + case 4: return ROLESPEC_PUBLIC; + } + Assert(false); + return ROLESPEC_CSTRING; +} + +static TableLikeOption +_intToEnumTableLikeOption(int value) { + switch(value) { + case 1: return CREATE_TABLE_LIKE_COMMENTS; + case 2: return CREATE_TABLE_LIKE_CONSTRAINTS; + case 3: return CREATE_TABLE_LIKE_DEFAULTS; + case 4: return CREATE_TABLE_LIKE_GENERATED; + case 5: return CREATE_TABLE_LIKE_IDENTITY; + case 6: return CREATE_TABLE_LIKE_INDEXES; + case 7: return CREATE_TABLE_LIKE_STATISTICS; + case 8: return CREATE_TABLE_LIKE_STORAGE; + case 9: return CREATE_TABLE_LIKE_ALL; + } + Assert(false); + return CREATE_TABLE_LIKE_COMMENTS; +} + +static DefElemAction +_intToEnumDefElemAction(int value) { + switch(value) { + case 1: return DEFELEM_UNSPEC; + case 2: return DEFELEM_SET; + case 3: return DEFELEM_ADD; + case 4: return DEFELEM_DROP; + } + Assert(false); + return DEFELEM_UNSPEC; +} + +static PartitionRangeDatumKind +_intToEnumPartitionRangeDatumKind(int value) { + switch(value) { + case 1: return PARTITION_RANGE_DATUM_MINVALUE; + case 2: return PARTITION_RANGE_DATUM_VALUE; + case 3: return PARTITION_RANGE_DATUM_MAXVALUE; + } + Assert(false); + return PARTITION_RANGE_DATUM_MINVALUE; +} + +static RTEKind +_intToEnumRTEKind(int value) { + switch(value) { + case 1: return RTE_RELATION; + case 2: return RTE_SUBQUERY; + case 3: return RTE_JOIN; + case 4: return RTE_FUNCTION; + case 5: return RTE_TABLEFUNC; + case 6: return RTE_VALUES; + case 7: return RTE_CTE; + case 8: return RTE_NAMEDTUPLESTORE; + case 9: return RTE_RESULT; + } + Assert(false); + return RTE_RELATION; +} + +static WCOKind +_intToEnumWCOKind(int value) { + switch(value) { + case 1: return WCO_VIEW_CHECK; + case 2: return WCO_RLS_INSERT_CHECK; + case 3: return WCO_RLS_UPDATE_CHECK; + case 4: return WCO_RLS_CONFLICT_CHECK; + } + Assert(false); + return WCO_VIEW_CHECK; +} + +static GroupingSetKind +_intToEnumGroupingSetKind(int value) { + switch(value) { + case 1: return GROUPING_SET_EMPTY; + case 2: return GROUPING_SET_SIMPLE; + case 3: return GROUPING_SET_ROLLUP; + case 4: return GROUPING_SET_CUBE; + case 5: return GROUPING_SET_SETS; + } + Assert(false); + return GROUPING_SET_EMPTY; +} + +static CTEMaterialize +_intToEnumCTEMaterialize(int value) { + switch(value) { + case 1: return CTEMaterializeDefault; + case 2: return CTEMaterializeAlways; + case 3: return CTEMaterializeNever; + } + Assert(false); + return CTEMaterializeDefault; +} + +static SetOperation +_intToEnumSetOperation(int value) { + switch(value) { + case 1: return SETOP_NONE; + case 2: return SETOP_UNION; + case 3: return SETOP_INTERSECT; + case 4: return SETOP_EXCEPT; + } + Assert(false); + return SETOP_NONE; +} + +static ObjectType +_intToEnumObjectType(int value) { + switch(value) { + case 1: return OBJECT_ACCESS_METHOD; + case 2: return OBJECT_AGGREGATE; + case 3: return OBJECT_AMOP; + case 4: return OBJECT_AMPROC; + case 5: return OBJECT_ATTRIBUTE; + case 6: return OBJECT_CAST; + case 7: return OBJECT_COLUMN; + case 8: return OBJECT_COLLATION; + case 9: return OBJECT_CONVERSION; + case 10: return OBJECT_DATABASE; + case 11: return OBJECT_DEFAULT; + case 12: return OBJECT_DEFACL; + case 13: return OBJECT_DOMAIN; + case 14: return OBJECT_DOMCONSTRAINT; + case 15: return OBJECT_EVENT_TRIGGER; + case 16: return OBJECT_EXTENSION; + case 17: return OBJECT_FDW; + case 18: return OBJECT_FOREIGN_SERVER; + case 19: return OBJECT_FOREIGN_TABLE; + case 20: return OBJECT_FUNCTION; + case 21: return OBJECT_INDEX; + case 22: return OBJECT_LANGUAGE; + case 23: return OBJECT_LARGEOBJECT; + case 24: return OBJECT_MATVIEW; + case 25: return OBJECT_OPCLASS; + case 26: return OBJECT_OPERATOR; + case 27: return OBJECT_OPFAMILY; + case 28: return OBJECT_POLICY; + case 29: return OBJECT_PROCEDURE; + case 30: return OBJECT_PUBLICATION; + case 31: return OBJECT_PUBLICATION_REL; + case 32: return OBJECT_ROLE; + case 33: return OBJECT_ROUTINE; + case 34: return OBJECT_RULE; + case 35: return OBJECT_SCHEMA; + case 36: return OBJECT_SEQUENCE; + case 37: return OBJECT_SUBSCRIPTION; + case 38: return OBJECT_STATISTIC_EXT; + case 39: return OBJECT_TABCONSTRAINT; + case 40: return OBJECT_TABLE; + case 41: return OBJECT_TABLESPACE; + case 42: return OBJECT_TRANSFORM; + case 43: return OBJECT_TRIGGER; + case 44: return OBJECT_TSCONFIGURATION; + case 45: return OBJECT_TSDICTIONARY; + case 46: return OBJECT_TSPARSER; + case 47: return OBJECT_TSTEMPLATE; + case 48: return OBJECT_TYPE; + case 49: return OBJECT_USER_MAPPING; + case 50: return OBJECT_VIEW; + } + Assert(false); + return OBJECT_ACCESS_METHOD; +} + +static DropBehavior +_intToEnumDropBehavior(int value) { + switch(value) { + case 1: return DROP_RESTRICT; + case 2: return DROP_CASCADE; + } + Assert(false); + return DROP_RESTRICT; +} + +static AlterTableType +_intToEnumAlterTableType(int value) { + switch(value) { + case 1: return AT_AddColumn; + case 2: return AT_AddColumnRecurse; + case 3: return AT_AddColumnToView; + case 4: return AT_ColumnDefault; + case 5: return AT_CookedColumnDefault; + case 6: return AT_DropNotNull; + case 7: return AT_SetNotNull; + case 8: return AT_DropExpression; + case 9: return AT_CheckNotNull; + case 10: return AT_SetStatistics; + case 11: return AT_SetOptions; + case 12: return AT_ResetOptions; + case 13: return AT_SetStorage; + case 14: return AT_DropColumn; + case 15: return AT_DropColumnRecurse; + case 16: return AT_AddIndex; + case 17: return AT_ReAddIndex; + case 18: return AT_AddConstraint; + case 19: return AT_AddConstraintRecurse; + case 20: return AT_ReAddConstraint; + case 21: return AT_ReAddDomainConstraint; + case 22: return AT_AlterConstraint; + case 23: return AT_ValidateConstraint; + case 24: return AT_ValidateConstraintRecurse; + case 25: return AT_AddIndexConstraint; + case 26: return AT_DropConstraint; + case 27: return AT_DropConstraintRecurse; + case 28: return AT_ReAddComment; + case 29: return AT_AlterColumnType; + case 30: return AT_AlterColumnGenericOptions; + case 31: return AT_ChangeOwner; + case 32: return AT_ClusterOn; + case 33: return AT_DropCluster; + case 34: return AT_SetLogged; + case 35: return AT_SetUnLogged; + case 36: return AT_DropOids; + case 37: return AT_SetTableSpace; + case 38: return AT_SetRelOptions; + case 39: return AT_ResetRelOptions; + case 40: return AT_ReplaceRelOptions; + case 41: return AT_EnableTrig; + case 42: return AT_EnableAlwaysTrig; + case 43: return AT_EnableReplicaTrig; + case 44: return AT_DisableTrig; + case 45: return AT_EnableTrigAll; + case 46: return AT_DisableTrigAll; + case 47: return AT_EnableTrigUser; + case 48: return AT_DisableTrigUser; + case 49: return AT_EnableRule; + case 50: return AT_EnableAlwaysRule; + case 51: return AT_EnableReplicaRule; + case 52: return AT_DisableRule; + case 53: return AT_AddInherit; + case 54: return AT_DropInherit; + case 55: return AT_AddOf; + case 56: return AT_DropOf; + case 57: return AT_ReplicaIdentity; + case 58: return AT_EnableRowSecurity; + case 59: return AT_DisableRowSecurity; + case 60: return AT_ForceRowSecurity; + case 61: return AT_NoForceRowSecurity; + case 62: return AT_GenericOptions; + case 63: return AT_AttachPartition; + case 64: return AT_DetachPartition; + case 65: return AT_AddIdentity; + case 66: return AT_SetIdentity; + case 67: return AT_DropIdentity; + } + Assert(false); + return AT_AddColumn; +} + +static GrantTargetType +_intToEnumGrantTargetType(int value) { + switch(value) { + case 1: return ACL_TARGET_OBJECT; + case 2: return ACL_TARGET_ALL_IN_SCHEMA; + case 3: return ACL_TARGET_DEFAULTS; + } + Assert(false); + return ACL_TARGET_OBJECT; +} + +static VariableSetKind +_intToEnumVariableSetKind(int value) { + switch(value) { + case 1: return VAR_SET_VALUE; + case 2: return VAR_SET_DEFAULT; + case 3: return VAR_SET_CURRENT; + case 4: return VAR_SET_MULTI; + case 5: return VAR_RESET; + case 6: return VAR_RESET_ALL; + } + Assert(false); + return VAR_SET_VALUE; +} + +static ConstrType +_intToEnumConstrType(int value) { + switch(value) { + case 1: return CONSTR_NULL; + case 2: return CONSTR_NOTNULL; + case 3: return CONSTR_DEFAULT; + case 4: return CONSTR_IDENTITY; + case 5: return CONSTR_GENERATED; + case 6: return CONSTR_CHECK; + case 7: return CONSTR_PRIMARY; + case 8: return CONSTR_UNIQUE; + case 9: return CONSTR_EXCLUSION; + case 10: return CONSTR_FOREIGN; + case 11: return CONSTR_ATTR_DEFERRABLE; + case 12: return CONSTR_ATTR_NOT_DEFERRABLE; + case 13: return CONSTR_ATTR_DEFERRED; + case 14: return CONSTR_ATTR_IMMEDIATE; + } + Assert(false); + return CONSTR_NULL; +} + +static ImportForeignSchemaType +_intToEnumImportForeignSchemaType(int value) { + switch(value) { + case 1: return FDW_IMPORT_SCHEMA_ALL; + case 2: return FDW_IMPORT_SCHEMA_LIMIT_TO; + case 3: return FDW_IMPORT_SCHEMA_EXCEPT; + } + Assert(false); + return FDW_IMPORT_SCHEMA_ALL; +} + +static RoleStmtType +_intToEnumRoleStmtType(int value) { + switch(value) { + case 1: return ROLESTMT_ROLE; + case 2: return ROLESTMT_USER; + case 3: return ROLESTMT_GROUP; + } + Assert(false); + return ROLESTMT_ROLE; +} + +static FetchDirection +_intToEnumFetchDirection(int value) { + switch(value) { + case 1: return FETCH_FORWARD; + case 2: return FETCH_BACKWARD; + case 3: return FETCH_ABSOLUTE; + case 4: return FETCH_RELATIVE; + } + Assert(false); + return FETCH_FORWARD; +} + +static FunctionParameterMode +_intToEnumFunctionParameterMode(int value) { + switch(value) { + case 1: return FUNC_PARAM_IN; + case 2: return FUNC_PARAM_OUT; + case 3: return FUNC_PARAM_INOUT; + case 4: return FUNC_PARAM_VARIADIC; + case 5: return FUNC_PARAM_TABLE; + } + Assert(false); + return FUNC_PARAM_IN; +} + +static TransactionStmtKind +_intToEnumTransactionStmtKind(int value) { + switch(value) { + case 1: return TRANS_STMT_BEGIN; + case 2: return TRANS_STMT_START; + case 3: return TRANS_STMT_COMMIT; + case 4: return TRANS_STMT_ROLLBACK; + case 5: return TRANS_STMT_SAVEPOINT; + case 6: return TRANS_STMT_RELEASE; + case 7: return TRANS_STMT_ROLLBACK_TO; + case 8: return TRANS_STMT_PREPARE; + case 9: return TRANS_STMT_COMMIT_PREPARED; + case 10: return TRANS_STMT_ROLLBACK_PREPARED; + } + Assert(false); + return TRANS_STMT_BEGIN; +} + +static ViewCheckOption +_intToEnumViewCheckOption(int value) { + switch(value) { + case 1: return NO_CHECK_OPTION; + case 2: return LOCAL_CHECK_OPTION; + case 3: return CASCADED_CHECK_OPTION; + } + Assert(false); + return NO_CHECK_OPTION; +} + +static ClusterOption +_intToEnumClusterOption(int value) { + switch(value) { + case 1: return CLUOPT_RECHECK; + case 2: return CLUOPT_VERBOSE; + } + Assert(false); + return CLUOPT_RECHECK; +} + +static DiscardMode +_intToEnumDiscardMode(int value) { + switch(value) { + case 1: return DISCARD_ALL; + case 2: return DISCARD_PLANS; + case 3: return DISCARD_SEQUENCES; + case 4: return DISCARD_TEMP; + } + Assert(false); + return DISCARD_ALL; +} + +static ReindexObjectType +_intToEnumReindexObjectType(int value) { + switch(value) { + case 1: return REINDEX_OBJECT_INDEX; + case 2: return REINDEX_OBJECT_TABLE; + case 3: return REINDEX_OBJECT_SCHEMA; + case 4: return REINDEX_OBJECT_SYSTEM; + case 5: return REINDEX_OBJECT_DATABASE; + } + Assert(false); + return REINDEX_OBJECT_INDEX; +} + +static AlterTSConfigType +_intToEnumAlterTSConfigType(int value) { + switch(value) { + case 1: return ALTER_TSCONFIG_ADD_MAPPING; + case 2: return ALTER_TSCONFIG_ALTER_MAPPING_FOR_TOKEN; + case 3: return ALTER_TSCONFIG_REPLACE_DICT; + case 4: return ALTER_TSCONFIG_REPLACE_DICT_FOR_TOKEN; + case 5: return ALTER_TSCONFIG_DROP_MAPPING; + } + Assert(false); + return ALTER_TSCONFIG_ADD_MAPPING; +} + +static AlterSubscriptionType +_intToEnumAlterSubscriptionType(int value) { + switch(value) { + case 1: return ALTER_SUBSCRIPTION_OPTIONS; + case 2: return ALTER_SUBSCRIPTION_CONNECTION; + case 3: return ALTER_SUBSCRIPTION_PUBLICATION; + case 4: return ALTER_SUBSCRIPTION_REFRESH; + case 5: return ALTER_SUBSCRIPTION_ENABLED; + } + Assert(false); + return ALTER_SUBSCRIPTION_OPTIONS; +} + +static OnCommitAction +_intToEnumOnCommitAction(int value) { + switch(value) { + case 1: return ONCOMMIT_NOOP; + case 2: return ONCOMMIT_PRESERVE_ROWS; + case 3: return ONCOMMIT_DELETE_ROWS; + case 4: return ONCOMMIT_DROP; + } + Assert(false); + return ONCOMMIT_NOOP; +} + +static ParamKind +_intToEnumParamKind(int value) { + switch(value) { + case 1: return PARAM_EXTERN; + case 2: return PARAM_EXEC; + case 3: return PARAM_SUBLINK; + case 4: return PARAM_MULTIEXPR; + } + Assert(false); + return PARAM_EXTERN; +} + +static CoercionContext +_intToEnumCoercionContext(int value) { + switch(value) { + case 1: return COERCION_IMPLICIT; + case 2: return COERCION_ASSIGNMENT; + case 3: return COERCION_EXPLICIT; + } + Assert(false); + return COERCION_IMPLICIT; +} + +static CoercionForm +_intToEnumCoercionForm(int value) { + switch(value) { + case 1: return COERCE_EXPLICIT_CALL; + case 2: return COERCE_EXPLICIT_CAST; + case 3: return COERCE_IMPLICIT_CAST; + } + Assert(false); + return COERCE_EXPLICIT_CALL; +} + +static BoolExprType +_intToEnumBoolExprType(int value) { + switch(value) { + case 1: return AND_EXPR; + case 2: return OR_EXPR; + case 3: return NOT_EXPR; + } + Assert(false); + return AND_EXPR; +} + +static SubLinkType +_intToEnumSubLinkType(int value) { + switch(value) { + case 1: return EXISTS_SUBLINK; + case 2: return ALL_SUBLINK; + case 3: return ANY_SUBLINK; + case 4: return ROWCOMPARE_SUBLINK; + case 5: return EXPR_SUBLINK; + case 6: return MULTIEXPR_SUBLINK; + case 7: return ARRAY_SUBLINK; + case 8: return CTE_SUBLINK; + } + Assert(false); + return EXISTS_SUBLINK; +} + +static RowCompareType +_intToEnumRowCompareType(int value) { + switch(value) { + case 1: return ROWCOMPARE_LT; + case 2: return ROWCOMPARE_LE; + case 3: return ROWCOMPARE_EQ; + case 4: return ROWCOMPARE_GE; + case 5: return ROWCOMPARE_GT; + case 6: return ROWCOMPARE_NE; + } + Assert(false); + return ROWCOMPARE_LT; +} + +static MinMaxOp +_intToEnumMinMaxOp(int value) { + switch(value) { + case 1: return IS_GREATEST; + case 2: return IS_LEAST; + } + Assert(false); + return IS_GREATEST; +} + +static SQLValueFunctionOp +_intToEnumSQLValueFunctionOp(int value) { + switch(value) { + case 1: return SVFOP_CURRENT_DATE; + case 2: return SVFOP_CURRENT_TIME; + case 3: return SVFOP_CURRENT_TIME_N; + case 4: return SVFOP_CURRENT_TIMESTAMP; + case 5: return SVFOP_CURRENT_TIMESTAMP_N; + case 6: return SVFOP_LOCALTIME; + case 7: return SVFOP_LOCALTIME_N; + case 8: return SVFOP_LOCALTIMESTAMP; + case 9: return SVFOP_LOCALTIMESTAMP_N; + case 10: return SVFOP_CURRENT_ROLE; + case 11: return SVFOP_CURRENT_USER; + case 12: return SVFOP_USER; + case 13: return SVFOP_SESSION_USER; + case 14: return SVFOP_CURRENT_CATALOG; + case 15: return SVFOP_CURRENT_SCHEMA; + } + Assert(false); + return SVFOP_CURRENT_DATE; +} + +static XmlExprOp +_intToEnumXmlExprOp(int value) { + switch(value) { + case 1: return IS_XMLCONCAT; + case 2: return IS_XMLELEMENT; + case 3: return IS_XMLFOREST; + case 4: return IS_XMLPARSE; + case 5: return IS_XMLPI; + case 6: return IS_XMLROOT; + case 7: return IS_XMLSERIALIZE; + case 8: return IS_DOCUMENT; + } + Assert(false); + return IS_XMLCONCAT; +} + +static XmlOptionType +_intToEnumXmlOptionType(int value) { + switch(value) { + case 1: return XMLOPTION_DOCUMENT; + case 2: return XMLOPTION_CONTENT; + } + Assert(false); + return XMLOPTION_DOCUMENT; +} + +static NullTestType +_intToEnumNullTestType(int value) { + switch(value) { + case 1: return IS_NULL; + case 2: return IS_NOT_NULL; + } + Assert(false); + return IS_NULL; +} + +static BoolTestType +_intToEnumBoolTestType(int value) { + switch(value) { + case 1: return IS_TRUE; + case 2: return IS_NOT_TRUE; + case 3: return IS_FALSE; + case 4: return IS_NOT_FALSE; + case 5: return IS_UNKNOWN; + case 6: return IS_NOT_UNKNOWN; + } + Assert(false); + return IS_TRUE; +} + +static CmdType +_intToEnumCmdType(int value) { + switch(value) { + case 1: return CMD_UNKNOWN; + case 2: return CMD_SELECT; + case 3: return CMD_UPDATE; + case 4: return CMD_INSERT; + case 5: return CMD_DELETE; + case 6: return CMD_UTILITY; + case 7: return CMD_NOTHING; + } + Assert(false); + return CMD_UNKNOWN; +} + +static JoinType +_intToEnumJoinType(int value) { + switch(value) { + case 1: return JOIN_INNER; + case 2: return JOIN_LEFT; + case 3: return JOIN_FULL; + case 4: return JOIN_RIGHT; + case 5: return JOIN_SEMI; + case 6: return JOIN_ANTI; + case 7: return JOIN_UNIQUE_OUTER; + case 8: return JOIN_UNIQUE_INNER; + } + Assert(false); + return JOIN_INNER; +} + +static AggStrategy +_intToEnumAggStrategy(int value) { + switch(value) { + case 1: return AGG_PLAIN; + case 2: return AGG_SORTED; + case 3: return AGG_HASHED; + case 4: return AGG_MIXED; + } + Assert(false); + return AGG_PLAIN; +} + +static AggSplit +_intToEnumAggSplit(int value) { + switch(value) { + case 1: return AGGSPLIT_SIMPLE; + case 2: return AGGSPLIT_INITIAL_SERIAL; + case 3: return AGGSPLIT_FINAL_DESERIAL; + } + Assert(false); + return AGGSPLIT_SIMPLE; +} + +static SetOpCmd +_intToEnumSetOpCmd(int value) { + switch(value) { + case 1: return SETOPCMD_INTERSECT; + case 2: return SETOPCMD_INTERSECT_ALL; + case 3: return SETOPCMD_EXCEPT; + case 4: return SETOPCMD_EXCEPT_ALL; + } + Assert(false); + return SETOPCMD_INTERSECT; +} + +static SetOpStrategy +_intToEnumSetOpStrategy(int value) { + switch(value) { + case 1: return SETOP_SORTED; + case 2: return SETOP_HASHED; + } + Assert(false); + return SETOP_SORTED; +} + +static OnConflictAction +_intToEnumOnConflictAction(int value) { + switch(value) { + case 1: return ONCONFLICT_NONE; + case 2: return ONCONFLICT_NOTHING; + case 3: return ONCONFLICT_UPDATE; + } + Assert(false); + return ONCONFLICT_NONE; +} + +static LimitOption +_intToEnumLimitOption(int value) { + switch(value) { + case 1: return LIMIT_OPTION_DEFAULT; + case 2: return LIMIT_OPTION_COUNT; + case 3: return LIMIT_OPTION_WITH_TIES; + } + Assert(false); + return LIMIT_OPTION_DEFAULT; +} + +static LockClauseStrength +_intToEnumLockClauseStrength(int value) { + switch(value) { + case 1: return LCS_NONE; + case 2: return LCS_FORKEYSHARE; + case 3: return LCS_FORSHARE; + case 4: return LCS_FORNOKEYUPDATE; + case 5: return LCS_FORUPDATE; + } + Assert(false); + return LCS_NONE; +} + +static LockWaitPolicy +_intToEnumLockWaitPolicy(int value) { + switch(value) { + case 1: return LockWaitBlock; + case 2: return LockWaitSkip; + case 3: return LockWaitError; + } + Assert(false); + return LockWaitBlock; +} + +static LockTupleMode +_intToEnumLockTupleMode(int value) { + switch(value) { + case 1: return LockTupleKeyShare; + case 2: return LockTupleShare; + case 3: return LockTupleNoKeyExclusive; + case 4: return LockTupleExclusive; + } + Assert(false); + return LockTupleKeyShare; +} \ No newline at end of file diff --git a/parser/include/pg_query_fingerprint_conds.c b/parser/include/pg_query_fingerprint_conds.c index 57678768..f61d9549 100644 --- a/parser/include/pg_query_fingerprint_conds.c +++ b/parser/include/pg_query_fingerprint_conds.c @@ -1,642 +1,875 @@ case T_Alias: - _fingerprintAlias(ctx, obj, parent, field_name, depth); + // Intentionally ignoring for fingerprinting break; case T_RangeVar: + _fingerprintString(ctx, "RangeVar"); _fingerprintRangeVar(ctx, obj, parent, field_name, depth); break; case T_TableFunc: + _fingerprintString(ctx, "TableFunc"); _fingerprintTableFunc(ctx, obj, parent, field_name, depth); break; case T_Expr: + _fingerprintString(ctx, "Expr"); _fingerprintExpr(ctx, obj, parent, field_name, depth); break; case T_Var: + _fingerprintString(ctx, "Var"); _fingerprintVar(ctx, obj, parent, field_name, depth); break; case T_Const: + _fingerprintString(ctx, "Const"); _fingerprintConst(ctx, obj, parent, field_name, depth); break; case T_Param: + _fingerprintString(ctx, "Param"); _fingerprintParam(ctx, obj, parent, field_name, depth); break; case T_Aggref: + _fingerprintString(ctx, "Aggref"); _fingerprintAggref(ctx, obj, parent, field_name, depth); break; case T_GroupingFunc: + _fingerprintString(ctx, "GroupingFunc"); _fingerprintGroupingFunc(ctx, obj, parent, field_name, depth); break; case T_WindowFunc: + _fingerprintString(ctx, "WindowFunc"); _fingerprintWindowFunc(ctx, obj, parent, field_name, depth); break; -case T_ArrayRef: - _fingerprintArrayRef(ctx, obj, parent, field_name, depth); +case T_SubscriptingRef: + _fingerprintString(ctx, "SubscriptingRef"); + _fingerprintSubscriptingRef(ctx, obj, parent, field_name, depth); break; case T_FuncExpr: + _fingerprintString(ctx, "FuncExpr"); _fingerprintFuncExpr(ctx, obj, parent, field_name, depth); break; case T_NamedArgExpr: + _fingerprintString(ctx, "NamedArgExpr"); _fingerprintNamedArgExpr(ctx, obj, parent, field_name, depth); break; case T_OpExpr: + _fingerprintString(ctx, "OpExpr"); _fingerprintOpExpr(ctx, obj, parent, field_name, depth); break; case T_ScalarArrayOpExpr: + _fingerprintString(ctx, "ScalarArrayOpExpr"); _fingerprintScalarArrayOpExpr(ctx, obj, parent, field_name, depth); break; case T_BoolExpr: + _fingerprintString(ctx, "BoolExpr"); _fingerprintBoolExpr(ctx, obj, parent, field_name, depth); break; case T_SubLink: + _fingerprintString(ctx, "SubLink"); _fingerprintSubLink(ctx, obj, parent, field_name, depth); break; case T_SubPlan: + _fingerprintString(ctx, "SubPlan"); _fingerprintSubPlan(ctx, obj, parent, field_name, depth); break; case T_AlternativeSubPlan: + _fingerprintString(ctx, "AlternativeSubPlan"); _fingerprintAlternativeSubPlan(ctx, obj, parent, field_name, depth); break; case T_FieldSelect: + _fingerprintString(ctx, "FieldSelect"); _fingerprintFieldSelect(ctx, obj, parent, field_name, depth); break; case T_FieldStore: + _fingerprintString(ctx, "FieldStore"); _fingerprintFieldStore(ctx, obj, parent, field_name, depth); break; case T_RelabelType: + _fingerprintString(ctx, "RelabelType"); _fingerprintRelabelType(ctx, obj, parent, field_name, depth); break; case T_CoerceViaIO: + _fingerprintString(ctx, "CoerceViaIO"); _fingerprintCoerceViaIO(ctx, obj, parent, field_name, depth); break; case T_ArrayCoerceExpr: + _fingerprintString(ctx, "ArrayCoerceExpr"); _fingerprintArrayCoerceExpr(ctx, obj, parent, field_name, depth); break; case T_ConvertRowtypeExpr: + _fingerprintString(ctx, "ConvertRowtypeExpr"); _fingerprintConvertRowtypeExpr(ctx, obj, parent, field_name, depth); break; case T_CollateExpr: + _fingerprintString(ctx, "CollateExpr"); _fingerprintCollateExpr(ctx, obj, parent, field_name, depth); break; case T_CaseExpr: + _fingerprintString(ctx, "CaseExpr"); _fingerprintCaseExpr(ctx, obj, parent, field_name, depth); break; case T_CaseWhen: + _fingerprintString(ctx, "CaseWhen"); _fingerprintCaseWhen(ctx, obj, parent, field_name, depth); break; case T_CaseTestExpr: + _fingerprintString(ctx, "CaseTestExpr"); _fingerprintCaseTestExpr(ctx, obj, parent, field_name, depth); break; case T_ArrayExpr: + _fingerprintString(ctx, "ArrayExpr"); _fingerprintArrayExpr(ctx, obj, parent, field_name, depth); break; case T_RowExpr: + _fingerprintString(ctx, "RowExpr"); _fingerprintRowExpr(ctx, obj, parent, field_name, depth); break; case T_RowCompareExpr: + _fingerprintString(ctx, "RowCompareExpr"); _fingerprintRowCompareExpr(ctx, obj, parent, field_name, depth); break; case T_CoalesceExpr: + _fingerprintString(ctx, "CoalesceExpr"); _fingerprintCoalesceExpr(ctx, obj, parent, field_name, depth); break; case T_MinMaxExpr: + _fingerprintString(ctx, "MinMaxExpr"); _fingerprintMinMaxExpr(ctx, obj, parent, field_name, depth); break; case T_SQLValueFunction: + _fingerprintString(ctx, "SQLValueFunction"); _fingerprintSQLValueFunction(ctx, obj, parent, field_name, depth); break; case T_XmlExpr: + _fingerprintString(ctx, "XmlExpr"); _fingerprintXmlExpr(ctx, obj, parent, field_name, depth); break; case T_NullTest: + _fingerprintString(ctx, "NullTest"); _fingerprintNullTest(ctx, obj, parent, field_name, depth); break; case T_BooleanTest: + _fingerprintString(ctx, "BooleanTest"); _fingerprintBooleanTest(ctx, obj, parent, field_name, depth); break; case T_CoerceToDomain: + _fingerprintString(ctx, "CoerceToDomain"); _fingerprintCoerceToDomain(ctx, obj, parent, field_name, depth); break; case T_CoerceToDomainValue: + _fingerprintString(ctx, "CoerceToDomainValue"); _fingerprintCoerceToDomainValue(ctx, obj, parent, field_name, depth); break; case T_SetToDefault: - _fingerprintSetToDefault(ctx, obj, parent, field_name, depth); + // Intentionally ignoring for fingerprinting break; case T_CurrentOfExpr: + _fingerprintString(ctx, "CurrentOfExpr"); _fingerprintCurrentOfExpr(ctx, obj, parent, field_name, depth); break; case T_NextValueExpr: + _fingerprintString(ctx, "NextValueExpr"); _fingerprintNextValueExpr(ctx, obj, parent, field_name, depth); break; case T_InferenceElem: + _fingerprintString(ctx, "InferenceElem"); _fingerprintInferenceElem(ctx, obj, parent, field_name, depth); break; case T_TargetEntry: + _fingerprintString(ctx, "TargetEntry"); _fingerprintTargetEntry(ctx, obj, parent, field_name, depth); break; case T_RangeTblRef: + _fingerprintString(ctx, "RangeTblRef"); _fingerprintRangeTblRef(ctx, obj, parent, field_name, depth); break; case T_JoinExpr: + _fingerprintString(ctx, "JoinExpr"); _fingerprintJoinExpr(ctx, obj, parent, field_name, depth); break; case T_FromExpr: + _fingerprintString(ctx, "FromExpr"); _fingerprintFromExpr(ctx, obj, parent, field_name, depth); break; case T_OnConflictExpr: + _fingerprintString(ctx, "OnConflictExpr"); _fingerprintOnConflictExpr(ctx, obj, parent, field_name, depth); break; case T_IntoClause: + _fingerprintString(ctx, "IntoClause"); _fingerprintIntoClause(ctx, obj, parent, field_name, depth); break; case T_RawStmt: + _fingerprintString(ctx, "RawStmt"); _fingerprintRawStmt(ctx, obj, parent, field_name, depth); break; case T_Query: + _fingerprintString(ctx, "Query"); _fingerprintQuery(ctx, obj, parent, field_name, depth); break; case T_InsertStmt: + _fingerprintString(ctx, "InsertStmt"); _fingerprintInsertStmt(ctx, obj, parent, field_name, depth); break; case T_DeleteStmt: + _fingerprintString(ctx, "DeleteStmt"); _fingerprintDeleteStmt(ctx, obj, parent, field_name, depth); break; case T_UpdateStmt: + _fingerprintString(ctx, "UpdateStmt"); _fingerprintUpdateStmt(ctx, obj, parent, field_name, depth); break; case T_SelectStmt: + _fingerprintString(ctx, "SelectStmt"); _fingerprintSelectStmt(ctx, obj, parent, field_name, depth); break; case T_AlterTableStmt: + _fingerprintString(ctx, "AlterTableStmt"); _fingerprintAlterTableStmt(ctx, obj, parent, field_name, depth); break; case T_AlterTableCmd: + _fingerprintString(ctx, "AlterTableCmd"); _fingerprintAlterTableCmd(ctx, obj, parent, field_name, depth); break; case T_AlterDomainStmt: + _fingerprintString(ctx, "AlterDomainStmt"); _fingerprintAlterDomainStmt(ctx, obj, parent, field_name, depth); break; case T_SetOperationStmt: + _fingerprintString(ctx, "SetOperationStmt"); _fingerprintSetOperationStmt(ctx, obj, parent, field_name, depth); break; case T_GrantStmt: + _fingerprintString(ctx, "GrantStmt"); _fingerprintGrantStmt(ctx, obj, parent, field_name, depth); break; case T_GrantRoleStmt: + _fingerprintString(ctx, "GrantRoleStmt"); _fingerprintGrantRoleStmt(ctx, obj, parent, field_name, depth); break; case T_AlterDefaultPrivilegesStmt: + _fingerprintString(ctx, "AlterDefaultPrivilegesStmt"); _fingerprintAlterDefaultPrivilegesStmt(ctx, obj, parent, field_name, depth); break; case T_ClosePortalStmt: + _fingerprintString(ctx, "ClosePortalStmt"); _fingerprintClosePortalStmt(ctx, obj, parent, field_name, depth); break; case T_ClusterStmt: + _fingerprintString(ctx, "ClusterStmt"); _fingerprintClusterStmt(ctx, obj, parent, field_name, depth); break; case T_CopyStmt: + _fingerprintString(ctx, "CopyStmt"); _fingerprintCopyStmt(ctx, obj, parent, field_name, depth); break; case T_CreateStmt: + _fingerprintString(ctx, "CreateStmt"); _fingerprintCreateStmt(ctx, obj, parent, field_name, depth); break; case T_DefineStmt: + _fingerprintString(ctx, "DefineStmt"); _fingerprintDefineStmt(ctx, obj, parent, field_name, depth); break; case T_DropStmt: + _fingerprintString(ctx, "DropStmt"); _fingerprintDropStmt(ctx, obj, parent, field_name, depth); break; case T_TruncateStmt: + _fingerprintString(ctx, "TruncateStmt"); _fingerprintTruncateStmt(ctx, obj, parent, field_name, depth); break; case T_CommentStmt: + _fingerprintString(ctx, "CommentStmt"); _fingerprintCommentStmt(ctx, obj, parent, field_name, depth); break; case T_FetchStmt: + _fingerprintString(ctx, "FetchStmt"); _fingerprintFetchStmt(ctx, obj, parent, field_name, depth); break; case T_IndexStmt: + _fingerprintString(ctx, "IndexStmt"); _fingerprintIndexStmt(ctx, obj, parent, field_name, depth); break; case T_CreateFunctionStmt: + _fingerprintString(ctx, "CreateFunctionStmt"); _fingerprintCreateFunctionStmt(ctx, obj, parent, field_name, depth); break; case T_AlterFunctionStmt: + _fingerprintString(ctx, "AlterFunctionStmt"); _fingerprintAlterFunctionStmt(ctx, obj, parent, field_name, depth); break; case T_DoStmt: + _fingerprintString(ctx, "DoStmt"); _fingerprintDoStmt(ctx, obj, parent, field_name, depth); break; case T_RenameStmt: + _fingerprintString(ctx, "RenameStmt"); _fingerprintRenameStmt(ctx, obj, parent, field_name, depth); break; case T_RuleStmt: + _fingerprintString(ctx, "RuleStmt"); _fingerprintRuleStmt(ctx, obj, parent, field_name, depth); break; case T_NotifyStmt: + _fingerprintString(ctx, "NotifyStmt"); _fingerprintNotifyStmt(ctx, obj, parent, field_name, depth); break; case T_ListenStmt: + _fingerprintString(ctx, "ListenStmt"); _fingerprintListenStmt(ctx, obj, parent, field_name, depth); break; case T_UnlistenStmt: + _fingerprintString(ctx, "UnlistenStmt"); _fingerprintUnlistenStmt(ctx, obj, parent, field_name, depth); break; case T_TransactionStmt: + _fingerprintString(ctx, "TransactionStmt"); _fingerprintTransactionStmt(ctx, obj, parent, field_name, depth); break; case T_ViewStmt: + _fingerprintString(ctx, "ViewStmt"); _fingerprintViewStmt(ctx, obj, parent, field_name, depth); break; case T_LoadStmt: + _fingerprintString(ctx, "LoadStmt"); _fingerprintLoadStmt(ctx, obj, parent, field_name, depth); break; case T_CreateDomainStmt: + _fingerprintString(ctx, "CreateDomainStmt"); _fingerprintCreateDomainStmt(ctx, obj, parent, field_name, depth); break; case T_CreatedbStmt: + _fingerprintString(ctx, "CreatedbStmt"); _fingerprintCreatedbStmt(ctx, obj, parent, field_name, depth); break; case T_DropdbStmt: + _fingerprintString(ctx, "DropdbStmt"); _fingerprintDropdbStmt(ctx, obj, parent, field_name, depth); break; case T_VacuumStmt: + _fingerprintString(ctx, "VacuumStmt"); _fingerprintVacuumStmt(ctx, obj, parent, field_name, depth); break; case T_ExplainStmt: + _fingerprintString(ctx, "ExplainStmt"); _fingerprintExplainStmt(ctx, obj, parent, field_name, depth); break; case T_CreateTableAsStmt: + _fingerprintString(ctx, "CreateTableAsStmt"); _fingerprintCreateTableAsStmt(ctx, obj, parent, field_name, depth); break; case T_CreateSeqStmt: + _fingerprintString(ctx, "CreateSeqStmt"); _fingerprintCreateSeqStmt(ctx, obj, parent, field_name, depth); break; case T_AlterSeqStmt: + _fingerprintString(ctx, "AlterSeqStmt"); _fingerprintAlterSeqStmt(ctx, obj, parent, field_name, depth); break; case T_VariableSetStmt: + _fingerprintString(ctx, "VariableSetStmt"); _fingerprintVariableSetStmt(ctx, obj, parent, field_name, depth); break; case T_VariableShowStmt: + _fingerprintString(ctx, "VariableShowStmt"); _fingerprintVariableShowStmt(ctx, obj, parent, field_name, depth); break; case T_DiscardStmt: + _fingerprintString(ctx, "DiscardStmt"); _fingerprintDiscardStmt(ctx, obj, parent, field_name, depth); break; case T_CreateTrigStmt: + _fingerprintString(ctx, "CreateTrigStmt"); _fingerprintCreateTrigStmt(ctx, obj, parent, field_name, depth); break; case T_CreatePLangStmt: + _fingerprintString(ctx, "CreatePLangStmt"); _fingerprintCreatePLangStmt(ctx, obj, parent, field_name, depth); break; case T_CreateRoleStmt: + _fingerprintString(ctx, "CreateRoleStmt"); _fingerprintCreateRoleStmt(ctx, obj, parent, field_name, depth); break; case T_AlterRoleStmt: + _fingerprintString(ctx, "AlterRoleStmt"); _fingerprintAlterRoleStmt(ctx, obj, parent, field_name, depth); break; case T_DropRoleStmt: + _fingerprintString(ctx, "DropRoleStmt"); _fingerprintDropRoleStmt(ctx, obj, parent, field_name, depth); break; case T_LockStmt: + _fingerprintString(ctx, "LockStmt"); _fingerprintLockStmt(ctx, obj, parent, field_name, depth); break; case T_ConstraintsSetStmt: + _fingerprintString(ctx, "ConstraintsSetStmt"); _fingerprintConstraintsSetStmt(ctx, obj, parent, field_name, depth); break; case T_ReindexStmt: + _fingerprintString(ctx, "ReindexStmt"); _fingerprintReindexStmt(ctx, obj, parent, field_name, depth); break; case T_CheckPointStmt: + _fingerprintString(ctx, "CheckPointStmt"); _fingerprintCheckPointStmt(ctx, obj, parent, field_name, depth); break; case T_CreateSchemaStmt: + _fingerprintString(ctx, "CreateSchemaStmt"); _fingerprintCreateSchemaStmt(ctx, obj, parent, field_name, depth); break; case T_AlterDatabaseStmt: + _fingerprintString(ctx, "AlterDatabaseStmt"); _fingerprintAlterDatabaseStmt(ctx, obj, parent, field_name, depth); break; case T_AlterDatabaseSetStmt: + _fingerprintString(ctx, "AlterDatabaseSetStmt"); _fingerprintAlterDatabaseSetStmt(ctx, obj, parent, field_name, depth); break; case T_AlterRoleSetStmt: + _fingerprintString(ctx, "AlterRoleSetStmt"); _fingerprintAlterRoleSetStmt(ctx, obj, parent, field_name, depth); break; case T_CreateConversionStmt: + _fingerprintString(ctx, "CreateConversionStmt"); _fingerprintCreateConversionStmt(ctx, obj, parent, field_name, depth); break; case T_CreateCastStmt: + _fingerprintString(ctx, "CreateCastStmt"); _fingerprintCreateCastStmt(ctx, obj, parent, field_name, depth); break; case T_CreateOpClassStmt: + _fingerprintString(ctx, "CreateOpClassStmt"); _fingerprintCreateOpClassStmt(ctx, obj, parent, field_name, depth); break; case T_CreateOpFamilyStmt: + _fingerprintString(ctx, "CreateOpFamilyStmt"); _fingerprintCreateOpFamilyStmt(ctx, obj, parent, field_name, depth); break; case T_AlterOpFamilyStmt: + _fingerprintString(ctx, "AlterOpFamilyStmt"); _fingerprintAlterOpFamilyStmt(ctx, obj, parent, field_name, depth); break; case T_PrepareStmt: + _fingerprintString(ctx, "PrepareStmt"); _fingerprintPrepareStmt(ctx, obj, parent, field_name, depth); break; case T_ExecuteStmt: + _fingerprintString(ctx, "ExecuteStmt"); _fingerprintExecuteStmt(ctx, obj, parent, field_name, depth); break; case T_DeallocateStmt: + _fingerprintString(ctx, "DeallocateStmt"); _fingerprintDeallocateStmt(ctx, obj, parent, field_name, depth); break; case T_DeclareCursorStmt: + _fingerprintString(ctx, "DeclareCursorStmt"); _fingerprintDeclareCursorStmt(ctx, obj, parent, field_name, depth); break; case T_CreateTableSpaceStmt: + _fingerprintString(ctx, "CreateTableSpaceStmt"); _fingerprintCreateTableSpaceStmt(ctx, obj, parent, field_name, depth); break; case T_DropTableSpaceStmt: + _fingerprintString(ctx, "DropTableSpaceStmt"); _fingerprintDropTableSpaceStmt(ctx, obj, parent, field_name, depth); break; case T_AlterObjectDependsStmt: + _fingerprintString(ctx, "AlterObjectDependsStmt"); _fingerprintAlterObjectDependsStmt(ctx, obj, parent, field_name, depth); break; case T_AlterObjectSchemaStmt: + _fingerprintString(ctx, "AlterObjectSchemaStmt"); _fingerprintAlterObjectSchemaStmt(ctx, obj, parent, field_name, depth); break; case T_AlterOwnerStmt: + _fingerprintString(ctx, "AlterOwnerStmt"); _fingerprintAlterOwnerStmt(ctx, obj, parent, field_name, depth); break; case T_AlterOperatorStmt: + _fingerprintString(ctx, "AlterOperatorStmt"); _fingerprintAlterOperatorStmt(ctx, obj, parent, field_name, depth); break; +case T_AlterTypeStmt: + _fingerprintString(ctx, "AlterTypeStmt"); + _fingerprintAlterTypeStmt(ctx, obj, parent, field_name, depth); + break; case T_DropOwnedStmt: + _fingerprintString(ctx, "DropOwnedStmt"); _fingerprintDropOwnedStmt(ctx, obj, parent, field_name, depth); break; case T_ReassignOwnedStmt: + _fingerprintString(ctx, "ReassignOwnedStmt"); _fingerprintReassignOwnedStmt(ctx, obj, parent, field_name, depth); break; case T_CompositeTypeStmt: + _fingerprintString(ctx, "CompositeTypeStmt"); _fingerprintCompositeTypeStmt(ctx, obj, parent, field_name, depth); break; case T_CreateEnumStmt: + _fingerprintString(ctx, "CreateEnumStmt"); _fingerprintCreateEnumStmt(ctx, obj, parent, field_name, depth); break; case T_CreateRangeStmt: + _fingerprintString(ctx, "CreateRangeStmt"); _fingerprintCreateRangeStmt(ctx, obj, parent, field_name, depth); break; case T_AlterEnumStmt: + _fingerprintString(ctx, "AlterEnumStmt"); _fingerprintAlterEnumStmt(ctx, obj, parent, field_name, depth); break; case T_AlterTSDictionaryStmt: + _fingerprintString(ctx, "AlterTSDictionaryStmt"); _fingerprintAlterTSDictionaryStmt(ctx, obj, parent, field_name, depth); break; case T_AlterTSConfigurationStmt: + _fingerprintString(ctx, "AlterTSConfigurationStmt"); _fingerprintAlterTSConfigurationStmt(ctx, obj, parent, field_name, depth); break; case T_CreateFdwStmt: + _fingerprintString(ctx, "CreateFdwStmt"); _fingerprintCreateFdwStmt(ctx, obj, parent, field_name, depth); break; case T_AlterFdwStmt: + _fingerprintString(ctx, "AlterFdwStmt"); _fingerprintAlterFdwStmt(ctx, obj, parent, field_name, depth); break; case T_CreateForeignServerStmt: + _fingerprintString(ctx, "CreateForeignServerStmt"); _fingerprintCreateForeignServerStmt(ctx, obj, parent, field_name, depth); break; case T_AlterForeignServerStmt: + _fingerprintString(ctx, "AlterForeignServerStmt"); _fingerprintAlterForeignServerStmt(ctx, obj, parent, field_name, depth); break; case T_CreateUserMappingStmt: + _fingerprintString(ctx, "CreateUserMappingStmt"); _fingerprintCreateUserMappingStmt(ctx, obj, parent, field_name, depth); break; case T_AlterUserMappingStmt: + _fingerprintString(ctx, "AlterUserMappingStmt"); _fingerprintAlterUserMappingStmt(ctx, obj, parent, field_name, depth); break; case T_DropUserMappingStmt: + _fingerprintString(ctx, "DropUserMappingStmt"); _fingerprintDropUserMappingStmt(ctx, obj, parent, field_name, depth); break; case T_AlterTableSpaceOptionsStmt: + _fingerprintString(ctx, "AlterTableSpaceOptionsStmt"); _fingerprintAlterTableSpaceOptionsStmt(ctx, obj, parent, field_name, depth); break; case T_AlterTableMoveAllStmt: + _fingerprintString(ctx, "AlterTableMoveAllStmt"); _fingerprintAlterTableMoveAllStmt(ctx, obj, parent, field_name, depth); break; case T_SecLabelStmt: + _fingerprintString(ctx, "SecLabelStmt"); _fingerprintSecLabelStmt(ctx, obj, parent, field_name, depth); break; case T_CreateForeignTableStmt: + _fingerprintString(ctx, "CreateForeignTableStmt"); _fingerprintCreateForeignTableStmt(ctx, obj, parent, field_name, depth); break; case T_ImportForeignSchemaStmt: + _fingerprintString(ctx, "ImportForeignSchemaStmt"); _fingerprintImportForeignSchemaStmt(ctx, obj, parent, field_name, depth); break; case T_CreateExtensionStmt: + _fingerprintString(ctx, "CreateExtensionStmt"); _fingerprintCreateExtensionStmt(ctx, obj, parent, field_name, depth); break; case T_AlterExtensionStmt: + _fingerprintString(ctx, "AlterExtensionStmt"); _fingerprintAlterExtensionStmt(ctx, obj, parent, field_name, depth); break; case T_AlterExtensionContentsStmt: + _fingerprintString(ctx, "AlterExtensionContentsStmt"); _fingerprintAlterExtensionContentsStmt(ctx, obj, parent, field_name, depth); break; case T_CreateEventTrigStmt: + _fingerprintString(ctx, "CreateEventTrigStmt"); _fingerprintCreateEventTrigStmt(ctx, obj, parent, field_name, depth); break; case T_AlterEventTrigStmt: + _fingerprintString(ctx, "AlterEventTrigStmt"); _fingerprintAlterEventTrigStmt(ctx, obj, parent, field_name, depth); break; case T_RefreshMatViewStmt: + _fingerprintString(ctx, "RefreshMatViewStmt"); _fingerprintRefreshMatViewStmt(ctx, obj, parent, field_name, depth); break; case T_ReplicaIdentityStmt: + _fingerprintString(ctx, "ReplicaIdentityStmt"); _fingerprintReplicaIdentityStmt(ctx, obj, parent, field_name, depth); break; case T_AlterSystemStmt: + _fingerprintString(ctx, "AlterSystemStmt"); _fingerprintAlterSystemStmt(ctx, obj, parent, field_name, depth); break; case T_CreatePolicyStmt: + _fingerprintString(ctx, "CreatePolicyStmt"); _fingerprintCreatePolicyStmt(ctx, obj, parent, field_name, depth); break; case T_AlterPolicyStmt: + _fingerprintString(ctx, "AlterPolicyStmt"); _fingerprintAlterPolicyStmt(ctx, obj, parent, field_name, depth); break; case T_CreateTransformStmt: + _fingerprintString(ctx, "CreateTransformStmt"); _fingerprintCreateTransformStmt(ctx, obj, parent, field_name, depth); break; case T_CreateAmStmt: + _fingerprintString(ctx, "CreateAmStmt"); _fingerprintCreateAmStmt(ctx, obj, parent, field_name, depth); break; case T_CreatePublicationStmt: + _fingerprintString(ctx, "CreatePublicationStmt"); _fingerprintCreatePublicationStmt(ctx, obj, parent, field_name, depth); break; case T_AlterPublicationStmt: + _fingerprintString(ctx, "AlterPublicationStmt"); _fingerprintAlterPublicationStmt(ctx, obj, parent, field_name, depth); break; case T_CreateSubscriptionStmt: + _fingerprintString(ctx, "CreateSubscriptionStmt"); _fingerprintCreateSubscriptionStmt(ctx, obj, parent, field_name, depth); break; case T_AlterSubscriptionStmt: + _fingerprintString(ctx, "AlterSubscriptionStmt"); _fingerprintAlterSubscriptionStmt(ctx, obj, parent, field_name, depth); break; case T_DropSubscriptionStmt: + _fingerprintString(ctx, "DropSubscriptionStmt"); _fingerprintDropSubscriptionStmt(ctx, obj, parent, field_name, depth); break; case T_CreateStatsStmt: + _fingerprintString(ctx, "CreateStatsStmt"); _fingerprintCreateStatsStmt(ctx, obj, parent, field_name, depth); break; case T_AlterCollationStmt: + _fingerprintString(ctx, "AlterCollationStmt"); _fingerprintAlterCollationStmt(ctx, obj, parent, field_name, depth); break; +case T_CallStmt: + _fingerprintString(ctx, "CallStmt"); + _fingerprintCallStmt(ctx, obj, parent, field_name, depth); + break; +case T_AlterStatsStmt: + _fingerprintString(ctx, "AlterStatsStmt"); + _fingerprintAlterStatsStmt(ctx, obj, parent, field_name, depth); + break; case T_A_Expr: + _fingerprintString(ctx, "A_Expr"); _fingerprintA_Expr(ctx, obj, parent, field_name, depth); break; case T_ColumnRef: + _fingerprintString(ctx, "ColumnRef"); _fingerprintColumnRef(ctx, obj, parent, field_name, depth); break; case T_ParamRef: - _fingerprintParamRef(ctx, obj, parent, field_name, depth); + // Intentionally ignoring for fingerprinting break; case T_A_Const: - _fingerprintA_Const(ctx, obj, parent, field_name, depth); + // Intentionally ignoring for fingerprinting break; case T_FuncCall: + _fingerprintString(ctx, "FuncCall"); _fingerprintFuncCall(ctx, obj, parent, field_name, depth); break; case T_A_Star: + _fingerprintString(ctx, "A_Star"); _fingerprintA_Star(ctx, obj, parent, field_name, depth); break; case T_A_Indices: + _fingerprintString(ctx, "A_Indices"); _fingerprintA_Indices(ctx, obj, parent, field_name, depth); break; case T_A_Indirection: + _fingerprintString(ctx, "A_Indirection"); _fingerprintA_Indirection(ctx, obj, parent, field_name, depth); break; case T_A_ArrayExpr: + _fingerprintString(ctx, "A_ArrayExpr"); _fingerprintA_ArrayExpr(ctx, obj, parent, field_name, depth); break; case T_ResTarget: + _fingerprintString(ctx, "ResTarget"); _fingerprintResTarget(ctx, obj, parent, field_name, depth); break; case T_MultiAssignRef: + _fingerprintString(ctx, "MultiAssignRef"); _fingerprintMultiAssignRef(ctx, obj, parent, field_name, depth); break; case T_TypeCast: + if (!IsA(castNode(TypeCast, (void*) obj)->arg, A_Const) && !IsA(castNode(TypeCast, (void*) obj)->arg, ParamRef)) + { + _fingerprintString(ctx, "TypeCast"); _fingerprintTypeCast(ctx, obj, parent, field_name, depth); + } break; case T_CollateClause: + _fingerprintString(ctx, "CollateClause"); _fingerprintCollateClause(ctx, obj, parent, field_name, depth); break; case T_SortBy: + _fingerprintString(ctx, "SortBy"); _fingerprintSortBy(ctx, obj, parent, field_name, depth); break; case T_WindowDef: + _fingerprintString(ctx, "WindowDef"); _fingerprintWindowDef(ctx, obj, parent, field_name, depth); break; case T_RangeSubselect: + _fingerprintString(ctx, "RangeSubselect"); _fingerprintRangeSubselect(ctx, obj, parent, field_name, depth); break; case T_RangeFunction: + _fingerprintString(ctx, "RangeFunction"); _fingerprintRangeFunction(ctx, obj, parent, field_name, depth); break; case T_RangeTableSample: + _fingerprintString(ctx, "RangeTableSample"); _fingerprintRangeTableSample(ctx, obj, parent, field_name, depth); break; case T_RangeTableFunc: + _fingerprintString(ctx, "RangeTableFunc"); _fingerprintRangeTableFunc(ctx, obj, parent, field_name, depth); break; case T_RangeTableFuncCol: + _fingerprintString(ctx, "RangeTableFuncCol"); _fingerprintRangeTableFuncCol(ctx, obj, parent, field_name, depth); break; case T_TypeName: + _fingerprintString(ctx, "TypeName"); _fingerprintTypeName(ctx, obj, parent, field_name, depth); break; case T_ColumnDef: + _fingerprintString(ctx, "ColumnDef"); _fingerprintColumnDef(ctx, obj, parent, field_name, depth); break; case T_IndexElem: + _fingerprintString(ctx, "IndexElem"); _fingerprintIndexElem(ctx, obj, parent, field_name, depth); break; case T_Constraint: + _fingerprintString(ctx, "Constraint"); _fingerprintConstraint(ctx, obj, parent, field_name, depth); break; case T_DefElem: + _fingerprintString(ctx, "DefElem"); _fingerprintDefElem(ctx, obj, parent, field_name, depth); break; case T_RangeTblEntry: + _fingerprintString(ctx, "RangeTblEntry"); _fingerprintRangeTblEntry(ctx, obj, parent, field_name, depth); break; case T_RangeTblFunction: + _fingerprintString(ctx, "RangeTblFunction"); _fingerprintRangeTblFunction(ctx, obj, parent, field_name, depth); break; case T_TableSampleClause: + _fingerprintString(ctx, "TableSampleClause"); _fingerprintTableSampleClause(ctx, obj, parent, field_name, depth); break; case T_WithCheckOption: + _fingerprintString(ctx, "WithCheckOption"); _fingerprintWithCheckOption(ctx, obj, parent, field_name, depth); break; case T_SortGroupClause: + _fingerprintString(ctx, "SortGroupClause"); _fingerprintSortGroupClause(ctx, obj, parent, field_name, depth); break; case T_GroupingSet: + _fingerprintString(ctx, "GroupingSet"); _fingerprintGroupingSet(ctx, obj, parent, field_name, depth); break; case T_WindowClause: + _fingerprintString(ctx, "WindowClause"); _fingerprintWindowClause(ctx, obj, parent, field_name, depth); break; case T_ObjectWithArgs: + _fingerprintString(ctx, "ObjectWithArgs"); _fingerprintObjectWithArgs(ctx, obj, parent, field_name, depth); break; case T_AccessPriv: + _fingerprintString(ctx, "AccessPriv"); _fingerprintAccessPriv(ctx, obj, parent, field_name, depth); break; case T_CreateOpClassItem: + _fingerprintString(ctx, "CreateOpClassItem"); _fingerprintCreateOpClassItem(ctx, obj, parent, field_name, depth); break; case T_TableLikeClause: + _fingerprintString(ctx, "TableLikeClause"); _fingerprintTableLikeClause(ctx, obj, parent, field_name, depth); break; case T_FunctionParameter: + _fingerprintString(ctx, "FunctionParameter"); _fingerprintFunctionParameter(ctx, obj, parent, field_name, depth); break; case T_LockingClause: + _fingerprintString(ctx, "LockingClause"); _fingerprintLockingClause(ctx, obj, parent, field_name, depth); break; case T_RowMarkClause: + _fingerprintString(ctx, "RowMarkClause"); _fingerprintRowMarkClause(ctx, obj, parent, field_name, depth); break; case T_XmlSerialize: + _fingerprintString(ctx, "XmlSerialize"); _fingerprintXmlSerialize(ctx, obj, parent, field_name, depth); break; case T_WithClause: + _fingerprintString(ctx, "WithClause"); _fingerprintWithClause(ctx, obj, parent, field_name, depth); break; case T_InferClause: + _fingerprintString(ctx, "InferClause"); _fingerprintInferClause(ctx, obj, parent, field_name, depth); break; case T_OnConflictClause: + _fingerprintString(ctx, "OnConflictClause"); _fingerprintOnConflictClause(ctx, obj, parent, field_name, depth); break; case T_CommonTableExpr: + _fingerprintString(ctx, "CommonTableExpr"); _fingerprintCommonTableExpr(ctx, obj, parent, field_name, depth); break; case T_RoleSpec: + _fingerprintString(ctx, "RoleSpec"); _fingerprintRoleSpec(ctx, obj, parent, field_name, depth); break; case T_TriggerTransition: + _fingerprintString(ctx, "TriggerTransition"); _fingerprintTriggerTransition(ctx, obj, parent, field_name, depth); break; case T_PartitionElem: + _fingerprintString(ctx, "PartitionElem"); _fingerprintPartitionElem(ctx, obj, parent, field_name, depth); break; case T_PartitionSpec: + _fingerprintString(ctx, "PartitionSpec"); _fingerprintPartitionSpec(ctx, obj, parent, field_name, depth); break; case T_PartitionBoundSpec: + _fingerprintString(ctx, "PartitionBoundSpec"); _fingerprintPartitionBoundSpec(ctx, obj, parent, field_name, depth); break; case T_PartitionRangeDatum: + _fingerprintString(ctx, "PartitionRangeDatum"); _fingerprintPartitionRangeDatum(ctx, obj, parent, field_name, depth); break; case T_PartitionCmd: + _fingerprintString(ctx, "PartitionCmd"); _fingerprintPartitionCmd(ctx, obj, parent, field_name, depth); break; +case T_VacuumRelation: + _fingerprintString(ctx, "VacuumRelation"); + _fingerprintVacuumRelation(ctx, obj, parent, field_name, depth); + break; case T_InlineCodeBlock: + _fingerprintString(ctx, "InlineCodeBlock"); _fingerprintInlineCodeBlock(ctx, obj, parent, field_name, depth); break; +case T_CallContext: + _fingerprintString(ctx, "CallContext"); + _fingerprintCallContext(ctx, obj, parent, field_name, depth); + break; diff --git a/parser/include/pg_query_fingerprint_defs.c b/parser/include/pg_query_fingerprint_defs.c index e054af19..0f7c4c64 100644 --- a/parser/include/pg_query_fingerprint_defs.c +++ b/parser/include/pg_query_fingerprint_defs.c @@ -1,3 +1,224 @@ +static void _fingerprintAlias(FingerprintContext *ctx, const Alias *node, const void *parent, const char *field_name, unsigned int depth); +static void _fingerprintRangeVar(FingerprintContext *ctx, const RangeVar *node, const void *parent, const char *field_name, unsigned int depth); +static void _fingerprintTableFunc(FingerprintContext *ctx, const TableFunc *node, const void *parent, const char *field_name, unsigned int depth); +static void _fingerprintExpr(FingerprintContext *ctx, const Expr *node, const void *parent, const char *field_name, unsigned int depth); +static void _fingerprintVar(FingerprintContext *ctx, const Var *node, const void *parent, const char *field_name, unsigned int depth); +static void _fingerprintConst(FingerprintContext *ctx, const Const *node, const void *parent, const char *field_name, unsigned int depth); +static void _fingerprintParam(FingerprintContext *ctx, const Param *node, const void *parent, const char *field_name, unsigned int depth); +static void _fingerprintAggref(FingerprintContext *ctx, const Aggref *node, const void *parent, const char *field_name, unsigned int depth); +static void _fingerprintGroupingFunc(FingerprintContext *ctx, const GroupingFunc *node, const void *parent, const char *field_name, unsigned int depth); +static void _fingerprintWindowFunc(FingerprintContext *ctx, const WindowFunc *node, const void *parent, const char *field_name, unsigned int depth); +static void _fingerprintSubscriptingRef(FingerprintContext *ctx, const SubscriptingRef *node, const void *parent, const char *field_name, unsigned int depth); +static void _fingerprintFuncExpr(FingerprintContext *ctx, const FuncExpr *node, const void *parent, const char *field_name, unsigned int depth); +static void _fingerprintNamedArgExpr(FingerprintContext *ctx, const NamedArgExpr *node, const void *parent, const char *field_name, unsigned int depth); +static void _fingerprintOpExpr(FingerprintContext *ctx, const OpExpr *node, const void *parent, const char *field_name, unsigned int depth); +static void _fingerprintScalarArrayOpExpr(FingerprintContext *ctx, const ScalarArrayOpExpr *node, const void *parent, const char *field_name, unsigned int depth); +static void _fingerprintBoolExpr(FingerprintContext *ctx, const BoolExpr *node, const void *parent, const char *field_name, unsigned int depth); +static void _fingerprintSubLink(FingerprintContext *ctx, const SubLink *node, const void *parent, const char *field_name, unsigned int depth); +static void _fingerprintSubPlan(FingerprintContext *ctx, const SubPlan *node, const void *parent, const char *field_name, unsigned int depth); +static void _fingerprintAlternativeSubPlan(FingerprintContext *ctx, const AlternativeSubPlan *node, const void *parent, const char *field_name, unsigned int depth); +static void _fingerprintFieldSelect(FingerprintContext *ctx, const FieldSelect *node, const void *parent, const char *field_name, unsigned int depth); +static void _fingerprintFieldStore(FingerprintContext *ctx, const FieldStore *node, const void *parent, const char *field_name, unsigned int depth); +static void _fingerprintRelabelType(FingerprintContext *ctx, const RelabelType *node, const void *parent, const char *field_name, unsigned int depth); +static void _fingerprintCoerceViaIO(FingerprintContext *ctx, const CoerceViaIO *node, const void *parent, const char *field_name, unsigned int depth); +static void _fingerprintArrayCoerceExpr(FingerprintContext *ctx, const ArrayCoerceExpr *node, const void *parent, const char *field_name, unsigned int depth); +static void _fingerprintConvertRowtypeExpr(FingerprintContext *ctx, const ConvertRowtypeExpr *node, const void *parent, const char *field_name, unsigned int depth); +static void _fingerprintCollateExpr(FingerprintContext *ctx, const CollateExpr *node, const void *parent, const char *field_name, unsigned int depth); +static void _fingerprintCaseExpr(FingerprintContext *ctx, const CaseExpr *node, const void *parent, const char *field_name, unsigned int depth); +static void _fingerprintCaseWhen(FingerprintContext *ctx, const CaseWhen *node, const void *parent, const char *field_name, unsigned int depth); +static void _fingerprintCaseTestExpr(FingerprintContext *ctx, const CaseTestExpr *node, const void *parent, const char *field_name, unsigned int depth); +static void _fingerprintArrayExpr(FingerprintContext *ctx, const ArrayExpr *node, const void *parent, const char *field_name, unsigned int depth); +static void _fingerprintRowExpr(FingerprintContext *ctx, const RowExpr *node, const void *parent, const char *field_name, unsigned int depth); +static void _fingerprintRowCompareExpr(FingerprintContext *ctx, const RowCompareExpr *node, const void *parent, const char *field_name, unsigned int depth); +static void _fingerprintCoalesceExpr(FingerprintContext *ctx, const CoalesceExpr *node, const void *parent, const char *field_name, unsigned int depth); +static void _fingerprintMinMaxExpr(FingerprintContext *ctx, const MinMaxExpr *node, const void *parent, const char *field_name, unsigned int depth); +static void _fingerprintSQLValueFunction(FingerprintContext *ctx, const SQLValueFunction *node, const void *parent, const char *field_name, unsigned int depth); +static void _fingerprintXmlExpr(FingerprintContext *ctx, const XmlExpr *node, const void *parent, const char *field_name, unsigned int depth); +static void _fingerprintNullTest(FingerprintContext *ctx, const NullTest *node, const void *parent, const char *field_name, unsigned int depth); +static void _fingerprintBooleanTest(FingerprintContext *ctx, const BooleanTest *node, const void *parent, const char *field_name, unsigned int depth); +static void _fingerprintCoerceToDomain(FingerprintContext *ctx, const CoerceToDomain *node, const void *parent, const char *field_name, unsigned int depth); +static void _fingerprintCoerceToDomainValue(FingerprintContext *ctx, const CoerceToDomainValue *node, const void *parent, const char *field_name, unsigned int depth); +static void _fingerprintSetToDefault(FingerprintContext *ctx, const SetToDefault *node, const void *parent, const char *field_name, unsigned int depth); +static void _fingerprintCurrentOfExpr(FingerprintContext *ctx, const CurrentOfExpr *node, const void *parent, const char *field_name, unsigned int depth); +static void _fingerprintNextValueExpr(FingerprintContext *ctx, const NextValueExpr *node, const void *parent, const char *field_name, unsigned int depth); +static void _fingerprintInferenceElem(FingerprintContext *ctx, const InferenceElem *node, const void *parent, const char *field_name, unsigned int depth); +static void _fingerprintTargetEntry(FingerprintContext *ctx, const TargetEntry *node, const void *parent, const char *field_name, unsigned int depth); +static void _fingerprintRangeTblRef(FingerprintContext *ctx, const RangeTblRef *node, const void *parent, const char *field_name, unsigned int depth); +static void _fingerprintJoinExpr(FingerprintContext *ctx, const JoinExpr *node, const void *parent, const char *field_name, unsigned int depth); +static void _fingerprintFromExpr(FingerprintContext *ctx, const FromExpr *node, const void *parent, const char *field_name, unsigned int depth); +static void _fingerprintOnConflictExpr(FingerprintContext *ctx, const OnConflictExpr *node, const void *parent, const char *field_name, unsigned int depth); +static void _fingerprintIntoClause(FingerprintContext *ctx, const IntoClause *node, const void *parent, const char *field_name, unsigned int depth); +static void _fingerprintRawStmt(FingerprintContext *ctx, const RawStmt *node, const void *parent, const char *field_name, unsigned int depth); +static void _fingerprintQuery(FingerprintContext *ctx, const Query *node, const void *parent, const char *field_name, unsigned int depth); +static void _fingerprintInsertStmt(FingerprintContext *ctx, const InsertStmt *node, const void *parent, const char *field_name, unsigned int depth); +static void _fingerprintDeleteStmt(FingerprintContext *ctx, const DeleteStmt *node, const void *parent, const char *field_name, unsigned int depth); +static void _fingerprintUpdateStmt(FingerprintContext *ctx, const UpdateStmt *node, const void *parent, const char *field_name, unsigned int depth); +static void _fingerprintSelectStmt(FingerprintContext *ctx, const SelectStmt *node, const void *parent, const char *field_name, unsigned int depth); +static void _fingerprintAlterTableStmt(FingerprintContext *ctx, const AlterTableStmt *node, const void *parent, const char *field_name, unsigned int depth); +static void _fingerprintAlterTableCmd(FingerprintContext *ctx, const AlterTableCmd *node, const void *parent, const char *field_name, unsigned int depth); +static void _fingerprintAlterDomainStmt(FingerprintContext *ctx, const AlterDomainStmt *node, const void *parent, const char *field_name, unsigned int depth); +static void _fingerprintSetOperationStmt(FingerprintContext *ctx, const SetOperationStmt *node, const void *parent, const char *field_name, unsigned int depth); +static void _fingerprintGrantStmt(FingerprintContext *ctx, const GrantStmt *node, const void *parent, const char *field_name, unsigned int depth); +static void _fingerprintGrantRoleStmt(FingerprintContext *ctx, const GrantRoleStmt *node, const void *parent, const char *field_name, unsigned int depth); +static void _fingerprintAlterDefaultPrivilegesStmt(FingerprintContext *ctx, const AlterDefaultPrivilegesStmt *node, const void *parent, const char *field_name, unsigned int depth); +static void _fingerprintClosePortalStmt(FingerprintContext *ctx, const ClosePortalStmt *node, const void *parent, const char *field_name, unsigned int depth); +static void _fingerprintClusterStmt(FingerprintContext *ctx, const ClusterStmt *node, const void *parent, const char *field_name, unsigned int depth); +static void _fingerprintCopyStmt(FingerprintContext *ctx, const CopyStmt *node, const void *parent, const char *field_name, unsigned int depth); +static void _fingerprintCreateStmt(FingerprintContext *ctx, const CreateStmt *node, const void *parent, const char *field_name, unsigned int depth); +static void _fingerprintDefineStmt(FingerprintContext *ctx, const DefineStmt *node, const void *parent, const char *field_name, unsigned int depth); +static void _fingerprintDropStmt(FingerprintContext *ctx, const DropStmt *node, const void *parent, const char *field_name, unsigned int depth); +static void _fingerprintTruncateStmt(FingerprintContext *ctx, const TruncateStmt *node, const void *parent, const char *field_name, unsigned int depth); +static void _fingerprintCommentStmt(FingerprintContext *ctx, const CommentStmt *node, const void *parent, const char *field_name, unsigned int depth); +static void _fingerprintFetchStmt(FingerprintContext *ctx, const FetchStmt *node, const void *parent, const char *field_name, unsigned int depth); +static void _fingerprintIndexStmt(FingerprintContext *ctx, const IndexStmt *node, const void *parent, const char *field_name, unsigned int depth); +static void _fingerprintCreateFunctionStmt(FingerprintContext *ctx, const CreateFunctionStmt *node, const void *parent, const char *field_name, unsigned int depth); +static void _fingerprintAlterFunctionStmt(FingerprintContext *ctx, const AlterFunctionStmt *node, const void *parent, const char *field_name, unsigned int depth); +static void _fingerprintDoStmt(FingerprintContext *ctx, const DoStmt *node, const void *parent, const char *field_name, unsigned int depth); +static void _fingerprintRenameStmt(FingerprintContext *ctx, const RenameStmt *node, const void *parent, const char *field_name, unsigned int depth); +static void _fingerprintRuleStmt(FingerprintContext *ctx, const RuleStmt *node, const void *parent, const char *field_name, unsigned int depth); +static void _fingerprintNotifyStmt(FingerprintContext *ctx, const NotifyStmt *node, const void *parent, const char *field_name, unsigned int depth); +static void _fingerprintListenStmt(FingerprintContext *ctx, const ListenStmt *node, const void *parent, const char *field_name, unsigned int depth); +static void _fingerprintUnlistenStmt(FingerprintContext *ctx, const UnlistenStmt *node, const void *parent, const char *field_name, unsigned int depth); +static void _fingerprintTransactionStmt(FingerprintContext *ctx, const TransactionStmt *node, const void *parent, const char *field_name, unsigned int depth); +static void _fingerprintViewStmt(FingerprintContext *ctx, const ViewStmt *node, const void *parent, const char *field_name, unsigned int depth); +static void _fingerprintLoadStmt(FingerprintContext *ctx, const LoadStmt *node, const void *parent, const char *field_name, unsigned int depth); +static void _fingerprintCreateDomainStmt(FingerprintContext *ctx, const CreateDomainStmt *node, const void *parent, const char *field_name, unsigned int depth); +static void _fingerprintCreatedbStmt(FingerprintContext *ctx, const CreatedbStmt *node, const void *parent, const char *field_name, unsigned int depth); +static void _fingerprintDropdbStmt(FingerprintContext *ctx, const DropdbStmt *node, const void *parent, const char *field_name, unsigned int depth); +static void _fingerprintVacuumStmt(FingerprintContext *ctx, const VacuumStmt *node, const void *parent, const char *field_name, unsigned int depth); +static void _fingerprintExplainStmt(FingerprintContext *ctx, const ExplainStmt *node, const void *parent, const char *field_name, unsigned int depth); +static void _fingerprintCreateTableAsStmt(FingerprintContext *ctx, const CreateTableAsStmt *node, const void *parent, const char *field_name, unsigned int depth); +static void _fingerprintCreateSeqStmt(FingerprintContext *ctx, const CreateSeqStmt *node, const void *parent, const char *field_name, unsigned int depth); +static void _fingerprintAlterSeqStmt(FingerprintContext *ctx, const AlterSeqStmt *node, const void *parent, const char *field_name, unsigned int depth); +static void _fingerprintVariableSetStmt(FingerprintContext *ctx, const VariableSetStmt *node, const void *parent, const char *field_name, unsigned int depth); +static void _fingerprintVariableShowStmt(FingerprintContext *ctx, const VariableShowStmt *node, const void *parent, const char *field_name, unsigned int depth); +static void _fingerprintDiscardStmt(FingerprintContext *ctx, const DiscardStmt *node, const void *parent, const char *field_name, unsigned int depth); +static void _fingerprintCreateTrigStmt(FingerprintContext *ctx, const CreateTrigStmt *node, const void *parent, const char *field_name, unsigned int depth); +static void _fingerprintCreatePLangStmt(FingerprintContext *ctx, const CreatePLangStmt *node, const void *parent, const char *field_name, unsigned int depth); +static void _fingerprintCreateRoleStmt(FingerprintContext *ctx, const CreateRoleStmt *node, const void *parent, const char *field_name, unsigned int depth); +static void _fingerprintAlterRoleStmt(FingerprintContext *ctx, const AlterRoleStmt *node, const void *parent, const char *field_name, unsigned int depth); +static void _fingerprintDropRoleStmt(FingerprintContext *ctx, const DropRoleStmt *node, const void *parent, const char *field_name, unsigned int depth); +static void _fingerprintLockStmt(FingerprintContext *ctx, const LockStmt *node, const void *parent, const char *field_name, unsigned int depth); +static void _fingerprintConstraintsSetStmt(FingerprintContext *ctx, const ConstraintsSetStmt *node, const void *parent, const char *field_name, unsigned int depth); +static void _fingerprintReindexStmt(FingerprintContext *ctx, const ReindexStmt *node, const void *parent, const char *field_name, unsigned int depth); +static void _fingerprintCheckPointStmt(FingerprintContext *ctx, const CheckPointStmt *node, const void *parent, const char *field_name, unsigned int depth); +static void _fingerprintCreateSchemaStmt(FingerprintContext *ctx, const CreateSchemaStmt *node, const void *parent, const char *field_name, unsigned int depth); +static void _fingerprintAlterDatabaseStmt(FingerprintContext *ctx, const AlterDatabaseStmt *node, const void *parent, const char *field_name, unsigned int depth); +static void _fingerprintAlterDatabaseSetStmt(FingerprintContext *ctx, const AlterDatabaseSetStmt *node, const void *parent, const char *field_name, unsigned int depth); +static void _fingerprintAlterRoleSetStmt(FingerprintContext *ctx, const AlterRoleSetStmt *node, const void *parent, const char *field_name, unsigned int depth); +static void _fingerprintCreateConversionStmt(FingerprintContext *ctx, const CreateConversionStmt *node, const void *parent, const char *field_name, unsigned int depth); +static void _fingerprintCreateCastStmt(FingerprintContext *ctx, const CreateCastStmt *node, const void *parent, const char *field_name, unsigned int depth); +static void _fingerprintCreateOpClassStmt(FingerprintContext *ctx, const CreateOpClassStmt *node, const void *parent, const char *field_name, unsigned int depth); +static void _fingerprintCreateOpFamilyStmt(FingerprintContext *ctx, const CreateOpFamilyStmt *node, const void *parent, const char *field_name, unsigned int depth); +static void _fingerprintAlterOpFamilyStmt(FingerprintContext *ctx, const AlterOpFamilyStmt *node, const void *parent, const char *field_name, unsigned int depth); +static void _fingerprintPrepareStmt(FingerprintContext *ctx, const PrepareStmt *node, const void *parent, const char *field_name, unsigned int depth); +static void _fingerprintExecuteStmt(FingerprintContext *ctx, const ExecuteStmt *node, const void *parent, const char *field_name, unsigned int depth); +static void _fingerprintDeallocateStmt(FingerprintContext *ctx, const DeallocateStmt *node, const void *parent, const char *field_name, unsigned int depth); +static void _fingerprintDeclareCursorStmt(FingerprintContext *ctx, const DeclareCursorStmt *node, const void *parent, const char *field_name, unsigned int depth); +static void _fingerprintCreateTableSpaceStmt(FingerprintContext *ctx, const CreateTableSpaceStmt *node, const void *parent, const char *field_name, unsigned int depth); +static void _fingerprintDropTableSpaceStmt(FingerprintContext *ctx, const DropTableSpaceStmt *node, const void *parent, const char *field_name, unsigned int depth); +static void _fingerprintAlterObjectDependsStmt(FingerprintContext *ctx, const AlterObjectDependsStmt *node, const void *parent, const char *field_name, unsigned int depth); +static void _fingerprintAlterObjectSchemaStmt(FingerprintContext *ctx, const AlterObjectSchemaStmt *node, const void *parent, const char *field_name, unsigned int depth); +static void _fingerprintAlterOwnerStmt(FingerprintContext *ctx, const AlterOwnerStmt *node, const void *parent, const char *field_name, unsigned int depth); +static void _fingerprintAlterOperatorStmt(FingerprintContext *ctx, const AlterOperatorStmt *node, const void *parent, const char *field_name, unsigned int depth); +static void _fingerprintAlterTypeStmt(FingerprintContext *ctx, const AlterTypeStmt *node, const void *parent, const char *field_name, unsigned int depth); +static void _fingerprintDropOwnedStmt(FingerprintContext *ctx, const DropOwnedStmt *node, const void *parent, const char *field_name, unsigned int depth); +static void _fingerprintReassignOwnedStmt(FingerprintContext *ctx, const ReassignOwnedStmt *node, const void *parent, const char *field_name, unsigned int depth); +static void _fingerprintCompositeTypeStmt(FingerprintContext *ctx, const CompositeTypeStmt *node, const void *parent, const char *field_name, unsigned int depth); +static void _fingerprintCreateEnumStmt(FingerprintContext *ctx, const CreateEnumStmt *node, const void *parent, const char *field_name, unsigned int depth); +static void _fingerprintCreateRangeStmt(FingerprintContext *ctx, const CreateRangeStmt *node, const void *parent, const char *field_name, unsigned int depth); +static void _fingerprintAlterEnumStmt(FingerprintContext *ctx, const AlterEnumStmt *node, const void *parent, const char *field_name, unsigned int depth); +static void _fingerprintAlterTSDictionaryStmt(FingerprintContext *ctx, const AlterTSDictionaryStmt *node, const void *parent, const char *field_name, unsigned int depth); +static void _fingerprintAlterTSConfigurationStmt(FingerprintContext *ctx, const AlterTSConfigurationStmt *node, const void *parent, const char *field_name, unsigned int depth); +static void _fingerprintCreateFdwStmt(FingerprintContext *ctx, const CreateFdwStmt *node, const void *parent, const char *field_name, unsigned int depth); +static void _fingerprintAlterFdwStmt(FingerprintContext *ctx, const AlterFdwStmt *node, const void *parent, const char *field_name, unsigned int depth); +static void _fingerprintCreateForeignServerStmt(FingerprintContext *ctx, const CreateForeignServerStmt *node, const void *parent, const char *field_name, unsigned int depth); +static void _fingerprintAlterForeignServerStmt(FingerprintContext *ctx, const AlterForeignServerStmt *node, const void *parent, const char *field_name, unsigned int depth); +static void _fingerprintCreateUserMappingStmt(FingerprintContext *ctx, const CreateUserMappingStmt *node, const void *parent, const char *field_name, unsigned int depth); +static void _fingerprintAlterUserMappingStmt(FingerprintContext *ctx, const AlterUserMappingStmt *node, const void *parent, const char *field_name, unsigned int depth); +static void _fingerprintDropUserMappingStmt(FingerprintContext *ctx, const DropUserMappingStmt *node, const void *parent, const char *field_name, unsigned int depth); +static void _fingerprintAlterTableSpaceOptionsStmt(FingerprintContext *ctx, const AlterTableSpaceOptionsStmt *node, const void *parent, const char *field_name, unsigned int depth); +static void _fingerprintAlterTableMoveAllStmt(FingerprintContext *ctx, const AlterTableMoveAllStmt *node, const void *parent, const char *field_name, unsigned int depth); +static void _fingerprintSecLabelStmt(FingerprintContext *ctx, const SecLabelStmt *node, const void *parent, const char *field_name, unsigned int depth); +static void _fingerprintCreateForeignTableStmt(FingerprintContext *ctx, const CreateForeignTableStmt *node, const void *parent, const char *field_name, unsigned int depth); +static void _fingerprintImportForeignSchemaStmt(FingerprintContext *ctx, const ImportForeignSchemaStmt *node, const void *parent, const char *field_name, unsigned int depth); +static void _fingerprintCreateExtensionStmt(FingerprintContext *ctx, const CreateExtensionStmt *node, const void *parent, const char *field_name, unsigned int depth); +static void _fingerprintAlterExtensionStmt(FingerprintContext *ctx, const AlterExtensionStmt *node, const void *parent, const char *field_name, unsigned int depth); +static void _fingerprintAlterExtensionContentsStmt(FingerprintContext *ctx, const AlterExtensionContentsStmt *node, const void *parent, const char *field_name, unsigned int depth); +static void _fingerprintCreateEventTrigStmt(FingerprintContext *ctx, const CreateEventTrigStmt *node, const void *parent, const char *field_name, unsigned int depth); +static void _fingerprintAlterEventTrigStmt(FingerprintContext *ctx, const AlterEventTrigStmt *node, const void *parent, const char *field_name, unsigned int depth); +static void _fingerprintRefreshMatViewStmt(FingerprintContext *ctx, const RefreshMatViewStmt *node, const void *parent, const char *field_name, unsigned int depth); +static void _fingerprintReplicaIdentityStmt(FingerprintContext *ctx, const ReplicaIdentityStmt *node, const void *parent, const char *field_name, unsigned int depth); +static void _fingerprintAlterSystemStmt(FingerprintContext *ctx, const AlterSystemStmt *node, const void *parent, const char *field_name, unsigned int depth); +static void _fingerprintCreatePolicyStmt(FingerprintContext *ctx, const CreatePolicyStmt *node, const void *parent, const char *field_name, unsigned int depth); +static void _fingerprintAlterPolicyStmt(FingerprintContext *ctx, const AlterPolicyStmt *node, const void *parent, const char *field_name, unsigned int depth); +static void _fingerprintCreateTransformStmt(FingerprintContext *ctx, const CreateTransformStmt *node, const void *parent, const char *field_name, unsigned int depth); +static void _fingerprintCreateAmStmt(FingerprintContext *ctx, const CreateAmStmt *node, const void *parent, const char *field_name, unsigned int depth); +static void _fingerprintCreatePublicationStmt(FingerprintContext *ctx, const CreatePublicationStmt *node, const void *parent, const char *field_name, unsigned int depth); +static void _fingerprintAlterPublicationStmt(FingerprintContext *ctx, const AlterPublicationStmt *node, const void *parent, const char *field_name, unsigned int depth); +static void _fingerprintCreateSubscriptionStmt(FingerprintContext *ctx, const CreateSubscriptionStmt *node, const void *parent, const char *field_name, unsigned int depth); +static void _fingerprintAlterSubscriptionStmt(FingerprintContext *ctx, const AlterSubscriptionStmt *node, const void *parent, const char *field_name, unsigned int depth); +static void _fingerprintDropSubscriptionStmt(FingerprintContext *ctx, const DropSubscriptionStmt *node, const void *parent, const char *field_name, unsigned int depth); +static void _fingerprintCreateStatsStmt(FingerprintContext *ctx, const CreateStatsStmt *node, const void *parent, const char *field_name, unsigned int depth); +static void _fingerprintAlterCollationStmt(FingerprintContext *ctx, const AlterCollationStmt *node, const void *parent, const char *field_name, unsigned int depth); +static void _fingerprintCallStmt(FingerprintContext *ctx, const CallStmt *node, const void *parent, const char *field_name, unsigned int depth); +static void _fingerprintAlterStatsStmt(FingerprintContext *ctx, const AlterStatsStmt *node, const void *parent, const char *field_name, unsigned int depth); +static void _fingerprintA_Expr(FingerprintContext *ctx, const A_Expr *node, const void *parent, const char *field_name, unsigned int depth); +static void _fingerprintColumnRef(FingerprintContext *ctx, const ColumnRef *node, const void *parent, const char *field_name, unsigned int depth); +static void _fingerprintParamRef(FingerprintContext *ctx, const ParamRef *node, const void *parent, const char *field_name, unsigned int depth); +static void _fingerprintA_Const(FingerprintContext *ctx, const A_Const *node, const void *parent, const char *field_name, unsigned int depth); +static void _fingerprintFuncCall(FingerprintContext *ctx, const FuncCall *node, const void *parent, const char *field_name, unsigned int depth); +static void _fingerprintA_Star(FingerprintContext *ctx, const A_Star *node, const void *parent, const char *field_name, unsigned int depth); +static void _fingerprintA_Indices(FingerprintContext *ctx, const A_Indices *node, const void *parent, const char *field_name, unsigned int depth); +static void _fingerprintA_Indirection(FingerprintContext *ctx, const A_Indirection *node, const void *parent, const char *field_name, unsigned int depth); +static void _fingerprintA_ArrayExpr(FingerprintContext *ctx, const A_ArrayExpr *node, const void *parent, const char *field_name, unsigned int depth); +static void _fingerprintResTarget(FingerprintContext *ctx, const ResTarget *node, const void *parent, const char *field_name, unsigned int depth); +static void _fingerprintMultiAssignRef(FingerprintContext *ctx, const MultiAssignRef *node, const void *parent, const char *field_name, unsigned int depth); +static void _fingerprintTypeCast(FingerprintContext *ctx, const TypeCast *node, const void *parent, const char *field_name, unsigned int depth); +static void _fingerprintCollateClause(FingerprintContext *ctx, const CollateClause *node, const void *parent, const char *field_name, unsigned int depth); +static void _fingerprintSortBy(FingerprintContext *ctx, const SortBy *node, const void *parent, const char *field_name, unsigned int depth); +static void _fingerprintWindowDef(FingerprintContext *ctx, const WindowDef *node, const void *parent, const char *field_name, unsigned int depth); +static void _fingerprintRangeSubselect(FingerprintContext *ctx, const RangeSubselect *node, const void *parent, const char *field_name, unsigned int depth); +static void _fingerprintRangeFunction(FingerprintContext *ctx, const RangeFunction *node, const void *parent, const char *field_name, unsigned int depth); +static void _fingerprintRangeTableSample(FingerprintContext *ctx, const RangeTableSample *node, const void *parent, const char *field_name, unsigned int depth); +static void _fingerprintRangeTableFunc(FingerprintContext *ctx, const RangeTableFunc *node, const void *parent, const char *field_name, unsigned int depth); +static void _fingerprintRangeTableFuncCol(FingerprintContext *ctx, const RangeTableFuncCol *node, const void *parent, const char *field_name, unsigned int depth); +static void _fingerprintTypeName(FingerprintContext *ctx, const TypeName *node, const void *parent, const char *field_name, unsigned int depth); +static void _fingerprintColumnDef(FingerprintContext *ctx, const ColumnDef *node, const void *parent, const char *field_name, unsigned int depth); +static void _fingerprintIndexElem(FingerprintContext *ctx, const IndexElem *node, const void *parent, const char *field_name, unsigned int depth); +static void _fingerprintConstraint(FingerprintContext *ctx, const Constraint *node, const void *parent, const char *field_name, unsigned int depth); +static void _fingerprintDefElem(FingerprintContext *ctx, const DefElem *node, const void *parent, const char *field_name, unsigned int depth); +static void _fingerprintRangeTblEntry(FingerprintContext *ctx, const RangeTblEntry *node, const void *parent, const char *field_name, unsigned int depth); +static void _fingerprintRangeTblFunction(FingerprintContext *ctx, const RangeTblFunction *node, const void *parent, const char *field_name, unsigned int depth); +static void _fingerprintTableSampleClause(FingerprintContext *ctx, const TableSampleClause *node, const void *parent, const char *field_name, unsigned int depth); +static void _fingerprintWithCheckOption(FingerprintContext *ctx, const WithCheckOption *node, const void *parent, const char *field_name, unsigned int depth); +static void _fingerprintSortGroupClause(FingerprintContext *ctx, const SortGroupClause *node, const void *parent, const char *field_name, unsigned int depth); +static void _fingerprintGroupingSet(FingerprintContext *ctx, const GroupingSet *node, const void *parent, const char *field_name, unsigned int depth); +static void _fingerprintWindowClause(FingerprintContext *ctx, const WindowClause *node, const void *parent, const char *field_name, unsigned int depth); +static void _fingerprintObjectWithArgs(FingerprintContext *ctx, const ObjectWithArgs *node, const void *parent, const char *field_name, unsigned int depth); +static void _fingerprintAccessPriv(FingerprintContext *ctx, const AccessPriv *node, const void *parent, const char *field_name, unsigned int depth); +static void _fingerprintCreateOpClassItem(FingerprintContext *ctx, const CreateOpClassItem *node, const void *parent, const char *field_name, unsigned int depth); +static void _fingerprintTableLikeClause(FingerprintContext *ctx, const TableLikeClause *node, const void *parent, const char *field_name, unsigned int depth); +static void _fingerprintFunctionParameter(FingerprintContext *ctx, const FunctionParameter *node, const void *parent, const char *field_name, unsigned int depth); +static void _fingerprintLockingClause(FingerprintContext *ctx, const LockingClause *node, const void *parent, const char *field_name, unsigned int depth); +static void _fingerprintRowMarkClause(FingerprintContext *ctx, const RowMarkClause *node, const void *parent, const char *field_name, unsigned int depth); +static void _fingerprintXmlSerialize(FingerprintContext *ctx, const XmlSerialize *node, const void *parent, const char *field_name, unsigned int depth); +static void _fingerprintWithClause(FingerprintContext *ctx, const WithClause *node, const void *parent, const char *field_name, unsigned int depth); +static void _fingerprintInferClause(FingerprintContext *ctx, const InferClause *node, const void *parent, const char *field_name, unsigned int depth); +static void _fingerprintOnConflictClause(FingerprintContext *ctx, const OnConflictClause *node, const void *parent, const char *field_name, unsigned int depth); +static void _fingerprintCommonTableExpr(FingerprintContext *ctx, const CommonTableExpr *node, const void *parent, const char *field_name, unsigned int depth); +static void _fingerprintRoleSpec(FingerprintContext *ctx, const RoleSpec *node, const void *parent, const char *field_name, unsigned int depth); +static void _fingerprintTriggerTransition(FingerprintContext *ctx, const TriggerTransition *node, const void *parent, const char *field_name, unsigned int depth); +static void _fingerprintPartitionElem(FingerprintContext *ctx, const PartitionElem *node, const void *parent, const char *field_name, unsigned int depth); +static void _fingerprintPartitionSpec(FingerprintContext *ctx, const PartitionSpec *node, const void *parent, const char *field_name, unsigned int depth); +static void _fingerprintPartitionBoundSpec(FingerprintContext *ctx, const PartitionBoundSpec *node, const void *parent, const char *field_name, unsigned int depth); +static void _fingerprintPartitionRangeDatum(FingerprintContext *ctx, const PartitionRangeDatum *node, const void *parent, const char *field_name, unsigned int depth); +static void _fingerprintPartitionCmd(FingerprintContext *ctx, const PartitionCmd *node, const void *parent, const char *field_name, unsigned int depth); +static void _fingerprintVacuumRelation(FingerprintContext *ctx, const VacuumRelation *node, const void *parent, const char *field_name, unsigned int depth); +static void _fingerprintInlineCodeBlock(FingerprintContext *ctx, const InlineCodeBlock *node, const void *parent, const char *field_name, unsigned int depth); +static void _fingerprintCallContext(FingerprintContext *ctx, const CallContext *node, const void *parent, const char *field_name, unsigned int depth); + + static void _fingerprintAlias(FingerprintContext *ctx, const Alias *node, const void *parent, const char *field_name, unsigned int depth) { @@ -7,13 +228,21 @@ _fingerprintAlias(FingerprintContext *ctx, const Alias *node, const void *parent static void _fingerprintRangeVar(FingerprintContext *ctx, const RangeVar *node, const void *parent, const char *field_name, unsigned int depth) { - _fingerprintString(ctx, "RangeVar"); - if (node->alias != NULL) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->alias, node, "alias", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "alias"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "alias"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintAlias(ctx, node->alias, node, "alias", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } if (node->catalogname != NULL) { @@ -29,8 +258,23 @@ _fingerprintRangeVar(FingerprintContext *ctx, const RangeVar *node, const void * // Intentionally ignoring node->location for fingerprinting if (node->relname != NULL && node->relpersistence != 't') { + int len = strlen(node->relname); + char *r = palloc0((len + 1) * sizeof(char)); + char *p = r; + for (int i = 0; i < len; i++) { + if (node->relname[i] >= '0' && node->relname[i] <= '9' && + ((i + 1 < len && node->relname[i + 1] >= '0' && node->relname[i + 1] <= '9') || + (i > 0 && node->relname[i - 1] >= '0' && node->relname[i - 1] <= '9'))) { + // Skip + } else { + *p = node->relname[i]; + p++; + } + } + *p = 0; _fingerprintString(ctx, "relname"); - _fingerprintString(ctx, node->relname); + _fingerprintString(ctx, r); + pfree(r); } if (node->relpersistence != 0) { @@ -49,49 +293,117 @@ _fingerprintRangeVar(FingerprintContext *ctx, const RangeVar *node, const void * static void _fingerprintTableFunc(FingerprintContext *ctx, const TableFunc *node, const void *parent, const char *field_name, unsigned int depth) { - _fingerprintString(ctx, "TableFunc"); - if (node->colcollations != NULL && node->colcollations->length > 0) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->colcollations, node, "colcollations", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "colcollations"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "colcollations"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->colcollations, node, "colcollations", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } if (node->coldefexprs != NULL && node->coldefexprs->length > 0) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->coldefexprs, node, "coldefexprs", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "coldefexprs"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "coldefexprs"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->coldefexprs, node, "coldefexprs", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } if (node->colexprs != NULL && node->colexprs->length > 0) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->colexprs, node, "colexprs", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "colexprs"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "colexprs"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->colexprs, node, "colexprs", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } if (node->colnames != NULL && node->colnames->length > 0) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->colnames, node, "colnames", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "colnames"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "colnames"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->colnames, node, "colnames", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } if (node->coltypes != NULL && node->coltypes->length > 0) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->coltypes, node, "coltypes", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "coltypes"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "coltypes"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->coltypes, node, "coltypes", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } if (node->coltypmods != NULL && node->coltypmods->length > 0) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->coltypmods, node, "coltypmods", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "coltypmods"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "coltypmods"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->coltypmods, node, "coltypmods", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } if (node->docexpr != NULL) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->docexpr, node, "docexpr", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "docexpr"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "docexpr"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->docexpr, node, "docexpr", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } // Intentionally ignoring node->location for fingerprinting @@ -112,16 +424,36 @@ _fingerprintTableFunc(FingerprintContext *ctx, const TableFunc *node, const void } if (node->ns_names != NULL && node->ns_names->length > 0) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->ns_names, node, "ns_names", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "ns_names"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "ns_names"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->ns_names, node, "ns_names", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } if (node->ns_uris != NULL && node->ns_uris->length > 0) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->ns_uris, node, "ns_uris", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "ns_uris"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "ns_uris"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->ns_uris, node, "ns_uris", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } if (node->ordinalitycol != 0) { char buffer[50]; @@ -131,10 +463,20 @@ _fingerprintTableFunc(FingerprintContext *ctx, const TableFunc *node, const void } if (node->rowexpr != NULL) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->rowexpr, node, "rowexpr", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "rowexpr"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "rowexpr"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->rowexpr, node, "rowexpr", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } } @@ -142,15 +484,11 @@ _fingerprintTableFunc(FingerprintContext *ctx, const TableFunc *node, const void static void _fingerprintExpr(FingerprintContext *ctx, const Expr *node, const void *parent, const char *field_name, unsigned int depth) { - _fingerprintString(ctx, "Expr"); - } static void _fingerprintVar(FingerprintContext *ctx, const Var *node, const void *parent, const char *field_name, unsigned int depth) { - _fingerprintString(ctx, "Var"); - // Intentionally ignoring node->location for fingerprinting if (node->varattno != 0) { @@ -160,6 +498,13 @@ _fingerprintVar(FingerprintContext *ctx, const Var *node, const void *parent, co _fingerprintString(ctx, buffer); } + if (node->varattnosyn != 0) { + char buffer[50]; + sprintf(buffer, "%d", node->varattnosyn); + _fingerprintString(ctx, "varattnosyn"); + _fingerprintString(ctx, buffer); + } + if (node->varcollid != 0) { char buffer[50]; sprintf(buffer, "%d", node->varcollid); @@ -181,17 +526,10 @@ _fingerprintVar(FingerprintContext *ctx, const Var *node, const void *parent, co _fingerprintString(ctx, buffer); } - if (node->varnoold != 0) { - char buffer[50]; - sprintf(buffer, "%d", node->varnoold); - _fingerprintString(ctx, "varnoold"); - _fingerprintString(ctx, buffer); - } - - if (node->varoattno != 0) { + if (node->varnosyn != 0) { char buffer[50]; - sprintf(buffer, "%d", node->varoattno); - _fingerprintString(ctx, "varoattno"); + sprintf(buffer, "%d", node->varnosyn); + _fingerprintString(ctx, "varnosyn"); _fingerprintString(ctx, buffer); } @@ -214,8 +552,6 @@ _fingerprintVar(FingerprintContext *ctx, const Var *node, const void *parent, co static void _fingerprintConst(FingerprintContext *ctx, const Const *node, const void *parent, const char *field_name, unsigned int depth) { - _fingerprintString(ctx, "Const"); - if (node->constbyval) { _fingerprintString(ctx, "constbyval"); _fingerprintString(ctx, "true"); @@ -261,8 +597,6 @@ _fingerprintConst(FingerprintContext *ctx, const Const *node, const void *parent static void _fingerprintParam(FingerprintContext *ctx, const Param *node, const void *parent, const char *field_name, unsigned int depth) { - _fingerprintString(ctx, "Param"); - // Intentionally ignoring node->location for fingerprinting if (node->paramcollid != 0) { @@ -279,11 +613,9 @@ _fingerprintParam(FingerprintContext *ctx, const Param *node, const void *parent _fingerprintString(ctx, buffer); } - if (node->paramkind != 0) { - char buffer[50]; - sprintf(buffer, "%d", node->paramkind); + if (true) { _fingerprintString(ctx, "paramkind"); - _fingerprintString(ctx, buffer); + _fingerprintString(ctx, _enumToStringParamKind(node->paramkind)); } if (node->paramtype != 0) { @@ -305,13 +637,21 @@ _fingerprintParam(FingerprintContext *ctx, const Param *node, const void *parent static void _fingerprintAggref(FingerprintContext *ctx, const Aggref *node, const void *parent, const char *field_name, unsigned int depth) { - _fingerprintString(ctx, "Aggref"); - if (node->aggargtypes != NULL && node->aggargtypes->length > 0) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->aggargtypes, node, "aggargtypes", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "aggargtypes"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "aggargtypes"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->aggargtypes, node, "aggargtypes", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } if (node->aggcollid != 0) { char buffer[50]; @@ -321,22 +661,52 @@ _fingerprintAggref(FingerprintContext *ctx, const Aggref *node, const void *pare } if (node->aggdirectargs != NULL && node->aggdirectargs->length > 0) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->aggdirectargs, node, "aggdirectargs", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "aggdirectargs"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "aggdirectargs"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->aggdirectargs, node, "aggdirectargs", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } if (node->aggdistinct != NULL && node->aggdistinct->length > 0) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->aggdistinct, node, "aggdistinct", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "aggdistinct"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "aggdistinct"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->aggdistinct, node, "aggdistinct", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } if (node->aggfilter != NULL) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->aggfilter, node, "aggfilter", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "aggfilter"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "aggfilter"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->aggfilter, node, "aggfilter", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } if (node->aggfnoid != 0) { @@ -360,16 +730,24 @@ _fingerprintAggref(FingerprintContext *ctx, const Aggref *node, const void *pare } if (node->aggorder != NULL && node->aggorder->length > 0) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->aggorder, node, "aggorder", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "aggorder"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "aggorder"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->aggorder, node, "aggorder", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } - if (node->aggsplit != 0) { - char buffer[50]; - sprintf(buffer, "%d", node->aggsplit); + if (true) { _fingerprintString(ctx, "aggsplit"); - _fingerprintString(ctx, buffer); + _fingerprintString(ctx, _enumToStringAggSplit(node->aggsplit)); } if (node->aggstar) { @@ -397,10 +775,20 @@ _fingerprintAggref(FingerprintContext *ctx, const Aggref *node, const void *pare } if (node->args != NULL && node->args->length > 0) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->args, node, "args", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "args"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "args"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->args, node, "args", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } if (node->inputcollid != 0) { char buffer[50]; @@ -416,8 +804,6 @@ _fingerprintAggref(FingerprintContext *ctx, const Aggref *node, const void *pare static void _fingerprintGroupingFunc(FingerprintContext *ctx, const GroupingFunc *node, const void *parent, const char *field_name, unsigned int depth) { - _fingerprintString(ctx, "GroupingFunc"); - if (node->agglevelsup != 0) { char buffer[50]; sprintf(buffer, "%d", node->agglevelsup); @@ -426,44 +812,92 @@ _fingerprintGroupingFunc(FingerprintContext *ctx, const GroupingFunc *node, cons } if (node->args != NULL && node->args->length > 0) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->args, node, "args", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "args"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "args"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->args, node, "args", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } if (node->cols != NULL && node->cols->length > 0) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->cols, node, "cols", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "cols"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "cols"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->cols, node, "cols", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } // Intentionally ignoring node->location for fingerprinting if (node->refs != NULL && node->refs->length > 0) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->refs, node, "refs", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "refs"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "refs"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->refs, node, "refs", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } } static void _fingerprintWindowFunc(FingerprintContext *ctx, const WindowFunc *node, const void *parent, const char *field_name, unsigned int depth) { - _fingerprintString(ctx, "WindowFunc"); - if (node->aggfilter != NULL) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->aggfilter, node, "aggfilter", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "aggfilter"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "aggfilter"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->aggfilter, node, "aggfilter", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } if (node->args != NULL && node->args->length > 0) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->args, node, "args", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "args"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "args"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->args, node, "args", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } if (node->inputcollid != 0) { char buffer[50]; @@ -515,22 +949,23 @@ _fingerprintWindowFunc(FingerprintContext *ctx, const WindowFunc *node, const vo } static void -_fingerprintArrayRef(FingerprintContext *ctx, const ArrayRef *node, const void *parent, const char *field_name, unsigned int depth) +_fingerprintSubscriptingRef(FingerprintContext *ctx, const SubscriptingRef *node, const void *parent, const char *field_name, unsigned int depth) { - _fingerprintString(ctx, "ArrayRef"); - - if (node->refarraytype != 0) { - char buffer[50]; - sprintf(buffer, "%d", node->refarraytype); - _fingerprintString(ctx, "refarraytype"); - _fingerprintString(ctx, buffer); - } - if (node->refassgnexpr != NULL) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->refassgnexpr, node, "refassgnexpr", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "refassgnexpr"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "refassgnexpr"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->refassgnexpr, node, "refassgnexpr", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } if (node->refcollid != 0) { @@ -540,6 +975,13 @@ _fingerprintArrayRef(FingerprintContext *ctx, const ArrayRef *node, const void * _fingerprintString(ctx, buffer); } + if (node->refcontainertype != 0) { + char buffer[50]; + sprintf(buffer, "%d", node->refcontainertype); + _fingerprintString(ctx, "refcontainertype"); + _fingerprintString(ctx, buffer); + } + if (node->refelemtype != 0) { char buffer[50]; sprintf(buffer, "%d", node->refelemtype); @@ -548,17 +990,37 @@ _fingerprintArrayRef(FingerprintContext *ctx, const ArrayRef *node, const void * } if (node->refexpr != NULL) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->refexpr, node, "refexpr", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "refexpr"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "refexpr"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->refexpr, node, "refexpr", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } if (node->reflowerindexpr != NULL && node->reflowerindexpr->length > 0) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->reflowerindexpr, node, "reflowerindexpr", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "reflowerindexpr"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "reflowerindexpr"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->reflowerindexpr, node, "reflowerindexpr", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } if (node->reftypmod != 0) { char buffer[50]; @@ -568,23 +1030,41 @@ _fingerprintArrayRef(FingerprintContext *ctx, const ArrayRef *node, const void * } if (node->refupperindexpr != NULL && node->refupperindexpr->length > 0) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->refupperindexpr, node, "refupperindexpr", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "refupperindexpr"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "refupperindexpr"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->refupperindexpr, node, "refupperindexpr", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } } static void _fingerprintFuncExpr(FingerprintContext *ctx, const FuncExpr *node, const void *parent, const char *field_name, unsigned int depth) { - _fingerprintString(ctx, "FuncExpr"); - if (node->args != NULL && node->args->length > 0) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->args, node, "args", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "args"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "args"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->args, node, "args", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } if (node->funccollid != 0) { char buffer[50]; @@ -593,11 +1073,9 @@ _fingerprintFuncExpr(FingerprintContext *ctx, const FuncExpr *node, const void * _fingerprintString(ctx, buffer); } - if (node->funcformat != 0) { - char buffer[50]; - sprintf(buffer, "%d", node->funcformat); + if (true) { _fingerprintString(ctx, "funcformat"); - _fingerprintString(ctx, buffer); + _fingerprintString(ctx, _enumToStringCoercionForm(node->funcformat)); } if (node->funcid != 0) { @@ -638,13 +1116,21 @@ _fingerprintFuncExpr(FingerprintContext *ctx, const FuncExpr *node, const void * static void _fingerprintNamedArgExpr(FingerprintContext *ctx, const NamedArgExpr *node, const void *parent, const char *field_name, unsigned int depth) { - _fingerprintString(ctx, "NamedArgExpr"); - if (node->arg != NULL) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->arg, node, "arg", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "arg"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "arg"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->arg, node, "arg", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } if (node->argnumber != 0) { @@ -666,13 +1152,21 @@ _fingerprintNamedArgExpr(FingerprintContext *ctx, const NamedArgExpr *node, cons static void _fingerprintOpExpr(FingerprintContext *ctx, const OpExpr *node, const void *parent, const char *field_name, unsigned int depth) { - _fingerprintString(ctx, "OpExpr"); - if (node->args != NULL && node->args->length > 0) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->args, node, "args", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "args"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "args"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->args, node, "args", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } if (node->inputcollid != 0) { char buffer[50]; @@ -721,13 +1215,21 @@ _fingerprintOpExpr(FingerprintContext *ctx, const OpExpr *node, const void *pare static void _fingerprintScalarArrayOpExpr(FingerprintContext *ctx, const ScalarArrayOpExpr *node, const void *parent, const char *field_name, unsigned int depth) { - _fingerprintString(ctx, "ScalarArrayOpExpr"); - if (node->args != NULL && node->args->length > 0) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->args, node, "args", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "args"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "args"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->args, node, "args", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } if (node->inputcollid != 0) { char buffer[50]; @@ -762,19 +1264,25 @@ _fingerprintScalarArrayOpExpr(FingerprintContext *ctx, const ScalarArrayOpExpr * static void _fingerprintBoolExpr(FingerprintContext *ctx, const BoolExpr *node, const void *parent, const char *field_name, unsigned int depth) { - _fingerprintString(ctx, "BoolExpr"); - if (node->args != NULL && node->args->length > 0) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->args, node, "args", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "args"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "args"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->args, node, "args", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } - if (node->boolop != 0) { - char buffer[50]; - sprintf(buffer, "%d", node->boolop); + if (true) { _fingerprintString(ctx, "boolop"); - _fingerprintString(ctx, buffer); + _fingerprintString(ctx, _enumToStringBoolExprType(node->boolop)); } // Intentionally ignoring node->location for fingerprinting @@ -784,15 +1292,23 @@ _fingerprintBoolExpr(FingerprintContext *ctx, const BoolExpr *node, const void * static void _fingerprintSubLink(FingerprintContext *ctx, const SubLink *node, const void *parent, const char *field_name, unsigned int depth) { - _fingerprintString(ctx, "SubLink"); - // Intentionally ignoring node->location for fingerprinting if (node->operName != NULL && node->operName->length > 0) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->operName, node, "operName", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "operName"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "operName"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->operName, node, "operName", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } if (node->subLinkId != 0) { char buffer[50]; @@ -801,25 +1317,43 @@ _fingerprintSubLink(FingerprintContext *ctx, const SubLink *node, const void *pa _fingerprintString(ctx, buffer); } - if (node->subLinkType != 0) { - char buffer[50]; - sprintf(buffer, "%d", node->subLinkType); + if (true) { _fingerprintString(ctx, "subLinkType"); - _fingerprintString(ctx, buffer); + _fingerprintString(ctx, _enumToStringSubLinkType(node->subLinkType)); } if (node->subselect != NULL) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->subselect, node, "subselect", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "subselect"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "subselect"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->subselect, node, "subselect", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } if (node->testexpr != NULL) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->testexpr, node, "testexpr", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "testexpr"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "testexpr"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->testexpr, node, "testexpr", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } } @@ -827,13 +1361,21 @@ _fingerprintSubLink(FingerprintContext *ctx, const SubLink *node, const void *pa static void _fingerprintSubPlan(FingerprintContext *ctx, const SubPlan *node, const void *parent, const char *field_name, unsigned int depth) { - _fingerprintString(ctx, "SubPlan"); - if (node->args != NULL && node->args->length > 0) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->args, node, "args", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "args"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "args"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->args, node, "args", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } if (node->firstColCollation != 0) { char buffer[50]; @@ -857,10 +1399,20 @@ _fingerprintSubPlan(FingerprintContext *ctx, const SubPlan *node, const void *pa } if (node->parParam != NULL && node->parParam->length > 0) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->parParam, node, "parParam", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "parParam"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "parParam"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->parParam, node, "parParam", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } if (node->parallel_safe) { _fingerprintString(ctx, "parallel_safe"); @@ -868,10 +1420,20 @@ _fingerprintSubPlan(FingerprintContext *ctx, const SubPlan *node, const void *pa } if (node->paramIds != NULL && node->paramIds->length > 0) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->paramIds, node, "paramIds", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "paramIds"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "paramIds"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->paramIds, node, "paramIds", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } if (node->per_call_cost != 0) { char buffer[50]; @@ -893,10 +1455,20 @@ _fingerprintSubPlan(FingerprintContext *ctx, const SubPlan *node, const void *pa } if (node->setParam != NULL && node->setParam->length > 0) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->setParam, node, "setParam", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "setParam"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "setParam"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->setParam, node, "setParam", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } if (node->startup_cost != 0) { char buffer[50]; @@ -905,18 +1477,26 @@ _fingerprintSubPlan(FingerprintContext *ctx, const SubPlan *node, const void *pa _fingerprintString(ctx, buffer); } - if (node->subLinkType != 0) { - char buffer[50]; - sprintf(buffer, "%d", node->subLinkType); + if (true) { _fingerprintString(ctx, "subLinkType"); - _fingerprintString(ctx, buffer); + _fingerprintString(ctx, _enumToStringSubLinkType(node->subLinkType)); } if (node->testexpr != NULL) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->testexpr, node, "testexpr", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "testexpr"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "testexpr"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->testexpr, node, "testexpr", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } if (node->unknownEqFalse) { @@ -934,26 +1514,42 @@ _fingerprintSubPlan(FingerprintContext *ctx, const SubPlan *node, const void *pa static void _fingerprintAlternativeSubPlan(FingerprintContext *ctx, const AlternativeSubPlan *node, const void *parent, const char *field_name, unsigned int depth) { - _fingerprintString(ctx, "AlternativeSubPlan"); - if (node->subplans != NULL && node->subplans->length > 0) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->subplans, node, "subplans", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "subplans"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "subplans"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->subplans, node, "subplans", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } } static void _fingerprintFieldSelect(FingerprintContext *ctx, const FieldSelect *node, const void *parent, const char *field_name, unsigned int depth) { - _fingerprintString(ctx, "FieldSelect"); - if (node->arg != NULL) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->arg, node, "arg", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "arg"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "arg"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->arg, node, "arg", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } if (node->fieldnum != 0) { @@ -989,26 +1585,54 @@ _fingerprintFieldSelect(FingerprintContext *ctx, const FieldSelect *node, const static void _fingerprintFieldStore(FingerprintContext *ctx, const FieldStore *node, const void *parent, const char *field_name, unsigned int depth) { - _fingerprintString(ctx, "FieldStore"); - if (node->arg != NULL) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->arg, node, "arg", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "arg"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "arg"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->arg, node, "arg", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } if (node->fieldnums != NULL && node->fieldnums->length > 0) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->fieldnums, node, "fieldnums", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "fieldnums"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "fieldnums"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->fieldnums, node, "fieldnums", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } if (node->newvals != NULL && node->newvals->length > 0) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->newvals, node, "newvals", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "newvals"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "newvals"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->newvals, node, "newvals", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } if (node->resulttype != 0) { char buffer[50]; @@ -1022,22 +1646,28 @@ _fingerprintFieldStore(FingerprintContext *ctx, const FieldStore *node, const vo static void _fingerprintRelabelType(FingerprintContext *ctx, const RelabelType *node, const void *parent, const char *field_name, unsigned int depth) { - _fingerprintString(ctx, "RelabelType"); - if (node->arg != NULL) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->arg, node, "arg", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "arg"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "arg"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->arg, node, "arg", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } // Intentionally ignoring node->location for fingerprinting - if (node->relabelformat != 0) { - char buffer[50]; - sprintf(buffer, "%d", node->relabelformat); + if (true) { _fingerprintString(ctx, "relabelformat"); - _fingerprintString(ctx, buffer); + _fingerprintString(ctx, _enumToStringCoercionForm(node->relabelformat)); } if (node->resultcollid != 0) { @@ -1066,20 +1696,26 @@ _fingerprintRelabelType(FingerprintContext *ctx, const RelabelType *node, const static void _fingerprintCoerceViaIO(FingerprintContext *ctx, const CoerceViaIO *node, const void *parent, const char *field_name, unsigned int depth) { - _fingerprintString(ctx, "CoerceViaIO"); - if (node->arg != NULL) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->arg, node, "arg", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "arg"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "arg"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->arg, node, "arg", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } - if (node->coerceformat != 0) { - char buffer[50]; - sprintf(buffer, "%d", node->coerceformat); + if (true) { _fingerprintString(ctx, "coerceformat"); - _fingerprintString(ctx, buffer); + _fingerprintString(ctx, _enumToStringCoercionForm(node->coerceformat)); } // Intentionally ignoring node->location for fingerprinting @@ -1103,32 +1739,43 @@ _fingerprintCoerceViaIO(FingerprintContext *ctx, const CoerceViaIO *node, const static void _fingerprintArrayCoerceExpr(FingerprintContext *ctx, const ArrayCoerceExpr *node, const void *parent, const char *field_name, unsigned int depth) { - _fingerprintString(ctx, "ArrayCoerceExpr"); - if (node->arg != NULL) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->arg, node, "arg", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "arg"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "arg"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->arg, node, "arg", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } - if (node->coerceformat != 0) { - char buffer[50]; - sprintf(buffer, "%d", node->coerceformat); + if (true) { _fingerprintString(ctx, "coerceformat"); - _fingerprintString(ctx, buffer); + _fingerprintString(ctx, _enumToStringCoercionForm(node->coerceformat)); } - if (node->elemfuncid != 0) { - char buffer[50]; - sprintf(buffer, "%d", node->elemfuncid); - _fingerprintString(ctx, "elemfuncid"); - _fingerprintString(ctx, buffer); - } + if (node->elemexpr != NULL) { + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; - if (node->isExplicit) { - _fingerprintString(ctx, "isExplicit"); - _fingerprintString(ctx, "true"); + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "elemexpr"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->elemexpr, node, "elemexpr", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } // Intentionally ignoring node->location for fingerprinting @@ -1159,20 +1806,26 @@ _fingerprintArrayCoerceExpr(FingerprintContext *ctx, const ArrayCoerceExpr *node static void _fingerprintConvertRowtypeExpr(FingerprintContext *ctx, const ConvertRowtypeExpr *node, const void *parent, const char *field_name, unsigned int depth) { - _fingerprintString(ctx, "ConvertRowtypeExpr"); - if (node->arg != NULL) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->arg, node, "arg", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "arg"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "arg"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->arg, node, "arg", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } - if (node->convertformat != 0) { - char buffer[50]; - sprintf(buffer, "%d", node->convertformat); + if (true) { _fingerprintString(ctx, "convertformat"); - _fingerprintString(ctx, buffer); + _fingerprintString(ctx, _enumToStringCoercionForm(node->convertformat)); } // Intentionally ignoring node->location for fingerprinting @@ -1189,13 +1842,21 @@ _fingerprintConvertRowtypeExpr(FingerprintContext *ctx, const ConvertRowtypeExpr static void _fingerprintCollateExpr(FingerprintContext *ctx, const CollateExpr *node, const void *parent, const char *field_name, unsigned int depth) { - _fingerprintString(ctx, "CollateExpr"); - if (node->arg != NULL) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->arg, node, "arg", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "arg"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "arg"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->arg, node, "arg", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } if (node->collOid != 0) { @@ -1212,20 +1873,38 @@ _fingerprintCollateExpr(FingerprintContext *ctx, const CollateExpr *node, const static void _fingerprintCaseExpr(FingerprintContext *ctx, const CaseExpr *node, const void *parent, const char *field_name, unsigned int depth) { - _fingerprintString(ctx, "CaseExpr"); - if (node->arg != NULL) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->arg, node, "arg", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "arg"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "arg"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->arg, node, "arg", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } if (node->args != NULL && node->args->length > 0) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->args, node, "args", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "args"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "args"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->args, node, "args", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } if (node->casecollid != 0) { char buffer[50]; @@ -1242,10 +1921,20 @@ _fingerprintCaseExpr(FingerprintContext *ctx, const CaseExpr *node, const void * } if (node->defresult != NULL) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->defresult, node, "defresult", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "defresult"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "defresult"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->defresult, node, "defresult", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } // Intentionally ignoring node->location for fingerprinting @@ -1255,22 +1944,40 @@ _fingerprintCaseExpr(FingerprintContext *ctx, const CaseExpr *node, const void * static void _fingerprintCaseWhen(FingerprintContext *ctx, const CaseWhen *node, const void *parent, const char *field_name, unsigned int depth) { - _fingerprintString(ctx, "CaseWhen"); - if (node->expr != NULL) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->expr, node, "expr", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "expr"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "expr"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->expr, node, "expr", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } // Intentionally ignoring node->location for fingerprinting if (node->result != NULL) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->result, node, "result", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "result"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "result"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->result, node, "result", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } } @@ -1278,8 +1985,6 @@ _fingerprintCaseWhen(FingerprintContext *ctx, const CaseWhen *node, const void * static void _fingerprintCaseTestExpr(FingerprintContext *ctx, const CaseTestExpr *node, const void *parent, const char *field_name, unsigned int depth) { - _fingerprintString(ctx, "CaseTestExpr"); - if (node->collation != 0) { char buffer[50]; sprintf(buffer, "%d", node->collation); @@ -1306,8 +2011,6 @@ _fingerprintCaseTestExpr(FingerprintContext *ctx, const CaseTestExpr *node, cons static void _fingerprintArrayExpr(FingerprintContext *ctx, const ArrayExpr *node, const void *parent, const char *field_name, unsigned int depth) { - _fingerprintString(ctx, "ArrayExpr"); - if (node->array_collid != 0) { char buffer[50]; sprintf(buffer, "%d", node->array_collid); @@ -1330,10 +2033,20 @@ _fingerprintArrayExpr(FingerprintContext *ctx, const ArrayExpr *node, const void } if (node->elements != NULL && node->elements->length > 0) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->elements, node, "elements", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "elements"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "elements"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->elements, node, "elements", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } // Intentionally ignoring node->location for fingerprinting @@ -1347,27 +2060,43 @@ _fingerprintArrayExpr(FingerprintContext *ctx, const ArrayExpr *node, const void static void _fingerprintRowExpr(FingerprintContext *ctx, const RowExpr *node, const void *parent, const char *field_name, unsigned int depth) { - _fingerprintString(ctx, "RowExpr"); - if (node->args != NULL && node->args->length > 0) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->args, node, "args", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "args"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "args"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->args, node, "args", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } if (node->colnames != NULL && node->colnames->length > 0) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->colnames, node, "colnames", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "colnames"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "colnames"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->colnames, node, "colnames", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } // Intentionally ignoring node->location for fingerprinting - if (node->row_format != 0) { - char buffer[50]; - sprintf(buffer, "%d", node->row_format); + if (true) { _fingerprintString(ctx, "row_format"); - _fingerprintString(ctx, buffer); + _fingerprintString(ctx, _enumToStringCoercionForm(node->row_format)); } if (node->row_typeid != 0) { @@ -1382,43 +2111,89 @@ _fingerprintRowExpr(FingerprintContext *ctx, const RowExpr *node, const void *pa static void _fingerprintRowCompareExpr(FingerprintContext *ctx, const RowCompareExpr *node, const void *parent, const char *field_name, unsigned int depth) { - _fingerprintString(ctx, "RowCompareExpr"); - if (node->inputcollids != NULL && node->inputcollids->length > 0) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->inputcollids, node, "inputcollids", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "inputcollids"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "inputcollids"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->inputcollids, node, "inputcollids", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } if (node->largs != NULL && node->largs->length > 0) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->largs, node, "largs", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "largs"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "largs"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->largs, node, "largs", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } if (node->opfamilies != NULL && node->opfamilies->length > 0) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->opfamilies, node, "opfamilies", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "opfamilies"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "opfamilies"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->opfamilies, node, "opfamilies", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } if (node->opnos != NULL && node->opnos->length > 0) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->opnos, node, "opnos", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "opnos"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "opnos"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->opnos, node, "opnos", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } if (node->rargs != NULL && node->rargs->length > 0) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->rargs, node, "rargs", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "rargs"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "rargs"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->rargs, node, "rargs", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } - if (node->rctype != 0) { - char buffer[50]; - sprintf(buffer, "%d", node->rctype); + if (true) { _fingerprintString(ctx, "rctype"); - _fingerprintString(ctx, buffer); + _fingerprintString(ctx, _enumToStringRowCompareType(node->rctype)); } } @@ -1426,13 +2201,21 @@ _fingerprintRowCompareExpr(FingerprintContext *ctx, const RowCompareExpr *node, static void _fingerprintCoalesceExpr(FingerprintContext *ctx, const CoalesceExpr *node, const void *parent, const char *field_name, unsigned int depth) { - _fingerprintString(ctx, "CoalesceExpr"); - if (node->args != NULL && node->args->length > 0) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->args, node, "args", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "args"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "args"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->args, node, "args", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } if (node->coalescecollid != 0) { char buffer[50]; @@ -1455,13 +2238,21 @@ _fingerprintCoalesceExpr(FingerprintContext *ctx, const CoalesceExpr *node, cons static void _fingerprintMinMaxExpr(FingerprintContext *ctx, const MinMaxExpr *node, const void *parent, const char *field_name, unsigned int depth) { - _fingerprintString(ctx, "MinMaxExpr"); - if (node->args != NULL && node->args->length > 0) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->args, node, "args", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "args"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "args"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->args, node, "args", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } if (node->inputcollid != 0) { char buffer[50]; @@ -1486,11 +2277,9 @@ _fingerprintMinMaxExpr(FingerprintContext *ctx, const MinMaxExpr *node, const vo _fingerprintString(ctx, buffer); } - if (node->op != 0) { - char buffer[50]; - sprintf(buffer, "%d", node->op); + if (true) { _fingerprintString(ctx, "op"); - _fingerprintString(ctx, buffer); + _fingerprintString(ctx, _enumToStringMinMaxOp(node->op)); } } @@ -1498,15 +2287,11 @@ _fingerprintMinMaxExpr(FingerprintContext *ctx, const MinMaxExpr *node, const vo static void _fingerprintSQLValueFunction(FingerprintContext *ctx, const SQLValueFunction *node, const void *parent, const char *field_name, unsigned int depth) { - _fingerprintString(ctx, "SQLValueFunction"); - // Intentionally ignoring node->location for fingerprinting - if (node->op != 0) { - char buffer[50]; - sprintf(buffer, "%d", node->op); + if (true) { _fingerprintString(ctx, "op"); - _fingerprintString(ctx, buffer); + _fingerprintString(ctx, _enumToStringSQLValueFunctionOp(node->op)); } if (node->type != 0) { @@ -1528,19 +2313,37 @@ _fingerprintSQLValueFunction(FingerprintContext *ctx, const SQLValueFunction *no static void _fingerprintXmlExpr(FingerprintContext *ctx, const XmlExpr *node, const void *parent, const char *field_name, unsigned int depth) { - _fingerprintString(ctx, "XmlExpr"); - if (node->arg_names != NULL && node->arg_names->length > 0) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->arg_names, node, "arg_names", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "arg_names"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "arg_names"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->arg_names, node, "arg_names", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } if (node->args != NULL && node->args->length > 0) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->args, node, "args", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "args"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "args"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->args, node, "args", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } // Intentionally ignoring node->location for fingerprinting @@ -1550,16 +2353,24 @@ _fingerprintXmlExpr(FingerprintContext *ctx, const XmlExpr *node, const void *pa } if (node->named_args != NULL && node->named_args->length > 0) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->named_args, node, "named_args", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "named_args"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "named_args"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->named_args, node, "named_args", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } - if (node->op != 0) { - char buffer[50]; - sprintf(buffer, "%d", node->op); + if (true) { _fingerprintString(ctx, "op"); - _fingerprintString(ctx, buffer); + _fingerprintString(ctx, _enumToStringXmlExprOp(node->op)); } if (node->type != 0) { @@ -1576,11 +2387,9 @@ _fingerprintXmlExpr(FingerprintContext *ctx, const XmlExpr *node, const void *pa _fingerprintString(ctx, buffer); } - if (node->xmloption != 0) { - char buffer[50]; - sprintf(buffer, "%d", node->xmloption); + if (true) { _fingerprintString(ctx, "xmloption"); - _fingerprintString(ctx, buffer); + _fingerprintString(ctx, _enumToStringXmlOptionType(node->xmloption)); } } @@ -1588,13 +2397,21 @@ _fingerprintXmlExpr(FingerprintContext *ctx, const XmlExpr *node, const void *pa static void _fingerprintNullTest(FingerprintContext *ctx, const NullTest *node, const void *parent, const char *field_name, unsigned int depth) { - _fingerprintString(ctx, "NullTest"); - if (node->arg != NULL) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->arg, node, "arg", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "arg"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "arg"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->arg, node, "arg", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } if (node->argisrow) { @@ -1604,11 +2421,9 @@ _fingerprintNullTest(FingerprintContext *ctx, const NullTest *node, const void * // Intentionally ignoring node->location for fingerprinting - if (node->nulltesttype != 0) { - char buffer[50]; - sprintf(buffer, "%d", node->nulltesttype); + if (true) { _fingerprintString(ctx, "nulltesttype"); - _fingerprintString(ctx, buffer); + _fingerprintString(ctx, _enumToStringNullTestType(node->nulltesttype)); } } @@ -1616,20 +2431,26 @@ _fingerprintNullTest(FingerprintContext *ctx, const NullTest *node, const void * static void _fingerprintBooleanTest(FingerprintContext *ctx, const BooleanTest *node, const void *parent, const char *field_name, unsigned int depth) { - _fingerprintString(ctx, "BooleanTest"); - if (node->arg != NULL) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->arg, node, "arg", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "arg"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "arg"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->arg, node, "arg", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } - if (node->booltesttype != 0) { - char buffer[50]; - sprintf(buffer, "%d", node->booltesttype); + if (true) { _fingerprintString(ctx, "booltesttype"); - _fingerprintString(ctx, buffer); + _fingerprintString(ctx, _enumToStringBoolTestType(node->booltesttype)); } // Intentionally ignoring node->location for fingerprinting @@ -1639,20 +2460,26 @@ _fingerprintBooleanTest(FingerprintContext *ctx, const BooleanTest *node, const static void _fingerprintCoerceToDomain(FingerprintContext *ctx, const CoerceToDomain *node, const void *parent, const char *field_name, unsigned int depth) { - _fingerprintString(ctx, "CoerceToDomain"); - if (node->arg != NULL) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->arg, node, "arg", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "arg"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "arg"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->arg, node, "arg", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } - if (node->coercionformat != 0) { - char buffer[50]; - sprintf(buffer, "%d", node->coercionformat); + if (true) { _fingerprintString(ctx, "coercionformat"); - _fingerprintString(ctx, buffer); + _fingerprintString(ctx, _enumToStringCoercionForm(node->coercionformat)); } // Intentionally ignoring node->location for fingerprinting @@ -1683,8 +2510,6 @@ _fingerprintCoerceToDomain(FingerprintContext *ctx, const CoerceToDomain *node, static void _fingerprintCoerceToDomainValue(FingerprintContext *ctx, const CoerceToDomainValue *node, const void *parent, const char *field_name, unsigned int depth) { - _fingerprintString(ctx, "CoerceToDomainValue"); - if (node->collation != 0) { char buffer[50]; sprintf(buffer, "%d", node->collation); @@ -1719,8 +2544,6 @@ _fingerprintSetToDefault(FingerprintContext *ctx, const SetToDefault *node, cons static void _fingerprintCurrentOfExpr(FingerprintContext *ctx, const CurrentOfExpr *node, const void *parent, const char *field_name, unsigned int depth) { - _fingerprintString(ctx, "CurrentOfExpr"); - if (node->cursor_name != NULL) { _fingerprintString(ctx, "cursor_name"); _fingerprintString(ctx, node->cursor_name); @@ -1745,8 +2568,6 @@ _fingerprintCurrentOfExpr(FingerprintContext *ctx, const CurrentOfExpr *node, co static void _fingerprintNextValueExpr(FingerprintContext *ctx, const NextValueExpr *node, const void *parent, const char *field_name, unsigned int depth) { - _fingerprintString(ctx, "NextValueExpr"); - if (node->seqid != 0) { char buffer[50]; sprintf(buffer, "%d", node->seqid); @@ -1766,13 +2587,21 @@ _fingerprintNextValueExpr(FingerprintContext *ctx, const NextValueExpr *node, co static void _fingerprintInferenceElem(FingerprintContext *ctx, const InferenceElem *node, const void *parent, const char *field_name, unsigned int depth) { - _fingerprintString(ctx, "InferenceElem"); - if (node->expr != NULL) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->expr, node, "expr", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "expr"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "expr"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->expr, node, "expr", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } if (node->infercollid != 0) { @@ -1794,13 +2623,21 @@ _fingerprintInferenceElem(FingerprintContext *ctx, const InferenceElem *node, co static void _fingerprintTargetEntry(FingerprintContext *ctx, const TargetEntry *node, const void *parent, const char *field_name, unsigned int depth) { - _fingerprintString(ctx, "TargetEntry"); - if (node->expr != NULL) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->expr, node, "expr", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "expr"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "expr"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->expr, node, "expr", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } if (node->resjunk) { @@ -1846,8 +2683,6 @@ _fingerprintTargetEntry(FingerprintContext *ctx, const TargetEntry *node, const static void _fingerprintRangeTblRef(FingerprintContext *ctx, const RangeTblRef *node, const void *parent, const char *field_name, unsigned int depth) { - _fingerprintString(ctx, "RangeTblRef"); - if (node->rtindex != 0) { char buffer[50]; sprintf(buffer, "%d", node->rtindex); @@ -1860,13 +2695,21 @@ _fingerprintRangeTblRef(FingerprintContext *ctx, const RangeTblRef *node, const static void _fingerprintJoinExpr(FingerprintContext *ctx, const JoinExpr *node, const void *parent, const char *field_name, unsigned int depth) { - _fingerprintString(ctx, "JoinExpr"); - if (node->alias != NULL) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->alias, node, "alias", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "alias"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "alias"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintAlias(ctx, node->alias, node, "alias", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } if (node->isNatural) { @@ -1874,32 +2717,60 @@ _fingerprintJoinExpr(FingerprintContext *ctx, const JoinExpr *node, const void * _fingerprintString(ctx, "true"); } - if (node->jointype != 0) { - char buffer[50]; - sprintf(buffer, "%d", node->jointype); + if (true) { _fingerprintString(ctx, "jointype"); - _fingerprintString(ctx, buffer); + _fingerprintString(ctx, _enumToStringJoinType(node->jointype)); } if (node->larg != NULL) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->larg, node, "larg", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "larg"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "larg"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->larg, node, "larg", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } if (node->quals != NULL) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->quals, node, "quals", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "quals"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "quals"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->quals, node, "quals", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } if (node->rarg != NULL) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->rarg, node, "rarg", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "rarg"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "rarg"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->rarg, node, "rarg", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } if (node->rtindex != 0) { @@ -1910,29 +2781,57 @@ _fingerprintJoinExpr(FingerprintContext *ctx, const JoinExpr *node, const void * } if (node->usingClause != NULL && node->usingClause->length > 0) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->usingClause, node, "usingClause", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "usingClause"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "usingClause"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->usingClause, node, "usingClause", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } } static void _fingerprintFromExpr(FingerprintContext *ctx, const FromExpr *node, const void *parent, const char *field_name, unsigned int depth) { - _fingerprintString(ctx, "FromExpr"); - if (node->fromlist != NULL && node->fromlist->length > 0) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->fromlist, node, "fromlist", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "fromlist"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "fromlist"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->fromlist, node, "fromlist", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } if (node->quals != NULL) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->quals, node, "quals", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "quals"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "quals"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->quals, node, "quals", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } } @@ -1940,26 +2839,42 @@ _fingerprintFromExpr(FingerprintContext *ctx, const FromExpr *node, const void * static void _fingerprintOnConflictExpr(FingerprintContext *ctx, const OnConflictExpr *node, const void *parent, const char *field_name, unsigned int depth) { - _fingerprintString(ctx, "OnConflictExpr"); - - if (node->action != 0) { - char buffer[50]; - sprintf(buffer, "%d", node->action); + if (true) { _fingerprintString(ctx, "action"); - _fingerprintString(ctx, buffer); + _fingerprintString(ctx, _enumToStringOnConflictAction(node->action)); } if (node->arbiterElems != NULL && node->arbiterElems->length > 0) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->arbiterElems, node, "arbiterElems", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "arbiterElems"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "arbiterElems"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->arbiterElems, node, "arbiterElems", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } if (node->arbiterWhere != NULL) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->arbiterWhere, node, "arbiterWhere", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "arbiterWhere"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "arbiterWhere"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->arbiterWhere, node, "arbiterWhere", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } if (node->constraint != 0) { @@ -1977,22 +2892,52 @@ _fingerprintOnConflictExpr(FingerprintContext *ctx, const OnConflictExpr *node, } if (node->exclRelTlist != NULL && node->exclRelTlist->length > 0) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->exclRelTlist, node, "exclRelTlist", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "exclRelTlist"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "exclRelTlist"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->exclRelTlist, node, "exclRelTlist", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } if (node->onConflictSet != NULL && node->onConflictSet->length > 0) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->onConflictSet, node, "onConflictSet", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "onConflictSet"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "onConflictSet"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->onConflictSet, node, "onConflictSet", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } if (node->onConflictWhere != NULL) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->onConflictWhere, node, "onConflictWhere", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "onConflictWhere"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "onConflictWhere"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->onConflictWhere, node, "onConflictWhere", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } } @@ -2000,32 +2945,63 @@ _fingerprintOnConflictExpr(FingerprintContext *ctx, const OnConflictExpr *node, static void _fingerprintIntoClause(FingerprintContext *ctx, const IntoClause *node, const void *parent, const char *field_name, unsigned int depth) { - _fingerprintString(ctx, "IntoClause"); + if (node->accessMethod != NULL) { + _fingerprintString(ctx, "accessMethod"); + _fingerprintString(ctx, node->accessMethod); + } if (node->colNames != NULL && node->colNames->length > 0) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->colNames, node, "colNames", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "colNames"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "colNames"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->colNames, node, "colNames", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } - if (node->onCommit != 0) { - char buffer[50]; - sprintf(buffer, "%d", node->onCommit); + if (true) { _fingerprintString(ctx, "onCommit"); - _fingerprintString(ctx, buffer); + _fingerprintString(ctx, _enumToStringOnCommitAction(node->onCommit)); } if (node->options != NULL && node->options->length > 0) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->options, node, "options", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "options"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "options"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->options, node, "options", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } if (node->rel != NULL) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->rel, node, "rel", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "rel"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "rel"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintRangeVar(ctx, node->rel, node, "rel", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } if (node->skipData) { @@ -2039,10 +3015,20 @@ _fingerprintIntoClause(FingerprintContext *ctx, const IntoClause *node, const vo } if (node->viewQuery != NULL) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->viewQuery, node, "viewQuery", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "viewQuery"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "viewQuery"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->viewQuery, node, "viewQuery", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } } @@ -2050,13 +3036,21 @@ _fingerprintIntoClause(FingerprintContext *ctx, const IntoClause *node, const vo static void _fingerprintRawStmt(FingerprintContext *ctx, const RawStmt *node, const void *parent, const char *field_name, unsigned int depth) { - _fingerprintString(ctx, "RawStmt"); - if (node->stmt != NULL) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->stmt, node, "stmt", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "stmt"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "stmt"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->stmt, node, "stmt", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } // Intentionally ignoring node->stmt_len for fingerprinting @@ -2068,49 +3062,95 @@ _fingerprintRawStmt(FingerprintContext *ctx, const RawStmt *node, const void *pa static void _fingerprintQuery(FingerprintContext *ctx, const Query *node, const void *parent, const char *field_name, unsigned int depth) { - _fingerprintString(ctx, "Query"); - if (node->canSetTag) { _fingerprintString(ctx, "canSetTag"); _fingerprintString(ctx, "true"); } - if (node->commandType != 0) { - char buffer[50]; - sprintf(buffer, "%d", node->commandType); + if (true) { _fingerprintString(ctx, "commandType"); - _fingerprintString(ctx, buffer); + _fingerprintString(ctx, _enumToStringCmdType(node->commandType)); } if (node->constraintDeps != NULL && node->constraintDeps->length > 0) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->constraintDeps, node, "constraintDeps", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "constraintDeps"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "constraintDeps"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->constraintDeps, node, "constraintDeps", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } if (node->cteList != NULL && node->cteList->length > 0) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->cteList, node, "cteList", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "cteList"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "cteList"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->cteList, node, "cteList", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } if (node->distinctClause != NULL && node->distinctClause->length > 0) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->distinctClause, node, "distinctClause", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "distinctClause"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "distinctClause"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->distinctClause, node, "distinctClause", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } if (node->groupClause != NULL && node->groupClause->length > 0) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->groupClause, node, "groupClause", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "groupClause"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "groupClause"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->groupClause, node, "groupClause", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } if (node->groupingSets != NULL && node->groupingSets->length > 0) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->groupingSets, node, "groupingSets", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "groupingSets"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "groupingSets"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->groupingSets, node, "groupingSets", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } if (node->hasAggs) { _fingerprintString(ctx, "hasAggs"); @@ -2158,59 +3198,110 @@ _fingerprintQuery(FingerprintContext *ctx, const Query *node, const void *parent } if (node->havingQual != NULL) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->havingQual, node, "havingQual", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "havingQual"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "havingQual"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->havingQual, node, "havingQual", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } if (node->jointree != NULL) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->jointree, node, "jointree", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "jointree"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "jointree"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintFromExpr(ctx, node->jointree, node, "jointree", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } if (node->limitCount != NULL) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->limitCount, node, "limitCount", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "limitCount"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "limitCount"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->limitCount, node, "limitCount", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } if (node->limitOffset != NULL) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->limitOffset, node, "limitOffset", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "limitOffset"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "limitOffset"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->limitOffset, node, "limitOffset", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); + } + + if (true) { + _fingerprintString(ctx, "limitOption"); + _fingerprintString(ctx, _enumToStringLimitOption(node->limitOption)); } if (node->onConflict != NULL) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->onConflict, node, "onConflict", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "onConflict"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "onConflict"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintOnConflictExpr(ctx, node->onConflict, node, "onConflict", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } - if (node->override != 0) { - char buffer[50]; - sprintf(buffer, "%d", node->override); + if (true) { _fingerprintString(ctx, "override"); - _fingerprintString(ctx, buffer); + _fingerprintString(ctx, _enumToStringOverridingKind(node->override)); } if (node->queryId != 0) { char buffer[50]; - sprintf(buffer, "%d", node->queryId); + sprintf(buffer, "%ld", node->queryId); _fingerprintString(ctx, "queryId"); _fingerprintString(ctx, buffer); } - if (node->querySource != 0) { - char buffer[50]; - sprintf(buffer, "%d", node->querySource); + if (true) { _fingerprintString(ctx, "querySource"); - _fingerprintString(ctx, buffer); + _fingerprintString(ctx, _enumToStringQuerySource(node->querySource)); } if (node->resultRelation != 0) { @@ -2221,35 +3312,85 @@ _fingerprintQuery(FingerprintContext *ctx, const Query *node, const void *parent } if (node->returningList != NULL && node->returningList->length > 0) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->returningList, node, "returningList", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "returningList"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "returningList"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->returningList, node, "returningList", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } if (node->rowMarks != NULL && node->rowMarks->length > 0) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->rowMarks, node, "rowMarks", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "rowMarks"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "rowMarks"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->rowMarks, node, "rowMarks", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } if (node->rtable != NULL && node->rtable->length > 0) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->rtable, node, "rtable", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "rtable"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "rtable"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->rtable, node, "rtable", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } if (node->setOperations != NULL) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->setOperations, node, "setOperations", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "setOperations"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "setOperations"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->setOperations, node, "setOperations", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } if (node->sortClause != NULL && node->sortClause->length > 0) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->sortClause, node, "sortClause", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "sortClause"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "sortClause"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->sortClause, node, "sortClause", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } if (node->stmt_len != 0) { char buffer[50]; @@ -2266,82 +3407,178 @@ _fingerprintQuery(FingerprintContext *ctx, const Query *node, const void *parent } if (node->targetList != NULL && node->targetList->length > 0) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->targetList, node, "targetList", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "targetList"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "targetList"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->targetList, node, "targetList", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } if (node->utilityStmt != NULL) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->utilityStmt, node, "utilityStmt", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "utilityStmt"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "utilityStmt"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->utilityStmt, node, "utilityStmt", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } if (node->windowClause != NULL && node->windowClause->length > 0) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->windowClause, node, "windowClause", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "windowClause"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "windowClause"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->windowClause, node, "windowClause", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } if (node->withCheckOptions != NULL && node->withCheckOptions->length > 0) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->withCheckOptions, node, "withCheckOptions", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "withCheckOptions"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "withCheckOptions"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->withCheckOptions, node, "withCheckOptions", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } } static void _fingerprintInsertStmt(FingerprintContext *ctx, const InsertStmt *node, const void *parent, const char *field_name, unsigned int depth) { - _fingerprintString(ctx, "InsertStmt"); - if (node->cols != NULL && node->cols->length > 0) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->cols, node, "cols", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "cols"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "cols"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->cols, node, "cols", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } if (node->onConflictClause != NULL) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->onConflictClause, node, "onConflictClause", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "onConflictClause"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "onConflictClause"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintOnConflictClause(ctx, node->onConflictClause, node, "onConflictClause", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } - if (node->override != 0) { - char buffer[50]; - sprintf(buffer, "%d", node->override); + if (true) { _fingerprintString(ctx, "override"); - _fingerprintString(ctx, buffer); + _fingerprintString(ctx, _enumToStringOverridingKind(node->override)); } if (node->relation != NULL) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->relation, node, "relation", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "relation"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "relation"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintRangeVar(ctx, node->relation, node, "relation", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } if (node->returningList != NULL && node->returningList->length > 0) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->returningList, node, "returningList", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "returningList"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "returningList"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->returningList, node, "returningList", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } if (node->selectStmt != NULL) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->selectStmt, node, "selectStmt", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "selectStmt"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "selectStmt"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->selectStmt, node, "selectStmt", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } if (node->withClause != NULL) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->withClause, node, "withClause", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "withClause"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "withClause"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintWithClause(ctx, node->withClause, node, "withClause", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } } @@ -2349,39 +3586,87 @@ _fingerprintInsertStmt(FingerprintContext *ctx, const InsertStmt *node, const vo static void _fingerprintDeleteStmt(FingerprintContext *ctx, const DeleteStmt *node, const void *parent, const char *field_name, unsigned int depth) { - _fingerprintString(ctx, "DeleteStmt"); - if (node->relation != NULL) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->relation, node, "relation", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "relation"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "relation"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintRangeVar(ctx, node->relation, node, "relation", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } if (node->returningList != NULL && node->returningList->length > 0) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->returningList, node, "returningList", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "returningList"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "returningList"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->returningList, node, "returningList", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } if (node->usingClause != NULL && node->usingClause->length > 0) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->usingClause, node, "usingClause", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "usingClause"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "usingClause"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->usingClause, node, "usingClause", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } if (node->whereClause != NULL) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->whereClause, node, "whereClause", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "whereClause"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "whereClause"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->whereClause, node, "whereClause", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } if (node->withClause != NULL) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->withClause, node, "withClause", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "withClause"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "withClause"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintWithClause(ctx, node->withClause, node, "withClause", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } } @@ -2389,45 +3674,103 @@ _fingerprintDeleteStmt(FingerprintContext *ctx, const DeleteStmt *node, const vo static void _fingerprintUpdateStmt(FingerprintContext *ctx, const UpdateStmt *node, const void *parent, const char *field_name, unsigned int depth) { - _fingerprintString(ctx, "UpdateStmt"); - if (node->fromClause != NULL && node->fromClause->length > 0) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->fromClause, node, "fromClause", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "fromClause"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "fromClause"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->fromClause, node, "fromClause", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } if (node->relation != NULL) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->relation, node, "relation", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "relation"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "relation"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintRangeVar(ctx, node->relation, node, "relation", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } if (node->returningList != NULL && node->returningList->length > 0) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->returningList, node, "returningList", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "returningList"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "returningList"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->returningList, node, "returningList", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } if (node->targetList != NULL && node->targetList->length > 0) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->targetList, node, "targetList", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "targetList"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "targetList"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->targetList, node, "targetList", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } if (node->whereClause != NULL) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->whereClause, node, "whereClause", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "whereClause"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "whereClause"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->whereClause, node, "whereClause", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } if (node->withClause != NULL) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->withClause, node, "withClause", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "withClause"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "withClause"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintWithClause(ctx, node->withClause, node, "withClause", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } } @@ -2435,122 +3778,283 @@ _fingerprintUpdateStmt(FingerprintContext *ctx, const UpdateStmt *node, const vo static void _fingerprintSelectStmt(FingerprintContext *ctx, const SelectStmt *node, const void *parent, const char *field_name, unsigned int depth) { - _fingerprintString(ctx, "SelectStmt"); - if (node->all) { _fingerprintString(ctx, "all"); _fingerprintString(ctx, "true"); } if (node->distinctClause != NULL && node->distinctClause->length > 0) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->distinctClause, node, "distinctClause", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "distinctClause"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "distinctClause"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->distinctClause, node, "distinctClause", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } if (node->fromClause != NULL && node->fromClause->length > 0) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->fromClause, node, "fromClause", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "fromClause"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "fromClause"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->fromClause, node, "fromClause", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } if (node->groupClause != NULL && node->groupClause->length > 0) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->groupClause, node, "groupClause", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "groupClause"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "groupClause"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->groupClause, node, "groupClause", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } if (node->havingClause != NULL) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->havingClause, node, "havingClause", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "havingClause"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "havingClause"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->havingClause, node, "havingClause", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } if (node->intoClause != NULL) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->intoClause, node, "intoClause", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "intoClause"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "intoClause"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintIntoClause(ctx, node->intoClause, node, "intoClause", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } if (node->larg != NULL) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->larg, node, "larg", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "larg"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "larg"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintSelectStmt(ctx, node->larg, node, "larg", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } if (node->limitCount != NULL) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->limitCount, node, "limitCount", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "limitCount"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "limitCount"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->limitCount, node, "limitCount", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } if (node->limitOffset != NULL) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->limitOffset, node, "limitOffset", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "limitOffset"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "limitOffset"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->limitOffset, node, "limitOffset", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); + } + + if (true) { + _fingerprintString(ctx, "limitOption"); + _fingerprintString(ctx, _enumToStringLimitOption(node->limitOption)); } if (node->lockingClause != NULL && node->lockingClause->length > 0) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->lockingClause, node, "lockingClause", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "lockingClause"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "lockingClause"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->lockingClause, node, "lockingClause", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } - if (node->op != 0) { - char buffer[50]; - sprintf(buffer, "%d", node->op); + if (true) { _fingerprintString(ctx, "op"); - _fingerprintString(ctx, buffer); + _fingerprintString(ctx, _enumToStringSetOperation(node->op)); } if (node->rarg != NULL) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->rarg, node, "rarg", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "rarg"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "rarg"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintSelectStmt(ctx, node->rarg, node, "rarg", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } if (node->sortClause != NULL && node->sortClause->length > 0) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->sortClause, node, "sortClause", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "sortClause"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "sortClause"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->sortClause, node, "sortClause", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } if (node->targetList != NULL && node->targetList->length > 0) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->targetList, node, "targetList", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "targetList"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "targetList"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->targetList, node, "targetList", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } if (node->valuesLists != NULL && node->valuesLists->length > 0) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->valuesLists, node, "valuesLists", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "valuesLists"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "valuesLists"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->valuesLists, node, "valuesLists", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } if (node->whereClause != NULL) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->whereClause, node, "whereClause", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "whereClause"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "whereClause"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->whereClause, node, "whereClause", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } if (node->windowClause != NULL && node->windowClause->length > 0) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->windowClause, node, "windowClause", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "windowClause"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "windowClause"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->windowClause, node, "windowClause", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } if (node->withClause != NULL) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->withClause, node, "withClause", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "withClause"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "withClause"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintWithClause(ctx, node->withClause, node, "withClause", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } } @@ -2558,13 +4062,21 @@ _fingerprintSelectStmt(FingerprintContext *ctx, const SelectStmt *node, const vo static void _fingerprintAlterTableStmt(FingerprintContext *ctx, const AlterTableStmt *node, const void *parent, const char *field_name, unsigned int depth) { - _fingerprintString(ctx, "AlterTableStmt"); - if (node->cmds != NULL && node->cmds->length > 0) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->cmds, node, "cmds", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "cmds"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "cmds"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->cmds, node, "cmds", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } if (node->missing_ok) { _fingerprintString(ctx, "missing_ok"); @@ -2572,17 +4084,25 @@ _fingerprintAlterTableStmt(FingerprintContext *ctx, const AlterTableStmt *node, } if (node->relation != NULL) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->relation, node, "relation", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "relation"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "relation"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintRangeVar(ctx, node->relation, node, "relation", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } - if (node->relkind != 0) { - char buffer[50]; - sprintf(buffer, "%d", node->relkind); + if (true) { _fingerprintString(ctx, "relkind"); - _fingerprintString(ctx, buffer); + _fingerprintString(ctx, _enumToStringObjectType(node->relkind)); } } @@ -2590,20 +4110,26 @@ _fingerprintAlterTableStmt(FingerprintContext *ctx, const AlterTableStmt *node, static void _fingerprintAlterTableCmd(FingerprintContext *ctx, const AlterTableCmd *node, const void *parent, const char *field_name, unsigned int depth) { - _fingerprintString(ctx, "AlterTableCmd"); - - if (node->behavior != 0) { - char buffer[50]; - sprintf(buffer, "%d", node->behavior); + if (true) { _fingerprintString(ctx, "behavior"); - _fingerprintString(ctx, buffer); + _fingerprintString(ctx, _enumToStringDropBehavior(node->behavior)); } if (node->def != NULL) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->def, node, "def", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "def"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "def"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->def, node, "def", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } if (node->missing_ok) { @@ -2617,38 +4143,59 @@ _fingerprintAlterTableCmd(FingerprintContext *ctx, const AlterTableCmd *node, co } if (node->newowner != NULL) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->newowner, node, "newowner", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "newowner"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "newowner"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintRoleSpec(ctx, node->newowner, node, "newowner", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } - if (node->subtype != 0) { + if (node->num != 0) { char buffer[50]; - sprintf(buffer, "%d", node->subtype); - _fingerprintString(ctx, "subtype"); + sprintf(buffer, "%d", node->num); + _fingerprintString(ctx, "num"); _fingerprintString(ctx, buffer); } + if (true) { + _fingerprintString(ctx, "subtype"); + _fingerprintString(ctx, _enumToStringAlterTableType(node->subtype)); + } + } static void _fingerprintAlterDomainStmt(FingerprintContext *ctx, const AlterDomainStmt *node, const void *parent, const char *field_name, unsigned int depth) { - _fingerprintString(ctx, "AlterDomainStmt"); - - if (node->behavior != 0) { - char buffer[50]; - sprintf(buffer, "%d", node->behavior); + if (true) { _fingerprintString(ctx, "behavior"); - _fingerprintString(ctx, buffer); + _fingerprintString(ctx, _enumToStringDropBehavior(node->behavior)); } if (node->def != NULL) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->def, node, "def", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "def"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "def"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->def, node, "def", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } if (node->missing_ok) { @@ -2668,66 +4215,132 @@ _fingerprintAlterDomainStmt(FingerprintContext *ctx, const AlterDomainStmt *node } if (node->typeName != NULL && node->typeName->length > 0) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->typeName, node, "typeName", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "typeName"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "typeName"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->typeName, node, "typeName", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } } static void _fingerprintSetOperationStmt(FingerprintContext *ctx, const SetOperationStmt *node, const void *parent, const char *field_name, unsigned int depth) { - _fingerprintString(ctx, "SetOperationStmt"); - if (node->all) { _fingerprintString(ctx, "all"); _fingerprintString(ctx, "true"); } if (node->colCollations != NULL && node->colCollations->length > 0) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->colCollations, node, "colCollations", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "colCollations"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "colCollations"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->colCollations, node, "colCollations", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } if (node->colTypes != NULL && node->colTypes->length > 0) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->colTypes, node, "colTypes", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "colTypes"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "colTypes"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->colTypes, node, "colTypes", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } if (node->colTypmods != NULL && node->colTypmods->length > 0) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->colTypmods, node, "colTypmods", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "colTypmods"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "colTypmods"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->colTypmods, node, "colTypmods", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } if (node->groupClauses != NULL && node->groupClauses->length > 0) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->groupClauses, node, "groupClauses", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "groupClauses"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "groupClauses"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->groupClauses, node, "groupClauses", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } if (node->larg != NULL) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->larg, node, "larg", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "larg"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "larg"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->larg, node, "larg", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } - if (node->op != 0) { - char buffer[50]; - sprintf(buffer, "%d", node->op); + if (true) { _fingerprintString(ctx, "op"); - _fingerprintString(ctx, buffer); + _fingerprintString(ctx, _enumToStringSetOperation(node->op)); } if (node->rarg != NULL) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->rarg, node, "rarg", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "rarg"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "rarg"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->rarg, node, "rarg", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } } @@ -2735,13 +4348,9 @@ _fingerprintSetOperationStmt(FingerprintContext *ctx, const SetOperationStmt *no static void _fingerprintGrantStmt(FingerprintContext *ctx, const GrantStmt *node, const void *parent, const char *field_name, unsigned int depth) { - _fingerprintString(ctx, "GrantStmt"); - - if (node->behavior != 0) { - char buffer[50]; - sprintf(buffer, "%d", node->behavior); + if (true) { _fingerprintString(ctx, "behavior"); - _fingerprintString(ctx, buffer); + _fingerprintString(ctx, _enumToStringDropBehavior(node->behavior)); } if (node->grant_option) { @@ -2750,10 +4359,20 @@ _fingerprintGrantStmt(FingerprintContext *ctx, const GrantStmt *node, const void } if (node->grantees != NULL && node->grantees->length > 0) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->grantees, node, "grantees", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "grantees"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "grantees"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->grantees, node, "grantees", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } if (node->is_grant) { _fingerprintString(ctx, "is_grant"); @@ -2761,29 +4380,45 @@ _fingerprintGrantStmt(FingerprintContext *ctx, const GrantStmt *node, const void } if (node->objects != NULL && node->objects->length > 0) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->objects, node, "objects", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "objects"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "objects"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->objects, node, "objects", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } - if (node->objtype != 0) { - char buffer[50]; - sprintf(buffer, "%d", node->objtype); + if (true) { _fingerprintString(ctx, "objtype"); - _fingerprintString(ctx, buffer); + _fingerprintString(ctx, _enumToStringObjectType(node->objtype)); } if (node->privileges != NULL && node->privileges->length > 0) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->privileges, node, "privileges", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "privileges"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "privileges"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->privileges, node, "privileges", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } - if (node->targtype != 0) { - char buffer[50]; - sprintf(buffer, "%d", node->targtype); + if (true) { _fingerprintString(ctx, "targtype"); - _fingerprintString(ctx, buffer); + _fingerprintString(ctx, _enumToStringGrantTargetType(node->targtype)); } } @@ -2791,37 +4426,63 @@ _fingerprintGrantStmt(FingerprintContext *ctx, const GrantStmt *node, const void static void _fingerprintGrantRoleStmt(FingerprintContext *ctx, const GrantRoleStmt *node, const void *parent, const char *field_name, unsigned int depth) { - _fingerprintString(ctx, "GrantRoleStmt"); - if (node->admin_opt) { _fingerprintString(ctx, "admin_opt"); _fingerprintString(ctx, "true"); } - if (node->behavior != 0) { - char buffer[50]; - sprintf(buffer, "%d", node->behavior); + if (true) { _fingerprintString(ctx, "behavior"); - _fingerprintString(ctx, buffer); + _fingerprintString(ctx, _enumToStringDropBehavior(node->behavior)); } if (node->granted_roles != NULL && node->granted_roles->length > 0) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->granted_roles, node, "granted_roles", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "granted_roles"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "granted_roles"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->granted_roles, node, "granted_roles", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } if (node->grantee_roles != NULL && node->grantee_roles->length > 0) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->grantee_roles, node, "grantee_roles", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "grantee_roles"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "grantee_roles"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->grantee_roles, node, "grantee_roles", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } if (node->grantor != NULL) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->grantor, node, "grantor", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "grantor"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "grantor"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintRoleSpec(ctx, node->grantor, node, "grantor", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } if (node->is_grant) { @@ -2834,28 +4495,44 @@ _fingerprintGrantRoleStmt(FingerprintContext *ctx, const GrantRoleStmt *node, co static void _fingerprintAlterDefaultPrivilegesStmt(FingerprintContext *ctx, const AlterDefaultPrivilegesStmt *node, const void *parent, const char *field_name, unsigned int depth) { - _fingerprintString(ctx, "AlterDefaultPrivilegesStmt"); - if (node->action != NULL) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->action, node, "action", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "action"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "action"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintGrantStmt(ctx, node->action, node, "action", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } if (node->options != NULL && node->options->length > 0) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->options, node, "options", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "options"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "options"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->options, node, "options", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } } static void _fingerprintClosePortalStmt(FingerprintContext *ctx, const ClosePortalStmt *node, const void *parent, const char *field_name, unsigned int depth) { - _fingerprintString(ctx, "ClosePortalStmt"); - // Intentionally ignoring node->portalname for fingerprinting } @@ -2863,23 +4540,33 @@ _fingerprintClosePortalStmt(FingerprintContext *ctx, const ClosePortalStmt *node static void _fingerprintClusterStmt(FingerprintContext *ctx, const ClusterStmt *node, const void *parent, const char *field_name, unsigned int depth) { - _fingerprintString(ctx, "ClusterStmt"); - if (node->indexname != NULL) { _fingerprintString(ctx, "indexname"); _fingerprintString(ctx, node->indexname); } - if (node->relation != NULL) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->relation, node, "relation", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "relation"); + if (node->options != 0) { + char buffer[50]; + sprintf(buffer, "%d", node->options); + _fingerprintString(ctx, "options"); + _fingerprintString(ctx, buffer); } - if (node->verbose) { - _fingerprintString(ctx, "verbose"); - _fingerprintString(ctx, "true"); + if (node->relation != NULL) { + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "relation"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintRangeVar(ctx, node->relation, node, "relation", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } } @@ -2887,13 +4574,21 @@ _fingerprintClusterStmt(FingerprintContext *ctx, const ClusterStmt *node, const static void _fingerprintCopyStmt(FingerprintContext *ctx, const CopyStmt *node, const void *parent, const char *field_name, unsigned int depth) { - _fingerprintString(ctx, "CopyStmt"); - if (node->attlist != NULL && node->attlist->length > 0) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->attlist, node, "attlist", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "attlist"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "attlist"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->attlist, node, "attlist", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } if (node->filename != NULL) { _fingerprintString(ctx, "filename"); @@ -2911,23 +4606,70 @@ _fingerprintCopyStmt(FingerprintContext *ctx, const CopyStmt *node, const void * } if (node->options != NULL && node->options->length > 0) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->options, node, "options", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "options"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "options"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->options, node, "options", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } if (node->query != NULL) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->query, node, "query", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "query"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "query"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->query, node, "query", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } if (node->relation != NULL) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->relation, node, "relation", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "relation"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "relation"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintRangeVar(ctx, node->relation, node, "relation", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); + } + + if (node->whereClause != NULL) { + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "whereClause"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->whereClause, node, "whereClause", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } } @@ -2935,13 +4677,26 @@ _fingerprintCopyStmt(FingerprintContext *ctx, const CopyStmt *node, const void * static void _fingerprintCreateStmt(FingerprintContext *ctx, const CreateStmt *node, const void *parent, const char *field_name, unsigned int depth) { - _fingerprintString(ctx, "CreateStmt"); + if (node->accessMethod != NULL) { + _fingerprintString(ctx, "accessMethod"); + _fingerprintString(ctx, node->accessMethod); + } if (node->constraints != NULL && node->constraints->length > 0) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->constraints, node, "constraints", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "constraints"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "constraints"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->constraints, node, "constraints", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } if (node->if_not_exists) { _fingerprintString(ctx, "if_not_exists"); @@ -2949,57 +4704,125 @@ _fingerprintCreateStmt(FingerprintContext *ctx, const CreateStmt *node, const vo } if (node->inhRelations != NULL && node->inhRelations->length > 0) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->inhRelations, node, "inhRelations", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "inhRelations"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "inhRelations"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->inhRelations, node, "inhRelations", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } if (node->ofTypename != NULL) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->ofTypename, node, "ofTypename", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "ofTypename"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "ofTypename"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintTypeName(ctx, node->ofTypename, node, "ofTypename", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } - if (node->oncommit != 0) { - char buffer[50]; - sprintf(buffer, "%d", node->oncommit); + if (true) { _fingerprintString(ctx, "oncommit"); - _fingerprintString(ctx, buffer); + _fingerprintString(ctx, _enumToStringOnCommitAction(node->oncommit)); } if (node->options != NULL && node->options->length > 0) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->options, node, "options", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "options"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "options"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->options, node, "options", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } if (node->partbound != NULL) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->partbound, node, "partbound", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "partbound"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "partbound"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintPartitionBoundSpec(ctx, node->partbound, node, "partbound", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } if (node->partspec != NULL) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->partspec, node, "partspec", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "partspec"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "partspec"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintPartitionSpec(ctx, node->partspec, node, "partspec", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } if (node->relation != NULL) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->relation, node, "relation", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "relation"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "relation"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintRangeVar(ctx, node->relation, node, "relation", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } if (node->tableElts != NULL && node->tableElts->length > 0) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->tableElts, node, "tableElts", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "tableElts"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "tableElts"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->tableElts, node, "tableElts", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } if (node->tablespacename != NULL) { _fingerprintString(ctx, "tablespacename"); @@ -3011,36 +4834,62 @@ _fingerprintCreateStmt(FingerprintContext *ctx, const CreateStmt *node, const vo static void _fingerprintDefineStmt(FingerprintContext *ctx, const DefineStmt *node, const void *parent, const char *field_name, unsigned int depth) { - _fingerprintString(ctx, "DefineStmt"); - if (node->args != NULL && node->args->length > 0) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->args, node, "args", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "args"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "args"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->args, node, "args", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } if (node->definition != NULL && node->definition->length > 0) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->definition, node, "definition", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "definition"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "definition"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->definition, node, "definition", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } if (node->defnames != NULL && node->defnames->length > 0) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->defnames, node, "defnames", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "defnames"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "defnames"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->defnames, node, "defnames", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } if (node->if_not_exists) { _fingerprintString(ctx, "if_not_exists"); _fingerprintString(ctx, "true"); } - if (node->kind != 0) { - char buffer[50]; - sprintf(buffer, "%d", node->kind); + if (true) { _fingerprintString(ctx, "kind"); - _fingerprintString(ctx, buffer); + _fingerprintString(ctx, _enumToStringObjectType(node->kind)); } if (node->oldstyle) { @@ -3048,18 +4897,19 @@ _fingerprintDefineStmt(FingerprintContext *ctx, const DefineStmt *node, const vo _fingerprintString(ctx, "true"); } + if (node->replace) { + _fingerprintString(ctx, "replace"); + _fingerprintString(ctx, "true"); + } + } static void _fingerprintDropStmt(FingerprintContext *ctx, const DropStmt *node, const void *parent, const char *field_name, unsigned int depth) { - _fingerprintString(ctx, "DropStmt"); - - if (node->behavior != 0) { - char buffer[50]; - sprintf(buffer, "%d", node->behavior); + if (true) { _fingerprintString(ctx, "behavior"); - _fingerprintString(ctx, buffer); + _fingerprintString(ctx, _enumToStringDropBehavior(node->behavior)); } if (node->concurrent) { @@ -3073,16 +4923,24 @@ _fingerprintDropStmt(FingerprintContext *ctx, const DropStmt *node, const void * } if (node->objects != NULL && node->objects->length > 0) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->objects, node, "objects", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "objects"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "objects"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->objects, node, "objects", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } - if (node->removeType != 0) { - char buffer[50]; - sprintf(buffer, "%d", node->removeType); + if (true) { _fingerprintString(ctx, "removeType"); - _fingerprintString(ctx, buffer); + _fingerprintString(ctx, _enumToStringObjectType(node->removeType)); } } @@ -3090,20 +4948,26 @@ _fingerprintDropStmt(FingerprintContext *ctx, const DropStmt *node, const void * static void _fingerprintTruncateStmt(FingerprintContext *ctx, const TruncateStmt *node, const void *parent, const char *field_name, unsigned int depth) { - _fingerprintString(ctx, "TruncateStmt"); - - if (node->behavior != 0) { - char buffer[50]; - sprintf(buffer, "%d", node->behavior); + if (true) { _fingerprintString(ctx, "behavior"); - _fingerprintString(ctx, buffer); + _fingerprintString(ctx, _enumToStringDropBehavior(node->behavior)); } if (node->relations != NULL && node->relations->length > 0) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->relations, node, "relations", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "relations"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "relations"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->relations, node, "relations", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } if (node->restart_seqs) { _fingerprintString(ctx, "restart_seqs"); @@ -3115,25 +4979,31 @@ _fingerprintTruncateStmt(FingerprintContext *ctx, const TruncateStmt *node, cons static void _fingerprintCommentStmt(FingerprintContext *ctx, const CommentStmt *node, const void *parent, const char *field_name, unsigned int depth) { - _fingerprintString(ctx, "CommentStmt"); - if (node->comment != NULL) { _fingerprintString(ctx, "comment"); _fingerprintString(ctx, node->comment); } if (node->object != NULL) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->object, node, "object", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "object"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "object"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->object, node, "object", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } - if (node->objtype != 0) { - char buffer[50]; - sprintf(buffer, "%d", node->objtype); + if (true) { _fingerprintString(ctx, "objtype"); - _fingerprintString(ctx, buffer); + _fingerprintString(ctx, _enumToStringObjectType(node->objtype)); } } @@ -3141,13 +5011,9 @@ _fingerprintCommentStmt(FingerprintContext *ctx, const CommentStmt *node, const static void _fingerprintFetchStmt(FingerprintContext *ctx, const FetchStmt *node, const void *parent, const char *field_name, unsigned int depth) { - _fingerprintString(ctx, "FetchStmt"); - - if (node->direction != 0) { - char buffer[50]; - sprintf(buffer, "%d", node->direction); + if (true) { _fingerprintString(ctx, "direction"); - _fingerprintString(ctx, buffer); + _fingerprintString(ctx, _enumToStringFetchDirection(node->direction)); } if (node->howMany != 0) { @@ -3169,8 +5035,6 @@ _fingerprintFetchStmt(FingerprintContext *ctx, const FetchStmt *node, const void static void _fingerprintIndexStmt(FingerprintContext *ctx, const IndexStmt *node, const void *parent, const char *field_name, unsigned int depth) { - _fingerprintString(ctx, "IndexStmt"); - if (node->accessMethod != NULL) { _fingerprintString(ctx, "accessMethod"); _fingerprintString(ctx, node->accessMethod); @@ -3187,10 +5051,20 @@ _fingerprintIndexStmt(FingerprintContext *ctx, const IndexStmt *node, const void } if (node->excludeOpNames != NULL && node->excludeOpNames->length > 0) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->excludeOpNames, node, "excludeOpNames", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "excludeOpNames"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "excludeOpNames"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->excludeOpNames, node, "excludeOpNames", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } if (node->idxcomment != NULL) { _fingerprintString(ctx, "idxcomment"); @@ -3207,6 +5081,22 @@ _fingerprintIndexStmt(FingerprintContext *ctx, const IndexStmt *node, const void _fingerprintString(ctx, "true"); } + if (node->indexIncludingParams != NULL && node->indexIncludingParams->length > 0) { + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "indexIncludingParams"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->indexIncludingParams, node, "indexIncludingParams", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); + } if (node->indexOid != 0) { char buffer[50]; sprintf(buffer, "%d", node->indexOid); @@ -3215,10 +5105,20 @@ _fingerprintIndexStmt(FingerprintContext *ctx, const IndexStmt *node, const void } if (node->indexParams != NULL && node->indexParams->length > 0) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->indexParams, node, "indexParams", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "indexParams"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "indexParams"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->indexParams, node, "indexParams", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } if (node->initdeferred) { _fingerprintString(ctx, "initdeferred"); @@ -3230,6 +5130,20 @@ _fingerprintIndexStmt(FingerprintContext *ctx, const IndexStmt *node, const void _fingerprintString(ctx, "true"); } + if (node->oldCreateSubid != 0) { + char buffer[50]; + sprintf(buffer, "%d", node->oldCreateSubid); + _fingerprintString(ctx, "oldCreateSubid"); + _fingerprintString(ctx, buffer); + } + + if (node->oldFirstRelfilenodeSubid != 0) { + char buffer[50]; + sprintf(buffer, "%d", node->oldFirstRelfilenodeSubid); + _fingerprintString(ctx, "oldFirstRelfilenodeSubid"); + _fingerprintString(ctx, buffer); + } + if (node->oldNode != 0) { char buffer[50]; sprintf(buffer, "%d", node->oldNode); @@ -3238,10 +5152,20 @@ _fingerprintIndexStmt(FingerprintContext *ctx, const IndexStmt *node, const void } if (node->options != NULL && node->options->length > 0) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->options, node, "options", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "options"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "options"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->options, node, "options", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } if (node->primary) { _fingerprintString(ctx, "primary"); @@ -3249,10 +5173,25 @@ _fingerprintIndexStmt(FingerprintContext *ctx, const IndexStmt *node, const void } if (node->relation != NULL) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->relation, node, "relation", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "relation"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "relation"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintRangeVar(ctx, node->relation, node, "relation", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); + } + + if (node->reset_default_tblspc) { + _fingerprintString(ctx, "reset_default_tblspc"); + _fingerprintString(ctx, "true"); } if (node->tableSpace != NULL) { @@ -3271,10 +5210,20 @@ _fingerprintIndexStmt(FingerprintContext *ctx, const IndexStmt *node, const void } if (node->whereClause != NULL) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->whereClause, node, "whereClause", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "whereClause"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "whereClause"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->whereClause, node, "whereClause", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } } @@ -3282,25 +5231,58 @@ _fingerprintIndexStmt(FingerprintContext *ctx, const IndexStmt *node, const void static void _fingerprintCreateFunctionStmt(FingerprintContext *ctx, const CreateFunctionStmt *node, const void *parent, const char *field_name, unsigned int depth) { - _fingerprintString(ctx, "CreateFunctionStmt"); - if (node->funcname != NULL && node->funcname->length > 0) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->funcname, node, "funcname", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "funcname"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "funcname"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->funcname, node, "funcname", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } + if (node->is_procedure) { + _fingerprintString(ctx, "is_procedure"); + _fingerprintString(ctx, "true"); + } + if (node->options != NULL && node->options->length > 0) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->options, node, "options", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "options"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "options"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->options, node, "options", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } if (node->parameters != NULL && node->parameters->length > 0) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->parameters, node, "parameters", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "parameters"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "parameters"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->parameters, node, "parameters", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } if (node->replace) { _fingerprintString(ctx, "replace"); @@ -3308,36 +5290,63 @@ _fingerprintCreateFunctionStmt(FingerprintContext *ctx, const CreateFunctionStmt } if (node->returnType != NULL) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->returnType, node, "returnType", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "returnType"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "returnType"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintTypeName(ctx, node->returnType, node, "returnType", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } - if (node->withClause != NULL && node->withClause->length > 0) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->withClause, node, "withClause", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "withClause"); - } } static void _fingerprintAlterFunctionStmt(FingerprintContext *ctx, const AlterFunctionStmt *node, const void *parent, const char *field_name, unsigned int depth) { - _fingerprintString(ctx, "AlterFunctionStmt"); - if (node->actions != NULL && node->actions->length > 0) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->actions, node, "actions", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "actions"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "actions"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->actions, node, "actions", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } if (node->func != NULL) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->func, node, "func", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "func"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "func"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintObjectWithArgs(ctx, node->func, node, "func", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); + } + + if (true) { + _fingerprintString(ctx, "objtype"); + _fingerprintString(ctx, _enumToStringObjectType(node->objtype)); } } @@ -3345,26 +5354,30 @@ _fingerprintAlterFunctionStmt(FingerprintContext *ctx, const AlterFunctionStmt * static void _fingerprintDoStmt(FingerprintContext *ctx, const DoStmt *node, const void *parent, const char *field_name, unsigned int depth) { - _fingerprintString(ctx, "DoStmt"); - if (node->args != NULL && node->args->length > 0) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->args, node, "args", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "args"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "args"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->args, node, "args", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } } static void _fingerprintRenameStmt(FingerprintContext *ctx, const RenameStmt *node, const void *parent, const char *field_name, unsigned int depth) { - _fingerprintString(ctx, "RenameStmt"); - - if (node->behavior != 0) { - char buffer[50]; - sprintf(buffer, "%d", node->behavior); + if (true) { _fingerprintString(ctx, "behavior"); - _fingerprintString(ctx, buffer); + _fingerprintString(ctx, _enumToStringDropBehavior(node->behavior)); } if (node->missing_ok) { @@ -3378,31 +5391,47 @@ _fingerprintRenameStmt(FingerprintContext *ctx, const RenameStmt *node, const vo } if (node->object != NULL) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->object, node, "object", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "object"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "object"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->object, node, "object", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } if (node->relation != NULL) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->relation, node, "relation", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "relation"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "relation"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintRangeVar(ctx, node->relation, node, "relation", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } - if (node->relationType != 0) { - char buffer[50]; - sprintf(buffer, "%d", node->relationType); + if (true) { _fingerprintString(ctx, "relationType"); - _fingerprintString(ctx, buffer); + _fingerprintString(ctx, _enumToStringObjectType(node->relationType)); } - if (node->renameType != 0) { - char buffer[50]; - sprintf(buffer, "%d", node->renameType); + if (true) { _fingerprintString(ctx, "renameType"); - _fingerprintString(ctx, buffer); + _fingerprintString(ctx, _enumToStringObjectType(node->renameType)); } if (node->subname != NULL) { @@ -3415,19 +5444,25 @@ _fingerprintRenameStmt(FingerprintContext *ctx, const RenameStmt *node, const vo static void _fingerprintRuleStmt(FingerprintContext *ctx, const RuleStmt *node, const void *parent, const char *field_name, unsigned int depth) { - _fingerprintString(ctx, "RuleStmt"); - if (node->actions != NULL && node->actions->length > 0) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->actions, node, "actions", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "actions"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "actions"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->actions, node, "actions", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } - if (node->event != 0) { - char buffer[50]; - sprintf(buffer, "%d", node->event); + if (true) { _fingerprintString(ctx, "event"); - _fingerprintString(ctx, buffer); + _fingerprintString(ctx, _enumToStringCmdType(node->event)); } if (node->instead) { @@ -3436,10 +5471,20 @@ _fingerprintRuleStmt(FingerprintContext *ctx, const RuleStmt *node, const void * } if (node->relation != NULL) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->relation, node, "relation", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "relation"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "relation"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintRangeVar(ctx, node->relation, node, "relation", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } if (node->replace) { @@ -3453,10 +5498,20 @@ _fingerprintRuleStmt(FingerprintContext *ctx, const RuleStmt *node, const void * } if (node->whereClause != NULL) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->whereClause, node, "whereClause", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "whereClause"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "whereClause"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->whereClause, node, "whereClause", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } } @@ -3464,8 +5519,6 @@ _fingerprintRuleStmt(FingerprintContext *ctx, const RuleStmt *node, const void * static void _fingerprintNotifyStmt(FingerprintContext *ctx, const NotifyStmt *node, const void *parent, const char *field_name, unsigned int depth) { - _fingerprintString(ctx, "NotifyStmt"); - if (node->conditionname != NULL) { _fingerprintString(ctx, "conditionname"); _fingerprintString(ctx, node->conditionname); @@ -3481,8 +5534,6 @@ _fingerprintNotifyStmt(FingerprintContext *ctx, const NotifyStmt *node, const vo static void _fingerprintListenStmt(FingerprintContext *ctx, const ListenStmt *node, const void *parent, const char *field_name, unsigned int depth) { - _fingerprintString(ctx, "ListenStmt"); - if (node->conditionname != NULL) { _fingerprintString(ctx, "conditionname"); _fingerprintString(ctx, node->conditionname); @@ -3493,8 +5544,6 @@ _fingerprintListenStmt(FingerprintContext *ctx, const ListenStmt *node, const vo static void _fingerprintUnlistenStmt(FingerprintContext *ctx, const UnlistenStmt *node, const void *parent, const char *field_name, unsigned int depth) { - _fingerprintString(ctx, "UnlistenStmt"); - if (node->conditionname != NULL) { _fingerprintString(ctx, "conditionname"); _fingerprintString(ctx, node->conditionname); @@ -3505,43 +5554,74 @@ _fingerprintUnlistenStmt(FingerprintContext *ctx, const UnlistenStmt *node, cons static void _fingerprintTransactionStmt(FingerprintContext *ctx, const TransactionStmt *node, const void *parent, const char *field_name, unsigned int depth) { - _fingerprintString(ctx, "TransactionStmt"); + if (node->chain) { + _fingerprintString(ctx, "chain"); + _fingerprintString(ctx, "true"); + } // Intentionally ignoring node->gid for fingerprinting - if (node->kind != 0) { - char buffer[50]; - sprintf(buffer, "%d", node->kind); + if (true) { _fingerprintString(ctx, "kind"); - _fingerprintString(ctx, buffer); + _fingerprintString(ctx, _enumToStringTransactionStmtKind(node->kind)); } // Intentionally ignoring node->options for fingerprinting + // Intentionally ignoring node->savepoint_name for fingerprinting + } static void _fingerprintViewStmt(FingerprintContext *ctx, const ViewStmt *node, const void *parent, const char *field_name, unsigned int depth) { - _fingerprintString(ctx, "ViewStmt"); - if (node->aliases != NULL && node->aliases->length > 0) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->aliases, node, "aliases", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "aliases"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "aliases"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->aliases, node, "aliases", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } if (node->options != NULL && node->options->length > 0) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->options, node, "options", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "options"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "options"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->options, node, "options", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } if (node->query != NULL) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->query, node, "query", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "query"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "query"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->query, node, "query", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } if (node->replace) { @@ -3550,17 +5630,25 @@ _fingerprintViewStmt(FingerprintContext *ctx, const ViewStmt *node, const void * } if (node->view != NULL) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->view, node, "view", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "view"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "view"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintRangeVar(ctx, node->view, node, "view", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } - if (node->withCheckOption != 0) { - char buffer[50]; - sprintf(buffer, "%d", node->withCheckOption); + if (true) { _fingerprintString(ctx, "withCheckOption"); - _fingerprintString(ctx, buffer); + _fingerprintString(ctx, _enumToStringViewCheckOption(node->withCheckOption)); } } @@ -3568,8 +5656,6 @@ _fingerprintViewStmt(FingerprintContext *ctx, const ViewStmt *node, const void * static void _fingerprintLoadStmt(FingerprintContext *ctx, const LoadStmt *node, const void *parent, const char *field_name, unsigned int depth) { - _fingerprintString(ctx, "LoadStmt"); - if (node->filename != NULL) { _fingerprintString(ctx, "filename"); _fingerprintString(ctx, node->filename); @@ -3580,32 +5666,70 @@ _fingerprintLoadStmt(FingerprintContext *ctx, const LoadStmt *node, const void * static void _fingerprintCreateDomainStmt(FingerprintContext *ctx, const CreateDomainStmt *node, const void *parent, const char *field_name, unsigned int depth) { - _fingerprintString(ctx, "CreateDomainStmt"); - if (node->collClause != NULL) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->collClause, node, "collClause", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "collClause"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "collClause"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintCollateClause(ctx, node->collClause, node, "collClause", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } if (node->constraints != NULL && node->constraints->length > 0) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->constraints, node, "constraints", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "constraints"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "constraints"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->constraints, node, "constraints", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } if (node->domainname != NULL && node->domainname->length > 0) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->domainname, node, "domainname", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "domainname"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "domainname"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->domainname, node, "domainname", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } if (node->typeName != NULL) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->typeName, node, "typeName", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "typeName"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "typeName"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintTypeName(ctx, node->typeName, node, "typeName", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } } @@ -3613,26 +5737,32 @@ _fingerprintCreateDomainStmt(FingerprintContext *ctx, const CreateDomainStmt *no static void _fingerprintCreatedbStmt(FingerprintContext *ctx, const CreatedbStmt *node, const void *parent, const char *field_name, unsigned int depth) { - _fingerprintString(ctx, "CreatedbStmt"); - if (node->dbname != NULL) { _fingerprintString(ctx, "dbname"); _fingerprintString(ctx, node->dbname); } if (node->options != NULL && node->options->length > 0) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->options, node, "options", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "options"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "options"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->options, node, "options", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } } static void _fingerprintDropdbStmt(FingerprintContext *ctx, const DropdbStmt *node, const void *parent, const char *field_name, unsigned int depth) { - _fingerprintString(ctx, "DropdbStmt"); - if (node->dbname != NULL) { _fingerprintString(ctx, "dbname"); _fingerprintString(ctx, node->dbname); @@ -3643,51 +5773,100 @@ _fingerprintDropdbStmt(FingerprintContext *ctx, const DropdbStmt *node, const vo _fingerprintString(ctx, "true"); } + if (node->options != NULL && node->options->length > 0) { + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "options"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->options, node, "options", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); + } } static void _fingerprintVacuumStmt(FingerprintContext *ctx, const VacuumStmt *node, const void *parent, const char *field_name, unsigned int depth) { - _fingerprintString(ctx, "VacuumStmt"); + if (node->is_vacuumcmd) { + _fingerprintString(ctx, "is_vacuumcmd"); + _fingerprintString(ctx, "true"); + } - if (node->options != 0) { - char buffer[50]; - sprintf(buffer, "%d", node->options); + if (node->options != NULL && node->options->length > 0) { + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "options"); - _fingerprintString(ctx, buffer); - } - if (node->relation != NULL) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->relation, node, "relation", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "relation"); + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->options, node, "options", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } + if (node->rels != NULL && node->rels->length > 0) { + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; - if (node->va_cols != NULL && node->va_cols->length > 0) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->va_cols, node, "va_cols", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "va_cols"); + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "rels"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->rels, node, "rels", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } } static void _fingerprintExplainStmt(FingerprintContext *ctx, const ExplainStmt *node, const void *parent, const char *field_name, unsigned int depth) { - _fingerprintString(ctx, "ExplainStmt"); - if (node->options != NULL && node->options->length > 0) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->options, node, "options", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "options"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "options"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->options, node, "options", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } if (node->query != NULL) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->query, node, "query", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "query"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "query"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->query, node, "query", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } } @@ -3695,18 +5874,26 @@ _fingerprintExplainStmt(FingerprintContext *ctx, const ExplainStmt *node, const static void _fingerprintCreateTableAsStmt(FingerprintContext *ctx, const CreateTableAsStmt *node, const void *parent, const char *field_name, unsigned int depth) { - _fingerprintString(ctx, "CreateTableAsStmt"); - if (node->if_not_exists) { _fingerprintString(ctx, "if_not_exists"); _fingerprintString(ctx, "true"); } if (node->into != NULL) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->into, node, "into", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "into"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "into"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintIntoClause(ctx, node->into, node, "into", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } if (node->is_select_into) { @@ -3715,17 +5902,25 @@ _fingerprintCreateTableAsStmt(FingerprintContext *ctx, const CreateTableAsStmt * } if (node->query != NULL) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->query, node, "query", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "query"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "query"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->query, node, "query", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } - if (node->relkind != 0) { - char buffer[50]; - sprintf(buffer, "%d", node->relkind); + if (true) { _fingerprintString(ctx, "relkind"); - _fingerprintString(ctx, buffer); + _fingerprintString(ctx, _enumToStringObjectType(node->relkind)); } } @@ -3733,8 +5928,6 @@ _fingerprintCreateTableAsStmt(FingerprintContext *ctx, const CreateTableAsStmt * static void _fingerprintCreateSeqStmt(FingerprintContext *ctx, const CreateSeqStmt *node, const void *parent, const char *field_name, unsigned int depth) { - _fingerprintString(ctx, "CreateSeqStmt"); - if (node->for_identity) { _fingerprintString(ctx, "for_identity"); _fingerprintString(ctx, "true"); @@ -3746,10 +5939,20 @@ _fingerprintCreateSeqStmt(FingerprintContext *ctx, const CreateSeqStmt *node, co } if (node->options != NULL && node->options->length > 0) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->options, node, "options", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "options"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "options"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->options, node, "options", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } if (node->ownerId != 0) { char buffer[50]; @@ -3759,10 +5962,20 @@ _fingerprintCreateSeqStmt(FingerprintContext *ctx, const CreateSeqStmt *node, co } if (node->sequence != NULL) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->sequence, node, "sequence", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "sequence"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "sequence"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintRangeVar(ctx, node->sequence, node, "sequence", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } } @@ -3770,8 +5983,6 @@ _fingerprintCreateSeqStmt(FingerprintContext *ctx, const CreateSeqStmt *node, co static void _fingerprintAlterSeqStmt(FingerprintContext *ctx, const AlterSeqStmt *node, const void *parent, const char *field_name, unsigned int depth) { - _fingerprintString(ctx, "AlterSeqStmt"); - if (node->for_identity) { _fingerprintString(ctx, "for_identity"); _fingerprintString(ctx, "true"); @@ -3783,16 +5994,36 @@ _fingerprintAlterSeqStmt(FingerprintContext *ctx, const AlterSeqStmt *node, cons } if (node->options != NULL && node->options->length > 0) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->options, node, "options", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "options"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "options"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->options, node, "options", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } if (node->sequence != NULL) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->sequence, node, "sequence", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "sequence"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "sequence"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintRangeVar(ctx, node->sequence, node, "sequence", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } } @@ -3800,24 +6031,30 @@ _fingerprintAlterSeqStmt(FingerprintContext *ctx, const AlterSeqStmt *node, cons static void _fingerprintVariableSetStmt(FingerprintContext *ctx, const VariableSetStmt *node, const void *parent, const char *field_name, unsigned int depth) { - _fingerprintString(ctx, "VariableSetStmt"); - if (node->args != NULL && node->args->length > 0) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->args, node, "args", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "args"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "args"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->args, node, "args", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } if (node->is_local) { _fingerprintString(ctx, "is_local"); _fingerprintString(ctx, "true"); } - if (node->kind != 0) { - char buffer[50]; - sprintf(buffer, "%d", node->kind); + if (true) { _fingerprintString(ctx, "kind"); - _fingerprintString(ctx, buffer); + _fingerprintString(ctx, _enumToStringVariableSetKind(node->kind)); } if (node->name != NULL) { @@ -3830,8 +6067,6 @@ _fingerprintVariableSetStmt(FingerprintContext *ctx, const VariableSetStmt *node static void _fingerprintVariableShowStmt(FingerprintContext *ctx, const VariableShowStmt *node, const void *parent, const char *field_name, unsigned int depth) { - _fingerprintString(ctx, "VariableShowStmt"); - if (node->name != NULL) { _fingerprintString(ctx, "name"); _fingerprintString(ctx, node->name); @@ -3842,13 +6077,9 @@ _fingerprintVariableShowStmt(FingerprintContext *ctx, const VariableShowStmt *no static void _fingerprintDiscardStmt(FingerprintContext *ctx, const DiscardStmt *node, const void *parent, const char *field_name, unsigned int depth) { - _fingerprintString(ctx, "DiscardStmt"); - - if (node->target != 0) { - char buffer[50]; - sprintf(buffer, "%d", node->target); + if (true) { _fingerprintString(ctx, "target"); - _fingerprintString(ctx, buffer); + _fingerprintString(ctx, _enumToStringDiscardMode(node->target)); } } @@ -3856,25 +6087,53 @@ _fingerprintDiscardStmt(FingerprintContext *ctx, const DiscardStmt *node, const static void _fingerprintCreateTrigStmt(FingerprintContext *ctx, const CreateTrigStmt *node, const void *parent, const char *field_name, unsigned int depth) { - _fingerprintString(ctx, "CreateTrigStmt"); - if (node->args != NULL && node->args->length > 0) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->args, node, "args", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "args"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "args"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->args, node, "args", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } if (node->columns != NULL && node->columns->length > 0) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->columns, node, "columns", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "columns"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "columns"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->columns, node, "columns", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } if (node->constrrel != NULL) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->constrrel, node, "constrrel", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "constrrel"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "constrrel"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintRangeVar(ctx, node->constrrel, node, "constrrel", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } if (node->deferrable) { @@ -3890,10 +6149,20 @@ _fingerprintCreateTrigStmt(FingerprintContext *ctx, const CreateTrigStmt *node, } if (node->funcname != NULL && node->funcname->length > 0) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->funcname, node, "funcname", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "funcname"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "funcname"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->funcname, node, "funcname", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } if (node->initdeferred) { _fingerprintString(ctx, "initdeferred"); @@ -3906,10 +6175,20 @@ _fingerprintCreateTrigStmt(FingerprintContext *ctx, const CreateTrigStmt *node, } if (node->relation != NULL) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->relation, node, "relation", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "relation"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "relation"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintRangeVar(ctx, node->relation, node, "relation", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } if (node->row) { @@ -3925,10 +6204,20 @@ _fingerprintCreateTrigStmt(FingerprintContext *ctx, const CreateTrigStmt *node, } if (node->transitionRels != NULL && node->transitionRels->length > 0) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->transitionRels, node, "transitionRels", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "transitionRels"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "transitionRels"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->transitionRels, node, "transitionRels", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } if (node->trigname != NULL) { _fingerprintString(ctx, "trigname"); @@ -3936,10 +6225,20 @@ _fingerprintCreateTrigStmt(FingerprintContext *ctx, const CreateTrigStmt *node, } if (node->whenClause != NULL) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->whenClause, node, "whenClause", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "whenClause"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "whenClause"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->whenClause, node, "whenClause", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } } @@ -3947,19 +6246,37 @@ _fingerprintCreateTrigStmt(FingerprintContext *ctx, const CreateTrigStmt *node, static void _fingerprintCreatePLangStmt(FingerprintContext *ctx, const CreatePLangStmt *node, const void *parent, const char *field_name, unsigned int depth) { - _fingerprintString(ctx, "CreatePLangStmt"); - if (node->plhandler != NULL && node->plhandler->length > 0) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->plhandler, node, "plhandler", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "plhandler"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "plhandler"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->plhandler, node, "plhandler", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } if (node->plinline != NULL && node->plinline->length > 0) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->plinline, node, "plinline", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "plinline"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "plinline"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->plinline, node, "plinline", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } if (node->plname != NULL) { _fingerprintString(ctx, "plname"); @@ -3972,10 +6289,20 @@ _fingerprintCreatePLangStmt(FingerprintContext *ctx, const CreatePLangStmt *node } if (node->plvalidator != NULL && node->plvalidator->length > 0) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->plvalidator, node, "plvalidator", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "plvalidator"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "plvalidator"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->plvalidator, node, "plvalidator", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } if (node->replace) { _fingerprintString(ctx, "replace"); @@ -3987,24 +6314,30 @@ _fingerprintCreatePLangStmt(FingerprintContext *ctx, const CreatePLangStmt *node static void _fingerprintCreateRoleStmt(FingerprintContext *ctx, const CreateRoleStmt *node, const void *parent, const char *field_name, unsigned int depth) { - _fingerprintString(ctx, "CreateRoleStmt"); - if (node->options != NULL && node->options->length > 0) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->options, node, "options", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "options"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "options"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->options, node, "options", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } if (node->role != NULL) { _fingerprintString(ctx, "role"); _fingerprintString(ctx, node->role); } - if (node->stmt_type != 0) { - char buffer[50]; - sprintf(buffer, "%d", node->stmt_type); + if (true) { _fingerprintString(ctx, "stmt_type"); - _fingerprintString(ctx, buffer); + _fingerprintString(ctx, _enumToStringRoleStmtType(node->stmt_type)); } } @@ -4012,8 +6345,6 @@ _fingerprintCreateRoleStmt(FingerprintContext *ctx, const CreateRoleStmt *node, static void _fingerprintAlterRoleStmt(FingerprintContext *ctx, const AlterRoleStmt *node, const void *parent, const char *field_name, unsigned int depth) { - _fingerprintString(ctx, "AlterRoleStmt"); - if (node->action != 0) { char buffer[50]; sprintf(buffer, "%d", node->action); @@ -4022,16 +6353,36 @@ _fingerprintAlterRoleStmt(FingerprintContext *ctx, const AlterRoleStmt *node, co } if (node->options != NULL && node->options->length > 0) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->options, node, "options", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "options"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "options"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->options, node, "options", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } if (node->role != NULL) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->role, node, "role", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "role"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "role"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintRoleSpec(ctx, node->role, node, "role", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } } @@ -4039,26 +6390,32 @@ _fingerprintAlterRoleStmt(FingerprintContext *ctx, const AlterRoleStmt *node, co static void _fingerprintDropRoleStmt(FingerprintContext *ctx, const DropRoleStmt *node, const void *parent, const char *field_name, unsigned int depth) { - _fingerprintString(ctx, "DropRoleStmt"); - if (node->missing_ok) { _fingerprintString(ctx, "missing_ok"); _fingerprintString(ctx, "true"); } if (node->roles != NULL && node->roles->length > 0) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->roles, node, "roles", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "roles"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "roles"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->roles, node, "roles", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } } static void _fingerprintLockStmt(FingerprintContext *ctx, const LockStmt *node, const void *parent, const char *field_name, unsigned int depth) { - _fingerprintString(ctx, "LockStmt"); - if (node->mode != 0) { char buffer[50]; sprintf(buffer, "%d", node->mode); @@ -4072,23 +6429,41 @@ _fingerprintLockStmt(FingerprintContext *ctx, const LockStmt *node, const void * } if (node->relations != NULL && node->relations->length > 0) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->relations, node, "relations", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "relations"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "relations"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->relations, node, "relations", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } } static void _fingerprintConstraintsSetStmt(FingerprintContext *ctx, const ConstraintsSetStmt *node, const void *parent, const char *field_name, unsigned int depth) { - _fingerprintString(ctx, "ConstraintsSetStmt"); - if (node->constraints != NULL && node->constraints->length > 0) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->constraints, node, "constraints", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "constraints"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "constraints"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->constraints, node, "constraints", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } if (node->deferred) { _fingerprintString(ctx, "deferred"); @@ -4100,13 +6475,14 @@ _fingerprintConstraintsSetStmt(FingerprintContext *ctx, const ConstraintsSetStmt static void _fingerprintReindexStmt(FingerprintContext *ctx, const ReindexStmt *node, const void *parent, const char *field_name, unsigned int depth) { - _fingerprintString(ctx, "ReindexStmt"); + if (node->concurrent) { + _fingerprintString(ctx, "concurrent"); + _fingerprintString(ctx, "true"); + } - if (node->kind != 0) { - char buffer[50]; - sprintf(buffer, "%d", node->kind); + if (true) { _fingerprintString(ctx, "kind"); - _fingerprintString(ctx, buffer); + _fingerprintString(ctx, _enumToStringReindexObjectType(node->kind)); } if (node->name != NULL) { @@ -4122,10 +6498,20 @@ _fingerprintReindexStmt(FingerprintContext *ctx, const ReindexStmt *node, const } if (node->relation != NULL) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->relation, node, "relation", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "relation"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "relation"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintRangeVar(ctx, node->relation, node, "relation", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } } @@ -4133,20 +6519,26 @@ _fingerprintReindexStmt(FingerprintContext *ctx, const ReindexStmt *node, const static void _fingerprintCheckPointStmt(FingerprintContext *ctx, const CheckPointStmt *node, const void *parent, const char *field_name, unsigned int depth) { - _fingerprintString(ctx, "CheckPointStmt"); - } static void _fingerprintCreateSchemaStmt(FingerprintContext *ctx, const CreateSchemaStmt *node, const void *parent, const char *field_name, unsigned int depth) { - _fingerprintString(ctx, "CreateSchemaStmt"); - if (node->authrole != NULL) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->authrole, node, "authrole", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "authrole"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "authrole"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintRoleSpec(ctx, node->authrole, node, "authrole", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } if (node->if_not_exists) { @@ -4155,10 +6547,20 @@ _fingerprintCreateSchemaStmt(FingerprintContext *ctx, const CreateSchemaStmt *no } if (node->schemaElts != NULL && node->schemaElts->length > 0) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->schemaElts, node, "schemaElts", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "schemaElts"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "schemaElts"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->schemaElts, node, "schemaElts", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } if (node->schemaname != NULL) { _fingerprintString(ctx, "schemaname"); @@ -4170,36 +6572,52 @@ _fingerprintCreateSchemaStmt(FingerprintContext *ctx, const CreateSchemaStmt *no static void _fingerprintAlterDatabaseStmt(FingerprintContext *ctx, const AlterDatabaseStmt *node, const void *parent, const char *field_name, unsigned int depth) { - _fingerprintString(ctx, "AlterDatabaseStmt"); - if (node->dbname != NULL) { _fingerprintString(ctx, "dbname"); _fingerprintString(ctx, node->dbname); } if (node->options != NULL && node->options->length > 0) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->options, node, "options", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "options"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "options"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->options, node, "options", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } } static void _fingerprintAlterDatabaseSetStmt(FingerprintContext *ctx, const AlterDatabaseSetStmt *node, const void *parent, const char *field_name, unsigned int depth) { - _fingerprintString(ctx, "AlterDatabaseSetStmt"); - if (node->dbname != NULL) { _fingerprintString(ctx, "dbname"); _fingerprintString(ctx, node->dbname); } if (node->setstmt != NULL) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->setstmt, node, "setstmt", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "setstmt"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "setstmt"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintVariableSetStmt(ctx, node->setstmt, node, "setstmt", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } } @@ -4207,25 +6625,43 @@ _fingerprintAlterDatabaseSetStmt(FingerprintContext *ctx, const AlterDatabaseSet static void _fingerprintAlterRoleSetStmt(FingerprintContext *ctx, const AlterRoleSetStmt *node, const void *parent, const char *field_name, unsigned int depth) { - _fingerprintString(ctx, "AlterRoleSetStmt"); - if (node->database != NULL) { _fingerprintString(ctx, "database"); _fingerprintString(ctx, node->database); } if (node->role != NULL) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->role, node, "role", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "role"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "role"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintRoleSpec(ctx, node->role, node, "role", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } if (node->setstmt != NULL) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->setstmt, node, "setstmt", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "setstmt"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "setstmt"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintVariableSetStmt(ctx, node->setstmt, node, "setstmt", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } } @@ -4233,13 +6669,21 @@ _fingerprintAlterRoleSetStmt(FingerprintContext *ctx, const AlterRoleSetStmt *no static void _fingerprintCreateConversionStmt(FingerprintContext *ctx, const CreateConversionStmt *node, const void *parent, const char *field_name, unsigned int depth) { - _fingerprintString(ctx, "CreateConversionStmt"); - if (node->conversion_name != NULL && node->conversion_name->length > 0) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->conversion_name, node, "conversion_name", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "conversion_name"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "conversion_name"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->conversion_name, node, "conversion_name", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } if (node->def) { _fingerprintString(ctx, "def"); @@ -4252,10 +6696,20 @@ _fingerprintCreateConversionStmt(FingerprintContext *ctx, const CreateConversion } if (node->func_name != NULL && node->func_name->length > 0) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->func_name, node, "func_name", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "func_name"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "func_name"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->func_name, node, "func_name", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } if (node->to_encoding_name != NULL) { _fingerprintString(ctx, "to_encoding_name"); @@ -4267,20 +6721,26 @@ _fingerprintCreateConversionStmt(FingerprintContext *ctx, const CreateConversion static void _fingerprintCreateCastStmt(FingerprintContext *ctx, const CreateCastStmt *node, const void *parent, const char *field_name, unsigned int depth) { - _fingerprintString(ctx, "CreateCastStmt"); - - if (node->context != 0) { - char buffer[50]; - sprintf(buffer, "%d", node->context); + if (true) { _fingerprintString(ctx, "context"); - _fingerprintString(ctx, buffer); + _fingerprintString(ctx, _enumToStringCoercionContext(node->context)); } if (node->func != NULL) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->func, node, "func", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "func"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "func"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintObjectWithArgs(ctx, node->func, node, "func", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } if (node->inout) { @@ -4289,17 +6749,37 @@ _fingerprintCreateCastStmt(FingerprintContext *ctx, const CreateCastStmt *node, } if (node->sourcetype != NULL) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->sourcetype, node, "sourcetype", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "sourcetype"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "sourcetype"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintTypeName(ctx, node->sourcetype, node, "sourcetype", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } if (node->targettype != NULL) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->targettype, node, "targettype", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "targettype"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "targettype"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintTypeName(ctx, node->targettype, node, "targettype", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } } @@ -4307,18 +6787,26 @@ _fingerprintCreateCastStmt(FingerprintContext *ctx, const CreateCastStmt *node, static void _fingerprintCreateOpClassStmt(FingerprintContext *ctx, const CreateOpClassStmt *node, const void *parent, const char *field_name, unsigned int depth) { - _fingerprintString(ctx, "CreateOpClassStmt"); - if (node->amname != NULL) { _fingerprintString(ctx, "amname"); _fingerprintString(ctx, node->amname); } if (node->datatype != NULL) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->datatype, node, "datatype", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "datatype"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "datatype"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintTypeName(ctx, node->datatype, node, "datatype", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } if (node->isDefault) { @@ -4327,48 +6815,84 @@ _fingerprintCreateOpClassStmt(FingerprintContext *ctx, const CreateOpClassStmt * } if (node->items != NULL && node->items->length > 0) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->items, node, "items", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "items"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "items"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->items, node, "items", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } if (node->opclassname != NULL && node->opclassname->length > 0) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->opclassname, node, "opclassname", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "opclassname"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "opclassname"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->opclassname, node, "opclassname", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } if (node->opfamilyname != NULL && node->opfamilyname->length > 0) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->opfamilyname, node, "opfamilyname", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "opfamilyname"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "opfamilyname"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->opfamilyname, node, "opfamilyname", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } } static void _fingerprintCreateOpFamilyStmt(FingerprintContext *ctx, const CreateOpFamilyStmt *node, const void *parent, const char *field_name, unsigned int depth) { - _fingerprintString(ctx, "CreateOpFamilyStmt"); - if (node->amname != NULL) { _fingerprintString(ctx, "amname"); _fingerprintString(ctx, node->amname); } if (node->opfamilyname != NULL && node->opfamilyname->length > 0) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->opfamilyname, node, "opfamilyname", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "opfamilyname"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "opfamilyname"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->opfamilyname, node, "opfamilyname", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } } static void _fingerprintAlterOpFamilyStmt(FingerprintContext *ctx, const AlterOpFamilyStmt *node, const void *parent, const char *field_name, unsigned int depth) { - _fingerprintString(ctx, "AlterOpFamilyStmt"); - if (node->amname != NULL) { _fingerprintString(ctx, "amname"); _fingerprintString(ctx, node->amname); @@ -4380,37 +6904,75 @@ _fingerprintAlterOpFamilyStmt(FingerprintContext *ctx, const AlterOpFamilyStmt * } if (node->items != NULL && node->items->length > 0) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->items, node, "items", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "items"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "items"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->items, node, "items", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } if (node->opfamilyname != NULL && node->opfamilyname->length > 0) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->opfamilyname, node, "opfamilyname", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "opfamilyname"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "opfamilyname"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->opfamilyname, node, "opfamilyname", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } } static void _fingerprintPrepareStmt(FingerprintContext *ctx, const PrepareStmt *node, const void *parent, const char *field_name, unsigned int depth) { - _fingerprintString(ctx, "PrepareStmt"); - if (node->argtypes != NULL && node->argtypes->length > 0) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->argtypes, node, "argtypes", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "argtypes"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "argtypes"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->argtypes, node, "argtypes", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } // Intentionally ignoring node->name for fingerprinting if (node->query != NULL) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->query, node, "query", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "query"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "query"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->query, node, "query", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } } @@ -4418,23 +6980,29 @@ _fingerprintPrepareStmt(FingerprintContext *ctx, const PrepareStmt *node, const static void _fingerprintExecuteStmt(FingerprintContext *ctx, const ExecuteStmt *node, const void *parent, const char *field_name, unsigned int depth) { - _fingerprintString(ctx, "ExecuteStmt"); - // Intentionally ignoring node->name for fingerprinting if (node->params != NULL && node->params->length > 0) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->params, node, "params", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "params"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "params"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->params, node, "params", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } } static void _fingerprintDeallocateStmt(FingerprintContext *ctx, const DeallocateStmt *node, const void *parent, const char *field_name, unsigned int depth) { - _fingerprintString(ctx, "DeallocateStmt"); - // Intentionally ignoring node->name for fingerprinting } @@ -4442,8 +7010,6 @@ _fingerprintDeallocateStmt(FingerprintContext *ctx, const DeallocateStmt *node, static void _fingerprintDeclareCursorStmt(FingerprintContext *ctx, const DeclareCursorStmt *node, const void *parent, const char *field_name, unsigned int depth) { - _fingerprintString(ctx, "DeclareCursorStmt"); - if (node->options != 0) { char buffer[50]; sprintf(buffer, "%d", node->options); @@ -4454,10 +7020,20 @@ _fingerprintDeclareCursorStmt(FingerprintContext *ctx, const DeclareCursorStmt * // Intentionally ignoring node->portalname for fingerprinting if (node->query != NULL) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->query, node, "query", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "query"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "query"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->query, node, "query", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } } @@ -4465,21 +7041,39 @@ _fingerprintDeclareCursorStmt(FingerprintContext *ctx, const DeclareCursorStmt * static void _fingerprintCreateTableSpaceStmt(FingerprintContext *ctx, const CreateTableSpaceStmt *node, const void *parent, const char *field_name, unsigned int depth) { - _fingerprintString(ctx, "CreateTableSpaceStmt"); - // Intentionally ignoring node->location for fingerprinting if (node->options != NULL && node->options->length > 0) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->options, node, "options", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "options"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "options"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->options, node, "options", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } if (node->owner != NULL) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->owner, node, "owner", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "owner"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "owner"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintRoleSpec(ctx, node->owner, node, "owner", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } if (node->tablespacename != NULL) { @@ -4492,8 +7086,6 @@ _fingerprintCreateTableSpaceStmt(FingerprintContext *ctx, const CreateTableSpace static void _fingerprintDropTableSpaceStmt(FingerprintContext *ctx, const DropTableSpaceStmt *node, const void *parent, const char *field_name, unsigned int depth) { - _fingerprintString(ctx, "DropTableSpaceStmt"); - if (node->missing_ok) { _fingerprintString(ctx, "missing_ok"); _fingerprintString(ctx, "true"); @@ -4509,34 +7101,65 @@ _fingerprintDropTableSpaceStmt(FingerprintContext *ctx, const DropTableSpaceStmt static void _fingerprintAlterObjectDependsStmt(FingerprintContext *ctx, const AlterObjectDependsStmt *node, const void *parent, const char *field_name, unsigned int depth) { - _fingerprintString(ctx, "AlterObjectDependsStmt"); - if (node->extname != NULL) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->extname, node, "extname", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "extname"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "extname"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->extname, node, "extname", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } if (node->object != NULL) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->object, node, "object", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "object"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "object"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->object, node, "object", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } - if (node->objectType != 0) { - char buffer[50]; - sprintf(buffer, "%d", node->objectType); + if (true) { _fingerprintString(ctx, "objectType"); - _fingerprintString(ctx, buffer); + _fingerprintString(ctx, _enumToStringObjectType(node->objectType)); } if (node->relation != NULL) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->relation, node, "relation", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "relation"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "relation"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintRangeVar(ctx, node->relation, node, "relation", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); + } + + if (node->remove) { + _fingerprintString(ctx, "remove"); + _fingerprintString(ctx, "true"); } } @@ -4544,8 +7167,6 @@ _fingerprintAlterObjectDependsStmt(FingerprintContext *ctx, const AlterObjectDep static void _fingerprintAlterObjectSchemaStmt(FingerprintContext *ctx, const AlterObjectSchemaStmt *node, const void *parent, const char *field_name, unsigned int depth) { - _fingerprintString(ctx, "AlterObjectSchemaStmt"); - if (node->missing_ok) { _fingerprintString(ctx, "missing_ok"); _fingerprintString(ctx, "true"); @@ -4557,24 +7178,42 @@ _fingerprintAlterObjectSchemaStmt(FingerprintContext *ctx, const AlterObjectSche } if (node->object != NULL) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->object, node, "object", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "object"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "object"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->object, node, "object", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } - if (node->objectType != 0) { - char buffer[50]; - sprintf(buffer, "%d", node->objectType); + if (true) { _fingerprintString(ctx, "objectType"); - _fingerprintString(ctx, buffer); + _fingerprintString(ctx, _enumToStringObjectType(node->objectType)); } if (node->relation != NULL) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->relation, node, "relation", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "relation"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "relation"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintRangeVar(ctx, node->relation, node, "relation", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } } @@ -4582,34 +7221,60 @@ _fingerprintAlterObjectSchemaStmt(FingerprintContext *ctx, const AlterObjectSche static void _fingerprintAlterOwnerStmt(FingerprintContext *ctx, const AlterOwnerStmt *node, const void *parent, const char *field_name, unsigned int depth) { - _fingerprintString(ctx, "AlterOwnerStmt"); - if (node->newowner != NULL) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->newowner, node, "newowner", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "newowner"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "newowner"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintRoleSpec(ctx, node->newowner, node, "newowner", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } if (node->object != NULL) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->object, node, "object", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "object"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "object"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->object, node, "object", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } - if (node->objectType != 0) { - char buffer[50]; - sprintf(buffer, "%d", node->objectType); + if (true) { _fingerprintString(ctx, "objectType"); - _fingerprintString(ctx, buffer); + _fingerprintString(ctx, _enumToStringObjectType(node->objectType)); } if (node->relation != NULL) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->relation, node, "relation", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "relation"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "relation"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintRangeVar(ctx, node->relation, node, "relation", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } } @@ -4617,79 +7282,176 @@ _fingerprintAlterOwnerStmt(FingerprintContext *ctx, const AlterOwnerStmt *node, static void _fingerprintAlterOperatorStmt(FingerprintContext *ctx, const AlterOperatorStmt *node, const void *parent, const char *field_name, unsigned int depth) { - _fingerprintString(ctx, "AlterOperatorStmt"); - if (node->opername != NULL) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->opername, node, "opername", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "opername"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "opername"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintObjectWithArgs(ctx, node->opername, node, "opername", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } if (node->options != NULL && node->options->length > 0) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->options, node, "options", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "options"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "options"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->options, node, "options", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } } static void -_fingerprintDropOwnedStmt(FingerprintContext *ctx, const DropOwnedStmt *node, const void *parent, const char *field_name, unsigned int depth) +_fingerprintAlterTypeStmt(FingerprintContext *ctx, const AlterTypeStmt *node, const void *parent, const char *field_name, unsigned int depth) { - _fingerprintString(ctx, "DropOwnedStmt"); + if (node->options != NULL && node->options->length > 0) { + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; - if (node->behavior != 0) { - char buffer[50]; - sprintf(buffer, "%d", node->behavior); + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "options"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->options, node, "options", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); + } + if (node->typeName != NULL && node->typeName->length > 0) { + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "typeName"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->typeName, node, "typeName", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); + } +} + +static void +_fingerprintDropOwnedStmt(FingerprintContext *ctx, const DropOwnedStmt *node, const void *parent, const char *field_name, unsigned int depth) +{ + if (true) { _fingerprintString(ctx, "behavior"); - _fingerprintString(ctx, buffer); + _fingerprintString(ctx, _enumToStringDropBehavior(node->behavior)); } if (node->roles != NULL && node->roles->length > 0) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->roles, node, "roles", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "roles"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "roles"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->roles, node, "roles", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } } static void _fingerprintReassignOwnedStmt(FingerprintContext *ctx, const ReassignOwnedStmt *node, const void *parent, const char *field_name, unsigned int depth) { - _fingerprintString(ctx, "ReassignOwnedStmt"); - if (node->newrole != NULL) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->newrole, node, "newrole", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "newrole"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "newrole"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintRoleSpec(ctx, node->newrole, node, "newrole", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } if (node->roles != NULL && node->roles->length > 0) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->roles, node, "roles", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "roles"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "roles"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->roles, node, "roles", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } } static void _fingerprintCompositeTypeStmt(FingerprintContext *ctx, const CompositeTypeStmt *node, const void *parent, const char *field_name, unsigned int depth) { - _fingerprintString(ctx, "CompositeTypeStmt"); - if (node->coldeflist != NULL && node->coldeflist->length > 0) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->coldeflist, node, "coldeflist", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "coldeflist"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "coldeflist"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->coldeflist, node, "coldeflist", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } if (node->typevar != NULL) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->typevar, node, "typevar", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "typevar"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "typevar"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintRangeVar(ctx, node->typevar, node, "typevar", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } } @@ -4697,46 +7459,80 @@ _fingerprintCompositeTypeStmt(FingerprintContext *ctx, const CompositeTypeStmt * static void _fingerprintCreateEnumStmt(FingerprintContext *ctx, const CreateEnumStmt *node, const void *parent, const char *field_name, unsigned int depth) { - _fingerprintString(ctx, "CreateEnumStmt"); - if (node->typeName != NULL && node->typeName->length > 0) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->typeName, node, "typeName", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "typeName"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "typeName"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->typeName, node, "typeName", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } if (node->vals != NULL && node->vals->length > 0) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->vals, node, "vals", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "vals"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "vals"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->vals, node, "vals", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } } static void _fingerprintCreateRangeStmt(FingerprintContext *ctx, const CreateRangeStmt *node, const void *parent, const char *field_name, unsigned int depth) { - _fingerprintString(ctx, "CreateRangeStmt"); - if (node->params != NULL && node->params->length > 0) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->params, node, "params", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "params"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "params"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->params, node, "params", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } if (node->typeName != NULL && node->typeName->length > 0) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->typeName, node, "typeName", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "typeName"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "typeName"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->typeName, node, "typeName", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } } static void _fingerprintAlterEnumStmt(FingerprintContext *ctx, const AlterEnumStmt *node, const void *parent, const char *field_name, unsigned int depth) { - _fingerprintString(ctx, "AlterEnumStmt"); - if (node->newVal != NULL) { _fingerprintString(ctx, "newVal"); _fingerprintString(ctx, node->newVal); @@ -4763,54 +7559,98 @@ _fingerprintAlterEnumStmt(FingerprintContext *ctx, const AlterEnumStmt *node, co } if (node->typeName != NULL && node->typeName->length > 0) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->typeName, node, "typeName", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "typeName"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "typeName"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->typeName, node, "typeName", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } } static void _fingerprintAlterTSDictionaryStmt(FingerprintContext *ctx, const AlterTSDictionaryStmt *node, const void *parent, const char *field_name, unsigned int depth) { - _fingerprintString(ctx, "AlterTSDictionaryStmt"); - if (node->dictname != NULL && node->dictname->length > 0) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->dictname, node, "dictname", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "dictname"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "dictname"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->dictname, node, "dictname", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } if (node->options != NULL && node->options->length > 0) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->options, node, "options", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "options"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "options"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->options, node, "options", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } } static void _fingerprintAlterTSConfigurationStmt(FingerprintContext *ctx, const AlterTSConfigurationStmt *node, const void *parent, const char *field_name, unsigned int depth) { - _fingerprintString(ctx, "AlterTSConfigurationStmt"); - if (node->cfgname != NULL && node->cfgname->length > 0) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->cfgname, node, "cfgname", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "cfgname"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "cfgname"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->cfgname, node, "cfgname", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } if (node->dicts != NULL && node->dicts->length > 0) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->dicts, node, "dicts", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "dicts"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "dicts"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->dicts, node, "dicts", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } - if (node->kind != 0) { - char buffer[50]; - sprintf(buffer, "%d", node->kind); + if (true) { _fingerprintString(ctx, "kind"); - _fingerprintString(ctx, buffer); + _fingerprintString(ctx, _enumToStringAlterTSConfigType(node->kind)); } if (node->missing_ok) { @@ -4829,66 +7669,110 @@ _fingerprintAlterTSConfigurationStmt(FingerprintContext *ctx, const AlterTSConfi } if (node->tokentype != NULL && node->tokentype->length > 0) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->tokentype, node, "tokentype", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "tokentype"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "tokentype"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->tokentype, node, "tokentype", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } } static void _fingerprintCreateFdwStmt(FingerprintContext *ctx, const CreateFdwStmt *node, const void *parent, const char *field_name, unsigned int depth) { - _fingerprintString(ctx, "CreateFdwStmt"); - if (node->fdwname != NULL) { _fingerprintString(ctx, "fdwname"); _fingerprintString(ctx, node->fdwname); } if (node->func_options != NULL && node->func_options->length > 0) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->func_options, node, "func_options", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "func_options"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "func_options"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->func_options, node, "func_options", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } if (node->options != NULL && node->options->length > 0) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->options, node, "options", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "options"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "options"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->options, node, "options", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } } static void _fingerprintAlterFdwStmt(FingerprintContext *ctx, const AlterFdwStmt *node, const void *parent, const char *field_name, unsigned int depth) { - _fingerprintString(ctx, "AlterFdwStmt"); - if (node->fdwname != NULL) { _fingerprintString(ctx, "fdwname"); _fingerprintString(ctx, node->fdwname); } if (node->func_options != NULL && node->func_options->length > 0) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->func_options, node, "func_options", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "func_options"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "func_options"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->func_options, node, "func_options", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } if (node->options != NULL && node->options->length > 0) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->options, node, "options", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "options"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "options"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->options, node, "options", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } } static void _fingerprintCreateForeignServerStmt(FingerprintContext *ctx, const CreateForeignServerStmt *node, const void *parent, const char *field_name, unsigned int depth) { - _fingerprintString(ctx, "CreateForeignServerStmt"); - if (node->fdwname != NULL) { _fingerprintString(ctx, "fdwname"); _fingerprintString(ctx, node->fdwname); @@ -4900,10 +7784,20 @@ _fingerprintCreateForeignServerStmt(FingerprintContext *ctx, const CreateForeign } if (node->options != NULL && node->options->length > 0) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->options, node, "options", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "options"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "options"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->options, node, "options", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } if (node->servername != NULL) { _fingerprintString(ctx, "servername"); @@ -4925,18 +7819,26 @@ _fingerprintCreateForeignServerStmt(FingerprintContext *ctx, const CreateForeign static void _fingerprintAlterForeignServerStmt(FingerprintContext *ctx, const AlterForeignServerStmt *node, const void *parent, const char *field_name, unsigned int depth) { - _fingerprintString(ctx, "AlterForeignServerStmt"); - if (node->has_version) { _fingerprintString(ctx, "has_version"); _fingerprintString(ctx, "true"); } if (node->options != NULL && node->options->length > 0) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->options, node, "options", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "options"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "options"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->options, node, "options", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } if (node->servername != NULL) { _fingerprintString(ctx, "servername"); @@ -4953,18 +7855,26 @@ _fingerprintAlterForeignServerStmt(FingerprintContext *ctx, const AlterForeignSe static void _fingerprintCreateUserMappingStmt(FingerprintContext *ctx, const CreateUserMappingStmt *node, const void *parent, const char *field_name, unsigned int depth) { - _fingerprintString(ctx, "CreateUserMappingStmt"); - if (node->if_not_exists) { _fingerprintString(ctx, "if_not_exists"); _fingerprintString(ctx, "true"); } if (node->options != NULL && node->options->length > 0) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->options, node, "options", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "options"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "options"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->options, node, "options", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } if (node->servername != NULL) { _fingerprintString(ctx, "servername"); @@ -4972,10 +7882,20 @@ _fingerprintCreateUserMappingStmt(FingerprintContext *ctx, const CreateUserMappi } if (node->user != NULL) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->user, node, "user", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "user"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "user"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintRoleSpec(ctx, node->user, node, "user", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } } @@ -4983,13 +7903,21 @@ _fingerprintCreateUserMappingStmt(FingerprintContext *ctx, const CreateUserMappi static void _fingerprintAlterUserMappingStmt(FingerprintContext *ctx, const AlterUserMappingStmt *node, const void *parent, const char *field_name, unsigned int depth) { - _fingerprintString(ctx, "AlterUserMappingStmt"); - if (node->options != NULL && node->options->length > 0) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->options, node, "options", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "options"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "options"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->options, node, "options", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } if (node->servername != NULL) { _fingerprintString(ctx, "servername"); @@ -4997,10 +7925,20 @@ _fingerprintAlterUserMappingStmt(FingerprintContext *ctx, const AlterUserMapping } if (node->user != NULL) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->user, node, "user", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "user"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "user"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintRoleSpec(ctx, node->user, node, "user", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } } @@ -5008,8 +7946,6 @@ _fingerprintAlterUserMappingStmt(FingerprintContext *ctx, const AlterUserMapping static void _fingerprintDropUserMappingStmt(FingerprintContext *ctx, const DropUserMappingStmt *node, const void *parent, const char *field_name, unsigned int depth) { - _fingerprintString(ctx, "DropUserMappingStmt"); - if (node->missing_ok) { _fingerprintString(ctx, "missing_ok"); _fingerprintString(ctx, "true"); @@ -5021,10 +7957,20 @@ _fingerprintDropUserMappingStmt(FingerprintContext *ctx, const DropUserMappingSt } if (node->user != NULL) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->user, node, "user", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "user"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "user"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintRoleSpec(ctx, node->user, node, "user", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } } @@ -5032,18 +7978,26 @@ _fingerprintDropUserMappingStmt(FingerprintContext *ctx, const DropUserMappingSt static void _fingerprintAlterTableSpaceOptionsStmt(FingerprintContext *ctx, const AlterTableSpaceOptionsStmt *node, const void *parent, const char *field_name, unsigned int depth) { - _fingerprintString(ctx, "AlterTableSpaceOptionsStmt"); - if (node->isReset) { _fingerprintString(ctx, "isReset"); _fingerprintString(ctx, "true"); } if (node->options != NULL && node->options->length > 0) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->options, node, "options", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "options"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "options"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->options, node, "options", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } if (node->tablespacename != NULL) { _fingerprintString(ctx, "tablespacename"); @@ -5055,8 +8009,6 @@ _fingerprintAlterTableSpaceOptionsStmt(FingerprintContext *ctx, const AlterTable static void _fingerprintAlterTableMoveAllStmt(FingerprintContext *ctx, const AlterTableMoveAllStmt *node, const void *parent, const char *field_name, unsigned int depth) { - _fingerprintString(ctx, "AlterTableMoveAllStmt"); - if (node->new_tablespacename != NULL) { _fingerprintString(ctx, "new_tablespacename"); _fingerprintString(ctx, node->new_tablespacename); @@ -5067,11 +8019,9 @@ _fingerprintAlterTableMoveAllStmt(FingerprintContext *ctx, const AlterTableMoveA _fingerprintString(ctx, "true"); } - if (node->objtype != 0) { - char buffer[50]; - sprintf(buffer, "%d", node->objtype); + if (true) { _fingerprintString(ctx, "objtype"); - _fingerprintString(ctx, buffer); + _fingerprintString(ctx, _enumToStringObjectType(node->objtype)); } if (node->orig_tablespacename != NULL) { @@ -5080,35 +8030,51 @@ _fingerprintAlterTableMoveAllStmt(FingerprintContext *ctx, const AlterTableMoveA } if (node->roles != NULL && node->roles->length > 0) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->roles, node, "roles", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "roles"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "roles"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->roles, node, "roles", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } } static void _fingerprintSecLabelStmt(FingerprintContext *ctx, const SecLabelStmt *node, const void *parent, const char *field_name, unsigned int depth) { - _fingerprintString(ctx, "SecLabelStmt"); - if (node->label != NULL) { _fingerprintString(ctx, "label"); _fingerprintString(ctx, node->label); } if (node->object != NULL) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->object, node, "object", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "object"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "object"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->object, node, "object", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } - if (node->objtype != 0) { - char buffer[50]; - sprintf(buffer, "%d", node->objtype); + if (true) { _fingerprintString(ctx, "objtype"); - _fingerprintString(ctx, buffer); + _fingerprintString(ctx, _enumToStringObjectType(node->objtype)); } if (node->provider != NULL) { @@ -5121,15 +8087,23 @@ _fingerprintSecLabelStmt(FingerprintContext *ctx, const SecLabelStmt *node, cons static void _fingerprintCreateForeignTableStmt(FingerprintContext *ctx, const CreateForeignTableStmt *node, const void *parent, const char *field_name, unsigned int depth) { - _fingerprintString(ctx, "CreateForeignTableStmt"); - _fingerprintString(ctx, "base"); _fingerprintCreateStmt(ctx, (const CreateStmt*) &node->base, node, "base", depth); if (node->options != NULL && node->options->length > 0) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->options, node, "options", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "options"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "options"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->options, node, "options", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } if (node->servername != NULL) { _fingerprintString(ctx, "servername"); @@ -5141,13 +8115,9 @@ _fingerprintCreateForeignTableStmt(FingerprintContext *ctx, const CreateForeignT static void _fingerprintImportForeignSchemaStmt(FingerprintContext *ctx, const ImportForeignSchemaStmt *node, const void *parent, const char *field_name, unsigned int depth) { - _fingerprintString(ctx, "ImportForeignSchemaStmt"); - - if (node->list_type != 0) { - char buffer[50]; - sprintf(buffer, "%d", node->list_type); + if (true) { _fingerprintString(ctx, "list_type"); - _fingerprintString(ctx, buffer); + _fingerprintString(ctx, _enumToStringImportForeignSchemaType(node->list_type)); } if (node->local_schema != NULL) { @@ -5156,10 +8126,20 @@ _fingerprintImportForeignSchemaStmt(FingerprintContext *ctx, const ImportForeign } if (node->options != NULL && node->options->length > 0) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->options, node, "options", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "options"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "options"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->options, node, "options", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } if (node->remote_schema != NULL) { _fingerprintString(ctx, "remote_schema"); @@ -5172,18 +8152,26 @@ _fingerprintImportForeignSchemaStmt(FingerprintContext *ctx, const ImportForeign } if (node->table_list != NULL && node->table_list->length > 0) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->table_list, node, "table_list", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "table_list"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "table_list"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->table_list, node, "table_list", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } } static void _fingerprintCreateExtensionStmt(FingerprintContext *ctx, const CreateExtensionStmt *node, const void *parent, const char *field_name, unsigned int depth) { - _fingerprintString(ctx, "CreateExtensionStmt"); - if (node->extname != NULL) { _fingerprintString(ctx, "extname"); _fingerprintString(ctx, node->extname); @@ -5195,36 +8183,52 @@ _fingerprintCreateExtensionStmt(FingerprintContext *ctx, const CreateExtensionSt } if (node->options != NULL && node->options->length > 0) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->options, node, "options", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "options"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "options"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->options, node, "options", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } } static void _fingerprintAlterExtensionStmt(FingerprintContext *ctx, const AlterExtensionStmt *node, const void *parent, const char *field_name, unsigned int depth) { - _fingerprintString(ctx, "AlterExtensionStmt"); - if (node->extname != NULL) { _fingerprintString(ctx, "extname"); _fingerprintString(ctx, node->extname); } if (node->options != NULL && node->options->length > 0) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->options, node, "options", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "options"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "options"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->options, node, "options", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } } static void _fingerprintAlterExtensionContentsStmt(FingerprintContext *ctx, const AlterExtensionContentsStmt *node, const void *parent, const char *field_name, unsigned int depth) { - _fingerprintString(ctx, "AlterExtensionContentsStmt"); - if (node->action != 0) { char buffer[50]; sprintf(buffer, "%d", node->action); @@ -5238,17 +8242,25 @@ _fingerprintAlterExtensionContentsStmt(FingerprintContext *ctx, const AlterExten } if (node->object != NULL) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->object, node, "object", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "object"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "object"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->object, node, "object", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } - if (node->objtype != 0) { - char buffer[50]; - sprintf(buffer, "%d", node->objtype); + if (true) { _fingerprintString(ctx, "objtype"); - _fingerprintString(ctx, buffer); + _fingerprintString(ctx, _enumToStringObjectType(node->objtype)); } } @@ -5256,18 +8268,26 @@ _fingerprintAlterExtensionContentsStmt(FingerprintContext *ctx, const AlterExten static void _fingerprintCreateEventTrigStmt(FingerprintContext *ctx, const CreateEventTrigStmt *node, const void *parent, const char *field_name, unsigned int depth) { - _fingerprintString(ctx, "CreateEventTrigStmt"); - if (node->eventname != NULL) { _fingerprintString(ctx, "eventname"); _fingerprintString(ctx, node->eventname); } if (node->funcname != NULL && node->funcname->length > 0) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->funcname, node, "funcname", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "funcname"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "funcname"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->funcname, node, "funcname", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } if (node->trigname != NULL) { _fingerprintString(ctx, "trigname"); @@ -5275,18 +8295,26 @@ _fingerprintCreateEventTrigStmt(FingerprintContext *ctx, const CreateEventTrigSt } if (node->whenclause != NULL && node->whenclause->length > 0) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->whenclause, node, "whenclause", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "whenclause"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "whenclause"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->whenclause, node, "whenclause", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } } static void _fingerprintAlterEventTrigStmt(FingerprintContext *ctx, const AlterEventTrigStmt *node, const void *parent, const char *field_name, unsigned int depth) { - _fingerprintString(ctx, "AlterEventTrigStmt"); - if (node->tgenabled != 0) { char buffer[2] = {node->tgenabled, '\0'}; _fingerprintString(ctx, "tgenabled"); @@ -5303,18 +8331,26 @@ _fingerprintAlterEventTrigStmt(FingerprintContext *ctx, const AlterEventTrigStmt static void _fingerprintRefreshMatViewStmt(FingerprintContext *ctx, const RefreshMatViewStmt *node, const void *parent, const char *field_name, unsigned int depth) { - _fingerprintString(ctx, "RefreshMatViewStmt"); - if (node->concurrent) { _fingerprintString(ctx, "concurrent"); _fingerprintString(ctx, "true"); } if (node->relation != NULL) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->relation, node, "relation", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "relation"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "relation"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintRangeVar(ctx, node->relation, node, "relation", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } if (node->skipData) { @@ -5327,8 +8363,6 @@ _fingerprintRefreshMatViewStmt(FingerprintContext *ctx, const RefreshMatViewStmt static void _fingerprintReplicaIdentityStmt(FingerprintContext *ctx, const ReplicaIdentityStmt *node, const void *parent, const char *field_name, unsigned int depth) { - _fingerprintString(ctx, "ReplicaIdentityStmt"); - if (node->identity_type != 0) { char buffer[2] = {node->identity_type, '\0'}; _fingerprintString(ctx, "identity_type"); @@ -5345,13 +8379,21 @@ _fingerprintReplicaIdentityStmt(FingerprintContext *ctx, const ReplicaIdentitySt static void _fingerprintAlterSystemStmt(FingerprintContext *ctx, const AlterSystemStmt *node, const void *parent, const char *field_name, unsigned int depth) { - _fingerprintString(ctx, "AlterSystemStmt"); - if (node->setstmt != NULL) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->setstmt, node, "setstmt", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "setstmt"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "setstmt"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintVariableSetStmt(ctx, node->setstmt, node, "setstmt", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } } @@ -5359,8 +8401,6 @@ _fingerprintAlterSystemStmt(FingerprintContext *ctx, const AlterSystemStmt *node static void _fingerprintCreatePolicyStmt(FingerprintContext *ctx, const CreatePolicyStmt *node, const void *parent, const char *field_name, unsigned int depth) { - _fingerprintString(ctx, "CreatePolicyStmt"); - if (node->cmd_name != NULL) { _fingerprintString(ctx, "cmd_name"); _fingerprintString(ctx, node->cmd_name); @@ -5377,30 +8417,70 @@ _fingerprintCreatePolicyStmt(FingerprintContext *ctx, const CreatePolicyStmt *no } if (node->qual != NULL) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->qual, node, "qual", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "qual"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "qual"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->qual, node, "qual", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } if (node->roles != NULL && node->roles->length > 0) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->roles, node, "roles", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "roles"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "roles"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->roles, node, "roles", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } if (node->table != NULL) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->table, node, "table", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "table"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "table"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintRangeVar(ctx, node->table, node, "table", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } if (node->with_check != NULL) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->with_check, node, "with_check", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "with_check"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "with_check"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->with_check, node, "with_check", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } } @@ -5408,38 +8488,76 @@ _fingerprintCreatePolicyStmt(FingerprintContext *ctx, const CreatePolicyStmt *no static void _fingerprintAlterPolicyStmt(FingerprintContext *ctx, const AlterPolicyStmt *node, const void *parent, const char *field_name, unsigned int depth) { - _fingerprintString(ctx, "AlterPolicyStmt"); - if (node->policy_name != NULL) { _fingerprintString(ctx, "policy_name"); _fingerprintString(ctx, node->policy_name); } if (node->qual != NULL) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->qual, node, "qual", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "qual"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "qual"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->qual, node, "qual", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } if (node->roles != NULL && node->roles->length > 0) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->roles, node, "roles", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "roles"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "roles"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->roles, node, "roles", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } if (node->table != NULL) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->table, node, "table", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "table"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "table"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintRangeVar(ctx, node->table, node, "table", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } if (node->with_check != NULL) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->with_check, node, "with_check", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "with_check"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "with_check"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->with_check, node, "with_check", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } } @@ -5447,13 +8565,21 @@ _fingerprintAlterPolicyStmt(FingerprintContext *ctx, const AlterPolicyStmt *node static void _fingerprintCreateTransformStmt(FingerprintContext *ctx, const CreateTransformStmt *node, const void *parent, const char *field_name, unsigned int depth) { - _fingerprintString(ctx, "CreateTransformStmt"); - if (node->fromsql != NULL) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->fromsql, node, "fromsql", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "fromsql"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "fromsql"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintObjectWithArgs(ctx, node->fromsql, node, "fromsql", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } if (node->lang != NULL) { @@ -5467,17 +8593,37 @@ _fingerprintCreateTransformStmt(FingerprintContext *ctx, const CreateTransformSt } if (node->tosql != NULL) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->tosql, node, "tosql", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "tosql"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "tosql"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintObjectWithArgs(ctx, node->tosql, node, "tosql", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } if (node->type_name != NULL) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->type_name, node, "type_name", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "type_name"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "type_name"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintTypeName(ctx, node->type_name, node, "type_name", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } } @@ -5485,8 +8631,6 @@ _fingerprintCreateTransformStmt(FingerprintContext *ctx, const CreateTransformSt static void _fingerprintCreateAmStmt(FingerprintContext *ctx, const CreateAmStmt *node, const void *parent, const char *field_name, unsigned int depth) { - _fingerprintString(ctx, "CreateAmStmt"); - if (node->amname != NULL) { _fingerprintString(ctx, "amname"); _fingerprintString(ctx, node->amname); @@ -5499,28 +8643,46 @@ _fingerprintCreateAmStmt(FingerprintContext *ctx, const CreateAmStmt *node, cons } if (node->handler_name != NULL && node->handler_name->length > 0) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->handler_name, node, "handler_name", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "handler_name"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "handler_name"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->handler_name, node, "handler_name", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } } static void _fingerprintCreatePublicationStmt(FingerprintContext *ctx, const CreatePublicationStmt *node, const void *parent, const char *field_name, unsigned int depth) { - _fingerprintString(ctx, "CreatePublicationStmt"); - if (node->for_all_tables) { _fingerprintString(ctx, "for_all_tables"); _fingerprintString(ctx, "true"); } if (node->options != NULL && node->options->length > 0) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->options, node, "options", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "options"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "options"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->options, node, "options", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } if (node->pubname != NULL) { _fingerprintString(ctx, "pubname"); @@ -5528,70 +8690,114 @@ _fingerprintCreatePublicationStmt(FingerprintContext *ctx, const CreatePublicati } if (node->tables != NULL && node->tables->length > 0) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->tables, node, "tables", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "tables"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "tables"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->tables, node, "tables", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } } static void _fingerprintAlterPublicationStmt(FingerprintContext *ctx, const AlterPublicationStmt *node, const void *parent, const char *field_name, unsigned int depth) { - _fingerprintString(ctx, "AlterPublicationStmt"); - if (node->for_all_tables) { _fingerprintString(ctx, "for_all_tables"); _fingerprintString(ctx, "true"); } if (node->options != NULL && node->options->length > 0) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->options, node, "options", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "options"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "options"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->options, node, "options", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } if (node->pubname != NULL) { _fingerprintString(ctx, "pubname"); _fingerprintString(ctx, node->pubname); } - if (node->tableAction != 0) { - char buffer[50]; - sprintf(buffer, "%d", node->tableAction); + if (true) { _fingerprintString(ctx, "tableAction"); - _fingerprintString(ctx, buffer); + _fingerprintString(ctx, _enumToStringDefElemAction(node->tableAction)); } if (node->tables != NULL && node->tables->length > 0) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->tables, node, "tables", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "tables"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "tables"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->tables, node, "tables", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } } static void _fingerprintCreateSubscriptionStmt(FingerprintContext *ctx, const CreateSubscriptionStmt *node, const void *parent, const char *field_name, unsigned int depth) { - _fingerprintString(ctx, "CreateSubscriptionStmt"); - if (node->conninfo != NULL) { _fingerprintString(ctx, "conninfo"); _fingerprintString(ctx, node->conninfo); } if (node->options != NULL && node->options->length > 0) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->options, node, "options", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "options"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "options"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->options, node, "options", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } if (node->publication != NULL && node->publication->length > 0) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->publication, node, "publication", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "publication"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "publication"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->publication, node, "publication", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } if (node->subname != NULL) { _fingerprintString(ctx, "subname"); @@ -5603,31 +8809,47 @@ _fingerprintCreateSubscriptionStmt(FingerprintContext *ctx, const CreateSubscrip static void _fingerprintAlterSubscriptionStmt(FingerprintContext *ctx, const AlterSubscriptionStmt *node, const void *parent, const char *field_name, unsigned int depth) { - _fingerprintString(ctx, "AlterSubscriptionStmt"); - if (node->conninfo != NULL) { _fingerprintString(ctx, "conninfo"); _fingerprintString(ctx, node->conninfo); } - if (node->kind != 0) { - char buffer[50]; - sprintf(buffer, "%d", node->kind); + if (true) { _fingerprintString(ctx, "kind"); - _fingerprintString(ctx, buffer); + _fingerprintString(ctx, _enumToStringAlterSubscriptionType(node->kind)); } if (node->options != NULL && node->options->length > 0) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->options, node, "options", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "options"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "options"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->options, node, "options", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } if (node->publication != NULL && node->publication->length > 0) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->publication, node, "publication", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "publication"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "publication"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->publication, node, "publication", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } if (node->subname != NULL) { _fingerprintString(ctx, "subname"); @@ -5639,13 +8861,9 @@ _fingerprintAlterSubscriptionStmt(FingerprintContext *ctx, const AlterSubscripti static void _fingerprintDropSubscriptionStmt(FingerprintContext *ctx, const DropSubscriptionStmt *node, const void *parent, const char *field_name, unsigned int depth) { - _fingerprintString(ctx, "DropSubscriptionStmt"); - - if (node->behavior != 0) { - char buffer[50]; - sprintf(buffer, "%d", node->behavior); + if (true) { _fingerprintString(ctx, "behavior"); - _fingerprintString(ctx, buffer); + _fingerprintString(ctx, _enumToStringDropBehavior(node->behavior)); } if (node->missing_ok) { @@ -5663,19 +8881,37 @@ _fingerprintDropSubscriptionStmt(FingerprintContext *ctx, const DropSubscription static void _fingerprintCreateStatsStmt(FingerprintContext *ctx, const CreateStatsStmt *node, const void *parent, const char *field_name, unsigned int depth) { - _fingerprintString(ctx, "CreateStatsStmt"); - if (node->defnames != NULL && node->defnames->length > 0) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->defnames, node, "defnames", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "defnames"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "defnames"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->defnames, node, "defnames", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } if (node->exprs != NULL && node->exprs->length > 0) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->exprs, node, "exprs", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "exprs"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "exprs"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->exprs, node, "exprs", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } if (node->if_not_exists) { _fingerprintString(ctx, "if_not_exists"); @@ -5683,64 +8919,198 @@ _fingerprintCreateStatsStmt(FingerprintContext *ctx, const CreateStatsStmt *node } if (node->relations != NULL && node->relations->length > 0) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->relations, node, "relations", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "relations"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "relations"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->relations, node, "relations", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } if (node->stat_types != NULL && node->stat_types->length > 0) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->stat_types, node, "stat_types", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "stat_types"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "stat_types"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->stat_types, node, "stat_types", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); + } + if (node->stxcomment != NULL) { + _fingerprintString(ctx, "stxcomment"); + _fingerprintString(ctx, node->stxcomment); } + } static void _fingerprintAlterCollationStmt(FingerprintContext *ctx, const AlterCollationStmt *node, const void *parent, const char *field_name, unsigned int depth) { - _fingerprintString(ctx, "AlterCollationStmt"); - if (node->collname != NULL && node->collname->length > 0) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->collname, node, "collname", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "collname"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "collname"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->collname, node, "collname", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } } static void -_fingerprintA_Expr(FingerprintContext *ctx, const A_Expr *node, const void *parent, const char *field_name, unsigned int depth) +_fingerprintCallStmt(FingerprintContext *ctx, const CallStmt *node, const void *parent, const char *field_name, unsigned int depth) +{ + if (node->funccall != NULL) { + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "funccall"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintFuncCall(ctx, node->funccall, node, "funccall", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); + } + + if (node->funcexpr != NULL) { + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "funcexpr"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintFuncExpr(ctx, node->funcexpr, node, "funcexpr", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); + } + +} + +static void +_fingerprintAlterStatsStmt(FingerprintContext *ctx, const AlterStatsStmt *node, const void *parent, const char *field_name, unsigned int depth) { - _fingerprintString(ctx, "A_Expr"); + if (node->defnames != NULL && node->defnames->length > 0) { + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "defnames"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->defnames, node, "defnames", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); + } + if (node->missing_ok) { + _fingerprintString(ctx, "missing_ok"); + _fingerprintString(ctx, "true"); + } - if (node->kind != 0) { + if (node->stxstattarget != 0) { char buffer[50]; - sprintf(buffer, "%d", node->kind); - _fingerprintString(ctx, "kind"); + sprintf(buffer, "%d", node->stxstattarget); + _fingerprintString(ctx, "stxstattarget"); _fingerprintString(ctx, buffer); } +} + +static void +_fingerprintA_Expr(FingerprintContext *ctx, const A_Expr *node, const void *parent, const char *field_name, unsigned int depth) +{ + if (true) { + _fingerprintString(ctx, "kind"); + if (node->kind == AEXPR_OP_ANY || node->kind == AEXPR_IN) + _fingerprintString(ctx, "AEXPR_OP"); + else + _fingerprintString(ctx, _enumToStringA_Expr_Kind(node->kind)); + } + if (node->lexpr != NULL) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->lexpr, node, "lexpr", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "lexpr"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "lexpr"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->lexpr, node, "lexpr", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } // Intentionally ignoring node->location for fingerprinting if (node->name != NULL && node->name->length > 0) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->name, node, "name", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "name"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "name"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->name, node, "name", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } if (node->rexpr != NULL) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->rexpr, node, "rexpr", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "rexpr"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "rexpr"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->rexpr, node, "rexpr", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } } @@ -5748,13 +9118,21 @@ _fingerprintA_Expr(FingerprintContext *ctx, const A_Expr *node, const void *pare static void _fingerprintColumnRef(FingerprintContext *ctx, const ColumnRef *node, const void *parent, const char *field_name, unsigned int depth) { - _fingerprintString(ctx, "ColumnRef"); - if (node->fields != NULL && node->fields->length > 0) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->fields, node, "fields", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "fields"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "fields"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->fields, node, "fields", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } // Intentionally ignoring node->location for fingerprinting @@ -5775,25 +9153,43 @@ _fingerprintA_Const(FingerprintContext *ctx, const A_Const *node, const void *pa static void _fingerprintFuncCall(FingerprintContext *ctx, const FuncCall *node, const void *parent, const char *field_name, unsigned int depth) { - _fingerprintString(ctx, "FuncCall"); - if (node->agg_distinct) { _fingerprintString(ctx, "agg_distinct"); _fingerprintString(ctx, "true"); } if (node->agg_filter != NULL) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->agg_filter, node, "agg_filter", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "agg_filter"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "agg_filter"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->agg_filter, node, "agg_filter", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } if (node->agg_order != NULL && node->agg_order->length > 0) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->agg_order, node, "agg_order", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "agg_order"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "agg_order"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->agg_order, node, "agg_order", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } if (node->agg_star) { _fingerprintString(ctx, "agg_star"); @@ -5806,10 +9202,20 @@ _fingerprintFuncCall(FingerprintContext *ctx, const FuncCall *node, const void * } if (node->args != NULL && node->args->length > 0) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->args, node, "args", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "args"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "args"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->args, node, "args", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } if (node->func_variadic) { _fingerprintString(ctx, "func_variadic"); @@ -5817,18 +9223,38 @@ _fingerprintFuncCall(FingerprintContext *ctx, const FuncCall *node, const void * } if (node->funcname != NULL && node->funcname->length > 0) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->funcname, node, "funcname", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "funcname"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "funcname"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->funcname, node, "funcname", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } // Intentionally ignoring node->location for fingerprinting if (node->over != NULL) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->over, node, "over", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "over"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "over"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintWindowDef(ctx, node->over, node, "over", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } } @@ -5836,32 +9262,48 @@ _fingerprintFuncCall(FingerprintContext *ctx, const FuncCall *node, const void * static void _fingerprintA_Star(FingerprintContext *ctx, const A_Star *node, const void *parent, const char *field_name, unsigned int depth) { - _fingerprintString(ctx, "A_Star"); - } static void _fingerprintA_Indices(FingerprintContext *ctx, const A_Indices *node, const void *parent, const char *field_name, unsigned int depth) { - _fingerprintString(ctx, "A_Indices"); - if (node->is_slice) { _fingerprintString(ctx, "is_slice"); _fingerprintString(ctx, "true"); } if (node->lidx != NULL) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->lidx, node, "lidx", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "lidx"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "lidx"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->lidx, node, "lidx", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } if (node->uidx != NULL) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->uidx, node, "uidx", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "uidx"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "uidx"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->uidx, node, "uidx", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } } @@ -5869,33 +9311,59 @@ _fingerprintA_Indices(FingerprintContext *ctx, const A_Indices *node, const void static void _fingerprintA_Indirection(FingerprintContext *ctx, const A_Indirection *node, const void *parent, const char *field_name, unsigned int depth) { - _fingerprintString(ctx, "A_Indirection"); - if (node->arg != NULL) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->arg, node, "arg", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "arg"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "arg"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->arg, node, "arg", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } if (node->indirection != NULL && node->indirection->length > 0) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->indirection, node, "indirection", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "indirection"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "indirection"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->indirection, node, "indirection", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } } static void _fingerprintA_ArrayExpr(FingerprintContext *ctx, const A_ArrayExpr *node, const void *parent, const char *field_name, unsigned int depth) { - _fingerprintString(ctx, "A_ArrayExpr"); - if (node->elements != NULL && node->elements->length > 0) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->elements, node, "elements", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "elements"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "elements"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->elements, node, "elements", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } // Intentionally ignoring node->location for fingerprinting @@ -5904,13 +9372,21 @@ _fingerprintA_ArrayExpr(FingerprintContext *ctx, const A_ArrayExpr *node, const static void _fingerprintResTarget(FingerprintContext *ctx, const ResTarget *node, const void *parent, const char *field_name, unsigned int depth) { - _fingerprintString(ctx, "ResTarget"); - if (node->indirection != NULL && node->indirection->length > 0) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->indirection, node, "indirection", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "indirection"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "indirection"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->indirection, node, "indirection", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } // Intentionally ignoring node->location for fingerprinting @@ -5920,10 +9396,20 @@ _fingerprintResTarget(FingerprintContext *ctx, const ResTarget *node, const void } if (node->val != NULL) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->val, node, "val", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "val"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "val"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->val, node, "val", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } } @@ -5931,8 +9417,6 @@ _fingerprintResTarget(FingerprintContext *ctx, const ResTarget *node, const void static void _fingerprintMultiAssignRef(FingerprintContext *ctx, const MultiAssignRef *node, const void *parent, const char *field_name, unsigned int depth) { - _fingerprintString(ctx, "MultiAssignRef"); - if (node->colno != 0) { char buffer[50]; sprintf(buffer, "%d", node->colno); @@ -5948,10 +9432,20 @@ _fingerprintMultiAssignRef(FingerprintContext *ctx, const MultiAssignRef *node, } if (node->source != NULL) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->source, node, "source", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "source"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "source"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->source, node, "source", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } } @@ -5959,22 +9453,40 @@ _fingerprintMultiAssignRef(FingerprintContext *ctx, const MultiAssignRef *node, static void _fingerprintTypeCast(FingerprintContext *ctx, const TypeCast *node, const void *parent, const char *field_name, unsigned int depth) { - _fingerprintString(ctx, "TypeCast"); - if (node->arg != NULL) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->arg, node, "arg", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "arg"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "arg"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->arg, node, "arg", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } // Intentionally ignoring node->location for fingerprinting if (node->typeName != NULL) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->typeName, node, "typeName", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "typeName"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "typeName"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintTypeName(ctx, node->typeName, node, "typeName", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } } @@ -5982,20 +9494,38 @@ _fingerprintTypeCast(FingerprintContext *ctx, const TypeCast *node, const void * static void _fingerprintCollateClause(FingerprintContext *ctx, const CollateClause *node, const void *parent, const char *field_name, unsigned int depth) { - _fingerprintString(ctx, "CollateClause"); - if (node->arg != NULL) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->arg, node, "arg", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "arg"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "arg"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->arg, node, "arg", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } if (node->collname != NULL && node->collname->length > 0) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->collname, node, "collname", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "collname"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "collname"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->collname, node, "collname", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } // Intentionally ignoring node->location for fingerprinting @@ -6004,49 +9534,71 @@ _fingerprintCollateClause(FingerprintContext *ctx, const CollateClause *node, co static void _fingerprintSortBy(FingerprintContext *ctx, const SortBy *node, const void *parent, const char *field_name, unsigned int depth) { - _fingerprintString(ctx, "SortBy"); - // Intentionally ignoring node->location for fingerprinting if (node->node != NULL) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->node, node, "node", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "node"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "node"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->node, node, "node", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } - if (node->sortby_dir != 0) { - char buffer[50]; - sprintf(buffer, "%d", node->sortby_dir); + if (true) { _fingerprintString(ctx, "sortby_dir"); - _fingerprintString(ctx, buffer); + _fingerprintString(ctx, _enumToStringSortByDir(node->sortby_dir)); } - if (node->sortby_nulls != 0) { - char buffer[50]; - sprintf(buffer, "%d", node->sortby_nulls); + if (true) { _fingerprintString(ctx, "sortby_nulls"); - _fingerprintString(ctx, buffer); + _fingerprintString(ctx, _enumToStringSortByNulls(node->sortby_nulls)); } if (node->useOp != NULL && node->useOp->length > 0) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->useOp, node, "useOp", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "useOp"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "useOp"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->useOp, node, "useOp", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } } static void _fingerprintWindowDef(FingerprintContext *ctx, const WindowDef *node, const void *parent, const char *field_name, unsigned int depth) { - _fingerprintString(ctx, "WindowDef"); - if (node->endOffset != NULL) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->endOffset, node, "endOffset", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "endOffset"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "endOffset"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->endOffset, node, "endOffset", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } if (node->frameOptions != 0) { @@ -6064,16 +9616,36 @@ _fingerprintWindowDef(FingerprintContext *ctx, const WindowDef *node, const void } if (node->orderClause != NULL && node->orderClause->length > 0) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->orderClause, node, "orderClause", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "orderClause"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "orderClause"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->orderClause, node, "orderClause", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } if (node->partitionClause != NULL && node->partitionClause->length > 0) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->partitionClause, node, "partitionClause", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "partitionClause"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "partitionClause"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->partitionClause, node, "partitionClause", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } if (node->refname != NULL) { _fingerprintString(ctx, "refname"); @@ -6081,10 +9653,20 @@ _fingerprintWindowDef(FingerprintContext *ctx, const WindowDef *node, const void } if (node->startOffset != NULL) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->startOffset, node, "startOffset", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "startOffset"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "startOffset"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->startOffset, node, "startOffset", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } } @@ -6092,13 +9674,21 @@ _fingerprintWindowDef(FingerprintContext *ctx, const WindowDef *node, const void static void _fingerprintRangeSubselect(FingerprintContext *ctx, const RangeSubselect *node, const void *parent, const char *field_name, unsigned int depth) { - _fingerprintString(ctx, "RangeSubselect"); - if (node->alias != NULL) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->alias, node, "alias", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "alias"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "alias"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintAlias(ctx, node->alias, node, "alias", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } if (node->lateral) { @@ -6107,10 +9697,20 @@ _fingerprintRangeSubselect(FingerprintContext *ctx, const RangeSubselect *node, } if (node->subquery != NULL) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->subquery, node, "subquery", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "subquery"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "subquery"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->subquery, node, "subquery", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } } @@ -6118,26 +9718,54 @@ _fingerprintRangeSubselect(FingerprintContext *ctx, const RangeSubselect *node, static void _fingerprintRangeFunction(FingerprintContext *ctx, const RangeFunction *node, const void *parent, const char *field_name, unsigned int depth) { - _fingerprintString(ctx, "RangeFunction"); - if (node->alias != NULL) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->alias, node, "alias", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "alias"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "alias"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintAlias(ctx, node->alias, node, "alias", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } if (node->coldeflist != NULL && node->coldeflist->length > 0) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->coldeflist, node, "coldeflist", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "coldeflist"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "coldeflist"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->coldeflist, node, "coldeflist", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } if (node->functions != NULL && node->functions->length > 0) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->functions, node, "functions", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "functions"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "functions"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->functions, node, "functions", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } if (node->is_rowsfrom) { _fingerprintString(ctx, "is_rowsfrom"); @@ -6159,34 +9787,72 @@ _fingerprintRangeFunction(FingerprintContext *ctx, const RangeFunction *node, co static void _fingerprintRangeTableSample(FingerprintContext *ctx, const RangeTableSample *node, const void *parent, const char *field_name, unsigned int depth) { - _fingerprintString(ctx, "RangeTableSample"); - if (node->args != NULL && node->args->length > 0) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->args, node, "args", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "args"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "args"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->args, node, "args", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } // Intentionally ignoring node->location for fingerprinting if (node->method != NULL && node->method->length > 0) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->method, node, "method", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "method"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "method"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->method, node, "method", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } if (node->relation != NULL) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->relation, node, "relation", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "relation"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "relation"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->relation, node, "relation", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } if (node->repeatable != NULL) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->repeatable, node, "repeatable", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "repeatable"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "repeatable"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->repeatable, node, "repeatable", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } } @@ -6194,26 +9860,54 @@ _fingerprintRangeTableSample(FingerprintContext *ctx, const RangeTableSample *no static void _fingerprintRangeTableFunc(FingerprintContext *ctx, const RangeTableFunc *node, const void *parent, const char *field_name, unsigned int depth) { - _fingerprintString(ctx, "RangeTableFunc"); - if (node->alias != NULL) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->alias, node, "alias", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "alias"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "alias"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintAlias(ctx, node->alias, node, "alias", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } if (node->columns != NULL && node->columns->length > 0) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->columns, node, "columns", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "columns"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "columns"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->columns, node, "columns", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } if (node->docexpr != NULL) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->docexpr, node, "docexpr", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "docexpr"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "docexpr"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->docexpr, node, "docexpr", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } if (node->lateral) { @@ -6224,16 +9918,36 @@ _fingerprintRangeTableFunc(FingerprintContext *ctx, const RangeTableFunc *node, // Intentionally ignoring node->location for fingerprinting if (node->namespaces != NULL && node->namespaces->length > 0) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->namespaces, node, "namespaces", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "namespaces"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "namespaces"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->namespaces, node, "namespaces", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } if (node->rowexpr != NULL) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->rowexpr, node, "rowexpr", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "rowexpr"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "rowexpr"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->rowexpr, node, "rowexpr", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } } @@ -6241,20 +9955,38 @@ _fingerprintRangeTableFunc(FingerprintContext *ctx, const RangeTableFunc *node, static void _fingerprintRangeTableFuncCol(FingerprintContext *ctx, const RangeTableFuncCol *node, const void *parent, const char *field_name, unsigned int depth) { - _fingerprintString(ctx, "RangeTableFuncCol"); - if (node->coldefexpr != NULL) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->coldefexpr, node, "coldefexpr", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "coldefexpr"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "coldefexpr"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->coldefexpr, node, "coldefexpr", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } if (node->colexpr != NULL) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->colexpr, node, "colexpr", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "colexpr"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "colexpr"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->colexpr, node, "colexpr", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } if (node->colname != NULL) { @@ -6275,10 +10007,20 @@ _fingerprintRangeTableFuncCol(FingerprintContext *ctx, const RangeTableFuncCol * // Intentionally ignoring node->location for fingerprinting if (node->typeName != NULL) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->typeName, node, "typeName", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "typeName"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "typeName"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintTypeName(ctx, node->typeName, node, "typeName", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } } @@ -6286,21 +10028,39 @@ _fingerprintRangeTableFuncCol(FingerprintContext *ctx, const RangeTableFuncCol * static void _fingerprintTypeName(FingerprintContext *ctx, const TypeName *node, const void *parent, const char *field_name, unsigned int depth) { - _fingerprintString(ctx, "TypeName"); - if (node->arrayBounds != NULL && node->arrayBounds->length > 0) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->arrayBounds, node, "arrayBounds", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "arrayBounds"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "arrayBounds"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->arrayBounds, node, "arrayBounds", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } // Intentionally ignoring node->location for fingerprinting if (node->names != NULL && node->names->length > 0) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->names, node, "names", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "names"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "names"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->names, node, "names", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } if (node->pct_type) { _fingerprintString(ctx, "pct_type"); @@ -6327,23 +10087,41 @@ _fingerprintTypeName(FingerprintContext *ctx, const TypeName *node, const void * } if (node->typmods != NULL && node->typmods->length > 0) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->typmods, node, "typmods", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "typmods"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "typmods"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->typmods, node, "typmods", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } } static void _fingerprintColumnDef(FingerprintContext *ctx, const ColumnDef *node, const void *parent, const char *field_name, unsigned int depth) { - _fingerprintString(ctx, "ColumnDef"); - if (node->collClause != NULL) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->collClause, node, "collClause", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "collClause"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "collClause"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintCollateClause(ctx, node->collClause, node, "collClause", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } if (node->collOid != 0) { @@ -6359,30 +10137,83 @@ _fingerprintColumnDef(FingerprintContext *ctx, const ColumnDef *node, const void } if (node->constraints != NULL && node->constraints->length > 0) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->constraints, node, "constraints", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "constraints"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "constraints"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->constraints, node, "constraints", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } if (node->cooked_default != NULL) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->cooked_default, node, "cooked_default", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "cooked_default"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "cooked_default"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->cooked_default, node, "cooked_default", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } if (node->fdwoptions != NULL && node->fdwoptions->length > 0) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->fdwoptions, node, "fdwoptions", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "fdwoptions"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "fdwoptions"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->fdwoptions, node, "fdwoptions", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); + } + if (node->generated != 0) { + char buffer[2] = {node->generated, '\0'}; + _fingerprintString(ctx, "generated"); + _fingerprintString(ctx, buffer); } + if (node->identity != 0) { char buffer[2] = {node->identity, '\0'}; _fingerprintString(ctx, "identity"); _fingerprintString(ctx, buffer); } + if (node->identitySequence != NULL) { + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "identitySequence"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintRangeVar(ctx, node->identitySequence, node, "identitySequence", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); + } + if (node->inhcount != 0) { char buffer[50]; sprintf(buffer, "%d", node->inhcount); @@ -6390,11 +10221,6 @@ _fingerprintColumnDef(FingerprintContext *ctx, const ColumnDef *node, const void _fingerprintString(ctx, buffer); } - if (node->is_from_parent) { - _fingerprintString(ctx, "is_from_parent"); - _fingerprintString(ctx, "true"); - } - if (node->is_from_type) { _fingerprintString(ctx, "is_from_type"); _fingerprintString(ctx, "true"); @@ -6413,10 +10239,20 @@ _fingerprintColumnDef(FingerprintContext *ctx, const ColumnDef *node, const void // Intentionally ignoring node->location for fingerprinting if (node->raw_default != NULL) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->raw_default, node, "raw_default", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "raw_default"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "raw_default"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->raw_default, node, "raw_default", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } if (node->storage != 0) { @@ -6426,10 +10262,20 @@ _fingerprintColumnDef(FingerprintContext *ctx, const ColumnDef *node, const void } if (node->typeName != NULL) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->typeName, node, "typeName", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "typeName"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "typeName"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintTypeName(ctx, node->typeName, node, "typeName", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } } @@ -6437,19 +10283,37 @@ _fingerprintColumnDef(FingerprintContext *ctx, const ColumnDef *node, const void static void _fingerprintIndexElem(FingerprintContext *ctx, const IndexElem *node, const void *parent, const char *field_name, unsigned int depth) { - _fingerprintString(ctx, "IndexElem"); - if (node->collation != NULL && node->collation->length > 0) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->collation, node, "collation", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "collation"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "collation"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->collation, node, "collation", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } if (node->expr != NULL) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->expr, node, "expr", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "expr"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "expr"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->expr, node, "expr", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } if (node->indexcolname != NULL) { @@ -6462,24 +10326,46 @@ _fingerprintIndexElem(FingerprintContext *ctx, const IndexElem *node, const void _fingerprintString(ctx, node->name); } - if (node->nulls_ordering != 0) { - char buffer[50]; - sprintf(buffer, "%d", node->nulls_ordering); + if (true) { _fingerprintString(ctx, "nulls_ordering"); - _fingerprintString(ctx, buffer); + _fingerprintString(ctx, _enumToStringSortByNulls(node->nulls_ordering)); } if (node->opclass != NULL && node->opclass->length > 0) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->opclass, node, "opclass", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "opclass"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "opclass"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->opclass, node, "opclass", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } - if (node->ordering != 0) { - char buffer[50]; - sprintf(buffer, "%d", node->ordering); + if (node->opclassopts != NULL && node->opclassopts->length > 0) { + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "opclassopts"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->opclassopts, node, "opclassopts", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); + } + if (true) { _fingerprintString(ctx, "ordering"); - _fingerprintString(ctx, buffer); + _fingerprintString(ctx, _enumToStringSortByDir(node->ordering)); } } @@ -6487,8 +10373,6 @@ _fingerprintIndexElem(FingerprintContext *ctx, const IndexElem *node, const void static void _fingerprintConstraint(FingerprintContext *ctx, const Constraint *node, const void *parent, const char *field_name, unsigned int depth) { - _fingerprintString(ctx, "Constraint"); - if (node->access_method != NULL) { _fingerprintString(ctx, "access_method"); _fingerprintString(ctx, node->access_method); @@ -6499,11 +10383,9 @@ _fingerprintConstraint(FingerprintContext *ctx, const Constraint *node, const vo _fingerprintString(ctx, node->conname); } - if (node->contype != 0) { - char buffer[50]; - sprintf(buffer, "%d", node->contype); + if (true) { _fingerprintString(ctx, "contype"); - _fingerprintString(ctx, buffer); + _fingerprintString(ctx, _enumToStringConstrType(node->contype)); } if (node->cooked_expr != NULL) { @@ -6517,16 +10399,36 @@ _fingerprintConstraint(FingerprintContext *ctx, const Constraint *node, const vo } if (node->exclusions != NULL && node->exclusions->length > 0) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->exclusions, node, "exclusions", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "exclusions"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "exclusions"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->exclusions, node, "exclusions", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } if (node->fk_attrs != NULL && node->fk_attrs->length > 0) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->fk_attrs, node, "fk_attrs", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "fk_attrs"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "fk_attrs"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->fk_attrs, node, "fk_attrs", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } if (node->fk_del_action != 0) { char buffer[2] = {node->fk_del_action, '\0'}; @@ -6552,6 +10454,22 @@ _fingerprintConstraint(FingerprintContext *ctx, const Constraint *node, const vo _fingerprintString(ctx, buffer); } + if (node->including != NULL && node->including->length > 0) { + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "including"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->including, node, "including", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); + } if (node->indexname != NULL) { _fingerprintString(ctx, "indexname"); _fingerprintString(ctx, node->indexname); @@ -6578,18 +10496,38 @@ _fingerprintConstraint(FingerprintContext *ctx, const Constraint *node, const vo } if (node->keys != NULL && node->keys->length > 0) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->keys, node, "keys", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "keys"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "keys"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->keys, node, "keys", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } // Intentionally ignoring node->location for fingerprinting if (node->old_conpfeqop != NULL && node->old_conpfeqop->length > 0) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->old_conpfeqop, node, "old_conpfeqop", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "old_conpfeqop"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "old_conpfeqop"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->old_conpfeqop, node, "old_conpfeqop", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } if (node->old_pktable_oid != 0) { char buffer[50]; @@ -6599,29 +10537,74 @@ _fingerprintConstraint(FingerprintContext *ctx, const Constraint *node, const vo } if (node->options != NULL && node->options->length > 0) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->options, node, "options", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "options"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "options"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->options, node, "options", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } if (node->pk_attrs != NULL && node->pk_attrs->length > 0) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->pk_attrs, node, "pk_attrs", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "pk_attrs"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "pk_attrs"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->pk_attrs, node, "pk_attrs", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } if (node->pktable != NULL) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->pktable, node, "pktable", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "pktable"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "pktable"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintRangeVar(ctx, node->pktable, node, "pktable", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } if (node->raw_expr != NULL) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->raw_expr, node, "raw_expr", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "raw_expr"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "raw_expr"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->raw_expr, node, "raw_expr", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); + } + + if (node->reset_default_tblspc) { + _fingerprintString(ctx, "reset_default_tblspc"); + _fingerprintString(ctx, "true"); } if (node->skip_validation) { @@ -6630,10 +10613,20 @@ _fingerprintConstraint(FingerprintContext *ctx, const Constraint *node, const vo } if (node->where_clause != NULL) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->where_clause, node, "where_clause", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "where_clause"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "where_clause"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->where_clause, node, "where_clause", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } } @@ -6641,20 +10634,26 @@ _fingerprintConstraint(FingerprintContext *ctx, const Constraint *node, const vo static void _fingerprintDefElem(FingerprintContext *ctx, const DefElem *node, const void *parent, const char *field_name, unsigned int depth) { - _fingerprintString(ctx, "DefElem"); - if (node->arg != NULL) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->arg, node, "arg", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "arg"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "arg"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->arg, node, "arg", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } - if (node->defaction != 0) { - char buffer[50]; - sprintf(buffer, "%d", node->defaction); + if (true) { _fingerprintString(ctx, "defaction"); - _fingerprintString(ctx, buffer); + _fingerprintString(ctx, _enumToStringDefElemAction(node->defaction)); } if (node->defname != NULL) { @@ -6674,13 +10673,21 @@ _fingerprintDefElem(FingerprintContext *ctx, const DefElem *node, const void *pa static void _fingerprintRangeTblEntry(FingerprintContext *ctx, const RangeTblEntry *node, const void *parent, const char *field_name, unsigned int depth) { - _fingerprintString(ctx, "RangeTblEntry"); - if (node->alias != NULL) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->alias, node, "alias", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "alias"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "alias"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintAlias(ctx, node->alias, node, "alias", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } if (node->checkAsUser != 0) { @@ -6691,22 +10698,52 @@ _fingerprintRangeTblEntry(FingerprintContext *ctx, const RangeTblEntry *node, co } if (node->colcollations != NULL && node->colcollations->length > 0) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->colcollations, node, "colcollations", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "colcollations"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "colcollations"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->colcollations, node, "colcollations", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } if (node->coltypes != NULL && node->coltypes->length > 0) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->coltypes, node, "coltypes", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "coltypes"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "coltypes"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->coltypes, node, "coltypes", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } if (node->coltypmods != NULL && node->coltypmods->length > 0) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->coltypmods, node, "coltypmods", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "coltypmods"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "coltypmods"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->coltypmods, node, "coltypmods", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } if (node->ctelevelsup != 0) { char buffer[50]; @@ -6733,10 +10770,35 @@ _fingerprintRangeTblEntry(FingerprintContext *ctx, const RangeTblEntry *node, co } if (node->eref != NULL) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->eref, node, "eref", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "eref"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "eref"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintAlias(ctx, node->eref, node, "eref", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); + } + + if (true) { + int x; + Bitmapset *bms = bms_copy(node->extraUpdatedCols); + + _fingerprintString(ctx, "extraUpdatedCols"); + + while ((x = bms_first_member(bms)) >= 0) { + char buffer[50]; + sprintf(buffer, "%d", x); + _fingerprintString(ctx, buffer); + } + + bms_free(bms); } if (node->funcordinality) { @@ -6745,10 +10807,20 @@ _fingerprintRangeTblEntry(FingerprintContext *ctx, const RangeTblEntry *node, co } if (node->functions != NULL && node->functions->length > 0) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->functions, node, "functions", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "functions"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "functions"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->functions, node, "functions", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } if (node->inFromCl) { _fingerprintString(ctx, "inFromCl"); @@ -6776,18 +10848,65 @@ _fingerprintRangeTblEntry(FingerprintContext *ctx, const RangeTblEntry *node, co } if (node->joinaliasvars != NULL && node->joinaliasvars->length > 0) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->joinaliasvars, node, "joinaliasvars", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "joinaliasvars"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "joinaliasvars"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->joinaliasvars, node, "joinaliasvars", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); + } + if (node->joinleftcols != NULL && node->joinleftcols->length > 0) { + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "joinleftcols"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->joinleftcols, node, "joinleftcols", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } - if (node->jointype != 0) { + if (node->joinmergedcols != 0) { char buffer[50]; - sprintf(buffer, "%d", node->jointype); - _fingerprintString(ctx, "jointype"); + sprintf(buffer, "%d", node->joinmergedcols); + _fingerprintString(ctx, "joinmergedcols"); _fingerprintString(ctx, buffer); } + if (node->joinrightcols != NULL && node->joinrightcols->length > 0) { + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "joinrightcols"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->joinrightcols, node, "joinrightcols", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); + } + if (true) { + _fingerprintString(ctx, "jointype"); + _fingerprintString(ctx, _enumToStringJoinType(node->jointype)); + } + if (node->lateral) { _fingerprintString(ctx, "lateral"); _fingerprintString(ctx, "true"); @@ -6806,6 +10925,13 @@ _fingerprintRangeTblEntry(FingerprintContext *ctx, const RangeTblEntry *node, co _fingerprintString(ctx, buffer); } + if (node->rellockmode != 0) { + char buffer[50]; + sprintf(buffer, "%d", node->rellockmode); + _fingerprintString(ctx, "rellockmode"); + _fingerprintString(ctx, buffer); + } + if (node->requiredPerms != 0) { char buffer[50]; sprintf(buffer, "%d", node->requiredPerms); @@ -6813,18 +10939,26 @@ _fingerprintRangeTblEntry(FingerprintContext *ctx, const RangeTblEntry *node, co _fingerprintString(ctx, buffer); } - if (node->rtekind != 0) { - char buffer[50]; - sprintf(buffer, "%d", node->rtekind); + if (true) { _fingerprintString(ctx, "rtekind"); - _fingerprintString(ctx, buffer); + _fingerprintString(ctx, _enumToStringRTEKind(node->rtekind)); } if (node->securityQuals != NULL && node->securityQuals->length > 0) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->securityQuals, node, "securityQuals", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "securityQuals"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "securityQuals"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->securityQuals, node, "securityQuals", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } if (node->security_barrier) { _fingerprintString(ctx, "security_barrier"); @@ -6852,24 +10986,54 @@ _fingerprintRangeTblEntry(FingerprintContext *ctx, const RangeTblEntry *node, co } if (node->subquery != NULL) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->subquery, node, "subquery", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "subquery"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "subquery"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintQuery(ctx, node->subquery, node, "subquery", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } if (node->tablefunc != NULL) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->tablefunc, node, "tablefunc", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "tablefunc"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "tablefunc"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintTableFunc(ctx, node->tablefunc, node, "tablefunc", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } if (node->tablesample != NULL) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->tablesample, node, "tablesample", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "tablesample"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "tablesample"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintTableSampleClause(ctx, node->tablesample, node, "tablesample", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } if (true) { @@ -6888,23 +11052,41 @@ _fingerprintRangeTblEntry(FingerprintContext *ctx, const RangeTblEntry *node, co } if (node->values_lists != NULL && node->values_lists->length > 0) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->values_lists, node, "values_lists", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "values_lists"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "values_lists"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->values_lists, node, "values_lists", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } } static void _fingerprintRangeTblFunction(FingerprintContext *ctx, const RangeTblFunction *node, const void *parent, const char *field_name, unsigned int depth) { - _fingerprintString(ctx, "RangeTblFunction"); - if (node->funccolcollations != NULL && node->funccolcollations->length > 0) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->funccolcollations, node, "funccolcollations", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "funccolcollations"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "funccolcollations"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->funccolcollations, node, "funccolcollations", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } if (node->funccolcount != 0) { char buffer[50]; @@ -6914,28 +11096,68 @@ _fingerprintRangeTblFunction(FingerprintContext *ctx, const RangeTblFunction *no } if (node->funccolnames != NULL && node->funccolnames->length > 0) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->funccolnames, node, "funccolnames", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "funccolnames"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "funccolnames"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->funccolnames, node, "funccolnames", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } if (node->funccoltypes != NULL && node->funccoltypes->length > 0) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->funccoltypes, node, "funccoltypes", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "funccoltypes"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "funccoltypes"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->funccoltypes, node, "funccoltypes", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } if (node->funccoltypmods != NULL && node->funccoltypmods->length > 0) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->funccoltypmods, node, "funccoltypmods", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "funccoltypmods"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "funccoltypmods"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->funccoltypmods, node, "funccoltypmods", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } if (node->funcexpr != NULL) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->funcexpr, node, "funcexpr", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "funcexpr"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "funcexpr"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->funcexpr, node, "funcexpr", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } if (true) { @@ -6958,19 +11180,37 @@ _fingerprintRangeTblFunction(FingerprintContext *ctx, const RangeTblFunction *no static void _fingerprintTableSampleClause(FingerprintContext *ctx, const TableSampleClause *node, const void *parent, const char *field_name, unsigned int depth) { - _fingerprintString(ctx, "TableSampleClause"); - if (node->args != NULL && node->args->length > 0) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->args, node, "args", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "args"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "args"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->args, node, "args", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } if (node->repeatable != NULL) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->repeatable, node, "repeatable", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "repeatable"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "repeatable"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->repeatable, node, "repeatable", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } if (node->tsmhandler != 0) { @@ -6985,18 +11225,14 @@ _fingerprintTableSampleClause(FingerprintContext *ctx, const TableSampleClause * static void _fingerprintWithCheckOption(FingerprintContext *ctx, const WithCheckOption *node, const void *parent, const char *field_name, unsigned int depth) { - _fingerprintString(ctx, "WithCheckOption"); - if (node->cascaded) { _fingerprintString(ctx, "cascaded"); _fingerprintString(ctx, "true"); } - if (node->kind != 0) { - char buffer[50]; - sprintf(buffer, "%d", node->kind); + if (true) { _fingerprintString(ctx, "kind"); - _fingerprintString(ctx, buffer); + _fingerprintString(ctx, _enumToStringWCOKind(node->kind)); } if (node->polname != NULL) { @@ -7005,10 +11241,20 @@ _fingerprintWithCheckOption(FingerprintContext *ctx, const WithCheckOption *node } if (node->qual != NULL) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->qual, node, "qual", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "qual"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "qual"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->qual, node, "qual", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } if (node->relname != NULL) { @@ -7021,8 +11267,6 @@ _fingerprintWithCheckOption(FingerprintContext *ctx, const WithCheckOption *node static void _fingerprintSortGroupClause(FingerprintContext *ctx, const SortGroupClause *node, const void *parent, const char *field_name, unsigned int depth) { - _fingerprintString(ctx, "SortGroupClause"); - if (node->eqop != 0) { char buffer[50]; sprintf(buffer, "%d", node->eqop); @@ -7059,19 +11303,25 @@ _fingerprintSortGroupClause(FingerprintContext *ctx, const SortGroupClause *node static void _fingerprintGroupingSet(FingerprintContext *ctx, const GroupingSet *node, const void *parent, const char *field_name, unsigned int depth) { - _fingerprintString(ctx, "GroupingSet"); - if (node->content != NULL && node->content->length > 0) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->content, node, "content", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "content"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "content"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->content, node, "content", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } - if (node->kind != 0) { - char buffer[50]; - sprintf(buffer, "%d", node->kind); + if (true) { _fingerprintString(ctx, "kind"); - _fingerprintString(ctx, buffer); + _fingerprintString(ctx, _enumToStringGroupingSetKind(node->kind)); } // Intentionally ignoring node->location for fingerprinting @@ -7081,18 +11331,33 @@ _fingerprintGroupingSet(FingerprintContext *ctx, const GroupingSet *node, const static void _fingerprintWindowClause(FingerprintContext *ctx, const WindowClause *node, const void *parent, const char *field_name, unsigned int depth) { - _fingerprintString(ctx, "WindowClause"); - if (node->copiedOrder) { _fingerprintString(ctx, "copiedOrder"); _fingerprintString(ctx, "true"); } + if (node->endInRangeFunc != 0) { + char buffer[50]; + sprintf(buffer, "%d", node->endInRangeFunc); + _fingerprintString(ctx, "endInRangeFunc"); + _fingerprintString(ctx, buffer); + } + if (node->endOffset != NULL) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->endOffset, node, "endOffset", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "endOffset"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "endOffset"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->endOffset, node, "endOffset", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } if (node->frameOptions != 0) { @@ -7102,33 +11367,87 @@ _fingerprintWindowClause(FingerprintContext *ctx, const WindowClause *node, cons _fingerprintString(ctx, buffer); } + if (node->inRangeAsc) { + _fingerprintString(ctx, "inRangeAsc"); + _fingerprintString(ctx, "true"); + } + + if (node->inRangeColl != 0) { + char buffer[50]; + sprintf(buffer, "%d", node->inRangeColl); + _fingerprintString(ctx, "inRangeColl"); + _fingerprintString(ctx, buffer); + } + + if (node->inRangeNullsFirst) { + _fingerprintString(ctx, "inRangeNullsFirst"); + _fingerprintString(ctx, "true"); + } + if (node->name != NULL) { _fingerprintString(ctx, "name"); _fingerprintString(ctx, node->name); } if (node->orderClause != NULL && node->orderClause->length > 0) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->orderClause, node, "orderClause", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "orderClause"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "orderClause"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->orderClause, node, "orderClause", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } if (node->partitionClause != NULL && node->partitionClause->length > 0) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->partitionClause, node, "partitionClause", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "partitionClause"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "partitionClause"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->partitionClause, node, "partitionClause", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } if (node->refname != NULL) { _fingerprintString(ctx, "refname"); _fingerprintString(ctx, node->refname); } + if (node->startInRangeFunc != 0) { + char buffer[50]; + sprintf(buffer, "%d", node->startInRangeFunc); + _fingerprintString(ctx, "startInRangeFunc"); + _fingerprintString(ctx, buffer); + } + if (node->startOffset != NULL) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->startOffset, node, "startOffset", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "startOffset"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "startOffset"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->startOffset, node, "startOffset", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } if (node->winref != 0) { @@ -7143,37 +11462,63 @@ _fingerprintWindowClause(FingerprintContext *ctx, const WindowClause *node, cons static void _fingerprintObjectWithArgs(FingerprintContext *ctx, const ObjectWithArgs *node, const void *parent, const char *field_name, unsigned int depth) { - _fingerprintString(ctx, "ObjectWithArgs"); - if (node->args_unspecified) { _fingerprintString(ctx, "args_unspecified"); _fingerprintString(ctx, "true"); } if (node->objargs != NULL && node->objargs->length > 0) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->objargs, node, "objargs", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "objargs"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "objargs"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->objargs, node, "objargs", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } if (node->objname != NULL && node->objname->length > 0) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->objname, node, "objname", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "objname"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "objname"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->objname, node, "objname", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } } static void _fingerprintAccessPriv(FingerprintContext *ctx, const AccessPriv *node, const void *parent, const char *field_name, unsigned int depth) { - _fingerprintString(ctx, "AccessPriv"); - if (node->cols != NULL && node->cols->length > 0) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->cols, node, "cols", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "cols"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "cols"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->cols, node, "cols", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } if (node->priv_name != NULL) { _fingerprintString(ctx, "priv_name"); @@ -7185,13 +11530,21 @@ _fingerprintAccessPriv(FingerprintContext *ctx, const AccessPriv *node, const vo static void _fingerprintCreateOpClassItem(FingerprintContext *ctx, const CreateOpClassItem *node, const void *parent, const char *field_name, unsigned int depth) { - _fingerprintString(ctx, "CreateOpClassItem"); - if (node->class_args != NULL && node->class_args->length > 0) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->class_args, node, "class_args", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "class_args"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "class_args"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->class_args, node, "class_args", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } if (node->itemtype != 0) { char buffer[50]; @@ -7201,10 +11554,20 @@ _fingerprintCreateOpClassItem(FingerprintContext *ctx, const CreateOpClassItem * } if (node->name != NULL) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->name, node, "name", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "name"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "name"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintObjectWithArgs(ctx, node->name, node, "name", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } if (node->number != 0) { @@ -7215,16 +11578,36 @@ _fingerprintCreateOpClassItem(FingerprintContext *ctx, const CreateOpClassItem * } if (node->order_family != NULL && node->order_family->length > 0) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->order_family, node, "order_family", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "order_family"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "order_family"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->order_family, node, "order_family", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } if (node->storedtype != NULL) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->storedtype, node, "storedtype", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "storedtype"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "storedtype"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintTypeName(ctx, node->storedtype, node, "storedtype", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } } @@ -7232,8 +11615,6 @@ _fingerprintCreateOpClassItem(FingerprintContext *ctx, const CreateOpClassItem * static void _fingerprintTableLikeClause(FingerprintContext *ctx, const TableLikeClause *node, const void *parent, const char *field_name, unsigned int depth) { - _fingerprintString(ctx, "TableLikeClause"); - if (node->options != 0) { char buffer[50]; sprintf(buffer, "%d", node->options); @@ -7242,10 +11623,20 @@ _fingerprintTableLikeClause(FingerprintContext *ctx, const TableLikeClause *node } if (node->relation != NULL) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->relation, node, "relation", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "relation"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "relation"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintRangeVar(ctx, node->relation, node, "relation", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } } @@ -7253,27 +11644,43 @@ _fingerprintTableLikeClause(FingerprintContext *ctx, const TableLikeClause *node static void _fingerprintFunctionParameter(FingerprintContext *ctx, const FunctionParameter *node, const void *parent, const char *field_name, unsigned int depth) { - _fingerprintString(ctx, "FunctionParameter"); - if (node->argType != NULL) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->argType, node, "argType", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "argType"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "argType"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintTypeName(ctx, node->argType, node, "argType", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } if (node->defexpr != NULL) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->defexpr, node, "defexpr", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "defexpr"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "defexpr"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->defexpr, node, "defexpr", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } - if (node->mode != 0) { - char buffer[50]; - sprintf(buffer, "%d", node->mode); + if (true) { _fingerprintString(ctx, "mode"); - _fingerprintString(ctx, buffer); + _fingerprintString(ctx, _enumToStringFunctionParameterMode(node->mode)); } if (node->name != NULL) { @@ -7286,26 +11693,30 @@ _fingerprintFunctionParameter(FingerprintContext *ctx, const FunctionParameter * static void _fingerprintLockingClause(FingerprintContext *ctx, const LockingClause *node, const void *parent, const char *field_name, unsigned int depth) { - _fingerprintString(ctx, "LockingClause"); - if (node->lockedRels != NULL && node->lockedRels->length > 0) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->lockedRels, node, "lockedRels", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "lockedRels"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "lockedRels"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->lockedRels, node, "lockedRels", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } - if (node->strength != 0) { - char buffer[50]; - sprintf(buffer, "%d", node->strength); + if (true) { _fingerprintString(ctx, "strength"); - _fingerprintString(ctx, buffer); + _fingerprintString(ctx, _enumToStringLockClauseStrength(node->strength)); } - if (node->waitPolicy != 0) { - char buffer[50]; - sprintf(buffer, "%d", node->waitPolicy); + if (true) { _fingerprintString(ctx, "waitPolicy"); - _fingerprintString(ctx, buffer); + _fingerprintString(ctx, _enumToStringLockWaitPolicy(node->waitPolicy)); } } @@ -7313,8 +11724,6 @@ _fingerprintLockingClause(FingerprintContext *ctx, const LockingClause *node, co static void _fingerprintRowMarkClause(FingerprintContext *ctx, const RowMarkClause *node, const void *parent, const char *field_name, unsigned int depth) { - _fingerprintString(ctx, "RowMarkClause"); - if (node->pushedDown) { _fingerprintString(ctx, "pushedDown"); _fingerprintString(ctx, "true"); @@ -7327,18 +11736,14 @@ _fingerprintRowMarkClause(FingerprintContext *ctx, const RowMarkClause *node, co _fingerprintString(ctx, buffer); } - if (node->strength != 0) { - char buffer[50]; - sprintf(buffer, "%d", node->strength); + if (true) { _fingerprintString(ctx, "strength"); - _fingerprintString(ctx, buffer); + _fingerprintString(ctx, _enumToStringLockClauseStrength(node->strength)); } - if (node->waitPolicy != 0) { - char buffer[50]; - sprintf(buffer, "%d", node->waitPolicy); + if (true) { _fingerprintString(ctx, "waitPolicy"); - _fingerprintString(ctx, buffer); + _fingerprintString(ctx, _enumToStringLockWaitPolicy(node->waitPolicy)); } } @@ -7346,29 +11751,45 @@ _fingerprintRowMarkClause(FingerprintContext *ctx, const RowMarkClause *node, co static void _fingerprintXmlSerialize(FingerprintContext *ctx, const XmlSerialize *node, const void *parent, const char *field_name, unsigned int depth) { - _fingerprintString(ctx, "XmlSerialize"); - if (node->expr != NULL) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->expr, node, "expr", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "expr"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "expr"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->expr, node, "expr", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } // Intentionally ignoring node->location for fingerprinting if (node->typeName != NULL) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->typeName, node, "typeName", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "typeName"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "typeName"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintTypeName(ctx, node->typeName, node, "typeName", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } - if (node->xmloption != 0) { - char buffer[50]; - sprintf(buffer, "%d", node->xmloption); + if (true) { _fingerprintString(ctx, "xmloption"); - _fingerprintString(ctx, buffer); + _fingerprintString(ctx, _enumToStringXmlOptionType(node->xmloption)); } } @@ -7376,13 +11797,21 @@ _fingerprintXmlSerialize(FingerprintContext *ctx, const XmlSerialize *node, cons static void _fingerprintWithClause(FingerprintContext *ctx, const WithClause *node, const void *parent, const char *field_name, unsigned int depth) { - _fingerprintString(ctx, "WithClause"); - if (node->ctes != NULL && node->ctes->length > 0) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->ctes, node, "ctes", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "ctes"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "ctes"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->ctes, node, "ctes", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } // Intentionally ignoring node->location for fingerprinting @@ -7396,26 +11825,44 @@ _fingerprintWithClause(FingerprintContext *ctx, const WithClause *node, const vo static void _fingerprintInferClause(FingerprintContext *ctx, const InferClause *node, const void *parent, const char *field_name, unsigned int depth) { - _fingerprintString(ctx, "InferClause"); - if (node->conname != NULL) { _fingerprintString(ctx, "conname"); _fingerprintString(ctx, node->conname); } if (node->indexElems != NULL && node->indexElems->length > 0) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->indexElems, node, "indexElems", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "indexElems"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "indexElems"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->indexElems, node, "indexElems", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } // Intentionally ignoring node->location for fingerprinting if (node->whereClause != NULL) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->whereClause, node, "whereClause", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "whereClause"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "whereClause"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->whereClause, node, "whereClause", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } } @@ -7423,35 +11870,61 @@ _fingerprintInferClause(FingerprintContext *ctx, const InferClause *node, const static void _fingerprintOnConflictClause(FingerprintContext *ctx, const OnConflictClause *node, const void *parent, const char *field_name, unsigned int depth) { - _fingerprintString(ctx, "OnConflictClause"); - - if (node->action != 0) { - char buffer[50]; - sprintf(buffer, "%d", node->action); + if (true) { _fingerprintString(ctx, "action"); - _fingerprintString(ctx, buffer); + _fingerprintString(ctx, _enumToStringOnConflictAction(node->action)); } if (node->infer != NULL) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->infer, node, "infer", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "infer"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "infer"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintInferClause(ctx, node->infer, node, "infer", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } // Intentionally ignoring node->location for fingerprinting if (node->targetList != NULL && node->targetList->length > 0) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->targetList, node, "targetList", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "targetList"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "targetList"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->targetList, node, "targetList", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } if (node->whereClause != NULL) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->whereClause, node, "whereClause", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "whereClause"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "whereClause"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->whereClause, node, "whereClause", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } } @@ -7459,48 +11932,111 @@ _fingerprintOnConflictClause(FingerprintContext *ctx, const OnConflictClause *no static void _fingerprintCommonTableExpr(FingerprintContext *ctx, const CommonTableExpr *node, const void *parent, const char *field_name, unsigned int depth) { - _fingerprintString(ctx, "CommonTableExpr"); - if (node->aliascolnames != NULL && node->aliascolnames->length > 0) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->aliascolnames, node, "aliascolnames", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "aliascolnames"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "aliascolnames"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->aliascolnames, node, "aliascolnames", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } if (node->ctecolcollations != NULL && node->ctecolcollations->length > 0) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->ctecolcollations, node, "ctecolcollations", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "ctecolcollations"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "ctecolcollations"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->ctecolcollations, node, "ctecolcollations", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } if (node->ctecolnames != NULL && node->ctecolnames->length > 0) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->ctecolnames, node, "ctecolnames", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "ctecolnames"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "ctecolnames"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->ctecolnames, node, "ctecolnames", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } if (node->ctecoltypes != NULL && node->ctecoltypes->length > 0) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->ctecoltypes, node, "ctecoltypes", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "ctecoltypes"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "ctecoltypes"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->ctecoltypes, node, "ctecoltypes", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } if (node->ctecoltypmods != NULL && node->ctecoltypmods->length > 0) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->ctecoltypmods, node, "ctecoltypmods", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "ctecoltypmods"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "ctecoltypmods"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->ctecoltypmods, node, "ctecoltypmods", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); + } + if (true) { + _fingerprintString(ctx, "ctematerialized"); + _fingerprintString(ctx, _enumToStringCTEMaterialize(node->ctematerialized)); } + if (node->ctename != NULL) { _fingerprintString(ctx, "ctename"); _fingerprintString(ctx, node->ctename); } if (node->ctequery != NULL) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->ctequery, node, "ctequery", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "ctequery"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "ctequery"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->ctequery, node, "ctequery", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } if (node->cterecursive) { @@ -7522,8 +12058,6 @@ _fingerprintCommonTableExpr(FingerprintContext *ctx, const CommonTableExpr *node static void _fingerprintRoleSpec(FingerprintContext *ctx, const RoleSpec *node, const void *parent, const char *field_name, unsigned int depth) { - _fingerprintString(ctx, "RoleSpec"); - // Intentionally ignoring node->location for fingerprinting if (node->rolename != NULL) { @@ -7531,11 +12065,9 @@ _fingerprintRoleSpec(FingerprintContext *ctx, const RoleSpec *node, const void * _fingerprintString(ctx, node->rolename); } - if (node->roletype != 0) { - char buffer[50]; - sprintf(buffer, "%d", node->roletype); + if (true) { _fingerprintString(ctx, "roletype"); - _fingerprintString(ctx, buffer); + _fingerprintString(ctx, _enumToStringRoleSpecType(node->roletype)); } } @@ -7543,8 +12075,6 @@ _fingerprintRoleSpec(FingerprintContext *ctx, const RoleSpec *node, const void * static void _fingerprintTriggerTransition(FingerprintContext *ctx, const TriggerTransition *node, const void *parent, const char *field_name, unsigned int depth) { - _fingerprintString(ctx, "TriggerTransition"); - if (node->isNew) { _fingerprintString(ctx, "isNew"); _fingerprintString(ctx, "true"); @@ -7565,19 +12095,37 @@ _fingerprintTriggerTransition(FingerprintContext *ctx, const TriggerTransition * static void _fingerprintPartitionElem(FingerprintContext *ctx, const PartitionElem *node, const void *parent, const char *field_name, unsigned int depth) { - _fingerprintString(ctx, "PartitionElem"); - if (node->collation != NULL && node->collation->length > 0) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->collation, node, "collation", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "collation"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "collation"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->collation, node, "collation", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } if (node->expr != NULL) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->expr, node, "expr", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "expr"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "expr"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->expr, node, "expr", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } // Intentionally ignoring node->location for fingerprinting @@ -7588,25 +12136,43 @@ _fingerprintPartitionElem(FingerprintContext *ctx, const PartitionElem *node, co } if (node->opclass != NULL && node->opclass->length > 0) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->opclass, node, "opclass", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "opclass"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "opclass"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->opclass, node, "opclass", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } } static void _fingerprintPartitionSpec(FingerprintContext *ctx, const PartitionSpec *node, const void *parent, const char *field_name, unsigned int depth) { - _fingerprintString(ctx, "PartitionSpec"); - // Intentionally ignoring node->location for fingerprinting if (node->partParams != NULL && node->partParams->length > 0) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->partParams, node, "partParams", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "partParams"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "partParams"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->partParams, node, "partParams", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } if (node->strategy != NULL) { _fingerprintString(ctx, "strategy"); @@ -7618,22 +12184,59 @@ _fingerprintPartitionSpec(FingerprintContext *ctx, const PartitionSpec *node, co static void _fingerprintPartitionBoundSpec(FingerprintContext *ctx, const PartitionBoundSpec *node, const void *parent, const char *field_name, unsigned int depth) { - _fingerprintString(ctx, "PartitionBoundSpec"); + if (node->is_default) { + _fingerprintString(ctx, "is_default"); + _fingerprintString(ctx, "true"); + } if (node->listdatums != NULL && node->listdatums->length > 0) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->listdatums, node, "listdatums", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "listdatums"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "listdatums"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->listdatums, node, "listdatums", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } // Intentionally ignoring node->location for fingerprinting if (node->lowerdatums != NULL && node->lowerdatums->length > 0) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->lowerdatums, node, "lowerdatums", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "lowerdatums"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "lowerdatums"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->lowerdatums, node, "lowerdatums", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); + } + if (node->modulus != 0) { + char buffer[50]; + sprintf(buffer, "%d", node->modulus); + _fingerprintString(ctx, "modulus"); + _fingerprintString(ctx, buffer); + } + + if (node->remainder != 0) { + char buffer[50]; + sprintf(buffer, "%d", node->remainder); + _fingerprintString(ctx, "remainder"); + _fingerprintString(ctx, buffer); } + if (node->strategy != 0) { char buffer[2] = {node->strategy, '\0'}; _fingerprintString(ctx, "strategy"); @@ -7641,32 +12244,48 @@ _fingerprintPartitionBoundSpec(FingerprintContext *ctx, const PartitionBoundSpec } if (node->upperdatums != NULL && node->upperdatums->length > 0) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->upperdatums, node, "upperdatums", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "upperdatums"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "upperdatums"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->upperdatums, node, "upperdatums", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } } static void _fingerprintPartitionRangeDatum(FingerprintContext *ctx, const PartitionRangeDatum *node, const void *parent, const char *field_name, unsigned int depth) { - _fingerprintString(ctx, "PartitionRangeDatum"); - - if (node->kind != 0) { - char buffer[50]; - sprintf(buffer, "%d", node->kind); + if (true) { _fingerprintString(ctx, "kind"); - _fingerprintString(ctx, buffer); + _fingerprintString(ctx, _enumToStringPartitionRangeDatumKind(node->kind)); } // Intentionally ignoring node->location for fingerprinting if (node->value != NULL) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->value, node, "value", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "value"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "value"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->value, node, "value", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } } @@ -7674,28 +12293,94 @@ _fingerprintPartitionRangeDatum(FingerprintContext *ctx, const PartitionRangeDat static void _fingerprintPartitionCmd(FingerprintContext *ctx, const PartitionCmd *node, const void *parent, const char *field_name, unsigned int depth) { - _fingerprintString(ctx, "PartitionCmd"); - if (node->bound != NULL) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->bound, node, "bound", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "bound"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "bound"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintPartitionBoundSpec(ctx, node->bound, node, "bound", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); } if (node->name != NULL) { - FingerprintContext subCtx; - _fingerprintInitForTokens(&subCtx); - _fingerprintNode(&subCtx, node->name, node, "name", depth + 1); - _fingerprintCopyTokens(&subCtx, ctx, "name"); + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "name"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintRangeVar(ctx, node->name, node, "name", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); + } + +} + +static void +_fingerprintVacuumRelation(FingerprintContext *ctx, const VacuumRelation *node, const void *parent, const char *field_name, unsigned int depth) +{ + if (node->oid != 0) { + char buffer[50]; + sprintf(buffer, "%d", node->oid); + _fingerprintString(ctx, "oid"); + _fingerprintString(ctx, buffer); } + if (node->relation != NULL) { + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "relation"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintRangeVar(ctx, node->relation, node, "relation", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); + } + + if (node->va_cols != NULL && node->va_cols->length > 0) { + XXH3_state_t* prev = XXH3_createState(); + XXH64_hash_t hash; + + XXH3_copyState(prev, ctx->xxh_state); + _fingerprintString(ctx, "va_cols"); + + hash = XXH3_64bits_digest(ctx->xxh_state); + _fingerprintNode(ctx, node->va_cols, node, "va_cols", depth + 1); + if (hash == XXH3_64bits_digest(ctx->xxh_state)) { + XXH3_copyState(ctx->xxh_state, prev); + if (ctx->write_tokens) + dlist_delete(dlist_tail_node(&ctx->tokens)); + } + XXH3_freeState(prev); + } } static void _fingerprintInlineCodeBlock(FingerprintContext *ctx, const InlineCodeBlock *node, const void *parent, const char *field_name, unsigned int depth) { - _fingerprintString(ctx, "InlineCodeBlock"); + if (node->atomic) { + _fingerprintString(ctx, "atomic"); + _fingerprintString(ctx, "true"); + } if (node->langIsTrusted) { _fingerprintString(ctx, "langIsTrusted"); @@ -7716,3 +12401,13 @@ _fingerprintInlineCodeBlock(FingerprintContext *ctx, const InlineCodeBlock *node } +static void +_fingerprintCallContext(FingerprintContext *ctx, const CallContext *node, const void *parent, const char *field_name, unsigned int depth) +{ + if (node->atomic) { + _fingerprintString(ctx, "atomic"); + _fingerprintString(ctx, "true"); + } + +} + diff --git a/parser/include/pg_query_json_conds.c b/parser/include/pg_query_json_conds.c deleted file mode 100644 index 6afca9e4..00000000 --- a/parser/include/pg_query_json_conds.c +++ /dev/null @@ -1,642 +0,0 @@ -case T_Alias: - _outAlias(str, obj); - break; -case T_RangeVar: - _outRangeVar(str, obj); - break; -case T_TableFunc: - _outTableFunc(str, obj); - break; -case T_Var: - _outVar(str, obj); - break; -case T_Param: - _outParam(str, obj); - break; -case T_Aggref: - _outAggref(str, obj); - break; -case T_GroupingFunc: - _outGroupingFunc(str, obj); - break; -case T_WindowFunc: - _outWindowFunc(str, obj); - break; -case T_ArrayRef: - _outArrayRef(str, obj); - break; -case T_FuncExpr: - _outFuncExpr(str, obj); - break; -case T_NamedArgExpr: - _outNamedArgExpr(str, obj); - break; -case T_OpExpr: - _outOpExpr(str, obj); - break; -case T_DistinctExpr: - _outDistinctExpr(str, obj); - break; -case T_NullIfExpr: - _outNullIfExpr(str, obj); - break; -case T_ScalarArrayOpExpr: - _outScalarArrayOpExpr(str, obj); - break; -case T_BoolExpr: - _outBoolExpr(str, obj); - break; -case T_SubLink: - _outSubLink(str, obj); - break; -case T_SubPlan: - _outSubPlan(str, obj); - break; -case T_AlternativeSubPlan: - _outAlternativeSubPlan(str, obj); - break; -case T_FieldSelect: - _outFieldSelect(str, obj); - break; -case T_FieldStore: - _outFieldStore(str, obj); - break; -case T_RelabelType: - _outRelabelType(str, obj); - break; -case T_CoerceViaIO: - _outCoerceViaIO(str, obj); - break; -case T_ArrayCoerceExpr: - _outArrayCoerceExpr(str, obj); - break; -case T_ConvertRowtypeExpr: - _outConvertRowtypeExpr(str, obj); - break; -case T_CollateExpr: - _outCollateExpr(str, obj); - break; -case T_CaseExpr: - _outCaseExpr(str, obj); - break; -case T_CaseWhen: - _outCaseWhen(str, obj); - break; -case T_CaseTestExpr: - _outCaseTestExpr(str, obj); - break; -case T_ArrayExpr: - _outArrayExpr(str, obj); - break; -case T_RowExpr: - _outRowExpr(str, obj); - break; -case T_RowCompareExpr: - _outRowCompareExpr(str, obj); - break; -case T_CoalesceExpr: - _outCoalesceExpr(str, obj); - break; -case T_MinMaxExpr: - _outMinMaxExpr(str, obj); - break; -case T_SQLValueFunction: - _outSQLValueFunction(str, obj); - break; -case T_XmlExpr: - _outXmlExpr(str, obj); - break; -case T_NullTest: - _outNullTest(str, obj); - break; -case T_BooleanTest: - _outBooleanTest(str, obj); - break; -case T_CoerceToDomain: - _outCoerceToDomain(str, obj); - break; -case T_CoerceToDomainValue: - _outCoerceToDomainValue(str, obj); - break; -case T_SetToDefault: - _outSetToDefault(str, obj); - break; -case T_CurrentOfExpr: - _outCurrentOfExpr(str, obj); - break; -case T_NextValueExpr: - _outNextValueExpr(str, obj); - break; -case T_InferenceElem: - _outInferenceElem(str, obj); - break; -case T_TargetEntry: - _outTargetEntry(str, obj); - break; -case T_RangeTblRef: - _outRangeTblRef(str, obj); - break; -case T_JoinExpr: - _outJoinExpr(str, obj); - break; -case T_FromExpr: - _outFromExpr(str, obj); - break; -case T_OnConflictExpr: - _outOnConflictExpr(str, obj); - break; -case T_IntoClause: - _outIntoClause(str, obj); - break; -case T_RawStmt: - _outRawStmt(str, obj); - break; -case T_Query: - _outQuery(str, obj); - break; -case T_InsertStmt: - _outInsertStmt(str, obj); - break; -case T_DeleteStmt: - _outDeleteStmt(str, obj); - break; -case T_UpdateStmt: - _outUpdateStmt(str, obj); - break; -case T_SelectStmt: - _outSelectStmt(str, obj); - break; -case T_AlterTableStmt: - _outAlterTableStmt(str, obj); - break; -case T_AlterTableCmd: - _outAlterTableCmd(str, obj); - break; -case T_AlterDomainStmt: - _outAlterDomainStmt(str, obj); - break; -case T_SetOperationStmt: - _outSetOperationStmt(str, obj); - break; -case T_GrantStmt: - _outGrantStmt(str, obj); - break; -case T_GrantRoleStmt: - _outGrantRoleStmt(str, obj); - break; -case T_AlterDefaultPrivilegesStmt: - _outAlterDefaultPrivilegesStmt(str, obj); - break; -case T_ClosePortalStmt: - _outClosePortalStmt(str, obj); - break; -case T_ClusterStmt: - _outClusterStmt(str, obj); - break; -case T_CopyStmt: - _outCopyStmt(str, obj); - break; -case T_CreateStmt: - _outCreateStmt(str, obj); - break; -case T_DefineStmt: - _outDefineStmt(str, obj); - break; -case T_DropStmt: - _outDropStmt(str, obj); - break; -case T_TruncateStmt: - _outTruncateStmt(str, obj); - break; -case T_CommentStmt: - _outCommentStmt(str, obj); - break; -case T_FetchStmt: - _outFetchStmt(str, obj); - break; -case T_IndexStmt: - _outIndexStmt(str, obj); - break; -case T_CreateFunctionStmt: - _outCreateFunctionStmt(str, obj); - break; -case T_AlterFunctionStmt: - _outAlterFunctionStmt(str, obj); - break; -case T_DoStmt: - _outDoStmt(str, obj); - break; -case T_RenameStmt: - _outRenameStmt(str, obj); - break; -case T_RuleStmt: - _outRuleStmt(str, obj); - break; -case T_NotifyStmt: - _outNotifyStmt(str, obj); - break; -case T_ListenStmt: - _outListenStmt(str, obj); - break; -case T_UnlistenStmt: - _outUnlistenStmt(str, obj); - break; -case T_TransactionStmt: - _outTransactionStmt(str, obj); - break; -case T_ViewStmt: - _outViewStmt(str, obj); - break; -case T_LoadStmt: - _outLoadStmt(str, obj); - break; -case T_CreateDomainStmt: - _outCreateDomainStmt(str, obj); - break; -case T_CreatedbStmt: - _outCreatedbStmt(str, obj); - break; -case T_DropdbStmt: - _outDropdbStmt(str, obj); - break; -case T_VacuumStmt: - _outVacuumStmt(str, obj); - break; -case T_ExplainStmt: - _outExplainStmt(str, obj); - break; -case T_CreateTableAsStmt: - _outCreateTableAsStmt(str, obj); - break; -case T_CreateSeqStmt: - _outCreateSeqStmt(str, obj); - break; -case T_AlterSeqStmt: - _outAlterSeqStmt(str, obj); - break; -case T_VariableSetStmt: - _outVariableSetStmt(str, obj); - break; -case T_VariableShowStmt: - _outVariableShowStmt(str, obj); - break; -case T_DiscardStmt: - _outDiscardStmt(str, obj); - break; -case T_CreateTrigStmt: - _outCreateTrigStmt(str, obj); - break; -case T_CreatePLangStmt: - _outCreatePLangStmt(str, obj); - break; -case T_CreateRoleStmt: - _outCreateRoleStmt(str, obj); - break; -case T_AlterRoleStmt: - _outAlterRoleStmt(str, obj); - break; -case T_DropRoleStmt: - _outDropRoleStmt(str, obj); - break; -case T_LockStmt: - _outLockStmt(str, obj); - break; -case T_ConstraintsSetStmt: - _outConstraintsSetStmt(str, obj); - break; -case T_ReindexStmt: - _outReindexStmt(str, obj); - break; -case T_CheckPointStmt: - _outCheckPointStmt(str, obj); - break; -case T_CreateSchemaStmt: - _outCreateSchemaStmt(str, obj); - break; -case T_AlterDatabaseStmt: - _outAlterDatabaseStmt(str, obj); - break; -case T_AlterDatabaseSetStmt: - _outAlterDatabaseSetStmt(str, obj); - break; -case T_AlterRoleSetStmt: - _outAlterRoleSetStmt(str, obj); - break; -case T_CreateConversionStmt: - _outCreateConversionStmt(str, obj); - break; -case T_CreateCastStmt: - _outCreateCastStmt(str, obj); - break; -case T_CreateOpClassStmt: - _outCreateOpClassStmt(str, obj); - break; -case T_CreateOpFamilyStmt: - _outCreateOpFamilyStmt(str, obj); - break; -case T_AlterOpFamilyStmt: - _outAlterOpFamilyStmt(str, obj); - break; -case T_PrepareStmt: - _outPrepareStmt(str, obj); - break; -case T_ExecuteStmt: - _outExecuteStmt(str, obj); - break; -case T_DeallocateStmt: - _outDeallocateStmt(str, obj); - break; -case T_DeclareCursorStmt: - _outDeclareCursorStmt(str, obj); - break; -case T_CreateTableSpaceStmt: - _outCreateTableSpaceStmt(str, obj); - break; -case T_DropTableSpaceStmt: - _outDropTableSpaceStmt(str, obj); - break; -case T_AlterObjectDependsStmt: - _outAlterObjectDependsStmt(str, obj); - break; -case T_AlterObjectSchemaStmt: - _outAlterObjectSchemaStmt(str, obj); - break; -case T_AlterOwnerStmt: - _outAlterOwnerStmt(str, obj); - break; -case T_AlterOperatorStmt: - _outAlterOperatorStmt(str, obj); - break; -case T_DropOwnedStmt: - _outDropOwnedStmt(str, obj); - break; -case T_ReassignOwnedStmt: - _outReassignOwnedStmt(str, obj); - break; -case T_CompositeTypeStmt: - _outCompositeTypeStmt(str, obj); - break; -case T_CreateEnumStmt: - _outCreateEnumStmt(str, obj); - break; -case T_CreateRangeStmt: - _outCreateRangeStmt(str, obj); - break; -case T_AlterEnumStmt: - _outAlterEnumStmt(str, obj); - break; -case T_AlterTSDictionaryStmt: - _outAlterTSDictionaryStmt(str, obj); - break; -case T_AlterTSConfigurationStmt: - _outAlterTSConfigurationStmt(str, obj); - break; -case T_CreateFdwStmt: - _outCreateFdwStmt(str, obj); - break; -case T_AlterFdwStmt: - _outAlterFdwStmt(str, obj); - break; -case T_CreateForeignServerStmt: - _outCreateForeignServerStmt(str, obj); - break; -case T_AlterForeignServerStmt: - _outAlterForeignServerStmt(str, obj); - break; -case T_CreateUserMappingStmt: - _outCreateUserMappingStmt(str, obj); - break; -case T_AlterUserMappingStmt: - _outAlterUserMappingStmt(str, obj); - break; -case T_DropUserMappingStmt: - _outDropUserMappingStmt(str, obj); - break; -case T_AlterTableSpaceOptionsStmt: - _outAlterTableSpaceOptionsStmt(str, obj); - break; -case T_AlterTableMoveAllStmt: - _outAlterTableMoveAllStmt(str, obj); - break; -case T_SecLabelStmt: - _outSecLabelStmt(str, obj); - break; -case T_CreateForeignTableStmt: - _outCreateForeignTableStmt(str, obj); - break; -case T_ImportForeignSchemaStmt: - _outImportForeignSchemaStmt(str, obj); - break; -case T_CreateExtensionStmt: - _outCreateExtensionStmt(str, obj); - break; -case T_AlterExtensionStmt: - _outAlterExtensionStmt(str, obj); - break; -case T_AlterExtensionContentsStmt: - _outAlterExtensionContentsStmt(str, obj); - break; -case T_CreateEventTrigStmt: - _outCreateEventTrigStmt(str, obj); - break; -case T_AlterEventTrigStmt: - _outAlterEventTrigStmt(str, obj); - break; -case T_RefreshMatViewStmt: - _outRefreshMatViewStmt(str, obj); - break; -case T_ReplicaIdentityStmt: - _outReplicaIdentityStmt(str, obj); - break; -case T_AlterSystemStmt: - _outAlterSystemStmt(str, obj); - break; -case T_CreatePolicyStmt: - _outCreatePolicyStmt(str, obj); - break; -case T_AlterPolicyStmt: - _outAlterPolicyStmt(str, obj); - break; -case T_CreateTransformStmt: - _outCreateTransformStmt(str, obj); - break; -case T_CreateAmStmt: - _outCreateAmStmt(str, obj); - break; -case T_CreatePublicationStmt: - _outCreatePublicationStmt(str, obj); - break; -case T_AlterPublicationStmt: - _outAlterPublicationStmt(str, obj); - break; -case T_CreateSubscriptionStmt: - _outCreateSubscriptionStmt(str, obj); - break; -case T_AlterSubscriptionStmt: - _outAlterSubscriptionStmt(str, obj); - break; -case T_DropSubscriptionStmt: - _outDropSubscriptionStmt(str, obj); - break; -case T_CreateStatsStmt: - _outCreateStatsStmt(str, obj); - break; -case T_AlterCollationStmt: - _outAlterCollationStmt(str, obj); - break; -case T_A_Expr: - _outA_Expr(str, obj); - break; -case T_ColumnRef: - _outColumnRef(str, obj); - break; -case T_ParamRef: - _outParamRef(str, obj); - break; -case T_A_Const: - _outA_Const(str, obj); - break; -case T_FuncCall: - _outFuncCall(str, obj); - break; -case T_A_Star: - _outA_Star(str, obj); - break; -case T_A_Indices: - _outA_Indices(str, obj); - break; -case T_A_Indirection: - _outA_Indirection(str, obj); - break; -case T_A_ArrayExpr: - _outA_ArrayExpr(str, obj); - break; -case T_ResTarget: - _outResTarget(str, obj); - break; -case T_MultiAssignRef: - _outMultiAssignRef(str, obj); - break; -case T_TypeCast: - _outTypeCast(str, obj); - break; -case T_CollateClause: - _outCollateClause(str, obj); - break; -case T_SortBy: - _outSortBy(str, obj); - break; -case T_WindowDef: - _outWindowDef(str, obj); - break; -case T_RangeSubselect: - _outRangeSubselect(str, obj); - break; -case T_RangeFunction: - _outRangeFunction(str, obj); - break; -case T_RangeTableSample: - _outRangeTableSample(str, obj); - break; -case T_RangeTableFunc: - _outRangeTableFunc(str, obj); - break; -case T_RangeTableFuncCol: - _outRangeTableFuncCol(str, obj); - break; -case T_TypeName: - _outTypeName(str, obj); - break; -case T_ColumnDef: - _outColumnDef(str, obj); - break; -case T_IndexElem: - _outIndexElem(str, obj); - break; -case T_Constraint: - _outConstraint(str, obj); - break; -case T_DefElem: - _outDefElem(str, obj); - break; -case T_RangeTblEntry: - _outRangeTblEntry(str, obj); - break; -case T_RangeTblFunction: - _outRangeTblFunction(str, obj); - break; -case T_TableSampleClause: - _outTableSampleClause(str, obj); - break; -case T_WithCheckOption: - _outWithCheckOption(str, obj); - break; -case T_SortGroupClause: - _outSortGroupClause(str, obj); - break; -case T_GroupingSet: - _outGroupingSet(str, obj); - break; -case T_WindowClause: - _outWindowClause(str, obj); - break; -case T_ObjectWithArgs: - _outObjectWithArgs(str, obj); - break; -case T_AccessPriv: - _outAccessPriv(str, obj); - break; -case T_CreateOpClassItem: - _outCreateOpClassItem(str, obj); - break; -case T_TableLikeClause: - _outTableLikeClause(str, obj); - break; -case T_FunctionParameter: - _outFunctionParameter(str, obj); - break; -case T_LockingClause: - _outLockingClause(str, obj); - break; -case T_RowMarkClause: - _outRowMarkClause(str, obj); - break; -case T_XmlSerialize: - _outXmlSerialize(str, obj); - break; -case T_WithClause: - _outWithClause(str, obj); - break; -case T_InferClause: - _outInferClause(str, obj); - break; -case T_OnConflictClause: - _outOnConflictClause(str, obj); - break; -case T_CommonTableExpr: - _outCommonTableExpr(str, obj); - break; -case T_RoleSpec: - _outRoleSpec(str, obj); - break; -case T_TriggerTransition: - _outTriggerTransition(str, obj); - break; -case T_PartitionElem: - _outPartitionElem(str, obj); - break; -case T_PartitionSpec: - _outPartitionSpec(str, obj); - break; -case T_PartitionBoundSpec: - _outPartitionBoundSpec(str, obj); - break; -case T_PartitionRangeDatum: - _outPartitionRangeDatum(str, obj); - break; -case T_PartitionCmd: - _outPartitionCmd(str, obj); - break; -case T_InlineCodeBlock: - _outInlineCodeBlock(str, obj); - break; diff --git a/parser/include/pg_query_json_defs.c b/parser/include/pg_query_json_defs.c deleted file mode 100644 index 7e59b140..00000000 --- a/parser/include/pg_query_json_defs.c +++ /dev/null @@ -1,2563 +0,0 @@ -static void -_outAlias(StringInfo str, const Alias *node) -{ - WRITE_NODE_TYPE("Alias"); - - WRITE_STRING_FIELD(aliasname); - WRITE_NODE_PTR_FIELD(colnames); -} - -static void -_outRangeVar(StringInfo str, const RangeVar *node) -{ - WRITE_NODE_TYPE("RangeVar"); - - WRITE_STRING_FIELD(schemaname); - WRITE_STRING_FIELD(relname); - WRITE_BOOL_FIELD(inh); - WRITE_CHAR_FIELD(relpersistence); - WRITE_NODE_PTR_FIELD(alias); - WRITE_INT_FIELD(location); -} - -static void -_outTableFunc(StringInfo str, const TableFunc *node) -{ - WRITE_NODE_TYPE("TableFunc"); - - WRITE_NODE_PTR_FIELD(ns_uris); - WRITE_NODE_PTR_FIELD(ns_names); - WRITE_NODE_PTR_FIELD(docexpr); - WRITE_NODE_PTR_FIELD(rowexpr); - WRITE_NODE_PTR_FIELD(colnames); - WRITE_NODE_PTR_FIELD(coltypes); - WRITE_NODE_PTR_FIELD(coltypmods); - WRITE_NODE_PTR_FIELD(colcollations); - WRITE_NODE_PTR_FIELD(colexprs); - WRITE_NODE_PTR_FIELD(coldefexprs); - WRITE_BITMAPSET_FIELD(notnulls); - WRITE_INT_FIELD(ordinalitycol); - WRITE_INT_FIELD(location); -} - -static void -_outVar(StringInfo str, const Var *node) -{ - WRITE_NODE_TYPE("Var"); - - WRITE_UINT_FIELD(varno); - WRITE_INT_FIELD(varattno); - WRITE_UINT_FIELD(vartype); - WRITE_INT_FIELD(vartypmod); - WRITE_UINT_FIELD(varcollid); - WRITE_UINT_FIELD(varlevelsup); - WRITE_UINT_FIELD(varnoold); - WRITE_INT_FIELD(varoattno); - WRITE_INT_FIELD(location); -} - -static void -_outParam(StringInfo str, const Param *node) -{ - WRITE_NODE_TYPE("Param"); - - WRITE_ENUM_FIELD(paramkind); - WRITE_INT_FIELD(paramid); - WRITE_UINT_FIELD(paramtype); - WRITE_INT_FIELD(paramtypmod); - WRITE_UINT_FIELD(paramcollid); - WRITE_INT_FIELD(location); -} - -static void -_outAggref(StringInfo str, const Aggref *node) -{ - WRITE_NODE_TYPE("Aggref"); - - WRITE_UINT_FIELD(aggfnoid); - WRITE_UINT_FIELD(aggtype); - WRITE_UINT_FIELD(aggcollid); - WRITE_UINT_FIELD(inputcollid); - WRITE_UINT_FIELD(aggtranstype); - WRITE_NODE_PTR_FIELD(aggargtypes); - WRITE_NODE_PTR_FIELD(aggdirectargs); - WRITE_NODE_PTR_FIELD(args); - WRITE_NODE_PTR_FIELD(aggorder); - WRITE_NODE_PTR_FIELD(aggdistinct); - WRITE_NODE_PTR_FIELD(aggfilter); - WRITE_BOOL_FIELD(aggstar); - WRITE_BOOL_FIELD(aggvariadic); - WRITE_CHAR_FIELD(aggkind); - WRITE_UINT_FIELD(agglevelsup); - WRITE_ENUM_FIELD(aggsplit); - WRITE_INT_FIELD(location); -} - -static void -_outGroupingFunc(StringInfo str, const GroupingFunc *node) -{ - WRITE_NODE_TYPE("GroupingFunc"); - - WRITE_NODE_PTR_FIELD(args); - WRITE_NODE_PTR_FIELD(refs); - WRITE_NODE_PTR_FIELD(cols); - WRITE_UINT_FIELD(agglevelsup); - WRITE_INT_FIELD(location); -} - -static void -_outWindowFunc(StringInfo str, const WindowFunc *node) -{ - WRITE_NODE_TYPE("WindowFunc"); - - WRITE_UINT_FIELD(winfnoid); - WRITE_UINT_FIELD(wintype); - WRITE_UINT_FIELD(wincollid); - WRITE_UINT_FIELD(inputcollid); - WRITE_NODE_PTR_FIELD(args); - WRITE_NODE_PTR_FIELD(aggfilter); - WRITE_UINT_FIELD(winref); - WRITE_BOOL_FIELD(winstar); - WRITE_BOOL_FIELD(winagg); - WRITE_INT_FIELD(location); -} - -static void -_outArrayRef(StringInfo str, const ArrayRef *node) -{ - WRITE_NODE_TYPE("ArrayRef"); - - WRITE_UINT_FIELD(refarraytype); - WRITE_UINT_FIELD(refelemtype); - WRITE_INT_FIELD(reftypmod); - WRITE_UINT_FIELD(refcollid); - WRITE_NODE_PTR_FIELD(refupperindexpr); - WRITE_NODE_PTR_FIELD(reflowerindexpr); - WRITE_NODE_PTR_FIELD(refexpr); - WRITE_NODE_PTR_FIELD(refassgnexpr); -} - -static void -_outFuncExpr(StringInfo str, const FuncExpr *node) -{ - WRITE_NODE_TYPE("FuncExpr"); - - WRITE_UINT_FIELD(funcid); - WRITE_UINT_FIELD(funcresulttype); - WRITE_BOOL_FIELD(funcretset); - WRITE_BOOL_FIELD(funcvariadic); - WRITE_ENUM_FIELD(funcformat); - WRITE_UINT_FIELD(funccollid); - WRITE_UINT_FIELD(inputcollid); - WRITE_NODE_PTR_FIELD(args); - WRITE_INT_FIELD(location); -} - -static void -_outNamedArgExpr(StringInfo str, const NamedArgExpr *node) -{ - WRITE_NODE_TYPE("NamedArgExpr"); - - WRITE_NODE_PTR_FIELD(arg); - WRITE_STRING_FIELD(name); - WRITE_INT_FIELD(argnumber); - WRITE_INT_FIELD(location); -} - -static void -_outOpExpr(StringInfo str, const OpExpr *node) -{ - WRITE_NODE_TYPE("OpExpr"); - - WRITE_UINT_FIELD(opno); - WRITE_UINT_FIELD(opfuncid); - WRITE_UINT_FIELD(opresulttype); - WRITE_BOOL_FIELD(opretset); - WRITE_UINT_FIELD(opcollid); - WRITE_UINT_FIELD(inputcollid); - WRITE_NODE_PTR_FIELD(args); - WRITE_INT_FIELD(location); -} - -static void -_outDistinctExpr(StringInfo str, const DistinctExpr *node) -{ - WRITE_NODE_TYPE("OpExpr"); - - WRITE_UINT_FIELD(opno); - WRITE_UINT_FIELD(opfuncid); - WRITE_UINT_FIELD(opresulttype); - WRITE_BOOL_FIELD(opretset); - WRITE_UINT_FIELD(opcollid); - WRITE_UINT_FIELD(inputcollid); - WRITE_NODE_PTR_FIELD(args); - WRITE_INT_FIELD(location); -} - -static void -_outNullIfExpr(StringInfo str, const NullIfExpr *node) -{ - WRITE_NODE_TYPE("OpExpr"); - - WRITE_UINT_FIELD(opno); - WRITE_UINT_FIELD(opfuncid); - WRITE_UINT_FIELD(opresulttype); - WRITE_BOOL_FIELD(opretset); - WRITE_UINT_FIELD(opcollid); - WRITE_UINT_FIELD(inputcollid); - WRITE_NODE_PTR_FIELD(args); - WRITE_INT_FIELD(location); -} - -static void -_outScalarArrayOpExpr(StringInfo str, const ScalarArrayOpExpr *node) -{ - WRITE_NODE_TYPE("ScalarArrayOpExpr"); - - WRITE_UINT_FIELD(opno); - WRITE_UINT_FIELD(opfuncid); - WRITE_BOOL_FIELD(useOr); - WRITE_UINT_FIELD(inputcollid); - WRITE_NODE_PTR_FIELD(args); - WRITE_INT_FIELD(location); -} - -static void -_outBoolExpr(StringInfo str, const BoolExpr *node) -{ - WRITE_NODE_TYPE("BoolExpr"); - - WRITE_ENUM_FIELD(boolop); - WRITE_NODE_PTR_FIELD(args); - WRITE_INT_FIELD(location); -} - -static void -_outSubLink(StringInfo str, const SubLink *node) -{ - WRITE_NODE_TYPE("SubLink"); - - WRITE_ENUM_FIELD(subLinkType); - WRITE_INT_FIELD(subLinkId); - WRITE_NODE_PTR_FIELD(testexpr); - WRITE_NODE_PTR_FIELD(operName); - WRITE_NODE_PTR_FIELD(subselect); - WRITE_INT_FIELD(location); -} - -static void -_outSubPlan(StringInfo str, const SubPlan *node) -{ - WRITE_NODE_TYPE("SubPlan"); - - WRITE_ENUM_FIELD(subLinkType); - WRITE_NODE_PTR_FIELD(testexpr); - WRITE_NODE_PTR_FIELD(paramIds); - WRITE_INT_FIELD(plan_id); - WRITE_STRING_FIELD(plan_name); - WRITE_UINT_FIELD(firstColType); - WRITE_INT_FIELD(firstColTypmod); - WRITE_UINT_FIELD(firstColCollation); - WRITE_BOOL_FIELD(useHashTable); - WRITE_BOOL_FIELD(unknownEqFalse); - WRITE_BOOL_FIELD(parallel_safe); - WRITE_NODE_PTR_FIELD(setParam); - WRITE_NODE_PTR_FIELD(parParam); - WRITE_NODE_PTR_FIELD(args); - WRITE_FLOAT_FIELD(startup_cost); - WRITE_FLOAT_FIELD(per_call_cost); -} - -static void -_outAlternativeSubPlan(StringInfo str, const AlternativeSubPlan *node) -{ - WRITE_NODE_TYPE("AlternativeSubPlan"); - - WRITE_NODE_PTR_FIELD(subplans); -} - -static void -_outFieldSelect(StringInfo str, const FieldSelect *node) -{ - WRITE_NODE_TYPE("FieldSelect"); - - WRITE_NODE_PTR_FIELD(arg); - WRITE_INT_FIELD(fieldnum); - WRITE_UINT_FIELD(resulttype); - WRITE_INT_FIELD(resulttypmod); - WRITE_UINT_FIELD(resultcollid); -} - -static void -_outFieldStore(StringInfo str, const FieldStore *node) -{ - WRITE_NODE_TYPE("FieldStore"); - - WRITE_NODE_PTR_FIELD(arg); - WRITE_NODE_PTR_FIELD(newvals); - WRITE_NODE_PTR_FIELD(fieldnums); - WRITE_UINT_FIELD(resulttype); -} - -static void -_outRelabelType(StringInfo str, const RelabelType *node) -{ - WRITE_NODE_TYPE("RelabelType"); - - WRITE_NODE_PTR_FIELD(arg); - WRITE_UINT_FIELD(resulttype); - WRITE_INT_FIELD(resulttypmod); - WRITE_UINT_FIELD(resultcollid); - WRITE_ENUM_FIELD(relabelformat); - WRITE_INT_FIELD(location); -} - -static void -_outCoerceViaIO(StringInfo str, const CoerceViaIO *node) -{ - WRITE_NODE_TYPE("CoerceViaIO"); - - WRITE_NODE_PTR_FIELD(arg); - WRITE_UINT_FIELD(resulttype); - WRITE_UINT_FIELD(resultcollid); - WRITE_ENUM_FIELD(coerceformat); - WRITE_INT_FIELD(location); -} - -static void -_outArrayCoerceExpr(StringInfo str, const ArrayCoerceExpr *node) -{ - WRITE_NODE_TYPE("ArrayCoerceExpr"); - - WRITE_NODE_PTR_FIELD(arg); - WRITE_UINT_FIELD(elemfuncid); - WRITE_UINT_FIELD(resulttype); - WRITE_INT_FIELD(resulttypmod); - WRITE_UINT_FIELD(resultcollid); - WRITE_BOOL_FIELD(isExplicit); - WRITE_ENUM_FIELD(coerceformat); - WRITE_INT_FIELD(location); -} - -static void -_outConvertRowtypeExpr(StringInfo str, const ConvertRowtypeExpr *node) -{ - WRITE_NODE_TYPE("ConvertRowtypeExpr"); - - WRITE_NODE_PTR_FIELD(arg); - WRITE_UINT_FIELD(resulttype); - WRITE_ENUM_FIELD(convertformat); - WRITE_INT_FIELD(location); -} - -static void -_outCollateExpr(StringInfo str, const CollateExpr *node) -{ - WRITE_NODE_TYPE("CollateExpr"); - - WRITE_NODE_PTR_FIELD(arg); - WRITE_UINT_FIELD(collOid); - WRITE_INT_FIELD(location); -} - -static void -_outCaseExpr(StringInfo str, const CaseExpr *node) -{ - WRITE_NODE_TYPE("CaseExpr"); - - WRITE_UINT_FIELD(casetype); - WRITE_UINT_FIELD(casecollid); - WRITE_NODE_PTR_FIELD(arg); - WRITE_NODE_PTR_FIELD(args); - WRITE_NODE_PTR_FIELD(defresult); - WRITE_INT_FIELD(location); -} - -static void -_outCaseWhen(StringInfo str, const CaseWhen *node) -{ - WRITE_NODE_TYPE("CaseWhen"); - - WRITE_NODE_PTR_FIELD(expr); - WRITE_NODE_PTR_FIELD(result); - WRITE_INT_FIELD(location); -} - -static void -_outCaseTestExpr(StringInfo str, const CaseTestExpr *node) -{ - WRITE_NODE_TYPE("CaseTestExpr"); - - WRITE_UINT_FIELD(typeId); - WRITE_INT_FIELD(typeMod); - WRITE_UINT_FIELD(collation); -} - -static void -_outArrayExpr(StringInfo str, const ArrayExpr *node) -{ - WRITE_NODE_TYPE("ArrayExpr"); - - WRITE_UINT_FIELD(array_typeid); - WRITE_UINT_FIELD(array_collid); - WRITE_UINT_FIELD(element_typeid); - WRITE_NODE_PTR_FIELD(elements); - WRITE_BOOL_FIELD(multidims); - WRITE_INT_FIELD(location); -} - -static void -_outRowExpr(StringInfo str, const RowExpr *node) -{ - WRITE_NODE_TYPE("RowExpr"); - - WRITE_NODE_PTR_FIELD(args); - WRITE_UINT_FIELD(row_typeid); - WRITE_ENUM_FIELD(row_format); - WRITE_NODE_PTR_FIELD(colnames); - WRITE_INT_FIELD(location); -} - -static void -_outRowCompareExpr(StringInfo str, const RowCompareExpr *node) -{ - WRITE_NODE_TYPE("RowCompareExpr"); - - WRITE_ENUM_FIELD(rctype); - WRITE_NODE_PTR_FIELD(opnos); - WRITE_NODE_PTR_FIELD(opfamilies); - WRITE_NODE_PTR_FIELD(inputcollids); - WRITE_NODE_PTR_FIELD(largs); - WRITE_NODE_PTR_FIELD(rargs); -} - -static void -_outCoalesceExpr(StringInfo str, const CoalesceExpr *node) -{ - WRITE_NODE_TYPE("CoalesceExpr"); - - WRITE_UINT_FIELD(coalescetype); - WRITE_UINT_FIELD(coalescecollid); - WRITE_NODE_PTR_FIELD(args); - WRITE_INT_FIELD(location); -} - -static void -_outMinMaxExpr(StringInfo str, const MinMaxExpr *node) -{ - WRITE_NODE_TYPE("MinMaxExpr"); - - WRITE_UINT_FIELD(minmaxtype); - WRITE_UINT_FIELD(minmaxcollid); - WRITE_UINT_FIELD(inputcollid); - WRITE_ENUM_FIELD(op); - WRITE_NODE_PTR_FIELD(args); - WRITE_INT_FIELD(location); -} - -static void -_outSQLValueFunction(StringInfo str, const SQLValueFunction *node) -{ - WRITE_NODE_TYPE("SQLValueFunction"); - - WRITE_ENUM_FIELD(op); - WRITE_UINT_FIELD(type); - WRITE_INT_FIELD(typmod); - WRITE_INT_FIELD(location); -} - -static void -_outXmlExpr(StringInfo str, const XmlExpr *node) -{ - WRITE_NODE_TYPE("XmlExpr"); - - WRITE_ENUM_FIELD(op); - WRITE_STRING_FIELD(name); - WRITE_NODE_PTR_FIELD(named_args); - WRITE_NODE_PTR_FIELD(arg_names); - WRITE_NODE_PTR_FIELD(args); - WRITE_ENUM_FIELD(xmloption); - WRITE_UINT_FIELD(type); - WRITE_INT_FIELD(typmod); - WRITE_INT_FIELD(location); -} - -static void -_outNullTest(StringInfo str, const NullTest *node) -{ - WRITE_NODE_TYPE("NullTest"); - - WRITE_NODE_PTR_FIELD(arg); - WRITE_ENUM_FIELD(nulltesttype); - WRITE_BOOL_FIELD(argisrow); - WRITE_INT_FIELD(location); -} - -static void -_outBooleanTest(StringInfo str, const BooleanTest *node) -{ - WRITE_NODE_TYPE("BooleanTest"); - - WRITE_NODE_PTR_FIELD(arg); - WRITE_ENUM_FIELD(booltesttype); - WRITE_INT_FIELD(location); -} - -static void -_outCoerceToDomain(StringInfo str, const CoerceToDomain *node) -{ - WRITE_NODE_TYPE("CoerceToDomain"); - - WRITE_NODE_PTR_FIELD(arg); - WRITE_UINT_FIELD(resulttype); - WRITE_INT_FIELD(resulttypmod); - WRITE_UINT_FIELD(resultcollid); - WRITE_ENUM_FIELD(coercionformat); - WRITE_INT_FIELD(location); -} - -static void -_outCoerceToDomainValue(StringInfo str, const CoerceToDomainValue *node) -{ - WRITE_NODE_TYPE("CoerceToDomainValue"); - - WRITE_UINT_FIELD(typeId); - WRITE_INT_FIELD(typeMod); - WRITE_UINT_FIELD(collation); - WRITE_INT_FIELD(location); -} - -static void -_outSetToDefault(StringInfo str, const SetToDefault *node) -{ - WRITE_NODE_TYPE("SetToDefault"); - - WRITE_UINT_FIELD(typeId); - WRITE_INT_FIELD(typeMod); - WRITE_UINT_FIELD(collation); - WRITE_INT_FIELD(location); -} - -static void -_outCurrentOfExpr(StringInfo str, const CurrentOfExpr *node) -{ - WRITE_NODE_TYPE("CurrentOfExpr"); - - WRITE_UINT_FIELD(cvarno); - WRITE_STRING_FIELD(cursor_name); - WRITE_INT_FIELD(cursor_param); -} - -static void -_outNextValueExpr(StringInfo str, const NextValueExpr *node) -{ - WRITE_NODE_TYPE("NextValueExpr"); - - WRITE_UINT_FIELD(seqid); - WRITE_UINT_FIELD(typeId); -} - -static void -_outInferenceElem(StringInfo str, const InferenceElem *node) -{ - WRITE_NODE_TYPE("InferenceElem"); - - WRITE_NODE_PTR_FIELD(expr); - WRITE_UINT_FIELD(infercollid); - WRITE_UINT_FIELD(inferopclass); -} - -static void -_outTargetEntry(StringInfo str, const TargetEntry *node) -{ - WRITE_NODE_TYPE("TargetEntry"); - - WRITE_NODE_PTR_FIELD(expr); - WRITE_INT_FIELD(resno); - WRITE_STRING_FIELD(resname); - WRITE_UINT_FIELD(ressortgroupref); - WRITE_UINT_FIELD(resorigtbl); - WRITE_INT_FIELD(resorigcol); - WRITE_BOOL_FIELD(resjunk); -} - -static void -_outRangeTblRef(StringInfo str, const RangeTblRef *node) -{ - WRITE_NODE_TYPE("RangeTblRef"); - - WRITE_INT_FIELD(rtindex); -} - -static void -_outJoinExpr(StringInfo str, const JoinExpr *node) -{ - WRITE_NODE_TYPE("JoinExpr"); - - WRITE_ENUM_FIELD(jointype); - WRITE_BOOL_FIELD(isNatural); - WRITE_NODE_PTR_FIELD(larg); - WRITE_NODE_PTR_FIELD(rarg); - WRITE_NODE_PTR_FIELD(usingClause); - WRITE_NODE_PTR_FIELD(quals); - WRITE_NODE_PTR_FIELD(alias); - WRITE_INT_FIELD(rtindex); -} - -static void -_outFromExpr(StringInfo str, const FromExpr *node) -{ - WRITE_NODE_TYPE("FromExpr"); - - WRITE_NODE_PTR_FIELD(fromlist); - WRITE_NODE_PTR_FIELD(quals); -} - -static void -_outOnConflictExpr(StringInfo str, const OnConflictExpr *node) -{ - WRITE_NODE_TYPE("OnConflictExpr"); - - WRITE_ENUM_FIELD(action); - WRITE_NODE_PTR_FIELD(arbiterElems); - WRITE_NODE_PTR_FIELD(arbiterWhere); - WRITE_UINT_FIELD(constraint); - WRITE_NODE_PTR_FIELD(onConflictSet); - WRITE_NODE_PTR_FIELD(onConflictWhere); - WRITE_INT_FIELD(exclRelIndex); - WRITE_NODE_PTR_FIELD(exclRelTlist); -} - -static void -_outIntoClause(StringInfo str, const IntoClause *node) -{ - WRITE_NODE_TYPE("IntoClause"); - - WRITE_NODE_PTR_FIELD(rel); - WRITE_NODE_PTR_FIELD(colNames); - WRITE_NODE_PTR_FIELD(options); - WRITE_ENUM_FIELD(onCommit); - WRITE_STRING_FIELD(tableSpaceName); - WRITE_NODE_PTR_FIELD(viewQuery); - WRITE_BOOL_FIELD(skipData); -} - -static void -_outRawStmt(StringInfo str, const RawStmt *node) -{ - WRITE_NODE_TYPE("RawStmt"); - - WRITE_NODE_PTR_FIELD(stmt); - WRITE_INT_FIELD(stmt_location); - WRITE_INT_FIELD(stmt_len); -} - -static void -_outQuery(StringInfo str, const Query *node) -{ - WRITE_NODE_TYPE("Query"); - - WRITE_ENUM_FIELD(commandType); - WRITE_ENUM_FIELD(querySource); - WRITE_BOOL_FIELD(canSetTag); - WRITE_NODE_PTR_FIELD(utilityStmt); - WRITE_INT_FIELD(resultRelation); - WRITE_BOOL_FIELD(hasAggs); - WRITE_BOOL_FIELD(hasWindowFuncs); - WRITE_BOOL_FIELD(hasTargetSRFs); - WRITE_BOOL_FIELD(hasSubLinks); - WRITE_BOOL_FIELD(hasDistinctOn); - WRITE_BOOL_FIELD(hasRecursive); - WRITE_BOOL_FIELD(hasModifyingCTE); - WRITE_BOOL_FIELD(hasForUpdate); - WRITE_BOOL_FIELD(hasRowSecurity); - WRITE_NODE_PTR_FIELD(cteList); - WRITE_NODE_PTR_FIELD(rtable); - WRITE_NODE_PTR_FIELD(jointree); - WRITE_NODE_PTR_FIELD(targetList); - WRITE_ENUM_FIELD(override); - WRITE_NODE_PTR_FIELD(onConflict); - WRITE_NODE_PTR_FIELD(returningList); - WRITE_NODE_PTR_FIELD(groupClause); - WRITE_NODE_PTR_FIELD(groupingSets); - WRITE_NODE_PTR_FIELD(havingQual); - WRITE_NODE_PTR_FIELD(windowClause); - WRITE_NODE_PTR_FIELD(distinctClause); - WRITE_NODE_PTR_FIELD(sortClause); - WRITE_NODE_PTR_FIELD(limitOffset); - WRITE_NODE_PTR_FIELD(limitCount); - WRITE_NODE_PTR_FIELD(rowMarks); - WRITE_NODE_PTR_FIELD(setOperations); - WRITE_NODE_PTR_FIELD(constraintDeps); - WRITE_NODE_PTR_FIELD(withCheckOptions); - WRITE_INT_FIELD(stmt_location); - WRITE_INT_FIELD(stmt_len); -} - -static void -_outInsertStmt(StringInfo str, const InsertStmt *node) -{ - WRITE_NODE_TYPE("InsertStmt"); - - WRITE_NODE_PTR_FIELD(relation); - WRITE_NODE_PTR_FIELD(cols); - WRITE_NODE_PTR_FIELD(selectStmt); - WRITE_NODE_PTR_FIELD(onConflictClause); - WRITE_NODE_PTR_FIELD(returningList); - WRITE_NODE_PTR_FIELD(withClause); - WRITE_ENUM_FIELD(override); -} - -static void -_outDeleteStmt(StringInfo str, const DeleteStmt *node) -{ - WRITE_NODE_TYPE("DeleteStmt"); - - WRITE_NODE_PTR_FIELD(relation); - WRITE_NODE_PTR_FIELD(usingClause); - WRITE_NODE_PTR_FIELD(whereClause); - WRITE_NODE_PTR_FIELD(returningList); - WRITE_NODE_PTR_FIELD(withClause); -} - -static void -_outUpdateStmt(StringInfo str, const UpdateStmt *node) -{ - WRITE_NODE_TYPE("UpdateStmt"); - - WRITE_NODE_PTR_FIELD(relation); - WRITE_NODE_PTR_FIELD(targetList); - WRITE_NODE_PTR_FIELD(whereClause); - WRITE_NODE_PTR_FIELD(fromClause); - WRITE_NODE_PTR_FIELD(returningList); - WRITE_NODE_PTR_FIELD(withClause); -} - -static void -_outSelectStmt(StringInfo str, const SelectStmt *node) -{ - WRITE_NODE_TYPE("SelectStmt"); - - WRITE_NODE_PTR_FIELD(distinctClause); - WRITE_NODE_PTR_FIELD(intoClause); - WRITE_NODE_PTR_FIELD(targetList); - WRITE_NODE_PTR_FIELD(fromClause); - WRITE_NODE_PTR_FIELD(whereClause); - WRITE_NODE_PTR_FIELD(groupClause); - WRITE_NODE_PTR_FIELD(havingClause); - WRITE_NODE_PTR_FIELD(windowClause); - WRITE_NODE_PTR_FIELD(valuesLists); - WRITE_NODE_PTR_FIELD(sortClause); - WRITE_NODE_PTR_FIELD(limitOffset); - WRITE_NODE_PTR_FIELD(limitCount); - WRITE_NODE_PTR_FIELD(lockingClause); - WRITE_NODE_PTR_FIELD(withClause); - WRITE_ENUM_FIELD(op); - WRITE_BOOL_FIELD(all); - WRITE_NODE_PTR_FIELD(larg); - WRITE_NODE_PTR_FIELD(rarg); -} - -static void -_outAlterTableStmt(StringInfo str, const AlterTableStmt *node) -{ - WRITE_NODE_TYPE("AlterTableStmt"); - - WRITE_NODE_PTR_FIELD(relation); - WRITE_NODE_PTR_FIELD(cmds); - WRITE_ENUM_FIELD(relkind); - WRITE_BOOL_FIELD(missing_ok); -} - -static void -_outAlterTableCmd(StringInfo str, const AlterTableCmd *node) -{ - WRITE_NODE_TYPE("AlterTableCmd"); - - WRITE_ENUM_FIELD(subtype); - WRITE_STRING_FIELD(name); - WRITE_NODE_PTR_FIELD(newowner); - WRITE_NODE_PTR_FIELD(def); - WRITE_ENUM_FIELD(behavior); - WRITE_BOOL_FIELD(missing_ok); -} - -static void -_outAlterDomainStmt(StringInfo str, const AlterDomainStmt *node) -{ - WRITE_NODE_TYPE("AlterDomainStmt"); - - WRITE_CHAR_FIELD(subtype); - WRITE_NODE_PTR_FIELD(typeName); - WRITE_STRING_FIELD(name); - WRITE_NODE_PTR_FIELD(def); - WRITE_ENUM_FIELD(behavior); - WRITE_BOOL_FIELD(missing_ok); -} - -static void -_outSetOperationStmt(StringInfo str, const SetOperationStmt *node) -{ - WRITE_NODE_TYPE("SetOperationStmt"); - - WRITE_ENUM_FIELD(op); - WRITE_BOOL_FIELD(all); - WRITE_NODE_PTR_FIELD(larg); - WRITE_NODE_PTR_FIELD(rarg); - WRITE_NODE_PTR_FIELD(colTypes); - WRITE_NODE_PTR_FIELD(colTypmods); - WRITE_NODE_PTR_FIELD(colCollations); - WRITE_NODE_PTR_FIELD(groupClauses); -} - -static void -_outGrantStmt(StringInfo str, const GrantStmt *node) -{ - WRITE_NODE_TYPE("GrantStmt"); - - WRITE_BOOL_FIELD(is_grant); - WRITE_ENUM_FIELD(targtype); - WRITE_ENUM_FIELD(objtype); - WRITE_NODE_PTR_FIELD(objects); - WRITE_NODE_PTR_FIELD(privileges); - WRITE_NODE_PTR_FIELD(grantees); - WRITE_BOOL_FIELD(grant_option); - WRITE_ENUM_FIELD(behavior); -} - -static void -_outGrantRoleStmt(StringInfo str, const GrantRoleStmt *node) -{ - WRITE_NODE_TYPE("GrantRoleStmt"); - - WRITE_NODE_PTR_FIELD(granted_roles); - WRITE_NODE_PTR_FIELD(grantee_roles); - WRITE_BOOL_FIELD(is_grant); - WRITE_BOOL_FIELD(admin_opt); - WRITE_NODE_PTR_FIELD(grantor); - WRITE_ENUM_FIELD(behavior); -} - -static void -_outAlterDefaultPrivilegesStmt(StringInfo str, const AlterDefaultPrivilegesStmt *node) -{ - WRITE_NODE_TYPE("AlterDefaultPrivilegesStmt"); - - WRITE_NODE_PTR_FIELD(options); - WRITE_NODE_PTR_FIELD(action); -} - -static void -_outClosePortalStmt(StringInfo str, const ClosePortalStmt *node) -{ - WRITE_NODE_TYPE("ClosePortalStmt"); - - WRITE_STRING_FIELD(portalname); -} - -static void -_outClusterStmt(StringInfo str, const ClusterStmt *node) -{ - WRITE_NODE_TYPE("ClusterStmt"); - - WRITE_NODE_PTR_FIELD(relation); - WRITE_STRING_FIELD(indexname); - WRITE_BOOL_FIELD(verbose); -} - -static void -_outCopyStmt(StringInfo str, const CopyStmt *node) -{ - WRITE_NODE_TYPE("CopyStmt"); - - WRITE_NODE_PTR_FIELD(relation); - WRITE_NODE_PTR_FIELD(query); - WRITE_NODE_PTR_FIELD(attlist); - WRITE_BOOL_FIELD(is_from); - WRITE_BOOL_FIELD(is_program); - WRITE_STRING_FIELD(filename); - WRITE_NODE_PTR_FIELD(options); -} - -static void -_outCreateStmt(StringInfo str, const CreateStmt *node) -{ - WRITE_NODE_TYPE("CreateStmt"); - - WRITE_NODE_PTR_FIELD(relation); - WRITE_NODE_PTR_FIELD(tableElts); - WRITE_NODE_PTR_FIELD(inhRelations); - WRITE_NODE_PTR_FIELD(partbound); - WRITE_NODE_PTR_FIELD(partspec); - WRITE_NODE_PTR_FIELD(ofTypename); - WRITE_NODE_PTR_FIELD(constraints); - WRITE_NODE_PTR_FIELD(options); - WRITE_ENUM_FIELD(oncommit); - WRITE_STRING_FIELD(tablespacename); - WRITE_BOOL_FIELD(if_not_exists); -} - -static void -_outDefineStmt(StringInfo str, const DefineStmt *node) -{ - WRITE_NODE_TYPE("DefineStmt"); - - WRITE_ENUM_FIELD(kind); - WRITE_BOOL_FIELD(oldstyle); - WRITE_NODE_PTR_FIELD(defnames); - WRITE_NODE_PTR_FIELD(args); - WRITE_NODE_PTR_FIELD(definition); - WRITE_BOOL_FIELD(if_not_exists); -} - -static void -_outDropStmt(StringInfo str, const DropStmt *node) -{ - WRITE_NODE_TYPE("DropStmt"); - - WRITE_NODE_PTR_FIELD(objects); - WRITE_ENUM_FIELD(removeType); - WRITE_ENUM_FIELD(behavior); - WRITE_BOOL_FIELD(missing_ok); - WRITE_BOOL_FIELD(concurrent); -} - -static void -_outTruncateStmt(StringInfo str, const TruncateStmt *node) -{ - WRITE_NODE_TYPE("TruncateStmt"); - - WRITE_NODE_PTR_FIELD(relations); - WRITE_BOOL_FIELD(restart_seqs); - WRITE_ENUM_FIELD(behavior); -} - -static void -_outCommentStmt(StringInfo str, const CommentStmt *node) -{ - WRITE_NODE_TYPE("CommentStmt"); - - WRITE_ENUM_FIELD(objtype); - WRITE_NODE_PTR_FIELD(object); - WRITE_STRING_FIELD(comment); -} - -static void -_outFetchStmt(StringInfo str, const FetchStmt *node) -{ - WRITE_NODE_TYPE("FetchStmt"); - - WRITE_ENUM_FIELD(direction); - WRITE_LONG_FIELD(howMany); - WRITE_STRING_FIELD(portalname); - WRITE_BOOL_FIELD(ismove); -} - -static void -_outIndexStmt(StringInfo str, const IndexStmt *node) -{ - WRITE_NODE_TYPE("IndexStmt"); - - WRITE_STRING_FIELD(idxname); - WRITE_NODE_PTR_FIELD(relation); - WRITE_STRING_FIELD(accessMethod); - WRITE_STRING_FIELD(tableSpace); - WRITE_NODE_PTR_FIELD(indexParams); - WRITE_NODE_PTR_FIELD(options); - WRITE_NODE_PTR_FIELD(whereClause); - WRITE_NODE_PTR_FIELD(excludeOpNames); - WRITE_STRING_FIELD(idxcomment); - WRITE_UINT_FIELD(indexOid); - WRITE_UINT_FIELD(oldNode); - WRITE_BOOL_FIELD(unique); - WRITE_BOOL_FIELD(primary); - WRITE_BOOL_FIELD(isconstraint); - WRITE_BOOL_FIELD(deferrable); - WRITE_BOOL_FIELD(initdeferred); - WRITE_BOOL_FIELD(transformed); - WRITE_BOOL_FIELD(concurrent); - WRITE_BOOL_FIELD(if_not_exists); -} - -static void -_outCreateFunctionStmt(StringInfo str, const CreateFunctionStmt *node) -{ - WRITE_NODE_TYPE("CreateFunctionStmt"); - - WRITE_BOOL_FIELD(replace); - WRITE_NODE_PTR_FIELD(funcname); - WRITE_NODE_PTR_FIELD(parameters); - WRITE_NODE_PTR_FIELD(returnType); - WRITE_NODE_PTR_FIELD(options); - WRITE_NODE_PTR_FIELD(withClause); -} - -static void -_outAlterFunctionStmt(StringInfo str, const AlterFunctionStmt *node) -{ - WRITE_NODE_TYPE("AlterFunctionStmt"); - - WRITE_NODE_PTR_FIELD(func); - WRITE_NODE_PTR_FIELD(actions); -} - -static void -_outDoStmt(StringInfo str, const DoStmt *node) -{ - WRITE_NODE_TYPE("DoStmt"); - - WRITE_NODE_PTR_FIELD(args); -} - -static void -_outRenameStmt(StringInfo str, const RenameStmt *node) -{ - WRITE_NODE_TYPE("RenameStmt"); - - WRITE_ENUM_FIELD(renameType); - WRITE_ENUM_FIELD(relationType); - WRITE_NODE_PTR_FIELD(relation); - WRITE_NODE_PTR_FIELD(object); - WRITE_STRING_FIELD(subname); - WRITE_STRING_FIELD(newname); - WRITE_ENUM_FIELD(behavior); - WRITE_BOOL_FIELD(missing_ok); -} - -static void -_outRuleStmt(StringInfo str, const RuleStmt *node) -{ - WRITE_NODE_TYPE("RuleStmt"); - - WRITE_NODE_PTR_FIELD(relation); - WRITE_STRING_FIELD(rulename); - WRITE_NODE_PTR_FIELD(whereClause); - WRITE_ENUM_FIELD(event); - WRITE_BOOL_FIELD(instead); - WRITE_NODE_PTR_FIELD(actions); - WRITE_BOOL_FIELD(replace); -} - -static void -_outNotifyStmt(StringInfo str, const NotifyStmt *node) -{ - WRITE_NODE_TYPE("NotifyStmt"); - - WRITE_STRING_FIELD(conditionname); - WRITE_STRING_FIELD(payload); -} - -static void -_outListenStmt(StringInfo str, const ListenStmt *node) -{ - WRITE_NODE_TYPE("ListenStmt"); - - WRITE_STRING_FIELD(conditionname); -} - -static void -_outUnlistenStmt(StringInfo str, const UnlistenStmt *node) -{ - WRITE_NODE_TYPE("UnlistenStmt"); - - WRITE_STRING_FIELD(conditionname); -} - -static void -_outTransactionStmt(StringInfo str, const TransactionStmt *node) -{ - WRITE_NODE_TYPE("TransactionStmt"); - - WRITE_ENUM_FIELD(kind); - WRITE_NODE_PTR_FIELD(options); - WRITE_STRING_FIELD(gid); -} - -static void -_outViewStmt(StringInfo str, const ViewStmt *node) -{ - WRITE_NODE_TYPE("ViewStmt"); - - WRITE_NODE_PTR_FIELD(view); - WRITE_NODE_PTR_FIELD(aliases); - WRITE_NODE_PTR_FIELD(query); - WRITE_BOOL_FIELD(replace); - WRITE_NODE_PTR_FIELD(options); - WRITE_ENUM_FIELD(withCheckOption); -} - -static void -_outLoadStmt(StringInfo str, const LoadStmt *node) -{ - WRITE_NODE_TYPE("LoadStmt"); - - WRITE_STRING_FIELD(filename); -} - -static void -_outCreateDomainStmt(StringInfo str, const CreateDomainStmt *node) -{ - WRITE_NODE_TYPE("CreateDomainStmt"); - - WRITE_NODE_PTR_FIELD(domainname); - WRITE_NODE_PTR_FIELD(typeName); - WRITE_NODE_PTR_FIELD(collClause); - WRITE_NODE_PTR_FIELD(constraints); -} - -static void -_outCreatedbStmt(StringInfo str, const CreatedbStmt *node) -{ - WRITE_NODE_TYPE("CreatedbStmt"); - - WRITE_STRING_FIELD(dbname); - WRITE_NODE_PTR_FIELD(options); -} - -static void -_outDropdbStmt(StringInfo str, const DropdbStmt *node) -{ - WRITE_NODE_TYPE("DropdbStmt"); - - WRITE_STRING_FIELD(dbname); - WRITE_BOOL_FIELD(missing_ok); -} - -static void -_outVacuumStmt(StringInfo str, const VacuumStmt *node) -{ - WRITE_NODE_TYPE("VacuumStmt"); - - WRITE_INT_FIELD(options); - WRITE_NODE_PTR_FIELD(relation); - WRITE_NODE_PTR_FIELD(va_cols); -} - -static void -_outExplainStmt(StringInfo str, const ExplainStmt *node) -{ - WRITE_NODE_TYPE("ExplainStmt"); - - WRITE_NODE_PTR_FIELD(query); - WRITE_NODE_PTR_FIELD(options); -} - -static void -_outCreateTableAsStmt(StringInfo str, const CreateTableAsStmt *node) -{ - WRITE_NODE_TYPE("CreateTableAsStmt"); - - WRITE_NODE_PTR_FIELD(query); - WRITE_NODE_PTR_FIELD(into); - WRITE_ENUM_FIELD(relkind); - WRITE_BOOL_FIELD(is_select_into); - WRITE_BOOL_FIELD(if_not_exists); -} - -static void -_outCreateSeqStmt(StringInfo str, const CreateSeqStmt *node) -{ - WRITE_NODE_TYPE("CreateSeqStmt"); - - WRITE_NODE_PTR_FIELD(sequence); - WRITE_NODE_PTR_FIELD(options); - WRITE_UINT_FIELD(ownerId); - WRITE_BOOL_FIELD(for_identity); - WRITE_BOOL_FIELD(if_not_exists); -} - -static void -_outAlterSeqStmt(StringInfo str, const AlterSeqStmt *node) -{ - WRITE_NODE_TYPE("AlterSeqStmt"); - - WRITE_NODE_PTR_FIELD(sequence); - WRITE_NODE_PTR_FIELD(options); - WRITE_BOOL_FIELD(for_identity); - WRITE_BOOL_FIELD(missing_ok); -} - -static void -_outVariableSetStmt(StringInfo str, const VariableSetStmt *node) -{ - WRITE_NODE_TYPE("VariableSetStmt"); - - WRITE_ENUM_FIELD(kind); - WRITE_STRING_FIELD(name); - WRITE_NODE_PTR_FIELD(args); - WRITE_BOOL_FIELD(is_local); -} - -static void -_outVariableShowStmt(StringInfo str, const VariableShowStmt *node) -{ - WRITE_NODE_TYPE("VariableShowStmt"); - - WRITE_STRING_FIELD(name); -} - -static void -_outDiscardStmt(StringInfo str, const DiscardStmt *node) -{ - WRITE_NODE_TYPE("DiscardStmt"); - - WRITE_ENUM_FIELD(target); -} - -static void -_outCreateTrigStmt(StringInfo str, const CreateTrigStmt *node) -{ - WRITE_NODE_TYPE("CreateTrigStmt"); - - WRITE_STRING_FIELD(trigname); - WRITE_NODE_PTR_FIELD(relation); - WRITE_NODE_PTR_FIELD(funcname); - WRITE_NODE_PTR_FIELD(args); - WRITE_BOOL_FIELD(row); - WRITE_INT_FIELD(timing); - WRITE_INT_FIELD(events); - WRITE_NODE_PTR_FIELD(columns); - WRITE_NODE_PTR_FIELD(whenClause); - WRITE_BOOL_FIELD(isconstraint); - WRITE_NODE_PTR_FIELD(transitionRels); - WRITE_BOOL_FIELD(deferrable); - WRITE_BOOL_FIELD(initdeferred); - WRITE_NODE_PTR_FIELD(constrrel); -} - -static void -_outCreatePLangStmt(StringInfo str, const CreatePLangStmt *node) -{ - WRITE_NODE_TYPE("CreatePLangStmt"); - - WRITE_BOOL_FIELD(replace); - WRITE_STRING_FIELD(plname); - WRITE_NODE_PTR_FIELD(plhandler); - WRITE_NODE_PTR_FIELD(plinline); - WRITE_NODE_PTR_FIELD(plvalidator); - WRITE_BOOL_FIELD(pltrusted); -} - -static void -_outCreateRoleStmt(StringInfo str, const CreateRoleStmt *node) -{ - WRITE_NODE_TYPE("CreateRoleStmt"); - - WRITE_ENUM_FIELD(stmt_type); - WRITE_STRING_FIELD(role); - WRITE_NODE_PTR_FIELD(options); -} - -static void -_outAlterRoleStmt(StringInfo str, const AlterRoleStmt *node) -{ - WRITE_NODE_TYPE("AlterRoleStmt"); - - WRITE_NODE_PTR_FIELD(role); - WRITE_NODE_PTR_FIELD(options); - WRITE_INT_FIELD(action); -} - -static void -_outDropRoleStmt(StringInfo str, const DropRoleStmt *node) -{ - WRITE_NODE_TYPE("DropRoleStmt"); - - WRITE_NODE_PTR_FIELD(roles); - WRITE_BOOL_FIELD(missing_ok); -} - -static void -_outLockStmt(StringInfo str, const LockStmt *node) -{ - WRITE_NODE_TYPE("LockStmt"); - - WRITE_NODE_PTR_FIELD(relations); - WRITE_INT_FIELD(mode); - WRITE_BOOL_FIELD(nowait); -} - -static void -_outConstraintsSetStmt(StringInfo str, const ConstraintsSetStmt *node) -{ - WRITE_NODE_TYPE("ConstraintsSetStmt"); - - WRITE_NODE_PTR_FIELD(constraints); - WRITE_BOOL_FIELD(deferred); -} - -static void -_outReindexStmt(StringInfo str, const ReindexStmt *node) -{ - WRITE_NODE_TYPE("ReindexStmt"); - - WRITE_ENUM_FIELD(kind); - WRITE_NODE_PTR_FIELD(relation); - WRITE_STRING_FIELD(name); - WRITE_INT_FIELD(options); -} - -static void -_outCheckPointStmt(StringInfo str, const CheckPointStmt *node) -{ - WRITE_NODE_TYPE("CheckPointStmt"); - -} - -static void -_outCreateSchemaStmt(StringInfo str, const CreateSchemaStmt *node) -{ - WRITE_NODE_TYPE("CreateSchemaStmt"); - - WRITE_STRING_FIELD(schemaname); - WRITE_NODE_PTR_FIELD(authrole); - WRITE_NODE_PTR_FIELD(schemaElts); - WRITE_BOOL_FIELD(if_not_exists); -} - -static void -_outAlterDatabaseStmt(StringInfo str, const AlterDatabaseStmt *node) -{ - WRITE_NODE_TYPE("AlterDatabaseStmt"); - - WRITE_STRING_FIELD(dbname); - WRITE_NODE_PTR_FIELD(options); -} - -static void -_outAlterDatabaseSetStmt(StringInfo str, const AlterDatabaseSetStmt *node) -{ - WRITE_NODE_TYPE("AlterDatabaseSetStmt"); - - WRITE_STRING_FIELD(dbname); - WRITE_NODE_PTR_FIELD(setstmt); -} - -static void -_outAlterRoleSetStmt(StringInfo str, const AlterRoleSetStmt *node) -{ - WRITE_NODE_TYPE("AlterRoleSetStmt"); - - WRITE_NODE_PTR_FIELD(role); - WRITE_STRING_FIELD(database); - WRITE_NODE_PTR_FIELD(setstmt); -} - -static void -_outCreateConversionStmt(StringInfo str, const CreateConversionStmt *node) -{ - WRITE_NODE_TYPE("CreateConversionStmt"); - - WRITE_NODE_PTR_FIELD(conversion_name); - WRITE_STRING_FIELD(for_encoding_name); - WRITE_STRING_FIELD(to_encoding_name); - WRITE_NODE_PTR_FIELD(func_name); - WRITE_BOOL_FIELD(def); -} - -static void -_outCreateCastStmt(StringInfo str, const CreateCastStmt *node) -{ - WRITE_NODE_TYPE("CreateCastStmt"); - - WRITE_NODE_PTR_FIELD(sourcetype); - WRITE_NODE_PTR_FIELD(targettype); - WRITE_NODE_PTR_FIELD(func); - WRITE_ENUM_FIELD(context); - WRITE_BOOL_FIELD(inout); -} - -static void -_outCreateOpClassStmt(StringInfo str, const CreateOpClassStmt *node) -{ - WRITE_NODE_TYPE("CreateOpClassStmt"); - - WRITE_NODE_PTR_FIELD(opclassname); - WRITE_NODE_PTR_FIELD(opfamilyname); - WRITE_STRING_FIELD(amname); - WRITE_NODE_PTR_FIELD(datatype); - WRITE_NODE_PTR_FIELD(items); - WRITE_BOOL_FIELD(isDefault); -} - -static void -_outCreateOpFamilyStmt(StringInfo str, const CreateOpFamilyStmt *node) -{ - WRITE_NODE_TYPE("CreateOpFamilyStmt"); - - WRITE_NODE_PTR_FIELD(opfamilyname); - WRITE_STRING_FIELD(amname); -} - -static void -_outAlterOpFamilyStmt(StringInfo str, const AlterOpFamilyStmt *node) -{ - WRITE_NODE_TYPE("AlterOpFamilyStmt"); - - WRITE_NODE_PTR_FIELD(opfamilyname); - WRITE_STRING_FIELD(amname); - WRITE_BOOL_FIELD(isDrop); - WRITE_NODE_PTR_FIELD(items); -} - -static void -_outPrepareStmt(StringInfo str, const PrepareStmt *node) -{ - WRITE_NODE_TYPE("PrepareStmt"); - - WRITE_STRING_FIELD(name); - WRITE_NODE_PTR_FIELD(argtypes); - WRITE_NODE_PTR_FIELD(query); -} - -static void -_outExecuteStmt(StringInfo str, const ExecuteStmt *node) -{ - WRITE_NODE_TYPE("ExecuteStmt"); - - WRITE_STRING_FIELD(name); - WRITE_NODE_PTR_FIELD(params); -} - -static void -_outDeallocateStmt(StringInfo str, const DeallocateStmt *node) -{ - WRITE_NODE_TYPE("DeallocateStmt"); - - WRITE_STRING_FIELD(name); -} - -static void -_outDeclareCursorStmt(StringInfo str, const DeclareCursorStmt *node) -{ - WRITE_NODE_TYPE("DeclareCursorStmt"); - - WRITE_STRING_FIELD(portalname); - WRITE_INT_FIELD(options); - WRITE_NODE_PTR_FIELD(query); -} - -static void -_outCreateTableSpaceStmt(StringInfo str, const CreateTableSpaceStmt *node) -{ - WRITE_NODE_TYPE("CreateTableSpaceStmt"); - - WRITE_STRING_FIELD(tablespacename); - WRITE_NODE_PTR_FIELD(owner); - WRITE_STRING_FIELD(location); - WRITE_NODE_PTR_FIELD(options); -} - -static void -_outDropTableSpaceStmt(StringInfo str, const DropTableSpaceStmt *node) -{ - WRITE_NODE_TYPE("DropTableSpaceStmt"); - - WRITE_STRING_FIELD(tablespacename); - WRITE_BOOL_FIELD(missing_ok); -} - -static void -_outAlterObjectDependsStmt(StringInfo str, const AlterObjectDependsStmt *node) -{ - WRITE_NODE_TYPE("AlterObjectDependsStmt"); - - WRITE_ENUM_FIELD(objectType); - WRITE_NODE_PTR_FIELD(relation); - WRITE_NODE_PTR_FIELD(object); - WRITE_NODE_PTR_FIELD(extname); -} - -static void -_outAlterObjectSchemaStmt(StringInfo str, const AlterObjectSchemaStmt *node) -{ - WRITE_NODE_TYPE("AlterObjectSchemaStmt"); - - WRITE_ENUM_FIELD(objectType); - WRITE_NODE_PTR_FIELD(relation); - WRITE_NODE_PTR_FIELD(object); - WRITE_STRING_FIELD(newschema); - WRITE_BOOL_FIELD(missing_ok); -} - -static void -_outAlterOwnerStmt(StringInfo str, const AlterOwnerStmt *node) -{ - WRITE_NODE_TYPE("AlterOwnerStmt"); - - WRITE_ENUM_FIELD(objectType); - WRITE_NODE_PTR_FIELD(relation); - WRITE_NODE_PTR_FIELD(object); - WRITE_NODE_PTR_FIELD(newowner); -} - -static void -_outAlterOperatorStmt(StringInfo str, const AlterOperatorStmt *node) -{ - WRITE_NODE_TYPE("AlterOperatorStmt"); - - WRITE_NODE_PTR_FIELD(opername); - WRITE_NODE_PTR_FIELD(options); -} - -static void -_outDropOwnedStmt(StringInfo str, const DropOwnedStmt *node) -{ - WRITE_NODE_TYPE("DropOwnedStmt"); - - WRITE_NODE_PTR_FIELD(roles); - WRITE_ENUM_FIELD(behavior); -} - -static void -_outReassignOwnedStmt(StringInfo str, const ReassignOwnedStmt *node) -{ - WRITE_NODE_TYPE("ReassignOwnedStmt"); - - WRITE_NODE_PTR_FIELD(roles); - WRITE_NODE_PTR_FIELD(newrole); -} - -static void -_outCompositeTypeStmt(StringInfo str, const CompositeTypeStmt *node) -{ - WRITE_NODE_TYPE("CompositeTypeStmt"); - - WRITE_NODE_PTR_FIELD(typevar); - WRITE_NODE_PTR_FIELD(coldeflist); -} - -static void -_outCreateEnumStmt(StringInfo str, const CreateEnumStmt *node) -{ - WRITE_NODE_TYPE("CreateEnumStmt"); - - WRITE_NODE_PTR_FIELD(typeName); - WRITE_NODE_PTR_FIELD(vals); -} - -static void -_outCreateRangeStmt(StringInfo str, const CreateRangeStmt *node) -{ - WRITE_NODE_TYPE("CreateRangeStmt"); - - WRITE_NODE_PTR_FIELD(typeName); - WRITE_NODE_PTR_FIELD(params); -} - -static void -_outAlterEnumStmt(StringInfo str, const AlterEnumStmt *node) -{ - WRITE_NODE_TYPE("AlterEnumStmt"); - - WRITE_NODE_PTR_FIELD(typeName); - WRITE_STRING_FIELD(oldVal); - WRITE_STRING_FIELD(newVal); - WRITE_STRING_FIELD(newValNeighbor); - WRITE_BOOL_FIELD(newValIsAfter); - WRITE_BOOL_FIELD(skipIfNewValExists); -} - -static void -_outAlterTSDictionaryStmt(StringInfo str, const AlterTSDictionaryStmt *node) -{ - WRITE_NODE_TYPE("AlterTSDictionaryStmt"); - - WRITE_NODE_PTR_FIELD(dictname); - WRITE_NODE_PTR_FIELD(options); -} - -static void -_outAlterTSConfigurationStmt(StringInfo str, const AlterTSConfigurationStmt *node) -{ - WRITE_NODE_TYPE("AlterTSConfigurationStmt"); - - WRITE_ENUM_FIELD(kind); - WRITE_NODE_PTR_FIELD(cfgname); - WRITE_NODE_PTR_FIELD(tokentype); - WRITE_NODE_PTR_FIELD(dicts); - WRITE_BOOL_FIELD(override); - WRITE_BOOL_FIELD(replace); - WRITE_BOOL_FIELD(missing_ok); -} - -static void -_outCreateFdwStmt(StringInfo str, const CreateFdwStmt *node) -{ - WRITE_NODE_TYPE("CreateFdwStmt"); - - WRITE_STRING_FIELD(fdwname); - WRITE_NODE_PTR_FIELD(func_options); - WRITE_NODE_PTR_FIELD(options); -} - -static void -_outAlterFdwStmt(StringInfo str, const AlterFdwStmt *node) -{ - WRITE_NODE_TYPE("AlterFdwStmt"); - - WRITE_STRING_FIELD(fdwname); - WRITE_NODE_PTR_FIELD(func_options); - WRITE_NODE_PTR_FIELD(options); -} - -static void -_outCreateForeignServerStmt(StringInfo str, const CreateForeignServerStmt *node) -{ - WRITE_NODE_TYPE("CreateForeignServerStmt"); - - WRITE_STRING_FIELD(servername); - WRITE_STRING_FIELD(servertype); - WRITE_STRING_FIELD(version); - WRITE_STRING_FIELD(fdwname); - WRITE_BOOL_FIELD(if_not_exists); - WRITE_NODE_PTR_FIELD(options); -} - -static void -_outAlterForeignServerStmt(StringInfo str, const AlterForeignServerStmt *node) -{ - WRITE_NODE_TYPE("AlterForeignServerStmt"); - - WRITE_STRING_FIELD(servername); - WRITE_STRING_FIELD(version); - WRITE_NODE_PTR_FIELD(options); - WRITE_BOOL_FIELD(has_version); -} - -static void -_outCreateUserMappingStmt(StringInfo str, const CreateUserMappingStmt *node) -{ - WRITE_NODE_TYPE("CreateUserMappingStmt"); - - WRITE_NODE_PTR_FIELD(user); - WRITE_STRING_FIELD(servername); - WRITE_BOOL_FIELD(if_not_exists); - WRITE_NODE_PTR_FIELD(options); -} - -static void -_outAlterUserMappingStmt(StringInfo str, const AlterUserMappingStmt *node) -{ - WRITE_NODE_TYPE("AlterUserMappingStmt"); - - WRITE_NODE_PTR_FIELD(user); - WRITE_STRING_FIELD(servername); - WRITE_NODE_PTR_FIELD(options); -} - -static void -_outDropUserMappingStmt(StringInfo str, const DropUserMappingStmt *node) -{ - WRITE_NODE_TYPE("DropUserMappingStmt"); - - WRITE_NODE_PTR_FIELD(user); - WRITE_STRING_FIELD(servername); - WRITE_BOOL_FIELD(missing_ok); -} - -static void -_outAlterTableSpaceOptionsStmt(StringInfo str, const AlterTableSpaceOptionsStmt *node) -{ - WRITE_NODE_TYPE("AlterTableSpaceOptionsStmt"); - - WRITE_STRING_FIELD(tablespacename); - WRITE_NODE_PTR_FIELD(options); - WRITE_BOOL_FIELD(isReset); -} - -static void -_outAlterTableMoveAllStmt(StringInfo str, const AlterTableMoveAllStmt *node) -{ - WRITE_NODE_TYPE("AlterTableMoveAllStmt"); - - WRITE_STRING_FIELD(orig_tablespacename); - WRITE_ENUM_FIELD(objtype); - WRITE_NODE_PTR_FIELD(roles); - WRITE_STRING_FIELD(new_tablespacename); - WRITE_BOOL_FIELD(nowait); -} - -static void -_outSecLabelStmt(StringInfo str, const SecLabelStmt *node) -{ - WRITE_NODE_TYPE("SecLabelStmt"); - - WRITE_ENUM_FIELD(objtype); - WRITE_NODE_PTR_FIELD(object); - WRITE_STRING_FIELD(provider); - WRITE_STRING_FIELD(label); -} - -static void -_outCreateForeignTableStmt(StringInfo str, const CreateForeignTableStmt *node) -{ - WRITE_NODE_TYPE("CreateForeignTableStmt"); - - WRITE_NODE_FIELD_WITH_TYPE(base, CreateStmt); - WRITE_STRING_FIELD(servername); - WRITE_NODE_PTR_FIELD(options); -} - -static void -_outImportForeignSchemaStmt(StringInfo str, const ImportForeignSchemaStmt *node) -{ - WRITE_NODE_TYPE("ImportForeignSchemaStmt"); - - WRITE_STRING_FIELD(server_name); - WRITE_STRING_FIELD(remote_schema); - WRITE_STRING_FIELD(local_schema); - WRITE_ENUM_FIELD(list_type); - WRITE_NODE_PTR_FIELD(table_list); - WRITE_NODE_PTR_FIELD(options); -} - -static void -_outCreateExtensionStmt(StringInfo str, const CreateExtensionStmt *node) -{ - WRITE_NODE_TYPE("CreateExtensionStmt"); - - WRITE_STRING_FIELD(extname); - WRITE_BOOL_FIELD(if_not_exists); - WRITE_NODE_PTR_FIELD(options); -} - -static void -_outAlterExtensionStmt(StringInfo str, const AlterExtensionStmt *node) -{ - WRITE_NODE_TYPE("AlterExtensionStmt"); - - WRITE_STRING_FIELD(extname); - WRITE_NODE_PTR_FIELD(options); -} - -static void -_outAlterExtensionContentsStmt(StringInfo str, const AlterExtensionContentsStmt *node) -{ - WRITE_NODE_TYPE("AlterExtensionContentsStmt"); - - WRITE_STRING_FIELD(extname); - WRITE_INT_FIELD(action); - WRITE_ENUM_FIELD(objtype); - WRITE_NODE_PTR_FIELD(object); -} - -static void -_outCreateEventTrigStmt(StringInfo str, const CreateEventTrigStmt *node) -{ - WRITE_NODE_TYPE("CreateEventTrigStmt"); - - WRITE_STRING_FIELD(trigname); - WRITE_STRING_FIELD(eventname); - WRITE_NODE_PTR_FIELD(whenclause); - WRITE_NODE_PTR_FIELD(funcname); -} - -static void -_outAlterEventTrigStmt(StringInfo str, const AlterEventTrigStmt *node) -{ - WRITE_NODE_TYPE("AlterEventTrigStmt"); - - WRITE_STRING_FIELD(trigname); - WRITE_CHAR_FIELD(tgenabled); -} - -static void -_outRefreshMatViewStmt(StringInfo str, const RefreshMatViewStmt *node) -{ - WRITE_NODE_TYPE("RefreshMatViewStmt"); - - WRITE_BOOL_FIELD(concurrent); - WRITE_BOOL_FIELD(skipData); - WRITE_NODE_PTR_FIELD(relation); -} - -static void -_outReplicaIdentityStmt(StringInfo str, const ReplicaIdentityStmt *node) -{ - WRITE_NODE_TYPE("ReplicaIdentityStmt"); - - WRITE_CHAR_FIELD(identity_type); - WRITE_STRING_FIELD(name); -} - -static void -_outAlterSystemStmt(StringInfo str, const AlterSystemStmt *node) -{ - WRITE_NODE_TYPE("AlterSystemStmt"); - - WRITE_NODE_PTR_FIELD(setstmt); -} - -static void -_outCreatePolicyStmt(StringInfo str, const CreatePolicyStmt *node) -{ - WRITE_NODE_TYPE("CreatePolicyStmt"); - - WRITE_STRING_FIELD(policy_name); - WRITE_NODE_PTR_FIELD(table); - WRITE_STRING_FIELD(cmd_name); - WRITE_BOOL_FIELD(permissive); - WRITE_NODE_PTR_FIELD(roles); - WRITE_NODE_PTR_FIELD(qual); - WRITE_NODE_PTR_FIELD(with_check); -} - -static void -_outAlterPolicyStmt(StringInfo str, const AlterPolicyStmt *node) -{ - WRITE_NODE_TYPE("AlterPolicyStmt"); - - WRITE_STRING_FIELD(policy_name); - WRITE_NODE_PTR_FIELD(table); - WRITE_NODE_PTR_FIELD(roles); - WRITE_NODE_PTR_FIELD(qual); - WRITE_NODE_PTR_FIELD(with_check); -} - -static void -_outCreateTransformStmt(StringInfo str, const CreateTransformStmt *node) -{ - WRITE_NODE_TYPE("CreateTransformStmt"); - - WRITE_BOOL_FIELD(replace); - WRITE_NODE_PTR_FIELD(type_name); - WRITE_STRING_FIELD(lang); - WRITE_NODE_PTR_FIELD(fromsql); - WRITE_NODE_PTR_FIELD(tosql); -} - -static void -_outCreateAmStmt(StringInfo str, const CreateAmStmt *node) -{ - WRITE_NODE_TYPE("CreateAmStmt"); - - WRITE_STRING_FIELD(amname); - WRITE_NODE_PTR_FIELD(handler_name); - WRITE_CHAR_FIELD(amtype); -} - -static void -_outCreatePublicationStmt(StringInfo str, const CreatePublicationStmt *node) -{ - WRITE_NODE_TYPE("CreatePublicationStmt"); - - WRITE_STRING_FIELD(pubname); - WRITE_NODE_PTR_FIELD(options); - WRITE_NODE_PTR_FIELD(tables); - WRITE_BOOL_FIELD(for_all_tables); -} - -static void -_outAlterPublicationStmt(StringInfo str, const AlterPublicationStmt *node) -{ - WRITE_NODE_TYPE("AlterPublicationStmt"); - - WRITE_STRING_FIELD(pubname); - WRITE_NODE_PTR_FIELD(options); - WRITE_NODE_PTR_FIELD(tables); - WRITE_BOOL_FIELD(for_all_tables); - WRITE_ENUM_FIELD(tableAction); -} - -static void -_outCreateSubscriptionStmt(StringInfo str, const CreateSubscriptionStmt *node) -{ - WRITE_NODE_TYPE("CreateSubscriptionStmt"); - - WRITE_STRING_FIELD(subname); - WRITE_STRING_FIELD(conninfo); - WRITE_NODE_PTR_FIELD(publication); - WRITE_NODE_PTR_FIELD(options); -} - -static void -_outAlterSubscriptionStmt(StringInfo str, const AlterSubscriptionStmt *node) -{ - WRITE_NODE_TYPE("AlterSubscriptionStmt"); - - WRITE_ENUM_FIELD(kind); - WRITE_STRING_FIELD(subname); - WRITE_STRING_FIELD(conninfo); - WRITE_NODE_PTR_FIELD(publication); - WRITE_NODE_PTR_FIELD(options); -} - -static void -_outDropSubscriptionStmt(StringInfo str, const DropSubscriptionStmt *node) -{ - WRITE_NODE_TYPE("DropSubscriptionStmt"); - - WRITE_STRING_FIELD(subname); - WRITE_BOOL_FIELD(missing_ok); - WRITE_ENUM_FIELD(behavior); -} - -static void -_outCreateStatsStmt(StringInfo str, const CreateStatsStmt *node) -{ - WRITE_NODE_TYPE("CreateStatsStmt"); - - WRITE_NODE_PTR_FIELD(defnames); - WRITE_NODE_PTR_FIELD(stat_types); - WRITE_NODE_PTR_FIELD(exprs); - WRITE_NODE_PTR_FIELD(relations); - WRITE_BOOL_FIELD(if_not_exists); -} - -static void -_outAlterCollationStmt(StringInfo str, const AlterCollationStmt *node) -{ - WRITE_NODE_TYPE("AlterCollationStmt"); - - WRITE_NODE_PTR_FIELD(collname); -} - -static void -_outA_Expr(StringInfo str, const A_Expr *node) -{ - WRITE_NODE_TYPE("A_Expr"); - - WRITE_ENUM_FIELD(kind); - WRITE_NODE_PTR_FIELD(name); - WRITE_NODE_PTR_FIELD(lexpr); - WRITE_NODE_PTR_FIELD(rexpr); - WRITE_INT_FIELD(location); -} - -static void -_outColumnRef(StringInfo str, const ColumnRef *node) -{ - WRITE_NODE_TYPE("ColumnRef"); - - WRITE_NODE_PTR_FIELD(fields); - WRITE_INT_FIELD(location); -} - -static void -_outParamRef(StringInfo str, const ParamRef *node) -{ - WRITE_NODE_TYPE("ParamRef"); - - WRITE_INT_FIELD(number); - WRITE_INT_FIELD(location); -} - -static void -_outA_Const(StringInfo str, const A_Const *node) -{ - WRITE_NODE_TYPE("A_Const"); - - WRITE_NODE_FIELD(val); - WRITE_INT_FIELD(location); -} - -static void -_outFuncCall(StringInfo str, const FuncCall *node) -{ - WRITE_NODE_TYPE("FuncCall"); - - WRITE_NODE_PTR_FIELD(funcname); - WRITE_NODE_PTR_FIELD(args); - WRITE_NODE_PTR_FIELD(agg_order); - WRITE_NODE_PTR_FIELD(agg_filter); - WRITE_BOOL_FIELD(agg_within_group); - WRITE_BOOL_FIELD(agg_star); - WRITE_BOOL_FIELD(agg_distinct); - WRITE_BOOL_FIELD(func_variadic); - WRITE_NODE_PTR_FIELD(over); - WRITE_INT_FIELD(location); -} - -static void -_outA_Star(StringInfo str, const A_Star *node) -{ - WRITE_NODE_TYPE("A_Star"); - -} - -static void -_outA_Indices(StringInfo str, const A_Indices *node) -{ - WRITE_NODE_TYPE("A_Indices"); - - WRITE_BOOL_FIELD(is_slice); - WRITE_NODE_PTR_FIELD(lidx); - WRITE_NODE_PTR_FIELD(uidx); -} - -static void -_outA_Indirection(StringInfo str, const A_Indirection *node) -{ - WRITE_NODE_TYPE("A_Indirection"); - - WRITE_NODE_PTR_FIELD(arg); - WRITE_NODE_PTR_FIELD(indirection); -} - -static void -_outA_ArrayExpr(StringInfo str, const A_ArrayExpr *node) -{ - WRITE_NODE_TYPE("A_ArrayExpr"); - - WRITE_NODE_PTR_FIELD(elements); - WRITE_INT_FIELD(location); -} - -static void -_outResTarget(StringInfo str, const ResTarget *node) -{ - WRITE_NODE_TYPE("ResTarget"); - - WRITE_STRING_FIELD(name); - WRITE_NODE_PTR_FIELD(indirection); - WRITE_NODE_PTR_FIELD(val); - WRITE_INT_FIELD(location); -} - -static void -_outMultiAssignRef(StringInfo str, const MultiAssignRef *node) -{ - WRITE_NODE_TYPE("MultiAssignRef"); - - WRITE_NODE_PTR_FIELD(source); - WRITE_INT_FIELD(colno); - WRITE_INT_FIELD(ncolumns); -} - -static void -_outTypeCast(StringInfo str, const TypeCast *node) -{ - WRITE_NODE_TYPE("TypeCast"); - - WRITE_NODE_PTR_FIELD(arg); - WRITE_NODE_PTR_FIELD(typeName); - WRITE_INT_FIELD(location); -} - -static void -_outCollateClause(StringInfo str, const CollateClause *node) -{ - WRITE_NODE_TYPE("CollateClause"); - - WRITE_NODE_PTR_FIELD(arg); - WRITE_NODE_PTR_FIELD(collname); - WRITE_INT_FIELD(location); -} - -static void -_outSortBy(StringInfo str, const SortBy *node) -{ - WRITE_NODE_TYPE("SortBy"); - - WRITE_NODE_PTR_FIELD(node); - WRITE_ENUM_FIELD(sortby_dir); - WRITE_ENUM_FIELD(sortby_nulls); - WRITE_NODE_PTR_FIELD(useOp); - WRITE_INT_FIELD(location); -} - -static void -_outWindowDef(StringInfo str, const WindowDef *node) -{ - WRITE_NODE_TYPE("WindowDef"); - - WRITE_STRING_FIELD(name); - WRITE_STRING_FIELD(refname); - WRITE_NODE_PTR_FIELD(partitionClause); - WRITE_NODE_PTR_FIELD(orderClause); - WRITE_INT_FIELD(frameOptions); - WRITE_NODE_PTR_FIELD(startOffset); - WRITE_NODE_PTR_FIELD(endOffset); - WRITE_INT_FIELD(location); -} - -static void -_outRangeSubselect(StringInfo str, const RangeSubselect *node) -{ - WRITE_NODE_TYPE("RangeSubselect"); - - WRITE_BOOL_FIELD(lateral); - WRITE_NODE_PTR_FIELD(subquery); - WRITE_NODE_PTR_FIELD(alias); -} - -static void -_outRangeFunction(StringInfo str, const RangeFunction *node) -{ - WRITE_NODE_TYPE("RangeFunction"); - - WRITE_BOOL_FIELD(lateral); - WRITE_BOOL_FIELD(ordinality); - WRITE_BOOL_FIELD(is_rowsfrom); - WRITE_NODE_PTR_FIELD(functions); - WRITE_NODE_PTR_FIELD(alias); - WRITE_NODE_PTR_FIELD(coldeflist); -} - -static void -_outRangeTableSample(StringInfo str, const RangeTableSample *node) -{ - WRITE_NODE_TYPE("RangeTableSample"); - - WRITE_NODE_PTR_FIELD(relation); - WRITE_NODE_PTR_FIELD(method); - WRITE_NODE_PTR_FIELD(args); - WRITE_NODE_PTR_FIELD(repeatable); - WRITE_INT_FIELD(location); -} - -static void -_outRangeTableFunc(StringInfo str, const RangeTableFunc *node) -{ - WRITE_NODE_TYPE("RangeTableFunc"); - - WRITE_BOOL_FIELD(lateral); - WRITE_NODE_PTR_FIELD(docexpr); - WRITE_NODE_PTR_FIELD(rowexpr); - WRITE_NODE_PTR_FIELD(namespaces); - WRITE_NODE_PTR_FIELD(columns); - WRITE_NODE_PTR_FIELD(alias); - WRITE_INT_FIELD(location); -} - -static void -_outRangeTableFuncCol(StringInfo str, const RangeTableFuncCol *node) -{ - WRITE_NODE_TYPE("RangeTableFuncCol"); - - WRITE_STRING_FIELD(colname); - WRITE_NODE_PTR_FIELD(typeName); - WRITE_BOOL_FIELD(for_ordinality); - WRITE_BOOL_FIELD(is_not_null); - WRITE_NODE_PTR_FIELD(colexpr); - WRITE_NODE_PTR_FIELD(coldefexpr); - WRITE_INT_FIELD(location); -} - -static void -_outTypeName(StringInfo str, const TypeName *node) -{ - WRITE_NODE_TYPE("TypeName"); - - WRITE_NODE_PTR_FIELD(names); - WRITE_UINT_FIELD(typeOid); - WRITE_BOOL_FIELD(setof); - WRITE_BOOL_FIELD(pct_type); - WRITE_NODE_PTR_FIELD(typmods); - WRITE_INT_FIELD(typemod); - WRITE_NODE_PTR_FIELD(arrayBounds); - WRITE_INT_FIELD(location); -} - -static void -_outColumnDef(StringInfo str, const ColumnDef *node) -{ - WRITE_NODE_TYPE("ColumnDef"); - - WRITE_STRING_FIELD(colname); - WRITE_NODE_PTR_FIELD(typeName); - WRITE_INT_FIELD(inhcount); - WRITE_BOOL_FIELD(is_local); - WRITE_BOOL_FIELD(is_not_null); - WRITE_BOOL_FIELD(is_from_type); - WRITE_BOOL_FIELD(is_from_parent); - WRITE_CHAR_FIELD(storage); - WRITE_NODE_PTR_FIELD(raw_default); - WRITE_NODE_PTR_FIELD(cooked_default); - WRITE_CHAR_FIELD(identity); - WRITE_NODE_PTR_FIELD(collClause); - WRITE_UINT_FIELD(collOid); - WRITE_NODE_PTR_FIELD(constraints); - WRITE_NODE_PTR_FIELD(fdwoptions); - WRITE_INT_FIELD(location); -} - -static void -_outIndexElem(StringInfo str, const IndexElem *node) -{ - WRITE_NODE_TYPE("IndexElem"); - - WRITE_STRING_FIELD(name); - WRITE_NODE_PTR_FIELD(expr); - WRITE_STRING_FIELD(indexcolname); - WRITE_NODE_PTR_FIELD(collation); - WRITE_NODE_PTR_FIELD(opclass); - WRITE_ENUM_FIELD(ordering); - WRITE_ENUM_FIELD(nulls_ordering); -} - -static void -_outConstraint(StringInfo str, const Constraint *node) -{ - WRITE_NODE_TYPE("Constraint"); - - WRITE_ENUM_FIELD(contype); - WRITE_STRING_FIELD(conname); - WRITE_BOOL_FIELD(deferrable); - WRITE_BOOL_FIELD(initdeferred); - WRITE_INT_FIELD(location); - WRITE_BOOL_FIELD(is_no_inherit); - WRITE_NODE_PTR_FIELD(raw_expr); - WRITE_STRING_FIELD(cooked_expr); - WRITE_CHAR_FIELD(generated_when); - WRITE_NODE_PTR_FIELD(keys); - WRITE_NODE_PTR_FIELD(exclusions); - WRITE_NODE_PTR_FIELD(options); - WRITE_STRING_FIELD(indexname); - WRITE_STRING_FIELD(indexspace); - WRITE_STRING_FIELD(access_method); - WRITE_NODE_PTR_FIELD(where_clause); - WRITE_NODE_PTR_FIELD(pktable); - WRITE_NODE_PTR_FIELD(fk_attrs); - WRITE_NODE_PTR_FIELD(pk_attrs); - WRITE_CHAR_FIELD(fk_matchtype); - WRITE_CHAR_FIELD(fk_upd_action); - WRITE_CHAR_FIELD(fk_del_action); - WRITE_NODE_PTR_FIELD(old_conpfeqop); - WRITE_UINT_FIELD(old_pktable_oid); - WRITE_BOOL_FIELD(skip_validation); - WRITE_BOOL_FIELD(initially_valid); -} - -static void -_outDefElem(StringInfo str, const DefElem *node) -{ - WRITE_NODE_TYPE("DefElem"); - - WRITE_STRING_FIELD(defnamespace); - WRITE_STRING_FIELD(defname); - WRITE_NODE_PTR_FIELD(arg); - WRITE_ENUM_FIELD(defaction); - WRITE_INT_FIELD(location); -} - -static void -_outRangeTblEntry(StringInfo str, const RangeTblEntry *node) -{ - WRITE_NODE_TYPE("RangeTblEntry"); - - WRITE_ENUM_FIELD(rtekind); - WRITE_UINT_FIELD(relid); - WRITE_CHAR_FIELD(relkind); - WRITE_NODE_PTR_FIELD(tablesample); - WRITE_NODE_PTR_FIELD(subquery); - WRITE_BOOL_FIELD(security_barrier); - WRITE_ENUM_FIELD(jointype); - WRITE_NODE_PTR_FIELD(joinaliasvars); - WRITE_NODE_PTR_FIELD(functions); - WRITE_BOOL_FIELD(funcordinality); - WRITE_NODE_PTR_FIELD(tablefunc); - WRITE_NODE_PTR_FIELD(values_lists); - WRITE_STRING_FIELD(ctename); - WRITE_UINT_FIELD(ctelevelsup); - WRITE_BOOL_FIELD(self_reference); - WRITE_NODE_PTR_FIELD(coltypes); - WRITE_NODE_PTR_FIELD(coltypmods); - WRITE_NODE_PTR_FIELD(colcollations); - WRITE_STRING_FIELD(enrname); - WRITE_FLOAT_FIELD(enrtuples); - WRITE_NODE_PTR_FIELD(alias); - WRITE_NODE_PTR_FIELD(eref); - WRITE_BOOL_FIELD(lateral); - WRITE_BOOL_FIELD(inh); - WRITE_BOOL_FIELD(inFromCl); - WRITE_ENUM_FIELD(requiredPerms); - WRITE_UINT_FIELD(checkAsUser); - WRITE_BITMAPSET_FIELD(selectedCols); - WRITE_BITMAPSET_FIELD(insertedCols); - WRITE_BITMAPSET_FIELD(updatedCols); - WRITE_NODE_PTR_FIELD(securityQuals); -} - -static void -_outRangeTblFunction(StringInfo str, const RangeTblFunction *node) -{ - WRITE_NODE_TYPE("RangeTblFunction"); - - WRITE_NODE_PTR_FIELD(funcexpr); - WRITE_INT_FIELD(funccolcount); - WRITE_NODE_PTR_FIELD(funccolnames); - WRITE_NODE_PTR_FIELD(funccoltypes); - WRITE_NODE_PTR_FIELD(funccoltypmods); - WRITE_NODE_PTR_FIELD(funccolcollations); - WRITE_BITMAPSET_FIELD(funcparams); -} - -static void -_outTableSampleClause(StringInfo str, const TableSampleClause *node) -{ - WRITE_NODE_TYPE("TableSampleClause"); - - WRITE_UINT_FIELD(tsmhandler); - WRITE_NODE_PTR_FIELD(args); - WRITE_NODE_PTR_FIELD(repeatable); -} - -static void -_outWithCheckOption(StringInfo str, const WithCheckOption *node) -{ - WRITE_NODE_TYPE("WithCheckOption"); - - WRITE_ENUM_FIELD(kind); - WRITE_STRING_FIELD(relname); - WRITE_STRING_FIELD(polname); - WRITE_NODE_PTR_FIELD(qual); - WRITE_BOOL_FIELD(cascaded); -} - -static void -_outSortGroupClause(StringInfo str, const SortGroupClause *node) -{ - WRITE_NODE_TYPE("SortGroupClause"); - - WRITE_UINT_FIELD(tleSortGroupRef); - WRITE_UINT_FIELD(eqop); - WRITE_UINT_FIELD(sortop); - WRITE_BOOL_FIELD(nulls_first); - WRITE_BOOL_FIELD(hashable); -} - -static void -_outGroupingSet(StringInfo str, const GroupingSet *node) -{ - WRITE_NODE_TYPE("GroupingSet"); - - WRITE_ENUM_FIELD(kind); - WRITE_NODE_PTR_FIELD(content); - WRITE_INT_FIELD(location); -} - -static void -_outWindowClause(StringInfo str, const WindowClause *node) -{ - WRITE_NODE_TYPE("WindowClause"); - - WRITE_STRING_FIELD(name); - WRITE_STRING_FIELD(refname); - WRITE_NODE_PTR_FIELD(partitionClause); - WRITE_NODE_PTR_FIELD(orderClause); - WRITE_INT_FIELD(frameOptions); - WRITE_NODE_PTR_FIELD(startOffset); - WRITE_NODE_PTR_FIELD(endOffset); - WRITE_UINT_FIELD(winref); - WRITE_BOOL_FIELD(copiedOrder); -} - -static void -_outObjectWithArgs(StringInfo str, const ObjectWithArgs *node) -{ - WRITE_NODE_TYPE("ObjectWithArgs"); - - WRITE_NODE_PTR_FIELD(objname); - WRITE_NODE_PTR_FIELD(objargs); - WRITE_BOOL_FIELD(args_unspecified); -} - -static void -_outAccessPriv(StringInfo str, const AccessPriv *node) -{ - WRITE_NODE_TYPE("AccessPriv"); - - WRITE_STRING_FIELD(priv_name); - WRITE_NODE_PTR_FIELD(cols); -} - -static void -_outCreateOpClassItem(StringInfo str, const CreateOpClassItem *node) -{ - WRITE_NODE_TYPE("CreateOpClassItem"); - - WRITE_INT_FIELD(itemtype); - WRITE_NODE_PTR_FIELD(name); - WRITE_INT_FIELD(number); - WRITE_NODE_PTR_FIELD(order_family); - WRITE_NODE_PTR_FIELD(class_args); - WRITE_NODE_PTR_FIELD(storedtype); -} - -static void -_outTableLikeClause(StringInfo str, const TableLikeClause *node) -{ - WRITE_NODE_TYPE("TableLikeClause"); - - WRITE_NODE_PTR_FIELD(relation); - WRITE_UINT_FIELD(options); -} - -static void -_outFunctionParameter(StringInfo str, const FunctionParameter *node) -{ - WRITE_NODE_TYPE("FunctionParameter"); - - WRITE_STRING_FIELD(name); - WRITE_NODE_PTR_FIELD(argType); - WRITE_ENUM_FIELD(mode); - WRITE_NODE_PTR_FIELD(defexpr); -} - -static void -_outLockingClause(StringInfo str, const LockingClause *node) -{ - WRITE_NODE_TYPE("LockingClause"); - - WRITE_NODE_PTR_FIELD(lockedRels); - WRITE_ENUM_FIELD(strength); - WRITE_ENUM_FIELD(waitPolicy); -} - -static void -_outRowMarkClause(StringInfo str, const RowMarkClause *node) -{ - WRITE_NODE_TYPE("RowMarkClause"); - - WRITE_UINT_FIELD(rti); - WRITE_ENUM_FIELD(strength); - WRITE_ENUM_FIELD(waitPolicy); - WRITE_BOOL_FIELD(pushedDown); -} - -static void -_outXmlSerialize(StringInfo str, const XmlSerialize *node) -{ - WRITE_NODE_TYPE("XmlSerialize"); - - WRITE_ENUM_FIELD(xmloption); - WRITE_NODE_PTR_FIELD(expr); - WRITE_NODE_PTR_FIELD(typeName); - WRITE_INT_FIELD(location); -} - -static void -_outWithClause(StringInfo str, const WithClause *node) -{ - WRITE_NODE_TYPE("WithClause"); - - WRITE_NODE_PTR_FIELD(ctes); - WRITE_BOOL_FIELD(recursive); - WRITE_INT_FIELD(location); -} - -static void -_outInferClause(StringInfo str, const InferClause *node) -{ - WRITE_NODE_TYPE("InferClause"); - - WRITE_NODE_PTR_FIELD(indexElems); - WRITE_NODE_PTR_FIELD(whereClause); - WRITE_STRING_FIELD(conname); - WRITE_INT_FIELD(location); -} - -static void -_outOnConflictClause(StringInfo str, const OnConflictClause *node) -{ - WRITE_NODE_TYPE("OnConflictClause"); - - WRITE_ENUM_FIELD(action); - WRITE_NODE_PTR_FIELD(infer); - WRITE_NODE_PTR_FIELD(targetList); - WRITE_NODE_PTR_FIELD(whereClause); - WRITE_INT_FIELD(location); -} - -static void -_outCommonTableExpr(StringInfo str, const CommonTableExpr *node) -{ - WRITE_NODE_TYPE("CommonTableExpr"); - - WRITE_STRING_FIELD(ctename); - WRITE_NODE_PTR_FIELD(aliascolnames); - WRITE_NODE_PTR_FIELD(ctequery); - WRITE_INT_FIELD(location); - WRITE_BOOL_FIELD(cterecursive); - WRITE_INT_FIELD(cterefcount); - WRITE_NODE_PTR_FIELD(ctecolnames); - WRITE_NODE_PTR_FIELD(ctecoltypes); - WRITE_NODE_PTR_FIELD(ctecoltypmods); - WRITE_NODE_PTR_FIELD(ctecolcollations); -} - -static void -_outRoleSpec(StringInfo str, const RoleSpec *node) -{ - WRITE_NODE_TYPE("RoleSpec"); - - WRITE_ENUM_FIELD(roletype); - WRITE_STRING_FIELD(rolename); - WRITE_INT_FIELD(location); -} - -static void -_outTriggerTransition(StringInfo str, const TriggerTransition *node) -{ - WRITE_NODE_TYPE("TriggerTransition"); - - WRITE_STRING_FIELD(name); - WRITE_BOOL_FIELD(isNew); - WRITE_BOOL_FIELD(isTable); -} - -static void -_outPartitionElem(StringInfo str, const PartitionElem *node) -{ - WRITE_NODE_TYPE("PartitionElem"); - - WRITE_STRING_FIELD(name); - WRITE_NODE_PTR_FIELD(expr); - WRITE_NODE_PTR_FIELD(collation); - WRITE_NODE_PTR_FIELD(opclass); - WRITE_INT_FIELD(location); -} - -static void -_outPartitionSpec(StringInfo str, const PartitionSpec *node) -{ - WRITE_NODE_TYPE("PartitionSpec"); - - WRITE_STRING_FIELD(strategy); - WRITE_NODE_PTR_FIELD(partParams); - WRITE_INT_FIELD(location); -} - -static void -_outPartitionBoundSpec(StringInfo str, const PartitionBoundSpec *node) -{ - WRITE_NODE_TYPE("PartitionBoundSpec"); - - WRITE_CHAR_FIELD(strategy); - WRITE_NODE_PTR_FIELD(listdatums); - WRITE_NODE_PTR_FIELD(lowerdatums); - WRITE_NODE_PTR_FIELD(upperdatums); - WRITE_INT_FIELD(location); -} - -static void -_outPartitionRangeDatum(StringInfo str, const PartitionRangeDatum *node) -{ - WRITE_NODE_TYPE("PartitionRangeDatum"); - - WRITE_ENUM_FIELD(kind); - WRITE_NODE_PTR_FIELD(value); - WRITE_INT_FIELD(location); -} - -static void -_outPartitionCmd(StringInfo str, const PartitionCmd *node) -{ - WRITE_NODE_TYPE("PartitionCmd"); - - WRITE_NODE_PTR_FIELD(name); - WRITE_NODE_PTR_FIELD(bound); -} - -static void -_outInlineCodeBlock(StringInfo str, const InlineCodeBlock *node) -{ - WRITE_NODE_TYPE("InlineCodeBlock"); - - WRITE_STRING_FIELD(source_text); - WRITE_UINT_FIELD(langOid); - WRITE_BOOL_FIELD(langIsTrusted); -} - diff --git a/parser/include/pg_query_json_helper.c b/parser/include/pg_query_json_helper.c index ebe048e3..1a03e2d2 100644 --- a/parser/include/pg_query_json_helper.c +++ b/parser/include/pg_query_json_helper.c @@ -1,79 +1,11 @@ #include "lib/stringinfo.h" -/* Write the label for the node type */ -#define WRITE_NODE_TYPE(nodelabel) \ - appendStringInfoString(str, "\"" nodelabel "\": {") - -/* Write an integer field */ -#define WRITE_INT_FIELD(fldname) \ - if (node->fldname != 0) { \ - appendStringInfo(str, "\"" CppAsString(fldname) "\": %d, ", node->fldname); \ - } - -#define WRITE_INT_VALUE(fldname, value) \ - if (value != 0) { \ - appendStringInfo(str, "\"" CppAsString(fldname) "\": %d, ", value); \ - } - -/* Write an unsigned integer field */ -#define WRITE_UINT_FIELD(fldname) \ - if (node->fldname != 0) { \ - appendStringInfo(str, "\"" CppAsString(fldname) "\": %u, ", node->fldname); \ - } - -/* Write a long-integer field */ -#define WRITE_LONG_FIELD(fldname) \ - if (node->fldname != 0) { \ - appendStringInfo(str, "\"" CppAsString(fldname) "\": %ld, ", node->fldname); \ - } - -/* Write a char field (ie, one ascii character) */ -#define WRITE_CHAR_FIELD(fldname) \ - if (node->fldname != 0) { \ - appendStringInfo(str, "\"" CppAsString(fldname) "\": \"%c\", ", node->fldname); \ - } - -/* Write an enumerated-type field as an integer code */ -#define WRITE_ENUM_FIELD(fldname) \ - appendStringInfo(str, "\"" CppAsString(fldname) "\": %d, ", \ - (int) node->fldname) - -/* Write a float field */ -#define WRITE_FLOAT_FIELD(fldname) \ - appendStringInfo(str, "\"" CppAsString(fldname) "\": %f, ", node->fldname) - -/* Write a boolean field */ -#define WRITE_BOOL_FIELD(fldname) \ - if (node->fldname) { \ - appendStringInfo(str, "\"" CppAsString(fldname) "\": %s, ", \ - booltostr(node->fldname)); \ - } - -/* Write a character-string (possibly NULL) field */ -#define WRITE_STRING_FIELD(fldname) \ - if (node->fldname != NULL) { \ - appendStringInfo(str, "\"" CppAsString(fldname) "\": "); \ - _outToken(str, node->fldname); \ - appendStringInfo(str, ", "); \ - } - -#define WRITE_STRING_VALUE(fldname, value) \ - if (true) { \ - appendStringInfo(str, "\"" CppAsString(fldname) "\": "); \ - _outToken(str, value); \ - appendStringInfo(str, ", "); \ - } - - #define booltostr(x) ((x) ? "true" : "false") static void removeTrailingDelimiter(StringInfo str) { - if (str->len >= 2 && str->data[str->len - 2] == ',' && str->data[str->len - 1] == ' ') { - str->len -= 2; - str->data[str->len] = '\0'; - } else if (str->len >= 1 && str->data[str->len - 1] == ',') { + if (str->len >= 1 && str->data[str->len - 1] == ',') { str->len -= 1; str->data[str->len] = '\0'; } @@ -118,7 +50,7 @@ _outToken(StringInfo buf, const char *str) appendStringInfoString(buf, "\\\\"); break; default: - if ((unsigned char) *p < ' ') + if ((unsigned char) *p < ' ' || *p == '<' || *p == '>') appendStringInfo(buf, "\\u%04x", (int) *p); else appendStringInfoCharMacro(buf, *p); diff --git a/parser/include/pg_query_outfuncs_conds.c b/parser/include/pg_query_outfuncs_conds.c new file mode 100644 index 00000000..d5a18b54 --- /dev/null +++ b/parser/include/pg_query_outfuncs_conds.c @@ -0,0 +1,686 @@ +// This file is autogenerated by ./scripts/generate_protobuf_and_funcs.rb + +case T_Integer: + OUT_NODE(Integer, Integer, integer, INTEGER, Value, integer); + break; +case T_Float: + OUT_NODE(Float, Float, float, FLOAT, Value, float_); + break; +case T_String: + OUT_NODE(String, String, string, STRING, Value, string); + break; +case T_BitString: + OUT_NODE(BitString, BitString, bit_string, BIT_STRING, Value, bit_string); + break; +case T_Null: + OUT_NODE(Null, Null, null, NULL, Value, null); + break; +case T_List: + OUT_NODE(List, List, list, LIST, List, list); + break; +case T_IntList: + OUT_NODE(IntList, IntList, int_list, INT_LIST, List, int_list); + break; +case T_OidList: + OUT_NODE(OidList, OidList, oid_list, OID_LIST, List, oid_list); + break; +case T_Alias: + OUT_NODE(Alias, Alias, alias, ALIAS, Alias, alias); + break; +case T_RangeVar: + OUT_NODE(RangeVar, RangeVar, range_var, RANGE_VAR, RangeVar, range_var); + break; +case T_TableFunc: + OUT_NODE(TableFunc, TableFunc, table_func, TABLE_FUNC, TableFunc, table_func); + break; +case T_Expr: + OUT_NODE(Expr, Expr, expr, EXPR, Expr, expr); + break; +case T_Var: + OUT_NODE(Var, Var, var, VAR, Var, var); + break; +case T_Param: + OUT_NODE(Param, Param, param, PARAM, Param, param); + break; +case T_Aggref: + OUT_NODE(Aggref, Aggref, aggref, AGGREF, Aggref, aggref); + break; +case T_GroupingFunc: + OUT_NODE(GroupingFunc, GroupingFunc, grouping_func, GROUPING_FUNC, GroupingFunc, grouping_func); + break; +case T_WindowFunc: + OUT_NODE(WindowFunc, WindowFunc, window_func, WINDOW_FUNC, WindowFunc, window_func); + break; +case T_SubscriptingRef: + OUT_NODE(SubscriptingRef, SubscriptingRef, subscripting_ref, SUBSCRIPTING_REF, SubscriptingRef, subscripting_ref); + break; +case T_FuncExpr: + OUT_NODE(FuncExpr, FuncExpr, func_expr, FUNC_EXPR, FuncExpr, func_expr); + break; +case T_NamedArgExpr: + OUT_NODE(NamedArgExpr, NamedArgExpr, named_arg_expr, NAMED_ARG_EXPR, NamedArgExpr, named_arg_expr); + break; +case T_OpExpr: + OUT_NODE(OpExpr, OpExpr, op_expr, OP_EXPR, OpExpr, op_expr); + break; +case T_DistinctExpr: + OUT_NODE(DistinctExpr, DistinctExpr, distinct_expr, DISTINCT_EXPR, DistinctExpr, distinct_expr); + break; +case T_NullIfExpr: + OUT_NODE(NullIfExpr, NullIfExpr, null_if_expr, NULL_IF_EXPR, NullIfExpr, null_if_expr); + break; +case T_ScalarArrayOpExpr: + OUT_NODE(ScalarArrayOpExpr, ScalarArrayOpExpr, scalar_array_op_expr, SCALAR_ARRAY_OP_EXPR, ScalarArrayOpExpr, scalar_array_op_expr); + break; +case T_BoolExpr: + OUT_NODE(BoolExpr, BoolExpr, bool_expr, BOOL_EXPR, BoolExpr, bool_expr); + break; +case T_SubLink: + OUT_NODE(SubLink, SubLink, sub_link, SUB_LINK, SubLink, sub_link); + break; +case T_SubPlan: + OUT_NODE(SubPlan, SubPlan, sub_plan, SUB_PLAN, SubPlan, sub_plan); + break; +case T_AlternativeSubPlan: + OUT_NODE(AlternativeSubPlan, AlternativeSubPlan, alternative_sub_plan, ALTERNATIVE_SUB_PLAN, AlternativeSubPlan, alternative_sub_plan); + break; +case T_FieldSelect: + OUT_NODE(FieldSelect, FieldSelect, field_select, FIELD_SELECT, FieldSelect, field_select); + break; +case T_FieldStore: + OUT_NODE(FieldStore, FieldStore, field_store, FIELD_STORE, FieldStore, field_store); + break; +case T_RelabelType: + OUT_NODE(RelabelType, RelabelType, relabel_type, RELABEL_TYPE, RelabelType, relabel_type); + break; +case T_CoerceViaIO: + OUT_NODE(CoerceViaIO, CoerceViaIO, coerce_via_io, COERCE_VIA_IO, CoerceViaIO, coerce_via_io); + break; +case T_ArrayCoerceExpr: + OUT_NODE(ArrayCoerceExpr, ArrayCoerceExpr, array_coerce_expr, ARRAY_COERCE_EXPR, ArrayCoerceExpr, array_coerce_expr); + break; +case T_ConvertRowtypeExpr: + OUT_NODE(ConvertRowtypeExpr, ConvertRowtypeExpr, convert_rowtype_expr, CONVERT_ROWTYPE_EXPR, ConvertRowtypeExpr, convert_rowtype_expr); + break; +case T_CollateExpr: + OUT_NODE(CollateExpr, CollateExpr, collate_expr, COLLATE_EXPR, CollateExpr, collate_expr); + break; +case T_CaseExpr: + OUT_NODE(CaseExpr, CaseExpr, case_expr, CASE_EXPR, CaseExpr, case_expr); + break; +case T_CaseWhen: + OUT_NODE(CaseWhen, CaseWhen, case_when, CASE_WHEN, CaseWhen, case_when); + break; +case T_CaseTestExpr: + OUT_NODE(CaseTestExpr, CaseTestExpr, case_test_expr, CASE_TEST_EXPR, CaseTestExpr, case_test_expr); + break; +case T_ArrayExpr: + OUT_NODE(ArrayExpr, ArrayExpr, array_expr, ARRAY_EXPR, ArrayExpr, array_expr); + break; +case T_RowExpr: + OUT_NODE(RowExpr, RowExpr, row_expr, ROW_EXPR, RowExpr, row_expr); + break; +case T_RowCompareExpr: + OUT_NODE(RowCompareExpr, RowCompareExpr, row_compare_expr, ROW_COMPARE_EXPR, RowCompareExpr, row_compare_expr); + break; +case T_CoalesceExpr: + OUT_NODE(CoalesceExpr, CoalesceExpr, coalesce_expr, COALESCE_EXPR, CoalesceExpr, coalesce_expr); + break; +case T_MinMaxExpr: + OUT_NODE(MinMaxExpr, MinMaxExpr, min_max_expr, MIN_MAX_EXPR, MinMaxExpr, min_max_expr); + break; +case T_SQLValueFunction: + OUT_NODE(SQLValueFunction, SQLValueFunction, sqlvalue_function, SQLVALUE_FUNCTION, SQLValueFunction, sqlvalue_function); + break; +case T_XmlExpr: + OUT_NODE(XmlExpr, XmlExpr, xml_expr, XML_EXPR, XmlExpr, xml_expr); + break; +case T_NullTest: + OUT_NODE(NullTest, NullTest, null_test, NULL_TEST, NullTest, null_test); + break; +case T_BooleanTest: + OUT_NODE(BooleanTest, BooleanTest, boolean_test, BOOLEAN_TEST, BooleanTest, boolean_test); + break; +case T_CoerceToDomain: + OUT_NODE(CoerceToDomain, CoerceToDomain, coerce_to_domain, COERCE_TO_DOMAIN, CoerceToDomain, coerce_to_domain); + break; +case T_CoerceToDomainValue: + OUT_NODE(CoerceToDomainValue, CoerceToDomainValue, coerce_to_domain_value, COERCE_TO_DOMAIN_VALUE, CoerceToDomainValue, coerce_to_domain_value); + break; +case T_SetToDefault: + OUT_NODE(SetToDefault, SetToDefault, set_to_default, SET_TO_DEFAULT, SetToDefault, set_to_default); + break; +case T_CurrentOfExpr: + OUT_NODE(CurrentOfExpr, CurrentOfExpr, current_of_expr, CURRENT_OF_EXPR, CurrentOfExpr, current_of_expr); + break; +case T_NextValueExpr: + OUT_NODE(NextValueExpr, NextValueExpr, next_value_expr, NEXT_VALUE_EXPR, NextValueExpr, next_value_expr); + break; +case T_InferenceElem: + OUT_NODE(InferenceElem, InferenceElem, inference_elem, INFERENCE_ELEM, InferenceElem, inference_elem); + break; +case T_TargetEntry: + OUT_NODE(TargetEntry, TargetEntry, target_entry, TARGET_ENTRY, TargetEntry, target_entry); + break; +case T_RangeTblRef: + OUT_NODE(RangeTblRef, RangeTblRef, range_tbl_ref, RANGE_TBL_REF, RangeTblRef, range_tbl_ref); + break; +case T_JoinExpr: + OUT_NODE(JoinExpr, JoinExpr, join_expr, JOIN_EXPR, JoinExpr, join_expr); + break; +case T_FromExpr: + OUT_NODE(FromExpr, FromExpr, from_expr, FROM_EXPR, FromExpr, from_expr); + break; +case T_OnConflictExpr: + OUT_NODE(OnConflictExpr, OnConflictExpr, on_conflict_expr, ON_CONFLICT_EXPR, OnConflictExpr, on_conflict_expr); + break; +case T_IntoClause: + OUT_NODE(IntoClause, IntoClause, into_clause, INTO_CLAUSE, IntoClause, into_clause); + break; +case T_RawStmt: + OUT_NODE(RawStmt, RawStmt, raw_stmt, RAW_STMT, RawStmt, raw_stmt); + break; +case T_Query: + OUT_NODE(Query, Query, query, QUERY, Query, query); + break; +case T_InsertStmt: + OUT_NODE(InsertStmt, InsertStmt, insert_stmt, INSERT_STMT, InsertStmt, insert_stmt); + break; +case T_DeleteStmt: + OUT_NODE(DeleteStmt, DeleteStmt, delete_stmt, DELETE_STMT, DeleteStmt, delete_stmt); + break; +case T_UpdateStmt: + OUT_NODE(UpdateStmt, UpdateStmt, update_stmt, UPDATE_STMT, UpdateStmt, update_stmt); + break; +case T_SelectStmt: + OUT_NODE(SelectStmt, SelectStmt, select_stmt, SELECT_STMT, SelectStmt, select_stmt); + break; +case T_AlterTableStmt: + OUT_NODE(AlterTableStmt, AlterTableStmt, alter_table_stmt, ALTER_TABLE_STMT, AlterTableStmt, alter_table_stmt); + break; +case T_AlterTableCmd: + OUT_NODE(AlterTableCmd, AlterTableCmd, alter_table_cmd, ALTER_TABLE_CMD, AlterTableCmd, alter_table_cmd); + break; +case T_AlterDomainStmt: + OUT_NODE(AlterDomainStmt, AlterDomainStmt, alter_domain_stmt, ALTER_DOMAIN_STMT, AlterDomainStmt, alter_domain_stmt); + break; +case T_SetOperationStmt: + OUT_NODE(SetOperationStmt, SetOperationStmt, set_operation_stmt, SET_OPERATION_STMT, SetOperationStmt, set_operation_stmt); + break; +case T_GrantStmt: + OUT_NODE(GrantStmt, GrantStmt, grant_stmt, GRANT_STMT, GrantStmt, grant_stmt); + break; +case T_GrantRoleStmt: + OUT_NODE(GrantRoleStmt, GrantRoleStmt, grant_role_stmt, GRANT_ROLE_STMT, GrantRoleStmt, grant_role_stmt); + break; +case T_AlterDefaultPrivilegesStmt: + OUT_NODE(AlterDefaultPrivilegesStmt, AlterDefaultPrivilegesStmt, alter_default_privileges_stmt, ALTER_DEFAULT_PRIVILEGES_STMT, AlterDefaultPrivilegesStmt, alter_default_privileges_stmt); + break; +case T_ClosePortalStmt: + OUT_NODE(ClosePortalStmt, ClosePortalStmt, close_portal_stmt, CLOSE_PORTAL_STMT, ClosePortalStmt, close_portal_stmt); + break; +case T_ClusterStmt: + OUT_NODE(ClusterStmt, ClusterStmt, cluster_stmt, CLUSTER_STMT, ClusterStmt, cluster_stmt); + break; +case T_CopyStmt: + OUT_NODE(CopyStmt, CopyStmt, copy_stmt, COPY_STMT, CopyStmt, copy_stmt); + break; +case T_CreateStmt: + OUT_NODE(CreateStmt, CreateStmt, create_stmt, CREATE_STMT, CreateStmt, create_stmt); + break; +case T_DefineStmt: + OUT_NODE(DefineStmt, DefineStmt, define_stmt, DEFINE_STMT, DefineStmt, define_stmt); + break; +case T_DropStmt: + OUT_NODE(DropStmt, DropStmt, drop_stmt, DROP_STMT, DropStmt, drop_stmt); + break; +case T_TruncateStmt: + OUT_NODE(TruncateStmt, TruncateStmt, truncate_stmt, TRUNCATE_STMT, TruncateStmt, truncate_stmt); + break; +case T_CommentStmt: + OUT_NODE(CommentStmt, CommentStmt, comment_stmt, COMMENT_STMT, CommentStmt, comment_stmt); + break; +case T_FetchStmt: + OUT_NODE(FetchStmt, FetchStmt, fetch_stmt, FETCH_STMT, FetchStmt, fetch_stmt); + break; +case T_IndexStmt: + OUT_NODE(IndexStmt, IndexStmt, index_stmt, INDEX_STMT, IndexStmt, index_stmt); + break; +case T_CreateFunctionStmt: + OUT_NODE(CreateFunctionStmt, CreateFunctionStmt, create_function_stmt, CREATE_FUNCTION_STMT, CreateFunctionStmt, create_function_stmt); + break; +case T_AlterFunctionStmt: + OUT_NODE(AlterFunctionStmt, AlterFunctionStmt, alter_function_stmt, ALTER_FUNCTION_STMT, AlterFunctionStmt, alter_function_stmt); + break; +case T_DoStmt: + OUT_NODE(DoStmt, DoStmt, do_stmt, DO_STMT, DoStmt, do_stmt); + break; +case T_RenameStmt: + OUT_NODE(RenameStmt, RenameStmt, rename_stmt, RENAME_STMT, RenameStmt, rename_stmt); + break; +case T_RuleStmt: + OUT_NODE(RuleStmt, RuleStmt, rule_stmt, RULE_STMT, RuleStmt, rule_stmt); + break; +case T_NotifyStmt: + OUT_NODE(NotifyStmt, NotifyStmt, notify_stmt, NOTIFY_STMT, NotifyStmt, notify_stmt); + break; +case T_ListenStmt: + OUT_NODE(ListenStmt, ListenStmt, listen_stmt, LISTEN_STMT, ListenStmt, listen_stmt); + break; +case T_UnlistenStmt: + OUT_NODE(UnlistenStmt, UnlistenStmt, unlisten_stmt, UNLISTEN_STMT, UnlistenStmt, unlisten_stmt); + break; +case T_TransactionStmt: + OUT_NODE(TransactionStmt, TransactionStmt, transaction_stmt, TRANSACTION_STMT, TransactionStmt, transaction_stmt); + break; +case T_ViewStmt: + OUT_NODE(ViewStmt, ViewStmt, view_stmt, VIEW_STMT, ViewStmt, view_stmt); + break; +case T_LoadStmt: + OUT_NODE(LoadStmt, LoadStmt, load_stmt, LOAD_STMT, LoadStmt, load_stmt); + break; +case T_CreateDomainStmt: + OUT_NODE(CreateDomainStmt, CreateDomainStmt, create_domain_stmt, CREATE_DOMAIN_STMT, CreateDomainStmt, create_domain_stmt); + break; +case T_CreatedbStmt: + OUT_NODE(CreatedbStmt, CreatedbStmt, createdb_stmt, CREATEDB_STMT, CreatedbStmt, createdb_stmt); + break; +case T_DropdbStmt: + OUT_NODE(DropdbStmt, DropdbStmt, dropdb_stmt, DROPDB_STMT, DropdbStmt, dropdb_stmt); + break; +case T_VacuumStmt: + OUT_NODE(VacuumStmt, VacuumStmt, vacuum_stmt, VACUUM_STMT, VacuumStmt, vacuum_stmt); + break; +case T_ExplainStmt: + OUT_NODE(ExplainStmt, ExplainStmt, explain_stmt, EXPLAIN_STMT, ExplainStmt, explain_stmt); + break; +case T_CreateTableAsStmt: + OUT_NODE(CreateTableAsStmt, CreateTableAsStmt, create_table_as_stmt, CREATE_TABLE_AS_STMT, CreateTableAsStmt, create_table_as_stmt); + break; +case T_CreateSeqStmt: + OUT_NODE(CreateSeqStmt, CreateSeqStmt, create_seq_stmt, CREATE_SEQ_STMT, CreateSeqStmt, create_seq_stmt); + break; +case T_AlterSeqStmt: + OUT_NODE(AlterSeqStmt, AlterSeqStmt, alter_seq_stmt, ALTER_SEQ_STMT, AlterSeqStmt, alter_seq_stmt); + break; +case T_VariableSetStmt: + OUT_NODE(VariableSetStmt, VariableSetStmt, variable_set_stmt, VARIABLE_SET_STMT, VariableSetStmt, variable_set_stmt); + break; +case T_VariableShowStmt: + OUT_NODE(VariableShowStmt, VariableShowStmt, variable_show_stmt, VARIABLE_SHOW_STMT, VariableShowStmt, variable_show_stmt); + break; +case T_DiscardStmt: + OUT_NODE(DiscardStmt, DiscardStmt, discard_stmt, DISCARD_STMT, DiscardStmt, discard_stmt); + break; +case T_CreateTrigStmt: + OUT_NODE(CreateTrigStmt, CreateTrigStmt, create_trig_stmt, CREATE_TRIG_STMT, CreateTrigStmt, create_trig_stmt); + break; +case T_CreatePLangStmt: + OUT_NODE(CreatePLangStmt, CreatePLangStmt, create_plang_stmt, CREATE_PLANG_STMT, CreatePLangStmt, create_plang_stmt); + break; +case T_CreateRoleStmt: + OUT_NODE(CreateRoleStmt, CreateRoleStmt, create_role_stmt, CREATE_ROLE_STMT, CreateRoleStmt, create_role_stmt); + break; +case T_AlterRoleStmt: + OUT_NODE(AlterRoleStmt, AlterRoleStmt, alter_role_stmt, ALTER_ROLE_STMT, AlterRoleStmt, alter_role_stmt); + break; +case T_DropRoleStmt: + OUT_NODE(DropRoleStmt, DropRoleStmt, drop_role_stmt, DROP_ROLE_STMT, DropRoleStmt, drop_role_stmt); + break; +case T_LockStmt: + OUT_NODE(LockStmt, LockStmt, lock_stmt, LOCK_STMT, LockStmt, lock_stmt); + break; +case T_ConstraintsSetStmt: + OUT_NODE(ConstraintsSetStmt, ConstraintsSetStmt, constraints_set_stmt, CONSTRAINTS_SET_STMT, ConstraintsSetStmt, constraints_set_stmt); + break; +case T_ReindexStmt: + OUT_NODE(ReindexStmt, ReindexStmt, reindex_stmt, REINDEX_STMT, ReindexStmt, reindex_stmt); + break; +case T_CheckPointStmt: + OUT_NODE(CheckPointStmt, CheckPointStmt, check_point_stmt, CHECK_POINT_STMT, CheckPointStmt, check_point_stmt); + break; +case T_CreateSchemaStmt: + OUT_NODE(CreateSchemaStmt, CreateSchemaStmt, create_schema_stmt, CREATE_SCHEMA_STMT, CreateSchemaStmt, create_schema_stmt); + break; +case T_AlterDatabaseStmt: + OUT_NODE(AlterDatabaseStmt, AlterDatabaseStmt, alter_database_stmt, ALTER_DATABASE_STMT, AlterDatabaseStmt, alter_database_stmt); + break; +case T_AlterDatabaseSetStmt: + OUT_NODE(AlterDatabaseSetStmt, AlterDatabaseSetStmt, alter_database_set_stmt, ALTER_DATABASE_SET_STMT, AlterDatabaseSetStmt, alter_database_set_stmt); + break; +case T_AlterRoleSetStmt: + OUT_NODE(AlterRoleSetStmt, AlterRoleSetStmt, alter_role_set_stmt, ALTER_ROLE_SET_STMT, AlterRoleSetStmt, alter_role_set_stmt); + break; +case T_CreateConversionStmt: + OUT_NODE(CreateConversionStmt, CreateConversionStmt, create_conversion_stmt, CREATE_CONVERSION_STMT, CreateConversionStmt, create_conversion_stmt); + break; +case T_CreateCastStmt: + OUT_NODE(CreateCastStmt, CreateCastStmt, create_cast_stmt, CREATE_CAST_STMT, CreateCastStmt, create_cast_stmt); + break; +case T_CreateOpClassStmt: + OUT_NODE(CreateOpClassStmt, CreateOpClassStmt, create_op_class_stmt, CREATE_OP_CLASS_STMT, CreateOpClassStmt, create_op_class_stmt); + break; +case T_CreateOpFamilyStmt: + OUT_NODE(CreateOpFamilyStmt, CreateOpFamilyStmt, create_op_family_stmt, CREATE_OP_FAMILY_STMT, CreateOpFamilyStmt, create_op_family_stmt); + break; +case T_AlterOpFamilyStmt: + OUT_NODE(AlterOpFamilyStmt, AlterOpFamilyStmt, alter_op_family_stmt, ALTER_OP_FAMILY_STMT, AlterOpFamilyStmt, alter_op_family_stmt); + break; +case T_PrepareStmt: + OUT_NODE(PrepareStmt, PrepareStmt, prepare_stmt, PREPARE_STMT, PrepareStmt, prepare_stmt); + break; +case T_ExecuteStmt: + OUT_NODE(ExecuteStmt, ExecuteStmt, execute_stmt, EXECUTE_STMT, ExecuteStmt, execute_stmt); + break; +case T_DeallocateStmt: + OUT_NODE(DeallocateStmt, DeallocateStmt, deallocate_stmt, DEALLOCATE_STMT, DeallocateStmt, deallocate_stmt); + break; +case T_DeclareCursorStmt: + OUT_NODE(DeclareCursorStmt, DeclareCursorStmt, declare_cursor_stmt, DECLARE_CURSOR_STMT, DeclareCursorStmt, declare_cursor_stmt); + break; +case T_CreateTableSpaceStmt: + OUT_NODE(CreateTableSpaceStmt, CreateTableSpaceStmt, create_table_space_stmt, CREATE_TABLE_SPACE_STMT, CreateTableSpaceStmt, create_table_space_stmt); + break; +case T_DropTableSpaceStmt: + OUT_NODE(DropTableSpaceStmt, DropTableSpaceStmt, drop_table_space_stmt, DROP_TABLE_SPACE_STMT, DropTableSpaceStmt, drop_table_space_stmt); + break; +case T_AlterObjectDependsStmt: + OUT_NODE(AlterObjectDependsStmt, AlterObjectDependsStmt, alter_object_depends_stmt, ALTER_OBJECT_DEPENDS_STMT, AlterObjectDependsStmt, alter_object_depends_stmt); + break; +case T_AlterObjectSchemaStmt: + OUT_NODE(AlterObjectSchemaStmt, AlterObjectSchemaStmt, alter_object_schema_stmt, ALTER_OBJECT_SCHEMA_STMT, AlterObjectSchemaStmt, alter_object_schema_stmt); + break; +case T_AlterOwnerStmt: + OUT_NODE(AlterOwnerStmt, AlterOwnerStmt, alter_owner_stmt, ALTER_OWNER_STMT, AlterOwnerStmt, alter_owner_stmt); + break; +case T_AlterOperatorStmt: + OUT_NODE(AlterOperatorStmt, AlterOperatorStmt, alter_operator_stmt, ALTER_OPERATOR_STMT, AlterOperatorStmt, alter_operator_stmt); + break; +case T_AlterTypeStmt: + OUT_NODE(AlterTypeStmt, AlterTypeStmt, alter_type_stmt, ALTER_TYPE_STMT, AlterTypeStmt, alter_type_stmt); + break; +case T_DropOwnedStmt: + OUT_NODE(DropOwnedStmt, DropOwnedStmt, drop_owned_stmt, DROP_OWNED_STMT, DropOwnedStmt, drop_owned_stmt); + break; +case T_ReassignOwnedStmt: + OUT_NODE(ReassignOwnedStmt, ReassignOwnedStmt, reassign_owned_stmt, REASSIGN_OWNED_STMT, ReassignOwnedStmt, reassign_owned_stmt); + break; +case T_CompositeTypeStmt: + OUT_NODE(CompositeTypeStmt, CompositeTypeStmt, composite_type_stmt, COMPOSITE_TYPE_STMT, CompositeTypeStmt, composite_type_stmt); + break; +case T_CreateEnumStmt: + OUT_NODE(CreateEnumStmt, CreateEnumStmt, create_enum_stmt, CREATE_ENUM_STMT, CreateEnumStmt, create_enum_stmt); + break; +case T_CreateRangeStmt: + OUT_NODE(CreateRangeStmt, CreateRangeStmt, create_range_stmt, CREATE_RANGE_STMT, CreateRangeStmt, create_range_stmt); + break; +case T_AlterEnumStmt: + OUT_NODE(AlterEnumStmt, AlterEnumStmt, alter_enum_stmt, ALTER_ENUM_STMT, AlterEnumStmt, alter_enum_stmt); + break; +case T_AlterTSDictionaryStmt: + OUT_NODE(AlterTSDictionaryStmt, AlterTSDictionaryStmt, alter_tsdictionary_stmt, ALTER_TSDICTIONARY_STMT, AlterTSDictionaryStmt, alter_tsdictionary_stmt); + break; +case T_AlterTSConfigurationStmt: + OUT_NODE(AlterTSConfigurationStmt, AlterTSConfigurationStmt, alter_tsconfiguration_stmt, ALTER_TSCONFIGURATION_STMT, AlterTSConfigurationStmt, alter_tsconfiguration_stmt); + break; +case T_CreateFdwStmt: + OUT_NODE(CreateFdwStmt, CreateFdwStmt, create_fdw_stmt, CREATE_FDW_STMT, CreateFdwStmt, create_fdw_stmt); + break; +case T_AlterFdwStmt: + OUT_NODE(AlterFdwStmt, AlterFdwStmt, alter_fdw_stmt, ALTER_FDW_STMT, AlterFdwStmt, alter_fdw_stmt); + break; +case T_CreateForeignServerStmt: + OUT_NODE(CreateForeignServerStmt, CreateForeignServerStmt, create_foreign_server_stmt, CREATE_FOREIGN_SERVER_STMT, CreateForeignServerStmt, create_foreign_server_stmt); + break; +case T_AlterForeignServerStmt: + OUT_NODE(AlterForeignServerStmt, AlterForeignServerStmt, alter_foreign_server_stmt, ALTER_FOREIGN_SERVER_STMT, AlterForeignServerStmt, alter_foreign_server_stmt); + break; +case T_CreateUserMappingStmt: + OUT_NODE(CreateUserMappingStmt, CreateUserMappingStmt, create_user_mapping_stmt, CREATE_USER_MAPPING_STMT, CreateUserMappingStmt, create_user_mapping_stmt); + break; +case T_AlterUserMappingStmt: + OUT_NODE(AlterUserMappingStmt, AlterUserMappingStmt, alter_user_mapping_stmt, ALTER_USER_MAPPING_STMT, AlterUserMappingStmt, alter_user_mapping_stmt); + break; +case T_DropUserMappingStmt: + OUT_NODE(DropUserMappingStmt, DropUserMappingStmt, drop_user_mapping_stmt, DROP_USER_MAPPING_STMT, DropUserMappingStmt, drop_user_mapping_stmt); + break; +case T_AlterTableSpaceOptionsStmt: + OUT_NODE(AlterTableSpaceOptionsStmt, AlterTableSpaceOptionsStmt, alter_table_space_options_stmt, ALTER_TABLE_SPACE_OPTIONS_STMT, AlterTableSpaceOptionsStmt, alter_table_space_options_stmt); + break; +case T_AlterTableMoveAllStmt: + OUT_NODE(AlterTableMoveAllStmt, AlterTableMoveAllStmt, alter_table_move_all_stmt, ALTER_TABLE_MOVE_ALL_STMT, AlterTableMoveAllStmt, alter_table_move_all_stmt); + break; +case T_SecLabelStmt: + OUT_NODE(SecLabelStmt, SecLabelStmt, sec_label_stmt, SEC_LABEL_STMT, SecLabelStmt, sec_label_stmt); + break; +case T_CreateForeignTableStmt: + OUT_NODE(CreateForeignTableStmt, CreateForeignTableStmt, create_foreign_table_stmt, CREATE_FOREIGN_TABLE_STMT, CreateForeignTableStmt, create_foreign_table_stmt); + break; +case T_ImportForeignSchemaStmt: + OUT_NODE(ImportForeignSchemaStmt, ImportForeignSchemaStmt, import_foreign_schema_stmt, IMPORT_FOREIGN_SCHEMA_STMT, ImportForeignSchemaStmt, import_foreign_schema_stmt); + break; +case T_CreateExtensionStmt: + OUT_NODE(CreateExtensionStmt, CreateExtensionStmt, create_extension_stmt, CREATE_EXTENSION_STMT, CreateExtensionStmt, create_extension_stmt); + break; +case T_AlterExtensionStmt: + OUT_NODE(AlterExtensionStmt, AlterExtensionStmt, alter_extension_stmt, ALTER_EXTENSION_STMT, AlterExtensionStmt, alter_extension_stmt); + break; +case T_AlterExtensionContentsStmt: + OUT_NODE(AlterExtensionContentsStmt, AlterExtensionContentsStmt, alter_extension_contents_stmt, ALTER_EXTENSION_CONTENTS_STMT, AlterExtensionContentsStmt, alter_extension_contents_stmt); + break; +case T_CreateEventTrigStmt: + OUT_NODE(CreateEventTrigStmt, CreateEventTrigStmt, create_event_trig_stmt, CREATE_EVENT_TRIG_STMT, CreateEventTrigStmt, create_event_trig_stmt); + break; +case T_AlterEventTrigStmt: + OUT_NODE(AlterEventTrigStmt, AlterEventTrigStmt, alter_event_trig_stmt, ALTER_EVENT_TRIG_STMT, AlterEventTrigStmt, alter_event_trig_stmt); + break; +case T_RefreshMatViewStmt: + OUT_NODE(RefreshMatViewStmt, RefreshMatViewStmt, refresh_mat_view_stmt, REFRESH_MAT_VIEW_STMT, RefreshMatViewStmt, refresh_mat_view_stmt); + break; +case T_ReplicaIdentityStmt: + OUT_NODE(ReplicaIdentityStmt, ReplicaIdentityStmt, replica_identity_stmt, REPLICA_IDENTITY_STMT, ReplicaIdentityStmt, replica_identity_stmt); + break; +case T_AlterSystemStmt: + OUT_NODE(AlterSystemStmt, AlterSystemStmt, alter_system_stmt, ALTER_SYSTEM_STMT, AlterSystemStmt, alter_system_stmt); + break; +case T_CreatePolicyStmt: + OUT_NODE(CreatePolicyStmt, CreatePolicyStmt, create_policy_stmt, CREATE_POLICY_STMT, CreatePolicyStmt, create_policy_stmt); + break; +case T_AlterPolicyStmt: + OUT_NODE(AlterPolicyStmt, AlterPolicyStmt, alter_policy_stmt, ALTER_POLICY_STMT, AlterPolicyStmt, alter_policy_stmt); + break; +case T_CreateTransformStmt: + OUT_NODE(CreateTransformStmt, CreateTransformStmt, create_transform_stmt, CREATE_TRANSFORM_STMT, CreateTransformStmt, create_transform_stmt); + break; +case T_CreateAmStmt: + OUT_NODE(CreateAmStmt, CreateAmStmt, create_am_stmt, CREATE_AM_STMT, CreateAmStmt, create_am_stmt); + break; +case T_CreatePublicationStmt: + OUT_NODE(CreatePublicationStmt, CreatePublicationStmt, create_publication_stmt, CREATE_PUBLICATION_STMT, CreatePublicationStmt, create_publication_stmt); + break; +case T_AlterPublicationStmt: + OUT_NODE(AlterPublicationStmt, AlterPublicationStmt, alter_publication_stmt, ALTER_PUBLICATION_STMT, AlterPublicationStmt, alter_publication_stmt); + break; +case T_CreateSubscriptionStmt: + OUT_NODE(CreateSubscriptionStmt, CreateSubscriptionStmt, create_subscription_stmt, CREATE_SUBSCRIPTION_STMT, CreateSubscriptionStmt, create_subscription_stmt); + break; +case T_AlterSubscriptionStmt: + OUT_NODE(AlterSubscriptionStmt, AlterSubscriptionStmt, alter_subscription_stmt, ALTER_SUBSCRIPTION_STMT, AlterSubscriptionStmt, alter_subscription_stmt); + break; +case T_DropSubscriptionStmt: + OUT_NODE(DropSubscriptionStmt, DropSubscriptionStmt, drop_subscription_stmt, DROP_SUBSCRIPTION_STMT, DropSubscriptionStmt, drop_subscription_stmt); + break; +case T_CreateStatsStmt: + OUT_NODE(CreateStatsStmt, CreateStatsStmt, create_stats_stmt, CREATE_STATS_STMT, CreateStatsStmt, create_stats_stmt); + break; +case T_AlterCollationStmt: + OUT_NODE(AlterCollationStmt, AlterCollationStmt, alter_collation_stmt, ALTER_COLLATION_STMT, AlterCollationStmt, alter_collation_stmt); + break; +case T_CallStmt: + OUT_NODE(CallStmt, CallStmt, call_stmt, CALL_STMT, CallStmt, call_stmt); + break; +case T_AlterStatsStmt: + OUT_NODE(AlterStatsStmt, AlterStatsStmt, alter_stats_stmt, ALTER_STATS_STMT, AlterStatsStmt, alter_stats_stmt); + break; +case T_A_Expr: + OUT_NODE(A_Expr, AExpr, a__expr, A_EXPR, A_Expr, a_expr); + break; +case T_ColumnRef: + OUT_NODE(ColumnRef, ColumnRef, column_ref, COLUMN_REF, ColumnRef, column_ref); + break; +case T_ParamRef: + OUT_NODE(ParamRef, ParamRef, param_ref, PARAM_REF, ParamRef, param_ref); + break; +case T_A_Const: + OUT_NODE(A_Const, AConst, a__const, A_CONST, A_Const, a_const); + break; +case T_FuncCall: + OUT_NODE(FuncCall, FuncCall, func_call, FUNC_CALL, FuncCall, func_call); + break; +case T_A_Star: + OUT_NODE(A_Star, AStar, a__star, A_STAR, A_Star, a_star); + break; +case T_A_Indices: + OUT_NODE(A_Indices, AIndices, a__indices, A_INDICES, A_Indices, a_indices); + break; +case T_A_Indirection: + OUT_NODE(A_Indirection, AIndirection, a__indirection, A_INDIRECTION, A_Indirection, a_indirection); + break; +case T_A_ArrayExpr: + OUT_NODE(A_ArrayExpr, AArrayExpr, a__array_expr, A_ARRAY_EXPR, A_ArrayExpr, a_array_expr); + break; +case T_ResTarget: + OUT_NODE(ResTarget, ResTarget, res_target, RES_TARGET, ResTarget, res_target); + break; +case T_MultiAssignRef: + OUT_NODE(MultiAssignRef, MultiAssignRef, multi_assign_ref, MULTI_ASSIGN_REF, MultiAssignRef, multi_assign_ref); + break; +case T_TypeCast: + OUT_NODE(TypeCast, TypeCast, type_cast, TYPE_CAST, TypeCast, type_cast); + break; +case T_CollateClause: + OUT_NODE(CollateClause, CollateClause, collate_clause, COLLATE_CLAUSE, CollateClause, collate_clause); + break; +case T_SortBy: + OUT_NODE(SortBy, SortBy, sort_by, SORT_BY, SortBy, sort_by); + break; +case T_WindowDef: + OUT_NODE(WindowDef, WindowDef, window_def, WINDOW_DEF, WindowDef, window_def); + break; +case T_RangeSubselect: + OUT_NODE(RangeSubselect, RangeSubselect, range_subselect, RANGE_SUBSELECT, RangeSubselect, range_subselect); + break; +case T_RangeFunction: + OUT_NODE(RangeFunction, RangeFunction, range_function, RANGE_FUNCTION, RangeFunction, range_function); + break; +case T_RangeTableSample: + OUT_NODE(RangeTableSample, RangeTableSample, range_table_sample, RANGE_TABLE_SAMPLE, RangeTableSample, range_table_sample); + break; +case T_RangeTableFunc: + OUT_NODE(RangeTableFunc, RangeTableFunc, range_table_func, RANGE_TABLE_FUNC, RangeTableFunc, range_table_func); + break; +case T_RangeTableFuncCol: + OUT_NODE(RangeTableFuncCol, RangeTableFuncCol, range_table_func_col, RANGE_TABLE_FUNC_COL, RangeTableFuncCol, range_table_func_col); + break; +case T_TypeName: + OUT_NODE(TypeName, TypeName, type_name, TYPE_NAME, TypeName, type_name); + break; +case T_ColumnDef: + OUT_NODE(ColumnDef, ColumnDef, column_def, COLUMN_DEF, ColumnDef, column_def); + break; +case T_IndexElem: + OUT_NODE(IndexElem, IndexElem, index_elem, INDEX_ELEM, IndexElem, index_elem); + break; +case T_Constraint: + OUT_NODE(Constraint, Constraint, constraint, CONSTRAINT, Constraint, constraint); + break; +case T_DefElem: + OUT_NODE(DefElem, DefElem, def_elem, DEF_ELEM, DefElem, def_elem); + break; +case T_RangeTblEntry: + OUT_NODE(RangeTblEntry, RangeTblEntry, range_tbl_entry, RANGE_TBL_ENTRY, RangeTblEntry, range_tbl_entry); + break; +case T_RangeTblFunction: + OUT_NODE(RangeTblFunction, RangeTblFunction, range_tbl_function, RANGE_TBL_FUNCTION, RangeTblFunction, range_tbl_function); + break; +case T_TableSampleClause: + OUT_NODE(TableSampleClause, TableSampleClause, table_sample_clause, TABLE_SAMPLE_CLAUSE, TableSampleClause, table_sample_clause); + break; +case T_WithCheckOption: + OUT_NODE(WithCheckOption, WithCheckOption, with_check_option, WITH_CHECK_OPTION, WithCheckOption, with_check_option); + break; +case T_SortGroupClause: + OUT_NODE(SortGroupClause, SortGroupClause, sort_group_clause, SORT_GROUP_CLAUSE, SortGroupClause, sort_group_clause); + break; +case T_GroupingSet: + OUT_NODE(GroupingSet, GroupingSet, grouping_set, GROUPING_SET, GroupingSet, grouping_set); + break; +case T_WindowClause: + OUT_NODE(WindowClause, WindowClause, window_clause, WINDOW_CLAUSE, WindowClause, window_clause); + break; +case T_ObjectWithArgs: + OUT_NODE(ObjectWithArgs, ObjectWithArgs, object_with_args, OBJECT_WITH_ARGS, ObjectWithArgs, object_with_args); + break; +case T_AccessPriv: + OUT_NODE(AccessPriv, AccessPriv, access_priv, ACCESS_PRIV, AccessPriv, access_priv); + break; +case T_CreateOpClassItem: + OUT_NODE(CreateOpClassItem, CreateOpClassItem, create_op_class_item, CREATE_OP_CLASS_ITEM, CreateOpClassItem, create_op_class_item); + break; +case T_TableLikeClause: + OUT_NODE(TableLikeClause, TableLikeClause, table_like_clause, TABLE_LIKE_CLAUSE, TableLikeClause, table_like_clause); + break; +case T_FunctionParameter: + OUT_NODE(FunctionParameter, FunctionParameter, function_parameter, FUNCTION_PARAMETER, FunctionParameter, function_parameter); + break; +case T_LockingClause: + OUT_NODE(LockingClause, LockingClause, locking_clause, LOCKING_CLAUSE, LockingClause, locking_clause); + break; +case T_RowMarkClause: + OUT_NODE(RowMarkClause, RowMarkClause, row_mark_clause, ROW_MARK_CLAUSE, RowMarkClause, row_mark_clause); + break; +case T_XmlSerialize: + OUT_NODE(XmlSerialize, XmlSerialize, xml_serialize, XML_SERIALIZE, XmlSerialize, xml_serialize); + break; +case T_WithClause: + OUT_NODE(WithClause, WithClause, with_clause, WITH_CLAUSE, WithClause, with_clause); + break; +case T_InferClause: + OUT_NODE(InferClause, InferClause, infer_clause, INFER_CLAUSE, InferClause, infer_clause); + break; +case T_OnConflictClause: + OUT_NODE(OnConflictClause, OnConflictClause, on_conflict_clause, ON_CONFLICT_CLAUSE, OnConflictClause, on_conflict_clause); + break; +case T_CommonTableExpr: + OUT_NODE(CommonTableExpr, CommonTableExpr, common_table_expr, COMMON_TABLE_EXPR, CommonTableExpr, common_table_expr); + break; +case T_RoleSpec: + OUT_NODE(RoleSpec, RoleSpec, role_spec, ROLE_SPEC, RoleSpec, role_spec); + break; +case T_TriggerTransition: + OUT_NODE(TriggerTransition, TriggerTransition, trigger_transition, TRIGGER_TRANSITION, TriggerTransition, trigger_transition); + break; +case T_PartitionElem: + OUT_NODE(PartitionElem, PartitionElem, partition_elem, PARTITION_ELEM, PartitionElem, partition_elem); + break; +case T_PartitionSpec: + OUT_NODE(PartitionSpec, PartitionSpec, partition_spec, PARTITION_SPEC, PartitionSpec, partition_spec); + break; +case T_PartitionBoundSpec: + OUT_NODE(PartitionBoundSpec, PartitionBoundSpec, partition_bound_spec, PARTITION_BOUND_SPEC, PartitionBoundSpec, partition_bound_spec); + break; +case T_PartitionRangeDatum: + OUT_NODE(PartitionRangeDatum, PartitionRangeDatum, partition_range_datum, PARTITION_RANGE_DATUM, PartitionRangeDatum, partition_range_datum); + break; +case T_PartitionCmd: + OUT_NODE(PartitionCmd, PartitionCmd, partition_cmd, PARTITION_CMD, PartitionCmd, partition_cmd); + break; +case T_VacuumRelation: + OUT_NODE(VacuumRelation, VacuumRelation, vacuum_relation, VACUUM_RELATION, VacuumRelation, vacuum_relation); + break; +case T_InlineCodeBlock: + OUT_NODE(InlineCodeBlock, InlineCodeBlock, inline_code_block, INLINE_CODE_BLOCK, InlineCodeBlock, inline_code_block); + break; +case T_CallContext: + OUT_NODE(CallContext, CallContext, call_context, CALL_CONTEXT, CallContext, call_context); + break; diff --git a/parser/include/pg_query_outfuncs_defs.c b/parser/include/pg_query_outfuncs_defs.c new file mode 100644 index 00000000..2fc6f367 --- /dev/null +++ b/parser/include/pg_query_outfuncs_defs.c @@ -0,0 +1,2437 @@ +// This file is autogenerated by ./scripts/generate_protobuf_and_funcs.rb + +static void _outAlias(OUT_TYPE(Alias, Alias) out_node, const Alias *node); +static void _outRangeVar(OUT_TYPE(RangeVar, RangeVar) out_node, const RangeVar *node); +static void _outTableFunc(OUT_TYPE(TableFunc, TableFunc) out_node, const TableFunc *node); +static void _outExpr(OUT_TYPE(Expr, Expr) out_node, const Expr *node); +static void _outVar(OUT_TYPE(Var, Var) out_node, const Var *node); +static void _outParam(OUT_TYPE(Param, Param) out_node, const Param *node); +static void _outAggref(OUT_TYPE(Aggref, Aggref) out_node, const Aggref *node); +static void _outGroupingFunc(OUT_TYPE(GroupingFunc, GroupingFunc) out_node, const GroupingFunc *node); +static void _outWindowFunc(OUT_TYPE(WindowFunc, WindowFunc) out_node, const WindowFunc *node); +static void _outSubscriptingRef(OUT_TYPE(SubscriptingRef, SubscriptingRef) out_node, const SubscriptingRef *node); +static void _outFuncExpr(OUT_TYPE(FuncExpr, FuncExpr) out_node, const FuncExpr *node); +static void _outNamedArgExpr(OUT_TYPE(NamedArgExpr, NamedArgExpr) out_node, const NamedArgExpr *node); +static void _outOpExpr(OUT_TYPE(OpExpr, OpExpr) out_node, const OpExpr *node); +static void _outDistinctExpr(OUT_TYPE(DistinctExpr, DistinctExpr) out_node, const DistinctExpr *node); +static void _outNullIfExpr(OUT_TYPE(NullIfExpr, NullIfExpr) out_node, const NullIfExpr *node); +static void _outScalarArrayOpExpr(OUT_TYPE(ScalarArrayOpExpr, ScalarArrayOpExpr) out_node, const ScalarArrayOpExpr *node); +static void _outBoolExpr(OUT_TYPE(BoolExpr, BoolExpr) out_node, const BoolExpr *node); +static void _outSubLink(OUT_TYPE(SubLink, SubLink) out_node, const SubLink *node); +static void _outSubPlan(OUT_TYPE(SubPlan, SubPlan) out_node, const SubPlan *node); +static void _outAlternativeSubPlan(OUT_TYPE(AlternativeSubPlan, AlternativeSubPlan) out_node, const AlternativeSubPlan *node); +static void _outFieldSelect(OUT_TYPE(FieldSelect, FieldSelect) out_node, const FieldSelect *node); +static void _outFieldStore(OUT_TYPE(FieldStore, FieldStore) out_node, const FieldStore *node); +static void _outRelabelType(OUT_TYPE(RelabelType, RelabelType) out_node, const RelabelType *node); +static void _outCoerceViaIO(OUT_TYPE(CoerceViaIO, CoerceViaIO) out_node, const CoerceViaIO *node); +static void _outArrayCoerceExpr(OUT_TYPE(ArrayCoerceExpr, ArrayCoerceExpr) out_node, const ArrayCoerceExpr *node); +static void _outConvertRowtypeExpr(OUT_TYPE(ConvertRowtypeExpr, ConvertRowtypeExpr) out_node, const ConvertRowtypeExpr *node); +static void _outCollateExpr(OUT_TYPE(CollateExpr, CollateExpr) out_node, const CollateExpr *node); +static void _outCaseExpr(OUT_TYPE(CaseExpr, CaseExpr) out_node, const CaseExpr *node); +static void _outCaseWhen(OUT_TYPE(CaseWhen, CaseWhen) out_node, const CaseWhen *node); +static void _outCaseTestExpr(OUT_TYPE(CaseTestExpr, CaseTestExpr) out_node, const CaseTestExpr *node); +static void _outArrayExpr(OUT_TYPE(ArrayExpr, ArrayExpr) out_node, const ArrayExpr *node); +static void _outRowExpr(OUT_TYPE(RowExpr, RowExpr) out_node, const RowExpr *node); +static void _outRowCompareExpr(OUT_TYPE(RowCompareExpr, RowCompareExpr) out_node, const RowCompareExpr *node); +static void _outCoalesceExpr(OUT_TYPE(CoalesceExpr, CoalesceExpr) out_node, const CoalesceExpr *node); +static void _outMinMaxExpr(OUT_TYPE(MinMaxExpr, MinMaxExpr) out_node, const MinMaxExpr *node); +static void _outSQLValueFunction(OUT_TYPE(SQLValueFunction, SQLValueFunction) out_node, const SQLValueFunction *node); +static void _outXmlExpr(OUT_TYPE(XmlExpr, XmlExpr) out_node, const XmlExpr *node); +static void _outNullTest(OUT_TYPE(NullTest, NullTest) out_node, const NullTest *node); +static void _outBooleanTest(OUT_TYPE(BooleanTest, BooleanTest) out_node, const BooleanTest *node); +static void _outCoerceToDomain(OUT_TYPE(CoerceToDomain, CoerceToDomain) out_node, const CoerceToDomain *node); +static void _outCoerceToDomainValue(OUT_TYPE(CoerceToDomainValue, CoerceToDomainValue) out_node, const CoerceToDomainValue *node); +static void _outSetToDefault(OUT_TYPE(SetToDefault, SetToDefault) out_node, const SetToDefault *node); +static void _outCurrentOfExpr(OUT_TYPE(CurrentOfExpr, CurrentOfExpr) out_node, const CurrentOfExpr *node); +static void _outNextValueExpr(OUT_TYPE(NextValueExpr, NextValueExpr) out_node, const NextValueExpr *node); +static void _outInferenceElem(OUT_TYPE(InferenceElem, InferenceElem) out_node, const InferenceElem *node); +static void _outTargetEntry(OUT_TYPE(TargetEntry, TargetEntry) out_node, const TargetEntry *node); +static void _outRangeTblRef(OUT_TYPE(RangeTblRef, RangeTblRef) out_node, const RangeTblRef *node); +static void _outJoinExpr(OUT_TYPE(JoinExpr, JoinExpr) out_node, const JoinExpr *node); +static void _outFromExpr(OUT_TYPE(FromExpr, FromExpr) out_node, const FromExpr *node); +static void _outOnConflictExpr(OUT_TYPE(OnConflictExpr, OnConflictExpr) out_node, const OnConflictExpr *node); +static void _outIntoClause(OUT_TYPE(IntoClause, IntoClause) out_node, const IntoClause *node); +static void _outRawStmt(OUT_TYPE(RawStmt, RawStmt) out_node, const RawStmt *node); +static void _outQuery(OUT_TYPE(Query, Query) out_node, const Query *node); +static void _outInsertStmt(OUT_TYPE(InsertStmt, InsertStmt) out_node, const InsertStmt *node); +static void _outDeleteStmt(OUT_TYPE(DeleteStmt, DeleteStmt) out_node, const DeleteStmt *node); +static void _outUpdateStmt(OUT_TYPE(UpdateStmt, UpdateStmt) out_node, const UpdateStmt *node); +static void _outSelectStmt(OUT_TYPE(SelectStmt, SelectStmt) out_node, const SelectStmt *node); +static void _outAlterTableStmt(OUT_TYPE(AlterTableStmt, AlterTableStmt) out_node, const AlterTableStmt *node); +static void _outAlterTableCmd(OUT_TYPE(AlterTableCmd, AlterTableCmd) out_node, const AlterTableCmd *node); +static void _outAlterDomainStmt(OUT_TYPE(AlterDomainStmt, AlterDomainStmt) out_node, const AlterDomainStmt *node); +static void _outSetOperationStmt(OUT_TYPE(SetOperationStmt, SetOperationStmt) out_node, const SetOperationStmt *node); +static void _outGrantStmt(OUT_TYPE(GrantStmt, GrantStmt) out_node, const GrantStmt *node); +static void _outGrantRoleStmt(OUT_TYPE(GrantRoleStmt, GrantRoleStmt) out_node, const GrantRoleStmt *node); +static void _outAlterDefaultPrivilegesStmt(OUT_TYPE(AlterDefaultPrivilegesStmt, AlterDefaultPrivilegesStmt) out_node, const AlterDefaultPrivilegesStmt *node); +static void _outClosePortalStmt(OUT_TYPE(ClosePortalStmt, ClosePortalStmt) out_node, const ClosePortalStmt *node); +static void _outClusterStmt(OUT_TYPE(ClusterStmt, ClusterStmt) out_node, const ClusterStmt *node); +static void _outCopyStmt(OUT_TYPE(CopyStmt, CopyStmt) out_node, const CopyStmt *node); +static void _outCreateStmt(OUT_TYPE(CreateStmt, CreateStmt) out_node, const CreateStmt *node); +static void _outDefineStmt(OUT_TYPE(DefineStmt, DefineStmt) out_node, const DefineStmt *node); +static void _outDropStmt(OUT_TYPE(DropStmt, DropStmt) out_node, const DropStmt *node); +static void _outTruncateStmt(OUT_TYPE(TruncateStmt, TruncateStmt) out_node, const TruncateStmt *node); +static void _outCommentStmt(OUT_TYPE(CommentStmt, CommentStmt) out_node, const CommentStmt *node); +static void _outFetchStmt(OUT_TYPE(FetchStmt, FetchStmt) out_node, const FetchStmt *node); +static void _outIndexStmt(OUT_TYPE(IndexStmt, IndexStmt) out_node, const IndexStmt *node); +static void _outCreateFunctionStmt(OUT_TYPE(CreateFunctionStmt, CreateFunctionStmt) out_node, const CreateFunctionStmt *node); +static void _outAlterFunctionStmt(OUT_TYPE(AlterFunctionStmt, AlterFunctionStmt) out_node, const AlterFunctionStmt *node); +static void _outDoStmt(OUT_TYPE(DoStmt, DoStmt) out_node, const DoStmt *node); +static void _outRenameStmt(OUT_TYPE(RenameStmt, RenameStmt) out_node, const RenameStmt *node); +static void _outRuleStmt(OUT_TYPE(RuleStmt, RuleStmt) out_node, const RuleStmt *node); +static void _outNotifyStmt(OUT_TYPE(NotifyStmt, NotifyStmt) out_node, const NotifyStmt *node); +static void _outListenStmt(OUT_TYPE(ListenStmt, ListenStmt) out_node, const ListenStmt *node); +static void _outUnlistenStmt(OUT_TYPE(UnlistenStmt, UnlistenStmt) out_node, const UnlistenStmt *node); +static void _outTransactionStmt(OUT_TYPE(TransactionStmt, TransactionStmt) out_node, const TransactionStmt *node); +static void _outViewStmt(OUT_TYPE(ViewStmt, ViewStmt) out_node, const ViewStmt *node); +static void _outLoadStmt(OUT_TYPE(LoadStmt, LoadStmt) out_node, const LoadStmt *node); +static void _outCreateDomainStmt(OUT_TYPE(CreateDomainStmt, CreateDomainStmt) out_node, const CreateDomainStmt *node); +static void _outCreatedbStmt(OUT_TYPE(CreatedbStmt, CreatedbStmt) out_node, const CreatedbStmt *node); +static void _outDropdbStmt(OUT_TYPE(DropdbStmt, DropdbStmt) out_node, const DropdbStmt *node); +static void _outVacuumStmt(OUT_TYPE(VacuumStmt, VacuumStmt) out_node, const VacuumStmt *node); +static void _outExplainStmt(OUT_TYPE(ExplainStmt, ExplainStmt) out_node, const ExplainStmt *node); +static void _outCreateTableAsStmt(OUT_TYPE(CreateTableAsStmt, CreateTableAsStmt) out_node, const CreateTableAsStmt *node); +static void _outCreateSeqStmt(OUT_TYPE(CreateSeqStmt, CreateSeqStmt) out_node, const CreateSeqStmt *node); +static void _outAlterSeqStmt(OUT_TYPE(AlterSeqStmt, AlterSeqStmt) out_node, const AlterSeqStmt *node); +static void _outVariableSetStmt(OUT_TYPE(VariableSetStmt, VariableSetStmt) out_node, const VariableSetStmt *node); +static void _outVariableShowStmt(OUT_TYPE(VariableShowStmt, VariableShowStmt) out_node, const VariableShowStmt *node); +static void _outDiscardStmt(OUT_TYPE(DiscardStmt, DiscardStmt) out_node, const DiscardStmt *node); +static void _outCreateTrigStmt(OUT_TYPE(CreateTrigStmt, CreateTrigStmt) out_node, const CreateTrigStmt *node); +static void _outCreatePLangStmt(OUT_TYPE(CreatePLangStmt, CreatePLangStmt) out_node, const CreatePLangStmt *node); +static void _outCreateRoleStmt(OUT_TYPE(CreateRoleStmt, CreateRoleStmt) out_node, const CreateRoleStmt *node); +static void _outAlterRoleStmt(OUT_TYPE(AlterRoleStmt, AlterRoleStmt) out_node, const AlterRoleStmt *node); +static void _outDropRoleStmt(OUT_TYPE(DropRoleStmt, DropRoleStmt) out_node, const DropRoleStmt *node); +static void _outLockStmt(OUT_TYPE(LockStmt, LockStmt) out_node, const LockStmt *node); +static void _outConstraintsSetStmt(OUT_TYPE(ConstraintsSetStmt, ConstraintsSetStmt) out_node, const ConstraintsSetStmt *node); +static void _outReindexStmt(OUT_TYPE(ReindexStmt, ReindexStmt) out_node, const ReindexStmt *node); +static void _outCheckPointStmt(OUT_TYPE(CheckPointStmt, CheckPointStmt) out_node, const CheckPointStmt *node); +static void _outCreateSchemaStmt(OUT_TYPE(CreateSchemaStmt, CreateSchemaStmt) out_node, const CreateSchemaStmt *node); +static void _outAlterDatabaseStmt(OUT_TYPE(AlterDatabaseStmt, AlterDatabaseStmt) out_node, const AlterDatabaseStmt *node); +static void _outAlterDatabaseSetStmt(OUT_TYPE(AlterDatabaseSetStmt, AlterDatabaseSetStmt) out_node, const AlterDatabaseSetStmt *node); +static void _outAlterRoleSetStmt(OUT_TYPE(AlterRoleSetStmt, AlterRoleSetStmt) out_node, const AlterRoleSetStmt *node); +static void _outCreateConversionStmt(OUT_TYPE(CreateConversionStmt, CreateConversionStmt) out_node, const CreateConversionStmt *node); +static void _outCreateCastStmt(OUT_TYPE(CreateCastStmt, CreateCastStmt) out_node, const CreateCastStmt *node); +static void _outCreateOpClassStmt(OUT_TYPE(CreateOpClassStmt, CreateOpClassStmt) out_node, const CreateOpClassStmt *node); +static void _outCreateOpFamilyStmt(OUT_TYPE(CreateOpFamilyStmt, CreateOpFamilyStmt) out_node, const CreateOpFamilyStmt *node); +static void _outAlterOpFamilyStmt(OUT_TYPE(AlterOpFamilyStmt, AlterOpFamilyStmt) out_node, const AlterOpFamilyStmt *node); +static void _outPrepareStmt(OUT_TYPE(PrepareStmt, PrepareStmt) out_node, const PrepareStmt *node); +static void _outExecuteStmt(OUT_TYPE(ExecuteStmt, ExecuteStmt) out_node, const ExecuteStmt *node); +static void _outDeallocateStmt(OUT_TYPE(DeallocateStmt, DeallocateStmt) out_node, const DeallocateStmt *node); +static void _outDeclareCursorStmt(OUT_TYPE(DeclareCursorStmt, DeclareCursorStmt) out_node, const DeclareCursorStmt *node); +static void _outCreateTableSpaceStmt(OUT_TYPE(CreateTableSpaceStmt, CreateTableSpaceStmt) out_node, const CreateTableSpaceStmt *node); +static void _outDropTableSpaceStmt(OUT_TYPE(DropTableSpaceStmt, DropTableSpaceStmt) out_node, const DropTableSpaceStmt *node); +static void _outAlterObjectDependsStmt(OUT_TYPE(AlterObjectDependsStmt, AlterObjectDependsStmt) out_node, const AlterObjectDependsStmt *node); +static void _outAlterObjectSchemaStmt(OUT_TYPE(AlterObjectSchemaStmt, AlterObjectSchemaStmt) out_node, const AlterObjectSchemaStmt *node); +static void _outAlterOwnerStmt(OUT_TYPE(AlterOwnerStmt, AlterOwnerStmt) out_node, const AlterOwnerStmt *node); +static void _outAlterOperatorStmt(OUT_TYPE(AlterOperatorStmt, AlterOperatorStmt) out_node, const AlterOperatorStmt *node); +static void _outAlterTypeStmt(OUT_TYPE(AlterTypeStmt, AlterTypeStmt) out_node, const AlterTypeStmt *node); +static void _outDropOwnedStmt(OUT_TYPE(DropOwnedStmt, DropOwnedStmt) out_node, const DropOwnedStmt *node); +static void _outReassignOwnedStmt(OUT_TYPE(ReassignOwnedStmt, ReassignOwnedStmt) out_node, const ReassignOwnedStmt *node); +static void _outCompositeTypeStmt(OUT_TYPE(CompositeTypeStmt, CompositeTypeStmt) out_node, const CompositeTypeStmt *node); +static void _outCreateEnumStmt(OUT_TYPE(CreateEnumStmt, CreateEnumStmt) out_node, const CreateEnumStmt *node); +static void _outCreateRangeStmt(OUT_TYPE(CreateRangeStmt, CreateRangeStmt) out_node, const CreateRangeStmt *node); +static void _outAlterEnumStmt(OUT_TYPE(AlterEnumStmt, AlterEnumStmt) out_node, const AlterEnumStmt *node); +static void _outAlterTSDictionaryStmt(OUT_TYPE(AlterTSDictionaryStmt, AlterTSDictionaryStmt) out_node, const AlterTSDictionaryStmt *node); +static void _outAlterTSConfigurationStmt(OUT_TYPE(AlterTSConfigurationStmt, AlterTSConfigurationStmt) out_node, const AlterTSConfigurationStmt *node); +static void _outCreateFdwStmt(OUT_TYPE(CreateFdwStmt, CreateFdwStmt) out_node, const CreateFdwStmt *node); +static void _outAlterFdwStmt(OUT_TYPE(AlterFdwStmt, AlterFdwStmt) out_node, const AlterFdwStmt *node); +static void _outCreateForeignServerStmt(OUT_TYPE(CreateForeignServerStmt, CreateForeignServerStmt) out_node, const CreateForeignServerStmt *node); +static void _outAlterForeignServerStmt(OUT_TYPE(AlterForeignServerStmt, AlterForeignServerStmt) out_node, const AlterForeignServerStmt *node); +static void _outCreateUserMappingStmt(OUT_TYPE(CreateUserMappingStmt, CreateUserMappingStmt) out_node, const CreateUserMappingStmt *node); +static void _outAlterUserMappingStmt(OUT_TYPE(AlterUserMappingStmt, AlterUserMappingStmt) out_node, const AlterUserMappingStmt *node); +static void _outDropUserMappingStmt(OUT_TYPE(DropUserMappingStmt, DropUserMappingStmt) out_node, const DropUserMappingStmt *node); +static void _outAlterTableSpaceOptionsStmt(OUT_TYPE(AlterTableSpaceOptionsStmt, AlterTableSpaceOptionsStmt) out_node, const AlterTableSpaceOptionsStmt *node); +static void _outAlterTableMoveAllStmt(OUT_TYPE(AlterTableMoveAllStmt, AlterTableMoveAllStmt) out_node, const AlterTableMoveAllStmt *node); +static void _outSecLabelStmt(OUT_TYPE(SecLabelStmt, SecLabelStmt) out_node, const SecLabelStmt *node); +static void _outCreateForeignTableStmt(OUT_TYPE(CreateForeignTableStmt, CreateForeignTableStmt) out_node, const CreateForeignTableStmt *node); +static void _outImportForeignSchemaStmt(OUT_TYPE(ImportForeignSchemaStmt, ImportForeignSchemaStmt) out_node, const ImportForeignSchemaStmt *node); +static void _outCreateExtensionStmt(OUT_TYPE(CreateExtensionStmt, CreateExtensionStmt) out_node, const CreateExtensionStmt *node); +static void _outAlterExtensionStmt(OUT_TYPE(AlterExtensionStmt, AlterExtensionStmt) out_node, const AlterExtensionStmt *node); +static void _outAlterExtensionContentsStmt(OUT_TYPE(AlterExtensionContentsStmt, AlterExtensionContentsStmt) out_node, const AlterExtensionContentsStmt *node); +static void _outCreateEventTrigStmt(OUT_TYPE(CreateEventTrigStmt, CreateEventTrigStmt) out_node, const CreateEventTrigStmt *node); +static void _outAlterEventTrigStmt(OUT_TYPE(AlterEventTrigStmt, AlterEventTrigStmt) out_node, const AlterEventTrigStmt *node); +static void _outRefreshMatViewStmt(OUT_TYPE(RefreshMatViewStmt, RefreshMatViewStmt) out_node, const RefreshMatViewStmt *node); +static void _outReplicaIdentityStmt(OUT_TYPE(ReplicaIdentityStmt, ReplicaIdentityStmt) out_node, const ReplicaIdentityStmt *node); +static void _outAlterSystemStmt(OUT_TYPE(AlterSystemStmt, AlterSystemStmt) out_node, const AlterSystemStmt *node); +static void _outCreatePolicyStmt(OUT_TYPE(CreatePolicyStmt, CreatePolicyStmt) out_node, const CreatePolicyStmt *node); +static void _outAlterPolicyStmt(OUT_TYPE(AlterPolicyStmt, AlterPolicyStmt) out_node, const AlterPolicyStmt *node); +static void _outCreateTransformStmt(OUT_TYPE(CreateTransformStmt, CreateTransformStmt) out_node, const CreateTransformStmt *node); +static void _outCreateAmStmt(OUT_TYPE(CreateAmStmt, CreateAmStmt) out_node, const CreateAmStmt *node); +static void _outCreatePublicationStmt(OUT_TYPE(CreatePublicationStmt, CreatePublicationStmt) out_node, const CreatePublicationStmt *node); +static void _outAlterPublicationStmt(OUT_TYPE(AlterPublicationStmt, AlterPublicationStmt) out_node, const AlterPublicationStmt *node); +static void _outCreateSubscriptionStmt(OUT_TYPE(CreateSubscriptionStmt, CreateSubscriptionStmt) out_node, const CreateSubscriptionStmt *node); +static void _outAlterSubscriptionStmt(OUT_TYPE(AlterSubscriptionStmt, AlterSubscriptionStmt) out_node, const AlterSubscriptionStmt *node); +static void _outDropSubscriptionStmt(OUT_TYPE(DropSubscriptionStmt, DropSubscriptionStmt) out_node, const DropSubscriptionStmt *node); +static void _outCreateStatsStmt(OUT_TYPE(CreateStatsStmt, CreateStatsStmt) out_node, const CreateStatsStmt *node); +static void _outAlterCollationStmt(OUT_TYPE(AlterCollationStmt, AlterCollationStmt) out_node, const AlterCollationStmt *node); +static void _outCallStmt(OUT_TYPE(CallStmt, CallStmt) out_node, const CallStmt *node); +static void _outAlterStatsStmt(OUT_TYPE(AlterStatsStmt, AlterStatsStmt) out_node, const AlterStatsStmt *node); +static void _outAExpr(OUT_TYPE(A_Expr, AExpr) out_node, const A_Expr *node); +static void _outColumnRef(OUT_TYPE(ColumnRef, ColumnRef) out_node, const ColumnRef *node); +static void _outParamRef(OUT_TYPE(ParamRef, ParamRef) out_node, const ParamRef *node); +static void _outAConst(OUT_TYPE(A_Const, AConst) out_node, const A_Const *node); +static void _outFuncCall(OUT_TYPE(FuncCall, FuncCall) out_node, const FuncCall *node); +static void _outAStar(OUT_TYPE(A_Star, AStar) out_node, const A_Star *node); +static void _outAIndices(OUT_TYPE(A_Indices, AIndices) out_node, const A_Indices *node); +static void _outAIndirection(OUT_TYPE(A_Indirection, AIndirection) out_node, const A_Indirection *node); +static void _outAArrayExpr(OUT_TYPE(A_ArrayExpr, AArrayExpr) out_node, const A_ArrayExpr *node); +static void _outResTarget(OUT_TYPE(ResTarget, ResTarget) out_node, const ResTarget *node); +static void _outMultiAssignRef(OUT_TYPE(MultiAssignRef, MultiAssignRef) out_node, const MultiAssignRef *node); +static void _outTypeCast(OUT_TYPE(TypeCast, TypeCast) out_node, const TypeCast *node); +static void _outCollateClause(OUT_TYPE(CollateClause, CollateClause) out_node, const CollateClause *node); +static void _outSortBy(OUT_TYPE(SortBy, SortBy) out_node, const SortBy *node); +static void _outWindowDef(OUT_TYPE(WindowDef, WindowDef) out_node, const WindowDef *node); +static void _outRangeSubselect(OUT_TYPE(RangeSubselect, RangeSubselect) out_node, const RangeSubselect *node); +static void _outRangeFunction(OUT_TYPE(RangeFunction, RangeFunction) out_node, const RangeFunction *node); +static void _outRangeTableSample(OUT_TYPE(RangeTableSample, RangeTableSample) out_node, const RangeTableSample *node); +static void _outRangeTableFunc(OUT_TYPE(RangeTableFunc, RangeTableFunc) out_node, const RangeTableFunc *node); +static void _outRangeTableFuncCol(OUT_TYPE(RangeTableFuncCol, RangeTableFuncCol) out_node, const RangeTableFuncCol *node); +static void _outTypeName(OUT_TYPE(TypeName, TypeName) out_node, const TypeName *node); +static void _outColumnDef(OUT_TYPE(ColumnDef, ColumnDef) out_node, const ColumnDef *node); +static void _outIndexElem(OUT_TYPE(IndexElem, IndexElem) out_node, const IndexElem *node); +static void _outConstraint(OUT_TYPE(Constraint, Constraint) out_node, const Constraint *node); +static void _outDefElem(OUT_TYPE(DefElem, DefElem) out_node, const DefElem *node); +static void _outRangeTblEntry(OUT_TYPE(RangeTblEntry, RangeTblEntry) out_node, const RangeTblEntry *node); +static void _outRangeTblFunction(OUT_TYPE(RangeTblFunction, RangeTblFunction) out_node, const RangeTblFunction *node); +static void _outTableSampleClause(OUT_TYPE(TableSampleClause, TableSampleClause) out_node, const TableSampleClause *node); +static void _outWithCheckOption(OUT_TYPE(WithCheckOption, WithCheckOption) out_node, const WithCheckOption *node); +static void _outSortGroupClause(OUT_TYPE(SortGroupClause, SortGroupClause) out_node, const SortGroupClause *node); +static void _outGroupingSet(OUT_TYPE(GroupingSet, GroupingSet) out_node, const GroupingSet *node); +static void _outWindowClause(OUT_TYPE(WindowClause, WindowClause) out_node, const WindowClause *node); +static void _outObjectWithArgs(OUT_TYPE(ObjectWithArgs, ObjectWithArgs) out_node, const ObjectWithArgs *node); +static void _outAccessPriv(OUT_TYPE(AccessPriv, AccessPriv) out_node, const AccessPriv *node); +static void _outCreateOpClassItem(OUT_TYPE(CreateOpClassItem, CreateOpClassItem) out_node, const CreateOpClassItem *node); +static void _outTableLikeClause(OUT_TYPE(TableLikeClause, TableLikeClause) out_node, const TableLikeClause *node); +static void _outFunctionParameter(OUT_TYPE(FunctionParameter, FunctionParameter) out_node, const FunctionParameter *node); +static void _outLockingClause(OUT_TYPE(LockingClause, LockingClause) out_node, const LockingClause *node); +static void _outRowMarkClause(OUT_TYPE(RowMarkClause, RowMarkClause) out_node, const RowMarkClause *node); +static void _outXmlSerialize(OUT_TYPE(XmlSerialize, XmlSerialize) out_node, const XmlSerialize *node); +static void _outWithClause(OUT_TYPE(WithClause, WithClause) out_node, const WithClause *node); +static void _outInferClause(OUT_TYPE(InferClause, InferClause) out_node, const InferClause *node); +static void _outOnConflictClause(OUT_TYPE(OnConflictClause, OnConflictClause) out_node, const OnConflictClause *node); +static void _outCommonTableExpr(OUT_TYPE(CommonTableExpr, CommonTableExpr) out_node, const CommonTableExpr *node); +static void _outRoleSpec(OUT_TYPE(RoleSpec, RoleSpec) out_node, const RoleSpec *node); +static void _outTriggerTransition(OUT_TYPE(TriggerTransition, TriggerTransition) out_node, const TriggerTransition *node); +static void _outPartitionElem(OUT_TYPE(PartitionElem, PartitionElem) out_node, const PartitionElem *node); +static void _outPartitionSpec(OUT_TYPE(PartitionSpec, PartitionSpec) out_node, const PartitionSpec *node); +static void _outPartitionBoundSpec(OUT_TYPE(PartitionBoundSpec, PartitionBoundSpec) out_node, const PartitionBoundSpec *node); +static void _outPartitionRangeDatum(OUT_TYPE(PartitionRangeDatum, PartitionRangeDatum) out_node, const PartitionRangeDatum *node); +static void _outPartitionCmd(OUT_TYPE(PartitionCmd, PartitionCmd) out_node, const PartitionCmd *node); +static void _outVacuumRelation(OUT_TYPE(VacuumRelation, VacuumRelation) out_node, const VacuumRelation *node); +static void _outInlineCodeBlock(OUT_TYPE(InlineCodeBlock, InlineCodeBlock) out_node, const InlineCodeBlock *node); +static void _outCallContext(OUT_TYPE(CallContext, CallContext) out_node, const CallContext *node); + + +static void +_outAlias(OUT_TYPE(Alias, Alias) out, const Alias *node) +{ + WRITE_STRING_FIELD(aliasname, aliasname, aliasname); + WRITE_LIST_FIELD(colnames, colnames, colnames); +} + +static void +_outRangeVar(OUT_TYPE(RangeVar, RangeVar) out, const RangeVar *node) +{ + WRITE_STRING_FIELD(catalogname, catalogname, catalogname); + WRITE_STRING_FIELD(schemaname, schemaname, schemaname); + WRITE_STRING_FIELD(relname, relname, relname); + WRITE_BOOL_FIELD(inh, inh, inh); + WRITE_CHAR_FIELD(relpersistence, relpersistence, relpersistence); + WRITE_SPECIFIC_NODE_PTR_FIELD(Alias, alias, alias, alias, alias); + WRITE_INT_FIELD(location, location, location); +} + +static void +_outTableFunc(OUT_TYPE(TableFunc, TableFunc) out, const TableFunc *node) +{ + WRITE_LIST_FIELD(ns_uris, ns_uris, ns_uris); + WRITE_LIST_FIELD(ns_names, ns_names, ns_names); + WRITE_NODE_PTR_FIELD(docexpr, docexpr, docexpr); + WRITE_NODE_PTR_FIELD(rowexpr, rowexpr, rowexpr); + WRITE_LIST_FIELD(colnames, colnames, colnames); + WRITE_LIST_FIELD(coltypes, coltypes, coltypes); + WRITE_LIST_FIELD(coltypmods, coltypmods, coltypmods); + WRITE_LIST_FIELD(colcollations, colcollations, colcollations); + WRITE_LIST_FIELD(colexprs, colexprs, colexprs); + WRITE_LIST_FIELD(coldefexprs, coldefexprs, coldefexprs); + WRITE_BITMAPSET_FIELD(notnulls, notnulls, notnulls); + WRITE_INT_FIELD(ordinalitycol, ordinalitycol, ordinalitycol); + WRITE_INT_FIELD(location, location, location); +} + +static void +_outExpr(OUT_TYPE(Expr, Expr) out, const Expr *node) +{ +} + +static void +_outVar(OUT_TYPE(Var, Var) out, const Var *node) +{ + WRITE_UINT_FIELD(varno, varno, varno); + WRITE_INT_FIELD(varattno, varattno, varattno); + WRITE_UINT_FIELD(vartype, vartype, vartype); + WRITE_INT_FIELD(vartypmod, vartypmod, vartypmod); + WRITE_UINT_FIELD(varcollid, varcollid, varcollid); + WRITE_UINT_FIELD(varlevelsup, varlevelsup, varlevelsup); + WRITE_UINT_FIELD(varnosyn, varnosyn, varnosyn); + WRITE_INT_FIELD(varattnosyn, varattnosyn, varattnosyn); + WRITE_INT_FIELD(location, location, location); +} + +static void +_outParam(OUT_TYPE(Param, Param) out, const Param *node) +{ + WRITE_ENUM_FIELD(ParamKind, paramkind, paramkind, paramkind); + WRITE_INT_FIELD(paramid, paramid, paramid); + WRITE_UINT_FIELD(paramtype, paramtype, paramtype); + WRITE_INT_FIELD(paramtypmod, paramtypmod, paramtypmod); + WRITE_UINT_FIELD(paramcollid, paramcollid, paramcollid); + WRITE_INT_FIELD(location, location, location); +} + +static void +_outAggref(OUT_TYPE(Aggref, Aggref) out, const Aggref *node) +{ + WRITE_UINT_FIELD(aggfnoid, aggfnoid, aggfnoid); + WRITE_UINT_FIELD(aggtype, aggtype, aggtype); + WRITE_UINT_FIELD(aggcollid, aggcollid, aggcollid); + WRITE_UINT_FIELD(inputcollid, inputcollid, inputcollid); + WRITE_UINT_FIELD(aggtranstype, aggtranstype, aggtranstype); + WRITE_LIST_FIELD(aggargtypes, aggargtypes, aggargtypes); + WRITE_LIST_FIELD(aggdirectargs, aggdirectargs, aggdirectargs); + WRITE_LIST_FIELD(args, args, args); + WRITE_LIST_FIELD(aggorder, aggorder, aggorder); + WRITE_LIST_FIELD(aggdistinct, aggdistinct, aggdistinct); + WRITE_NODE_PTR_FIELD(aggfilter, aggfilter, aggfilter); + WRITE_BOOL_FIELD(aggstar, aggstar, aggstar); + WRITE_BOOL_FIELD(aggvariadic, aggvariadic, aggvariadic); + WRITE_CHAR_FIELD(aggkind, aggkind, aggkind); + WRITE_UINT_FIELD(agglevelsup, agglevelsup, agglevelsup); + WRITE_ENUM_FIELD(AggSplit, aggsplit, aggsplit, aggsplit); + WRITE_INT_FIELD(location, location, location); +} + +static void +_outGroupingFunc(OUT_TYPE(GroupingFunc, GroupingFunc) out, const GroupingFunc *node) +{ + WRITE_LIST_FIELD(args, args, args); + WRITE_LIST_FIELD(refs, refs, refs); + WRITE_LIST_FIELD(cols, cols, cols); + WRITE_UINT_FIELD(agglevelsup, agglevelsup, agglevelsup); + WRITE_INT_FIELD(location, location, location); +} + +static void +_outWindowFunc(OUT_TYPE(WindowFunc, WindowFunc) out, const WindowFunc *node) +{ + WRITE_UINT_FIELD(winfnoid, winfnoid, winfnoid); + WRITE_UINT_FIELD(wintype, wintype, wintype); + WRITE_UINT_FIELD(wincollid, wincollid, wincollid); + WRITE_UINT_FIELD(inputcollid, inputcollid, inputcollid); + WRITE_LIST_FIELD(args, args, args); + WRITE_NODE_PTR_FIELD(aggfilter, aggfilter, aggfilter); + WRITE_UINT_FIELD(winref, winref, winref); + WRITE_BOOL_FIELD(winstar, winstar, winstar); + WRITE_BOOL_FIELD(winagg, winagg, winagg); + WRITE_INT_FIELD(location, location, location); +} + +static void +_outSubscriptingRef(OUT_TYPE(SubscriptingRef, SubscriptingRef) out, const SubscriptingRef *node) +{ + WRITE_UINT_FIELD(refcontainertype, refcontainertype, refcontainertype); + WRITE_UINT_FIELD(refelemtype, refelemtype, refelemtype); + WRITE_INT_FIELD(reftypmod, reftypmod, reftypmod); + WRITE_UINT_FIELD(refcollid, refcollid, refcollid); + WRITE_LIST_FIELD(refupperindexpr, refupperindexpr, refupperindexpr); + WRITE_LIST_FIELD(reflowerindexpr, reflowerindexpr, reflowerindexpr); + WRITE_NODE_PTR_FIELD(refexpr, refexpr, refexpr); + WRITE_NODE_PTR_FIELD(refassgnexpr, refassgnexpr, refassgnexpr); +} + +static void +_outFuncExpr(OUT_TYPE(FuncExpr, FuncExpr) out, const FuncExpr *node) +{ + WRITE_UINT_FIELD(funcid, funcid, funcid); + WRITE_UINT_FIELD(funcresulttype, funcresulttype, funcresulttype); + WRITE_BOOL_FIELD(funcretset, funcretset, funcretset); + WRITE_BOOL_FIELD(funcvariadic, funcvariadic, funcvariadic); + WRITE_ENUM_FIELD(CoercionForm, funcformat, funcformat, funcformat); + WRITE_UINT_FIELD(funccollid, funccollid, funccollid); + WRITE_UINT_FIELD(inputcollid, inputcollid, inputcollid); + WRITE_LIST_FIELD(args, args, args); + WRITE_INT_FIELD(location, location, location); +} + +static void +_outNamedArgExpr(OUT_TYPE(NamedArgExpr, NamedArgExpr) out, const NamedArgExpr *node) +{ + WRITE_NODE_PTR_FIELD(arg, arg, arg); + WRITE_STRING_FIELD(name, name, name); + WRITE_INT_FIELD(argnumber, argnumber, argnumber); + WRITE_INT_FIELD(location, location, location); +} + +static void +_outOpExpr(OUT_TYPE(OpExpr, OpExpr) out, const OpExpr *node) +{ + WRITE_UINT_FIELD(opno, opno, opno); + WRITE_UINT_FIELD(opfuncid, opfuncid, opfuncid); + WRITE_UINT_FIELD(opresulttype, opresulttype, opresulttype); + WRITE_BOOL_FIELD(opretset, opretset, opretset); + WRITE_UINT_FIELD(opcollid, opcollid, opcollid); + WRITE_UINT_FIELD(inputcollid, inputcollid, inputcollid); + WRITE_LIST_FIELD(args, args, args); + WRITE_INT_FIELD(location, location, location); +} + +static void +_outDistinctExpr(OUT_TYPE(DistinctExpr, DistinctExpr) out, const DistinctExpr *node) +{ + WRITE_UINT_FIELD(opno, opno, opno); + WRITE_UINT_FIELD(opfuncid, opfuncid, opfuncid); + WRITE_UINT_FIELD(opresulttype, opresulttype, opresulttype); + WRITE_BOOL_FIELD(opretset, opretset, opretset); + WRITE_UINT_FIELD(opcollid, opcollid, opcollid); + WRITE_UINT_FIELD(inputcollid, inputcollid, inputcollid); + WRITE_LIST_FIELD(args, args, args); + WRITE_INT_FIELD(location, location, location); +} + +static void +_outNullIfExpr(OUT_TYPE(NullIfExpr, NullIfExpr) out, const NullIfExpr *node) +{ + WRITE_UINT_FIELD(opno, opno, opno); + WRITE_UINT_FIELD(opfuncid, opfuncid, opfuncid); + WRITE_UINT_FIELD(opresulttype, opresulttype, opresulttype); + WRITE_BOOL_FIELD(opretset, opretset, opretset); + WRITE_UINT_FIELD(opcollid, opcollid, opcollid); + WRITE_UINT_FIELD(inputcollid, inputcollid, inputcollid); + WRITE_LIST_FIELD(args, args, args); + WRITE_INT_FIELD(location, location, location); +} + +static void +_outScalarArrayOpExpr(OUT_TYPE(ScalarArrayOpExpr, ScalarArrayOpExpr) out, const ScalarArrayOpExpr *node) +{ + WRITE_UINT_FIELD(opno, opno, opno); + WRITE_UINT_FIELD(opfuncid, opfuncid, opfuncid); + WRITE_BOOL_FIELD(use_or, useOr, useOr); + WRITE_UINT_FIELD(inputcollid, inputcollid, inputcollid); + WRITE_LIST_FIELD(args, args, args); + WRITE_INT_FIELD(location, location, location); +} + +static void +_outBoolExpr(OUT_TYPE(BoolExpr, BoolExpr) out, const BoolExpr *node) +{ + WRITE_ENUM_FIELD(BoolExprType, boolop, boolop, boolop); + WRITE_LIST_FIELD(args, args, args); + WRITE_INT_FIELD(location, location, location); +} + +static void +_outSubLink(OUT_TYPE(SubLink, SubLink) out, const SubLink *node) +{ + WRITE_ENUM_FIELD(SubLinkType, sub_link_type, subLinkType, subLinkType); + WRITE_INT_FIELD(sub_link_id, subLinkId, subLinkId); + WRITE_NODE_PTR_FIELD(testexpr, testexpr, testexpr); + WRITE_LIST_FIELD(oper_name, operName, operName); + WRITE_NODE_PTR_FIELD(subselect, subselect, subselect); + WRITE_INT_FIELD(location, location, location); +} + +static void +_outSubPlan(OUT_TYPE(SubPlan, SubPlan) out, const SubPlan *node) +{ + WRITE_ENUM_FIELD(SubLinkType, sub_link_type, subLinkType, subLinkType); + WRITE_NODE_PTR_FIELD(testexpr, testexpr, testexpr); + WRITE_LIST_FIELD(param_ids, paramIds, paramIds); + WRITE_INT_FIELD(plan_id, plan_id, plan_id); + WRITE_STRING_FIELD(plan_name, plan_name, plan_name); + WRITE_UINT_FIELD(first_col_type, firstColType, firstColType); + WRITE_INT_FIELD(first_col_typmod, firstColTypmod, firstColTypmod); + WRITE_UINT_FIELD(first_col_collation, firstColCollation, firstColCollation); + WRITE_BOOL_FIELD(use_hash_table, useHashTable, useHashTable); + WRITE_BOOL_FIELD(unknown_eq_false, unknownEqFalse, unknownEqFalse); + WRITE_BOOL_FIELD(parallel_safe, parallel_safe, parallel_safe); + WRITE_LIST_FIELD(set_param, setParam, setParam); + WRITE_LIST_FIELD(par_param, parParam, parParam); + WRITE_LIST_FIELD(args, args, args); + WRITE_FLOAT_FIELD(startup_cost, startup_cost, startup_cost); + WRITE_FLOAT_FIELD(per_call_cost, per_call_cost, per_call_cost); +} + +static void +_outAlternativeSubPlan(OUT_TYPE(AlternativeSubPlan, AlternativeSubPlan) out, const AlternativeSubPlan *node) +{ + WRITE_LIST_FIELD(subplans, subplans, subplans); +} + +static void +_outFieldSelect(OUT_TYPE(FieldSelect, FieldSelect) out, const FieldSelect *node) +{ + WRITE_NODE_PTR_FIELD(arg, arg, arg); + WRITE_INT_FIELD(fieldnum, fieldnum, fieldnum); + WRITE_UINT_FIELD(resulttype, resulttype, resulttype); + WRITE_INT_FIELD(resulttypmod, resulttypmod, resulttypmod); + WRITE_UINT_FIELD(resultcollid, resultcollid, resultcollid); +} + +static void +_outFieldStore(OUT_TYPE(FieldStore, FieldStore) out, const FieldStore *node) +{ + WRITE_NODE_PTR_FIELD(arg, arg, arg); + WRITE_LIST_FIELD(newvals, newvals, newvals); + WRITE_LIST_FIELD(fieldnums, fieldnums, fieldnums); + WRITE_UINT_FIELD(resulttype, resulttype, resulttype); +} + +static void +_outRelabelType(OUT_TYPE(RelabelType, RelabelType) out, const RelabelType *node) +{ + WRITE_NODE_PTR_FIELD(arg, arg, arg); + WRITE_UINT_FIELD(resulttype, resulttype, resulttype); + WRITE_INT_FIELD(resulttypmod, resulttypmod, resulttypmod); + WRITE_UINT_FIELD(resultcollid, resultcollid, resultcollid); + WRITE_ENUM_FIELD(CoercionForm, relabelformat, relabelformat, relabelformat); + WRITE_INT_FIELD(location, location, location); +} + +static void +_outCoerceViaIO(OUT_TYPE(CoerceViaIO, CoerceViaIO) out, const CoerceViaIO *node) +{ + WRITE_NODE_PTR_FIELD(arg, arg, arg); + WRITE_UINT_FIELD(resulttype, resulttype, resulttype); + WRITE_UINT_FIELD(resultcollid, resultcollid, resultcollid); + WRITE_ENUM_FIELD(CoercionForm, coerceformat, coerceformat, coerceformat); + WRITE_INT_FIELD(location, location, location); +} + +static void +_outArrayCoerceExpr(OUT_TYPE(ArrayCoerceExpr, ArrayCoerceExpr) out, const ArrayCoerceExpr *node) +{ + WRITE_NODE_PTR_FIELD(arg, arg, arg); + WRITE_NODE_PTR_FIELD(elemexpr, elemexpr, elemexpr); + WRITE_UINT_FIELD(resulttype, resulttype, resulttype); + WRITE_INT_FIELD(resulttypmod, resulttypmod, resulttypmod); + WRITE_UINT_FIELD(resultcollid, resultcollid, resultcollid); + WRITE_ENUM_FIELD(CoercionForm, coerceformat, coerceformat, coerceformat); + WRITE_INT_FIELD(location, location, location); +} + +static void +_outConvertRowtypeExpr(OUT_TYPE(ConvertRowtypeExpr, ConvertRowtypeExpr) out, const ConvertRowtypeExpr *node) +{ + WRITE_NODE_PTR_FIELD(arg, arg, arg); + WRITE_UINT_FIELD(resulttype, resulttype, resulttype); + WRITE_ENUM_FIELD(CoercionForm, convertformat, convertformat, convertformat); + WRITE_INT_FIELD(location, location, location); +} + +static void +_outCollateExpr(OUT_TYPE(CollateExpr, CollateExpr) out, const CollateExpr *node) +{ + WRITE_NODE_PTR_FIELD(arg, arg, arg); + WRITE_UINT_FIELD(coll_oid, collOid, collOid); + WRITE_INT_FIELD(location, location, location); +} + +static void +_outCaseExpr(OUT_TYPE(CaseExpr, CaseExpr) out, const CaseExpr *node) +{ + WRITE_UINT_FIELD(casetype, casetype, casetype); + WRITE_UINT_FIELD(casecollid, casecollid, casecollid); + WRITE_NODE_PTR_FIELD(arg, arg, arg); + WRITE_LIST_FIELD(args, args, args); + WRITE_NODE_PTR_FIELD(defresult, defresult, defresult); + WRITE_INT_FIELD(location, location, location); +} + +static void +_outCaseWhen(OUT_TYPE(CaseWhen, CaseWhen) out, const CaseWhen *node) +{ + WRITE_NODE_PTR_FIELD(expr, expr, expr); + WRITE_NODE_PTR_FIELD(result, result, result); + WRITE_INT_FIELD(location, location, location); +} + +static void +_outCaseTestExpr(OUT_TYPE(CaseTestExpr, CaseTestExpr) out, const CaseTestExpr *node) +{ + WRITE_UINT_FIELD(type_id, typeId, typeId); + WRITE_INT_FIELD(type_mod, typeMod, typeMod); + WRITE_UINT_FIELD(collation, collation, collation); +} + +static void +_outArrayExpr(OUT_TYPE(ArrayExpr, ArrayExpr) out, const ArrayExpr *node) +{ + WRITE_UINT_FIELD(array_typeid, array_typeid, array_typeid); + WRITE_UINT_FIELD(array_collid, array_collid, array_collid); + WRITE_UINT_FIELD(element_typeid, element_typeid, element_typeid); + WRITE_LIST_FIELD(elements, elements, elements); + WRITE_BOOL_FIELD(multidims, multidims, multidims); + WRITE_INT_FIELD(location, location, location); +} + +static void +_outRowExpr(OUT_TYPE(RowExpr, RowExpr) out, const RowExpr *node) +{ + WRITE_LIST_FIELD(args, args, args); + WRITE_UINT_FIELD(row_typeid, row_typeid, row_typeid); + WRITE_ENUM_FIELD(CoercionForm, row_format, row_format, row_format); + WRITE_LIST_FIELD(colnames, colnames, colnames); + WRITE_INT_FIELD(location, location, location); +} + +static void +_outRowCompareExpr(OUT_TYPE(RowCompareExpr, RowCompareExpr) out, const RowCompareExpr *node) +{ + WRITE_ENUM_FIELD(RowCompareType, rctype, rctype, rctype); + WRITE_LIST_FIELD(opnos, opnos, opnos); + WRITE_LIST_FIELD(opfamilies, opfamilies, opfamilies); + WRITE_LIST_FIELD(inputcollids, inputcollids, inputcollids); + WRITE_LIST_FIELD(largs, largs, largs); + WRITE_LIST_FIELD(rargs, rargs, rargs); +} + +static void +_outCoalesceExpr(OUT_TYPE(CoalesceExpr, CoalesceExpr) out, const CoalesceExpr *node) +{ + WRITE_UINT_FIELD(coalescetype, coalescetype, coalescetype); + WRITE_UINT_FIELD(coalescecollid, coalescecollid, coalescecollid); + WRITE_LIST_FIELD(args, args, args); + WRITE_INT_FIELD(location, location, location); +} + +static void +_outMinMaxExpr(OUT_TYPE(MinMaxExpr, MinMaxExpr) out, const MinMaxExpr *node) +{ + WRITE_UINT_FIELD(minmaxtype, minmaxtype, minmaxtype); + WRITE_UINT_FIELD(minmaxcollid, minmaxcollid, minmaxcollid); + WRITE_UINT_FIELD(inputcollid, inputcollid, inputcollid); + WRITE_ENUM_FIELD(MinMaxOp, op, op, op); + WRITE_LIST_FIELD(args, args, args); + WRITE_INT_FIELD(location, location, location); +} + +static void +_outSQLValueFunction(OUT_TYPE(SQLValueFunction, SQLValueFunction) out, const SQLValueFunction *node) +{ + WRITE_ENUM_FIELD(SQLValueFunctionOp, op, op, op); + WRITE_UINT_FIELD(type, type, type); + WRITE_INT_FIELD(typmod, typmod, typmod); + WRITE_INT_FIELD(location, location, location); +} + +static void +_outXmlExpr(OUT_TYPE(XmlExpr, XmlExpr) out, const XmlExpr *node) +{ + WRITE_ENUM_FIELD(XmlExprOp, op, op, op); + WRITE_STRING_FIELD(name, name, name); + WRITE_LIST_FIELD(named_args, named_args, named_args); + WRITE_LIST_FIELD(arg_names, arg_names, arg_names); + WRITE_LIST_FIELD(args, args, args); + WRITE_ENUM_FIELD(XmlOptionType, xmloption, xmloption, xmloption); + WRITE_UINT_FIELD(type, type, type); + WRITE_INT_FIELD(typmod, typmod, typmod); + WRITE_INT_FIELD(location, location, location); +} + +static void +_outNullTest(OUT_TYPE(NullTest, NullTest) out, const NullTest *node) +{ + WRITE_NODE_PTR_FIELD(arg, arg, arg); + WRITE_ENUM_FIELD(NullTestType, nulltesttype, nulltesttype, nulltesttype); + WRITE_BOOL_FIELD(argisrow, argisrow, argisrow); + WRITE_INT_FIELD(location, location, location); +} + +static void +_outBooleanTest(OUT_TYPE(BooleanTest, BooleanTest) out, const BooleanTest *node) +{ + WRITE_NODE_PTR_FIELD(arg, arg, arg); + WRITE_ENUM_FIELD(BoolTestType, booltesttype, booltesttype, booltesttype); + WRITE_INT_FIELD(location, location, location); +} + +static void +_outCoerceToDomain(OUT_TYPE(CoerceToDomain, CoerceToDomain) out, const CoerceToDomain *node) +{ + WRITE_NODE_PTR_FIELD(arg, arg, arg); + WRITE_UINT_FIELD(resulttype, resulttype, resulttype); + WRITE_INT_FIELD(resulttypmod, resulttypmod, resulttypmod); + WRITE_UINT_FIELD(resultcollid, resultcollid, resultcollid); + WRITE_ENUM_FIELD(CoercionForm, coercionformat, coercionformat, coercionformat); + WRITE_INT_FIELD(location, location, location); +} + +static void +_outCoerceToDomainValue(OUT_TYPE(CoerceToDomainValue, CoerceToDomainValue) out, const CoerceToDomainValue *node) +{ + WRITE_UINT_FIELD(type_id, typeId, typeId); + WRITE_INT_FIELD(type_mod, typeMod, typeMod); + WRITE_UINT_FIELD(collation, collation, collation); + WRITE_INT_FIELD(location, location, location); +} + +static void +_outSetToDefault(OUT_TYPE(SetToDefault, SetToDefault) out, const SetToDefault *node) +{ + WRITE_UINT_FIELD(type_id, typeId, typeId); + WRITE_INT_FIELD(type_mod, typeMod, typeMod); + WRITE_UINT_FIELD(collation, collation, collation); + WRITE_INT_FIELD(location, location, location); +} + +static void +_outCurrentOfExpr(OUT_TYPE(CurrentOfExpr, CurrentOfExpr) out, const CurrentOfExpr *node) +{ + WRITE_UINT_FIELD(cvarno, cvarno, cvarno); + WRITE_STRING_FIELD(cursor_name, cursor_name, cursor_name); + WRITE_INT_FIELD(cursor_param, cursor_param, cursor_param); +} + +static void +_outNextValueExpr(OUT_TYPE(NextValueExpr, NextValueExpr) out, const NextValueExpr *node) +{ + WRITE_UINT_FIELD(seqid, seqid, seqid); + WRITE_UINT_FIELD(type_id, typeId, typeId); +} + +static void +_outInferenceElem(OUT_TYPE(InferenceElem, InferenceElem) out, const InferenceElem *node) +{ + WRITE_NODE_PTR_FIELD(expr, expr, expr); + WRITE_UINT_FIELD(infercollid, infercollid, infercollid); + WRITE_UINT_FIELD(inferopclass, inferopclass, inferopclass); +} + +static void +_outTargetEntry(OUT_TYPE(TargetEntry, TargetEntry) out, const TargetEntry *node) +{ + WRITE_NODE_PTR_FIELD(expr, expr, expr); + WRITE_INT_FIELD(resno, resno, resno); + WRITE_STRING_FIELD(resname, resname, resname); + WRITE_UINT_FIELD(ressortgroupref, ressortgroupref, ressortgroupref); + WRITE_UINT_FIELD(resorigtbl, resorigtbl, resorigtbl); + WRITE_INT_FIELD(resorigcol, resorigcol, resorigcol); + WRITE_BOOL_FIELD(resjunk, resjunk, resjunk); +} + +static void +_outRangeTblRef(OUT_TYPE(RangeTblRef, RangeTblRef) out, const RangeTblRef *node) +{ + WRITE_INT_FIELD(rtindex, rtindex, rtindex); +} + +static void +_outJoinExpr(OUT_TYPE(JoinExpr, JoinExpr) out, const JoinExpr *node) +{ + WRITE_ENUM_FIELD(JoinType, jointype, jointype, jointype); + WRITE_BOOL_FIELD(is_natural, isNatural, isNatural); + WRITE_NODE_PTR_FIELD(larg, larg, larg); + WRITE_NODE_PTR_FIELD(rarg, rarg, rarg); + WRITE_LIST_FIELD(using_clause, usingClause, usingClause); + WRITE_NODE_PTR_FIELD(quals, quals, quals); + WRITE_SPECIFIC_NODE_PTR_FIELD(Alias, alias, alias, alias, alias); + WRITE_INT_FIELD(rtindex, rtindex, rtindex); +} + +static void +_outFromExpr(OUT_TYPE(FromExpr, FromExpr) out, const FromExpr *node) +{ + WRITE_LIST_FIELD(fromlist, fromlist, fromlist); + WRITE_NODE_PTR_FIELD(quals, quals, quals); +} + +static void +_outOnConflictExpr(OUT_TYPE(OnConflictExpr, OnConflictExpr) out, const OnConflictExpr *node) +{ + WRITE_ENUM_FIELD(OnConflictAction, action, action, action); + WRITE_LIST_FIELD(arbiter_elems, arbiterElems, arbiterElems); + WRITE_NODE_PTR_FIELD(arbiter_where, arbiterWhere, arbiterWhere); + WRITE_UINT_FIELD(constraint, constraint, constraint); + WRITE_LIST_FIELD(on_conflict_set, onConflictSet, onConflictSet); + WRITE_NODE_PTR_FIELD(on_conflict_where, onConflictWhere, onConflictWhere); + WRITE_INT_FIELD(excl_rel_index, exclRelIndex, exclRelIndex); + WRITE_LIST_FIELD(excl_rel_tlist, exclRelTlist, exclRelTlist); +} + +static void +_outIntoClause(OUT_TYPE(IntoClause, IntoClause) out, const IntoClause *node) +{ + WRITE_SPECIFIC_NODE_PTR_FIELD(RangeVar, range_var, rel, rel, rel); + WRITE_LIST_FIELD(col_names, colNames, colNames); + WRITE_STRING_FIELD(access_method, accessMethod, accessMethod); + WRITE_LIST_FIELD(options, options, options); + WRITE_ENUM_FIELD(OnCommitAction, on_commit, onCommit, onCommit); + WRITE_STRING_FIELD(table_space_name, tableSpaceName, tableSpaceName); + WRITE_NODE_PTR_FIELD(view_query, viewQuery, viewQuery); + WRITE_BOOL_FIELD(skip_data, skipData, skipData); +} + +static void +_outRawStmt(OUT_TYPE(RawStmt, RawStmt) out, const RawStmt *node) +{ + WRITE_NODE_PTR_FIELD(stmt, stmt, stmt); + WRITE_INT_FIELD(stmt_location, stmt_location, stmt_location); + WRITE_INT_FIELD(stmt_len, stmt_len, stmt_len); +} + +static void +_outQuery(OUT_TYPE(Query, Query) out, const Query *node) +{ + WRITE_ENUM_FIELD(CmdType, command_type, commandType, commandType); + WRITE_ENUM_FIELD(QuerySource, query_source, querySource, querySource); + WRITE_BOOL_FIELD(can_set_tag, canSetTag, canSetTag); + WRITE_NODE_PTR_FIELD(utility_stmt, utilityStmt, utilityStmt); + WRITE_INT_FIELD(result_relation, resultRelation, resultRelation); + WRITE_BOOL_FIELD(has_aggs, hasAggs, hasAggs); + WRITE_BOOL_FIELD(has_window_funcs, hasWindowFuncs, hasWindowFuncs); + WRITE_BOOL_FIELD(has_target_srfs, hasTargetSRFs, hasTargetSRFs); + WRITE_BOOL_FIELD(has_sub_links, hasSubLinks, hasSubLinks); + WRITE_BOOL_FIELD(has_distinct_on, hasDistinctOn, hasDistinctOn); + WRITE_BOOL_FIELD(has_recursive, hasRecursive, hasRecursive); + WRITE_BOOL_FIELD(has_modifying_cte, hasModifyingCTE, hasModifyingCTE); + WRITE_BOOL_FIELD(has_for_update, hasForUpdate, hasForUpdate); + WRITE_BOOL_FIELD(has_row_security, hasRowSecurity, hasRowSecurity); + WRITE_LIST_FIELD(cte_list, cteList, cteList); + WRITE_LIST_FIELD(rtable, rtable, rtable); + WRITE_SPECIFIC_NODE_PTR_FIELD(FromExpr, from_expr, jointree, jointree, jointree); + WRITE_LIST_FIELD(target_list, targetList, targetList); + WRITE_ENUM_FIELD(OverridingKind, override, override, override); + WRITE_SPECIFIC_NODE_PTR_FIELD(OnConflictExpr, on_conflict_expr, on_conflict, onConflict, onConflict); + WRITE_LIST_FIELD(returning_list, returningList, returningList); + WRITE_LIST_FIELD(group_clause, groupClause, groupClause); + WRITE_LIST_FIELD(grouping_sets, groupingSets, groupingSets); + WRITE_NODE_PTR_FIELD(having_qual, havingQual, havingQual); + WRITE_LIST_FIELD(window_clause, windowClause, windowClause); + WRITE_LIST_FIELD(distinct_clause, distinctClause, distinctClause); + WRITE_LIST_FIELD(sort_clause, sortClause, sortClause); + WRITE_NODE_PTR_FIELD(limit_offset, limitOffset, limitOffset); + WRITE_NODE_PTR_FIELD(limit_count, limitCount, limitCount); + WRITE_ENUM_FIELD(LimitOption, limit_option, limitOption, limitOption); + WRITE_LIST_FIELD(row_marks, rowMarks, rowMarks); + WRITE_NODE_PTR_FIELD(set_operations, setOperations, setOperations); + WRITE_LIST_FIELD(constraint_deps, constraintDeps, constraintDeps); + WRITE_LIST_FIELD(with_check_options, withCheckOptions, withCheckOptions); + WRITE_INT_FIELD(stmt_location, stmt_location, stmt_location); + WRITE_INT_FIELD(stmt_len, stmt_len, stmt_len); +} + +static void +_outInsertStmt(OUT_TYPE(InsertStmt, InsertStmt) out, const InsertStmt *node) +{ + WRITE_SPECIFIC_NODE_PTR_FIELD(RangeVar, range_var, relation, relation, relation); + WRITE_LIST_FIELD(cols, cols, cols); + WRITE_NODE_PTR_FIELD(select_stmt, selectStmt, selectStmt); + WRITE_SPECIFIC_NODE_PTR_FIELD(OnConflictClause, on_conflict_clause, on_conflict_clause, onConflictClause, onConflictClause); + WRITE_LIST_FIELD(returning_list, returningList, returningList); + WRITE_SPECIFIC_NODE_PTR_FIELD(WithClause, with_clause, with_clause, withClause, withClause); + WRITE_ENUM_FIELD(OverridingKind, override, override, override); +} + +static void +_outDeleteStmt(OUT_TYPE(DeleteStmt, DeleteStmt) out, const DeleteStmt *node) +{ + WRITE_SPECIFIC_NODE_PTR_FIELD(RangeVar, range_var, relation, relation, relation); + WRITE_LIST_FIELD(using_clause, usingClause, usingClause); + WRITE_NODE_PTR_FIELD(where_clause, whereClause, whereClause); + WRITE_LIST_FIELD(returning_list, returningList, returningList); + WRITE_SPECIFIC_NODE_PTR_FIELD(WithClause, with_clause, with_clause, withClause, withClause); +} + +static void +_outUpdateStmt(OUT_TYPE(UpdateStmt, UpdateStmt) out, const UpdateStmt *node) +{ + WRITE_SPECIFIC_NODE_PTR_FIELD(RangeVar, range_var, relation, relation, relation); + WRITE_LIST_FIELD(target_list, targetList, targetList); + WRITE_NODE_PTR_FIELD(where_clause, whereClause, whereClause); + WRITE_LIST_FIELD(from_clause, fromClause, fromClause); + WRITE_LIST_FIELD(returning_list, returningList, returningList); + WRITE_SPECIFIC_NODE_PTR_FIELD(WithClause, with_clause, with_clause, withClause, withClause); +} + +static void +_outSelectStmt(OUT_TYPE(SelectStmt, SelectStmt) out, const SelectStmt *node) +{ + WRITE_LIST_FIELD(distinct_clause, distinctClause, distinctClause); + WRITE_SPECIFIC_NODE_PTR_FIELD(IntoClause, into_clause, into_clause, intoClause, intoClause); + WRITE_LIST_FIELD(target_list, targetList, targetList); + WRITE_LIST_FIELD(from_clause, fromClause, fromClause); + WRITE_NODE_PTR_FIELD(where_clause, whereClause, whereClause); + WRITE_LIST_FIELD(group_clause, groupClause, groupClause); + WRITE_NODE_PTR_FIELD(having_clause, havingClause, havingClause); + WRITE_LIST_FIELD(window_clause, windowClause, windowClause); + WRITE_LIST_FIELD(values_lists, valuesLists, valuesLists); + WRITE_LIST_FIELD(sort_clause, sortClause, sortClause); + WRITE_NODE_PTR_FIELD(limit_offset, limitOffset, limitOffset); + WRITE_NODE_PTR_FIELD(limit_count, limitCount, limitCount); + WRITE_ENUM_FIELD(LimitOption, limit_option, limitOption, limitOption); + WRITE_LIST_FIELD(locking_clause, lockingClause, lockingClause); + WRITE_SPECIFIC_NODE_PTR_FIELD(WithClause, with_clause, with_clause, withClause, withClause); + WRITE_ENUM_FIELD(SetOperation, op, op, op); + WRITE_BOOL_FIELD(all, all, all); + WRITE_SPECIFIC_NODE_PTR_FIELD(SelectStmt, select_stmt, larg, larg, larg); + WRITE_SPECIFIC_NODE_PTR_FIELD(SelectStmt, select_stmt, rarg, rarg, rarg); +} + +static void +_outAlterTableStmt(OUT_TYPE(AlterTableStmt, AlterTableStmt) out, const AlterTableStmt *node) +{ + WRITE_SPECIFIC_NODE_PTR_FIELD(RangeVar, range_var, relation, relation, relation); + WRITE_LIST_FIELD(cmds, cmds, cmds); + WRITE_ENUM_FIELD(ObjectType, relkind, relkind, relkind); + WRITE_BOOL_FIELD(missing_ok, missing_ok, missing_ok); +} + +static void +_outAlterTableCmd(OUT_TYPE(AlterTableCmd, AlterTableCmd) out, const AlterTableCmd *node) +{ + WRITE_ENUM_FIELD(AlterTableType, subtype, subtype, subtype); + WRITE_STRING_FIELD(name, name, name); + WRITE_INT_FIELD(num, num, num); + WRITE_SPECIFIC_NODE_PTR_FIELD(RoleSpec, role_spec, newowner, newowner, newowner); + WRITE_NODE_PTR_FIELD(def, def, def); + WRITE_ENUM_FIELD(DropBehavior, behavior, behavior, behavior); + WRITE_BOOL_FIELD(missing_ok, missing_ok, missing_ok); +} + +static void +_outAlterDomainStmt(OUT_TYPE(AlterDomainStmt, AlterDomainStmt) out, const AlterDomainStmt *node) +{ + WRITE_CHAR_FIELD(subtype, subtype, subtype); + WRITE_LIST_FIELD(type_name, typeName, typeName); + WRITE_STRING_FIELD(name, name, name); + WRITE_NODE_PTR_FIELD(def, def, def); + WRITE_ENUM_FIELD(DropBehavior, behavior, behavior, behavior); + WRITE_BOOL_FIELD(missing_ok, missing_ok, missing_ok); +} + +static void +_outSetOperationStmt(OUT_TYPE(SetOperationStmt, SetOperationStmt) out, const SetOperationStmt *node) +{ + WRITE_ENUM_FIELD(SetOperation, op, op, op); + WRITE_BOOL_FIELD(all, all, all); + WRITE_NODE_PTR_FIELD(larg, larg, larg); + WRITE_NODE_PTR_FIELD(rarg, rarg, rarg); + WRITE_LIST_FIELD(col_types, colTypes, colTypes); + WRITE_LIST_FIELD(col_typmods, colTypmods, colTypmods); + WRITE_LIST_FIELD(col_collations, colCollations, colCollations); + WRITE_LIST_FIELD(group_clauses, groupClauses, groupClauses); +} + +static void +_outGrantStmt(OUT_TYPE(GrantStmt, GrantStmt) out, const GrantStmt *node) +{ + WRITE_BOOL_FIELD(is_grant, is_grant, is_grant); + WRITE_ENUM_FIELD(GrantTargetType, targtype, targtype, targtype); + WRITE_ENUM_FIELD(ObjectType, objtype, objtype, objtype); + WRITE_LIST_FIELD(objects, objects, objects); + WRITE_LIST_FIELD(privileges, privileges, privileges); + WRITE_LIST_FIELD(grantees, grantees, grantees); + WRITE_BOOL_FIELD(grant_option, grant_option, grant_option); + WRITE_ENUM_FIELD(DropBehavior, behavior, behavior, behavior); +} + +static void +_outGrantRoleStmt(OUT_TYPE(GrantRoleStmt, GrantRoleStmt) out, const GrantRoleStmt *node) +{ + WRITE_LIST_FIELD(granted_roles, granted_roles, granted_roles); + WRITE_LIST_FIELD(grantee_roles, grantee_roles, grantee_roles); + WRITE_BOOL_FIELD(is_grant, is_grant, is_grant); + WRITE_BOOL_FIELD(admin_opt, admin_opt, admin_opt); + WRITE_SPECIFIC_NODE_PTR_FIELD(RoleSpec, role_spec, grantor, grantor, grantor); + WRITE_ENUM_FIELD(DropBehavior, behavior, behavior, behavior); +} + +static void +_outAlterDefaultPrivilegesStmt(OUT_TYPE(AlterDefaultPrivilegesStmt, AlterDefaultPrivilegesStmt) out, const AlterDefaultPrivilegesStmt *node) +{ + WRITE_LIST_FIELD(options, options, options); + WRITE_SPECIFIC_NODE_PTR_FIELD(GrantStmt, grant_stmt, action, action, action); +} + +static void +_outClosePortalStmt(OUT_TYPE(ClosePortalStmt, ClosePortalStmt) out, const ClosePortalStmt *node) +{ + WRITE_STRING_FIELD(portalname, portalname, portalname); +} + +static void +_outClusterStmt(OUT_TYPE(ClusterStmt, ClusterStmt) out, const ClusterStmt *node) +{ + WRITE_SPECIFIC_NODE_PTR_FIELD(RangeVar, range_var, relation, relation, relation); + WRITE_STRING_FIELD(indexname, indexname, indexname); + WRITE_INT_FIELD(options, options, options); +} + +static void +_outCopyStmt(OUT_TYPE(CopyStmt, CopyStmt) out, const CopyStmt *node) +{ + WRITE_SPECIFIC_NODE_PTR_FIELD(RangeVar, range_var, relation, relation, relation); + WRITE_NODE_PTR_FIELD(query, query, query); + WRITE_LIST_FIELD(attlist, attlist, attlist); + WRITE_BOOL_FIELD(is_from, is_from, is_from); + WRITE_BOOL_FIELD(is_program, is_program, is_program); + WRITE_STRING_FIELD(filename, filename, filename); + WRITE_LIST_FIELD(options, options, options); + WRITE_NODE_PTR_FIELD(where_clause, whereClause, whereClause); +} + +static void +_outCreateStmt(OUT_TYPE(CreateStmt, CreateStmt) out, const CreateStmt *node) +{ + WRITE_SPECIFIC_NODE_PTR_FIELD(RangeVar, range_var, relation, relation, relation); + WRITE_LIST_FIELD(table_elts, tableElts, tableElts); + WRITE_LIST_FIELD(inh_relations, inhRelations, inhRelations); + WRITE_SPECIFIC_NODE_PTR_FIELD(PartitionBoundSpec, partition_bound_spec, partbound, partbound, partbound); + WRITE_SPECIFIC_NODE_PTR_FIELD(PartitionSpec, partition_spec, partspec, partspec, partspec); + WRITE_SPECIFIC_NODE_PTR_FIELD(TypeName, type_name, of_typename, ofTypename, ofTypename); + WRITE_LIST_FIELD(constraints, constraints, constraints); + WRITE_LIST_FIELD(options, options, options); + WRITE_ENUM_FIELD(OnCommitAction, oncommit, oncommit, oncommit); + WRITE_STRING_FIELD(tablespacename, tablespacename, tablespacename); + WRITE_STRING_FIELD(access_method, accessMethod, accessMethod); + WRITE_BOOL_FIELD(if_not_exists, if_not_exists, if_not_exists); +} + +static void +_outDefineStmt(OUT_TYPE(DefineStmt, DefineStmt) out, const DefineStmt *node) +{ + WRITE_ENUM_FIELD(ObjectType, kind, kind, kind); + WRITE_BOOL_FIELD(oldstyle, oldstyle, oldstyle); + WRITE_LIST_FIELD(defnames, defnames, defnames); + WRITE_LIST_FIELD(args, args, args); + WRITE_LIST_FIELD(definition, definition, definition); + WRITE_BOOL_FIELD(if_not_exists, if_not_exists, if_not_exists); + WRITE_BOOL_FIELD(replace, replace, replace); +} + +static void +_outDropStmt(OUT_TYPE(DropStmt, DropStmt) out, const DropStmt *node) +{ + WRITE_LIST_FIELD(objects, objects, objects); + WRITE_ENUM_FIELD(ObjectType, remove_type, removeType, removeType); + WRITE_ENUM_FIELD(DropBehavior, behavior, behavior, behavior); + WRITE_BOOL_FIELD(missing_ok, missing_ok, missing_ok); + WRITE_BOOL_FIELD(concurrent, concurrent, concurrent); +} + +static void +_outTruncateStmt(OUT_TYPE(TruncateStmt, TruncateStmt) out, const TruncateStmt *node) +{ + WRITE_LIST_FIELD(relations, relations, relations); + WRITE_BOOL_FIELD(restart_seqs, restart_seqs, restart_seqs); + WRITE_ENUM_FIELD(DropBehavior, behavior, behavior, behavior); +} + +static void +_outCommentStmt(OUT_TYPE(CommentStmt, CommentStmt) out, const CommentStmt *node) +{ + WRITE_ENUM_FIELD(ObjectType, objtype, objtype, objtype); + WRITE_NODE_PTR_FIELD(object, object, object); + WRITE_STRING_FIELD(comment, comment, comment); +} + +static void +_outFetchStmt(OUT_TYPE(FetchStmt, FetchStmt) out, const FetchStmt *node) +{ + WRITE_ENUM_FIELD(FetchDirection, direction, direction, direction); + WRITE_LONG_FIELD(how_many, howMany, howMany); + WRITE_STRING_FIELD(portalname, portalname, portalname); + WRITE_BOOL_FIELD(ismove, ismove, ismove); +} + +static void +_outIndexStmt(OUT_TYPE(IndexStmt, IndexStmt) out, const IndexStmt *node) +{ + WRITE_STRING_FIELD(idxname, idxname, idxname); + WRITE_SPECIFIC_NODE_PTR_FIELD(RangeVar, range_var, relation, relation, relation); + WRITE_STRING_FIELD(access_method, accessMethod, accessMethod); + WRITE_STRING_FIELD(table_space, tableSpace, tableSpace); + WRITE_LIST_FIELD(index_params, indexParams, indexParams); + WRITE_LIST_FIELD(index_including_params, indexIncludingParams, indexIncludingParams); + WRITE_LIST_FIELD(options, options, options); + WRITE_NODE_PTR_FIELD(where_clause, whereClause, whereClause); + WRITE_LIST_FIELD(exclude_op_names, excludeOpNames, excludeOpNames); + WRITE_STRING_FIELD(idxcomment, idxcomment, idxcomment); + WRITE_UINT_FIELD(index_oid, indexOid, indexOid); + WRITE_UINT_FIELD(old_node, oldNode, oldNode); + WRITE_UINT_FIELD(old_create_subid, oldCreateSubid, oldCreateSubid); + WRITE_UINT_FIELD(old_first_relfilenode_subid, oldFirstRelfilenodeSubid, oldFirstRelfilenodeSubid); + WRITE_BOOL_FIELD(unique, unique, unique); + WRITE_BOOL_FIELD(primary, primary, primary); + WRITE_BOOL_FIELD(isconstraint, isconstraint, isconstraint); + WRITE_BOOL_FIELD(deferrable, deferrable, deferrable); + WRITE_BOOL_FIELD(initdeferred, initdeferred, initdeferred); + WRITE_BOOL_FIELD(transformed, transformed, transformed); + WRITE_BOOL_FIELD(concurrent, concurrent, concurrent); + WRITE_BOOL_FIELD(if_not_exists, if_not_exists, if_not_exists); + WRITE_BOOL_FIELD(reset_default_tblspc, reset_default_tblspc, reset_default_tblspc); +} + +static void +_outCreateFunctionStmt(OUT_TYPE(CreateFunctionStmt, CreateFunctionStmt) out, const CreateFunctionStmt *node) +{ + WRITE_BOOL_FIELD(is_procedure, is_procedure, is_procedure); + WRITE_BOOL_FIELD(replace, replace, replace); + WRITE_LIST_FIELD(funcname, funcname, funcname); + WRITE_LIST_FIELD(parameters, parameters, parameters); + WRITE_SPECIFIC_NODE_PTR_FIELD(TypeName, type_name, return_type, returnType, returnType); + WRITE_LIST_FIELD(options, options, options); +} + +static void +_outAlterFunctionStmt(OUT_TYPE(AlterFunctionStmt, AlterFunctionStmt) out, const AlterFunctionStmt *node) +{ + WRITE_ENUM_FIELD(ObjectType, objtype, objtype, objtype); + WRITE_SPECIFIC_NODE_PTR_FIELD(ObjectWithArgs, object_with_args, func, func, func); + WRITE_LIST_FIELD(actions, actions, actions); +} + +static void +_outDoStmt(OUT_TYPE(DoStmt, DoStmt) out, const DoStmt *node) +{ + WRITE_LIST_FIELD(args, args, args); +} + +static void +_outRenameStmt(OUT_TYPE(RenameStmt, RenameStmt) out, const RenameStmt *node) +{ + WRITE_ENUM_FIELD(ObjectType, rename_type, renameType, renameType); + WRITE_ENUM_FIELD(ObjectType, relation_type, relationType, relationType); + WRITE_SPECIFIC_NODE_PTR_FIELD(RangeVar, range_var, relation, relation, relation); + WRITE_NODE_PTR_FIELD(object, object, object); + WRITE_STRING_FIELD(subname, subname, subname); + WRITE_STRING_FIELD(newname, newname, newname); + WRITE_ENUM_FIELD(DropBehavior, behavior, behavior, behavior); + WRITE_BOOL_FIELD(missing_ok, missing_ok, missing_ok); +} + +static void +_outRuleStmt(OUT_TYPE(RuleStmt, RuleStmt) out, const RuleStmt *node) +{ + WRITE_SPECIFIC_NODE_PTR_FIELD(RangeVar, range_var, relation, relation, relation); + WRITE_STRING_FIELD(rulename, rulename, rulename); + WRITE_NODE_PTR_FIELD(where_clause, whereClause, whereClause); + WRITE_ENUM_FIELD(CmdType, event, event, event); + WRITE_BOOL_FIELD(instead, instead, instead); + WRITE_LIST_FIELD(actions, actions, actions); + WRITE_BOOL_FIELD(replace, replace, replace); +} + +static void +_outNotifyStmt(OUT_TYPE(NotifyStmt, NotifyStmt) out, const NotifyStmt *node) +{ + WRITE_STRING_FIELD(conditionname, conditionname, conditionname); + WRITE_STRING_FIELD(payload, payload, payload); +} + +static void +_outListenStmt(OUT_TYPE(ListenStmt, ListenStmt) out, const ListenStmt *node) +{ + WRITE_STRING_FIELD(conditionname, conditionname, conditionname); +} + +static void +_outUnlistenStmt(OUT_TYPE(UnlistenStmt, UnlistenStmt) out, const UnlistenStmt *node) +{ + WRITE_STRING_FIELD(conditionname, conditionname, conditionname); +} + +static void +_outTransactionStmt(OUT_TYPE(TransactionStmt, TransactionStmt) out, const TransactionStmt *node) +{ + WRITE_ENUM_FIELD(TransactionStmtKind, kind, kind, kind); + WRITE_LIST_FIELD(options, options, options); + WRITE_STRING_FIELD(savepoint_name, savepoint_name, savepoint_name); + WRITE_STRING_FIELD(gid, gid, gid); + WRITE_BOOL_FIELD(chain, chain, chain); +} + +static void +_outViewStmt(OUT_TYPE(ViewStmt, ViewStmt) out, const ViewStmt *node) +{ + WRITE_SPECIFIC_NODE_PTR_FIELD(RangeVar, range_var, view, view, view); + WRITE_LIST_FIELD(aliases, aliases, aliases); + WRITE_NODE_PTR_FIELD(query, query, query); + WRITE_BOOL_FIELD(replace, replace, replace); + WRITE_LIST_FIELD(options, options, options); + WRITE_ENUM_FIELD(ViewCheckOption, with_check_option, withCheckOption, withCheckOption); +} + +static void +_outLoadStmt(OUT_TYPE(LoadStmt, LoadStmt) out, const LoadStmt *node) +{ + WRITE_STRING_FIELD(filename, filename, filename); +} + +static void +_outCreateDomainStmt(OUT_TYPE(CreateDomainStmt, CreateDomainStmt) out, const CreateDomainStmt *node) +{ + WRITE_LIST_FIELD(domainname, domainname, domainname); + WRITE_SPECIFIC_NODE_PTR_FIELD(TypeName, type_name, type_name, typeName, typeName); + WRITE_SPECIFIC_NODE_PTR_FIELD(CollateClause, collate_clause, coll_clause, collClause, collClause); + WRITE_LIST_FIELD(constraints, constraints, constraints); +} + +static void +_outCreatedbStmt(OUT_TYPE(CreatedbStmt, CreatedbStmt) out, const CreatedbStmt *node) +{ + WRITE_STRING_FIELD(dbname, dbname, dbname); + WRITE_LIST_FIELD(options, options, options); +} + +static void +_outDropdbStmt(OUT_TYPE(DropdbStmt, DropdbStmt) out, const DropdbStmt *node) +{ + WRITE_STRING_FIELD(dbname, dbname, dbname); + WRITE_BOOL_FIELD(missing_ok, missing_ok, missing_ok); + WRITE_LIST_FIELD(options, options, options); +} + +static void +_outVacuumStmt(OUT_TYPE(VacuumStmt, VacuumStmt) out, const VacuumStmt *node) +{ + WRITE_LIST_FIELD(options, options, options); + WRITE_LIST_FIELD(rels, rels, rels); + WRITE_BOOL_FIELD(is_vacuumcmd, is_vacuumcmd, is_vacuumcmd); +} + +static void +_outExplainStmt(OUT_TYPE(ExplainStmt, ExplainStmt) out, const ExplainStmt *node) +{ + WRITE_NODE_PTR_FIELD(query, query, query); + WRITE_LIST_FIELD(options, options, options); +} + +static void +_outCreateTableAsStmt(OUT_TYPE(CreateTableAsStmt, CreateTableAsStmt) out, const CreateTableAsStmt *node) +{ + WRITE_NODE_PTR_FIELD(query, query, query); + WRITE_SPECIFIC_NODE_PTR_FIELD(IntoClause, into_clause, into, into, into); + WRITE_ENUM_FIELD(ObjectType, relkind, relkind, relkind); + WRITE_BOOL_FIELD(is_select_into, is_select_into, is_select_into); + WRITE_BOOL_FIELD(if_not_exists, if_not_exists, if_not_exists); +} + +static void +_outCreateSeqStmt(OUT_TYPE(CreateSeqStmt, CreateSeqStmt) out, const CreateSeqStmt *node) +{ + WRITE_SPECIFIC_NODE_PTR_FIELD(RangeVar, range_var, sequence, sequence, sequence); + WRITE_LIST_FIELD(options, options, options); + WRITE_UINT_FIELD(owner_id, ownerId, ownerId); + WRITE_BOOL_FIELD(for_identity, for_identity, for_identity); + WRITE_BOOL_FIELD(if_not_exists, if_not_exists, if_not_exists); +} + +static void +_outAlterSeqStmt(OUT_TYPE(AlterSeqStmt, AlterSeqStmt) out, const AlterSeqStmt *node) +{ + WRITE_SPECIFIC_NODE_PTR_FIELD(RangeVar, range_var, sequence, sequence, sequence); + WRITE_LIST_FIELD(options, options, options); + WRITE_BOOL_FIELD(for_identity, for_identity, for_identity); + WRITE_BOOL_FIELD(missing_ok, missing_ok, missing_ok); +} + +static void +_outVariableSetStmt(OUT_TYPE(VariableSetStmt, VariableSetStmt) out, const VariableSetStmt *node) +{ + WRITE_ENUM_FIELD(VariableSetKind, kind, kind, kind); + WRITE_STRING_FIELD(name, name, name); + WRITE_LIST_FIELD(args, args, args); + WRITE_BOOL_FIELD(is_local, is_local, is_local); +} + +static void +_outVariableShowStmt(OUT_TYPE(VariableShowStmt, VariableShowStmt) out, const VariableShowStmt *node) +{ + WRITE_STRING_FIELD(name, name, name); +} + +static void +_outDiscardStmt(OUT_TYPE(DiscardStmt, DiscardStmt) out, const DiscardStmt *node) +{ + WRITE_ENUM_FIELD(DiscardMode, target, target, target); +} + +static void +_outCreateTrigStmt(OUT_TYPE(CreateTrigStmt, CreateTrigStmt) out, const CreateTrigStmt *node) +{ + WRITE_STRING_FIELD(trigname, trigname, trigname); + WRITE_SPECIFIC_NODE_PTR_FIELD(RangeVar, range_var, relation, relation, relation); + WRITE_LIST_FIELD(funcname, funcname, funcname); + WRITE_LIST_FIELD(args, args, args); + WRITE_BOOL_FIELD(row, row, row); + WRITE_INT_FIELD(timing, timing, timing); + WRITE_INT_FIELD(events, events, events); + WRITE_LIST_FIELD(columns, columns, columns); + WRITE_NODE_PTR_FIELD(when_clause, whenClause, whenClause); + WRITE_BOOL_FIELD(isconstraint, isconstraint, isconstraint); + WRITE_LIST_FIELD(transition_rels, transitionRels, transitionRels); + WRITE_BOOL_FIELD(deferrable, deferrable, deferrable); + WRITE_BOOL_FIELD(initdeferred, initdeferred, initdeferred); + WRITE_SPECIFIC_NODE_PTR_FIELD(RangeVar, range_var, constrrel, constrrel, constrrel); +} + +static void +_outCreatePLangStmt(OUT_TYPE(CreatePLangStmt, CreatePLangStmt) out, const CreatePLangStmt *node) +{ + WRITE_BOOL_FIELD(replace, replace, replace); + WRITE_STRING_FIELD(plname, plname, plname); + WRITE_LIST_FIELD(plhandler, plhandler, plhandler); + WRITE_LIST_FIELD(plinline, plinline, plinline); + WRITE_LIST_FIELD(plvalidator, plvalidator, plvalidator); + WRITE_BOOL_FIELD(pltrusted, pltrusted, pltrusted); +} + +static void +_outCreateRoleStmt(OUT_TYPE(CreateRoleStmt, CreateRoleStmt) out, const CreateRoleStmt *node) +{ + WRITE_ENUM_FIELD(RoleStmtType, stmt_type, stmt_type, stmt_type); + WRITE_STRING_FIELD(role, role, role); + WRITE_LIST_FIELD(options, options, options); +} + +static void +_outAlterRoleStmt(OUT_TYPE(AlterRoleStmt, AlterRoleStmt) out, const AlterRoleStmt *node) +{ + WRITE_SPECIFIC_NODE_PTR_FIELD(RoleSpec, role_spec, role, role, role); + WRITE_LIST_FIELD(options, options, options); + WRITE_INT_FIELD(action, action, action); +} + +static void +_outDropRoleStmt(OUT_TYPE(DropRoleStmt, DropRoleStmt) out, const DropRoleStmt *node) +{ + WRITE_LIST_FIELD(roles, roles, roles); + WRITE_BOOL_FIELD(missing_ok, missing_ok, missing_ok); +} + +static void +_outLockStmt(OUT_TYPE(LockStmt, LockStmt) out, const LockStmt *node) +{ + WRITE_LIST_FIELD(relations, relations, relations); + WRITE_INT_FIELD(mode, mode, mode); + WRITE_BOOL_FIELD(nowait, nowait, nowait); +} + +static void +_outConstraintsSetStmt(OUT_TYPE(ConstraintsSetStmt, ConstraintsSetStmt) out, const ConstraintsSetStmt *node) +{ + WRITE_LIST_FIELD(constraints, constraints, constraints); + WRITE_BOOL_FIELD(deferred, deferred, deferred); +} + +static void +_outReindexStmt(OUT_TYPE(ReindexStmt, ReindexStmt) out, const ReindexStmt *node) +{ + WRITE_ENUM_FIELD(ReindexObjectType, kind, kind, kind); + WRITE_SPECIFIC_NODE_PTR_FIELD(RangeVar, range_var, relation, relation, relation); + WRITE_STRING_FIELD(name, name, name); + WRITE_INT_FIELD(options, options, options); + WRITE_BOOL_FIELD(concurrent, concurrent, concurrent); +} + +static void +_outCheckPointStmt(OUT_TYPE(CheckPointStmt, CheckPointStmt) out, const CheckPointStmt *node) +{ +} + +static void +_outCreateSchemaStmt(OUT_TYPE(CreateSchemaStmt, CreateSchemaStmt) out, const CreateSchemaStmt *node) +{ + WRITE_STRING_FIELD(schemaname, schemaname, schemaname); + WRITE_SPECIFIC_NODE_PTR_FIELD(RoleSpec, role_spec, authrole, authrole, authrole); + WRITE_LIST_FIELD(schema_elts, schemaElts, schemaElts); + WRITE_BOOL_FIELD(if_not_exists, if_not_exists, if_not_exists); +} + +static void +_outAlterDatabaseStmt(OUT_TYPE(AlterDatabaseStmt, AlterDatabaseStmt) out, const AlterDatabaseStmt *node) +{ + WRITE_STRING_FIELD(dbname, dbname, dbname); + WRITE_LIST_FIELD(options, options, options); +} + +static void +_outAlterDatabaseSetStmt(OUT_TYPE(AlterDatabaseSetStmt, AlterDatabaseSetStmt) out, const AlterDatabaseSetStmt *node) +{ + WRITE_STRING_FIELD(dbname, dbname, dbname); + WRITE_SPECIFIC_NODE_PTR_FIELD(VariableSetStmt, variable_set_stmt, setstmt, setstmt, setstmt); +} + +static void +_outAlterRoleSetStmt(OUT_TYPE(AlterRoleSetStmt, AlterRoleSetStmt) out, const AlterRoleSetStmt *node) +{ + WRITE_SPECIFIC_NODE_PTR_FIELD(RoleSpec, role_spec, role, role, role); + WRITE_STRING_FIELD(database, database, database); + WRITE_SPECIFIC_NODE_PTR_FIELD(VariableSetStmt, variable_set_stmt, setstmt, setstmt, setstmt); +} + +static void +_outCreateConversionStmt(OUT_TYPE(CreateConversionStmt, CreateConversionStmt) out, const CreateConversionStmt *node) +{ + WRITE_LIST_FIELD(conversion_name, conversion_name, conversion_name); + WRITE_STRING_FIELD(for_encoding_name, for_encoding_name, for_encoding_name); + WRITE_STRING_FIELD(to_encoding_name, to_encoding_name, to_encoding_name); + WRITE_LIST_FIELD(func_name, func_name, func_name); + WRITE_BOOL_FIELD(def, def, def); +} + +static void +_outCreateCastStmt(OUT_TYPE(CreateCastStmt, CreateCastStmt) out, const CreateCastStmt *node) +{ + WRITE_SPECIFIC_NODE_PTR_FIELD(TypeName, type_name, sourcetype, sourcetype, sourcetype); + WRITE_SPECIFIC_NODE_PTR_FIELD(TypeName, type_name, targettype, targettype, targettype); + WRITE_SPECIFIC_NODE_PTR_FIELD(ObjectWithArgs, object_with_args, func, func, func); + WRITE_ENUM_FIELD(CoercionContext, context, context, context); + WRITE_BOOL_FIELD(inout, inout, inout); +} + +static void +_outCreateOpClassStmt(OUT_TYPE(CreateOpClassStmt, CreateOpClassStmt) out, const CreateOpClassStmt *node) +{ + WRITE_LIST_FIELD(opclassname, opclassname, opclassname); + WRITE_LIST_FIELD(opfamilyname, opfamilyname, opfamilyname); + WRITE_STRING_FIELD(amname, amname, amname); + WRITE_SPECIFIC_NODE_PTR_FIELD(TypeName, type_name, datatype, datatype, datatype); + WRITE_LIST_FIELD(items, items, items); + WRITE_BOOL_FIELD(is_default, isDefault, isDefault); +} + +static void +_outCreateOpFamilyStmt(OUT_TYPE(CreateOpFamilyStmt, CreateOpFamilyStmt) out, const CreateOpFamilyStmt *node) +{ + WRITE_LIST_FIELD(opfamilyname, opfamilyname, opfamilyname); + WRITE_STRING_FIELD(amname, amname, amname); +} + +static void +_outAlterOpFamilyStmt(OUT_TYPE(AlterOpFamilyStmt, AlterOpFamilyStmt) out, const AlterOpFamilyStmt *node) +{ + WRITE_LIST_FIELD(opfamilyname, opfamilyname, opfamilyname); + WRITE_STRING_FIELD(amname, amname, amname); + WRITE_BOOL_FIELD(is_drop, isDrop, isDrop); + WRITE_LIST_FIELD(items, items, items); +} + +static void +_outPrepareStmt(OUT_TYPE(PrepareStmt, PrepareStmt) out, const PrepareStmt *node) +{ + WRITE_STRING_FIELD(name, name, name); + WRITE_LIST_FIELD(argtypes, argtypes, argtypes); + WRITE_NODE_PTR_FIELD(query, query, query); +} + +static void +_outExecuteStmt(OUT_TYPE(ExecuteStmt, ExecuteStmt) out, const ExecuteStmt *node) +{ + WRITE_STRING_FIELD(name, name, name); + WRITE_LIST_FIELD(params, params, params); +} + +static void +_outDeallocateStmt(OUT_TYPE(DeallocateStmt, DeallocateStmt) out, const DeallocateStmt *node) +{ + WRITE_STRING_FIELD(name, name, name); +} + +static void +_outDeclareCursorStmt(OUT_TYPE(DeclareCursorStmt, DeclareCursorStmt) out, const DeclareCursorStmt *node) +{ + WRITE_STRING_FIELD(portalname, portalname, portalname); + WRITE_INT_FIELD(options, options, options); + WRITE_NODE_PTR_FIELD(query, query, query); +} + +static void +_outCreateTableSpaceStmt(OUT_TYPE(CreateTableSpaceStmt, CreateTableSpaceStmt) out, const CreateTableSpaceStmt *node) +{ + WRITE_STRING_FIELD(tablespacename, tablespacename, tablespacename); + WRITE_SPECIFIC_NODE_PTR_FIELD(RoleSpec, role_spec, owner, owner, owner); + WRITE_STRING_FIELD(location, location, location); + WRITE_LIST_FIELD(options, options, options); +} + +static void +_outDropTableSpaceStmt(OUT_TYPE(DropTableSpaceStmt, DropTableSpaceStmt) out, const DropTableSpaceStmt *node) +{ + WRITE_STRING_FIELD(tablespacename, tablespacename, tablespacename); + WRITE_BOOL_FIELD(missing_ok, missing_ok, missing_ok); +} + +static void +_outAlterObjectDependsStmt(OUT_TYPE(AlterObjectDependsStmt, AlterObjectDependsStmt) out, const AlterObjectDependsStmt *node) +{ + WRITE_ENUM_FIELD(ObjectType, object_type, objectType, objectType); + WRITE_SPECIFIC_NODE_PTR_FIELD(RangeVar, range_var, relation, relation, relation); + WRITE_NODE_PTR_FIELD(object, object, object); + WRITE_NODE_PTR_FIELD(extname, extname, extname); + WRITE_BOOL_FIELD(remove, remove, remove); +} + +static void +_outAlterObjectSchemaStmt(OUT_TYPE(AlterObjectSchemaStmt, AlterObjectSchemaStmt) out, const AlterObjectSchemaStmt *node) +{ + WRITE_ENUM_FIELD(ObjectType, object_type, objectType, objectType); + WRITE_SPECIFIC_NODE_PTR_FIELD(RangeVar, range_var, relation, relation, relation); + WRITE_NODE_PTR_FIELD(object, object, object); + WRITE_STRING_FIELD(newschema, newschema, newschema); + WRITE_BOOL_FIELD(missing_ok, missing_ok, missing_ok); +} + +static void +_outAlterOwnerStmt(OUT_TYPE(AlterOwnerStmt, AlterOwnerStmt) out, const AlterOwnerStmt *node) +{ + WRITE_ENUM_FIELD(ObjectType, object_type, objectType, objectType); + WRITE_SPECIFIC_NODE_PTR_FIELD(RangeVar, range_var, relation, relation, relation); + WRITE_NODE_PTR_FIELD(object, object, object); + WRITE_SPECIFIC_NODE_PTR_FIELD(RoleSpec, role_spec, newowner, newowner, newowner); +} + +static void +_outAlterOperatorStmt(OUT_TYPE(AlterOperatorStmt, AlterOperatorStmt) out, const AlterOperatorStmt *node) +{ + WRITE_SPECIFIC_NODE_PTR_FIELD(ObjectWithArgs, object_with_args, opername, opername, opername); + WRITE_LIST_FIELD(options, options, options); +} + +static void +_outAlterTypeStmt(OUT_TYPE(AlterTypeStmt, AlterTypeStmt) out, const AlterTypeStmt *node) +{ + WRITE_LIST_FIELD(type_name, typeName, typeName); + WRITE_LIST_FIELD(options, options, options); +} + +static void +_outDropOwnedStmt(OUT_TYPE(DropOwnedStmt, DropOwnedStmt) out, const DropOwnedStmt *node) +{ + WRITE_LIST_FIELD(roles, roles, roles); + WRITE_ENUM_FIELD(DropBehavior, behavior, behavior, behavior); +} + +static void +_outReassignOwnedStmt(OUT_TYPE(ReassignOwnedStmt, ReassignOwnedStmt) out, const ReassignOwnedStmt *node) +{ + WRITE_LIST_FIELD(roles, roles, roles); + WRITE_SPECIFIC_NODE_PTR_FIELD(RoleSpec, role_spec, newrole, newrole, newrole); +} + +static void +_outCompositeTypeStmt(OUT_TYPE(CompositeTypeStmt, CompositeTypeStmt) out, const CompositeTypeStmt *node) +{ + WRITE_SPECIFIC_NODE_PTR_FIELD(RangeVar, range_var, typevar, typevar, typevar); + WRITE_LIST_FIELD(coldeflist, coldeflist, coldeflist); +} + +static void +_outCreateEnumStmt(OUT_TYPE(CreateEnumStmt, CreateEnumStmt) out, const CreateEnumStmt *node) +{ + WRITE_LIST_FIELD(type_name, typeName, typeName); + WRITE_LIST_FIELD(vals, vals, vals); +} + +static void +_outCreateRangeStmt(OUT_TYPE(CreateRangeStmt, CreateRangeStmt) out, const CreateRangeStmt *node) +{ + WRITE_LIST_FIELD(type_name, typeName, typeName); + WRITE_LIST_FIELD(params, params, params); +} + +static void +_outAlterEnumStmt(OUT_TYPE(AlterEnumStmt, AlterEnumStmt) out, const AlterEnumStmt *node) +{ + WRITE_LIST_FIELD(type_name, typeName, typeName); + WRITE_STRING_FIELD(old_val, oldVal, oldVal); + WRITE_STRING_FIELD(new_val, newVal, newVal); + WRITE_STRING_FIELD(new_val_neighbor, newValNeighbor, newValNeighbor); + WRITE_BOOL_FIELD(new_val_is_after, newValIsAfter, newValIsAfter); + WRITE_BOOL_FIELD(skip_if_new_val_exists, skipIfNewValExists, skipIfNewValExists); +} + +static void +_outAlterTSDictionaryStmt(OUT_TYPE(AlterTSDictionaryStmt, AlterTSDictionaryStmt) out, const AlterTSDictionaryStmt *node) +{ + WRITE_LIST_FIELD(dictname, dictname, dictname); + WRITE_LIST_FIELD(options, options, options); +} + +static void +_outAlterTSConfigurationStmt(OUT_TYPE(AlterTSConfigurationStmt, AlterTSConfigurationStmt) out, const AlterTSConfigurationStmt *node) +{ + WRITE_ENUM_FIELD(AlterTSConfigType, kind, kind, kind); + WRITE_LIST_FIELD(cfgname, cfgname, cfgname); + WRITE_LIST_FIELD(tokentype, tokentype, tokentype); + WRITE_LIST_FIELD(dicts, dicts, dicts); + WRITE_BOOL_FIELD(override, override, override); + WRITE_BOOL_FIELD(replace, replace, replace); + WRITE_BOOL_FIELD(missing_ok, missing_ok, missing_ok); +} + +static void +_outCreateFdwStmt(OUT_TYPE(CreateFdwStmt, CreateFdwStmt) out, const CreateFdwStmt *node) +{ + WRITE_STRING_FIELD(fdwname, fdwname, fdwname); + WRITE_LIST_FIELD(func_options, func_options, func_options); + WRITE_LIST_FIELD(options, options, options); +} + +static void +_outAlterFdwStmt(OUT_TYPE(AlterFdwStmt, AlterFdwStmt) out, const AlterFdwStmt *node) +{ + WRITE_STRING_FIELD(fdwname, fdwname, fdwname); + WRITE_LIST_FIELD(func_options, func_options, func_options); + WRITE_LIST_FIELD(options, options, options); +} + +static void +_outCreateForeignServerStmt(OUT_TYPE(CreateForeignServerStmt, CreateForeignServerStmt) out, const CreateForeignServerStmt *node) +{ + WRITE_STRING_FIELD(servername, servername, servername); + WRITE_STRING_FIELD(servertype, servertype, servertype); + WRITE_STRING_FIELD(version, version, version); + WRITE_STRING_FIELD(fdwname, fdwname, fdwname); + WRITE_BOOL_FIELD(if_not_exists, if_not_exists, if_not_exists); + WRITE_LIST_FIELD(options, options, options); +} + +static void +_outAlterForeignServerStmt(OUT_TYPE(AlterForeignServerStmt, AlterForeignServerStmt) out, const AlterForeignServerStmt *node) +{ + WRITE_STRING_FIELD(servername, servername, servername); + WRITE_STRING_FIELD(version, version, version); + WRITE_LIST_FIELD(options, options, options); + WRITE_BOOL_FIELD(has_version, has_version, has_version); +} + +static void +_outCreateUserMappingStmt(OUT_TYPE(CreateUserMappingStmt, CreateUserMappingStmt) out, const CreateUserMappingStmt *node) +{ + WRITE_SPECIFIC_NODE_PTR_FIELD(RoleSpec, role_spec, user, user, user); + WRITE_STRING_FIELD(servername, servername, servername); + WRITE_BOOL_FIELD(if_not_exists, if_not_exists, if_not_exists); + WRITE_LIST_FIELD(options, options, options); +} + +static void +_outAlterUserMappingStmt(OUT_TYPE(AlterUserMappingStmt, AlterUserMappingStmt) out, const AlterUserMappingStmt *node) +{ + WRITE_SPECIFIC_NODE_PTR_FIELD(RoleSpec, role_spec, user, user, user); + WRITE_STRING_FIELD(servername, servername, servername); + WRITE_LIST_FIELD(options, options, options); +} + +static void +_outDropUserMappingStmt(OUT_TYPE(DropUserMappingStmt, DropUserMappingStmt) out, const DropUserMappingStmt *node) +{ + WRITE_SPECIFIC_NODE_PTR_FIELD(RoleSpec, role_spec, user, user, user); + WRITE_STRING_FIELD(servername, servername, servername); + WRITE_BOOL_FIELD(missing_ok, missing_ok, missing_ok); +} + +static void +_outAlterTableSpaceOptionsStmt(OUT_TYPE(AlterTableSpaceOptionsStmt, AlterTableSpaceOptionsStmt) out, const AlterTableSpaceOptionsStmt *node) +{ + WRITE_STRING_FIELD(tablespacename, tablespacename, tablespacename); + WRITE_LIST_FIELD(options, options, options); + WRITE_BOOL_FIELD(is_reset, isReset, isReset); +} + +static void +_outAlterTableMoveAllStmt(OUT_TYPE(AlterTableMoveAllStmt, AlterTableMoveAllStmt) out, const AlterTableMoveAllStmt *node) +{ + WRITE_STRING_FIELD(orig_tablespacename, orig_tablespacename, orig_tablespacename); + WRITE_ENUM_FIELD(ObjectType, objtype, objtype, objtype); + WRITE_LIST_FIELD(roles, roles, roles); + WRITE_STRING_FIELD(new_tablespacename, new_tablespacename, new_tablespacename); + WRITE_BOOL_FIELD(nowait, nowait, nowait); +} + +static void +_outSecLabelStmt(OUT_TYPE(SecLabelStmt, SecLabelStmt) out, const SecLabelStmt *node) +{ + WRITE_ENUM_FIELD(ObjectType, objtype, objtype, objtype); + WRITE_NODE_PTR_FIELD(object, object, object); + WRITE_STRING_FIELD(provider, provider, provider); + WRITE_STRING_FIELD(label, label, label); +} + +static void +_outCreateForeignTableStmt(OUT_TYPE(CreateForeignTableStmt, CreateForeignTableStmt) out, const CreateForeignTableStmt *node) +{ + WRITE_SPECIFIC_NODE_FIELD(CreateStmt, create_stmt, base_stmt, base, base); + WRITE_STRING_FIELD(servername, servername, servername); + WRITE_LIST_FIELD(options, options, options); +} + +static void +_outImportForeignSchemaStmt(OUT_TYPE(ImportForeignSchemaStmt, ImportForeignSchemaStmt) out, const ImportForeignSchemaStmt *node) +{ + WRITE_STRING_FIELD(server_name, server_name, server_name); + WRITE_STRING_FIELD(remote_schema, remote_schema, remote_schema); + WRITE_STRING_FIELD(local_schema, local_schema, local_schema); + WRITE_ENUM_FIELD(ImportForeignSchemaType, list_type, list_type, list_type); + WRITE_LIST_FIELD(table_list, table_list, table_list); + WRITE_LIST_FIELD(options, options, options); +} + +static void +_outCreateExtensionStmt(OUT_TYPE(CreateExtensionStmt, CreateExtensionStmt) out, const CreateExtensionStmt *node) +{ + WRITE_STRING_FIELD(extname, extname, extname); + WRITE_BOOL_FIELD(if_not_exists, if_not_exists, if_not_exists); + WRITE_LIST_FIELD(options, options, options); +} + +static void +_outAlterExtensionStmt(OUT_TYPE(AlterExtensionStmt, AlterExtensionStmt) out, const AlterExtensionStmt *node) +{ + WRITE_STRING_FIELD(extname, extname, extname); + WRITE_LIST_FIELD(options, options, options); +} + +static void +_outAlterExtensionContentsStmt(OUT_TYPE(AlterExtensionContentsStmt, AlterExtensionContentsStmt) out, const AlterExtensionContentsStmt *node) +{ + WRITE_STRING_FIELD(extname, extname, extname); + WRITE_INT_FIELD(action, action, action); + WRITE_ENUM_FIELD(ObjectType, objtype, objtype, objtype); + WRITE_NODE_PTR_FIELD(object, object, object); +} + +static void +_outCreateEventTrigStmt(OUT_TYPE(CreateEventTrigStmt, CreateEventTrigStmt) out, const CreateEventTrigStmt *node) +{ + WRITE_STRING_FIELD(trigname, trigname, trigname); + WRITE_STRING_FIELD(eventname, eventname, eventname); + WRITE_LIST_FIELD(whenclause, whenclause, whenclause); + WRITE_LIST_FIELD(funcname, funcname, funcname); +} + +static void +_outAlterEventTrigStmt(OUT_TYPE(AlterEventTrigStmt, AlterEventTrigStmt) out, const AlterEventTrigStmt *node) +{ + WRITE_STRING_FIELD(trigname, trigname, trigname); + WRITE_CHAR_FIELD(tgenabled, tgenabled, tgenabled); +} + +static void +_outRefreshMatViewStmt(OUT_TYPE(RefreshMatViewStmt, RefreshMatViewStmt) out, const RefreshMatViewStmt *node) +{ + WRITE_BOOL_FIELD(concurrent, concurrent, concurrent); + WRITE_BOOL_FIELD(skip_data, skipData, skipData); + WRITE_SPECIFIC_NODE_PTR_FIELD(RangeVar, range_var, relation, relation, relation); +} + +static void +_outReplicaIdentityStmt(OUT_TYPE(ReplicaIdentityStmt, ReplicaIdentityStmt) out, const ReplicaIdentityStmt *node) +{ + WRITE_CHAR_FIELD(identity_type, identity_type, identity_type); + WRITE_STRING_FIELD(name, name, name); +} + +static void +_outAlterSystemStmt(OUT_TYPE(AlterSystemStmt, AlterSystemStmt) out, const AlterSystemStmt *node) +{ + WRITE_SPECIFIC_NODE_PTR_FIELD(VariableSetStmt, variable_set_stmt, setstmt, setstmt, setstmt); +} + +static void +_outCreatePolicyStmt(OUT_TYPE(CreatePolicyStmt, CreatePolicyStmt) out, const CreatePolicyStmt *node) +{ + WRITE_STRING_FIELD(policy_name, policy_name, policy_name); + WRITE_SPECIFIC_NODE_PTR_FIELD(RangeVar, range_var, table, table, table); + WRITE_STRING_FIELD(cmd_name, cmd_name, cmd_name); + WRITE_BOOL_FIELD(permissive, permissive, permissive); + WRITE_LIST_FIELD(roles, roles, roles); + WRITE_NODE_PTR_FIELD(qual, qual, qual); + WRITE_NODE_PTR_FIELD(with_check, with_check, with_check); +} + +static void +_outAlterPolicyStmt(OUT_TYPE(AlterPolicyStmt, AlterPolicyStmt) out, const AlterPolicyStmt *node) +{ + WRITE_STRING_FIELD(policy_name, policy_name, policy_name); + WRITE_SPECIFIC_NODE_PTR_FIELD(RangeVar, range_var, table, table, table); + WRITE_LIST_FIELD(roles, roles, roles); + WRITE_NODE_PTR_FIELD(qual, qual, qual); + WRITE_NODE_PTR_FIELD(with_check, with_check, with_check); +} + +static void +_outCreateTransformStmt(OUT_TYPE(CreateTransformStmt, CreateTransformStmt) out, const CreateTransformStmt *node) +{ + WRITE_BOOL_FIELD(replace, replace, replace); + WRITE_SPECIFIC_NODE_PTR_FIELD(TypeName, type_name, type_name, type_name, type_name); + WRITE_STRING_FIELD(lang, lang, lang); + WRITE_SPECIFIC_NODE_PTR_FIELD(ObjectWithArgs, object_with_args, fromsql, fromsql, fromsql); + WRITE_SPECIFIC_NODE_PTR_FIELD(ObjectWithArgs, object_with_args, tosql, tosql, tosql); +} + +static void +_outCreateAmStmt(OUT_TYPE(CreateAmStmt, CreateAmStmt) out, const CreateAmStmt *node) +{ + WRITE_STRING_FIELD(amname, amname, amname); + WRITE_LIST_FIELD(handler_name, handler_name, handler_name); + WRITE_CHAR_FIELD(amtype, amtype, amtype); +} + +static void +_outCreatePublicationStmt(OUT_TYPE(CreatePublicationStmt, CreatePublicationStmt) out, const CreatePublicationStmt *node) +{ + WRITE_STRING_FIELD(pubname, pubname, pubname); + WRITE_LIST_FIELD(options, options, options); + WRITE_LIST_FIELD(tables, tables, tables); + WRITE_BOOL_FIELD(for_all_tables, for_all_tables, for_all_tables); +} + +static void +_outAlterPublicationStmt(OUT_TYPE(AlterPublicationStmt, AlterPublicationStmt) out, const AlterPublicationStmt *node) +{ + WRITE_STRING_FIELD(pubname, pubname, pubname); + WRITE_LIST_FIELD(options, options, options); + WRITE_LIST_FIELD(tables, tables, tables); + WRITE_BOOL_FIELD(for_all_tables, for_all_tables, for_all_tables); + WRITE_ENUM_FIELD(DefElemAction, table_action, tableAction, tableAction); +} + +static void +_outCreateSubscriptionStmt(OUT_TYPE(CreateSubscriptionStmt, CreateSubscriptionStmt) out, const CreateSubscriptionStmt *node) +{ + WRITE_STRING_FIELD(subname, subname, subname); + WRITE_STRING_FIELD(conninfo, conninfo, conninfo); + WRITE_LIST_FIELD(publication, publication, publication); + WRITE_LIST_FIELD(options, options, options); +} + +static void +_outAlterSubscriptionStmt(OUT_TYPE(AlterSubscriptionStmt, AlterSubscriptionStmt) out, const AlterSubscriptionStmt *node) +{ + WRITE_ENUM_FIELD(AlterSubscriptionType, kind, kind, kind); + WRITE_STRING_FIELD(subname, subname, subname); + WRITE_STRING_FIELD(conninfo, conninfo, conninfo); + WRITE_LIST_FIELD(publication, publication, publication); + WRITE_LIST_FIELD(options, options, options); +} + +static void +_outDropSubscriptionStmt(OUT_TYPE(DropSubscriptionStmt, DropSubscriptionStmt) out, const DropSubscriptionStmt *node) +{ + WRITE_STRING_FIELD(subname, subname, subname); + WRITE_BOOL_FIELD(missing_ok, missing_ok, missing_ok); + WRITE_ENUM_FIELD(DropBehavior, behavior, behavior, behavior); +} + +static void +_outCreateStatsStmt(OUT_TYPE(CreateStatsStmt, CreateStatsStmt) out, const CreateStatsStmt *node) +{ + WRITE_LIST_FIELD(defnames, defnames, defnames); + WRITE_LIST_FIELD(stat_types, stat_types, stat_types); + WRITE_LIST_FIELD(exprs, exprs, exprs); + WRITE_LIST_FIELD(relations, relations, relations); + WRITE_STRING_FIELD(stxcomment, stxcomment, stxcomment); + WRITE_BOOL_FIELD(if_not_exists, if_not_exists, if_not_exists); +} + +static void +_outAlterCollationStmt(OUT_TYPE(AlterCollationStmt, AlterCollationStmt) out, const AlterCollationStmt *node) +{ + WRITE_LIST_FIELD(collname, collname, collname); +} + +static void +_outCallStmt(OUT_TYPE(CallStmt, CallStmt) out, const CallStmt *node) +{ + WRITE_SPECIFIC_NODE_PTR_FIELD(FuncCall, func_call, funccall, funccall, funccall); + WRITE_SPECIFIC_NODE_PTR_FIELD(FuncExpr, func_expr, funcexpr, funcexpr, funcexpr); +} + +static void +_outAlterStatsStmt(OUT_TYPE(AlterStatsStmt, AlterStatsStmt) out, const AlterStatsStmt *node) +{ + WRITE_LIST_FIELD(defnames, defnames, defnames); + WRITE_INT_FIELD(stxstattarget, stxstattarget, stxstattarget); + WRITE_BOOL_FIELD(missing_ok, missing_ok, missing_ok); +} + +static void +_outAExpr(OUT_TYPE(A_Expr, AExpr) out, const A_Expr *node) +{ + WRITE_ENUM_FIELD(A_Expr_Kind, kind, kind, kind); + WRITE_LIST_FIELD(name, name, name); + WRITE_NODE_PTR_FIELD(lexpr, lexpr, lexpr); + WRITE_NODE_PTR_FIELD(rexpr, rexpr, rexpr); + WRITE_INT_FIELD(location, location, location); +} + +static void +_outColumnRef(OUT_TYPE(ColumnRef, ColumnRef) out, const ColumnRef *node) +{ + WRITE_LIST_FIELD(fields, fields, fields); + WRITE_INT_FIELD(location, location, location); +} + +static void +_outParamRef(OUT_TYPE(ParamRef, ParamRef) out, const ParamRef *node) +{ + WRITE_INT_FIELD(number, number, number); + WRITE_INT_FIELD(location, location, location); +} + +static void +_outAConst(OUT_TYPE(A_Const, AConst) out, const A_Const *node) +{ + WRITE_NODE_FIELD(val, val, val); + WRITE_INT_FIELD(location, location, location); +} + +static void +_outFuncCall(OUT_TYPE(FuncCall, FuncCall) out, const FuncCall *node) +{ + WRITE_LIST_FIELD(funcname, funcname, funcname); + WRITE_LIST_FIELD(args, args, args); + WRITE_LIST_FIELD(agg_order, agg_order, agg_order); + WRITE_NODE_PTR_FIELD(agg_filter, agg_filter, agg_filter); + WRITE_BOOL_FIELD(agg_within_group, agg_within_group, agg_within_group); + WRITE_BOOL_FIELD(agg_star, agg_star, agg_star); + WRITE_BOOL_FIELD(agg_distinct, agg_distinct, agg_distinct); + WRITE_BOOL_FIELD(func_variadic, func_variadic, func_variadic); + WRITE_SPECIFIC_NODE_PTR_FIELD(WindowDef, window_def, over, over, over); + WRITE_INT_FIELD(location, location, location); +} + +static void +_outAStar(OUT_TYPE(A_Star, AStar) out, const A_Star *node) +{ +} + +static void +_outAIndices(OUT_TYPE(A_Indices, AIndices) out, const A_Indices *node) +{ + WRITE_BOOL_FIELD(is_slice, is_slice, is_slice); + WRITE_NODE_PTR_FIELD(lidx, lidx, lidx); + WRITE_NODE_PTR_FIELD(uidx, uidx, uidx); +} + +static void +_outAIndirection(OUT_TYPE(A_Indirection, AIndirection) out, const A_Indirection *node) +{ + WRITE_NODE_PTR_FIELD(arg, arg, arg); + WRITE_LIST_FIELD(indirection, indirection, indirection); +} + +static void +_outAArrayExpr(OUT_TYPE(A_ArrayExpr, AArrayExpr) out, const A_ArrayExpr *node) +{ + WRITE_LIST_FIELD(elements, elements, elements); + WRITE_INT_FIELD(location, location, location); +} + +static void +_outResTarget(OUT_TYPE(ResTarget, ResTarget) out, const ResTarget *node) +{ + WRITE_STRING_FIELD(name, name, name); + WRITE_LIST_FIELD(indirection, indirection, indirection); + WRITE_NODE_PTR_FIELD(val, val, val); + WRITE_INT_FIELD(location, location, location); +} + +static void +_outMultiAssignRef(OUT_TYPE(MultiAssignRef, MultiAssignRef) out, const MultiAssignRef *node) +{ + WRITE_NODE_PTR_FIELD(source, source, source); + WRITE_INT_FIELD(colno, colno, colno); + WRITE_INT_FIELD(ncolumns, ncolumns, ncolumns); +} + +static void +_outTypeCast(OUT_TYPE(TypeCast, TypeCast) out, const TypeCast *node) +{ + WRITE_NODE_PTR_FIELD(arg, arg, arg); + WRITE_SPECIFIC_NODE_PTR_FIELD(TypeName, type_name, type_name, typeName, typeName); + WRITE_INT_FIELD(location, location, location); +} + +static void +_outCollateClause(OUT_TYPE(CollateClause, CollateClause) out, const CollateClause *node) +{ + WRITE_NODE_PTR_FIELD(arg, arg, arg); + WRITE_LIST_FIELD(collname, collname, collname); + WRITE_INT_FIELD(location, location, location); +} + +static void +_outSortBy(OUT_TYPE(SortBy, SortBy) out, const SortBy *node) +{ + WRITE_NODE_PTR_FIELD(node, node, node); + WRITE_ENUM_FIELD(SortByDir, sortby_dir, sortby_dir, sortby_dir); + WRITE_ENUM_FIELD(SortByNulls, sortby_nulls, sortby_nulls, sortby_nulls); + WRITE_LIST_FIELD(use_op, useOp, useOp); + WRITE_INT_FIELD(location, location, location); +} + +static void +_outWindowDef(OUT_TYPE(WindowDef, WindowDef) out, const WindowDef *node) +{ + WRITE_STRING_FIELD(name, name, name); + WRITE_STRING_FIELD(refname, refname, refname); + WRITE_LIST_FIELD(partition_clause, partitionClause, partitionClause); + WRITE_LIST_FIELD(order_clause, orderClause, orderClause); + WRITE_INT_FIELD(frame_options, frameOptions, frameOptions); + WRITE_NODE_PTR_FIELD(start_offset, startOffset, startOffset); + WRITE_NODE_PTR_FIELD(end_offset, endOffset, endOffset); + WRITE_INT_FIELD(location, location, location); +} + +static void +_outRangeSubselect(OUT_TYPE(RangeSubselect, RangeSubselect) out, const RangeSubselect *node) +{ + WRITE_BOOL_FIELD(lateral, lateral, lateral); + WRITE_NODE_PTR_FIELD(subquery, subquery, subquery); + WRITE_SPECIFIC_NODE_PTR_FIELD(Alias, alias, alias, alias, alias); +} + +static void +_outRangeFunction(OUT_TYPE(RangeFunction, RangeFunction) out, const RangeFunction *node) +{ + WRITE_BOOL_FIELD(lateral, lateral, lateral); + WRITE_BOOL_FIELD(ordinality, ordinality, ordinality); + WRITE_BOOL_FIELD(is_rowsfrom, is_rowsfrom, is_rowsfrom); + WRITE_LIST_FIELD(functions, functions, functions); + WRITE_SPECIFIC_NODE_PTR_FIELD(Alias, alias, alias, alias, alias); + WRITE_LIST_FIELD(coldeflist, coldeflist, coldeflist); +} + +static void +_outRangeTableSample(OUT_TYPE(RangeTableSample, RangeTableSample) out, const RangeTableSample *node) +{ + WRITE_NODE_PTR_FIELD(relation, relation, relation); + WRITE_LIST_FIELD(method, method, method); + WRITE_LIST_FIELD(args, args, args); + WRITE_NODE_PTR_FIELD(repeatable, repeatable, repeatable); + WRITE_INT_FIELD(location, location, location); +} + +static void +_outRangeTableFunc(OUT_TYPE(RangeTableFunc, RangeTableFunc) out, const RangeTableFunc *node) +{ + WRITE_BOOL_FIELD(lateral, lateral, lateral); + WRITE_NODE_PTR_FIELD(docexpr, docexpr, docexpr); + WRITE_NODE_PTR_FIELD(rowexpr, rowexpr, rowexpr); + WRITE_LIST_FIELD(namespaces, namespaces, namespaces); + WRITE_LIST_FIELD(columns, columns, columns); + WRITE_SPECIFIC_NODE_PTR_FIELD(Alias, alias, alias, alias, alias); + WRITE_INT_FIELD(location, location, location); +} + +static void +_outRangeTableFuncCol(OUT_TYPE(RangeTableFuncCol, RangeTableFuncCol) out, const RangeTableFuncCol *node) +{ + WRITE_STRING_FIELD(colname, colname, colname); + WRITE_SPECIFIC_NODE_PTR_FIELD(TypeName, type_name, type_name, typeName, typeName); + WRITE_BOOL_FIELD(for_ordinality, for_ordinality, for_ordinality); + WRITE_BOOL_FIELD(is_not_null, is_not_null, is_not_null); + WRITE_NODE_PTR_FIELD(colexpr, colexpr, colexpr); + WRITE_NODE_PTR_FIELD(coldefexpr, coldefexpr, coldefexpr); + WRITE_INT_FIELD(location, location, location); +} + +static void +_outTypeName(OUT_TYPE(TypeName, TypeName) out, const TypeName *node) +{ + WRITE_LIST_FIELD(names, names, names); + WRITE_UINT_FIELD(type_oid, typeOid, typeOid); + WRITE_BOOL_FIELD(setof, setof, setof); + WRITE_BOOL_FIELD(pct_type, pct_type, pct_type); + WRITE_LIST_FIELD(typmods, typmods, typmods); + WRITE_INT_FIELD(typemod, typemod, typemod); + WRITE_LIST_FIELD(array_bounds, arrayBounds, arrayBounds); + WRITE_INT_FIELD(location, location, location); +} + +static void +_outColumnDef(OUT_TYPE(ColumnDef, ColumnDef) out, const ColumnDef *node) +{ + WRITE_STRING_FIELD(colname, colname, colname); + WRITE_SPECIFIC_NODE_PTR_FIELD(TypeName, type_name, type_name, typeName, typeName); + WRITE_INT_FIELD(inhcount, inhcount, inhcount); + WRITE_BOOL_FIELD(is_local, is_local, is_local); + WRITE_BOOL_FIELD(is_not_null, is_not_null, is_not_null); + WRITE_BOOL_FIELD(is_from_type, is_from_type, is_from_type); + WRITE_CHAR_FIELD(storage, storage, storage); + WRITE_NODE_PTR_FIELD(raw_default, raw_default, raw_default); + WRITE_NODE_PTR_FIELD(cooked_default, cooked_default, cooked_default); + WRITE_CHAR_FIELD(identity, identity, identity); + WRITE_SPECIFIC_NODE_PTR_FIELD(RangeVar, range_var, identity_sequence, identitySequence, identitySequence); + WRITE_CHAR_FIELD(generated, generated, generated); + WRITE_SPECIFIC_NODE_PTR_FIELD(CollateClause, collate_clause, coll_clause, collClause, collClause); + WRITE_UINT_FIELD(coll_oid, collOid, collOid); + WRITE_LIST_FIELD(constraints, constraints, constraints); + WRITE_LIST_FIELD(fdwoptions, fdwoptions, fdwoptions); + WRITE_INT_FIELD(location, location, location); +} + +static void +_outIndexElem(OUT_TYPE(IndexElem, IndexElem) out, const IndexElem *node) +{ + WRITE_STRING_FIELD(name, name, name); + WRITE_NODE_PTR_FIELD(expr, expr, expr); + WRITE_STRING_FIELD(indexcolname, indexcolname, indexcolname); + WRITE_LIST_FIELD(collation, collation, collation); + WRITE_LIST_FIELD(opclass, opclass, opclass); + WRITE_LIST_FIELD(opclassopts, opclassopts, opclassopts); + WRITE_ENUM_FIELD(SortByDir, ordering, ordering, ordering); + WRITE_ENUM_FIELD(SortByNulls, nulls_ordering, nulls_ordering, nulls_ordering); +} + +static void +_outConstraint(OUT_TYPE(Constraint, Constraint) out, const Constraint *node) +{ + WRITE_ENUM_FIELD(ConstrType, contype, contype, contype); + WRITE_STRING_FIELD(conname, conname, conname); + WRITE_BOOL_FIELD(deferrable, deferrable, deferrable); + WRITE_BOOL_FIELD(initdeferred, initdeferred, initdeferred); + WRITE_INT_FIELD(location, location, location); + WRITE_BOOL_FIELD(is_no_inherit, is_no_inherit, is_no_inherit); + WRITE_NODE_PTR_FIELD(raw_expr, raw_expr, raw_expr); + WRITE_STRING_FIELD(cooked_expr, cooked_expr, cooked_expr); + WRITE_CHAR_FIELD(generated_when, generated_when, generated_when); + WRITE_LIST_FIELD(keys, keys, keys); + WRITE_LIST_FIELD(including, including, including); + WRITE_LIST_FIELD(exclusions, exclusions, exclusions); + WRITE_LIST_FIELD(options, options, options); + WRITE_STRING_FIELD(indexname, indexname, indexname); + WRITE_STRING_FIELD(indexspace, indexspace, indexspace); + WRITE_BOOL_FIELD(reset_default_tblspc, reset_default_tblspc, reset_default_tblspc); + WRITE_STRING_FIELD(access_method, access_method, access_method); + WRITE_NODE_PTR_FIELD(where_clause, where_clause, where_clause); + WRITE_SPECIFIC_NODE_PTR_FIELD(RangeVar, range_var, pktable, pktable, pktable); + WRITE_LIST_FIELD(fk_attrs, fk_attrs, fk_attrs); + WRITE_LIST_FIELD(pk_attrs, pk_attrs, pk_attrs); + WRITE_CHAR_FIELD(fk_matchtype, fk_matchtype, fk_matchtype); + WRITE_CHAR_FIELD(fk_upd_action, fk_upd_action, fk_upd_action); + WRITE_CHAR_FIELD(fk_del_action, fk_del_action, fk_del_action); + WRITE_LIST_FIELD(old_conpfeqop, old_conpfeqop, old_conpfeqop); + WRITE_UINT_FIELD(old_pktable_oid, old_pktable_oid, old_pktable_oid); + WRITE_BOOL_FIELD(skip_validation, skip_validation, skip_validation); + WRITE_BOOL_FIELD(initially_valid, initially_valid, initially_valid); +} + +static void +_outDefElem(OUT_TYPE(DefElem, DefElem) out, const DefElem *node) +{ + WRITE_STRING_FIELD(defnamespace, defnamespace, defnamespace); + WRITE_STRING_FIELD(defname, defname, defname); + WRITE_NODE_PTR_FIELD(arg, arg, arg); + WRITE_ENUM_FIELD(DefElemAction, defaction, defaction, defaction); + WRITE_INT_FIELD(location, location, location); +} + +static void +_outRangeTblEntry(OUT_TYPE(RangeTblEntry, RangeTblEntry) out, const RangeTblEntry *node) +{ + WRITE_ENUM_FIELD(RTEKind, rtekind, rtekind, rtekind); + WRITE_UINT_FIELD(relid, relid, relid); + WRITE_CHAR_FIELD(relkind, relkind, relkind); + WRITE_INT_FIELD(rellockmode, rellockmode, rellockmode); + WRITE_SPECIFIC_NODE_PTR_FIELD(TableSampleClause, table_sample_clause, tablesample, tablesample, tablesample); + WRITE_SPECIFIC_NODE_PTR_FIELD(Query, query, subquery, subquery, subquery); + WRITE_BOOL_FIELD(security_barrier, security_barrier, security_barrier); + WRITE_ENUM_FIELD(JoinType, jointype, jointype, jointype); + WRITE_INT_FIELD(joinmergedcols, joinmergedcols, joinmergedcols); + WRITE_LIST_FIELD(joinaliasvars, joinaliasvars, joinaliasvars); + WRITE_LIST_FIELD(joinleftcols, joinleftcols, joinleftcols); + WRITE_LIST_FIELD(joinrightcols, joinrightcols, joinrightcols); + WRITE_LIST_FIELD(functions, functions, functions); + WRITE_BOOL_FIELD(funcordinality, funcordinality, funcordinality); + WRITE_SPECIFIC_NODE_PTR_FIELD(TableFunc, table_func, tablefunc, tablefunc, tablefunc); + WRITE_LIST_FIELD(values_lists, values_lists, values_lists); + WRITE_STRING_FIELD(ctename, ctename, ctename); + WRITE_UINT_FIELD(ctelevelsup, ctelevelsup, ctelevelsup); + WRITE_BOOL_FIELD(self_reference, self_reference, self_reference); + WRITE_LIST_FIELD(coltypes, coltypes, coltypes); + WRITE_LIST_FIELD(coltypmods, coltypmods, coltypmods); + WRITE_LIST_FIELD(colcollations, colcollations, colcollations); + WRITE_STRING_FIELD(enrname, enrname, enrname); + WRITE_FLOAT_FIELD(enrtuples, enrtuples, enrtuples); + WRITE_SPECIFIC_NODE_PTR_FIELD(Alias, alias, alias, alias, alias); + WRITE_SPECIFIC_NODE_PTR_FIELD(Alias, alias, eref, eref, eref); + WRITE_BOOL_FIELD(lateral, lateral, lateral); + WRITE_BOOL_FIELD(inh, inh, inh); + WRITE_BOOL_FIELD(in_from_cl, inFromCl, inFromCl); + WRITE_UINT_FIELD(required_perms, requiredPerms, requiredPerms); + WRITE_UINT_FIELD(check_as_user, checkAsUser, checkAsUser); + WRITE_BITMAPSET_FIELD(selected_cols, selectedCols, selectedCols); + WRITE_BITMAPSET_FIELD(inserted_cols, insertedCols, insertedCols); + WRITE_BITMAPSET_FIELD(updated_cols, updatedCols, updatedCols); + WRITE_BITMAPSET_FIELD(extra_updated_cols, extraUpdatedCols, extraUpdatedCols); + WRITE_LIST_FIELD(security_quals, securityQuals, securityQuals); +} + +static void +_outRangeTblFunction(OUT_TYPE(RangeTblFunction, RangeTblFunction) out, const RangeTblFunction *node) +{ + WRITE_NODE_PTR_FIELD(funcexpr, funcexpr, funcexpr); + WRITE_INT_FIELD(funccolcount, funccolcount, funccolcount); + WRITE_LIST_FIELD(funccolnames, funccolnames, funccolnames); + WRITE_LIST_FIELD(funccoltypes, funccoltypes, funccoltypes); + WRITE_LIST_FIELD(funccoltypmods, funccoltypmods, funccoltypmods); + WRITE_LIST_FIELD(funccolcollations, funccolcollations, funccolcollations); + WRITE_BITMAPSET_FIELD(funcparams, funcparams, funcparams); +} + +static void +_outTableSampleClause(OUT_TYPE(TableSampleClause, TableSampleClause) out, const TableSampleClause *node) +{ + WRITE_UINT_FIELD(tsmhandler, tsmhandler, tsmhandler); + WRITE_LIST_FIELD(args, args, args); + WRITE_NODE_PTR_FIELD(repeatable, repeatable, repeatable); +} + +static void +_outWithCheckOption(OUT_TYPE(WithCheckOption, WithCheckOption) out, const WithCheckOption *node) +{ + WRITE_ENUM_FIELD(WCOKind, kind, kind, kind); + WRITE_STRING_FIELD(relname, relname, relname); + WRITE_STRING_FIELD(polname, polname, polname); + WRITE_NODE_PTR_FIELD(qual, qual, qual); + WRITE_BOOL_FIELD(cascaded, cascaded, cascaded); +} + +static void +_outSortGroupClause(OUT_TYPE(SortGroupClause, SortGroupClause) out, const SortGroupClause *node) +{ + WRITE_UINT_FIELD(tle_sort_group_ref, tleSortGroupRef, tleSortGroupRef); + WRITE_UINT_FIELD(eqop, eqop, eqop); + WRITE_UINT_FIELD(sortop, sortop, sortop); + WRITE_BOOL_FIELD(nulls_first, nulls_first, nulls_first); + WRITE_BOOL_FIELD(hashable, hashable, hashable); +} + +static void +_outGroupingSet(OUT_TYPE(GroupingSet, GroupingSet) out, const GroupingSet *node) +{ + WRITE_ENUM_FIELD(GroupingSetKind, kind, kind, kind); + WRITE_LIST_FIELD(content, content, content); + WRITE_INT_FIELD(location, location, location); +} + +static void +_outWindowClause(OUT_TYPE(WindowClause, WindowClause) out, const WindowClause *node) +{ + WRITE_STRING_FIELD(name, name, name); + WRITE_STRING_FIELD(refname, refname, refname); + WRITE_LIST_FIELD(partition_clause, partitionClause, partitionClause); + WRITE_LIST_FIELD(order_clause, orderClause, orderClause); + WRITE_INT_FIELD(frame_options, frameOptions, frameOptions); + WRITE_NODE_PTR_FIELD(start_offset, startOffset, startOffset); + WRITE_NODE_PTR_FIELD(end_offset, endOffset, endOffset); + WRITE_UINT_FIELD(start_in_range_func, startInRangeFunc, startInRangeFunc); + WRITE_UINT_FIELD(end_in_range_func, endInRangeFunc, endInRangeFunc); + WRITE_UINT_FIELD(in_range_coll, inRangeColl, inRangeColl); + WRITE_BOOL_FIELD(in_range_asc, inRangeAsc, inRangeAsc); + WRITE_BOOL_FIELD(in_range_nulls_first, inRangeNullsFirst, inRangeNullsFirst); + WRITE_UINT_FIELD(winref, winref, winref); + WRITE_BOOL_FIELD(copied_order, copiedOrder, copiedOrder); +} + +static void +_outObjectWithArgs(OUT_TYPE(ObjectWithArgs, ObjectWithArgs) out, const ObjectWithArgs *node) +{ + WRITE_LIST_FIELD(objname, objname, objname); + WRITE_LIST_FIELD(objargs, objargs, objargs); + WRITE_BOOL_FIELD(args_unspecified, args_unspecified, args_unspecified); +} + +static void +_outAccessPriv(OUT_TYPE(AccessPriv, AccessPriv) out, const AccessPriv *node) +{ + WRITE_STRING_FIELD(priv_name, priv_name, priv_name); + WRITE_LIST_FIELD(cols, cols, cols); +} + +static void +_outCreateOpClassItem(OUT_TYPE(CreateOpClassItem, CreateOpClassItem) out, const CreateOpClassItem *node) +{ + WRITE_INT_FIELD(itemtype, itemtype, itemtype); + WRITE_SPECIFIC_NODE_PTR_FIELD(ObjectWithArgs, object_with_args, name, name, name); + WRITE_INT_FIELD(number, number, number); + WRITE_LIST_FIELD(order_family, order_family, order_family); + WRITE_LIST_FIELD(class_args, class_args, class_args); + WRITE_SPECIFIC_NODE_PTR_FIELD(TypeName, type_name, storedtype, storedtype, storedtype); +} + +static void +_outTableLikeClause(OUT_TYPE(TableLikeClause, TableLikeClause) out, const TableLikeClause *node) +{ + WRITE_SPECIFIC_NODE_PTR_FIELD(RangeVar, range_var, relation, relation, relation); + WRITE_UINT_FIELD(options, options, options); +} + +static void +_outFunctionParameter(OUT_TYPE(FunctionParameter, FunctionParameter) out, const FunctionParameter *node) +{ + WRITE_STRING_FIELD(name, name, name); + WRITE_SPECIFIC_NODE_PTR_FIELD(TypeName, type_name, arg_type, argType, argType); + WRITE_ENUM_FIELD(FunctionParameterMode, mode, mode, mode); + WRITE_NODE_PTR_FIELD(defexpr, defexpr, defexpr); +} + +static void +_outLockingClause(OUT_TYPE(LockingClause, LockingClause) out, const LockingClause *node) +{ + WRITE_LIST_FIELD(locked_rels, lockedRels, lockedRels); + WRITE_ENUM_FIELD(LockClauseStrength, strength, strength, strength); + WRITE_ENUM_FIELD(LockWaitPolicy, wait_policy, waitPolicy, waitPolicy); +} + +static void +_outRowMarkClause(OUT_TYPE(RowMarkClause, RowMarkClause) out, const RowMarkClause *node) +{ + WRITE_UINT_FIELD(rti, rti, rti); + WRITE_ENUM_FIELD(LockClauseStrength, strength, strength, strength); + WRITE_ENUM_FIELD(LockWaitPolicy, wait_policy, waitPolicy, waitPolicy); + WRITE_BOOL_FIELD(pushed_down, pushedDown, pushedDown); +} + +static void +_outXmlSerialize(OUT_TYPE(XmlSerialize, XmlSerialize) out, const XmlSerialize *node) +{ + WRITE_ENUM_FIELD(XmlOptionType, xmloption, xmloption, xmloption); + WRITE_NODE_PTR_FIELD(expr, expr, expr); + WRITE_SPECIFIC_NODE_PTR_FIELD(TypeName, type_name, type_name, typeName, typeName); + WRITE_INT_FIELD(location, location, location); +} + +static void +_outWithClause(OUT_TYPE(WithClause, WithClause) out, const WithClause *node) +{ + WRITE_LIST_FIELD(ctes, ctes, ctes); + WRITE_BOOL_FIELD(recursive, recursive, recursive); + WRITE_INT_FIELD(location, location, location); +} + +static void +_outInferClause(OUT_TYPE(InferClause, InferClause) out, const InferClause *node) +{ + WRITE_LIST_FIELD(index_elems, indexElems, indexElems); + WRITE_NODE_PTR_FIELD(where_clause, whereClause, whereClause); + WRITE_STRING_FIELD(conname, conname, conname); + WRITE_INT_FIELD(location, location, location); +} + +static void +_outOnConflictClause(OUT_TYPE(OnConflictClause, OnConflictClause) out, const OnConflictClause *node) +{ + WRITE_ENUM_FIELD(OnConflictAction, action, action, action); + WRITE_SPECIFIC_NODE_PTR_FIELD(InferClause, infer_clause, infer, infer, infer); + WRITE_LIST_FIELD(target_list, targetList, targetList); + WRITE_NODE_PTR_FIELD(where_clause, whereClause, whereClause); + WRITE_INT_FIELD(location, location, location); +} + +static void +_outCommonTableExpr(OUT_TYPE(CommonTableExpr, CommonTableExpr) out, const CommonTableExpr *node) +{ + WRITE_STRING_FIELD(ctename, ctename, ctename); + WRITE_LIST_FIELD(aliascolnames, aliascolnames, aliascolnames); + WRITE_ENUM_FIELD(CTEMaterialize, ctematerialized, ctematerialized, ctematerialized); + WRITE_NODE_PTR_FIELD(ctequery, ctequery, ctequery); + WRITE_INT_FIELD(location, location, location); + WRITE_BOOL_FIELD(cterecursive, cterecursive, cterecursive); + WRITE_INT_FIELD(cterefcount, cterefcount, cterefcount); + WRITE_LIST_FIELD(ctecolnames, ctecolnames, ctecolnames); + WRITE_LIST_FIELD(ctecoltypes, ctecoltypes, ctecoltypes); + WRITE_LIST_FIELD(ctecoltypmods, ctecoltypmods, ctecoltypmods); + WRITE_LIST_FIELD(ctecolcollations, ctecolcollations, ctecolcollations); +} + +static void +_outRoleSpec(OUT_TYPE(RoleSpec, RoleSpec) out, const RoleSpec *node) +{ + WRITE_ENUM_FIELD(RoleSpecType, roletype, roletype, roletype); + WRITE_STRING_FIELD(rolename, rolename, rolename); + WRITE_INT_FIELD(location, location, location); +} + +static void +_outTriggerTransition(OUT_TYPE(TriggerTransition, TriggerTransition) out, const TriggerTransition *node) +{ + WRITE_STRING_FIELD(name, name, name); + WRITE_BOOL_FIELD(is_new, isNew, isNew); + WRITE_BOOL_FIELD(is_table, isTable, isTable); +} + +static void +_outPartitionElem(OUT_TYPE(PartitionElem, PartitionElem) out, const PartitionElem *node) +{ + WRITE_STRING_FIELD(name, name, name); + WRITE_NODE_PTR_FIELD(expr, expr, expr); + WRITE_LIST_FIELD(collation, collation, collation); + WRITE_LIST_FIELD(opclass, opclass, opclass); + WRITE_INT_FIELD(location, location, location); +} + +static void +_outPartitionSpec(OUT_TYPE(PartitionSpec, PartitionSpec) out, const PartitionSpec *node) +{ + WRITE_STRING_FIELD(strategy, strategy, strategy); + WRITE_LIST_FIELD(part_params, partParams, partParams); + WRITE_INT_FIELD(location, location, location); +} + +static void +_outPartitionBoundSpec(OUT_TYPE(PartitionBoundSpec, PartitionBoundSpec) out, const PartitionBoundSpec *node) +{ + WRITE_CHAR_FIELD(strategy, strategy, strategy); + WRITE_BOOL_FIELD(is_default, is_default, is_default); + WRITE_INT_FIELD(modulus, modulus, modulus); + WRITE_INT_FIELD(remainder, remainder, remainder); + WRITE_LIST_FIELD(listdatums, listdatums, listdatums); + WRITE_LIST_FIELD(lowerdatums, lowerdatums, lowerdatums); + WRITE_LIST_FIELD(upperdatums, upperdatums, upperdatums); + WRITE_INT_FIELD(location, location, location); +} + +static void +_outPartitionRangeDatum(OUT_TYPE(PartitionRangeDatum, PartitionRangeDatum) out, const PartitionRangeDatum *node) +{ + WRITE_ENUM_FIELD(PartitionRangeDatumKind, kind, kind, kind); + WRITE_NODE_PTR_FIELD(value, value, value); + WRITE_INT_FIELD(location, location, location); +} + +static void +_outPartitionCmd(OUT_TYPE(PartitionCmd, PartitionCmd) out, const PartitionCmd *node) +{ + WRITE_SPECIFIC_NODE_PTR_FIELD(RangeVar, range_var, name, name, name); + WRITE_SPECIFIC_NODE_PTR_FIELD(PartitionBoundSpec, partition_bound_spec, bound, bound, bound); +} + +static void +_outVacuumRelation(OUT_TYPE(VacuumRelation, VacuumRelation) out, const VacuumRelation *node) +{ + WRITE_SPECIFIC_NODE_PTR_FIELD(RangeVar, range_var, relation, relation, relation); + WRITE_UINT_FIELD(oid, oid, oid); + WRITE_LIST_FIELD(va_cols, va_cols, va_cols); +} + +static void +_outInlineCodeBlock(OUT_TYPE(InlineCodeBlock, InlineCodeBlock) out, const InlineCodeBlock *node) +{ + WRITE_STRING_FIELD(source_text, source_text, source_text); + WRITE_UINT_FIELD(lang_oid, langOid, langOid); + WRITE_BOOL_FIELD(lang_is_trusted, langIsTrusted, langIsTrusted); + WRITE_BOOL_FIELD(atomic, atomic, atomic); +} + +static void +_outCallContext(OUT_TYPE(CallContext, CallContext) out, const CallContext *node) +{ + WRITE_BOOL_FIELD(atomic, atomic, atomic); +} + diff --git a/parser/include/pg_query_readfuncs_conds.c b/parser/include/pg_query_readfuncs_conds.c new file mode 100644 index 00000000..fc903a69 --- /dev/null +++ b/parser/include/pg_query_readfuncs_conds.c @@ -0,0 +1,222 @@ +// This file is autogenerated by ./scripts/generate_protobuf_and_funcs.rb + + READ_COND(Alias, Alias, alias, ALIAS, Alias, alias); + READ_COND(RangeVar, RangeVar, range_var, RANGE_VAR, RangeVar, range_var); + READ_COND(TableFunc, TableFunc, table_func, TABLE_FUNC, TableFunc, table_func); + READ_COND(Expr, Expr, expr, EXPR, Expr, expr); + READ_COND(Var, Var, var, VAR, Var, var); + READ_COND(Param, Param, param, PARAM, Param, param); + READ_COND(Aggref, Aggref, aggref, AGGREF, Aggref, aggref); + READ_COND(GroupingFunc, GroupingFunc, grouping_func, GROUPING_FUNC, GroupingFunc, grouping_func); + READ_COND(WindowFunc, WindowFunc, window_func, WINDOW_FUNC, WindowFunc, window_func); + READ_COND(SubscriptingRef, SubscriptingRef, subscripting_ref, SUBSCRIPTING_REF, SubscriptingRef, subscripting_ref); + READ_COND(FuncExpr, FuncExpr, func_expr, FUNC_EXPR, FuncExpr, func_expr); + READ_COND(NamedArgExpr, NamedArgExpr, named_arg_expr, NAMED_ARG_EXPR, NamedArgExpr, named_arg_expr); + READ_COND(OpExpr, OpExpr, op_expr, OP_EXPR, OpExpr, op_expr); + READ_COND(DistinctExpr, DistinctExpr, distinct_expr, DISTINCT_EXPR, DistinctExpr, distinct_expr); + READ_COND(NullIfExpr, NullIfExpr, null_if_expr, NULL_IF_EXPR, NullIfExpr, null_if_expr); + READ_COND(ScalarArrayOpExpr, ScalarArrayOpExpr, scalar_array_op_expr, SCALAR_ARRAY_OP_EXPR, ScalarArrayOpExpr, scalar_array_op_expr); + READ_COND(BoolExpr, BoolExpr, bool_expr, BOOL_EXPR, BoolExpr, bool_expr); + READ_COND(SubLink, SubLink, sub_link, SUB_LINK, SubLink, sub_link); + READ_COND(SubPlan, SubPlan, sub_plan, SUB_PLAN, SubPlan, sub_plan); + READ_COND(AlternativeSubPlan, AlternativeSubPlan, alternative_sub_plan, ALTERNATIVE_SUB_PLAN, AlternativeSubPlan, alternative_sub_plan); + READ_COND(FieldSelect, FieldSelect, field_select, FIELD_SELECT, FieldSelect, field_select); + READ_COND(FieldStore, FieldStore, field_store, FIELD_STORE, FieldStore, field_store); + READ_COND(RelabelType, RelabelType, relabel_type, RELABEL_TYPE, RelabelType, relabel_type); + READ_COND(CoerceViaIO, CoerceViaIO, coerce_via_io, COERCE_VIA_IO, CoerceViaIO, coerce_via_io); + READ_COND(ArrayCoerceExpr, ArrayCoerceExpr, array_coerce_expr, ARRAY_COERCE_EXPR, ArrayCoerceExpr, array_coerce_expr); + READ_COND(ConvertRowtypeExpr, ConvertRowtypeExpr, convert_rowtype_expr, CONVERT_ROWTYPE_EXPR, ConvertRowtypeExpr, convert_rowtype_expr); + READ_COND(CollateExpr, CollateExpr, collate_expr, COLLATE_EXPR, CollateExpr, collate_expr); + READ_COND(CaseExpr, CaseExpr, case_expr, CASE_EXPR, CaseExpr, case_expr); + READ_COND(CaseWhen, CaseWhen, case_when, CASE_WHEN, CaseWhen, case_when); + READ_COND(CaseTestExpr, CaseTestExpr, case_test_expr, CASE_TEST_EXPR, CaseTestExpr, case_test_expr); + READ_COND(ArrayExpr, ArrayExpr, array_expr, ARRAY_EXPR, ArrayExpr, array_expr); + READ_COND(RowExpr, RowExpr, row_expr, ROW_EXPR, RowExpr, row_expr); + READ_COND(RowCompareExpr, RowCompareExpr, row_compare_expr, ROW_COMPARE_EXPR, RowCompareExpr, row_compare_expr); + READ_COND(CoalesceExpr, CoalesceExpr, coalesce_expr, COALESCE_EXPR, CoalesceExpr, coalesce_expr); + READ_COND(MinMaxExpr, MinMaxExpr, min_max_expr, MIN_MAX_EXPR, MinMaxExpr, min_max_expr); + READ_COND(SQLValueFunction, SQLValueFunction, sqlvalue_function, SQLVALUE_FUNCTION, SQLValueFunction, sqlvalue_function); + READ_COND(XmlExpr, XmlExpr, xml_expr, XML_EXPR, XmlExpr, xml_expr); + READ_COND(NullTest, NullTest, null_test, NULL_TEST, NullTest, null_test); + READ_COND(BooleanTest, BooleanTest, boolean_test, BOOLEAN_TEST, BooleanTest, boolean_test); + READ_COND(CoerceToDomain, CoerceToDomain, coerce_to_domain, COERCE_TO_DOMAIN, CoerceToDomain, coerce_to_domain); + READ_COND(CoerceToDomainValue, CoerceToDomainValue, coerce_to_domain_value, COERCE_TO_DOMAIN_VALUE, CoerceToDomainValue, coerce_to_domain_value); + READ_COND(SetToDefault, SetToDefault, set_to_default, SET_TO_DEFAULT, SetToDefault, set_to_default); + READ_COND(CurrentOfExpr, CurrentOfExpr, current_of_expr, CURRENT_OF_EXPR, CurrentOfExpr, current_of_expr); + READ_COND(NextValueExpr, NextValueExpr, next_value_expr, NEXT_VALUE_EXPR, NextValueExpr, next_value_expr); + READ_COND(InferenceElem, InferenceElem, inference_elem, INFERENCE_ELEM, InferenceElem, inference_elem); + READ_COND(TargetEntry, TargetEntry, target_entry, TARGET_ENTRY, TargetEntry, target_entry); + READ_COND(RangeTblRef, RangeTblRef, range_tbl_ref, RANGE_TBL_REF, RangeTblRef, range_tbl_ref); + READ_COND(JoinExpr, JoinExpr, join_expr, JOIN_EXPR, JoinExpr, join_expr); + READ_COND(FromExpr, FromExpr, from_expr, FROM_EXPR, FromExpr, from_expr); + READ_COND(OnConflictExpr, OnConflictExpr, on_conflict_expr, ON_CONFLICT_EXPR, OnConflictExpr, on_conflict_expr); + READ_COND(IntoClause, IntoClause, into_clause, INTO_CLAUSE, IntoClause, into_clause); + READ_COND(RawStmt, RawStmt, raw_stmt, RAW_STMT, RawStmt, raw_stmt); + READ_COND(Query, Query, query, QUERY, Query, query); + READ_COND(InsertStmt, InsertStmt, insert_stmt, INSERT_STMT, InsertStmt, insert_stmt); + READ_COND(DeleteStmt, DeleteStmt, delete_stmt, DELETE_STMT, DeleteStmt, delete_stmt); + READ_COND(UpdateStmt, UpdateStmt, update_stmt, UPDATE_STMT, UpdateStmt, update_stmt); + READ_COND(SelectStmt, SelectStmt, select_stmt, SELECT_STMT, SelectStmt, select_stmt); + READ_COND(AlterTableStmt, AlterTableStmt, alter_table_stmt, ALTER_TABLE_STMT, AlterTableStmt, alter_table_stmt); + READ_COND(AlterTableCmd, AlterTableCmd, alter_table_cmd, ALTER_TABLE_CMD, AlterTableCmd, alter_table_cmd); + READ_COND(AlterDomainStmt, AlterDomainStmt, alter_domain_stmt, ALTER_DOMAIN_STMT, AlterDomainStmt, alter_domain_stmt); + READ_COND(SetOperationStmt, SetOperationStmt, set_operation_stmt, SET_OPERATION_STMT, SetOperationStmt, set_operation_stmt); + READ_COND(GrantStmt, GrantStmt, grant_stmt, GRANT_STMT, GrantStmt, grant_stmt); + READ_COND(GrantRoleStmt, GrantRoleStmt, grant_role_stmt, GRANT_ROLE_STMT, GrantRoleStmt, grant_role_stmt); + READ_COND(AlterDefaultPrivilegesStmt, AlterDefaultPrivilegesStmt, alter_default_privileges_stmt, ALTER_DEFAULT_PRIVILEGES_STMT, AlterDefaultPrivilegesStmt, alter_default_privileges_stmt); + READ_COND(ClosePortalStmt, ClosePortalStmt, close_portal_stmt, CLOSE_PORTAL_STMT, ClosePortalStmt, close_portal_stmt); + READ_COND(ClusterStmt, ClusterStmt, cluster_stmt, CLUSTER_STMT, ClusterStmt, cluster_stmt); + READ_COND(CopyStmt, CopyStmt, copy_stmt, COPY_STMT, CopyStmt, copy_stmt); + READ_COND(CreateStmt, CreateStmt, create_stmt, CREATE_STMT, CreateStmt, create_stmt); + READ_COND(DefineStmt, DefineStmt, define_stmt, DEFINE_STMT, DefineStmt, define_stmt); + READ_COND(DropStmt, DropStmt, drop_stmt, DROP_STMT, DropStmt, drop_stmt); + READ_COND(TruncateStmt, TruncateStmt, truncate_stmt, TRUNCATE_STMT, TruncateStmt, truncate_stmt); + READ_COND(CommentStmt, CommentStmt, comment_stmt, COMMENT_STMT, CommentStmt, comment_stmt); + READ_COND(FetchStmt, FetchStmt, fetch_stmt, FETCH_STMT, FetchStmt, fetch_stmt); + READ_COND(IndexStmt, IndexStmt, index_stmt, INDEX_STMT, IndexStmt, index_stmt); + READ_COND(CreateFunctionStmt, CreateFunctionStmt, create_function_stmt, CREATE_FUNCTION_STMT, CreateFunctionStmt, create_function_stmt); + READ_COND(AlterFunctionStmt, AlterFunctionStmt, alter_function_stmt, ALTER_FUNCTION_STMT, AlterFunctionStmt, alter_function_stmt); + READ_COND(DoStmt, DoStmt, do_stmt, DO_STMT, DoStmt, do_stmt); + READ_COND(RenameStmt, RenameStmt, rename_stmt, RENAME_STMT, RenameStmt, rename_stmt); + READ_COND(RuleStmt, RuleStmt, rule_stmt, RULE_STMT, RuleStmt, rule_stmt); + READ_COND(NotifyStmt, NotifyStmt, notify_stmt, NOTIFY_STMT, NotifyStmt, notify_stmt); + READ_COND(ListenStmt, ListenStmt, listen_stmt, LISTEN_STMT, ListenStmt, listen_stmt); + READ_COND(UnlistenStmt, UnlistenStmt, unlisten_stmt, UNLISTEN_STMT, UnlistenStmt, unlisten_stmt); + READ_COND(TransactionStmt, TransactionStmt, transaction_stmt, TRANSACTION_STMT, TransactionStmt, transaction_stmt); + READ_COND(ViewStmt, ViewStmt, view_stmt, VIEW_STMT, ViewStmt, view_stmt); + READ_COND(LoadStmt, LoadStmt, load_stmt, LOAD_STMT, LoadStmt, load_stmt); + READ_COND(CreateDomainStmt, CreateDomainStmt, create_domain_stmt, CREATE_DOMAIN_STMT, CreateDomainStmt, create_domain_stmt); + READ_COND(CreatedbStmt, CreatedbStmt, createdb_stmt, CREATEDB_STMT, CreatedbStmt, createdb_stmt); + READ_COND(DropdbStmt, DropdbStmt, dropdb_stmt, DROPDB_STMT, DropdbStmt, dropdb_stmt); + READ_COND(VacuumStmt, VacuumStmt, vacuum_stmt, VACUUM_STMT, VacuumStmt, vacuum_stmt); + READ_COND(ExplainStmt, ExplainStmt, explain_stmt, EXPLAIN_STMT, ExplainStmt, explain_stmt); + READ_COND(CreateTableAsStmt, CreateTableAsStmt, create_table_as_stmt, CREATE_TABLE_AS_STMT, CreateTableAsStmt, create_table_as_stmt); + READ_COND(CreateSeqStmt, CreateSeqStmt, create_seq_stmt, CREATE_SEQ_STMT, CreateSeqStmt, create_seq_stmt); + READ_COND(AlterSeqStmt, AlterSeqStmt, alter_seq_stmt, ALTER_SEQ_STMT, AlterSeqStmt, alter_seq_stmt); + READ_COND(VariableSetStmt, VariableSetStmt, variable_set_stmt, VARIABLE_SET_STMT, VariableSetStmt, variable_set_stmt); + READ_COND(VariableShowStmt, VariableShowStmt, variable_show_stmt, VARIABLE_SHOW_STMT, VariableShowStmt, variable_show_stmt); + READ_COND(DiscardStmt, DiscardStmt, discard_stmt, DISCARD_STMT, DiscardStmt, discard_stmt); + READ_COND(CreateTrigStmt, CreateTrigStmt, create_trig_stmt, CREATE_TRIG_STMT, CreateTrigStmt, create_trig_stmt); + READ_COND(CreatePLangStmt, CreatePLangStmt, create_plang_stmt, CREATE_PLANG_STMT, CreatePLangStmt, create_plang_stmt); + READ_COND(CreateRoleStmt, CreateRoleStmt, create_role_stmt, CREATE_ROLE_STMT, CreateRoleStmt, create_role_stmt); + READ_COND(AlterRoleStmt, AlterRoleStmt, alter_role_stmt, ALTER_ROLE_STMT, AlterRoleStmt, alter_role_stmt); + READ_COND(DropRoleStmt, DropRoleStmt, drop_role_stmt, DROP_ROLE_STMT, DropRoleStmt, drop_role_stmt); + READ_COND(LockStmt, LockStmt, lock_stmt, LOCK_STMT, LockStmt, lock_stmt); + READ_COND(ConstraintsSetStmt, ConstraintsSetStmt, constraints_set_stmt, CONSTRAINTS_SET_STMT, ConstraintsSetStmt, constraints_set_stmt); + READ_COND(ReindexStmt, ReindexStmt, reindex_stmt, REINDEX_STMT, ReindexStmt, reindex_stmt); + READ_COND(CheckPointStmt, CheckPointStmt, check_point_stmt, CHECK_POINT_STMT, CheckPointStmt, check_point_stmt); + READ_COND(CreateSchemaStmt, CreateSchemaStmt, create_schema_stmt, CREATE_SCHEMA_STMT, CreateSchemaStmt, create_schema_stmt); + READ_COND(AlterDatabaseStmt, AlterDatabaseStmt, alter_database_stmt, ALTER_DATABASE_STMT, AlterDatabaseStmt, alter_database_stmt); + READ_COND(AlterDatabaseSetStmt, AlterDatabaseSetStmt, alter_database_set_stmt, ALTER_DATABASE_SET_STMT, AlterDatabaseSetStmt, alter_database_set_stmt); + READ_COND(AlterRoleSetStmt, AlterRoleSetStmt, alter_role_set_stmt, ALTER_ROLE_SET_STMT, AlterRoleSetStmt, alter_role_set_stmt); + READ_COND(CreateConversionStmt, CreateConversionStmt, create_conversion_stmt, CREATE_CONVERSION_STMT, CreateConversionStmt, create_conversion_stmt); + READ_COND(CreateCastStmt, CreateCastStmt, create_cast_stmt, CREATE_CAST_STMT, CreateCastStmt, create_cast_stmt); + READ_COND(CreateOpClassStmt, CreateOpClassStmt, create_op_class_stmt, CREATE_OP_CLASS_STMT, CreateOpClassStmt, create_op_class_stmt); + READ_COND(CreateOpFamilyStmt, CreateOpFamilyStmt, create_op_family_stmt, CREATE_OP_FAMILY_STMT, CreateOpFamilyStmt, create_op_family_stmt); + READ_COND(AlterOpFamilyStmt, AlterOpFamilyStmt, alter_op_family_stmt, ALTER_OP_FAMILY_STMT, AlterOpFamilyStmt, alter_op_family_stmt); + READ_COND(PrepareStmt, PrepareStmt, prepare_stmt, PREPARE_STMT, PrepareStmt, prepare_stmt); + READ_COND(ExecuteStmt, ExecuteStmt, execute_stmt, EXECUTE_STMT, ExecuteStmt, execute_stmt); + READ_COND(DeallocateStmt, DeallocateStmt, deallocate_stmt, DEALLOCATE_STMT, DeallocateStmt, deallocate_stmt); + READ_COND(DeclareCursorStmt, DeclareCursorStmt, declare_cursor_stmt, DECLARE_CURSOR_STMT, DeclareCursorStmt, declare_cursor_stmt); + READ_COND(CreateTableSpaceStmt, CreateTableSpaceStmt, create_table_space_stmt, CREATE_TABLE_SPACE_STMT, CreateTableSpaceStmt, create_table_space_stmt); + READ_COND(DropTableSpaceStmt, DropTableSpaceStmt, drop_table_space_stmt, DROP_TABLE_SPACE_STMT, DropTableSpaceStmt, drop_table_space_stmt); + READ_COND(AlterObjectDependsStmt, AlterObjectDependsStmt, alter_object_depends_stmt, ALTER_OBJECT_DEPENDS_STMT, AlterObjectDependsStmt, alter_object_depends_stmt); + READ_COND(AlterObjectSchemaStmt, AlterObjectSchemaStmt, alter_object_schema_stmt, ALTER_OBJECT_SCHEMA_STMT, AlterObjectSchemaStmt, alter_object_schema_stmt); + READ_COND(AlterOwnerStmt, AlterOwnerStmt, alter_owner_stmt, ALTER_OWNER_STMT, AlterOwnerStmt, alter_owner_stmt); + READ_COND(AlterOperatorStmt, AlterOperatorStmt, alter_operator_stmt, ALTER_OPERATOR_STMT, AlterOperatorStmt, alter_operator_stmt); + READ_COND(AlterTypeStmt, AlterTypeStmt, alter_type_stmt, ALTER_TYPE_STMT, AlterTypeStmt, alter_type_stmt); + READ_COND(DropOwnedStmt, DropOwnedStmt, drop_owned_stmt, DROP_OWNED_STMT, DropOwnedStmt, drop_owned_stmt); + READ_COND(ReassignOwnedStmt, ReassignOwnedStmt, reassign_owned_stmt, REASSIGN_OWNED_STMT, ReassignOwnedStmt, reassign_owned_stmt); + READ_COND(CompositeTypeStmt, CompositeTypeStmt, composite_type_stmt, COMPOSITE_TYPE_STMT, CompositeTypeStmt, composite_type_stmt); + READ_COND(CreateEnumStmt, CreateEnumStmt, create_enum_stmt, CREATE_ENUM_STMT, CreateEnumStmt, create_enum_stmt); + READ_COND(CreateRangeStmt, CreateRangeStmt, create_range_stmt, CREATE_RANGE_STMT, CreateRangeStmt, create_range_stmt); + READ_COND(AlterEnumStmt, AlterEnumStmt, alter_enum_stmt, ALTER_ENUM_STMT, AlterEnumStmt, alter_enum_stmt); + READ_COND(AlterTSDictionaryStmt, AlterTSDictionaryStmt, alter_tsdictionary_stmt, ALTER_TSDICTIONARY_STMT, AlterTSDictionaryStmt, alter_tsdictionary_stmt); + READ_COND(AlterTSConfigurationStmt, AlterTSConfigurationStmt, alter_tsconfiguration_stmt, ALTER_TSCONFIGURATION_STMT, AlterTSConfigurationStmt, alter_tsconfiguration_stmt); + READ_COND(CreateFdwStmt, CreateFdwStmt, create_fdw_stmt, CREATE_FDW_STMT, CreateFdwStmt, create_fdw_stmt); + READ_COND(AlterFdwStmt, AlterFdwStmt, alter_fdw_stmt, ALTER_FDW_STMT, AlterFdwStmt, alter_fdw_stmt); + READ_COND(CreateForeignServerStmt, CreateForeignServerStmt, create_foreign_server_stmt, CREATE_FOREIGN_SERVER_STMT, CreateForeignServerStmt, create_foreign_server_stmt); + READ_COND(AlterForeignServerStmt, AlterForeignServerStmt, alter_foreign_server_stmt, ALTER_FOREIGN_SERVER_STMT, AlterForeignServerStmt, alter_foreign_server_stmt); + READ_COND(CreateUserMappingStmt, CreateUserMappingStmt, create_user_mapping_stmt, CREATE_USER_MAPPING_STMT, CreateUserMappingStmt, create_user_mapping_stmt); + READ_COND(AlterUserMappingStmt, AlterUserMappingStmt, alter_user_mapping_stmt, ALTER_USER_MAPPING_STMT, AlterUserMappingStmt, alter_user_mapping_stmt); + READ_COND(DropUserMappingStmt, DropUserMappingStmt, drop_user_mapping_stmt, DROP_USER_MAPPING_STMT, DropUserMappingStmt, drop_user_mapping_stmt); + READ_COND(AlterTableSpaceOptionsStmt, AlterTableSpaceOptionsStmt, alter_table_space_options_stmt, ALTER_TABLE_SPACE_OPTIONS_STMT, AlterTableSpaceOptionsStmt, alter_table_space_options_stmt); + READ_COND(AlterTableMoveAllStmt, AlterTableMoveAllStmt, alter_table_move_all_stmt, ALTER_TABLE_MOVE_ALL_STMT, AlterTableMoveAllStmt, alter_table_move_all_stmt); + READ_COND(SecLabelStmt, SecLabelStmt, sec_label_stmt, SEC_LABEL_STMT, SecLabelStmt, sec_label_stmt); + READ_COND(CreateForeignTableStmt, CreateForeignTableStmt, create_foreign_table_stmt, CREATE_FOREIGN_TABLE_STMT, CreateForeignTableStmt, create_foreign_table_stmt); + READ_COND(ImportForeignSchemaStmt, ImportForeignSchemaStmt, import_foreign_schema_stmt, IMPORT_FOREIGN_SCHEMA_STMT, ImportForeignSchemaStmt, import_foreign_schema_stmt); + READ_COND(CreateExtensionStmt, CreateExtensionStmt, create_extension_stmt, CREATE_EXTENSION_STMT, CreateExtensionStmt, create_extension_stmt); + READ_COND(AlterExtensionStmt, AlterExtensionStmt, alter_extension_stmt, ALTER_EXTENSION_STMT, AlterExtensionStmt, alter_extension_stmt); + READ_COND(AlterExtensionContentsStmt, AlterExtensionContentsStmt, alter_extension_contents_stmt, ALTER_EXTENSION_CONTENTS_STMT, AlterExtensionContentsStmt, alter_extension_contents_stmt); + READ_COND(CreateEventTrigStmt, CreateEventTrigStmt, create_event_trig_stmt, CREATE_EVENT_TRIG_STMT, CreateEventTrigStmt, create_event_trig_stmt); + READ_COND(AlterEventTrigStmt, AlterEventTrigStmt, alter_event_trig_stmt, ALTER_EVENT_TRIG_STMT, AlterEventTrigStmt, alter_event_trig_stmt); + READ_COND(RefreshMatViewStmt, RefreshMatViewStmt, refresh_mat_view_stmt, REFRESH_MAT_VIEW_STMT, RefreshMatViewStmt, refresh_mat_view_stmt); + READ_COND(ReplicaIdentityStmt, ReplicaIdentityStmt, replica_identity_stmt, REPLICA_IDENTITY_STMT, ReplicaIdentityStmt, replica_identity_stmt); + READ_COND(AlterSystemStmt, AlterSystemStmt, alter_system_stmt, ALTER_SYSTEM_STMT, AlterSystemStmt, alter_system_stmt); + READ_COND(CreatePolicyStmt, CreatePolicyStmt, create_policy_stmt, CREATE_POLICY_STMT, CreatePolicyStmt, create_policy_stmt); + READ_COND(AlterPolicyStmt, AlterPolicyStmt, alter_policy_stmt, ALTER_POLICY_STMT, AlterPolicyStmt, alter_policy_stmt); + READ_COND(CreateTransformStmt, CreateTransformStmt, create_transform_stmt, CREATE_TRANSFORM_STMT, CreateTransformStmt, create_transform_stmt); + READ_COND(CreateAmStmt, CreateAmStmt, create_am_stmt, CREATE_AM_STMT, CreateAmStmt, create_am_stmt); + READ_COND(CreatePublicationStmt, CreatePublicationStmt, create_publication_stmt, CREATE_PUBLICATION_STMT, CreatePublicationStmt, create_publication_stmt); + READ_COND(AlterPublicationStmt, AlterPublicationStmt, alter_publication_stmt, ALTER_PUBLICATION_STMT, AlterPublicationStmt, alter_publication_stmt); + READ_COND(CreateSubscriptionStmt, CreateSubscriptionStmt, create_subscription_stmt, CREATE_SUBSCRIPTION_STMT, CreateSubscriptionStmt, create_subscription_stmt); + READ_COND(AlterSubscriptionStmt, AlterSubscriptionStmt, alter_subscription_stmt, ALTER_SUBSCRIPTION_STMT, AlterSubscriptionStmt, alter_subscription_stmt); + READ_COND(DropSubscriptionStmt, DropSubscriptionStmt, drop_subscription_stmt, DROP_SUBSCRIPTION_STMT, DropSubscriptionStmt, drop_subscription_stmt); + READ_COND(CreateStatsStmt, CreateStatsStmt, create_stats_stmt, CREATE_STATS_STMT, CreateStatsStmt, create_stats_stmt); + READ_COND(AlterCollationStmt, AlterCollationStmt, alter_collation_stmt, ALTER_COLLATION_STMT, AlterCollationStmt, alter_collation_stmt); + READ_COND(CallStmt, CallStmt, call_stmt, CALL_STMT, CallStmt, call_stmt); + READ_COND(AlterStatsStmt, AlterStatsStmt, alter_stats_stmt, ALTER_STATS_STMT, AlterStatsStmt, alter_stats_stmt); + READ_COND(A_Expr, AExpr, a__expr, A_EXPR, A_Expr, a_expr); + READ_COND(ColumnRef, ColumnRef, column_ref, COLUMN_REF, ColumnRef, column_ref); + READ_COND(ParamRef, ParamRef, param_ref, PARAM_REF, ParamRef, param_ref); + READ_COND(A_Const, AConst, a__const, A_CONST, A_Const, a_const); + READ_COND(FuncCall, FuncCall, func_call, FUNC_CALL, FuncCall, func_call); + READ_COND(A_Star, AStar, a__star, A_STAR, A_Star, a_star); + READ_COND(A_Indices, AIndices, a__indices, A_INDICES, A_Indices, a_indices); + READ_COND(A_Indirection, AIndirection, a__indirection, A_INDIRECTION, A_Indirection, a_indirection); + READ_COND(A_ArrayExpr, AArrayExpr, a__array_expr, A_ARRAY_EXPR, A_ArrayExpr, a_array_expr); + READ_COND(ResTarget, ResTarget, res_target, RES_TARGET, ResTarget, res_target); + READ_COND(MultiAssignRef, MultiAssignRef, multi_assign_ref, MULTI_ASSIGN_REF, MultiAssignRef, multi_assign_ref); + READ_COND(TypeCast, TypeCast, type_cast, TYPE_CAST, TypeCast, type_cast); + READ_COND(CollateClause, CollateClause, collate_clause, COLLATE_CLAUSE, CollateClause, collate_clause); + READ_COND(SortBy, SortBy, sort_by, SORT_BY, SortBy, sort_by); + READ_COND(WindowDef, WindowDef, window_def, WINDOW_DEF, WindowDef, window_def); + READ_COND(RangeSubselect, RangeSubselect, range_subselect, RANGE_SUBSELECT, RangeSubselect, range_subselect); + READ_COND(RangeFunction, RangeFunction, range_function, RANGE_FUNCTION, RangeFunction, range_function); + READ_COND(RangeTableSample, RangeTableSample, range_table_sample, RANGE_TABLE_SAMPLE, RangeTableSample, range_table_sample); + READ_COND(RangeTableFunc, RangeTableFunc, range_table_func, RANGE_TABLE_FUNC, RangeTableFunc, range_table_func); + READ_COND(RangeTableFuncCol, RangeTableFuncCol, range_table_func_col, RANGE_TABLE_FUNC_COL, RangeTableFuncCol, range_table_func_col); + READ_COND(TypeName, TypeName, type_name, TYPE_NAME, TypeName, type_name); + READ_COND(ColumnDef, ColumnDef, column_def, COLUMN_DEF, ColumnDef, column_def); + READ_COND(IndexElem, IndexElem, index_elem, INDEX_ELEM, IndexElem, index_elem); + READ_COND(Constraint, Constraint, constraint, CONSTRAINT, Constraint, constraint); + READ_COND(DefElem, DefElem, def_elem, DEF_ELEM, DefElem, def_elem); + READ_COND(RangeTblEntry, RangeTblEntry, range_tbl_entry, RANGE_TBL_ENTRY, RangeTblEntry, range_tbl_entry); + READ_COND(RangeTblFunction, RangeTblFunction, range_tbl_function, RANGE_TBL_FUNCTION, RangeTblFunction, range_tbl_function); + READ_COND(TableSampleClause, TableSampleClause, table_sample_clause, TABLE_SAMPLE_CLAUSE, TableSampleClause, table_sample_clause); + READ_COND(WithCheckOption, WithCheckOption, with_check_option, WITH_CHECK_OPTION, WithCheckOption, with_check_option); + READ_COND(SortGroupClause, SortGroupClause, sort_group_clause, SORT_GROUP_CLAUSE, SortGroupClause, sort_group_clause); + READ_COND(GroupingSet, GroupingSet, grouping_set, GROUPING_SET, GroupingSet, grouping_set); + READ_COND(WindowClause, WindowClause, window_clause, WINDOW_CLAUSE, WindowClause, window_clause); + READ_COND(ObjectWithArgs, ObjectWithArgs, object_with_args, OBJECT_WITH_ARGS, ObjectWithArgs, object_with_args); + READ_COND(AccessPriv, AccessPriv, access_priv, ACCESS_PRIV, AccessPriv, access_priv); + READ_COND(CreateOpClassItem, CreateOpClassItem, create_op_class_item, CREATE_OP_CLASS_ITEM, CreateOpClassItem, create_op_class_item); + READ_COND(TableLikeClause, TableLikeClause, table_like_clause, TABLE_LIKE_CLAUSE, TableLikeClause, table_like_clause); + READ_COND(FunctionParameter, FunctionParameter, function_parameter, FUNCTION_PARAMETER, FunctionParameter, function_parameter); + READ_COND(LockingClause, LockingClause, locking_clause, LOCKING_CLAUSE, LockingClause, locking_clause); + READ_COND(RowMarkClause, RowMarkClause, row_mark_clause, ROW_MARK_CLAUSE, RowMarkClause, row_mark_clause); + READ_COND(XmlSerialize, XmlSerialize, xml_serialize, XML_SERIALIZE, XmlSerialize, xml_serialize); + READ_COND(WithClause, WithClause, with_clause, WITH_CLAUSE, WithClause, with_clause); + READ_COND(InferClause, InferClause, infer_clause, INFER_CLAUSE, InferClause, infer_clause); + READ_COND(OnConflictClause, OnConflictClause, on_conflict_clause, ON_CONFLICT_CLAUSE, OnConflictClause, on_conflict_clause); + READ_COND(CommonTableExpr, CommonTableExpr, common_table_expr, COMMON_TABLE_EXPR, CommonTableExpr, common_table_expr); + READ_COND(RoleSpec, RoleSpec, role_spec, ROLE_SPEC, RoleSpec, role_spec); + READ_COND(TriggerTransition, TriggerTransition, trigger_transition, TRIGGER_TRANSITION, TriggerTransition, trigger_transition); + READ_COND(PartitionElem, PartitionElem, partition_elem, PARTITION_ELEM, PartitionElem, partition_elem); + READ_COND(PartitionSpec, PartitionSpec, partition_spec, PARTITION_SPEC, PartitionSpec, partition_spec); + READ_COND(PartitionBoundSpec, PartitionBoundSpec, partition_bound_spec, PARTITION_BOUND_SPEC, PartitionBoundSpec, partition_bound_spec); + READ_COND(PartitionRangeDatum, PartitionRangeDatum, partition_range_datum, PARTITION_RANGE_DATUM, PartitionRangeDatum, partition_range_datum); + READ_COND(PartitionCmd, PartitionCmd, partition_cmd, PARTITION_CMD, PartitionCmd, partition_cmd); + READ_COND(VacuumRelation, VacuumRelation, vacuum_relation, VACUUM_RELATION, VacuumRelation, vacuum_relation); + READ_COND(InlineCodeBlock, InlineCodeBlock, inline_code_block, INLINE_CODE_BLOCK, InlineCodeBlock, inline_code_block); + READ_COND(CallContext, CallContext, call_context, CALL_CONTEXT, CallContext, call_context); diff --git a/parser/include/pg_query_readfuncs_defs.c b/parser/include/pg_query_readfuncs_defs.c new file mode 100644 index 00000000..9a633c36 --- /dev/null +++ b/parser/include/pg_query_readfuncs_defs.c @@ -0,0 +1,2878 @@ +// This file is autogenerated by ./scripts/generate_protobuf_and_funcs.rb + +static Alias * _readAlias(OUT_TYPE(Alias, Alias) msg); +static RangeVar * _readRangeVar(OUT_TYPE(RangeVar, RangeVar) msg); +static TableFunc * _readTableFunc(OUT_TYPE(TableFunc, TableFunc) msg); +static Expr * _readExpr(OUT_TYPE(Expr, Expr) msg); +static Var * _readVar(OUT_TYPE(Var, Var) msg); +static Param * _readParam(OUT_TYPE(Param, Param) msg); +static Aggref * _readAggref(OUT_TYPE(Aggref, Aggref) msg); +static GroupingFunc * _readGroupingFunc(OUT_TYPE(GroupingFunc, GroupingFunc) msg); +static WindowFunc * _readWindowFunc(OUT_TYPE(WindowFunc, WindowFunc) msg); +static SubscriptingRef * _readSubscriptingRef(OUT_TYPE(SubscriptingRef, SubscriptingRef) msg); +static FuncExpr * _readFuncExpr(OUT_TYPE(FuncExpr, FuncExpr) msg); +static NamedArgExpr * _readNamedArgExpr(OUT_TYPE(NamedArgExpr, NamedArgExpr) msg); +static OpExpr * _readOpExpr(OUT_TYPE(OpExpr, OpExpr) msg); +static DistinctExpr * _readDistinctExpr(OUT_TYPE(DistinctExpr, DistinctExpr) msg); +static NullIfExpr * _readNullIfExpr(OUT_TYPE(NullIfExpr, NullIfExpr) msg); +static ScalarArrayOpExpr * _readScalarArrayOpExpr(OUT_TYPE(ScalarArrayOpExpr, ScalarArrayOpExpr) msg); +static BoolExpr * _readBoolExpr(OUT_TYPE(BoolExpr, BoolExpr) msg); +static SubLink * _readSubLink(OUT_TYPE(SubLink, SubLink) msg); +static SubPlan * _readSubPlan(OUT_TYPE(SubPlan, SubPlan) msg); +static AlternativeSubPlan * _readAlternativeSubPlan(OUT_TYPE(AlternativeSubPlan, AlternativeSubPlan) msg); +static FieldSelect * _readFieldSelect(OUT_TYPE(FieldSelect, FieldSelect) msg); +static FieldStore * _readFieldStore(OUT_TYPE(FieldStore, FieldStore) msg); +static RelabelType * _readRelabelType(OUT_TYPE(RelabelType, RelabelType) msg); +static CoerceViaIO * _readCoerceViaIO(OUT_TYPE(CoerceViaIO, CoerceViaIO) msg); +static ArrayCoerceExpr * _readArrayCoerceExpr(OUT_TYPE(ArrayCoerceExpr, ArrayCoerceExpr) msg); +static ConvertRowtypeExpr * _readConvertRowtypeExpr(OUT_TYPE(ConvertRowtypeExpr, ConvertRowtypeExpr) msg); +static CollateExpr * _readCollateExpr(OUT_TYPE(CollateExpr, CollateExpr) msg); +static CaseExpr * _readCaseExpr(OUT_TYPE(CaseExpr, CaseExpr) msg); +static CaseWhen * _readCaseWhen(OUT_TYPE(CaseWhen, CaseWhen) msg); +static CaseTestExpr * _readCaseTestExpr(OUT_TYPE(CaseTestExpr, CaseTestExpr) msg); +static ArrayExpr * _readArrayExpr(OUT_TYPE(ArrayExpr, ArrayExpr) msg); +static RowExpr * _readRowExpr(OUT_TYPE(RowExpr, RowExpr) msg); +static RowCompareExpr * _readRowCompareExpr(OUT_TYPE(RowCompareExpr, RowCompareExpr) msg); +static CoalesceExpr * _readCoalesceExpr(OUT_TYPE(CoalesceExpr, CoalesceExpr) msg); +static MinMaxExpr * _readMinMaxExpr(OUT_TYPE(MinMaxExpr, MinMaxExpr) msg); +static SQLValueFunction * _readSQLValueFunction(OUT_TYPE(SQLValueFunction, SQLValueFunction) msg); +static XmlExpr * _readXmlExpr(OUT_TYPE(XmlExpr, XmlExpr) msg); +static NullTest * _readNullTest(OUT_TYPE(NullTest, NullTest) msg); +static BooleanTest * _readBooleanTest(OUT_TYPE(BooleanTest, BooleanTest) msg); +static CoerceToDomain * _readCoerceToDomain(OUT_TYPE(CoerceToDomain, CoerceToDomain) msg); +static CoerceToDomainValue * _readCoerceToDomainValue(OUT_TYPE(CoerceToDomainValue, CoerceToDomainValue) msg); +static SetToDefault * _readSetToDefault(OUT_TYPE(SetToDefault, SetToDefault) msg); +static CurrentOfExpr * _readCurrentOfExpr(OUT_TYPE(CurrentOfExpr, CurrentOfExpr) msg); +static NextValueExpr * _readNextValueExpr(OUT_TYPE(NextValueExpr, NextValueExpr) msg); +static InferenceElem * _readInferenceElem(OUT_TYPE(InferenceElem, InferenceElem) msg); +static TargetEntry * _readTargetEntry(OUT_TYPE(TargetEntry, TargetEntry) msg); +static RangeTblRef * _readRangeTblRef(OUT_TYPE(RangeTblRef, RangeTblRef) msg); +static JoinExpr * _readJoinExpr(OUT_TYPE(JoinExpr, JoinExpr) msg); +static FromExpr * _readFromExpr(OUT_TYPE(FromExpr, FromExpr) msg); +static OnConflictExpr * _readOnConflictExpr(OUT_TYPE(OnConflictExpr, OnConflictExpr) msg); +static IntoClause * _readIntoClause(OUT_TYPE(IntoClause, IntoClause) msg); +static RawStmt * _readRawStmt(OUT_TYPE(RawStmt, RawStmt) msg); +static Query * _readQuery(OUT_TYPE(Query, Query) msg); +static InsertStmt * _readInsertStmt(OUT_TYPE(InsertStmt, InsertStmt) msg); +static DeleteStmt * _readDeleteStmt(OUT_TYPE(DeleteStmt, DeleteStmt) msg); +static UpdateStmt * _readUpdateStmt(OUT_TYPE(UpdateStmt, UpdateStmt) msg); +static SelectStmt * _readSelectStmt(OUT_TYPE(SelectStmt, SelectStmt) msg); +static AlterTableStmt * _readAlterTableStmt(OUT_TYPE(AlterTableStmt, AlterTableStmt) msg); +static AlterTableCmd * _readAlterTableCmd(OUT_TYPE(AlterTableCmd, AlterTableCmd) msg); +static AlterDomainStmt * _readAlterDomainStmt(OUT_TYPE(AlterDomainStmt, AlterDomainStmt) msg); +static SetOperationStmt * _readSetOperationStmt(OUT_TYPE(SetOperationStmt, SetOperationStmt) msg); +static GrantStmt * _readGrantStmt(OUT_TYPE(GrantStmt, GrantStmt) msg); +static GrantRoleStmt * _readGrantRoleStmt(OUT_TYPE(GrantRoleStmt, GrantRoleStmt) msg); +static AlterDefaultPrivilegesStmt * _readAlterDefaultPrivilegesStmt(OUT_TYPE(AlterDefaultPrivilegesStmt, AlterDefaultPrivilegesStmt) msg); +static ClosePortalStmt * _readClosePortalStmt(OUT_TYPE(ClosePortalStmt, ClosePortalStmt) msg); +static ClusterStmt * _readClusterStmt(OUT_TYPE(ClusterStmt, ClusterStmt) msg); +static CopyStmt * _readCopyStmt(OUT_TYPE(CopyStmt, CopyStmt) msg); +static CreateStmt * _readCreateStmt(OUT_TYPE(CreateStmt, CreateStmt) msg); +static DefineStmt * _readDefineStmt(OUT_TYPE(DefineStmt, DefineStmt) msg); +static DropStmt * _readDropStmt(OUT_TYPE(DropStmt, DropStmt) msg); +static TruncateStmt * _readTruncateStmt(OUT_TYPE(TruncateStmt, TruncateStmt) msg); +static CommentStmt * _readCommentStmt(OUT_TYPE(CommentStmt, CommentStmt) msg); +static FetchStmt * _readFetchStmt(OUT_TYPE(FetchStmt, FetchStmt) msg); +static IndexStmt * _readIndexStmt(OUT_TYPE(IndexStmt, IndexStmt) msg); +static CreateFunctionStmt * _readCreateFunctionStmt(OUT_TYPE(CreateFunctionStmt, CreateFunctionStmt) msg); +static AlterFunctionStmt * _readAlterFunctionStmt(OUT_TYPE(AlterFunctionStmt, AlterFunctionStmt) msg); +static DoStmt * _readDoStmt(OUT_TYPE(DoStmt, DoStmt) msg); +static RenameStmt * _readRenameStmt(OUT_TYPE(RenameStmt, RenameStmt) msg); +static RuleStmt * _readRuleStmt(OUT_TYPE(RuleStmt, RuleStmt) msg); +static NotifyStmt * _readNotifyStmt(OUT_TYPE(NotifyStmt, NotifyStmt) msg); +static ListenStmt * _readListenStmt(OUT_TYPE(ListenStmt, ListenStmt) msg); +static UnlistenStmt * _readUnlistenStmt(OUT_TYPE(UnlistenStmt, UnlistenStmt) msg); +static TransactionStmt * _readTransactionStmt(OUT_TYPE(TransactionStmt, TransactionStmt) msg); +static ViewStmt * _readViewStmt(OUT_TYPE(ViewStmt, ViewStmt) msg); +static LoadStmt * _readLoadStmt(OUT_TYPE(LoadStmt, LoadStmt) msg); +static CreateDomainStmt * _readCreateDomainStmt(OUT_TYPE(CreateDomainStmt, CreateDomainStmt) msg); +static CreatedbStmt * _readCreatedbStmt(OUT_TYPE(CreatedbStmt, CreatedbStmt) msg); +static DropdbStmt * _readDropdbStmt(OUT_TYPE(DropdbStmt, DropdbStmt) msg); +static VacuumStmt * _readVacuumStmt(OUT_TYPE(VacuumStmt, VacuumStmt) msg); +static ExplainStmt * _readExplainStmt(OUT_TYPE(ExplainStmt, ExplainStmt) msg); +static CreateTableAsStmt * _readCreateTableAsStmt(OUT_TYPE(CreateTableAsStmt, CreateTableAsStmt) msg); +static CreateSeqStmt * _readCreateSeqStmt(OUT_TYPE(CreateSeqStmt, CreateSeqStmt) msg); +static AlterSeqStmt * _readAlterSeqStmt(OUT_TYPE(AlterSeqStmt, AlterSeqStmt) msg); +static VariableSetStmt * _readVariableSetStmt(OUT_TYPE(VariableSetStmt, VariableSetStmt) msg); +static VariableShowStmt * _readVariableShowStmt(OUT_TYPE(VariableShowStmt, VariableShowStmt) msg); +static DiscardStmt * _readDiscardStmt(OUT_TYPE(DiscardStmt, DiscardStmt) msg); +static CreateTrigStmt * _readCreateTrigStmt(OUT_TYPE(CreateTrigStmt, CreateTrigStmt) msg); +static CreatePLangStmt * _readCreatePLangStmt(OUT_TYPE(CreatePLangStmt, CreatePLangStmt) msg); +static CreateRoleStmt * _readCreateRoleStmt(OUT_TYPE(CreateRoleStmt, CreateRoleStmt) msg); +static AlterRoleStmt * _readAlterRoleStmt(OUT_TYPE(AlterRoleStmt, AlterRoleStmt) msg); +static DropRoleStmt * _readDropRoleStmt(OUT_TYPE(DropRoleStmt, DropRoleStmt) msg); +static LockStmt * _readLockStmt(OUT_TYPE(LockStmt, LockStmt) msg); +static ConstraintsSetStmt * _readConstraintsSetStmt(OUT_TYPE(ConstraintsSetStmt, ConstraintsSetStmt) msg); +static ReindexStmt * _readReindexStmt(OUT_TYPE(ReindexStmt, ReindexStmt) msg); +static CheckPointStmt * _readCheckPointStmt(OUT_TYPE(CheckPointStmt, CheckPointStmt) msg); +static CreateSchemaStmt * _readCreateSchemaStmt(OUT_TYPE(CreateSchemaStmt, CreateSchemaStmt) msg); +static AlterDatabaseStmt * _readAlterDatabaseStmt(OUT_TYPE(AlterDatabaseStmt, AlterDatabaseStmt) msg); +static AlterDatabaseSetStmt * _readAlterDatabaseSetStmt(OUT_TYPE(AlterDatabaseSetStmt, AlterDatabaseSetStmt) msg); +static AlterRoleSetStmt * _readAlterRoleSetStmt(OUT_TYPE(AlterRoleSetStmt, AlterRoleSetStmt) msg); +static CreateConversionStmt * _readCreateConversionStmt(OUT_TYPE(CreateConversionStmt, CreateConversionStmt) msg); +static CreateCastStmt * _readCreateCastStmt(OUT_TYPE(CreateCastStmt, CreateCastStmt) msg); +static CreateOpClassStmt * _readCreateOpClassStmt(OUT_TYPE(CreateOpClassStmt, CreateOpClassStmt) msg); +static CreateOpFamilyStmt * _readCreateOpFamilyStmt(OUT_TYPE(CreateOpFamilyStmt, CreateOpFamilyStmt) msg); +static AlterOpFamilyStmt * _readAlterOpFamilyStmt(OUT_TYPE(AlterOpFamilyStmt, AlterOpFamilyStmt) msg); +static PrepareStmt * _readPrepareStmt(OUT_TYPE(PrepareStmt, PrepareStmt) msg); +static ExecuteStmt * _readExecuteStmt(OUT_TYPE(ExecuteStmt, ExecuteStmt) msg); +static DeallocateStmt * _readDeallocateStmt(OUT_TYPE(DeallocateStmt, DeallocateStmt) msg); +static DeclareCursorStmt * _readDeclareCursorStmt(OUT_TYPE(DeclareCursorStmt, DeclareCursorStmt) msg); +static CreateTableSpaceStmt * _readCreateTableSpaceStmt(OUT_TYPE(CreateTableSpaceStmt, CreateTableSpaceStmt) msg); +static DropTableSpaceStmt * _readDropTableSpaceStmt(OUT_TYPE(DropTableSpaceStmt, DropTableSpaceStmt) msg); +static AlterObjectDependsStmt * _readAlterObjectDependsStmt(OUT_TYPE(AlterObjectDependsStmt, AlterObjectDependsStmt) msg); +static AlterObjectSchemaStmt * _readAlterObjectSchemaStmt(OUT_TYPE(AlterObjectSchemaStmt, AlterObjectSchemaStmt) msg); +static AlterOwnerStmt * _readAlterOwnerStmt(OUT_TYPE(AlterOwnerStmt, AlterOwnerStmt) msg); +static AlterOperatorStmt * _readAlterOperatorStmt(OUT_TYPE(AlterOperatorStmt, AlterOperatorStmt) msg); +static AlterTypeStmt * _readAlterTypeStmt(OUT_TYPE(AlterTypeStmt, AlterTypeStmt) msg); +static DropOwnedStmt * _readDropOwnedStmt(OUT_TYPE(DropOwnedStmt, DropOwnedStmt) msg); +static ReassignOwnedStmt * _readReassignOwnedStmt(OUT_TYPE(ReassignOwnedStmt, ReassignOwnedStmt) msg); +static CompositeTypeStmt * _readCompositeTypeStmt(OUT_TYPE(CompositeTypeStmt, CompositeTypeStmt) msg); +static CreateEnumStmt * _readCreateEnumStmt(OUT_TYPE(CreateEnumStmt, CreateEnumStmt) msg); +static CreateRangeStmt * _readCreateRangeStmt(OUT_TYPE(CreateRangeStmt, CreateRangeStmt) msg); +static AlterEnumStmt * _readAlterEnumStmt(OUT_TYPE(AlterEnumStmt, AlterEnumStmt) msg); +static AlterTSDictionaryStmt * _readAlterTSDictionaryStmt(OUT_TYPE(AlterTSDictionaryStmt, AlterTSDictionaryStmt) msg); +static AlterTSConfigurationStmt * _readAlterTSConfigurationStmt(OUT_TYPE(AlterTSConfigurationStmt, AlterTSConfigurationStmt) msg); +static CreateFdwStmt * _readCreateFdwStmt(OUT_TYPE(CreateFdwStmt, CreateFdwStmt) msg); +static AlterFdwStmt * _readAlterFdwStmt(OUT_TYPE(AlterFdwStmt, AlterFdwStmt) msg); +static CreateForeignServerStmt * _readCreateForeignServerStmt(OUT_TYPE(CreateForeignServerStmt, CreateForeignServerStmt) msg); +static AlterForeignServerStmt * _readAlterForeignServerStmt(OUT_TYPE(AlterForeignServerStmt, AlterForeignServerStmt) msg); +static CreateUserMappingStmt * _readCreateUserMappingStmt(OUT_TYPE(CreateUserMappingStmt, CreateUserMappingStmt) msg); +static AlterUserMappingStmt * _readAlterUserMappingStmt(OUT_TYPE(AlterUserMappingStmt, AlterUserMappingStmt) msg); +static DropUserMappingStmt * _readDropUserMappingStmt(OUT_TYPE(DropUserMappingStmt, DropUserMappingStmt) msg); +static AlterTableSpaceOptionsStmt * _readAlterTableSpaceOptionsStmt(OUT_TYPE(AlterTableSpaceOptionsStmt, AlterTableSpaceOptionsStmt) msg); +static AlterTableMoveAllStmt * _readAlterTableMoveAllStmt(OUT_TYPE(AlterTableMoveAllStmt, AlterTableMoveAllStmt) msg); +static SecLabelStmt * _readSecLabelStmt(OUT_TYPE(SecLabelStmt, SecLabelStmt) msg); +static CreateForeignTableStmt * _readCreateForeignTableStmt(OUT_TYPE(CreateForeignTableStmt, CreateForeignTableStmt) msg); +static ImportForeignSchemaStmt * _readImportForeignSchemaStmt(OUT_TYPE(ImportForeignSchemaStmt, ImportForeignSchemaStmt) msg); +static CreateExtensionStmt * _readCreateExtensionStmt(OUT_TYPE(CreateExtensionStmt, CreateExtensionStmt) msg); +static AlterExtensionStmt * _readAlterExtensionStmt(OUT_TYPE(AlterExtensionStmt, AlterExtensionStmt) msg); +static AlterExtensionContentsStmt * _readAlterExtensionContentsStmt(OUT_TYPE(AlterExtensionContentsStmt, AlterExtensionContentsStmt) msg); +static CreateEventTrigStmt * _readCreateEventTrigStmt(OUT_TYPE(CreateEventTrigStmt, CreateEventTrigStmt) msg); +static AlterEventTrigStmt * _readAlterEventTrigStmt(OUT_TYPE(AlterEventTrigStmt, AlterEventTrigStmt) msg); +static RefreshMatViewStmt * _readRefreshMatViewStmt(OUT_TYPE(RefreshMatViewStmt, RefreshMatViewStmt) msg); +static ReplicaIdentityStmt * _readReplicaIdentityStmt(OUT_TYPE(ReplicaIdentityStmt, ReplicaIdentityStmt) msg); +static AlterSystemStmt * _readAlterSystemStmt(OUT_TYPE(AlterSystemStmt, AlterSystemStmt) msg); +static CreatePolicyStmt * _readCreatePolicyStmt(OUT_TYPE(CreatePolicyStmt, CreatePolicyStmt) msg); +static AlterPolicyStmt * _readAlterPolicyStmt(OUT_TYPE(AlterPolicyStmt, AlterPolicyStmt) msg); +static CreateTransformStmt * _readCreateTransformStmt(OUT_TYPE(CreateTransformStmt, CreateTransformStmt) msg); +static CreateAmStmt * _readCreateAmStmt(OUT_TYPE(CreateAmStmt, CreateAmStmt) msg); +static CreatePublicationStmt * _readCreatePublicationStmt(OUT_TYPE(CreatePublicationStmt, CreatePublicationStmt) msg); +static AlterPublicationStmt * _readAlterPublicationStmt(OUT_TYPE(AlterPublicationStmt, AlterPublicationStmt) msg); +static CreateSubscriptionStmt * _readCreateSubscriptionStmt(OUT_TYPE(CreateSubscriptionStmt, CreateSubscriptionStmt) msg); +static AlterSubscriptionStmt * _readAlterSubscriptionStmt(OUT_TYPE(AlterSubscriptionStmt, AlterSubscriptionStmt) msg); +static DropSubscriptionStmt * _readDropSubscriptionStmt(OUT_TYPE(DropSubscriptionStmt, DropSubscriptionStmt) msg); +static CreateStatsStmt * _readCreateStatsStmt(OUT_TYPE(CreateStatsStmt, CreateStatsStmt) msg); +static AlterCollationStmt * _readAlterCollationStmt(OUT_TYPE(AlterCollationStmt, AlterCollationStmt) msg); +static CallStmt * _readCallStmt(OUT_TYPE(CallStmt, CallStmt) msg); +static AlterStatsStmt * _readAlterStatsStmt(OUT_TYPE(AlterStatsStmt, AlterStatsStmt) msg); +static A_Expr * _readAExpr(OUT_TYPE(A_Expr, AExpr) msg); +static ColumnRef * _readColumnRef(OUT_TYPE(ColumnRef, ColumnRef) msg); +static ParamRef * _readParamRef(OUT_TYPE(ParamRef, ParamRef) msg); +static A_Const * _readAConst(OUT_TYPE(A_Const, AConst) msg); +static FuncCall * _readFuncCall(OUT_TYPE(FuncCall, FuncCall) msg); +static A_Star * _readAStar(OUT_TYPE(A_Star, AStar) msg); +static A_Indices * _readAIndices(OUT_TYPE(A_Indices, AIndices) msg); +static A_Indirection * _readAIndirection(OUT_TYPE(A_Indirection, AIndirection) msg); +static A_ArrayExpr * _readAArrayExpr(OUT_TYPE(A_ArrayExpr, AArrayExpr) msg); +static ResTarget * _readResTarget(OUT_TYPE(ResTarget, ResTarget) msg); +static MultiAssignRef * _readMultiAssignRef(OUT_TYPE(MultiAssignRef, MultiAssignRef) msg); +static TypeCast * _readTypeCast(OUT_TYPE(TypeCast, TypeCast) msg); +static CollateClause * _readCollateClause(OUT_TYPE(CollateClause, CollateClause) msg); +static SortBy * _readSortBy(OUT_TYPE(SortBy, SortBy) msg); +static WindowDef * _readWindowDef(OUT_TYPE(WindowDef, WindowDef) msg); +static RangeSubselect * _readRangeSubselect(OUT_TYPE(RangeSubselect, RangeSubselect) msg); +static RangeFunction * _readRangeFunction(OUT_TYPE(RangeFunction, RangeFunction) msg); +static RangeTableSample * _readRangeTableSample(OUT_TYPE(RangeTableSample, RangeTableSample) msg); +static RangeTableFunc * _readRangeTableFunc(OUT_TYPE(RangeTableFunc, RangeTableFunc) msg); +static RangeTableFuncCol * _readRangeTableFuncCol(OUT_TYPE(RangeTableFuncCol, RangeTableFuncCol) msg); +static TypeName * _readTypeName(OUT_TYPE(TypeName, TypeName) msg); +static ColumnDef * _readColumnDef(OUT_TYPE(ColumnDef, ColumnDef) msg); +static IndexElem * _readIndexElem(OUT_TYPE(IndexElem, IndexElem) msg); +static Constraint * _readConstraint(OUT_TYPE(Constraint, Constraint) msg); +static DefElem * _readDefElem(OUT_TYPE(DefElem, DefElem) msg); +static RangeTblEntry * _readRangeTblEntry(OUT_TYPE(RangeTblEntry, RangeTblEntry) msg); +static RangeTblFunction * _readRangeTblFunction(OUT_TYPE(RangeTblFunction, RangeTblFunction) msg); +static TableSampleClause * _readTableSampleClause(OUT_TYPE(TableSampleClause, TableSampleClause) msg); +static WithCheckOption * _readWithCheckOption(OUT_TYPE(WithCheckOption, WithCheckOption) msg); +static SortGroupClause * _readSortGroupClause(OUT_TYPE(SortGroupClause, SortGroupClause) msg); +static GroupingSet * _readGroupingSet(OUT_TYPE(GroupingSet, GroupingSet) msg); +static WindowClause * _readWindowClause(OUT_TYPE(WindowClause, WindowClause) msg); +static ObjectWithArgs * _readObjectWithArgs(OUT_TYPE(ObjectWithArgs, ObjectWithArgs) msg); +static AccessPriv * _readAccessPriv(OUT_TYPE(AccessPriv, AccessPriv) msg); +static CreateOpClassItem * _readCreateOpClassItem(OUT_TYPE(CreateOpClassItem, CreateOpClassItem) msg); +static TableLikeClause * _readTableLikeClause(OUT_TYPE(TableLikeClause, TableLikeClause) msg); +static FunctionParameter * _readFunctionParameter(OUT_TYPE(FunctionParameter, FunctionParameter) msg); +static LockingClause * _readLockingClause(OUT_TYPE(LockingClause, LockingClause) msg); +static RowMarkClause * _readRowMarkClause(OUT_TYPE(RowMarkClause, RowMarkClause) msg); +static XmlSerialize * _readXmlSerialize(OUT_TYPE(XmlSerialize, XmlSerialize) msg); +static WithClause * _readWithClause(OUT_TYPE(WithClause, WithClause) msg); +static InferClause * _readInferClause(OUT_TYPE(InferClause, InferClause) msg); +static OnConflictClause * _readOnConflictClause(OUT_TYPE(OnConflictClause, OnConflictClause) msg); +static CommonTableExpr * _readCommonTableExpr(OUT_TYPE(CommonTableExpr, CommonTableExpr) msg); +static RoleSpec * _readRoleSpec(OUT_TYPE(RoleSpec, RoleSpec) msg); +static TriggerTransition * _readTriggerTransition(OUT_TYPE(TriggerTransition, TriggerTransition) msg); +static PartitionElem * _readPartitionElem(OUT_TYPE(PartitionElem, PartitionElem) msg); +static PartitionSpec * _readPartitionSpec(OUT_TYPE(PartitionSpec, PartitionSpec) msg); +static PartitionBoundSpec * _readPartitionBoundSpec(OUT_TYPE(PartitionBoundSpec, PartitionBoundSpec) msg); +static PartitionRangeDatum * _readPartitionRangeDatum(OUT_TYPE(PartitionRangeDatum, PartitionRangeDatum) msg); +static PartitionCmd * _readPartitionCmd(OUT_TYPE(PartitionCmd, PartitionCmd) msg); +static VacuumRelation * _readVacuumRelation(OUT_TYPE(VacuumRelation, VacuumRelation) msg); +static InlineCodeBlock * _readInlineCodeBlock(OUT_TYPE(InlineCodeBlock, InlineCodeBlock) msg); +static CallContext * _readCallContext(OUT_TYPE(CallContext, CallContext) msg); + + +static Alias * +_readAlias(OUT_TYPE(Alias, Alias) msg) +{ + Alias *node = makeNode(Alias); + READ_STRING_FIELD(aliasname, aliasname, aliasname); + READ_LIST_FIELD(colnames, colnames, colnames); + return node; +} + +static RangeVar * +_readRangeVar(OUT_TYPE(RangeVar, RangeVar) msg) +{ + RangeVar *node = makeNode(RangeVar); + READ_STRING_FIELD(catalogname, catalogname, catalogname); + READ_STRING_FIELD(schemaname, schemaname, schemaname); + READ_STRING_FIELD(relname, relname, relname); + READ_BOOL_FIELD(inh, inh, inh); + READ_CHAR_FIELD(relpersistence, relpersistence, relpersistence); + READ_SPECIFIC_NODE_PTR_FIELD(Alias, alias, alias, alias, alias); + READ_INT_FIELD(location, location, location); + return node; +} + +static TableFunc * +_readTableFunc(OUT_TYPE(TableFunc, TableFunc) msg) +{ + TableFunc *node = makeNode(TableFunc); + READ_LIST_FIELD(ns_uris, ns_uris, ns_uris); + READ_LIST_FIELD(ns_names, ns_names, ns_names); + READ_NODE_PTR_FIELD(docexpr, docexpr, docexpr); + READ_NODE_PTR_FIELD(rowexpr, rowexpr, rowexpr); + READ_LIST_FIELD(colnames, colnames, colnames); + READ_LIST_FIELD(coltypes, coltypes, coltypes); + READ_LIST_FIELD(coltypmods, coltypmods, coltypmods); + READ_LIST_FIELD(colcollations, colcollations, colcollations); + READ_LIST_FIELD(colexprs, colexprs, colexprs); + READ_LIST_FIELD(coldefexprs, coldefexprs, coldefexprs); + READ_BITMAPSET_FIELD(notnulls, notnulls, notnulls); + READ_INT_FIELD(ordinalitycol, ordinalitycol, ordinalitycol); + READ_INT_FIELD(location, location, location); + return node; +} + +static Expr * +_readExpr(OUT_TYPE(Expr, Expr) msg) +{ + Expr *node = makeNode(Expr); + return node; +} + +static Var * +_readVar(OUT_TYPE(Var, Var) msg) +{ + Var *node = makeNode(Var); + READ_UINT_FIELD(varno, varno, varno); + READ_INT_FIELD(varattno, varattno, varattno); + READ_UINT_FIELD(vartype, vartype, vartype); + READ_INT_FIELD(vartypmod, vartypmod, vartypmod); + READ_UINT_FIELD(varcollid, varcollid, varcollid); + READ_UINT_FIELD(varlevelsup, varlevelsup, varlevelsup); + READ_UINT_FIELD(varnosyn, varnosyn, varnosyn); + READ_INT_FIELD(varattnosyn, varattnosyn, varattnosyn); + READ_INT_FIELD(location, location, location); + return node; +} + +static Param * +_readParam(OUT_TYPE(Param, Param) msg) +{ + Param *node = makeNode(Param); + READ_ENUM_FIELD(ParamKind, paramkind, paramkind, paramkind); + READ_INT_FIELD(paramid, paramid, paramid); + READ_UINT_FIELD(paramtype, paramtype, paramtype); + READ_INT_FIELD(paramtypmod, paramtypmod, paramtypmod); + READ_UINT_FIELD(paramcollid, paramcollid, paramcollid); + READ_INT_FIELD(location, location, location); + return node; +} + +static Aggref * +_readAggref(OUT_TYPE(Aggref, Aggref) msg) +{ + Aggref *node = makeNode(Aggref); + READ_UINT_FIELD(aggfnoid, aggfnoid, aggfnoid); + READ_UINT_FIELD(aggtype, aggtype, aggtype); + READ_UINT_FIELD(aggcollid, aggcollid, aggcollid); + READ_UINT_FIELD(inputcollid, inputcollid, inputcollid); + READ_UINT_FIELD(aggtranstype, aggtranstype, aggtranstype); + READ_LIST_FIELD(aggargtypes, aggargtypes, aggargtypes); + READ_LIST_FIELD(aggdirectargs, aggdirectargs, aggdirectargs); + READ_LIST_FIELD(args, args, args); + READ_LIST_FIELD(aggorder, aggorder, aggorder); + READ_LIST_FIELD(aggdistinct, aggdistinct, aggdistinct); + READ_EXPR_PTR_FIELD(aggfilter, aggfilter, aggfilter); + READ_BOOL_FIELD(aggstar, aggstar, aggstar); + READ_BOOL_FIELD(aggvariadic, aggvariadic, aggvariadic); + READ_CHAR_FIELD(aggkind, aggkind, aggkind); + READ_UINT_FIELD(agglevelsup, agglevelsup, agglevelsup); + READ_ENUM_FIELD(AggSplit, aggsplit, aggsplit, aggsplit); + READ_INT_FIELD(location, location, location); + return node; +} + +static GroupingFunc * +_readGroupingFunc(OUT_TYPE(GroupingFunc, GroupingFunc) msg) +{ + GroupingFunc *node = makeNode(GroupingFunc); + READ_LIST_FIELD(args, args, args); + READ_LIST_FIELD(refs, refs, refs); + READ_LIST_FIELD(cols, cols, cols); + READ_UINT_FIELD(agglevelsup, agglevelsup, agglevelsup); + READ_INT_FIELD(location, location, location); + return node; +} + +static WindowFunc * +_readWindowFunc(OUT_TYPE(WindowFunc, WindowFunc) msg) +{ + WindowFunc *node = makeNode(WindowFunc); + READ_UINT_FIELD(winfnoid, winfnoid, winfnoid); + READ_UINT_FIELD(wintype, wintype, wintype); + READ_UINT_FIELD(wincollid, wincollid, wincollid); + READ_UINT_FIELD(inputcollid, inputcollid, inputcollid); + READ_LIST_FIELD(args, args, args); + READ_EXPR_PTR_FIELD(aggfilter, aggfilter, aggfilter); + READ_UINT_FIELD(winref, winref, winref); + READ_BOOL_FIELD(winstar, winstar, winstar); + READ_BOOL_FIELD(winagg, winagg, winagg); + READ_INT_FIELD(location, location, location); + return node; +} + +static SubscriptingRef * +_readSubscriptingRef(OUT_TYPE(SubscriptingRef, SubscriptingRef) msg) +{ + SubscriptingRef *node = makeNode(SubscriptingRef); + READ_UINT_FIELD(refcontainertype, refcontainertype, refcontainertype); + READ_UINT_FIELD(refelemtype, refelemtype, refelemtype); + READ_INT_FIELD(reftypmod, reftypmod, reftypmod); + READ_UINT_FIELD(refcollid, refcollid, refcollid); + READ_LIST_FIELD(refupperindexpr, refupperindexpr, refupperindexpr); + READ_LIST_FIELD(reflowerindexpr, reflowerindexpr, reflowerindexpr); + READ_EXPR_PTR_FIELD(refexpr, refexpr, refexpr); + READ_EXPR_PTR_FIELD(refassgnexpr, refassgnexpr, refassgnexpr); + return node; +} + +static FuncExpr * +_readFuncExpr(OUT_TYPE(FuncExpr, FuncExpr) msg) +{ + FuncExpr *node = makeNode(FuncExpr); + READ_UINT_FIELD(funcid, funcid, funcid); + READ_UINT_FIELD(funcresulttype, funcresulttype, funcresulttype); + READ_BOOL_FIELD(funcretset, funcretset, funcretset); + READ_BOOL_FIELD(funcvariadic, funcvariadic, funcvariadic); + READ_ENUM_FIELD(CoercionForm, funcformat, funcformat, funcformat); + READ_UINT_FIELD(funccollid, funccollid, funccollid); + READ_UINT_FIELD(inputcollid, inputcollid, inputcollid); + READ_LIST_FIELD(args, args, args); + READ_INT_FIELD(location, location, location); + return node; +} + +static NamedArgExpr * +_readNamedArgExpr(OUT_TYPE(NamedArgExpr, NamedArgExpr) msg) +{ + NamedArgExpr *node = makeNode(NamedArgExpr); + READ_EXPR_PTR_FIELD(arg, arg, arg); + READ_STRING_FIELD(name, name, name); + READ_INT_FIELD(argnumber, argnumber, argnumber); + READ_INT_FIELD(location, location, location); + return node; +} + +static OpExpr * +_readOpExpr(OUT_TYPE(OpExpr, OpExpr) msg) +{ + OpExpr *node = makeNode(OpExpr); + READ_UINT_FIELD(opno, opno, opno); + READ_UINT_FIELD(opfuncid, opfuncid, opfuncid); + READ_UINT_FIELD(opresulttype, opresulttype, opresulttype); + READ_BOOL_FIELD(opretset, opretset, opretset); + READ_UINT_FIELD(opcollid, opcollid, opcollid); + READ_UINT_FIELD(inputcollid, inputcollid, inputcollid); + READ_LIST_FIELD(args, args, args); + READ_INT_FIELD(location, location, location); + return node; +} + +static DistinctExpr * +_readDistinctExpr(OUT_TYPE(DistinctExpr, DistinctExpr) msg) +{ + DistinctExpr *node = makeNode(DistinctExpr); + READ_UINT_FIELD(opno, opno, opno); + READ_UINT_FIELD(opfuncid, opfuncid, opfuncid); + READ_UINT_FIELD(opresulttype, opresulttype, opresulttype); + READ_BOOL_FIELD(opretset, opretset, opretset); + READ_UINT_FIELD(opcollid, opcollid, opcollid); + READ_UINT_FIELD(inputcollid, inputcollid, inputcollid); + READ_LIST_FIELD(args, args, args); + READ_INT_FIELD(location, location, location); + return node; +} + +static NullIfExpr * +_readNullIfExpr(OUT_TYPE(NullIfExpr, NullIfExpr) msg) +{ + NullIfExpr *node = makeNode(NullIfExpr); + READ_UINT_FIELD(opno, opno, opno); + READ_UINT_FIELD(opfuncid, opfuncid, opfuncid); + READ_UINT_FIELD(opresulttype, opresulttype, opresulttype); + READ_BOOL_FIELD(opretset, opretset, opretset); + READ_UINT_FIELD(opcollid, opcollid, opcollid); + READ_UINT_FIELD(inputcollid, inputcollid, inputcollid); + READ_LIST_FIELD(args, args, args); + READ_INT_FIELD(location, location, location); + return node; +} + +static ScalarArrayOpExpr * +_readScalarArrayOpExpr(OUT_TYPE(ScalarArrayOpExpr, ScalarArrayOpExpr) msg) +{ + ScalarArrayOpExpr *node = makeNode(ScalarArrayOpExpr); + READ_UINT_FIELD(opno, opno, opno); + READ_UINT_FIELD(opfuncid, opfuncid, opfuncid); + READ_BOOL_FIELD(use_or, useOr, useOr); + READ_UINT_FIELD(inputcollid, inputcollid, inputcollid); + READ_LIST_FIELD(args, args, args); + READ_INT_FIELD(location, location, location); + return node; +} + +static BoolExpr * +_readBoolExpr(OUT_TYPE(BoolExpr, BoolExpr) msg) +{ + BoolExpr *node = makeNode(BoolExpr); + READ_ENUM_FIELD(BoolExprType, boolop, boolop, boolop); + READ_LIST_FIELD(args, args, args); + READ_INT_FIELD(location, location, location); + return node; +} + +static SubLink * +_readSubLink(OUT_TYPE(SubLink, SubLink) msg) +{ + SubLink *node = makeNode(SubLink); + READ_ENUM_FIELD(SubLinkType, sub_link_type, subLinkType, subLinkType); + READ_INT_FIELD(sub_link_id, subLinkId, subLinkId); + READ_NODE_PTR_FIELD(testexpr, testexpr, testexpr); + READ_LIST_FIELD(oper_name, operName, operName); + READ_NODE_PTR_FIELD(subselect, subselect, subselect); + READ_INT_FIELD(location, location, location); + return node; +} + +static SubPlan * +_readSubPlan(OUT_TYPE(SubPlan, SubPlan) msg) +{ + SubPlan *node = makeNode(SubPlan); + READ_ENUM_FIELD(SubLinkType, sub_link_type, subLinkType, subLinkType); + READ_NODE_PTR_FIELD(testexpr, testexpr, testexpr); + READ_LIST_FIELD(param_ids, paramIds, paramIds); + READ_INT_FIELD(plan_id, plan_id, plan_id); + READ_STRING_FIELD(plan_name, plan_name, plan_name); + READ_UINT_FIELD(first_col_type, firstColType, firstColType); + READ_INT_FIELD(first_col_typmod, firstColTypmod, firstColTypmod); + READ_UINT_FIELD(first_col_collation, firstColCollation, firstColCollation); + READ_BOOL_FIELD(use_hash_table, useHashTable, useHashTable); + READ_BOOL_FIELD(unknown_eq_false, unknownEqFalse, unknownEqFalse); + READ_BOOL_FIELD(parallel_safe, parallel_safe, parallel_safe); + READ_LIST_FIELD(set_param, setParam, setParam); + READ_LIST_FIELD(par_param, parParam, parParam); + READ_LIST_FIELD(args, args, args); + READ_FLOAT_FIELD(startup_cost, startup_cost, startup_cost); + READ_FLOAT_FIELD(per_call_cost, per_call_cost, per_call_cost); + return node; +} + +static AlternativeSubPlan * +_readAlternativeSubPlan(OUT_TYPE(AlternativeSubPlan, AlternativeSubPlan) msg) +{ + AlternativeSubPlan *node = makeNode(AlternativeSubPlan); + READ_LIST_FIELD(subplans, subplans, subplans); + return node; +} + +static FieldSelect * +_readFieldSelect(OUT_TYPE(FieldSelect, FieldSelect) msg) +{ + FieldSelect *node = makeNode(FieldSelect); + READ_EXPR_PTR_FIELD(arg, arg, arg); + READ_INT_FIELD(fieldnum, fieldnum, fieldnum); + READ_UINT_FIELD(resulttype, resulttype, resulttype); + READ_INT_FIELD(resulttypmod, resulttypmod, resulttypmod); + READ_UINT_FIELD(resultcollid, resultcollid, resultcollid); + return node; +} + +static FieldStore * +_readFieldStore(OUT_TYPE(FieldStore, FieldStore) msg) +{ + FieldStore *node = makeNode(FieldStore); + READ_EXPR_PTR_FIELD(arg, arg, arg); + READ_LIST_FIELD(newvals, newvals, newvals); + READ_LIST_FIELD(fieldnums, fieldnums, fieldnums); + READ_UINT_FIELD(resulttype, resulttype, resulttype); + return node; +} + +static RelabelType * +_readRelabelType(OUT_TYPE(RelabelType, RelabelType) msg) +{ + RelabelType *node = makeNode(RelabelType); + READ_EXPR_PTR_FIELD(arg, arg, arg); + READ_UINT_FIELD(resulttype, resulttype, resulttype); + READ_INT_FIELD(resulttypmod, resulttypmod, resulttypmod); + READ_UINT_FIELD(resultcollid, resultcollid, resultcollid); + READ_ENUM_FIELD(CoercionForm, relabelformat, relabelformat, relabelformat); + READ_INT_FIELD(location, location, location); + return node; +} + +static CoerceViaIO * +_readCoerceViaIO(OUT_TYPE(CoerceViaIO, CoerceViaIO) msg) +{ + CoerceViaIO *node = makeNode(CoerceViaIO); + READ_EXPR_PTR_FIELD(arg, arg, arg); + READ_UINT_FIELD(resulttype, resulttype, resulttype); + READ_UINT_FIELD(resultcollid, resultcollid, resultcollid); + READ_ENUM_FIELD(CoercionForm, coerceformat, coerceformat, coerceformat); + READ_INT_FIELD(location, location, location); + return node; +} + +static ArrayCoerceExpr * +_readArrayCoerceExpr(OUT_TYPE(ArrayCoerceExpr, ArrayCoerceExpr) msg) +{ + ArrayCoerceExpr *node = makeNode(ArrayCoerceExpr); + READ_EXPR_PTR_FIELD(arg, arg, arg); + READ_EXPR_PTR_FIELD(elemexpr, elemexpr, elemexpr); + READ_UINT_FIELD(resulttype, resulttype, resulttype); + READ_INT_FIELD(resulttypmod, resulttypmod, resulttypmod); + READ_UINT_FIELD(resultcollid, resultcollid, resultcollid); + READ_ENUM_FIELD(CoercionForm, coerceformat, coerceformat, coerceformat); + READ_INT_FIELD(location, location, location); + return node; +} + +static ConvertRowtypeExpr * +_readConvertRowtypeExpr(OUT_TYPE(ConvertRowtypeExpr, ConvertRowtypeExpr) msg) +{ + ConvertRowtypeExpr *node = makeNode(ConvertRowtypeExpr); + READ_EXPR_PTR_FIELD(arg, arg, arg); + READ_UINT_FIELD(resulttype, resulttype, resulttype); + READ_ENUM_FIELD(CoercionForm, convertformat, convertformat, convertformat); + READ_INT_FIELD(location, location, location); + return node; +} + +static CollateExpr * +_readCollateExpr(OUT_TYPE(CollateExpr, CollateExpr) msg) +{ + CollateExpr *node = makeNode(CollateExpr); + READ_EXPR_PTR_FIELD(arg, arg, arg); + READ_UINT_FIELD(coll_oid, collOid, collOid); + READ_INT_FIELD(location, location, location); + return node; +} + +static CaseExpr * +_readCaseExpr(OUT_TYPE(CaseExpr, CaseExpr) msg) +{ + CaseExpr *node = makeNode(CaseExpr); + READ_UINT_FIELD(casetype, casetype, casetype); + READ_UINT_FIELD(casecollid, casecollid, casecollid); + READ_EXPR_PTR_FIELD(arg, arg, arg); + READ_LIST_FIELD(args, args, args); + READ_EXPR_PTR_FIELD(defresult, defresult, defresult); + READ_INT_FIELD(location, location, location); + return node; +} + +static CaseWhen * +_readCaseWhen(OUT_TYPE(CaseWhen, CaseWhen) msg) +{ + CaseWhen *node = makeNode(CaseWhen); + READ_EXPR_PTR_FIELD(expr, expr, expr); + READ_EXPR_PTR_FIELD(result, result, result); + READ_INT_FIELD(location, location, location); + return node; +} + +static CaseTestExpr * +_readCaseTestExpr(OUT_TYPE(CaseTestExpr, CaseTestExpr) msg) +{ + CaseTestExpr *node = makeNode(CaseTestExpr); + READ_UINT_FIELD(type_id, typeId, typeId); + READ_INT_FIELD(type_mod, typeMod, typeMod); + READ_UINT_FIELD(collation, collation, collation); + return node; +} + +static ArrayExpr * +_readArrayExpr(OUT_TYPE(ArrayExpr, ArrayExpr) msg) +{ + ArrayExpr *node = makeNode(ArrayExpr); + READ_UINT_FIELD(array_typeid, array_typeid, array_typeid); + READ_UINT_FIELD(array_collid, array_collid, array_collid); + READ_UINT_FIELD(element_typeid, element_typeid, element_typeid); + READ_LIST_FIELD(elements, elements, elements); + READ_BOOL_FIELD(multidims, multidims, multidims); + READ_INT_FIELD(location, location, location); + return node; +} + +static RowExpr * +_readRowExpr(OUT_TYPE(RowExpr, RowExpr) msg) +{ + RowExpr *node = makeNode(RowExpr); + READ_LIST_FIELD(args, args, args); + READ_UINT_FIELD(row_typeid, row_typeid, row_typeid); + READ_ENUM_FIELD(CoercionForm, row_format, row_format, row_format); + READ_LIST_FIELD(colnames, colnames, colnames); + READ_INT_FIELD(location, location, location); + return node; +} + +static RowCompareExpr * +_readRowCompareExpr(OUT_TYPE(RowCompareExpr, RowCompareExpr) msg) +{ + RowCompareExpr *node = makeNode(RowCompareExpr); + READ_ENUM_FIELD(RowCompareType, rctype, rctype, rctype); + READ_LIST_FIELD(opnos, opnos, opnos); + READ_LIST_FIELD(opfamilies, opfamilies, opfamilies); + READ_LIST_FIELD(inputcollids, inputcollids, inputcollids); + READ_LIST_FIELD(largs, largs, largs); + READ_LIST_FIELD(rargs, rargs, rargs); + return node; +} + +static CoalesceExpr * +_readCoalesceExpr(OUT_TYPE(CoalesceExpr, CoalesceExpr) msg) +{ + CoalesceExpr *node = makeNode(CoalesceExpr); + READ_UINT_FIELD(coalescetype, coalescetype, coalescetype); + READ_UINT_FIELD(coalescecollid, coalescecollid, coalescecollid); + READ_LIST_FIELD(args, args, args); + READ_INT_FIELD(location, location, location); + return node; +} + +static MinMaxExpr * +_readMinMaxExpr(OUT_TYPE(MinMaxExpr, MinMaxExpr) msg) +{ + MinMaxExpr *node = makeNode(MinMaxExpr); + READ_UINT_FIELD(minmaxtype, minmaxtype, minmaxtype); + READ_UINT_FIELD(minmaxcollid, minmaxcollid, minmaxcollid); + READ_UINT_FIELD(inputcollid, inputcollid, inputcollid); + READ_ENUM_FIELD(MinMaxOp, op, op, op); + READ_LIST_FIELD(args, args, args); + READ_INT_FIELD(location, location, location); + return node; +} + +static SQLValueFunction * +_readSQLValueFunction(OUT_TYPE(SQLValueFunction, SQLValueFunction) msg) +{ + SQLValueFunction *node = makeNode(SQLValueFunction); + READ_ENUM_FIELD(SQLValueFunctionOp, op, op, op); + READ_UINT_FIELD(type, type, type); + READ_INT_FIELD(typmod, typmod, typmod); + READ_INT_FIELD(location, location, location); + return node; +} + +static XmlExpr * +_readXmlExpr(OUT_TYPE(XmlExpr, XmlExpr) msg) +{ + XmlExpr *node = makeNode(XmlExpr); + READ_ENUM_FIELD(XmlExprOp, op, op, op); + READ_STRING_FIELD(name, name, name); + READ_LIST_FIELD(named_args, named_args, named_args); + READ_LIST_FIELD(arg_names, arg_names, arg_names); + READ_LIST_FIELD(args, args, args); + READ_ENUM_FIELD(XmlOptionType, xmloption, xmloption, xmloption); + READ_UINT_FIELD(type, type, type); + READ_INT_FIELD(typmod, typmod, typmod); + READ_INT_FIELD(location, location, location); + return node; +} + +static NullTest * +_readNullTest(OUT_TYPE(NullTest, NullTest) msg) +{ + NullTest *node = makeNode(NullTest); + READ_EXPR_PTR_FIELD(arg, arg, arg); + READ_ENUM_FIELD(NullTestType, nulltesttype, nulltesttype, nulltesttype); + READ_BOOL_FIELD(argisrow, argisrow, argisrow); + READ_INT_FIELD(location, location, location); + return node; +} + +static BooleanTest * +_readBooleanTest(OUT_TYPE(BooleanTest, BooleanTest) msg) +{ + BooleanTest *node = makeNode(BooleanTest); + READ_EXPR_PTR_FIELD(arg, arg, arg); + READ_ENUM_FIELD(BoolTestType, booltesttype, booltesttype, booltesttype); + READ_INT_FIELD(location, location, location); + return node; +} + +static CoerceToDomain * +_readCoerceToDomain(OUT_TYPE(CoerceToDomain, CoerceToDomain) msg) +{ + CoerceToDomain *node = makeNode(CoerceToDomain); + READ_EXPR_PTR_FIELD(arg, arg, arg); + READ_UINT_FIELD(resulttype, resulttype, resulttype); + READ_INT_FIELD(resulttypmod, resulttypmod, resulttypmod); + READ_UINT_FIELD(resultcollid, resultcollid, resultcollid); + READ_ENUM_FIELD(CoercionForm, coercionformat, coercionformat, coercionformat); + READ_INT_FIELD(location, location, location); + return node; +} + +static CoerceToDomainValue * +_readCoerceToDomainValue(OUT_TYPE(CoerceToDomainValue, CoerceToDomainValue) msg) +{ + CoerceToDomainValue *node = makeNode(CoerceToDomainValue); + READ_UINT_FIELD(type_id, typeId, typeId); + READ_INT_FIELD(type_mod, typeMod, typeMod); + READ_UINT_FIELD(collation, collation, collation); + READ_INT_FIELD(location, location, location); + return node; +} + +static SetToDefault * +_readSetToDefault(OUT_TYPE(SetToDefault, SetToDefault) msg) +{ + SetToDefault *node = makeNode(SetToDefault); + READ_UINT_FIELD(type_id, typeId, typeId); + READ_INT_FIELD(type_mod, typeMod, typeMod); + READ_UINT_FIELD(collation, collation, collation); + READ_INT_FIELD(location, location, location); + return node; +} + +static CurrentOfExpr * +_readCurrentOfExpr(OUT_TYPE(CurrentOfExpr, CurrentOfExpr) msg) +{ + CurrentOfExpr *node = makeNode(CurrentOfExpr); + READ_UINT_FIELD(cvarno, cvarno, cvarno); + READ_STRING_FIELD(cursor_name, cursor_name, cursor_name); + READ_INT_FIELD(cursor_param, cursor_param, cursor_param); + return node; +} + +static NextValueExpr * +_readNextValueExpr(OUT_TYPE(NextValueExpr, NextValueExpr) msg) +{ + NextValueExpr *node = makeNode(NextValueExpr); + READ_UINT_FIELD(seqid, seqid, seqid); + READ_UINT_FIELD(type_id, typeId, typeId); + return node; +} + +static InferenceElem * +_readInferenceElem(OUT_TYPE(InferenceElem, InferenceElem) msg) +{ + InferenceElem *node = makeNode(InferenceElem); + READ_NODE_PTR_FIELD(expr, expr, expr); + READ_UINT_FIELD(infercollid, infercollid, infercollid); + READ_UINT_FIELD(inferopclass, inferopclass, inferopclass); + return node; +} + +static TargetEntry * +_readTargetEntry(OUT_TYPE(TargetEntry, TargetEntry) msg) +{ + TargetEntry *node = makeNode(TargetEntry); + READ_EXPR_PTR_FIELD(expr, expr, expr); + READ_INT_FIELD(resno, resno, resno); + READ_STRING_FIELD(resname, resname, resname); + READ_UINT_FIELD(ressortgroupref, ressortgroupref, ressortgroupref); + READ_UINT_FIELD(resorigtbl, resorigtbl, resorigtbl); + READ_INT_FIELD(resorigcol, resorigcol, resorigcol); + READ_BOOL_FIELD(resjunk, resjunk, resjunk); + return node; +} + +static RangeTblRef * +_readRangeTblRef(OUT_TYPE(RangeTblRef, RangeTblRef) msg) +{ + RangeTblRef *node = makeNode(RangeTblRef); + READ_INT_FIELD(rtindex, rtindex, rtindex); + return node; +} + +static JoinExpr * +_readJoinExpr(OUT_TYPE(JoinExpr, JoinExpr) msg) +{ + JoinExpr *node = makeNode(JoinExpr); + READ_ENUM_FIELD(JoinType, jointype, jointype, jointype); + READ_BOOL_FIELD(is_natural, isNatural, isNatural); + READ_NODE_PTR_FIELD(larg, larg, larg); + READ_NODE_PTR_FIELD(rarg, rarg, rarg); + READ_LIST_FIELD(using_clause, usingClause, usingClause); + READ_NODE_PTR_FIELD(quals, quals, quals); + READ_SPECIFIC_NODE_PTR_FIELD(Alias, alias, alias, alias, alias); + READ_INT_FIELD(rtindex, rtindex, rtindex); + return node; +} + +static FromExpr * +_readFromExpr(OUT_TYPE(FromExpr, FromExpr) msg) +{ + FromExpr *node = makeNode(FromExpr); + READ_LIST_FIELD(fromlist, fromlist, fromlist); + READ_NODE_PTR_FIELD(quals, quals, quals); + return node; +} + +static OnConflictExpr * +_readOnConflictExpr(OUT_TYPE(OnConflictExpr, OnConflictExpr) msg) +{ + OnConflictExpr *node = makeNode(OnConflictExpr); + READ_ENUM_FIELD(OnConflictAction, action, action, action); + READ_LIST_FIELD(arbiter_elems, arbiterElems, arbiterElems); + READ_NODE_PTR_FIELD(arbiter_where, arbiterWhere, arbiterWhere); + READ_UINT_FIELD(constraint, constraint, constraint); + READ_LIST_FIELD(on_conflict_set, onConflictSet, onConflictSet); + READ_NODE_PTR_FIELD(on_conflict_where, onConflictWhere, onConflictWhere); + READ_INT_FIELD(excl_rel_index, exclRelIndex, exclRelIndex); + READ_LIST_FIELD(excl_rel_tlist, exclRelTlist, exclRelTlist); + return node; +} + +static IntoClause * +_readIntoClause(OUT_TYPE(IntoClause, IntoClause) msg) +{ + IntoClause *node = makeNode(IntoClause); + READ_SPECIFIC_NODE_PTR_FIELD(RangeVar, range_var, rel, rel, rel); + READ_LIST_FIELD(col_names, colNames, colNames); + READ_STRING_FIELD(access_method, accessMethod, accessMethod); + READ_LIST_FIELD(options, options, options); + READ_ENUM_FIELD(OnCommitAction, on_commit, onCommit, onCommit); + READ_STRING_FIELD(table_space_name, tableSpaceName, tableSpaceName); + READ_NODE_PTR_FIELD(view_query, viewQuery, viewQuery); + READ_BOOL_FIELD(skip_data, skipData, skipData); + return node; +} + +static RawStmt * +_readRawStmt(OUT_TYPE(RawStmt, RawStmt) msg) +{ + RawStmt *node = makeNode(RawStmt); + READ_NODE_PTR_FIELD(stmt, stmt, stmt); + READ_INT_FIELD(stmt_location, stmt_location, stmt_location); + READ_INT_FIELD(stmt_len, stmt_len, stmt_len); + return node; +} + +static Query * +_readQuery(OUT_TYPE(Query, Query) msg) +{ + Query *node = makeNode(Query); + READ_ENUM_FIELD(CmdType, command_type, commandType, commandType); + READ_ENUM_FIELD(QuerySource, query_source, querySource, querySource); + READ_BOOL_FIELD(can_set_tag, canSetTag, canSetTag); + READ_NODE_PTR_FIELD(utility_stmt, utilityStmt, utilityStmt); + READ_INT_FIELD(result_relation, resultRelation, resultRelation); + READ_BOOL_FIELD(has_aggs, hasAggs, hasAggs); + READ_BOOL_FIELD(has_window_funcs, hasWindowFuncs, hasWindowFuncs); + READ_BOOL_FIELD(has_target_srfs, hasTargetSRFs, hasTargetSRFs); + READ_BOOL_FIELD(has_sub_links, hasSubLinks, hasSubLinks); + READ_BOOL_FIELD(has_distinct_on, hasDistinctOn, hasDistinctOn); + READ_BOOL_FIELD(has_recursive, hasRecursive, hasRecursive); + READ_BOOL_FIELD(has_modifying_cte, hasModifyingCTE, hasModifyingCTE); + READ_BOOL_FIELD(has_for_update, hasForUpdate, hasForUpdate); + READ_BOOL_FIELD(has_row_security, hasRowSecurity, hasRowSecurity); + READ_LIST_FIELD(cte_list, cteList, cteList); + READ_LIST_FIELD(rtable, rtable, rtable); + READ_SPECIFIC_NODE_PTR_FIELD(FromExpr, from_expr, jointree, jointree, jointree); + READ_LIST_FIELD(target_list, targetList, targetList); + READ_ENUM_FIELD(OverridingKind, override, override, override); + READ_SPECIFIC_NODE_PTR_FIELD(OnConflictExpr, on_conflict_expr, on_conflict, onConflict, onConflict); + READ_LIST_FIELD(returning_list, returningList, returningList); + READ_LIST_FIELD(group_clause, groupClause, groupClause); + READ_LIST_FIELD(grouping_sets, groupingSets, groupingSets); + READ_NODE_PTR_FIELD(having_qual, havingQual, havingQual); + READ_LIST_FIELD(window_clause, windowClause, windowClause); + READ_LIST_FIELD(distinct_clause, distinctClause, distinctClause); + READ_LIST_FIELD(sort_clause, sortClause, sortClause); + READ_NODE_PTR_FIELD(limit_offset, limitOffset, limitOffset); + READ_NODE_PTR_FIELD(limit_count, limitCount, limitCount); + READ_ENUM_FIELD(LimitOption, limit_option, limitOption, limitOption); + READ_LIST_FIELD(row_marks, rowMarks, rowMarks); + READ_NODE_PTR_FIELD(set_operations, setOperations, setOperations); + READ_LIST_FIELD(constraint_deps, constraintDeps, constraintDeps); + READ_LIST_FIELD(with_check_options, withCheckOptions, withCheckOptions); + READ_INT_FIELD(stmt_location, stmt_location, stmt_location); + READ_INT_FIELD(stmt_len, stmt_len, stmt_len); + return node; +} + +static InsertStmt * +_readInsertStmt(OUT_TYPE(InsertStmt, InsertStmt) msg) +{ + InsertStmt *node = makeNode(InsertStmt); + READ_SPECIFIC_NODE_PTR_FIELD(RangeVar, range_var, relation, relation, relation); + READ_LIST_FIELD(cols, cols, cols); + READ_NODE_PTR_FIELD(select_stmt, selectStmt, selectStmt); + READ_SPECIFIC_NODE_PTR_FIELD(OnConflictClause, on_conflict_clause, on_conflict_clause, onConflictClause, onConflictClause); + READ_LIST_FIELD(returning_list, returningList, returningList); + READ_SPECIFIC_NODE_PTR_FIELD(WithClause, with_clause, with_clause, withClause, withClause); + READ_ENUM_FIELD(OverridingKind, override, override, override); + return node; +} + +static DeleteStmt * +_readDeleteStmt(OUT_TYPE(DeleteStmt, DeleteStmt) msg) +{ + DeleteStmt *node = makeNode(DeleteStmt); + READ_SPECIFIC_NODE_PTR_FIELD(RangeVar, range_var, relation, relation, relation); + READ_LIST_FIELD(using_clause, usingClause, usingClause); + READ_NODE_PTR_FIELD(where_clause, whereClause, whereClause); + READ_LIST_FIELD(returning_list, returningList, returningList); + READ_SPECIFIC_NODE_PTR_FIELD(WithClause, with_clause, with_clause, withClause, withClause); + return node; +} + +static UpdateStmt * +_readUpdateStmt(OUT_TYPE(UpdateStmt, UpdateStmt) msg) +{ + UpdateStmt *node = makeNode(UpdateStmt); + READ_SPECIFIC_NODE_PTR_FIELD(RangeVar, range_var, relation, relation, relation); + READ_LIST_FIELD(target_list, targetList, targetList); + READ_NODE_PTR_FIELD(where_clause, whereClause, whereClause); + READ_LIST_FIELD(from_clause, fromClause, fromClause); + READ_LIST_FIELD(returning_list, returningList, returningList); + READ_SPECIFIC_NODE_PTR_FIELD(WithClause, with_clause, with_clause, withClause, withClause); + return node; +} + +static SelectStmt * +_readSelectStmt(OUT_TYPE(SelectStmt, SelectStmt) msg) +{ + SelectStmt *node = makeNode(SelectStmt); + READ_LIST_FIELD(distinct_clause, distinctClause, distinctClause); + READ_SPECIFIC_NODE_PTR_FIELD(IntoClause, into_clause, into_clause, intoClause, intoClause); + READ_LIST_FIELD(target_list, targetList, targetList); + READ_LIST_FIELD(from_clause, fromClause, fromClause); + READ_NODE_PTR_FIELD(where_clause, whereClause, whereClause); + READ_LIST_FIELD(group_clause, groupClause, groupClause); + READ_NODE_PTR_FIELD(having_clause, havingClause, havingClause); + READ_LIST_FIELD(window_clause, windowClause, windowClause); + READ_LIST_FIELD(values_lists, valuesLists, valuesLists); + READ_LIST_FIELD(sort_clause, sortClause, sortClause); + READ_NODE_PTR_FIELD(limit_offset, limitOffset, limitOffset); + READ_NODE_PTR_FIELD(limit_count, limitCount, limitCount); + READ_ENUM_FIELD(LimitOption, limit_option, limitOption, limitOption); + READ_LIST_FIELD(locking_clause, lockingClause, lockingClause); + READ_SPECIFIC_NODE_PTR_FIELD(WithClause, with_clause, with_clause, withClause, withClause); + READ_ENUM_FIELD(SetOperation, op, op, op); + READ_BOOL_FIELD(all, all, all); + READ_SPECIFIC_NODE_PTR_FIELD(SelectStmt, select_stmt, larg, larg, larg); + READ_SPECIFIC_NODE_PTR_FIELD(SelectStmt, select_stmt, rarg, rarg, rarg); + return node; +} + +static AlterTableStmt * +_readAlterTableStmt(OUT_TYPE(AlterTableStmt, AlterTableStmt) msg) +{ + AlterTableStmt *node = makeNode(AlterTableStmt); + READ_SPECIFIC_NODE_PTR_FIELD(RangeVar, range_var, relation, relation, relation); + READ_LIST_FIELD(cmds, cmds, cmds); + READ_ENUM_FIELD(ObjectType, relkind, relkind, relkind); + READ_BOOL_FIELD(missing_ok, missing_ok, missing_ok); + return node; +} + +static AlterTableCmd * +_readAlterTableCmd(OUT_TYPE(AlterTableCmd, AlterTableCmd) msg) +{ + AlterTableCmd *node = makeNode(AlterTableCmd); + READ_ENUM_FIELD(AlterTableType, subtype, subtype, subtype); + READ_STRING_FIELD(name, name, name); + READ_INT_FIELD(num, num, num); + READ_SPECIFIC_NODE_PTR_FIELD(RoleSpec, role_spec, newowner, newowner, newowner); + READ_NODE_PTR_FIELD(def, def, def); + READ_ENUM_FIELD(DropBehavior, behavior, behavior, behavior); + READ_BOOL_FIELD(missing_ok, missing_ok, missing_ok); + return node; +} + +static AlterDomainStmt * +_readAlterDomainStmt(OUT_TYPE(AlterDomainStmt, AlterDomainStmt) msg) +{ + AlterDomainStmt *node = makeNode(AlterDomainStmt); + READ_CHAR_FIELD(subtype, subtype, subtype); + READ_LIST_FIELD(type_name, typeName, typeName); + READ_STRING_FIELD(name, name, name); + READ_NODE_PTR_FIELD(def, def, def); + READ_ENUM_FIELD(DropBehavior, behavior, behavior, behavior); + READ_BOOL_FIELD(missing_ok, missing_ok, missing_ok); + return node; +} + +static SetOperationStmt * +_readSetOperationStmt(OUT_TYPE(SetOperationStmt, SetOperationStmt) msg) +{ + SetOperationStmt *node = makeNode(SetOperationStmt); + READ_ENUM_FIELD(SetOperation, op, op, op); + READ_BOOL_FIELD(all, all, all); + READ_NODE_PTR_FIELD(larg, larg, larg); + READ_NODE_PTR_FIELD(rarg, rarg, rarg); + READ_LIST_FIELD(col_types, colTypes, colTypes); + READ_LIST_FIELD(col_typmods, colTypmods, colTypmods); + READ_LIST_FIELD(col_collations, colCollations, colCollations); + READ_LIST_FIELD(group_clauses, groupClauses, groupClauses); + return node; +} + +static GrantStmt * +_readGrantStmt(OUT_TYPE(GrantStmt, GrantStmt) msg) +{ + GrantStmt *node = makeNode(GrantStmt); + READ_BOOL_FIELD(is_grant, is_grant, is_grant); + READ_ENUM_FIELD(GrantTargetType, targtype, targtype, targtype); + READ_ENUM_FIELD(ObjectType, objtype, objtype, objtype); + READ_LIST_FIELD(objects, objects, objects); + READ_LIST_FIELD(privileges, privileges, privileges); + READ_LIST_FIELD(grantees, grantees, grantees); + READ_BOOL_FIELD(grant_option, grant_option, grant_option); + READ_ENUM_FIELD(DropBehavior, behavior, behavior, behavior); + return node; +} + +static GrantRoleStmt * +_readGrantRoleStmt(OUT_TYPE(GrantRoleStmt, GrantRoleStmt) msg) +{ + GrantRoleStmt *node = makeNode(GrantRoleStmt); + READ_LIST_FIELD(granted_roles, granted_roles, granted_roles); + READ_LIST_FIELD(grantee_roles, grantee_roles, grantee_roles); + READ_BOOL_FIELD(is_grant, is_grant, is_grant); + READ_BOOL_FIELD(admin_opt, admin_opt, admin_opt); + READ_SPECIFIC_NODE_PTR_FIELD(RoleSpec, role_spec, grantor, grantor, grantor); + READ_ENUM_FIELD(DropBehavior, behavior, behavior, behavior); + return node; +} + +static AlterDefaultPrivilegesStmt * +_readAlterDefaultPrivilegesStmt(OUT_TYPE(AlterDefaultPrivilegesStmt, AlterDefaultPrivilegesStmt) msg) +{ + AlterDefaultPrivilegesStmt *node = makeNode(AlterDefaultPrivilegesStmt); + READ_LIST_FIELD(options, options, options); + READ_SPECIFIC_NODE_PTR_FIELD(GrantStmt, grant_stmt, action, action, action); + return node; +} + +static ClosePortalStmt * +_readClosePortalStmt(OUT_TYPE(ClosePortalStmt, ClosePortalStmt) msg) +{ + ClosePortalStmt *node = makeNode(ClosePortalStmt); + READ_STRING_FIELD(portalname, portalname, portalname); + return node; +} + +static ClusterStmt * +_readClusterStmt(OUT_TYPE(ClusterStmt, ClusterStmt) msg) +{ + ClusterStmt *node = makeNode(ClusterStmt); + READ_SPECIFIC_NODE_PTR_FIELD(RangeVar, range_var, relation, relation, relation); + READ_STRING_FIELD(indexname, indexname, indexname); + READ_INT_FIELD(options, options, options); + return node; +} + +static CopyStmt * +_readCopyStmt(OUT_TYPE(CopyStmt, CopyStmt) msg) +{ + CopyStmt *node = makeNode(CopyStmt); + READ_SPECIFIC_NODE_PTR_FIELD(RangeVar, range_var, relation, relation, relation); + READ_NODE_PTR_FIELD(query, query, query); + READ_LIST_FIELD(attlist, attlist, attlist); + READ_BOOL_FIELD(is_from, is_from, is_from); + READ_BOOL_FIELD(is_program, is_program, is_program); + READ_STRING_FIELD(filename, filename, filename); + READ_LIST_FIELD(options, options, options); + READ_NODE_PTR_FIELD(where_clause, whereClause, whereClause); + return node; +} + +static CreateStmt * +_readCreateStmt(OUT_TYPE(CreateStmt, CreateStmt) msg) +{ + CreateStmt *node = makeNode(CreateStmt); + READ_SPECIFIC_NODE_PTR_FIELD(RangeVar, range_var, relation, relation, relation); + READ_LIST_FIELD(table_elts, tableElts, tableElts); + READ_LIST_FIELD(inh_relations, inhRelations, inhRelations); + READ_SPECIFIC_NODE_PTR_FIELD(PartitionBoundSpec, partition_bound_spec, partbound, partbound, partbound); + READ_SPECIFIC_NODE_PTR_FIELD(PartitionSpec, partition_spec, partspec, partspec, partspec); + READ_SPECIFIC_NODE_PTR_FIELD(TypeName, type_name, of_typename, ofTypename, ofTypename); + READ_LIST_FIELD(constraints, constraints, constraints); + READ_LIST_FIELD(options, options, options); + READ_ENUM_FIELD(OnCommitAction, oncommit, oncommit, oncommit); + READ_STRING_FIELD(tablespacename, tablespacename, tablespacename); + READ_STRING_FIELD(access_method, accessMethod, accessMethod); + READ_BOOL_FIELD(if_not_exists, if_not_exists, if_not_exists); + return node; +} + +static DefineStmt * +_readDefineStmt(OUT_TYPE(DefineStmt, DefineStmt) msg) +{ + DefineStmt *node = makeNode(DefineStmt); + READ_ENUM_FIELD(ObjectType, kind, kind, kind); + READ_BOOL_FIELD(oldstyle, oldstyle, oldstyle); + READ_LIST_FIELD(defnames, defnames, defnames); + READ_LIST_FIELD(args, args, args); + READ_LIST_FIELD(definition, definition, definition); + READ_BOOL_FIELD(if_not_exists, if_not_exists, if_not_exists); + READ_BOOL_FIELD(replace, replace, replace); + return node; +} + +static DropStmt * +_readDropStmt(OUT_TYPE(DropStmt, DropStmt) msg) +{ + DropStmt *node = makeNode(DropStmt); + READ_LIST_FIELD(objects, objects, objects); + READ_ENUM_FIELD(ObjectType, remove_type, removeType, removeType); + READ_ENUM_FIELD(DropBehavior, behavior, behavior, behavior); + READ_BOOL_FIELD(missing_ok, missing_ok, missing_ok); + READ_BOOL_FIELD(concurrent, concurrent, concurrent); + return node; +} + +static TruncateStmt * +_readTruncateStmt(OUT_TYPE(TruncateStmt, TruncateStmt) msg) +{ + TruncateStmt *node = makeNode(TruncateStmt); + READ_LIST_FIELD(relations, relations, relations); + READ_BOOL_FIELD(restart_seqs, restart_seqs, restart_seqs); + READ_ENUM_FIELD(DropBehavior, behavior, behavior, behavior); + return node; +} + +static CommentStmt * +_readCommentStmt(OUT_TYPE(CommentStmt, CommentStmt) msg) +{ + CommentStmt *node = makeNode(CommentStmt); + READ_ENUM_FIELD(ObjectType, objtype, objtype, objtype); + READ_NODE_PTR_FIELD(object, object, object); + READ_STRING_FIELD(comment, comment, comment); + return node; +} + +static FetchStmt * +_readFetchStmt(OUT_TYPE(FetchStmt, FetchStmt) msg) +{ + FetchStmt *node = makeNode(FetchStmt); + READ_ENUM_FIELD(FetchDirection, direction, direction, direction); + READ_LONG_FIELD(how_many, howMany, howMany); + READ_STRING_FIELD(portalname, portalname, portalname); + READ_BOOL_FIELD(ismove, ismove, ismove); + return node; +} + +static IndexStmt * +_readIndexStmt(OUT_TYPE(IndexStmt, IndexStmt) msg) +{ + IndexStmt *node = makeNode(IndexStmt); + READ_STRING_FIELD(idxname, idxname, idxname); + READ_SPECIFIC_NODE_PTR_FIELD(RangeVar, range_var, relation, relation, relation); + READ_STRING_FIELD(access_method, accessMethod, accessMethod); + READ_STRING_FIELD(table_space, tableSpace, tableSpace); + READ_LIST_FIELD(index_params, indexParams, indexParams); + READ_LIST_FIELD(index_including_params, indexIncludingParams, indexIncludingParams); + READ_LIST_FIELD(options, options, options); + READ_NODE_PTR_FIELD(where_clause, whereClause, whereClause); + READ_LIST_FIELD(exclude_op_names, excludeOpNames, excludeOpNames); + READ_STRING_FIELD(idxcomment, idxcomment, idxcomment); + READ_UINT_FIELD(index_oid, indexOid, indexOid); + READ_UINT_FIELD(old_node, oldNode, oldNode); + READ_UINT_FIELD(old_create_subid, oldCreateSubid, oldCreateSubid); + READ_UINT_FIELD(old_first_relfilenode_subid, oldFirstRelfilenodeSubid, oldFirstRelfilenodeSubid); + READ_BOOL_FIELD(unique, unique, unique); + READ_BOOL_FIELD(primary, primary, primary); + READ_BOOL_FIELD(isconstraint, isconstraint, isconstraint); + READ_BOOL_FIELD(deferrable, deferrable, deferrable); + READ_BOOL_FIELD(initdeferred, initdeferred, initdeferred); + READ_BOOL_FIELD(transformed, transformed, transformed); + READ_BOOL_FIELD(concurrent, concurrent, concurrent); + READ_BOOL_FIELD(if_not_exists, if_not_exists, if_not_exists); + READ_BOOL_FIELD(reset_default_tblspc, reset_default_tblspc, reset_default_tblspc); + return node; +} + +static CreateFunctionStmt * +_readCreateFunctionStmt(OUT_TYPE(CreateFunctionStmt, CreateFunctionStmt) msg) +{ + CreateFunctionStmt *node = makeNode(CreateFunctionStmt); + READ_BOOL_FIELD(is_procedure, is_procedure, is_procedure); + READ_BOOL_FIELD(replace, replace, replace); + READ_LIST_FIELD(funcname, funcname, funcname); + READ_LIST_FIELD(parameters, parameters, parameters); + READ_SPECIFIC_NODE_PTR_FIELD(TypeName, type_name, return_type, returnType, returnType); + READ_LIST_FIELD(options, options, options); + return node; +} + +static AlterFunctionStmt * +_readAlterFunctionStmt(OUT_TYPE(AlterFunctionStmt, AlterFunctionStmt) msg) +{ + AlterFunctionStmt *node = makeNode(AlterFunctionStmt); + READ_ENUM_FIELD(ObjectType, objtype, objtype, objtype); + READ_SPECIFIC_NODE_PTR_FIELD(ObjectWithArgs, object_with_args, func, func, func); + READ_LIST_FIELD(actions, actions, actions); + return node; +} + +static DoStmt * +_readDoStmt(OUT_TYPE(DoStmt, DoStmt) msg) +{ + DoStmt *node = makeNode(DoStmt); + READ_LIST_FIELD(args, args, args); + return node; +} + +static RenameStmt * +_readRenameStmt(OUT_TYPE(RenameStmt, RenameStmt) msg) +{ + RenameStmt *node = makeNode(RenameStmt); + READ_ENUM_FIELD(ObjectType, rename_type, renameType, renameType); + READ_ENUM_FIELD(ObjectType, relation_type, relationType, relationType); + READ_SPECIFIC_NODE_PTR_FIELD(RangeVar, range_var, relation, relation, relation); + READ_NODE_PTR_FIELD(object, object, object); + READ_STRING_FIELD(subname, subname, subname); + READ_STRING_FIELD(newname, newname, newname); + READ_ENUM_FIELD(DropBehavior, behavior, behavior, behavior); + READ_BOOL_FIELD(missing_ok, missing_ok, missing_ok); + return node; +} + +static RuleStmt * +_readRuleStmt(OUT_TYPE(RuleStmt, RuleStmt) msg) +{ + RuleStmt *node = makeNode(RuleStmt); + READ_SPECIFIC_NODE_PTR_FIELD(RangeVar, range_var, relation, relation, relation); + READ_STRING_FIELD(rulename, rulename, rulename); + READ_NODE_PTR_FIELD(where_clause, whereClause, whereClause); + READ_ENUM_FIELD(CmdType, event, event, event); + READ_BOOL_FIELD(instead, instead, instead); + READ_LIST_FIELD(actions, actions, actions); + READ_BOOL_FIELD(replace, replace, replace); + return node; +} + +static NotifyStmt * +_readNotifyStmt(OUT_TYPE(NotifyStmt, NotifyStmt) msg) +{ + NotifyStmt *node = makeNode(NotifyStmt); + READ_STRING_FIELD(conditionname, conditionname, conditionname); + READ_STRING_FIELD(payload, payload, payload); + return node; +} + +static ListenStmt * +_readListenStmt(OUT_TYPE(ListenStmt, ListenStmt) msg) +{ + ListenStmt *node = makeNode(ListenStmt); + READ_STRING_FIELD(conditionname, conditionname, conditionname); + return node; +} + +static UnlistenStmt * +_readUnlistenStmt(OUT_TYPE(UnlistenStmt, UnlistenStmt) msg) +{ + UnlistenStmt *node = makeNode(UnlistenStmt); + READ_STRING_FIELD(conditionname, conditionname, conditionname); + return node; +} + +static TransactionStmt * +_readTransactionStmt(OUT_TYPE(TransactionStmt, TransactionStmt) msg) +{ + TransactionStmt *node = makeNode(TransactionStmt); + READ_ENUM_FIELD(TransactionStmtKind, kind, kind, kind); + READ_LIST_FIELD(options, options, options); + READ_STRING_FIELD(savepoint_name, savepoint_name, savepoint_name); + READ_STRING_FIELD(gid, gid, gid); + READ_BOOL_FIELD(chain, chain, chain); + return node; +} + +static ViewStmt * +_readViewStmt(OUT_TYPE(ViewStmt, ViewStmt) msg) +{ + ViewStmt *node = makeNode(ViewStmt); + READ_SPECIFIC_NODE_PTR_FIELD(RangeVar, range_var, view, view, view); + READ_LIST_FIELD(aliases, aliases, aliases); + READ_NODE_PTR_FIELD(query, query, query); + READ_BOOL_FIELD(replace, replace, replace); + READ_LIST_FIELD(options, options, options); + READ_ENUM_FIELD(ViewCheckOption, with_check_option, withCheckOption, withCheckOption); + return node; +} + +static LoadStmt * +_readLoadStmt(OUT_TYPE(LoadStmt, LoadStmt) msg) +{ + LoadStmt *node = makeNode(LoadStmt); + READ_STRING_FIELD(filename, filename, filename); + return node; +} + +static CreateDomainStmt * +_readCreateDomainStmt(OUT_TYPE(CreateDomainStmt, CreateDomainStmt) msg) +{ + CreateDomainStmt *node = makeNode(CreateDomainStmt); + READ_LIST_FIELD(domainname, domainname, domainname); + READ_SPECIFIC_NODE_PTR_FIELD(TypeName, type_name, type_name, typeName, typeName); + READ_SPECIFIC_NODE_PTR_FIELD(CollateClause, collate_clause, coll_clause, collClause, collClause); + READ_LIST_FIELD(constraints, constraints, constraints); + return node; +} + +static CreatedbStmt * +_readCreatedbStmt(OUT_TYPE(CreatedbStmt, CreatedbStmt) msg) +{ + CreatedbStmt *node = makeNode(CreatedbStmt); + READ_STRING_FIELD(dbname, dbname, dbname); + READ_LIST_FIELD(options, options, options); + return node; +} + +static DropdbStmt * +_readDropdbStmt(OUT_TYPE(DropdbStmt, DropdbStmt) msg) +{ + DropdbStmt *node = makeNode(DropdbStmt); + READ_STRING_FIELD(dbname, dbname, dbname); + READ_BOOL_FIELD(missing_ok, missing_ok, missing_ok); + READ_LIST_FIELD(options, options, options); + return node; +} + +static VacuumStmt * +_readVacuumStmt(OUT_TYPE(VacuumStmt, VacuumStmt) msg) +{ + VacuumStmt *node = makeNode(VacuumStmt); + READ_LIST_FIELD(options, options, options); + READ_LIST_FIELD(rels, rels, rels); + READ_BOOL_FIELD(is_vacuumcmd, is_vacuumcmd, is_vacuumcmd); + return node; +} + +static ExplainStmt * +_readExplainStmt(OUT_TYPE(ExplainStmt, ExplainStmt) msg) +{ + ExplainStmt *node = makeNode(ExplainStmt); + READ_NODE_PTR_FIELD(query, query, query); + READ_LIST_FIELD(options, options, options); + return node; +} + +static CreateTableAsStmt * +_readCreateTableAsStmt(OUT_TYPE(CreateTableAsStmt, CreateTableAsStmt) msg) +{ + CreateTableAsStmt *node = makeNode(CreateTableAsStmt); + READ_NODE_PTR_FIELD(query, query, query); + READ_SPECIFIC_NODE_PTR_FIELD(IntoClause, into_clause, into, into, into); + READ_ENUM_FIELD(ObjectType, relkind, relkind, relkind); + READ_BOOL_FIELD(is_select_into, is_select_into, is_select_into); + READ_BOOL_FIELD(if_not_exists, if_not_exists, if_not_exists); + return node; +} + +static CreateSeqStmt * +_readCreateSeqStmt(OUT_TYPE(CreateSeqStmt, CreateSeqStmt) msg) +{ + CreateSeqStmt *node = makeNode(CreateSeqStmt); + READ_SPECIFIC_NODE_PTR_FIELD(RangeVar, range_var, sequence, sequence, sequence); + READ_LIST_FIELD(options, options, options); + READ_UINT_FIELD(owner_id, ownerId, ownerId); + READ_BOOL_FIELD(for_identity, for_identity, for_identity); + READ_BOOL_FIELD(if_not_exists, if_not_exists, if_not_exists); + return node; +} + +static AlterSeqStmt * +_readAlterSeqStmt(OUT_TYPE(AlterSeqStmt, AlterSeqStmt) msg) +{ + AlterSeqStmt *node = makeNode(AlterSeqStmt); + READ_SPECIFIC_NODE_PTR_FIELD(RangeVar, range_var, sequence, sequence, sequence); + READ_LIST_FIELD(options, options, options); + READ_BOOL_FIELD(for_identity, for_identity, for_identity); + READ_BOOL_FIELD(missing_ok, missing_ok, missing_ok); + return node; +} + +static VariableSetStmt * +_readVariableSetStmt(OUT_TYPE(VariableSetStmt, VariableSetStmt) msg) +{ + VariableSetStmt *node = makeNode(VariableSetStmt); + READ_ENUM_FIELD(VariableSetKind, kind, kind, kind); + READ_STRING_FIELD(name, name, name); + READ_LIST_FIELD(args, args, args); + READ_BOOL_FIELD(is_local, is_local, is_local); + return node; +} + +static VariableShowStmt * +_readVariableShowStmt(OUT_TYPE(VariableShowStmt, VariableShowStmt) msg) +{ + VariableShowStmt *node = makeNode(VariableShowStmt); + READ_STRING_FIELD(name, name, name); + return node; +} + +static DiscardStmt * +_readDiscardStmt(OUT_TYPE(DiscardStmt, DiscardStmt) msg) +{ + DiscardStmt *node = makeNode(DiscardStmt); + READ_ENUM_FIELD(DiscardMode, target, target, target); + return node; +} + +static CreateTrigStmt * +_readCreateTrigStmt(OUT_TYPE(CreateTrigStmt, CreateTrigStmt) msg) +{ + CreateTrigStmt *node = makeNode(CreateTrigStmt); + READ_STRING_FIELD(trigname, trigname, trigname); + READ_SPECIFIC_NODE_PTR_FIELD(RangeVar, range_var, relation, relation, relation); + READ_LIST_FIELD(funcname, funcname, funcname); + READ_LIST_FIELD(args, args, args); + READ_BOOL_FIELD(row, row, row); + READ_INT_FIELD(timing, timing, timing); + READ_INT_FIELD(events, events, events); + READ_LIST_FIELD(columns, columns, columns); + READ_NODE_PTR_FIELD(when_clause, whenClause, whenClause); + READ_BOOL_FIELD(isconstraint, isconstraint, isconstraint); + READ_LIST_FIELD(transition_rels, transitionRels, transitionRels); + READ_BOOL_FIELD(deferrable, deferrable, deferrable); + READ_BOOL_FIELD(initdeferred, initdeferred, initdeferred); + READ_SPECIFIC_NODE_PTR_FIELD(RangeVar, range_var, constrrel, constrrel, constrrel); + return node; +} + +static CreatePLangStmt * +_readCreatePLangStmt(OUT_TYPE(CreatePLangStmt, CreatePLangStmt) msg) +{ + CreatePLangStmt *node = makeNode(CreatePLangStmt); + READ_BOOL_FIELD(replace, replace, replace); + READ_STRING_FIELD(plname, plname, plname); + READ_LIST_FIELD(plhandler, plhandler, plhandler); + READ_LIST_FIELD(plinline, plinline, plinline); + READ_LIST_FIELD(plvalidator, plvalidator, plvalidator); + READ_BOOL_FIELD(pltrusted, pltrusted, pltrusted); + return node; +} + +static CreateRoleStmt * +_readCreateRoleStmt(OUT_TYPE(CreateRoleStmt, CreateRoleStmt) msg) +{ + CreateRoleStmt *node = makeNode(CreateRoleStmt); + READ_ENUM_FIELD(RoleStmtType, stmt_type, stmt_type, stmt_type); + READ_STRING_FIELD(role, role, role); + READ_LIST_FIELD(options, options, options); + return node; +} + +static AlterRoleStmt * +_readAlterRoleStmt(OUT_TYPE(AlterRoleStmt, AlterRoleStmt) msg) +{ + AlterRoleStmt *node = makeNode(AlterRoleStmt); + READ_SPECIFIC_NODE_PTR_FIELD(RoleSpec, role_spec, role, role, role); + READ_LIST_FIELD(options, options, options); + READ_INT_FIELD(action, action, action); + return node; +} + +static DropRoleStmt * +_readDropRoleStmt(OUT_TYPE(DropRoleStmt, DropRoleStmt) msg) +{ + DropRoleStmt *node = makeNode(DropRoleStmt); + READ_LIST_FIELD(roles, roles, roles); + READ_BOOL_FIELD(missing_ok, missing_ok, missing_ok); + return node; +} + +static LockStmt * +_readLockStmt(OUT_TYPE(LockStmt, LockStmt) msg) +{ + LockStmt *node = makeNode(LockStmt); + READ_LIST_FIELD(relations, relations, relations); + READ_INT_FIELD(mode, mode, mode); + READ_BOOL_FIELD(nowait, nowait, nowait); + return node; +} + +static ConstraintsSetStmt * +_readConstraintsSetStmt(OUT_TYPE(ConstraintsSetStmt, ConstraintsSetStmt) msg) +{ + ConstraintsSetStmt *node = makeNode(ConstraintsSetStmt); + READ_LIST_FIELD(constraints, constraints, constraints); + READ_BOOL_FIELD(deferred, deferred, deferred); + return node; +} + +static ReindexStmt * +_readReindexStmt(OUT_TYPE(ReindexStmt, ReindexStmt) msg) +{ + ReindexStmt *node = makeNode(ReindexStmt); + READ_ENUM_FIELD(ReindexObjectType, kind, kind, kind); + READ_SPECIFIC_NODE_PTR_FIELD(RangeVar, range_var, relation, relation, relation); + READ_STRING_FIELD(name, name, name); + READ_INT_FIELD(options, options, options); + READ_BOOL_FIELD(concurrent, concurrent, concurrent); + return node; +} + +static CheckPointStmt * +_readCheckPointStmt(OUT_TYPE(CheckPointStmt, CheckPointStmt) msg) +{ + CheckPointStmt *node = makeNode(CheckPointStmt); + return node; +} + +static CreateSchemaStmt * +_readCreateSchemaStmt(OUT_TYPE(CreateSchemaStmt, CreateSchemaStmt) msg) +{ + CreateSchemaStmt *node = makeNode(CreateSchemaStmt); + READ_STRING_FIELD(schemaname, schemaname, schemaname); + READ_SPECIFIC_NODE_PTR_FIELD(RoleSpec, role_spec, authrole, authrole, authrole); + READ_LIST_FIELD(schema_elts, schemaElts, schemaElts); + READ_BOOL_FIELD(if_not_exists, if_not_exists, if_not_exists); + return node; +} + +static AlterDatabaseStmt * +_readAlterDatabaseStmt(OUT_TYPE(AlterDatabaseStmt, AlterDatabaseStmt) msg) +{ + AlterDatabaseStmt *node = makeNode(AlterDatabaseStmt); + READ_STRING_FIELD(dbname, dbname, dbname); + READ_LIST_FIELD(options, options, options); + return node; +} + +static AlterDatabaseSetStmt * +_readAlterDatabaseSetStmt(OUT_TYPE(AlterDatabaseSetStmt, AlterDatabaseSetStmt) msg) +{ + AlterDatabaseSetStmt *node = makeNode(AlterDatabaseSetStmt); + READ_STRING_FIELD(dbname, dbname, dbname); + READ_SPECIFIC_NODE_PTR_FIELD(VariableSetStmt, variable_set_stmt, setstmt, setstmt, setstmt); + return node; +} + +static AlterRoleSetStmt * +_readAlterRoleSetStmt(OUT_TYPE(AlterRoleSetStmt, AlterRoleSetStmt) msg) +{ + AlterRoleSetStmt *node = makeNode(AlterRoleSetStmt); + READ_SPECIFIC_NODE_PTR_FIELD(RoleSpec, role_spec, role, role, role); + READ_STRING_FIELD(database, database, database); + READ_SPECIFIC_NODE_PTR_FIELD(VariableSetStmt, variable_set_stmt, setstmt, setstmt, setstmt); + return node; +} + +static CreateConversionStmt * +_readCreateConversionStmt(OUT_TYPE(CreateConversionStmt, CreateConversionStmt) msg) +{ + CreateConversionStmt *node = makeNode(CreateConversionStmt); + READ_LIST_FIELD(conversion_name, conversion_name, conversion_name); + READ_STRING_FIELD(for_encoding_name, for_encoding_name, for_encoding_name); + READ_STRING_FIELD(to_encoding_name, to_encoding_name, to_encoding_name); + READ_LIST_FIELD(func_name, func_name, func_name); + READ_BOOL_FIELD(def, def, def); + return node; +} + +static CreateCastStmt * +_readCreateCastStmt(OUT_TYPE(CreateCastStmt, CreateCastStmt) msg) +{ + CreateCastStmt *node = makeNode(CreateCastStmt); + READ_SPECIFIC_NODE_PTR_FIELD(TypeName, type_name, sourcetype, sourcetype, sourcetype); + READ_SPECIFIC_NODE_PTR_FIELD(TypeName, type_name, targettype, targettype, targettype); + READ_SPECIFIC_NODE_PTR_FIELD(ObjectWithArgs, object_with_args, func, func, func); + READ_ENUM_FIELD(CoercionContext, context, context, context); + READ_BOOL_FIELD(inout, inout, inout); + return node; +} + +static CreateOpClassStmt * +_readCreateOpClassStmt(OUT_TYPE(CreateOpClassStmt, CreateOpClassStmt) msg) +{ + CreateOpClassStmt *node = makeNode(CreateOpClassStmt); + READ_LIST_FIELD(opclassname, opclassname, opclassname); + READ_LIST_FIELD(opfamilyname, opfamilyname, opfamilyname); + READ_STRING_FIELD(amname, amname, amname); + READ_SPECIFIC_NODE_PTR_FIELD(TypeName, type_name, datatype, datatype, datatype); + READ_LIST_FIELD(items, items, items); + READ_BOOL_FIELD(is_default, isDefault, isDefault); + return node; +} + +static CreateOpFamilyStmt * +_readCreateOpFamilyStmt(OUT_TYPE(CreateOpFamilyStmt, CreateOpFamilyStmt) msg) +{ + CreateOpFamilyStmt *node = makeNode(CreateOpFamilyStmt); + READ_LIST_FIELD(opfamilyname, opfamilyname, opfamilyname); + READ_STRING_FIELD(amname, amname, amname); + return node; +} + +static AlterOpFamilyStmt * +_readAlterOpFamilyStmt(OUT_TYPE(AlterOpFamilyStmt, AlterOpFamilyStmt) msg) +{ + AlterOpFamilyStmt *node = makeNode(AlterOpFamilyStmt); + READ_LIST_FIELD(opfamilyname, opfamilyname, opfamilyname); + READ_STRING_FIELD(amname, amname, amname); + READ_BOOL_FIELD(is_drop, isDrop, isDrop); + READ_LIST_FIELD(items, items, items); + return node; +} + +static PrepareStmt * +_readPrepareStmt(OUT_TYPE(PrepareStmt, PrepareStmt) msg) +{ + PrepareStmt *node = makeNode(PrepareStmt); + READ_STRING_FIELD(name, name, name); + READ_LIST_FIELD(argtypes, argtypes, argtypes); + READ_NODE_PTR_FIELD(query, query, query); + return node; +} + +static ExecuteStmt * +_readExecuteStmt(OUT_TYPE(ExecuteStmt, ExecuteStmt) msg) +{ + ExecuteStmt *node = makeNode(ExecuteStmt); + READ_STRING_FIELD(name, name, name); + READ_LIST_FIELD(params, params, params); + return node; +} + +static DeallocateStmt * +_readDeallocateStmt(OUT_TYPE(DeallocateStmt, DeallocateStmt) msg) +{ + DeallocateStmt *node = makeNode(DeallocateStmt); + READ_STRING_FIELD(name, name, name); + return node; +} + +static DeclareCursorStmt * +_readDeclareCursorStmt(OUT_TYPE(DeclareCursorStmt, DeclareCursorStmt) msg) +{ + DeclareCursorStmt *node = makeNode(DeclareCursorStmt); + READ_STRING_FIELD(portalname, portalname, portalname); + READ_INT_FIELD(options, options, options); + READ_NODE_PTR_FIELD(query, query, query); + return node; +} + +static CreateTableSpaceStmt * +_readCreateTableSpaceStmt(OUT_TYPE(CreateTableSpaceStmt, CreateTableSpaceStmt) msg) +{ + CreateTableSpaceStmt *node = makeNode(CreateTableSpaceStmt); + READ_STRING_FIELD(tablespacename, tablespacename, tablespacename); + READ_SPECIFIC_NODE_PTR_FIELD(RoleSpec, role_spec, owner, owner, owner); + READ_STRING_FIELD(location, location, location); + READ_LIST_FIELD(options, options, options); + return node; +} + +static DropTableSpaceStmt * +_readDropTableSpaceStmt(OUT_TYPE(DropTableSpaceStmt, DropTableSpaceStmt) msg) +{ + DropTableSpaceStmt *node = makeNode(DropTableSpaceStmt); + READ_STRING_FIELD(tablespacename, tablespacename, tablespacename); + READ_BOOL_FIELD(missing_ok, missing_ok, missing_ok); + return node; +} + +static AlterObjectDependsStmt * +_readAlterObjectDependsStmt(OUT_TYPE(AlterObjectDependsStmt, AlterObjectDependsStmt) msg) +{ + AlterObjectDependsStmt *node = makeNode(AlterObjectDependsStmt); + READ_ENUM_FIELD(ObjectType, object_type, objectType, objectType); + READ_SPECIFIC_NODE_PTR_FIELD(RangeVar, range_var, relation, relation, relation); + READ_NODE_PTR_FIELD(object, object, object); + READ_VALUE_PTR_FIELD(extname, extname, extname); + READ_BOOL_FIELD(remove, remove, remove); + return node; +} + +static AlterObjectSchemaStmt * +_readAlterObjectSchemaStmt(OUT_TYPE(AlterObjectSchemaStmt, AlterObjectSchemaStmt) msg) +{ + AlterObjectSchemaStmt *node = makeNode(AlterObjectSchemaStmt); + READ_ENUM_FIELD(ObjectType, object_type, objectType, objectType); + READ_SPECIFIC_NODE_PTR_FIELD(RangeVar, range_var, relation, relation, relation); + READ_NODE_PTR_FIELD(object, object, object); + READ_STRING_FIELD(newschema, newschema, newschema); + READ_BOOL_FIELD(missing_ok, missing_ok, missing_ok); + return node; +} + +static AlterOwnerStmt * +_readAlterOwnerStmt(OUT_TYPE(AlterOwnerStmt, AlterOwnerStmt) msg) +{ + AlterOwnerStmt *node = makeNode(AlterOwnerStmt); + READ_ENUM_FIELD(ObjectType, object_type, objectType, objectType); + READ_SPECIFIC_NODE_PTR_FIELD(RangeVar, range_var, relation, relation, relation); + READ_NODE_PTR_FIELD(object, object, object); + READ_SPECIFIC_NODE_PTR_FIELD(RoleSpec, role_spec, newowner, newowner, newowner); + return node; +} + +static AlterOperatorStmt * +_readAlterOperatorStmt(OUT_TYPE(AlterOperatorStmt, AlterOperatorStmt) msg) +{ + AlterOperatorStmt *node = makeNode(AlterOperatorStmt); + READ_SPECIFIC_NODE_PTR_FIELD(ObjectWithArgs, object_with_args, opername, opername, opername); + READ_LIST_FIELD(options, options, options); + return node; +} + +static AlterTypeStmt * +_readAlterTypeStmt(OUT_TYPE(AlterTypeStmt, AlterTypeStmt) msg) +{ + AlterTypeStmt *node = makeNode(AlterTypeStmt); + READ_LIST_FIELD(type_name, typeName, typeName); + READ_LIST_FIELD(options, options, options); + return node; +} + +static DropOwnedStmt * +_readDropOwnedStmt(OUT_TYPE(DropOwnedStmt, DropOwnedStmt) msg) +{ + DropOwnedStmt *node = makeNode(DropOwnedStmt); + READ_LIST_FIELD(roles, roles, roles); + READ_ENUM_FIELD(DropBehavior, behavior, behavior, behavior); + return node; +} + +static ReassignOwnedStmt * +_readReassignOwnedStmt(OUT_TYPE(ReassignOwnedStmt, ReassignOwnedStmt) msg) +{ + ReassignOwnedStmt *node = makeNode(ReassignOwnedStmt); + READ_LIST_FIELD(roles, roles, roles); + READ_SPECIFIC_NODE_PTR_FIELD(RoleSpec, role_spec, newrole, newrole, newrole); + return node; +} + +static CompositeTypeStmt * +_readCompositeTypeStmt(OUT_TYPE(CompositeTypeStmt, CompositeTypeStmt) msg) +{ + CompositeTypeStmt *node = makeNode(CompositeTypeStmt); + READ_SPECIFIC_NODE_PTR_FIELD(RangeVar, range_var, typevar, typevar, typevar); + READ_LIST_FIELD(coldeflist, coldeflist, coldeflist); + return node; +} + +static CreateEnumStmt * +_readCreateEnumStmt(OUT_TYPE(CreateEnumStmt, CreateEnumStmt) msg) +{ + CreateEnumStmt *node = makeNode(CreateEnumStmt); + READ_LIST_FIELD(type_name, typeName, typeName); + READ_LIST_FIELD(vals, vals, vals); + return node; +} + +static CreateRangeStmt * +_readCreateRangeStmt(OUT_TYPE(CreateRangeStmt, CreateRangeStmt) msg) +{ + CreateRangeStmt *node = makeNode(CreateRangeStmt); + READ_LIST_FIELD(type_name, typeName, typeName); + READ_LIST_FIELD(params, params, params); + return node; +} + +static AlterEnumStmt * +_readAlterEnumStmt(OUT_TYPE(AlterEnumStmt, AlterEnumStmt) msg) +{ + AlterEnumStmt *node = makeNode(AlterEnumStmt); + READ_LIST_FIELD(type_name, typeName, typeName); + READ_STRING_FIELD(old_val, oldVal, oldVal); + READ_STRING_FIELD(new_val, newVal, newVal); + READ_STRING_FIELD(new_val_neighbor, newValNeighbor, newValNeighbor); + READ_BOOL_FIELD(new_val_is_after, newValIsAfter, newValIsAfter); + READ_BOOL_FIELD(skip_if_new_val_exists, skipIfNewValExists, skipIfNewValExists); + return node; +} + +static AlterTSDictionaryStmt * +_readAlterTSDictionaryStmt(OUT_TYPE(AlterTSDictionaryStmt, AlterTSDictionaryStmt) msg) +{ + AlterTSDictionaryStmt *node = makeNode(AlterTSDictionaryStmt); + READ_LIST_FIELD(dictname, dictname, dictname); + READ_LIST_FIELD(options, options, options); + return node; +} + +static AlterTSConfigurationStmt * +_readAlterTSConfigurationStmt(OUT_TYPE(AlterTSConfigurationStmt, AlterTSConfigurationStmt) msg) +{ + AlterTSConfigurationStmt *node = makeNode(AlterTSConfigurationStmt); + READ_ENUM_FIELD(AlterTSConfigType, kind, kind, kind); + READ_LIST_FIELD(cfgname, cfgname, cfgname); + READ_LIST_FIELD(tokentype, tokentype, tokentype); + READ_LIST_FIELD(dicts, dicts, dicts); + READ_BOOL_FIELD(override, override, override); + READ_BOOL_FIELD(replace, replace, replace); + READ_BOOL_FIELD(missing_ok, missing_ok, missing_ok); + return node; +} + +static CreateFdwStmt * +_readCreateFdwStmt(OUT_TYPE(CreateFdwStmt, CreateFdwStmt) msg) +{ + CreateFdwStmt *node = makeNode(CreateFdwStmt); + READ_STRING_FIELD(fdwname, fdwname, fdwname); + READ_LIST_FIELD(func_options, func_options, func_options); + READ_LIST_FIELD(options, options, options); + return node; +} + +static AlterFdwStmt * +_readAlterFdwStmt(OUT_TYPE(AlterFdwStmt, AlterFdwStmt) msg) +{ + AlterFdwStmt *node = makeNode(AlterFdwStmt); + READ_STRING_FIELD(fdwname, fdwname, fdwname); + READ_LIST_FIELD(func_options, func_options, func_options); + READ_LIST_FIELD(options, options, options); + return node; +} + +static CreateForeignServerStmt * +_readCreateForeignServerStmt(OUT_TYPE(CreateForeignServerStmt, CreateForeignServerStmt) msg) +{ + CreateForeignServerStmt *node = makeNode(CreateForeignServerStmt); + READ_STRING_FIELD(servername, servername, servername); + READ_STRING_FIELD(servertype, servertype, servertype); + READ_STRING_FIELD(version, version, version); + READ_STRING_FIELD(fdwname, fdwname, fdwname); + READ_BOOL_FIELD(if_not_exists, if_not_exists, if_not_exists); + READ_LIST_FIELD(options, options, options); + return node; +} + +static AlterForeignServerStmt * +_readAlterForeignServerStmt(OUT_TYPE(AlterForeignServerStmt, AlterForeignServerStmt) msg) +{ + AlterForeignServerStmt *node = makeNode(AlterForeignServerStmt); + READ_STRING_FIELD(servername, servername, servername); + READ_STRING_FIELD(version, version, version); + READ_LIST_FIELD(options, options, options); + READ_BOOL_FIELD(has_version, has_version, has_version); + return node; +} + +static CreateUserMappingStmt * +_readCreateUserMappingStmt(OUT_TYPE(CreateUserMappingStmt, CreateUserMappingStmt) msg) +{ + CreateUserMappingStmt *node = makeNode(CreateUserMappingStmt); + READ_SPECIFIC_NODE_PTR_FIELD(RoleSpec, role_spec, user, user, user); + READ_STRING_FIELD(servername, servername, servername); + READ_BOOL_FIELD(if_not_exists, if_not_exists, if_not_exists); + READ_LIST_FIELD(options, options, options); + return node; +} + +static AlterUserMappingStmt * +_readAlterUserMappingStmt(OUT_TYPE(AlterUserMappingStmt, AlterUserMappingStmt) msg) +{ + AlterUserMappingStmt *node = makeNode(AlterUserMappingStmt); + READ_SPECIFIC_NODE_PTR_FIELD(RoleSpec, role_spec, user, user, user); + READ_STRING_FIELD(servername, servername, servername); + READ_LIST_FIELD(options, options, options); + return node; +} + +static DropUserMappingStmt * +_readDropUserMappingStmt(OUT_TYPE(DropUserMappingStmt, DropUserMappingStmt) msg) +{ + DropUserMappingStmt *node = makeNode(DropUserMappingStmt); + READ_SPECIFIC_NODE_PTR_FIELD(RoleSpec, role_spec, user, user, user); + READ_STRING_FIELD(servername, servername, servername); + READ_BOOL_FIELD(missing_ok, missing_ok, missing_ok); + return node; +} + +static AlterTableSpaceOptionsStmt * +_readAlterTableSpaceOptionsStmt(OUT_TYPE(AlterTableSpaceOptionsStmt, AlterTableSpaceOptionsStmt) msg) +{ + AlterTableSpaceOptionsStmt *node = makeNode(AlterTableSpaceOptionsStmt); + READ_STRING_FIELD(tablespacename, tablespacename, tablespacename); + READ_LIST_FIELD(options, options, options); + READ_BOOL_FIELD(is_reset, isReset, isReset); + return node; +} + +static AlterTableMoveAllStmt * +_readAlterTableMoveAllStmt(OUT_TYPE(AlterTableMoveAllStmt, AlterTableMoveAllStmt) msg) +{ + AlterTableMoveAllStmt *node = makeNode(AlterTableMoveAllStmt); + READ_STRING_FIELD(orig_tablespacename, orig_tablespacename, orig_tablespacename); + READ_ENUM_FIELD(ObjectType, objtype, objtype, objtype); + READ_LIST_FIELD(roles, roles, roles); + READ_STRING_FIELD(new_tablespacename, new_tablespacename, new_tablespacename); + READ_BOOL_FIELD(nowait, nowait, nowait); + return node; +} + +static SecLabelStmt * +_readSecLabelStmt(OUT_TYPE(SecLabelStmt, SecLabelStmt) msg) +{ + SecLabelStmt *node = makeNode(SecLabelStmt); + READ_ENUM_FIELD(ObjectType, objtype, objtype, objtype); + READ_NODE_PTR_FIELD(object, object, object); + READ_STRING_FIELD(provider, provider, provider); + READ_STRING_FIELD(label, label, label); + return node; +} + +static CreateForeignTableStmt * +_readCreateForeignTableStmt(OUT_TYPE(CreateForeignTableStmt, CreateForeignTableStmt) msg) +{ + CreateForeignTableStmt *node = makeNode(CreateForeignTableStmt); + READ_SPECIFIC_NODE_FIELD(CreateStmt, create_stmt, base_stmt, base, base); + READ_STRING_FIELD(servername, servername, servername); + READ_LIST_FIELD(options, options, options); + NodeSetTag(node, T_CreateForeignTableStmt); + return node; +} + +static ImportForeignSchemaStmt * +_readImportForeignSchemaStmt(OUT_TYPE(ImportForeignSchemaStmt, ImportForeignSchemaStmt) msg) +{ + ImportForeignSchemaStmt *node = makeNode(ImportForeignSchemaStmt); + READ_STRING_FIELD(server_name, server_name, server_name); + READ_STRING_FIELD(remote_schema, remote_schema, remote_schema); + READ_STRING_FIELD(local_schema, local_schema, local_schema); + READ_ENUM_FIELD(ImportForeignSchemaType, list_type, list_type, list_type); + READ_LIST_FIELD(table_list, table_list, table_list); + READ_LIST_FIELD(options, options, options); + return node; +} + +static CreateExtensionStmt * +_readCreateExtensionStmt(OUT_TYPE(CreateExtensionStmt, CreateExtensionStmt) msg) +{ + CreateExtensionStmt *node = makeNode(CreateExtensionStmt); + READ_STRING_FIELD(extname, extname, extname); + READ_BOOL_FIELD(if_not_exists, if_not_exists, if_not_exists); + READ_LIST_FIELD(options, options, options); + return node; +} + +static AlterExtensionStmt * +_readAlterExtensionStmt(OUT_TYPE(AlterExtensionStmt, AlterExtensionStmt) msg) +{ + AlterExtensionStmt *node = makeNode(AlterExtensionStmt); + READ_STRING_FIELD(extname, extname, extname); + READ_LIST_FIELD(options, options, options); + return node; +} + +static AlterExtensionContentsStmt * +_readAlterExtensionContentsStmt(OUT_TYPE(AlterExtensionContentsStmt, AlterExtensionContentsStmt) msg) +{ + AlterExtensionContentsStmt *node = makeNode(AlterExtensionContentsStmt); + READ_STRING_FIELD(extname, extname, extname); + READ_INT_FIELD(action, action, action); + READ_ENUM_FIELD(ObjectType, objtype, objtype, objtype); + READ_NODE_PTR_FIELD(object, object, object); + return node; +} + +static CreateEventTrigStmt * +_readCreateEventTrigStmt(OUT_TYPE(CreateEventTrigStmt, CreateEventTrigStmt) msg) +{ + CreateEventTrigStmt *node = makeNode(CreateEventTrigStmt); + READ_STRING_FIELD(trigname, trigname, trigname); + READ_STRING_FIELD(eventname, eventname, eventname); + READ_LIST_FIELD(whenclause, whenclause, whenclause); + READ_LIST_FIELD(funcname, funcname, funcname); + return node; +} + +static AlterEventTrigStmt * +_readAlterEventTrigStmt(OUT_TYPE(AlterEventTrigStmt, AlterEventTrigStmt) msg) +{ + AlterEventTrigStmt *node = makeNode(AlterEventTrigStmt); + READ_STRING_FIELD(trigname, trigname, trigname); + READ_CHAR_FIELD(tgenabled, tgenabled, tgenabled); + return node; +} + +static RefreshMatViewStmt * +_readRefreshMatViewStmt(OUT_TYPE(RefreshMatViewStmt, RefreshMatViewStmt) msg) +{ + RefreshMatViewStmt *node = makeNode(RefreshMatViewStmt); + READ_BOOL_FIELD(concurrent, concurrent, concurrent); + READ_BOOL_FIELD(skip_data, skipData, skipData); + READ_SPECIFIC_NODE_PTR_FIELD(RangeVar, range_var, relation, relation, relation); + return node; +} + +static ReplicaIdentityStmt * +_readReplicaIdentityStmt(OUT_TYPE(ReplicaIdentityStmt, ReplicaIdentityStmt) msg) +{ + ReplicaIdentityStmt *node = makeNode(ReplicaIdentityStmt); + READ_CHAR_FIELD(identity_type, identity_type, identity_type); + READ_STRING_FIELD(name, name, name); + return node; +} + +static AlterSystemStmt * +_readAlterSystemStmt(OUT_TYPE(AlterSystemStmt, AlterSystemStmt) msg) +{ + AlterSystemStmt *node = makeNode(AlterSystemStmt); + READ_SPECIFIC_NODE_PTR_FIELD(VariableSetStmt, variable_set_stmt, setstmt, setstmt, setstmt); + return node; +} + +static CreatePolicyStmt * +_readCreatePolicyStmt(OUT_TYPE(CreatePolicyStmt, CreatePolicyStmt) msg) +{ + CreatePolicyStmt *node = makeNode(CreatePolicyStmt); + READ_STRING_FIELD(policy_name, policy_name, policy_name); + READ_SPECIFIC_NODE_PTR_FIELD(RangeVar, range_var, table, table, table); + READ_STRING_FIELD(cmd_name, cmd_name, cmd_name); + READ_BOOL_FIELD(permissive, permissive, permissive); + READ_LIST_FIELD(roles, roles, roles); + READ_NODE_PTR_FIELD(qual, qual, qual); + READ_NODE_PTR_FIELD(with_check, with_check, with_check); + return node; +} + +static AlterPolicyStmt * +_readAlterPolicyStmt(OUT_TYPE(AlterPolicyStmt, AlterPolicyStmt) msg) +{ + AlterPolicyStmt *node = makeNode(AlterPolicyStmt); + READ_STRING_FIELD(policy_name, policy_name, policy_name); + READ_SPECIFIC_NODE_PTR_FIELD(RangeVar, range_var, table, table, table); + READ_LIST_FIELD(roles, roles, roles); + READ_NODE_PTR_FIELD(qual, qual, qual); + READ_NODE_PTR_FIELD(with_check, with_check, with_check); + return node; +} + +static CreateTransformStmt * +_readCreateTransformStmt(OUT_TYPE(CreateTransformStmt, CreateTransformStmt) msg) +{ + CreateTransformStmt *node = makeNode(CreateTransformStmt); + READ_BOOL_FIELD(replace, replace, replace); + READ_SPECIFIC_NODE_PTR_FIELD(TypeName, type_name, type_name, type_name, type_name); + READ_STRING_FIELD(lang, lang, lang); + READ_SPECIFIC_NODE_PTR_FIELD(ObjectWithArgs, object_with_args, fromsql, fromsql, fromsql); + READ_SPECIFIC_NODE_PTR_FIELD(ObjectWithArgs, object_with_args, tosql, tosql, tosql); + return node; +} + +static CreateAmStmt * +_readCreateAmStmt(OUT_TYPE(CreateAmStmt, CreateAmStmt) msg) +{ + CreateAmStmt *node = makeNode(CreateAmStmt); + READ_STRING_FIELD(amname, amname, amname); + READ_LIST_FIELD(handler_name, handler_name, handler_name); + READ_CHAR_FIELD(amtype, amtype, amtype); + return node; +} + +static CreatePublicationStmt * +_readCreatePublicationStmt(OUT_TYPE(CreatePublicationStmt, CreatePublicationStmt) msg) +{ + CreatePublicationStmt *node = makeNode(CreatePublicationStmt); + READ_STRING_FIELD(pubname, pubname, pubname); + READ_LIST_FIELD(options, options, options); + READ_LIST_FIELD(tables, tables, tables); + READ_BOOL_FIELD(for_all_tables, for_all_tables, for_all_tables); + return node; +} + +static AlterPublicationStmt * +_readAlterPublicationStmt(OUT_TYPE(AlterPublicationStmt, AlterPublicationStmt) msg) +{ + AlterPublicationStmt *node = makeNode(AlterPublicationStmt); + READ_STRING_FIELD(pubname, pubname, pubname); + READ_LIST_FIELD(options, options, options); + READ_LIST_FIELD(tables, tables, tables); + READ_BOOL_FIELD(for_all_tables, for_all_tables, for_all_tables); + READ_ENUM_FIELD(DefElemAction, table_action, tableAction, tableAction); + return node; +} + +static CreateSubscriptionStmt * +_readCreateSubscriptionStmt(OUT_TYPE(CreateSubscriptionStmt, CreateSubscriptionStmt) msg) +{ + CreateSubscriptionStmt *node = makeNode(CreateSubscriptionStmt); + READ_STRING_FIELD(subname, subname, subname); + READ_STRING_FIELD(conninfo, conninfo, conninfo); + READ_LIST_FIELD(publication, publication, publication); + READ_LIST_FIELD(options, options, options); + return node; +} + +static AlterSubscriptionStmt * +_readAlterSubscriptionStmt(OUT_TYPE(AlterSubscriptionStmt, AlterSubscriptionStmt) msg) +{ + AlterSubscriptionStmt *node = makeNode(AlterSubscriptionStmt); + READ_ENUM_FIELD(AlterSubscriptionType, kind, kind, kind); + READ_STRING_FIELD(subname, subname, subname); + READ_STRING_FIELD(conninfo, conninfo, conninfo); + READ_LIST_FIELD(publication, publication, publication); + READ_LIST_FIELD(options, options, options); + return node; +} + +static DropSubscriptionStmt * +_readDropSubscriptionStmt(OUT_TYPE(DropSubscriptionStmt, DropSubscriptionStmt) msg) +{ + DropSubscriptionStmt *node = makeNode(DropSubscriptionStmt); + READ_STRING_FIELD(subname, subname, subname); + READ_BOOL_FIELD(missing_ok, missing_ok, missing_ok); + READ_ENUM_FIELD(DropBehavior, behavior, behavior, behavior); + return node; +} + +static CreateStatsStmt * +_readCreateStatsStmt(OUT_TYPE(CreateStatsStmt, CreateStatsStmt) msg) +{ + CreateStatsStmt *node = makeNode(CreateStatsStmt); + READ_LIST_FIELD(defnames, defnames, defnames); + READ_LIST_FIELD(stat_types, stat_types, stat_types); + READ_LIST_FIELD(exprs, exprs, exprs); + READ_LIST_FIELD(relations, relations, relations); + READ_STRING_FIELD(stxcomment, stxcomment, stxcomment); + READ_BOOL_FIELD(if_not_exists, if_not_exists, if_not_exists); + return node; +} + +static AlterCollationStmt * +_readAlterCollationStmt(OUT_TYPE(AlterCollationStmt, AlterCollationStmt) msg) +{ + AlterCollationStmt *node = makeNode(AlterCollationStmt); + READ_LIST_FIELD(collname, collname, collname); + return node; +} + +static CallStmt * +_readCallStmt(OUT_TYPE(CallStmt, CallStmt) msg) +{ + CallStmt *node = makeNode(CallStmt); + READ_SPECIFIC_NODE_PTR_FIELD(FuncCall, func_call, funccall, funccall, funccall); + READ_SPECIFIC_NODE_PTR_FIELD(FuncExpr, func_expr, funcexpr, funcexpr, funcexpr); + return node; +} + +static AlterStatsStmt * +_readAlterStatsStmt(OUT_TYPE(AlterStatsStmt, AlterStatsStmt) msg) +{ + AlterStatsStmt *node = makeNode(AlterStatsStmt); + READ_LIST_FIELD(defnames, defnames, defnames); + READ_INT_FIELD(stxstattarget, stxstattarget, stxstattarget); + READ_BOOL_FIELD(missing_ok, missing_ok, missing_ok); + return node; +} + +static A_Expr * +_readAExpr(OUT_TYPE(A_Expr, AExpr) msg) +{ + A_Expr *node = makeNode(A_Expr); + READ_ENUM_FIELD(A_Expr_Kind, kind, kind, kind); + READ_LIST_FIELD(name, name, name); + READ_NODE_PTR_FIELD(lexpr, lexpr, lexpr); + READ_NODE_PTR_FIELD(rexpr, rexpr, rexpr); + READ_INT_FIELD(location, location, location); + return node; +} + +static ColumnRef * +_readColumnRef(OUT_TYPE(ColumnRef, ColumnRef) msg) +{ + ColumnRef *node = makeNode(ColumnRef); + READ_LIST_FIELD(fields, fields, fields); + READ_INT_FIELD(location, location, location); + return node; +} + +static ParamRef * +_readParamRef(OUT_TYPE(ParamRef, ParamRef) msg) +{ + ParamRef *node = makeNode(ParamRef); + READ_INT_FIELD(number, number, number); + READ_INT_FIELD(location, location, location); + return node; +} + +static A_Const * +_readAConst(OUT_TYPE(A_Const, AConst) msg) +{ + A_Const *node = makeNode(A_Const); + READ_VALUE_FIELD(val, val, val); + READ_INT_FIELD(location, location, location); + return node; +} + +static FuncCall * +_readFuncCall(OUT_TYPE(FuncCall, FuncCall) msg) +{ + FuncCall *node = makeNode(FuncCall); + READ_LIST_FIELD(funcname, funcname, funcname); + READ_LIST_FIELD(args, args, args); + READ_LIST_FIELD(agg_order, agg_order, agg_order); + READ_NODE_PTR_FIELD(agg_filter, agg_filter, agg_filter); + READ_BOOL_FIELD(agg_within_group, agg_within_group, agg_within_group); + READ_BOOL_FIELD(agg_star, agg_star, agg_star); + READ_BOOL_FIELD(agg_distinct, agg_distinct, agg_distinct); + READ_BOOL_FIELD(func_variadic, func_variadic, func_variadic); + READ_SPECIFIC_NODE_PTR_FIELD(WindowDef, window_def, over, over, over); + READ_INT_FIELD(location, location, location); + return node; +} + +static A_Star * +_readAStar(OUT_TYPE(A_Star, AStar) msg) +{ + A_Star *node = makeNode(A_Star); + return node; +} + +static A_Indices * +_readAIndices(OUT_TYPE(A_Indices, AIndices) msg) +{ + A_Indices *node = makeNode(A_Indices); + READ_BOOL_FIELD(is_slice, is_slice, is_slice); + READ_NODE_PTR_FIELD(lidx, lidx, lidx); + READ_NODE_PTR_FIELD(uidx, uidx, uidx); + return node; +} + +static A_Indirection * +_readAIndirection(OUT_TYPE(A_Indirection, AIndirection) msg) +{ + A_Indirection *node = makeNode(A_Indirection); + READ_NODE_PTR_FIELD(arg, arg, arg); + READ_LIST_FIELD(indirection, indirection, indirection); + return node; +} + +static A_ArrayExpr * +_readAArrayExpr(OUT_TYPE(A_ArrayExpr, AArrayExpr) msg) +{ + A_ArrayExpr *node = makeNode(A_ArrayExpr); + READ_LIST_FIELD(elements, elements, elements); + READ_INT_FIELD(location, location, location); + return node; +} + +static ResTarget * +_readResTarget(OUT_TYPE(ResTarget, ResTarget) msg) +{ + ResTarget *node = makeNode(ResTarget); + READ_STRING_FIELD(name, name, name); + READ_LIST_FIELD(indirection, indirection, indirection); + READ_NODE_PTR_FIELD(val, val, val); + READ_INT_FIELD(location, location, location); + return node; +} + +static MultiAssignRef * +_readMultiAssignRef(OUT_TYPE(MultiAssignRef, MultiAssignRef) msg) +{ + MultiAssignRef *node = makeNode(MultiAssignRef); + READ_NODE_PTR_FIELD(source, source, source); + READ_INT_FIELD(colno, colno, colno); + READ_INT_FIELD(ncolumns, ncolumns, ncolumns); + return node; +} + +static TypeCast * +_readTypeCast(OUT_TYPE(TypeCast, TypeCast) msg) +{ + TypeCast *node = makeNode(TypeCast); + READ_NODE_PTR_FIELD(arg, arg, arg); + READ_SPECIFIC_NODE_PTR_FIELD(TypeName, type_name, type_name, typeName, typeName); + READ_INT_FIELD(location, location, location); + return node; +} + +static CollateClause * +_readCollateClause(OUT_TYPE(CollateClause, CollateClause) msg) +{ + CollateClause *node = makeNode(CollateClause); + READ_NODE_PTR_FIELD(arg, arg, arg); + READ_LIST_FIELD(collname, collname, collname); + READ_INT_FIELD(location, location, location); + return node; +} + +static SortBy * +_readSortBy(OUT_TYPE(SortBy, SortBy) msg) +{ + SortBy *node = makeNode(SortBy); + READ_NODE_PTR_FIELD(node, node, node); + READ_ENUM_FIELD(SortByDir, sortby_dir, sortby_dir, sortby_dir); + READ_ENUM_FIELD(SortByNulls, sortby_nulls, sortby_nulls, sortby_nulls); + READ_LIST_FIELD(use_op, useOp, useOp); + READ_INT_FIELD(location, location, location); + return node; +} + +static WindowDef * +_readWindowDef(OUT_TYPE(WindowDef, WindowDef) msg) +{ + WindowDef *node = makeNode(WindowDef); + READ_STRING_FIELD(name, name, name); + READ_STRING_FIELD(refname, refname, refname); + READ_LIST_FIELD(partition_clause, partitionClause, partitionClause); + READ_LIST_FIELD(order_clause, orderClause, orderClause); + READ_INT_FIELD(frame_options, frameOptions, frameOptions); + READ_NODE_PTR_FIELD(start_offset, startOffset, startOffset); + READ_NODE_PTR_FIELD(end_offset, endOffset, endOffset); + READ_INT_FIELD(location, location, location); + return node; +} + +static RangeSubselect * +_readRangeSubselect(OUT_TYPE(RangeSubselect, RangeSubselect) msg) +{ + RangeSubselect *node = makeNode(RangeSubselect); + READ_BOOL_FIELD(lateral, lateral, lateral); + READ_NODE_PTR_FIELD(subquery, subquery, subquery); + READ_SPECIFIC_NODE_PTR_FIELD(Alias, alias, alias, alias, alias); + return node; +} + +static RangeFunction * +_readRangeFunction(OUT_TYPE(RangeFunction, RangeFunction) msg) +{ + RangeFunction *node = makeNode(RangeFunction); + READ_BOOL_FIELD(lateral, lateral, lateral); + READ_BOOL_FIELD(ordinality, ordinality, ordinality); + READ_BOOL_FIELD(is_rowsfrom, is_rowsfrom, is_rowsfrom); + READ_LIST_FIELD(functions, functions, functions); + READ_SPECIFIC_NODE_PTR_FIELD(Alias, alias, alias, alias, alias); + READ_LIST_FIELD(coldeflist, coldeflist, coldeflist); + return node; +} + +static RangeTableSample * +_readRangeTableSample(OUT_TYPE(RangeTableSample, RangeTableSample) msg) +{ + RangeTableSample *node = makeNode(RangeTableSample); + READ_NODE_PTR_FIELD(relation, relation, relation); + READ_LIST_FIELD(method, method, method); + READ_LIST_FIELD(args, args, args); + READ_NODE_PTR_FIELD(repeatable, repeatable, repeatable); + READ_INT_FIELD(location, location, location); + return node; +} + +static RangeTableFunc * +_readRangeTableFunc(OUT_TYPE(RangeTableFunc, RangeTableFunc) msg) +{ + RangeTableFunc *node = makeNode(RangeTableFunc); + READ_BOOL_FIELD(lateral, lateral, lateral); + READ_NODE_PTR_FIELD(docexpr, docexpr, docexpr); + READ_NODE_PTR_FIELD(rowexpr, rowexpr, rowexpr); + READ_LIST_FIELD(namespaces, namespaces, namespaces); + READ_LIST_FIELD(columns, columns, columns); + READ_SPECIFIC_NODE_PTR_FIELD(Alias, alias, alias, alias, alias); + READ_INT_FIELD(location, location, location); + return node; +} + +static RangeTableFuncCol * +_readRangeTableFuncCol(OUT_TYPE(RangeTableFuncCol, RangeTableFuncCol) msg) +{ + RangeTableFuncCol *node = makeNode(RangeTableFuncCol); + READ_STRING_FIELD(colname, colname, colname); + READ_SPECIFIC_NODE_PTR_FIELD(TypeName, type_name, type_name, typeName, typeName); + READ_BOOL_FIELD(for_ordinality, for_ordinality, for_ordinality); + READ_BOOL_FIELD(is_not_null, is_not_null, is_not_null); + READ_NODE_PTR_FIELD(colexpr, colexpr, colexpr); + READ_NODE_PTR_FIELD(coldefexpr, coldefexpr, coldefexpr); + READ_INT_FIELD(location, location, location); + return node; +} + +static TypeName * +_readTypeName(OUT_TYPE(TypeName, TypeName) msg) +{ + TypeName *node = makeNode(TypeName); + READ_LIST_FIELD(names, names, names); + READ_UINT_FIELD(type_oid, typeOid, typeOid); + READ_BOOL_FIELD(setof, setof, setof); + READ_BOOL_FIELD(pct_type, pct_type, pct_type); + READ_LIST_FIELD(typmods, typmods, typmods); + READ_INT_FIELD(typemod, typemod, typemod); + READ_LIST_FIELD(array_bounds, arrayBounds, arrayBounds); + READ_INT_FIELD(location, location, location); + return node; +} + +static ColumnDef * +_readColumnDef(OUT_TYPE(ColumnDef, ColumnDef) msg) +{ + ColumnDef *node = makeNode(ColumnDef); + READ_STRING_FIELD(colname, colname, colname); + READ_SPECIFIC_NODE_PTR_FIELD(TypeName, type_name, type_name, typeName, typeName); + READ_INT_FIELD(inhcount, inhcount, inhcount); + READ_BOOL_FIELD(is_local, is_local, is_local); + READ_BOOL_FIELD(is_not_null, is_not_null, is_not_null); + READ_BOOL_FIELD(is_from_type, is_from_type, is_from_type); + READ_CHAR_FIELD(storage, storage, storage); + READ_NODE_PTR_FIELD(raw_default, raw_default, raw_default); + READ_NODE_PTR_FIELD(cooked_default, cooked_default, cooked_default); + READ_CHAR_FIELD(identity, identity, identity); + READ_SPECIFIC_NODE_PTR_FIELD(RangeVar, range_var, identity_sequence, identitySequence, identitySequence); + READ_CHAR_FIELD(generated, generated, generated); + READ_SPECIFIC_NODE_PTR_FIELD(CollateClause, collate_clause, coll_clause, collClause, collClause); + READ_UINT_FIELD(coll_oid, collOid, collOid); + READ_LIST_FIELD(constraints, constraints, constraints); + READ_LIST_FIELD(fdwoptions, fdwoptions, fdwoptions); + READ_INT_FIELD(location, location, location); + return node; +} + +static IndexElem * +_readIndexElem(OUT_TYPE(IndexElem, IndexElem) msg) +{ + IndexElem *node = makeNode(IndexElem); + READ_STRING_FIELD(name, name, name); + READ_NODE_PTR_FIELD(expr, expr, expr); + READ_STRING_FIELD(indexcolname, indexcolname, indexcolname); + READ_LIST_FIELD(collation, collation, collation); + READ_LIST_FIELD(opclass, opclass, opclass); + READ_LIST_FIELD(opclassopts, opclassopts, opclassopts); + READ_ENUM_FIELD(SortByDir, ordering, ordering, ordering); + READ_ENUM_FIELD(SortByNulls, nulls_ordering, nulls_ordering, nulls_ordering); + return node; +} + +static Constraint * +_readConstraint(OUT_TYPE(Constraint, Constraint) msg) +{ + Constraint *node = makeNode(Constraint); + READ_ENUM_FIELD(ConstrType, contype, contype, contype); + READ_STRING_FIELD(conname, conname, conname); + READ_BOOL_FIELD(deferrable, deferrable, deferrable); + READ_BOOL_FIELD(initdeferred, initdeferred, initdeferred); + READ_INT_FIELD(location, location, location); + READ_BOOL_FIELD(is_no_inherit, is_no_inherit, is_no_inherit); + READ_NODE_PTR_FIELD(raw_expr, raw_expr, raw_expr); + READ_STRING_FIELD(cooked_expr, cooked_expr, cooked_expr); + READ_CHAR_FIELD(generated_when, generated_when, generated_when); + READ_LIST_FIELD(keys, keys, keys); + READ_LIST_FIELD(including, including, including); + READ_LIST_FIELD(exclusions, exclusions, exclusions); + READ_LIST_FIELD(options, options, options); + READ_STRING_FIELD(indexname, indexname, indexname); + READ_STRING_FIELD(indexspace, indexspace, indexspace); + READ_BOOL_FIELD(reset_default_tblspc, reset_default_tblspc, reset_default_tblspc); + READ_STRING_FIELD(access_method, access_method, access_method); + READ_NODE_PTR_FIELD(where_clause, where_clause, where_clause); + READ_SPECIFIC_NODE_PTR_FIELD(RangeVar, range_var, pktable, pktable, pktable); + READ_LIST_FIELD(fk_attrs, fk_attrs, fk_attrs); + READ_LIST_FIELD(pk_attrs, pk_attrs, pk_attrs); + READ_CHAR_FIELD(fk_matchtype, fk_matchtype, fk_matchtype); + READ_CHAR_FIELD(fk_upd_action, fk_upd_action, fk_upd_action); + READ_CHAR_FIELD(fk_del_action, fk_del_action, fk_del_action); + READ_LIST_FIELD(old_conpfeqop, old_conpfeqop, old_conpfeqop); + READ_UINT_FIELD(old_pktable_oid, old_pktable_oid, old_pktable_oid); + READ_BOOL_FIELD(skip_validation, skip_validation, skip_validation); + READ_BOOL_FIELD(initially_valid, initially_valid, initially_valid); + return node; +} + +static DefElem * +_readDefElem(OUT_TYPE(DefElem, DefElem) msg) +{ + DefElem *node = makeNode(DefElem); + READ_STRING_FIELD(defnamespace, defnamespace, defnamespace); + READ_STRING_FIELD(defname, defname, defname); + READ_NODE_PTR_FIELD(arg, arg, arg); + READ_ENUM_FIELD(DefElemAction, defaction, defaction, defaction); + READ_INT_FIELD(location, location, location); + return node; +} + +static RangeTblEntry * +_readRangeTblEntry(OUT_TYPE(RangeTblEntry, RangeTblEntry) msg) +{ + RangeTblEntry *node = makeNode(RangeTblEntry); + READ_ENUM_FIELD(RTEKind, rtekind, rtekind, rtekind); + READ_UINT_FIELD(relid, relid, relid); + READ_CHAR_FIELD(relkind, relkind, relkind); + READ_INT_FIELD(rellockmode, rellockmode, rellockmode); + READ_SPECIFIC_NODE_PTR_FIELD(TableSampleClause, table_sample_clause, tablesample, tablesample, tablesample); + READ_SPECIFIC_NODE_PTR_FIELD(Query, query, subquery, subquery, subquery); + READ_BOOL_FIELD(security_barrier, security_barrier, security_barrier); + READ_ENUM_FIELD(JoinType, jointype, jointype, jointype); + READ_INT_FIELD(joinmergedcols, joinmergedcols, joinmergedcols); + READ_LIST_FIELD(joinaliasvars, joinaliasvars, joinaliasvars); + READ_LIST_FIELD(joinleftcols, joinleftcols, joinleftcols); + READ_LIST_FIELD(joinrightcols, joinrightcols, joinrightcols); + READ_LIST_FIELD(functions, functions, functions); + READ_BOOL_FIELD(funcordinality, funcordinality, funcordinality); + READ_SPECIFIC_NODE_PTR_FIELD(TableFunc, table_func, tablefunc, tablefunc, tablefunc); + READ_LIST_FIELD(values_lists, values_lists, values_lists); + READ_STRING_FIELD(ctename, ctename, ctename); + READ_UINT_FIELD(ctelevelsup, ctelevelsup, ctelevelsup); + READ_BOOL_FIELD(self_reference, self_reference, self_reference); + READ_LIST_FIELD(coltypes, coltypes, coltypes); + READ_LIST_FIELD(coltypmods, coltypmods, coltypmods); + READ_LIST_FIELD(colcollations, colcollations, colcollations); + READ_STRING_FIELD(enrname, enrname, enrname); + READ_FLOAT_FIELD(enrtuples, enrtuples, enrtuples); + READ_SPECIFIC_NODE_PTR_FIELD(Alias, alias, alias, alias, alias); + READ_SPECIFIC_NODE_PTR_FIELD(Alias, alias, eref, eref, eref); + READ_BOOL_FIELD(lateral, lateral, lateral); + READ_BOOL_FIELD(inh, inh, inh); + READ_BOOL_FIELD(in_from_cl, inFromCl, inFromCl); + READ_UINT_FIELD(required_perms, requiredPerms, requiredPerms); + READ_UINT_FIELD(check_as_user, checkAsUser, checkAsUser); + READ_BITMAPSET_FIELD(selected_cols, selectedCols, selectedCols); + READ_BITMAPSET_FIELD(inserted_cols, insertedCols, insertedCols); + READ_BITMAPSET_FIELD(updated_cols, updatedCols, updatedCols); + READ_BITMAPSET_FIELD(extra_updated_cols, extraUpdatedCols, extraUpdatedCols); + READ_LIST_FIELD(security_quals, securityQuals, securityQuals); + return node; +} + +static RangeTblFunction * +_readRangeTblFunction(OUT_TYPE(RangeTblFunction, RangeTblFunction) msg) +{ + RangeTblFunction *node = makeNode(RangeTblFunction); + READ_NODE_PTR_FIELD(funcexpr, funcexpr, funcexpr); + READ_INT_FIELD(funccolcount, funccolcount, funccolcount); + READ_LIST_FIELD(funccolnames, funccolnames, funccolnames); + READ_LIST_FIELD(funccoltypes, funccoltypes, funccoltypes); + READ_LIST_FIELD(funccoltypmods, funccoltypmods, funccoltypmods); + READ_LIST_FIELD(funccolcollations, funccolcollations, funccolcollations); + READ_BITMAPSET_FIELD(funcparams, funcparams, funcparams); + return node; +} + +static TableSampleClause * +_readTableSampleClause(OUT_TYPE(TableSampleClause, TableSampleClause) msg) +{ + TableSampleClause *node = makeNode(TableSampleClause); + READ_UINT_FIELD(tsmhandler, tsmhandler, tsmhandler); + READ_LIST_FIELD(args, args, args); + READ_EXPR_PTR_FIELD(repeatable, repeatable, repeatable); + return node; +} + +static WithCheckOption * +_readWithCheckOption(OUT_TYPE(WithCheckOption, WithCheckOption) msg) +{ + WithCheckOption *node = makeNode(WithCheckOption); + READ_ENUM_FIELD(WCOKind, kind, kind, kind); + READ_STRING_FIELD(relname, relname, relname); + READ_STRING_FIELD(polname, polname, polname); + READ_NODE_PTR_FIELD(qual, qual, qual); + READ_BOOL_FIELD(cascaded, cascaded, cascaded); + return node; +} + +static SortGroupClause * +_readSortGroupClause(OUT_TYPE(SortGroupClause, SortGroupClause) msg) +{ + SortGroupClause *node = makeNode(SortGroupClause); + READ_UINT_FIELD(tle_sort_group_ref, tleSortGroupRef, tleSortGroupRef); + READ_UINT_FIELD(eqop, eqop, eqop); + READ_UINT_FIELD(sortop, sortop, sortop); + READ_BOOL_FIELD(nulls_first, nulls_first, nulls_first); + READ_BOOL_FIELD(hashable, hashable, hashable); + return node; +} + +static GroupingSet * +_readGroupingSet(OUT_TYPE(GroupingSet, GroupingSet) msg) +{ + GroupingSet *node = makeNode(GroupingSet); + READ_ENUM_FIELD(GroupingSetKind, kind, kind, kind); + READ_LIST_FIELD(content, content, content); + READ_INT_FIELD(location, location, location); + return node; +} + +static WindowClause * +_readWindowClause(OUT_TYPE(WindowClause, WindowClause) msg) +{ + WindowClause *node = makeNode(WindowClause); + READ_STRING_FIELD(name, name, name); + READ_STRING_FIELD(refname, refname, refname); + READ_LIST_FIELD(partition_clause, partitionClause, partitionClause); + READ_LIST_FIELD(order_clause, orderClause, orderClause); + READ_INT_FIELD(frame_options, frameOptions, frameOptions); + READ_NODE_PTR_FIELD(start_offset, startOffset, startOffset); + READ_NODE_PTR_FIELD(end_offset, endOffset, endOffset); + READ_UINT_FIELD(start_in_range_func, startInRangeFunc, startInRangeFunc); + READ_UINT_FIELD(end_in_range_func, endInRangeFunc, endInRangeFunc); + READ_UINT_FIELD(in_range_coll, inRangeColl, inRangeColl); + READ_BOOL_FIELD(in_range_asc, inRangeAsc, inRangeAsc); + READ_BOOL_FIELD(in_range_nulls_first, inRangeNullsFirst, inRangeNullsFirst); + READ_UINT_FIELD(winref, winref, winref); + READ_BOOL_FIELD(copied_order, copiedOrder, copiedOrder); + return node; +} + +static ObjectWithArgs * +_readObjectWithArgs(OUT_TYPE(ObjectWithArgs, ObjectWithArgs) msg) +{ + ObjectWithArgs *node = makeNode(ObjectWithArgs); + READ_LIST_FIELD(objname, objname, objname); + READ_LIST_FIELD(objargs, objargs, objargs); + READ_BOOL_FIELD(args_unspecified, args_unspecified, args_unspecified); + return node; +} + +static AccessPriv * +_readAccessPriv(OUT_TYPE(AccessPriv, AccessPriv) msg) +{ + AccessPriv *node = makeNode(AccessPriv); + READ_STRING_FIELD(priv_name, priv_name, priv_name); + READ_LIST_FIELD(cols, cols, cols); + return node; +} + +static CreateOpClassItem * +_readCreateOpClassItem(OUT_TYPE(CreateOpClassItem, CreateOpClassItem) msg) +{ + CreateOpClassItem *node = makeNode(CreateOpClassItem); + READ_INT_FIELD(itemtype, itemtype, itemtype); + READ_SPECIFIC_NODE_PTR_FIELD(ObjectWithArgs, object_with_args, name, name, name); + READ_INT_FIELD(number, number, number); + READ_LIST_FIELD(order_family, order_family, order_family); + READ_LIST_FIELD(class_args, class_args, class_args); + READ_SPECIFIC_NODE_PTR_FIELD(TypeName, type_name, storedtype, storedtype, storedtype); + return node; +} + +static TableLikeClause * +_readTableLikeClause(OUT_TYPE(TableLikeClause, TableLikeClause) msg) +{ + TableLikeClause *node = makeNode(TableLikeClause); + READ_SPECIFIC_NODE_PTR_FIELD(RangeVar, range_var, relation, relation, relation); + READ_UINT_FIELD(options, options, options); + return node; +} + +static FunctionParameter * +_readFunctionParameter(OUT_TYPE(FunctionParameter, FunctionParameter) msg) +{ + FunctionParameter *node = makeNode(FunctionParameter); + READ_STRING_FIELD(name, name, name); + READ_SPECIFIC_NODE_PTR_FIELD(TypeName, type_name, arg_type, argType, argType); + READ_ENUM_FIELD(FunctionParameterMode, mode, mode, mode); + READ_NODE_PTR_FIELD(defexpr, defexpr, defexpr); + return node; +} + +static LockingClause * +_readLockingClause(OUT_TYPE(LockingClause, LockingClause) msg) +{ + LockingClause *node = makeNode(LockingClause); + READ_LIST_FIELD(locked_rels, lockedRels, lockedRels); + READ_ENUM_FIELD(LockClauseStrength, strength, strength, strength); + READ_ENUM_FIELD(LockWaitPolicy, wait_policy, waitPolicy, waitPolicy); + return node; +} + +static RowMarkClause * +_readRowMarkClause(OUT_TYPE(RowMarkClause, RowMarkClause) msg) +{ + RowMarkClause *node = makeNode(RowMarkClause); + READ_UINT_FIELD(rti, rti, rti); + READ_ENUM_FIELD(LockClauseStrength, strength, strength, strength); + READ_ENUM_FIELD(LockWaitPolicy, wait_policy, waitPolicy, waitPolicy); + READ_BOOL_FIELD(pushed_down, pushedDown, pushedDown); + return node; +} + +static XmlSerialize * +_readXmlSerialize(OUT_TYPE(XmlSerialize, XmlSerialize) msg) +{ + XmlSerialize *node = makeNode(XmlSerialize); + READ_ENUM_FIELD(XmlOptionType, xmloption, xmloption, xmloption); + READ_NODE_PTR_FIELD(expr, expr, expr); + READ_SPECIFIC_NODE_PTR_FIELD(TypeName, type_name, type_name, typeName, typeName); + READ_INT_FIELD(location, location, location); + return node; +} + +static WithClause * +_readWithClause(OUT_TYPE(WithClause, WithClause) msg) +{ + WithClause *node = makeNode(WithClause); + READ_LIST_FIELD(ctes, ctes, ctes); + READ_BOOL_FIELD(recursive, recursive, recursive); + READ_INT_FIELD(location, location, location); + return node; +} + +static InferClause * +_readInferClause(OUT_TYPE(InferClause, InferClause) msg) +{ + InferClause *node = makeNode(InferClause); + READ_LIST_FIELD(index_elems, indexElems, indexElems); + READ_NODE_PTR_FIELD(where_clause, whereClause, whereClause); + READ_STRING_FIELD(conname, conname, conname); + READ_INT_FIELD(location, location, location); + return node; +} + +static OnConflictClause * +_readOnConflictClause(OUT_TYPE(OnConflictClause, OnConflictClause) msg) +{ + OnConflictClause *node = makeNode(OnConflictClause); + READ_ENUM_FIELD(OnConflictAction, action, action, action); + READ_SPECIFIC_NODE_PTR_FIELD(InferClause, infer_clause, infer, infer, infer); + READ_LIST_FIELD(target_list, targetList, targetList); + READ_NODE_PTR_FIELD(where_clause, whereClause, whereClause); + READ_INT_FIELD(location, location, location); + return node; +} + +static CommonTableExpr * +_readCommonTableExpr(OUT_TYPE(CommonTableExpr, CommonTableExpr) msg) +{ + CommonTableExpr *node = makeNode(CommonTableExpr); + READ_STRING_FIELD(ctename, ctename, ctename); + READ_LIST_FIELD(aliascolnames, aliascolnames, aliascolnames); + READ_ENUM_FIELD(CTEMaterialize, ctematerialized, ctematerialized, ctematerialized); + READ_NODE_PTR_FIELD(ctequery, ctequery, ctequery); + READ_INT_FIELD(location, location, location); + READ_BOOL_FIELD(cterecursive, cterecursive, cterecursive); + READ_INT_FIELD(cterefcount, cterefcount, cterefcount); + READ_LIST_FIELD(ctecolnames, ctecolnames, ctecolnames); + READ_LIST_FIELD(ctecoltypes, ctecoltypes, ctecoltypes); + READ_LIST_FIELD(ctecoltypmods, ctecoltypmods, ctecoltypmods); + READ_LIST_FIELD(ctecolcollations, ctecolcollations, ctecolcollations); + return node; +} + +static RoleSpec * +_readRoleSpec(OUT_TYPE(RoleSpec, RoleSpec) msg) +{ + RoleSpec *node = makeNode(RoleSpec); + READ_ENUM_FIELD(RoleSpecType, roletype, roletype, roletype); + READ_STRING_FIELD(rolename, rolename, rolename); + READ_INT_FIELD(location, location, location); + return node; +} + +static TriggerTransition * +_readTriggerTransition(OUT_TYPE(TriggerTransition, TriggerTransition) msg) +{ + TriggerTransition *node = makeNode(TriggerTransition); + READ_STRING_FIELD(name, name, name); + READ_BOOL_FIELD(is_new, isNew, isNew); + READ_BOOL_FIELD(is_table, isTable, isTable); + return node; +} + +static PartitionElem * +_readPartitionElem(OUT_TYPE(PartitionElem, PartitionElem) msg) +{ + PartitionElem *node = makeNode(PartitionElem); + READ_STRING_FIELD(name, name, name); + READ_NODE_PTR_FIELD(expr, expr, expr); + READ_LIST_FIELD(collation, collation, collation); + READ_LIST_FIELD(opclass, opclass, opclass); + READ_INT_FIELD(location, location, location); + return node; +} + +static PartitionSpec * +_readPartitionSpec(OUT_TYPE(PartitionSpec, PartitionSpec) msg) +{ + PartitionSpec *node = makeNode(PartitionSpec); + READ_STRING_FIELD(strategy, strategy, strategy); + READ_LIST_FIELD(part_params, partParams, partParams); + READ_INT_FIELD(location, location, location); + return node; +} + +static PartitionBoundSpec * +_readPartitionBoundSpec(OUT_TYPE(PartitionBoundSpec, PartitionBoundSpec) msg) +{ + PartitionBoundSpec *node = makeNode(PartitionBoundSpec); + READ_CHAR_FIELD(strategy, strategy, strategy); + READ_BOOL_FIELD(is_default, is_default, is_default); + READ_INT_FIELD(modulus, modulus, modulus); + READ_INT_FIELD(remainder, remainder, remainder); + READ_LIST_FIELD(listdatums, listdatums, listdatums); + READ_LIST_FIELD(lowerdatums, lowerdatums, lowerdatums); + READ_LIST_FIELD(upperdatums, upperdatums, upperdatums); + READ_INT_FIELD(location, location, location); + return node; +} + +static PartitionRangeDatum * +_readPartitionRangeDatum(OUT_TYPE(PartitionRangeDatum, PartitionRangeDatum) msg) +{ + PartitionRangeDatum *node = makeNode(PartitionRangeDatum); + READ_ENUM_FIELD(PartitionRangeDatumKind, kind, kind, kind); + READ_NODE_PTR_FIELD(value, value, value); + READ_INT_FIELD(location, location, location); + return node; +} + +static PartitionCmd * +_readPartitionCmd(OUT_TYPE(PartitionCmd, PartitionCmd) msg) +{ + PartitionCmd *node = makeNode(PartitionCmd); + READ_SPECIFIC_NODE_PTR_FIELD(RangeVar, range_var, name, name, name); + READ_SPECIFIC_NODE_PTR_FIELD(PartitionBoundSpec, partition_bound_spec, bound, bound, bound); + return node; +} + +static VacuumRelation * +_readVacuumRelation(OUT_TYPE(VacuumRelation, VacuumRelation) msg) +{ + VacuumRelation *node = makeNode(VacuumRelation); + READ_SPECIFIC_NODE_PTR_FIELD(RangeVar, range_var, relation, relation, relation); + READ_UINT_FIELD(oid, oid, oid); + READ_LIST_FIELD(va_cols, va_cols, va_cols); + return node; +} + +static InlineCodeBlock * +_readInlineCodeBlock(OUT_TYPE(InlineCodeBlock, InlineCodeBlock) msg) +{ + InlineCodeBlock *node = makeNode(InlineCodeBlock); + READ_STRING_FIELD(source_text, source_text, source_text); + READ_UINT_FIELD(lang_oid, langOid, langOid); + READ_BOOL_FIELD(lang_is_trusted, langIsTrusted, langIsTrusted); + READ_BOOL_FIELD(atomic, atomic, atomic); + return node; +} + +static CallContext * +_readCallContext(OUT_TYPE(CallContext, CallContext) msg) +{ + CallContext *node = makeNode(CallContext); + READ_BOOL_FIELD(atomic, atomic, atomic); + return node; +} + diff --git a/parser/include/pg_trace.h b/parser/include/pg_trace.h index 29bc95d0..cf212aea 100644 --- a/parser/include/pg_trace.h +++ b/parser/include/pg_trace.h @@ -3,7 +3,7 @@ * * Definitions for the PostgreSQL tracing framework * - * Copyright (c) 2006-2017, PostgreSQL Global Development Group + * Copyright (c) 2006-2020, PostgreSQL Global Development Group * * src/include/pg_trace.h * ---------- diff --git a/parser/include/pgstat.h b/parser/include/pgstat.h index 682ebe53..c55dc148 100644 --- a/parser/include/pgstat.h +++ b/parser/include/pgstat.h @@ -3,7 +3,7 @@ * * Definitions for the PostgreSQL statistics collector daemon. * - * Copyright (c) 2001-2017, PostgreSQL Global Development Group + * Copyright (c) 2001-2020, PostgreSQL Global Development Group * * src/include/pgstat.h * ---------- @@ -12,8 +12,8 @@ #define PGSTAT_H #include "datatype/timestamp.h" -#include "fmgr.h" #include "libpq/pqcomm.h" +#include "miscadmin.h" #include "port/atomics.h" #include "portability/instr_time.h" #include "postmaster/pgarch.h" @@ -55,16 +55,19 @@ typedef enum StatMsgType PGSTAT_MTYPE_RESETCOUNTER, PGSTAT_MTYPE_RESETSHAREDCOUNTER, PGSTAT_MTYPE_RESETSINGLECOUNTER, + PGSTAT_MTYPE_RESETSLRUCOUNTER, PGSTAT_MTYPE_AUTOVAC_START, PGSTAT_MTYPE_VACUUM, PGSTAT_MTYPE_ANALYZE, PGSTAT_MTYPE_ARCHIVER, PGSTAT_MTYPE_BGWRITER, + PGSTAT_MTYPE_SLRU, PGSTAT_MTYPE_FUNCSTAT, PGSTAT_MTYPE_FUNCPURGE, PGSTAT_MTYPE_RECOVERYCONFLICT, PGSTAT_MTYPE_TEMPFILE, - PGSTAT_MTYPE_DEADLOCK + PGSTAT_MTYPE_DEADLOCK, + PGSTAT_MTYPE_CHECKSUMFAILURE } StatMsgType; /* ---------- @@ -342,6 +345,17 @@ typedef struct PgStat_MsgResetsinglecounter Oid m_objectid; } PgStat_MsgResetsinglecounter; +/* ---------- + * PgStat_MsgResetslrucounter Sent by the backend to tell the collector + * to reset a SLRU counter + * ---------- + */ +typedef struct PgStat_MsgResetslrucounter +{ + PgStat_MsgHdr m_hdr; + int m_index; +} PgStat_MsgResetslrucounter; + /* ---------- * PgStat_MsgAutovacStart Sent by the autovacuum daemon to signal * that a database is going to be processed @@ -422,6 +436,23 @@ typedef struct PgStat_MsgBgWriter PgStat_Counter m_checkpoint_sync_time; } PgStat_MsgBgWriter; +/* ---------- + * PgStat_MsgSLRU Sent by a backend to update SLRU statistics. + * ---------- + */ +typedef struct PgStat_MsgSLRU +{ + PgStat_MsgHdr m_hdr; + PgStat_Counter m_index; + PgStat_Counter m_blocks_zeroed; + PgStat_Counter m_blocks_hit; + PgStat_Counter m_blocks_read; + PgStat_Counter m_blocks_written; + PgStat_Counter m_blocks_exists; + PgStat_Counter m_flush; + PgStat_Counter m_truncate; +} PgStat_MsgSLRU; + /* ---------- * PgStat_MsgRecoveryConflict Sent by the backend upon recovery conflict * ---------- @@ -530,6 +561,19 @@ typedef struct PgStat_MsgDeadlock Oid m_databaseid; } PgStat_MsgDeadlock; +/* ---------- + * PgStat_MsgChecksumFailure Sent by the backend to tell the collector + * about checksum failures noticed. + * ---------- + */ +typedef struct PgStat_MsgChecksumFailure +{ + PgStat_MsgHdr m_hdr; + Oid m_databaseid; + int m_failurecount; + TimestampTz m_failure_time; +} PgStat_MsgChecksumFailure; + /* ---------- * PgStat_Msg Union over all possible messages. @@ -546,15 +590,19 @@ typedef union PgStat_Msg PgStat_MsgResetcounter msg_resetcounter; PgStat_MsgResetsharedcounter msg_resetsharedcounter; PgStat_MsgResetsinglecounter msg_resetsinglecounter; - PgStat_MsgAutovacStart msg_autovacuum; + PgStat_MsgResetslrucounter msg_resetslrucounter; + PgStat_MsgAutovacStart msg_autovacuum_start; PgStat_MsgVacuum msg_vacuum; PgStat_MsgAnalyze msg_analyze; PgStat_MsgArchiver msg_archiver; PgStat_MsgBgWriter msg_bgwriter; + PgStat_MsgSLRU msg_slru; PgStat_MsgFuncstat msg_funcstat; PgStat_MsgFuncpurge msg_funcpurge; PgStat_MsgRecoveryConflict msg_recoveryconflict; PgStat_MsgDeadlock msg_deadlock; + PgStat_MsgTempFile msg_tempfile; + PgStat_MsgChecksumFailure msg_checksumfailure; } PgStat_Msg; @@ -593,6 +641,8 @@ typedef struct PgStat_StatDBEntry PgStat_Counter n_temp_files; PgStat_Counter n_temp_bytes; PgStat_Counter n_deadlocks; + PgStat_Counter n_checksum_failures; + TimestampTz last_checksum_failure; PgStat_Counter n_block_read_time; /* times in microseconds */ PgStat_Counter n_block_write_time; @@ -629,6 +679,7 @@ typedef struct PgStat_StatTabEntry PgStat_Counter n_live_tuples; PgStat_Counter n_dead_tuples; PgStat_Counter changes_since_analyze; + PgStat_Counter inserts_since_vacuum; PgStat_Counter blocks_fetched; PgStat_Counter blocks_hit; @@ -694,24 +745,20 @@ typedef struct PgStat_GlobalStats TimestampTz stat_reset_timestamp; } PgStat_GlobalStats; - -/* ---------- - * Backend types - * ---------- +/* + * SLRU statistics kept in the stats collector */ -typedef enum BackendType +typedef struct PgStat_SLRUStats { - B_AUTOVAC_LAUNCHER, - B_AUTOVAC_WORKER, - B_BACKEND, - B_BG_WORKER, - B_BG_WRITER, - B_CHECKPOINTER, - B_STARTUP, - B_WAL_RECEIVER, - B_WAL_SENDER, - B_WAL_WRITER -} BackendType; + PgStat_Counter blocks_zeroed; + PgStat_Counter blocks_hit; + PgStat_Counter blocks_read; + PgStat_Counter blocks_written; + PgStat_Counter blocks_exists; + PgStat_Counter flush; + PgStat_Counter truncate; + TimestampTz stat_reset_timestamp; +} PgStat_SLRUStats; /* ---------- @@ -759,10 +806,9 @@ typedef enum WAIT_EVENT_BGWRITER_HIBERNATE, WAIT_EVENT_BGWRITER_MAIN, WAIT_EVENT_CHECKPOINTER_MAIN, - WAIT_EVENT_LOGICAL_LAUNCHER_MAIN, WAIT_EVENT_LOGICAL_APPLY_MAIN, + WAIT_EVENT_LOGICAL_LAUNCHER_MAIN, WAIT_EVENT_PGSTAT_MAIN, - WAIT_EVENT_RECOVERY_WAL_ALL, WAIT_EVENT_RECOVERY_WAL_STREAM, WAIT_EVENT_SYSLOGGER_MAIN, WAIT_EVENT_WAL_RECEIVER_MAIN, @@ -782,12 +828,13 @@ typedef enum { WAIT_EVENT_CLIENT_READ = PG_WAIT_CLIENT, WAIT_EVENT_CLIENT_WRITE, + WAIT_EVENT_GSS_OPEN_SERVER, WAIT_EVENT_LIBPQWALRECEIVER_CONNECT, WAIT_EVENT_LIBPQWALRECEIVER_RECEIVE, WAIT_EVENT_SSL_OPEN_SERVER, WAIT_EVENT_WAL_RECEIVER_WAIT_START, WAIT_EVENT_WAL_SENDER_WAIT_WAL, - WAIT_EVENT_WAL_SENDER_WRITE_DATA + WAIT_EVENT_WAL_SENDER_WRITE_DATA, } WaitEventClient; /* ---------- @@ -799,23 +846,48 @@ typedef enum */ typedef enum { - WAIT_EVENT_BGWORKER_SHUTDOWN = PG_WAIT_IPC, + WAIT_EVENT_BACKUP_WAIT_WAL_ARCHIVE = PG_WAIT_IPC, + WAIT_EVENT_BGWORKER_SHUTDOWN, WAIT_EVENT_BGWORKER_STARTUP, WAIT_EVENT_BTREE_PAGE, + WAIT_EVENT_CHECKPOINT_DONE, + WAIT_EVENT_CHECKPOINT_START, WAIT_EVENT_EXECUTE_GATHER, + WAIT_EVENT_HASH_BATCH_ALLOCATE, + WAIT_EVENT_HASH_BATCH_ELECT, + WAIT_EVENT_HASH_BATCH_LOAD, + WAIT_EVENT_HASH_BUILD_ALLOCATE, + WAIT_EVENT_HASH_BUILD_ELECT, + WAIT_EVENT_HASH_BUILD_HASH_INNER, + WAIT_EVENT_HASH_BUILD_HASH_OUTER, + WAIT_EVENT_HASH_GROW_BATCHES_ALLOCATE, + WAIT_EVENT_HASH_GROW_BATCHES_DECIDE, + WAIT_EVENT_HASH_GROW_BATCHES_ELECT, + WAIT_EVENT_HASH_GROW_BATCHES_FINISH, + WAIT_EVENT_HASH_GROW_BATCHES_REPARTITION, + WAIT_EVENT_HASH_GROW_BUCKETS_ALLOCATE, + WAIT_EVENT_HASH_GROW_BUCKETS_ELECT, + WAIT_EVENT_HASH_GROW_BUCKETS_REINSERT, WAIT_EVENT_LOGICAL_SYNC_DATA, WAIT_EVENT_LOGICAL_SYNC_STATE_CHANGE, WAIT_EVENT_MQ_INTERNAL, WAIT_EVENT_MQ_PUT_MESSAGE, WAIT_EVENT_MQ_RECEIVE, WAIT_EVENT_MQ_SEND, - WAIT_EVENT_PARALLEL_FINISH, WAIT_EVENT_PARALLEL_BITMAP_SCAN, + WAIT_EVENT_PARALLEL_CREATE_INDEX_SCAN, + WAIT_EVENT_PARALLEL_FINISH, WAIT_EVENT_PROCARRAY_GROUP_UPDATE, + WAIT_EVENT_PROC_SIGNAL_BARRIER, + WAIT_EVENT_PROMOTE, + WAIT_EVENT_RECOVERY_CONFLICT_SNAPSHOT, + WAIT_EVENT_RECOVERY_CONFLICT_TABLESPACE, + WAIT_EVENT_RECOVERY_PAUSE, WAIT_EVENT_REPLICATION_ORIGIN_DROP, WAIT_EVENT_REPLICATION_SLOT_DROP, WAIT_EVENT_SAFE_SNAPSHOT, - WAIT_EVENT_SYNC_REP + WAIT_EVENT_SYNC_REP, + WAIT_EVENT_XACT_GROUP_UPDATE } WaitEventIPC; /* ---------- @@ -828,7 +900,9 @@ typedef enum { WAIT_EVENT_BASE_BACKUP_THROTTLE = PG_WAIT_TIMEOUT, WAIT_EVENT_PG_SLEEP, - WAIT_EVENT_RECOVERY_APPLY_DELAY + WAIT_EVENT_RECOVERY_APPLY_DELAY, + WAIT_EVENT_RECOVERY_RETRIEVE_RETRY_INTERVAL, + WAIT_EVENT_VACUUM_DELAY } WaitEventTimeout; /* ---------- @@ -904,6 +978,7 @@ typedef enum WAIT_EVENT_WAL_INIT_SYNC, WAIT_EVENT_WAL_INIT_WRITE, WAIT_EVENT_WAL_READ, + WAIT_EVENT_WAL_SYNC, WAIT_EVENT_WAL_SYNC_METHOD_ASSIGN, WAIT_EVENT_WAL_WRITE } WaitEventIO; @@ -915,10 +990,14 @@ typedef enum typedef enum ProgressCommandType { PROGRESS_COMMAND_INVALID, - PROGRESS_COMMAND_VACUUM + PROGRESS_COMMAND_VACUUM, + PROGRESS_COMMAND_ANALYZE, + PROGRESS_COMMAND_CLUSTER, + PROGRESS_COMMAND_CREATE_INDEX, + PROGRESS_COMMAND_BASEBACKUP } ProgressCommandType; -#define PGSTAT_NUM_PROGRESS_PARAM 10 +#define PGSTAT_NUM_PROGRESS_PARAM 20 /* ---------- * Shared-memory data structures @@ -931,17 +1010,44 @@ typedef enum ProgressCommandType * * For each backend, we keep the SSL status in a separate struct, that * is only filled in if SSL is enabled. + * + * All char arrays must be null-terminated. */ typedef struct PgBackendSSLStatus { /* Information about SSL connection */ int ssl_bits; bool ssl_compression; - char ssl_version[NAMEDATALEN]; /* MUST be null-terminated */ - char ssl_cipher[NAMEDATALEN]; /* MUST be null-terminated */ - char ssl_clientdn[NAMEDATALEN]; /* MUST be null-terminated */ + char ssl_version[NAMEDATALEN]; + char ssl_cipher[NAMEDATALEN]; + char ssl_client_dn[NAMEDATALEN]; + + /* + * serial number is max "20 octets" per RFC 5280, so this size should be + * fine + */ + char ssl_client_serial[NAMEDATALEN]; + + char ssl_issuer_dn[NAMEDATALEN]; } PgBackendSSLStatus; +/* + * PgBackendGSSStatus + * + * For each backend, we keep the GSS status in a separate struct, that + * is only filled in if GSS is enabled. + * + * All char arrays must be null-terminated. + */ +typedef struct PgBackendGSSStatus +{ + /* Information about GSSAPI connection */ + char gss_princ[NAMEDATALEN]; /* GSSAPI Principal used to auth */ + bool gss_auth; /* If GSSAPI authentication was used */ + bool gss_enc; /* If encryption is being used */ + +} PgBackendGSSStatus; + /* ---------- * PgBackendStatus @@ -997,14 +1103,24 @@ typedef struct PgBackendStatus bool st_ssl; PgBackendSSLStatus *st_sslstatus; + /* Information about GSSAPI connection */ + bool st_gss; + PgBackendGSSStatus *st_gssstatus; + /* current state */ BackendState st_state; /* application name; MUST be null-terminated */ char *st_appname; - /* current command string; MUST be null-terminated */ - char *st_activity; + /* + * Current command string; MUST be null-terminated. Note that this string + * possibly is truncated in the middle of a multi-byte character. As + * activity strings are stored more frequently than read, that allows to + * move the cost of correct truncation to the display side. Use + * pgstat_clip_activity() to truncate correctly. + */ + char *st_activity_raw; /* * Command progress reporting. Any command which wishes can advertise @@ -1080,16 +1196,6 @@ typedef struct PgBackendStatus ((before_changecount) == (after_changecount) && \ ((before_changecount) & 1) == 0) -/* deprecated names for above macros; these are gone in v12 */ -#define pgstat_increment_changecount_before(beentry) \ - PGSTAT_BEGIN_WRITE_ACTIVITY(beentry) -#define pgstat_increment_changecount_after(beentry) \ - PGSTAT_END_WRITE_ACTIVITY(beentry) -#define pgstat_save_changecount_before(beentry, save_changecount) \ - pgstat_begin_read_activity(beentry, save_changecount) -#define pgstat_save_changecount_after(beentry, save_changecount) \ - pgstat_end_read_activity(beentry, save_changecount) - /* ---------- * LocalPgBackendStatus @@ -1190,16 +1296,19 @@ extern void pgstat_clear_snapshot(void); extern void pgstat_reset_counters(void); extern void pgstat_reset_shared_counters(const char *); extern void pgstat_reset_single_counter(Oid objectid, PgStat_Single_Reset_Type type); +extern void pgstat_reset_slru_counter(const char *); extern void pgstat_report_autovac(Oid dboid); extern void pgstat_report_vacuum(Oid tableoid, bool shared, - PgStat_Counter livetuples, PgStat_Counter deadtuples); + PgStat_Counter livetuples, PgStat_Counter deadtuples); extern void pgstat_report_analyze(Relation rel, - PgStat_Counter livetuples, PgStat_Counter deadtuples, - bool resetcounter); + PgStat_Counter livetuples, PgStat_Counter deadtuples, + bool resetcounter); extern void pgstat_report_recovery_conflict(int reason); extern void pgstat_report_deadlock(void); +extern void pgstat_report_checksum_failures_in_db(Oid dboid, int failurecount); +extern void pgstat_report_checksum_failure(void); extern void pgstat_initialize(void); extern void pgstat_bestart(void); @@ -1212,14 +1321,13 @@ extern const char *pgstat_get_wait_event(uint32 wait_event_info); extern const char *pgstat_get_wait_event_type(uint32 wait_event_info); extern const char *pgstat_get_backend_current_activity(int pid, bool checkUser); extern const char *pgstat_get_crashed_backend_activity(int pid, char *buffer, - int buflen); -extern const char *pgstat_get_backend_desc(BackendType backendType); + int buflen); extern void pgstat_progress_start_command(ProgressCommandType cmdtype, - Oid relid); + Oid relid); extern void pgstat_progress_update_param(int index, int64 val); extern void pgstat_progress_update_multi_param(int nparam, const int *index, - const int64 *val); + const int64 *val); extern void pgstat_progress_end_command(void); extern PgStat_TableStatus *find_tabstat_entry(Oid rel_id); @@ -1227,6 +1335,8 @@ extern PgStat_BackendFunctionEntry *find_funcstat_entry(Oid func_id); extern void pgstat_initstats(Relation rel); +extern char *pgstat_clip_activity(const char *raw_activity); + /* ---------- * pgstat_report_wait_start() - * @@ -1329,10 +1439,11 @@ extern void pgstat_count_heap_delete(Relation rel); extern void pgstat_count_truncate(Relation rel); extern void pgstat_update_heap_dead_tuples(Relation rel, int delta); -extern void pgstat_init_function_usage(FunctionCallInfoData *fcinfo, - PgStat_FunctionCallUsage *fcu); +struct FunctionCallInfoBaseData; +extern void pgstat_init_function_usage(struct FunctionCallInfoBaseData *fcinfo, + PgStat_FunctionCallUsage *fcu); extern void pgstat_end_function_usage(PgStat_FunctionCallUsage *fcu, - bool finalize); + bool finalize); extern void AtEOXact_PgStat(bool isCommit, bool parallel); extern void AtEOSubXact_PgStat(bool isCommit, int nestDepth); @@ -1341,9 +1452,9 @@ extern void AtPrepare_PgStat(void); extern void PostPrepare_PgStat(void); extern void pgstat_twophase_postcommit(TransactionId xid, uint16 info, - void *recdata, uint32 len); + void *recdata, uint32 len); extern void pgstat_twophase_postabort(TransactionId xid, uint16 info, - void *recdata, uint32 len); + void *recdata, uint32 len); extern void pgstat_send_archiver(const char *xlog, bool failed); extern void pgstat_send_bgwriter(void); @@ -1361,5 +1472,16 @@ extern PgStat_StatFuncEntry *pgstat_fetch_stat_funcentry(Oid funcid); extern int pgstat_fetch_stat_numbackends(void); extern PgStat_ArchiverStats *pgstat_fetch_stat_archiver(void); extern PgStat_GlobalStats *pgstat_fetch_global(void); +extern PgStat_SLRUStats *pgstat_fetch_slru(void); + +extern void pgstat_count_slru_page_zeroed(int slru_idx); +extern void pgstat_count_slru_page_hit(int slru_idx); +extern void pgstat_count_slru_page_read(int slru_idx); +extern void pgstat_count_slru_page_written(int slru_idx); +extern void pgstat_count_slru_page_exists(int slru_idx); +extern void pgstat_count_slru_flush(int slru_idx); +extern void pgstat_count_slru_truncate(int slru_idx); +extern const char *pgstat_slru_name(int slru_idx); +extern int pgstat_slru_index(const char *name); #endif /* PGSTAT_H */ diff --git a/parser/include/pgtime.h b/parser/include/pgtime.h index 8a13d717..0fc76d0e 100644 --- a/parser/include/pgtime.h +++ b/parser/include/pgtime.h @@ -3,7 +3,7 @@ * pgtime.h * PostgreSQL internal timezone library * - * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * * IDENTIFICATION * src/include/pgtime.h @@ -47,18 +47,18 @@ typedef struct pg_tzenum pg_tzenum; extern struct pg_tm *pg_localtime(const pg_time_t *timep, const pg_tz *tz); extern struct pg_tm *pg_gmtime(const pg_time_t *timep); -extern int pg_next_dst_boundary(const pg_time_t *timep, - long int *before_gmtoff, - int *before_isdst, - pg_time_t *boundary, - long int *after_gmtoff, - int *after_isdst, - const pg_tz *tz); +extern int pg_next_dst_boundary(const pg_time_t *timep, + long int *before_gmtoff, + int *before_isdst, + pg_time_t *boundary, + long int *after_gmtoff, + int *after_isdst, + const pg_tz *tz); extern bool pg_interpret_timezone_abbrev(const char *abbrev, - const pg_time_t *timep, - long int *gmtoff, - int *isdst, - const pg_tz *tz); + const pg_time_t *timep, + long int *gmtoff, + int *isdst, + const pg_tz *tz); extern bool pg_get_timezone_offset(const pg_tz *tz, long int *gmtoff); extern const char *pg_get_timezone_name(pg_tz *tz); extern bool pg_tz_acceptable(pg_tz *tz); @@ -66,7 +66,7 @@ extern bool pg_tz_acceptable(pg_tz *tz); /* these functions are in strftime.c */ extern size_t pg_strftime(char *s, size_t max, const char *format, - const struct pg_tm *tm); + const struct pg_tm *tm); /* these functions and variables are in pgtz.c */ diff --git a/parser/include/pl_gram.h b/parser/include/pl_gram.h index 5e54a46e..6f7841c7 100644 --- a/parser/include/pl_gram.h +++ b/parser/include/pl_gram.h @@ -1,14 +1,14 @@ -/* A Bison parser, made by GNU Bison 3.3.2. */ +/* A Bison parser, made by GNU Bison 2.3. */ -/* Bison interface for Yacc-like parsers in C +/* Skeleton interface for Bison's Yacc-like parsers in C - Copyright (C) 1984, 1989-1990, 2000-2015, 2018-2019 Free Software Foundation, - Inc. + Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006 + Free Software Foundation, Inc. - This program is free software: you can redistribute it and/or modify + This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. + the Free Software Foundation; either version 2, or (at your option) + any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of @@ -16,7 +16,9 @@ GNU General Public License for more details. You should have received a copy of the GNU General Public License - along with this program. If not, see . */ + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. */ /* As a special exception, you may create a larger work that contains part or all of the Bison parser skeleton and distribute that work @@ -31,153 +33,283 @@ This special exception was added by the Free Software Foundation in version 2.2 of Bison. */ -/* Undocumented macros, especially those whose name start with YY_, - are private implementation details. Do not rely on them. */ - -#ifndef YY_PLPGSQL_YY_PL_GRAM_H_INCLUDED -# define YY_PLPGSQL_YY_PL_GRAM_H_INCLUDED -/* Debug traces. */ -#ifndef YYDEBUG -# define YYDEBUG 0 -#endif -#if YYDEBUG -extern int plpgsql_yydebug; -#endif - -/* Token type. */ +/* Tokens. */ #ifndef YYTOKENTYPE # define YYTOKENTYPE - enum yytokentype - { - IDENT = 258, - FCONST = 259, - SCONST = 260, - BCONST = 261, - XCONST = 262, - Op = 263, - ICONST = 264, - PARAM = 265, - TYPECAST = 266, - DOT_DOT = 267, - COLON_EQUALS = 268, - EQUALS_GREATER = 269, - LESS_EQUALS = 270, - GREATER_EQUALS = 271, - NOT_EQUALS = 272, - T_WORD = 273, - T_CWORD = 274, - T_DATUM = 275, - LESS_LESS = 276, - GREATER_GREATER = 277, - K_ABSOLUTE = 278, - K_ALIAS = 279, - K_ALL = 280, - K_ARRAY = 281, - K_ASSERT = 282, - K_BACKWARD = 283, - K_BEGIN = 284, - K_BY = 285, - K_CASE = 286, - K_CLOSE = 287, - K_COLLATE = 288, - K_COLUMN = 289, - K_COLUMN_NAME = 290, - K_CONSTANT = 291, - K_CONSTRAINT = 292, - K_CONSTRAINT_NAME = 293, - K_CONTINUE = 294, - K_CURRENT = 295, - K_CURSOR = 296, - K_DATATYPE = 297, - K_DEBUG = 298, - K_DECLARE = 299, - K_DEFAULT = 300, - K_DETAIL = 301, - K_DIAGNOSTICS = 302, - K_DUMP = 303, - K_ELSE = 304, - K_ELSIF = 305, - K_END = 306, - K_ERRCODE = 307, - K_ERROR = 308, - K_EXCEPTION = 309, - K_EXECUTE = 310, - K_EXIT = 311, - K_FETCH = 312, - K_FIRST = 313, - K_FOR = 314, - K_FOREACH = 315, - K_FORWARD = 316, - K_FROM = 317, - K_GET = 318, - K_HINT = 319, - K_IF = 320, - K_IMPORT = 321, - K_IN = 322, - K_INFO = 323, - K_INSERT = 324, - K_INTO = 325, - K_IS = 326, - K_LAST = 327, - K_LOG = 328, - K_LOOP = 329, - K_MESSAGE = 330, - K_MESSAGE_TEXT = 331, - K_MOVE = 332, - K_NEXT = 333, - K_NO = 334, - K_NOT = 335, - K_NOTICE = 336, - K_NULL = 337, - K_OPEN = 338, - K_OPTION = 339, - K_OR = 340, - K_PERFORM = 341, - K_PG_CONTEXT = 342, - K_PG_DATATYPE_NAME = 343, - K_PG_EXCEPTION_CONTEXT = 344, - K_PG_EXCEPTION_DETAIL = 345, - K_PG_EXCEPTION_HINT = 346, - K_PRINT_STRICT_PARAMS = 347, - K_PRIOR = 348, - K_QUERY = 349, - K_RAISE = 350, - K_RELATIVE = 351, - K_RESULT_OID = 352, - K_RETURN = 353, - K_RETURNED_SQLSTATE = 354, - K_REVERSE = 355, - K_ROW_COUNT = 356, - K_ROWTYPE = 357, - K_SCHEMA = 358, - K_SCHEMA_NAME = 359, - K_SCROLL = 360, - K_SLICE = 361, - K_SQLSTATE = 362, - K_STACKED = 363, - K_STRICT = 364, - K_TABLE = 365, - K_TABLE_NAME = 366, - K_THEN = 367, - K_TO = 368, - K_TYPE = 369, - K_USE_COLUMN = 370, - K_USE_VARIABLE = 371, - K_USING = 372, - K_VARIABLE_CONFLICT = 373, - K_WARNING = 374, - K_WHEN = 375, - K_WHILE = 376 - }; + /* Put the tokens into the symbol table, so that GDB and other debuggers + know about them. */ + enum yytokentype { + IDENT = 258, + UIDENT = 259, + FCONST = 260, + SCONST = 261, + USCONST = 262, + BCONST = 263, + XCONST = 264, + Op = 265, + ICONST = 266, + PARAM = 267, + TYPECAST = 268, + DOT_DOT = 269, + COLON_EQUALS = 270, + EQUALS_GREATER = 271, + LESS_EQUALS = 272, + GREATER_EQUALS = 273, + NOT_EQUALS = 274, + SQL_COMMENT = 275, + C_COMMENT = 276, + T_WORD = 277, + T_CWORD = 278, + T_DATUM = 279, + LESS_LESS = 280, + GREATER_GREATER = 281, + K_ABSOLUTE = 282, + K_ALIAS = 283, + K_ALL = 284, + K_AND = 285, + K_ARRAY = 286, + K_ASSERT = 287, + K_BACKWARD = 288, + K_BEGIN = 289, + K_BY = 290, + K_CALL = 291, + K_CASE = 292, + K_CHAIN = 293, + K_CLOSE = 294, + K_COLLATE = 295, + K_COLUMN = 296, + K_COLUMN_NAME = 297, + K_COMMIT = 298, + K_CONSTANT = 299, + K_CONSTRAINT = 300, + K_CONSTRAINT_NAME = 301, + K_CONTINUE = 302, + K_CURRENT = 303, + K_CURSOR = 304, + K_DATATYPE = 305, + K_DEBUG = 306, + K_DECLARE = 307, + K_DEFAULT = 308, + K_DETAIL = 309, + K_DIAGNOSTICS = 310, + K_DO = 311, + K_DUMP = 312, + K_ELSE = 313, + K_ELSIF = 314, + K_END = 315, + K_ERRCODE = 316, + K_ERROR = 317, + K_EXCEPTION = 318, + K_EXECUTE = 319, + K_EXIT = 320, + K_FETCH = 321, + K_FIRST = 322, + K_FOR = 323, + K_FOREACH = 324, + K_FORWARD = 325, + K_FROM = 326, + K_GET = 327, + K_HINT = 328, + K_IF = 329, + K_IMPORT = 330, + K_IN = 331, + K_INFO = 332, + K_INSERT = 333, + K_INTO = 334, + K_IS = 335, + K_LAST = 336, + K_LOG = 337, + K_LOOP = 338, + K_MESSAGE = 339, + K_MESSAGE_TEXT = 340, + K_MOVE = 341, + K_NEXT = 342, + K_NO = 343, + K_NOT = 344, + K_NOTICE = 345, + K_NULL = 346, + K_OPEN = 347, + K_OPTION = 348, + K_OR = 349, + K_PERFORM = 350, + K_PG_CONTEXT = 351, + K_PG_DATATYPE_NAME = 352, + K_PG_EXCEPTION_CONTEXT = 353, + K_PG_EXCEPTION_DETAIL = 354, + K_PG_EXCEPTION_HINT = 355, + K_PRINT_STRICT_PARAMS = 356, + K_PRIOR = 357, + K_QUERY = 358, + K_RAISE = 359, + K_RELATIVE = 360, + K_RESET = 361, + K_RETURN = 362, + K_RETURNED_SQLSTATE = 363, + K_REVERSE = 364, + K_ROLLBACK = 365, + K_ROW_COUNT = 366, + K_ROWTYPE = 367, + K_SCHEMA = 368, + K_SCHEMA_NAME = 369, + K_SCROLL = 370, + K_SET = 371, + K_SLICE = 372, + K_SQLSTATE = 373, + K_STACKED = 374, + K_STRICT = 375, + K_TABLE = 376, + K_TABLE_NAME = 377, + K_THEN = 378, + K_TO = 379, + K_TYPE = 380, + K_USE_COLUMN = 381, + K_USE_VARIABLE = 382, + K_USING = 383, + K_VARIABLE_CONFLICT = 384, + K_WARNING = 385, + K_WHEN = 386, + K_WHILE = 387 + }; #endif +/* Tokens. */ +#define IDENT 258 +#define UIDENT 259 +#define FCONST 260 +#define SCONST 261 +#define USCONST 262 +#define BCONST 263 +#define XCONST 264 +#define Op 265 +#define ICONST 266 +#define PARAM 267 +#define TYPECAST 268 +#define DOT_DOT 269 +#define COLON_EQUALS 270 +#define EQUALS_GREATER 271 +#define LESS_EQUALS 272 +#define GREATER_EQUALS 273 +#define NOT_EQUALS 274 +#define SQL_COMMENT 275 +#define C_COMMENT 276 +#define T_WORD 277 +#define T_CWORD 278 +#define T_DATUM 279 +#define LESS_LESS 280 +#define GREATER_GREATER 281 +#define K_ABSOLUTE 282 +#define K_ALIAS 283 +#define K_ALL 284 +#define K_AND 285 +#define K_ARRAY 286 +#define K_ASSERT 287 +#define K_BACKWARD 288 +#define K_BEGIN 289 +#define K_BY 290 +#define K_CALL 291 +#define K_CASE 292 +#define K_CHAIN 293 +#define K_CLOSE 294 +#define K_COLLATE 295 +#define K_COLUMN 296 +#define K_COLUMN_NAME 297 +#define K_COMMIT 298 +#define K_CONSTANT 299 +#define K_CONSTRAINT 300 +#define K_CONSTRAINT_NAME 301 +#define K_CONTINUE 302 +#define K_CURRENT 303 +#define K_CURSOR 304 +#define K_DATATYPE 305 +#define K_DEBUG 306 +#define K_DECLARE 307 +#define K_DEFAULT 308 +#define K_DETAIL 309 +#define K_DIAGNOSTICS 310 +#define K_DO 311 +#define K_DUMP 312 +#define K_ELSE 313 +#define K_ELSIF 314 +#define K_END 315 +#define K_ERRCODE 316 +#define K_ERROR 317 +#define K_EXCEPTION 318 +#define K_EXECUTE 319 +#define K_EXIT 320 +#define K_FETCH 321 +#define K_FIRST 322 +#define K_FOR 323 +#define K_FOREACH 324 +#define K_FORWARD 325 +#define K_FROM 326 +#define K_GET 327 +#define K_HINT 328 +#define K_IF 329 +#define K_IMPORT 330 +#define K_IN 331 +#define K_INFO 332 +#define K_INSERT 333 +#define K_INTO 334 +#define K_IS 335 +#define K_LAST 336 +#define K_LOG 337 +#define K_LOOP 338 +#define K_MESSAGE 339 +#define K_MESSAGE_TEXT 340 +#define K_MOVE 341 +#define K_NEXT 342 +#define K_NO 343 +#define K_NOT 344 +#define K_NOTICE 345 +#define K_NULL 346 +#define K_OPEN 347 +#define K_OPTION 348 +#define K_OR 349 +#define K_PERFORM 350 +#define K_PG_CONTEXT 351 +#define K_PG_DATATYPE_NAME 352 +#define K_PG_EXCEPTION_CONTEXT 353 +#define K_PG_EXCEPTION_DETAIL 354 +#define K_PG_EXCEPTION_HINT 355 +#define K_PRINT_STRICT_PARAMS 356 +#define K_PRIOR 357 +#define K_QUERY 358 +#define K_RAISE 359 +#define K_RELATIVE 360 +#define K_RESET 361 +#define K_RETURN 362 +#define K_RETURNED_SQLSTATE 363 +#define K_REVERSE 364 +#define K_ROLLBACK 365 +#define K_ROW_COUNT 366 +#define K_ROWTYPE 367 +#define K_SCHEMA 368 +#define K_SCHEMA_NAME 369 +#define K_SCROLL 370 +#define K_SET 371 +#define K_SLICE 372 +#define K_SQLSTATE 373 +#define K_STACKED 374 +#define K_STRICT 375 +#define K_TABLE 376 +#define K_TABLE_NAME 377 +#define K_THEN 378 +#define K_TO 379 +#define K_TYPE 380 +#define K_USE_COLUMN 381 +#define K_USE_VARIABLE 382 +#define K_USING 383 +#define K_VARIABLE_CONFLICT 384 +#define K_WARNING 385 +#define K_WHEN 386 +#define K_WHILE 387 + -/* Value type. */ -#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED -union YYSTYPE -{ -#line 119 "pl_gram.y" /* yacc.c:1921 */ +#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED +typedef union YYSTYPE +#line 120 "pl_gram.y" +{ core_YYSTYPE core_yystype; /* these fields must match core_YYSTYPE: */ int ival; @@ -199,8 +331,7 @@ union YYSTYPE char *name; int lineno; PLpgSQL_datum *scalar; - PLpgSQL_rec *rec; - PLpgSQL_row *row; + PLpgSQL_datum *row; } forvariable; struct { @@ -227,32 +358,28 @@ union YYSTYPE PLpgSQL_diag_item *diagitem; PLpgSQL_stmt_fetch *fetch; PLpgSQL_case_when *casewhen; - -#line 232 "pl_gram.h" /* yacc.c:1921 */ -}; - -typedef union YYSTYPE YYSTYPE; -# define YYSTYPE_IS_TRIVIAL 1 +} +/* Line 1529 of yacc.c. */ +#line 364 "pl_gram.h" + YYSTYPE; +# define yystype YYSTYPE /* obsolescent; will be withdrawn */ # define YYSTYPE_IS_DECLARED 1 +# define YYSTYPE_IS_TRIVIAL 1 #endif -/* Location type. */ +extern __thread YYSTYPE plpgsql_yylval; + #if ! defined YYLTYPE && ! defined YYLTYPE_IS_DECLARED -typedef struct YYLTYPE YYLTYPE; -struct YYLTYPE +typedef struct YYLTYPE { int first_line; int first_column; int last_line; int last_column; -}; +} YYLTYPE; +# define yyltype YYLTYPE /* obsolescent; will be withdrawn */ # define YYLTYPE_IS_DECLARED 1 # define YYLTYPE_IS_TRIVIAL 1 #endif - -extern __thread YYSTYPE plpgsql_yylval; extern __thread YYLTYPE plpgsql_yylloc; -int plpgsql_yyparse (void); - -#endif /* !YY_PLPGSQL_YY_PL_GRAM_H_INCLUDED */ diff --git a/parser/include/pl_reserved_kwlist.h b/parser/include/pl_reserved_kwlist.h new file mode 100644 index 00000000..d3c169a8 --- /dev/null +++ b/parser/include/pl_reserved_kwlist.h @@ -0,0 +1,52 @@ +/*------------------------------------------------------------------------- + * + * pl_reserved_kwlist.h + * + * The keyword lists are kept in their own source files for use by + * automatic tools. The exact representation of a keyword is determined + * by the PG_KEYWORD macro, which is not defined in this file; it can + * be defined by the caller for special purposes. + * + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group + * Portions Copyright (c) 1994, Regents of the University of California + * + * src/pl/plpgsql/src/pl_reserved_kwlist.h + * + *------------------------------------------------------------------------- + */ + +/* There is deliberately not an #ifndef PL_RESERVED_KWLIST_H here. */ + +/* + * List of (keyword-name, keyword-token-value) pairs. + * + * Be careful not to put the same word into pl_unreserved_kwlist.h. + * + * Note: gen_keywordlist.pl requires the entries to appear in ASCII order. + */ + +/* name, value */ +PG_KEYWORD("all", K_ALL) +PG_KEYWORD("begin", K_BEGIN) +PG_KEYWORD("by", K_BY) +PG_KEYWORD("case", K_CASE) +PG_KEYWORD("declare", K_DECLARE) +PG_KEYWORD("else", K_ELSE) +PG_KEYWORD("end", K_END) +PG_KEYWORD("execute", K_EXECUTE) +PG_KEYWORD("for", K_FOR) +PG_KEYWORD("foreach", K_FOREACH) +PG_KEYWORD("from", K_FROM) +PG_KEYWORD("if", K_IF) +PG_KEYWORD("in", K_IN) +PG_KEYWORD("into", K_INTO) +PG_KEYWORD("loop", K_LOOP) +PG_KEYWORD("not", K_NOT) +PG_KEYWORD("null", K_NULL) +PG_KEYWORD("or", K_OR) +PG_KEYWORD("strict", K_STRICT) +PG_KEYWORD("then", K_THEN) +PG_KEYWORD("to", K_TO) +PG_KEYWORD("using", K_USING) +PG_KEYWORD("when", K_WHEN) +PG_KEYWORD("while", K_WHILE) diff --git a/parser/include/pl_reserved_kwlist_d.h b/parser/include/pl_reserved_kwlist_d.h new file mode 100644 index 00000000..3fb0c36f --- /dev/null +++ b/parser/include/pl_reserved_kwlist_d.h @@ -0,0 +1,114 @@ +/*------------------------------------------------------------------------- + * + * pl_reserved_kwlist_d.h + * List of keywords represented as a ScanKeywordList. + * + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group + * Portions Copyright (c) 1994, Regents of the University of California + * + * NOTES + * ****************************** + * *** DO NOT EDIT THIS FILE! *** + * ****************************** + * + * It has been GENERATED by src/tools/gen_keywordlist.pl + * + *------------------------------------------------------------------------- + */ + +#ifndef PL_RESERVED_KWLIST_D_H +#define PL_RESERVED_KWLIST_D_H + +#include "common/kwlookup.h" + +static const char ReservedPLKeywords_kw_string[] = + "all\0" + "begin\0" + "by\0" + "case\0" + "declare\0" + "else\0" + "end\0" + "execute\0" + "for\0" + "foreach\0" + "from\0" + "if\0" + "in\0" + "into\0" + "loop\0" + "not\0" + "null\0" + "or\0" + "strict\0" + "then\0" + "to\0" + "using\0" + "when\0" + "while"; + +static const uint16 ReservedPLKeywords_kw_offsets[] = { + 0, + 4, + 10, + 13, + 18, + 26, + 31, + 35, + 43, + 47, + 55, + 60, + 63, + 66, + 71, + 76, + 80, + 85, + 88, + 95, + 100, + 103, + 109, + 114, +}; + +#define RESERVEDPLKEYWORDS_NUM_KEYWORDS 24 + +static int +ReservedPLKeywords_hash_func(const void *key, size_t keylen) +{ + static const int8 h[49] = { + -2, 127, 7, 127, 0, 127, 127, 127, + 18, 5, 127, 27, 127, 0, 127, 127, + 0, 39, 32, 22, 10, 127, 19, -26, + 127, -11, 0, 12, 127, 127, -1, 28, + 20, 0, 23, 127, 0, 14, -8, 127, + 127, 127, 13, 5, 127, -23, 1, 0, + 127, + }; + + const unsigned char *k = (const unsigned char *) key; + uint32 a = 0; + uint32 b = 1; + + while (keylen--) + { + unsigned char c = *k++ | 0x20; + + a = a * 31 + c; + b = b * 127 + c; + } + return h[a % 49] + h[b % 49]; +} + +static const ScanKeywordList ReservedPLKeywords = { + ReservedPLKeywords_kw_string, + ReservedPLKeywords_kw_offsets, + ReservedPLKeywords_hash_func, + RESERVEDPLKEYWORDS_NUM_KEYWORDS, + 7 +}; + +#endif /* PL_RESERVED_KWLIST_D_H */ diff --git a/parser/include/pl_unreserved_kwlist.h b/parser/include/pl_unreserved_kwlist.h new file mode 100644 index 00000000..99b3cf7d --- /dev/null +++ b/parser/include/pl_unreserved_kwlist.h @@ -0,0 +1,112 @@ +/*------------------------------------------------------------------------- + * + * pl_unreserved_kwlist.h + * + * The keyword lists are kept in their own source files for use by + * automatic tools. The exact representation of a keyword is determined + * by the PG_KEYWORD macro, which is not defined in this file; it can + * be defined by the caller for special purposes. + * + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group + * Portions Copyright (c) 1994, Regents of the University of California + * + * src/pl/plpgsql/src/pl_unreserved_kwlist.h + * + *------------------------------------------------------------------------- + */ + +/* There is deliberately not an #ifndef PL_UNRESERVED_KWLIST_H here. */ + +/* + * List of (keyword-name, keyword-token-value) pairs. + * + * Be careful not to put the same word into pl_reserved_kwlist.h. Also be + * sure that pl_gram.y's unreserved_keyword production agrees with this list. + * + * Note: gen_keywordlist.pl requires the entries to appear in ASCII order. + */ + +/* name, value */ +PG_KEYWORD("absolute", K_ABSOLUTE) +PG_KEYWORD("alias", K_ALIAS) +PG_KEYWORD("and", K_AND) +PG_KEYWORD("array", K_ARRAY) +PG_KEYWORD("assert", K_ASSERT) +PG_KEYWORD("backward", K_BACKWARD) +PG_KEYWORD("call", K_CALL) +PG_KEYWORD("chain", K_CHAIN) +PG_KEYWORD("close", K_CLOSE) +PG_KEYWORD("collate", K_COLLATE) +PG_KEYWORD("column", K_COLUMN) +PG_KEYWORD("column_name", K_COLUMN_NAME) +PG_KEYWORD("commit", K_COMMIT) +PG_KEYWORD("constant", K_CONSTANT) +PG_KEYWORD("constraint", K_CONSTRAINT) +PG_KEYWORD("constraint_name", K_CONSTRAINT_NAME) +PG_KEYWORD("continue", K_CONTINUE) +PG_KEYWORD("current", K_CURRENT) +PG_KEYWORD("cursor", K_CURSOR) +PG_KEYWORD("datatype", K_DATATYPE) +PG_KEYWORD("debug", K_DEBUG) +PG_KEYWORD("default", K_DEFAULT) +PG_KEYWORD("detail", K_DETAIL) +PG_KEYWORD("diagnostics", K_DIAGNOSTICS) +PG_KEYWORD("do", K_DO) +PG_KEYWORD("dump", K_DUMP) +PG_KEYWORD("elseif", K_ELSIF) +PG_KEYWORD("elsif", K_ELSIF) +PG_KEYWORD("errcode", K_ERRCODE) +PG_KEYWORD("error", K_ERROR) +PG_KEYWORD("exception", K_EXCEPTION) +PG_KEYWORD("exit", K_EXIT) +PG_KEYWORD("fetch", K_FETCH) +PG_KEYWORD("first", K_FIRST) +PG_KEYWORD("forward", K_FORWARD) +PG_KEYWORD("get", K_GET) +PG_KEYWORD("hint", K_HINT) +PG_KEYWORD("import", K_IMPORT) +PG_KEYWORD("info", K_INFO) +PG_KEYWORD("insert", K_INSERT) +PG_KEYWORD("is", K_IS) +PG_KEYWORD("last", K_LAST) +PG_KEYWORD("log", K_LOG) +PG_KEYWORD("message", K_MESSAGE) +PG_KEYWORD("message_text", K_MESSAGE_TEXT) +PG_KEYWORD("move", K_MOVE) +PG_KEYWORD("next", K_NEXT) +PG_KEYWORD("no", K_NO) +PG_KEYWORD("notice", K_NOTICE) +PG_KEYWORD("open", K_OPEN) +PG_KEYWORD("option", K_OPTION) +PG_KEYWORD("perform", K_PERFORM) +PG_KEYWORD("pg_context", K_PG_CONTEXT) +PG_KEYWORD("pg_datatype_name", K_PG_DATATYPE_NAME) +PG_KEYWORD("pg_exception_context", K_PG_EXCEPTION_CONTEXT) +PG_KEYWORD("pg_exception_detail", K_PG_EXCEPTION_DETAIL) +PG_KEYWORD("pg_exception_hint", K_PG_EXCEPTION_HINT) +PG_KEYWORD("print_strict_params", K_PRINT_STRICT_PARAMS) +PG_KEYWORD("prior", K_PRIOR) +PG_KEYWORD("query", K_QUERY) +PG_KEYWORD("raise", K_RAISE) +PG_KEYWORD("relative", K_RELATIVE) +PG_KEYWORD("reset", K_RESET) +PG_KEYWORD("return", K_RETURN) +PG_KEYWORD("returned_sqlstate", K_RETURNED_SQLSTATE) +PG_KEYWORD("reverse", K_REVERSE) +PG_KEYWORD("rollback", K_ROLLBACK) +PG_KEYWORD("row_count", K_ROW_COUNT) +PG_KEYWORD("rowtype", K_ROWTYPE) +PG_KEYWORD("schema", K_SCHEMA) +PG_KEYWORD("schema_name", K_SCHEMA_NAME) +PG_KEYWORD("scroll", K_SCROLL) +PG_KEYWORD("set", K_SET) +PG_KEYWORD("slice", K_SLICE) +PG_KEYWORD("sqlstate", K_SQLSTATE) +PG_KEYWORD("stacked", K_STACKED) +PG_KEYWORD("table", K_TABLE) +PG_KEYWORD("table_name", K_TABLE_NAME) +PG_KEYWORD("type", K_TYPE) +PG_KEYWORD("use_column", K_USE_COLUMN) +PG_KEYWORD("use_variable", K_USE_VARIABLE) +PG_KEYWORD("variable_conflict", K_VARIABLE_CONFLICT) +PG_KEYWORD("warning", K_WARNING) diff --git a/parser/include/pl_unreserved_kwlist_d.h b/parser/include/pl_unreserved_kwlist_d.h new file mode 100644 index 00000000..0d41c854 --- /dev/null +++ b/parser/include/pl_unreserved_kwlist_d.h @@ -0,0 +1,246 @@ +/*------------------------------------------------------------------------- + * + * pl_unreserved_kwlist_d.h + * List of keywords represented as a ScanKeywordList. + * + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group + * Portions Copyright (c) 1994, Regents of the University of California + * + * NOTES + * ****************************** + * *** DO NOT EDIT THIS FILE! *** + * ****************************** + * + * It has been GENERATED by src/tools/gen_keywordlist.pl + * + *------------------------------------------------------------------------- + */ + +#ifndef PL_UNRESERVED_KWLIST_D_H +#define PL_UNRESERVED_KWLIST_D_H + +#include "common/kwlookup.h" + +static const char UnreservedPLKeywords_kw_string[] = + "absolute\0" + "alias\0" + "and\0" + "array\0" + "assert\0" + "backward\0" + "call\0" + "chain\0" + "close\0" + "collate\0" + "column\0" + "column_name\0" + "commit\0" + "constant\0" + "constraint\0" + "constraint_name\0" + "continue\0" + "current\0" + "cursor\0" + "datatype\0" + "debug\0" + "default\0" + "detail\0" + "diagnostics\0" + "do\0" + "dump\0" + "elseif\0" + "elsif\0" + "errcode\0" + "error\0" + "exception\0" + "exit\0" + "fetch\0" + "first\0" + "forward\0" + "get\0" + "hint\0" + "import\0" + "info\0" + "insert\0" + "is\0" + "last\0" + "log\0" + "message\0" + "message_text\0" + "move\0" + "next\0" + "no\0" + "notice\0" + "open\0" + "option\0" + "perform\0" + "pg_context\0" + "pg_datatype_name\0" + "pg_exception_context\0" + "pg_exception_detail\0" + "pg_exception_hint\0" + "print_strict_params\0" + "prior\0" + "query\0" + "raise\0" + "relative\0" + "reset\0" + "return\0" + "returned_sqlstate\0" + "reverse\0" + "rollback\0" + "row_count\0" + "rowtype\0" + "schema\0" + "schema_name\0" + "scroll\0" + "set\0" + "slice\0" + "sqlstate\0" + "stacked\0" + "table\0" + "table_name\0" + "type\0" + "use_column\0" + "use_variable\0" + "variable_conflict\0" + "warning"; + +static const uint16 UnreservedPLKeywords_kw_offsets[] = { + 0, + 9, + 15, + 19, + 25, + 32, + 41, + 46, + 52, + 58, + 66, + 73, + 85, + 92, + 101, + 112, + 128, + 137, + 145, + 152, + 161, + 167, + 175, + 182, + 194, + 197, + 202, + 209, + 215, + 223, + 229, + 239, + 244, + 250, + 256, + 264, + 268, + 273, + 280, + 285, + 292, + 295, + 300, + 304, + 312, + 325, + 330, + 335, + 338, + 345, + 350, + 357, + 365, + 376, + 393, + 414, + 434, + 452, + 472, + 478, + 484, + 490, + 499, + 505, + 512, + 530, + 538, + 547, + 557, + 565, + 572, + 584, + 591, + 595, + 601, + 610, + 618, + 624, + 635, + 640, + 651, + 664, + 682, +}; + +#define UNRESERVEDPLKEYWORDS_NUM_KEYWORDS 83 + +static int +UnreservedPLKeywords_hash_func(const void *key, size_t keylen) +{ + static const int16 h[167] = { + 10, 32767, 32767, 57, 32767, 62, 21, 32767, + 54, 18, 32767, 58, 59, -54, 47, 0, + -22, -64, 32767, -22, 33, 44, -5, 32767, + 32767, 43, 57, 102, 32767, -65, 7, 32767, + 13, 32767, -28, 14, 32767, 32767, 82, 32767, + 0, 0, 32767, 8, -43, 0, 19, 8, + 75, -58, 32767, 32767, 0, 22, 29, 32767, + -50, 6, 32767, 0, 30, 32767, 32767, 29, + 0, 104, 32767, 32767, 26, 0, 32767, 32767, + -9, 2, 32767, 50, 39, 38, 39, 80, + 32767, 32767, 32767, 32767, -67, 89, 32767, -40, + 64, 32767, 32767, 26, 10, 27, 32767, 19, + 51, -13, 26, 32767, 32767, 32767, 84, 23, + 0, 66, 12, -5, 32767, 32767, 0, 50, + 141, 72, 45, 32767, 32767, 0, -22, 0, + 32767, 32767, -34, 0, 19, -5, 32767, 32767, + 32767, 0, 37, 13, 32767, 32767, 32767, 32767, + -68, -4, 32767, 32767, 78, 32767, 32767, 0, + 85, 32767, 32767, 32767, -93, 32767, 0, 0, + 32767, 74, 5, 32767, 32767, 71, 0, 32767, + 32767, 0, 32767, 32767, 32767, 46, 70, + }; + + const unsigned char *k = (const unsigned char *) key; + uint32 a = 0; + uint32 b = 1; + + while (keylen--) + { + unsigned char c = *k++ | 0x20; + + a = a * 31 + c; + b = b * 127 + c; + } + return h[a % 167] + h[b % 167]; +} + +static const ScanKeywordList UnreservedPLKeywords = { + UnreservedPLKeywords_kw_string, + UnreservedPLKeywords_kw_offsets, + UnreservedPLKeywords_hash_func, + UNRESERVEDPLKEYWORDS_NUM_KEYWORDS, + 20 +}; + +#endif /* PL_UNRESERVED_KWLIST_D_H */ diff --git a/parser/include/plerrcodes.h b/parser/include/plerrcodes.h index 4bfc2fea..1fe3a1ab 100644 --- a/parser/include/plerrcodes.h +++ b/parser/include/plerrcodes.h @@ -168,6 +168,10 @@ "invalid_parameter_value", ERRCODE_INVALID_PARAMETER_VALUE }, +{ + "invalid_preceding_or_following_size", ERRCODE_INVALID_PRECEDING_OR_FOLLOWING_SIZE +}, + { "invalid_regular_expression", ERRCODE_INVALID_REGULAR_EXPRESSION }, @@ -280,6 +284,70 @@ "invalid_xml_processing_instruction", ERRCODE_INVALID_XML_PROCESSING_INSTRUCTION }, +{ + "duplicate_json_object_key_value", ERRCODE_DUPLICATE_JSON_OBJECT_KEY_VALUE +}, + +{ + "invalid_argument_for_sql_json_datetime_function", ERRCODE_INVALID_ARGUMENT_FOR_SQL_JSON_DATETIME_FUNCTION +}, + +{ + "invalid_json_text", ERRCODE_INVALID_JSON_TEXT +}, + +{ + "invalid_sql_json_subscript", ERRCODE_INVALID_SQL_JSON_SUBSCRIPT +}, + +{ + "more_than_one_sql_json_item", ERRCODE_MORE_THAN_ONE_SQL_JSON_ITEM +}, + +{ + "no_sql_json_item", ERRCODE_NO_SQL_JSON_ITEM +}, + +{ + "non_numeric_sql_json_item", ERRCODE_NON_NUMERIC_SQL_JSON_ITEM +}, + +{ + "non_unique_keys_in_a_json_object", ERRCODE_NON_UNIQUE_KEYS_IN_A_JSON_OBJECT +}, + +{ + "singleton_sql_json_item_required", ERRCODE_SINGLETON_SQL_JSON_ITEM_REQUIRED +}, + +{ + "sql_json_array_not_found", ERRCODE_SQL_JSON_ARRAY_NOT_FOUND +}, + +{ + "sql_json_member_not_found", ERRCODE_SQL_JSON_MEMBER_NOT_FOUND +}, + +{ + "sql_json_number_not_found", ERRCODE_SQL_JSON_NUMBER_NOT_FOUND +}, + +{ + "sql_json_object_not_found", ERRCODE_SQL_JSON_OBJECT_NOT_FOUND +}, + +{ + "too_many_json_array_elements", ERRCODE_TOO_MANY_JSON_ARRAY_ELEMENTS +}, + +{ + "too_many_json_object_members", ERRCODE_TOO_MANY_JSON_OBJECT_MEMBERS +}, + +{ + "sql_json_scalar_required", ERRCODE_SQL_JSON_SCALAR_REQUIRED +}, + { "integrity_constraint_violation", ERRCODE_INTEGRITY_CONSTRAINT_VIOLATION }, @@ -724,6 +792,10 @@ "lock_not_available", ERRCODE_LOCK_NOT_AVAILABLE }, +{ + "unsafe_new_enum_value_usage", ERRCODE_UNSAFE_NEW_ENUM_VALUE_USAGE +}, + { "operator_intervention", ERRCODE_OPERATOR_INTERVENTION }, diff --git a/parser/include/plpgsql.h b/parser/include/plpgsql.h index e65953de..81a0dca7 100644 --- a/parser/include/plpgsql.h +++ b/parser/include/plpgsql.h @@ -3,7 +3,7 @@ * plpgsql.h - Definitions for the PL/pgSQL * procedural language * - * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * @@ -20,6 +20,9 @@ #include "commands/event_trigger.h" #include "commands/trigger.h" #include "executor/spi.h" +#include "utils/expandedrecord.h" +#include "utils/typcache.h" + /********************************************************************** * Definitions @@ -37,10 +40,9 @@ */ typedef enum PLpgSQL_nsitem_type { - PLPGSQL_NSTYPE_LABEL, - PLPGSQL_NSTYPE_VAR, - PLPGSQL_NSTYPE_ROW, - PLPGSQL_NSTYPE_REC + PLPGSQL_NSTYPE_LABEL, /* block label */ + PLPGSQL_NSTYPE_VAR, /* scalar variable */ + PLPGSQL_NSTYPE_REC /* composite variable */ } PLpgSQL_nsitem_type; /* @@ -63,18 +65,36 @@ typedef enum PLpgSQL_datum_type PLPGSQL_DTYPE_REC, PLPGSQL_DTYPE_RECFIELD, PLPGSQL_DTYPE_ARRAYELEM, - PLPGSQL_DTYPE_EXPR + PLPGSQL_DTYPE_PROMISE } PLpgSQL_datum_type; +/* + * DTYPE_PROMISE datums have these possible ways of computing the promise + */ +typedef enum PLpgSQL_promise_type +{ + PLPGSQL_PROMISE_NONE = 0, /* not a promise, or promise satisfied */ + PLPGSQL_PROMISE_TG_NAME, + PLPGSQL_PROMISE_TG_WHEN, + PLPGSQL_PROMISE_TG_LEVEL, + PLPGSQL_PROMISE_TG_OP, + PLPGSQL_PROMISE_TG_RELID, + PLPGSQL_PROMISE_TG_TABLE_NAME, + PLPGSQL_PROMISE_TG_TABLE_SCHEMA, + PLPGSQL_PROMISE_TG_NARGS, + PLPGSQL_PROMISE_TG_ARGV, + PLPGSQL_PROMISE_TG_EVENT, + PLPGSQL_PROMISE_TG_TAG +} PLpgSQL_promise_type; + /* * Variants distinguished in PLpgSQL_type structs */ typedef enum PLpgSQL_type_type { PLPGSQL_TTYPE_SCALAR, /* scalar types and domains */ - PLPGSQL_TTYPE_ROW, /* composite types */ - PLPGSQL_TTYPE_REC, /* RECORD pseudotype */ - PLPGSQL_TTYPE_PSEUDO /* other pseudotypes */ + PLPGSQL_TTYPE_REC, /* composite types, including RECORD */ + PLPGSQL_TTYPE_PSEUDO /* pseudotypes */ } PLpgSQL_type_type; /* @@ -105,7 +125,11 @@ typedef enum PLpgSQL_stmt_type PLPGSQL_STMT_OPEN, PLPGSQL_STMT_FETCH, PLPGSQL_STMT_CLOSE, - PLPGSQL_STMT_PERFORM + PLPGSQL_STMT_PERFORM, + PLPGSQL_STMT_CALL, + PLPGSQL_STMT_COMMIT, + PLPGSQL_STMT_ROLLBACK, + PLPGSQL_STMT_SET } PLpgSQL_stmt_type; /* @@ -125,7 +149,6 @@ enum typedef enum PLpgSQL_getdiag_kind { PLPGSQL_GETDIAG_ROW_COUNT, - PLPGSQL_GETDIAG_RESULT_OID, PLPGSQL_GETDIAG_CONTEXT, PLPGSQL_GETDIAG_ERROR_CONTEXT, PLPGSQL_GETDIAG_ERROR_DETAIL, @@ -181,45 +204,20 @@ typedef struct PLpgSQL_type int16 typlen; /* stuff copied from its pg_type entry */ bool typbyval; char typtype; - Oid typrelid; Oid collation; /* from pg_type, but can be overridden */ bool typisarray; /* is "true" array, or domain over one */ int32 atttypmod; /* typmod (taken from someplace else) */ + /* Remaining fields are used only for named composite types (not RECORD) */ + TypeName *origtypname; /* type name as written by user */ + TypeCacheEntry *tcache; /* typcache entry for composite type */ + uint64 tupdesc_id; /* last-seen tupdesc identifier */ } PLpgSQL_type; -/* - * Generic datum array item - * - * PLpgSQL_datum is the common supertype for PLpgSQL_expr, PLpgSQL_var, - * PLpgSQL_row, PLpgSQL_rec, PLpgSQL_recfield, and PLpgSQL_arrayelem - */ -typedef struct PLpgSQL_datum -{ - PLpgSQL_datum_type dtype; - int dno; -} PLpgSQL_datum; - -/* - * Scalar or composite variable - * - * The variants PLpgSQL_var, PLpgSQL_row, and PLpgSQL_rec share these - * fields - */ -typedef struct PLpgSQL_variable -{ - PLpgSQL_datum_type dtype; - int dno; - char *refname; - int lineno; -} PLpgSQL_variable; - /* * SQL Query to plan and execute */ typedef struct PLpgSQL_expr { - PLpgSQL_datum_type dtype; - int dno; char *query; SPIPlanPtr plan; Bitmapset *paramnos; /* all dnos referenced by this query */ @@ -233,9 +231,19 @@ typedef struct PLpgSQL_expr /* fields for "simple expression" fast-path execution: */ Expr *expr_simple_expr; /* NULL means not a simple expr */ - int expr_simple_generation; /* plancache generation we checked */ Oid expr_simple_type; /* result type Oid, if simple */ int32 expr_simple_typmod; /* result typmod, if simple */ + bool expr_simple_mutable; /* true if simple expr is mutable */ + + /* + * If the expression was ever determined to be simple, we remember its + * CachedPlanSource and CachedPlan here. If expr_simple_plan_lxid matches + * current LXID, then we hold a refcount on expr_simple_plan in the + * current transaction. Otherwise we need to get one before re-using it. + */ + CachedPlanSource *expr_simple_plansource; /* extracted from "plan" */ + CachedPlan *expr_simple_plan; /* extracted from "plan" */ + LocalTransactionId expr_simple_plan_lxid; /* * if expr is simple AND prepared in current transaction, @@ -248,8 +256,45 @@ typedef struct PLpgSQL_expr LocalTransactionId expr_simple_lxid; } PLpgSQL_expr; +/* + * Generic datum array item + * + * PLpgSQL_datum is the common supertype for PLpgSQL_var, PLpgSQL_row, + * PLpgSQL_rec, PLpgSQL_recfield, and PLpgSQL_arrayelem. + */ +typedef struct PLpgSQL_datum +{ + PLpgSQL_datum_type dtype; + int dno; +} PLpgSQL_datum; + +/* + * Scalar or composite variable + * + * The variants PLpgSQL_var, PLpgSQL_row, and PLpgSQL_rec share these + * fields. + */ +typedef struct PLpgSQL_variable +{ + PLpgSQL_datum_type dtype; + int dno; + char *refname; + int lineno; + bool isconst; + bool notnull; + PLpgSQL_expr *default_val; +} PLpgSQL_variable; + /* * Scalar variable + * + * DTYPE_VAR and DTYPE_PROMISE datums both use this struct type. + * A PROMISE datum works exactly like a VAR datum for most purposes, + * but if it is read without having previously been assigned to, then + * a special "promised" value is computed and assigned to the datum + * before the read is performed. This technique avoids the overhead of + * computing the variable's value in cases where we expect that many + * functions will never read it. */ typedef struct PLpgSQL_var { @@ -257,22 +302,53 @@ typedef struct PLpgSQL_var int dno; char *refname; int lineno; + bool isconst; + bool notnull; + PLpgSQL_expr *default_val; + /* end of PLpgSQL_variable fields */ PLpgSQL_type *datatype; - int isconst; - int notnull; - PLpgSQL_expr *default_val; + + /* + * Variables declared as CURSOR FOR are mostly like ordinary + * scalar variables of type refcursor, but they have these additional + * properties: + */ PLpgSQL_expr *cursor_explicit_expr; int cursor_explicit_argrow; int cursor_options; + /* Fields below here can change at runtime */ + Datum value; bool isnull; bool freeval; + + /* + * The promise field records which "promised" value to assign if the + * promise must be honored. If it's a normal variable, or the promise has + * been fulfilled, this is PLPGSQL_PROMISE_NONE. + */ + PLpgSQL_promise_type promise; } PLpgSQL_var; /* - * Row variable + * Row variable - this represents one or more variables that are listed in an + * INTO clause, FOR-loop targetlist, cursor argument list, etc. We also use + * a row to represent a function's OUT parameters when there's more than one. + * + * Note that there's no way to name the row as such from PL/pgSQL code, + * so many functions don't need to support these. + * + * That also means that there's no real name for the row variable, so we + * conventionally set refname to "(unnamed row)". We could leave it NULL, + * but it's too convenient to be able to assume that refname is valid in + * all variants of PLpgSQL_variable. + * + * isconst, notnull, and default_val are unsupported (and hence + * always zero/null) for a row. The member variables of a row should have + * been checked to be writable at compile time, so isconst is correctly set + * to false. notnull and default_val aren't applicable. */ typedef struct PLpgSQL_row { @@ -280,22 +356,25 @@ typedef struct PLpgSQL_row int dno; char *refname; int lineno; - - /* Note: TupleDesc is only set up for named rowtypes, else it is NULL. */ - TupleDesc rowtupdesc; + bool isconst; + bool notnull; + PLpgSQL_expr *default_val; + /* end of PLpgSQL_variable fields */ /* - * Note: if the underlying rowtype contains a dropped column, the - * corresponding fieldnames[] entry will be NULL, and there is no - * corresponding var (varnos[] will be -1). + * rowtupdesc is only set up if we might need to convert the row into a + * composite datum, which currently only happens for OUT parameters. + * Otherwise it is NULL. */ + TupleDesc rowtupdesc; + int nfields; char **fieldnames; int *varnos; } PLpgSQL_row; /* - * Record variable (non-fixed structure) + * Record variable (any composite type, including RECORD) */ typedef struct PLpgSQL_rec { @@ -303,11 +382,26 @@ typedef struct PLpgSQL_rec int dno; char *refname; int lineno; + bool isconst; + bool notnull; + PLpgSQL_expr *default_val; + /* end of PLpgSQL_variable fields */ + + /* + * Note: for non-RECORD cases, we may from time to time re-look-up the + * composite type, using datatype->origtypname. That can result in + * changing rectypeid. + */ - HeapTuple tup; - TupleDesc tupdesc; - bool freetup; - bool freetupdesc; + PLpgSQL_type *datatype; /* can be NULL, if rectypeid is RECORDOID */ + Oid rectypeid; /* declared type of variable */ + /* RECFIELDs for this record are chained together for easy access */ + int firstfield; /* dno of first RECFIELD, or -1 if none */ + + /* Fields below here can change at runtime */ + + /* We always store record variables as "expanded" records */ + ExpandedRecordHeader *erh; } PLpgSQL_rec; /* @@ -317,8 +411,14 @@ typedef struct PLpgSQL_recfield { PLpgSQL_datum_type dtype; int dno; - char *fieldname; + /* end of PLpgSQL_datum fields */ + + char *fieldname; /* name of field */ int recparentno; /* dno of parent record */ + int nextfield; /* dno of next child, or -1 if none */ + uint64 rectupledescid; /* record's tupledesc ID as of last lookup */ + ExpandedRecordFieldInfo finfo; /* field's attnum and type info */ + /* if rectupledescid == INVALID_TUPLEDESC_IDENTIFIER, finfo isn't valid */ } PLpgSQL_recfield; /* @@ -328,6 +428,8 @@ typedef struct PLpgSQL_arrayelem { PLpgSQL_datum_type dtype; int dno; + /* end of PLpgSQL_datum fields */ + PLpgSQL_expr *subscript; int arrayparentno; /* dno of parent array variable */ @@ -366,6 +468,13 @@ typedef struct PLpgSQL_stmt { PLpgSQL_stmt_type cmd_type; int lineno; + + /* + * Unique statement ID in this function (starting at 1; 0 is invalid/not + * set). This can be used by a profiler as the index for an array of + * per-statement metrics. + */ + unsigned int stmtid; } PLpgSQL_stmt; /* @@ -405,10 +514,11 @@ typedef struct PLpgSQL_stmt_block { PLpgSQL_stmt_type cmd_type; int lineno; + unsigned int stmtid; char *label; List *body; /* List of statements */ - int n_initvars; - int *initvarnos; + int n_initvars; /* Length of initvarnos[] */ + int *initvarnos; /* dnos of variables declared in this block */ PLpgSQL_exception_block *exceptions; } PLpgSQL_stmt_block; @@ -419,6 +529,7 @@ typedef struct PLpgSQL_stmt_assign { PLpgSQL_stmt_type cmd_type; int lineno; + unsigned int stmtid; int varno; PLpgSQL_expr *expr; } PLpgSQL_stmt_assign; @@ -430,9 +541,56 @@ typedef struct PLpgSQL_stmt_perform { PLpgSQL_stmt_type cmd_type; int lineno; + unsigned int stmtid; PLpgSQL_expr *expr; } PLpgSQL_stmt_perform; +/* + * CALL statement + */ +typedef struct PLpgSQL_stmt_call +{ + PLpgSQL_stmt_type cmd_type; + int lineno; + unsigned int stmtid; + PLpgSQL_expr *expr; + bool is_call; + PLpgSQL_variable *target; +} PLpgSQL_stmt_call; + +/* + * COMMIT statement + */ +typedef struct PLpgSQL_stmt_commit +{ + PLpgSQL_stmt_type cmd_type; + int lineno; + unsigned int stmtid; + bool chain; +} PLpgSQL_stmt_commit; + +/* + * ROLLBACK statement + */ +typedef struct PLpgSQL_stmt_rollback +{ + PLpgSQL_stmt_type cmd_type; + int lineno; + unsigned int stmtid; + bool chain; +} PLpgSQL_stmt_rollback; + +/* + * SET statement + */ +typedef struct PLpgSQL_stmt_set +{ + PLpgSQL_stmt_type cmd_type; + int lineno; + unsigned int stmtid; + PLpgSQL_expr *expr; +} PLpgSQL_stmt_set; + /* * GET DIAGNOSTICS item */ @@ -449,6 +607,7 @@ typedef struct PLpgSQL_stmt_getdiag { PLpgSQL_stmt_type cmd_type; int lineno; + unsigned int stmtid; bool is_stacked; /* STACKED or CURRENT diagnostics area? */ List *diag_items; /* List of PLpgSQL_diag_item */ } PLpgSQL_stmt_getdiag; @@ -460,6 +619,7 @@ typedef struct PLpgSQL_stmt_if { PLpgSQL_stmt_type cmd_type; int lineno; + unsigned int stmtid; PLpgSQL_expr *cond; /* boolean expression for THEN */ List *then_body; /* List of statements */ List *elsif_list; /* List of PLpgSQL_if_elsif structs */ @@ -483,6 +643,7 @@ typedef struct PLpgSQL_stmt_case { PLpgSQL_stmt_type cmd_type; int lineno; + unsigned int stmtid; PLpgSQL_expr *t_expr; /* test expression, or NULL if none */ int t_varno; /* var to store test expression value into */ List *case_when_list; /* List of PLpgSQL_case_when structs */ @@ -507,6 +668,7 @@ typedef struct PLpgSQL_stmt_loop { PLpgSQL_stmt_type cmd_type; int lineno; + unsigned int stmtid; char *label; List *body; /* List of statements */ } PLpgSQL_stmt_loop; @@ -518,6 +680,7 @@ typedef struct PLpgSQL_stmt_while { PLpgSQL_stmt_type cmd_type; int lineno; + unsigned int stmtid; char *label; PLpgSQL_expr *cond; List *body; /* List of statements */ @@ -530,6 +693,7 @@ typedef struct PLpgSQL_stmt_fori { PLpgSQL_stmt_type cmd_type; int lineno; + unsigned int stmtid; char *label; PLpgSQL_var *var; PLpgSQL_expr *lower; @@ -542,15 +706,15 @@ typedef struct PLpgSQL_stmt_fori /* * PLpgSQL_stmt_forq represents a FOR statement running over a SQL query. * It is the common supertype of PLpgSQL_stmt_fors, PLpgSQL_stmt_forc - * and PLpgSQL_dynfors. + * and PLpgSQL_stmt_dynfors. */ typedef struct PLpgSQL_stmt_forq { PLpgSQL_stmt_type cmd_type; int lineno; + unsigned int stmtid; char *label; - PLpgSQL_rec *rec; - PLpgSQL_row *row; + PLpgSQL_variable *var; /* Loop variable (record or row) */ List *body; /* List of statements */ } PLpgSQL_stmt_forq; @@ -561,9 +725,9 @@ typedef struct PLpgSQL_stmt_fors { PLpgSQL_stmt_type cmd_type; int lineno; + unsigned int stmtid; char *label; - PLpgSQL_rec *rec; - PLpgSQL_row *row; + PLpgSQL_variable *var; /* Loop variable (record or row) */ List *body; /* List of statements */ /* end of fields that must match PLpgSQL_stmt_forq */ PLpgSQL_expr *query; @@ -576,9 +740,9 @@ typedef struct PLpgSQL_stmt_forc { PLpgSQL_stmt_type cmd_type; int lineno; + unsigned int stmtid; char *label; - PLpgSQL_rec *rec; - PLpgSQL_row *row; + PLpgSQL_variable *var; /* Loop variable (record or row) */ List *body; /* List of statements */ /* end of fields that must match PLpgSQL_stmt_forq */ int curvar; @@ -592,9 +756,9 @@ typedef struct PLpgSQL_stmt_dynfors { PLpgSQL_stmt_type cmd_type; int lineno; + unsigned int stmtid; char *label; - PLpgSQL_rec *rec; - PLpgSQL_row *row; + PLpgSQL_variable *var; /* Loop variable (record or row) */ List *body; /* List of statements */ /* end of fields that must match PLpgSQL_stmt_forq */ PLpgSQL_expr *query; @@ -608,6 +772,7 @@ typedef struct PLpgSQL_stmt_foreach_a { PLpgSQL_stmt_type cmd_type; int lineno; + unsigned int stmtid; char *label; int varno; /* loop target variable */ int slice; /* slice dimension, or 0 */ @@ -622,9 +787,9 @@ typedef struct PLpgSQL_stmt_open { PLpgSQL_stmt_type cmd_type; int lineno; + unsigned int stmtid; int curvar; int cursor_options; - PLpgSQL_row *returntype; PLpgSQL_expr *argquery; PLpgSQL_expr *query; PLpgSQL_expr *dynquery; @@ -638,8 +803,8 @@ typedef struct PLpgSQL_stmt_fetch { PLpgSQL_stmt_type cmd_type; int lineno; - PLpgSQL_rec *rec; /* target, as record or row */ - PLpgSQL_row *row; + unsigned int stmtid; + PLpgSQL_variable *target; /* target (record or row) */ int curvar; /* cursor variable to fetch from */ FetchDirection direction; /* fetch direction */ long how_many; /* count, if constant (expr is NULL) */ @@ -655,6 +820,7 @@ typedef struct PLpgSQL_stmt_close { PLpgSQL_stmt_type cmd_type; int lineno; + unsigned int stmtid; int curvar; } PLpgSQL_stmt_close; @@ -665,8 +831,9 @@ typedef struct PLpgSQL_stmt_exit { PLpgSQL_stmt_type cmd_type; int lineno; + unsigned int stmtid; bool is_exit; /* Is this an exit or a continue? */ - char *label; /* NULL if it's an unlabelled EXIT/CONTINUE */ + char *label; /* NULL if it's an unlabeled EXIT/CONTINUE */ PLpgSQL_expr *cond; } PLpgSQL_stmt_exit; @@ -677,6 +844,7 @@ typedef struct PLpgSQL_stmt_return { PLpgSQL_stmt_type cmd_type; int lineno; + unsigned int stmtid; PLpgSQL_expr *expr; int retvarno; } PLpgSQL_stmt_return; @@ -688,6 +856,7 @@ typedef struct PLpgSQL_stmt_return_next { PLpgSQL_stmt_type cmd_type; int lineno; + unsigned int stmtid; PLpgSQL_expr *expr; int retvarno; } PLpgSQL_stmt_return_next; @@ -699,6 +868,7 @@ typedef struct PLpgSQL_stmt_return_query { PLpgSQL_stmt_type cmd_type; int lineno; + unsigned int stmtid; PLpgSQL_expr *query; /* if static query */ PLpgSQL_expr *dynquery; /* if dynamic query (RETURN QUERY EXECUTE) */ List *params; /* USING arguments for dynamic query */ @@ -711,6 +881,7 @@ typedef struct PLpgSQL_stmt_raise { PLpgSQL_stmt_type cmd_type; int lineno; + unsigned int stmtid; int elog_level; char *condname; /* condition name, SQLSTATE, or NULL */ char *message; /* old-style message format literal, or NULL */ @@ -734,6 +905,7 @@ typedef struct PLpgSQL_stmt_assert { PLpgSQL_stmt_type cmd_type; int lineno; + unsigned int stmtid; PLpgSQL_expr *cond; PLpgSQL_expr *message; } PLpgSQL_stmt_assert; @@ -745,13 +917,13 @@ typedef struct PLpgSQL_stmt_execsql { PLpgSQL_stmt_type cmd_type; int lineno; + unsigned int stmtid; PLpgSQL_expr *sqlstmt; bool mod_stmt; /* is the stmt INSERT/UPDATE/DELETE? Note: * mod_stmt is set when we plan the query */ bool into; /* INTO supplied? */ bool strict; /* INTO STRICT flag */ - PLpgSQL_rec *rec; /* INTO target, if record */ - PLpgSQL_row *row; /* INTO target, if row */ + PLpgSQL_variable *target; /* INTO target (record or row) */ } PLpgSQL_stmt_execsql; /* @@ -761,11 +933,11 @@ typedef struct PLpgSQL_stmt_dynexecute { PLpgSQL_stmt_type cmd_type; int lineno; + unsigned int stmtid; PLpgSQL_expr *query; /* string expression */ bool into; /* INTO supplied? */ bool strict; /* INTO STRICT flag */ - PLpgSQL_rec *rec; /* INTO target, if record */ - PLpgSQL_row *row; /* INTO target, if row */ + PLpgSQL_variable *target; /* INTO target (record or row) */ List *params; /* USING expressions */ } PLpgSQL_stmt_dynexecute; @@ -831,8 +1003,10 @@ typedef struct PLpgSQL_function int fn_rettyplen; bool fn_retbyval; bool fn_retistuple; + bool fn_retisdomain; bool fn_retset; bool fn_readonly; + char fn_prokind; int fn_nargs; int fn_argvarnos[FUNC_MAX_ARGS]; @@ -840,20 +1014,6 @@ typedef struct PLpgSQL_function int found_varno; int new_varno; int old_varno; - int tg_name_varno; - int tg_when_varno; - int tg_level_varno; - int tg_op_varno; - int tg_relid_varno; - int tg_relname_varno; - int tg_table_name_varno; - int tg_table_schema_varno; - int tg_nargs_varno; - int tg_argv_varno; - - /* for event triggers */ - int tg_event_varno; - int tg_tag_varno; PLpgSQL_resolve_option resolve_option; @@ -863,10 +1023,13 @@ typedef struct PLpgSQL_function int extra_warnings; int extra_errors; + /* count of statements inside function */ + unsigned int nstatements; + /* the datums representing the function's local variables */ int ndatums; PLpgSQL_datum **datums; - Bitmapset *resettable_datums; /* dnos of non-simple vars */ + Size copiable_size; /* space for locally instantiated datums */ /* function body parsetree */ PLpgSQL_stmt_block *action; @@ -883,6 +1046,9 @@ typedef struct PLpgSQL_execstate { PLpgSQL_function *func; /* function being executed */ + TriggerData *trigdata; /* if regular trigger, data about firing */ + EventTriggerData *evtrigdata; /* if event trigger, data about firing */ + Datum retval; bool retisnull; Oid rettype; /* type of current retval */ @@ -892,28 +1058,42 @@ typedef struct PLpgSQL_execstate bool retisset; bool readonly_func; + bool atomic; - TupleDesc rettupdesc; char *exitlabel; /* the "target" label of the current EXIT or * CONTINUE stmt, if any */ ErrorData *cur_error; /* current exception handler's error */ Tuplestorestate *tuple_store; /* SRFs accumulate results here */ + TupleDesc tuple_store_desc; /* descriptor for tuples in tuple_store */ MemoryContext tuple_store_cxt; ResourceOwner tuple_store_owner; ReturnSetInfo *rsi; - /* the datums representing the function's local variables */ int found_varno; + + /* + * The datums representing the function's local variables. Some of these + * are local storage in this execstate, but some just point to the shared + * copy belonging to the PLpgSQL_function, depending on whether or not we + * need any per-execution state for the datum's dtype. + */ int ndatums; PLpgSQL_datum **datums; + /* context containing variable values (same as func's SPI_proc context) */ + MemoryContext datum_context; - /* we pass datums[i] to the executor, when needed, in paramLI->params[i] */ + /* + * paramLI is what we use to pass local variable values to the executor. + * It does not have a ParamExternData array; we just dynamically + * instantiate parameter data as needed. By convention, PARAM_EXTERN + * Params have paramid equal to the dno of the referenced local variable. + */ ParamListInfo paramLI; - bool params_dirty; /* T if any resettable datum has been passed */ - /* EState to use for "simple" expression evaluation */ + /* EState and resowner to use for "simple" expression evaluation */ EState *simple_eval_estate; + ResourceOwner simple_eval_resowner; /* lookup table to use for executing type casts */ HTAB *cast_hash; @@ -926,7 +1106,6 @@ typedef struct PLpgSQL_execstate /* temporary state for results from evaluation of query or expr */ SPITupleTable *eval_tuptable; uint64 eval_processed; - Oid eval_lastoid; ExprContext *eval_econtext; /* for executing simple expressions */ /* status information for error context reporting */ @@ -1023,10 +1202,12 @@ extern __thread bool plpgsql_print_strict_params; extern bool plpgsql_check_asserts; -/* extra compile-time checks */ -#define PLPGSQL_XCHECK_NONE 0 -#define PLPGSQL_XCHECK_SHADOWVAR 1 -#define PLPGSQL_XCHECK_ALL ((int) ~0) +/* extra compile-time and run-time checks */ +#define PLPGSQL_XCHECK_NONE 0 +#define PLPGSQL_XCHECK_SHADOWVAR (1 << 1) +#define PLPGSQL_XCHECK_TOOMANYROWS (1 << 2) +#define PLPGSQL_XCHECK_STRICTMULTIASSIGNMENT (1 << 3) +#define PLPGSQL_XCHECK_ALL ((int) ~0) extern int plpgsql_extra_warnings; extern int plpgsql_extra_errors; @@ -1054,29 +1235,33 @@ extern PLpgSQL_plugin **plpgsql_plugin_ptr; * Functions in pl_comp.c */ extern PLpgSQL_function *plpgsql_compile(FunctionCallInfo fcinfo, - bool forValidator); + bool forValidator); extern PLpgSQL_function *plpgsql_compile_inline(char *proc_source); extern void plpgsql_parser_setup(struct ParseState *pstate, - PLpgSQL_expr *expr); -extern bool plpgsql_parse_word(char *word1, const char *yytxt, - PLwdatum *wdatum, PLword *word); + PLpgSQL_expr *expr); +extern bool plpgsql_parse_word(char *word1, const char *yytxt, bool lookup, + PLwdatum *wdatum, PLword *word); extern bool plpgsql_parse_dblword(char *word1, char *word2, - PLwdatum *wdatum, PLcword *cword); + PLwdatum *wdatum, PLcword *cword); extern bool plpgsql_parse_tripword(char *word1, char *word2, char *word3, - PLwdatum *wdatum, PLcword *cword); + PLwdatum *wdatum, PLcword *cword); extern PLpgSQL_type *plpgsql_parse_wordtype(char *ident); extern PLpgSQL_type *plpgsql_parse_cwordtype(List *idents); extern PLpgSQL_type *plpgsql_parse_wordrowtype(char *ident); extern PLpgSQL_type *plpgsql_parse_cwordrowtype(List *idents); extern PLpgSQL_type *plpgsql_build_datatype(Oid typeOid, int32 typmod, - Oid collation); + Oid collation, + TypeName *origtypname); extern PLpgSQL_variable *plpgsql_build_variable(const char *refname, int lineno, - PLpgSQL_type *dtype, - bool add2namespace); + PLpgSQL_type *dtype, + bool add2namespace); extern PLpgSQL_rec *plpgsql_build_record(const char *refname, int lineno, - bool add2namespace); -extern int plpgsql_recognize_err_condition(const char *condname, - bool allow_sqlstate); + PLpgSQL_type *dtype, Oid rectypeid, + bool add2namespace); +extern PLpgSQL_recfield *plpgsql_build_recfield(PLpgSQL_rec *rec, + const char *fldname); +extern int plpgsql_recognize_err_condition(const char *condname, + bool allow_sqlstate); extern PLpgSQL_condition *plpgsql_parse_err_condition(char *condname); extern void plpgsql_start_datums(void); extern void plpgsql_finish_datums(PLpgSQL_function *function); @@ -1093,35 +1278,38 @@ extern void _PG_init(void); * Functions in pl_exec.c */ extern Datum plpgsql_exec_function(PLpgSQL_function *func, - FunctionCallInfo fcinfo, - EState *simple_eval_estate); + FunctionCallInfo fcinfo, + EState *simple_eval_estate, + ResourceOwner simple_eval_resowner, + bool atomic); extern HeapTuple plpgsql_exec_trigger(PLpgSQL_function *func, - TriggerData *trigdata); + TriggerData *trigdata); extern void plpgsql_exec_event_trigger(PLpgSQL_function *func, - EventTriggerData *trigdata); + EventTriggerData *trigdata); extern void plpgsql_xact_cb(XactEvent event, void *arg); extern void plpgsql_subxact_cb(SubXactEvent event, SubTransactionId mySubid, - SubTransactionId parentSubid, void *arg); -extern Oid plpgsql_exec_get_datum_type(PLpgSQL_execstate *estate, - PLpgSQL_datum *datum); + SubTransactionId parentSubid, void *arg); +extern Oid plpgsql_exec_get_datum_type(PLpgSQL_execstate *estate, + PLpgSQL_datum *datum); extern void plpgsql_exec_get_datum_type_info(PLpgSQL_execstate *estate, - PLpgSQL_datum *datum, - Oid *typeId, int32 *typMod, Oid *collation); + PLpgSQL_datum *datum, + Oid *typeId, int32 *typMod, + Oid *collation); /* * Functions for namespace handling in pl_funcs.c */ extern void plpgsql_ns_init(void); extern void plpgsql_ns_push(const char *label, - PLpgSQL_label_type label_type); + PLpgSQL_label_type label_type); extern void plpgsql_ns_pop(void); extern PLpgSQL_nsitem *plpgsql_ns_top(void); extern void plpgsql_ns_additem(PLpgSQL_nsitem_type itemtype, int itemno, const char *name); extern PLpgSQL_nsitem *plpgsql_ns_lookup(PLpgSQL_nsitem *ns_cur, bool localmode, - const char *name1, const char *name2, - const char *name3, int *names_used); + const char *name1, const char *name2, + const char *name3, int *names_used); extern PLpgSQL_nsitem *plpgsql_ns_lookup_label(PLpgSQL_nsitem *ns_cur, - const char *name); + const char *name); extern PLpgSQL_nsitem *plpgsql_ns_find_nearest_loop(PLpgSQL_nsitem *ns_cur); /* @@ -1140,10 +1328,10 @@ extern int plpgsql_yylex(void); extern void plpgsql_push_back_token(int token); extern bool plpgsql_token_is_unreserved_keyword(int token); extern void plpgsql_append_source_text(StringInfo buf, - int startlocation, int endlocation); + int startlocation, int endlocation); extern int plpgsql_peek(void); extern void plpgsql_peek2(int *tok1_p, int *tok2_p, int *tok1_loc, - int *tok2_loc); + int *tok2_loc); extern int plpgsql_scanner_errposition(int location); extern void plpgsql_yyerror(const char *message) pg_attribute_noreturn(); extern int plpgsql_location_to_lineno(int location); diff --git a/parser/include/port.h b/parser/include/port.h index 52deede1..271ff0d0 100644 --- a/parser/include/port.h +++ b/parser/include/port.h @@ -3,7 +3,7 @@ * port.h * Header for src/port/ compatibility functions. * - * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/port.h @@ -17,6 +17,15 @@ #include #include +/* + * Windows has enough specialized port stuff that we push most of it off + * into another file. + * Note: Some CYGWIN includes might #define WIN32. + */ +#if defined(WIN32) && !defined(__CYGWIN__) +#include "port/win32_port.h" +#endif + /* socket has a different definition on WIN32 */ #ifndef WIN32 typedef int pgsocket; @@ -39,7 +48,7 @@ extern char *first_dir_separator(const char *filename); extern char *last_dir_separator(const char *filename); extern char *first_path_var_separator(const char *pathlist); extern void join_path_components(char *ret_path, - const char *head, const char *tail); + const char *head, const char *tail); extern void canonicalize_path(char *path); extern void make_native_path(char *path); extern void cleanup_path(char *path); @@ -93,19 +102,15 @@ extern void pgfnames_cleanup(char **filenames); /* Portable locale initialization (in exec.c) */ extern void set_pglocale_pgservice(const char *argv0, const char *app); -/* Portable way to find binaries (in exec.c) */ +/* Portable way to find and execute binaries (in exec.c) */ extern int find_my_exec(const char *argv0, char *retpath); -extern int find_other_exec(const char *argv0, const char *target, - const char *versionstr, char *retpath); +extern int find_other_exec(const char *argv0, const char *target, + const char *versionstr, char *retpath); +extern char *pipe_read_line(char *cmd, char *line, int maxsize); /* Doesn't belong here, but this is used with find_other_exec(), so... */ #define PG_BACKEND_VERSIONSTR "postgres (PostgreSQL) " PG_VERSION "\n" -/* Windows security token manipulation (in exec.c) */ -#ifdef WIN32 -extern BOOL AddUserToTokenDacl(HANDLE hToken); -#endif - #if defined(WIN32) || defined(__CYGWIN__) #define EXE ".exe" @@ -130,7 +135,12 @@ extern unsigned char pg_tolower(unsigned char ch); extern unsigned char pg_ascii_toupper(unsigned char ch); extern unsigned char pg_ascii_tolower(unsigned char ch); -#ifdef USE_REPL_SNPRINTF +/* + * Beginning in v12, we always replace snprintf() and friends with our own + * implementation. This symbol is no longer consulted by the core code, + * but keep it defined anyway in case any extensions are looking at it. + */ +#define USE_REPL_SNPRINTF 1 /* * Versions of libintl >= 0.13 try to replace printf() and friends with @@ -143,6 +153,9 @@ extern unsigned char pg_ascii_tolower(unsigned char ch); #ifdef snprintf #undef snprintf #endif +#ifdef vsprintf +#undef vsprintf +#endif #ifdef sprintf #undef sprintf #endif @@ -152,71 +165,57 @@ extern unsigned char pg_ascii_tolower(unsigned char ch); #ifdef fprintf #undef fprintf #endif +#ifdef vprintf +#undef vprintf +#endif #ifdef printf #undef printf #endif extern int pg_vsnprintf(char *str, size_t count, const char *fmt, va_list args); extern int pg_snprintf(char *str, size_t count, const char *fmt,...) pg_attribute_printf(3, 4); +extern int pg_vsprintf(char *str, const char *fmt, va_list args); extern int pg_sprintf(char *str, const char *fmt,...) pg_attribute_printf(2, 3); extern int pg_vfprintf(FILE *stream, const char *fmt, va_list args); extern int pg_fprintf(FILE *stream, const char *fmt,...) pg_attribute_printf(2, 3); +extern int pg_vprintf(const char *fmt, va_list args); extern int pg_printf(const char *fmt,...) pg_attribute_printf(1, 2); /* - * The GCC-specific code below prevents the pg_attribute_printf above from - * being replaced, and this is required because gcc doesn't know anything - * about pg_printf. + * We use __VA_ARGS__ for printf to prevent replacing references to + * the "printf" format archetype in format() attribute declarations. + * That unfortunately means that taking a function pointer to printf + * will not do what we'd wish. (If you need to do that, you must name + * pg_printf explicitly.) For printf's sibling functions, use + * parameterless macros so that function pointers will work unsurprisingly. */ -#ifdef __GNUC__ -#define vsnprintf(...) pg_vsnprintf(__VA_ARGS__) -#define snprintf(...) pg_snprintf(__VA_ARGS__) -#define sprintf(...) pg_sprintf(__VA_ARGS__) -#define vfprintf(...) pg_vfprintf(__VA_ARGS__) -#define fprintf(...) pg_fprintf(__VA_ARGS__) -#define printf(...) pg_printf(__VA_ARGS__) -#else #define vsnprintf pg_vsnprintf #define snprintf pg_snprintf +#define vsprintf pg_vsprintf #define sprintf pg_sprintf #define vfprintf pg_vfprintf #define fprintf pg_fprintf -#define printf pg_printf -#endif -#endif /* USE_REPL_SNPRINTF */ +#define vprintf pg_vprintf +#define printf(...) pg_printf(__VA_ARGS__) -#if defined(WIN32) -/* - * Versions of libintl >= 0.18? try to replace setlocale() with a macro - * to their own versions. Remove the macro, if it exists, because it - * ends up calling the wrong version when the backend and libintl use - * different versions of msvcrt. - */ -#if defined(setlocale) -#undef setlocale -#endif +/* This is also provided by snprintf.c */ +extern int pg_strfromd(char *str, size_t count, int precision, double value); -/* - * Define our own wrapper macro around setlocale() to work around bugs in - * Windows' native setlocale() function. - */ -extern char *pgwin32_setlocale(int category, const char *locale); +/* Replace strerror() with our own, somewhat more robust wrapper */ +extern char *pg_strerror(int errnum); +#define strerror pg_strerror -#define setlocale(a,b) pgwin32_setlocale(a,b) -#endif /* WIN32 */ +/* Likewise for strerror_r(); note we prefer the GNU API for that */ +extern char *pg_strerror_r(int errnum, char *buf, size_t buflen); +#define strerror_r pg_strerror_r +#define PG_STRERROR_R_BUFLEN 256 /* Recommended buffer size for strerror_r */ /* Wrap strsignal(), or provide our own version if necessary */ extern const char *pg_strsignal(int signum); /* Portable prompt handling */ extern void simple_prompt(const char *prompt, char *destination, size_t destlen, - bool echo); - -#ifdef WIN32 -#define PG_SIGNAL_COUNT 32 -#define kill(pid,sig) pgkill(pid,sig) -extern int pgkill(int pid, int sig); -#endif + bool echo); extern int pclose_check(FILE *stream); @@ -265,23 +264,6 @@ extern bool pgwin32_is_junction(const char *path); extern bool rmtree(const char *path, bool rmtopdir); -/* - * stat() is not guaranteed to set the st_size field on win32, so we - * redefine it to our own implementation that is. - * - * We must pull in sys/stat.h here so the system header definition - * goes in first, and we redefine that, and not the other way around. - * - * Some frontends don't need the size from stat, so if UNSAFE_STAT_OK - * is defined we don't bother with this. - */ -#if defined(WIN32) && !defined(__CYGWIN__) && !defined(UNSAFE_STAT_OK) -#include -extern int pgwin32_safestat(const char *path, struct stat *buf); - -#define stat(a,b) pgwin32_safestat(a,b) -#endif - #if defined(WIN32) && !defined(__CYGWIN__) /* @@ -291,11 +273,8 @@ extern int pgwin32_safestat(const char *path, struct stat *buf); #define O_DIRECT 0x80000000 extern int pgwin32_open(const char *, int,...); extern FILE *pgwin32_fopen(const char *, const char *); - -#ifndef FRONTEND #define open(a,b,c) pgwin32_open(a,b,c) #define fopen(a,b) pgwin32_fopen(a,b) -#endif /* * Mingw-w64 headers #define popen and pclose to _popen and _pclose. We want @@ -352,17 +331,10 @@ extern int gettimeofday(struct timeval *tp, struct timezone *tzp); * Default "extern" declarations or macro substitutes for library routines. * When necessary, these routines are provided by files in src/port/. */ -#ifndef HAVE_CRYPT -extern char *crypt(const char *key, const char *setting); -#endif -/* WIN32 handled in port/win32.h */ -#ifndef WIN32 +/* Type to use with fseeko/ftello */ +#ifndef WIN32 /* WIN32 is handled in port/win32_port.h */ #define pgoff_t off_t -#ifdef __NetBSD__ -extern int fseeko(FILE *stream, off_t offset, int whence); -extern off_t ftello(FILE *stream); -#endif #endif extern double pg_erand48(unsigned short xseed[3]); @@ -374,25 +346,48 @@ extern void pg_srand48(long seed); extern int fls(int mask); #endif -#ifndef HAVE_FSEEKO -#define fseeko(a, b, c) fseek(a, b, c) -#define ftello(a) ftell(a) +#ifndef HAVE_GETPEEREID +/* On Windows, Perl might have incompatible definitions of uid_t and gid_t. */ +#ifndef PLPERL_HAVE_UID_GID +extern int getpeereid(int sock, uid_t *uid, gid_t *gid); +#endif #endif -#if !defined(HAVE_GETPEEREID) && !defined(WIN32) -extern int getpeereid(int sock, uid_t *uid, gid_t *gid); +/* + * Glibc doesn't use the builtin for clang due to a *gcc* bug in a version + * newer than the gcc compatibility clang claims to have. This would cause a + * *lot* of superfluous function calls, therefore revert when using clang. In + * C++ there's issues with libc++ (not libstdc++), so disable as well. + */ +#if defined(__clang__) && !defined(__cplusplus) +/* needs to be separate to not confuse other compilers */ +#if __has_builtin(__builtin_isinf) +/* need to include before, to avoid getting overwritten */ +#include +#undef isinf +#define isinf __builtin_isinf +#endif /* __has_builtin(isinf) */ +#endif /* __clang__ && !__cplusplus */ + +#ifndef HAVE_EXPLICIT_BZERO +extern void explicit_bzero(void *buf, size_t len); #endif -#ifndef HAVE_ISINF -extern int isinf(double x); +#ifndef HAVE_STRTOF +extern float strtof(const char *nptr, char **endptr); #endif -#ifndef HAVE_MKDTEMP -extern char *mkdtemp(char *path); +#ifdef HAVE_BUGGY_STRTOF +extern float pg_strtof(const char *nptr, char **endptr); +#define strtof(a,b) (pg_strtof((a),(b))) +#endif + +#ifndef HAVE_LINK +extern int link(const char *src, const char *dst); #endif -#ifndef HAVE_RINT -extern double rint(double x); +#ifndef HAVE_MKDTEMP +extern char *mkdtemp(char *path); #endif #ifndef HAVE_INET_ATON @@ -401,6 +396,23 @@ extern double rint(double x); extern int inet_aton(const char *cp, struct in_addr *addr); #endif +/* + * Windows and older Unix don't have pread(2) and pwrite(2). We have + * replacement functions, but they have slightly different semantics so we'll + * use a name with a pg_ prefix to avoid confusion. + */ +#ifdef HAVE_PREAD +#define pg_pread pread +#else +extern ssize_t pg_pread(int fd, void *buf, size_t nbyte, off_t offset); +#endif + +#ifdef HAVE_PWRITE +#define pg_pwrite pwrite +#else +extern ssize_t pg_pwrite(int fd, const void *buf, size_t nbyte, off_t offset); +#endif + #if !HAVE_DECL_STRLCAT extern size_t strlcat(char *dst, const char *src, size_t siz); #endif @@ -409,6 +421,10 @@ extern size_t strlcat(char *dst, const char *src, size_t siz); extern size_t strlcpy(char *dst, const char *src, size_t siz); #endif +#if !HAVE_DECL_STRNLEN +extern size_t strnlen(const char *str, size_t maxlen); +#endif + #if !defined(HAVE_RANDOM) extern long random(void); #endif @@ -421,26 +437,43 @@ extern void unsetenv(const char *name); extern void srandom(unsigned int seed); #endif -#ifndef HAVE_SSL_GET_CURRENT_COMPRESSION -#define SSL_get_current_compression(x) 0 +#ifndef HAVE_DLOPEN +extern void *dlopen(const char *file, int mode); +extern void *dlsym(void *handle, const char *symbol); +extern int dlclose(void *handle); +extern char *dlerror(void); #endif -/* thread.h */ -extern char *pqStrerror(int errnum, char *strerrbuf, size_t buflen); +/* + * In some older systems, the RTLD_NOW flag isn't defined and the mode + * argument to dlopen must always be 1. + */ +#if !HAVE_DECL_RTLD_NOW +#define RTLD_NOW 1 +#endif +/* + * The RTLD_GLOBAL flag is wanted if available, but it doesn't exist + * everywhere. If it doesn't exist, set it to 0 so it has no effect. + */ +#if !HAVE_DECL_RTLD_GLOBAL +#define RTLD_GLOBAL 0 +#endif + +/* thread.h */ #ifndef WIN32 -extern int pqGetpwuid(uid_t uid, struct passwd *resultbuf, char *buffer, - size_t buflen, struct passwd **result); +extern int pqGetpwuid(uid_t uid, struct passwd *resultbuf, char *buffer, + size_t buflen, struct passwd **result); #endif -extern int pqGethostbyname(const char *name, - struct hostent *resultbuf, - char *buffer, size_t buflen, - struct hostent **result, - int *herrno); +extern int pqGethostbyname(const char *name, + struct hostent *resultbuf, + char *buffer, size_t buflen, + struct hostent **result, + int *herrno); extern void pg_qsort(void *base, size_t nel, size_t elsize, - int (*cmp) (const void *, const void *)); + int (*cmp) (const void *, const void *)); extern int pg_qsort_strcmp(const void *a, const void *b); #define qsort(a,b,c,d) pg_qsort(a,b,c,d) @@ -448,7 +481,7 @@ extern int pg_qsort_strcmp(const void *a, const void *b); typedef int (*qsort_arg_comparator) (const void *a, const void *b, void *arg); extern void qsort_arg(void *base, size_t nel, size_t elsize, - qsort_arg_comparator cmp, void *arg); + qsort_arg_comparator cmp, void *arg); /* port/chklocale.c */ extern int pg_get_encoding_from_locale(const char *ctype, bool write_message); @@ -458,13 +491,17 @@ extern int pg_codepage_to_encoding(UINT cp); #endif /* port/inet_net_ntop.c */ -extern char *inet_net_ntop(int af, const void *src, int bits, - char *dst, size_t size); +extern char *pg_inet_net_ntop(int af, const void *src, int bits, + char *dst, size_t size); /* port/pg_strong_random.c */ -#ifdef HAVE_STRONG_RANDOM extern bool pg_strong_random(void *buf, size_t len); -#endif + +/* + * pg_backend_random used to be a wrapper for pg_strong_random before + * Postgres 12 for the backend code. + */ +#define pg_backend_random pg_strong_random /* port/pgcheckdir.c */ extern int pg_check_dir(const char *dir); diff --git a/parser/include/port/atomics.h b/parser/include/port/atomics.h index fdd50e70..4956ec55 100644 --- a/parser/include/port/atomics.h +++ b/parser/include/port/atomics.h @@ -28,7 +28,7 @@ * For an introduction to using memory barriers within the PostgreSQL backend, * see src/backend/storage/lmgr/README.barrier * - * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/port/atomics.h @@ -87,14 +87,11 @@ * using compiler intrinsics are a good idea. */ /* - * Given a gcc-compatible xlc compiler, prefer the xlc implementation. The - * ppc64le "IBM XL C/C++ for Linux, V13.1.2" implements both interfaces, but - * __sync_lock_test_and_set() of one-byte types elicits SIGSEGV. + * gcc or compatible, including clang and icc. Exclude xlc. The ppc64le "IBM + * XL C/C++ for Linux, V13.1.2" emulates gcc, but __sync_lock_test_and_set() + * of one-byte types elicits SIGSEGV. That bug was gone by V13.1.5 (2016-12). */ -#if defined(__IBMC__) || defined(__IBMCPP__) -#include "port/atomics/generic-xlc.h" -/* gcc or compatible, including clang and icc */ -#elif defined(__GNUC__) || defined(__INTEL_COMPILER) +#if (defined(__GNUC__) || defined(__INTEL_COMPILER)) && !(defined(__IBMC__) || defined(__IBMCPP__)) #include "port/atomics/generic-gcc.h" #elif defined(_MSC_VER) #include "port/atomics/generic-msvc.h" @@ -178,7 +175,7 @@ pg_atomic_init_flag(volatile pg_atomic_flag *ptr) } /* - * pg_atomic_test_and_set_flag - TAS() + * pg_atomic_test_set_flag - TAS() * * Returns true if the flag has successfully been set, false otherwise. * diff --git a/parser/include/port/atomics/arch-arm.h b/parser/include/port/atomics/arch-arm.h index 58614ae2..6b925a7d 100644 --- a/parser/include/port/atomics/arch-arm.h +++ b/parser/include/port/atomics/arch-arm.h @@ -3,7 +3,7 @@ * arch-arm.h * Atomic operations considerations specific to ARM * - * Portions Copyright (c) 2013-2017, PostgreSQL Global Development Group + * Portions Copyright (c) 2013-2020, PostgreSQL Global Development Group * * NOTES: * diff --git a/parser/include/port/atomics/arch-ppc.h b/parser/include/port/atomics/arch-ppc.h index ed304683..a82ae38c 100644 --- a/parser/include/port/atomics/arch-ppc.h +++ b/parser/include/port/atomics/arch-ppc.h @@ -3,7 +3,7 @@ * arch-ppc.h * Atomic operations considerations specific to PowerPC * - * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * NOTES: @@ -25,5 +25,230 @@ #define pg_write_barrier_impl() __asm__ __volatile__ ("lwsync" : : : "memory") #endif +#define PG_HAVE_ATOMIC_U32_SUPPORT +typedef struct pg_atomic_uint32 +{ + volatile uint32 value; +} pg_atomic_uint32; + +/* 64bit atomics are only supported in 64bit mode */ +#if SIZEOF_VOID_P >= 8 +#define PG_HAVE_ATOMIC_U64_SUPPORT +typedef struct pg_atomic_uint64 +{ + volatile uint64 value pg_attribute_aligned(8); +} pg_atomic_uint64; + +#endif + +/* + * This mimics gcc __atomic_compare_exchange_n(..., __ATOMIC_SEQ_CST), but + * code generation differs at the end. __atomic_compare_exchange_n(): + * 100: isync + * 104: mfcr r3 + * 108: rlwinm r3,r3,3,31,31 + * 10c: bne 120 <.eb+0x10> + * 110: clrldi r3,r3,63 + * 114: addi r1,r1,112 + * 118: blr + * 11c: nop + * 120: clrldi r3,r3,63 + * 124: stw r9,0(r4) + * 128: addi r1,r1,112 + * 12c: blr + * + * This: + * f0: isync + * f4: mfcr r9 + * f8: rldicl. r3,r9,35,63 + * fc: bne 104 <.eb> + * 100: stw r10,0(r4) + * 104: addi r1,r1,112 + * 108: blr + * + * This implementation may or may not have materially different performance. + * It's not exploiting the fact that cr0 still holds the relevant comparison + * bits, set during the __asm__. One could fix that by moving more code into + * the __asm__. (That would remove the freedom to eliminate dead stores when + * the caller ignores "expected", but few callers do.) + * + * Recognizing constant "newval" would be superfluous, because there's no + * immediate-operand version of stwcx. + */ +#define PG_HAVE_ATOMIC_COMPARE_EXCHANGE_U32 +static inline bool +pg_atomic_compare_exchange_u32_impl(volatile pg_atomic_uint32 *ptr, + uint32 *expected, uint32 newval) +{ + uint32 found; + uint32 condition_register; + bool ret; + +#ifdef HAVE_I_CONSTRAINT__BUILTIN_CONSTANT_P + if (__builtin_constant_p(*expected) && + (int32) *expected <= PG_INT16_MAX && + (int32) *expected >= PG_INT16_MIN) + __asm__ __volatile__( + " sync \n" + " lwarx %0,0,%5 \n" + " cmpwi %0,%3 \n" + " bne $+12 \n" /* branch to isync */ + " stwcx. %4,0,%5 \n" + " bne $-16 \n" /* branch to lwarx */ + " isync \n" + " mfcr %1 \n" +: "=&r"(found), "=r"(condition_register), "+m"(ptr->value) +: "i"(*expected), "r"(newval), "r"(&ptr->value) +: "memory", "cc"); + else +#endif + __asm__ __volatile__( + " sync \n" + " lwarx %0,0,%5 \n" + " cmpw %0,%3 \n" + " bne $+12 \n" /* branch to isync */ + " stwcx. %4,0,%5 \n" + " bne $-16 \n" /* branch to lwarx */ + " isync \n" + " mfcr %1 \n" +: "=&r"(found), "=r"(condition_register), "+m"(ptr->value) +: "r"(*expected), "r"(newval), "r"(&ptr->value) +: "memory", "cc"); + + ret = (condition_register >> 29) & 1; /* test eq bit of cr0 */ + if (!ret) + *expected = found; + return ret; +} + +/* + * This mirrors gcc __sync_fetch_and_add(). + * + * Like tas(), use constraint "=&b" to avoid allocating r0. + */ +#define PG_HAVE_ATOMIC_FETCH_ADD_U32 +static inline uint32 +pg_atomic_fetch_add_u32_impl(volatile pg_atomic_uint32 *ptr, int32 add_) +{ + uint32 _t; + uint32 res; + +#ifdef HAVE_I_CONSTRAINT__BUILTIN_CONSTANT_P + if (__builtin_constant_p(add_) && + add_ <= PG_INT16_MAX && add_ >= PG_INT16_MIN) + __asm__ __volatile__( + " sync \n" + " lwarx %1,0,%4 \n" + " addi %0,%1,%3 \n" + " stwcx. %0,0,%4 \n" + " bne $-12 \n" /* branch to lwarx */ + " isync \n" +: "=&r"(_t), "=&b"(res), "+m"(ptr->value) +: "i"(add_), "r"(&ptr->value) +: "memory", "cc"); + else +#endif + __asm__ __volatile__( + " sync \n" + " lwarx %1,0,%4 \n" + " add %0,%1,%3 \n" + " stwcx. %0,0,%4 \n" + " bne $-12 \n" /* branch to lwarx */ + " isync \n" +: "=&r"(_t), "=&r"(res), "+m"(ptr->value) +: "r"(add_), "r"(&ptr->value) +: "memory", "cc"); + + return res; +} + +#ifdef PG_HAVE_ATOMIC_U64_SUPPORT + +#define PG_HAVE_ATOMIC_COMPARE_EXCHANGE_U64 +static inline bool +pg_atomic_compare_exchange_u64_impl(volatile pg_atomic_uint64 *ptr, + uint64 *expected, uint64 newval) +{ + uint64 found; + uint32 condition_register; + bool ret; + + /* Like u32, but s/lwarx/ldarx/; s/stwcx/stdcx/; s/cmpw/cmpd/ */ +#ifdef HAVE_I_CONSTRAINT__BUILTIN_CONSTANT_P + if (__builtin_constant_p(*expected) && + (int64) *expected <= PG_INT16_MAX && + (int64) *expected >= PG_INT16_MIN) + __asm__ __volatile__( + " sync \n" + " ldarx %0,0,%5 \n" + " cmpdi %0,%3 \n" + " bne $+12 \n" /* branch to isync */ + " stdcx. %4,0,%5 \n" + " bne $-16 \n" /* branch to ldarx */ + " isync \n" + " mfcr %1 \n" +: "=&r"(found), "=r"(condition_register), "+m"(ptr->value) +: "i"(*expected), "r"(newval), "r"(&ptr->value) +: "memory", "cc"); + else +#endif + __asm__ __volatile__( + " sync \n" + " ldarx %0,0,%5 \n" + " cmpd %0,%3 \n" + " bne $+12 \n" /* branch to isync */ + " stdcx. %4,0,%5 \n" + " bne $-16 \n" /* branch to ldarx */ + " isync \n" + " mfcr %1 \n" +: "=&r"(found), "=r"(condition_register), "+m"(ptr->value) +: "r"(*expected), "r"(newval), "r"(&ptr->value) +: "memory", "cc"); + + ret = (condition_register >> 29) & 1; /* test eq bit of cr0 */ + if (!ret) + *expected = found; + return ret; +} + +#define PG_HAVE_ATOMIC_FETCH_ADD_U64 +static inline uint64 +pg_atomic_fetch_add_u64_impl(volatile pg_atomic_uint64 *ptr, int64 add_) +{ + uint64 _t; + uint64 res; + + /* Like u32, but s/lwarx/ldarx/; s/stwcx/stdcx/ */ +#ifdef HAVE_I_CONSTRAINT__BUILTIN_CONSTANT_P + if (__builtin_constant_p(add_) && + add_ <= PG_INT16_MAX && add_ >= PG_INT16_MIN) + __asm__ __volatile__( + " sync \n" + " ldarx %1,0,%4 \n" + " addi %0,%1,%3 \n" + " stdcx. %0,0,%4 \n" + " bne $-12 \n" /* branch to ldarx */ + " isync \n" +: "=&r"(_t), "=&b"(res), "+m"(ptr->value) +: "i"(add_), "r"(&ptr->value) +: "memory", "cc"); + else +#endif + __asm__ __volatile__( + " sync \n" + " ldarx %1,0,%4 \n" + " add %0,%1,%3 \n" + " stdcx. %0,0,%4 \n" + " bne $-12 \n" /* branch to ldarx */ + " isync \n" +: "=&r"(_t), "=&r"(res), "+m"(ptr->value) +: "r"(add_), "r"(&ptr->value) +: "memory", "cc"); + + return res; +} + +#endif /* PG_HAVE_ATOMIC_U64_SUPPORT */ + /* per architecture manual doubleword accesses have single copy atomicity */ #define PG_HAVE_8BYTE_SINGLE_COPY_ATOMICITY diff --git a/parser/include/port/atomics/arch-x86.h b/parser/include/port/atomics/arch-x86.h index bf815257..13cc4f55 100644 --- a/parser/include/port/atomics/arch-x86.h +++ b/parser/include/port/atomics/arch-x86.h @@ -7,7 +7,7 @@ * support for xadd and cmpxchg. Given that the 386 isn't supported anywhere * anymore that's not much of a restriction luckily. * - * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * NOTES: diff --git a/parser/include/port/atomics/fallback.h b/parser/include/port/atomics/fallback.h index 59be29cf..e3849c80 100644 --- a/parser/include/port/atomics/fallback.h +++ b/parser/include/port/atomics/fallback.h @@ -4,7 +4,7 @@ * Fallback for platforms without spinlock and/or atomics support. Slower * than native atomics support, but not unusably slow. * - * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/port/atomics/fallback.h diff --git a/parser/include/port/atomics/generic-gcc.h b/parser/include/port/atomics/generic-gcc.h index 7efc0861..2d84305f 100644 --- a/parser/include/port/atomics/generic-gcc.h +++ b/parser/include/port/atomics/generic-gcc.h @@ -3,7 +3,7 @@ * generic-gcc.h * Atomic operations, implemented using gcc (or compatible) intrinsics. * - * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * NOTES: @@ -176,6 +176,8 @@ pg_atomic_compare_exchange_u32_impl(volatile pg_atomic_uint32 *ptr, } #endif +/* if we have 32-bit __sync_val_compare_and_swap, assume we have these too: */ + #if !defined(PG_HAVE_ATOMIC_FETCH_ADD_U32) && defined(HAVE_GCC__SYNC_INT32_CAS) #define PG_HAVE_ATOMIC_FETCH_ADD_U32 static inline uint32 @@ -185,6 +187,33 @@ pg_atomic_fetch_add_u32_impl(volatile pg_atomic_uint32 *ptr, int32 add_) } #endif +#if !defined(PG_HAVE_ATOMIC_FETCH_SUB_U32) && defined(HAVE_GCC__SYNC_INT32_CAS) +#define PG_HAVE_ATOMIC_FETCH_SUB_U32 +static inline uint32 +pg_atomic_fetch_sub_u32_impl(volatile pg_atomic_uint32 *ptr, int32 sub_) +{ + return __sync_fetch_and_sub(&ptr->value, sub_); +} +#endif + +#if !defined(PG_HAVE_ATOMIC_FETCH_AND_U32) && defined(HAVE_GCC__SYNC_INT32_CAS) +#define PG_HAVE_ATOMIC_FETCH_AND_U32 +static inline uint32 +pg_atomic_fetch_and_u32_impl(volatile pg_atomic_uint32 *ptr, uint32 and_) +{ + return __sync_fetch_and_and(&ptr->value, and_); +} +#endif + +#if !defined(PG_HAVE_ATOMIC_FETCH_OR_U32) && defined(HAVE_GCC__SYNC_INT32_CAS) +#define PG_HAVE_ATOMIC_FETCH_OR_U32 +static inline uint32 +pg_atomic_fetch_or_u32_impl(volatile pg_atomic_uint32 *ptr, uint32 or_) +{ + return __sync_fetch_and_or(&ptr->value, or_); +} +#endif + #if !defined(PG_DISABLE_64_BIT_ATOMICS) @@ -214,6 +243,8 @@ pg_atomic_compare_exchange_u64_impl(volatile pg_atomic_uint64 *ptr, } #endif +/* if we have 64-bit __sync_val_compare_and_swap, assume we have these too: */ + #if !defined(PG_HAVE_ATOMIC_FETCH_ADD_U64) && defined(HAVE_GCC__SYNC_INT64_CAS) #define PG_HAVE_ATOMIC_FETCH_ADD_U64 static inline uint64 @@ -223,6 +254,33 @@ pg_atomic_fetch_add_u64_impl(volatile pg_atomic_uint64 *ptr, int64 add_) } #endif +#if !defined(PG_HAVE_ATOMIC_FETCH_SUB_U64) && defined(HAVE_GCC__SYNC_INT64_CAS) +#define PG_HAVE_ATOMIC_FETCH_SUB_U64 +static inline uint64 +pg_atomic_fetch_sub_u64_impl(volatile pg_atomic_uint64 *ptr, int64 sub_) +{ + return __sync_fetch_and_sub(&ptr->value, sub_); +} +#endif + +#if !defined(PG_HAVE_ATOMIC_FETCH_AND_U64) && defined(HAVE_GCC__SYNC_INT64_CAS) +#define PG_HAVE_ATOMIC_FETCH_AND_U64 +static inline uint64 +pg_atomic_fetch_and_u64_impl(volatile pg_atomic_uint64 *ptr, uint64 and_) +{ + return __sync_fetch_and_and(&ptr->value, and_); +} +#endif + +#if !defined(PG_HAVE_ATOMIC_FETCH_OR_U64) && defined(HAVE_GCC__SYNC_INT64_CAS) +#define PG_HAVE_ATOMIC_FETCH_OR_U64 +static inline uint64 +pg_atomic_fetch_or_u64_impl(volatile pg_atomic_uint64 *ptr, uint64 or_) +{ + return __sync_fetch_and_or(&ptr->value, or_); +} +#endif + #endif /* !defined(PG_DISABLE_64_BIT_ATOMICS) */ #endif /* defined(HAVE_ATOMICS) */ diff --git a/parser/include/port/atomics/generic.h b/parser/include/port/atomics/generic.h index 965439de..d60a0d9e 100644 --- a/parser/include/port/atomics/generic.h +++ b/parser/include/port/atomics/generic.h @@ -4,7 +4,7 @@ * Implement higher level operations based on some lower level atomic * operations. * - * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/port/atomics/generic.h @@ -45,7 +45,7 @@ typedef pg_atomic_uint32 pg_atomic_flag; static inline uint32 pg_atomic_read_u32_impl(volatile pg_atomic_uint32 *ptr) { - return *(&ptr->value); + return ptr->value; } #endif @@ -170,12 +170,9 @@ static inline uint32 pg_atomic_exchange_u32_impl(volatile pg_atomic_uint32 *ptr, uint32 xchg_) { uint32 old; - while (true) - { - old = pg_atomic_read_u32_impl(ptr); - if (pg_atomic_compare_exchange_u32_impl(ptr, &old, xchg_)) - break; - } + old = ptr->value; /* ok if read is not atomic */ + while (!pg_atomic_compare_exchange_u32_impl(ptr, &old, xchg_)) + /* skip */; return old; } #endif @@ -186,12 +183,9 @@ static inline uint32 pg_atomic_fetch_add_u32_impl(volatile pg_atomic_uint32 *ptr, int32 add_) { uint32 old; - while (true) - { - old = pg_atomic_read_u32_impl(ptr); - if (pg_atomic_compare_exchange_u32_impl(ptr, &old, old + add_)) - break; - } + old = ptr->value; /* ok if read is not atomic */ + while (!pg_atomic_compare_exchange_u32_impl(ptr, &old, old + add_)) + /* skip */; return old; } #endif @@ -211,12 +205,9 @@ static inline uint32 pg_atomic_fetch_and_u32_impl(volatile pg_atomic_uint32 *ptr, uint32 and_) { uint32 old; - while (true) - { - old = pg_atomic_read_u32_impl(ptr); - if (pg_atomic_compare_exchange_u32_impl(ptr, &old, old & and_)) - break; - } + old = ptr->value; /* ok if read is not atomic */ + while (!pg_atomic_compare_exchange_u32_impl(ptr, &old, old & and_)) + /* skip */; return old; } #endif @@ -227,12 +218,9 @@ static inline uint32 pg_atomic_fetch_or_u32_impl(volatile pg_atomic_uint32 *ptr, uint32 or_) { uint32 old; - while (true) - { - old = pg_atomic_read_u32_impl(ptr); - if (pg_atomic_compare_exchange_u32_impl(ptr, &old, old | or_)) - break; - } + old = ptr->value; /* ok if read is not atomic */ + while (!pg_atomic_compare_exchange_u32_impl(ptr, &old, old | or_)) + /* skip */; return old; } #endif @@ -261,12 +249,9 @@ static inline uint64 pg_atomic_exchange_u64_impl(volatile pg_atomic_uint64 *ptr, uint64 xchg_) { uint64 old; - while (true) - { - old = ptr->value; - if (pg_atomic_compare_exchange_u64_impl(ptr, &old, xchg_)) - break; - } + old = ptr->value; /* ok if read is not atomic */ + while (!pg_atomic_compare_exchange_u64_impl(ptr, &old, xchg_)) + /* skip */; return old; } #endif @@ -314,12 +299,10 @@ static inline uint64 pg_atomic_read_u64_impl(volatile pg_atomic_uint64 *ptr) { /* - * On this platform aligned 64bit reads are guaranteed to be atomic, - * except if using the fallback implementation, where can't guarantee the - * required alignment. + * On this platform aligned 64-bit reads are guaranteed to be atomic. */ AssertPointerAlignment(ptr, 8); - return *(&ptr->value); + return ptr->value; } #else @@ -330,10 +313,10 @@ pg_atomic_read_u64_impl(volatile pg_atomic_uint64 *ptr) uint64 old = 0; /* - * 64 bit reads aren't safe on all platforms. In the generic + * 64-bit reads aren't atomic on all platforms. In the generic * implementation implement them as a compare/exchange with 0. That'll - * fail or succeed, but always return the old value. Possible might store - * a 0, but only if the prev. value also was a 0 - i.e. harmless. + * fail or succeed, but always return the old value. Possibly might store + * a 0, but only if the previous value also was a 0 - i.e. harmless. */ pg_atomic_compare_exchange_u64_impl(ptr, &old, 0); @@ -357,12 +340,9 @@ static inline uint64 pg_atomic_fetch_add_u64_impl(volatile pg_atomic_uint64 *ptr, int64 add_) { uint64 old; - while (true) - { - old = pg_atomic_read_u64_impl(ptr); - if (pg_atomic_compare_exchange_u64_impl(ptr, &old, old + add_)) - break; - } + old = ptr->value; /* ok if read is not atomic */ + while (!pg_atomic_compare_exchange_u64_impl(ptr, &old, old + add_)) + /* skip */; return old; } #endif @@ -382,12 +362,9 @@ static inline uint64 pg_atomic_fetch_and_u64_impl(volatile pg_atomic_uint64 *ptr, uint64 and_) { uint64 old; - while (true) - { - old = pg_atomic_read_u64_impl(ptr); - if (pg_atomic_compare_exchange_u64_impl(ptr, &old, old & and_)) - break; - } + old = ptr->value; /* ok if read is not atomic */ + while (!pg_atomic_compare_exchange_u64_impl(ptr, &old, old & and_)) + /* skip */; return old; } #endif @@ -398,12 +375,9 @@ static inline uint64 pg_atomic_fetch_or_u64_impl(volatile pg_atomic_uint64 *ptr, uint64 or_) { uint64 old; - while (true) - { - old = pg_atomic_read_u64_impl(ptr); - if (pg_atomic_compare_exchange_u64_impl(ptr, &old, old | or_)) - break; - } + old = ptr->value; /* ok if read is not atomic */ + while (!pg_atomic_compare_exchange_u64_impl(ptr, &old, old | or_)) + /* skip */; return old; } #endif diff --git a/parser/include/port/pg_bitutils.h b/parser/include/port/pg_bitutils.h new file mode 100644 index 00000000..887e7829 --- /dev/null +++ b/parser/include/port/pg_bitutils.h @@ -0,0 +1,226 @@ +/*------------------------------------------------------------------------- + * + * pg_bitutils.h + * Miscellaneous functions for bit-wise operations. + * + * + * Copyright (c) 2019-2020, PostgreSQL Global Development Group + * + * src/include/port/pg_bitutils.h + * + *------------------------------------------------------------------------- + */ +#ifndef PG_BITUTILS_H +#define PG_BITUTILS_H + +#ifndef FRONTEND +extern PGDLLIMPORT const uint8 pg_leftmost_one_pos[256]; +extern PGDLLIMPORT const uint8 pg_rightmost_one_pos[256]; +extern PGDLLIMPORT const uint8 pg_number_of_ones[256]; +#else +extern const uint8 pg_leftmost_one_pos[256]; +extern const uint8 pg_rightmost_one_pos[256]; +extern const uint8 pg_number_of_ones[256]; +#endif + +/* + * pg_leftmost_one_pos32 + * Returns the position of the most significant set bit in "word", + * measured from the least significant bit. word must not be 0. + */ +static inline int +pg_leftmost_one_pos32(uint32 word) +{ +#ifdef HAVE__BUILTIN_CLZ + Assert(word != 0); + + return 31 - __builtin_clz(word); +#else + int shift = 32 - 8; + + Assert(word != 0); + + while ((word >> shift) == 0) + shift -= 8; + + return shift + pg_leftmost_one_pos[(word >> shift) & 255]; +#endif /* HAVE__BUILTIN_CLZ */ +} + +/* + * pg_leftmost_one_pos64 + * As above, but for a 64-bit word. + */ +static inline int +pg_leftmost_one_pos64(uint64 word) +{ +#ifdef HAVE__BUILTIN_CLZ + Assert(word != 0); + +#if defined(HAVE_LONG_INT_64) + return 63 - __builtin_clzl(word); +#elif defined(HAVE_LONG_LONG_INT_64) + return 63 - __builtin_clzll(word); +#else +#error must have a working 64-bit integer datatype +#endif +#else /* !HAVE__BUILTIN_CLZ */ + int shift = 64 - 8; + + Assert(word != 0); + + while ((word >> shift) == 0) + shift -= 8; + + return shift + pg_leftmost_one_pos[(word >> shift) & 255]; +#endif /* HAVE__BUILTIN_CLZ */ +} + +/* + * pg_rightmost_one_pos32 + * Returns the position of the least significant set bit in "word", + * measured from the least significant bit. word must not be 0. + */ +static inline int +pg_rightmost_one_pos32(uint32 word) +{ +#ifdef HAVE__BUILTIN_CTZ + Assert(word != 0); + + return __builtin_ctz(word); +#else + int result = 0; + + Assert(word != 0); + + while ((word & 255) == 0) + { + word >>= 8; + result += 8; + } + result += pg_rightmost_one_pos[word & 255]; + return result; +#endif /* HAVE__BUILTIN_CTZ */ +} + +/* + * pg_rightmost_one_pos64 + * As above, but for a 64-bit word. + */ +static inline int +pg_rightmost_one_pos64(uint64 word) +{ +#ifdef HAVE__BUILTIN_CTZ + Assert(word != 0); + +#if defined(HAVE_LONG_INT_64) + return __builtin_ctzl(word); +#elif defined(HAVE_LONG_LONG_INT_64) + return __builtin_ctzll(word); +#else +#error must have a working 64-bit integer datatype +#endif +#else /* !HAVE__BUILTIN_CTZ */ + int result = 0; + + Assert(word != 0); + + while ((word & 255) == 0) + { + word >>= 8; + result += 8; + } + result += pg_rightmost_one_pos[word & 255]; + return result; +#endif /* HAVE__BUILTIN_CTZ */ +} + +/* + * pg_nextpower2_32 + * Returns the next highest power of 2 of 'num', or 'num', if it's + * already a power of 2. + * + * 'num' mustn't be 0 or be above PG_UINT32_MAX / 2 + 1. + */ +static inline uint32 +pg_nextpower2_32(uint32 num) +{ + Assert(num > 0 && num <= PG_UINT32_MAX / 2 + 1); + + /* + * A power 2 number has only 1 bit set. Subtracting 1 from such a number + * will turn on all previous bits resulting in no common bits being set + * between num and num-1. + */ + if ((num & (num - 1)) == 0) + return num; /* already power 2 */ + + return ((uint32) 1) << (pg_leftmost_one_pos32(num) + 1); +} + +/* + * pg_nextpower2_64 + * Returns the next highest power of 2 of 'num', or 'num', if it's + * already a power of 2. + * + * 'num' mustn't be 0 or be above PG_UINT64_MAX / 2 + 1. + */ +static inline uint64 +pg_nextpower2_64(uint64 num) +{ + Assert(num > 0 && num <= PG_UINT64_MAX / 2 + 1); + + /* + * A power 2 number has only 1 bit set. Subtracting 1 from such a number + * will turn on all previous bits resulting in no common bits being set + * between num and num-1. + */ + if ((num & (num - 1)) == 0) + return num; /* already power 2 */ + + return ((uint64) 1) << (pg_leftmost_one_pos64(num) + 1); +} + +/* + * pg_ceil_log2_32 + * Returns equivalent of ceil(log2(num)) + */ +static inline uint32 +pg_ceil_log2_32(uint32 num) +{ + if (num < 2) + return 0; + else + return pg_leftmost_one_pos32(num - 1) + 1; +} + +/* + * pg_ceil_log2_64 + * Returns equivalent of ceil(log2(num)) + */ +static inline uint64 +pg_ceil_log2_64(uint64 num) +{ + if (num < 2) + return 0; + else + return pg_leftmost_one_pos64(num - 1) + 1; +} + +/* Count the number of one-bits in a uint32 or uint64 */ +extern int (*pg_popcount32) (uint32 word); +extern int (*pg_popcount64) (uint64 word); + +/* Count the number of one-bits in a byte array */ +extern uint64 pg_popcount(const char *buf, int bytes); + +/* + * Rotate the bits of "word" to the right by n bits. + */ +static inline uint32 +pg_rotate_right32(uint32 word, int n) +{ + return (word >> n) | (word << (sizeof(word) * BITS_PER_BYTE - n)); +} + +#endif /* PG_BITUTILS_H */ diff --git a/parser/include/port/pg_bswap.h b/parser/include/port/pg_bswap.h index 50a6bd10..9fd14d12 100644 --- a/parser/include/port/pg_bswap.h +++ b/parser/include/port/pg_bswap.h @@ -3,17 +3,15 @@ * pg_bswap.h * Byte swapping. * - * Macros for reversing the byte order of 32-bit and 64-bit unsigned integers. + * Macros for reversing the byte order of 16, 32 and 64-bit unsigned integers. * For example, 0xAABBCCDD becomes 0xDDCCBBAA. These are just wrappers for * built-in functions provided by the compiler where support exists. - * Elsewhere, beware of multiple evaluations of the arguments! * - * Note that the GCC built-in functions __builtin_bswap32() and - * __builtin_bswap64() are documented as accepting single arguments of type - * uint32_t and uint64_t respectively (these are also the respective return - * types). Use caution when using these wrapper macros with signed integers. + * Note that all of these functions accept unsigned integers as arguments and + * return the same. Use caution when using these wrapper macros with signed + * integers. * - * Copyright (c) 2015-2017, PostgreSQL Global Development Group + * Copyright (c) 2015-2020, PostgreSQL Global Development Group * * src/include/port/pg_bswap.h * @@ -22,28 +20,114 @@ #ifndef PG_BSWAP_H #define PG_BSWAP_H -#ifdef HAVE__BUILTIN_BSWAP32 -#define BSWAP32(x) __builtin_bswap32(x) + +/* + * In all supported versions msvc provides _byteswap_* functions in stdlib.h, + * already included by c.h. + */ + + +/* implementation of uint16 pg_bswap16(uint16) */ +#if defined(HAVE__BUILTIN_BSWAP16) + +#define pg_bswap16(x) __builtin_bswap16(x) + +#elif defined(_MSC_VER) + +#define pg_bswap16(x) _byteswap_ushort(x) + #else -#define BSWAP32(x) ((((x) << 24) & 0xff000000) | \ - (((x) << 8) & 0x00ff0000) | \ - (((x) >> 8) & 0x0000ff00) | \ - (((x) >> 24) & 0x000000ff)) + +static inline uint16 +pg_bswap16(uint16 x) +{ + return + ((x << 8) & 0xff00) | + ((x >> 8) & 0x00ff); +} + +#endif /* HAVE__BUILTIN_BSWAP16 */ + + +/* implementation of uint32 pg_bswap32(uint32) */ +#if defined(HAVE__BUILTIN_BSWAP32) + +#define pg_bswap32(x) __builtin_bswap32(x) + +#elif defined(_MSC_VER) + +#define pg_bswap32(x) _byteswap_ulong(x) + +#else + +static inline uint32 +pg_bswap32(uint32 x) +{ + return + ((x << 24) & 0xff000000) | + ((x << 8) & 0x00ff0000) | + ((x >> 8) & 0x0000ff00) | + ((x >> 24) & 0x000000ff); +} + #endif /* HAVE__BUILTIN_BSWAP32 */ -#ifdef HAVE__BUILTIN_BSWAP64 -#define BSWAP64(x) __builtin_bswap64(x) + +/* implementation of uint64 pg_bswap64(uint64) */ +#if defined(HAVE__BUILTIN_BSWAP64) + +#define pg_bswap64(x) __builtin_bswap64(x) + + +#elif defined(_MSC_VER) + +#define pg_bswap64(x) _byteswap_uint64(x) + #else -#define BSWAP64(x) ((((x) << 56) & UINT64CONST(0xff00000000000000)) | \ - (((x) << 40) & UINT64CONST(0x00ff000000000000)) | \ - (((x) << 24) & UINT64CONST(0x0000ff0000000000)) | \ - (((x) << 8) & UINT64CONST(0x000000ff00000000)) | \ - (((x) >> 8) & UINT64CONST(0x00000000ff000000)) | \ - (((x) >> 24) & UINT64CONST(0x0000000000ff0000)) | \ - (((x) >> 40) & UINT64CONST(0x000000000000ff00)) | \ - (((x) >> 56) & UINT64CONST(0x00000000000000ff))) + +static inline uint64 +pg_bswap64(uint64 x) +{ + return + ((x << 56) & UINT64CONST(0xff00000000000000)) | + ((x << 40) & UINT64CONST(0x00ff000000000000)) | + ((x << 24) & UINT64CONST(0x0000ff0000000000)) | + ((x << 8) & UINT64CONST(0x000000ff00000000)) | + ((x >> 8) & UINT64CONST(0x00000000ff000000)) | + ((x >> 24) & UINT64CONST(0x0000000000ff0000)) | + ((x >> 40) & UINT64CONST(0x000000000000ff00)) | + ((x >> 56) & UINT64CONST(0x00000000000000ff)); +} #endif /* HAVE__BUILTIN_BSWAP64 */ + +/* + * Portable and fast equivalents for ntohs, ntohl, htons, htonl, + * additionally extended to 64 bits. + */ +#ifdef WORDS_BIGENDIAN + +#define pg_hton16(x) (x) +#define pg_hton32(x) (x) +#define pg_hton64(x) (x) + +#define pg_ntoh16(x) (x) +#define pg_ntoh32(x) (x) +#define pg_ntoh64(x) (x) + +#else + +#define pg_hton16(x) pg_bswap16(x) +#define pg_hton32(x) pg_bswap32(x) +#define pg_hton64(x) pg_bswap64(x) + +#define pg_ntoh16(x) pg_bswap16(x) +#define pg_ntoh32(x) pg_bswap32(x) +#define pg_ntoh64(x) pg_bswap64(x) + +#endif /* WORDS_BIGENDIAN */ + + /* * Rearrange the bytes of a Datum from big-endian order into the native byte * order. On big-endian machines, this does nothing at all. Note that the C @@ -55,15 +139,23 @@ * the same result as a memcmp() of the corresponding original Datums, but can * be much cheaper. It's generally safe to do this on big-endian systems * without any special transformation occurring first. + * + * If SIZEOF_DATUM is not defined, then postgres.h wasn't included and these + * macros probably shouldn't be used, so we define nothing. Note that + * SIZEOF_DATUM == 8 would evaluate as 0 == 8 in that case, potentially + * leading to the wrong implementation being selected and confusing errors, so + * defining nothing is safest. */ +#ifdef SIZEOF_DATUM #ifdef WORDS_BIGENDIAN #define DatumBigEndianToNative(x) (x) #else /* !WORDS_BIGENDIAN */ #if SIZEOF_DATUM == 8 -#define DatumBigEndianToNative(x) BSWAP64(x) +#define DatumBigEndianToNative(x) pg_bswap64(x) #else /* SIZEOF_DATUM != 8 */ -#define DatumBigEndianToNative(x) BSWAP32(x) +#define DatumBigEndianToNative(x) pg_bswap32(x) #endif /* SIZEOF_DATUM == 8 */ #endif /* WORDS_BIGENDIAN */ +#endif /* SIZEOF_DATUM */ #endif /* PG_BSWAP_H */ diff --git a/parser/include/port/pg_crc32c.h b/parser/include/port/pg_crc32c.h index cd58ecc9..3c6f9066 100644 --- a/parser/include/port/pg_crc32c.h +++ b/parser/include/port/pg_crc32c.h @@ -23,7 +23,7 @@ * EQ_CRC32C(c1, c2) * Check for equality of two CRCs. * - * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/port/pg_crc32c.h @@ -42,26 +42,42 @@ typedef uint32 pg_crc32c; #define EQ_CRC32C(c1, c2) ((c1) == (c2)) #if defined(USE_SSE42_CRC32C) -/* Use SSE4.2 instructions. */ +/* Use Intel SSE4.2 instructions. */ #define COMP_CRC32C(crc, data, len) \ ((crc) = pg_comp_crc32c_sse42((crc), (data), (len))) #define FIN_CRC32C(crc) ((crc) ^= 0xFFFFFFFF) extern pg_crc32c pg_comp_crc32c_sse42(pg_crc32c crc, const void *data, size_t len); -#elif defined(USE_SSE42_CRC32C_WITH_RUNTIME_CHECK) +#elif defined(USE_ARMV8_CRC32C) +/* Use ARMv8 CRC Extension instructions. */ + +#define COMP_CRC32C(crc, data, len) \ + ((crc) = pg_comp_crc32c_armv8((crc), (data), (len))) +#define FIN_CRC32C(crc) ((crc) ^= 0xFFFFFFFF) + +extern pg_crc32c pg_comp_crc32c_armv8(pg_crc32c crc, const void *data, size_t len); + +#elif defined(USE_SSE42_CRC32C_WITH_RUNTIME_CHECK) || defined(USE_ARMV8_CRC32C_WITH_RUNTIME_CHECK) + /* - * Use SSE4.2 instructions, but perform a runtime check first to check that - * they are available. + * Use Intel SSE 4.2 or ARMv8 instructions, but perform a runtime check first + * to check that they are available. */ #define COMP_CRC32C(crc, data, len) \ ((crc) = pg_comp_crc32c((crc), (data), (len))) #define FIN_CRC32C(crc) ((crc) ^= 0xFFFFFFFF) -extern pg_crc32c pg_comp_crc32c_sse42(pg_crc32c crc, const void *data, size_t len); extern pg_crc32c pg_comp_crc32c_sb8(pg_crc32c crc, const void *data, size_t len); extern pg_crc32c (*pg_comp_crc32c) (pg_crc32c crc, const void *data, size_t len); +#ifdef USE_SSE42_CRC32C_WITH_RUNTIME_CHECK +extern pg_crc32c pg_comp_crc32c_sse42(pg_crc32c crc, const void *data, size_t len); +#endif +#ifdef USE_ARMV8_CRC32C_WITH_RUNTIME_CHECK +extern pg_crc32c pg_comp_crc32c_armv8(pg_crc32c crc, const void *data, size_t len); +#endif + #else /* * Use slicing-by-8 algorithm. @@ -73,7 +89,7 @@ extern pg_crc32c (*pg_comp_crc32c) (pg_crc32c crc, const void *data, size_t len) #define COMP_CRC32C(crc, data, len) \ ((crc) = pg_comp_crc32c_sb8((crc), (data), (len))) #ifdef WORDS_BIGENDIAN -#define FIN_CRC32C(crc) ((crc) = BSWAP32(crc) ^ 0xFFFFFFFF) +#define FIN_CRC32C(crc) ((crc) = pg_bswap32(crc) ^ 0xFFFFFFFF) #else #define FIN_CRC32C(crc) ((crc) ^= 0xFFFFFFFF) #endif diff --git a/parser/include/portability/instr_time.h b/parser/include/portability/instr_time.h index b6e8c58d..d6459327 100644 --- a/parser/include/portability/instr_time.h +++ b/parser/include/portability/instr_time.h @@ -20,6 +20,9 @@ * * INSTR_TIME_SET_CURRENT(t) set t to current time * + * INSTR_TIME_SET_CURRENT_LAZY(t) set t to current time if t is zero, + * evaluates to whether t changed + * * INSTR_TIME_ADD(x, y) x += y * * INSTR_TIME_SUBTRACT(x, y) x -= y @@ -43,7 +46,7 @@ * Beware of multiple evaluations of the macro arguments. * * - * Copyright (c) 2001-2017, PostgreSQL Global Development Group + * Copyright (c) 2001-2020, PostgreSQL Global Development Group * * src/include/portability/instr_time.h * @@ -245,4 +248,9 @@ GetTimerFrequency(void) #endif /* WIN32 */ +/* same macro on all platforms */ + +#define INSTR_TIME_SET_CURRENT_LAZY(t) \ + (INSTR_TIME_IS_ZERO(t) ? INSTR_TIME_SET_CURRENT(t), true : false) + #endif /* INSTR_TIME_H */ diff --git a/parser/include/postgres.h b/parser/include/postgres.h index 1ca9b60e..c48f47e9 100644 --- a/parser/include/postgres.h +++ b/parser/include/postgres.h @@ -7,7 +7,7 @@ * Client-side code should include postgres_fe.h instead. * * - * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1995, Regents of the University of California * * src/include/postgres.h @@ -24,8 +24,7 @@ * section description * ------- ------------------------------------------------ * 1) variable-length datatypes (TOAST support) - * 2) datum type + support macros - * 3) exception handling backend support + * 2) Datum type + support macros * * NOTES * @@ -322,6 +321,8 @@ typedef struct (VARATT_IS_EXTERNAL(PTR) && VARTAG_EXTERNAL(PTR) == VARTAG_EXPANDED_RW) #define VARATT_IS_EXTERNAL_EXPANDED(PTR) \ (VARATT_IS_EXTERNAL(PTR) && VARTAG_IS_EXPANDED(VARTAG_EXTERNAL(PTR))) +#define VARATT_IS_EXTERNAL_NON_EXPANDED(PTR) \ + (VARATT_IS_EXTERNAL(PTR) && !VARTAG_IS_EXPANDED(VARTAG_EXTERNAL(PTR))) #define VARATT_IS_SHORT(PTR) VARATT_IS_1B(PTR) #define VARATT_IS_EXTENDED(PTR) (!VARATT_IS_4B_U(PTR)) @@ -349,60 +350,53 @@ typedef struct /* ---------------------------------------------------------------- - * Section 2: datum type + support macros + * Section 2: Datum type + support macros * ---------------------------------------------------------------- */ /* - * Port Notes: - * Postgres makes the following assumptions about datatype sizes: + * A Datum contains either a value of a pass-by-value type or a pointer to a + * value of a pass-by-reference type. Therefore, we require: * - * sizeof(Datum) == sizeof(void *) == 4 or 8 - * sizeof(char) == 1 - * sizeof(short) == 2 + * sizeof(Datum) == sizeof(void *) == 4 or 8 * - * When a type narrower than Datum is stored in a Datum, we place it in the - * low-order bits and are careful that the DatumGetXXX macro for it discards - * the unused high-order bits (as opposed to, say, assuming they are zero). - * This is needed to support old-style user-defined functions, since depending - * on architecture and compiler, the return value of a function returning char - * or short may contain garbage when called as if it returned Datum. + * The macros below and the analogous macros for other types should be used to + * convert between a Datum and the appropriate C type. */ typedef uintptr_t Datum; -#define SIZEOF_DATUM SIZEOF_VOID_P - -typedef Datum *DatumPtr; +/* + * A NullableDatum is used in places where both a Datum and its nullness needs + * to be stored. This can be more efficient than storing datums and nullness + * in separate arrays, due to better spatial locality, even if more space may + * be wasted due to padding. + */ +typedef struct NullableDatum +{ +#define FIELDNO_NULLABLE_DATUM_DATUM 0 + Datum value; +#define FIELDNO_NULLABLE_DATUM_ISNULL 1 + bool isnull; + /* due to alignment padding this could be used for flags for free */ +} NullableDatum; -#define GET_1_BYTE(datum) (((Datum) (datum)) & 0x000000ff) -#define GET_2_BYTES(datum) (((Datum) (datum)) & 0x0000ffff) -#define GET_4_BYTES(datum) (((Datum) (datum)) & 0xffffffff) -#if SIZEOF_DATUM == 8 -#define GET_8_BYTES(datum) ((Datum) (datum)) -#endif -#define SET_1_BYTE(value) (((Datum) (value)) & 0x000000ff) -#define SET_2_BYTES(value) (((Datum) (value)) & 0x0000ffff) -#define SET_4_BYTES(value) (((Datum) (value)) & 0xffffffff) -#if SIZEOF_DATUM == 8 -#define SET_8_BYTES(value) ((Datum) (value)) -#endif +#define SIZEOF_DATUM SIZEOF_VOID_P /* * DatumGetBool * Returns boolean value of a datum. * - * Note: any nonzero value will be considered TRUE, but we ignore bits to - * the left of the width of bool, per comment above. + * Note: any nonzero value will be considered true. */ -#define DatumGetBool(X) ((bool) (GET_1_BYTE(X) != 0)) +#define DatumGetBool(X) ((bool) ((X) != 0)) /* * BoolGetDatum * Returns datum representation for a boolean. * - * Note: any nonzero value will be considered TRUE. + * Note: any nonzero value will be considered true. */ #define BoolGetDatum(X) ((Datum) ((X) ? 1 : 0)) @@ -412,140 +406,140 @@ typedef Datum *DatumPtr; * Returns character value of a datum. */ -#define DatumGetChar(X) ((char) GET_1_BYTE(X)) +#define DatumGetChar(X) ((char) (X)) /* * CharGetDatum * Returns datum representation for a character. */ -#define CharGetDatum(X) ((Datum) SET_1_BYTE(X)) +#define CharGetDatum(X) ((Datum) (X)) /* * Int8GetDatum * Returns datum representation for an 8-bit integer. */ -#define Int8GetDatum(X) ((Datum) SET_1_BYTE(X)) +#define Int8GetDatum(X) ((Datum) (X)) /* * DatumGetUInt8 * Returns 8-bit unsigned integer value of a datum. */ -#define DatumGetUInt8(X) ((uint8) GET_1_BYTE(X)) +#define DatumGetUInt8(X) ((uint8) (X)) /* * UInt8GetDatum * Returns datum representation for an 8-bit unsigned integer. */ -#define UInt8GetDatum(X) ((Datum) SET_1_BYTE(X)) +#define UInt8GetDatum(X) ((Datum) (X)) /* * DatumGetInt16 * Returns 16-bit integer value of a datum. */ -#define DatumGetInt16(X) ((int16) GET_2_BYTES(X)) +#define DatumGetInt16(X) ((int16) (X)) /* * Int16GetDatum * Returns datum representation for a 16-bit integer. */ -#define Int16GetDatum(X) ((Datum) SET_2_BYTES(X)) +#define Int16GetDatum(X) ((Datum) (X)) /* * DatumGetUInt16 * Returns 16-bit unsigned integer value of a datum. */ -#define DatumGetUInt16(X) ((uint16) GET_2_BYTES(X)) +#define DatumGetUInt16(X) ((uint16) (X)) /* * UInt16GetDatum * Returns datum representation for a 16-bit unsigned integer. */ -#define UInt16GetDatum(X) ((Datum) SET_2_BYTES(X)) +#define UInt16GetDatum(X) ((Datum) (X)) /* * DatumGetInt32 * Returns 32-bit integer value of a datum. */ -#define DatumGetInt32(X) ((int32) GET_4_BYTES(X)) +#define DatumGetInt32(X) ((int32) (X)) /* * Int32GetDatum * Returns datum representation for a 32-bit integer. */ -#define Int32GetDatum(X) ((Datum) SET_4_BYTES(X)) +#define Int32GetDatum(X) ((Datum) (X)) /* * DatumGetUInt32 * Returns 32-bit unsigned integer value of a datum. */ -#define DatumGetUInt32(X) ((uint32) GET_4_BYTES(X)) +#define DatumGetUInt32(X) ((uint32) (X)) /* * UInt32GetDatum * Returns datum representation for a 32-bit unsigned integer. */ -#define UInt32GetDatum(X) ((Datum) SET_4_BYTES(X)) +#define UInt32GetDatum(X) ((Datum) (X)) /* * DatumGetObjectId * Returns object identifier value of a datum. */ -#define DatumGetObjectId(X) ((Oid) GET_4_BYTES(X)) +#define DatumGetObjectId(X) ((Oid) (X)) /* * ObjectIdGetDatum * Returns datum representation for an object identifier. */ -#define ObjectIdGetDatum(X) ((Datum) SET_4_BYTES(X)) +#define ObjectIdGetDatum(X) ((Datum) (X)) /* * DatumGetTransactionId * Returns transaction identifier value of a datum. */ -#define DatumGetTransactionId(X) ((TransactionId) GET_4_BYTES(X)) +#define DatumGetTransactionId(X) ((TransactionId) (X)) /* * TransactionIdGetDatum * Returns datum representation for a transaction identifier. */ -#define TransactionIdGetDatum(X) ((Datum) SET_4_BYTES((X))) +#define TransactionIdGetDatum(X) ((Datum) (X)) /* * MultiXactIdGetDatum * Returns datum representation for a multixact identifier. */ -#define MultiXactIdGetDatum(X) ((Datum) SET_4_BYTES((X))) +#define MultiXactIdGetDatum(X) ((Datum) (X)) /* * DatumGetCommandId * Returns command identifier value of a datum. */ -#define DatumGetCommandId(X) ((CommandId) GET_4_BYTES(X)) +#define DatumGetCommandId(X) ((CommandId) (X)) /* * CommandIdGetDatum * Returns datum representation for a command identifier. */ -#define CommandIdGetDatum(X) ((Datum) SET_4_BYTES(X)) +#define CommandIdGetDatum(X) ((Datum) (X)) /* * DatumGetPointer @@ -608,7 +602,7 @@ typedef Datum *DatumPtr; */ #ifdef USE_FLOAT8_BYVAL -#define DatumGetInt64(X) ((int64) GET_8_BYTES(X)) +#define DatumGetInt64(X) ((int64) (X)) #else #define DatumGetInt64(X) (* ((int64 *) DatumGetPointer(X))) #endif @@ -622,7 +616,7 @@ typedef Datum *DatumPtr; */ #ifdef USE_FLOAT8_BYVAL -#define Int64GetDatum(X) ((Datum) SET_8_BYTES(X)) +#define Int64GetDatum(X) ((Datum) (X)) #else extern Datum Int64GetDatum(int64 X); #endif @@ -635,7 +629,7 @@ extern Datum Int64GetDatum(int64 X); */ #ifdef USE_FLOAT8_BYVAL -#define DatumGetUInt64(X) ((uint64) GET_8_BYTES(X)) +#define DatumGetUInt64(X) ((uint64) (X)) #else #define DatumGetUInt64(X) (* ((uint64 *) DatumGetPointer(X))) #endif @@ -649,7 +643,7 @@ extern Datum Int64GetDatum(int64 X); */ #ifdef USE_FLOAT8_BYVAL -#define UInt64GetDatum(X) ((Datum) SET_8_BYTES(X)) +#define UInt64GetDatum(X) ((Datum) (X)) #else #define UInt64GetDatum(X) Int64GetDatum((int64) (X)) #endif @@ -665,11 +659,7 @@ extern Datum Int64GetDatum(int64 X); /* * DatumGetFloat4 * Returns 4-byte floating point value of a datum. - * - * Note: this macro hides whether float4 is pass by value or by reference. */ - -#ifdef USE_FLOAT4_BYVAL static inline float4 DatumGetFloat4(Datum X) { @@ -682,18 +672,11 @@ DatumGetFloat4(Datum X) myunion.value = DatumGetInt32(X); return myunion.retval; } -#else -#define DatumGetFloat4(X) (* ((float4 *) DatumGetPointer(X))) -#endif /* * Float4GetDatum * Returns datum representation for a 4-byte floating point number. - * - * Note: if float4 is pass by reference, this function returns a reference - * to palloc'd space. */ -#ifdef USE_FLOAT4_BYVAL static inline Datum Float4GetDatum(float4 X) { @@ -706,9 +689,6 @@ Float4GetDatum(float4 X) myunion.value = X; return Int32GetDatum(myunion.retval); } -#else -extern Datum Float4GetDatum(float4 X); -#endif /* * DatumGetFloat8 @@ -763,10 +743,9 @@ extern Datum Float8GetDatum(float8 X); /* * Int64GetDatumFast * Float8GetDatumFast - * Float4GetDatumFast * * These macros are intended to allow writing code that does not depend on - * whether int64, float8, float4 are pass-by-reference types, while not + * whether int64 and float8 are pass-by-reference types, while not * sacrificing performance when they are. The argument must be a variable * that will exist and have the same value for as long as the Datum is needed. * In the pass-by-ref case, the address of the variable is taken to use as @@ -782,25 +761,4 @@ extern Datum Float8GetDatum(float8 X); #define Float8GetDatumFast(X) PointerGetDatum(&(X)) #endif -#ifdef USE_FLOAT4_BYVAL -#define Float4GetDatumFast(X) Float4GetDatum(X) -#else -#define Float4GetDatumFast(X) PointerGetDatum(&(X)) -#endif - - -/* ---------------------------------------------------------------- - * Section 3: exception handling backend support - * ---------------------------------------------------------------- - */ - -/* - * Backend only infrastructure for the assertion-related macros in c.h. - * - * ExceptionalCondition must be present even when assertions are not enabled. - */ -extern void ExceptionalCondition(const char *conditionName, - const char *errorType, - const char *fileName, int lineNumber) pg_attribute_noreturn(); - #endif /* POSTGRES_H */ diff --git a/parser/include/postmaster/autovacuum.h b/parser/include/postmaster/autovacuum.h index 816f031c..7277effe 100644 --- a/parser/include/postmaster/autovacuum.h +++ b/parser/include/postmaster/autovacuum.h @@ -4,7 +4,7 @@ * header file for integrated autovacuum daemon * * - * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/postmaster/autovacuum.h @@ -33,11 +33,13 @@ extern int autovacuum_work_mem; extern int autovacuum_naptime; extern int autovacuum_vac_thresh; extern double autovacuum_vac_scale; +extern int autovacuum_vac_ins_thresh; +extern double autovacuum_vac_ins_scale; extern int autovacuum_anl_thresh; extern double autovacuum_anl_scale; extern int autovacuum_freeze_max_age; extern int autovacuum_multixact_freeze_max_age; -extern int autovacuum_vac_cost_delay; +extern double autovacuum_vac_cost_delay; extern int autovacuum_vac_cost_limit; /* autovacuum launcher PID, only valid when worker is shutting down */ @@ -72,7 +74,7 @@ extern void AutovacuumLauncherIAm(void); #endif extern bool AutoVacuumRequestWork(AutoVacuumWorkItemType type, - Oid relationId, BlockNumber blkno); + Oid relationId, BlockNumber blkno); /* shared memory stuff */ extern Size AutoVacuumShmemSize(void); diff --git a/parser/include/postmaster/bgworker.h b/parser/include/postmaster/bgworker.h index e2ecd3c9..4c6ebaa4 100644 --- a/parser/include/postmaster/bgworker.h +++ b/parser/include/postmaster/bgworker.h @@ -31,7 +31,7 @@ * different) code. * * - * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * IDENTIFICATION @@ -82,12 +82,13 @@ typedef enum #define BGW_DEFAULT_RESTART_INTERVAL 60 #define BGW_NEVER_RESTART -1 -#define BGW_MAXLEN 64 +#define BGW_MAXLEN 96 #define BGW_EXTRALEN 128 typedef struct BackgroundWorker { char bgw_name[BGW_MAXLEN]; + char bgw_type[BGW_MAXLEN]; int bgw_flags; BgWorkerStartTime bgw_start_time; int bgw_restart_time; /* in seconds, or BGW_NEVER_RESTART */ @@ -114,14 +115,15 @@ extern void RegisterBackgroundWorker(BackgroundWorker *worker); /* Register a new bgworker from a regular backend */ extern bool RegisterDynamicBackgroundWorker(BackgroundWorker *worker, - BackgroundWorkerHandle **handle); + BackgroundWorkerHandle **handle); /* Query the status of a bgworker */ extern BgwHandleStatus GetBackgroundWorkerPid(BackgroundWorkerHandle *handle, - pid_t *pidp); + pid_t *pidp); extern BgwHandleStatus WaitForBackgroundWorkerStartup(BackgroundWorkerHandle *handle, pid_t *pid); extern BgwHandleStatus WaitForBackgroundWorkerShutdown(BackgroundWorkerHandle *); +extern const char *GetBackgroundWorkerTypeByPid(pid_t pid); /* Terminate a bgworker */ extern void TerminateBackgroundWorker(BackgroundWorkerHandle *handle); @@ -138,10 +140,19 @@ extern PGDLLIMPORT BackgroundWorker *MyBgworkerEntry; * If dbname is NULL, connection is made to no specific database; * only shared catalogs can be accessed. */ -extern void BackgroundWorkerInitializeConnection(char *dbname, char *username); +extern void BackgroundWorkerInitializeConnection(const char *dbname, const char *username, uint32 flags); /* Just like the above, but specifying database and user by OID. */ -extern void BackgroundWorkerInitializeConnectionByOid(Oid dboid, Oid useroid); +extern void BackgroundWorkerInitializeConnectionByOid(Oid dboid, Oid useroid, uint32 flags); + +/* + * Flags to BackgroundWorkerInitializeConnection et al + * + * + * Allow bypassing datallowconn restrictions when connecting to database + */ +#define BGWORKER_BYPASS_ALLOWCONN 1 + /* Block/unblock signals in a background worker process */ extern void BackgroundWorkerBlockSignals(void); diff --git a/parser/include/postmaster/bgworker_internals.h b/parser/include/postmaster/bgworker_internals.h index 80c1891f..dd6cabc4 100644 --- a/parser/include/postmaster/bgworker_internals.h +++ b/parser/include/postmaster/bgworker_internals.h @@ -2,7 +2,7 @@ * bgworker_internals.h * POSTGRES pluggable background workers internals * - * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * IDENTIFICATION diff --git a/parser/include/postmaster/bgwriter.h b/parser/include/postmaster/bgwriter.h index a9b8bc7e..0a5708b3 100644 --- a/parser/include/postmaster/bgwriter.h +++ b/parser/include/postmaster/bgwriter.h @@ -6,7 +6,7 @@ * The bgwriter process used to handle checkpointing duties too. Now * there is a separate process, but we did not bother to split this header. * - * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * * src/include/postmaster/bgwriter.h * @@ -17,6 +17,8 @@ #include "storage/block.h" #include "storage/relfilenode.h" +#include "storage/smgr.h" +#include "storage/sync.h" /* GUC options */ @@ -31,9 +33,9 @@ extern void CheckpointerMain(void) pg_attribute_noreturn(); extern void RequestCheckpoint(int flags); extern void CheckpointWriteDelay(int flags, double progress); -extern bool ForwardFsyncRequest(RelFileNode rnode, ForkNumber forknum, - BlockNumber segno); -extern void AbsorbFsyncRequests(void); +extern bool ForwardSyncRequest(const FileTag *ftag, SyncRequestType type); + +extern void AbsorbSyncRequests(void); extern Size CheckpointerShmemSize(void); extern void CheckpointerShmemInit(void); diff --git a/parser/include/postmaster/fork_process.h b/parser/include/postmaster/fork_process.h index 9d5b97ac..8cb568fc 100644 --- a/parser/include/postmaster/fork_process.h +++ b/parser/include/postmaster/fork_process.h @@ -3,7 +3,7 @@ * fork_process.h * Exports from postmaster/fork_process.c. * - * Copyright (c) 1996-2017, PostgreSQL Global Development Group + * Copyright (c) 1996-2020, PostgreSQL Global Development Group * * src/include/postmaster/fork_process.h * diff --git a/parser/include/postmaster/interrupt.h b/parser/include/postmaster/interrupt.h new file mode 100644 index 00000000..4f567129 --- /dev/null +++ b/parser/include/postmaster/interrupt.h @@ -0,0 +1,32 @@ +/*------------------------------------------------------------------------- + * + * interrupt.h + * Interrupt handling routines. + * + * Responses to interrupts are fairly varied and many types of backends + * have their own implementations, but we provide a few generic things + * here to facilitate code reuse. + * + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group + * Portions Copyright (c) 1994, Regents of the University of California + * + * IDENTIFICATION + * src/include/postmaster/interrupt.h + * + *------------------------------------------------------------------------- + */ + +#ifndef INTERRUPT_H +#define INTERRUPT_H + +#include + +extern PGDLLIMPORT volatile sig_atomic_t ConfigReloadPending; +extern PGDLLIMPORT volatile sig_atomic_t ShutdownRequestPending; + +extern void HandleMainLoopInterrupts(void); +extern void SignalHandlerForConfigReload(SIGNAL_ARGS); +extern void SignalHandlerForCrashExit(SIGNAL_ARGS); +extern void SignalHandlerForShutdownRequest(SIGNAL_ARGS); + +#endif diff --git a/parser/include/postmaster/pgarch.h b/parser/include/postmaster/pgarch.h index ab1ddcf5..b3200874 100644 --- a/parser/include/postmaster/pgarch.h +++ b/parser/include/postmaster/pgarch.h @@ -3,7 +3,7 @@ * pgarch.h * Exports from postmaster/pgarch.c. * - * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/postmaster/pgarch.h diff --git a/parser/include/postmaster/postmaster.h b/parser/include/postmaster/postmaster.h index f32e878e..ff5e39ca 100644 --- a/parser/include/postmaster/postmaster.h +++ b/parser/include/postmaster/postmaster.h @@ -3,7 +3,7 @@ * postmaster.h * Exports from postmaster/postmaster.c. * - * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/postmaster/postmaster.h @@ -48,10 +48,10 @@ extern PGDLLIMPORT const char *progname; extern void PostmasterMain(int argc, char *argv[]) pg_attribute_noreturn(); extern void ClosePostmasterPorts(bool am_syslogger); +extern void InitProcessGlobals(void); extern int MaxLivePostmasterChildren(void); -extern int GetNumShmemAttachedBgworkers(void); extern bool PostmasterMarkPIDForWorkerNotify(int); #ifdef EXEC_BACKEND diff --git a/parser/include/postmaster/syslogger.h b/parser/include/postmaster/syslogger.h index f4248ef5..f611bd14 100644 --- a/parser/include/postmaster/syslogger.h +++ b/parser/include/postmaster/syslogger.h @@ -3,7 +3,7 @@ * syslogger.h * Exports from postmaster/syslogger.c. * - * Copyright (c) 2004-2017, PostgreSQL Global Development Group + * Copyright (c) 2004-2020, PostgreSQL Global Development Group * * src/include/postmaster/syslogger.h * @@ -70,8 +70,6 @@ extern PGDLLIMPORT char *Log_filename; extern bool Log_truncate_on_rotation; extern int Log_file_mode; -extern bool am_syslogger; - #ifndef WIN32 extern int syslogPipe[2]; #else @@ -87,6 +85,9 @@ extern void write_syslogger_file(const char *buffer, int count, int dest); extern void SysLoggerMain(int argc, char *argv[]) pg_attribute_noreturn(); #endif +extern bool CheckLogrotateSignal(void); +extern void RemoveLogrotateSignalFiles(void); + /* * Name of files saving meta-data information about the log * files currently in use by the syslogger diff --git a/parser/include/postmaster/walwriter.h b/parser/include/postmaster/walwriter.h index f0eb4258..011dc26a 100644 --- a/parser/include/postmaster/walwriter.h +++ b/parser/include/postmaster/walwriter.h @@ -3,7 +3,7 @@ * walwriter.h * Exports from postmaster/walwriter.c. * - * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * * src/include/postmaster/walwriter.h * diff --git a/parser/include/protobuf-c.h b/parser/include/protobuf-c.h new file mode 100644 index 00000000..da6cf676 --- /dev/null +++ b/parser/include/protobuf-c.h @@ -0,0 +1,1106 @@ +/* + * Copyright (c) 2008-2018, Dave Benson and the protobuf-c authors. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following disclaimer + * in the documentation and/or other materials provided with the + * distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +/*! \file + * \mainpage Introduction + * + * This is [protobuf-c], a C implementation of [Protocol Buffers]. + * + * This file defines the public API for the `libprotobuf-c` support library. + * This API includes interfaces that can be used directly by client code as well + * as the interfaces used by the code generated by the `protoc-c` compiler. + * + * The `libprotobuf-c` support library performs the actual serialization and + * deserialization of Protocol Buffers messages. It interacts with structures, + * definitions, and metadata generated by the `protoc-c` compiler from .proto + * files. + * + * \authors Dave Benson and the `protobuf-c` authors. + * + * \copyright 2008-2014. Licensed under the terms of the [BSD-2-Clause] license. + * + * [protobuf-c]: https://github.com/protobuf-c/protobuf-c + * [Protocol Buffers]: https://developers.google.com/protocol-buffers/ + * [BSD-2-Clause]: http://opensource.org/licenses/BSD-2-Clause + * + * \page gencode Generated Code + * + * For each enum, we generate a C enum. For each message, we generate a C + * structure which can be cast to a `ProtobufCMessage`. + * + * For each enum and message, we generate a descriptor object that allows us to + * implement a kind of reflection on the structures. + * + * First, some naming conventions: + * + * - The name of the type for enums and messages and services is camel case + * (meaning WordsAreCrammedTogether) except that double underscores are used + * to delimit scopes. For example, the following `.proto` file: + * +~~~{.proto} + package foo.bar; + message BazBah { + optional int32 val = 1; + } +~~~ + * + * would generate a C type `Foo__Bar__BazBah`. + * + * - Identifiers for functions and globals are all lowercase, with camel case + * words separated by single underscores. For example, one of the function + * prototypes generated by `protoc-c` for the above example: + * +~~~{.c} +Foo__Bar__BazBah * + foo__bar__baz_bah__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +~~~ + * + * - Identifiers for enum values contain an uppercase prefix which embeds the + * package name and the enum type name. + * + * - A double underscore is used to separate further components of identifier + * names. + * + * For example, in the name of the unpack function above, the package name + * `foo.bar` has become `foo__bar`, the message name BazBah has become + * `baz_bah`, and the method name is `unpack`. These are all joined with double + * underscores to form the C identifier `foo__bar__baz_bah__unpack`. + * + * We also generate descriptor objects for messages and enums. These are + * declared in the `.pb-c.h` files: + * +~~~{.c} +extern const ProtobufCMessageDescriptor foo__bar__baz_bah__descriptor; +~~~ + * + * The message structures all begin with `ProtobufCMessageDescriptor *` which is + * sufficient to allow them to be cast to `ProtobufCMessage`. + * + * For each message defined in a `.proto` file, we generate a number of + * functions and macros. Each function name contains a prefix based on the + * package name and message name in order to make it a unique C identifier. + * + * - `INIT`. Statically initializes a message object, initializing its + * descriptor and setting its fields to default values. Uninitialized + * messages cannot be processed by the protobuf-c library. + * +~~~{.c} +#define FOO__BAR__BAZ_BAH__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&foo__bar__baz_bah__descriptor), 0 } +~~~ + * - `init()`. Initializes a message object, initializing its descriptor and + * setting its fields to default values. Uninitialized messages cannot be + * processed by the protobuf-c library. + * +~~~{.c} +void foo__bar__baz_bah__init + (Foo__Bar__BazBah *message); +~~~ + * - `unpack()`. Unpacks data for a particular message format. Note that the + * `allocator` parameter is usually `NULL` to indicate that the system's + * `malloc()` and `free()` functions should be used for dynamically allocating + * memory. + * +~~~{.c} +Foo__Bar__BazBah * + foo__bar__baz_bah__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +~~~ + * + * - `free_unpacked()`. Frees a message object obtained with the `unpack()` + * method. Freeing `NULL` is allowed (the same as with `free()`). + * +~~~{.c} +void foo__bar__baz_bah__free_unpacked + (Foo__Bar__BazBah *message, + ProtobufCAllocator *allocator); +~~~ + * + * - `get_packed_size()`. Calculates the length in bytes of the serialized + * representation of the message object. + * +~~~{.c} +size_t foo__bar__baz_bah__get_packed_size + (const Foo__Bar__BazBah *message); +~~~ + * + * - `pack()`. Pack a message object into a preallocated buffer. Assumes that + * the buffer is large enough. (Use `get_packed_size()` first.) + * +~~~{.c} +size_t foo__bar__baz_bah__pack + (const Foo__Bar__BazBah *message, + uint8_t *out); +~~~ + * + * - `pack_to_buffer()`. Packs a message into a "virtual buffer". This is an + * object which defines an "append bytes" callback to consume data as it is + * serialized. + * +~~~{.c} +size_t foo__bar__baz_bah__pack_to_buffer + (const Foo__Bar__BazBah *message, + ProtobufCBuffer *buffer); +~~~ + * + * \page pack Packing and unpacking messages + * + * To pack a message, first compute the packed size of the message with + * protobuf_c_message_get_packed_size(), then allocate a buffer of at least + * that size, then call protobuf_c_message_pack(). + * + * Alternatively, a message can be serialized without calculating the final size + * first. Use the protobuf_c_message_pack_to_buffer() function and provide a + * ProtobufCBuffer object which implements an "append" method that consumes + * data. + * + * To unpack a message, call the protobuf_c_message_unpack() function. The + * result can be cast to an object of the type that matches the descriptor for + * the message. + * + * The result of unpacking a message should be freed with + * protobuf_c_message_free_unpacked(). + */ + +#ifndef PROTOBUF_C_H +#define PROTOBUF_C_H + +#include +#include +#include +#include + +#ifdef __cplusplus +# define PROTOBUF_C__BEGIN_DECLS extern "C" { +# define PROTOBUF_C__END_DECLS } +#else +# define PROTOBUF_C__BEGIN_DECLS +# define PROTOBUF_C__END_DECLS +#endif + +PROTOBUF_C__BEGIN_DECLS + +#if defined(_WIN32) && defined(PROTOBUF_C_USE_SHARED_LIB) +# ifdef PROTOBUF_C_EXPORT +# define PROTOBUF_C__API __declspec(dllexport) +# else +# define PROTOBUF_C__API __declspec(dllimport) +# endif +#else +# define PROTOBUF_C__API +#endif + +#if !defined(PROTOBUF_C__NO_DEPRECATED) && \ + ((__GNUC__ > 3) || (__GNUC__ == 3 && __GNUC_MINOR__ >= 1)) +# define PROTOBUF_C__DEPRECATED __attribute__((__deprecated__)) +#else +# define PROTOBUF_C__DEPRECATED +#endif + +#ifndef PROTOBUF_C__FORCE_ENUM_TO_BE_INT_SIZE + #define PROTOBUF_C__FORCE_ENUM_TO_BE_INT_SIZE(enum_name) \ + , _##enum_name##_IS_INT_SIZE = INT_MAX +#endif + +#define PROTOBUF_C__SERVICE_DESCRIPTOR_MAGIC 0x14159bc3 +#define PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC 0x28aaeef9 +#define PROTOBUF_C__ENUM_DESCRIPTOR_MAGIC 0x114315af + +/* Empty string used for initializers */ +extern const char protobuf_c_empty_string[]; + +/** + * \defgroup api Public API + * + * This is the public API for `libprotobuf-c`. These interfaces are stable and + * subject to Semantic Versioning guarantees. + * + * @{ + */ + +/** + * Values for the `flags` word in `ProtobufCFieldDescriptor`. + */ +typedef enum { + /** Set if the field is repeated and marked with the `packed` option. */ + PROTOBUF_C_FIELD_FLAG_PACKED = (1 << 0), + + /** Set if the field is marked with the `deprecated` option. */ + PROTOBUF_C_FIELD_FLAG_DEPRECATED = (1 << 1), + + /** Set if the field is a member of a oneof (union). */ + PROTOBUF_C_FIELD_FLAG_ONEOF = (1 << 2), +} ProtobufCFieldFlag; + +/** + * Message field rules. + * + * \see [Defining A Message Type] in the Protocol Buffers documentation. + * + * [Defining A Message Type]: + * https://developers.google.com/protocol-buffers/docs/proto#simple + */ +typedef enum { + /** A well-formed message must have exactly one of this field. */ + PROTOBUF_C_LABEL_REQUIRED, + + /** + * A well-formed message can have zero or one of this field (but not + * more than one). + */ + PROTOBUF_C_LABEL_OPTIONAL, + + /** + * This field can be repeated any number of times (including zero) in a + * well-formed message. The order of the repeated values will be + * preserved. + */ + PROTOBUF_C_LABEL_REPEATED, + + /** + * This field has no label. This is valid only in proto3 and is + * equivalent to OPTIONAL but no "has" quantifier will be consulted. + */ + PROTOBUF_C_LABEL_NONE, +} ProtobufCLabel; + +/** + * Field value types. + * + * \see [Scalar Value Types] in the Protocol Buffers documentation. + * + * [Scalar Value Types]: + * https://developers.google.com/protocol-buffers/docs/proto#scalar + */ +typedef enum { + PROTOBUF_C_TYPE_INT32, /**< int32 */ + PROTOBUF_C_TYPE_SINT32, /**< signed int32 */ + PROTOBUF_C_TYPE_SFIXED32, /**< signed int32 (4 bytes) */ + PROTOBUF_C_TYPE_INT64, /**< int64 */ + PROTOBUF_C_TYPE_SINT64, /**< signed int64 */ + PROTOBUF_C_TYPE_SFIXED64, /**< signed int64 (8 bytes) */ + PROTOBUF_C_TYPE_UINT32, /**< unsigned int32 */ + PROTOBUF_C_TYPE_FIXED32, /**< unsigned int32 (4 bytes) */ + PROTOBUF_C_TYPE_UINT64, /**< unsigned int64 */ + PROTOBUF_C_TYPE_FIXED64, /**< unsigned int64 (8 bytes) */ + PROTOBUF_C_TYPE_FLOAT, /**< float */ + PROTOBUF_C_TYPE_DOUBLE, /**< double */ + PROTOBUF_C_TYPE_BOOL, /**< boolean */ + PROTOBUF_C_TYPE_ENUM, /**< enumerated type */ + PROTOBUF_C_TYPE_STRING, /**< UTF-8 or ASCII string */ + PROTOBUF_C_TYPE_BYTES, /**< arbitrary byte sequence */ + PROTOBUF_C_TYPE_MESSAGE, /**< nested message */ +} ProtobufCType; + +/** + * Field wire types. + * + * \see [Message Structure] in the Protocol Buffers documentation. + * + * [Message Structure]: + * https://developers.google.com/protocol-buffers/docs/encoding#structure + */ +typedef enum { + PROTOBUF_C_WIRE_TYPE_VARINT = 0, + PROTOBUF_C_WIRE_TYPE_64BIT = 1, + PROTOBUF_C_WIRE_TYPE_LENGTH_PREFIXED = 2, + /* "Start group" and "end group" wire types are unsupported. */ + PROTOBUF_C_WIRE_TYPE_32BIT = 5, +} ProtobufCWireType; + +struct ProtobufCAllocator; +struct ProtobufCBinaryData; +struct ProtobufCBuffer; +struct ProtobufCBufferSimple; +struct ProtobufCEnumDescriptor; +struct ProtobufCEnumValue; +struct ProtobufCEnumValueIndex; +struct ProtobufCFieldDescriptor; +struct ProtobufCIntRange; +struct ProtobufCMessage; +struct ProtobufCMessageDescriptor; +struct ProtobufCMessageUnknownField; +struct ProtobufCMethodDescriptor; +struct ProtobufCService; +struct ProtobufCServiceDescriptor; + +typedef struct ProtobufCAllocator ProtobufCAllocator; +typedef struct ProtobufCBinaryData ProtobufCBinaryData; +typedef struct ProtobufCBuffer ProtobufCBuffer; +typedef struct ProtobufCBufferSimple ProtobufCBufferSimple; +typedef struct ProtobufCEnumDescriptor ProtobufCEnumDescriptor; +typedef struct ProtobufCEnumValue ProtobufCEnumValue; +typedef struct ProtobufCEnumValueIndex ProtobufCEnumValueIndex; +typedef struct ProtobufCFieldDescriptor ProtobufCFieldDescriptor; +typedef struct ProtobufCIntRange ProtobufCIntRange; +typedef struct ProtobufCMessage ProtobufCMessage; +typedef struct ProtobufCMessageDescriptor ProtobufCMessageDescriptor; +typedef struct ProtobufCMessageUnknownField ProtobufCMessageUnknownField; +typedef struct ProtobufCMethodDescriptor ProtobufCMethodDescriptor; +typedef struct ProtobufCService ProtobufCService; +typedef struct ProtobufCServiceDescriptor ProtobufCServiceDescriptor; + +/** Boolean type. */ +typedef int protobuf_c_boolean; + +typedef void (*ProtobufCClosure)(const ProtobufCMessage *, void *closure_data); +typedef void (*ProtobufCMessageInit)(ProtobufCMessage *); +typedef void (*ProtobufCServiceDestroy)(ProtobufCService *); + +/** + * Structure for defining a custom memory allocator. + */ +struct ProtobufCAllocator { + /** Function to allocate memory. */ + void *(*alloc)(void *allocator_data, size_t size); + + /** Function to free memory. */ + void (*free)(void *allocator_data, void *pointer); + + /** Opaque pointer passed to `alloc` and `free` functions. */ + void *allocator_data; +}; + +/** + * Structure for the protobuf `bytes` scalar type. + * + * The data contained in a `ProtobufCBinaryData` is an arbitrary sequence of + * bytes. It may contain embedded `NUL` characters and is not required to be + * `NUL`-terminated. + */ +struct ProtobufCBinaryData { + size_t len; /**< Number of bytes in the `data` field. */ + uint8_t *data; /**< Data bytes. */ +}; + +/** + * Structure for defining a virtual append-only buffer. Used by + * protobuf_c_message_pack_to_buffer() to abstract the consumption of serialized + * bytes. + * + * `ProtobufCBuffer` "subclasses" may be defined on the stack. For example, to + * write to a `FILE` object: + * +~~~{.c} +typedef struct { + ProtobufCBuffer base; + FILE *fp; +} BufferAppendToFile; + +static void +my_buffer_file_append(ProtobufCBuffer *buffer, + size_t len, + const uint8_t *data) +{ + BufferAppendToFile *file_buf = (BufferAppendToFile *) buffer; + fwrite(data, len, 1, file_buf->fp); // XXX: No error handling! +} +~~~ + * + * To use this new type of ProtobufCBuffer, it could be called as follows: + * +~~~{.c} +... +BufferAppendToFile tmp = {0}; +tmp.base.append = my_buffer_file_append; +tmp.fp = fp; +protobuf_c_message_pack_to_buffer(&message, &tmp); +... +~~~ + */ +struct ProtobufCBuffer { + /** Append function. Consumes the `len` bytes stored at `data`. */ + void (*append)(ProtobufCBuffer *buffer, + size_t len, + const uint8_t *data); +}; + +/** + * Simple buffer "subclass" of `ProtobufCBuffer`. + * + * A `ProtobufCBufferSimple` object is declared on the stack and uses a + * scratch buffer provided by the user for the initial allocation. It performs + * exponential resizing, using dynamically allocated memory. A + * `ProtobufCBufferSimple` object can be created and used as follows: + * +~~~{.c} +uint8_t pad[128]; +ProtobufCBufferSimple simple = PROTOBUF_C_BUFFER_SIMPLE_INIT(pad); +ProtobufCBuffer *buffer = (ProtobufCBuffer *) &simple; +~~~ + * + * `buffer` can now be used with `protobuf_c_message_pack_to_buffer()`. Once a + * message has been serialized to a `ProtobufCBufferSimple` object, the + * serialized data bytes can be accessed from the `.data` field. + * + * To free the memory allocated by a `ProtobufCBufferSimple` object, if any, + * call PROTOBUF_C_BUFFER_SIMPLE_CLEAR() on the object, for example: + * +~~~{.c} +PROTOBUF_C_BUFFER_SIMPLE_CLEAR(&simple); +~~~ + * + * \see PROTOBUF_C_BUFFER_SIMPLE_INIT + * \see PROTOBUF_C_BUFFER_SIMPLE_CLEAR + */ +struct ProtobufCBufferSimple { + /** "Base class". */ + ProtobufCBuffer base; + /** Number of bytes allocated in `data`. */ + size_t alloced; + /** Number of bytes currently stored in `data`. */ + size_t len; + /** Data bytes. */ + uint8_t *data; + /** Whether `data` must be freed. */ + protobuf_c_boolean must_free_data; + /** Allocator to use. May be NULL to indicate the system allocator. */ + ProtobufCAllocator *allocator; +}; + +/** + * Describes an enumeration as a whole, with all of its values. + */ +struct ProtobufCEnumDescriptor { + /** Magic value checked to ensure that the API is used correctly. */ + uint32_t magic; + + /** The qualified name (e.g., "namespace.Type"). */ + const char *name; + /** The unqualified name as given in the .proto file (e.g., "Type"). */ + const char *short_name; + /** Identifier used in generated C code. */ + const char *c_name; + /** The dot-separated namespace. */ + const char *package_name; + + /** Number elements in `values`. */ + unsigned n_values; + /** Array of distinct values, sorted by numeric value. */ + const ProtobufCEnumValue *values; + + /** Number of elements in `values_by_name`. */ + unsigned n_value_names; + /** Array of named values, including aliases, sorted by name. */ + const ProtobufCEnumValueIndex *values_by_name; + + /** Number of elements in `value_ranges`. */ + unsigned n_value_ranges; + /** Value ranges, for faster lookups by numeric value. */ + const ProtobufCIntRange *value_ranges; + + /** Reserved for future use. */ + void *reserved1; + /** Reserved for future use. */ + void *reserved2; + /** Reserved for future use. */ + void *reserved3; + /** Reserved for future use. */ + void *reserved4; +}; + +/** + * Represents a single value of an enumeration. + */ +struct ProtobufCEnumValue { + /** The string identifying this value in the .proto file. */ + const char *name; + + /** The string identifying this value in generated C code. */ + const char *c_name; + + /** The numeric value assigned in the .proto file. */ + int value; +}; + +/** + * Used by `ProtobufCEnumDescriptor` to look up enum values. + */ +struct ProtobufCEnumValueIndex { + /** Name of the enum value. */ + const char *name; + /** Index into values[] array. */ + unsigned index; +}; + +/** + * Describes a single field in a message. + */ +struct ProtobufCFieldDescriptor { + /** Name of the field as given in the .proto file. */ + const char *name; + + /** Tag value of the field as given in the .proto file. */ + uint32_t id; + + /** Whether the field is `REQUIRED`, `OPTIONAL`, or `REPEATED`. */ + ProtobufCLabel label; + + /** The type of the field. */ + ProtobufCType type; + + /** + * The offset in bytes of the message's C structure's quantifier field + * (the `has_MEMBER` field for optional members or the `n_MEMBER` field + * for repeated members or the case enum for oneofs). + */ + unsigned quantifier_offset; + + /** + * The offset in bytes into the message's C structure for the member + * itself. + */ + unsigned offset; + + /** + * A type-specific descriptor. + * + * If `type` is `PROTOBUF_C_TYPE_ENUM`, then `descriptor` points to the + * corresponding `ProtobufCEnumDescriptor`. + * + * If `type` is `PROTOBUF_C_TYPE_MESSAGE`, then `descriptor` points to + * the corresponding `ProtobufCMessageDescriptor`. + * + * Otherwise this field is NULL. + */ + const void *descriptor; /* for MESSAGE and ENUM types */ + + /** The default value for this field, if defined. May be NULL. */ + const void *default_value; + + /** + * A flag word. Zero or more of the bits defined in the + * `ProtobufCFieldFlag` enum may be set. + */ + uint32_t flags; + + /** Reserved for future use. */ + unsigned reserved_flags; + /** Reserved for future use. */ + void *reserved2; + /** Reserved for future use. */ + void *reserved3; +}; + +/** + * Helper structure for optimizing int => index lookups in the case + * where the keys are mostly consecutive values, as they presumably are for + * enums and fields. + * + * The data structures requires that the values in the original array are + * sorted. + */ +struct ProtobufCIntRange { + int start_value; + unsigned orig_index; + /* + * NOTE: the number of values in the range can be inferred by looking + * at the next element's orig_index. A dummy element is added to make + * this simple. + */ +}; + +/** + * An instance of a message. + * + * `ProtobufCMessage` is a light-weight "base class" for all messages. + * + * In particular, `ProtobufCMessage` doesn't have any allocation policy + * associated with it. That's because it's common to create `ProtobufCMessage` + * objects on the stack. In fact, that's what we recommend for sending messages. + * If the object is allocated from the stack, you can't really have a memory + * leak. + * + * This means that calls to functions like protobuf_c_message_unpack() which + * return a `ProtobufCMessage` must be paired with a call to a free function, + * like protobuf_c_message_free_unpacked(). + */ +struct ProtobufCMessage { + /** The descriptor for this message type. */ + const ProtobufCMessageDescriptor *descriptor; + /** The number of elements in `unknown_fields`. */ + unsigned n_unknown_fields; + /** The fields that weren't recognized by the parser. */ + ProtobufCMessageUnknownField *unknown_fields; +}; + +/** + * Describes a message. + */ +struct ProtobufCMessageDescriptor { + /** Magic value checked to ensure that the API is used correctly. */ + uint32_t magic; + + /** The qualified name (e.g., "namespace.Type"). */ + const char *name; + /** The unqualified name as given in the .proto file (e.g., "Type"). */ + const char *short_name; + /** Identifier used in generated C code. */ + const char *c_name; + /** The dot-separated namespace. */ + const char *package_name; + + /** + * Size in bytes of the C structure representing an instance of this + * type of message. + */ + size_t sizeof_message; + + /** Number of elements in `fields`. */ + unsigned n_fields; + /** Field descriptors, sorted by tag number. */ + const ProtobufCFieldDescriptor *fields; + /** Used for looking up fields by name. */ + const unsigned *fields_sorted_by_name; + + /** Number of elements in `field_ranges`. */ + unsigned n_field_ranges; + /** Used for looking up fields by id. */ + const ProtobufCIntRange *field_ranges; + + /** Message initialisation function. */ + ProtobufCMessageInit message_init; + + /** Reserved for future use. */ + void *reserved1; + /** Reserved for future use. */ + void *reserved2; + /** Reserved for future use. */ + void *reserved3; +}; + +/** + * An unknown message field. + */ +struct ProtobufCMessageUnknownField { + /** The tag number. */ + uint32_t tag; + /** The wire type of the field. */ + ProtobufCWireType wire_type; + /** Number of bytes in `data`. */ + size_t len; + /** Field data. */ + uint8_t *data; +}; + +/** + * Method descriptor. + */ +struct ProtobufCMethodDescriptor { + /** Method name. */ + const char *name; + /** Input message descriptor. */ + const ProtobufCMessageDescriptor *input; + /** Output message descriptor. */ + const ProtobufCMessageDescriptor *output; +}; + +/** + * Service. + */ +struct ProtobufCService { + /** Service descriptor. */ + const ProtobufCServiceDescriptor *descriptor; + /** Function to invoke the service. */ + void (*invoke)(ProtobufCService *service, + unsigned method_index, + const ProtobufCMessage *input, + ProtobufCClosure closure, + void *closure_data); + /** Function to destroy the service. */ + void (*destroy)(ProtobufCService *service); +}; + +/** + * Service descriptor. + */ +struct ProtobufCServiceDescriptor { + /** Magic value checked to ensure that the API is used correctly. */ + uint32_t magic; + + /** Service name. */ + const char *name; + /** Short version of service name. */ + const char *short_name; + /** C identifier for the service name. */ + const char *c_name; + /** Package name. */ + const char *package; + /** Number of elements in `methods`. */ + unsigned n_methods; + /** Method descriptors, in the order defined in the .proto file. */ + const ProtobufCMethodDescriptor *methods; + /** Sort index of methods. */ + const unsigned *method_indices_by_name; +}; + +/** + * Get the version of the protobuf-c library. Note that this is the version of + * the library linked against, not the version of the headers compiled against. + * + * \return A string containing the version number of protobuf-c. + */ +PROTOBUF_C__API +const char * +protobuf_c_version(void); + +/** + * Get the version of the protobuf-c library. Note that this is the version of + * the library linked against, not the version of the headers compiled against. + * + * \return A 32 bit unsigned integer containing the version number of + * protobuf-c, represented in base-10 as (MAJOR*1E6) + (MINOR*1E3) + PATCH. + */ +PROTOBUF_C__API +uint32_t +protobuf_c_version_number(void); + +/** + * The version of the protobuf-c headers, represented as a string using the same + * format as protobuf_c_version(). + */ +#define PROTOBUF_C_VERSION "1.3.3" + +/** + * The version of the protobuf-c headers, represented as an integer using the + * same format as protobuf_c_version_number(). + */ +#define PROTOBUF_C_VERSION_NUMBER 1003003 + +/** + * The minimum protoc-c version which works with the current version of the + * protobuf-c headers. + */ +#define PROTOBUF_C_MIN_COMPILER_VERSION 1000000 + +/** + * Look up a `ProtobufCEnumValue` from a `ProtobufCEnumDescriptor` by name. + * + * \param desc + * The `ProtobufCEnumDescriptor` object. + * \param name + * The `name` field from the corresponding `ProtobufCEnumValue` object to + * match. + * \return + * A `ProtobufCEnumValue` object. + * \retval NULL + * If not found or if the optimize_for = CODE_SIZE option was set. + */ +PROTOBUF_C__API +const ProtobufCEnumValue * +protobuf_c_enum_descriptor_get_value_by_name( + const ProtobufCEnumDescriptor *desc, + const char *name); + +/** + * Look up a `ProtobufCEnumValue` from a `ProtobufCEnumDescriptor` by numeric + * value. + * + * \param desc + * The `ProtobufCEnumDescriptor` object. + * \param value + * The `value` field from the corresponding `ProtobufCEnumValue` object to + * match. + * + * \return + * A `ProtobufCEnumValue` object. + * \retval NULL + * If not found. + */ +PROTOBUF_C__API +const ProtobufCEnumValue * +protobuf_c_enum_descriptor_get_value( + const ProtobufCEnumDescriptor *desc, + int value); + +/** + * Look up a `ProtobufCFieldDescriptor` from a `ProtobufCMessageDescriptor` by + * the name of the field. + * + * \param desc + * The `ProtobufCMessageDescriptor` object. + * \param name + * The name of the field. + * \return + * A `ProtobufCFieldDescriptor` object. + * \retval NULL + * If not found or if the optimize_for = CODE_SIZE option was set. + */ +PROTOBUF_C__API +const ProtobufCFieldDescriptor * +protobuf_c_message_descriptor_get_field_by_name( + const ProtobufCMessageDescriptor *desc, + const char *name); + +/** + * Look up a `ProtobufCFieldDescriptor` from a `ProtobufCMessageDescriptor` by + * the tag value of the field. + * + * \param desc + * The `ProtobufCMessageDescriptor` object. + * \param value + * The tag value of the field. + * \return + * A `ProtobufCFieldDescriptor` object. + * \retval NULL + * If not found. + */ +PROTOBUF_C__API +const ProtobufCFieldDescriptor * +protobuf_c_message_descriptor_get_field( + const ProtobufCMessageDescriptor *desc, + unsigned value); + +/** + * Determine the number of bytes required to store the serialised message. + * + * \param message + * The message object to serialise. + * \return + * Number of bytes. + */ +PROTOBUF_C__API +size_t +protobuf_c_message_get_packed_size(const ProtobufCMessage *message); + +/** + * Serialise a message from its in-memory representation. + * + * This function stores the serialised bytes of the message in a pre-allocated + * buffer. + * + * \param message + * The message object to serialise. + * \param[out] out + * Buffer to store the bytes of the serialised message. This buffer must + * have enough space to store the packed message. Use + * protobuf_c_message_get_packed_size() to determine the number of bytes + * required. + * \return + * Number of bytes stored in `out`. + */ +PROTOBUF_C__API +size_t +protobuf_c_message_pack(const ProtobufCMessage *message, uint8_t *out); + +/** + * Serialise a message from its in-memory representation to a virtual buffer. + * + * This function calls the `append` method of a `ProtobufCBuffer` object to + * consume the bytes generated by the serialiser. + * + * \param message + * The message object to serialise. + * \param buffer + * The virtual buffer object. + * \return + * Number of bytes passed to the virtual buffer. + */ +PROTOBUF_C__API +size_t +protobuf_c_message_pack_to_buffer( + const ProtobufCMessage *message, + ProtobufCBuffer *buffer); + +/** + * Unpack a serialised message into an in-memory representation. + * + * \param descriptor + * The message descriptor. + * \param allocator + * `ProtobufCAllocator` to use for memory allocation. May be NULL to + * specify the default allocator. + * \param len + * Length in bytes of the serialised message. + * \param data + * Pointer to the serialised message. + * \return + * An unpacked message object. + * \retval NULL + * If an error occurred during unpacking. + */ +PROTOBUF_C__API +ProtobufCMessage * +protobuf_c_message_unpack( + const ProtobufCMessageDescriptor *descriptor, + ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); + +/** + * Free an unpacked message object. + * + * This function should be used to deallocate the memory used by a call to + * protobuf_c_message_unpack(). + * + * \param message + * The message object to free. May be NULL. + * \param allocator + * `ProtobufCAllocator` to use for memory deallocation. May be NULL to + * specify the default allocator. + */ +PROTOBUF_C__API +void +protobuf_c_message_free_unpacked( + ProtobufCMessage *message, + ProtobufCAllocator *allocator); + +/** + * Check the validity of a message object. + * + * Makes sure all required fields (`PROTOBUF_C_LABEL_REQUIRED`) are present. + * Recursively checks nested messages. + * + * \retval TRUE + * Message is valid. + * \retval FALSE + * Message is invalid. + */ +PROTOBUF_C__API +protobuf_c_boolean +protobuf_c_message_check(const ProtobufCMessage *); + +/** Message initialiser. */ +#define PROTOBUF_C_MESSAGE_INIT(descriptor) { descriptor, 0, NULL } + +/** + * Initialise a message object from a message descriptor. + * + * \param descriptor + * Message descriptor. + * \param message + * Allocated block of memory of size `descriptor->sizeof_message`. + */ +PROTOBUF_C__API +void +protobuf_c_message_init( + const ProtobufCMessageDescriptor *descriptor, + void *message); + +/** + * Free a service. + * + * \param service + * The service object to free. + */ +PROTOBUF_C__API +void +protobuf_c_service_destroy(ProtobufCService *service); + +/** + * Look up a `ProtobufCMethodDescriptor` by name. + * + * \param desc + * Service descriptor. + * \param name + * Name of the method. + * + * \return + * A `ProtobufCMethodDescriptor` object. + * \retval NULL + * If not found or if the optimize_for = CODE_SIZE option was set. + */ +PROTOBUF_C__API +const ProtobufCMethodDescriptor * +protobuf_c_service_descriptor_get_method_by_name( + const ProtobufCServiceDescriptor *desc, + const char *name); + +/** + * Initialise a `ProtobufCBufferSimple` object. + */ +#define PROTOBUF_C_BUFFER_SIMPLE_INIT(array_of_bytes) \ +{ \ + { protobuf_c_buffer_simple_append }, \ + sizeof(array_of_bytes), \ + 0, \ + (array_of_bytes), \ + 0, \ + NULL \ +} + +/** + * Clear a `ProtobufCBufferSimple` object, freeing any allocated memory. + */ +#define PROTOBUF_C_BUFFER_SIMPLE_CLEAR(simp_buf) \ +do { \ + if ((simp_buf)->must_free_data) { \ + if ((simp_buf)->allocator != NULL) \ + (simp_buf)->allocator->free( \ + (simp_buf)->allocator, \ + (simp_buf)->data); \ + else \ + free((simp_buf)->data); \ + } \ +} while (0) + +/** + * The `append` method for `ProtobufCBufferSimple`. + * + * \param buffer + * The buffer object to append to. Must actually be a + * `ProtobufCBufferSimple` object. + * \param len + * Number of bytes in `data`. + * \param data + * Data to append. + */ +PROTOBUF_C__API +void +protobuf_c_buffer_simple_append( + ProtobufCBuffer *buffer, + size_t len, + const unsigned char *data); + +PROTOBUF_C__API +void +protobuf_c_service_generated_init( + ProtobufCService *service, + const ProtobufCServiceDescriptor *descriptor, + ProtobufCServiceDestroy destroy); + +PROTOBUF_C__API +void +protobuf_c_service_invoke_internal( + ProtobufCService *service, + unsigned method_index, + const ProtobufCMessage *input, + ProtobufCClosure closure, + void *closure_data); + +/**@}*/ + +PROTOBUF_C__END_DECLS + +#endif /* PROTOBUF_C_H */ diff --git a/parser/include/protobuf-c/protobuf-c.h b/parser/include/protobuf-c/protobuf-c.h new file mode 100644 index 00000000..da6cf676 --- /dev/null +++ b/parser/include/protobuf-c/protobuf-c.h @@ -0,0 +1,1106 @@ +/* + * Copyright (c) 2008-2018, Dave Benson and the protobuf-c authors. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following disclaimer + * in the documentation and/or other materials provided with the + * distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +/*! \file + * \mainpage Introduction + * + * This is [protobuf-c], a C implementation of [Protocol Buffers]. + * + * This file defines the public API for the `libprotobuf-c` support library. + * This API includes interfaces that can be used directly by client code as well + * as the interfaces used by the code generated by the `protoc-c` compiler. + * + * The `libprotobuf-c` support library performs the actual serialization and + * deserialization of Protocol Buffers messages. It interacts with structures, + * definitions, and metadata generated by the `protoc-c` compiler from .proto + * files. + * + * \authors Dave Benson and the `protobuf-c` authors. + * + * \copyright 2008-2014. Licensed under the terms of the [BSD-2-Clause] license. + * + * [protobuf-c]: https://github.com/protobuf-c/protobuf-c + * [Protocol Buffers]: https://developers.google.com/protocol-buffers/ + * [BSD-2-Clause]: http://opensource.org/licenses/BSD-2-Clause + * + * \page gencode Generated Code + * + * For each enum, we generate a C enum. For each message, we generate a C + * structure which can be cast to a `ProtobufCMessage`. + * + * For each enum and message, we generate a descriptor object that allows us to + * implement a kind of reflection on the structures. + * + * First, some naming conventions: + * + * - The name of the type for enums and messages and services is camel case + * (meaning WordsAreCrammedTogether) except that double underscores are used + * to delimit scopes. For example, the following `.proto` file: + * +~~~{.proto} + package foo.bar; + message BazBah { + optional int32 val = 1; + } +~~~ + * + * would generate a C type `Foo__Bar__BazBah`. + * + * - Identifiers for functions and globals are all lowercase, with camel case + * words separated by single underscores. For example, one of the function + * prototypes generated by `protoc-c` for the above example: + * +~~~{.c} +Foo__Bar__BazBah * + foo__bar__baz_bah__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +~~~ + * + * - Identifiers for enum values contain an uppercase prefix which embeds the + * package name and the enum type name. + * + * - A double underscore is used to separate further components of identifier + * names. + * + * For example, in the name of the unpack function above, the package name + * `foo.bar` has become `foo__bar`, the message name BazBah has become + * `baz_bah`, and the method name is `unpack`. These are all joined with double + * underscores to form the C identifier `foo__bar__baz_bah__unpack`. + * + * We also generate descriptor objects for messages and enums. These are + * declared in the `.pb-c.h` files: + * +~~~{.c} +extern const ProtobufCMessageDescriptor foo__bar__baz_bah__descriptor; +~~~ + * + * The message structures all begin with `ProtobufCMessageDescriptor *` which is + * sufficient to allow them to be cast to `ProtobufCMessage`. + * + * For each message defined in a `.proto` file, we generate a number of + * functions and macros. Each function name contains a prefix based on the + * package name and message name in order to make it a unique C identifier. + * + * - `INIT`. Statically initializes a message object, initializing its + * descriptor and setting its fields to default values. Uninitialized + * messages cannot be processed by the protobuf-c library. + * +~~~{.c} +#define FOO__BAR__BAZ_BAH__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&foo__bar__baz_bah__descriptor), 0 } +~~~ + * - `init()`. Initializes a message object, initializing its descriptor and + * setting its fields to default values. Uninitialized messages cannot be + * processed by the protobuf-c library. + * +~~~{.c} +void foo__bar__baz_bah__init + (Foo__Bar__BazBah *message); +~~~ + * - `unpack()`. Unpacks data for a particular message format. Note that the + * `allocator` parameter is usually `NULL` to indicate that the system's + * `malloc()` and `free()` functions should be used for dynamically allocating + * memory. + * +~~~{.c} +Foo__Bar__BazBah * + foo__bar__baz_bah__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +~~~ + * + * - `free_unpacked()`. Frees a message object obtained with the `unpack()` + * method. Freeing `NULL` is allowed (the same as with `free()`). + * +~~~{.c} +void foo__bar__baz_bah__free_unpacked + (Foo__Bar__BazBah *message, + ProtobufCAllocator *allocator); +~~~ + * + * - `get_packed_size()`. Calculates the length in bytes of the serialized + * representation of the message object. + * +~~~{.c} +size_t foo__bar__baz_bah__get_packed_size + (const Foo__Bar__BazBah *message); +~~~ + * + * - `pack()`. Pack a message object into a preallocated buffer. Assumes that + * the buffer is large enough. (Use `get_packed_size()` first.) + * +~~~{.c} +size_t foo__bar__baz_bah__pack + (const Foo__Bar__BazBah *message, + uint8_t *out); +~~~ + * + * - `pack_to_buffer()`. Packs a message into a "virtual buffer". This is an + * object which defines an "append bytes" callback to consume data as it is + * serialized. + * +~~~{.c} +size_t foo__bar__baz_bah__pack_to_buffer + (const Foo__Bar__BazBah *message, + ProtobufCBuffer *buffer); +~~~ + * + * \page pack Packing and unpacking messages + * + * To pack a message, first compute the packed size of the message with + * protobuf_c_message_get_packed_size(), then allocate a buffer of at least + * that size, then call protobuf_c_message_pack(). + * + * Alternatively, a message can be serialized without calculating the final size + * first. Use the protobuf_c_message_pack_to_buffer() function and provide a + * ProtobufCBuffer object which implements an "append" method that consumes + * data. + * + * To unpack a message, call the protobuf_c_message_unpack() function. The + * result can be cast to an object of the type that matches the descriptor for + * the message. + * + * The result of unpacking a message should be freed with + * protobuf_c_message_free_unpacked(). + */ + +#ifndef PROTOBUF_C_H +#define PROTOBUF_C_H + +#include +#include +#include +#include + +#ifdef __cplusplus +# define PROTOBUF_C__BEGIN_DECLS extern "C" { +# define PROTOBUF_C__END_DECLS } +#else +# define PROTOBUF_C__BEGIN_DECLS +# define PROTOBUF_C__END_DECLS +#endif + +PROTOBUF_C__BEGIN_DECLS + +#if defined(_WIN32) && defined(PROTOBUF_C_USE_SHARED_LIB) +# ifdef PROTOBUF_C_EXPORT +# define PROTOBUF_C__API __declspec(dllexport) +# else +# define PROTOBUF_C__API __declspec(dllimport) +# endif +#else +# define PROTOBUF_C__API +#endif + +#if !defined(PROTOBUF_C__NO_DEPRECATED) && \ + ((__GNUC__ > 3) || (__GNUC__ == 3 && __GNUC_MINOR__ >= 1)) +# define PROTOBUF_C__DEPRECATED __attribute__((__deprecated__)) +#else +# define PROTOBUF_C__DEPRECATED +#endif + +#ifndef PROTOBUF_C__FORCE_ENUM_TO_BE_INT_SIZE + #define PROTOBUF_C__FORCE_ENUM_TO_BE_INT_SIZE(enum_name) \ + , _##enum_name##_IS_INT_SIZE = INT_MAX +#endif + +#define PROTOBUF_C__SERVICE_DESCRIPTOR_MAGIC 0x14159bc3 +#define PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC 0x28aaeef9 +#define PROTOBUF_C__ENUM_DESCRIPTOR_MAGIC 0x114315af + +/* Empty string used for initializers */ +extern const char protobuf_c_empty_string[]; + +/** + * \defgroup api Public API + * + * This is the public API for `libprotobuf-c`. These interfaces are stable and + * subject to Semantic Versioning guarantees. + * + * @{ + */ + +/** + * Values for the `flags` word in `ProtobufCFieldDescriptor`. + */ +typedef enum { + /** Set if the field is repeated and marked with the `packed` option. */ + PROTOBUF_C_FIELD_FLAG_PACKED = (1 << 0), + + /** Set if the field is marked with the `deprecated` option. */ + PROTOBUF_C_FIELD_FLAG_DEPRECATED = (1 << 1), + + /** Set if the field is a member of a oneof (union). */ + PROTOBUF_C_FIELD_FLAG_ONEOF = (1 << 2), +} ProtobufCFieldFlag; + +/** + * Message field rules. + * + * \see [Defining A Message Type] in the Protocol Buffers documentation. + * + * [Defining A Message Type]: + * https://developers.google.com/protocol-buffers/docs/proto#simple + */ +typedef enum { + /** A well-formed message must have exactly one of this field. */ + PROTOBUF_C_LABEL_REQUIRED, + + /** + * A well-formed message can have zero or one of this field (but not + * more than one). + */ + PROTOBUF_C_LABEL_OPTIONAL, + + /** + * This field can be repeated any number of times (including zero) in a + * well-formed message. The order of the repeated values will be + * preserved. + */ + PROTOBUF_C_LABEL_REPEATED, + + /** + * This field has no label. This is valid only in proto3 and is + * equivalent to OPTIONAL but no "has" quantifier will be consulted. + */ + PROTOBUF_C_LABEL_NONE, +} ProtobufCLabel; + +/** + * Field value types. + * + * \see [Scalar Value Types] in the Protocol Buffers documentation. + * + * [Scalar Value Types]: + * https://developers.google.com/protocol-buffers/docs/proto#scalar + */ +typedef enum { + PROTOBUF_C_TYPE_INT32, /**< int32 */ + PROTOBUF_C_TYPE_SINT32, /**< signed int32 */ + PROTOBUF_C_TYPE_SFIXED32, /**< signed int32 (4 bytes) */ + PROTOBUF_C_TYPE_INT64, /**< int64 */ + PROTOBUF_C_TYPE_SINT64, /**< signed int64 */ + PROTOBUF_C_TYPE_SFIXED64, /**< signed int64 (8 bytes) */ + PROTOBUF_C_TYPE_UINT32, /**< unsigned int32 */ + PROTOBUF_C_TYPE_FIXED32, /**< unsigned int32 (4 bytes) */ + PROTOBUF_C_TYPE_UINT64, /**< unsigned int64 */ + PROTOBUF_C_TYPE_FIXED64, /**< unsigned int64 (8 bytes) */ + PROTOBUF_C_TYPE_FLOAT, /**< float */ + PROTOBUF_C_TYPE_DOUBLE, /**< double */ + PROTOBUF_C_TYPE_BOOL, /**< boolean */ + PROTOBUF_C_TYPE_ENUM, /**< enumerated type */ + PROTOBUF_C_TYPE_STRING, /**< UTF-8 or ASCII string */ + PROTOBUF_C_TYPE_BYTES, /**< arbitrary byte sequence */ + PROTOBUF_C_TYPE_MESSAGE, /**< nested message */ +} ProtobufCType; + +/** + * Field wire types. + * + * \see [Message Structure] in the Protocol Buffers documentation. + * + * [Message Structure]: + * https://developers.google.com/protocol-buffers/docs/encoding#structure + */ +typedef enum { + PROTOBUF_C_WIRE_TYPE_VARINT = 0, + PROTOBUF_C_WIRE_TYPE_64BIT = 1, + PROTOBUF_C_WIRE_TYPE_LENGTH_PREFIXED = 2, + /* "Start group" and "end group" wire types are unsupported. */ + PROTOBUF_C_WIRE_TYPE_32BIT = 5, +} ProtobufCWireType; + +struct ProtobufCAllocator; +struct ProtobufCBinaryData; +struct ProtobufCBuffer; +struct ProtobufCBufferSimple; +struct ProtobufCEnumDescriptor; +struct ProtobufCEnumValue; +struct ProtobufCEnumValueIndex; +struct ProtobufCFieldDescriptor; +struct ProtobufCIntRange; +struct ProtobufCMessage; +struct ProtobufCMessageDescriptor; +struct ProtobufCMessageUnknownField; +struct ProtobufCMethodDescriptor; +struct ProtobufCService; +struct ProtobufCServiceDescriptor; + +typedef struct ProtobufCAllocator ProtobufCAllocator; +typedef struct ProtobufCBinaryData ProtobufCBinaryData; +typedef struct ProtobufCBuffer ProtobufCBuffer; +typedef struct ProtobufCBufferSimple ProtobufCBufferSimple; +typedef struct ProtobufCEnumDescriptor ProtobufCEnumDescriptor; +typedef struct ProtobufCEnumValue ProtobufCEnumValue; +typedef struct ProtobufCEnumValueIndex ProtobufCEnumValueIndex; +typedef struct ProtobufCFieldDescriptor ProtobufCFieldDescriptor; +typedef struct ProtobufCIntRange ProtobufCIntRange; +typedef struct ProtobufCMessage ProtobufCMessage; +typedef struct ProtobufCMessageDescriptor ProtobufCMessageDescriptor; +typedef struct ProtobufCMessageUnknownField ProtobufCMessageUnknownField; +typedef struct ProtobufCMethodDescriptor ProtobufCMethodDescriptor; +typedef struct ProtobufCService ProtobufCService; +typedef struct ProtobufCServiceDescriptor ProtobufCServiceDescriptor; + +/** Boolean type. */ +typedef int protobuf_c_boolean; + +typedef void (*ProtobufCClosure)(const ProtobufCMessage *, void *closure_data); +typedef void (*ProtobufCMessageInit)(ProtobufCMessage *); +typedef void (*ProtobufCServiceDestroy)(ProtobufCService *); + +/** + * Structure for defining a custom memory allocator. + */ +struct ProtobufCAllocator { + /** Function to allocate memory. */ + void *(*alloc)(void *allocator_data, size_t size); + + /** Function to free memory. */ + void (*free)(void *allocator_data, void *pointer); + + /** Opaque pointer passed to `alloc` and `free` functions. */ + void *allocator_data; +}; + +/** + * Structure for the protobuf `bytes` scalar type. + * + * The data contained in a `ProtobufCBinaryData` is an arbitrary sequence of + * bytes. It may contain embedded `NUL` characters and is not required to be + * `NUL`-terminated. + */ +struct ProtobufCBinaryData { + size_t len; /**< Number of bytes in the `data` field. */ + uint8_t *data; /**< Data bytes. */ +}; + +/** + * Structure for defining a virtual append-only buffer. Used by + * protobuf_c_message_pack_to_buffer() to abstract the consumption of serialized + * bytes. + * + * `ProtobufCBuffer` "subclasses" may be defined on the stack. For example, to + * write to a `FILE` object: + * +~~~{.c} +typedef struct { + ProtobufCBuffer base; + FILE *fp; +} BufferAppendToFile; + +static void +my_buffer_file_append(ProtobufCBuffer *buffer, + size_t len, + const uint8_t *data) +{ + BufferAppendToFile *file_buf = (BufferAppendToFile *) buffer; + fwrite(data, len, 1, file_buf->fp); // XXX: No error handling! +} +~~~ + * + * To use this new type of ProtobufCBuffer, it could be called as follows: + * +~~~{.c} +... +BufferAppendToFile tmp = {0}; +tmp.base.append = my_buffer_file_append; +tmp.fp = fp; +protobuf_c_message_pack_to_buffer(&message, &tmp); +... +~~~ + */ +struct ProtobufCBuffer { + /** Append function. Consumes the `len` bytes stored at `data`. */ + void (*append)(ProtobufCBuffer *buffer, + size_t len, + const uint8_t *data); +}; + +/** + * Simple buffer "subclass" of `ProtobufCBuffer`. + * + * A `ProtobufCBufferSimple` object is declared on the stack and uses a + * scratch buffer provided by the user for the initial allocation. It performs + * exponential resizing, using dynamically allocated memory. A + * `ProtobufCBufferSimple` object can be created and used as follows: + * +~~~{.c} +uint8_t pad[128]; +ProtobufCBufferSimple simple = PROTOBUF_C_BUFFER_SIMPLE_INIT(pad); +ProtobufCBuffer *buffer = (ProtobufCBuffer *) &simple; +~~~ + * + * `buffer` can now be used with `protobuf_c_message_pack_to_buffer()`. Once a + * message has been serialized to a `ProtobufCBufferSimple` object, the + * serialized data bytes can be accessed from the `.data` field. + * + * To free the memory allocated by a `ProtobufCBufferSimple` object, if any, + * call PROTOBUF_C_BUFFER_SIMPLE_CLEAR() on the object, for example: + * +~~~{.c} +PROTOBUF_C_BUFFER_SIMPLE_CLEAR(&simple); +~~~ + * + * \see PROTOBUF_C_BUFFER_SIMPLE_INIT + * \see PROTOBUF_C_BUFFER_SIMPLE_CLEAR + */ +struct ProtobufCBufferSimple { + /** "Base class". */ + ProtobufCBuffer base; + /** Number of bytes allocated in `data`. */ + size_t alloced; + /** Number of bytes currently stored in `data`. */ + size_t len; + /** Data bytes. */ + uint8_t *data; + /** Whether `data` must be freed. */ + protobuf_c_boolean must_free_data; + /** Allocator to use. May be NULL to indicate the system allocator. */ + ProtobufCAllocator *allocator; +}; + +/** + * Describes an enumeration as a whole, with all of its values. + */ +struct ProtobufCEnumDescriptor { + /** Magic value checked to ensure that the API is used correctly. */ + uint32_t magic; + + /** The qualified name (e.g., "namespace.Type"). */ + const char *name; + /** The unqualified name as given in the .proto file (e.g., "Type"). */ + const char *short_name; + /** Identifier used in generated C code. */ + const char *c_name; + /** The dot-separated namespace. */ + const char *package_name; + + /** Number elements in `values`. */ + unsigned n_values; + /** Array of distinct values, sorted by numeric value. */ + const ProtobufCEnumValue *values; + + /** Number of elements in `values_by_name`. */ + unsigned n_value_names; + /** Array of named values, including aliases, sorted by name. */ + const ProtobufCEnumValueIndex *values_by_name; + + /** Number of elements in `value_ranges`. */ + unsigned n_value_ranges; + /** Value ranges, for faster lookups by numeric value. */ + const ProtobufCIntRange *value_ranges; + + /** Reserved for future use. */ + void *reserved1; + /** Reserved for future use. */ + void *reserved2; + /** Reserved for future use. */ + void *reserved3; + /** Reserved for future use. */ + void *reserved4; +}; + +/** + * Represents a single value of an enumeration. + */ +struct ProtobufCEnumValue { + /** The string identifying this value in the .proto file. */ + const char *name; + + /** The string identifying this value in generated C code. */ + const char *c_name; + + /** The numeric value assigned in the .proto file. */ + int value; +}; + +/** + * Used by `ProtobufCEnumDescriptor` to look up enum values. + */ +struct ProtobufCEnumValueIndex { + /** Name of the enum value. */ + const char *name; + /** Index into values[] array. */ + unsigned index; +}; + +/** + * Describes a single field in a message. + */ +struct ProtobufCFieldDescriptor { + /** Name of the field as given in the .proto file. */ + const char *name; + + /** Tag value of the field as given in the .proto file. */ + uint32_t id; + + /** Whether the field is `REQUIRED`, `OPTIONAL`, or `REPEATED`. */ + ProtobufCLabel label; + + /** The type of the field. */ + ProtobufCType type; + + /** + * The offset in bytes of the message's C structure's quantifier field + * (the `has_MEMBER` field for optional members or the `n_MEMBER` field + * for repeated members or the case enum for oneofs). + */ + unsigned quantifier_offset; + + /** + * The offset in bytes into the message's C structure for the member + * itself. + */ + unsigned offset; + + /** + * A type-specific descriptor. + * + * If `type` is `PROTOBUF_C_TYPE_ENUM`, then `descriptor` points to the + * corresponding `ProtobufCEnumDescriptor`. + * + * If `type` is `PROTOBUF_C_TYPE_MESSAGE`, then `descriptor` points to + * the corresponding `ProtobufCMessageDescriptor`. + * + * Otherwise this field is NULL. + */ + const void *descriptor; /* for MESSAGE and ENUM types */ + + /** The default value for this field, if defined. May be NULL. */ + const void *default_value; + + /** + * A flag word. Zero or more of the bits defined in the + * `ProtobufCFieldFlag` enum may be set. + */ + uint32_t flags; + + /** Reserved for future use. */ + unsigned reserved_flags; + /** Reserved for future use. */ + void *reserved2; + /** Reserved for future use. */ + void *reserved3; +}; + +/** + * Helper structure for optimizing int => index lookups in the case + * where the keys are mostly consecutive values, as they presumably are for + * enums and fields. + * + * The data structures requires that the values in the original array are + * sorted. + */ +struct ProtobufCIntRange { + int start_value; + unsigned orig_index; + /* + * NOTE: the number of values in the range can be inferred by looking + * at the next element's orig_index. A dummy element is added to make + * this simple. + */ +}; + +/** + * An instance of a message. + * + * `ProtobufCMessage` is a light-weight "base class" for all messages. + * + * In particular, `ProtobufCMessage` doesn't have any allocation policy + * associated with it. That's because it's common to create `ProtobufCMessage` + * objects on the stack. In fact, that's what we recommend for sending messages. + * If the object is allocated from the stack, you can't really have a memory + * leak. + * + * This means that calls to functions like protobuf_c_message_unpack() which + * return a `ProtobufCMessage` must be paired with a call to a free function, + * like protobuf_c_message_free_unpacked(). + */ +struct ProtobufCMessage { + /** The descriptor for this message type. */ + const ProtobufCMessageDescriptor *descriptor; + /** The number of elements in `unknown_fields`. */ + unsigned n_unknown_fields; + /** The fields that weren't recognized by the parser. */ + ProtobufCMessageUnknownField *unknown_fields; +}; + +/** + * Describes a message. + */ +struct ProtobufCMessageDescriptor { + /** Magic value checked to ensure that the API is used correctly. */ + uint32_t magic; + + /** The qualified name (e.g., "namespace.Type"). */ + const char *name; + /** The unqualified name as given in the .proto file (e.g., "Type"). */ + const char *short_name; + /** Identifier used in generated C code. */ + const char *c_name; + /** The dot-separated namespace. */ + const char *package_name; + + /** + * Size in bytes of the C structure representing an instance of this + * type of message. + */ + size_t sizeof_message; + + /** Number of elements in `fields`. */ + unsigned n_fields; + /** Field descriptors, sorted by tag number. */ + const ProtobufCFieldDescriptor *fields; + /** Used for looking up fields by name. */ + const unsigned *fields_sorted_by_name; + + /** Number of elements in `field_ranges`. */ + unsigned n_field_ranges; + /** Used for looking up fields by id. */ + const ProtobufCIntRange *field_ranges; + + /** Message initialisation function. */ + ProtobufCMessageInit message_init; + + /** Reserved for future use. */ + void *reserved1; + /** Reserved for future use. */ + void *reserved2; + /** Reserved for future use. */ + void *reserved3; +}; + +/** + * An unknown message field. + */ +struct ProtobufCMessageUnknownField { + /** The tag number. */ + uint32_t tag; + /** The wire type of the field. */ + ProtobufCWireType wire_type; + /** Number of bytes in `data`. */ + size_t len; + /** Field data. */ + uint8_t *data; +}; + +/** + * Method descriptor. + */ +struct ProtobufCMethodDescriptor { + /** Method name. */ + const char *name; + /** Input message descriptor. */ + const ProtobufCMessageDescriptor *input; + /** Output message descriptor. */ + const ProtobufCMessageDescriptor *output; +}; + +/** + * Service. + */ +struct ProtobufCService { + /** Service descriptor. */ + const ProtobufCServiceDescriptor *descriptor; + /** Function to invoke the service. */ + void (*invoke)(ProtobufCService *service, + unsigned method_index, + const ProtobufCMessage *input, + ProtobufCClosure closure, + void *closure_data); + /** Function to destroy the service. */ + void (*destroy)(ProtobufCService *service); +}; + +/** + * Service descriptor. + */ +struct ProtobufCServiceDescriptor { + /** Magic value checked to ensure that the API is used correctly. */ + uint32_t magic; + + /** Service name. */ + const char *name; + /** Short version of service name. */ + const char *short_name; + /** C identifier for the service name. */ + const char *c_name; + /** Package name. */ + const char *package; + /** Number of elements in `methods`. */ + unsigned n_methods; + /** Method descriptors, in the order defined in the .proto file. */ + const ProtobufCMethodDescriptor *methods; + /** Sort index of methods. */ + const unsigned *method_indices_by_name; +}; + +/** + * Get the version of the protobuf-c library. Note that this is the version of + * the library linked against, not the version of the headers compiled against. + * + * \return A string containing the version number of protobuf-c. + */ +PROTOBUF_C__API +const char * +protobuf_c_version(void); + +/** + * Get the version of the protobuf-c library. Note that this is the version of + * the library linked against, not the version of the headers compiled against. + * + * \return A 32 bit unsigned integer containing the version number of + * protobuf-c, represented in base-10 as (MAJOR*1E6) + (MINOR*1E3) + PATCH. + */ +PROTOBUF_C__API +uint32_t +protobuf_c_version_number(void); + +/** + * The version of the protobuf-c headers, represented as a string using the same + * format as protobuf_c_version(). + */ +#define PROTOBUF_C_VERSION "1.3.3" + +/** + * The version of the protobuf-c headers, represented as an integer using the + * same format as protobuf_c_version_number(). + */ +#define PROTOBUF_C_VERSION_NUMBER 1003003 + +/** + * The minimum protoc-c version which works with the current version of the + * protobuf-c headers. + */ +#define PROTOBUF_C_MIN_COMPILER_VERSION 1000000 + +/** + * Look up a `ProtobufCEnumValue` from a `ProtobufCEnumDescriptor` by name. + * + * \param desc + * The `ProtobufCEnumDescriptor` object. + * \param name + * The `name` field from the corresponding `ProtobufCEnumValue` object to + * match. + * \return + * A `ProtobufCEnumValue` object. + * \retval NULL + * If not found or if the optimize_for = CODE_SIZE option was set. + */ +PROTOBUF_C__API +const ProtobufCEnumValue * +protobuf_c_enum_descriptor_get_value_by_name( + const ProtobufCEnumDescriptor *desc, + const char *name); + +/** + * Look up a `ProtobufCEnumValue` from a `ProtobufCEnumDescriptor` by numeric + * value. + * + * \param desc + * The `ProtobufCEnumDescriptor` object. + * \param value + * The `value` field from the corresponding `ProtobufCEnumValue` object to + * match. + * + * \return + * A `ProtobufCEnumValue` object. + * \retval NULL + * If not found. + */ +PROTOBUF_C__API +const ProtobufCEnumValue * +protobuf_c_enum_descriptor_get_value( + const ProtobufCEnumDescriptor *desc, + int value); + +/** + * Look up a `ProtobufCFieldDescriptor` from a `ProtobufCMessageDescriptor` by + * the name of the field. + * + * \param desc + * The `ProtobufCMessageDescriptor` object. + * \param name + * The name of the field. + * \return + * A `ProtobufCFieldDescriptor` object. + * \retval NULL + * If not found or if the optimize_for = CODE_SIZE option was set. + */ +PROTOBUF_C__API +const ProtobufCFieldDescriptor * +protobuf_c_message_descriptor_get_field_by_name( + const ProtobufCMessageDescriptor *desc, + const char *name); + +/** + * Look up a `ProtobufCFieldDescriptor` from a `ProtobufCMessageDescriptor` by + * the tag value of the field. + * + * \param desc + * The `ProtobufCMessageDescriptor` object. + * \param value + * The tag value of the field. + * \return + * A `ProtobufCFieldDescriptor` object. + * \retval NULL + * If not found. + */ +PROTOBUF_C__API +const ProtobufCFieldDescriptor * +protobuf_c_message_descriptor_get_field( + const ProtobufCMessageDescriptor *desc, + unsigned value); + +/** + * Determine the number of bytes required to store the serialised message. + * + * \param message + * The message object to serialise. + * \return + * Number of bytes. + */ +PROTOBUF_C__API +size_t +protobuf_c_message_get_packed_size(const ProtobufCMessage *message); + +/** + * Serialise a message from its in-memory representation. + * + * This function stores the serialised bytes of the message in a pre-allocated + * buffer. + * + * \param message + * The message object to serialise. + * \param[out] out + * Buffer to store the bytes of the serialised message. This buffer must + * have enough space to store the packed message. Use + * protobuf_c_message_get_packed_size() to determine the number of bytes + * required. + * \return + * Number of bytes stored in `out`. + */ +PROTOBUF_C__API +size_t +protobuf_c_message_pack(const ProtobufCMessage *message, uint8_t *out); + +/** + * Serialise a message from its in-memory representation to a virtual buffer. + * + * This function calls the `append` method of a `ProtobufCBuffer` object to + * consume the bytes generated by the serialiser. + * + * \param message + * The message object to serialise. + * \param buffer + * The virtual buffer object. + * \return + * Number of bytes passed to the virtual buffer. + */ +PROTOBUF_C__API +size_t +protobuf_c_message_pack_to_buffer( + const ProtobufCMessage *message, + ProtobufCBuffer *buffer); + +/** + * Unpack a serialised message into an in-memory representation. + * + * \param descriptor + * The message descriptor. + * \param allocator + * `ProtobufCAllocator` to use for memory allocation. May be NULL to + * specify the default allocator. + * \param len + * Length in bytes of the serialised message. + * \param data + * Pointer to the serialised message. + * \return + * An unpacked message object. + * \retval NULL + * If an error occurred during unpacking. + */ +PROTOBUF_C__API +ProtobufCMessage * +protobuf_c_message_unpack( + const ProtobufCMessageDescriptor *descriptor, + ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); + +/** + * Free an unpacked message object. + * + * This function should be used to deallocate the memory used by a call to + * protobuf_c_message_unpack(). + * + * \param message + * The message object to free. May be NULL. + * \param allocator + * `ProtobufCAllocator` to use for memory deallocation. May be NULL to + * specify the default allocator. + */ +PROTOBUF_C__API +void +protobuf_c_message_free_unpacked( + ProtobufCMessage *message, + ProtobufCAllocator *allocator); + +/** + * Check the validity of a message object. + * + * Makes sure all required fields (`PROTOBUF_C_LABEL_REQUIRED`) are present. + * Recursively checks nested messages. + * + * \retval TRUE + * Message is valid. + * \retval FALSE + * Message is invalid. + */ +PROTOBUF_C__API +protobuf_c_boolean +protobuf_c_message_check(const ProtobufCMessage *); + +/** Message initialiser. */ +#define PROTOBUF_C_MESSAGE_INIT(descriptor) { descriptor, 0, NULL } + +/** + * Initialise a message object from a message descriptor. + * + * \param descriptor + * Message descriptor. + * \param message + * Allocated block of memory of size `descriptor->sizeof_message`. + */ +PROTOBUF_C__API +void +protobuf_c_message_init( + const ProtobufCMessageDescriptor *descriptor, + void *message); + +/** + * Free a service. + * + * \param service + * The service object to free. + */ +PROTOBUF_C__API +void +protobuf_c_service_destroy(ProtobufCService *service); + +/** + * Look up a `ProtobufCMethodDescriptor` by name. + * + * \param desc + * Service descriptor. + * \param name + * Name of the method. + * + * \return + * A `ProtobufCMethodDescriptor` object. + * \retval NULL + * If not found or if the optimize_for = CODE_SIZE option was set. + */ +PROTOBUF_C__API +const ProtobufCMethodDescriptor * +protobuf_c_service_descriptor_get_method_by_name( + const ProtobufCServiceDescriptor *desc, + const char *name); + +/** + * Initialise a `ProtobufCBufferSimple` object. + */ +#define PROTOBUF_C_BUFFER_SIMPLE_INIT(array_of_bytes) \ +{ \ + { protobuf_c_buffer_simple_append }, \ + sizeof(array_of_bytes), \ + 0, \ + (array_of_bytes), \ + 0, \ + NULL \ +} + +/** + * Clear a `ProtobufCBufferSimple` object, freeing any allocated memory. + */ +#define PROTOBUF_C_BUFFER_SIMPLE_CLEAR(simp_buf) \ +do { \ + if ((simp_buf)->must_free_data) { \ + if ((simp_buf)->allocator != NULL) \ + (simp_buf)->allocator->free( \ + (simp_buf)->allocator, \ + (simp_buf)->data); \ + else \ + free((simp_buf)->data); \ + } \ +} while (0) + +/** + * The `append` method for `ProtobufCBufferSimple`. + * + * \param buffer + * The buffer object to append to. Must actually be a + * `ProtobufCBufferSimple` object. + * \param len + * Number of bytes in `data`. + * \param data + * Data to append. + */ +PROTOBUF_C__API +void +protobuf_c_buffer_simple_append( + ProtobufCBuffer *buffer, + size_t len, + const unsigned char *data); + +PROTOBUF_C__API +void +protobuf_c_service_generated_init( + ProtobufCService *service, + const ProtobufCServiceDescriptor *descriptor, + ProtobufCServiceDestroy destroy); + +PROTOBUF_C__API +void +protobuf_c_service_invoke_internal( + ProtobufCService *service, + unsigned method_index, + const ProtobufCMessage *input, + ProtobufCClosure closure, + void *closure_data); + +/**@}*/ + +PROTOBUF_C__END_DECLS + +#endif /* PROTOBUF_C_H */ diff --git a/parser/include/protobuf/pg_query.pb-c.h b/parser/include/protobuf/pg_query.pb-c.h new file mode 100644 index 00000000..f9f65146 --- /dev/null +++ b/parser/include/protobuf/pg_query.pb-c.h @@ -0,0 +1,10846 @@ +/* Generated by the protocol buffer compiler. DO NOT EDIT! */ +/* Generated from: protobuf/pg_query.proto */ + +#ifndef PROTOBUF_C_protobuf_2fpg_5fquery_2eproto__INCLUDED +#define PROTOBUF_C_protobuf_2fpg_5fquery_2eproto__INCLUDED + +#include + +PROTOBUF_C__BEGIN_DECLS + +#if PROTOBUF_C_VERSION_NUMBER < 1003000 +# error This file was generated by a newer version of protoc-c which is incompatible with your libprotobuf-c headers. Please update your headers. +#elif 1003003 < PROTOBUF_C_MIN_COMPILER_VERSION +# error This file was generated by an older version of protoc-c which is incompatible with your libprotobuf-c headers. Please regenerate this file with a newer version of protoc-c. +#endif + + +typedef struct _PgQuery__ParseResult PgQuery__ParseResult; +typedef struct _PgQuery__ScanResult PgQuery__ScanResult; +typedef struct _PgQuery__Node PgQuery__Node; +typedef struct _PgQuery__Integer PgQuery__Integer; +typedef struct _PgQuery__Float PgQuery__Float; +typedef struct _PgQuery__String PgQuery__String; +typedef struct _PgQuery__BitString PgQuery__BitString; +typedef struct _PgQuery__Null PgQuery__Null; +typedef struct _PgQuery__List PgQuery__List; +typedef struct _PgQuery__OidList PgQuery__OidList; +typedef struct _PgQuery__IntList PgQuery__IntList; +typedef struct _PgQuery__Alias PgQuery__Alias; +typedef struct _PgQuery__RangeVar PgQuery__RangeVar; +typedef struct _PgQuery__TableFunc PgQuery__TableFunc; +typedef struct _PgQuery__Expr PgQuery__Expr; +typedef struct _PgQuery__Var PgQuery__Var; +typedef struct _PgQuery__Param PgQuery__Param; +typedef struct _PgQuery__Aggref PgQuery__Aggref; +typedef struct _PgQuery__GroupingFunc PgQuery__GroupingFunc; +typedef struct _PgQuery__WindowFunc PgQuery__WindowFunc; +typedef struct _PgQuery__SubscriptingRef PgQuery__SubscriptingRef; +typedef struct _PgQuery__FuncExpr PgQuery__FuncExpr; +typedef struct _PgQuery__NamedArgExpr PgQuery__NamedArgExpr; +typedef struct _PgQuery__OpExpr PgQuery__OpExpr; +typedef struct _PgQuery__DistinctExpr PgQuery__DistinctExpr; +typedef struct _PgQuery__NullIfExpr PgQuery__NullIfExpr; +typedef struct _PgQuery__ScalarArrayOpExpr PgQuery__ScalarArrayOpExpr; +typedef struct _PgQuery__BoolExpr PgQuery__BoolExpr; +typedef struct _PgQuery__SubLink PgQuery__SubLink; +typedef struct _PgQuery__SubPlan PgQuery__SubPlan; +typedef struct _PgQuery__AlternativeSubPlan PgQuery__AlternativeSubPlan; +typedef struct _PgQuery__FieldSelect PgQuery__FieldSelect; +typedef struct _PgQuery__FieldStore PgQuery__FieldStore; +typedef struct _PgQuery__RelabelType PgQuery__RelabelType; +typedef struct _PgQuery__CoerceViaIO PgQuery__CoerceViaIO; +typedef struct _PgQuery__ArrayCoerceExpr PgQuery__ArrayCoerceExpr; +typedef struct _PgQuery__ConvertRowtypeExpr PgQuery__ConvertRowtypeExpr; +typedef struct _PgQuery__CollateExpr PgQuery__CollateExpr; +typedef struct _PgQuery__CaseExpr PgQuery__CaseExpr; +typedef struct _PgQuery__CaseWhen PgQuery__CaseWhen; +typedef struct _PgQuery__CaseTestExpr PgQuery__CaseTestExpr; +typedef struct _PgQuery__ArrayExpr PgQuery__ArrayExpr; +typedef struct _PgQuery__RowExpr PgQuery__RowExpr; +typedef struct _PgQuery__RowCompareExpr PgQuery__RowCompareExpr; +typedef struct _PgQuery__CoalesceExpr PgQuery__CoalesceExpr; +typedef struct _PgQuery__MinMaxExpr PgQuery__MinMaxExpr; +typedef struct _PgQuery__SQLValueFunction PgQuery__SQLValueFunction; +typedef struct _PgQuery__XmlExpr PgQuery__XmlExpr; +typedef struct _PgQuery__NullTest PgQuery__NullTest; +typedef struct _PgQuery__BooleanTest PgQuery__BooleanTest; +typedef struct _PgQuery__CoerceToDomain PgQuery__CoerceToDomain; +typedef struct _PgQuery__CoerceToDomainValue PgQuery__CoerceToDomainValue; +typedef struct _PgQuery__SetToDefault PgQuery__SetToDefault; +typedef struct _PgQuery__CurrentOfExpr PgQuery__CurrentOfExpr; +typedef struct _PgQuery__NextValueExpr PgQuery__NextValueExpr; +typedef struct _PgQuery__InferenceElem PgQuery__InferenceElem; +typedef struct _PgQuery__TargetEntry PgQuery__TargetEntry; +typedef struct _PgQuery__RangeTblRef PgQuery__RangeTblRef; +typedef struct _PgQuery__JoinExpr PgQuery__JoinExpr; +typedef struct _PgQuery__FromExpr PgQuery__FromExpr; +typedef struct _PgQuery__OnConflictExpr PgQuery__OnConflictExpr; +typedef struct _PgQuery__IntoClause PgQuery__IntoClause; +typedef struct _PgQuery__RawStmt PgQuery__RawStmt; +typedef struct _PgQuery__Query PgQuery__Query; +typedef struct _PgQuery__InsertStmt PgQuery__InsertStmt; +typedef struct _PgQuery__DeleteStmt PgQuery__DeleteStmt; +typedef struct _PgQuery__UpdateStmt PgQuery__UpdateStmt; +typedef struct _PgQuery__SelectStmt PgQuery__SelectStmt; +typedef struct _PgQuery__AlterTableStmt PgQuery__AlterTableStmt; +typedef struct _PgQuery__AlterTableCmd PgQuery__AlterTableCmd; +typedef struct _PgQuery__AlterDomainStmt PgQuery__AlterDomainStmt; +typedef struct _PgQuery__SetOperationStmt PgQuery__SetOperationStmt; +typedef struct _PgQuery__GrantStmt PgQuery__GrantStmt; +typedef struct _PgQuery__GrantRoleStmt PgQuery__GrantRoleStmt; +typedef struct _PgQuery__AlterDefaultPrivilegesStmt PgQuery__AlterDefaultPrivilegesStmt; +typedef struct _PgQuery__ClosePortalStmt PgQuery__ClosePortalStmt; +typedef struct _PgQuery__ClusterStmt PgQuery__ClusterStmt; +typedef struct _PgQuery__CopyStmt PgQuery__CopyStmt; +typedef struct _PgQuery__CreateStmt PgQuery__CreateStmt; +typedef struct _PgQuery__DefineStmt PgQuery__DefineStmt; +typedef struct _PgQuery__DropStmt PgQuery__DropStmt; +typedef struct _PgQuery__TruncateStmt PgQuery__TruncateStmt; +typedef struct _PgQuery__CommentStmt PgQuery__CommentStmt; +typedef struct _PgQuery__FetchStmt PgQuery__FetchStmt; +typedef struct _PgQuery__IndexStmt PgQuery__IndexStmt; +typedef struct _PgQuery__CreateFunctionStmt PgQuery__CreateFunctionStmt; +typedef struct _PgQuery__AlterFunctionStmt PgQuery__AlterFunctionStmt; +typedef struct _PgQuery__DoStmt PgQuery__DoStmt; +typedef struct _PgQuery__RenameStmt PgQuery__RenameStmt; +typedef struct _PgQuery__RuleStmt PgQuery__RuleStmt; +typedef struct _PgQuery__NotifyStmt PgQuery__NotifyStmt; +typedef struct _PgQuery__ListenStmt PgQuery__ListenStmt; +typedef struct _PgQuery__UnlistenStmt PgQuery__UnlistenStmt; +typedef struct _PgQuery__TransactionStmt PgQuery__TransactionStmt; +typedef struct _PgQuery__ViewStmt PgQuery__ViewStmt; +typedef struct _PgQuery__LoadStmt PgQuery__LoadStmt; +typedef struct _PgQuery__CreateDomainStmt PgQuery__CreateDomainStmt; +typedef struct _PgQuery__CreatedbStmt PgQuery__CreatedbStmt; +typedef struct _PgQuery__DropdbStmt PgQuery__DropdbStmt; +typedef struct _PgQuery__VacuumStmt PgQuery__VacuumStmt; +typedef struct _PgQuery__ExplainStmt PgQuery__ExplainStmt; +typedef struct _PgQuery__CreateTableAsStmt PgQuery__CreateTableAsStmt; +typedef struct _PgQuery__CreateSeqStmt PgQuery__CreateSeqStmt; +typedef struct _PgQuery__AlterSeqStmt PgQuery__AlterSeqStmt; +typedef struct _PgQuery__VariableSetStmt PgQuery__VariableSetStmt; +typedef struct _PgQuery__VariableShowStmt PgQuery__VariableShowStmt; +typedef struct _PgQuery__DiscardStmt PgQuery__DiscardStmt; +typedef struct _PgQuery__CreateTrigStmt PgQuery__CreateTrigStmt; +typedef struct _PgQuery__CreatePLangStmt PgQuery__CreatePLangStmt; +typedef struct _PgQuery__CreateRoleStmt PgQuery__CreateRoleStmt; +typedef struct _PgQuery__AlterRoleStmt PgQuery__AlterRoleStmt; +typedef struct _PgQuery__DropRoleStmt PgQuery__DropRoleStmt; +typedef struct _PgQuery__LockStmt PgQuery__LockStmt; +typedef struct _PgQuery__ConstraintsSetStmt PgQuery__ConstraintsSetStmt; +typedef struct _PgQuery__ReindexStmt PgQuery__ReindexStmt; +typedef struct _PgQuery__CheckPointStmt PgQuery__CheckPointStmt; +typedef struct _PgQuery__CreateSchemaStmt PgQuery__CreateSchemaStmt; +typedef struct _PgQuery__AlterDatabaseStmt PgQuery__AlterDatabaseStmt; +typedef struct _PgQuery__AlterDatabaseSetStmt PgQuery__AlterDatabaseSetStmt; +typedef struct _PgQuery__AlterRoleSetStmt PgQuery__AlterRoleSetStmt; +typedef struct _PgQuery__CreateConversionStmt PgQuery__CreateConversionStmt; +typedef struct _PgQuery__CreateCastStmt PgQuery__CreateCastStmt; +typedef struct _PgQuery__CreateOpClassStmt PgQuery__CreateOpClassStmt; +typedef struct _PgQuery__CreateOpFamilyStmt PgQuery__CreateOpFamilyStmt; +typedef struct _PgQuery__AlterOpFamilyStmt PgQuery__AlterOpFamilyStmt; +typedef struct _PgQuery__PrepareStmt PgQuery__PrepareStmt; +typedef struct _PgQuery__ExecuteStmt PgQuery__ExecuteStmt; +typedef struct _PgQuery__DeallocateStmt PgQuery__DeallocateStmt; +typedef struct _PgQuery__DeclareCursorStmt PgQuery__DeclareCursorStmt; +typedef struct _PgQuery__CreateTableSpaceStmt PgQuery__CreateTableSpaceStmt; +typedef struct _PgQuery__DropTableSpaceStmt PgQuery__DropTableSpaceStmt; +typedef struct _PgQuery__AlterObjectDependsStmt PgQuery__AlterObjectDependsStmt; +typedef struct _PgQuery__AlterObjectSchemaStmt PgQuery__AlterObjectSchemaStmt; +typedef struct _PgQuery__AlterOwnerStmt PgQuery__AlterOwnerStmt; +typedef struct _PgQuery__AlterOperatorStmt PgQuery__AlterOperatorStmt; +typedef struct _PgQuery__AlterTypeStmt PgQuery__AlterTypeStmt; +typedef struct _PgQuery__DropOwnedStmt PgQuery__DropOwnedStmt; +typedef struct _PgQuery__ReassignOwnedStmt PgQuery__ReassignOwnedStmt; +typedef struct _PgQuery__CompositeTypeStmt PgQuery__CompositeTypeStmt; +typedef struct _PgQuery__CreateEnumStmt PgQuery__CreateEnumStmt; +typedef struct _PgQuery__CreateRangeStmt PgQuery__CreateRangeStmt; +typedef struct _PgQuery__AlterEnumStmt PgQuery__AlterEnumStmt; +typedef struct _PgQuery__AlterTSDictionaryStmt PgQuery__AlterTSDictionaryStmt; +typedef struct _PgQuery__AlterTSConfigurationStmt PgQuery__AlterTSConfigurationStmt; +typedef struct _PgQuery__CreateFdwStmt PgQuery__CreateFdwStmt; +typedef struct _PgQuery__AlterFdwStmt PgQuery__AlterFdwStmt; +typedef struct _PgQuery__CreateForeignServerStmt PgQuery__CreateForeignServerStmt; +typedef struct _PgQuery__AlterForeignServerStmt PgQuery__AlterForeignServerStmt; +typedef struct _PgQuery__CreateUserMappingStmt PgQuery__CreateUserMappingStmt; +typedef struct _PgQuery__AlterUserMappingStmt PgQuery__AlterUserMappingStmt; +typedef struct _PgQuery__DropUserMappingStmt PgQuery__DropUserMappingStmt; +typedef struct _PgQuery__AlterTableSpaceOptionsStmt PgQuery__AlterTableSpaceOptionsStmt; +typedef struct _PgQuery__AlterTableMoveAllStmt PgQuery__AlterTableMoveAllStmt; +typedef struct _PgQuery__SecLabelStmt PgQuery__SecLabelStmt; +typedef struct _PgQuery__CreateForeignTableStmt PgQuery__CreateForeignTableStmt; +typedef struct _PgQuery__ImportForeignSchemaStmt PgQuery__ImportForeignSchemaStmt; +typedef struct _PgQuery__CreateExtensionStmt PgQuery__CreateExtensionStmt; +typedef struct _PgQuery__AlterExtensionStmt PgQuery__AlterExtensionStmt; +typedef struct _PgQuery__AlterExtensionContentsStmt PgQuery__AlterExtensionContentsStmt; +typedef struct _PgQuery__CreateEventTrigStmt PgQuery__CreateEventTrigStmt; +typedef struct _PgQuery__AlterEventTrigStmt PgQuery__AlterEventTrigStmt; +typedef struct _PgQuery__RefreshMatViewStmt PgQuery__RefreshMatViewStmt; +typedef struct _PgQuery__ReplicaIdentityStmt PgQuery__ReplicaIdentityStmt; +typedef struct _PgQuery__AlterSystemStmt PgQuery__AlterSystemStmt; +typedef struct _PgQuery__CreatePolicyStmt PgQuery__CreatePolicyStmt; +typedef struct _PgQuery__AlterPolicyStmt PgQuery__AlterPolicyStmt; +typedef struct _PgQuery__CreateTransformStmt PgQuery__CreateTransformStmt; +typedef struct _PgQuery__CreateAmStmt PgQuery__CreateAmStmt; +typedef struct _PgQuery__CreatePublicationStmt PgQuery__CreatePublicationStmt; +typedef struct _PgQuery__AlterPublicationStmt PgQuery__AlterPublicationStmt; +typedef struct _PgQuery__CreateSubscriptionStmt PgQuery__CreateSubscriptionStmt; +typedef struct _PgQuery__AlterSubscriptionStmt PgQuery__AlterSubscriptionStmt; +typedef struct _PgQuery__DropSubscriptionStmt PgQuery__DropSubscriptionStmt; +typedef struct _PgQuery__CreateStatsStmt PgQuery__CreateStatsStmt; +typedef struct _PgQuery__AlterCollationStmt PgQuery__AlterCollationStmt; +typedef struct _PgQuery__CallStmt PgQuery__CallStmt; +typedef struct _PgQuery__AlterStatsStmt PgQuery__AlterStatsStmt; +typedef struct _PgQuery__AExpr PgQuery__AExpr; +typedef struct _PgQuery__ColumnRef PgQuery__ColumnRef; +typedef struct _PgQuery__ParamRef PgQuery__ParamRef; +typedef struct _PgQuery__AConst PgQuery__AConst; +typedef struct _PgQuery__FuncCall PgQuery__FuncCall; +typedef struct _PgQuery__AStar PgQuery__AStar; +typedef struct _PgQuery__AIndices PgQuery__AIndices; +typedef struct _PgQuery__AIndirection PgQuery__AIndirection; +typedef struct _PgQuery__AArrayExpr PgQuery__AArrayExpr; +typedef struct _PgQuery__ResTarget PgQuery__ResTarget; +typedef struct _PgQuery__MultiAssignRef PgQuery__MultiAssignRef; +typedef struct _PgQuery__TypeCast PgQuery__TypeCast; +typedef struct _PgQuery__CollateClause PgQuery__CollateClause; +typedef struct _PgQuery__SortBy PgQuery__SortBy; +typedef struct _PgQuery__WindowDef PgQuery__WindowDef; +typedef struct _PgQuery__RangeSubselect PgQuery__RangeSubselect; +typedef struct _PgQuery__RangeFunction PgQuery__RangeFunction; +typedef struct _PgQuery__RangeTableSample PgQuery__RangeTableSample; +typedef struct _PgQuery__RangeTableFunc PgQuery__RangeTableFunc; +typedef struct _PgQuery__RangeTableFuncCol PgQuery__RangeTableFuncCol; +typedef struct _PgQuery__TypeName PgQuery__TypeName; +typedef struct _PgQuery__ColumnDef PgQuery__ColumnDef; +typedef struct _PgQuery__IndexElem PgQuery__IndexElem; +typedef struct _PgQuery__Constraint PgQuery__Constraint; +typedef struct _PgQuery__DefElem PgQuery__DefElem; +typedef struct _PgQuery__RangeTblEntry PgQuery__RangeTblEntry; +typedef struct _PgQuery__RangeTblFunction PgQuery__RangeTblFunction; +typedef struct _PgQuery__TableSampleClause PgQuery__TableSampleClause; +typedef struct _PgQuery__WithCheckOption PgQuery__WithCheckOption; +typedef struct _PgQuery__SortGroupClause PgQuery__SortGroupClause; +typedef struct _PgQuery__GroupingSet PgQuery__GroupingSet; +typedef struct _PgQuery__WindowClause PgQuery__WindowClause; +typedef struct _PgQuery__ObjectWithArgs PgQuery__ObjectWithArgs; +typedef struct _PgQuery__AccessPriv PgQuery__AccessPriv; +typedef struct _PgQuery__CreateOpClassItem PgQuery__CreateOpClassItem; +typedef struct _PgQuery__TableLikeClause PgQuery__TableLikeClause; +typedef struct _PgQuery__FunctionParameter PgQuery__FunctionParameter; +typedef struct _PgQuery__LockingClause PgQuery__LockingClause; +typedef struct _PgQuery__RowMarkClause PgQuery__RowMarkClause; +typedef struct _PgQuery__XmlSerialize PgQuery__XmlSerialize; +typedef struct _PgQuery__WithClause PgQuery__WithClause; +typedef struct _PgQuery__InferClause PgQuery__InferClause; +typedef struct _PgQuery__OnConflictClause PgQuery__OnConflictClause; +typedef struct _PgQuery__CommonTableExpr PgQuery__CommonTableExpr; +typedef struct _PgQuery__RoleSpec PgQuery__RoleSpec; +typedef struct _PgQuery__TriggerTransition PgQuery__TriggerTransition; +typedef struct _PgQuery__PartitionElem PgQuery__PartitionElem; +typedef struct _PgQuery__PartitionSpec PgQuery__PartitionSpec; +typedef struct _PgQuery__PartitionBoundSpec PgQuery__PartitionBoundSpec; +typedef struct _PgQuery__PartitionRangeDatum PgQuery__PartitionRangeDatum; +typedef struct _PgQuery__PartitionCmd PgQuery__PartitionCmd; +typedef struct _PgQuery__VacuumRelation PgQuery__VacuumRelation; +typedef struct _PgQuery__InlineCodeBlock PgQuery__InlineCodeBlock; +typedef struct _PgQuery__CallContext PgQuery__CallContext; +typedef struct _PgQuery__ScanToken PgQuery__ScanToken; + + +/* --- enums --- */ + +typedef enum _PgQuery__OverridingKind { + PG_QUERY__OVERRIDING_KIND__OVERRIDING_KIND_UNDEFINED = 0, + PG_QUERY__OVERRIDING_KIND__OVERRIDING_NOT_SET = 1, + PG_QUERY__OVERRIDING_KIND__OVERRIDING_USER_VALUE = 2, + PG_QUERY__OVERRIDING_KIND__OVERRIDING_SYSTEM_VALUE = 3 + PROTOBUF_C__FORCE_ENUM_TO_BE_INT_SIZE(PG_QUERY__OVERRIDING_KIND) +} PgQuery__OverridingKind; +typedef enum _PgQuery__QuerySource { + PG_QUERY__QUERY_SOURCE__QUERY_SOURCE_UNDEFINED = 0, + PG_QUERY__QUERY_SOURCE__QSRC_ORIGINAL = 1, + PG_QUERY__QUERY_SOURCE__QSRC_PARSER = 2, + PG_QUERY__QUERY_SOURCE__QSRC_INSTEAD_RULE = 3, + PG_QUERY__QUERY_SOURCE__QSRC_QUAL_INSTEAD_RULE = 4, + PG_QUERY__QUERY_SOURCE__QSRC_NON_INSTEAD_RULE = 5 + PROTOBUF_C__FORCE_ENUM_TO_BE_INT_SIZE(PG_QUERY__QUERY_SOURCE) +} PgQuery__QuerySource; +typedef enum _PgQuery__SortByDir { + PG_QUERY__SORT_BY_DIR__SORT_BY_DIR_UNDEFINED = 0, + PG_QUERY__SORT_BY_DIR__SORTBY_DEFAULT = 1, + PG_QUERY__SORT_BY_DIR__SORTBY_ASC = 2, + PG_QUERY__SORT_BY_DIR__SORTBY_DESC = 3, + PG_QUERY__SORT_BY_DIR__SORTBY_USING = 4 + PROTOBUF_C__FORCE_ENUM_TO_BE_INT_SIZE(PG_QUERY__SORT_BY_DIR) +} PgQuery__SortByDir; +typedef enum _PgQuery__SortByNulls { + PG_QUERY__SORT_BY_NULLS__SORT_BY_NULLS_UNDEFINED = 0, + PG_QUERY__SORT_BY_NULLS__SORTBY_NULLS_DEFAULT = 1, + PG_QUERY__SORT_BY_NULLS__SORTBY_NULLS_FIRST = 2, + PG_QUERY__SORT_BY_NULLS__SORTBY_NULLS_LAST = 3 + PROTOBUF_C__FORCE_ENUM_TO_BE_INT_SIZE(PG_QUERY__SORT_BY_NULLS) +} PgQuery__SortByNulls; +typedef enum _PgQuery__AExprKind { + PG_QUERY__A__EXPR__KIND__A_EXPR_KIND_UNDEFINED = 0, + PG_QUERY__A__EXPR__KIND__AEXPR_OP = 1, + PG_QUERY__A__EXPR__KIND__AEXPR_OP_ANY = 2, + PG_QUERY__A__EXPR__KIND__AEXPR_OP_ALL = 3, + PG_QUERY__A__EXPR__KIND__AEXPR_DISTINCT = 4, + PG_QUERY__A__EXPR__KIND__AEXPR_NOT_DISTINCT = 5, + PG_QUERY__A__EXPR__KIND__AEXPR_NULLIF = 6, + PG_QUERY__A__EXPR__KIND__AEXPR_OF = 7, + PG_QUERY__A__EXPR__KIND__AEXPR_IN = 8, + PG_QUERY__A__EXPR__KIND__AEXPR_LIKE = 9, + PG_QUERY__A__EXPR__KIND__AEXPR_ILIKE = 10, + PG_QUERY__A__EXPR__KIND__AEXPR_SIMILAR = 11, + PG_QUERY__A__EXPR__KIND__AEXPR_BETWEEN = 12, + PG_QUERY__A__EXPR__KIND__AEXPR_NOT_BETWEEN = 13, + PG_QUERY__A__EXPR__KIND__AEXPR_BETWEEN_SYM = 14, + PG_QUERY__A__EXPR__KIND__AEXPR_NOT_BETWEEN_SYM = 15, + PG_QUERY__A__EXPR__KIND__AEXPR_PAREN = 16 + PROTOBUF_C__FORCE_ENUM_TO_BE_INT_SIZE(PG_QUERY__A__EXPR__KIND) +} PgQuery__AExprKind; +typedef enum _PgQuery__RoleSpecType { + PG_QUERY__ROLE_SPEC_TYPE__ROLE_SPEC_TYPE_UNDEFINED = 0, + PG_QUERY__ROLE_SPEC_TYPE__ROLESPEC_CSTRING = 1, + PG_QUERY__ROLE_SPEC_TYPE__ROLESPEC_CURRENT_USER = 2, + PG_QUERY__ROLE_SPEC_TYPE__ROLESPEC_SESSION_USER = 3, + PG_QUERY__ROLE_SPEC_TYPE__ROLESPEC_PUBLIC = 4 + PROTOBUF_C__FORCE_ENUM_TO_BE_INT_SIZE(PG_QUERY__ROLE_SPEC_TYPE) +} PgQuery__RoleSpecType; +typedef enum _PgQuery__TableLikeOption { + PG_QUERY__TABLE_LIKE_OPTION__TABLE_LIKE_OPTION_UNDEFINED = 0, + PG_QUERY__TABLE_LIKE_OPTION__CREATE_TABLE_LIKE_COMMENTS = 1, + PG_QUERY__TABLE_LIKE_OPTION__CREATE_TABLE_LIKE_CONSTRAINTS = 2, + PG_QUERY__TABLE_LIKE_OPTION__CREATE_TABLE_LIKE_DEFAULTS = 3, + PG_QUERY__TABLE_LIKE_OPTION__CREATE_TABLE_LIKE_GENERATED = 4, + PG_QUERY__TABLE_LIKE_OPTION__CREATE_TABLE_LIKE_IDENTITY = 5, + PG_QUERY__TABLE_LIKE_OPTION__CREATE_TABLE_LIKE_INDEXES = 6, + PG_QUERY__TABLE_LIKE_OPTION__CREATE_TABLE_LIKE_STATISTICS = 7, + PG_QUERY__TABLE_LIKE_OPTION__CREATE_TABLE_LIKE_STORAGE = 8, + PG_QUERY__TABLE_LIKE_OPTION__CREATE_TABLE_LIKE_ALL = 9 + PROTOBUF_C__FORCE_ENUM_TO_BE_INT_SIZE(PG_QUERY__TABLE_LIKE_OPTION) +} PgQuery__TableLikeOption; +typedef enum _PgQuery__DefElemAction { + PG_QUERY__DEF_ELEM_ACTION__DEF_ELEM_ACTION_UNDEFINED = 0, + PG_QUERY__DEF_ELEM_ACTION__DEFELEM_UNSPEC = 1, + PG_QUERY__DEF_ELEM_ACTION__DEFELEM_SET = 2, + PG_QUERY__DEF_ELEM_ACTION__DEFELEM_ADD = 3, + PG_QUERY__DEF_ELEM_ACTION__DEFELEM_DROP = 4 + PROTOBUF_C__FORCE_ENUM_TO_BE_INT_SIZE(PG_QUERY__DEF_ELEM_ACTION) +} PgQuery__DefElemAction; +typedef enum _PgQuery__PartitionRangeDatumKind { + PG_QUERY__PARTITION_RANGE_DATUM_KIND__PARTITION_RANGE_DATUM_KIND_UNDEFINED = 0, + PG_QUERY__PARTITION_RANGE_DATUM_KIND__PARTITION_RANGE_DATUM_MINVALUE = 1, + PG_QUERY__PARTITION_RANGE_DATUM_KIND__PARTITION_RANGE_DATUM_VALUE = 2, + PG_QUERY__PARTITION_RANGE_DATUM_KIND__PARTITION_RANGE_DATUM_MAXVALUE = 3 + PROTOBUF_C__FORCE_ENUM_TO_BE_INT_SIZE(PG_QUERY__PARTITION_RANGE_DATUM_KIND) +} PgQuery__PartitionRangeDatumKind; +typedef enum _PgQuery__RTEKind { + PG_QUERY__RTEKIND__RTEKIND_UNDEFINED = 0, + PG_QUERY__RTEKIND__RTE_RELATION = 1, + PG_QUERY__RTEKIND__RTE_SUBQUERY = 2, + PG_QUERY__RTEKIND__RTE_JOIN = 3, + PG_QUERY__RTEKIND__RTE_FUNCTION = 4, + PG_QUERY__RTEKIND__RTE_TABLEFUNC = 5, + PG_QUERY__RTEKIND__RTE_VALUES = 6, + PG_QUERY__RTEKIND__RTE_CTE = 7, + PG_QUERY__RTEKIND__RTE_NAMEDTUPLESTORE = 8, + PG_QUERY__RTEKIND__RTE_RESULT = 9 + PROTOBUF_C__FORCE_ENUM_TO_BE_INT_SIZE(PG_QUERY__RTEKIND) +} PgQuery__RTEKind; +typedef enum _PgQuery__WCOKind { + PG_QUERY__WCOKIND__WCOKIND_UNDEFINED = 0, + PG_QUERY__WCOKIND__WCO_VIEW_CHECK = 1, + PG_QUERY__WCOKIND__WCO_RLS_INSERT_CHECK = 2, + PG_QUERY__WCOKIND__WCO_RLS_UPDATE_CHECK = 3, + PG_QUERY__WCOKIND__WCO_RLS_CONFLICT_CHECK = 4 + PROTOBUF_C__FORCE_ENUM_TO_BE_INT_SIZE(PG_QUERY__WCOKIND) +} PgQuery__WCOKind; +typedef enum _PgQuery__GroupingSetKind { + PG_QUERY__GROUPING_SET_KIND__GROUPING_SET_KIND_UNDEFINED = 0, + PG_QUERY__GROUPING_SET_KIND__GROUPING_SET_EMPTY = 1, + PG_QUERY__GROUPING_SET_KIND__GROUPING_SET_SIMPLE = 2, + PG_QUERY__GROUPING_SET_KIND__GROUPING_SET_ROLLUP = 3, + PG_QUERY__GROUPING_SET_KIND__GROUPING_SET_CUBE = 4, + PG_QUERY__GROUPING_SET_KIND__GROUPING_SET_SETS = 5 + PROTOBUF_C__FORCE_ENUM_TO_BE_INT_SIZE(PG_QUERY__GROUPING_SET_KIND) +} PgQuery__GroupingSetKind; +typedef enum _PgQuery__CTEMaterialize { + PG_QUERY__CTEMATERIALIZE__CTEMATERIALIZE_UNDEFINED = 0, + PG_QUERY__CTEMATERIALIZE__CTEMaterializeDefault = 1, + PG_QUERY__CTEMATERIALIZE__CTEMaterializeAlways = 2, + PG_QUERY__CTEMATERIALIZE__CTEMaterializeNever = 3 + PROTOBUF_C__FORCE_ENUM_TO_BE_INT_SIZE(PG_QUERY__CTEMATERIALIZE) +} PgQuery__CTEMaterialize; +typedef enum _PgQuery__SetOperation { + PG_QUERY__SET_OPERATION__SET_OPERATION_UNDEFINED = 0, + PG_QUERY__SET_OPERATION__SETOP_NONE = 1, + PG_QUERY__SET_OPERATION__SETOP_UNION = 2, + PG_QUERY__SET_OPERATION__SETOP_INTERSECT = 3, + PG_QUERY__SET_OPERATION__SETOP_EXCEPT = 4 + PROTOBUF_C__FORCE_ENUM_TO_BE_INT_SIZE(PG_QUERY__SET_OPERATION) +} PgQuery__SetOperation; +typedef enum _PgQuery__ObjectType { + PG_QUERY__OBJECT_TYPE__OBJECT_TYPE_UNDEFINED = 0, + PG_QUERY__OBJECT_TYPE__OBJECT_ACCESS_METHOD = 1, + PG_QUERY__OBJECT_TYPE__OBJECT_AGGREGATE = 2, + PG_QUERY__OBJECT_TYPE__OBJECT_AMOP = 3, + PG_QUERY__OBJECT_TYPE__OBJECT_AMPROC = 4, + PG_QUERY__OBJECT_TYPE__OBJECT_ATTRIBUTE = 5, + PG_QUERY__OBJECT_TYPE__OBJECT_CAST = 6, + PG_QUERY__OBJECT_TYPE__OBJECT_COLUMN = 7, + PG_QUERY__OBJECT_TYPE__OBJECT_COLLATION = 8, + PG_QUERY__OBJECT_TYPE__OBJECT_CONVERSION = 9, + PG_QUERY__OBJECT_TYPE__OBJECT_DATABASE = 10, + PG_QUERY__OBJECT_TYPE__OBJECT_DEFAULT = 11, + PG_QUERY__OBJECT_TYPE__OBJECT_DEFACL = 12, + PG_QUERY__OBJECT_TYPE__OBJECT_DOMAIN = 13, + PG_QUERY__OBJECT_TYPE__OBJECT_DOMCONSTRAINT = 14, + PG_QUERY__OBJECT_TYPE__OBJECT_EVENT_TRIGGER = 15, + PG_QUERY__OBJECT_TYPE__OBJECT_EXTENSION = 16, + PG_QUERY__OBJECT_TYPE__OBJECT_FDW = 17, + PG_QUERY__OBJECT_TYPE__OBJECT_FOREIGN_SERVER = 18, + PG_QUERY__OBJECT_TYPE__OBJECT_FOREIGN_TABLE = 19, + PG_QUERY__OBJECT_TYPE__OBJECT_FUNCTION = 20, + PG_QUERY__OBJECT_TYPE__OBJECT_INDEX = 21, + PG_QUERY__OBJECT_TYPE__OBJECT_LANGUAGE = 22, + PG_QUERY__OBJECT_TYPE__OBJECT_LARGEOBJECT = 23, + PG_QUERY__OBJECT_TYPE__OBJECT_MATVIEW = 24, + PG_QUERY__OBJECT_TYPE__OBJECT_OPCLASS = 25, + PG_QUERY__OBJECT_TYPE__OBJECT_OPERATOR = 26, + PG_QUERY__OBJECT_TYPE__OBJECT_OPFAMILY = 27, + PG_QUERY__OBJECT_TYPE__OBJECT_POLICY = 28, + PG_QUERY__OBJECT_TYPE__OBJECT_PROCEDURE = 29, + PG_QUERY__OBJECT_TYPE__OBJECT_PUBLICATION = 30, + PG_QUERY__OBJECT_TYPE__OBJECT_PUBLICATION_REL = 31, + PG_QUERY__OBJECT_TYPE__OBJECT_ROLE = 32, + PG_QUERY__OBJECT_TYPE__OBJECT_ROUTINE = 33, + PG_QUERY__OBJECT_TYPE__OBJECT_RULE = 34, + PG_QUERY__OBJECT_TYPE__OBJECT_SCHEMA = 35, + PG_QUERY__OBJECT_TYPE__OBJECT_SEQUENCE = 36, + PG_QUERY__OBJECT_TYPE__OBJECT_SUBSCRIPTION = 37, + PG_QUERY__OBJECT_TYPE__OBJECT_STATISTIC_EXT = 38, + PG_QUERY__OBJECT_TYPE__OBJECT_TABCONSTRAINT = 39, + PG_QUERY__OBJECT_TYPE__OBJECT_TABLE = 40, + PG_QUERY__OBJECT_TYPE__OBJECT_TABLESPACE = 41, + PG_QUERY__OBJECT_TYPE__OBJECT_TRANSFORM = 42, + PG_QUERY__OBJECT_TYPE__OBJECT_TRIGGER = 43, + PG_QUERY__OBJECT_TYPE__OBJECT_TSCONFIGURATION = 44, + PG_QUERY__OBJECT_TYPE__OBJECT_TSDICTIONARY = 45, + PG_QUERY__OBJECT_TYPE__OBJECT_TSPARSER = 46, + PG_QUERY__OBJECT_TYPE__OBJECT_TSTEMPLATE = 47, + PG_QUERY__OBJECT_TYPE__OBJECT_TYPE = 48, + PG_QUERY__OBJECT_TYPE__OBJECT_USER_MAPPING = 49, + PG_QUERY__OBJECT_TYPE__OBJECT_VIEW = 50 + PROTOBUF_C__FORCE_ENUM_TO_BE_INT_SIZE(PG_QUERY__OBJECT_TYPE) +} PgQuery__ObjectType; +typedef enum _PgQuery__DropBehavior { + PG_QUERY__DROP_BEHAVIOR__DROP_BEHAVIOR_UNDEFINED = 0, + PG_QUERY__DROP_BEHAVIOR__DROP_RESTRICT = 1, + PG_QUERY__DROP_BEHAVIOR__DROP_CASCADE = 2 + PROTOBUF_C__FORCE_ENUM_TO_BE_INT_SIZE(PG_QUERY__DROP_BEHAVIOR) +} PgQuery__DropBehavior; +typedef enum _PgQuery__AlterTableType { + PG_QUERY__ALTER_TABLE_TYPE__ALTER_TABLE_TYPE_UNDEFINED = 0, + PG_QUERY__ALTER_TABLE_TYPE__AT_AddColumn = 1, + PG_QUERY__ALTER_TABLE_TYPE__AT_AddColumnRecurse = 2, + PG_QUERY__ALTER_TABLE_TYPE__AT_AddColumnToView = 3, + PG_QUERY__ALTER_TABLE_TYPE__AT_ColumnDefault = 4, + PG_QUERY__ALTER_TABLE_TYPE__AT_CookedColumnDefault = 5, + PG_QUERY__ALTER_TABLE_TYPE__AT_DropNotNull = 6, + PG_QUERY__ALTER_TABLE_TYPE__AT_SetNotNull = 7, + PG_QUERY__ALTER_TABLE_TYPE__AT_DropExpression = 8, + PG_QUERY__ALTER_TABLE_TYPE__AT_CheckNotNull = 9, + PG_QUERY__ALTER_TABLE_TYPE__AT_SetStatistics = 10, + PG_QUERY__ALTER_TABLE_TYPE__AT_SetOptions = 11, + PG_QUERY__ALTER_TABLE_TYPE__AT_ResetOptions = 12, + PG_QUERY__ALTER_TABLE_TYPE__AT_SetStorage = 13, + PG_QUERY__ALTER_TABLE_TYPE__AT_DropColumn = 14, + PG_QUERY__ALTER_TABLE_TYPE__AT_DropColumnRecurse = 15, + PG_QUERY__ALTER_TABLE_TYPE__AT_AddIndex = 16, + PG_QUERY__ALTER_TABLE_TYPE__AT_ReAddIndex = 17, + PG_QUERY__ALTER_TABLE_TYPE__AT_AddConstraint = 18, + PG_QUERY__ALTER_TABLE_TYPE__AT_AddConstraintRecurse = 19, + PG_QUERY__ALTER_TABLE_TYPE__AT_ReAddConstraint = 20, + PG_QUERY__ALTER_TABLE_TYPE__AT_ReAddDomainConstraint = 21, + PG_QUERY__ALTER_TABLE_TYPE__AT_AlterConstraint = 22, + PG_QUERY__ALTER_TABLE_TYPE__AT_ValidateConstraint = 23, + PG_QUERY__ALTER_TABLE_TYPE__AT_ValidateConstraintRecurse = 24, + PG_QUERY__ALTER_TABLE_TYPE__AT_AddIndexConstraint = 25, + PG_QUERY__ALTER_TABLE_TYPE__AT_DropConstraint = 26, + PG_QUERY__ALTER_TABLE_TYPE__AT_DropConstraintRecurse = 27, + PG_QUERY__ALTER_TABLE_TYPE__AT_ReAddComment = 28, + PG_QUERY__ALTER_TABLE_TYPE__AT_AlterColumnType = 29, + PG_QUERY__ALTER_TABLE_TYPE__AT_AlterColumnGenericOptions = 30, + PG_QUERY__ALTER_TABLE_TYPE__AT_ChangeOwner = 31, + PG_QUERY__ALTER_TABLE_TYPE__AT_ClusterOn = 32, + PG_QUERY__ALTER_TABLE_TYPE__AT_DropCluster = 33, + PG_QUERY__ALTER_TABLE_TYPE__AT_SetLogged = 34, + PG_QUERY__ALTER_TABLE_TYPE__AT_SetUnLogged = 35, + PG_QUERY__ALTER_TABLE_TYPE__AT_DropOids = 36, + PG_QUERY__ALTER_TABLE_TYPE__AT_SetTableSpace = 37, + PG_QUERY__ALTER_TABLE_TYPE__AT_SetRelOptions = 38, + PG_QUERY__ALTER_TABLE_TYPE__AT_ResetRelOptions = 39, + PG_QUERY__ALTER_TABLE_TYPE__AT_ReplaceRelOptions = 40, + PG_QUERY__ALTER_TABLE_TYPE__AT_EnableTrig = 41, + PG_QUERY__ALTER_TABLE_TYPE__AT_EnableAlwaysTrig = 42, + PG_QUERY__ALTER_TABLE_TYPE__AT_EnableReplicaTrig = 43, + PG_QUERY__ALTER_TABLE_TYPE__AT_DisableTrig = 44, + PG_QUERY__ALTER_TABLE_TYPE__AT_EnableTrigAll = 45, + PG_QUERY__ALTER_TABLE_TYPE__AT_DisableTrigAll = 46, + PG_QUERY__ALTER_TABLE_TYPE__AT_EnableTrigUser = 47, + PG_QUERY__ALTER_TABLE_TYPE__AT_DisableTrigUser = 48, + PG_QUERY__ALTER_TABLE_TYPE__AT_EnableRule = 49, + PG_QUERY__ALTER_TABLE_TYPE__AT_EnableAlwaysRule = 50, + PG_QUERY__ALTER_TABLE_TYPE__AT_EnableReplicaRule = 51, + PG_QUERY__ALTER_TABLE_TYPE__AT_DisableRule = 52, + PG_QUERY__ALTER_TABLE_TYPE__AT_AddInherit = 53, + PG_QUERY__ALTER_TABLE_TYPE__AT_DropInherit = 54, + PG_QUERY__ALTER_TABLE_TYPE__AT_AddOf = 55, + PG_QUERY__ALTER_TABLE_TYPE__AT_DropOf = 56, + PG_QUERY__ALTER_TABLE_TYPE__AT_ReplicaIdentity = 57, + PG_QUERY__ALTER_TABLE_TYPE__AT_EnableRowSecurity = 58, + PG_QUERY__ALTER_TABLE_TYPE__AT_DisableRowSecurity = 59, + PG_QUERY__ALTER_TABLE_TYPE__AT_ForceRowSecurity = 60, + PG_QUERY__ALTER_TABLE_TYPE__AT_NoForceRowSecurity = 61, + PG_QUERY__ALTER_TABLE_TYPE__AT_GenericOptions = 62, + PG_QUERY__ALTER_TABLE_TYPE__AT_AttachPartition = 63, + PG_QUERY__ALTER_TABLE_TYPE__AT_DetachPartition = 64, + PG_QUERY__ALTER_TABLE_TYPE__AT_AddIdentity = 65, + PG_QUERY__ALTER_TABLE_TYPE__AT_SetIdentity = 66, + PG_QUERY__ALTER_TABLE_TYPE__AT_DropIdentity = 67 + PROTOBUF_C__FORCE_ENUM_TO_BE_INT_SIZE(PG_QUERY__ALTER_TABLE_TYPE) +} PgQuery__AlterTableType; +typedef enum _PgQuery__GrantTargetType { + PG_QUERY__GRANT_TARGET_TYPE__GRANT_TARGET_TYPE_UNDEFINED = 0, + PG_QUERY__GRANT_TARGET_TYPE__ACL_TARGET_OBJECT = 1, + PG_QUERY__GRANT_TARGET_TYPE__ACL_TARGET_ALL_IN_SCHEMA = 2, + PG_QUERY__GRANT_TARGET_TYPE__ACL_TARGET_DEFAULTS = 3 + PROTOBUF_C__FORCE_ENUM_TO_BE_INT_SIZE(PG_QUERY__GRANT_TARGET_TYPE) +} PgQuery__GrantTargetType; +typedef enum _PgQuery__VariableSetKind { + PG_QUERY__VARIABLE_SET_KIND__VARIABLE_SET_KIND_UNDEFINED = 0, + PG_QUERY__VARIABLE_SET_KIND__VAR_SET_VALUE = 1, + PG_QUERY__VARIABLE_SET_KIND__VAR_SET_DEFAULT = 2, + PG_QUERY__VARIABLE_SET_KIND__VAR_SET_CURRENT = 3, + PG_QUERY__VARIABLE_SET_KIND__VAR_SET_MULTI = 4, + PG_QUERY__VARIABLE_SET_KIND__VAR_RESET = 5, + PG_QUERY__VARIABLE_SET_KIND__VAR_RESET_ALL = 6 + PROTOBUF_C__FORCE_ENUM_TO_BE_INT_SIZE(PG_QUERY__VARIABLE_SET_KIND) +} PgQuery__VariableSetKind; +typedef enum _PgQuery__ConstrType { + PG_QUERY__CONSTR_TYPE__CONSTR_TYPE_UNDEFINED = 0, + PG_QUERY__CONSTR_TYPE__CONSTR_NULL = 1, + PG_QUERY__CONSTR_TYPE__CONSTR_NOTNULL = 2, + PG_QUERY__CONSTR_TYPE__CONSTR_DEFAULT = 3, + PG_QUERY__CONSTR_TYPE__CONSTR_IDENTITY = 4, + PG_QUERY__CONSTR_TYPE__CONSTR_GENERATED = 5, + PG_QUERY__CONSTR_TYPE__CONSTR_CHECK = 6, + PG_QUERY__CONSTR_TYPE__CONSTR_PRIMARY = 7, + PG_QUERY__CONSTR_TYPE__CONSTR_UNIQUE = 8, + PG_QUERY__CONSTR_TYPE__CONSTR_EXCLUSION = 9, + PG_QUERY__CONSTR_TYPE__CONSTR_FOREIGN = 10, + PG_QUERY__CONSTR_TYPE__CONSTR_ATTR_DEFERRABLE = 11, + PG_QUERY__CONSTR_TYPE__CONSTR_ATTR_NOT_DEFERRABLE = 12, + PG_QUERY__CONSTR_TYPE__CONSTR_ATTR_DEFERRED = 13, + PG_QUERY__CONSTR_TYPE__CONSTR_ATTR_IMMEDIATE = 14 + PROTOBUF_C__FORCE_ENUM_TO_BE_INT_SIZE(PG_QUERY__CONSTR_TYPE) +} PgQuery__ConstrType; +typedef enum _PgQuery__ImportForeignSchemaType { + PG_QUERY__IMPORT_FOREIGN_SCHEMA_TYPE__IMPORT_FOREIGN_SCHEMA_TYPE_UNDEFINED = 0, + PG_QUERY__IMPORT_FOREIGN_SCHEMA_TYPE__FDW_IMPORT_SCHEMA_ALL = 1, + PG_QUERY__IMPORT_FOREIGN_SCHEMA_TYPE__FDW_IMPORT_SCHEMA_LIMIT_TO = 2, + PG_QUERY__IMPORT_FOREIGN_SCHEMA_TYPE__FDW_IMPORT_SCHEMA_EXCEPT = 3 + PROTOBUF_C__FORCE_ENUM_TO_BE_INT_SIZE(PG_QUERY__IMPORT_FOREIGN_SCHEMA_TYPE) +} PgQuery__ImportForeignSchemaType; +typedef enum _PgQuery__RoleStmtType { + PG_QUERY__ROLE_STMT_TYPE__ROLE_STMT_TYPE_UNDEFINED = 0, + PG_QUERY__ROLE_STMT_TYPE__ROLESTMT_ROLE = 1, + PG_QUERY__ROLE_STMT_TYPE__ROLESTMT_USER = 2, + PG_QUERY__ROLE_STMT_TYPE__ROLESTMT_GROUP = 3 + PROTOBUF_C__FORCE_ENUM_TO_BE_INT_SIZE(PG_QUERY__ROLE_STMT_TYPE) +} PgQuery__RoleStmtType; +typedef enum _PgQuery__FetchDirection { + PG_QUERY__FETCH_DIRECTION__FETCH_DIRECTION_UNDEFINED = 0, + PG_QUERY__FETCH_DIRECTION__FETCH_FORWARD = 1, + PG_QUERY__FETCH_DIRECTION__FETCH_BACKWARD = 2, + PG_QUERY__FETCH_DIRECTION__FETCH_ABSOLUTE = 3, + PG_QUERY__FETCH_DIRECTION__FETCH_RELATIVE = 4 + PROTOBUF_C__FORCE_ENUM_TO_BE_INT_SIZE(PG_QUERY__FETCH_DIRECTION) +} PgQuery__FetchDirection; +typedef enum _PgQuery__FunctionParameterMode { + PG_QUERY__FUNCTION_PARAMETER_MODE__FUNCTION_PARAMETER_MODE_UNDEFINED = 0, + PG_QUERY__FUNCTION_PARAMETER_MODE__FUNC_PARAM_IN = 1, + PG_QUERY__FUNCTION_PARAMETER_MODE__FUNC_PARAM_OUT = 2, + PG_QUERY__FUNCTION_PARAMETER_MODE__FUNC_PARAM_INOUT = 3, + PG_QUERY__FUNCTION_PARAMETER_MODE__FUNC_PARAM_VARIADIC = 4, + PG_QUERY__FUNCTION_PARAMETER_MODE__FUNC_PARAM_TABLE = 5 + PROTOBUF_C__FORCE_ENUM_TO_BE_INT_SIZE(PG_QUERY__FUNCTION_PARAMETER_MODE) +} PgQuery__FunctionParameterMode; +typedef enum _PgQuery__TransactionStmtKind { + PG_QUERY__TRANSACTION_STMT_KIND__TRANSACTION_STMT_KIND_UNDEFINED = 0, + PG_QUERY__TRANSACTION_STMT_KIND__TRANS_STMT_BEGIN = 1, + PG_QUERY__TRANSACTION_STMT_KIND__TRANS_STMT_START = 2, + PG_QUERY__TRANSACTION_STMT_KIND__TRANS_STMT_COMMIT = 3, + PG_QUERY__TRANSACTION_STMT_KIND__TRANS_STMT_ROLLBACK = 4, + PG_QUERY__TRANSACTION_STMT_KIND__TRANS_STMT_SAVEPOINT = 5, + PG_QUERY__TRANSACTION_STMT_KIND__TRANS_STMT_RELEASE = 6, + PG_QUERY__TRANSACTION_STMT_KIND__TRANS_STMT_ROLLBACK_TO = 7, + PG_QUERY__TRANSACTION_STMT_KIND__TRANS_STMT_PREPARE = 8, + PG_QUERY__TRANSACTION_STMT_KIND__TRANS_STMT_COMMIT_PREPARED = 9, + PG_QUERY__TRANSACTION_STMT_KIND__TRANS_STMT_ROLLBACK_PREPARED = 10 + PROTOBUF_C__FORCE_ENUM_TO_BE_INT_SIZE(PG_QUERY__TRANSACTION_STMT_KIND) +} PgQuery__TransactionStmtKind; +typedef enum _PgQuery__ViewCheckOption { + PG_QUERY__VIEW_CHECK_OPTION__VIEW_CHECK_OPTION_UNDEFINED = 0, + PG_QUERY__VIEW_CHECK_OPTION__NO_CHECK_OPTION = 1, + PG_QUERY__VIEW_CHECK_OPTION__LOCAL_CHECK_OPTION = 2, + PG_QUERY__VIEW_CHECK_OPTION__CASCADED_CHECK_OPTION = 3 + PROTOBUF_C__FORCE_ENUM_TO_BE_INT_SIZE(PG_QUERY__VIEW_CHECK_OPTION) +} PgQuery__ViewCheckOption; +typedef enum _PgQuery__ClusterOption { + PG_QUERY__CLUSTER_OPTION__CLUSTER_OPTION_UNDEFINED = 0, + PG_QUERY__CLUSTER_OPTION__CLUOPT_RECHECK = 1, + PG_QUERY__CLUSTER_OPTION__CLUOPT_VERBOSE = 2 + PROTOBUF_C__FORCE_ENUM_TO_BE_INT_SIZE(PG_QUERY__CLUSTER_OPTION) +} PgQuery__ClusterOption; +typedef enum _PgQuery__DiscardMode { + PG_QUERY__DISCARD_MODE__DISCARD_MODE_UNDEFINED = 0, + PG_QUERY__DISCARD_MODE__DISCARD_ALL = 1, + PG_QUERY__DISCARD_MODE__DISCARD_PLANS = 2, + PG_QUERY__DISCARD_MODE__DISCARD_SEQUENCES = 3, + PG_QUERY__DISCARD_MODE__DISCARD_TEMP = 4 + PROTOBUF_C__FORCE_ENUM_TO_BE_INT_SIZE(PG_QUERY__DISCARD_MODE) +} PgQuery__DiscardMode; +typedef enum _PgQuery__ReindexObjectType { + PG_QUERY__REINDEX_OBJECT_TYPE__REINDEX_OBJECT_TYPE_UNDEFINED = 0, + PG_QUERY__REINDEX_OBJECT_TYPE__REINDEX_OBJECT_INDEX = 1, + PG_QUERY__REINDEX_OBJECT_TYPE__REINDEX_OBJECT_TABLE = 2, + PG_QUERY__REINDEX_OBJECT_TYPE__REINDEX_OBJECT_SCHEMA = 3, + PG_QUERY__REINDEX_OBJECT_TYPE__REINDEX_OBJECT_SYSTEM = 4, + PG_QUERY__REINDEX_OBJECT_TYPE__REINDEX_OBJECT_DATABASE = 5 + PROTOBUF_C__FORCE_ENUM_TO_BE_INT_SIZE(PG_QUERY__REINDEX_OBJECT_TYPE) +} PgQuery__ReindexObjectType; +typedef enum _PgQuery__AlterTSConfigType { + PG_QUERY__ALTER_TSCONFIG_TYPE__ALTER_TSCONFIG_TYPE_UNDEFINED = 0, + PG_QUERY__ALTER_TSCONFIG_TYPE__ALTER_TSCONFIG_ADD_MAPPING = 1, + PG_QUERY__ALTER_TSCONFIG_TYPE__ALTER_TSCONFIG_ALTER_MAPPING_FOR_TOKEN = 2, + PG_QUERY__ALTER_TSCONFIG_TYPE__ALTER_TSCONFIG_REPLACE_DICT = 3, + PG_QUERY__ALTER_TSCONFIG_TYPE__ALTER_TSCONFIG_REPLACE_DICT_FOR_TOKEN = 4, + PG_QUERY__ALTER_TSCONFIG_TYPE__ALTER_TSCONFIG_DROP_MAPPING = 5 + PROTOBUF_C__FORCE_ENUM_TO_BE_INT_SIZE(PG_QUERY__ALTER_TSCONFIG_TYPE) +} PgQuery__AlterTSConfigType; +typedef enum _PgQuery__AlterSubscriptionType { + PG_QUERY__ALTER_SUBSCRIPTION_TYPE__ALTER_SUBSCRIPTION_TYPE_UNDEFINED = 0, + PG_QUERY__ALTER_SUBSCRIPTION_TYPE__ALTER_SUBSCRIPTION_OPTIONS = 1, + PG_QUERY__ALTER_SUBSCRIPTION_TYPE__ALTER_SUBSCRIPTION_CONNECTION = 2, + PG_QUERY__ALTER_SUBSCRIPTION_TYPE__ALTER_SUBSCRIPTION_PUBLICATION = 3, + PG_QUERY__ALTER_SUBSCRIPTION_TYPE__ALTER_SUBSCRIPTION_REFRESH = 4, + PG_QUERY__ALTER_SUBSCRIPTION_TYPE__ALTER_SUBSCRIPTION_ENABLED = 5 + PROTOBUF_C__FORCE_ENUM_TO_BE_INT_SIZE(PG_QUERY__ALTER_SUBSCRIPTION_TYPE) +} PgQuery__AlterSubscriptionType; +typedef enum _PgQuery__OnCommitAction { + PG_QUERY__ON_COMMIT_ACTION__ON_COMMIT_ACTION_UNDEFINED = 0, + PG_QUERY__ON_COMMIT_ACTION__ONCOMMIT_NOOP = 1, + PG_QUERY__ON_COMMIT_ACTION__ONCOMMIT_PRESERVE_ROWS = 2, + PG_QUERY__ON_COMMIT_ACTION__ONCOMMIT_DELETE_ROWS = 3, + PG_QUERY__ON_COMMIT_ACTION__ONCOMMIT_DROP = 4 + PROTOBUF_C__FORCE_ENUM_TO_BE_INT_SIZE(PG_QUERY__ON_COMMIT_ACTION) +} PgQuery__OnCommitAction; +typedef enum _PgQuery__ParamKind { + PG_QUERY__PARAM_KIND__PARAM_KIND_UNDEFINED = 0, + PG_QUERY__PARAM_KIND__PARAM_EXTERN = 1, + PG_QUERY__PARAM_KIND__PARAM_EXEC = 2, + PG_QUERY__PARAM_KIND__PARAM_SUBLINK = 3, + PG_QUERY__PARAM_KIND__PARAM_MULTIEXPR = 4 + PROTOBUF_C__FORCE_ENUM_TO_BE_INT_SIZE(PG_QUERY__PARAM_KIND) +} PgQuery__ParamKind; +typedef enum _PgQuery__CoercionContext { + PG_QUERY__COERCION_CONTEXT__COERCION_CONTEXT_UNDEFINED = 0, + PG_QUERY__COERCION_CONTEXT__COERCION_IMPLICIT = 1, + PG_QUERY__COERCION_CONTEXT__COERCION_ASSIGNMENT = 2, + PG_QUERY__COERCION_CONTEXT__COERCION_EXPLICIT = 3 + PROTOBUF_C__FORCE_ENUM_TO_BE_INT_SIZE(PG_QUERY__COERCION_CONTEXT) +} PgQuery__CoercionContext; +typedef enum _PgQuery__CoercionForm { + PG_QUERY__COERCION_FORM__COERCION_FORM_UNDEFINED = 0, + PG_QUERY__COERCION_FORM__COERCE_EXPLICIT_CALL = 1, + PG_QUERY__COERCION_FORM__COERCE_EXPLICIT_CAST = 2, + PG_QUERY__COERCION_FORM__COERCE_IMPLICIT_CAST = 3 + PROTOBUF_C__FORCE_ENUM_TO_BE_INT_SIZE(PG_QUERY__COERCION_FORM) +} PgQuery__CoercionForm; +typedef enum _PgQuery__BoolExprType { + PG_QUERY__BOOL_EXPR_TYPE__BOOL_EXPR_TYPE_UNDEFINED = 0, + PG_QUERY__BOOL_EXPR_TYPE__AND_EXPR = 1, + PG_QUERY__BOOL_EXPR_TYPE__OR_EXPR = 2, + PG_QUERY__BOOL_EXPR_TYPE__NOT_EXPR = 3 + PROTOBUF_C__FORCE_ENUM_TO_BE_INT_SIZE(PG_QUERY__BOOL_EXPR_TYPE) +} PgQuery__BoolExprType; +typedef enum _PgQuery__SubLinkType { + PG_QUERY__SUB_LINK_TYPE__SUB_LINK_TYPE_UNDEFINED = 0, + PG_QUERY__SUB_LINK_TYPE__EXISTS_SUBLINK = 1, + PG_QUERY__SUB_LINK_TYPE__ALL_SUBLINK = 2, + PG_QUERY__SUB_LINK_TYPE__ANY_SUBLINK = 3, + PG_QUERY__SUB_LINK_TYPE__ROWCOMPARE_SUBLINK = 4, + PG_QUERY__SUB_LINK_TYPE__EXPR_SUBLINK = 5, + PG_QUERY__SUB_LINK_TYPE__MULTIEXPR_SUBLINK = 6, + PG_QUERY__SUB_LINK_TYPE__ARRAY_SUBLINK = 7, + PG_QUERY__SUB_LINK_TYPE__CTE_SUBLINK = 8 + PROTOBUF_C__FORCE_ENUM_TO_BE_INT_SIZE(PG_QUERY__SUB_LINK_TYPE) +} PgQuery__SubLinkType; +typedef enum _PgQuery__RowCompareType { + PG_QUERY__ROW_COMPARE_TYPE__ROW_COMPARE_TYPE_UNDEFINED = 0, + PG_QUERY__ROW_COMPARE_TYPE__ROWCOMPARE_LT = 1, + PG_QUERY__ROW_COMPARE_TYPE__ROWCOMPARE_LE = 2, + PG_QUERY__ROW_COMPARE_TYPE__ROWCOMPARE_EQ = 3, + PG_QUERY__ROW_COMPARE_TYPE__ROWCOMPARE_GE = 4, + PG_QUERY__ROW_COMPARE_TYPE__ROWCOMPARE_GT = 5, + PG_QUERY__ROW_COMPARE_TYPE__ROWCOMPARE_NE = 6 + PROTOBUF_C__FORCE_ENUM_TO_BE_INT_SIZE(PG_QUERY__ROW_COMPARE_TYPE) +} PgQuery__RowCompareType; +typedef enum _PgQuery__MinMaxOp { + PG_QUERY__MIN_MAX_OP__MIN_MAX_OP_UNDEFINED = 0, + PG_QUERY__MIN_MAX_OP__IS_GREATEST = 1, + PG_QUERY__MIN_MAX_OP__IS_LEAST = 2 + PROTOBUF_C__FORCE_ENUM_TO_BE_INT_SIZE(PG_QUERY__MIN_MAX_OP) +} PgQuery__MinMaxOp; +typedef enum _PgQuery__SQLValueFunctionOp { + PG_QUERY__SQLVALUE_FUNCTION_OP__SQLVALUE_FUNCTION_OP_UNDEFINED = 0, + PG_QUERY__SQLVALUE_FUNCTION_OP__SVFOP_CURRENT_DATE = 1, + PG_QUERY__SQLVALUE_FUNCTION_OP__SVFOP_CURRENT_TIME = 2, + PG_QUERY__SQLVALUE_FUNCTION_OP__SVFOP_CURRENT_TIME_N = 3, + PG_QUERY__SQLVALUE_FUNCTION_OP__SVFOP_CURRENT_TIMESTAMP = 4, + PG_QUERY__SQLVALUE_FUNCTION_OP__SVFOP_CURRENT_TIMESTAMP_N = 5, + PG_QUERY__SQLVALUE_FUNCTION_OP__SVFOP_LOCALTIME = 6, + PG_QUERY__SQLVALUE_FUNCTION_OP__SVFOP_LOCALTIME_N = 7, + PG_QUERY__SQLVALUE_FUNCTION_OP__SVFOP_LOCALTIMESTAMP = 8, + PG_QUERY__SQLVALUE_FUNCTION_OP__SVFOP_LOCALTIMESTAMP_N = 9, + PG_QUERY__SQLVALUE_FUNCTION_OP__SVFOP_CURRENT_ROLE = 10, + PG_QUERY__SQLVALUE_FUNCTION_OP__SVFOP_CURRENT_USER = 11, + PG_QUERY__SQLVALUE_FUNCTION_OP__SVFOP_USER = 12, + PG_QUERY__SQLVALUE_FUNCTION_OP__SVFOP_SESSION_USER = 13, + PG_QUERY__SQLVALUE_FUNCTION_OP__SVFOP_CURRENT_CATALOG = 14, + PG_QUERY__SQLVALUE_FUNCTION_OP__SVFOP_CURRENT_SCHEMA = 15 + PROTOBUF_C__FORCE_ENUM_TO_BE_INT_SIZE(PG_QUERY__SQLVALUE_FUNCTION_OP) +} PgQuery__SQLValueFunctionOp; +typedef enum _PgQuery__XmlExprOp { + PG_QUERY__XML_EXPR_OP__XML_EXPR_OP_UNDEFINED = 0, + PG_QUERY__XML_EXPR_OP__IS_XMLCONCAT = 1, + PG_QUERY__XML_EXPR_OP__IS_XMLELEMENT = 2, + PG_QUERY__XML_EXPR_OP__IS_XMLFOREST = 3, + PG_QUERY__XML_EXPR_OP__IS_XMLPARSE = 4, + PG_QUERY__XML_EXPR_OP__IS_XMLPI = 5, + PG_QUERY__XML_EXPR_OP__IS_XMLROOT = 6, + PG_QUERY__XML_EXPR_OP__IS_XMLSERIALIZE = 7, + PG_QUERY__XML_EXPR_OP__IS_DOCUMENT = 8 + PROTOBUF_C__FORCE_ENUM_TO_BE_INT_SIZE(PG_QUERY__XML_EXPR_OP) +} PgQuery__XmlExprOp; +typedef enum _PgQuery__XmlOptionType { + PG_QUERY__XML_OPTION_TYPE__XML_OPTION_TYPE_UNDEFINED = 0, + PG_QUERY__XML_OPTION_TYPE__XMLOPTION_DOCUMENT = 1, + PG_QUERY__XML_OPTION_TYPE__XMLOPTION_CONTENT = 2 + PROTOBUF_C__FORCE_ENUM_TO_BE_INT_SIZE(PG_QUERY__XML_OPTION_TYPE) +} PgQuery__XmlOptionType; +typedef enum _PgQuery__NullTestType { + PG_QUERY__NULL_TEST_TYPE__NULL_TEST_TYPE_UNDEFINED = 0, + PG_QUERY__NULL_TEST_TYPE__IS_NULL = 1, + PG_QUERY__NULL_TEST_TYPE__IS_NOT_NULL = 2 + PROTOBUF_C__FORCE_ENUM_TO_BE_INT_SIZE(PG_QUERY__NULL_TEST_TYPE) +} PgQuery__NullTestType; +typedef enum _PgQuery__BoolTestType { + PG_QUERY__BOOL_TEST_TYPE__BOOL_TEST_TYPE_UNDEFINED = 0, + PG_QUERY__BOOL_TEST_TYPE__IS_TRUE = 1, + PG_QUERY__BOOL_TEST_TYPE__IS_NOT_TRUE = 2, + PG_QUERY__BOOL_TEST_TYPE__IS_FALSE = 3, + PG_QUERY__BOOL_TEST_TYPE__IS_NOT_FALSE = 4, + PG_QUERY__BOOL_TEST_TYPE__IS_UNKNOWN = 5, + PG_QUERY__BOOL_TEST_TYPE__IS_NOT_UNKNOWN = 6 + PROTOBUF_C__FORCE_ENUM_TO_BE_INT_SIZE(PG_QUERY__BOOL_TEST_TYPE) +} PgQuery__BoolTestType; +typedef enum _PgQuery__CmdType { + PG_QUERY__CMD_TYPE__CMD_TYPE_UNDEFINED = 0, + PG_QUERY__CMD_TYPE__CMD_UNKNOWN = 1, + PG_QUERY__CMD_TYPE__CMD_SELECT = 2, + PG_QUERY__CMD_TYPE__CMD_UPDATE = 3, + PG_QUERY__CMD_TYPE__CMD_INSERT = 4, + PG_QUERY__CMD_TYPE__CMD_DELETE = 5, + PG_QUERY__CMD_TYPE__CMD_UTILITY = 6, + PG_QUERY__CMD_TYPE__CMD_NOTHING = 7 + PROTOBUF_C__FORCE_ENUM_TO_BE_INT_SIZE(PG_QUERY__CMD_TYPE) +} PgQuery__CmdType; +typedef enum _PgQuery__JoinType { + PG_QUERY__JOIN_TYPE__JOIN_TYPE_UNDEFINED = 0, + PG_QUERY__JOIN_TYPE__JOIN_INNER = 1, + PG_QUERY__JOIN_TYPE__JOIN_LEFT = 2, + PG_QUERY__JOIN_TYPE__JOIN_FULL = 3, + PG_QUERY__JOIN_TYPE__JOIN_RIGHT = 4, + PG_QUERY__JOIN_TYPE__JOIN_SEMI = 5, + PG_QUERY__JOIN_TYPE__JOIN_ANTI = 6, + PG_QUERY__JOIN_TYPE__JOIN_UNIQUE_OUTER = 7, + PG_QUERY__JOIN_TYPE__JOIN_UNIQUE_INNER = 8 + PROTOBUF_C__FORCE_ENUM_TO_BE_INT_SIZE(PG_QUERY__JOIN_TYPE) +} PgQuery__JoinType; +typedef enum _PgQuery__AggStrategy { + PG_QUERY__AGG_STRATEGY__AGG_STRATEGY_UNDEFINED = 0, + PG_QUERY__AGG_STRATEGY__AGG_PLAIN = 1, + PG_QUERY__AGG_STRATEGY__AGG_SORTED = 2, + PG_QUERY__AGG_STRATEGY__AGG_HASHED = 3, + PG_QUERY__AGG_STRATEGY__AGG_MIXED = 4 + PROTOBUF_C__FORCE_ENUM_TO_BE_INT_SIZE(PG_QUERY__AGG_STRATEGY) +} PgQuery__AggStrategy; +typedef enum _PgQuery__AggSplit { + PG_QUERY__AGG_SPLIT__AGG_SPLIT_UNDEFINED = 0, + PG_QUERY__AGG_SPLIT__AGGSPLIT_SIMPLE = 1, + PG_QUERY__AGG_SPLIT__AGGSPLIT_INITIAL_SERIAL = 2, + PG_QUERY__AGG_SPLIT__AGGSPLIT_FINAL_DESERIAL = 3 + PROTOBUF_C__FORCE_ENUM_TO_BE_INT_SIZE(PG_QUERY__AGG_SPLIT) +} PgQuery__AggSplit; +typedef enum _PgQuery__SetOpCmd { + PG_QUERY__SET_OP_CMD__SET_OP_CMD_UNDEFINED = 0, + PG_QUERY__SET_OP_CMD__SETOPCMD_INTERSECT = 1, + PG_QUERY__SET_OP_CMD__SETOPCMD_INTERSECT_ALL = 2, + PG_QUERY__SET_OP_CMD__SETOPCMD_EXCEPT = 3, + PG_QUERY__SET_OP_CMD__SETOPCMD_EXCEPT_ALL = 4 + PROTOBUF_C__FORCE_ENUM_TO_BE_INT_SIZE(PG_QUERY__SET_OP_CMD) +} PgQuery__SetOpCmd; +typedef enum _PgQuery__SetOpStrategy { + PG_QUERY__SET_OP_STRATEGY__SET_OP_STRATEGY_UNDEFINED = 0, + PG_QUERY__SET_OP_STRATEGY__SETOP_SORTED = 1, + PG_QUERY__SET_OP_STRATEGY__SETOP_HASHED = 2 + PROTOBUF_C__FORCE_ENUM_TO_BE_INT_SIZE(PG_QUERY__SET_OP_STRATEGY) +} PgQuery__SetOpStrategy; +typedef enum _PgQuery__OnConflictAction { + PG_QUERY__ON_CONFLICT_ACTION__ON_CONFLICT_ACTION_UNDEFINED = 0, + PG_QUERY__ON_CONFLICT_ACTION__ONCONFLICT_NONE = 1, + PG_QUERY__ON_CONFLICT_ACTION__ONCONFLICT_NOTHING = 2, + PG_QUERY__ON_CONFLICT_ACTION__ONCONFLICT_UPDATE = 3 + PROTOBUF_C__FORCE_ENUM_TO_BE_INT_SIZE(PG_QUERY__ON_CONFLICT_ACTION) +} PgQuery__OnConflictAction; +typedef enum _PgQuery__LimitOption { + PG_QUERY__LIMIT_OPTION__LIMIT_OPTION_UNDEFINED = 0, + PG_QUERY__LIMIT_OPTION__LIMIT_OPTION_DEFAULT = 1, + PG_QUERY__LIMIT_OPTION__LIMIT_OPTION_COUNT = 2, + PG_QUERY__LIMIT_OPTION__LIMIT_OPTION_WITH_TIES = 3 + PROTOBUF_C__FORCE_ENUM_TO_BE_INT_SIZE(PG_QUERY__LIMIT_OPTION) +} PgQuery__LimitOption; +typedef enum _PgQuery__LockClauseStrength { + PG_QUERY__LOCK_CLAUSE_STRENGTH__LOCK_CLAUSE_STRENGTH_UNDEFINED = 0, + PG_QUERY__LOCK_CLAUSE_STRENGTH__LCS_NONE = 1, + PG_QUERY__LOCK_CLAUSE_STRENGTH__LCS_FORKEYSHARE = 2, + PG_QUERY__LOCK_CLAUSE_STRENGTH__LCS_FORSHARE = 3, + PG_QUERY__LOCK_CLAUSE_STRENGTH__LCS_FORNOKEYUPDATE = 4, + PG_QUERY__LOCK_CLAUSE_STRENGTH__LCS_FORUPDATE = 5 + PROTOBUF_C__FORCE_ENUM_TO_BE_INT_SIZE(PG_QUERY__LOCK_CLAUSE_STRENGTH) +} PgQuery__LockClauseStrength; +typedef enum _PgQuery__LockWaitPolicy { + PG_QUERY__LOCK_WAIT_POLICY__LOCK_WAIT_POLICY_UNDEFINED = 0, + PG_QUERY__LOCK_WAIT_POLICY__LockWaitBlock = 1, + PG_QUERY__LOCK_WAIT_POLICY__LockWaitSkip = 2, + PG_QUERY__LOCK_WAIT_POLICY__LockWaitError = 3 + PROTOBUF_C__FORCE_ENUM_TO_BE_INT_SIZE(PG_QUERY__LOCK_WAIT_POLICY) +} PgQuery__LockWaitPolicy; +typedef enum _PgQuery__LockTupleMode { + PG_QUERY__LOCK_TUPLE_MODE__LOCK_TUPLE_MODE_UNDEFINED = 0, + PG_QUERY__LOCK_TUPLE_MODE__LockTupleKeyShare = 1, + PG_QUERY__LOCK_TUPLE_MODE__LockTupleShare = 2, + PG_QUERY__LOCK_TUPLE_MODE__LockTupleNoKeyExclusive = 3, + PG_QUERY__LOCK_TUPLE_MODE__LockTupleExclusive = 4 + PROTOBUF_C__FORCE_ENUM_TO_BE_INT_SIZE(PG_QUERY__LOCK_TUPLE_MODE) +} PgQuery__LockTupleMode; +typedef enum _PgQuery__KeywordKind { + PG_QUERY__KEYWORD_KIND__NO_KEYWORD = 0, + PG_QUERY__KEYWORD_KIND__UNRESERVED_KEYWORD = 1, + PG_QUERY__KEYWORD_KIND__COL_NAME_KEYWORD = 2, + PG_QUERY__KEYWORD_KIND__TYPE_FUNC_NAME_KEYWORD = 3, + PG_QUERY__KEYWORD_KIND__RESERVED_KEYWORD = 4 + PROTOBUF_C__FORCE_ENUM_TO_BE_INT_SIZE(PG_QUERY__KEYWORD_KIND) +} PgQuery__KeywordKind; +typedef enum _PgQuery__Token { + PG_QUERY__TOKEN__NUL = 0, + /* + * Single-character tokens that are returned 1:1 (identical with "self" list in scan.l) + * Either supporting syntax, or single-character operators (some can be both) + * Also see https://www.postgresql.org/docs/12/sql-syntax-lexical.html#SQL-SYNTAX-SPECIAL-CHARS + */ + /* + * "%" + */ + PG_QUERY__TOKEN__ASCII_37 = 37, + /* + * "(" + */ + PG_QUERY__TOKEN__ASCII_40 = 40, + /* + * ")" + */ + PG_QUERY__TOKEN__ASCII_41 = 41, + /* + * "*" + */ + PG_QUERY__TOKEN__ASCII_42 = 42, + /* + * "+" + */ + PG_QUERY__TOKEN__ASCII_43 = 43, + /* + * "," + */ + PG_QUERY__TOKEN__ASCII_44 = 44, + /* + * "-" + */ + PG_QUERY__TOKEN__ASCII_45 = 45, + /* + * "." + */ + PG_QUERY__TOKEN__ASCII_46 = 46, + /* + * "/" + */ + PG_QUERY__TOKEN__ASCII_47 = 47, + /* + * ":" + */ + PG_QUERY__TOKEN__ASCII_58 = 58, + /* + * ";" + */ + PG_QUERY__TOKEN__ASCII_59 = 59, + /* + * "<" + */ + PG_QUERY__TOKEN__ASCII_60 = 60, + /* + * "=" + */ + PG_QUERY__TOKEN__ASCII_61 = 61, + /* + * ">" + */ + PG_QUERY__TOKEN__ASCII_62 = 62, + /* + * "?" + */ + PG_QUERY__TOKEN__ASCII_63 = 63, + /* + * "[" + */ + PG_QUERY__TOKEN__ASCII_91 = 91, + /* + * "]" + */ + PG_QUERY__TOKEN__ASCII_93 = 93, + /* + * "^" + */ + PG_QUERY__TOKEN__ASCII_94 = 94, + /* + * Named tokens in scan.l + */ + PG_QUERY__TOKEN__IDENT = 258, + PG_QUERY__TOKEN__UIDENT = 259, + PG_QUERY__TOKEN__FCONST = 260, + PG_QUERY__TOKEN__SCONST = 261, + PG_QUERY__TOKEN__USCONST = 262, + PG_QUERY__TOKEN__BCONST = 263, + PG_QUERY__TOKEN__XCONST = 264, + PG_QUERY__TOKEN__Op = 265, + PG_QUERY__TOKEN__ICONST = 266, + PG_QUERY__TOKEN__PARAM = 267, + PG_QUERY__TOKEN__TYPECAST = 268, + PG_QUERY__TOKEN__DOT_DOT = 269, + PG_QUERY__TOKEN__COLON_EQUALS = 270, + PG_QUERY__TOKEN__EQUALS_GREATER = 271, + PG_QUERY__TOKEN__LESS_EQUALS = 272, + PG_QUERY__TOKEN__GREATER_EQUALS = 273, + PG_QUERY__TOKEN__NOT_EQUALS = 274, + PG_QUERY__TOKEN__SQL_COMMENT = 275, + PG_QUERY__TOKEN__C_COMMENT = 276, + PG_QUERY__TOKEN__ABORT_P = 277, + PG_QUERY__TOKEN__ABSOLUTE_P = 278, + PG_QUERY__TOKEN__ACCESS = 279, + PG_QUERY__TOKEN__ACTION = 280, + PG_QUERY__TOKEN__ADD_P = 281, + PG_QUERY__TOKEN__ADMIN = 282, + PG_QUERY__TOKEN__AFTER = 283, + PG_QUERY__TOKEN__AGGREGATE = 284, + PG_QUERY__TOKEN__ALL = 285, + PG_QUERY__TOKEN__ALSO = 286, + PG_QUERY__TOKEN__ALTER = 287, + PG_QUERY__TOKEN__ALWAYS = 288, + PG_QUERY__TOKEN__ANALYSE = 289, + PG_QUERY__TOKEN__ANALYZE = 290, + PG_QUERY__TOKEN__AND = 291, + PG_QUERY__TOKEN__ANY = 292, + PG_QUERY__TOKEN__ARRAY = 293, + PG_QUERY__TOKEN__AS = 294, + PG_QUERY__TOKEN__ASC = 295, + PG_QUERY__TOKEN__ASSERTION = 296, + PG_QUERY__TOKEN__ASSIGNMENT = 297, + PG_QUERY__TOKEN__ASYMMETRIC = 298, + PG_QUERY__TOKEN__AT = 299, + PG_QUERY__TOKEN__ATTACH = 300, + PG_QUERY__TOKEN__ATTRIBUTE = 301, + PG_QUERY__TOKEN__AUTHORIZATION = 302, + PG_QUERY__TOKEN__BACKWARD = 303, + PG_QUERY__TOKEN__BEFORE = 304, + PG_QUERY__TOKEN__BEGIN_P = 305, + PG_QUERY__TOKEN__BETWEEN = 306, + PG_QUERY__TOKEN__BIGINT = 307, + PG_QUERY__TOKEN__BINARY = 308, + PG_QUERY__TOKEN__BIT = 309, + PG_QUERY__TOKEN__BOOLEAN_P = 310, + PG_QUERY__TOKEN__BOTH = 311, + PG_QUERY__TOKEN__BY = 312, + PG_QUERY__TOKEN__CACHE = 313, + PG_QUERY__TOKEN__CALL = 314, + PG_QUERY__TOKEN__CALLED = 315, + PG_QUERY__TOKEN__CASCADE = 316, + PG_QUERY__TOKEN__CASCADED = 317, + PG_QUERY__TOKEN__CASE = 318, + PG_QUERY__TOKEN__CAST = 319, + PG_QUERY__TOKEN__CATALOG_P = 320, + PG_QUERY__TOKEN__CHAIN = 321, + PG_QUERY__TOKEN__CHAR_P = 322, + PG_QUERY__TOKEN__CHARACTER = 323, + PG_QUERY__TOKEN__CHARACTERISTICS = 324, + PG_QUERY__TOKEN__CHECK = 325, + PG_QUERY__TOKEN__CHECKPOINT = 326, + PG_QUERY__TOKEN__CLASS = 327, + PG_QUERY__TOKEN__CLOSE = 328, + PG_QUERY__TOKEN__CLUSTER = 329, + PG_QUERY__TOKEN__COALESCE = 330, + PG_QUERY__TOKEN__COLLATE = 331, + PG_QUERY__TOKEN__COLLATION = 332, + PG_QUERY__TOKEN__COLUMN = 333, + PG_QUERY__TOKEN__COLUMNS = 334, + PG_QUERY__TOKEN__COMMENT = 335, + PG_QUERY__TOKEN__COMMENTS = 336, + PG_QUERY__TOKEN__COMMIT = 337, + PG_QUERY__TOKEN__COMMITTED = 338, + PG_QUERY__TOKEN__CONCURRENTLY = 339, + PG_QUERY__TOKEN__CONFIGURATION = 340, + PG_QUERY__TOKEN__CONFLICT = 341, + PG_QUERY__TOKEN__CONNECTION = 342, + PG_QUERY__TOKEN__CONSTRAINT = 343, + PG_QUERY__TOKEN__CONSTRAINTS = 344, + PG_QUERY__TOKEN__CONTENT_P = 345, + PG_QUERY__TOKEN__CONTINUE_P = 346, + PG_QUERY__TOKEN__CONVERSION_P = 347, + PG_QUERY__TOKEN__COPY = 348, + PG_QUERY__TOKEN__COST = 349, + PG_QUERY__TOKEN__CREATE = 350, + PG_QUERY__TOKEN__CROSS = 351, + PG_QUERY__TOKEN__CSV = 352, + PG_QUERY__TOKEN__CUBE = 353, + PG_QUERY__TOKEN__CURRENT_P = 354, + PG_QUERY__TOKEN__CURRENT_CATALOG = 355, + PG_QUERY__TOKEN__CURRENT_DATE = 356, + PG_QUERY__TOKEN__CURRENT_ROLE = 357, + PG_QUERY__TOKEN__CURRENT_SCHEMA = 358, + PG_QUERY__TOKEN__CURRENT_TIME = 359, + PG_QUERY__TOKEN__CURRENT_TIMESTAMP = 360, + PG_QUERY__TOKEN__CURRENT_USER = 361, + PG_QUERY__TOKEN__CURSOR = 362, + PG_QUERY__TOKEN__CYCLE = 363, + PG_QUERY__TOKEN__DATA_P = 364, + PG_QUERY__TOKEN__DATABASE = 365, + PG_QUERY__TOKEN__DAY_P = 366, + PG_QUERY__TOKEN__DEALLOCATE = 367, + PG_QUERY__TOKEN__DEC = 368, + PG_QUERY__TOKEN__DECIMAL_P = 369, + PG_QUERY__TOKEN__DECLARE = 370, + PG_QUERY__TOKEN__DEFAULT = 371, + PG_QUERY__TOKEN__DEFAULTS = 372, + PG_QUERY__TOKEN__DEFERRABLE = 373, + PG_QUERY__TOKEN__DEFERRED = 374, + PG_QUERY__TOKEN__DEFINER = 375, + PG_QUERY__TOKEN__DELETE_P = 376, + PG_QUERY__TOKEN__DELIMITER = 377, + PG_QUERY__TOKEN__DELIMITERS = 378, + PG_QUERY__TOKEN__DEPENDS = 379, + PG_QUERY__TOKEN__DESC = 380, + PG_QUERY__TOKEN__DETACH = 381, + PG_QUERY__TOKEN__DICTIONARY = 382, + PG_QUERY__TOKEN__DISABLE_P = 383, + PG_QUERY__TOKEN__DISCARD = 384, + PG_QUERY__TOKEN__DISTINCT = 385, + PG_QUERY__TOKEN__DO = 386, + PG_QUERY__TOKEN__DOCUMENT_P = 387, + PG_QUERY__TOKEN__DOMAIN_P = 388, + PG_QUERY__TOKEN__DOUBLE_P = 389, + PG_QUERY__TOKEN__DROP = 390, + PG_QUERY__TOKEN__EACH = 391, + PG_QUERY__TOKEN__ELSE = 392, + PG_QUERY__TOKEN__ENABLE_P = 393, + PG_QUERY__TOKEN__ENCODING = 394, + PG_QUERY__TOKEN__ENCRYPTED = 395, + PG_QUERY__TOKEN__END_P = 396, + PG_QUERY__TOKEN__ENUM_P = 397, + PG_QUERY__TOKEN__ESCAPE = 398, + PG_QUERY__TOKEN__EVENT = 399, + PG_QUERY__TOKEN__EXCEPT = 400, + PG_QUERY__TOKEN__EXCLUDE = 401, + PG_QUERY__TOKEN__EXCLUDING = 402, + PG_QUERY__TOKEN__EXCLUSIVE = 403, + PG_QUERY__TOKEN__EXECUTE = 404, + PG_QUERY__TOKEN__EXISTS = 405, + PG_QUERY__TOKEN__EXPLAIN = 406, + PG_QUERY__TOKEN__EXPRESSION = 407, + PG_QUERY__TOKEN__EXTENSION = 408, + PG_QUERY__TOKEN__EXTERNAL = 409, + PG_QUERY__TOKEN__EXTRACT = 410, + PG_QUERY__TOKEN__FALSE_P = 411, + PG_QUERY__TOKEN__FAMILY = 412, + PG_QUERY__TOKEN__FETCH = 413, + PG_QUERY__TOKEN__FILTER = 414, + PG_QUERY__TOKEN__FIRST_P = 415, + PG_QUERY__TOKEN__FLOAT_P = 416, + PG_QUERY__TOKEN__FOLLOWING = 417, + PG_QUERY__TOKEN__FOR = 418, + PG_QUERY__TOKEN__FORCE = 419, + PG_QUERY__TOKEN__FOREIGN = 420, + PG_QUERY__TOKEN__FORWARD = 421, + PG_QUERY__TOKEN__FREEZE = 422, + PG_QUERY__TOKEN__FROM = 423, + PG_QUERY__TOKEN__FULL = 424, + PG_QUERY__TOKEN__FUNCTION = 425, + PG_QUERY__TOKEN__FUNCTIONS = 426, + PG_QUERY__TOKEN__GENERATED = 427, + PG_QUERY__TOKEN__GLOBAL = 428, + PG_QUERY__TOKEN__GRANT = 429, + PG_QUERY__TOKEN__GRANTED = 430, + PG_QUERY__TOKEN__GREATEST = 431, + PG_QUERY__TOKEN__GROUP_P = 432, + PG_QUERY__TOKEN__GROUPING = 433, + PG_QUERY__TOKEN__GROUPS = 434, + PG_QUERY__TOKEN__HANDLER = 435, + PG_QUERY__TOKEN__HAVING = 436, + PG_QUERY__TOKEN__HEADER_P = 437, + PG_QUERY__TOKEN__HOLD = 438, + PG_QUERY__TOKEN__HOUR_P = 439, + PG_QUERY__TOKEN__IDENTITY_P = 440, + PG_QUERY__TOKEN__IF_P = 441, + PG_QUERY__TOKEN__ILIKE = 442, + PG_QUERY__TOKEN__IMMEDIATE = 443, + PG_QUERY__TOKEN__IMMUTABLE = 444, + PG_QUERY__TOKEN__IMPLICIT_P = 445, + PG_QUERY__TOKEN__IMPORT_P = 446, + PG_QUERY__TOKEN__IN_P = 447, + PG_QUERY__TOKEN__INCLUDE = 448, + PG_QUERY__TOKEN__INCLUDING = 449, + PG_QUERY__TOKEN__INCREMENT = 450, + PG_QUERY__TOKEN__INDEX = 451, + PG_QUERY__TOKEN__INDEXES = 452, + PG_QUERY__TOKEN__INHERIT = 453, + PG_QUERY__TOKEN__INHERITS = 454, + PG_QUERY__TOKEN__INITIALLY = 455, + PG_QUERY__TOKEN__INLINE_P = 456, + PG_QUERY__TOKEN__INNER_P = 457, + PG_QUERY__TOKEN__INOUT = 458, + PG_QUERY__TOKEN__INPUT_P = 459, + PG_QUERY__TOKEN__INSENSITIVE = 460, + PG_QUERY__TOKEN__INSERT = 461, + PG_QUERY__TOKEN__INSTEAD = 462, + PG_QUERY__TOKEN__INT_P = 463, + PG_QUERY__TOKEN__INTEGER = 464, + PG_QUERY__TOKEN__INTERSECT = 465, + PG_QUERY__TOKEN__INTERVAL = 466, + PG_QUERY__TOKEN__INTO = 467, + PG_QUERY__TOKEN__INVOKER = 468, + PG_QUERY__TOKEN__IS = 469, + PG_QUERY__TOKEN__ISNULL = 470, + PG_QUERY__TOKEN__ISOLATION = 471, + PG_QUERY__TOKEN__JOIN = 472, + PG_QUERY__TOKEN__KEY = 473, + PG_QUERY__TOKEN__LABEL = 474, + PG_QUERY__TOKEN__LANGUAGE = 475, + PG_QUERY__TOKEN__LARGE_P = 476, + PG_QUERY__TOKEN__LAST_P = 477, + PG_QUERY__TOKEN__LATERAL_P = 478, + PG_QUERY__TOKEN__LEADING = 479, + PG_QUERY__TOKEN__LEAKPROOF = 480, + PG_QUERY__TOKEN__LEAST = 481, + PG_QUERY__TOKEN__LEFT = 482, + PG_QUERY__TOKEN__LEVEL = 483, + PG_QUERY__TOKEN__LIKE = 484, + PG_QUERY__TOKEN__LIMIT = 485, + PG_QUERY__TOKEN__LISTEN = 486, + PG_QUERY__TOKEN__LOAD = 487, + PG_QUERY__TOKEN__LOCAL = 488, + PG_QUERY__TOKEN__LOCALTIME = 489, + PG_QUERY__TOKEN__LOCALTIMESTAMP = 490, + PG_QUERY__TOKEN__LOCATION = 491, + PG_QUERY__TOKEN__LOCK_P = 492, + PG_QUERY__TOKEN__LOCKED = 493, + PG_QUERY__TOKEN__LOGGED = 494, + PG_QUERY__TOKEN__MAPPING = 495, + PG_QUERY__TOKEN__MATCH = 496, + PG_QUERY__TOKEN__MATERIALIZED = 497, + PG_QUERY__TOKEN__MAXVALUE = 498, + PG_QUERY__TOKEN__METHOD = 499, + PG_QUERY__TOKEN__MINUTE_P = 500, + PG_QUERY__TOKEN__MINVALUE = 501, + PG_QUERY__TOKEN__MODE = 502, + PG_QUERY__TOKEN__MONTH_P = 503, + PG_QUERY__TOKEN__MOVE = 504, + PG_QUERY__TOKEN__NAME_P = 505, + PG_QUERY__TOKEN__NAMES = 506, + PG_QUERY__TOKEN__NATIONAL = 507, + PG_QUERY__TOKEN__NATURAL = 508, + PG_QUERY__TOKEN__NCHAR = 509, + PG_QUERY__TOKEN__NEW = 510, + PG_QUERY__TOKEN__NEXT = 511, + PG_QUERY__TOKEN__NFC = 512, + PG_QUERY__TOKEN__NFD = 513, + PG_QUERY__TOKEN__NFKC = 514, + PG_QUERY__TOKEN__NFKD = 515, + PG_QUERY__TOKEN__NO = 516, + PG_QUERY__TOKEN__NONE = 517, + PG_QUERY__TOKEN__NORMALIZE = 518, + PG_QUERY__TOKEN__NORMALIZED = 519, + PG_QUERY__TOKEN__NOT = 520, + PG_QUERY__TOKEN__NOTHING = 521, + PG_QUERY__TOKEN__NOTIFY = 522, + PG_QUERY__TOKEN__NOTNULL = 523, + PG_QUERY__TOKEN__NOWAIT = 524, + PG_QUERY__TOKEN__NULL_P = 525, + PG_QUERY__TOKEN__NULLIF = 526, + PG_QUERY__TOKEN__NULLS_P = 527, + PG_QUERY__TOKEN__NUMERIC = 528, + PG_QUERY__TOKEN__OBJECT_P = 529, + PG_QUERY__TOKEN__OF = 530, + PG_QUERY__TOKEN__OFF = 531, + PG_QUERY__TOKEN__OFFSET = 532, + PG_QUERY__TOKEN__OIDS = 533, + PG_QUERY__TOKEN__OLD = 534, + PG_QUERY__TOKEN__ON = 535, + PG_QUERY__TOKEN__ONLY = 536, + PG_QUERY__TOKEN__OPERATOR = 537, + PG_QUERY__TOKEN__OPTION = 538, + PG_QUERY__TOKEN__OPTIONS = 539, + PG_QUERY__TOKEN__OR = 540, + PG_QUERY__TOKEN__ORDER = 541, + PG_QUERY__TOKEN__ORDINALITY = 542, + PG_QUERY__TOKEN__OTHERS = 543, + PG_QUERY__TOKEN__OUT_P = 544, + PG_QUERY__TOKEN__OUTER_P = 545, + PG_QUERY__TOKEN__OVER = 546, + PG_QUERY__TOKEN__OVERLAPS = 547, + PG_QUERY__TOKEN__OVERLAY = 548, + PG_QUERY__TOKEN__OVERRIDING = 549, + PG_QUERY__TOKEN__OWNED = 550, + PG_QUERY__TOKEN__OWNER = 551, + PG_QUERY__TOKEN__PARALLEL = 552, + PG_QUERY__TOKEN__PARSER = 553, + PG_QUERY__TOKEN__PARTIAL = 554, + PG_QUERY__TOKEN__PARTITION = 555, + PG_QUERY__TOKEN__PASSING = 556, + PG_QUERY__TOKEN__PASSWORD = 557, + PG_QUERY__TOKEN__PLACING = 558, + PG_QUERY__TOKEN__PLANS = 559, + PG_QUERY__TOKEN__POLICY = 560, + PG_QUERY__TOKEN__POSITION = 561, + PG_QUERY__TOKEN__PRECEDING = 562, + PG_QUERY__TOKEN__PRECISION = 563, + PG_QUERY__TOKEN__PRESERVE = 564, + PG_QUERY__TOKEN__PREPARE = 565, + PG_QUERY__TOKEN__PREPARED = 566, + PG_QUERY__TOKEN__PRIMARY = 567, + PG_QUERY__TOKEN__PRIOR = 568, + PG_QUERY__TOKEN__PRIVILEGES = 569, + PG_QUERY__TOKEN__PROCEDURAL = 570, + PG_QUERY__TOKEN__PROCEDURE = 571, + PG_QUERY__TOKEN__PROCEDURES = 572, + PG_QUERY__TOKEN__PROGRAM = 573, + PG_QUERY__TOKEN__PUBLICATION = 574, + PG_QUERY__TOKEN__QUOTE = 575, + PG_QUERY__TOKEN__RANGE = 576, + PG_QUERY__TOKEN__READ = 577, + PG_QUERY__TOKEN__REAL = 578, + PG_QUERY__TOKEN__REASSIGN = 579, + PG_QUERY__TOKEN__RECHECK = 580, + PG_QUERY__TOKEN__RECURSIVE = 581, + PG_QUERY__TOKEN__REF = 582, + PG_QUERY__TOKEN__REFERENCES = 583, + PG_QUERY__TOKEN__REFERENCING = 584, + PG_QUERY__TOKEN__REFRESH = 585, + PG_QUERY__TOKEN__REINDEX = 586, + PG_QUERY__TOKEN__RELATIVE_P = 587, + PG_QUERY__TOKEN__RELEASE = 588, + PG_QUERY__TOKEN__RENAME = 589, + PG_QUERY__TOKEN__REPEATABLE = 590, + PG_QUERY__TOKEN__REPLACE = 591, + PG_QUERY__TOKEN__REPLICA = 592, + PG_QUERY__TOKEN__RESET = 593, + PG_QUERY__TOKEN__RESTART = 594, + PG_QUERY__TOKEN__RESTRICT = 595, + PG_QUERY__TOKEN__RETURNING = 596, + PG_QUERY__TOKEN__RETURNS = 597, + PG_QUERY__TOKEN__REVOKE = 598, + PG_QUERY__TOKEN__RIGHT = 599, + PG_QUERY__TOKEN__ROLE = 600, + PG_QUERY__TOKEN__ROLLBACK = 601, + PG_QUERY__TOKEN__ROLLUP = 602, + PG_QUERY__TOKEN__ROUTINE = 603, + PG_QUERY__TOKEN__ROUTINES = 604, + PG_QUERY__TOKEN__ROW = 605, + PG_QUERY__TOKEN__ROWS = 606, + PG_QUERY__TOKEN__RULE = 607, + PG_QUERY__TOKEN__SAVEPOINT = 608, + PG_QUERY__TOKEN__SCHEMA = 609, + PG_QUERY__TOKEN__SCHEMAS = 610, + PG_QUERY__TOKEN__SCROLL = 611, + PG_QUERY__TOKEN__SEARCH = 612, + PG_QUERY__TOKEN__SECOND_P = 613, + PG_QUERY__TOKEN__SECURITY = 614, + PG_QUERY__TOKEN__SELECT = 615, + PG_QUERY__TOKEN__SEQUENCE = 616, + PG_QUERY__TOKEN__SEQUENCES = 617, + PG_QUERY__TOKEN__SERIALIZABLE = 618, + PG_QUERY__TOKEN__SERVER = 619, + PG_QUERY__TOKEN__SESSION = 620, + PG_QUERY__TOKEN__SESSION_USER = 621, + PG_QUERY__TOKEN__SET = 622, + PG_QUERY__TOKEN__SETS = 623, + PG_QUERY__TOKEN__SETOF = 624, + PG_QUERY__TOKEN__SHARE = 625, + PG_QUERY__TOKEN__SHOW = 626, + PG_QUERY__TOKEN__SIMILAR = 627, + PG_QUERY__TOKEN__SIMPLE = 628, + PG_QUERY__TOKEN__SKIP = 629, + PG_QUERY__TOKEN__SMALLINT = 630, + PG_QUERY__TOKEN__SNAPSHOT = 631, + PG_QUERY__TOKEN__SOME = 632, + PG_QUERY__TOKEN__SQL_P = 633, + PG_QUERY__TOKEN__STABLE = 634, + PG_QUERY__TOKEN__STANDALONE_P = 635, + PG_QUERY__TOKEN__START = 636, + PG_QUERY__TOKEN__STATEMENT = 637, + PG_QUERY__TOKEN__STATISTICS = 638, + PG_QUERY__TOKEN__STDIN = 639, + PG_QUERY__TOKEN__STDOUT = 640, + PG_QUERY__TOKEN__STORAGE = 641, + PG_QUERY__TOKEN__STORED = 642, + PG_QUERY__TOKEN__STRICT_P = 643, + PG_QUERY__TOKEN__STRIP_P = 644, + PG_QUERY__TOKEN__SUBSCRIPTION = 645, + PG_QUERY__TOKEN__SUBSTRING = 646, + PG_QUERY__TOKEN__SUPPORT = 647, + PG_QUERY__TOKEN__SYMMETRIC = 648, + PG_QUERY__TOKEN__SYSID = 649, + PG_QUERY__TOKEN__SYSTEM_P = 650, + PG_QUERY__TOKEN__TABLE = 651, + PG_QUERY__TOKEN__TABLES = 652, + PG_QUERY__TOKEN__TABLESAMPLE = 653, + PG_QUERY__TOKEN__TABLESPACE = 654, + PG_QUERY__TOKEN__TEMP = 655, + PG_QUERY__TOKEN__TEMPLATE = 656, + PG_QUERY__TOKEN__TEMPORARY = 657, + PG_QUERY__TOKEN__TEXT_P = 658, + PG_QUERY__TOKEN__THEN = 659, + PG_QUERY__TOKEN__TIES = 660, + PG_QUERY__TOKEN__TIME = 661, + PG_QUERY__TOKEN__TIMESTAMP = 662, + PG_QUERY__TOKEN__TO = 663, + PG_QUERY__TOKEN__TRAILING = 664, + PG_QUERY__TOKEN__TRANSACTION = 665, + PG_QUERY__TOKEN__TRANSFORM = 666, + PG_QUERY__TOKEN__TREAT = 667, + PG_QUERY__TOKEN__TRIGGER = 668, + PG_QUERY__TOKEN__TRIM = 669, + PG_QUERY__TOKEN__TRUE_P = 670, + PG_QUERY__TOKEN__TRUNCATE = 671, + PG_QUERY__TOKEN__TRUSTED = 672, + PG_QUERY__TOKEN__TYPE_P = 673, + PG_QUERY__TOKEN__TYPES_P = 674, + PG_QUERY__TOKEN__UESCAPE = 675, + PG_QUERY__TOKEN__UNBOUNDED = 676, + PG_QUERY__TOKEN__UNCOMMITTED = 677, + PG_QUERY__TOKEN__UNENCRYPTED = 678, + PG_QUERY__TOKEN__UNION = 679, + PG_QUERY__TOKEN__UNIQUE = 680, + PG_QUERY__TOKEN__UNKNOWN = 681, + PG_QUERY__TOKEN__UNLISTEN = 682, + PG_QUERY__TOKEN__UNLOGGED = 683, + PG_QUERY__TOKEN__UNTIL = 684, + PG_QUERY__TOKEN__UPDATE = 685, + PG_QUERY__TOKEN__USER = 686, + PG_QUERY__TOKEN__USING = 687, + PG_QUERY__TOKEN__VACUUM = 688, + PG_QUERY__TOKEN__VALID = 689, + PG_QUERY__TOKEN__VALIDATE = 690, + PG_QUERY__TOKEN__VALIDATOR = 691, + PG_QUERY__TOKEN__VALUE_P = 692, + PG_QUERY__TOKEN__VALUES = 693, + PG_QUERY__TOKEN__VARCHAR = 694, + PG_QUERY__TOKEN__VARIADIC = 695, + PG_QUERY__TOKEN__VARYING = 696, + PG_QUERY__TOKEN__VERBOSE = 697, + PG_QUERY__TOKEN__VERSION_P = 698, + PG_QUERY__TOKEN__VIEW = 699, + PG_QUERY__TOKEN__VIEWS = 700, + PG_QUERY__TOKEN__VOLATILE = 701, + PG_QUERY__TOKEN__WHEN = 702, + PG_QUERY__TOKEN__WHERE = 703, + PG_QUERY__TOKEN__WHITESPACE_P = 704, + PG_QUERY__TOKEN__WINDOW = 705, + PG_QUERY__TOKEN__WITH = 706, + PG_QUERY__TOKEN__WITHIN = 707, + PG_QUERY__TOKEN__WITHOUT = 708, + PG_QUERY__TOKEN__WORK = 709, + PG_QUERY__TOKEN__WRAPPER = 710, + PG_QUERY__TOKEN__WRITE = 711, + PG_QUERY__TOKEN__XML_P = 712, + PG_QUERY__TOKEN__XMLATTRIBUTES = 713, + PG_QUERY__TOKEN__XMLCONCAT = 714, + PG_QUERY__TOKEN__XMLELEMENT = 715, + PG_QUERY__TOKEN__XMLEXISTS = 716, + PG_QUERY__TOKEN__XMLFOREST = 717, + PG_QUERY__TOKEN__XMLNAMESPACES = 718, + PG_QUERY__TOKEN__XMLPARSE = 719, + PG_QUERY__TOKEN__XMLPI = 720, + PG_QUERY__TOKEN__XMLROOT = 721, + PG_QUERY__TOKEN__XMLSERIALIZE = 722, + PG_QUERY__TOKEN__XMLTABLE = 723, + PG_QUERY__TOKEN__YEAR_P = 724, + PG_QUERY__TOKEN__YES_P = 725, + PG_QUERY__TOKEN__ZONE = 726, + PG_QUERY__TOKEN__NOT_LA = 727, + PG_QUERY__TOKEN__NULLS_LA = 728, + PG_QUERY__TOKEN__WITH_LA = 729, + PG_QUERY__TOKEN__POSTFIXOP = 730, + PG_QUERY__TOKEN__UMINUS = 731 + PROTOBUF_C__FORCE_ENUM_TO_BE_INT_SIZE(PG_QUERY__TOKEN) +} PgQuery__Token; + +/* --- messages --- */ + +struct _PgQuery__ParseResult +{ + ProtobufCMessage base; + int32_t version; + size_t n_stmts; + PgQuery__RawStmt **stmts; +}; +#define PG_QUERY__PARSE_RESULT__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&pg_query__parse_result__descriptor) \ + , 0, 0,NULL } + + +struct _PgQuery__ScanResult +{ + ProtobufCMessage base; + int32_t version; + size_t n_tokens; + PgQuery__ScanToken **tokens; +}; +#define PG_QUERY__SCAN_RESULT__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&pg_query__scan_result__descriptor) \ + , 0, 0,NULL } + + +typedef enum { + PG_QUERY__NODE__NODE__NOT_SET = 0, + PG_QUERY__NODE__NODE_ALIAS = 1, + PG_QUERY__NODE__NODE_RANGE_VAR = 2, + PG_QUERY__NODE__NODE_TABLE_FUNC = 3, + PG_QUERY__NODE__NODE_EXPR = 4, + PG_QUERY__NODE__NODE_VAR = 5, + PG_QUERY__NODE__NODE_PARAM = 6, + PG_QUERY__NODE__NODE_AGGREF = 7, + PG_QUERY__NODE__NODE_GROUPING_FUNC = 8, + PG_QUERY__NODE__NODE_WINDOW_FUNC = 9, + PG_QUERY__NODE__NODE_SUBSCRIPTING_REF = 10, + PG_QUERY__NODE__NODE_FUNC_EXPR = 11, + PG_QUERY__NODE__NODE_NAMED_ARG_EXPR = 12, + PG_QUERY__NODE__NODE_OP_EXPR = 13, + PG_QUERY__NODE__NODE_DISTINCT_EXPR = 14, + PG_QUERY__NODE__NODE_NULL_IF_EXPR = 15, + PG_QUERY__NODE__NODE_SCALAR_ARRAY_OP_EXPR = 16, + PG_QUERY__NODE__NODE_BOOL_EXPR = 17, + PG_QUERY__NODE__NODE_SUB_LINK = 18, + PG_QUERY__NODE__NODE_SUB_PLAN = 19, + PG_QUERY__NODE__NODE_ALTERNATIVE_SUB_PLAN = 20, + PG_QUERY__NODE__NODE_FIELD_SELECT = 21, + PG_QUERY__NODE__NODE_FIELD_STORE = 22, + PG_QUERY__NODE__NODE_RELABEL_TYPE = 23, + PG_QUERY__NODE__NODE_COERCE_VIA_IO = 24, + PG_QUERY__NODE__NODE_ARRAY_COERCE_EXPR = 25, + PG_QUERY__NODE__NODE_CONVERT_ROWTYPE_EXPR = 26, + PG_QUERY__NODE__NODE_COLLATE_EXPR = 27, + PG_QUERY__NODE__NODE_CASE_EXPR = 28, + PG_QUERY__NODE__NODE_CASE_WHEN = 29, + PG_QUERY__NODE__NODE_CASE_TEST_EXPR = 30, + PG_QUERY__NODE__NODE_ARRAY_EXPR = 31, + PG_QUERY__NODE__NODE_ROW_EXPR = 32, + PG_QUERY__NODE__NODE_ROW_COMPARE_EXPR = 33, + PG_QUERY__NODE__NODE_COALESCE_EXPR = 34, + PG_QUERY__NODE__NODE_MIN_MAX_EXPR = 35, + PG_QUERY__NODE__NODE_SQLVALUE_FUNCTION = 36, + PG_QUERY__NODE__NODE_XML_EXPR = 37, + PG_QUERY__NODE__NODE_NULL_TEST = 38, + PG_QUERY__NODE__NODE_BOOLEAN_TEST = 39, + PG_QUERY__NODE__NODE_COERCE_TO_DOMAIN = 40, + PG_QUERY__NODE__NODE_COERCE_TO_DOMAIN_VALUE = 41, + PG_QUERY__NODE__NODE_SET_TO_DEFAULT = 42, + PG_QUERY__NODE__NODE_CURRENT_OF_EXPR = 43, + PG_QUERY__NODE__NODE_NEXT_VALUE_EXPR = 44, + PG_QUERY__NODE__NODE_INFERENCE_ELEM = 45, + PG_QUERY__NODE__NODE_TARGET_ENTRY = 46, + PG_QUERY__NODE__NODE_RANGE_TBL_REF = 47, + PG_QUERY__NODE__NODE_JOIN_EXPR = 48, + PG_QUERY__NODE__NODE_FROM_EXPR = 49, + PG_QUERY__NODE__NODE_ON_CONFLICT_EXPR = 50, + PG_QUERY__NODE__NODE_INTO_CLAUSE = 51, + PG_QUERY__NODE__NODE_RAW_STMT = 52, + PG_QUERY__NODE__NODE_QUERY = 53, + PG_QUERY__NODE__NODE_INSERT_STMT = 54, + PG_QUERY__NODE__NODE_DELETE_STMT = 55, + PG_QUERY__NODE__NODE_UPDATE_STMT = 56, + PG_QUERY__NODE__NODE_SELECT_STMT = 57, + PG_QUERY__NODE__NODE_ALTER_TABLE_STMT = 58, + PG_QUERY__NODE__NODE_ALTER_TABLE_CMD = 59, + PG_QUERY__NODE__NODE_ALTER_DOMAIN_STMT = 60, + PG_QUERY__NODE__NODE_SET_OPERATION_STMT = 61, + PG_QUERY__NODE__NODE_GRANT_STMT = 62, + PG_QUERY__NODE__NODE_GRANT_ROLE_STMT = 63, + PG_QUERY__NODE__NODE_ALTER_DEFAULT_PRIVILEGES_STMT = 64, + PG_QUERY__NODE__NODE_CLOSE_PORTAL_STMT = 65, + PG_QUERY__NODE__NODE_CLUSTER_STMT = 66, + PG_QUERY__NODE__NODE_COPY_STMT = 67, + PG_QUERY__NODE__NODE_CREATE_STMT = 68, + PG_QUERY__NODE__NODE_DEFINE_STMT = 69, + PG_QUERY__NODE__NODE_DROP_STMT = 70, + PG_QUERY__NODE__NODE_TRUNCATE_STMT = 71, + PG_QUERY__NODE__NODE_COMMENT_STMT = 72, + PG_QUERY__NODE__NODE_FETCH_STMT = 73, + PG_QUERY__NODE__NODE_INDEX_STMT = 74, + PG_QUERY__NODE__NODE_CREATE_FUNCTION_STMT = 75, + PG_QUERY__NODE__NODE_ALTER_FUNCTION_STMT = 76, + PG_QUERY__NODE__NODE_DO_STMT = 77, + PG_QUERY__NODE__NODE_RENAME_STMT = 78, + PG_QUERY__NODE__NODE_RULE_STMT = 79, + PG_QUERY__NODE__NODE_NOTIFY_STMT = 80, + PG_QUERY__NODE__NODE_LISTEN_STMT = 81, + PG_QUERY__NODE__NODE_UNLISTEN_STMT = 82, + PG_QUERY__NODE__NODE_TRANSACTION_STMT = 83, + PG_QUERY__NODE__NODE_VIEW_STMT = 84, + PG_QUERY__NODE__NODE_LOAD_STMT = 85, + PG_QUERY__NODE__NODE_CREATE_DOMAIN_STMT = 86, + PG_QUERY__NODE__NODE_CREATEDB_STMT = 87, + PG_QUERY__NODE__NODE_DROPDB_STMT = 88, + PG_QUERY__NODE__NODE_VACUUM_STMT = 89, + PG_QUERY__NODE__NODE_EXPLAIN_STMT = 90, + PG_QUERY__NODE__NODE_CREATE_TABLE_AS_STMT = 91, + PG_QUERY__NODE__NODE_CREATE_SEQ_STMT = 92, + PG_QUERY__NODE__NODE_ALTER_SEQ_STMT = 93, + PG_QUERY__NODE__NODE_VARIABLE_SET_STMT = 94, + PG_QUERY__NODE__NODE_VARIABLE_SHOW_STMT = 95, + PG_QUERY__NODE__NODE_DISCARD_STMT = 96, + PG_QUERY__NODE__NODE_CREATE_TRIG_STMT = 97, + PG_QUERY__NODE__NODE_CREATE_PLANG_STMT = 98, + PG_QUERY__NODE__NODE_CREATE_ROLE_STMT = 99, + PG_QUERY__NODE__NODE_ALTER_ROLE_STMT = 100, + PG_QUERY__NODE__NODE_DROP_ROLE_STMT = 101, + PG_QUERY__NODE__NODE_LOCK_STMT = 102, + PG_QUERY__NODE__NODE_CONSTRAINTS_SET_STMT = 103, + PG_QUERY__NODE__NODE_REINDEX_STMT = 104, + PG_QUERY__NODE__NODE_CHECK_POINT_STMT = 105, + PG_QUERY__NODE__NODE_CREATE_SCHEMA_STMT = 106, + PG_QUERY__NODE__NODE_ALTER_DATABASE_STMT = 107, + PG_QUERY__NODE__NODE_ALTER_DATABASE_SET_STMT = 108, + PG_QUERY__NODE__NODE_ALTER_ROLE_SET_STMT = 109, + PG_QUERY__NODE__NODE_CREATE_CONVERSION_STMT = 110, + PG_QUERY__NODE__NODE_CREATE_CAST_STMT = 111, + PG_QUERY__NODE__NODE_CREATE_OP_CLASS_STMT = 112, + PG_QUERY__NODE__NODE_CREATE_OP_FAMILY_STMT = 113, + PG_QUERY__NODE__NODE_ALTER_OP_FAMILY_STMT = 114, + PG_QUERY__NODE__NODE_PREPARE_STMT = 115, + PG_QUERY__NODE__NODE_EXECUTE_STMT = 116, + PG_QUERY__NODE__NODE_DEALLOCATE_STMT = 117, + PG_QUERY__NODE__NODE_DECLARE_CURSOR_STMT = 118, + PG_QUERY__NODE__NODE_CREATE_TABLE_SPACE_STMT = 119, + PG_QUERY__NODE__NODE_DROP_TABLE_SPACE_STMT = 120, + PG_QUERY__NODE__NODE_ALTER_OBJECT_DEPENDS_STMT = 121, + PG_QUERY__NODE__NODE_ALTER_OBJECT_SCHEMA_STMT = 122, + PG_QUERY__NODE__NODE_ALTER_OWNER_STMT = 123, + PG_QUERY__NODE__NODE_ALTER_OPERATOR_STMT = 124, + PG_QUERY__NODE__NODE_ALTER_TYPE_STMT = 125, + PG_QUERY__NODE__NODE_DROP_OWNED_STMT = 126, + PG_QUERY__NODE__NODE_REASSIGN_OWNED_STMT = 127, + PG_QUERY__NODE__NODE_COMPOSITE_TYPE_STMT = 128, + PG_QUERY__NODE__NODE_CREATE_ENUM_STMT = 129, + PG_QUERY__NODE__NODE_CREATE_RANGE_STMT = 130, + PG_QUERY__NODE__NODE_ALTER_ENUM_STMT = 131, + PG_QUERY__NODE__NODE_ALTER_TSDICTIONARY_STMT = 132, + PG_QUERY__NODE__NODE_ALTER_TSCONFIGURATION_STMT = 133, + PG_QUERY__NODE__NODE_CREATE_FDW_STMT = 134, + PG_QUERY__NODE__NODE_ALTER_FDW_STMT = 135, + PG_QUERY__NODE__NODE_CREATE_FOREIGN_SERVER_STMT = 136, + PG_QUERY__NODE__NODE_ALTER_FOREIGN_SERVER_STMT = 137, + PG_QUERY__NODE__NODE_CREATE_USER_MAPPING_STMT = 138, + PG_QUERY__NODE__NODE_ALTER_USER_MAPPING_STMT = 139, + PG_QUERY__NODE__NODE_DROP_USER_MAPPING_STMT = 140, + PG_QUERY__NODE__NODE_ALTER_TABLE_SPACE_OPTIONS_STMT = 141, + PG_QUERY__NODE__NODE_ALTER_TABLE_MOVE_ALL_STMT = 142, + PG_QUERY__NODE__NODE_SEC_LABEL_STMT = 143, + PG_QUERY__NODE__NODE_CREATE_FOREIGN_TABLE_STMT = 144, + PG_QUERY__NODE__NODE_IMPORT_FOREIGN_SCHEMA_STMT = 145, + PG_QUERY__NODE__NODE_CREATE_EXTENSION_STMT = 146, + PG_QUERY__NODE__NODE_ALTER_EXTENSION_STMT = 147, + PG_QUERY__NODE__NODE_ALTER_EXTENSION_CONTENTS_STMT = 148, + PG_QUERY__NODE__NODE_CREATE_EVENT_TRIG_STMT = 149, + PG_QUERY__NODE__NODE_ALTER_EVENT_TRIG_STMT = 150, + PG_QUERY__NODE__NODE_REFRESH_MAT_VIEW_STMT = 151, + PG_QUERY__NODE__NODE_REPLICA_IDENTITY_STMT = 152, + PG_QUERY__NODE__NODE_ALTER_SYSTEM_STMT = 153, + PG_QUERY__NODE__NODE_CREATE_POLICY_STMT = 154, + PG_QUERY__NODE__NODE_ALTER_POLICY_STMT = 155, + PG_QUERY__NODE__NODE_CREATE_TRANSFORM_STMT = 156, + PG_QUERY__NODE__NODE_CREATE_AM_STMT = 157, + PG_QUERY__NODE__NODE_CREATE_PUBLICATION_STMT = 158, + PG_QUERY__NODE__NODE_ALTER_PUBLICATION_STMT = 159, + PG_QUERY__NODE__NODE_CREATE_SUBSCRIPTION_STMT = 160, + PG_QUERY__NODE__NODE_ALTER_SUBSCRIPTION_STMT = 161, + PG_QUERY__NODE__NODE_DROP_SUBSCRIPTION_STMT = 162, + PG_QUERY__NODE__NODE_CREATE_STATS_STMT = 163, + PG_QUERY__NODE__NODE_ALTER_COLLATION_STMT = 164, + PG_QUERY__NODE__NODE_CALL_STMT = 165, + PG_QUERY__NODE__NODE_ALTER_STATS_STMT = 166, + PG_QUERY__NODE__NODE_A_EXPR = 167, + PG_QUERY__NODE__NODE_COLUMN_REF = 168, + PG_QUERY__NODE__NODE_PARAM_REF = 169, + PG_QUERY__NODE__NODE_A_CONST = 170, + PG_QUERY__NODE__NODE_FUNC_CALL = 171, + PG_QUERY__NODE__NODE_A_STAR = 172, + PG_QUERY__NODE__NODE_A_INDICES = 173, + PG_QUERY__NODE__NODE_A_INDIRECTION = 174, + PG_QUERY__NODE__NODE_A_ARRAY_EXPR = 175, + PG_QUERY__NODE__NODE_RES_TARGET = 176, + PG_QUERY__NODE__NODE_MULTI_ASSIGN_REF = 177, + PG_QUERY__NODE__NODE_TYPE_CAST = 178, + PG_QUERY__NODE__NODE_COLLATE_CLAUSE = 179, + PG_QUERY__NODE__NODE_SORT_BY = 180, + PG_QUERY__NODE__NODE_WINDOW_DEF = 181, + PG_QUERY__NODE__NODE_RANGE_SUBSELECT = 182, + PG_QUERY__NODE__NODE_RANGE_FUNCTION = 183, + PG_QUERY__NODE__NODE_RANGE_TABLE_SAMPLE = 184, + PG_QUERY__NODE__NODE_RANGE_TABLE_FUNC = 185, + PG_QUERY__NODE__NODE_RANGE_TABLE_FUNC_COL = 186, + PG_QUERY__NODE__NODE_TYPE_NAME = 187, + PG_QUERY__NODE__NODE_COLUMN_DEF = 188, + PG_QUERY__NODE__NODE_INDEX_ELEM = 189, + PG_QUERY__NODE__NODE_CONSTRAINT = 190, + PG_QUERY__NODE__NODE_DEF_ELEM = 191, + PG_QUERY__NODE__NODE_RANGE_TBL_ENTRY = 192, + PG_QUERY__NODE__NODE_RANGE_TBL_FUNCTION = 193, + PG_QUERY__NODE__NODE_TABLE_SAMPLE_CLAUSE = 194, + PG_QUERY__NODE__NODE_WITH_CHECK_OPTION = 195, + PG_QUERY__NODE__NODE_SORT_GROUP_CLAUSE = 196, + PG_QUERY__NODE__NODE_GROUPING_SET = 197, + PG_QUERY__NODE__NODE_WINDOW_CLAUSE = 198, + PG_QUERY__NODE__NODE_OBJECT_WITH_ARGS = 199, + PG_QUERY__NODE__NODE_ACCESS_PRIV = 200, + PG_QUERY__NODE__NODE_CREATE_OP_CLASS_ITEM = 201, + PG_QUERY__NODE__NODE_TABLE_LIKE_CLAUSE = 202, + PG_QUERY__NODE__NODE_FUNCTION_PARAMETER = 203, + PG_QUERY__NODE__NODE_LOCKING_CLAUSE = 204, + PG_QUERY__NODE__NODE_ROW_MARK_CLAUSE = 205, + PG_QUERY__NODE__NODE_XML_SERIALIZE = 206, + PG_QUERY__NODE__NODE_WITH_CLAUSE = 207, + PG_QUERY__NODE__NODE_INFER_CLAUSE = 208, + PG_QUERY__NODE__NODE_ON_CONFLICT_CLAUSE = 209, + PG_QUERY__NODE__NODE_COMMON_TABLE_EXPR = 210, + PG_QUERY__NODE__NODE_ROLE_SPEC = 211, + PG_QUERY__NODE__NODE_TRIGGER_TRANSITION = 212, + PG_QUERY__NODE__NODE_PARTITION_ELEM = 213, + PG_QUERY__NODE__NODE_PARTITION_SPEC = 214, + PG_QUERY__NODE__NODE_PARTITION_BOUND_SPEC = 215, + PG_QUERY__NODE__NODE_PARTITION_RANGE_DATUM = 216, + PG_QUERY__NODE__NODE_PARTITION_CMD = 217, + PG_QUERY__NODE__NODE_VACUUM_RELATION = 218, + PG_QUERY__NODE__NODE_INLINE_CODE_BLOCK = 219, + PG_QUERY__NODE__NODE_CALL_CONTEXT = 220, + PG_QUERY__NODE__NODE_INTEGER = 221, + PG_QUERY__NODE__NODE_FLOAT = 222, + PG_QUERY__NODE__NODE_STRING = 223, + PG_QUERY__NODE__NODE_BIT_STRING = 224, + PG_QUERY__NODE__NODE_NULL = 225, + PG_QUERY__NODE__NODE_LIST = 226, + PG_QUERY__NODE__NODE_INT_LIST = 227, + PG_QUERY__NODE__NODE_OID_LIST = 228 + PROTOBUF_C__FORCE_ENUM_TO_BE_INT_SIZE(PG_QUERY__NODE__NODE) +} PgQuery__Node__NodeCase; + +struct _PgQuery__Node +{ + ProtobufCMessage base; + PgQuery__Node__NodeCase node_case; + union { + PgQuery__Alias *alias; + PgQuery__RangeVar *range_var; + PgQuery__TableFunc *table_func; + PgQuery__Expr *expr; + PgQuery__Var *var; + PgQuery__Param *param; + PgQuery__Aggref *aggref; + PgQuery__GroupingFunc *grouping_func; + PgQuery__WindowFunc *window_func; + PgQuery__SubscriptingRef *subscripting_ref; + PgQuery__FuncExpr *func_expr; + PgQuery__NamedArgExpr *named_arg_expr; + PgQuery__OpExpr *op_expr; + PgQuery__DistinctExpr *distinct_expr; + PgQuery__NullIfExpr *null_if_expr; + PgQuery__ScalarArrayOpExpr *scalar_array_op_expr; + PgQuery__BoolExpr *bool_expr; + PgQuery__SubLink *sub_link; + PgQuery__SubPlan *sub_plan; + PgQuery__AlternativeSubPlan *alternative_sub_plan; + PgQuery__FieldSelect *field_select; + PgQuery__FieldStore *field_store; + PgQuery__RelabelType *relabel_type; + PgQuery__CoerceViaIO *coerce_via_io; + PgQuery__ArrayCoerceExpr *array_coerce_expr; + PgQuery__ConvertRowtypeExpr *convert_rowtype_expr; + PgQuery__CollateExpr *collate_expr; + PgQuery__CaseExpr *case_expr; + PgQuery__CaseWhen *case_when; + PgQuery__CaseTestExpr *case_test_expr; + PgQuery__ArrayExpr *array_expr; + PgQuery__RowExpr *row_expr; + PgQuery__RowCompareExpr *row_compare_expr; + PgQuery__CoalesceExpr *coalesce_expr; + PgQuery__MinMaxExpr *min_max_expr; + PgQuery__SQLValueFunction *sqlvalue_function; + PgQuery__XmlExpr *xml_expr; + PgQuery__NullTest *null_test; + PgQuery__BooleanTest *boolean_test; + PgQuery__CoerceToDomain *coerce_to_domain; + PgQuery__CoerceToDomainValue *coerce_to_domain_value; + PgQuery__SetToDefault *set_to_default; + PgQuery__CurrentOfExpr *current_of_expr; + PgQuery__NextValueExpr *next_value_expr; + PgQuery__InferenceElem *inference_elem; + PgQuery__TargetEntry *target_entry; + PgQuery__RangeTblRef *range_tbl_ref; + PgQuery__JoinExpr *join_expr; + PgQuery__FromExpr *from_expr; + PgQuery__OnConflictExpr *on_conflict_expr; + PgQuery__IntoClause *into_clause; + PgQuery__RawStmt *raw_stmt; + PgQuery__Query *query; + PgQuery__InsertStmt *insert_stmt; + PgQuery__DeleteStmt *delete_stmt; + PgQuery__UpdateStmt *update_stmt; + PgQuery__SelectStmt *select_stmt; + PgQuery__AlterTableStmt *alter_table_stmt; + PgQuery__AlterTableCmd *alter_table_cmd; + PgQuery__AlterDomainStmt *alter_domain_stmt; + PgQuery__SetOperationStmt *set_operation_stmt; + PgQuery__GrantStmt *grant_stmt; + PgQuery__GrantRoleStmt *grant_role_stmt; + PgQuery__AlterDefaultPrivilegesStmt *alter_default_privileges_stmt; + PgQuery__ClosePortalStmt *close_portal_stmt; + PgQuery__ClusterStmt *cluster_stmt; + PgQuery__CopyStmt *copy_stmt; + PgQuery__CreateStmt *create_stmt; + PgQuery__DefineStmt *define_stmt; + PgQuery__DropStmt *drop_stmt; + PgQuery__TruncateStmt *truncate_stmt; + PgQuery__CommentStmt *comment_stmt; + PgQuery__FetchStmt *fetch_stmt; + PgQuery__IndexStmt *index_stmt; + PgQuery__CreateFunctionStmt *create_function_stmt; + PgQuery__AlterFunctionStmt *alter_function_stmt; + PgQuery__DoStmt *do_stmt; + PgQuery__RenameStmt *rename_stmt; + PgQuery__RuleStmt *rule_stmt; + PgQuery__NotifyStmt *notify_stmt; + PgQuery__ListenStmt *listen_stmt; + PgQuery__UnlistenStmt *unlisten_stmt; + PgQuery__TransactionStmt *transaction_stmt; + PgQuery__ViewStmt *view_stmt; + PgQuery__LoadStmt *load_stmt; + PgQuery__CreateDomainStmt *create_domain_stmt; + PgQuery__CreatedbStmt *createdb_stmt; + PgQuery__DropdbStmt *dropdb_stmt; + PgQuery__VacuumStmt *vacuum_stmt; + PgQuery__ExplainStmt *explain_stmt; + PgQuery__CreateTableAsStmt *create_table_as_stmt; + PgQuery__CreateSeqStmt *create_seq_stmt; + PgQuery__AlterSeqStmt *alter_seq_stmt; + PgQuery__VariableSetStmt *variable_set_stmt; + PgQuery__VariableShowStmt *variable_show_stmt; + PgQuery__DiscardStmt *discard_stmt; + PgQuery__CreateTrigStmt *create_trig_stmt; + PgQuery__CreatePLangStmt *create_plang_stmt; + PgQuery__CreateRoleStmt *create_role_stmt; + PgQuery__AlterRoleStmt *alter_role_stmt; + PgQuery__DropRoleStmt *drop_role_stmt; + PgQuery__LockStmt *lock_stmt; + PgQuery__ConstraintsSetStmt *constraints_set_stmt; + PgQuery__ReindexStmt *reindex_stmt; + PgQuery__CheckPointStmt *check_point_stmt; + PgQuery__CreateSchemaStmt *create_schema_stmt; + PgQuery__AlterDatabaseStmt *alter_database_stmt; + PgQuery__AlterDatabaseSetStmt *alter_database_set_stmt; + PgQuery__AlterRoleSetStmt *alter_role_set_stmt; + PgQuery__CreateConversionStmt *create_conversion_stmt; + PgQuery__CreateCastStmt *create_cast_stmt; + PgQuery__CreateOpClassStmt *create_op_class_stmt; + PgQuery__CreateOpFamilyStmt *create_op_family_stmt; + PgQuery__AlterOpFamilyStmt *alter_op_family_stmt; + PgQuery__PrepareStmt *prepare_stmt; + PgQuery__ExecuteStmt *execute_stmt; + PgQuery__DeallocateStmt *deallocate_stmt; + PgQuery__DeclareCursorStmt *declare_cursor_stmt; + PgQuery__CreateTableSpaceStmt *create_table_space_stmt; + PgQuery__DropTableSpaceStmt *drop_table_space_stmt; + PgQuery__AlterObjectDependsStmt *alter_object_depends_stmt; + PgQuery__AlterObjectSchemaStmt *alter_object_schema_stmt; + PgQuery__AlterOwnerStmt *alter_owner_stmt; + PgQuery__AlterOperatorStmt *alter_operator_stmt; + PgQuery__AlterTypeStmt *alter_type_stmt; + PgQuery__DropOwnedStmt *drop_owned_stmt; + PgQuery__ReassignOwnedStmt *reassign_owned_stmt; + PgQuery__CompositeTypeStmt *composite_type_stmt; + PgQuery__CreateEnumStmt *create_enum_stmt; + PgQuery__CreateRangeStmt *create_range_stmt; + PgQuery__AlterEnumStmt *alter_enum_stmt; + PgQuery__AlterTSDictionaryStmt *alter_tsdictionary_stmt; + PgQuery__AlterTSConfigurationStmt *alter_tsconfiguration_stmt; + PgQuery__CreateFdwStmt *create_fdw_stmt; + PgQuery__AlterFdwStmt *alter_fdw_stmt; + PgQuery__CreateForeignServerStmt *create_foreign_server_stmt; + PgQuery__AlterForeignServerStmt *alter_foreign_server_stmt; + PgQuery__CreateUserMappingStmt *create_user_mapping_stmt; + PgQuery__AlterUserMappingStmt *alter_user_mapping_stmt; + PgQuery__DropUserMappingStmt *drop_user_mapping_stmt; + PgQuery__AlterTableSpaceOptionsStmt *alter_table_space_options_stmt; + PgQuery__AlterTableMoveAllStmt *alter_table_move_all_stmt; + PgQuery__SecLabelStmt *sec_label_stmt; + PgQuery__CreateForeignTableStmt *create_foreign_table_stmt; + PgQuery__ImportForeignSchemaStmt *import_foreign_schema_stmt; + PgQuery__CreateExtensionStmt *create_extension_stmt; + PgQuery__AlterExtensionStmt *alter_extension_stmt; + PgQuery__AlterExtensionContentsStmt *alter_extension_contents_stmt; + PgQuery__CreateEventTrigStmt *create_event_trig_stmt; + PgQuery__AlterEventTrigStmt *alter_event_trig_stmt; + PgQuery__RefreshMatViewStmt *refresh_mat_view_stmt; + PgQuery__ReplicaIdentityStmt *replica_identity_stmt; + PgQuery__AlterSystemStmt *alter_system_stmt; + PgQuery__CreatePolicyStmt *create_policy_stmt; + PgQuery__AlterPolicyStmt *alter_policy_stmt; + PgQuery__CreateTransformStmt *create_transform_stmt; + PgQuery__CreateAmStmt *create_am_stmt; + PgQuery__CreatePublicationStmt *create_publication_stmt; + PgQuery__AlterPublicationStmt *alter_publication_stmt; + PgQuery__CreateSubscriptionStmt *create_subscription_stmt; + PgQuery__AlterSubscriptionStmt *alter_subscription_stmt; + PgQuery__DropSubscriptionStmt *drop_subscription_stmt; + PgQuery__CreateStatsStmt *create_stats_stmt; + PgQuery__AlterCollationStmt *alter_collation_stmt; + PgQuery__CallStmt *call_stmt; + PgQuery__AlterStatsStmt *alter_stats_stmt; + PgQuery__AExpr *a_expr; + PgQuery__ColumnRef *column_ref; + PgQuery__ParamRef *param_ref; + PgQuery__AConst *a_const; + PgQuery__FuncCall *func_call; + PgQuery__AStar *a_star; + PgQuery__AIndices *a_indices; + PgQuery__AIndirection *a_indirection; + PgQuery__AArrayExpr *a_array_expr; + PgQuery__ResTarget *res_target; + PgQuery__MultiAssignRef *multi_assign_ref; + PgQuery__TypeCast *type_cast; + PgQuery__CollateClause *collate_clause; + PgQuery__SortBy *sort_by; + PgQuery__WindowDef *window_def; + PgQuery__RangeSubselect *range_subselect; + PgQuery__RangeFunction *range_function; + PgQuery__RangeTableSample *range_table_sample; + PgQuery__RangeTableFunc *range_table_func; + PgQuery__RangeTableFuncCol *range_table_func_col; + PgQuery__TypeName *type_name; + PgQuery__ColumnDef *column_def; + PgQuery__IndexElem *index_elem; + PgQuery__Constraint *constraint; + PgQuery__DefElem *def_elem; + PgQuery__RangeTblEntry *range_tbl_entry; + PgQuery__RangeTblFunction *range_tbl_function; + PgQuery__TableSampleClause *table_sample_clause; + PgQuery__WithCheckOption *with_check_option; + PgQuery__SortGroupClause *sort_group_clause; + PgQuery__GroupingSet *grouping_set; + PgQuery__WindowClause *window_clause; + PgQuery__ObjectWithArgs *object_with_args; + PgQuery__AccessPriv *access_priv; + PgQuery__CreateOpClassItem *create_op_class_item; + PgQuery__TableLikeClause *table_like_clause; + PgQuery__FunctionParameter *function_parameter; + PgQuery__LockingClause *locking_clause; + PgQuery__RowMarkClause *row_mark_clause; + PgQuery__XmlSerialize *xml_serialize; + PgQuery__WithClause *with_clause; + PgQuery__InferClause *infer_clause; + PgQuery__OnConflictClause *on_conflict_clause; + PgQuery__CommonTableExpr *common_table_expr; + PgQuery__RoleSpec *role_spec; + PgQuery__TriggerTransition *trigger_transition; + PgQuery__PartitionElem *partition_elem; + PgQuery__PartitionSpec *partition_spec; + PgQuery__PartitionBoundSpec *partition_bound_spec; + PgQuery__PartitionRangeDatum *partition_range_datum; + PgQuery__PartitionCmd *partition_cmd; + PgQuery__VacuumRelation *vacuum_relation; + PgQuery__InlineCodeBlock *inline_code_block; + PgQuery__CallContext *call_context; + PgQuery__Integer *integer; + PgQuery__Float *float_; + PgQuery__String *string; + PgQuery__BitString *bit_string; + PgQuery__Null *null; + PgQuery__List *list; + PgQuery__IntList *int_list; + PgQuery__OidList *oid_list; + }; +}; +#define PG_QUERY__NODE__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&pg_query__node__descriptor) \ + , PG_QUERY__NODE__NODE__NOT_SET, {0} } + + +struct _PgQuery__Integer +{ + ProtobufCMessage base; + /* + * machine integer + */ + int32_t ival; +}; +#define PG_QUERY__INTEGER__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&pg_query__integer__descriptor) \ + , 0 } + + +struct _PgQuery__Float +{ + ProtobufCMessage base; + /* + * string + */ + char *str; +}; +#define PG_QUERY__FLOAT__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&pg_query__float__descriptor) \ + , (char *)protobuf_c_empty_string } + + +struct _PgQuery__String +{ + ProtobufCMessage base; + /* + * string + */ + char *str; +}; +#define PG_QUERY__STRING__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&pg_query__string__descriptor) \ + , (char *)protobuf_c_empty_string } + + +struct _PgQuery__BitString +{ + ProtobufCMessage base; + /* + * string + */ + char *str; +}; +#define PG_QUERY__BIT_STRING__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&pg_query__bit_string__descriptor) \ + , (char *)protobuf_c_empty_string } + + +struct _PgQuery__Null +{ + ProtobufCMessage base; +}; +#define PG_QUERY__NULL__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&pg_query__null__descriptor) \ + } + + +struct _PgQuery__List +{ + ProtobufCMessage base; + size_t n_items; + PgQuery__Node **items; +}; +#define PG_QUERY__LIST__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&pg_query__list__descriptor) \ + , 0,NULL } + + +struct _PgQuery__OidList +{ + ProtobufCMessage base; + size_t n_items; + PgQuery__Node **items; +}; +#define PG_QUERY__OID_LIST__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&pg_query__oid_list__descriptor) \ + , 0,NULL } + + +struct _PgQuery__IntList +{ + ProtobufCMessage base; + size_t n_items; + PgQuery__Node **items; +}; +#define PG_QUERY__INT_LIST__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&pg_query__int_list__descriptor) \ + , 0,NULL } + + +struct _PgQuery__Alias +{ + ProtobufCMessage base; + char *aliasname; + size_t n_colnames; + PgQuery__Node **colnames; +}; +#define PG_QUERY__ALIAS__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&pg_query__alias__descriptor) \ + , (char *)protobuf_c_empty_string, 0,NULL } + + +struct _PgQuery__RangeVar +{ + ProtobufCMessage base; + char *catalogname; + char *schemaname; + char *relname; + protobuf_c_boolean inh; + char *relpersistence; + PgQuery__Alias *alias; + int32_t location; +}; +#define PG_QUERY__RANGE_VAR__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&pg_query__range_var__descriptor) \ + , (char *)protobuf_c_empty_string, (char *)protobuf_c_empty_string, (char *)protobuf_c_empty_string, 0, (char *)protobuf_c_empty_string, NULL, 0 } + + +struct _PgQuery__TableFunc +{ + ProtobufCMessage base; + size_t n_ns_uris; + PgQuery__Node **ns_uris; + size_t n_ns_names; + PgQuery__Node **ns_names; + PgQuery__Node *docexpr; + PgQuery__Node *rowexpr; + size_t n_colnames; + PgQuery__Node **colnames; + size_t n_coltypes; + PgQuery__Node **coltypes; + size_t n_coltypmods; + PgQuery__Node **coltypmods; + size_t n_colcollations; + PgQuery__Node **colcollations; + size_t n_colexprs; + PgQuery__Node **colexprs; + size_t n_coldefexprs; + PgQuery__Node **coldefexprs; + size_t n_notnulls; + uint64_t *notnulls; + int32_t ordinalitycol; + int32_t location; +}; +#define PG_QUERY__TABLE_FUNC__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&pg_query__table_func__descriptor) \ + , 0,NULL, 0,NULL, NULL, NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0, 0 } + + +struct _PgQuery__Expr +{ + ProtobufCMessage base; +}; +#define PG_QUERY__EXPR__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&pg_query__expr__descriptor) \ + } + + +struct _PgQuery__Var +{ + ProtobufCMessage base; + PgQuery__Node *xpr; + uint32_t varno; + int32_t varattno; + uint32_t vartype; + int32_t vartypmod; + uint32_t varcollid; + uint32_t varlevelsup; + uint32_t varnosyn; + int32_t varattnosyn; + int32_t location; +}; +#define PG_QUERY__VAR__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&pg_query__var__descriptor) \ + , NULL, 0, 0, 0, 0, 0, 0, 0, 0, 0 } + + +struct _PgQuery__Param +{ + ProtobufCMessage base; + PgQuery__Node *xpr; + PgQuery__ParamKind paramkind; + int32_t paramid; + uint32_t paramtype; + int32_t paramtypmod; + uint32_t paramcollid; + int32_t location; +}; +#define PG_QUERY__PARAM__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&pg_query__param__descriptor) \ + , NULL, PG_QUERY__PARAM_KIND__PARAM_KIND_UNDEFINED, 0, 0, 0, 0, 0 } + + +struct _PgQuery__Aggref +{ + ProtobufCMessage base; + PgQuery__Node *xpr; + uint32_t aggfnoid; + uint32_t aggtype; + uint32_t aggcollid; + uint32_t inputcollid; + uint32_t aggtranstype; + size_t n_aggargtypes; + PgQuery__Node **aggargtypes; + size_t n_aggdirectargs; + PgQuery__Node **aggdirectargs; + size_t n_args; + PgQuery__Node **args; + size_t n_aggorder; + PgQuery__Node **aggorder; + size_t n_aggdistinct; + PgQuery__Node **aggdistinct; + PgQuery__Node *aggfilter; + protobuf_c_boolean aggstar; + protobuf_c_boolean aggvariadic; + char *aggkind; + uint32_t agglevelsup; + PgQuery__AggSplit aggsplit; + int32_t location; +}; +#define PG_QUERY__AGGREF__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&pg_query__aggref__descriptor) \ + , NULL, 0, 0, 0, 0, 0, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, NULL, 0, 0, (char *)protobuf_c_empty_string, 0, PG_QUERY__AGG_SPLIT__AGG_SPLIT_UNDEFINED, 0 } + + +struct _PgQuery__GroupingFunc +{ + ProtobufCMessage base; + PgQuery__Node *xpr; + size_t n_args; + PgQuery__Node **args; + size_t n_refs; + PgQuery__Node **refs; + size_t n_cols; + PgQuery__Node **cols; + uint32_t agglevelsup; + int32_t location; +}; +#define PG_QUERY__GROUPING_FUNC__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&pg_query__grouping_func__descriptor) \ + , NULL, 0,NULL, 0,NULL, 0,NULL, 0, 0 } + + +struct _PgQuery__WindowFunc +{ + ProtobufCMessage base; + PgQuery__Node *xpr; + uint32_t winfnoid; + uint32_t wintype; + uint32_t wincollid; + uint32_t inputcollid; + size_t n_args; + PgQuery__Node **args; + PgQuery__Node *aggfilter; + uint32_t winref; + protobuf_c_boolean winstar; + protobuf_c_boolean winagg; + int32_t location; +}; +#define PG_QUERY__WINDOW_FUNC__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&pg_query__window_func__descriptor) \ + , NULL, 0, 0, 0, 0, 0,NULL, NULL, 0, 0, 0, 0 } + + +struct _PgQuery__SubscriptingRef +{ + ProtobufCMessage base; + PgQuery__Node *xpr; + uint32_t refcontainertype; + uint32_t refelemtype; + int32_t reftypmod; + uint32_t refcollid; + size_t n_refupperindexpr; + PgQuery__Node **refupperindexpr; + size_t n_reflowerindexpr; + PgQuery__Node **reflowerindexpr; + PgQuery__Node *refexpr; + PgQuery__Node *refassgnexpr; +}; +#define PG_QUERY__SUBSCRIPTING_REF__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&pg_query__subscripting_ref__descriptor) \ + , NULL, 0, 0, 0, 0, 0,NULL, 0,NULL, NULL, NULL } + + +struct _PgQuery__FuncExpr +{ + ProtobufCMessage base; + PgQuery__Node *xpr; + uint32_t funcid; + uint32_t funcresulttype; + protobuf_c_boolean funcretset; + protobuf_c_boolean funcvariadic; + PgQuery__CoercionForm funcformat; + uint32_t funccollid; + uint32_t inputcollid; + size_t n_args; + PgQuery__Node **args; + int32_t location; +}; +#define PG_QUERY__FUNC_EXPR__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&pg_query__func_expr__descriptor) \ + , NULL, 0, 0, 0, 0, PG_QUERY__COERCION_FORM__COERCION_FORM_UNDEFINED, 0, 0, 0,NULL, 0 } + + +struct _PgQuery__NamedArgExpr +{ + ProtobufCMessage base; + PgQuery__Node *xpr; + PgQuery__Node *arg; + char *name; + int32_t argnumber; + int32_t location; +}; +#define PG_QUERY__NAMED_ARG_EXPR__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&pg_query__named_arg_expr__descriptor) \ + , NULL, NULL, (char *)protobuf_c_empty_string, 0, 0 } + + +struct _PgQuery__OpExpr +{ + ProtobufCMessage base; + PgQuery__Node *xpr; + uint32_t opno; + uint32_t opfuncid; + uint32_t opresulttype; + protobuf_c_boolean opretset; + uint32_t opcollid; + uint32_t inputcollid; + size_t n_args; + PgQuery__Node **args; + int32_t location; +}; +#define PG_QUERY__OP_EXPR__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&pg_query__op_expr__descriptor) \ + , NULL, 0, 0, 0, 0, 0, 0, 0,NULL, 0 } + + +struct _PgQuery__DistinctExpr +{ + ProtobufCMessage base; + PgQuery__Node *xpr; + uint32_t opno; + uint32_t opfuncid; + uint32_t opresulttype; + protobuf_c_boolean opretset; + uint32_t opcollid; + uint32_t inputcollid; + size_t n_args; + PgQuery__Node **args; + int32_t location; +}; +#define PG_QUERY__DISTINCT_EXPR__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&pg_query__distinct_expr__descriptor) \ + , NULL, 0, 0, 0, 0, 0, 0, 0,NULL, 0 } + + +struct _PgQuery__NullIfExpr +{ + ProtobufCMessage base; + PgQuery__Node *xpr; + uint32_t opno; + uint32_t opfuncid; + uint32_t opresulttype; + protobuf_c_boolean opretset; + uint32_t opcollid; + uint32_t inputcollid; + size_t n_args; + PgQuery__Node **args; + int32_t location; +}; +#define PG_QUERY__NULL_IF_EXPR__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&pg_query__null_if_expr__descriptor) \ + , NULL, 0, 0, 0, 0, 0, 0, 0,NULL, 0 } + + +struct _PgQuery__ScalarArrayOpExpr +{ + ProtobufCMessage base; + PgQuery__Node *xpr; + uint32_t opno; + uint32_t opfuncid; + protobuf_c_boolean use_or; + uint32_t inputcollid; + size_t n_args; + PgQuery__Node **args; + int32_t location; +}; +#define PG_QUERY__SCALAR_ARRAY_OP_EXPR__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&pg_query__scalar_array_op_expr__descriptor) \ + , NULL, 0, 0, 0, 0, 0,NULL, 0 } + + +struct _PgQuery__BoolExpr +{ + ProtobufCMessage base; + PgQuery__Node *xpr; + PgQuery__BoolExprType boolop; + size_t n_args; + PgQuery__Node **args; + int32_t location; +}; +#define PG_QUERY__BOOL_EXPR__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&pg_query__bool_expr__descriptor) \ + , NULL, PG_QUERY__BOOL_EXPR_TYPE__BOOL_EXPR_TYPE_UNDEFINED, 0,NULL, 0 } + + +struct _PgQuery__SubLink +{ + ProtobufCMessage base; + PgQuery__Node *xpr; + PgQuery__SubLinkType sub_link_type; + int32_t sub_link_id; + PgQuery__Node *testexpr; + size_t n_oper_name; + PgQuery__Node **oper_name; + PgQuery__Node *subselect; + int32_t location; +}; +#define PG_QUERY__SUB_LINK__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&pg_query__sub_link__descriptor) \ + , NULL, PG_QUERY__SUB_LINK_TYPE__SUB_LINK_TYPE_UNDEFINED, 0, NULL, 0,NULL, NULL, 0 } + + +struct _PgQuery__SubPlan +{ + ProtobufCMessage base; + PgQuery__Node *xpr; + PgQuery__SubLinkType sub_link_type; + PgQuery__Node *testexpr; + size_t n_param_ids; + PgQuery__Node **param_ids; + int32_t plan_id; + char *plan_name; + uint32_t first_col_type; + int32_t first_col_typmod; + uint32_t first_col_collation; + protobuf_c_boolean use_hash_table; + protobuf_c_boolean unknown_eq_false; + protobuf_c_boolean parallel_safe; + size_t n_set_param; + PgQuery__Node **set_param; + size_t n_par_param; + PgQuery__Node **par_param; + size_t n_args; + PgQuery__Node **args; + double startup_cost; + double per_call_cost; +}; +#define PG_QUERY__SUB_PLAN__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&pg_query__sub_plan__descriptor) \ + , NULL, PG_QUERY__SUB_LINK_TYPE__SUB_LINK_TYPE_UNDEFINED, NULL, 0,NULL, 0, (char *)protobuf_c_empty_string, 0, 0, 0, 0, 0, 0, 0,NULL, 0,NULL, 0,NULL, 0, 0 } + + +struct _PgQuery__AlternativeSubPlan +{ + ProtobufCMessage base; + PgQuery__Node *xpr; + size_t n_subplans; + PgQuery__Node **subplans; +}; +#define PG_QUERY__ALTERNATIVE_SUB_PLAN__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&pg_query__alternative_sub_plan__descriptor) \ + , NULL, 0,NULL } + + +struct _PgQuery__FieldSelect +{ + ProtobufCMessage base; + PgQuery__Node *xpr; + PgQuery__Node *arg; + int32_t fieldnum; + uint32_t resulttype; + int32_t resulttypmod; + uint32_t resultcollid; +}; +#define PG_QUERY__FIELD_SELECT__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&pg_query__field_select__descriptor) \ + , NULL, NULL, 0, 0, 0, 0 } + + +struct _PgQuery__FieldStore +{ + ProtobufCMessage base; + PgQuery__Node *xpr; + PgQuery__Node *arg; + size_t n_newvals; + PgQuery__Node **newvals; + size_t n_fieldnums; + PgQuery__Node **fieldnums; + uint32_t resulttype; +}; +#define PG_QUERY__FIELD_STORE__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&pg_query__field_store__descriptor) \ + , NULL, NULL, 0,NULL, 0,NULL, 0 } + + +struct _PgQuery__RelabelType +{ + ProtobufCMessage base; + PgQuery__Node *xpr; + PgQuery__Node *arg; + uint32_t resulttype; + int32_t resulttypmod; + uint32_t resultcollid; + PgQuery__CoercionForm relabelformat; + int32_t location; +}; +#define PG_QUERY__RELABEL_TYPE__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&pg_query__relabel_type__descriptor) \ + , NULL, NULL, 0, 0, 0, PG_QUERY__COERCION_FORM__COERCION_FORM_UNDEFINED, 0 } + + +struct _PgQuery__CoerceViaIO +{ + ProtobufCMessage base; + PgQuery__Node *xpr; + PgQuery__Node *arg; + uint32_t resulttype; + uint32_t resultcollid; + PgQuery__CoercionForm coerceformat; + int32_t location; +}; +#define PG_QUERY__COERCE_VIA_IO__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&pg_query__coerce_via_io__descriptor) \ + , NULL, NULL, 0, 0, PG_QUERY__COERCION_FORM__COERCION_FORM_UNDEFINED, 0 } + + +struct _PgQuery__ArrayCoerceExpr +{ + ProtobufCMessage base; + PgQuery__Node *xpr; + PgQuery__Node *arg; + PgQuery__Node *elemexpr; + uint32_t resulttype; + int32_t resulttypmod; + uint32_t resultcollid; + PgQuery__CoercionForm coerceformat; + int32_t location; +}; +#define PG_QUERY__ARRAY_COERCE_EXPR__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&pg_query__array_coerce_expr__descriptor) \ + , NULL, NULL, NULL, 0, 0, 0, PG_QUERY__COERCION_FORM__COERCION_FORM_UNDEFINED, 0 } + + +struct _PgQuery__ConvertRowtypeExpr +{ + ProtobufCMessage base; + PgQuery__Node *xpr; + PgQuery__Node *arg; + uint32_t resulttype; + PgQuery__CoercionForm convertformat; + int32_t location; +}; +#define PG_QUERY__CONVERT_ROWTYPE_EXPR__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&pg_query__convert_rowtype_expr__descriptor) \ + , NULL, NULL, 0, PG_QUERY__COERCION_FORM__COERCION_FORM_UNDEFINED, 0 } + + +struct _PgQuery__CollateExpr +{ + ProtobufCMessage base; + PgQuery__Node *xpr; + PgQuery__Node *arg; + uint32_t coll_oid; + int32_t location; +}; +#define PG_QUERY__COLLATE_EXPR__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&pg_query__collate_expr__descriptor) \ + , NULL, NULL, 0, 0 } + + +struct _PgQuery__CaseExpr +{ + ProtobufCMessage base; + PgQuery__Node *xpr; + uint32_t casetype; + uint32_t casecollid; + PgQuery__Node *arg; + size_t n_args; + PgQuery__Node **args; + PgQuery__Node *defresult; + int32_t location; +}; +#define PG_QUERY__CASE_EXPR__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&pg_query__case_expr__descriptor) \ + , NULL, 0, 0, NULL, 0,NULL, NULL, 0 } + + +struct _PgQuery__CaseWhen +{ + ProtobufCMessage base; + PgQuery__Node *xpr; + PgQuery__Node *expr; + PgQuery__Node *result; + int32_t location; +}; +#define PG_QUERY__CASE_WHEN__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&pg_query__case_when__descriptor) \ + , NULL, NULL, NULL, 0 } + + +struct _PgQuery__CaseTestExpr +{ + ProtobufCMessage base; + PgQuery__Node *xpr; + uint32_t type_id; + int32_t type_mod; + uint32_t collation; +}; +#define PG_QUERY__CASE_TEST_EXPR__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&pg_query__case_test_expr__descriptor) \ + , NULL, 0, 0, 0 } + + +struct _PgQuery__ArrayExpr +{ + ProtobufCMessage base; + PgQuery__Node *xpr; + uint32_t array_typeid; + uint32_t array_collid; + uint32_t element_typeid; + size_t n_elements; + PgQuery__Node **elements; + protobuf_c_boolean multidims; + int32_t location; +}; +#define PG_QUERY__ARRAY_EXPR__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&pg_query__array_expr__descriptor) \ + , NULL, 0, 0, 0, 0,NULL, 0, 0 } + + +struct _PgQuery__RowExpr +{ + ProtobufCMessage base; + PgQuery__Node *xpr; + size_t n_args; + PgQuery__Node **args; + uint32_t row_typeid; + PgQuery__CoercionForm row_format; + size_t n_colnames; + PgQuery__Node **colnames; + int32_t location; +}; +#define PG_QUERY__ROW_EXPR__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&pg_query__row_expr__descriptor) \ + , NULL, 0,NULL, 0, PG_QUERY__COERCION_FORM__COERCION_FORM_UNDEFINED, 0,NULL, 0 } + + +struct _PgQuery__RowCompareExpr +{ + ProtobufCMessage base; + PgQuery__Node *xpr; + PgQuery__RowCompareType rctype; + size_t n_opnos; + PgQuery__Node **opnos; + size_t n_opfamilies; + PgQuery__Node **opfamilies; + size_t n_inputcollids; + PgQuery__Node **inputcollids; + size_t n_largs; + PgQuery__Node **largs; + size_t n_rargs; + PgQuery__Node **rargs; +}; +#define PG_QUERY__ROW_COMPARE_EXPR__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&pg_query__row_compare_expr__descriptor) \ + , NULL, PG_QUERY__ROW_COMPARE_TYPE__ROW_COMPARE_TYPE_UNDEFINED, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL } + + +struct _PgQuery__CoalesceExpr +{ + ProtobufCMessage base; + PgQuery__Node *xpr; + uint32_t coalescetype; + uint32_t coalescecollid; + size_t n_args; + PgQuery__Node **args; + int32_t location; +}; +#define PG_QUERY__COALESCE_EXPR__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&pg_query__coalesce_expr__descriptor) \ + , NULL, 0, 0, 0,NULL, 0 } + + +struct _PgQuery__MinMaxExpr +{ + ProtobufCMessage base; + PgQuery__Node *xpr; + uint32_t minmaxtype; + uint32_t minmaxcollid; + uint32_t inputcollid; + PgQuery__MinMaxOp op; + size_t n_args; + PgQuery__Node **args; + int32_t location; +}; +#define PG_QUERY__MIN_MAX_EXPR__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&pg_query__min_max_expr__descriptor) \ + , NULL, 0, 0, 0, PG_QUERY__MIN_MAX_OP__MIN_MAX_OP_UNDEFINED, 0,NULL, 0 } + + +struct _PgQuery__SQLValueFunction +{ + ProtobufCMessage base; + PgQuery__Node *xpr; + PgQuery__SQLValueFunctionOp op; + uint32_t type; + int32_t typmod; + int32_t location; +}; +#define PG_QUERY__SQLVALUE_FUNCTION__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&pg_query__sqlvalue_function__descriptor) \ + , NULL, PG_QUERY__SQLVALUE_FUNCTION_OP__SQLVALUE_FUNCTION_OP_UNDEFINED, 0, 0, 0 } + + +struct _PgQuery__XmlExpr +{ + ProtobufCMessage base; + PgQuery__Node *xpr; + PgQuery__XmlExprOp op; + char *name; + size_t n_named_args; + PgQuery__Node **named_args; + size_t n_arg_names; + PgQuery__Node **arg_names; + size_t n_args; + PgQuery__Node **args; + PgQuery__XmlOptionType xmloption; + uint32_t type; + int32_t typmod; + int32_t location; +}; +#define PG_QUERY__XML_EXPR__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&pg_query__xml_expr__descriptor) \ + , NULL, PG_QUERY__XML_EXPR_OP__XML_EXPR_OP_UNDEFINED, (char *)protobuf_c_empty_string, 0,NULL, 0,NULL, 0,NULL, PG_QUERY__XML_OPTION_TYPE__XML_OPTION_TYPE_UNDEFINED, 0, 0, 0 } + + +struct _PgQuery__NullTest +{ + ProtobufCMessage base; + PgQuery__Node *xpr; + PgQuery__Node *arg; + PgQuery__NullTestType nulltesttype; + protobuf_c_boolean argisrow; + int32_t location; +}; +#define PG_QUERY__NULL_TEST__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&pg_query__null_test__descriptor) \ + , NULL, NULL, PG_QUERY__NULL_TEST_TYPE__NULL_TEST_TYPE_UNDEFINED, 0, 0 } + + +struct _PgQuery__BooleanTest +{ + ProtobufCMessage base; + PgQuery__Node *xpr; + PgQuery__Node *arg; + PgQuery__BoolTestType booltesttype; + int32_t location; +}; +#define PG_QUERY__BOOLEAN_TEST__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&pg_query__boolean_test__descriptor) \ + , NULL, NULL, PG_QUERY__BOOL_TEST_TYPE__BOOL_TEST_TYPE_UNDEFINED, 0 } + + +struct _PgQuery__CoerceToDomain +{ + ProtobufCMessage base; + PgQuery__Node *xpr; + PgQuery__Node *arg; + uint32_t resulttype; + int32_t resulttypmod; + uint32_t resultcollid; + PgQuery__CoercionForm coercionformat; + int32_t location; +}; +#define PG_QUERY__COERCE_TO_DOMAIN__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&pg_query__coerce_to_domain__descriptor) \ + , NULL, NULL, 0, 0, 0, PG_QUERY__COERCION_FORM__COERCION_FORM_UNDEFINED, 0 } + + +struct _PgQuery__CoerceToDomainValue +{ + ProtobufCMessage base; + PgQuery__Node *xpr; + uint32_t type_id; + int32_t type_mod; + uint32_t collation; + int32_t location; +}; +#define PG_QUERY__COERCE_TO_DOMAIN_VALUE__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&pg_query__coerce_to_domain_value__descriptor) \ + , NULL, 0, 0, 0, 0 } + + +struct _PgQuery__SetToDefault +{ + ProtobufCMessage base; + PgQuery__Node *xpr; + uint32_t type_id; + int32_t type_mod; + uint32_t collation; + int32_t location; +}; +#define PG_QUERY__SET_TO_DEFAULT__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&pg_query__set_to_default__descriptor) \ + , NULL, 0, 0, 0, 0 } + + +struct _PgQuery__CurrentOfExpr +{ + ProtobufCMessage base; + PgQuery__Node *xpr; + uint32_t cvarno; + char *cursor_name; + int32_t cursor_param; +}; +#define PG_QUERY__CURRENT_OF_EXPR__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&pg_query__current_of_expr__descriptor) \ + , NULL, 0, (char *)protobuf_c_empty_string, 0 } + + +struct _PgQuery__NextValueExpr +{ + ProtobufCMessage base; + PgQuery__Node *xpr; + uint32_t seqid; + uint32_t type_id; +}; +#define PG_QUERY__NEXT_VALUE_EXPR__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&pg_query__next_value_expr__descriptor) \ + , NULL, 0, 0 } + + +struct _PgQuery__InferenceElem +{ + ProtobufCMessage base; + PgQuery__Node *xpr; + PgQuery__Node *expr; + uint32_t infercollid; + uint32_t inferopclass; +}; +#define PG_QUERY__INFERENCE_ELEM__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&pg_query__inference_elem__descriptor) \ + , NULL, NULL, 0, 0 } + + +struct _PgQuery__TargetEntry +{ + ProtobufCMessage base; + PgQuery__Node *xpr; + PgQuery__Node *expr; + int32_t resno; + char *resname; + uint32_t ressortgroupref; + uint32_t resorigtbl; + int32_t resorigcol; + protobuf_c_boolean resjunk; +}; +#define PG_QUERY__TARGET_ENTRY__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&pg_query__target_entry__descriptor) \ + , NULL, NULL, 0, (char *)protobuf_c_empty_string, 0, 0, 0, 0 } + + +struct _PgQuery__RangeTblRef +{ + ProtobufCMessage base; + int32_t rtindex; +}; +#define PG_QUERY__RANGE_TBL_REF__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&pg_query__range_tbl_ref__descriptor) \ + , 0 } + + +struct _PgQuery__JoinExpr +{ + ProtobufCMessage base; + PgQuery__JoinType jointype; + protobuf_c_boolean is_natural; + PgQuery__Node *larg; + PgQuery__Node *rarg; + size_t n_using_clause; + PgQuery__Node **using_clause; + PgQuery__Node *quals; + PgQuery__Alias *alias; + int32_t rtindex; +}; +#define PG_QUERY__JOIN_EXPR__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&pg_query__join_expr__descriptor) \ + , PG_QUERY__JOIN_TYPE__JOIN_TYPE_UNDEFINED, 0, NULL, NULL, 0,NULL, NULL, NULL, 0 } + + +struct _PgQuery__FromExpr +{ + ProtobufCMessage base; + size_t n_fromlist; + PgQuery__Node **fromlist; + PgQuery__Node *quals; +}; +#define PG_QUERY__FROM_EXPR__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&pg_query__from_expr__descriptor) \ + , 0,NULL, NULL } + + +struct _PgQuery__OnConflictExpr +{ + ProtobufCMessage base; + PgQuery__OnConflictAction action; + size_t n_arbiter_elems; + PgQuery__Node **arbiter_elems; + PgQuery__Node *arbiter_where; + uint32_t constraint; + size_t n_on_conflict_set; + PgQuery__Node **on_conflict_set; + PgQuery__Node *on_conflict_where; + int32_t excl_rel_index; + size_t n_excl_rel_tlist; + PgQuery__Node **excl_rel_tlist; +}; +#define PG_QUERY__ON_CONFLICT_EXPR__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&pg_query__on_conflict_expr__descriptor) \ + , PG_QUERY__ON_CONFLICT_ACTION__ON_CONFLICT_ACTION_UNDEFINED, 0,NULL, NULL, 0, 0,NULL, NULL, 0, 0,NULL } + + +struct _PgQuery__IntoClause +{ + ProtobufCMessage base; + PgQuery__RangeVar *rel; + size_t n_col_names; + PgQuery__Node **col_names; + char *access_method; + size_t n_options; + PgQuery__Node **options; + PgQuery__OnCommitAction on_commit; + char *table_space_name; + PgQuery__Node *view_query; + protobuf_c_boolean skip_data; +}; +#define PG_QUERY__INTO_CLAUSE__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&pg_query__into_clause__descriptor) \ + , NULL, 0,NULL, (char *)protobuf_c_empty_string, 0,NULL, PG_QUERY__ON_COMMIT_ACTION__ON_COMMIT_ACTION_UNDEFINED, (char *)protobuf_c_empty_string, NULL, 0 } + + +struct _PgQuery__RawStmt +{ + ProtobufCMessage base; + PgQuery__Node *stmt; + int32_t stmt_location; + int32_t stmt_len; +}; +#define PG_QUERY__RAW_STMT__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&pg_query__raw_stmt__descriptor) \ + , NULL, 0, 0 } + + +struct _PgQuery__Query +{ + ProtobufCMessage base; + PgQuery__CmdType command_type; + PgQuery__QuerySource query_source; + protobuf_c_boolean can_set_tag; + PgQuery__Node *utility_stmt; + int32_t result_relation; + protobuf_c_boolean has_aggs; + protobuf_c_boolean has_window_funcs; + protobuf_c_boolean has_target_srfs; + protobuf_c_boolean has_sub_links; + protobuf_c_boolean has_distinct_on; + protobuf_c_boolean has_recursive; + protobuf_c_boolean has_modifying_cte; + protobuf_c_boolean has_for_update; + protobuf_c_boolean has_row_security; + size_t n_cte_list; + PgQuery__Node **cte_list; + size_t n_rtable; + PgQuery__Node **rtable; + PgQuery__FromExpr *jointree; + size_t n_target_list; + PgQuery__Node **target_list; + PgQuery__OverridingKind override; + PgQuery__OnConflictExpr *on_conflict; + size_t n_returning_list; + PgQuery__Node **returning_list; + size_t n_group_clause; + PgQuery__Node **group_clause; + size_t n_grouping_sets; + PgQuery__Node **grouping_sets; + PgQuery__Node *having_qual; + size_t n_window_clause; + PgQuery__Node **window_clause; + size_t n_distinct_clause; + PgQuery__Node **distinct_clause; + size_t n_sort_clause; + PgQuery__Node **sort_clause; + PgQuery__Node *limit_offset; + PgQuery__Node *limit_count; + PgQuery__LimitOption limit_option; + size_t n_row_marks; + PgQuery__Node **row_marks; + PgQuery__Node *set_operations; + size_t n_constraint_deps; + PgQuery__Node **constraint_deps; + size_t n_with_check_options; + PgQuery__Node **with_check_options; + int32_t stmt_location; + int32_t stmt_len; +}; +#define PG_QUERY__QUERY__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&pg_query__query__descriptor) \ + , PG_QUERY__CMD_TYPE__CMD_TYPE_UNDEFINED, PG_QUERY__QUERY_SOURCE__QUERY_SOURCE_UNDEFINED, 0, NULL, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,NULL, 0,NULL, NULL, 0,NULL, PG_QUERY__OVERRIDING_KIND__OVERRIDING_KIND_UNDEFINED, NULL, 0,NULL, 0,NULL, 0,NULL, NULL, 0,NULL, 0,NULL, 0,NULL, NULL, NULL, PG_QUERY__LIMIT_OPTION__LIMIT_OPTION_UNDEFINED, 0,NULL, NULL, 0,NULL, 0,NULL, 0, 0 } + + +struct _PgQuery__InsertStmt +{ + ProtobufCMessage base; + PgQuery__RangeVar *relation; + size_t n_cols; + PgQuery__Node **cols; + PgQuery__Node *select_stmt; + PgQuery__OnConflictClause *on_conflict_clause; + size_t n_returning_list; + PgQuery__Node **returning_list; + PgQuery__WithClause *with_clause; + PgQuery__OverridingKind override; +}; +#define PG_QUERY__INSERT_STMT__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&pg_query__insert_stmt__descriptor) \ + , NULL, 0,NULL, NULL, NULL, 0,NULL, NULL, PG_QUERY__OVERRIDING_KIND__OVERRIDING_KIND_UNDEFINED } + + +struct _PgQuery__DeleteStmt +{ + ProtobufCMessage base; + PgQuery__RangeVar *relation; + size_t n_using_clause; + PgQuery__Node **using_clause; + PgQuery__Node *where_clause; + size_t n_returning_list; + PgQuery__Node **returning_list; + PgQuery__WithClause *with_clause; +}; +#define PG_QUERY__DELETE_STMT__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&pg_query__delete_stmt__descriptor) \ + , NULL, 0,NULL, NULL, 0,NULL, NULL } + + +struct _PgQuery__UpdateStmt +{ + ProtobufCMessage base; + PgQuery__RangeVar *relation; + size_t n_target_list; + PgQuery__Node **target_list; + PgQuery__Node *where_clause; + size_t n_from_clause; + PgQuery__Node **from_clause; + size_t n_returning_list; + PgQuery__Node **returning_list; + PgQuery__WithClause *with_clause; +}; +#define PG_QUERY__UPDATE_STMT__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&pg_query__update_stmt__descriptor) \ + , NULL, 0,NULL, NULL, 0,NULL, 0,NULL, NULL } + + +struct _PgQuery__SelectStmt +{ + ProtobufCMessage base; + size_t n_distinct_clause; + PgQuery__Node **distinct_clause; + PgQuery__IntoClause *into_clause; + size_t n_target_list; + PgQuery__Node **target_list; + size_t n_from_clause; + PgQuery__Node **from_clause; + PgQuery__Node *where_clause; + size_t n_group_clause; + PgQuery__Node **group_clause; + PgQuery__Node *having_clause; + size_t n_window_clause; + PgQuery__Node **window_clause; + size_t n_values_lists; + PgQuery__Node **values_lists; + size_t n_sort_clause; + PgQuery__Node **sort_clause; + PgQuery__Node *limit_offset; + PgQuery__Node *limit_count; + PgQuery__LimitOption limit_option; + size_t n_locking_clause; + PgQuery__Node **locking_clause; + PgQuery__WithClause *with_clause; + PgQuery__SetOperation op; + protobuf_c_boolean all; + PgQuery__SelectStmt *larg; + PgQuery__SelectStmt *rarg; +}; +#define PG_QUERY__SELECT_STMT__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&pg_query__select_stmt__descriptor) \ + , 0,NULL, NULL, 0,NULL, 0,NULL, NULL, 0,NULL, NULL, 0,NULL, 0,NULL, 0,NULL, NULL, NULL, PG_QUERY__LIMIT_OPTION__LIMIT_OPTION_UNDEFINED, 0,NULL, NULL, PG_QUERY__SET_OPERATION__SET_OPERATION_UNDEFINED, 0, NULL, NULL } + + +struct _PgQuery__AlterTableStmt +{ + ProtobufCMessage base; + PgQuery__RangeVar *relation; + size_t n_cmds; + PgQuery__Node **cmds; + PgQuery__ObjectType relkind; + protobuf_c_boolean missing_ok; +}; +#define PG_QUERY__ALTER_TABLE_STMT__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&pg_query__alter_table_stmt__descriptor) \ + , NULL, 0,NULL, PG_QUERY__OBJECT_TYPE__OBJECT_TYPE_UNDEFINED, 0 } + + +struct _PgQuery__AlterTableCmd +{ + ProtobufCMessage base; + PgQuery__AlterTableType subtype; + char *name; + int32_t num; + PgQuery__RoleSpec *newowner; + PgQuery__Node *def; + PgQuery__DropBehavior behavior; + protobuf_c_boolean missing_ok; +}; +#define PG_QUERY__ALTER_TABLE_CMD__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&pg_query__alter_table_cmd__descriptor) \ + , PG_QUERY__ALTER_TABLE_TYPE__ALTER_TABLE_TYPE_UNDEFINED, (char *)protobuf_c_empty_string, 0, NULL, NULL, PG_QUERY__DROP_BEHAVIOR__DROP_BEHAVIOR_UNDEFINED, 0 } + + +struct _PgQuery__AlterDomainStmt +{ + ProtobufCMessage base; + char *subtype; + size_t n_type_name; + PgQuery__Node **type_name; + char *name; + PgQuery__Node *def; + PgQuery__DropBehavior behavior; + protobuf_c_boolean missing_ok; +}; +#define PG_QUERY__ALTER_DOMAIN_STMT__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&pg_query__alter_domain_stmt__descriptor) \ + , (char *)protobuf_c_empty_string, 0,NULL, (char *)protobuf_c_empty_string, NULL, PG_QUERY__DROP_BEHAVIOR__DROP_BEHAVIOR_UNDEFINED, 0 } + + +struct _PgQuery__SetOperationStmt +{ + ProtobufCMessage base; + PgQuery__SetOperation op; + protobuf_c_boolean all; + PgQuery__Node *larg; + PgQuery__Node *rarg; + size_t n_col_types; + PgQuery__Node **col_types; + size_t n_col_typmods; + PgQuery__Node **col_typmods; + size_t n_col_collations; + PgQuery__Node **col_collations; + size_t n_group_clauses; + PgQuery__Node **group_clauses; +}; +#define PG_QUERY__SET_OPERATION_STMT__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&pg_query__set_operation_stmt__descriptor) \ + , PG_QUERY__SET_OPERATION__SET_OPERATION_UNDEFINED, 0, NULL, NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL } + + +struct _PgQuery__GrantStmt +{ + ProtobufCMessage base; + protobuf_c_boolean is_grant; + PgQuery__GrantTargetType targtype; + PgQuery__ObjectType objtype; + size_t n_objects; + PgQuery__Node **objects; + size_t n_privileges; + PgQuery__Node **privileges; + size_t n_grantees; + PgQuery__Node **grantees; + protobuf_c_boolean grant_option; + PgQuery__DropBehavior behavior; +}; +#define PG_QUERY__GRANT_STMT__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&pg_query__grant_stmt__descriptor) \ + , 0, PG_QUERY__GRANT_TARGET_TYPE__GRANT_TARGET_TYPE_UNDEFINED, PG_QUERY__OBJECT_TYPE__OBJECT_TYPE_UNDEFINED, 0,NULL, 0,NULL, 0,NULL, 0, PG_QUERY__DROP_BEHAVIOR__DROP_BEHAVIOR_UNDEFINED } + + +struct _PgQuery__GrantRoleStmt +{ + ProtobufCMessage base; + size_t n_granted_roles; + PgQuery__Node **granted_roles; + size_t n_grantee_roles; + PgQuery__Node **grantee_roles; + protobuf_c_boolean is_grant; + protobuf_c_boolean admin_opt; + PgQuery__RoleSpec *grantor; + PgQuery__DropBehavior behavior; +}; +#define PG_QUERY__GRANT_ROLE_STMT__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&pg_query__grant_role_stmt__descriptor) \ + , 0,NULL, 0,NULL, 0, 0, NULL, PG_QUERY__DROP_BEHAVIOR__DROP_BEHAVIOR_UNDEFINED } + + +struct _PgQuery__AlterDefaultPrivilegesStmt +{ + ProtobufCMessage base; + size_t n_options; + PgQuery__Node **options; + PgQuery__GrantStmt *action; +}; +#define PG_QUERY__ALTER_DEFAULT_PRIVILEGES_STMT__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&pg_query__alter_default_privileges_stmt__descriptor) \ + , 0,NULL, NULL } + + +struct _PgQuery__ClosePortalStmt +{ + ProtobufCMessage base; + char *portalname; +}; +#define PG_QUERY__CLOSE_PORTAL_STMT__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&pg_query__close_portal_stmt__descriptor) \ + , (char *)protobuf_c_empty_string } + + +struct _PgQuery__ClusterStmt +{ + ProtobufCMessage base; + PgQuery__RangeVar *relation; + char *indexname; + int32_t options; +}; +#define PG_QUERY__CLUSTER_STMT__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&pg_query__cluster_stmt__descriptor) \ + , NULL, (char *)protobuf_c_empty_string, 0 } + + +struct _PgQuery__CopyStmt +{ + ProtobufCMessage base; + PgQuery__RangeVar *relation; + PgQuery__Node *query; + size_t n_attlist; + PgQuery__Node **attlist; + protobuf_c_boolean is_from; + protobuf_c_boolean is_program; + char *filename; + size_t n_options; + PgQuery__Node **options; + PgQuery__Node *where_clause; +}; +#define PG_QUERY__COPY_STMT__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&pg_query__copy_stmt__descriptor) \ + , NULL, NULL, 0,NULL, 0, 0, (char *)protobuf_c_empty_string, 0,NULL, NULL } + + +struct _PgQuery__CreateStmt +{ + ProtobufCMessage base; + PgQuery__RangeVar *relation; + size_t n_table_elts; + PgQuery__Node **table_elts; + size_t n_inh_relations; + PgQuery__Node **inh_relations; + PgQuery__PartitionBoundSpec *partbound; + PgQuery__PartitionSpec *partspec; + PgQuery__TypeName *of_typename; + size_t n_constraints; + PgQuery__Node **constraints; + size_t n_options; + PgQuery__Node **options; + PgQuery__OnCommitAction oncommit; + char *tablespacename; + char *access_method; + protobuf_c_boolean if_not_exists; +}; +#define PG_QUERY__CREATE_STMT__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&pg_query__create_stmt__descriptor) \ + , NULL, 0,NULL, 0,NULL, NULL, NULL, NULL, 0,NULL, 0,NULL, PG_QUERY__ON_COMMIT_ACTION__ON_COMMIT_ACTION_UNDEFINED, (char *)protobuf_c_empty_string, (char *)protobuf_c_empty_string, 0 } + + +struct _PgQuery__DefineStmt +{ + ProtobufCMessage base; + PgQuery__ObjectType kind; + protobuf_c_boolean oldstyle; + size_t n_defnames; + PgQuery__Node **defnames; + size_t n_args; + PgQuery__Node **args; + size_t n_definition; + PgQuery__Node **definition; + protobuf_c_boolean if_not_exists; + protobuf_c_boolean replace; +}; +#define PG_QUERY__DEFINE_STMT__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&pg_query__define_stmt__descriptor) \ + , PG_QUERY__OBJECT_TYPE__OBJECT_TYPE_UNDEFINED, 0, 0,NULL, 0,NULL, 0,NULL, 0, 0 } + + +struct _PgQuery__DropStmt +{ + ProtobufCMessage base; + size_t n_objects; + PgQuery__Node **objects; + PgQuery__ObjectType remove_type; + PgQuery__DropBehavior behavior; + protobuf_c_boolean missing_ok; + protobuf_c_boolean concurrent; +}; +#define PG_QUERY__DROP_STMT__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&pg_query__drop_stmt__descriptor) \ + , 0,NULL, PG_QUERY__OBJECT_TYPE__OBJECT_TYPE_UNDEFINED, PG_QUERY__DROP_BEHAVIOR__DROP_BEHAVIOR_UNDEFINED, 0, 0 } + + +struct _PgQuery__TruncateStmt +{ + ProtobufCMessage base; + size_t n_relations; + PgQuery__Node **relations; + protobuf_c_boolean restart_seqs; + PgQuery__DropBehavior behavior; +}; +#define PG_QUERY__TRUNCATE_STMT__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&pg_query__truncate_stmt__descriptor) \ + , 0,NULL, 0, PG_QUERY__DROP_BEHAVIOR__DROP_BEHAVIOR_UNDEFINED } + + +struct _PgQuery__CommentStmt +{ + ProtobufCMessage base; + PgQuery__ObjectType objtype; + PgQuery__Node *object; + char *comment; +}; +#define PG_QUERY__COMMENT_STMT__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&pg_query__comment_stmt__descriptor) \ + , PG_QUERY__OBJECT_TYPE__OBJECT_TYPE_UNDEFINED, NULL, (char *)protobuf_c_empty_string } + + +struct _PgQuery__FetchStmt +{ + ProtobufCMessage base; + PgQuery__FetchDirection direction; + int64_t how_many; + char *portalname; + protobuf_c_boolean ismove; +}; +#define PG_QUERY__FETCH_STMT__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&pg_query__fetch_stmt__descriptor) \ + , PG_QUERY__FETCH_DIRECTION__FETCH_DIRECTION_UNDEFINED, 0, (char *)protobuf_c_empty_string, 0 } + + +struct _PgQuery__IndexStmt +{ + ProtobufCMessage base; + char *idxname; + PgQuery__RangeVar *relation; + char *access_method; + char *table_space; + size_t n_index_params; + PgQuery__Node **index_params; + size_t n_index_including_params; + PgQuery__Node **index_including_params; + size_t n_options; + PgQuery__Node **options; + PgQuery__Node *where_clause; + size_t n_exclude_op_names; + PgQuery__Node **exclude_op_names; + char *idxcomment; + uint32_t index_oid; + uint32_t old_node; + uint32_t old_create_subid; + uint32_t old_first_relfilenode_subid; + protobuf_c_boolean unique; + protobuf_c_boolean primary; + protobuf_c_boolean isconstraint; + protobuf_c_boolean deferrable; + protobuf_c_boolean initdeferred; + protobuf_c_boolean transformed; + protobuf_c_boolean concurrent; + protobuf_c_boolean if_not_exists; + protobuf_c_boolean reset_default_tblspc; +}; +#define PG_QUERY__INDEX_STMT__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&pg_query__index_stmt__descriptor) \ + , (char *)protobuf_c_empty_string, NULL, (char *)protobuf_c_empty_string, (char *)protobuf_c_empty_string, 0,NULL, 0,NULL, 0,NULL, NULL, 0,NULL, (char *)protobuf_c_empty_string, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } + + +struct _PgQuery__CreateFunctionStmt +{ + ProtobufCMessage base; + protobuf_c_boolean is_procedure; + protobuf_c_boolean replace; + size_t n_funcname; + PgQuery__Node **funcname; + size_t n_parameters; + PgQuery__Node **parameters; + PgQuery__TypeName *return_type; + size_t n_options; + PgQuery__Node **options; +}; +#define PG_QUERY__CREATE_FUNCTION_STMT__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&pg_query__create_function_stmt__descriptor) \ + , 0, 0, 0,NULL, 0,NULL, NULL, 0,NULL } + + +struct _PgQuery__AlterFunctionStmt +{ + ProtobufCMessage base; + PgQuery__ObjectType objtype; + PgQuery__ObjectWithArgs *func; + size_t n_actions; + PgQuery__Node **actions; +}; +#define PG_QUERY__ALTER_FUNCTION_STMT__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&pg_query__alter_function_stmt__descriptor) \ + , PG_QUERY__OBJECT_TYPE__OBJECT_TYPE_UNDEFINED, NULL, 0,NULL } + + +struct _PgQuery__DoStmt +{ + ProtobufCMessage base; + size_t n_args; + PgQuery__Node **args; +}; +#define PG_QUERY__DO_STMT__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&pg_query__do_stmt__descriptor) \ + , 0,NULL } + + +struct _PgQuery__RenameStmt +{ + ProtobufCMessage base; + PgQuery__ObjectType rename_type; + PgQuery__ObjectType relation_type; + PgQuery__RangeVar *relation; + PgQuery__Node *object; + char *subname; + char *newname; + PgQuery__DropBehavior behavior; + protobuf_c_boolean missing_ok; +}; +#define PG_QUERY__RENAME_STMT__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&pg_query__rename_stmt__descriptor) \ + , PG_QUERY__OBJECT_TYPE__OBJECT_TYPE_UNDEFINED, PG_QUERY__OBJECT_TYPE__OBJECT_TYPE_UNDEFINED, NULL, NULL, (char *)protobuf_c_empty_string, (char *)protobuf_c_empty_string, PG_QUERY__DROP_BEHAVIOR__DROP_BEHAVIOR_UNDEFINED, 0 } + + +struct _PgQuery__RuleStmt +{ + ProtobufCMessage base; + PgQuery__RangeVar *relation; + char *rulename; + PgQuery__Node *where_clause; + PgQuery__CmdType event; + protobuf_c_boolean instead; + size_t n_actions; + PgQuery__Node **actions; + protobuf_c_boolean replace; +}; +#define PG_QUERY__RULE_STMT__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&pg_query__rule_stmt__descriptor) \ + , NULL, (char *)protobuf_c_empty_string, NULL, PG_QUERY__CMD_TYPE__CMD_TYPE_UNDEFINED, 0, 0,NULL, 0 } + + +struct _PgQuery__NotifyStmt +{ + ProtobufCMessage base; + char *conditionname; + char *payload; +}; +#define PG_QUERY__NOTIFY_STMT__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&pg_query__notify_stmt__descriptor) \ + , (char *)protobuf_c_empty_string, (char *)protobuf_c_empty_string } + + +struct _PgQuery__ListenStmt +{ + ProtobufCMessage base; + char *conditionname; +}; +#define PG_QUERY__LISTEN_STMT__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&pg_query__listen_stmt__descriptor) \ + , (char *)protobuf_c_empty_string } + + +struct _PgQuery__UnlistenStmt +{ + ProtobufCMessage base; + char *conditionname; +}; +#define PG_QUERY__UNLISTEN_STMT__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&pg_query__unlisten_stmt__descriptor) \ + , (char *)protobuf_c_empty_string } + + +struct _PgQuery__TransactionStmt +{ + ProtobufCMessage base; + PgQuery__TransactionStmtKind kind; + size_t n_options; + PgQuery__Node **options; + char *savepoint_name; + char *gid; + protobuf_c_boolean chain; +}; +#define PG_QUERY__TRANSACTION_STMT__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&pg_query__transaction_stmt__descriptor) \ + , PG_QUERY__TRANSACTION_STMT_KIND__TRANSACTION_STMT_KIND_UNDEFINED, 0,NULL, (char *)protobuf_c_empty_string, (char *)protobuf_c_empty_string, 0 } + + +struct _PgQuery__ViewStmt +{ + ProtobufCMessage base; + PgQuery__RangeVar *view; + size_t n_aliases; + PgQuery__Node **aliases; + PgQuery__Node *query; + protobuf_c_boolean replace; + size_t n_options; + PgQuery__Node **options; + PgQuery__ViewCheckOption with_check_option; +}; +#define PG_QUERY__VIEW_STMT__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&pg_query__view_stmt__descriptor) \ + , NULL, 0,NULL, NULL, 0, 0,NULL, PG_QUERY__VIEW_CHECK_OPTION__VIEW_CHECK_OPTION_UNDEFINED } + + +struct _PgQuery__LoadStmt +{ + ProtobufCMessage base; + char *filename; +}; +#define PG_QUERY__LOAD_STMT__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&pg_query__load_stmt__descriptor) \ + , (char *)protobuf_c_empty_string } + + +struct _PgQuery__CreateDomainStmt +{ + ProtobufCMessage base; + size_t n_domainname; + PgQuery__Node **domainname; + PgQuery__TypeName *type_name; + PgQuery__CollateClause *coll_clause; + size_t n_constraints; + PgQuery__Node **constraints; +}; +#define PG_QUERY__CREATE_DOMAIN_STMT__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&pg_query__create_domain_stmt__descriptor) \ + , 0,NULL, NULL, NULL, 0,NULL } + + +struct _PgQuery__CreatedbStmt +{ + ProtobufCMessage base; + char *dbname; + size_t n_options; + PgQuery__Node **options; +}; +#define PG_QUERY__CREATEDB_STMT__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&pg_query__createdb_stmt__descriptor) \ + , (char *)protobuf_c_empty_string, 0,NULL } + + +struct _PgQuery__DropdbStmt +{ + ProtobufCMessage base; + char *dbname; + protobuf_c_boolean missing_ok; + size_t n_options; + PgQuery__Node **options; +}; +#define PG_QUERY__DROPDB_STMT__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&pg_query__dropdb_stmt__descriptor) \ + , (char *)protobuf_c_empty_string, 0, 0,NULL } + + +struct _PgQuery__VacuumStmt +{ + ProtobufCMessage base; + size_t n_options; + PgQuery__Node **options; + size_t n_rels; + PgQuery__Node **rels; + protobuf_c_boolean is_vacuumcmd; +}; +#define PG_QUERY__VACUUM_STMT__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&pg_query__vacuum_stmt__descriptor) \ + , 0,NULL, 0,NULL, 0 } + + +struct _PgQuery__ExplainStmt +{ + ProtobufCMessage base; + PgQuery__Node *query; + size_t n_options; + PgQuery__Node **options; +}; +#define PG_QUERY__EXPLAIN_STMT__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&pg_query__explain_stmt__descriptor) \ + , NULL, 0,NULL } + + +struct _PgQuery__CreateTableAsStmt +{ + ProtobufCMessage base; + PgQuery__Node *query; + PgQuery__IntoClause *into; + PgQuery__ObjectType relkind; + protobuf_c_boolean is_select_into; + protobuf_c_boolean if_not_exists; +}; +#define PG_QUERY__CREATE_TABLE_AS_STMT__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&pg_query__create_table_as_stmt__descriptor) \ + , NULL, NULL, PG_QUERY__OBJECT_TYPE__OBJECT_TYPE_UNDEFINED, 0, 0 } + + +struct _PgQuery__CreateSeqStmt +{ + ProtobufCMessage base; + PgQuery__RangeVar *sequence; + size_t n_options; + PgQuery__Node **options; + uint32_t owner_id; + protobuf_c_boolean for_identity; + protobuf_c_boolean if_not_exists; +}; +#define PG_QUERY__CREATE_SEQ_STMT__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&pg_query__create_seq_stmt__descriptor) \ + , NULL, 0,NULL, 0, 0, 0 } + + +struct _PgQuery__AlterSeqStmt +{ + ProtobufCMessage base; + PgQuery__RangeVar *sequence; + size_t n_options; + PgQuery__Node **options; + protobuf_c_boolean for_identity; + protobuf_c_boolean missing_ok; +}; +#define PG_QUERY__ALTER_SEQ_STMT__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&pg_query__alter_seq_stmt__descriptor) \ + , NULL, 0,NULL, 0, 0 } + + +struct _PgQuery__VariableSetStmt +{ + ProtobufCMessage base; + PgQuery__VariableSetKind kind; + char *name; + size_t n_args; + PgQuery__Node **args; + protobuf_c_boolean is_local; +}; +#define PG_QUERY__VARIABLE_SET_STMT__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&pg_query__variable_set_stmt__descriptor) \ + , PG_QUERY__VARIABLE_SET_KIND__VARIABLE_SET_KIND_UNDEFINED, (char *)protobuf_c_empty_string, 0,NULL, 0 } + + +struct _PgQuery__VariableShowStmt +{ + ProtobufCMessage base; + char *name; +}; +#define PG_QUERY__VARIABLE_SHOW_STMT__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&pg_query__variable_show_stmt__descriptor) \ + , (char *)protobuf_c_empty_string } + + +struct _PgQuery__DiscardStmt +{ + ProtobufCMessage base; + PgQuery__DiscardMode target; +}; +#define PG_QUERY__DISCARD_STMT__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&pg_query__discard_stmt__descriptor) \ + , PG_QUERY__DISCARD_MODE__DISCARD_MODE_UNDEFINED } + + +struct _PgQuery__CreateTrigStmt +{ + ProtobufCMessage base; + char *trigname; + PgQuery__RangeVar *relation; + size_t n_funcname; + PgQuery__Node **funcname; + size_t n_args; + PgQuery__Node **args; + protobuf_c_boolean row; + int32_t timing; + int32_t events; + size_t n_columns; + PgQuery__Node **columns; + PgQuery__Node *when_clause; + protobuf_c_boolean isconstraint; + size_t n_transition_rels; + PgQuery__Node **transition_rels; + protobuf_c_boolean deferrable; + protobuf_c_boolean initdeferred; + PgQuery__RangeVar *constrrel; +}; +#define PG_QUERY__CREATE_TRIG_STMT__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&pg_query__create_trig_stmt__descriptor) \ + , (char *)protobuf_c_empty_string, NULL, 0,NULL, 0,NULL, 0, 0, 0, 0,NULL, NULL, 0, 0,NULL, 0, 0, NULL } + + +struct _PgQuery__CreatePLangStmt +{ + ProtobufCMessage base; + protobuf_c_boolean replace; + char *plname; + size_t n_plhandler; + PgQuery__Node **plhandler; + size_t n_plinline; + PgQuery__Node **plinline; + size_t n_plvalidator; + PgQuery__Node **plvalidator; + protobuf_c_boolean pltrusted; +}; +#define PG_QUERY__CREATE_PLANG_STMT__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&pg_query__create_plang_stmt__descriptor) \ + , 0, (char *)protobuf_c_empty_string, 0,NULL, 0,NULL, 0,NULL, 0 } + + +struct _PgQuery__CreateRoleStmt +{ + ProtobufCMessage base; + PgQuery__RoleStmtType stmt_type; + char *role; + size_t n_options; + PgQuery__Node **options; +}; +#define PG_QUERY__CREATE_ROLE_STMT__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&pg_query__create_role_stmt__descriptor) \ + , PG_QUERY__ROLE_STMT_TYPE__ROLE_STMT_TYPE_UNDEFINED, (char *)protobuf_c_empty_string, 0,NULL } + + +struct _PgQuery__AlterRoleStmt +{ + ProtobufCMessage base; + PgQuery__RoleSpec *role; + size_t n_options; + PgQuery__Node **options; + int32_t action; +}; +#define PG_QUERY__ALTER_ROLE_STMT__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&pg_query__alter_role_stmt__descriptor) \ + , NULL, 0,NULL, 0 } + + +struct _PgQuery__DropRoleStmt +{ + ProtobufCMessage base; + size_t n_roles; + PgQuery__Node **roles; + protobuf_c_boolean missing_ok; +}; +#define PG_QUERY__DROP_ROLE_STMT__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&pg_query__drop_role_stmt__descriptor) \ + , 0,NULL, 0 } + + +struct _PgQuery__LockStmt +{ + ProtobufCMessage base; + size_t n_relations; + PgQuery__Node **relations; + int32_t mode; + protobuf_c_boolean nowait; +}; +#define PG_QUERY__LOCK_STMT__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&pg_query__lock_stmt__descriptor) \ + , 0,NULL, 0, 0 } + + +struct _PgQuery__ConstraintsSetStmt +{ + ProtobufCMessage base; + size_t n_constraints; + PgQuery__Node **constraints; + protobuf_c_boolean deferred; +}; +#define PG_QUERY__CONSTRAINTS_SET_STMT__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&pg_query__constraints_set_stmt__descriptor) \ + , 0,NULL, 0 } + + +struct _PgQuery__ReindexStmt +{ + ProtobufCMessage base; + PgQuery__ReindexObjectType kind; + PgQuery__RangeVar *relation; + char *name; + int32_t options; + protobuf_c_boolean concurrent; +}; +#define PG_QUERY__REINDEX_STMT__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&pg_query__reindex_stmt__descriptor) \ + , PG_QUERY__REINDEX_OBJECT_TYPE__REINDEX_OBJECT_TYPE_UNDEFINED, NULL, (char *)protobuf_c_empty_string, 0, 0 } + + +struct _PgQuery__CheckPointStmt +{ + ProtobufCMessage base; +}; +#define PG_QUERY__CHECK_POINT_STMT__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&pg_query__check_point_stmt__descriptor) \ + } + + +struct _PgQuery__CreateSchemaStmt +{ + ProtobufCMessage base; + char *schemaname; + PgQuery__RoleSpec *authrole; + size_t n_schema_elts; + PgQuery__Node **schema_elts; + protobuf_c_boolean if_not_exists; +}; +#define PG_QUERY__CREATE_SCHEMA_STMT__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&pg_query__create_schema_stmt__descriptor) \ + , (char *)protobuf_c_empty_string, NULL, 0,NULL, 0 } + + +struct _PgQuery__AlterDatabaseStmt +{ + ProtobufCMessage base; + char *dbname; + size_t n_options; + PgQuery__Node **options; +}; +#define PG_QUERY__ALTER_DATABASE_STMT__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&pg_query__alter_database_stmt__descriptor) \ + , (char *)protobuf_c_empty_string, 0,NULL } + + +struct _PgQuery__AlterDatabaseSetStmt +{ + ProtobufCMessage base; + char *dbname; + PgQuery__VariableSetStmt *setstmt; +}; +#define PG_QUERY__ALTER_DATABASE_SET_STMT__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&pg_query__alter_database_set_stmt__descriptor) \ + , (char *)protobuf_c_empty_string, NULL } + + +struct _PgQuery__AlterRoleSetStmt +{ + ProtobufCMessage base; + PgQuery__RoleSpec *role; + char *database; + PgQuery__VariableSetStmt *setstmt; +}; +#define PG_QUERY__ALTER_ROLE_SET_STMT__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&pg_query__alter_role_set_stmt__descriptor) \ + , NULL, (char *)protobuf_c_empty_string, NULL } + + +struct _PgQuery__CreateConversionStmt +{ + ProtobufCMessage base; + size_t n_conversion_name; + PgQuery__Node **conversion_name; + char *for_encoding_name; + char *to_encoding_name; + size_t n_func_name; + PgQuery__Node **func_name; + protobuf_c_boolean def; +}; +#define PG_QUERY__CREATE_CONVERSION_STMT__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&pg_query__create_conversion_stmt__descriptor) \ + , 0,NULL, (char *)protobuf_c_empty_string, (char *)protobuf_c_empty_string, 0,NULL, 0 } + + +struct _PgQuery__CreateCastStmt +{ + ProtobufCMessage base; + PgQuery__TypeName *sourcetype; + PgQuery__TypeName *targettype; + PgQuery__ObjectWithArgs *func; + PgQuery__CoercionContext context; + protobuf_c_boolean inout; +}; +#define PG_QUERY__CREATE_CAST_STMT__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&pg_query__create_cast_stmt__descriptor) \ + , NULL, NULL, NULL, PG_QUERY__COERCION_CONTEXT__COERCION_CONTEXT_UNDEFINED, 0 } + + +struct _PgQuery__CreateOpClassStmt +{ + ProtobufCMessage base; + size_t n_opclassname; + PgQuery__Node **opclassname; + size_t n_opfamilyname; + PgQuery__Node **opfamilyname; + char *amname; + PgQuery__TypeName *datatype; + size_t n_items; + PgQuery__Node **items; + protobuf_c_boolean is_default; +}; +#define PG_QUERY__CREATE_OP_CLASS_STMT__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&pg_query__create_op_class_stmt__descriptor) \ + , 0,NULL, 0,NULL, (char *)protobuf_c_empty_string, NULL, 0,NULL, 0 } + + +struct _PgQuery__CreateOpFamilyStmt +{ + ProtobufCMessage base; + size_t n_opfamilyname; + PgQuery__Node **opfamilyname; + char *amname; +}; +#define PG_QUERY__CREATE_OP_FAMILY_STMT__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&pg_query__create_op_family_stmt__descriptor) \ + , 0,NULL, (char *)protobuf_c_empty_string } + + +struct _PgQuery__AlterOpFamilyStmt +{ + ProtobufCMessage base; + size_t n_opfamilyname; + PgQuery__Node **opfamilyname; + char *amname; + protobuf_c_boolean is_drop; + size_t n_items; + PgQuery__Node **items; +}; +#define PG_QUERY__ALTER_OP_FAMILY_STMT__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&pg_query__alter_op_family_stmt__descriptor) \ + , 0,NULL, (char *)protobuf_c_empty_string, 0, 0,NULL } + + +struct _PgQuery__PrepareStmt +{ + ProtobufCMessage base; + char *name; + size_t n_argtypes; + PgQuery__Node **argtypes; + PgQuery__Node *query; +}; +#define PG_QUERY__PREPARE_STMT__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&pg_query__prepare_stmt__descriptor) \ + , (char *)protobuf_c_empty_string, 0,NULL, NULL } + + +struct _PgQuery__ExecuteStmt +{ + ProtobufCMessage base; + char *name; + size_t n_params; + PgQuery__Node **params; +}; +#define PG_QUERY__EXECUTE_STMT__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&pg_query__execute_stmt__descriptor) \ + , (char *)protobuf_c_empty_string, 0,NULL } + + +struct _PgQuery__DeallocateStmt +{ + ProtobufCMessage base; + char *name; +}; +#define PG_QUERY__DEALLOCATE_STMT__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&pg_query__deallocate_stmt__descriptor) \ + , (char *)protobuf_c_empty_string } + + +struct _PgQuery__DeclareCursorStmt +{ + ProtobufCMessage base; + char *portalname; + int32_t options; + PgQuery__Node *query; +}; +#define PG_QUERY__DECLARE_CURSOR_STMT__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&pg_query__declare_cursor_stmt__descriptor) \ + , (char *)protobuf_c_empty_string, 0, NULL } + + +struct _PgQuery__CreateTableSpaceStmt +{ + ProtobufCMessage base; + char *tablespacename; + PgQuery__RoleSpec *owner; + char *location; + size_t n_options; + PgQuery__Node **options; +}; +#define PG_QUERY__CREATE_TABLE_SPACE_STMT__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&pg_query__create_table_space_stmt__descriptor) \ + , (char *)protobuf_c_empty_string, NULL, (char *)protobuf_c_empty_string, 0,NULL } + + +struct _PgQuery__DropTableSpaceStmt +{ + ProtobufCMessage base; + char *tablespacename; + protobuf_c_boolean missing_ok; +}; +#define PG_QUERY__DROP_TABLE_SPACE_STMT__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&pg_query__drop_table_space_stmt__descriptor) \ + , (char *)protobuf_c_empty_string, 0 } + + +struct _PgQuery__AlterObjectDependsStmt +{ + ProtobufCMessage base; + PgQuery__ObjectType object_type; + PgQuery__RangeVar *relation; + PgQuery__Node *object; + PgQuery__Node *extname; + protobuf_c_boolean remove; +}; +#define PG_QUERY__ALTER_OBJECT_DEPENDS_STMT__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&pg_query__alter_object_depends_stmt__descriptor) \ + , PG_QUERY__OBJECT_TYPE__OBJECT_TYPE_UNDEFINED, NULL, NULL, NULL, 0 } + + +struct _PgQuery__AlterObjectSchemaStmt +{ + ProtobufCMessage base; + PgQuery__ObjectType object_type; + PgQuery__RangeVar *relation; + PgQuery__Node *object; + char *newschema; + protobuf_c_boolean missing_ok; +}; +#define PG_QUERY__ALTER_OBJECT_SCHEMA_STMT__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&pg_query__alter_object_schema_stmt__descriptor) \ + , PG_QUERY__OBJECT_TYPE__OBJECT_TYPE_UNDEFINED, NULL, NULL, (char *)protobuf_c_empty_string, 0 } + + +struct _PgQuery__AlterOwnerStmt +{ + ProtobufCMessage base; + PgQuery__ObjectType object_type; + PgQuery__RangeVar *relation; + PgQuery__Node *object; + PgQuery__RoleSpec *newowner; +}; +#define PG_QUERY__ALTER_OWNER_STMT__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&pg_query__alter_owner_stmt__descriptor) \ + , PG_QUERY__OBJECT_TYPE__OBJECT_TYPE_UNDEFINED, NULL, NULL, NULL } + + +struct _PgQuery__AlterOperatorStmt +{ + ProtobufCMessage base; + PgQuery__ObjectWithArgs *opername; + size_t n_options; + PgQuery__Node **options; +}; +#define PG_QUERY__ALTER_OPERATOR_STMT__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&pg_query__alter_operator_stmt__descriptor) \ + , NULL, 0,NULL } + + +struct _PgQuery__AlterTypeStmt +{ + ProtobufCMessage base; + size_t n_type_name; + PgQuery__Node **type_name; + size_t n_options; + PgQuery__Node **options; +}; +#define PG_QUERY__ALTER_TYPE_STMT__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&pg_query__alter_type_stmt__descriptor) \ + , 0,NULL, 0,NULL } + + +struct _PgQuery__DropOwnedStmt +{ + ProtobufCMessage base; + size_t n_roles; + PgQuery__Node **roles; + PgQuery__DropBehavior behavior; +}; +#define PG_QUERY__DROP_OWNED_STMT__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&pg_query__drop_owned_stmt__descriptor) \ + , 0,NULL, PG_QUERY__DROP_BEHAVIOR__DROP_BEHAVIOR_UNDEFINED } + + +struct _PgQuery__ReassignOwnedStmt +{ + ProtobufCMessage base; + size_t n_roles; + PgQuery__Node **roles; + PgQuery__RoleSpec *newrole; +}; +#define PG_QUERY__REASSIGN_OWNED_STMT__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&pg_query__reassign_owned_stmt__descriptor) \ + , 0,NULL, NULL } + + +struct _PgQuery__CompositeTypeStmt +{ + ProtobufCMessage base; + PgQuery__RangeVar *typevar; + size_t n_coldeflist; + PgQuery__Node **coldeflist; +}; +#define PG_QUERY__COMPOSITE_TYPE_STMT__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&pg_query__composite_type_stmt__descriptor) \ + , NULL, 0,NULL } + + +struct _PgQuery__CreateEnumStmt +{ + ProtobufCMessage base; + size_t n_type_name; + PgQuery__Node **type_name; + size_t n_vals; + PgQuery__Node **vals; +}; +#define PG_QUERY__CREATE_ENUM_STMT__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&pg_query__create_enum_stmt__descriptor) \ + , 0,NULL, 0,NULL } + + +struct _PgQuery__CreateRangeStmt +{ + ProtobufCMessage base; + size_t n_type_name; + PgQuery__Node **type_name; + size_t n_params; + PgQuery__Node **params; +}; +#define PG_QUERY__CREATE_RANGE_STMT__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&pg_query__create_range_stmt__descriptor) \ + , 0,NULL, 0,NULL } + + +struct _PgQuery__AlterEnumStmt +{ + ProtobufCMessage base; + size_t n_type_name; + PgQuery__Node **type_name; + char *old_val; + char *new_val; + char *new_val_neighbor; + protobuf_c_boolean new_val_is_after; + protobuf_c_boolean skip_if_new_val_exists; +}; +#define PG_QUERY__ALTER_ENUM_STMT__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&pg_query__alter_enum_stmt__descriptor) \ + , 0,NULL, (char *)protobuf_c_empty_string, (char *)protobuf_c_empty_string, (char *)protobuf_c_empty_string, 0, 0 } + + +struct _PgQuery__AlterTSDictionaryStmt +{ + ProtobufCMessage base; + size_t n_dictname; + PgQuery__Node **dictname; + size_t n_options; + PgQuery__Node **options; +}; +#define PG_QUERY__ALTER_TSDICTIONARY_STMT__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&pg_query__alter_tsdictionary_stmt__descriptor) \ + , 0,NULL, 0,NULL } + + +struct _PgQuery__AlterTSConfigurationStmt +{ + ProtobufCMessage base; + PgQuery__AlterTSConfigType kind; + size_t n_cfgname; + PgQuery__Node **cfgname; + size_t n_tokentype; + PgQuery__Node **tokentype; + size_t n_dicts; + PgQuery__Node **dicts; + protobuf_c_boolean override; + protobuf_c_boolean replace; + protobuf_c_boolean missing_ok; +}; +#define PG_QUERY__ALTER_TSCONFIGURATION_STMT__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&pg_query__alter_tsconfiguration_stmt__descriptor) \ + , PG_QUERY__ALTER_TSCONFIG_TYPE__ALTER_TSCONFIG_TYPE_UNDEFINED, 0,NULL, 0,NULL, 0,NULL, 0, 0, 0 } + + +struct _PgQuery__CreateFdwStmt +{ + ProtobufCMessage base; + char *fdwname; + size_t n_func_options; + PgQuery__Node **func_options; + size_t n_options; + PgQuery__Node **options; +}; +#define PG_QUERY__CREATE_FDW_STMT__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&pg_query__create_fdw_stmt__descriptor) \ + , (char *)protobuf_c_empty_string, 0,NULL, 0,NULL } + + +struct _PgQuery__AlterFdwStmt +{ + ProtobufCMessage base; + char *fdwname; + size_t n_func_options; + PgQuery__Node **func_options; + size_t n_options; + PgQuery__Node **options; +}; +#define PG_QUERY__ALTER_FDW_STMT__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&pg_query__alter_fdw_stmt__descriptor) \ + , (char *)protobuf_c_empty_string, 0,NULL, 0,NULL } + + +struct _PgQuery__CreateForeignServerStmt +{ + ProtobufCMessage base; + char *servername; + char *servertype; + char *version; + char *fdwname; + protobuf_c_boolean if_not_exists; + size_t n_options; + PgQuery__Node **options; +}; +#define PG_QUERY__CREATE_FOREIGN_SERVER_STMT__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&pg_query__create_foreign_server_stmt__descriptor) \ + , (char *)protobuf_c_empty_string, (char *)protobuf_c_empty_string, (char *)protobuf_c_empty_string, (char *)protobuf_c_empty_string, 0, 0,NULL } + + +struct _PgQuery__AlterForeignServerStmt +{ + ProtobufCMessage base; + char *servername; + char *version; + size_t n_options; + PgQuery__Node **options; + protobuf_c_boolean has_version; +}; +#define PG_QUERY__ALTER_FOREIGN_SERVER_STMT__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&pg_query__alter_foreign_server_stmt__descriptor) \ + , (char *)protobuf_c_empty_string, (char *)protobuf_c_empty_string, 0,NULL, 0 } + + +struct _PgQuery__CreateUserMappingStmt +{ + ProtobufCMessage base; + PgQuery__RoleSpec *user; + char *servername; + protobuf_c_boolean if_not_exists; + size_t n_options; + PgQuery__Node **options; +}; +#define PG_QUERY__CREATE_USER_MAPPING_STMT__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&pg_query__create_user_mapping_stmt__descriptor) \ + , NULL, (char *)protobuf_c_empty_string, 0, 0,NULL } + + +struct _PgQuery__AlterUserMappingStmt +{ + ProtobufCMessage base; + PgQuery__RoleSpec *user; + char *servername; + size_t n_options; + PgQuery__Node **options; +}; +#define PG_QUERY__ALTER_USER_MAPPING_STMT__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&pg_query__alter_user_mapping_stmt__descriptor) \ + , NULL, (char *)protobuf_c_empty_string, 0,NULL } + + +struct _PgQuery__DropUserMappingStmt +{ + ProtobufCMessage base; + PgQuery__RoleSpec *user; + char *servername; + protobuf_c_boolean missing_ok; +}; +#define PG_QUERY__DROP_USER_MAPPING_STMT__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&pg_query__drop_user_mapping_stmt__descriptor) \ + , NULL, (char *)protobuf_c_empty_string, 0 } + + +struct _PgQuery__AlterTableSpaceOptionsStmt +{ + ProtobufCMessage base; + char *tablespacename; + size_t n_options; + PgQuery__Node **options; + protobuf_c_boolean is_reset; +}; +#define PG_QUERY__ALTER_TABLE_SPACE_OPTIONS_STMT__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&pg_query__alter_table_space_options_stmt__descriptor) \ + , (char *)protobuf_c_empty_string, 0,NULL, 0 } + + +struct _PgQuery__AlterTableMoveAllStmt +{ + ProtobufCMessage base; + char *orig_tablespacename; + PgQuery__ObjectType objtype; + size_t n_roles; + PgQuery__Node **roles; + char *new_tablespacename; + protobuf_c_boolean nowait; +}; +#define PG_QUERY__ALTER_TABLE_MOVE_ALL_STMT__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&pg_query__alter_table_move_all_stmt__descriptor) \ + , (char *)protobuf_c_empty_string, PG_QUERY__OBJECT_TYPE__OBJECT_TYPE_UNDEFINED, 0,NULL, (char *)protobuf_c_empty_string, 0 } + + +struct _PgQuery__SecLabelStmt +{ + ProtobufCMessage base; + PgQuery__ObjectType objtype; + PgQuery__Node *object; + char *provider; + char *label; +}; +#define PG_QUERY__SEC_LABEL_STMT__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&pg_query__sec_label_stmt__descriptor) \ + , PG_QUERY__OBJECT_TYPE__OBJECT_TYPE_UNDEFINED, NULL, (char *)protobuf_c_empty_string, (char *)protobuf_c_empty_string } + + +struct _PgQuery__CreateForeignTableStmt +{ + ProtobufCMessage base; + PgQuery__CreateStmt *base_stmt; + char *servername; + size_t n_options; + PgQuery__Node **options; +}; +#define PG_QUERY__CREATE_FOREIGN_TABLE_STMT__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&pg_query__create_foreign_table_stmt__descriptor) \ + , NULL, (char *)protobuf_c_empty_string, 0,NULL } + + +struct _PgQuery__ImportForeignSchemaStmt +{ + ProtobufCMessage base; + char *server_name; + char *remote_schema; + char *local_schema; + PgQuery__ImportForeignSchemaType list_type; + size_t n_table_list; + PgQuery__Node **table_list; + size_t n_options; + PgQuery__Node **options; +}; +#define PG_QUERY__IMPORT_FOREIGN_SCHEMA_STMT__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&pg_query__import_foreign_schema_stmt__descriptor) \ + , (char *)protobuf_c_empty_string, (char *)protobuf_c_empty_string, (char *)protobuf_c_empty_string, PG_QUERY__IMPORT_FOREIGN_SCHEMA_TYPE__IMPORT_FOREIGN_SCHEMA_TYPE_UNDEFINED, 0,NULL, 0,NULL } + + +struct _PgQuery__CreateExtensionStmt +{ + ProtobufCMessage base; + char *extname; + protobuf_c_boolean if_not_exists; + size_t n_options; + PgQuery__Node **options; +}; +#define PG_QUERY__CREATE_EXTENSION_STMT__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&pg_query__create_extension_stmt__descriptor) \ + , (char *)protobuf_c_empty_string, 0, 0,NULL } + + +struct _PgQuery__AlterExtensionStmt +{ + ProtobufCMessage base; + char *extname; + size_t n_options; + PgQuery__Node **options; +}; +#define PG_QUERY__ALTER_EXTENSION_STMT__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&pg_query__alter_extension_stmt__descriptor) \ + , (char *)protobuf_c_empty_string, 0,NULL } + + +struct _PgQuery__AlterExtensionContentsStmt +{ + ProtobufCMessage base; + char *extname; + int32_t action; + PgQuery__ObjectType objtype; + PgQuery__Node *object; +}; +#define PG_QUERY__ALTER_EXTENSION_CONTENTS_STMT__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&pg_query__alter_extension_contents_stmt__descriptor) \ + , (char *)protobuf_c_empty_string, 0, PG_QUERY__OBJECT_TYPE__OBJECT_TYPE_UNDEFINED, NULL } + + +struct _PgQuery__CreateEventTrigStmt +{ + ProtobufCMessage base; + char *trigname; + char *eventname; + size_t n_whenclause; + PgQuery__Node **whenclause; + size_t n_funcname; + PgQuery__Node **funcname; +}; +#define PG_QUERY__CREATE_EVENT_TRIG_STMT__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&pg_query__create_event_trig_stmt__descriptor) \ + , (char *)protobuf_c_empty_string, (char *)protobuf_c_empty_string, 0,NULL, 0,NULL } + + +struct _PgQuery__AlterEventTrigStmt +{ + ProtobufCMessage base; + char *trigname; + char *tgenabled; +}; +#define PG_QUERY__ALTER_EVENT_TRIG_STMT__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&pg_query__alter_event_trig_stmt__descriptor) \ + , (char *)protobuf_c_empty_string, (char *)protobuf_c_empty_string } + + +struct _PgQuery__RefreshMatViewStmt +{ + ProtobufCMessage base; + protobuf_c_boolean concurrent; + protobuf_c_boolean skip_data; + PgQuery__RangeVar *relation; +}; +#define PG_QUERY__REFRESH_MAT_VIEW_STMT__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&pg_query__refresh_mat_view_stmt__descriptor) \ + , 0, 0, NULL } + + +struct _PgQuery__ReplicaIdentityStmt +{ + ProtobufCMessage base; + char *identity_type; + char *name; +}; +#define PG_QUERY__REPLICA_IDENTITY_STMT__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&pg_query__replica_identity_stmt__descriptor) \ + , (char *)protobuf_c_empty_string, (char *)protobuf_c_empty_string } + + +struct _PgQuery__AlterSystemStmt +{ + ProtobufCMessage base; + PgQuery__VariableSetStmt *setstmt; +}; +#define PG_QUERY__ALTER_SYSTEM_STMT__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&pg_query__alter_system_stmt__descriptor) \ + , NULL } + + +struct _PgQuery__CreatePolicyStmt +{ + ProtobufCMessage base; + char *policy_name; + PgQuery__RangeVar *table; + char *cmd_name; + protobuf_c_boolean permissive; + size_t n_roles; + PgQuery__Node **roles; + PgQuery__Node *qual; + PgQuery__Node *with_check; +}; +#define PG_QUERY__CREATE_POLICY_STMT__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&pg_query__create_policy_stmt__descriptor) \ + , (char *)protobuf_c_empty_string, NULL, (char *)protobuf_c_empty_string, 0, 0,NULL, NULL, NULL } + + +struct _PgQuery__AlterPolicyStmt +{ + ProtobufCMessage base; + char *policy_name; + PgQuery__RangeVar *table; + size_t n_roles; + PgQuery__Node **roles; + PgQuery__Node *qual; + PgQuery__Node *with_check; +}; +#define PG_QUERY__ALTER_POLICY_STMT__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&pg_query__alter_policy_stmt__descriptor) \ + , (char *)protobuf_c_empty_string, NULL, 0,NULL, NULL, NULL } + + +struct _PgQuery__CreateTransformStmt +{ + ProtobufCMessage base; + protobuf_c_boolean replace; + PgQuery__TypeName *type_name; + char *lang; + PgQuery__ObjectWithArgs *fromsql; + PgQuery__ObjectWithArgs *tosql; +}; +#define PG_QUERY__CREATE_TRANSFORM_STMT__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&pg_query__create_transform_stmt__descriptor) \ + , 0, NULL, (char *)protobuf_c_empty_string, NULL, NULL } + + +struct _PgQuery__CreateAmStmt +{ + ProtobufCMessage base; + char *amname; + size_t n_handler_name; + PgQuery__Node **handler_name; + char *amtype; +}; +#define PG_QUERY__CREATE_AM_STMT__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&pg_query__create_am_stmt__descriptor) \ + , (char *)protobuf_c_empty_string, 0,NULL, (char *)protobuf_c_empty_string } + + +struct _PgQuery__CreatePublicationStmt +{ + ProtobufCMessage base; + char *pubname; + size_t n_options; + PgQuery__Node **options; + size_t n_tables; + PgQuery__Node **tables; + protobuf_c_boolean for_all_tables; +}; +#define PG_QUERY__CREATE_PUBLICATION_STMT__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&pg_query__create_publication_stmt__descriptor) \ + , (char *)protobuf_c_empty_string, 0,NULL, 0,NULL, 0 } + + +struct _PgQuery__AlterPublicationStmt +{ + ProtobufCMessage base; + char *pubname; + size_t n_options; + PgQuery__Node **options; + size_t n_tables; + PgQuery__Node **tables; + protobuf_c_boolean for_all_tables; + PgQuery__DefElemAction table_action; +}; +#define PG_QUERY__ALTER_PUBLICATION_STMT__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&pg_query__alter_publication_stmt__descriptor) \ + , (char *)protobuf_c_empty_string, 0,NULL, 0,NULL, 0, PG_QUERY__DEF_ELEM_ACTION__DEF_ELEM_ACTION_UNDEFINED } + + +struct _PgQuery__CreateSubscriptionStmt +{ + ProtobufCMessage base; + char *subname; + char *conninfo; + size_t n_publication; + PgQuery__Node **publication; + size_t n_options; + PgQuery__Node **options; +}; +#define PG_QUERY__CREATE_SUBSCRIPTION_STMT__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&pg_query__create_subscription_stmt__descriptor) \ + , (char *)protobuf_c_empty_string, (char *)protobuf_c_empty_string, 0,NULL, 0,NULL } + + +struct _PgQuery__AlterSubscriptionStmt +{ + ProtobufCMessage base; + PgQuery__AlterSubscriptionType kind; + char *subname; + char *conninfo; + size_t n_publication; + PgQuery__Node **publication; + size_t n_options; + PgQuery__Node **options; +}; +#define PG_QUERY__ALTER_SUBSCRIPTION_STMT__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&pg_query__alter_subscription_stmt__descriptor) \ + , PG_QUERY__ALTER_SUBSCRIPTION_TYPE__ALTER_SUBSCRIPTION_TYPE_UNDEFINED, (char *)protobuf_c_empty_string, (char *)protobuf_c_empty_string, 0,NULL, 0,NULL } + + +struct _PgQuery__DropSubscriptionStmt +{ + ProtobufCMessage base; + char *subname; + protobuf_c_boolean missing_ok; + PgQuery__DropBehavior behavior; +}; +#define PG_QUERY__DROP_SUBSCRIPTION_STMT__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&pg_query__drop_subscription_stmt__descriptor) \ + , (char *)protobuf_c_empty_string, 0, PG_QUERY__DROP_BEHAVIOR__DROP_BEHAVIOR_UNDEFINED } + + +struct _PgQuery__CreateStatsStmt +{ + ProtobufCMessage base; + size_t n_defnames; + PgQuery__Node **defnames; + size_t n_stat_types; + PgQuery__Node **stat_types; + size_t n_exprs; + PgQuery__Node **exprs; + size_t n_relations; + PgQuery__Node **relations; + char *stxcomment; + protobuf_c_boolean if_not_exists; +}; +#define PG_QUERY__CREATE_STATS_STMT__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&pg_query__create_stats_stmt__descriptor) \ + , 0,NULL, 0,NULL, 0,NULL, 0,NULL, (char *)protobuf_c_empty_string, 0 } + + +struct _PgQuery__AlterCollationStmt +{ + ProtobufCMessage base; + size_t n_collname; + PgQuery__Node **collname; +}; +#define PG_QUERY__ALTER_COLLATION_STMT__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&pg_query__alter_collation_stmt__descriptor) \ + , 0,NULL } + + +struct _PgQuery__CallStmt +{ + ProtobufCMessage base; + PgQuery__FuncCall *funccall; + PgQuery__FuncExpr *funcexpr; +}; +#define PG_QUERY__CALL_STMT__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&pg_query__call_stmt__descriptor) \ + , NULL, NULL } + + +struct _PgQuery__AlterStatsStmt +{ + ProtobufCMessage base; + size_t n_defnames; + PgQuery__Node **defnames; + int32_t stxstattarget; + protobuf_c_boolean missing_ok; +}; +#define PG_QUERY__ALTER_STATS_STMT__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&pg_query__alter_stats_stmt__descriptor) \ + , 0,NULL, 0, 0 } + + +struct _PgQuery__AExpr +{ + ProtobufCMessage base; + PgQuery__AExprKind kind; + size_t n_name; + PgQuery__Node **name; + PgQuery__Node *lexpr; + PgQuery__Node *rexpr; + int32_t location; +}; +#define PG_QUERY__A__EXPR__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&pg_query__a__expr__descriptor) \ + , PG_QUERY__A__EXPR__KIND__A_EXPR_KIND_UNDEFINED, 0,NULL, NULL, NULL, 0 } + + +struct _PgQuery__ColumnRef +{ + ProtobufCMessage base; + size_t n_fields; + PgQuery__Node **fields; + int32_t location; +}; +#define PG_QUERY__COLUMN_REF__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&pg_query__column_ref__descriptor) \ + , 0,NULL, 0 } + + +struct _PgQuery__ParamRef +{ + ProtobufCMessage base; + int32_t number; + int32_t location; +}; +#define PG_QUERY__PARAM_REF__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&pg_query__param_ref__descriptor) \ + , 0, 0 } + + +struct _PgQuery__AConst +{ + ProtobufCMessage base; + PgQuery__Node *val; + int32_t location; +}; +#define PG_QUERY__A__CONST__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&pg_query__a__const__descriptor) \ + , NULL, 0 } + + +struct _PgQuery__FuncCall +{ + ProtobufCMessage base; + size_t n_funcname; + PgQuery__Node **funcname; + size_t n_args; + PgQuery__Node **args; + size_t n_agg_order; + PgQuery__Node **agg_order; + PgQuery__Node *agg_filter; + protobuf_c_boolean agg_within_group; + protobuf_c_boolean agg_star; + protobuf_c_boolean agg_distinct; + protobuf_c_boolean func_variadic; + PgQuery__WindowDef *over; + int32_t location; +}; +#define PG_QUERY__FUNC_CALL__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&pg_query__func_call__descriptor) \ + , 0,NULL, 0,NULL, 0,NULL, NULL, 0, 0, 0, 0, NULL, 0 } + + +struct _PgQuery__AStar +{ + ProtobufCMessage base; +}; +#define PG_QUERY__A__STAR__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&pg_query__a__star__descriptor) \ + } + + +struct _PgQuery__AIndices +{ + ProtobufCMessage base; + protobuf_c_boolean is_slice; + PgQuery__Node *lidx; + PgQuery__Node *uidx; +}; +#define PG_QUERY__A__INDICES__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&pg_query__a__indices__descriptor) \ + , 0, NULL, NULL } + + +struct _PgQuery__AIndirection +{ + ProtobufCMessage base; + PgQuery__Node *arg; + size_t n_indirection; + PgQuery__Node **indirection; +}; +#define PG_QUERY__A__INDIRECTION__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&pg_query__a__indirection__descriptor) \ + , NULL, 0,NULL } + + +struct _PgQuery__AArrayExpr +{ + ProtobufCMessage base; + size_t n_elements; + PgQuery__Node **elements; + int32_t location; +}; +#define PG_QUERY__A__ARRAY_EXPR__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&pg_query__a__array_expr__descriptor) \ + , 0,NULL, 0 } + + +struct _PgQuery__ResTarget +{ + ProtobufCMessage base; + char *name; + size_t n_indirection; + PgQuery__Node **indirection; + PgQuery__Node *val; + int32_t location; +}; +#define PG_QUERY__RES_TARGET__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&pg_query__res_target__descriptor) \ + , (char *)protobuf_c_empty_string, 0,NULL, NULL, 0 } + + +struct _PgQuery__MultiAssignRef +{ + ProtobufCMessage base; + PgQuery__Node *source; + int32_t colno; + int32_t ncolumns; +}; +#define PG_QUERY__MULTI_ASSIGN_REF__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&pg_query__multi_assign_ref__descriptor) \ + , NULL, 0, 0 } + + +struct _PgQuery__TypeCast +{ + ProtobufCMessage base; + PgQuery__Node *arg; + PgQuery__TypeName *type_name; + int32_t location; +}; +#define PG_QUERY__TYPE_CAST__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&pg_query__type_cast__descriptor) \ + , NULL, NULL, 0 } + + +struct _PgQuery__CollateClause +{ + ProtobufCMessage base; + PgQuery__Node *arg; + size_t n_collname; + PgQuery__Node **collname; + int32_t location; +}; +#define PG_QUERY__COLLATE_CLAUSE__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&pg_query__collate_clause__descriptor) \ + , NULL, 0,NULL, 0 } + + +struct _PgQuery__SortBy +{ + ProtobufCMessage base; + PgQuery__Node *node; + PgQuery__SortByDir sortby_dir; + PgQuery__SortByNulls sortby_nulls; + size_t n_use_op; + PgQuery__Node **use_op; + int32_t location; +}; +#define PG_QUERY__SORT_BY__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&pg_query__sort_by__descriptor) \ + , NULL, PG_QUERY__SORT_BY_DIR__SORT_BY_DIR_UNDEFINED, PG_QUERY__SORT_BY_NULLS__SORT_BY_NULLS_UNDEFINED, 0,NULL, 0 } + + +struct _PgQuery__WindowDef +{ + ProtobufCMessage base; + char *name; + char *refname; + size_t n_partition_clause; + PgQuery__Node **partition_clause; + size_t n_order_clause; + PgQuery__Node **order_clause; + int32_t frame_options; + PgQuery__Node *start_offset; + PgQuery__Node *end_offset; + int32_t location; +}; +#define PG_QUERY__WINDOW_DEF__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&pg_query__window_def__descriptor) \ + , (char *)protobuf_c_empty_string, (char *)protobuf_c_empty_string, 0,NULL, 0,NULL, 0, NULL, NULL, 0 } + + +struct _PgQuery__RangeSubselect +{ + ProtobufCMessage base; + protobuf_c_boolean lateral; + PgQuery__Node *subquery; + PgQuery__Alias *alias; +}; +#define PG_QUERY__RANGE_SUBSELECT__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&pg_query__range_subselect__descriptor) \ + , 0, NULL, NULL } + + +struct _PgQuery__RangeFunction +{ + ProtobufCMessage base; + protobuf_c_boolean lateral; + protobuf_c_boolean ordinality; + protobuf_c_boolean is_rowsfrom; + size_t n_functions; + PgQuery__Node **functions; + PgQuery__Alias *alias; + size_t n_coldeflist; + PgQuery__Node **coldeflist; +}; +#define PG_QUERY__RANGE_FUNCTION__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&pg_query__range_function__descriptor) \ + , 0, 0, 0, 0,NULL, NULL, 0,NULL } + + +struct _PgQuery__RangeTableSample +{ + ProtobufCMessage base; + PgQuery__Node *relation; + size_t n_method; + PgQuery__Node **method; + size_t n_args; + PgQuery__Node **args; + PgQuery__Node *repeatable; + int32_t location; +}; +#define PG_QUERY__RANGE_TABLE_SAMPLE__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&pg_query__range_table_sample__descriptor) \ + , NULL, 0,NULL, 0,NULL, NULL, 0 } + + +struct _PgQuery__RangeTableFunc +{ + ProtobufCMessage base; + protobuf_c_boolean lateral; + PgQuery__Node *docexpr; + PgQuery__Node *rowexpr; + size_t n_namespaces; + PgQuery__Node **namespaces; + size_t n_columns; + PgQuery__Node **columns; + PgQuery__Alias *alias; + int32_t location; +}; +#define PG_QUERY__RANGE_TABLE_FUNC__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&pg_query__range_table_func__descriptor) \ + , 0, NULL, NULL, 0,NULL, 0,NULL, NULL, 0 } + + +struct _PgQuery__RangeTableFuncCol +{ + ProtobufCMessage base; + char *colname; + PgQuery__TypeName *type_name; + protobuf_c_boolean for_ordinality; + protobuf_c_boolean is_not_null; + PgQuery__Node *colexpr; + PgQuery__Node *coldefexpr; + int32_t location; +}; +#define PG_QUERY__RANGE_TABLE_FUNC_COL__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&pg_query__range_table_func_col__descriptor) \ + , (char *)protobuf_c_empty_string, NULL, 0, 0, NULL, NULL, 0 } + + +struct _PgQuery__TypeName +{ + ProtobufCMessage base; + size_t n_names; + PgQuery__Node **names; + uint32_t type_oid; + protobuf_c_boolean setof; + protobuf_c_boolean pct_type; + size_t n_typmods; + PgQuery__Node **typmods; + int32_t typemod; + size_t n_array_bounds; + PgQuery__Node **array_bounds; + int32_t location; +}; +#define PG_QUERY__TYPE_NAME__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&pg_query__type_name__descriptor) \ + , 0,NULL, 0, 0, 0, 0,NULL, 0, 0,NULL, 0 } + + +struct _PgQuery__ColumnDef +{ + ProtobufCMessage base; + char *colname; + PgQuery__TypeName *type_name; + int32_t inhcount; + protobuf_c_boolean is_local; + protobuf_c_boolean is_not_null; + protobuf_c_boolean is_from_type; + char *storage; + PgQuery__Node *raw_default; + PgQuery__Node *cooked_default; + char *identity; + PgQuery__RangeVar *identity_sequence; + char *generated; + PgQuery__CollateClause *coll_clause; + uint32_t coll_oid; + size_t n_constraints; + PgQuery__Node **constraints; + size_t n_fdwoptions; + PgQuery__Node **fdwoptions; + int32_t location; +}; +#define PG_QUERY__COLUMN_DEF__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&pg_query__column_def__descriptor) \ + , (char *)protobuf_c_empty_string, NULL, 0, 0, 0, 0, (char *)protobuf_c_empty_string, NULL, NULL, (char *)protobuf_c_empty_string, NULL, (char *)protobuf_c_empty_string, NULL, 0, 0,NULL, 0,NULL, 0 } + + +struct _PgQuery__IndexElem +{ + ProtobufCMessage base; + char *name; + PgQuery__Node *expr; + char *indexcolname; + size_t n_collation; + PgQuery__Node **collation; + size_t n_opclass; + PgQuery__Node **opclass; + size_t n_opclassopts; + PgQuery__Node **opclassopts; + PgQuery__SortByDir ordering; + PgQuery__SortByNulls nulls_ordering; +}; +#define PG_QUERY__INDEX_ELEM__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&pg_query__index_elem__descriptor) \ + , (char *)protobuf_c_empty_string, NULL, (char *)protobuf_c_empty_string, 0,NULL, 0,NULL, 0,NULL, PG_QUERY__SORT_BY_DIR__SORT_BY_DIR_UNDEFINED, PG_QUERY__SORT_BY_NULLS__SORT_BY_NULLS_UNDEFINED } + + +struct _PgQuery__Constraint +{ + ProtobufCMessage base; + PgQuery__ConstrType contype; + char *conname; + protobuf_c_boolean deferrable; + protobuf_c_boolean initdeferred; + int32_t location; + protobuf_c_boolean is_no_inherit; + PgQuery__Node *raw_expr; + char *cooked_expr; + char *generated_when; + size_t n_keys; + PgQuery__Node **keys; + size_t n_including; + PgQuery__Node **including; + size_t n_exclusions; + PgQuery__Node **exclusions; + size_t n_options; + PgQuery__Node **options; + char *indexname; + char *indexspace; + protobuf_c_boolean reset_default_tblspc; + char *access_method; + PgQuery__Node *where_clause; + PgQuery__RangeVar *pktable; + size_t n_fk_attrs; + PgQuery__Node **fk_attrs; + size_t n_pk_attrs; + PgQuery__Node **pk_attrs; + char *fk_matchtype; + char *fk_upd_action; + char *fk_del_action; + size_t n_old_conpfeqop; + PgQuery__Node **old_conpfeqop; + uint32_t old_pktable_oid; + protobuf_c_boolean skip_validation; + protobuf_c_boolean initially_valid; +}; +#define PG_QUERY__CONSTRAINT__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&pg_query__constraint__descriptor) \ + , PG_QUERY__CONSTR_TYPE__CONSTR_TYPE_UNDEFINED, (char *)protobuf_c_empty_string, 0, 0, 0, 0, NULL, (char *)protobuf_c_empty_string, (char *)protobuf_c_empty_string, 0,NULL, 0,NULL, 0,NULL, 0,NULL, (char *)protobuf_c_empty_string, (char *)protobuf_c_empty_string, 0, (char *)protobuf_c_empty_string, NULL, NULL, 0,NULL, 0,NULL, (char *)protobuf_c_empty_string, (char *)protobuf_c_empty_string, (char *)protobuf_c_empty_string, 0,NULL, 0, 0, 0 } + + +struct _PgQuery__DefElem +{ + ProtobufCMessage base; + char *defnamespace; + char *defname; + PgQuery__Node *arg; + PgQuery__DefElemAction defaction; + int32_t location; +}; +#define PG_QUERY__DEF_ELEM__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&pg_query__def_elem__descriptor) \ + , (char *)protobuf_c_empty_string, (char *)protobuf_c_empty_string, NULL, PG_QUERY__DEF_ELEM_ACTION__DEF_ELEM_ACTION_UNDEFINED, 0 } + + +struct _PgQuery__RangeTblEntry +{ + ProtobufCMessage base; + PgQuery__RTEKind rtekind; + uint32_t relid; + char *relkind; + int32_t rellockmode; + PgQuery__TableSampleClause *tablesample; + PgQuery__Query *subquery; + protobuf_c_boolean security_barrier; + PgQuery__JoinType jointype; + int32_t joinmergedcols; + size_t n_joinaliasvars; + PgQuery__Node **joinaliasvars; + size_t n_joinleftcols; + PgQuery__Node **joinleftcols; + size_t n_joinrightcols; + PgQuery__Node **joinrightcols; + size_t n_functions; + PgQuery__Node **functions; + protobuf_c_boolean funcordinality; + PgQuery__TableFunc *tablefunc; + size_t n_values_lists; + PgQuery__Node **values_lists; + char *ctename; + uint32_t ctelevelsup; + protobuf_c_boolean self_reference; + size_t n_coltypes; + PgQuery__Node **coltypes; + size_t n_coltypmods; + PgQuery__Node **coltypmods; + size_t n_colcollations; + PgQuery__Node **colcollations; + char *enrname; + double enrtuples; + PgQuery__Alias *alias; + PgQuery__Alias *eref; + protobuf_c_boolean lateral; + protobuf_c_boolean inh; + protobuf_c_boolean in_from_cl; + uint32_t required_perms; + uint32_t check_as_user; + size_t n_selected_cols; + uint64_t *selected_cols; + size_t n_inserted_cols; + uint64_t *inserted_cols; + size_t n_updated_cols; + uint64_t *updated_cols; + size_t n_extra_updated_cols; + uint64_t *extra_updated_cols; + size_t n_security_quals; + PgQuery__Node **security_quals; +}; +#define PG_QUERY__RANGE_TBL_ENTRY__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&pg_query__range_tbl_entry__descriptor) \ + , PG_QUERY__RTEKIND__RTEKIND_UNDEFINED, 0, (char *)protobuf_c_empty_string, 0, NULL, NULL, 0, PG_QUERY__JOIN_TYPE__JOIN_TYPE_UNDEFINED, 0, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0, NULL, 0,NULL, (char *)protobuf_c_empty_string, 0, 0, 0,NULL, 0,NULL, 0,NULL, (char *)protobuf_c_empty_string, 0, NULL, NULL, 0, 0, 0, 0, 0, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL } + + +struct _PgQuery__RangeTblFunction +{ + ProtobufCMessage base; + PgQuery__Node *funcexpr; + int32_t funccolcount; + size_t n_funccolnames; + PgQuery__Node **funccolnames; + size_t n_funccoltypes; + PgQuery__Node **funccoltypes; + size_t n_funccoltypmods; + PgQuery__Node **funccoltypmods; + size_t n_funccolcollations; + PgQuery__Node **funccolcollations; + size_t n_funcparams; + uint64_t *funcparams; +}; +#define PG_QUERY__RANGE_TBL_FUNCTION__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&pg_query__range_tbl_function__descriptor) \ + , NULL, 0, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL } + + +struct _PgQuery__TableSampleClause +{ + ProtobufCMessage base; + uint32_t tsmhandler; + size_t n_args; + PgQuery__Node **args; + PgQuery__Node *repeatable; +}; +#define PG_QUERY__TABLE_SAMPLE_CLAUSE__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&pg_query__table_sample_clause__descriptor) \ + , 0, 0,NULL, NULL } + + +struct _PgQuery__WithCheckOption +{ + ProtobufCMessage base; + PgQuery__WCOKind kind; + char *relname; + char *polname; + PgQuery__Node *qual; + protobuf_c_boolean cascaded; +}; +#define PG_QUERY__WITH_CHECK_OPTION__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&pg_query__with_check_option__descriptor) \ + , PG_QUERY__WCOKIND__WCOKIND_UNDEFINED, (char *)protobuf_c_empty_string, (char *)protobuf_c_empty_string, NULL, 0 } + + +struct _PgQuery__SortGroupClause +{ + ProtobufCMessage base; + uint32_t tle_sort_group_ref; + uint32_t eqop; + uint32_t sortop; + protobuf_c_boolean nulls_first; + protobuf_c_boolean hashable; +}; +#define PG_QUERY__SORT_GROUP_CLAUSE__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&pg_query__sort_group_clause__descriptor) \ + , 0, 0, 0, 0, 0 } + + +struct _PgQuery__GroupingSet +{ + ProtobufCMessage base; + PgQuery__GroupingSetKind kind; + size_t n_content; + PgQuery__Node **content; + int32_t location; +}; +#define PG_QUERY__GROUPING_SET__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&pg_query__grouping_set__descriptor) \ + , PG_QUERY__GROUPING_SET_KIND__GROUPING_SET_KIND_UNDEFINED, 0,NULL, 0 } + + +struct _PgQuery__WindowClause +{ + ProtobufCMessage base; + char *name; + char *refname; + size_t n_partition_clause; + PgQuery__Node **partition_clause; + size_t n_order_clause; + PgQuery__Node **order_clause; + int32_t frame_options; + PgQuery__Node *start_offset; + PgQuery__Node *end_offset; + uint32_t start_in_range_func; + uint32_t end_in_range_func; + uint32_t in_range_coll; + protobuf_c_boolean in_range_asc; + protobuf_c_boolean in_range_nulls_first; + uint32_t winref; + protobuf_c_boolean copied_order; +}; +#define PG_QUERY__WINDOW_CLAUSE__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&pg_query__window_clause__descriptor) \ + , (char *)protobuf_c_empty_string, (char *)protobuf_c_empty_string, 0,NULL, 0,NULL, 0, NULL, NULL, 0, 0, 0, 0, 0, 0, 0 } + + +struct _PgQuery__ObjectWithArgs +{ + ProtobufCMessage base; + size_t n_objname; + PgQuery__Node **objname; + size_t n_objargs; + PgQuery__Node **objargs; + protobuf_c_boolean args_unspecified; +}; +#define PG_QUERY__OBJECT_WITH_ARGS__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&pg_query__object_with_args__descriptor) \ + , 0,NULL, 0,NULL, 0 } + + +struct _PgQuery__AccessPriv +{ + ProtobufCMessage base; + char *priv_name; + size_t n_cols; + PgQuery__Node **cols; +}; +#define PG_QUERY__ACCESS_PRIV__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&pg_query__access_priv__descriptor) \ + , (char *)protobuf_c_empty_string, 0,NULL } + + +struct _PgQuery__CreateOpClassItem +{ + ProtobufCMessage base; + int32_t itemtype; + PgQuery__ObjectWithArgs *name; + int32_t number; + size_t n_order_family; + PgQuery__Node **order_family; + size_t n_class_args; + PgQuery__Node **class_args; + PgQuery__TypeName *storedtype; +}; +#define PG_QUERY__CREATE_OP_CLASS_ITEM__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&pg_query__create_op_class_item__descriptor) \ + , 0, NULL, 0, 0,NULL, 0,NULL, NULL } + + +struct _PgQuery__TableLikeClause +{ + ProtobufCMessage base; + PgQuery__RangeVar *relation; + uint32_t options; +}; +#define PG_QUERY__TABLE_LIKE_CLAUSE__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&pg_query__table_like_clause__descriptor) \ + , NULL, 0 } + + +struct _PgQuery__FunctionParameter +{ + ProtobufCMessage base; + char *name; + PgQuery__TypeName *arg_type; + PgQuery__FunctionParameterMode mode; + PgQuery__Node *defexpr; +}; +#define PG_QUERY__FUNCTION_PARAMETER__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&pg_query__function_parameter__descriptor) \ + , (char *)protobuf_c_empty_string, NULL, PG_QUERY__FUNCTION_PARAMETER_MODE__FUNCTION_PARAMETER_MODE_UNDEFINED, NULL } + + +struct _PgQuery__LockingClause +{ + ProtobufCMessage base; + size_t n_locked_rels; + PgQuery__Node **locked_rels; + PgQuery__LockClauseStrength strength; + PgQuery__LockWaitPolicy wait_policy; +}; +#define PG_QUERY__LOCKING_CLAUSE__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&pg_query__locking_clause__descriptor) \ + , 0,NULL, PG_QUERY__LOCK_CLAUSE_STRENGTH__LOCK_CLAUSE_STRENGTH_UNDEFINED, PG_QUERY__LOCK_WAIT_POLICY__LOCK_WAIT_POLICY_UNDEFINED } + + +struct _PgQuery__RowMarkClause +{ + ProtobufCMessage base; + uint32_t rti; + PgQuery__LockClauseStrength strength; + PgQuery__LockWaitPolicy wait_policy; + protobuf_c_boolean pushed_down; +}; +#define PG_QUERY__ROW_MARK_CLAUSE__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&pg_query__row_mark_clause__descriptor) \ + , 0, PG_QUERY__LOCK_CLAUSE_STRENGTH__LOCK_CLAUSE_STRENGTH_UNDEFINED, PG_QUERY__LOCK_WAIT_POLICY__LOCK_WAIT_POLICY_UNDEFINED, 0 } + + +struct _PgQuery__XmlSerialize +{ + ProtobufCMessage base; + PgQuery__XmlOptionType xmloption; + PgQuery__Node *expr; + PgQuery__TypeName *type_name; + int32_t location; +}; +#define PG_QUERY__XML_SERIALIZE__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&pg_query__xml_serialize__descriptor) \ + , PG_QUERY__XML_OPTION_TYPE__XML_OPTION_TYPE_UNDEFINED, NULL, NULL, 0 } + + +struct _PgQuery__WithClause +{ + ProtobufCMessage base; + size_t n_ctes; + PgQuery__Node **ctes; + protobuf_c_boolean recursive; + int32_t location; +}; +#define PG_QUERY__WITH_CLAUSE__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&pg_query__with_clause__descriptor) \ + , 0,NULL, 0, 0 } + + +struct _PgQuery__InferClause +{ + ProtobufCMessage base; + size_t n_index_elems; + PgQuery__Node **index_elems; + PgQuery__Node *where_clause; + char *conname; + int32_t location; +}; +#define PG_QUERY__INFER_CLAUSE__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&pg_query__infer_clause__descriptor) \ + , 0,NULL, NULL, (char *)protobuf_c_empty_string, 0 } + + +struct _PgQuery__OnConflictClause +{ + ProtobufCMessage base; + PgQuery__OnConflictAction action; + PgQuery__InferClause *infer; + size_t n_target_list; + PgQuery__Node **target_list; + PgQuery__Node *where_clause; + int32_t location; +}; +#define PG_QUERY__ON_CONFLICT_CLAUSE__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&pg_query__on_conflict_clause__descriptor) \ + , PG_QUERY__ON_CONFLICT_ACTION__ON_CONFLICT_ACTION_UNDEFINED, NULL, 0,NULL, NULL, 0 } + + +struct _PgQuery__CommonTableExpr +{ + ProtobufCMessage base; + char *ctename; + size_t n_aliascolnames; + PgQuery__Node **aliascolnames; + PgQuery__CTEMaterialize ctematerialized; + PgQuery__Node *ctequery; + int32_t location; + protobuf_c_boolean cterecursive; + int32_t cterefcount; + size_t n_ctecolnames; + PgQuery__Node **ctecolnames; + size_t n_ctecoltypes; + PgQuery__Node **ctecoltypes; + size_t n_ctecoltypmods; + PgQuery__Node **ctecoltypmods; + size_t n_ctecolcollations; + PgQuery__Node **ctecolcollations; +}; +#define PG_QUERY__COMMON_TABLE_EXPR__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&pg_query__common_table_expr__descriptor) \ + , (char *)protobuf_c_empty_string, 0,NULL, PG_QUERY__CTEMATERIALIZE__CTEMATERIALIZE_UNDEFINED, NULL, 0, 0, 0, 0,NULL, 0,NULL, 0,NULL, 0,NULL } + + +struct _PgQuery__RoleSpec +{ + ProtobufCMessage base; + PgQuery__RoleSpecType roletype; + char *rolename; + int32_t location; +}; +#define PG_QUERY__ROLE_SPEC__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&pg_query__role_spec__descriptor) \ + , PG_QUERY__ROLE_SPEC_TYPE__ROLE_SPEC_TYPE_UNDEFINED, (char *)protobuf_c_empty_string, 0 } + + +struct _PgQuery__TriggerTransition +{ + ProtobufCMessage base; + char *name; + protobuf_c_boolean is_new; + protobuf_c_boolean is_table; +}; +#define PG_QUERY__TRIGGER_TRANSITION__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&pg_query__trigger_transition__descriptor) \ + , (char *)protobuf_c_empty_string, 0, 0 } + + +struct _PgQuery__PartitionElem +{ + ProtobufCMessage base; + char *name; + PgQuery__Node *expr; + size_t n_collation; + PgQuery__Node **collation; + size_t n_opclass; + PgQuery__Node **opclass; + int32_t location; +}; +#define PG_QUERY__PARTITION_ELEM__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&pg_query__partition_elem__descriptor) \ + , (char *)protobuf_c_empty_string, NULL, 0,NULL, 0,NULL, 0 } + + +struct _PgQuery__PartitionSpec +{ + ProtobufCMessage base; + char *strategy; + size_t n_part_params; + PgQuery__Node **part_params; + int32_t location; +}; +#define PG_QUERY__PARTITION_SPEC__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&pg_query__partition_spec__descriptor) \ + , (char *)protobuf_c_empty_string, 0,NULL, 0 } + + +struct _PgQuery__PartitionBoundSpec +{ + ProtobufCMessage base; + char *strategy; + protobuf_c_boolean is_default; + int32_t modulus; + int32_t remainder; + size_t n_listdatums; + PgQuery__Node **listdatums; + size_t n_lowerdatums; + PgQuery__Node **lowerdatums; + size_t n_upperdatums; + PgQuery__Node **upperdatums; + int32_t location; +}; +#define PG_QUERY__PARTITION_BOUND_SPEC__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&pg_query__partition_bound_spec__descriptor) \ + , (char *)protobuf_c_empty_string, 0, 0, 0, 0,NULL, 0,NULL, 0,NULL, 0 } + + +struct _PgQuery__PartitionRangeDatum +{ + ProtobufCMessage base; + PgQuery__PartitionRangeDatumKind kind; + PgQuery__Node *value; + int32_t location; +}; +#define PG_QUERY__PARTITION_RANGE_DATUM__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&pg_query__partition_range_datum__descriptor) \ + , PG_QUERY__PARTITION_RANGE_DATUM_KIND__PARTITION_RANGE_DATUM_KIND_UNDEFINED, NULL, 0 } + + +struct _PgQuery__PartitionCmd +{ + ProtobufCMessage base; + PgQuery__RangeVar *name; + PgQuery__PartitionBoundSpec *bound; +}; +#define PG_QUERY__PARTITION_CMD__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&pg_query__partition_cmd__descriptor) \ + , NULL, NULL } + + +struct _PgQuery__VacuumRelation +{ + ProtobufCMessage base; + PgQuery__RangeVar *relation; + uint32_t oid; + size_t n_va_cols; + PgQuery__Node **va_cols; +}; +#define PG_QUERY__VACUUM_RELATION__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&pg_query__vacuum_relation__descriptor) \ + , NULL, 0, 0,NULL } + + +struct _PgQuery__InlineCodeBlock +{ + ProtobufCMessage base; + char *source_text; + uint32_t lang_oid; + protobuf_c_boolean lang_is_trusted; + protobuf_c_boolean atomic; +}; +#define PG_QUERY__INLINE_CODE_BLOCK__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&pg_query__inline_code_block__descriptor) \ + , (char *)protobuf_c_empty_string, 0, 0, 0 } + + +struct _PgQuery__CallContext +{ + ProtobufCMessage base; + protobuf_c_boolean atomic; +}; +#define PG_QUERY__CALL_CONTEXT__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&pg_query__call_context__descriptor) \ + , 0 } + + +struct _PgQuery__ScanToken +{ + ProtobufCMessage base; + int32_t start; + int32_t end; + PgQuery__Token token; + PgQuery__KeywordKind keyword_kind; +}; +#define PG_QUERY__SCAN_TOKEN__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&pg_query__scan_token__descriptor) \ + , 0, 0, PG_QUERY__TOKEN__NUL, PG_QUERY__KEYWORD_KIND__NO_KEYWORD } + + +/* PgQuery__ParseResult methods */ +void pg_query__parse_result__init + (PgQuery__ParseResult *message); +size_t pg_query__parse_result__get_packed_size + (const PgQuery__ParseResult *message); +size_t pg_query__parse_result__pack + (const PgQuery__ParseResult *message, + uint8_t *out); +size_t pg_query__parse_result__pack_to_buffer + (const PgQuery__ParseResult *message, + ProtobufCBuffer *buffer); +PgQuery__ParseResult * + pg_query__parse_result__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void pg_query__parse_result__free_unpacked + (PgQuery__ParseResult *message, + ProtobufCAllocator *allocator); +/* PgQuery__ScanResult methods */ +void pg_query__scan_result__init + (PgQuery__ScanResult *message); +size_t pg_query__scan_result__get_packed_size + (const PgQuery__ScanResult *message); +size_t pg_query__scan_result__pack + (const PgQuery__ScanResult *message, + uint8_t *out); +size_t pg_query__scan_result__pack_to_buffer + (const PgQuery__ScanResult *message, + ProtobufCBuffer *buffer); +PgQuery__ScanResult * + pg_query__scan_result__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void pg_query__scan_result__free_unpacked + (PgQuery__ScanResult *message, + ProtobufCAllocator *allocator); +/* PgQuery__Node methods */ +void pg_query__node__init + (PgQuery__Node *message); +size_t pg_query__node__get_packed_size + (const PgQuery__Node *message); +size_t pg_query__node__pack + (const PgQuery__Node *message, + uint8_t *out); +size_t pg_query__node__pack_to_buffer + (const PgQuery__Node *message, + ProtobufCBuffer *buffer); +PgQuery__Node * + pg_query__node__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void pg_query__node__free_unpacked + (PgQuery__Node *message, + ProtobufCAllocator *allocator); +/* PgQuery__Integer methods */ +void pg_query__integer__init + (PgQuery__Integer *message); +size_t pg_query__integer__get_packed_size + (const PgQuery__Integer *message); +size_t pg_query__integer__pack + (const PgQuery__Integer *message, + uint8_t *out); +size_t pg_query__integer__pack_to_buffer + (const PgQuery__Integer *message, + ProtobufCBuffer *buffer); +PgQuery__Integer * + pg_query__integer__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void pg_query__integer__free_unpacked + (PgQuery__Integer *message, + ProtobufCAllocator *allocator); +/* PgQuery__Float methods */ +void pg_query__float__init + (PgQuery__Float *message); +size_t pg_query__float__get_packed_size + (const PgQuery__Float *message); +size_t pg_query__float__pack + (const PgQuery__Float *message, + uint8_t *out); +size_t pg_query__float__pack_to_buffer + (const PgQuery__Float *message, + ProtobufCBuffer *buffer); +PgQuery__Float * + pg_query__float__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void pg_query__float__free_unpacked + (PgQuery__Float *message, + ProtobufCAllocator *allocator); +/* PgQuery__String methods */ +void pg_query__string__init + (PgQuery__String *message); +size_t pg_query__string__get_packed_size + (const PgQuery__String *message); +size_t pg_query__string__pack + (const PgQuery__String *message, + uint8_t *out); +size_t pg_query__string__pack_to_buffer + (const PgQuery__String *message, + ProtobufCBuffer *buffer); +PgQuery__String * + pg_query__string__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void pg_query__string__free_unpacked + (PgQuery__String *message, + ProtobufCAllocator *allocator); +/* PgQuery__BitString methods */ +void pg_query__bit_string__init + (PgQuery__BitString *message); +size_t pg_query__bit_string__get_packed_size + (const PgQuery__BitString *message); +size_t pg_query__bit_string__pack + (const PgQuery__BitString *message, + uint8_t *out); +size_t pg_query__bit_string__pack_to_buffer + (const PgQuery__BitString *message, + ProtobufCBuffer *buffer); +PgQuery__BitString * + pg_query__bit_string__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void pg_query__bit_string__free_unpacked + (PgQuery__BitString *message, + ProtobufCAllocator *allocator); +/* PgQuery__Null methods */ +void pg_query__null__init + (PgQuery__Null *message); +size_t pg_query__null__get_packed_size + (const PgQuery__Null *message); +size_t pg_query__null__pack + (const PgQuery__Null *message, + uint8_t *out); +size_t pg_query__null__pack_to_buffer + (const PgQuery__Null *message, + ProtobufCBuffer *buffer); +PgQuery__Null * + pg_query__null__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void pg_query__null__free_unpacked + (PgQuery__Null *message, + ProtobufCAllocator *allocator); +/* PgQuery__List methods */ +void pg_query__list__init + (PgQuery__List *message); +size_t pg_query__list__get_packed_size + (const PgQuery__List *message); +size_t pg_query__list__pack + (const PgQuery__List *message, + uint8_t *out); +size_t pg_query__list__pack_to_buffer + (const PgQuery__List *message, + ProtobufCBuffer *buffer); +PgQuery__List * + pg_query__list__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void pg_query__list__free_unpacked + (PgQuery__List *message, + ProtobufCAllocator *allocator); +/* PgQuery__OidList methods */ +void pg_query__oid_list__init + (PgQuery__OidList *message); +size_t pg_query__oid_list__get_packed_size + (const PgQuery__OidList *message); +size_t pg_query__oid_list__pack + (const PgQuery__OidList *message, + uint8_t *out); +size_t pg_query__oid_list__pack_to_buffer + (const PgQuery__OidList *message, + ProtobufCBuffer *buffer); +PgQuery__OidList * + pg_query__oid_list__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void pg_query__oid_list__free_unpacked + (PgQuery__OidList *message, + ProtobufCAllocator *allocator); +/* PgQuery__IntList methods */ +void pg_query__int_list__init + (PgQuery__IntList *message); +size_t pg_query__int_list__get_packed_size + (const PgQuery__IntList *message); +size_t pg_query__int_list__pack + (const PgQuery__IntList *message, + uint8_t *out); +size_t pg_query__int_list__pack_to_buffer + (const PgQuery__IntList *message, + ProtobufCBuffer *buffer); +PgQuery__IntList * + pg_query__int_list__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void pg_query__int_list__free_unpacked + (PgQuery__IntList *message, + ProtobufCAllocator *allocator); +/* PgQuery__Alias methods */ +void pg_query__alias__init + (PgQuery__Alias *message); +size_t pg_query__alias__get_packed_size + (const PgQuery__Alias *message); +size_t pg_query__alias__pack + (const PgQuery__Alias *message, + uint8_t *out); +size_t pg_query__alias__pack_to_buffer + (const PgQuery__Alias *message, + ProtobufCBuffer *buffer); +PgQuery__Alias * + pg_query__alias__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void pg_query__alias__free_unpacked + (PgQuery__Alias *message, + ProtobufCAllocator *allocator); +/* PgQuery__RangeVar methods */ +void pg_query__range_var__init + (PgQuery__RangeVar *message); +size_t pg_query__range_var__get_packed_size + (const PgQuery__RangeVar *message); +size_t pg_query__range_var__pack + (const PgQuery__RangeVar *message, + uint8_t *out); +size_t pg_query__range_var__pack_to_buffer + (const PgQuery__RangeVar *message, + ProtobufCBuffer *buffer); +PgQuery__RangeVar * + pg_query__range_var__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void pg_query__range_var__free_unpacked + (PgQuery__RangeVar *message, + ProtobufCAllocator *allocator); +/* PgQuery__TableFunc methods */ +void pg_query__table_func__init + (PgQuery__TableFunc *message); +size_t pg_query__table_func__get_packed_size + (const PgQuery__TableFunc *message); +size_t pg_query__table_func__pack + (const PgQuery__TableFunc *message, + uint8_t *out); +size_t pg_query__table_func__pack_to_buffer + (const PgQuery__TableFunc *message, + ProtobufCBuffer *buffer); +PgQuery__TableFunc * + pg_query__table_func__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void pg_query__table_func__free_unpacked + (PgQuery__TableFunc *message, + ProtobufCAllocator *allocator); +/* PgQuery__Expr methods */ +void pg_query__expr__init + (PgQuery__Expr *message); +size_t pg_query__expr__get_packed_size + (const PgQuery__Expr *message); +size_t pg_query__expr__pack + (const PgQuery__Expr *message, + uint8_t *out); +size_t pg_query__expr__pack_to_buffer + (const PgQuery__Expr *message, + ProtobufCBuffer *buffer); +PgQuery__Expr * + pg_query__expr__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void pg_query__expr__free_unpacked + (PgQuery__Expr *message, + ProtobufCAllocator *allocator); +/* PgQuery__Var methods */ +void pg_query__var__init + (PgQuery__Var *message); +size_t pg_query__var__get_packed_size + (const PgQuery__Var *message); +size_t pg_query__var__pack + (const PgQuery__Var *message, + uint8_t *out); +size_t pg_query__var__pack_to_buffer + (const PgQuery__Var *message, + ProtobufCBuffer *buffer); +PgQuery__Var * + pg_query__var__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void pg_query__var__free_unpacked + (PgQuery__Var *message, + ProtobufCAllocator *allocator); +/* PgQuery__Param methods */ +void pg_query__param__init + (PgQuery__Param *message); +size_t pg_query__param__get_packed_size + (const PgQuery__Param *message); +size_t pg_query__param__pack + (const PgQuery__Param *message, + uint8_t *out); +size_t pg_query__param__pack_to_buffer + (const PgQuery__Param *message, + ProtobufCBuffer *buffer); +PgQuery__Param * + pg_query__param__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void pg_query__param__free_unpacked + (PgQuery__Param *message, + ProtobufCAllocator *allocator); +/* PgQuery__Aggref methods */ +void pg_query__aggref__init + (PgQuery__Aggref *message); +size_t pg_query__aggref__get_packed_size + (const PgQuery__Aggref *message); +size_t pg_query__aggref__pack + (const PgQuery__Aggref *message, + uint8_t *out); +size_t pg_query__aggref__pack_to_buffer + (const PgQuery__Aggref *message, + ProtobufCBuffer *buffer); +PgQuery__Aggref * + pg_query__aggref__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void pg_query__aggref__free_unpacked + (PgQuery__Aggref *message, + ProtobufCAllocator *allocator); +/* PgQuery__GroupingFunc methods */ +void pg_query__grouping_func__init + (PgQuery__GroupingFunc *message); +size_t pg_query__grouping_func__get_packed_size + (const PgQuery__GroupingFunc *message); +size_t pg_query__grouping_func__pack + (const PgQuery__GroupingFunc *message, + uint8_t *out); +size_t pg_query__grouping_func__pack_to_buffer + (const PgQuery__GroupingFunc *message, + ProtobufCBuffer *buffer); +PgQuery__GroupingFunc * + pg_query__grouping_func__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void pg_query__grouping_func__free_unpacked + (PgQuery__GroupingFunc *message, + ProtobufCAllocator *allocator); +/* PgQuery__WindowFunc methods */ +void pg_query__window_func__init + (PgQuery__WindowFunc *message); +size_t pg_query__window_func__get_packed_size + (const PgQuery__WindowFunc *message); +size_t pg_query__window_func__pack + (const PgQuery__WindowFunc *message, + uint8_t *out); +size_t pg_query__window_func__pack_to_buffer + (const PgQuery__WindowFunc *message, + ProtobufCBuffer *buffer); +PgQuery__WindowFunc * + pg_query__window_func__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void pg_query__window_func__free_unpacked + (PgQuery__WindowFunc *message, + ProtobufCAllocator *allocator); +/* PgQuery__SubscriptingRef methods */ +void pg_query__subscripting_ref__init + (PgQuery__SubscriptingRef *message); +size_t pg_query__subscripting_ref__get_packed_size + (const PgQuery__SubscriptingRef *message); +size_t pg_query__subscripting_ref__pack + (const PgQuery__SubscriptingRef *message, + uint8_t *out); +size_t pg_query__subscripting_ref__pack_to_buffer + (const PgQuery__SubscriptingRef *message, + ProtobufCBuffer *buffer); +PgQuery__SubscriptingRef * + pg_query__subscripting_ref__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void pg_query__subscripting_ref__free_unpacked + (PgQuery__SubscriptingRef *message, + ProtobufCAllocator *allocator); +/* PgQuery__FuncExpr methods */ +void pg_query__func_expr__init + (PgQuery__FuncExpr *message); +size_t pg_query__func_expr__get_packed_size + (const PgQuery__FuncExpr *message); +size_t pg_query__func_expr__pack + (const PgQuery__FuncExpr *message, + uint8_t *out); +size_t pg_query__func_expr__pack_to_buffer + (const PgQuery__FuncExpr *message, + ProtobufCBuffer *buffer); +PgQuery__FuncExpr * + pg_query__func_expr__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void pg_query__func_expr__free_unpacked + (PgQuery__FuncExpr *message, + ProtobufCAllocator *allocator); +/* PgQuery__NamedArgExpr methods */ +void pg_query__named_arg_expr__init + (PgQuery__NamedArgExpr *message); +size_t pg_query__named_arg_expr__get_packed_size + (const PgQuery__NamedArgExpr *message); +size_t pg_query__named_arg_expr__pack + (const PgQuery__NamedArgExpr *message, + uint8_t *out); +size_t pg_query__named_arg_expr__pack_to_buffer + (const PgQuery__NamedArgExpr *message, + ProtobufCBuffer *buffer); +PgQuery__NamedArgExpr * + pg_query__named_arg_expr__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void pg_query__named_arg_expr__free_unpacked + (PgQuery__NamedArgExpr *message, + ProtobufCAllocator *allocator); +/* PgQuery__OpExpr methods */ +void pg_query__op_expr__init + (PgQuery__OpExpr *message); +size_t pg_query__op_expr__get_packed_size + (const PgQuery__OpExpr *message); +size_t pg_query__op_expr__pack + (const PgQuery__OpExpr *message, + uint8_t *out); +size_t pg_query__op_expr__pack_to_buffer + (const PgQuery__OpExpr *message, + ProtobufCBuffer *buffer); +PgQuery__OpExpr * + pg_query__op_expr__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void pg_query__op_expr__free_unpacked + (PgQuery__OpExpr *message, + ProtobufCAllocator *allocator); +/* PgQuery__DistinctExpr methods */ +void pg_query__distinct_expr__init + (PgQuery__DistinctExpr *message); +size_t pg_query__distinct_expr__get_packed_size + (const PgQuery__DistinctExpr *message); +size_t pg_query__distinct_expr__pack + (const PgQuery__DistinctExpr *message, + uint8_t *out); +size_t pg_query__distinct_expr__pack_to_buffer + (const PgQuery__DistinctExpr *message, + ProtobufCBuffer *buffer); +PgQuery__DistinctExpr * + pg_query__distinct_expr__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void pg_query__distinct_expr__free_unpacked + (PgQuery__DistinctExpr *message, + ProtobufCAllocator *allocator); +/* PgQuery__NullIfExpr methods */ +void pg_query__null_if_expr__init + (PgQuery__NullIfExpr *message); +size_t pg_query__null_if_expr__get_packed_size + (const PgQuery__NullIfExpr *message); +size_t pg_query__null_if_expr__pack + (const PgQuery__NullIfExpr *message, + uint8_t *out); +size_t pg_query__null_if_expr__pack_to_buffer + (const PgQuery__NullIfExpr *message, + ProtobufCBuffer *buffer); +PgQuery__NullIfExpr * + pg_query__null_if_expr__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void pg_query__null_if_expr__free_unpacked + (PgQuery__NullIfExpr *message, + ProtobufCAllocator *allocator); +/* PgQuery__ScalarArrayOpExpr methods */ +void pg_query__scalar_array_op_expr__init + (PgQuery__ScalarArrayOpExpr *message); +size_t pg_query__scalar_array_op_expr__get_packed_size + (const PgQuery__ScalarArrayOpExpr *message); +size_t pg_query__scalar_array_op_expr__pack + (const PgQuery__ScalarArrayOpExpr *message, + uint8_t *out); +size_t pg_query__scalar_array_op_expr__pack_to_buffer + (const PgQuery__ScalarArrayOpExpr *message, + ProtobufCBuffer *buffer); +PgQuery__ScalarArrayOpExpr * + pg_query__scalar_array_op_expr__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void pg_query__scalar_array_op_expr__free_unpacked + (PgQuery__ScalarArrayOpExpr *message, + ProtobufCAllocator *allocator); +/* PgQuery__BoolExpr methods */ +void pg_query__bool_expr__init + (PgQuery__BoolExpr *message); +size_t pg_query__bool_expr__get_packed_size + (const PgQuery__BoolExpr *message); +size_t pg_query__bool_expr__pack + (const PgQuery__BoolExpr *message, + uint8_t *out); +size_t pg_query__bool_expr__pack_to_buffer + (const PgQuery__BoolExpr *message, + ProtobufCBuffer *buffer); +PgQuery__BoolExpr * + pg_query__bool_expr__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void pg_query__bool_expr__free_unpacked + (PgQuery__BoolExpr *message, + ProtobufCAllocator *allocator); +/* PgQuery__SubLink methods */ +void pg_query__sub_link__init + (PgQuery__SubLink *message); +size_t pg_query__sub_link__get_packed_size + (const PgQuery__SubLink *message); +size_t pg_query__sub_link__pack + (const PgQuery__SubLink *message, + uint8_t *out); +size_t pg_query__sub_link__pack_to_buffer + (const PgQuery__SubLink *message, + ProtobufCBuffer *buffer); +PgQuery__SubLink * + pg_query__sub_link__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void pg_query__sub_link__free_unpacked + (PgQuery__SubLink *message, + ProtobufCAllocator *allocator); +/* PgQuery__SubPlan methods */ +void pg_query__sub_plan__init + (PgQuery__SubPlan *message); +size_t pg_query__sub_plan__get_packed_size + (const PgQuery__SubPlan *message); +size_t pg_query__sub_plan__pack + (const PgQuery__SubPlan *message, + uint8_t *out); +size_t pg_query__sub_plan__pack_to_buffer + (const PgQuery__SubPlan *message, + ProtobufCBuffer *buffer); +PgQuery__SubPlan * + pg_query__sub_plan__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void pg_query__sub_plan__free_unpacked + (PgQuery__SubPlan *message, + ProtobufCAllocator *allocator); +/* PgQuery__AlternativeSubPlan methods */ +void pg_query__alternative_sub_plan__init + (PgQuery__AlternativeSubPlan *message); +size_t pg_query__alternative_sub_plan__get_packed_size + (const PgQuery__AlternativeSubPlan *message); +size_t pg_query__alternative_sub_plan__pack + (const PgQuery__AlternativeSubPlan *message, + uint8_t *out); +size_t pg_query__alternative_sub_plan__pack_to_buffer + (const PgQuery__AlternativeSubPlan *message, + ProtobufCBuffer *buffer); +PgQuery__AlternativeSubPlan * + pg_query__alternative_sub_plan__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void pg_query__alternative_sub_plan__free_unpacked + (PgQuery__AlternativeSubPlan *message, + ProtobufCAllocator *allocator); +/* PgQuery__FieldSelect methods */ +void pg_query__field_select__init + (PgQuery__FieldSelect *message); +size_t pg_query__field_select__get_packed_size + (const PgQuery__FieldSelect *message); +size_t pg_query__field_select__pack + (const PgQuery__FieldSelect *message, + uint8_t *out); +size_t pg_query__field_select__pack_to_buffer + (const PgQuery__FieldSelect *message, + ProtobufCBuffer *buffer); +PgQuery__FieldSelect * + pg_query__field_select__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void pg_query__field_select__free_unpacked + (PgQuery__FieldSelect *message, + ProtobufCAllocator *allocator); +/* PgQuery__FieldStore methods */ +void pg_query__field_store__init + (PgQuery__FieldStore *message); +size_t pg_query__field_store__get_packed_size + (const PgQuery__FieldStore *message); +size_t pg_query__field_store__pack + (const PgQuery__FieldStore *message, + uint8_t *out); +size_t pg_query__field_store__pack_to_buffer + (const PgQuery__FieldStore *message, + ProtobufCBuffer *buffer); +PgQuery__FieldStore * + pg_query__field_store__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void pg_query__field_store__free_unpacked + (PgQuery__FieldStore *message, + ProtobufCAllocator *allocator); +/* PgQuery__RelabelType methods */ +void pg_query__relabel_type__init + (PgQuery__RelabelType *message); +size_t pg_query__relabel_type__get_packed_size + (const PgQuery__RelabelType *message); +size_t pg_query__relabel_type__pack + (const PgQuery__RelabelType *message, + uint8_t *out); +size_t pg_query__relabel_type__pack_to_buffer + (const PgQuery__RelabelType *message, + ProtobufCBuffer *buffer); +PgQuery__RelabelType * + pg_query__relabel_type__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void pg_query__relabel_type__free_unpacked + (PgQuery__RelabelType *message, + ProtobufCAllocator *allocator); +/* PgQuery__CoerceViaIO methods */ +void pg_query__coerce_via_io__init + (PgQuery__CoerceViaIO *message); +size_t pg_query__coerce_via_io__get_packed_size + (const PgQuery__CoerceViaIO *message); +size_t pg_query__coerce_via_io__pack + (const PgQuery__CoerceViaIO *message, + uint8_t *out); +size_t pg_query__coerce_via_io__pack_to_buffer + (const PgQuery__CoerceViaIO *message, + ProtobufCBuffer *buffer); +PgQuery__CoerceViaIO * + pg_query__coerce_via_io__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void pg_query__coerce_via_io__free_unpacked + (PgQuery__CoerceViaIO *message, + ProtobufCAllocator *allocator); +/* PgQuery__ArrayCoerceExpr methods */ +void pg_query__array_coerce_expr__init + (PgQuery__ArrayCoerceExpr *message); +size_t pg_query__array_coerce_expr__get_packed_size + (const PgQuery__ArrayCoerceExpr *message); +size_t pg_query__array_coerce_expr__pack + (const PgQuery__ArrayCoerceExpr *message, + uint8_t *out); +size_t pg_query__array_coerce_expr__pack_to_buffer + (const PgQuery__ArrayCoerceExpr *message, + ProtobufCBuffer *buffer); +PgQuery__ArrayCoerceExpr * + pg_query__array_coerce_expr__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void pg_query__array_coerce_expr__free_unpacked + (PgQuery__ArrayCoerceExpr *message, + ProtobufCAllocator *allocator); +/* PgQuery__ConvertRowtypeExpr methods */ +void pg_query__convert_rowtype_expr__init + (PgQuery__ConvertRowtypeExpr *message); +size_t pg_query__convert_rowtype_expr__get_packed_size + (const PgQuery__ConvertRowtypeExpr *message); +size_t pg_query__convert_rowtype_expr__pack + (const PgQuery__ConvertRowtypeExpr *message, + uint8_t *out); +size_t pg_query__convert_rowtype_expr__pack_to_buffer + (const PgQuery__ConvertRowtypeExpr *message, + ProtobufCBuffer *buffer); +PgQuery__ConvertRowtypeExpr * + pg_query__convert_rowtype_expr__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void pg_query__convert_rowtype_expr__free_unpacked + (PgQuery__ConvertRowtypeExpr *message, + ProtobufCAllocator *allocator); +/* PgQuery__CollateExpr methods */ +void pg_query__collate_expr__init + (PgQuery__CollateExpr *message); +size_t pg_query__collate_expr__get_packed_size + (const PgQuery__CollateExpr *message); +size_t pg_query__collate_expr__pack + (const PgQuery__CollateExpr *message, + uint8_t *out); +size_t pg_query__collate_expr__pack_to_buffer + (const PgQuery__CollateExpr *message, + ProtobufCBuffer *buffer); +PgQuery__CollateExpr * + pg_query__collate_expr__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void pg_query__collate_expr__free_unpacked + (PgQuery__CollateExpr *message, + ProtobufCAllocator *allocator); +/* PgQuery__CaseExpr methods */ +void pg_query__case_expr__init + (PgQuery__CaseExpr *message); +size_t pg_query__case_expr__get_packed_size + (const PgQuery__CaseExpr *message); +size_t pg_query__case_expr__pack + (const PgQuery__CaseExpr *message, + uint8_t *out); +size_t pg_query__case_expr__pack_to_buffer + (const PgQuery__CaseExpr *message, + ProtobufCBuffer *buffer); +PgQuery__CaseExpr * + pg_query__case_expr__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void pg_query__case_expr__free_unpacked + (PgQuery__CaseExpr *message, + ProtobufCAllocator *allocator); +/* PgQuery__CaseWhen methods */ +void pg_query__case_when__init + (PgQuery__CaseWhen *message); +size_t pg_query__case_when__get_packed_size + (const PgQuery__CaseWhen *message); +size_t pg_query__case_when__pack + (const PgQuery__CaseWhen *message, + uint8_t *out); +size_t pg_query__case_when__pack_to_buffer + (const PgQuery__CaseWhen *message, + ProtobufCBuffer *buffer); +PgQuery__CaseWhen * + pg_query__case_when__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void pg_query__case_when__free_unpacked + (PgQuery__CaseWhen *message, + ProtobufCAllocator *allocator); +/* PgQuery__CaseTestExpr methods */ +void pg_query__case_test_expr__init + (PgQuery__CaseTestExpr *message); +size_t pg_query__case_test_expr__get_packed_size + (const PgQuery__CaseTestExpr *message); +size_t pg_query__case_test_expr__pack + (const PgQuery__CaseTestExpr *message, + uint8_t *out); +size_t pg_query__case_test_expr__pack_to_buffer + (const PgQuery__CaseTestExpr *message, + ProtobufCBuffer *buffer); +PgQuery__CaseTestExpr * + pg_query__case_test_expr__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void pg_query__case_test_expr__free_unpacked + (PgQuery__CaseTestExpr *message, + ProtobufCAllocator *allocator); +/* PgQuery__ArrayExpr methods */ +void pg_query__array_expr__init + (PgQuery__ArrayExpr *message); +size_t pg_query__array_expr__get_packed_size + (const PgQuery__ArrayExpr *message); +size_t pg_query__array_expr__pack + (const PgQuery__ArrayExpr *message, + uint8_t *out); +size_t pg_query__array_expr__pack_to_buffer + (const PgQuery__ArrayExpr *message, + ProtobufCBuffer *buffer); +PgQuery__ArrayExpr * + pg_query__array_expr__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void pg_query__array_expr__free_unpacked + (PgQuery__ArrayExpr *message, + ProtobufCAllocator *allocator); +/* PgQuery__RowExpr methods */ +void pg_query__row_expr__init + (PgQuery__RowExpr *message); +size_t pg_query__row_expr__get_packed_size + (const PgQuery__RowExpr *message); +size_t pg_query__row_expr__pack + (const PgQuery__RowExpr *message, + uint8_t *out); +size_t pg_query__row_expr__pack_to_buffer + (const PgQuery__RowExpr *message, + ProtobufCBuffer *buffer); +PgQuery__RowExpr * + pg_query__row_expr__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void pg_query__row_expr__free_unpacked + (PgQuery__RowExpr *message, + ProtobufCAllocator *allocator); +/* PgQuery__RowCompareExpr methods */ +void pg_query__row_compare_expr__init + (PgQuery__RowCompareExpr *message); +size_t pg_query__row_compare_expr__get_packed_size + (const PgQuery__RowCompareExpr *message); +size_t pg_query__row_compare_expr__pack + (const PgQuery__RowCompareExpr *message, + uint8_t *out); +size_t pg_query__row_compare_expr__pack_to_buffer + (const PgQuery__RowCompareExpr *message, + ProtobufCBuffer *buffer); +PgQuery__RowCompareExpr * + pg_query__row_compare_expr__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void pg_query__row_compare_expr__free_unpacked + (PgQuery__RowCompareExpr *message, + ProtobufCAllocator *allocator); +/* PgQuery__CoalesceExpr methods */ +void pg_query__coalesce_expr__init + (PgQuery__CoalesceExpr *message); +size_t pg_query__coalesce_expr__get_packed_size + (const PgQuery__CoalesceExpr *message); +size_t pg_query__coalesce_expr__pack + (const PgQuery__CoalesceExpr *message, + uint8_t *out); +size_t pg_query__coalesce_expr__pack_to_buffer + (const PgQuery__CoalesceExpr *message, + ProtobufCBuffer *buffer); +PgQuery__CoalesceExpr * + pg_query__coalesce_expr__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void pg_query__coalesce_expr__free_unpacked + (PgQuery__CoalesceExpr *message, + ProtobufCAllocator *allocator); +/* PgQuery__MinMaxExpr methods */ +void pg_query__min_max_expr__init + (PgQuery__MinMaxExpr *message); +size_t pg_query__min_max_expr__get_packed_size + (const PgQuery__MinMaxExpr *message); +size_t pg_query__min_max_expr__pack + (const PgQuery__MinMaxExpr *message, + uint8_t *out); +size_t pg_query__min_max_expr__pack_to_buffer + (const PgQuery__MinMaxExpr *message, + ProtobufCBuffer *buffer); +PgQuery__MinMaxExpr * + pg_query__min_max_expr__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void pg_query__min_max_expr__free_unpacked + (PgQuery__MinMaxExpr *message, + ProtobufCAllocator *allocator); +/* PgQuery__SQLValueFunction methods */ +void pg_query__sqlvalue_function__init + (PgQuery__SQLValueFunction *message); +size_t pg_query__sqlvalue_function__get_packed_size + (const PgQuery__SQLValueFunction *message); +size_t pg_query__sqlvalue_function__pack + (const PgQuery__SQLValueFunction *message, + uint8_t *out); +size_t pg_query__sqlvalue_function__pack_to_buffer + (const PgQuery__SQLValueFunction *message, + ProtobufCBuffer *buffer); +PgQuery__SQLValueFunction * + pg_query__sqlvalue_function__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void pg_query__sqlvalue_function__free_unpacked + (PgQuery__SQLValueFunction *message, + ProtobufCAllocator *allocator); +/* PgQuery__XmlExpr methods */ +void pg_query__xml_expr__init + (PgQuery__XmlExpr *message); +size_t pg_query__xml_expr__get_packed_size + (const PgQuery__XmlExpr *message); +size_t pg_query__xml_expr__pack + (const PgQuery__XmlExpr *message, + uint8_t *out); +size_t pg_query__xml_expr__pack_to_buffer + (const PgQuery__XmlExpr *message, + ProtobufCBuffer *buffer); +PgQuery__XmlExpr * + pg_query__xml_expr__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void pg_query__xml_expr__free_unpacked + (PgQuery__XmlExpr *message, + ProtobufCAllocator *allocator); +/* PgQuery__NullTest methods */ +void pg_query__null_test__init + (PgQuery__NullTest *message); +size_t pg_query__null_test__get_packed_size + (const PgQuery__NullTest *message); +size_t pg_query__null_test__pack + (const PgQuery__NullTest *message, + uint8_t *out); +size_t pg_query__null_test__pack_to_buffer + (const PgQuery__NullTest *message, + ProtobufCBuffer *buffer); +PgQuery__NullTest * + pg_query__null_test__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void pg_query__null_test__free_unpacked + (PgQuery__NullTest *message, + ProtobufCAllocator *allocator); +/* PgQuery__BooleanTest methods */ +void pg_query__boolean_test__init + (PgQuery__BooleanTest *message); +size_t pg_query__boolean_test__get_packed_size + (const PgQuery__BooleanTest *message); +size_t pg_query__boolean_test__pack + (const PgQuery__BooleanTest *message, + uint8_t *out); +size_t pg_query__boolean_test__pack_to_buffer + (const PgQuery__BooleanTest *message, + ProtobufCBuffer *buffer); +PgQuery__BooleanTest * + pg_query__boolean_test__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void pg_query__boolean_test__free_unpacked + (PgQuery__BooleanTest *message, + ProtobufCAllocator *allocator); +/* PgQuery__CoerceToDomain methods */ +void pg_query__coerce_to_domain__init + (PgQuery__CoerceToDomain *message); +size_t pg_query__coerce_to_domain__get_packed_size + (const PgQuery__CoerceToDomain *message); +size_t pg_query__coerce_to_domain__pack + (const PgQuery__CoerceToDomain *message, + uint8_t *out); +size_t pg_query__coerce_to_domain__pack_to_buffer + (const PgQuery__CoerceToDomain *message, + ProtobufCBuffer *buffer); +PgQuery__CoerceToDomain * + pg_query__coerce_to_domain__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void pg_query__coerce_to_domain__free_unpacked + (PgQuery__CoerceToDomain *message, + ProtobufCAllocator *allocator); +/* PgQuery__CoerceToDomainValue methods */ +void pg_query__coerce_to_domain_value__init + (PgQuery__CoerceToDomainValue *message); +size_t pg_query__coerce_to_domain_value__get_packed_size + (const PgQuery__CoerceToDomainValue *message); +size_t pg_query__coerce_to_domain_value__pack + (const PgQuery__CoerceToDomainValue *message, + uint8_t *out); +size_t pg_query__coerce_to_domain_value__pack_to_buffer + (const PgQuery__CoerceToDomainValue *message, + ProtobufCBuffer *buffer); +PgQuery__CoerceToDomainValue * + pg_query__coerce_to_domain_value__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void pg_query__coerce_to_domain_value__free_unpacked + (PgQuery__CoerceToDomainValue *message, + ProtobufCAllocator *allocator); +/* PgQuery__SetToDefault methods */ +void pg_query__set_to_default__init + (PgQuery__SetToDefault *message); +size_t pg_query__set_to_default__get_packed_size + (const PgQuery__SetToDefault *message); +size_t pg_query__set_to_default__pack + (const PgQuery__SetToDefault *message, + uint8_t *out); +size_t pg_query__set_to_default__pack_to_buffer + (const PgQuery__SetToDefault *message, + ProtobufCBuffer *buffer); +PgQuery__SetToDefault * + pg_query__set_to_default__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void pg_query__set_to_default__free_unpacked + (PgQuery__SetToDefault *message, + ProtobufCAllocator *allocator); +/* PgQuery__CurrentOfExpr methods */ +void pg_query__current_of_expr__init + (PgQuery__CurrentOfExpr *message); +size_t pg_query__current_of_expr__get_packed_size + (const PgQuery__CurrentOfExpr *message); +size_t pg_query__current_of_expr__pack + (const PgQuery__CurrentOfExpr *message, + uint8_t *out); +size_t pg_query__current_of_expr__pack_to_buffer + (const PgQuery__CurrentOfExpr *message, + ProtobufCBuffer *buffer); +PgQuery__CurrentOfExpr * + pg_query__current_of_expr__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void pg_query__current_of_expr__free_unpacked + (PgQuery__CurrentOfExpr *message, + ProtobufCAllocator *allocator); +/* PgQuery__NextValueExpr methods */ +void pg_query__next_value_expr__init + (PgQuery__NextValueExpr *message); +size_t pg_query__next_value_expr__get_packed_size + (const PgQuery__NextValueExpr *message); +size_t pg_query__next_value_expr__pack + (const PgQuery__NextValueExpr *message, + uint8_t *out); +size_t pg_query__next_value_expr__pack_to_buffer + (const PgQuery__NextValueExpr *message, + ProtobufCBuffer *buffer); +PgQuery__NextValueExpr * + pg_query__next_value_expr__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void pg_query__next_value_expr__free_unpacked + (PgQuery__NextValueExpr *message, + ProtobufCAllocator *allocator); +/* PgQuery__InferenceElem methods */ +void pg_query__inference_elem__init + (PgQuery__InferenceElem *message); +size_t pg_query__inference_elem__get_packed_size + (const PgQuery__InferenceElem *message); +size_t pg_query__inference_elem__pack + (const PgQuery__InferenceElem *message, + uint8_t *out); +size_t pg_query__inference_elem__pack_to_buffer + (const PgQuery__InferenceElem *message, + ProtobufCBuffer *buffer); +PgQuery__InferenceElem * + pg_query__inference_elem__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void pg_query__inference_elem__free_unpacked + (PgQuery__InferenceElem *message, + ProtobufCAllocator *allocator); +/* PgQuery__TargetEntry methods */ +void pg_query__target_entry__init + (PgQuery__TargetEntry *message); +size_t pg_query__target_entry__get_packed_size + (const PgQuery__TargetEntry *message); +size_t pg_query__target_entry__pack + (const PgQuery__TargetEntry *message, + uint8_t *out); +size_t pg_query__target_entry__pack_to_buffer + (const PgQuery__TargetEntry *message, + ProtobufCBuffer *buffer); +PgQuery__TargetEntry * + pg_query__target_entry__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void pg_query__target_entry__free_unpacked + (PgQuery__TargetEntry *message, + ProtobufCAllocator *allocator); +/* PgQuery__RangeTblRef methods */ +void pg_query__range_tbl_ref__init + (PgQuery__RangeTblRef *message); +size_t pg_query__range_tbl_ref__get_packed_size + (const PgQuery__RangeTblRef *message); +size_t pg_query__range_tbl_ref__pack + (const PgQuery__RangeTblRef *message, + uint8_t *out); +size_t pg_query__range_tbl_ref__pack_to_buffer + (const PgQuery__RangeTblRef *message, + ProtobufCBuffer *buffer); +PgQuery__RangeTblRef * + pg_query__range_tbl_ref__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void pg_query__range_tbl_ref__free_unpacked + (PgQuery__RangeTblRef *message, + ProtobufCAllocator *allocator); +/* PgQuery__JoinExpr methods */ +void pg_query__join_expr__init + (PgQuery__JoinExpr *message); +size_t pg_query__join_expr__get_packed_size + (const PgQuery__JoinExpr *message); +size_t pg_query__join_expr__pack + (const PgQuery__JoinExpr *message, + uint8_t *out); +size_t pg_query__join_expr__pack_to_buffer + (const PgQuery__JoinExpr *message, + ProtobufCBuffer *buffer); +PgQuery__JoinExpr * + pg_query__join_expr__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void pg_query__join_expr__free_unpacked + (PgQuery__JoinExpr *message, + ProtobufCAllocator *allocator); +/* PgQuery__FromExpr methods */ +void pg_query__from_expr__init + (PgQuery__FromExpr *message); +size_t pg_query__from_expr__get_packed_size + (const PgQuery__FromExpr *message); +size_t pg_query__from_expr__pack + (const PgQuery__FromExpr *message, + uint8_t *out); +size_t pg_query__from_expr__pack_to_buffer + (const PgQuery__FromExpr *message, + ProtobufCBuffer *buffer); +PgQuery__FromExpr * + pg_query__from_expr__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void pg_query__from_expr__free_unpacked + (PgQuery__FromExpr *message, + ProtobufCAllocator *allocator); +/* PgQuery__OnConflictExpr methods */ +void pg_query__on_conflict_expr__init + (PgQuery__OnConflictExpr *message); +size_t pg_query__on_conflict_expr__get_packed_size + (const PgQuery__OnConflictExpr *message); +size_t pg_query__on_conflict_expr__pack + (const PgQuery__OnConflictExpr *message, + uint8_t *out); +size_t pg_query__on_conflict_expr__pack_to_buffer + (const PgQuery__OnConflictExpr *message, + ProtobufCBuffer *buffer); +PgQuery__OnConflictExpr * + pg_query__on_conflict_expr__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void pg_query__on_conflict_expr__free_unpacked + (PgQuery__OnConflictExpr *message, + ProtobufCAllocator *allocator); +/* PgQuery__IntoClause methods */ +void pg_query__into_clause__init + (PgQuery__IntoClause *message); +size_t pg_query__into_clause__get_packed_size + (const PgQuery__IntoClause *message); +size_t pg_query__into_clause__pack + (const PgQuery__IntoClause *message, + uint8_t *out); +size_t pg_query__into_clause__pack_to_buffer + (const PgQuery__IntoClause *message, + ProtobufCBuffer *buffer); +PgQuery__IntoClause * + pg_query__into_clause__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void pg_query__into_clause__free_unpacked + (PgQuery__IntoClause *message, + ProtobufCAllocator *allocator); +/* PgQuery__RawStmt methods */ +void pg_query__raw_stmt__init + (PgQuery__RawStmt *message); +size_t pg_query__raw_stmt__get_packed_size + (const PgQuery__RawStmt *message); +size_t pg_query__raw_stmt__pack + (const PgQuery__RawStmt *message, + uint8_t *out); +size_t pg_query__raw_stmt__pack_to_buffer + (const PgQuery__RawStmt *message, + ProtobufCBuffer *buffer); +PgQuery__RawStmt * + pg_query__raw_stmt__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void pg_query__raw_stmt__free_unpacked + (PgQuery__RawStmt *message, + ProtobufCAllocator *allocator); +/* PgQuery__Query methods */ +void pg_query__query__init + (PgQuery__Query *message); +size_t pg_query__query__get_packed_size + (const PgQuery__Query *message); +size_t pg_query__query__pack + (const PgQuery__Query *message, + uint8_t *out); +size_t pg_query__query__pack_to_buffer + (const PgQuery__Query *message, + ProtobufCBuffer *buffer); +PgQuery__Query * + pg_query__query__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void pg_query__query__free_unpacked + (PgQuery__Query *message, + ProtobufCAllocator *allocator); +/* PgQuery__InsertStmt methods */ +void pg_query__insert_stmt__init + (PgQuery__InsertStmt *message); +size_t pg_query__insert_stmt__get_packed_size + (const PgQuery__InsertStmt *message); +size_t pg_query__insert_stmt__pack + (const PgQuery__InsertStmt *message, + uint8_t *out); +size_t pg_query__insert_stmt__pack_to_buffer + (const PgQuery__InsertStmt *message, + ProtobufCBuffer *buffer); +PgQuery__InsertStmt * + pg_query__insert_stmt__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void pg_query__insert_stmt__free_unpacked + (PgQuery__InsertStmt *message, + ProtobufCAllocator *allocator); +/* PgQuery__DeleteStmt methods */ +void pg_query__delete_stmt__init + (PgQuery__DeleteStmt *message); +size_t pg_query__delete_stmt__get_packed_size + (const PgQuery__DeleteStmt *message); +size_t pg_query__delete_stmt__pack + (const PgQuery__DeleteStmt *message, + uint8_t *out); +size_t pg_query__delete_stmt__pack_to_buffer + (const PgQuery__DeleteStmt *message, + ProtobufCBuffer *buffer); +PgQuery__DeleteStmt * + pg_query__delete_stmt__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void pg_query__delete_stmt__free_unpacked + (PgQuery__DeleteStmt *message, + ProtobufCAllocator *allocator); +/* PgQuery__UpdateStmt methods */ +void pg_query__update_stmt__init + (PgQuery__UpdateStmt *message); +size_t pg_query__update_stmt__get_packed_size + (const PgQuery__UpdateStmt *message); +size_t pg_query__update_stmt__pack + (const PgQuery__UpdateStmt *message, + uint8_t *out); +size_t pg_query__update_stmt__pack_to_buffer + (const PgQuery__UpdateStmt *message, + ProtobufCBuffer *buffer); +PgQuery__UpdateStmt * + pg_query__update_stmt__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void pg_query__update_stmt__free_unpacked + (PgQuery__UpdateStmt *message, + ProtobufCAllocator *allocator); +/* PgQuery__SelectStmt methods */ +void pg_query__select_stmt__init + (PgQuery__SelectStmt *message); +size_t pg_query__select_stmt__get_packed_size + (const PgQuery__SelectStmt *message); +size_t pg_query__select_stmt__pack + (const PgQuery__SelectStmt *message, + uint8_t *out); +size_t pg_query__select_stmt__pack_to_buffer + (const PgQuery__SelectStmt *message, + ProtobufCBuffer *buffer); +PgQuery__SelectStmt * + pg_query__select_stmt__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void pg_query__select_stmt__free_unpacked + (PgQuery__SelectStmt *message, + ProtobufCAllocator *allocator); +/* PgQuery__AlterTableStmt methods */ +void pg_query__alter_table_stmt__init + (PgQuery__AlterTableStmt *message); +size_t pg_query__alter_table_stmt__get_packed_size + (const PgQuery__AlterTableStmt *message); +size_t pg_query__alter_table_stmt__pack + (const PgQuery__AlterTableStmt *message, + uint8_t *out); +size_t pg_query__alter_table_stmt__pack_to_buffer + (const PgQuery__AlterTableStmt *message, + ProtobufCBuffer *buffer); +PgQuery__AlterTableStmt * + pg_query__alter_table_stmt__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void pg_query__alter_table_stmt__free_unpacked + (PgQuery__AlterTableStmt *message, + ProtobufCAllocator *allocator); +/* PgQuery__AlterTableCmd methods */ +void pg_query__alter_table_cmd__init + (PgQuery__AlterTableCmd *message); +size_t pg_query__alter_table_cmd__get_packed_size + (const PgQuery__AlterTableCmd *message); +size_t pg_query__alter_table_cmd__pack + (const PgQuery__AlterTableCmd *message, + uint8_t *out); +size_t pg_query__alter_table_cmd__pack_to_buffer + (const PgQuery__AlterTableCmd *message, + ProtobufCBuffer *buffer); +PgQuery__AlterTableCmd * + pg_query__alter_table_cmd__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void pg_query__alter_table_cmd__free_unpacked + (PgQuery__AlterTableCmd *message, + ProtobufCAllocator *allocator); +/* PgQuery__AlterDomainStmt methods */ +void pg_query__alter_domain_stmt__init + (PgQuery__AlterDomainStmt *message); +size_t pg_query__alter_domain_stmt__get_packed_size + (const PgQuery__AlterDomainStmt *message); +size_t pg_query__alter_domain_stmt__pack + (const PgQuery__AlterDomainStmt *message, + uint8_t *out); +size_t pg_query__alter_domain_stmt__pack_to_buffer + (const PgQuery__AlterDomainStmt *message, + ProtobufCBuffer *buffer); +PgQuery__AlterDomainStmt * + pg_query__alter_domain_stmt__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void pg_query__alter_domain_stmt__free_unpacked + (PgQuery__AlterDomainStmt *message, + ProtobufCAllocator *allocator); +/* PgQuery__SetOperationStmt methods */ +void pg_query__set_operation_stmt__init + (PgQuery__SetOperationStmt *message); +size_t pg_query__set_operation_stmt__get_packed_size + (const PgQuery__SetOperationStmt *message); +size_t pg_query__set_operation_stmt__pack + (const PgQuery__SetOperationStmt *message, + uint8_t *out); +size_t pg_query__set_operation_stmt__pack_to_buffer + (const PgQuery__SetOperationStmt *message, + ProtobufCBuffer *buffer); +PgQuery__SetOperationStmt * + pg_query__set_operation_stmt__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void pg_query__set_operation_stmt__free_unpacked + (PgQuery__SetOperationStmt *message, + ProtobufCAllocator *allocator); +/* PgQuery__GrantStmt methods */ +void pg_query__grant_stmt__init + (PgQuery__GrantStmt *message); +size_t pg_query__grant_stmt__get_packed_size + (const PgQuery__GrantStmt *message); +size_t pg_query__grant_stmt__pack + (const PgQuery__GrantStmt *message, + uint8_t *out); +size_t pg_query__grant_stmt__pack_to_buffer + (const PgQuery__GrantStmt *message, + ProtobufCBuffer *buffer); +PgQuery__GrantStmt * + pg_query__grant_stmt__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void pg_query__grant_stmt__free_unpacked + (PgQuery__GrantStmt *message, + ProtobufCAllocator *allocator); +/* PgQuery__GrantRoleStmt methods */ +void pg_query__grant_role_stmt__init + (PgQuery__GrantRoleStmt *message); +size_t pg_query__grant_role_stmt__get_packed_size + (const PgQuery__GrantRoleStmt *message); +size_t pg_query__grant_role_stmt__pack + (const PgQuery__GrantRoleStmt *message, + uint8_t *out); +size_t pg_query__grant_role_stmt__pack_to_buffer + (const PgQuery__GrantRoleStmt *message, + ProtobufCBuffer *buffer); +PgQuery__GrantRoleStmt * + pg_query__grant_role_stmt__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void pg_query__grant_role_stmt__free_unpacked + (PgQuery__GrantRoleStmt *message, + ProtobufCAllocator *allocator); +/* PgQuery__AlterDefaultPrivilegesStmt methods */ +void pg_query__alter_default_privileges_stmt__init + (PgQuery__AlterDefaultPrivilegesStmt *message); +size_t pg_query__alter_default_privileges_stmt__get_packed_size + (const PgQuery__AlterDefaultPrivilegesStmt *message); +size_t pg_query__alter_default_privileges_stmt__pack + (const PgQuery__AlterDefaultPrivilegesStmt *message, + uint8_t *out); +size_t pg_query__alter_default_privileges_stmt__pack_to_buffer + (const PgQuery__AlterDefaultPrivilegesStmt *message, + ProtobufCBuffer *buffer); +PgQuery__AlterDefaultPrivilegesStmt * + pg_query__alter_default_privileges_stmt__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void pg_query__alter_default_privileges_stmt__free_unpacked + (PgQuery__AlterDefaultPrivilegesStmt *message, + ProtobufCAllocator *allocator); +/* PgQuery__ClosePortalStmt methods */ +void pg_query__close_portal_stmt__init + (PgQuery__ClosePortalStmt *message); +size_t pg_query__close_portal_stmt__get_packed_size + (const PgQuery__ClosePortalStmt *message); +size_t pg_query__close_portal_stmt__pack + (const PgQuery__ClosePortalStmt *message, + uint8_t *out); +size_t pg_query__close_portal_stmt__pack_to_buffer + (const PgQuery__ClosePortalStmt *message, + ProtobufCBuffer *buffer); +PgQuery__ClosePortalStmt * + pg_query__close_portal_stmt__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void pg_query__close_portal_stmt__free_unpacked + (PgQuery__ClosePortalStmt *message, + ProtobufCAllocator *allocator); +/* PgQuery__ClusterStmt methods */ +void pg_query__cluster_stmt__init + (PgQuery__ClusterStmt *message); +size_t pg_query__cluster_stmt__get_packed_size + (const PgQuery__ClusterStmt *message); +size_t pg_query__cluster_stmt__pack + (const PgQuery__ClusterStmt *message, + uint8_t *out); +size_t pg_query__cluster_stmt__pack_to_buffer + (const PgQuery__ClusterStmt *message, + ProtobufCBuffer *buffer); +PgQuery__ClusterStmt * + pg_query__cluster_stmt__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void pg_query__cluster_stmt__free_unpacked + (PgQuery__ClusterStmt *message, + ProtobufCAllocator *allocator); +/* PgQuery__CopyStmt methods */ +void pg_query__copy_stmt__init + (PgQuery__CopyStmt *message); +size_t pg_query__copy_stmt__get_packed_size + (const PgQuery__CopyStmt *message); +size_t pg_query__copy_stmt__pack + (const PgQuery__CopyStmt *message, + uint8_t *out); +size_t pg_query__copy_stmt__pack_to_buffer + (const PgQuery__CopyStmt *message, + ProtobufCBuffer *buffer); +PgQuery__CopyStmt * + pg_query__copy_stmt__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void pg_query__copy_stmt__free_unpacked + (PgQuery__CopyStmt *message, + ProtobufCAllocator *allocator); +/* PgQuery__CreateStmt methods */ +void pg_query__create_stmt__init + (PgQuery__CreateStmt *message); +size_t pg_query__create_stmt__get_packed_size + (const PgQuery__CreateStmt *message); +size_t pg_query__create_stmt__pack + (const PgQuery__CreateStmt *message, + uint8_t *out); +size_t pg_query__create_stmt__pack_to_buffer + (const PgQuery__CreateStmt *message, + ProtobufCBuffer *buffer); +PgQuery__CreateStmt * + pg_query__create_stmt__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void pg_query__create_stmt__free_unpacked + (PgQuery__CreateStmt *message, + ProtobufCAllocator *allocator); +/* PgQuery__DefineStmt methods */ +void pg_query__define_stmt__init + (PgQuery__DefineStmt *message); +size_t pg_query__define_stmt__get_packed_size + (const PgQuery__DefineStmt *message); +size_t pg_query__define_stmt__pack + (const PgQuery__DefineStmt *message, + uint8_t *out); +size_t pg_query__define_stmt__pack_to_buffer + (const PgQuery__DefineStmt *message, + ProtobufCBuffer *buffer); +PgQuery__DefineStmt * + pg_query__define_stmt__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void pg_query__define_stmt__free_unpacked + (PgQuery__DefineStmt *message, + ProtobufCAllocator *allocator); +/* PgQuery__DropStmt methods */ +void pg_query__drop_stmt__init + (PgQuery__DropStmt *message); +size_t pg_query__drop_stmt__get_packed_size + (const PgQuery__DropStmt *message); +size_t pg_query__drop_stmt__pack + (const PgQuery__DropStmt *message, + uint8_t *out); +size_t pg_query__drop_stmt__pack_to_buffer + (const PgQuery__DropStmt *message, + ProtobufCBuffer *buffer); +PgQuery__DropStmt * + pg_query__drop_stmt__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void pg_query__drop_stmt__free_unpacked + (PgQuery__DropStmt *message, + ProtobufCAllocator *allocator); +/* PgQuery__TruncateStmt methods */ +void pg_query__truncate_stmt__init + (PgQuery__TruncateStmt *message); +size_t pg_query__truncate_stmt__get_packed_size + (const PgQuery__TruncateStmt *message); +size_t pg_query__truncate_stmt__pack + (const PgQuery__TruncateStmt *message, + uint8_t *out); +size_t pg_query__truncate_stmt__pack_to_buffer + (const PgQuery__TruncateStmt *message, + ProtobufCBuffer *buffer); +PgQuery__TruncateStmt * + pg_query__truncate_stmt__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void pg_query__truncate_stmt__free_unpacked + (PgQuery__TruncateStmt *message, + ProtobufCAllocator *allocator); +/* PgQuery__CommentStmt methods */ +void pg_query__comment_stmt__init + (PgQuery__CommentStmt *message); +size_t pg_query__comment_stmt__get_packed_size + (const PgQuery__CommentStmt *message); +size_t pg_query__comment_stmt__pack + (const PgQuery__CommentStmt *message, + uint8_t *out); +size_t pg_query__comment_stmt__pack_to_buffer + (const PgQuery__CommentStmt *message, + ProtobufCBuffer *buffer); +PgQuery__CommentStmt * + pg_query__comment_stmt__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void pg_query__comment_stmt__free_unpacked + (PgQuery__CommentStmt *message, + ProtobufCAllocator *allocator); +/* PgQuery__FetchStmt methods */ +void pg_query__fetch_stmt__init + (PgQuery__FetchStmt *message); +size_t pg_query__fetch_stmt__get_packed_size + (const PgQuery__FetchStmt *message); +size_t pg_query__fetch_stmt__pack + (const PgQuery__FetchStmt *message, + uint8_t *out); +size_t pg_query__fetch_stmt__pack_to_buffer + (const PgQuery__FetchStmt *message, + ProtobufCBuffer *buffer); +PgQuery__FetchStmt * + pg_query__fetch_stmt__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void pg_query__fetch_stmt__free_unpacked + (PgQuery__FetchStmt *message, + ProtobufCAllocator *allocator); +/* PgQuery__IndexStmt methods */ +void pg_query__index_stmt__init + (PgQuery__IndexStmt *message); +size_t pg_query__index_stmt__get_packed_size + (const PgQuery__IndexStmt *message); +size_t pg_query__index_stmt__pack + (const PgQuery__IndexStmt *message, + uint8_t *out); +size_t pg_query__index_stmt__pack_to_buffer + (const PgQuery__IndexStmt *message, + ProtobufCBuffer *buffer); +PgQuery__IndexStmt * + pg_query__index_stmt__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void pg_query__index_stmt__free_unpacked + (PgQuery__IndexStmt *message, + ProtobufCAllocator *allocator); +/* PgQuery__CreateFunctionStmt methods */ +void pg_query__create_function_stmt__init + (PgQuery__CreateFunctionStmt *message); +size_t pg_query__create_function_stmt__get_packed_size + (const PgQuery__CreateFunctionStmt *message); +size_t pg_query__create_function_stmt__pack + (const PgQuery__CreateFunctionStmt *message, + uint8_t *out); +size_t pg_query__create_function_stmt__pack_to_buffer + (const PgQuery__CreateFunctionStmt *message, + ProtobufCBuffer *buffer); +PgQuery__CreateFunctionStmt * + pg_query__create_function_stmt__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void pg_query__create_function_stmt__free_unpacked + (PgQuery__CreateFunctionStmt *message, + ProtobufCAllocator *allocator); +/* PgQuery__AlterFunctionStmt methods */ +void pg_query__alter_function_stmt__init + (PgQuery__AlterFunctionStmt *message); +size_t pg_query__alter_function_stmt__get_packed_size + (const PgQuery__AlterFunctionStmt *message); +size_t pg_query__alter_function_stmt__pack + (const PgQuery__AlterFunctionStmt *message, + uint8_t *out); +size_t pg_query__alter_function_stmt__pack_to_buffer + (const PgQuery__AlterFunctionStmt *message, + ProtobufCBuffer *buffer); +PgQuery__AlterFunctionStmt * + pg_query__alter_function_stmt__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void pg_query__alter_function_stmt__free_unpacked + (PgQuery__AlterFunctionStmt *message, + ProtobufCAllocator *allocator); +/* PgQuery__DoStmt methods */ +void pg_query__do_stmt__init + (PgQuery__DoStmt *message); +size_t pg_query__do_stmt__get_packed_size + (const PgQuery__DoStmt *message); +size_t pg_query__do_stmt__pack + (const PgQuery__DoStmt *message, + uint8_t *out); +size_t pg_query__do_stmt__pack_to_buffer + (const PgQuery__DoStmt *message, + ProtobufCBuffer *buffer); +PgQuery__DoStmt * + pg_query__do_stmt__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void pg_query__do_stmt__free_unpacked + (PgQuery__DoStmt *message, + ProtobufCAllocator *allocator); +/* PgQuery__RenameStmt methods */ +void pg_query__rename_stmt__init + (PgQuery__RenameStmt *message); +size_t pg_query__rename_stmt__get_packed_size + (const PgQuery__RenameStmt *message); +size_t pg_query__rename_stmt__pack + (const PgQuery__RenameStmt *message, + uint8_t *out); +size_t pg_query__rename_stmt__pack_to_buffer + (const PgQuery__RenameStmt *message, + ProtobufCBuffer *buffer); +PgQuery__RenameStmt * + pg_query__rename_stmt__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void pg_query__rename_stmt__free_unpacked + (PgQuery__RenameStmt *message, + ProtobufCAllocator *allocator); +/* PgQuery__RuleStmt methods */ +void pg_query__rule_stmt__init + (PgQuery__RuleStmt *message); +size_t pg_query__rule_stmt__get_packed_size + (const PgQuery__RuleStmt *message); +size_t pg_query__rule_stmt__pack + (const PgQuery__RuleStmt *message, + uint8_t *out); +size_t pg_query__rule_stmt__pack_to_buffer + (const PgQuery__RuleStmt *message, + ProtobufCBuffer *buffer); +PgQuery__RuleStmt * + pg_query__rule_stmt__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void pg_query__rule_stmt__free_unpacked + (PgQuery__RuleStmt *message, + ProtobufCAllocator *allocator); +/* PgQuery__NotifyStmt methods */ +void pg_query__notify_stmt__init + (PgQuery__NotifyStmt *message); +size_t pg_query__notify_stmt__get_packed_size + (const PgQuery__NotifyStmt *message); +size_t pg_query__notify_stmt__pack + (const PgQuery__NotifyStmt *message, + uint8_t *out); +size_t pg_query__notify_stmt__pack_to_buffer + (const PgQuery__NotifyStmt *message, + ProtobufCBuffer *buffer); +PgQuery__NotifyStmt * + pg_query__notify_stmt__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void pg_query__notify_stmt__free_unpacked + (PgQuery__NotifyStmt *message, + ProtobufCAllocator *allocator); +/* PgQuery__ListenStmt methods */ +void pg_query__listen_stmt__init + (PgQuery__ListenStmt *message); +size_t pg_query__listen_stmt__get_packed_size + (const PgQuery__ListenStmt *message); +size_t pg_query__listen_stmt__pack + (const PgQuery__ListenStmt *message, + uint8_t *out); +size_t pg_query__listen_stmt__pack_to_buffer + (const PgQuery__ListenStmt *message, + ProtobufCBuffer *buffer); +PgQuery__ListenStmt * + pg_query__listen_stmt__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void pg_query__listen_stmt__free_unpacked + (PgQuery__ListenStmt *message, + ProtobufCAllocator *allocator); +/* PgQuery__UnlistenStmt methods */ +void pg_query__unlisten_stmt__init + (PgQuery__UnlistenStmt *message); +size_t pg_query__unlisten_stmt__get_packed_size + (const PgQuery__UnlistenStmt *message); +size_t pg_query__unlisten_stmt__pack + (const PgQuery__UnlistenStmt *message, + uint8_t *out); +size_t pg_query__unlisten_stmt__pack_to_buffer + (const PgQuery__UnlistenStmt *message, + ProtobufCBuffer *buffer); +PgQuery__UnlistenStmt * + pg_query__unlisten_stmt__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void pg_query__unlisten_stmt__free_unpacked + (PgQuery__UnlistenStmt *message, + ProtobufCAllocator *allocator); +/* PgQuery__TransactionStmt methods */ +void pg_query__transaction_stmt__init + (PgQuery__TransactionStmt *message); +size_t pg_query__transaction_stmt__get_packed_size + (const PgQuery__TransactionStmt *message); +size_t pg_query__transaction_stmt__pack + (const PgQuery__TransactionStmt *message, + uint8_t *out); +size_t pg_query__transaction_stmt__pack_to_buffer + (const PgQuery__TransactionStmt *message, + ProtobufCBuffer *buffer); +PgQuery__TransactionStmt * + pg_query__transaction_stmt__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void pg_query__transaction_stmt__free_unpacked + (PgQuery__TransactionStmt *message, + ProtobufCAllocator *allocator); +/* PgQuery__ViewStmt methods */ +void pg_query__view_stmt__init + (PgQuery__ViewStmt *message); +size_t pg_query__view_stmt__get_packed_size + (const PgQuery__ViewStmt *message); +size_t pg_query__view_stmt__pack + (const PgQuery__ViewStmt *message, + uint8_t *out); +size_t pg_query__view_stmt__pack_to_buffer + (const PgQuery__ViewStmt *message, + ProtobufCBuffer *buffer); +PgQuery__ViewStmt * + pg_query__view_stmt__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void pg_query__view_stmt__free_unpacked + (PgQuery__ViewStmt *message, + ProtobufCAllocator *allocator); +/* PgQuery__LoadStmt methods */ +void pg_query__load_stmt__init + (PgQuery__LoadStmt *message); +size_t pg_query__load_stmt__get_packed_size + (const PgQuery__LoadStmt *message); +size_t pg_query__load_stmt__pack + (const PgQuery__LoadStmt *message, + uint8_t *out); +size_t pg_query__load_stmt__pack_to_buffer + (const PgQuery__LoadStmt *message, + ProtobufCBuffer *buffer); +PgQuery__LoadStmt * + pg_query__load_stmt__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void pg_query__load_stmt__free_unpacked + (PgQuery__LoadStmt *message, + ProtobufCAllocator *allocator); +/* PgQuery__CreateDomainStmt methods */ +void pg_query__create_domain_stmt__init + (PgQuery__CreateDomainStmt *message); +size_t pg_query__create_domain_stmt__get_packed_size + (const PgQuery__CreateDomainStmt *message); +size_t pg_query__create_domain_stmt__pack + (const PgQuery__CreateDomainStmt *message, + uint8_t *out); +size_t pg_query__create_domain_stmt__pack_to_buffer + (const PgQuery__CreateDomainStmt *message, + ProtobufCBuffer *buffer); +PgQuery__CreateDomainStmt * + pg_query__create_domain_stmt__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void pg_query__create_domain_stmt__free_unpacked + (PgQuery__CreateDomainStmt *message, + ProtobufCAllocator *allocator); +/* PgQuery__CreatedbStmt methods */ +void pg_query__createdb_stmt__init + (PgQuery__CreatedbStmt *message); +size_t pg_query__createdb_stmt__get_packed_size + (const PgQuery__CreatedbStmt *message); +size_t pg_query__createdb_stmt__pack + (const PgQuery__CreatedbStmt *message, + uint8_t *out); +size_t pg_query__createdb_stmt__pack_to_buffer + (const PgQuery__CreatedbStmt *message, + ProtobufCBuffer *buffer); +PgQuery__CreatedbStmt * + pg_query__createdb_stmt__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void pg_query__createdb_stmt__free_unpacked + (PgQuery__CreatedbStmt *message, + ProtobufCAllocator *allocator); +/* PgQuery__DropdbStmt methods */ +void pg_query__dropdb_stmt__init + (PgQuery__DropdbStmt *message); +size_t pg_query__dropdb_stmt__get_packed_size + (const PgQuery__DropdbStmt *message); +size_t pg_query__dropdb_stmt__pack + (const PgQuery__DropdbStmt *message, + uint8_t *out); +size_t pg_query__dropdb_stmt__pack_to_buffer + (const PgQuery__DropdbStmt *message, + ProtobufCBuffer *buffer); +PgQuery__DropdbStmt * + pg_query__dropdb_stmt__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void pg_query__dropdb_stmt__free_unpacked + (PgQuery__DropdbStmt *message, + ProtobufCAllocator *allocator); +/* PgQuery__VacuumStmt methods */ +void pg_query__vacuum_stmt__init + (PgQuery__VacuumStmt *message); +size_t pg_query__vacuum_stmt__get_packed_size + (const PgQuery__VacuumStmt *message); +size_t pg_query__vacuum_stmt__pack + (const PgQuery__VacuumStmt *message, + uint8_t *out); +size_t pg_query__vacuum_stmt__pack_to_buffer + (const PgQuery__VacuumStmt *message, + ProtobufCBuffer *buffer); +PgQuery__VacuumStmt * + pg_query__vacuum_stmt__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void pg_query__vacuum_stmt__free_unpacked + (PgQuery__VacuumStmt *message, + ProtobufCAllocator *allocator); +/* PgQuery__ExplainStmt methods */ +void pg_query__explain_stmt__init + (PgQuery__ExplainStmt *message); +size_t pg_query__explain_stmt__get_packed_size + (const PgQuery__ExplainStmt *message); +size_t pg_query__explain_stmt__pack + (const PgQuery__ExplainStmt *message, + uint8_t *out); +size_t pg_query__explain_stmt__pack_to_buffer + (const PgQuery__ExplainStmt *message, + ProtobufCBuffer *buffer); +PgQuery__ExplainStmt * + pg_query__explain_stmt__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void pg_query__explain_stmt__free_unpacked + (PgQuery__ExplainStmt *message, + ProtobufCAllocator *allocator); +/* PgQuery__CreateTableAsStmt methods */ +void pg_query__create_table_as_stmt__init + (PgQuery__CreateTableAsStmt *message); +size_t pg_query__create_table_as_stmt__get_packed_size + (const PgQuery__CreateTableAsStmt *message); +size_t pg_query__create_table_as_stmt__pack + (const PgQuery__CreateTableAsStmt *message, + uint8_t *out); +size_t pg_query__create_table_as_stmt__pack_to_buffer + (const PgQuery__CreateTableAsStmt *message, + ProtobufCBuffer *buffer); +PgQuery__CreateTableAsStmt * + pg_query__create_table_as_stmt__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void pg_query__create_table_as_stmt__free_unpacked + (PgQuery__CreateTableAsStmt *message, + ProtobufCAllocator *allocator); +/* PgQuery__CreateSeqStmt methods */ +void pg_query__create_seq_stmt__init + (PgQuery__CreateSeqStmt *message); +size_t pg_query__create_seq_stmt__get_packed_size + (const PgQuery__CreateSeqStmt *message); +size_t pg_query__create_seq_stmt__pack + (const PgQuery__CreateSeqStmt *message, + uint8_t *out); +size_t pg_query__create_seq_stmt__pack_to_buffer + (const PgQuery__CreateSeqStmt *message, + ProtobufCBuffer *buffer); +PgQuery__CreateSeqStmt * + pg_query__create_seq_stmt__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void pg_query__create_seq_stmt__free_unpacked + (PgQuery__CreateSeqStmt *message, + ProtobufCAllocator *allocator); +/* PgQuery__AlterSeqStmt methods */ +void pg_query__alter_seq_stmt__init + (PgQuery__AlterSeqStmt *message); +size_t pg_query__alter_seq_stmt__get_packed_size + (const PgQuery__AlterSeqStmt *message); +size_t pg_query__alter_seq_stmt__pack + (const PgQuery__AlterSeqStmt *message, + uint8_t *out); +size_t pg_query__alter_seq_stmt__pack_to_buffer + (const PgQuery__AlterSeqStmt *message, + ProtobufCBuffer *buffer); +PgQuery__AlterSeqStmt * + pg_query__alter_seq_stmt__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void pg_query__alter_seq_stmt__free_unpacked + (PgQuery__AlterSeqStmt *message, + ProtobufCAllocator *allocator); +/* PgQuery__VariableSetStmt methods */ +void pg_query__variable_set_stmt__init + (PgQuery__VariableSetStmt *message); +size_t pg_query__variable_set_stmt__get_packed_size + (const PgQuery__VariableSetStmt *message); +size_t pg_query__variable_set_stmt__pack + (const PgQuery__VariableSetStmt *message, + uint8_t *out); +size_t pg_query__variable_set_stmt__pack_to_buffer + (const PgQuery__VariableSetStmt *message, + ProtobufCBuffer *buffer); +PgQuery__VariableSetStmt * + pg_query__variable_set_stmt__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void pg_query__variable_set_stmt__free_unpacked + (PgQuery__VariableSetStmt *message, + ProtobufCAllocator *allocator); +/* PgQuery__VariableShowStmt methods */ +void pg_query__variable_show_stmt__init + (PgQuery__VariableShowStmt *message); +size_t pg_query__variable_show_stmt__get_packed_size + (const PgQuery__VariableShowStmt *message); +size_t pg_query__variable_show_stmt__pack + (const PgQuery__VariableShowStmt *message, + uint8_t *out); +size_t pg_query__variable_show_stmt__pack_to_buffer + (const PgQuery__VariableShowStmt *message, + ProtobufCBuffer *buffer); +PgQuery__VariableShowStmt * + pg_query__variable_show_stmt__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void pg_query__variable_show_stmt__free_unpacked + (PgQuery__VariableShowStmt *message, + ProtobufCAllocator *allocator); +/* PgQuery__DiscardStmt methods */ +void pg_query__discard_stmt__init + (PgQuery__DiscardStmt *message); +size_t pg_query__discard_stmt__get_packed_size + (const PgQuery__DiscardStmt *message); +size_t pg_query__discard_stmt__pack + (const PgQuery__DiscardStmt *message, + uint8_t *out); +size_t pg_query__discard_stmt__pack_to_buffer + (const PgQuery__DiscardStmt *message, + ProtobufCBuffer *buffer); +PgQuery__DiscardStmt * + pg_query__discard_stmt__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void pg_query__discard_stmt__free_unpacked + (PgQuery__DiscardStmt *message, + ProtobufCAllocator *allocator); +/* PgQuery__CreateTrigStmt methods */ +void pg_query__create_trig_stmt__init + (PgQuery__CreateTrigStmt *message); +size_t pg_query__create_trig_stmt__get_packed_size + (const PgQuery__CreateTrigStmt *message); +size_t pg_query__create_trig_stmt__pack + (const PgQuery__CreateTrigStmt *message, + uint8_t *out); +size_t pg_query__create_trig_stmt__pack_to_buffer + (const PgQuery__CreateTrigStmt *message, + ProtobufCBuffer *buffer); +PgQuery__CreateTrigStmt * + pg_query__create_trig_stmt__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void pg_query__create_trig_stmt__free_unpacked + (PgQuery__CreateTrigStmt *message, + ProtobufCAllocator *allocator); +/* PgQuery__CreatePLangStmt methods */ +void pg_query__create_plang_stmt__init + (PgQuery__CreatePLangStmt *message); +size_t pg_query__create_plang_stmt__get_packed_size + (const PgQuery__CreatePLangStmt *message); +size_t pg_query__create_plang_stmt__pack + (const PgQuery__CreatePLangStmt *message, + uint8_t *out); +size_t pg_query__create_plang_stmt__pack_to_buffer + (const PgQuery__CreatePLangStmt *message, + ProtobufCBuffer *buffer); +PgQuery__CreatePLangStmt * + pg_query__create_plang_stmt__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void pg_query__create_plang_stmt__free_unpacked + (PgQuery__CreatePLangStmt *message, + ProtobufCAllocator *allocator); +/* PgQuery__CreateRoleStmt methods */ +void pg_query__create_role_stmt__init + (PgQuery__CreateRoleStmt *message); +size_t pg_query__create_role_stmt__get_packed_size + (const PgQuery__CreateRoleStmt *message); +size_t pg_query__create_role_stmt__pack + (const PgQuery__CreateRoleStmt *message, + uint8_t *out); +size_t pg_query__create_role_stmt__pack_to_buffer + (const PgQuery__CreateRoleStmt *message, + ProtobufCBuffer *buffer); +PgQuery__CreateRoleStmt * + pg_query__create_role_stmt__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void pg_query__create_role_stmt__free_unpacked + (PgQuery__CreateRoleStmt *message, + ProtobufCAllocator *allocator); +/* PgQuery__AlterRoleStmt methods */ +void pg_query__alter_role_stmt__init + (PgQuery__AlterRoleStmt *message); +size_t pg_query__alter_role_stmt__get_packed_size + (const PgQuery__AlterRoleStmt *message); +size_t pg_query__alter_role_stmt__pack + (const PgQuery__AlterRoleStmt *message, + uint8_t *out); +size_t pg_query__alter_role_stmt__pack_to_buffer + (const PgQuery__AlterRoleStmt *message, + ProtobufCBuffer *buffer); +PgQuery__AlterRoleStmt * + pg_query__alter_role_stmt__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void pg_query__alter_role_stmt__free_unpacked + (PgQuery__AlterRoleStmt *message, + ProtobufCAllocator *allocator); +/* PgQuery__DropRoleStmt methods */ +void pg_query__drop_role_stmt__init + (PgQuery__DropRoleStmt *message); +size_t pg_query__drop_role_stmt__get_packed_size + (const PgQuery__DropRoleStmt *message); +size_t pg_query__drop_role_stmt__pack + (const PgQuery__DropRoleStmt *message, + uint8_t *out); +size_t pg_query__drop_role_stmt__pack_to_buffer + (const PgQuery__DropRoleStmt *message, + ProtobufCBuffer *buffer); +PgQuery__DropRoleStmt * + pg_query__drop_role_stmt__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void pg_query__drop_role_stmt__free_unpacked + (PgQuery__DropRoleStmt *message, + ProtobufCAllocator *allocator); +/* PgQuery__LockStmt methods */ +void pg_query__lock_stmt__init + (PgQuery__LockStmt *message); +size_t pg_query__lock_stmt__get_packed_size + (const PgQuery__LockStmt *message); +size_t pg_query__lock_stmt__pack + (const PgQuery__LockStmt *message, + uint8_t *out); +size_t pg_query__lock_stmt__pack_to_buffer + (const PgQuery__LockStmt *message, + ProtobufCBuffer *buffer); +PgQuery__LockStmt * + pg_query__lock_stmt__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void pg_query__lock_stmt__free_unpacked + (PgQuery__LockStmt *message, + ProtobufCAllocator *allocator); +/* PgQuery__ConstraintsSetStmt methods */ +void pg_query__constraints_set_stmt__init + (PgQuery__ConstraintsSetStmt *message); +size_t pg_query__constraints_set_stmt__get_packed_size + (const PgQuery__ConstraintsSetStmt *message); +size_t pg_query__constraints_set_stmt__pack + (const PgQuery__ConstraintsSetStmt *message, + uint8_t *out); +size_t pg_query__constraints_set_stmt__pack_to_buffer + (const PgQuery__ConstraintsSetStmt *message, + ProtobufCBuffer *buffer); +PgQuery__ConstraintsSetStmt * + pg_query__constraints_set_stmt__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void pg_query__constraints_set_stmt__free_unpacked + (PgQuery__ConstraintsSetStmt *message, + ProtobufCAllocator *allocator); +/* PgQuery__ReindexStmt methods */ +void pg_query__reindex_stmt__init + (PgQuery__ReindexStmt *message); +size_t pg_query__reindex_stmt__get_packed_size + (const PgQuery__ReindexStmt *message); +size_t pg_query__reindex_stmt__pack + (const PgQuery__ReindexStmt *message, + uint8_t *out); +size_t pg_query__reindex_stmt__pack_to_buffer + (const PgQuery__ReindexStmt *message, + ProtobufCBuffer *buffer); +PgQuery__ReindexStmt * + pg_query__reindex_stmt__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void pg_query__reindex_stmt__free_unpacked + (PgQuery__ReindexStmt *message, + ProtobufCAllocator *allocator); +/* PgQuery__CheckPointStmt methods */ +void pg_query__check_point_stmt__init + (PgQuery__CheckPointStmt *message); +size_t pg_query__check_point_stmt__get_packed_size + (const PgQuery__CheckPointStmt *message); +size_t pg_query__check_point_stmt__pack + (const PgQuery__CheckPointStmt *message, + uint8_t *out); +size_t pg_query__check_point_stmt__pack_to_buffer + (const PgQuery__CheckPointStmt *message, + ProtobufCBuffer *buffer); +PgQuery__CheckPointStmt * + pg_query__check_point_stmt__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void pg_query__check_point_stmt__free_unpacked + (PgQuery__CheckPointStmt *message, + ProtobufCAllocator *allocator); +/* PgQuery__CreateSchemaStmt methods */ +void pg_query__create_schema_stmt__init + (PgQuery__CreateSchemaStmt *message); +size_t pg_query__create_schema_stmt__get_packed_size + (const PgQuery__CreateSchemaStmt *message); +size_t pg_query__create_schema_stmt__pack + (const PgQuery__CreateSchemaStmt *message, + uint8_t *out); +size_t pg_query__create_schema_stmt__pack_to_buffer + (const PgQuery__CreateSchemaStmt *message, + ProtobufCBuffer *buffer); +PgQuery__CreateSchemaStmt * + pg_query__create_schema_stmt__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void pg_query__create_schema_stmt__free_unpacked + (PgQuery__CreateSchemaStmt *message, + ProtobufCAllocator *allocator); +/* PgQuery__AlterDatabaseStmt methods */ +void pg_query__alter_database_stmt__init + (PgQuery__AlterDatabaseStmt *message); +size_t pg_query__alter_database_stmt__get_packed_size + (const PgQuery__AlterDatabaseStmt *message); +size_t pg_query__alter_database_stmt__pack + (const PgQuery__AlterDatabaseStmt *message, + uint8_t *out); +size_t pg_query__alter_database_stmt__pack_to_buffer + (const PgQuery__AlterDatabaseStmt *message, + ProtobufCBuffer *buffer); +PgQuery__AlterDatabaseStmt * + pg_query__alter_database_stmt__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void pg_query__alter_database_stmt__free_unpacked + (PgQuery__AlterDatabaseStmt *message, + ProtobufCAllocator *allocator); +/* PgQuery__AlterDatabaseSetStmt methods */ +void pg_query__alter_database_set_stmt__init + (PgQuery__AlterDatabaseSetStmt *message); +size_t pg_query__alter_database_set_stmt__get_packed_size + (const PgQuery__AlterDatabaseSetStmt *message); +size_t pg_query__alter_database_set_stmt__pack + (const PgQuery__AlterDatabaseSetStmt *message, + uint8_t *out); +size_t pg_query__alter_database_set_stmt__pack_to_buffer + (const PgQuery__AlterDatabaseSetStmt *message, + ProtobufCBuffer *buffer); +PgQuery__AlterDatabaseSetStmt * + pg_query__alter_database_set_stmt__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void pg_query__alter_database_set_stmt__free_unpacked + (PgQuery__AlterDatabaseSetStmt *message, + ProtobufCAllocator *allocator); +/* PgQuery__AlterRoleSetStmt methods */ +void pg_query__alter_role_set_stmt__init + (PgQuery__AlterRoleSetStmt *message); +size_t pg_query__alter_role_set_stmt__get_packed_size + (const PgQuery__AlterRoleSetStmt *message); +size_t pg_query__alter_role_set_stmt__pack + (const PgQuery__AlterRoleSetStmt *message, + uint8_t *out); +size_t pg_query__alter_role_set_stmt__pack_to_buffer + (const PgQuery__AlterRoleSetStmt *message, + ProtobufCBuffer *buffer); +PgQuery__AlterRoleSetStmt * + pg_query__alter_role_set_stmt__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void pg_query__alter_role_set_stmt__free_unpacked + (PgQuery__AlterRoleSetStmt *message, + ProtobufCAllocator *allocator); +/* PgQuery__CreateConversionStmt methods */ +void pg_query__create_conversion_stmt__init + (PgQuery__CreateConversionStmt *message); +size_t pg_query__create_conversion_stmt__get_packed_size + (const PgQuery__CreateConversionStmt *message); +size_t pg_query__create_conversion_stmt__pack + (const PgQuery__CreateConversionStmt *message, + uint8_t *out); +size_t pg_query__create_conversion_stmt__pack_to_buffer + (const PgQuery__CreateConversionStmt *message, + ProtobufCBuffer *buffer); +PgQuery__CreateConversionStmt * + pg_query__create_conversion_stmt__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void pg_query__create_conversion_stmt__free_unpacked + (PgQuery__CreateConversionStmt *message, + ProtobufCAllocator *allocator); +/* PgQuery__CreateCastStmt methods */ +void pg_query__create_cast_stmt__init + (PgQuery__CreateCastStmt *message); +size_t pg_query__create_cast_stmt__get_packed_size + (const PgQuery__CreateCastStmt *message); +size_t pg_query__create_cast_stmt__pack + (const PgQuery__CreateCastStmt *message, + uint8_t *out); +size_t pg_query__create_cast_stmt__pack_to_buffer + (const PgQuery__CreateCastStmt *message, + ProtobufCBuffer *buffer); +PgQuery__CreateCastStmt * + pg_query__create_cast_stmt__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void pg_query__create_cast_stmt__free_unpacked + (PgQuery__CreateCastStmt *message, + ProtobufCAllocator *allocator); +/* PgQuery__CreateOpClassStmt methods */ +void pg_query__create_op_class_stmt__init + (PgQuery__CreateOpClassStmt *message); +size_t pg_query__create_op_class_stmt__get_packed_size + (const PgQuery__CreateOpClassStmt *message); +size_t pg_query__create_op_class_stmt__pack + (const PgQuery__CreateOpClassStmt *message, + uint8_t *out); +size_t pg_query__create_op_class_stmt__pack_to_buffer + (const PgQuery__CreateOpClassStmt *message, + ProtobufCBuffer *buffer); +PgQuery__CreateOpClassStmt * + pg_query__create_op_class_stmt__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void pg_query__create_op_class_stmt__free_unpacked + (PgQuery__CreateOpClassStmt *message, + ProtobufCAllocator *allocator); +/* PgQuery__CreateOpFamilyStmt methods */ +void pg_query__create_op_family_stmt__init + (PgQuery__CreateOpFamilyStmt *message); +size_t pg_query__create_op_family_stmt__get_packed_size + (const PgQuery__CreateOpFamilyStmt *message); +size_t pg_query__create_op_family_stmt__pack + (const PgQuery__CreateOpFamilyStmt *message, + uint8_t *out); +size_t pg_query__create_op_family_stmt__pack_to_buffer + (const PgQuery__CreateOpFamilyStmt *message, + ProtobufCBuffer *buffer); +PgQuery__CreateOpFamilyStmt * + pg_query__create_op_family_stmt__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void pg_query__create_op_family_stmt__free_unpacked + (PgQuery__CreateOpFamilyStmt *message, + ProtobufCAllocator *allocator); +/* PgQuery__AlterOpFamilyStmt methods */ +void pg_query__alter_op_family_stmt__init + (PgQuery__AlterOpFamilyStmt *message); +size_t pg_query__alter_op_family_stmt__get_packed_size + (const PgQuery__AlterOpFamilyStmt *message); +size_t pg_query__alter_op_family_stmt__pack + (const PgQuery__AlterOpFamilyStmt *message, + uint8_t *out); +size_t pg_query__alter_op_family_stmt__pack_to_buffer + (const PgQuery__AlterOpFamilyStmt *message, + ProtobufCBuffer *buffer); +PgQuery__AlterOpFamilyStmt * + pg_query__alter_op_family_stmt__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void pg_query__alter_op_family_stmt__free_unpacked + (PgQuery__AlterOpFamilyStmt *message, + ProtobufCAllocator *allocator); +/* PgQuery__PrepareStmt methods */ +void pg_query__prepare_stmt__init + (PgQuery__PrepareStmt *message); +size_t pg_query__prepare_stmt__get_packed_size + (const PgQuery__PrepareStmt *message); +size_t pg_query__prepare_stmt__pack + (const PgQuery__PrepareStmt *message, + uint8_t *out); +size_t pg_query__prepare_stmt__pack_to_buffer + (const PgQuery__PrepareStmt *message, + ProtobufCBuffer *buffer); +PgQuery__PrepareStmt * + pg_query__prepare_stmt__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void pg_query__prepare_stmt__free_unpacked + (PgQuery__PrepareStmt *message, + ProtobufCAllocator *allocator); +/* PgQuery__ExecuteStmt methods */ +void pg_query__execute_stmt__init + (PgQuery__ExecuteStmt *message); +size_t pg_query__execute_stmt__get_packed_size + (const PgQuery__ExecuteStmt *message); +size_t pg_query__execute_stmt__pack + (const PgQuery__ExecuteStmt *message, + uint8_t *out); +size_t pg_query__execute_stmt__pack_to_buffer + (const PgQuery__ExecuteStmt *message, + ProtobufCBuffer *buffer); +PgQuery__ExecuteStmt * + pg_query__execute_stmt__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void pg_query__execute_stmt__free_unpacked + (PgQuery__ExecuteStmt *message, + ProtobufCAllocator *allocator); +/* PgQuery__DeallocateStmt methods */ +void pg_query__deallocate_stmt__init + (PgQuery__DeallocateStmt *message); +size_t pg_query__deallocate_stmt__get_packed_size + (const PgQuery__DeallocateStmt *message); +size_t pg_query__deallocate_stmt__pack + (const PgQuery__DeallocateStmt *message, + uint8_t *out); +size_t pg_query__deallocate_stmt__pack_to_buffer + (const PgQuery__DeallocateStmt *message, + ProtobufCBuffer *buffer); +PgQuery__DeallocateStmt * + pg_query__deallocate_stmt__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void pg_query__deallocate_stmt__free_unpacked + (PgQuery__DeallocateStmt *message, + ProtobufCAllocator *allocator); +/* PgQuery__DeclareCursorStmt methods */ +void pg_query__declare_cursor_stmt__init + (PgQuery__DeclareCursorStmt *message); +size_t pg_query__declare_cursor_stmt__get_packed_size + (const PgQuery__DeclareCursorStmt *message); +size_t pg_query__declare_cursor_stmt__pack + (const PgQuery__DeclareCursorStmt *message, + uint8_t *out); +size_t pg_query__declare_cursor_stmt__pack_to_buffer + (const PgQuery__DeclareCursorStmt *message, + ProtobufCBuffer *buffer); +PgQuery__DeclareCursorStmt * + pg_query__declare_cursor_stmt__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void pg_query__declare_cursor_stmt__free_unpacked + (PgQuery__DeclareCursorStmt *message, + ProtobufCAllocator *allocator); +/* PgQuery__CreateTableSpaceStmt methods */ +void pg_query__create_table_space_stmt__init + (PgQuery__CreateTableSpaceStmt *message); +size_t pg_query__create_table_space_stmt__get_packed_size + (const PgQuery__CreateTableSpaceStmt *message); +size_t pg_query__create_table_space_stmt__pack + (const PgQuery__CreateTableSpaceStmt *message, + uint8_t *out); +size_t pg_query__create_table_space_stmt__pack_to_buffer + (const PgQuery__CreateTableSpaceStmt *message, + ProtobufCBuffer *buffer); +PgQuery__CreateTableSpaceStmt * + pg_query__create_table_space_stmt__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void pg_query__create_table_space_stmt__free_unpacked + (PgQuery__CreateTableSpaceStmt *message, + ProtobufCAllocator *allocator); +/* PgQuery__DropTableSpaceStmt methods */ +void pg_query__drop_table_space_stmt__init + (PgQuery__DropTableSpaceStmt *message); +size_t pg_query__drop_table_space_stmt__get_packed_size + (const PgQuery__DropTableSpaceStmt *message); +size_t pg_query__drop_table_space_stmt__pack + (const PgQuery__DropTableSpaceStmt *message, + uint8_t *out); +size_t pg_query__drop_table_space_stmt__pack_to_buffer + (const PgQuery__DropTableSpaceStmt *message, + ProtobufCBuffer *buffer); +PgQuery__DropTableSpaceStmt * + pg_query__drop_table_space_stmt__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void pg_query__drop_table_space_stmt__free_unpacked + (PgQuery__DropTableSpaceStmt *message, + ProtobufCAllocator *allocator); +/* PgQuery__AlterObjectDependsStmt methods */ +void pg_query__alter_object_depends_stmt__init + (PgQuery__AlterObjectDependsStmt *message); +size_t pg_query__alter_object_depends_stmt__get_packed_size + (const PgQuery__AlterObjectDependsStmt *message); +size_t pg_query__alter_object_depends_stmt__pack + (const PgQuery__AlterObjectDependsStmt *message, + uint8_t *out); +size_t pg_query__alter_object_depends_stmt__pack_to_buffer + (const PgQuery__AlterObjectDependsStmt *message, + ProtobufCBuffer *buffer); +PgQuery__AlterObjectDependsStmt * + pg_query__alter_object_depends_stmt__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void pg_query__alter_object_depends_stmt__free_unpacked + (PgQuery__AlterObjectDependsStmt *message, + ProtobufCAllocator *allocator); +/* PgQuery__AlterObjectSchemaStmt methods */ +void pg_query__alter_object_schema_stmt__init + (PgQuery__AlterObjectSchemaStmt *message); +size_t pg_query__alter_object_schema_stmt__get_packed_size + (const PgQuery__AlterObjectSchemaStmt *message); +size_t pg_query__alter_object_schema_stmt__pack + (const PgQuery__AlterObjectSchemaStmt *message, + uint8_t *out); +size_t pg_query__alter_object_schema_stmt__pack_to_buffer + (const PgQuery__AlterObjectSchemaStmt *message, + ProtobufCBuffer *buffer); +PgQuery__AlterObjectSchemaStmt * + pg_query__alter_object_schema_stmt__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void pg_query__alter_object_schema_stmt__free_unpacked + (PgQuery__AlterObjectSchemaStmt *message, + ProtobufCAllocator *allocator); +/* PgQuery__AlterOwnerStmt methods */ +void pg_query__alter_owner_stmt__init + (PgQuery__AlterOwnerStmt *message); +size_t pg_query__alter_owner_stmt__get_packed_size + (const PgQuery__AlterOwnerStmt *message); +size_t pg_query__alter_owner_stmt__pack + (const PgQuery__AlterOwnerStmt *message, + uint8_t *out); +size_t pg_query__alter_owner_stmt__pack_to_buffer + (const PgQuery__AlterOwnerStmt *message, + ProtobufCBuffer *buffer); +PgQuery__AlterOwnerStmt * + pg_query__alter_owner_stmt__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void pg_query__alter_owner_stmt__free_unpacked + (PgQuery__AlterOwnerStmt *message, + ProtobufCAllocator *allocator); +/* PgQuery__AlterOperatorStmt methods */ +void pg_query__alter_operator_stmt__init + (PgQuery__AlterOperatorStmt *message); +size_t pg_query__alter_operator_stmt__get_packed_size + (const PgQuery__AlterOperatorStmt *message); +size_t pg_query__alter_operator_stmt__pack + (const PgQuery__AlterOperatorStmt *message, + uint8_t *out); +size_t pg_query__alter_operator_stmt__pack_to_buffer + (const PgQuery__AlterOperatorStmt *message, + ProtobufCBuffer *buffer); +PgQuery__AlterOperatorStmt * + pg_query__alter_operator_stmt__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void pg_query__alter_operator_stmt__free_unpacked + (PgQuery__AlterOperatorStmt *message, + ProtobufCAllocator *allocator); +/* PgQuery__AlterTypeStmt methods */ +void pg_query__alter_type_stmt__init + (PgQuery__AlterTypeStmt *message); +size_t pg_query__alter_type_stmt__get_packed_size + (const PgQuery__AlterTypeStmt *message); +size_t pg_query__alter_type_stmt__pack + (const PgQuery__AlterTypeStmt *message, + uint8_t *out); +size_t pg_query__alter_type_stmt__pack_to_buffer + (const PgQuery__AlterTypeStmt *message, + ProtobufCBuffer *buffer); +PgQuery__AlterTypeStmt * + pg_query__alter_type_stmt__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void pg_query__alter_type_stmt__free_unpacked + (PgQuery__AlterTypeStmt *message, + ProtobufCAllocator *allocator); +/* PgQuery__DropOwnedStmt methods */ +void pg_query__drop_owned_stmt__init + (PgQuery__DropOwnedStmt *message); +size_t pg_query__drop_owned_stmt__get_packed_size + (const PgQuery__DropOwnedStmt *message); +size_t pg_query__drop_owned_stmt__pack + (const PgQuery__DropOwnedStmt *message, + uint8_t *out); +size_t pg_query__drop_owned_stmt__pack_to_buffer + (const PgQuery__DropOwnedStmt *message, + ProtobufCBuffer *buffer); +PgQuery__DropOwnedStmt * + pg_query__drop_owned_stmt__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void pg_query__drop_owned_stmt__free_unpacked + (PgQuery__DropOwnedStmt *message, + ProtobufCAllocator *allocator); +/* PgQuery__ReassignOwnedStmt methods */ +void pg_query__reassign_owned_stmt__init + (PgQuery__ReassignOwnedStmt *message); +size_t pg_query__reassign_owned_stmt__get_packed_size + (const PgQuery__ReassignOwnedStmt *message); +size_t pg_query__reassign_owned_stmt__pack + (const PgQuery__ReassignOwnedStmt *message, + uint8_t *out); +size_t pg_query__reassign_owned_stmt__pack_to_buffer + (const PgQuery__ReassignOwnedStmt *message, + ProtobufCBuffer *buffer); +PgQuery__ReassignOwnedStmt * + pg_query__reassign_owned_stmt__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void pg_query__reassign_owned_stmt__free_unpacked + (PgQuery__ReassignOwnedStmt *message, + ProtobufCAllocator *allocator); +/* PgQuery__CompositeTypeStmt methods */ +void pg_query__composite_type_stmt__init + (PgQuery__CompositeTypeStmt *message); +size_t pg_query__composite_type_stmt__get_packed_size + (const PgQuery__CompositeTypeStmt *message); +size_t pg_query__composite_type_stmt__pack + (const PgQuery__CompositeTypeStmt *message, + uint8_t *out); +size_t pg_query__composite_type_stmt__pack_to_buffer + (const PgQuery__CompositeTypeStmt *message, + ProtobufCBuffer *buffer); +PgQuery__CompositeTypeStmt * + pg_query__composite_type_stmt__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void pg_query__composite_type_stmt__free_unpacked + (PgQuery__CompositeTypeStmt *message, + ProtobufCAllocator *allocator); +/* PgQuery__CreateEnumStmt methods */ +void pg_query__create_enum_stmt__init + (PgQuery__CreateEnumStmt *message); +size_t pg_query__create_enum_stmt__get_packed_size + (const PgQuery__CreateEnumStmt *message); +size_t pg_query__create_enum_stmt__pack + (const PgQuery__CreateEnumStmt *message, + uint8_t *out); +size_t pg_query__create_enum_stmt__pack_to_buffer + (const PgQuery__CreateEnumStmt *message, + ProtobufCBuffer *buffer); +PgQuery__CreateEnumStmt * + pg_query__create_enum_stmt__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void pg_query__create_enum_stmt__free_unpacked + (PgQuery__CreateEnumStmt *message, + ProtobufCAllocator *allocator); +/* PgQuery__CreateRangeStmt methods */ +void pg_query__create_range_stmt__init + (PgQuery__CreateRangeStmt *message); +size_t pg_query__create_range_stmt__get_packed_size + (const PgQuery__CreateRangeStmt *message); +size_t pg_query__create_range_stmt__pack + (const PgQuery__CreateRangeStmt *message, + uint8_t *out); +size_t pg_query__create_range_stmt__pack_to_buffer + (const PgQuery__CreateRangeStmt *message, + ProtobufCBuffer *buffer); +PgQuery__CreateRangeStmt * + pg_query__create_range_stmt__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void pg_query__create_range_stmt__free_unpacked + (PgQuery__CreateRangeStmt *message, + ProtobufCAllocator *allocator); +/* PgQuery__AlterEnumStmt methods */ +void pg_query__alter_enum_stmt__init + (PgQuery__AlterEnumStmt *message); +size_t pg_query__alter_enum_stmt__get_packed_size + (const PgQuery__AlterEnumStmt *message); +size_t pg_query__alter_enum_stmt__pack + (const PgQuery__AlterEnumStmt *message, + uint8_t *out); +size_t pg_query__alter_enum_stmt__pack_to_buffer + (const PgQuery__AlterEnumStmt *message, + ProtobufCBuffer *buffer); +PgQuery__AlterEnumStmt * + pg_query__alter_enum_stmt__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void pg_query__alter_enum_stmt__free_unpacked + (PgQuery__AlterEnumStmt *message, + ProtobufCAllocator *allocator); +/* PgQuery__AlterTSDictionaryStmt methods */ +void pg_query__alter_tsdictionary_stmt__init + (PgQuery__AlterTSDictionaryStmt *message); +size_t pg_query__alter_tsdictionary_stmt__get_packed_size + (const PgQuery__AlterTSDictionaryStmt *message); +size_t pg_query__alter_tsdictionary_stmt__pack + (const PgQuery__AlterTSDictionaryStmt *message, + uint8_t *out); +size_t pg_query__alter_tsdictionary_stmt__pack_to_buffer + (const PgQuery__AlterTSDictionaryStmt *message, + ProtobufCBuffer *buffer); +PgQuery__AlterTSDictionaryStmt * + pg_query__alter_tsdictionary_stmt__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void pg_query__alter_tsdictionary_stmt__free_unpacked + (PgQuery__AlterTSDictionaryStmt *message, + ProtobufCAllocator *allocator); +/* PgQuery__AlterTSConfigurationStmt methods */ +void pg_query__alter_tsconfiguration_stmt__init + (PgQuery__AlterTSConfigurationStmt *message); +size_t pg_query__alter_tsconfiguration_stmt__get_packed_size + (const PgQuery__AlterTSConfigurationStmt *message); +size_t pg_query__alter_tsconfiguration_stmt__pack + (const PgQuery__AlterTSConfigurationStmt *message, + uint8_t *out); +size_t pg_query__alter_tsconfiguration_stmt__pack_to_buffer + (const PgQuery__AlterTSConfigurationStmt *message, + ProtobufCBuffer *buffer); +PgQuery__AlterTSConfigurationStmt * + pg_query__alter_tsconfiguration_stmt__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void pg_query__alter_tsconfiguration_stmt__free_unpacked + (PgQuery__AlterTSConfigurationStmt *message, + ProtobufCAllocator *allocator); +/* PgQuery__CreateFdwStmt methods */ +void pg_query__create_fdw_stmt__init + (PgQuery__CreateFdwStmt *message); +size_t pg_query__create_fdw_stmt__get_packed_size + (const PgQuery__CreateFdwStmt *message); +size_t pg_query__create_fdw_stmt__pack + (const PgQuery__CreateFdwStmt *message, + uint8_t *out); +size_t pg_query__create_fdw_stmt__pack_to_buffer + (const PgQuery__CreateFdwStmt *message, + ProtobufCBuffer *buffer); +PgQuery__CreateFdwStmt * + pg_query__create_fdw_stmt__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void pg_query__create_fdw_stmt__free_unpacked + (PgQuery__CreateFdwStmt *message, + ProtobufCAllocator *allocator); +/* PgQuery__AlterFdwStmt methods */ +void pg_query__alter_fdw_stmt__init + (PgQuery__AlterFdwStmt *message); +size_t pg_query__alter_fdw_stmt__get_packed_size + (const PgQuery__AlterFdwStmt *message); +size_t pg_query__alter_fdw_stmt__pack + (const PgQuery__AlterFdwStmt *message, + uint8_t *out); +size_t pg_query__alter_fdw_stmt__pack_to_buffer + (const PgQuery__AlterFdwStmt *message, + ProtobufCBuffer *buffer); +PgQuery__AlterFdwStmt * + pg_query__alter_fdw_stmt__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void pg_query__alter_fdw_stmt__free_unpacked + (PgQuery__AlterFdwStmt *message, + ProtobufCAllocator *allocator); +/* PgQuery__CreateForeignServerStmt methods */ +void pg_query__create_foreign_server_stmt__init + (PgQuery__CreateForeignServerStmt *message); +size_t pg_query__create_foreign_server_stmt__get_packed_size + (const PgQuery__CreateForeignServerStmt *message); +size_t pg_query__create_foreign_server_stmt__pack + (const PgQuery__CreateForeignServerStmt *message, + uint8_t *out); +size_t pg_query__create_foreign_server_stmt__pack_to_buffer + (const PgQuery__CreateForeignServerStmt *message, + ProtobufCBuffer *buffer); +PgQuery__CreateForeignServerStmt * + pg_query__create_foreign_server_stmt__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void pg_query__create_foreign_server_stmt__free_unpacked + (PgQuery__CreateForeignServerStmt *message, + ProtobufCAllocator *allocator); +/* PgQuery__AlterForeignServerStmt methods */ +void pg_query__alter_foreign_server_stmt__init + (PgQuery__AlterForeignServerStmt *message); +size_t pg_query__alter_foreign_server_stmt__get_packed_size + (const PgQuery__AlterForeignServerStmt *message); +size_t pg_query__alter_foreign_server_stmt__pack + (const PgQuery__AlterForeignServerStmt *message, + uint8_t *out); +size_t pg_query__alter_foreign_server_stmt__pack_to_buffer + (const PgQuery__AlterForeignServerStmt *message, + ProtobufCBuffer *buffer); +PgQuery__AlterForeignServerStmt * + pg_query__alter_foreign_server_stmt__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void pg_query__alter_foreign_server_stmt__free_unpacked + (PgQuery__AlterForeignServerStmt *message, + ProtobufCAllocator *allocator); +/* PgQuery__CreateUserMappingStmt methods */ +void pg_query__create_user_mapping_stmt__init + (PgQuery__CreateUserMappingStmt *message); +size_t pg_query__create_user_mapping_stmt__get_packed_size + (const PgQuery__CreateUserMappingStmt *message); +size_t pg_query__create_user_mapping_stmt__pack + (const PgQuery__CreateUserMappingStmt *message, + uint8_t *out); +size_t pg_query__create_user_mapping_stmt__pack_to_buffer + (const PgQuery__CreateUserMappingStmt *message, + ProtobufCBuffer *buffer); +PgQuery__CreateUserMappingStmt * + pg_query__create_user_mapping_stmt__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void pg_query__create_user_mapping_stmt__free_unpacked + (PgQuery__CreateUserMappingStmt *message, + ProtobufCAllocator *allocator); +/* PgQuery__AlterUserMappingStmt methods */ +void pg_query__alter_user_mapping_stmt__init + (PgQuery__AlterUserMappingStmt *message); +size_t pg_query__alter_user_mapping_stmt__get_packed_size + (const PgQuery__AlterUserMappingStmt *message); +size_t pg_query__alter_user_mapping_stmt__pack + (const PgQuery__AlterUserMappingStmt *message, + uint8_t *out); +size_t pg_query__alter_user_mapping_stmt__pack_to_buffer + (const PgQuery__AlterUserMappingStmt *message, + ProtobufCBuffer *buffer); +PgQuery__AlterUserMappingStmt * + pg_query__alter_user_mapping_stmt__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void pg_query__alter_user_mapping_stmt__free_unpacked + (PgQuery__AlterUserMappingStmt *message, + ProtobufCAllocator *allocator); +/* PgQuery__DropUserMappingStmt methods */ +void pg_query__drop_user_mapping_stmt__init + (PgQuery__DropUserMappingStmt *message); +size_t pg_query__drop_user_mapping_stmt__get_packed_size + (const PgQuery__DropUserMappingStmt *message); +size_t pg_query__drop_user_mapping_stmt__pack + (const PgQuery__DropUserMappingStmt *message, + uint8_t *out); +size_t pg_query__drop_user_mapping_stmt__pack_to_buffer + (const PgQuery__DropUserMappingStmt *message, + ProtobufCBuffer *buffer); +PgQuery__DropUserMappingStmt * + pg_query__drop_user_mapping_stmt__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void pg_query__drop_user_mapping_stmt__free_unpacked + (PgQuery__DropUserMappingStmt *message, + ProtobufCAllocator *allocator); +/* PgQuery__AlterTableSpaceOptionsStmt methods */ +void pg_query__alter_table_space_options_stmt__init + (PgQuery__AlterTableSpaceOptionsStmt *message); +size_t pg_query__alter_table_space_options_stmt__get_packed_size + (const PgQuery__AlterTableSpaceOptionsStmt *message); +size_t pg_query__alter_table_space_options_stmt__pack + (const PgQuery__AlterTableSpaceOptionsStmt *message, + uint8_t *out); +size_t pg_query__alter_table_space_options_stmt__pack_to_buffer + (const PgQuery__AlterTableSpaceOptionsStmt *message, + ProtobufCBuffer *buffer); +PgQuery__AlterTableSpaceOptionsStmt * + pg_query__alter_table_space_options_stmt__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void pg_query__alter_table_space_options_stmt__free_unpacked + (PgQuery__AlterTableSpaceOptionsStmt *message, + ProtobufCAllocator *allocator); +/* PgQuery__AlterTableMoveAllStmt methods */ +void pg_query__alter_table_move_all_stmt__init + (PgQuery__AlterTableMoveAllStmt *message); +size_t pg_query__alter_table_move_all_stmt__get_packed_size + (const PgQuery__AlterTableMoveAllStmt *message); +size_t pg_query__alter_table_move_all_stmt__pack + (const PgQuery__AlterTableMoveAllStmt *message, + uint8_t *out); +size_t pg_query__alter_table_move_all_stmt__pack_to_buffer + (const PgQuery__AlterTableMoveAllStmt *message, + ProtobufCBuffer *buffer); +PgQuery__AlterTableMoveAllStmt * + pg_query__alter_table_move_all_stmt__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void pg_query__alter_table_move_all_stmt__free_unpacked + (PgQuery__AlterTableMoveAllStmt *message, + ProtobufCAllocator *allocator); +/* PgQuery__SecLabelStmt methods */ +void pg_query__sec_label_stmt__init + (PgQuery__SecLabelStmt *message); +size_t pg_query__sec_label_stmt__get_packed_size + (const PgQuery__SecLabelStmt *message); +size_t pg_query__sec_label_stmt__pack + (const PgQuery__SecLabelStmt *message, + uint8_t *out); +size_t pg_query__sec_label_stmt__pack_to_buffer + (const PgQuery__SecLabelStmt *message, + ProtobufCBuffer *buffer); +PgQuery__SecLabelStmt * + pg_query__sec_label_stmt__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void pg_query__sec_label_stmt__free_unpacked + (PgQuery__SecLabelStmt *message, + ProtobufCAllocator *allocator); +/* PgQuery__CreateForeignTableStmt methods */ +void pg_query__create_foreign_table_stmt__init + (PgQuery__CreateForeignTableStmt *message); +size_t pg_query__create_foreign_table_stmt__get_packed_size + (const PgQuery__CreateForeignTableStmt *message); +size_t pg_query__create_foreign_table_stmt__pack + (const PgQuery__CreateForeignTableStmt *message, + uint8_t *out); +size_t pg_query__create_foreign_table_stmt__pack_to_buffer + (const PgQuery__CreateForeignTableStmt *message, + ProtobufCBuffer *buffer); +PgQuery__CreateForeignTableStmt * + pg_query__create_foreign_table_stmt__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void pg_query__create_foreign_table_stmt__free_unpacked + (PgQuery__CreateForeignTableStmt *message, + ProtobufCAllocator *allocator); +/* PgQuery__ImportForeignSchemaStmt methods */ +void pg_query__import_foreign_schema_stmt__init + (PgQuery__ImportForeignSchemaStmt *message); +size_t pg_query__import_foreign_schema_stmt__get_packed_size + (const PgQuery__ImportForeignSchemaStmt *message); +size_t pg_query__import_foreign_schema_stmt__pack + (const PgQuery__ImportForeignSchemaStmt *message, + uint8_t *out); +size_t pg_query__import_foreign_schema_stmt__pack_to_buffer + (const PgQuery__ImportForeignSchemaStmt *message, + ProtobufCBuffer *buffer); +PgQuery__ImportForeignSchemaStmt * + pg_query__import_foreign_schema_stmt__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void pg_query__import_foreign_schema_stmt__free_unpacked + (PgQuery__ImportForeignSchemaStmt *message, + ProtobufCAllocator *allocator); +/* PgQuery__CreateExtensionStmt methods */ +void pg_query__create_extension_stmt__init + (PgQuery__CreateExtensionStmt *message); +size_t pg_query__create_extension_stmt__get_packed_size + (const PgQuery__CreateExtensionStmt *message); +size_t pg_query__create_extension_stmt__pack + (const PgQuery__CreateExtensionStmt *message, + uint8_t *out); +size_t pg_query__create_extension_stmt__pack_to_buffer + (const PgQuery__CreateExtensionStmt *message, + ProtobufCBuffer *buffer); +PgQuery__CreateExtensionStmt * + pg_query__create_extension_stmt__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void pg_query__create_extension_stmt__free_unpacked + (PgQuery__CreateExtensionStmt *message, + ProtobufCAllocator *allocator); +/* PgQuery__AlterExtensionStmt methods */ +void pg_query__alter_extension_stmt__init + (PgQuery__AlterExtensionStmt *message); +size_t pg_query__alter_extension_stmt__get_packed_size + (const PgQuery__AlterExtensionStmt *message); +size_t pg_query__alter_extension_stmt__pack + (const PgQuery__AlterExtensionStmt *message, + uint8_t *out); +size_t pg_query__alter_extension_stmt__pack_to_buffer + (const PgQuery__AlterExtensionStmt *message, + ProtobufCBuffer *buffer); +PgQuery__AlterExtensionStmt * + pg_query__alter_extension_stmt__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void pg_query__alter_extension_stmt__free_unpacked + (PgQuery__AlterExtensionStmt *message, + ProtobufCAllocator *allocator); +/* PgQuery__AlterExtensionContentsStmt methods */ +void pg_query__alter_extension_contents_stmt__init + (PgQuery__AlterExtensionContentsStmt *message); +size_t pg_query__alter_extension_contents_stmt__get_packed_size + (const PgQuery__AlterExtensionContentsStmt *message); +size_t pg_query__alter_extension_contents_stmt__pack + (const PgQuery__AlterExtensionContentsStmt *message, + uint8_t *out); +size_t pg_query__alter_extension_contents_stmt__pack_to_buffer + (const PgQuery__AlterExtensionContentsStmt *message, + ProtobufCBuffer *buffer); +PgQuery__AlterExtensionContentsStmt * + pg_query__alter_extension_contents_stmt__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void pg_query__alter_extension_contents_stmt__free_unpacked + (PgQuery__AlterExtensionContentsStmt *message, + ProtobufCAllocator *allocator); +/* PgQuery__CreateEventTrigStmt methods */ +void pg_query__create_event_trig_stmt__init + (PgQuery__CreateEventTrigStmt *message); +size_t pg_query__create_event_trig_stmt__get_packed_size + (const PgQuery__CreateEventTrigStmt *message); +size_t pg_query__create_event_trig_stmt__pack + (const PgQuery__CreateEventTrigStmt *message, + uint8_t *out); +size_t pg_query__create_event_trig_stmt__pack_to_buffer + (const PgQuery__CreateEventTrigStmt *message, + ProtobufCBuffer *buffer); +PgQuery__CreateEventTrigStmt * + pg_query__create_event_trig_stmt__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void pg_query__create_event_trig_stmt__free_unpacked + (PgQuery__CreateEventTrigStmt *message, + ProtobufCAllocator *allocator); +/* PgQuery__AlterEventTrigStmt methods */ +void pg_query__alter_event_trig_stmt__init + (PgQuery__AlterEventTrigStmt *message); +size_t pg_query__alter_event_trig_stmt__get_packed_size + (const PgQuery__AlterEventTrigStmt *message); +size_t pg_query__alter_event_trig_stmt__pack + (const PgQuery__AlterEventTrigStmt *message, + uint8_t *out); +size_t pg_query__alter_event_trig_stmt__pack_to_buffer + (const PgQuery__AlterEventTrigStmt *message, + ProtobufCBuffer *buffer); +PgQuery__AlterEventTrigStmt * + pg_query__alter_event_trig_stmt__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void pg_query__alter_event_trig_stmt__free_unpacked + (PgQuery__AlterEventTrigStmt *message, + ProtobufCAllocator *allocator); +/* PgQuery__RefreshMatViewStmt methods */ +void pg_query__refresh_mat_view_stmt__init + (PgQuery__RefreshMatViewStmt *message); +size_t pg_query__refresh_mat_view_stmt__get_packed_size + (const PgQuery__RefreshMatViewStmt *message); +size_t pg_query__refresh_mat_view_stmt__pack + (const PgQuery__RefreshMatViewStmt *message, + uint8_t *out); +size_t pg_query__refresh_mat_view_stmt__pack_to_buffer + (const PgQuery__RefreshMatViewStmt *message, + ProtobufCBuffer *buffer); +PgQuery__RefreshMatViewStmt * + pg_query__refresh_mat_view_stmt__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void pg_query__refresh_mat_view_stmt__free_unpacked + (PgQuery__RefreshMatViewStmt *message, + ProtobufCAllocator *allocator); +/* PgQuery__ReplicaIdentityStmt methods */ +void pg_query__replica_identity_stmt__init + (PgQuery__ReplicaIdentityStmt *message); +size_t pg_query__replica_identity_stmt__get_packed_size + (const PgQuery__ReplicaIdentityStmt *message); +size_t pg_query__replica_identity_stmt__pack + (const PgQuery__ReplicaIdentityStmt *message, + uint8_t *out); +size_t pg_query__replica_identity_stmt__pack_to_buffer + (const PgQuery__ReplicaIdentityStmt *message, + ProtobufCBuffer *buffer); +PgQuery__ReplicaIdentityStmt * + pg_query__replica_identity_stmt__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void pg_query__replica_identity_stmt__free_unpacked + (PgQuery__ReplicaIdentityStmt *message, + ProtobufCAllocator *allocator); +/* PgQuery__AlterSystemStmt methods */ +void pg_query__alter_system_stmt__init + (PgQuery__AlterSystemStmt *message); +size_t pg_query__alter_system_stmt__get_packed_size + (const PgQuery__AlterSystemStmt *message); +size_t pg_query__alter_system_stmt__pack + (const PgQuery__AlterSystemStmt *message, + uint8_t *out); +size_t pg_query__alter_system_stmt__pack_to_buffer + (const PgQuery__AlterSystemStmt *message, + ProtobufCBuffer *buffer); +PgQuery__AlterSystemStmt * + pg_query__alter_system_stmt__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void pg_query__alter_system_stmt__free_unpacked + (PgQuery__AlterSystemStmt *message, + ProtobufCAllocator *allocator); +/* PgQuery__CreatePolicyStmt methods */ +void pg_query__create_policy_stmt__init + (PgQuery__CreatePolicyStmt *message); +size_t pg_query__create_policy_stmt__get_packed_size + (const PgQuery__CreatePolicyStmt *message); +size_t pg_query__create_policy_stmt__pack + (const PgQuery__CreatePolicyStmt *message, + uint8_t *out); +size_t pg_query__create_policy_stmt__pack_to_buffer + (const PgQuery__CreatePolicyStmt *message, + ProtobufCBuffer *buffer); +PgQuery__CreatePolicyStmt * + pg_query__create_policy_stmt__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void pg_query__create_policy_stmt__free_unpacked + (PgQuery__CreatePolicyStmt *message, + ProtobufCAllocator *allocator); +/* PgQuery__AlterPolicyStmt methods */ +void pg_query__alter_policy_stmt__init + (PgQuery__AlterPolicyStmt *message); +size_t pg_query__alter_policy_stmt__get_packed_size + (const PgQuery__AlterPolicyStmt *message); +size_t pg_query__alter_policy_stmt__pack + (const PgQuery__AlterPolicyStmt *message, + uint8_t *out); +size_t pg_query__alter_policy_stmt__pack_to_buffer + (const PgQuery__AlterPolicyStmt *message, + ProtobufCBuffer *buffer); +PgQuery__AlterPolicyStmt * + pg_query__alter_policy_stmt__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void pg_query__alter_policy_stmt__free_unpacked + (PgQuery__AlterPolicyStmt *message, + ProtobufCAllocator *allocator); +/* PgQuery__CreateTransformStmt methods */ +void pg_query__create_transform_stmt__init + (PgQuery__CreateTransformStmt *message); +size_t pg_query__create_transform_stmt__get_packed_size + (const PgQuery__CreateTransformStmt *message); +size_t pg_query__create_transform_stmt__pack + (const PgQuery__CreateTransformStmt *message, + uint8_t *out); +size_t pg_query__create_transform_stmt__pack_to_buffer + (const PgQuery__CreateTransformStmt *message, + ProtobufCBuffer *buffer); +PgQuery__CreateTransformStmt * + pg_query__create_transform_stmt__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void pg_query__create_transform_stmt__free_unpacked + (PgQuery__CreateTransformStmt *message, + ProtobufCAllocator *allocator); +/* PgQuery__CreateAmStmt methods */ +void pg_query__create_am_stmt__init + (PgQuery__CreateAmStmt *message); +size_t pg_query__create_am_stmt__get_packed_size + (const PgQuery__CreateAmStmt *message); +size_t pg_query__create_am_stmt__pack + (const PgQuery__CreateAmStmt *message, + uint8_t *out); +size_t pg_query__create_am_stmt__pack_to_buffer + (const PgQuery__CreateAmStmt *message, + ProtobufCBuffer *buffer); +PgQuery__CreateAmStmt * + pg_query__create_am_stmt__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void pg_query__create_am_stmt__free_unpacked + (PgQuery__CreateAmStmt *message, + ProtobufCAllocator *allocator); +/* PgQuery__CreatePublicationStmt methods */ +void pg_query__create_publication_stmt__init + (PgQuery__CreatePublicationStmt *message); +size_t pg_query__create_publication_stmt__get_packed_size + (const PgQuery__CreatePublicationStmt *message); +size_t pg_query__create_publication_stmt__pack + (const PgQuery__CreatePublicationStmt *message, + uint8_t *out); +size_t pg_query__create_publication_stmt__pack_to_buffer + (const PgQuery__CreatePublicationStmt *message, + ProtobufCBuffer *buffer); +PgQuery__CreatePublicationStmt * + pg_query__create_publication_stmt__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void pg_query__create_publication_stmt__free_unpacked + (PgQuery__CreatePublicationStmt *message, + ProtobufCAllocator *allocator); +/* PgQuery__AlterPublicationStmt methods */ +void pg_query__alter_publication_stmt__init + (PgQuery__AlterPublicationStmt *message); +size_t pg_query__alter_publication_stmt__get_packed_size + (const PgQuery__AlterPublicationStmt *message); +size_t pg_query__alter_publication_stmt__pack + (const PgQuery__AlterPublicationStmt *message, + uint8_t *out); +size_t pg_query__alter_publication_stmt__pack_to_buffer + (const PgQuery__AlterPublicationStmt *message, + ProtobufCBuffer *buffer); +PgQuery__AlterPublicationStmt * + pg_query__alter_publication_stmt__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void pg_query__alter_publication_stmt__free_unpacked + (PgQuery__AlterPublicationStmt *message, + ProtobufCAllocator *allocator); +/* PgQuery__CreateSubscriptionStmt methods */ +void pg_query__create_subscription_stmt__init + (PgQuery__CreateSubscriptionStmt *message); +size_t pg_query__create_subscription_stmt__get_packed_size + (const PgQuery__CreateSubscriptionStmt *message); +size_t pg_query__create_subscription_stmt__pack + (const PgQuery__CreateSubscriptionStmt *message, + uint8_t *out); +size_t pg_query__create_subscription_stmt__pack_to_buffer + (const PgQuery__CreateSubscriptionStmt *message, + ProtobufCBuffer *buffer); +PgQuery__CreateSubscriptionStmt * + pg_query__create_subscription_stmt__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void pg_query__create_subscription_stmt__free_unpacked + (PgQuery__CreateSubscriptionStmt *message, + ProtobufCAllocator *allocator); +/* PgQuery__AlterSubscriptionStmt methods */ +void pg_query__alter_subscription_stmt__init + (PgQuery__AlterSubscriptionStmt *message); +size_t pg_query__alter_subscription_stmt__get_packed_size + (const PgQuery__AlterSubscriptionStmt *message); +size_t pg_query__alter_subscription_stmt__pack + (const PgQuery__AlterSubscriptionStmt *message, + uint8_t *out); +size_t pg_query__alter_subscription_stmt__pack_to_buffer + (const PgQuery__AlterSubscriptionStmt *message, + ProtobufCBuffer *buffer); +PgQuery__AlterSubscriptionStmt * + pg_query__alter_subscription_stmt__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void pg_query__alter_subscription_stmt__free_unpacked + (PgQuery__AlterSubscriptionStmt *message, + ProtobufCAllocator *allocator); +/* PgQuery__DropSubscriptionStmt methods */ +void pg_query__drop_subscription_stmt__init + (PgQuery__DropSubscriptionStmt *message); +size_t pg_query__drop_subscription_stmt__get_packed_size + (const PgQuery__DropSubscriptionStmt *message); +size_t pg_query__drop_subscription_stmt__pack + (const PgQuery__DropSubscriptionStmt *message, + uint8_t *out); +size_t pg_query__drop_subscription_stmt__pack_to_buffer + (const PgQuery__DropSubscriptionStmt *message, + ProtobufCBuffer *buffer); +PgQuery__DropSubscriptionStmt * + pg_query__drop_subscription_stmt__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void pg_query__drop_subscription_stmt__free_unpacked + (PgQuery__DropSubscriptionStmt *message, + ProtobufCAllocator *allocator); +/* PgQuery__CreateStatsStmt methods */ +void pg_query__create_stats_stmt__init + (PgQuery__CreateStatsStmt *message); +size_t pg_query__create_stats_stmt__get_packed_size + (const PgQuery__CreateStatsStmt *message); +size_t pg_query__create_stats_stmt__pack + (const PgQuery__CreateStatsStmt *message, + uint8_t *out); +size_t pg_query__create_stats_stmt__pack_to_buffer + (const PgQuery__CreateStatsStmt *message, + ProtobufCBuffer *buffer); +PgQuery__CreateStatsStmt * + pg_query__create_stats_stmt__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void pg_query__create_stats_stmt__free_unpacked + (PgQuery__CreateStatsStmt *message, + ProtobufCAllocator *allocator); +/* PgQuery__AlterCollationStmt methods */ +void pg_query__alter_collation_stmt__init + (PgQuery__AlterCollationStmt *message); +size_t pg_query__alter_collation_stmt__get_packed_size + (const PgQuery__AlterCollationStmt *message); +size_t pg_query__alter_collation_stmt__pack + (const PgQuery__AlterCollationStmt *message, + uint8_t *out); +size_t pg_query__alter_collation_stmt__pack_to_buffer + (const PgQuery__AlterCollationStmt *message, + ProtobufCBuffer *buffer); +PgQuery__AlterCollationStmt * + pg_query__alter_collation_stmt__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void pg_query__alter_collation_stmt__free_unpacked + (PgQuery__AlterCollationStmt *message, + ProtobufCAllocator *allocator); +/* PgQuery__CallStmt methods */ +void pg_query__call_stmt__init + (PgQuery__CallStmt *message); +size_t pg_query__call_stmt__get_packed_size + (const PgQuery__CallStmt *message); +size_t pg_query__call_stmt__pack + (const PgQuery__CallStmt *message, + uint8_t *out); +size_t pg_query__call_stmt__pack_to_buffer + (const PgQuery__CallStmt *message, + ProtobufCBuffer *buffer); +PgQuery__CallStmt * + pg_query__call_stmt__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void pg_query__call_stmt__free_unpacked + (PgQuery__CallStmt *message, + ProtobufCAllocator *allocator); +/* PgQuery__AlterStatsStmt methods */ +void pg_query__alter_stats_stmt__init + (PgQuery__AlterStatsStmt *message); +size_t pg_query__alter_stats_stmt__get_packed_size + (const PgQuery__AlterStatsStmt *message); +size_t pg_query__alter_stats_stmt__pack + (const PgQuery__AlterStatsStmt *message, + uint8_t *out); +size_t pg_query__alter_stats_stmt__pack_to_buffer + (const PgQuery__AlterStatsStmt *message, + ProtobufCBuffer *buffer); +PgQuery__AlterStatsStmt * + pg_query__alter_stats_stmt__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void pg_query__alter_stats_stmt__free_unpacked + (PgQuery__AlterStatsStmt *message, + ProtobufCAllocator *allocator); +/* PgQuery__AExpr methods */ +void pg_query__a__expr__init + (PgQuery__AExpr *message); +size_t pg_query__a__expr__get_packed_size + (const PgQuery__AExpr *message); +size_t pg_query__a__expr__pack + (const PgQuery__AExpr *message, + uint8_t *out); +size_t pg_query__a__expr__pack_to_buffer + (const PgQuery__AExpr *message, + ProtobufCBuffer *buffer); +PgQuery__AExpr * + pg_query__a__expr__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void pg_query__a__expr__free_unpacked + (PgQuery__AExpr *message, + ProtobufCAllocator *allocator); +/* PgQuery__ColumnRef methods */ +void pg_query__column_ref__init + (PgQuery__ColumnRef *message); +size_t pg_query__column_ref__get_packed_size + (const PgQuery__ColumnRef *message); +size_t pg_query__column_ref__pack + (const PgQuery__ColumnRef *message, + uint8_t *out); +size_t pg_query__column_ref__pack_to_buffer + (const PgQuery__ColumnRef *message, + ProtobufCBuffer *buffer); +PgQuery__ColumnRef * + pg_query__column_ref__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void pg_query__column_ref__free_unpacked + (PgQuery__ColumnRef *message, + ProtobufCAllocator *allocator); +/* PgQuery__ParamRef methods */ +void pg_query__param_ref__init + (PgQuery__ParamRef *message); +size_t pg_query__param_ref__get_packed_size + (const PgQuery__ParamRef *message); +size_t pg_query__param_ref__pack + (const PgQuery__ParamRef *message, + uint8_t *out); +size_t pg_query__param_ref__pack_to_buffer + (const PgQuery__ParamRef *message, + ProtobufCBuffer *buffer); +PgQuery__ParamRef * + pg_query__param_ref__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void pg_query__param_ref__free_unpacked + (PgQuery__ParamRef *message, + ProtobufCAllocator *allocator); +/* PgQuery__AConst methods */ +void pg_query__a__const__init + (PgQuery__AConst *message); +size_t pg_query__a__const__get_packed_size + (const PgQuery__AConst *message); +size_t pg_query__a__const__pack + (const PgQuery__AConst *message, + uint8_t *out); +size_t pg_query__a__const__pack_to_buffer + (const PgQuery__AConst *message, + ProtobufCBuffer *buffer); +PgQuery__AConst * + pg_query__a__const__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void pg_query__a__const__free_unpacked + (PgQuery__AConst *message, + ProtobufCAllocator *allocator); +/* PgQuery__FuncCall methods */ +void pg_query__func_call__init + (PgQuery__FuncCall *message); +size_t pg_query__func_call__get_packed_size + (const PgQuery__FuncCall *message); +size_t pg_query__func_call__pack + (const PgQuery__FuncCall *message, + uint8_t *out); +size_t pg_query__func_call__pack_to_buffer + (const PgQuery__FuncCall *message, + ProtobufCBuffer *buffer); +PgQuery__FuncCall * + pg_query__func_call__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void pg_query__func_call__free_unpacked + (PgQuery__FuncCall *message, + ProtobufCAllocator *allocator); +/* PgQuery__AStar methods */ +void pg_query__a__star__init + (PgQuery__AStar *message); +size_t pg_query__a__star__get_packed_size + (const PgQuery__AStar *message); +size_t pg_query__a__star__pack + (const PgQuery__AStar *message, + uint8_t *out); +size_t pg_query__a__star__pack_to_buffer + (const PgQuery__AStar *message, + ProtobufCBuffer *buffer); +PgQuery__AStar * + pg_query__a__star__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void pg_query__a__star__free_unpacked + (PgQuery__AStar *message, + ProtobufCAllocator *allocator); +/* PgQuery__AIndices methods */ +void pg_query__a__indices__init + (PgQuery__AIndices *message); +size_t pg_query__a__indices__get_packed_size + (const PgQuery__AIndices *message); +size_t pg_query__a__indices__pack + (const PgQuery__AIndices *message, + uint8_t *out); +size_t pg_query__a__indices__pack_to_buffer + (const PgQuery__AIndices *message, + ProtobufCBuffer *buffer); +PgQuery__AIndices * + pg_query__a__indices__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void pg_query__a__indices__free_unpacked + (PgQuery__AIndices *message, + ProtobufCAllocator *allocator); +/* PgQuery__AIndirection methods */ +void pg_query__a__indirection__init + (PgQuery__AIndirection *message); +size_t pg_query__a__indirection__get_packed_size + (const PgQuery__AIndirection *message); +size_t pg_query__a__indirection__pack + (const PgQuery__AIndirection *message, + uint8_t *out); +size_t pg_query__a__indirection__pack_to_buffer + (const PgQuery__AIndirection *message, + ProtobufCBuffer *buffer); +PgQuery__AIndirection * + pg_query__a__indirection__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void pg_query__a__indirection__free_unpacked + (PgQuery__AIndirection *message, + ProtobufCAllocator *allocator); +/* PgQuery__AArrayExpr methods */ +void pg_query__a__array_expr__init + (PgQuery__AArrayExpr *message); +size_t pg_query__a__array_expr__get_packed_size + (const PgQuery__AArrayExpr *message); +size_t pg_query__a__array_expr__pack + (const PgQuery__AArrayExpr *message, + uint8_t *out); +size_t pg_query__a__array_expr__pack_to_buffer + (const PgQuery__AArrayExpr *message, + ProtobufCBuffer *buffer); +PgQuery__AArrayExpr * + pg_query__a__array_expr__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void pg_query__a__array_expr__free_unpacked + (PgQuery__AArrayExpr *message, + ProtobufCAllocator *allocator); +/* PgQuery__ResTarget methods */ +void pg_query__res_target__init + (PgQuery__ResTarget *message); +size_t pg_query__res_target__get_packed_size + (const PgQuery__ResTarget *message); +size_t pg_query__res_target__pack + (const PgQuery__ResTarget *message, + uint8_t *out); +size_t pg_query__res_target__pack_to_buffer + (const PgQuery__ResTarget *message, + ProtobufCBuffer *buffer); +PgQuery__ResTarget * + pg_query__res_target__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void pg_query__res_target__free_unpacked + (PgQuery__ResTarget *message, + ProtobufCAllocator *allocator); +/* PgQuery__MultiAssignRef methods */ +void pg_query__multi_assign_ref__init + (PgQuery__MultiAssignRef *message); +size_t pg_query__multi_assign_ref__get_packed_size + (const PgQuery__MultiAssignRef *message); +size_t pg_query__multi_assign_ref__pack + (const PgQuery__MultiAssignRef *message, + uint8_t *out); +size_t pg_query__multi_assign_ref__pack_to_buffer + (const PgQuery__MultiAssignRef *message, + ProtobufCBuffer *buffer); +PgQuery__MultiAssignRef * + pg_query__multi_assign_ref__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void pg_query__multi_assign_ref__free_unpacked + (PgQuery__MultiAssignRef *message, + ProtobufCAllocator *allocator); +/* PgQuery__TypeCast methods */ +void pg_query__type_cast__init + (PgQuery__TypeCast *message); +size_t pg_query__type_cast__get_packed_size + (const PgQuery__TypeCast *message); +size_t pg_query__type_cast__pack + (const PgQuery__TypeCast *message, + uint8_t *out); +size_t pg_query__type_cast__pack_to_buffer + (const PgQuery__TypeCast *message, + ProtobufCBuffer *buffer); +PgQuery__TypeCast * + pg_query__type_cast__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void pg_query__type_cast__free_unpacked + (PgQuery__TypeCast *message, + ProtobufCAllocator *allocator); +/* PgQuery__CollateClause methods */ +void pg_query__collate_clause__init + (PgQuery__CollateClause *message); +size_t pg_query__collate_clause__get_packed_size + (const PgQuery__CollateClause *message); +size_t pg_query__collate_clause__pack + (const PgQuery__CollateClause *message, + uint8_t *out); +size_t pg_query__collate_clause__pack_to_buffer + (const PgQuery__CollateClause *message, + ProtobufCBuffer *buffer); +PgQuery__CollateClause * + pg_query__collate_clause__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void pg_query__collate_clause__free_unpacked + (PgQuery__CollateClause *message, + ProtobufCAllocator *allocator); +/* PgQuery__SortBy methods */ +void pg_query__sort_by__init + (PgQuery__SortBy *message); +size_t pg_query__sort_by__get_packed_size + (const PgQuery__SortBy *message); +size_t pg_query__sort_by__pack + (const PgQuery__SortBy *message, + uint8_t *out); +size_t pg_query__sort_by__pack_to_buffer + (const PgQuery__SortBy *message, + ProtobufCBuffer *buffer); +PgQuery__SortBy * + pg_query__sort_by__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void pg_query__sort_by__free_unpacked + (PgQuery__SortBy *message, + ProtobufCAllocator *allocator); +/* PgQuery__WindowDef methods */ +void pg_query__window_def__init + (PgQuery__WindowDef *message); +size_t pg_query__window_def__get_packed_size + (const PgQuery__WindowDef *message); +size_t pg_query__window_def__pack + (const PgQuery__WindowDef *message, + uint8_t *out); +size_t pg_query__window_def__pack_to_buffer + (const PgQuery__WindowDef *message, + ProtobufCBuffer *buffer); +PgQuery__WindowDef * + pg_query__window_def__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void pg_query__window_def__free_unpacked + (PgQuery__WindowDef *message, + ProtobufCAllocator *allocator); +/* PgQuery__RangeSubselect methods */ +void pg_query__range_subselect__init + (PgQuery__RangeSubselect *message); +size_t pg_query__range_subselect__get_packed_size + (const PgQuery__RangeSubselect *message); +size_t pg_query__range_subselect__pack + (const PgQuery__RangeSubselect *message, + uint8_t *out); +size_t pg_query__range_subselect__pack_to_buffer + (const PgQuery__RangeSubselect *message, + ProtobufCBuffer *buffer); +PgQuery__RangeSubselect * + pg_query__range_subselect__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void pg_query__range_subselect__free_unpacked + (PgQuery__RangeSubselect *message, + ProtobufCAllocator *allocator); +/* PgQuery__RangeFunction methods */ +void pg_query__range_function__init + (PgQuery__RangeFunction *message); +size_t pg_query__range_function__get_packed_size + (const PgQuery__RangeFunction *message); +size_t pg_query__range_function__pack + (const PgQuery__RangeFunction *message, + uint8_t *out); +size_t pg_query__range_function__pack_to_buffer + (const PgQuery__RangeFunction *message, + ProtobufCBuffer *buffer); +PgQuery__RangeFunction * + pg_query__range_function__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void pg_query__range_function__free_unpacked + (PgQuery__RangeFunction *message, + ProtobufCAllocator *allocator); +/* PgQuery__RangeTableSample methods */ +void pg_query__range_table_sample__init + (PgQuery__RangeTableSample *message); +size_t pg_query__range_table_sample__get_packed_size + (const PgQuery__RangeTableSample *message); +size_t pg_query__range_table_sample__pack + (const PgQuery__RangeTableSample *message, + uint8_t *out); +size_t pg_query__range_table_sample__pack_to_buffer + (const PgQuery__RangeTableSample *message, + ProtobufCBuffer *buffer); +PgQuery__RangeTableSample * + pg_query__range_table_sample__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void pg_query__range_table_sample__free_unpacked + (PgQuery__RangeTableSample *message, + ProtobufCAllocator *allocator); +/* PgQuery__RangeTableFunc methods */ +void pg_query__range_table_func__init + (PgQuery__RangeTableFunc *message); +size_t pg_query__range_table_func__get_packed_size + (const PgQuery__RangeTableFunc *message); +size_t pg_query__range_table_func__pack + (const PgQuery__RangeTableFunc *message, + uint8_t *out); +size_t pg_query__range_table_func__pack_to_buffer + (const PgQuery__RangeTableFunc *message, + ProtobufCBuffer *buffer); +PgQuery__RangeTableFunc * + pg_query__range_table_func__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void pg_query__range_table_func__free_unpacked + (PgQuery__RangeTableFunc *message, + ProtobufCAllocator *allocator); +/* PgQuery__RangeTableFuncCol methods */ +void pg_query__range_table_func_col__init + (PgQuery__RangeTableFuncCol *message); +size_t pg_query__range_table_func_col__get_packed_size + (const PgQuery__RangeTableFuncCol *message); +size_t pg_query__range_table_func_col__pack + (const PgQuery__RangeTableFuncCol *message, + uint8_t *out); +size_t pg_query__range_table_func_col__pack_to_buffer + (const PgQuery__RangeTableFuncCol *message, + ProtobufCBuffer *buffer); +PgQuery__RangeTableFuncCol * + pg_query__range_table_func_col__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void pg_query__range_table_func_col__free_unpacked + (PgQuery__RangeTableFuncCol *message, + ProtobufCAllocator *allocator); +/* PgQuery__TypeName methods */ +void pg_query__type_name__init + (PgQuery__TypeName *message); +size_t pg_query__type_name__get_packed_size + (const PgQuery__TypeName *message); +size_t pg_query__type_name__pack + (const PgQuery__TypeName *message, + uint8_t *out); +size_t pg_query__type_name__pack_to_buffer + (const PgQuery__TypeName *message, + ProtobufCBuffer *buffer); +PgQuery__TypeName * + pg_query__type_name__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void pg_query__type_name__free_unpacked + (PgQuery__TypeName *message, + ProtobufCAllocator *allocator); +/* PgQuery__ColumnDef methods */ +void pg_query__column_def__init + (PgQuery__ColumnDef *message); +size_t pg_query__column_def__get_packed_size + (const PgQuery__ColumnDef *message); +size_t pg_query__column_def__pack + (const PgQuery__ColumnDef *message, + uint8_t *out); +size_t pg_query__column_def__pack_to_buffer + (const PgQuery__ColumnDef *message, + ProtobufCBuffer *buffer); +PgQuery__ColumnDef * + pg_query__column_def__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void pg_query__column_def__free_unpacked + (PgQuery__ColumnDef *message, + ProtobufCAllocator *allocator); +/* PgQuery__IndexElem methods */ +void pg_query__index_elem__init + (PgQuery__IndexElem *message); +size_t pg_query__index_elem__get_packed_size + (const PgQuery__IndexElem *message); +size_t pg_query__index_elem__pack + (const PgQuery__IndexElem *message, + uint8_t *out); +size_t pg_query__index_elem__pack_to_buffer + (const PgQuery__IndexElem *message, + ProtobufCBuffer *buffer); +PgQuery__IndexElem * + pg_query__index_elem__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void pg_query__index_elem__free_unpacked + (PgQuery__IndexElem *message, + ProtobufCAllocator *allocator); +/* PgQuery__Constraint methods */ +void pg_query__constraint__init + (PgQuery__Constraint *message); +size_t pg_query__constraint__get_packed_size + (const PgQuery__Constraint *message); +size_t pg_query__constraint__pack + (const PgQuery__Constraint *message, + uint8_t *out); +size_t pg_query__constraint__pack_to_buffer + (const PgQuery__Constraint *message, + ProtobufCBuffer *buffer); +PgQuery__Constraint * + pg_query__constraint__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void pg_query__constraint__free_unpacked + (PgQuery__Constraint *message, + ProtobufCAllocator *allocator); +/* PgQuery__DefElem methods */ +void pg_query__def_elem__init + (PgQuery__DefElem *message); +size_t pg_query__def_elem__get_packed_size + (const PgQuery__DefElem *message); +size_t pg_query__def_elem__pack + (const PgQuery__DefElem *message, + uint8_t *out); +size_t pg_query__def_elem__pack_to_buffer + (const PgQuery__DefElem *message, + ProtobufCBuffer *buffer); +PgQuery__DefElem * + pg_query__def_elem__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void pg_query__def_elem__free_unpacked + (PgQuery__DefElem *message, + ProtobufCAllocator *allocator); +/* PgQuery__RangeTblEntry methods */ +void pg_query__range_tbl_entry__init + (PgQuery__RangeTblEntry *message); +size_t pg_query__range_tbl_entry__get_packed_size + (const PgQuery__RangeTblEntry *message); +size_t pg_query__range_tbl_entry__pack + (const PgQuery__RangeTblEntry *message, + uint8_t *out); +size_t pg_query__range_tbl_entry__pack_to_buffer + (const PgQuery__RangeTblEntry *message, + ProtobufCBuffer *buffer); +PgQuery__RangeTblEntry * + pg_query__range_tbl_entry__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void pg_query__range_tbl_entry__free_unpacked + (PgQuery__RangeTblEntry *message, + ProtobufCAllocator *allocator); +/* PgQuery__RangeTblFunction methods */ +void pg_query__range_tbl_function__init + (PgQuery__RangeTblFunction *message); +size_t pg_query__range_tbl_function__get_packed_size + (const PgQuery__RangeTblFunction *message); +size_t pg_query__range_tbl_function__pack + (const PgQuery__RangeTblFunction *message, + uint8_t *out); +size_t pg_query__range_tbl_function__pack_to_buffer + (const PgQuery__RangeTblFunction *message, + ProtobufCBuffer *buffer); +PgQuery__RangeTblFunction * + pg_query__range_tbl_function__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void pg_query__range_tbl_function__free_unpacked + (PgQuery__RangeTblFunction *message, + ProtobufCAllocator *allocator); +/* PgQuery__TableSampleClause methods */ +void pg_query__table_sample_clause__init + (PgQuery__TableSampleClause *message); +size_t pg_query__table_sample_clause__get_packed_size + (const PgQuery__TableSampleClause *message); +size_t pg_query__table_sample_clause__pack + (const PgQuery__TableSampleClause *message, + uint8_t *out); +size_t pg_query__table_sample_clause__pack_to_buffer + (const PgQuery__TableSampleClause *message, + ProtobufCBuffer *buffer); +PgQuery__TableSampleClause * + pg_query__table_sample_clause__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void pg_query__table_sample_clause__free_unpacked + (PgQuery__TableSampleClause *message, + ProtobufCAllocator *allocator); +/* PgQuery__WithCheckOption methods */ +void pg_query__with_check_option__init + (PgQuery__WithCheckOption *message); +size_t pg_query__with_check_option__get_packed_size + (const PgQuery__WithCheckOption *message); +size_t pg_query__with_check_option__pack + (const PgQuery__WithCheckOption *message, + uint8_t *out); +size_t pg_query__with_check_option__pack_to_buffer + (const PgQuery__WithCheckOption *message, + ProtobufCBuffer *buffer); +PgQuery__WithCheckOption * + pg_query__with_check_option__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void pg_query__with_check_option__free_unpacked + (PgQuery__WithCheckOption *message, + ProtobufCAllocator *allocator); +/* PgQuery__SortGroupClause methods */ +void pg_query__sort_group_clause__init + (PgQuery__SortGroupClause *message); +size_t pg_query__sort_group_clause__get_packed_size + (const PgQuery__SortGroupClause *message); +size_t pg_query__sort_group_clause__pack + (const PgQuery__SortGroupClause *message, + uint8_t *out); +size_t pg_query__sort_group_clause__pack_to_buffer + (const PgQuery__SortGroupClause *message, + ProtobufCBuffer *buffer); +PgQuery__SortGroupClause * + pg_query__sort_group_clause__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void pg_query__sort_group_clause__free_unpacked + (PgQuery__SortGroupClause *message, + ProtobufCAllocator *allocator); +/* PgQuery__GroupingSet methods */ +void pg_query__grouping_set__init + (PgQuery__GroupingSet *message); +size_t pg_query__grouping_set__get_packed_size + (const PgQuery__GroupingSet *message); +size_t pg_query__grouping_set__pack + (const PgQuery__GroupingSet *message, + uint8_t *out); +size_t pg_query__grouping_set__pack_to_buffer + (const PgQuery__GroupingSet *message, + ProtobufCBuffer *buffer); +PgQuery__GroupingSet * + pg_query__grouping_set__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void pg_query__grouping_set__free_unpacked + (PgQuery__GroupingSet *message, + ProtobufCAllocator *allocator); +/* PgQuery__WindowClause methods */ +void pg_query__window_clause__init + (PgQuery__WindowClause *message); +size_t pg_query__window_clause__get_packed_size + (const PgQuery__WindowClause *message); +size_t pg_query__window_clause__pack + (const PgQuery__WindowClause *message, + uint8_t *out); +size_t pg_query__window_clause__pack_to_buffer + (const PgQuery__WindowClause *message, + ProtobufCBuffer *buffer); +PgQuery__WindowClause * + pg_query__window_clause__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void pg_query__window_clause__free_unpacked + (PgQuery__WindowClause *message, + ProtobufCAllocator *allocator); +/* PgQuery__ObjectWithArgs methods */ +void pg_query__object_with_args__init + (PgQuery__ObjectWithArgs *message); +size_t pg_query__object_with_args__get_packed_size + (const PgQuery__ObjectWithArgs *message); +size_t pg_query__object_with_args__pack + (const PgQuery__ObjectWithArgs *message, + uint8_t *out); +size_t pg_query__object_with_args__pack_to_buffer + (const PgQuery__ObjectWithArgs *message, + ProtobufCBuffer *buffer); +PgQuery__ObjectWithArgs * + pg_query__object_with_args__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void pg_query__object_with_args__free_unpacked + (PgQuery__ObjectWithArgs *message, + ProtobufCAllocator *allocator); +/* PgQuery__AccessPriv methods */ +void pg_query__access_priv__init + (PgQuery__AccessPriv *message); +size_t pg_query__access_priv__get_packed_size + (const PgQuery__AccessPriv *message); +size_t pg_query__access_priv__pack + (const PgQuery__AccessPriv *message, + uint8_t *out); +size_t pg_query__access_priv__pack_to_buffer + (const PgQuery__AccessPriv *message, + ProtobufCBuffer *buffer); +PgQuery__AccessPriv * + pg_query__access_priv__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void pg_query__access_priv__free_unpacked + (PgQuery__AccessPriv *message, + ProtobufCAllocator *allocator); +/* PgQuery__CreateOpClassItem methods */ +void pg_query__create_op_class_item__init + (PgQuery__CreateOpClassItem *message); +size_t pg_query__create_op_class_item__get_packed_size + (const PgQuery__CreateOpClassItem *message); +size_t pg_query__create_op_class_item__pack + (const PgQuery__CreateOpClassItem *message, + uint8_t *out); +size_t pg_query__create_op_class_item__pack_to_buffer + (const PgQuery__CreateOpClassItem *message, + ProtobufCBuffer *buffer); +PgQuery__CreateOpClassItem * + pg_query__create_op_class_item__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void pg_query__create_op_class_item__free_unpacked + (PgQuery__CreateOpClassItem *message, + ProtobufCAllocator *allocator); +/* PgQuery__TableLikeClause methods */ +void pg_query__table_like_clause__init + (PgQuery__TableLikeClause *message); +size_t pg_query__table_like_clause__get_packed_size + (const PgQuery__TableLikeClause *message); +size_t pg_query__table_like_clause__pack + (const PgQuery__TableLikeClause *message, + uint8_t *out); +size_t pg_query__table_like_clause__pack_to_buffer + (const PgQuery__TableLikeClause *message, + ProtobufCBuffer *buffer); +PgQuery__TableLikeClause * + pg_query__table_like_clause__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void pg_query__table_like_clause__free_unpacked + (PgQuery__TableLikeClause *message, + ProtobufCAllocator *allocator); +/* PgQuery__FunctionParameter methods */ +void pg_query__function_parameter__init + (PgQuery__FunctionParameter *message); +size_t pg_query__function_parameter__get_packed_size + (const PgQuery__FunctionParameter *message); +size_t pg_query__function_parameter__pack + (const PgQuery__FunctionParameter *message, + uint8_t *out); +size_t pg_query__function_parameter__pack_to_buffer + (const PgQuery__FunctionParameter *message, + ProtobufCBuffer *buffer); +PgQuery__FunctionParameter * + pg_query__function_parameter__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void pg_query__function_parameter__free_unpacked + (PgQuery__FunctionParameter *message, + ProtobufCAllocator *allocator); +/* PgQuery__LockingClause methods */ +void pg_query__locking_clause__init + (PgQuery__LockingClause *message); +size_t pg_query__locking_clause__get_packed_size + (const PgQuery__LockingClause *message); +size_t pg_query__locking_clause__pack + (const PgQuery__LockingClause *message, + uint8_t *out); +size_t pg_query__locking_clause__pack_to_buffer + (const PgQuery__LockingClause *message, + ProtobufCBuffer *buffer); +PgQuery__LockingClause * + pg_query__locking_clause__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void pg_query__locking_clause__free_unpacked + (PgQuery__LockingClause *message, + ProtobufCAllocator *allocator); +/* PgQuery__RowMarkClause methods */ +void pg_query__row_mark_clause__init + (PgQuery__RowMarkClause *message); +size_t pg_query__row_mark_clause__get_packed_size + (const PgQuery__RowMarkClause *message); +size_t pg_query__row_mark_clause__pack + (const PgQuery__RowMarkClause *message, + uint8_t *out); +size_t pg_query__row_mark_clause__pack_to_buffer + (const PgQuery__RowMarkClause *message, + ProtobufCBuffer *buffer); +PgQuery__RowMarkClause * + pg_query__row_mark_clause__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void pg_query__row_mark_clause__free_unpacked + (PgQuery__RowMarkClause *message, + ProtobufCAllocator *allocator); +/* PgQuery__XmlSerialize methods */ +void pg_query__xml_serialize__init + (PgQuery__XmlSerialize *message); +size_t pg_query__xml_serialize__get_packed_size + (const PgQuery__XmlSerialize *message); +size_t pg_query__xml_serialize__pack + (const PgQuery__XmlSerialize *message, + uint8_t *out); +size_t pg_query__xml_serialize__pack_to_buffer + (const PgQuery__XmlSerialize *message, + ProtobufCBuffer *buffer); +PgQuery__XmlSerialize * + pg_query__xml_serialize__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void pg_query__xml_serialize__free_unpacked + (PgQuery__XmlSerialize *message, + ProtobufCAllocator *allocator); +/* PgQuery__WithClause methods */ +void pg_query__with_clause__init + (PgQuery__WithClause *message); +size_t pg_query__with_clause__get_packed_size + (const PgQuery__WithClause *message); +size_t pg_query__with_clause__pack + (const PgQuery__WithClause *message, + uint8_t *out); +size_t pg_query__with_clause__pack_to_buffer + (const PgQuery__WithClause *message, + ProtobufCBuffer *buffer); +PgQuery__WithClause * + pg_query__with_clause__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void pg_query__with_clause__free_unpacked + (PgQuery__WithClause *message, + ProtobufCAllocator *allocator); +/* PgQuery__InferClause methods */ +void pg_query__infer_clause__init + (PgQuery__InferClause *message); +size_t pg_query__infer_clause__get_packed_size + (const PgQuery__InferClause *message); +size_t pg_query__infer_clause__pack + (const PgQuery__InferClause *message, + uint8_t *out); +size_t pg_query__infer_clause__pack_to_buffer + (const PgQuery__InferClause *message, + ProtobufCBuffer *buffer); +PgQuery__InferClause * + pg_query__infer_clause__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void pg_query__infer_clause__free_unpacked + (PgQuery__InferClause *message, + ProtobufCAllocator *allocator); +/* PgQuery__OnConflictClause methods */ +void pg_query__on_conflict_clause__init + (PgQuery__OnConflictClause *message); +size_t pg_query__on_conflict_clause__get_packed_size + (const PgQuery__OnConflictClause *message); +size_t pg_query__on_conflict_clause__pack + (const PgQuery__OnConflictClause *message, + uint8_t *out); +size_t pg_query__on_conflict_clause__pack_to_buffer + (const PgQuery__OnConflictClause *message, + ProtobufCBuffer *buffer); +PgQuery__OnConflictClause * + pg_query__on_conflict_clause__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void pg_query__on_conflict_clause__free_unpacked + (PgQuery__OnConflictClause *message, + ProtobufCAllocator *allocator); +/* PgQuery__CommonTableExpr methods */ +void pg_query__common_table_expr__init + (PgQuery__CommonTableExpr *message); +size_t pg_query__common_table_expr__get_packed_size + (const PgQuery__CommonTableExpr *message); +size_t pg_query__common_table_expr__pack + (const PgQuery__CommonTableExpr *message, + uint8_t *out); +size_t pg_query__common_table_expr__pack_to_buffer + (const PgQuery__CommonTableExpr *message, + ProtobufCBuffer *buffer); +PgQuery__CommonTableExpr * + pg_query__common_table_expr__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void pg_query__common_table_expr__free_unpacked + (PgQuery__CommonTableExpr *message, + ProtobufCAllocator *allocator); +/* PgQuery__RoleSpec methods */ +void pg_query__role_spec__init + (PgQuery__RoleSpec *message); +size_t pg_query__role_spec__get_packed_size + (const PgQuery__RoleSpec *message); +size_t pg_query__role_spec__pack + (const PgQuery__RoleSpec *message, + uint8_t *out); +size_t pg_query__role_spec__pack_to_buffer + (const PgQuery__RoleSpec *message, + ProtobufCBuffer *buffer); +PgQuery__RoleSpec * + pg_query__role_spec__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void pg_query__role_spec__free_unpacked + (PgQuery__RoleSpec *message, + ProtobufCAllocator *allocator); +/* PgQuery__TriggerTransition methods */ +void pg_query__trigger_transition__init + (PgQuery__TriggerTransition *message); +size_t pg_query__trigger_transition__get_packed_size + (const PgQuery__TriggerTransition *message); +size_t pg_query__trigger_transition__pack + (const PgQuery__TriggerTransition *message, + uint8_t *out); +size_t pg_query__trigger_transition__pack_to_buffer + (const PgQuery__TriggerTransition *message, + ProtobufCBuffer *buffer); +PgQuery__TriggerTransition * + pg_query__trigger_transition__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void pg_query__trigger_transition__free_unpacked + (PgQuery__TriggerTransition *message, + ProtobufCAllocator *allocator); +/* PgQuery__PartitionElem methods */ +void pg_query__partition_elem__init + (PgQuery__PartitionElem *message); +size_t pg_query__partition_elem__get_packed_size + (const PgQuery__PartitionElem *message); +size_t pg_query__partition_elem__pack + (const PgQuery__PartitionElem *message, + uint8_t *out); +size_t pg_query__partition_elem__pack_to_buffer + (const PgQuery__PartitionElem *message, + ProtobufCBuffer *buffer); +PgQuery__PartitionElem * + pg_query__partition_elem__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void pg_query__partition_elem__free_unpacked + (PgQuery__PartitionElem *message, + ProtobufCAllocator *allocator); +/* PgQuery__PartitionSpec methods */ +void pg_query__partition_spec__init + (PgQuery__PartitionSpec *message); +size_t pg_query__partition_spec__get_packed_size + (const PgQuery__PartitionSpec *message); +size_t pg_query__partition_spec__pack + (const PgQuery__PartitionSpec *message, + uint8_t *out); +size_t pg_query__partition_spec__pack_to_buffer + (const PgQuery__PartitionSpec *message, + ProtobufCBuffer *buffer); +PgQuery__PartitionSpec * + pg_query__partition_spec__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void pg_query__partition_spec__free_unpacked + (PgQuery__PartitionSpec *message, + ProtobufCAllocator *allocator); +/* PgQuery__PartitionBoundSpec methods */ +void pg_query__partition_bound_spec__init + (PgQuery__PartitionBoundSpec *message); +size_t pg_query__partition_bound_spec__get_packed_size + (const PgQuery__PartitionBoundSpec *message); +size_t pg_query__partition_bound_spec__pack + (const PgQuery__PartitionBoundSpec *message, + uint8_t *out); +size_t pg_query__partition_bound_spec__pack_to_buffer + (const PgQuery__PartitionBoundSpec *message, + ProtobufCBuffer *buffer); +PgQuery__PartitionBoundSpec * + pg_query__partition_bound_spec__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void pg_query__partition_bound_spec__free_unpacked + (PgQuery__PartitionBoundSpec *message, + ProtobufCAllocator *allocator); +/* PgQuery__PartitionRangeDatum methods */ +void pg_query__partition_range_datum__init + (PgQuery__PartitionRangeDatum *message); +size_t pg_query__partition_range_datum__get_packed_size + (const PgQuery__PartitionRangeDatum *message); +size_t pg_query__partition_range_datum__pack + (const PgQuery__PartitionRangeDatum *message, + uint8_t *out); +size_t pg_query__partition_range_datum__pack_to_buffer + (const PgQuery__PartitionRangeDatum *message, + ProtobufCBuffer *buffer); +PgQuery__PartitionRangeDatum * + pg_query__partition_range_datum__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void pg_query__partition_range_datum__free_unpacked + (PgQuery__PartitionRangeDatum *message, + ProtobufCAllocator *allocator); +/* PgQuery__PartitionCmd methods */ +void pg_query__partition_cmd__init + (PgQuery__PartitionCmd *message); +size_t pg_query__partition_cmd__get_packed_size + (const PgQuery__PartitionCmd *message); +size_t pg_query__partition_cmd__pack + (const PgQuery__PartitionCmd *message, + uint8_t *out); +size_t pg_query__partition_cmd__pack_to_buffer + (const PgQuery__PartitionCmd *message, + ProtobufCBuffer *buffer); +PgQuery__PartitionCmd * + pg_query__partition_cmd__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void pg_query__partition_cmd__free_unpacked + (PgQuery__PartitionCmd *message, + ProtobufCAllocator *allocator); +/* PgQuery__VacuumRelation methods */ +void pg_query__vacuum_relation__init + (PgQuery__VacuumRelation *message); +size_t pg_query__vacuum_relation__get_packed_size + (const PgQuery__VacuumRelation *message); +size_t pg_query__vacuum_relation__pack + (const PgQuery__VacuumRelation *message, + uint8_t *out); +size_t pg_query__vacuum_relation__pack_to_buffer + (const PgQuery__VacuumRelation *message, + ProtobufCBuffer *buffer); +PgQuery__VacuumRelation * + pg_query__vacuum_relation__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void pg_query__vacuum_relation__free_unpacked + (PgQuery__VacuumRelation *message, + ProtobufCAllocator *allocator); +/* PgQuery__InlineCodeBlock methods */ +void pg_query__inline_code_block__init + (PgQuery__InlineCodeBlock *message); +size_t pg_query__inline_code_block__get_packed_size + (const PgQuery__InlineCodeBlock *message); +size_t pg_query__inline_code_block__pack + (const PgQuery__InlineCodeBlock *message, + uint8_t *out); +size_t pg_query__inline_code_block__pack_to_buffer + (const PgQuery__InlineCodeBlock *message, + ProtobufCBuffer *buffer); +PgQuery__InlineCodeBlock * + pg_query__inline_code_block__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void pg_query__inline_code_block__free_unpacked + (PgQuery__InlineCodeBlock *message, + ProtobufCAllocator *allocator); +/* PgQuery__CallContext methods */ +void pg_query__call_context__init + (PgQuery__CallContext *message); +size_t pg_query__call_context__get_packed_size + (const PgQuery__CallContext *message); +size_t pg_query__call_context__pack + (const PgQuery__CallContext *message, + uint8_t *out); +size_t pg_query__call_context__pack_to_buffer + (const PgQuery__CallContext *message, + ProtobufCBuffer *buffer); +PgQuery__CallContext * + pg_query__call_context__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void pg_query__call_context__free_unpacked + (PgQuery__CallContext *message, + ProtobufCAllocator *allocator); +/* PgQuery__ScanToken methods */ +void pg_query__scan_token__init + (PgQuery__ScanToken *message); +size_t pg_query__scan_token__get_packed_size + (const PgQuery__ScanToken *message); +size_t pg_query__scan_token__pack + (const PgQuery__ScanToken *message, + uint8_t *out); +size_t pg_query__scan_token__pack_to_buffer + (const PgQuery__ScanToken *message, + ProtobufCBuffer *buffer); +PgQuery__ScanToken * + pg_query__scan_token__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void pg_query__scan_token__free_unpacked + (PgQuery__ScanToken *message, + ProtobufCAllocator *allocator); +/* --- per-message closures --- */ + +typedef void (*PgQuery__ParseResult_Closure) + (const PgQuery__ParseResult *message, + void *closure_data); +typedef void (*PgQuery__ScanResult_Closure) + (const PgQuery__ScanResult *message, + void *closure_data); +typedef void (*PgQuery__Node_Closure) + (const PgQuery__Node *message, + void *closure_data); +typedef void (*PgQuery__Integer_Closure) + (const PgQuery__Integer *message, + void *closure_data); +typedef void (*PgQuery__Float_Closure) + (const PgQuery__Float *message, + void *closure_data); +typedef void (*PgQuery__String_Closure) + (const PgQuery__String *message, + void *closure_data); +typedef void (*PgQuery__BitString_Closure) + (const PgQuery__BitString *message, + void *closure_data); +typedef void (*PgQuery__Null_Closure) + (const PgQuery__Null *message, + void *closure_data); +typedef void (*PgQuery__List_Closure) + (const PgQuery__List *message, + void *closure_data); +typedef void (*PgQuery__OidList_Closure) + (const PgQuery__OidList *message, + void *closure_data); +typedef void (*PgQuery__IntList_Closure) + (const PgQuery__IntList *message, + void *closure_data); +typedef void (*PgQuery__Alias_Closure) + (const PgQuery__Alias *message, + void *closure_data); +typedef void (*PgQuery__RangeVar_Closure) + (const PgQuery__RangeVar *message, + void *closure_data); +typedef void (*PgQuery__TableFunc_Closure) + (const PgQuery__TableFunc *message, + void *closure_data); +typedef void (*PgQuery__Expr_Closure) + (const PgQuery__Expr *message, + void *closure_data); +typedef void (*PgQuery__Var_Closure) + (const PgQuery__Var *message, + void *closure_data); +typedef void (*PgQuery__Param_Closure) + (const PgQuery__Param *message, + void *closure_data); +typedef void (*PgQuery__Aggref_Closure) + (const PgQuery__Aggref *message, + void *closure_data); +typedef void (*PgQuery__GroupingFunc_Closure) + (const PgQuery__GroupingFunc *message, + void *closure_data); +typedef void (*PgQuery__WindowFunc_Closure) + (const PgQuery__WindowFunc *message, + void *closure_data); +typedef void (*PgQuery__SubscriptingRef_Closure) + (const PgQuery__SubscriptingRef *message, + void *closure_data); +typedef void (*PgQuery__FuncExpr_Closure) + (const PgQuery__FuncExpr *message, + void *closure_data); +typedef void (*PgQuery__NamedArgExpr_Closure) + (const PgQuery__NamedArgExpr *message, + void *closure_data); +typedef void (*PgQuery__OpExpr_Closure) + (const PgQuery__OpExpr *message, + void *closure_data); +typedef void (*PgQuery__DistinctExpr_Closure) + (const PgQuery__DistinctExpr *message, + void *closure_data); +typedef void (*PgQuery__NullIfExpr_Closure) + (const PgQuery__NullIfExpr *message, + void *closure_data); +typedef void (*PgQuery__ScalarArrayOpExpr_Closure) + (const PgQuery__ScalarArrayOpExpr *message, + void *closure_data); +typedef void (*PgQuery__BoolExpr_Closure) + (const PgQuery__BoolExpr *message, + void *closure_data); +typedef void (*PgQuery__SubLink_Closure) + (const PgQuery__SubLink *message, + void *closure_data); +typedef void (*PgQuery__SubPlan_Closure) + (const PgQuery__SubPlan *message, + void *closure_data); +typedef void (*PgQuery__AlternativeSubPlan_Closure) + (const PgQuery__AlternativeSubPlan *message, + void *closure_data); +typedef void (*PgQuery__FieldSelect_Closure) + (const PgQuery__FieldSelect *message, + void *closure_data); +typedef void (*PgQuery__FieldStore_Closure) + (const PgQuery__FieldStore *message, + void *closure_data); +typedef void (*PgQuery__RelabelType_Closure) + (const PgQuery__RelabelType *message, + void *closure_data); +typedef void (*PgQuery__CoerceViaIO_Closure) + (const PgQuery__CoerceViaIO *message, + void *closure_data); +typedef void (*PgQuery__ArrayCoerceExpr_Closure) + (const PgQuery__ArrayCoerceExpr *message, + void *closure_data); +typedef void (*PgQuery__ConvertRowtypeExpr_Closure) + (const PgQuery__ConvertRowtypeExpr *message, + void *closure_data); +typedef void (*PgQuery__CollateExpr_Closure) + (const PgQuery__CollateExpr *message, + void *closure_data); +typedef void (*PgQuery__CaseExpr_Closure) + (const PgQuery__CaseExpr *message, + void *closure_data); +typedef void (*PgQuery__CaseWhen_Closure) + (const PgQuery__CaseWhen *message, + void *closure_data); +typedef void (*PgQuery__CaseTestExpr_Closure) + (const PgQuery__CaseTestExpr *message, + void *closure_data); +typedef void (*PgQuery__ArrayExpr_Closure) + (const PgQuery__ArrayExpr *message, + void *closure_data); +typedef void (*PgQuery__RowExpr_Closure) + (const PgQuery__RowExpr *message, + void *closure_data); +typedef void (*PgQuery__RowCompareExpr_Closure) + (const PgQuery__RowCompareExpr *message, + void *closure_data); +typedef void (*PgQuery__CoalesceExpr_Closure) + (const PgQuery__CoalesceExpr *message, + void *closure_data); +typedef void (*PgQuery__MinMaxExpr_Closure) + (const PgQuery__MinMaxExpr *message, + void *closure_data); +typedef void (*PgQuery__SQLValueFunction_Closure) + (const PgQuery__SQLValueFunction *message, + void *closure_data); +typedef void (*PgQuery__XmlExpr_Closure) + (const PgQuery__XmlExpr *message, + void *closure_data); +typedef void (*PgQuery__NullTest_Closure) + (const PgQuery__NullTest *message, + void *closure_data); +typedef void (*PgQuery__BooleanTest_Closure) + (const PgQuery__BooleanTest *message, + void *closure_data); +typedef void (*PgQuery__CoerceToDomain_Closure) + (const PgQuery__CoerceToDomain *message, + void *closure_data); +typedef void (*PgQuery__CoerceToDomainValue_Closure) + (const PgQuery__CoerceToDomainValue *message, + void *closure_data); +typedef void (*PgQuery__SetToDefault_Closure) + (const PgQuery__SetToDefault *message, + void *closure_data); +typedef void (*PgQuery__CurrentOfExpr_Closure) + (const PgQuery__CurrentOfExpr *message, + void *closure_data); +typedef void (*PgQuery__NextValueExpr_Closure) + (const PgQuery__NextValueExpr *message, + void *closure_data); +typedef void (*PgQuery__InferenceElem_Closure) + (const PgQuery__InferenceElem *message, + void *closure_data); +typedef void (*PgQuery__TargetEntry_Closure) + (const PgQuery__TargetEntry *message, + void *closure_data); +typedef void (*PgQuery__RangeTblRef_Closure) + (const PgQuery__RangeTblRef *message, + void *closure_data); +typedef void (*PgQuery__JoinExpr_Closure) + (const PgQuery__JoinExpr *message, + void *closure_data); +typedef void (*PgQuery__FromExpr_Closure) + (const PgQuery__FromExpr *message, + void *closure_data); +typedef void (*PgQuery__OnConflictExpr_Closure) + (const PgQuery__OnConflictExpr *message, + void *closure_data); +typedef void (*PgQuery__IntoClause_Closure) + (const PgQuery__IntoClause *message, + void *closure_data); +typedef void (*PgQuery__RawStmt_Closure) + (const PgQuery__RawStmt *message, + void *closure_data); +typedef void (*PgQuery__Query_Closure) + (const PgQuery__Query *message, + void *closure_data); +typedef void (*PgQuery__InsertStmt_Closure) + (const PgQuery__InsertStmt *message, + void *closure_data); +typedef void (*PgQuery__DeleteStmt_Closure) + (const PgQuery__DeleteStmt *message, + void *closure_data); +typedef void (*PgQuery__UpdateStmt_Closure) + (const PgQuery__UpdateStmt *message, + void *closure_data); +typedef void (*PgQuery__SelectStmt_Closure) + (const PgQuery__SelectStmt *message, + void *closure_data); +typedef void (*PgQuery__AlterTableStmt_Closure) + (const PgQuery__AlterTableStmt *message, + void *closure_data); +typedef void (*PgQuery__AlterTableCmd_Closure) + (const PgQuery__AlterTableCmd *message, + void *closure_data); +typedef void (*PgQuery__AlterDomainStmt_Closure) + (const PgQuery__AlterDomainStmt *message, + void *closure_data); +typedef void (*PgQuery__SetOperationStmt_Closure) + (const PgQuery__SetOperationStmt *message, + void *closure_data); +typedef void (*PgQuery__GrantStmt_Closure) + (const PgQuery__GrantStmt *message, + void *closure_data); +typedef void (*PgQuery__GrantRoleStmt_Closure) + (const PgQuery__GrantRoleStmt *message, + void *closure_data); +typedef void (*PgQuery__AlterDefaultPrivilegesStmt_Closure) + (const PgQuery__AlterDefaultPrivilegesStmt *message, + void *closure_data); +typedef void (*PgQuery__ClosePortalStmt_Closure) + (const PgQuery__ClosePortalStmt *message, + void *closure_data); +typedef void (*PgQuery__ClusterStmt_Closure) + (const PgQuery__ClusterStmt *message, + void *closure_data); +typedef void (*PgQuery__CopyStmt_Closure) + (const PgQuery__CopyStmt *message, + void *closure_data); +typedef void (*PgQuery__CreateStmt_Closure) + (const PgQuery__CreateStmt *message, + void *closure_data); +typedef void (*PgQuery__DefineStmt_Closure) + (const PgQuery__DefineStmt *message, + void *closure_data); +typedef void (*PgQuery__DropStmt_Closure) + (const PgQuery__DropStmt *message, + void *closure_data); +typedef void (*PgQuery__TruncateStmt_Closure) + (const PgQuery__TruncateStmt *message, + void *closure_data); +typedef void (*PgQuery__CommentStmt_Closure) + (const PgQuery__CommentStmt *message, + void *closure_data); +typedef void (*PgQuery__FetchStmt_Closure) + (const PgQuery__FetchStmt *message, + void *closure_data); +typedef void (*PgQuery__IndexStmt_Closure) + (const PgQuery__IndexStmt *message, + void *closure_data); +typedef void (*PgQuery__CreateFunctionStmt_Closure) + (const PgQuery__CreateFunctionStmt *message, + void *closure_data); +typedef void (*PgQuery__AlterFunctionStmt_Closure) + (const PgQuery__AlterFunctionStmt *message, + void *closure_data); +typedef void (*PgQuery__DoStmt_Closure) + (const PgQuery__DoStmt *message, + void *closure_data); +typedef void (*PgQuery__RenameStmt_Closure) + (const PgQuery__RenameStmt *message, + void *closure_data); +typedef void (*PgQuery__RuleStmt_Closure) + (const PgQuery__RuleStmt *message, + void *closure_data); +typedef void (*PgQuery__NotifyStmt_Closure) + (const PgQuery__NotifyStmt *message, + void *closure_data); +typedef void (*PgQuery__ListenStmt_Closure) + (const PgQuery__ListenStmt *message, + void *closure_data); +typedef void (*PgQuery__UnlistenStmt_Closure) + (const PgQuery__UnlistenStmt *message, + void *closure_data); +typedef void (*PgQuery__TransactionStmt_Closure) + (const PgQuery__TransactionStmt *message, + void *closure_data); +typedef void (*PgQuery__ViewStmt_Closure) + (const PgQuery__ViewStmt *message, + void *closure_data); +typedef void (*PgQuery__LoadStmt_Closure) + (const PgQuery__LoadStmt *message, + void *closure_data); +typedef void (*PgQuery__CreateDomainStmt_Closure) + (const PgQuery__CreateDomainStmt *message, + void *closure_data); +typedef void (*PgQuery__CreatedbStmt_Closure) + (const PgQuery__CreatedbStmt *message, + void *closure_data); +typedef void (*PgQuery__DropdbStmt_Closure) + (const PgQuery__DropdbStmt *message, + void *closure_data); +typedef void (*PgQuery__VacuumStmt_Closure) + (const PgQuery__VacuumStmt *message, + void *closure_data); +typedef void (*PgQuery__ExplainStmt_Closure) + (const PgQuery__ExplainStmt *message, + void *closure_data); +typedef void (*PgQuery__CreateTableAsStmt_Closure) + (const PgQuery__CreateTableAsStmt *message, + void *closure_data); +typedef void (*PgQuery__CreateSeqStmt_Closure) + (const PgQuery__CreateSeqStmt *message, + void *closure_data); +typedef void (*PgQuery__AlterSeqStmt_Closure) + (const PgQuery__AlterSeqStmt *message, + void *closure_data); +typedef void (*PgQuery__VariableSetStmt_Closure) + (const PgQuery__VariableSetStmt *message, + void *closure_data); +typedef void (*PgQuery__VariableShowStmt_Closure) + (const PgQuery__VariableShowStmt *message, + void *closure_data); +typedef void (*PgQuery__DiscardStmt_Closure) + (const PgQuery__DiscardStmt *message, + void *closure_data); +typedef void (*PgQuery__CreateTrigStmt_Closure) + (const PgQuery__CreateTrigStmt *message, + void *closure_data); +typedef void (*PgQuery__CreatePLangStmt_Closure) + (const PgQuery__CreatePLangStmt *message, + void *closure_data); +typedef void (*PgQuery__CreateRoleStmt_Closure) + (const PgQuery__CreateRoleStmt *message, + void *closure_data); +typedef void (*PgQuery__AlterRoleStmt_Closure) + (const PgQuery__AlterRoleStmt *message, + void *closure_data); +typedef void (*PgQuery__DropRoleStmt_Closure) + (const PgQuery__DropRoleStmt *message, + void *closure_data); +typedef void (*PgQuery__LockStmt_Closure) + (const PgQuery__LockStmt *message, + void *closure_data); +typedef void (*PgQuery__ConstraintsSetStmt_Closure) + (const PgQuery__ConstraintsSetStmt *message, + void *closure_data); +typedef void (*PgQuery__ReindexStmt_Closure) + (const PgQuery__ReindexStmt *message, + void *closure_data); +typedef void (*PgQuery__CheckPointStmt_Closure) + (const PgQuery__CheckPointStmt *message, + void *closure_data); +typedef void (*PgQuery__CreateSchemaStmt_Closure) + (const PgQuery__CreateSchemaStmt *message, + void *closure_data); +typedef void (*PgQuery__AlterDatabaseStmt_Closure) + (const PgQuery__AlterDatabaseStmt *message, + void *closure_data); +typedef void (*PgQuery__AlterDatabaseSetStmt_Closure) + (const PgQuery__AlterDatabaseSetStmt *message, + void *closure_data); +typedef void (*PgQuery__AlterRoleSetStmt_Closure) + (const PgQuery__AlterRoleSetStmt *message, + void *closure_data); +typedef void (*PgQuery__CreateConversionStmt_Closure) + (const PgQuery__CreateConversionStmt *message, + void *closure_data); +typedef void (*PgQuery__CreateCastStmt_Closure) + (const PgQuery__CreateCastStmt *message, + void *closure_data); +typedef void (*PgQuery__CreateOpClassStmt_Closure) + (const PgQuery__CreateOpClassStmt *message, + void *closure_data); +typedef void (*PgQuery__CreateOpFamilyStmt_Closure) + (const PgQuery__CreateOpFamilyStmt *message, + void *closure_data); +typedef void (*PgQuery__AlterOpFamilyStmt_Closure) + (const PgQuery__AlterOpFamilyStmt *message, + void *closure_data); +typedef void (*PgQuery__PrepareStmt_Closure) + (const PgQuery__PrepareStmt *message, + void *closure_data); +typedef void (*PgQuery__ExecuteStmt_Closure) + (const PgQuery__ExecuteStmt *message, + void *closure_data); +typedef void (*PgQuery__DeallocateStmt_Closure) + (const PgQuery__DeallocateStmt *message, + void *closure_data); +typedef void (*PgQuery__DeclareCursorStmt_Closure) + (const PgQuery__DeclareCursorStmt *message, + void *closure_data); +typedef void (*PgQuery__CreateTableSpaceStmt_Closure) + (const PgQuery__CreateTableSpaceStmt *message, + void *closure_data); +typedef void (*PgQuery__DropTableSpaceStmt_Closure) + (const PgQuery__DropTableSpaceStmt *message, + void *closure_data); +typedef void (*PgQuery__AlterObjectDependsStmt_Closure) + (const PgQuery__AlterObjectDependsStmt *message, + void *closure_data); +typedef void (*PgQuery__AlterObjectSchemaStmt_Closure) + (const PgQuery__AlterObjectSchemaStmt *message, + void *closure_data); +typedef void (*PgQuery__AlterOwnerStmt_Closure) + (const PgQuery__AlterOwnerStmt *message, + void *closure_data); +typedef void (*PgQuery__AlterOperatorStmt_Closure) + (const PgQuery__AlterOperatorStmt *message, + void *closure_data); +typedef void (*PgQuery__AlterTypeStmt_Closure) + (const PgQuery__AlterTypeStmt *message, + void *closure_data); +typedef void (*PgQuery__DropOwnedStmt_Closure) + (const PgQuery__DropOwnedStmt *message, + void *closure_data); +typedef void (*PgQuery__ReassignOwnedStmt_Closure) + (const PgQuery__ReassignOwnedStmt *message, + void *closure_data); +typedef void (*PgQuery__CompositeTypeStmt_Closure) + (const PgQuery__CompositeTypeStmt *message, + void *closure_data); +typedef void (*PgQuery__CreateEnumStmt_Closure) + (const PgQuery__CreateEnumStmt *message, + void *closure_data); +typedef void (*PgQuery__CreateRangeStmt_Closure) + (const PgQuery__CreateRangeStmt *message, + void *closure_data); +typedef void (*PgQuery__AlterEnumStmt_Closure) + (const PgQuery__AlterEnumStmt *message, + void *closure_data); +typedef void (*PgQuery__AlterTSDictionaryStmt_Closure) + (const PgQuery__AlterTSDictionaryStmt *message, + void *closure_data); +typedef void (*PgQuery__AlterTSConfigurationStmt_Closure) + (const PgQuery__AlterTSConfigurationStmt *message, + void *closure_data); +typedef void (*PgQuery__CreateFdwStmt_Closure) + (const PgQuery__CreateFdwStmt *message, + void *closure_data); +typedef void (*PgQuery__AlterFdwStmt_Closure) + (const PgQuery__AlterFdwStmt *message, + void *closure_data); +typedef void (*PgQuery__CreateForeignServerStmt_Closure) + (const PgQuery__CreateForeignServerStmt *message, + void *closure_data); +typedef void (*PgQuery__AlterForeignServerStmt_Closure) + (const PgQuery__AlterForeignServerStmt *message, + void *closure_data); +typedef void (*PgQuery__CreateUserMappingStmt_Closure) + (const PgQuery__CreateUserMappingStmt *message, + void *closure_data); +typedef void (*PgQuery__AlterUserMappingStmt_Closure) + (const PgQuery__AlterUserMappingStmt *message, + void *closure_data); +typedef void (*PgQuery__DropUserMappingStmt_Closure) + (const PgQuery__DropUserMappingStmt *message, + void *closure_data); +typedef void (*PgQuery__AlterTableSpaceOptionsStmt_Closure) + (const PgQuery__AlterTableSpaceOptionsStmt *message, + void *closure_data); +typedef void (*PgQuery__AlterTableMoveAllStmt_Closure) + (const PgQuery__AlterTableMoveAllStmt *message, + void *closure_data); +typedef void (*PgQuery__SecLabelStmt_Closure) + (const PgQuery__SecLabelStmt *message, + void *closure_data); +typedef void (*PgQuery__CreateForeignTableStmt_Closure) + (const PgQuery__CreateForeignTableStmt *message, + void *closure_data); +typedef void (*PgQuery__ImportForeignSchemaStmt_Closure) + (const PgQuery__ImportForeignSchemaStmt *message, + void *closure_data); +typedef void (*PgQuery__CreateExtensionStmt_Closure) + (const PgQuery__CreateExtensionStmt *message, + void *closure_data); +typedef void (*PgQuery__AlterExtensionStmt_Closure) + (const PgQuery__AlterExtensionStmt *message, + void *closure_data); +typedef void (*PgQuery__AlterExtensionContentsStmt_Closure) + (const PgQuery__AlterExtensionContentsStmt *message, + void *closure_data); +typedef void (*PgQuery__CreateEventTrigStmt_Closure) + (const PgQuery__CreateEventTrigStmt *message, + void *closure_data); +typedef void (*PgQuery__AlterEventTrigStmt_Closure) + (const PgQuery__AlterEventTrigStmt *message, + void *closure_data); +typedef void (*PgQuery__RefreshMatViewStmt_Closure) + (const PgQuery__RefreshMatViewStmt *message, + void *closure_data); +typedef void (*PgQuery__ReplicaIdentityStmt_Closure) + (const PgQuery__ReplicaIdentityStmt *message, + void *closure_data); +typedef void (*PgQuery__AlterSystemStmt_Closure) + (const PgQuery__AlterSystemStmt *message, + void *closure_data); +typedef void (*PgQuery__CreatePolicyStmt_Closure) + (const PgQuery__CreatePolicyStmt *message, + void *closure_data); +typedef void (*PgQuery__AlterPolicyStmt_Closure) + (const PgQuery__AlterPolicyStmt *message, + void *closure_data); +typedef void (*PgQuery__CreateTransformStmt_Closure) + (const PgQuery__CreateTransformStmt *message, + void *closure_data); +typedef void (*PgQuery__CreateAmStmt_Closure) + (const PgQuery__CreateAmStmt *message, + void *closure_data); +typedef void (*PgQuery__CreatePublicationStmt_Closure) + (const PgQuery__CreatePublicationStmt *message, + void *closure_data); +typedef void (*PgQuery__AlterPublicationStmt_Closure) + (const PgQuery__AlterPublicationStmt *message, + void *closure_data); +typedef void (*PgQuery__CreateSubscriptionStmt_Closure) + (const PgQuery__CreateSubscriptionStmt *message, + void *closure_data); +typedef void (*PgQuery__AlterSubscriptionStmt_Closure) + (const PgQuery__AlterSubscriptionStmt *message, + void *closure_data); +typedef void (*PgQuery__DropSubscriptionStmt_Closure) + (const PgQuery__DropSubscriptionStmt *message, + void *closure_data); +typedef void (*PgQuery__CreateStatsStmt_Closure) + (const PgQuery__CreateStatsStmt *message, + void *closure_data); +typedef void (*PgQuery__AlterCollationStmt_Closure) + (const PgQuery__AlterCollationStmt *message, + void *closure_data); +typedef void (*PgQuery__CallStmt_Closure) + (const PgQuery__CallStmt *message, + void *closure_data); +typedef void (*PgQuery__AlterStatsStmt_Closure) + (const PgQuery__AlterStatsStmt *message, + void *closure_data); +typedef void (*PgQuery__AExpr_Closure) + (const PgQuery__AExpr *message, + void *closure_data); +typedef void (*PgQuery__ColumnRef_Closure) + (const PgQuery__ColumnRef *message, + void *closure_data); +typedef void (*PgQuery__ParamRef_Closure) + (const PgQuery__ParamRef *message, + void *closure_data); +typedef void (*PgQuery__AConst_Closure) + (const PgQuery__AConst *message, + void *closure_data); +typedef void (*PgQuery__FuncCall_Closure) + (const PgQuery__FuncCall *message, + void *closure_data); +typedef void (*PgQuery__AStar_Closure) + (const PgQuery__AStar *message, + void *closure_data); +typedef void (*PgQuery__AIndices_Closure) + (const PgQuery__AIndices *message, + void *closure_data); +typedef void (*PgQuery__AIndirection_Closure) + (const PgQuery__AIndirection *message, + void *closure_data); +typedef void (*PgQuery__AArrayExpr_Closure) + (const PgQuery__AArrayExpr *message, + void *closure_data); +typedef void (*PgQuery__ResTarget_Closure) + (const PgQuery__ResTarget *message, + void *closure_data); +typedef void (*PgQuery__MultiAssignRef_Closure) + (const PgQuery__MultiAssignRef *message, + void *closure_data); +typedef void (*PgQuery__TypeCast_Closure) + (const PgQuery__TypeCast *message, + void *closure_data); +typedef void (*PgQuery__CollateClause_Closure) + (const PgQuery__CollateClause *message, + void *closure_data); +typedef void (*PgQuery__SortBy_Closure) + (const PgQuery__SortBy *message, + void *closure_data); +typedef void (*PgQuery__WindowDef_Closure) + (const PgQuery__WindowDef *message, + void *closure_data); +typedef void (*PgQuery__RangeSubselect_Closure) + (const PgQuery__RangeSubselect *message, + void *closure_data); +typedef void (*PgQuery__RangeFunction_Closure) + (const PgQuery__RangeFunction *message, + void *closure_data); +typedef void (*PgQuery__RangeTableSample_Closure) + (const PgQuery__RangeTableSample *message, + void *closure_data); +typedef void (*PgQuery__RangeTableFunc_Closure) + (const PgQuery__RangeTableFunc *message, + void *closure_data); +typedef void (*PgQuery__RangeTableFuncCol_Closure) + (const PgQuery__RangeTableFuncCol *message, + void *closure_data); +typedef void (*PgQuery__TypeName_Closure) + (const PgQuery__TypeName *message, + void *closure_data); +typedef void (*PgQuery__ColumnDef_Closure) + (const PgQuery__ColumnDef *message, + void *closure_data); +typedef void (*PgQuery__IndexElem_Closure) + (const PgQuery__IndexElem *message, + void *closure_data); +typedef void (*PgQuery__Constraint_Closure) + (const PgQuery__Constraint *message, + void *closure_data); +typedef void (*PgQuery__DefElem_Closure) + (const PgQuery__DefElem *message, + void *closure_data); +typedef void (*PgQuery__RangeTblEntry_Closure) + (const PgQuery__RangeTblEntry *message, + void *closure_data); +typedef void (*PgQuery__RangeTblFunction_Closure) + (const PgQuery__RangeTblFunction *message, + void *closure_data); +typedef void (*PgQuery__TableSampleClause_Closure) + (const PgQuery__TableSampleClause *message, + void *closure_data); +typedef void (*PgQuery__WithCheckOption_Closure) + (const PgQuery__WithCheckOption *message, + void *closure_data); +typedef void (*PgQuery__SortGroupClause_Closure) + (const PgQuery__SortGroupClause *message, + void *closure_data); +typedef void (*PgQuery__GroupingSet_Closure) + (const PgQuery__GroupingSet *message, + void *closure_data); +typedef void (*PgQuery__WindowClause_Closure) + (const PgQuery__WindowClause *message, + void *closure_data); +typedef void (*PgQuery__ObjectWithArgs_Closure) + (const PgQuery__ObjectWithArgs *message, + void *closure_data); +typedef void (*PgQuery__AccessPriv_Closure) + (const PgQuery__AccessPriv *message, + void *closure_data); +typedef void (*PgQuery__CreateOpClassItem_Closure) + (const PgQuery__CreateOpClassItem *message, + void *closure_data); +typedef void (*PgQuery__TableLikeClause_Closure) + (const PgQuery__TableLikeClause *message, + void *closure_data); +typedef void (*PgQuery__FunctionParameter_Closure) + (const PgQuery__FunctionParameter *message, + void *closure_data); +typedef void (*PgQuery__LockingClause_Closure) + (const PgQuery__LockingClause *message, + void *closure_data); +typedef void (*PgQuery__RowMarkClause_Closure) + (const PgQuery__RowMarkClause *message, + void *closure_data); +typedef void (*PgQuery__XmlSerialize_Closure) + (const PgQuery__XmlSerialize *message, + void *closure_data); +typedef void (*PgQuery__WithClause_Closure) + (const PgQuery__WithClause *message, + void *closure_data); +typedef void (*PgQuery__InferClause_Closure) + (const PgQuery__InferClause *message, + void *closure_data); +typedef void (*PgQuery__OnConflictClause_Closure) + (const PgQuery__OnConflictClause *message, + void *closure_data); +typedef void (*PgQuery__CommonTableExpr_Closure) + (const PgQuery__CommonTableExpr *message, + void *closure_data); +typedef void (*PgQuery__RoleSpec_Closure) + (const PgQuery__RoleSpec *message, + void *closure_data); +typedef void (*PgQuery__TriggerTransition_Closure) + (const PgQuery__TriggerTransition *message, + void *closure_data); +typedef void (*PgQuery__PartitionElem_Closure) + (const PgQuery__PartitionElem *message, + void *closure_data); +typedef void (*PgQuery__PartitionSpec_Closure) + (const PgQuery__PartitionSpec *message, + void *closure_data); +typedef void (*PgQuery__PartitionBoundSpec_Closure) + (const PgQuery__PartitionBoundSpec *message, + void *closure_data); +typedef void (*PgQuery__PartitionRangeDatum_Closure) + (const PgQuery__PartitionRangeDatum *message, + void *closure_data); +typedef void (*PgQuery__PartitionCmd_Closure) + (const PgQuery__PartitionCmd *message, + void *closure_data); +typedef void (*PgQuery__VacuumRelation_Closure) + (const PgQuery__VacuumRelation *message, + void *closure_data); +typedef void (*PgQuery__InlineCodeBlock_Closure) + (const PgQuery__InlineCodeBlock *message, + void *closure_data); +typedef void (*PgQuery__CallContext_Closure) + (const PgQuery__CallContext *message, + void *closure_data); +typedef void (*PgQuery__ScanToken_Closure) + (const PgQuery__ScanToken *message, + void *closure_data); + +/* --- services --- */ + + +/* --- descriptors --- */ + +extern const ProtobufCEnumDescriptor pg_query__overriding_kind__descriptor; +extern const ProtobufCEnumDescriptor pg_query__query_source__descriptor; +extern const ProtobufCEnumDescriptor pg_query__sort_by_dir__descriptor; +extern const ProtobufCEnumDescriptor pg_query__sort_by_nulls__descriptor; +extern const ProtobufCEnumDescriptor pg_query__a__expr__kind__descriptor; +extern const ProtobufCEnumDescriptor pg_query__role_spec_type__descriptor; +extern const ProtobufCEnumDescriptor pg_query__table_like_option__descriptor; +extern const ProtobufCEnumDescriptor pg_query__def_elem_action__descriptor; +extern const ProtobufCEnumDescriptor pg_query__partition_range_datum_kind__descriptor; +extern const ProtobufCEnumDescriptor pg_query__rtekind__descriptor; +extern const ProtobufCEnumDescriptor pg_query__wcokind__descriptor; +extern const ProtobufCEnumDescriptor pg_query__grouping_set_kind__descriptor; +extern const ProtobufCEnumDescriptor pg_query__ctematerialize__descriptor; +extern const ProtobufCEnumDescriptor pg_query__set_operation__descriptor; +extern const ProtobufCEnumDescriptor pg_query__object_type__descriptor; +extern const ProtobufCEnumDescriptor pg_query__drop_behavior__descriptor; +extern const ProtobufCEnumDescriptor pg_query__alter_table_type__descriptor; +extern const ProtobufCEnumDescriptor pg_query__grant_target_type__descriptor; +extern const ProtobufCEnumDescriptor pg_query__variable_set_kind__descriptor; +extern const ProtobufCEnumDescriptor pg_query__constr_type__descriptor; +extern const ProtobufCEnumDescriptor pg_query__import_foreign_schema_type__descriptor; +extern const ProtobufCEnumDescriptor pg_query__role_stmt_type__descriptor; +extern const ProtobufCEnumDescriptor pg_query__fetch_direction__descriptor; +extern const ProtobufCEnumDescriptor pg_query__function_parameter_mode__descriptor; +extern const ProtobufCEnumDescriptor pg_query__transaction_stmt_kind__descriptor; +extern const ProtobufCEnumDescriptor pg_query__view_check_option__descriptor; +extern const ProtobufCEnumDescriptor pg_query__cluster_option__descriptor; +extern const ProtobufCEnumDescriptor pg_query__discard_mode__descriptor; +extern const ProtobufCEnumDescriptor pg_query__reindex_object_type__descriptor; +extern const ProtobufCEnumDescriptor pg_query__alter_tsconfig_type__descriptor; +extern const ProtobufCEnumDescriptor pg_query__alter_subscription_type__descriptor; +extern const ProtobufCEnumDescriptor pg_query__on_commit_action__descriptor; +extern const ProtobufCEnumDescriptor pg_query__param_kind__descriptor; +extern const ProtobufCEnumDescriptor pg_query__coercion_context__descriptor; +extern const ProtobufCEnumDescriptor pg_query__coercion_form__descriptor; +extern const ProtobufCEnumDescriptor pg_query__bool_expr_type__descriptor; +extern const ProtobufCEnumDescriptor pg_query__sub_link_type__descriptor; +extern const ProtobufCEnumDescriptor pg_query__row_compare_type__descriptor; +extern const ProtobufCEnumDescriptor pg_query__min_max_op__descriptor; +extern const ProtobufCEnumDescriptor pg_query__sqlvalue_function_op__descriptor; +extern const ProtobufCEnumDescriptor pg_query__xml_expr_op__descriptor; +extern const ProtobufCEnumDescriptor pg_query__xml_option_type__descriptor; +extern const ProtobufCEnumDescriptor pg_query__null_test_type__descriptor; +extern const ProtobufCEnumDescriptor pg_query__bool_test_type__descriptor; +extern const ProtobufCEnumDescriptor pg_query__cmd_type__descriptor; +extern const ProtobufCEnumDescriptor pg_query__join_type__descriptor; +extern const ProtobufCEnumDescriptor pg_query__agg_strategy__descriptor; +extern const ProtobufCEnumDescriptor pg_query__agg_split__descriptor; +extern const ProtobufCEnumDescriptor pg_query__set_op_cmd__descriptor; +extern const ProtobufCEnumDescriptor pg_query__set_op_strategy__descriptor; +extern const ProtobufCEnumDescriptor pg_query__on_conflict_action__descriptor; +extern const ProtobufCEnumDescriptor pg_query__limit_option__descriptor; +extern const ProtobufCEnumDescriptor pg_query__lock_clause_strength__descriptor; +extern const ProtobufCEnumDescriptor pg_query__lock_wait_policy__descriptor; +extern const ProtobufCEnumDescriptor pg_query__lock_tuple_mode__descriptor; +extern const ProtobufCEnumDescriptor pg_query__keyword_kind__descriptor; +extern const ProtobufCEnumDescriptor pg_query__token__descriptor; +extern const ProtobufCMessageDescriptor pg_query__parse_result__descriptor; +extern const ProtobufCMessageDescriptor pg_query__scan_result__descriptor; +extern const ProtobufCMessageDescriptor pg_query__node__descriptor; +extern const ProtobufCMessageDescriptor pg_query__integer__descriptor; +extern const ProtobufCMessageDescriptor pg_query__float__descriptor; +extern const ProtobufCMessageDescriptor pg_query__string__descriptor; +extern const ProtobufCMessageDescriptor pg_query__bit_string__descriptor; +extern const ProtobufCMessageDescriptor pg_query__null__descriptor; +extern const ProtobufCMessageDescriptor pg_query__list__descriptor; +extern const ProtobufCMessageDescriptor pg_query__oid_list__descriptor; +extern const ProtobufCMessageDescriptor pg_query__int_list__descriptor; +extern const ProtobufCMessageDescriptor pg_query__alias__descriptor; +extern const ProtobufCMessageDescriptor pg_query__range_var__descriptor; +extern const ProtobufCMessageDescriptor pg_query__table_func__descriptor; +extern const ProtobufCMessageDescriptor pg_query__expr__descriptor; +extern const ProtobufCMessageDescriptor pg_query__var__descriptor; +extern const ProtobufCMessageDescriptor pg_query__param__descriptor; +extern const ProtobufCMessageDescriptor pg_query__aggref__descriptor; +extern const ProtobufCMessageDescriptor pg_query__grouping_func__descriptor; +extern const ProtobufCMessageDescriptor pg_query__window_func__descriptor; +extern const ProtobufCMessageDescriptor pg_query__subscripting_ref__descriptor; +extern const ProtobufCMessageDescriptor pg_query__func_expr__descriptor; +extern const ProtobufCMessageDescriptor pg_query__named_arg_expr__descriptor; +extern const ProtobufCMessageDescriptor pg_query__op_expr__descriptor; +extern const ProtobufCMessageDescriptor pg_query__distinct_expr__descriptor; +extern const ProtobufCMessageDescriptor pg_query__null_if_expr__descriptor; +extern const ProtobufCMessageDescriptor pg_query__scalar_array_op_expr__descriptor; +extern const ProtobufCMessageDescriptor pg_query__bool_expr__descriptor; +extern const ProtobufCMessageDescriptor pg_query__sub_link__descriptor; +extern const ProtobufCMessageDescriptor pg_query__sub_plan__descriptor; +extern const ProtobufCMessageDescriptor pg_query__alternative_sub_plan__descriptor; +extern const ProtobufCMessageDescriptor pg_query__field_select__descriptor; +extern const ProtobufCMessageDescriptor pg_query__field_store__descriptor; +extern const ProtobufCMessageDescriptor pg_query__relabel_type__descriptor; +extern const ProtobufCMessageDescriptor pg_query__coerce_via_io__descriptor; +extern const ProtobufCMessageDescriptor pg_query__array_coerce_expr__descriptor; +extern const ProtobufCMessageDescriptor pg_query__convert_rowtype_expr__descriptor; +extern const ProtobufCMessageDescriptor pg_query__collate_expr__descriptor; +extern const ProtobufCMessageDescriptor pg_query__case_expr__descriptor; +extern const ProtobufCMessageDescriptor pg_query__case_when__descriptor; +extern const ProtobufCMessageDescriptor pg_query__case_test_expr__descriptor; +extern const ProtobufCMessageDescriptor pg_query__array_expr__descriptor; +extern const ProtobufCMessageDescriptor pg_query__row_expr__descriptor; +extern const ProtobufCMessageDescriptor pg_query__row_compare_expr__descriptor; +extern const ProtobufCMessageDescriptor pg_query__coalesce_expr__descriptor; +extern const ProtobufCMessageDescriptor pg_query__min_max_expr__descriptor; +extern const ProtobufCMessageDescriptor pg_query__sqlvalue_function__descriptor; +extern const ProtobufCMessageDescriptor pg_query__xml_expr__descriptor; +extern const ProtobufCMessageDescriptor pg_query__null_test__descriptor; +extern const ProtobufCMessageDescriptor pg_query__boolean_test__descriptor; +extern const ProtobufCMessageDescriptor pg_query__coerce_to_domain__descriptor; +extern const ProtobufCMessageDescriptor pg_query__coerce_to_domain_value__descriptor; +extern const ProtobufCMessageDescriptor pg_query__set_to_default__descriptor; +extern const ProtobufCMessageDescriptor pg_query__current_of_expr__descriptor; +extern const ProtobufCMessageDescriptor pg_query__next_value_expr__descriptor; +extern const ProtobufCMessageDescriptor pg_query__inference_elem__descriptor; +extern const ProtobufCMessageDescriptor pg_query__target_entry__descriptor; +extern const ProtobufCMessageDescriptor pg_query__range_tbl_ref__descriptor; +extern const ProtobufCMessageDescriptor pg_query__join_expr__descriptor; +extern const ProtobufCMessageDescriptor pg_query__from_expr__descriptor; +extern const ProtobufCMessageDescriptor pg_query__on_conflict_expr__descriptor; +extern const ProtobufCMessageDescriptor pg_query__into_clause__descriptor; +extern const ProtobufCMessageDescriptor pg_query__raw_stmt__descriptor; +extern const ProtobufCMessageDescriptor pg_query__query__descriptor; +extern const ProtobufCMessageDescriptor pg_query__insert_stmt__descriptor; +extern const ProtobufCMessageDescriptor pg_query__delete_stmt__descriptor; +extern const ProtobufCMessageDescriptor pg_query__update_stmt__descriptor; +extern const ProtobufCMessageDescriptor pg_query__select_stmt__descriptor; +extern const ProtobufCMessageDescriptor pg_query__alter_table_stmt__descriptor; +extern const ProtobufCMessageDescriptor pg_query__alter_table_cmd__descriptor; +extern const ProtobufCMessageDescriptor pg_query__alter_domain_stmt__descriptor; +extern const ProtobufCMessageDescriptor pg_query__set_operation_stmt__descriptor; +extern const ProtobufCMessageDescriptor pg_query__grant_stmt__descriptor; +extern const ProtobufCMessageDescriptor pg_query__grant_role_stmt__descriptor; +extern const ProtobufCMessageDescriptor pg_query__alter_default_privileges_stmt__descriptor; +extern const ProtobufCMessageDescriptor pg_query__close_portal_stmt__descriptor; +extern const ProtobufCMessageDescriptor pg_query__cluster_stmt__descriptor; +extern const ProtobufCMessageDescriptor pg_query__copy_stmt__descriptor; +extern const ProtobufCMessageDescriptor pg_query__create_stmt__descriptor; +extern const ProtobufCMessageDescriptor pg_query__define_stmt__descriptor; +extern const ProtobufCMessageDescriptor pg_query__drop_stmt__descriptor; +extern const ProtobufCMessageDescriptor pg_query__truncate_stmt__descriptor; +extern const ProtobufCMessageDescriptor pg_query__comment_stmt__descriptor; +extern const ProtobufCMessageDescriptor pg_query__fetch_stmt__descriptor; +extern const ProtobufCMessageDescriptor pg_query__index_stmt__descriptor; +extern const ProtobufCMessageDescriptor pg_query__create_function_stmt__descriptor; +extern const ProtobufCMessageDescriptor pg_query__alter_function_stmt__descriptor; +extern const ProtobufCMessageDescriptor pg_query__do_stmt__descriptor; +extern const ProtobufCMessageDescriptor pg_query__rename_stmt__descriptor; +extern const ProtobufCMessageDescriptor pg_query__rule_stmt__descriptor; +extern const ProtobufCMessageDescriptor pg_query__notify_stmt__descriptor; +extern const ProtobufCMessageDescriptor pg_query__listen_stmt__descriptor; +extern const ProtobufCMessageDescriptor pg_query__unlisten_stmt__descriptor; +extern const ProtobufCMessageDescriptor pg_query__transaction_stmt__descriptor; +extern const ProtobufCMessageDescriptor pg_query__view_stmt__descriptor; +extern const ProtobufCMessageDescriptor pg_query__load_stmt__descriptor; +extern const ProtobufCMessageDescriptor pg_query__create_domain_stmt__descriptor; +extern const ProtobufCMessageDescriptor pg_query__createdb_stmt__descriptor; +extern const ProtobufCMessageDescriptor pg_query__dropdb_stmt__descriptor; +extern const ProtobufCMessageDescriptor pg_query__vacuum_stmt__descriptor; +extern const ProtobufCMessageDescriptor pg_query__explain_stmt__descriptor; +extern const ProtobufCMessageDescriptor pg_query__create_table_as_stmt__descriptor; +extern const ProtobufCMessageDescriptor pg_query__create_seq_stmt__descriptor; +extern const ProtobufCMessageDescriptor pg_query__alter_seq_stmt__descriptor; +extern const ProtobufCMessageDescriptor pg_query__variable_set_stmt__descriptor; +extern const ProtobufCMessageDescriptor pg_query__variable_show_stmt__descriptor; +extern const ProtobufCMessageDescriptor pg_query__discard_stmt__descriptor; +extern const ProtobufCMessageDescriptor pg_query__create_trig_stmt__descriptor; +extern const ProtobufCMessageDescriptor pg_query__create_plang_stmt__descriptor; +extern const ProtobufCMessageDescriptor pg_query__create_role_stmt__descriptor; +extern const ProtobufCMessageDescriptor pg_query__alter_role_stmt__descriptor; +extern const ProtobufCMessageDescriptor pg_query__drop_role_stmt__descriptor; +extern const ProtobufCMessageDescriptor pg_query__lock_stmt__descriptor; +extern const ProtobufCMessageDescriptor pg_query__constraints_set_stmt__descriptor; +extern const ProtobufCMessageDescriptor pg_query__reindex_stmt__descriptor; +extern const ProtobufCMessageDescriptor pg_query__check_point_stmt__descriptor; +extern const ProtobufCMessageDescriptor pg_query__create_schema_stmt__descriptor; +extern const ProtobufCMessageDescriptor pg_query__alter_database_stmt__descriptor; +extern const ProtobufCMessageDescriptor pg_query__alter_database_set_stmt__descriptor; +extern const ProtobufCMessageDescriptor pg_query__alter_role_set_stmt__descriptor; +extern const ProtobufCMessageDescriptor pg_query__create_conversion_stmt__descriptor; +extern const ProtobufCMessageDescriptor pg_query__create_cast_stmt__descriptor; +extern const ProtobufCMessageDescriptor pg_query__create_op_class_stmt__descriptor; +extern const ProtobufCMessageDescriptor pg_query__create_op_family_stmt__descriptor; +extern const ProtobufCMessageDescriptor pg_query__alter_op_family_stmt__descriptor; +extern const ProtobufCMessageDescriptor pg_query__prepare_stmt__descriptor; +extern const ProtobufCMessageDescriptor pg_query__execute_stmt__descriptor; +extern const ProtobufCMessageDescriptor pg_query__deallocate_stmt__descriptor; +extern const ProtobufCMessageDescriptor pg_query__declare_cursor_stmt__descriptor; +extern const ProtobufCMessageDescriptor pg_query__create_table_space_stmt__descriptor; +extern const ProtobufCMessageDescriptor pg_query__drop_table_space_stmt__descriptor; +extern const ProtobufCMessageDescriptor pg_query__alter_object_depends_stmt__descriptor; +extern const ProtobufCMessageDescriptor pg_query__alter_object_schema_stmt__descriptor; +extern const ProtobufCMessageDescriptor pg_query__alter_owner_stmt__descriptor; +extern const ProtobufCMessageDescriptor pg_query__alter_operator_stmt__descriptor; +extern const ProtobufCMessageDescriptor pg_query__alter_type_stmt__descriptor; +extern const ProtobufCMessageDescriptor pg_query__drop_owned_stmt__descriptor; +extern const ProtobufCMessageDescriptor pg_query__reassign_owned_stmt__descriptor; +extern const ProtobufCMessageDescriptor pg_query__composite_type_stmt__descriptor; +extern const ProtobufCMessageDescriptor pg_query__create_enum_stmt__descriptor; +extern const ProtobufCMessageDescriptor pg_query__create_range_stmt__descriptor; +extern const ProtobufCMessageDescriptor pg_query__alter_enum_stmt__descriptor; +extern const ProtobufCMessageDescriptor pg_query__alter_tsdictionary_stmt__descriptor; +extern const ProtobufCMessageDescriptor pg_query__alter_tsconfiguration_stmt__descriptor; +extern const ProtobufCMessageDescriptor pg_query__create_fdw_stmt__descriptor; +extern const ProtobufCMessageDescriptor pg_query__alter_fdw_stmt__descriptor; +extern const ProtobufCMessageDescriptor pg_query__create_foreign_server_stmt__descriptor; +extern const ProtobufCMessageDescriptor pg_query__alter_foreign_server_stmt__descriptor; +extern const ProtobufCMessageDescriptor pg_query__create_user_mapping_stmt__descriptor; +extern const ProtobufCMessageDescriptor pg_query__alter_user_mapping_stmt__descriptor; +extern const ProtobufCMessageDescriptor pg_query__drop_user_mapping_stmt__descriptor; +extern const ProtobufCMessageDescriptor pg_query__alter_table_space_options_stmt__descriptor; +extern const ProtobufCMessageDescriptor pg_query__alter_table_move_all_stmt__descriptor; +extern const ProtobufCMessageDescriptor pg_query__sec_label_stmt__descriptor; +extern const ProtobufCMessageDescriptor pg_query__create_foreign_table_stmt__descriptor; +extern const ProtobufCMessageDescriptor pg_query__import_foreign_schema_stmt__descriptor; +extern const ProtobufCMessageDescriptor pg_query__create_extension_stmt__descriptor; +extern const ProtobufCMessageDescriptor pg_query__alter_extension_stmt__descriptor; +extern const ProtobufCMessageDescriptor pg_query__alter_extension_contents_stmt__descriptor; +extern const ProtobufCMessageDescriptor pg_query__create_event_trig_stmt__descriptor; +extern const ProtobufCMessageDescriptor pg_query__alter_event_trig_stmt__descriptor; +extern const ProtobufCMessageDescriptor pg_query__refresh_mat_view_stmt__descriptor; +extern const ProtobufCMessageDescriptor pg_query__replica_identity_stmt__descriptor; +extern const ProtobufCMessageDescriptor pg_query__alter_system_stmt__descriptor; +extern const ProtobufCMessageDescriptor pg_query__create_policy_stmt__descriptor; +extern const ProtobufCMessageDescriptor pg_query__alter_policy_stmt__descriptor; +extern const ProtobufCMessageDescriptor pg_query__create_transform_stmt__descriptor; +extern const ProtobufCMessageDescriptor pg_query__create_am_stmt__descriptor; +extern const ProtobufCMessageDescriptor pg_query__create_publication_stmt__descriptor; +extern const ProtobufCMessageDescriptor pg_query__alter_publication_stmt__descriptor; +extern const ProtobufCMessageDescriptor pg_query__create_subscription_stmt__descriptor; +extern const ProtobufCMessageDescriptor pg_query__alter_subscription_stmt__descriptor; +extern const ProtobufCMessageDescriptor pg_query__drop_subscription_stmt__descriptor; +extern const ProtobufCMessageDescriptor pg_query__create_stats_stmt__descriptor; +extern const ProtobufCMessageDescriptor pg_query__alter_collation_stmt__descriptor; +extern const ProtobufCMessageDescriptor pg_query__call_stmt__descriptor; +extern const ProtobufCMessageDescriptor pg_query__alter_stats_stmt__descriptor; +extern const ProtobufCMessageDescriptor pg_query__a__expr__descriptor; +extern const ProtobufCMessageDescriptor pg_query__column_ref__descriptor; +extern const ProtobufCMessageDescriptor pg_query__param_ref__descriptor; +extern const ProtobufCMessageDescriptor pg_query__a__const__descriptor; +extern const ProtobufCMessageDescriptor pg_query__func_call__descriptor; +extern const ProtobufCMessageDescriptor pg_query__a__star__descriptor; +extern const ProtobufCMessageDescriptor pg_query__a__indices__descriptor; +extern const ProtobufCMessageDescriptor pg_query__a__indirection__descriptor; +extern const ProtobufCMessageDescriptor pg_query__a__array_expr__descriptor; +extern const ProtobufCMessageDescriptor pg_query__res_target__descriptor; +extern const ProtobufCMessageDescriptor pg_query__multi_assign_ref__descriptor; +extern const ProtobufCMessageDescriptor pg_query__type_cast__descriptor; +extern const ProtobufCMessageDescriptor pg_query__collate_clause__descriptor; +extern const ProtobufCMessageDescriptor pg_query__sort_by__descriptor; +extern const ProtobufCMessageDescriptor pg_query__window_def__descriptor; +extern const ProtobufCMessageDescriptor pg_query__range_subselect__descriptor; +extern const ProtobufCMessageDescriptor pg_query__range_function__descriptor; +extern const ProtobufCMessageDescriptor pg_query__range_table_sample__descriptor; +extern const ProtobufCMessageDescriptor pg_query__range_table_func__descriptor; +extern const ProtobufCMessageDescriptor pg_query__range_table_func_col__descriptor; +extern const ProtobufCMessageDescriptor pg_query__type_name__descriptor; +extern const ProtobufCMessageDescriptor pg_query__column_def__descriptor; +extern const ProtobufCMessageDescriptor pg_query__index_elem__descriptor; +extern const ProtobufCMessageDescriptor pg_query__constraint__descriptor; +extern const ProtobufCMessageDescriptor pg_query__def_elem__descriptor; +extern const ProtobufCMessageDescriptor pg_query__range_tbl_entry__descriptor; +extern const ProtobufCMessageDescriptor pg_query__range_tbl_function__descriptor; +extern const ProtobufCMessageDescriptor pg_query__table_sample_clause__descriptor; +extern const ProtobufCMessageDescriptor pg_query__with_check_option__descriptor; +extern const ProtobufCMessageDescriptor pg_query__sort_group_clause__descriptor; +extern const ProtobufCMessageDescriptor pg_query__grouping_set__descriptor; +extern const ProtobufCMessageDescriptor pg_query__window_clause__descriptor; +extern const ProtobufCMessageDescriptor pg_query__object_with_args__descriptor; +extern const ProtobufCMessageDescriptor pg_query__access_priv__descriptor; +extern const ProtobufCMessageDescriptor pg_query__create_op_class_item__descriptor; +extern const ProtobufCMessageDescriptor pg_query__table_like_clause__descriptor; +extern const ProtobufCMessageDescriptor pg_query__function_parameter__descriptor; +extern const ProtobufCMessageDescriptor pg_query__locking_clause__descriptor; +extern const ProtobufCMessageDescriptor pg_query__row_mark_clause__descriptor; +extern const ProtobufCMessageDescriptor pg_query__xml_serialize__descriptor; +extern const ProtobufCMessageDescriptor pg_query__with_clause__descriptor; +extern const ProtobufCMessageDescriptor pg_query__infer_clause__descriptor; +extern const ProtobufCMessageDescriptor pg_query__on_conflict_clause__descriptor; +extern const ProtobufCMessageDescriptor pg_query__common_table_expr__descriptor; +extern const ProtobufCMessageDescriptor pg_query__role_spec__descriptor; +extern const ProtobufCMessageDescriptor pg_query__trigger_transition__descriptor; +extern const ProtobufCMessageDescriptor pg_query__partition_elem__descriptor; +extern const ProtobufCMessageDescriptor pg_query__partition_spec__descriptor; +extern const ProtobufCMessageDescriptor pg_query__partition_bound_spec__descriptor; +extern const ProtobufCMessageDescriptor pg_query__partition_range_datum__descriptor; +extern const ProtobufCMessageDescriptor pg_query__partition_cmd__descriptor; +extern const ProtobufCMessageDescriptor pg_query__vacuum_relation__descriptor; +extern const ProtobufCMessageDescriptor pg_query__inline_code_block__descriptor; +extern const ProtobufCMessageDescriptor pg_query__call_context__descriptor; +extern const ProtobufCMessageDescriptor pg_query__scan_token__descriptor; + +PROTOBUF_C__END_DECLS + + +#endif /* PROTOBUF_C_protobuf_2fpg_5fquery_2eproto__INCLUDED */ diff --git a/parser/include/protobuf/pg_query.pb.h b/parser/include/protobuf/pg_query.pb.h new file mode 100644 index 00000000..9f48e853 --- /dev/null +++ b/parser/include/protobuf/pg_query.pb.h @@ -0,0 +1,124718 @@ +// Generated by the protocol buffer compiler. DO NOT EDIT! +// source: protobuf/pg_query.proto + +#ifndef GOOGLE_PROTOBUF_INCLUDED_protobuf_2fpg_5fquery_2eproto +#define GOOGLE_PROTOBUF_INCLUDED_protobuf_2fpg_5fquery_2eproto + +#include +#include + +#include +#if PROTOBUF_VERSION < 3014000 +#error This file was generated by a newer version of protoc which is +#error incompatible with your Protocol Buffer headers. Please update +#error your headers. +#endif +#if 3014000 < PROTOBUF_MIN_PROTOC_VERSION +#error This file was generated by an older version of protoc which is +#error incompatible with your Protocol Buffer headers. Please +#error regenerate this file with a newer version of protoc. +#endif + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include // IWYU pragma: export +#include // IWYU pragma: export +#include +#include +// @@protoc_insertion_point(includes) +#include +#define PROTOBUF_INTERNAL_EXPORT_protobuf_2fpg_5fquery_2eproto +PROTOBUF_NAMESPACE_OPEN +namespace internal { +class AnyMetadata; +} // namespace internal +PROTOBUF_NAMESPACE_CLOSE + +// Internal implementation detail -- do not use these members. +struct TableStruct_protobuf_2fpg_5fquery_2eproto { + static const ::PROTOBUF_NAMESPACE_ID::internal::ParseTableField entries[] + PROTOBUF_SECTION_VARIABLE(protodesc_cold); + static const ::PROTOBUF_NAMESPACE_ID::internal::AuxiliaryParseTableField aux[] + PROTOBUF_SECTION_VARIABLE(protodesc_cold); + static const ::PROTOBUF_NAMESPACE_ID::internal::ParseTable schema[233] + PROTOBUF_SECTION_VARIABLE(protodesc_cold); + static const ::PROTOBUF_NAMESPACE_ID::internal::FieldMetadata field_metadata[]; + static const ::PROTOBUF_NAMESPACE_ID::internal::SerializationTable serialization_table[]; + static const ::PROTOBUF_NAMESPACE_ID::uint32 offsets[]; +}; +extern const ::PROTOBUF_NAMESPACE_ID::internal::DescriptorTable descriptor_table_protobuf_2fpg_5fquery_2eproto; +namespace pg_query { +class A_ArrayExpr; +class A_ArrayExprDefaultTypeInternal; +extern A_ArrayExprDefaultTypeInternal _A_ArrayExpr_default_instance_; +class A_Const; +class A_ConstDefaultTypeInternal; +extern A_ConstDefaultTypeInternal _A_Const_default_instance_; +class A_Expr; +class A_ExprDefaultTypeInternal; +extern A_ExprDefaultTypeInternal _A_Expr_default_instance_; +class A_Indices; +class A_IndicesDefaultTypeInternal; +extern A_IndicesDefaultTypeInternal _A_Indices_default_instance_; +class A_Indirection; +class A_IndirectionDefaultTypeInternal; +extern A_IndirectionDefaultTypeInternal _A_Indirection_default_instance_; +class A_Star; +class A_StarDefaultTypeInternal; +extern A_StarDefaultTypeInternal _A_Star_default_instance_; +class AccessPriv; +class AccessPrivDefaultTypeInternal; +extern AccessPrivDefaultTypeInternal _AccessPriv_default_instance_; +class Aggref; +class AggrefDefaultTypeInternal; +extern AggrefDefaultTypeInternal _Aggref_default_instance_; +class Alias; +class AliasDefaultTypeInternal; +extern AliasDefaultTypeInternal _Alias_default_instance_; +class AlterCollationStmt; +class AlterCollationStmtDefaultTypeInternal; +extern AlterCollationStmtDefaultTypeInternal _AlterCollationStmt_default_instance_; +class AlterDatabaseSetStmt; +class AlterDatabaseSetStmtDefaultTypeInternal; +extern AlterDatabaseSetStmtDefaultTypeInternal _AlterDatabaseSetStmt_default_instance_; +class AlterDatabaseStmt; +class AlterDatabaseStmtDefaultTypeInternal; +extern AlterDatabaseStmtDefaultTypeInternal _AlterDatabaseStmt_default_instance_; +class AlterDefaultPrivilegesStmt; +class AlterDefaultPrivilegesStmtDefaultTypeInternal; +extern AlterDefaultPrivilegesStmtDefaultTypeInternal _AlterDefaultPrivilegesStmt_default_instance_; +class AlterDomainStmt; +class AlterDomainStmtDefaultTypeInternal; +extern AlterDomainStmtDefaultTypeInternal _AlterDomainStmt_default_instance_; +class AlterEnumStmt; +class AlterEnumStmtDefaultTypeInternal; +extern AlterEnumStmtDefaultTypeInternal _AlterEnumStmt_default_instance_; +class AlterEventTrigStmt; +class AlterEventTrigStmtDefaultTypeInternal; +extern AlterEventTrigStmtDefaultTypeInternal _AlterEventTrigStmt_default_instance_; +class AlterExtensionContentsStmt; +class AlterExtensionContentsStmtDefaultTypeInternal; +extern AlterExtensionContentsStmtDefaultTypeInternal _AlterExtensionContentsStmt_default_instance_; +class AlterExtensionStmt; +class AlterExtensionStmtDefaultTypeInternal; +extern AlterExtensionStmtDefaultTypeInternal _AlterExtensionStmt_default_instance_; +class AlterFdwStmt; +class AlterFdwStmtDefaultTypeInternal; +extern AlterFdwStmtDefaultTypeInternal _AlterFdwStmt_default_instance_; +class AlterForeignServerStmt; +class AlterForeignServerStmtDefaultTypeInternal; +extern AlterForeignServerStmtDefaultTypeInternal _AlterForeignServerStmt_default_instance_; +class AlterFunctionStmt; +class AlterFunctionStmtDefaultTypeInternal; +extern AlterFunctionStmtDefaultTypeInternal _AlterFunctionStmt_default_instance_; +class AlterObjectDependsStmt; +class AlterObjectDependsStmtDefaultTypeInternal; +extern AlterObjectDependsStmtDefaultTypeInternal _AlterObjectDependsStmt_default_instance_; +class AlterObjectSchemaStmt; +class AlterObjectSchemaStmtDefaultTypeInternal; +extern AlterObjectSchemaStmtDefaultTypeInternal _AlterObjectSchemaStmt_default_instance_; +class AlterOpFamilyStmt; +class AlterOpFamilyStmtDefaultTypeInternal; +extern AlterOpFamilyStmtDefaultTypeInternal _AlterOpFamilyStmt_default_instance_; +class AlterOperatorStmt; +class AlterOperatorStmtDefaultTypeInternal; +extern AlterOperatorStmtDefaultTypeInternal _AlterOperatorStmt_default_instance_; +class AlterOwnerStmt; +class AlterOwnerStmtDefaultTypeInternal; +extern AlterOwnerStmtDefaultTypeInternal _AlterOwnerStmt_default_instance_; +class AlterPolicyStmt; +class AlterPolicyStmtDefaultTypeInternal; +extern AlterPolicyStmtDefaultTypeInternal _AlterPolicyStmt_default_instance_; +class AlterPublicationStmt; +class AlterPublicationStmtDefaultTypeInternal; +extern AlterPublicationStmtDefaultTypeInternal _AlterPublicationStmt_default_instance_; +class AlterRoleSetStmt; +class AlterRoleSetStmtDefaultTypeInternal; +extern AlterRoleSetStmtDefaultTypeInternal _AlterRoleSetStmt_default_instance_; +class AlterRoleStmt; +class AlterRoleStmtDefaultTypeInternal; +extern AlterRoleStmtDefaultTypeInternal _AlterRoleStmt_default_instance_; +class AlterSeqStmt; +class AlterSeqStmtDefaultTypeInternal; +extern AlterSeqStmtDefaultTypeInternal _AlterSeqStmt_default_instance_; +class AlterStatsStmt; +class AlterStatsStmtDefaultTypeInternal; +extern AlterStatsStmtDefaultTypeInternal _AlterStatsStmt_default_instance_; +class AlterSubscriptionStmt; +class AlterSubscriptionStmtDefaultTypeInternal; +extern AlterSubscriptionStmtDefaultTypeInternal _AlterSubscriptionStmt_default_instance_; +class AlterSystemStmt; +class AlterSystemStmtDefaultTypeInternal; +extern AlterSystemStmtDefaultTypeInternal _AlterSystemStmt_default_instance_; +class AlterTSConfigurationStmt; +class AlterTSConfigurationStmtDefaultTypeInternal; +extern AlterTSConfigurationStmtDefaultTypeInternal _AlterTSConfigurationStmt_default_instance_; +class AlterTSDictionaryStmt; +class AlterTSDictionaryStmtDefaultTypeInternal; +extern AlterTSDictionaryStmtDefaultTypeInternal _AlterTSDictionaryStmt_default_instance_; +class AlterTableCmd; +class AlterTableCmdDefaultTypeInternal; +extern AlterTableCmdDefaultTypeInternal _AlterTableCmd_default_instance_; +class AlterTableMoveAllStmt; +class AlterTableMoveAllStmtDefaultTypeInternal; +extern AlterTableMoveAllStmtDefaultTypeInternal _AlterTableMoveAllStmt_default_instance_; +class AlterTableSpaceOptionsStmt; +class AlterTableSpaceOptionsStmtDefaultTypeInternal; +extern AlterTableSpaceOptionsStmtDefaultTypeInternal _AlterTableSpaceOptionsStmt_default_instance_; +class AlterTableStmt; +class AlterTableStmtDefaultTypeInternal; +extern AlterTableStmtDefaultTypeInternal _AlterTableStmt_default_instance_; +class AlterTypeStmt; +class AlterTypeStmtDefaultTypeInternal; +extern AlterTypeStmtDefaultTypeInternal _AlterTypeStmt_default_instance_; +class AlterUserMappingStmt; +class AlterUserMappingStmtDefaultTypeInternal; +extern AlterUserMappingStmtDefaultTypeInternal _AlterUserMappingStmt_default_instance_; +class AlternativeSubPlan; +class AlternativeSubPlanDefaultTypeInternal; +extern AlternativeSubPlanDefaultTypeInternal _AlternativeSubPlan_default_instance_; +class ArrayCoerceExpr; +class ArrayCoerceExprDefaultTypeInternal; +extern ArrayCoerceExprDefaultTypeInternal _ArrayCoerceExpr_default_instance_; +class ArrayExpr; +class ArrayExprDefaultTypeInternal; +extern ArrayExprDefaultTypeInternal _ArrayExpr_default_instance_; +class BitString; +class BitStringDefaultTypeInternal; +extern BitStringDefaultTypeInternal _BitString_default_instance_; +class Bitmapset; +class BitmapsetDefaultTypeInternal; +extern BitmapsetDefaultTypeInternal _Bitmapset_default_instance_; +class BoolExpr; +class BoolExprDefaultTypeInternal; +extern BoolExprDefaultTypeInternal _BoolExpr_default_instance_; +class BooleanTest; +class BooleanTestDefaultTypeInternal; +extern BooleanTestDefaultTypeInternal _BooleanTest_default_instance_; +class CallContext; +class CallContextDefaultTypeInternal; +extern CallContextDefaultTypeInternal _CallContext_default_instance_; +class CallStmt; +class CallStmtDefaultTypeInternal; +extern CallStmtDefaultTypeInternal _CallStmt_default_instance_; +class CaseExpr; +class CaseExprDefaultTypeInternal; +extern CaseExprDefaultTypeInternal _CaseExpr_default_instance_; +class CaseTestExpr; +class CaseTestExprDefaultTypeInternal; +extern CaseTestExprDefaultTypeInternal _CaseTestExpr_default_instance_; +class CaseWhen; +class CaseWhenDefaultTypeInternal; +extern CaseWhenDefaultTypeInternal _CaseWhen_default_instance_; +class CheckPointStmt; +class CheckPointStmtDefaultTypeInternal; +extern CheckPointStmtDefaultTypeInternal _CheckPointStmt_default_instance_; +class ClosePortalStmt; +class ClosePortalStmtDefaultTypeInternal; +extern ClosePortalStmtDefaultTypeInternal _ClosePortalStmt_default_instance_; +class ClusterStmt; +class ClusterStmtDefaultTypeInternal; +extern ClusterStmtDefaultTypeInternal _ClusterStmt_default_instance_; +class CoalesceExpr; +class CoalesceExprDefaultTypeInternal; +extern CoalesceExprDefaultTypeInternal _CoalesceExpr_default_instance_; +class CoerceToDomain; +class CoerceToDomainDefaultTypeInternal; +extern CoerceToDomainDefaultTypeInternal _CoerceToDomain_default_instance_; +class CoerceToDomainValue; +class CoerceToDomainValueDefaultTypeInternal; +extern CoerceToDomainValueDefaultTypeInternal _CoerceToDomainValue_default_instance_; +class CoerceViaIO; +class CoerceViaIODefaultTypeInternal; +extern CoerceViaIODefaultTypeInternal _CoerceViaIO_default_instance_; +class CollateClause; +class CollateClauseDefaultTypeInternal; +extern CollateClauseDefaultTypeInternal _CollateClause_default_instance_; +class CollateExpr; +class CollateExprDefaultTypeInternal; +extern CollateExprDefaultTypeInternal _CollateExpr_default_instance_; +class ColumnDef; +class ColumnDefDefaultTypeInternal; +extern ColumnDefDefaultTypeInternal _ColumnDef_default_instance_; +class ColumnRef; +class ColumnRefDefaultTypeInternal; +extern ColumnRefDefaultTypeInternal _ColumnRef_default_instance_; +class CommentStmt; +class CommentStmtDefaultTypeInternal; +extern CommentStmtDefaultTypeInternal _CommentStmt_default_instance_; +class CommonTableExpr; +class CommonTableExprDefaultTypeInternal; +extern CommonTableExprDefaultTypeInternal _CommonTableExpr_default_instance_; +class CompositeTypeStmt; +class CompositeTypeStmtDefaultTypeInternal; +extern CompositeTypeStmtDefaultTypeInternal _CompositeTypeStmt_default_instance_; +class Constraint; +class ConstraintDefaultTypeInternal; +extern ConstraintDefaultTypeInternal _Constraint_default_instance_; +class ConstraintsSetStmt; +class ConstraintsSetStmtDefaultTypeInternal; +extern ConstraintsSetStmtDefaultTypeInternal _ConstraintsSetStmt_default_instance_; +class ConvertRowtypeExpr; +class ConvertRowtypeExprDefaultTypeInternal; +extern ConvertRowtypeExprDefaultTypeInternal _ConvertRowtypeExpr_default_instance_; +class CopyStmt; +class CopyStmtDefaultTypeInternal; +extern CopyStmtDefaultTypeInternal _CopyStmt_default_instance_; +class CreateAmStmt; +class CreateAmStmtDefaultTypeInternal; +extern CreateAmStmtDefaultTypeInternal _CreateAmStmt_default_instance_; +class CreateCastStmt; +class CreateCastStmtDefaultTypeInternal; +extern CreateCastStmtDefaultTypeInternal _CreateCastStmt_default_instance_; +class CreateConversionStmt; +class CreateConversionStmtDefaultTypeInternal; +extern CreateConversionStmtDefaultTypeInternal _CreateConversionStmt_default_instance_; +class CreateDomainStmt; +class CreateDomainStmtDefaultTypeInternal; +extern CreateDomainStmtDefaultTypeInternal _CreateDomainStmt_default_instance_; +class CreateEnumStmt; +class CreateEnumStmtDefaultTypeInternal; +extern CreateEnumStmtDefaultTypeInternal _CreateEnumStmt_default_instance_; +class CreateEventTrigStmt; +class CreateEventTrigStmtDefaultTypeInternal; +extern CreateEventTrigStmtDefaultTypeInternal _CreateEventTrigStmt_default_instance_; +class CreateExtensionStmt; +class CreateExtensionStmtDefaultTypeInternal; +extern CreateExtensionStmtDefaultTypeInternal _CreateExtensionStmt_default_instance_; +class CreateFdwStmt; +class CreateFdwStmtDefaultTypeInternal; +extern CreateFdwStmtDefaultTypeInternal _CreateFdwStmt_default_instance_; +class CreateForeignServerStmt; +class CreateForeignServerStmtDefaultTypeInternal; +extern CreateForeignServerStmtDefaultTypeInternal _CreateForeignServerStmt_default_instance_; +class CreateForeignTableStmt; +class CreateForeignTableStmtDefaultTypeInternal; +extern CreateForeignTableStmtDefaultTypeInternal _CreateForeignTableStmt_default_instance_; +class CreateFunctionStmt; +class CreateFunctionStmtDefaultTypeInternal; +extern CreateFunctionStmtDefaultTypeInternal _CreateFunctionStmt_default_instance_; +class CreateOpClassItem; +class CreateOpClassItemDefaultTypeInternal; +extern CreateOpClassItemDefaultTypeInternal _CreateOpClassItem_default_instance_; +class CreateOpClassStmt; +class CreateOpClassStmtDefaultTypeInternal; +extern CreateOpClassStmtDefaultTypeInternal _CreateOpClassStmt_default_instance_; +class CreateOpFamilyStmt; +class CreateOpFamilyStmtDefaultTypeInternal; +extern CreateOpFamilyStmtDefaultTypeInternal _CreateOpFamilyStmt_default_instance_; +class CreatePLangStmt; +class CreatePLangStmtDefaultTypeInternal; +extern CreatePLangStmtDefaultTypeInternal _CreatePLangStmt_default_instance_; +class CreatePolicyStmt; +class CreatePolicyStmtDefaultTypeInternal; +extern CreatePolicyStmtDefaultTypeInternal _CreatePolicyStmt_default_instance_; +class CreatePublicationStmt; +class CreatePublicationStmtDefaultTypeInternal; +extern CreatePublicationStmtDefaultTypeInternal _CreatePublicationStmt_default_instance_; +class CreateRangeStmt; +class CreateRangeStmtDefaultTypeInternal; +extern CreateRangeStmtDefaultTypeInternal _CreateRangeStmt_default_instance_; +class CreateRoleStmt; +class CreateRoleStmtDefaultTypeInternal; +extern CreateRoleStmtDefaultTypeInternal _CreateRoleStmt_default_instance_; +class CreateSchemaStmt; +class CreateSchemaStmtDefaultTypeInternal; +extern CreateSchemaStmtDefaultTypeInternal _CreateSchemaStmt_default_instance_; +class CreateSeqStmt; +class CreateSeqStmtDefaultTypeInternal; +extern CreateSeqStmtDefaultTypeInternal _CreateSeqStmt_default_instance_; +class CreateStatsStmt; +class CreateStatsStmtDefaultTypeInternal; +extern CreateStatsStmtDefaultTypeInternal _CreateStatsStmt_default_instance_; +class CreateStmt; +class CreateStmtDefaultTypeInternal; +extern CreateStmtDefaultTypeInternal _CreateStmt_default_instance_; +class CreateSubscriptionStmt; +class CreateSubscriptionStmtDefaultTypeInternal; +extern CreateSubscriptionStmtDefaultTypeInternal _CreateSubscriptionStmt_default_instance_; +class CreateTableAsStmt; +class CreateTableAsStmtDefaultTypeInternal; +extern CreateTableAsStmtDefaultTypeInternal _CreateTableAsStmt_default_instance_; +class CreateTableSpaceStmt; +class CreateTableSpaceStmtDefaultTypeInternal; +extern CreateTableSpaceStmtDefaultTypeInternal _CreateTableSpaceStmt_default_instance_; +class CreateTransformStmt; +class CreateTransformStmtDefaultTypeInternal; +extern CreateTransformStmtDefaultTypeInternal _CreateTransformStmt_default_instance_; +class CreateTrigStmt; +class CreateTrigStmtDefaultTypeInternal; +extern CreateTrigStmtDefaultTypeInternal _CreateTrigStmt_default_instance_; +class CreateUserMappingStmt; +class CreateUserMappingStmtDefaultTypeInternal; +extern CreateUserMappingStmtDefaultTypeInternal _CreateUserMappingStmt_default_instance_; +class CreatedbStmt; +class CreatedbStmtDefaultTypeInternal; +extern CreatedbStmtDefaultTypeInternal _CreatedbStmt_default_instance_; +class CurrentOfExpr; +class CurrentOfExprDefaultTypeInternal; +extern CurrentOfExprDefaultTypeInternal _CurrentOfExpr_default_instance_; +class DeallocateStmt; +class DeallocateStmtDefaultTypeInternal; +extern DeallocateStmtDefaultTypeInternal _DeallocateStmt_default_instance_; +class DeclareCursorStmt; +class DeclareCursorStmtDefaultTypeInternal; +extern DeclareCursorStmtDefaultTypeInternal _DeclareCursorStmt_default_instance_; +class DefElem; +class DefElemDefaultTypeInternal; +extern DefElemDefaultTypeInternal _DefElem_default_instance_; +class DefineStmt; +class DefineStmtDefaultTypeInternal; +extern DefineStmtDefaultTypeInternal _DefineStmt_default_instance_; +class DeleteStmt; +class DeleteStmtDefaultTypeInternal; +extern DeleteStmtDefaultTypeInternal _DeleteStmt_default_instance_; +class DiscardStmt; +class DiscardStmtDefaultTypeInternal; +extern DiscardStmtDefaultTypeInternal _DiscardStmt_default_instance_; +class DistinctExpr; +class DistinctExprDefaultTypeInternal; +extern DistinctExprDefaultTypeInternal _DistinctExpr_default_instance_; +class DoStmt; +class DoStmtDefaultTypeInternal; +extern DoStmtDefaultTypeInternal _DoStmt_default_instance_; +class DropOwnedStmt; +class DropOwnedStmtDefaultTypeInternal; +extern DropOwnedStmtDefaultTypeInternal _DropOwnedStmt_default_instance_; +class DropRoleStmt; +class DropRoleStmtDefaultTypeInternal; +extern DropRoleStmtDefaultTypeInternal _DropRoleStmt_default_instance_; +class DropStmt; +class DropStmtDefaultTypeInternal; +extern DropStmtDefaultTypeInternal _DropStmt_default_instance_; +class DropSubscriptionStmt; +class DropSubscriptionStmtDefaultTypeInternal; +extern DropSubscriptionStmtDefaultTypeInternal _DropSubscriptionStmt_default_instance_; +class DropTableSpaceStmt; +class DropTableSpaceStmtDefaultTypeInternal; +extern DropTableSpaceStmtDefaultTypeInternal _DropTableSpaceStmt_default_instance_; +class DropUserMappingStmt; +class DropUserMappingStmtDefaultTypeInternal; +extern DropUserMappingStmtDefaultTypeInternal _DropUserMappingStmt_default_instance_; +class DropdbStmt; +class DropdbStmtDefaultTypeInternal; +extern DropdbStmtDefaultTypeInternal _DropdbStmt_default_instance_; +class ExecuteStmt; +class ExecuteStmtDefaultTypeInternal; +extern ExecuteStmtDefaultTypeInternal _ExecuteStmt_default_instance_; +class ExplainStmt; +class ExplainStmtDefaultTypeInternal; +extern ExplainStmtDefaultTypeInternal _ExplainStmt_default_instance_; +class Expr; +class ExprDefaultTypeInternal; +extern ExprDefaultTypeInternal _Expr_default_instance_; +class FetchStmt; +class FetchStmtDefaultTypeInternal; +extern FetchStmtDefaultTypeInternal _FetchStmt_default_instance_; +class FieldSelect; +class FieldSelectDefaultTypeInternal; +extern FieldSelectDefaultTypeInternal _FieldSelect_default_instance_; +class FieldStore; +class FieldStoreDefaultTypeInternal; +extern FieldStoreDefaultTypeInternal _FieldStore_default_instance_; +class Float; +class FloatDefaultTypeInternal; +extern FloatDefaultTypeInternal _Float_default_instance_; +class FromExpr; +class FromExprDefaultTypeInternal; +extern FromExprDefaultTypeInternal _FromExpr_default_instance_; +class FuncCall; +class FuncCallDefaultTypeInternal; +extern FuncCallDefaultTypeInternal _FuncCall_default_instance_; +class FuncExpr; +class FuncExprDefaultTypeInternal; +extern FuncExprDefaultTypeInternal _FuncExpr_default_instance_; +class FunctionParameter; +class FunctionParameterDefaultTypeInternal; +extern FunctionParameterDefaultTypeInternal _FunctionParameter_default_instance_; +class GrantRoleStmt; +class GrantRoleStmtDefaultTypeInternal; +extern GrantRoleStmtDefaultTypeInternal _GrantRoleStmt_default_instance_; +class GrantStmt; +class GrantStmtDefaultTypeInternal; +extern GrantStmtDefaultTypeInternal _GrantStmt_default_instance_; +class GroupingFunc; +class GroupingFuncDefaultTypeInternal; +extern GroupingFuncDefaultTypeInternal _GroupingFunc_default_instance_; +class GroupingSet; +class GroupingSetDefaultTypeInternal; +extern GroupingSetDefaultTypeInternal _GroupingSet_default_instance_; +class ImportForeignSchemaStmt; +class ImportForeignSchemaStmtDefaultTypeInternal; +extern ImportForeignSchemaStmtDefaultTypeInternal _ImportForeignSchemaStmt_default_instance_; +class IndexElem; +class IndexElemDefaultTypeInternal; +extern IndexElemDefaultTypeInternal _IndexElem_default_instance_; +class IndexStmt; +class IndexStmtDefaultTypeInternal; +extern IndexStmtDefaultTypeInternal _IndexStmt_default_instance_; +class InferClause; +class InferClauseDefaultTypeInternal; +extern InferClauseDefaultTypeInternal _InferClause_default_instance_; +class InferenceElem; +class InferenceElemDefaultTypeInternal; +extern InferenceElemDefaultTypeInternal _InferenceElem_default_instance_; +class InlineCodeBlock; +class InlineCodeBlockDefaultTypeInternal; +extern InlineCodeBlockDefaultTypeInternal _InlineCodeBlock_default_instance_; +class InsertStmt; +class InsertStmtDefaultTypeInternal; +extern InsertStmtDefaultTypeInternal _InsertStmt_default_instance_; +class IntList; +class IntListDefaultTypeInternal; +extern IntListDefaultTypeInternal _IntList_default_instance_; +class Integer; +class IntegerDefaultTypeInternal; +extern IntegerDefaultTypeInternal _Integer_default_instance_; +class IntoClause; +class IntoClauseDefaultTypeInternal; +extern IntoClauseDefaultTypeInternal _IntoClause_default_instance_; +class JoinExpr; +class JoinExprDefaultTypeInternal; +extern JoinExprDefaultTypeInternal _JoinExpr_default_instance_; +class List; +class ListDefaultTypeInternal; +extern ListDefaultTypeInternal _List_default_instance_; +class ListenStmt; +class ListenStmtDefaultTypeInternal; +extern ListenStmtDefaultTypeInternal _ListenStmt_default_instance_; +class LoadStmt; +class LoadStmtDefaultTypeInternal; +extern LoadStmtDefaultTypeInternal _LoadStmt_default_instance_; +class LockStmt; +class LockStmtDefaultTypeInternal; +extern LockStmtDefaultTypeInternal _LockStmt_default_instance_; +class LockingClause; +class LockingClauseDefaultTypeInternal; +extern LockingClauseDefaultTypeInternal _LockingClause_default_instance_; +class MinMaxExpr; +class MinMaxExprDefaultTypeInternal; +extern MinMaxExprDefaultTypeInternal _MinMaxExpr_default_instance_; +class MultiAssignRef; +class MultiAssignRefDefaultTypeInternal; +extern MultiAssignRefDefaultTypeInternal _MultiAssignRef_default_instance_; +class NamedArgExpr; +class NamedArgExprDefaultTypeInternal; +extern NamedArgExprDefaultTypeInternal _NamedArgExpr_default_instance_; +class NextValueExpr; +class NextValueExprDefaultTypeInternal; +extern NextValueExprDefaultTypeInternal _NextValueExpr_default_instance_; +class Node; +class NodeDefaultTypeInternal; +extern NodeDefaultTypeInternal _Node_default_instance_; +class NotifyStmt; +class NotifyStmtDefaultTypeInternal; +extern NotifyStmtDefaultTypeInternal _NotifyStmt_default_instance_; +class Null; +class NullDefaultTypeInternal; +extern NullDefaultTypeInternal _Null_default_instance_; +class NullIfExpr; +class NullIfExprDefaultTypeInternal; +extern NullIfExprDefaultTypeInternal _NullIfExpr_default_instance_; +class NullTest; +class NullTestDefaultTypeInternal; +extern NullTestDefaultTypeInternal _NullTest_default_instance_; +class ObjectWithArgs; +class ObjectWithArgsDefaultTypeInternal; +extern ObjectWithArgsDefaultTypeInternal _ObjectWithArgs_default_instance_; +class OidList; +class OidListDefaultTypeInternal; +extern OidListDefaultTypeInternal _OidList_default_instance_; +class OnConflictClause; +class OnConflictClauseDefaultTypeInternal; +extern OnConflictClauseDefaultTypeInternal _OnConflictClause_default_instance_; +class OnConflictExpr; +class OnConflictExprDefaultTypeInternal; +extern OnConflictExprDefaultTypeInternal _OnConflictExpr_default_instance_; +class OpExpr; +class OpExprDefaultTypeInternal; +extern OpExprDefaultTypeInternal _OpExpr_default_instance_; +class Param; +class ParamDefaultTypeInternal; +extern ParamDefaultTypeInternal _Param_default_instance_; +class ParamRef; +class ParamRefDefaultTypeInternal; +extern ParamRefDefaultTypeInternal _ParamRef_default_instance_; +class ParseResult; +class ParseResultDefaultTypeInternal; +extern ParseResultDefaultTypeInternal _ParseResult_default_instance_; +class PartitionBoundSpec; +class PartitionBoundSpecDefaultTypeInternal; +extern PartitionBoundSpecDefaultTypeInternal _PartitionBoundSpec_default_instance_; +class PartitionCmd; +class PartitionCmdDefaultTypeInternal; +extern PartitionCmdDefaultTypeInternal _PartitionCmd_default_instance_; +class PartitionElem; +class PartitionElemDefaultTypeInternal; +extern PartitionElemDefaultTypeInternal _PartitionElem_default_instance_; +class PartitionRangeDatum; +class PartitionRangeDatumDefaultTypeInternal; +extern PartitionRangeDatumDefaultTypeInternal _PartitionRangeDatum_default_instance_; +class PartitionSpec; +class PartitionSpecDefaultTypeInternal; +extern PartitionSpecDefaultTypeInternal _PartitionSpec_default_instance_; +class PrepareStmt; +class PrepareStmtDefaultTypeInternal; +extern PrepareStmtDefaultTypeInternal _PrepareStmt_default_instance_; +class Query; +class QueryDefaultTypeInternal; +extern QueryDefaultTypeInternal _Query_default_instance_; +class RangeFunction; +class RangeFunctionDefaultTypeInternal; +extern RangeFunctionDefaultTypeInternal _RangeFunction_default_instance_; +class RangeSubselect; +class RangeSubselectDefaultTypeInternal; +extern RangeSubselectDefaultTypeInternal _RangeSubselect_default_instance_; +class RangeTableFunc; +class RangeTableFuncDefaultTypeInternal; +extern RangeTableFuncDefaultTypeInternal _RangeTableFunc_default_instance_; +class RangeTableFuncCol; +class RangeTableFuncColDefaultTypeInternal; +extern RangeTableFuncColDefaultTypeInternal _RangeTableFuncCol_default_instance_; +class RangeTableSample; +class RangeTableSampleDefaultTypeInternal; +extern RangeTableSampleDefaultTypeInternal _RangeTableSample_default_instance_; +class RangeTblEntry; +class RangeTblEntryDefaultTypeInternal; +extern RangeTblEntryDefaultTypeInternal _RangeTblEntry_default_instance_; +class RangeTblFunction; +class RangeTblFunctionDefaultTypeInternal; +extern RangeTblFunctionDefaultTypeInternal _RangeTblFunction_default_instance_; +class RangeTblRef; +class RangeTblRefDefaultTypeInternal; +extern RangeTblRefDefaultTypeInternal _RangeTblRef_default_instance_; +class RangeVar; +class RangeVarDefaultTypeInternal; +extern RangeVarDefaultTypeInternal _RangeVar_default_instance_; +class RawStmt; +class RawStmtDefaultTypeInternal; +extern RawStmtDefaultTypeInternal _RawStmt_default_instance_; +class ReassignOwnedStmt; +class ReassignOwnedStmtDefaultTypeInternal; +extern ReassignOwnedStmtDefaultTypeInternal _ReassignOwnedStmt_default_instance_; +class RefreshMatViewStmt; +class RefreshMatViewStmtDefaultTypeInternal; +extern RefreshMatViewStmtDefaultTypeInternal _RefreshMatViewStmt_default_instance_; +class ReindexStmt; +class ReindexStmtDefaultTypeInternal; +extern ReindexStmtDefaultTypeInternal _ReindexStmt_default_instance_; +class RelabelType; +class RelabelTypeDefaultTypeInternal; +extern RelabelTypeDefaultTypeInternal _RelabelType_default_instance_; +class RenameStmt; +class RenameStmtDefaultTypeInternal; +extern RenameStmtDefaultTypeInternal _RenameStmt_default_instance_; +class ReplicaIdentityStmt; +class ReplicaIdentityStmtDefaultTypeInternal; +extern ReplicaIdentityStmtDefaultTypeInternal _ReplicaIdentityStmt_default_instance_; +class ResTarget; +class ResTargetDefaultTypeInternal; +extern ResTargetDefaultTypeInternal _ResTarget_default_instance_; +class RoleSpec; +class RoleSpecDefaultTypeInternal; +extern RoleSpecDefaultTypeInternal _RoleSpec_default_instance_; +class RowCompareExpr; +class RowCompareExprDefaultTypeInternal; +extern RowCompareExprDefaultTypeInternal _RowCompareExpr_default_instance_; +class RowExpr; +class RowExprDefaultTypeInternal; +extern RowExprDefaultTypeInternal _RowExpr_default_instance_; +class RowMarkClause; +class RowMarkClauseDefaultTypeInternal; +extern RowMarkClauseDefaultTypeInternal _RowMarkClause_default_instance_; +class RuleStmt; +class RuleStmtDefaultTypeInternal; +extern RuleStmtDefaultTypeInternal _RuleStmt_default_instance_; +class SQLValueFunction; +class SQLValueFunctionDefaultTypeInternal; +extern SQLValueFunctionDefaultTypeInternal _SQLValueFunction_default_instance_; +class ScalarArrayOpExpr; +class ScalarArrayOpExprDefaultTypeInternal; +extern ScalarArrayOpExprDefaultTypeInternal _ScalarArrayOpExpr_default_instance_; +class ScanResult; +class ScanResultDefaultTypeInternal; +extern ScanResultDefaultTypeInternal _ScanResult_default_instance_; +class ScanToken; +class ScanTokenDefaultTypeInternal; +extern ScanTokenDefaultTypeInternal _ScanToken_default_instance_; +class SecLabelStmt; +class SecLabelStmtDefaultTypeInternal; +extern SecLabelStmtDefaultTypeInternal _SecLabelStmt_default_instance_; +class SelectStmt; +class SelectStmtDefaultTypeInternal; +extern SelectStmtDefaultTypeInternal _SelectStmt_default_instance_; +class SetOperationStmt; +class SetOperationStmtDefaultTypeInternal; +extern SetOperationStmtDefaultTypeInternal _SetOperationStmt_default_instance_; +class SetToDefault; +class SetToDefaultDefaultTypeInternal; +extern SetToDefaultDefaultTypeInternal _SetToDefault_default_instance_; +class SortBy; +class SortByDefaultTypeInternal; +extern SortByDefaultTypeInternal _SortBy_default_instance_; +class SortGroupClause; +class SortGroupClauseDefaultTypeInternal; +extern SortGroupClauseDefaultTypeInternal _SortGroupClause_default_instance_; +class String; +class StringDefaultTypeInternal; +extern StringDefaultTypeInternal _String_default_instance_; +class SubLink; +class SubLinkDefaultTypeInternal; +extern SubLinkDefaultTypeInternal _SubLink_default_instance_; +class SubPlan; +class SubPlanDefaultTypeInternal; +extern SubPlanDefaultTypeInternal _SubPlan_default_instance_; +class SubscriptingRef; +class SubscriptingRefDefaultTypeInternal; +extern SubscriptingRefDefaultTypeInternal _SubscriptingRef_default_instance_; +class TableFunc; +class TableFuncDefaultTypeInternal; +extern TableFuncDefaultTypeInternal _TableFunc_default_instance_; +class TableLikeClause; +class TableLikeClauseDefaultTypeInternal; +extern TableLikeClauseDefaultTypeInternal _TableLikeClause_default_instance_; +class TableSampleClause; +class TableSampleClauseDefaultTypeInternal; +extern TableSampleClauseDefaultTypeInternal _TableSampleClause_default_instance_; +class TargetEntry; +class TargetEntryDefaultTypeInternal; +extern TargetEntryDefaultTypeInternal _TargetEntry_default_instance_; +class TransactionStmt; +class TransactionStmtDefaultTypeInternal; +extern TransactionStmtDefaultTypeInternal _TransactionStmt_default_instance_; +class TriggerTransition; +class TriggerTransitionDefaultTypeInternal; +extern TriggerTransitionDefaultTypeInternal _TriggerTransition_default_instance_; +class TruncateStmt; +class TruncateStmtDefaultTypeInternal; +extern TruncateStmtDefaultTypeInternal _TruncateStmt_default_instance_; +class TypeCast; +class TypeCastDefaultTypeInternal; +extern TypeCastDefaultTypeInternal _TypeCast_default_instance_; +class TypeName; +class TypeNameDefaultTypeInternal; +extern TypeNameDefaultTypeInternal _TypeName_default_instance_; +class UnlistenStmt; +class UnlistenStmtDefaultTypeInternal; +extern UnlistenStmtDefaultTypeInternal _UnlistenStmt_default_instance_; +class UpdateStmt; +class UpdateStmtDefaultTypeInternal; +extern UpdateStmtDefaultTypeInternal _UpdateStmt_default_instance_; +class VacuumRelation; +class VacuumRelationDefaultTypeInternal; +extern VacuumRelationDefaultTypeInternal _VacuumRelation_default_instance_; +class VacuumStmt; +class VacuumStmtDefaultTypeInternal; +extern VacuumStmtDefaultTypeInternal _VacuumStmt_default_instance_; +class Var; +class VarDefaultTypeInternal; +extern VarDefaultTypeInternal _Var_default_instance_; +class VariableSetStmt; +class VariableSetStmtDefaultTypeInternal; +extern VariableSetStmtDefaultTypeInternal _VariableSetStmt_default_instance_; +class VariableShowStmt; +class VariableShowStmtDefaultTypeInternal; +extern VariableShowStmtDefaultTypeInternal _VariableShowStmt_default_instance_; +class ViewStmt; +class ViewStmtDefaultTypeInternal; +extern ViewStmtDefaultTypeInternal _ViewStmt_default_instance_; +class WindowClause; +class WindowClauseDefaultTypeInternal; +extern WindowClauseDefaultTypeInternal _WindowClause_default_instance_; +class WindowDef; +class WindowDefDefaultTypeInternal; +extern WindowDefDefaultTypeInternal _WindowDef_default_instance_; +class WindowFunc; +class WindowFuncDefaultTypeInternal; +extern WindowFuncDefaultTypeInternal _WindowFunc_default_instance_; +class WithCheckOption; +class WithCheckOptionDefaultTypeInternal; +extern WithCheckOptionDefaultTypeInternal _WithCheckOption_default_instance_; +class WithClause; +class WithClauseDefaultTypeInternal; +extern WithClauseDefaultTypeInternal _WithClause_default_instance_; +class XmlExpr; +class XmlExprDefaultTypeInternal; +extern XmlExprDefaultTypeInternal _XmlExpr_default_instance_; +class XmlSerialize; +class XmlSerializeDefaultTypeInternal; +extern XmlSerializeDefaultTypeInternal _XmlSerialize_default_instance_; +} // namespace pg_query +PROTOBUF_NAMESPACE_OPEN +template<> ::pg_query::A_ArrayExpr* Arena::CreateMaybeMessage<::pg_query::A_ArrayExpr>(Arena*); +template<> ::pg_query::A_Const* Arena::CreateMaybeMessage<::pg_query::A_Const>(Arena*); +template<> ::pg_query::A_Expr* Arena::CreateMaybeMessage<::pg_query::A_Expr>(Arena*); +template<> ::pg_query::A_Indices* Arena::CreateMaybeMessage<::pg_query::A_Indices>(Arena*); +template<> ::pg_query::A_Indirection* Arena::CreateMaybeMessage<::pg_query::A_Indirection>(Arena*); +template<> ::pg_query::A_Star* Arena::CreateMaybeMessage<::pg_query::A_Star>(Arena*); +template<> ::pg_query::AccessPriv* Arena::CreateMaybeMessage<::pg_query::AccessPriv>(Arena*); +template<> ::pg_query::Aggref* Arena::CreateMaybeMessage<::pg_query::Aggref>(Arena*); +template<> ::pg_query::Alias* Arena::CreateMaybeMessage<::pg_query::Alias>(Arena*); +template<> ::pg_query::AlterCollationStmt* Arena::CreateMaybeMessage<::pg_query::AlterCollationStmt>(Arena*); +template<> ::pg_query::AlterDatabaseSetStmt* Arena::CreateMaybeMessage<::pg_query::AlterDatabaseSetStmt>(Arena*); +template<> ::pg_query::AlterDatabaseStmt* Arena::CreateMaybeMessage<::pg_query::AlterDatabaseStmt>(Arena*); +template<> ::pg_query::AlterDefaultPrivilegesStmt* Arena::CreateMaybeMessage<::pg_query::AlterDefaultPrivilegesStmt>(Arena*); +template<> ::pg_query::AlterDomainStmt* Arena::CreateMaybeMessage<::pg_query::AlterDomainStmt>(Arena*); +template<> ::pg_query::AlterEnumStmt* Arena::CreateMaybeMessage<::pg_query::AlterEnumStmt>(Arena*); +template<> ::pg_query::AlterEventTrigStmt* Arena::CreateMaybeMessage<::pg_query::AlterEventTrigStmt>(Arena*); +template<> ::pg_query::AlterExtensionContentsStmt* Arena::CreateMaybeMessage<::pg_query::AlterExtensionContentsStmt>(Arena*); +template<> ::pg_query::AlterExtensionStmt* Arena::CreateMaybeMessage<::pg_query::AlterExtensionStmt>(Arena*); +template<> ::pg_query::AlterFdwStmt* Arena::CreateMaybeMessage<::pg_query::AlterFdwStmt>(Arena*); +template<> ::pg_query::AlterForeignServerStmt* Arena::CreateMaybeMessage<::pg_query::AlterForeignServerStmt>(Arena*); +template<> ::pg_query::AlterFunctionStmt* Arena::CreateMaybeMessage<::pg_query::AlterFunctionStmt>(Arena*); +template<> ::pg_query::AlterObjectDependsStmt* Arena::CreateMaybeMessage<::pg_query::AlterObjectDependsStmt>(Arena*); +template<> ::pg_query::AlterObjectSchemaStmt* Arena::CreateMaybeMessage<::pg_query::AlterObjectSchemaStmt>(Arena*); +template<> ::pg_query::AlterOpFamilyStmt* Arena::CreateMaybeMessage<::pg_query::AlterOpFamilyStmt>(Arena*); +template<> ::pg_query::AlterOperatorStmt* Arena::CreateMaybeMessage<::pg_query::AlterOperatorStmt>(Arena*); +template<> ::pg_query::AlterOwnerStmt* Arena::CreateMaybeMessage<::pg_query::AlterOwnerStmt>(Arena*); +template<> ::pg_query::AlterPolicyStmt* Arena::CreateMaybeMessage<::pg_query::AlterPolicyStmt>(Arena*); +template<> ::pg_query::AlterPublicationStmt* Arena::CreateMaybeMessage<::pg_query::AlterPublicationStmt>(Arena*); +template<> ::pg_query::AlterRoleSetStmt* Arena::CreateMaybeMessage<::pg_query::AlterRoleSetStmt>(Arena*); +template<> ::pg_query::AlterRoleStmt* Arena::CreateMaybeMessage<::pg_query::AlterRoleStmt>(Arena*); +template<> ::pg_query::AlterSeqStmt* Arena::CreateMaybeMessage<::pg_query::AlterSeqStmt>(Arena*); +template<> ::pg_query::AlterStatsStmt* Arena::CreateMaybeMessage<::pg_query::AlterStatsStmt>(Arena*); +template<> ::pg_query::AlterSubscriptionStmt* Arena::CreateMaybeMessage<::pg_query::AlterSubscriptionStmt>(Arena*); +template<> ::pg_query::AlterSystemStmt* Arena::CreateMaybeMessage<::pg_query::AlterSystemStmt>(Arena*); +template<> ::pg_query::AlterTSConfigurationStmt* Arena::CreateMaybeMessage<::pg_query::AlterTSConfigurationStmt>(Arena*); +template<> ::pg_query::AlterTSDictionaryStmt* Arena::CreateMaybeMessage<::pg_query::AlterTSDictionaryStmt>(Arena*); +template<> ::pg_query::AlterTableCmd* Arena::CreateMaybeMessage<::pg_query::AlterTableCmd>(Arena*); +template<> ::pg_query::AlterTableMoveAllStmt* Arena::CreateMaybeMessage<::pg_query::AlterTableMoveAllStmt>(Arena*); +template<> ::pg_query::AlterTableSpaceOptionsStmt* Arena::CreateMaybeMessage<::pg_query::AlterTableSpaceOptionsStmt>(Arena*); +template<> ::pg_query::AlterTableStmt* Arena::CreateMaybeMessage<::pg_query::AlterTableStmt>(Arena*); +template<> ::pg_query::AlterTypeStmt* Arena::CreateMaybeMessage<::pg_query::AlterTypeStmt>(Arena*); +template<> ::pg_query::AlterUserMappingStmt* Arena::CreateMaybeMessage<::pg_query::AlterUserMappingStmt>(Arena*); +template<> ::pg_query::AlternativeSubPlan* Arena::CreateMaybeMessage<::pg_query::AlternativeSubPlan>(Arena*); +template<> ::pg_query::ArrayCoerceExpr* Arena::CreateMaybeMessage<::pg_query::ArrayCoerceExpr>(Arena*); +template<> ::pg_query::ArrayExpr* Arena::CreateMaybeMessage<::pg_query::ArrayExpr>(Arena*); +template<> ::pg_query::BitString* Arena::CreateMaybeMessage<::pg_query::BitString>(Arena*); +template<> ::pg_query::Bitmapset* Arena::CreateMaybeMessage<::pg_query::Bitmapset>(Arena*); +template<> ::pg_query::BoolExpr* Arena::CreateMaybeMessage<::pg_query::BoolExpr>(Arena*); +template<> ::pg_query::BooleanTest* Arena::CreateMaybeMessage<::pg_query::BooleanTest>(Arena*); +template<> ::pg_query::CallContext* Arena::CreateMaybeMessage<::pg_query::CallContext>(Arena*); +template<> ::pg_query::CallStmt* Arena::CreateMaybeMessage<::pg_query::CallStmt>(Arena*); +template<> ::pg_query::CaseExpr* Arena::CreateMaybeMessage<::pg_query::CaseExpr>(Arena*); +template<> ::pg_query::CaseTestExpr* Arena::CreateMaybeMessage<::pg_query::CaseTestExpr>(Arena*); +template<> ::pg_query::CaseWhen* Arena::CreateMaybeMessage<::pg_query::CaseWhen>(Arena*); +template<> ::pg_query::CheckPointStmt* Arena::CreateMaybeMessage<::pg_query::CheckPointStmt>(Arena*); +template<> ::pg_query::ClosePortalStmt* Arena::CreateMaybeMessage<::pg_query::ClosePortalStmt>(Arena*); +template<> ::pg_query::ClusterStmt* Arena::CreateMaybeMessage<::pg_query::ClusterStmt>(Arena*); +template<> ::pg_query::CoalesceExpr* Arena::CreateMaybeMessage<::pg_query::CoalesceExpr>(Arena*); +template<> ::pg_query::CoerceToDomain* Arena::CreateMaybeMessage<::pg_query::CoerceToDomain>(Arena*); +template<> ::pg_query::CoerceToDomainValue* Arena::CreateMaybeMessage<::pg_query::CoerceToDomainValue>(Arena*); +template<> ::pg_query::CoerceViaIO* Arena::CreateMaybeMessage<::pg_query::CoerceViaIO>(Arena*); +template<> ::pg_query::CollateClause* Arena::CreateMaybeMessage<::pg_query::CollateClause>(Arena*); +template<> ::pg_query::CollateExpr* Arena::CreateMaybeMessage<::pg_query::CollateExpr>(Arena*); +template<> ::pg_query::ColumnDef* Arena::CreateMaybeMessage<::pg_query::ColumnDef>(Arena*); +template<> ::pg_query::ColumnRef* Arena::CreateMaybeMessage<::pg_query::ColumnRef>(Arena*); +template<> ::pg_query::CommentStmt* Arena::CreateMaybeMessage<::pg_query::CommentStmt>(Arena*); +template<> ::pg_query::CommonTableExpr* Arena::CreateMaybeMessage<::pg_query::CommonTableExpr>(Arena*); +template<> ::pg_query::CompositeTypeStmt* Arena::CreateMaybeMessage<::pg_query::CompositeTypeStmt>(Arena*); +template<> ::pg_query::Constraint* Arena::CreateMaybeMessage<::pg_query::Constraint>(Arena*); +template<> ::pg_query::ConstraintsSetStmt* Arena::CreateMaybeMessage<::pg_query::ConstraintsSetStmt>(Arena*); +template<> ::pg_query::ConvertRowtypeExpr* Arena::CreateMaybeMessage<::pg_query::ConvertRowtypeExpr>(Arena*); +template<> ::pg_query::CopyStmt* Arena::CreateMaybeMessage<::pg_query::CopyStmt>(Arena*); +template<> ::pg_query::CreateAmStmt* Arena::CreateMaybeMessage<::pg_query::CreateAmStmt>(Arena*); +template<> ::pg_query::CreateCastStmt* Arena::CreateMaybeMessage<::pg_query::CreateCastStmt>(Arena*); +template<> ::pg_query::CreateConversionStmt* Arena::CreateMaybeMessage<::pg_query::CreateConversionStmt>(Arena*); +template<> ::pg_query::CreateDomainStmt* Arena::CreateMaybeMessage<::pg_query::CreateDomainStmt>(Arena*); +template<> ::pg_query::CreateEnumStmt* Arena::CreateMaybeMessage<::pg_query::CreateEnumStmt>(Arena*); +template<> ::pg_query::CreateEventTrigStmt* Arena::CreateMaybeMessage<::pg_query::CreateEventTrigStmt>(Arena*); +template<> ::pg_query::CreateExtensionStmt* Arena::CreateMaybeMessage<::pg_query::CreateExtensionStmt>(Arena*); +template<> ::pg_query::CreateFdwStmt* Arena::CreateMaybeMessage<::pg_query::CreateFdwStmt>(Arena*); +template<> ::pg_query::CreateForeignServerStmt* Arena::CreateMaybeMessage<::pg_query::CreateForeignServerStmt>(Arena*); +template<> ::pg_query::CreateForeignTableStmt* Arena::CreateMaybeMessage<::pg_query::CreateForeignTableStmt>(Arena*); +template<> ::pg_query::CreateFunctionStmt* Arena::CreateMaybeMessage<::pg_query::CreateFunctionStmt>(Arena*); +template<> ::pg_query::CreateOpClassItem* Arena::CreateMaybeMessage<::pg_query::CreateOpClassItem>(Arena*); +template<> ::pg_query::CreateOpClassStmt* Arena::CreateMaybeMessage<::pg_query::CreateOpClassStmt>(Arena*); +template<> ::pg_query::CreateOpFamilyStmt* Arena::CreateMaybeMessage<::pg_query::CreateOpFamilyStmt>(Arena*); +template<> ::pg_query::CreatePLangStmt* Arena::CreateMaybeMessage<::pg_query::CreatePLangStmt>(Arena*); +template<> ::pg_query::CreatePolicyStmt* Arena::CreateMaybeMessage<::pg_query::CreatePolicyStmt>(Arena*); +template<> ::pg_query::CreatePublicationStmt* Arena::CreateMaybeMessage<::pg_query::CreatePublicationStmt>(Arena*); +template<> ::pg_query::CreateRangeStmt* Arena::CreateMaybeMessage<::pg_query::CreateRangeStmt>(Arena*); +template<> ::pg_query::CreateRoleStmt* Arena::CreateMaybeMessage<::pg_query::CreateRoleStmt>(Arena*); +template<> ::pg_query::CreateSchemaStmt* Arena::CreateMaybeMessage<::pg_query::CreateSchemaStmt>(Arena*); +template<> ::pg_query::CreateSeqStmt* Arena::CreateMaybeMessage<::pg_query::CreateSeqStmt>(Arena*); +template<> ::pg_query::CreateStatsStmt* Arena::CreateMaybeMessage<::pg_query::CreateStatsStmt>(Arena*); +template<> ::pg_query::CreateStmt* Arena::CreateMaybeMessage<::pg_query::CreateStmt>(Arena*); +template<> ::pg_query::CreateSubscriptionStmt* Arena::CreateMaybeMessage<::pg_query::CreateSubscriptionStmt>(Arena*); +template<> ::pg_query::CreateTableAsStmt* Arena::CreateMaybeMessage<::pg_query::CreateTableAsStmt>(Arena*); +template<> ::pg_query::CreateTableSpaceStmt* Arena::CreateMaybeMessage<::pg_query::CreateTableSpaceStmt>(Arena*); +template<> ::pg_query::CreateTransformStmt* Arena::CreateMaybeMessage<::pg_query::CreateTransformStmt>(Arena*); +template<> ::pg_query::CreateTrigStmt* Arena::CreateMaybeMessage<::pg_query::CreateTrigStmt>(Arena*); +template<> ::pg_query::CreateUserMappingStmt* Arena::CreateMaybeMessage<::pg_query::CreateUserMappingStmt>(Arena*); +template<> ::pg_query::CreatedbStmt* Arena::CreateMaybeMessage<::pg_query::CreatedbStmt>(Arena*); +template<> ::pg_query::CurrentOfExpr* Arena::CreateMaybeMessage<::pg_query::CurrentOfExpr>(Arena*); +template<> ::pg_query::DeallocateStmt* Arena::CreateMaybeMessage<::pg_query::DeallocateStmt>(Arena*); +template<> ::pg_query::DeclareCursorStmt* Arena::CreateMaybeMessage<::pg_query::DeclareCursorStmt>(Arena*); +template<> ::pg_query::DefElem* Arena::CreateMaybeMessage<::pg_query::DefElem>(Arena*); +template<> ::pg_query::DefineStmt* Arena::CreateMaybeMessage<::pg_query::DefineStmt>(Arena*); +template<> ::pg_query::DeleteStmt* Arena::CreateMaybeMessage<::pg_query::DeleteStmt>(Arena*); +template<> ::pg_query::DiscardStmt* Arena::CreateMaybeMessage<::pg_query::DiscardStmt>(Arena*); +template<> ::pg_query::DistinctExpr* Arena::CreateMaybeMessage<::pg_query::DistinctExpr>(Arena*); +template<> ::pg_query::DoStmt* Arena::CreateMaybeMessage<::pg_query::DoStmt>(Arena*); +template<> ::pg_query::DropOwnedStmt* Arena::CreateMaybeMessage<::pg_query::DropOwnedStmt>(Arena*); +template<> ::pg_query::DropRoleStmt* Arena::CreateMaybeMessage<::pg_query::DropRoleStmt>(Arena*); +template<> ::pg_query::DropStmt* Arena::CreateMaybeMessage<::pg_query::DropStmt>(Arena*); +template<> ::pg_query::DropSubscriptionStmt* Arena::CreateMaybeMessage<::pg_query::DropSubscriptionStmt>(Arena*); +template<> ::pg_query::DropTableSpaceStmt* Arena::CreateMaybeMessage<::pg_query::DropTableSpaceStmt>(Arena*); +template<> ::pg_query::DropUserMappingStmt* Arena::CreateMaybeMessage<::pg_query::DropUserMappingStmt>(Arena*); +template<> ::pg_query::DropdbStmt* Arena::CreateMaybeMessage<::pg_query::DropdbStmt>(Arena*); +template<> ::pg_query::ExecuteStmt* Arena::CreateMaybeMessage<::pg_query::ExecuteStmt>(Arena*); +template<> ::pg_query::ExplainStmt* Arena::CreateMaybeMessage<::pg_query::ExplainStmt>(Arena*); +template<> ::pg_query::Expr* Arena::CreateMaybeMessage<::pg_query::Expr>(Arena*); +template<> ::pg_query::FetchStmt* Arena::CreateMaybeMessage<::pg_query::FetchStmt>(Arena*); +template<> ::pg_query::FieldSelect* Arena::CreateMaybeMessage<::pg_query::FieldSelect>(Arena*); +template<> ::pg_query::FieldStore* Arena::CreateMaybeMessage<::pg_query::FieldStore>(Arena*); +template<> ::pg_query::Float* Arena::CreateMaybeMessage<::pg_query::Float>(Arena*); +template<> ::pg_query::FromExpr* Arena::CreateMaybeMessage<::pg_query::FromExpr>(Arena*); +template<> ::pg_query::FuncCall* Arena::CreateMaybeMessage<::pg_query::FuncCall>(Arena*); +template<> ::pg_query::FuncExpr* Arena::CreateMaybeMessage<::pg_query::FuncExpr>(Arena*); +template<> ::pg_query::FunctionParameter* Arena::CreateMaybeMessage<::pg_query::FunctionParameter>(Arena*); +template<> ::pg_query::GrantRoleStmt* Arena::CreateMaybeMessage<::pg_query::GrantRoleStmt>(Arena*); +template<> ::pg_query::GrantStmt* Arena::CreateMaybeMessage<::pg_query::GrantStmt>(Arena*); +template<> ::pg_query::GroupingFunc* Arena::CreateMaybeMessage<::pg_query::GroupingFunc>(Arena*); +template<> ::pg_query::GroupingSet* Arena::CreateMaybeMessage<::pg_query::GroupingSet>(Arena*); +template<> ::pg_query::ImportForeignSchemaStmt* Arena::CreateMaybeMessage<::pg_query::ImportForeignSchemaStmt>(Arena*); +template<> ::pg_query::IndexElem* Arena::CreateMaybeMessage<::pg_query::IndexElem>(Arena*); +template<> ::pg_query::IndexStmt* Arena::CreateMaybeMessage<::pg_query::IndexStmt>(Arena*); +template<> ::pg_query::InferClause* Arena::CreateMaybeMessage<::pg_query::InferClause>(Arena*); +template<> ::pg_query::InferenceElem* Arena::CreateMaybeMessage<::pg_query::InferenceElem>(Arena*); +template<> ::pg_query::InlineCodeBlock* Arena::CreateMaybeMessage<::pg_query::InlineCodeBlock>(Arena*); +template<> ::pg_query::InsertStmt* Arena::CreateMaybeMessage<::pg_query::InsertStmt>(Arena*); +template<> ::pg_query::IntList* Arena::CreateMaybeMessage<::pg_query::IntList>(Arena*); +template<> ::pg_query::Integer* Arena::CreateMaybeMessage<::pg_query::Integer>(Arena*); +template<> ::pg_query::IntoClause* Arena::CreateMaybeMessage<::pg_query::IntoClause>(Arena*); +template<> ::pg_query::JoinExpr* Arena::CreateMaybeMessage<::pg_query::JoinExpr>(Arena*); +template<> ::pg_query::List* Arena::CreateMaybeMessage<::pg_query::List>(Arena*); +template<> ::pg_query::ListenStmt* Arena::CreateMaybeMessage<::pg_query::ListenStmt>(Arena*); +template<> ::pg_query::LoadStmt* Arena::CreateMaybeMessage<::pg_query::LoadStmt>(Arena*); +template<> ::pg_query::LockStmt* Arena::CreateMaybeMessage<::pg_query::LockStmt>(Arena*); +template<> ::pg_query::LockingClause* Arena::CreateMaybeMessage<::pg_query::LockingClause>(Arena*); +template<> ::pg_query::MinMaxExpr* Arena::CreateMaybeMessage<::pg_query::MinMaxExpr>(Arena*); +template<> ::pg_query::MultiAssignRef* Arena::CreateMaybeMessage<::pg_query::MultiAssignRef>(Arena*); +template<> ::pg_query::NamedArgExpr* Arena::CreateMaybeMessage<::pg_query::NamedArgExpr>(Arena*); +template<> ::pg_query::NextValueExpr* Arena::CreateMaybeMessage<::pg_query::NextValueExpr>(Arena*); +template<> ::pg_query::Node* Arena::CreateMaybeMessage<::pg_query::Node>(Arena*); +template<> ::pg_query::NotifyStmt* Arena::CreateMaybeMessage<::pg_query::NotifyStmt>(Arena*); +template<> ::pg_query::Null* Arena::CreateMaybeMessage<::pg_query::Null>(Arena*); +template<> ::pg_query::NullIfExpr* Arena::CreateMaybeMessage<::pg_query::NullIfExpr>(Arena*); +template<> ::pg_query::NullTest* Arena::CreateMaybeMessage<::pg_query::NullTest>(Arena*); +template<> ::pg_query::ObjectWithArgs* Arena::CreateMaybeMessage<::pg_query::ObjectWithArgs>(Arena*); +template<> ::pg_query::OidList* Arena::CreateMaybeMessage<::pg_query::OidList>(Arena*); +template<> ::pg_query::OnConflictClause* Arena::CreateMaybeMessage<::pg_query::OnConflictClause>(Arena*); +template<> ::pg_query::OnConflictExpr* Arena::CreateMaybeMessage<::pg_query::OnConflictExpr>(Arena*); +template<> ::pg_query::OpExpr* Arena::CreateMaybeMessage<::pg_query::OpExpr>(Arena*); +template<> ::pg_query::Param* Arena::CreateMaybeMessage<::pg_query::Param>(Arena*); +template<> ::pg_query::ParamRef* Arena::CreateMaybeMessage<::pg_query::ParamRef>(Arena*); +template<> ::pg_query::ParseResult* Arena::CreateMaybeMessage<::pg_query::ParseResult>(Arena*); +template<> ::pg_query::PartitionBoundSpec* Arena::CreateMaybeMessage<::pg_query::PartitionBoundSpec>(Arena*); +template<> ::pg_query::PartitionCmd* Arena::CreateMaybeMessage<::pg_query::PartitionCmd>(Arena*); +template<> ::pg_query::PartitionElem* Arena::CreateMaybeMessage<::pg_query::PartitionElem>(Arena*); +template<> ::pg_query::PartitionRangeDatum* Arena::CreateMaybeMessage<::pg_query::PartitionRangeDatum>(Arena*); +template<> ::pg_query::PartitionSpec* Arena::CreateMaybeMessage<::pg_query::PartitionSpec>(Arena*); +template<> ::pg_query::PrepareStmt* Arena::CreateMaybeMessage<::pg_query::PrepareStmt>(Arena*); +template<> ::pg_query::Query* Arena::CreateMaybeMessage<::pg_query::Query>(Arena*); +template<> ::pg_query::RangeFunction* Arena::CreateMaybeMessage<::pg_query::RangeFunction>(Arena*); +template<> ::pg_query::RangeSubselect* Arena::CreateMaybeMessage<::pg_query::RangeSubselect>(Arena*); +template<> ::pg_query::RangeTableFunc* Arena::CreateMaybeMessage<::pg_query::RangeTableFunc>(Arena*); +template<> ::pg_query::RangeTableFuncCol* Arena::CreateMaybeMessage<::pg_query::RangeTableFuncCol>(Arena*); +template<> ::pg_query::RangeTableSample* Arena::CreateMaybeMessage<::pg_query::RangeTableSample>(Arena*); +template<> ::pg_query::RangeTblEntry* Arena::CreateMaybeMessage<::pg_query::RangeTblEntry>(Arena*); +template<> ::pg_query::RangeTblFunction* Arena::CreateMaybeMessage<::pg_query::RangeTblFunction>(Arena*); +template<> ::pg_query::RangeTblRef* Arena::CreateMaybeMessage<::pg_query::RangeTblRef>(Arena*); +template<> ::pg_query::RangeVar* Arena::CreateMaybeMessage<::pg_query::RangeVar>(Arena*); +template<> ::pg_query::RawStmt* Arena::CreateMaybeMessage<::pg_query::RawStmt>(Arena*); +template<> ::pg_query::ReassignOwnedStmt* Arena::CreateMaybeMessage<::pg_query::ReassignOwnedStmt>(Arena*); +template<> ::pg_query::RefreshMatViewStmt* Arena::CreateMaybeMessage<::pg_query::RefreshMatViewStmt>(Arena*); +template<> ::pg_query::ReindexStmt* Arena::CreateMaybeMessage<::pg_query::ReindexStmt>(Arena*); +template<> ::pg_query::RelabelType* Arena::CreateMaybeMessage<::pg_query::RelabelType>(Arena*); +template<> ::pg_query::RenameStmt* Arena::CreateMaybeMessage<::pg_query::RenameStmt>(Arena*); +template<> ::pg_query::ReplicaIdentityStmt* Arena::CreateMaybeMessage<::pg_query::ReplicaIdentityStmt>(Arena*); +template<> ::pg_query::ResTarget* Arena::CreateMaybeMessage<::pg_query::ResTarget>(Arena*); +template<> ::pg_query::RoleSpec* Arena::CreateMaybeMessage<::pg_query::RoleSpec>(Arena*); +template<> ::pg_query::RowCompareExpr* Arena::CreateMaybeMessage<::pg_query::RowCompareExpr>(Arena*); +template<> ::pg_query::RowExpr* Arena::CreateMaybeMessage<::pg_query::RowExpr>(Arena*); +template<> ::pg_query::RowMarkClause* Arena::CreateMaybeMessage<::pg_query::RowMarkClause>(Arena*); +template<> ::pg_query::RuleStmt* Arena::CreateMaybeMessage<::pg_query::RuleStmt>(Arena*); +template<> ::pg_query::SQLValueFunction* Arena::CreateMaybeMessage<::pg_query::SQLValueFunction>(Arena*); +template<> ::pg_query::ScalarArrayOpExpr* Arena::CreateMaybeMessage<::pg_query::ScalarArrayOpExpr>(Arena*); +template<> ::pg_query::ScanResult* Arena::CreateMaybeMessage<::pg_query::ScanResult>(Arena*); +template<> ::pg_query::ScanToken* Arena::CreateMaybeMessage<::pg_query::ScanToken>(Arena*); +template<> ::pg_query::SecLabelStmt* Arena::CreateMaybeMessage<::pg_query::SecLabelStmt>(Arena*); +template<> ::pg_query::SelectStmt* Arena::CreateMaybeMessage<::pg_query::SelectStmt>(Arena*); +template<> ::pg_query::SetOperationStmt* Arena::CreateMaybeMessage<::pg_query::SetOperationStmt>(Arena*); +template<> ::pg_query::SetToDefault* Arena::CreateMaybeMessage<::pg_query::SetToDefault>(Arena*); +template<> ::pg_query::SortBy* Arena::CreateMaybeMessage<::pg_query::SortBy>(Arena*); +template<> ::pg_query::SortGroupClause* Arena::CreateMaybeMessage<::pg_query::SortGroupClause>(Arena*); +template<> ::pg_query::String* Arena::CreateMaybeMessage<::pg_query::String>(Arena*); +template<> ::pg_query::SubLink* Arena::CreateMaybeMessage<::pg_query::SubLink>(Arena*); +template<> ::pg_query::SubPlan* Arena::CreateMaybeMessage<::pg_query::SubPlan>(Arena*); +template<> ::pg_query::SubscriptingRef* Arena::CreateMaybeMessage<::pg_query::SubscriptingRef>(Arena*); +template<> ::pg_query::TableFunc* Arena::CreateMaybeMessage<::pg_query::TableFunc>(Arena*); +template<> ::pg_query::TableLikeClause* Arena::CreateMaybeMessage<::pg_query::TableLikeClause>(Arena*); +template<> ::pg_query::TableSampleClause* Arena::CreateMaybeMessage<::pg_query::TableSampleClause>(Arena*); +template<> ::pg_query::TargetEntry* Arena::CreateMaybeMessage<::pg_query::TargetEntry>(Arena*); +template<> ::pg_query::TransactionStmt* Arena::CreateMaybeMessage<::pg_query::TransactionStmt>(Arena*); +template<> ::pg_query::TriggerTransition* Arena::CreateMaybeMessage<::pg_query::TriggerTransition>(Arena*); +template<> ::pg_query::TruncateStmt* Arena::CreateMaybeMessage<::pg_query::TruncateStmt>(Arena*); +template<> ::pg_query::TypeCast* Arena::CreateMaybeMessage<::pg_query::TypeCast>(Arena*); +template<> ::pg_query::TypeName* Arena::CreateMaybeMessage<::pg_query::TypeName>(Arena*); +template<> ::pg_query::UnlistenStmt* Arena::CreateMaybeMessage<::pg_query::UnlistenStmt>(Arena*); +template<> ::pg_query::UpdateStmt* Arena::CreateMaybeMessage<::pg_query::UpdateStmt>(Arena*); +template<> ::pg_query::VacuumRelation* Arena::CreateMaybeMessage<::pg_query::VacuumRelation>(Arena*); +template<> ::pg_query::VacuumStmt* Arena::CreateMaybeMessage<::pg_query::VacuumStmt>(Arena*); +template<> ::pg_query::Var* Arena::CreateMaybeMessage<::pg_query::Var>(Arena*); +template<> ::pg_query::VariableSetStmt* Arena::CreateMaybeMessage<::pg_query::VariableSetStmt>(Arena*); +template<> ::pg_query::VariableShowStmt* Arena::CreateMaybeMessage<::pg_query::VariableShowStmt>(Arena*); +template<> ::pg_query::ViewStmt* Arena::CreateMaybeMessage<::pg_query::ViewStmt>(Arena*); +template<> ::pg_query::WindowClause* Arena::CreateMaybeMessage<::pg_query::WindowClause>(Arena*); +template<> ::pg_query::WindowDef* Arena::CreateMaybeMessage<::pg_query::WindowDef>(Arena*); +template<> ::pg_query::WindowFunc* Arena::CreateMaybeMessage<::pg_query::WindowFunc>(Arena*); +template<> ::pg_query::WithCheckOption* Arena::CreateMaybeMessage<::pg_query::WithCheckOption>(Arena*); +template<> ::pg_query::WithClause* Arena::CreateMaybeMessage<::pg_query::WithClause>(Arena*); +template<> ::pg_query::XmlExpr* Arena::CreateMaybeMessage<::pg_query::XmlExpr>(Arena*); +template<> ::pg_query::XmlSerialize* Arena::CreateMaybeMessage<::pg_query::XmlSerialize>(Arena*); +PROTOBUF_NAMESPACE_CLOSE +namespace pg_query { + +enum OverridingKind : int { + OVERRIDING_KIND_UNDEFINED = 0, + OVERRIDING_NOT_SET = 1, + OVERRIDING_USER_VALUE = 2, + OVERRIDING_SYSTEM_VALUE = 3, + OverridingKind_INT_MIN_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::min(), + OverridingKind_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::max() +}; +bool OverridingKind_IsValid(int value); +constexpr OverridingKind OverridingKind_MIN = OVERRIDING_KIND_UNDEFINED; +constexpr OverridingKind OverridingKind_MAX = OVERRIDING_SYSTEM_VALUE; +constexpr int OverridingKind_ARRAYSIZE = OverridingKind_MAX + 1; + +const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* OverridingKind_descriptor(); +template +inline const std::string& OverridingKind_Name(T enum_t_value) { + static_assert(::std::is_same::value || + ::std::is_integral::value, + "Incorrect type passed to function OverridingKind_Name."); + return ::PROTOBUF_NAMESPACE_ID::internal::NameOfEnum( + OverridingKind_descriptor(), enum_t_value); +} +inline bool OverridingKind_Parse( + ::PROTOBUF_NAMESPACE_ID::ConstStringParam name, OverridingKind* value) { + return ::PROTOBUF_NAMESPACE_ID::internal::ParseNamedEnum( + OverridingKind_descriptor(), name, value); +} +enum QuerySource : int { + QUERY_SOURCE_UNDEFINED = 0, + QSRC_ORIGINAL = 1, + QSRC_PARSER = 2, + QSRC_INSTEAD_RULE = 3, + QSRC_QUAL_INSTEAD_RULE = 4, + QSRC_NON_INSTEAD_RULE = 5, + QuerySource_INT_MIN_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::min(), + QuerySource_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::max() +}; +bool QuerySource_IsValid(int value); +constexpr QuerySource QuerySource_MIN = QUERY_SOURCE_UNDEFINED; +constexpr QuerySource QuerySource_MAX = QSRC_NON_INSTEAD_RULE; +constexpr int QuerySource_ARRAYSIZE = QuerySource_MAX + 1; + +const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* QuerySource_descriptor(); +template +inline const std::string& QuerySource_Name(T enum_t_value) { + static_assert(::std::is_same::value || + ::std::is_integral::value, + "Incorrect type passed to function QuerySource_Name."); + return ::PROTOBUF_NAMESPACE_ID::internal::NameOfEnum( + QuerySource_descriptor(), enum_t_value); +} +inline bool QuerySource_Parse( + ::PROTOBUF_NAMESPACE_ID::ConstStringParam name, QuerySource* value) { + return ::PROTOBUF_NAMESPACE_ID::internal::ParseNamedEnum( + QuerySource_descriptor(), name, value); +} +enum SortByDir : int { + SORT_BY_DIR_UNDEFINED = 0, + SORTBY_DEFAULT = 1, + SORTBY_ASC = 2, + SORTBY_DESC = 3, + SORTBY_USING = 4, + SortByDir_INT_MIN_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::min(), + SortByDir_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::max() +}; +bool SortByDir_IsValid(int value); +constexpr SortByDir SortByDir_MIN = SORT_BY_DIR_UNDEFINED; +constexpr SortByDir SortByDir_MAX = SORTBY_USING; +constexpr int SortByDir_ARRAYSIZE = SortByDir_MAX + 1; + +const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* SortByDir_descriptor(); +template +inline const std::string& SortByDir_Name(T enum_t_value) { + static_assert(::std::is_same::value || + ::std::is_integral::value, + "Incorrect type passed to function SortByDir_Name."); + return ::PROTOBUF_NAMESPACE_ID::internal::NameOfEnum( + SortByDir_descriptor(), enum_t_value); +} +inline bool SortByDir_Parse( + ::PROTOBUF_NAMESPACE_ID::ConstStringParam name, SortByDir* value) { + return ::PROTOBUF_NAMESPACE_ID::internal::ParseNamedEnum( + SortByDir_descriptor(), name, value); +} +enum SortByNulls : int { + SORT_BY_NULLS_UNDEFINED = 0, + SORTBY_NULLS_DEFAULT = 1, + SORTBY_NULLS_FIRST = 2, + SORTBY_NULLS_LAST = 3, + SortByNulls_INT_MIN_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::min(), + SortByNulls_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::max() +}; +bool SortByNulls_IsValid(int value); +constexpr SortByNulls SortByNulls_MIN = SORT_BY_NULLS_UNDEFINED; +constexpr SortByNulls SortByNulls_MAX = SORTBY_NULLS_LAST; +constexpr int SortByNulls_ARRAYSIZE = SortByNulls_MAX + 1; + +const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* SortByNulls_descriptor(); +template +inline const std::string& SortByNulls_Name(T enum_t_value) { + static_assert(::std::is_same::value || + ::std::is_integral::value, + "Incorrect type passed to function SortByNulls_Name."); + return ::PROTOBUF_NAMESPACE_ID::internal::NameOfEnum( + SortByNulls_descriptor(), enum_t_value); +} +inline bool SortByNulls_Parse( + ::PROTOBUF_NAMESPACE_ID::ConstStringParam name, SortByNulls* value) { + return ::PROTOBUF_NAMESPACE_ID::internal::ParseNamedEnum( + SortByNulls_descriptor(), name, value); +} +enum A_Expr_Kind : int { + A_EXPR_KIND_UNDEFINED = 0, + AEXPR_OP = 1, + AEXPR_OP_ANY = 2, + AEXPR_OP_ALL = 3, + AEXPR_DISTINCT = 4, + AEXPR_NOT_DISTINCT = 5, + AEXPR_NULLIF = 6, + AEXPR_OF = 7, + AEXPR_IN = 8, + AEXPR_LIKE = 9, + AEXPR_ILIKE = 10, + AEXPR_SIMILAR = 11, + AEXPR_BETWEEN = 12, + AEXPR_NOT_BETWEEN = 13, + AEXPR_BETWEEN_SYM = 14, + AEXPR_NOT_BETWEEN_SYM = 15, + AEXPR_PAREN = 16, + A_Expr_Kind_INT_MIN_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::min(), + A_Expr_Kind_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::max() +}; +bool A_Expr_Kind_IsValid(int value); +constexpr A_Expr_Kind A_Expr_Kind_MIN = A_EXPR_KIND_UNDEFINED; +constexpr A_Expr_Kind A_Expr_Kind_MAX = AEXPR_PAREN; +constexpr int A_Expr_Kind_ARRAYSIZE = A_Expr_Kind_MAX + 1; + +const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* A_Expr_Kind_descriptor(); +template +inline const std::string& A_Expr_Kind_Name(T enum_t_value) { + static_assert(::std::is_same::value || + ::std::is_integral::value, + "Incorrect type passed to function A_Expr_Kind_Name."); + return ::PROTOBUF_NAMESPACE_ID::internal::NameOfEnum( + A_Expr_Kind_descriptor(), enum_t_value); +} +inline bool A_Expr_Kind_Parse( + ::PROTOBUF_NAMESPACE_ID::ConstStringParam name, A_Expr_Kind* value) { + return ::PROTOBUF_NAMESPACE_ID::internal::ParseNamedEnum( + A_Expr_Kind_descriptor(), name, value); +} +enum RoleSpecType : int { + ROLE_SPEC_TYPE_UNDEFINED = 0, + ROLESPEC_CSTRING = 1, + ROLESPEC_CURRENT_USER = 2, + ROLESPEC_SESSION_USER = 3, + ROLESPEC_PUBLIC = 4, + RoleSpecType_INT_MIN_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::min(), + RoleSpecType_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::max() +}; +bool RoleSpecType_IsValid(int value); +constexpr RoleSpecType RoleSpecType_MIN = ROLE_SPEC_TYPE_UNDEFINED; +constexpr RoleSpecType RoleSpecType_MAX = ROLESPEC_PUBLIC; +constexpr int RoleSpecType_ARRAYSIZE = RoleSpecType_MAX + 1; + +const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* RoleSpecType_descriptor(); +template +inline const std::string& RoleSpecType_Name(T enum_t_value) { + static_assert(::std::is_same::value || + ::std::is_integral::value, + "Incorrect type passed to function RoleSpecType_Name."); + return ::PROTOBUF_NAMESPACE_ID::internal::NameOfEnum( + RoleSpecType_descriptor(), enum_t_value); +} +inline bool RoleSpecType_Parse( + ::PROTOBUF_NAMESPACE_ID::ConstStringParam name, RoleSpecType* value) { + return ::PROTOBUF_NAMESPACE_ID::internal::ParseNamedEnum( + RoleSpecType_descriptor(), name, value); +} +enum TableLikeOption : int { + TABLE_LIKE_OPTION_UNDEFINED = 0, + CREATE_TABLE_LIKE_COMMENTS = 1, + CREATE_TABLE_LIKE_CONSTRAINTS = 2, + CREATE_TABLE_LIKE_DEFAULTS = 3, + CREATE_TABLE_LIKE_GENERATED = 4, + CREATE_TABLE_LIKE_IDENTITY = 5, + CREATE_TABLE_LIKE_INDEXES = 6, + CREATE_TABLE_LIKE_STATISTICS = 7, + CREATE_TABLE_LIKE_STORAGE = 8, + CREATE_TABLE_LIKE_ALL = 9, + TableLikeOption_INT_MIN_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::min(), + TableLikeOption_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::max() +}; +bool TableLikeOption_IsValid(int value); +constexpr TableLikeOption TableLikeOption_MIN = TABLE_LIKE_OPTION_UNDEFINED; +constexpr TableLikeOption TableLikeOption_MAX = CREATE_TABLE_LIKE_ALL; +constexpr int TableLikeOption_ARRAYSIZE = TableLikeOption_MAX + 1; + +const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* TableLikeOption_descriptor(); +template +inline const std::string& TableLikeOption_Name(T enum_t_value) { + static_assert(::std::is_same::value || + ::std::is_integral::value, + "Incorrect type passed to function TableLikeOption_Name."); + return ::PROTOBUF_NAMESPACE_ID::internal::NameOfEnum( + TableLikeOption_descriptor(), enum_t_value); +} +inline bool TableLikeOption_Parse( + ::PROTOBUF_NAMESPACE_ID::ConstStringParam name, TableLikeOption* value) { + return ::PROTOBUF_NAMESPACE_ID::internal::ParseNamedEnum( + TableLikeOption_descriptor(), name, value); +} +enum DefElemAction : int { + DEF_ELEM_ACTION_UNDEFINED = 0, + DEFELEM_UNSPEC = 1, + DEFELEM_SET = 2, + DEFELEM_ADD = 3, + DEFELEM_DROP = 4, + DefElemAction_INT_MIN_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::min(), + DefElemAction_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::max() +}; +bool DefElemAction_IsValid(int value); +constexpr DefElemAction DefElemAction_MIN = DEF_ELEM_ACTION_UNDEFINED; +constexpr DefElemAction DefElemAction_MAX = DEFELEM_DROP; +constexpr int DefElemAction_ARRAYSIZE = DefElemAction_MAX + 1; + +const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* DefElemAction_descriptor(); +template +inline const std::string& DefElemAction_Name(T enum_t_value) { + static_assert(::std::is_same::value || + ::std::is_integral::value, + "Incorrect type passed to function DefElemAction_Name."); + return ::PROTOBUF_NAMESPACE_ID::internal::NameOfEnum( + DefElemAction_descriptor(), enum_t_value); +} +inline bool DefElemAction_Parse( + ::PROTOBUF_NAMESPACE_ID::ConstStringParam name, DefElemAction* value) { + return ::PROTOBUF_NAMESPACE_ID::internal::ParseNamedEnum( + DefElemAction_descriptor(), name, value); +} +enum PartitionRangeDatumKind : int { + PARTITION_RANGE_DATUM_KIND_UNDEFINED = 0, + PARTITION_RANGE_DATUM_MINVALUE = 1, + PARTITION_RANGE_DATUM_VALUE = 2, + PARTITION_RANGE_DATUM_MAXVALUE = 3, + PartitionRangeDatumKind_INT_MIN_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::min(), + PartitionRangeDatumKind_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::max() +}; +bool PartitionRangeDatumKind_IsValid(int value); +constexpr PartitionRangeDatumKind PartitionRangeDatumKind_MIN = PARTITION_RANGE_DATUM_KIND_UNDEFINED; +constexpr PartitionRangeDatumKind PartitionRangeDatumKind_MAX = PARTITION_RANGE_DATUM_MAXVALUE; +constexpr int PartitionRangeDatumKind_ARRAYSIZE = PartitionRangeDatumKind_MAX + 1; + +const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* PartitionRangeDatumKind_descriptor(); +template +inline const std::string& PartitionRangeDatumKind_Name(T enum_t_value) { + static_assert(::std::is_same::value || + ::std::is_integral::value, + "Incorrect type passed to function PartitionRangeDatumKind_Name."); + return ::PROTOBUF_NAMESPACE_ID::internal::NameOfEnum( + PartitionRangeDatumKind_descriptor(), enum_t_value); +} +inline bool PartitionRangeDatumKind_Parse( + ::PROTOBUF_NAMESPACE_ID::ConstStringParam name, PartitionRangeDatumKind* value) { + return ::PROTOBUF_NAMESPACE_ID::internal::ParseNamedEnum( + PartitionRangeDatumKind_descriptor(), name, value); +} +enum RTEKind : int { + RTEKIND_UNDEFINED = 0, + RTE_RELATION = 1, + RTE_SUBQUERY = 2, + RTE_JOIN = 3, + RTE_FUNCTION = 4, + RTE_TABLEFUNC = 5, + RTE_VALUES = 6, + RTE_CTE = 7, + RTE_NAMEDTUPLESTORE = 8, + RTE_RESULT = 9, + RTEKind_INT_MIN_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::min(), + RTEKind_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::max() +}; +bool RTEKind_IsValid(int value); +constexpr RTEKind RTEKind_MIN = RTEKIND_UNDEFINED; +constexpr RTEKind RTEKind_MAX = RTE_RESULT; +constexpr int RTEKind_ARRAYSIZE = RTEKind_MAX + 1; + +const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* RTEKind_descriptor(); +template +inline const std::string& RTEKind_Name(T enum_t_value) { + static_assert(::std::is_same::value || + ::std::is_integral::value, + "Incorrect type passed to function RTEKind_Name."); + return ::PROTOBUF_NAMESPACE_ID::internal::NameOfEnum( + RTEKind_descriptor(), enum_t_value); +} +inline bool RTEKind_Parse( + ::PROTOBUF_NAMESPACE_ID::ConstStringParam name, RTEKind* value) { + return ::PROTOBUF_NAMESPACE_ID::internal::ParseNamedEnum( + RTEKind_descriptor(), name, value); +} +enum WCOKind : int { + WCOKIND_UNDEFINED = 0, + WCO_VIEW_CHECK = 1, + WCO_RLS_INSERT_CHECK = 2, + WCO_RLS_UPDATE_CHECK = 3, + WCO_RLS_CONFLICT_CHECK = 4, + WCOKind_INT_MIN_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::min(), + WCOKind_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::max() +}; +bool WCOKind_IsValid(int value); +constexpr WCOKind WCOKind_MIN = WCOKIND_UNDEFINED; +constexpr WCOKind WCOKind_MAX = WCO_RLS_CONFLICT_CHECK; +constexpr int WCOKind_ARRAYSIZE = WCOKind_MAX + 1; + +const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* WCOKind_descriptor(); +template +inline const std::string& WCOKind_Name(T enum_t_value) { + static_assert(::std::is_same::value || + ::std::is_integral::value, + "Incorrect type passed to function WCOKind_Name."); + return ::PROTOBUF_NAMESPACE_ID::internal::NameOfEnum( + WCOKind_descriptor(), enum_t_value); +} +inline bool WCOKind_Parse( + ::PROTOBUF_NAMESPACE_ID::ConstStringParam name, WCOKind* value) { + return ::PROTOBUF_NAMESPACE_ID::internal::ParseNamedEnum( + WCOKind_descriptor(), name, value); +} +enum GroupingSetKind : int { + GROUPING_SET_KIND_UNDEFINED = 0, + GROUPING_SET_EMPTY = 1, + GROUPING_SET_SIMPLE = 2, + GROUPING_SET_ROLLUP = 3, + GROUPING_SET_CUBE = 4, + GROUPING_SET_SETS = 5, + GroupingSetKind_INT_MIN_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::min(), + GroupingSetKind_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::max() +}; +bool GroupingSetKind_IsValid(int value); +constexpr GroupingSetKind GroupingSetKind_MIN = GROUPING_SET_KIND_UNDEFINED; +constexpr GroupingSetKind GroupingSetKind_MAX = GROUPING_SET_SETS; +constexpr int GroupingSetKind_ARRAYSIZE = GroupingSetKind_MAX + 1; + +const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* GroupingSetKind_descriptor(); +template +inline const std::string& GroupingSetKind_Name(T enum_t_value) { + static_assert(::std::is_same::value || + ::std::is_integral::value, + "Incorrect type passed to function GroupingSetKind_Name."); + return ::PROTOBUF_NAMESPACE_ID::internal::NameOfEnum( + GroupingSetKind_descriptor(), enum_t_value); +} +inline bool GroupingSetKind_Parse( + ::PROTOBUF_NAMESPACE_ID::ConstStringParam name, GroupingSetKind* value) { + return ::PROTOBUF_NAMESPACE_ID::internal::ParseNamedEnum( + GroupingSetKind_descriptor(), name, value); +} +enum CTEMaterialize : int { + CTEMATERIALIZE_UNDEFINED = 0, + CTEMaterializeDefault = 1, + CTEMaterializeAlways = 2, + CTEMaterializeNever = 3, + CTEMaterialize_INT_MIN_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::min(), + CTEMaterialize_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::max() +}; +bool CTEMaterialize_IsValid(int value); +constexpr CTEMaterialize CTEMaterialize_MIN = CTEMATERIALIZE_UNDEFINED; +constexpr CTEMaterialize CTEMaterialize_MAX = CTEMaterializeNever; +constexpr int CTEMaterialize_ARRAYSIZE = CTEMaterialize_MAX + 1; + +const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* CTEMaterialize_descriptor(); +template +inline const std::string& CTEMaterialize_Name(T enum_t_value) { + static_assert(::std::is_same::value || + ::std::is_integral::value, + "Incorrect type passed to function CTEMaterialize_Name."); + return ::PROTOBUF_NAMESPACE_ID::internal::NameOfEnum( + CTEMaterialize_descriptor(), enum_t_value); +} +inline bool CTEMaterialize_Parse( + ::PROTOBUF_NAMESPACE_ID::ConstStringParam name, CTEMaterialize* value) { + return ::PROTOBUF_NAMESPACE_ID::internal::ParseNamedEnum( + CTEMaterialize_descriptor(), name, value); +} +enum SetOperation : int { + SET_OPERATION_UNDEFINED = 0, + SETOP_NONE = 1, + SETOP_UNION = 2, + SETOP_INTERSECT = 3, + SETOP_EXCEPT = 4, + SetOperation_INT_MIN_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::min(), + SetOperation_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::max() +}; +bool SetOperation_IsValid(int value); +constexpr SetOperation SetOperation_MIN = SET_OPERATION_UNDEFINED; +constexpr SetOperation SetOperation_MAX = SETOP_EXCEPT; +constexpr int SetOperation_ARRAYSIZE = SetOperation_MAX + 1; + +const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* SetOperation_descriptor(); +template +inline const std::string& SetOperation_Name(T enum_t_value) { + static_assert(::std::is_same::value || + ::std::is_integral::value, + "Incorrect type passed to function SetOperation_Name."); + return ::PROTOBUF_NAMESPACE_ID::internal::NameOfEnum( + SetOperation_descriptor(), enum_t_value); +} +inline bool SetOperation_Parse( + ::PROTOBUF_NAMESPACE_ID::ConstStringParam name, SetOperation* value) { + return ::PROTOBUF_NAMESPACE_ID::internal::ParseNamedEnum( + SetOperation_descriptor(), name, value); +} +enum ObjectType : int { + OBJECT_TYPE_UNDEFINED = 0, + OBJECT_ACCESS_METHOD = 1, + OBJECT_AGGREGATE = 2, + OBJECT_AMOP = 3, + OBJECT_AMPROC = 4, + OBJECT_ATTRIBUTE = 5, + OBJECT_CAST = 6, + OBJECT_COLUMN = 7, + OBJECT_COLLATION = 8, + OBJECT_CONVERSION = 9, + OBJECT_DATABASE = 10, + OBJECT_DEFAULT = 11, + OBJECT_DEFACL = 12, + OBJECT_DOMAIN = 13, + OBJECT_DOMCONSTRAINT = 14, + OBJECT_EVENT_TRIGGER = 15, + OBJECT_EXTENSION = 16, + OBJECT_FDW = 17, + OBJECT_FOREIGN_SERVER = 18, + OBJECT_FOREIGN_TABLE = 19, + OBJECT_FUNCTION = 20, + OBJECT_INDEX = 21, + OBJECT_LANGUAGE = 22, + OBJECT_LARGEOBJECT = 23, + OBJECT_MATVIEW = 24, + OBJECT_OPCLASS = 25, + OBJECT_OPERATOR = 26, + OBJECT_OPFAMILY = 27, + OBJECT_POLICY = 28, + OBJECT_PROCEDURE = 29, + OBJECT_PUBLICATION = 30, + OBJECT_PUBLICATION_REL = 31, + OBJECT_ROLE = 32, + OBJECT_ROUTINE = 33, + OBJECT_RULE = 34, + OBJECT_SCHEMA = 35, + OBJECT_SEQUENCE = 36, + OBJECT_SUBSCRIPTION = 37, + OBJECT_STATISTIC_EXT = 38, + OBJECT_TABCONSTRAINT = 39, + OBJECT_TABLE = 40, + OBJECT_TABLESPACE = 41, + OBJECT_TRANSFORM = 42, + OBJECT_TRIGGER = 43, + OBJECT_TSCONFIGURATION = 44, + OBJECT_TSDICTIONARY = 45, + OBJECT_TSPARSER = 46, + OBJECT_TSTEMPLATE = 47, + OBJECT_TYPE = 48, + OBJECT_USER_MAPPING = 49, + OBJECT_VIEW = 50, + ObjectType_INT_MIN_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::min(), + ObjectType_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::max() +}; +bool ObjectType_IsValid(int value); +constexpr ObjectType ObjectType_MIN = OBJECT_TYPE_UNDEFINED; +constexpr ObjectType ObjectType_MAX = OBJECT_VIEW; +constexpr int ObjectType_ARRAYSIZE = ObjectType_MAX + 1; + +const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* ObjectType_descriptor(); +template +inline const std::string& ObjectType_Name(T enum_t_value) { + static_assert(::std::is_same::value || + ::std::is_integral::value, + "Incorrect type passed to function ObjectType_Name."); + return ::PROTOBUF_NAMESPACE_ID::internal::NameOfEnum( + ObjectType_descriptor(), enum_t_value); +} +inline bool ObjectType_Parse( + ::PROTOBUF_NAMESPACE_ID::ConstStringParam name, ObjectType* value) { + return ::PROTOBUF_NAMESPACE_ID::internal::ParseNamedEnum( + ObjectType_descriptor(), name, value); +} +enum DropBehavior : int { + DROP_BEHAVIOR_UNDEFINED = 0, + DROP_RESTRICT = 1, + DROP_CASCADE = 2, + DropBehavior_INT_MIN_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::min(), + DropBehavior_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::max() +}; +bool DropBehavior_IsValid(int value); +constexpr DropBehavior DropBehavior_MIN = DROP_BEHAVIOR_UNDEFINED; +constexpr DropBehavior DropBehavior_MAX = DROP_CASCADE; +constexpr int DropBehavior_ARRAYSIZE = DropBehavior_MAX + 1; + +const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* DropBehavior_descriptor(); +template +inline const std::string& DropBehavior_Name(T enum_t_value) { + static_assert(::std::is_same::value || + ::std::is_integral::value, + "Incorrect type passed to function DropBehavior_Name."); + return ::PROTOBUF_NAMESPACE_ID::internal::NameOfEnum( + DropBehavior_descriptor(), enum_t_value); +} +inline bool DropBehavior_Parse( + ::PROTOBUF_NAMESPACE_ID::ConstStringParam name, DropBehavior* value) { + return ::PROTOBUF_NAMESPACE_ID::internal::ParseNamedEnum( + DropBehavior_descriptor(), name, value); +} +enum AlterTableType : int { + ALTER_TABLE_TYPE_UNDEFINED = 0, + AT_AddColumn = 1, + AT_AddColumnRecurse = 2, + AT_AddColumnToView = 3, + AT_ColumnDefault = 4, + AT_CookedColumnDefault = 5, + AT_DropNotNull = 6, + AT_SetNotNull = 7, + AT_DropExpression = 8, + AT_CheckNotNull = 9, + AT_SetStatistics = 10, + AT_SetOptions = 11, + AT_ResetOptions = 12, + AT_SetStorage = 13, + AT_DropColumn = 14, + AT_DropColumnRecurse = 15, + AT_AddIndex = 16, + AT_ReAddIndex = 17, + AT_AddConstraint = 18, + AT_AddConstraintRecurse = 19, + AT_ReAddConstraint = 20, + AT_ReAddDomainConstraint = 21, + AT_AlterConstraint = 22, + AT_ValidateConstraint = 23, + AT_ValidateConstraintRecurse = 24, + AT_AddIndexConstraint = 25, + AT_DropConstraint = 26, + AT_DropConstraintRecurse = 27, + AT_ReAddComment = 28, + AT_AlterColumnType = 29, + AT_AlterColumnGenericOptions = 30, + AT_ChangeOwner = 31, + AT_ClusterOn = 32, + AT_DropCluster = 33, + AT_SetLogged = 34, + AT_SetUnLogged = 35, + AT_DropOids = 36, + AT_SetTableSpace = 37, + AT_SetRelOptions = 38, + AT_ResetRelOptions = 39, + AT_ReplaceRelOptions = 40, + AT_EnableTrig = 41, + AT_EnableAlwaysTrig = 42, + AT_EnableReplicaTrig = 43, + AT_DisableTrig = 44, + AT_EnableTrigAll = 45, + AT_DisableTrigAll = 46, + AT_EnableTrigUser = 47, + AT_DisableTrigUser = 48, + AT_EnableRule = 49, + AT_EnableAlwaysRule = 50, + AT_EnableReplicaRule = 51, + AT_DisableRule = 52, + AT_AddInherit = 53, + AT_DropInherit = 54, + AT_AddOf = 55, + AT_DropOf = 56, + AT_ReplicaIdentity = 57, + AT_EnableRowSecurity = 58, + AT_DisableRowSecurity = 59, + AT_ForceRowSecurity = 60, + AT_NoForceRowSecurity = 61, + AT_GenericOptions = 62, + AT_AttachPartition = 63, + AT_DetachPartition = 64, + AT_AddIdentity = 65, + AT_SetIdentity = 66, + AT_DropIdentity = 67, + AlterTableType_INT_MIN_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::min(), + AlterTableType_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::max() +}; +bool AlterTableType_IsValid(int value); +constexpr AlterTableType AlterTableType_MIN = ALTER_TABLE_TYPE_UNDEFINED; +constexpr AlterTableType AlterTableType_MAX = AT_DropIdentity; +constexpr int AlterTableType_ARRAYSIZE = AlterTableType_MAX + 1; + +const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* AlterTableType_descriptor(); +template +inline const std::string& AlterTableType_Name(T enum_t_value) { + static_assert(::std::is_same::value || + ::std::is_integral::value, + "Incorrect type passed to function AlterTableType_Name."); + return ::PROTOBUF_NAMESPACE_ID::internal::NameOfEnum( + AlterTableType_descriptor(), enum_t_value); +} +inline bool AlterTableType_Parse( + ::PROTOBUF_NAMESPACE_ID::ConstStringParam name, AlterTableType* value) { + return ::PROTOBUF_NAMESPACE_ID::internal::ParseNamedEnum( + AlterTableType_descriptor(), name, value); +} +enum GrantTargetType : int { + GRANT_TARGET_TYPE_UNDEFINED = 0, + ACL_TARGET_OBJECT = 1, + ACL_TARGET_ALL_IN_SCHEMA = 2, + ACL_TARGET_DEFAULTS = 3, + GrantTargetType_INT_MIN_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::min(), + GrantTargetType_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::max() +}; +bool GrantTargetType_IsValid(int value); +constexpr GrantTargetType GrantTargetType_MIN = GRANT_TARGET_TYPE_UNDEFINED; +constexpr GrantTargetType GrantTargetType_MAX = ACL_TARGET_DEFAULTS; +constexpr int GrantTargetType_ARRAYSIZE = GrantTargetType_MAX + 1; + +const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* GrantTargetType_descriptor(); +template +inline const std::string& GrantTargetType_Name(T enum_t_value) { + static_assert(::std::is_same::value || + ::std::is_integral::value, + "Incorrect type passed to function GrantTargetType_Name."); + return ::PROTOBUF_NAMESPACE_ID::internal::NameOfEnum( + GrantTargetType_descriptor(), enum_t_value); +} +inline bool GrantTargetType_Parse( + ::PROTOBUF_NAMESPACE_ID::ConstStringParam name, GrantTargetType* value) { + return ::PROTOBUF_NAMESPACE_ID::internal::ParseNamedEnum( + GrantTargetType_descriptor(), name, value); +} +enum VariableSetKind : int { + VARIABLE_SET_KIND_UNDEFINED = 0, + VAR_SET_VALUE = 1, + VAR_SET_DEFAULT = 2, + VAR_SET_CURRENT = 3, + VAR_SET_MULTI = 4, + VAR_RESET = 5, + VAR_RESET_ALL = 6, + VariableSetKind_INT_MIN_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::min(), + VariableSetKind_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::max() +}; +bool VariableSetKind_IsValid(int value); +constexpr VariableSetKind VariableSetKind_MIN = VARIABLE_SET_KIND_UNDEFINED; +constexpr VariableSetKind VariableSetKind_MAX = VAR_RESET_ALL; +constexpr int VariableSetKind_ARRAYSIZE = VariableSetKind_MAX + 1; + +const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* VariableSetKind_descriptor(); +template +inline const std::string& VariableSetKind_Name(T enum_t_value) { + static_assert(::std::is_same::value || + ::std::is_integral::value, + "Incorrect type passed to function VariableSetKind_Name."); + return ::PROTOBUF_NAMESPACE_ID::internal::NameOfEnum( + VariableSetKind_descriptor(), enum_t_value); +} +inline bool VariableSetKind_Parse( + ::PROTOBUF_NAMESPACE_ID::ConstStringParam name, VariableSetKind* value) { + return ::PROTOBUF_NAMESPACE_ID::internal::ParseNamedEnum( + VariableSetKind_descriptor(), name, value); +} +enum ConstrType : int { + CONSTR_TYPE_UNDEFINED = 0, + CONSTR_NULL = 1, + CONSTR_NOTNULL = 2, + CONSTR_DEFAULT = 3, + CONSTR_IDENTITY = 4, + CONSTR_GENERATED = 5, + CONSTR_CHECK = 6, + CONSTR_PRIMARY = 7, + CONSTR_UNIQUE = 8, + CONSTR_EXCLUSION = 9, + CONSTR_FOREIGN = 10, + CONSTR_ATTR_DEFERRABLE = 11, + CONSTR_ATTR_NOT_DEFERRABLE = 12, + CONSTR_ATTR_DEFERRED = 13, + CONSTR_ATTR_IMMEDIATE = 14, + ConstrType_INT_MIN_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::min(), + ConstrType_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::max() +}; +bool ConstrType_IsValid(int value); +constexpr ConstrType ConstrType_MIN = CONSTR_TYPE_UNDEFINED; +constexpr ConstrType ConstrType_MAX = CONSTR_ATTR_IMMEDIATE; +constexpr int ConstrType_ARRAYSIZE = ConstrType_MAX + 1; + +const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* ConstrType_descriptor(); +template +inline const std::string& ConstrType_Name(T enum_t_value) { + static_assert(::std::is_same::value || + ::std::is_integral::value, + "Incorrect type passed to function ConstrType_Name."); + return ::PROTOBUF_NAMESPACE_ID::internal::NameOfEnum( + ConstrType_descriptor(), enum_t_value); +} +inline bool ConstrType_Parse( + ::PROTOBUF_NAMESPACE_ID::ConstStringParam name, ConstrType* value) { + return ::PROTOBUF_NAMESPACE_ID::internal::ParseNamedEnum( + ConstrType_descriptor(), name, value); +} +enum ImportForeignSchemaType : int { + IMPORT_FOREIGN_SCHEMA_TYPE_UNDEFINED = 0, + FDW_IMPORT_SCHEMA_ALL = 1, + FDW_IMPORT_SCHEMA_LIMIT_TO = 2, + FDW_IMPORT_SCHEMA_EXCEPT = 3, + ImportForeignSchemaType_INT_MIN_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::min(), + ImportForeignSchemaType_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::max() +}; +bool ImportForeignSchemaType_IsValid(int value); +constexpr ImportForeignSchemaType ImportForeignSchemaType_MIN = IMPORT_FOREIGN_SCHEMA_TYPE_UNDEFINED; +constexpr ImportForeignSchemaType ImportForeignSchemaType_MAX = FDW_IMPORT_SCHEMA_EXCEPT; +constexpr int ImportForeignSchemaType_ARRAYSIZE = ImportForeignSchemaType_MAX + 1; + +const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* ImportForeignSchemaType_descriptor(); +template +inline const std::string& ImportForeignSchemaType_Name(T enum_t_value) { + static_assert(::std::is_same::value || + ::std::is_integral::value, + "Incorrect type passed to function ImportForeignSchemaType_Name."); + return ::PROTOBUF_NAMESPACE_ID::internal::NameOfEnum( + ImportForeignSchemaType_descriptor(), enum_t_value); +} +inline bool ImportForeignSchemaType_Parse( + ::PROTOBUF_NAMESPACE_ID::ConstStringParam name, ImportForeignSchemaType* value) { + return ::PROTOBUF_NAMESPACE_ID::internal::ParseNamedEnum( + ImportForeignSchemaType_descriptor(), name, value); +} +enum RoleStmtType : int { + ROLE_STMT_TYPE_UNDEFINED = 0, + ROLESTMT_ROLE = 1, + ROLESTMT_USER = 2, + ROLESTMT_GROUP = 3, + RoleStmtType_INT_MIN_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::min(), + RoleStmtType_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::max() +}; +bool RoleStmtType_IsValid(int value); +constexpr RoleStmtType RoleStmtType_MIN = ROLE_STMT_TYPE_UNDEFINED; +constexpr RoleStmtType RoleStmtType_MAX = ROLESTMT_GROUP; +constexpr int RoleStmtType_ARRAYSIZE = RoleStmtType_MAX + 1; + +const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* RoleStmtType_descriptor(); +template +inline const std::string& RoleStmtType_Name(T enum_t_value) { + static_assert(::std::is_same::value || + ::std::is_integral::value, + "Incorrect type passed to function RoleStmtType_Name."); + return ::PROTOBUF_NAMESPACE_ID::internal::NameOfEnum( + RoleStmtType_descriptor(), enum_t_value); +} +inline bool RoleStmtType_Parse( + ::PROTOBUF_NAMESPACE_ID::ConstStringParam name, RoleStmtType* value) { + return ::PROTOBUF_NAMESPACE_ID::internal::ParseNamedEnum( + RoleStmtType_descriptor(), name, value); +} +enum FetchDirection : int { + FETCH_DIRECTION_UNDEFINED = 0, + FETCH_FORWARD = 1, + FETCH_BACKWARD = 2, + FETCH_ABSOLUTE = 3, + FETCH_RELATIVE = 4, + FetchDirection_INT_MIN_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::min(), + FetchDirection_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::max() +}; +bool FetchDirection_IsValid(int value); +constexpr FetchDirection FetchDirection_MIN = FETCH_DIRECTION_UNDEFINED; +constexpr FetchDirection FetchDirection_MAX = FETCH_RELATIVE; +constexpr int FetchDirection_ARRAYSIZE = FetchDirection_MAX + 1; + +const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* FetchDirection_descriptor(); +template +inline const std::string& FetchDirection_Name(T enum_t_value) { + static_assert(::std::is_same::value || + ::std::is_integral::value, + "Incorrect type passed to function FetchDirection_Name."); + return ::PROTOBUF_NAMESPACE_ID::internal::NameOfEnum( + FetchDirection_descriptor(), enum_t_value); +} +inline bool FetchDirection_Parse( + ::PROTOBUF_NAMESPACE_ID::ConstStringParam name, FetchDirection* value) { + return ::PROTOBUF_NAMESPACE_ID::internal::ParseNamedEnum( + FetchDirection_descriptor(), name, value); +} +enum FunctionParameterMode : int { + FUNCTION_PARAMETER_MODE_UNDEFINED = 0, + FUNC_PARAM_IN = 1, + FUNC_PARAM_OUT = 2, + FUNC_PARAM_INOUT = 3, + FUNC_PARAM_VARIADIC = 4, + FUNC_PARAM_TABLE = 5, + FunctionParameterMode_INT_MIN_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::min(), + FunctionParameterMode_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::max() +}; +bool FunctionParameterMode_IsValid(int value); +constexpr FunctionParameterMode FunctionParameterMode_MIN = FUNCTION_PARAMETER_MODE_UNDEFINED; +constexpr FunctionParameterMode FunctionParameterMode_MAX = FUNC_PARAM_TABLE; +constexpr int FunctionParameterMode_ARRAYSIZE = FunctionParameterMode_MAX + 1; + +const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* FunctionParameterMode_descriptor(); +template +inline const std::string& FunctionParameterMode_Name(T enum_t_value) { + static_assert(::std::is_same::value || + ::std::is_integral::value, + "Incorrect type passed to function FunctionParameterMode_Name."); + return ::PROTOBUF_NAMESPACE_ID::internal::NameOfEnum( + FunctionParameterMode_descriptor(), enum_t_value); +} +inline bool FunctionParameterMode_Parse( + ::PROTOBUF_NAMESPACE_ID::ConstStringParam name, FunctionParameterMode* value) { + return ::PROTOBUF_NAMESPACE_ID::internal::ParseNamedEnum( + FunctionParameterMode_descriptor(), name, value); +} +enum TransactionStmtKind : int { + TRANSACTION_STMT_KIND_UNDEFINED = 0, + TRANS_STMT_BEGIN = 1, + TRANS_STMT_START = 2, + TRANS_STMT_COMMIT = 3, + TRANS_STMT_ROLLBACK = 4, + TRANS_STMT_SAVEPOINT = 5, + TRANS_STMT_RELEASE = 6, + TRANS_STMT_ROLLBACK_TO = 7, + TRANS_STMT_PREPARE = 8, + TRANS_STMT_COMMIT_PREPARED = 9, + TRANS_STMT_ROLLBACK_PREPARED = 10, + TransactionStmtKind_INT_MIN_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::min(), + TransactionStmtKind_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::max() +}; +bool TransactionStmtKind_IsValid(int value); +constexpr TransactionStmtKind TransactionStmtKind_MIN = TRANSACTION_STMT_KIND_UNDEFINED; +constexpr TransactionStmtKind TransactionStmtKind_MAX = TRANS_STMT_ROLLBACK_PREPARED; +constexpr int TransactionStmtKind_ARRAYSIZE = TransactionStmtKind_MAX + 1; + +const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* TransactionStmtKind_descriptor(); +template +inline const std::string& TransactionStmtKind_Name(T enum_t_value) { + static_assert(::std::is_same::value || + ::std::is_integral::value, + "Incorrect type passed to function TransactionStmtKind_Name."); + return ::PROTOBUF_NAMESPACE_ID::internal::NameOfEnum( + TransactionStmtKind_descriptor(), enum_t_value); +} +inline bool TransactionStmtKind_Parse( + ::PROTOBUF_NAMESPACE_ID::ConstStringParam name, TransactionStmtKind* value) { + return ::PROTOBUF_NAMESPACE_ID::internal::ParseNamedEnum( + TransactionStmtKind_descriptor(), name, value); +} +enum ViewCheckOption : int { + VIEW_CHECK_OPTION_UNDEFINED = 0, + NO_CHECK_OPTION = 1, + LOCAL_CHECK_OPTION = 2, + CASCADED_CHECK_OPTION = 3, + ViewCheckOption_INT_MIN_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::min(), + ViewCheckOption_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::max() +}; +bool ViewCheckOption_IsValid(int value); +constexpr ViewCheckOption ViewCheckOption_MIN = VIEW_CHECK_OPTION_UNDEFINED; +constexpr ViewCheckOption ViewCheckOption_MAX = CASCADED_CHECK_OPTION; +constexpr int ViewCheckOption_ARRAYSIZE = ViewCheckOption_MAX + 1; + +const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* ViewCheckOption_descriptor(); +template +inline const std::string& ViewCheckOption_Name(T enum_t_value) { + static_assert(::std::is_same::value || + ::std::is_integral::value, + "Incorrect type passed to function ViewCheckOption_Name."); + return ::PROTOBUF_NAMESPACE_ID::internal::NameOfEnum( + ViewCheckOption_descriptor(), enum_t_value); +} +inline bool ViewCheckOption_Parse( + ::PROTOBUF_NAMESPACE_ID::ConstStringParam name, ViewCheckOption* value) { + return ::PROTOBUF_NAMESPACE_ID::internal::ParseNamedEnum( + ViewCheckOption_descriptor(), name, value); +} +enum ClusterOption : int { + CLUSTER_OPTION_UNDEFINED = 0, + CLUOPT_RECHECK = 1, + CLUOPT_VERBOSE = 2, + ClusterOption_INT_MIN_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::min(), + ClusterOption_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::max() +}; +bool ClusterOption_IsValid(int value); +constexpr ClusterOption ClusterOption_MIN = CLUSTER_OPTION_UNDEFINED; +constexpr ClusterOption ClusterOption_MAX = CLUOPT_VERBOSE; +constexpr int ClusterOption_ARRAYSIZE = ClusterOption_MAX + 1; + +const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* ClusterOption_descriptor(); +template +inline const std::string& ClusterOption_Name(T enum_t_value) { + static_assert(::std::is_same::value || + ::std::is_integral::value, + "Incorrect type passed to function ClusterOption_Name."); + return ::PROTOBUF_NAMESPACE_ID::internal::NameOfEnum( + ClusterOption_descriptor(), enum_t_value); +} +inline bool ClusterOption_Parse( + ::PROTOBUF_NAMESPACE_ID::ConstStringParam name, ClusterOption* value) { + return ::PROTOBUF_NAMESPACE_ID::internal::ParseNamedEnum( + ClusterOption_descriptor(), name, value); +} +enum DiscardMode : int { + DISCARD_MODE_UNDEFINED = 0, + DISCARD_ALL = 1, + DISCARD_PLANS = 2, + DISCARD_SEQUENCES = 3, + DISCARD_TEMP = 4, + DiscardMode_INT_MIN_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::min(), + DiscardMode_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::max() +}; +bool DiscardMode_IsValid(int value); +constexpr DiscardMode DiscardMode_MIN = DISCARD_MODE_UNDEFINED; +constexpr DiscardMode DiscardMode_MAX = DISCARD_TEMP; +constexpr int DiscardMode_ARRAYSIZE = DiscardMode_MAX + 1; + +const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* DiscardMode_descriptor(); +template +inline const std::string& DiscardMode_Name(T enum_t_value) { + static_assert(::std::is_same::value || + ::std::is_integral::value, + "Incorrect type passed to function DiscardMode_Name."); + return ::PROTOBUF_NAMESPACE_ID::internal::NameOfEnum( + DiscardMode_descriptor(), enum_t_value); +} +inline bool DiscardMode_Parse( + ::PROTOBUF_NAMESPACE_ID::ConstStringParam name, DiscardMode* value) { + return ::PROTOBUF_NAMESPACE_ID::internal::ParseNamedEnum( + DiscardMode_descriptor(), name, value); +} +enum ReindexObjectType : int { + REINDEX_OBJECT_TYPE_UNDEFINED = 0, + REINDEX_OBJECT_INDEX = 1, + REINDEX_OBJECT_TABLE = 2, + REINDEX_OBJECT_SCHEMA = 3, + REINDEX_OBJECT_SYSTEM = 4, + REINDEX_OBJECT_DATABASE = 5, + ReindexObjectType_INT_MIN_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::min(), + ReindexObjectType_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::max() +}; +bool ReindexObjectType_IsValid(int value); +constexpr ReindexObjectType ReindexObjectType_MIN = REINDEX_OBJECT_TYPE_UNDEFINED; +constexpr ReindexObjectType ReindexObjectType_MAX = REINDEX_OBJECT_DATABASE; +constexpr int ReindexObjectType_ARRAYSIZE = ReindexObjectType_MAX + 1; + +const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* ReindexObjectType_descriptor(); +template +inline const std::string& ReindexObjectType_Name(T enum_t_value) { + static_assert(::std::is_same::value || + ::std::is_integral::value, + "Incorrect type passed to function ReindexObjectType_Name."); + return ::PROTOBUF_NAMESPACE_ID::internal::NameOfEnum( + ReindexObjectType_descriptor(), enum_t_value); +} +inline bool ReindexObjectType_Parse( + ::PROTOBUF_NAMESPACE_ID::ConstStringParam name, ReindexObjectType* value) { + return ::PROTOBUF_NAMESPACE_ID::internal::ParseNamedEnum( + ReindexObjectType_descriptor(), name, value); +} +enum AlterTSConfigType : int { + ALTER_TSCONFIG_TYPE_UNDEFINED = 0, + ALTER_TSCONFIG_ADD_MAPPING = 1, + ALTER_TSCONFIG_ALTER_MAPPING_FOR_TOKEN = 2, + ALTER_TSCONFIG_REPLACE_DICT = 3, + ALTER_TSCONFIG_REPLACE_DICT_FOR_TOKEN = 4, + ALTER_TSCONFIG_DROP_MAPPING = 5, + AlterTSConfigType_INT_MIN_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::min(), + AlterTSConfigType_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::max() +}; +bool AlterTSConfigType_IsValid(int value); +constexpr AlterTSConfigType AlterTSConfigType_MIN = ALTER_TSCONFIG_TYPE_UNDEFINED; +constexpr AlterTSConfigType AlterTSConfigType_MAX = ALTER_TSCONFIG_DROP_MAPPING; +constexpr int AlterTSConfigType_ARRAYSIZE = AlterTSConfigType_MAX + 1; + +const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* AlterTSConfigType_descriptor(); +template +inline const std::string& AlterTSConfigType_Name(T enum_t_value) { + static_assert(::std::is_same::value || + ::std::is_integral::value, + "Incorrect type passed to function AlterTSConfigType_Name."); + return ::PROTOBUF_NAMESPACE_ID::internal::NameOfEnum( + AlterTSConfigType_descriptor(), enum_t_value); +} +inline bool AlterTSConfigType_Parse( + ::PROTOBUF_NAMESPACE_ID::ConstStringParam name, AlterTSConfigType* value) { + return ::PROTOBUF_NAMESPACE_ID::internal::ParseNamedEnum( + AlterTSConfigType_descriptor(), name, value); +} +enum AlterSubscriptionType : int { + ALTER_SUBSCRIPTION_TYPE_UNDEFINED = 0, + ALTER_SUBSCRIPTION_OPTIONS = 1, + ALTER_SUBSCRIPTION_CONNECTION = 2, + ALTER_SUBSCRIPTION_PUBLICATION = 3, + ALTER_SUBSCRIPTION_REFRESH = 4, + ALTER_SUBSCRIPTION_ENABLED = 5, + AlterSubscriptionType_INT_MIN_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::min(), + AlterSubscriptionType_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::max() +}; +bool AlterSubscriptionType_IsValid(int value); +constexpr AlterSubscriptionType AlterSubscriptionType_MIN = ALTER_SUBSCRIPTION_TYPE_UNDEFINED; +constexpr AlterSubscriptionType AlterSubscriptionType_MAX = ALTER_SUBSCRIPTION_ENABLED; +constexpr int AlterSubscriptionType_ARRAYSIZE = AlterSubscriptionType_MAX + 1; + +const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* AlterSubscriptionType_descriptor(); +template +inline const std::string& AlterSubscriptionType_Name(T enum_t_value) { + static_assert(::std::is_same::value || + ::std::is_integral::value, + "Incorrect type passed to function AlterSubscriptionType_Name."); + return ::PROTOBUF_NAMESPACE_ID::internal::NameOfEnum( + AlterSubscriptionType_descriptor(), enum_t_value); +} +inline bool AlterSubscriptionType_Parse( + ::PROTOBUF_NAMESPACE_ID::ConstStringParam name, AlterSubscriptionType* value) { + return ::PROTOBUF_NAMESPACE_ID::internal::ParseNamedEnum( + AlterSubscriptionType_descriptor(), name, value); +} +enum OnCommitAction : int { + ON_COMMIT_ACTION_UNDEFINED = 0, + ONCOMMIT_NOOP = 1, + ONCOMMIT_PRESERVE_ROWS = 2, + ONCOMMIT_DELETE_ROWS = 3, + ONCOMMIT_DROP = 4, + OnCommitAction_INT_MIN_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::min(), + OnCommitAction_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::max() +}; +bool OnCommitAction_IsValid(int value); +constexpr OnCommitAction OnCommitAction_MIN = ON_COMMIT_ACTION_UNDEFINED; +constexpr OnCommitAction OnCommitAction_MAX = ONCOMMIT_DROP; +constexpr int OnCommitAction_ARRAYSIZE = OnCommitAction_MAX + 1; + +const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* OnCommitAction_descriptor(); +template +inline const std::string& OnCommitAction_Name(T enum_t_value) { + static_assert(::std::is_same::value || + ::std::is_integral::value, + "Incorrect type passed to function OnCommitAction_Name."); + return ::PROTOBUF_NAMESPACE_ID::internal::NameOfEnum( + OnCommitAction_descriptor(), enum_t_value); +} +inline bool OnCommitAction_Parse( + ::PROTOBUF_NAMESPACE_ID::ConstStringParam name, OnCommitAction* value) { + return ::PROTOBUF_NAMESPACE_ID::internal::ParseNamedEnum( + OnCommitAction_descriptor(), name, value); +} +enum ParamKind : int { + PARAM_KIND_UNDEFINED = 0, + PARAM_EXTERN = 1, + PARAM_EXEC = 2, + PARAM_SUBLINK = 3, + PARAM_MULTIEXPR = 4, + ParamKind_INT_MIN_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::min(), + ParamKind_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::max() +}; +bool ParamKind_IsValid(int value); +constexpr ParamKind ParamKind_MIN = PARAM_KIND_UNDEFINED; +constexpr ParamKind ParamKind_MAX = PARAM_MULTIEXPR; +constexpr int ParamKind_ARRAYSIZE = ParamKind_MAX + 1; + +const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* ParamKind_descriptor(); +template +inline const std::string& ParamKind_Name(T enum_t_value) { + static_assert(::std::is_same::value || + ::std::is_integral::value, + "Incorrect type passed to function ParamKind_Name."); + return ::PROTOBUF_NAMESPACE_ID::internal::NameOfEnum( + ParamKind_descriptor(), enum_t_value); +} +inline bool ParamKind_Parse( + ::PROTOBUF_NAMESPACE_ID::ConstStringParam name, ParamKind* value) { + return ::PROTOBUF_NAMESPACE_ID::internal::ParseNamedEnum( + ParamKind_descriptor(), name, value); +} +enum CoercionContext : int { + COERCION_CONTEXT_UNDEFINED = 0, + COERCION_IMPLICIT = 1, + COERCION_ASSIGNMENT = 2, + COERCION_EXPLICIT = 3, + CoercionContext_INT_MIN_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::min(), + CoercionContext_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::max() +}; +bool CoercionContext_IsValid(int value); +constexpr CoercionContext CoercionContext_MIN = COERCION_CONTEXT_UNDEFINED; +constexpr CoercionContext CoercionContext_MAX = COERCION_EXPLICIT; +constexpr int CoercionContext_ARRAYSIZE = CoercionContext_MAX + 1; + +const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* CoercionContext_descriptor(); +template +inline const std::string& CoercionContext_Name(T enum_t_value) { + static_assert(::std::is_same::value || + ::std::is_integral::value, + "Incorrect type passed to function CoercionContext_Name."); + return ::PROTOBUF_NAMESPACE_ID::internal::NameOfEnum( + CoercionContext_descriptor(), enum_t_value); +} +inline bool CoercionContext_Parse( + ::PROTOBUF_NAMESPACE_ID::ConstStringParam name, CoercionContext* value) { + return ::PROTOBUF_NAMESPACE_ID::internal::ParseNamedEnum( + CoercionContext_descriptor(), name, value); +} +enum CoercionForm : int { + COERCION_FORM_UNDEFINED = 0, + COERCE_EXPLICIT_CALL = 1, + COERCE_EXPLICIT_CAST = 2, + COERCE_IMPLICIT_CAST = 3, + CoercionForm_INT_MIN_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::min(), + CoercionForm_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::max() +}; +bool CoercionForm_IsValid(int value); +constexpr CoercionForm CoercionForm_MIN = COERCION_FORM_UNDEFINED; +constexpr CoercionForm CoercionForm_MAX = COERCE_IMPLICIT_CAST; +constexpr int CoercionForm_ARRAYSIZE = CoercionForm_MAX + 1; + +const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* CoercionForm_descriptor(); +template +inline const std::string& CoercionForm_Name(T enum_t_value) { + static_assert(::std::is_same::value || + ::std::is_integral::value, + "Incorrect type passed to function CoercionForm_Name."); + return ::PROTOBUF_NAMESPACE_ID::internal::NameOfEnum( + CoercionForm_descriptor(), enum_t_value); +} +inline bool CoercionForm_Parse( + ::PROTOBUF_NAMESPACE_ID::ConstStringParam name, CoercionForm* value) { + return ::PROTOBUF_NAMESPACE_ID::internal::ParseNamedEnum( + CoercionForm_descriptor(), name, value); +} +enum BoolExprType : int { + BOOL_EXPR_TYPE_UNDEFINED = 0, + AND_EXPR = 1, + OR_EXPR = 2, + NOT_EXPR = 3, + BoolExprType_INT_MIN_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::min(), + BoolExprType_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::max() +}; +bool BoolExprType_IsValid(int value); +constexpr BoolExprType BoolExprType_MIN = BOOL_EXPR_TYPE_UNDEFINED; +constexpr BoolExprType BoolExprType_MAX = NOT_EXPR; +constexpr int BoolExprType_ARRAYSIZE = BoolExprType_MAX + 1; + +const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* BoolExprType_descriptor(); +template +inline const std::string& BoolExprType_Name(T enum_t_value) { + static_assert(::std::is_same::value || + ::std::is_integral::value, + "Incorrect type passed to function BoolExprType_Name."); + return ::PROTOBUF_NAMESPACE_ID::internal::NameOfEnum( + BoolExprType_descriptor(), enum_t_value); +} +inline bool BoolExprType_Parse( + ::PROTOBUF_NAMESPACE_ID::ConstStringParam name, BoolExprType* value) { + return ::PROTOBUF_NAMESPACE_ID::internal::ParseNamedEnum( + BoolExprType_descriptor(), name, value); +} +enum SubLinkType : int { + SUB_LINK_TYPE_UNDEFINED = 0, + EXISTS_SUBLINK = 1, + ALL_SUBLINK = 2, + ANY_SUBLINK = 3, + ROWCOMPARE_SUBLINK = 4, + EXPR_SUBLINK = 5, + MULTIEXPR_SUBLINK = 6, + ARRAY_SUBLINK = 7, + CTE_SUBLINK = 8, + SubLinkType_INT_MIN_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::min(), + SubLinkType_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::max() +}; +bool SubLinkType_IsValid(int value); +constexpr SubLinkType SubLinkType_MIN = SUB_LINK_TYPE_UNDEFINED; +constexpr SubLinkType SubLinkType_MAX = CTE_SUBLINK; +constexpr int SubLinkType_ARRAYSIZE = SubLinkType_MAX + 1; + +const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* SubLinkType_descriptor(); +template +inline const std::string& SubLinkType_Name(T enum_t_value) { + static_assert(::std::is_same::value || + ::std::is_integral::value, + "Incorrect type passed to function SubLinkType_Name."); + return ::PROTOBUF_NAMESPACE_ID::internal::NameOfEnum( + SubLinkType_descriptor(), enum_t_value); +} +inline bool SubLinkType_Parse( + ::PROTOBUF_NAMESPACE_ID::ConstStringParam name, SubLinkType* value) { + return ::PROTOBUF_NAMESPACE_ID::internal::ParseNamedEnum( + SubLinkType_descriptor(), name, value); +} +enum RowCompareType : int { + ROW_COMPARE_TYPE_UNDEFINED = 0, + ROWCOMPARE_LT = 1, + ROWCOMPARE_LE = 2, + ROWCOMPARE_EQ = 3, + ROWCOMPARE_GE = 4, + ROWCOMPARE_GT = 5, + ROWCOMPARE_NE = 6, + RowCompareType_INT_MIN_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::min(), + RowCompareType_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::max() +}; +bool RowCompareType_IsValid(int value); +constexpr RowCompareType RowCompareType_MIN = ROW_COMPARE_TYPE_UNDEFINED; +constexpr RowCompareType RowCompareType_MAX = ROWCOMPARE_NE; +constexpr int RowCompareType_ARRAYSIZE = RowCompareType_MAX + 1; + +const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* RowCompareType_descriptor(); +template +inline const std::string& RowCompareType_Name(T enum_t_value) { + static_assert(::std::is_same::value || + ::std::is_integral::value, + "Incorrect type passed to function RowCompareType_Name."); + return ::PROTOBUF_NAMESPACE_ID::internal::NameOfEnum( + RowCompareType_descriptor(), enum_t_value); +} +inline bool RowCompareType_Parse( + ::PROTOBUF_NAMESPACE_ID::ConstStringParam name, RowCompareType* value) { + return ::PROTOBUF_NAMESPACE_ID::internal::ParseNamedEnum( + RowCompareType_descriptor(), name, value); +} +enum MinMaxOp : int { + MIN_MAX_OP_UNDEFINED = 0, + IS_GREATEST = 1, + IS_LEAST = 2, + MinMaxOp_INT_MIN_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::min(), + MinMaxOp_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::max() +}; +bool MinMaxOp_IsValid(int value); +constexpr MinMaxOp MinMaxOp_MIN = MIN_MAX_OP_UNDEFINED; +constexpr MinMaxOp MinMaxOp_MAX = IS_LEAST; +constexpr int MinMaxOp_ARRAYSIZE = MinMaxOp_MAX + 1; + +const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* MinMaxOp_descriptor(); +template +inline const std::string& MinMaxOp_Name(T enum_t_value) { + static_assert(::std::is_same::value || + ::std::is_integral::value, + "Incorrect type passed to function MinMaxOp_Name."); + return ::PROTOBUF_NAMESPACE_ID::internal::NameOfEnum( + MinMaxOp_descriptor(), enum_t_value); +} +inline bool MinMaxOp_Parse( + ::PROTOBUF_NAMESPACE_ID::ConstStringParam name, MinMaxOp* value) { + return ::PROTOBUF_NAMESPACE_ID::internal::ParseNamedEnum( + MinMaxOp_descriptor(), name, value); +} +enum SQLValueFunctionOp : int { + SQLVALUE_FUNCTION_OP_UNDEFINED = 0, + SVFOP_CURRENT_DATE = 1, + SVFOP_CURRENT_TIME = 2, + SVFOP_CURRENT_TIME_N = 3, + SVFOP_CURRENT_TIMESTAMP = 4, + SVFOP_CURRENT_TIMESTAMP_N = 5, + SVFOP_LOCALTIME = 6, + SVFOP_LOCALTIME_N = 7, + SVFOP_LOCALTIMESTAMP = 8, + SVFOP_LOCALTIMESTAMP_N = 9, + SVFOP_CURRENT_ROLE = 10, + SVFOP_CURRENT_USER = 11, + SVFOP_USER = 12, + SVFOP_SESSION_USER = 13, + SVFOP_CURRENT_CATALOG = 14, + SVFOP_CURRENT_SCHEMA = 15, + SQLValueFunctionOp_INT_MIN_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::min(), + SQLValueFunctionOp_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::max() +}; +bool SQLValueFunctionOp_IsValid(int value); +constexpr SQLValueFunctionOp SQLValueFunctionOp_MIN = SQLVALUE_FUNCTION_OP_UNDEFINED; +constexpr SQLValueFunctionOp SQLValueFunctionOp_MAX = SVFOP_CURRENT_SCHEMA; +constexpr int SQLValueFunctionOp_ARRAYSIZE = SQLValueFunctionOp_MAX + 1; + +const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* SQLValueFunctionOp_descriptor(); +template +inline const std::string& SQLValueFunctionOp_Name(T enum_t_value) { + static_assert(::std::is_same::value || + ::std::is_integral::value, + "Incorrect type passed to function SQLValueFunctionOp_Name."); + return ::PROTOBUF_NAMESPACE_ID::internal::NameOfEnum( + SQLValueFunctionOp_descriptor(), enum_t_value); +} +inline bool SQLValueFunctionOp_Parse( + ::PROTOBUF_NAMESPACE_ID::ConstStringParam name, SQLValueFunctionOp* value) { + return ::PROTOBUF_NAMESPACE_ID::internal::ParseNamedEnum( + SQLValueFunctionOp_descriptor(), name, value); +} +enum XmlExprOp : int { + XML_EXPR_OP_UNDEFINED = 0, + IS_XMLCONCAT = 1, + IS_XMLELEMENT = 2, + IS_XMLFOREST = 3, + IS_XMLPARSE = 4, + IS_XMLPI = 5, + IS_XMLROOT = 6, + IS_XMLSERIALIZE = 7, + IS_DOCUMENT = 8, + XmlExprOp_INT_MIN_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::min(), + XmlExprOp_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::max() +}; +bool XmlExprOp_IsValid(int value); +constexpr XmlExprOp XmlExprOp_MIN = XML_EXPR_OP_UNDEFINED; +constexpr XmlExprOp XmlExprOp_MAX = IS_DOCUMENT; +constexpr int XmlExprOp_ARRAYSIZE = XmlExprOp_MAX + 1; + +const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* XmlExprOp_descriptor(); +template +inline const std::string& XmlExprOp_Name(T enum_t_value) { + static_assert(::std::is_same::value || + ::std::is_integral::value, + "Incorrect type passed to function XmlExprOp_Name."); + return ::PROTOBUF_NAMESPACE_ID::internal::NameOfEnum( + XmlExprOp_descriptor(), enum_t_value); +} +inline bool XmlExprOp_Parse( + ::PROTOBUF_NAMESPACE_ID::ConstStringParam name, XmlExprOp* value) { + return ::PROTOBUF_NAMESPACE_ID::internal::ParseNamedEnum( + XmlExprOp_descriptor(), name, value); +} +enum XmlOptionType : int { + XML_OPTION_TYPE_UNDEFINED = 0, + XMLOPTION_DOCUMENT = 1, + XMLOPTION_CONTENT = 2, + XmlOptionType_INT_MIN_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::min(), + XmlOptionType_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::max() +}; +bool XmlOptionType_IsValid(int value); +constexpr XmlOptionType XmlOptionType_MIN = XML_OPTION_TYPE_UNDEFINED; +constexpr XmlOptionType XmlOptionType_MAX = XMLOPTION_CONTENT; +constexpr int XmlOptionType_ARRAYSIZE = XmlOptionType_MAX + 1; + +const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* XmlOptionType_descriptor(); +template +inline const std::string& XmlOptionType_Name(T enum_t_value) { + static_assert(::std::is_same::value || + ::std::is_integral::value, + "Incorrect type passed to function XmlOptionType_Name."); + return ::PROTOBUF_NAMESPACE_ID::internal::NameOfEnum( + XmlOptionType_descriptor(), enum_t_value); +} +inline bool XmlOptionType_Parse( + ::PROTOBUF_NAMESPACE_ID::ConstStringParam name, XmlOptionType* value) { + return ::PROTOBUF_NAMESPACE_ID::internal::ParseNamedEnum( + XmlOptionType_descriptor(), name, value); +} +enum NullTestType : int { + NULL_TEST_TYPE_UNDEFINED = 0, + IS_NULL = 1, + IS_NOT_NULL = 2, + NullTestType_INT_MIN_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::min(), + NullTestType_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::max() +}; +bool NullTestType_IsValid(int value); +constexpr NullTestType NullTestType_MIN = NULL_TEST_TYPE_UNDEFINED; +constexpr NullTestType NullTestType_MAX = IS_NOT_NULL; +constexpr int NullTestType_ARRAYSIZE = NullTestType_MAX + 1; + +const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* NullTestType_descriptor(); +template +inline const std::string& NullTestType_Name(T enum_t_value) { + static_assert(::std::is_same::value || + ::std::is_integral::value, + "Incorrect type passed to function NullTestType_Name."); + return ::PROTOBUF_NAMESPACE_ID::internal::NameOfEnum( + NullTestType_descriptor(), enum_t_value); +} +inline bool NullTestType_Parse( + ::PROTOBUF_NAMESPACE_ID::ConstStringParam name, NullTestType* value) { + return ::PROTOBUF_NAMESPACE_ID::internal::ParseNamedEnum( + NullTestType_descriptor(), name, value); +} +enum BoolTestType : int { + BOOL_TEST_TYPE_UNDEFINED = 0, + IS_TRUE = 1, + IS_NOT_TRUE = 2, + IS_FALSE = 3, + IS_NOT_FALSE = 4, + IS_UNKNOWN = 5, + IS_NOT_UNKNOWN = 6, + BoolTestType_INT_MIN_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::min(), + BoolTestType_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::max() +}; +bool BoolTestType_IsValid(int value); +constexpr BoolTestType BoolTestType_MIN = BOOL_TEST_TYPE_UNDEFINED; +constexpr BoolTestType BoolTestType_MAX = IS_NOT_UNKNOWN; +constexpr int BoolTestType_ARRAYSIZE = BoolTestType_MAX + 1; + +const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* BoolTestType_descriptor(); +template +inline const std::string& BoolTestType_Name(T enum_t_value) { + static_assert(::std::is_same::value || + ::std::is_integral::value, + "Incorrect type passed to function BoolTestType_Name."); + return ::PROTOBUF_NAMESPACE_ID::internal::NameOfEnum( + BoolTestType_descriptor(), enum_t_value); +} +inline bool BoolTestType_Parse( + ::PROTOBUF_NAMESPACE_ID::ConstStringParam name, BoolTestType* value) { + return ::PROTOBUF_NAMESPACE_ID::internal::ParseNamedEnum( + BoolTestType_descriptor(), name, value); +} +enum CmdType : int { + CMD_TYPE_UNDEFINED = 0, + CMD_UNKNOWN = 1, + CMD_SELECT = 2, + CMD_UPDATE = 3, + CMD_INSERT = 4, + CMD_DELETE = 5, + CMD_UTILITY = 6, + CMD_NOTHING = 7, + CmdType_INT_MIN_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::min(), + CmdType_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::max() +}; +bool CmdType_IsValid(int value); +constexpr CmdType CmdType_MIN = CMD_TYPE_UNDEFINED; +constexpr CmdType CmdType_MAX = CMD_NOTHING; +constexpr int CmdType_ARRAYSIZE = CmdType_MAX + 1; + +const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* CmdType_descriptor(); +template +inline const std::string& CmdType_Name(T enum_t_value) { + static_assert(::std::is_same::value || + ::std::is_integral::value, + "Incorrect type passed to function CmdType_Name."); + return ::PROTOBUF_NAMESPACE_ID::internal::NameOfEnum( + CmdType_descriptor(), enum_t_value); +} +inline bool CmdType_Parse( + ::PROTOBUF_NAMESPACE_ID::ConstStringParam name, CmdType* value) { + return ::PROTOBUF_NAMESPACE_ID::internal::ParseNamedEnum( + CmdType_descriptor(), name, value); +} +enum JoinType : int { + JOIN_TYPE_UNDEFINED = 0, + JOIN_INNER = 1, + JOIN_LEFT = 2, + JOIN_FULL = 3, + JOIN_RIGHT = 4, + JOIN_SEMI = 5, + JOIN_ANTI = 6, + JOIN_UNIQUE_OUTER = 7, + JOIN_UNIQUE_INNER = 8, + JoinType_INT_MIN_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::min(), + JoinType_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::max() +}; +bool JoinType_IsValid(int value); +constexpr JoinType JoinType_MIN = JOIN_TYPE_UNDEFINED; +constexpr JoinType JoinType_MAX = JOIN_UNIQUE_INNER; +constexpr int JoinType_ARRAYSIZE = JoinType_MAX + 1; + +const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* JoinType_descriptor(); +template +inline const std::string& JoinType_Name(T enum_t_value) { + static_assert(::std::is_same::value || + ::std::is_integral::value, + "Incorrect type passed to function JoinType_Name."); + return ::PROTOBUF_NAMESPACE_ID::internal::NameOfEnum( + JoinType_descriptor(), enum_t_value); +} +inline bool JoinType_Parse( + ::PROTOBUF_NAMESPACE_ID::ConstStringParam name, JoinType* value) { + return ::PROTOBUF_NAMESPACE_ID::internal::ParseNamedEnum( + JoinType_descriptor(), name, value); +} +enum AggStrategy : int { + AGG_STRATEGY_UNDEFINED = 0, + AGG_PLAIN = 1, + AGG_SORTED = 2, + AGG_HASHED = 3, + AGG_MIXED = 4, + AggStrategy_INT_MIN_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::min(), + AggStrategy_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::max() +}; +bool AggStrategy_IsValid(int value); +constexpr AggStrategy AggStrategy_MIN = AGG_STRATEGY_UNDEFINED; +constexpr AggStrategy AggStrategy_MAX = AGG_MIXED; +constexpr int AggStrategy_ARRAYSIZE = AggStrategy_MAX + 1; + +const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* AggStrategy_descriptor(); +template +inline const std::string& AggStrategy_Name(T enum_t_value) { + static_assert(::std::is_same::value || + ::std::is_integral::value, + "Incorrect type passed to function AggStrategy_Name."); + return ::PROTOBUF_NAMESPACE_ID::internal::NameOfEnum( + AggStrategy_descriptor(), enum_t_value); +} +inline bool AggStrategy_Parse( + ::PROTOBUF_NAMESPACE_ID::ConstStringParam name, AggStrategy* value) { + return ::PROTOBUF_NAMESPACE_ID::internal::ParseNamedEnum( + AggStrategy_descriptor(), name, value); +} +enum AggSplit : int { + AGG_SPLIT_UNDEFINED = 0, + AGGSPLIT_SIMPLE = 1, + AGGSPLIT_INITIAL_SERIAL = 2, + AGGSPLIT_FINAL_DESERIAL = 3, + AggSplit_INT_MIN_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::min(), + AggSplit_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::max() +}; +bool AggSplit_IsValid(int value); +constexpr AggSplit AggSplit_MIN = AGG_SPLIT_UNDEFINED; +constexpr AggSplit AggSplit_MAX = AGGSPLIT_FINAL_DESERIAL; +constexpr int AggSplit_ARRAYSIZE = AggSplit_MAX + 1; + +const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* AggSplit_descriptor(); +template +inline const std::string& AggSplit_Name(T enum_t_value) { + static_assert(::std::is_same::value || + ::std::is_integral::value, + "Incorrect type passed to function AggSplit_Name."); + return ::PROTOBUF_NAMESPACE_ID::internal::NameOfEnum( + AggSplit_descriptor(), enum_t_value); +} +inline bool AggSplit_Parse( + ::PROTOBUF_NAMESPACE_ID::ConstStringParam name, AggSplit* value) { + return ::PROTOBUF_NAMESPACE_ID::internal::ParseNamedEnum( + AggSplit_descriptor(), name, value); +} +enum SetOpCmd : int { + SET_OP_CMD_UNDEFINED = 0, + SETOPCMD_INTERSECT = 1, + SETOPCMD_INTERSECT_ALL = 2, + SETOPCMD_EXCEPT = 3, + SETOPCMD_EXCEPT_ALL = 4, + SetOpCmd_INT_MIN_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::min(), + SetOpCmd_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::max() +}; +bool SetOpCmd_IsValid(int value); +constexpr SetOpCmd SetOpCmd_MIN = SET_OP_CMD_UNDEFINED; +constexpr SetOpCmd SetOpCmd_MAX = SETOPCMD_EXCEPT_ALL; +constexpr int SetOpCmd_ARRAYSIZE = SetOpCmd_MAX + 1; + +const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* SetOpCmd_descriptor(); +template +inline const std::string& SetOpCmd_Name(T enum_t_value) { + static_assert(::std::is_same::value || + ::std::is_integral::value, + "Incorrect type passed to function SetOpCmd_Name."); + return ::PROTOBUF_NAMESPACE_ID::internal::NameOfEnum( + SetOpCmd_descriptor(), enum_t_value); +} +inline bool SetOpCmd_Parse( + ::PROTOBUF_NAMESPACE_ID::ConstStringParam name, SetOpCmd* value) { + return ::PROTOBUF_NAMESPACE_ID::internal::ParseNamedEnum( + SetOpCmd_descriptor(), name, value); +} +enum SetOpStrategy : int { + SET_OP_STRATEGY_UNDEFINED = 0, + SETOP_SORTED = 1, + SETOP_HASHED = 2, + SetOpStrategy_INT_MIN_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::min(), + SetOpStrategy_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::max() +}; +bool SetOpStrategy_IsValid(int value); +constexpr SetOpStrategy SetOpStrategy_MIN = SET_OP_STRATEGY_UNDEFINED; +constexpr SetOpStrategy SetOpStrategy_MAX = SETOP_HASHED; +constexpr int SetOpStrategy_ARRAYSIZE = SetOpStrategy_MAX + 1; + +const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* SetOpStrategy_descriptor(); +template +inline const std::string& SetOpStrategy_Name(T enum_t_value) { + static_assert(::std::is_same::value || + ::std::is_integral::value, + "Incorrect type passed to function SetOpStrategy_Name."); + return ::PROTOBUF_NAMESPACE_ID::internal::NameOfEnum( + SetOpStrategy_descriptor(), enum_t_value); +} +inline bool SetOpStrategy_Parse( + ::PROTOBUF_NAMESPACE_ID::ConstStringParam name, SetOpStrategy* value) { + return ::PROTOBUF_NAMESPACE_ID::internal::ParseNamedEnum( + SetOpStrategy_descriptor(), name, value); +} +enum OnConflictAction : int { + ON_CONFLICT_ACTION_UNDEFINED = 0, + ONCONFLICT_NONE = 1, + ONCONFLICT_NOTHING = 2, + ONCONFLICT_UPDATE = 3, + OnConflictAction_INT_MIN_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::min(), + OnConflictAction_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::max() +}; +bool OnConflictAction_IsValid(int value); +constexpr OnConflictAction OnConflictAction_MIN = ON_CONFLICT_ACTION_UNDEFINED; +constexpr OnConflictAction OnConflictAction_MAX = ONCONFLICT_UPDATE; +constexpr int OnConflictAction_ARRAYSIZE = OnConflictAction_MAX + 1; + +const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* OnConflictAction_descriptor(); +template +inline const std::string& OnConflictAction_Name(T enum_t_value) { + static_assert(::std::is_same::value || + ::std::is_integral::value, + "Incorrect type passed to function OnConflictAction_Name."); + return ::PROTOBUF_NAMESPACE_ID::internal::NameOfEnum( + OnConflictAction_descriptor(), enum_t_value); +} +inline bool OnConflictAction_Parse( + ::PROTOBUF_NAMESPACE_ID::ConstStringParam name, OnConflictAction* value) { + return ::PROTOBUF_NAMESPACE_ID::internal::ParseNamedEnum( + OnConflictAction_descriptor(), name, value); +} +enum LimitOption : int { + LIMIT_OPTION_UNDEFINED = 0, + LIMIT_OPTION_DEFAULT = 1, + LIMIT_OPTION_COUNT = 2, + LIMIT_OPTION_WITH_TIES = 3, + LimitOption_INT_MIN_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::min(), + LimitOption_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::max() +}; +bool LimitOption_IsValid(int value); +constexpr LimitOption LimitOption_MIN = LIMIT_OPTION_UNDEFINED; +constexpr LimitOption LimitOption_MAX = LIMIT_OPTION_WITH_TIES; +constexpr int LimitOption_ARRAYSIZE = LimitOption_MAX + 1; + +const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* LimitOption_descriptor(); +template +inline const std::string& LimitOption_Name(T enum_t_value) { + static_assert(::std::is_same::value || + ::std::is_integral::value, + "Incorrect type passed to function LimitOption_Name."); + return ::PROTOBUF_NAMESPACE_ID::internal::NameOfEnum( + LimitOption_descriptor(), enum_t_value); +} +inline bool LimitOption_Parse( + ::PROTOBUF_NAMESPACE_ID::ConstStringParam name, LimitOption* value) { + return ::PROTOBUF_NAMESPACE_ID::internal::ParseNamedEnum( + LimitOption_descriptor(), name, value); +} +enum LockClauseStrength : int { + LOCK_CLAUSE_STRENGTH_UNDEFINED = 0, + LCS_NONE = 1, + LCS_FORKEYSHARE = 2, + LCS_FORSHARE = 3, + LCS_FORNOKEYUPDATE = 4, + LCS_FORUPDATE = 5, + LockClauseStrength_INT_MIN_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::min(), + LockClauseStrength_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::max() +}; +bool LockClauseStrength_IsValid(int value); +constexpr LockClauseStrength LockClauseStrength_MIN = LOCK_CLAUSE_STRENGTH_UNDEFINED; +constexpr LockClauseStrength LockClauseStrength_MAX = LCS_FORUPDATE; +constexpr int LockClauseStrength_ARRAYSIZE = LockClauseStrength_MAX + 1; + +const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* LockClauseStrength_descriptor(); +template +inline const std::string& LockClauseStrength_Name(T enum_t_value) { + static_assert(::std::is_same::value || + ::std::is_integral::value, + "Incorrect type passed to function LockClauseStrength_Name."); + return ::PROTOBUF_NAMESPACE_ID::internal::NameOfEnum( + LockClauseStrength_descriptor(), enum_t_value); +} +inline bool LockClauseStrength_Parse( + ::PROTOBUF_NAMESPACE_ID::ConstStringParam name, LockClauseStrength* value) { + return ::PROTOBUF_NAMESPACE_ID::internal::ParseNamedEnum( + LockClauseStrength_descriptor(), name, value); +} +enum LockWaitPolicy : int { + LOCK_WAIT_POLICY_UNDEFINED = 0, + LockWaitBlock = 1, + LockWaitSkip = 2, + LockWaitError = 3, + LockWaitPolicy_INT_MIN_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::min(), + LockWaitPolicy_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::max() +}; +bool LockWaitPolicy_IsValid(int value); +constexpr LockWaitPolicy LockWaitPolicy_MIN = LOCK_WAIT_POLICY_UNDEFINED; +constexpr LockWaitPolicy LockWaitPolicy_MAX = LockWaitError; +constexpr int LockWaitPolicy_ARRAYSIZE = LockWaitPolicy_MAX + 1; + +const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* LockWaitPolicy_descriptor(); +template +inline const std::string& LockWaitPolicy_Name(T enum_t_value) { + static_assert(::std::is_same::value || + ::std::is_integral::value, + "Incorrect type passed to function LockWaitPolicy_Name."); + return ::PROTOBUF_NAMESPACE_ID::internal::NameOfEnum( + LockWaitPolicy_descriptor(), enum_t_value); +} +inline bool LockWaitPolicy_Parse( + ::PROTOBUF_NAMESPACE_ID::ConstStringParam name, LockWaitPolicy* value) { + return ::PROTOBUF_NAMESPACE_ID::internal::ParseNamedEnum( + LockWaitPolicy_descriptor(), name, value); +} +enum LockTupleMode : int { + LOCK_TUPLE_MODE_UNDEFINED = 0, + LockTupleKeyShare = 1, + LockTupleShare = 2, + LockTupleNoKeyExclusive = 3, + LockTupleExclusive = 4, + LockTupleMode_INT_MIN_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::min(), + LockTupleMode_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::max() +}; +bool LockTupleMode_IsValid(int value); +constexpr LockTupleMode LockTupleMode_MIN = LOCK_TUPLE_MODE_UNDEFINED; +constexpr LockTupleMode LockTupleMode_MAX = LockTupleExclusive; +constexpr int LockTupleMode_ARRAYSIZE = LockTupleMode_MAX + 1; + +const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* LockTupleMode_descriptor(); +template +inline const std::string& LockTupleMode_Name(T enum_t_value) { + static_assert(::std::is_same::value || + ::std::is_integral::value, + "Incorrect type passed to function LockTupleMode_Name."); + return ::PROTOBUF_NAMESPACE_ID::internal::NameOfEnum( + LockTupleMode_descriptor(), enum_t_value); +} +inline bool LockTupleMode_Parse( + ::PROTOBUF_NAMESPACE_ID::ConstStringParam name, LockTupleMode* value) { + return ::PROTOBUF_NAMESPACE_ID::internal::ParseNamedEnum( + LockTupleMode_descriptor(), name, value); +} +enum KeywordKind : int { + NO_KEYWORD = 0, + UNRESERVED_KEYWORD = 1, + COL_NAME_KEYWORD = 2, + TYPE_FUNC_NAME_KEYWORD = 3, + RESERVED_KEYWORD = 4, + KeywordKind_INT_MIN_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::min(), + KeywordKind_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::max() +}; +bool KeywordKind_IsValid(int value); +constexpr KeywordKind KeywordKind_MIN = NO_KEYWORD; +constexpr KeywordKind KeywordKind_MAX = RESERVED_KEYWORD; +constexpr int KeywordKind_ARRAYSIZE = KeywordKind_MAX + 1; + +const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* KeywordKind_descriptor(); +template +inline const std::string& KeywordKind_Name(T enum_t_value) { + static_assert(::std::is_same::value || + ::std::is_integral::value, + "Incorrect type passed to function KeywordKind_Name."); + return ::PROTOBUF_NAMESPACE_ID::internal::NameOfEnum( + KeywordKind_descriptor(), enum_t_value); +} +inline bool KeywordKind_Parse( + ::PROTOBUF_NAMESPACE_ID::ConstStringParam name, KeywordKind* value) { + return ::PROTOBUF_NAMESPACE_ID::internal::ParseNamedEnum( + KeywordKind_descriptor(), name, value); +} +enum Token : int { + NUL = 0, + ASCII_37 = 37, + ASCII_40 = 40, + ASCII_41 = 41, + ASCII_42 = 42, + ASCII_43 = 43, + ASCII_44 = 44, + ASCII_45 = 45, + ASCII_46 = 46, + ASCII_47 = 47, + ASCII_58 = 58, + ASCII_59 = 59, + ASCII_60 = 60, + ASCII_61 = 61, + ASCII_62 = 62, + ASCII_63 = 63, + ASCII_91 = 91, + ASCII_93 = 93, + ASCII_94 = 94, + IDENT = 258, + UIDENT = 259, + FCONST = 260, + SCONST = 261, + USCONST = 262, + BCONST = 263, + XCONST = 264, + Op = 265, + ICONST = 266, + PARAM = 267, + TYPECAST = 268, + DOT_DOT = 269, + COLON_EQUALS = 270, + EQUALS_GREATER = 271, + LESS_EQUALS = 272, + GREATER_EQUALS = 273, + NOT_EQUALS = 274, + SQL_COMMENT = 275, + C_COMMENT = 276, + ABORT_P = 277, + ABSOLUTE_P = 278, + ACCESS = 279, + ACTION = 280, + ADD_P = 281, + ADMIN = 282, + AFTER = 283, + AGGREGATE = 284, + ALL = 285, + ALSO = 286, + ALTER = 287, + ALWAYS = 288, + ANALYSE = 289, + ANALYZE = 290, + AND = 291, + ANY = 292, + ARRAY = 293, + AS = 294, + ASC = 295, + ASSERTION = 296, + ASSIGNMENT = 297, + ASYMMETRIC = 298, + AT = 299, + ATTACH = 300, + ATTRIBUTE = 301, + AUTHORIZATION = 302, + BACKWARD = 303, + BEFORE = 304, + BEGIN_P = 305, + BETWEEN = 306, + BIGINT = 307, + BINARY = 308, + BIT = 309, + BOOLEAN_P = 310, + BOTH = 311, + BY = 312, + CACHE = 313, + CALL = 314, + CALLED = 315, + CASCADE = 316, + CASCADED = 317, + CASE = 318, + CAST = 319, + CATALOG_P = 320, + CHAIN = 321, + CHAR_P = 322, + CHARACTER = 323, + CHARACTERISTICS = 324, + CHECK = 325, + CHECKPOINT = 326, + CLASS = 327, + CLOSE = 328, + CLUSTER = 329, + COALESCE = 330, + COLLATE = 331, + COLLATION = 332, + COLUMN = 333, + COLUMNS = 334, + COMMENT = 335, + COMMENTS = 336, + COMMIT = 337, + COMMITTED = 338, + CONCURRENTLY = 339, + CONFIGURATION = 340, + CONFLICT = 341, + CONNECTION = 342, + CONSTRAINT = 343, + CONSTRAINTS = 344, + CONTENT_P = 345, + CONTINUE_P = 346, + CONVERSION_P = 347, + COPY = 348, + COST = 349, + CREATE = 350, + CROSS = 351, + CSV = 352, + CUBE = 353, + CURRENT_P = 354, + CURRENT_CATALOG = 355, + CURRENT_DATE = 356, + CURRENT_ROLE = 357, + CURRENT_SCHEMA = 358, + CURRENT_TIME = 359, + CURRENT_TIMESTAMP = 360, + CURRENT_USER = 361, + CURSOR = 362, + CYCLE = 363, + DATA_P = 364, + DATABASE = 365, + DAY_P = 366, + DEALLOCATE = 367, + DEC = 368, + DECIMAL_P = 369, + DECLARE = 370, + DEFAULT = 371, + DEFAULTS = 372, + DEFERRABLE = 373, + DEFERRED = 374, + DEFINER = 375, + DELETE_P = 376, + DELIMITER = 377, + DELIMITERS = 378, + DEPENDS = 379, + DESC = 380, + DETACH = 381, + DICTIONARY = 382, + DISABLE_P = 383, + DISCARD = 384, + DISTINCT = 385, + DO = 386, + DOCUMENT_P = 387, + DOMAIN_P = 388, + DOUBLE_P = 389, + DROP = 390, + EACH = 391, + ELSE = 392, + ENABLE_P = 393, + ENCODING = 394, + ENCRYPTED = 395, + END_P = 396, + ENUM_P = 397, + ESCAPE = 398, + EVENT = 399, + EXCEPT = 400, + EXCLUDE = 401, + EXCLUDING = 402, + EXCLUSIVE = 403, + EXECUTE = 404, + EXISTS = 405, + EXPLAIN = 406, + EXPRESSION = 407, + EXTENSION = 408, + EXTERNAL = 409, + EXTRACT = 410, + FALSE_P = 411, + FAMILY = 412, + FETCH = 413, + FILTER = 414, + FIRST_P = 415, + FLOAT_P = 416, + FOLLOWING = 417, + FOR = 418, + FORCE = 419, + FOREIGN = 420, + FORWARD = 421, + FREEZE = 422, + FROM = 423, + FULL = 424, + FUNCTION = 425, + FUNCTIONS = 426, + GENERATED = 427, + GLOBAL = 428, + GRANT = 429, + GRANTED = 430, + GREATEST = 431, + GROUP_P = 432, + GROUPING = 433, + GROUPS = 434, + HANDLER = 435, + HAVING = 436, + HEADER_P = 437, + HOLD = 438, + HOUR_P = 439, + IDENTITY_P = 440, + IF_P = 441, + ILIKE = 442, + IMMEDIATE = 443, + IMMUTABLE = 444, + IMPLICIT_P = 445, + IMPORT_P = 446, + IN_P = 447, + INCLUDE = 448, + INCLUDING = 449, + INCREMENT = 450, + INDEX = 451, + INDEXES = 452, + INHERIT = 453, + INHERITS = 454, + INITIALLY = 455, + INLINE_P = 456, + INNER_P = 457, + INOUT = 458, + INPUT_P = 459, + INSENSITIVE = 460, + INSERT = 461, + INSTEAD = 462, + INT_P = 463, + INTEGER = 464, + INTERSECT = 465, + INTERVAL = 466, + INTO = 467, + INVOKER = 468, + IS = 469, + ISNULL = 470, + ISOLATION = 471, + JOIN = 472, + KEY = 473, + LABEL = 474, + LANGUAGE = 475, + LARGE_P = 476, + LAST_P = 477, + LATERAL_P = 478, + LEADING = 479, + LEAKPROOF = 480, + LEAST = 481, + LEFT = 482, + LEVEL = 483, + LIKE = 484, + LIMIT = 485, + LISTEN = 486, + LOAD = 487, + LOCAL = 488, + LOCALTIME = 489, + LOCALTIMESTAMP = 490, + LOCATION = 491, + LOCK_P = 492, + LOCKED = 493, + LOGGED = 494, + MAPPING = 495, + MATCH = 496, + MATERIALIZED = 497, + MAXVALUE = 498, + METHOD = 499, + MINUTE_P = 500, + MINVALUE = 501, + MODE = 502, + MONTH_P = 503, + MOVE = 504, + NAME_P = 505, + NAMES = 506, + NATIONAL = 507, + NATURAL = 508, + NCHAR = 509, + NEW = 510, + NEXT = 511, + NFC = 512, + NFD = 513, + NFKC = 514, + NFKD = 515, + NO = 516, + NONE = 517, + NORMALIZE = 518, + NORMALIZED = 519, + NOT = 520, + NOTHING = 521, + NOTIFY = 522, + NOTNULL = 523, + NOWAIT = 524, + NULL_P = 525, + NULLIF = 526, + NULLS_P = 527, + NUMERIC = 528, + OBJECT_P = 529, + OF = 530, + OFF = 531, + OFFSET = 532, + OIDS = 533, + OLD = 534, + ON = 535, + ONLY = 536, + OPERATOR = 537, + OPTION = 538, + OPTIONS = 539, + OR = 540, + ORDER = 541, + ORDINALITY = 542, + OTHERS = 543, + OUT_P = 544, + OUTER_P = 545, + OVER = 546, + OVERLAPS = 547, + OVERLAY = 548, + OVERRIDING = 549, + OWNED = 550, + OWNER = 551, + PARALLEL = 552, + PARSER = 553, + PARTIAL = 554, + PARTITION = 555, + PASSING = 556, + PASSWORD = 557, + PLACING = 558, + PLANS = 559, + POLICY = 560, + POSITION = 561, + PRECEDING = 562, + PRECISION = 563, + PRESERVE = 564, + PREPARE = 565, + PREPARED = 566, + PRIMARY = 567, + PRIOR = 568, + PRIVILEGES = 569, + PROCEDURAL = 570, + PROCEDURE = 571, + PROCEDURES = 572, + PROGRAM = 573, + PUBLICATION = 574, + QUOTE = 575, + RANGE = 576, + READ = 577, + REAL = 578, + REASSIGN = 579, + RECHECK = 580, + RECURSIVE = 581, + REF = 582, + REFERENCES = 583, + REFERENCING = 584, + REFRESH = 585, + REINDEX = 586, + RELATIVE_P = 587, + RELEASE = 588, + RENAME = 589, + REPEATABLE = 590, + REPLACE = 591, + REPLICA = 592, + RESET = 593, + RESTART = 594, + RESTRICT = 595, + RETURNING = 596, + RETURNS = 597, + REVOKE = 598, + RIGHT = 599, + ROLE = 600, + ROLLBACK = 601, + ROLLUP = 602, + ROUTINE = 603, + ROUTINES = 604, + ROW = 605, + ROWS = 606, + RULE = 607, + SAVEPOINT = 608, + SCHEMA = 609, + SCHEMAS = 610, + SCROLL = 611, + SEARCH = 612, + SECOND_P = 613, + SECURITY = 614, + SELECT = 615, + SEQUENCE = 616, + SEQUENCES = 617, + SERIALIZABLE = 618, + SERVER = 619, + SESSION = 620, + SESSION_USER = 621, + SET = 622, + SETS = 623, + SETOF = 624, + SHARE = 625, + SHOW = 626, + SIMILAR = 627, + SIMPLE = 628, + SKIP = 629, + SMALLINT = 630, + SNAPSHOT = 631, + SOME = 632, + SQL_P = 633, + STABLE = 634, + STANDALONE_P = 635, + START = 636, + STATEMENT = 637, + STATISTICS = 638, + STDIN = 639, + STDOUT = 640, + STORAGE = 641, + STORED = 642, + STRICT_P = 643, + STRIP_P = 644, + SUBSCRIPTION = 645, + SUBSTRING = 646, + SUPPORT = 647, + SYMMETRIC = 648, + SYSID = 649, + SYSTEM_P = 650, + TABLE = 651, + TABLES = 652, + TABLESAMPLE = 653, + TABLESPACE = 654, + TEMP = 655, + TEMPLATE = 656, + TEMPORARY = 657, + TEXT_P = 658, + THEN = 659, + TIES = 660, + TIME = 661, + TIMESTAMP = 662, + TO = 663, + TRAILING = 664, + TRANSACTION = 665, + TRANSFORM = 666, + TREAT = 667, + TRIGGER = 668, + TRIM = 669, + TRUE_P = 670, + TRUNCATE = 671, + TRUSTED = 672, + TYPE_P = 673, + TYPES_P = 674, + UESCAPE = 675, + UNBOUNDED = 676, + UNCOMMITTED = 677, + UNENCRYPTED = 678, + UNION = 679, + UNIQUE = 680, + UNKNOWN = 681, + UNLISTEN = 682, + UNLOGGED = 683, + UNTIL = 684, + UPDATE = 685, + USER = 686, + USING = 687, + VACUUM = 688, + VALID = 689, + VALIDATE = 690, + VALIDATOR = 691, + VALUE_P = 692, + VALUES = 693, + VARCHAR = 694, + VARIADIC = 695, + VARYING = 696, + VERBOSE = 697, + VERSION_P = 698, + VIEW = 699, + VIEWS = 700, + VOLATILE = 701, + WHEN = 702, + WHERE = 703, + WHITESPACE_P = 704, + WINDOW = 705, + WITH = 706, + WITHIN = 707, + WITHOUT = 708, + WORK = 709, + WRAPPER = 710, + WRITE = 711, + XML_P = 712, + XMLATTRIBUTES = 713, + XMLCONCAT = 714, + XMLELEMENT = 715, + XMLEXISTS = 716, + XMLFOREST = 717, + XMLNAMESPACES = 718, + XMLPARSE = 719, + XMLPI = 720, + XMLROOT = 721, + XMLSERIALIZE = 722, + XMLTABLE = 723, + YEAR_P = 724, + YES_P = 725, + ZONE = 726, + NOT_LA = 727, + NULLS_LA = 728, + WITH_LA = 729, + POSTFIXOP = 730, + UMINUS = 731, + Token_INT_MIN_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::min(), + Token_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::max() +}; +bool Token_IsValid(int value); +constexpr Token Token_MIN = NUL; +constexpr Token Token_MAX = UMINUS; +constexpr int Token_ARRAYSIZE = Token_MAX + 1; + +const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* Token_descriptor(); +template +inline const std::string& Token_Name(T enum_t_value) { + static_assert(::std::is_same::value || + ::std::is_integral::value, + "Incorrect type passed to function Token_Name."); + return ::PROTOBUF_NAMESPACE_ID::internal::NameOfEnum( + Token_descriptor(), enum_t_value); +} +inline bool Token_Parse( + ::PROTOBUF_NAMESPACE_ID::ConstStringParam name, Token* value) { + return ::PROTOBUF_NAMESPACE_ID::internal::ParseNamedEnum( + Token_descriptor(), name, value); +} +// =================================================================== + +class ParseResult PROTOBUF_FINAL : + public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.ParseResult) */ { + public: + inline ParseResult() : ParseResult(nullptr) {} + virtual ~ParseResult(); + + ParseResult(const ParseResult& from); + ParseResult(ParseResult&& from) noexcept + : ParseResult() { + *this = ::std::move(from); + } + + inline ParseResult& operator=(const ParseResult& from) { + CopyFrom(from); + return *this; + } + inline ParseResult& operator=(ParseResult&& from) noexcept { + if (GetArena() == from.GetArena()) { + if (this != &from) InternalSwap(&from); + } else { + CopyFrom(from); + } + return *this; + } + + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { + return GetDescriptor(); + } + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { + return GetMetadataStatic().descriptor; + } + static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { + return GetMetadataStatic().reflection; + } + static const ParseResult& default_instance(); + + static inline const ParseResult* internal_default_instance() { + return reinterpret_cast( + &_ParseResult_default_instance_); + } + static constexpr int kIndexInFileMessages = + 0; + + friend void swap(ParseResult& a, ParseResult& b) { + a.Swap(&b); + } + inline void Swap(ParseResult* other) { + if (other == this) return; + if (GetArena() == other->GetArena()) { + InternalSwap(other); + } else { + ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); + } + } + void UnsafeArenaSwap(ParseResult* other) { + if (other == this) return; + GOOGLE_DCHECK(GetArena() == other->GetArena()); + InternalSwap(other); + } + + // implements Message ---------------------------------------------- + + inline ParseResult* New() const final { + return CreateMaybeMessage(nullptr); + } + + ParseResult* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { + return CreateMaybeMessage(arena); + } + void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void CopyFrom(const ParseResult& from); + void MergeFrom(const ParseResult& from); + PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; + bool IsInitialized() const final; + + size_t ByteSizeLong() const final; + const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; + ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( + ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; + int GetCachedSize() const final { return _cached_size_.Get(); } + + private: + inline void SharedCtor(); + inline void SharedDtor(); + void SetCachedSize(int size) const final; + void InternalSwap(ParseResult* other); + friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; + static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { + return "pg_query.ParseResult"; + } + protected: + explicit ParseResult(::PROTOBUF_NAMESPACE_ID::Arena* arena); + private: + static void ArenaDtor(void* object); + inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); + public: + + ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; + private: + static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { + ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); + return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; + } + + public: + + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + + enum : int { + kStmtsFieldNumber = 2, + kVersionFieldNumber = 1, + }; + // repeated .pg_query.RawStmt stmts = 2; + int stmts_size() const; + private: + int _internal_stmts_size() const; + public: + void clear_stmts(); + ::pg_query::RawStmt* mutable_stmts(int index); + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::RawStmt >* + mutable_stmts(); + private: + const ::pg_query::RawStmt& _internal_stmts(int index) const; + ::pg_query::RawStmt* _internal_add_stmts(); + public: + const ::pg_query::RawStmt& stmts(int index) const; + ::pg_query::RawStmt* add_stmts(); + const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::RawStmt >& + stmts() const; + + // int32 version = 1; + void clear_version(); + ::PROTOBUF_NAMESPACE_ID::int32 version() const; + void set_version(::PROTOBUF_NAMESPACE_ID::int32 value); + private: + ::PROTOBUF_NAMESPACE_ID::int32 _internal_version() const; + void _internal_set_version(::PROTOBUF_NAMESPACE_ID::int32 value); + public: + + // @@protoc_insertion_point(class_scope:pg_query.ParseResult) + private: + class _Internal; + + template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; + typedef void InternalArenaConstructable_; + typedef void DestructorSkippable_; + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::RawStmt > stmts_; + ::PROTOBUF_NAMESPACE_ID::int32 version_; + mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; + friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; +}; +// ------------------------------------------------------------------- + +class ScanResult PROTOBUF_FINAL : + public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.ScanResult) */ { + public: + inline ScanResult() : ScanResult(nullptr) {} + virtual ~ScanResult(); + + ScanResult(const ScanResult& from); + ScanResult(ScanResult&& from) noexcept + : ScanResult() { + *this = ::std::move(from); + } + + inline ScanResult& operator=(const ScanResult& from) { + CopyFrom(from); + return *this; + } + inline ScanResult& operator=(ScanResult&& from) noexcept { + if (GetArena() == from.GetArena()) { + if (this != &from) InternalSwap(&from); + } else { + CopyFrom(from); + } + return *this; + } + + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { + return GetDescriptor(); + } + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { + return GetMetadataStatic().descriptor; + } + static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { + return GetMetadataStatic().reflection; + } + static const ScanResult& default_instance(); + + static inline const ScanResult* internal_default_instance() { + return reinterpret_cast( + &_ScanResult_default_instance_); + } + static constexpr int kIndexInFileMessages = + 1; + + friend void swap(ScanResult& a, ScanResult& b) { + a.Swap(&b); + } + inline void Swap(ScanResult* other) { + if (other == this) return; + if (GetArena() == other->GetArena()) { + InternalSwap(other); + } else { + ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); + } + } + void UnsafeArenaSwap(ScanResult* other) { + if (other == this) return; + GOOGLE_DCHECK(GetArena() == other->GetArena()); + InternalSwap(other); + } + + // implements Message ---------------------------------------------- + + inline ScanResult* New() const final { + return CreateMaybeMessage(nullptr); + } + + ScanResult* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { + return CreateMaybeMessage(arena); + } + void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void CopyFrom(const ScanResult& from); + void MergeFrom(const ScanResult& from); + PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; + bool IsInitialized() const final; + + size_t ByteSizeLong() const final; + const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; + ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( + ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; + int GetCachedSize() const final { return _cached_size_.Get(); } + + private: + inline void SharedCtor(); + inline void SharedDtor(); + void SetCachedSize(int size) const final; + void InternalSwap(ScanResult* other); + friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; + static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { + return "pg_query.ScanResult"; + } + protected: + explicit ScanResult(::PROTOBUF_NAMESPACE_ID::Arena* arena); + private: + static void ArenaDtor(void* object); + inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); + public: + + ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; + private: + static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { + ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); + return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; + } + + public: + + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + + enum : int { + kTokensFieldNumber = 2, + kVersionFieldNumber = 1, + }; + // repeated .pg_query.ScanToken tokens = 2; + int tokens_size() const; + private: + int _internal_tokens_size() const; + public: + void clear_tokens(); + ::pg_query::ScanToken* mutable_tokens(int index); + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::ScanToken >* + mutable_tokens(); + private: + const ::pg_query::ScanToken& _internal_tokens(int index) const; + ::pg_query::ScanToken* _internal_add_tokens(); + public: + const ::pg_query::ScanToken& tokens(int index) const; + ::pg_query::ScanToken* add_tokens(); + const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::ScanToken >& + tokens() const; + + // int32 version = 1; + void clear_version(); + ::PROTOBUF_NAMESPACE_ID::int32 version() const; + void set_version(::PROTOBUF_NAMESPACE_ID::int32 value); + private: + ::PROTOBUF_NAMESPACE_ID::int32 _internal_version() const; + void _internal_set_version(::PROTOBUF_NAMESPACE_ID::int32 value); + public: + + // @@protoc_insertion_point(class_scope:pg_query.ScanResult) + private: + class _Internal; + + template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; + typedef void InternalArenaConstructable_; + typedef void DestructorSkippable_; + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::ScanToken > tokens_; + ::PROTOBUF_NAMESPACE_ID::int32 version_; + mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; + friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; +}; +// ------------------------------------------------------------------- + +class Node PROTOBUF_FINAL : + public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.Node) */ { + public: + inline Node() : Node(nullptr) {} + virtual ~Node(); + + Node(const Node& from); + Node(Node&& from) noexcept + : Node() { + *this = ::std::move(from); + } + + inline Node& operator=(const Node& from) { + CopyFrom(from); + return *this; + } + inline Node& operator=(Node&& from) noexcept { + if (GetArena() == from.GetArena()) { + if (this != &from) InternalSwap(&from); + } else { + CopyFrom(from); + } + return *this; + } + + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { + return GetDescriptor(); + } + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { + return GetMetadataStatic().descriptor; + } + static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { + return GetMetadataStatic().reflection; + } + static const Node& default_instance(); + + enum NodeCase { + kAlias = 1, + kRangeVar = 2, + kTableFunc = 3, + kExpr = 4, + kVar = 5, + kParam = 6, + kAggref = 7, + kGroupingFunc = 8, + kWindowFunc = 9, + kSubscriptingRef = 10, + kFuncExpr = 11, + kNamedArgExpr = 12, + kOpExpr = 13, + kDistinctExpr = 14, + kNullIfExpr = 15, + kScalarArrayOpExpr = 16, + kBoolExpr = 17, + kSubLink = 18, + kSubPlan = 19, + kAlternativeSubPlan = 20, + kFieldSelect = 21, + kFieldStore = 22, + kRelabelType = 23, + kCoerceViaIo = 24, + kArrayCoerceExpr = 25, + kConvertRowtypeExpr = 26, + kCollateExpr = 27, + kCaseExpr = 28, + kCaseWhen = 29, + kCaseTestExpr = 30, + kArrayExpr = 31, + kRowExpr = 32, + kRowCompareExpr = 33, + kCoalesceExpr = 34, + kMinMaxExpr = 35, + kSqlvalueFunction = 36, + kXmlExpr = 37, + kNullTest = 38, + kBooleanTest = 39, + kCoerceToDomain = 40, + kCoerceToDomainValue = 41, + kSetToDefault = 42, + kCurrentOfExpr = 43, + kNextValueExpr = 44, + kInferenceElem = 45, + kTargetEntry = 46, + kRangeTblRef = 47, + kJoinExpr = 48, + kFromExpr = 49, + kOnConflictExpr = 50, + kIntoClause = 51, + kRawStmt = 52, + kQuery = 53, + kInsertStmt = 54, + kDeleteStmt = 55, + kUpdateStmt = 56, + kSelectStmt = 57, + kAlterTableStmt = 58, + kAlterTableCmd = 59, + kAlterDomainStmt = 60, + kSetOperationStmt = 61, + kGrantStmt = 62, + kGrantRoleStmt = 63, + kAlterDefaultPrivilegesStmt = 64, + kClosePortalStmt = 65, + kClusterStmt = 66, + kCopyStmt = 67, + kCreateStmt = 68, + kDefineStmt = 69, + kDropStmt = 70, + kTruncateStmt = 71, + kCommentStmt = 72, + kFetchStmt = 73, + kIndexStmt = 74, + kCreateFunctionStmt = 75, + kAlterFunctionStmt = 76, + kDoStmt = 77, + kRenameStmt = 78, + kRuleStmt = 79, + kNotifyStmt = 80, + kListenStmt = 81, + kUnlistenStmt = 82, + kTransactionStmt = 83, + kViewStmt = 84, + kLoadStmt = 85, + kCreateDomainStmt = 86, + kCreatedbStmt = 87, + kDropdbStmt = 88, + kVacuumStmt = 89, + kExplainStmt = 90, + kCreateTableAsStmt = 91, + kCreateSeqStmt = 92, + kAlterSeqStmt = 93, + kVariableSetStmt = 94, + kVariableShowStmt = 95, + kDiscardStmt = 96, + kCreateTrigStmt = 97, + kCreatePlangStmt = 98, + kCreateRoleStmt = 99, + kAlterRoleStmt = 100, + kDropRoleStmt = 101, + kLockStmt = 102, + kConstraintsSetStmt = 103, + kReindexStmt = 104, + kCheckPointStmt = 105, + kCreateSchemaStmt = 106, + kAlterDatabaseStmt = 107, + kAlterDatabaseSetStmt = 108, + kAlterRoleSetStmt = 109, + kCreateConversionStmt = 110, + kCreateCastStmt = 111, + kCreateOpClassStmt = 112, + kCreateOpFamilyStmt = 113, + kAlterOpFamilyStmt = 114, + kPrepareStmt = 115, + kExecuteStmt = 116, + kDeallocateStmt = 117, + kDeclareCursorStmt = 118, + kCreateTableSpaceStmt = 119, + kDropTableSpaceStmt = 120, + kAlterObjectDependsStmt = 121, + kAlterObjectSchemaStmt = 122, + kAlterOwnerStmt = 123, + kAlterOperatorStmt = 124, + kAlterTypeStmt = 125, + kDropOwnedStmt = 126, + kReassignOwnedStmt = 127, + kCompositeTypeStmt = 128, + kCreateEnumStmt = 129, + kCreateRangeStmt = 130, + kAlterEnumStmt = 131, + kAlterTsdictionaryStmt = 132, + kAlterTsconfigurationStmt = 133, + kCreateFdwStmt = 134, + kAlterFdwStmt = 135, + kCreateForeignServerStmt = 136, + kAlterForeignServerStmt = 137, + kCreateUserMappingStmt = 138, + kAlterUserMappingStmt = 139, + kDropUserMappingStmt = 140, + kAlterTableSpaceOptionsStmt = 141, + kAlterTableMoveAllStmt = 142, + kSecLabelStmt = 143, + kCreateForeignTableStmt = 144, + kImportForeignSchemaStmt = 145, + kCreateExtensionStmt = 146, + kAlterExtensionStmt = 147, + kAlterExtensionContentsStmt = 148, + kCreateEventTrigStmt = 149, + kAlterEventTrigStmt = 150, + kRefreshMatViewStmt = 151, + kReplicaIdentityStmt = 152, + kAlterSystemStmt = 153, + kCreatePolicyStmt = 154, + kAlterPolicyStmt = 155, + kCreateTransformStmt = 156, + kCreateAmStmt = 157, + kCreatePublicationStmt = 158, + kAlterPublicationStmt = 159, + kCreateSubscriptionStmt = 160, + kAlterSubscriptionStmt = 161, + kDropSubscriptionStmt = 162, + kCreateStatsStmt = 163, + kAlterCollationStmt = 164, + kCallStmt = 165, + kAlterStatsStmt = 166, + kAExpr = 167, + kColumnRef = 168, + kParamRef = 169, + kAConst = 170, + kFuncCall = 171, + kAStar = 172, + kAIndices = 173, + kAIndirection = 174, + kAArrayExpr = 175, + kResTarget = 176, + kMultiAssignRef = 177, + kTypeCast = 178, + kCollateClause = 179, + kSortBy = 180, + kWindowDef = 181, + kRangeSubselect = 182, + kRangeFunction = 183, + kRangeTableSample = 184, + kRangeTableFunc = 185, + kRangeTableFuncCol = 186, + kTypeName = 187, + kColumnDef = 188, + kIndexElem = 189, + kConstraint = 190, + kDefElem = 191, + kRangeTblEntry = 192, + kRangeTblFunction = 193, + kTableSampleClause = 194, + kWithCheckOption = 195, + kSortGroupClause = 196, + kGroupingSet = 197, + kWindowClause = 198, + kObjectWithArgs = 199, + kAccessPriv = 200, + kCreateOpClassItem = 201, + kTableLikeClause = 202, + kFunctionParameter = 203, + kLockingClause = 204, + kRowMarkClause = 205, + kXmlSerialize = 206, + kWithClause = 207, + kInferClause = 208, + kOnConflictClause = 209, + kCommonTableExpr = 210, + kRoleSpec = 211, + kTriggerTransition = 212, + kPartitionElem = 213, + kPartitionSpec = 214, + kPartitionBoundSpec = 215, + kPartitionRangeDatum = 216, + kPartitionCmd = 217, + kVacuumRelation = 218, + kInlineCodeBlock = 219, + kCallContext = 220, + kInteger = 221, + kFloat = 222, + kString = 223, + kBitString = 224, + kNull = 225, + kList = 226, + kIntList = 227, + kOidList = 228, + NODE_NOT_SET = 0, + }; + + static inline const Node* internal_default_instance() { + return reinterpret_cast( + &_Node_default_instance_); + } + static constexpr int kIndexInFileMessages = + 2; + + friend void swap(Node& a, Node& b) { + a.Swap(&b); + } + inline void Swap(Node* other) { + if (other == this) return; + if (GetArena() == other->GetArena()) { + InternalSwap(other); + } else { + ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); + } + } + void UnsafeArenaSwap(Node* other) { + if (other == this) return; + GOOGLE_DCHECK(GetArena() == other->GetArena()); + InternalSwap(other); + } + + // implements Message ---------------------------------------------- + + inline Node* New() const final { + return CreateMaybeMessage(nullptr); + } + + Node* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { + return CreateMaybeMessage(arena); + } + void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void CopyFrom(const Node& from); + void MergeFrom(const Node& from); + PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; + bool IsInitialized() const final; + + size_t ByteSizeLong() const final; + const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; + ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( + ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; + int GetCachedSize() const final { return _cached_size_.Get(); } + + private: + inline void SharedCtor(); + inline void SharedDtor(); + void SetCachedSize(int size) const final; + void InternalSwap(Node* other); + friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; + static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { + return "pg_query.Node"; + } + protected: + explicit Node(::PROTOBUF_NAMESPACE_ID::Arena* arena); + private: + static void ArenaDtor(void* object); + inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); + public: + + ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; + private: + static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { + ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); + return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; + } + + public: + + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + + enum : int { + kAliasFieldNumber = 1, + kRangeVarFieldNumber = 2, + kTableFuncFieldNumber = 3, + kExprFieldNumber = 4, + kVarFieldNumber = 5, + kParamFieldNumber = 6, + kAggrefFieldNumber = 7, + kGroupingFuncFieldNumber = 8, + kWindowFuncFieldNumber = 9, + kSubscriptingRefFieldNumber = 10, + kFuncExprFieldNumber = 11, + kNamedArgExprFieldNumber = 12, + kOpExprFieldNumber = 13, + kDistinctExprFieldNumber = 14, + kNullIfExprFieldNumber = 15, + kScalarArrayOpExprFieldNumber = 16, + kBoolExprFieldNumber = 17, + kSubLinkFieldNumber = 18, + kSubPlanFieldNumber = 19, + kAlternativeSubPlanFieldNumber = 20, + kFieldSelectFieldNumber = 21, + kFieldStoreFieldNumber = 22, + kRelabelTypeFieldNumber = 23, + kCoerceViaIoFieldNumber = 24, + kArrayCoerceExprFieldNumber = 25, + kConvertRowtypeExprFieldNumber = 26, + kCollateExprFieldNumber = 27, + kCaseExprFieldNumber = 28, + kCaseWhenFieldNumber = 29, + kCaseTestExprFieldNumber = 30, + kArrayExprFieldNumber = 31, + kRowExprFieldNumber = 32, + kRowCompareExprFieldNumber = 33, + kCoalesceExprFieldNumber = 34, + kMinMaxExprFieldNumber = 35, + kSqlvalueFunctionFieldNumber = 36, + kXmlExprFieldNumber = 37, + kNullTestFieldNumber = 38, + kBooleanTestFieldNumber = 39, + kCoerceToDomainFieldNumber = 40, + kCoerceToDomainValueFieldNumber = 41, + kSetToDefaultFieldNumber = 42, + kCurrentOfExprFieldNumber = 43, + kNextValueExprFieldNumber = 44, + kInferenceElemFieldNumber = 45, + kTargetEntryFieldNumber = 46, + kRangeTblRefFieldNumber = 47, + kJoinExprFieldNumber = 48, + kFromExprFieldNumber = 49, + kOnConflictExprFieldNumber = 50, + kIntoClauseFieldNumber = 51, + kRawStmtFieldNumber = 52, + kQueryFieldNumber = 53, + kInsertStmtFieldNumber = 54, + kDeleteStmtFieldNumber = 55, + kUpdateStmtFieldNumber = 56, + kSelectStmtFieldNumber = 57, + kAlterTableStmtFieldNumber = 58, + kAlterTableCmdFieldNumber = 59, + kAlterDomainStmtFieldNumber = 60, + kSetOperationStmtFieldNumber = 61, + kGrantStmtFieldNumber = 62, + kGrantRoleStmtFieldNumber = 63, + kAlterDefaultPrivilegesStmtFieldNumber = 64, + kClosePortalStmtFieldNumber = 65, + kClusterStmtFieldNumber = 66, + kCopyStmtFieldNumber = 67, + kCreateStmtFieldNumber = 68, + kDefineStmtFieldNumber = 69, + kDropStmtFieldNumber = 70, + kTruncateStmtFieldNumber = 71, + kCommentStmtFieldNumber = 72, + kFetchStmtFieldNumber = 73, + kIndexStmtFieldNumber = 74, + kCreateFunctionStmtFieldNumber = 75, + kAlterFunctionStmtFieldNumber = 76, + kDoStmtFieldNumber = 77, + kRenameStmtFieldNumber = 78, + kRuleStmtFieldNumber = 79, + kNotifyStmtFieldNumber = 80, + kListenStmtFieldNumber = 81, + kUnlistenStmtFieldNumber = 82, + kTransactionStmtFieldNumber = 83, + kViewStmtFieldNumber = 84, + kLoadStmtFieldNumber = 85, + kCreateDomainStmtFieldNumber = 86, + kCreatedbStmtFieldNumber = 87, + kDropdbStmtFieldNumber = 88, + kVacuumStmtFieldNumber = 89, + kExplainStmtFieldNumber = 90, + kCreateTableAsStmtFieldNumber = 91, + kCreateSeqStmtFieldNumber = 92, + kAlterSeqStmtFieldNumber = 93, + kVariableSetStmtFieldNumber = 94, + kVariableShowStmtFieldNumber = 95, + kDiscardStmtFieldNumber = 96, + kCreateTrigStmtFieldNumber = 97, + kCreatePlangStmtFieldNumber = 98, + kCreateRoleStmtFieldNumber = 99, + kAlterRoleStmtFieldNumber = 100, + kDropRoleStmtFieldNumber = 101, + kLockStmtFieldNumber = 102, + kConstraintsSetStmtFieldNumber = 103, + kReindexStmtFieldNumber = 104, + kCheckPointStmtFieldNumber = 105, + kCreateSchemaStmtFieldNumber = 106, + kAlterDatabaseStmtFieldNumber = 107, + kAlterDatabaseSetStmtFieldNumber = 108, + kAlterRoleSetStmtFieldNumber = 109, + kCreateConversionStmtFieldNumber = 110, + kCreateCastStmtFieldNumber = 111, + kCreateOpClassStmtFieldNumber = 112, + kCreateOpFamilyStmtFieldNumber = 113, + kAlterOpFamilyStmtFieldNumber = 114, + kPrepareStmtFieldNumber = 115, + kExecuteStmtFieldNumber = 116, + kDeallocateStmtFieldNumber = 117, + kDeclareCursorStmtFieldNumber = 118, + kCreateTableSpaceStmtFieldNumber = 119, + kDropTableSpaceStmtFieldNumber = 120, + kAlterObjectDependsStmtFieldNumber = 121, + kAlterObjectSchemaStmtFieldNumber = 122, + kAlterOwnerStmtFieldNumber = 123, + kAlterOperatorStmtFieldNumber = 124, + kAlterTypeStmtFieldNumber = 125, + kDropOwnedStmtFieldNumber = 126, + kReassignOwnedStmtFieldNumber = 127, + kCompositeTypeStmtFieldNumber = 128, + kCreateEnumStmtFieldNumber = 129, + kCreateRangeStmtFieldNumber = 130, + kAlterEnumStmtFieldNumber = 131, + kAlterTsdictionaryStmtFieldNumber = 132, + kAlterTsconfigurationStmtFieldNumber = 133, + kCreateFdwStmtFieldNumber = 134, + kAlterFdwStmtFieldNumber = 135, + kCreateForeignServerStmtFieldNumber = 136, + kAlterForeignServerStmtFieldNumber = 137, + kCreateUserMappingStmtFieldNumber = 138, + kAlterUserMappingStmtFieldNumber = 139, + kDropUserMappingStmtFieldNumber = 140, + kAlterTableSpaceOptionsStmtFieldNumber = 141, + kAlterTableMoveAllStmtFieldNumber = 142, + kSecLabelStmtFieldNumber = 143, + kCreateForeignTableStmtFieldNumber = 144, + kImportForeignSchemaStmtFieldNumber = 145, + kCreateExtensionStmtFieldNumber = 146, + kAlterExtensionStmtFieldNumber = 147, + kAlterExtensionContentsStmtFieldNumber = 148, + kCreateEventTrigStmtFieldNumber = 149, + kAlterEventTrigStmtFieldNumber = 150, + kRefreshMatViewStmtFieldNumber = 151, + kReplicaIdentityStmtFieldNumber = 152, + kAlterSystemStmtFieldNumber = 153, + kCreatePolicyStmtFieldNumber = 154, + kAlterPolicyStmtFieldNumber = 155, + kCreateTransformStmtFieldNumber = 156, + kCreateAmStmtFieldNumber = 157, + kCreatePublicationStmtFieldNumber = 158, + kAlterPublicationStmtFieldNumber = 159, + kCreateSubscriptionStmtFieldNumber = 160, + kAlterSubscriptionStmtFieldNumber = 161, + kDropSubscriptionStmtFieldNumber = 162, + kCreateStatsStmtFieldNumber = 163, + kAlterCollationStmtFieldNumber = 164, + kCallStmtFieldNumber = 165, + kAlterStatsStmtFieldNumber = 166, + kAExprFieldNumber = 167, + kColumnRefFieldNumber = 168, + kParamRefFieldNumber = 169, + kAConstFieldNumber = 170, + kFuncCallFieldNumber = 171, + kAStarFieldNumber = 172, + kAIndicesFieldNumber = 173, + kAIndirectionFieldNumber = 174, + kAArrayExprFieldNumber = 175, + kResTargetFieldNumber = 176, + kMultiAssignRefFieldNumber = 177, + kTypeCastFieldNumber = 178, + kCollateClauseFieldNumber = 179, + kSortByFieldNumber = 180, + kWindowDefFieldNumber = 181, + kRangeSubselectFieldNumber = 182, + kRangeFunctionFieldNumber = 183, + kRangeTableSampleFieldNumber = 184, + kRangeTableFuncFieldNumber = 185, + kRangeTableFuncColFieldNumber = 186, + kTypeNameFieldNumber = 187, + kColumnDefFieldNumber = 188, + kIndexElemFieldNumber = 189, + kConstraintFieldNumber = 190, + kDefElemFieldNumber = 191, + kRangeTblEntryFieldNumber = 192, + kRangeTblFunctionFieldNumber = 193, + kTableSampleClauseFieldNumber = 194, + kWithCheckOptionFieldNumber = 195, + kSortGroupClauseFieldNumber = 196, + kGroupingSetFieldNumber = 197, + kWindowClauseFieldNumber = 198, + kObjectWithArgsFieldNumber = 199, + kAccessPrivFieldNumber = 200, + kCreateOpClassItemFieldNumber = 201, + kTableLikeClauseFieldNumber = 202, + kFunctionParameterFieldNumber = 203, + kLockingClauseFieldNumber = 204, + kRowMarkClauseFieldNumber = 205, + kXmlSerializeFieldNumber = 206, + kWithClauseFieldNumber = 207, + kInferClauseFieldNumber = 208, + kOnConflictClauseFieldNumber = 209, + kCommonTableExprFieldNumber = 210, + kRoleSpecFieldNumber = 211, + kTriggerTransitionFieldNumber = 212, + kPartitionElemFieldNumber = 213, + kPartitionSpecFieldNumber = 214, + kPartitionBoundSpecFieldNumber = 215, + kPartitionRangeDatumFieldNumber = 216, + kPartitionCmdFieldNumber = 217, + kVacuumRelationFieldNumber = 218, + kInlineCodeBlockFieldNumber = 219, + kCallContextFieldNumber = 220, + kIntegerFieldNumber = 221, + kFloatFieldNumber = 222, + kStringFieldNumber = 223, + kBitStringFieldNumber = 224, + kNullFieldNumber = 225, + kListFieldNumber = 226, + kIntListFieldNumber = 227, + kOidListFieldNumber = 228, + }; + // .pg_query.Alias alias = 1 [json_name = "Alias"]; + bool has_alias() const; + private: + bool _internal_has_alias() const; + public: + void clear_alias(); + const ::pg_query::Alias& alias() const; + ::pg_query::Alias* release_alias(); + ::pg_query::Alias* mutable_alias(); + void set_allocated_alias(::pg_query::Alias* alias); + private: + const ::pg_query::Alias& _internal_alias() const; + ::pg_query::Alias* _internal_mutable_alias(); + public: + void unsafe_arena_set_allocated_alias( + ::pg_query::Alias* alias); + ::pg_query::Alias* unsafe_arena_release_alias(); + + // .pg_query.RangeVar range_var = 2 [json_name = "RangeVar"]; + bool has_range_var() const; + private: + bool _internal_has_range_var() const; + public: + void clear_range_var(); + const ::pg_query::RangeVar& range_var() const; + ::pg_query::RangeVar* release_range_var(); + ::pg_query::RangeVar* mutable_range_var(); + void set_allocated_range_var(::pg_query::RangeVar* range_var); + private: + const ::pg_query::RangeVar& _internal_range_var() const; + ::pg_query::RangeVar* _internal_mutable_range_var(); + public: + void unsafe_arena_set_allocated_range_var( + ::pg_query::RangeVar* range_var); + ::pg_query::RangeVar* unsafe_arena_release_range_var(); + + // .pg_query.TableFunc table_func = 3 [json_name = "TableFunc"]; + bool has_table_func() const; + private: + bool _internal_has_table_func() const; + public: + void clear_table_func(); + const ::pg_query::TableFunc& table_func() const; + ::pg_query::TableFunc* release_table_func(); + ::pg_query::TableFunc* mutable_table_func(); + void set_allocated_table_func(::pg_query::TableFunc* table_func); + private: + const ::pg_query::TableFunc& _internal_table_func() const; + ::pg_query::TableFunc* _internal_mutable_table_func(); + public: + void unsafe_arena_set_allocated_table_func( + ::pg_query::TableFunc* table_func); + ::pg_query::TableFunc* unsafe_arena_release_table_func(); + + // .pg_query.Expr expr = 4 [json_name = "Expr"]; + bool has_expr() const; + private: + bool _internal_has_expr() const; + public: + void clear_expr(); + const ::pg_query::Expr& expr() const; + ::pg_query::Expr* release_expr(); + ::pg_query::Expr* mutable_expr(); + void set_allocated_expr(::pg_query::Expr* expr); + private: + const ::pg_query::Expr& _internal_expr() const; + ::pg_query::Expr* _internal_mutable_expr(); + public: + void unsafe_arena_set_allocated_expr( + ::pg_query::Expr* expr); + ::pg_query::Expr* unsafe_arena_release_expr(); + + // .pg_query.Var var = 5 [json_name = "Var"]; + bool has_var() const; + private: + bool _internal_has_var() const; + public: + void clear_var(); + const ::pg_query::Var& var() const; + ::pg_query::Var* release_var(); + ::pg_query::Var* mutable_var(); + void set_allocated_var(::pg_query::Var* var); + private: + const ::pg_query::Var& _internal_var() const; + ::pg_query::Var* _internal_mutable_var(); + public: + void unsafe_arena_set_allocated_var( + ::pg_query::Var* var); + ::pg_query::Var* unsafe_arena_release_var(); + + // .pg_query.Param param = 6 [json_name = "Param"]; + bool has_param() const; + private: + bool _internal_has_param() const; + public: + void clear_param(); + const ::pg_query::Param& param() const; + ::pg_query::Param* release_param(); + ::pg_query::Param* mutable_param(); + void set_allocated_param(::pg_query::Param* param); + private: + const ::pg_query::Param& _internal_param() const; + ::pg_query::Param* _internal_mutable_param(); + public: + void unsafe_arena_set_allocated_param( + ::pg_query::Param* param); + ::pg_query::Param* unsafe_arena_release_param(); + + // .pg_query.Aggref aggref = 7 [json_name = "Aggref"]; + bool has_aggref() const; + private: + bool _internal_has_aggref() const; + public: + void clear_aggref(); + const ::pg_query::Aggref& aggref() const; + ::pg_query::Aggref* release_aggref(); + ::pg_query::Aggref* mutable_aggref(); + void set_allocated_aggref(::pg_query::Aggref* aggref); + private: + const ::pg_query::Aggref& _internal_aggref() const; + ::pg_query::Aggref* _internal_mutable_aggref(); + public: + void unsafe_arena_set_allocated_aggref( + ::pg_query::Aggref* aggref); + ::pg_query::Aggref* unsafe_arena_release_aggref(); + + // .pg_query.GroupingFunc grouping_func = 8 [json_name = "GroupingFunc"]; + bool has_grouping_func() const; + private: + bool _internal_has_grouping_func() const; + public: + void clear_grouping_func(); + const ::pg_query::GroupingFunc& grouping_func() const; + ::pg_query::GroupingFunc* release_grouping_func(); + ::pg_query::GroupingFunc* mutable_grouping_func(); + void set_allocated_grouping_func(::pg_query::GroupingFunc* grouping_func); + private: + const ::pg_query::GroupingFunc& _internal_grouping_func() const; + ::pg_query::GroupingFunc* _internal_mutable_grouping_func(); + public: + void unsafe_arena_set_allocated_grouping_func( + ::pg_query::GroupingFunc* grouping_func); + ::pg_query::GroupingFunc* unsafe_arena_release_grouping_func(); + + // .pg_query.WindowFunc window_func = 9 [json_name = "WindowFunc"]; + bool has_window_func() const; + private: + bool _internal_has_window_func() const; + public: + void clear_window_func(); + const ::pg_query::WindowFunc& window_func() const; + ::pg_query::WindowFunc* release_window_func(); + ::pg_query::WindowFunc* mutable_window_func(); + void set_allocated_window_func(::pg_query::WindowFunc* window_func); + private: + const ::pg_query::WindowFunc& _internal_window_func() const; + ::pg_query::WindowFunc* _internal_mutable_window_func(); + public: + void unsafe_arena_set_allocated_window_func( + ::pg_query::WindowFunc* window_func); + ::pg_query::WindowFunc* unsafe_arena_release_window_func(); + + // .pg_query.SubscriptingRef subscripting_ref = 10 [json_name = "SubscriptingRef"]; + bool has_subscripting_ref() const; + private: + bool _internal_has_subscripting_ref() const; + public: + void clear_subscripting_ref(); + const ::pg_query::SubscriptingRef& subscripting_ref() const; + ::pg_query::SubscriptingRef* release_subscripting_ref(); + ::pg_query::SubscriptingRef* mutable_subscripting_ref(); + void set_allocated_subscripting_ref(::pg_query::SubscriptingRef* subscripting_ref); + private: + const ::pg_query::SubscriptingRef& _internal_subscripting_ref() const; + ::pg_query::SubscriptingRef* _internal_mutable_subscripting_ref(); + public: + void unsafe_arena_set_allocated_subscripting_ref( + ::pg_query::SubscriptingRef* subscripting_ref); + ::pg_query::SubscriptingRef* unsafe_arena_release_subscripting_ref(); + + // .pg_query.FuncExpr func_expr = 11 [json_name = "FuncExpr"]; + bool has_func_expr() const; + private: + bool _internal_has_func_expr() const; + public: + void clear_func_expr(); + const ::pg_query::FuncExpr& func_expr() const; + ::pg_query::FuncExpr* release_func_expr(); + ::pg_query::FuncExpr* mutable_func_expr(); + void set_allocated_func_expr(::pg_query::FuncExpr* func_expr); + private: + const ::pg_query::FuncExpr& _internal_func_expr() const; + ::pg_query::FuncExpr* _internal_mutable_func_expr(); + public: + void unsafe_arena_set_allocated_func_expr( + ::pg_query::FuncExpr* func_expr); + ::pg_query::FuncExpr* unsafe_arena_release_func_expr(); + + // .pg_query.NamedArgExpr named_arg_expr = 12 [json_name = "NamedArgExpr"]; + bool has_named_arg_expr() const; + private: + bool _internal_has_named_arg_expr() const; + public: + void clear_named_arg_expr(); + const ::pg_query::NamedArgExpr& named_arg_expr() const; + ::pg_query::NamedArgExpr* release_named_arg_expr(); + ::pg_query::NamedArgExpr* mutable_named_arg_expr(); + void set_allocated_named_arg_expr(::pg_query::NamedArgExpr* named_arg_expr); + private: + const ::pg_query::NamedArgExpr& _internal_named_arg_expr() const; + ::pg_query::NamedArgExpr* _internal_mutable_named_arg_expr(); + public: + void unsafe_arena_set_allocated_named_arg_expr( + ::pg_query::NamedArgExpr* named_arg_expr); + ::pg_query::NamedArgExpr* unsafe_arena_release_named_arg_expr(); + + // .pg_query.OpExpr op_expr = 13 [json_name = "OpExpr"]; + bool has_op_expr() const; + private: + bool _internal_has_op_expr() const; + public: + void clear_op_expr(); + const ::pg_query::OpExpr& op_expr() const; + ::pg_query::OpExpr* release_op_expr(); + ::pg_query::OpExpr* mutable_op_expr(); + void set_allocated_op_expr(::pg_query::OpExpr* op_expr); + private: + const ::pg_query::OpExpr& _internal_op_expr() const; + ::pg_query::OpExpr* _internal_mutable_op_expr(); + public: + void unsafe_arena_set_allocated_op_expr( + ::pg_query::OpExpr* op_expr); + ::pg_query::OpExpr* unsafe_arena_release_op_expr(); + + // .pg_query.DistinctExpr distinct_expr = 14 [json_name = "DistinctExpr"]; + bool has_distinct_expr() const; + private: + bool _internal_has_distinct_expr() const; + public: + void clear_distinct_expr(); + const ::pg_query::DistinctExpr& distinct_expr() const; + ::pg_query::DistinctExpr* release_distinct_expr(); + ::pg_query::DistinctExpr* mutable_distinct_expr(); + void set_allocated_distinct_expr(::pg_query::DistinctExpr* distinct_expr); + private: + const ::pg_query::DistinctExpr& _internal_distinct_expr() const; + ::pg_query::DistinctExpr* _internal_mutable_distinct_expr(); + public: + void unsafe_arena_set_allocated_distinct_expr( + ::pg_query::DistinctExpr* distinct_expr); + ::pg_query::DistinctExpr* unsafe_arena_release_distinct_expr(); + + // .pg_query.NullIfExpr null_if_expr = 15 [json_name = "NullIfExpr"]; + bool has_null_if_expr() const; + private: + bool _internal_has_null_if_expr() const; + public: + void clear_null_if_expr(); + const ::pg_query::NullIfExpr& null_if_expr() const; + ::pg_query::NullIfExpr* release_null_if_expr(); + ::pg_query::NullIfExpr* mutable_null_if_expr(); + void set_allocated_null_if_expr(::pg_query::NullIfExpr* null_if_expr); + private: + const ::pg_query::NullIfExpr& _internal_null_if_expr() const; + ::pg_query::NullIfExpr* _internal_mutable_null_if_expr(); + public: + void unsafe_arena_set_allocated_null_if_expr( + ::pg_query::NullIfExpr* null_if_expr); + ::pg_query::NullIfExpr* unsafe_arena_release_null_if_expr(); + + // .pg_query.ScalarArrayOpExpr scalar_array_op_expr = 16 [json_name = "ScalarArrayOpExpr"]; + bool has_scalar_array_op_expr() const; + private: + bool _internal_has_scalar_array_op_expr() const; + public: + void clear_scalar_array_op_expr(); + const ::pg_query::ScalarArrayOpExpr& scalar_array_op_expr() const; + ::pg_query::ScalarArrayOpExpr* release_scalar_array_op_expr(); + ::pg_query::ScalarArrayOpExpr* mutable_scalar_array_op_expr(); + void set_allocated_scalar_array_op_expr(::pg_query::ScalarArrayOpExpr* scalar_array_op_expr); + private: + const ::pg_query::ScalarArrayOpExpr& _internal_scalar_array_op_expr() const; + ::pg_query::ScalarArrayOpExpr* _internal_mutable_scalar_array_op_expr(); + public: + void unsafe_arena_set_allocated_scalar_array_op_expr( + ::pg_query::ScalarArrayOpExpr* scalar_array_op_expr); + ::pg_query::ScalarArrayOpExpr* unsafe_arena_release_scalar_array_op_expr(); + + // .pg_query.BoolExpr bool_expr = 17 [json_name = "BoolExpr"]; + bool has_bool_expr() const; + private: + bool _internal_has_bool_expr() const; + public: + void clear_bool_expr(); + const ::pg_query::BoolExpr& bool_expr() const; + ::pg_query::BoolExpr* release_bool_expr(); + ::pg_query::BoolExpr* mutable_bool_expr(); + void set_allocated_bool_expr(::pg_query::BoolExpr* bool_expr); + private: + const ::pg_query::BoolExpr& _internal_bool_expr() const; + ::pg_query::BoolExpr* _internal_mutable_bool_expr(); + public: + void unsafe_arena_set_allocated_bool_expr( + ::pg_query::BoolExpr* bool_expr); + ::pg_query::BoolExpr* unsafe_arena_release_bool_expr(); + + // .pg_query.SubLink sub_link = 18 [json_name = "SubLink"]; + bool has_sub_link() const; + private: + bool _internal_has_sub_link() const; + public: + void clear_sub_link(); + const ::pg_query::SubLink& sub_link() const; + ::pg_query::SubLink* release_sub_link(); + ::pg_query::SubLink* mutable_sub_link(); + void set_allocated_sub_link(::pg_query::SubLink* sub_link); + private: + const ::pg_query::SubLink& _internal_sub_link() const; + ::pg_query::SubLink* _internal_mutable_sub_link(); + public: + void unsafe_arena_set_allocated_sub_link( + ::pg_query::SubLink* sub_link); + ::pg_query::SubLink* unsafe_arena_release_sub_link(); + + // .pg_query.SubPlan sub_plan = 19 [json_name = "SubPlan"]; + bool has_sub_plan() const; + private: + bool _internal_has_sub_plan() const; + public: + void clear_sub_plan(); + const ::pg_query::SubPlan& sub_plan() const; + ::pg_query::SubPlan* release_sub_plan(); + ::pg_query::SubPlan* mutable_sub_plan(); + void set_allocated_sub_plan(::pg_query::SubPlan* sub_plan); + private: + const ::pg_query::SubPlan& _internal_sub_plan() const; + ::pg_query::SubPlan* _internal_mutable_sub_plan(); + public: + void unsafe_arena_set_allocated_sub_plan( + ::pg_query::SubPlan* sub_plan); + ::pg_query::SubPlan* unsafe_arena_release_sub_plan(); + + // .pg_query.AlternativeSubPlan alternative_sub_plan = 20 [json_name = "AlternativeSubPlan"]; + bool has_alternative_sub_plan() const; + private: + bool _internal_has_alternative_sub_plan() const; + public: + void clear_alternative_sub_plan(); + const ::pg_query::AlternativeSubPlan& alternative_sub_plan() const; + ::pg_query::AlternativeSubPlan* release_alternative_sub_plan(); + ::pg_query::AlternativeSubPlan* mutable_alternative_sub_plan(); + void set_allocated_alternative_sub_plan(::pg_query::AlternativeSubPlan* alternative_sub_plan); + private: + const ::pg_query::AlternativeSubPlan& _internal_alternative_sub_plan() const; + ::pg_query::AlternativeSubPlan* _internal_mutable_alternative_sub_plan(); + public: + void unsafe_arena_set_allocated_alternative_sub_plan( + ::pg_query::AlternativeSubPlan* alternative_sub_plan); + ::pg_query::AlternativeSubPlan* unsafe_arena_release_alternative_sub_plan(); + + // .pg_query.FieldSelect field_select = 21 [json_name = "FieldSelect"]; + bool has_field_select() const; + private: + bool _internal_has_field_select() const; + public: + void clear_field_select(); + const ::pg_query::FieldSelect& field_select() const; + ::pg_query::FieldSelect* release_field_select(); + ::pg_query::FieldSelect* mutable_field_select(); + void set_allocated_field_select(::pg_query::FieldSelect* field_select); + private: + const ::pg_query::FieldSelect& _internal_field_select() const; + ::pg_query::FieldSelect* _internal_mutable_field_select(); + public: + void unsafe_arena_set_allocated_field_select( + ::pg_query::FieldSelect* field_select); + ::pg_query::FieldSelect* unsafe_arena_release_field_select(); + + // .pg_query.FieldStore field_store = 22 [json_name = "FieldStore"]; + bool has_field_store() const; + private: + bool _internal_has_field_store() const; + public: + void clear_field_store(); + const ::pg_query::FieldStore& field_store() const; + ::pg_query::FieldStore* release_field_store(); + ::pg_query::FieldStore* mutable_field_store(); + void set_allocated_field_store(::pg_query::FieldStore* field_store); + private: + const ::pg_query::FieldStore& _internal_field_store() const; + ::pg_query::FieldStore* _internal_mutable_field_store(); + public: + void unsafe_arena_set_allocated_field_store( + ::pg_query::FieldStore* field_store); + ::pg_query::FieldStore* unsafe_arena_release_field_store(); + + // .pg_query.RelabelType relabel_type = 23 [json_name = "RelabelType"]; + bool has_relabel_type() const; + private: + bool _internal_has_relabel_type() const; + public: + void clear_relabel_type(); + const ::pg_query::RelabelType& relabel_type() const; + ::pg_query::RelabelType* release_relabel_type(); + ::pg_query::RelabelType* mutable_relabel_type(); + void set_allocated_relabel_type(::pg_query::RelabelType* relabel_type); + private: + const ::pg_query::RelabelType& _internal_relabel_type() const; + ::pg_query::RelabelType* _internal_mutable_relabel_type(); + public: + void unsafe_arena_set_allocated_relabel_type( + ::pg_query::RelabelType* relabel_type); + ::pg_query::RelabelType* unsafe_arena_release_relabel_type(); + + // .pg_query.CoerceViaIO coerce_via_io = 24 [json_name = "CoerceViaIO"]; + bool has_coerce_via_io() const; + private: + bool _internal_has_coerce_via_io() const; + public: + void clear_coerce_via_io(); + const ::pg_query::CoerceViaIO& coerce_via_io() const; + ::pg_query::CoerceViaIO* release_coerce_via_io(); + ::pg_query::CoerceViaIO* mutable_coerce_via_io(); + void set_allocated_coerce_via_io(::pg_query::CoerceViaIO* coerce_via_io); + private: + const ::pg_query::CoerceViaIO& _internal_coerce_via_io() const; + ::pg_query::CoerceViaIO* _internal_mutable_coerce_via_io(); + public: + void unsafe_arena_set_allocated_coerce_via_io( + ::pg_query::CoerceViaIO* coerce_via_io); + ::pg_query::CoerceViaIO* unsafe_arena_release_coerce_via_io(); + + // .pg_query.ArrayCoerceExpr array_coerce_expr = 25 [json_name = "ArrayCoerceExpr"]; + bool has_array_coerce_expr() const; + private: + bool _internal_has_array_coerce_expr() const; + public: + void clear_array_coerce_expr(); + const ::pg_query::ArrayCoerceExpr& array_coerce_expr() const; + ::pg_query::ArrayCoerceExpr* release_array_coerce_expr(); + ::pg_query::ArrayCoerceExpr* mutable_array_coerce_expr(); + void set_allocated_array_coerce_expr(::pg_query::ArrayCoerceExpr* array_coerce_expr); + private: + const ::pg_query::ArrayCoerceExpr& _internal_array_coerce_expr() const; + ::pg_query::ArrayCoerceExpr* _internal_mutable_array_coerce_expr(); + public: + void unsafe_arena_set_allocated_array_coerce_expr( + ::pg_query::ArrayCoerceExpr* array_coerce_expr); + ::pg_query::ArrayCoerceExpr* unsafe_arena_release_array_coerce_expr(); + + // .pg_query.ConvertRowtypeExpr convert_rowtype_expr = 26 [json_name = "ConvertRowtypeExpr"]; + bool has_convert_rowtype_expr() const; + private: + bool _internal_has_convert_rowtype_expr() const; + public: + void clear_convert_rowtype_expr(); + const ::pg_query::ConvertRowtypeExpr& convert_rowtype_expr() const; + ::pg_query::ConvertRowtypeExpr* release_convert_rowtype_expr(); + ::pg_query::ConvertRowtypeExpr* mutable_convert_rowtype_expr(); + void set_allocated_convert_rowtype_expr(::pg_query::ConvertRowtypeExpr* convert_rowtype_expr); + private: + const ::pg_query::ConvertRowtypeExpr& _internal_convert_rowtype_expr() const; + ::pg_query::ConvertRowtypeExpr* _internal_mutable_convert_rowtype_expr(); + public: + void unsafe_arena_set_allocated_convert_rowtype_expr( + ::pg_query::ConvertRowtypeExpr* convert_rowtype_expr); + ::pg_query::ConvertRowtypeExpr* unsafe_arena_release_convert_rowtype_expr(); + + // .pg_query.CollateExpr collate_expr = 27 [json_name = "CollateExpr"]; + bool has_collate_expr() const; + private: + bool _internal_has_collate_expr() const; + public: + void clear_collate_expr(); + const ::pg_query::CollateExpr& collate_expr() const; + ::pg_query::CollateExpr* release_collate_expr(); + ::pg_query::CollateExpr* mutable_collate_expr(); + void set_allocated_collate_expr(::pg_query::CollateExpr* collate_expr); + private: + const ::pg_query::CollateExpr& _internal_collate_expr() const; + ::pg_query::CollateExpr* _internal_mutable_collate_expr(); + public: + void unsafe_arena_set_allocated_collate_expr( + ::pg_query::CollateExpr* collate_expr); + ::pg_query::CollateExpr* unsafe_arena_release_collate_expr(); + + // .pg_query.CaseExpr case_expr = 28 [json_name = "CaseExpr"]; + bool has_case_expr() const; + private: + bool _internal_has_case_expr() const; + public: + void clear_case_expr(); + const ::pg_query::CaseExpr& case_expr() const; + ::pg_query::CaseExpr* release_case_expr(); + ::pg_query::CaseExpr* mutable_case_expr(); + void set_allocated_case_expr(::pg_query::CaseExpr* case_expr); + private: + const ::pg_query::CaseExpr& _internal_case_expr() const; + ::pg_query::CaseExpr* _internal_mutable_case_expr(); + public: + void unsafe_arena_set_allocated_case_expr( + ::pg_query::CaseExpr* case_expr); + ::pg_query::CaseExpr* unsafe_arena_release_case_expr(); + + // .pg_query.CaseWhen case_when = 29 [json_name = "CaseWhen"]; + bool has_case_when() const; + private: + bool _internal_has_case_when() const; + public: + void clear_case_when(); + const ::pg_query::CaseWhen& case_when() const; + ::pg_query::CaseWhen* release_case_when(); + ::pg_query::CaseWhen* mutable_case_when(); + void set_allocated_case_when(::pg_query::CaseWhen* case_when); + private: + const ::pg_query::CaseWhen& _internal_case_when() const; + ::pg_query::CaseWhen* _internal_mutable_case_when(); + public: + void unsafe_arena_set_allocated_case_when( + ::pg_query::CaseWhen* case_when); + ::pg_query::CaseWhen* unsafe_arena_release_case_when(); + + // .pg_query.CaseTestExpr case_test_expr = 30 [json_name = "CaseTestExpr"]; + bool has_case_test_expr() const; + private: + bool _internal_has_case_test_expr() const; + public: + void clear_case_test_expr(); + const ::pg_query::CaseTestExpr& case_test_expr() const; + ::pg_query::CaseTestExpr* release_case_test_expr(); + ::pg_query::CaseTestExpr* mutable_case_test_expr(); + void set_allocated_case_test_expr(::pg_query::CaseTestExpr* case_test_expr); + private: + const ::pg_query::CaseTestExpr& _internal_case_test_expr() const; + ::pg_query::CaseTestExpr* _internal_mutable_case_test_expr(); + public: + void unsafe_arena_set_allocated_case_test_expr( + ::pg_query::CaseTestExpr* case_test_expr); + ::pg_query::CaseTestExpr* unsafe_arena_release_case_test_expr(); + + // .pg_query.ArrayExpr array_expr = 31 [json_name = "ArrayExpr"]; + bool has_array_expr() const; + private: + bool _internal_has_array_expr() const; + public: + void clear_array_expr(); + const ::pg_query::ArrayExpr& array_expr() const; + ::pg_query::ArrayExpr* release_array_expr(); + ::pg_query::ArrayExpr* mutable_array_expr(); + void set_allocated_array_expr(::pg_query::ArrayExpr* array_expr); + private: + const ::pg_query::ArrayExpr& _internal_array_expr() const; + ::pg_query::ArrayExpr* _internal_mutable_array_expr(); + public: + void unsafe_arena_set_allocated_array_expr( + ::pg_query::ArrayExpr* array_expr); + ::pg_query::ArrayExpr* unsafe_arena_release_array_expr(); + + // .pg_query.RowExpr row_expr = 32 [json_name = "RowExpr"]; + bool has_row_expr() const; + private: + bool _internal_has_row_expr() const; + public: + void clear_row_expr(); + const ::pg_query::RowExpr& row_expr() const; + ::pg_query::RowExpr* release_row_expr(); + ::pg_query::RowExpr* mutable_row_expr(); + void set_allocated_row_expr(::pg_query::RowExpr* row_expr); + private: + const ::pg_query::RowExpr& _internal_row_expr() const; + ::pg_query::RowExpr* _internal_mutable_row_expr(); + public: + void unsafe_arena_set_allocated_row_expr( + ::pg_query::RowExpr* row_expr); + ::pg_query::RowExpr* unsafe_arena_release_row_expr(); + + // .pg_query.RowCompareExpr row_compare_expr = 33 [json_name = "RowCompareExpr"]; + bool has_row_compare_expr() const; + private: + bool _internal_has_row_compare_expr() const; + public: + void clear_row_compare_expr(); + const ::pg_query::RowCompareExpr& row_compare_expr() const; + ::pg_query::RowCompareExpr* release_row_compare_expr(); + ::pg_query::RowCompareExpr* mutable_row_compare_expr(); + void set_allocated_row_compare_expr(::pg_query::RowCompareExpr* row_compare_expr); + private: + const ::pg_query::RowCompareExpr& _internal_row_compare_expr() const; + ::pg_query::RowCompareExpr* _internal_mutable_row_compare_expr(); + public: + void unsafe_arena_set_allocated_row_compare_expr( + ::pg_query::RowCompareExpr* row_compare_expr); + ::pg_query::RowCompareExpr* unsafe_arena_release_row_compare_expr(); + + // .pg_query.CoalesceExpr coalesce_expr = 34 [json_name = "CoalesceExpr"]; + bool has_coalesce_expr() const; + private: + bool _internal_has_coalesce_expr() const; + public: + void clear_coalesce_expr(); + const ::pg_query::CoalesceExpr& coalesce_expr() const; + ::pg_query::CoalesceExpr* release_coalesce_expr(); + ::pg_query::CoalesceExpr* mutable_coalesce_expr(); + void set_allocated_coalesce_expr(::pg_query::CoalesceExpr* coalesce_expr); + private: + const ::pg_query::CoalesceExpr& _internal_coalesce_expr() const; + ::pg_query::CoalesceExpr* _internal_mutable_coalesce_expr(); + public: + void unsafe_arena_set_allocated_coalesce_expr( + ::pg_query::CoalesceExpr* coalesce_expr); + ::pg_query::CoalesceExpr* unsafe_arena_release_coalesce_expr(); + + // .pg_query.MinMaxExpr min_max_expr = 35 [json_name = "MinMaxExpr"]; + bool has_min_max_expr() const; + private: + bool _internal_has_min_max_expr() const; + public: + void clear_min_max_expr(); + const ::pg_query::MinMaxExpr& min_max_expr() const; + ::pg_query::MinMaxExpr* release_min_max_expr(); + ::pg_query::MinMaxExpr* mutable_min_max_expr(); + void set_allocated_min_max_expr(::pg_query::MinMaxExpr* min_max_expr); + private: + const ::pg_query::MinMaxExpr& _internal_min_max_expr() const; + ::pg_query::MinMaxExpr* _internal_mutable_min_max_expr(); + public: + void unsafe_arena_set_allocated_min_max_expr( + ::pg_query::MinMaxExpr* min_max_expr); + ::pg_query::MinMaxExpr* unsafe_arena_release_min_max_expr(); + + // .pg_query.SQLValueFunction sqlvalue_function = 36 [json_name = "SQLValueFunction"]; + bool has_sqlvalue_function() const; + private: + bool _internal_has_sqlvalue_function() const; + public: + void clear_sqlvalue_function(); + const ::pg_query::SQLValueFunction& sqlvalue_function() const; + ::pg_query::SQLValueFunction* release_sqlvalue_function(); + ::pg_query::SQLValueFunction* mutable_sqlvalue_function(); + void set_allocated_sqlvalue_function(::pg_query::SQLValueFunction* sqlvalue_function); + private: + const ::pg_query::SQLValueFunction& _internal_sqlvalue_function() const; + ::pg_query::SQLValueFunction* _internal_mutable_sqlvalue_function(); + public: + void unsafe_arena_set_allocated_sqlvalue_function( + ::pg_query::SQLValueFunction* sqlvalue_function); + ::pg_query::SQLValueFunction* unsafe_arena_release_sqlvalue_function(); + + // .pg_query.XmlExpr xml_expr = 37 [json_name = "XmlExpr"]; + bool has_xml_expr() const; + private: + bool _internal_has_xml_expr() const; + public: + void clear_xml_expr(); + const ::pg_query::XmlExpr& xml_expr() const; + ::pg_query::XmlExpr* release_xml_expr(); + ::pg_query::XmlExpr* mutable_xml_expr(); + void set_allocated_xml_expr(::pg_query::XmlExpr* xml_expr); + private: + const ::pg_query::XmlExpr& _internal_xml_expr() const; + ::pg_query::XmlExpr* _internal_mutable_xml_expr(); + public: + void unsafe_arena_set_allocated_xml_expr( + ::pg_query::XmlExpr* xml_expr); + ::pg_query::XmlExpr* unsafe_arena_release_xml_expr(); + + // .pg_query.NullTest null_test = 38 [json_name = "NullTest"]; + bool has_null_test() const; + private: + bool _internal_has_null_test() const; + public: + void clear_null_test(); + const ::pg_query::NullTest& null_test() const; + ::pg_query::NullTest* release_null_test(); + ::pg_query::NullTest* mutable_null_test(); + void set_allocated_null_test(::pg_query::NullTest* null_test); + private: + const ::pg_query::NullTest& _internal_null_test() const; + ::pg_query::NullTest* _internal_mutable_null_test(); + public: + void unsafe_arena_set_allocated_null_test( + ::pg_query::NullTest* null_test); + ::pg_query::NullTest* unsafe_arena_release_null_test(); + + // .pg_query.BooleanTest boolean_test = 39 [json_name = "BooleanTest"]; + bool has_boolean_test() const; + private: + bool _internal_has_boolean_test() const; + public: + void clear_boolean_test(); + const ::pg_query::BooleanTest& boolean_test() const; + ::pg_query::BooleanTest* release_boolean_test(); + ::pg_query::BooleanTest* mutable_boolean_test(); + void set_allocated_boolean_test(::pg_query::BooleanTest* boolean_test); + private: + const ::pg_query::BooleanTest& _internal_boolean_test() const; + ::pg_query::BooleanTest* _internal_mutable_boolean_test(); + public: + void unsafe_arena_set_allocated_boolean_test( + ::pg_query::BooleanTest* boolean_test); + ::pg_query::BooleanTest* unsafe_arena_release_boolean_test(); + + // .pg_query.CoerceToDomain coerce_to_domain = 40 [json_name = "CoerceToDomain"]; + bool has_coerce_to_domain() const; + private: + bool _internal_has_coerce_to_domain() const; + public: + void clear_coerce_to_domain(); + const ::pg_query::CoerceToDomain& coerce_to_domain() const; + ::pg_query::CoerceToDomain* release_coerce_to_domain(); + ::pg_query::CoerceToDomain* mutable_coerce_to_domain(); + void set_allocated_coerce_to_domain(::pg_query::CoerceToDomain* coerce_to_domain); + private: + const ::pg_query::CoerceToDomain& _internal_coerce_to_domain() const; + ::pg_query::CoerceToDomain* _internal_mutable_coerce_to_domain(); + public: + void unsafe_arena_set_allocated_coerce_to_domain( + ::pg_query::CoerceToDomain* coerce_to_domain); + ::pg_query::CoerceToDomain* unsafe_arena_release_coerce_to_domain(); + + // .pg_query.CoerceToDomainValue coerce_to_domain_value = 41 [json_name = "CoerceToDomainValue"]; + bool has_coerce_to_domain_value() const; + private: + bool _internal_has_coerce_to_domain_value() const; + public: + void clear_coerce_to_domain_value(); + const ::pg_query::CoerceToDomainValue& coerce_to_domain_value() const; + ::pg_query::CoerceToDomainValue* release_coerce_to_domain_value(); + ::pg_query::CoerceToDomainValue* mutable_coerce_to_domain_value(); + void set_allocated_coerce_to_domain_value(::pg_query::CoerceToDomainValue* coerce_to_domain_value); + private: + const ::pg_query::CoerceToDomainValue& _internal_coerce_to_domain_value() const; + ::pg_query::CoerceToDomainValue* _internal_mutable_coerce_to_domain_value(); + public: + void unsafe_arena_set_allocated_coerce_to_domain_value( + ::pg_query::CoerceToDomainValue* coerce_to_domain_value); + ::pg_query::CoerceToDomainValue* unsafe_arena_release_coerce_to_domain_value(); + + // .pg_query.SetToDefault set_to_default = 42 [json_name = "SetToDefault"]; + bool has_set_to_default() const; + private: + bool _internal_has_set_to_default() const; + public: + void clear_set_to_default(); + const ::pg_query::SetToDefault& set_to_default() const; + ::pg_query::SetToDefault* release_set_to_default(); + ::pg_query::SetToDefault* mutable_set_to_default(); + void set_allocated_set_to_default(::pg_query::SetToDefault* set_to_default); + private: + const ::pg_query::SetToDefault& _internal_set_to_default() const; + ::pg_query::SetToDefault* _internal_mutable_set_to_default(); + public: + void unsafe_arena_set_allocated_set_to_default( + ::pg_query::SetToDefault* set_to_default); + ::pg_query::SetToDefault* unsafe_arena_release_set_to_default(); + + // .pg_query.CurrentOfExpr current_of_expr = 43 [json_name = "CurrentOfExpr"]; + bool has_current_of_expr() const; + private: + bool _internal_has_current_of_expr() const; + public: + void clear_current_of_expr(); + const ::pg_query::CurrentOfExpr& current_of_expr() const; + ::pg_query::CurrentOfExpr* release_current_of_expr(); + ::pg_query::CurrentOfExpr* mutable_current_of_expr(); + void set_allocated_current_of_expr(::pg_query::CurrentOfExpr* current_of_expr); + private: + const ::pg_query::CurrentOfExpr& _internal_current_of_expr() const; + ::pg_query::CurrentOfExpr* _internal_mutable_current_of_expr(); + public: + void unsafe_arena_set_allocated_current_of_expr( + ::pg_query::CurrentOfExpr* current_of_expr); + ::pg_query::CurrentOfExpr* unsafe_arena_release_current_of_expr(); + + // .pg_query.NextValueExpr next_value_expr = 44 [json_name = "NextValueExpr"]; + bool has_next_value_expr() const; + private: + bool _internal_has_next_value_expr() const; + public: + void clear_next_value_expr(); + const ::pg_query::NextValueExpr& next_value_expr() const; + ::pg_query::NextValueExpr* release_next_value_expr(); + ::pg_query::NextValueExpr* mutable_next_value_expr(); + void set_allocated_next_value_expr(::pg_query::NextValueExpr* next_value_expr); + private: + const ::pg_query::NextValueExpr& _internal_next_value_expr() const; + ::pg_query::NextValueExpr* _internal_mutable_next_value_expr(); + public: + void unsafe_arena_set_allocated_next_value_expr( + ::pg_query::NextValueExpr* next_value_expr); + ::pg_query::NextValueExpr* unsafe_arena_release_next_value_expr(); + + // .pg_query.InferenceElem inference_elem = 45 [json_name = "InferenceElem"]; + bool has_inference_elem() const; + private: + bool _internal_has_inference_elem() const; + public: + void clear_inference_elem(); + const ::pg_query::InferenceElem& inference_elem() const; + ::pg_query::InferenceElem* release_inference_elem(); + ::pg_query::InferenceElem* mutable_inference_elem(); + void set_allocated_inference_elem(::pg_query::InferenceElem* inference_elem); + private: + const ::pg_query::InferenceElem& _internal_inference_elem() const; + ::pg_query::InferenceElem* _internal_mutable_inference_elem(); + public: + void unsafe_arena_set_allocated_inference_elem( + ::pg_query::InferenceElem* inference_elem); + ::pg_query::InferenceElem* unsafe_arena_release_inference_elem(); + + // .pg_query.TargetEntry target_entry = 46 [json_name = "TargetEntry"]; + bool has_target_entry() const; + private: + bool _internal_has_target_entry() const; + public: + void clear_target_entry(); + const ::pg_query::TargetEntry& target_entry() const; + ::pg_query::TargetEntry* release_target_entry(); + ::pg_query::TargetEntry* mutable_target_entry(); + void set_allocated_target_entry(::pg_query::TargetEntry* target_entry); + private: + const ::pg_query::TargetEntry& _internal_target_entry() const; + ::pg_query::TargetEntry* _internal_mutable_target_entry(); + public: + void unsafe_arena_set_allocated_target_entry( + ::pg_query::TargetEntry* target_entry); + ::pg_query::TargetEntry* unsafe_arena_release_target_entry(); + + // .pg_query.RangeTblRef range_tbl_ref = 47 [json_name = "RangeTblRef"]; + bool has_range_tbl_ref() const; + private: + bool _internal_has_range_tbl_ref() const; + public: + void clear_range_tbl_ref(); + const ::pg_query::RangeTblRef& range_tbl_ref() const; + ::pg_query::RangeTblRef* release_range_tbl_ref(); + ::pg_query::RangeTblRef* mutable_range_tbl_ref(); + void set_allocated_range_tbl_ref(::pg_query::RangeTblRef* range_tbl_ref); + private: + const ::pg_query::RangeTblRef& _internal_range_tbl_ref() const; + ::pg_query::RangeTblRef* _internal_mutable_range_tbl_ref(); + public: + void unsafe_arena_set_allocated_range_tbl_ref( + ::pg_query::RangeTblRef* range_tbl_ref); + ::pg_query::RangeTblRef* unsafe_arena_release_range_tbl_ref(); + + // .pg_query.JoinExpr join_expr = 48 [json_name = "JoinExpr"]; + bool has_join_expr() const; + private: + bool _internal_has_join_expr() const; + public: + void clear_join_expr(); + const ::pg_query::JoinExpr& join_expr() const; + ::pg_query::JoinExpr* release_join_expr(); + ::pg_query::JoinExpr* mutable_join_expr(); + void set_allocated_join_expr(::pg_query::JoinExpr* join_expr); + private: + const ::pg_query::JoinExpr& _internal_join_expr() const; + ::pg_query::JoinExpr* _internal_mutable_join_expr(); + public: + void unsafe_arena_set_allocated_join_expr( + ::pg_query::JoinExpr* join_expr); + ::pg_query::JoinExpr* unsafe_arena_release_join_expr(); + + // .pg_query.FromExpr from_expr = 49 [json_name = "FromExpr"]; + bool has_from_expr() const; + private: + bool _internal_has_from_expr() const; + public: + void clear_from_expr(); + const ::pg_query::FromExpr& from_expr() const; + ::pg_query::FromExpr* release_from_expr(); + ::pg_query::FromExpr* mutable_from_expr(); + void set_allocated_from_expr(::pg_query::FromExpr* from_expr); + private: + const ::pg_query::FromExpr& _internal_from_expr() const; + ::pg_query::FromExpr* _internal_mutable_from_expr(); + public: + void unsafe_arena_set_allocated_from_expr( + ::pg_query::FromExpr* from_expr); + ::pg_query::FromExpr* unsafe_arena_release_from_expr(); + + // .pg_query.OnConflictExpr on_conflict_expr = 50 [json_name = "OnConflictExpr"]; + bool has_on_conflict_expr() const; + private: + bool _internal_has_on_conflict_expr() const; + public: + void clear_on_conflict_expr(); + const ::pg_query::OnConflictExpr& on_conflict_expr() const; + ::pg_query::OnConflictExpr* release_on_conflict_expr(); + ::pg_query::OnConflictExpr* mutable_on_conflict_expr(); + void set_allocated_on_conflict_expr(::pg_query::OnConflictExpr* on_conflict_expr); + private: + const ::pg_query::OnConflictExpr& _internal_on_conflict_expr() const; + ::pg_query::OnConflictExpr* _internal_mutable_on_conflict_expr(); + public: + void unsafe_arena_set_allocated_on_conflict_expr( + ::pg_query::OnConflictExpr* on_conflict_expr); + ::pg_query::OnConflictExpr* unsafe_arena_release_on_conflict_expr(); + + // .pg_query.IntoClause into_clause = 51 [json_name = "IntoClause"]; + bool has_into_clause() const; + private: + bool _internal_has_into_clause() const; + public: + void clear_into_clause(); + const ::pg_query::IntoClause& into_clause() const; + ::pg_query::IntoClause* release_into_clause(); + ::pg_query::IntoClause* mutable_into_clause(); + void set_allocated_into_clause(::pg_query::IntoClause* into_clause); + private: + const ::pg_query::IntoClause& _internal_into_clause() const; + ::pg_query::IntoClause* _internal_mutable_into_clause(); + public: + void unsafe_arena_set_allocated_into_clause( + ::pg_query::IntoClause* into_clause); + ::pg_query::IntoClause* unsafe_arena_release_into_clause(); + + // .pg_query.RawStmt raw_stmt = 52 [json_name = "RawStmt"]; + bool has_raw_stmt() const; + private: + bool _internal_has_raw_stmt() const; + public: + void clear_raw_stmt(); + const ::pg_query::RawStmt& raw_stmt() const; + ::pg_query::RawStmt* release_raw_stmt(); + ::pg_query::RawStmt* mutable_raw_stmt(); + void set_allocated_raw_stmt(::pg_query::RawStmt* raw_stmt); + private: + const ::pg_query::RawStmt& _internal_raw_stmt() const; + ::pg_query::RawStmt* _internal_mutable_raw_stmt(); + public: + void unsafe_arena_set_allocated_raw_stmt( + ::pg_query::RawStmt* raw_stmt); + ::pg_query::RawStmt* unsafe_arena_release_raw_stmt(); + + // .pg_query.Query query = 53 [json_name = "Query"]; + bool has_query() const; + private: + bool _internal_has_query() const; + public: + void clear_query(); + const ::pg_query::Query& query() const; + ::pg_query::Query* release_query(); + ::pg_query::Query* mutable_query(); + void set_allocated_query(::pg_query::Query* query); + private: + const ::pg_query::Query& _internal_query() const; + ::pg_query::Query* _internal_mutable_query(); + public: + void unsafe_arena_set_allocated_query( + ::pg_query::Query* query); + ::pg_query::Query* unsafe_arena_release_query(); + + // .pg_query.InsertStmt insert_stmt = 54 [json_name = "InsertStmt"]; + bool has_insert_stmt() const; + private: + bool _internal_has_insert_stmt() const; + public: + void clear_insert_stmt(); + const ::pg_query::InsertStmt& insert_stmt() const; + ::pg_query::InsertStmt* release_insert_stmt(); + ::pg_query::InsertStmt* mutable_insert_stmt(); + void set_allocated_insert_stmt(::pg_query::InsertStmt* insert_stmt); + private: + const ::pg_query::InsertStmt& _internal_insert_stmt() const; + ::pg_query::InsertStmt* _internal_mutable_insert_stmt(); + public: + void unsafe_arena_set_allocated_insert_stmt( + ::pg_query::InsertStmt* insert_stmt); + ::pg_query::InsertStmt* unsafe_arena_release_insert_stmt(); + + // .pg_query.DeleteStmt delete_stmt = 55 [json_name = "DeleteStmt"]; + bool has_delete_stmt() const; + private: + bool _internal_has_delete_stmt() const; + public: + void clear_delete_stmt(); + const ::pg_query::DeleteStmt& delete_stmt() const; + ::pg_query::DeleteStmt* release_delete_stmt(); + ::pg_query::DeleteStmt* mutable_delete_stmt(); + void set_allocated_delete_stmt(::pg_query::DeleteStmt* delete_stmt); + private: + const ::pg_query::DeleteStmt& _internal_delete_stmt() const; + ::pg_query::DeleteStmt* _internal_mutable_delete_stmt(); + public: + void unsafe_arena_set_allocated_delete_stmt( + ::pg_query::DeleteStmt* delete_stmt); + ::pg_query::DeleteStmt* unsafe_arena_release_delete_stmt(); + + // .pg_query.UpdateStmt update_stmt = 56 [json_name = "UpdateStmt"]; + bool has_update_stmt() const; + private: + bool _internal_has_update_stmt() const; + public: + void clear_update_stmt(); + const ::pg_query::UpdateStmt& update_stmt() const; + ::pg_query::UpdateStmt* release_update_stmt(); + ::pg_query::UpdateStmt* mutable_update_stmt(); + void set_allocated_update_stmt(::pg_query::UpdateStmt* update_stmt); + private: + const ::pg_query::UpdateStmt& _internal_update_stmt() const; + ::pg_query::UpdateStmt* _internal_mutable_update_stmt(); + public: + void unsafe_arena_set_allocated_update_stmt( + ::pg_query::UpdateStmt* update_stmt); + ::pg_query::UpdateStmt* unsafe_arena_release_update_stmt(); + + // .pg_query.SelectStmt select_stmt = 57 [json_name = "SelectStmt"]; + bool has_select_stmt() const; + private: + bool _internal_has_select_stmt() const; + public: + void clear_select_stmt(); + const ::pg_query::SelectStmt& select_stmt() const; + ::pg_query::SelectStmt* release_select_stmt(); + ::pg_query::SelectStmt* mutable_select_stmt(); + void set_allocated_select_stmt(::pg_query::SelectStmt* select_stmt); + private: + const ::pg_query::SelectStmt& _internal_select_stmt() const; + ::pg_query::SelectStmt* _internal_mutable_select_stmt(); + public: + void unsafe_arena_set_allocated_select_stmt( + ::pg_query::SelectStmt* select_stmt); + ::pg_query::SelectStmt* unsafe_arena_release_select_stmt(); + + // .pg_query.AlterTableStmt alter_table_stmt = 58 [json_name = "AlterTableStmt"]; + bool has_alter_table_stmt() const; + private: + bool _internal_has_alter_table_stmt() const; + public: + void clear_alter_table_stmt(); + const ::pg_query::AlterTableStmt& alter_table_stmt() const; + ::pg_query::AlterTableStmt* release_alter_table_stmt(); + ::pg_query::AlterTableStmt* mutable_alter_table_stmt(); + void set_allocated_alter_table_stmt(::pg_query::AlterTableStmt* alter_table_stmt); + private: + const ::pg_query::AlterTableStmt& _internal_alter_table_stmt() const; + ::pg_query::AlterTableStmt* _internal_mutable_alter_table_stmt(); + public: + void unsafe_arena_set_allocated_alter_table_stmt( + ::pg_query::AlterTableStmt* alter_table_stmt); + ::pg_query::AlterTableStmt* unsafe_arena_release_alter_table_stmt(); + + // .pg_query.AlterTableCmd alter_table_cmd = 59 [json_name = "AlterTableCmd"]; + bool has_alter_table_cmd() const; + private: + bool _internal_has_alter_table_cmd() const; + public: + void clear_alter_table_cmd(); + const ::pg_query::AlterTableCmd& alter_table_cmd() const; + ::pg_query::AlterTableCmd* release_alter_table_cmd(); + ::pg_query::AlterTableCmd* mutable_alter_table_cmd(); + void set_allocated_alter_table_cmd(::pg_query::AlterTableCmd* alter_table_cmd); + private: + const ::pg_query::AlterTableCmd& _internal_alter_table_cmd() const; + ::pg_query::AlterTableCmd* _internal_mutable_alter_table_cmd(); + public: + void unsafe_arena_set_allocated_alter_table_cmd( + ::pg_query::AlterTableCmd* alter_table_cmd); + ::pg_query::AlterTableCmd* unsafe_arena_release_alter_table_cmd(); + + // .pg_query.AlterDomainStmt alter_domain_stmt = 60 [json_name = "AlterDomainStmt"]; + bool has_alter_domain_stmt() const; + private: + bool _internal_has_alter_domain_stmt() const; + public: + void clear_alter_domain_stmt(); + const ::pg_query::AlterDomainStmt& alter_domain_stmt() const; + ::pg_query::AlterDomainStmt* release_alter_domain_stmt(); + ::pg_query::AlterDomainStmt* mutable_alter_domain_stmt(); + void set_allocated_alter_domain_stmt(::pg_query::AlterDomainStmt* alter_domain_stmt); + private: + const ::pg_query::AlterDomainStmt& _internal_alter_domain_stmt() const; + ::pg_query::AlterDomainStmt* _internal_mutable_alter_domain_stmt(); + public: + void unsafe_arena_set_allocated_alter_domain_stmt( + ::pg_query::AlterDomainStmt* alter_domain_stmt); + ::pg_query::AlterDomainStmt* unsafe_arena_release_alter_domain_stmt(); + + // .pg_query.SetOperationStmt set_operation_stmt = 61 [json_name = "SetOperationStmt"]; + bool has_set_operation_stmt() const; + private: + bool _internal_has_set_operation_stmt() const; + public: + void clear_set_operation_stmt(); + const ::pg_query::SetOperationStmt& set_operation_stmt() const; + ::pg_query::SetOperationStmt* release_set_operation_stmt(); + ::pg_query::SetOperationStmt* mutable_set_operation_stmt(); + void set_allocated_set_operation_stmt(::pg_query::SetOperationStmt* set_operation_stmt); + private: + const ::pg_query::SetOperationStmt& _internal_set_operation_stmt() const; + ::pg_query::SetOperationStmt* _internal_mutable_set_operation_stmt(); + public: + void unsafe_arena_set_allocated_set_operation_stmt( + ::pg_query::SetOperationStmt* set_operation_stmt); + ::pg_query::SetOperationStmt* unsafe_arena_release_set_operation_stmt(); + + // .pg_query.GrantStmt grant_stmt = 62 [json_name = "GrantStmt"]; + bool has_grant_stmt() const; + private: + bool _internal_has_grant_stmt() const; + public: + void clear_grant_stmt(); + const ::pg_query::GrantStmt& grant_stmt() const; + ::pg_query::GrantStmt* release_grant_stmt(); + ::pg_query::GrantStmt* mutable_grant_stmt(); + void set_allocated_grant_stmt(::pg_query::GrantStmt* grant_stmt); + private: + const ::pg_query::GrantStmt& _internal_grant_stmt() const; + ::pg_query::GrantStmt* _internal_mutable_grant_stmt(); + public: + void unsafe_arena_set_allocated_grant_stmt( + ::pg_query::GrantStmt* grant_stmt); + ::pg_query::GrantStmt* unsafe_arena_release_grant_stmt(); + + // .pg_query.GrantRoleStmt grant_role_stmt = 63 [json_name = "GrantRoleStmt"]; + bool has_grant_role_stmt() const; + private: + bool _internal_has_grant_role_stmt() const; + public: + void clear_grant_role_stmt(); + const ::pg_query::GrantRoleStmt& grant_role_stmt() const; + ::pg_query::GrantRoleStmt* release_grant_role_stmt(); + ::pg_query::GrantRoleStmt* mutable_grant_role_stmt(); + void set_allocated_grant_role_stmt(::pg_query::GrantRoleStmt* grant_role_stmt); + private: + const ::pg_query::GrantRoleStmt& _internal_grant_role_stmt() const; + ::pg_query::GrantRoleStmt* _internal_mutable_grant_role_stmt(); + public: + void unsafe_arena_set_allocated_grant_role_stmt( + ::pg_query::GrantRoleStmt* grant_role_stmt); + ::pg_query::GrantRoleStmt* unsafe_arena_release_grant_role_stmt(); + + // .pg_query.AlterDefaultPrivilegesStmt alter_default_privileges_stmt = 64 [json_name = "AlterDefaultPrivilegesStmt"]; + bool has_alter_default_privileges_stmt() const; + private: + bool _internal_has_alter_default_privileges_stmt() const; + public: + void clear_alter_default_privileges_stmt(); + const ::pg_query::AlterDefaultPrivilegesStmt& alter_default_privileges_stmt() const; + ::pg_query::AlterDefaultPrivilegesStmt* release_alter_default_privileges_stmt(); + ::pg_query::AlterDefaultPrivilegesStmt* mutable_alter_default_privileges_stmt(); + void set_allocated_alter_default_privileges_stmt(::pg_query::AlterDefaultPrivilegesStmt* alter_default_privileges_stmt); + private: + const ::pg_query::AlterDefaultPrivilegesStmt& _internal_alter_default_privileges_stmt() const; + ::pg_query::AlterDefaultPrivilegesStmt* _internal_mutable_alter_default_privileges_stmt(); + public: + void unsafe_arena_set_allocated_alter_default_privileges_stmt( + ::pg_query::AlterDefaultPrivilegesStmt* alter_default_privileges_stmt); + ::pg_query::AlterDefaultPrivilegesStmt* unsafe_arena_release_alter_default_privileges_stmt(); + + // .pg_query.ClosePortalStmt close_portal_stmt = 65 [json_name = "ClosePortalStmt"]; + bool has_close_portal_stmt() const; + private: + bool _internal_has_close_portal_stmt() const; + public: + void clear_close_portal_stmt(); + const ::pg_query::ClosePortalStmt& close_portal_stmt() const; + ::pg_query::ClosePortalStmt* release_close_portal_stmt(); + ::pg_query::ClosePortalStmt* mutable_close_portal_stmt(); + void set_allocated_close_portal_stmt(::pg_query::ClosePortalStmt* close_portal_stmt); + private: + const ::pg_query::ClosePortalStmt& _internal_close_portal_stmt() const; + ::pg_query::ClosePortalStmt* _internal_mutable_close_portal_stmt(); + public: + void unsafe_arena_set_allocated_close_portal_stmt( + ::pg_query::ClosePortalStmt* close_portal_stmt); + ::pg_query::ClosePortalStmt* unsafe_arena_release_close_portal_stmt(); + + // .pg_query.ClusterStmt cluster_stmt = 66 [json_name = "ClusterStmt"]; + bool has_cluster_stmt() const; + private: + bool _internal_has_cluster_stmt() const; + public: + void clear_cluster_stmt(); + const ::pg_query::ClusterStmt& cluster_stmt() const; + ::pg_query::ClusterStmt* release_cluster_stmt(); + ::pg_query::ClusterStmt* mutable_cluster_stmt(); + void set_allocated_cluster_stmt(::pg_query::ClusterStmt* cluster_stmt); + private: + const ::pg_query::ClusterStmt& _internal_cluster_stmt() const; + ::pg_query::ClusterStmt* _internal_mutable_cluster_stmt(); + public: + void unsafe_arena_set_allocated_cluster_stmt( + ::pg_query::ClusterStmt* cluster_stmt); + ::pg_query::ClusterStmt* unsafe_arena_release_cluster_stmt(); + + // .pg_query.CopyStmt copy_stmt = 67 [json_name = "CopyStmt"]; + bool has_copy_stmt() const; + private: + bool _internal_has_copy_stmt() const; + public: + void clear_copy_stmt(); + const ::pg_query::CopyStmt& copy_stmt() const; + ::pg_query::CopyStmt* release_copy_stmt(); + ::pg_query::CopyStmt* mutable_copy_stmt(); + void set_allocated_copy_stmt(::pg_query::CopyStmt* copy_stmt); + private: + const ::pg_query::CopyStmt& _internal_copy_stmt() const; + ::pg_query::CopyStmt* _internal_mutable_copy_stmt(); + public: + void unsafe_arena_set_allocated_copy_stmt( + ::pg_query::CopyStmt* copy_stmt); + ::pg_query::CopyStmt* unsafe_arena_release_copy_stmt(); + + // .pg_query.CreateStmt create_stmt = 68 [json_name = "CreateStmt"]; + bool has_create_stmt() const; + private: + bool _internal_has_create_stmt() const; + public: + void clear_create_stmt(); + const ::pg_query::CreateStmt& create_stmt() const; + ::pg_query::CreateStmt* release_create_stmt(); + ::pg_query::CreateStmt* mutable_create_stmt(); + void set_allocated_create_stmt(::pg_query::CreateStmt* create_stmt); + private: + const ::pg_query::CreateStmt& _internal_create_stmt() const; + ::pg_query::CreateStmt* _internal_mutable_create_stmt(); + public: + void unsafe_arena_set_allocated_create_stmt( + ::pg_query::CreateStmt* create_stmt); + ::pg_query::CreateStmt* unsafe_arena_release_create_stmt(); + + // .pg_query.DefineStmt define_stmt = 69 [json_name = "DefineStmt"]; + bool has_define_stmt() const; + private: + bool _internal_has_define_stmt() const; + public: + void clear_define_stmt(); + const ::pg_query::DefineStmt& define_stmt() const; + ::pg_query::DefineStmt* release_define_stmt(); + ::pg_query::DefineStmt* mutable_define_stmt(); + void set_allocated_define_stmt(::pg_query::DefineStmt* define_stmt); + private: + const ::pg_query::DefineStmt& _internal_define_stmt() const; + ::pg_query::DefineStmt* _internal_mutable_define_stmt(); + public: + void unsafe_arena_set_allocated_define_stmt( + ::pg_query::DefineStmt* define_stmt); + ::pg_query::DefineStmt* unsafe_arena_release_define_stmt(); + + // .pg_query.DropStmt drop_stmt = 70 [json_name = "DropStmt"]; + bool has_drop_stmt() const; + private: + bool _internal_has_drop_stmt() const; + public: + void clear_drop_stmt(); + const ::pg_query::DropStmt& drop_stmt() const; + ::pg_query::DropStmt* release_drop_stmt(); + ::pg_query::DropStmt* mutable_drop_stmt(); + void set_allocated_drop_stmt(::pg_query::DropStmt* drop_stmt); + private: + const ::pg_query::DropStmt& _internal_drop_stmt() const; + ::pg_query::DropStmt* _internal_mutable_drop_stmt(); + public: + void unsafe_arena_set_allocated_drop_stmt( + ::pg_query::DropStmt* drop_stmt); + ::pg_query::DropStmt* unsafe_arena_release_drop_stmt(); + + // .pg_query.TruncateStmt truncate_stmt = 71 [json_name = "TruncateStmt"]; + bool has_truncate_stmt() const; + private: + bool _internal_has_truncate_stmt() const; + public: + void clear_truncate_stmt(); + const ::pg_query::TruncateStmt& truncate_stmt() const; + ::pg_query::TruncateStmt* release_truncate_stmt(); + ::pg_query::TruncateStmt* mutable_truncate_stmt(); + void set_allocated_truncate_stmt(::pg_query::TruncateStmt* truncate_stmt); + private: + const ::pg_query::TruncateStmt& _internal_truncate_stmt() const; + ::pg_query::TruncateStmt* _internal_mutable_truncate_stmt(); + public: + void unsafe_arena_set_allocated_truncate_stmt( + ::pg_query::TruncateStmt* truncate_stmt); + ::pg_query::TruncateStmt* unsafe_arena_release_truncate_stmt(); + + // .pg_query.CommentStmt comment_stmt = 72 [json_name = "CommentStmt"]; + bool has_comment_stmt() const; + private: + bool _internal_has_comment_stmt() const; + public: + void clear_comment_stmt(); + const ::pg_query::CommentStmt& comment_stmt() const; + ::pg_query::CommentStmt* release_comment_stmt(); + ::pg_query::CommentStmt* mutable_comment_stmt(); + void set_allocated_comment_stmt(::pg_query::CommentStmt* comment_stmt); + private: + const ::pg_query::CommentStmt& _internal_comment_stmt() const; + ::pg_query::CommentStmt* _internal_mutable_comment_stmt(); + public: + void unsafe_arena_set_allocated_comment_stmt( + ::pg_query::CommentStmt* comment_stmt); + ::pg_query::CommentStmt* unsafe_arena_release_comment_stmt(); + + // .pg_query.FetchStmt fetch_stmt = 73 [json_name = "FetchStmt"]; + bool has_fetch_stmt() const; + private: + bool _internal_has_fetch_stmt() const; + public: + void clear_fetch_stmt(); + const ::pg_query::FetchStmt& fetch_stmt() const; + ::pg_query::FetchStmt* release_fetch_stmt(); + ::pg_query::FetchStmt* mutable_fetch_stmt(); + void set_allocated_fetch_stmt(::pg_query::FetchStmt* fetch_stmt); + private: + const ::pg_query::FetchStmt& _internal_fetch_stmt() const; + ::pg_query::FetchStmt* _internal_mutable_fetch_stmt(); + public: + void unsafe_arena_set_allocated_fetch_stmt( + ::pg_query::FetchStmt* fetch_stmt); + ::pg_query::FetchStmt* unsafe_arena_release_fetch_stmt(); + + // .pg_query.IndexStmt index_stmt = 74 [json_name = "IndexStmt"]; + bool has_index_stmt() const; + private: + bool _internal_has_index_stmt() const; + public: + void clear_index_stmt(); + const ::pg_query::IndexStmt& index_stmt() const; + ::pg_query::IndexStmt* release_index_stmt(); + ::pg_query::IndexStmt* mutable_index_stmt(); + void set_allocated_index_stmt(::pg_query::IndexStmt* index_stmt); + private: + const ::pg_query::IndexStmt& _internal_index_stmt() const; + ::pg_query::IndexStmt* _internal_mutable_index_stmt(); + public: + void unsafe_arena_set_allocated_index_stmt( + ::pg_query::IndexStmt* index_stmt); + ::pg_query::IndexStmt* unsafe_arena_release_index_stmt(); + + // .pg_query.CreateFunctionStmt create_function_stmt = 75 [json_name = "CreateFunctionStmt"]; + bool has_create_function_stmt() const; + private: + bool _internal_has_create_function_stmt() const; + public: + void clear_create_function_stmt(); + const ::pg_query::CreateFunctionStmt& create_function_stmt() const; + ::pg_query::CreateFunctionStmt* release_create_function_stmt(); + ::pg_query::CreateFunctionStmt* mutable_create_function_stmt(); + void set_allocated_create_function_stmt(::pg_query::CreateFunctionStmt* create_function_stmt); + private: + const ::pg_query::CreateFunctionStmt& _internal_create_function_stmt() const; + ::pg_query::CreateFunctionStmt* _internal_mutable_create_function_stmt(); + public: + void unsafe_arena_set_allocated_create_function_stmt( + ::pg_query::CreateFunctionStmt* create_function_stmt); + ::pg_query::CreateFunctionStmt* unsafe_arena_release_create_function_stmt(); + + // .pg_query.AlterFunctionStmt alter_function_stmt = 76 [json_name = "AlterFunctionStmt"]; + bool has_alter_function_stmt() const; + private: + bool _internal_has_alter_function_stmt() const; + public: + void clear_alter_function_stmt(); + const ::pg_query::AlterFunctionStmt& alter_function_stmt() const; + ::pg_query::AlterFunctionStmt* release_alter_function_stmt(); + ::pg_query::AlterFunctionStmt* mutable_alter_function_stmt(); + void set_allocated_alter_function_stmt(::pg_query::AlterFunctionStmt* alter_function_stmt); + private: + const ::pg_query::AlterFunctionStmt& _internal_alter_function_stmt() const; + ::pg_query::AlterFunctionStmt* _internal_mutable_alter_function_stmt(); + public: + void unsafe_arena_set_allocated_alter_function_stmt( + ::pg_query::AlterFunctionStmt* alter_function_stmt); + ::pg_query::AlterFunctionStmt* unsafe_arena_release_alter_function_stmt(); + + // .pg_query.DoStmt do_stmt = 77 [json_name = "DoStmt"]; + bool has_do_stmt() const; + private: + bool _internal_has_do_stmt() const; + public: + void clear_do_stmt(); + const ::pg_query::DoStmt& do_stmt() const; + ::pg_query::DoStmt* release_do_stmt(); + ::pg_query::DoStmt* mutable_do_stmt(); + void set_allocated_do_stmt(::pg_query::DoStmt* do_stmt); + private: + const ::pg_query::DoStmt& _internal_do_stmt() const; + ::pg_query::DoStmt* _internal_mutable_do_stmt(); + public: + void unsafe_arena_set_allocated_do_stmt( + ::pg_query::DoStmt* do_stmt); + ::pg_query::DoStmt* unsafe_arena_release_do_stmt(); + + // .pg_query.RenameStmt rename_stmt = 78 [json_name = "RenameStmt"]; + bool has_rename_stmt() const; + private: + bool _internal_has_rename_stmt() const; + public: + void clear_rename_stmt(); + const ::pg_query::RenameStmt& rename_stmt() const; + ::pg_query::RenameStmt* release_rename_stmt(); + ::pg_query::RenameStmt* mutable_rename_stmt(); + void set_allocated_rename_stmt(::pg_query::RenameStmt* rename_stmt); + private: + const ::pg_query::RenameStmt& _internal_rename_stmt() const; + ::pg_query::RenameStmt* _internal_mutable_rename_stmt(); + public: + void unsafe_arena_set_allocated_rename_stmt( + ::pg_query::RenameStmt* rename_stmt); + ::pg_query::RenameStmt* unsafe_arena_release_rename_stmt(); + + // .pg_query.RuleStmt rule_stmt = 79 [json_name = "RuleStmt"]; + bool has_rule_stmt() const; + private: + bool _internal_has_rule_stmt() const; + public: + void clear_rule_stmt(); + const ::pg_query::RuleStmt& rule_stmt() const; + ::pg_query::RuleStmt* release_rule_stmt(); + ::pg_query::RuleStmt* mutable_rule_stmt(); + void set_allocated_rule_stmt(::pg_query::RuleStmt* rule_stmt); + private: + const ::pg_query::RuleStmt& _internal_rule_stmt() const; + ::pg_query::RuleStmt* _internal_mutable_rule_stmt(); + public: + void unsafe_arena_set_allocated_rule_stmt( + ::pg_query::RuleStmt* rule_stmt); + ::pg_query::RuleStmt* unsafe_arena_release_rule_stmt(); + + // .pg_query.NotifyStmt notify_stmt = 80 [json_name = "NotifyStmt"]; + bool has_notify_stmt() const; + private: + bool _internal_has_notify_stmt() const; + public: + void clear_notify_stmt(); + const ::pg_query::NotifyStmt& notify_stmt() const; + ::pg_query::NotifyStmt* release_notify_stmt(); + ::pg_query::NotifyStmt* mutable_notify_stmt(); + void set_allocated_notify_stmt(::pg_query::NotifyStmt* notify_stmt); + private: + const ::pg_query::NotifyStmt& _internal_notify_stmt() const; + ::pg_query::NotifyStmt* _internal_mutable_notify_stmt(); + public: + void unsafe_arena_set_allocated_notify_stmt( + ::pg_query::NotifyStmt* notify_stmt); + ::pg_query::NotifyStmt* unsafe_arena_release_notify_stmt(); + + // .pg_query.ListenStmt listen_stmt = 81 [json_name = "ListenStmt"]; + bool has_listen_stmt() const; + private: + bool _internal_has_listen_stmt() const; + public: + void clear_listen_stmt(); + const ::pg_query::ListenStmt& listen_stmt() const; + ::pg_query::ListenStmt* release_listen_stmt(); + ::pg_query::ListenStmt* mutable_listen_stmt(); + void set_allocated_listen_stmt(::pg_query::ListenStmt* listen_stmt); + private: + const ::pg_query::ListenStmt& _internal_listen_stmt() const; + ::pg_query::ListenStmt* _internal_mutable_listen_stmt(); + public: + void unsafe_arena_set_allocated_listen_stmt( + ::pg_query::ListenStmt* listen_stmt); + ::pg_query::ListenStmt* unsafe_arena_release_listen_stmt(); + + // .pg_query.UnlistenStmt unlisten_stmt = 82 [json_name = "UnlistenStmt"]; + bool has_unlisten_stmt() const; + private: + bool _internal_has_unlisten_stmt() const; + public: + void clear_unlisten_stmt(); + const ::pg_query::UnlistenStmt& unlisten_stmt() const; + ::pg_query::UnlistenStmt* release_unlisten_stmt(); + ::pg_query::UnlistenStmt* mutable_unlisten_stmt(); + void set_allocated_unlisten_stmt(::pg_query::UnlistenStmt* unlisten_stmt); + private: + const ::pg_query::UnlistenStmt& _internal_unlisten_stmt() const; + ::pg_query::UnlistenStmt* _internal_mutable_unlisten_stmt(); + public: + void unsafe_arena_set_allocated_unlisten_stmt( + ::pg_query::UnlistenStmt* unlisten_stmt); + ::pg_query::UnlistenStmt* unsafe_arena_release_unlisten_stmt(); + + // .pg_query.TransactionStmt transaction_stmt = 83 [json_name = "TransactionStmt"]; + bool has_transaction_stmt() const; + private: + bool _internal_has_transaction_stmt() const; + public: + void clear_transaction_stmt(); + const ::pg_query::TransactionStmt& transaction_stmt() const; + ::pg_query::TransactionStmt* release_transaction_stmt(); + ::pg_query::TransactionStmt* mutable_transaction_stmt(); + void set_allocated_transaction_stmt(::pg_query::TransactionStmt* transaction_stmt); + private: + const ::pg_query::TransactionStmt& _internal_transaction_stmt() const; + ::pg_query::TransactionStmt* _internal_mutable_transaction_stmt(); + public: + void unsafe_arena_set_allocated_transaction_stmt( + ::pg_query::TransactionStmt* transaction_stmt); + ::pg_query::TransactionStmt* unsafe_arena_release_transaction_stmt(); + + // .pg_query.ViewStmt view_stmt = 84 [json_name = "ViewStmt"]; + bool has_view_stmt() const; + private: + bool _internal_has_view_stmt() const; + public: + void clear_view_stmt(); + const ::pg_query::ViewStmt& view_stmt() const; + ::pg_query::ViewStmt* release_view_stmt(); + ::pg_query::ViewStmt* mutable_view_stmt(); + void set_allocated_view_stmt(::pg_query::ViewStmt* view_stmt); + private: + const ::pg_query::ViewStmt& _internal_view_stmt() const; + ::pg_query::ViewStmt* _internal_mutable_view_stmt(); + public: + void unsafe_arena_set_allocated_view_stmt( + ::pg_query::ViewStmt* view_stmt); + ::pg_query::ViewStmt* unsafe_arena_release_view_stmt(); + + // .pg_query.LoadStmt load_stmt = 85 [json_name = "LoadStmt"]; + bool has_load_stmt() const; + private: + bool _internal_has_load_stmt() const; + public: + void clear_load_stmt(); + const ::pg_query::LoadStmt& load_stmt() const; + ::pg_query::LoadStmt* release_load_stmt(); + ::pg_query::LoadStmt* mutable_load_stmt(); + void set_allocated_load_stmt(::pg_query::LoadStmt* load_stmt); + private: + const ::pg_query::LoadStmt& _internal_load_stmt() const; + ::pg_query::LoadStmt* _internal_mutable_load_stmt(); + public: + void unsafe_arena_set_allocated_load_stmt( + ::pg_query::LoadStmt* load_stmt); + ::pg_query::LoadStmt* unsafe_arena_release_load_stmt(); + + // .pg_query.CreateDomainStmt create_domain_stmt = 86 [json_name = "CreateDomainStmt"]; + bool has_create_domain_stmt() const; + private: + bool _internal_has_create_domain_stmt() const; + public: + void clear_create_domain_stmt(); + const ::pg_query::CreateDomainStmt& create_domain_stmt() const; + ::pg_query::CreateDomainStmt* release_create_domain_stmt(); + ::pg_query::CreateDomainStmt* mutable_create_domain_stmt(); + void set_allocated_create_domain_stmt(::pg_query::CreateDomainStmt* create_domain_stmt); + private: + const ::pg_query::CreateDomainStmt& _internal_create_domain_stmt() const; + ::pg_query::CreateDomainStmt* _internal_mutable_create_domain_stmt(); + public: + void unsafe_arena_set_allocated_create_domain_stmt( + ::pg_query::CreateDomainStmt* create_domain_stmt); + ::pg_query::CreateDomainStmt* unsafe_arena_release_create_domain_stmt(); + + // .pg_query.CreatedbStmt createdb_stmt = 87 [json_name = "CreatedbStmt"]; + bool has_createdb_stmt() const; + private: + bool _internal_has_createdb_stmt() const; + public: + void clear_createdb_stmt(); + const ::pg_query::CreatedbStmt& createdb_stmt() const; + ::pg_query::CreatedbStmt* release_createdb_stmt(); + ::pg_query::CreatedbStmt* mutable_createdb_stmt(); + void set_allocated_createdb_stmt(::pg_query::CreatedbStmt* createdb_stmt); + private: + const ::pg_query::CreatedbStmt& _internal_createdb_stmt() const; + ::pg_query::CreatedbStmt* _internal_mutable_createdb_stmt(); + public: + void unsafe_arena_set_allocated_createdb_stmt( + ::pg_query::CreatedbStmt* createdb_stmt); + ::pg_query::CreatedbStmt* unsafe_arena_release_createdb_stmt(); + + // .pg_query.DropdbStmt dropdb_stmt = 88 [json_name = "DropdbStmt"]; + bool has_dropdb_stmt() const; + private: + bool _internal_has_dropdb_stmt() const; + public: + void clear_dropdb_stmt(); + const ::pg_query::DropdbStmt& dropdb_stmt() const; + ::pg_query::DropdbStmt* release_dropdb_stmt(); + ::pg_query::DropdbStmt* mutable_dropdb_stmt(); + void set_allocated_dropdb_stmt(::pg_query::DropdbStmt* dropdb_stmt); + private: + const ::pg_query::DropdbStmt& _internal_dropdb_stmt() const; + ::pg_query::DropdbStmt* _internal_mutable_dropdb_stmt(); + public: + void unsafe_arena_set_allocated_dropdb_stmt( + ::pg_query::DropdbStmt* dropdb_stmt); + ::pg_query::DropdbStmt* unsafe_arena_release_dropdb_stmt(); + + // .pg_query.VacuumStmt vacuum_stmt = 89 [json_name = "VacuumStmt"]; + bool has_vacuum_stmt() const; + private: + bool _internal_has_vacuum_stmt() const; + public: + void clear_vacuum_stmt(); + const ::pg_query::VacuumStmt& vacuum_stmt() const; + ::pg_query::VacuumStmt* release_vacuum_stmt(); + ::pg_query::VacuumStmt* mutable_vacuum_stmt(); + void set_allocated_vacuum_stmt(::pg_query::VacuumStmt* vacuum_stmt); + private: + const ::pg_query::VacuumStmt& _internal_vacuum_stmt() const; + ::pg_query::VacuumStmt* _internal_mutable_vacuum_stmt(); + public: + void unsafe_arena_set_allocated_vacuum_stmt( + ::pg_query::VacuumStmt* vacuum_stmt); + ::pg_query::VacuumStmt* unsafe_arena_release_vacuum_stmt(); + + // .pg_query.ExplainStmt explain_stmt = 90 [json_name = "ExplainStmt"]; + bool has_explain_stmt() const; + private: + bool _internal_has_explain_stmt() const; + public: + void clear_explain_stmt(); + const ::pg_query::ExplainStmt& explain_stmt() const; + ::pg_query::ExplainStmt* release_explain_stmt(); + ::pg_query::ExplainStmt* mutable_explain_stmt(); + void set_allocated_explain_stmt(::pg_query::ExplainStmt* explain_stmt); + private: + const ::pg_query::ExplainStmt& _internal_explain_stmt() const; + ::pg_query::ExplainStmt* _internal_mutable_explain_stmt(); + public: + void unsafe_arena_set_allocated_explain_stmt( + ::pg_query::ExplainStmt* explain_stmt); + ::pg_query::ExplainStmt* unsafe_arena_release_explain_stmt(); + + // .pg_query.CreateTableAsStmt create_table_as_stmt = 91 [json_name = "CreateTableAsStmt"]; + bool has_create_table_as_stmt() const; + private: + bool _internal_has_create_table_as_stmt() const; + public: + void clear_create_table_as_stmt(); + const ::pg_query::CreateTableAsStmt& create_table_as_stmt() const; + ::pg_query::CreateTableAsStmt* release_create_table_as_stmt(); + ::pg_query::CreateTableAsStmt* mutable_create_table_as_stmt(); + void set_allocated_create_table_as_stmt(::pg_query::CreateTableAsStmt* create_table_as_stmt); + private: + const ::pg_query::CreateTableAsStmt& _internal_create_table_as_stmt() const; + ::pg_query::CreateTableAsStmt* _internal_mutable_create_table_as_stmt(); + public: + void unsafe_arena_set_allocated_create_table_as_stmt( + ::pg_query::CreateTableAsStmt* create_table_as_stmt); + ::pg_query::CreateTableAsStmt* unsafe_arena_release_create_table_as_stmt(); + + // .pg_query.CreateSeqStmt create_seq_stmt = 92 [json_name = "CreateSeqStmt"]; + bool has_create_seq_stmt() const; + private: + bool _internal_has_create_seq_stmt() const; + public: + void clear_create_seq_stmt(); + const ::pg_query::CreateSeqStmt& create_seq_stmt() const; + ::pg_query::CreateSeqStmt* release_create_seq_stmt(); + ::pg_query::CreateSeqStmt* mutable_create_seq_stmt(); + void set_allocated_create_seq_stmt(::pg_query::CreateSeqStmt* create_seq_stmt); + private: + const ::pg_query::CreateSeqStmt& _internal_create_seq_stmt() const; + ::pg_query::CreateSeqStmt* _internal_mutable_create_seq_stmt(); + public: + void unsafe_arena_set_allocated_create_seq_stmt( + ::pg_query::CreateSeqStmt* create_seq_stmt); + ::pg_query::CreateSeqStmt* unsafe_arena_release_create_seq_stmt(); + + // .pg_query.AlterSeqStmt alter_seq_stmt = 93 [json_name = "AlterSeqStmt"]; + bool has_alter_seq_stmt() const; + private: + bool _internal_has_alter_seq_stmt() const; + public: + void clear_alter_seq_stmt(); + const ::pg_query::AlterSeqStmt& alter_seq_stmt() const; + ::pg_query::AlterSeqStmt* release_alter_seq_stmt(); + ::pg_query::AlterSeqStmt* mutable_alter_seq_stmt(); + void set_allocated_alter_seq_stmt(::pg_query::AlterSeqStmt* alter_seq_stmt); + private: + const ::pg_query::AlterSeqStmt& _internal_alter_seq_stmt() const; + ::pg_query::AlterSeqStmt* _internal_mutable_alter_seq_stmt(); + public: + void unsafe_arena_set_allocated_alter_seq_stmt( + ::pg_query::AlterSeqStmt* alter_seq_stmt); + ::pg_query::AlterSeqStmt* unsafe_arena_release_alter_seq_stmt(); + + // .pg_query.VariableSetStmt variable_set_stmt = 94 [json_name = "VariableSetStmt"]; + bool has_variable_set_stmt() const; + private: + bool _internal_has_variable_set_stmt() const; + public: + void clear_variable_set_stmt(); + const ::pg_query::VariableSetStmt& variable_set_stmt() const; + ::pg_query::VariableSetStmt* release_variable_set_stmt(); + ::pg_query::VariableSetStmt* mutable_variable_set_stmt(); + void set_allocated_variable_set_stmt(::pg_query::VariableSetStmt* variable_set_stmt); + private: + const ::pg_query::VariableSetStmt& _internal_variable_set_stmt() const; + ::pg_query::VariableSetStmt* _internal_mutable_variable_set_stmt(); + public: + void unsafe_arena_set_allocated_variable_set_stmt( + ::pg_query::VariableSetStmt* variable_set_stmt); + ::pg_query::VariableSetStmt* unsafe_arena_release_variable_set_stmt(); + + // .pg_query.VariableShowStmt variable_show_stmt = 95 [json_name = "VariableShowStmt"]; + bool has_variable_show_stmt() const; + private: + bool _internal_has_variable_show_stmt() const; + public: + void clear_variable_show_stmt(); + const ::pg_query::VariableShowStmt& variable_show_stmt() const; + ::pg_query::VariableShowStmt* release_variable_show_stmt(); + ::pg_query::VariableShowStmt* mutable_variable_show_stmt(); + void set_allocated_variable_show_stmt(::pg_query::VariableShowStmt* variable_show_stmt); + private: + const ::pg_query::VariableShowStmt& _internal_variable_show_stmt() const; + ::pg_query::VariableShowStmt* _internal_mutable_variable_show_stmt(); + public: + void unsafe_arena_set_allocated_variable_show_stmt( + ::pg_query::VariableShowStmt* variable_show_stmt); + ::pg_query::VariableShowStmt* unsafe_arena_release_variable_show_stmt(); + + // .pg_query.DiscardStmt discard_stmt = 96 [json_name = "DiscardStmt"]; + bool has_discard_stmt() const; + private: + bool _internal_has_discard_stmt() const; + public: + void clear_discard_stmt(); + const ::pg_query::DiscardStmt& discard_stmt() const; + ::pg_query::DiscardStmt* release_discard_stmt(); + ::pg_query::DiscardStmt* mutable_discard_stmt(); + void set_allocated_discard_stmt(::pg_query::DiscardStmt* discard_stmt); + private: + const ::pg_query::DiscardStmt& _internal_discard_stmt() const; + ::pg_query::DiscardStmt* _internal_mutable_discard_stmt(); + public: + void unsafe_arena_set_allocated_discard_stmt( + ::pg_query::DiscardStmt* discard_stmt); + ::pg_query::DiscardStmt* unsafe_arena_release_discard_stmt(); + + // .pg_query.CreateTrigStmt create_trig_stmt = 97 [json_name = "CreateTrigStmt"]; + bool has_create_trig_stmt() const; + private: + bool _internal_has_create_trig_stmt() const; + public: + void clear_create_trig_stmt(); + const ::pg_query::CreateTrigStmt& create_trig_stmt() const; + ::pg_query::CreateTrigStmt* release_create_trig_stmt(); + ::pg_query::CreateTrigStmt* mutable_create_trig_stmt(); + void set_allocated_create_trig_stmt(::pg_query::CreateTrigStmt* create_trig_stmt); + private: + const ::pg_query::CreateTrigStmt& _internal_create_trig_stmt() const; + ::pg_query::CreateTrigStmt* _internal_mutable_create_trig_stmt(); + public: + void unsafe_arena_set_allocated_create_trig_stmt( + ::pg_query::CreateTrigStmt* create_trig_stmt); + ::pg_query::CreateTrigStmt* unsafe_arena_release_create_trig_stmt(); + + // .pg_query.CreatePLangStmt create_plang_stmt = 98 [json_name = "CreatePLangStmt"]; + bool has_create_plang_stmt() const; + private: + bool _internal_has_create_plang_stmt() const; + public: + void clear_create_plang_stmt(); + const ::pg_query::CreatePLangStmt& create_plang_stmt() const; + ::pg_query::CreatePLangStmt* release_create_plang_stmt(); + ::pg_query::CreatePLangStmt* mutable_create_plang_stmt(); + void set_allocated_create_plang_stmt(::pg_query::CreatePLangStmt* create_plang_stmt); + private: + const ::pg_query::CreatePLangStmt& _internal_create_plang_stmt() const; + ::pg_query::CreatePLangStmt* _internal_mutable_create_plang_stmt(); + public: + void unsafe_arena_set_allocated_create_plang_stmt( + ::pg_query::CreatePLangStmt* create_plang_stmt); + ::pg_query::CreatePLangStmt* unsafe_arena_release_create_plang_stmt(); + + // .pg_query.CreateRoleStmt create_role_stmt = 99 [json_name = "CreateRoleStmt"]; + bool has_create_role_stmt() const; + private: + bool _internal_has_create_role_stmt() const; + public: + void clear_create_role_stmt(); + const ::pg_query::CreateRoleStmt& create_role_stmt() const; + ::pg_query::CreateRoleStmt* release_create_role_stmt(); + ::pg_query::CreateRoleStmt* mutable_create_role_stmt(); + void set_allocated_create_role_stmt(::pg_query::CreateRoleStmt* create_role_stmt); + private: + const ::pg_query::CreateRoleStmt& _internal_create_role_stmt() const; + ::pg_query::CreateRoleStmt* _internal_mutable_create_role_stmt(); + public: + void unsafe_arena_set_allocated_create_role_stmt( + ::pg_query::CreateRoleStmt* create_role_stmt); + ::pg_query::CreateRoleStmt* unsafe_arena_release_create_role_stmt(); + + // .pg_query.AlterRoleStmt alter_role_stmt = 100 [json_name = "AlterRoleStmt"]; + bool has_alter_role_stmt() const; + private: + bool _internal_has_alter_role_stmt() const; + public: + void clear_alter_role_stmt(); + const ::pg_query::AlterRoleStmt& alter_role_stmt() const; + ::pg_query::AlterRoleStmt* release_alter_role_stmt(); + ::pg_query::AlterRoleStmt* mutable_alter_role_stmt(); + void set_allocated_alter_role_stmt(::pg_query::AlterRoleStmt* alter_role_stmt); + private: + const ::pg_query::AlterRoleStmt& _internal_alter_role_stmt() const; + ::pg_query::AlterRoleStmt* _internal_mutable_alter_role_stmt(); + public: + void unsafe_arena_set_allocated_alter_role_stmt( + ::pg_query::AlterRoleStmt* alter_role_stmt); + ::pg_query::AlterRoleStmt* unsafe_arena_release_alter_role_stmt(); + + // .pg_query.DropRoleStmt drop_role_stmt = 101 [json_name = "DropRoleStmt"]; + bool has_drop_role_stmt() const; + private: + bool _internal_has_drop_role_stmt() const; + public: + void clear_drop_role_stmt(); + const ::pg_query::DropRoleStmt& drop_role_stmt() const; + ::pg_query::DropRoleStmt* release_drop_role_stmt(); + ::pg_query::DropRoleStmt* mutable_drop_role_stmt(); + void set_allocated_drop_role_stmt(::pg_query::DropRoleStmt* drop_role_stmt); + private: + const ::pg_query::DropRoleStmt& _internal_drop_role_stmt() const; + ::pg_query::DropRoleStmt* _internal_mutable_drop_role_stmt(); + public: + void unsafe_arena_set_allocated_drop_role_stmt( + ::pg_query::DropRoleStmt* drop_role_stmt); + ::pg_query::DropRoleStmt* unsafe_arena_release_drop_role_stmt(); + + // .pg_query.LockStmt lock_stmt = 102 [json_name = "LockStmt"]; + bool has_lock_stmt() const; + private: + bool _internal_has_lock_stmt() const; + public: + void clear_lock_stmt(); + const ::pg_query::LockStmt& lock_stmt() const; + ::pg_query::LockStmt* release_lock_stmt(); + ::pg_query::LockStmt* mutable_lock_stmt(); + void set_allocated_lock_stmt(::pg_query::LockStmt* lock_stmt); + private: + const ::pg_query::LockStmt& _internal_lock_stmt() const; + ::pg_query::LockStmt* _internal_mutable_lock_stmt(); + public: + void unsafe_arena_set_allocated_lock_stmt( + ::pg_query::LockStmt* lock_stmt); + ::pg_query::LockStmt* unsafe_arena_release_lock_stmt(); + + // .pg_query.ConstraintsSetStmt constraints_set_stmt = 103 [json_name = "ConstraintsSetStmt"]; + bool has_constraints_set_stmt() const; + private: + bool _internal_has_constraints_set_stmt() const; + public: + void clear_constraints_set_stmt(); + const ::pg_query::ConstraintsSetStmt& constraints_set_stmt() const; + ::pg_query::ConstraintsSetStmt* release_constraints_set_stmt(); + ::pg_query::ConstraintsSetStmt* mutable_constraints_set_stmt(); + void set_allocated_constraints_set_stmt(::pg_query::ConstraintsSetStmt* constraints_set_stmt); + private: + const ::pg_query::ConstraintsSetStmt& _internal_constraints_set_stmt() const; + ::pg_query::ConstraintsSetStmt* _internal_mutable_constraints_set_stmt(); + public: + void unsafe_arena_set_allocated_constraints_set_stmt( + ::pg_query::ConstraintsSetStmt* constraints_set_stmt); + ::pg_query::ConstraintsSetStmt* unsafe_arena_release_constraints_set_stmt(); + + // .pg_query.ReindexStmt reindex_stmt = 104 [json_name = "ReindexStmt"]; + bool has_reindex_stmt() const; + private: + bool _internal_has_reindex_stmt() const; + public: + void clear_reindex_stmt(); + const ::pg_query::ReindexStmt& reindex_stmt() const; + ::pg_query::ReindexStmt* release_reindex_stmt(); + ::pg_query::ReindexStmt* mutable_reindex_stmt(); + void set_allocated_reindex_stmt(::pg_query::ReindexStmt* reindex_stmt); + private: + const ::pg_query::ReindexStmt& _internal_reindex_stmt() const; + ::pg_query::ReindexStmt* _internal_mutable_reindex_stmt(); + public: + void unsafe_arena_set_allocated_reindex_stmt( + ::pg_query::ReindexStmt* reindex_stmt); + ::pg_query::ReindexStmt* unsafe_arena_release_reindex_stmt(); + + // .pg_query.CheckPointStmt check_point_stmt = 105 [json_name = "CheckPointStmt"]; + bool has_check_point_stmt() const; + private: + bool _internal_has_check_point_stmt() const; + public: + void clear_check_point_stmt(); + const ::pg_query::CheckPointStmt& check_point_stmt() const; + ::pg_query::CheckPointStmt* release_check_point_stmt(); + ::pg_query::CheckPointStmt* mutable_check_point_stmt(); + void set_allocated_check_point_stmt(::pg_query::CheckPointStmt* check_point_stmt); + private: + const ::pg_query::CheckPointStmt& _internal_check_point_stmt() const; + ::pg_query::CheckPointStmt* _internal_mutable_check_point_stmt(); + public: + void unsafe_arena_set_allocated_check_point_stmt( + ::pg_query::CheckPointStmt* check_point_stmt); + ::pg_query::CheckPointStmt* unsafe_arena_release_check_point_stmt(); + + // .pg_query.CreateSchemaStmt create_schema_stmt = 106 [json_name = "CreateSchemaStmt"]; + bool has_create_schema_stmt() const; + private: + bool _internal_has_create_schema_stmt() const; + public: + void clear_create_schema_stmt(); + const ::pg_query::CreateSchemaStmt& create_schema_stmt() const; + ::pg_query::CreateSchemaStmt* release_create_schema_stmt(); + ::pg_query::CreateSchemaStmt* mutable_create_schema_stmt(); + void set_allocated_create_schema_stmt(::pg_query::CreateSchemaStmt* create_schema_stmt); + private: + const ::pg_query::CreateSchemaStmt& _internal_create_schema_stmt() const; + ::pg_query::CreateSchemaStmt* _internal_mutable_create_schema_stmt(); + public: + void unsafe_arena_set_allocated_create_schema_stmt( + ::pg_query::CreateSchemaStmt* create_schema_stmt); + ::pg_query::CreateSchemaStmt* unsafe_arena_release_create_schema_stmt(); + + // .pg_query.AlterDatabaseStmt alter_database_stmt = 107 [json_name = "AlterDatabaseStmt"]; + bool has_alter_database_stmt() const; + private: + bool _internal_has_alter_database_stmt() const; + public: + void clear_alter_database_stmt(); + const ::pg_query::AlterDatabaseStmt& alter_database_stmt() const; + ::pg_query::AlterDatabaseStmt* release_alter_database_stmt(); + ::pg_query::AlterDatabaseStmt* mutable_alter_database_stmt(); + void set_allocated_alter_database_stmt(::pg_query::AlterDatabaseStmt* alter_database_stmt); + private: + const ::pg_query::AlterDatabaseStmt& _internal_alter_database_stmt() const; + ::pg_query::AlterDatabaseStmt* _internal_mutable_alter_database_stmt(); + public: + void unsafe_arena_set_allocated_alter_database_stmt( + ::pg_query::AlterDatabaseStmt* alter_database_stmt); + ::pg_query::AlterDatabaseStmt* unsafe_arena_release_alter_database_stmt(); + + // .pg_query.AlterDatabaseSetStmt alter_database_set_stmt = 108 [json_name = "AlterDatabaseSetStmt"]; + bool has_alter_database_set_stmt() const; + private: + bool _internal_has_alter_database_set_stmt() const; + public: + void clear_alter_database_set_stmt(); + const ::pg_query::AlterDatabaseSetStmt& alter_database_set_stmt() const; + ::pg_query::AlterDatabaseSetStmt* release_alter_database_set_stmt(); + ::pg_query::AlterDatabaseSetStmt* mutable_alter_database_set_stmt(); + void set_allocated_alter_database_set_stmt(::pg_query::AlterDatabaseSetStmt* alter_database_set_stmt); + private: + const ::pg_query::AlterDatabaseSetStmt& _internal_alter_database_set_stmt() const; + ::pg_query::AlterDatabaseSetStmt* _internal_mutable_alter_database_set_stmt(); + public: + void unsafe_arena_set_allocated_alter_database_set_stmt( + ::pg_query::AlterDatabaseSetStmt* alter_database_set_stmt); + ::pg_query::AlterDatabaseSetStmt* unsafe_arena_release_alter_database_set_stmt(); + + // .pg_query.AlterRoleSetStmt alter_role_set_stmt = 109 [json_name = "AlterRoleSetStmt"]; + bool has_alter_role_set_stmt() const; + private: + bool _internal_has_alter_role_set_stmt() const; + public: + void clear_alter_role_set_stmt(); + const ::pg_query::AlterRoleSetStmt& alter_role_set_stmt() const; + ::pg_query::AlterRoleSetStmt* release_alter_role_set_stmt(); + ::pg_query::AlterRoleSetStmt* mutable_alter_role_set_stmt(); + void set_allocated_alter_role_set_stmt(::pg_query::AlterRoleSetStmt* alter_role_set_stmt); + private: + const ::pg_query::AlterRoleSetStmt& _internal_alter_role_set_stmt() const; + ::pg_query::AlterRoleSetStmt* _internal_mutable_alter_role_set_stmt(); + public: + void unsafe_arena_set_allocated_alter_role_set_stmt( + ::pg_query::AlterRoleSetStmt* alter_role_set_stmt); + ::pg_query::AlterRoleSetStmt* unsafe_arena_release_alter_role_set_stmt(); + + // .pg_query.CreateConversionStmt create_conversion_stmt = 110 [json_name = "CreateConversionStmt"]; + bool has_create_conversion_stmt() const; + private: + bool _internal_has_create_conversion_stmt() const; + public: + void clear_create_conversion_stmt(); + const ::pg_query::CreateConversionStmt& create_conversion_stmt() const; + ::pg_query::CreateConversionStmt* release_create_conversion_stmt(); + ::pg_query::CreateConversionStmt* mutable_create_conversion_stmt(); + void set_allocated_create_conversion_stmt(::pg_query::CreateConversionStmt* create_conversion_stmt); + private: + const ::pg_query::CreateConversionStmt& _internal_create_conversion_stmt() const; + ::pg_query::CreateConversionStmt* _internal_mutable_create_conversion_stmt(); + public: + void unsafe_arena_set_allocated_create_conversion_stmt( + ::pg_query::CreateConversionStmt* create_conversion_stmt); + ::pg_query::CreateConversionStmt* unsafe_arena_release_create_conversion_stmt(); + + // .pg_query.CreateCastStmt create_cast_stmt = 111 [json_name = "CreateCastStmt"]; + bool has_create_cast_stmt() const; + private: + bool _internal_has_create_cast_stmt() const; + public: + void clear_create_cast_stmt(); + const ::pg_query::CreateCastStmt& create_cast_stmt() const; + ::pg_query::CreateCastStmt* release_create_cast_stmt(); + ::pg_query::CreateCastStmt* mutable_create_cast_stmt(); + void set_allocated_create_cast_stmt(::pg_query::CreateCastStmt* create_cast_stmt); + private: + const ::pg_query::CreateCastStmt& _internal_create_cast_stmt() const; + ::pg_query::CreateCastStmt* _internal_mutable_create_cast_stmt(); + public: + void unsafe_arena_set_allocated_create_cast_stmt( + ::pg_query::CreateCastStmt* create_cast_stmt); + ::pg_query::CreateCastStmt* unsafe_arena_release_create_cast_stmt(); + + // .pg_query.CreateOpClassStmt create_op_class_stmt = 112 [json_name = "CreateOpClassStmt"]; + bool has_create_op_class_stmt() const; + private: + bool _internal_has_create_op_class_stmt() const; + public: + void clear_create_op_class_stmt(); + const ::pg_query::CreateOpClassStmt& create_op_class_stmt() const; + ::pg_query::CreateOpClassStmt* release_create_op_class_stmt(); + ::pg_query::CreateOpClassStmt* mutable_create_op_class_stmt(); + void set_allocated_create_op_class_stmt(::pg_query::CreateOpClassStmt* create_op_class_stmt); + private: + const ::pg_query::CreateOpClassStmt& _internal_create_op_class_stmt() const; + ::pg_query::CreateOpClassStmt* _internal_mutable_create_op_class_stmt(); + public: + void unsafe_arena_set_allocated_create_op_class_stmt( + ::pg_query::CreateOpClassStmt* create_op_class_stmt); + ::pg_query::CreateOpClassStmt* unsafe_arena_release_create_op_class_stmt(); + + // .pg_query.CreateOpFamilyStmt create_op_family_stmt = 113 [json_name = "CreateOpFamilyStmt"]; + bool has_create_op_family_stmt() const; + private: + bool _internal_has_create_op_family_stmt() const; + public: + void clear_create_op_family_stmt(); + const ::pg_query::CreateOpFamilyStmt& create_op_family_stmt() const; + ::pg_query::CreateOpFamilyStmt* release_create_op_family_stmt(); + ::pg_query::CreateOpFamilyStmt* mutable_create_op_family_stmt(); + void set_allocated_create_op_family_stmt(::pg_query::CreateOpFamilyStmt* create_op_family_stmt); + private: + const ::pg_query::CreateOpFamilyStmt& _internal_create_op_family_stmt() const; + ::pg_query::CreateOpFamilyStmt* _internal_mutable_create_op_family_stmt(); + public: + void unsafe_arena_set_allocated_create_op_family_stmt( + ::pg_query::CreateOpFamilyStmt* create_op_family_stmt); + ::pg_query::CreateOpFamilyStmt* unsafe_arena_release_create_op_family_stmt(); + + // .pg_query.AlterOpFamilyStmt alter_op_family_stmt = 114 [json_name = "AlterOpFamilyStmt"]; + bool has_alter_op_family_stmt() const; + private: + bool _internal_has_alter_op_family_stmt() const; + public: + void clear_alter_op_family_stmt(); + const ::pg_query::AlterOpFamilyStmt& alter_op_family_stmt() const; + ::pg_query::AlterOpFamilyStmt* release_alter_op_family_stmt(); + ::pg_query::AlterOpFamilyStmt* mutable_alter_op_family_stmt(); + void set_allocated_alter_op_family_stmt(::pg_query::AlterOpFamilyStmt* alter_op_family_stmt); + private: + const ::pg_query::AlterOpFamilyStmt& _internal_alter_op_family_stmt() const; + ::pg_query::AlterOpFamilyStmt* _internal_mutable_alter_op_family_stmt(); + public: + void unsafe_arena_set_allocated_alter_op_family_stmt( + ::pg_query::AlterOpFamilyStmt* alter_op_family_stmt); + ::pg_query::AlterOpFamilyStmt* unsafe_arena_release_alter_op_family_stmt(); + + // .pg_query.PrepareStmt prepare_stmt = 115 [json_name = "PrepareStmt"]; + bool has_prepare_stmt() const; + private: + bool _internal_has_prepare_stmt() const; + public: + void clear_prepare_stmt(); + const ::pg_query::PrepareStmt& prepare_stmt() const; + ::pg_query::PrepareStmt* release_prepare_stmt(); + ::pg_query::PrepareStmt* mutable_prepare_stmt(); + void set_allocated_prepare_stmt(::pg_query::PrepareStmt* prepare_stmt); + private: + const ::pg_query::PrepareStmt& _internal_prepare_stmt() const; + ::pg_query::PrepareStmt* _internal_mutable_prepare_stmt(); + public: + void unsafe_arena_set_allocated_prepare_stmt( + ::pg_query::PrepareStmt* prepare_stmt); + ::pg_query::PrepareStmt* unsafe_arena_release_prepare_stmt(); + + // .pg_query.ExecuteStmt execute_stmt = 116 [json_name = "ExecuteStmt"]; + bool has_execute_stmt() const; + private: + bool _internal_has_execute_stmt() const; + public: + void clear_execute_stmt(); + const ::pg_query::ExecuteStmt& execute_stmt() const; + ::pg_query::ExecuteStmt* release_execute_stmt(); + ::pg_query::ExecuteStmt* mutable_execute_stmt(); + void set_allocated_execute_stmt(::pg_query::ExecuteStmt* execute_stmt); + private: + const ::pg_query::ExecuteStmt& _internal_execute_stmt() const; + ::pg_query::ExecuteStmt* _internal_mutable_execute_stmt(); + public: + void unsafe_arena_set_allocated_execute_stmt( + ::pg_query::ExecuteStmt* execute_stmt); + ::pg_query::ExecuteStmt* unsafe_arena_release_execute_stmt(); + + // .pg_query.DeallocateStmt deallocate_stmt = 117 [json_name = "DeallocateStmt"]; + bool has_deallocate_stmt() const; + private: + bool _internal_has_deallocate_stmt() const; + public: + void clear_deallocate_stmt(); + const ::pg_query::DeallocateStmt& deallocate_stmt() const; + ::pg_query::DeallocateStmt* release_deallocate_stmt(); + ::pg_query::DeallocateStmt* mutable_deallocate_stmt(); + void set_allocated_deallocate_stmt(::pg_query::DeallocateStmt* deallocate_stmt); + private: + const ::pg_query::DeallocateStmt& _internal_deallocate_stmt() const; + ::pg_query::DeallocateStmt* _internal_mutable_deallocate_stmt(); + public: + void unsafe_arena_set_allocated_deallocate_stmt( + ::pg_query::DeallocateStmt* deallocate_stmt); + ::pg_query::DeallocateStmt* unsafe_arena_release_deallocate_stmt(); + + // .pg_query.DeclareCursorStmt declare_cursor_stmt = 118 [json_name = "DeclareCursorStmt"]; + bool has_declare_cursor_stmt() const; + private: + bool _internal_has_declare_cursor_stmt() const; + public: + void clear_declare_cursor_stmt(); + const ::pg_query::DeclareCursorStmt& declare_cursor_stmt() const; + ::pg_query::DeclareCursorStmt* release_declare_cursor_stmt(); + ::pg_query::DeclareCursorStmt* mutable_declare_cursor_stmt(); + void set_allocated_declare_cursor_stmt(::pg_query::DeclareCursorStmt* declare_cursor_stmt); + private: + const ::pg_query::DeclareCursorStmt& _internal_declare_cursor_stmt() const; + ::pg_query::DeclareCursorStmt* _internal_mutable_declare_cursor_stmt(); + public: + void unsafe_arena_set_allocated_declare_cursor_stmt( + ::pg_query::DeclareCursorStmt* declare_cursor_stmt); + ::pg_query::DeclareCursorStmt* unsafe_arena_release_declare_cursor_stmt(); + + // .pg_query.CreateTableSpaceStmt create_table_space_stmt = 119 [json_name = "CreateTableSpaceStmt"]; + bool has_create_table_space_stmt() const; + private: + bool _internal_has_create_table_space_stmt() const; + public: + void clear_create_table_space_stmt(); + const ::pg_query::CreateTableSpaceStmt& create_table_space_stmt() const; + ::pg_query::CreateTableSpaceStmt* release_create_table_space_stmt(); + ::pg_query::CreateTableSpaceStmt* mutable_create_table_space_stmt(); + void set_allocated_create_table_space_stmt(::pg_query::CreateTableSpaceStmt* create_table_space_stmt); + private: + const ::pg_query::CreateTableSpaceStmt& _internal_create_table_space_stmt() const; + ::pg_query::CreateTableSpaceStmt* _internal_mutable_create_table_space_stmt(); + public: + void unsafe_arena_set_allocated_create_table_space_stmt( + ::pg_query::CreateTableSpaceStmt* create_table_space_stmt); + ::pg_query::CreateTableSpaceStmt* unsafe_arena_release_create_table_space_stmt(); + + // .pg_query.DropTableSpaceStmt drop_table_space_stmt = 120 [json_name = "DropTableSpaceStmt"]; + bool has_drop_table_space_stmt() const; + private: + bool _internal_has_drop_table_space_stmt() const; + public: + void clear_drop_table_space_stmt(); + const ::pg_query::DropTableSpaceStmt& drop_table_space_stmt() const; + ::pg_query::DropTableSpaceStmt* release_drop_table_space_stmt(); + ::pg_query::DropTableSpaceStmt* mutable_drop_table_space_stmt(); + void set_allocated_drop_table_space_stmt(::pg_query::DropTableSpaceStmt* drop_table_space_stmt); + private: + const ::pg_query::DropTableSpaceStmt& _internal_drop_table_space_stmt() const; + ::pg_query::DropTableSpaceStmt* _internal_mutable_drop_table_space_stmt(); + public: + void unsafe_arena_set_allocated_drop_table_space_stmt( + ::pg_query::DropTableSpaceStmt* drop_table_space_stmt); + ::pg_query::DropTableSpaceStmt* unsafe_arena_release_drop_table_space_stmt(); + + // .pg_query.AlterObjectDependsStmt alter_object_depends_stmt = 121 [json_name = "AlterObjectDependsStmt"]; + bool has_alter_object_depends_stmt() const; + private: + bool _internal_has_alter_object_depends_stmt() const; + public: + void clear_alter_object_depends_stmt(); + const ::pg_query::AlterObjectDependsStmt& alter_object_depends_stmt() const; + ::pg_query::AlterObjectDependsStmt* release_alter_object_depends_stmt(); + ::pg_query::AlterObjectDependsStmt* mutable_alter_object_depends_stmt(); + void set_allocated_alter_object_depends_stmt(::pg_query::AlterObjectDependsStmt* alter_object_depends_stmt); + private: + const ::pg_query::AlterObjectDependsStmt& _internal_alter_object_depends_stmt() const; + ::pg_query::AlterObjectDependsStmt* _internal_mutable_alter_object_depends_stmt(); + public: + void unsafe_arena_set_allocated_alter_object_depends_stmt( + ::pg_query::AlterObjectDependsStmt* alter_object_depends_stmt); + ::pg_query::AlterObjectDependsStmt* unsafe_arena_release_alter_object_depends_stmt(); + + // .pg_query.AlterObjectSchemaStmt alter_object_schema_stmt = 122 [json_name = "AlterObjectSchemaStmt"]; + bool has_alter_object_schema_stmt() const; + private: + bool _internal_has_alter_object_schema_stmt() const; + public: + void clear_alter_object_schema_stmt(); + const ::pg_query::AlterObjectSchemaStmt& alter_object_schema_stmt() const; + ::pg_query::AlterObjectSchemaStmt* release_alter_object_schema_stmt(); + ::pg_query::AlterObjectSchemaStmt* mutable_alter_object_schema_stmt(); + void set_allocated_alter_object_schema_stmt(::pg_query::AlterObjectSchemaStmt* alter_object_schema_stmt); + private: + const ::pg_query::AlterObjectSchemaStmt& _internal_alter_object_schema_stmt() const; + ::pg_query::AlterObjectSchemaStmt* _internal_mutable_alter_object_schema_stmt(); + public: + void unsafe_arena_set_allocated_alter_object_schema_stmt( + ::pg_query::AlterObjectSchemaStmt* alter_object_schema_stmt); + ::pg_query::AlterObjectSchemaStmt* unsafe_arena_release_alter_object_schema_stmt(); + + // .pg_query.AlterOwnerStmt alter_owner_stmt = 123 [json_name = "AlterOwnerStmt"]; + bool has_alter_owner_stmt() const; + private: + bool _internal_has_alter_owner_stmt() const; + public: + void clear_alter_owner_stmt(); + const ::pg_query::AlterOwnerStmt& alter_owner_stmt() const; + ::pg_query::AlterOwnerStmt* release_alter_owner_stmt(); + ::pg_query::AlterOwnerStmt* mutable_alter_owner_stmt(); + void set_allocated_alter_owner_stmt(::pg_query::AlterOwnerStmt* alter_owner_stmt); + private: + const ::pg_query::AlterOwnerStmt& _internal_alter_owner_stmt() const; + ::pg_query::AlterOwnerStmt* _internal_mutable_alter_owner_stmt(); + public: + void unsafe_arena_set_allocated_alter_owner_stmt( + ::pg_query::AlterOwnerStmt* alter_owner_stmt); + ::pg_query::AlterOwnerStmt* unsafe_arena_release_alter_owner_stmt(); + + // .pg_query.AlterOperatorStmt alter_operator_stmt = 124 [json_name = "AlterOperatorStmt"]; + bool has_alter_operator_stmt() const; + private: + bool _internal_has_alter_operator_stmt() const; + public: + void clear_alter_operator_stmt(); + const ::pg_query::AlterOperatorStmt& alter_operator_stmt() const; + ::pg_query::AlterOperatorStmt* release_alter_operator_stmt(); + ::pg_query::AlterOperatorStmt* mutable_alter_operator_stmt(); + void set_allocated_alter_operator_stmt(::pg_query::AlterOperatorStmt* alter_operator_stmt); + private: + const ::pg_query::AlterOperatorStmt& _internal_alter_operator_stmt() const; + ::pg_query::AlterOperatorStmt* _internal_mutable_alter_operator_stmt(); + public: + void unsafe_arena_set_allocated_alter_operator_stmt( + ::pg_query::AlterOperatorStmt* alter_operator_stmt); + ::pg_query::AlterOperatorStmt* unsafe_arena_release_alter_operator_stmt(); + + // .pg_query.AlterTypeStmt alter_type_stmt = 125 [json_name = "AlterTypeStmt"]; + bool has_alter_type_stmt() const; + private: + bool _internal_has_alter_type_stmt() const; + public: + void clear_alter_type_stmt(); + const ::pg_query::AlterTypeStmt& alter_type_stmt() const; + ::pg_query::AlterTypeStmt* release_alter_type_stmt(); + ::pg_query::AlterTypeStmt* mutable_alter_type_stmt(); + void set_allocated_alter_type_stmt(::pg_query::AlterTypeStmt* alter_type_stmt); + private: + const ::pg_query::AlterTypeStmt& _internal_alter_type_stmt() const; + ::pg_query::AlterTypeStmt* _internal_mutable_alter_type_stmt(); + public: + void unsafe_arena_set_allocated_alter_type_stmt( + ::pg_query::AlterTypeStmt* alter_type_stmt); + ::pg_query::AlterTypeStmt* unsafe_arena_release_alter_type_stmt(); + + // .pg_query.DropOwnedStmt drop_owned_stmt = 126 [json_name = "DropOwnedStmt"]; + bool has_drop_owned_stmt() const; + private: + bool _internal_has_drop_owned_stmt() const; + public: + void clear_drop_owned_stmt(); + const ::pg_query::DropOwnedStmt& drop_owned_stmt() const; + ::pg_query::DropOwnedStmt* release_drop_owned_stmt(); + ::pg_query::DropOwnedStmt* mutable_drop_owned_stmt(); + void set_allocated_drop_owned_stmt(::pg_query::DropOwnedStmt* drop_owned_stmt); + private: + const ::pg_query::DropOwnedStmt& _internal_drop_owned_stmt() const; + ::pg_query::DropOwnedStmt* _internal_mutable_drop_owned_stmt(); + public: + void unsafe_arena_set_allocated_drop_owned_stmt( + ::pg_query::DropOwnedStmt* drop_owned_stmt); + ::pg_query::DropOwnedStmt* unsafe_arena_release_drop_owned_stmt(); + + // .pg_query.ReassignOwnedStmt reassign_owned_stmt = 127 [json_name = "ReassignOwnedStmt"]; + bool has_reassign_owned_stmt() const; + private: + bool _internal_has_reassign_owned_stmt() const; + public: + void clear_reassign_owned_stmt(); + const ::pg_query::ReassignOwnedStmt& reassign_owned_stmt() const; + ::pg_query::ReassignOwnedStmt* release_reassign_owned_stmt(); + ::pg_query::ReassignOwnedStmt* mutable_reassign_owned_stmt(); + void set_allocated_reassign_owned_stmt(::pg_query::ReassignOwnedStmt* reassign_owned_stmt); + private: + const ::pg_query::ReassignOwnedStmt& _internal_reassign_owned_stmt() const; + ::pg_query::ReassignOwnedStmt* _internal_mutable_reassign_owned_stmt(); + public: + void unsafe_arena_set_allocated_reassign_owned_stmt( + ::pg_query::ReassignOwnedStmt* reassign_owned_stmt); + ::pg_query::ReassignOwnedStmt* unsafe_arena_release_reassign_owned_stmt(); + + // .pg_query.CompositeTypeStmt composite_type_stmt = 128 [json_name = "CompositeTypeStmt"]; + bool has_composite_type_stmt() const; + private: + bool _internal_has_composite_type_stmt() const; + public: + void clear_composite_type_stmt(); + const ::pg_query::CompositeTypeStmt& composite_type_stmt() const; + ::pg_query::CompositeTypeStmt* release_composite_type_stmt(); + ::pg_query::CompositeTypeStmt* mutable_composite_type_stmt(); + void set_allocated_composite_type_stmt(::pg_query::CompositeTypeStmt* composite_type_stmt); + private: + const ::pg_query::CompositeTypeStmt& _internal_composite_type_stmt() const; + ::pg_query::CompositeTypeStmt* _internal_mutable_composite_type_stmt(); + public: + void unsafe_arena_set_allocated_composite_type_stmt( + ::pg_query::CompositeTypeStmt* composite_type_stmt); + ::pg_query::CompositeTypeStmt* unsafe_arena_release_composite_type_stmt(); + + // .pg_query.CreateEnumStmt create_enum_stmt = 129 [json_name = "CreateEnumStmt"]; + bool has_create_enum_stmt() const; + private: + bool _internal_has_create_enum_stmt() const; + public: + void clear_create_enum_stmt(); + const ::pg_query::CreateEnumStmt& create_enum_stmt() const; + ::pg_query::CreateEnumStmt* release_create_enum_stmt(); + ::pg_query::CreateEnumStmt* mutable_create_enum_stmt(); + void set_allocated_create_enum_stmt(::pg_query::CreateEnumStmt* create_enum_stmt); + private: + const ::pg_query::CreateEnumStmt& _internal_create_enum_stmt() const; + ::pg_query::CreateEnumStmt* _internal_mutable_create_enum_stmt(); + public: + void unsafe_arena_set_allocated_create_enum_stmt( + ::pg_query::CreateEnumStmt* create_enum_stmt); + ::pg_query::CreateEnumStmt* unsafe_arena_release_create_enum_stmt(); + + // .pg_query.CreateRangeStmt create_range_stmt = 130 [json_name = "CreateRangeStmt"]; + bool has_create_range_stmt() const; + private: + bool _internal_has_create_range_stmt() const; + public: + void clear_create_range_stmt(); + const ::pg_query::CreateRangeStmt& create_range_stmt() const; + ::pg_query::CreateRangeStmt* release_create_range_stmt(); + ::pg_query::CreateRangeStmt* mutable_create_range_stmt(); + void set_allocated_create_range_stmt(::pg_query::CreateRangeStmt* create_range_stmt); + private: + const ::pg_query::CreateRangeStmt& _internal_create_range_stmt() const; + ::pg_query::CreateRangeStmt* _internal_mutable_create_range_stmt(); + public: + void unsafe_arena_set_allocated_create_range_stmt( + ::pg_query::CreateRangeStmt* create_range_stmt); + ::pg_query::CreateRangeStmt* unsafe_arena_release_create_range_stmt(); + + // .pg_query.AlterEnumStmt alter_enum_stmt = 131 [json_name = "AlterEnumStmt"]; + bool has_alter_enum_stmt() const; + private: + bool _internal_has_alter_enum_stmt() const; + public: + void clear_alter_enum_stmt(); + const ::pg_query::AlterEnumStmt& alter_enum_stmt() const; + ::pg_query::AlterEnumStmt* release_alter_enum_stmt(); + ::pg_query::AlterEnumStmt* mutable_alter_enum_stmt(); + void set_allocated_alter_enum_stmt(::pg_query::AlterEnumStmt* alter_enum_stmt); + private: + const ::pg_query::AlterEnumStmt& _internal_alter_enum_stmt() const; + ::pg_query::AlterEnumStmt* _internal_mutable_alter_enum_stmt(); + public: + void unsafe_arena_set_allocated_alter_enum_stmt( + ::pg_query::AlterEnumStmt* alter_enum_stmt); + ::pg_query::AlterEnumStmt* unsafe_arena_release_alter_enum_stmt(); + + // .pg_query.AlterTSDictionaryStmt alter_tsdictionary_stmt = 132 [json_name = "AlterTSDictionaryStmt"]; + bool has_alter_tsdictionary_stmt() const; + private: + bool _internal_has_alter_tsdictionary_stmt() const; + public: + void clear_alter_tsdictionary_stmt(); + const ::pg_query::AlterTSDictionaryStmt& alter_tsdictionary_stmt() const; + ::pg_query::AlterTSDictionaryStmt* release_alter_tsdictionary_stmt(); + ::pg_query::AlterTSDictionaryStmt* mutable_alter_tsdictionary_stmt(); + void set_allocated_alter_tsdictionary_stmt(::pg_query::AlterTSDictionaryStmt* alter_tsdictionary_stmt); + private: + const ::pg_query::AlterTSDictionaryStmt& _internal_alter_tsdictionary_stmt() const; + ::pg_query::AlterTSDictionaryStmt* _internal_mutable_alter_tsdictionary_stmt(); + public: + void unsafe_arena_set_allocated_alter_tsdictionary_stmt( + ::pg_query::AlterTSDictionaryStmt* alter_tsdictionary_stmt); + ::pg_query::AlterTSDictionaryStmt* unsafe_arena_release_alter_tsdictionary_stmt(); + + // .pg_query.AlterTSConfigurationStmt alter_tsconfiguration_stmt = 133 [json_name = "AlterTSConfigurationStmt"]; + bool has_alter_tsconfiguration_stmt() const; + private: + bool _internal_has_alter_tsconfiguration_stmt() const; + public: + void clear_alter_tsconfiguration_stmt(); + const ::pg_query::AlterTSConfigurationStmt& alter_tsconfiguration_stmt() const; + ::pg_query::AlterTSConfigurationStmt* release_alter_tsconfiguration_stmt(); + ::pg_query::AlterTSConfigurationStmt* mutable_alter_tsconfiguration_stmt(); + void set_allocated_alter_tsconfiguration_stmt(::pg_query::AlterTSConfigurationStmt* alter_tsconfiguration_stmt); + private: + const ::pg_query::AlterTSConfigurationStmt& _internal_alter_tsconfiguration_stmt() const; + ::pg_query::AlterTSConfigurationStmt* _internal_mutable_alter_tsconfiguration_stmt(); + public: + void unsafe_arena_set_allocated_alter_tsconfiguration_stmt( + ::pg_query::AlterTSConfigurationStmt* alter_tsconfiguration_stmt); + ::pg_query::AlterTSConfigurationStmt* unsafe_arena_release_alter_tsconfiguration_stmt(); + + // .pg_query.CreateFdwStmt create_fdw_stmt = 134 [json_name = "CreateFdwStmt"]; + bool has_create_fdw_stmt() const; + private: + bool _internal_has_create_fdw_stmt() const; + public: + void clear_create_fdw_stmt(); + const ::pg_query::CreateFdwStmt& create_fdw_stmt() const; + ::pg_query::CreateFdwStmt* release_create_fdw_stmt(); + ::pg_query::CreateFdwStmt* mutable_create_fdw_stmt(); + void set_allocated_create_fdw_stmt(::pg_query::CreateFdwStmt* create_fdw_stmt); + private: + const ::pg_query::CreateFdwStmt& _internal_create_fdw_stmt() const; + ::pg_query::CreateFdwStmt* _internal_mutable_create_fdw_stmt(); + public: + void unsafe_arena_set_allocated_create_fdw_stmt( + ::pg_query::CreateFdwStmt* create_fdw_stmt); + ::pg_query::CreateFdwStmt* unsafe_arena_release_create_fdw_stmt(); + + // .pg_query.AlterFdwStmt alter_fdw_stmt = 135 [json_name = "AlterFdwStmt"]; + bool has_alter_fdw_stmt() const; + private: + bool _internal_has_alter_fdw_stmt() const; + public: + void clear_alter_fdw_stmt(); + const ::pg_query::AlterFdwStmt& alter_fdw_stmt() const; + ::pg_query::AlterFdwStmt* release_alter_fdw_stmt(); + ::pg_query::AlterFdwStmt* mutable_alter_fdw_stmt(); + void set_allocated_alter_fdw_stmt(::pg_query::AlterFdwStmt* alter_fdw_stmt); + private: + const ::pg_query::AlterFdwStmt& _internal_alter_fdw_stmt() const; + ::pg_query::AlterFdwStmt* _internal_mutable_alter_fdw_stmt(); + public: + void unsafe_arena_set_allocated_alter_fdw_stmt( + ::pg_query::AlterFdwStmt* alter_fdw_stmt); + ::pg_query::AlterFdwStmt* unsafe_arena_release_alter_fdw_stmt(); + + // .pg_query.CreateForeignServerStmt create_foreign_server_stmt = 136 [json_name = "CreateForeignServerStmt"]; + bool has_create_foreign_server_stmt() const; + private: + bool _internal_has_create_foreign_server_stmt() const; + public: + void clear_create_foreign_server_stmt(); + const ::pg_query::CreateForeignServerStmt& create_foreign_server_stmt() const; + ::pg_query::CreateForeignServerStmt* release_create_foreign_server_stmt(); + ::pg_query::CreateForeignServerStmt* mutable_create_foreign_server_stmt(); + void set_allocated_create_foreign_server_stmt(::pg_query::CreateForeignServerStmt* create_foreign_server_stmt); + private: + const ::pg_query::CreateForeignServerStmt& _internal_create_foreign_server_stmt() const; + ::pg_query::CreateForeignServerStmt* _internal_mutable_create_foreign_server_stmt(); + public: + void unsafe_arena_set_allocated_create_foreign_server_stmt( + ::pg_query::CreateForeignServerStmt* create_foreign_server_stmt); + ::pg_query::CreateForeignServerStmt* unsafe_arena_release_create_foreign_server_stmt(); + + // .pg_query.AlterForeignServerStmt alter_foreign_server_stmt = 137 [json_name = "AlterForeignServerStmt"]; + bool has_alter_foreign_server_stmt() const; + private: + bool _internal_has_alter_foreign_server_stmt() const; + public: + void clear_alter_foreign_server_stmt(); + const ::pg_query::AlterForeignServerStmt& alter_foreign_server_stmt() const; + ::pg_query::AlterForeignServerStmt* release_alter_foreign_server_stmt(); + ::pg_query::AlterForeignServerStmt* mutable_alter_foreign_server_stmt(); + void set_allocated_alter_foreign_server_stmt(::pg_query::AlterForeignServerStmt* alter_foreign_server_stmt); + private: + const ::pg_query::AlterForeignServerStmt& _internal_alter_foreign_server_stmt() const; + ::pg_query::AlterForeignServerStmt* _internal_mutable_alter_foreign_server_stmt(); + public: + void unsafe_arena_set_allocated_alter_foreign_server_stmt( + ::pg_query::AlterForeignServerStmt* alter_foreign_server_stmt); + ::pg_query::AlterForeignServerStmt* unsafe_arena_release_alter_foreign_server_stmt(); + + // .pg_query.CreateUserMappingStmt create_user_mapping_stmt = 138 [json_name = "CreateUserMappingStmt"]; + bool has_create_user_mapping_stmt() const; + private: + bool _internal_has_create_user_mapping_stmt() const; + public: + void clear_create_user_mapping_stmt(); + const ::pg_query::CreateUserMappingStmt& create_user_mapping_stmt() const; + ::pg_query::CreateUserMappingStmt* release_create_user_mapping_stmt(); + ::pg_query::CreateUserMappingStmt* mutable_create_user_mapping_stmt(); + void set_allocated_create_user_mapping_stmt(::pg_query::CreateUserMappingStmt* create_user_mapping_stmt); + private: + const ::pg_query::CreateUserMappingStmt& _internal_create_user_mapping_stmt() const; + ::pg_query::CreateUserMappingStmt* _internal_mutable_create_user_mapping_stmt(); + public: + void unsafe_arena_set_allocated_create_user_mapping_stmt( + ::pg_query::CreateUserMappingStmt* create_user_mapping_stmt); + ::pg_query::CreateUserMappingStmt* unsafe_arena_release_create_user_mapping_stmt(); + + // .pg_query.AlterUserMappingStmt alter_user_mapping_stmt = 139 [json_name = "AlterUserMappingStmt"]; + bool has_alter_user_mapping_stmt() const; + private: + bool _internal_has_alter_user_mapping_stmt() const; + public: + void clear_alter_user_mapping_stmt(); + const ::pg_query::AlterUserMappingStmt& alter_user_mapping_stmt() const; + ::pg_query::AlterUserMappingStmt* release_alter_user_mapping_stmt(); + ::pg_query::AlterUserMappingStmt* mutable_alter_user_mapping_stmt(); + void set_allocated_alter_user_mapping_stmt(::pg_query::AlterUserMappingStmt* alter_user_mapping_stmt); + private: + const ::pg_query::AlterUserMappingStmt& _internal_alter_user_mapping_stmt() const; + ::pg_query::AlterUserMappingStmt* _internal_mutable_alter_user_mapping_stmt(); + public: + void unsafe_arena_set_allocated_alter_user_mapping_stmt( + ::pg_query::AlterUserMappingStmt* alter_user_mapping_stmt); + ::pg_query::AlterUserMappingStmt* unsafe_arena_release_alter_user_mapping_stmt(); + + // .pg_query.DropUserMappingStmt drop_user_mapping_stmt = 140 [json_name = "DropUserMappingStmt"]; + bool has_drop_user_mapping_stmt() const; + private: + bool _internal_has_drop_user_mapping_stmt() const; + public: + void clear_drop_user_mapping_stmt(); + const ::pg_query::DropUserMappingStmt& drop_user_mapping_stmt() const; + ::pg_query::DropUserMappingStmt* release_drop_user_mapping_stmt(); + ::pg_query::DropUserMappingStmt* mutable_drop_user_mapping_stmt(); + void set_allocated_drop_user_mapping_stmt(::pg_query::DropUserMappingStmt* drop_user_mapping_stmt); + private: + const ::pg_query::DropUserMappingStmt& _internal_drop_user_mapping_stmt() const; + ::pg_query::DropUserMappingStmt* _internal_mutable_drop_user_mapping_stmt(); + public: + void unsafe_arena_set_allocated_drop_user_mapping_stmt( + ::pg_query::DropUserMappingStmt* drop_user_mapping_stmt); + ::pg_query::DropUserMappingStmt* unsafe_arena_release_drop_user_mapping_stmt(); + + // .pg_query.AlterTableSpaceOptionsStmt alter_table_space_options_stmt = 141 [json_name = "AlterTableSpaceOptionsStmt"]; + bool has_alter_table_space_options_stmt() const; + private: + bool _internal_has_alter_table_space_options_stmt() const; + public: + void clear_alter_table_space_options_stmt(); + const ::pg_query::AlterTableSpaceOptionsStmt& alter_table_space_options_stmt() const; + ::pg_query::AlterTableSpaceOptionsStmt* release_alter_table_space_options_stmt(); + ::pg_query::AlterTableSpaceOptionsStmt* mutable_alter_table_space_options_stmt(); + void set_allocated_alter_table_space_options_stmt(::pg_query::AlterTableSpaceOptionsStmt* alter_table_space_options_stmt); + private: + const ::pg_query::AlterTableSpaceOptionsStmt& _internal_alter_table_space_options_stmt() const; + ::pg_query::AlterTableSpaceOptionsStmt* _internal_mutable_alter_table_space_options_stmt(); + public: + void unsafe_arena_set_allocated_alter_table_space_options_stmt( + ::pg_query::AlterTableSpaceOptionsStmt* alter_table_space_options_stmt); + ::pg_query::AlterTableSpaceOptionsStmt* unsafe_arena_release_alter_table_space_options_stmt(); + + // .pg_query.AlterTableMoveAllStmt alter_table_move_all_stmt = 142 [json_name = "AlterTableMoveAllStmt"]; + bool has_alter_table_move_all_stmt() const; + private: + bool _internal_has_alter_table_move_all_stmt() const; + public: + void clear_alter_table_move_all_stmt(); + const ::pg_query::AlterTableMoveAllStmt& alter_table_move_all_stmt() const; + ::pg_query::AlterTableMoveAllStmt* release_alter_table_move_all_stmt(); + ::pg_query::AlterTableMoveAllStmt* mutable_alter_table_move_all_stmt(); + void set_allocated_alter_table_move_all_stmt(::pg_query::AlterTableMoveAllStmt* alter_table_move_all_stmt); + private: + const ::pg_query::AlterTableMoveAllStmt& _internal_alter_table_move_all_stmt() const; + ::pg_query::AlterTableMoveAllStmt* _internal_mutable_alter_table_move_all_stmt(); + public: + void unsafe_arena_set_allocated_alter_table_move_all_stmt( + ::pg_query::AlterTableMoveAllStmt* alter_table_move_all_stmt); + ::pg_query::AlterTableMoveAllStmt* unsafe_arena_release_alter_table_move_all_stmt(); + + // .pg_query.SecLabelStmt sec_label_stmt = 143 [json_name = "SecLabelStmt"]; + bool has_sec_label_stmt() const; + private: + bool _internal_has_sec_label_stmt() const; + public: + void clear_sec_label_stmt(); + const ::pg_query::SecLabelStmt& sec_label_stmt() const; + ::pg_query::SecLabelStmt* release_sec_label_stmt(); + ::pg_query::SecLabelStmt* mutable_sec_label_stmt(); + void set_allocated_sec_label_stmt(::pg_query::SecLabelStmt* sec_label_stmt); + private: + const ::pg_query::SecLabelStmt& _internal_sec_label_stmt() const; + ::pg_query::SecLabelStmt* _internal_mutable_sec_label_stmt(); + public: + void unsafe_arena_set_allocated_sec_label_stmt( + ::pg_query::SecLabelStmt* sec_label_stmt); + ::pg_query::SecLabelStmt* unsafe_arena_release_sec_label_stmt(); + + // .pg_query.CreateForeignTableStmt create_foreign_table_stmt = 144 [json_name = "CreateForeignTableStmt"]; + bool has_create_foreign_table_stmt() const; + private: + bool _internal_has_create_foreign_table_stmt() const; + public: + void clear_create_foreign_table_stmt(); + const ::pg_query::CreateForeignTableStmt& create_foreign_table_stmt() const; + ::pg_query::CreateForeignTableStmt* release_create_foreign_table_stmt(); + ::pg_query::CreateForeignTableStmt* mutable_create_foreign_table_stmt(); + void set_allocated_create_foreign_table_stmt(::pg_query::CreateForeignTableStmt* create_foreign_table_stmt); + private: + const ::pg_query::CreateForeignTableStmt& _internal_create_foreign_table_stmt() const; + ::pg_query::CreateForeignTableStmt* _internal_mutable_create_foreign_table_stmt(); + public: + void unsafe_arena_set_allocated_create_foreign_table_stmt( + ::pg_query::CreateForeignTableStmt* create_foreign_table_stmt); + ::pg_query::CreateForeignTableStmt* unsafe_arena_release_create_foreign_table_stmt(); + + // .pg_query.ImportForeignSchemaStmt import_foreign_schema_stmt = 145 [json_name = "ImportForeignSchemaStmt"]; + bool has_import_foreign_schema_stmt() const; + private: + bool _internal_has_import_foreign_schema_stmt() const; + public: + void clear_import_foreign_schema_stmt(); + const ::pg_query::ImportForeignSchemaStmt& import_foreign_schema_stmt() const; + ::pg_query::ImportForeignSchemaStmt* release_import_foreign_schema_stmt(); + ::pg_query::ImportForeignSchemaStmt* mutable_import_foreign_schema_stmt(); + void set_allocated_import_foreign_schema_stmt(::pg_query::ImportForeignSchemaStmt* import_foreign_schema_stmt); + private: + const ::pg_query::ImportForeignSchemaStmt& _internal_import_foreign_schema_stmt() const; + ::pg_query::ImportForeignSchemaStmt* _internal_mutable_import_foreign_schema_stmt(); + public: + void unsafe_arena_set_allocated_import_foreign_schema_stmt( + ::pg_query::ImportForeignSchemaStmt* import_foreign_schema_stmt); + ::pg_query::ImportForeignSchemaStmt* unsafe_arena_release_import_foreign_schema_stmt(); + + // .pg_query.CreateExtensionStmt create_extension_stmt = 146 [json_name = "CreateExtensionStmt"]; + bool has_create_extension_stmt() const; + private: + bool _internal_has_create_extension_stmt() const; + public: + void clear_create_extension_stmt(); + const ::pg_query::CreateExtensionStmt& create_extension_stmt() const; + ::pg_query::CreateExtensionStmt* release_create_extension_stmt(); + ::pg_query::CreateExtensionStmt* mutable_create_extension_stmt(); + void set_allocated_create_extension_stmt(::pg_query::CreateExtensionStmt* create_extension_stmt); + private: + const ::pg_query::CreateExtensionStmt& _internal_create_extension_stmt() const; + ::pg_query::CreateExtensionStmt* _internal_mutable_create_extension_stmt(); + public: + void unsafe_arena_set_allocated_create_extension_stmt( + ::pg_query::CreateExtensionStmt* create_extension_stmt); + ::pg_query::CreateExtensionStmt* unsafe_arena_release_create_extension_stmt(); + + // .pg_query.AlterExtensionStmt alter_extension_stmt = 147 [json_name = "AlterExtensionStmt"]; + bool has_alter_extension_stmt() const; + private: + bool _internal_has_alter_extension_stmt() const; + public: + void clear_alter_extension_stmt(); + const ::pg_query::AlterExtensionStmt& alter_extension_stmt() const; + ::pg_query::AlterExtensionStmt* release_alter_extension_stmt(); + ::pg_query::AlterExtensionStmt* mutable_alter_extension_stmt(); + void set_allocated_alter_extension_stmt(::pg_query::AlterExtensionStmt* alter_extension_stmt); + private: + const ::pg_query::AlterExtensionStmt& _internal_alter_extension_stmt() const; + ::pg_query::AlterExtensionStmt* _internal_mutable_alter_extension_stmt(); + public: + void unsafe_arena_set_allocated_alter_extension_stmt( + ::pg_query::AlterExtensionStmt* alter_extension_stmt); + ::pg_query::AlterExtensionStmt* unsafe_arena_release_alter_extension_stmt(); + + // .pg_query.AlterExtensionContentsStmt alter_extension_contents_stmt = 148 [json_name = "AlterExtensionContentsStmt"]; + bool has_alter_extension_contents_stmt() const; + private: + bool _internal_has_alter_extension_contents_stmt() const; + public: + void clear_alter_extension_contents_stmt(); + const ::pg_query::AlterExtensionContentsStmt& alter_extension_contents_stmt() const; + ::pg_query::AlterExtensionContentsStmt* release_alter_extension_contents_stmt(); + ::pg_query::AlterExtensionContentsStmt* mutable_alter_extension_contents_stmt(); + void set_allocated_alter_extension_contents_stmt(::pg_query::AlterExtensionContentsStmt* alter_extension_contents_stmt); + private: + const ::pg_query::AlterExtensionContentsStmt& _internal_alter_extension_contents_stmt() const; + ::pg_query::AlterExtensionContentsStmt* _internal_mutable_alter_extension_contents_stmt(); + public: + void unsafe_arena_set_allocated_alter_extension_contents_stmt( + ::pg_query::AlterExtensionContentsStmt* alter_extension_contents_stmt); + ::pg_query::AlterExtensionContentsStmt* unsafe_arena_release_alter_extension_contents_stmt(); + + // .pg_query.CreateEventTrigStmt create_event_trig_stmt = 149 [json_name = "CreateEventTrigStmt"]; + bool has_create_event_trig_stmt() const; + private: + bool _internal_has_create_event_trig_stmt() const; + public: + void clear_create_event_trig_stmt(); + const ::pg_query::CreateEventTrigStmt& create_event_trig_stmt() const; + ::pg_query::CreateEventTrigStmt* release_create_event_trig_stmt(); + ::pg_query::CreateEventTrigStmt* mutable_create_event_trig_stmt(); + void set_allocated_create_event_trig_stmt(::pg_query::CreateEventTrigStmt* create_event_trig_stmt); + private: + const ::pg_query::CreateEventTrigStmt& _internal_create_event_trig_stmt() const; + ::pg_query::CreateEventTrigStmt* _internal_mutable_create_event_trig_stmt(); + public: + void unsafe_arena_set_allocated_create_event_trig_stmt( + ::pg_query::CreateEventTrigStmt* create_event_trig_stmt); + ::pg_query::CreateEventTrigStmt* unsafe_arena_release_create_event_trig_stmt(); + + // .pg_query.AlterEventTrigStmt alter_event_trig_stmt = 150 [json_name = "AlterEventTrigStmt"]; + bool has_alter_event_trig_stmt() const; + private: + bool _internal_has_alter_event_trig_stmt() const; + public: + void clear_alter_event_trig_stmt(); + const ::pg_query::AlterEventTrigStmt& alter_event_trig_stmt() const; + ::pg_query::AlterEventTrigStmt* release_alter_event_trig_stmt(); + ::pg_query::AlterEventTrigStmt* mutable_alter_event_trig_stmt(); + void set_allocated_alter_event_trig_stmt(::pg_query::AlterEventTrigStmt* alter_event_trig_stmt); + private: + const ::pg_query::AlterEventTrigStmt& _internal_alter_event_trig_stmt() const; + ::pg_query::AlterEventTrigStmt* _internal_mutable_alter_event_trig_stmt(); + public: + void unsafe_arena_set_allocated_alter_event_trig_stmt( + ::pg_query::AlterEventTrigStmt* alter_event_trig_stmt); + ::pg_query::AlterEventTrigStmt* unsafe_arena_release_alter_event_trig_stmt(); + + // .pg_query.RefreshMatViewStmt refresh_mat_view_stmt = 151 [json_name = "RefreshMatViewStmt"]; + bool has_refresh_mat_view_stmt() const; + private: + bool _internal_has_refresh_mat_view_stmt() const; + public: + void clear_refresh_mat_view_stmt(); + const ::pg_query::RefreshMatViewStmt& refresh_mat_view_stmt() const; + ::pg_query::RefreshMatViewStmt* release_refresh_mat_view_stmt(); + ::pg_query::RefreshMatViewStmt* mutable_refresh_mat_view_stmt(); + void set_allocated_refresh_mat_view_stmt(::pg_query::RefreshMatViewStmt* refresh_mat_view_stmt); + private: + const ::pg_query::RefreshMatViewStmt& _internal_refresh_mat_view_stmt() const; + ::pg_query::RefreshMatViewStmt* _internal_mutable_refresh_mat_view_stmt(); + public: + void unsafe_arena_set_allocated_refresh_mat_view_stmt( + ::pg_query::RefreshMatViewStmt* refresh_mat_view_stmt); + ::pg_query::RefreshMatViewStmt* unsafe_arena_release_refresh_mat_view_stmt(); + + // .pg_query.ReplicaIdentityStmt replica_identity_stmt = 152 [json_name = "ReplicaIdentityStmt"]; + bool has_replica_identity_stmt() const; + private: + bool _internal_has_replica_identity_stmt() const; + public: + void clear_replica_identity_stmt(); + const ::pg_query::ReplicaIdentityStmt& replica_identity_stmt() const; + ::pg_query::ReplicaIdentityStmt* release_replica_identity_stmt(); + ::pg_query::ReplicaIdentityStmt* mutable_replica_identity_stmt(); + void set_allocated_replica_identity_stmt(::pg_query::ReplicaIdentityStmt* replica_identity_stmt); + private: + const ::pg_query::ReplicaIdentityStmt& _internal_replica_identity_stmt() const; + ::pg_query::ReplicaIdentityStmt* _internal_mutable_replica_identity_stmt(); + public: + void unsafe_arena_set_allocated_replica_identity_stmt( + ::pg_query::ReplicaIdentityStmt* replica_identity_stmt); + ::pg_query::ReplicaIdentityStmt* unsafe_arena_release_replica_identity_stmt(); + + // .pg_query.AlterSystemStmt alter_system_stmt = 153 [json_name = "AlterSystemStmt"]; + bool has_alter_system_stmt() const; + private: + bool _internal_has_alter_system_stmt() const; + public: + void clear_alter_system_stmt(); + const ::pg_query::AlterSystemStmt& alter_system_stmt() const; + ::pg_query::AlterSystemStmt* release_alter_system_stmt(); + ::pg_query::AlterSystemStmt* mutable_alter_system_stmt(); + void set_allocated_alter_system_stmt(::pg_query::AlterSystemStmt* alter_system_stmt); + private: + const ::pg_query::AlterSystemStmt& _internal_alter_system_stmt() const; + ::pg_query::AlterSystemStmt* _internal_mutable_alter_system_stmt(); + public: + void unsafe_arena_set_allocated_alter_system_stmt( + ::pg_query::AlterSystemStmt* alter_system_stmt); + ::pg_query::AlterSystemStmt* unsafe_arena_release_alter_system_stmt(); + + // .pg_query.CreatePolicyStmt create_policy_stmt = 154 [json_name = "CreatePolicyStmt"]; + bool has_create_policy_stmt() const; + private: + bool _internal_has_create_policy_stmt() const; + public: + void clear_create_policy_stmt(); + const ::pg_query::CreatePolicyStmt& create_policy_stmt() const; + ::pg_query::CreatePolicyStmt* release_create_policy_stmt(); + ::pg_query::CreatePolicyStmt* mutable_create_policy_stmt(); + void set_allocated_create_policy_stmt(::pg_query::CreatePolicyStmt* create_policy_stmt); + private: + const ::pg_query::CreatePolicyStmt& _internal_create_policy_stmt() const; + ::pg_query::CreatePolicyStmt* _internal_mutable_create_policy_stmt(); + public: + void unsafe_arena_set_allocated_create_policy_stmt( + ::pg_query::CreatePolicyStmt* create_policy_stmt); + ::pg_query::CreatePolicyStmt* unsafe_arena_release_create_policy_stmt(); + + // .pg_query.AlterPolicyStmt alter_policy_stmt = 155 [json_name = "AlterPolicyStmt"]; + bool has_alter_policy_stmt() const; + private: + bool _internal_has_alter_policy_stmt() const; + public: + void clear_alter_policy_stmt(); + const ::pg_query::AlterPolicyStmt& alter_policy_stmt() const; + ::pg_query::AlterPolicyStmt* release_alter_policy_stmt(); + ::pg_query::AlterPolicyStmt* mutable_alter_policy_stmt(); + void set_allocated_alter_policy_stmt(::pg_query::AlterPolicyStmt* alter_policy_stmt); + private: + const ::pg_query::AlterPolicyStmt& _internal_alter_policy_stmt() const; + ::pg_query::AlterPolicyStmt* _internal_mutable_alter_policy_stmt(); + public: + void unsafe_arena_set_allocated_alter_policy_stmt( + ::pg_query::AlterPolicyStmt* alter_policy_stmt); + ::pg_query::AlterPolicyStmt* unsafe_arena_release_alter_policy_stmt(); + + // .pg_query.CreateTransformStmt create_transform_stmt = 156 [json_name = "CreateTransformStmt"]; + bool has_create_transform_stmt() const; + private: + bool _internal_has_create_transform_stmt() const; + public: + void clear_create_transform_stmt(); + const ::pg_query::CreateTransformStmt& create_transform_stmt() const; + ::pg_query::CreateTransformStmt* release_create_transform_stmt(); + ::pg_query::CreateTransformStmt* mutable_create_transform_stmt(); + void set_allocated_create_transform_stmt(::pg_query::CreateTransformStmt* create_transform_stmt); + private: + const ::pg_query::CreateTransformStmt& _internal_create_transform_stmt() const; + ::pg_query::CreateTransformStmt* _internal_mutable_create_transform_stmt(); + public: + void unsafe_arena_set_allocated_create_transform_stmt( + ::pg_query::CreateTransformStmt* create_transform_stmt); + ::pg_query::CreateTransformStmt* unsafe_arena_release_create_transform_stmt(); + + // .pg_query.CreateAmStmt create_am_stmt = 157 [json_name = "CreateAmStmt"]; + bool has_create_am_stmt() const; + private: + bool _internal_has_create_am_stmt() const; + public: + void clear_create_am_stmt(); + const ::pg_query::CreateAmStmt& create_am_stmt() const; + ::pg_query::CreateAmStmt* release_create_am_stmt(); + ::pg_query::CreateAmStmt* mutable_create_am_stmt(); + void set_allocated_create_am_stmt(::pg_query::CreateAmStmt* create_am_stmt); + private: + const ::pg_query::CreateAmStmt& _internal_create_am_stmt() const; + ::pg_query::CreateAmStmt* _internal_mutable_create_am_stmt(); + public: + void unsafe_arena_set_allocated_create_am_stmt( + ::pg_query::CreateAmStmt* create_am_stmt); + ::pg_query::CreateAmStmt* unsafe_arena_release_create_am_stmt(); + + // .pg_query.CreatePublicationStmt create_publication_stmt = 158 [json_name = "CreatePublicationStmt"]; + bool has_create_publication_stmt() const; + private: + bool _internal_has_create_publication_stmt() const; + public: + void clear_create_publication_stmt(); + const ::pg_query::CreatePublicationStmt& create_publication_stmt() const; + ::pg_query::CreatePublicationStmt* release_create_publication_stmt(); + ::pg_query::CreatePublicationStmt* mutable_create_publication_stmt(); + void set_allocated_create_publication_stmt(::pg_query::CreatePublicationStmt* create_publication_stmt); + private: + const ::pg_query::CreatePublicationStmt& _internal_create_publication_stmt() const; + ::pg_query::CreatePublicationStmt* _internal_mutable_create_publication_stmt(); + public: + void unsafe_arena_set_allocated_create_publication_stmt( + ::pg_query::CreatePublicationStmt* create_publication_stmt); + ::pg_query::CreatePublicationStmt* unsafe_arena_release_create_publication_stmt(); + + // .pg_query.AlterPublicationStmt alter_publication_stmt = 159 [json_name = "AlterPublicationStmt"]; + bool has_alter_publication_stmt() const; + private: + bool _internal_has_alter_publication_stmt() const; + public: + void clear_alter_publication_stmt(); + const ::pg_query::AlterPublicationStmt& alter_publication_stmt() const; + ::pg_query::AlterPublicationStmt* release_alter_publication_stmt(); + ::pg_query::AlterPublicationStmt* mutable_alter_publication_stmt(); + void set_allocated_alter_publication_stmt(::pg_query::AlterPublicationStmt* alter_publication_stmt); + private: + const ::pg_query::AlterPublicationStmt& _internal_alter_publication_stmt() const; + ::pg_query::AlterPublicationStmt* _internal_mutable_alter_publication_stmt(); + public: + void unsafe_arena_set_allocated_alter_publication_stmt( + ::pg_query::AlterPublicationStmt* alter_publication_stmt); + ::pg_query::AlterPublicationStmt* unsafe_arena_release_alter_publication_stmt(); + + // .pg_query.CreateSubscriptionStmt create_subscription_stmt = 160 [json_name = "CreateSubscriptionStmt"]; + bool has_create_subscription_stmt() const; + private: + bool _internal_has_create_subscription_stmt() const; + public: + void clear_create_subscription_stmt(); + const ::pg_query::CreateSubscriptionStmt& create_subscription_stmt() const; + ::pg_query::CreateSubscriptionStmt* release_create_subscription_stmt(); + ::pg_query::CreateSubscriptionStmt* mutable_create_subscription_stmt(); + void set_allocated_create_subscription_stmt(::pg_query::CreateSubscriptionStmt* create_subscription_stmt); + private: + const ::pg_query::CreateSubscriptionStmt& _internal_create_subscription_stmt() const; + ::pg_query::CreateSubscriptionStmt* _internal_mutable_create_subscription_stmt(); + public: + void unsafe_arena_set_allocated_create_subscription_stmt( + ::pg_query::CreateSubscriptionStmt* create_subscription_stmt); + ::pg_query::CreateSubscriptionStmt* unsafe_arena_release_create_subscription_stmt(); + + // .pg_query.AlterSubscriptionStmt alter_subscription_stmt = 161 [json_name = "AlterSubscriptionStmt"]; + bool has_alter_subscription_stmt() const; + private: + bool _internal_has_alter_subscription_stmt() const; + public: + void clear_alter_subscription_stmt(); + const ::pg_query::AlterSubscriptionStmt& alter_subscription_stmt() const; + ::pg_query::AlterSubscriptionStmt* release_alter_subscription_stmt(); + ::pg_query::AlterSubscriptionStmt* mutable_alter_subscription_stmt(); + void set_allocated_alter_subscription_stmt(::pg_query::AlterSubscriptionStmt* alter_subscription_stmt); + private: + const ::pg_query::AlterSubscriptionStmt& _internal_alter_subscription_stmt() const; + ::pg_query::AlterSubscriptionStmt* _internal_mutable_alter_subscription_stmt(); + public: + void unsafe_arena_set_allocated_alter_subscription_stmt( + ::pg_query::AlterSubscriptionStmt* alter_subscription_stmt); + ::pg_query::AlterSubscriptionStmt* unsafe_arena_release_alter_subscription_stmt(); + + // .pg_query.DropSubscriptionStmt drop_subscription_stmt = 162 [json_name = "DropSubscriptionStmt"]; + bool has_drop_subscription_stmt() const; + private: + bool _internal_has_drop_subscription_stmt() const; + public: + void clear_drop_subscription_stmt(); + const ::pg_query::DropSubscriptionStmt& drop_subscription_stmt() const; + ::pg_query::DropSubscriptionStmt* release_drop_subscription_stmt(); + ::pg_query::DropSubscriptionStmt* mutable_drop_subscription_stmt(); + void set_allocated_drop_subscription_stmt(::pg_query::DropSubscriptionStmt* drop_subscription_stmt); + private: + const ::pg_query::DropSubscriptionStmt& _internal_drop_subscription_stmt() const; + ::pg_query::DropSubscriptionStmt* _internal_mutable_drop_subscription_stmt(); + public: + void unsafe_arena_set_allocated_drop_subscription_stmt( + ::pg_query::DropSubscriptionStmt* drop_subscription_stmt); + ::pg_query::DropSubscriptionStmt* unsafe_arena_release_drop_subscription_stmt(); + + // .pg_query.CreateStatsStmt create_stats_stmt = 163 [json_name = "CreateStatsStmt"]; + bool has_create_stats_stmt() const; + private: + bool _internal_has_create_stats_stmt() const; + public: + void clear_create_stats_stmt(); + const ::pg_query::CreateStatsStmt& create_stats_stmt() const; + ::pg_query::CreateStatsStmt* release_create_stats_stmt(); + ::pg_query::CreateStatsStmt* mutable_create_stats_stmt(); + void set_allocated_create_stats_stmt(::pg_query::CreateStatsStmt* create_stats_stmt); + private: + const ::pg_query::CreateStatsStmt& _internal_create_stats_stmt() const; + ::pg_query::CreateStatsStmt* _internal_mutable_create_stats_stmt(); + public: + void unsafe_arena_set_allocated_create_stats_stmt( + ::pg_query::CreateStatsStmt* create_stats_stmt); + ::pg_query::CreateStatsStmt* unsafe_arena_release_create_stats_stmt(); + + // .pg_query.AlterCollationStmt alter_collation_stmt = 164 [json_name = "AlterCollationStmt"]; + bool has_alter_collation_stmt() const; + private: + bool _internal_has_alter_collation_stmt() const; + public: + void clear_alter_collation_stmt(); + const ::pg_query::AlterCollationStmt& alter_collation_stmt() const; + ::pg_query::AlterCollationStmt* release_alter_collation_stmt(); + ::pg_query::AlterCollationStmt* mutable_alter_collation_stmt(); + void set_allocated_alter_collation_stmt(::pg_query::AlterCollationStmt* alter_collation_stmt); + private: + const ::pg_query::AlterCollationStmt& _internal_alter_collation_stmt() const; + ::pg_query::AlterCollationStmt* _internal_mutable_alter_collation_stmt(); + public: + void unsafe_arena_set_allocated_alter_collation_stmt( + ::pg_query::AlterCollationStmt* alter_collation_stmt); + ::pg_query::AlterCollationStmt* unsafe_arena_release_alter_collation_stmt(); + + // .pg_query.CallStmt call_stmt = 165 [json_name = "CallStmt"]; + bool has_call_stmt() const; + private: + bool _internal_has_call_stmt() const; + public: + void clear_call_stmt(); + const ::pg_query::CallStmt& call_stmt() const; + ::pg_query::CallStmt* release_call_stmt(); + ::pg_query::CallStmt* mutable_call_stmt(); + void set_allocated_call_stmt(::pg_query::CallStmt* call_stmt); + private: + const ::pg_query::CallStmt& _internal_call_stmt() const; + ::pg_query::CallStmt* _internal_mutable_call_stmt(); + public: + void unsafe_arena_set_allocated_call_stmt( + ::pg_query::CallStmt* call_stmt); + ::pg_query::CallStmt* unsafe_arena_release_call_stmt(); + + // .pg_query.AlterStatsStmt alter_stats_stmt = 166 [json_name = "AlterStatsStmt"]; + bool has_alter_stats_stmt() const; + private: + bool _internal_has_alter_stats_stmt() const; + public: + void clear_alter_stats_stmt(); + const ::pg_query::AlterStatsStmt& alter_stats_stmt() const; + ::pg_query::AlterStatsStmt* release_alter_stats_stmt(); + ::pg_query::AlterStatsStmt* mutable_alter_stats_stmt(); + void set_allocated_alter_stats_stmt(::pg_query::AlterStatsStmt* alter_stats_stmt); + private: + const ::pg_query::AlterStatsStmt& _internal_alter_stats_stmt() const; + ::pg_query::AlterStatsStmt* _internal_mutable_alter_stats_stmt(); + public: + void unsafe_arena_set_allocated_alter_stats_stmt( + ::pg_query::AlterStatsStmt* alter_stats_stmt); + ::pg_query::AlterStatsStmt* unsafe_arena_release_alter_stats_stmt(); + + // .pg_query.A_Expr a_expr = 167 [json_name = "A_Expr"]; + bool has_a_expr() const; + private: + bool _internal_has_a_expr() const; + public: + void clear_a_expr(); + const ::pg_query::A_Expr& a_expr() const; + ::pg_query::A_Expr* release_a_expr(); + ::pg_query::A_Expr* mutable_a_expr(); + void set_allocated_a_expr(::pg_query::A_Expr* a_expr); + private: + const ::pg_query::A_Expr& _internal_a_expr() const; + ::pg_query::A_Expr* _internal_mutable_a_expr(); + public: + void unsafe_arena_set_allocated_a_expr( + ::pg_query::A_Expr* a_expr); + ::pg_query::A_Expr* unsafe_arena_release_a_expr(); + + // .pg_query.ColumnRef column_ref = 168 [json_name = "ColumnRef"]; + bool has_column_ref() const; + private: + bool _internal_has_column_ref() const; + public: + void clear_column_ref(); + const ::pg_query::ColumnRef& column_ref() const; + ::pg_query::ColumnRef* release_column_ref(); + ::pg_query::ColumnRef* mutable_column_ref(); + void set_allocated_column_ref(::pg_query::ColumnRef* column_ref); + private: + const ::pg_query::ColumnRef& _internal_column_ref() const; + ::pg_query::ColumnRef* _internal_mutable_column_ref(); + public: + void unsafe_arena_set_allocated_column_ref( + ::pg_query::ColumnRef* column_ref); + ::pg_query::ColumnRef* unsafe_arena_release_column_ref(); + + // .pg_query.ParamRef param_ref = 169 [json_name = "ParamRef"]; + bool has_param_ref() const; + private: + bool _internal_has_param_ref() const; + public: + void clear_param_ref(); + const ::pg_query::ParamRef& param_ref() const; + ::pg_query::ParamRef* release_param_ref(); + ::pg_query::ParamRef* mutable_param_ref(); + void set_allocated_param_ref(::pg_query::ParamRef* param_ref); + private: + const ::pg_query::ParamRef& _internal_param_ref() const; + ::pg_query::ParamRef* _internal_mutable_param_ref(); + public: + void unsafe_arena_set_allocated_param_ref( + ::pg_query::ParamRef* param_ref); + ::pg_query::ParamRef* unsafe_arena_release_param_ref(); + + // .pg_query.A_Const a_const = 170 [json_name = "A_Const"]; + bool has_a_const() const; + private: + bool _internal_has_a_const() const; + public: + void clear_a_const(); + const ::pg_query::A_Const& a_const() const; + ::pg_query::A_Const* release_a_const(); + ::pg_query::A_Const* mutable_a_const(); + void set_allocated_a_const(::pg_query::A_Const* a_const); + private: + const ::pg_query::A_Const& _internal_a_const() const; + ::pg_query::A_Const* _internal_mutable_a_const(); + public: + void unsafe_arena_set_allocated_a_const( + ::pg_query::A_Const* a_const); + ::pg_query::A_Const* unsafe_arena_release_a_const(); + + // .pg_query.FuncCall func_call = 171 [json_name = "FuncCall"]; + bool has_func_call() const; + private: + bool _internal_has_func_call() const; + public: + void clear_func_call(); + const ::pg_query::FuncCall& func_call() const; + ::pg_query::FuncCall* release_func_call(); + ::pg_query::FuncCall* mutable_func_call(); + void set_allocated_func_call(::pg_query::FuncCall* func_call); + private: + const ::pg_query::FuncCall& _internal_func_call() const; + ::pg_query::FuncCall* _internal_mutable_func_call(); + public: + void unsafe_arena_set_allocated_func_call( + ::pg_query::FuncCall* func_call); + ::pg_query::FuncCall* unsafe_arena_release_func_call(); + + // .pg_query.A_Star a_star = 172 [json_name = "A_Star"]; + bool has_a_star() const; + private: + bool _internal_has_a_star() const; + public: + void clear_a_star(); + const ::pg_query::A_Star& a_star() const; + ::pg_query::A_Star* release_a_star(); + ::pg_query::A_Star* mutable_a_star(); + void set_allocated_a_star(::pg_query::A_Star* a_star); + private: + const ::pg_query::A_Star& _internal_a_star() const; + ::pg_query::A_Star* _internal_mutable_a_star(); + public: + void unsafe_arena_set_allocated_a_star( + ::pg_query::A_Star* a_star); + ::pg_query::A_Star* unsafe_arena_release_a_star(); + + // .pg_query.A_Indices a_indices = 173 [json_name = "A_Indices"]; + bool has_a_indices() const; + private: + bool _internal_has_a_indices() const; + public: + void clear_a_indices(); + const ::pg_query::A_Indices& a_indices() const; + ::pg_query::A_Indices* release_a_indices(); + ::pg_query::A_Indices* mutable_a_indices(); + void set_allocated_a_indices(::pg_query::A_Indices* a_indices); + private: + const ::pg_query::A_Indices& _internal_a_indices() const; + ::pg_query::A_Indices* _internal_mutable_a_indices(); + public: + void unsafe_arena_set_allocated_a_indices( + ::pg_query::A_Indices* a_indices); + ::pg_query::A_Indices* unsafe_arena_release_a_indices(); + + // .pg_query.A_Indirection a_indirection = 174 [json_name = "A_Indirection"]; + bool has_a_indirection() const; + private: + bool _internal_has_a_indirection() const; + public: + void clear_a_indirection(); + const ::pg_query::A_Indirection& a_indirection() const; + ::pg_query::A_Indirection* release_a_indirection(); + ::pg_query::A_Indirection* mutable_a_indirection(); + void set_allocated_a_indirection(::pg_query::A_Indirection* a_indirection); + private: + const ::pg_query::A_Indirection& _internal_a_indirection() const; + ::pg_query::A_Indirection* _internal_mutable_a_indirection(); + public: + void unsafe_arena_set_allocated_a_indirection( + ::pg_query::A_Indirection* a_indirection); + ::pg_query::A_Indirection* unsafe_arena_release_a_indirection(); + + // .pg_query.A_ArrayExpr a_array_expr = 175 [json_name = "A_ArrayExpr"]; + bool has_a_array_expr() const; + private: + bool _internal_has_a_array_expr() const; + public: + void clear_a_array_expr(); + const ::pg_query::A_ArrayExpr& a_array_expr() const; + ::pg_query::A_ArrayExpr* release_a_array_expr(); + ::pg_query::A_ArrayExpr* mutable_a_array_expr(); + void set_allocated_a_array_expr(::pg_query::A_ArrayExpr* a_array_expr); + private: + const ::pg_query::A_ArrayExpr& _internal_a_array_expr() const; + ::pg_query::A_ArrayExpr* _internal_mutable_a_array_expr(); + public: + void unsafe_arena_set_allocated_a_array_expr( + ::pg_query::A_ArrayExpr* a_array_expr); + ::pg_query::A_ArrayExpr* unsafe_arena_release_a_array_expr(); + + // .pg_query.ResTarget res_target = 176 [json_name = "ResTarget"]; + bool has_res_target() const; + private: + bool _internal_has_res_target() const; + public: + void clear_res_target(); + const ::pg_query::ResTarget& res_target() const; + ::pg_query::ResTarget* release_res_target(); + ::pg_query::ResTarget* mutable_res_target(); + void set_allocated_res_target(::pg_query::ResTarget* res_target); + private: + const ::pg_query::ResTarget& _internal_res_target() const; + ::pg_query::ResTarget* _internal_mutable_res_target(); + public: + void unsafe_arena_set_allocated_res_target( + ::pg_query::ResTarget* res_target); + ::pg_query::ResTarget* unsafe_arena_release_res_target(); + + // .pg_query.MultiAssignRef multi_assign_ref = 177 [json_name = "MultiAssignRef"]; + bool has_multi_assign_ref() const; + private: + bool _internal_has_multi_assign_ref() const; + public: + void clear_multi_assign_ref(); + const ::pg_query::MultiAssignRef& multi_assign_ref() const; + ::pg_query::MultiAssignRef* release_multi_assign_ref(); + ::pg_query::MultiAssignRef* mutable_multi_assign_ref(); + void set_allocated_multi_assign_ref(::pg_query::MultiAssignRef* multi_assign_ref); + private: + const ::pg_query::MultiAssignRef& _internal_multi_assign_ref() const; + ::pg_query::MultiAssignRef* _internal_mutable_multi_assign_ref(); + public: + void unsafe_arena_set_allocated_multi_assign_ref( + ::pg_query::MultiAssignRef* multi_assign_ref); + ::pg_query::MultiAssignRef* unsafe_arena_release_multi_assign_ref(); + + // .pg_query.TypeCast type_cast = 178 [json_name = "TypeCast"]; + bool has_type_cast() const; + private: + bool _internal_has_type_cast() const; + public: + void clear_type_cast(); + const ::pg_query::TypeCast& type_cast() const; + ::pg_query::TypeCast* release_type_cast(); + ::pg_query::TypeCast* mutable_type_cast(); + void set_allocated_type_cast(::pg_query::TypeCast* type_cast); + private: + const ::pg_query::TypeCast& _internal_type_cast() const; + ::pg_query::TypeCast* _internal_mutable_type_cast(); + public: + void unsafe_arena_set_allocated_type_cast( + ::pg_query::TypeCast* type_cast); + ::pg_query::TypeCast* unsafe_arena_release_type_cast(); + + // .pg_query.CollateClause collate_clause = 179 [json_name = "CollateClause"]; + bool has_collate_clause() const; + private: + bool _internal_has_collate_clause() const; + public: + void clear_collate_clause(); + const ::pg_query::CollateClause& collate_clause() const; + ::pg_query::CollateClause* release_collate_clause(); + ::pg_query::CollateClause* mutable_collate_clause(); + void set_allocated_collate_clause(::pg_query::CollateClause* collate_clause); + private: + const ::pg_query::CollateClause& _internal_collate_clause() const; + ::pg_query::CollateClause* _internal_mutable_collate_clause(); + public: + void unsafe_arena_set_allocated_collate_clause( + ::pg_query::CollateClause* collate_clause); + ::pg_query::CollateClause* unsafe_arena_release_collate_clause(); + + // .pg_query.SortBy sort_by = 180 [json_name = "SortBy"]; + bool has_sort_by() const; + private: + bool _internal_has_sort_by() const; + public: + void clear_sort_by(); + const ::pg_query::SortBy& sort_by() const; + ::pg_query::SortBy* release_sort_by(); + ::pg_query::SortBy* mutable_sort_by(); + void set_allocated_sort_by(::pg_query::SortBy* sort_by); + private: + const ::pg_query::SortBy& _internal_sort_by() const; + ::pg_query::SortBy* _internal_mutable_sort_by(); + public: + void unsafe_arena_set_allocated_sort_by( + ::pg_query::SortBy* sort_by); + ::pg_query::SortBy* unsafe_arena_release_sort_by(); + + // .pg_query.WindowDef window_def = 181 [json_name = "WindowDef"]; + bool has_window_def() const; + private: + bool _internal_has_window_def() const; + public: + void clear_window_def(); + const ::pg_query::WindowDef& window_def() const; + ::pg_query::WindowDef* release_window_def(); + ::pg_query::WindowDef* mutable_window_def(); + void set_allocated_window_def(::pg_query::WindowDef* window_def); + private: + const ::pg_query::WindowDef& _internal_window_def() const; + ::pg_query::WindowDef* _internal_mutable_window_def(); + public: + void unsafe_arena_set_allocated_window_def( + ::pg_query::WindowDef* window_def); + ::pg_query::WindowDef* unsafe_arena_release_window_def(); + + // .pg_query.RangeSubselect range_subselect = 182 [json_name = "RangeSubselect"]; + bool has_range_subselect() const; + private: + bool _internal_has_range_subselect() const; + public: + void clear_range_subselect(); + const ::pg_query::RangeSubselect& range_subselect() const; + ::pg_query::RangeSubselect* release_range_subselect(); + ::pg_query::RangeSubselect* mutable_range_subselect(); + void set_allocated_range_subselect(::pg_query::RangeSubselect* range_subselect); + private: + const ::pg_query::RangeSubselect& _internal_range_subselect() const; + ::pg_query::RangeSubselect* _internal_mutable_range_subselect(); + public: + void unsafe_arena_set_allocated_range_subselect( + ::pg_query::RangeSubselect* range_subselect); + ::pg_query::RangeSubselect* unsafe_arena_release_range_subselect(); + + // .pg_query.RangeFunction range_function = 183 [json_name = "RangeFunction"]; + bool has_range_function() const; + private: + bool _internal_has_range_function() const; + public: + void clear_range_function(); + const ::pg_query::RangeFunction& range_function() const; + ::pg_query::RangeFunction* release_range_function(); + ::pg_query::RangeFunction* mutable_range_function(); + void set_allocated_range_function(::pg_query::RangeFunction* range_function); + private: + const ::pg_query::RangeFunction& _internal_range_function() const; + ::pg_query::RangeFunction* _internal_mutable_range_function(); + public: + void unsafe_arena_set_allocated_range_function( + ::pg_query::RangeFunction* range_function); + ::pg_query::RangeFunction* unsafe_arena_release_range_function(); + + // .pg_query.RangeTableSample range_table_sample = 184 [json_name = "RangeTableSample"]; + bool has_range_table_sample() const; + private: + bool _internal_has_range_table_sample() const; + public: + void clear_range_table_sample(); + const ::pg_query::RangeTableSample& range_table_sample() const; + ::pg_query::RangeTableSample* release_range_table_sample(); + ::pg_query::RangeTableSample* mutable_range_table_sample(); + void set_allocated_range_table_sample(::pg_query::RangeTableSample* range_table_sample); + private: + const ::pg_query::RangeTableSample& _internal_range_table_sample() const; + ::pg_query::RangeTableSample* _internal_mutable_range_table_sample(); + public: + void unsafe_arena_set_allocated_range_table_sample( + ::pg_query::RangeTableSample* range_table_sample); + ::pg_query::RangeTableSample* unsafe_arena_release_range_table_sample(); + + // .pg_query.RangeTableFunc range_table_func = 185 [json_name = "RangeTableFunc"]; + bool has_range_table_func() const; + private: + bool _internal_has_range_table_func() const; + public: + void clear_range_table_func(); + const ::pg_query::RangeTableFunc& range_table_func() const; + ::pg_query::RangeTableFunc* release_range_table_func(); + ::pg_query::RangeTableFunc* mutable_range_table_func(); + void set_allocated_range_table_func(::pg_query::RangeTableFunc* range_table_func); + private: + const ::pg_query::RangeTableFunc& _internal_range_table_func() const; + ::pg_query::RangeTableFunc* _internal_mutable_range_table_func(); + public: + void unsafe_arena_set_allocated_range_table_func( + ::pg_query::RangeTableFunc* range_table_func); + ::pg_query::RangeTableFunc* unsafe_arena_release_range_table_func(); + + // .pg_query.RangeTableFuncCol range_table_func_col = 186 [json_name = "RangeTableFuncCol"]; + bool has_range_table_func_col() const; + private: + bool _internal_has_range_table_func_col() const; + public: + void clear_range_table_func_col(); + const ::pg_query::RangeTableFuncCol& range_table_func_col() const; + ::pg_query::RangeTableFuncCol* release_range_table_func_col(); + ::pg_query::RangeTableFuncCol* mutable_range_table_func_col(); + void set_allocated_range_table_func_col(::pg_query::RangeTableFuncCol* range_table_func_col); + private: + const ::pg_query::RangeTableFuncCol& _internal_range_table_func_col() const; + ::pg_query::RangeTableFuncCol* _internal_mutable_range_table_func_col(); + public: + void unsafe_arena_set_allocated_range_table_func_col( + ::pg_query::RangeTableFuncCol* range_table_func_col); + ::pg_query::RangeTableFuncCol* unsafe_arena_release_range_table_func_col(); + + // .pg_query.TypeName type_name = 187 [json_name = "TypeName"]; + bool has_type_name() const; + private: + bool _internal_has_type_name() const; + public: + void clear_type_name(); + const ::pg_query::TypeName& type_name() const; + ::pg_query::TypeName* release_type_name(); + ::pg_query::TypeName* mutable_type_name(); + void set_allocated_type_name(::pg_query::TypeName* type_name); + private: + const ::pg_query::TypeName& _internal_type_name() const; + ::pg_query::TypeName* _internal_mutable_type_name(); + public: + void unsafe_arena_set_allocated_type_name( + ::pg_query::TypeName* type_name); + ::pg_query::TypeName* unsafe_arena_release_type_name(); + + // .pg_query.ColumnDef column_def = 188 [json_name = "ColumnDef"]; + bool has_column_def() const; + private: + bool _internal_has_column_def() const; + public: + void clear_column_def(); + const ::pg_query::ColumnDef& column_def() const; + ::pg_query::ColumnDef* release_column_def(); + ::pg_query::ColumnDef* mutable_column_def(); + void set_allocated_column_def(::pg_query::ColumnDef* column_def); + private: + const ::pg_query::ColumnDef& _internal_column_def() const; + ::pg_query::ColumnDef* _internal_mutable_column_def(); + public: + void unsafe_arena_set_allocated_column_def( + ::pg_query::ColumnDef* column_def); + ::pg_query::ColumnDef* unsafe_arena_release_column_def(); + + // .pg_query.IndexElem index_elem = 189 [json_name = "IndexElem"]; + bool has_index_elem() const; + private: + bool _internal_has_index_elem() const; + public: + void clear_index_elem(); + const ::pg_query::IndexElem& index_elem() const; + ::pg_query::IndexElem* release_index_elem(); + ::pg_query::IndexElem* mutable_index_elem(); + void set_allocated_index_elem(::pg_query::IndexElem* index_elem); + private: + const ::pg_query::IndexElem& _internal_index_elem() const; + ::pg_query::IndexElem* _internal_mutable_index_elem(); + public: + void unsafe_arena_set_allocated_index_elem( + ::pg_query::IndexElem* index_elem); + ::pg_query::IndexElem* unsafe_arena_release_index_elem(); + + // .pg_query.Constraint constraint = 190 [json_name = "Constraint"]; + bool has_constraint() const; + private: + bool _internal_has_constraint() const; + public: + void clear_constraint(); + const ::pg_query::Constraint& constraint() const; + ::pg_query::Constraint* release_constraint(); + ::pg_query::Constraint* mutable_constraint(); + void set_allocated_constraint(::pg_query::Constraint* constraint); + private: + const ::pg_query::Constraint& _internal_constraint() const; + ::pg_query::Constraint* _internal_mutable_constraint(); + public: + void unsafe_arena_set_allocated_constraint( + ::pg_query::Constraint* constraint); + ::pg_query::Constraint* unsafe_arena_release_constraint(); + + // .pg_query.DefElem def_elem = 191 [json_name = "DefElem"]; + bool has_def_elem() const; + private: + bool _internal_has_def_elem() const; + public: + void clear_def_elem(); + const ::pg_query::DefElem& def_elem() const; + ::pg_query::DefElem* release_def_elem(); + ::pg_query::DefElem* mutable_def_elem(); + void set_allocated_def_elem(::pg_query::DefElem* def_elem); + private: + const ::pg_query::DefElem& _internal_def_elem() const; + ::pg_query::DefElem* _internal_mutable_def_elem(); + public: + void unsafe_arena_set_allocated_def_elem( + ::pg_query::DefElem* def_elem); + ::pg_query::DefElem* unsafe_arena_release_def_elem(); + + // .pg_query.RangeTblEntry range_tbl_entry = 192 [json_name = "RangeTblEntry"]; + bool has_range_tbl_entry() const; + private: + bool _internal_has_range_tbl_entry() const; + public: + void clear_range_tbl_entry(); + const ::pg_query::RangeTblEntry& range_tbl_entry() const; + ::pg_query::RangeTblEntry* release_range_tbl_entry(); + ::pg_query::RangeTblEntry* mutable_range_tbl_entry(); + void set_allocated_range_tbl_entry(::pg_query::RangeTblEntry* range_tbl_entry); + private: + const ::pg_query::RangeTblEntry& _internal_range_tbl_entry() const; + ::pg_query::RangeTblEntry* _internal_mutable_range_tbl_entry(); + public: + void unsafe_arena_set_allocated_range_tbl_entry( + ::pg_query::RangeTblEntry* range_tbl_entry); + ::pg_query::RangeTblEntry* unsafe_arena_release_range_tbl_entry(); + + // .pg_query.RangeTblFunction range_tbl_function = 193 [json_name = "RangeTblFunction"]; + bool has_range_tbl_function() const; + private: + bool _internal_has_range_tbl_function() const; + public: + void clear_range_tbl_function(); + const ::pg_query::RangeTblFunction& range_tbl_function() const; + ::pg_query::RangeTblFunction* release_range_tbl_function(); + ::pg_query::RangeTblFunction* mutable_range_tbl_function(); + void set_allocated_range_tbl_function(::pg_query::RangeTblFunction* range_tbl_function); + private: + const ::pg_query::RangeTblFunction& _internal_range_tbl_function() const; + ::pg_query::RangeTblFunction* _internal_mutable_range_tbl_function(); + public: + void unsafe_arena_set_allocated_range_tbl_function( + ::pg_query::RangeTblFunction* range_tbl_function); + ::pg_query::RangeTblFunction* unsafe_arena_release_range_tbl_function(); + + // .pg_query.TableSampleClause table_sample_clause = 194 [json_name = "TableSampleClause"]; + bool has_table_sample_clause() const; + private: + bool _internal_has_table_sample_clause() const; + public: + void clear_table_sample_clause(); + const ::pg_query::TableSampleClause& table_sample_clause() const; + ::pg_query::TableSampleClause* release_table_sample_clause(); + ::pg_query::TableSampleClause* mutable_table_sample_clause(); + void set_allocated_table_sample_clause(::pg_query::TableSampleClause* table_sample_clause); + private: + const ::pg_query::TableSampleClause& _internal_table_sample_clause() const; + ::pg_query::TableSampleClause* _internal_mutable_table_sample_clause(); + public: + void unsafe_arena_set_allocated_table_sample_clause( + ::pg_query::TableSampleClause* table_sample_clause); + ::pg_query::TableSampleClause* unsafe_arena_release_table_sample_clause(); + + // .pg_query.WithCheckOption with_check_option = 195 [json_name = "WithCheckOption"]; + bool has_with_check_option() const; + private: + bool _internal_has_with_check_option() const; + public: + void clear_with_check_option(); + const ::pg_query::WithCheckOption& with_check_option() const; + ::pg_query::WithCheckOption* release_with_check_option(); + ::pg_query::WithCheckOption* mutable_with_check_option(); + void set_allocated_with_check_option(::pg_query::WithCheckOption* with_check_option); + private: + const ::pg_query::WithCheckOption& _internal_with_check_option() const; + ::pg_query::WithCheckOption* _internal_mutable_with_check_option(); + public: + void unsafe_arena_set_allocated_with_check_option( + ::pg_query::WithCheckOption* with_check_option); + ::pg_query::WithCheckOption* unsafe_arena_release_with_check_option(); + + // .pg_query.SortGroupClause sort_group_clause = 196 [json_name = "SortGroupClause"]; + bool has_sort_group_clause() const; + private: + bool _internal_has_sort_group_clause() const; + public: + void clear_sort_group_clause(); + const ::pg_query::SortGroupClause& sort_group_clause() const; + ::pg_query::SortGroupClause* release_sort_group_clause(); + ::pg_query::SortGroupClause* mutable_sort_group_clause(); + void set_allocated_sort_group_clause(::pg_query::SortGroupClause* sort_group_clause); + private: + const ::pg_query::SortGroupClause& _internal_sort_group_clause() const; + ::pg_query::SortGroupClause* _internal_mutable_sort_group_clause(); + public: + void unsafe_arena_set_allocated_sort_group_clause( + ::pg_query::SortGroupClause* sort_group_clause); + ::pg_query::SortGroupClause* unsafe_arena_release_sort_group_clause(); + + // .pg_query.GroupingSet grouping_set = 197 [json_name = "GroupingSet"]; + bool has_grouping_set() const; + private: + bool _internal_has_grouping_set() const; + public: + void clear_grouping_set(); + const ::pg_query::GroupingSet& grouping_set() const; + ::pg_query::GroupingSet* release_grouping_set(); + ::pg_query::GroupingSet* mutable_grouping_set(); + void set_allocated_grouping_set(::pg_query::GroupingSet* grouping_set); + private: + const ::pg_query::GroupingSet& _internal_grouping_set() const; + ::pg_query::GroupingSet* _internal_mutable_grouping_set(); + public: + void unsafe_arena_set_allocated_grouping_set( + ::pg_query::GroupingSet* grouping_set); + ::pg_query::GroupingSet* unsafe_arena_release_grouping_set(); + + // .pg_query.WindowClause window_clause = 198 [json_name = "WindowClause"]; + bool has_window_clause() const; + private: + bool _internal_has_window_clause() const; + public: + void clear_window_clause(); + const ::pg_query::WindowClause& window_clause() const; + ::pg_query::WindowClause* release_window_clause(); + ::pg_query::WindowClause* mutable_window_clause(); + void set_allocated_window_clause(::pg_query::WindowClause* window_clause); + private: + const ::pg_query::WindowClause& _internal_window_clause() const; + ::pg_query::WindowClause* _internal_mutable_window_clause(); + public: + void unsafe_arena_set_allocated_window_clause( + ::pg_query::WindowClause* window_clause); + ::pg_query::WindowClause* unsafe_arena_release_window_clause(); + + // .pg_query.ObjectWithArgs object_with_args = 199 [json_name = "ObjectWithArgs"]; + bool has_object_with_args() const; + private: + bool _internal_has_object_with_args() const; + public: + void clear_object_with_args(); + const ::pg_query::ObjectWithArgs& object_with_args() const; + ::pg_query::ObjectWithArgs* release_object_with_args(); + ::pg_query::ObjectWithArgs* mutable_object_with_args(); + void set_allocated_object_with_args(::pg_query::ObjectWithArgs* object_with_args); + private: + const ::pg_query::ObjectWithArgs& _internal_object_with_args() const; + ::pg_query::ObjectWithArgs* _internal_mutable_object_with_args(); + public: + void unsafe_arena_set_allocated_object_with_args( + ::pg_query::ObjectWithArgs* object_with_args); + ::pg_query::ObjectWithArgs* unsafe_arena_release_object_with_args(); + + // .pg_query.AccessPriv access_priv = 200 [json_name = "AccessPriv"]; + bool has_access_priv() const; + private: + bool _internal_has_access_priv() const; + public: + void clear_access_priv(); + const ::pg_query::AccessPriv& access_priv() const; + ::pg_query::AccessPriv* release_access_priv(); + ::pg_query::AccessPriv* mutable_access_priv(); + void set_allocated_access_priv(::pg_query::AccessPriv* access_priv); + private: + const ::pg_query::AccessPriv& _internal_access_priv() const; + ::pg_query::AccessPriv* _internal_mutable_access_priv(); + public: + void unsafe_arena_set_allocated_access_priv( + ::pg_query::AccessPriv* access_priv); + ::pg_query::AccessPriv* unsafe_arena_release_access_priv(); + + // .pg_query.CreateOpClassItem create_op_class_item = 201 [json_name = "CreateOpClassItem"]; + bool has_create_op_class_item() const; + private: + bool _internal_has_create_op_class_item() const; + public: + void clear_create_op_class_item(); + const ::pg_query::CreateOpClassItem& create_op_class_item() const; + ::pg_query::CreateOpClassItem* release_create_op_class_item(); + ::pg_query::CreateOpClassItem* mutable_create_op_class_item(); + void set_allocated_create_op_class_item(::pg_query::CreateOpClassItem* create_op_class_item); + private: + const ::pg_query::CreateOpClassItem& _internal_create_op_class_item() const; + ::pg_query::CreateOpClassItem* _internal_mutable_create_op_class_item(); + public: + void unsafe_arena_set_allocated_create_op_class_item( + ::pg_query::CreateOpClassItem* create_op_class_item); + ::pg_query::CreateOpClassItem* unsafe_arena_release_create_op_class_item(); + + // .pg_query.TableLikeClause table_like_clause = 202 [json_name = "TableLikeClause"]; + bool has_table_like_clause() const; + private: + bool _internal_has_table_like_clause() const; + public: + void clear_table_like_clause(); + const ::pg_query::TableLikeClause& table_like_clause() const; + ::pg_query::TableLikeClause* release_table_like_clause(); + ::pg_query::TableLikeClause* mutable_table_like_clause(); + void set_allocated_table_like_clause(::pg_query::TableLikeClause* table_like_clause); + private: + const ::pg_query::TableLikeClause& _internal_table_like_clause() const; + ::pg_query::TableLikeClause* _internal_mutable_table_like_clause(); + public: + void unsafe_arena_set_allocated_table_like_clause( + ::pg_query::TableLikeClause* table_like_clause); + ::pg_query::TableLikeClause* unsafe_arena_release_table_like_clause(); + + // .pg_query.FunctionParameter function_parameter = 203 [json_name = "FunctionParameter"]; + bool has_function_parameter() const; + private: + bool _internal_has_function_parameter() const; + public: + void clear_function_parameter(); + const ::pg_query::FunctionParameter& function_parameter() const; + ::pg_query::FunctionParameter* release_function_parameter(); + ::pg_query::FunctionParameter* mutable_function_parameter(); + void set_allocated_function_parameter(::pg_query::FunctionParameter* function_parameter); + private: + const ::pg_query::FunctionParameter& _internal_function_parameter() const; + ::pg_query::FunctionParameter* _internal_mutable_function_parameter(); + public: + void unsafe_arena_set_allocated_function_parameter( + ::pg_query::FunctionParameter* function_parameter); + ::pg_query::FunctionParameter* unsafe_arena_release_function_parameter(); + + // .pg_query.LockingClause locking_clause = 204 [json_name = "LockingClause"]; + bool has_locking_clause() const; + private: + bool _internal_has_locking_clause() const; + public: + void clear_locking_clause(); + const ::pg_query::LockingClause& locking_clause() const; + ::pg_query::LockingClause* release_locking_clause(); + ::pg_query::LockingClause* mutable_locking_clause(); + void set_allocated_locking_clause(::pg_query::LockingClause* locking_clause); + private: + const ::pg_query::LockingClause& _internal_locking_clause() const; + ::pg_query::LockingClause* _internal_mutable_locking_clause(); + public: + void unsafe_arena_set_allocated_locking_clause( + ::pg_query::LockingClause* locking_clause); + ::pg_query::LockingClause* unsafe_arena_release_locking_clause(); + + // .pg_query.RowMarkClause row_mark_clause = 205 [json_name = "RowMarkClause"]; + bool has_row_mark_clause() const; + private: + bool _internal_has_row_mark_clause() const; + public: + void clear_row_mark_clause(); + const ::pg_query::RowMarkClause& row_mark_clause() const; + ::pg_query::RowMarkClause* release_row_mark_clause(); + ::pg_query::RowMarkClause* mutable_row_mark_clause(); + void set_allocated_row_mark_clause(::pg_query::RowMarkClause* row_mark_clause); + private: + const ::pg_query::RowMarkClause& _internal_row_mark_clause() const; + ::pg_query::RowMarkClause* _internal_mutable_row_mark_clause(); + public: + void unsafe_arena_set_allocated_row_mark_clause( + ::pg_query::RowMarkClause* row_mark_clause); + ::pg_query::RowMarkClause* unsafe_arena_release_row_mark_clause(); + + // .pg_query.XmlSerialize xml_serialize = 206 [json_name = "XmlSerialize"]; + bool has_xml_serialize() const; + private: + bool _internal_has_xml_serialize() const; + public: + void clear_xml_serialize(); + const ::pg_query::XmlSerialize& xml_serialize() const; + ::pg_query::XmlSerialize* release_xml_serialize(); + ::pg_query::XmlSerialize* mutable_xml_serialize(); + void set_allocated_xml_serialize(::pg_query::XmlSerialize* xml_serialize); + private: + const ::pg_query::XmlSerialize& _internal_xml_serialize() const; + ::pg_query::XmlSerialize* _internal_mutable_xml_serialize(); + public: + void unsafe_arena_set_allocated_xml_serialize( + ::pg_query::XmlSerialize* xml_serialize); + ::pg_query::XmlSerialize* unsafe_arena_release_xml_serialize(); + + // .pg_query.WithClause with_clause = 207 [json_name = "WithClause"]; + bool has_with_clause() const; + private: + bool _internal_has_with_clause() const; + public: + void clear_with_clause(); + const ::pg_query::WithClause& with_clause() const; + ::pg_query::WithClause* release_with_clause(); + ::pg_query::WithClause* mutable_with_clause(); + void set_allocated_with_clause(::pg_query::WithClause* with_clause); + private: + const ::pg_query::WithClause& _internal_with_clause() const; + ::pg_query::WithClause* _internal_mutable_with_clause(); + public: + void unsafe_arena_set_allocated_with_clause( + ::pg_query::WithClause* with_clause); + ::pg_query::WithClause* unsafe_arena_release_with_clause(); + + // .pg_query.InferClause infer_clause = 208 [json_name = "InferClause"]; + bool has_infer_clause() const; + private: + bool _internal_has_infer_clause() const; + public: + void clear_infer_clause(); + const ::pg_query::InferClause& infer_clause() const; + ::pg_query::InferClause* release_infer_clause(); + ::pg_query::InferClause* mutable_infer_clause(); + void set_allocated_infer_clause(::pg_query::InferClause* infer_clause); + private: + const ::pg_query::InferClause& _internal_infer_clause() const; + ::pg_query::InferClause* _internal_mutable_infer_clause(); + public: + void unsafe_arena_set_allocated_infer_clause( + ::pg_query::InferClause* infer_clause); + ::pg_query::InferClause* unsafe_arena_release_infer_clause(); + + // .pg_query.OnConflictClause on_conflict_clause = 209 [json_name = "OnConflictClause"]; + bool has_on_conflict_clause() const; + private: + bool _internal_has_on_conflict_clause() const; + public: + void clear_on_conflict_clause(); + const ::pg_query::OnConflictClause& on_conflict_clause() const; + ::pg_query::OnConflictClause* release_on_conflict_clause(); + ::pg_query::OnConflictClause* mutable_on_conflict_clause(); + void set_allocated_on_conflict_clause(::pg_query::OnConflictClause* on_conflict_clause); + private: + const ::pg_query::OnConflictClause& _internal_on_conflict_clause() const; + ::pg_query::OnConflictClause* _internal_mutable_on_conflict_clause(); + public: + void unsafe_arena_set_allocated_on_conflict_clause( + ::pg_query::OnConflictClause* on_conflict_clause); + ::pg_query::OnConflictClause* unsafe_arena_release_on_conflict_clause(); + + // .pg_query.CommonTableExpr common_table_expr = 210 [json_name = "CommonTableExpr"]; + bool has_common_table_expr() const; + private: + bool _internal_has_common_table_expr() const; + public: + void clear_common_table_expr(); + const ::pg_query::CommonTableExpr& common_table_expr() const; + ::pg_query::CommonTableExpr* release_common_table_expr(); + ::pg_query::CommonTableExpr* mutable_common_table_expr(); + void set_allocated_common_table_expr(::pg_query::CommonTableExpr* common_table_expr); + private: + const ::pg_query::CommonTableExpr& _internal_common_table_expr() const; + ::pg_query::CommonTableExpr* _internal_mutable_common_table_expr(); + public: + void unsafe_arena_set_allocated_common_table_expr( + ::pg_query::CommonTableExpr* common_table_expr); + ::pg_query::CommonTableExpr* unsafe_arena_release_common_table_expr(); + + // .pg_query.RoleSpec role_spec = 211 [json_name = "RoleSpec"]; + bool has_role_spec() const; + private: + bool _internal_has_role_spec() const; + public: + void clear_role_spec(); + const ::pg_query::RoleSpec& role_spec() const; + ::pg_query::RoleSpec* release_role_spec(); + ::pg_query::RoleSpec* mutable_role_spec(); + void set_allocated_role_spec(::pg_query::RoleSpec* role_spec); + private: + const ::pg_query::RoleSpec& _internal_role_spec() const; + ::pg_query::RoleSpec* _internal_mutable_role_spec(); + public: + void unsafe_arena_set_allocated_role_spec( + ::pg_query::RoleSpec* role_spec); + ::pg_query::RoleSpec* unsafe_arena_release_role_spec(); + + // .pg_query.TriggerTransition trigger_transition = 212 [json_name = "TriggerTransition"]; + bool has_trigger_transition() const; + private: + bool _internal_has_trigger_transition() const; + public: + void clear_trigger_transition(); + const ::pg_query::TriggerTransition& trigger_transition() const; + ::pg_query::TriggerTransition* release_trigger_transition(); + ::pg_query::TriggerTransition* mutable_trigger_transition(); + void set_allocated_trigger_transition(::pg_query::TriggerTransition* trigger_transition); + private: + const ::pg_query::TriggerTransition& _internal_trigger_transition() const; + ::pg_query::TriggerTransition* _internal_mutable_trigger_transition(); + public: + void unsafe_arena_set_allocated_trigger_transition( + ::pg_query::TriggerTransition* trigger_transition); + ::pg_query::TriggerTransition* unsafe_arena_release_trigger_transition(); + + // .pg_query.PartitionElem partition_elem = 213 [json_name = "PartitionElem"]; + bool has_partition_elem() const; + private: + bool _internal_has_partition_elem() const; + public: + void clear_partition_elem(); + const ::pg_query::PartitionElem& partition_elem() const; + ::pg_query::PartitionElem* release_partition_elem(); + ::pg_query::PartitionElem* mutable_partition_elem(); + void set_allocated_partition_elem(::pg_query::PartitionElem* partition_elem); + private: + const ::pg_query::PartitionElem& _internal_partition_elem() const; + ::pg_query::PartitionElem* _internal_mutable_partition_elem(); + public: + void unsafe_arena_set_allocated_partition_elem( + ::pg_query::PartitionElem* partition_elem); + ::pg_query::PartitionElem* unsafe_arena_release_partition_elem(); + + // .pg_query.PartitionSpec partition_spec = 214 [json_name = "PartitionSpec"]; + bool has_partition_spec() const; + private: + bool _internal_has_partition_spec() const; + public: + void clear_partition_spec(); + const ::pg_query::PartitionSpec& partition_spec() const; + ::pg_query::PartitionSpec* release_partition_spec(); + ::pg_query::PartitionSpec* mutable_partition_spec(); + void set_allocated_partition_spec(::pg_query::PartitionSpec* partition_spec); + private: + const ::pg_query::PartitionSpec& _internal_partition_spec() const; + ::pg_query::PartitionSpec* _internal_mutable_partition_spec(); + public: + void unsafe_arena_set_allocated_partition_spec( + ::pg_query::PartitionSpec* partition_spec); + ::pg_query::PartitionSpec* unsafe_arena_release_partition_spec(); + + // .pg_query.PartitionBoundSpec partition_bound_spec = 215 [json_name = "PartitionBoundSpec"]; + bool has_partition_bound_spec() const; + private: + bool _internal_has_partition_bound_spec() const; + public: + void clear_partition_bound_spec(); + const ::pg_query::PartitionBoundSpec& partition_bound_spec() const; + ::pg_query::PartitionBoundSpec* release_partition_bound_spec(); + ::pg_query::PartitionBoundSpec* mutable_partition_bound_spec(); + void set_allocated_partition_bound_spec(::pg_query::PartitionBoundSpec* partition_bound_spec); + private: + const ::pg_query::PartitionBoundSpec& _internal_partition_bound_spec() const; + ::pg_query::PartitionBoundSpec* _internal_mutable_partition_bound_spec(); + public: + void unsafe_arena_set_allocated_partition_bound_spec( + ::pg_query::PartitionBoundSpec* partition_bound_spec); + ::pg_query::PartitionBoundSpec* unsafe_arena_release_partition_bound_spec(); + + // .pg_query.PartitionRangeDatum partition_range_datum = 216 [json_name = "PartitionRangeDatum"]; + bool has_partition_range_datum() const; + private: + bool _internal_has_partition_range_datum() const; + public: + void clear_partition_range_datum(); + const ::pg_query::PartitionRangeDatum& partition_range_datum() const; + ::pg_query::PartitionRangeDatum* release_partition_range_datum(); + ::pg_query::PartitionRangeDatum* mutable_partition_range_datum(); + void set_allocated_partition_range_datum(::pg_query::PartitionRangeDatum* partition_range_datum); + private: + const ::pg_query::PartitionRangeDatum& _internal_partition_range_datum() const; + ::pg_query::PartitionRangeDatum* _internal_mutable_partition_range_datum(); + public: + void unsafe_arena_set_allocated_partition_range_datum( + ::pg_query::PartitionRangeDatum* partition_range_datum); + ::pg_query::PartitionRangeDatum* unsafe_arena_release_partition_range_datum(); + + // .pg_query.PartitionCmd partition_cmd = 217 [json_name = "PartitionCmd"]; + bool has_partition_cmd() const; + private: + bool _internal_has_partition_cmd() const; + public: + void clear_partition_cmd(); + const ::pg_query::PartitionCmd& partition_cmd() const; + ::pg_query::PartitionCmd* release_partition_cmd(); + ::pg_query::PartitionCmd* mutable_partition_cmd(); + void set_allocated_partition_cmd(::pg_query::PartitionCmd* partition_cmd); + private: + const ::pg_query::PartitionCmd& _internal_partition_cmd() const; + ::pg_query::PartitionCmd* _internal_mutable_partition_cmd(); + public: + void unsafe_arena_set_allocated_partition_cmd( + ::pg_query::PartitionCmd* partition_cmd); + ::pg_query::PartitionCmd* unsafe_arena_release_partition_cmd(); + + // .pg_query.VacuumRelation vacuum_relation = 218 [json_name = "VacuumRelation"]; + bool has_vacuum_relation() const; + private: + bool _internal_has_vacuum_relation() const; + public: + void clear_vacuum_relation(); + const ::pg_query::VacuumRelation& vacuum_relation() const; + ::pg_query::VacuumRelation* release_vacuum_relation(); + ::pg_query::VacuumRelation* mutable_vacuum_relation(); + void set_allocated_vacuum_relation(::pg_query::VacuumRelation* vacuum_relation); + private: + const ::pg_query::VacuumRelation& _internal_vacuum_relation() const; + ::pg_query::VacuumRelation* _internal_mutable_vacuum_relation(); + public: + void unsafe_arena_set_allocated_vacuum_relation( + ::pg_query::VacuumRelation* vacuum_relation); + ::pg_query::VacuumRelation* unsafe_arena_release_vacuum_relation(); + + // .pg_query.InlineCodeBlock inline_code_block = 219 [json_name = "InlineCodeBlock"]; + bool has_inline_code_block() const; + private: + bool _internal_has_inline_code_block() const; + public: + void clear_inline_code_block(); + const ::pg_query::InlineCodeBlock& inline_code_block() const; + ::pg_query::InlineCodeBlock* release_inline_code_block(); + ::pg_query::InlineCodeBlock* mutable_inline_code_block(); + void set_allocated_inline_code_block(::pg_query::InlineCodeBlock* inline_code_block); + private: + const ::pg_query::InlineCodeBlock& _internal_inline_code_block() const; + ::pg_query::InlineCodeBlock* _internal_mutable_inline_code_block(); + public: + void unsafe_arena_set_allocated_inline_code_block( + ::pg_query::InlineCodeBlock* inline_code_block); + ::pg_query::InlineCodeBlock* unsafe_arena_release_inline_code_block(); + + // .pg_query.CallContext call_context = 220 [json_name = "CallContext"]; + bool has_call_context() const; + private: + bool _internal_has_call_context() const; + public: + void clear_call_context(); + const ::pg_query::CallContext& call_context() const; + ::pg_query::CallContext* release_call_context(); + ::pg_query::CallContext* mutable_call_context(); + void set_allocated_call_context(::pg_query::CallContext* call_context); + private: + const ::pg_query::CallContext& _internal_call_context() const; + ::pg_query::CallContext* _internal_mutable_call_context(); + public: + void unsafe_arena_set_allocated_call_context( + ::pg_query::CallContext* call_context); + ::pg_query::CallContext* unsafe_arena_release_call_context(); + + // .pg_query.Integer integer = 221 [json_name = "Integer"]; + bool has_integer() const; + private: + bool _internal_has_integer() const; + public: + void clear_integer(); + const ::pg_query::Integer& integer() const; + ::pg_query::Integer* release_integer(); + ::pg_query::Integer* mutable_integer(); + void set_allocated_integer(::pg_query::Integer* integer); + private: + const ::pg_query::Integer& _internal_integer() const; + ::pg_query::Integer* _internal_mutable_integer(); + public: + void unsafe_arena_set_allocated_integer( + ::pg_query::Integer* integer); + ::pg_query::Integer* unsafe_arena_release_integer(); + + // .pg_query.Float float = 222 [json_name = "Float"]; + bool has_float_() const; + private: + bool _internal_has_float_() const; + public: + void clear_float_(); + const ::pg_query::Float& float_() const; + ::pg_query::Float* release_float_(); + ::pg_query::Float* mutable_float_(); + void set_allocated_float_(::pg_query::Float* float_); + private: + const ::pg_query::Float& _internal_float_() const; + ::pg_query::Float* _internal_mutable_float_(); + public: + void unsafe_arena_set_allocated_float_( + ::pg_query::Float* float_); + ::pg_query::Float* unsafe_arena_release_float_(); + + // .pg_query.String string = 223 [json_name = "String"]; + bool has_string() const; + private: + bool _internal_has_string() const; + public: + void clear_string(); + const ::pg_query::String& string() const; + ::pg_query::String* release_string(); + ::pg_query::String* mutable_string(); + void set_allocated_string(::pg_query::String* string); + private: + const ::pg_query::String& _internal_string() const; + ::pg_query::String* _internal_mutable_string(); + public: + void unsafe_arena_set_allocated_string( + ::pg_query::String* string); + ::pg_query::String* unsafe_arena_release_string(); + + // .pg_query.BitString bit_string = 224 [json_name = "BitString"]; + bool has_bit_string() const; + private: + bool _internal_has_bit_string() const; + public: + void clear_bit_string(); + const ::pg_query::BitString& bit_string() const; + ::pg_query::BitString* release_bit_string(); + ::pg_query::BitString* mutable_bit_string(); + void set_allocated_bit_string(::pg_query::BitString* bit_string); + private: + const ::pg_query::BitString& _internal_bit_string() const; + ::pg_query::BitString* _internal_mutable_bit_string(); + public: + void unsafe_arena_set_allocated_bit_string( + ::pg_query::BitString* bit_string); + ::pg_query::BitString* unsafe_arena_release_bit_string(); + + // .pg_query.Null null = 225 [json_name = "Null"]; + bool has_null() const; + private: + bool _internal_has_null() const; + public: + void clear_null(); + const ::pg_query::Null& null() const; + ::pg_query::Null* release_null(); + ::pg_query::Null* mutable_null(); + void set_allocated_null(::pg_query::Null* null); + private: + const ::pg_query::Null& _internal_null() const; + ::pg_query::Null* _internal_mutable_null(); + public: + void unsafe_arena_set_allocated_null( + ::pg_query::Null* null); + ::pg_query::Null* unsafe_arena_release_null(); + + // .pg_query.List list = 226 [json_name = "List"]; + bool has_list() const; + private: + bool _internal_has_list() const; + public: + void clear_list(); + const ::pg_query::List& list() const; + ::pg_query::List* release_list(); + ::pg_query::List* mutable_list(); + void set_allocated_list(::pg_query::List* list); + private: + const ::pg_query::List& _internal_list() const; + ::pg_query::List* _internal_mutable_list(); + public: + void unsafe_arena_set_allocated_list( + ::pg_query::List* list); + ::pg_query::List* unsafe_arena_release_list(); + + // .pg_query.IntList int_list = 227 [json_name = "IntList"]; + bool has_int_list() const; + private: + bool _internal_has_int_list() const; + public: + void clear_int_list(); + const ::pg_query::IntList& int_list() const; + ::pg_query::IntList* release_int_list(); + ::pg_query::IntList* mutable_int_list(); + void set_allocated_int_list(::pg_query::IntList* int_list); + private: + const ::pg_query::IntList& _internal_int_list() const; + ::pg_query::IntList* _internal_mutable_int_list(); + public: + void unsafe_arena_set_allocated_int_list( + ::pg_query::IntList* int_list); + ::pg_query::IntList* unsafe_arena_release_int_list(); + + // .pg_query.OidList oid_list = 228 [json_name = "OidList"]; + bool has_oid_list() const; + private: + bool _internal_has_oid_list() const; + public: + void clear_oid_list(); + const ::pg_query::OidList& oid_list() const; + ::pg_query::OidList* release_oid_list(); + ::pg_query::OidList* mutable_oid_list(); + void set_allocated_oid_list(::pg_query::OidList* oid_list); + private: + const ::pg_query::OidList& _internal_oid_list() const; + ::pg_query::OidList* _internal_mutable_oid_list(); + public: + void unsafe_arena_set_allocated_oid_list( + ::pg_query::OidList* oid_list); + ::pg_query::OidList* unsafe_arena_release_oid_list(); + + void clear_node(); + NodeCase node_case() const; + // @@protoc_insertion_point(class_scope:pg_query.Node) + private: + class _Internal; + void set_has_alias(); + void set_has_range_var(); + void set_has_table_func(); + void set_has_expr(); + void set_has_var(); + void set_has_param(); + void set_has_aggref(); + void set_has_grouping_func(); + void set_has_window_func(); + void set_has_subscripting_ref(); + void set_has_func_expr(); + void set_has_named_arg_expr(); + void set_has_op_expr(); + void set_has_distinct_expr(); + void set_has_null_if_expr(); + void set_has_scalar_array_op_expr(); + void set_has_bool_expr(); + void set_has_sub_link(); + void set_has_sub_plan(); + void set_has_alternative_sub_plan(); + void set_has_field_select(); + void set_has_field_store(); + void set_has_relabel_type(); + void set_has_coerce_via_io(); + void set_has_array_coerce_expr(); + void set_has_convert_rowtype_expr(); + void set_has_collate_expr(); + void set_has_case_expr(); + void set_has_case_when(); + void set_has_case_test_expr(); + void set_has_array_expr(); + void set_has_row_expr(); + void set_has_row_compare_expr(); + void set_has_coalesce_expr(); + void set_has_min_max_expr(); + void set_has_sqlvalue_function(); + void set_has_xml_expr(); + void set_has_null_test(); + void set_has_boolean_test(); + void set_has_coerce_to_domain(); + void set_has_coerce_to_domain_value(); + void set_has_set_to_default(); + void set_has_current_of_expr(); + void set_has_next_value_expr(); + void set_has_inference_elem(); + void set_has_target_entry(); + void set_has_range_tbl_ref(); + void set_has_join_expr(); + void set_has_from_expr(); + void set_has_on_conflict_expr(); + void set_has_into_clause(); + void set_has_raw_stmt(); + void set_has_query(); + void set_has_insert_stmt(); + void set_has_delete_stmt(); + void set_has_update_stmt(); + void set_has_select_stmt(); + void set_has_alter_table_stmt(); + void set_has_alter_table_cmd(); + void set_has_alter_domain_stmt(); + void set_has_set_operation_stmt(); + void set_has_grant_stmt(); + void set_has_grant_role_stmt(); + void set_has_alter_default_privileges_stmt(); + void set_has_close_portal_stmt(); + void set_has_cluster_stmt(); + void set_has_copy_stmt(); + void set_has_create_stmt(); + void set_has_define_stmt(); + void set_has_drop_stmt(); + void set_has_truncate_stmt(); + void set_has_comment_stmt(); + void set_has_fetch_stmt(); + void set_has_index_stmt(); + void set_has_create_function_stmt(); + void set_has_alter_function_stmt(); + void set_has_do_stmt(); + void set_has_rename_stmt(); + void set_has_rule_stmt(); + void set_has_notify_stmt(); + void set_has_listen_stmt(); + void set_has_unlisten_stmt(); + void set_has_transaction_stmt(); + void set_has_view_stmt(); + void set_has_load_stmt(); + void set_has_create_domain_stmt(); + void set_has_createdb_stmt(); + void set_has_dropdb_stmt(); + void set_has_vacuum_stmt(); + void set_has_explain_stmt(); + void set_has_create_table_as_stmt(); + void set_has_create_seq_stmt(); + void set_has_alter_seq_stmt(); + void set_has_variable_set_stmt(); + void set_has_variable_show_stmt(); + void set_has_discard_stmt(); + void set_has_create_trig_stmt(); + void set_has_create_plang_stmt(); + void set_has_create_role_stmt(); + void set_has_alter_role_stmt(); + void set_has_drop_role_stmt(); + void set_has_lock_stmt(); + void set_has_constraints_set_stmt(); + void set_has_reindex_stmt(); + void set_has_check_point_stmt(); + void set_has_create_schema_stmt(); + void set_has_alter_database_stmt(); + void set_has_alter_database_set_stmt(); + void set_has_alter_role_set_stmt(); + void set_has_create_conversion_stmt(); + void set_has_create_cast_stmt(); + void set_has_create_op_class_stmt(); + void set_has_create_op_family_stmt(); + void set_has_alter_op_family_stmt(); + void set_has_prepare_stmt(); + void set_has_execute_stmt(); + void set_has_deallocate_stmt(); + void set_has_declare_cursor_stmt(); + void set_has_create_table_space_stmt(); + void set_has_drop_table_space_stmt(); + void set_has_alter_object_depends_stmt(); + void set_has_alter_object_schema_stmt(); + void set_has_alter_owner_stmt(); + void set_has_alter_operator_stmt(); + void set_has_alter_type_stmt(); + void set_has_drop_owned_stmt(); + void set_has_reassign_owned_stmt(); + void set_has_composite_type_stmt(); + void set_has_create_enum_stmt(); + void set_has_create_range_stmt(); + void set_has_alter_enum_stmt(); + void set_has_alter_tsdictionary_stmt(); + void set_has_alter_tsconfiguration_stmt(); + void set_has_create_fdw_stmt(); + void set_has_alter_fdw_stmt(); + void set_has_create_foreign_server_stmt(); + void set_has_alter_foreign_server_stmt(); + void set_has_create_user_mapping_stmt(); + void set_has_alter_user_mapping_stmt(); + void set_has_drop_user_mapping_stmt(); + void set_has_alter_table_space_options_stmt(); + void set_has_alter_table_move_all_stmt(); + void set_has_sec_label_stmt(); + void set_has_create_foreign_table_stmt(); + void set_has_import_foreign_schema_stmt(); + void set_has_create_extension_stmt(); + void set_has_alter_extension_stmt(); + void set_has_alter_extension_contents_stmt(); + void set_has_create_event_trig_stmt(); + void set_has_alter_event_trig_stmt(); + void set_has_refresh_mat_view_stmt(); + void set_has_replica_identity_stmt(); + void set_has_alter_system_stmt(); + void set_has_create_policy_stmt(); + void set_has_alter_policy_stmt(); + void set_has_create_transform_stmt(); + void set_has_create_am_stmt(); + void set_has_create_publication_stmt(); + void set_has_alter_publication_stmt(); + void set_has_create_subscription_stmt(); + void set_has_alter_subscription_stmt(); + void set_has_drop_subscription_stmt(); + void set_has_create_stats_stmt(); + void set_has_alter_collation_stmt(); + void set_has_call_stmt(); + void set_has_alter_stats_stmt(); + void set_has_a_expr(); + void set_has_column_ref(); + void set_has_param_ref(); + void set_has_a_const(); + void set_has_func_call(); + void set_has_a_star(); + void set_has_a_indices(); + void set_has_a_indirection(); + void set_has_a_array_expr(); + void set_has_res_target(); + void set_has_multi_assign_ref(); + void set_has_type_cast(); + void set_has_collate_clause(); + void set_has_sort_by(); + void set_has_window_def(); + void set_has_range_subselect(); + void set_has_range_function(); + void set_has_range_table_sample(); + void set_has_range_table_func(); + void set_has_range_table_func_col(); + void set_has_type_name(); + void set_has_column_def(); + void set_has_index_elem(); + void set_has_constraint(); + void set_has_def_elem(); + void set_has_range_tbl_entry(); + void set_has_range_tbl_function(); + void set_has_table_sample_clause(); + void set_has_with_check_option(); + void set_has_sort_group_clause(); + void set_has_grouping_set(); + void set_has_window_clause(); + void set_has_object_with_args(); + void set_has_access_priv(); + void set_has_create_op_class_item(); + void set_has_table_like_clause(); + void set_has_function_parameter(); + void set_has_locking_clause(); + void set_has_row_mark_clause(); + void set_has_xml_serialize(); + void set_has_with_clause(); + void set_has_infer_clause(); + void set_has_on_conflict_clause(); + void set_has_common_table_expr(); + void set_has_role_spec(); + void set_has_trigger_transition(); + void set_has_partition_elem(); + void set_has_partition_spec(); + void set_has_partition_bound_spec(); + void set_has_partition_range_datum(); + void set_has_partition_cmd(); + void set_has_vacuum_relation(); + void set_has_inline_code_block(); + void set_has_call_context(); + void set_has_integer(); + void set_has_float_(); + void set_has_string(); + void set_has_bit_string(); + void set_has_null(); + void set_has_list(); + void set_has_int_list(); + void set_has_oid_list(); + + inline bool has_node() const; + inline void clear_has_node(); + + template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; + typedef void InternalArenaConstructable_; + typedef void DestructorSkippable_; + union NodeUnion { + NodeUnion() {} + ::pg_query::Alias* alias_; + ::pg_query::RangeVar* range_var_; + ::pg_query::TableFunc* table_func_; + ::pg_query::Expr* expr_; + ::pg_query::Var* var_; + ::pg_query::Param* param_; + ::pg_query::Aggref* aggref_; + ::pg_query::GroupingFunc* grouping_func_; + ::pg_query::WindowFunc* window_func_; + ::pg_query::SubscriptingRef* subscripting_ref_; + ::pg_query::FuncExpr* func_expr_; + ::pg_query::NamedArgExpr* named_arg_expr_; + ::pg_query::OpExpr* op_expr_; + ::pg_query::DistinctExpr* distinct_expr_; + ::pg_query::NullIfExpr* null_if_expr_; + ::pg_query::ScalarArrayOpExpr* scalar_array_op_expr_; + ::pg_query::BoolExpr* bool_expr_; + ::pg_query::SubLink* sub_link_; + ::pg_query::SubPlan* sub_plan_; + ::pg_query::AlternativeSubPlan* alternative_sub_plan_; + ::pg_query::FieldSelect* field_select_; + ::pg_query::FieldStore* field_store_; + ::pg_query::RelabelType* relabel_type_; + ::pg_query::CoerceViaIO* coerce_via_io_; + ::pg_query::ArrayCoerceExpr* array_coerce_expr_; + ::pg_query::ConvertRowtypeExpr* convert_rowtype_expr_; + ::pg_query::CollateExpr* collate_expr_; + ::pg_query::CaseExpr* case_expr_; + ::pg_query::CaseWhen* case_when_; + ::pg_query::CaseTestExpr* case_test_expr_; + ::pg_query::ArrayExpr* array_expr_; + ::pg_query::RowExpr* row_expr_; + ::pg_query::RowCompareExpr* row_compare_expr_; + ::pg_query::CoalesceExpr* coalesce_expr_; + ::pg_query::MinMaxExpr* min_max_expr_; + ::pg_query::SQLValueFunction* sqlvalue_function_; + ::pg_query::XmlExpr* xml_expr_; + ::pg_query::NullTest* null_test_; + ::pg_query::BooleanTest* boolean_test_; + ::pg_query::CoerceToDomain* coerce_to_domain_; + ::pg_query::CoerceToDomainValue* coerce_to_domain_value_; + ::pg_query::SetToDefault* set_to_default_; + ::pg_query::CurrentOfExpr* current_of_expr_; + ::pg_query::NextValueExpr* next_value_expr_; + ::pg_query::InferenceElem* inference_elem_; + ::pg_query::TargetEntry* target_entry_; + ::pg_query::RangeTblRef* range_tbl_ref_; + ::pg_query::JoinExpr* join_expr_; + ::pg_query::FromExpr* from_expr_; + ::pg_query::OnConflictExpr* on_conflict_expr_; + ::pg_query::IntoClause* into_clause_; + ::pg_query::RawStmt* raw_stmt_; + ::pg_query::Query* query_; + ::pg_query::InsertStmt* insert_stmt_; + ::pg_query::DeleteStmt* delete_stmt_; + ::pg_query::UpdateStmt* update_stmt_; + ::pg_query::SelectStmt* select_stmt_; + ::pg_query::AlterTableStmt* alter_table_stmt_; + ::pg_query::AlterTableCmd* alter_table_cmd_; + ::pg_query::AlterDomainStmt* alter_domain_stmt_; + ::pg_query::SetOperationStmt* set_operation_stmt_; + ::pg_query::GrantStmt* grant_stmt_; + ::pg_query::GrantRoleStmt* grant_role_stmt_; + ::pg_query::AlterDefaultPrivilegesStmt* alter_default_privileges_stmt_; + ::pg_query::ClosePortalStmt* close_portal_stmt_; + ::pg_query::ClusterStmt* cluster_stmt_; + ::pg_query::CopyStmt* copy_stmt_; + ::pg_query::CreateStmt* create_stmt_; + ::pg_query::DefineStmt* define_stmt_; + ::pg_query::DropStmt* drop_stmt_; + ::pg_query::TruncateStmt* truncate_stmt_; + ::pg_query::CommentStmt* comment_stmt_; + ::pg_query::FetchStmt* fetch_stmt_; + ::pg_query::IndexStmt* index_stmt_; + ::pg_query::CreateFunctionStmt* create_function_stmt_; + ::pg_query::AlterFunctionStmt* alter_function_stmt_; + ::pg_query::DoStmt* do_stmt_; + ::pg_query::RenameStmt* rename_stmt_; + ::pg_query::RuleStmt* rule_stmt_; + ::pg_query::NotifyStmt* notify_stmt_; + ::pg_query::ListenStmt* listen_stmt_; + ::pg_query::UnlistenStmt* unlisten_stmt_; + ::pg_query::TransactionStmt* transaction_stmt_; + ::pg_query::ViewStmt* view_stmt_; + ::pg_query::LoadStmt* load_stmt_; + ::pg_query::CreateDomainStmt* create_domain_stmt_; + ::pg_query::CreatedbStmt* createdb_stmt_; + ::pg_query::DropdbStmt* dropdb_stmt_; + ::pg_query::VacuumStmt* vacuum_stmt_; + ::pg_query::ExplainStmt* explain_stmt_; + ::pg_query::CreateTableAsStmt* create_table_as_stmt_; + ::pg_query::CreateSeqStmt* create_seq_stmt_; + ::pg_query::AlterSeqStmt* alter_seq_stmt_; + ::pg_query::VariableSetStmt* variable_set_stmt_; + ::pg_query::VariableShowStmt* variable_show_stmt_; + ::pg_query::DiscardStmt* discard_stmt_; + ::pg_query::CreateTrigStmt* create_trig_stmt_; + ::pg_query::CreatePLangStmt* create_plang_stmt_; + ::pg_query::CreateRoleStmt* create_role_stmt_; + ::pg_query::AlterRoleStmt* alter_role_stmt_; + ::pg_query::DropRoleStmt* drop_role_stmt_; + ::pg_query::LockStmt* lock_stmt_; + ::pg_query::ConstraintsSetStmt* constraints_set_stmt_; + ::pg_query::ReindexStmt* reindex_stmt_; + ::pg_query::CheckPointStmt* check_point_stmt_; + ::pg_query::CreateSchemaStmt* create_schema_stmt_; + ::pg_query::AlterDatabaseStmt* alter_database_stmt_; + ::pg_query::AlterDatabaseSetStmt* alter_database_set_stmt_; + ::pg_query::AlterRoleSetStmt* alter_role_set_stmt_; + ::pg_query::CreateConversionStmt* create_conversion_stmt_; + ::pg_query::CreateCastStmt* create_cast_stmt_; + ::pg_query::CreateOpClassStmt* create_op_class_stmt_; + ::pg_query::CreateOpFamilyStmt* create_op_family_stmt_; + ::pg_query::AlterOpFamilyStmt* alter_op_family_stmt_; + ::pg_query::PrepareStmt* prepare_stmt_; + ::pg_query::ExecuteStmt* execute_stmt_; + ::pg_query::DeallocateStmt* deallocate_stmt_; + ::pg_query::DeclareCursorStmt* declare_cursor_stmt_; + ::pg_query::CreateTableSpaceStmt* create_table_space_stmt_; + ::pg_query::DropTableSpaceStmt* drop_table_space_stmt_; + ::pg_query::AlterObjectDependsStmt* alter_object_depends_stmt_; + ::pg_query::AlterObjectSchemaStmt* alter_object_schema_stmt_; + ::pg_query::AlterOwnerStmt* alter_owner_stmt_; + ::pg_query::AlterOperatorStmt* alter_operator_stmt_; + ::pg_query::AlterTypeStmt* alter_type_stmt_; + ::pg_query::DropOwnedStmt* drop_owned_stmt_; + ::pg_query::ReassignOwnedStmt* reassign_owned_stmt_; + ::pg_query::CompositeTypeStmt* composite_type_stmt_; + ::pg_query::CreateEnumStmt* create_enum_stmt_; + ::pg_query::CreateRangeStmt* create_range_stmt_; + ::pg_query::AlterEnumStmt* alter_enum_stmt_; + ::pg_query::AlterTSDictionaryStmt* alter_tsdictionary_stmt_; + ::pg_query::AlterTSConfigurationStmt* alter_tsconfiguration_stmt_; + ::pg_query::CreateFdwStmt* create_fdw_stmt_; + ::pg_query::AlterFdwStmt* alter_fdw_stmt_; + ::pg_query::CreateForeignServerStmt* create_foreign_server_stmt_; + ::pg_query::AlterForeignServerStmt* alter_foreign_server_stmt_; + ::pg_query::CreateUserMappingStmt* create_user_mapping_stmt_; + ::pg_query::AlterUserMappingStmt* alter_user_mapping_stmt_; + ::pg_query::DropUserMappingStmt* drop_user_mapping_stmt_; + ::pg_query::AlterTableSpaceOptionsStmt* alter_table_space_options_stmt_; + ::pg_query::AlterTableMoveAllStmt* alter_table_move_all_stmt_; + ::pg_query::SecLabelStmt* sec_label_stmt_; + ::pg_query::CreateForeignTableStmt* create_foreign_table_stmt_; + ::pg_query::ImportForeignSchemaStmt* import_foreign_schema_stmt_; + ::pg_query::CreateExtensionStmt* create_extension_stmt_; + ::pg_query::AlterExtensionStmt* alter_extension_stmt_; + ::pg_query::AlterExtensionContentsStmt* alter_extension_contents_stmt_; + ::pg_query::CreateEventTrigStmt* create_event_trig_stmt_; + ::pg_query::AlterEventTrigStmt* alter_event_trig_stmt_; + ::pg_query::RefreshMatViewStmt* refresh_mat_view_stmt_; + ::pg_query::ReplicaIdentityStmt* replica_identity_stmt_; + ::pg_query::AlterSystemStmt* alter_system_stmt_; + ::pg_query::CreatePolicyStmt* create_policy_stmt_; + ::pg_query::AlterPolicyStmt* alter_policy_stmt_; + ::pg_query::CreateTransformStmt* create_transform_stmt_; + ::pg_query::CreateAmStmt* create_am_stmt_; + ::pg_query::CreatePublicationStmt* create_publication_stmt_; + ::pg_query::AlterPublicationStmt* alter_publication_stmt_; + ::pg_query::CreateSubscriptionStmt* create_subscription_stmt_; + ::pg_query::AlterSubscriptionStmt* alter_subscription_stmt_; + ::pg_query::DropSubscriptionStmt* drop_subscription_stmt_; + ::pg_query::CreateStatsStmt* create_stats_stmt_; + ::pg_query::AlterCollationStmt* alter_collation_stmt_; + ::pg_query::CallStmt* call_stmt_; + ::pg_query::AlterStatsStmt* alter_stats_stmt_; + ::pg_query::A_Expr* a_expr_; + ::pg_query::ColumnRef* column_ref_; + ::pg_query::ParamRef* param_ref_; + ::pg_query::A_Const* a_const_; + ::pg_query::FuncCall* func_call_; + ::pg_query::A_Star* a_star_; + ::pg_query::A_Indices* a_indices_; + ::pg_query::A_Indirection* a_indirection_; + ::pg_query::A_ArrayExpr* a_array_expr_; + ::pg_query::ResTarget* res_target_; + ::pg_query::MultiAssignRef* multi_assign_ref_; + ::pg_query::TypeCast* type_cast_; + ::pg_query::CollateClause* collate_clause_; + ::pg_query::SortBy* sort_by_; + ::pg_query::WindowDef* window_def_; + ::pg_query::RangeSubselect* range_subselect_; + ::pg_query::RangeFunction* range_function_; + ::pg_query::RangeTableSample* range_table_sample_; + ::pg_query::RangeTableFunc* range_table_func_; + ::pg_query::RangeTableFuncCol* range_table_func_col_; + ::pg_query::TypeName* type_name_; + ::pg_query::ColumnDef* column_def_; + ::pg_query::IndexElem* index_elem_; + ::pg_query::Constraint* constraint_; + ::pg_query::DefElem* def_elem_; + ::pg_query::RangeTblEntry* range_tbl_entry_; + ::pg_query::RangeTblFunction* range_tbl_function_; + ::pg_query::TableSampleClause* table_sample_clause_; + ::pg_query::WithCheckOption* with_check_option_; + ::pg_query::SortGroupClause* sort_group_clause_; + ::pg_query::GroupingSet* grouping_set_; + ::pg_query::WindowClause* window_clause_; + ::pg_query::ObjectWithArgs* object_with_args_; + ::pg_query::AccessPriv* access_priv_; + ::pg_query::CreateOpClassItem* create_op_class_item_; + ::pg_query::TableLikeClause* table_like_clause_; + ::pg_query::FunctionParameter* function_parameter_; + ::pg_query::LockingClause* locking_clause_; + ::pg_query::RowMarkClause* row_mark_clause_; + ::pg_query::XmlSerialize* xml_serialize_; + ::pg_query::WithClause* with_clause_; + ::pg_query::InferClause* infer_clause_; + ::pg_query::OnConflictClause* on_conflict_clause_; + ::pg_query::CommonTableExpr* common_table_expr_; + ::pg_query::RoleSpec* role_spec_; + ::pg_query::TriggerTransition* trigger_transition_; + ::pg_query::PartitionElem* partition_elem_; + ::pg_query::PartitionSpec* partition_spec_; + ::pg_query::PartitionBoundSpec* partition_bound_spec_; + ::pg_query::PartitionRangeDatum* partition_range_datum_; + ::pg_query::PartitionCmd* partition_cmd_; + ::pg_query::VacuumRelation* vacuum_relation_; + ::pg_query::InlineCodeBlock* inline_code_block_; + ::pg_query::CallContext* call_context_; + ::pg_query::Integer* integer_; + ::pg_query::Float* float__; + ::pg_query::String* string_; + ::pg_query::BitString* bit_string_; + ::pg_query::Null* null_; + ::pg_query::List* list_; + ::pg_query::IntList* int_list_; + ::pg_query::OidList* oid_list_; + } node_; + mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; + ::PROTOBUF_NAMESPACE_ID::uint32 _oneof_case_[1]; + + friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; +}; +// ------------------------------------------------------------------- + +class Integer PROTOBUF_FINAL : + public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.Integer) */ { + public: + inline Integer() : Integer(nullptr) {} + virtual ~Integer(); + + Integer(const Integer& from); + Integer(Integer&& from) noexcept + : Integer() { + *this = ::std::move(from); + } + + inline Integer& operator=(const Integer& from) { + CopyFrom(from); + return *this; + } + inline Integer& operator=(Integer&& from) noexcept { + if (GetArena() == from.GetArena()) { + if (this != &from) InternalSwap(&from); + } else { + CopyFrom(from); + } + return *this; + } + + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { + return GetDescriptor(); + } + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { + return GetMetadataStatic().descriptor; + } + static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { + return GetMetadataStatic().reflection; + } + static const Integer& default_instance(); + + static inline const Integer* internal_default_instance() { + return reinterpret_cast( + &_Integer_default_instance_); + } + static constexpr int kIndexInFileMessages = + 3; + + friend void swap(Integer& a, Integer& b) { + a.Swap(&b); + } + inline void Swap(Integer* other) { + if (other == this) return; + if (GetArena() == other->GetArena()) { + InternalSwap(other); + } else { + ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); + } + } + void UnsafeArenaSwap(Integer* other) { + if (other == this) return; + GOOGLE_DCHECK(GetArena() == other->GetArena()); + InternalSwap(other); + } + + // implements Message ---------------------------------------------- + + inline Integer* New() const final { + return CreateMaybeMessage(nullptr); + } + + Integer* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { + return CreateMaybeMessage(arena); + } + void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void CopyFrom(const Integer& from); + void MergeFrom(const Integer& from); + PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; + bool IsInitialized() const final; + + size_t ByteSizeLong() const final; + const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; + ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( + ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; + int GetCachedSize() const final { return _cached_size_.Get(); } + + private: + inline void SharedCtor(); + inline void SharedDtor(); + void SetCachedSize(int size) const final; + void InternalSwap(Integer* other); + friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; + static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { + return "pg_query.Integer"; + } + protected: + explicit Integer(::PROTOBUF_NAMESPACE_ID::Arena* arena); + private: + static void ArenaDtor(void* object); + inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); + public: + + ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; + private: + static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { + ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); + return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; + } + + public: + + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + + enum : int { + kIvalFieldNumber = 1, + }; + // int32 ival = 1; + void clear_ival(); + ::PROTOBUF_NAMESPACE_ID::int32 ival() const; + void set_ival(::PROTOBUF_NAMESPACE_ID::int32 value); + private: + ::PROTOBUF_NAMESPACE_ID::int32 _internal_ival() const; + void _internal_set_ival(::PROTOBUF_NAMESPACE_ID::int32 value); + public: + + // @@protoc_insertion_point(class_scope:pg_query.Integer) + private: + class _Internal; + + template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; + typedef void InternalArenaConstructable_; + typedef void DestructorSkippable_; + ::PROTOBUF_NAMESPACE_ID::int32 ival_; + mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; + friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; +}; +// ------------------------------------------------------------------- + +class Float PROTOBUF_FINAL : + public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.Float) */ { + public: + inline Float() : Float(nullptr) {} + virtual ~Float(); + + Float(const Float& from); + Float(Float&& from) noexcept + : Float() { + *this = ::std::move(from); + } + + inline Float& operator=(const Float& from) { + CopyFrom(from); + return *this; + } + inline Float& operator=(Float&& from) noexcept { + if (GetArena() == from.GetArena()) { + if (this != &from) InternalSwap(&from); + } else { + CopyFrom(from); + } + return *this; + } + + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { + return GetDescriptor(); + } + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { + return GetMetadataStatic().descriptor; + } + static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { + return GetMetadataStatic().reflection; + } + static const Float& default_instance(); + + static inline const Float* internal_default_instance() { + return reinterpret_cast( + &_Float_default_instance_); + } + static constexpr int kIndexInFileMessages = + 4; + + friend void swap(Float& a, Float& b) { + a.Swap(&b); + } + inline void Swap(Float* other) { + if (other == this) return; + if (GetArena() == other->GetArena()) { + InternalSwap(other); + } else { + ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); + } + } + void UnsafeArenaSwap(Float* other) { + if (other == this) return; + GOOGLE_DCHECK(GetArena() == other->GetArena()); + InternalSwap(other); + } + + // implements Message ---------------------------------------------- + + inline Float* New() const final { + return CreateMaybeMessage(nullptr); + } + + Float* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { + return CreateMaybeMessage(arena); + } + void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void CopyFrom(const Float& from); + void MergeFrom(const Float& from); + PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; + bool IsInitialized() const final; + + size_t ByteSizeLong() const final; + const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; + ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( + ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; + int GetCachedSize() const final { return _cached_size_.Get(); } + + private: + inline void SharedCtor(); + inline void SharedDtor(); + void SetCachedSize(int size) const final; + void InternalSwap(Float* other); + friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; + static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { + return "pg_query.Float"; + } + protected: + explicit Float(::PROTOBUF_NAMESPACE_ID::Arena* arena); + private: + static void ArenaDtor(void* object); + inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); + public: + + ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; + private: + static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { + ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); + return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; + } + + public: + + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + + enum : int { + kStrFieldNumber = 1, + }; + // string str = 1; + void clear_str(); + const std::string& str() const; + void set_str(const std::string& value); + void set_str(std::string&& value); + void set_str(const char* value); + void set_str(const char* value, size_t size); + std::string* mutable_str(); + std::string* release_str(); + void set_allocated_str(std::string* str); + private: + const std::string& _internal_str() const; + void _internal_set_str(const std::string& value); + std::string* _internal_mutable_str(); + public: + + // @@protoc_insertion_point(class_scope:pg_query.Float) + private: + class _Internal; + + template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; + typedef void InternalArenaConstructable_; + typedef void DestructorSkippable_; + ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr str_; + mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; + friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; +}; +// ------------------------------------------------------------------- + +class String PROTOBUF_FINAL : + public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.String) */ { + public: + inline String() : String(nullptr) {} + virtual ~String(); + + String(const String& from); + String(String&& from) noexcept + : String() { + *this = ::std::move(from); + } + + inline String& operator=(const String& from) { + CopyFrom(from); + return *this; + } + inline String& operator=(String&& from) noexcept { + if (GetArena() == from.GetArena()) { + if (this != &from) InternalSwap(&from); + } else { + CopyFrom(from); + } + return *this; + } + + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { + return GetDescriptor(); + } + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { + return GetMetadataStatic().descriptor; + } + static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { + return GetMetadataStatic().reflection; + } + static const String& default_instance(); + + static inline const String* internal_default_instance() { + return reinterpret_cast( + &_String_default_instance_); + } + static constexpr int kIndexInFileMessages = + 5; + + friend void swap(String& a, String& b) { + a.Swap(&b); + } + inline void Swap(String* other) { + if (other == this) return; + if (GetArena() == other->GetArena()) { + InternalSwap(other); + } else { + ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); + } + } + void UnsafeArenaSwap(String* other) { + if (other == this) return; + GOOGLE_DCHECK(GetArena() == other->GetArena()); + InternalSwap(other); + } + + // implements Message ---------------------------------------------- + + inline String* New() const final { + return CreateMaybeMessage(nullptr); + } + + String* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { + return CreateMaybeMessage(arena); + } + void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void CopyFrom(const String& from); + void MergeFrom(const String& from); + PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; + bool IsInitialized() const final; + + size_t ByteSizeLong() const final; + const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; + ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( + ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; + int GetCachedSize() const final { return _cached_size_.Get(); } + + private: + inline void SharedCtor(); + inline void SharedDtor(); + void SetCachedSize(int size) const final; + void InternalSwap(String* other); + friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; + static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { + return "pg_query.String"; + } + protected: + explicit String(::PROTOBUF_NAMESPACE_ID::Arena* arena); + private: + static void ArenaDtor(void* object); + inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); + public: + + ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; + private: + static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { + ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); + return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; + } + + public: + + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + + enum : int { + kStrFieldNumber = 1, + }; + // string str = 1; + void clear_str(); + const std::string& str() const; + void set_str(const std::string& value); + void set_str(std::string&& value); + void set_str(const char* value); + void set_str(const char* value, size_t size); + std::string* mutable_str(); + std::string* release_str(); + void set_allocated_str(std::string* str); + private: + const std::string& _internal_str() const; + void _internal_set_str(const std::string& value); + std::string* _internal_mutable_str(); + public: + + // @@protoc_insertion_point(class_scope:pg_query.String) + private: + class _Internal; + + template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; + typedef void InternalArenaConstructable_; + typedef void DestructorSkippable_; + ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr str_; + mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; + friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; +}; +// ------------------------------------------------------------------- + +class BitString PROTOBUF_FINAL : + public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.BitString) */ { + public: + inline BitString() : BitString(nullptr) {} + virtual ~BitString(); + + BitString(const BitString& from); + BitString(BitString&& from) noexcept + : BitString() { + *this = ::std::move(from); + } + + inline BitString& operator=(const BitString& from) { + CopyFrom(from); + return *this; + } + inline BitString& operator=(BitString&& from) noexcept { + if (GetArena() == from.GetArena()) { + if (this != &from) InternalSwap(&from); + } else { + CopyFrom(from); + } + return *this; + } + + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { + return GetDescriptor(); + } + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { + return GetMetadataStatic().descriptor; + } + static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { + return GetMetadataStatic().reflection; + } + static const BitString& default_instance(); + + static inline const BitString* internal_default_instance() { + return reinterpret_cast( + &_BitString_default_instance_); + } + static constexpr int kIndexInFileMessages = + 6; + + friend void swap(BitString& a, BitString& b) { + a.Swap(&b); + } + inline void Swap(BitString* other) { + if (other == this) return; + if (GetArena() == other->GetArena()) { + InternalSwap(other); + } else { + ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); + } + } + void UnsafeArenaSwap(BitString* other) { + if (other == this) return; + GOOGLE_DCHECK(GetArena() == other->GetArena()); + InternalSwap(other); + } + + // implements Message ---------------------------------------------- + + inline BitString* New() const final { + return CreateMaybeMessage(nullptr); + } + + BitString* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { + return CreateMaybeMessage(arena); + } + void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void CopyFrom(const BitString& from); + void MergeFrom(const BitString& from); + PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; + bool IsInitialized() const final; + + size_t ByteSizeLong() const final; + const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; + ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( + ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; + int GetCachedSize() const final { return _cached_size_.Get(); } + + private: + inline void SharedCtor(); + inline void SharedDtor(); + void SetCachedSize(int size) const final; + void InternalSwap(BitString* other); + friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; + static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { + return "pg_query.BitString"; + } + protected: + explicit BitString(::PROTOBUF_NAMESPACE_ID::Arena* arena); + private: + static void ArenaDtor(void* object); + inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); + public: + + ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; + private: + static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { + ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); + return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; + } + + public: + + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + + enum : int { + kStrFieldNumber = 1, + }; + // string str = 1; + void clear_str(); + const std::string& str() const; + void set_str(const std::string& value); + void set_str(std::string&& value); + void set_str(const char* value); + void set_str(const char* value, size_t size); + std::string* mutable_str(); + std::string* release_str(); + void set_allocated_str(std::string* str); + private: + const std::string& _internal_str() const; + void _internal_set_str(const std::string& value); + std::string* _internal_mutable_str(); + public: + + // @@protoc_insertion_point(class_scope:pg_query.BitString) + private: + class _Internal; + + template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; + typedef void InternalArenaConstructable_; + typedef void DestructorSkippable_; + ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr str_; + mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; + friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; +}; +// ------------------------------------------------------------------- + +class Null PROTOBUF_FINAL : + public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.Null) */ { + public: + inline Null() : Null(nullptr) {} + virtual ~Null(); + + Null(const Null& from); + Null(Null&& from) noexcept + : Null() { + *this = ::std::move(from); + } + + inline Null& operator=(const Null& from) { + CopyFrom(from); + return *this; + } + inline Null& operator=(Null&& from) noexcept { + if (GetArena() == from.GetArena()) { + if (this != &from) InternalSwap(&from); + } else { + CopyFrom(from); + } + return *this; + } + + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { + return GetDescriptor(); + } + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { + return GetMetadataStatic().descriptor; + } + static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { + return GetMetadataStatic().reflection; + } + static const Null& default_instance(); + + static inline const Null* internal_default_instance() { + return reinterpret_cast( + &_Null_default_instance_); + } + static constexpr int kIndexInFileMessages = + 7; + + friend void swap(Null& a, Null& b) { + a.Swap(&b); + } + inline void Swap(Null* other) { + if (other == this) return; + if (GetArena() == other->GetArena()) { + InternalSwap(other); + } else { + ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); + } + } + void UnsafeArenaSwap(Null* other) { + if (other == this) return; + GOOGLE_DCHECK(GetArena() == other->GetArena()); + InternalSwap(other); + } + + // implements Message ---------------------------------------------- + + inline Null* New() const final { + return CreateMaybeMessage(nullptr); + } + + Null* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { + return CreateMaybeMessage(arena); + } + void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void CopyFrom(const Null& from); + void MergeFrom(const Null& from); + PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; + bool IsInitialized() const final; + + size_t ByteSizeLong() const final; + const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; + ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( + ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; + int GetCachedSize() const final { return _cached_size_.Get(); } + + private: + inline void SharedCtor(); + inline void SharedDtor(); + void SetCachedSize(int size) const final; + void InternalSwap(Null* other); + friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; + static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { + return "pg_query.Null"; + } + protected: + explicit Null(::PROTOBUF_NAMESPACE_ID::Arena* arena); + private: + static void ArenaDtor(void* object); + inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); + public: + + ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; + private: + static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { + ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); + return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; + } + + public: + + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + + // @@protoc_insertion_point(class_scope:pg_query.Null) + private: + class _Internal; + + template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; + typedef void InternalArenaConstructable_; + typedef void DestructorSkippable_; + mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; + friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; +}; +// ------------------------------------------------------------------- + +class List PROTOBUF_FINAL : + public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.List) */ { + public: + inline List() : List(nullptr) {} + virtual ~List(); + + List(const List& from); + List(List&& from) noexcept + : List() { + *this = ::std::move(from); + } + + inline List& operator=(const List& from) { + CopyFrom(from); + return *this; + } + inline List& operator=(List&& from) noexcept { + if (GetArena() == from.GetArena()) { + if (this != &from) InternalSwap(&from); + } else { + CopyFrom(from); + } + return *this; + } + + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { + return GetDescriptor(); + } + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { + return GetMetadataStatic().descriptor; + } + static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { + return GetMetadataStatic().reflection; + } + static const List& default_instance(); + + static inline const List* internal_default_instance() { + return reinterpret_cast( + &_List_default_instance_); + } + static constexpr int kIndexInFileMessages = + 8; + + friend void swap(List& a, List& b) { + a.Swap(&b); + } + inline void Swap(List* other) { + if (other == this) return; + if (GetArena() == other->GetArena()) { + InternalSwap(other); + } else { + ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); + } + } + void UnsafeArenaSwap(List* other) { + if (other == this) return; + GOOGLE_DCHECK(GetArena() == other->GetArena()); + InternalSwap(other); + } + + // implements Message ---------------------------------------------- + + inline List* New() const final { + return CreateMaybeMessage(nullptr); + } + + List* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { + return CreateMaybeMessage(arena); + } + void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void CopyFrom(const List& from); + void MergeFrom(const List& from); + PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; + bool IsInitialized() const final; + + size_t ByteSizeLong() const final; + const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; + ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( + ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; + int GetCachedSize() const final { return _cached_size_.Get(); } + + private: + inline void SharedCtor(); + inline void SharedDtor(); + void SetCachedSize(int size) const final; + void InternalSwap(List* other); + friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; + static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { + return "pg_query.List"; + } + protected: + explicit List(::PROTOBUF_NAMESPACE_ID::Arena* arena); + private: + static void ArenaDtor(void* object); + inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); + public: + + ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; + private: + static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { + ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); + return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; + } + + public: + + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + + enum : int { + kItemsFieldNumber = 1, + }; + // repeated .pg_query.Node items = 1; + int items_size() const; + private: + int _internal_items_size() const; + public: + void clear_items(); + ::pg_query::Node* mutable_items(int index); + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* + mutable_items(); + private: + const ::pg_query::Node& _internal_items(int index) const; + ::pg_query::Node* _internal_add_items(); + public: + const ::pg_query::Node& items(int index) const; + ::pg_query::Node* add_items(); + const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& + items() const; + + // @@protoc_insertion_point(class_scope:pg_query.List) + private: + class _Internal; + + template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; + typedef void InternalArenaConstructable_; + typedef void DestructorSkippable_; + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > items_; + mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; + friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; +}; +// ------------------------------------------------------------------- + +class OidList PROTOBUF_FINAL : + public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.OidList) */ { + public: + inline OidList() : OidList(nullptr) {} + virtual ~OidList(); + + OidList(const OidList& from); + OidList(OidList&& from) noexcept + : OidList() { + *this = ::std::move(from); + } + + inline OidList& operator=(const OidList& from) { + CopyFrom(from); + return *this; + } + inline OidList& operator=(OidList&& from) noexcept { + if (GetArena() == from.GetArena()) { + if (this != &from) InternalSwap(&from); + } else { + CopyFrom(from); + } + return *this; + } + + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { + return GetDescriptor(); + } + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { + return GetMetadataStatic().descriptor; + } + static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { + return GetMetadataStatic().reflection; + } + static const OidList& default_instance(); + + static inline const OidList* internal_default_instance() { + return reinterpret_cast( + &_OidList_default_instance_); + } + static constexpr int kIndexInFileMessages = + 9; + + friend void swap(OidList& a, OidList& b) { + a.Swap(&b); + } + inline void Swap(OidList* other) { + if (other == this) return; + if (GetArena() == other->GetArena()) { + InternalSwap(other); + } else { + ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); + } + } + void UnsafeArenaSwap(OidList* other) { + if (other == this) return; + GOOGLE_DCHECK(GetArena() == other->GetArena()); + InternalSwap(other); + } + + // implements Message ---------------------------------------------- + + inline OidList* New() const final { + return CreateMaybeMessage(nullptr); + } + + OidList* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { + return CreateMaybeMessage(arena); + } + void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void CopyFrom(const OidList& from); + void MergeFrom(const OidList& from); + PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; + bool IsInitialized() const final; + + size_t ByteSizeLong() const final; + const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; + ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( + ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; + int GetCachedSize() const final { return _cached_size_.Get(); } + + private: + inline void SharedCtor(); + inline void SharedDtor(); + void SetCachedSize(int size) const final; + void InternalSwap(OidList* other); + friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; + static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { + return "pg_query.OidList"; + } + protected: + explicit OidList(::PROTOBUF_NAMESPACE_ID::Arena* arena); + private: + static void ArenaDtor(void* object); + inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); + public: + + ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; + private: + static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { + ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); + return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; + } + + public: + + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + + enum : int { + kItemsFieldNumber = 1, + }; + // repeated .pg_query.Node items = 1; + int items_size() const; + private: + int _internal_items_size() const; + public: + void clear_items(); + ::pg_query::Node* mutable_items(int index); + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* + mutable_items(); + private: + const ::pg_query::Node& _internal_items(int index) const; + ::pg_query::Node* _internal_add_items(); + public: + const ::pg_query::Node& items(int index) const; + ::pg_query::Node* add_items(); + const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& + items() const; + + // @@protoc_insertion_point(class_scope:pg_query.OidList) + private: + class _Internal; + + template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; + typedef void InternalArenaConstructable_; + typedef void DestructorSkippable_; + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > items_; + mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; + friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; +}; +// ------------------------------------------------------------------- + +class IntList PROTOBUF_FINAL : + public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.IntList) */ { + public: + inline IntList() : IntList(nullptr) {} + virtual ~IntList(); + + IntList(const IntList& from); + IntList(IntList&& from) noexcept + : IntList() { + *this = ::std::move(from); + } + + inline IntList& operator=(const IntList& from) { + CopyFrom(from); + return *this; + } + inline IntList& operator=(IntList&& from) noexcept { + if (GetArena() == from.GetArena()) { + if (this != &from) InternalSwap(&from); + } else { + CopyFrom(from); + } + return *this; + } + + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { + return GetDescriptor(); + } + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { + return GetMetadataStatic().descriptor; + } + static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { + return GetMetadataStatic().reflection; + } + static const IntList& default_instance(); + + static inline const IntList* internal_default_instance() { + return reinterpret_cast( + &_IntList_default_instance_); + } + static constexpr int kIndexInFileMessages = + 10; + + friend void swap(IntList& a, IntList& b) { + a.Swap(&b); + } + inline void Swap(IntList* other) { + if (other == this) return; + if (GetArena() == other->GetArena()) { + InternalSwap(other); + } else { + ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); + } + } + void UnsafeArenaSwap(IntList* other) { + if (other == this) return; + GOOGLE_DCHECK(GetArena() == other->GetArena()); + InternalSwap(other); + } + + // implements Message ---------------------------------------------- + + inline IntList* New() const final { + return CreateMaybeMessage(nullptr); + } + + IntList* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { + return CreateMaybeMessage(arena); + } + void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void CopyFrom(const IntList& from); + void MergeFrom(const IntList& from); + PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; + bool IsInitialized() const final; + + size_t ByteSizeLong() const final; + const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; + ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( + ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; + int GetCachedSize() const final { return _cached_size_.Get(); } + + private: + inline void SharedCtor(); + inline void SharedDtor(); + void SetCachedSize(int size) const final; + void InternalSwap(IntList* other); + friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; + static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { + return "pg_query.IntList"; + } + protected: + explicit IntList(::PROTOBUF_NAMESPACE_ID::Arena* arena); + private: + static void ArenaDtor(void* object); + inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); + public: + + ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; + private: + static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { + ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); + return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; + } + + public: + + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + + enum : int { + kItemsFieldNumber = 1, + }; + // repeated .pg_query.Node items = 1; + int items_size() const; + private: + int _internal_items_size() const; + public: + void clear_items(); + ::pg_query::Node* mutable_items(int index); + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* + mutable_items(); + private: + const ::pg_query::Node& _internal_items(int index) const; + ::pg_query::Node* _internal_add_items(); + public: + const ::pg_query::Node& items(int index) const; + ::pg_query::Node* add_items(); + const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& + items() const; + + // @@protoc_insertion_point(class_scope:pg_query.IntList) + private: + class _Internal; + + template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; + typedef void InternalArenaConstructable_; + typedef void DestructorSkippable_; + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > items_; + mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; + friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; +}; +// ------------------------------------------------------------------- + +class Bitmapset PROTOBUF_FINAL : + public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.Bitmapset) */ { + public: + inline Bitmapset() : Bitmapset(nullptr) {} + virtual ~Bitmapset(); + + Bitmapset(const Bitmapset& from); + Bitmapset(Bitmapset&& from) noexcept + : Bitmapset() { + *this = ::std::move(from); + } + + inline Bitmapset& operator=(const Bitmapset& from) { + CopyFrom(from); + return *this; + } + inline Bitmapset& operator=(Bitmapset&& from) noexcept { + if (GetArena() == from.GetArena()) { + if (this != &from) InternalSwap(&from); + } else { + CopyFrom(from); + } + return *this; + } + + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { + return GetDescriptor(); + } + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { + return GetMetadataStatic().descriptor; + } + static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { + return GetMetadataStatic().reflection; + } + static const Bitmapset& default_instance(); + + static inline const Bitmapset* internal_default_instance() { + return reinterpret_cast( + &_Bitmapset_default_instance_); + } + static constexpr int kIndexInFileMessages = + 11; + + friend void swap(Bitmapset& a, Bitmapset& b) { + a.Swap(&b); + } + inline void Swap(Bitmapset* other) { + if (other == this) return; + if (GetArena() == other->GetArena()) { + InternalSwap(other); + } else { + ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); + } + } + void UnsafeArenaSwap(Bitmapset* other) { + if (other == this) return; + GOOGLE_DCHECK(GetArena() == other->GetArena()); + InternalSwap(other); + } + + // implements Message ---------------------------------------------- + + inline Bitmapset* New() const final { + return CreateMaybeMessage(nullptr); + } + + Bitmapset* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { + return CreateMaybeMessage(arena); + } + void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void CopyFrom(const Bitmapset& from); + void MergeFrom(const Bitmapset& from); + PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; + bool IsInitialized() const final; + + size_t ByteSizeLong() const final; + const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; + ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( + ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; + int GetCachedSize() const final { return _cached_size_.Get(); } + + private: + inline void SharedCtor(); + inline void SharedDtor(); + void SetCachedSize(int size) const final; + void InternalSwap(Bitmapset* other); + friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; + static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { + return "pg_query.Bitmapset"; + } + protected: + explicit Bitmapset(::PROTOBUF_NAMESPACE_ID::Arena* arena); + private: + static void ArenaDtor(void* object); + inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); + public: + + ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; + private: + static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { + ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); + return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; + } + + public: + + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + + enum : int { + kWordsFieldNumber = 1, + }; + // repeated uint64 words = 1; + int words_size() const; + private: + int _internal_words_size() const; + public: + void clear_words(); + private: + ::PROTOBUF_NAMESPACE_ID::uint64 _internal_words(int index) const; + const ::PROTOBUF_NAMESPACE_ID::RepeatedField< ::PROTOBUF_NAMESPACE_ID::uint64 >& + _internal_words() const; + void _internal_add_words(::PROTOBUF_NAMESPACE_ID::uint64 value); + ::PROTOBUF_NAMESPACE_ID::RepeatedField< ::PROTOBUF_NAMESPACE_ID::uint64 >* + _internal_mutable_words(); + public: + ::PROTOBUF_NAMESPACE_ID::uint64 words(int index) const; + void set_words(int index, ::PROTOBUF_NAMESPACE_ID::uint64 value); + void add_words(::PROTOBUF_NAMESPACE_ID::uint64 value); + const ::PROTOBUF_NAMESPACE_ID::RepeatedField< ::PROTOBUF_NAMESPACE_ID::uint64 >& + words() const; + ::PROTOBUF_NAMESPACE_ID::RepeatedField< ::PROTOBUF_NAMESPACE_ID::uint64 >* + mutable_words(); + + // @@protoc_insertion_point(class_scope:pg_query.Bitmapset) + private: + class _Internal; + + template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; + typedef void InternalArenaConstructable_; + typedef void DestructorSkippable_; + ::PROTOBUF_NAMESPACE_ID::RepeatedField< ::PROTOBUF_NAMESPACE_ID::uint64 > words_; + mutable std::atomic _words_cached_byte_size_; + mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; + friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; +}; +// ------------------------------------------------------------------- + +class Alias PROTOBUF_FINAL : + public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.Alias) */ { + public: + inline Alias() : Alias(nullptr) {} + virtual ~Alias(); + + Alias(const Alias& from); + Alias(Alias&& from) noexcept + : Alias() { + *this = ::std::move(from); + } + + inline Alias& operator=(const Alias& from) { + CopyFrom(from); + return *this; + } + inline Alias& operator=(Alias&& from) noexcept { + if (GetArena() == from.GetArena()) { + if (this != &from) InternalSwap(&from); + } else { + CopyFrom(from); + } + return *this; + } + + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { + return GetDescriptor(); + } + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { + return GetMetadataStatic().descriptor; + } + static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { + return GetMetadataStatic().reflection; + } + static const Alias& default_instance(); + + static inline const Alias* internal_default_instance() { + return reinterpret_cast( + &_Alias_default_instance_); + } + static constexpr int kIndexInFileMessages = + 12; + + friend void swap(Alias& a, Alias& b) { + a.Swap(&b); + } + inline void Swap(Alias* other) { + if (other == this) return; + if (GetArena() == other->GetArena()) { + InternalSwap(other); + } else { + ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); + } + } + void UnsafeArenaSwap(Alias* other) { + if (other == this) return; + GOOGLE_DCHECK(GetArena() == other->GetArena()); + InternalSwap(other); + } + + // implements Message ---------------------------------------------- + + inline Alias* New() const final { + return CreateMaybeMessage(nullptr); + } + + Alias* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { + return CreateMaybeMessage(arena); + } + void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void CopyFrom(const Alias& from); + void MergeFrom(const Alias& from); + PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; + bool IsInitialized() const final; + + size_t ByteSizeLong() const final; + const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; + ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( + ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; + int GetCachedSize() const final { return _cached_size_.Get(); } + + private: + inline void SharedCtor(); + inline void SharedDtor(); + void SetCachedSize(int size) const final; + void InternalSwap(Alias* other); + friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; + static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { + return "pg_query.Alias"; + } + protected: + explicit Alias(::PROTOBUF_NAMESPACE_ID::Arena* arena); + private: + static void ArenaDtor(void* object); + inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); + public: + + ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; + private: + static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { + ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); + return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; + } + + public: + + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + + enum : int { + kColnamesFieldNumber = 2, + kAliasnameFieldNumber = 1, + }; + // repeated .pg_query.Node colnames = 2 [json_name = "colnames"]; + int colnames_size() const; + private: + int _internal_colnames_size() const; + public: + void clear_colnames(); + ::pg_query::Node* mutable_colnames(int index); + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* + mutable_colnames(); + private: + const ::pg_query::Node& _internal_colnames(int index) const; + ::pg_query::Node* _internal_add_colnames(); + public: + const ::pg_query::Node& colnames(int index) const; + ::pg_query::Node* add_colnames(); + const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& + colnames() const; + + // string aliasname = 1 [json_name = "aliasname"]; + void clear_aliasname(); + const std::string& aliasname() const; + void set_aliasname(const std::string& value); + void set_aliasname(std::string&& value); + void set_aliasname(const char* value); + void set_aliasname(const char* value, size_t size); + std::string* mutable_aliasname(); + std::string* release_aliasname(); + void set_allocated_aliasname(std::string* aliasname); + private: + const std::string& _internal_aliasname() const; + void _internal_set_aliasname(const std::string& value); + std::string* _internal_mutable_aliasname(); + public: + + // @@protoc_insertion_point(class_scope:pg_query.Alias) + private: + class _Internal; + + template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; + typedef void InternalArenaConstructable_; + typedef void DestructorSkippable_; + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > colnames_; + ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr aliasname_; + mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; + friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; +}; +// ------------------------------------------------------------------- + +class RangeVar PROTOBUF_FINAL : + public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.RangeVar) */ { + public: + inline RangeVar() : RangeVar(nullptr) {} + virtual ~RangeVar(); + + RangeVar(const RangeVar& from); + RangeVar(RangeVar&& from) noexcept + : RangeVar() { + *this = ::std::move(from); + } + + inline RangeVar& operator=(const RangeVar& from) { + CopyFrom(from); + return *this; + } + inline RangeVar& operator=(RangeVar&& from) noexcept { + if (GetArena() == from.GetArena()) { + if (this != &from) InternalSwap(&from); + } else { + CopyFrom(from); + } + return *this; + } + + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { + return GetDescriptor(); + } + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { + return GetMetadataStatic().descriptor; + } + static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { + return GetMetadataStatic().reflection; + } + static const RangeVar& default_instance(); + + static inline const RangeVar* internal_default_instance() { + return reinterpret_cast( + &_RangeVar_default_instance_); + } + static constexpr int kIndexInFileMessages = + 13; + + friend void swap(RangeVar& a, RangeVar& b) { + a.Swap(&b); + } + inline void Swap(RangeVar* other) { + if (other == this) return; + if (GetArena() == other->GetArena()) { + InternalSwap(other); + } else { + ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); + } + } + void UnsafeArenaSwap(RangeVar* other) { + if (other == this) return; + GOOGLE_DCHECK(GetArena() == other->GetArena()); + InternalSwap(other); + } + + // implements Message ---------------------------------------------- + + inline RangeVar* New() const final { + return CreateMaybeMessage(nullptr); + } + + RangeVar* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { + return CreateMaybeMessage(arena); + } + void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void CopyFrom(const RangeVar& from); + void MergeFrom(const RangeVar& from); + PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; + bool IsInitialized() const final; + + size_t ByteSizeLong() const final; + const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; + ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( + ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; + int GetCachedSize() const final { return _cached_size_.Get(); } + + private: + inline void SharedCtor(); + inline void SharedDtor(); + void SetCachedSize(int size) const final; + void InternalSwap(RangeVar* other); + friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; + static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { + return "pg_query.RangeVar"; + } + protected: + explicit RangeVar(::PROTOBUF_NAMESPACE_ID::Arena* arena); + private: + static void ArenaDtor(void* object); + inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); + public: + + ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; + private: + static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { + ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); + return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; + } + + public: + + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + + enum : int { + kCatalognameFieldNumber = 1, + kSchemanameFieldNumber = 2, + kRelnameFieldNumber = 3, + kRelpersistenceFieldNumber = 5, + kAliasFieldNumber = 6, + kInhFieldNumber = 4, + kLocationFieldNumber = 7, + }; + // string catalogname = 1 [json_name = "catalogname"]; + void clear_catalogname(); + const std::string& catalogname() const; + void set_catalogname(const std::string& value); + void set_catalogname(std::string&& value); + void set_catalogname(const char* value); + void set_catalogname(const char* value, size_t size); + std::string* mutable_catalogname(); + std::string* release_catalogname(); + void set_allocated_catalogname(std::string* catalogname); + private: + const std::string& _internal_catalogname() const; + void _internal_set_catalogname(const std::string& value); + std::string* _internal_mutable_catalogname(); + public: + + // string schemaname = 2 [json_name = "schemaname"]; + void clear_schemaname(); + const std::string& schemaname() const; + void set_schemaname(const std::string& value); + void set_schemaname(std::string&& value); + void set_schemaname(const char* value); + void set_schemaname(const char* value, size_t size); + std::string* mutable_schemaname(); + std::string* release_schemaname(); + void set_allocated_schemaname(std::string* schemaname); + private: + const std::string& _internal_schemaname() const; + void _internal_set_schemaname(const std::string& value); + std::string* _internal_mutable_schemaname(); + public: + + // string relname = 3 [json_name = "relname"]; + void clear_relname(); + const std::string& relname() const; + void set_relname(const std::string& value); + void set_relname(std::string&& value); + void set_relname(const char* value); + void set_relname(const char* value, size_t size); + std::string* mutable_relname(); + std::string* release_relname(); + void set_allocated_relname(std::string* relname); + private: + const std::string& _internal_relname() const; + void _internal_set_relname(const std::string& value); + std::string* _internal_mutable_relname(); + public: + + // string relpersistence = 5 [json_name = "relpersistence"]; + void clear_relpersistence(); + const std::string& relpersistence() const; + void set_relpersistence(const std::string& value); + void set_relpersistence(std::string&& value); + void set_relpersistence(const char* value); + void set_relpersistence(const char* value, size_t size); + std::string* mutable_relpersistence(); + std::string* release_relpersistence(); + void set_allocated_relpersistence(std::string* relpersistence); + private: + const std::string& _internal_relpersistence() const; + void _internal_set_relpersistence(const std::string& value); + std::string* _internal_mutable_relpersistence(); + public: + + // .pg_query.Alias alias = 6 [json_name = "alias"]; + bool has_alias() const; + private: + bool _internal_has_alias() const; + public: + void clear_alias(); + const ::pg_query::Alias& alias() const; + ::pg_query::Alias* release_alias(); + ::pg_query::Alias* mutable_alias(); + void set_allocated_alias(::pg_query::Alias* alias); + private: + const ::pg_query::Alias& _internal_alias() const; + ::pg_query::Alias* _internal_mutable_alias(); + public: + void unsafe_arena_set_allocated_alias( + ::pg_query::Alias* alias); + ::pg_query::Alias* unsafe_arena_release_alias(); + + // bool inh = 4 [json_name = "inh"]; + void clear_inh(); + bool inh() const; + void set_inh(bool value); + private: + bool _internal_inh() const; + void _internal_set_inh(bool value); + public: + + // int32 location = 7 [json_name = "location"]; + void clear_location(); + ::PROTOBUF_NAMESPACE_ID::int32 location() const; + void set_location(::PROTOBUF_NAMESPACE_ID::int32 value); + private: + ::PROTOBUF_NAMESPACE_ID::int32 _internal_location() const; + void _internal_set_location(::PROTOBUF_NAMESPACE_ID::int32 value); + public: + + // @@protoc_insertion_point(class_scope:pg_query.RangeVar) + private: + class _Internal; + + template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; + typedef void InternalArenaConstructable_; + typedef void DestructorSkippable_; + ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr catalogname_; + ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr schemaname_; + ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr relname_; + ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr relpersistence_; + ::pg_query::Alias* alias_; + bool inh_; + ::PROTOBUF_NAMESPACE_ID::int32 location_; + mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; + friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; +}; +// ------------------------------------------------------------------- + +class TableFunc PROTOBUF_FINAL : + public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.TableFunc) */ { + public: + inline TableFunc() : TableFunc(nullptr) {} + virtual ~TableFunc(); + + TableFunc(const TableFunc& from); + TableFunc(TableFunc&& from) noexcept + : TableFunc() { + *this = ::std::move(from); + } + + inline TableFunc& operator=(const TableFunc& from) { + CopyFrom(from); + return *this; + } + inline TableFunc& operator=(TableFunc&& from) noexcept { + if (GetArena() == from.GetArena()) { + if (this != &from) InternalSwap(&from); + } else { + CopyFrom(from); + } + return *this; + } + + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { + return GetDescriptor(); + } + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { + return GetMetadataStatic().descriptor; + } + static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { + return GetMetadataStatic().reflection; + } + static const TableFunc& default_instance(); + + static inline const TableFunc* internal_default_instance() { + return reinterpret_cast( + &_TableFunc_default_instance_); + } + static constexpr int kIndexInFileMessages = + 14; + + friend void swap(TableFunc& a, TableFunc& b) { + a.Swap(&b); + } + inline void Swap(TableFunc* other) { + if (other == this) return; + if (GetArena() == other->GetArena()) { + InternalSwap(other); + } else { + ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); + } + } + void UnsafeArenaSwap(TableFunc* other) { + if (other == this) return; + GOOGLE_DCHECK(GetArena() == other->GetArena()); + InternalSwap(other); + } + + // implements Message ---------------------------------------------- + + inline TableFunc* New() const final { + return CreateMaybeMessage(nullptr); + } + + TableFunc* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { + return CreateMaybeMessage(arena); + } + void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void CopyFrom(const TableFunc& from); + void MergeFrom(const TableFunc& from); + PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; + bool IsInitialized() const final; + + size_t ByteSizeLong() const final; + const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; + ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( + ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; + int GetCachedSize() const final { return _cached_size_.Get(); } + + private: + inline void SharedCtor(); + inline void SharedDtor(); + void SetCachedSize(int size) const final; + void InternalSwap(TableFunc* other); + friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; + static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { + return "pg_query.TableFunc"; + } + protected: + explicit TableFunc(::PROTOBUF_NAMESPACE_ID::Arena* arena); + private: + static void ArenaDtor(void* object); + inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); + public: + + ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; + private: + static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { + ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); + return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; + } + + public: + + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + + enum : int { + kNsUrisFieldNumber = 1, + kNsNamesFieldNumber = 2, + kColnamesFieldNumber = 5, + kColtypesFieldNumber = 6, + kColtypmodsFieldNumber = 7, + kColcollationsFieldNumber = 8, + kColexprsFieldNumber = 9, + kColdefexprsFieldNumber = 10, + kDocexprFieldNumber = 3, + kRowexprFieldNumber = 4, + kOrdinalitycolFieldNumber = 11, + kLocationFieldNumber = 12, + }; + // repeated .pg_query.Node ns_uris = 1 [json_name = "ns_uris"]; + int ns_uris_size() const; + private: + int _internal_ns_uris_size() const; + public: + void clear_ns_uris(); + ::pg_query::Node* mutable_ns_uris(int index); + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* + mutable_ns_uris(); + private: + const ::pg_query::Node& _internal_ns_uris(int index) const; + ::pg_query::Node* _internal_add_ns_uris(); + public: + const ::pg_query::Node& ns_uris(int index) const; + ::pg_query::Node* add_ns_uris(); + const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& + ns_uris() const; + + // repeated .pg_query.Node ns_names = 2 [json_name = "ns_names"]; + int ns_names_size() const; + private: + int _internal_ns_names_size() const; + public: + void clear_ns_names(); + ::pg_query::Node* mutable_ns_names(int index); + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* + mutable_ns_names(); + private: + const ::pg_query::Node& _internal_ns_names(int index) const; + ::pg_query::Node* _internal_add_ns_names(); + public: + const ::pg_query::Node& ns_names(int index) const; + ::pg_query::Node* add_ns_names(); + const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& + ns_names() const; + + // repeated .pg_query.Node colnames = 5 [json_name = "colnames"]; + int colnames_size() const; + private: + int _internal_colnames_size() const; + public: + void clear_colnames(); + ::pg_query::Node* mutable_colnames(int index); + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* + mutable_colnames(); + private: + const ::pg_query::Node& _internal_colnames(int index) const; + ::pg_query::Node* _internal_add_colnames(); + public: + const ::pg_query::Node& colnames(int index) const; + ::pg_query::Node* add_colnames(); + const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& + colnames() const; + + // repeated .pg_query.Node coltypes = 6 [json_name = "coltypes"]; + int coltypes_size() const; + private: + int _internal_coltypes_size() const; + public: + void clear_coltypes(); + ::pg_query::Node* mutable_coltypes(int index); + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* + mutable_coltypes(); + private: + const ::pg_query::Node& _internal_coltypes(int index) const; + ::pg_query::Node* _internal_add_coltypes(); + public: + const ::pg_query::Node& coltypes(int index) const; + ::pg_query::Node* add_coltypes(); + const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& + coltypes() const; + + // repeated .pg_query.Node coltypmods = 7 [json_name = "coltypmods"]; + int coltypmods_size() const; + private: + int _internal_coltypmods_size() const; + public: + void clear_coltypmods(); + ::pg_query::Node* mutable_coltypmods(int index); + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* + mutable_coltypmods(); + private: + const ::pg_query::Node& _internal_coltypmods(int index) const; + ::pg_query::Node* _internal_add_coltypmods(); + public: + const ::pg_query::Node& coltypmods(int index) const; + ::pg_query::Node* add_coltypmods(); + const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& + coltypmods() const; + + // repeated .pg_query.Node colcollations = 8 [json_name = "colcollations"]; + int colcollations_size() const; + private: + int _internal_colcollations_size() const; + public: + void clear_colcollations(); + ::pg_query::Node* mutable_colcollations(int index); + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* + mutable_colcollations(); + private: + const ::pg_query::Node& _internal_colcollations(int index) const; + ::pg_query::Node* _internal_add_colcollations(); + public: + const ::pg_query::Node& colcollations(int index) const; + ::pg_query::Node* add_colcollations(); + const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& + colcollations() const; + + // repeated .pg_query.Node colexprs = 9 [json_name = "colexprs"]; + int colexprs_size() const; + private: + int _internal_colexprs_size() const; + public: + void clear_colexprs(); + ::pg_query::Node* mutable_colexprs(int index); + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* + mutable_colexprs(); + private: + const ::pg_query::Node& _internal_colexprs(int index) const; + ::pg_query::Node* _internal_add_colexprs(); + public: + const ::pg_query::Node& colexprs(int index) const; + ::pg_query::Node* add_colexprs(); + const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& + colexprs() const; + + // repeated .pg_query.Node coldefexprs = 10 [json_name = "coldefexprs"]; + int coldefexprs_size() const; + private: + int _internal_coldefexprs_size() const; + public: + void clear_coldefexprs(); + ::pg_query::Node* mutable_coldefexprs(int index); + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* + mutable_coldefexprs(); + private: + const ::pg_query::Node& _internal_coldefexprs(int index) const; + ::pg_query::Node* _internal_add_coldefexprs(); + public: + const ::pg_query::Node& coldefexprs(int index) const; + ::pg_query::Node* add_coldefexprs(); + const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& + coldefexprs() const; + + // .pg_query.Node docexpr = 3 [json_name = "docexpr"]; + bool has_docexpr() const; + private: + bool _internal_has_docexpr() const; + public: + void clear_docexpr(); + const ::pg_query::Node& docexpr() const; + ::pg_query::Node* release_docexpr(); + ::pg_query::Node* mutable_docexpr(); + void set_allocated_docexpr(::pg_query::Node* docexpr); + private: + const ::pg_query::Node& _internal_docexpr() const; + ::pg_query::Node* _internal_mutable_docexpr(); + public: + void unsafe_arena_set_allocated_docexpr( + ::pg_query::Node* docexpr); + ::pg_query::Node* unsafe_arena_release_docexpr(); + + // .pg_query.Node rowexpr = 4 [json_name = "rowexpr"]; + bool has_rowexpr() const; + private: + bool _internal_has_rowexpr() const; + public: + void clear_rowexpr(); + const ::pg_query::Node& rowexpr() const; + ::pg_query::Node* release_rowexpr(); + ::pg_query::Node* mutable_rowexpr(); + void set_allocated_rowexpr(::pg_query::Node* rowexpr); + private: + const ::pg_query::Node& _internal_rowexpr() const; + ::pg_query::Node* _internal_mutable_rowexpr(); + public: + void unsafe_arena_set_allocated_rowexpr( + ::pg_query::Node* rowexpr); + ::pg_query::Node* unsafe_arena_release_rowexpr(); + + // int32 ordinalitycol = 11 [json_name = "ordinalitycol"]; + void clear_ordinalitycol(); + ::PROTOBUF_NAMESPACE_ID::int32 ordinalitycol() const; + void set_ordinalitycol(::PROTOBUF_NAMESPACE_ID::int32 value); + private: + ::PROTOBUF_NAMESPACE_ID::int32 _internal_ordinalitycol() const; + void _internal_set_ordinalitycol(::PROTOBUF_NAMESPACE_ID::int32 value); + public: + + // int32 location = 12 [json_name = "location"]; + void clear_location(); + ::PROTOBUF_NAMESPACE_ID::int32 location() const; + void set_location(::PROTOBUF_NAMESPACE_ID::int32 value); + private: + ::PROTOBUF_NAMESPACE_ID::int32 _internal_location() const; + void _internal_set_location(::PROTOBUF_NAMESPACE_ID::int32 value); + public: + + // @@protoc_insertion_point(class_scope:pg_query.TableFunc) + private: + class _Internal; + + template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; + typedef void InternalArenaConstructable_; + typedef void DestructorSkippable_; + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > ns_uris_; + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > ns_names_; + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > colnames_; + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > coltypes_; + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > coltypmods_; + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > colcollations_; + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > colexprs_; + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > coldefexprs_; + ::pg_query::Node* docexpr_; + ::pg_query::Node* rowexpr_; + ::PROTOBUF_NAMESPACE_ID::int32 ordinalitycol_; + ::PROTOBUF_NAMESPACE_ID::int32 location_; + mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; + friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; +}; +// ------------------------------------------------------------------- + +class Expr PROTOBUF_FINAL : + public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.Expr) */ { + public: + inline Expr() : Expr(nullptr) {} + virtual ~Expr(); + + Expr(const Expr& from); + Expr(Expr&& from) noexcept + : Expr() { + *this = ::std::move(from); + } + + inline Expr& operator=(const Expr& from) { + CopyFrom(from); + return *this; + } + inline Expr& operator=(Expr&& from) noexcept { + if (GetArena() == from.GetArena()) { + if (this != &from) InternalSwap(&from); + } else { + CopyFrom(from); + } + return *this; + } + + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { + return GetDescriptor(); + } + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { + return GetMetadataStatic().descriptor; + } + static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { + return GetMetadataStatic().reflection; + } + static const Expr& default_instance(); + + static inline const Expr* internal_default_instance() { + return reinterpret_cast( + &_Expr_default_instance_); + } + static constexpr int kIndexInFileMessages = + 15; + + friend void swap(Expr& a, Expr& b) { + a.Swap(&b); + } + inline void Swap(Expr* other) { + if (other == this) return; + if (GetArena() == other->GetArena()) { + InternalSwap(other); + } else { + ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); + } + } + void UnsafeArenaSwap(Expr* other) { + if (other == this) return; + GOOGLE_DCHECK(GetArena() == other->GetArena()); + InternalSwap(other); + } + + // implements Message ---------------------------------------------- + + inline Expr* New() const final { + return CreateMaybeMessage(nullptr); + } + + Expr* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { + return CreateMaybeMessage(arena); + } + void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void CopyFrom(const Expr& from); + void MergeFrom(const Expr& from); + PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; + bool IsInitialized() const final; + + size_t ByteSizeLong() const final; + const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; + ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( + ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; + int GetCachedSize() const final { return _cached_size_.Get(); } + + private: + inline void SharedCtor(); + inline void SharedDtor(); + void SetCachedSize(int size) const final; + void InternalSwap(Expr* other); + friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; + static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { + return "pg_query.Expr"; + } + protected: + explicit Expr(::PROTOBUF_NAMESPACE_ID::Arena* arena); + private: + static void ArenaDtor(void* object); + inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); + public: + + ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; + private: + static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { + ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); + return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; + } + + public: + + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + + // @@protoc_insertion_point(class_scope:pg_query.Expr) + private: + class _Internal; + + template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; + typedef void InternalArenaConstructable_; + typedef void DestructorSkippable_; + mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; + friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; +}; +// ------------------------------------------------------------------- + +class Var PROTOBUF_FINAL : + public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.Var) */ { + public: + inline Var() : Var(nullptr) {} + virtual ~Var(); + + Var(const Var& from); + Var(Var&& from) noexcept + : Var() { + *this = ::std::move(from); + } + + inline Var& operator=(const Var& from) { + CopyFrom(from); + return *this; + } + inline Var& operator=(Var&& from) noexcept { + if (GetArena() == from.GetArena()) { + if (this != &from) InternalSwap(&from); + } else { + CopyFrom(from); + } + return *this; + } + + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { + return GetDescriptor(); + } + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { + return GetMetadataStatic().descriptor; + } + static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { + return GetMetadataStatic().reflection; + } + static const Var& default_instance(); + + static inline const Var* internal_default_instance() { + return reinterpret_cast( + &_Var_default_instance_); + } + static constexpr int kIndexInFileMessages = + 16; + + friend void swap(Var& a, Var& b) { + a.Swap(&b); + } + inline void Swap(Var* other) { + if (other == this) return; + if (GetArena() == other->GetArena()) { + InternalSwap(other); + } else { + ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); + } + } + void UnsafeArenaSwap(Var* other) { + if (other == this) return; + GOOGLE_DCHECK(GetArena() == other->GetArena()); + InternalSwap(other); + } + + // implements Message ---------------------------------------------- + + inline Var* New() const final { + return CreateMaybeMessage(nullptr); + } + + Var* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { + return CreateMaybeMessage(arena); + } + void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void CopyFrom(const Var& from); + void MergeFrom(const Var& from); + PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; + bool IsInitialized() const final; + + size_t ByteSizeLong() const final; + const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; + ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( + ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; + int GetCachedSize() const final { return _cached_size_.Get(); } + + private: + inline void SharedCtor(); + inline void SharedDtor(); + void SetCachedSize(int size) const final; + void InternalSwap(Var* other); + friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; + static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { + return "pg_query.Var"; + } + protected: + explicit Var(::PROTOBUF_NAMESPACE_ID::Arena* arena); + private: + static void ArenaDtor(void* object); + inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); + public: + + ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; + private: + static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { + ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); + return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; + } + + public: + + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + + enum : int { + kXprFieldNumber = 1, + kVarnoFieldNumber = 2, + kVarattnoFieldNumber = 3, + kVartypeFieldNumber = 4, + kVartypmodFieldNumber = 5, + kVarcollidFieldNumber = 6, + kVarlevelsupFieldNumber = 7, + kVarnosynFieldNumber = 8, + kVarattnosynFieldNumber = 9, + kLocationFieldNumber = 10, + }; + // .pg_query.Node xpr = 1 [json_name = "xpr"]; + bool has_xpr() const; + private: + bool _internal_has_xpr() const; + public: + void clear_xpr(); + const ::pg_query::Node& xpr() const; + ::pg_query::Node* release_xpr(); + ::pg_query::Node* mutable_xpr(); + void set_allocated_xpr(::pg_query::Node* xpr); + private: + const ::pg_query::Node& _internal_xpr() const; + ::pg_query::Node* _internal_mutable_xpr(); + public: + void unsafe_arena_set_allocated_xpr( + ::pg_query::Node* xpr); + ::pg_query::Node* unsafe_arena_release_xpr(); + + // uint32 varno = 2 [json_name = "varno"]; + void clear_varno(); + ::PROTOBUF_NAMESPACE_ID::uint32 varno() const; + void set_varno(::PROTOBUF_NAMESPACE_ID::uint32 value); + private: + ::PROTOBUF_NAMESPACE_ID::uint32 _internal_varno() const; + void _internal_set_varno(::PROTOBUF_NAMESPACE_ID::uint32 value); + public: + + // int32 varattno = 3 [json_name = "varattno"]; + void clear_varattno(); + ::PROTOBUF_NAMESPACE_ID::int32 varattno() const; + void set_varattno(::PROTOBUF_NAMESPACE_ID::int32 value); + private: + ::PROTOBUF_NAMESPACE_ID::int32 _internal_varattno() const; + void _internal_set_varattno(::PROTOBUF_NAMESPACE_ID::int32 value); + public: + + // uint32 vartype = 4 [json_name = "vartype"]; + void clear_vartype(); + ::PROTOBUF_NAMESPACE_ID::uint32 vartype() const; + void set_vartype(::PROTOBUF_NAMESPACE_ID::uint32 value); + private: + ::PROTOBUF_NAMESPACE_ID::uint32 _internal_vartype() const; + void _internal_set_vartype(::PROTOBUF_NAMESPACE_ID::uint32 value); + public: + + // int32 vartypmod = 5 [json_name = "vartypmod"]; + void clear_vartypmod(); + ::PROTOBUF_NAMESPACE_ID::int32 vartypmod() const; + void set_vartypmod(::PROTOBUF_NAMESPACE_ID::int32 value); + private: + ::PROTOBUF_NAMESPACE_ID::int32 _internal_vartypmod() const; + void _internal_set_vartypmod(::PROTOBUF_NAMESPACE_ID::int32 value); + public: + + // uint32 varcollid = 6 [json_name = "varcollid"]; + void clear_varcollid(); + ::PROTOBUF_NAMESPACE_ID::uint32 varcollid() const; + void set_varcollid(::PROTOBUF_NAMESPACE_ID::uint32 value); + private: + ::PROTOBUF_NAMESPACE_ID::uint32 _internal_varcollid() const; + void _internal_set_varcollid(::PROTOBUF_NAMESPACE_ID::uint32 value); + public: + + // uint32 varlevelsup = 7 [json_name = "varlevelsup"]; + void clear_varlevelsup(); + ::PROTOBUF_NAMESPACE_ID::uint32 varlevelsup() const; + void set_varlevelsup(::PROTOBUF_NAMESPACE_ID::uint32 value); + private: + ::PROTOBUF_NAMESPACE_ID::uint32 _internal_varlevelsup() const; + void _internal_set_varlevelsup(::PROTOBUF_NAMESPACE_ID::uint32 value); + public: + + // uint32 varnosyn = 8 [json_name = "varnosyn"]; + void clear_varnosyn(); + ::PROTOBUF_NAMESPACE_ID::uint32 varnosyn() const; + void set_varnosyn(::PROTOBUF_NAMESPACE_ID::uint32 value); + private: + ::PROTOBUF_NAMESPACE_ID::uint32 _internal_varnosyn() const; + void _internal_set_varnosyn(::PROTOBUF_NAMESPACE_ID::uint32 value); + public: + + // int32 varattnosyn = 9 [json_name = "varattnosyn"]; + void clear_varattnosyn(); + ::PROTOBUF_NAMESPACE_ID::int32 varattnosyn() const; + void set_varattnosyn(::PROTOBUF_NAMESPACE_ID::int32 value); + private: + ::PROTOBUF_NAMESPACE_ID::int32 _internal_varattnosyn() const; + void _internal_set_varattnosyn(::PROTOBUF_NAMESPACE_ID::int32 value); + public: + + // int32 location = 10 [json_name = "location"]; + void clear_location(); + ::PROTOBUF_NAMESPACE_ID::int32 location() const; + void set_location(::PROTOBUF_NAMESPACE_ID::int32 value); + private: + ::PROTOBUF_NAMESPACE_ID::int32 _internal_location() const; + void _internal_set_location(::PROTOBUF_NAMESPACE_ID::int32 value); + public: + + // @@protoc_insertion_point(class_scope:pg_query.Var) + private: + class _Internal; + + template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; + typedef void InternalArenaConstructable_; + typedef void DestructorSkippable_; + ::pg_query::Node* xpr_; + ::PROTOBUF_NAMESPACE_ID::uint32 varno_; + ::PROTOBUF_NAMESPACE_ID::int32 varattno_; + ::PROTOBUF_NAMESPACE_ID::uint32 vartype_; + ::PROTOBUF_NAMESPACE_ID::int32 vartypmod_; + ::PROTOBUF_NAMESPACE_ID::uint32 varcollid_; + ::PROTOBUF_NAMESPACE_ID::uint32 varlevelsup_; + ::PROTOBUF_NAMESPACE_ID::uint32 varnosyn_; + ::PROTOBUF_NAMESPACE_ID::int32 varattnosyn_; + ::PROTOBUF_NAMESPACE_ID::int32 location_; + mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; + friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; +}; +// ------------------------------------------------------------------- + +class Param PROTOBUF_FINAL : + public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.Param) */ { + public: + inline Param() : Param(nullptr) {} + virtual ~Param(); + + Param(const Param& from); + Param(Param&& from) noexcept + : Param() { + *this = ::std::move(from); + } + + inline Param& operator=(const Param& from) { + CopyFrom(from); + return *this; + } + inline Param& operator=(Param&& from) noexcept { + if (GetArena() == from.GetArena()) { + if (this != &from) InternalSwap(&from); + } else { + CopyFrom(from); + } + return *this; + } + + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { + return GetDescriptor(); + } + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { + return GetMetadataStatic().descriptor; + } + static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { + return GetMetadataStatic().reflection; + } + static const Param& default_instance(); + + static inline const Param* internal_default_instance() { + return reinterpret_cast( + &_Param_default_instance_); + } + static constexpr int kIndexInFileMessages = + 17; + + friend void swap(Param& a, Param& b) { + a.Swap(&b); + } + inline void Swap(Param* other) { + if (other == this) return; + if (GetArena() == other->GetArena()) { + InternalSwap(other); + } else { + ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); + } + } + void UnsafeArenaSwap(Param* other) { + if (other == this) return; + GOOGLE_DCHECK(GetArena() == other->GetArena()); + InternalSwap(other); + } + + // implements Message ---------------------------------------------- + + inline Param* New() const final { + return CreateMaybeMessage(nullptr); + } + + Param* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { + return CreateMaybeMessage(arena); + } + void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void CopyFrom(const Param& from); + void MergeFrom(const Param& from); + PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; + bool IsInitialized() const final; + + size_t ByteSizeLong() const final; + const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; + ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( + ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; + int GetCachedSize() const final { return _cached_size_.Get(); } + + private: + inline void SharedCtor(); + inline void SharedDtor(); + void SetCachedSize(int size) const final; + void InternalSwap(Param* other); + friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; + static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { + return "pg_query.Param"; + } + protected: + explicit Param(::PROTOBUF_NAMESPACE_ID::Arena* arena); + private: + static void ArenaDtor(void* object); + inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); + public: + + ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; + private: + static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { + ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); + return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; + } + + public: + + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + + enum : int { + kXprFieldNumber = 1, + kParamkindFieldNumber = 2, + kParamidFieldNumber = 3, + kParamtypeFieldNumber = 4, + kParamtypmodFieldNumber = 5, + kParamcollidFieldNumber = 6, + kLocationFieldNumber = 7, + }; + // .pg_query.Node xpr = 1 [json_name = "xpr"]; + bool has_xpr() const; + private: + bool _internal_has_xpr() const; + public: + void clear_xpr(); + const ::pg_query::Node& xpr() const; + ::pg_query::Node* release_xpr(); + ::pg_query::Node* mutable_xpr(); + void set_allocated_xpr(::pg_query::Node* xpr); + private: + const ::pg_query::Node& _internal_xpr() const; + ::pg_query::Node* _internal_mutable_xpr(); + public: + void unsafe_arena_set_allocated_xpr( + ::pg_query::Node* xpr); + ::pg_query::Node* unsafe_arena_release_xpr(); + + // .pg_query.ParamKind paramkind = 2 [json_name = "paramkind"]; + void clear_paramkind(); + ::pg_query::ParamKind paramkind() const; + void set_paramkind(::pg_query::ParamKind value); + private: + ::pg_query::ParamKind _internal_paramkind() const; + void _internal_set_paramkind(::pg_query::ParamKind value); + public: + + // int32 paramid = 3 [json_name = "paramid"]; + void clear_paramid(); + ::PROTOBUF_NAMESPACE_ID::int32 paramid() const; + void set_paramid(::PROTOBUF_NAMESPACE_ID::int32 value); + private: + ::PROTOBUF_NAMESPACE_ID::int32 _internal_paramid() const; + void _internal_set_paramid(::PROTOBUF_NAMESPACE_ID::int32 value); + public: + + // uint32 paramtype = 4 [json_name = "paramtype"]; + void clear_paramtype(); + ::PROTOBUF_NAMESPACE_ID::uint32 paramtype() const; + void set_paramtype(::PROTOBUF_NAMESPACE_ID::uint32 value); + private: + ::PROTOBUF_NAMESPACE_ID::uint32 _internal_paramtype() const; + void _internal_set_paramtype(::PROTOBUF_NAMESPACE_ID::uint32 value); + public: + + // int32 paramtypmod = 5 [json_name = "paramtypmod"]; + void clear_paramtypmod(); + ::PROTOBUF_NAMESPACE_ID::int32 paramtypmod() const; + void set_paramtypmod(::PROTOBUF_NAMESPACE_ID::int32 value); + private: + ::PROTOBUF_NAMESPACE_ID::int32 _internal_paramtypmod() const; + void _internal_set_paramtypmod(::PROTOBUF_NAMESPACE_ID::int32 value); + public: + + // uint32 paramcollid = 6 [json_name = "paramcollid"]; + void clear_paramcollid(); + ::PROTOBUF_NAMESPACE_ID::uint32 paramcollid() const; + void set_paramcollid(::PROTOBUF_NAMESPACE_ID::uint32 value); + private: + ::PROTOBUF_NAMESPACE_ID::uint32 _internal_paramcollid() const; + void _internal_set_paramcollid(::PROTOBUF_NAMESPACE_ID::uint32 value); + public: + + // int32 location = 7 [json_name = "location"]; + void clear_location(); + ::PROTOBUF_NAMESPACE_ID::int32 location() const; + void set_location(::PROTOBUF_NAMESPACE_ID::int32 value); + private: + ::PROTOBUF_NAMESPACE_ID::int32 _internal_location() const; + void _internal_set_location(::PROTOBUF_NAMESPACE_ID::int32 value); + public: + + // @@protoc_insertion_point(class_scope:pg_query.Param) + private: + class _Internal; + + template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; + typedef void InternalArenaConstructable_; + typedef void DestructorSkippable_; + ::pg_query::Node* xpr_; + int paramkind_; + ::PROTOBUF_NAMESPACE_ID::int32 paramid_; + ::PROTOBUF_NAMESPACE_ID::uint32 paramtype_; + ::PROTOBUF_NAMESPACE_ID::int32 paramtypmod_; + ::PROTOBUF_NAMESPACE_ID::uint32 paramcollid_; + ::PROTOBUF_NAMESPACE_ID::int32 location_; + mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; + friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; +}; +// ------------------------------------------------------------------- + +class Aggref PROTOBUF_FINAL : + public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.Aggref) */ { + public: + inline Aggref() : Aggref(nullptr) {} + virtual ~Aggref(); + + Aggref(const Aggref& from); + Aggref(Aggref&& from) noexcept + : Aggref() { + *this = ::std::move(from); + } + + inline Aggref& operator=(const Aggref& from) { + CopyFrom(from); + return *this; + } + inline Aggref& operator=(Aggref&& from) noexcept { + if (GetArena() == from.GetArena()) { + if (this != &from) InternalSwap(&from); + } else { + CopyFrom(from); + } + return *this; + } + + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { + return GetDescriptor(); + } + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { + return GetMetadataStatic().descriptor; + } + static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { + return GetMetadataStatic().reflection; + } + static const Aggref& default_instance(); + + static inline const Aggref* internal_default_instance() { + return reinterpret_cast( + &_Aggref_default_instance_); + } + static constexpr int kIndexInFileMessages = + 18; + + friend void swap(Aggref& a, Aggref& b) { + a.Swap(&b); + } + inline void Swap(Aggref* other) { + if (other == this) return; + if (GetArena() == other->GetArena()) { + InternalSwap(other); + } else { + ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); + } + } + void UnsafeArenaSwap(Aggref* other) { + if (other == this) return; + GOOGLE_DCHECK(GetArena() == other->GetArena()); + InternalSwap(other); + } + + // implements Message ---------------------------------------------- + + inline Aggref* New() const final { + return CreateMaybeMessage(nullptr); + } + + Aggref* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { + return CreateMaybeMessage(arena); + } + void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void CopyFrom(const Aggref& from); + void MergeFrom(const Aggref& from); + PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; + bool IsInitialized() const final; + + size_t ByteSizeLong() const final; + const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; + ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( + ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; + int GetCachedSize() const final { return _cached_size_.Get(); } + + private: + inline void SharedCtor(); + inline void SharedDtor(); + void SetCachedSize(int size) const final; + void InternalSwap(Aggref* other); + friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; + static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { + return "pg_query.Aggref"; + } + protected: + explicit Aggref(::PROTOBUF_NAMESPACE_ID::Arena* arena); + private: + static void ArenaDtor(void* object); + inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); + public: + + ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; + private: + static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { + ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); + return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; + } + + public: + + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + + enum : int { + kAggargtypesFieldNumber = 7, + kAggdirectargsFieldNumber = 8, + kArgsFieldNumber = 9, + kAggorderFieldNumber = 10, + kAggdistinctFieldNumber = 11, + kAggkindFieldNumber = 15, + kXprFieldNumber = 1, + kAggfilterFieldNumber = 12, + kAggfnoidFieldNumber = 2, + kAggtypeFieldNumber = 3, + kAggcollidFieldNumber = 4, + kInputcollidFieldNumber = 5, + kAggtranstypeFieldNumber = 6, + kAggstarFieldNumber = 13, + kAggvariadicFieldNumber = 14, + kAgglevelsupFieldNumber = 16, + kAggsplitFieldNumber = 17, + kLocationFieldNumber = 18, + }; + // repeated .pg_query.Node aggargtypes = 7 [json_name = "aggargtypes"]; + int aggargtypes_size() const; + private: + int _internal_aggargtypes_size() const; + public: + void clear_aggargtypes(); + ::pg_query::Node* mutable_aggargtypes(int index); + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* + mutable_aggargtypes(); + private: + const ::pg_query::Node& _internal_aggargtypes(int index) const; + ::pg_query::Node* _internal_add_aggargtypes(); + public: + const ::pg_query::Node& aggargtypes(int index) const; + ::pg_query::Node* add_aggargtypes(); + const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& + aggargtypes() const; + + // repeated .pg_query.Node aggdirectargs = 8 [json_name = "aggdirectargs"]; + int aggdirectargs_size() const; + private: + int _internal_aggdirectargs_size() const; + public: + void clear_aggdirectargs(); + ::pg_query::Node* mutable_aggdirectargs(int index); + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* + mutable_aggdirectargs(); + private: + const ::pg_query::Node& _internal_aggdirectargs(int index) const; + ::pg_query::Node* _internal_add_aggdirectargs(); + public: + const ::pg_query::Node& aggdirectargs(int index) const; + ::pg_query::Node* add_aggdirectargs(); + const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& + aggdirectargs() const; + + // repeated .pg_query.Node args = 9 [json_name = "args"]; + int args_size() const; + private: + int _internal_args_size() const; + public: + void clear_args(); + ::pg_query::Node* mutable_args(int index); + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* + mutable_args(); + private: + const ::pg_query::Node& _internal_args(int index) const; + ::pg_query::Node* _internal_add_args(); + public: + const ::pg_query::Node& args(int index) const; + ::pg_query::Node* add_args(); + const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& + args() const; + + // repeated .pg_query.Node aggorder = 10 [json_name = "aggorder"]; + int aggorder_size() const; + private: + int _internal_aggorder_size() const; + public: + void clear_aggorder(); + ::pg_query::Node* mutable_aggorder(int index); + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* + mutable_aggorder(); + private: + const ::pg_query::Node& _internal_aggorder(int index) const; + ::pg_query::Node* _internal_add_aggorder(); + public: + const ::pg_query::Node& aggorder(int index) const; + ::pg_query::Node* add_aggorder(); + const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& + aggorder() const; + + // repeated .pg_query.Node aggdistinct = 11 [json_name = "aggdistinct"]; + int aggdistinct_size() const; + private: + int _internal_aggdistinct_size() const; + public: + void clear_aggdistinct(); + ::pg_query::Node* mutable_aggdistinct(int index); + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* + mutable_aggdistinct(); + private: + const ::pg_query::Node& _internal_aggdistinct(int index) const; + ::pg_query::Node* _internal_add_aggdistinct(); + public: + const ::pg_query::Node& aggdistinct(int index) const; + ::pg_query::Node* add_aggdistinct(); + const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& + aggdistinct() const; + + // string aggkind = 15 [json_name = "aggkind"]; + void clear_aggkind(); + const std::string& aggkind() const; + void set_aggkind(const std::string& value); + void set_aggkind(std::string&& value); + void set_aggkind(const char* value); + void set_aggkind(const char* value, size_t size); + std::string* mutable_aggkind(); + std::string* release_aggkind(); + void set_allocated_aggkind(std::string* aggkind); + private: + const std::string& _internal_aggkind() const; + void _internal_set_aggkind(const std::string& value); + std::string* _internal_mutable_aggkind(); + public: + + // .pg_query.Node xpr = 1 [json_name = "xpr"]; + bool has_xpr() const; + private: + bool _internal_has_xpr() const; + public: + void clear_xpr(); + const ::pg_query::Node& xpr() const; + ::pg_query::Node* release_xpr(); + ::pg_query::Node* mutable_xpr(); + void set_allocated_xpr(::pg_query::Node* xpr); + private: + const ::pg_query::Node& _internal_xpr() const; + ::pg_query::Node* _internal_mutable_xpr(); + public: + void unsafe_arena_set_allocated_xpr( + ::pg_query::Node* xpr); + ::pg_query::Node* unsafe_arena_release_xpr(); + + // .pg_query.Node aggfilter = 12 [json_name = "aggfilter"]; + bool has_aggfilter() const; + private: + bool _internal_has_aggfilter() const; + public: + void clear_aggfilter(); + const ::pg_query::Node& aggfilter() const; + ::pg_query::Node* release_aggfilter(); + ::pg_query::Node* mutable_aggfilter(); + void set_allocated_aggfilter(::pg_query::Node* aggfilter); + private: + const ::pg_query::Node& _internal_aggfilter() const; + ::pg_query::Node* _internal_mutable_aggfilter(); + public: + void unsafe_arena_set_allocated_aggfilter( + ::pg_query::Node* aggfilter); + ::pg_query::Node* unsafe_arena_release_aggfilter(); + + // uint32 aggfnoid = 2 [json_name = "aggfnoid"]; + void clear_aggfnoid(); + ::PROTOBUF_NAMESPACE_ID::uint32 aggfnoid() const; + void set_aggfnoid(::PROTOBUF_NAMESPACE_ID::uint32 value); + private: + ::PROTOBUF_NAMESPACE_ID::uint32 _internal_aggfnoid() const; + void _internal_set_aggfnoid(::PROTOBUF_NAMESPACE_ID::uint32 value); + public: + + // uint32 aggtype = 3 [json_name = "aggtype"]; + void clear_aggtype(); + ::PROTOBUF_NAMESPACE_ID::uint32 aggtype() const; + void set_aggtype(::PROTOBUF_NAMESPACE_ID::uint32 value); + private: + ::PROTOBUF_NAMESPACE_ID::uint32 _internal_aggtype() const; + void _internal_set_aggtype(::PROTOBUF_NAMESPACE_ID::uint32 value); + public: + + // uint32 aggcollid = 4 [json_name = "aggcollid"]; + void clear_aggcollid(); + ::PROTOBUF_NAMESPACE_ID::uint32 aggcollid() const; + void set_aggcollid(::PROTOBUF_NAMESPACE_ID::uint32 value); + private: + ::PROTOBUF_NAMESPACE_ID::uint32 _internal_aggcollid() const; + void _internal_set_aggcollid(::PROTOBUF_NAMESPACE_ID::uint32 value); + public: + + // uint32 inputcollid = 5 [json_name = "inputcollid"]; + void clear_inputcollid(); + ::PROTOBUF_NAMESPACE_ID::uint32 inputcollid() const; + void set_inputcollid(::PROTOBUF_NAMESPACE_ID::uint32 value); + private: + ::PROTOBUF_NAMESPACE_ID::uint32 _internal_inputcollid() const; + void _internal_set_inputcollid(::PROTOBUF_NAMESPACE_ID::uint32 value); + public: + + // uint32 aggtranstype = 6 [json_name = "aggtranstype"]; + void clear_aggtranstype(); + ::PROTOBUF_NAMESPACE_ID::uint32 aggtranstype() const; + void set_aggtranstype(::PROTOBUF_NAMESPACE_ID::uint32 value); + private: + ::PROTOBUF_NAMESPACE_ID::uint32 _internal_aggtranstype() const; + void _internal_set_aggtranstype(::PROTOBUF_NAMESPACE_ID::uint32 value); + public: + + // bool aggstar = 13 [json_name = "aggstar"]; + void clear_aggstar(); + bool aggstar() const; + void set_aggstar(bool value); + private: + bool _internal_aggstar() const; + void _internal_set_aggstar(bool value); + public: + + // bool aggvariadic = 14 [json_name = "aggvariadic"]; + void clear_aggvariadic(); + bool aggvariadic() const; + void set_aggvariadic(bool value); + private: + bool _internal_aggvariadic() const; + void _internal_set_aggvariadic(bool value); + public: + + // uint32 agglevelsup = 16 [json_name = "agglevelsup"]; + void clear_agglevelsup(); + ::PROTOBUF_NAMESPACE_ID::uint32 agglevelsup() const; + void set_agglevelsup(::PROTOBUF_NAMESPACE_ID::uint32 value); + private: + ::PROTOBUF_NAMESPACE_ID::uint32 _internal_agglevelsup() const; + void _internal_set_agglevelsup(::PROTOBUF_NAMESPACE_ID::uint32 value); + public: + + // .pg_query.AggSplit aggsplit = 17 [json_name = "aggsplit"]; + void clear_aggsplit(); + ::pg_query::AggSplit aggsplit() const; + void set_aggsplit(::pg_query::AggSplit value); + private: + ::pg_query::AggSplit _internal_aggsplit() const; + void _internal_set_aggsplit(::pg_query::AggSplit value); + public: + + // int32 location = 18 [json_name = "location"]; + void clear_location(); + ::PROTOBUF_NAMESPACE_ID::int32 location() const; + void set_location(::PROTOBUF_NAMESPACE_ID::int32 value); + private: + ::PROTOBUF_NAMESPACE_ID::int32 _internal_location() const; + void _internal_set_location(::PROTOBUF_NAMESPACE_ID::int32 value); + public: + + // @@protoc_insertion_point(class_scope:pg_query.Aggref) + private: + class _Internal; + + template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; + typedef void InternalArenaConstructable_; + typedef void DestructorSkippable_; + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > aggargtypes_; + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > aggdirectargs_; + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > args_; + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > aggorder_; + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > aggdistinct_; + ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr aggkind_; + ::pg_query::Node* xpr_; + ::pg_query::Node* aggfilter_; + ::PROTOBUF_NAMESPACE_ID::uint32 aggfnoid_; + ::PROTOBUF_NAMESPACE_ID::uint32 aggtype_; + ::PROTOBUF_NAMESPACE_ID::uint32 aggcollid_; + ::PROTOBUF_NAMESPACE_ID::uint32 inputcollid_; + ::PROTOBUF_NAMESPACE_ID::uint32 aggtranstype_; + bool aggstar_; + bool aggvariadic_; + ::PROTOBUF_NAMESPACE_ID::uint32 agglevelsup_; + int aggsplit_; + ::PROTOBUF_NAMESPACE_ID::int32 location_; + mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; + friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; +}; +// ------------------------------------------------------------------- + +class GroupingFunc PROTOBUF_FINAL : + public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.GroupingFunc) */ { + public: + inline GroupingFunc() : GroupingFunc(nullptr) {} + virtual ~GroupingFunc(); + + GroupingFunc(const GroupingFunc& from); + GroupingFunc(GroupingFunc&& from) noexcept + : GroupingFunc() { + *this = ::std::move(from); + } + + inline GroupingFunc& operator=(const GroupingFunc& from) { + CopyFrom(from); + return *this; + } + inline GroupingFunc& operator=(GroupingFunc&& from) noexcept { + if (GetArena() == from.GetArena()) { + if (this != &from) InternalSwap(&from); + } else { + CopyFrom(from); + } + return *this; + } + + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { + return GetDescriptor(); + } + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { + return GetMetadataStatic().descriptor; + } + static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { + return GetMetadataStatic().reflection; + } + static const GroupingFunc& default_instance(); + + static inline const GroupingFunc* internal_default_instance() { + return reinterpret_cast( + &_GroupingFunc_default_instance_); + } + static constexpr int kIndexInFileMessages = + 19; + + friend void swap(GroupingFunc& a, GroupingFunc& b) { + a.Swap(&b); + } + inline void Swap(GroupingFunc* other) { + if (other == this) return; + if (GetArena() == other->GetArena()) { + InternalSwap(other); + } else { + ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); + } + } + void UnsafeArenaSwap(GroupingFunc* other) { + if (other == this) return; + GOOGLE_DCHECK(GetArena() == other->GetArena()); + InternalSwap(other); + } + + // implements Message ---------------------------------------------- + + inline GroupingFunc* New() const final { + return CreateMaybeMessage(nullptr); + } + + GroupingFunc* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { + return CreateMaybeMessage(arena); + } + void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void CopyFrom(const GroupingFunc& from); + void MergeFrom(const GroupingFunc& from); + PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; + bool IsInitialized() const final; + + size_t ByteSizeLong() const final; + const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; + ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( + ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; + int GetCachedSize() const final { return _cached_size_.Get(); } + + private: + inline void SharedCtor(); + inline void SharedDtor(); + void SetCachedSize(int size) const final; + void InternalSwap(GroupingFunc* other); + friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; + static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { + return "pg_query.GroupingFunc"; + } + protected: + explicit GroupingFunc(::PROTOBUF_NAMESPACE_ID::Arena* arena); + private: + static void ArenaDtor(void* object); + inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); + public: + + ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; + private: + static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { + ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); + return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; + } + + public: + + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + + enum : int { + kArgsFieldNumber = 2, + kRefsFieldNumber = 3, + kColsFieldNumber = 4, + kXprFieldNumber = 1, + kAgglevelsupFieldNumber = 5, + kLocationFieldNumber = 6, + }; + // repeated .pg_query.Node args = 2 [json_name = "args"]; + int args_size() const; + private: + int _internal_args_size() const; + public: + void clear_args(); + ::pg_query::Node* mutable_args(int index); + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* + mutable_args(); + private: + const ::pg_query::Node& _internal_args(int index) const; + ::pg_query::Node* _internal_add_args(); + public: + const ::pg_query::Node& args(int index) const; + ::pg_query::Node* add_args(); + const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& + args() const; + + // repeated .pg_query.Node refs = 3 [json_name = "refs"]; + int refs_size() const; + private: + int _internal_refs_size() const; + public: + void clear_refs(); + ::pg_query::Node* mutable_refs(int index); + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* + mutable_refs(); + private: + const ::pg_query::Node& _internal_refs(int index) const; + ::pg_query::Node* _internal_add_refs(); + public: + const ::pg_query::Node& refs(int index) const; + ::pg_query::Node* add_refs(); + const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& + refs() const; + + // repeated .pg_query.Node cols = 4 [json_name = "cols"]; + int cols_size() const; + private: + int _internal_cols_size() const; + public: + void clear_cols(); + ::pg_query::Node* mutable_cols(int index); + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* + mutable_cols(); + private: + const ::pg_query::Node& _internal_cols(int index) const; + ::pg_query::Node* _internal_add_cols(); + public: + const ::pg_query::Node& cols(int index) const; + ::pg_query::Node* add_cols(); + const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& + cols() const; + + // .pg_query.Node xpr = 1 [json_name = "xpr"]; + bool has_xpr() const; + private: + bool _internal_has_xpr() const; + public: + void clear_xpr(); + const ::pg_query::Node& xpr() const; + ::pg_query::Node* release_xpr(); + ::pg_query::Node* mutable_xpr(); + void set_allocated_xpr(::pg_query::Node* xpr); + private: + const ::pg_query::Node& _internal_xpr() const; + ::pg_query::Node* _internal_mutable_xpr(); + public: + void unsafe_arena_set_allocated_xpr( + ::pg_query::Node* xpr); + ::pg_query::Node* unsafe_arena_release_xpr(); + + // uint32 agglevelsup = 5 [json_name = "agglevelsup"]; + void clear_agglevelsup(); + ::PROTOBUF_NAMESPACE_ID::uint32 agglevelsup() const; + void set_agglevelsup(::PROTOBUF_NAMESPACE_ID::uint32 value); + private: + ::PROTOBUF_NAMESPACE_ID::uint32 _internal_agglevelsup() const; + void _internal_set_agglevelsup(::PROTOBUF_NAMESPACE_ID::uint32 value); + public: + + // int32 location = 6 [json_name = "location"]; + void clear_location(); + ::PROTOBUF_NAMESPACE_ID::int32 location() const; + void set_location(::PROTOBUF_NAMESPACE_ID::int32 value); + private: + ::PROTOBUF_NAMESPACE_ID::int32 _internal_location() const; + void _internal_set_location(::PROTOBUF_NAMESPACE_ID::int32 value); + public: + + // @@protoc_insertion_point(class_scope:pg_query.GroupingFunc) + private: + class _Internal; + + template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; + typedef void InternalArenaConstructable_; + typedef void DestructorSkippable_; + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > args_; + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > refs_; + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > cols_; + ::pg_query::Node* xpr_; + ::PROTOBUF_NAMESPACE_ID::uint32 agglevelsup_; + ::PROTOBUF_NAMESPACE_ID::int32 location_; + mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; + friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; +}; +// ------------------------------------------------------------------- + +class WindowFunc PROTOBUF_FINAL : + public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.WindowFunc) */ { + public: + inline WindowFunc() : WindowFunc(nullptr) {} + virtual ~WindowFunc(); + + WindowFunc(const WindowFunc& from); + WindowFunc(WindowFunc&& from) noexcept + : WindowFunc() { + *this = ::std::move(from); + } + + inline WindowFunc& operator=(const WindowFunc& from) { + CopyFrom(from); + return *this; + } + inline WindowFunc& operator=(WindowFunc&& from) noexcept { + if (GetArena() == from.GetArena()) { + if (this != &from) InternalSwap(&from); + } else { + CopyFrom(from); + } + return *this; + } + + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { + return GetDescriptor(); + } + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { + return GetMetadataStatic().descriptor; + } + static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { + return GetMetadataStatic().reflection; + } + static const WindowFunc& default_instance(); + + static inline const WindowFunc* internal_default_instance() { + return reinterpret_cast( + &_WindowFunc_default_instance_); + } + static constexpr int kIndexInFileMessages = + 20; + + friend void swap(WindowFunc& a, WindowFunc& b) { + a.Swap(&b); + } + inline void Swap(WindowFunc* other) { + if (other == this) return; + if (GetArena() == other->GetArena()) { + InternalSwap(other); + } else { + ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); + } + } + void UnsafeArenaSwap(WindowFunc* other) { + if (other == this) return; + GOOGLE_DCHECK(GetArena() == other->GetArena()); + InternalSwap(other); + } + + // implements Message ---------------------------------------------- + + inline WindowFunc* New() const final { + return CreateMaybeMessage(nullptr); + } + + WindowFunc* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { + return CreateMaybeMessage(arena); + } + void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void CopyFrom(const WindowFunc& from); + void MergeFrom(const WindowFunc& from); + PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; + bool IsInitialized() const final; + + size_t ByteSizeLong() const final; + const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; + ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( + ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; + int GetCachedSize() const final { return _cached_size_.Get(); } + + private: + inline void SharedCtor(); + inline void SharedDtor(); + void SetCachedSize(int size) const final; + void InternalSwap(WindowFunc* other); + friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; + static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { + return "pg_query.WindowFunc"; + } + protected: + explicit WindowFunc(::PROTOBUF_NAMESPACE_ID::Arena* arena); + private: + static void ArenaDtor(void* object); + inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); + public: + + ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; + private: + static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { + ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); + return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; + } + + public: + + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + + enum : int { + kArgsFieldNumber = 6, + kXprFieldNumber = 1, + kAggfilterFieldNumber = 7, + kWinfnoidFieldNumber = 2, + kWintypeFieldNumber = 3, + kWincollidFieldNumber = 4, + kInputcollidFieldNumber = 5, + kWinrefFieldNumber = 8, + kWinstarFieldNumber = 9, + kWinaggFieldNumber = 10, + kLocationFieldNumber = 11, + }; + // repeated .pg_query.Node args = 6 [json_name = "args"]; + int args_size() const; + private: + int _internal_args_size() const; + public: + void clear_args(); + ::pg_query::Node* mutable_args(int index); + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* + mutable_args(); + private: + const ::pg_query::Node& _internal_args(int index) const; + ::pg_query::Node* _internal_add_args(); + public: + const ::pg_query::Node& args(int index) const; + ::pg_query::Node* add_args(); + const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& + args() const; + + // .pg_query.Node xpr = 1 [json_name = "xpr"]; + bool has_xpr() const; + private: + bool _internal_has_xpr() const; + public: + void clear_xpr(); + const ::pg_query::Node& xpr() const; + ::pg_query::Node* release_xpr(); + ::pg_query::Node* mutable_xpr(); + void set_allocated_xpr(::pg_query::Node* xpr); + private: + const ::pg_query::Node& _internal_xpr() const; + ::pg_query::Node* _internal_mutable_xpr(); + public: + void unsafe_arena_set_allocated_xpr( + ::pg_query::Node* xpr); + ::pg_query::Node* unsafe_arena_release_xpr(); + + // .pg_query.Node aggfilter = 7 [json_name = "aggfilter"]; + bool has_aggfilter() const; + private: + bool _internal_has_aggfilter() const; + public: + void clear_aggfilter(); + const ::pg_query::Node& aggfilter() const; + ::pg_query::Node* release_aggfilter(); + ::pg_query::Node* mutable_aggfilter(); + void set_allocated_aggfilter(::pg_query::Node* aggfilter); + private: + const ::pg_query::Node& _internal_aggfilter() const; + ::pg_query::Node* _internal_mutable_aggfilter(); + public: + void unsafe_arena_set_allocated_aggfilter( + ::pg_query::Node* aggfilter); + ::pg_query::Node* unsafe_arena_release_aggfilter(); + + // uint32 winfnoid = 2 [json_name = "winfnoid"]; + void clear_winfnoid(); + ::PROTOBUF_NAMESPACE_ID::uint32 winfnoid() const; + void set_winfnoid(::PROTOBUF_NAMESPACE_ID::uint32 value); + private: + ::PROTOBUF_NAMESPACE_ID::uint32 _internal_winfnoid() const; + void _internal_set_winfnoid(::PROTOBUF_NAMESPACE_ID::uint32 value); + public: + + // uint32 wintype = 3 [json_name = "wintype"]; + void clear_wintype(); + ::PROTOBUF_NAMESPACE_ID::uint32 wintype() const; + void set_wintype(::PROTOBUF_NAMESPACE_ID::uint32 value); + private: + ::PROTOBUF_NAMESPACE_ID::uint32 _internal_wintype() const; + void _internal_set_wintype(::PROTOBUF_NAMESPACE_ID::uint32 value); + public: + + // uint32 wincollid = 4 [json_name = "wincollid"]; + void clear_wincollid(); + ::PROTOBUF_NAMESPACE_ID::uint32 wincollid() const; + void set_wincollid(::PROTOBUF_NAMESPACE_ID::uint32 value); + private: + ::PROTOBUF_NAMESPACE_ID::uint32 _internal_wincollid() const; + void _internal_set_wincollid(::PROTOBUF_NAMESPACE_ID::uint32 value); + public: + + // uint32 inputcollid = 5 [json_name = "inputcollid"]; + void clear_inputcollid(); + ::PROTOBUF_NAMESPACE_ID::uint32 inputcollid() const; + void set_inputcollid(::PROTOBUF_NAMESPACE_ID::uint32 value); + private: + ::PROTOBUF_NAMESPACE_ID::uint32 _internal_inputcollid() const; + void _internal_set_inputcollid(::PROTOBUF_NAMESPACE_ID::uint32 value); + public: + + // uint32 winref = 8 [json_name = "winref"]; + void clear_winref(); + ::PROTOBUF_NAMESPACE_ID::uint32 winref() const; + void set_winref(::PROTOBUF_NAMESPACE_ID::uint32 value); + private: + ::PROTOBUF_NAMESPACE_ID::uint32 _internal_winref() const; + void _internal_set_winref(::PROTOBUF_NAMESPACE_ID::uint32 value); + public: + + // bool winstar = 9 [json_name = "winstar"]; + void clear_winstar(); + bool winstar() const; + void set_winstar(bool value); + private: + bool _internal_winstar() const; + void _internal_set_winstar(bool value); + public: + + // bool winagg = 10 [json_name = "winagg"]; + void clear_winagg(); + bool winagg() const; + void set_winagg(bool value); + private: + bool _internal_winagg() const; + void _internal_set_winagg(bool value); + public: + + // int32 location = 11 [json_name = "location"]; + void clear_location(); + ::PROTOBUF_NAMESPACE_ID::int32 location() const; + void set_location(::PROTOBUF_NAMESPACE_ID::int32 value); + private: + ::PROTOBUF_NAMESPACE_ID::int32 _internal_location() const; + void _internal_set_location(::PROTOBUF_NAMESPACE_ID::int32 value); + public: + + // @@protoc_insertion_point(class_scope:pg_query.WindowFunc) + private: + class _Internal; + + template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; + typedef void InternalArenaConstructable_; + typedef void DestructorSkippable_; + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > args_; + ::pg_query::Node* xpr_; + ::pg_query::Node* aggfilter_; + ::PROTOBUF_NAMESPACE_ID::uint32 winfnoid_; + ::PROTOBUF_NAMESPACE_ID::uint32 wintype_; + ::PROTOBUF_NAMESPACE_ID::uint32 wincollid_; + ::PROTOBUF_NAMESPACE_ID::uint32 inputcollid_; + ::PROTOBUF_NAMESPACE_ID::uint32 winref_; + bool winstar_; + bool winagg_; + ::PROTOBUF_NAMESPACE_ID::int32 location_; + mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; + friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; +}; +// ------------------------------------------------------------------- + +class SubscriptingRef PROTOBUF_FINAL : + public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.SubscriptingRef) */ { + public: + inline SubscriptingRef() : SubscriptingRef(nullptr) {} + virtual ~SubscriptingRef(); + + SubscriptingRef(const SubscriptingRef& from); + SubscriptingRef(SubscriptingRef&& from) noexcept + : SubscriptingRef() { + *this = ::std::move(from); + } + + inline SubscriptingRef& operator=(const SubscriptingRef& from) { + CopyFrom(from); + return *this; + } + inline SubscriptingRef& operator=(SubscriptingRef&& from) noexcept { + if (GetArena() == from.GetArena()) { + if (this != &from) InternalSwap(&from); + } else { + CopyFrom(from); + } + return *this; + } + + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { + return GetDescriptor(); + } + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { + return GetMetadataStatic().descriptor; + } + static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { + return GetMetadataStatic().reflection; + } + static const SubscriptingRef& default_instance(); + + static inline const SubscriptingRef* internal_default_instance() { + return reinterpret_cast( + &_SubscriptingRef_default_instance_); + } + static constexpr int kIndexInFileMessages = + 21; + + friend void swap(SubscriptingRef& a, SubscriptingRef& b) { + a.Swap(&b); + } + inline void Swap(SubscriptingRef* other) { + if (other == this) return; + if (GetArena() == other->GetArena()) { + InternalSwap(other); + } else { + ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); + } + } + void UnsafeArenaSwap(SubscriptingRef* other) { + if (other == this) return; + GOOGLE_DCHECK(GetArena() == other->GetArena()); + InternalSwap(other); + } + + // implements Message ---------------------------------------------- + + inline SubscriptingRef* New() const final { + return CreateMaybeMessage(nullptr); + } + + SubscriptingRef* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { + return CreateMaybeMessage(arena); + } + void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void CopyFrom(const SubscriptingRef& from); + void MergeFrom(const SubscriptingRef& from); + PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; + bool IsInitialized() const final; + + size_t ByteSizeLong() const final; + const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; + ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( + ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; + int GetCachedSize() const final { return _cached_size_.Get(); } + + private: + inline void SharedCtor(); + inline void SharedDtor(); + void SetCachedSize(int size) const final; + void InternalSwap(SubscriptingRef* other); + friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; + static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { + return "pg_query.SubscriptingRef"; + } + protected: + explicit SubscriptingRef(::PROTOBUF_NAMESPACE_ID::Arena* arena); + private: + static void ArenaDtor(void* object); + inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); + public: + + ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; + private: + static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { + ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); + return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; + } + + public: + + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + + enum : int { + kRefupperindexprFieldNumber = 6, + kReflowerindexprFieldNumber = 7, + kXprFieldNumber = 1, + kRefexprFieldNumber = 8, + kRefassgnexprFieldNumber = 9, + kRefcontainertypeFieldNumber = 2, + kRefelemtypeFieldNumber = 3, + kReftypmodFieldNumber = 4, + kRefcollidFieldNumber = 5, + }; + // repeated .pg_query.Node refupperindexpr = 6 [json_name = "refupperindexpr"]; + int refupperindexpr_size() const; + private: + int _internal_refupperindexpr_size() const; + public: + void clear_refupperindexpr(); + ::pg_query::Node* mutable_refupperindexpr(int index); + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* + mutable_refupperindexpr(); + private: + const ::pg_query::Node& _internal_refupperindexpr(int index) const; + ::pg_query::Node* _internal_add_refupperindexpr(); + public: + const ::pg_query::Node& refupperindexpr(int index) const; + ::pg_query::Node* add_refupperindexpr(); + const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& + refupperindexpr() const; + + // repeated .pg_query.Node reflowerindexpr = 7 [json_name = "reflowerindexpr"]; + int reflowerindexpr_size() const; + private: + int _internal_reflowerindexpr_size() const; + public: + void clear_reflowerindexpr(); + ::pg_query::Node* mutable_reflowerindexpr(int index); + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* + mutable_reflowerindexpr(); + private: + const ::pg_query::Node& _internal_reflowerindexpr(int index) const; + ::pg_query::Node* _internal_add_reflowerindexpr(); + public: + const ::pg_query::Node& reflowerindexpr(int index) const; + ::pg_query::Node* add_reflowerindexpr(); + const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& + reflowerindexpr() const; + + // .pg_query.Node xpr = 1 [json_name = "xpr"]; + bool has_xpr() const; + private: + bool _internal_has_xpr() const; + public: + void clear_xpr(); + const ::pg_query::Node& xpr() const; + ::pg_query::Node* release_xpr(); + ::pg_query::Node* mutable_xpr(); + void set_allocated_xpr(::pg_query::Node* xpr); + private: + const ::pg_query::Node& _internal_xpr() const; + ::pg_query::Node* _internal_mutable_xpr(); + public: + void unsafe_arena_set_allocated_xpr( + ::pg_query::Node* xpr); + ::pg_query::Node* unsafe_arena_release_xpr(); + + // .pg_query.Node refexpr = 8 [json_name = "refexpr"]; + bool has_refexpr() const; + private: + bool _internal_has_refexpr() const; + public: + void clear_refexpr(); + const ::pg_query::Node& refexpr() const; + ::pg_query::Node* release_refexpr(); + ::pg_query::Node* mutable_refexpr(); + void set_allocated_refexpr(::pg_query::Node* refexpr); + private: + const ::pg_query::Node& _internal_refexpr() const; + ::pg_query::Node* _internal_mutable_refexpr(); + public: + void unsafe_arena_set_allocated_refexpr( + ::pg_query::Node* refexpr); + ::pg_query::Node* unsafe_arena_release_refexpr(); + + // .pg_query.Node refassgnexpr = 9 [json_name = "refassgnexpr"]; + bool has_refassgnexpr() const; + private: + bool _internal_has_refassgnexpr() const; + public: + void clear_refassgnexpr(); + const ::pg_query::Node& refassgnexpr() const; + ::pg_query::Node* release_refassgnexpr(); + ::pg_query::Node* mutable_refassgnexpr(); + void set_allocated_refassgnexpr(::pg_query::Node* refassgnexpr); + private: + const ::pg_query::Node& _internal_refassgnexpr() const; + ::pg_query::Node* _internal_mutable_refassgnexpr(); + public: + void unsafe_arena_set_allocated_refassgnexpr( + ::pg_query::Node* refassgnexpr); + ::pg_query::Node* unsafe_arena_release_refassgnexpr(); + + // uint32 refcontainertype = 2 [json_name = "refcontainertype"]; + void clear_refcontainertype(); + ::PROTOBUF_NAMESPACE_ID::uint32 refcontainertype() const; + void set_refcontainertype(::PROTOBUF_NAMESPACE_ID::uint32 value); + private: + ::PROTOBUF_NAMESPACE_ID::uint32 _internal_refcontainertype() const; + void _internal_set_refcontainertype(::PROTOBUF_NAMESPACE_ID::uint32 value); + public: + + // uint32 refelemtype = 3 [json_name = "refelemtype"]; + void clear_refelemtype(); + ::PROTOBUF_NAMESPACE_ID::uint32 refelemtype() const; + void set_refelemtype(::PROTOBUF_NAMESPACE_ID::uint32 value); + private: + ::PROTOBUF_NAMESPACE_ID::uint32 _internal_refelemtype() const; + void _internal_set_refelemtype(::PROTOBUF_NAMESPACE_ID::uint32 value); + public: + + // int32 reftypmod = 4 [json_name = "reftypmod"]; + void clear_reftypmod(); + ::PROTOBUF_NAMESPACE_ID::int32 reftypmod() const; + void set_reftypmod(::PROTOBUF_NAMESPACE_ID::int32 value); + private: + ::PROTOBUF_NAMESPACE_ID::int32 _internal_reftypmod() const; + void _internal_set_reftypmod(::PROTOBUF_NAMESPACE_ID::int32 value); + public: + + // uint32 refcollid = 5 [json_name = "refcollid"]; + void clear_refcollid(); + ::PROTOBUF_NAMESPACE_ID::uint32 refcollid() const; + void set_refcollid(::PROTOBUF_NAMESPACE_ID::uint32 value); + private: + ::PROTOBUF_NAMESPACE_ID::uint32 _internal_refcollid() const; + void _internal_set_refcollid(::PROTOBUF_NAMESPACE_ID::uint32 value); + public: + + // @@protoc_insertion_point(class_scope:pg_query.SubscriptingRef) + private: + class _Internal; + + template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; + typedef void InternalArenaConstructable_; + typedef void DestructorSkippable_; + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > refupperindexpr_; + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > reflowerindexpr_; + ::pg_query::Node* xpr_; + ::pg_query::Node* refexpr_; + ::pg_query::Node* refassgnexpr_; + ::PROTOBUF_NAMESPACE_ID::uint32 refcontainertype_; + ::PROTOBUF_NAMESPACE_ID::uint32 refelemtype_; + ::PROTOBUF_NAMESPACE_ID::int32 reftypmod_; + ::PROTOBUF_NAMESPACE_ID::uint32 refcollid_; + mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; + friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; +}; +// ------------------------------------------------------------------- + +class FuncExpr PROTOBUF_FINAL : + public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.FuncExpr) */ { + public: + inline FuncExpr() : FuncExpr(nullptr) {} + virtual ~FuncExpr(); + + FuncExpr(const FuncExpr& from); + FuncExpr(FuncExpr&& from) noexcept + : FuncExpr() { + *this = ::std::move(from); + } + + inline FuncExpr& operator=(const FuncExpr& from) { + CopyFrom(from); + return *this; + } + inline FuncExpr& operator=(FuncExpr&& from) noexcept { + if (GetArena() == from.GetArena()) { + if (this != &from) InternalSwap(&from); + } else { + CopyFrom(from); + } + return *this; + } + + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { + return GetDescriptor(); + } + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { + return GetMetadataStatic().descriptor; + } + static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { + return GetMetadataStatic().reflection; + } + static const FuncExpr& default_instance(); + + static inline const FuncExpr* internal_default_instance() { + return reinterpret_cast( + &_FuncExpr_default_instance_); + } + static constexpr int kIndexInFileMessages = + 22; + + friend void swap(FuncExpr& a, FuncExpr& b) { + a.Swap(&b); + } + inline void Swap(FuncExpr* other) { + if (other == this) return; + if (GetArena() == other->GetArena()) { + InternalSwap(other); + } else { + ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); + } + } + void UnsafeArenaSwap(FuncExpr* other) { + if (other == this) return; + GOOGLE_DCHECK(GetArena() == other->GetArena()); + InternalSwap(other); + } + + // implements Message ---------------------------------------------- + + inline FuncExpr* New() const final { + return CreateMaybeMessage(nullptr); + } + + FuncExpr* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { + return CreateMaybeMessage(arena); + } + void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void CopyFrom(const FuncExpr& from); + void MergeFrom(const FuncExpr& from); + PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; + bool IsInitialized() const final; + + size_t ByteSizeLong() const final; + const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; + ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( + ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; + int GetCachedSize() const final { return _cached_size_.Get(); } + + private: + inline void SharedCtor(); + inline void SharedDtor(); + void SetCachedSize(int size) const final; + void InternalSwap(FuncExpr* other); + friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; + static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { + return "pg_query.FuncExpr"; + } + protected: + explicit FuncExpr(::PROTOBUF_NAMESPACE_ID::Arena* arena); + private: + static void ArenaDtor(void* object); + inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); + public: + + ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; + private: + static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { + ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); + return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; + } + + public: + + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + + enum : int { + kArgsFieldNumber = 9, + kXprFieldNumber = 1, + kFuncidFieldNumber = 2, + kFuncresulttypeFieldNumber = 3, + kFuncretsetFieldNumber = 4, + kFuncvariadicFieldNumber = 5, + kFuncformatFieldNumber = 6, + kFunccollidFieldNumber = 7, + kInputcollidFieldNumber = 8, + kLocationFieldNumber = 10, + }; + // repeated .pg_query.Node args = 9 [json_name = "args"]; + int args_size() const; + private: + int _internal_args_size() const; + public: + void clear_args(); + ::pg_query::Node* mutable_args(int index); + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* + mutable_args(); + private: + const ::pg_query::Node& _internal_args(int index) const; + ::pg_query::Node* _internal_add_args(); + public: + const ::pg_query::Node& args(int index) const; + ::pg_query::Node* add_args(); + const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& + args() const; + + // .pg_query.Node xpr = 1 [json_name = "xpr"]; + bool has_xpr() const; + private: + bool _internal_has_xpr() const; + public: + void clear_xpr(); + const ::pg_query::Node& xpr() const; + ::pg_query::Node* release_xpr(); + ::pg_query::Node* mutable_xpr(); + void set_allocated_xpr(::pg_query::Node* xpr); + private: + const ::pg_query::Node& _internal_xpr() const; + ::pg_query::Node* _internal_mutable_xpr(); + public: + void unsafe_arena_set_allocated_xpr( + ::pg_query::Node* xpr); + ::pg_query::Node* unsafe_arena_release_xpr(); + + // uint32 funcid = 2 [json_name = "funcid"]; + void clear_funcid(); + ::PROTOBUF_NAMESPACE_ID::uint32 funcid() const; + void set_funcid(::PROTOBUF_NAMESPACE_ID::uint32 value); + private: + ::PROTOBUF_NAMESPACE_ID::uint32 _internal_funcid() const; + void _internal_set_funcid(::PROTOBUF_NAMESPACE_ID::uint32 value); + public: + + // uint32 funcresulttype = 3 [json_name = "funcresulttype"]; + void clear_funcresulttype(); + ::PROTOBUF_NAMESPACE_ID::uint32 funcresulttype() const; + void set_funcresulttype(::PROTOBUF_NAMESPACE_ID::uint32 value); + private: + ::PROTOBUF_NAMESPACE_ID::uint32 _internal_funcresulttype() const; + void _internal_set_funcresulttype(::PROTOBUF_NAMESPACE_ID::uint32 value); + public: + + // bool funcretset = 4 [json_name = "funcretset"]; + void clear_funcretset(); + bool funcretset() const; + void set_funcretset(bool value); + private: + bool _internal_funcretset() const; + void _internal_set_funcretset(bool value); + public: + + // bool funcvariadic = 5 [json_name = "funcvariadic"]; + void clear_funcvariadic(); + bool funcvariadic() const; + void set_funcvariadic(bool value); + private: + bool _internal_funcvariadic() const; + void _internal_set_funcvariadic(bool value); + public: + + // .pg_query.CoercionForm funcformat = 6 [json_name = "funcformat"]; + void clear_funcformat(); + ::pg_query::CoercionForm funcformat() const; + void set_funcformat(::pg_query::CoercionForm value); + private: + ::pg_query::CoercionForm _internal_funcformat() const; + void _internal_set_funcformat(::pg_query::CoercionForm value); + public: + + // uint32 funccollid = 7 [json_name = "funccollid"]; + void clear_funccollid(); + ::PROTOBUF_NAMESPACE_ID::uint32 funccollid() const; + void set_funccollid(::PROTOBUF_NAMESPACE_ID::uint32 value); + private: + ::PROTOBUF_NAMESPACE_ID::uint32 _internal_funccollid() const; + void _internal_set_funccollid(::PROTOBUF_NAMESPACE_ID::uint32 value); + public: + + // uint32 inputcollid = 8 [json_name = "inputcollid"]; + void clear_inputcollid(); + ::PROTOBUF_NAMESPACE_ID::uint32 inputcollid() const; + void set_inputcollid(::PROTOBUF_NAMESPACE_ID::uint32 value); + private: + ::PROTOBUF_NAMESPACE_ID::uint32 _internal_inputcollid() const; + void _internal_set_inputcollid(::PROTOBUF_NAMESPACE_ID::uint32 value); + public: + + // int32 location = 10 [json_name = "location"]; + void clear_location(); + ::PROTOBUF_NAMESPACE_ID::int32 location() const; + void set_location(::PROTOBUF_NAMESPACE_ID::int32 value); + private: + ::PROTOBUF_NAMESPACE_ID::int32 _internal_location() const; + void _internal_set_location(::PROTOBUF_NAMESPACE_ID::int32 value); + public: + + // @@protoc_insertion_point(class_scope:pg_query.FuncExpr) + private: + class _Internal; + + template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; + typedef void InternalArenaConstructable_; + typedef void DestructorSkippable_; + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > args_; + ::pg_query::Node* xpr_; + ::PROTOBUF_NAMESPACE_ID::uint32 funcid_; + ::PROTOBUF_NAMESPACE_ID::uint32 funcresulttype_; + bool funcretset_; + bool funcvariadic_; + int funcformat_; + ::PROTOBUF_NAMESPACE_ID::uint32 funccollid_; + ::PROTOBUF_NAMESPACE_ID::uint32 inputcollid_; + ::PROTOBUF_NAMESPACE_ID::int32 location_; + mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; + friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; +}; +// ------------------------------------------------------------------- + +class NamedArgExpr PROTOBUF_FINAL : + public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.NamedArgExpr) */ { + public: + inline NamedArgExpr() : NamedArgExpr(nullptr) {} + virtual ~NamedArgExpr(); + + NamedArgExpr(const NamedArgExpr& from); + NamedArgExpr(NamedArgExpr&& from) noexcept + : NamedArgExpr() { + *this = ::std::move(from); + } + + inline NamedArgExpr& operator=(const NamedArgExpr& from) { + CopyFrom(from); + return *this; + } + inline NamedArgExpr& operator=(NamedArgExpr&& from) noexcept { + if (GetArena() == from.GetArena()) { + if (this != &from) InternalSwap(&from); + } else { + CopyFrom(from); + } + return *this; + } + + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { + return GetDescriptor(); + } + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { + return GetMetadataStatic().descriptor; + } + static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { + return GetMetadataStatic().reflection; + } + static const NamedArgExpr& default_instance(); + + static inline const NamedArgExpr* internal_default_instance() { + return reinterpret_cast( + &_NamedArgExpr_default_instance_); + } + static constexpr int kIndexInFileMessages = + 23; + + friend void swap(NamedArgExpr& a, NamedArgExpr& b) { + a.Swap(&b); + } + inline void Swap(NamedArgExpr* other) { + if (other == this) return; + if (GetArena() == other->GetArena()) { + InternalSwap(other); + } else { + ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); + } + } + void UnsafeArenaSwap(NamedArgExpr* other) { + if (other == this) return; + GOOGLE_DCHECK(GetArena() == other->GetArena()); + InternalSwap(other); + } + + // implements Message ---------------------------------------------- + + inline NamedArgExpr* New() const final { + return CreateMaybeMessage(nullptr); + } + + NamedArgExpr* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { + return CreateMaybeMessage(arena); + } + void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void CopyFrom(const NamedArgExpr& from); + void MergeFrom(const NamedArgExpr& from); + PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; + bool IsInitialized() const final; + + size_t ByteSizeLong() const final; + const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; + ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( + ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; + int GetCachedSize() const final { return _cached_size_.Get(); } + + private: + inline void SharedCtor(); + inline void SharedDtor(); + void SetCachedSize(int size) const final; + void InternalSwap(NamedArgExpr* other); + friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; + static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { + return "pg_query.NamedArgExpr"; + } + protected: + explicit NamedArgExpr(::PROTOBUF_NAMESPACE_ID::Arena* arena); + private: + static void ArenaDtor(void* object); + inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); + public: + + ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; + private: + static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { + ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); + return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; + } + + public: + + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + + enum : int { + kNameFieldNumber = 3, + kXprFieldNumber = 1, + kArgFieldNumber = 2, + kArgnumberFieldNumber = 4, + kLocationFieldNumber = 5, + }; + // string name = 3 [json_name = "name"]; + void clear_name(); + const std::string& name() const; + void set_name(const std::string& value); + void set_name(std::string&& value); + void set_name(const char* value); + void set_name(const char* value, size_t size); + std::string* mutable_name(); + std::string* release_name(); + void set_allocated_name(std::string* name); + private: + const std::string& _internal_name() const; + void _internal_set_name(const std::string& value); + std::string* _internal_mutable_name(); + public: + + // .pg_query.Node xpr = 1 [json_name = "xpr"]; + bool has_xpr() const; + private: + bool _internal_has_xpr() const; + public: + void clear_xpr(); + const ::pg_query::Node& xpr() const; + ::pg_query::Node* release_xpr(); + ::pg_query::Node* mutable_xpr(); + void set_allocated_xpr(::pg_query::Node* xpr); + private: + const ::pg_query::Node& _internal_xpr() const; + ::pg_query::Node* _internal_mutable_xpr(); + public: + void unsafe_arena_set_allocated_xpr( + ::pg_query::Node* xpr); + ::pg_query::Node* unsafe_arena_release_xpr(); + + // .pg_query.Node arg = 2 [json_name = "arg"]; + bool has_arg() const; + private: + bool _internal_has_arg() const; + public: + void clear_arg(); + const ::pg_query::Node& arg() const; + ::pg_query::Node* release_arg(); + ::pg_query::Node* mutable_arg(); + void set_allocated_arg(::pg_query::Node* arg); + private: + const ::pg_query::Node& _internal_arg() const; + ::pg_query::Node* _internal_mutable_arg(); + public: + void unsafe_arena_set_allocated_arg( + ::pg_query::Node* arg); + ::pg_query::Node* unsafe_arena_release_arg(); + + // int32 argnumber = 4 [json_name = "argnumber"]; + void clear_argnumber(); + ::PROTOBUF_NAMESPACE_ID::int32 argnumber() const; + void set_argnumber(::PROTOBUF_NAMESPACE_ID::int32 value); + private: + ::PROTOBUF_NAMESPACE_ID::int32 _internal_argnumber() const; + void _internal_set_argnumber(::PROTOBUF_NAMESPACE_ID::int32 value); + public: + + // int32 location = 5 [json_name = "location"]; + void clear_location(); + ::PROTOBUF_NAMESPACE_ID::int32 location() const; + void set_location(::PROTOBUF_NAMESPACE_ID::int32 value); + private: + ::PROTOBUF_NAMESPACE_ID::int32 _internal_location() const; + void _internal_set_location(::PROTOBUF_NAMESPACE_ID::int32 value); + public: + + // @@protoc_insertion_point(class_scope:pg_query.NamedArgExpr) + private: + class _Internal; + + template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; + typedef void InternalArenaConstructable_; + typedef void DestructorSkippable_; + ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr name_; + ::pg_query::Node* xpr_; + ::pg_query::Node* arg_; + ::PROTOBUF_NAMESPACE_ID::int32 argnumber_; + ::PROTOBUF_NAMESPACE_ID::int32 location_; + mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; + friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; +}; +// ------------------------------------------------------------------- + +class OpExpr PROTOBUF_FINAL : + public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.OpExpr) */ { + public: + inline OpExpr() : OpExpr(nullptr) {} + virtual ~OpExpr(); + + OpExpr(const OpExpr& from); + OpExpr(OpExpr&& from) noexcept + : OpExpr() { + *this = ::std::move(from); + } + + inline OpExpr& operator=(const OpExpr& from) { + CopyFrom(from); + return *this; + } + inline OpExpr& operator=(OpExpr&& from) noexcept { + if (GetArena() == from.GetArena()) { + if (this != &from) InternalSwap(&from); + } else { + CopyFrom(from); + } + return *this; + } + + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { + return GetDescriptor(); + } + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { + return GetMetadataStatic().descriptor; + } + static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { + return GetMetadataStatic().reflection; + } + static const OpExpr& default_instance(); + + static inline const OpExpr* internal_default_instance() { + return reinterpret_cast( + &_OpExpr_default_instance_); + } + static constexpr int kIndexInFileMessages = + 24; + + friend void swap(OpExpr& a, OpExpr& b) { + a.Swap(&b); + } + inline void Swap(OpExpr* other) { + if (other == this) return; + if (GetArena() == other->GetArena()) { + InternalSwap(other); + } else { + ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); + } + } + void UnsafeArenaSwap(OpExpr* other) { + if (other == this) return; + GOOGLE_DCHECK(GetArena() == other->GetArena()); + InternalSwap(other); + } + + // implements Message ---------------------------------------------- + + inline OpExpr* New() const final { + return CreateMaybeMessage(nullptr); + } + + OpExpr* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { + return CreateMaybeMessage(arena); + } + void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void CopyFrom(const OpExpr& from); + void MergeFrom(const OpExpr& from); + PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; + bool IsInitialized() const final; + + size_t ByteSizeLong() const final; + const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; + ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( + ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; + int GetCachedSize() const final { return _cached_size_.Get(); } + + private: + inline void SharedCtor(); + inline void SharedDtor(); + void SetCachedSize(int size) const final; + void InternalSwap(OpExpr* other); + friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; + static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { + return "pg_query.OpExpr"; + } + protected: + explicit OpExpr(::PROTOBUF_NAMESPACE_ID::Arena* arena); + private: + static void ArenaDtor(void* object); + inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); + public: + + ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; + private: + static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { + ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); + return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; + } + + public: + + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + + enum : int { + kArgsFieldNumber = 8, + kXprFieldNumber = 1, + kOpnoFieldNumber = 2, + kOpfuncidFieldNumber = 3, + kOpresulttypeFieldNumber = 4, + kOpretsetFieldNumber = 5, + kOpcollidFieldNumber = 6, + kInputcollidFieldNumber = 7, + kLocationFieldNumber = 9, + }; + // repeated .pg_query.Node args = 8 [json_name = "args"]; + int args_size() const; + private: + int _internal_args_size() const; + public: + void clear_args(); + ::pg_query::Node* mutable_args(int index); + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* + mutable_args(); + private: + const ::pg_query::Node& _internal_args(int index) const; + ::pg_query::Node* _internal_add_args(); + public: + const ::pg_query::Node& args(int index) const; + ::pg_query::Node* add_args(); + const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& + args() const; + + // .pg_query.Node xpr = 1 [json_name = "xpr"]; + bool has_xpr() const; + private: + bool _internal_has_xpr() const; + public: + void clear_xpr(); + const ::pg_query::Node& xpr() const; + ::pg_query::Node* release_xpr(); + ::pg_query::Node* mutable_xpr(); + void set_allocated_xpr(::pg_query::Node* xpr); + private: + const ::pg_query::Node& _internal_xpr() const; + ::pg_query::Node* _internal_mutable_xpr(); + public: + void unsafe_arena_set_allocated_xpr( + ::pg_query::Node* xpr); + ::pg_query::Node* unsafe_arena_release_xpr(); + + // uint32 opno = 2 [json_name = "opno"]; + void clear_opno(); + ::PROTOBUF_NAMESPACE_ID::uint32 opno() const; + void set_opno(::PROTOBUF_NAMESPACE_ID::uint32 value); + private: + ::PROTOBUF_NAMESPACE_ID::uint32 _internal_opno() const; + void _internal_set_opno(::PROTOBUF_NAMESPACE_ID::uint32 value); + public: + + // uint32 opfuncid = 3 [json_name = "opfuncid"]; + void clear_opfuncid(); + ::PROTOBUF_NAMESPACE_ID::uint32 opfuncid() const; + void set_opfuncid(::PROTOBUF_NAMESPACE_ID::uint32 value); + private: + ::PROTOBUF_NAMESPACE_ID::uint32 _internal_opfuncid() const; + void _internal_set_opfuncid(::PROTOBUF_NAMESPACE_ID::uint32 value); + public: + + // uint32 opresulttype = 4 [json_name = "opresulttype"]; + void clear_opresulttype(); + ::PROTOBUF_NAMESPACE_ID::uint32 opresulttype() const; + void set_opresulttype(::PROTOBUF_NAMESPACE_ID::uint32 value); + private: + ::PROTOBUF_NAMESPACE_ID::uint32 _internal_opresulttype() const; + void _internal_set_opresulttype(::PROTOBUF_NAMESPACE_ID::uint32 value); + public: + + // bool opretset = 5 [json_name = "opretset"]; + void clear_opretset(); + bool opretset() const; + void set_opretset(bool value); + private: + bool _internal_opretset() const; + void _internal_set_opretset(bool value); + public: + + // uint32 opcollid = 6 [json_name = "opcollid"]; + void clear_opcollid(); + ::PROTOBUF_NAMESPACE_ID::uint32 opcollid() const; + void set_opcollid(::PROTOBUF_NAMESPACE_ID::uint32 value); + private: + ::PROTOBUF_NAMESPACE_ID::uint32 _internal_opcollid() const; + void _internal_set_opcollid(::PROTOBUF_NAMESPACE_ID::uint32 value); + public: + + // uint32 inputcollid = 7 [json_name = "inputcollid"]; + void clear_inputcollid(); + ::PROTOBUF_NAMESPACE_ID::uint32 inputcollid() const; + void set_inputcollid(::PROTOBUF_NAMESPACE_ID::uint32 value); + private: + ::PROTOBUF_NAMESPACE_ID::uint32 _internal_inputcollid() const; + void _internal_set_inputcollid(::PROTOBUF_NAMESPACE_ID::uint32 value); + public: + + // int32 location = 9 [json_name = "location"]; + void clear_location(); + ::PROTOBUF_NAMESPACE_ID::int32 location() const; + void set_location(::PROTOBUF_NAMESPACE_ID::int32 value); + private: + ::PROTOBUF_NAMESPACE_ID::int32 _internal_location() const; + void _internal_set_location(::PROTOBUF_NAMESPACE_ID::int32 value); + public: + + // @@protoc_insertion_point(class_scope:pg_query.OpExpr) + private: + class _Internal; + + template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; + typedef void InternalArenaConstructable_; + typedef void DestructorSkippable_; + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > args_; + ::pg_query::Node* xpr_; + ::PROTOBUF_NAMESPACE_ID::uint32 opno_; + ::PROTOBUF_NAMESPACE_ID::uint32 opfuncid_; + ::PROTOBUF_NAMESPACE_ID::uint32 opresulttype_; + bool opretset_; + ::PROTOBUF_NAMESPACE_ID::uint32 opcollid_; + ::PROTOBUF_NAMESPACE_ID::uint32 inputcollid_; + ::PROTOBUF_NAMESPACE_ID::int32 location_; + mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; + friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; +}; +// ------------------------------------------------------------------- + +class DistinctExpr PROTOBUF_FINAL : + public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.DistinctExpr) */ { + public: + inline DistinctExpr() : DistinctExpr(nullptr) {} + virtual ~DistinctExpr(); + + DistinctExpr(const DistinctExpr& from); + DistinctExpr(DistinctExpr&& from) noexcept + : DistinctExpr() { + *this = ::std::move(from); + } + + inline DistinctExpr& operator=(const DistinctExpr& from) { + CopyFrom(from); + return *this; + } + inline DistinctExpr& operator=(DistinctExpr&& from) noexcept { + if (GetArena() == from.GetArena()) { + if (this != &from) InternalSwap(&from); + } else { + CopyFrom(from); + } + return *this; + } + + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { + return GetDescriptor(); + } + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { + return GetMetadataStatic().descriptor; + } + static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { + return GetMetadataStatic().reflection; + } + static const DistinctExpr& default_instance(); + + static inline const DistinctExpr* internal_default_instance() { + return reinterpret_cast( + &_DistinctExpr_default_instance_); + } + static constexpr int kIndexInFileMessages = + 25; + + friend void swap(DistinctExpr& a, DistinctExpr& b) { + a.Swap(&b); + } + inline void Swap(DistinctExpr* other) { + if (other == this) return; + if (GetArena() == other->GetArena()) { + InternalSwap(other); + } else { + ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); + } + } + void UnsafeArenaSwap(DistinctExpr* other) { + if (other == this) return; + GOOGLE_DCHECK(GetArena() == other->GetArena()); + InternalSwap(other); + } + + // implements Message ---------------------------------------------- + + inline DistinctExpr* New() const final { + return CreateMaybeMessage(nullptr); + } + + DistinctExpr* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { + return CreateMaybeMessage(arena); + } + void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void CopyFrom(const DistinctExpr& from); + void MergeFrom(const DistinctExpr& from); + PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; + bool IsInitialized() const final; + + size_t ByteSizeLong() const final; + const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; + ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( + ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; + int GetCachedSize() const final { return _cached_size_.Get(); } + + private: + inline void SharedCtor(); + inline void SharedDtor(); + void SetCachedSize(int size) const final; + void InternalSwap(DistinctExpr* other); + friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; + static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { + return "pg_query.DistinctExpr"; + } + protected: + explicit DistinctExpr(::PROTOBUF_NAMESPACE_ID::Arena* arena); + private: + static void ArenaDtor(void* object); + inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); + public: + + ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; + private: + static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { + ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); + return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; + } + + public: + + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + + enum : int { + kArgsFieldNumber = 8, + kXprFieldNumber = 1, + kOpnoFieldNumber = 2, + kOpfuncidFieldNumber = 3, + kOpresulttypeFieldNumber = 4, + kOpretsetFieldNumber = 5, + kOpcollidFieldNumber = 6, + kInputcollidFieldNumber = 7, + kLocationFieldNumber = 9, + }; + // repeated .pg_query.Node args = 8 [json_name = "args"]; + int args_size() const; + private: + int _internal_args_size() const; + public: + void clear_args(); + ::pg_query::Node* mutable_args(int index); + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* + mutable_args(); + private: + const ::pg_query::Node& _internal_args(int index) const; + ::pg_query::Node* _internal_add_args(); + public: + const ::pg_query::Node& args(int index) const; + ::pg_query::Node* add_args(); + const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& + args() const; + + // .pg_query.Node xpr = 1 [json_name = "xpr"]; + bool has_xpr() const; + private: + bool _internal_has_xpr() const; + public: + void clear_xpr(); + const ::pg_query::Node& xpr() const; + ::pg_query::Node* release_xpr(); + ::pg_query::Node* mutable_xpr(); + void set_allocated_xpr(::pg_query::Node* xpr); + private: + const ::pg_query::Node& _internal_xpr() const; + ::pg_query::Node* _internal_mutable_xpr(); + public: + void unsafe_arena_set_allocated_xpr( + ::pg_query::Node* xpr); + ::pg_query::Node* unsafe_arena_release_xpr(); + + // uint32 opno = 2 [json_name = "opno"]; + void clear_opno(); + ::PROTOBUF_NAMESPACE_ID::uint32 opno() const; + void set_opno(::PROTOBUF_NAMESPACE_ID::uint32 value); + private: + ::PROTOBUF_NAMESPACE_ID::uint32 _internal_opno() const; + void _internal_set_opno(::PROTOBUF_NAMESPACE_ID::uint32 value); + public: + + // uint32 opfuncid = 3 [json_name = "opfuncid"]; + void clear_opfuncid(); + ::PROTOBUF_NAMESPACE_ID::uint32 opfuncid() const; + void set_opfuncid(::PROTOBUF_NAMESPACE_ID::uint32 value); + private: + ::PROTOBUF_NAMESPACE_ID::uint32 _internal_opfuncid() const; + void _internal_set_opfuncid(::PROTOBUF_NAMESPACE_ID::uint32 value); + public: + + // uint32 opresulttype = 4 [json_name = "opresulttype"]; + void clear_opresulttype(); + ::PROTOBUF_NAMESPACE_ID::uint32 opresulttype() const; + void set_opresulttype(::PROTOBUF_NAMESPACE_ID::uint32 value); + private: + ::PROTOBUF_NAMESPACE_ID::uint32 _internal_opresulttype() const; + void _internal_set_opresulttype(::PROTOBUF_NAMESPACE_ID::uint32 value); + public: + + // bool opretset = 5 [json_name = "opretset"]; + void clear_opretset(); + bool opretset() const; + void set_opretset(bool value); + private: + bool _internal_opretset() const; + void _internal_set_opretset(bool value); + public: + + // uint32 opcollid = 6 [json_name = "opcollid"]; + void clear_opcollid(); + ::PROTOBUF_NAMESPACE_ID::uint32 opcollid() const; + void set_opcollid(::PROTOBUF_NAMESPACE_ID::uint32 value); + private: + ::PROTOBUF_NAMESPACE_ID::uint32 _internal_opcollid() const; + void _internal_set_opcollid(::PROTOBUF_NAMESPACE_ID::uint32 value); + public: + + // uint32 inputcollid = 7 [json_name = "inputcollid"]; + void clear_inputcollid(); + ::PROTOBUF_NAMESPACE_ID::uint32 inputcollid() const; + void set_inputcollid(::PROTOBUF_NAMESPACE_ID::uint32 value); + private: + ::PROTOBUF_NAMESPACE_ID::uint32 _internal_inputcollid() const; + void _internal_set_inputcollid(::PROTOBUF_NAMESPACE_ID::uint32 value); + public: + + // int32 location = 9 [json_name = "location"]; + void clear_location(); + ::PROTOBUF_NAMESPACE_ID::int32 location() const; + void set_location(::PROTOBUF_NAMESPACE_ID::int32 value); + private: + ::PROTOBUF_NAMESPACE_ID::int32 _internal_location() const; + void _internal_set_location(::PROTOBUF_NAMESPACE_ID::int32 value); + public: + + // @@protoc_insertion_point(class_scope:pg_query.DistinctExpr) + private: + class _Internal; + + template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; + typedef void InternalArenaConstructable_; + typedef void DestructorSkippable_; + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > args_; + ::pg_query::Node* xpr_; + ::PROTOBUF_NAMESPACE_ID::uint32 opno_; + ::PROTOBUF_NAMESPACE_ID::uint32 opfuncid_; + ::PROTOBUF_NAMESPACE_ID::uint32 opresulttype_; + bool opretset_; + ::PROTOBUF_NAMESPACE_ID::uint32 opcollid_; + ::PROTOBUF_NAMESPACE_ID::uint32 inputcollid_; + ::PROTOBUF_NAMESPACE_ID::int32 location_; + mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; + friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; +}; +// ------------------------------------------------------------------- + +class NullIfExpr PROTOBUF_FINAL : + public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.NullIfExpr) */ { + public: + inline NullIfExpr() : NullIfExpr(nullptr) {} + virtual ~NullIfExpr(); + + NullIfExpr(const NullIfExpr& from); + NullIfExpr(NullIfExpr&& from) noexcept + : NullIfExpr() { + *this = ::std::move(from); + } + + inline NullIfExpr& operator=(const NullIfExpr& from) { + CopyFrom(from); + return *this; + } + inline NullIfExpr& operator=(NullIfExpr&& from) noexcept { + if (GetArena() == from.GetArena()) { + if (this != &from) InternalSwap(&from); + } else { + CopyFrom(from); + } + return *this; + } + + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { + return GetDescriptor(); + } + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { + return GetMetadataStatic().descriptor; + } + static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { + return GetMetadataStatic().reflection; + } + static const NullIfExpr& default_instance(); + + static inline const NullIfExpr* internal_default_instance() { + return reinterpret_cast( + &_NullIfExpr_default_instance_); + } + static constexpr int kIndexInFileMessages = + 26; + + friend void swap(NullIfExpr& a, NullIfExpr& b) { + a.Swap(&b); + } + inline void Swap(NullIfExpr* other) { + if (other == this) return; + if (GetArena() == other->GetArena()) { + InternalSwap(other); + } else { + ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); + } + } + void UnsafeArenaSwap(NullIfExpr* other) { + if (other == this) return; + GOOGLE_DCHECK(GetArena() == other->GetArena()); + InternalSwap(other); + } + + // implements Message ---------------------------------------------- + + inline NullIfExpr* New() const final { + return CreateMaybeMessage(nullptr); + } + + NullIfExpr* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { + return CreateMaybeMessage(arena); + } + void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void CopyFrom(const NullIfExpr& from); + void MergeFrom(const NullIfExpr& from); + PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; + bool IsInitialized() const final; + + size_t ByteSizeLong() const final; + const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; + ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( + ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; + int GetCachedSize() const final { return _cached_size_.Get(); } + + private: + inline void SharedCtor(); + inline void SharedDtor(); + void SetCachedSize(int size) const final; + void InternalSwap(NullIfExpr* other); + friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; + static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { + return "pg_query.NullIfExpr"; + } + protected: + explicit NullIfExpr(::PROTOBUF_NAMESPACE_ID::Arena* arena); + private: + static void ArenaDtor(void* object); + inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); + public: + + ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; + private: + static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { + ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); + return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; + } + + public: + + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + + enum : int { + kArgsFieldNumber = 8, + kXprFieldNumber = 1, + kOpnoFieldNumber = 2, + kOpfuncidFieldNumber = 3, + kOpresulttypeFieldNumber = 4, + kOpretsetFieldNumber = 5, + kOpcollidFieldNumber = 6, + kInputcollidFieldNumber = 7, + kLocationFieldNumber = 9, + }; + // repeated .pg_query.Node args = 8 [json_name = "args"]; + int args_size() const; + private: + int _internal_args_size() const; + public: + void clear_args(); + ::pg_query::Node* mutable_args(int index); + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* + mutable_args(); + private: + const ::pg_query::Node& _internal_args(int index) const; + ::pg_query::Node* _internal_add_args(); + public: + const ::pg_query::Node& args(int index) const; + ::pg_query::Node* add_args(); + const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& + args() const; + + // .pg_query.Node xpr = 1 [json_name = "xpr"]; + bool has_xpr() const; + private: + bool _internal_has_xpr() const; + public: + void clear_xpr(); + const ::pg_query::Node& xpr() const; + ::pg_query::Node* release_xpr(); + ::pg_query::Node* mutable_xpr(); + void set_allocated_xpr(::pg_query::Node* xpr); + private: + const ::pg_query::Node& _internal_xpr() const; + ::pg_query::Node* _internal_mutable_xpr(); + public: + void unsafe_arena_set_allocated_xpr( + ::pg_query::Node* xpr); + ::pg_query::Node* unsafe_arena_release_xpr(); + + // uint32 opno = 2 [json_name = "opno"]; + void clear_opno(); + ::PROTOBUF_NAMESPACE_ID::uint32 opno() const; + void set_opno(::PROTOBUF_NAMESPACE_ID::uint32 value); + private: + ::PROTOBUF_NAMESPACE_ID::uint32 _internal_opno() const; + void _internal_set_opno(::PROTOBUF_NAMESPACE_ID::uint32 value); + public: + + // uint32 opfuncid = 3 [json_name = "opfuncid"]; + void clear_opfuncid(); + ::PROTOBUF_NAMESPACE_ID::uint32 opfuncid() const; + void set_opfuncid(::PROTOBUF_NAMESPACE_ID::uint32 value); + private: + ::PROTOBUF_NAMESPACE_ID::uint32 _internal_opfuncid() const; + void _internal_set_opfuncid(::PROTOBUF_NAMESPACE_ID::uint32 value); + public: + + // uint32 opresulttype = 4 [json_name = "opresulttype"]; + void clear_opresulttype(); + ::PROTOBUF_NAMESPACE_ID::uint32 opresulttype() const; + void set_opresulttype(::PROTOBUF_NAMESPACE_ID::uint32 value); + private: + ::PROTOBUF_NAMESPACE_ID::uint32 _internal_opresulttype() const; + void _internal_set_opresulttype(::PROTOBUF_NAMESPACE_ID::uint32 value); + public: + + // bool opretset = 5 [json_name = "opretset"]; + void clear_opretset(); + bool opretset() const; + void set_opretset(bool value); + private: + bool _internal_opretset() const; + void _internal_set_opretset(bool value); + public: + + // uint32 opcollid = 6 [json_name = "opcollid"]; + void clear_opcollid(); + ::PROTOBUF_NAMESPACE_ID::uint32 opcollid() const; + void set_opcollid(::PROTOBUF_NAMESPACE_ID::uint32 value); + private: + ::PROTOBUF_NAMESPACE_ID::uint32 _internal_opcollid() const; + void _internal_set_opcollid(::PROTOBUF_NAMESPACE_ID::uint32 value); + public: + + // uint32 inputcollid = 7 [json_name = "inputcollid"]; + void clear_inputcollid(); + ::PROTOBUF_NAMESPACE_ID::uint32 inputcollid() const; + void set_inputcollid(::PROTOBUF_NAMESPACE_ID::uint32 value); + private: + ::PROTOBUF_NAMESPACE_ID::uint32 _internal_inputcollid() const; + void _internal_set_inputcollid(::PROTOBUF_NAMESPACE_ID::uint32 value); + public: + + // int32 location = 9 [json_name = "location"]; + void clear_location(); + ::PROTOBUF_NAMESPACE_ID::int32 location() const; + void set_location(::PROTOBUF_NAMESPACE_ID::int32 value); + private: + ::PROTOBUF_NAMESPACE_ID::int32 _internal_location() const; + void _internal_set_location(::PROTOBUF_NAMESPACE_ID::int32 value); + public: + + // @@protoc_insertion_point(class_scope:pg_query.NullIfExpr) + private: + class _Internal; + + template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; + typedef void InternalArenaConstructable_; + typedef void DestructorSkippable_; + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > args_; + ::pg_query::Node* xpr_; + ::PROTOBUF_NAMESPACE_ID::uint32 opno_; + ::PROTOBUF_NAMESPACE_ID::uint32 opfuncid_; + ::PROTOBUF_NAMESPACE_ID::uint32 opresulttype_; + bool opretset_; + ::PROTOBUF_NAMESPACE_ID::uint32 opcollid_; + ::PROTOBUF_NAMESPACE_ID::uint32 inputcollid_; + ::PROTOBUF_NAMESPACE_ID::int32 location_; + mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; + friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; +}; +// ------------------------------------------------------------------- + +class ScalarArrayOpExpr PROTOBUF_FINAL : + public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.ScalarArrayOpExpr) */ { + public: + inline ScalarArrayOpExpr() : ScalarArrayOpExpr(nullptr) {} + virtual ~ScalarArrayOpExpr(); + + ScalarArrayOpExpr(const ScalarArrayOpExpr& from); + ScalarArrayOpExpr(ScalarArrayOpExpr&& from) noexcept + : ScalarArrayOpExpr() { + *this = ::std::move(from); + } + + inline ScalarArrayOpExpr& operator=(const ScalarArrayOpExpr& from) { + CopyFrom(from); + return *this; + } + inline ScalarArrayOpExpr& operator=(ScalarArrayOpExpr&& from) noexcept { + if (GetArena() == from.GetArena()) { + if (this != &from) InternalSwap(&from); + } else { + CopyFrom(from); + } + return *this; + } + + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { + return GetDescriptor(); + } + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { + return GetMetadataStatic().descriptor; + } + static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { + return GetMetadataStatic().reflection; + } + static const ScalarArrayOpExpr& default_instance(); + + static inline const ScalarArrayOpExpr* internal_default_instance() { + return reinterpret_cast( + &_ScalarArrayOpExpr_default_instance_); + } + static constexpr int kIndexInFileMessages = + 27; + + friend void swap(ScalarArrayOpExpr& a, ScalarArrayOpExpr& b) { + a.Swap(&b); + } + inline void Swap(ScalarArrayOpExpr* other) { + if (other == this) return; + if (GetArena() == other->GetArena()) { + InternalSwap(other); + } else { + ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); + } + } + void UnsafeArenaSwap(ScalarArrayOpExpr* other) { + if (other == this) return; + GOOGLE_DCHECK(GetArena() == other->GetArena()); + InternalSwap(other); + } + + // implements Message ---------------------------------------------- + + inline ScalarArrayOpExpr* New() const final { + return CreateMaybeMessage(nullptr); + } + + ScalarArrayOpExpr* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { + return CreateMaybeMessage(arena); + } + void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void CopyFrom(const ScalarArrayOpExpr& from); + void MergeFrom(const ScalarArrayOpExpr& from); + PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; + bool IsInitialized() const final; + + size_t ByteSizeLong() const final; + const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; + ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( + ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; + int GetCachedSize() const final { return _cached_size_.Get(); } + + private: + inline void SharedCtor(); + inline void SharedDtor(); + void SetCachedSize(int size) const final; + void InternalSwap(ScalarArrayOpExpr* other); + friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; + static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { + return "pg_query.ScalarArrayOpExpr"; + } + protected: + explicit ScalarArrayOpExpr(::PROTOBUF_NAMESPACE_ID::Arena* arena); + private: + static void ArenaDtor(void* object); + inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); + public: + + ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; + private: + static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { + ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); + return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; + } + + public: + + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + + enum : int { + kArgsFieldNumber = 6, + kXprFieldNumber = 1, + kOpnoFieldNumber = 2, + kOpfuncidFieldNumber = 3, + kUseOrFieldNumber = 4, + kInputcollidFieldNumber = 5, + kLocationFieldNumber = 7, + }; + // repeated .pg_query.Node args = 6 [json_name = "args"]; + int args_size() const; + private: + int _internal_args_size() const; + public: + void clear_args(); + ::pg_query::Node* mutable_args(int index); + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* + mutable_args(); + private: + const ::pg_query::Node& _internal_args(int index) const; + ::pg_query::Node* _internal_add_args(); + public: + const ::pg_query::Node& args(int index) const; + ::pg_query::Node* add_args(); + const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& + args() const; + + // .pg_query.Node xpr = 1 [json_name = "xpr"]; + bool has_xpr() const; + private: + bool _internal_has_xpr() const; + public: + void clear_xpr(); + const ::pg_query::Node& xpr() const; + ::pg_query::Node* release_xpr(); + ::pg_query::Node* mutable_xpr(); + void set_allocated_xpr(::pg_query::Node* xpr); + private: + const ::pg_query::Node& _internal_xpr() const; + ::pg_query::Node* _internal_mutable_xpr(); + public: + void unsafe_arena_set_allocated_xpr( + ::pg_query::Node* xpr); + ::pg_query::Node* unsafe_arena_release_xpr(); + + // uint32 opno = 2 [json_name = "opno"]; + void clear_opno(); + ::PROTOBUF_NAMESPACE_ID::uint32 opno() const; + void set_opno(::PROTOBUF_NAMESPACE_ID::uint32 value); + private: + ::PROTOBUF_NAMESPACE_ID::uint32 _internal_opno() const; + void _internal_set_opno(::PROTOBUF_NAMESPACE_ID::uint32 value); + public: + + // uint32 opfuncid = 3 [json_name = "opfuncid"]; + void clear_opfuncid(); + ::PROTOBUF_NAMESPACE_ID::uint32 opfuncid() const; + void set_opfuncid(::PROTOBUF_NAMESPACE_ID::uint32 value); + private: + ::PROTOBUF_NAMESPACE_ID::uint32 _internal_opfuncid() const; + void _internal_set_opfuncid(::PROTOBUF_NAMESPACE_ID::uint32 value); + public: + + // bool use_or = 4 [json_name = "useOr"]; + void clear_use_or(); + bool use_or() const; + void set_use_or(bool value); + private: + bool _internal_use_or() const; + void _internal_set_use_or(bool value); + public: + + // uint32 inputcollid = 5 [json_name = "inputcollid"]; + void clear_inputcollid(); + ::PROTOBUF_NAMESPACE_ID::uint32 inputcollid() const; + void set_inputcollid(::PROTOBUF_NAMESPACE_ID::uint32 value); + private: + ::PROTOBUF_NAMESPACE_ID::uint32 _internal_inputcollid() const; + void _internal_set_inputcollid(::PROTOBUF_NAMESPACE_ID::uint32 value); + public: + + // int32 location = 7 [json_name = "location"]; + void clear_location(); + ::PROTOBUF_NAMESPACE_ID::int32 location() const; + void set_location(::PROTOBUF_NAMESPACE_ID::int32 value); + private: + ::PROTOBUF_NAMESPACE_ID::int32 _internal_location() const; + void _internal_set_location(::PROTOBUF_NAMESPACE_ID::int32 value); + public: + + // @@protoc_insertion_point(class_scope:pg_query.ScalarArrayOpExpr) + private: + class _Internal; + + template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; + typedef void InternalArenaConstructable_; + typedef void DestructorSkippable_; + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > args_; + ::pg_query::Node* xpr_; + ::PROTOBUF_NAMESPACE_ID::uint32 opno_; + ::PROTOBUF_NAMESPACE_ID::uint32 opfuncid_; + bool use_or_; + ::PROTOBUF_NAMESPACE_ID::uint32 inputcollid_; + ::PROTOBUF_NAMESPACE_ID::int32 location_; + mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; + friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; +}; +// ------------------------------------------------------------------- + +class BoolExpr PROTOBUF_FINAL : + public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.BoolExpr) */ { + public: + inline BoolExpr() : BoolExpr(nullptr) {} + virtual ~BoolExpr(); + + BoolExpr(const BoolExpr& from); + BoolExpr(BoolExpr&& from) noexcept + : BoolExpr() { + *this = ::std::move(from); + } + + inline BoolExpr& operator=(const BoolExpr& from) { + CopyFrom(from); + return *this; + } + inline BoolExpr& operator=(BoolExpr&& from) noexcept { + if (GetArena() == from.GetArena()) { + if (this != &from) InternalSwap(&from); + } else { + CopyFrom(from); + } + return *this; + } + + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { + return GetDescriptor(); + } + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { + return GetMetadataStatic().descriptor; + } + static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { + return GetMetadataStatic().reflection; + } + static const BoolExpr& default_instance(); + + static inline const BoolExpr* internal_default_instance() { + return reinterpret_cast( + &_BoolExpr_default_instance_); + } + static constexpr int kIndexInFileMessages = + 28; + + friend void swap(BoolExpr& a, BoolExpr& b) { + a.Swap(&b); + } + inline void Swap(BoolExpr* other) { + if (other == this) return; + if (GetArena() == other->GetArena()) { + InternalSwap(other); + } else { + ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); + } + } + void UnsafeArenaSwap(BoolExpr* other) { + if (other == this) return; + GOOGLE_DCHECK(GetArena() == other->GetArena()); + InternalSwap(other); + } + + // implements Message ---------------------------------------------- + + inline BoolExpr* New() const final { + return CreateMaybeMessage(nullptr); + } + + BoolExpr* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { + return CreateMaybeMessage(arena); + } + void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void CopyFrom(const BoolExpr& from); + void MergeFrom(const BoolExpr& from); + PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; + bool IsInitialized() const final; + + size_t ByteSizeLong() const final; + const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; + ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( + ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; + int GetCachedSize() const final { return _cached_size_.Get(); } + + private: + inline void SharedCtor(); + inline void SharedDtor(); + void SetCachedSize(int size) const final; + void InternalSwap(BoolExpr* other); + friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; + static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { + return "pg_query.BoolExpr"; + } + protected: + explicit BoolExpr(::PROTOBUF_NAMESPACE_ID::Arena* arena); + private: + static void ArenaDtor(void* object); + inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); + public: + + ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; + private: + static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { + ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); + return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; + } + + public: + + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + + enum : int { + kArgsFieldNumber = 3, + kXprFieldNumber = 1, + kBoolopFieldNumber = 2, + kLocationFieldNumber = 4, + }; + // repeated .pg_query.Node args = 3 [json_name = "args"]; + int args_size() const; + private: + int _internal_args_size() const; + public: + void clear_args(); + ::pg_query::Node* mutable_args(int index); + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* + mutable_args(); + private: + const ::pg_query::Node& _internal_args(int index) const; + ::pg_query::Node* _internal_add_args(); + public: + const ::pg_query::Node& args(int index) const; + ::pg_query::Node* add_args(); + const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& + args() const; + + // .pg_query.Node xpr = 1 [json_name = "xpr"]; + bool has_xpr() const; + private: + bool _internal_has_xpr() const; + public: + void clear_xpr(); + const ::pg_query::Node& xpr() const; + ::pg_query::Node* release_xpr(); + ::pg_query::Node* mutable_xpr(); + void set_allocated_xpr(::pg_query::Node* xpr); + private: + const ::pg_query::Node& _internal_xpr() const; + ::pg_query::Node* _internal_mutable_xpr(); + public: + void unsafe_arena_set_allocated_xpr( + ::pg_query::Node* xpr); + ::pg_query::Node* unsafe_arena_release_xpr(); + + // .pg_query.BoolExprType boolop = 2 [json_name = "boolop"]; + void clear_boolop(); + ::pg_query::BoolExprType boolop() const; + void set_boolop(::pg_query::BoolExprType value); + private: + ::pg_query::BoolExprType _internal_boolop() const; + void _internal_set_boolop(::pg_query::BoolExprType value); + public: + + // int32 location = 4 [json_name = "location"]; + void clear_location(); + ::PROTOBUF_NAMESPACE_ID::int32 location() const; + void set_location(::PROTOBUF_NAMESPACE_ID::int32 value); + private: + ::PROTOBUF_NAMESPACE_ID::int32 _internal_location() const; + void _internal_set_location(::PROTOBUF_NAMESPACE_ID::int32 value); + public: + + // @@protoc_insertion_point(class_scope:pg_query.BoolExpr) + private: + class _Internal; + + template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; + typedef void InternalArenaConstructable_; + typedef void DestructorSkippable_; + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > args_; + ::pg_query::Node* xpr_; + int boolop_; + ::PROTOBUF_NAMESPACE_ID::int32 location_; + mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; + friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; +}; +// ------------------------------------------------------------------- + +class SubLink PROTOBUF_FINAL : + public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.SubLink) */ { + public: + inline SubLink() : SubLink(nullptr) {} + virtual ~SubLink(); + + SubLink(const SubLink& from); + SubLink(SubLink&& from) noexcept + : SubLink() { + *this = ::std::move(from); + } + + inline SubLink& operator=(const SubLink& from) { + CopyFrom(from); + return *this; + } + inline SubLink& operator=(SubLink&& from) noexcept { + if (GetArena() == from.GetArena()) { + if (this != &from) InternalSwap(&from); + } else { + CopyFrom(from); + } + return *this; + } + + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { + return GetDescriptor(); + } + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { + return GetMetadataStatic().descriptor; + } + static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { + return GetMetadataStatic().reflection; + } + static const SubLink& default_instance(); + + static inline const SubLink* internal_default_instance() { + return reinterpret_cast( + &_SubLink_default_instance_); + } + static constexpr int kIndexInFileMessages = + 29; + + friend void swap(SubLink& a, SubLink& b) { + a.Swap(&b); + } + inline void Swap(SubLink* other) { + if (other == this) return; + if (GetArena() == other->GetArena()) { + InternalSwap(other); + } else { + ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); + } + } + void UnsafeArenaSwap(SubLink* other) { + if (other == this) return; + GOOGLE_DCHECK(GetArena() == other->GetArena()); + InternalSwap(other); + } + + // implements Message ---------------------------------------------- + + inline SubLink* New() const final { + return CreateMaybeMessage(nullptr); + } + + SubLink* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { + return CreateMaybeMessage(arena); + } + void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void CopyFrom(const SubLink& from); + void MergeFrom(const SubLink& from); + PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; + bool IsInitialized() const final; + + size_t ByteSizeLong() const final; + const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; + ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( + ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; + int GetCachedSize() const final { return _cached_size_.Get(); } + + private: + inline void SharedCtor(); + inline void SharedDtor(); + void SetCachedSize(int size) const final; + void InternalSwap(SubLink* other); + friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; + static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { + return "pg_query.SubLink"; + } + protected: + explicit SubLink(::PROTOBUF_NAMESPACE_ID::Arena* arena); + private: + static void ArenaDtor(void* object); + inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); + public: + + ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; + private: + static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { + ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); + return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; + } + + public: + + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + + enum : int { + kOperNameFieldNumber = 5, + kXprFieldNumber = 1, + kTestexprFieldNumber = 4, + kSubselectFieldNumber = 6, + kSubLinkTypeFieldNumber = 2, + kSubLinkIdFieldNumber = 3, + kLocationFieldNumber = 7, + }; + // repeated .pg_query.Node oper_name = 5 [json_name = "operName"]; + int oper_name_size() const; + private: + int _internal_oper_name_size() const; + public: + void clear_oper_name(); + ::pg_query::Node* mutable_oper_name(int index); + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* + mutable_oper_name(); + private: + const ::pg_query::Node& _internal_oper_name(int index) const; + ::pg_query::Node* _internal_add_oper_name(); + public: + const ::pg_query::Node& oper_name(int index) const; + ::pg_query::Node* add_oper_name(); + const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& + oper_name() const; + + // .pg_query.Node xpr = 1 [json_name = "xpr"]; + bool has_xpr() const; + private: + bool _internal_has_xpr() const; + public: + void clear_xpr(); + const ::pg_query::Node& xpr() const; + ::pg_query::Node* release_xpr(); + ::pg_query::Node* mutable_xpr(); + void set_allocated_xpr(::pg_query::Node* xpr); + private: + const ::pg_query::Node& _internal_xpr() const; + ::pg_query::Node* _internal_mutable_xpr(); + public: + void unsafe_arena_set_allocated_xpr( + ::pg_query::Node* xpr); + ::pg_query::Node* unsafe_arena_release_xpr(); + + // .pg_query.Node testexpr = 4 [json_name = "testexpr"]; + bool has_testexpr() const; + private: + bool _internal_has_testexpr() const; + public: + void clear_testexpr(); + const ::pg_query::Node& testexpr() const; + ::pg_query::Node* release_testexpr(); + ::pg_query::Node* mutable_testexpr(); + void set_allocated_testexpr(::pg_query::Node* testexpr); + private: + const ::pg_query::Node& _internal_testexpr() const; + ::pg_query::Node* _internal_mutable_testexpr(); + public: + void unsafe_arena_set_allocated_testexpr( + ::pg_query::Node* testexpr); + ::pg_query::Node* unsafe_arena_release_testexpr(); + + // .pg_query.Node subselect = 6 [json_name = "subselect"]; + bool has_subselect() const; + private: + bool _internal_has_subselect() const; + public: + void clear_subselect(); + const ::pg_query::Node& subselect() const; + ::pg_query::Node* release_subselect(); + ::pg_query::Node* mutable_subselect(); + void set_allocated_subselect(::pg_query::Node* subselect); + private: + const ::pg_query::Node& _internal_subselect() const; + ::pg_query::Node* _internal_mutable_subselect(); + public: + void unsafe_arena_set_allocated_subselect( + ::pg_query::Node* subselect); + ::pg_query::Node* unsafe_arena_release_subselect(); + + // .pg_query.SubLinkType sub_link_type = 2 [json_name = "subLinkType"]; + void clear_sub_link_type(); + ::pg_query::SubLinkType sub_link_type() const; + void set_sub_link_type(::pg_query::SubLinkType value); + private: + ::pg_query::SubLinkType _internal_sub_link_type() const; + void _internal_set_sub_link_type(::pg_query::SubLinkType value); + public: + + // int32 sub_link_id = 3 [json_name = "subLinkId"]; + void clear_sub_link_id(); + ::PROTOBUF_NAMESPACE_ID::int32 sub_link_id() const; + void set_sub_link_id(::PROTOBUF_NAMESPACE_ID::int32 value); + private: + ::PROTOBUF_NAMESPACE_ID::int32 _internal_sub_link_id() const; + void _internal_set_sub_link_id(::PROTOBUF_NAMESPACE_ID::int32 value); + public: + + // int32 location = 7 [json_name = "location"]; + void clear_location(); + ::PROTOBUF_NAMESPACE_ID::int32 location() const; + void set_location(::PROTOBUF_NAMESPACE_ID::int32 value); + private: + ::PROTOBUF_NAMESPACE_ID::int32 _internal_location() const; + void _internal_set_location(::PROTOBUF_NAMESPACE_ID::int32 value); + public: + + // @@protoc_insertion_point(class_scope:pg_query.SubLink) + private: + class _Internal; + + template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; + typedef void InternalArenaConstructable_; + typedef void DestructorSkippable_; + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > oper_name_; + ::pg_query::Node* xpr_; + ::pg_query::Node* testexpr_; + ::pg_query::Node* subselect_; + int sub_link_type_; + ::PROTOBUF_NAMESPACE_ID::int32 sub_link_id_; + ::PROTOBUF_NAMESPACE_ID::int32 location_; + mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; + friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; +}; +// ------------------------------------------------------------------- + +class SubPlan PROTOBUF_FINAL : + public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.SubPlan) */ { + public: + inline SubPlan() : SubPlan(nullptr) {} + virtual ~SubPlan(); + + SubPlan(const SubPlan& from); + SubPlan(SubPlan&& from) noexcept + : SubPlan() { + *this = ::std::move(from); + } + + inline SubPlan& operator=(const SubPlan& from) { + CopyFrom(from); + return *this; + } + inline SubPlan& operator=(SubPlan&& from) noexcept { + if (GetArena() == from.GetArena()) { + if (this != &from) InternalSwap(&from); + } else { + CopyFrom(from); + } + return *this; + } + + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { + return GetDescriptor(); + } + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { + return GetMetadataStatic().descriptor; + } + static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { + return GetMetadataStatic().reflection; + } + static const SubPlan& default_instance(); + + static inline const SubPlan* internal_default_instance() { + return reinterpret_cast( + &_SubPlan_default_instance_); + } + static constexpr int kIndexInFileMessages = + 30; + + friend void swap(SubPlan& a, SubPlan& b) { + a.Swap(&b); + } + inline void Swap(SubPlan* other) { + if (other == this) return; + if (GetArena() == other->GetArena()) { + InternalSwap(other); + } else { + ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); + } + } + void UnsafeArenaSwap(SubPlan* other) { + if (other == this) return; + GOOGLE_DCHECK(GetArena() == other->GetArena()); + InternalSwap(other); + } + + // implements Message ---------------------------------------------- + + inline SubPlan* New() const final { + return CreateMaybeMessage(nullptr); + } + + SubPlan* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { + return CreateMaybeMessage(arena); + } + void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void CopyFrom(const SubPlan& from); + void MergeFrom(const SubPlan& from); + PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; + bool IsInitialized() const final; + + size_t ByteSizeLong() const final; + const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; + ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( + ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; + int GetCachedSize() const final { return _cached_size_.Get(); } + + private: + inline void SharedCtor(); + inline void SharedDtor(); + void SetCachedSize(int size) const final; + void InternalSwap(SubPlan* other); + friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; + static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { + return "pg_query.SubPlan"; + } + protected: + explicit SubPlan(::PROTOBUF_NAMESPACE_ID::Arena* arena); + private: + static void ArenaDtor(void* object); + inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); + public: + + ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; + private: + static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { + ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); + return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; + } + + public: + + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + + enum : int { + kParamIdsFieldNumber = 4, + kSetParamFieldNumber = 13, + kParParamFieldNumber = 14, + kArgsFieldNumber = 15, + kPlanNameFieldNumber = 6, + kXprFieldNumber = 1, + kTestexprFieldNumber = 3, + kSubLinkTypeFieldNumber = 2, + kPlanIdFieldNumber = 5, + kFirstColTypeFieldNumber = 7, + kFirstColTypmodFieldNumber = 8, + kFirstColCollationFieldNumber = 9, + kUseHashTableFieldNumber = 10, + kUnknownEqFalseFieldNumber = 11, + kParallelSafeFieldNumber = 12, + kStartupCostFieldNumber = 16, + kPerCallCostFieldNumber = 17, + }; + // repeated .pg_query.Node param_ids = 4 [json_name = "paramIds"]; + int param_ids_size() const; + private: + int _internal_param_ids_size() const; + public: + void clear_param_ids(); + ::pg_query::Node* mutable_param_ids(int index); + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* + mutable_param_ids(); + private: + const ::pg_query::Node& _internal_param_ids(int index) const; + ::pg_query::Node* _internal_add_param_ids(); + public: + const ::pg_query::Node& param_ids(int index) const; + ::pg_query::Node* add_param_ids(); + const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& + param_ids() const; + + // repeated .pg_query.Node set_param = 13 [json_name = "setParam"]; + int set_param_size() const; + private: + int _internal_set_param_size() const; + public: + void clear_set_param(); + ::pg_query::Node* mutable_set_param(int index); + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* + mutable_set_param(); + private: + const ::pg_query::Node& _internal_set_param(int index) const; + ::pg_query::Node* _internal_add_set_param(); + public: + const ::pg_query::Node& set_param(int index) const; + ::pg_query::Node* add_set_param(); + const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& + set_param() const; + + // repeated .pg_query.Node par_param = 14 [json_name = "parParam"]; + int par_param_size() const; + private: + int _internal_par_param_size() const; + public: + void clear_par_param(); + ::pg_query::Node* mutable_par_param(int index); + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* + mutable_par_param(); + private: + const ::pg_query::Node& _internal_par_param(int index) const; + ::pg_query::Node* _internal_add_par_param(); + public: + const ::pg_query::Node& par_param(int index) const; + ::pg_query::Node* add_par_param(); + const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& + par_param() const; + + // repeated .pg_query.Node args = 15 [json_name = "args"]; + int args_size() const; + private: + int _internal_args_size() const; + public: + void clear_args(); + ::pg_query::Node* mutable_args(int index); + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* + mutable_args(); + private: + const ::pg_query::Node& _internal_args(int index) const; + ::pg_query::Node* _internal_add_args(); + public: + const ::pg_query::Node& args(int index) const; + ::pg_query::Node* add_args(); + const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& + args() const; + + // string plan_name = 6 [json_name = "plan_name"]; + void clear_plan_name(); + const std::string& plan_name() const; + void set_plan_name(const std::string& value); + void set_plan_name(std::string&& value); + void set_plan_name(const char* value); + void set_plan_name(const char* value, size_t size); + std::string* mutable_plan_name(); + std::string* release_plan_name(); + void set_allocated_plan_name(std::string* plan_name); + private: + const std::string& _internal_plan_name() const; + void _internal_set_plan_name(const std::string& value); + std::string* _internal_mutable_plan_name(); + public: + + // .pg_query.Node xpr = 1 [json_name = "xpr"]; + bool has_xpr() const; + private: + bool _internal_has_xpr() const; + public: + void clear_xpr(); + const ::pg_query::Node& xpr() const; + ::pg_query::Node* release_xpr(); + ::pg_query::Node* mutable_xpr(); + void set_allocated_xpr(::pg_query::Node* xpr); + private: + const ::pg_query::Node& _internal_xpr() const; + ::pg_query::Node* _internal_mutable_xpr(); + public: + void unsafe_arena_set_allocated_xpr( + ::pg_query::Node* xpr); + ::pg_query::Node* unsafe_arena_release_xpr(); + + // .pg_query.Node testexpr = 3 [json_name = "testexpr"]; + bool has_testexpr() const; + private: + bool _internal_has_testexpr() const; + public: + void clear_testexpr(); + const ::pg_query::Node& testexpr() const; + ::pg_query::Node* release_testexpr(); + ::pg_query::Node* mutable_testexpr(); + void set_allocated_testexpr(::pg_query::Node* testexpr); + private: + const ::pg_query::Node& _internal_testexpr() const; + ::pg_query::Node* _internal_mutable_testexpr(); + public: + void unsafe_arena_set_allocated_testexpr( + ::pg_query::Node* testexpr); + ::pg_query::Node* unsafe_arena_release_testexpr(); + + // .pg_query.SubLinkType sub_link_type = 2 [json_name = "subLinkType"]; + void clear_sub_link_type(); + ::pg_query::SubLinkType sub_link_type() const; + void set_sub_link_type(::pg_query::SubLinkType value); + private: + ::pg_query::SubLinkType _internal_sub_link_type() const; + void _internal_set_sub_link_type(::pg_query::SubLinkType value); + public: + + // int32 plan_id = 5 [json_name = "plan_id"]; + void clear_plan_id(); + ::PROTOBUF_NAMESPACE_ID::int32 plan_id() const; + void set_plan_id(::PROTOBUF_NAMESPACE_ID::int32 value); + private: + ::PROTOBUF_NAMESPACE_ID::int32 _internal_plan_id() const; + void _internal_set_plan_id(::PROTOBUF_NAMESPACE_ID::int32 value); + public: + + // uint32 first_col_type = 7 [json_name = "firstColType"]; + void clear_first_col_type(); + ::PROTOBUF_NAMESPACE_ID::uint32 first_col_type() const; + void set_first_col_type(::PROTOBUF_NAMESPACE_ID::uint32 value); + private: + ::PROTOBUF_NAMESPACE_ID::uint32 _internal_first_col_type() const; + void _internal_set_first_col_type(::PROTOBUF_NAMESPACE_ID::uint32 value); + public: + + // int32 first_col_typmod = 8 [json_name = "firstColTypmod"]; + void clear_first_col_typmod(); + ::PROTOBUF_NAMESPACE_ID::int32 first_col_typmod() const; + void set_first_col_typmod(::PROTOBUF_NAMESPACE_ID::int32 value); + private: + ::PROTOBUF_NAMESPACE_ID::int32 _internal_first_col_typmod() const; + void _internal_set_first_col_typmod(::PROTOBUF_NAMESPACE_ID::int32 value); + public: + + // uint32 first_col_collation = 9 [json_name = "firstColCollation"]; + void clear_first_col_collation(); + ::PROTOBUF_NAMESPACE_ID::uint32 first_col_collation() const; + void set_first_col_collation(::PROTOBUF_NAMESPACE_ID::uint32 value); + private: + ::PROTOBUF_NAMESPACE_ID::uint32 _internal_first_col_collation() const; + void _internal_set_first_col_collation(::PROTOBUF_NAMESPACE_ID::uint32 value); + public: + + // bool use_hash_table = 10 [json_name = "useHashTable"]; + void clear_use_hash_table(); + bool use_hash_table() const; + void set_use_hash_table(bool value); + private: + bool _internal_use_hash_table() const; + void _internal_set_use_hash_table(bool value); + public: + + // bool unknown_eq_false = 11 [json_name = "unknownEqFalse"]; + void clear_unknown_eq_false(); + bool unknown_eq_false() const; + void set_unknown_eq_false(bool value); + private: + bool _internal_unknown_eq_false() const; + void _internal_set_unknown_eq_false(bool value); + public: + + // bool parallel_safe = 12 [json_name = "parallel_safe"]; + void clear_parallel_safe(); + bool parallel_safe() const; + void set_parallel_safe(bool value); + private: + bool _internal_parallel_safe() const; + void _internal_set_parallel_safe(bool value); + public: + + // double startup_cost = 16 [json_name = "startup_cost"]; + void clear_startup_cost(); + double startup_cost() const; + void set_startup_cost(double value); + private: + double _internal_startup_cost() const; + void _internal_set_startup_cost(double value); + public: + + // double per_call_cost = 17 [json_name = "per_call_cost"]; + void clear_per_call_cost(); + double per_call_cost() const; + void set_per_call_cost(double value); + private: + double _internal_per_call_cost() const; + void _internal_set_per_call_cost(double value); + public: + + // @@protoc_insertion_point(class_scope:pg_query.SubPlan) + private: + class _Internal; + + template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; + typedef void InternalArenaConstructable_; + typedef void DestructorSkippable_; + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > param_ids_; + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > set_param_; + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > par_param_; + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > args_; + ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr plan_name_; + ::pg_query::Node* xpr_; + ::pg_query::Node* testexpr_; + int sub_link_type_; + ::PROTOBUF_NAMESPACE_ID::int32 plan_id_; + ::PROTOBUF_NAMESPACE_ID::uint32 first_col_type_; + ::PROTOBUF_NAMESPACE_ID::int32 first_col_typmod_; + ::PROTOBUF_NAMESPACE_ID::uint32 first_col_collation_; + bool use_hash_table_; + bool unknown_eq_false_; + bool parallel_safe_; + double startup_cost_; + double per_call_cost_; + mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; + friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; +}; +// ------------------------------------------------------------------- + +class AlternativeSubPlan PROTOBUF_FINAL : + public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.AlternativeSubPlan) */ { + public: + inline AlternativeSubPlan() : AlternativeSubPlan(nullptr) {} + virtual ~AlternativeSubPlan(); + + AlternativeSubPlan(const AlternativeSubPlan& from); + AlternativeSubPlan(AlternativeSubPlan&& from) noexcept + : AlternativeSubPlan() { + *this = ::std::move(from); + } + + inline AlternativeSubPlan& operator=(const AlternativeSubPlan& from) { + CopyFrom(from); + return *this; + } + inline AlternativeSubPlan& operator=(AlternativeSubPlan&& from) noexcept { + if (GetArena() == from.GetArena()) { + if (this != &from) InternalSwap(&from); + } else { + CopyFrom(from); + } + return *this; + } + + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { + return GetDescriptor(); + } + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { + return GetMetadataStatic().descriptor; + } + static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { + return GetMetadataStatic().reflection; + } + static const AlternativeSubPlan& default_instance(); + + static inline const AlternativeSubPlan* internal_default_instance() { + return reinterpret_cast( + &_AlternativeSubPlan_default_instance_); + } + static constexpr int kIndexInFileMessages = + 31; + + friend void swap(AlternativeSubPlan& a, AlternativeSubPlan& b) { + a.Swap(&b); + } + inline void Swap(AlternativeSubPlan* other) { + if (other == this) return; + if (GetArena() == other->GetArena()) { + InternalSwap(other); + } else { + ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); + } + } + void UnsafeArenaSwap(AlternativeSubPlan* other) { + if (other == this) return; + GOOGLE_DCHECK(GetArena() == other->GetArena()); + InternalSwap(other); + } + + // implements Message ---------------------------------------------- + + inline AlternativeSubPlan* New() const final { + return CreateMaybeMessage(nullptr); + } + + AlternativeSubPlan* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { + return CreateMaybeMessage(arena); + } + void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void CopyFrom(const AlternativeSubPlan& from); + void MergeFrom(const AlternativeSubPlan& from); + PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; + bool IsInitialized() const final; + + size_t ByteSizeLong() const final; + const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; + ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( + ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; + int GetCachedSize() const final { return _cached_size_.Get(); } + + private: + inline void SharedCtor(); + inline void SharedDtor(); + void SetCachedSize(int size) const final; + void InternalSwap(AlternativeSubPlan* other); + friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; + static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { + return "pg_query.AlternativeSubPlan"; + } + protected: + explicit AlternativeSubPlan(::PROTOBUF_NAMESPACE_ID::Arena* arena); + private: + static void ArenaDtor(void* object); + inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); + public: + + ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; + private: + static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { + ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); + return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; + } + + public: + + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + + enum : int { + kSubplansFieldNumber = 2, + kXprFieldNumber = 1, + }; + // repeated .pg_query.Node subplans = 2 [json_name = "subplans"]; + int subplans_size() const; + private: + int _internal_subplans_size() const; + public: + void clear_subplans(); + ::pg_query::Node* mutable_subplans(int index); + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* + mutable_subplans(); + private: + const ::pg_query::Node& _internal_subplans(int index) const; + ::pg_query::Node* _internal_add_subplans(); + public: + const ::pg_query::Node& subplans(int index) const; + ::pg_query::Node* add_subplans(); + const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& + subplans() const; + + // .pg_query.Node xpr = 1 [json_name = "xpr"]; + bool has_xpr() const; + private: + bool _internal_has_xpr() const; + public: + void clear_xpr(); + const ::pg_query::Node& xpr() const; + ::pg_query::Node* release_xpr(); + ::pg_query::Node* mutable_xpr(); + void set_allocated_xpr(::pg_query::Node* xpr); + private: + const ::pg_query::Node& _internal_xpr() const; + ::pg_query::Node* _internal_mutable_xpr(); + public: + void unsafe_arena_set_allocated_xpr( + ::pg_query::Node* xpr); + ::pg_query::Node* unsafe_arena_release_xpr(); + + // @@protoc_insertion_point(class_scope:pg_query.AlternativeSubPlan) + private: + class _Internal; + + template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; + typedef void InternalArenaConstructable_; + typedef void DestructorSkippable_; + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > subplans_; + ::pg_query::Node* xpr_; + mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; + friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; +}; +// ------------------------------------------------------------------- + +class FieldSelect PROTOBUF_FINAL : + public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.FieldSelect) */ { + public: + inline FieldSelect() : FieldSelect(nullptr) {} + virtual ~FieldSelect(); + + FieldSelect(const FieldSelect& from); + FieldSelect(FieldSelect&& from) noexcept + : FieldSelect() { + *this = ::std::move(from); + } + + inline FieldSelect& operator=(const FieldSelect& from) { + CopyFrom(from); + return *this; + } + inline FieldSelect& operator=(FieldSelect&& from) noexcept { + if (GetArena() == from.GetArena()) { + if (this != &from) InternalSwap(&from); + } else { + CopyFrom(from); + } + return *this; + } + + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { + return GetDescriptor(); + } + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { + return GetMetadataStatic().descriptor; + } + static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { + return GetMetadataStatic().reflection; + } + static const FieldSelect& default_instance(); + + static inline const FieldSelect* internal_default_instance() { + return reinterpret_cast( + &_FieldSelect_default_instance_); + } + static constexpr int kIndexInFileMessages = + 32; + + friend void swap(FieldSelect& a, FieldSelect& b) { + a.Swap(&b); + } + inline void Swap(FieldSelect* other) { + if (other == this) return; + if (GetArena() == other->GetArena()) { + InternalSwap(other); + } else { + ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); + } + } + void UnsafeArenaSwap(FieldSelect* other) { + if (other == this) return; + GOOGLE_DCHECK(GetArena() == other->GetArena()); + InternalSwap(other); + } + + // implements Message ---------------------------------------------- + + inline FieldSelect* New() const final { + return CreateMaybeMessage(nullptr); + } + + FieldSelect* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { + return CreateMaybeMessage(arena); + } + void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void CopyFrom(const FieldSelect& from); + void MergeFrom(const FieldSelect& from); + PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; + bool IsInitialized() const final; + + size_t ByteSizeLong() const final; + const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; + ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( + ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; + int GetCachedSize() const final { return _cached_size_.Get(); } + + private: + inline void SharedCtor(); + inline void SharedDtor(); + void SetCachedSize(int size) const final; + void InternalSwap(FieldSelect* other); + friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; + static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { + return "pg_query.FieldSelect"; + } + protected: + explicit FieldSelect(::PROTOBUF_NAMESPACE_ID::Arena* arena); + private: + static void ArenaDtor(void* object); + inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); + public: + + ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; + private: + static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { + ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); + return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; + } + + public: + + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + + enum : int { + kXprFieldNumber = 1, + kArgFieldNumber = 2, + kFieldnumFieldNumber = 3, + kResulttypeFieldNumber = 4, + kResulttypmodFieldNumber = 5, + kResultcollidFieldNumber = 6, + }; + // .pg_query.Node xpr = 1 [json_name = "xpr"]; + bool has_xpr() const; + private: + bool _internal_has_xpr() const; + public: + void clear_xpr(); + const ::pg_query::Node& xpr() const; + ::pg_query::Node* release_xpr(); + ::pg_query::Node* mutable_xpr(); + void set_allocated_xpr(::pg_query::Node* xpr); + private: + const ::pg_query::Node& _internal_xpr() const; + ::pg_query::Node* _internal_mutable_xpr(); + public: + void unsafe_arena_set_allocated_xpr( + ::pg_query::Node* xpr); + ::pg_query::Node* unsafe_arena_release_xpr(); + + // .pg_query.Node arg = 2 [json_name = "arg"]; + bool has_arg() const; + private: + bool _internal_has_arg() const; + public: + void clear_arg(); + const ::pg_query::Node& arg() const; + ::pg_query::Node* release_arg(); + ::pg_query::Node* mutable_arg(); + void set_allocated_arg(::pg_query::Node* arg); + private: + const ::pg_query::Node& _internal_arg() const; + ::pg_query::Node* _internal_mutable_arg(); + public: + void unsafe_arena_set_allocated_arg( + ::pg_query::Node* arg); + ::pg_query::Node* unsafe_arena_release_arg(); + + // int32 fieldnum = 3 [json_name = "fieldnum"]; + void clear_fieldnum(); + ::PROTOBUF_NAMESPACE_ID::int32 fieldnum() const; + void set_fieldnum(::PROTOBUF_NAMESPACE_ID::int32 value); + private: + ::PROTOBUF_NAMESPACE_ID::int32 _internal_fieldnum() const; + void _internal_set_fieldnum(::PROTOBUF_NAMESPACE_ID::int32 value); + public: + + // uint32 resulttype = 4 [json_name = "resulttype"]; + void clear_resulttype(); + ::PROTOBUF_NAMESPACE_ID::uint32 resulttype() const; + void set_resulttype(::PROTOBUF_NAMESPACE_ID::uint32 value); + private: + ::PROTOBUF_NAMESPACE_ID::uint32 _internal_resulttype() const; + void _internal_set_resulttype(::PROTOBUF_NAMESPACE_ID::uint32 value); + public: + + // int32 resulttypmod = 5 [json_name = "resulttypmod"]; + void clear_resulttypmod(); + ::PROTOBUF_NAMESPACE_ID::int32 resulttypmod() const; + void set_resulttypmod(::PROTOBUF_NAMESPACE_ID::int32 value); + private: + ::PROTOBUF_NAMESPACE_ID::int32 _internal_resulttypmod() const; + void _internal_set_resulttypmod(::PROTOBUF_NAMESPACE_ID::int32 value); + public: + + // uint32 resultcollid = 6 [json_name = "resultcollid"]; + void clear_resultcollid(); + ::PROTOBUF_NAMESPACE_ID::uint32 resultcollid() const; + void set_resultcollid(::PROTOBUF_NAMESPACE_ID::uint32 value); + private: + ::PROTOBUF_NAMESPACE_ID::uint32 _internal_resultcollid() const; + void _internal_set_resultcollid(::PROTOBUF_NAMESPACE_ID::uint32 value); + public: + + // @@protoc_insertion_point(class_scope:pg_query.FieldSelect) + private: + class _Internal; + + template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; + typedef void InternalArenaConstructable_; + typedef void DestructorSkippable_; + ::pg_query::Node* xpr_; + ::pg_query::Node* arg_; + ::PROTOBUF_NAMESPACE_ID::int32 fieldnum_; + ::PROTOBUF_NAMESPACE_ID::uint32 resulttype_; + ::PROTOBUF_NAMESPACE_ID::int32 resulttypmod_; + ::PROTOBUF_NAMESPACE_ID::uint32 resultcollid_; + mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; + friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; +}; +// ------------------------------------------------------------------- + +class FieldStore PROTOBUF_FINAL : + public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.FieldStore) */ { + public: + inline FieldStore() : FieldStore(nullptr) {} + virtual ~FieldStore(); + + FieldStore(const FieldStore& from); + FieldStore(FieldStore&& from) noexcept + : FieldStore() { + *this = ::std::move(from); + } + + inline FieldStore& operator=(const FieldStore& from) { + CopyFrom(from); + return *this; + } + inline FieldStore& operator=(FieldStore&& from) noexcept { + if (GetArena() == from.GetArena()) { + if (this != &from) InternalSwap(&from); + } else { + CopyFrom(from); + } + return *this; + } + + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { + return GetDescriptor(); + } + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { + return GetMetadataStatic().descriptor; + } + static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { + return GetMetadataStatic().reflection; + } + static const FieldStore& default_instance(); + + static inline const FieldStore* internal_default_instance() { + return reinterpret_cast( + &_FieldStore_default_instance_); + } + static constexpr int kIndexInFileMessages = + 33; + + friend void swap(FieldStore& a, FieldStore& b) { + a.Swap(&b); + } + inline void Swap(FieldStore* other) { + if (other == this) return; + if (GetArena() == other->GetArena()) { + InternalSwap(other); + } else { + ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); + } + } + void UnsafeArenaSwap(FieldStore* other) { + if (other == this) return; + GOOGLE_DCHECK(GetArena() == other->GetArena()); + InternalSwap(other); + } + + // implements Message ---------------------------------------------- + + inline FieldStore* New() const final { + return CreateMaybeMessage(nullptr); + } + + FieldStore* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { + return CreateMaybeMessage(arena); + } + void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void CopyFrom(const FieldStore& from); + void MergeFrom(const FieldStore& from); + PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; + bool IsInitialized() const final; + + size_t ByteSizeLong() const final; + const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; + ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( + ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; + int GetCachedSize() const final { return _cached_size_.Get(); } + + private: + inline void SharedCtor(); + inline void SharedDtor(); + void SetCachedSize(int size) const final; + void InternalSwap(FieldStore* other); + friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; + static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { + return "pg_query.FieldStore"; + } + protected: + explicit FieldStore(::PROTOBUF_NAMESPACE_ID::Arena* arena); + private: + static void ArenaDtor(void* object); + inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); + public: + + ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; + private: + static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { + ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); + return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; + } + + public: + + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + + enum : int { + kNewvalsFieldNumber = 3, + kFieldnumsFieldNumber = 4, + kXprFieldNumber = 1, + kArgFieldNumber = 2, + kResulttypeFieldNumber = 5, + }; + // repeated .pg_query.Node newvals = 3 [json_name = "newvals"]; + int newvals_size() const; + private: + int _internal_newvals_size() const; + public: + void clear_newvals(); + ::pg_query::Node* mutable_newvals(int index); + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* + mutable_newvals(); + private: + const ::pg_query::Node& _internal_newvals(int index) const; + ::pg_query::Node* _internal_add_newvals(); + public: + const ::pg_query::Node& newvals(int index) const; + ::pg_query::Node* add_newvals(); + const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& + newvals() const; + + // repeated .pg_query.Node fieldnums = 4 [json_name = "fieldnums"]; + int fieldnums_size() const; + private: + int _internal_fieldnums_size() const; + public: + void clear_fieldnums(); + ::pg_query::Node* mutable_fieldnums(int index); + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* + mutable_fieldnums(); + private: + const ::pg_query::Node& _internal_fieldnums(int index) const; + ::pg_query::Node* _internal_add_fieldnums(); + public: + const ::pg_query::Node& fieldnums(int index) const; + ::pg_query::Node* add_fieldnums(); + const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& + fieldnums() const; + + // .pg_query.Node xpr = 1 [json_name = "xpr"]; + bool has_xpr() const; + private: + bool _internal_has_xpr() const; + public: + void clear_xpr(); + const ::pg_query::Node& xpr() const; + ::pg_query::Node* release_xpr(); + ::pg_query::Node* mutable_xpr(); + void set_allocated_xpr(::pg_query::Node* xpr); + private: + const ::pg_query::Node& _internal_xpr() const; + ::pg_query::Node* _internal_mutable_xpr(); + public: + void unsafe_arena_set_allocated_xpr( + ::pg_query::Node* xpr); + ::pg_query::Node* unsafe_arena_release_xpr(); + + // .pg_query.Node arg = 2 [json_name = "arg"]; + bool has_arg() const; + private: + bool _internal_has_arg() const; + public: + void clear_arg(); + const ::pg_query::Node& arg() const; + ::pg_query::Node* release_arg(); + ::pg_query::Node* mutable_arg(); + void set_allocated_arg(::pg_query::Node* arg); + private: + const ::pg_query::Node& _internal_arg() const; + ::pg_query::Node* _internal_mutable_arg(); + public: + void unsafe_arena_set_allocated_arg( + ::pg_query::Node* arg); + ::pg_query::Node* unsafe_arena_release_arg(); + + // uint32 resulttype = 5 [json_name = "resulttype"]; + void clear_resulttype(); + ::PROTOBUF_NAMESPACE_ID::uint32 resulttype() const; + void set_resulttype(::PROTOBUF_NAMESPACE_ID::uint32 value); + private: + ::PROTOBUF_NAMESPACE_ID::uint32 _internal_resulttype() const; + void _internal_set_resulttype(::PROTOBUF_NAMESPACE_ID::uint32 value); + public: + + // @@protoc_insertion_point(class_scope:pg_query.FieldStore) + private: + class _Internal; + + template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; + typedef void InternalArenaConstructable_; + typedef void DestructorSkippable_; + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > newvals_; + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > fieldnums_; + ::pg_query::Node* xpr_; + ::pg_query::Node* arg_; + ::PROTOBUF_NAMESPACE_ID::uint32 resulttype_; + mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; + friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; +}; +// ------------------------------------------------------------------- + +class RelabelType PROTOBUF_FINAL : + public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.RelabelType) */ { + public: + inline RelabelType() : RelabelType(nullptr) {} + virtual ~RelabelType(); + + RelabelType(const RelabelType& from); + RelabelType(RelabelType&& from) noexcept + : RelabelType() { + *this = ::std::move(from); + } + + inline RelabelType& operator=(const RelabelType& from) { + CopyFrom(from); + return *this; + } + inline RelabelType& operator=(RelabelType&& from) noexcept { + if (GetArena() == from.GetArena()) { + if (this != &from) InternalSwap(&from); + } else { + CopyFrom(from); + } + return *this; + } + + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { + return GetDescriptor(); + } + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { + return GetMetadataStatic().descriptor; + } + static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { + return GetMetadataStatic().reflection; + } + static const RelabelType& default_instance(); + + static inline const RelabelType* internal_default_instance() { + return reinterpret_cast( + &_RelabelType_default_instance_); + } + static constexpr int kIndexInFileMessages = + 34; + + friend void swap(RelabelType& a, RelabelType& b) { + a.Swap(&b); + } + inline void Swap(RelabelType* other) { + if (other == this) return; + if (GetArena() == other->GetArena()) { + InternalSwap(other); + } else { + ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); + } + } + void UnsafeArenaSwap(RelabelType* other) { + if (other == this) return; + GOOGLE_DCHECK(GetArena() == other->GetArena()); + InternalSwap(other); + } + + // implements Message ---------------------------------------------- + + inline RelabelType* New() const final { + return CreateMaybeMessage(nullptr); + } + + RelabelType* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { + return CreateMaybeMessage(arena); + } + void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void CopyFrom(const RelabelType& from); + void MergeFrom(const RelabelType& from); + PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; + bool IsInitialized() const final; + + size_t ByteSizeLong() const final; + const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; + ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( + ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; + int GetCachedSize() const final { return _cached_size_.Get(); } + + private: + inline void SharedCtor(); + inline void SharedDtor(); + void SetCachedSize(int size) const final; + void InternalSwap(RelabelType* other); + friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; + static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { + return "pg_query.RelabelType"; + } + protected: + explicit RelabelType(::PROTOBUF_NAMESPACE_ID::Arena* arena); + private: + static void ArenaDtor(void* object); + inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); + public: + + ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; + private: + static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { + ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); + return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; + } + + public: + + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + + enum : int { + kXprFieldNumber = 1, + kArgFieldNumber = 2, + kResulttypeFieldNumber = 3, + kResulttypmodFieldNumber = 4, + kResultcollidFieldNumber = 5, + kRelabelformatFieldNumber = 6, + kLocationFieldNumber = 7, + }; + // .pg_query.Node xpr = 1 [json_name = "xpr"]; + bool has_xpr() const; + private: + bool _internal_has_xpr() const; + public: + void clear_xpr(); + const ::pg_query::Node& xpr() const; + ::pg_query::Node* release_xpr(); + ::pg_query::Node* mutable_xpr(); + void set_allocated_xpr(::pg_query::Node* xpr); + private: + const ::pg_query::Node& _internal_xpr() const; + ::pg_query::Node* _internal_mutable_xpr(); + public: + void unsafe_arena_set_allocated_xpr( + ::pg_query::Node* xpr); + ::pg_query::Node* unsafe_arena_release_xpr(); + + // .pg_query.Node arg = 2 [json_name = "arg"]; + bool has_arg() const; + private: + bool _internal_has_arg() const; + public: + void clear_arg(); + const ::pg_query::Node& arg() const; + ::pg_query::Node* release_arg(); + ::pg_query::Node* mutable_arg(); + void set_allocated_arg(::pg_query::Node* arg); + private: + const ::pg_query::Node& _internal_arg() const; + ::pg_query::Node* _internal_mutable_arg(); + public: + void unsafe_arena_set_allocated_arg( + ::pg_query::Node* arg); + ::pg_query::Node* unsafe_arena_release_arg(); + + // uint32 resulttype = 3 [json_name = "resulttype"]; + void clear_resulttype(); + ::PROTOBUF_NAMESPACE_ID::uint32 resulttype() const; + void set_resulttype(::PROTOBUF_NAMESPACE_ID::uint32 value); + private: + ::PROTOBUF_NAMESPACE_ID::uint32 _internal_resulttype() const; + void _internal_set_resulttype(::PROTOBUF_NAMESPACE_ID::uint32 value); + public: + + // int32 resulttypmod = 4 [json_name = "resulttypmod"]; + void clear_resulttypmod(); + ::PROTOBUF_NAMESPACE_ID::int32 resulttypmod() const; + void set_resulttypmod(::PROTOBUF_NAMESPACE_ID::int32 value); + private: + ::PROTOBUF_NAMESPACE_ID::int32 _internal_resulttypmod() const; + void _internal_set_resulttypmod(::PROTOBUF_NAMESPACE_ID::int32 value); + public: + + // uint32 resultcollid = 5 [json_name = "resultcollid"]; + void clear_resultcollid(); + ::PROTOBUF_NAMESPACE_ID::uint32 resultcollid() const; + void set_resultcollid(::PROTOBUF_NAMESPACE_ID::uint32 value); + private: + ::PROTOBUF_NAMESPACE_ID::uint32 _internal_resultcollid() const; + void _internal_set_resultcollid(::PROTOBUF_NAMESPACE_ID::uint32 value); + public: + + // .pg_query.CoercionForm relabelformat = 6 [json_name = "relabelformat"]; + void clear_relabelformat(); + ::pg_query::CoercionForm relabelformat() const; + void set_relabelformat(::pg_query::CoercionForm value); + private: + ::pg_query::CoercionForm _internal_relabelformat() const; + void _internal_set_relabelformat(::pg_query::CoercionForm value); + public: + + // int32 location = 7 [json_name = "location"]; + void clear_location(); + ::PROTOBUF_NAMESPACE_ID::int32 location() const; + void set_location(::PROTOBUF_NAMESPACE_ID::int32 value); + private: + ::PROTOBUF_NAMESPACE_ID::int32 _internal_location() const; + void _internal_set_location(::PROTOBUF_NAMESPACE_ID::int32 value); + public: + + // @@protoc_insertion_point(class_scope:pg_query.RelabelType) + private: + class _Internal; + + template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; + typedef void InternalArenaConstructable_; + typedef void DestructorSkippable_; + ::pg_query::Node* xpr_; + ::pg_query::Node* arg_; + ::PROTOBUF_NAMESPACE_ID::uint32 resulttype_; + ::PROTOBUF_NAMESPACE_ID::int32 resulttypmod_; + ::PROTOBUF_NAMESPACE_ID::uint32 resultcollid_; + int relabelformat_; + ::PROTOBUF_NAMESPACE_ID::int32 location_; + mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; + friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; +}; +// ------------------------------------------------------------------- + +class CoerceViaIO PROTOBUF_FINAL : + public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.CoerceViaIO) */ { + public: + inline CoerceViaIO() : CoerceViaIO(nullptr) {} + virtual ~CoerceViaIO(); + + CoerceViaIO(const CoerceViaIO& from); + CoerceViaIO(CoerceViaIO&& from) noexcept + : CoerceViaIO() { + *this = ::std::move(from); + } + + inline CoerceViaIO& operator=(const CoerceViaIO& from) { + CopyFrom(from); + return *this; + } + inline CoerceViaIO& operator=(CoerceViaIO&& from) noexcept { + if (GetArena() == from.GetArena()) { + if (this != &from) InternalSwap(&from); + } else { + CopyFrom(from); + } + return *this; + } + + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { + return GetDescriptor(); + } + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { + return GetMetadataStatic().descriptor; + } + static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { + return GetMetadataStatic().reflection; + } + static const CoerceViaIO& default_instance(); + + static inline const CoerceViaIO* internal_default_instance() { + return reinterpret_cast( + &_CoerceViaIO_default_instance_); + } + static constexpr int kIndexInFileMessages = + 35; + + friend void swap(CoerceViaIO& a, CoerceViaIO& b) { + a.Swap(&b); + } + inline void Swap(CoerceViaIO* other) { + if (other == this) return; + if (GetArena() == other->GetArena()) { + InternalSwap(other); + } else { + ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); + } + } + void UnsafeArenaSwap(CoerceViaIO* other) { + if (other == this) return; + GOOGLE_DCHECK(GetArena() == other->GetArena()); + InternalSwap(other); + } + + // implements Message ---------------------------------------------- + + inline CoerceViaIO* New() const final { + return CreateMaybeMessage(nullptr); + } + + CoerceViaIO* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { + return CreateMaybeMessage(arena); + } + void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void CopyFrom(const CoerceViaIO& from); + void MergeFrom(const CoerceViaIO& from); + PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; + bool IsInitialized() const final; + + size_t ByteSizeLong() const final; + const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; + ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( + ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; + int GetCachedSize() const final { return _cached_size_.Get(); } + + private: + inline void SharedCtor(); + inline void SharedDtor(); + void SetCachedSize(int size) const final; + void InternalSwap(CoerceViaIO* other); + friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; + static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { + return "pg_query.CoerceViaIO"; + } + protected: + explicit CoerceViaIO(::PROTOBUF_NAMESPACE_ID::Arena* arena); + private: + static void ArenaDtor(void* object); + inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); + public: + + ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; + private: + static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { + ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); + return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; + } + + public: + + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + + enum : int { + kXprFieldNumber = 1, + kArgFieldNumber = 2, + kResulttypeFieldNumber = 3, + kResultcollidFieldNumber = 4, + kCoerceformatFieldNumber = 5, + kLocationFieldNumber = 6, + }; + // .pg_query.Node xpr = 1 [json_name = "xpr"]; + bool has_xpr() const; + private: + bool _internal_has_xpr() const; + public: + void clear_xpr(); + const ::pg_query::Node& xpr() const; + ::pg_query::Node* release_xpr(); + ::pg_query::Node* mutable_xpr(); + void set_allocated_xpr(::pg_query::Node* xpr); + private: + const ::pg_query::Node& _internal_xpr() const; + ::pg_query::Node* _internal_mutable_xpr(); + public: + void unsafe_arena_set_allocated_xpr( + ::pg_query::Node* xpr); + ::pg_query::Node* unsafe_arena_release_xpr(); + + // .pg_query.Node arg = 2 [json_name = "arg"]; + bool has_arg() const; + private: + bool _internal_has_arg() const; + public: + void clear_arg(); + const ::pg_query::Node& arg() const; + ::pg_query::Node* release_arg(); + ::pg_query::Node* mutable_arg(); + void set_allocated_arg(::pg_query::Node* arg); + private: + const ::pg_query::Node& _internal_arg() const; + ::pg_query::Node* _internal_mutable_arg(); + public: + void unsafe_arena_set_allocated_arg( + ::pg_query::Node* arg); + ::pg_query::Node* unsafe_arena_release_arg(); + + // uint32 resulttype = 3 [json_name = "resulttype"]; + void clear_resulttype(); + ::PROTOBUF_NAMESPACE_ID::uint32 resulttype() const; + void set_resulttype(::PROTOBUF_NAMESPACE_ID::uint32 value); + private: + ::PROTOBUF_NAMESPACE_ID::uint32 _internal_resulttype() const; + void _internal_set_resulttype(::PROTOBUF_NAMESPACE_ID::uint32 value); + public: + + // uint32 resultcollid = 4 [json_name = "resultcollid"]; + void clear_resultcollid(); + ::PROTOBUF_NAMESPACE_ID::uint32 resultcollid() const; + void set_resultcollid(::PROTOBUF_NAMESPACE_ID::uint32 value); + private: + ::PROTOBUF_NAMESPACE_ID::uint32 _internal_resultcollid() const; + void _internal_set_resultcollid(::PROTOBUF_NAMESPACE_ID::uint32 value); + public: + + // .pg_query.CoercionForm coerceformat = 5 [json_name = "coerceformat"]; + void clear_coerceformat(); + ::pg_query::CoercionForm coerceformat() const; + void set_coerceformat(::pg_query::CoercionForm value); + private: + ::pg_query::CoercionForm _internal_coerceformat() const; + void _internal_set_coerceformat(::pg_query::CoercionForm value); + public: + + // int32 location = 6 [json_name = "location"]; + void clear_location(); + ::PROTOBUF_NAMESPACE_ID::int32 location() const; + void set_location(::PROTOBUF_NAMESPACE_ID::int32 value); + private: + ::PROTOBUF_NAMESPACE_ID::int32 _internal_location() const; + void _internal_set_location(::PROTOBUF_NAMESPACE_ID::int32 value); + public: + + // @@protoc_insertion_point(class_scope:pg_query.CoerceViaIO) + private: + class _Internal; + + template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; + typedef void InternalArenaConstructable_; + typedef void DestructorSkippable_; + ::pg_query::Node* xpr_; + ::pg_query::Node* arg_; + ::PROTOBUF_NAMESPACE_ID::uint32 resulttype_; + ::PROTOBUF_NAMESPACE_ID::uint32 resultcollid_; + int coerceformat_; + ::PROTOBUF_NAMESPACE_ID::int32 location_; + mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; + friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; +}; +// ------------------------------------------------------------------- + +class ArrayCoerceExpr PROTOBUF_FINAL : + public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.ArrayCoerceExpr) */ { + public: + inline ArrayCoerceExpr() : ArrayCoerceExpr(nullptr) {} + virtual ~ArrayCoerceExpr(); + + ArrayCoerceExpr(const ArrayCoerceExpr& from); + ArrayCoerceExpr(ArrayCoerceExpr&& from) noexcept + : ArrayCoerceExpr() { + *this = ::std::move(from); + } + + inline ArrayCoerceExpr& operator=(const ArrayCoerceExpr& from) { + CopyFrom(from); + return *this; + } + inline ArrayCoerceExpr& operator=(ArrayCoerceExpr&& from) noexcept { + if (GetArena() == from.GetArena()) { + if (this != &from) InternalSwap(&from); + } else { + CopyFrom(from); + } + return *this; + } + + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { + return GetDescriptor(); + } + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { + return GetMetadataStatic().descriptor; + } + static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { + return GetMetadataStatic().reflection; + } + static const ArrayCoerceExpr& default_instance(); + + static inline const ArrayCoerceExpr* internal_default_instance() { + return reinterpret_cast( + &_ArrayCoerceExpr_default_instance_); + } + static constexpr int kIndexInFileMessages = + 36; + + friend void swap(ArrayCoerceExpr& a, ArrayCoerceExpr& b) { + a.Swap(&b); + } + inline void Swap(ArrayCoerceExpr* other) { + if (other == this) return; + if (GetArena() == other->GetArena()) { + InternalSwap(other); + } else { + ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); + } + } + void UnsafeArenaSwap(ArrayCoerceExpr* other) { + if (other == this) return; + GOOGLE_DCHECK(GetArena() == other->GetArena()); + InternalSwap(other); + } + + // implements Message ---------------------------------------------- + + inline ArrayCoerceExpr* New() const final { + return CreateMaybeMessage(nullptr); + } + + ArrayCoerceExpr* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { + return CreateMaybeMessage(arena); + } + void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void CopyFrom(const ArrayCoerceExpr& from); + void MergeFrom(const ArrayCoerceExpr& from); + PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; + bool IsInitialized() const final; + + size_t ByteSizeLong() const final; + const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; + ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( + ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; + int GetCachedSize() const final { return _cached_size_.Get(); } + + private: + inline void SharedCtor(); + inline void SharedDtor(); + void SetCachedSize(int size) const final; + void InternalSwap(ArrayCoerceExpr* other); + friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; + static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { + return "pg_query.ArrayCoerceExpr"; + } + protected: + explicit ArrayCoerceExpr(::PROTOBUF_NAMESPACE_ID::Arena* arena); + private: + static void ArenaDtor(void* object); + inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); + public: + + ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; + private: + static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { + ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); + return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; + } + + public: + + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + + enum : int { + kXprFieldNumber = 1, + kArgFieldNumber = 2, + kElemexprFieldNumber = 3, + kResulttypeFieldNumber = 4, + kResulttypmodFieldNumber = 5, + kResultcollidFieldNumber = 6, + kCoerceformatFieldNumber = 7, + kLocationFieldNumber = 8, + }; + // .pg_query.Node xpr = 1 [json_name = "xpr"]; + bool has_xpr() const; + private: + bool _internal_has_xpr() const; + public: + void clear_xpr(); + const ::pg_query::Node& xpr() const; + ::pg_query::Node* release_xpr(); + ::pg_query::Node* mutable_xpr(); + void set_allocated_xpr(::pg_query::Node* xpr); + private: + const ::pg_query::Node& _internal_xpr() const; + ::pg_query::Node* _internal_mutable_xpr(); + public: + void unsafe_arena_set_allocated_xpr( + ::pg_query::Node* xpr); + ::pg_query::Node* unsafe_arena_release_xpr(); + + // .pg_query.Node arg = 2 [json_name = "arg"]; + bool has_arg() const; + private: + bool _internal_has_arg() const; + public: + void clear_arg(); + const ::pg_query::Node& arg() const; + ::pg_query::Node* release_arg(); + ::pg_query::Node* mutable_arg(); + void set_allocated_arg(::pg_query::Node* arg); + private: + const ::pg_query::Node& _internal_arg() const; + ::pg_query::Node* _internal_mutable_arg(); + public: + void unsafe_arena_set_allocated_arg( + ::pg_query::Node* arg); + ::pg_query::Node* unsafe_arena_release_arg(); + + // .pg_query.Node elemexpr = 3 [json_name = "elemexpr"]; + bool has_elemexpr() const; + private: + bool _internal_has_elemexpr() const; + public: + void clear_elemexpr(); + const ::pg_query::Node& elemexpr() const; + ::pg_query::Node* release_elemexpr(); + ::pg_query::Node* mutable_elemexpr(); + void set_allocated_elemexpr(::pg_query::Node* elemexpr); + private: + const ::pg_query::Node& _internal_elemexpr() const; + ::pg_query::Node* _internal_mutable_elemexpr(); + public: + void unsafe_arena_set_allocated_elemexpr( + ::pg_query::Node* elemexpr); + ::pg_query::Node* unsafe_arena_release_elemexpr(); + + // uint32 resulttype = 4 [json_name = "resulttype"]; + void clear_resulttype(); + ::PROTOBUF_NAMESPACE_ID::uint32 resulttype() const; + void set_resulttype(::PROTOBUF_NAMESPACE_ID::uint32 value); + private: + ::PROTOBUF_NAMESPACE_ID::uint32 _internal_resulttype() const; + void _internal_set_resulttype(::PROTOBUF_NAMESPACE_ID::uint32 value); + public: + + // int32 resulttypmod = 5 [json_name = "resulttypmod"]; + void clear_resulttypmod(); + ::PROTOBUF_NAMESPACE_ID::int32 resulttypmod() const; + void set_resulttypmod(::PROTOBUF_NAMESPACE_ID::int32 value); + private: + ::PROTOBUF_NAMESPACE_ID::int32 _internal_resulttypmod() const; + void _internal_set_resulttypmod(::PROTOBUF_NAMESPACE_ID::int32 value); + public: + + // uint32 resultcollid = 6 [json_name = "resultcollid"]; + void clear_resultcollid(); + ::PROTOBUF_NAMESPACE_ID::uint32 resultcollid() const; + void set_resultcollid(::PROTOBUF_NAMESPACE_ID::uint32 value); + private: + ::PROTOBUF_NAMESPACE_ID::uint32 _internal_resultcollid() const; + void _internal_set_resultcollid(::PROTOBUF_NAMESPACE_ID::uint32 value); + public: + + // .pg_query.CoercionForm coerceformat = 7 [json_name = "coerceformat"]; + void clear_coerceformat(); + ::pg_query::CoercionForm coerceformat() const; + void set_coerceformat(::pg_query::CoercionForm value); + private: + ::pg_query::CoercionForm _internal_coerceformat() const; + void _internal_set_coerceformat(::pg_query::CoercionForm value); + public: + + // int32 location = 8 [json_name = "location"]; + void clear_location(); + ::PROTOBUF_NAMESPACE_ID::int32 location() const; + void set_location(::PROTOBUF_NAMESPACE_ID::int32 value); + private: + ::PROTOBUF_NAMESPACE_ID::int32 _internal_location() const; + void _internal_set_location(::PROTOBUF_NAMESPACE_ID::int32 value); + public: + + // @@protoc_insertion_point(class_scope:pg_query.ArrayCoerceExpr) + private: + class _Internal; + + template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; + typedef void InternalArenaConstructable_; + typedef void DestructorSkippable_; + ::pg_query::Node* xpr_; + ::pg_query::Node* arg_; + ::pg_query::Node* elemexpr_; + ::PROTOBUF_NAMESPACE_ID::uint32 resulttype_; + ::PROTOBUF_NAMESPACE_ID::int32 resulttypmod_; + ::PROTOBUF_NAMESPACE_ID::uint32 resultcollid_; + int coerceformat_; + ::PROTOBUF_NAMESPACE_ID::int32 location_; + mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; + friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; +}; +// ------------------------------------------------------------------- + +class ConvertRowtypeExpr PROTOBUF_FINAL : + public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.ConvertRowtypeExpr) */ { + public: + inline ConvertRowtypeExpr() : ConvertRowtypeExpr(nullptr) {} + virtual ~ConvertRowtypeExpr(); + + ConvertRowtypeExpr(const ConvertRowtypeExpr& from); + ConvertRowtypeExpr(ConvertRowtypeExpr&& from) noexcept + : ConvertRowtypeExpr() { + *this = ::std::move(from); + } + + inline ConvertRowtypeExpr& operator=(const ConvertRowtypeExpr& from) { + CopyFrom(from); + return *this; + } + inline ConvertRowtypeExpr& operator=(ConvertRowtypeExpr&& from) noexcept { + if (GetArena() == from.GetArena()) { + if (this != &from) InternalSwap(&from); + } else { + CopyFrom(from); + } + return *this; + } + + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { + return GetDescriptor(); + } + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { + return GetMetadataStatic().descriptor; + } + static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { + return GetMetadataStatic().reflection; + } + static const ConvertRowtypeExpr& default_instance(); + + static inline const ConvertRowtypeExpr* internal_default_instance() { + return reinterpret_cast( + &_ConvertRowtypeExpr_default_instance_); + } + static constexpr int kIndexInFileMessages = + 37; + + friend void swap(ConvertRowtypeExpr& a, ConvertRowtypeExpr& b) { + a.Swap(&b); + } + inline void Swap(ConvertRowtypeExpr* other) { + if (other == this) return; + if (GetArena() == other->GetArena()) { + InternalSwap(other); + } else { + ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); + } + } + void UnsafeArenaSwap(ConvertRowtypeExpr* other) { + if (other == this) return; + GOOGLE_DCHECK(GetArena() == other->GetArena()); + InternalSwap(other); + } + + // implements Message ---------------------------------------------- + + inline ConvertRowtypeExpr* New() const final { + return CreateMaybeMessage(nullptr); + } + + ConvertRowtypeExpr* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { + return CreateMaybeMessage(arena); + } + void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void CopyFrom(const ConvertRowtypeExpr& from); + void MergeFrom(const ConvertRowtypeExpr& from); + PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; + bool IsInitialized() const final; + + size_t ByteSizeLong() const final; + const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; + ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( + ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; + int GetCachedSize() const final { return _cached_size_.Get(); } + + private: + inline void SharedCtor(); + inline void SharedDtor(); + void SetCachedSize(int size) const final; + void InternalSwap(ConvertRowtypeExpr* other); + friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; + static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { + return "pg_query.ConvertRowtypeExpr"; + } + protected: + explicit ConvertRowtypeExpr(::PROTOBUF_NAMESPACE_ID::Arena* arena); + private: + static void ArenaDtor(void* object); + inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); + public: + + ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; + private: + static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { + ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); + return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; + } + + public: + + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + + enum : int { + kXprFieldNumber = 1, + kArgFieldNumber = 2, + kResulttypeFieldNumber = 3, + kConvertformatFieldNumber = 4, + kLocationFieldNumber = 5, + }; + // .pg_query.Node xpr = 1 [json_name = "xpr"]; + bool has_xpr() const; + private: + bool _internal_has_xpr() const; + public: + void clear_xpr(); + const ::pg_query::Node& xpr() const; + ::pg_query::Node* release_xpr(); + ::pg_query::Node* mutable_xpr(); + void set_allocated_xpr(::pg_query::Node* xpr); + private: + const ::pg_query::Node& _internal_xpr() const; + ::pg_query::Node* _internal_mutable_xpr(); + public: + void unsafe_arena_set_allocated_xpr( + ::pg_query::Node* xpr); + ::pg_query::Node* unsafe_arena_release_xpr(); + + // .pg_query.Node arg = 2 [json_name = "arg"]; + bool has_arg() const; + private: + bool _internal_has_arg() const; + public: + void clear_arg(); + const ::pg_query::Node& arg() const; + ::pg_query::Node* release_arg(); + ::pg_query::Node* mutable_arg(); + void set_allocated_arg(::pg_query::Node* arg); + private: + const ::pg_query::Node& _internal_arg() const; + ::pg_query::Node* _internal_mutable_arg(); + public: + void unsafe_arena_set_allocated_arg( + ::pg_query::Node* arg); + ::pg_query::Node* unsafe_arena_release_arg(); + + // uint32 resulttype = 3 [json_name = "resulttype"]; + void clear_resulttype(); + ::PROTOBUF_NAMESPACE_ID::uint32 resulttype() const; + void set_resulttype(::PROTOBUF_NAMESPACE_ID::uint32 value); + private: + ::PROTOBUF_NAMESPACE_ID::uint32 _internal_resulttype() const; + void _internal_set_resulttype(::PROTOBUF_NAMESPACE_ID::uint32 value); + public: + + // .pg_query.CoercionForm convertformat = 4 [json_name = "convertformat"]; + void clear_convertformat(); + ::pg_query::CoercionForm convertformat() const; + void set_convertformat(::pg_query::CoercionForm value); + private: + ::pg_query::CoercionForm _internal_convertformat() const; + void _internal_set_convertformat(::pg_query::CoercionForm value); + public: + + // int32 location = 5 [json_name = "location"]; + void clear_location(); + ::PROTOBUF_NAMESPACE_ID::int32 location() const; + void set_location(::PROTOBUF_NAMESPACE_ID::int32 value); + private: + ::PROTOBUF_NAMESPACE_ID::int32 _internal_location() const; + void _internal_set_location(::PROTOBUF_NAMESPACE_ID::int32 value); + public: + + // @@protoc_insertion_point(class_scope:pg_query.ConvertRowtypeExpr) + private: + class _Internal; + + template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; + typedef void InternalArenaConstructable_; + typedef void DestructorSkippable_; + ::pg_query::Node* xpr_; + ::pg_query::Node* arg_; + ::PROTOBUF_NAMESPACE_ID::uint32 resulttype_; + int convertformat_; + ::PROTOBUF_NAMESPACE_ID::int32 location_; + mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; + friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; +}; +// ------------------------------------------------------------------- + +class CollateExpr PROTOBUF_FINAL : + public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.CollateExpr) */ { + public: + inline CollateExpr() : CollateExpr(nullptr) {} + virtual ~CollateExpr(); + + CollateExpr(const CollateExpr& from); + CollateExpr(CollateExpr&& from) noexcept + : CollateExpr() { + *this = ::std::move(from); + } + + inline CollateExpr& operator=(const CollateExpr& from) { + CopyFrom(from); + return *this; + } + inline CollateExpr& operator=(CollateExpr&& from) noexcept { + if (GetArena() == from.GetArena()) { + if (this != &from) InternalSwap(&from); + } else { + CopyFrom(from); + } + return *this; + } + + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { + return GetDescriptor(); + } + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { + return GetMetadataStatic().descriptor; + } + static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { + return GetMetadataStatic().reflection; + } + static const CollateExpr& default_instance(); + + static inline const CollateExpr* internal_default_instance() { + return reinterpret_cast( + &_CollateExpr_default_instance_); + } + static constexpr int kIndexInFileMessages = + 38; + + friend void swap(CollateExpr& a, CollateExpr& b) { + a.Swap(&b); + } + inline void Swap(CollateExpr* other) { + if (other == this) return; + if (GetArena() == other->GetArena()) { + InternalSwap(other); + } else { + ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); + } + } + void UnsafeArenaSwap(CollateExpr* other) { + if (other == this) return; + GOOGLE_DCHECK(GetArena() == other->GetArena()); + InternalSwap(other); + } + + // implements Message ---------------------------------------------- + + inline CollateExpr* New() const final { + return CreateMaybeMessage(nullptr); + } + + CollateExpr* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { + return CreateMaybeMessage(arena); + } + void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void CopyFrom(const CollateExpr& from); + void MergeFrom(const CollateExpr& from); + PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; + bool IsInitialized() const final; + + size_t ByteSizeLong() const final; + const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; + ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( + ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; + int GetCachedSize() const final { return _cached_size_.Get(); } + + private: + inline void SharedCtor(); + inline void SharedDtor(); + void SetCachedSize(int size) const final; + void InternalSwap(CollateExpr* other); + friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; + static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { + return "pg_query.CollateExpr"; + } + protected: + explicit CollateExpr(::PROTOBUF_NAMESPACE_ID::Arena* arena); + private: + static void ArenaDtor(void* object); + inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); + public: + + ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; + private: + static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { + ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); + return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; + } + + public: + + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + + enum : int { + kXprFieldNumber = 1, + kArgFieldNumber = 2, + kCollOidFieldNumber = 3, + kLocationFieldNumber = 4, + }; + // .pg_query.Node xpr = 1 [json_name = "xpr"]; + bool has_xpr() const; + private: + bool _internal_has_xpr() const; + public: + void clear_xpr(); + const ::pg_query::Node& xpr() const; + ::pg_query::Node* release_xpr(); + ::pg_query::Node* mutable_xpr(); + void set_allocated_xpr(::pg_query::Node* xpr); + private: + const ::pg_query::Node& _internal_xpr() const; + ::pg_query::Node* _internal_mutable_xpr(); + public: + void unsafe_arena_set_allocated_xpr( + ::pg_query::Node* xpr); + ::pg_query::Node* unsafe_arena_release_xpr(); + + // .pg_query.Node arg = 2 [json_name = "arg"]; + bool has_arg() const; + private: + bool _internal_has_arg() const; + public: + void clear_arg(); + const ::pg_query::Node& arg() const; + ::pg_query::Node* release_arg(); + ::pg_query::Node* mutable_arg(); + void set_allocated_arg(::pg_query::Node* arg); + private: + const ::pg_query::Node& _internal_arg() const; + ::pg_query::Node* _internal_mutable_arg(); + public: + void unsafe_arena_set_allocated_arg( + ::pg_query::Node* arg); + ::pg_query::Node* unsafe_arena_release_arg(); + + // uint32 coll_oid = 3 [json_name = "collOid"]; + void clear_coll_oid(); + ::PROTOBUF_NAMESPACE_ID::uint32 coll_oid() const; + void set_coll_oid(::PROTOBUF_NAMESPACE_ID::uint32 value); + private: + ::PROTOBUF_NAMESPACE_ID::uint32 _internal_coll_oid() const; + void _internal_set_coll_oid(::PROTOBUF_NAMESPACE_ID::uint32 value); + public: + + // int32 location = 4 [json_name = "location"]; + void clear_location(); + ::PROTOBUF_NAMESPACE_ID::int32 location() const; + void set_location(::PROTOBUF_NAMESPACE_ID::int32 value); + private: + ::PROTOBUF_NAMESPACE_ID::int32 _internal_location() const; + void _internal_set_location(::PROTOBUF_NAMESPACE_ID::int32 value); + public: + + // @@protoc_insertion_point(class_scope:pg_query.CollateExpr) + private: + class _Internal; + + template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; + typedef void InternalArenaConstructable_; + typedef void DestructorSkippable_; + ::pg_query::Node* xpr_; + ::pg_query::Node* arg_; + ::PROTOBUF_NAMESPACE_ID::uint32 coll_oid_; + ::PROTOBUF_NAMESPACE_ID::int32 location_; + mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; + friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; +}; +// ------------------------------------------------------------------- + +class CaseExpr PROTOBUF_FINAL : + public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.CaseExpr) */ { + public: + inline CaseExpr() : CaseExpr(nullptr) {} + virtual ~CaseExpr(); + + CaseExpr(const CaseExpr& from); + CaseExpr(CaseExpr&& from) noexcept + : CaseExpr() { + *this = ::std::move(from); + } + + inline CaseExpr& operator=(const CaseExpr& from) { + CopyFrom(from); + return *this; + } + inline CaseExpr& operator=(CaseExpr&& from) noexcept { + if (GetArena() == from.GetArena()) { + if (this != &from) InternalSwap(&from); + } else { + CopyFrom(from); + } + return *this; + } + + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { + return GetDescriptor(); + } + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { + return GetMetadataStatic().descriptor; + } + static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { + return GetMetadataStatic().reflection; + } + static const CaseExpr& default_instance(); + + static inline const CaseExpr* internal_default_instance() { + return reinterpret_cast( + &_CaseExpr_default_instance_); + } + static constexpr int kIndexInFileMessages = + 39; + + friend void swap(CaseExpr& a, CaseExpr& b) { + a.Swap(&b); + } + inline void Swap(CaseExpr* other) { + if (other == this) return; + if (GetArena() == other->GetArena()) { + InternalSwap(other); + } else { + ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); + } + } + void UnsafeArenaSwap(CaseExpr* other) { + if (other == this) return; + GOOGLE_DCHECK(GetArena() == other->GetArena()); + InternalSwap(other); + } + + // implements Message ---------------------------------------------- + + inline CaseExpr* New() const final { + return CreateMaybeMessage(nullptr); + } + + CaseExpr* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { + return CreateMaybeMessage(arena); + } + void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void CopyFrom(const CaseExpr& from); + void MergeFrom(const CaseExpr& from); + PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; + bool IsInitialized() const final; + + size_t ByteSizeLong() const final; + const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; + ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( + ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; + int GetCachedSize() const final { return _cached_size_.Get(); } + + private: + inline void SharedCtor(); + inline void SharedDtor(); + void SetCachedSize(int size) const final; + void InternalSwap(CaseExpr* other); + friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; + static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { + return "pg_query.CaseExpr"; + } + protected: + explicit CaseExpr(::PROTOBUF_NAMESPACE_ID::Arena* arena); + private: + static void ArenaDtor(void* object); + inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); + public: + + ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; + private: + static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { + ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); + return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; + } + + public: + + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + + enum : int { + kArgsFieldNumber = 5, + kXprFieldNumber = 1, + kArgFieldNumber = 4, + kDefresultFieldNumber = 6, + kCasetypeFieldNumber = 2, + kCasecollidFieldNumber = 3, + kLocationFieldNumber = 7, + }; + // repeated .pg_query.Node args = 5 [json_name = "args"]; + int args_size() const; + private: + int _internal_args_size() const; + public: + void clear_args(); + ::pg_query::Node* mutable_args(int index); + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* + mutable_args(); + private: + const ::pg_query::Node& _internal_args(int index) const; + ::pg_query::Node* _internal_add_args(); + public: + const ::pg_query::Node& args(int index) const; + ::pg_query::Node* add_args(); + const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& + args() const; + + // .pg_query.Node xpr = 1 [json_name = "xpr"]; + bool has_xpr() const; + private: + bool _internal_has_xpr() const; + public: + void clear_xpr(); + const ::pg_query::Node& xpr() const; + ::pg_query::Node* release_xpr(); + ::pg_query::Node* mutable_xpr(); + void set_allocated_xpr(::pg_query::Node* xpr); + private: + const ::pg_query::Node& _internal_xpr() const; + ::pg_query::Node* _internal_mutable_xpr(); + public: + void unsafe_arena_set_allocated_xpr( + ::pg_query::Node* xpr); + ::pg_query::Node* unsafe_arena_release_xpr(); + + // .pg_query.Node arg = 4 [json_name = "arg"]; + bool has_arg() const; + private: + bool _internal_has_arg() const; + public: + void clear_arg(); + const ::pg_query::Node& arg() const; + ::pg_query::Node* release_arg(); + ::pg_query::Node* mutable_arg(); + void set_allocated_arg(::pg_query::Node* arg); + private: + const ::pg_query::Node& _internal_arg() const; + ::pg_query::Node* _internal_mutable_arg(); + public: + void unsafe_arena_set_allocated_arg( + ::pg_query::Node* arg); + ::pg_query::Node* unsafe_arena_release_arg(); + + // .pg_query.Node defresult = 6 [json_name = "defresult"]; + bool has_defresult() const; + private: + bool _internal_has_defresult() const; + public: + void clear_defresult(); + const ::pg_query::Node& defresult() const; + ::pg_query::Node* release_defresult(); + ::pg_query::Node* mutable_defresult(); + void set_allocated_defresult(::pg_query::Node* defresult); + private: + const ::pg_query::Node& _internal_defresult() const; + ::pg_query::Node* _internal_mutable_defresult(); + public: + void unsafe_arena_set_allocated_defresult( + ::pg_query::Node* defresult); + ::pg_query::Node* unsafe_arena_release_defresult(); + + // uint32 casetype = 2 [json_name = "casetype"]; + void clear_casetype(); + ::PROTOBUF_NAMESPACE_ID::uint32 casetype() const; + void set_casetype(::PROTOBUF_NAMESPACE_ID::uint32 value); + private: + ::PROTOBUF_NAMESPACE_ID::uint32 _internal_casetype() const; + void _internal_set_casetype(::PROTOBUF_NAMESPACE_ID::uint32 value); + public: + + // uint32 casecollid = 3 [json_name = "casecollid"]; + void clear_casecollid(); + ::PROTOBUF_NAMESPACE_ID::uint32 casecollid() const; + void set_casecollid(::PROTOBUF_NAMESPACE_ID::uint32 value); + private: + ::PROTOBUF_NAMESPACE_ID::uint32 _internal_casecollid() const; + void _internal_set_casecollid(::PROTOBUF_NAMESPACE_ID::uint32 value); + public: + + // int32 location = 7 [json_name = "location"]; + void clear_location(); + ::PROTOBUF_NAMESPACE_ID::int32 location() const; + void set_location(::PROTOBUF_NAMESPACE_ID::int32 value); + private: + ::PROTOBUF_NAMESPACE_ID::int32 _internal_location() const; + void _internal_set_location(::PROTOBUF_NAMESPACE_ID::int32 value); + public: + + // @@protoc_insertion_point(class_scope:pg_query.CaseExpr) + private: + class _Internal; + + template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; + typedef void InternalArenaConstructable_; + typedef void DestructorSkippable_; + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > args_; + ::pg_query::Node* xpr_; + ::pg_query::Node* arg_; + ::pg_query::Node* defresult_; + ::PROTOBUF_NAMESPACE_ID::uint32 casetype_; + ::PROTOBUF_NAMESPACE_ID::uint32 casecollid_; + ::PROTOBUF_NAMESPACE_ID::int32 location_; + mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; + friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; +}; +// ------------------------------------------------------------------- + +class CaseWhen PROTOBUF_FINAL : + public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.CaseWhen) */ { + public: + inline CaseWhen() : CaseWhen(nullptr) {} + virtual ~CaseWhen(); + + CaseWhen(const CaseWhen& from); + CaseWhen(CaseWhen&& from) noexcept + : CaseWhen() { + *this = ::std::move(from); + } + + inline CaseWhen& operator=(const CaseWhen& from) { + CopyFrom(from); + return *this; + } + inline CaseWhen& operator=(CaseWhen&& from) noexcept { + if (GetArena() == from.GetArena()) { + if (this != &from) InternalSwap(&from); + } else { + CopyFrom(from); + } + return *this; + } + + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { + return GetDescriptor(); + } + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { + return GetMetadataStatic().descriptor; + } + static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { + return GetMetadataStatic().reflection; + } + static const CaseWhen& default_instance(); + + static inline const CaseWhen* internal_default_instance() { + return reinterpret_cast( + &_CaseWhen_default_instance_); + } + static constexpr int kIndexInFileMessages = + 40; + + friend void swap(CaseWhen& a, CaseWhen& b) { + a.Swap(&b); + } + inline void Swap(CaseWhen* other) { + if (other == this) return; + if (GetArena() == other->GetArena()) { + InternalSwap(other); + } else { + ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); + } + } + void UnsafeArenaSwap(CaseWhen* other) { + if (other == this) return; + GOOGLE_DCHECK(GetArena() == other->GetArena()); + InternalSwap(other); + } + + // implements Message ---------------------------------------------- + + inline CaseWhen* New() const final { + return CreateMaybeMessage(nullptr); + } + + CaseWhen* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { + return CreateMaybeMessage(arena); + } + void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void CopyFrom(const CaseWhen& from); + void MergeFrom(const CaseWhen& from); + PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; + bool IsInitialized() const final; + + size_t ByteSizeLong() const final; + const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; + ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( + ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; + int GetCachedSize() const final { return _cached_size_.Get(); } + + private: + inline void SharedCtor(); + inline void SharedDtor(); + void SetCachedSize(int size) const final; + void InternalSwap(CaseWhen* other); + friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; + static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { + return "pg_query.CaseWhen"; + } + protected: + explicit CaseWhen(::PROTOBUF_NAMESPACE_ID::Arena* arena); + private: + static void ArenaDtor(void* object); + inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); + public: + + ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; + private: + static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { + ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); + return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; + } + + public: + + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + + enum : int { + kXprFieldNumber = 1, + kExprFieldNumber = 2, + kResultFieldNumber = 3, + kLocationFieldNumber = 4, + }; + // .pg_query.Node xpr = 1 [json_name = "xpr"]; + bool has_xpr() const; + private: + bool _internal_has_xpr() const; + public: + void clear_xpr(); + const ::pg_query::Node& xpr() const; + ::pg_query::Node* release_xpr(); + ::pg_query::Node* mutable_xpr(); + void set_allocated_xpr(::pg_query::Node* xpr); + private: + const ::pg_query::Node& _internal_xpr() const; + ::pg_query::Node* _internal_mutable_xpr(); + public: + void unsafe_arena_set_allocated_xpr( + ::pg_query::Node* xpr); + ::pg_query::Node* unsafe_arena_release_xpr(); + + // .pg_query.Node expr = 2 [json_name = "expr"]; + bool has_expr() const; + private: + bool _internal_has_expr() const; + public: + void clear_expr(); + const ::pg_query::Node& expr() const; + ::pg_query::Node* release_expr(); + ::pg_query::Node* mutable_expr(); + void set_allocated_expr(::pg_query::Node* expr); + private: + const ::pg_query::Node& _internal_expr() const; + ::pg_query::Node* _internal_mutable_expr(); + public: + void unsafe_arena_set_allocated_expr( + ::pg_query::Node* expr); + ::pg_query::Node* unsafe_arena_release_expr(); + + // .pg_query.Node result = 3 [json_name = "result"]; + bool has_result() const; + private: + bool _internal_has_result() const; + public: + void clear_result(); + const ::pg_query::Node& result() const; + ::pg_query::Node* release_result(); + ::pg_query::Node* mutable_result(); + void set_allocated_result(::pg_query::Node* result); + private: + const ::pg_query::Node& _internal_result() const; + ::pg_query::Node* _internal_mutable_result(); + public: + void unsafe_arena_set_allocated_result( + ::pg_query::Node* result); + ::pg_query::Node* unsafe_arena_release_result(); + + // int32 location = 4 [json_name = "location"]; + void clear_location(); + ::PROTOBUF_NAMESPACE_ID::int32 location() const; + void set_location(::PROTOBUF_NAMESPACE_ID::int32 value); + private: + ::PROTOBUF_NAMESPACE_ID::int32 _internal_location() const; + void _internal_set_location(::PROTOBUF_NAMESPACE_ID::int32 value); + public: + + // @@protoc_insertion_point(class_scope:pg_query.CaseWhen) + private: + class _Internal; + + template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; + typedef void InternalArenaConstructable_; + typedef void DestructorSkippable_; + ::pg_query::Node* xpr_; + ::pg_query::Node* expr_; + ::pg_query::Node* result_; + ::PROTOBUF_NAMESPACE_ID::int32 location_; + mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; + friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; +}; +// ------------------------------------------------------------------- + +class CaseTestExpr PROTOBUF_FINAL : + public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.CaseTestExpr) */ { + public: + inline CaseTestExpr() : CaseTestExpr(nullptr) {} + virtual ~CaseTestExpr(); + + CaseTestExpr(const CaseTestExpr& from); + CaseTestExpr(CaseTestExpr&& from) noexcept + : CaseTestExpr() { + *this = ::std::move(from); + } + + inline CaseTestExpr& operator=(const CaseTestExpr& from) { + CopyFrom(from); + return *this; + } + inline CaseTestExpr& operator=(CaseTestExpr&& from) noexcept { + if (GetArena() == from.GetArena()) { + if (this != &from) InternalSwap(&from); + } else { + CopyFrom(from); + } + return *this; + } + + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { + return GetDescriptor(); + } + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { + return GetMetadataStatic().descriptor; + } + static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { + return GetMetadataStatic().reflection; + } + static const CaseTestExpr& default_instance(); + + static inline const CaseTestExpr* internal_default_instance() { + return reinterpret_cast( + &_CaseTestExpr_default_instance_); + } + static constexpr int kIndexInFileMessages = + 41; + + friend void swap(CaseTestExpr& a, CaseTestExpr& b) { + a.Swap(&b); + } + inline void Swap(CaseTestExpr* other) { + if (other == this) return; + if (GetArena() == other->GetArena()) { + InternalSwap(other); + } else { + ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); + } + } + void UnsafeArenaSwap(CaseTestExpr* other) { + if (other == this) return; + GOOGLE_DCHECK(GetArena() == other->GetArena()); + InternalSwap(other); + } + + // implements Message ---------------------------------------------- + + inline CaseTestExpr* New() const final { + return CreateMaybeMessage(nullptr); + } + + CaseTestExpr* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { + return CreateMaybeMessage(arena); + } + void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void CopyFrom(const CaseTestExpr& from); + void MergeFrom(const CaseTestExpr& from); + PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; + bool IsInitialized() const final; + + size_t ByteSizeLong() const final; + const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; + ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( + ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; + int GetCachedSize() const final { return _cached_size_.Get(); } + + private: + inline void SharedCtor(); + inline void SharedDtor(); + void SetCachedSize(int size) const final; + void InternalSwap(CaseTestExpr* other); + friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; + static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { + return "pg_query.CaseTestExpr"; + } + protected: + explicit CaseTestExpr(::PROTOBUF_NAMESPACE_ID::Arena* arena); + private: + static void ArenaDtor(void* object); + inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); + public: + + ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; + private: + static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { + ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); + return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; + } + + public: + + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + + enum : int { + kXprFieldNumber = 1, + kTypeIdFieldNumber = 2, + kTypeModFieldNumber = 3, + kCollationFieldNumber = 4, + }; + // .pg_query.Node xpr = 1 [json_name = "xpr"]; + bool has_xpr() const; + private: + bool _internal_has_xpr() const; + public: + void clear_xpr(); + const ::pg_query::Node& xpr() const; + ::pg_query::Node* release_xpr(); + ::pg_query::Node* mutable_xpr(); + void set_allocated_xpr(::pg_query::Node* xpr); + private: + const ::pg_query::Node& _internal_xpr() const; + ::pg_query::Node* _internal_mutable_xpr(); + public: + void unsafe_arena_set_allocated_xpr( + ::pg_query::Node* xpr); + ::pg_query::Node* unsafe_arena_release_xpr(); + + // uint32 type_id = 2 [json_name = "typeId"]; + void clear_type_id(); + ::PROTOBUF_NAMESPACE_ID::uint32 type_id() const; + void set_type_id(::PROTOBUF_NAMESPACE_ID::uint32 value); + private: + ::PROTOBUF_NAMESPACE_ID::uint32 _internal_type_id() const; + void _internal_set_type_id(::PROTOBUF_NAMESPACE_ID::uint32 value); + public: + + // int32 type_mod = 3 [json_name = "typeMod"]; + void clear_type_mod(); + ::PROTOBUF_NAMESPACE_ID::int32 type_mod() const; + void set_type_mod(::PROTOBUF_NAMESPACE_ID::int32 value); + private: + ::PROTOBUF_NAMESPACE_ID::int32 _internal_type_mod() const; + void _internal_set_type_mod(::PROTOBUF_NAMESPACE_ID::int32 value); + public: + + // uint32 collation = 4 [json_name = "collation"]; + void clear_collation(); + ::PROTOBUF_NAMESPACE_ID::uint32 collation() const; + void set_collation(::PROTOBUF_NAMESPACE_ID::uint32 value); + private: + ::PROTOBUF_NAMESPACE_ID::uint32 _internal_collation() const; + void _internal_set_collation(::PROTOBUF_NAMESPACE_ID::uint32 value); + public: + + // @@protoc_insertion_point(class_scope:pg_query.CaseTestExpr) + private: + class _Internal; + + template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; + typedef void InternalArenaConstructable_; + typedef void DestructorSkippable_; + ::pg_query::Node* xpr_; + ::PROTOBUF_NAMESPACE_ID::uint32 type_id_; + ::PROTOBUF_NAMESPACE_ID::int32 type_mod_; + ::PROTOBUF_NAMESPACE_ID::uint32 collation_; + mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; + friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; +}; +// ------------------------------------------------------------------- + +class ArrayExpr PROTOBUF_FINAL : + public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.ArrayExpr) */ { + public: + inline ArrayExpr() : ArrayExpr(nullptr) {} + virtual ~ArrayExpr(); + + ArrayExpr(const ArrayExpr& from); + ArrayExpr(ArrayExpr&& from) noexcept + : ArrayExpr() { + *this = ::std::move(from); + } + + inline ArrayExpr& operator=(const ArrayExpr& from) { + CopyFrom(from); + return *this; + } + inline ArrayExpr& operator=(ArrayExpr&& from) noexcept { + if (GetArena() == from.GetArena()) { + if (this != &from) InternalSwap(&from); + } else { + CopyFrom(from); + } + return *this; + } + + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { + return GetDescriptor(); + } + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { + return GetMetadataStatic().descriptor; + } + static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { + return GetMetadataStatic().reflection; + } + static const ArrayExpr& default_instance(); + + static inline const ArrayExpr* internal_default_instance() { + return reinterpret_cast( + &_ArrayExpr_default_instance_); + } + static constexpr int kIndexInFileMessages = + 42; + + friend void swap(ArrayExpr& a, ArrayExpr& b) { + a.Swap(&b); + } + inline void Swap(ArrayExpr* other) { + if (other == this) return; + if (GetArena() == other->GetArena()) { + InternalSwap(other); + } else { + ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); + } + } + void UnsafeArenaSwap(ArrayExpr* other) { + if (other == this) return; + GOOGLE_DCHECK(GetArena() == other->GetArena()); + InternalSwap(other); + } + + // implements Message ---------------------------------------------- + + inline ArrayExpr* New() const final { + return CreateMaybeMessage(nullptr); + } + + ArrayExpr* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { + return CreateMaybeMessage(arena); + } + void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void CopyFrom(const ArrayExpr& from); + void MergeFrom(const ArrayExpr& from); + PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; + bool IsInitialized() const final; + + size_t ByteSizeLong() const final; + const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; + ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( + ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; + int GetCachedSize() const final { return _cached_size_.Get(); } + + private: + inline void SharedCtor(); + inline void SharedDtor(); + void SetCachedSize(int size) const final; + void InternalSwap(ArrayExpr* other); + friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; + static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { + return "pg_query.ArrayExpr"; + } + protected: + explicit ArrayExpr(::PROTOBUF_NAMESPACE_ID::Arena* arena); + private: + static void ArenaDtor(void* object); + inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); + public: + + ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; + private: + static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { + ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); + return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; + } + + public: + + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + + enum : int { + kElementsFieldNumber = 5, + kXprFieldNumber = 1, + kArrayTypeidFieldNumber = 2, + kArrayCollidFieldNumber = 3, + kElementTypeidFieldNumber = 4, + kMultidimsFieldNumber = 6, + kLocationFieldNumber = 7, + }; + // repeated .pg_query.Node elements = 5 [json_name = "elements"]; + int elements_size() const; + private: + int _internal_elements_size() const; + public: + void clear_elements(); + ::pg_query::Node* mutable_elements(int index); + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* + mutable_elements(); + private: + const ::pg_query::Node& _internal_elements(int index) const; + ::pg_query::Node* _internal_add_elements(); + public: + const ::pg_query::Node& elements(int index) const; + ::pg_query::Node* add_elements(); + const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& + elements() const; + + // .pg_query.Node xpr = 1 [json_name = "xpr"]; + bool has_xpr() const; + private: + bool _internal_has_xpr() const; + public: + void clear_xpr(); + const ::pg_query::Node& xpr() const; + ::pg_query::Node* release_xpr(); + ::pg_query::Node* mutable_xpr(); + void set_allocated_xpr(::pg_query::Node* xpr); + private: + const ::pg_query::Node& _internal_xpr() const; + ::pg_query::Node* _internal_mutable_xpr(); + public: + void unsafe_arena_set_allocated_xpr( + ::pg_query::Node* xpr); + ::pg_query::Node* unsafe_arena_release_xpr(); + + // uint32 array_typeid = 2 [json_name = "array_typeid"]; + void clear_array_typeid(); + ::PROTOBUF_NAMESPACE_ID::uint32 array_typeid() const; + void set_array_typeid(::PROTOBUF_NAMESPACE_ID::uint32 value); + private: + ::PROTOBUF_NAMESPACE_ID::uint32 _internal_array_typeid() const; + void _internal_set_array_typeid(::PROTOBUF_NAMESPACE_ID::uint32 value); + public: + + // uint32 array_collid = 3 [json_name = "array_collid"]; + void clear_array_collid(); + ::PROTOBUF_NAMESPACE_ID::uint32 array_collid() const; + void set_array_collid(::PROTOBUF_NAMESPACE_ID::uint32 value); + private: + ::PROTOBUF_NAMESPACE_ID::uint32 _internal_array_collid() const; + void _internal_set_array_collid(::PROTOBUF_NAMESPACE_ID::uint32 value); + public: + + // uint32 element_typeid = 4 [json_name = "element_typeid"]; + void clear_element_typeid(); + ::PROTOBUF_NAMESPACE_ID::uint32 element_typeid() const; + void set_element_typeid(::PROTOBUF_NAMESPACE_ID::uint32 value); + private: + ::PROTOBUF_NAMESPACE_ID::uint32 _internal_element_typeid() const; + void _internal_set_element_typeid(::PROTOBUF_NAMESPACE_ID::uint32 value); + public: + + // bool multidims = 6 [json_name = "multidims"]; + void clear_multidims(); + bool multidims() const; + void set_multidims(bool value); + private: + bool _internal_multidims() const; + void _internal_set_multidims(bool value); + public: + + // int32 location = 7 [json_name = "location"]; + void clear_location(); + ::PROTOBUF_NAMESPACE_ID::int32 location() const; + void set_location(::PROTOBUF_NAMESPACE_ID::int32 value); + private: + ::PROTOBUF_NAMESPACE_ID::int32 _internal_location() const; + void _internal_set_location(::PROTOBUF_NAMESPACE_ID::int32 value); + public: + + // @@protoc_insertion_point(class_scope:pg_query.ArrayExpr) + private: + class _Internal; + + template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; + typedef void InternalArenaConstructable_; + typedef void DestructorSkippable_; + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > elements_; + ::pg_query::Node* xpr_; + ::PROTOBUF_NAMESPACE_ID::uint32 array_typeid_; + ::PROTOBUF_NAMESPACE_ID::uint32 array_collid_; + ::PROTOBUF_NAMESPACE_ID::uint32 element_typeid_; + bool multidims_; + ::PROTOBUF_NAMESPACE_ID::int32 location_; + mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; + friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; +}; +// ------------------------------------------------------------------- + +class RowExpr PROTOBUF_FINAL : + public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.RowExpr) */ { + public: + inline RowExpr() : RowExpr(nullptr) {} + virtual ~RowExpr(); + + RowExpr(const RowExpr& from); + RowExpr(RowExpr&& from) noexcept + : RowExpr() { + *this = ::std::move(from); + } + + inline RowExpr& operator=(const RowExpr& from) { + CopyFrom(from); + return *this; + } + inline RowExpr& operator=(RowExpr&& from) noexcept { + if (GetArena() == from.GetArena()) { + if (this != &from) InternalSwap(&from); + } else { + CopyFrom(from); + } + return *this; + } + + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { + return GetDescriptor(); + } + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { + return GetMetadataStatic().descriptor; + } + static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { + return GetMetadataStatic().reflection; + } + static const RowExpr& default_instance(); + + static inline const RowExpr* internal_default_instance() { + return reinterpret_cast( + &_RowExpr_default_instance_); + } + static constexpr int kIndexInFileMessages = + 43; + + friend void swap(RowExpr& a, RowExpr& b) { + a.Swap(&b); + } + inline void Swap(RowExpr* other) { + if (other == this) return; + if (GetArena() == other->GetArena()) { + InternalSwap(other); + } else { + ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); + } + } + void UnsafeArenaSwap(RowExpr* other) { + if (other == this) return; + GOOGLE_DCHECK(GetArena() == other->GetArena()); + InternalSwap(other); + } + + // implements Message ---------------------------------------------- + + inline RowExpr* New() const final { + return CreateMaybeMessage(nullptr); + } + + RowExpr* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { + return CreateMaybeMessage(arena); + } + void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void CopyFrom(const RowExpr& from); + void MergeFrom(const RowExpr& from); + PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; + bool IsInitialized() const final; + + size_t ByteSizeLong() const final; + const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; + ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( + ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; + int GetCachedSize() const final { return _cached_size_.Get(); } + + private: + inline void SharedCtor(); + inline void SharedDtor(); + void SetCachedSize(int size) const final; + void InternalSwap(RowExpr* other); + friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; + static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { + return "pg_query.RowExpr"; + } + protected: + explicit RowExpr(::PROTOBUF_NAMESPACE_ID::Arena* arena); + private: + static void ArenaDtor(void* object); + inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); + public: + + ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; + private: + static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { + ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); + return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; + } + + public: + + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + + enum : int { + kArgsFieldNumber = 2, + kColnamesFieldNumber = 5, + kXprFieldNumber = 1, + kRowTypeidFieldNumber = 3, + kRowFormatFieldNumber = 4, + kLocationFieldNumber = 6, + }; + // repeated .pg_query.Node args = 2 [json_name = "args"]; + int args_size() const; + private: + int _internal_args_size() const; + public: + void clear_args(); + ::pg_query::Node* mutable_args(int index); + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* + mutable_args(); + private: + const ::pg_query::Node& _internal_args(int index) const; + ::pg_query::Node* _internal_add_args(); + public: + const ::pg_query::Node& args(int index) const; + ::pg_query::Node* add_args(); + const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& + args() const; + + // repeated .pg_query.Node colnames = 5 [json_name = "colnames"]; + int colnames_size() const; + private: + int _internal_colnames_size() const; + public: + void clear_colnames(); + ::pg_query::Node* mutable_colnames(int index); + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* + mutable_colnames(); + private: + const ::pg_query::Node& _internal_colnames(int index) const; + ::pg_query::Node* _internal_add_colnames(); + public: + const ::pg_query::Node& colnames(int index) const; + ::pg_query::Node* add_colnames(); + const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& + colnames() const; + + // .pg_query.Node xpr = 1 [json_name = "xpr"]; + bool has_xpr() const; + private: + bool _internal_has_xpr() const; + public: + void clear_xpr(); + const ::pg_query::Node& xpr() const; + ::pg_query::Node* release_xpr(); + ::pg_query::Node* mutable_xpr(); + void set_allocated_xpr(::pg_query::Node* xpr); + private: + const ::pg_query::Node& _internal_xpr() const; + ::pg_query::Node* _internal_mutable_xpr(); + public: + void unsafe_arena_set_allocated_xpr( + ::pg_query::Node* xpr); + ::pg_query::Node* unsafe_arena_release_xpr(); + + // uint32 row_typeid = 3 [json_name = "row_typeid"]; + void clear_row_typeid(); + ::PROTOBUF_NAMESPACE_ID::uint32 row_typeid() const; + void set_row_typeid(::PROTOBUF_NAMESPACE_ID::uint32 value); + private: + ::PROTOBUF_NAMESPACE_ID::uint32 _internal_row_typeid() const; + void _internal_set_row_typeid(::PROTOBUF_NAMESPACE_ID::uint32 value); + public: + + // .pg_query.CoercionForm row_format = 4 [json_name = "row_format"]; + void clear_row_format(); + ::pg_query::CoercionForm row_format() const; + void set_row_format(::pg_query::CoercionForm value); + private: + ::pg_query::CoercionForm _internal_row_format() const; + void _internal_set_row_format(::pg_query::CoercionForm value); + public: + + // int32 location = 6 [json_name = "location"]; + void clear_location(); + ::PROTOBUF_NAMESPACE_ID::int32 location() const; + void set_location(::PROTOBUF_NAMESPACE_ID::int32 value); + private: + ::PROTOBUF_NAMESPACE_ID::int32 _internal_location() const; + void _internal_set_location(::PROTOBUF_NAMESPACE_ID::int32 value); + public: + + // @@protoc_insertion_point(class_scope:pg_query.RowExpr) + private: + class _Internal; + + template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; + typedef void InternalArenaConstructable_; + typedef void DestructorSkippable_; + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > args_; + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > colnames_; + ::pg_query::Node* xpr_; + ::PROTOBUF_NAMESPACE_ID::uint32 row_typeid_; + int row_format_; + ::PROTOBUF_NAMESPACE_ID::int32 location_; + mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; + friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; +}; +// ------------------------------------------------------------------- + +class RowCompareExpr PROTOBUF_FINAL : + public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.RowCompareExpr) */ { + public: + inline RowCompareExpr() : RowCompareExpr(nullptr) {} + virtual ~RowCompareExpr(); + + RowCompareExpr(const RowCompareExpr& from); + RowCompareExpr(RowCompareExpr&& from) noexcept + : RowCompareExpr() { + *this = ::std::move(from); + } + + inline RowCompareExpr& operator=(const RowCompareExpr& from) { + CopyFrom(from); + return *this; + } + inline RowCompareExpr& operator=(RowCompareExpr&& from) noexcept { + if (GetArena() == from.GetArena()) { + if (this != &from) InternalSwap(&from); + } else { + CopyFrom(from); + } + return *this; + } + + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { + return GetDescriptor(); + } + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { + return GetMetadataStatic().descriptor; + } + static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { + return GetMetadataStatic().reflection; + } + static const RowCompareExpr& default_instance(); + + static inline const RowCompareExpr* internal_default_instance() { + return reinterpret_cast( + &_RowCompareExpr_default_instance_); + } + static constexpr int kIndexInFileMessages = + 44; + + friend void swap(RowCompareExpr& a, RowCompareExpr& b) { + a.Swap(&b); + } + inline void Swap(RowCompareExpr* other) { + if (other == this) return; + if (GetArena() == other->GetArena()) { + InternalSwap(other); + } else { + ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); + } + } + void UnsafeArenaSwap(RowCompareExpr* other) { + if (other == this) return; + GOOGLE_DCHECK(GetArena() == other->GetArena()); + InternalSwap(other); + } + + // implements Message ---------------------------------------------- + + inline RowCompareExpr* New() const final { + return CreateMaybeMessage(nullptr); + } + + RowCompareExpr* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { + return CreateMaybeMessage(arena); + } + void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void CopyFrom(const RowCompareExpr& from); + void MergeFrom(const RowCompareExpr& from); + PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; + bool IsInitialized() const final; + + size_t ByteSizeLong() const final; + const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; + ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( + ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; + int GetCachedSize() const final { return _cached_size_.Get(); } + + private: + inline void SharedCtor(); + inline void SharedDtor(); + void SetCachedSize(int size) const final; + void InternalSwap(RowCompareExpr* other); + friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; + static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { + return "pg_query.RowCompareExpr"; + } + protected: + explicit RowCompareExpr(::PROTOBUF_NAMESPACE_ID::Arena* arena); + private: + static void ArenaDtor(void* object); + inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); + public: + + ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; + private: + static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { + ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); + return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; + } + + public: + + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + + enum : int { + kOpnosFieldNumber = 3, + kOpfamiliesFieldNumber = 4, + kInputcollidsFieldNumber = 5, + kLargsFieldNumber = 6, + kRargsFieldNumber = 7, + kXprFieldNumber = 1, + kRctypeFieldNumber = 2, + }; + // repeated .pg_query.Node opnos = 3 [json_name = "opnos"]; + int opnos_size() const; + private: + int _internal_opnos_size() const; + public: + void clear_opnos(); + ::pg_query::Node* mutable_opnos(int index); + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* + mutable_opnos(); + private: + const ::pg_query::Node& _internal_opnos(int index) const; + ::pg_query::Node* _internal_add_opnos(); + public: + const ::pg_query::Node& opnos(int index) const; + ::pg_query::Node* add_opnos(); + const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& + opnos() const; + + // repeated .pg_query.Node opfamilies = 4 [json_name = "opfamilies"]; + int opfamilies_size() const; + private: + int _internal_opfamilies_size() const; + public: + void clear_opfamilies(); + ::pg_query::Node* mutable_opfamilies(int index); + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* + mutable_opfamilies(); + private: + const ::pg_query::Node& _internal_opfamilies(int index) const; + ::pg_query::Node* _internal_add_opfamilies(); + public: + const ::pg_query::Node& opfamilies(int index) const; + ::pg_query::Node* add_opfamilies(); + const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& + opfamilies() const; + + // repeated .pg_query.Node inputcollids = 5 [json_name = "inputcollids"]; + int inputcollids_size() const; + private: + int _internal_inputcollids_size() const; + public: + void clear_inputcollids(); + ::pg_query::Node* mutable_inputcollids(int index); + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* + mutable_inputcollids(); + private: + const ::pg_query::Node& _internal_inputcollids(int index) const; + ::pg_query::Node* _internal_add_inputcollids(); + public: + const ::pg_query::Node& inputcollids(int index) const; + ::pg_query::Node* add_inputcollids(); + const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& + inputcollids() const; + + // repeated .pg_query.Node largs = 6 [json_name = "largs"]; + int largs_size() const; + private: + int _internal_largs_size() const; + public: + void clear_largs(); + ::pg_query::Node* mutable_largs(int index); + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* + mutable_largs(); + private: + const ::pg_query::Node& _internal_largs(int index) const; + ::pg_query::Node* _internal_add_largs(); + public: + const ::pg_query::Node& largs(int index) const; + ::pg_query::Node* add_largs(); + const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& + largs() const; + + // repeated .pg_query.Node rargs = 7 [json_name = "rargs"]; + int rargs_size() const; + private: + int _internal_rargs_size() const; + public: + void clear_rargs(); + ::pg_query::Node* mutable_rargs(int index); + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* + mutable_rargs(); + private: + const ::pg_query::Node& _internal_rargs(int index) const; + ::pg_query::Node* _internal_add_rargs(); + public: + const ::pg_query::Node& rargs(int index) const; + ::pg_query::Node* add_rargs(); + const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& + rargs() const; + + // .pg_query.Node xpr = 1 [json_name = "xpr"]; + bool has_xpr() const; + private: + bool _internal_has_xpr() const; + public: + void clear_xpr(); + const ::pg_query::Node& xpr() const; + ::pg_query::Node* release_xpr(); + ::pg_query::Node* mutable_xpr(); + void set_allocated_xpr(::pg_query::Node* xpr); + private: + const ::pg_query::Node& _internal_xpr() const; + ::pg_query::Node* _internal_mutable_xpr(); + public: + void unsafe_arena_set_allocated_xpr( + ::pg_query::Node* xpr); + ::pg_query::Node* unsafe_arena_release_xpr(); + + // .pg_query.RowCompareType rctype = 2 [json_name = "rctype"]; + void clear_rctype(); + ::pg_query::RowCompareType rctype() const; + void set_rctype(::pg_query::RowCompareType value); + private: + ::pg_query::RowCompareType _internal_rctype() const; + void _internal_set_rctype(::pg_query::RowCompareType value); + public: + + // @@protoc_insertion_point(class_scope:pg_query.RowCompareExpr) + private: + class _Internal; + + template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; + typedef void InternalArenaConstructable_; + typedef void DestructorSkippable_; + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > opnos_; + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > opfamilies_; + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > inputcollids_; + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > largs_; + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > rargs_; + ::pg_query::Node* xpr_; + int rctype_; + mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; + friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; +}; +// ------------------------------------------------------------------- + +class CoalesceExpr PROTOBUF_FINAL : + public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.CoalesceExpr) */ { + public: + inline CoalesceExpr() : CoalesceExpr(nullptr) {} + virtual ~CoalesceExpr(); + + CoalesceExpr(const CoalesceExpr& from); + CoalesceExpr(CoalesceExpr&& from) noexcept + : CoalesceExpr() { + *this = ::std::move(from); + } + + inline CoalesceExpr& operator=(const CoalesceExpr& from) { + CopyFrom(from); + return *this; + } + inline CoalesceExpr& operator=(CoalesceExpr&& from) noexcept { + if (GetArena() == from.GetArena()) { + if (this != &from) InternalSwap(&from); + } else { + CopyFrom(from); + } + return *this; + } + + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { + return GetDescriptor(); + } + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { + return GetMetadataStatic().descriptor; + } + static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { + return GetMetadataStatic().reflection; + } + static const CoalesceExpr& default_instance(); + + static inline const CoalesceExpr* internal_default_instance() { + return reinterpret_cast( + &_CoalesceExpr_default_instance_); + } + static constexpr int kIndexInFileMessages = + 45; + + friend void swap(CoalesceExpr& a, CoalesceExpr& b) { + a.Swap(&b); + } + inline void Swap(CoalesceExpr* other) { + if (other == this) return; + if (GetArena() == other->GetArena()) { + InternalSwap(other); + } else { + ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); + } + } + void UnsafeArenaSwap(CoalesceExpr* other) { + if (other == this) return; + GOOGLE_DCHECK(GetArena() == other->GetArena()); + InternalSwap(other); + } + + // implements Message ---------------------------------------------- + + inline CoalesceExpr* New() const final { + return CreateMaybeMessage(nullptr); + } + + CoalesceExpr* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { + return CreateMaybeMessage(arena); + } + void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void CopyFrom(const CoalesceExpr& from); + void MergeFrom(const CoalesceExpr& from); + PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; + bool IsInitialized() const final; + + size_t ByteSizeLong() const final; + const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; + ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( + ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; + int GetCachedSize() const final { return _cached_size_.Get(); } + + private: + inline void SharedCtor(); + inline void SharedDtor(); + void SetCachedSize(int size) const final; + void InternalSwap(CoalesceExpr* other); + friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; + static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { + return "pg_query.CoalesceExpr"; + } + protected: + explicit CoalesceExpr(::PROTOBUF_NAMESPACE_ID::Arena* arena); + private: + static void ArenaDtor(void* object); + inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); + public: + + ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; + private: + static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { + ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); + return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; + } + + public: + + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + + enum : int { + kArgsFieldNumber = 4, + kXprFieldNumber = 1, + kCoalescetypeFieldNumber = 2, + kCoalescecollidFieldNumber = 3, + kLocationFieldNumber = 5, + }; + // repeated .pg_query.Node args = 4 [json_name = "args"]; + int args_size() const; + private: + int _internal_args_size() const; + public: + void clear_args(); + ::pg_query::Node* mutable_args(int index); + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* + mutable_args(); + private: + const ::pg_query::Node& _internal_args(int index) const; + ::pg_query::Node* _internal_add_args(); + public: + const ::pg_query::Node& args(int index) const; + ::pg_query::Node* add_args(); + const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& + args() const; + + // .pg_query.Node xpr = 1 [json_name = "xpr"]; + bool has_xpr() const; + private: + bool _internal_has_xpr() const; + public: + void clear_xpr(); + const ::pg_query::Node& xpr() const; + ::pg_query::Node* release_xpr(); + ::pg_query::Node* mutable_xpr(); + void set_allocated_xpr(::pg_query::Node* xpr); + private: + const ::pg_query::Node& _internal_xpr() const; + ::pg_query::Node* _internal_mutable_xpr(); + public: + void unsafe_arena_set_allocated_xpr( + ::pg_query::Node* xpr); + ::pg_query::Node* unsafe_arena_release_xpr(); + + // uint32 coalescetype = 2 [json_name = "coalescetype"]; + void clear_coalescetype(); + ::PROTOBUF_NAMESPACE_ID::uint32 coalescetype() const; + void set_coalescetype(::PROTOBUF_NAMESPACE_ID::uint32 value); + private: + ::PROTOBUF_NAMESPACE_ID::uint32 _internal_coalescetype() const; + void _internal_set_coalescetype(::PROTOBUF_NAMESPACE_ID::uint32 value); + public: + + // uint32 coalescecollid = 3 [json_name = "coalescecollid"]; + void clear_coalescecollid(); + ::PROTOBUF_NAMESPACE_ID::uint32 coalescecollid() const; + void set_coalescecollid(::PROTOBUF_NAMESPACE_ID::uint32 value); + private: + ::PROTOBUF_NAMESPACE_ID::uint32 _internal_coalescecollid() const; + void _internal_set_coalescecollid(::PROTOBUF_NAMESPACE_ID::uint32 value); + public: + + // int32 location = 5 [json_name = "location"]; + void clear_location(); + ::PROTOBUF_NAMESPACE_ID::int32 location() const; + void set_location(::PROTOBUF_NAMESPACE_ID::int32 value); + private: + ::PROTOBUF_NAMESPACE_ID::int32 _internal_location() const; + void _internal_set_location(::PROTOBUF_NAMESPACE_ID::int32 value); + public: + + // @@protoc_insertion_point(class_scope:pg_query.CoalesceExpr) + private: + class _Internal; + + template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; + typedef void InternalArenaConstructable_; + typedef void DestructorSkippable_; + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > args_; + ::pg_query::Node* xpr_; + ::PROTOBUF_NAMESPACE_ID::uint32 coalescetype_; + ::PROTOBUF_NAMESPACE_ID::uint32 coalescecollid_; + ::PROTOBUF_NAMESPACE_ID::int32 location_; + mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; + friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; +}; +// ------------------------------------------------------------------- + +class MinMaxExpr PROTOBUF_FINAL : + public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.MinMaxExpr) */ { + public: + inline MinMaxExpr() : MinMaxExpr(nullptr) {} + virtual ~MinMaxExpr(); + + MinMaxExpr(const MinMaxExpr& from); + MinMaxExpr(MinMaxExpr&& from) noexcept + : MinMaxExpr() { + *this = ::std::move(from); + } + + inline MinMaxExpr& operator=(const MinMaxExpr& from) { + CopyFrom(from); + return *this; + } + inline MinMaxExpr& operator=(MinMaxExpr&& from) noexcept { + if (GetArena() == from.GetArena()) { + if (this != &from) InternalSwap(&from); + } else { + CopyFrom(from); + } + return *this; + } + + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { + return GetDescriptor(); + } + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { + return GetMetadataStatic().descriptor; + } + static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { + return GetMetadataStatic().reflection; + } + static const MinMaxExpr& default_instance(); + + static inline const MinMaxExpr* internal_default_instance() { + return reinterpret_cast( + &_MinMaxExpr_default_instance_); + } + static constexpr int kIndexInFileMessages = + 46; + + friend void swap(MinMaxExpr& a, MinMaxExpr& b) { + a.Swap(&b); + } + inline void Swap(MinMaxExpr* other) { + if (other == this) return; + if (GetArena() == other->GetArena()) { + InternalSwap(other); + } else { + ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); + } + } + void UnsafeArenaSwap(MinMaxExpr* other) { + if (other == this) return; + GOOGLE_DCHECK(GetArena() == other->GetArena()); + InternalSwap(other); + } + + // implements Message ---------------------------------------------- + + inline MinMaxExpr* New() const final { + return CreateMaybeMessage(nullptr); + } + + MinMaxExpr* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { + return CreateMaybeMessage(arena); + } + void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void CopyFrom(const MinMaxExpr& from); + void MergeFrom(const MinMaxExpr& from); + PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; + bool IsInitialized() const final; + + size_t ByteSizeLong() const final; + const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; + ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( + ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; + int GetCachedSize() const final { return _cached_size_.Get(); } + + private: + inline void SharedCtor(); + inline void SharedDtor(); + void SetCachedSize(int size) const final; + void InternalSwap(MinMaxExpr* other); + friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; + static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { + return "pg_query.MinMaxExpr"; + } + protected: + explicit MinMaxExpr(::PROTOBUF_NAMESPACE_ID::Arena* arena); + private: + static void ArenaDtor(void* object); + inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); + public: + + ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; + private: + static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { + ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); + return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; + } + + public: + + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + + enum : int { + kArgsFieldNumber = 6, + kXprFieldNumber = 1, + kMinmaxtypeFieldNumber = 2, + kMinmaxcollidFieldNumber = 3, + kInputcollidFieldNumber = 4, + kOpFieldNumber = 5, + kLocationFieldNumber = 7, + }; + // repeated .pg_query.Node args = 6 [json_name = "args"]; + int args_size() const; + private: + int _internal_args_size() const; + public: + void clear_args(); + ::pg_query::Node* mutable_args(int index); + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* + mutable_args(); + private: + const ::pg_query::Node& _internal_args(int index) const; + ::pg_query::Node* _internal_add_args(); + public: + const ::pg_query::Node& args(int index) const; + ::pg_query::Node* add_args(); + const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& + args() const; + + // .pg_query.Node xpr = 1 [json_name = "xpr"]; + bool has_xpr() const; + private: + bool _internal_has_xpr() const; + public: + void clear_xpr(); + const ::pg_query::Node& xpr() const; + ::pg_query::Node* release_xpr(); + ::pg_query::Node* mutable_xpr(); + void set_allocated_xpr(::pg_query::Node* xpr); + private: + const ::pg_query::Node& _internal_xpr() const; + ::pg_query::Node* _internal_mutable_xpr(); + public: + void unsafe_arena_set_allocated_xpr( + ::pg_query::Node* xpr); + ::pg_query::Node* unsafe_arena_release_xpr(); + + // uint32 minmaxtype = 2 [json_name = "minmaxtype"]; + void clear_minmaxtype(); + ::PROTOBUF_NAMESPACE_ID::uint32 minmaxtype() const; + void set_minmaxtype(::PROTOBUF_NAMESPACE_ID::uint32 value); + private: + ::PROTOBUF_NAMESPACE_ID::uint32 _internal_minmaxtype() const; + void _internal_set_minmaxtype(::PROTOBUF_NAMESPACE_ID::uint32 value); + public: + + // uint32 minmaxcollid = 3 [json_name = "minmaxcollid"]; + void clear_minmaxcollid(); + ::PROTOBUF_NAMESPACE_ID::uint32 minmaxcollid() const; + void set_minmaxcollid(::PROTOBUF_NAMESPACE_ID::uint32 value); + private: + ::PROTOBUF_NAMESPACE_ID::uint32 _internal_minmaxcollid() const; + void _internal_set_minmaxcollid(::PROTOBUF_NAMESPACE_ID::uint32 value); + public: + + // uint32 inputcollid = 4 [json_name = "inputcollid"]; + void clear_inputcollid(); + ::PROTOBUF_NAMESPACE_ID::uint32 inputcollid() const; + void set_inputcollid(::PROTOBUF_NAMESPACE_ID::uint32 value); + private: + ::PROTOBUF_NAMESPACE_ID::uint32 _internal_inputcollid() const; + void _internal_set_inputcollid(::PROTOBUF_NAMESPACE_ID::uint32 value); + public: + + // .pg_query.MinMaxOp op = 5 [json_name = "op"]; + void clear_op(); + ::pg_query::MinMaxOp op() const; + void set_op(::pg_query::MinMaxOp value); + private: + ::pg_query::MinMaxOp _internal_op() const; + void _internal_set_op(::pg_query::MinMaxOp value); + public: + + // int32 location = 7 [json_name = "location"]; + void clear_location(); + ::PROTOBUF_NAMESPACE_ID::int32 location() const; + void set_location(::PROTOBUF_NAMESPACE_ID::int32 value); + private: + ::PROTOBUF_NAMESPACE_ID::int32 _internal_location() const; + void _internal_set_location(::PROTOBUF_NAMESPACE_ID::int32 value); + public: + + // @@protoc_insertion_point(class_scope:pg_query.MinMaxExpr) + private: + class _Internal; + + template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; + typedef void InternalArenaConstructable_; + typedef void DestructorSkippable_; + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > args_; + ::pg_query::Node* xpr_; + ::PROTOBUF_NAMESPACE_ID::uint32 minmaxtype_; + ::PROTOBUF_NAMESPACE_ID::uint32 minmaxcollid_; + ::PROTOBUF_NAMESPACE_ID::uint32 inputcollid_; + int op_; + ::PROTOBUF_NAMESPACE_ID::int32 location_; + mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; + friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; +}; +// ------------------------------------------------------------------- + +class SQLValueFunction PROTOBUF_FINAL : + public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.SQLValueFunction) */ { + public: + inline SQLValueFunction() : SQLValueFunction(nullptr) {} + virtual ~SQLValueFunction(); + + SQLValueFunction(const SQLValueFunction& from); + SQLValueFunction(SQLValueFunction&& from) noexcept + : SQLValueFunction() { + *this = ::std::move(from); + } + + inline SQLValueFunction& operator=(const SQLValueFunction& from) { + CopyFrom(from); + return *this; + } + inline SQLValueFunction& operator=(SQLValueFunction&& from) noexcept { + if (GetArena() == from.GetArena()) { + if (this != &from) InternalSwap(&from); + } else { + CopyFrom(from); + } + return *this; + } + + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { + return GetDescriptor(); + } + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { + return GetMetadataStatic().descriptor; + } + static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { + return GetMetadataStatic().reflection; + } + static const SQLValueFunction& default_instance(); + + static inline const SQLValueFunction* internal_default_instance() { + return reinterpret_cast( + &_SQLValueFunction_default_instance_); + } + static constexpr int kIndexInFileMessages = + 47; + + friend void swap(SQLValueFunction& a, SQLValueFunction& b) { + a.Swap(&b); + } + inline void Swap(SQLValueFunction* other) { + if (other == this) return; + if (GetArena() == other->GetArena()) { + InternalSwap(other); + } else { + ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); + } + } + void UnsafeArenaSwap(SQLValueFunction* other) { + if (other == this) return; + GOOGLE_DCHECK(GetArena() == other->GetArena()); + InternalSwap(other); + } + + // implements Message ---------------------------------------------- + + inline SQLValueFunction* New() const final { + return CreateMaybeMessage(nullptr); + } + + SQLValueFunction* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { + return CreateMaybeMessage(arena); + } + void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void CopyFrom(const SQLValueFunction& from); + void MergeFrom(const SQLValueFunction& from); + PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; + bool IsInitialized() const final; + + size_t ByteSizeLong() const final; + const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; + ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( + ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; + int GetCachedSize() const final { return _cached_size_.Get(); } + + private: + inline void SharedCtor(); + inline void SharedDtor(); + void SetCachedSize(int size) const final; + void InternalSwap(SQLValueFunction* other); + friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; + static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { + return "pg_query.SQLValueFunction"; + } + protected: + explicit SQLValueFunction(::PROTOBUF_NAMESPACE_ID::Arena* arena); + private: + static void ArenaDtor(void* object); + inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); + public: + + ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; + private: + static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { + ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); + return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; + } + + public: + + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + + enum : int { + kXprFieldNumber = 1, + kOpFieldNumber = 2, + kTypeFieldNumber = 3, + kTypmodFieldNumber = 4, + kLocationFieldNumber = 5, + }; + // .pg_query.Node xpr = 1 [json_name = "xpr"]; + bool has_xpr() const; + private: + bool _internal_has_xpr() const; + public: + void clear_xpr(); + const ::pg_query::Node& xpr() const; + ::pg_query::Node* release_xpr(); + ::pg_query::Node* mutable_xpr(); + void set_allocated_xpr(::pg_query::Node* xpr); + private: + const ::pg_query::Node& _internal_xpr() const; + ::pg_query::Node* _internal_mutable_xpr(); + public: + void unsafe_arena_set_allocated_xpr( + ::pg_query::Node* xpr); + ::pg_query::Node* unsafe_arena_release_xpr(); + + // .pg_query.SQLValueFunctionOp op = 2 [json_name = "op"]; + void clear_op(); + ::pg_query::SQLValueFunctionOp op() const; + void set_op(::pg_query::SQLValueFunctionOp value); + private: + ::pg_query::SQLValueFunctionOp _internal_op() const; + void _internal_set_op(::pg_query::SQLValueFunctionOp value); + public: + + // uint32 type = 3 [json_name = "type"]; + void clear_type(); + ::PROTOBUF_NAMESPACE_ID::uint32 type() const; + void set_type(::PROTOBUF_NAMESPACE_ID::uint32 value); + private: + ::PROTOBUF_NAMESPACE_ID::uint32 _internal_type() const; + void _internal_set_type(::PROTOBUF_NAMESPACE_ID::uint32 value); + public: + + // int32 typmod = 4 [json_name = "typmod"]; + void clear_typmod(); + ::PROTOBUF_NAMESPACE_ID::int32 typmod() const; + void set_typmod(::PROTOBUF_NAMESPACE_ID::int32 value); + private: + ::PROTOBUF_NAMESPACE_ID::int32 _internal_typmod() const; + void _internal_set_typmod(::PROTOBUF_NAMESPACE_ID::int32 value); + public: + + // int32 location = 5 [json_name = "location"]; + void clear_location(); + ::PROTOBUF_NAMESPACE_ID::int32 location() const; + void set_location(::PROTOBUF_NAMESPACE_ID::int32 value); + private: + ::PROTOBUF_NAMESPACE_ID::int32 _internal_location() const; + void _internal_set_location(::PROTOBUF_NAMESPACE_ID::int32 value); + public: + + // @@protoc_insertion_point(class_scope:pg_query.SQLValueFunction) + private: + class _Internal; + + template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; + typedef void InternalArenaConstructable_; + typedef void DestructorSkippable_; + ::pg_query::Node* xpr_; + int op_; + ::PROTOBUF_NAMESPACE_ID::uint32 type_; + ::PROTOBUF_NAMESPACE_ID::int32 typmod_; + ::PROTOBUF_NAMESPACE_ID::int32 location_; + mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; + friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; +}; +// ------------------------------------------------------------------- + +class XmlExpr PROTOBUF_FINAL : + public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.XmlExpr) */ { + public: + inline XmlExpr() : XmlExpr(nullptr) {} + virtual ~XmlExpr(); + + XmlExpr(const XmlExpr& from); + XmlExpr(XmlExpr&& from) noexcept + : XmlExpr() { + *this = ::std::move(from); + } + + inline XmlExpr& operator=(const XmlExpr& from) { + CopyFrom(from); + return *this; + } + inline XmlExpr& operator=(XmlExpr&& from) noexcept { + if (GetArena() == from.GetArena()) { + if (this != &from) InternalSwap(&from); + } else { + CopyFrom(from); + } + return *this; + } + + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { + return GetDescriptor(); + } + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { + return GetMetadataStatic().descriptor; + } + static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { + return GetMetadataStatic().reflection; + } + static const XmlExpr& default_instance(); + + static inline const XmlExpr* internal_default_instance() { + return reinterpret_cast( + &_XmlExpr_default_instance_); + } + static constexpr int kIndexInFileMessages = + 48; + + friend void swap(XmlExpr& a, XmlExpr& b) { + a.Swap(&b); + } + inline void Swap(XmlExpr* other) { + if (other == this) return; + if (GetArena() == other->GetArena()) { + InternalSwap(other); + } else { + ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); + } + } + void UnsafeArenaSwap(XmlExpr* other) { + if (other == this) return; + GOOGLE_DCHECK(GetArena() == other->GetArena()); + InternalSwap(other); + } + + // implements Message ---------------------------------------------- + + inline XmlExpr* New() const final { + return CreateMaybeMessage(nullptr); + } + + XmlExpr* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { + return CreateMaybeMessage(arena); + } + void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void CopyFrom(const XmlExpr& from); + void MergeFrom(const XmlExpr& from); + PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; + bool IsInitialized() const final; + + size_t ByteSizeLong() const final; + const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; + ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( + ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; + int GetCachedSize() const final { return _cached_size_.Get(); } + + private: + inline void SharedCtor(); + inline void SharedDtor(); + void SetCachedSize(int size) const final; + void InternalSwap(XmlExpr* other); + friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; + static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { + return "pg_query.XmlExpr"; + } + protected: + explicit XmlExpr(::PROTOBUF_NAMESPACE_ID::Arena* arena); + private: + static void ArenaDtor(void* object); + inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); + public: + + ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; + private: + static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { + ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); + return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; + } + + public: + + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + + enum : int { + kNamedArgsFieldNumber = 4, + kArgNamesFieldNumber = 5, + kArgsFieldNumber = 6, + kNameFieldNumber = 3, + kXprFieldNumber = 1, + kOpFieldNumber = 2, + kXmloptionFieldNumber = 7, + kTypeFieldNumber = 8, + kTypmodFieldNumber = 9, + kLocationFieldNumber = 10, + }; + // repeated .pg_query.Node named_args = 4 [json_name = "named_args"]; + int named_args_size() const; + private: + int _internal_named_args_size() const; + public: + void clear_named_args(); + ::pg_query::Node* mutable_named_args(int index); + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* + mutable_named_args(); + private: + const ::pg_query::Node& _internal_named_args(int index) const; + ::pg_query::Node* _internal_add_named_args(); + public: + const ::pg_query::Node& named_args(int index) const; + ::pg_query::Node* add_named_args(); + const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& + named_args() const; + + // repeated .pg_query.Node arg_names = 5 [json_name = "arg_names"]; + int arg_names_size() const; + private: + int _internal_arg_names_size() const; + public: + void clear_arg_names(); + ::pg_query::Node* mutable_arg_names(int index); + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* + mutable_arg_names(); + private: + const ::pg_query::Node& _internal_arg_names(int index) const; + ::pg_query::Node* _internal_add_arg_names(); + public: + const ::pg_query::Node& arg_names(int index) const; + ::pg_query::Node* add_arg_names(); + const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& + arg_names() const; + + // repeated .pg_query.Node args = 6 [json_name = "args"]; + int args_size() const; + private: + int _internal_args_size() const; + public: + void clear_args(); + ::pg_query::Node* mutable_args(int index); + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* + mutable_args(); + private: + const ::pg_query::Node& _internal_args(int index) const; + ::pg_query::Node* _internal_add_args(); + public: + const ::pg_query::Node& args(int index) const; + ::pg_query::Node* add_args(); + const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& + args() const; + + // string name = 3 [json_name = "name"]; + void clear_name(); + const std::string& name() const; + void set_name(const std::string& value); + void set_name(std::string&& value); + void set_name(const char* value); + void set_name(const char* value, size_t size); + std::string* mutable_name(); + std::string* release_name(); + void set_allocated_name(std::string* name); + private: + const std::string& _internal_name() const; + void _internal_set_name(const std::string& value); + std::string* _internal_mutable_name(); + public: + + // .pg_query.Node xpr = 1 [json_name = "xpr"]; + bool has_xpr() const; + private: + bool _internal_has_xpr() const; + public: + void clear_xpr(); + const ::pg_query::Node& xpr() const; + ::pg_query::Node* release_xpr(); + ::pg_query::Node* mutable_xpr(); + void set_allocated_xpr(::pg_query::Node* xpr); + private: + const ::pg_query::Node& _internal_xpr() const; + ::pg_query::Node* _internal_mutable_xpr(); + public: + void unsafe_arena_set_allocated_xpr( + ::pg_query::Node* xpr); + ::pg_query::Node* unsafe_arena_release_xpr(); + + // .pg_query.XmlExprOp op = 2 [json_name = "op"]; + void clear_op(); + ::pg_query::XmlExprOp op() const; + void set_op(::pg_query::XmlExprOp value); + private: + ::pg_query::XmlExprOp _internal_op() const; + void _internal_set_op(::pg_query::XmlExprOp value); + public: + + // .pg_query.XmlOptionType xmloption = 7 [json_name = "xmloption"]; + void clear_xmloption(); + ::pg_query::XmlOptionType xmloption() const; + void set_xmloption(::pg_query::XmlOptionType value); + private: + ::pg_query::XmlOptionType _internal_xmloption() const; + void _internal_set_xmloption(::pg_query::XmlOptionType value); + public: + + // uint32 type = 8 [json_name = "type"]; + void clear_type(); + ::PROTOBUF_NAMESPACE_ID::uint32 type() const; + void set_type(::PROTOBUF_NAMESPACE_ID::uint32 value); + private: + ::PROTOBUF_NAMESPACE_ID::uint32 _internal_type() const; + void _internal_set_type(::PROTOBUF_NAMESPACE_ID::uint32 value); + public: + + // int32 typmod = 9 [json_name = "typmod"]; + void clear_typmod(); + ::PROTOBUF_NAMESPACE_ID::int32 typmod() const; + void set_typmod(::PROTOBUF_NAMESPACE_ID::int32 value); + private: + ::PROTOBUF_NAMESPACE_ID::int32 _internal_typmod() const; + void _internal_set_typmod(::PROTOBUF_NAMESPACE_ID::int32 value); + public: + + // int32 location = 10 [json_name = "location"]; + void clear_location(); + ::PROTOBUF_NAMESPACE_ID::int32 location() const; + void set_location(::PROTOBUF_NAMESPACE_ID::int32 value); + private: + ::PROTOBUF_NAMESPACE_ID::int32 _internal_location() const; + void _internal_set_location(::PROTOBUF_NAMESPACE_ID::int32 value); + public: + + // @@protoc_insertion_point(class_scope:pg_query.XmlExpr) + private: + class _Internal; + + template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; + typedef void InternalArenaConstructable_; + typedef void DestructorSkippable_; + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > named_args_; + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > arg_names_; + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > args_; + ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr name_; + ::pg_query::Node* xpr_; + int op_; + int xmloption_; + ::PROTOBUF_NAMESPACE_ID::uint32 type_; + ::PROTOBUF_NAMESPACE_ID::int32 typmod_; + ::PROTOBUF_NAMESPACE_ID::int32 location_; + mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; + friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; +}; +// ------------------------------------------------------------------- + +class NullTest PROTOBUF_FINAL : + public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.NullTest) */ { + public: + inline NullTest() : NullTest(nullptr) {} + virtual ~NullTest(); + + NullTest(const NullTest& from); + NullTest(NullTest&& from) noexcept + : NullTest() { + *this = ::std::move(from); + } + + inline NullTest& operator=(const NullTest& from) { + CopyFrom(from); + return *this; + } + inline NullTest& operator=(NullTest&& from) noexcept { + if (GetArena() == from.GetArena()) { + if (this != &from) InternalSwap(&from); + } else { + CopyFrom(from); + } + return *this; + } + + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { + return GetDescriptor(); + } + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { + return GetMetadataStatic().descriptor; + } + static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { + return GetMetadataStatic().reflection; + } + static const NullTest& default_instance(); + + static inline const NullTest* internal_default_instance() { + return reinterpret_cast( + &_NullTest_default_instance_); + } + static constexpr int kIndexInFileMessages = + 49; + + friend void swap(NullTest& a, NullTest& b) { + a.Swap(&b); + } + inline void Swap(NullTest* other) { + if (other == this) return; + if (GetArena() == other->GetArena()) { + InternalSwap(other); + } else { + ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); + } + } + void UnsafeArenaSwap(NullTest* other) { + if (other == this) return; + GOOGLE_DCHECK(GetArena() == other->GetArena()); + InternalSwap(other); + } + + // implements Message ---------------------------------------------- + + inline NullTest* New() const final { + return CreateMaybeMessage(nullptr); + } + + NullTest* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { + return CreateMaybeMessage(arena); + } + void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void CopyFrom(const NullTest& from); + void MergeFrom(const NullTest& from); + PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; + bool IsInitialized() const final; + + size_t ByteSizeLong() const final; + const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; + ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( + ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; + int GetCachedSize() const final { return _cached_size_.Get(); } + + private: + inline void SharedCtor(); + inline void SharedDtor(); + void SetCachedSize(int size) const final; + void InternalSwap(NullTest* other); + friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; + static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { + return "pg_query.NullTest"; + } + protected: + explicit NullTest(::PROTOBUF_NAMESPACE_ID::Arena* arena); + private: + static void ArenaDtor(void* object); + inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); + public: + + ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; + private: + static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { + ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); + return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; + } + + public: + + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + + enum : int { + kXprFieldNumber = 1, + kArgFieldNumber = 2, + kNulltesttypeFieldNumber = 3, + kArgisrowFieldNumber = 4, + kLocationFieldNumber = 5, + }; + // .pg_query.Node xpr = 1 [json_name = "xpr"]; + bool has_xpr() const; + private: + bool _internal_has_xpr() const; + public: + void clear_xpr(); + const ::pg_query::Node& xpr() const; + ::pg_query::Node* release_xpr(); + ::pg_query::Node* mutable_xpr(); + void set_allocated_xpr(::pg_query::Node* xpr); + private: + const ::pg_query::Node& _internal_xpr() const; + ::pg_query::Node* _internal_mutable_xpr(); + public: + void unsafe_arena_set_allocated_xpr( + ::pg_query::Node* xpr); + ::pg_query::Node* unsafe_arena_release_xpr(); + + // .pg_query.Node arg = 2 [json_name = "arg"]; + bool has_arg() const; + private: + bool _internal_has_arg() const; + public: + void clear_arg(); + const ::pg_query::Node& arg() const; + ::pg_query::Node* release_arg(); + ::pg_query::Node* mutable_arg(); + void set_allocated_arg(::pg_query::Node* arg); + private: + const ::pg_query::Node& _internal_arg() const; + ::pg_query::Node* _internal_mutable_arg(); + public: + void unsafe_arena_set_allocated_arg( + ::pg_query::Node* arg); + ::pg_query::Node* unsafe_arena_release_arg(); + + // .pg_query.NullTestType nulltesttype = 3 [json_name = "nulltesttype"]; + void clear_nulltesttype(); + ::pg_query::NullTestType nulltesttype() const; + void set_nulltesttype(::pg_query::NullTestType value); + private: + ::pg_query::NullTestType _internal_nulltesttype() const; + void _internal_set_nulltesttype(::pg_query::NullTestType value); + public: + + // bool argisrow = 4 [json_name = "argisrow"]; + void clear_argisrow(); + bool argisrow() const; + void set_argisrow(bool value); + private: + bool _internal_argisrow() const; + void _internal_set_argisrow(bool value); + public: + + // int32 location = 5 [json_name = "location"]; + void clear_location(); + ::PROTOBUF_NAMESPACE_ID::int32 location() const; + void set_location(::PROTOBUF_NAMESPACE_ID::int32 value); + private: + ::PROTOBUF_NAMESPACE_ID::int32 _internal_location() const; + void _internal_set_location(::PROTOBUF_NAMESPACE_ID::int32 value); + public: + + // @@protoc_insertion_point(class_scope:pg_query.NullTest) + private: + class _Internal; + + template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; + typedef void InternalArenaConstructable_; + typedef void DestructorSkippable_; + ::pg_query::Node* xpr_; + ::pg_query::Node* arg_; + int nulltesttype_; + bool argisrow_; + ::PROTOBUF_NAMESPACE_ID::int32 location_; + mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; + friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; +}; +// ------------------------------------------------------------------- + +class BooleanTest PROTOBUF_FINAL : + public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.BooleanTest) */ { + public: + inline BooleanTest() : BooleanTest(nullptr) {} + virtual ~BooleanTest(); + + BooleanTest(const BooleanTest& from); + BooleanTest(BooleanTest&& from) noexcept + : BooleanTest() { + *this = ::std::move(from); + } + + inline BooleanTest& operator=(const BooleanTest& from) { + CopyFrom(from); + return *this; + } + inline BooleanTest& operator=(BooleanTest&& from) noexcept { + if (GetArena() == from.GetArena()) { + if (this != &from) InternalSwap(&from); + } else { + CopyFrom(from); + } + return *this; + } + + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { + return GetDescriptor(); + } + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { + return GetMetadataStatic().descriptor; + } + static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { + return GetMetadataStatic().reflection; + } + static const BooleanTest& default_instance(); + + static inline const BooleanTest* internal_default_instance() { + return reinterpret_cast( + &_BooleanTest_default_instance_); + } + static constexpr int kIndexInFileMessages = + 50; + + friend void swap(BooleanTest& a, BooleanTest& b) { + a.Swap(&b); + } + inline void Swap(BooleanTest* other) { + if (other == this) return; + if (GetArena() == other->GetArena()) { + InternalSwap(other); + } else { + ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); + } + } + void UnsafeArenaSwap(BooleanTest* other) { + if (other == this) return; + GOOGLE_DCHECK(GetArena() == other->GetArena()); + InternalSwap(other); + } + + // implements Message ---------------------------------------------- + + inline BooleanTest* New() const final { + return CreateMaybeMessage(nullptr); + } + + BooleanTest* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { + return CreateMaybeMessage(arena); + } + void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void CopyFrom(const BooleanTest& from); + void MergeFrom(const BooleanTest& from); + PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; + bool IsInitialized() const final; + + size_t ByteSizeLong() const final; + const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; + ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( + ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; + int GetCachedSize() const final { return _cached_size_.Get(); } + + private: + inline void SharedCtor(); + inline void SharedDtor(); + void SetCachedSize(int size) const final; + void InternalSwap(BooleanTest* other); + friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; + static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { + return "pg_query.BooleanTest"; + } + protected: + explicit BooleanTest(::PROTOBUF_NAMESPACE_ID::Arena* arena); + private: + static void ArenaDtor(void* object); + inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); + public: + + ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; + private: + static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { + ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); + return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; + } + + public: + + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + + enum : int { + kXprFieldNumber = 1, + kArgFieldNumber = 2, + kBooltesttypeFieldNumber = 3, + kLocationFieldNumber = 4, + }; + // .pg_query.Node xpr = 1 [json_name = "xpr"]; + bool has_xpr() const; + private: + bool _internal_has_xpr() const; + public: + void clear_xpr(); + const ::pg_query::Node& xpr() const; + ::pg_query::Node* release_xpr(); + ::pg_query::Node* mutable_xpr(); + void set_allocated_xpr(::pg_query::Node* xpr); + private: + const ::pg_query::Node& _internal_xpr() const; + ::pg_query::Node* _internal_mutable_xpr(); + public: + void unsafe_arena_set_allocated_xpr( + ::pg_query::Node* xpr); + ::pg_query::Node* unsafe_arena_release_xpr(); + + // .pg_query.Node arg = 2 [json_name = "arg"]; + bool has_arg() const; + private: + bool _internal_has_arg() const; + public: + void clear_arg(); + const ::pg_query::Node& arg() const; + ::pg_query::Node* release_arg(); + ::pg_query::Node* mutable_arg(); + void set_allocated_arg(::pg_query::Node* arg); + private: + const ::pg_query::Node& _internal_arg() const; + ::pg_query::Node* _internal_mutable_arg(); + public: + void unsafe_arena_set_allocated_arg( + ::pg_query::Node* arg); + ::pg_query::Node* unsafe_arena_release_arg(); + + // .pg_query.BoolTestType booltesttype = 3 [json_name = "booltesttype"]; + void clear_booltesttype(); + ::pg_query::BoolTestType booltesttype() const; + void set_booltesttype(::pg_query::BoolTestType value); + private: + ::pg_query::BoolTestType _internal_booltesttype() const; + void _internal_set_booltesttype(::pg_query::BoolTestType value); + public: + + // int32 location = 4 [json_name = "location"]; + void clear_location(); + ::PROTOBUF_NAMESPACE_ID::int32 location() const; + void set_location(::PROTOBUF_NAMESPACE_ID::int32 value); + private: + ::PROTOBUF_NAMESPACE_ID::int32 _internal_location() const; + void _internal_set_location(::PROTOBUF_NAMESPACE_ID::int32 value); + public: + + // @@protoc_insertion_point(class_scope:pg_query.BooleanTest) + private: + class _Internal; + + template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; + typedef void InternalArenaConstructable_; + typedef void DestructorSkippable_; + ::pg_query::Node* xpr_; + ::pg_query::Node* arg_; + int booltesttype_; + ::PROTOBUF_NAMESPACE_ID::int32 location_; + mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; + friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; +}; +// ------------------------------------------------------------------- + +class CoerceToDomain PROTOBUF_FINAL : + public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.CoerceToDomain) */ { + public: + inline CoerceToDomain() : CoerceToDomain(nullptr) {} + virtual ~CoerceToDomain(); + + CoerceToDomain(const CoerceToDomain& from); + CoerceToDomain(CoerceToDomain&& from) noexcept + : CoerceToDomain() { + *this = ::std::move(from); + } + + inline CoerceToDomain& operator=(const CoerceToDomain& from) { + CopyFrom(from); + return *this; + } + inline CoerceToDomain& operator=(CoerceToDomain&& from) noexcept { + if (GetArena() == from.GetArena()) { + if (this != &from) InternalSwap(&from); + } else { + CopyFrom(from); + } + return *this; + } + + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { + return GetDescriptor(); + } + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { + return GetMetadataStatic().descriptor; + } + static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { + return GetMetadataStatic().reflection; + } + static const CoerceToDomain& default_instance(); + + static inline const CoerceToDomain* internal_default_instance() { + return reinterpret_cast( + &_CoerceToDomain_default_instance_); + } + static constexpr int kIndexInFileMessages = + 51; + + friend void swap(CoerceToDomain& a, CoerceToDomain& b) { + a.Swap(&b); + } + inline void Swap(CoerceToDomain* other) { + if (other == this) return; + if (GetArena() == other->GetArena()) { + InternalSwap(other); + } else { + ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); + } + } + void UnsafeArenaSwap(CoerceToDomain* other) { + if (other == this) return; + GOOGLE_DCHECK(GetArena() == other->GetArena()); + InternalSwap(other); + } + + // implements Message ---------------------------------------------- + + inline CoerceToDomain* New() const final { + return CreateMaybeMessage(nullptr); + } + + CoerceToDomain* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { + return CreateMaybeMessage(arena); + } + void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void CopyFrom(const CoerceToDomain& from); + void MergeFrom(const CoerceToDomain& from); + PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; + bool IsInitialized() const final; + + size_t ByteSizeLong() const final; + const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; + ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( + ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; + int GetCachedSize() const final { return _cached_size_.Get(); } + + private: + inline void SharedCtor(); + inline void SharedDtor(); + void SetCachedSize(int size) const final; + void InternalSwap(CoerceToDomain* other); + friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; + static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { + return "pg_query.CoerceToDomain"; + } + protected: + explicit CoerceToDomain(::PROTOBUF_NAMESPACE_ID::Arena* arena); + private: + static void ArenaDtor(void* object); + inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); + public: + + ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; + private: + static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { + ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); + return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; + } + + public: + + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + + enum : int { + kXprFieldNumber = 1, + kArgFieldNumber = 2, + kResulttypeFieldNumber = 3, + kResulttypmodFieldNumber = 4, + kResultcollidFieldNumber = 5, + kCoercionformatFieldNumber = 6, + kLocationFieldNumber = 7, + }; + // .pg_query.Node xpr = 1 [json_name = "xpr"]; + bool has_xpr() const; + private: + bool _internal_has_xpr() const; + public: + void clear_xpr(); + const ::pg_query::Node& xpr() const; + ::pg_query::Node* release_xpr(); + ::pg_query::Node* mutable_xpr(); + void set_allocated_xpr(::pg_query::Node* xpr); + private: + const ::pg_query::Node& _internal_xpr() const; + ::pg_query::Node* _internal_mutable_xpr(); + public: + void unsafe_arena_set_allocated_xpr( + ::pg_query::Node* xpr); + ::pg_query::Node* unsafe_arena_release_xpr(); + + // .pg_query.Node arg = 2 [json_name = "arg"]; + bool has_arg() const; + private: + bool _internal_has_arg() const; + public: + void clear_arg(); + const ::pg_query::Node& arg() const; + ::pg_query::Node* release_arg(); + ::pg_query::Node* mutable_arg(); + void set_allocated_arg(::pg_query::Node* arg); + private: + const ::pg_query::Node& _internal_arg() const; + ::pg_query::Node* _internal_mutable_arg(); + public: + void unsafe_arena_set_allocated_arg( + ::pg_query::Node* arg); + ::pg_query::Node* unsafe_arena_release_arg(); + + // uint32 resulttype = 3 [json_name = "resulttype"]; + void clear_resulttype(); + ::PROTOBUF_NAMESPACE_ID::uint32 resulttype() const; + void set_resulttype(::PROTOBUF_NAMESPACE_ID::uint32 value); + private: + ::PROTOBUF_NAMESPACE_ID::uint32 _internal_resulttype() const; + void _internal_set_resulttype(::PROTOBUF_NAMESPACE_ID::uint32 value); + public: + + // int32 resulttypmod = 4 [json_name = "resulttypmod"]; + void clear_resulttypmod(); + ::PROTOBUF_NAMESPACE_ID::int32 resulttypmod() const; + void set_resulttypmod(::PROTOBUF_NAMESPACE_ID::int32 value); + private: + ::PROTOBUF_NAMESPACE_ID::int32 _internal_resulttypmod() const; + void _internal_set_resulttypmod(::PROTOBUF_NAMESPACE_ID::int32 value); + public: + + // uint32 resultcollid = 5 [json_name = "resultcollid"]; + void clear_resultcollid(); + ::PROTOBUF_NAMESPACE_ID::uint32 resultcollid() const; + void set_resultcollid(::PROTOBUF_NAMESPACE_ID::uint32 value); + private: + ::PROTOBUF_NAMESPACE_ID::uint32 _internal_resultcollid() const; + void _internal_set_resultcollid(::PROTOBUF_NAMESPACE_ID::uint32 value); + public: + + // .pg_query.CoercionForm coercionformat = 6 [json_name = "coercionformat"]; + void clear_coercionformat(); + ::pg_query::CoercionForm coercionformat() const; + void set_coercionformat(::pg_query::CoercionForm value); + private: + ::pg_query::CoercionForm _internal_coercionformat() const; + void _internal_set_coercionformat(::pg_query::CoercionForm value); + public: + + // int32 location = 7 [json_name = "location"]; + void clear_location(); + ::PROTOBUF_NAMESPACE_ID::int32 location() const; + void set_location(::PROTOBUF_NAMESPACE_ID::int32 value); + private: + ::PROTOBUF_NAMESPACE_ID::int32 _internal_location() const; + void _internal_set_location(::PROTOBUF_NAMESPACE_ID::int32 value); + public: + + // @@protoc_insertion_point(class_scope:pg_query.CoerceToDomain) + private: + class _Internal; + + template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; + typedef void InternalArenaConstructable_; + typedef void DestructorSkippable_; + ::pg_query::Node* xpr_; + ::pg_query::Node* arg_; + ::PROTOBUF_NAMESPACE_ID::uint32 resulttype_; + ::PROTOBUF_NAMESPACE_ID::int32 resulttypmod_; + ::PROTOBUF_NAMESPACE_ID::uint32 resultcollid_; + int coercionformat_; + ::PROTOBUF_NAMESPACE_ID::int32 location_; + mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; + friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; +}; +// ------------------------------------------------------------------- + +class CoerceToDomainValue PROTOBUF_FINAL : + public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.CoerceToDomainValue) */ { + public: + inline CoerceToDomainValue() : CoerceToDomainValue(nullptr) {} + virtual ~CoerceToDomainValue(); + + CoerceToDomainValue(const CoerceToDomainValue& from); + CoerceToDomainValue(CoerceToDomainValue&& from) noexcept + : CoerceToDomainValue() { + *this = ::std::move(from); + } + + inline CoerceToDomainValue& operator=(const CoerceToDomainValue& from) { + CopyFrom(from); + return *this; + } + inline CoerceToDomainValue& operator=(CoerceToDomainValue&& from) noexcept { + if (GetArena() == from.GetArena()) { + if (this != &from) InternalSwap(&from); + } else { + CopyFrom(from); + } + return *this; + } + + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { + return GetDescriptor(); + } + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { + return GetMetadataStatic().descriptor; + } + static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { + return GetMetadataStatic().reflection; + } + static const CoerceToDomainValue& default_instance(); + + static inline const CoerceToDomainValue* internal_default_instance() { + return reinterpret_cast( + &_CoerceToDomainValue_default_instance_); + } + static constexpr int kIndexInFileMessages = + 52; + + friend void swap(CoerceToDomainValue& a, CoerceToDomainValue& b) { + a.Swap(&b); + } + inline void Swap(CoerceToDomainValue* other) { + if (other == this) return; + if (GetArena() == other->GetArena()) { + InternalSwap(other); + } else { + ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); + } + } + void UnsafeArenaSwap(CoerceToDomainValue* other) { + if (other == this) return; + GOOGLE_DCHECK(GetArena() == other->GetArena()); + InternalSwap(other); + } + + // implements Message ---------------------------------------------- + + inline CoerceToDomainValue* New() const final { + return CreateMaybeMessage(nullptr); + } + + CoerceToDomainValue* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { + return CreateMaybeMessage(arena); + } + void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void CopyFrom(const CoerceToDomainValue& from); + void MergeFrom(const CoerceToDomainValue& from); + PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; + bool IsInitialized() const final; + + size_t ByteSizeLong() const final; + const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; + ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( + ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; + int GetCachedSize() const final { return _cached_size_.Get(); } + + private: + inline void SharedCtor(); + inline void SharedDtor(); + void SetCachedSize(int size) const final; + void InternalSwap(CoerceToDomainValue* other); + friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; + static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { + return "pg_query.CoerceToDomainValue"; + } + protected: + explicit CoerceToDomainValue(::PROTOBUF_NAMESPACE_ID::Arena* arena); + private: + static void ArenaDtor(void* object); + inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); + public: + + ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; + private: + static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { + ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); + return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; + } + + public: + + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + + enum : int { + kXprFieldNumber = 1, + kTypeIdFieldNumber = 2, + kTypeModFieldNumber = 3, + kCollationFieldNumber = 4, + kLocationFieldNumber = 5, + }; + // .pg_query.Node xpr = 1 [json_name = "xpr"]; + bool has_xpr() const; + private: + bool _internal_has_xpr() const; + public: + void clear_xpr(); + const ::pg_query::Node& xpr() const; + ::pg_query::Node* release_xpr(); + ::pg_query::Node* mutable_xpr(); + void set_allocated_xpr(::pg_query::Node* xpr); + private: + const ::pg_query::Node& _internal_xpr() const; + ::pg_query::Node* _internal_mutable_xpr(); + public: + void unsafe_arena_set_allocated_xpr( + ::pg_query::Node* xpr); + ::pg_query::Node* unsafe_arena_release_xpr(); + + // uint32 type_id = 2 [json_name = "typeId"]; + void clear_type_id(); + ::PROTOBUF_NAMESPACE_ID::uint32 type_id() const; + void set_type_id(::PROTOBUF_NAMESPACE_ID::uint32 value); + private: + ::PROTOBUF_NAMESPACE_ID::uint32 _internal_type_id() const; + void _internal_set_type_id(::PROTOBUF_NAMESPACE_ID::uint32 value); + public: + + // int32 type_mod = 3 [json_name = "typeMod"]; + void clear_type_mod(); + ::PROTOBUF_NAMESPACE_ID::int32 type_mod() const; + void set_type_mod(::PROTOBUF_NAMESPACE_ID::int32 value); + private: + ::PROTOBUF_NAMESPACE_ID::int32 _internal_type_mod() const; + void _internal_set_type_mod(::PROTOBUF_NAMESPACE_ID::int32 value); + public: + + // uint32 collation = 4 [json_name = "collation"]; + void clear_collation(); + ::PROTOBUF_NAMESPACE_ID::uint32 collation() const; + void set_collation(::PROTOBUF_NAMESPACE_ID::uint32 value); + private: + ::PROTOBUF_NAMESPACE_ID::uint32 _internal_collation() const; + void _internal_set_collation(::PROTOBUF_NAMESPACE_ID::uint32 value); + public: + + // int32 location = 5 [json_name = "location"]; + void clear_location(); + ::PROTOBUF_NAMESPACE_ID::int32 location() const; + void set_location(::PROTOBUF_NAMESPACE_ID::int32 value); + private: + ::PROTOBUF_NAMESPACE_ID::int32 _internal_location() const; + void _internal_set_location(::PROTOBUF_NAMESPACE_ID::int32 value); + public: + + // @@protoc_insertion_point(class_scope:pg_query.CoerceToDomainValue) + private: + class _Internal; + + template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; + typedef void InternalArenaConstructable_; + typedef void DestructorSkippable_; + ::pg_query::Node* xpr_; + ::PROTOBUF_NAMESPACE_ID::uint32 type_id_; + ::PROTOBUF_NAMESPACE_ID::int32 type_mod_; + ::PROTOBUF_NAMESPACE_ID::uint32 collation_; + ::PROTOBUF_NAMESPACE_ID::int32 location_; + mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; + friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; +}; +// ------------------------------------------------------------------- + +class SetToDefault PROTOBUF_FINAL : + public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.SetToDefault) */ { + public: + inline SetToDefault() : SetToDefault(nullptr) {} + virtual ~SetToDefault(); + + SetToDefault(const SetToDefault& from); + SetToDefault(SetToDefault&& from) noexcept + : SetToDefault() { + *this = ::std::move(from); + } + + inline SetToDefault& operator=(const SetToDefault& from) { + CopyFrom(from); + return *this; + } + inline SetToDefault& operator=(SetToDefault&& from) noexcept { + if (GetArena() == from.GetArena()) { + if (this != &from) InternalSwap(&from); + } else { + CopyFrom(from); + } + return *this; + } + + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { + return GetDescriptor(); + } + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { + return GetMetadataStatic().descriptor; + } + static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { + return GetMetadataStatic().reflection; + } + static const SetToDefault& default_instance(); + + static inline const SetToDefault* internal_default_instance() { + return reinterpret_cast( + &_SetToDefault_default_instance_); + } + static constexpr int kIndexInFileMessages = + 53; + + friend void swap(SetToDefault& a, SetToDefault& b) { + a.Swap(&b); + } + inline void Swap(SetToDefault* other) { + if (other == this) return; + if (GetArena() == other->GetArena()) { + InternalSwap(other); + } else { + ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); + } + } + void UnsafeArenaSwap(SetToDefault* other) { + if (other == this) return; + GOOGLE_DCHECK(GetArena() == other->GetArena()); + InternalSwap(other); + } + + // implements Message ---------------------------------------------- + + inline SetToDefault* New() const final { + return CreateMaybeMessage(nullptr); + } + + SetToDefault* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { + return CreateMaybeMessage(arena); + } + void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void CopyFrom(const SetToDefault& from); + void MergeFrom(const SetToDefault& from); + PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; + bool IsInitialized() const final; + + size_t ByteSizeLong() const final; + const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; + ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( + ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; + int GetCachedSize() const final { return _cached_size_.Get(); } + + private: + inline void SharedCtor(); + inline void SharedDtor(); + void SetCachedSize(int size) const final; + void InternalSwap(SetToDefault* other); + friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; + static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { + return "pg_query.SetToDefault"; + } + protected: + explicit SetToDefault(::PROTOBUF_NAMESPACE_ID::Arena* arena); + private: + static void ArenaDtor(void* object); + inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); + public: + + ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; + private: + static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { + ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); + return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; + } + + public: + + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + + enum : int { + kXprFieldNumber = 1, + kTypeIdFieldNumber = 2, + kTypeModFieldNumber = 3, + kCollationFieldNumber = 4, + kLocationFieldNumber = 5, + }; + // .pg_query.Node xpr = 1 [json_name = "xpr"]; + bool has_xpr() const; + private: + bool _internal_has_xpr() const; + public: + void clear_xpr(); + const ::pg_query::Node& xpr() const; + ::pg_query::Node* release_xpr(); + ::pg_query::Node* mutable_xpr(); + void set_allocated_xpr(::pg_query::Node* xpr); + private: + const ::pg_query::Node& _internal_xpr() const; + ::pg_query::Node* _internal_mutable_xpr(); + public: + void unsafe_arena_set_allocated_xpr( + ::pg_query::Node* xpr); + ::pg_query::Node* unsafe_arena_release_xpr(); + + // uint32 type_id = 2 [json_name = "typeId"]; + void clear_type_id(); + ::PROTOBUF_NAMESPACE_ID::uint32 type_id() const; + void set_type_id(::PROTOBUF_NAMESPACE_ID::uint32 value); + private: + ::PROTOBUF_NAMESPACE_ID::uint32 _internal_type_id() const; + void _internal_set_type_id(::PROTOBUF_NAMESPACE_ID::uint32 value); + public: + + // int32 type_mod = 3 [json_name = "typeMod"]; + void clear_type_mod(); + ::PROTOBUF_NAMESPACE_ID::int32 type_mod() const; + void set_type_mod(::PROTOBUF_NAMESPACE_ID::int32 value); + private: + ::PROTOBUF_NAMESPACE_ID::int32 _internal_type_mod() const; + void _internal_set_type_mod(::PROTOBUF_NAMESPACE_ID::int32 value); + public: + + // uint32 collation = 4 [json_name = "collation"]; + void clear_collation(); + ::PROTOBUF_NAMESPACE_ID::uint32 collation() const; + void set_collation(::PROTOBUF_NAMESPACE_ID::uint32 value); + private: + ::PROTOBUF_NAMESPACE_ID::uint32 _internal_collation() const; + void _internal_set_collation(::PROTOBUF_NAMESPACE_ID::uint32 value); + public: + + // int32 location = 5 [json_name = "location"]; + void clear_location(); + ::PROTOBUF_NAMESPACE_ID::int32 location() const; + void set_location(::PROTOBUF_NAMESPACE_ID::int32 value); + private: + ::PROTOBUF_NAMESPACE_ID::int32 _internal_location() const; + void _internal_set_location(::PROTOBUF_NAMESPACE_ID::int32 value); + public: + + // @@protoc_insertion_point(class_scope:pg_query.SetToDefault) + private: + class _Internal; + + template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; + typedef void InternalArenaConstructable_; + typedef void DestructorSkippable_; + ::pg_query::Node* xpr_; + ::PROTOBUF_NAMESPACE_ID::uint32 type_id_; + ::PROTOBUF_NAMESPACE_ID::int32 type_mod_; + ::PROTOBUF_NAMESPACE_ID::uint32 collation_; + ::PROTOBUF_NAMESPACE_ID::int32 location_; + mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; + friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; +}; +// ------------------------------------------------------------------- + +class CurrentOfExpr PROTOBUF_FINAL : + public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.CurrentOfExpr) */ { + public: + inline CurrentOfExpr() : CurrentOfExpr(nullptr) {} + virtual ~CurrentOfExpr(); + + CurrentOfExpr(const CurrentOfExpr& from); + CurrentOfExpr(CurrentOfExpr&& from) noexcept + : CurrentOfExpr() { + *this = ::std::move(from); + } + + inline CurrentOfExpr& operator=(const CurrentOfExpr& from) { + CopyFrom(from); + return *this; + } + inline CurrentOfExpr& operator=(CurrentOfExpr&& from) noexcept { + if (GetArena() == from.GetArena()) { + if (this != &from) InternalSwap(&from); + } else { + CopyFrom(from); + } + return *this; + } + + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { + return GetDescriptor(); + } + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { + return GetMetadataStatic().descriptor; + } + static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { + return GetMetadataStatic().reflection; + } + static const CurrentOfExpr& default_instance(); + + static inline const CurrentOfExpr* internal_default_instance() { + return reinterpret_cast( + &_CurrentOfExpr_default_instance_); + } + static constexpr int kIndexInFileMessages = + 54; + + friend void swap(CurrentOfExpr& a, CurrentOfExpr& b) { + a.Swap(&b); + } + inline void Swap(CurrentOfExpr* other) { + if (other == this) return; + if (GetArena() == other->GetArena()) { + InternalSwap(other); + } else { + ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); + } + } + void UnsafeArenaSwap(CurrentOfExpr* other) { + if (other == this) return; + GOOGLE_DCHECK(GetArena() == other->GetArena()); + InternalSwap(other); + } + + // implements Message ---------------------------------------------- + + inline CurrentOfExpr* New() const final { + return CreateMaybeMessage(nullptr); + } + + CurrentOfExpr* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { + return CreateMaybeMessage(arena); + } + void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void CopyFrom(const CurrentOfExpr& from); + void MergeFrom(const CurrentOfExpr& from); + PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; + bool IsInitialized() const final; + + size_t ByteSizeLong() const final; + const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; + ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( + ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; + int GetCachedSize() const final { return _cached_size_.Get(); } + + private: + inline void SharedCtor(); + inline void SharedDtor(); + void SetCachedSize(int size) const final; + void InternalSwap(CurrentOfExpr* other); + friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; + static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { + return "pg_query.CurrentOfExpr"; + } + protected: + explicit CurrentOfExpr(::PROTOBUF_NAMESPACE_ID::Arena* arena); + private: + static void ArenaDtor(void* object); + inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); + public: + + ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; + private: + static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { + ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); + return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; + } + + public: + + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + + enum : int { + kCursorNameFieldNumber = 3, + kXprFieldNumber = 1, + kCvarnoFieldNumber = 2, + kCursorParamFieldNumber = 4, + }; + // string cursor_name = 3 [json_name = "cursor_name"]; + void clear_cursor_name(); + const std::string& cursor_name() const; + void set_cursor_name(const std::string& value); + void set_cursor_name(std::string&& value); + void set_cursor_name(const char* value); + void set_cursor_name(const char* value, size_t size); + std::string* mutable_cursor_name(); + std::string* release_cursor_name(); + void set_allocated_cursor_name(std::string* cursor_name); + private: + const std::string& _internal_cursor_name() const; + void _internal_set_cursor_name(const std::string& value); + std::string* _internal_mutable_cursor_name(); + public: + + // .pg_query.Node xpr = 1 [json_name = "xpr"]; + bool has_xpr() const; + private: + bool _internal_has_xpr() const; + public: + void clear_xpr(); + const ::pg_query::Node& xpr() const; + ::pg_query::Node* release_xpr(); + ::pg_query::Node* mutable_xpr(); + void set_allocated_xpr(::pg_query::Node* xpr); + private: + const ::pg_query::Node& _internal_xpr() const; + ::pg_query::Node* _internal_mutable_xpr(); + public: + void unsafe_arena_set_allocated_xpr( + ::pg_query::Node* xpr); + ::pg_query::Node* unsafe_arena_release_xpr(); + + // uint32 cvarno = 2 [json_name = "cvarno"]; + void clear_cvarno(); + ::PROTOBUF_NAMESPACE_ID::uint32 cvarno() const; + void set_cvarno(::PROTOBUF_NAMESPACE_ID::uint32 value); + private: + ::PROTOBUF_NAMESPACE_ID::uint32 _internal_cvarno() const; + void _internal_set_cvarno(::PROTOBUF_NAMESPACE_ID::uint32 value); + public: + + // int32 cursor_param = 4 [json_name = "cursor_param"]; + void clear_cursor_param(); + ::PROTOBUF_NAMESPACE_ID::int32 cursor_param() const; + void set_cursor_param(::PROTOBUF_NAMESPACE_ID::int32 value); + private: + ::PROTOBUF_NAMESPACE_ID::int32 _internal_cursor_param() const; + void _internal_set_cursor_param(::PROTOBUF_NAMESPACE_ID::int32 value); + public: + + // @@protoc_insertion_point(class_scope:pg_query.CurrentOfExpr) + private: + class _Internal; + + template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; + typedef void InternalArenaConstructable_; + typedef void DestructorSkippable_; + ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr cursor_name_; + ::pg_query::Node* xpr_; + ::PROTOBUF_NAMESPACE_ID::uint32 cvarno_; + ::PROTOBUF_NAMESPACE_ID::int32 cursor_param_; + mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; + friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; +}; +// ------------------------------------------------------------------- + +class NextValueExpr PROTOBUF_FINAL : + public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.NextValueExpr) */ { + public: + inline NextValueExpr() : NextValueExpr(nullptr) {} + virtual ~NextValueExpr(); + + NextValueExpr(const NextValueExpr& from); + NextValueExpr(NextValueExpr&& from) noexcept + : NextValueExpr() { + *this = ::std::move(from); + } + + inline NextValueExpr& operator=(const NextValueExpr& from) { + CopyFrom(from); + return *this; + } + inline NextValueExpr& operator=(NextValueExpr&& from) noexcept { + if (GetArena() == from.GetArena()) { + if (this != &from) InternalSwap(&from); + } else { + CopyFrom(from); + } + return *this; + } + + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { + return GetDescriptor(); + } + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { + return GetMetadataStatic().descriptor; + } + static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { + return GetMetadataStatic().reflection; + } + static const NextValueExpr& default_instance(); + + static inline const NextValueExpr* internal_default_instance() { + return reinterpret_cast( + &_NextValueExpr_default_instance_); + } + static constexpr int kIndexInFileMessages = + 55; + + friend void swap(NextValueExpr& a, NextValueExpr& b) { + a.Swap(&b); + } + inline void Swap(NextValueExpr* other) { + if (other == this) return; + if (GetArena() == other->GetArena()) { + InternalSwap(other); + } else { + ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); + } + } + void UnsafeArenaSwap(NextValueExpr* other) { + if (other == this) return; + GOOGLE_DCHECK(GetArena() == other->GetArena()); + InternalSwap(other); + } + + // implements Message ---------------------------------------------- + + inline NextValueExpr* New() const final { + return CreateMaybeMessage(nullptr); + } + + NextValueExpr* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { + return CreateMaybeMessage(arena); + } + void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void CopyFrom(const NextValueExpr& from); + void MergeFrom(const NextValueExpr& from); + PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; + bool IsInitialized() const final; + + size_t ByteSizeLong() const final; + const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; + ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( + ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; + int GetCachedSize() const final { return _cached_size_.Get(); } + + private: + inline void SharedCtor(); + inline void SharedDtor(); + void SetCachedSize(int size) const final; + void InternalSwap(NextValueExpr* other); + friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; + static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { + return "pg_query.NextValueExpr"; + } + protected: + explicit NextValueExpr(::PROTOBUF_NAMESPACE_ID::Arena* arena); + private: + static void ArenaDtor(void* object); + inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); + public: + + ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; + private: + static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { + ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); + return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; + } + + public: + + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + + enum : int { + kXprFieldNumber = 1, + kSeqidFieldNumber = 2, + kTypeIdFieldNumber = 3, + }; + // .pg_query.Node xpr = 1 [json_name = "xpr"]; + bool has_xpr() const; + private: + bool _internal_has_xpr() const; + public: + void clear_xpr(); + const ::pg_query::Node& xpr() const; + ::pg_query::Node* release_xpr(); + ::pg_query::Node* mutable_xpr(); + void set_allocated_xpr(::pg_query::Node* xpr); + private: + const ::pg_query::Node& _internal_xpr() const; + ::pg_query::Node* _internal_mutable_xpr(); + public: + void unsafe_arena_set_allocated_xpr( + ::pg_query::Node* xpr); + ::pg_query::Node* unsafe_arena_release_xpr(); + + // uint32 seqid = 2 [json_name = "seqid"]; + void clear_seqid(); + ::PROTOBUF_NAMESPACE_ID::uint32 seqid() const; + void set_seqid(::PROTOBUF_NAMESPACE_ID::uint32 value); + private: + ::PROTOBUF_NAMESPACE_ID::uint32 _internal_seqid() const; + void _internal_set_seqid(::PROTOBUF_NAMESPACE_ID::uint32 value); + public: + + // uint32 type_id = 3 [json_name = "typeId"]; + void clear_type_id(); + ::PROTOBUF_NAMESPACE_ID::uint32 type_id() const; + void set_type_id(::PROTOBUF_NAMESPACE_ID::uint32 value); + private: + ::PROTOBUF_NAMESPACE_ID::uint32 _internal_type_id() const; + void _internal_set_type_id(::PROTOBUF_NAMESPACE_ID::uint32 value); + public: + + // @@protoc_insertion_point(class_scope:pg_query.NextValueExpr) + private: + class _Internal; + + template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; + typedef void InternalArenaConstructable_; + typedef void DestructorSkippable_; + ::pg_query::Node* xpr_; + ::PROTOBUF_NAMESPACE_ID::uint32 seqid_; + ::PROTOBUF_NAMESPACE_ID::uint32 type_id_; + mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; + friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; +}; +// ------------------------------------------------------------------- + +class InferenceElem PROTOBUF_FINAL : + public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.InferenceElem) */ { + public: + inline InferenceElem() : InferenceElem(nullptr) {} + virtual ~InferenceElem(); + + InferenceElem(const InferenceElem& from); + InferenceElem(InferenceElem&& from) noexcept + : InferenceElem() { + *this = ::std::move(from); + } + + inline InferenceElem& operator=(const InferenceElem& from) { + CopyFrom(from); + return *this; + } + inline InferenceElem& operator=(InferenceElem&& from) noexcept { + if (GetArena() == from.GetArena()) { + if (this != &from) InternalSwap(&from); + } else { + CopyFrom(from); + } + return *this; + } + + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { + return GetDescriptor(); + } + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { + return GetMetadataStatic().descriptor; + } + static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { + return GetMetadataStatic().reflection; + } + static const InferenceElem& default_instance(); + + static inline const InferenceElem* internal_default_instance() { + return reinterpret_cast( + &_InferenceElem_default_instance_); + } + static constexpr int kIndexInFileMessages = + 56; + + friend void swap(InferenceElem& a, InferenceElem& b) { + a.Swap(&b); + } + inline void Swap(InferenceElem* other) { + if (other == this) return; + if (GetArena() == other->GetArena()) { + InternalSwap(other); + } else { + ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); + } + } + void UnsafeArenaSwap(InferenceElem* other) { + if (other == this) return; + GOOGLE_DCHECK(GetArena() == other->GetArena()); + InternalSwap(other); + } + + // implements Message ---------------------------------------------- + + inline InferenceElem* New() const final { + return CreateMaybeMessage(nullptr); + } + + InferenceElem* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { + return CreateMaybeMessage(arena); + } + void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void CopyFrom(const InferenceElem& from); + void MergeFrom(const InferenceElem& from); + PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; + bool IsInitialized() const final; + + size_t ByteSizeLong() const final; + const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; + ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( + ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; + int GetCachedSize() const final { return _cached_size_.Get(); } + + private: + inline void SharedCtor(); + inline void SharedDtor(); + void SetCachedSize(int size) const final; + void InternalSwap(InferenceElem* other); + friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; + static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { + return "pg_query.InferenceElem"; + } + protected: + explicit InferenceElem(::PROTOBUF_NAMESPACE_ID::Arena* arena); + private: + static void ArenaDtor(void* object); + inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); + public: + + ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; + private: + static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { + ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); + return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; + } + + public: + + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + + enum : int { + kXprFieldNumber = 1, + kExprFieldNumber = 2, + kInfercollidFieldNumber = 3, + kInferopclassFieldNumber = 4, + }; + // .pg_query.Node xpr = 1 [json_name = "xpr"]; + bool has_xpr() const; + private: + bool _internal_has_xpr() const; + public: + void clear_xpr(); + const ::pg_query::Node& xpr() const; + ::pg_query::Node* release_xpr(); + ::pg_query::Node* mutable_xpr(); + void set_allocated_xpr(::pg_query::Node* xpr); + private: + const ::pg_query::Node& _internal_xpr() const; + ::pg_query::Node* _internal_mutable_xpr(); + public: + void unsafe_arena_set_allocated_xpr( + ::pg_query::Node* xpr); + ::pg_query::Node* unsafe_arena_release_xpr(); + + // .pg_query.Node expr = 2 [json_name = "expr"]; + bool has_expr() const; + private: + bool _internal_has_expr() const; + public: + void clear_expr(); + const ::pg_query::Node& expr() const; + ::pg_query::Node* release_expr(); + ::pg_query::Node* mutable_expr(); + void set_allocated_expr(::pg_query::Node* expr); + private: + const ::pg_query::Node& _internal_expr() const; + ::pg_query::Node* _internal_mutable_expr(); + public: + void unsafe_arena_set_allocated_expr( + ::pg_query::Node* expr); + ::pg_query::Node* unsafe_arena_release_expr(); + + // uint32 infercollid = 3 [json_name = "infercollid"]; + void clear_infercollid(); + ::PROTOBUF_NAMESPACE_ID::uint32 infercollid() const; + void set_infercollid(::PROTOBUF_NAMESPACE_ID::uint32 value); + private: + ::PROTOBUF_NAMESPACE_ID::uint32 _internal_infercollid() const; + void _internal_set_infercollid(::PROTOBUF_NAMESPACE_ID::uint32 value); + public: + + // uint32 inferopclass = 4 [json_name = "inferopclass"]; + void clear_inferopclass(); + ::PROTOBUF_NAMESPACE_ID::uint32 inferopclass() const; + void set_inferopclass(::PROTOBUF_NAMESPACE_ID::uint32 value); + private: + ::PROTOBUF_NAMESPACE_ID::uint32 _internal_inferopclass() const; + void _internal_set_inferopclass(::PROTOBUF_NAMESPACE_ID::uint32 value); + public: + + // @@protoc_insertion_point(class_scope:pg_query.InferenceElem) + private: + class _Internal; + + template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; + typedef void InternalArenaConstructable_; + typedef void DestructorSkippable_; + ::pg_query::Node* xpr_; + ::pg_query::Node* expr_; + ::PROTOBUF_NAMESPACE_ID::uint32 infercollid_; + ::PROTOBUF_NAMESPACE_ID::uint32 inferopclass_; + mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; + friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; +}; +// ------------------------------------------------------------------- + +class TargetEntry PROTOBUF_FINAL : + public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.TargetEntry) */ { + public: + inline TargetEntry() : TargetEntry(nullptr) {} + virtual ~TargetEntry(); + + TargetEntry(const TargetEntry& from); + TargetEntry(TargetEntry&& from) noexcept + : TargetEntry() { + *this = ::std::move(from); + } + + inline TargetEntry& operator=(const TargetEntry& from) { + CopyFrom(from); + return *this; + } + inline TargetEntry& operator=(TargetEntry&& from) noexcept { + if (GetArena() == from.GetArena()) { + if (this != &from) InternalSwap(&from); + } else { + CopyFrom(from); + } + return *this; + } + + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { + return GetDescriptor(); + } + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { + return GetMetadataStatic().descriptor; + } + static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { + return GetMetadataStatic().reflection; + } + static const TargetEntry& default_instance(); + + static inline const TargetEntry* internal_default_instance() { + return reinterpret_cast( + &_TargetEntry_default_instance_); + } + static constexpr int kIndexInFileMessages = + 57; + + friend void swap(TargetEntry& a, TargetEntry& b) { + a.Swap(&b); + } + inline void Swap(TargetEntry* other) { + if (other == this) return; + if (GetArena() == other->GetArena()) { + InternalSwap(other); + } else { + ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); + } + } + void UnsafeArenaSwap(TargetEntry* other) { + if (other == this) return; + GOOGLE_DCHECK(GetArena() == other->GetArena()); + InternalSwap(other); + } + + // implements Message ---------------------------------------------- + + inline TargetEntry* New() const final { + return CreateMaybeMessage(nullptr); + } + + TargetEntry* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { + return CreateMaybeMessage(arena); + } + void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void CopyFrom(const TargetEntry& from); + void MergeFrom(const TargetEntry& from); + PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; + bool IsInitialized() const final; + + size_t ByteSizeLong() const final; + const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; + ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( + ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; + int GetCachedSize() const final { return _cached_size_.Get(); } + + private: + inline void SharedCtor(); + inline void SharedDtor(); + void SetCachedSize(int size) const final; + void InternalSwap(TargetEntry* other); + friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; + static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { + return "pg_query.TargetEntry"; + } + protected: + explicit TargetEntry(::PROTOBUF_NAMESPACE_ID::Arena* arena); + private: + static void ArenaDtor(void* object); + inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); + public: + + ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; + private: + static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { + ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); + return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; + } + + public: + + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + + enum : int { + kResnameFieldNumber = 4, + kXprFieldNumber = 1, + kExprFieldNumber = 2, + kResnoFieldNumber = 3, + kRessortgrouprefFieldNumber = 5, + kResorigtblFieldNumber = 6, + kResorigcolFieldNumber = 7, + kResjunkFieldNumber = 8, + }; + // string resname = 4 [json_name = "resname"]; + void clear_resname(); + const std::string& resname() const; + void set_resname(const std::string& value); + void set_resname(std::string&& value); + void set_resname(const char* value); + void set_resname(const char* value, size_t size); + std::string* mutable_resname(); + std::string* release_resname(); + void set_allocated_resname(std::string* resname); + private: + const std::string& _internal_resname() const; + void _internal_set_resname(const std::string& value); + std::string* _internal_mutable_resname(); + public: + + // .pg_query.Node xpr = 1 [json_name = "xpr"]; + bool has_xpr() const; + private: + bool _internal_has_xpr() const; + public: + void clear_xpr(); + const ::pg_query::Node& xpr() const; + ::pg_query::Node* release_xpr(); + ::pg_query::Node* mutable_xpr(); + void set_allocated_xpr(::pg_query::Node* xpr); + private: + const ::pg_query::Node& _internal_xpr() const; + ::pg_query::Node* _internal_mutable_xpr(); + public: + void unsafe_arena_set_allocated_xpr( + ::pg_query::Node* xpr); + ::pg_query::Node* unsafe_arena_release_xpr(); + + // .pg_query.Node expr = 2 [json_name = "expr"]; + bool has_expr() const; + private: + bool _internal_has_expr() const; + public: + void clear_expr(); + const ::pg_query::Node& expr() const; + ::pg_query::Node* release_expr(); + ::pg_query::Node* mutable_expr(); + void set_allocated_expr(::pg_query::Node* expr); + private: + const ::pg_query::Node& _internal_expr() const; + ::pg_query::Node* _internal_mutable_expr(); + public: + void unsafe_arena_set_allocated_expr( + ::pg_query::Node* expr); + ::pg_query::Node* unsafe_arena_release_expr(); + + // int32 resno = 3 [json_name = "resno"]; + void clear_resno(); + ::PROTOBUF_NAMESPACE_ID::int32 resno() const; + void set_resno(::PROTOBUF_NAMESPACE_ID::int32 value); + private: + ::PROTOBUF_NAMESPACE_ID::int32 _internal_resno() const; + void _internal_set_resno(::PROTOBUF_NAMESPACE_ID::int32 value); + public: + + // uint32 ressortgroupref = 5 [json_name = "ressortgroupref"]; + void clear_ressortgroupref(); + ::PROTOBUF_NAMESPACE_ID::uint32 ressortgroupref() const; + void set_ressortgroupref(::PROTOBUF_NAMESPACE_ID::uint32 value); + private: + ::PROTOBUF_NAMESPACE_ID::uint32 _internal_ressortgroupref() const; + void _internal_set_ressortgroupref(::PROTOBUF_NAMESPACE_ID::uint32 value); + public: + + // uint32 resorigtbl = 6 [json_name = "resorigtbl"]; + void clear_resorigtbl(); + ::PROTOBUF_NAMESPACE_ID::uint32 resorigtbl() const; + void set_resorigtbl(::PROTOBUF_NAMESPACE_ID::uint32 value); + private: + ::PROTOBUF_NAMESPACE_ID::uint32 _internal_resorigtbl() const; + void _internal_set_resorigtbl(::PROTOBUF_NAMESPACE_ID::uint32 value); + public: + + // int32 resorigcol = 7 [json_name = "resorigcol"]; + void clear_resorigcol(); + ::PROTOBUF_NAMESPACE_ID::int32 resorigcol() const; + void set_resorigcol(::PROTOBUF_NAMESPACE_ID::int32 value); + private: + ::PROTOBUF_NAMESPACE_ID::int32 _internal_resorigcol() const; + void _internal_set_resorigcol(::PROTOBUF_NAMESPACE_ID::int32 value); + public: + + // bool resjunk = 8 [json_name = "resjunk"]; + void clear_resjunk(); + bool resjunk() const; + void set_resjunk(bool value); + private: + bool _internal_resjunk() const; + void _internal_set_resjunk(bool value); + public: + + // @@protoc_insertion_point(class_scope:pg_query.TargetEntry) + private: + class _Internal; + + template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; + typedef void InternalArenaConstructable_; + typedef void DestructorSkippable_; + ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr resname_; + ::pg_query::Node* xpr_; + ::pg_query::Node* expr_; + ::PROTOBUF_NAMESPACE_ID::int32 resno_; + ::PROTOBUF_NAMESPACE_ID::uint32 ressortgroupref_; + ::PROTOBUF_NAMESPACE_ID::uint32 resorigtbl_; + ::PROTOBUF_NAMESPACE_ID::int32 resorigcol_; + bool resjunk_; + mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; + friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; +}; +// ------------------------------------------------------------------- + +class RangeTblRef PROTOBUF_FINAL : + public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.RangeTblRef) */ { + public: + inline RangeTblRef() : RangeTblRef(nullptr) {} + virtual ~RangeTblRef(); + + RangeTblRef(const RangeTblRef& from); + RangeTblRef(RangeTblRef&& from) noexcept + : RangeTblRef() { + *this = ::std::move(from); + } + + inline RangeTblRef& operator=(const RangeTblRef& from) { + CopyFrom(from); + return *this; + } + inline RangeTblRef& operator=(RangeTblRef&& from) noexcept { + if (GetArena() == from.GetArena()) { + if (this != &from) InternalSwap(&from); + } else { + CopyFrom(from); + } + return *this; + } + + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { + return GetDescriptor(); + } + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { + return GetMetadataStatic().descriptor; + } + static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { + return GetMetadataStatic().reflection; + } + static const RangeTblRef& default_instance(); + + static inline const RangeTblRef* internal_default_instance() { + return reinterpret_cast( + &_RangeTblRef_default_instance_); + } + static constexpr int kIndexInFileMessages = + 58; + + friend void swap(RangeTblRef& a, RangeTblRef& b) { + a.Swap(&b); + } + inline void Swap(RangeTblRef* other) { + if (other == this) return; + if (GetArena() == other->GetArena()) { + InternalSwap(other); + } else { + ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); + } + } + void UnsafeArenaSwap(RangeTblRef* other) { + if (other == this) return; + GOOGLE_DCHECK(GetArena() == other->GetArena()); + InternalSwap(other); + } + + // implements Message ---------------------------------------------- + + inline RangeTblRef* New() const final { + return CreateMaybeMessage(nullptr); + } + + RangeTblRef* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { + return CreateMaybeMessage(arena); + } + void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void CopyFrom(const RangeTblRef& from); + void MergeFrom(const RangeTblRef& from); + PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; + bool IsInitialized() const final; + + size_t ByteSizeLong() const final; + const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; + ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( + ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; + int GetCachedSize() const final { return _cached_size_.Get(); } + + private: + inline void SharedCtor(); + inline void SharedDtor(); + void SetCachedSize(int size) const final; + void InternalSwap(RangeTblRef* other); + friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; + static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { + return "pg_query.RangeTblRef"; + } + protected: + explicit RangeTblRef(::PROTOBUF_NAMESPACE_ID::Arena* arena); + private: + static void ArenaDtor(void* object); + inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); + public: + + ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; + private: + static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { + ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); + return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; + } + + public: + + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + + enum : int { + kRtindexFieldNumber = 1, + }; + // int32 rtindex = 1 [json_name = "rtindex"]; + void clear_rtindex(); + ::PROTOBUF_NAMESPACE_ID::int32 rtindex() const; + void set_rtindex(::PROTOBUF_NAMESPACE_ID::int32 value); + private: + ::PROTOBUF_NAMESPACE_ID::int32 _internal_rtindex() const; + void _internal_set_rtindex(::PROTOBUF_NAMESPACE_ID::int32 value); + public: + + // @@protoc_insertion_point(class_scope:pg_query.RangeTblRef) + private: + class _Internal; + + template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; + typedef void InternalArenaConstructable_; + typedef void DestructorSkippable_; + ::PROTOBUF_NAMESPACE_ID::int32 rtindex_; + mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; + friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; +}; +// ------------------------------------------------------------------- + +class JoinExpr PROTOBUF_FINAL : + public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.JoinExpr) */ { + public: + inline JoinExpr() : JoinExpr(nullptr) {} + virtual ~JoinExpr(); + + JoinExpr(const JoinExpr& from); + JoinExpr(JoinExpr&& from) noexcept + : JoinExpr() { + *this = ::std::move(from); + } + + inline JoinExpr& operator=(const JoinExpr& from) { + CopyFrom(from); + return *this; + } + inline JoinExpr& operator=(JoinExpr&& from) noexcept { + if (GetArena() == from.GetArena()) { + if (this != &from) InternalSwap(&from); + } else { + CopyFrom(from); + } + return *this; + } + + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { + return GetDescriptor(); + } + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { + return GetMetadataStatic().descriptor; + } + static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { + return GetMetadataStatic().reflection; + } + static const JoinExpr& default_instance(); + + static inline const JoinExpr* internal_default_instance() { + return reinterpret_cast( + &_JoinExpr_default_instance_); + } + static constexpr int kIndexInFileMessages = + 59; + + friend void swap(JoinExpr& a, JoinExpr& b) { + a.Swap(&b); + } + inline void Swap(JoinExpr* other) { + if (other == this) return; + if (GetArena() == other->GetArena()) { + InternalSwap(other); + } else { + ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); + } + } + void UnsafeArenaSwap(JoinExpr* other) { + if (other == this) return; + GOOGLE_DCHECK(GetArena() == other->GetArena()); + InternalSwap(other); + } + + // implements Message ---------------------------------------------- + + inline JoinExpr* New() const final { + return CreateMaybeMessage(nullptr); + } + + JoinExpr* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { + return CreateMaybeMessage(arena); + } + void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void CopyFrom(const JoinExpr& from); + void MergeFrom(const JoinExpr& from); + PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; + bool IsInitialized() const final; + + size_t ByteSizeLong() const final; + const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; + ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( + ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; + int GetCachedSize() const final { return _cached_size_.Get(); } + + private: + inline void SharedCtor(); + inline void SharedDtor(); + void SetCachedSize(int size) const final; + void InternalSwap(JoinExpr* other); + friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; + static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { + return "pg_query.JoinExpr"; + } + protected: + explicit JoinExpr(::PROTOBUF_NAMESPACE_ID::Arena* arena); + private: + static void ArenaDtor(void* object); + inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); + public: + + ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; + private: + static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { + ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); + return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; + } + + public: + + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + + enum : int { + kUsingClauseFieldNumber = 5, + kLargFieldNumber = 3, + kRargFieldNumber = 4, + kQualsFieldNumber = 6, + kAliasFieldNumber = 7, + kJointypeFieldNumber = 1, + kIsNaturalFieldNumber = 2, + kRtindexFieldNumber = 8, + }; + // repeated .pg_query.Node using_clause = 5 [json_name = "usingClause"]; + int using_clause_size() const; + private: + int _internal_using_clause_size() const; + public: + void clear_using_clause(); + ::pg_query::Node* mutable_using_clause(int index); + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* + mutable_using_clause(); + private: + const ::pg_query::Node& _internal_using_clause(int index) const; + ::pg_query::Node* _internal_add_using_clause(); + public: + const ::pg_query::Node& using_clause(int index) const; + ::pg_query::Node* add_using_clause(); + const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& + using_clause() const; + + // .pg_query.Node larg = 3 [json_name = "larg"]; + bool has_larg() const; + private: + bool _internal_has_larg() const; + public: + void clear_larg(); + const ::pg_query::Node& larg() const; + ::pg_query::Node* release_larg(); + ::pg_query::Node* mutable_larg(); + void set_allocated_larg(::pg_query::Node* larg); + private: + const ::pg_query::Node& _internal_larg() const; + ::pg_query::Node* _internal_mutable_larg(); + public: + void unsafe_arena_set_allocated_larg( + ::pg_query::Node* larg); + ::pg_query::Node* unsafe_arena_release_larg(); + + // .pg_query.Node rarg = 4 [json_name = "rarg"]; + bool has_rarg() const; + private: + bool _internal_has_rarg() const; + public: + void clear_rarg(); + const ::pg_query::Node& rarg() const; + ::pg_query::Node* release_rarg(); + ::pg_query::Node* mutable_rarg(); + void set_allocated_rarg(::pg_query::Node* rarg); + private: + const ::pg_query::Node& _internal_rarg() const; + ::pg_query::Node* _internal_mutable_rarg(); + public: + void unsafe_arena_set_allocated_rarg( + ::pg_query::Node* rarg); + ::pg_query::Node* unsafe_arena_release_rarg(); + + // .pg_query.Node quals = 6 [json_name = "quals"]; + bool has_quals() const; + private: + bool _internal_has_quals() const; + public: + void clear_quals(); + const ::pg_query::Node& quals() const; + ::pg_query::Node* release_quals(); + ::pg_query::Node* mutable_quals(); + void set_allocated_quals(::pg_query::Node* quals); + private: + const ::pg_query::Node& _internal_quals() const; + ::pg_query::Node* _internal_mutable_quals(); + public: + void unsafe_arena_set_allocated_quals( + ::pg_query::Node* quals); + ::pg_query::Node* unsafe_arena_release_quals(); + + // .pg_query.Alias alias = 7 [json_name = "alias"]; + bool has_alias() const; + private: + bool _internal_has_alias() const; + public: + void clear_alias(); + const ::pg_query::Alias& alias() const; + ::pg_query::Alias* release_alias(); + ::pg_query::Alias* mutable_alias(); + void set_allocated_alias(::pg_query::Alias* alias); + private: + const ::pg_query::Alias& _internal_alias() const; + ::pg_query::Alias* _internal_mutable_alias(); + public: + void unsafe_arena_set_allocated_alias( + ::pg_query::Alias* alias); + ::pg_query::Alias* unsafe_arena_release_alias(); + + // .pg_query.JoinType jointype = 1 [json_name = "jointype"]; + void clear_jointype(); + ::pg_query::JoinType jointype() const; + void set_jointype(::pg_query::JoinType value); + private: + ::pg_query::JoinType _internal_jointype() const; + void _internal_set_jointype(::pg_query::JoinType value); + public: + + // bool is_natural = 2 [json_name = "isNatural"]; + void clear_is_natural(); + bool is_natural() const; + void set_is_natural(bool value); + private: + bool _internal_is_natural() const; + void _internal_set_is_natural(bool value); + public: + + // int32 rtindex = 8 [json_name = "rtindex"]; + void clear_rtindex(); + ::PROTOBUF_NAMESPACE_ID::int32 rtindex() const; + void set_rtindex(::PROTOBUF_NAMESPACE_ID::int32 value); + private: + ::PROTOBUF_NAMESPACE_ID::int32 _internal_rtindex() const; + void _internal_set_rtindex(::PROTOBUF_NAMESPACE_ID::int32 value); + public: + + // @@protoc_insertion_point(class_scope:pg_query.JoinExpr) + private: + class _Internal; + + template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; + typedef void InternalArenaConstructable_; + typedef void DestructorSkippable_; + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > using_clause_; + ::pg_query::Node* larg_; + ::pg_query::Node* rarg_; + ::pg_query::Node* quals_; + ::pg_query::Alias* alias_; + int jointype_; + bool is_natural_; + ::PROTOBUF_NAMESPACE_ID::int32 rtindex_; + mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; + friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; +}; +// ------------------------------------------------------------------- + +class FromExpr PROTOBUF_FINAL : + public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.FromExpr) */ { + public: + inline FromExpr() : FromExpr(nullptr) {} + virtual ~FromExpr(); + + FromExpr(const FromExpr& from); + FromExpr(FromExpr&& from) noexcept + : FromExpr() { + *this = ::std::move(from); + } + + inline FromExpr& operator=(const FromExpr& from) { + CopyFrom(from); + return *this; + } + inline FromExpr& operator=(FromExpr&& from) noexcept { + if (GetArena() == from.GetArena()) { + if (this != &from) InternalSwap(&from); + } else { + CopyFrom(from); + } + return *this; + } + + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { + return GetDescriptor(); + } + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { + return GetMetadataStatic().descriptor; + } + static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { + return GetMetadataStatic().reflection; + } + static const FromExpr& default_instance(); + + static inline const FromExpr* internal_default_instance() { + return reinterpret_cast( + &_FromExpr_default_instance_); + } + static constexpr int kIndexInFileMessages = + 60; + + friend void swap(FromExpr& a, FromExpr& b) { + a.Swap(&b); + } + inline void Swap(FromExpr* other) { + if (other == this) return; + if (GetArena() == other->GetArena()) { + InternalSwap(other); + } else { + ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); + } + } + void UnsafeArenaSwap(FromExpr* other) { + if (other == this) return; + GOOGLE_DCHECK(GetArena() == other->GetArena()); + InternalSwap(other); + } + + // implements Message ---------------------------------------------- + + inline FromExpr* New() const final { + return CreateMaybeMessage(nullptr); + } + + FromExpr* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { + return CreateMaybeMessage(arena); + } + void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void CopyFrom(const FromExpr& from); + void MergeFrom(const FromExpr& from); + PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; + bool IsInitialized() const final; + + size_t ByteSizeLong() const final; + const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; + ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( + ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; + int GetCachedSize() const final { return _cached_size_.Get(); } + + private: + inline void SharedCtor(); + inline void SharedDtor(); + void SetCachedSize(int size) const final; + void InternalSwap(FromExpr* other); + friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; + static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { + return "pg_query.FromExpr"; + } + protected: + explicit FromExpr(::PROTOBUF_NAMESPACE_ID::Arena* arena); + private: + static void ArenaDtor(void* object); + inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); + public: + + ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; + private: + static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { + ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); + return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; + } + + public: + + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + + enum : int { + kFromlistFieldNumber = 1, + kQualsFieldNumber = 2, + }; + // repeated .pg_query.Node fromlist = 1 [json_name = "fromlist"]; + int fromlist_size() const; + private: + int _internal_fromlist_size() const; + public: + void clear_fromlist(); + ::pg_query::Node* mutable_fromlist(int index); + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* + mutable_fromlist(); + private: + const ::pg_query::Node& _internal_fromlist(int index) const; + ::pg_query::Node* _internal_add_fromlist(); + public: + const ::pg_query::Node& fromlist(int index) const; + ::pg_query::Node* add_fromlist(); + const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& + fromlist() const; + + // .pg_query.Node quals = 2 [json_name = "quals"]; + bool has_quals() const; + private: + bool _internal_has_quals() const; + public: + void clear_quals(); + const ::pg_query::Node& quals() const; + ::pg_query::Node* release_quals(); + ::pg_query::Node* mutable_quals(); + void set_allocated_quals(::pg_query::Node* quals); + private: + const ::pg_query::Node& _internal_quals() const; + ::pg_query::Node* _internal_mutable_quals(); + public: + void unsafe_arena_set_allocated_quals( + ::pg_query::Node* quals); + ::pg_query::Node* unsafe_arena_release_quals(); + + // @@protoc_insertion_point(class_scope:pg_query.FromExpr) + private: + class _Internal; + + template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; + typedef void InternalArenaConstructable_; + typedef void DestructorSkippable_; + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > fromlist_; + ::pg_query::Node* quals_; + mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; + friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; +}; +// ------------------------------------------------------------------- + +class OnConflictExpr PROTOBUF_FINAL : + public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.OnConflictExpr) */ { + public: + inline OnConflictExpr() : OnConflictExpr(nullptr) {} + virtual ~OnConflictExpr(); + + OnConflictExpr(const OnConflictExpr& from); + OnConflictExpr(OnConflictExpr&& from) noexcept + : OnConflictExpr() { + *this = ::std::move(from); + } + + inline OnConflictExpr& operator=(const OnConflictExpr& from) { + CopyFrom(from); + return *this; + } + inline OnConflictExpr& operator=(OnConflictExpr&& from) noexcept { + if (GetArena() == from.GetArena()) { + if (this != &from) InternalSwap(&from); + } else { + CopyFrom(from); + } + return *this; + } + + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { + return GetDescriptor(); + } + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { + return GetMetadataStatic().descriptor; + } + static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { + return GetMetadataStatic().reflection; + } + static const OnConflictExpr& default_instance(); + + static inline const OnConflictExpr* internal_default_instance() { + return reinterpret_cast( + &_OnConflictExpr_default_instance_); + } + static constexpr int kIndexInFileMessages = + 61; + + friend void swap(OnConflictExpr& a, OnConflictExpr& b) { + a.Swap(&b); + } + inline void Swap(OnConflictExpr* other) { + if (other == this) return; + if (GetArena() == other->GetArena()) { + InternalSwap(other); + } else { + ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); + } + } + void UnsafeArenaSwap(OnConflictExpr* other) { + if (other == this) return; + GOOGLE_DCHECK(GetArena() == other->GetArena()); + InternalSwap(other); + } + + // implements Message ---------------------------------------------- + + inline OnConflictExpr* New() const final { + return CreateMaybeMessage(nullptr); + } + + OnConflictExpr* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { + return CreateMaybeMessage(arena); + } + void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void CopyFrom(const OnConflictExpr& from); + void MergeFrom(const OnConflictExpr& from); + PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; + bool IsInitialized() const final; + + size_t ByteSizeLong() const final; + const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; + ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( + ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; + int GetCachedSize() const final { return _cached_size_.Get(); } + + private: + inline void SharedCtor(); + inline void SharedDtor(); + void SetCachedSize(int size) const final; + void InternalSwap(OnConflictExpr* other); + friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; + static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { + return "pg_query.OnConflictExpr"; + } + protected: + explicit OnConflictExpr(::PROTOBUF_NAMESPACE_ID::Arena* arena); + private: + static void ArenaDtor(void* object); + inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); + public: + + ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; + private: + static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { + ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); + return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; + } + + public: + + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + + enum : int { + kArbiterElemsFieldNumber = 2, + kOnConflictSetFieldNumber = 5, + kExclRelTlistFieldNumber = 8, + kArbiterWhereFieldNumber = 3, + kOnConflictWhereFieldNumber = 6, + kActionFieldNumber = 1, + kConstraintFieldNumber = 4, + kExclRelIndexFieldNumber = 7, + }; + // repeated .pg_query.Node arbiter_elems = 2 [json_name = "arbiterElems"]; + int arbiter_elems_size() const; + private: + int _internal_arbiter_elems_size() const; + public: + void clear_arbiter_elems(); + ::pg_query::Node* mutable_arbiter_elems(int index); + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* + mutable_arbiter_elems(); + private: + const ::pg_query::Node& _internal_arbiter_elems(int index) const; + ::pg_query::Node* _internal_add_arbiter_elems(); + public: + const ::pg_query::Node& arbiter_elems(int index) const; + ::pg_query::Node* add_arbiter_elems(); + const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& + arbiter_elems() const; + + // repeated .pg_query.Node on_conflict_set = 5 [json_name = "onConflictSet"]; + int on_conflict_set_size() const; + private: + int _internal_on_conflict_set_size() const; + public: + void clear_on_conflict_set(); + ::pg_query::Node* mutable_on_conflict_set(int index); + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* + mutable_on_conflict_set(); + private: + const ::pg_query::Node& _internal_on_conflict_set(int index) const; + ::pg_query::Node* _internal_add_on_conflict_set(); + public: + const ::pg_query::Node& on_conflict_set(int index) const; + ::pg_query::Node* add_on_conflict_set(); + const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& + on_conflict_set() const; + + // repeated .pg_query.Node excl_rel_tlist = 8 [json_name = "exclRelTlist"]; + int excl_rel_tlist_size() const; + private: + int _internal_excl_rel_tlist_size() const; + public: + void clear_excl_rel_tlist(); + ::pg_query::Node* mutable_excl_rel_tlist(int index); + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* + mutable_excl_rel_tlist(); + private: + const ::pg_query::Node& _internal_excl_rel_tlist(int index) const; + ::pg_query::Node* _internal_add_excl_rel_tlist(); + public: + const ::pg_query::Node& excl_rel_tlist(int index) const; + ::pg_query::Node* add_excl_rel_tlist(); + const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& + excl_rel_tlist() const; + + // .pg_query.Node arbiter_where = 3 [json_name = "arbiterWhere"]; + bool has_arbiter_where() const; + private: + bool _internal_has_arbiter_where() const; + public: + void clear_arbiter_where(); + const ::pg_query::Node& arbiter_where() const; + ::pg_query::Node* release_arbiter_where(); + ::pg_query::Node* mutable_arbiter_where(); + void set_allocated_arbiter_where(::pg_query::Node* arbiter_where); + private: + const ::pg_query::Node& _internal_arbiter_where() const; + ::pg_query::Node* _internal_mutable_arbiter_where(); + public: + void unsafe_arena_set_allocated_arbiter_where( + ::pg_query::Node* arbiter_where); + ::pg_query::Node* unsafe_arena_release_arbiter_where(); + + // .pg_query.Node on_conflict_where = 6 [json_name = "onConflictWhere"]; + bool has_on_conflict_where() const; + private: + bool _internal_has_on_conflict_where() const; + public: + void clear_on_conflict_where(); + const ::pg_query::Node& on_conflict_where() const; + ::pg_query::Node* release_on_conflict_where(); + ::pg_query::Node* mutable_on_conflict_where(); + void set_allocated_on_conflict_where(::pg_query::Node* on_conflict_where); + private: + const ::pg_query::Node& _internal_on_conflict_where() const; + ::pg_query::Node* _internal_mutable_on_conflict_where(); + public: + void unsafe_arena_set_allocated_on_conflict_where( + ::pg_query::Node* on_conflict_where); + ::pg_query::Node* unsafe_arena_release_on_conflict_where(); + + // .pg_query.OnConflictAction action = 1 [json_name = "action"]; + void clear_action(); + ::pg_query::OnConflictAction action() const; + void set_action(::pg_query::OnConflictAction value); + private: + ::pg_query::OnConflictAction _internal_action() const; + void _internal_set_action(::pg_query::OnConflictAction value); + public: + + // uint32 constraint = 4 [json_name = "constraint"]; + void clear_constraint(); + ::PROTOBUF_NAMESPACE_ID::uint32 constraint() const; + void set_constraint(::PROTOBUF_NAMESPACE_ID::uint32 value); + private: + ::PROTOBUF_NAMESPACE_ID::uint32 _internal_constraint() const; + void _internal_set_constraint(::PROTOBUF_NAMESPACE_ID::uint32 value); + public: + + // int32 excl_rel_index = 7 [json_name = "exclRelIndex"]; + void clear_excl_rel_index(); + ::PROTOBUF_NAMESPACE_ID::int32 excl_rel_index() const; + void set_excl_rel_index(::PROTOBUF_NAMESPACE_ID::int32 value); + private: + ::PROTOBUF_NAMESPACE_ID::int32 _internal_excl_rel_index() const; + void _internal_set_excl_rel_index(::PROTOBUF_NAMESPACE_ID::int32 value); + public: + + // @@protoc_insertion_point(class_scope:pg_query.OnConflictExpr) + private: + class _Internal; + + template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; + typedef void InternalArenaConstructable_; + typedef void DestructorSkippable_; + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > arbiter_elems_; + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > on_conflict_set_; + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > excl_rel_tlist_; + ::pg_query::Node* arbiter_where_; + ::pg_query::Node* on_conflict_where_; + int action_; + ::PROTOBUF_NAMESPACE_ID::uint32 constraint_; + ::PROTOBUF_NAMESPACE_ID::int32 excl_rel_index_; + mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; + friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; +}; +// ------------------------------------------------------------------- + +class IntoClause PROTOBUF_FINAL : + public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.IntoClause) */ { + public: + inline IntoClause() : IntoClause(nullptr) {} + virtual ~IntoClause(); + + IntoClause(const IntoClause& from); + IntoClause(IntoClause&& from) noexcept + : IntoClause() { + *this = ::std::move(from); + } + + inline IntoClause& operator=(const IntoClause& from) { + CopyFrom(from); + return *this; + } + inline IntoClause& operator=(IntoClause&& from) noexcept { + if (GetArena() == from.GetArena()) { + if (this != &from) InternalSwap(&from); + } else { + CopyFrom(from); + } + return *this; + } + + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { + return GetDescriptor(); + } + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { + return GetMetadataStatic().descriptor; + } + static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { + return GetMetadataStatic().reflection; + } + static const IntoClause& default_instance(); + + static inline const IntoClause* internal_default_instance() { + return reinterpret_cast( + &_IntoClause_default_instance_); + } + static constexpr int kIndexInFileMessages = + 62; + + friend void swap(IntoClause& a, IntoClause& b) { + a.Swap(&b); + } + inline void Swap(IntoClause* other) { + if (other == this) return; + if (GetArena() == other->GetArena()) { + InternalSwap(other); + } else { + ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); + } + } + void UnsafeArenaSwap(IntoClause* other) { + if (other == this) return; + GOOGLE_DCHECK(GetArena() == other->GetArena()); + InternalSwap(other); + } + + // implements Message ---------------------------------------------- + + inline IntoClause* New() const final { + return CreateMaybeMessage(nullptr); + } + + IntoClause* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { + return CreateMaybeMessage(arena); + } + void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void CopyFrom(const IntoClause& from); + void MergeFrom(const IntoClause& from); + PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; + bool IsInitialized() const final; + + size_t ByteSizeLong() const final; + const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; + ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( + ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; + int GetCachedSize() const final { return _cached_size_.Get(); } + + private: + inline void SharedCtor(); + inline void SharedDtor(); + void SetCachedSize(int size) const final; + void InternalSwap(IntoClause* other); + friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; + static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { + return "pg_query.IntoClause"; + } + protected: + explicit IntoClause(::PROTOBUF_NAMESPACE_ID::Arena* arena); + private: + static void ArenaDtor(void* object); + inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); + public: + + ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; + private: + static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { + ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); + return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; + } + + public: + + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + + enum : int { + kColNamesFieldNumber = 2, + kOptionsFieldNumber = 4, + kAccessMethodFieldNumber = 3, + kTableSpaceNameFieldNumber = 6, + kRelFieldNumber = 1, + kViewQueryFieldNumber = 7, + kOnCommitFieldNumber = 5, + kSkipDataFieldNumber = 8, + }; + // repeated .pg_query.Node col_names = 2 [json_name = "colNames"]; + int col_names_size() const; + private: + int _internal_col_names_size() const; + public: + void clear_col_names(); + ::pg_query::Node* mutable_col_names(int index); + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* + mutable_col_names(); + private: + const ::pg_query::Node& _internal_col_names(int index) const; + ::pg_query::Node* _internal_add_col_names(); + public: + const ::pg_query::Node& col_names(int index) const; + ::pg_query::Node* add_col_names(); + const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& + col_names() const; + + // repeated .pg_query.Node options = 4 [json_name = "options"]; + int options_size() const; + private: + int _internal_options_size() const; + public: + void clear_options(); + ::pg_query::Node* mutable_options(int index); + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* + mutable_options(); + private: + const ::pg_query::Node& _internal_options(int index) const; + ::pg_query::Node* _internal_add_options(); + public: + const ::pg_query::Node& options(int index) const; + ::pg_query::Node* add_options(); + const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& + options() const; + + // string access_method = 3 [json_name = "accessMethod"]; + void clear_access_method(); + const std::string& access_method() const; + void set_access_method(const std::string& value); + void set_access_method(std::string&& value); + void set_access_method(const char* value); + void set_access_method(const char* value, size_t size); + std::string* mutable_access_method(); + std::string* release_access_method(); + void set_allocated_access_method(std::string* access_method); + private: + const std::string& _internal_access_method() const; + void _internal_set_access_method(const std::string& value); + std::string* _internal_mutable_access_method(); + public: + + // string table_space_name = 6 [json_name = "tableSpaceName"]; + void clear_table_space_name(); + const std::string& table_space_name() const; + void set_table_space_name(const std::string& value); + void set_table_space_name(std::string&& value); + void set_table_space_name(const char* value); + void set_table_space_name(const char* value, size_t size); + std::string* mutable_table_space_name(); + std::string* release_table_space_name(); + void set_allocated_table_space_name(std::string* table_space_name); + private: + const std::string& _internal_table_space_name() const; + void _internal_set_table_space_name(const std::string& value); + std::string* _internal_mutable_table_space_name(); + public: + + // .pg_query.RangeVar rel = 1 [json_name = "rel"]; + bool has_rel() const; + private: + bool _internal_has_rel() const; + public: + void clear_rel(); + const ::pg_query::RangeVar& rel() const; + ::pg_query::RangeVar* release_rel(); + ::pg_query::RangeVar* mutable_rel(); + void set_allocated_rel(::pg_query::RangeVar* rel); + private: + const ::pg_query::RangeVar& _internal_rel() const; + ::pg_query::RangeVar* _internal_mutable_rel(); + public: + void unsafe_arena_set_allocated_rel( + ::pg_query::RangeVar* rel); + ::pg_query::RangeVar* unsafe_arena_release_rel(); + + // .pg_query.Node view_query = 7 [json_name = "viewQuery"]; + bool has_view_query() const; + private: + bool _internal_has_view_query() const; + public: + void clear_view_query(); + const ::pg_query::Node& view_query() const; + ::pg_query::Node* release_view_query(); + ::pg_query::Node* mutable_view_query(); + void set_allocated_view_query(::pg_query::Node* view_query); + private: + const ::pg_query::Node& _internal_view_query() const; + ::pg_query::Node* _internal_mutable_view_query(); + public: + void unsafe_arena_set_allocated_view_query( + ::pg_query::Node* view_query); + ::pg_query::Node* unsafe_arena_release_view_query(); + + // .pg_query.OnCommitAction on_commit = 5 [json_name = "onCommit"]; + void clear_on_commit(); + ::pg_query::OnCommitAction on_commit() const; + void set_on_commit(::pg_query::OnCommitAction value); + private: + ::pg_query::OnCommitAction _internal_on_commit() const; + void _internal_set_on_commit(::pg_query::OnCommitAction value); + public: + + // bool skip_data = 8 [json_name = "skipData"]; + void clear_skip_data(); + bool skip_data() const; + void set_skip_data(bool value); + private: + bool _internal_skip_data() const; + void _internal_set_skip_data(bool value); + public: + + // @@protoc_insertion_point(class_scope:pg_query.IntoClause) + private: + class _Internal; + + template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; + typedef void InternalArenaConstructable_; + typedef void DestructorSkippable_; + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > col_names_; + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > options_; + ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr access_method_; + ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr table_space_name_; + ::pg_query::RangeVar* rel_; + ::pg_query::Node* view_query_; + int on_commit_; + bool skip_data_; + mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; + friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; +}; +// ------------------------------------------------------------------- + +class RawStmt PROTOBUF_FINAL : + public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.RawStmt) */ { + public: + inline RawStmt() : RawStmt(nullptr) {} + virtual ~RawStmt(); + + RawStmt(const RawStmt& from); + RawStmt(RawStmt&& from) noexcept + : RawStmt() { + *this = ::std::move(from); + } + + inline RawStmt& operator=(const RawStmt& from) { + CopyFrom(from); + return *this; + } + inline RawStmt& operator=(RawStmt&& from) noexcept { + if (GetArena() == from.GetArena()) { + if (this != &from) InternalSwap(&from); + } else { + CopyFrom(from); + } + return *this; + } + + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { + return GetDescriptor(); + } + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { + return GetMetadataStatic().descriptor; + } + static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { + return GetMetadataStatic().reflection; + } + static const RawStmt& default_instance(); + + static inline const RawStmt* internal_default_instance() { + return reinterpret_cast( + &_RawStmt_default_instance_); + } + static constexpr int kIndexInFileMessages = + 63; + + friend void swap(RawStmt& a, RawStmt& b) { + a.Swap(&b); + } + inline void Swap(RawStmt* other) { + if (other == this) return; + if (GetArena() == other->GetArena()) { + InternalSwap(other); + } else { + ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); + } + } + void UnsafeArenaSwap(RawStmt* other) { + if (other == this) return; + GOOGLE_DCHECK(GetArena() == other->GetArena()); + InternalSwap(other); + } + + // implements Message ---------------------------------------------- + + inline RawStmt* New() const final { + return CreateMaybeMessage(nullptr); + } + + RawStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { + return CreateMaybeMessage(arena); + } + void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void CopyFrom(const RawStmt& from); + void MergeFrom(const RawStmt& from); + PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; + bool IsInitialized() const final; + + size_t ByteSizeLong() const final; + const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; + ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( + ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; + int GetCachedSize() const final { return _cached_size_.Get(); } + + private: + inline void SharedCtor(); + inline void SharedDtor(); + void SetCachedSize(int size) const final; + void InternalSwap(RawStmt* other); + friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; + static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { + return "pg_query.RawStmt"; + } + protected: + explicit RawStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena); + private: + static void ArenaDtor(void* object); + inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); + public: + + ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; + private: + static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { + ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); + return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; + } + + public: + + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + + enum : int { + kStmtFieldNumber = 1, + kStmtLocationFieldNumber = 2, + kStmtLenFieldNumber = 3, + }; + // .pg_query.Node stmt = 1 [json_name = "stmt"]; + bool has_stmt() const; + private: + bool _internal_has_stmt() const; + public: + void clear_stmt(); + const ::pg_query::Node& stmt() const; + ::pg_query::Node* release_stmt(); + ::pg_query::Node* mutable_stmt(); + void set_allocated_stmt(::pg_query::Node* stmt); + private: + const ::pg_query::Node& _internal_stmt() const; + ::pg_query::Node* _internal_mutable_stmt(); + public: + void unsafe_arena_set_allocated_stmt( + ::pg_query::Node* stmt); + ::pg_query::Node* unsafe_arena_release_stmt(); + + // int32 stmt_location = 2 [json_name = "stmt_location"]; + void clear_stmt_location(); + ::PROTOBUF_NAMESPACE_ID::int32 stmt_location() const; + void set_stmt_location(::PROTOBUF_NAMESPACE_ID::int32 value); + private: + ::PROTOBUF_NAMESPACE_ID::int32 _internal_stmt_location() const; + void _internal_set_stmt_location(::PROTOBUF_NAMESPACE_ID::int32 value); + public: + + // int32 stmt_len = 3 [json_name = "stmt_len"]; + void clear_stmt_len(); + ::PROTOBUF_NAMESPACE_ID::int32 stmt_len() const; + void set_stmt_len(::PROTOBUF_NAMESPACE_ID::int32 value); + private: + ::PROTOBUF_NAMESPACE_ID::int32 _internal_stmt_len() const; + void _internal_set_stmt_len(::PROTOBUF_NAMESPACE_ID::int32 value); + public: + + // @@protoc_insertion_point(class_scope:pg_query.RawStmt) + private: + class _Internal; + + template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; + typedef void InternalArenaConstructable_; + typedef void DestructorSkippable_; + ::pg_query::Node* stmt_; + ::PROTOBUF_NAMESPACE_ID::int32 stmt_location_; + ::PROTOBUF_NAMESPACE_ID::int32 stmt_len_; + mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; + friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; +}; +// ------------------------------------------------------------------- + +class Query PROTOBUF_FINAL : + public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.Query) */ { + public: + inline Query() : Query(nullptr) {} + virtual ~Query(); + + Query(const Query& from); + Query(Query&& from) noexcept + : Query() { + *this = ::std::move(from); + } + + inline Query& operator=(const Query& from) { + CopyFrom(from); + return *this; + } + inline Query& operator=(Query&& from) noexcept { + if (GetArena() == from.GetArena()) { + if (this != &from) InternalSwap(&from); + } else { + CopyFrom(from); + } + return *this; + } + + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { + return GetDescriptor(); + } + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { + return GetMetadataStatic().descriptor; + } + static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { + return GetMetadataStatic().reflection; + } + static const Query& default_instance(); + + static inline const Query* internal_default_instance() { + return reinterpret_cast( + &_Query_default_instance_); + } + static constexpr int kIndexInFileMessages = + 64; + + friend void swap(Query& a, Query& b) { + a.Swap(&b); + } + inline void Swap(Query* other) { + if (other == this) return; + if (GetArena() == other->GetArena()) { + InternalSwap(other); + } else { + ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); + } + } + void UnsafeArenaSwap(Query* other) { + if (other == this) return; + GOOGLE_DCHECK(GetArena() == other->GetArena()); + InternalSwap(other); + } + + // implements Message ---------------------------------------------- + + inline Query* New() const final { + return CreateMaybeMessage(nullptr); + } + + Query* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { + return CreateMaybeMessage(arena); + } + void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void CopyFrom(const Query& from); + void MergeFrom(const Query& from); + PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; + bool IsInitialized() const final; + + size_t ByteSizeLong() const final; + const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; + ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( + ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; + int GetCachedSize() const final { return _cached_size_.Get(); } + + private: + inline void SharedCtor(); + inline void SharedDtor(); + void SetCachedSize(int size) const final; + void InternalSwap(Query* other); + friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; + static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { + return "pg_query.Query"; + } + protected: + explicit Query(::PROTOBUF_NAMESPACE_ID::Arena* arena); + private: + static void ArenaDtor(void* object); + inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); + public: + + ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; + private: + static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { + ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); + return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; + } + + public: + + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + + enum : int { + kCteListFieldNumber = 15, + kRtableFieldNumber = 16, + kTargetListFieldNumber = 18, + kReturningListFieldNumber = 21, + kGroupClauseFieldNumber = 22, + kGroupingSetsFieldNumber = 23, + kWindowClauseFieldNumber = 25, + kDistinctClauseFieldNumber = 26, + kSortClauseFieldNumber = 27, + kRowMarksFieldNumber = 31, + kConstraintDepsFieldNumber = 33, + kWithCheckOptionsFieldNumber = 34, + kUtilityStmtFieldNumber = 4, + kJointreeFieldNumber = 17, + kOnConflictFieldNumber = 20, + kHavingQualFieldNumber = 24, + kLimitOffsetFieldNumber = 28, + kLimitCountFieldNumber = 29, + kSetOperationsFieldNumber = 32, + kCommandTypeFieldNumber = 1, + kQuerySourceFieldNumber = 2, + kResultRelationFieldNumber = 5, + kCanSetTagFieldNumber = 3, + kHasAggsFieldNumber = 6, + kHasWindowFuncsFieldNumber = 7, + kHasTargetSrfsFieldNumber = 8, + kHasSubLinksFieldNumber = 9, + kHasDistinctOnFieldNumber = 10, + kHasRecursiveFieldNumber = 11, + kHasModifyingCteFieldNumber = 12, + kHasForUpdateFieldNumber = 13, + kHasRowSecurityFieldNumber = 14, + kOverrideFieldNumber = 19, + kLimitOptionFieldNumber = 30, + kStmtLocationFieldNumber = 35, + kStmtLenFieldNumber = 36, + }; + // repeated .pg_query.Node cte_list = 15 [json_name = "cteList"]; + int cte_list_size() const; + private: + int _internal_cte_list_size() const; + public: + void clear_cte_list(); + ::pg_query::Node* mutable_cte_list(int index); + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* + mutable_cte_list(); + private: + const ::pg_query::Node& _internal_cte_list(int index) const; + ::pg_query::Node* _internal_add_cte_list(); + public: + const ::pg_query::Node& cte_list(int index) const; + ::pg_query::Node* add_cte_list(); + const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& + cte_list() const; + + // repeated .pg_query.Node rtable = 16 [json_name = "rtable"]; + int rtable_size() const; + private: + int _internal_rtable_size() const; + public: + void clear_rtable(); + ::pg_query::Node* mutable_rtable(int index); + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* + mutable_rtable(); + private: + const ::pg_query::Node& _internal_rtable(int index) const; + ::pg_query::Node* _internal_add_rtable(); + public: + const ::pg_query::Node& rtable(int index) const; + ::pg_query::Node* add_rtable(); + const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& + rtable() const; + + // repeated .pg_query.Node target_list = 18 [json_name = "targetList"]; + int target_list_size() const; + private: + int _internal_target_list_size() const; + public: + void clear_target_list(); + ::pg_query::Node* mutable_target_list(int index); + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* + mutable_target_list(); + private: + const ::pg_query::Node& _internal_target_list(int index) const; + ::pg_query::Node* _internal_add_target_list(); + public: + const ::pg_query::Node& target_list(int index) const; + ::pg_query::Node* add_target_list(); + const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& + target_list() const; + + // repeated .pg_query.Node returning_list = 21 [json_name = "returningList"]; + int returning_list_size() const; + private: + int _internal_returning_list_size() const; + public: + void clear_returning_list(); + ::pg_query::Node* mutable_returning_list(int index); + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* + mutable_returning_list(); + private: + const ::pg_query::Node& _internal_returning_list(int index) const; + ::pg_query::Node* _internal_add_returning_list(); + public: + const ::pg_query::Node& returning_list(int index) const; + ::pg_query::Node* add_returning_list(); + const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& + returning_list() const; + + // repeated .pg_query.Node group_clause = 22 [json_name = "groupClause"]; + int group_clause_size() const; + private: + int _internal_group_clause_size() const; + public: + void clear_group_clause(); + ::pg_query::Node* mutable_group_clause(int index); + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* + mutable_group_clause(); + private: + const ::pg_query::Node& _internal_group_clause(int index) const; + ::pg_query::Node* _internal_add_group_clause(); + public: + const ::pg_query::Node& group_clause(int index) const; + ::pg_query::Node* add_group_clause(); + const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& + group_clause() const; + + // repeated .pg_query.Node grouping_sets = 23 [json_name = "groupingSets"]; + int grouping_sets_size() const; + private: + int _internal_grouping_sets_size() const; + public: + void clear_grouping_sets(); + ::pg_query::Node* mutable_grouping_sets(int index); + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* + mutable_grouping_sets(); + private: + const ::pg_query::Node& _internal_grouping_sets(int index) const; + ::pg_query::Node* _internal_add_grouping_sets(); + public: + const ::pg_query::Node& grouping_sets(int index) const; + ::pg_query::Node* add_grouping_sets(); + const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& + grouping_sets() const; + + // repeated .pg_query.Node window_clause = 25 [json_name = "windowClause"]; + int window_clause_size() const; + private: + int _internal_window_clause_size() const; + public: + void clear_window_clause(); + ::pg_query::Node* mutable_window_clause(int index); + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* + mutable_window_clause(); + private: + const ::pg_query::Node& _internal_window_clause(int index) const; + ::pg_query::Node* _internal_add_window_clause(); + public: + const ::pg_query::Node& window_clause(int index) const; + ::pg_query::Node* add_window_clause(); + const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& + window_clause() const; + + // repeated .pg_query.Node distinct_clause = 26 [json_name = "distinctClause"]; + int distinct_clause_size() const; + private: + int _internal_distinct_clause_size() const; + public: + void clear_distinct_clause(); + ::pg_query::Node* mutable_distinct_clause(int index); + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* + mutable_distinct_clause(); + private: + const ::pg_query::Node& _internal_distinct_clause(int index) const; + ::pg_query::Node* _internal_add_distinct_clause(); + public: + const ::pg_query::Node& distinct_clause(int index) const; + ::pg_query::Node* add_distinct_clause(); + const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& + distinct_clause() const; + + // repeated .pg_query.Node sort_clause = 27 [json_name = "sortClause"]; + int sort_clause_size() const; + private: + int _internal_sort_clause_size() const; + public: + void clear_sort_clause(); + ::pg_query::Node* mutable_sort_clause(int index); + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* + mutable_sort_clause(); + private: + const ::pg_query::Node& _internal_sort_clause(int index) const; + ::pg_query::Node* _internal_add_sort_clause(); + public: + const ::pg_query::Node& sort_clause(int index) const; + ::pg_query::Node* add_sort_clause(); + const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& + sort_clause() const; + + // repeated .pg_query.Node row_marks = 31 [json_name = "rowMarks"]; + int row_marks_size() const; + private: + int _internal_row_marks_size() const; + public: + void clear_row_marks(); + ::pg_query::Node* mutable_row_marks(int index); + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* + mutable_row_marks(); + private: + const ::pg_query::Node& _internal_row_marks(int index) const; + ::pg_query::Node* _internal_add_row_marks(); + public: + const ::pg_query::Node& row_marks(int index) const; + ::pg_query::Node* add_row_marks(); + const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& + row_marks() const; + + // repeated .pg_query.Node constraint_deps = 33 [json_name = "constraintDeps"]; + int constraint_deps_size() const; + private: + int _internal_constraint_deps_size() const; + public: + void clear_constraint_deps(); + ::pg_query::Node* mutable_constraint_deps(int index); + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* + mutable_constraint_deps(); + private: + const ::pg_query::Node& _internal_constraint_deps(int index) const; + ::pg_query::Node* _internal_add_constraint_deps(); + public: + const ::pg_query::Node& constraint_deps(int index) const; + ::pg_query::Node* add_constraint_deps(); + const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& + constraint_deps() const; + + // repeated .pg_query.Node with_check_options = 34 [json_name = "withCheckOptions"]; + int with_check_options_size() const; + private: + int _internal_with_check_options_size() const; + public: + void clear_with_check_options(); + ::pg_query::Node* mutable_with_check_options(int index); + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* + mutable_with_check_options(); + private: + const ::pg_query::Node& _internal_with_check_options(int index) const; + ::pg_query::Node* _internal_add_with_check_options(); + public: + const ::pg_query::Node& with_check_options(int index) const; + ::pg_query::Node* add_with_check_options(); + const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& + with_check_options() const; + + // .pg_query.Node utility_stmt = 4 [json_name = "utilityStmt"]; + bool has_utility_stmt() const; + private: + bool _internal_has_utility_stmt() const; + public: + void clear_utility_stmt(); + const ::pg_query::Node& utility_stmt() const; + ::pg_query::Node* release_utility_stmt(); + ::pg_query::Node* mutable_utility_stmt(); + void set_allocated_utility_stmt(::pg_query::Node* utility_stmt); + private: + const ::pg_query::Node& _internal_utility_stmt() const; + ::pg_query::Node* _internal_mutable_utility_stmt(); + public: + void unsafe_arena_set_allocated_utility_stmt( + ::pg_query::Node* utility_stmt); + ::pg_query::Node* unsafe_arena_release_utility_stmt(); + + // .pg_query.FromExpr jointree = 17 [json_name = "jointree"]; + bool has_jointree() const; + private: + bool _internal_has_jointree() const; + public: + void clear_jointree(); + const ::pg_query::FromExpr& jointree() const; + ::pg_query::FromExpr* release_jointree(); + ::pg_query::FromExpr* mutable_jointree(); + void set_allocated_jointree(::pg_query::FromExpr* jointree); + private: + const ::pg_query::FromExpr& _internal_jointree() const; + ::pg_query::FromExpr* _internal_mutable_jointree(); + public: + void unsafe_arena_set_allocated_jointree( + ::pg_query::FromExpr* jointree); + ::pg_query::FromExpr* unsafe_arena_release_jointree(); + + // .pg_query.OnConflictExpr on_conflict = 20 [json_name = "onConflict"]; + bool has_on_conflict() const; + private: + bool _internal_has_on_conflict() const; + public: + void clear_on_conflict(); + const ::pg_query::OnConflictExpr& on_conflict() const; + ::pg_query::OnConflictExpr* release_on_conflict(); + ::pg_query::OnConflictExpr* mutable_on_conflict(); + void set_allocated_on_conflict(::pg_query::OnConflictExpr* on_conflict); + private: + const ::pg_query::OnConflictExpr& _internal_on_conflict() const; + ::pg_query::OnConflictExpr* _internal_mutable_on_conflict(); + public: + void unsafe_arena_set_allocated_on_conflict( + ::pg_query::OnConflictExpr* on_conflict); + ::pg_query::OnConflictExpr* unsafe_arena_release_on_conflict(); + + // .pg_query.Node having_qual = 24 [json_name = "havingQual"]; + bool has_having_qual() const; + private: + bool _internal_has_having_qual() const; + public: + void clear_having_qual(); + const ::pg_query::Node& having_qual() const; + ::pg_query::Node* release_having_qual(); + ::pg_query::Node* mutable_having_qual(); + void set_allocated_having_qual(::pg_query::Node* having_qual); + private: + const ::pg_query::Node& _internal_having_qual() const; + ::pg_query::Node* _internal_mutable_having_qual(); + public: + void unsafe_arena_set_allocated_having_qual( + ::pg_query::Node* having_qual); + ::pg_query::Node* unsafe_arena_release_having_qual(); + + // .pg_query.Node limit_offset = 28 [json_name = "limitOffset"]; + bool has_limit_offset() const; + private: + bool _internal_has_limit_offset() const; + public: + void clear_limit_offset(); + const ::pg_query::Node& limit_offset() const; + ::pg_query::Node* release_limit_offset(); + ::pg_query::Node* mutable_limit_offset(); + void set_allocated_limit_offset(::pg_query::Node* limit_offset); + private: + const ::pg_query::Node& _internal_limit_offset() const; + ::pg_query::Node* _internal_mutable_limit_offset(); + public: + void unsafe_arena_set_allocated_limit_offset( + ::pg_query::Node* limit_offset); + ::pg_query::Node* unsafe_arena_release_limit_offset(); + + // .pg_query.Node limit_count = 29 [json_name = "limitCount"]; + bool has_limit_count() const; + private: + bool _internal_has_limit_count() const; + public: + void clear_limit_count(); + const ::pg_query::Node& limit_count() const; + ::pg_query::Node* release_limit_count(); + ::pg_query::Node* mutable_limit_count(); + void set_allocated_limit_count(::pg_query::Node* limit_count); + private: + const ::pg_query::Node& _internal_limit_count() const; + ::pg_query::Node* _internal_mutable_limit_count(); + public: + void unsafe_arena_set_allocated_limit_count( + ::pg_query::Node* limit_count); + ::pg_query::Node* unsafe_arena_release_limit_count(); + + // .pg_query.Node set_operations = 32 [json_name = "setOperations"]; + bool has_set_operations() const; + private: + bool _internal_has_set_operations() const; + public: + void clear_set_operations(); + const ::pg_query::Node& set_operations() const; + ::pg_query::Node* release_set_operations(); + ::pg_query::Node* mutable_set_operations(); + void set_allocated_set_operations(::pg_query::Node* set_operations); + private: + const ::pg_query::Node& _internal_set_operations() const; + ::pg_query::Node* _internal_mutable_set_operations(); + public: + void unsafe_arena_set_allocated_set_operations( + ::pg_query::Node* set_operations); + ::pg_query::Node* unsafe_arena_release_set_operations(); + + // .pg_query.CmdType command_type = 1 [json_name = "commandType"]; + void clear_command_type(); + ::pg_query::CmdType command_type() const; + void set_command_type(::pg_query::CmdType value); + private: + ::pg_query::CmdType _internal_command_type() const; + void _internal_set_command_type(::pg_query::CmdType value); + public: + + // .pg_query.QuerySource query_source = 2 [json_name = "querySource"]; + void clear_query_source(); + ::pg_query::QuerySource query_source() const; + void set_query_source(::pg_query::QuerySource value); + private: + ::pg_query::QuerySource _internal_query_source() const; + void _internal_set_query_source(::pg_query::QuerySource value); + public: + + // int32 result_relation = 5 [json_name = "resultRelation"]; + void clear_result_relation(); + ::PROTOBUF_NAMESPACE_ID::int32 result_relation() const; + void set_result_relation(::PROTOBUF_NAMESPACE_ID::int32 value); + private: + ::PROTOBUF_NAMESPACE_ID::int32 _internal_result_relation() const; + void _internal_set_result_relation(::PROTOBUF_NAMESPACE_ID::int32 value); + public: + + // bool can_set_tag = 3 [json_name = "canSetTag"]; + void clear_can_set_tag(); + bool can_set_tag() const; + void set_can_set_tag(bool value); + private: + bool _internal_can_set_tag() const; + void _internal_set_can_set_tag(bool value); + public: + + // bool has_aggs = 6 [json_name = "hasAggs"]; + void clear_has_aggs(); + bool has_aggs() const; + void set_has_aggs(bool value); + private: + bool _internal_has_aggs() const; + void _internal_set_has_aggs(bool value); + public: + + // bool has_window_funcs = 7 [json_name = "hasWindowFuncs"]; + void clear_has_window_funcs(); + bool has_window_funcs() const; + void set_has_window_funcs(bool value); + private: + bool _internal_has_window_funcs() const; + void _internal_set_has_window_funcs(bool value); + public: + + // bool has_target_srfs = 8 [json_name = "hasTargetSRFs"]; + void clear_has_target_srfs(); + bool has_target_srfs() const; + void set_has_target_srfs(bool value); + private: + bool _internal_has_target_srfs() const; + void _internal_set_has_target_srfs(bool value); + public: + + // bool has_sub_links = 9 [json_name = "hasSubLinks"]; + void clear_has_sub_links(); + bool has_sub_links() const; + void set_has_sub_links(bool value); + private: + bool _internal_has_sub_links() const; + void _internal_set_has_sub_links(bool value); + public: + + // bool has_distinct_on = 10 [json_name = "hasDistinctOn"]; + void clear_has_distinct_on(); + bool has_distinct_on() const; + void set_has_distinct_on(bool value); + private: + bool _internal_has_distinct_on() const; + void _internal_set_has_distinct_on(bool value); + public: + + // bool has_recursive = 11 [json_name = "hasRecursive"]; + void clear_has_recursive(); + bool has_recursive() const; + void set_has_recursive(bool value); + private: + bool _internal_has_recursive() const; + void _internal_set_has_recursive(bool value); + public: + + // bool has_modifying_cte = 12 [json_name = "hasModifyingCTE"]; + void clear_has_modifying_cte(); + bool has_modifying_cte() const; + void set_has_modifying_cte(bool value); + private: + bool _internal_has_modifying_cte() const; + void _internal_set_has_modifying_cte(bool value); + public: + + // bool has_for_update = 13 [json_name = "hasForUpdate"]; + void clear_has_for_update(); + bool has_for_update() const; + void set_has_for_update(bool value); + private: + bool _internal_has_for_update() const; + void _internal_set_has_for_update(bool value); + public: + + // bool has_row_security = 14 [json_name = "hasRowSecurity"]; + void clear_has_row_security(); + bool has_row_security() const; + void set_has_row_security(bool value); + private: + bool _internal_has_row_security() const; + void _internal_set_has_row_security(bool value); + public: + + // .pg_query.OverridingKind override = 19 [json_name = "override"]; + void clear_override(); + ::pg_query::OverridingKind override() const; + void set_override(::pg_query::OverridingKind value); + private: + ::pg_query::OverridingKind _internal_override() const; + void _internal_set_override(::pg_query::OverridingKind value); + public: + + // .pg_query.LimitOption limit_option = 30 [json_name = "limitOption"]; + void clear_limit_option(); + ::pg_query::LimitOption limit_option() const; + void set_limit_option(::pg_query::LimitOption value); + private: + ::pg_query::LimitOption _internal_limit_option() const; + void _internal_set_limit_option(::pg_query::LimitOption value); + public: + + // int32 stmt_location = 35 [json_name = "stmt_location"]; + void clear_stmt_location(); + ::PROTOBUF_NAMESPACE_ID::int32 stmt_location() const; + void set_stmt_location(::PROTOBUF_NAMESPACE_ID::int32 value); + private: + ::PROTOBUF_NAMESPACE_ID::int32 _internal_stmt_location() const; + void _internal_set_stmt_location(::PROTOBUF_NAMESPACE_ID::int32 value); + public: + + // int32 stmt_len = 36 [json_name = "stmt_len"]; + void clear_stmt_len(); + ::PROTOBUF_NAMESPACE_ID::int32 stmt_len() const; + void set_stmt_len(::PROTOBUF_NAMESPACE_ID::int32 value); + private: + ::PROTOBUF_NAMESPACE_ID::int32 _internal_stmt_len() const; + void _internal_set_stmt_len(::PROTOBUF_NAMESPACE_ID::int32 value); + public: + + // @@protoc_insertion_point(class_scope:pg_query.Query) + private: + class _Internal; + + template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; + typedef void InternalArenaConstructable_; + typedef void DestructorSkippable_; + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > cte_list_; + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > rtable_; + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > target_list_; + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > returning_list_; + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > group_clause_; + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > grouping_sets_; + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > window_clause_; + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > distinct_clause_; + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > sort_clause_; + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > row_marks_; + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > constraint_deps_; + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > with_check_options_; + ::pg_query::Node* utility_stmt_; + ::pg_query::FromExpr* jointree_; + ::pg_query::OnConflictExpr* on_conflict_; + ::pg_query::Node* having_qual_; + ::pg_query::Node* limit_offset_; + ::pg_query::Node* limit_count_; + ::pg_query::Node* set_operations_; + int command_type_; + int query_source_; + ::PROTOBUF_NAMESPACE_ID::int32 result_relation_; + bool can_set_tag_; + bool has_aggs_; + bool has_window_funcs_; + bool has_target_srfs_; + bool has_sub_links_; + bool has_distinct_on_; + bool has_recursive_; + bool has_modifying_cte_; + bool has_for_update_; + bool has_row_security_; + int override_; + int limit_option_; + ::PROTOBUF_NAMESPACE_ID::int32 stmt_location_; + ::PROTOBUF_NAMESPACE_ID::int32 stmt_len_; + mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; + friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; +}; +// ------------------------------------------------------------------- + +class InsertStmt PROTOBUF_FINAL : + public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.InsertStmt) */ { + public: + inline InsertStmt() : InsertStmt(nullptr) {} + virtual ~InsertStmt(); + + InsertStmt(const InsertStmt& from); + InsertStmt(InsertStmt&& from) noexcept + : InsertStmt() { + *this = ::std::move(from); + } + + inline InsertStmt& operator=(const InsertStmt& from) { + CopyFrom(from); + return *this; + } + inline InsertStmt& operator=(InsertStmt&& from) noexcept { + if (GetArena() == from.GetArena()) { + if (this != &from) InternalSwap(&from); + } else { + CopyFrom(from); + } + return *this; + } + + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { + return GetDescriptor(); + } + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { + return GetMetadataStatic().descriptor; + } + static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { + return GetMetadataStatic().reflection; + } + static const InsertStmt& default_instance(); + + static inline const InsertStmt* internal_default_instance() { + return reinterpret_cast( + &_InsertStmt_default_instance_); + } + static constexpr int kIndexInFileMessages = + 65; + + friend void swap(InsertStmt& a, InsertStmt& b) { + a.Swap(&b); + } + inline void Swap(InsertStmt* other) { + if (other == this) return; + if (GetArena() == other->GetArena()) { + InternalSwap(other); + } else { + ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); + } + } + void UnsafeArenaSwap(InsertStmt* other) { + if (other == this) return; + GOOGLE_DCHECK(GetArena() == other->GetArena()); + InternalSwap(other); + } + + // implements Message ---------------------------------------------- + + inline InsertStmt* New() const final { + return CreateMaybeMessage(nullptr); + } + + InsertStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { + return CreateMaybeMessage(arena); + } + void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void CopyFrom(const InsertStmt& from); + void MergeFrom(const InsertStmt& from); + PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; + bool IsInitialized() const final; + + size_t ByteSizeLong() const final; + const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; + ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( + ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; + int GetCachedSize() const final { return _cached_size_.Get(); } + + private: + inline void SharedCtor(); + inline void SharedDtor(); + void SetCachedSize(int size) const final; + void InternalSwap(InsertStmt* other); + friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; + static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { + return "pg_query.InsertStmt"; + } + protected: + explicit InsertStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena); + private: + static void ArenaDtor(void* object); + inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); + public: + + ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; + private: + static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { + ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); + return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; + } + + public: + + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + + enum : int { + kColsFieldNumber = 2, + kReturningListFieldNumber = 5, + kRelationFieldNumber = 1, + kSelectStmtFieldNumber = 3, + kOnConflictClauseFieldNumber = 4, + kWithClauseFieldNumber = 6, + kOverrideFieldNumber = 7, + }; + // repeated .pg_query.Node cols = 2 [json_name = "cols"]; + int cols_size() const; + private: + int _internal_cols_size() const; + public: + void clear_cols(); + ::pg_query::Node* mutable_cols(int index); + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* + mutable_cols(); + private: + const ::pg_query::Node& _internal_cols(int index) const; + ::pg_query::Node* _internal_add_cols(); + public: + const ::pg_query::Node& cols(int index) const; + ::pg_query::Node* add_cols(); + const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& + cols() const; + + // repeated .pg_query.Node returning_list = 5 [json_name = "returningList"]; + int returning_list_size() const; + private: + int _internal_returning_list_size() const; + public: + void clear_returning_list(); + ::pg_query::Node* mutable_returning_list(int index); + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* + mutable_returning_list(); + private: + const ::pg_query::Node& _internal_returning_list(int index) const; + ::pg_query::Node* _internal_add_returning_list(); + public: + const ::pg_query::Node& returning_list(int index) const; + ::pg_query::Node* add_returning_list(); + const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& + returning_list() const; + + // .pg_query.RangeVar relation = 1 [json_name = "relation"]; + bool has_relation() const; + private: + bool _internal_has_relation() const; + public: + void clear_relation(); + const ::pg_query::RangeVar& relation() const; + ::pg_query::RangeVar* release_relation(); + ::pg_query::RangeVar* mutable_relation(); + void set_allocated_relation(::pg_query::RangeVar* relation); + private: + const ::pg_query::RangeVar& _internal_relation() const; + ::pg_query::RangeVar* _internal_mutable_relation(); + public: + void unsafe_arena_set_allocated_relation( + ::pg_query::RangeVar* relation); + ::pg_query::RangeVar* unsafe_arena_release_relation(); + + // .pg_query.Node select_stmt = 3 [json_name = "selectStmt"]; + bool has_select_stmt() const; + private: + bool _internal_has_select_stmt() const; + public: + void clear_select_stmt(); + const ::pg_query::Node& select_stmt() const; + ::pg_query::Node* release_select_stmt(); + ::pg_query::Node* mutable_select_stmt(); + void set_allocated_select_stmt(::pg_query::Node* select_stmt); + private: + const ::pg_query::Node& _internal_select_stmt() const; + ::pg_query::Node* _internal_mutable_select_stmt(); + public: + void unsafe_arena_set_allocated_select_stmt( + ::pg_query::Node* select_stmt); + ::pg_query::Node* unsafe_arena_release_select_stmt(); + + // .pg_query.OnConflictClause on_conflict_clause = 4 [json_name = "onConflictClause"]; + bool has_on_conflict_clause() const; + private: + bool _internal_has_on_conflict_clause() const; + public: + void clear_on_conflict_clause(); + const ::pg_query::OnConflictClause& on_conflict_clause() const; + ::pg_query::OnConflictClause* release_on_conflict_clause(); + ::pg_query::OnConflictClause* mutable_on_conflict_clause(); + void set_allocated_on_conflict_clause(::pg_query::OnConflictClause* on_conflict_clause); + private: + const ::pg_query::OnConflictClause& _internal_on_conflict_clause() const; + ::pg_query::OnConflictClause* _internal_mutable_on_conflict_clause(); + public: + void unsafe_arena_set_allocated_on_conflict_clause( + ::pg_query::OnConflictClause* on_conflict_clause); + ::pg_query::OnConflictClause* unsafe_arena_release_on_conflict_clause(); + + // .pg_query.WithClause with_clause = 6 [json_name = "withClause"]; + bool has_with_clause() const; + private: + bool _internal_has_with_clause() const; + public: + void clear_with_clause(); + const ::pg_query::WithClause& with_clause() const; + ::pg_query::WithClause* release_with_clause(); + ::pg_query::WithClause* mutable_with_clause(); + void set_allocated_with_clause(::pg_query::WithClause* with_clause); + private: + const ::pg_query::WithClause& _internal_with_clause() const; + ::pg_query::WithClause* _internal_mutable_with_clause(); + public: + void unsafe_arena_set_allocated_with_clause( + ::pg_query::WithClause* with_clause); + ::pg_query::WithClause* unsafe_arena_release_with_clause(); + + // .pg_query.OverridingKind override = 7 [json_name = "override"]; + void clear_override(); + ::pg_query::OverridingKind override() const; + void set_override(::pg_query::OverridingKind value); + private: + ::pg_query::OverridingKind _internal_override() const; + void _internal_set_override(::pg_query::OverridingKind value); + public: + + // @@protoc_insertion_point(class_scope:pg_query.InsertStmt) + private: + class _Internal; + + template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; + typedef void InternalArenaConstructable_; + typedef void DestructorSkippable_; + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > cols_; + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > returning_list_; + ::pg_query::RangeVar* relation_; + ::pg_query::Node* select_stmt_; + ::pg_query::OnConflictClause* on_conflict_clause_; + ::pg_query::WithClause* with_clause_; + int override_; + mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; + friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; +}; +// ------------------------------------------------------------------- + +class DeleteStmt PROTOBUF_FINAL : + public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.DeleteStmt) */ { + public: + inline DeleteStmt() : DeleteStmt(nullptr) {} + virtual ~DeleteStmt(); + + DeleteStmt(const DeleteStmt& from); + DeleteStmt(DeleteStmt&& from) noexcept + : DeleteStmt() { + *this = ::std::move(from); + } + + inline DeleteStmt& operator=(const DeleteStmt& from) { + CopyFrom(from); + return *this; + } + inline DeleteStmt& operator=(DeleteStmt&& from) noexcept { + if (GetArena() == from.GetArena()) { + if (this != &from) InternalSwap(&from); + } else { + CopyFrom(from); + } + return *this; + } + + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { + return GetDescriptor(); + } + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { + return GetMetadataStatic().descriptor; + } + static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { + return GetMetadataStatic().reflection; + } + static const DeleteStmt& default_instance(); + + static inline const DeleteStmt* internal_default_instance() { + return reinterpret_cast( + &_DeleteStmt_default_instance_); + } + static constexpr int kIndexInFileMessages = + 66; + + friend void swap(DeleteStmt& a, DeleteStmt& b) { + a.Swap(&b); + } + inline void Swap(DeleteStmt* other) { + if (other == this) return; + if (GetArena() == other->GetArena()) { + InternalSwap(other); + } else { + ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); + } + } + void UnsafeArenaSwap(DeleteStmt* other) { + if (other == this) return; + GOOGLE_DCHECK(GetArena() == other->GetArena()); + InternalSwap(other); + } + + // implements Message ---------------------------------------------- + + inline DeleteStmt* New() const final { + return CreateMaybeMessage(nullptr); + } + + DeleteStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { + return CreateMaybeMessage(arena); + } + void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void CopyFrom(const DeleteStmt& from); + void MergeFrom(const DeleteStmt& from); + PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; + bool IsInitialized() const final; + + size_t ByteSizeLong() const final; + const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; + ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( + ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; + int GetCachedSize() const final { return _cached_size_.Get(); } + + private: + inline void SharedCtor(); + inline void SharedDtor(); + void SetCachedSize(int size) const final; + void InternalSwap(DeleteStmt* other); + friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; + static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { + return "pg_query.DeleteStmt"; + } + protected: + explicit DeleteStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena); + private: + static void ArenaDtor(void* object); + inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); + public: + + ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; + private: + static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { + ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); + return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; + } + + public: + + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + + enum : int { + kUsingClauseFieldNumber = 2, + kReturningListFieldNumber = 4, + kRelationFieldNumber = 1, + kWhereClauseFieldNumber = 3, + kWithClauseFieldNumber = 5, + }; + // repeated .pg_query.Node using_clause = 2 [json_name = "usingClause"]; + int using_clause_size() const; + private: + int _internal_using_clause_size() const; + public: + void clear_using_clause(); + ::pg_query::Node* mutable_using_clause(int index); + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* + mutable_using_clause(); + private: + const ::pg_query::Node& _internal_using_clause(int index) const; + ::pg_query::Node* _internal_add_using_clause(); + public: + const ::pg_query::Node& using_clause(int index) const; + ::pg_query::Node* add_using_clause(); + const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& + using_clause() const; + + // repeated .pg_query.Node returning_list = 4 [json_name = "returningList"]; + int returning_list_size() const; + private: + int _internal_returning_list_size() const; + public: + void clear_returning_list(); + ::pg_query::Node* mutable_returning_list(int index); + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* + mutable_returning_list(); + private: + const ::pg_query::Node& _internal_returning_list(int index) const; + ::pg_query::Node* _internal_add_returning_list(); + public: + const ::pg_query::Node& returning_list(int index) const; + ::pg_query::Node* add_returning_list(); + const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& + returning_list() const; + + // .pg_query.RangeVar relation = 1 [json_name = "relation"]; + bool has_relation() const; + private: + bool _internal_has_relation() const; + public: + void clear_relation(); + const ::pg_query::RangeVar& relation() const; + ::pg_query::RangeVar* release_relation(); + ::pg_query::RangeVar* mutable_relation(); + void set_allocated_relation(::pg_query::RangeVar* relation); + private: + const ::pg_query::RangeVar& _internal_relation() const; + ::pg_query::RangeVar* _internal_mutable_relation(); + public: + void unsafe_arena_set_allocated_relation( + ::pg_query::RangeVar* relation); + ::pg_query::RangeVar* unsafe_arena_release_relation(); + + // .pg_query.Node where_clause = 3 [json_name = "whereClause"]; + bool has_where_clause() const; + private: + bool _internal_has_where_clause() const; + public: + void clear_where_clause(); + const ::pg_query::Node& where_clause() const; + ::pg_query::Node* release_where_clause(); + ::pg_query::Node* mutable_where_clause(); + void set_allocated_where_clause(::pg_query::Node* where_clause); + private: + const ::pg_query::Node& _internal_where_clause() const; + ::pg_query::Node* _internal_mutable_where_clause(); + public: + void unsafe_arena_set_allocated_where_clause( + ::pg_query::Node* where_clause); + ::pg_query::Node* unsafe_arena_release_where_clause(); + + // .pg_query.WithClause with_clause = 5 [json_name = "withClause"]; + bool has_with_clause() const; + private: + bool _internal_has_with_clause() const; + public: + void clear_with_clause(); + const ::pg_query::WithClause& with_clause() const; + ::pg_query::WithClause* release_with_clause(); + ::pg_query::WithClause* mutable_with_clause(); + void set_allocated_with_clause(::pg_query::WithClause* with_clause); + private: + const ::pg_query::WithClause& _internal_with_clause() const; + ::pg_query::WithClause* _internal_mutable_with_clause(); + public: + void unsafe_arena_set_allocated_with_clause( + ::pg_query::WithClause* with_clause); + ::pg_query::WithClause* unsafe_arena_release_with_clause(); + + // @@protoc_insertion_point(class_scope:pg_query.DeleteStmt) + private: + class _Internal; + + template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; + typedef void InternalArenaConstructable_; + typedef void DestructorSkippable_; + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > using_clause_; + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > returning_list_; + ::pg_query::RangeVar* relation_; + ::pg_query::Node* where_clause_; + ::pg_query::WithClause* with_clause_; + mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; + friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; +}; +// ------------------------------------------------------------------- + +class UpdateStmt PROTOBUF_FINAL : + public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.UpdateStmt) */ { + public: + inline UpdateStmt() : UpdateStmt(nullptr) {} + virtual ~UpdateStmt(); + + UpdateStmt(const UpdateStmt& from); + UpdateStmt(UpdateStmt&& from) noexcept + : UpdateStmt() { + *this = ::std::move(from); + } + + inline UpdateStmt& operator=(const UpdateStmt& from) { + CopyFrom(from); + return *this; + } + inline UpdateStmt& operator=(UpdateStmt&& from) noexcept { + if (GetArena() == from.GetArena()) { + if (this != &from) InternalSwap(&from); + } else { + CopyFrom(from); + } + return *this; + } + + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { + return GetDescriptor(); + } + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { + return GetMetadataStatic().descriptor; + } + static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { + return GetMetadataStatic().reflection; + } + static const UpdateStmt& default_instance(); + + static inline const UpdateStmt* internal_default_instance() { + return reinterpret_cast( + &_UpdateStmt_default_instance_); + } + static constexpr int kIndexInFileMessages = + 67; + + friend void swap(UpdateStmt& a, UpdateStmt& b) { + a.Swap(&b); + } + inline void Swap(UpdateStmt* other) { + if (other == this) return; + if (GetArena() == other->GetArena()) { + InternalSwap(other); + } else { + ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); + } + } + void UnsafeArenaSwap(UpdateStmt* other) { + if (other == this) return; + GOOGLE_DCHECK(GetArena() == other->GetArena()); + InternalSwap(other); + } + + // implements Message ---------------------------------------------- + + inline UpdateStmt* New() const final { + return CreateMaybeMessage(nullptr); + } + + UpdateStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { + return CreateMaybeMessage(arena); + } + void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void CopyFrom(const UpdateStmt& from); + void MergeFrom(const UpdateStmt& from); + PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; + bool IsInitialized() const final; + + size_t ByteSizeLong() const final; + const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; + ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( + ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; + int GetCachedSize() const final { return _cached_size_.Get(); } + + private: + inline void SharedCtor(); + inline void SharedDtor(); + void SetCachedSize(int size) const final; + void InternalSwap(UpdateStmt* other); + friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; + static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { + return "pg_query.UpdateStmt"; + } + protected: + explicit UpdateStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena); + private: + static void ArenaDtor(void* object); + inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); + public: + + ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; + private: + static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { + ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); + return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; + } + + public: + + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + + enum : int { + kTargetListFieldNumber = 2, + kFromClauseFieldNumber = 4, + kReturningListFieldNumber = 5, + kRelationFieldNumber = 1, + kWhereClauseFieldNumber = 3, + kWithClauseFieldNumber = 6, + }; + // repeated .pg_query.Node target_list = 2 [json_name = "targetList"]; + int target_list_size() const; + private: + int _internal_target_list_size() const; + public: + void clear_target_list(); + ::pg_query::Node* mutable_target_list(int index); + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* + mutable_target_list(); + private: + const ::pg_query::Node& _internal_target_list(int index) const; + ::pg_query::Node* _internal_add_target_list(); + public: + const ::pg_query::Node& target_list(int index) const; + ::pg_query::Node* add_target_list(); + const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& + target_list() const; + + // repeated .pg_query.Node from_clause = 4 [json_name = "fromClause"]; + int from_clause_size() const; + private: + int _internal_from_clause_size() const; + public: + void clear_from_clause(); + ::pg_query::Node* mutable_from_clause(int index); + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* + mutable_from_clause(); + private: + const ::pg_query::Node& _internal_from_clause(int index) const; + ::pg_query::Node* _internal_add_from_clause(); + public: + const ::pg_query::Node& from_clause(int index) const; + ::pg_query::Node* add_from_clause(); + const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& + from_clause() const; + + // repeated .pg_query.Node returning_list = 5 [json_name = "returningList"]; + int returning_list_size() const; + private: + int _internal_returning_list_size() const; + public: + void clear_returning_list(); + ::pg_query::Node* mutable_returning_list(int index); + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* + mutable_returning_list(); + private: + const ::pg_query::Node& _internal_returning_list(int index) const; + ::pg_query::Node* _internal_add_returning_list(); + public: + const ::pg_query::Node& returning_list(int index) const; + ::pg_query::Node* add_returning_list(); + const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& + returning_list() const; + + // .pg_query.RangeVar relation = 1 [json_name = "relation"]; + bool has_relation() const; + private: + bool _internal_has_relation() const; + public: + void clear_relation(); + const ::pg_query::RangeVar& relation() const; + ::pg_query::RangeVar* release_relation(); + ::pg_query::RangeVar* mutable_relation(); + void set_allocated_relation(::pg_query::RangeVar* relation); + private: + const ::pg_query::RangeVar& _internal_relation() const; + ::pg_query::RangeVar* _internal_mutable_relation(); + public: + void unsafe_arena_set_allocated_relation( + ::pg_query::RangeVar* relation); + ::pg_query::RangeVar* unsafe_arena_release_relation(); + + // .pg_query.Node where_clause = 3 [json_name = "whereClause"]; + bool has_where_clause() const; + private: + bool _internal_has_where_clause() const; + public: + void clear_where_clause(); + const ::pg_query::Node& where_clause() const; + ::pg_query::Node* release_where_clause(); + ::pg_query::Node* mutable_where_clause(); + void set_allocated_where_clause(::pg_query::Node* where_clause); + private: + const ::pg_query::Node& _internal_where_clause() const; + ::pg_query::Node* _internal_mutable_where_clause(); + public: + void unsafe_arena_set_allocated_where_clause( + ::pg_query::Node* where_clause); + ::pg_query::Node* unsafe_arena_release_where_clause(); + + // .pg_query.WithClause with_clause = 6 [json_name = "withClause"]; + bool has_with_clause() const; + private: + bool _internal_has_with_clause() const; + public: + void clear_with_clause(); + const ::pg_query::WithClause& with_clause() const; + ::pg_query::WithClause* release_with_clause(); + ::pg_query::WithClause* mutable_with_clause(); + void set_allocated_with_clause(::pg_query::WithClause* with_clause); + private: + const ::pg_query::WithClause& _internal_with_clause() const; + ::pg_query::WithClause* _internal_mutable_with_clause(); + public: + void unsafe_arena_set_allocated_with_clause( + ::pg_query::WithClause* with_clause); + ::pg_query::WithClause* unsafe_arena_release_with_clause(); + + // @@protoc_insertion_point(class_scope:pg_query.UpdateStmt) + private: + class _Internal; + + template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; + typedef void InternalArenaConstructable_; + typedef void DestructorSkippable_; + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > target_list_; + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > from_clause_; + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > returning_list_; + ::pg_query::RangeVar* relation_; + ::pg_query::Node* where_clause_; + ::pg_query::WithClause* with_clause_; + mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; + friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; +}; +// ------------------------------------------------------------------- + +class SelectStmt PROTOBUF_FINAL : + public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.SelectStmt) */ { + public: + inline SelectStmt() : SelectStmt(nullptr) {} + virtual ~SelectStmt(); + + SelectStmt(const SelectStmt& from); + SelectStmt(SelectStmt&& from) noexcept + : SelectStmt() { + *this = ::std::move(from); + } + + inline SelectStmt& operator=(const SelectStmt& from) { + CopyFrom(from); + return *this; + } + inline SelectStmt& operator=(SelectStmt&& from) noexcept { + if (GetArena() == from.GetArena()) { + if (this != &from) InternalSwap(&from); + } else { + CopyFrom(from); + } + return *this; + } + + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { + return GetDescriptor(); + } + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { + return GetMetadataStatic().descriptor; + } + static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { + return GetMetadataStatic().reflection; + } + static const SelectStmt& default_instance(); + + static inline const SelectStmt* internal_default_instance() { + return reinterpret_cast( + &_SelectStmt_default_instance_); + } + static constexpr int kIndexInFileMessages = + 68; + + friend void swap(SelectStmt& a, SelectStmt& b) { + a.Swap(&b); + } + inline void Swap(SelectStmt* other) { + if (other == this) return; + if (GetArena() == other->GetArena()) { + InternalSwap(other); + } else { + ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); + } + } + void UnsafeArenaSwap(SelectStmt* other) { + if (other == this) return; + GOOGLE_DCHECK(GetArena() == other->GetArena()); + InternalSwap(other); + } + + // implements Message ---------------------------------------------- + + inline SelectStmt* New() const final { + return CreateMaybeMessage(nullptr); + } + + SelectStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { + return CreateMaybeMessage(arena); + } + void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void CopyFrom(const SelectStmt& from); + void MergeFrom(const SelectStmt& from); + PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; + bool IsInitialized() const final; + + size_t ByteSizeLong() const final; + const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; + ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( + ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; + int GetCachedSize() const final { return _cached_size_.Get(); } + + private: + inline void SharedCtor(); + inline void SharedDtor(); + void SetCachedSize(int size) const final; + void InternalSwap(SelectStmt* other); + friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; + static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { + return "pg_query.SelectStmt"; + } + protected: + explicit SelectStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena); + private: + static void ArenaDtor(void* object); + inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); + public: + + ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; + private: + static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { + ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); + return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; + } + + public: + + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + + enum : int { + kDistinctClauseFieldNumber = 1, + kTargetListFieldNumber = 3, + kFromClauseFieldNumber = 4, + kGroupClauseFieldNumber = 6, + kWindowClauseFieldNumber = 8, + kValuesListsFieldNumber = 9, + kSortClauseFieldNumber = 10, + kLockingClauseFieldNumber = 14, + kIntoClauseFieldNumber = 2, + kWhereClauseFieldNumber = 5, + kHavingClauseFieldNumber = 7, + kLimitOffsetFieldNumber = 11, + kLimitCountFieldNumber = 12, + kWithClauseFieldNumber = 15, + kLargFieldNumber = 18, + kRargFieldNumber = 19, + kLimitOptionFieldNumber = 13, + kOpFieldNumber = 16, + kAllFieldNumber = 17, + }; + // repeated .pg_query.Node distinct_clause = 1 [json_name = "distinctClause"]; + int distinct_clause_size() const; + private: + int _internal_distinct_clause_size() const; + public: + void clear_distinct_clause(); + ::pg_query::Node* mutable_distinct_clause(int index); + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* + mutable_distinct_clause(); + private: + const ::pg_query::Node& _internal_distinct_clause(int index) const; + ::pg_query::Node* _internal_add_distinct_clause(); + public: + const ::pg_query::Node& distinct_clause(int index) const; + ::pg_query::Node* add_distinct_clause(); + const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& + distinct_clause() const; + + // repeated .pg_query.Node target_list = 3 [json_name = "targetList"]; + int target_list_size() const; + private: + int _internal_target_list_size() const; + public: + void clear_target_list(); + ::pg_query::Node* mutable_target_list(int index); + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* + mutable_target_list(); + private: + const ::pg_query::Node& _internal_target_list(int index) const; + ::pg_query::Node* _internal_add_target_list(); + public: + const ::pg_query::Node& target_list(int index) const; + ::pg_query::Node* add_target_list(); + const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& + target_list() const; + + // repeated .pg_query.Node from_clause = 4 [json_name = "fromClause"]; + int from_clause_size() const; + private: + int _internal_from_clause_size() const; + public: + void clear_from_clause(); + ::pg_query::Node* mutable_from_clause(int index); + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* + mutable_from_clause(); + private: + const ::pg_query::Node& _internal_from_clause(int index) const; + ::pg_query::Node* _internal_add_from_clause(); + public: + const ::pg_query::Node& from_clause(int index) const; + ::pg_query::Node* add_from_clause(); + const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& + from_clause() const; + + // repeated .pg_query.Node group_clause = 6 [json_name = "groupClause"]; + int group_clause_size() const; + private: + int _internal_group_clause_size() const; + public: + void clear_group_clause(); + ::pg_query::Node* mutable_group_clause(int index); + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* + mutable_group_clause(); + private: + const ::pg_query::Node& _internal_group_clause(int index) const; + ::pg_query::Node* _internal_add_group_clause(); + public: + const ::pg_query::Node& group_clause(int index) const; + ::pg_query::Node* add_group_clause(); + const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& + group_clause() const; + + // repeated .pg_query.Node window_clause = 8 [json_name = "windowClause"]; + int window_clause_size() const; + private: + int _internal_window_clause_size() const; + public: + void clear_window_clause(); + ::pg_query::Node* mutable_window_clause(int index); + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* + mutable_window_clause(); + private: + const ::pg_query::Node& _internal_window_clause(int index) const; + ::pg_query::Node* _internal_add_window_clause(); + public: + const ::pg_query::Node& window_clause(int index) const; + ::pg_query::Node* add_window_clause(); + const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& + window_clause() const; + + // repeated .pg_query.Node values_lists = 9 [json_name = "valuesLists"]; + int values_lists_size() const; + private: + int _internal_values_lists_size() const; + public: + void clear_values_lists(); + ::pg_query::Node* mutable_values_lists(int index); + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* + mutable_values_lists(); + private: + const ::pg_query::Node& _internal_values_lists(int index) const; + ::pg_query::Node* _internal_add_values_lists(); + public: + const ::pg_query::Node& values_lists(int index) const; + ::pg_query::Node* add_values_lists(); + const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& + values_lists() const; + + // repeated .pg_query.Node sort_clause = 10 [json_name = "sortClause"]; + int sort_clause_size() const; + private: + int _internal_sort_clause_size() const; + public: + void clear_sort_clause(); + ::pg_query::Node* mutable_sort_clause(int index); + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* + mutable_sort_clause(); + private: + const ::pg_query::Node& _internal_sort_clause(int index) const; + ::pg_query::Node* _internal_add_sort_clause(); + public: + const ::pg_query::Node& sort_clause(int index) const; + ::pg_query::Node* add_sort_clause(); + const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& + sort_clause() const; + + // repeated .pg_query.Node locking_clause = 14 [json_name = "lockingClause"]; + int locking_clause_size() const; + private: + int _internal_locking_clause_size() const; + public: + void clear_locking_clause(); + ::pg_query::Node* mutable_locking_clause(int index); + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* + mutable_locking_clause(); + private: + const ::pg_query::Node& _internal_locking_clause(int index) const; + ::pg_query::Node* _internal_add_locking_clause(); + public: + const ::pg_query::Node& locking_clause(int index) const; + ::pg_query::Node* add_locking_clause(); + const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& + locking_clause() const; + + // .pg_query.IntoClause into_clause = 2 [json_name = "intoClause"]; + bool has_into_clause() const; + private: + bool _internal_has_into_clause() const; + public: + void clear_into_clause(); + const ::pg_query::IntoClause& into_clause() const; + ::pg_query::IntoClause* release_into_clause(); + ::pg_query::IntoClause* mutable_into_clause(); + void set_allocated_into_clause(::pg_query::IntoClause* into_clause); + private: + const ::pg_query::IntoClause& _internal_into_clause() const; + ::pg_query::IntoClause* _internal_mutable_into_clause(); + public: + void unsafe_arena_set_allocated_into_clause( + ::pg_query::IntoClause* into_clause); + ::pg_query::IntoClause* unsafe_arena_release_into_clause(); + + // .pg_query.Node where_clause = 5 [json_name = "whereClause"]; + bool has_where_clause() const; + private: + bool _internal_has_where_clause() const; + public: + void clear_where_clause(); + const ::pg_query::Node& where_clause() const; + ::pg_query::Node* release_where_clause(); + ::pg_query::Node* mutable_where_clause(); + void set_allocated_where_clause(::pg_query::Node* where_clause); + private: + const ::pg_query::Node& _internal_where_clause() const; + ::pg_query::Node* _internal_mutable_where_clause(); + public: + void unsafe_arena_set_allocated_where_clause( + ::pg_query::Node* where_clause); + ::pg_query::Node* unsafe_arena_release_where_clause(); + + // .pg_query.Node having_clause = 7 [json_name = "havingClause"]; + bool has_having_clause() const; + private: + bool _internal_has_having_clause() const; + public: + void clear_having_clause(); + const ::pg_query::Node& having_clause() const; + ::pg_query::Node* release_having_clause(); + ::pg_query::Node* mutable_having_clause(); + void set_allocated_having_clause(::pg_query::Node* having_clause); + private: + const ::pg_query::Node& _internal_having_clause() const; + ::pg_query::Node* _internal_mutable_having_clause(); + public: + void unsafe_arena_set_allocated_having_clause( + ::pg_query::Node* having_clause); + ::pg_query::Node* unsafe_arena_release_having_clause(); + + // .pg_query.Node limit_offset = 11 [json_name = "limitOffset"]; + bool has_limit_offset() const; + private: + bool _internal_has_limit_offset() const; + public: + void clear_limit_offset(); + const ::pg_query::Node& limit_offset() const; + ::pg_query::Node* release_limit_offset(); + ::pg_query::Node* mutable_limit_offset(); + void set_allocated_limit_offset(::pg_query::Node* limit_offset); + private: + const ::pg_query::Node& _internal_limit_offset() const; + ::pg_query::Node* _internal_mutable_limit_offset(); + public: + void unsafe_arena_set_allocated_limit_offset( + ::pg_query::Node* limit_offset); + ::pg_query::Node* unsafe_arena_release_limit_offset(); + + // .pg_query.Node limit_count = 12 [json_name = "limitCount"]; + bool has_limit_count() const; + private: + bool _internal_has_limit_count() const; + public: + void clear_limit_count(); + const ::pg_query::Node& limit_count() const; + ::pg_query::Node* release_limit_count(); + ::pg_query::Node* mutable_limit_count(); + void set_allocated_limit_count(::pg_query::Node* limit_count); + private: + const ::pg_query::Node& _internal_limit_count() const; + ::pg_query::Node* _internal_mutable_limit_count(); + public: + void unsafe_arena_set_allocated_limit_count( + ::pg_query::Node* limit_count); + ::pg_query::Node* unsafe_arena_release_limit_count(); + + // .pg_query.WithClause with_clause = 15 [json_name = "withClause"]; + bool has_with_clause() const; + private: + bool _internal_has_with_clause() const; + public: + void clear_with_clause(); + const ::pg_query::WithClause& with_clause() const; + ::pg_query::WithClause* release_with_clause(); + ::pg_query::WithClause* mutable_with_clause(); + void set_allocated_with_clause(::pg_query::WithClause* with_clause); + private: + const ::pg_query::WithClause& _internal_with_clause() const; + ::pg_query::WithClause* _internal_mutable_with_clause(); + public: + void unsafe_arena_set_allocated_with_clause( + ::pg_query::WithClause* with_clause); + ::pg_query::WithClause* unsafe_arena_release_with_clause(); + + // .pg_query.SelectStmt larg = 18 [json_name = "larg"]; + bool has_larg() const; + private: + bool _internal_has_larg() const; + public: + void clear_larg(); + const ::pg_query::SelectStmt& larg() const; + ::pg_query::SelectStmt* release_larg(); + ::pg_query::SelectStmt* mutable_larg(); + void set_allocated_larg(::pg_query::SelectStmt* larg); + private: + const ::pg_query::SelectStmt& _internal_larg() const; + ::pg_query::SelectStmt* _internal_mutable_larg(); + public: + void unsafe_arena_set_allocated_larg( + ::pg_query::SelectStmt* larg); + ::pg_query::SelectStmt* unsafe_arena_release_larg(); + + // .pg_query.SelectStmt rarg = 19 [json_name = "rarg"]; + bool has_rarg() const; + private: + bool _internal_has_rarg() const; + public: + void clear_rarg(); + const ::pg_query::SelectStmt& rarg() const; + ::pg_query::SelectStmt* release_rarg(); + ::pg_query::SelectStmt* mutable_rarg(); + void set_allocated_rarg(::pg_query::SelectStmt* rarg); + private: + const ::pg_query::SelectStmt& _internal_rarg() const; + ::pg_query::SelectStmt* _internal_mutable_rarg(); + public: + void unsafe_arena_set_allocated_rarg( + ::pg_query::SelectStmt* rarg); + ::pg_query::SelectStmt* unsafe_arena_release_rarg(); + + // .pg_query.LimitOption limit_option = 13 [json_name = "limitOption"]; + void clear_limit_option(); + ::pg_query::LimitOption limit_option() const; + void set_limit_option(::pg_query::LimitOption value); + private: + ::pg_query::LimitOption _internal_limit_option() const; + void _internal_set_limit_option(::pg_query::LimitOption value); + public: + + // .pg_query.SetOperation op = 16 [json_name = "op"]; + void clear_op(); + ::pg_query::SetOperation op() const; + void set_op(::pg_query::SetOperation value); + private: + ::pg_query::SetOperation _internal_op() const; + void _internal_set_op(::pg_query::SetOperation value); + public: + + // bool all = 17 [json_name = "all"]; + void clear_all(); + bool all() const; + void set_all(bool value); + private: + bool _internal_all() const; + void _internal_set_all(bool value); + public: + + // @@protoc_insertion_point(class_scope:pg_query.SelectStmt) + private: + class _Internal; + + template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; + typedef void InternalArenaConstructable_; + typedef void DestructorSkippable_; + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > distinct_clause_; + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > target_list_; + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > from_clause_; + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > group_clause_; + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > window_clause_; + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > values_lists_; + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > sort_clause_; + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > locking_clause_; + ::pg_query::IntoClause* into_clause_; + ::pg_query::Node* where_clause_; + ::pg_query::Node* having_clause_; + ::pg_query::Node* limit_offset_; + ::pg_query::Node* limit_count_; + ::pg_query::WithClause* with_clause_; + ::pg_query::SelectStmt* larg_; + ::pg_query::SelectStmt* rarg_; + int limit_option_; + int op_; + bool all_; + mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; + friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; +}; +// ------------------------------------------------------------------- + +class AlterTableStmt PROTOBUF_FINAL : + public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.AlterTableStmt) */ { + public: + inline AlterTableStmt() : AlterTableStmt(nullptr) {} + virtual ~AlterTableStmt(); + + AlterTableStmt(const AlterTableStmt& from); + AlterTableStmt(AlterTableStmt&& from) noexcept + : AlterTableStmt() { + *this = ::std::move(from); + } + + inline AlterTableStmt& operator=(const AlterTableStmt& from) { + CopyFrom(from); + return *this; + } + inline AlterTableStmt& operator=(AlterTableStmt&& from) noexcept { + if (GetArena() == from.GetArena()) { + if (this != &from) InternalSwap(&from); + } else { + CopyFrom(from); + } + return *this; + } + + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { + return GetDescriptor(); + } + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { + return GetMetadataStatic().descriptor; + } + static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { + return GetMetadataStatic().reflection; + } + static const AlterTableStmt& default_instance(); + + static inline const AlterTableStmt* internal_default_instance() { + return reinterpret_cast( + &_AlterTableStmt_default_instance_); + } + static constexpr int kIndexInFileMessages = + 69; + + friend void swap(AlterTableStmt& a, AlterTableStmt& b) { + a.Swap(&b); + } + inline void Swap(AlterTableStmt* other) { + if (other == this) return; + if (GetArena() == other->GetArena()) { + InternalSwap(other); + } else { + ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); + } + } + void UnsafeArenaSwap(AlterTableStmt* other) { + if (other == this) return; + GOOGLE_DCHECK(GetArena() == other->GetArena()); + InternalSwap(other); + } + + // implements Message ---------------------------------------------- + + inline AlterTableStmt* New() const final { + return CreateMaybeMessage(nullptr); + } + + AlterTableStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { + return CreateMaybeMessage(arena); + } + void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void CopyFrom(const AlterTableStmt& from); + void MergeFrom(const AlterTableStmt& from); + PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; + bool IsInitialized() const final; + + size_t ByteSizeLong() const final; + const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; + ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( + ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; + int GetCachedSize() const final { return _cached_size_.Get(); } + + private: + inline void SharedCtor(); + inline void SharedDtor(); + void SetCachedSize(int size) const final; + void InternalSwap(AlterTableStmt* other); + friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; + static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { + return "pg_query.AlterTableStmt"; + } + protected: + explicit AlterTableStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena); + private: + static void ArenaDtor(void* object); + inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); + public: + + ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; + private: + static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { + ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); + return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; + } + + public: + + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + + enum : int { + kCmdsFieldNumber = 2, + kRelationFieldNumber = 1, + kRelkindFieldNumber = 3, + kMissingOkFieldNumber = 4, + }; + // repeated .pg_query.Node cmds = 2 [json_name = "cmds"]; + int cmds_size() const; + private: + int _internal_cmds_size() const; + public: + void clear_cmds(); + ::pg_query::Node* mutable_cmds(int index); + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* + mutable_cmds(); + private: + const ::pg_query::Node& _internal_cmds(int index) const; + ::pg_query::Node* _internal_add_cmds(); + public: + const ::pg_query::Node& cmds(int index) const; + ::pg_query::Node* add_cmds(); + const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& + cmds() const; + + // .pg_query.RangeVar relation = 1 [json_name = "relation"]; + bool has_relation() const; + private: + bool _internal_has_relation() const; + public: + void clear_relation(); + const ::pg_query::RangeVar& relation() const; + ::pg_query::RangeVar* release_relation(); + ::pg_query::RangeVar* mutable_relation(); + void set_allocated_relation(::pg_query::RangeVar* relation); + private: + const ::pg_query::RangeVar& _internal_relation() const; + ::pg_query::RangeVar* _internal_mutable_relation(); + public: + void unsafe_arena_set_allocated_relation( + ::pg_query::RangeVar* relation); + ::pg_query::RangeVar* unsafe_arena_release_relation(); + + // .pg_query.ObjectType relkind = 3 [json_name = "relkind"]; + void clear_relkind(); + ::pg_query::ObjectType relkind() const; + void set_relkind(::pg_query::ObjectType value); + private: + ::pg_query::ObjectType _internal_relkind() const; + void _internal_set_relkind(::pg_query::ObjectType value); + public: + + // bool missing_ok = 4 [json_name = "missing_ok"]; + void clear_missing_ok(); + bool missing_ok() const; + void set_missing_ok(bool value); + private: + bool _internal_missing_ok() const; + void _internal_set_missing_ok(bool value); + public: + + // @@protoc_insertion_point(class_scope:pg_query.AlterTableStmt) + private: + class _Internal; + + template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; + typedef void InternalArenaConstructable_; + typedef void DestructorSkippable_; + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > cmds_; + ::pg_query::RangeVar* relation_; + int relkind_; + bool missing_ok_; + mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; + friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; +}; +// ------------------------------------------------------------------- + +class AlterTableCmd PROTOBUF_FINAL : + public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.AlterTableCmd) */ { + public: + inline AlterTableCmd() : AlterTableCmd(nullptr) {} + virtual ~AlterTableCmd(); + + AlterTableCmd(const AlterTableCmd& from); + AlterTableCmd(AlterTableCmd&& from) noexcept + : AlterTableCmd() { + *this = ::std::move(from); + } + + inline AlterTableCmd& operator=(const AlterTableCmd& from) { + CopyFrom(from); + return *this; + } + inline AlterTableCmd& operator=(AlterTableCmd&& from) noexcept { + if (GetArena() == from.GetArena()) { + if (this != &from) InternalSwap(&from); + } else { + CopyFrom(from); + } + return *this; + } + + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { + return GetDescriptor(); + } + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { + return GetMetadataStatic().descriptor; + } + static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { + return GetMetadataStatic().reflection; + } + static const AlterTableCmd& default_instance(); + + static inline const AlterTableCmd* internal_default_instance() { + return reinterpret_cast( + &_AlterTableCmd_default_instance_); + } + static constexpr int kIndexInFileMessages = + 70; + + friend void swap(AlterTableCmd& a, AlterTableCmd& b) { + a.Swap(&b); + } + inline void Swap(AlterTableCmd* other) { + if (other == this) return; + if (GetArena() == other->GetArena()) { + InternalSwap(other); + } else { + ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); + } + } + void UnsafeArenaSwap(AlterTableCmd* other) { + if (other == this) return; + GOOGLE_DCHECK(GetArena() == other->GetArena()); + InternalSwap(other); + } + + // implements Message ---------------------------------------------- + + inline AlterTableCmd* New() const final { + return CreateMaybeMessage(nullptr); + } + + AlterTableCmd* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { + return CreateMaybeMessage(arena); + } + void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void CopyFrom(const AlterTableCmd& from); + void MergeFrom(const AlterTableCmd& from); + PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; + bool IsInitialized() const final; + + size_t ByteSizeLong() const final; + const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; + ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( + ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; + int GetCachedSize() const final { return _cached_size_.Get(); } + + private: + inline void SharedCtor(); + inline void SharedDtor(); + void SetCachedSize(int size) const final; + void InternalSwap(AlterTableCmd* other); + friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; + static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { + return "pg_query.AlterTableCmd"; + } + protected: + explicit AlterTableCmd(::PROTOBUF_NAMESPACE_ID::Arena* arena); + private: + static void ArenaDtor(void* object); + inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); + public: + + ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; + private: + static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { + ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); + return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; + } + + public: + + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + + enum : int { + kNameFieldNumber = 2, + kNewownerFieldNumber = 4, + kDefFieldNumber = 5, + kSubtypeFieldNumber = 1, + kNumFieldNumber = 3, + kBehaviorFieldNumber = 6, + kMissingOkFieldNumber = 7, + }; + // string name = 2 [json_name = "name"]; + void clear_name(); + const std::string& name() const; + void set_name(const std::string& value); + void set_name(std::string&& value); + void set_name(const char* value); + void set_name(const char* value, size_t size); + std::string* mutable_name(); + std::string* release_name(); + void set_allocated_name(std::string* name); + private: + const std::string& _internal_name() const; + void _internal_set_name(const std::string& value); + std::string* _internal_mutable_name(); + public: + + // .pg_query.RoleSpec newowner = 4 [json_name = "newowner"]; + bool has_newowner() const; + private: + bool _internal_has_newowner() const; + public: + void clear_newowner(); + const ::pg_query::RoleSpec& newowner() const; + ::pg_query::RoleSpec* release_newowner(); + ::pg_query::RoleSpec* mutable_newowner(); + void set_allocated_newowner(::pg_query::RoleSpec* newowner); + private: + const ::pg_query::RoleSpec& _internal_newowner() const; + ::pg_query::RoleSpec* _internal_mutable_newowner(); + public: + void unsafe_arena_set_allocated_newowner( + ::pg_query::RoleSpec* newowner); + ::pg_query::RoleSpec* unsafe_arena_release_newowner(); + + // .pg_query.Node def = 5 [json_name = "def"]; + bool has_def() const; + private: + bool _internal_has_def() const; + public: + void clear_def(); + const ::pg_query::Node& def() const; + ::pg_query::Node* release_def(); + ::pg_query::Node* mutable_def(); + void set_allocated_def(::pg_query::Node* def); + private: + const ::pg_query::Node& _internal_def() const; + ::pg_query::Node* _internal_mutable_def(); + public: + void unsafe_arena_set_allocated_def( + ::pg_query::Node* def); + ::pg_query::Node* unsafe_arena_release_def(); + + // .pg_query.AlterTableType subtype = 1 [json_name = "subtype"]; + void clear_subtype(); + ::pg_query::AlterTableType subtype() const; + void set_subtype(::pg_query::AlterTableType value); + private: + ::pg_query::AlterTableType _internal_subtype() const; + void _internal_set_subtype(::pg_query::AlterTableType value); + public: + + // int32 num = 3 [json_name = "num"]; + void clear_num(); + ::PROTOBUF_NAMESPACE_ID::int32 num() const; + void set_num(::PROTOBUF_NAMESPACE_ID::int32 value); + private: + ::PROTOBUF_NAMESPACE_ID::int32 _internal_num() const; + void _internal_set_num(::PROTOBUF_NAMESPACE_ID::int32 value); + public: + + // .pg_query.DropBehavior behavior = 6 [json_name = "behavior"]; + void clear_behavior(); + ::pg_query::DropBehavior behavior() const; + void set_behavior(::pg_query::DropBehavior value); + private: + ::pg_query::DropBehavior _internal_behavior() const; + void _internal_set_behavior(::pg_query::DropBehavior value); + public: + + // bool missing_ok = 7 [json_name = "missing_ok"]; + void clear_missing_ok(); + bool missing_ok() const; + void set_missing_ok(bool value); + private: + bool _internal_missing_ok() const; + void _internal_set_missing_ok(bool value); + public: + + // @@protoc_insertion_point(class_scope:pg_query.AlterTableCmd) + private: + class _Internal; + + template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; + typedef void InternalArenaConstructable_; + typedef void DestructorSkippable_; + ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr name_; + ::pg_query::RoleSpec* newowner_; + ::pg_query::Node* def_; + int subtype_; + ::PROTOBUF_NAMESPACE_ID::int32 num_; + int behavior_; + bool missing_ok_; + mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; + friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; +}; +// ------------------------------------------------------------------- + +class AlterDomainStmt PROTOBUF_FINAL : + public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.AlterDomainStmt) */ { + public: + inline AlterDomainStmt() : AlterDomainStmt(nullptr) {} + virtual ~AlterDomainStmt(); + + AlterDomainStmt(const AlterDomainStmt& from); + AlterDomainStmt(AlterDomainStmt&& from) noexcept + : AlterDomainStmt() { + *this = ::std::move(from); + } + + inline AlterDomainStmt& operator=(const AlterDomainStmt& from) { + CopyFrom(from); + return *this; + } + inline AlterDomainStmt& operator=(AlterDomainStmt&& from) noexcept { + if (GetArena() == from.GetArena()) { + if (this != &from) InternalSwap(&from); + } else { + CopyFrom(from); + } + return *this; + } + + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { + return GetDescriptor(); + } + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { + return GetMetadataStatic().descriptor; + } + static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { + return GetMetadataStatic().reflection; + } + static const AlterDomainStmt& default_instance(); + + static inline const AlterDomainStmt* internal_default_instance() { + return reinterpret_cast( + &_AlterDomainStmt_default_instance_); + } + static constexpr int kIndexInFileMessages = + 71; + + friend void swap(AlterDomainStmt& a, AlterDomainStmt& b) { + a.Swap(&b); + } + inline void Swap(AlterDomainStmt* other) { + if (other == this) return; + if (GetArena() == other->GetArena()) { + InternalSwap(other); + } else { + ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); + } + } + void UnsafeArenaSwap(AlterDomainStmt* other) { + if (other == this) return; + GOOGLE_DCHECK(GetArena() == other->GetArena()); + InternalSwap(other); + } + + // implements Message ---------------------------------------------- + + inline AlterDomainStmt* New() const final { + return CreateMaybeMessage(nullptr); + } + + AlterDomainStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { + return CreateMaybeMessage(arena); + } + void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void CopyFrom(const AlterDomainStmt& from); + void MergeFrom(const AlterDomainStmt& from); + PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; + bool IsInitialized() const final; + + size_t ByteSizeLong() const final; + const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; + ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( + ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; + int GetCachedSize() const final { return _cached_size_.Get(); } + + private: + inline void SharedCtor(); + inline void SharedDtor(); + void SetCachedSize(int size) const final; + void InternalSwap(AlterDomainStmt* other); + friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; + static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { + return "pg_query.AlterDomainStmt"; + } + protected: + explicit AlterDomainStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena); + private: + static void ArenaDtor(void* object); + inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); + public: + + ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; + private: + static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { + ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); + return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; + } + + public: + + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + + enum : int { + kTypeNameFieldNumber = 2, + kSubtypeFieldNumber = 1, + kNameFieldNumber = 3, + kDefFieldNumber = 4, + kBehaviorFieldNumber = 5, + kMissingOkFieldNumber = 6, + }; + // repeated .pg_query.Node type_name = 2 [json_name = "typeName"]; + int type_name_size() const; + private: + int _internal_type_name_size() const; + public: + void clear_type_name(); + ::pg_query::Node* mutable_type_name(int index); + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* + mutable_type_name(); + private: + const ::pg_query::Node& _internal_type_name(int index) const; + ::pg_query::Node* _internal_add_type_name(); + public: + const ::pg_query::Node& type_name(int index) const; + ::pg_query::Node* add_type_name(); + const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& + type_name() const; + + // string subtype = 1 [json_name = "subtype"]; + void clear_subtype(); + const std::string& subtype() const; + void set_subtype(const std::string& value); + void set_subtype(std::string&& value); + void set_subtype(const char* value); + void set_subtype(const char* value, size_t size); + std::string* mutable_subtype(); + std::string* release_subtype(); + void set_allocated_subtype(std::string* subtype); + private: + const std::string& _internal_subtype() const; + void _internal_set_subtype(const std::string& value); + std::string* _internal_mutable_subtype(); + public: + + // string name = 3 [json_name = "name"]; + void clear_name(); + const std::string& name() const; + void set_name(const std::string& value); + void set_name(std::string&& value); + void set_name(const char* value); + void set_name(const char* value, size_t size); + std::string* mutable_name(); + std::string* release_name(); + void set_allocated_name(std::string* name); + private: + const std::string& _internal_name() const; + void _internal_set_name(const std::string& value); + std::string* _internal_mutable_name(); + public: + + // .pg_query.Node def = 4 [json_name = "def"]; + bool has_def() const; + private: + bool _internal_has_def() const; + public: + void clear_def(); + const ::pg_query::Node& def() const; + ::pg_query::Node* release_def(); + ::pg_query::Node* mutable_def(); + void set_allocated_def(::pg_query::Node* def); + private: + const ::pg_query::Node& _internal_def() const; + ::pg_query::Node* _internal_mutable_def(); + public: + void unsafe_arena_set_allocated_def( + ::pg_query::Node* def); + ::pg_query::Node* unsafe_arena_release_def(); + + // .pg_query.DropBehavior behavior = 5 [json_name = "behavior"]; + void clear_behavior(); + ::pg_query::DropBehavior behavior() const; + void set_behavior(::pg_query::DropBehavior value); + private: + ::pg_query::DropBehavior _internal_behavior() const; + void _internal_set_behavior(::pg_query::DropBehavior value); + public: + + // bool missing_ok = 6 [json_name = "missing_ok"]; + void clear_missing_ok(); + bool missing_ok() const; + void set_missing_ok(bool value); + private: + bool _internal_missing_ok() const; + void _internal_set_missing_ok(bool value); + public: + + // @@protoc_insertion_point(class_scope:pg_query.AlterDomainStmt) + private: + class _Internal; + + template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; + typedef void InternalArenaConstructable_; + typedef void DestructorSkippable_; + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > type_name_; + ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr subtype_; + ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr name_; + ::pg_query::Node* def_; + int behavior_; + bool missing_ok_; + mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; + friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; +}; +// ------------------------------------------------------------------- + +class SetOperationStmt PROTOBUF_FINAL : + public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.SetOperationStmt) */ { + public: + inline SetOperationStmt() : SetOperationStmt(nullptr) {} + virtual ~SetOperationStmt(); + + SetOperationStmt(const SetOperationStmt& from); + SetOperationStmt(SetOperationStmt&& from) noexcept + : SetOperationStmt() { + *this = ::std::move(from); + } + + inline SetOperationStmt& operator=(const SetOperationStmt& from) { + CopyFrom(from); + return *this; + } + inline SetOperationStmt& operator=(SetOperationStmt&& from) noexcept { + if (GetArena() == from.GetArena()) { + if (this != &from) InternalSwap(&from); + } else { + CopyFrom(from); + } + return *this; + } + + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { + return GetDescriptor(); + } + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { + return GetMetadataStatic().descriptor; + } + static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { + return GetMetadataStatic().reflection; + } + static const SetOperationStmt& default_instance(); + + static inline const SetOperationStmt* internal_default_instance() { + return reinterpret_cast( + &_SetOperationStmt_default_instance_); + } + static constexpr int kIndexInFileMessages = + 72; + + friend void swap(SetOperationStmt& a, SetOperationStmt& b) { + a.Swap(&b); + } + inline void Swap(SetOperationStmt* other) { + if (other == this) return; + if (GetArena() == other->GetArena()) { + InternalSwap(other); + } else { + ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); + } + } + void UnsafeArenaSwap(SetOperationStmt* other) { + if (other == this) return; + GOOGLE_DCHECK(GetArena() == other->GetArena()); + InternalSwap(other); + } + + // implements Message ---------------------------------------------- + + inline SetOperationStmt* New() const final { + return CreateMaybeMessage(nullptr); + } + + SetOperationStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { + return CreateMaybeMessage(arena); + } + void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void CopyFrom(const SetOperationStmt& from); + void MergeFrom(const SetOperationStmt& from); + PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; + bool IsInitialized() const final; + + size_t ByteSizeLong() const final; + const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; + ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( + ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; + int GetCachedSize() const final { return _cached_size_.Get(); } + + private: + inline void SharedCtor(); + inline void SharedDtor(); + void SetCachedSize(int size) const final; + void InternalSwap(SetOperationStmt* other); + friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; + static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { + return "pg_query.SetOperationStmt"; + } + protected: + explicit SetOperationStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena); + private: + static void ArenaDtor(void* object); + inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); + public: + + ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; + private: + static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { + ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); + return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; + } + + public: + + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + + enum : int { + kColTypesFieldNumber = 5, + kColTypmodsFieldNumber = 6, + kColCollationsFieldNumber = 7, + kGroupClausesFieldNumber = 8, + kLargFieldNumber = 3, + kRargFieldNumber = 4, + kOpFieldNumber = 1, + kAllFieldNumber = 2, + }; + // repeated .pg_query.Node col_types = 5 [json_name = "colTypes"]; + int col_types_size() const; + private: + int _internal_col_types_size() const; + public: + void clear_col_types(); + ::pg_query::Node* mutable_col_types(int index); + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* + mutable_col_types(); + private: + const ::pg_query::Node& _internal_col_types(int index) const; + ::pg_query::Node* _internal_add_col_types(); + public: + const ::pg_query::Node& col_types(int index) const; + ::pg_query::Node* add_col_types(); + const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& + col_types() const; + + // repeated .pg_query.Node col_typmods = 6 [json_name = "colTypmods"]; + int col_typmods_size() const; + private: + int _internal_col_typmods_size() const; + public: + void clear_col_typmods(); + ::pg_query::Node* mutable_col_typmods(int index); + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* + mutable_col_typmods(); + private: + const ::pg_query::Node& _internal_col_typmods(int index) const; + ::pg_query::Node* _internal_add_col_typmods(); + public: + const ::pg_query::Node& col_typmods(int index) const; + ::pg_query::Node* add_col_typmods(); + const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& + col_typmods() const; + + // repeated .pg_query.Node col_collations = 7 [json_name = "colCollations"]; + int col_collations_size() const; + private: + int _internal_col_collations_size() const; + public: + void clear_col_collations(); + ::pg_query::Node* mutable_col_collations(int index); + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* + mutable_col_collations(); + private: + const ::pg_query::Node& _internal_col_collations(int index) const; + ::pg_query::Node* _internal_add_col_collations(); + public: + const ::pg_query::Node& col_collations(int index) const; + ::pg_query::Node* add_col_collations(); + const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& + col_collations() const; + + // repeated .pg_query.Node group_clauses = 8 [json_name = "groupClauses"]; + int group_clauses_size() const; + private: + int _internal_group_clauses_size() const; + public: + void clear_group_clauses(); + ::pg_query::Node* mutable_group_clauses(int index); + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* + mutable_group_clauses(); + private: + const ::pg_query::Node& _internal_group_clauses(int index) const; + ::pg_query::Node* _internal_add_group_clauses(); + public: + const ::pg_query::Node& group_clauses(int index) const; + ::pg_query::Node* add_group_clauses(); + const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& + group_clauses() const; + + // .pg_query.Node larg = 3 [json_name = "larg"]; + bool has_larg() const; + private: + bool _internal_has_larg() const; + public: + void clear_larg(); + const ::pg_query::Node& larg() const; + ::pg_query::Node* release_larg(); + ::pg_query::Node* mutable_larg(); + void set_allocated_larg(::pg_query::Node* larg); + private: + const ::pg_query::Node& _internal_larg() const; + ::pg_query::Node* _internal_mutable_larg(); + public: + void unsafe_arena_set_allocated_larg( + ::pg_query::Node* larg); + ::pg_query::Node* unsafe_arena_release_larg(); + + // .pg_query.Node rarg = 4 [json_name = "rarg"]; + bool has_rarg() const; + private: + bool _internal_has_rarg() const; + public: + void clear_rarg(); + const ::pg_query::Node& rarg() const; + ::pg_query::Node* release_rarg(); + ::pg_query::Node* mutable_rarg(); + void set_allocated_rarg(::pg_query::Node* rarg); + private: + const ::pg_query::Node& _internal_rarg() const; + ::pg_query::Node* _internal_mutable_rarg(); + public: + void unsafe_arena_set_allocated_rarg( + ::pg_query::Node* rarg); + ::pg_query::Node* unsafe_arena_release_rarg(); + + // .pg_query.SetOperation op = 1 [json_name = "op"]; + void clear_op(); + ::pg_query::SetOperation op() const; + void set_op(::pg_query::SetOperation value); + private: + ::pg_query::SetOperation _internal_op() const; + void _internal_set_op(::pg_query::SetOperation value); + public: + + // bool all = 2 [json_name = "all"]; + void clear_all(); + bool all() const; + void set_all(bool value); + private: + bool _internal_all() const; + void _internal_set_all(bool value); + public: + + // @@protoc_insertion_point(class_scope:pg_query.SetOperationStmt) + private: + class _Internal; + + template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; + typedef void InternalArenaConstructable_; + typedef void DestructorSkippable_; + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > col_types_; + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > col_typmods_; + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > col_collations_; + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > group_clauses_; + ::pg_query::Node* larg_; + ::pg_query::Node* rarg_; + int op_; + bool all_; + mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; + friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; +}; +// ------------------------------------------------------------------- + +class GrantStmt PROTOBUF_FINAL : + public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.GrantStmt) */ { + public: + inline GrantStmt() : GrantStmt(nullptr) {} + virtual ~GrantStmt(); + + GrantStmt(const GrantStmt& from); + GrantStmt(GrantStmt&& from) noexcept + : GrantStmt() { + *this = ::std::move(from); + } + + inline GrantStmt& operator=(const GrantStmt& from) { + CopyFrom(from); + return *this; + } + inline GrantStmt& operator=(GrantStmt&& from) noexcept { + if (GetArena() == from.GetArena()) { + if (this != &from) InternalSwap(&from); + } else { + CopyFrom(from); + } + return *this; + } + + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { + return GetDescriptor(); + } + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { + return GetMetadataStatic().descriptor; + } + static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { + return GetMetadataStatic().reflection; + } + static const GrantStmt& default_instance(); + + static inline const GrantStmt* internal_default_instance() { + return reinterpret_cast( + &_GrantStmt_default_instance_); + } + static constexpr int kIndexInFileMessages = + 73; + + friend void swap(GrantStmt& a, GrantStmt& b) { + a.Swap(&b); + } + inline void Swap(GrantStmt* other) { + if (other == this) return; + if (GetArena() == other->GetArena()) { + InternalSwap(other); + } else { + ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); + } + } + void UnsafeArenaSwap(GrantStmt* other) { + if (other == this) return; + GOOGLE_DCHECK(GetArena() == other->GetArena()); + InternalSwap(other); + } + + // implements Message ---------------------------------------------- + + inline GrantStmt* New() const final { + return CreateMaybeMessage(nullptr); + } + + GrantStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { + return CreateMaybeMessage(arena); + } + void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void CopyFrom(const GrantStmt& from); + void MergeFrom(const GrantStmt& from); + PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; + bool IsInitialized() const final; + + size_t ByteSizeLong() const final; + const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; + ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( + ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; + int GetCachedSize() const final { return _cached_size_.Get(); } + + private: + inline void SharedCtor(); + inline void SharedDtor(); + void SetCachedSize(int size) const final; + void InternalSwap(GrantStmt* other); + friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; + static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { + return "pg_query.GrantStmt"; + } + protected: + explicit GrantStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena); + private: + static void ArenaDtor(void* object); + inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); + public: + + ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; + private: + static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { + ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); + return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; + } + + public: + + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + + enum : int { + kObjectsFieldNumber = 4, + kPrivilegesFieldNumber = 5, + kGranteesFieldNumber = 6, + kTargtypeFieldNumber = 2, + kObjtypeFieldNumber = 3, + kIsGrantFieldNumber = 1, + kGrantOptionFieldNumber = 7, + kBehaviorFieldNumber = 8, + }; + // repeated .pg_query.Node objects = 4 [json_name = "objects"]; + int objects_size() const; + private: + int _internal_objects_size() const; + public: + void clear_objects(); + ::pg_query::Node* mutable_objects(int index); + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* + mutable_objects(); + private: + const ::pg_query::Node& _internal_objects(int index) const; + ::pg_query::Node* _internal_add_objects(); + public: + const ::pg_query::Node& objects(int index) const; + ::pg_query::Node* add_objects(); + const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& + objects() const; + + // repeated .pg_query.Node privileges = 5 [json_name = "privileges"]; + int privileges_size() const; + private: + int _internal_privileges_size() const; + public: + void clear_privileges(); + ::pg_query::Node* mutable_privileges(int index); + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* + mutable_privileges(); + private: + const ::pg_query::Node& _internal_privileges(int index) const; + ::pg_query::Node* _internal_add_privileges(); + public: + const ::pg_query::Node& privileges(int index) const; + ::pg_query::Node* add_privileges(); + const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& + privileges() const; + + // repeated .pg_query.Node grantees = 6 [json_name = "grantees"]; + int grantees_size() const; + private: + int _internal_grantees_size() const; + public: + void clear_grantees(); + ::pg_query::Node* mutable_grantees(int index); + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* + mutable_grantees(); + private: + const ::pg_query::Node& _internal_grantees(int index) const; + ::pg_query::Node* _internal_add_grantees(); + public: + const ::pg_query::Node& grantees(int index) const; + ::pg_query::Node* add_grantees(); + const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& + grantees() const; + + // .pg_query.GrantTargetType targtype = 2 [json_name = "targtype"]; + void clear_targtype(); + ::pg_query::GrantTargetType targtype() const; + void set_targtype(::pg_query::GrantTargetType value); + private: + ::pg_query::GrantTargetType _internal_targtype() const; + void _internal_set_targtype(::pg_query::GrantTargetType value); + public: + + // .pg_query.ObjectType objtype = 3 [json_name = "objtype"]; + void clear_objtype(); + ::pg_query::ObjectType objtype() const; + void set_objtype(::pg_query::ObjectType value); + private: + ::pg_query::ObjectType _internal_objtype() const; + void _internal_set_objtype(::pg_query::ObjectType value); + public: + + // bool is_grant = 1 [json_name = "is_grant"]; + void clear_is_grant(); + bool is_grant() const; + void set_is_grant(bool value); + private: + bool _internal_is_grant() const; + void _internal_set_is_grant(bool value); + public: + + // bool grant_option = 7 [json_name = "grant_option"]; + void clear_grant_option(); + bool grant_option() const; + void set_grant_option(bool value); + private: + bool _internal_grant_option() const; + void _internal_set_grant_option(bool value); + public: + + // .pg_query.DropBehavior behavior = 8 [json_name = "behavior"]; + void clear_behavior(); + ::pg_query::DropBehavior behavior() const; + void set_behavior(::pg_query::DropBehavior value); + private: + ::pg_query::DropBehavior _internal_behavior() const; + void _internal_set_behavior(::pg_query::DropBehavior value); + public: + + // @@protoc_insertion_point(class_scope:pg_query.GrantStmt) + private: + class _Internal; + + template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; + typedef void InternalArenaConstructable_; + typedef void DestructorSkippable_; + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > objects_; + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > privileges_; + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > grantees_; + int targtype_; + int objtype_; + bool is_grant_; + bool grant_option_; + int behavior_; + mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; + friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; +}; +// ------------------------------------------------------------------- + +class GrantRoleStmt PROTOBUF_FINAL : + public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.GrantRoleStmt) */ { + public: + inline GrantRoleStmt() : GrantRoleStmt(nullptr) {} + virtual ~GrantRoleStmt(); + + GrantRoleStmt(const GrantRoleStmt& from); + GrantRoleStmt(GrantRoleStmt&& from) noexcept + : GrantRoleStmt() { + *this = ::std::move(from); + } + + inline GrantRoleStmt& operator=(const GrantRoleStmt& from) { + CopyFrom(from); + return *this; + } + inline GrantRoleStmt& operator=(GrantRoleStmt&& from) noexcept { + if (GetArena() == from.GetArena()) { + if (this != &from) InternalSwap(&from); + } else { + CopyFrom(from); + } + return *this; + } + + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { + return GetDescriptor(); + } + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { + return GetMetadataStatic().descriptor; + } + static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { + return GetMetadataStatic().reflection; + } + static const GrantRoleStmt& default_instance(); + + static inline const GrantRoleStmt* internal_default_instance() { + return reinterpret_cast( + &_GrantRoleStmt_default_instance_); + } + static constexpr int kIndexInFileMessages = + 74; + + friend void swap(GrantRoleStmt& a, GrantRoleStmt& b) { + a.Swap(&b); + } + inline void Swap(GrantRoleStmt* other) { + if (other == this) return; + if (GetArena() == other->GetArena()) { + InternalSwap(other); + } else { + ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); + } + } + void UnsafeArenaSwap(GrantRoleStmt* other) { + if (other == this) return; + GOOGLE_DCHECK(GetArena() == other->GetArena()); + InternalSwap(other); + } + + // implements Message ---------------------------------------------- + + inline GrantRoleStmt* New() const final { + return CreateMaybeMessage(nullptr); + } + + GrantRoleStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { + return CreateMaybeMessage(arena); + } + void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void CopyFrom(const GrantRoleStmt& from); + void MergeFrom(const GrantRoleStmt& from); + PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; + bool IsInitialized() const final; + + size_t ByteSizeLong() const final; + const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; + ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( + ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; + int GetCachedSize() const final { return _cached_size_.Get(); } + + private: + inline void SharedCtor(); + inline void SharedDtor(); + void SetCachedSize(int size) const final; + void InternalSwap(GrantRoleStmt* other); + friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; + static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { + return "pg_query.GrantRoleStmt"; + } + protected: + explicit GrantRoleStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena); + private: + static void ArenaDtor(void* object); + inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); + public: + + ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; + private: + static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { + ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); + return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; + } + + public: + + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + + enum : int { + kGrantedRolesFieldNumber = 1, + kGranteeRolesFieldNumber = 2, + kGrantorFieldNumber = 5, + kIsGrantFieldNumber = 3, + kAdminOptFieldNumber = 4, + kBehaviorFieldNumber = 6, + }; + // repeated .pg_query.Node granted_roles = 1 [json_name = "granted_roles"]; + int granted_roles_size() const; + private: + int _internal_granted_roles_size() const; + public: + void clear_granted_roles(); + ::pg_query::Node* mutable_granted_roles(int index); + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* + mutable_granted_roles(); + private: + const ::pg_query::Node& _internal_granted_roles(int index) const; + ::pg_query::Node* _internal_add_granted_roles(); + public: + const ::pg_query::Node& granted_roles(int index) const; + ::pg_query::Node* add_granted_roles(); + const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& + granted_roles() const; + + // repeated .pg_query.Node grantee_roles = 2 [json_name = "grantee_roles"]; + int grantee_roles_size() const; + private: + int _internal_grantee_roles_size() const; + public: + void clear_grantee_roles(); + ::pg_query::Node* mutable_grantee_roles(int index); + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* + mutable_grantee_roles(); + private: + const ::pg_query::Node& _internal_grantee_roles(int index) const; + ::pg_query::Node* _internal_add_grantee_roles(); + public: + const ::pg_query::Node& grantee_roles(int index) const; + ::pg_query::Node* add_grantee_roles(); + const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& + grantee_roles() const; + + // .pg_query.RoleSpec grantor = 5 [json_name = "grantor"]; + bool has_grantor() const; + private: + bool _internal_has_grantor() const; + public: + void clear_grantor(); + const ::pg_query::RoleSpec& grantor() const; + ::pg_query::RoleSpec* release_grantor(); + ::pg_query::RoleSpec* mutable_grantor(); + void set_allocated_grantor(::pg_query::RoleSpec* grantor); + private: + const ::pg_query::RoleSpec& _internal_grantor() const; + ::pg_query::RoleSpec* _internal_mutable_grantor(); + public: + void unsafe_arena_set_allocated_grantor( + ::pg_query::RoleSpec* grantor); + ::pg_query::RoleSpec* unsafe_arena_release_grantor(); + + // bool is_grant = 3 [json_name = "is_grant"]; + void clear_is_grant(); + bool is_grant() const; + void set_is_grant(bool value); + private: + bool _internal_is_grant() const; + void _internal_set_is_grant(bool value); + public: + + // bool admin_opt = 4 [json_name = "admin_opt"]; + void clear_admin_opt(); + bool admin_opt() const; + void set_admin_opt(bool value); + private: + bool _internal_admin_opt() const; + void _internal_set_admin_opt(bool value); + public: + + // .pg_query.DropBehavior behavior = 6 [json_name = "behavior"]; + void clear_behavior(); + ::pg_query::DropBehavior behavior() const; + void set_behavior(::pg_query::DropBehavior value); + private: + ::pg_query::DropBehavior _internal_behavior() const; + void _internal_set_behavior(::pg_query::DropBehavior value); + public: + + // @@protoc_insertion_point(class_scope:pg_query.GrantRoleStmt) + private: + class _Internal; + + template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; + typedef void InternalArenaConstructable_; + typedef void DestructorSkippable_; + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > granted_roles_; + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > grantee_roles_; + ::pg_query::RoleSpec* grantor_; + bool is_grant_; + bool admin_opt_; + int behavior_; + mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; + friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; +}; +// ------------------------------------------------------------------- + +class AlterDefaultPrivilegesStmt PROTOBUF_FINAL : + public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.AlterDefaultPrivilegesStmt) */ { + public: + inline AlterDefaultPrivilegesStmt() : AlterDefaultPrivilegesStmt(nullptr) {} + virtual ~AlterDefaultPrivilegesStmt(); + + AlterDefaultPrivilegesStmt(const AlterDefaultPrivilegesStmt& from); + AlterDefaultPrivilegesStmt(AlterDefaultPrivilegesStmt&& from) noexcept + : AlterDefaultPrivilegesStmt() { + *this = ::std::move(from); + } + + inline AlterDefaultPrivilegesStmt& operator=(const AlterDefaultPrivilegesStmt& from) { + CopyFrom(from); + return *this; + } + inline AlterDefaultPrivilegesStmt& operator=(AlterDefaultPrivilegesStmt&& from) noexcept { + if (GetArena() == from.GetArena()) { + if (this != &from) InternalSwap(&from); + } else { + CopyFrom(from); + } + return *this; + } + + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { + return GetDescriptor(); + } + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { + return GetMetadataStatic().descriptor; + } + static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { + return GetMetadataStatic().reflection; + } + static const AlterDefaultPrivilegesStmt& default_instance(); + + static inline const AlterDefaultPrivilegesStmt* internal_default_instance() { + return reinterpret_cast( + &_AlterDefaultPrivilegesStmt_default_instance_); + } + static constexpr int kIndexInFileMessages = + 75; + + friend void swap(AlterDefaultPrivilegesStmt& a, AlterDefaultPrivilegesStmt& b) { + a.Swap(&b); + } + inline void Swap(AlterDefaultPrivilegesStmt* other) { + if (other == this) return; + if (GetArena() == other->GetArena()) { + InternalSwap(other); + } else { + ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); + } + } + void UnsafeArenaSwap(AlterDefaultPrivilegesStmt* other) { + if (other == this) return; + GOOGLE_DCHECK(GetArena() == other->GetArena()); + InternalSwap(other); + } + + // implements Message ---------------------------------------------- + + inline AlterDefaultPrivilegesStmt* New() const final { + return CreateMaybeMessage(nullptr); + } + + AlterDefaultPrivilegesStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { + return CreateMaybeMessage(arena); + } + void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void CopyFrom(const AlterDefaultPrivilegesStmt& from); + void MergeFrom(const AlterDefaultPrivilegesStmt& from); + PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; + bool IsInitialized() const final; + + size_t ByteSizeLong() const final; + const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; + ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( + ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; + int GetCachedSize() const final { return _cached_size_.Get(); } + + private: + inline void SharedCtor(); + inline void SharedDtor(); + void SetCachedSize(int size) const final; + void InternalSwap(AlterDefaultPrivilegesStmt* other); + friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; + static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { + return "pg_query.AlterDefaultPrivilegesStmt"; + } + protected: + explicit AlterDefaultPrivilegesStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena); + private: + static void ArenaDtor(void* object); + inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); + public: + + ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; + private: + static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { + ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); + return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; + } + + public: + + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + + enum : int { + kOptionsFieldNumber = 1, + kActionFieldNumber = 2, + }; + // repeated .pg_query.Node options = 1 [json_name = "options"]; + int options_size() const; + private: + int _internal_options_size() const; + public: + void clear_options(); + ::pg_query::Node* mutable_options(int index); + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* + mutable_options(); + private: + const ::pg_query::Node& _internal_options(int index) const; + ::pg_query::Node* _internal_add_options(); + public: + const ::pg_query::Node& options(int index) const; + ::pg_query::Node* add_options(); + const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& + options() const; + + // .pg_query.GrantStmt action = 2 [json_name = "action"]; + bool has_action() const; + private: + bool _internal_has_action() const; + public: + void clear_action(); + const ::pg_query::GrantStmt& action() const; + ::pg_query::GrantStmt* release_action(); + ::pg_query::GrantStmt* mutable_action(); + void set_allocated_action(::pg_query::GrantStmt* action); + private: + const ::pg_query::GrantStmt& _internal_action() const; + ::pg_query::GrantStmt* _internal_mutable_action(); + public: + void unsafe_arena_set_allocated_action( + ::pg_query::GrantStmt* action); + ::pg_query::GrantStmt* unsafe_arena_release_action(); + + // @@protoc_insertion_point(class_scope:pg_query.AlterDefaultPrivilegesStmt) + private: + class _Internal; + + template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; + typedef void InternalArenaConstructable_; + typedef void DestructorSkippable_; + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > options_; + ::pg_query::GrantStmt* action_; + mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; + friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; +}; +// ------------------------------------------------------------------- + +class ClosePortalStmt PROTOBUF_FINAL : + public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.ClosePortalStmt) */ { + public: + inline ClosePortalStmt() : ClosePortalStmt(nullptr) {} + virtual ~ClosePortalStmt(); + + ClosePortalStmt(const ClosePortalStmt& from); + ClosePortalStmt(ClosePortalStmt&& from) noexcept + : ClosePortalStmt() { + *this = ::std::move(from); + } + + inline ClosePortalStmt& operator=(const ClosePortalStmt& from) { + CopyFrom(from); + return *this; + } + inline ClosePortalStmt& operator=(ClosePortalStmt&& from) noexcept { + if (GetArena() == from.GetArena()) { + if (this != &from) InternalSwap(&from); + } else { + CopyFrom(from); + } + return *this; + } + + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { + return GetDescriptor(); + } + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { + return GetMetadataStatic().descriptor; + } + static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { + return GetMetadataStatic().reflection; + } + static const ClosePortalStmt& default_instance(); + + static inline const ClosePortalStmt* internal_default_instance() { + return reinterpret_cast( + &_ClosePortalStmt_default_instance_); + } + static constexpr int kIndexInFileMessages = + 76; + + friend void swap(ClosePortalStmt& a, ClosePortalStmt& b) { + a.Swap(&b); + } + inline void Swap(ClosePortalStmt* other) { + if (other == this) return; + if (GetArena() == other->GetArena()) { + InternalSwap(other); + } else { + ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); + } + } + void UnsafeArenaSwap(ClosePortalStmt* other) { + if (other == this) return; + GOOGLE_DCHECK(GetArena() == other->GetArena()); + InternalSwap(other); + } + + // implements Message ---------------------------------------------- + + inline ClosePortalStmt* New() const final { + return CreateMaybeMessage(nullptr); + } + + ClosePortalStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { + return CreateMaybeMessage(arena); + } + void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void CopyFrom(const ClosePortalStmt& from); + void MergeFrom(const ClosePortalStmt& from); + PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; + bool IsInitialized() const final; + + size_t ByteSizeLong() const final; + const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; + ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( + ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; + int GetCachedSize() const final { return _cached_size_.Get(); } + + private: + inline void SharedCtor(); + inline void SharedDtor(); + void SetCachedSize(int size) const final; + void InternalSwap(ClosePortalStmt* other); + friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; + static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { + return "pg_query.ClosePortalStmt"; + } + protected: + explicit ClosePortalStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena); + private: + static void ArenaDtor(void* object); + inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); + public: + + ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; + private: + static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { + ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); + return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; + } + + public: + + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + + enum : int { + kPortalnameFieldNumber = 1, + }; + // string portalname = 1 [json_name = "portalname"]; + void clear_portalname(); + const std::string& portalname() const; + void set_portalname(const std::string& value); + void set_portalname(std::string&& value); + void set_portalname(const char* value); + void set_portalname(const char* value, size_t size); + std::string* mutable_portalname(); + std::string* release_portalname(); + void set_allocated_portalname(std::string* portalname); + private: + const std::string& _internal_portalname() const; + void _internal_set_portalname(const std::string& value); + std::string* _internal_mutable_portalname(); + public: + + // @@protoc_insertion_point(class_scope:pg_query.ClosePortalStmt) + private: + class _Internal; + + template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; + typedef void InternalArenaConstructable_; + typedef void DestructorSkippable_; + ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr portalname_; + mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; + friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; +}; +// ------------------------------------------------------------------- + +class ClusterStmt PROTOBUF_FINAL : + public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.ClusterStmt) */ { + public: + inline ClusterStmt() : ClusterStmt(nullptr) {} + virtual ~ClusterStmt(); + + ClusterStmt(const ClusterStmt& from); + ClusterStmt(ClusterStmt&& from) noexcept + : ClusterStmt() { + *this = ::std::move(from); + } + + inline ClusterStmt& operator=(const ClusterStmt& from) { + CopyFrom(from); + return *this; + } + inline ClusterStmt& operator=(ClusterStmt&& from) noexcept { + if (GetArena() == from.GetArena()) { + if (this != &from) InternalSwap(&from); + } else { + CopyFrom(from); + } + return *this; + } + + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { + return GetDescriptor(); + } + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { + return GetMetadataStatic().descriptor; + } + static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { + return GetMetadataStatic().reflection; + } + static const ClusterStmt& default_instance(); + + static inline const ClusterStmt* internal_default_instance() { + return reinterpret_cast( + &_ClusterStmt_default_instance_); + } + static constexpr int kIndexInFileMessages = + 77; + + friend void swap(ClusterStmt& a, ClusterStmt& b) { + a.Swap(&b); + } + inline void Swap(ClusterStmt* other) { + if (other == this) return; + if (GetArena() == other->GetArena()) { + InternalSwap(other); + } else { + ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); + } + } + void UnsafeArenaSwap(ClusterStmt* other) { + if (other == this) return; + GOOGLE_DCHECK(GetArena() == other->GetArena()); + InternalSwap(other); + } + + // implements Message ---------------------------------------------- + + inline ClusterStmt* New() const final { + return CreateMaybeMessage(nullptr); + } + + ClusterStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { + return CreateMaybeMessage(arena); + } + void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void CopyFrom(const ClusterStmt& from); + void MergeFrom(const ClusterStmt& from); + PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; + bool IsInitialized() const final; + + size_t ByteSizeLong() const final; + const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; + ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( + ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; + int GetCachedSize() const final { return _cached_size_.Get(); } + + private: + inline void SharedCtor(); + inline void SharedDtor(); + void SetCachedSize(int size) const final; + void InternalSwap(ClusterStmt* other); + friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; + static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { + return "pg_query.ClusterStmt"; + } + protected: + explicit ClusterStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena); + private: + static void ArenaDtor(void* object); + inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); + public: + + ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; + private: + static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { + ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); + return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; + } + + public: + + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + + enum : int { + kIndexnameFieldNumber = 2, + kRelationFieldNumber = 1, + kOptionsFieldNumber = 3, + }; + // string indexname = 2 [json_name = "indexname"]; + void clear_indexname(); + const std::string& indexname() const; + void set_indexname(const std::string& value); + void set_indexname(std::string&& value); + void set_indexname(const char* value); + void set_indexname(const char* value, size_t size); + std::string* mutable_indexname(); + std::string* release_indexname(); + void set_allocated_indexname(std::string* indexname); + private: + const std::string& _internal_indexname() const; + void _internal_set_indexname(const std::string& value); + std::string* _internal_mutable_indexname(); + public: + + // .pg_query.RangeVar relation = 1 [json_name = "relation"]; + bool has_relation() const; + private: + bool _internal_has_relation() const; + public: + void clear_relation(); + const ::pg_query::RangeVar& relation() const; + ::pg_query::RangeVar* release_relation(); + ::pg_query::RangeVar* mutable_relation(); + void set_allocated_relation(::pg_query::RangeVar* relation); + private: + const ::pg_query::RangeVar& _internal_relation() const; + ::pg_query::RangeVar* _internal_mutable_relation(); + public: + void unsafe_arena_set_allocated_relation( + ::pg_query::RangeVar* relation); + ::pg_query::RangeVar* unsafe_arena_release_relation(); + + // int32 options = 3 [json_name = "options"]; + void clear_options(); + ::PROTOBUF_NAMESPACE_ID::int32 options() const; + void set_options(::PROTOBUF_NAMESPACE_ID::int32 value); + private: + ::PROTOBUF_NAMESPACE_ID::int32 _internal_options() const; + void _internal_set_options(::PROTOBUF_NAMESPACE_ID::int32 value); + public: + + // @@protoc_insertion_point(class_scope:pg_query.ClusterStmt) + private: + class _Internal; + + template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; + typedef void InternalArenaConstructable_; + typedef void DestructorSkippable_; + ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr indexname_; + ::pg_query::RangeVar* relation_; + ::PROTOBUF_NAMESPACE_ID::int32 options_; + mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; + friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; +}; +// ------------------------------------------------------------------- + +class CopyStmt PROTOBUF_FINAL : + public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.CopyStmt) */ { + public: + inline CopyStmt() : CopyStmt(nullptr) {} + virtual ~CopyStmt(); + + CopyStmt(const CopyStmt& from); + CopyStmt(CopyStmt&& from) noexcept + : CopyStmt() { + *this = ::std::move(from); + } + + inline CopyStmt& operator=(const CopyStmt& from) { + CopyFrom(from); + return *this; + } + inline CopyStmt& operator=(CopyStmt&& from) noexcept { + if (GetArena() == from.GetArena()) { + if (this != &from) InternalSwap(&from); + } else { + CopyFrom(from); + } + return *this; + } + + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { + return GetDescriptor(); + } + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { + return GetMetadataStatic().descriptor; + } + static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { + return GetMetadataStatic().reflection; + } + static const CopyStmt& default_instance(); + + static inline const CopyStmt* internal_default_instance() { + return reinterpret_cast( + &_CopyStmt_default_instance_); + } + static constexpr int kIndexInFileMessages = + 78; + + friend void swap(CopyStmt& a, CopyStmt& b) { + a.Swap(&b); + } + inline void Swap(CopyStmt* other) { + if (other == this) return; + if (GetArena() == other->GetArena()) { + InternalSwap(other); + } else { + ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); + } + } + void UnsafeArenaSwap(CopyStmt* other) { + if (other == this) return; + GOOGLE_DCHECK(GetArena() == other->GetArena()); + InternalSwap(other); + } + + // implements Message ---------------------------------------------- + + inline CopyStmt* New() const final { + return CreateMaybeMessage(nullptr); + } + + CopyStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { + return CreateMaybeMessage(arena); + } + void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void CopyFrom(const CopyStmt& from); + void MergeFrom(const CopyStmt& from); + PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; + bool IsInitialized() const final; + + size_t ByteSizeLong() const final; + const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; + ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( + ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; + int GetCachedSize() const final { return _cached_size_.Get(); } + + private: + inline void SharedCtor(); + inline void SharedDtor(); + void SetCachedSize(int size) const final; + void InternalSwap(CopyStmt* other); + friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; + static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { + return "pg_query.CopyStmt"; + } + protected: + explicit CopyStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena); + private: + static void ArenaDtor(void* object); + inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); + public: + + ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; + private: + static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { + ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); + return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; + } + + public: + + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + + enum : int { + kAttlistFieldNumber = 3, + kOptionsFieldNumber = 7, + kFilenameFieldNumber = 6, + kRelationFieldNumber = 1, + kQueryFieldNumber = 2, + kWhereClauseFieldNumber = 8, + kIsFromFieldNumber = 4, + kIsProgramFieldNumber = 5, + }; + // repeated .pg_query.Node attlist = 3 [json_name = "attlist"]; + int attlist_size() const; + private: + int _internal_attlist_size() const; + public: + void clear_attlist(); + ::pg_query::Node* mutable_attlist(int index); + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* + mutable_attlist(); + private: + const ::pg_query::Node& _internal_attlist(int index) const; + ::pg_query::Node* _internal_add_attlist(); + public: + const ::pg_query::Node& attlist(int index) const; + ::pg_query::Node* add_attlist(); + const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& + attlist() const; + + // repeated .pg_query.Node options = 7 [json_name = "options"]; + int options_size() const; + private: + int _internal_options_size() const; + public: + void clear_options(); + ::pg_query::Node* mutable_options(int index); + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* + mutable_options(); + private: + const ::pg_query::Node& _internal_options(int index) const; + ::pg_query::Node* _internal_add_options(); + public: + const ::pg_query::Node& options(int index) const; + ::pg_query::Node* add_options(); + const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& + options() const; + + // string filename = 6 [json_name = "filename"]; + void clear_filename(); + const std::string& filename() const; + void set_filename(const std::string& value); + void set_filename(std::string&& value); + void set_filename(const char* value); + void set_filename(const char* value, size_t size); + std::string* mutable_filename(); + std::string* release_filename(); + void set_allocated_filename(std::string* filename); + private: + const std::string& _internal_filename() const; + void _internal_set_filename(const std::string& value); + std::string* _internal_mutable_filename(); + public: + + // .pg_query.RangeVar relation = 1 [json_name = "relation"]; + bool has_relation() const; + private: + bool _internal_has_relation() const; + public: + void clear_relation(); + const ::pg_query::RangeVar& relation() const; + ::pg_query::RangeVar* release_relation(); + ::pg_query::RangeVar* mutable_relation(); + void set_allocated_relation(::pg_query::RangeVar* relation); + private: + const ::pg_query::RangeVar& _internal_relation() const; + ::pg_query::RangeVar* _internal_mutable_relation(); + public: + void unsafe_arena_set_allocated_relation( + ::pg_query::RangeVar* relation); + ::pg_query::RangeVar* unsafe_arena_release_relation(); + + // .pg_query.Node query = 2 [json_name = "query"]; + bool has_query() const; + private: + bool _internal_has_query() const; + public: + void clear_query(); + const ::pg_query::Node& query() const; + ::pg_query::Node* release_query(); + ::pg_query::Node* mutable_query(); + void set_allocated_query(::pg_query::Node* query); + private: + const ::pg_query::Node& _internal_query() const; + ::pg_query::Node* _internal_mutable_query(); + public: + void unsafe_arena_set_allocated_query( + ::pg_query::Node* query); + ::pg_query::Node* unsafe_arena_release_query(); + + // .pg_query.Node where_clause = 8 [json_name = "whereClause"]; + bool has_where_clause() const; + private: + bool _internal_has_where_clause() const; + public: + void clear_where_clause(); + const ::pg_query::Node& where_clause() const; + ::pg_query::Node* release_where_clause(); + ::pg_query::Node* mutable_where_clause(); + void set_allocated_where_clause(::pg_query::Node* where_clause); + private: + const ::pg_query::Node& _internal_where_clause() const; + ::pg_query::Node* _internal_mutable_where_clause(); + public: + void unsafe_arena_set_allocated_where_clause( + ::pg_query::Node* where_clause); + ::pg_query::Node* unsafe_arena_release_where_clause(); + + // bool is_from = 4 [json_name = "is_from"]; + void clear_is_from(); + bool is_from() const; + void set_is_from(bool value); + private: + bool _internal_is_from() const; + void _internal_set_is_from(bool value); + public: + + // bool is_program = 5 [json_name = "is_program"]; + void clear_is_program(); + bool is_program() const; + void set_is_program(bool value); + private: + bool _internal_is_program() const; + void _internal_set_is_program(bool value); + public: + + // @@protoc_insertion_point(class_scope:pg_query.CopyStmt) + private: + class _Internal; + + template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; + typedef void InternalArenaConstructable_; + typedef void DestructorSkippable_; + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > attlist_; + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > options_; + ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr filename_; + ::pg_query::RangeVar* relation_; + ::pg_query::Node* query_; + ::pg_query::Node* where_clause_; + bool is_from_; + bool is_program_; + mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; + friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; +}; +// ------------------------------------------------------------------- + +class CreateStmt PROTOBUF_FINAL : + public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.CreateStmt) */ { + public: + inline CreateStmt() : CreateStmt(nullptr) {} + virtual ~CreateStmt(); + + CreateStmt(const CreateStmt& from); + CreateStmt(CreateStmt&& from) noexcept + : CreateStmt() { + *this = ::std::move(from); + } + + inline CreateStmt& operator=(const CreateStmt& from) { + CopyFrom(from); + return *this; + } + inline CreateStmt& operator=(CreateStmt&& from) noexcept { + if (GetArena() == from.GetArena()) { + if (this != &from) InternalSwap(&from); + } else { + CopyFrom(from); + } + return *this; + } + + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { + return GetDescriptor(); + } + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { + return GetMetadataStatic().descriptor; + } + static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { + return GetMetadataStatic().reflection; + } + static const CreateStmt& default_instance(); + + static inline const CreateStmt* internal_default_instance() { + return reinterpret_cast( + &_CreateStmt_default_instance_); + } + static constexpr int kIndexInFileMessages = + 79; + + friend void swap(CreateStmt& a, CreateStmt& b) { + a.Swap(&b); + } + inline void Swap(CreateStmt* other) { + if (other == this) return; + if (GetArena() == other->GetArena()) { + InternalSwap(other); + } else { + ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); + } + } + void UnsafeArenaSwap(CreateStmt* other) { + if (other == this) return; + GOOGLE_DCHECK(GetArena() == other->GetArena()); + InternalSwap(other); + } + + // implements Message ---------------------------------------------- + + inline CreateStmt* New() const final { + return CreateMaybeMessage(nullptr); + } + + CreateStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { + return CreateMaybeMessage(arena); + } + void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void CopyFrom(const CreateStmt& from); + void MergeFrom(const CreateStmt& from); + PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; + bool IsInitialized() const final; + + size_t ByteSizeLong() const final; + const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; + ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( + ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; + int GetCachedSize() const final { return _cached_size_.Get(); } + + private: + inline void SharedCtor(); + inline void SharedDtor(); + void SetCachedSize(int size) const final; + void InternalSwap(CreateStmt* other); + friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; + static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { + return "pg_query.CreateStmt"; + } + protected: + explicit CreateStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena); + private: + static void ArenaDtor(void* object); + inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); + public: + + ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; + private: + static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { + ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); + return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; + } + + public: + + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + + enum : int { + kTableEltsFieldNumber = 2, + kInhRelationsFieldNumber = 3, + kConstraintsFieldNumber = 7, + kOptionsFieldNumber = 8, + kTablespacenameFieldNumber = 10, + kAccessMethodFieldNumber = 11, + kRelationFieldNumber = 1, + kPartboundFieldNumber = 4, + kPartspecFieldNumber = 5, + kOfTypenameFieldNumber = 6, + kOncommitFieldNumber = 9, + kIfNotExistsFieldNumber = 12, + }; + // repeated .pg_query.Node table_elts = 2 [json_name = "tableElts"]; + int table_elts_size() const; + private: + int _internal_table_elts_size() const; + public: + void clear_table_elts(); + ::pg_query::Node* mutable_table_elts(int index); + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* + mutable_table_elts(); + private: + const ::pg_query::Node& _internal_table_elts(int index) const; + ::pg_query::Node* _internal_add_table_elts(); + public: + const ::pg_query::Node& table_elts(int index) const; + ::pg_query::Node* add_table_elts(); + const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& + table_elts() const; + + // repeated .pg_query.Node inh_relations = 3 [json_name = "inhRelations"]; + int inh_relations_size() const; + private: + int _internal_inh_relations_size() const; + public: + void clear_inh_relations(); + ::pg_query::Node* mutable_inh_relations(int index); + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* + mutable_inh_relations(); + private: + const ::pg_query::Node& _internal_inh_relations(int index) const; + ::pg_query::Node* _internal_add_inh_relations(); + public: + const ::pg_query::Node& inh_relations(int index) const; + ::pg_query::Node* add_inh_relations(); + const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& + inh_relations() const; + + // repeated .pg_query.Node constraints = 7 [json_name = "constraints"]; + int constraints_size() const; + private: + int _internal_constraints_size() const; + public: + void clear_constraints(); + ::pg_query::Node* mutable_constraints(int index); + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* + mutable_constraints(); + private: + const ::pg_query::Node& _internal_constraints(int index) const; + ::pg_query::Node* _internal_add_constraints(); + public: + const ::pg_query::Node& constraints(int index) const; + ::pg_query::Node* add_constraints(); + const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& + constraints() const; + + // repeated .pg_query.Node options = 8 [json_name = "options"]; + int options_size() const; + private: + int _internal_options_size() const; + public: + void clear_options(); + ::pg_query::Node* mutable_options(int index); + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* + mutable_options(); + private: + const ::pg_query::Node& _internal_options(int index) const; + ::pg_query::Node* _internal_add_options(); + public: + const ::pg_query::Node& options(int index) const; + ::pg_query::Node* add_options(); + const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& + options() const; + + // string tablespacename = 10 [json_name = "tablespacename"]; + void clear_tablespacename(); + const std::string& tablespacename() const; + void set_tablespacename(const std::string& value); + void set_tablespacename(std::string&& value); + void set_tablespacename(const char* value); + void set_tablespacename(const char* value, size_t size); + std::string* mutable_tablespacename(); + std::string* release_tablespacename(); + void set_allocated_tablespacename(std::string* tablespacename); + private: + const std::string& _internal_tablespacename() const; + void _internal_set_tablespacename(const std::string& value); + std::string* _internal_mutable_tablespacename(); + public: + + // string access_method = 11 [json_name = "accessMethod"]; + void clear_access_method(); + const std::string& access_method() const; + void set_access_method(const std::string& value); + void set_access_method(std::string&& value); + void set_access_method(const char* value); + void set_access_method(const char* value, size_t size); + std::string* mutable_access_method(); + std::string* release_access_method(); + void set_allocated_access_method(std::string* access_method); + private: + const std::string& _internal_access_method() const; + void _internal_set_access_method(const std::string& value); + std::string* _internal_mutable_access_method(); + public: + + // .pg_query.RangeVar relation = 1 [json_name = "relation"]; + bool has_relation() const; + private: + bool _internal_has_relation() const; + public: + void clear_relation(); + const ::pg_query::RangeVar& relation() const; + ::pg_query::RangeVar* release_relation(); + ::pg_query::RangeVar* mutable_relation(); + void set_allocated_relation(::pg_query::RangeVar* relation); + private: + const ::pg_query::RangeVar& _internal_relation() const; + ::pg_query::RangeVar* _internal_mutable_relation(); + public: + void unsafe_arena_set_allocated_relation( + ::pg_query::RangeVar* relation); + ::pg_query::RangeVar* unsafe_arena_release_relation(); + + // .pg_query.PartitionBoundSpec partbound = 4 [json_name = "partbound"]; + bool has_partbound() const; + private: + bool _internal_has_partbound() const; + public: + void clear_partbound(); + const ::pg_query::PartitionBoundSpec& partbound() const; + ::pg_query::PartitionBoundSpec* release_partbound(); + ::pg_query::PartitionBoundSpec* mutable_partbound(); + void set_allocated_partbound(::pg_query::PartitionBoundSpec* partbound); + private: + const ::pg_query::PartitionBoundSpec& _internal_partbound() const; + ::pg_query::PartitionBoundSpec* _internal_mutable_partbound(); + public: + void unsafe_arena_set_allocated_partbound( + ::pg_query::PartitionBoundSpec* partbound); + ::pg_query::PartitionBoundSpec* unsafe_arena_release_partbound(); + + // .pg_query.PartitionSpec partspec = 5 [json_name = "partspec"]; + bool has_partspec() const; + private: + bool _internal_has_partspec() const; + public: + void clear_partspec(); + const ::pg_query::PartitionSpec& partspec() const; + ::pg_query::PartitionSpec* release_partspec(); + ::pg_query::PartitionSpec* mutable_partspec(); + void set_allocated_partspec(::pg_query::PartitionSpec* partspec); + private: + const ::pg_query::PartitionSpec& _internal_partspec() const; + ::pg_query::PartitionSpec* _internal_mutable_partspec(); + public: + void unsafe_arena_set_allocated_partspec( + ::pg_query::PartitionSpec* partspec); + ::pg_query::PartitionSpec* unsafe_arena_release_partspec(); + + // .pg_query.TypeName of_typename = 6 [json_name = "ofTypename"]; + bool has_of_typename() const; + private: + bool _internal_has_of_typename() const; + public: + void clear_of_typename(); + const ::pg_query::TypeName& of_typename() const; + ::pg_query::TypeName* release_of_typename(); + ::pg_query::TypeName* mutable_of_typename(); + void set_allocated_of_typename(::pg_query::TypeName* of_typename); + private: + const ::pg_query::TypeName& _internal_of_typename() const; + ::pg_query::TypeName* _internal_mutable_of_typename(); + public: + void unsafe_arena_set_allocated_of_typename( + ::pg_query::TypeName* of_typename); + ::pg_query::TypeName* unsafe_arena_release_of_typename(); + + // .pg_query.OnCommitAction oncommit = 9 [json_name = "oncommit"]; + void clear_oncommit(); + ::pg_query::OnCommitAction oncommit() const; + void set_oncommit(::pg_query::OnCommitAction value); + private: + ::pg_query::OnCommitAction _internal_oncommit() const; + void _internal_set_oncommit(::pg_query::OnCommitAction value); + public: + + // bool if_not_exists = 12 [json_name = "if_not_exists"]; + void clear_if_not_exists(); + bool if_not_exists() const; + void set_if_not_exists(bool value); + private: + bool _internal_if_not_exists() const; + void _internal_set_if_not_exists(bool value); + public: + + // @@protoc_insertion_point(class_scope:pg_query.CreateStmt) + private: + class _Internal; + + template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; + typedef void InternalArenaConstructable_; + typedef void DestructorSkippable_; + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > table_elts_; + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > inh_relations_; + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > constraints_; + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > options_; + ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr tablespacename_; + ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr access_method_; + ::pg_query::RangeVar* relation_; + ::pg_query::PartitionBoundSpec* partbound_; + ::pg_query::PartitionSpec* partspec_; + ::pg_query::TypeName* of_typename_; + int oncommit_; + bool if_not_exists_; + mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; + friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; +}; +// ------------------------------------------------------------------- + +class DefineStmt PROTOBUF_FINAL : + public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.DefineStmt) */ { + public: + inline DefineStmt() : DefineStmt(nullptr) {} + virtual ~DefineStmt(); + + DefineStmt(const DefineStmt& from); + DefineStmt(DefineStmt&& from) noexcept + : DefineStmt() { + *this = ::std::move(from); + } + + inline DefineStmt& operator=(const DefineStmt& from) { + CopyFrom(from); + return *this; + } + inline DefineStmt& operator=(DefineStmt&& from) noexcept { + if (GetArena() == from.GetArena()) { + if (this != &from) InternalSwap(&from); + } else { + CopyFrom(from); + } + return *this; + } + + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { + return GetDescriptor(); + } + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { + return GetMetadataStatic().descriptor; + } + static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { + return GetMetadataStatic().reflection; + } + static const DefineStmt& default_instance(); + + static inline const DefineStmt* internal_default_instance() { + return reinterpret_cast( + &_DefineStmt_default_instance_); + } + static constexpr int kIndexInFileMessages = + 80; + + friend void swap(DefineStmt& a, DefineStmt& b) { + a.Swap(&b); + } + inline void Swap(DefineStmt* other) { + if (other == this) return; + if (GetArena() == other->GetArena()) { + InternalSwap(other); + } else { + ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); + } + } + void UnsafeArenaSwap(DefineStmt* other) { + if (other == this) return; + GOOGLE_DCHECK(GetArena() == other->GetArena()); + InternalSwap(other); + } + + // implements Message ---------------------------------------------- + + inline DefineStmt* New() const final { + return CreateMaybeMessage(nullptr); + } + + DefineStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { + return CreateMaybeMessage(arena); + } + void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void CopyFrom(const DefineStmt& from); + void MergeFrom(const DefineStmt& from); + PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; + bool IsInitialized() const final; + + size_t ByteSizeLong() const final; + const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; + ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( + ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; + int GetCachedSize() const final { return _cached_size_.Get(); } + + private: + inline void SharedCtor(); + inline void SharedDtor(); + void SetCachedSize(int size) const final; + void InternalSwap(DefineStmt* other); + friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; + static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { + return "pg_query.DefineStmt"; + } + protected: + explicit DefineStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena); + private: + static void ArenaDtor(void* object); + inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); + public: + + ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; + private: + static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { + ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); + return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; + } + + public: + + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + + enum : int { + kDefnamesFieldNumber = 3, + kArgsFieldNumber = 4, + kDefinitionFieldNumber = 5, + kKindFieldNumber = 1, + kOldstyleFieldNumber = 2, + kIfNotExistsFieldNumber = 6, + kReplaceFieldNumber = 7, + }; + // repeated .pg_query.Node defnames = 3 [json_name = "defnames"]; + int defnames_size() const; + private: + int _internal_defnames_size() const; + public: + void clear_defnames(); + ::pg_query::Node* mutable_defnames(int index); + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* + mutable_defnames(); + private: + const ::pg_query::Node& _internal_defnames(int index) const; + ::pg_query::Node* _internal_add_defnames(); + public: + const ::pg_query::Node& defnames(int index) const; + ::pg_query::Node* add_defnames(); + const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& + defnames() const; + + // repeated .pg_query.Node args = 4 [json_name = "args"]; + int args_size() const; + private: + int _internal_args_size() const; + public: + void clear_args(); + ::pg_query::Node* mutable_args(int index); + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* + mutable_args(); + private: + const ::pg_query::Node& _internal_args(int index) const; + ::pg_query::Node* _internal_add_args(); + public: + const ::pg_query::Node& args(int index) const; + ::pg_query::Node* add_args(); + const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& + args() const; + + // repeated .pg_query.Node definition = 5 [json_name = "definition"]; + int definition_size() const; + private: + int _internal_definition_size() const; + public: + void clear_definition(); + ::pg_query::Node* mutable_definition(int index); + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* + mutable_definition(); + private: + const ::pg_query::Node& _internal_definition(int index) const; + ::pg_query::Node* _internal_add_definition(); + public: + const ::pg_query::Node& definition(int index) const; + ::pg_query::Node* add_definition(); + const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& + definition() const; + + // .pg_query.ObjectType kind = 1 [json_name = "kind"]; + void clear_kind(); + ::pg_query::ObjectType kind() const; + void set_kind(::pg_query::ObjectType value); + private: + ::pg_query::ObjectType _internal_kind() const; + void _internal_set_kind(::pg_query::ObjectType value); + public: + + // bool oldstyle = 2 [json_name = "oldstyle"]; + void clear_oldstyle(); + bool oldstyle() const; + void set_oldstyle(bool value); + private: + bool _internal_oldstyle() const; + void _internal_set_oldstyle(bool value); + public: + + // bool if_not_exists = 6 [json_name = "if_not_exists"]; + void clear_if_not_exists(); + bool if_not_exists() const; + void set_if_not_exists(bool value); + private: + bool _internal_if_not_exists() const; + void _internal_set_if_not_exists(bool value); + public: + + // bool replace = 7 [json_name = "replace"]; + void clear_replace(); + bool replace() const; + void set_replace(bool value); + private: + bool _internal_replace() const; + void _internal_set_replace(bool value); + public: + + // @@protoc_insertion_point(class_scope:pg_query.DefineStmt) + private: + class _Internal; + + template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; + typedef void InternalArenaConstructable_; + typedef void DestructorSkippable_; + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > defnames_; + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > args_; + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > definition_; + int kind_; + bool oldstyle_; + bool if_not_exists_; + bool replace_; + mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; + friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; +}; +// ------------------------------------------------------------------- + +class DropStmt PROTOBUF_FINAL : + public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.DropStmt) */ { + public: + inline DropStmt() : DropStmt(nullptr) {} + virtual ~DropStmt(); + + DropStmt(const DropStmt& from); + DropStmt(DropStmt&& from) noexcept + : DropStmt() { + *this = ::std::move(from); + } + + inline DropStmt& operator=(const DropStmt& from) { + CopyFrom(from); + return *this; + } + inline DropStmt& operator=(DropStmt&& from) noexcept { + if (GetArena() == from.GetArena()) { + if (this != &from) InternalSwap(&from); + } else { + CopyFrom(from); + } + return *this; + } + + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { + return GetDescriptor(); + } + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { + return GetMetadataStatic().descriptor; + } + static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { + return GetMetadataStatic().reflection; + } + static const DropStmt& default_instance(); + + static inline const DropStmt* internal_default_instance() { + return reinterpret_cast( + &_DropStmt_default_instance_); + } + static constexpr int kIndexInFileMessages = + 81; + + friend void swap(DropStmt& a, DropStmt& b) { + a.Swap(&b); + } + inline void Swap(DropStmt* other) { + if (other == this) return; + if (GetArena() == other->GetArena()) { + InternalSwap(other); + } else { + ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); + } + } + void UnsafeArenaSwap(DropStmt* other) { + if (other == this) return; + GOOGLE_DCHECK(GetArena() == other->GetArena()); + InternalSwap(other); + } + + // implements Message ---------------------------------------------- + + inline DropStmt* New() const final { + return CreateMaybeMessage(nullptr); + } + + DropStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { + return CreateMaybeMessage(arena); + } + void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void CopyFrom(const DropStmt& from); + void MergeFrom(const DropStmt& from); + PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; + bool IsInitialized() const final; + + size_t ByteSizeLong() const final; + const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; + ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( + ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; + int GetCachedSize() const final { return _cached_size_.Get(); } + + private: + inline void SharedCtor(); + inline void SharedDtor(); + void SetCachedSize(int size) const final; + void InternalSwap(DropStmt* other); + friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; + static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { + return "pg_query.DropStmt"; + } + protected: + explicit DropStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena); + private: + static void ArenaDtor(void* object); + inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); + public: + + ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; + private: + static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { + ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); + return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; + } + + public: + + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + + enum : int { + kObjectsFieldNumber = 1, + kRemoveTypeFieldNumber = 2, + kBehaviorFieldNumber = 3, + kMissingOkFieldNumber = 4, + kConcurrentFieldNumber = 5, + }; + // repeated .pg_query.Node objects = 1 [json_name = "objects"]; + int objects_size() const; + private: + int _internal_objects_size() const; + public: + void clear_objects(); + ::pg_query::Node* mutable_objects(int index); + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* + mutable_objects(); + private: + const ::pg_query::Node& _internal_objects(int index) const; + ::pg_query::Node* _internal_add_objects(); + public: + const ::pg_query::Node& objects(int index) const; + ::pg_query::Node* add_objects(); + const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& + objects() const; + + // .pg_query.ObjectType remove_type = 2 [json_name = "removeType"]; + void clear_remove_type(); + ::pg_query::ObjectType remove_type() const; + void set_remove_type(::pg_query::ObjectType value); + private: + ::pg_query::ObjectType _internal_remove_type() const; + void _internal_set_remove_type(::pg_query::ObjectType value); + public: + + // .pg_query.DropBehavior behavior = 3 [json_name = "behavior"]; + void clear_behavior(); + ::pg_query::DropBehavior behavior() const; + void set_behavior(::pg_query::DropBehavior value); + private: + ::pg_query::DropBehavior _internal_behavior() const; + void _internal_set_behavior(::pg_query::DropBehavior value); + public: + + // bool missing_ok = 4 [json_name = "missing_ok"]; + void clear_missing_ok(); + bool missing_ok() const; + void set_missing_ok(bool value); + private: + bool _internal_missing_ok() const; + void _internal_set_missing_ok(bool value); + public: + + // bool concurrent = 5 [json_name = "concurrent"]; + void clear_concurrent(); + bool concurrent() const; + void set_concurrent(bool value); + private: + bool _internal_concurrent() const; + void _internal_set_concurrent(bool value); + public: + + // @@protoc_insertion_point(class_scope:pg_query.DropStmt) + private: + class _Internal; + + template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; + typedef void InternalArenaConstructable_; + typedef void DestructorSkippable_; + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > objects_; + int remove_type_; + int behavior_; + bool missing_ok_; + bool concurrent_; + mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; + friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; +}; +// ------------------------------------------------------------------- + +class TruncateStmt PROTOBUF_FINAL : + public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.TruncateStmt) */ { + public: + inline TruncateStmt() : TruncateStmt(nullptr) {} + virtual ~TruncateStmt(); + + TruncateStmt(const TruncateStmt& from); + TruncateStmt(TruncateStmt&& from) noexcept + : TruncateStmt() { + *this = ::std::move(from); + } + + inline TruncateStmt& operator=(const TruncateStmt& from) { + CopyFrom(from); + return *this; + } + inline TruncateStmt& operator=(TruncateStmt&& from) noexcept { + if (GetArena() == from.GetArena()) { + if (this != &from) InternalSwap(&from); + } else { + CopyFrom(from); + } + return *this; + } + + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { + return GetDescriptor(); + } + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { + return GetMetadataStatic().descriptor; + } + static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { + return GetMetadataStatic().reflection; + } + static const TruncateStmt& default_instance(); + + static inline const TruncateStmt* internal_default_instance() { + return reinterpret_cast( + &_TruncateStmt_default_instance_); + } + static constexpr int kIndexInFileMessages = + 82; + + friend void swap(TruncateStmt& a, TruncateStmt& b) { + a.Swap(&b); + } + inline void Swap(TruncateStmt* other) { + if (other == this) return; + if (GetArena() == other->GetArena()) { + InternalSwap(other); + } else { + ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); + } + } + void UnsafeArenaSwap(TruncateStmt* other) { + if (other == this) return; + GOOGLE_DCHECK(GetArena() == other->GetArena()); + InternalSwap(other); + } + + // implements Message ---------------------------------------------- + + inline TruncateStmt* New() const final { + return CreateMaybeMessage(nullptr); + } + + TruncateStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { + return CreateMaybeMessage(arena); + } + void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void CopyFrom(const TruncateStmt& from); + void MergeFrom(const TruncateStmt& from); + PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; + bool IsInitialized() const final; + + size_t ByteSizeLong() const final; + const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; + ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( + ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; + int GetCachedSize() const final { return _cached_size_.Get(); } + + private: + inline void SharedCtor(); + inline void SharedDtor(); + void SetCachedSize(int size) const final; + void InternalSwap(TruncateStmt* other); + friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; + static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { + return "pg_query.TruncateStmt"; + } + protected: + explicit TruncateStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena); + private: + static void ArenaDtor(void* object); + inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); + public: + + ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; + private: + static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { + ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); + return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; + } + + public: + + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + + enum : int { + kRelationsFieldNumber = 1, + kRestartSeqsFieldNumber = 2, + kBehaviorFieldNumber = 3, + }; + // repeated .pg_query.Node relations = 1 [json_name = "relations"]; + int relations_size() const; + private: + int _internal_relations_size() const; + public: + void clear_relations(); + ::pg_query::Node* mutable_relations(int index); + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* + mutable_relations(); + private: + const ::pg_query::Node& _internal_relations(int index) const; + ::pg_query::Node* _internal_add_relations(); + public: + const ::pg_query::Node& relations(int index) const; + ::pg_query::Node* add_relations(); + const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& + relations() const; + + // bool restart_seqs = 2 [json_name = "restart_seqs"]; + void clear_restart_seqs(); + bool restart_seqs() const; + void set_restart_seqs(bool value); + private: + bool _internal_restart_seqs() const; + void _internal_set_restart_seqs(bool value); + public: + + // .pg_query.DropBehavior behavior = 3 [json_name = "behavior"]; + void clear_behavior(); + ::pg_query::DropBehavior behavior() const; + void set_behavior(::pg_query::DropBehavior value); + private: + ::pg_query::DropBehavior _internal_behavior() const; + void _internal_set_behavior(::pg_query::DropBehavior value); + public: + + // @@protoc_insertion_point(class_scope:pg_query.TruncateStmt) + private: + class _Internal; + + template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; + typedef void InternalArenaConstructable_; + typedef void DestructorSkippable_; + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > relations_; + bool restart_seqs_; + int behavior_; + mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; + friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; +}; +// ------------------------------------------------------------------- + +class CommentStmt PROTOBUF_FINAL : + public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.CommentStmt) */ { + public: + inline CommentStmt() : CommentStmt(nullptr) {} + virtual ~CommentStmt(); + + CommentStmt(const CommentStmt& from); + CommentStmt(CommentStmt&& from) noexcept + : CommentStmt() { + *this = ::std::move(from); + } + + inline CommentStmt& operator=(const CommentStmt& from) { + CopyFrom(from); + return *this; + } + inline CommentStmt& operator=(CommentStmt&& from) noexcept { + if (GetArena() == from.GetArena()) { + if (this != &from) InternalSwap(&from); + } else { + CopyFrom(from); + } + return *this; + } + + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { + return GetDescriptor(); + } + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { + return GetMetadataStatic().descriptor; + } + static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { + return GetMetadataStatic().reflection; + } + static const CommentStmt& default_instance(); + + static inline const CommentStmt* internal_default_instance() { + return reinterpret_cast( + &_CommentStmt_default_instance_); + } + static constexpr int kIndexInFileMessages = + 83; + + friend void swap(CommentStmt& a, CommentStmt& b) { + a.Swap(&b); + } + inline void Swap(CommentStmt* other) { + if (other == this) return; + if (GetArena() == other->GetArena()) { + InternalSwap(other); + } else { + ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); + } + } + void UnsafeArenaSwap(CommentStmt* other) { + if (other == this) return; + GOOGLE_DCHECK(GetArena() == other->GetArena()); + InternalSwap(other); + } + + // implements Message ---------------------------------------------- + + inline CommentStmt* New() const final { + return CreateMaybeMessage(nullptr); + } + + CommentStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { + return CreateMaybeMessage(arena); + } + void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void CopyFrom(const CommentStmt& from); + void MergeFrom(const CommentStmt& from); + PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; + bool IsInitialized() const final; + + size_t ByteSizeLong() const final; + const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; + ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( + ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; + int GetCachedSize() const final { return _cached_size_.Get(); } + + private: + inline void SharedCtor(); + inline void SharedDtor(); + void SetCachedSize(int size) const final; + void InternalSwap(CommentStmt* other); + friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; + static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { + return "pg_query.CommentStmt"; + } + protected: + explicit CommentStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena); + private: + static void ArenaDtor(void* object); + inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); + public: + + ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; + private: + static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { + ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); + return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; + } + + public: + + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + + enum : int { + kCommentFieldNumber = 3, + kObjectFieldNumber = 2, + kObjtypeFieldNumber = 1, + }; + // string comment = 3 [json_name = "comment"]; + void clear_comment(); + const std::string& comment() const; + void set_comment(const std::string& value); + void set_comment(std::string&& value); + void set_comment(const char* value); + void set_comment(const char* value, size_t size); + std::string* mutable_comment(); + std::string* release_comment(); + void set_allocated_comment(std::string* comment); + private: + const std::string& _internal_comment() const; + void _internal_set_comment(const std::string& value); + std::string* _internal_mutable_comment(); + public: + + // .pg_query.Node object = 2 [json_name = "object"]; + bool has_object() const; + private: + bool _internal_has_object() const; + public: + void clear_object(); + const ::pg_query::Node& object() const; + ::pg_query::Node* release_object(); + ::pg_query::Node* mutable_object(); + void set_allocated_object(::pg_query::Node* object); + private: + const ::pg_query::Node& _internal_object() const; + ::pg_query::Node* _internal_mutable_object(); + public: + void unsafe_arena_set_allocated_object( + ::pg_query::Node* object); + ::pg_query::Node* unsafe_arena_release_object(); + + // .pg_query.ObjectType objtype = 1 [json_name = "objtype"]; + void clear_objtype(); + ::pg_query::ObjectType objtype() const; + void set_objtype(::pg_query::ObjectType value); + private: + ::pg_query::ObjectType _internal_objtype() const; + void _internal_set_objtype(::pg_query::ObjectType value); + public: + + // @@protoc_insertion_point(class_scope:pg_query.CommentStmt) + private: + class _Internal; + + template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; + typedef void InternalArenaConstructable_; + typedef void DestructorSkippable_; + ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr comment_; + ::pg_query::Node* object_; + int objtype_; + mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; + friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; +}; +// ------------------------------------------------------------------- + +class FetchStmt PROTOBUF_FINAL : + public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.FetchStmt) */ { + public: + inline FetchStmt() : FetchStmt(nullptr) {} + virtual ~FetchStmt(); + + FetchStmt(const FetchStmt& from); + FetchStmt(FetchStmt&& from) noexcept + : FetchStmt() { + *this = ::std::move(from); + } + + inline FetchStmt& operator=(const FetchStmt& from) { + CopyFrom(from); + return *this; + } + inline FetchStmt& operator=(FetchStmt&& from) noexcept { + if (GetArena() == from.GetArena()) { + if (this != &from) InternalSwap(&from); + } else { + CopyFrom(from); + } + return *this; + } + + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { + return GetDescriptor(); + } + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { + return GetMetadataStatic().descriptor; + } + static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { + return GetMetadataStatic().reflection; + } + static const FetchStmt& default_instance(); + + static inline const FetchStmt* internal_default_instance() { + return reinterpret_cast( + &_FetchStmt_default_instance_); + } + static constexpr int kIndexInFileMessages = + 84; + + friend void swap(FetchStmt& a, FetchStmt& b) { + a.Swap(&b); + } + inline void Swap(FetchStmt* other) { + if (other == this) return; + if (GetArena() == other->GetArena()) { + InternalSwap(other); + } else { + ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); + } + } + void UnsafeArenaSwap(FetchStmt* other) { + if (other == this) return; + GOOGLE_DCHECK(GetArena() == other->GetArena()); + InternalSwap(other); + } + + // implements Message ---------------------------------------------- + + inline FetchStmt* New() const final { + return CreateMaybeMessage(nullptr); + } + + FetchStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { + return CreateMaybeMessage(arena); + } + void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void CopyFrom(const FetchStmt& from); + void MergeFrom(const FetchStmt& from); + PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; + bool IsInitialized() const final; + + size_t ByteSizeLong() const final; + const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; + ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( + ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; + int GetCachedSize() const final { return _cached_size_.Get(); } + + private: + inline void SharedCtor(); + inline void SharedDtor(); + void SetCachedSize(int size) const final; + void InternalSwap(FetchStmt* other); + friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; + static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { + return "pg_query.FetchStmt"; + } + protected: + explicit FetchStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena); + private: + static void ArenaDtor(void* object); + inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); + public: + + ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; + private: + static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { + ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); + return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; + } + + public: + + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + + enum : int { + kPortalnameFieldNumber = 3, + kHowManyFieldNumber = 2, + kDirectionFieldNumber = 1, + kIsmoveFieldNumber = 4, + }; + // string portalname = 3 [json_name = "portalname"]; + void clear_portalname(); + const std::string& portalname() const; + void set_portalname(const std::string& value); + void set_portalname(std::string&& value); + void set_portalname(const char* value); + void set_portalname(const char* value, size_t size); + std::string* mutable_portalname(); + std::string* release_portalname(); + void set_allocated_portalname(std::string* portalname); + private: + const std::string& _internal_portalname() const; + void _internal_set_portalname(const std::string& value); + std::string* _internal_mutable_portalname(); + public: + + // int64 how_many = 2 [json_name = "howMany"]; + void clear_how_many(); + ::PROTOBUF_NAMESPACE_ID::int64 how_many() const; + void set_how_many(::PROTOBUF_NAMESPACE_ID::int64 value); + private: + ::PROTOBUF_NAMESPACE_ID::int64 _internal_how_many() const; + void _internal_set_how_many(::PROTOBUF_NAMESPACE_ID::int64 value); + public: + + // .pg_query.FetchDirection direction = 1 [json_name = "direction"]; + void clear_direction(); + ::pg_query::FetchDirection direction() const; + void set_direction(::pg_query::FetchDirection value); + private: + ::pg_query::FetchDirection _internal_direction() const; + void _internal_set_direction(::pg_query::FetchDirection value); + public: + + // bool ismove = 4 [json_name = "ismove"]; + void clear_ismove(); + bool ismove() const; + void set_ismove(bool value); + private: + bool _internal_ismove() const; + void _internal_set_ismove(bool value); + public: + + // @@protoc_insertion_point(class_scope:pg_query.FetchStmt) + private: + class _Internal; + + template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; + typedef void InternalArenaConstructable_; + typedef void DestructorSkippable_; + ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr portalname_; + ::PROTOBUF_NAMESPACE_ID::int64 how_many_; + int direction_; + bool ismove_; + mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; + friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; +}; +// ------------------------------------------------------------------- + +class IndexStmt PROTOBUF_FINAL : + public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.IndexStmt) */ { + public: + inline IndexStmt() : IndexStmt(nullptr) {} + virtual ~IndexStmt(); + + IndexStmt(const IndexStmt& from); + IndexStmt(IndexStmt&& from) noexcept + : IndexStmt() { + *this = ::std::move(from); + } + + inline IndexStmt& operator=(const IndexStmt& from) { + CopyFrom(from); + return *this; + } + inline IndexStmt& operator=(IndexStmt&& from) noexcept { + if (GetArena() == from.GetArena()) { + if (this != &from) InternalSwap(&from); + } else { + CopyFrom(from); + } + return *this; + } + + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { + return GetDescriptor(); + } + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { + return GetMetadataStatic().descriptor; + } + static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { + return GetMetadataStatic().reflection; + } + static const IndexStmt& default_instance(); + + static inline const IndexStmt* internal_default_instance() { + return reinterpret_cast( + &_IndexStmt_default_instance_); + } + static constexpr int kIndexInFileMessages = + 85; + + friend void swap(IndexStmt& a, IndexStmt& b) { + a.Swap(&b); + } + inline void Swap(IndexStmt* other) { + if (other == this) return; + if (GetArena() == other->GetArena()) { + InternalSwap(other); + } else { + ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); + } + } + void UnsafeArenaSwap(IndexStmt* other) { + if (other == this) return; + GOOGLE_DCHECK(GetArena() == other->GetArena()); + InternalSwap(other); + } + + // implements Message ---------------------------------------------- + + inline IndexStmt* New() const final { + return CreateMaybeMessage(nullptr); + } + + IndexStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { + return CreateMaybeMessage(arena); + } + void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void CopyFrom(const IndexStmt& from); + void MergeFrom(const IndexStmt& from); + PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; + bool IsInitialized() const final; + + size_t ByteSizeLong() const final; + const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; + ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( + ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; + int GetCachedSize() const final { return _cached_size_.Get(); } + + private: + inline void SharedCtor(); + inline void SharedDtor(); + void SetCachedSize(int size) const final; + void InternalSwap(IndexStmt* other); + friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; + static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { + return "pg_query.IndexStmt"; + } + protected: + explicit IndexStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena); + private: + static void ArenaDtor(void* object); + inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); + public: + + ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; + private: + static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { + ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); + return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; + } + + public: + + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + + enum : int { + kIndexParamsFieldNumber = 5, + kIndexIncludingParamsFieldNumber = 6, + kOptionsFieldNumber = 7, + kExcludeOpNamesFieldNumber = 9, + kIdxnameFieldNumber = 1, + kAccessMethodFieldNumber = 3, + kTableSpaceFieldNumber = 4, + kIdxcommentFieldNumber = 10, + kRelationFieldNumber = 2, + kWhereClauseFieldNumber = 8, + kIndexOidFieldNumber = 11, + kOldNodeFieldNumber = 12, + kOldCreateSubidFieldNumber = 13, + kOldFirstRelfilenodeSubidFieldNumber = 14, + kUniqueFieldNumber = 15, + kPrimaryFieldNumber = 16, + kIsconstraintFieldNumber = 17, + kDeferrableFieldNumber = 18, + kInitdeferredFieldNumber = 19, + kTransformedFieldNumber = 20, + kConcurrentFieldNumber = 21, + kIfNotExistsFieldNumber = 22, + kResetDefaultTblspcFieldNumber = 23, + }; + // repeated .pg_query.Node index_params = 5 [json_name = "indexParams"]; + int index_params_size() const; + private: + int _internal_index_params_size() const; + public: + void clear_index_params(); + ::pg_query::Node* mutable_index_params(int index); + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* + mutable_index_params(); + private: + const ::pg_query::Node& _internal_index_params(int index) const; + ::pg_query::Node* _internal_add_index_params(); + public: + const ::pg_query::Node& index_params(int index) const; + ::pg_query::Node* add_index_params(); + const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& + index_params() const; + + // repeated .pg_query.Node index_including_params = 6 [json_name = "indexIncludingParams"]; + int index_including_params_size() const; + private: + int _internal_index_including_params_size() const; + public: + void clear_index_including_params(); + ::pg_query::Node* mutable_index_including_params(int index); + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* + mutable_index_including_params(); + private: + const ::pg_query::Node& _internal_index_including_params(int index) const; + ::pg_query::Node* _internal_add_index_including_params(); + public: + const ::pg_query::Node& index_including_params(int index) const; + ::pg_query::Node* add_index_including_params(); + const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& + index_including_params() const; + + // repeated .pg_query.Node options = 7 [json_name = "options"]; + int options_size() const; + private: + int _internal_options_size() const; + public: + void clear_options(); + ::pg_query::Node* mutable_options(int index); + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* + mutable_options(); + private: + const ::pg_query::Node& _internal_options(int index) const; + ::pg_query::Node* _internal_add_options(); + public: + const ::pg_query::Node& options(int index) const; + ::pg_query::Node* add_options(); + const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& + options() const; + + // repeated .pg_query.Node exclude_op_names = 9 [json_name = "excludeOpNames"]; + int exclude_op_names_size() const; + private: + int _internal_exclude_op_names_size() const; + public: + void clear_exclude_op_names(); + ::pg_query::Node* mutable_exclude_op_names(int index); + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* + mutable_exclude_op_names(); + private: + const ::pg_query::Node& _internal_exclude_op_names(int index) const; + ::pg_query::Node* _internal_add_exclude_op_names(); + public: + const ::pg_query::Node& exclude_op_names(int index) const; + ::pg_query::Node* add_exclude_op_names(); + const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& + exclude_op_names() const; + + // string idxname = 1 [json_name = "idxname"]; + void clear_idxname(); + const std::string& idxname() const; + void set_idxname(const std::string& value); + void set_idxname(std::string&& value); + void set_idxname(const char* value); + void set_idxname(const char* value, size_t size); + std::string* mutable_idxname(); + std::string* release_idxname(); + void set_allocated_idxname(std::string* idxname); + private: + const std::string& _internal_idxname() const; + void _internal_set_idxname(const std::string& value); + std::string* _internal_mutable_idxname(); + public: + + // string access_method = 3 [json_name = "accessMethod"]; + void clear_access_method(); + const std::string& access_method() const; + void set_access_method(const std::string& value); + void set_access_method(std::string&& value); + void set_access_method(const char* value); + void set_access_method(const char* value, size_t size); + std::string* mutable_access_method(); + std::string* release_access_method(); + void set_allocated_access_method(std::string* access_method); + private: + const std::string& _internal_access_method() const; + void _internal_set_access_method(const std::string& value); + std::string* _internal_mutable_access_method(); + public: + + // string table_space = 4 [json_name = "tableSpace"]; + void clear_table_space(); + const std::string& table_space() const; + void set_table_space(const std::string& value); + void set_table_space(std::string&& value); + void set_table_space(const char* value); + void set_table_space(const char* value, size_t size); + std::string* mutable_table_space(); + std::string* release_table_space(); + void set_allocated_table_space(std::string* table_space); + private: + const std::string& _internal_table_space() const; + void _internal_set_table_space(const std::string& value); + std::string* _internal_mutable_table_space(); + public: + + // string idxcomment = 10 [json_name = "idxcomment"]; + void clear_idxcomment(); + const std::string& idxcomment() const; + void set_idxcomment(const std::string& value); + void set_idxcomment(std::string&& value); + void set_idxcomment(const char* value); + void set_idxcomment(const char* value, size_t size); + std::string* mutable_idxcomment(); + std::string* release_idxcomment(); + void set_allocated_idxcomment(std::string* idxcomment); + private: + const std::string& _internal_idxcomment() const; + void _internal_set_idxcomment(const std::string& value); + std::string* _internal_mutable_idxcomment(); + public: + + // .pg_query.RangeVar relation = 2 [json_name = "relation"]; + bool has_relation() const; + private: + bool _internal_has_relation() const; + public: + void clear_relation(); + const ::pg_query::RangeVar& relation() const; + ::pg_query::RangeVar* release_relation(); + ::pg_query::RangeVar* mutable_relation(); + void set_allocated_relation(::pg_query::RangeVar* relation); + private: + const ::pg_query::RangeVar& _internal_relation() const; + ::pg_query::RangeVar* _internal_mutable_relation(); + public: + void unsafe_arena_set_allocated_relation( + ::pg_query::RangeVar* relation); + ::pg_query::RangeVar* unsafe_arena_release_relation(); + + // .pg_query.Node where_clause = 8 [json_name = "whereClause"]; + bool has_where_clause() const; + private: + bool _internal_has_where_clause() const; + public: + void clear_where_clause(); + const ::pg_query::Node& where_clause() const; + ::pg_query::Node* release_where_clause(); + ::pg_query::Node* mutable_where_clause(); + void set_allocated_where_clause(::pg_query::Node* where_clause); + private: + const ::pg_query::Node& _internal_where_clause() const; + ::pg_query::Node* _internal_mutable_where_clause(); + public: + void unsafe_arena_set_allocated_where_clause( + ::pg_query::Node* where_clause); + ::pg_query::Node* unsafe_arena_release_where_clause(); + + // uint32 index_oid = 11 [json_name = "indexOid"]; + void clear_index_oid(); + ::PROTOBUF_NAMESPACE_ID::uint32 index_oid() const; + void set_index_oid(::PROTOBUF_NAMESPACE_ID::uint32 value); + private: + ::PROTOBUF_NAMESPACE_ID::uint32 _internal_index_oid() const; + void _internal_set_index_oid(::PROTOBUF_NAMESPACE_ID::uint32 value); + public: + + // uint32 old_node = 12 [json_name = "oldNode"]; + void clear_old_node(); + ::PROTOBUF_NAMESPACE_ID::uint32 old_node() const; + void set_old_node(::PROTOBUF_NAMESPACE_ID::uint32 value); + private: + ::PROTOBUF_NAMESPACE_ID::uint32 _internal_old_node() const; + void _internal_set_old_node(::PROTOBUF_NAMESPACE_ID::uint32 value); + public: + + // uint32 old_create_subid = 13 [json_name = "oldCreateSubid"]; + void clear_old_create_subid(); + ::PROTOBUF_NAMESPACE_ID::uint32 old_create_subid() const; + void set_old_create_subid(::PROTOBUF_NAMESPACE_ID::uint32 value); + private: + ::PROTOBUF_NAMESPACE_ID::uint32 _internal_old_create_subid() const; + void _internal_set_old_create_subid(::PROTOBUF_NAMESPACE_ID::uint32 value); + public: + + // uint32 old_first_relfilenode_subid = 14 [json_name = "oldFirstRelfilenodeSubid"]; + void clear_old_first_relfilenode_subid(); + ::PROTOBUF_NAMESPACE_ID::uint32 old_first_relfilenode_subid() const; + void set_old_first_relfilenode_subid(::PROTOBUF_NAMESPACE_ID::uint32 value); + private: + ::PROTOBUF_NAMESPACE_ID::uint32 _internal_old_first_relfilenode_subid() const; + void _internal_set_old_first_relfilenode_subid(::PROTOBUF_NAMESPACE_ID::uint32 value); + public: + + // bool unique = 15 [json_name = "unique"]; + void clear_unique(); + bool unique() const; + void set_unique(bool value); + private: + bool _internal_unique() const; + void _internal_set_unique(bool value); + public: + + // bool primary = 16 [json_name = "primary"]; + void clear_primary(); + bool primary() const; + void set_primary(bool value); + private: + bool _internal_primary() const; + void _internal_set_primary(bool value); + public: + + // bool isconstraint = 17 [json_name = "isconstraint"]; + void clear_isconstraint(); + bool isconstraint() const; + void set_isconstraint(bool value); + private: + bool _internal_isconstraint() const; + void _internal_set_isconstraint(bool value); + public: + + // bool deferrable = 18 [json_name = "deferrable"]; + void clear_deferrable(); + bool deferrable() const; + void set_deferrable(bool value); + private: + bool _internal_deferrable() const; + void _internal_set_deferrable(bool value); + public: + + // bool initdeferred = 19 [json_name = "initdeferred"]; + void clear_initdeferred(); + bool initdeferred() const; + void set_initdeferred(bool value); + private: + bool _internal_initdeferred() const; + void _internal_set_initdeferred(bool value); + public: + + // bool transformed = 20 [json_name = "transformed"]; + void clear_transformed(); + bool transformed() const; + void set_transformed(bool value); + private: + bool _internal_transformed() const; + void _internal_set_transformed(bool value); + public: + + // bool concurrent = 21 [json_name = "concurrent"]; + void clear_concurrent(); + bool concurrent() const; + void set_concurrent(bool value); + private: + bool _internal_concurrent() const; + void _internal_set_concurrent(bool value); + public: + + // bool if_not_exists = 22 [json_name = "if_not_exists"]; + void clear_if_not_exists(); + bool if_not_exists() const; + void set_if_not_exists(bool value); + private: + bool _internal_if_not_exists() const; + void _internal_set_if_not_exists(bool value); + public: + + // bool reset_default_tblspc = 23 [json_name = "reset_default_tblspc"]; + void clear_reset_default_tblspc(); + bool reset_default_tblspc() const; + void set_reset_default_tblspc(bool value); + private: + bool _internal_reset_default_tblspc() const; + void _internal_set_reset_default_tblspc(bool value); + public: + + // @@protoc_insertion_point(class_scope:pg_query.IndexStmt) + private: + class _Internal; + + template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; + typedef void InternalArenaConstructable_; + typedef void DestructorSkippable_; + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > index_params_; + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > index_including_params_; + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > options_; + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > exclude_op_names_; + ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr idxname_; + ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr access_method_; + ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr table_space_; + ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr idxcomment_; + ::pg_query::RangeVar* relation_; + ::pg_query::Node* where_clause_; + ::PROTOBUF_NAMESPACE_ID::uint32 index_oid_; + ::PROTOBUF_NAMESPACE_ID::uint32 old_node_; + ::PROTOBUF_NAMESPACE_ID::uint32 old_create_subid_; + ::PROTOBUF_NAMESPACE_ID::uint32 old_first_relfilenode_subid_; + bool unique_; + bool primary_; + bool isconstraint_; + bool deferrable_; + bool initdeferred_; + bool transformed_; + bool concurrent_; + bool if_not_exists_; + bool reset_default_tblspc_; + mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; + friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; +}; +// ------------------------------------------------------------------- + +class CreateFunctionStmt PROTOBUF_FINAL : + public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.CreateFunctionStmt) */ { + public: + inline CreateFunctionStmt() : CreateFunctionStmt(nullptr) {} + virtual ~CreateFunctionStmt(); + + CreateFunctionStmt(const CreateFunctionStmt& from); + CreateFunctionStmt(CreateFunctionStmt&& from) noexcept + : CreateFunctionStmt() { + *this = ::std::move(from); + } + + inline CreateFunctionStmt& operator=(const CreateFunctionStmt& from) { + CopyFrom(from); + return *this; + } + inline CreateFunctionStmt& operator=(CreateFunctionStmt&& from) noexcept { + if (GetArena() == from.GetArena()) { + if (this != &from) InternalSwap(&from); + } else { + CopyFrom(from); + } + return *this; + } + + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { + return GetDescriptor(); + } + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { + return GetMetadataStatic().descriptor; + } + static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { + return GetMetadataStatic().reflection; + } + static const CreateFunctionStmt& default_instance(); + + static inline const CreateFunctionStmt* internal_default_instance() { + return reinterpret_cast( + &_CreateFunctionStmt_default_instance_); + } + static constexpr int kIndexInFileMessages = + 86; + + friend void swap(CreateFunctionStmt& a, CreateFunctionStmt& b) { + a.Swap(&b); + } + inline void Swap(CreateFunctionStmt* other) { + if (other == this) return; + if (GetArena() == other->GetArena()) { + InternalSwap(other); + } else { + ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); + } + } + void UnsafeArenaSwap(CreateFunctionStmt* other) { + if (other == this) return; + GOOGLE_DCHECK(GetArena() == other->GetArena()); + InternalSwap(other); + } + + // implements Message ---------------------------------------------- + + inline CreateFunctionStmt* New() const final { + return CreateMaybeMessage(nullptr); + } + + CreateFunctionStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { + return CreateMaybeMessage(arena); + } + void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void CopyFrom(const CreateFunctionStmt& from); + void MergeFrom(const CreateFunctionStmt& from); + PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; + bool IsInitialized() const final; + + size_t ByteSizeLong() const final; + const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; + ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( + ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; + int GetCachedSize() const final { return _cached_size_.Get(); } + + private: + inline void SharedCtor(); + inline void SharedDtor(); + void SetCachedSize(int size) const final; + void InternalSwap(CreateFunctionStmt* other); + friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; + static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { + return "pg_query.CreateFunctionStmt"; + } + protected: + explicit CreateFunctionStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena); + private: + static void ArenaDtor(void* object); + inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); + public: + + ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; + private: + static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { + ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); + return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; + } + + public: + + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + + enum : int { + kFuncnameFieldNumber = 3, + kParametersFieldNumber = 4, + kOptionsFieldNumber = 6, + kReturnTypeFieldNumber = 5, + kIsProcedureFieldNumber = 1, + kReplaceFieldNumber = 2, + }; + // repeated .pg_query.Node funcname = 3 [json_name = "funcname"]; + int funcname_size() const; + private: + int _internal_funcname_size() const; + public: + void clear_funcname(); + ::pg_query::Node* mutable_funcname(int index); + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* + mutable_funcname(); + private: + const ::pg_query::Node& _internal_funcname(int index) const; + ::pg_query::Node* _internal_add_funcname(); + public: + const ::pg_query::Node& funcname(int index) const; + ::pg_query::Node* add_funcname(); + const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& + funcname() const; + + // repeated .pg_query.Node parameters = 4 [json_name = "parameters"]; + int parameters_size() const; + private: + int _internal_parameters_size() const; + public: + void clear_parameters(); + ::pg_query::Node* mutable_parameters(int index); + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* + mutable_parameters(); + private: + const ::pg_query::Node& _internal_parameters(int index) const; + ::pg_query::Node* _internal_add_parameters(); + public: + const ::pg_query::Node& parameters(int index) const; + ::pg_query::Node* add_parameters(); + const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& + parameters() const; + + // repeated .pg_query.Node options = 6 [json_name = "options"]; + int options_size() const; + private: + int _internal_options_size() const; + public: + void clear_options(); + ::pg_query::Node* mutable_options(int index); + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* + mutable_options(); + private: + const ::pg_query::Node& _internal_options(int index) const; + ::pg_query::Node* _internal_add_options(); + public: + const ::pg_query::Node& options(int index) const; + ::pg_query::Node* add_options(); + const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& + options() const; + + // .pg_query.TypeName return_type = 5 [json_name = "returnType"]; + bool has_return_type() const; + private: + bool _internal_has_return_type() const; + public: + void clear_return_type(); + const ::pg_query::TypeName& return_type() const; + ::pg_query::TypeName* release_return_type(); + ::pg_query::TypeName* mutable_return_type(); + void set_allocated_return_type(::pg_query::TypeName* return_type); + private: + const ::pg_query::TypeName& _internal_return_type() const; + ::pg_query::TypeName* _internal_mutable_return_type(); + public: + void unsafe_arena_set_allocated_return_type( + ::pg_query::TypeName* return_type); + ::pg_query::TypeName* unsafe_arena_release_return_type(); + + // bool is_procedure = 1 [json_name = "is_procedure"]; + void clear_is_procedure(); + bool is_procedure() const; + void set_is_procedure(bool value); + private: + bool _internal_is_procedure() const; + void _internal_set_is_procedure(bool value); + public: + + // bool replace = 2 [json_name = "replace"]; + void clear_replace(); + bool replace() const; + void set_replace(bool value); + private: + bool _internal_replace() const; + void _internal_set_replace(bool value); + public: + + // @@protoc_insertion_point(class_scope:pg_query.CreateFunctionStmt) + private: + class _Internal; + + template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; + typedef void InternalArenaConstructable_; + typedef void DestructorSkippable_; + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > funcname_; + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > parameters_; + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > options_; + ::pg_query::TypeName* return_type_; + bool is_procedure_; + bool replace_; + mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; + friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; +}; +// ------------------------------------------------------------------- + +class AlterFunctionStmt PROTOBUF_FINAL : + public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.AlterFunctionStmt) */ { + public: + inline AlterFunctionStmt() : AlterFunctionStmt(nullptr) {} + virtual ~AlterFunctionStmt(); + + AlterFunctionStmt(const AlterFunctionStmt& from); + AlterFunctionStmt(AlterFunctionStmt&& from) noexcept + : AlterFunctionStmt() { + *this = ::std::move(from); + } + + inline AlterFunctionStmt& operator=(const AlterFunctionStmt& from) { + CopyFrom(from); + return *this; + } + inline AlterFunctionStmt& operator=(AlterFunctionStmt&& from) noexcept { + if (GetArena() == from.GetArena()) { + if (this != &from) InternalSwap(&from); + } else { + CopyFrom(from); + } + return *this; + } + + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { + return GetDescriptor(); + } + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { + return GetMetadataStatic().descriptor; + } + static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { + return GetMetadataStatic().reflection; + } + static const AlterFunctionStmt& default_instance(); + + static inline const AlterFunctionStmt* internal_default_instance() { + return reinterpret_cast( + &_AlterFunctionStmt_default_instance_); + } + static constexpr int kIndexInFileMessages = + 87; + + friend void swap(AlterFunctionStmt& a, AlterFunctionStmt& b) { + a.Swap(&b); + } + inline void Swap(AlterFunctionStmt* other) { + if (other == this) return; + if (GetArena() == other->GetArena()) { + InternalSwap(other); + } else { + ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); + } + } + void UnsafeArenaSwap(AlterFunctionStmt* other) { + if (other == this) return; + GOOGLE_DCHECK(GetArena() == other->GetArena()); + InternalSwap(other); + } + + // implements Message ---------------------------------------------- + + inline AlterFunctionStmt* New() const final { + return CreateMaybeMessage(nullptr); + } + + AlterFunctionStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { + return CreateMaybeMessage(arena); + } + void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void CopyFrom(const AlterFunctionStmt& from); + void MergeFrom(const AlterFunctionStmt& from); + PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; + bool IsInitialized() const final; + + size_t ByteSizeLong() const final; + const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; + ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( + ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; + int GetCachedSize() const final { return _cached_size_.Get(); } + + private: + inline void SharedCtor(); + inline void SharedDtor(); + void SetCachedSize(int size) const final; + void InternalSwap(AlterFunctionStmt* other); + friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; + static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { + return "pg_query.AlterFunctionStmt"; + } + protected: + explicit AlterFunctionStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena); + private: + static void ArenaDtor(void* object); + inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); + public: + + ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; + private: + static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { + ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); + return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; + } + + public: + + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + + enum : int { + kActionsFieldNumber = 3, + kFuncFieldNumber = 2, + kObjtypeFieldNumber = 1, + }; + // repeated .pg_query.Node actions = 3 [json_name = "actions"]; + int actions_size() const; + private: + int _internal_actions_size() const; + public: + void clear_actions(); + ::pg_query::Node* mutable_actions(int index); + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* + mutable_actions(); + private: + const ::pg_query::Node& _internal_actions(int index) const; + ::pg_query::Node* _internal_add_actions(); + public: + const ::pg_query::Node& actions(int index) const; + ::pg_query::Node* add_actions(); + const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& + actions() const; + + // .pg_query.ObjectWithArgs func = 2 [json_name = "func"]; + bool has_func() const; + private: + bool _internal_has_func() const; + public: + void clear_func(); + const ::pg_query::ObjectWithArgs& func() const; + ::pg_query::ObjectWithArgs* release_func(); + ::pg_query::ObjectWithArgs* mutable_func(); + void set_allocated_func(::pg_query::ObjectWithArgs* func); + private: + const ::pg_query::ObjectWithArgs& _internal_func() const; + ::pg_query::ObjectWithArgs* _internal_mutable_func(); + public: + void unsafe_arena_set_allocated_func( + ::pg_query::ObjectWithArgs* func); + ::pg_query::ObjectWithArgs* unsafe_arena_release_func(); + + // .pg_query.ObjectType objtype = 1 [json_name = "objtype"]; + void clear_objtype(); + ::pg_query::ObjectType objtype() const; + void set_objtype(::pg_query::ObjectType value); + private: + ::pg_query::ObjectType _internal_objtype() const; + void _internal_set_objtype(::pg_query::ObjectType value); + public: + + // @@protoc_insertion_point(class_scope:pg_query.AlterFunctionStmt) + private: + class _Internal; + + template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; + typedef void InternalArenaConstructable_; + typedef void DestructorSkippable_; + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > actions_; + ::pg_query::ObjectWithArgs* func_; + int objtype_; + mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; + friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; +}; +// ------------------------------------------------------------------- + +class DoStmt PROTOBUF_FINAL : + public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.DoStmt) */ { + public: + inline DoStmt() : DoStmt(nullptr) {} + virtual ~DoStmt(); + + DoStmt(const DoStmt& from); + DoStmt(DoStmt&& from) noexcept + : DoStmt() { + *this = ::std::move(from); + } + + inline DoStmt& operator=(const DoStmt& from) { + CopyFrom(from); + return *this; + } + inline DoStmt& operator=(DoStmt&& from) noexcept { + if (GetArena() == from.GetArena()) { + if (this != &from) InternalSwap(&from); + } else { + CopyFrom(from); + } + return *this; + } + + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { + return GetDescriptor(); + } + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { + return GetMetadataStatic().descriptor; + } + static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { + return GetMetadataStatic().reflection; + } + static const DoStmt& default_instance(); + + static inline const DoStmt* internal_default_instance() { + return reinterpret_cast( + &_DoStmt_default_instance_); + } + static constexpr int kIndexInFileMessages = + 88; + + friend void swap(DoStmt& a, DoStmt& b) { + a.Swap(&b); + } + inline void Swap(DoStmt* other) { + if (other == this) return; + if (GetArena() == other->GetArena()) { + InternalSwap(other); + } else { + ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); + } + } + void UnsafeArenaSwap(DoStmt* other) { + if (other == this) return; + GOOGLE_DCHECK(GetArena() == other->GetArena()); + InternalSwap(other); + } + + // implements Message ---------------------------------------------- + + inline DoStmt* New() const final { + return CreateMaybeMessage(nullptr); + } + + DoStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { + return CreateMaybeMessage(arena); + } + void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void CopyFrom(const DoStmt& from); + void MergeFrom(const DoStmt& from); + PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; + bool IsInitialized() const final; + + size_t ByteSizeLong() const final; + const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; + ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( + ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; + int GetCachedSize() const final { return _cached_size_.Get(); } + + private: + inline void SharedCtor(); + inline void SharedDtor(); + void SetCachedSize(int size) const final; + void InternalSwap(DoStmt* other); + friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; + static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { + return "pg_query.DoStmt"; + } + protected: + explicit DoStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena); + private: + static void ArenaDtor(void* object); + inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); + public: + + ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; + private: + static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { + ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); + return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; + } + + public: + + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + + enum : int { + kArgsFieldNumber = 1, + }; + // repeated .pg_query.Node args = 1 [json_name = "args"]; + int args_size() const; + private: + int _internal_args_size() const; + public: + void clear_args(); + ::pg_query::Node* mutable_args(int index); + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* + mutable_args(); + private: + const ::pg_query::Node& _internal_args(int index) const; + ::pg_query::Node* _internal_add_args(); + public: + const ::pg_query::Node& args(int index) const; + ::pg_query::Node* add_args(); + const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& + args() const; + + // @@protoc_insertion_point(class_scope:pg_query.DoStmt) + private: + class _Internal; + + template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; + typedef void InternalArenaConstructable_; + typedef void DestructorSkippable_; + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > args_; + mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; + friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; +}; +// ------------------------------------------------------------------- + +class RenameStmt PROTOBUF_FINAL : + public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.RenameStmt) */ { + public: + inline RenameStmt() : RenameStmt(nullptr) {} + virtual ~RenameStmt(); + + RenameStmt(const RenameStmt& from); + RenameStmt(RenameStmt&& from) noexcept + : RenameStmt() { + *this = ::std::move(from); + } + + inline RenameStmt& operator=(const RenameStmt& from) { + CopyFrom(from); + return *this; + } + inline RenameStmt& operator=(RenameStmt&& from) noexcept { + if (GetArena() == from.GetArena()) { + if (this != &from) InternalSwap(&from); + } else { + CopyFrom(from); + } + return *this; + } + + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { + return GetDescriptor(); + } + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { + return GetMetadataStatic().descriptor; + } + static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { + return GetMetadataStatic().reflection; + } + static const RenameStmt& default_instance(); + + static inline const RenameStmt* internal_default_instance() { + return reinterpret_cast( + &_RenameStmt_default_instance_); + } + static constexpr int kIndexInFileMessages = + 89; + + friend void swap(RenameStmt& a, RenameStmt& b) { + a.Swap(&b); + } + inline void Swap(RenameStmt* other) { + if (other == this) return; + if (GetArena() == other->GetArena()) { + InternalSwap(other); + } else { + ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); + } + } + void UnsafeArenaSwap(RenameStmt* other) { + if (other == this) return; + GOOGLE_DCHECK(GetArena() == other->GetArena()); + InternalSwap(other); + } + + // implements Message ---------------------------------------------- + + inline RenameStmt* New() const final { + return CreateMaybeMessage(nullptr); + } + + RenameStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { + return CreateMaybeMessage(arena); + } + void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void CopyFrom(const RenameStmt& from); + void MergeFrom(const RenameStmt& from); + PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; + bool IsInitialized() const final; + + size_t ByteSizeLong() const final; + const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; + ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( + ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; + int GetCachedSize() const final { return _cached_size_.Get(); } + + private: + inline void SharedCtor(); + inline void SharedDtor(); + void SetCachedSize(int size) const final; + void InternalSwap(RenameStmt* other); + friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; + static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { + return "pg_query.RenameStmt"; + } + protected: + explicit RenameStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena); + private: + static void ArenaDtor(void* object); + inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); + public: + + ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; + private: + static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { + ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); + return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; + } + + public: + + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + + enum : int { + kSubnameFieldNumber = 5, + kNewnameFieldNumber = 6, + kRelationFieldNumber = 3, + kObjectFieldNumber = 4, + kRenameTypeFieldNumber = 1, + kRelationTypeFieldNumber = 2, + kBehaviorFieldNumber = 7, + kMissingOkFieldNumber = 8, + }; + // string subname = 5 [json_name = "subname"]; + void clear_subname(); + const std::string& subname() const; + void set_subname(const std::string& value); + void set_subname(std::string&& value); + void set_subname(const char* value); + void set_subname(const char* value, size_t size); + std::string* mutable_subname(); + std::string* release_subname(); + void set_allocated_subname(std::string* subname); + private: + const std::string& _internal_subname() const; + void _internal_set_subname(const std::string& value); + std::string* _internal_mutable_subname(); + public: + + // string newname = 6 [json_name = "newname"]; + void clear_newname(); + const std::string& newname() const; + void set_newname(const std::string& value); + void set_newname(std::string&& value); + void set_newname(const char* value); + void set_newname(const char* value, size_t size); + std::string* mutable_newname(); + std::string* release_newname(); + void set_allocated_newname(std::string* newname); + private: + const std::string& _internal_newname() const; + void _internal_set_newname(const std::string& value); + std::string* _internal_mutable_newname(); + public: + + // .pg_query.RangeVar relation = 3 [json_name = "relation"]; + bool has_relation() const; + private: + bool _internal_has_relation() const; + public: + void clear_relation(); + const ::pg_query::RangeVar& relation() const; + ::pg_query::RangeVar* release_relation(); + ::pg_query::RangeVar* mutable_relation(); + void set_allocated_relation(::pg_query::RangeVar* relation); + private: + const ::pg_query::RangeVar& _internal_relation() const; + ::pg_query::RangeVar* _internal_mutable_relation(); + public: + void unsafe_arena_set_allocated_relation( + ::pg_query::RangeVar* relation); + ::pg_query::RangeVar* unsafe_arena_release_relation(); + + // .pg_query.Node object = 4 [json_name = "object"]; + bool has_object() const; + private: + bool _internal_has_object() const; + public: + void clear_object(); + const ::pg_query::Node& object() const; + ::pg_query::Node* release_object(); + ::pg_query::Node* mutable_object(); + void set_allocated_object(::pg_query::Node* object); + private: + const ::pg_query::Node& _internal_object() const; + ::pg_query::Node* _internal_mutable_object(); + public: + void unsafe_arena_set_allocated_object( + ::pg_query::Node* object); + ::pg_query::Node* unsafe_arena_release_object(); + + // .pg_query.ObjectType rename_type = 1 [json_name = "renameType"]; + void clear_rename_type(); + ::pg_query::ObjectType rename_type() const; + void set_rename_type(::pg_query::ObjectType value); + private: + ::pg_query::ObjectType _internal_rename_type() const; + void _internal_set_rename_type(::pg_query::ObjectType value); + public: + + // .pg_query.ObjectType relation_type = 2 [json_name = "relationType"]; + void clear_relation_type(); + ::pg_query::ObjectType relation_type() const; + void set_relation_type(::pg_query::ObjectType value); + private: + ::pg_query::ObjectType _internal_relation_type() const; + void _internal_set_relation_type(::pg_query::ObjectType value); + public: + + // .pg_query.DropBehavior behavior = 7 [json_name = "behavior"]; + void clear_behavior(); + ::pg_query::DropBehavior behavior() const; + void set_behavior(::pg_query::DropBehavior value); + private: + ::pg_query::DropBehavior _internal_behavior() const; + void _internal_set_behavior(::pg_query::DropBehavior value); + public: + + // bool missing_ok = 8 [json_name = "missing_ok"]; + void clear_missing_ok(); + bool missing_ok() const; + void set_missing_ok(bool value); + private: + bool _internal_missing_ok() const; + void _internal_set_missing_ok(bool value); + public: + + // @@protoc_insertion_point(class_scope:pg_query.RenameStmt) + private: + class _Internal; + + template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; + typedef void InternalArenaConstructable_; + typedef void DestructorSkippable_; + ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr subname_; + ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr newname_; + ::pg_query::RangeVar* relation_; + ::pg_query::Node* object_; + int rename_type_; + int relation_type_; + int behavior_; + bool missing_ok_; + mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; + friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; +}; +// ------------------------------------------------------------------- + +class RuleStmt PROTOBUF_FINAL : + public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.RuleStmt) */ { + public: + inline RuleStmt() : RuleStmt(nullptr) {} + virtual ~RuleStmt(); + + RuleStmt(const RuleStmt& from); + RuleStmt(RuleStmt&& from) noexcept + : RuleStmt() { + *this = ::std::move(from); + } + + inline RuleStmt& operator=(const RuleStmt& from) { + CopyFrom(from); + return *this; + } + inline RuleStmt& operator=(RuleStmt&& from) noexcept { + if (GetArena() == from.GetArena()) { + if (this != &from) InternalSwap(&from); + } else { + CopyFrom(from); + } + return *this; + } + + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { + return GetDescriptor(); + } + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { + return GetMetadataStatic().descriptor; + } + static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { + return GetMetadataStatic().reflection; + } + static const RuleStmt& default_instance(); + + static inline const RuleStmt* internal_default_instance() { + return reinterpret_cast( + &_RuleStmt_default_instance_); + } + static constexpr int kIndexInFileMessages = + 90; + + friend void swap(RuleStmt& a, RuleStmt& b) { + a.Swap(&b); + } + inline void Swap(RuleStmt* other) { + if (other == this) return; + if (GetArena() == other->GetArena()) { + InternalSwap(other); + } else { + ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); + } + } + void UnsafeArenaSwap(RuleStmt* other) { + if (other == this) return; + GOOGLE_DCHECK(GetArena() == other->GetArena()); + InternalSwap(other); + } + + // implements Message ---------------------------------------------- + + inline RuleStmt* New() const final { + return CreateMaybeMessage(nullptr); + } + + RuleStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { + return CreateMaybeMessage(arena); + } + void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void CopyFrom(const RuleStmt& from); + void MergeFrom(const RuleStmt& from); + PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; + bool IsInitialized() const final; + + size_t ByteSizeLong() const final; + const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; + ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( + ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; + int GetCachedSize() const final { return _cached_size_.Get(); } + + private: + inline void SharedCtor(); + inline void SharedDtor(); + void SetCachedSize(int size) const final; + void InternalSwap(RuleStmt* other); + friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; + static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { + return "pg_query.RuleStmt"; + } + protected: + explicit RuleStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena); + private: + static void ArenaDtor(void* object); + inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); + public: + + ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; + private: + static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { + ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); + return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; + } + + public: + + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + + enum : int { + kActionsFieldNumber = 6, + kRulenameFieldNumber = 2, + kRelationFieldNumber = 1, + kWhereClauseFieldNumber = 3, + kEventFieldNumber = 4, + kInsteadFieldNumber = 5, + kReplaceFieldNumber = 7, + }; + // repeated .pg_query.Node actions = 6 [json_name = "actions"]; + int actions_size() const; + private: + int _internal_actions_size() const; + public: + void clear_actions(); + ::pg_query::Node* mutable_actions(int index); + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* + mutable_actions(); + private: + const ::pg_query::Node& _internal_actions(int index) const; + ::pg_query::Node* _internal_add_actions(); + public: + const ::pg_query::Node& actions(int index) const; + ::pg_query::Node* add_actions(); + const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& + actions() const; + + // string rulename = 2 [json_name = "rulename"]; + void clear_rulename(); + const std::string& rulename() const; + void set_rulename(const std::string& value); + void set_rulename(std::string&& value); + void set_rulename(const char* value); + void set_rulename(const char* value, size_t size); + std::string* mutable_rulename(); + std::string* release_rulename(); + void set_allocated_rulename(std::string* rulename); + private: + const std::string& _internal_rulename() const; + void _internal_set_rulename(const std::string& value); + std::string* _internal_mutable_rulename(); + public: + + // .pg_query.RangeVar relation = 1 [json_name = "relation"]; + bool has_relation() const; + private: + bool _internal_has_relation() const; + public: + void clear_relation(); + const ::pg_query::RangeVar& relation() const; + ::pg_query::RangeVar* release_relation(); + ::pg_query::RangeVar* mutable_relation(); + void set_allocated_relation(::pg_query::RangeVar* relation); + private: + const ::pg_query::RangeVar& _internal_relation() const; + ::pg_query::RangeVar* _internal_mutable_relation(); + public: + void unsafe_arena_set_allocated_relation( + ::pg_query::RangeVar* relation); + ::pg_query::RangeVar* unsafe_arena_release_relation(); + + // .pg_query.Node where_clause = 3 [json_name = "whereClause"]; + bool has_where_clause() const; + private: + bool _internal_has_where_clause() const; + public: + void clear_where_clause(); + const ::pg_query::Node& where_clause() const; + ::pg_query::Node* release_where_clause(); + ::pg_query::Node* mutable_where_clause(); + void set_allocated_where_clause(::pg_query::Node* where_clause); + private: + const ::pg_query::Node& _internal_where_clause() const; + ::pg_query::Node* _internal_mutable_where_clause(); + public: + void unsafe_arena_set_allocated_where_clause( + ::pg_query::Node* where_clause); + ::pg_query::Node* unsafe_arena_release_where_clause(); + + // .pg_query.CmdType event = 4 [json_name = "event"]; + void clear_event(); + ::pg_query::CmdType event() const; + void set_event(::pg_query::CmdType value); + private: + ::pg_query::CmdType _internal_event() const; + void _internal_set_event(::pg_query::CmdType value); + public: + + // bool instead = 5 [json_name = "instead"]; + void clear_instead(); + bool instead() const; + void set_instead(bool value); + private: + bool _internal_instead() const; + void _internal_set_instead(bool value); + public: + + // bool replace = 7 [json_name = "replace"]; + void clear_replace(); + bool replace() const; + void set_replace(bool value); + private: + bool _internal_replace() const; + void _internal_set_replace(bool value); + public: + + // @@protoc_insertion_point(class_scope:pg_query.RuleStmt) + private: + class _Internal; + + template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; + typedef void InternalArenaConstructable_; + typedef void DestructorSkippable_; + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > actions_; + ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr rulename_; + ::pg_query::RangeVar* relation_; + ::pg_query::Node* where_clause_; + int event_; + bool instead_; + bool replace_; + mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; + friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; +}; +// ------------------------------------------------------------------- + +class NotifyStmt PROTOBUF_FINAL : + public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.NotifyStmt) */ { + public: + inline NotifyStmt() : NotifyStmt(nullptr) {} + virtual ~NotifyStmt(); + + NotifyStmt(const NotifyStmt& from); + NotifyStmt(NotifyStmt&& from) noexcept + : NotifyStmt() { + *this = ::std::move(from); + } + + inline NotifyStmt& operator=(const NotifyStmt& from) { + CopyFrom(from); + return *this; + } + inline NotifyStmt& operator=(NotifyStmt&& from) noexcept { + if (GetArena() == from.GetArena()) { + if (this != &from) InternalSwap(&from); + } else { + CopyFrom(from); + } + return *this; + } + + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { + return GetDescriptor(); + } + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { + return GetMetadataStatic().descriptor; + } + static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { + return GetMetadataStatic().reflection; + } + static const NotifyStmt& default_instance(); + + static inline const NotifyStmt* internal_default_instance() { + return reinterpret_cast( + &_NotifyStmt_default_instance_); + } + static constexpr int kIndexInFileMessages = + 91; + + friend void swap(NotifyStmt& a, NotifyStmt& b) { + a.Swap(&b); + } + inline void Swap(NotifyStmt* other) { + if (other == this) return; + if (GetArena() == other->GetArena()) { + InternalSwap(other); + } else { + ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); + } + } + void UnsafeArenaSwap(NotifyStmt* other) { + if (other == this) return; + GOOGLE_DCHECK(GetArena() == other->GetArena()); + InternalSwap(other); + } + + // implements Message ---------------------------------------------- + + inline NotifyStmt* New() const final { + return CreateMaybeMessage(nullptr); + } + + NotifyStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { + return CreateMaybeMessage(arena); + } + void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void CopyFrom(const NotifyStmt& from); + void MergeFrom(const NotifyStmt& from); + PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; + bool IsInitialized() const final; + + size_t ByteSizeLong() const final; + const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; + ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( + ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; + int GetCachedSize() const final { return _cached_size_.Get(); } + + private: + inline void SharedCtor(); + inline void SharedDtor(); + void SetCachedSize(int size) const final; + void InternalSwap(NotifyStmt* other); + friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; + static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { + return "pg_query.NotifyStmt"; + } + protected: + explicit NotifyStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena); + private: + static void ArenaDtor(void* object); + inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); + public: + + ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; + private: + static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { + ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); + return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; + } + + public: + + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + + enum : int { + kConditionnameFieldNumber = 1, + kPayloadFieldNumber = 2, + }; + // string conditionname = 1 [json_name = "conditionname"]; + void clear_conditionname(); + const std::string& conditionname() const; + void set_conditionname(const std::string& value); + void set_conditionname(std::string&& value); + void set_conditionname(const char* value); + void set_conditionname(const char* value, size_t size); + std::string* mutable_conditionname(); + std::string* release_conditionname(); + void set_allocated_conditionname(std::string* conditionname); + private: + const std::string& _internal_conditionname() const; + void _internal_set_conditionname(const std::string& value); + std::string* _internal_mutable_conditionname(); + public: + + // string payload = 2 [json_name = "payload"]; + void clear_payload(); + const std::string& payload() const; + void set_payload(const std::string& value); + void set_payload(std::string&& value); + void set_payload(const char* value); + void set_payload(const char* value, size_t size); + std::string* mutable_payload(); + std::string* release_payload(); + void set_allocated_payload(std::string* payload); + private: + const std::string& _internal_payload() const; + void _internal_set_payload(const std::string& value); + std::string* _internal_mutable_payload(); + public: + + // @@protoc_insertion_point(class_scope:pg_query.NotifyStmt) + private: + class _Internal; + + template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; + typedef void InternalArenaConstructable_; + typedef void DestructorSkippable_; + ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr conditionname_; + ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr payload_; + mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; + friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; +}; +// ------------------------------------------------------------------- + +class ListenStmt PROTOBUF_FINAL : + public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.ListenStmt) */ { + public: + inline ListenStmt() : ListenStmt(nullptr) {} + virtual ~ListenStmt(); + + ListenStmt(const ListenStmt& from); + ListenStmt(ListenStmt&& from) noexcept + : ListenStmt() { + *this = ::std::move(from); + } + + inline ListenStmt& operator=(const ListenStmt& from) { + CopyFrom(from); + return *this; + } + inline ListenStmt& operator=(ListenStmt&& from) noexcept { + if (GetArena() == from.GetArena()) { + if (this != &from) InternalSwap(&from); + } else { + CopyFrom(from); + } + return *this; + } + + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { + return GetDescriptor(); + } + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { + return GetMetadataStatic().descriptor; + } + static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { + return GetMetadataStatic().reflection; + } + static const ListenStmt& default_instance(); + + static inline const ListenStmt* internal_default_instance() { + return reinterpret_cast( + &_ListenStmt_default_instance_); + } + static constexpr int kIndexInFileMessages = + 92; + + friend void swap(ListenStmt& a, ListenStmt& b) { + a.Swap(&b); + } + inline void Swap(ListenStmt* other) { + if (other == this) return; + if (GetArena() == other->GetArena()) { + InternalSwap(other); + } else { + ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); + } + } + void UnsafeArenaSwap(ListenStmt* other) { + if (other == this) return; + GOOGLE_DCHECK(GetArena() == other->GetArena()); + InternalSwap(other); + } + + // implements Message ---------------------------------------------- + + inline ListenStmt* New() const final { + return CreateMaybeMessage(nullptr); + } + + ListenStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { + return CreateMaybeMessage(arena); + } + void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void CopyFrom(const ListenStmt& from); + void MergeFrom(const ListenStmt& from); + PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; + bool IsInitialized() const final; + + size_t ByteSizeLong() const final; + const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; + ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( + ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; + int GetCachedSize() const final { return _cached_size_.Get(); } + + private: + inline void SharedCtor(); + inline void SharedDtor(); + void SetCachedSize(int size) const final; + void InternalSwap(ListenStmt* other); + friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; + static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { + return "pg_query.ListenStmt"; + } + protected: + explicit ListenStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena); + private: + static void ArenaDtor(void* object); + inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); + public: + + ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; + private: + static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { + ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); + return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; + } + + public: + + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + + enum : int { + kConditionnameFieldNumber = 1, + }; + // string conditionname = 1 [json_name = "conditionname"]; + void clear_conditionname(); + const std::string& conditionname() const; + void set_conditionname(const std::string& value); + void set_conditionname(std::string&& value); + void set_conditionname(const char* value); + void set_conditionname(const char* value, size_t size); + std::string* mutable_conditionname(); + std::string* release_conditionname(); + void set_allocated_conditionname(std::string* conditionname); + private: + const std::string& _internal_conditionname() const; + void _internal_set_conditionname(const std::string& value); + std::string* _internal_mutable_conditionname(); + public: + + // @@protoc_insertion_point(class_scope:pg_query.ListenStmt) + private: + class _Internal; + + template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; + typedef void InternalArenaConstructable_; + typedef void DestructorSkippable_; + ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr conditionname_; + mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; + friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; +}; +// ------------------------------------------------------------------- + +class UnlistenStmt PROTOBUF_FINAL : + public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.UnlistenStmt) */ { + public: + inline UnlistenStmt() : UnlistenStmt(nullptr) {} + virtual ~UnlistenStmt(); + + UnlistenStmt(const UnlistenStmt& from); + UnlistenStmt(UnlistenStmt&& from) noexcept + : UnlistenStmt() { + *this = ::std::move(from); + } + + inline UnlistenStmt& operator=(const UnlistenStmt& from) { + CopyFrom(from); + return *this; + } + inline UnlistenStmt& operator=(UnlistenStmt&& from) noexcept { + if (GetArena() == from.GetArena()) { + if (this != &from) InternalSwap(&from); + } else { + CopyFrom(from); + } + return *this; + } + + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { + return GetDescriptor(); + } + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { + return GetMetadataStatic().descriptor; + } + static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { + return GetMetadataStatic().reflection; + } + static const UnlistenStmt& default_instance(); + + static inline const UnlistenStmt* internal_default_instance() { + return reinterpret_cast( + &_UnlistenStmt_default_instance_); + } + static constexpr int kIndexInFileMessages = + 93; + + friend void swap(UnlistenStmt& a, UnlistenStmt& b) { + a.Swap(&b); + } + inline void Swap(UnlistenStmt* other) { + if (other == this) return; + if (GetArena() == other->GetArena()) { + InternalSwap(other); + } else { + ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); + } + } + void UnsafeArenaSwap(UnlistenStmt* other) { + if (other == this) return; + GOOGLE_DCHECK(GetArena() == other->GetArena()); + InternalSwap(other); + } + + // implements Message ---------------------------------------------- + + inline UnlistenStmt* New() const final { + return CreateMaybeMessage(nullptr); + } + + UnlistenStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { + return CreateMaybeMessage(arena); + } + void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void CopyFrom(const UnlistenStmt& from); + void MergeFrom(const UnlistenStmt& from); + PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; + bool IsInitialized() const final; + + size_t ByteSizeLong() const final; + const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; + ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( + ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; + int GetCachedSize() const final { return _cached_size_.Get(); } + + private: + inline void SharedCtor(); + inline void SharedDtor(); + void SetCachedSize(int size) const final; + void InternalSwap(UnlistenStmt* other); + friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; + static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { + return "pg_query.UnlistenStmt"; + } + protected: + explicit UnlistenStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena); + private: + static void ArenaDtor(void* object); + inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); + public: + + ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; + private: + static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { + ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); + return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; + } + + public: + + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + + enum : int { + kConditionnameFieldNumber = 1, + }; + // string conditionname = 1 [json_name = "conditionname"]; + void clear_conditionname(); + const std::string& conditionname() const; + void set_conditionname(const std::string& value); + void set_conditionname(std::string&& value); + void set_conditionname(const char* value); + void set_conditionname(const char* value, size_t size); + std::string* mutable_conditionname(); + std::string* release_conditionname(); + void set_allocated_conditionname(std::string* conditionname); + private: + const std::string& _internal_conditionname() const; + void _internal_set_conditionname(const std::string& value); + std::string* _internal_mutable_conditionname(); + public: + + // @@protoc_insertion_point(class_scope:pg_query.UnlistenStmt) + private: + class _Internal; + + template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; + typedef void InternalArenaConstructable_; + typedef void DestructorSkippable_; + ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr conditionname_; + mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; + friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; +}; +// ------------------------------------------------------------------- + +class TransactionStmt PROTOBUF_FINAL : + public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.TransactionStmt) */ { + public: + inline TransactionStmt() : TransactionStmt(nullptr) {} + virtual ~TransactionStmt(); + + TransactionStmt(const TransactionStmt& from); + TransactionStmt(TransactionStmt&& from) noexcept + : TransactionStmt() { + *this = ::std::move(from); + } + + inline TransactionStmt& operator=(const TransactionStmt& from) { + CopyFrom(from); + return *this; + } + inline TransactionStmt& operator=(TransactionStmt&& from) noexcept { + if (GetArena() == from.GetArena()) { + if (this != &from) InternalSwap(&from); + } else { + CopyFrom(from); + } + return *this; + } + + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { + return GetDescriptor(); + } + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { + return GetMetadataStatic().descriptor; + } + static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { + return GetMetadataStatic().reflection; + } + static const TransactionStmt& default_instance(); + + static inline const TransactionStmt* internal_default_instance() { + return reinterpret_cast( + &_TransactionStmt_default_instance_); + } + static constexpr int kIndexInFileMessages = + 94; + + friend void swap(TransactionStmt& a, TransactionStmt& b) { + a.Swap(&b); + } + inline void Swap(TransactionStmt* other) { + if (other == this) return; + if (GetArena() == other->GetArena()) { + InternalSwap(other); + } else { + ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); + } + } + void UnsafeArenaSwap(TransactionStmt* other) { + if (other == this) return; + GOOGLE_DCHECK(GetArena() == other->GetArena()); + InternalSwap(other); + } + + // implements Message ---------------------------------------------- + + inline TransactionStmt* New() const final { + return CreateMaybeMessage(nullptr); + } + + TransactionStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { + return CreateMaybeMessage(arena); + } + void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void CopyFrom(const TransactionStmt& from); + void MergeFrom(const TransactionStmt& from); + PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; + bool IsInitialized() const final; + + size_t ByteSizeLong() const final; + const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; + ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( + ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; + int GetCachedSize() const final { return _cached_size_.Get(); } + + private: + inline void SharedCtor(); + inline void SharedDtor(); + void SetCachedSize(int size) const final; + void InternalSwap(TransactionStmt* other); + friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; + static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { + return "pg_query.TransactionStmt"; + } + protected: + explicit TransactionStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena); + private: + static void ArenaDtor(void* object); + inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); + public: + + ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; + private: + static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { + ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); + return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; + } + + public: + + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + + enum : int { + kOptionsFieldNumber = 2, + kSavepointNameFieldNumber = 3, + kGidFieldNumber = 4, + kKindFieldNumber = 1, + kChainFieldNumber = 5, + }; + // repeated .pg_query.Node options = 2 [json_name = "options"]; + int options_size() const; + private: + int _internal_options_size() const; + public: + void clear_options(); + ::pg_query::Node* mutable_options(int index); + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* + mutable_options(); + private: + const ::pg_query::Node& _internal_options(int index) const; + ::pg_query::Node* _internal_add_options(); + public: + const ::pg_query::Node& options(int index) const; + ::pg_query::Node* add_options(); + const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& + options() const; + + // string savepoint_name = 3 [json_name = "savepoint_name"]; + void clear_savepoint_name(); + const std::string& savepoint_name() const; + void set_savepoint_name(const std::string& value); + void set_savepoint_name(std::string&& value); + void set_savepoint_name(const char* value); + void set_savepoint_name(const char* value, size_t size); + std::string* mutable_savepoint_name(); + std::string* release_savepoint_name(); + void set_allocated_savepoint_name(std::string* savepoint_name); + private: + const std::string& _internal_savepoint_name() const; + void _internal_set_savepoint_name(const std::string& value); + std::string* _internal_mutable_savepoint_name(); + public: + + // string gid = 4 [json_name = "gid"]; + void clear_gid(); + const std::string& gid() const; + void set_gid(const std::string& value); + void set_gid(std::string&& value); + void set_gid(const char* value); + void set_gid(const char* value, size_t size); + std::string* mutable_gid(); + std::string* release_gid(); + void set_allocated_gid(std::string* gid); + private: + const std::string& _internal_gid() const; + void _internal_set_gid(const std::string& value); + std::string* _internal_mutable_gid(); + public: + + // .pg_query.TransactionStmtKind kind = 1 [json_name = "kind"]; + void clear_kind(); + ::pg_query::TransactionStmtKind kind() const; + void set_kind(::pg_query::TransactionStmtKind value); + private: + ::pg_query::TransactionStmtKind _internal_kind() const; + void _internal_set_kind(::pg_query::TransactionStmtKind value); + public: + + // bool chain = 5 [json_name = "chain"]; + void clear_chain(); + bool chain() const; + void set_chain(bool value); + private: + bool _internal_chain() const; + void _internal_set_chain(bool value); + public: + + // @@protoc_insertion_point(class_scope:pg_query.TransactionStmt) + private: + class _Internal; + + template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; + typedef void InternalArenaConstructable_; + typedef void DestructorSkippable_; + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > options_; + ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr savepoint_name_; + ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr gid_; + int kind_; + bool chain_; + mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; + friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; +}; +// ------------------------------------------------------------------- + +class ViewStmt PROTOBUF_FINAL : + public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.ViewStmt) */ { + public: + inline ViewStmt() : ViewStmt(nullptr) {} + virtual ~ViewStmt(); + + ViewStmt(const ViewStmt& from); + ViewStmt(ViewStmt&& from) noexcept + : ViewStmt() { + *this = ::std::move(from); + } + + inline ViewStmt& operator=(const ViewStmt& from) { + CopyFrom(from); + return *this; + } + inline ViewStmt& operator=(ViewStmt&& from) noexcept { + if (GetArena() == from.GetArena()) { + if (this != &from) InternalSwap(&from); + } else { + CopyFrom(from); + } + return *this; + } + + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { + return GetDescriptor(); + } + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { + return GetMetadataStatic().descriptor; + } + static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { + return GetMetadataStatic().reflection; + } + static const ViewStmt& default_instance(); + + static inline const ViewStmt* internal_default_instance() { + return reinterpret_cast( + &_ViewStmt_default_instance_); + } + static constexpr int kIndexInFileMessages = + 95; + + friend void swap(ViewStmt& a, ViewStmt& b) { + a.Swap(&b); + } + inline void Swap(ViewStmt* other) { + if (other == this) return; + if (GetArena() == other->GetArena()) { + InternalSwap(other); + } else { + ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); + } + } + void UnsafeArenaSwap(ViewStmt* other) { + if (other == this) return; + GOOGLE_DCHECK(GetArena() == other->GetArena()); + InternalSwap(other); + } + + // implements Message ---------------------------------------------- + + inline ViewStmt* New() const final { + return CreateMaybeMessage(nullptr); + } + + ViewStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { + return CreateMaybeMessage(arena); + } + void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void CopyFrom(const ViewStmt& from); + void MergeFrom(const ViewStmt& from); + PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; + bool IsInitialized() const final; + + size_t ByteSizeLong() const final; + const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; + ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( + ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; + int GetCachedSize() const final { return _cached_size_.Get(); } + + private: + inline void SharedCtor(); + inline void SharedDtor(); + void SetCachedSize(int size) const final; + void InternalSwap(ViewStmt* other); + friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; + static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { + return "pg_query.ViewStmt"; + } + protected: + explicit ViewStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena); + private: + static void ArenaDtor(void* object); + inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); + public: + + ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; + private: + static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { + ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); + return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; + } + + public: + + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + + enum : int { + kAliasesFieldNumber = 2, + kOptionsFieldNumber = 5, + kViewFieldNumber = 1, + kQueryFieldNumber = 3, + kReplaceFieldNumber = 4, + kWithCheckOptionFieldNumber = 6, + }; + // repeated .pg_query.Node aliases = 2 [json_name = "aliases"]; + int aliases_size() const; + private: + int _internal_aliases_size() const; + public: + void clear_aliases(); + ::pg_query::Node* mutable_aliases(int index); + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* + mutable_aliases(); + private: + const ::pg_query::Node& _internal_aliases(int index) const; + ::pg_query::Node* _internal_add_aliases(); + public: + const ::pg_query::Node& aliases(int index) const; + ::pg_query::Node* add_aliases(); + const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& + aliases() const; + + // repeated .pg_query.Node options = 5 [json_name = "options"]; + int options_size() const; + private: + int _internal_options_size() const; + public: + void clear_options(); + ::pg_query::Node* mutable_options(int index); + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* + mutable_options(); + private: + const ::pg_query::Node& _internal_options(int index) const; + ::pg_query::Node* _internal_add_options(); + public: + const ::pg_query::Node& options(int index) const; + ::pg_query::Node* add_options(); + const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& + options() const; + + // .pg_query.RangeVar view = 1 [json_name = "view"]; + bool has_view() const; + private: + bool _internal_has_view() const; + public: + void clear_view(); + const ::pg_query::RangeVar& view() const; + ::pg_query::RangeVar* release_view(); + ::pg_query::RangeVar* mutable_view(); + void set_allocated_view(::pg_query::RangeVar* view); + private: + const ::pg_query::RangeVar& _internal_view() const; + ::pg_query::RangeVar* _internal_mutable_view(); + public: + void unsafe_arena_set_allocated_view( + ::pg_query::RangeVar* view); + ::pg_query::RangeVar* unsafe_arena_release_view(); + + // .pg_query.Node query = 3 [json_name = "query"]; + bool has_query() const; + private: + bool _internal_has_query() const; + public: + void clear_query(); + const ::pg_query::Node& query() const; + ::pg_query::Node* release_query(); + ::pg_query::Node* mutable_query(); + void set_allocated_query(::pg_query::Node* query); + private: + const ::pg_query::Node& _internal_query() const; + ::pg_query::Node* _internal_mutable_query(); + public: + void unsafe_arena_set_allocated_query( + ::pg_query::Node* query); + ::pg_query::Node* unsafe_arena_release_query(); + + // bool replace = 4 [json_name = "replace"]; + void clear_replace(); + bool replace() const; + void set_replace(bool value); + private: + bool _internal_replace() const; + void _internal_set_replace(bool value); + public: + + // .pg_query.ViewCheckOption with_check_option = 6 [json_name = "withCheckOption"]; + void clear_with_check_option(); + ::pg_query::ViewCheckOption with_check_option() const; + void set_with_check_option(::pg_query::ViewCheckOption value); + private: + ::pg_query::ViewCheckOption _internal_with_check_option() const; + void _internal_set_with_check_option(::pg_query::ViewCheckOption value); + public: + + // @@protoc_insertion_point(class_scope:pg_query.ViewStmt) + private: + class _Internal; + + template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; + typedef void InternalArenaConstructable_; + typedef void DestructorSkippable_; + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > aliases_; + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > options_; + ::pg_query::RangeVar* view_; + ::pg_query::Node* query_; + bool replace_; + int with_check_option_; + mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; + friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; +}; +// ------------------------------------------------------------------- + +class LoadStmt PROTOBUF_FINAL : + public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.LoadStmt) */ { + public: + inline LoadStmt() : LoadStmt(nullptr) {} + virtual ~LoadStmt(); + + LoadStmt(const LoadStmt& from); + LoadStmt(LoadStmt&& from) noexcept + : LoadStmt() { + *this = ::std::move(from); + } + + inline LoadStmt& operator=(const LoadStmt& from) { + CopyFrom(from); + return *this; + } + inline LoadStmt& operator=(LoadStmt&& from) noexcept { + if (GetArena() == from.GetArena()) { + if (this != &from) InternalSwap(&from); + } else { + CopyFrom(from); + } + return *this; + } + + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { + return GetDescriptor(); + } + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { + return GetMetadataStatic().descriptor; + } + static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { + return GetMetadataStatic().reflection; + } + static const LoadStmt& default_instance(); + + static inline const LoadStmt* internal_default_instance() { + return reinterpret_cast( + &_LoadStmt_default_instance_); + } + static constexpr int kIndexInFileMessages = + 96; + + friend void swap(LoadStmt& a, LoadStmt& b) { + a.Swap(&b); + } + inline void Swap(LoadStmt* other) { + if (other == this) return; + if (GetArena() == other->GetArena()) { + InternalSwap(other); + } else { + ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); + } + } + void UnsafeArenaSwap(LoadStmt* other) { + if (other == this) return; + GOOGLE_DCHECK(GetArena() == other->GetArena()); + InternalSwap(other); + } + + // implements Message ---------------------------------------------- + + inline LoadStmt* New() const final { + return CreateMaybeMessage(nullptr); + } + + LoadStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { + return CreateMaybeMessage(arena); + } + void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void CopyFrom(const LoadStmt& from); + void MergeFrom(const LoadStmt& from); + PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; + bool IsInitialized() const final; + + size_t ByteSizeLong() const final; + const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; + ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( + ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; + int GetCachedSize() const final { return _cached_size_.Get(); } + + private: + inline void SharedCtor(); + inline void SharedDtor(); + void SetCachedSize(int size) const final; + void InternalSwap(LoadStmt* other); + friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; + static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { + return "pg_query.LoadStmt"; + } + protected: + explicit LoadStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena); + private: + static void ArenaDtor(void* object); + inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); + public: + + ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; + private: + static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { + ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); + return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; + } + + public: + + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + + enum : int { + kFilenameFieldNumber = 1, + }; + // string filename = 1 [json_name = "filename"]; + void clear_filename(); + const std::string& filename() const; + void set_filename(const std::string& value); + void set_filename(std::string&& value); + void set_filename(const char* value); + void set_filename(const char* value, size_t size); + std::string* mutable_filename(); + std::string* release_filename(); + void set_allocated_filename(std::string* filename); + private: + const std::string& _internal_filename() const; + void _internal_set_filename(const std::string& value); + std::string* _internal_mutable_filename(); + public: + + // @@protoc_insertion_point(class_scope:pg_query.LoadStmt) + private: + class _Internal; + + template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; + typedef void InternalArenaConstructable_; + typedef void DestructorSkippable_; + ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr filename_; + mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; + friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; +}; +// ------------------------------------------------------------------- + +class CreateDomainStmt PROTOBUF_FINAL : + public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.CreateDomainStmt) */ { + public: + inline CreateDomainStmt() : CreateDomainStmt(nullptr) {} + virtual ~CreateDomainStmt(); + + CreateDomainStmt(const CreateDomainStmt& from); + CreateDomainStmt(CreateDomainStmt&& from) noexcept + : CreateDomainStmt() { + *this = ::std::move(from); + } + + inline CreateDomainStmt& operator=(const CreateDomainStmt& from) { + CopyFrom(from); + return *this; + } + inline CreateDomainStmt& operator=(CreateDomainStmt&& from) noexcept { + if (GetArena() == from.GetArena()) { + if (this != &from) InternalSwap(&from); + } else { + CopyFrom(from); + } + return *this; + } + + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { + return GetDescriptor(); + } + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { + return GetMetadataStatic().descriptor; + } + static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { + return GetMetadataStatic().reflection; + } + static const CreateDomainStmt& default_instance(); + + static inline const CreateDomainStmt* internal_default_instance() { + return reinterpret_cast( + &_CreateDomainStmt_default_instance_); + } + static constexpr int kIndexInFileMessages = + 97; + + friend void swap(CreateDomainStmt& a, CreateDomainStmt& b) { + a.Swap(&b); + } + inline void Swap(CreateDomainStmt* other) { + if (other == this) return; + if (GetArena() == other->GetArena()) { + InternalSwap(other); + } else { + ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); + } + } + void UnsafeArenaSwap(CreateDomainStmt* other) { + if (other == this) return; + GOOGLE_DCHECK(GetArena() == other->GetArena()); + InternalSwap(other); + } + + // implements Message ---------------------------------------------- + + inline CreateDomainStmt* New() const final { + return CreateMaybeMessage(nullptr); + } + + CreateDomainStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { + return CreateMaybeMessage(arena); + } + void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void CopyFrom(const CreateDomainStmt& from); + void MergeFrom(const CreateDomainStmt& from); + PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; + bool IsInitialized() const final; + + size_t ByteSizeLong() const final; + const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; + ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( + ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; + int GetCachedSize() const final { return _cached_size_.Get(); } + + private: + inline void SharedCtor(); + inline void SharedDtor(); + void SetCachedSize(int size) const final; + void InternalSwap(CreateDomainStmt* other); + friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; + static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { + return "pg_query.CreateDomainStmt"; + } + protected: + explicit CreateDomainStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena); + private: + static void ArenaDtor(void* object); + inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); + public: + + ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; + private: + static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { + ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); + return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; + } + + public: + + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + + enum : int { + kDomainnameFieldNumber = 1, + kConstraintsFieldNumber = 4, + kTypeNameFieldNumber = 2, + kCollClauseFieldNumber = 3, + }; + // repeated .pg_query.Node domainname = 1 [json_name = "domainname"]; + int domainname_size() const; + private: + int _internal_domainname_size() const; + public: + void clear_domainname(); + ::pg_query::Node* mutable_domainname(int index); + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* + mutable_domainname(); + private: + const ::pg_query::Node& _internal_domainname(int index) const; + ::pg_query::Node* _internal_add_domainname(); + public: + const ::pg_query::Node& domainname(int index) const; + ::pg_query::Node* add_domainname(); + const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& + domainname() const; + + // repeated .pg_query.Node constraints = 4 [json_name = "constraints"]; + int constraints_size() const; + private: + int _internal_constraints_size() const; + public: + void clear_constraints(); + ::pg_query::Node* mutable_constraints(int index); + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* + mutable_constraints(); + private: + const ::pg_query::Node& _internal_constraints(int index) const; + ::pg_query::Node* _internal_add_constraints(); + public: + const ::pg_query::Node& constraints(int index) const; + ::pg_query::Node* add_constraints(); + const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& + constraints() const; + + // .pg_query.TypeName type_name = 2 [json_name = "typeName"]; + bool has_type_name() const; + private: + bool _internal_has_type_name() const; + public: + void clear_type_name(); + const ::pg_query::TypeName& type_name() const; + ::pg_query::TypeName* release_type_name(); + ::pg_query::TypeName* mutable_type_name(); + void set_allocated_type_name(::pg_query::TypeName* type_name); + private: + const ::pg_query::TypeName& _internal_type_name() const; + ::pg_query::TypeName* _internal_mutable_type_name(); + public: + void unsafe_arena_set_allocated_type_name( + ::pg_query::TypeName* type_name); + ::pg_query::TypeName* unsafe_arena_release_type_name(); + + // .pg_query.CollateClause coll_clause = 3 [json_name = "collClause"]; + bool has_coll_clause() const; + private: + bool _internal_has_coll_clause() const; + public: + void clear_coll_clause(); + const ::pg_query::CollateClause& coll_clause() const; + ::pg_query::CollateClause* release_coll_clause(); + ::pg_query::CollateClause* mutable_coll_clause(); + void set_allocated_coll_clause(::pg_query::CollateClause* coll_clause); + private: + const ::pg_query::CollateClause& _internal_coll_clause() const; + ::pg_query::CollateClause* _internal_mutable_coll_clause(); + public: + void unsafe_arena_set_allocated_coll_clause( + ::pg_query::CollateClause* coll_clause); + ::pg_query::CollateClause* unsafe_arena_release_coll_clause(); + + // @@protoc_insertion_point(class_scope:pg_query.CreateDomainStmt) + private: + class _Internal; + + template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; + typedef void InternalArenaConstructable_; + typedef void DestructorSkippable_; + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > domainname_; + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > constraints_; + ::pg_query::TypeName* type_name_; + ::pg_query::CollateClause* coll_clause_; + mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; + friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; +}; +// ------------------------------------------------------------------- + +class CreatedbStmt PROTOBUF_FINAL : + public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.CreatedbStmt) */ { + public: + inline CreatedbStmt() : CreatedbStmt(nullptr) {} + virtual ~CreatedbStmt(); + + CreatedbStmt(const CreatedbStmt& from); + CreatedbStmt(CreatedbStmt&& from) noexcept + : CreatedbStmt() { + *this = ::std::move(from); + } + + inline CreatedbStmt& operator=(const CreatedbStmt& from) { + CopyFrom(from); + return *this; + } + inline CreatedbStmt& operator=(CreatedbStmt&& from) noexcept { + if (GetArena() == from.GetArena()) { + if (this != &from) InternalSwap(&from); + } else { + CopyFrom(from); + } + return *this; + } + + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { + return GetDescriptor(); + } + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { + return GetMetadataStatic().descriptor; + } + static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { + return GetMetadataStatic().reflection; + } + static const CreatedbStmt& default_instance(); + + static inline const CreatedbStmt* internal_default_instance() { + return reinterpret_cast( + &_CreatedbStmt_default_instance_); + } + static constexpr int kIndexInFileMessages = + 98; + + friend void swap(CreatedbStmt& a, CreatedbStmt& b) { + a.Swap(&b); + } + inline void Swap(CreatedbStmt* other) { + if (other == this) return; + if (GetArena() == other->GetArena()) { + InternalSwap(other); + } else { + ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); + } + } + void UnsafeArenaSwap(CreatedbStmt* other) { + if (other == this) return; + GOOGLE_DCHECK(GetArena() == other->GetArena()); + InternalSwap(other); + } + + // implements Message ---------------------------------------------- + + inline CreatedbStmt* New() const final { + return CreateMaybeMessage(nullptr); + } + + CreatedbStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { + return CreateMaybeMessage(arena); + } + void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void CopyFrom(const CreatedbStmt& from); + void MergeFrom(const CreatedbStmt& from); + PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; + bool IsInitialized() const final; + + size_t ByteSizeLong() const final; + const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; + ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( + ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; + int GetCachedSize() const final { return _cached_size_.Get(); } + + private: + inline void SharedCtor(); + inline void SharedDtor(); + void SetCachedSize(int size) const final; + void InternalSwap(CreatedbStmt* other); + friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; + static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { + return "pg_query.CreatedbStmt"; + } + protected: + explicit CreatedbStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena); + private: + static void ArenaDtor(void* object); + inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); + public: + + ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; + private: + static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { + ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); + return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; + } + + public: + + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + + enum : int { + kOptionsFieldNumber = 2, + kDbnameFieldNumber = 1, + }; + // repeated .pg_query.Node options = 2 [json_name = "options"]; + int options_size() const; + private: + int _internal_options_size() const; + public: + void clear_options(); + ::pg_query::Node* mutable_options(int index); + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* + mutable_options(); + private: + const ::pg_query::Node& _internal_options(int index) const; + ::pg_query::Node* _internal_add_options(); + public: + const ::pg_query::Node& options(int index) const; + ::pg_query::Node* add_options(); + const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& + options() const; + + // string dbname = 1 [json_name = "dbname"]; + void clear_dbname(); + const std::string& dbname() const; + void set_dbname(const std::string& value); + void set_dbname(std::string&& value); + void set_dbname(const char* value); + void set_dbname(const char* value, size_t size); + std::string* mutable_dbname(); + std::string* release_dbname(); + void set_allocated_dbname(std::string* dbname); + private: + const std::string& _internal_dbname() const; + void _internal_set_dbname(const std::string& value); + std::string* _internal_mutable_dbname(); + public: + + // @@protoc_insertion_point(class_scope:pg_query.CreatedbStmt) + private: + class _Internal; + + template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; + typedef void InternalArenaConstructable_; + typedef void DestructorSkippable_; + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > options_; + ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr dbname_; + mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; + friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; +}; +// ------------------------------------------------------------------- + +class DropdbStmt PROTOBUF_FINAL : + public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.DropdbStmt) */ { + public: + inline DropdbStmt() : DropdbStmt(nullptr) {} + virtual ~DropdbStmt(); + + DropdbStmt(const DropdbStmt& from); + DropdbStmt(DropdbStmt&& from) noexcept + : DropdbStmt() { + *this = ::std::move(from); + } + + inline DropdbStmt& operator=(const DropdbStmt& from) { + CopyFrom(from); + return *this; + } + inline DropdbStmt& operator=(DropdbStmt&& from) noexcept { + if (GetArena() == from.GetArena()) { + if (this != &from) InternalSwap(&from); + } else { + CopyFrom(from); + } + return *this; + } + + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { + return GetDescriptor(); + } + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { + return GetMetadataStatic().descriptor; + } + static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { + return GetMetadataStatic().reflection; + } + static const DropdbStmt& default_instance(); + + static inline const DropdbStmt* internal_default_instance() { + return reinterpret_cast( + &_DropdbStmt_default_instance_); + } + static constexpr int kIndexInFileMessages = + 99; + + friend void swap(DropdbStmt& a, DropdbStmt& b) { + a.Swap(&b); + } + inline void Swap(DropdbStmt* other) { + if (other == this) return; + if (GetArena() == other->GetArena()) { + InternalSwap(other); + } else { + ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); + } + } + void UnsafeArenaSwap(DropdbStmt* other) { + if (other == this) return; + GOOGLE_DCHECK(GetArena() == other->GetArena()); + InternalSwap(other); + } + + // implements Message ---------------------------------------------- + + inline DropdbStmt* New() const final { + return CreateMaybeMessage(nullptr); + } + + DropdbStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { + return CreateMaybeMessage(arena); + } + void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void CopyFrom(const DropdbStmt& from); + void MergeFrom(const DropdbStmt& from); + PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; + bool IsInitialized() const final; + + size_t ByteSizeLong() const final; + const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; + ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( + ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; + int GetCachedSize() const final { return _cached_size_.Get(); } + + private: + inline void SharedCtor(); + inline void SharedDtor(); + void SetCachedSize(int size) const final; + void InternalSwap(DropdbStmt* other); + friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; + static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { + return "pg_query.DropdbStmt"; + } + protected: + explicit DropdbStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena); + private: + static void ArenaDtor(void* object); + inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); + public: + + ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; + private: + static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { + ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); + return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; + } + + public: + + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + + enum : int { + kOptionsFieldNumber = 3, + kDbnameFieldNumber = 1, + kMissingOkFieldNumber = 2, + }; + // repeated .pg_query.Node options = 3 [json_name = "options"]; + int options_size() const; + private: + int _internal_options_size() const; + public: + void clear_options(); + ::pg_query::Node* mutable_options(int index); + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* + mutable_options(); + private: + const ::pg_query::Node& _internal_options(int index) const; + ::pg_query::Node* _internal_add_options(); + public: + const ::pg_query::Node& options(int index) const; + ::pg_query::Node* add_options(); + const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& + options() const; + + // string dbname = 1 [json_name = "dbname"]; + void clear_dbname(); + const std::string& dbname() const; + void set_dbname(const std::string& value); + void set_dbname(std::string&& value); + void set_dbname(const char* value); + void set_dbname(const char* value, size_t size); + std::string* mutable_dbname(); + std::string* release_dbname(); + void set_allocated_dbname(std::string* dbname); + private: + const std::string& _internal_dbname() const; + void _internal_set_dbname(const std::string& value); + std::string* _internal_mutable_dbname(); + public: + + // bool missing_ok = 2 [json_name = "missing_ok"]; + void clear_missing_ok(); + bool missing_ok() const; + void set_missing_ok(bool value); + private: + bool _internal_missing_ok() const; + void _internal_set_missing_ok(bool value); + public: + + // @@protoc_insertion_point(class_scope:pg_query.DropdbStmt) + private: + class _Internal; + + template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; + typedef void InternalArenaConstructable_; + typedef void DestructorSkippable_; + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > options_; + ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr dbname_; + bool missing_ok_; + mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; + friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; +}; +// ------------------------------------------------------------------- + +class VacuumStmt PROTOBUF_FINAL : + public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.VacuumStmt) */ { + public: + inline VacuumStmt() : VacuumStmt(nullptr) {} + virtual ~VacuumStmt(); + + VacuumStmt(const VacuumStmt& from); + VacuumStmt(VacuumStmt&& from) noexcept + : VacuumStmt() { + *this = ::std::move(from); + } + + inline VacuumStmt& operator=(const VacuumStmt& from) { + CopyFrom(from); + return *this; + } + inline VacuumStmt& operator=(VacuumStmt&& from) noexcept { + if (GetArena() == from.GetArena()) { + if (this != &from) InternalSwap(&from); + } else { + CopyFrom(from); + } + return *this; + } + + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { + return GetDescriptor(); + } + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { + return GetMetadataStatic().descriptor; + } + static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { + return GetMetadataStatic().reflection; + } + static const VacuumStmt& default_instance(); + + static inline const VacuumStmt* internal_default_instance() { + return reinterpret_cast( + &_VacuumStmt_default_instance_); + } + static constexpr int kIndexInFileMessages = + 100; + + friend void swap(VacuumStmt& a, VacuumStmt& b) { + a.Swap(&b); + } + inline void Swap(VacuumStmt* other) { + if (other == this) return; + if (GetArena() == other->GetArena()) { + InternalSwap(other); + } else { + ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); + } + } + void UnsafeArenaSwap(VacuumStmt* other) { + if (other == this) return; + GOOGLE_DCHECK(GetArena() == other->GetArena()); + InternalSwap(other); + } + + // implements Message ---------------------------------------------- + + inline VacuumStmt* New() const final { + return CreateMaybeMessage(nullptr); + } + + VacuumStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { + return CreateMaybeMessage(arena); + } + void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void CopyFrom(const VacuumStmt& from); + void MergeFrom(const VacuumStmt& from); + PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; + bool IsInitialized() const final; + + size_t ByteSizeLong() const final; + const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; + ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( + ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; + int GetCachedSize() const final { return _cached_size_.Get(); } + + private: + inline void SharedCtor(); + inline void SharedDtor(); + void SetCachedSize(int size) const final; + void InternalSwap(VacuumStmt* other); + friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; + static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { + return "pg_query.VacuumStmt"; + } + protected: + explicit VacuumStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena); + private: + static void ArenaDtor(void* object); + inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); + public: + + ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; + private: + static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { + ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); + return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; + } + + public: + + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + + enum : int { + kOptionsFieldNumber = 1, + kRelsFieldNumber = 2, + kIsVacuumcmdFieldNumber = 3, + }; + // repeated .pg_query.Node options = 1 [json_name = "options"]; + int options_size() const; + private: + int _internal_options_size() const; + public: + void clear_options(); + ::pg_query::Node* mutable_options(int index); + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* + mutable_options(); + private: + const ::pg_query::Node& _internal_options(int index) const; + ::pg_query::Node* _internal_add_options(); + public: + const ::pg_query::Node& options(int index) const; + ::pg_query::Node* add_options(); + const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& + options() const; + + // repeated .pg_query.Node rels = 2 [json_name = "rels"]; + int rels_size() const; + private: + int _internal_rels_size() const; + public: + void clear_rels(); + ::pg_query::Node* mutable_rels(int index); + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* + mutable_rels(); + private: + const ::pg_query::Node& _internal_rels(int index) const; + ::pg_query::Node* _internal_add_rels(); + public: + const ::pg_query::Node& rels(int index) const; + ::pg_query::Node* add_rels(); + const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& + rels() const; + + // bool is_vacuumcmd = 3 [json_name = "is_vacuumcmd"]; + void clear_is_vacuumcmd(); + bool is_vacuumcmd() const; + void set_is_vacuumcmd(bool value); + private: + bool _internal_is_vacuumcmd() const; + void _internal_set_is_vacuumcmd(bool value); + public: + + // @@protoc_insertion_point(class_scope:pg_query.VacuumStmt) + private: + class _Internal; + + template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; + typedef void InternalArenaConstructable_; + typedef void DestructorSkippable_; + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > options_; + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > rels_; + bool is_vacuumcmd_; + mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; + friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; +}; +// ------------------------------------------------------------------- + +class ExplainStmt PROTOBUF_FINAL : + public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.ExplainStmt) */ { + public: + inline ExplainStmt() : ExplainStmt(nullptr) {} + virtual ~ExplainStmt(); + + ExplainStmt(const ExplainStmt& from); + ExplainStmt(ExplainStmt&& from) noexcept + : ExplainStmt() { + *this = ::std::move(from); + } + + inline ExplainStmt& operator=(const ExplainStmt& from) { + CopyFrom(from); + return *this; + } + inline ExplainStmt& operator=(ExplainStmt&& from) noexcept { + if (GetArena() == from.GetArena()) { + if (this != &from) InternalSwap(&from); + } else { + CopyFrom(from); + } + return *this; + } + + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { + return GetDescriptor(); + } + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { + return GetMetadataStatic().descriptor; + } + static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { + return GetMetadataStatic().reflection; + } + static const ExplainStmt& default_instance(); + + static inline const ExplainStmt* internal_default_instance() { + return reinterpret_cast( + &_ExplainStmt_default_instance_); + } + static constexpr int kIndexInFileMessages = + 101; + + friend void swap(ExplainStmt& a, ExplainStmt& b) { + a.Swap(&b); + } + inline void Swap(ExplainStmt* other) { + if (other == this) return; + if (GetArena() == other->GetArena()) { + InternalSwap(other); + } else { + ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); + } + } + void UnsafeArenaSwap(ExplainStmt* other) { + if (other == this) return; + GOOGLE_DCHECK(GetArena() == other->GetArena()); + InternalSwap(other); + } + + // implements Message ---------------------------------------------- + + inline ExplainStmt* New() const final { + return CreateMaybeMessage(nullptr); + } + + ExplainStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { + return CreateMaybeMessage(arena); + } + void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void CopyFrom(const ExplainStmt& from); + void MergeFrom(const ExplainStmt& from); + PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; + bool IsInitialized() const final; + + size_t ByteSizeLong() const final; + const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; + ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( + ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; + int GetCachedSize() const final { return _cached_size_.Get(); } + + private: + inline void SharedCtor(); + inline void SharedDtor(); + void SetCachedSize(int size) const final; + void InternalSwap(ExplainStmt* other); + friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; + static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { + return "pg_query.ExplainStmt"; + } + protected: + explicit ExplainStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena); + private: + static void ArenaDtor(void* object); + inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); + public: + + ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; + private: + static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { + ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); + return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; + } + + public: + + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + + enum : int { + kOptionsFieldNumber = 2, + kQueryFieldNumber = 1, + }; + // repeated .pg_query.Node options = 2 [json_name = "options"]; + int options_size() const; + private: + int _internal_options_size() const; + public: + void clear_options(); + ::pg_query::Node* mutable_options(int index); + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* + mutable_options(); + private: + const ::pg_query::Node& _internal_options(int index) const; + ::pg_query::Node* _internal_add_options(); + public: + const ::pg_query::Node& options(int index) const; + ::pg_query::Node* add_options(); + const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& + options() const; + + // .pg_query.Node query = 1 [json_name = "query"]; + bool has_query() const; + private: + bool _internal_has_query() const; + public: + void clear_query(); + const ::pg_query::Node& query() const; + ::pg_query::Node* release_query(); + ::pg_query::Node* mutable_query(); + void set_allocated_query(::pg_query::Node* query); + private: + const ::pg_query::Node& _internal_query() const; + ::pg_query::Node* _internal_mutable_query(); + public: + void unsafe_arena_set_allocated_query( + ::pg_query::Node* query); + ::pg_query::Node* unsafe_arena_release_query(); + + // @@protoc_insertion_point(class_scope:pg_query.ExplainStmt) + private: + class _Internal; + + template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; + typedef void InternalArenaConstructable_; + typedef void DestructorSkippable_; + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > options_; + ::pg_query::Node* query_; + mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; + friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; +}; +// ------------------------------------------------------------------- + +class CreateTableAsStmt PROTOBUF_FINAL : + public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.CreateTableAsStmt) */ { + public: + inline CreateTableAsStmt() : CreateTableAsStmt(nullptr) {} + virtual ~CreateTableAsStmt(); + + CreateTableAsStmt(const CreateTableAsStmt& from); + CreateTableAsStmt(CreateTableAsStmt&& from) noexcept + : CreateTableAsStmt() { + *this = ::std::move(from); + } + + inline CreateTableAsStmt& operator=(const CreateTableAsStmt& from) { + CopyFrom(from); + return *this; + } + inline CreateTableAsStmt& operator=(CreateTableAsStmt&& from) noexcept { + if (GetArena() == from.GetArena()) { + if (this != &from) InternalSwap(&from); + } else { + CopyFrom(from); + } + return *this; + } + + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { + return GetDescriptor(); + } + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { + return GetMetadataStatic().descriptor; + } + static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { + return GetMetadataStatic().reflection; + } + static const CreateTableAsStmt& default_instance(); + + static inline const CreateTableAsStmt* internal_default_instance() { + return reinterpret_cast( + &_CreateTableAsStmt_default_instance_); + } + static constexpr int kIndexInFileMessages = + 102; + + friend void swap(CreateTableAsStmt& a, CreateTableAsStmt& b) { + a.Swap(&b); + } + inline void Swap(CreateTableAsStmt* other) { + if (other == this) return; + if (GetArena() == other->GetArena()) { + InternalSwap(other); + } else { + ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); + } + } + void UnsafeArenaSwap(CreateTableAsStmt* other) { + if (other == this) return; + GOOGLE_DCHECK(GetArena() == other->GetArena()); + InternalSwap(other); + } + + // implements Message ---------------------------------------------- + + inline CreateTableAsStmt* New() const final { + return CreateMaybeMessage(nullptr); + } + + CreateTableAsStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { + return CreateMaybeMessage(arena); + } + void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void CopyFrom(const CreateTableAsStmt& from); + void MergeFrom(const CreateTableAsStmt& from); + PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; + bool IsInitialized() const final; + + size_t ByteSizeLong() const final; + const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; + ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( + ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; + int GetCachedSize() const final { return _cached_size_.Get(); } + + private: + inline void SharedCtor(); + inline void SharedDtor(); + void SetCachedSize(int size) const final; + void InternalSwap(CreateTableAsStmt* other); + friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; + static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { + return "pg_query.CreateTableAsStmt"; + } + protected: + explicit CreateTableAsStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena); + private: + static void ArenaDtor(void* object); + inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); + public: + + ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; + private: + static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { + ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); + return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; + } + + public: + + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + + enum : int { + kQueryFieldNumber = 1, + kIntoFieldNumber = 2, + kRelkindFieldNumber = 3, + kIsSelectIntoFieldNumber = 4, + kIfNotExistsFieldNumber = 5, + }; + // .pg_query.Node query = 1 [json_name = "query"]; + bool has_query() const; + private: + bool _internal_has_query() const; + public: + void clear_query(); + const ::pg_query::Node& query() const; + ::pg_query::Node* release_query(); + ::pg_query::Node* mutable_query(); + void set_allocated_query(::pg_query::Node* query); + private: + const ::pg_query::Node& _internal_query() const; + ::pg_query::Node* _internal_mutable_query(); + public: + void unsafe_arena_set_allocated_query( + ::pg_query::Node* query); + ::pg_query::Node* unsafe_arena_release_query(); + + // .pg_query.IntoClause into = 2 [json_name = "into"]; + bool has_into() const; + private: + bool _internal_has_into() const; + public: + void clear_into(); + const ::pg_query::IntoClause& into() const; + ::pg_query::IntoClause* release_into(); + ::pg_query::IntoClause* mutable_into(); + void set_allocated_into(::pg_query::IntoClause* into); + private: + const ::pg_query::IntoClause& _internal_into() const; + ::pg_query::IntoClause* _internal_mutable_into(); + public: + void unsafe_arena_set_allocated_into( + ::pg_query::IntoClause* into); + ::pg_query::IntoClause* unsafe_arena_release_into(); + + // .pg_query.ObjectType relkind = 3 [json_name = "relkind"]; + void clear_relkind(); + ::pg_query::ObjectType relkind() const; + void set_relkind(::pg_query::ObjectType value); + private: + ::pg_query::ObjectType _internal_relkind() const; + void _internal_set_relkind(::pg_query::ObjectType value); + public: + + // bool is_select_into = 4 [json_name = "is_select_into"]; + void clear_is_select_into(); + bool is_select_into() const; + void set_is_select_into(bool value); + private: + bool _internal_is_select_into() const; + void _internal_set_is_select_into(bool value); + public: + + // bool if_not_exists = 5 [json_name = "if_not_exists"]; + void clear_if_not_exists(); + bool if_not_exists() const; + void set_if_not_exists(bool value); + private: + bool _internal_if_not_exists() const; + void _internal_set_if_not_exists(bool value); + public: + + // @@protoc_insertion_point(class_scope:pg_query.CreateTableAsStmt) + private: + class _Internal; + + template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; + typedef void InternalArenaConstructable_; + typedef void DestructorSkippable_; + ::pg_query::Node* query_; + ::pg_query::IntoClause* into_; + int relkind_; + bool is_select_into_; + bool if_not_exists_; + mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; + friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; +}; +// ------------------------------------------------------------------- + +class CreateSeqStmt PROTOBUF_FINAL : + public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.CreateSeqStmt) */ { + public: + inline CreateSeqStmt() : CreateSeqStmt(nullptr) {} + virtual ~CreateSeqStmt(); + + CreateSeqStmt(const CreateSeqStmt& from); + CreateSeqStmt(CreateSeqStmt&& from) noexcept + : CreateSeqStmt() { + *this = ::std::move(from); + } + + inline CreateSeqStmt& operator=(const CreateSeqStmt& from) { + CopyFrom(from); + return *this; + } + inline CreateSeqStmt& operator=(CreateSeqStmt&& from) noexcept { + if (GetArena() == from.GetArena()) { + if (this != &from) InternalSwap(&from); + } else { + CopyFrom(from); + } + return *this; + } + + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { + return GetDescriptor(); + } + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { + return GetMetadataStatic().descriptor; + } + static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { + return GetMetadataStatic().reflection; + } + static const CreateSeqStmt& default_instance(); + + static inline const CreateSeqStmt* internal_default_instance() { + return reinterpret_cast( + &_CreateSeqStmt_default_instance_); + } + static constexpr int kIndexInFileMessages = + 103; + + friend void swap(CreateSeqStmt& a, CreateSeqStmt& b) { + a.Swap(&b); + } + inline void Swap(CreateSeqStmt* other) { + if (other == this) return; + if (GetArena() == other->GetArena()) { + InternalSwap(other); + } else { + ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); + } + } + void UnsafeArenaSwap(CreateSeqStmt* other) { + if (other == this) return; + GOOGLE_DCHECK(GetArena() == other->GetArena()); + InternalSwap(other); + } + + // implements Message ---------------------------------------------- + + inline CreateSeqStmt* New() const final { + return CreateMaybeMessage(nullptr); + } + + CreateSeqStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { + return CreateMaybeMessage(arena); + } + void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void CopyFrom(const CreateSeqStmt& from); + void MergeFrom(const CreateSeqStmt& from); + PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; + bool IsInitialized() const final; + + size_t ByteSizeLong() const final; + const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; + ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( + ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; + int GetCachedSize() const final { return _cached_size_.Get(); } + + private: + inline void SharedCtor(); + inline void SharedDtor(); + void SetCachedSize(int size) const final; + void InternalSwap(CreateSeqStmt* other); + friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; + static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { + return "pg_query.CreateSeqStmt"; + } + protected: + explicit CreateSeqStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena); + private: + static void ArenaDtor(void* object); + inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); + public: + + ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; + private: + static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { + ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); + return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; + } + + public: + + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + + enum : int { + kOptionsFieldNumber = 2, + kSequenceFieldNumber = 1, + kOwnerIdFieldNumber = 3, + kForIdentityFieldNumber = 4, + kIfNotExistsFieldNumber = 5, + }; + // repeated .pg_query.Node options = 2 [json_name = "options"]; + int options_size() const; + private: + int _internal_options_size() const; + public: + void clear_options(); + ::pg_query::Node* mutable_options(int index); + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* + mutable_options(); + private: + const ::pg_query::Node& _internal_options(int index) const; + ::pg_query::Node* _internal_add_options(); + public: + const ::pg_query::Node& options(int index) const; + ::pg_query::Node* add_options(); + const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& + options() const; + + // .pg_query.RangeVar sequence = 1 [json_name = "sequence"]; + bool has_sequence() const; + private: + bool _internal_has_sequence() const; + public: + void clear_sequence(); + const ::pg_query::RangeVar& sequence() const; + ::pg_query::RangeVar* release_sequence(); + ::pg_query::RangeVar* mutable_sequence(); + void set_allocated_sequence(::pg_query::RangeVar* sequence); + private: + const ::pg_query::RangeVar& _internal_sequence() const; + ::pg_query::RangeVar* _internal_mutable_sequence(); + public: + void unsafe_arena_set_allocated_sequence( + ::pg_query::RangeVar* sequence); + ::pg_query::RangeVar* unsafe_arena_release_sequence(); + + // uint32 owner_id = 3 [json_name = "ownerId"]; + void clear_owner_id(); + ::PROTOBUF_NAMESPACE_ID::uint32 owner_id() const; + void set_owner_id(::PROTOBUF_NAMESPACE_ID::uint32 value); + private: + ::PROTOBUF_NAMESPACE_ID::uint32 _internal_owner_id() const; + void _internal_set_owner_id(::PROTOBUF_NAMESPACE_ID::uint32 value); + public: + + // bool for_identity = 4 [json_name = "for_identity"]; + void clear_for_identity(); + bool for_identity() const; + void set_for_identity(bool value); + private: + bool _internal_for_identity() const; + void _internal_set_for_identity(bool value); + public: + + // bool if_not_exists = 5 [json_name = "if_not_exists"]; + void clear_if_not_exists(); + bool if_not_exists() const; + void set_if_not_exists(bool value); + private: + bool _internal_if_not_exists() const; + void _internal_set_if_not_exists(bool value); + public: + + // @@protoc_insertion_point(class_scope:pg_query.CreateSeqStmt) + private: + class _Internal; + + template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; + typedef void InternalArenaConstructable_; + typedef void DestructorSkippable_; + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > options_; + ::pg_query::RangeVar* sequence_; + ::PROTOBUF_NAMESPACE_ID::uint32 owner_id_; + bool for_identity_; + bool if_not_exists_; + mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; + friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; +}; +// ------------------------------------------------------------------- + +class AlterSeqStmt PROTOBUF_FINAL : + public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.AlterSeqStmt) */ { + public: + inline AlterSeqStmt() : AlterSeqStmt(nullptr) {} + virtual ~AlterSeqStmt(); + + AlterSeqStmt(const AlterSeqStmt& from); + AlterSeqStmt(AlterSeqStmt&& from) noexcept + : AlterSeqStmt() { + *this = ::std::move(from); + } + + inline AlterSeqStmt& operator=(const AlterSeqStmt& from) { + CopyFrom(from); + return *this; + } + inline AlterSeqStmt& operator=(AlterSeqStmt&& from) noexcept { + if (GetArena() == from.GetArena()) { + if (this != &from) InternalSwap(&from); + } else { + CopyFrom(from); + } + return *this; + } + + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { + return GetDescriptor(); + } + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { + return GetMetadataStatic().descriptor; + } + static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { + return GetMetadataStatic().reflection; + } + static const AlterSeqStmt& default_instance(); + + static inline const AlterSeqStmt* internal_default_instance() { + return reinterpret_cast( + &_AlterSeqStmt_default_instance_); + } + static constexpr int kIndexInFileMessages = + 104; + + friend void swap(AlterSeqStmt& a, AlterSeqStmt& b) { + a.Swap(&b); + } + inline void Swap(AlterSeqStmt* other) { + if (other == this) return; + if (GetArena() == other->GetArena()) { + InternalSwap(other); + } else { + ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); + } + } + void UnsafeArenaSwap(AlterSeqStmt* other) { + if (other == this) return; + GOOGLE_DCHECK(GetArena() == other->GetArena()); + InternalSwap(other); + } + + // implements Message ---------------------------------------------- + + inline AlterSeqStmt* New() const final { + return CreateMaybeMessage(nullptr); + } + + AlterSeqStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { + return CreateMaybeMessage(arena); + } + void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void CopyFrom(const AlterSeqStmt& from); + void MergeFrom(const AlterSeqStmt& from); + PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; + bool IsInitialized() const final; + + size_t ByteSizeLong() const final; + const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; + ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( + ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; + int GetCachedSize() const final { return _cached_size_.Get(); } + + private: + inline void SharedCtor(); + inline void SharedDtor(); + void SetCachedSize(int size) const final; + void InternalSwap(AlterSeqStmt* other); + friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; + static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { + return "pg_query.AlterSeqStmt"; + } + protected: + explicit AlterSeqStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena); + private: + static void ArenaDtor(void* object); + inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); + public: + + ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; + private: + static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { + ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); + return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; + } + + public: + + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + + enum : int { + kOptionsFieldNumber = 2, + kSequenceFieldNumber = 1, + kForIdentityFieldNumber = 3, + kMissingOkFieldNumber = 4, + }; + // repeated .pg_query.Node options = 2 [json_name = "options"]; + int options_size() const; + private: + int _internal_options_size() const; + public: + void clear_options(); + ::pg_query::Node* mutable_options(int index); + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* + mutable_options(); + private: + const ::pg_query::Node& _internal_options(int index) const; + ::pg_query::Node* _internal_add_options(); + public: + const ::pg_query::Node& options(int index) const; + ::pg_query::Node* add_options(); + const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& + options() const; + + // .pg_query.RangeVar sequence = 1 [json_name = "sequence"]; + bool has_sequence() const; + private: + bool _internal_has_sequence() const; + public: + void clear_sequence(); + const ::pg_query::RangeVar& sequence() const; + ::pg_query::RangeVar* release_sequence(); + ::pg_query::RangeVar* mutable_sequence(); + void set_allocated_sequence(::pg_query::RangeVar* sequence); + private: + const ::pg_query::RangeVar& _internal_sequence() const; + ::pg_query::RangeVar* _internal_mutable_sequence(); + public: + void unsafe_arena_set_allocated_sequence( + ::pg_query::RangeVar* sequence); + ::pg_query::RangeVar* unsafe_arena_release_sequence(); + + // bool for_identity = 3 [json_name = "for_identity"]; + void clear_for_identity(); + bool for_identity() const; + void set_for_identity(bool value); + private: + bool _internal_for_identity() const; + void _internal_set_for_identity(bool value); + public: + + // bool missing_ok = 4 [json_name = "missing_ok"]; + void clear_missing_ok(); + bool missing_ok() const; + void set_missing_ok(bool value); + private: + bool _internal_missing_ok() const; + void _internal_set_missing_ok(bool value); + public: + + // @@protoc_insertion_point(class_scope:pg_query.AlterSeqStmt) + private: + class _Internal; + + template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; + typedef void InternalArenaConstructable_; + typedef void DestructorSkippable_; + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > options_; + ::pg_query::RangeVar* sequence_; + bool for_identity_; + bool missing_ok_; + mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; + friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; +}; +// ------------------------------------------------------------------- + +class VariableSetStmt PROTOBUF_FINAL : + public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.VariableSetStmt) */ { + public: + inline VariableSetStmt() : VariableSetStmt(nullptr) {} + virtual ~VariableSetStmt(); + + VariableSetStmt(const VariableSetStmt& from); + VariableSetStmt(VariableSetStmt&& from) noexcept + : VariableSetStmt() { + *this = ::std::move(from); + } + + inline VariableSetStmt& operator=(const VariableSetStmt& from) { + CopyFrom(from); + return *this; + } + inline VariableSetStmt& operator=(VariableSetStmt&& from) noexcept { + if (GetArena() == from.GetArena()) { + if (this != &from) InternalSwap(&from); + } else { + CopyFrom(from); + } + return *this; + } + + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { + return GetDescriptor(); + } + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { + return GetMetadataStatic().descriptor; + } + static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { + return GetMetadataStatic().reflection; + } + static const VariableSetStmt& default_instance(); + + static inline const VariableSetStmt* internal_default_instance() { + return reinterpret_cast( + &_VariableSetStmt_default_instance_); + } + static constexpr int kIndexInFileMessages = + 105; + + friend void swap(VariableSetStmt& a, VariableSetStmt& b) { + a.Swap(&b); + } + inline void Swap(VariableSetStmt* other) { + if (other == this) return; + if (GetArena() == other->GetArena()) { + InternalSwap(other); + } else { + ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); + } + } + void UnsafeArenaSwap(VariableSetStmt* other) { + if (other == this) return; + GOOGLE_DCHECK(GetArena() == other->GetArena()); + InternalSwap(other); + } + + // implements Message ---------------------------------------------- + + inline VariableSetStmt* New() const final { + return CreateMaybeMessage(nullptr); + } + + VariableSetStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { + return CreateMaybeMessage(arena); + } + void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void CopyFrom(const VariableSetStmt& from); + void MergeFrom(const VariableSetStmt& from); + PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; + bool IsInitialized() const final; + + size_t ByteSizeLong() const final; + const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; + ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( + ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; + int GetCachedSize() const final { return _cached_size_.Get(); } + + private: + inline void SharedCtor(); + inline void SharedDtor(); + void SetCachedSize(int size) const final; + void InternalSwap(VariableSetStmt* other); + friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; + static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { + return "pg_query.VariableSetStmt"; + } + protected: + explicit VariableSetStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena); + private: + static void ArenaDtor(void* object); + inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); + public: + + ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; + private: + static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { + ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); + return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; + } + + public: + + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + + enum : int { + kArgsFieldNumber = 3, + kNameFieldNumber = 2, + kKindFieldNumber = 1, + kIsLocalFieldNumber = 4, + }; + // repeated .pg_query.Node args = 3 [json_name = "args"]; + int args_size() const; + private: + int _internal_args_size() const; + public: + void clear_args(); + ::pg_query::Node* mutable_args(int index); + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* + mutable_args(); + private: + const ::pg_query::Node& _internal_args(int index) const; + ::pg_query::Node* _internal_add_args(); + public: + const ::pg_query::Node& args(int index) const; + ::pg_query::Node* add_args(); + const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& + args() const; + + // string name = 2 [json_name = "name"]; + void clear_name(); + const std::string& name() const; + void set_name(const std::string& value); + void set_name(std::string&& value); + void set_name(const char* value); + void set_name(const char* value, size_t size); + std::string* mutable_name(); + std::string* release_name(); + void set_allocated_name(std::string* name); + private: + const std::string& _internal_name() const; + void _internal_set_name(const std::string& value); + std::string* _internal_mutable_name(); + public: + + // .pg_query.VariableSetKind kind = 1 [json_name = "kind"]; + void clear_kind(); + ::pg_query::VariableSetKind kind() const; + void set_kind(::pg_query::VariableSetKind value); + private: + ::pg_query::VariableSetKind _internal_kind() const; + void _internal_set_kind(::pg_query::VariableSetKind value); + public: + + // bool is_local = 4 [json_name = "is_local"]; + void clear_is_local(); + bool is_local() const; + void set_is_local(bool value); + private: + bool _internal_is_local() const; + void _internal_set_is_local(bool value); + public: + + // @@protoc_insertion_point(class_scope:pg_query.VariableSetStmt) + private: + class _Internal; + + template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; + typedef void InternalArenaConstructable_; + typedef void DestructorSkippable_; + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > args_; + ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr name_; + int kind_; + bool is_local_; + mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; + friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; +}; +// ------------------------------------------------------------------- + +class VariableShowStmt PROTOBUF_FINAL : + public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.VariableShowStmt) */ { + public: + inline VariableShowStmt() : VariableShowStmt(nullptr) {} + virtual ~VariableShowStmt(); + + VariableShowStmt(const VariableShowStmt& from); + VariableShowStmt(VariableShowStmt&& from) noexcept + : VariableShowStmt() { + *this = ::std::move(from); + } + + inline VariableShowStmt& operator=(const VariableShowStmt& from) { + CopyFrom(from); + return *this; + } + inline VariableShowStmt& operator=(VariableShowStmt&& from) noexcept { + if (GetArena() == from.GetArena()) { + if (this != &from) InternalSwap(&from); + } else { + CopyFrom(from); + } + return *this; + } + + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { + return GetDescriptor(); + } + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { + return GetMetadataStatic().descriptor; + } + static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { + return GetMetadataStatic().reflection; + } + static const VariableShowStmt& default_instance(); + + static inline const VariableShowStmt* internal_default_instance() { + return reinterpret_cast( + &_VariableShowStmt_default_instance_); + } + static constexpr int kIndexInFileMessages = + 106; + + friend void swap(VariableShowStmt& a, VariableShowStmt& b) { + a.Swap(&b); + } + inline void Swap(VariableShowStmt* other) { + if (other == this) return; + if (GetArena() == other->GetArena()) { + InternalSwap(other); + } else { + ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); + } + } + void UnsafeArenaSwap(VariableShowStmt* other) { + if (other == this) return; + GOOGLE_DCHECK(GetArena() == other->GetArena()); + InternalSwap(other); + } + + // implements Message ---------------------------------------------- + + inline VariableShowStmt* New() const final { + return CreateMaybeMessage(nullptr); + } + + VariableShowStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { + return CreateMaybeMessage(arena); + } + void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void CopyFrom(const VariableShowStmt& from); + void MergeFrom(const VariableShowStmt& from); + PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; + bool IsInitialized() const final; + + size_t ByteSizeLong() const final; + const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; + ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( + ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; + int GetCachedSize() const final { return _cached_size_.Get(); } + + private: + inline void SharedCtor(); + inline void SharedDtor(); + void SetCachedSize(int size) const final; + void InternalSwap(VariableShowStmt* other); + friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; + static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { + return "pg_query.VariableShowStmt"; + } + protected: + explicit VariableShowStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena); + private: + static void ArenaDtor(void* object); + inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); + public: + + ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; + private: + static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { + ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); + return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; + } + + public: + + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + + enum : int { + kNameFieldNumber = 1, + }; + // string name = 1 [json_name = "name"]; + void clear_name(); + const std::string& name() const; + void set_name(const std::string& value); + void set_name(std::string&& value); + void set_name(const char* value); + void set_name(const char* value, size_t size); + std::string* mutable_name(); + std::string* release_name(); + void set_allocated_name(std::string* name); + private: + const std::string& _internal_name() const; + void _internal_set_name(const std::string& value); + std::string* _internal_mutable_name(); + public: + + // @@protoc_insertion_point(class_scope:pg_query.VariableShowStmt) + private: + class _Internal; + + template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; + typedef void InternalArenaConstructable_; + typedef void DestructorSkippable_; + ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr name_; + mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; + friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; +}; +// ------------------------------------------------------------------- + +class DiscardStmt PROTOBUF_FINAL : + public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.DiscardStmt) */ { + public: + inline DiscardStmt() : DiscardStmt(nullptr) {} + virtual ~DiscardStmt(); + + DiscardStmt(const DiscardStmt& from); + DiscardStmt(DiscardStmt&& from) noexcept + : DiscardStmt() { + *this = ::std::move(from); + } + + inline DiscardStmt& operator=(const DiscardStmt& from) { + CopyFrom(from); + return *this; + } + inline DiscardStmt& operator=(DiscardStmt&& from) noexcept { + if (GetArena() == from.GetArena()) { + if (this != &from) InternalSwap(&from); + } else { + CopyFrom(from); + } + return *this; + } + + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { + return GetDescriptor(); + } + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { + return GetMetadataStatic().descriptor; + } + static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { + return GetMetadataStatic().reflection; + } + static const DiscardStmt& default_instance(); + + static inline const DiscardStmt* internal_default_instance() { + return reinterpret_cast( + &_DiscardStmt_default_instance_); + } + static constexpr int kIndexInFileMessages = + 107; + + friend void swap(DiscardStmt& a, DiscardStmt& b) { + a.Swap(&b); + } + inline void Swap(DiscardStmt* other) { + if (other == this) return; + if (GetArena() == other->GetArena()) { + InternalSwap(other); + } else { + ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); + } + } + void UnsafeArenaSwap(DiscardStmt* other) { + if (other == this) return; + GOOGLE_DCHECK(GetArena() == other->GetArena()); + InternalSwap(other); + } + + // implements Message ---------------------------------------------- + + inline DiscardStmt* New() const final { + return CreateMaybeMessage(nullptr); + } + + DiscardStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { + return CreateMaybeMessage(arena); + } + void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void CopyFrom(const DiscardStmt& from); + void MergeFrom(const DiscardStmt& from); + PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; + bool IsInitialized() const final; + + size_t ByteSizeLong() const final; + const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; + ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( + ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; + int GetCachedSize() const final { return _cached_size_.Get(); } + + private: + inline void SharedCtor(); + inline void SharedDtor(); + void SetCachedSize(int size) const final; + void InternalSwap(DiscardStmt* other); + friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; + static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { + return "pg_query.DiscardStmt"; + } + protected: + explicit DiscardStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena); + private: + static void ArenaDtor(void* object); + inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); + public: + + ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; + private: + static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { + ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); + return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; + } + + public: + + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + + enum : int { + kTargetFieldNumber = 1, + }; + // .pg_query.DiscardMode target = 1 [json_name = "target"]; + void clear_target(); + ::pg_query::DiscardMode target() const; + void set_target(::pg_query::DiscardMode value); + private: + ::pg_query::DiscardMode _internal_target() const; + void _internal_set_target(::pg_query::DiscardMode value); + public: + + // @@protoc_insertion_point(class_scope:pg_query.DiscardStmt) + private: + class _Internal; + + template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; + typedef void InternalArenaConstructable_; + typedef void DestructorSkippable_; + int target_; + mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; + friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; +}; +// ------------------------------------------------------------------- + +class CreateTrigStmt PROTOBUF_FINAL : + public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.CreateTrigStmt) */ { + public: + inline CreateTrigStmt() : CreateTrigStmt(nullptr) {} + virtual ~CreateTrigStmt(); + + CreateTrigStmt(const CreateTrigStmt& from); + CreateTrigStmt(CreateTrigStmt&& from) noexcept + : CreateTrigStmt() { + *this = ::std::move(from); + } + + inline CreateTrigStmt& operator=(const CreateTrigStmt& from) { + CopyFrom(from); + return *this; + } + inline CreateTrigStmt& operator=(CreateTrigStmt&& from) noexcept { + if (GetArena() == from.GetArena()) { + if (this != &from) InternalSwap(&from); + } else { + CopyFrom(from); + } + return *this; + } + + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { + return GetDescriptor(); + } + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { + return GetMetadataStatic().descriptor; + } + static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { + return GetMetadataStatic().reflection; + } + static const CreateTrigStmt& default_instance(); + + static inline const CreateTrigStmt* internal_default_instance() { + return reinterpret_cast( + &_CreateTrigStmt_default_instance_); + } + static constexpr int kIndexInFileMessages = + 108; + + friend void swap(CreateTrigStmt& a, CreateTrigStmt& b) { + a.Swap(&b); + } + inline void Swap(CreateTrigStmt* other) { + if (other == this) return; + if (GetArena() == other->GetArena()) { + InternalSwap(other); + } else { + ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); + } + } + void UnsafeArenaSwap(CreateTrigStmt* other) { + if (other == this) return; + GOOGLE_DCHECK(GetArena() == other->GetArena()); + InternalSwap(other); + } + + // implements Message ---------------------------------------------- + + inline CreateTrigStmt* New() const final { + return CreateMaybeMessage(nullptr); + } + + CreateTrigStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { + return CreateMaybeMessage(arena); + } + void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void CopyFrom(const CreateTrigStmt& from); + void MergeFrom(const CreateTrigStmt& from); + PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; + bool IsInitialized() const final; + + size_t ByteSizeLong() const final; + const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; + ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( + ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; + int GetCachedSize() const final { return _cached_size_.Get(); } + + private: + inline void SharedCtor(); + inline void SharedDtor(); + void SetCachedSize(int size) const final; + void InternalSwap(CreateTrigStmt* other); + friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; + static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { + return "pg_query.CreateTrigStmt"; + } + protected: + explicit CreateTrigStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena); + private: + static void ArenaDtor(void* object); + inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); + public: + + ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; + private: + static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { + ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); + return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; + } + + public: + + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + + enum : int { + kFuncnameFieldNumber = 3, + kArgsFieldNumber = 4, + kColumnsFieldNumber = 8, + kTransitionRelsFieldNumber = 11, + kTrignameFieldNumber = 1, + kRelationFieldNumber = 2, + kWhenClauseFieldNumber = 9, + kConstrrelFieldNumber = 14, + kTimingFieldNumber = 6, + kEventsFieldNumber = 7, + kRowFieldNumber = 5, + kIsconstraintFieldNumber = 10, + kDeferrableFieldNumber = 12, + kInitdeferredFieldNumber = 13, + }; + // repeated .pg_query.Node funcname = 3 [json_name = "funcname"]; + int funcname_size() const; + private: + int _internal_funcname_size() const; + public: + void clear_funcname(); + ::pg_query::Node* mutable_funcname(int index); + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* + mutable_funcname(); + private: + const ::pg_query::Node& _internal_funcname(int index) const; + ::pg_query::Node* _internal_add_funcname(); + public: + const ::pg_query::Node& funcname(int index) const; + ::pg_query::Node* add_funcname(); + const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& + funcname() const; + + // repeated .pg_query.Node args = 4 [json_name = "args"]; + int args_size() const; + private: + int _internal_args_size() const; + public: + void clear_args(); + ::pg_query::Node* mutable_args(int index); + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* + mutable_args(); + private: + const ::pg_query::Node& _internal_args(int index) const; + ::pg_query::Node* _internal_add_args(); + public: + const ::pg_query::Node& args(int index) const; + ::pg_query::Node* add_args(); + const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& + args() const; + + // repeated .pg_query.Node columns = 8 [json_name = "columns"]; + int columns_size() const; + private: + int _internal_columns_size() const; + public: + void clear_columns(); + ::pg_query::Node* mutable_columns(int index); + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* + mutable_columns(); + private: + const ::pg_query::Node& _internal_columns(int index) const; + ::pg_query::Node* _internal_add_columns(); + public: + const ::pg_query::Node& columns(int index) const; + ::pg_query::Node* add_columns(); + const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& + columns() const; + + // repeated .pg_query.Node transition_rels = 11 [json_name = "transitionRels"]; + int transition_rels_size() const; + private: + int _internal_transition_rels_size() const; + public: + void clear_transition_rels(); + ::pg_query::Node* mutable_transition_rels(int index); + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* + mutable_transition_rels(); + private: + const ::pg_query::Node& _internal_transition_rels(int index) const; + ::pg_query::Node* _internal_add_transition_rels(); + public: + const ::pg_query::Node& transition_rels(int index) const; + ::pg_query::Node* add_transition_rels(); + const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& + transition_rels() const; + + // string trigname = 1 [json_name = "trigname"]; + void clear_trigname(); + const std::string& trigname() const; + void set_trigname(const std::string& value); + void set_trigname(std::string&& value); + void set_trigname(const char* value); + void set_trigname(const char* value, size_t size); + std::string* mutable_trigname(); + std::string* release_trigname(); + void set_allocated_trigname(std::string* trigname); + private: + const std::string& _internal_trigname() const; + void _internal_set_trigname(const std::string& value); + std::string* _internal_mutable_trigname(); + public: + + // .pg_query.RangeVar relation = 2 [json_name = "relation"]; + bool has_relation() const; + private: + bool _internal_has_relation() const; + public: + void clear_relation(); + const ::pg_query::RangeVar& relation() const; + ::pg_query::RangeVar* release_relation(); + ::pg_query::RangeVar* mutable_relation(); + void set_allocated_relation(::pg_query::RangeVar* relation); + private: + const ::pg_query::RangeVar& _internal_relation() const; + ::pg_query::RangeVar* _internal_mutable_relation(); + public: + void unsafe_arena_set_allocated_relation( + ::pg_query::RangeVar* relation); + ::pg_query::RangeVar* unsafe_arena_release_relation(); + + // .pg_query.Node when_clause = 9 [json_name = "whenClause"]; + bool has_when_clause() const; + private: + bool _internal_has_when_clause() const; + public: + void clear_when_clause(); + const ::pg_query::Node& when_clause() const; + ::pg_query::Node* release_when_clause(); + ::pg_query::Node* mutable_when_clause(); + void set_allocated_when_clause(::pg_query::Node* when_clause); + private: + const ::pg_query::Node& _internal_when_clause() const; + ::pg_query::Node* _internal_mutable_when_clause(); + public: + void unsafe_arena_set_allocated_when_clause( + ::pg_query::Node* when_clause); + ::pg_query::Node* unsafe_arena_release_when_clause(); + + // .pg_query.RangeVar constrrel = 14 [json_name = "constrrel"]; + bool has_constrrel() const; + private: + bool _internal_has_constrrel() const; + public: + void clear_constrrel(); + const ::pg_query::RangeVar& constrrel() const; + ::pg_query::RangeVar* release_constrrel(); + ::pg_query::RangeVar* mutable_constrrel(); + void set_allocated_constrrel(::pg_query::RangeVar* constrrel); + private: + const ::pg_query::RangeVar& _internal_constrrel() const; + ::pg_query::RangeVar* _internal_mutable_constrrel(); + public: + void unsafe_arena_set_allocated_constrrel( + ::pg_query::RangeVar* constrrel); + ::pg_query::RangeVar* unsafe_arena_release_constrrel(); + + // int32 timing = 6 [json_name = "timing"]; + void clear_timing(); + ::PROTOBUF_NAMESPACE_ID::int32 timing() const; + void set_timing(::PROTOBUF_NAMESPACE_ID::int32 value); + private: + ::PROTOBUF_NAMESPACE_ID::int32 _internal_timing() const; + void _internal_set_timing(::PROTOBUF_NAMESPACE_ID::int32 value); + public: + + // int32 events = 7 [json_name = "events"]; + void clear_events(); + ::PROTOBUF_NAMESPACE_ID::int32 events() const; + void set_events(::PROTOBUF_NAMESPACE_ID::int32 value); + private: + ::PROTOBUF_NAMESPACE_ID::int32 _internal_events() const; + void _internal_set_events(::PROTOBUF_NAMESPACE_ID::int32 value); + public: + + // bool row = 5 [json_name = "row"]; + void clear_row(); + bool row() const; + void set_row(bool value); + private: + bool _internal_row() const; + void _internal_set_row(bool value); + public: + + // bool isconstraint = 10 [json_name = "isconstraint"]; + void clear_isconstraint(); + bool isconstraint() const; + void set_isconstraint(bool value); + private: + bool _internal_isconstraint() const; + void _internal_set_isconstraint(bool value); + public: + + // bool deferrable = 12 [json_name = "deferrable"]; + void clear_deferrable(); + bool deferrable() const; + void set_deferrable(bool value); + private: + bool _internal_deferrable() const; + void _internal_set_deferrable(bool value); + public: + + // bool initdeferred = 13 [json_name = "initdeferred"]; + void clear_initdeferred(); + bool initdeferred() const; + void set_initdeferred(bool value); + private: + bool _internal_initdeferred() const; + void _internal_set_initdeferred(bool value); + public: + + // @@protoc_insertion_point(class_scope:pg_query.CreateTrigStmt) + private: + class _Internal; + + template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; + typedef void InternalArenaConstructable_; + typedef void DestructorSkippable_; + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > funcname_; + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > args_; + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > columns_; + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > transition_rels_; + ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr trigname_; + ::pg_query::RangeVar* relation_; + ::pg_query::Node* when_clause_; + ::pg_query::RangeVar* constrrel_; + ::PROTOBUF_NAMESPACE_ID::int32 timing_; + ::PROTOBUF_NAMESPACE_ID::int32 events_; + bool row_; + bool isconstraint_; + bool deferrable_; + bool initdeferred_; + mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; + friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; +}; +// ------------------------------------------------------------------- + +class CreatePLangStmt PROTOBUF_FINAL : + public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.CreatePLangStmt) */ { + public: + inline CreatePLangStmt() : CreatePLangStmt(nullptr) {} + virtual ~CreatePLangStmt(); + + CreatePLangStmt(const CreatePLangStmt& from); + CreatePLangStmt(CreatePLangStmt&& from) noexcept + : CreatePLangStmt() { + *this = ::std::move(from); + } + + inline CreatePLangStmt& operator=(const CreatePLangStmt& from) { + CopyFrom(from); + return *this; + } + inline CreatePLangStmt& operator=(CreatePLangStmt&& from) noexcept { + if (GetArena() == from.GetArena()) { + if (this != &from) InternalSwap(&from); + } else { + CopyFrom(from); + } + return *this; + } + + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { + return GetDescriptor(); + } + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { + return GetMetadataStatic().descriptor; + } + static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { + return GetMetadataStatic().reflection; + } + static const CreatePLangStmt& default_instance(); + + static inline const CreatePLangStmt* internal_default_instance() { + return reinterpret_cast( + &_CreatePLangStmt_default_instance_); + } + static constexpr int kIndexInFileMessages = + 109; + + friend void swap(CreatePLangStmt& a, CreatePLangStmt& b) { + a.Swap(&b); + } + inline void Swap(CreatePLangStmt* other) { + if (other == this) return; + if (GetArena() == other->GetArena()) { + InternalSwap(other); + } else { + ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); + } + } + void UnsafeArenaSwap(CreatePLangStmt* other) { + if (other == this) return; + GOOGLE_DCHECK(GetArena() == other->GetArena()); + InternalSwap(other); + } + + // implements Message ---------------------------------------------- + + inline CreatePLangStmt* New() const final { + return CreateMaybeMessage(nullptr); + } + + CreatePLangStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { + return CreateMaybeMessage(arena); + } + void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void CopyFrom(const CreatePLangStmt& from); + void MergeFrom(const CreatePLangStmt& from); + PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; + bool IsInitialized() const final; + + size_t ByteSizeLong() const final; + const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; + ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( + ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; + int GetCachedSize() const final { return _cached_size_.Get(); } + + private: + inline void SharedCtor(); + inline void SharedDtor(); + void SetCachedSize(int size) const final; + void InternalSwap(CreatePLangStmt* other); + friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; + static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { + return "pg_query.CreatePLangStmt"; + } + protected: + explicit CreatePLangStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena); + private: + static void ArenaDtor(void* object); + inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); + public: + + ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; + private: + static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { + ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); + return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; + } + + public: + + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + + enum : int { + kPlhandlerFieldNumber = 3, + kPlinlineFieldNumber = 4, + kPlvalidatorFieldNumber = 5, + kPlnameFieldNumber = 2, + kReplaceFieldNumber = 1, + kPltrustedFieldNumber = 6, + }; + // repeated .pg_query.Node plhandler = 3 [json_name = "plhandler"]; + int plhandler_size() const; + private: + int _internal_plhandler_size() const; + public: + void clear_plhandler(); + ::pg_query::Node* mutable_plhandler(int index); + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* + mutable_plhandler(); + private: + const ::pg_query::Node& _internal_plhandler(int index) const; + ::pg_query::Node* _internal_add_plhandler(); + public: + const ::pg_query::Node& plhandler(int index) const; + ::pg_query::Node* add_plhandler(); + const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& + plhandler() const; + + // repeated .pg_query.Node plinline = 4 [json_name = "plinline"]; + int plinline_size() const; + private: + int _internal_plinline_size() const; + public: + void clear_plinline(); + ::pg_query::Node* mutable_plinline(int index); + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* + mutable_plinline(); + private: + const ::pg_query::Node& _internal_plinline(int index) const; + ::pg_query::Node* _internal_add_plinline(); + public: + const ::pg_query::Node& plinline(int index) const; + ::pg_query::Node* add_plinline(); + const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& + plinline() const; + + // repeated .pg_query.Node plvalidator = 5 [json_name = "plvalidator"]; + int plvalidator_size() const; + private: + int _internal_plvalidator_size() const; + public: + void clear_plvalidator(); + ::pg_query::Node* mutable_plvalidator(int index); + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* + mutable_plvalidator(); + private: + const ::pg_query::Node& _internal_plvalidator(int index) const; + ::pg_query::Node* _internal_add_plvalidator(); + public: + const ::pg_query::Node& plvalidator(int index) const; + ::pg_query::Node* add_plvalidator(); + const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& + plvalidator() const; + + // string plname = 2 [json_name = "plname"]; + void clear_plname(); + const std::string& plname() const; + void set_plname(const std::string& value); + void set_plname(std::string&& value); + void set_plname(const char* value); + void set_plname(const char* value, size_t size); + std::string* mutable_plname(); + std::string* release_plname(); + void set_allocated_plname(std::string* plname); + private: + const std::string& _internal_plname() const; + void _internal_set_plname(const std::string& value); + std::string* _internal_mutable_plname(); + public: + + // bool replace = 1 [json_name = "replace"]; + void clear_replace(); + bool replace() const; + void set_replace(bool value); + private: + bool _internal_replace() const; + void _internal_set_replace(bool value); + public: + + // bool pltrusted = 6 [json_name = "pltrusted"]; + void clear_pltrusted(); + bool pltrusted() const; + void set_pltrusted(bool value); + private: + bool _internal_pltrusted() const; + void _internal_set_pltrusted(bool value); + public: + + // @@protoc_insertion_point(class_scope:pg_query.CreatePLangStmt) + private: + class _Internal; + + template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; + typedef void InternalArenaConstructable_; + typedef void DestructorSkippable_; + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > plhandler_; + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > plinline_; + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > plvalidator_; + ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr plname_; + bool replace_; + bool pltrusted_; + mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; + friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; +}; +// ------------------------------------------------------------------- + +class CreateRoleStmt PROTOBUF_FINAL : + public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.CreateRoleStmt) */ { + public: + inline CreateRoleStmt() : CreateRoleStmt(nullptr) {} + virtual ~CreateRoleStmt(); + + CreateRoleStmt(const CreateRoleStmt& from); + CreateRoleStmt(CreateRoleStmt&& from) noexcept + : CreateRoleStmt() { + *this = ::std::move(from); + } + + inline CreateRoleStmt& operator=(const CreateRoleStmt& from) { + CopyFrom(from); + return *this; + } + inline CreateRoleStmt& operator=(CreateRoleStmt&& from) noexcept { + if (GetArena() == from.GetArena()) { + if (this != &from) InternalSwap(&from); + } else { + CopyFrom(from); + } + return *this; + } + + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { + return GetDescriptor(); + } + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { + return GetMetadataStatic().descriptor; + } + static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { + return GetMetadataStatic().reflection; + } + static const CreateRoleStmt& default_instance(); + + static inline const CreateRoleStmt* internal_default_instance() { + return reinterpret_cast( + &_CreateRoleStmt_default_instance_); + } + static constexpr int kIndexInFileMessages = + 110; + + friend void swap(CreateRoleStmt& a, CreateRoleStmt& b) { + a.Swap(&b); + } + inline void Swap(CreateRoleStmt* other) { + if (other == this) return; + if (GetArena() == other->GetArena()) { + InternalSwap(other); + } else { + ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); + } + } + void UnsafeArenaSwap(CreateRoleStmt* other) { + if (other == this) return; + GOOGLE_DCHECK(GetArena() == other->GetArena()); + InternalSwap(other); + } + + // implements Message ---------------------------------------------- + + inline CreateRoleStmt* New() const final { + return CreateMaybeMessage(nullptr); + } + + CreateRoleStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { + return CreateMaybeMessage(arena); + } + void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void CopyFrom(const CreateRoleStmt& from); + void MergeFrom(const CreateRoleStmt& from); + PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; + bool IsInitialized() const final; + + size_t ByteSizeLong() const final; + const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; + ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( + ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; + int GetCachedSize() const final { return _cached_size_.Get(); } + + private: + inline void SharedCtor(); + inline void SharedDtor(); + void SetCachedSize(int size) const final; + void InternalSwap(CreateRoleStmt* other); + friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; + static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { + return "pg_query.CreateRoleStmt"; + } + protected: + explicit CreateRoleStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena); + private: + static void ArenaDtor(void* object); + inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); + public: + + ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; + private: + static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { + ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); + return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; + } + + public: + + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + + enum : int { + kOptionsFieldNumber = 3, + kRoleFieldNumber = 2, + kStmtTypeFieldNumber = 1, + }; + // repeated .pg_query.Node options = 3 [json_name = "options"]; + int options_size() const; + private: + int _internal_options_size() const; + public: + void clear_options(); + ::pg_query::Node* mutable_options(int index); + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* + mutable_options(); + private: + const ::pg_query::Node& _internal_options(int index) const; + ::pg_query::Node* _internal_add_options(); + public: + const ::pg_query::Node& options(int index) const; + ::pg_query::Node* add_options(); + const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& + options() const; + + // string role = 2 [json_name = "role"]; + void clear_role(); + const std::string& role() const; + void set_role(const std::string& value); + void set_role(std::string&& value); + void set_role(const char* value); + void set_role(const char* value, size_t size); + std::string* mutable_role(); + std::string* release_role(); + void set_allocated_role(std::string* role); + private: + const std::string& _internal_role() const; + void _internal_set_role(const std::string& value); + std::string* _internal_mutable_role(); + public: + + // .pg_query.RoleStmtType stmt_type = 1 [json_name = "stmt_type"]; + void clear_stmt_type(); + ::pg_query::RoleStmtType stmt_type() const; + void set_stmt_type(::pg_query::RoleStmtType value); + private: + ::pg_query::RoleStmtType _internal_stmt_type() const; + void _internal_set_stmt_type(::pg_query::RoleStmtType value); + public: + + // @@protoc_insertion_point(class_scope:pg_query.CreateRoleStmt) + private: + class _Internal; + + template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; + typedef void InternalArenaConstructable_; + typedef void DestructorSkippable_; + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > options_; + ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr role_; + int stmt_type_; + mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; + friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; +}; +// ------------------------------------------------------------------- + +class AlterRoleStmt PROTOBUF_FINAL : + public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.AlterRoleStmt) */ { + public: + inline AlterRoleStmt() : AlterRoleStmt(nullptr) {} + virtual ~AlterRoleStmt(); + + AlterRoleStmt(const AlterRoleStmt& from); + AlterRoleStmt(AlterRoleStmt&& from) noexcept + : AlterRoleStmt() { + *this = ::std::move(from); + } + + inline AlterRoleStmt& operator=(const AlterRoleStmt& from) { + CopyFrom(from); + return *this; + } + inline AlterRoleStmt& operator=(AlterRoleStmt&& from) noexcept { + if (GetArena() == from.GetArena()) { + if (this != &from) InternalSwap(&from); + } else { + CopyFrom(from); + } + return *this; + } + + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { + return GetDescriptor(); + } + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { + return GetMetadataStatic().descriptor; + } + static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { + return GetMetadataStatic().reflection; + } + static const AlterRoleStmt& default_instance(); + + static inline const AlterRoleStmt* internal_default_instance() { + return reinterpret_cast( + &_AlterRoleStmt_default_instance_); + } + static constexpr int kIndexInFileMessages = + 111; + + friend void swap(AlterRoleStmt& a, AlterRoleStmt& b) { + a.Swap(&b); + } + inline void Swap(AlterRoleStmt* other) { + if (other == this) return; + if (GetArena() == other->GetArena()) { + InternalSwap(other); + } else { + ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); + } + } + void UnsafeArenaSwap(AlterRoleStmt* other) { + if (other == this) return; + GOOGLE_DCHECK(GetArena() == other->GetArena()); + InternalSwap(other); + } + + // implements Message ---------------------------------------------- + + inline AlterRoleStmt* New() const final { + return CreateMaybeMessage(nullptr); + } + + AlterRoleStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { + return CreateMaybeMessage(arena); + } + void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void CopyFrom(const AlterRoleStmt& from); + void MergeFrom(const AlterRoleStmt& from); + PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; + bool IsInitialized() const final; + + size_t ByteSizeLong() const final; + const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; + ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( + ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; + int GetCachedSize() const final { return _cached_size_.Get(); } + + private: + inline void SharedCtor(); + inline void SharedDtor(); + void SetCachedSize(int size) const final; + void InternalSwap(AlterRoleStmt* other); + friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; + static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { + return "pg_query.AlterRoleStmt"; + } + protected: + explicit AlterRoleStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena); + private: + static void ArenaDtor(void* object); + inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); + public: + + ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; + private: + static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { + ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); + return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; + } + + public: + + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + + enum : int { + kOptionsFieldNumber = 2, + kRoleFieldNumber = 1, + kActionFieldNumber = 3, + }; + // repeated .pg_query.Node options = 2 [json_name = "options"]; + int options_size() const; + private: + int _internal_options_size() const; + public: + void clear_options(); + ::pg_query::Node* mutable_options(int index); + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* + mutable_options(); + private: + const ::pg_query::Node& _internal_options(int index) const; + ::pg_query::Node* _internal_add_options(); + public: + const ::pg_query::Node& options(int index) const; + ::pg_query::Node* add_options(); + const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& + options() const; + + // .pg_query.RoleSpec role = 1 [json_name = "role"]; + bool has_role() const; + private: + bool _internal_has_role() const; + public: + void clear_role(); + const ::pg_query::RoleSpec& role() const; + ::pg_query::RoleSpec* release_role(); + ::pg_query::RoleSpec* mutable_role(); + void set_allocated_role(::pg_query::RoleSpec* role); + private: + const ::pg_query::RoleSpec& _internal_role() const; + ::pg_query::RoleSpec* _internal_mutable_role(); + public: + void unsafe_arena_set_allocated_role( + ::pg_query::RoleSpec* role); + ::pg_query::RoleSpec* unsafe_arena_release_role(); + + // int32 action = 3 [json_name = "action"]; + void clear_action(); + ::PROTOBUF_NAMESPACE_ID::int32 action() const; + void set_action(::PROTOBUF_NAMESPACE_ID::int32 value); + private: + ::PROTOBUF_NAMESPACE_ID::int32 _internal_action() const; + void _internal_set_action(::PROTOBUF_NAMESPACE_ID::int32 value); + public: + + // @@protoc_insertion_point(class_scope:pg_query.AlterRoleStmt) + private: + class _Internal; + + template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; + typedef void InternalArenaConstructable_; + typedef void DestructorSkippable_; + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > options_; + ::pg_query::RoleSpec* role_; + ::PROTOBUF_NAMESPACE_ID::int32 action_; + mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; + friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; +}; +// ------------------------------------------------------------------- + +class DropRoleStmt PROTOBUF_FINAL : + public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.DropRoleStmt) */ { + public: + inline DropRoleStmt() : DropRoleStmt(nullptr) {} + virtual ~DropRoleStmt(); + + DropRoleStmt(const DropRoleStmt& from); + DropRoleStmt(DropRoleStmt&& from) noexcept + : DropRoleStmt() { + *this = ::std::move(from); + } + + inline DropRoleStmt& operator=(const DropRoleStmt& from) { + CopyFrom(from); + return *this; + } + inline DropRoleStmt& operator=(DropRoleStmt&& from) noexcept { + if (GetArena() == from.GetArena()) { + if (this != &from) InternalSwap(&from); + } else { + CopyFrom(from); + } + return *this; + } + + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { + return GetDescriptor(); + } + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { + return GetMetadataStatic().descriptor; + } + static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { + return GetMetadataStatic().reflection; + } + static const DropRoleStmt& default_instance(); + + static inline const DropRoleStmt* internal_default_instance() { + return reinterpret_cast( + &_DropRoleStmt_default_instance_); + } + static constexpr int kIndexInFileMessages = + 112; + + friend void swap(DropRoleStmt& a, DropRoleStmt& b) { + a.Swap(&b); + } + inline void Swap(DropRoleStmt* other) { + if (other == this) return; + if (GetArena() == other->GetArena()) { + InternalSwap(other); + } else { + ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); + } + } + void UnsafeArenaSwap(DropRoleStmt* other) { + if (other == this) return; + GOOGLE_DCHECK(GetArena() == other->GetArena()); + InternalSwap(other); + } + + // implements Message ---------------------------------------------- + + inline DropRoleStmt* New() const final { + return CreateMaybeMessage(nullptr); + } + + DropRoleStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { + return CreateMaybeMessage(arena); + } + void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void CopyFrom(const DropRoleStmt& from); + void MergeFrom(const DropRoleStmt& from); + PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; + bool IsInitialized() const final; + + size_t ByteSizeLong() const final; + const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; + ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( + ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; + int GetCachedSize() const final { return _cached_size_.Get(); } + + private: + inline void SharedCtor(); + inline void SharedDtor(); + void SetCachedSize(int size) const final; + void InternalSwap(DropRoleStmt* other); + friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; + static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { + return "pg_query.DropRoleStmt"; + } + protected: + explicit DropRoleStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena); + private: + static void ArenaDtor(void* object); + inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); + public: + + ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; + private: + static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { + ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); + return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; + } + + public: + + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + + enum : int { + kRolesFieldNumber = 1, + kMissingOkFieldNumber = 2, + }; + // repeated .pg_query.Node roles = 1 [json_name = "roles"]; + int roles_size() const; + private: + int _internal_roles_size() const; + public: + void clear_roles(); + ::pg_query::Node* mutable_roles(int index); + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* + mutable_roles(); + private: + const ::pg_query::Node& _internal_roles(int index) const; + ::pg_query::Node* _internal_add_roles(); + public: + const ::pg_query::Node& roles(int index) const; + ::pg_query::Node* add_roles(); + const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& + roles() const; + + // bool missing_ok = 2 [json_name = "missing_ok"]; + void clear_missing_ok(); + bool missing_ok() const; + void set_missing_ok(bool value); + private: + bool _internal_missing_ok() const; + void _internal_set_missing_ok(bool value); + public: + + // @@protoc_insertion_point(class_scope:pg_query.DropRoleStmt) + private: + class _Internal; + + template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; + typedef void InternalArenaConstructable_; + typedef void DestructorSkippable_; + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > roles_; + bool missing_ok_; + mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; + friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; +}; +// ------------------------------------------------------------------- + +class LockStmt PROTOBUF_FINAL : + public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.LockStmt) */ { + public: + inline LockStmt() : LockStmt(nullptr) {} + virtual ~LockStmt(); + + LockStmt(const LockStmt& from); + LockStmt(LockStmt&& from) noexcept + : LockStmt() { + *this = ::std::move(from); + } + + inline LockStmt& operator=(const LockStmt& from) { + CopyFrom(from); + return *this; + } + inline LockStmt& operator=(LockStmt&& from) noexcept { + if (GetArena() == from.GetArena()) { + if (this != &from) InternalSwap(&from); + } else { + CopyFrom(from); + } + return *this; + } + + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { + return GetDescriptor(); + } + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { + return GetMetadataStatic().descriptor; + } + static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { + return GetMetadataStatic().reflection; + } + static const LockStmt& default_instance(); + + static inline const LockStmt* internal_default_instance() { + return reinterpret_cast( + &_LockStmt_default_instance_); + } + static constexpr int kIndexInFileMessages = + 113; + + friend void swap(LockStmt& a, LockStmt& b) { + a.Swap(&b); + } + inline void Swap(LockStmt* other) { + if (other == this) return; + if (GetArena() == other->GetArena()) { + InternalSwap(other); + } else { + ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); + } + } + void UnsafeArenaSwap(LockStmt* other) { + if (other == this) return; + GOOGLE_DCHECK(GetArena() == other->GetArena()); + InternalSwap(other); + } + + // implements Message ---------------------------------------------- + + inline LockStmt* New() const final { + return CreateMaybeMessage(nullptr); + } + + LockStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { + return CreateMaybeMessage(arena); + } + void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void CopyFrom(const LockStmt& from); + void MergeFrom(const LockStmt& from); + PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; + bool IsInitialized() const final; + + size_t ByteSizeLong() const final; + const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; + ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( + ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; + int GetCachedSize() const final { return _cached_size_.Get(); } + + private: + inline void SharedCtor(); + inline void SharedDtor(); + void SetCachedSize(int size) const final; + void InternalSwap(LockStmt* other); + friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; + static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { + return "pg_query.LockStmt"; + } + protected: + explicit LockStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena); + private: + static void ArenaDtor(void* object); + inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); + public: + + ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; + private: + static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { + ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); + return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; + } + + public: + + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + + enum : int { + kRelationsFieldNumber = 1, + kModeFieldNumber = 2, + kNowaitFieldNumber = 3, + }; + // repeated .pg_query.Node relations = 1 [json_name = "relations"]; + int relations_size() const; + private: + int _internal_relations_size() const; + public: + void clear_relations(); + ::pg_query::Node* mutable_relations(int index); + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* + mutable_relations(); + private: + const ::pg_query::Node& _internal_relations(int index) const; + ::pg_query::Node* _internal_add_relations(); + public: + const ::pg_query::Node& relations(int index) const; + ::pg_query::Node* add_relations(); + const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& + relations() const; + + // int32 mode = 2 [json_name = "mode"]; + void clear_mode(); + ::PROTOBUF_NAMESPACE_ID::int32 mode() const; + void set_mode(::PROTOBUF_NAMESPACE_ID::int32 value); + private: + ::PROTOBUF_NAMESPACE_ID::int32 _internal_mode() const; + void _internal_set_mode(::PROTOBUF_NAMESPACE_ID::int32 value); + public: + + // bool nowait = 3 [json_name = "nowait"]; + void clear_nowait(); + bool nowait() const; + void set_nowait(bool value); + private: + bool _internal_nowait() const; + void _internal_set_nowait(bool value); + public: + + // @@protoc_insertion_point(class_scope:pg_query.LockStmt) + private: + class _Internal; + + template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; + typedef void InternalArenaConstructable_; + typedef void DestructorSkippable_; + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > relations_; + ::PROTOBUF_NAMESPACE_ID::int32 mode_; + bool nowait_; + mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; + friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; +}; +// ------------------------------------------------------------------- + +class ConstraintsSetStmt PROTOBUF_FINAL : + public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.ConstraintsSetStmt) */ { + public: + inline ConstraintsSetStmt() : ConstraintsSetStmt(nullptr) {} + virtual ~ConstraintsSetStmt(); + + ConstraintsSetStmt(const ConstraintsSetStmt& from); + ConstraintsSetStmt(ConstraintsSetStmt&& from) noexcept + : ConstraintsSetStmt() { + *this = ::std::move(from); + } + + inline ConstraintsSetStmt& operator=(const ConstraintsSetStmt& from) { + CopyFrom(from); + return *this; + } + inline ConstraintsSetStmt& operator=(ConstraintsSetStmt&& from) noexcept { + if (GetArena() == from.GetArena()) { + if (this != &from) InternalSwap(&from); + } else { + CopyFrom(from); + } + return *this; + } + + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { + return GetDescriptor(); + } + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { + return GetMetadataStatic().descriptor; + } + static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { + return GetMetadataStatic().reflection; + } + static const ConstraintsSetStmt& default_instance(); + + static inline const ConstraintsSetStmt* internal_default_instance() { + return reinterpret_cast( + &_ConstraintsSetStmt_default_instance_); + } + static constexpr int kIndexInFileMessages = + 114; + + friend void swap(ConstraintsSetStmt& a, ConstraintsSetStmt& b) { + a.Swap(&b); + } + inline void Swap(ConstraintsSetStmt* other) { + if (other == this) return; + if (GetArena() == other->GetArena()) { + InternalSwap(other); + } else { + ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); + } + } + void UnsafeArenaSwap(ConstraintsSetStmt* other) { + if (other == this) return; + GOOGLE_DCHECK(GetArena() == other->GetArena()); + InternalSwap(other); + } + + // implements Message ---------------------------------------------- + + inline ConstraintsSetStmt* New() const final { + return CreateMaybeMessage(nullptr); + } + + ConstraintsSetStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { + return CreateMaybeMessage(arena); + } + void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void CopyFrom(const ConstraintsSetStmt& from); + void MergeFrom(const ConstraintsSetStmt& from); + PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; + bool IsInitialized() const final; + + size_t ByteSizeLong() const final; + const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; + ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( + ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; + int GetCachedSize() const final { return _cached_size_.Get(); } + + private: + inline void SharedCtor(); + inline void SharedDtor(); + void SetCachedSize(int size) const final; + void InternalSwap(ConstraintsSetStmt* other); + friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; + static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { + return "pg_query.ConstraintsSetStmt"; + } + protected: + explicit ConstraintsSetStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena); + private: + static void ArenaDtor(void* object); + inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); + public: + + ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; + private: + static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { + ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); + return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; + } + + public: + + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + + enum : int { + kConstraintsFieldNumber = 1, + kDeferredFieldNumber = 2, + }; + // repeated .pg_query.Node constraints = 1 [json_name = "constraints"]; + int constraints_size() const; + private: + int _internal_constraints_size() const; + public: + void clear_constraints(); + ::pg_query::Node* mutable_constraints(int index); + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* + mutable_constraints(); + private: + const ::pg_query::Node& _internal_constraints(int index) const; + ::pg_query::Node* _internal_add_constraints(); + public: + const ::pg_query::Node& constraints(int index) const; + ::pg_query::Node* add_constraints(); + const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& + constraints() const; + + // bool deferred = 2 [json_name = "deferred"]; + void clear_deferred(); + bool deferred() const; + void set_deferred(bool value); + private: + bool _internal_deferred() const; + void _internal_set_deferred(bool value); + public: + + // @@protoc_insertion_point(class_scope:pg_query.ConstraintsSetStmt) + private: + class _Internal; + + template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; + typedef void InternalArenaConstructable_; + typedef void DestructorSkippable_; + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > constraints_; + bool deferred_; + mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; + friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; +}; +// ------------------------------------------------------------------- + +class ReindexStmt PROTOBUF_FINAL : + public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.ReindexStmt) */ { + public: + inline ReindexStmt() : ReindexStmt(nullptr) {} + virtual ~ReindexStmt(); + + ReindexStmt(const ReindexStmt& from); + ReindexStmt(ReindexStmt&& from) noexcept + : ReindexStmt() { + *this = ::std::move(from); + } + + inline ReindexStmt& operator=(const ReindexStmt& from) { + CopyFrom(from); + return *this; + } + inline ReindexStmt& operator=(ReindexStmt&& from) noexcept { + if (GetArena() == from.GetArena()) { + if (this != &from) InternalSwap(&from); + } else { + CopyFrom(from); + } + return *this; + } + + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { + return GetDescriptor(); + } + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { + return GetMetadataStatic().descriptor; + } + static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { + return GetMetadataStatic().reflection; + } + static const ReindexStmt& default_instance(); + + static inline const ReindexStmt* internal_default_instance() { + return reinterpret_cast( + &_ReindexStmt_default_instance_); + } + static constexpr int kIndexInFileMessages = + 115; + + friend void swap(ReindexStmt& a, ReindexStmt& b) { + a.Swap(&b); + } + inline void Swap(ReindexStmt* other) { + if (other == this) return; + if (GetArena() == other->GetArena()) { + InternalSwap(other); + } else { + ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); + } + } + void UnsafeArenaSwap(ReindexStmt* other) { + if (other == this) return; + GOOGLE_DCHECK(GetArena() == other->GetArena()); + InternalSwap(other); + } + + // implements Message ---------------------------------------------- + + inline ReindexStmt* New() const final { + return CreateMaybeMessage(nullptr); + } + + ReindexStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { + return CreateMaybeMessage(arena); + } + void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void CopyFrom(const ReindexStmt& from); + void MergeFrom(const ReindexStmt& from); + PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; + bool IsInitialized() const final; + + size_t ByteSizeLong() const final; + const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; + ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( + ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; + int GetCachedSize() const final { return _cached_size_.Get(); } + + private: + inline void SharedCtor(); + inline void SharedDtor(); + void SetCachedSize(int size) const final; + void InternalSwap(ReindexStmt* other); + friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; + static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { + return "pg_query.ReindexStmt"; + } + protected: + explicit ReindexStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena); + private: + static void ArenaDtor(void* object); + inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); + public: + + ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; + private: + static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { + ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); + return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; + } + + public: + + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + + enum : int { + kNameFieldNumber = 3, + kRelationFieldNumber = 2, + kKindFieldNumber = 1, + kOptionsFieldNumber = 4, + kConcurrentFieldNumber = 5, + }; + // string name = 3 [json_name = "name"]; + void clear_name(); + const std::string& name() const; + void set_name(const std::string& value); + void set_name(std::string&& value); + void set_name(const char* value); + void set_name(const char* value, size_t size); + std::string* mutable_name(); + std::string* release_name(); + void set_allocated_name(std::string* name); + private: + const std::string& _internal_name() const; + void _internal_set_name(const std::string& value); + std::string* _internal_mutable_name(); + public: + + // .pg_query.RangeVar relation = 2 [json_name = "relation"]; + bool has_relation() const; + private: + bool _internal_has_relation() const; + public: + void clear_relation(); + const ::pg_query::RangeVar& relation() const; + ::pg_query::RangeVar* release_relation(); + ::pg_query::RangeVar* mutable_relation(); + void set_allocated_relation(::pg_query::RangeVar* relation); + private: + const ::pg_query::RangeVar& _internal_relation() const; + ::pg_query::RangeVar* _internal_mutable_relation(); + public: + void unsafe_arena_set_allocated_relation( + ::pg_query::RangeVar* relation); + ::pg_query::RangeVar* unsafe_arena_release_relation(); + + // .pg_query.ReindexObjectType kind = 1 [json_name = "kind"]; + void clear_kind(); + ::pg_query::ReindexObjectType kind() const; + void set_kind(::pg_query::ReindexObjectType value); + private: + ::pg_query::ReindexObjectType _internal_kind() const; + void _internal_set_kind(::pg_query::ReindexObjectType value); + public: + + // int32 options = 4 [json_name = "options"]; + void clear_options(); + ::PROTOBUF_NAMESPACE_ID::int32 options() const; + void set_options(::PROTOBUF_NAMESPACE_ID::int32 value); + private: + ::PROTOBUF_NAMESPACE_ID::int32 _internal_options() const; + void _internal_set_options(::PROTOBUF_NAMESPACE_ID::int32 value); + public: + + // bool concurrent = 5 [json_name = "concurrent"]; + void clear_concurrent(); + bool concurrent() const; + void set_concurrent(bool value); + private: + bool _internal_concurrent() const; + void _internal_set_concurrent(bool value); + public: + + // @@protoc_insertion_point(class_scope:pg_query.ReindexStmt) + private: + class _Internal; + + template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; + typedef void InternalArenaConstructable_; + typedef void DestructorSkippable_; + ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr name_; + ::pg_query::RangeVar* relation_; + int kind_; + ::PROTOBUF_NAMESPACE_ID::int32 options_; + bool concurrent_; + mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; + friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; +}; +// ------------------------------------------------------------------- + +class CheckPointStmt PROTOBUF_FINAL : + public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.CheckPointStmt) */ { + public: + inline CheckPointStmt() : CheckPointStmt(nullptr) {} + virtual ~CheckPointStmt(); + + CheckPointStmt(const CheckPointStmt& from); + CheckPointStmt(CheckPointStmt&& from) noexcept + : CheckPointStmt() { + *this = ::std::move(from); + } + + inline CheckPointStmt& operator=(const CheckPointStmt& from) { + CopyFrom(from); + return *this; + } + inline CheckPointStmt& operator=(CheckPointStmt&& from) noexcept { + if (GetArena() == from.GetArena()) { + if (this != &from) InternalSwap(&from); + } else { + CopyFrom(from); + } + return *this; + } + + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { + return GetDescriptor(); + } + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { + return GetMetadataStatic().descriptor; + } + static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { + return GetMetadataStatic().reflection; + } + static const CheckPointStmt& default_instance(); + + static inline const CheckPointStmt* internal_default_instance() { + return reinterpret_cast( + &_CheckPointStmt_default_instance_); + } + static constexpr int kIndexInFileMessages = + 116; + + friend void swap(CheckPointStmt& a, CheckPointStmt& b) { + a.Swap(&b); + } + inline void Swap(CheckPointStmt* other) { + if (other == this) return; + if (GetArena() == other->GetArena()) { + InternalSwap(other); + } else { + ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); + } + } + void UnsafeArenaSwap(CheckPointStmt* other) { + if (other == this) return; + GOOGLE_DCHECK(GetArena() == other->GetArena()); + InternalSwap(other); + } + + // implements Message ---------------------------------------------- + + inline CheckPointStmt* New() const final { + return CreateMaybeMessage(nullptr); + } + + CheckPointStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { + return CreateMaybeMessage(arena); + } + void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void CopyFrom(const CheckPointStmt& from); + void MergeFrom(const CheckPointStmt& from); + PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; + bool IsInitialized() const final; + + size_t ByteSizeLong() const final; + const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; + ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( + ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; + int GetCachedSize() const final { return _cached_size_.Get(); } + + private: + inline void SharedCtor(); + inline void SharedDtor(); + void SetCachedSize(int size) const final; + void InternalSwap(CheckPointStmt* other); + friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; + static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { + return "pg_query.CheckPointStmt"; + } + protected: + explicit CheckPointStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena); + private: + static void ArenaDtor(void* object); + inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); + public: + + ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; + private: + static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { + ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); + return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; + } + + public: + + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + + // @@protoc_insertion_point(class_scope:pg_query.CheckPointStmt) + private: + class _Internal; + + template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; + typedef void InternalArenaConstructable_; + typedef void DestructorSkippable_; + mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; + friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; +}; +// ------------------------------------------------------------------- + +class CreateSchemaStmt PROTOBUF_FINAL : + public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.CreateSchemaStmt) */ { + public: + inline CreateSchemaStmt() : CreateSchemaStmt(nullptr) {} + virtual ~CreateSchemaStmt(); + + CreateSchemaStmt(const CreateSchemaStmt& from); + CreateSchemaStmt(CreateSchemaStmt&& from) noexcept + : CreateSchemaStmt() { + *this = ::std::move(from); + } + + inline CreateSchemaStmt& operator=(const CreateSchemaStmt& from) { + CopyFrom(from); + return *this; + } + inline CreateSchemaStmt& operator=(CreateSchemaStmt&& from) noexcept { + if (GetArena() == from.GetArena()) { + if (this != &from) InternalSwap(&from); + } else { + CopyFrom(from); + } + return *this; + } + + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { + return GetDescriptor(); + } + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { + return GetMetadataStatic().descriptor; + } + static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { + return GetMetadataStatic().reflection; + } + static const CreateSchemaStmt& default_instance(); + + static inline const CreateSchemaStmt* internal_default_instance() { + return reinterpret_cast( + &_CreateSchemaStmt_default_instance_); + } + static constexpr int kIndexInFileMessages = + 117; + + friend void swap(CreateSchemaStmt& a, CreateSchemaStmt& b) { + a.Swap(&b); + } + inline void Swap(CreateSchemaStmt* other) { + if (other == this) return; + if (GetArena() == other->GetArena()) { + InternalSwap(other); + } else { + ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); + } + } + void UnsafeArenaSwap(CreateSchemaStmt* other) { + if (other == this) return; + GOOGLE_DCHECK(GetArena() == other->GetArena()); + InternalSwap(other); + } + + // implements Message ---------------------------------------------- + + inline CreateSchemaStmt* New() const final { + return CreateMaybeMessage(nullptr); + } + + CreateSchemaStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { + return CreateMaybeMessage(arena); + } + void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void CopyFrom(const CreateSchemaStmt& from); + void MergeFrom(const CreateSchemaStmt& from); + PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; + bool IsInitialized() const final; + + size_t ByteSizeLong() const final; + const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; + ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( + ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; + int GetCachedSize() const final { return _cached_size_.Get(); } + + private: + inline void SharedCtor(); + inline void SharedDtor(); + void SetCachedSize(int size) const final; + void InternalSwap(CreateSchemaStmt* other); + friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; + static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { + return "pg_query.CreateSchemaStmt"; + } + protected: + explicit CreateSchemaStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena); + private: + static void ArenaDtor(void* object); + inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); + public: + + ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; + private: + static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { + ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); + return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; + } + + public: + + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + + enum : int { + kSchemaEltsFieldNumber = 3, + kSchemanameFieldNumber = 1, + kAuthroleFieldNumber = 2, + kIfNotExistsFieldNumber = 4, + }; + // repeated .pg_query.Node schema_elts = 3 [json_name = "schemaElts"]; + int schema_elts_size() const; + private: + int _internal_schema_elts_size() const; + public: + void clear_schema_elts(); + ::pg_query::Node* mutable_schema_elts(int index); + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* + mutable_schema_elts(); + private: + const ::pg_query::Node& _internal_schema_elts(int index) const; + ::pg_query::Node* _internal_add_schema_elts(); + public: + const ::pg_query::Node& schema_elts(int index) const; + ::pg_query::Node* add_schema_elts(); + const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& + schema_elts() const; + + // string schemaname = 1 [json_name = "schemaname"]; + void clear_schemaname(); + const std::string& schemaname() const; + void set_schemaname(const std::string& value); + void set_schemaname(std::string&& value); + void set_schemaname(const char* value); + void set_schemaname(const char* value, size_t size); + std::string* mutable_schemaname(); + std::string* release_schemaname(); + void set_allocated_schemaname(std::string* schemaname); + private: + const std::string& _internal_schemaname() const; + void _internal_set_schemaname(const std::string& value); + std::string* _internal_mutable_schemaname(); + public: + + // .pg_query.RoleSpec authrole = 2 [json_name = "authrole"]; + bool has_authrole() const; + private: + bool _internal_has_authrole() const; + public: + void clear_authrole(); + const ::pg_query::RoleSpec& authrole() const; + ::pg_query::RoleSpec* release_authrole(); + ::pg_query::RoleSpec* mutable_authrole(); + void set_allocated_authrole(::pg_query::RoleSpec* authrole); + private: + const ::pg_query::RoleSpec& _internal_authrole() const; + ::pg_query::RoleSpec* _internal_mutable_authrole(); + public: + void unsafe_arena_set_allocated_authrole( + ::pg_query::RoleSpec* authrole); + ::pg_query::RoleSpec* unsafe_arena_release_authrole(); + + // bool if_not_exists = 4 [json_name = "if_not_exists"]; + void clear_if_not_exists(); + bool if_not_exists() const; + void set_if_not_exists(bool value); + private: + bool _internal_if_not_exists() const; + void _internal_set_if_not_exists(bool value); + public: + + // @@protoc_insertion_point(class_scope:pg_query.CreateSchemaStmt) + private: + class _Internal; + + template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; + typedef void InternalArenaConstructable_; + typedef void DestructorSkippable_; + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > schema_elts_; + ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr schemaname_; + ::pg_query::RoleSpec* authrole_; + bool if_not_exists_; + mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; + friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; +}; +// ------------------------------------------------------------------- + +class AlterDatabaseStmt PROTOBUF_FINAL : + public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.AlterDatabaseStmt) */ { + public: + inline AlterDatabaseStmt() : AlterDatabaseStmt(nullptr) {} + virtual ~AlterDatabaseStmt(); + + AlterDatabaseStmt(const AlterDatabaseStmt& from); + AlterDatabaseStmt(AlterDatabaseStmt&& from) noexcept + : AlterDatabaseStmt() { + *this = ::std::move(from); + } + + inline AlterDatabaseStmt& operator=(const AlterDatabaseStmt& from) { + CopyFrom(from); + return *this; + } + inline AlterDatabaseStmt& operator=(AlterDatabaseStmt&& from) noexcept { + if (GetArena() == from.GetArena()) { + if (this != &from) InternalSwap(&from); + } else { + CopyFrom(from); + } + return *this; + } + + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { + return GetDescriptor(); + } + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { + return GetMetadataStatic().descriptor; + } + static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { + return GetMetadataStatic().reflection; + } + static const AlterDatabaseStmt& default_instance(); + + static inline const AlterDatabaseStmt* internal_default_instance() { + return reinterpret_cast( + &_AlterDatabaseStmt_default_instance_); + } + static constexpr int kIndexInFileMessages = + 118; + + friend void swap(AlterDatabaseStmt& a, AlterDatabaseStmt& b) { + a.Swap(&b); + } + inline void Swap(AlterDatabaseStmt* other) { + if (other == this) return; + if (GetArena() == other->GetArena()) { + InternalSwap(other); + } else { + ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); + } + } + void UnsafeArenaSwap(AlterDatabaseStmt* other) { + if (other == this) return; + GOOGLE_DCHECK(GetArena() == other->GetArena()); + InternalSwap(other); + } + + // implements Message ---------------------------------------------- + + inline AlterDatabaseStmt* New() const final { + return CreateMaybeMessage(nullptr); + } + + AlterDatabaseStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { + return CreateMaybeMessage(arena); + } + void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void CopyFrom(const AlterDatabaseStmt& from); + void MergeFrom(const AlterDatabaseStmt& from); + PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; + bool IsInitialized() const final; + + size_t ByteSizeLong() const final; + const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; + ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( + ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; + int GetCachedSize() const final { return _cached_size_.Get(); } + + private: + inline void SharedCtor(); + inline void SharedDtor(); + void SetCachedSize(int size) const final; + void InternalSwap(AlterDatabaseStmt* other); + friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; + static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { + return "pg_query.AlterDatabaseStmt"; + } + protected: + explicit AlterDatabaseStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena); + private: + static void ArenaDtor(void* object); + inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); + public: + + ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; + private: + static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { + ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); + return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; + } + + public: + + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + + enum : int { + kOptionsFieldNumber = 2, + kDbnameFieldNumber = 1, + }; + // repeated .pg_query.Node options = 2 [json_name = "options"]; + int options_size() const; + private: + int _internal_options_size() const; + public: + void clear_options(); + ::pg_query::Node* mutable_options(int index); + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* + mutable_options(); + private: + const ::pg_query::Node& _internal_options(int index) const; + ::pg_query::Node* _internal_add_options(); + public: + const ::pg_query::Node& options(int index) const; + ::pg_query::Node* add_options(); + const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& + options() const; + + // string dbname = 1 [json_name = "dbname"]; + void clear_dbname(); + const std::string& dbname() const; + void set_dbname(const std::string& value); + void set_dbname(std::string&& value); + void set_dbname(const char* value); + void set_dbname(const char* value, size_t size); + std::string* mutable_dbname(); + std::string* release_dbname(); + void set_allocated_dbname(std::string* dbname); + private: + const std::string& _internal_dbname() const; + void _internal_set_dbname(const std::string& value); + std::string* _internal_mutable_dbname(); + public: + + // @@protoc_insertion_point(class_scope:pg_query.AlterDatabaseStmt) + private: + class _Internal; + + template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; + typedef void InternalArenaConstructable_; + typedef void DestructorSkippable_; + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > options_; + ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr dbname_; + mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; + friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; +}; +// ------------------------------------------------------------------- + +class AlterDatabaseSetStmt PROTOBUF_FINAL : + public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.AlterDatabaseSetStmt) */ { + public: + inline AlterDatabaseSetStmt() : AlterDatabaseSetStmt(nullptr) {} + virtual ~AlterDatabaseSetStmt(); + + AlterDatabaseSetStmt(const AlterDatabaseSetStmt& from); + AlterDatabaseSetStmt(AlterDatabaseSetStmt&& from) noexcept + : AlterDatabaseSetStmt() { + *this = ::std::move(from); + } + + inline AlterDatabaseSetStmt& operator=(const AlterDatabaseSetStmt& from) { + CopyFrom(from); + return *this; + } + inline AlterDatabaseSetStmt& operator=(AlterDatabaseSetStmt&& from) noexcept { + if (GetArena() == from.GetArena()) { + if (this != &from) InternalSwap(&from); + } else { + CopyFrom(from); + } + return *this; + } + + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { + return GetDescriptor(); + } + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { + return GetMetadataStatic().descriptor; + } + static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { + return GetMetadataStatic().reflection; + } + static const AlterDatabaseSetStmt& default_instance(); + + static inline const AlterDatabaseSetStmt* internal_default_instance() { + return reinterpret_cast( + &_AlterDatabaseSetStmt_default_instance_); + } + static constexpr int kIndexInFileMessages = + 119; + + friend void swap(AlterDatabaseSetStmt& a, AlterDatabaseSetStmt& b) { + a.Swap(&b); + } + inline void Swap(AlterDatabaseSetStmt* other) { + if (other == this) return; + if (GetArena() == other->GetArena()) { + InternalSwap(other); + } else { + ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); + } + } + void UnsafeArenaSwap(AlterDatabaseSetStmt* other) { + if (other == this) return; + GOOGLE_DCHECK(GetArena() == other->GetArena()); + InternalSwap(other); + } + + // implements Message ---------------------------------------------- + + inline AlterDatabaseSetStmt* New() const final { + return CreateMaybeMessage(nullptr); + } + + AlterDatabaseSetStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { + return CreateMaybeMessage(arena); + } + void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void CopyFrom(const AlterDatabaseSetStmt& from); + void MergeFrom(const AlterDatabaseSetStmt& from); + PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; + bool IsInitialized() const final; + + size_t ByteSizeLong() const final; + const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; + ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( + ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; + int GetCachedSize() const final { return _cached_size_.Get(); } + + private: + inline void SharedCtor(); + inline void SharedDtor(); + void SetCachedSize(int size) const final; + void InternalSwap(AlterDatabaseSetStmt* other); + friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; + static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { + return "pg_query.AlterDatabaseSetStmt"; + } + protected: + explicit AlterDatabaseSetStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena); + private: + static void ArenaDtor(void* object); + inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); + public: + + ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; + private: + static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { + ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); + return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; + } + + public: + + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + + enum : int { + kDbnameFieldNumber = 1, + kSetstmtFieldNumber = 2, + }; + // string dbname = 1 [json_name = "dbname"]; + void clear_dbname(); + const std::string& dbname() const; + void set_dbname(const std::string& value); + void set_dbname(std::string&& value); + void set_dbname(const char* value); + void set_dbname(const char* value, size_t size); + std::string* mutable_dbname(); + std::string* release_dbname(); + void set_allocated_dbname(std::string* dbname); + private: + const std::string& _internal_dbname() const; + void _internal_set_dbname(const std::string& value); + std::string* _internal_mutable_dbname(); + public: + + // .pg_query.VariableSetStmt setstmt = 2 [json_name = "setstmt"]; + bool has_setstmt() const; + private: + bool _internal_has_setstmt() const; + public: + void clear_setstmt(); + const ::pg_query::VariableSetStmt& setstmt() const; + ::pg_query::VariableSetStmt* release_setstmt(); + ::pg_query::VariableSetStmt* mutable_setstmt(); + void set_allocated_setstmt(::pg_query::VariableSetStmt* setstmt); + private: + const ::pg_query::VariableSetStmt& _internal_setstmt() const; + ::pg_query::VariableSetStmt* _internal_mutable_setstmt(); + public: + void unsafe_arena_set_allocated_setstmt( + ::pg_query::VariableSetStmt* setstmt); + ::pg_query::VariableSetStmt* unsafe_arena_release_setstmt(); + + // @@protoc_insertion_point(class_scope:pg_query.AlterDatabaseSetStmt) + private: + class _Internal; + + template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; + typedef void InternalArenaConstructable_; + typedef void DestructorSkippable_; + ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr dbname_; + ::pg_query::VariableSetStmt* setstmt_; + mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; + friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; +}; +// ------------------------------------------------------------------- + +class AlterRoleSetStmt PROTOBUF_FINAL : + public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.AlterRoleSetStmt) */ { + public: + inline AlterRoleSetStmt() : AlterRoleSetStmt(nullptr) {} + virtual ~AlterRoleSetStmt(); + + AlterRoleSetStmt(const AlterRoleSetStmt& from); + AlterRoleSetStmt(AlterRoleSetStmt&& from) noexcept + : AlterRoleSetStmt() { + *this = ::std::move(from); + } + + inline AlterRoleSetStmt& operator=(const AlterRoleSetStmt& from) { + CopyFrom(from); + return *this; + } + inline AlterRoleSetStmt& operator=(AlterRoleSetStmt&& from) noexcept { + if (GetArena() == from.GetArena()) { + if (this != &from) InternalSwap(&from); + } else { + CopyFrom(from); + } + return *this; + } + + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { + return GetDescriptor(); + } + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { + return GetMetadataStatic().descriptor; + } + static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { + return GetMetadataStatic().reflection; + } + static const AlterRoleSetStmt& default_instance(); + + static inline const AlterRoleSetStmt* internal_default_instance() { + return reinterpret_cast( + &_AlterRoleSetStmt_default_instance_); + } + static constexpr int kIndexInFileMessages = + 120; + + friend void swap(AlterRoleSetStmt& a, AlterRoleSetStmt& b) { + a.Swap(&b); + } + inline void Swap(AlterRoleSetStmt* other) { + if (other == this) return; + if (GetArena() == other->GetArena()) { + InternalSwap(other); + } else { + ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); + } + } + void UnsafeArenaSwap(AlterRoleSetStmt* other) { + if (other == this) return; + GOOGLE_DCHECK(GetArena() == other->GetArena()); + InternalSwap(other); + } + + // implements Message ---------------------------------------------- + + inline AlterRoleSetStmt* New() const final { + return CreateMaybeMessage(nullptr); + } + + AlterRoleSetStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { + return CreateMaybeMessage(arena); + } + void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void CopyFrom(const AlterRoleSetStmt& from); + void MergeFrom(const AlterRoleSetStmt& from); + PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; + bool IsInitialized() const final; + + size_t ByteSizeLong() const final; + const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; + ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( + ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; + int GetCachedSize() const final { return _cached_size_.Get(); } + + private: + inline void SharedCtor(); + inline void SharedDtor(); + void SetCachedSize(int size) const final; + void InternalSwap(AlterRoleSetStmt* other); + friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; + static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { + return "pg_query.AlterRoleSetStmt"; + } + protected: + explicit AlterRoleSetStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena); + private: + static void ArenaDtor(void* object); + inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); + public: + + ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; + private: + static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { + ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); + return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; + } + + public: + + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + + enum : int { + kDatabaseFieldNumber = 2, + kRoleFieldNumber = 1, + kSetstmtFieldNumber = 3, + }; + // string database = 2 [json_name = "database"]; + void clear_database(); + const std::string& database() const; + void set_database(const std::string& value); + void set_database(std::string&& value); + void set_database(const char* value); + void set_database(const char* value, size_t size); + std::string* mutable_database(); + std::string* release_database(); + void set_allocated_database(std::string* database); + private: + const std::string& _internal_database() const; + void _internal_set_database(const std::string& value); + std::string* _internal_mutable_database(); + public: + + // .pg_query.RoleSpec role = 1 [json_name = "role"]; + bool has_role() const; + private: + bool _internal_has_role() const; + public: + void clear_role(); + const ::pg_query::RoleSpec& role() const; + ::pg_query::RoleSpec* release_role(); + ::pg_query::RoleSpec* mutable_role(); + void set_allocated_role(::pg_query::RoleSpec* role); + private: + const ::pg_query::RoleSpec& _internal_role() const; + ::pg_query::RoleSpec* _internal_mutable_role(); + public: + void unsafe_arena_set_allocated_role( + ::pg_query::RoleSpec* role); + ::pg_query::RoleSpec* unsafe_arena_release_role(); + + // .pg_query.VariableSetStmt setstmt = 3 [json_name = "setstmt"]; + bool has_setstmt() const; + private: + bool _internal_has_setstmt() const; + public: + void clear_setstmt(); + const ::pg_query::VariableSetStmt& setstmt() const; + ::pg_query::VariableSetStmt* release_setstmt(); + ::pg_query::VariableSetStmt* mutable_setstmt(); + void set_allocated_setstmt(::pg_query::VariableSetStmt* setstmt); + private: + const ::pg_query::VariableSetStmt& _internal_setstmt() const; + ::pg_query::VariableSetStmt* _internal_mutable_setstmt(); + public: + void unsafe_arena_set_allocated_setstmt( + ::pg_query::VariableSetStmt* setstmt); + ::pg_query::VariableSetStmt* unsafe_arena_release_setstmt(); + + // @@protoc_insertion_point(class_scope:pg_query.AlterRoleSetStmt) + private: + class _Internal; + + template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; + typedef void InternalArenaConstructable_; + typedef void DestructorSkippable_; + ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr database_; + ::pg_query::RoleSpec* role_; + ::pg_query::VariableSetStmt* setstmt_; + mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; + friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; +}; +// ------------------------------------------------------------------- + +class CreateConversionStmt PROTOBUF_FINAL : + public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.CreateConversionStmt) */ { + public: + inline CreateConversionStmt() : CreateConversionStmt(nullptr) {} + virtual ~CreateConversionStmt(); + + CreateConversionStmt(const CreateConversionStmt& from); + CreateConversionStmt(CreateConversionStmt&& from) noexcept + : CreateConversionStmt() { + *this = ::std::move(from); + } + + inline CreateConversionStmt& operator=(const CreateConversionStmt& from) { + CopyFrom(from); + return *this; + } + inline CreateConversionStmt& operator=(CreateConversionStmt&& from) noexcept { + if (GetArena() == from.GetArena()) { + if (this != &from) InternalSwap(&from); + } else { + CopyFrom(from); + } + return *this; + } + + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { + return GetDescriptor(); + } + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { + return GetMetadataStatic().descriptor; + } + static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { + return GetMetadataStatic().reflection; + } + static const CreateConversionStmt& default_instance(); + + static inline const CreateConversionStmt* internal_default_instance() { + return reinterpret_cast( + &_CreateConversionStmt_default_instance_); + } + static constexpr int kIndexInFileMessages = + 121; + + friend void swap(CreateConversionStmt& a, CreateConversionStmt& b) { + a.Swap(&b); + } + inline void Swap(CreateConversionStmt* other) { + if (other == this) return; + if (GetArena() == other->GetArena()) { + InternalSwap(other); + } else { + ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); + } + } + void UnsafeArenaSwap(CreateConversionStmt* other) { + if (other == this) return; + GOOGLE_DCHECK(GetArena() == other->GetArena()); + InternalSwap(other); + } + + // implements Message ---------------------------------------------- + + inline CreateConversionStmt* New() const final { + return CreateMaybeMessage(nullptr); + } + + CreateConversionStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { + return CreateMaybeMessage(arena); + } + void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void CopyFrom(const CreateConversionStmt& from); + void MergeFrom(const CreateConversionStmt& from); + PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; + bool IsInitialized() const final; + + size_t ByteSizeLong() const final; + const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; + ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( + ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; + int GetCachedSize() const final { return _cached_size_.Get(); } + + private: + inline void SharedCtor(); + inline void SharedDtor(); + void SetCachedSize(int size) const final; + void InternalSwap(CreateConversionStmt* other); + friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; + static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { + return "pg_query.CreateConversionStmt"; + } + protected: + explicit CreateConversionStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena); + private: + static void ArenaDtor(void* object); + inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); + public: + + ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; + private: + static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { + ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); + return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; + } + + public: + + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + + enum : int { + kConversionNameFieldNumber = 1, + kFuncNameFieldNumber = 4, + kForEncodingNameFieldNumber = 2, + kToEncodingNameFieldNumber = 3, + kDefFieldNumber = 5, + }; + // repeated .pg_query.Node conversion_name = 1 [json_name = "conversion_name"]; + int conversion_name_size() const; + private: + int _internal_conversion_name_size() const; + public: + void clear_conversion_name(); + ::pg_query::Node* mutable_conversion_name(int index); + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* + mutable_conversion_name(); + private: + const ::pg_query::Node& _internal_conversion_name(int index) const; + ::pg_query::Node* _internal_add_conversion_name(); + public: + const ::pg_query::Node& conversion_name(int index) const; + ::pg_query::Node* add_conversion_name(); + const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& + conversion_name() const; + + // repeated .pg_query.Node func_name = 4 [json_name = "func_name"]; + int func_name_size() const; + private: + int _internal_func_name_size() const; + public: + void clear_func_name(); + ::pg_query::Node* mutable_func_name(int index); + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* + mutable_func_name(); + private: + const ::pg_query::Node& _internal_func_name(int index) const; + ::pg_query::Node* _internal_add_func_name(); + public: + const ::pg_query::Node& func_name(int index) const; + ::pg_query::Node* add_func_name(); + const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& + func_name() const; + + // string for_encoding_name = 2 [json_name = "for_encoding_name"]; + void clear_for_encoding_name(); + const std::string& for_encoding_name() const; + void set_for_encoding_name(const std::string& value); + void set_for_encoding_name(std::string&& value); + void set_for_encoding_name(const char* value); + void set_for_encoding_name(const char* value, size_t size); + std::string* mutable_for_encoding_name(); + std::string* release_for_encoding_name(); + void set_allocated_for_encoding_name(std::string* for_encoding_name); + private: + const std::string& _internal_for_encoding_name() const; + void _internal_set_for_encoding_name(const std::string& value); + std::string* _internal_mutable_for_encoding_name(); + public: + + // string to_encoding_name = 3 [json_name = "to_encoding_name"]; + void clear_to_encoding_name(); + const std::string& to_encoding_name() const; + void set_to_encoding_name(const std::string& value); + void set_to_encoding_name(std::string&& value); + void set_to_encoding_name(const char* value); + void set_to_encoding_name(const char* value, size_t size); + std::string* mutable_to_encoding_name(); + std::string* release_to_encoding_name(); + void set_allocated_to_encoding_name(std::string* to_encoding_name); + private: + const std::string& _internal_to_encoding_name() const; + void _internal_set_to_encoding_name(const std::string& value); + std::string* _internal_mutable_to_encoding_name(); + public: + + // bool def = 5 [json_name = "def"]; + void clear_def(); + bool def() const; + void set_def(bool value); + private: + bool _internal_def() const; + void _internal_set_def(bool value); + public: + + // @@protoc_insertion_point(class_scope:pg_query.CreateConversionStmt) + private: + class _Internal; + + template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; + typedef void InternalArenaConstructable_; + typedef void DestructorSkippable_; + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > conversion_name_; + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > func_name_; + ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr for_encoding_name_; + ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr to_encoding_name_; + bool def_; + mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; + friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; +}; +// ------------------------------------------------------------------- + +class CreateCastStmt PROTOBUF_FINAL : + public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.CreateCastStmt) */ { + public: + inline CreateCastStmt() : CreateCastStmt(nullptr) {} + virtual ~CreateCastStmt(); + + CreateCastStmt(const CreateCastStmt& from); + CreateCastStmt(CreateCastStmt&& from) noexcept + : CreateCastStmt() { + *this = ::std::move(from); + } + + inline CreateCastStmt& operator=(const CreateCastStmt& from) { + CopyFrom(from); + return *this; + } + inline CreateCastStmt& operator=(CreateCastStmt&& from) noexcept { + if (GetArena() == from.GetArena()) { + if (this != &from) InternalSwap(&from); + } else { + CopyFrom(from); + } + return *this; + } + + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { + return GetDescriptor(); + } + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { + return GetMetadataStatic().descriptor; + } + static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { + return GetMetadataStatic().reflection; + } + static const CreateCastStmt& default_instance(); + + static inline const CreateCastStmt* internal_default_instance() { + return reinterpret_cast( + &_CreateCastStmt_default_instance_); + } + static constexpr int kIndexInFileMessages = + 122; + + friend void swap(CreateCastStmt& a, CreateCastStmt& b) { + a.Swap(&b); + } + inline void Swap(CreateCastStmt* other) { + if (other == this) return; + if (GetArena() == other->GetArena()) { + InternalSwap(other); + } else { + ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); + } + } + void UnsafeArenaSwap(CreateCastStmt* other) { + if (other == this) return; + GOOGLE_DCHECK(GetArena() == other->GetArena()); + InternalSwap(other); + } + + // implements Message ---------------------------------------------- + + inline CreateCastStmt* New() const final { + return CreateMaybeMessage(nullptr); + } + + CreateCastStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { + return CreateMaybeMessage(arena); + } + void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void CopyFrom(const CreateCastStmt& from); + void MergeFrom(const CreateCastStmt& from); + PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; + bool IsInitialized() const final; + + size_t ByteSizeLong() const final; + const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; + ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( + ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; + int GetCachedSize() const final { return _cached_size_.Get(); } + + private: + inline void SharedCtor(); + inline void SharedDtor(); + void SetCachedSize(int size) const final; + void InternalSwap(CreateCastStmt* other); + friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; + static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { + return "pg_query.CreateCastStmt"; + } + protected: + explicit CreateCastStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena); + private: + static void ArenaDtor(void* object); + inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); + public: + + ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; + private: + static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { + ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); + return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; + } + + public: + + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + + enum : int { + kSourcetypeFieldNumber = 1, + kTargettypeFieldNumber = 2, + kFuncFieldNumber = 3, + kContextFieldNumber = 4, + kInoutFieldNumber = 5, + }; + // .pg_query.TypeName sourcetype = 1 [json_name = "sourcetype"]; + bool has_sourcetype() const; + private: + bool _internal_has_sourcetype() const; + public: + void clear_sourcetype(); + const ::pg_query::TypeName& sourcetype() const; + ::pg_query::TypeName* release_sourcetype(); + ::pg_query::TypeName* mutable_sourcetype(); + void set_allocated_sourcetype(::pg_query::TypeName* sourcetype); + private: + const ::pg_query::TypeName& _internal_sourcetype() const; + ::pg_query::TypeName* _internal_mutable_sourcetype(); + public: + void unsafe_arena_set_allocated_sourcetype( + ::pg_query::TypeName* sourcetype); + ::pg_query::TypeName* unsafe_arena_release_sourcetype(); + + // .pg_query.TypeName targettype = 2 [json_name = "targettype"]; + bool has_targettype() const; + private: + bool _internal_has_targettype() const; + public: + void clear_targettype(); + const ::pg_query::TypeName& targettype() const; + ::pg_query::TypeName* release_targettype(); + ::pg_query::TypeName* mutable_targettype(); + void set_allocated_targettype(::pg_query::TypeName* targettype); + private: + const ::pg_query::TypeName& _internal_targettype() const; + ::pg_query::TypeName* _internal_mutable_targettype(); + public: + void unsafe_arena_set_allocated_targettype( + ::pg_query::TypeName* targettype); + ::pg_query::TypeName* unsafe_arena_release_targettype(); + + // .pg_query.ObjectWithArgs func = 3 [json_name = "func"]; + bool has_func() const; + private: + bool _internal_has_func() const; + public: + void clear_func(); + const ::pg_query::ObjectWithArgs& func() const; + ::pg_query::ObjectWithArgs* release_func(); + ::pg_query::ObjectWithArgs* mutable_func(); + void set_allocated_func(::pg_query::ObjectWithArgs* func); + private: + const ::pg_query::ObjectWithArgs& _internal_func() const; + ::pg_query::ObjectWithArgs* _internal_mutable_func(); + public: + void unsafe_arena_set_allocated_func( + ::pg_query::ObjectWithArgs* func); + ::pg_query::ObjectWithArgs* unsafe_arena_release_func(); + + // .pg_query.CoercionContext context = 4 [json_name = "context"]; + void clear_context(); + ::pg_query::CoercionContext context() const; + void set_context(::pg_query::CoercionContext value); + private: + ::pg_query::CoercionContext _internal_context() const; + void _internal_set_context(::pg_query::CoercionContext value); + public: + + // bool inout = 5 [json_name = "inout"]; + void clear_inout(); + bool inout() const; + void set_inout(bool value); + private: + bool _internal_inout() const; + void _internal_set_inout(bool value); + public: + + // @@protoc_insertion_point(class_scope:pg_query.CreateCastStmt) + private: + class _Internal; + + template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; + typedef void InternalArenaConstructable_; + typedef void DestructorSkippable_; + ::pg_query::TypeName* sourcetype_; + ::pg_query::TypeName* targettype_; + ::pg_query::ObjectWithArgs* func_; + int context_; + bool inout_; + mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; + friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; +}; +// ------------------------------------------------------------------- + +class CreateOpClassStmt PROTOBUF_FINAL : + public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.CreateOpClassStmt) */ { + public: + inline CreateOpClassStmt() : CreateOpClassStmt(nullptr) {} + virtual ~CreateOpClassStmt(); + + CreateOpClassStmt(const CreateOpClassStmt& from); + CreateOpClassStmt(CreateOpClassStmt&& from) noexcept + : CreateOpClassStmt() { + *this = ::std::move(from); + } + + inline CreateOpClassStmt& operator=(const CreateOpClassStmt& from) { + CopyFrom(from); + return *this; + } + inline CreateOpClassStmt& operator=(CreateOpClassStmt&& from) noexcept { + if (GetArena() == from.GetArena()) { + if (this != &from) InternalSwap(&from); + } else { + CopyFrom(from); + } + return *this; + } + + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { + return GetDescriptor(); + } + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { + return GetMetadataStatic().descriptor; + } + static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { + return GetMetadataStatic().reflection; + } + static const CreateOpClassStmt& default_instance(); + + static inline const CreateOpClassStmt* internal_default_instance() { + return reinterpret_cast( + &_CreateOpClassStmt_default_instance_); + } + static constexpr int kIndexInFileMessages = + 123; + + friend void swap(CreateOpClassStmt& a, CreateOpClassStmt& b) { + a.Swap(&b); + } + inline void Swap(CreateOpClassStmt* other) { + if (other == this) return; + if (GetArena() == other->GetArena()) { + InternalSwap(other); + } else { + ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); + } + } + void UnsafeArenaSwap(CreateOpClassStmt* other) { + if (other == this) return; + GOOGLE_DCHECK(GetArena() == other->GetArena()); + InternalSwap(other); + } + + // implements Message ---------------------------------------------- + + inline CreateOpClassStmt* New() const final { + return CreateMaybeMessage(nullptr); + } + + CreateOpClassStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { + return CreateMaybeMessage(arena); + } + void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void CopyFrom(const CreateOpClassStmt& from); + void MergeFrom(const CreateOpClassStmt& from); + PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; + bool IsInitialized() const final; + + size_t ByteSizeLong() const final; + const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; + ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( + ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; + int GetCachedSize() const final { return _cached_size_.Get(); } + + private: + inline void SharedCtor(); + inline void SharedDtor(); + void SetCachedSize(int size) const final; + void InternalSwap(CreateOpClassStmt* other); + friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; + static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { + return "pg_query.CreateOpClassStmt"; + } + protected: + explicit CreateOpClassStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena); + private: + static void ArenaDtor(void* object); + inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); + public: + + ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; + private: + static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { + ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); + return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; + } + + public: + + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + + enum : int { + kOpclassnameFieldNumber = 1, + kOpfamilynameFieldNumber = 2, + kItemsFieldNumber = 5, + kAmnameFieldNumber = 3, + kDatatypeFieldNumber = 4, + kIsDefaultFieldNumber = 6, + }; + // repeated .pg_query.Node opclassname = 1 [json_name = "opclassname"]; + int opclassname_size() const; + private: + int _internal_opclassname_size() const; + public: + void clear_opclassname(); + ::pg_query::Node* mutable_opclassname(int index); + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* + mutable_opclassname(); + private: + const ::pg_query::Node& _internal_opclassname(int index) const; + ::pg_query::Node* _internal_add_opclassname(); + public: + const ::pg_query::Node& opclassname(int index) const; + ::pg_query::Node* add_opclassname(); + const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& + opclassname() const; + + // repeated .pg_query.Node opfamilyname = 2 [json_name = "opfamilyname"]; + int opfamilyname_size() const; + private: + int _internal_opfamilyname_size() const; + public: + void clear_opfamilyname(); + ::pg_query::Node* mutable_opfamilyname(int index); + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* + mutable_opfamilyname(); + private: + const ::pg_query::Node& _internal_opfamilyname(int index) const; + ::pg_query::Node* _internal_add_opfamilyname(); + public: + const ::pg_query::Node& opfamilyname(int index) const; + ::pg_query::Node* add_opfamilyname(); + const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& + opfamilyname() const; + + // repeated .pg_query.Node items = 5 [json_name = "items"]; + int items_size() const; + private: + int _internal_items_size() const; + public: + void clear_items(); + ::pg_query::Node* mutable_items(int index); + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* + mutable_items(); + private: + const ::pg_query::Node& _internal_items(int index) const; + ::pg_query::Node* _internal_add_items(); + public: + const ::pg_query::Node& items(int index) const; + ::pg_query::Node* add_items(); + const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& + items() const; + + // string amname = 3 [json_name = "amname"]; + void clear_amname(); + const std::string& amname() const; + void set_amname(const std::string& value); + void set_amname(std::string&& value); + void set_amname(const char* value); + void set_amname(const char* value, size_t size); + std::string* mutable_amname(); + std::string* release_amname(); + void set_allocated_amname(std::string* amname); + private: + const std::string& _internal_amname() const; + void _internal_set_amname(const std::string& value); + std::string* _internal_mutable_amname(); + public: + + // .pg_query.TypeName datatype = 4 [json_name = "datatype"]; + bool has_datatype() const; + private: + bool _internal_has_datatype() const; + public: + void clear_datatype(); + const ::pg_query::TypeName& datatype() const; + ::pg_query::TypeName* release_datatype(); + ::pg_query::TypeName* mutable_datatype(); + void set_allocated_datatype(::pg_query::TypeName* datatype); + private: + const ::pg_query::TypeName& _internal_datatype() const; + ::pg_query::TypeName* _internal_mutable_datatype(); + public: + void unsafe_arena_set_allocated_datatype( + ::pg_query::TypeName* datatype); + ::pg_query::TypeName* unsafe_arena_release_datatype(); + + // bool is_default = 6 [json_name = "isDefault"]; + void clear_is_default(); + bool is_default() const; + void set_is_default(bool value); + private: + bool _internal_is_default() const; + void _internal_set_is_default(bool value); + public: + + // @@protoc_insertion_point(class_scope:pg_query.CreateOpClassStmt) + private: + class _Internal; + + template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; + typedef void InternalArenaConstructable_; + typedef void DestructorSkippable_; + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > opclassname_; + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > opfamilyname_; + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > items_; + ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr amname_; + ::pg_query::TypeName* datatype_; + bool is_default_; + mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; + friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; +}; +// ------------------------------------------------------------------- + +class CreateOpFamilyStmt PROTOBUF_FINAL : + public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.CreateOpFamilyStmt) */ { + public: + inline CreateOpFamilyStmt() : CreateOpFamilyStmt(nullptr) {} + virtual ~CreateOpFamilyStmt(); + + CreateOpFamilyStmt(const CreateOpFamilyStmt& from); + CreateOpFamilyStmt(CreateOpFamilyStmt&& from) noexcept + : CreateOpFamilyStmt() { + *this = ::std::move(from); + } + + inline CreateOpFamilyStmt& operator=(const CreateOpFamilyStmt& from) { + CopyFrom(from); + return *this; + } + inline CreateOpFamilyStmt& operator=(CreateOpFamilyStmt&& from) noexcept { + if (GetArena() == from.GetArena()) { + if (this != &from) InternalSwap(&from); + } else { + CopyFrom(from); + } + return *this; + } + + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { + return GetDescriptor(); + } + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { + return GetMetadataStatic().descriptor; + } + static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { + return GetMetadataStatic().reflection; + } + static const CreateOpFamilyStmt& default_instance(); + + static inline const CreateOpFamilyStmt* internal_default_instance() { + return reinterpret_cast( + &_CreateOpFamilyStmt_default_instance_); + } + static constexpr int kIndexInFileMessages = + 124; + + friend void swap(CreateOpFamilyStmt& a, CreateOpFamilyStmt& b) { + a.Swap(&b); + } + inline void Swap(CreateOpFamilyStmt* other) { + if (other == this) return; + if (GetArena() == other->GetArena()) { + InternalSwap(other); + } else { + ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); + } + } + void UnsafeArenaSwap(CreateOpFamilyStmt* other) { + if (other == this) return; + GOOGLE_DCHECK(GetArena() == other->GetArena()); + InternalSwap(other); + } + + // implements Message ---------------------------------------------- + + inline CreateOpFamilyStmt* New() const final { + return CreateMaybeMessage(nullptr); + } + + CreateOpFamilyStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { + return CreateMaybeMessage(arena); + } + void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void CopyFrom(const CreateOpFamilyStmt& from); + void MergeFrom(const CreateOpFamilyStmt& from); + PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; + bool IsInitialized() const final; + + size_t ByteSizeLong() const final; + const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; + ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( + ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; + int GetCachedSize() const final { return _cached_size_.Get(); } + + private: + inline void SharedCtor(); + inline void SharedDtor(); + void SetCachedSize(int size) const final; + void InternalSwap(CreateOpFamilyStmt* other); + friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; + static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { + return "pg_query.CreateOpFamilyStmt"; + } + protected: + explicit CreateOpFamilyStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena); + private: + static void ArenaDtor(void* object); + inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); + public: + + ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; + private: + static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { + ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); + return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; + } + + public: + + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + + enum : int { + kOpfamilynameFieldNumber = 1, + kAmnameFieldNumber = 2, + }; + // repeated .pg_query.Node opfamilyname = 1 [json_name = "opfamilyname"]; + int opfamilyname_size() const; + private: + int _internal_opfamilyname_size() const; + public: + void clear_opfamilyname(); + ::pg_query::Node* mutable_opfamilyname(int index); + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* + mutable_opfamilyname(); + private: + const ::pg_query::Node& _internal_opfamilyname(int index) const; + ::pg_query::Node* _internal_add_opfamilyname(); + public: + const ::pg_query::Node& opfamilyname(int index) const; + ::pg_query::Node* add_opfamilyname(); + const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& + opfamilyname() const; + + // string amname = 2 [json_name = "amname"]; + void clear_amname(); + const std::string& amname() const; + void set_amname(const std::string& value); + void set_amname(std::string&& value); + void set_amname(const char* value); + void set_amname(const char* value, size_t size); + std::string* mutable_amname(); + std::string* release_amname(); + void set_allocated_amname(std::string* amname); + private: + const std::string& _internal_amname() const; + void _internal_set_amname(const std::string& value); + std::string* _internal_mutable_amname(); + public: + + // @@protoc_insertion_point(class_scope:pg_query.CreateOpFamilyStmt) + private: + class _Internal; + + template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; + typedef void InternalArenaConstructable_; + typedef void DestructorSkippable_; + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > opfamilyname_; + ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr amname_; + mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; + friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; +}; +// ------------------------------------------------------------------- + +class AlterOpFamilyStmt PROTOBUF_FINAL : + public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.AlterOpFamilyStmt) */ { + public: + inline AlterOpFamilyStmt() : AlterOpFamilyStmt(nullptr) {} + virtual ~AlterOpFamilyStmt(); + + AlterOpFamilyStmt(const AlterOpFamilyStmt& from); + AlterOpFamilyStmt(AlterOpFamilyStmt&& from) noexcept + : AlterOpFamilyStmt() { + *this = ::std::move(from); + } + + inline AlterOpFamilyStmt& operator=(const AlterOpFamilyStmt& from) { + CopyFrom(from); + return *this; + } + inline AlterOpFamilyStmt& operator=(AlterOpFamilyStmt&& from) noexcept { + if (GetArena() == from.GetArena()) { + if (this != &from) InternalSwap(&from); + } else { + CopyFrom(from); + } + return *this; + } + + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { + return GetDescriptor(); + } + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { + return GetMetadataStatic().descriptor; + } + static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { + return GetMetadataStatic().reflection; + } + static const AlterOpFamilyStmt& default_instance(); + + static inline const AlterOpFamilyStmt* internal_default_instance() { + return reinterpret_cast( + &_AlterOpFamilyStmt_default_instance_); + } + static constexpr int kIndexInFileMessages = + 125; + + friend void swap(AlterOpFamilyStmt& a, AlterOpFamilyStmt& b) { + a.Swap(&b); + } + inline void Swap(AlterOpFamilyStmt* other) { + if (other == this) return; + if (GetArena() == other->GetArena()) { + InternalSwap(other); + } else { + ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); + } + } + void UnsafeArenaSwap(AlterOpFamilyStmt* other) { + if (other == this) return; + GOOGLE_DCHECK(GetArena() == other->GetArena()); + InternalSwap(other); + } + + // implements Message ---------------------------------------------- + + inline AlterOpFamilyStmt* New() const final { + return CreateMaybeMessage(nullptr); + } + + AlterOpFamilyStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { + return CreateMaybeMessage(arena); + } + void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void CopyFrom(const AlterOpFamilyStmt& from); + void MergeFrom(const AlterOpFamilyStmt& from); + PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; + bool IsInitialized() const final; + + size_t ByteSizeLong() const final; + const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; + ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( + ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; + int GetCachedSize() const final { return _cached_size_.Get(); } + + private: + inline void SharedCtor(); + inline void SharedDtor(); + void SetCachedSize(int size) const final; + void InternalSwap(AlterOpFamilyStmt* other); + friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; + static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { + return "pg_query.AlterOpFamilyStmt"; + } + protected: + explicit AlterOpFamilyStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena); + private: + static void ArenaDtor(void* object); + inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); + public: + + ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; + private: + static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { + ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); + return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; + } + + public: + + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + + enum : int { + kOpfamilynameFieldNumber = 1, + kItemsFieldNumber = 4, + kAmnameFieldNumber = 2, + kIsDropFieldNumber = 3, + }; + // repeated .pg_query.Node opfamilyname = 1 [json_name = "opfamilyname"]; + int opfamilyname_size() const; + private: + int _internal_opfamilyname_size() const; + public: + void clear_opfamilyname(); + ::pg_query::Node* mutable_opfamilyname(int index); + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* + mutable_opfamilyname(); + private: + const ::pg_query::Node& _internal_opfamilyname(int index) const; + ::pg_query::Node* _internal_add_opfamilyname(); + public: + const ::pg_query::Node& opfamilyname(int index) const; + ::pg_query::Node* add_opfamilyname(); + const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& + opfamilyname() const; + + // repeated .pg_query.Node items = 4 [json_name = "items"]; + int items_size() const; + private: + int _internal_items_size() const; + public: + void clear_items(); + ::pg_query::Node* mutable_items(int index); + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* + mutable_items(); + private: + const ::pg_query::Node& _internal_items(int index) const; + ::pg_query::Node* _internal_add_items(); + public: + const ::pg_query::Node& items(int index) const; + ::pg_query::Node* add_items(); + const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& + items() const; + + // string amname = 2 [json_name = "amname"]; + void clear_amname(); + const std::string& amname() const; + void set_amname(const std::string& value); + void set_amname(std::string&& value); + void set_amname(const char* value); + void set_amname(const char* value, size_t size); + std::string* mutable_amname(); + std::string* release_amname(); + void set_allocated_amname(std::string* amname); + private: + const std::string& _internal_amname() const; + void _internal_set_amname(const std::string& value); + std::string* _internal_mutable_amname(); + public: + + // bool is_drop = 3 [json_name = "isDrop"]; + void clear_is_drop(); + bool is_drop() const; + void set_is_drop(bool value); + private: + bool _internal_is_drop() const; + void _internal_set_is_drop(bool value); + public: + + // @@protoc_insertion_point(class_scope:pg_query.AlterOpFamilyStmt) + private: + class _Internal; + + template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; + typedef void InternalArenaConstructable_; + typedef void DestructorSkippable_; + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > opfamilyname_; + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > items_; + ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr amname_; + bool is_drop_; + mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; + friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; +}; +// ------------------------------------------------------------------- + +class PrepareStmt PROTOBUF_FINAL : + public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.PrepareStmt) */ { + public: + inline PrepareStmt() : PrepareStmt(nullptr) {} + virtual ~PrepareStmt(); + + PrepareStmt(const PrepareStmt& from); + PrepareStmt(PrepareStmt&& from) noexcept + : PrepareStmt() { + *this = ::std::move(from); + } + + inline PrepareStmt& operator=(const PrepareStmt& from) { + CopyFrom(from); + return *this; + } + inline PrepareStmt& operator=(PrepareStmt&& from) noexcept { + if (GetArena() == from.GetArena()) { + if (this != &from) InternalSwap(&from); + } else { + CopyFrom(from); + } + return *this; + } + + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { + return GetDescriptor(); + } + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { + return GetMetadataStatic().descriptor; + } + static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { + return GetMetadataStatic().reflection; + } + static const PrepareStmt& default_instance(); + + static inline const PrepareStmt* internal_default_instance() { + return reinterpret_cast( + &_PrepareStmt_default_instance_); + } + static constexpr int kIndexInFileMessages = + 126; + + friend void swap(PrepareStmt& a, PrepareStmt& b) { + a.Swap(&b); + } + inline void Swap(PrepareStmt* other) { + if (other == this) return; + if (GetArena() == other->GetArena()) { + InternalSwap(other); + } else { + ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); + } + } + void UnsafeArenaSwap(PrepareStmt* other) { + if (other == this) return; + GOOGLE_DCHECK(GetArena() == other->GetArena()); + InternalSwap(other); + } + + // implements Message ---------------------------------------------- + + inline PrepareStmt* New() const final { + return CreateMaybeMessage(nullptr); + } + + PrepareStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { + return CreateMaybeMessage(arena); + } + void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void CopyFrom(const PrepareStmt& from); + void MergeFrom(const PrepareStmt& from); + PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; + bool IsInitialized() const final; + + size_t ByteSizeLong() const final; + const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; + ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( + ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; + int GetCachedSize() const final { return _cached_size_.Get(); } + + private: + inline void SharedCtor(); + inline void SharedDtor(); + void SetCachedSize(int size) const final; + void InternalSwap(PrepareStmt* other); + friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; + static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { + return "pg_query.PrepareStmt"; + } + protected: + explicit PrepareStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena); + private: + static void ArenaDtor(void* object); + inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); + public: + + ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; + private: + static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { + ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); + return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; + } + + public: + + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + + enum : int { + kArgtypesFieldNumber = 2, + kNameFieldNumber = 1, + kQueryFieldNumber = 3, + }; + // repeated .pg_query.Node argtypes = 2 [json_name = "argtypes"]; + int argtypes_size() const; + private: + int _internal_argtypes_size() const; + public: + void clear_argtypes(); + ::pg_query::Node* mutable_argtypes(int index); + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* + mutable_argtypes(); + private: + const ::pg_query::Node& _internal_argtypes(int index) const; + ::pg_query::Node* _internal_add_argtypes(); + public: + const ::pg_query::Node& argtypes(int index) const; + ::pg_query::Node* add_argtypes(); + const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& + argtypes() const; + + // string name = 1 [json_name = "name"]; + void clear_name(); + const std::string& name() const; + void set_name(const std::string& value); + void set_name(std::string&& value); + void set_name(const char* value); + void set_name(const char* value, size_t size); + std::string* mutable_name(); + std::string* release_name(); + void set_allocated_name(std::string* name); + private: + const std::string& _internal_name() const; + void _internal_set_name(const std::string& value); + std::string* _internal_mutable_name(); + public: + + // .pg_query.Node query = 3 [json_name = "query"]; + bool has_query() const; + private: + bool _internal_has_query() const; + public: + void clear_query(); + const ::pg_query::Node& query() const; + ::pg_query::Node* release_query(); + ::pg_query::Node* mutable_query(); + void set_allocated_query(::pg_query::Node* query); + private: + const ::pg_query::Node& _internal_query() const; + ::pg_query::Node* _internal_mutable_query(); + public: + void unsafe_arena_set_allocated_query( + ::pg_query::Node* query); + ::pg_query::Node* unsafe_arena_release_query(); + + // @@protoc_insertion_point(class_scope:pg_query.PrepareStmt) + private: + class _Internal; + + template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; + typedef void InternalArenaConstructable_; + typedef void DestructorSkippable_; + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > argtypes_; + ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr name_; + ::pg_query::Node* query_; + mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; + friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; +}; +// ------------------------------------------------------------------- + +class ExecuteStmt PROTOBUF_FINAL : + public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.ExecuteStmt) */ { + public: + inline ExecuteStmt() : ExecuteStmt(nullptr) {} + virtual ~ExecuteStmt(); + + ExecuteStmt(const ExecuteStmt& from); + ExecuteStmt(ExecuteStmt&& from) noexcept + : ExecuteStmt() { + *this = ::std::move(from); + } + + inline ExecuteStmt& operator=(const ExecuteStmt& from) { + CopyFrom(from); + return *this; + } + inline ExecuteStmt& operator=(ExecuteStmt&& from) noexcept { + if (GetArena() == from.GetArena()) { + if (this != &from) InternalSwap(&from); + } else { + CopyFrom(from); + } + return *this; + } + + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { + return GetDescriptor(); + } + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { + return GetMetadataStatic().descriptor; + } + static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { + return GetMetadataStatic().reflection; + } + static const ExecuteStmt& default_instance(); + + static inline const ExecuteStmt* internal_default_instance() { + return reinterpret_cast( + &_ExecuteStmt_default_instance_); + } + static constexpr int kIndexInFileMessages = + 127; + + friend void swap(ExecuteStmt& a, ExecuteStmt& b) { + a.Swap(&b); + } + inline void Swap(ExecuteStmt* other) { + if (other == this) return; + if (GetArena() == other->GetArena()) { + InternalSwap(other); + } else { + ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); + } + } + void UnsafeArenaSwap(ExecuteStmt* other) { + if (other == this) return; + GOOGLE_DCHECK(GetArena() == other->GetArena()); + InternalSwap(other); + } + + // implements Message ---------------------------------------------- + + inline ExecuteStmt* New() const final { + return CreateMaybeMessage(nullptr); + } + + ExecuteStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { + return CreateMaybeMessage(arena); + } + void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void CopyFrom(const ExecuteStmt& from); + void MergeFrom(const ExecuteStmt& from); + PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; + bool IsInitialized() const final; + + size_t ByteSizeLong() const final; + const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; + ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( + ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; + int GetCachedSize() const final { return _cached_size_.Get(); } + + private: + inline void SharedCtor(); + inline void SharedDtor(); + void SetCachedSize(int size) const final; + void InternalSwap(ExecuteStmt* other); + friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; + static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { + return "pg_query.ExecuteStmt"; + } + protected: + explicit ExecuteStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena); + private: + static void ArenaDtor(void* object); + inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); + public: + + ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; + private: + static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { + ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); + return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; + } + + public: + + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + + enum : int { + kParamsFieldNumber = 2, + kNameFieldNumber = 1, + }; + // repeated .pg_query.Node params = 2 [json_name = "params"]; + int params_size() const; + private: + int _internal_params_size() const; + public: + void clear_params(); + ::pg_query::Node* mutable_params(int index); + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* + mutable_params(); + private: + const ::pg_query::Node& _internal_params(int index) const; + ::pg_query::Node* _internal_add_params(); + public: + const ::pg_query::Node& params(int index) const; + ::pg_query::Node* add_params(); + const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& + params() const; + + // string name = 1 [json_name = "name"]; + void clear_name(); + const std::string& name() const; + void set_name(const std::string& value); + void set_name(std::string&& value); + void set_name(const char* value); + void set_name(const char* value, size_t size); + std::string* mutable_name(); + std::string* release_name(); + void set_allocated_name(std::string* name); + private: + const std::string& _internal_name() const; + void _internal_set_name(const std::string& value); + std::string* _internal_mutable_name(); + public: + + // @@protoc_insertion_point(class_scope:pg_query.ExecuteStmt) + private: + class _Internal; + + template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; + typedef void InternalArenaConstructable_; + typedef void DestructorSkippable_; + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > params_; + ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr name_; + mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; + friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; +}; +// ------------------------------------------------------------------- + +class DeallocateStmt PROTOBUF_FINAL : + public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.DeallocateStmt) */ { + public: + inline DeallocateStmt() : DeallocateStmt(nullptr) {} + virtual ~DeallocateStmt(); + + DeallocateStmt(const DeallocateStmt& from); + DeallocateStmt(DeallocateStmt&& from) noexcept + : DeallocateStmt() { + *this = ::std::move(from); + } + + inline DeallocateStmt& operator=(const DeallocateStmt& from) { + CopyFrom(from); + return *this; + } + inline DeallocateStmt& operator=(DeallocateStmt&& from) noexcept { + if (GetArena() == from.GetArena()) { + if (this != &from) InternalSwap(&from); + } else { + CopyFrom(from); + } + return *this; + } + + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { + return GetDescriptor(); + } + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { + return GetMetadataStatic().descriptor; + } + static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { + return GetMetadataStatic().reflection; + } + static const DeallocateStmt& default_instance(); + + static inline const DeallocateStmt* internal_default_instance() { + return reinterpret_cast( + &_DeallocateStmt_default_instance_); + } + static constexpr int kIndexInFileMessages = + 128; + + friend void swap(DeallocateStmt& a, DeallocateStmt& b) { + a.Swap(&b); + } + inline void Swap(DeallocateStmt* other) { + if (other == this) return; + if (GetArena() == other->GetArena()) { + InternalSwap(other); + } else { + ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); + } + } + void UnsafeArenaSwap(DeallocateStmt* other) { + if (other == this) return; + GOOGLE_DCHECK(GetArena() == other->GetArena()); + InternalSwap(other); + } + + // implements Message ---------------------------------------------- + + inline DeallocateStmt* New() const final { + return CreateMaybeMessage(nullptr); + } + + DeallocateStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { + return CreateMaybeMessage(arena); + } + void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void CopyFrom(const DeallocateStmt& from); + void MergeFrom(const DeallocateStmt& from); + PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; + bool IsInitialized() const final; + + size_t ByteSizeLong() const final; + const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; + ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( + ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; + int GetCachedSize() const final { return _cached_size_.Get(); } + + private: + inline void SharedCtor(); + inline void SharedDtor(); + void SetCachedSize(int size) const final; + void InternalSwap(DeallocateStmt* other); + friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; + static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { + return "pg_query.DeallocateStmt"; + } + protected: + explicit DeallocateStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena); + private: + static void ArenaDtor(void* object); + inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); + public: + + ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; + private: + static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { + ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); + return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; + } + + public: + + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + + enum : int { + kNameFieldNumber = 1, + }; + // string name = 1 [json_name = "name"]; + void clear_name(); + const std::string& name() const; + void set_name(const std::string& value); + void set_name(std::string&& value); + void set_name(const char* value); + void set_name(const char* value, size_t size); + std::string* mutable_name(); + std::string* release_name(); + void set_allocated_name(std::string* name); + private: + const std::string& _internal_name() const; + void _internal_set_name(const std::string& value); + std::string* _internal_mutable_name(); + public: + + // @@protoc_insertion_point(class_scope:pg_query.DeallocateStmt) + private: + class _Internal; + + template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; + typedef void InternalArenaConstructable_; + typedef void DestructorSkippable_; + ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr name_; + mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; + friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; +}; +// ------------------------------------------------------------------- + +class DeclareCursorStmt PROTOBUF_FINAL : + public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.DeclareCursorStmt) */ { + public: + inline DeclareCursorStmt() : DeclareCursorStmt(nullptr) {} + virtual ~DeclareCursorStmt(); + + DeclareCursorStmt(const DeclareCursorStmt& from); + DeclareCursorStmt(DeclareCursorStmt&& from) noexcept + : DeclareCursorStmt() { + *this = ::std::move(from); + } + + inline DeclareCursorStmt& operator=(const DeclareCursorStmt& from) { + CopyFrom(from); + return *this; + } + inline DeclareCursorStmt& operator=(DeclareCursorStmt&& from) noexcept { + if (GetArena() == from.GetArena()) { + if (this != &from) InternalSwap(&from); + } else { + CopyFrom(from); + } + return *this; + } + + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { + return GetDescriptor(); + } + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { + return GetMetadataStatic().descriptor; + } + static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { + return GetMetadataStatic().reflection; + } + static const DeclareCursorStmt& default_instance(); + + static inline const DeclareCursorStmt* internal_default_instance() { + return reinterpret_cast( + &_DeclareCursorStmt_default_instance_); + } + static constexpr int kIndexInFileMessages = + 129; + + friend void swap(DeclareCursorStmt& a, DeclareCursorStmt& b) { + a.Swap(&b); + } + inline void Swap(DeclareCursorStmt* other) { + if (other == this) return; + if (GetArena() == other->GetArena()) { + InternalSwap(other); + } else { + ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); + } + } + void UnsafeArenaSwap(DeclareCursorStmt* other) { + if (other == this) return; + GOOGLE_DCHECK(GetArena() == other->GetArena()); + InternalSwap(other); + } + + // implements Message ---------------------------------------------- + + inline DeclareCursorStmt* New() const final { + return CreateMaybeMessage(nullptr); + } + + DeclareCursorStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { + return CreateMaybeMessage(arena); + } + void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void CopyFrom(const DeclareCursorStmt& from); + void MergeFrom(const DeclareCursorStmt& from); + PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; + bool IsInitialized() const final; + + size_t ByteSizeLong() const final; + const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; + ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( + ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; + int GetCachedSize() const final { return _cached_size_.Get(); } + + private: + inline void SharedCtor(); + inline void SharedDtor(); + void SetCachedSize(int size) const final; + void InternalSwap(DeclareCursorStmt* other); + friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; + static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { + return "pg_query.DeclareCursorStmt"; + } + protected: + explicit DeclareCursorStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena); + private: + static void ArenaDtor(void* object); + inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); + public: + + ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; + private: + static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { + ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); + return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; + } + + public: + + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + + enum : int { + kPortalnameFieldNumber = 1, + kQueryFieldNumber = 3, + kOptionsFieldNumber = 2, + }; + // string portalname = 1 [json_name = "portalname"]; + void clear_portalname(); + const std::string& portalname() const; + void set_portalname(const std::string& value); + void set_portalname(std::string&& value); + void set_portalname(const char* value); + void set_portalname(const char* value, size_t size); + std::string* mutable_portalname(); + std::string* release_portalname(); + void set_allocated_portalname(std::string* portalname); + private: + const std::string& _internal_portalname() const; + void _internal_set_portalname(const std::string& value); + std::string* _internal_mutable_portalname(); + public: + + // .pg_query.Node query = 3 [json_name = "query"]; + bool has_query() const; + private: + bool _internal_has_query() const; + public: + void clear_query(); + const ::pg_query::Node& query() const; + ::pg_query::Node* release_query(); + ::pg_query::Node* mutable_query(); + void set_allocated_query(::pg_query::Node* query); + private: + const ::pg_query::Node& _internal_query() const; + ::pg_query::Node* _internal_mutable_query(); + public: + void unsafe_arena_set_allocated_query( + ::pg_query::Node* query); + ::pg_query::Node* unsafe_arena_release_query(); + + // int32 options = 2 [json_name = "options"]; + void clear_options(); + ::PROTOBUF_NAMESPACE_ID::int32 options() const; + void set_options(::PROTOBUF_NAMESPACE_ID::int32 value); + private: + ::PROTOBUF_NAMESPACE_ID::int32 _internal_options() const; + void _internal_set_options(::PROTOBUF_NAMESPACE_ID::int32 value); + public: + + // @@protoc_insertion_point(class_scope:pg_query.DeclareCursorStmt) + private: + class _Internal; + + template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; + typedef void InternalArenaConstructable_; + typedef void DestructorSkippable_; + ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr portalname_; + ::pg_query::Node* query_; + ::PROTOBUF_NAMESPACE_ID::int32 options_; + mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; + friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; +}; +// ------------------------------------------------------------------- + +class CreateTableSpaceStmt PROTOBUF_FINAL : + public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.CreateTableSpaceStmt) */ { + public: + inline CreateTableSpaceStmt() : CreateTableSpaceStmt(nullptr) {} + virtual ~CreateTableSpaceStmt(); + + CreateTableSpaceStmt(const CreateTableSpaceStmt& from); + CreateTableSpaceStmt(CreateTableSpaceStmt&& from) noexcept + : CreateTableSpaceStmt() { + *this = ::std::move(from); + } + + inline CreateTableSpaceStmt& operator=(const CreateTableSpaceStmt& from) { + CopyFrom(from); + return *this; + } + inline CreateTableSpaceStmt& operator=(CreateTableSpaceStmt&& from) noexcept { + if (GetArena() == from.GetArena()) { + if (this != &from) InternalSwap(&from); + } else { + CopyFrom(from); + } + return *this; + } + + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { + return GetDescriptor(); + } + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { + return GetMetadataStatic().descriptor; + } + static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { + return GetMetadataStatic().reflection; + } + static const CreateTableSpaceStmt& default_instance(); + + static inline const CreateTableSpaceStmt* internal_default_instance() { + return reinterpret_cast( + &_CreateTableSpaceStmt_default_instance_); + } + static constexpr int kIndexInFileMessages = + 130; + + friend void swap(CreateTableSpaceStmt& a, CreateTableSpaceStmt& b) { + a.Swap(&b); + } + inline void Swap(CreateTableSpaceStmt* other) { + if (other == this) return; + if (GetArena() == other->GetArena()) { + InternalSwap(other); + } else { + ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); + } + } + void UnsafeArenaSwap(CreateTableSpaceStmt* other) { + if (other == this) return; + GOOGLE_DCHECK(GetArena() == other->GetArena()); + InternalSwap(other); + } + + // implements Message ---------------------------------------------- + + inline CreateTableSpaceStmt* New() const final { + return CreateMaybeMessage(nullptr); + } + + CreateTableSpaceStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { + return CreateMaybeMessage(arena); + } + void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void CopyFrom(const CreateTableSpaceStmt& from); + void MergeFrom(const CreateTableSpaceStmt& from); + PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; + bool IsInitialized() const final; + + size_t ByteSizeLong() const final; + const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; + ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( + ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; + int GetCachedSize() const final { return _cached_size_.Get(); } + + private: + inline void SharedCtor(); + inline void SharedDtor(); + void SetCachedSize(int size) const final; + void InternalSwap(CreateTableSpaceStmt* other); + friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; + static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { + return "pg_query.CreateTableSpaceStmt"; + } + protected: + explicit CreateTableSpaceStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena); + private: + static void ArenaDtor(void* object); + inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); + public: + + ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; + private: + static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { + ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); + return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; + } + + public: + + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + + enum : int { + kOptionsFieldNumber = 4, + kTablespacenameFieldNumber = 1, + kLocationFieldNumber = 3, + kOwnerFieldNumber = 2, + }; + // repeated .pg_query.Node options = 4 [json_name = "options"]; + int options_size() const; + private: + int _internal_options_size() const; + public: + void clear_options(); + ::pg_query::Node* mutable_options(int index); + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* + mutable_options(); + private: + const ::pg_query::Node& _internal_options(int index) const; + ::pg_query::Node* _internal_add_options(); + public: + const ::pg_query::Node& options(int index) const; + ::pg_query::Node* add_options(); + const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& + options() const; + + // string tablespacename = 1 [json_name = "tablespacename"]; + void clear_tablespacename(); + const std::string& tablespacename() const; + void set_tablespacename(const std::string& value); + void set_tablespacename(std::string&& value); + void set_tablespacename(const char* value); + void set_tablespacename(const char* value, size_t size); + std::string* mutable_tablespacename(); + std::string* release_tablespacename(); + void set_allocated_tablespacename(std::string* tablespacename); + private: + const std::string& _internal_tablespacename() const; + void _internal_set_tablespacename(const std::string& value); + std::string* _internal_mutable_tablespacename(); + public: + + // string location = 3 [json_name = "location"]; + void clear_location(); + const std::string& location() const; + void set_location(const std::string& value); + void set_location(std::string&& value); + void set_location(const char* value); + void set_location(const char* value, size_t size); + std::string* mutable_location(); + std::string* release_location(); + void set_allocated_location(std::string* location); + private: + const std::string& _internal_location() const; + void _internal_set_location(const std::string& value); + std::string* _internal_mutable_location(); + public: + + // .pg_query.RoleSpec owner = 2 [json_name = "owner"]; + bool has_owner() const; + private: + bool _internal_has_owner() const; + public: + void clear_owner(); + const ::pg_query::RoleSpec& owner() const; + ::pg_query::RoleSpec* release_owner(); + ::pg_query::RoleSpec* mutable_owner(); + void set_allocated_owner(::pg_query::RoleSpec* owner); + private: + const ::pg_query::RoleSpec& _internal_owner() const; + ::pg_query::RoleSpec* _internal_mutable_owner(); + public: + void unsafe_arena_set_allocated_owner( + ::pg_query::RoleSpec* owner); + ::pg_query::RoleSpec* unsafe_arena_release_owner(); + + // @@protoc_insertion_point(class_scope:pg_query.CreateTableSpaceStmt) + private: + class _Internal; + + template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; + typedef void InternalArenaConstructable_; + typedef void DestructorSkippable_; + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > options_; + ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr tablespacename_; + ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr location_; + ::pg_query::RoleSpec* owner_; + mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; + friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; +}; +// ------------------------------------------------------------------- + +class DropTableSpaceStmt PROTOBUF_FINAL : + public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.DropTableSpaceStmt) */ { + public: + inline DropTableSpaceStmt() : DropTableSpaceStmt(nullptr) {} + virtual ~DropTableSpaceStmt(); + + DropTableSpaceStmt(const DropTableSpaceStmt& from); + DropTableSpaceStmt(DropTableSpaceStmt&& from) noexcept + : DropTableSpaceStmt() { + *this = ::std::move(from); + } + + inline DropTableSpaceStmt& operator=(const DropTableSpaceStmt& from) { + CopyFrom(from); + return *this; + } + inline DropTableSpaceStmt& operator=(DropTableSpaceStmt&& from) noexcept { + if (GetArena() == from.GetArena()) { + if (this != &from) InternalSwap(&from); + } else { + CopyFrom(from); + } + return *this; + } + + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { + return GetDescriptor(); + } + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { + return GetMetadataStatic().descriptor; + } + static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { + return GetMetadataStatic().reflection; + } + static const DropTableSpaceStmt& default_instance(); + + static inline const DropTableSpaceStmt* internal_default_instance() { + return reinterpret_cast( + &_DropTableSpaceStmt_default_instance_); + } + static constexpr int kIndexInFileMessages = + 131; + + friend void swap(DropTableSpaceStmt& a, DropTableSpaceStmt& b) { + a.Swap(&b); + } + inline void Swap(DropTableSpaceStmt* other) { + if (other == this) return; + if (GetArena() == other->GetArena()) { + InternalSwap(other); + } else { + ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); + } + } + void UnsafeArenaSwap(DropTableSpaceStmt* other) { + if (other == this) return; + GOOGLE_DCHECK(GetArena() == other->GetArena()); + InternalSwap(other); + } + + // implements Message ---------------------------------------------- + + inline DropTableSpaceStmt* New() const final { + return CreateMaybeMessage(nullptr); + } + + DropTableSpaceStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { + return CreateMaybeMessage(arena); + } + void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void CopyFrom(const DropTableSpaceStmt& from); + void MergeFrom(const DropTableSpaceStmt& from); + PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; + bool IsInitialized() const final; + + size_t ByteSizeLong() const final; + const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; + ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( + ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; + int GetCachedSize() const final { return _cached_size_.Get(); } + + private: + inline void SharedCtor(); + inline void SharedDtor(); + void SetCachedSize(int size) const final; + void InternalSwap(DropTableSpaceStmt* other); + friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; + static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { + return "pg_query.DropTableSpaceStmt"; + } + protected: + explicit DropTableSpaceStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena); + private: + static void ArenaDtor(void* object); + inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); + public: + + ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; + private: + static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { + ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); + return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; + } + + public: + + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + + enum : int { + kTablespacenameFieldNumber = 1, + kMissingOkFieldNumber = 2, + }; + // string tablespacename = 1 [json_name = "tablespacename"]; + void clear_tablespacename(); + const std::string& tablespacename() const; + void set_tablespacename(const std::string& value); + void set_tablespacename(std::string&& value); + void set_tablespacename(const char* value); + void set_tablespacename(const char* value, size_t size); + std::string* mutable_tablespacename(); + std::string* release_tablespacename(); + void set_allocated_tablespacename(std::string* tablespacename); + private: + const std::string& _internal_tablespacename() const; + void _internal_set_tablespacename(const std::string& value); + std::string* _internal_mutable_tablespacename(); + public: + + // bool missing_ok = 2 [json_name = "missing_ok"]; + void clear_missing_ok(); + bool missing_ok() const; + void set_missing_ok(bool value); + private: + bool _internal_missing_ok() const; + void _internal_set_missing_ok(bool value); + public: + + // @@protoc_insertion_point(class_scope:pg_query.DropTableSpaceStmt) + private: + class _Internal; + + template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; + typedef void InternalArenaConstructable_; + typedef void DestructorSkippable_; + ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr tablespacename_; + bool missing_ok_; + mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; + friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; +}; +// ------------------------------------------------------------------- + +class AlterObjectDependsStmt PROTOBUF_FINAL : + public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.AlterObjectDependsStmt) */ { + public: + inline AlterObjectDependsStmt() : AlterObjectDependsStmt(nullptr) {} + virtual ~AlterObjectDependsStmt(); + + AlterObjectDependsStmt(const AlterObjectDependsStmt& from); + AlterObjectDependsStmt(AlterObjectDependsStmt&& from) noexcept + : AlterObjectDependsStmt() { + *this = ::std::move(from); + } + + inline AlterObjectDependsStmt& operator=(const AlterObjectDependsStmt& from) { + CopyFrom(from); + return *this; + } + inline AlterObjectDependsStmt& operator=(AlterObjectDependsStmt&& from) noexcept { + if (GetArena() == from.GetArena()) { + if (this != &from) InternalSwap(&from); + } else { + CopyFrom(from); + } + return *this; + } + + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { + return GetDescriptor(); + } + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { + return GetMetadataStatic().descriptor; + } + static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { + return GetMetadataStatic().reflection; + } + static const AlterObjectDependsStmt& default_instance(); + + static inline const AlterObjectDependsStmt* internal_default_instance() { + return reinterpret_cast( + &_AlterObjectDependsStmt_default_instance_); + } + static constexpr int kIndexInFileMessages = + 132; + + friend void swap(AlterObjectDependsStmt& a, AlterObjectDependsStmt& b) { + a.Swap(&b); + } + inline void Swap(AlterObjectDependsStmt* other) { + if (other == this) return; + if (GetArena() == other->GetArena()) { + InternalSwap(other); + } else { + ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); + } + } + void UnsafeArenaSwap(AlterObjectDependsStmt* other) { + if (other == this) return; + GOOGLE_DCHECK(GetArena() == other->GetArena()); + InternalSwap(other); + } + + // implements Message ---------------------------------------------- + + inline AlterObjectDependsStmt* New() const final { + return CreateMaybeMessage(nullptr); + } + + AlterObjectDependsStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { + return CreateMaybeMessage(arena); + } + void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void CopyFrom(const AlterObjectDependsStmt& from); + void MergeFrom(const AlterObjectDependsStmt& from); + PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; + bool IsInitialized() const final; + + size_t ByteSizeLong() const final; + const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; + ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( + ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; + int GetCachedSize() const final { return _cached_size_.Get(); } + + private: + inline void SharedCtor(); + inline void SharedDtor(); + void SetCachedSize(int size) const final; + void InternalSwap(AlterObjectDependsStmt* other); + friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; + static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { + return "pg_query.AlterObjectDependsStmt"; + } + protected: + explicit AlterObjectDependsStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena); + private: + static void ArenaDtor(void* object); + inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); + public: + + ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; + private: + static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { + ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); + return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; + } + + public: + + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + + enum : int { + kRelationFieldNumber = 2, + kObjectFieldNumber = 3, + kExtnameFieldNumber = 4, + kObjectTypeFieldNumber = 1, + kRemoveFieldNumber = 5, + }; + // .pg_query.RangeVar relation = 2 [json_name = "relation"]; + bool has_relation() const; + private: + bool _internal_has_relation() const; + public: + void clear_relation(); + const ::pg_query::RangeVar& relation() const; + ::pg_query::RangeVar* release_relation(); + ::pg_query::RangeVar* mutable_relation(); + void set_allocated_relation(::pg_query::RangeVar* relation); + private: + const ::pg_query::RangeVar& _internal_relation() const; + ::pg_query::RangeVar* _internal_mutable_relation(); + public: + void unsafe_arena_set_allocated_relation( + ::pg_query::RangeVar* relation); + ::pg_query::RangeVar* unsafe_arena_release_relation(); + + // .pg_query.Node object = 3 [json_name = "object"]; + bool has_object() const; + private: + bool _internal_has_object() const; + public: + void clear_object(); + const ::pg_query::Node& object() const; + ::pg_query::Node* release_object(); + ::pg_query::Node* mutable_object(); + void set_allocated_object(::pg_query::Node* object); + private: + const ::pg_query::Node& _internal_object() const; + ::pg_query::Node* _internal_mutable_object(); + public: + void unsafe_arena_set_allocated_object( + ::pg_query::Node* object); + ::pg_query::Node* unsafe_arena_release_object(); + + // .pg_query.Node extname = 4 [json_name = "extname"]; + bool has_extname() const; + private: + bool _internal_has_extname() const; + public: + void clear_extname(); + const ::pg_query::Node& extname() const; + ::pg_query::Node* release_extname(); + ::pg_query::Node* mutable_extname(); + void set_allocated_extname(::pg_query::Node* extname); + private: + const ::pg_query::Node& _internal_extname() const; + ::pg_query::Node* _internal_mutable_extname(); + public: + void unsafe_arena_set_allocated_extname( + ::pg_query::Node* extname); + ::pg_query::Node* unsafe_arena_release_extname(); + + // .pg_query.ObjectType object_type = 1 [json_name = "objectType"]; + void clear_object_type(); + ::pg_query::ObjectType object_type() const; + void set_object_type(::pg_query::ObjectType value); + private: + ::pg_query::ObjectType _internal_object_type() const; + void _internal_set_object_type(::pg_query::ObjectType value); + public: + + // bool remove = 5 [json_name = "remove"]; + void clear_remove(); + bool remove() const; + void set_remove(bool value); + private: + bool _internal_remove() const; + void _internal_set_remove(bool value); + public: + + // @@protoc_insertion_point(class_scope:pg_query.AlterObjectDependsStmt) + private: + class _Internal; + + template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; + typedef void InternalArenaConstructable_; + typedef void DestructorSkippable_; + ::pg_query::RangeVar* relation_; + ::pg_query::Node* object_; + ::pg_query::Node* extname_; + int object_type_; + bool remove_; + mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; + friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; +}; +// ------------------------------------------------------------------- + +class AlterObjectSchemaStmt PROTOBUF_FINAL : + public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.AlterObjectSchemaStmt) */ { + public: + inline AlterObjectSchemaStmt() : AlterObjectSchemaStmt(nullptr) {} + virtual ~AlterObjectSchemaStmt(); + + AlterObjectSchemaStmt(const AlterObjectSchemaStmt& from); + AlterObjectSchemaStmt(AlterObjectSchemaStmt&& from) noexcept + : AlterObjectSchemaStmt() { + *this = ::std::move(from); + } + + inline AlterObjectSchemaStmt& operator=(const AlterObjectSchemaStmt& from) { + CopyFrom(from); + return *this; + } + inline AlterObjectSchemaStmt& operator=(AlterObjectSchemaStmt&& from) noexcept { + if (GetArena() == from.GetArena()) { + if (this != &from) InternalSwap(&from); + } else { + CopyFrom(from); + } + return *this; + } + + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { + return GetDescriptor(); + } + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { + return GetMetadataStatic().descriptor; + } + static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { + return GetMetadataStatic().reflection; + } + static const AlterObjectSchemaStmt& default_instance(); + + static inline const AlterObjectSchemaStmt* internal_default_instance() { + return reinterpret_cast( + &_AlterObjectSchemaStmt_default_instance_); + } + static constexpr int kIndexInFileMessages = + 133; + + friend void swap(AlterObjectSchemaStmt& a, AlterObjectSchemaStmt& b) { + a.Swap(&b); + } + inline void Swap(AlterObjectSchemaStmt* other) { + if (other == this) return; + if (GetArena() == other->GetArena()) { + InternalSwap(other); + } else { + ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); + } + } + void UnsafeArenaSwap(AlterObjectSchemaStmt* other) { + if (other == this) return; + GOOGLE_DCHECK(GetArena() == other->GetArena()); + InternalSwap(other); + } + + // implements Message ---------------------------------------------- + + inline AlterObjectSchemaStmt* New() const final { + return CreateMaybeMessage(nullptr); + } + + AlterObjectSchemaStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { + return CreateMaybeMessage(arena); + } + void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void CopyFrom(const AlterObjectSchemaStmt& from); + void MergeFrom(const AlterObjectSchemaStmt& from); + PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; + bool IsInitialized() const final; + + size_t ByteSizeLong() const final; + const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; + ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( + ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; + int GetCachedSize() const final { return _cached_size_.Get(); } + + private: + inline void SharedCtor(); + inline void SharedDtor(); + void SetCachedSize(int size) const final; + void InternalSwap(AlterObjectSchemaStmt* other); + friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; + static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { + return "pg_query.AlterObjectSchemaStmt"; + } + protected: + explicit AlterObjectSchemaStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena); + private: + static void ArenaDtor(void* object); + inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); + public: + + ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; + private: + static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { + ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); + return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; + } + + public: + + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + + enum : int { + kNewschemaFieldNumber = 4, + kRelationFieldNumber = 2, + kObjectFieldNumber = 3, + kObjectTypeFieldNumber = 1, + kMissingOkFieldNumber = 5, + }; + // string newschema = 4 [json_name = "newschema"]; + void clear_newschema(); + const std::string& newschema() const; + void set_newschema(const std::string& value); + void set_newschema(std::string&& value); + void set_newschema(const char* value); + void set_newschema(const char* value, size_t size); + std::string* mutable_newschema(); + std::string* release_newschema(); + void set_allocated_newschema(std::string* newschema); + private: + const std::string& _internal_newschema() const; + void _internal_set_newschema(const std::string& value); + std::string* _internal_mutable_newschema(); + public: + + // .pg_query.RangeVar relation = 2 [json_name = "relation"]; + bool has_relation() const; + private: + bool _internal_has_relation() const; + public: + void clear_relation(); + const ::pg_query::RangeVar& relation() const; + ::pg_query::RangeVar* release_relation(); + ::pg_query::RangeVar* mutable_relation(); + void set_allocated_relation(::pg_query::RangeVar* relation); + private: + const ::pg_query::RangeVar& _internal_relation() const; + ::pg_query::RangeVar* _internal_mutable_relation(); + public: + void unsafe_arena_set_allocated_relation( + ::pg_query::RangeVar* relation); + ::pg_query::RangeVar* unsafe_arena_release_relation(); + + // .pg_query.Node object = 3 [json_name = "object"]; + bool has_object() const; + private: + bool _internal_has_object() const; + public: + void clear_object(); + const ::pg_query::Node& object() const; + ::pg_query::Node* release_object(); + ::pg_query::Node* mutable_object(); + void set_allocated_object(::pg_query::Node* object); + private: + const ::pg_query::Node& _internal_object() const; + ::pg_query::Node* _internal_mutable_object(); + public: + void unsafe_arena_set_allocated_object( + ::pg_query::Node* object); + ::pg_query::Node* unsafe_arena_release_object(); + + // .pg_query.ObjectType object_type = 1 [json_name = "objectType"]; + void clear_object_type(); + ::pg_query::ObjectType object_type() const; + void set_object_type(::pg_query::ObjectType value); + private: + ::pg_query::ObjectType _internal_object_type() const; + void _internal_set_object_type(::pg_query::ObjectType value); + public: + + // bool missing_ok = 5 [json_name = "missing_ok"]; + void clear_missing_ok(); + bool missing_ok() const; + void set_missing_ok(bool value); + private: + bool _internal_missing_ok() const; + void _internal_set_missing_ok(bool value); + public: + + // @@protoc_insertion_point(class_scope:pg_query.AlterObjectSchemaStmt) + private: + class _Internal; + + template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; + typedef void InternalArenaConstructable_; + typedef void DestructorSkippable_; + ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr newschema_; + ::pg_query::RangeVar* relation_; + ::pg_query::Node* object_; + int object_type_; + bool missing_ok_; + mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; + friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; +}; +// ------------------------------------------------------------------- + +class AlterOwnerStmt PROTOBUF_FINAL : + public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.AlterOwnerStmt) */ { + public: + inline AlterOwnerStmt() : AlterOwnerStmt(nullptr) {} + virtual ~AlterOwnerStmt(); + + AlterOwnerStmt(const AlterOwnerStmt& from); + AlterOwnerStmt(AlterOwnerStmt&& from) noexcept + : AlterOwnerStmt() { + *this = ::std::move(from); + } + + inline AlterOwnerStmt& operator=(const AlterOwnerStmt& from) { + CopyFrom(from); + return *this; + } + inline AlterOwnerStmt& operator=(AlterOwnerStmt&& from) noexcept { + if (GetArena() == from.GetArena()) { + if (this != &from) InternalSwap(&from); + } else { + CopyFrom(from); + } + return *this; + } + + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { + return GetDescriptor(); + } + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { + return GetMetadataStatic().descriptor; + } + static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { + return GetMetadataStatic().reflection; + } + static const AlterOwnerStmt& default_instance(); + + static inline const AlterOwnerStmt* internal_default_instance() { + return reinterpret_cast( + &_AlterOwnerStmt_default_instance_); + } + static constexpr int kIndexInFileMessages = + 134; + + friend void swap(AlterOwnerStmt& a, AlterOwnerStmt& b) { + a.Swap(&b); + } + inline void Swap(AlterOwnerStmt* other) { + if (other == this) return; + if (GetArena() == other->GetArena()) { + InternalSwap(other); + } else { + ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); + } + } + void UnsafeArenaSwap(AlterOwnerStmt* other) { + if (other == this) return; + GOOGLE_DCHECK(GetArena() == other->GetArena()); + InternalSwap(other); + } + + // implements Message ---------------------------------------------- + + inline AlterOwnerStmt* New() const final { + return CreateMaybeMessage(nullptr); + } + + AlterOwnerStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { + return CreateMaybeMessage(arena); + } + void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void CopyFrom(const AlterOwnerStmt& from); + void MergeFrom(const AlterOwnerStmt& from); + PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; + bool IsInitialized() const final; + + size_t ByteSizeLong() const final; + const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; + ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( + ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; + int GetCachedSize() const final { return _cached_size_.Get(); } + + private: + inline void SharedCtor(); + inline void SharedDtor(); + void SetCachedSize(int size) const final; + void InternalSwap(AlterOwnerStmt* other); + friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; + static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { + return "pg_query.AlterOwnerStmt"; + } + protected: + explicit AlterOwnerStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena); + private: + static void ArenaDtor(void* object); + inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); + public: + + ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; + private: + static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { + ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); + return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; + } + + public: + + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + + enum : int { + kRelationFieldNumber = 2, + kObjectFieldNumber = 3, + kNewownerFieldNumber = 4, + kObjectTypeFieldNumber = 1, + }; + // .pg_query.RangeVar relation = 2 [json_name = "relation"]; + bool has_relation() const; + private: + bool _internal_has_relation() const; + public: + void clear_relation(); + const ::pg_query::RangeVar& relation() const; + ::pg_query::RangeVar* release_relation(); + ::pg_query::RangeVar* mutable_relation(); + void set_allocated_relation(::pg_query::RangeVar* relation); + private: + const ::pg_query::RangeVar& _internal_relation() const; + ::pg_query::RangeVar* _internal_mutable_relation(); + public: + void unsafe_arena_set_allocated_relation( + ::pg_query::RangeVar* relation); + ::pg_query::RangeVar* unsafe_arena_release_relation(); + + // .pg_query.Node object = 3 [json_name = "object"]; + bool has_object() const; + private: + bool _internal_has_object() const; + public: + void clear_object(); + const ::pg_query::Node& object() const; + ::pg_query::Node* release_object(); + ::pg_query::Node* mutable_object(); + void set_allocated_object(::pg_query::Node* object); + private: + const ::pg_query::Node& _internal_object() const; + ::pg_query::Node* _internal_mutable_object(); + public: + void unsafe_arena_set_allocated_object( + ::pg_query::Node* object); + ::pg_query::Node* unsafe_arena_release_object(); + + // .pg_query.RoleSpec newowner = 4 [json_name = "newowner"]; + bool has_newowner() const; + private: + bool _internal_has_newowner() const; + public: + void clear_newowner(); + const ::pg_query::RoleSpec& newowner() const; + ::pg_query::RoleSpec* release_newowner(); + ::pg_query::RoleSpec* mutable_newowner(); + void set_allocated_newowner(::pg_query::RoleSpec* newowner); + private: + const ::pg_query::RoleSpec& _internal_newowner() const; + ::pg_query::RoleSpec* _internal_mutable_newowner(); + public: + void unsafe_arena_set_allocated_newowner( + ::pg_query::RoleSpec* newowner); + ::pg_query::RoleSpec* unsafe_arena_release_newowner(); + + // .pg_query.ObjectType object_type = 1 [json_name = "objectType"]; + void clear_object_type(); + ::pg_query::ObjectType object_type() const; + void set_object_type(::pg_query::ObjectType value); + private: + ::pg_query::ObjectType _internal_object_type() const; + void _internal_set_object_type(::pg_query::ObjectType value); + public: + + // @@protoc_insertion_point(class_scope:pg_query.AlterOwnerStmt) + private: + class _Internal; + + template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; + typedef void InternalArenaConstructable_; + typedef void DestructorSkippable_; + ::pg_query::RangeVar* relation_; + ::pg_query::Node* object_; + ::pg_query::RoleSpec* newowner_; + int object_type_; + mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; + friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; +}; +// ------------------------------------------------------------------- + +class AlterOperatorStmt PROTOBUF_FINAL : + public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.AlterOperatorStmt) */ { + public: + inline AlterOperatorStmt() : AlterOperatorStmt(nullptr) {} + virtual ~AlterOperatorStmt(); + + AlterOperatorStmt(const AlterOperatorStmt& from); + AlterOperatorStmt(AlterOperatorStmt&& from) noexcept + : AlterOperatorStmt() { + *this = ::std::move(from); + } + + inline AlterOperatorStmt& operator=(const AlterOperatorStmt& from) { + CopyFrom(from); + return *this; + } + inline AlterOperatorStmt& operator=(AlterOperatorStmt&& from) noexcept { + if (GetArena() == from.GetArena()) { + if (this != &from) InternalSwap(&from); + } else { + CopyFrom(from); + } + return *this; + } + + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { + return GetDescriptor(); + } + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { + return GetMetadataStatic().descriptor; + } + static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { + return GetMetadataStatic().reflection; + } + static const AlterOperatorStmt& default_instance(); + + static inline const AlterOperatorStmt* internal_default_instance() { + return reinterpret_cast( + &_AlterOperatorStmt_default_instance_); + } + static constexpr int kIndexInFileMessages = + 135; + + friend void swap(AlterOperatorStmt& a, AlterOperatorStmt& b) { + a.Swap(&b); + } + inline void Swap(AlterOperatorStmt* other) { + if (other == this) return; + if (GetArena() == other->GetArena()) { + InternalSwap(other); + } else { + ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); + } + } + void UnsafeArenaSwap(AlterOperatorStmt* other) { + if (other == this) return; + GOOGLE_DCHECK(GetArena() == other->GetArena()); + InternalSwap(other); + } + + // implements Message ---------------------------------------------- + + inline AlterOperatorStmt* New() const final { + return CreateMaybeMessage(nullptr); + } + + AlterOperatorStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { + return CreateMaybeMessage(arena); + } + void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void CopyFrom(const AlterOperatorStmt& from); + void MergeFrom(const AlterOperatorStmt& from); + PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; + bool IsInitialized() const final; + + size_t ByteSizeLong() const final; + const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; + ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( + ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; + int GetCachedSize() const final { return _cached_size_.Get(); } + + private: + inline void SharedCtor(); + inline void SharedDtor(); + void SetCachedSize(int size) const final; + void InternalSwap(AlterOperatorStmt* other); + friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; + static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { + return "pg_query.AlterOperatorStmt"; + } + protected: + explicit AlterOperatorStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena); + private: + static void ArenaDtor(void* object); + inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); + public: + + ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; + private: + static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { + ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); + return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; + } + + public: + + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + + enum : int { + kOptionsFieldNumber = 2, + kOpernameFieldNumber = 1, + }; + // repeated .pg_query.Node options = 2 [json_name = "options"]; + int options_size() const; + private: + int _internal_options_size() const; + public: + void clear_options(); + ::pg_query::Node* mutable_options(int index); + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* + mutable_options(); + private: + const ::pg_query::Node& _internal_options(int index) const; + ::pg_query::Node* _internal_add_options(); + public: + const ::pg_query::Node& options(int index) const; + ::pg_query::Node* add_options(); + const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& + options() const; + + // .pg_query.ObjectWithArgs opername = 1 [json_name = "opername"]; + bool has_opername() const; + private: + bool _internal_has_opername() const; + public: + void clear_opername(); + const ::pg_query::ObjectWithArgs& opername() const; + ::pg_query::ObjectWithArgs* release_opername(); + ::pg_query::ObjectWithArgs* mutable_opername(); + void set_allocated_opername(::pg_query::ObjectWithArgs* opername); + private: + const ::pg_query::ObjectWithArgs& _internal_opername() const; + ::pg_query::ObjectWithArgs* _internal_mutable_opername(); + public: + void unsafe_arena_set_allocated_opername( + ::pg_query::ObjectWithArgs* opername); + ::pg_query::ObjectWithArgs* unsafe_arena_release_opername(); + + // @@protoc_insertion_point(class_scope:pg_query.AlterOperatorStmt) + private: + class _Internal; + + template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; + typedef void InternalArenaConstructable_; + typedef void DestructorSkippable_; + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > options_; + ::pg_query::ObjectWithArgs* opername_; + mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; + friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; +}; +// ------------------------------------------------------------------- + +class AlterTypeStmt PROTOBUF_FINAL : + public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.AlterTypeStmt) */ { + public: + inline AlterTypeStmt() : AlterTypeStmt(nullptr) {} + virtual ~AlterTypeStmt(); + + AlterTypeStmt(const AlterTypeStmt& from); + AlterTypeStmt(AlterTypeStmt&& from) noexcept + : AlterTypeStmt() { + *this = ::std::move(from); + } + + inline AlterTypeStmt& operator=(const AlterTypeStmt& from) { + CopyFrom(from); + return *this; + } + inline AlterTypeStmt& operator=(AlterTypeStmt&& from) noexcept { + if (GetArena() == from.GetArena()) { + if (this != &from) InternalSwap(&from); + } else { + CopyFrom(from); + } + return *this; + } + + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { + return GetDescriptor(); + } + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { + return GetMetadataStatic().descriptor; + } + static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { + return GetMetadataStatic().reflection; + } + static const AlterTypeStmt& default_instance(); + + static inline const AlterTypeStmt* internal_default_instance() { + return reinterpret_cast( + &_AlterTypeStmt_default_instance_); + } + static constexpr int kIndexInFileMessages = + 136; + + friend void swap(AlterTypeStmt& a, AlterTypeStmt& b) { + a.Swap(&b); + } + inline void Swap(AlterTypeStmt* other) { + if (other == this) return; + if (GetArena() == other->GetArena()) { + InternalSwap(other); + } else { + ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); + } + } + void UnsafeArenaSwap(AlterTypeStmt* other) { + if (other == this) return; + GOOGLE_DCHECK(GetArena() == other->GetArena()); + InternalSwap(other); + } + + // implements Message ---------------------------------------------- + + inline AlterTypeStmt* New() const final { + return CreateMaybeMessage(nullptr); + } + + AlterTypeStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { + return CreateMaybeMessage(arena); + } + void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void CopyFrom(const AlterTypeStmt& from); + void MergeFrom(const AlterTypeStmt& from); + PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; + bool IsInitialized() const final; + + size_t ByteSizeLong() const final; + const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; + ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( + ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; + int GetCachedSize() const final { return _cached_size_.Get(); } + + private: + inline void SharedCtor(); + inline void SharedDtor(); + void SetCachedSize(int size) const final; + void InternalSwap(AlterTypeStmt* other); + friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; + static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { + return "pg_query.AlterTypeStmt"; + } + protected: + explicit AlterTypeStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena); + private: + static void ArenaDtor(void* object); + inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); + public: + + ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; + private: + static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { + ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); + return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; + } + + public: + + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + + enum : int { + kTypeNameFieldNumber = 1, + kOptionsFieldNumber = 2, + }; + // repeated .pg_query.Node type_name = 1 [json_name = "typeName"]; + int type_name_size() const; + private: + int _internal_type_name_size() const; + public: + void clear_type_name(); + ::pg_query::Node* mutable_type_name(int index); + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* + mutable_type_name(); + private: + const ::pg_query::Node& _internal_type_name(int index) const; + ::pg_query::Node* _internal_add_type_name(); + public: + const ::pg_query::Node& type_name(int index) const; + ::pg_query::Node* add_type_name(); + const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& + type_name() const; + + // repeated .pg_query.Node options = 2 [json_name = "options"]; + int options_size() const; + private: + int _internal_options_size() const; + public: + void clear_options(); + ::pg_query::Node* mutable_options(int index); + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* + mutable_options(); + private: + const ::pg_query::Node& _internal_options(int index) const; + ::pg_query::Node* _internal_add_options(); + public: + const ::pg_query::Node& options(int index) const; + ::pg_query::Node* add_options(); + const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& + options() const; + + // @@protoc_insertion_point(class_scope:pg_query.AlterTypeStmt) + private: + class _Internal; + + template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; + typedef void InternalArenaConstructable_; + typedef void DestructorSkippable_; + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > type_name_; + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > options_; + mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; + friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; +}; +// ------------------------------------------------------------------- + +class DropOwnedStmt PROTOBUF_FINAL : + public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.DropOwnedStmt) */ { + public: + inline DropOwnedStmt() : DropOwnedStmt(nullptr) {} + virtual ~DropOwnedStmt(); + + DropOwnedStmt(const DropOwnedStmt& from); + DropOwnedStmt(DropOwnedStmt&& from) noexcept + : DropOwnedStmt() { + *this = ::std::move(from); + } + + inline DropOwnedStmt& operator=(const DropOwnedStmt& from) { + CopyFrom(from); + return *this; + } + inline DropOwnedStmt& operator=(DropOwnedStmt&& from) noexcept { + if (GetArena() == from.GetArena()) { + if (this != &from) InternalSwap(&from); + } else { + CopyFrom(from); + } + return *this; + } + + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { + return GetDescriptor(); + } + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { + return GetMetadataStatic().descriptor; + } + static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { + return GetMetadataStatic().reflection; + } + static const DropOwnedStmt& default_instance(); + + static inline const DropOwnedStmt* internal_default_instance() { + return reinterpret_cast( + &_DropOwnedStmt_default_instance_); + } + static constexpr int kIndexInFileMessages = + 137; + + friend void swap(DropOwnedStmt& a, DropOwnedStmt& b) { + a.Swap(&b); + } + inline void Swap(DropOwnedStmt* other) { + if (other == this) return; + if (GetArena() == other->GetArena()) { + InternalSwap(other); + } else { + ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); + } + } + void UnsafeArenaSwap(DropOwnedStmt* other) { + if (other == this) return; + GOOGLE_DCHECK(GetArena() == other->GetArena()); + InternalSwap(other); + } + + // implements Message ---------------------------------------------- + + inline DropOwnedStmt* New() const final { + return CreateMaybeMessage(nullptr); + } + + DropOwnedStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { + return CreateMaybeMessage(arena); + } + void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void CopyFrom(const DropOwnedStmt& from); + void MergeFrom(const DropOwnedStmt& from); + PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; + bool IsInitialized() const final; + + size_t ByteSizeLong() const final; + const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; + ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( + ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; + int GetCachedSize() const final { return _cached_size_.Get(); } + + private: + inline void SharedCtor(); + inline void SharedDtor(); + void SetCachedSize(int size) const final; + void InternalSwap(DropOwnedStmt* other); + friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; + static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { + return "pg_query.DropOwnedStmt"; + } + protected: + explicit DropOwnedStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena); + private: + static void ArenaDtor(void* object); + inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); + public: + + ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; + private: + static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { + ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); + return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; + } + + public: + + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + + enum : int { + kRolesFieldNumber = 1, + kBehaviorFieldNumber = 2, + }; + // repeated .pg_query.Node roles = 1 [json_name = "roles"]; + int roles_size() const; + private: + int _internal_roles_size() const; + public: + void clear_roles(); + ::pg_query::Node* mutable_roles(int index); + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* + mutable_roles(); + private: + const ::pg_query::Node& _internal_roles(int index) const; + ::pg_query::Node* _internal_add_roles(); + public: + const ::pg_query::Node& roles(int index) const; + ::pg_query::Node* add_roles(); + const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& + roles() const; + + // .pg_query.DropBehavior behavior = 2 [json_name = "behavior"]; + void clear_behavior(); + ::pg_query::DropBehavior behavior() const; + void set_behavior(::pg_query::DropBehavior value); + private: + ::pg_query::DropBehavior _internal_behavior() const; + void _internal_set_behavior(::pg_query::DropBehavior value); + public: + + // @@protoc_insertion_point(class_scope:pg_query.DropOwnedStmt) + private: + class _Internal; + + template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; + typedef void InternalArenaConstructable_; + typedef void DestructorSkippable_; + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > roles_; + int behavior_; + mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; + friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; +}; +// ------------------------------------------------------------------- + +class ReassignOwnedStmt PROTOBUF_FINAL : + public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.ReassignOwnedStmt) */ { + public: + inline ReassignOwnedStmt() : ReassignOwnedStmt(nullptr) {} + virtual ~ReassignOwnedStmt(); + + ReassignOwnedStmt(const ReassignOwnedStmt& from); + ReassignOwnedStmt(ReassignOwnedStmt&& from) noexcept + : ReassignOwnedStmt() { + *this = ::std::move(from); + } + + inline ReassignOwnedStmt& operator=(const ReassignOwnedStmt& from) { + CopyFrom(from); + return *this; + } + inline ReassignOwnedStmt& operator=(ReassignOwnedStmt&& from) noexcept { + if (GetArena() == from.GetArena()) { + if (this != &from) InternalSwap(&from); + } else { + CopyFrom(from); + } + return *this; + } + + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { + return GetDescriptor(); + } + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { + return GetMetadataStatic().descriptor; + } + static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { + return GetMetadataStatic().reflection; + } + static const ReassignOwnedStmt& default_instance(); + + static inline const ReassignOwnedStmt* internal_default_instance() { + return reinterpret_cast( + &_ReassignOwnedStmt_default_instance_); + } + static constexpr int kIndexInFileMessages = + 138; + + friend void swap(ReassignOwnedStmt& a, ReassignOwnedStmt& b) { + a.Swap(&b); + } + inline void Swap(ReassignOwnedStmt* other) { + if (other == this) return; + if (GetArena() == other->GetArena()) { + InternalSwap(other); + } else { + ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); + } + } + void UnsafeArenaSwap(ReassignOwnedStmt* other) { + if (other == this) return; + GOOGLE_DCHECK(GetArena() == other->GetArena()); + InternalSwap(other); + } + + // implements Message ---------------------------------------------- + + inline ReassignOwnedStmt* New() const final { + return CreateMaybeMessage(nullptr); + } + + ReassignOwnedStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { + return CreateMaybeMessage(arena); + } + void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void CopyFrom(const ReassignOwnedStmt& from); + void MergeFrom(const ReassignOwnedStmt& from); + PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; + bool IsInitialized() const final; + + size_t ByteSizeLong() const final; + const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; + ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( + ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; + int GetCachedSize() const final { return _cached_size_.Get(); } + + private: + inline void SharedCtor(); + inline void SharedDtor(); + void SetCachedSize(int size) const final; + void InternalSwap(ReassignOwnedStmt* other); + friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; + static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { + return "pg_query.ReassignOwnedStmt"; + } + protected: + explicit ReassignOwnedStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena); + private: + static void ArenaDtor(void* object); + inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); + public: + + ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; + private: + static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { + ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); + return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; + } + + public: + + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + + enum : int { + kRolesFieldNumber = 1, + kNewroleFieldNumber = 2, + }; + // repeated .pg_query.Node roles = 1 [json_name = "roles"]; + int roles_size() const; + private: + int _internal_roles_size() const; + public: + void clear_roles(); + ::pg_query::Node* mutable_roles(int index); + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* + mutable_roles(); + private: + const ::pg_query::Node& _internal_roles(int index) const; + ::pg_query::Node* _internal_add_roles(); + public: + const ::pg_query::Node& roles(int index) const; + ::pg_query::Node* add_roles(); + const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& + roles() const; + + // .pg_query.RoleSpec newrole = 2 [json_name = "newrole"]; + bool has_newrole() const; + private: + bool _internal_has_newrole() const; + public: + void clear_newrole(); + const ::pg_query::RoleSpec& newrole() const; + ::pg_query::RoleSpec* release_newrole(); + ::pg_query::RoleSpec* mutable_newrole(); + void set_allocated_newrole(::pg_query::RoleSpec* newrole); + private: + const ::pg_query::RoleSpec& _internal_newrole() const; + ::pg_query::RoleSpec* _internal_mutable_newrole(); + public: + void unsafe_arena_set_allocated_newrole( + ::pg_query::RoleSpec* newrole); + ::pg_query::RoleSpec* unsafe_arena_release_newrole(); + + // @@protoc_insertion_point(class_scope:pg_query.ReassignOwnedStmt) + private: + class _Internal; + + template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; + typedef void InternalArenaConstructable_; + typedef void DestructorSkippable_; + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > roles_; + ::pg_query::RoleSpec* newrole_; + mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; + friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; +}; +// ------------------------------------------------------------------- + +class CompositeTypeStmt PROTOBUF_FINAL : + public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.CompositeTypeStmt) */ { + public: + inline CompositeTypeStmt() : CompositeTypeStmt(nullptr) {} + virtual ~CompositeTypeStmt(); + + CompositeTypeStmt(const CompositeTypeStmt& from); + CompositeTypeStmt(CompositeTypeStmt&& from) noexcept + : CompositeTypeStmt() { + *this = ::std::move(from); + } + + inline CompositeTypeStmt& operator=(const CompositeTypeStmt& from) { + CopyFrom(from); + return *this; + } + inline CompositeTypeStmt& operator=(CompositeTypeStmt&& from) noexcept { + if (GetArena() == from.GetArena()) { + if (this != &from) InternalSwap(&from); + } else { + CopyFrom(from); + } + return *this; + } + + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { + return GetDescriptor(); + } + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { + return GetMetadataStatic().descriptor; + } + static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { + return GetMetadataStatic().reflection; + } + static const CompositeTypeStmt& default_instance(); + + static inline const CompositeTypeStmt* internal_default_instance() { + return reinterpret_cast( + &_CompositeTypeStmt_default_instance_); + } + static constexpr int kIndexInFileMessages = + 139; + + friend void swap(CompositeTypeStmt& a, CompositeTypeStmt& b) { + a.Swap(&b); + } + inline void Swap(CompositeTypeStmt* other) { + if (other == this) return; + if (GetArena() == other->GetArena()) { + InternalSwap(other); + } else { + ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); + } + } + void UnsafeArenaSwap(CompositeTypeStmt* other) { + if (other == this) return; + GOOGLE_DCHECK(GetArena() == other->GetArena()); + InternalSwap(other); + } + + // implements Message ---------------------------------------------- + + inline CompositeTypeStmt* New() const final { + return CreateMaybeMessage(nullptr); + } + + CompositeTypeStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { + return CreateMaybeMessage(arena); + } + void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void CopyFrom(const CompositeTypeStmt& from); + void MergeFrom(const CompositeTypeStmt& from); + PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; + bool IsInitialized() const final; + + size_t ByteSizeLong() const final; + const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; + ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( + ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; + int GetCachedSize() const final { return _cached_size_.Get(); } + + private: + inline void SharedCtor(); + inline void SharedDtor(); + void SetCachedSize(int size) const final; + void InternalSwap(CompositeTypeStmt* other); + friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; + static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { + return "pg_query.CompositeTypeStmt"; + } + protected: + explicit CompositeTypeStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena); + private: + static void ArenaDtor(void* object); + inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); + public: + + ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; + private: + static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { + ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); + return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; + } + + public: + + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + + enum : int { + kColdeflistFieldNumber = 2, + kTypevarFieldNumber = 1, + }; + // repeated .pg_query.Node coldeflist = 2 [json_name = "coldeflist"]; + int coldeflist_size() const; + private: + int _internal_coldeflist_size() const; + public: + void clear_coldeflist(); + ::pg_query::Node* mutable_coldeflist(int index); + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* + mutable_coldeflist(); + private: + const ::pg_query::Node& _internal_coldeflist(int index) const; + ::pg_query::Node* _internal_add_coldeflist(); + public: + const ::pg_query::Node& coldeflist(int index) const; + ::pg_query::Node* add_coldeflist(); + const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& + coldeflist() const; + + // .pg_query.RangeVar typevar = 1 [json_name = "typevar"]; + bool has_typevar() const; + private: + bool _internal_has_typevar() const; + public: + void clear_typevar(); + const ::pg_query::RangeVar& typevar() const; + ::pg_query::RangeVar* release_typevar(); + ::pg_query::RangeVar* mutable_typevar(); + void set_allocated_typevar(::pg_query::RangeVar* typevar); + private: + const ::pg_query::RangeVar& _internal_typevar() const; + ::pg_query::RangeVar* _internal_mutable_typevar(); + public: + void unsafe_arena_set_allocated_typevar( + ::pg_query::RangeVar* typevar); + ::pg_query::RangeVar* unsafe_arena_release_typevar(); + + // @@protoc_insertion_point(class_scope:pg_query.CompositeTypeStmt) + private: + class _Internal; + + template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; + typedef void InternalArenaConstructable_; + typedef void DestructorSkippable_; + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > coldeflist_; + ::pg_query::RangeVar* typevar_; + mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; + friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; +}; +// ------------------------------------------------------------------- + +class CreateEnumStmt PROTOBUF_FINAL : + public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.CreateEnumStmt) */ { + public: + inline CreateEnumStmt() : CreateEnumStmt(nullptr) {} + virtual ~CreateEnumStmt(); + + CreateEnumStmt(const CreateEnumStmt& from); + CreateEnumStmt(CreateEnumStmt&& from) noexcept + : CreateEnumStmt() { + *this = ::std::move(from); + } + + inline CreateEnumStmt& operator=(const CreateEnumStmt& from) { + CopyFrom(from); + return *this; + } + inline CreateEnumStmt& operator=(CreateEnumStmt&& from) noexcept { + if (GetArena() == from.GetArena()) { + if (this != &from) InternalSwap(&from); + } else { + CopyFrom(from); + } + return *this; + } + + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { + return GetDescriptor(); + } + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { + return GetMetadataStatic().descriptor; + } + static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { + return GetMetadataStatic().reflection; + } + static const CreateEnumStmt& default_instance(); + + static inline const CreateEnumStmt* internal_default_instance() { + return reinterpret_cast( + &_CreateEnumStmt_default_instance_); + } + static constexpr int kIndexInFileMessages = + 140; + + friend void swap(CreateEnumStmt& a, CreateEnumStmt& b) { + a.Swap(&b); + } + inline void Swap(CreateEnumStmt* other) { + if (other == this) return; + if (GetArena() == other->GetArena()) { + InternalSwap(other); + } else { + ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); + } + } + void UnsafeArenaSwap(CreateEnumStmt* other) { + if (other == this) return; + GOOGLE_DCHECK(GetArena() == other->GetArena()); + InternalSwap(other); + } + + // implements Message ---------------------------------------------- + + inline CreateEnumStmt* New() const final { + return CreateMaybeMessage(nullptr); + } + + CreateEnumStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { + return CreateMaybeMessage(arena); + } + void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void CopyFrom(const CreateEnumStmt& from); + void MergeFrom(const CreateEnumStmt& from); + PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; + bool IsInitialized() const final; + + size_t ByteSizeLong() const final; + const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; + ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( + ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; + int GetCachedSize() const final { return _cached_size_.Get(); } + + private: + inline void SharedCtor(); + inline void SharedDtor(); + void SetCachedSize(int size) const final; + void InternalSwap(CreateEnumStmt* other); + friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; + static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { + return "pg_query.CreateEnumStmt"; + } + protected: + explicit CreateEnumStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena); + private: + static void ArenaDtor(void* object); + inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); + public: + + ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; + private: + static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { + ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); + return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; + } + + public: + + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + + enum : int { + kTypeNameFieldNumber = 1, + kValsFieldNumber = 2, + }; + // repeated .pg_query.Node type_name = 1 [json_name = "typeName"]; + int type_name_size() const; + private: + int _internal_type_name_size() const; + public: + void clear_type_name(); + ::pg_query::Node* mutable_type_name(int index); + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* + mutable_type_name(); + private: + const ::pg_query::Node& _internal_type_name(int index) const; + ::pg_query::Node* _internal_add_type_name(); + public: + const ::pg_query::Node& type_name(int index) const; + ::pg_query::Node* add_type_name(); + const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& + type_name() const; + + // repeated .pg_query.Node vals = 2 [json_name = "vals"]; + int vals_size() const; + private: + int _internal_vals_size() const; + public: + void clear_vals(); + ::pg_query::Node* mutable_vals(int index); + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* + mutable_vals(); + private: + const ::pg_query::Node& _internal_vals(int index) const; + ::pg_query::Node* _internal_add_vals(); + public: + const ::pg_query::Node& vals(int index) const; + ::pg_query::Node* add_vals(); + const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& + vals() const; + + // @@protoc_insertion_point(class_scope:pg_query.CreateEnumStmt) + private: + class _Internal; + + template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; + typedef void InternalArenaConstructable_; + typedef void DestructorSkippable_; + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > type_name_; + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > vals_; + mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; + friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; +}; +// ------------------------------------------------------------------- + +class CreateRangeStmt PROTOBUF_FINAL : + public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.CreateRangeStmt) */ { + public: + inline CreateRangeStmt() : CreateRangeStmt(nullptr) {} + virtual ~CreateRangeStmt(); + + CreateRangeStmt(const CreateRangeStmt& from); + CreateRangeStmt(CreateRangeStmt&& from) noexcept + : CreateRangeStmt() { + *this = ::std::move(from); + } + + inline CreateRangeStmt& operator=(const CreateRangeStmt& from) { + CopyFrom(from); + return *this; + } + inline CreateRangeStmt& operator=(CreateRangeStmt&& from) noexcept { + if (GetArena() == from.GetArena()) { + if (this != &from) InternalSwap(&from); + } else { + CopyFrom(from); + } + return *this; + } + + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { + return GetDescriptor(); + } + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { + return GetMetadataStatic().descriptor; + } + static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { + return GetMetadataStatic().reflection; + } + static const CreateRangeStmt& default_instance(); + + static inline const CreateRangeStmt* internal_default_instance() { + return reinterpret_cast( + &_CreateRangeStmt_default_instance_); + } + static constexpr int kIndexInFileMessages = + 141; + + friend void swap(CreateRangeStmt& a, CreateRangeStmt& b) { + a.Swap(&b); + } + inline void Swap(CreateRangeStmt* other) { + if (other == this) return; + if (GetArena() == other->GetArena()) { + InternalSwap(other); + } else { + ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); + } + } + void UnsafeArenaSwap(CreateRangeStmt* other) { + if (other == this) return; + GOOGLE_DCHECK(GetArena() == other->GetArena()); + InternalSwap(other); + } + + // implements Message ---------------------------------------------- + + inline CreateRangeStmt* New() const final { + return CreateMaybeMessage(nullptr); + } + + CreateRangeStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { + return CreateMaybeMessage(arena); + } + void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void CopyFrom(const CreateRangeStmt& from); + void MergeFrom(const CreateRangeStmt& from); + PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; + bool IsInitialized() const final; + + size_t ByteSizeLong() const final; + const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; + ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( + ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; + int GetCachedSize() const final { return _cached_size_.Get(); } + + private: + inline void SharedCtor(); + inline void SharedDtor(); + void SetCachedSize(int size) const final; + void InternalSwap(CreateRangeStmt* other); + friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; + static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { + return "pg_query.CreateRangeStmt"; + } + protected: + explicit CreateRangeStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena); + private: + static void ArenaDtor(void* object); + inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); + public: + + ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; + private: + static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { + ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); + return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; + } + + public: + + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + + enum : int { + kTypeNameFieldNumber = 1, + kParamsFieldNumber = 2, + }; + // repeated .pg_query.Node type_name = 1 [json_name = "typeName"]; + int type_name_size() const; + private: + int _internal_type_name_size() const; + public: + void clear_type_name(); + ::pg_query::Node* mutable_type_name(int index); + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* + mutable_type_name(); + private: + const ::pg_query::Node& _internal_type_name(int index) const; + ::pg_query::Node* _internal_add_type_name(); + public: + const ::pg_query::Node& type_name(int index) const; + ::pg_query::Node* add_type_name(); + const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& + type_name() const; + + // repeated .pg_query.Node params = 2 [json_name = "params"]; + int params_size() const; + private: + int _internal_params_size() const; + public: + void clear_params(); + ::pg_query::Node* mutable_params(int index); + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* + mutable_params(); + private: + const ::pg_query::Node& _internal_params(int index) const; + ::pg_query::Node* _internal_add_params(); + public: + const ::pg_query::Node& params(int index) const; + ::pg_query::Node* add_params(); + const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& + params() const; + + // @@protoc_insertion_point(class_scope:pg_query.CreateRangeStmt) + private: + class _Internal; + + template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; + typedef void InternalArenaConstructable_; + typedef void DestructorSkippable_; + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > type_name_; + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > params_; + mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; + friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; +}; +// ------------------------------------------------------------------- + +class AlterEnumStmt PROTOBUF_FINAL : + public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.AlterEnumStmt) */ { + public: + inline AlterEnumStmt() : AlterEnumStmt(nullptr) {} + virtual ~AlterEnumStmt(); + + AlterEnumStmt(const AlterEnumStmt& from); + AlterEnumStmt(AlterEnumStmt&& from) noexcept + : AlterEnumStmt() { + *this = ::std::move(from); + } + + inline AlterEnumStmt& operator=(const AlterEnumStmt& from) { + CopyFrom(from); + return *this; + } + inline AlterEnumStmt& operator=(AlterEnumStmt&& from) noexcept { + if (GetArena() == from.GetArena()) { + if (this != &from) InternalSwap(&from); + } else { + CopyFrom(from); + } + return *this; + } + + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { + return GetDescriptor(); + } + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { + return GetMetadataStatic().descriptor; + } + static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { + return GetMetadataStatic().reflection; + } + static const AlterEnumStmt& default_instance(); + + static inline const AlterEnumStmt* internal_default_instance() { + return reinterpret_cast( + &_AlterEnumStmt_default_instance_); + } + static constexpr int kIndexInFileMessages = + 142; + + friend void swap(AlterEnumStmt& a, AlterEnumStmt& b) { + a.Swap(&b); + } + inline void Swap(AlterEnumStmt* other) { + if (other == this) return; + if (GetArena() == other->GetArena()) { + InternalSwap(other); + } else { + ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); + } + } + void UnsafeArenaSwap(AlterEnumStmt* other) { + if (other == this) return; + GOOGLE_DCHECK(GetArena() == other->GetArena()); + InternalSwap(other); + } + + // implements Message ---------------------------------------------- + + inline AlterEnumStmt* New() const final { + return CreateMaybeMessage(nullptr); + } + + AlterEnumStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { + return CreateMaybeMessage(arena); + } + void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void CopyFrom(const AlterEnumStmt& from); + void MergeFrom(const AlterEnumStmt& from); + PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; + bool IsInitialized() const final; + + size_t ByteSizeLong() const final; + const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; + ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( + ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; + int GetCachedSize() const final { return _cached_size_.Get(); } + + private: + inline void SharedCtor(); + inline void SharedDtor(); + void SetCachedSize(int size) const final; + void InternalSwap(AlterEnumStmt* other); + friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; + static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { + return "pg_query.AlterEnumStmt"; + } + protected: + explicit AlterEnumStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena); + private: + static void ArenaDtor(void* object); + inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); + public: + + ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; + private: + static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { + ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); + return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; + } + + public: + + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + + enum : int { + kTypeNameFieldNumber = 1, + kOldValFieldNumber = 2, + kNewValFieldNumber = 3, + kNewValNeighborFieldNumber = 4, + kNewValIsAfterFieldNumber = 5, + kSkipIfNewValExistsFieldNumber = 6, + }; + // repeated .pg_query.Node type_name = 1 [json_name = "typeName"]; + int type_name_size() const; + private: + int _internal_type_name_size() const; + public: + void clear_type_name(); + ::pg_query::Node* mutable_type_name(int index); + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* + mutable_type_name(); + private: + const ::pg_query::Node& _internal_type_name(int index) const; + ::pg_query::Node* _internal_add_type_name(); + public: + const ::pg_query::Node& type_name(int index) const; + ::pg_query::Node* add_type_name(); + const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& + type_name() const; + + // string old_val = 2 [json_name = "oldVal"]; + void clear_old_val(); + const std::string& old_val() const; + void set_old_val(const std::string& value); + void set_old_val(std::string&& value); + void set_old_val(const char* value); + void set_old_val(const char* value, size_t size); + std::string* mutable_old_val(); + std::string* release_old_val(); + void set_allocated_old_val(std::string* old_val); + private: + const std::string& _internal_old_val() const; + void _internal_set_old_val(const std::string& value); + std::string* _internal_mutable_old_val(); + public: + + // string new_val = 3 [json_name = "newVal"]; + void clear_new_val(); + const std::string& new_val() const; + void set_new_val(const std::string& value); + void set_new_val(std::string&& value); + void set_new_val(const char* value); + void set_new_val(const char* value, size_t size); + std::string* mutable_new_val(); + std::string* release_new_val(); + void set_allocated_new_val(std::string* new_val); + private: + const std::string& _internal_new_val() const; + void _internal_set_new_val(const std::string& value); + std::string* _internal_mutable_new_val(); + public: + + // string new_val_neighbor = 4 [json_name = "newValNeighbor"]; + void clear_new_val_neighbor(); + const std::string& new_val_neighbor() const; + void set_new_val_neighbor(const std::string& value); + void set_new_val_neighbor(std::string&& value); + void set_new_val_neighbor(const char* value); + void set_new_val_neighbor(const char* value, size_t size); + std::string* mutable_new_val_neighbor(); + std::string* release_new_val_neighbor(); + void set_allocated_new_val_neighbor(std::string* new_val_neighbor); + private: + const std::string& _internal_new_val_neighbor() const; + void _internal_set_new_val_neighbor(const std::string& value); + std::string* _internal_mutable_new_val_neighbor(); + public: + + // bool new_val_is_after = 5 [json_name = "newValIsAfter"]; + void clear_new_val_is_after(); + bool new_val_is_after() const; + void set_new_val_is_after(bool value); + private: + bool _internal_new_val_is_after() const; + void _internal_set_new_val_is_after(bool value); + public: + + // bool skip_if_new_val_exists = 6 [json_name = "skipIfNewValExists"]; + void clear_skip_if_new_val_exists(); + bool skip_if_new_val_exists() const; + void set_skip_if_new_val_exists(bool value); + private: + bool _internal_skip_if_new_val_exists() const; + void _internal_set_skip_if_new_val_exists(bool value); + public: + + // @@protoc_insertion_point(class_scope:pg_query.AlterEnumStmt) + private: + class _Internal; + + template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; + typedef void InternalArenaConstructable_; + typedef void DestructorSkippable_; + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > type_name_; + ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr old_val_; + ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr new_val_; + ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr new_val_neighbor_; + bool new_val_is_after_; + bool skip_if_new_val_exists_; + mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; + friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; +}; +// ------------------------------------------------------------------- + +class AlterTSDictionaryStmt PROTOBUF_FINAL : + public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.AlterTSDictionaryStmt) */ { + public: + inline AlterTSDictionaryStmt() : AlterTSDictionaryStmt(nullptr) {} + virtual ~AlterTSDictionaryStmt(); + + AlterTSDictionaryStmt(const AlterTSDictionaryStmt& from); + AlterTSDictionaryStmt(AlterTSDictionaryStmt&& from) noexcept + : AlterTSDictionaryStmt() { + *this = ::std::move(from); + } + + inline AlterTSDictionaryStmt& operator=(const AlterTSDictionaryStmt& from) { + CopyFrom(from); + return *this; + } + inline AlterTSDictionaryStmt& operator=(AlterTSDictionaryStmt&& from) noexcept { + if (GetArena() == from.GetArena()) { + if (this != &from) InternalSwap(&from); + } else { + CopyFrom(from); + } + return *this; + } + + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { + return GetDescriptor(); + } + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { + return GetMetadataStatic().descriptor; + } + static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { + return GetMetadataStatic().reflection; + } + static const AlterTSDictionaryStmt& default_instance(); + + static inline const AlterTSDictionaryStmt* internal_default_instance() { + return reinterpret_cast( + &_AlterTSDictionaryStmt_default_instance_); + } + static constexpr int kIndexInFileMessages = + 143; + + friend void swap(AlterTSDictionaryStmt& a, AlterTSDictionaryStmt& b) { + a.Swap(&b); + } + inline void Swap(AlterTSDictionaryStmt* other) { + if (other == this) return; + if (GetArena() == other->GetArena()) { + InternalSwap(other); + } else { + ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); + } + } + void UnsafeArenaSwap(AlterTSDictionaryStmt* other) { + if (other == this) return; + GOOGLE_DCHECK(GetArena() == other->GetArena()); + InternalSwap(other); + } + + // implements Message ---------------------------------------------- + + inline AlterTSDictionaryStmt* New() const final { + return CreateMaybeMessage(nullptr); + } + + AlterTSDictionaryStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { + return CreateMaybeMessage(arena); + } + void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void CopyFrom(const AlterTSDictionaryStmt& from); + void MergeFrom(const AlterTSDictionaryStmt& from); + PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; + bool IsInitialized() const final; + + size_t ByteSizeLong() const final; + const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; + ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( + ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; + int GetCachedSize() const final { return _cached_size_.Get(); } + + private: + inline void SharedCtor(); + inline void SharedDtor(); + void SetCachedSize(int size) const final; + void InternalSwap(AlterTSDictionaryStmt* other); + friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; + static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { + return "pg_query.AlterTSDictionaryStmt"; + } + protected: + explicit AlterTSDictionaryStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena); + private: + static void ArenaDtor(void* object); + inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); + public: + + ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; + private: + static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { + ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); + return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; + } + + public: + + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + + enum : int { + kDictnameFieldNumber = 1, + kOptionsFieldNumber = 2, + }; + // repeated .pg_query.Node dictname = 1 [json_name = "dictname"]; + int dictname_size() const; + private: + int _internal_dictname_size() const; + public: + void clear_dictname(); + ::pg_query::Node* mutable_dictname(int index); + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* + mutable_dictname(); + private: + const ::pg_query::Node& _internal_dictname(int index) const; + ::pg_query::Node* _internal_add_dictname(); + public: + const ::pg_query::Node& dictname(int index) const; + ::pg_query::Node* add_dictname(); + const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& + dictname() const; + + // repeated .pg_query.Node options = 2 [json_name = "options"]; + int options_size() const; + private: + int _internal_options_size() const; + public: + void clear_options(); + ::pg_query::Node* mutable_options(int index); + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* + mutable_options(); + private: + const ::pg_query::Node& _internal_options(int index) const; + ::pg_query::Node* _internal_add_options(); + public: + const ::pg_query::Node& options(int index) const; + ::pg_query::Node* add_options(); + const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& + options() const; + + // @@protoc_insertion_point(class_scope:pg_query.AlterTSDictionaryStmt) + private: + class _Internal; + + template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; + typedef void InternalArenaConstructable_; + typedef void DestructorSkippable_; + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > dictname_; + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > options_; + mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; + friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; +}; +// ------------------------------------------------------------------- + +class AlterTSConfigurationStmt PROTOBUF_FINAL : + public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.AlterTSConfigurationStmt) */ { + public: + inline AlterTSConfigurationStmt() : AlterTSConfigurationStmt(nullptr) {} + virtual ~AlterTSConfigurationStmt(); + + AlterTSConfigurationStmt(const AlterTSConfigurationStmt& from); + AlterTSConfigurationStmt(AlterTSConfigurationStmt&& from) noexcept + : AlterTSConfigurationStmt() { + *this = ::std::move(from); + } + + inline AlterTSConfigurationStmt& operator=(const AlterTSConfigurationStmt& from) { + CopyFrom(from); + return *this; + } + inline AlterTSConfigurationStmt& operator=(AlterTSConfigurationStmt&& from) noexcept { + if (GetArena() == from.GetArena()) { + if (this != &from) InternalSwap(&from); + } else { + CopyFrom(from); + } + return *this; + } + + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { + return GetDescriptor(); + } + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { + return GetMetadataStatic().descriptor; + } + static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { + return GetMetadataStatic().reflection; + } + static const AlterTSConfigurationStmt& default_instance(); + + static inline const AlterTSConfigurationStmt* internal_default_instance() { + return reinterpret_cast( + &_AlterTSConfigurationStmt_default_instance_); + } + static constexpr int kIndexInFileMessages = + 144; + + friend void swap(AlterTSConfigurationStmt& a, AlterTSConfigurationStmt& b) { + a.Swap(&b); + } + inline void Swap(AlterTSConfigurationStmt* other) { + if (other == this) return; + if (GetArena() == other->GetArena()) { + InternalSwap(other); + } else { + ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); + } + } + void UnsafeArenaSwap(AlterTSConfigurationStmt* other) { + if (other == this) return; + GOOGLE_DCHECK(GetArena() == other->GetArena()); + InternalSwap(other); + } + + // implements Message ---------------------------------------------- + + inline AlterTSConfigurationStmt* New() const final { + return CreateMaybeMessage(nullptr); + } + + AlterTSConfigurationStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { + return CreateMaybeMessage(arena); + } + void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void CopyFrom(const AlterTSConfigurationStmt& from); + void MergeFrom(const AlterTSConfigurationStmt& from); + PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; + bool IsInitialized() const final; + + size_t ByteSizeLong() const final; + const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; + ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( + ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; + int GetCachedSize() const final { return _cached_size_.Get(); } + + private: + inline void SharedCtor(); + inline void SharedDtor(); + void SetCachedSize(int size) const final; + void InternalSwap(AlterTSConfigurationStmt* other); + friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; + static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { + return "pg_query.AlterTSConfigurationStmt"; + } + protected: + explicit AlterTSConfigurationStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena); + private: + static void ArenaDtor(void* object); + inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); + public: + + ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; + private: + static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { + ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); + return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; + } + + public: + + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + + enum : int { + kCfgnameFieldNumber = 2, + kTokentypeFieldNumber = 3, + kDictsFieldNumber = 4, + kKindFieldNumber = 1, + kOverrideFieldNumber = 5, + kReplaceFieldNumber = 6, + kMissingOkFieldNumber = 7, + }; + // repeated .pg_query.Node cfgname = 2 [json_name = "cfgname"]; + int cfgname_size() const; + private: + int _internal_cfgname_size() const; + public: + void clear_cfgname(); + ::pg_query::Node* mutable_cfgname(int index); + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* + mutable_cfgname(); + private: + const ::pg_query::Node& _internal_cfgname(int index) const; + ::pg_query::Node* _internal_add_cfgname(); + public: + const ::pg_query::Node& cfgname(int index) const; + ::pg_query::Node* add_cfgname(); + const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& + cfgname() const; + + // repeated .pg_query.Node tokentype = 3 [json_name = "tokentype"]; + int tokentype_size() const; + private: + int _internal_tokentype_size() const; + public: + void clear_tokentype(); + ::pg_query::Node* mutable_tokentype(int index); + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* + mutable_tokentype(); + private: + const ::pg_query::Node& _internal_tokentype(int index) const; + ::pg_query::Node* _internal_add_tokentype(); + public: + const ::pg_query::Node& tokentype(int index) const; + ::pg_query::Node* add_tokentype(); + const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& + tokentype() const; + + // repeated .pg_query.Node dicts = 4 [json_name = "dicts"]; + int dicts_size() const; + private: + int _internal_dicts_size() const; + public: + void clear_dicts(); + ::pg_query::Node* mutable_dicts(int index); + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* + mutable_dicts(); + private: + const ::pg_query::Node& _internal_dicts(int index) const; + ::pg_query::Node* _internal_add_dicts(); + public: + const ::pg_query::Node& dicts(int index) const; + ::pg_query::Node* add_dicts(); + const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& + dicts() const; + + // .pg_query.AlterTSConfigType kind = 1 [json_name = "kind"]; + void clear_kind(); + ::pg_query::AlterTSConfigType kind() const; + void set_kind(::pg_query::AlterTSConfigType value); + private: + ::pg_query::AlterTSConfigType _internal_kind() const; + void _internal_set_kind(::pg_query::AlterTSConfigType value); + public: + + // bool override = 5 [json_name = "override"]; + void clear_override(); + bool override() const; + void set_override(bool value); + private: + bool _internal_override() const; + void _internal_set_override(bool value); + public: + + // bool replace = 6 [json_name = "replace"]; + void clear_replace(); + bool replace() const; + void set_replace(bool value); + private: + bool _internal_replace() const; + void _internal_set_replace(bool value); + public: + + // bool missing_ok = 7 [json_name = "missing_ok"]; + void clear_missing_ok(); + bool missing_ok() const; + void set_missing_ok(bool value); + private: + bool _internal_missing_ok() const; + void _internal_set_missing_ok(bool value); + public: + + // @@protoc_insertion_point(class_scope:pg_query.AlterTSConfigurationStmt) + private: + class _Internal; + + template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; + typedef void InternalArenaConstructable_; + typedef void DestructorSkippable_; + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > cfgname_; + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > tokentype_; + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > dicts_; + int kind_; + bool override_; + bool replace_; + bool missing_ok_; + mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; + friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; +}; +// ------------------------------------------------------------------- + +class CreateFdwStmt PROTOBUF_FINAL : + public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.CreateFdwStmt) */ { + public: + inline CreateFdwStmt() : CreateFdwStmt(nullptr) {} + virtual ~CreateFdwStmt(); + + CreateFdwStmt(const CreateFdwStmt& from); + CreateFdwStmt(CreateFdwStmt&& from) noexcept + : CreateFdwStmt() { + *this = ::std::move(from); + } + + inline CreateFdwStmt& operator=(const CreateFdwStmt& from) { + CopyFrom(from); + return *this; + } + inline CreateFdwStmt& operator=(CreateFdwStmt&& from) noexcept { + if (GetArena() == from.GetArena()) { + if (this != &from) InternalSwap(&from); + } else { + CopyFrom(from); + } + return *this; + } + + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { + return GetDescriptor(); + } + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { + return GetMetadataStatic().descriptor; + } + static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { + return GetMetadataStatic().reflection; + } + static const CreateFdwStmt& default_instance(); + + static inline const CreateFdwStmt* internal_default_instance() { + return reinterpret_cast( + &_CreateFdwStmt_default_instance_); + } + static constexpr int kIndexInFileMessages = + 145; + + friend void swap(CreateFdwStmt& a, CreateFdwStmt& b) { + a.Swap(&b); + } + inline void Swap(CreateFdwStmt* other) { + if (other == this) return; + if (GetArena() == other->GetArena()) { + InternalSwap(other); + } else { + ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); + } + } + void UnsafeArenaSwap(CreateFdwStmt* other) { + if (other == this) return; + GOOGLE_DCHECK(GetArena() == other->GetArena()); + InternalSwap(other); + } + + // implements Message ---------------------------------------------- + + inline CreateFdwStmt* New() const final { + return CreateMaybeMessage(nullptr); + } + + CreateFdwStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { + return CreateMaybeMessage(arena); + } + void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void CopyFrom(const CreateFdwStmt& from); + void MergeFrom(const CreateFdwStmt& from); + PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; + bool IsInitialized() const final; + + size_t ByteSizeLong() const final; + const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; + ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( + ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; + int GetCachedSize() const final { return _cached_size_.Get(); } + + private: + inline void SharedCtor(); + inline void SharedDtor(); + void SetCachedSize(int size) const final; + void InternalSwap(CreateFdwStmt* other); + friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; + static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { + return "pg_query.CreateFdwStmt"; + } + protected: + explicit CreateFdwStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena); + private: + static void ArenaDtor(void* object); + inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); + public: + + ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; + private: + static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { + ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); + return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; + } + + public: + + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + + enum : int { + kFuncOptionsFieldNumber = 2, + kOptionsFieldNumber = 3, + kFdwnameFieldNumber = 1, + }; + // repeated .pg_query.Node func_options = 2 [json_name = "func_options"]; + int func_options_size() const; + private: + int _internal_func_options_size() const; + public: + void clear_func_options(); + ::pg_query::Node* mutable_func_options(int index); + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* + mutable_func_options(); + private: + const ::pg_query::Node& _internal_func_options(int index) const; + ::pg_query::Node* _internal_add_func_options(); + public: + const ::pg_query::Node& func_options(int index) const; + ::pg_query::Node* add_func_options(); + const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& + func_options() const; + + // repeated .pg_query.Node options = 3 [json_name = "options"]; + int options_size() const; + private: + int _internal_options_size() const; + public: + void clear_options(); + ::pg_query::Node* mutable_options(int index); + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* + mutable_options(); + private: + const ::pg_query::Node& _internal_options(int index) const; + ::pg_query::Node* _internal_add_options(); + public: + const ::pg_query::Node& options(int index) const; + ::pg_query::Node* add_options(); + const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& + options() const; + + // string fdwname = 1 [json_name = "fdwname"]; + void clear_fdwname(); + const std::string& fdwname() const; + void set_fdwname(const std::string& value); + void set_fdwname(std::string&& value); + void set_fdwname(const char* value); + void set_fdwname(const char* value, size_t size); + std::string* mutable_fdwname(); + std::string* release_fdwname(); + void set_allocated_fdwname(std::string* fdwname); + private: + const std::string& _internal_fdwname() const; + void _internal_set_fdwname(const std::string& value); + std::string* _internal_mutable_fdwname(); + public: + + // @@protoc_insertion_point(class_scope:pg_query.CreateFdwStmt) + private: + class _Internal; + + template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; + typedef void InternalArenaConstructable_; + typedef void DestructorSkippable_; + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > func_options_; + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > options_; + ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr fdwname_; + mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; + friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; +}; +// ------------------------------------------------------------------- + +class AlterFdwStmt PROTOBUF_FINAL : + public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.AlterFdwStmt) */ { + public: + inline AlterFdwStmt() : AlterFdwStmt(nullptr) {} + virtual ~AlterFdwStmt(); + + AlterFdwStmt(const AlterFdwStmt& from); + AlterFdwStmt(AlterFdwStmt&& from) noexcept + : AlterFdwStmt() { + *this = ::std::move(from); + } + + inline AlterFdwStmt& operator=(const AlterFdwStmt& from) { + CopyFrom(from); + return *this; + } + inline AlterFdwStmt& operator=(AlterFdwStmt&& from) noexcept { + if (GetArena() == from.GetArena()) { + if (this != &from) InternalSwap(&from); + } else { + CopyFrom(from); + } + return *this; + } + + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { + return GetDescriptor(); + } + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { + return GetMetadataStatic().descriptor; + } + static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { + return GetMetadataStatic().reflection; + } + static const AlterFdwStmt& default_instance(); + + static inline const AlterFdwStmt* internal_default_instance() { + return reinterpret_cast( + &_AlterFdwStmt_default_instance_); + } + static constexpr int kIndexInFileMessages = + 146; + + friend void swap(AlterFdwStmt& a, AlterFdwStmt& b) { + a.Swap(&b); + } + inline void Swap(AlterFdwStmt* other) { + if (other == this) return; + if (GetArena() == other->GetArena()) { + InternalSwap(other); + } else { + ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); + } + } + void UnsafeArenaSwap(AlterFdwStmt* other) { + if (other == this) return; + GOOGLE_DCHECK(GetArena() == other->GetArena()); + InternalSwap(other); + } + + // implements Message ---------------------------------------------- + + inline AlterFdwStmt* New() const final { + return CreateMaybeMessage(nullptr); + } + + AlterFdwStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { + return CreateMaybeMessage(arena); + } + void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void CopyFrom(const AlterFdwStmt& from); + void MergeFrom(const AlterFdwStmt& from); + PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; + bool IsInitialized() const final; + + size_t ByteSizeLong() const final; + const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; + ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( + ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; + int GetCachedSize() const final { return _cached_size_.Get(); } + + private: + inline void SharedCtor(); + inline void SharedDtor(); + void SetCachedSize(int size) const final; + void InternalSwap(AlterFdwStmt* other); + friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; + static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { + return "pg_query.AlterFdwStmt"; + } + protected: + explicit AlterFdwStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena); + private: + static void ArenaDtor(void* object); + inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); + public: + + ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; + private: + static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { + ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); + return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; + } + + public: + + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + + enum : int { + kFuncOptionsFieldNumber = 2, + kOptionsFieldNumber = 3, + kFdwnameFieldNumber = 1, + }; + // repeated .pg_query.Node func_options = 2 [json_name = "func_options"]; + int func_options_size() const; + private: + int _internal_func_options_size() const; + public: + void clear_func_options(); + ::pg_query::Node* mutable_func_options(int index); + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* + mutable_func_options(); + private: + const ::pg_query::Node& _internal_func_options(int index) const; + ::pg_query::Node* _internal_add_func_options(); + public: + const ::pg_query::Node& func_options(int index) const; + ::pg_query::Node* add_func_options(); + const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& + func_options() const; + + // repeated .pg_query.Node options = 3 [json_name = "options"]; + int options_size() const; + private: + int _internal_options_size() const; + public: + void clear_options(); + ::pg_query::Node* mutable_options(int index); + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* + mutable_options(); + private: + const ::pg_query::Node& _internal_options(int index) const; + ::pg_query::Node* _internal_add_options(); + public: + const ::pg_query::Node& options(int index) const; + ::pg_query::Node* add_options(); + const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& + options() const; + + // string fdwname = 1 [json_name = "fdwname"]; + void clear_fdwname(); + const std::string& fdwname() const; + void set_fdwname(const std::string& value); + void set_fdwname(std::string&& value); + void set_fdwname(const char* value); + void set_fdwname(const char* value, size_t size); + std::string* mutable_fdwname(); + std::string* release_fdwname(); + void set_allocated_fdwname(std::string* fdwname); + private: + const std::string& _internal_fdwname() const; + void _internal_set_fdwname(const std::string& value); + std::string* _internal_mutable_fdwname(); + public: + + // @@protoc_insertion_point(class_scope:pg_query.AlterFdwStmt) + private: + class _Internal; + + template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; + typedef void InternalArenaConstructable_; + typedef void DestructorSkippable_; + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > func_options_; + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > options_; + ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr fdwname_; + mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; + friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; +}; +// ------------------------------------------------------------------- + +class CreateForeignServerStmt PROTOBUF_FINAL : + public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.CreateForeignServerStmt) */ { + public: + inline CreateForeignServerStmt() : CreateForeignServerStmt(nullptr) {} + virtual ~CreateForeignServerStmt(); + + CreateForeignServerStmt(const CreateForeignServerStmt& from); + CreateForeignServerStmt(CreateForeignServerStmt&& from) noexcept + : CreateForeignServerStmt() { + *this = ::std::move(from); + } + + inline CreateForeignServerStmt& operator=(const CreateForeignServerStmt& from) { + CopyFrom(from); + return *this; + } + inline CreateForeignServerStmt& operator=(CreateForeignServerStmt&& from) noexcept { + if (GetArena() == from.GetArena()) { + if (this != &from) InternalSwap(&from); + } else { + CopyFrom(from); + } + return *this; + } + + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { + return GetDescriptor(); + } + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { + return GetMetadataStatic().descriptor; + } + static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { + return GetMetadataStatic().reflection; + } + static const CreateForeignServerStmt& default_instance(); + + static inline const CreateForeignServerStmt* internal_default_instance() { + return reinterpret_cast( + &_CreateForeignServerStmt_default_instance_); + } + static constexpr int kIndexInFileMessages = + 147; + + friend void swap(CreateForeignServerStmt& a, CreateForeignServerStmt& b) { + a.Swap(&b); + } + inline void Swap(CreateForeignServerStmt* other) { + if (other == this) return; + if (GetArena() == other->GetArena()) { + InternalSwap(other); + } else { + ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); + } + } + void UnsafeArenaSwap(CreateForeignServerStmt* other) { + if (other == this) return; + GOOGLE_DCHECK(GetArena() == other->GetArena()); + InternalSwap(other); + } + + // implements Message ---------------------------------------------- + + inline CreateForeignServerStmt* New() const final { + return CreateMaybeMessage(nullptr); + } + + CreateForeignServerStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { + return CreateMaybeMessage(arena); + } + void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void CopyFrom(const CreateForeignServerStmt& from); + void MergeFrom(const CreateForeignServerStmt& from); + PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; + bool IsInitialized() const final; + + size_t ByteSizeLong() const final; + const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; + ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( + ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; + int GetCachedSize() const final { return _cached_size_.Get(); } + + private: + inline void SharedCtor(); + inline void SharedDtor(); + void SetCachedSize(int size) const final; + void InternalSwap(CreateForeignServerStmt* other); + friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; + static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { + return "pg_query.CreateForeignServerStmt"; + } + protected: + explicit CreateForeignServerStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena); + private: + static void ArenaDtor(void* object); + inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); + public: + + ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; + private: + static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { + ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); + return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; + } + + public: + + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + + enum : int { + kOptionsFieldNumber = 6, + kServernameFieldNumber = 1, + kServertypeFieldNumber = 2, + kVersionFieldNumber = 3, + kFdwnameFieldNumber = 4, + kIfNotExistsFieldNumber = 5, + }; + // repeated .pg_query.Node options = 6 [json_name = "options"]; + int options_size() const; + private: + int _internal_options_size() const; + public: + void clear_options(); + ::pg_query::Node* mutable_options(int index); + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* + mutable_options(); + private: + const ::pg_query::Node& _internal_options(int index) const; + ::pg_query::Node* _internal_add_options(); + public: + const ::pg_query::Node& options(int index) const; + ::pg_query::Node* add_options(); + const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& + options() const; + + // string servername = 1 [json_name = "servername"]; + void clear_servername(); + const std::string& servername() const; + void set_servername(const std::string& value); + void set_servername(std::string&& value); + void set_servername(const char* value); + void set_servername(const char* value, size_t size); + std::string* mutable_servername(); + std::string* release_servername(); + void set_allocated_servername(std::string* servername); + private: + const std::string& _internal_servername() const; + void _internal_set_servername(const std::string& value); + std::string* _internal_mutable_servername(); + public: + + // string servertype = 2 [json_name = "servertype"]; + void clear_servertype(); + const std::string& servertype() const; + void set_servertype(const std::string& value); + void set_servertype(std::string&& value); + void set_servertype(const char* value); + void set_servertype(const char* value, size_t size); + std::string* mutable_servertype(); + std::string* release_servertype(); + void set_allocated_servertype(std::string* servertype); + private: + const std::string& _internal_servertype() const; + void _internal_set_servertype(const std::string& value); + std::string* _internal_mutable_servertype(); + public: + + // string version = 3 [json_name = "version"]; + void clear_version(); + const std::string& version() const; + void set_version(const std::string& value); + void set_version(std::string&& value); + void set_version(const char* value); + void set_version(const char* value, size_t size); + std::string* mutable_version(); + std::string* release_version(); + void set_allocated_version(std::string* version); + private: + const std::string& _internal_version() const; + void _internal_set_version(const std::string& value); + std::string* _internal_mutable_version(); + public: + + // string fdwname = 4 [json_name = "fdwname"]; + void clear_fdwname(); + const std::string& fdwname() const; + void set_fdwname(const std::string& value); + void set_fdwname(std::string&& value); + void set_fdwname(const char* value); + void set_fdwname(const char* value, size_t size); + std::string* mutable_fdwname(); + std::string* release_fdwname(); + void set_allocated_fdwname(std::string* fdwname); + private: + const std::string& _internal_fdwname() const; + void _internal_set_fdwname(const std::string& value); + std::string* _internal_mutable_fdwname(); + public: + + // bool if_not_exists = 5 [json_name = "if_not_exists"]; + void clear_if_not_exists(); + bool if_not_exists() const; + void set_if_not_exists(bool value); + private: + bool _internal_if_not_exists() const; + void _internal_set_if_not_exists(bool value); + public: + + // @@protoc_insertion_point(class_scope:pg_query.CreateForeignServerStmt) + private: + class _Internal; + + template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; + typedef void InternalArenaConstructable_; + typedef void DestructorSkippable_; + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > options_; + ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr servername_; + ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr servertype_; + ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr version_; + ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr fdwname_; + bool if_not_exists_; + mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; + friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; +}; +// ------------------------------------------------------------------- + +class AlterForeignServerStmt PROTOBUF_FINAL : + public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.AlterForeignServerStmt) */ { + public: + inline AlterForeignServerStmt() : AlterForeignServerStmt(nullptr) {} + virtual ~AlterForeignServerStmt(); + + AlterForeignServerStmt(const AlterForeignServerStmt& from); + AlterForeignServerStmt(AlterForeignServerStmt&& from) noexcept + : AlterForeignServerStmt() { + *this = ::std::move(from); + } + + inline AlterForeignServerStmt& operator=(const AlterForeignServerStmt& from) { + CopyFrom(from); + return *this; + } + inline AlterForeignServerStmt& operator=(AlterForeignServerStmt&& from) noexcept { + if (GetArena() == from.GetArena()) { + if (this != &from) InternalSwap(&from); + } else { + CopyFrom(from); + } + return *this; + } + + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { + return GetDescriptor(); + } + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { + return GetMetadataStatic().descriptor; + } + static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { + return GetMetadataStatic().reflection; + } + static const AlterForeignServerStmt& default_instance(); + + static inline const AlterForeignServerStmt* internal_default_instance() { + return reinterpret_cast( + &_AlterForeignServerStmt_default_instance_); + } + static constexpr int kIndexInFileMessages = + 148; + + friend void swap(AlterForeignServerStmt& a, AlterForeignServerStmt& b) { + a.Swap(&b); + } + inline void Swap(AlterForeignServerStmt* other) { + if (other == this) return; + if (GetArena() == other->GetArena()) { + InternalSwap(other); + } else { + ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); + } + } + void UnsafeArenaSwap(AlterForeignServerStmt* other) { + if (other == this) return; + GOOGLE_DCHECK(GetArena() == other->GetArena()); + InternalSwap(other); + } + + // implements Message ---------------------------------------------- + + inline AlterForeignServerStmt* New() const final { + return CreateMaybeMessage(nullptr); + } + + AlterForeignServerStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { + return CreateMaybeMessage(arena); + } + void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void CopyFrom(const AlterForeignServerStmt& from); + void MergeFrom(const AlterForeignServerStmt& from); + PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; + bool IsInitialized() const final; + + size_t ByteSizeLong() const final; + const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; + ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( + ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; + int GetCachedSize() const final { return _cached_size_.Get(); } + + private: + inline void SharedCtor(); + inline void SharedDtor(); + void SetCachedSize(int size) const final; + void InternalSwap(AlterForeignServerStmt* other); + friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; + static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { + return "pg_query.AlterForeignServerStmt"; + } + protected: + explicit AlterForeignServerStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena); + private: + static void ArenaDtor(void* object); + inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); + public: + + ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; + private: + static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { + ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); + return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; + } + + public: + + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + + enum : int { + kOptionsFieldNumber = 3, + kServernameFieldNumber = 1, + kVersionFieldNumber = 2, + kHasVersionFieldNumber = 4, + }; + // repeated .pg_query.Node options = 3 [json_name = "options"]; + int options_size() const; + private: + int _internal_options_size() const; + public: + void clear_options(); + ::pg_query::Node* mutable_options(int index); + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* + mutable_options(); + private: + const ::pg_query::Node& _internal_options(int index) const; + ::pg_query::Node* _internal_add_options(); + public: + const ::pg_query::Node& options(int index) const; + ::pg_query::Node* add_options(); + const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& + options() const; + + // string servername = 1 [json_name = "servername"]; + void clear_servername(); + const std::string& servername() const; + void set_servername(const std::string& value); + void set_servername(std::string&& value); + void set_servername(const char* value); + void set_servername(const char* value, size_t size); + std::string* mutable_servername(); + std::string* release_servername(); + void set_allocated_servername(std::string* servername); + private: + const std::string& _internal_servername() const; + void _internal_set_servername(const std::string& value); + std::string* _internal_mutable_servername(); + public: + + // string version = 2 [json_name = "version"]; + void clear_version(); + const std::string& version() const; + void set_version(const std::string& value); + void set_version(std::string&& value); + void set_version(const char* value); + void set_version(const char* value, size_t size); + std::string* mutable_version(); + std::string* release_version(); + void set_allocated_version(std::string* version); + private: + const std::string& _internal_version() const; + void _internal_set_version(const std::string& value); + std::string* _internal_mutable_version(); + public: + + // bool has_version = 4 [json_name = "has_version"]; + void clear_has_version(); + bool has_version() const; + void set_has_version(bool value); + private: + bool _internal_has_version() const; + void _internal_set_has_version(bool value); + public: + + // @@protoc_insertion_point(class_scope:pg_query.AlterForeignServerStmt) + private: + class _Internal; + + template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; + typedef void InternalArenaConstructable_; + typedef void DestructorSkippable_; + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > options_; + ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr servername_; + ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr version_; + bool has_version_; + mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; + friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; +}; +// ------------------------------------------------------------------- + +class CreateUserMappingStmt PROTOBUF_FINAL : + public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.CreateUserMappingStmt) */ { + public: + inline CreateUserMappingStmt() : CreateUserMappingStmt(nullptr) {} + virtual ~CreateUserMappingStmt(); + + CreateUserMappingStmt(const CreateUserMappingStmt& from); + CreateUserMappingStmt(CreateUserMappingStmt&& from) noexcept + : CreateUserMappingStmt() { + *this = ::std::move(from); + } + + inline CreateUserMappingStmt& operator=(const CreateUserMappingStmt& from) { + CopyFrom(from); + return *this; + } + inline CreateUserMappingStmt& operator=(CreateUserMappingStmt&& from) noexcept { + if (GetArena() == from.GetArena()) { + if (this != &from) InternalSwap(&from); + } else { + CopyFrom(from); + } + return *this; + } + + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { + return GetDescriptor(); + } + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { + return GetMetadataStatic().descriptor; + } + static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { + return GetMetadataStatic().reflection; + } + static const CreateUserMappingStmt& default_instance(); + + static inline const CreateUserMappingStmt* internal_default_instance() { + return reinterpret_cast( + &_CreateUserMappingStmt_default_instance_); + } + static constexpr int kIndexInFileMessages = + 149; + + friend void swap(CreateUserMappingStmt& a, CreateUserMappingStmt& b) { + a.Swap(&b); + } + inline void Swap(CreateUserMappingStmt* other) { + if (other == this) return; + if (GetArena() == other->GetArena()) { + InternalSwap(other); + } else { + ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); + } + } + void UnsafeArenaSwap(CreateUserMappingStmt* other) { + if (other == this) return; + GOOGLE_DCHECK(GetArena() == other->GetArena()); + InternalSwap(other); + } + + // implements Message ---------------------------------------------- + + inline CreateUserMappingStmt* New() const final { + return CreateMaybeMessage(nullptr); + } + + CreateUserMappingStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { + return CreateMaybeMessage(arena); + } + void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void CopyFrom(const CreateUserMappingStmt& from); + void MergeFrom(const CreateUserMappingStmt& from); + PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; + bool IsInitialized() const final; + + size_t ByteSizeLong() const final; + const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; + ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( + ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; + int GetCachedSize() const final { return _cached_size_.Get(); } + + private: + inline void SharedCtor(); + inline void SharedDtor(); + void SetCachedSize(int size) const final; + void InternalSwap(CreateUserMappingStmt* other); + friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; + static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { + return "pg_query.CreateUserMappingStmt"; + } + protected: + explicit CreateUserMappingStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena); + private: + static void ArenaDtor(void* object); + inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); + public: + + ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; + private: + static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { + ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); + return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; + } + + public: + + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + + enum : int { + kOptionsFieldNumber = 4, + kServernameFieldNumber = 2, + kUserFieldNumber = 1, + kIfNotExistsFieldNumber = 3, + }; + // repeated .pg_query.Node options = 4 [json_name = "options"]; + int options_size() const; + private: + int _internal_options_size() const; + public: + void clear_options(); + ::pg_query::Node* mutable_options(int index); + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* + mutable_options(); + private: + const ::pg_query::Node& _internal_options(int index) const; + ::pg_query::Node* _internal_add_options(); + public: + const ::pg_query::Node& options(int index) const; + ::pg_query::Node* add_options(); + const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& + options() const; + + // string servername = 2 [json_name = "servername"]; + void clear_servername(); + const std::string& servername() const; + void set_servername(const std::string& value); + void set_servername(std::string&& value); + void set_servername(const char* value); + void set_servername(const char* value, size_t size); + std::string* mutable_servername(); + std::string* release_servername(); + void set_allocated_servername(std::string* servername); + private: + const std::string& _internal_servername() const; + void _internal_set_servername(const std::string& value); + std::string* _internal_mutable_servername(); + public: + + // .pg_query.RoleSpec user = 1 [json_name = "user"]; + bool has_user() const; + private: + bool _internal_has_user() const; + public: + void clear_user(); + const ::pg_query::RoleSpec& user() const; + ::pg_query::RoleSpec* release_user(); + ::pg_query::RoleSpec* mutable_user(); + void set_allocated_user(::pg_query::RoleSpec* user); + private: + const ::pg_query::RoleSpec& _internal_user() const; + ::pg_query::RoleSpec* _internal_mutable_user(); + public: + void unsafe_arena_set_allocated_user( + ::pg_query::RoleSpec* user); + ::pg_query::RoleSpec* unsafe_arena_release_user(); + + // bool if_not_exists = 3 [json_name = "if_not_exists"]; + void clear_if_not_exists(); + bool if_not_exists() const; + void set_if_not_exists(bool value); + private: + bool _internal_if_not_exists() const; + void _internal_set_if_not_exists(bool value); + public: + + // @@protoc_insertion_point(class_scope:pg_query.CreateUserMappingStmt) + private: + class _Internal; + + template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; + typedef void InternalArenaConstructable_; + typedef void DestructorSkippable_; + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > options_; + ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr servername_; + ::pg_query::RoleSpec* user_; + bool if_not_exists_; + mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; + friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; +}; +// ------------------------------------------------------------------- + +class AlterUserMappingStmt PROTOBUF_FINAL : + public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.AlterUserMappingStmt) */ { + public: + inline AlterUserMappingStmt() : AlterUserMappingStmt(nullptr) {} + virtual ~AlterUserMappingStmt(); + + AlterUserMappingStmt(const AlterUserMappingStmt& from); + AlterUserMappingStmt(AlterUserMappingStmt&& from) noexcept + : AlterUserMappingStmt() { + *this = ::std::move(from); + } + + inline AlterUserMappingStmt& operator=(const AlterUserMappingStmt& from) { + CopyFrom(from); + return *this; + } + inline AlterUserMappingStmt& operator=(AlterUserMappingStmt&& from) noexcept { + if (GetArena() == from.GetArena()) { + if (this != &from) InternalSwap(&from); + } else { + CopyFrom(from); + } + return *this; + } + + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { + return GetDescriptor(); + } + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { + return GetMetadataStatic().descriptor; + } + static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { + return GetMetadataStatic().reflection; + } + static const AlterUserMappingStmt& default_instance(); + + static inline const AlterUserMappingStmt* internal_default_instance() { + return reinterpret_cast( + &_AlterUserMappingStmt_default_instance_); + } + static constexpr int kIndexInFileMessages = + 150; + + friend void swap(AlterUserMappingStmt& a, AlterUserMappingStmt& b) { + a.Swap(&b); + } + inline void Swap(AlterUserMappingStmt* other) { + if (other == this) return; + if (GetArena() == other->GetArena()) { + InternalSwap(other); + } else { + ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); + } + } + void UnsafeArenaSwap(AlterUserMappingStmt* other) { + if (other == this) return; + GOOGLE_DCHECK(GetArena() == other->GetArena()); + InternalSwap(other); + } + + // implements Message ---------------------------------------------- + + inline AlterUserMappingStmt* New() const final { + return CreateMaybeMessage(nullptr); + } + + AlterUserMappingStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { + return CreateMaybeMessage(arena); + } + void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void CopyFrom(const AlterUserMappingStmt& from); + void MergeFrom(const AlterUserMappingStmt& from); + PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; + bool IsInitialized() const final; + + size_t ByteSizeLong() const final; + const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; + ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( + ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; + int GetCachedSize() const final { return _cached_size_.Get(); } + + private: + inline void SharedCtor(); + inline void SharedDtor(); + void SetCachedSize(int size) const final; + void InternalSwap(AlterUserMappingStmt* other); + friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; + static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { + return "pg_query.AlterUserMappingStmt"; + } + protected: + explicit AlterUserMappingStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena); + private: + static void ArenaDtor(void* object); + inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); + public: + + ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; + private: + static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { + ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); + return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; + } + + public: + + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + + enum : int { + kOptionsFieldNumber = 3, + kServernameFieldNumber = 2, + kUserFieldNumber = 1, + }; + // repeated .pg_query.Node options = 3 [json_name = "options"]; + int options_size() const; + private: + int _internal_options_size() const; + public: + void clear_options(); + ::pg_query::Node* mutable_options(int index); + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* + mutable_options(); + private: + const ::pg_query::Node& _internal_options(int index) const; + ::pg_query::Node* _internal_add_options(); + public: + const ::pg_query::Node& options(int index) const; + ::pg_query::Node* add_options(); + const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& + options() const; + + // string servername = 2 [json_name = "servername"]; + void clear_servername(); + const std::string& servername() const; + void set_servername(const std::string& value); + void set_servername(std::string&& value); + void set_servername(const char* value); + void set_servername(const char* value, size_t size); + std::string* mutable_servername(); + std::string* release_servername(); + void set_allocated_servername(std::string* servername); + private: + const std::string& _internal_servername() const; + void _internal_set_servername(const std::string& value); + std::string* _internal_mutable_servername(); + public: + + // .pg_query.RoleSpec user = 1 [json_name = "user"]; + bool has_user() const; + private: + bool _internal_has_user() const; + public: + void clear_user(); + const ::pg_query::RoleSpec& user() const; + ::pg_query::RoleSpec* release_user(); + ::pg_query::RoleSpec* mutable_user(); + void set_allocated_user(::pg_query::RoleSpec* user); + private: + const ::pg_query::RoleSpec& _internal_user() const; + ::pg_query::RoleSpec* _internal_mutable_user(); + public: + void unsafe_arena_set_allocated_user( + ::pg_query::RoleSpec* user); + ::pg_query::RoleSpec* unsafe_arena_release_user(); + + // @@protoc_insertion_point(class_scope:pg_query.AlterUserMappingStmt) + private: + class _Internal; + + template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; + typedef void InternalArenaConstructable_; + typedef void DestructorSkippable_; + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > options_; + ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr servername_; + ::pg_query::RoleSpec* user_; + mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; + friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; +}; +// ------------------------------------------------------------------- + +class DropUserMappingStmt PROTOBUF_FINAL : + public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.DropUserMappingStmt) */ { + public: + inline DropUserMappingStmt() : DropUserMappingStmt(nullptr) {} + virtual ~DropUserMappingStmt(); + + DropUserMappingStmt(const DropUserMappingStmt& from); + DropUserMappingStmt(DropUserMappingStmt&& from) noexcept + : DropUserMappingStmt() { + *this = ::std::move(from); + } + + inline DropUserMappingStmt& operator=(const DropUserMappingStmt& from) { + CopyFrom(from); + return *this; + } + inline DropUserMappingStmt& operator=(DropUserMappingStmt&& from) noexcept { + if (GetArena() == from.GetArena()) { + if (this != &from) InternalSwap(&from); + } else { + CopyFrom(from); + } + return *this; + } + + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { + return GetDescriptor(); + } + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { + return GetMetadataStatic().descriptor; + } + static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { + return GetMetadataStatic().reflection; + } + static const DropUserMappingStmt& default_instance(); + + static inline const DropUserMappingStmt* internal_default_instance() { + return reinterpret_cast( + &_DropUserMappingStmt_default_instance_); + } + static constexpr int kIndexInFileMessages = + 151; + + friend void swap(DropUserMappingStmt& a, DropUserMappingStmt& b) { + a.Swap(&b); + } + inline void Swap(DropUserMappingStmt* other) { + if (other == this) return; + if (GetArena() == other->GetArena()) { + InternalSwap(other); + } else { + ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); + } + } + void UnsafeArenaSwap(DropUserMappingStmt* other) { + if (other == this) return; + GOOGLE_DCHECK(GetArena() == other->GetArena()); + InternalSwap(other); + } + + // implements Message ---------------------------------------------- + + inline DropUserMappingStmt* New() const final { + return CreateMaybeMessage(nullptr); + } + + DropUserMappingStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { + return CreateMaybeMessage(arena); + } + void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void CopyFrom(const DropUserMappingStmt& from); + void MergeFrom(const DropUserMappingStmt& from); + PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; + bool IsInitialized() const final; + + size_t ByteSizeLong() const final; + const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; + ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( + ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; + int GetCachedSize() const final { return _cached_size_.Get(); } + + private: + inline void SharedCtor(); + inline void SharedDtor(); + void SetCachedSize(int size) const final; + void InternalSwap(DropUserMappingStmt* other); + friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; + static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { + return "pg_query.DropUserMappingStmt"; + } + protected: + explicit DropUserMappingStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena); + private: + static void ArenaDtor(void* object); + inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); + public: + + ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; + private: + static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { + ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); + return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; + } + + public: + + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + + enum : int { + kServernameFieldNumber = 2, + kUserFieldNumber = 1, + kMissingOkFieldNumber = 3, + }; + // string servername = 2 [json_name = "servername"]; + void clear_servername(); + const std::string& servername() const; + void set_servername(const std::string& value); + void set_servername(std::string&& value); + void set_servername(const char* value); + void set_servername(const char* value, size_t size); + std::string* mutable_servername(); + std::string* release_servername(); + void set_allocated_servername(std::string* servername); + private: + const std::string& _internal_servername() const; + void _internal_set_servername(const std::string& value); + std::string* _internal_mutable_servername(); + public: + + // .pg_query.RoleSpec user = 1 [json_name = "user"]; + bool has_user() const; + private: + bool _internal_has_user() const; + public: + void clear_user(); + const ::pg_query::RoleSpec& user() const; + ::pg_query::RoleSpec* release_user(); + ::pg_query::RoleSpec* mutable_user(); + void set_allocated_user(::pg_query::RoleSpec* user); + private: + const ::pg_query::RoleSpec& _internal_user() const; + ::pg_query::RoleSpec* _internal_mutable_user(); + public: + void unsafe_arena_set_allocated_user( + ::pg_query::RoleSpec* user); + ::pg_query::RoleSpec* unsafe_arena_release_user(); + + // bool missing_ok = 3 [json_name = "missing_ok"]; + void clear_missing_ok(); + bool missing_ok() const; + void set_missing_ok(bool value); + private: + bool _internal_missing_ok() const; + void _internal_set_missing_ok(bool value); + public: + + // @@protoc_insertion_point(class_scope:pg_query.DropUserMappingStmt) + private: + class _Internal; + + template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; + typedef void InternalArenaConstructable_; + typedef void DestructorSkippable_; + ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr servername_; + ::pg_query::RoleSpec* user_; + bool missing_ok_; + mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; + friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; +}; +// ------------------------------------------------------------------- + +class AlterTableSpaceOptionsStmt PROTOBUF_FINAL : + public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.AlterTableSpaceOptionsStmt) */ { + public: + inline AlterTableSpaceOptionsStmt() : AlterTableSpaceOptionsStmt(nullptr) {} + virtual ~AlterTableSpaceOptionsStmt(); + + AlterTableSpaceOptionsStmt(const AlterTableSpaceOptionsStmt& from); + AlterTableSpaceOptionsStmt(AlterTableSpaceOptionsStmt&& from) noexcept + : AlterTableSpaceOptionsStmt() { + *this = ::std::move(from); + } + + inline AlterTableSpaceOptionsStmt& operator=(const AlterTableSpaceOptionsStmt& from) { + CopyFrom(from); + return *this; + } + inline AlterTableSpaceOptionsStmt& operator=(AlterTableSpaceOptionsStmt&& from) noexcept { + if (GetArena() == from.GetArena()) { + if (this != &from) InternalSwap(&from); + } else { + CopyFrom(from); + } + return *this; + } + + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { + return GetDescriptor(); + } + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { + return GetMetadataStatic().descriptor; + } + static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { + return GetMetadataStatic().reflection; + } + static const AlterTableSpaceOptionsStmt& default_instance(); + + static inline const AlterTableSpaceOptionsStmt* internal_default_instance() { + return reinterpret_cast( + &_AlterTableSpaceOptionsStmt_default_instance_); + } + static constexpr int kIndexInFileMessages = + 152; + + friend void swap(AlterTableSpaceOptionsStmt& a, AlterTableSpaceOptionsStmt& b) { + a.Swap(&b); + } + inline void Swap(AlterTableSpaceOptionsStmt* other) { + if (other == this) return; + if (GetArena() == other->GetArena()) { + InternalSwap(other); + } else { + ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); + } + } + void UnsafeArenaSwap(AlterTableSpaceOptionsStmt* other) { + if (other == this) return; + GOOGLE_DCHECK(GetArena() == other->GetArena()); + InternalSwap(other); + } + + // implements Message ---------------------------------------------- + + inline AlterTableSpaceOptionsStmt* New() const final { + return CreateMaybeMessage(nullptr); + } + + AlterTableSpaceOptionsStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { + return CreateMaybeMessage(arena); + } + void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void CopyFrom(const AlterTableSpaceOptionsStmt& from); + void MergeFrom(const AlterTableSpaceOptionsStmt& from); + PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; + bool IsInitialized() const final; + + size_t ByteSizeLong() const final; + const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; + ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( + ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; + int GetCachedSize() const final { return _cached_size_.Get(); } + + private: + inline void SharedCtor(); + inline void SharedDtor(); + void SetCachedSize(int size) const final; + void InternalSwap(AlterTableSpaceOptionsStmt* other); + friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; + static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { + return "pg_query.AlterTableSpaceOptionsStmt"; + } + protected: + explicit AlterTableSpaceOptionsStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena); + private: + static void ArenaDtor(void* object); + inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); + public: + + ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; + private: + static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { + ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); + return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; + } + + public: + + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + + enum : int { + kOptionsFieldNumber = 2, + kTablespacenameFieldNumber = 1, + kIsResetFieldNumber = 3, + }; + // repeated .pg_query.Node options = 2 [json_name = "options"]; + int options_size() const; + private: + int _internal_options_size() const; + public: + void clear_options(); + ::pg_query::Node* mutable_options(int index); + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* + mutable_options(); + private: + const ::pg_query::Node& _internal_options(int index) const; + ::pg_query::Node* _internal_add_options(); + public: + const ::pg_query::Node& options(int index) const; + ::pg_query::Node* add_options(); + const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& + options() const; + + // string tablespacename = 1 [json_name = "tablespacename"]; + void clear_tablespacename(); + const std::string& tablespacename() const; + void set_tablespacename(const std::string& value); + void set_tablespacename(std::string&& value); + void set_tablespacename(const char* value); + void set_tablespacename(const char* value, size_t size); + std::string* mutable_tablespacename(); + std::string* release_tablespacename(); + void set_allocated_tablespacename(std::string* tablespacename); + private: + const std::string& _internal_tablespacename() const; + void _internal_set_tablespacename(const std::string& value); + std::string* _internal_mutable_tablespacename(); + public: + + // bool is_reset = 3 [json_name = "isReset"]; + void clear_is_reset(); + bool is_reset() const; + void set_is_reset(bool value); + private: + bool _internal_is_reset() const; + void _internal_set_is_reset(bool value); + public: + + // @@protoc_insertion_point(class_scope:pg_query.AlterTableSpaceOptionsStmt) + private: + class _Internal; + + template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; + typedef void InternalArenaConstructable_; + typedef void DestructorSkippable_; + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > options_; + ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr tablespacename_; + bool is_reset_; + mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; + friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; +}; +// ------------------------------------------------------------------- + +class AlterTableMoveAllStmt PROTOBUF_FINAL : + public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.AlterTableMoveAllStmt) */ { + public: + inline AlterTableMoveAllStmt() : AlterTableMoveAllStmt(nullptr) {} + virtual ~AlterTableMoveAllStmt(); + + AlterTableMoveAllStmt(const AlterTableMoveAllStmt& from); + AlterTableMoveAllStmt(AlterTableMoveAllStmt&& from) noexcept + : AlterTableMoveAllStmt() { + *this = ::std::move(from); + } + + inline AlterTableMoveAllStmt& operator=(const AlterTableMoveAllStmt& from) { + CopyFrom(from); + return *this; + } + inline AlterTableMoveAllStmt& operator=(AlterTableMoveAllStmt&& from) noexcept { + if (GetArena() == from.GetArena()) { + if (this != &from) InternalSwap(&from); + } else { + CopyFrom(from); + } + return *this; + } + + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { + return GetDescriptor(); + } + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { + return GetMetadataStatic().descriptor; + } + static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { + return GetMetadataStatic().reflection; + } + static const AlterTableMoveAllStmt& default_instance(); + + static inline const AlterTableMoveAllStmt* internal_default_instance() { + return reinterpret_cast( + &_AlterTableMoveAllStmt_default_instance_); + } + static constexpr int kIndexInFileMessages = + 153; + + friend void swap(AlterTableMoveAllStmt& a, AlterTableMoveAllStmt& b) { + a.Swap(&b); + } + inline void Swap(AlterTableMoveAllStmt* other) { + if (other == this) return; + if (GetArena() == other->GetArena()) { + InternalSwap(other); + } else { + ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); + } + } + void UnsafeArenaSwap(AlterTableMoveAllStmt* other) { + if (other == this) return; + GOOGLE_DCHECK(GetArena() == other->GetArena()); + InternalSwap(other); + } + + // implements Message ---------------------------------------------- + + inline AlterTableMoveAllStmt* New() const final { + return CreateMaybeMessage(nullptr); + } + + AlterTableMoveAllStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { + return CreateMaybeMessage(arena); + } + void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void CopyFrom(const AlterTableMoveAllStmt& from); + void MergeFrom(const AlterTableMoveAllStmt& from); + PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; + bool IsInitialized() const final; + + size_t ByteSizeLong() const final; + const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; + ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( + ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; + int GetCachedSize() const final { return _cached_size_.Get(); } + + private: + inline void SharedCtor(); + inline void SharedDtor(); + void SetCachedSize(int size) const final; + void InternalSwap(AlterTableMoveAllStmt* other); + friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; + static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { + return "pg_query.AlterTableMoveAllStmt"; + } + protected: + explicit AlterTableMoveAllStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena); + private: + static void ArenaDtor(void* object); + inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); + public: + + ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; + private: + static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { + ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); + return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; + } + + public: + + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + + enum : int { + kRolesFieldNumber = 3, + kOrigTablespacenameFieldNumber = 1, + kNewTablespacenameFieldNumber = 4, + kObjtypeFieldNumber = 2, + kNowaitFieldNumber = 5, + }; + // repeated .pg_query.Node roles = 3 [json_name = "roles"]; + int roles_size() const; + private: + int _internal_roles_size() const; + public: + void clear_roles(); + ::pg_query::Node* mutable_roles(int index); + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* + mutable_roles(); + private: + const ::pg_query::Node& _internal_roles(int index) const; + ::pg_query::Node* _internal_add_roles(); + public: + const ::pg_query::Node& roles(int index) const; + ::pg_query::Node* add_roles(); + const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& + roles() const; + + // string orig_tablespacename = 1 [json_name = "orig_tablespacename"]; + void clear_orig_tablespacename(); + const std::string& orig_tablespacename() const; + void set_orig_tablespacename(const std::string& value); + void set_orig_tablespacename(std::string&& value); + void set_orig_tablespacename(const char* value); + void set_orig_tablespacename(const char* value, size_t size); + std::string* mutable_orig_tablespacename(); + std::string* release_orig_tablespacename(); + void set_allocated_orig_tablespacename(std::string* orig_tablespacename); + private: + const std::string& _internal_orig_tablespacename() const; + void _internal_set_orig_tablespacename(const std::string& value); + std::string* _internal_mutable_orig_tablespacename(); + public: + + // string new_tablespacename = 4 [json_name = "new_tablespacename"]; + void clear_new_tablespacename(); + const std::string& new_tablespacename() const; + void set_new_tablespacename(const std::string& value); + void set_new_tablespacename(std::string&& value); + void set_new_tablespacename(const char* value); + void set_new_tablespacename(const char* value, size_t size); + std::string* mutable_new_tablespacename(); + std::string* release_new_tablespacename(); + void set_allocated_new_tablespacename(std::string* new_tablespacename); + private: + const std::string& _internal_new_tablespacename() const; + void _internal_set_new_tablespacename(const std::string& value); + std::string* _internal_mutable_new_tablespacename(); + public: + + // .pg_query.ObjectType objtype = 2 [json_name = "objtype"]; + void clear_objtype(); + ::pg_query::ObjectType objtype() const; + void set_objtype(::pg_query::ObjectType value); + private: + ::pg_query::ObjectType _internal_objtype() const; + void _internal_set_objtype(::pg_query::ObjectType value); + public: + + // bool nowait = 5 [json_name = "nowait"]; + void clear_nowait(); + bool nowait() const; + void set_nowait(bool value); + private: + bool _internal_nowait() const; + void _internal_set_nowait(bool value); + public: + + // @@protoc_insertion_point(class_scope:pg_query.AlterTableMoveAllStmt) + private: + class _Internal; + + template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; + typedef void InternalArenaConstructable_; + typedef void DestructorSkippable_; + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > roles_; + ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr orig_tablespacename_; + ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr new_tablespacename_; + int objtype_; + bool nowait_; + mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; + friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; +}; +// ------------------------------------------------------------------- + +class SecLabelStmt PROTOBUF_FINAL : + public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.SecLabelStmt) */ { + public: + inline SecLabelStmt() : SecLabelStmt(nullptr) {} + virtual ~SecLabelStmt(); + + SecLabelStmt(const SecLabelStmt& from); + SecLabelStmt(SecLabelStmt&& from) noexcept + : SecLabelStmt() { + *this = ::std::move(from); + } + + inline SecLabelStmt& operator=(const SecLabelStmt& from) { + CopyFrom(from); + return *this; + } + inline SecLabelStmt& operator=(SecLabelStmt&& from) noexcept { + if (GetArena() == from.GetArena()) { + if (this != &from) InternalSwap(&from); + } else { + CopyFrom(from); + } + return *this; + } + + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { + return GetDescriptor(); + } + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { + return GetMetadataStatic().descriptor; + } + static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { + return GetMetadataStatic().reflection; + } + static const SecLabelStmt& default_instance(); + + static inline const SecLabelStmt* internal_default_instance() { + return reinterpret_cast( + &_SecLabelStmt_default_instance_); + } + static constexpr int kIndexInFileMessages = + 154; + + friend void swap(SecLabelStmt& a, SecLabelStmt& b) { + a.Swap(&b); + } + inline void Swap(SecLabelStmt* other) { + if (other == this) return; + if (GetArena() == other->GetArena()) { + InternalSwap(other); + } else { + ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); + } + } + void UnsafeArenaSwap(SecLabelStmt* other) { + if (other == this) return; + GOOGLE_DCHECK(GetArena() == other->GetArena()); + InternalSwap(other); + } + + // implements Message ---------------------------------------------- + + inline SecLabelStmt* New() const final { + return CreateMaybeMessage(nullptr); + } + + SecLabelStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { + return CreateMaybeMessage(arena); + } + void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void CopyFrom(const SecLabelStmt& from); + void MergeFrom(const SecLabelStmt& from); + PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; + bool IsInitialized() const final; + + size_t ByteSizeLong() const final; + const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; + ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( + ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; + int GetCachedSize() const final { return _cached_size_.Get(); } + + private: + inline void SharedCtor(); + inline void SharedDtor(); + void SetCachedSize(int size) const final; + void InternalSwap(SecLabelStmt* other); + friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; + static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { + return "pg_query.SecLabelStmt"; + } + protected: + explicit SecLabelStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena); + private: + static void ArenaDtor(void* object); + inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); + public: + + ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; + private: + static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { + ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); + return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; + } + + public: + + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + + enum : int { + kProviderFieldNumber = 3, + kLabelFieldNumber = 4, + kObjectFieldNumber = 2, + kObjtypeFieldNumber = 1, + }; + // string provider = 3 [json_name = "provider"]; + void clear_provider(); + const std::string& provider() const; + void set_provider(const std::string& value); + void set_provider(std::string&& value); + void set_provider(const char* value); + void set_provider(const char* value, size_t size); + std::string* mutable_provider(); + std::string* release_provider(); + void set_allocated_provider(std::string* provider); + private: + const std::string& _internal_provider() const; + void _internal_set_provider(const std::string& value); + std::string* _internal_mutable_provider(); + public: + + // string label = 4 [json_name = "label"]; + void clear_label(); + const std::string& label() const; + void set_label(const std::string& value); + void set_label(std::string&& value); + void set_label(const char* value); + void set_label(const char* value, size_t size); + std::string* mutable_label(); + std::string* release_label(); + void set_allocated_label(std::string* label); + private: + const std::string& _internal_label() const; + void _internal_set_label(const std::string& value); + std::string* _internal_mutable_label(); + public: + + // .pg_query.Node object = 2 [json_name = "object"]; + bool has_object() const; + private: + bool _internal_has_object() const; + public: + void clear_object(); + const ::pg_query::Node& object() const; + ::pg_query::Node* release_object(); + ::pg_query::Node* mutable_object(); + void set_allocated_object(::pg_query::Node* object); + private: + const ::pg_query::Node& _internal_object() const; + ::pg_query::Node* _internal_mutable_object(); + public: + void unsafe_arena_set_allocated_object( + ::pg_query::Node* object); + ::pg_query::Node* unsafe_arena_release_object(); + + // .pg_query.ObjectType objtype = 1 [json_name = "objtype"]; + void clear_objtype(); + ::pg_query::ObjectType objtype() const; + void set_objtype(::pg_query::ObjectType value); + private: + ::pg_query::ObjectType _internal_objtype() const; + void _internal_set_objtype(::pg_query::ObjectType value); + public: + + // @@protoc_insertion_point(class_scope:pg_query.SecLabelStmt) + private: + class _Internal; + + template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; + typedef void InternalArenaConstructable_; + typedef void DestructorSkippable_; + ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr provider_; + ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr label_; + ::pg_query::Node* object_; + int objtype_; + mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; + friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; +}; +// ------------------------------------------------------------------- + +class CreateForeignTableStmt PROTOBUF_FINAL : + public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.CreateForeignTableStmt) */ { + public: + inline CreateForeignTableStmt() : CreateForeignTableStmt(nullptr) {} + virtual ~CreateForeignTableStmt(); + + CreateForeignTableStmt(const CreateForeignTableStmt& from); + CreateForeignTableStmt(CreateForeignTableStmt&& from) noexcept + : CreateForeignTableStmt() { + *this = ::std::move(from); + } + + inline CreateForeignTableStmt& operator=(const CreateForeignTableStmt& from) { + CopyFrom(from); + return *this; + } + inline CreateForeignTableStmt& operator=(CreateForeignTableStmt&& from) noexcept { + if (GetArena() == from.GetArena()) { + if (this != &from) InternalSwap(&from); + } else { + CopyFrom(from); + } + return *this; + } + + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { + return GetDescriptor(); + } + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { + return GetMetadataStatic().descriptor; + } + static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { + return GetMetadataStatic().reflection; + } + static const CreateForeignTableStmt& default_instance(); + + static inline const CreateForeignTableStmt* internal_default_instance() { + return reinterpret_cast( + &_CreateForeignTableStmt_default_instance_); + } + static constexpr int kIndexInFileMessages = + 155; + + friend void swap(CreateForeignTableStmt& a, CreateForeignTableStmt& b) { + a.Swap(&b); + } + inline void Swap(CreateForeignTableStmt* other) { + if (other == this) return; + if (GetArena() == other->GetArena()) { + InternalSwap(other); + } else { + ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); + } + } + void UnsafeArenaSwap(CreateForeignTableStmt* other) { + if (other == this) return; + GOOGLE_DCHECK(GetArena() == other->GetArena()); + InternalSwap(other); + } + + // implements Message ---------------------------------------------- + + inline CreateForeignTableStmt* New() const final { + return CreateMaybeMessage(nullptr); + } + + CreateForeignTableStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { + return CreateMaybeMessage(arena); + } + void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void CopyFrom(const CreateForeignTableStmt& from); + void MergeFrom(const CreateForeignTableStmt& from); + PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; + bool IsInitialized() const final; + + size_t ByteSizeLong() const final; + const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; + ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( + ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; + int GetCachedSize() const final { return _cached_size_.Get(); } + + private: + inline void SharedCtor(); + inline void SharedDtor(); + void SetCachedSize(int size) const final; + void InternalSwap(CreateForeignTableStmt* other); + friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; + static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { + return "pg_query.CreateForeignTableStmt"; + } + protected: + explicit CreateForeignTableStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena); + private: + static void ArenaDtor(void* object); + inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); + public: + + ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; + private: + static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { + ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); + return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; + } + + public: + + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + + enum : int { + kOptionsFieldNumber = 3, + kServernameFieldNumber = 2, + kBaseStmtFieldNumber = 1, + }; + // repeated .pg_query.Node options = 3 [json_name = "options"]; + int options_size() const; + private: + int _internal_options_size() const; + public: + void clear_options(); + ::pg_query::Node* mutable_options(int index); + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* + mutable_options(); + private: + const ::pg_query::Node& _internal_options(int index) const; + ::pg_query::Node* _internal_add_options(); + public: + const ::pg_query::Node& options(int index) const; + ::pg_query::Node* add_options(); + const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& + options() const; + + // string servername = 2 [json_name = "servername"]; + void clear_servername(); + const std::string& servername() const; + void set_servername(const std::string& value); + void set_servername(std::string&& value); + void set_servername(const char* value); + void set_servername(const char* value, size_t size); + std::string* mutable_servername(); + std::string* release_servername(); + void set_allocated_servername(std::string* servername); + private: + const std::string& _internal_servername() const; + void _internal_set_servername(const std::string& value); + std::string* _internal_mutable_servername(); + public: + + // .pg_query.CreateStmt base_stmt = 1 [json_name = "base"]; + bool has_base_stmt() const; + private: + bool _internal_has_base_stmt() const; + public: + void clear_base_stmt(); + const ::pg_query::CreateStmt& base_stmt() const; + ::pg_query::CreateStmt* release_base_stmt(); + ::pg_query::CreateStmt* mutable_base_stmt(); + void set_allocated_base_stmt(::pg_query::CreateStmt* base_stmt); + private: + const ::pg_query::CreateStmt& _internal_base_stmt() const; + ::pg_query::CreateStmt* _internal_mutable_base_stmt(); + public: + void unsafe_arena_set_allocated_base_stmt( + ::pg_query::CreateStmt* base_stmt); + ::pg_query::CreateStmt* unsafe_arena_release_base_stmt(); + + // @@protoc_insertion_point(class_scope:pg_query.CreateForeignTableStmt) + private: + class _Internal; + + template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; + typedef void InternalArenaConstructable_; + typedef void DestructorSkippable_; + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > options_; + ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr servername_; + ::pg_query::CreateStmt* base_stmt_; + mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; + friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; +}; +// ------------------------------------------------------------------- + +class ImportForeignSchemaStmt PROTOBUF_FINAL : + public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.ImportForeignSchemaStmt) */ { + public: + inline ImportForeignSchemaStmt() : ImportForeignSchemaStmt(nullptr) {} + virtual ~ImportForeignSchemaStmt(); + + ImportForeignSchemaStmt(const ImportForeignSchemaStmt& from); + ImportForeignSchemaStmt(ImportForeignSchemaStmt&& from) noexcept + : ImportForeignSchemaStmt() { + *this = ::std::move(from); + } + + inline ImportForeignSchemaStmt& operator=(const ImportForeignSchemaStmt& from) { + CopyFrom(from); + return *this; + } + inline ImportForeignSchemaStmt& operator=(ImportForeignSchemaStmt&& from) noexcept { + if (GetArena() == from.GetArena()) { + if (this != &from) InternalSwap(&from); + } else { + CopyFrom(from); + } + return *this; + } + + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { + return GetDescriptor(); + } + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { + return GetMetadataStatic().descriptor; + } + static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { + return GetMetadataStatic().reflection; + } + static const ImportForeignSchemaStmt& default_instance(); + + static inline const ImportForeignSchemaStmt* internal_default_instance() { + return reinterpret_cast( + &_ImportForeignSchemaStmt_default_instance_); + } + static constexpr int kIndexInFileMessages = + 156; + + friend void swap(ImportForeignSchemaStmt& a, ImportForeignSchemaStmt& b) { + a.Swap(&b); + } + inline void Swap(ImportForeignSchemaStmt* other) { + if (other == this) return; + if (GetArena() == other->GetArena()) { + InternalSwap(other); + } else { + ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); + } + } + void UnsafeArenaSwap(ImportForeignSchemaStmt* other) { + if (other == this) return; + GOOGLE_DCHECK(GetArena() == other->GetArena()); + InternalSwap(other); + } + + // implements Message ---------------------------------------------- + + inline ImportForeignSchemaStmt* New() const final { + return CreateMaybeMessage(nullptr); + } + + ImportForeignSchemaStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { + return CreateMaybeMessage(arena); + } + void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void CopyFrom(const ImportForeignSchemaStmt& from); + void MergeFrom(const ImportForeignSchemaStmt& from); + PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; + bool IsInitialized() const final; + + size_t ByteSizeLong() const final; + const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; + ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( + ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; + int GetCachedSize() const final { return _cached_size_.Get(); } + + private: + inline void SharedCtor(); + inline void SharedDtor(); + void SetCachedSize(int size) const final; + void InternalSwap(ImportForeignSchemaStmt* other); + friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; + static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { + return "pg_query.ImportForeignSchemaStmt"; + } + protected: + explicit ImportForeignSchemaStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena); + private: + static void ArenaDtor(void* object); + inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); + public: + + ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; + private: + static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { + ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); + return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; + } + + public: + + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + + enum : int { + kTableListFieldNumber = 5, + kOptionsFieldNumber = 6, + kServerNameFieldNumber = 1, + kRemoteSchemaFieldNumber = 2, + kLocalSchemaFieldNumber = 3, + kListTypeFieldNumber = 4, + }; + // repeated .pg_query.Node table_list = 5 [json_name = "table_list"]; + int table_list_size() const; + private: + int _internal_table_list_size() const; + public: + void clear_table_list(); + ::pg_query::Node* mutable_table_list(int index); + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* + mutable_table_list(); + private: + const ::pg_query::Node& _internal_table_list(int index) const; + ::pg_query::Node* _internal_add_table_list(); + public: + const ::pg_query::Node& table_list(int index) const; + ::pg_query::Node* add_table_list(); + const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& + table_list() const; + + // repeated .pg_query.Node options = 6 [json_name = "options"]; + int options_size() const; + private: + int _internal_options_size() const; + public: + void clear_options(); + ::pg_query::Node* mutable_options(int index); + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* + mutable_options(); + private: + const ::pg_query::Node& _internal_options(int index) const; + ::pg_query::Node* _internal_add_options(); + public: + const ::pg_query::Node& options(int index) const; + ::pg_query::Node* add_options(); + const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& + options() const; + + // string server_name = 1 [json_name = "server_name"]; + void clear_server_name(); + const std::string& server_name() const; + void set_server_name(const std::string& value); + void set_server_name(std::string&& value); + void set_server_name(const char* value); + void set_server_name(const char* value, size_t size); + std::string* mutable_server_name(); + std::string* release_server_name(); + void set_allocated_server_name(std::string* server_name); + private: + const std::string& _internal_server_name() const; + void _internal_set_server_name(const std::string& value); + std::string* _internal_mutable_server_name(); + public: + + // string remote_schema = 2 [json_name = "remote_schema"]; + void clear_remote_schema(); + const std::string& remote_schema() const; + void set_remote_schema(const std::string& value); + void set_remote_schema(std::string&& value); + void set_remote_schema(const char* value); + void set_remote_schema(const char* value, size_t size); + std::string* mutable_remote_schema(); + std::string* release_remote_schema(); + void set_allocated_remote_schema(std::string* remote_schema); + private: + const std::string& _internal_remote_schema() const; + void _internal_set_remote_schema(const std::string& value); + std::string* _internal_mutable_remote_schema(); + public: + + // string local_schema = 3 [json_name = "local_schema"]; + void clear_local_schema(); + const std::string& local_schema() const; + void set_local_schema(const std::string& value); + void set_local_schema(std::string&& value); + void set_local_schema(const char* value); + void set_local_schema(const char* value, size_t size); + std::string* mutable_local_schema(); + std::string* release_local_schema(); + void set_allocated_local_schema(std::string* local_schema); + private: + const std::string& _internal_local_schema() const; + void _internal_set_local_schema(const std::string& value); + std::string* _internal_mutable_local_schema(); + public: + + // .pg_query.ImportForeignSchemaType list_type = 4 [json_name = "list_type"]; + void clear_list_type(); + ::pg_query::ImportForeignSchemaType list_type() const; + void set_list_type(::pg_query::ImportForeignSchemaType value); + private: + ::pg_query::ImportForeignSchemaType _internal_list_type() const; + void _internal_set_list_type(::pg_query::ImportForeignSchemaType value); + public: + + // @@protoc_insertion_point(class_scope:pg_query.ImportForeignSchemaStmt) + private: + class _Internal; + + template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; + typedef void InternalArenaConstructable_; + typedef void DestructorSkippable_; + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > table_list_; + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > options_; + ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr server_name_; + ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr remote_schema_; + ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr local_schema_; + int list_type_; + mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; + friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; +}; +// ------------------------------------------------------------------- + +class CreateExtensionStmt PROTOBUF_FINAL : + public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.CreateExtensionStmt) */ { + public: + inline CreateExtensionStmt() : CreateExtensionStmt(nullptr) {} + virtual ~CreateExtensionStmt(); + + CreateExtensionStmt(const CreateExtensionStmt& from); + CreateExtensionStmt(CreateExtensionStmt&& from) noexcept + : CreateExtensionStmt() { + *this = ::std::move(from); + } + + inline CreateExtensionStmt& operator=(const CreateExtensionStmt& from) { + CopyFrom(from); + return *this; + } + inline CreateExtensionStmt& operator=(CreateExtensionStmt&& from) noexcept { + if (GetArena() == from.GetArena()) { + if (this != &from) InternalSwap(&from); + } else { + CopyFrom(from); + } + return *this; + } + + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { + return GetDescriptor(); + } + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { + return GetMetadataStatic().descriptor; + } + static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { + return GetMetadataStatic().reflection; + } + static const CreateExtensionStmt& default_instance(); + + static inline const CreateExtensionStmt* internal_default_instance() { + return reinterpret_cast( + &_CreateExtensionStmt_default_instance_); + } + static constexpr int kIndexInFileMessages = + 157; + + friend void swap(CreateExtensionStmt& a, CreateExtensionStmt& b) { + a.Swap(&b); + } + inline void Swap(CreateExtensionStmt* other) { + if (other == this) return; + if (GetArena() == other->GetArena()) { + InternalSwap(other); + } else { + ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); + } + } + void UnsafeArenaSwap(CreateExtensionStmt* other) { + if (other == this) return; + GOOGLE_DCHECK(GetArena() == other->GetArena()); + InternalSwap(other); + } + + // implements Message ---------------------------------------------- + + inline CreateExtensionStmt* New() const final { + return CreateMaybeMessage(nullptr); + } + + CreateExtensionStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { + return CreateMaybeMessage(arena); + } + void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void CopyFrom(const CreateExtensionStmt& from); + void MergeFrom(const CreateExtensionStmt& from); + PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; + bool IsInitialized() const final; + + size_t ByteSizeLong() const final; + const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; + ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( + ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; + int GetCachedSize() const final { return _cached_size_.Get(); } + + private: + inline void SharedCtor(); + inline void SharedDtor(); + void SetCachedSize(int size) const final; + void InternalSwap(CreateExtensionStmt* other); + friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; + static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { + return "pg_query.CreateExtensionStmt"; + } + protected: + explicit CreateExtensionStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena); + private: + static void ArenaDtor(void* object); + inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); + public: + + ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; + private: + static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { + ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); + return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; + } + + public: + + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + + enum : int { + kOptionsFieldNumber = 3, + kExtnameFieldNumber = 1, + kIfNotExistsFieldNumber = 2, + }; + // repeated .pg_query.Node options = 3 [json_name = "options"]; + int options_size() const; + private: + int _internal_options_size() const; + public: + void clear_options(); + ::pg_query::Node* mutable_options(int index); + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* + mutable_options(); + private: + const ::pg_query::Node& _internal_options(int index) const; + ::pg_query::Node* _internal_add_options(); + public: + const ::pg_query::Node& options(int index) const; + ::pg_query::Node* add_options(); + const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& + options() const; + + // string extname = 1 [json_name = "extname"]; + void clear_extname(); + const std::string& extname() const; + void set_extname(const std::string& value); + void set_extname(std::string&& value); + void set_extname(const char* value); + void set_extname(const char* value, size_t size); + std::string* mutable_extname(); + std::string* release_extname(); + void set_allocated_extname(std::string* extname); + private: + const std::string& _internal_extname() const; + void _internal_set_extname(const std::string& value); + std::string* _internal_mutable_extname(); + public: + + // bool if_not_exists = 2 [json_name = "if_not_exists"]; + void clear_if_not_exists(); + bool if_not_exists() const; + void set_if_not_exists(bool value); + private: + bool _internal_if_not_exists() const; + void _internal_set_if_not_exists(bool value); + public: + + // @@protoc_insertion_point(class_scope:pg_query.CreateExtensionStmt) + private: + class _Internal; + + template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; + typedef void InternalArenaConstructable_; + typedef void DestructorSkippable_; + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > options_; + ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr extname_; + bool if_not_exists_; + mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; + friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; +}; +// ------------------------------------------------------------------- + +class AlterExtensionStmt PROTOBUF_FINAL : + public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.AlterExtensionStmt) */ { + public: + inline AlterExtensionStmt() : AlterExtensionStmt(nullptr) {} + virtual ~AlterExtensionStmt(); + + AlterExtensionStmt(const AlterExtensionStmt& from); + AlterExtensionStmt(AlterExtensionStmt&& from) noexcept + : AlterExtensionStmt() { + *this = ::std::move(from); + } + + inline AlterExtensionStmt& operator=(const AlterExtensionStmt& from) { + CopyFrom(from); + return *this; + } + inline AlterExtensionStmt& operator=(AlterExtensionStmt&& from) noexcept { + if (GetArena() == from.GetArena()) { + if (this != &from) InternalSwap(&from); + } else { + CopyFrom(from); + } + return *this; + } + + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { + return GetDescriptor(); + } + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { + return GetMetadataStatic().descriptor; + } + static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { + return GetMetadataStatic().reflection; + } + static const AlterExtensionStmt& default_instance(); + + static inline const AlterExtensionStmt* internal_default_instance() { + return reinterpret_cast( + &_AlterExtensionStmt_default_instance_); + } + static constexpr int kIndexInFileMessages = + 158; + + friend void swap(AlterExtensionStmt& a, AlterExtensionStmt& b) { + a.Swap(&b); + } + inline void Swap(AlterExtensionStmt* other) { + if (other == this) return; + if (GetArena() == other->GetArena()) { + InternalSwap(other); + } else { + ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); + } + } + void UnsafeArenaSwap(AlterExtensionStmt* other) { + if (other == this) return; + GOOGLE_DCHECK(GetArena() == other->GetArena()); + InternalSwap(other); + } + + // implements Message ---------------------------------------------- + + inline AlterExtensionStmt* New() const final { + return CreateMaybeMessage(nullptr); + } + + AlterExtensionStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { + return CreateMaybeMessage(arena); + } + void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void CopyFrom(const AlterExtensionStmt& from); + void MergeFrom(const AlterExtensionStmt& from); + PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; + bool IsInitialized() const final; + + size_t ByteSizeLong() const final; + const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; + ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( + ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; + int GetCachedSize() const final { return _cached_size_.Get(); } + + private: + inline void SharedCtor(); + inline void SharedDtor(); + void SetCachedSize(int size) const final; + void InternalSwap(AlterExtensionStmt* other); + friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; + static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { + return "pg_query.AlterExtensionStmt"; + } + protected: + explicit AlterExtensionStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena); + private: + static void ArenaDtor(void* object); + inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); + public: + + ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; + private: + static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { + ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); + return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; + } + + public: + + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + + enum : int { + kOptionsFieldNumber = 2, + kExtnameFieldNumber = 1, + }; + // repeated .pg_query.Node options = 2 [json_name = "options"]; + int options_size() const; + private: + int _internal_options_size() const; + public: + void clear_options(); + ::pg_query::Node* mutable_options(int index); + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* + mutable_options(); + private: + const ::pg_query::Node& _internal_options(int index) const; + ::pg_query::Node* _internal_add_options(); + public: + const ::pg_query::Node& options(int index) const; + ::pg_query::Node* add_options(); + const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& + options() const; + + // string extname = 1 [json_name = "extname"]; + void clear_extname(); + const std::string& extname() const; + void set_extname(const std::string& value); + void set_extname(std::string&& value); + void set_extname(const char* value); + void set_extname(const char* value, size_t size); + std::string* mutable_extname(); + std::string* release_extname(); + void set_allocated_extname(std::string* extname); + private: + const std::string& _internal_extname() const; + void _internal_set_extname(const std::string& value); + std::string* _internal_mutable_extname(); + public: + + // @@protoc_insertion_point(class_scope:pg_query.AlterExtensionStmt) + private: + class _Internal; + + template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; + typedef void InternalArenaConstructable_; + typedef void DestructorSkippable_; + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > options_; + ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr extname_; + mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; + friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; +}; +// ------------------------------------------------------------------- + +class AlterExtensionContentsStmt PROTOBUF_FINAL : + public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.AlterExtensionContentsStmt) */ { + public: + inline AlterExtensionContentsStmt() : AlterExtensionContentsStmt(nullptr) {} + virtual ~AlterExtensionContentsStmt(); + + AlterExtensionContentsStmt(const AlterExtensionContentsStmt& from); + AlterExtensionContentsStmt(AlterExtensionContentsStmt&& from) noexcept + : AlterExtensionContentsStmt() { + *this = ::std::move(from); + } + + inline AlterExtensionContentsStmt& operator=(const AlterExtensionContentsStmt& from) { + CopyFrom(from); + return *this; + } + inline AlterExtensionContentsStmt& operator=(AlterExtensionContentsStmt&& from) noexcept { + if (GetArena() == from.GetArena()) { + if (this != &from) InternalSwap(&from); + } else { + CopyFrom(from); + } + return *this; + } + + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { + return GetDescriptor(); + } + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { + return GetMetadataStatic().descriptor; + } + static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { + return GetMetadataStatic().reflection; + } + static const AlterExtensionContentsStmt& default_instance(); + + static inline const AlterExtensionContentsStmt* internal_default_instance() { + return reinterpret_cast( + &_AlterExtensionContentsStmt_default_instance_); + } + static constexpr int kIndexInFileMessages = + 159; + + friend void swap(AlterExtensionContentsStmt& a, AlterExtensionContentsStmt& b) { + a.Swap(&b); + } + inline void Swap(AlterExtensionContentsStmt* other) { + if (other == this) return; + if (GetArena() == other->GetArena()) { + InternalSwap(other); + } else { + ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); + } + } + void UnsafeArenaSwap(AlterExtensionContentsStmt* other) { + if (other == this) return; + GOOGLE_DCHECK(GetArena() == other->GetArena()); + InternalSwap(other); + } + + // implements Message ---------------------------------------------- + + inline AlterExtensionContentsStmt* New() const final { + return CreateMaybeMessage(nullptr); + } + + AlterExtensionContentsStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { + return CreateMaybeMessage(arena); + } + void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void CopyFrom(const AlterExtensionContentsStmt& from); + void MergeFrom(const AlterExtensionContentsStmt& from); + PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; + bool IsInitialized() const final; + + size_t ByteSizeLong() const final; + const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; + ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( + ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; + int GetCachedSize() const final { return _cached_size_.Get(); } + + private: + inline void SharedCtor(); + inline void SharedDtor(); + void SetCachedSize(int size) const final; + void InternalSwap(AlterExtensionContentsStmt* other); + friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; + static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { + return "pg_query.AlterExtensionContentsStmt"; + } + protected: + explicit AlterExtensionContentsStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena); + private: + static void ArenaDtor(void* object); + inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); + public: + + ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; + private: + static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { + ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); + return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; + } + + public: + + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + + enum : int { + kExtnameFieldNumber = 1, + kObjectFieldNumber = 4, + kActionFieldNumber = 2, + kObjtypeFieldNumber = 3, + }; + // string extname = 1 [json_name = "extname"]; + void clear_extname(); + const std::string& extname() const; + void set_extname(const std::string& value); + void set_extname(std::string&& value); + void set_extname(const char* value); + void set_extname(const char* value, size_t size); + std::string* mutable_extname(); + std::string* release_extname(); + void set_allocated_extname(std::string* extname); + private: + const std::string& _internal_extname() const; + void _internal_set_extname(const std::string& value); + std::string* _internal_mutable_extname(); + public: + + // .pg_query.Node object = 4 [json_name = "object"]; + bool has_object() const; + private: + bool _internal_has_object() const; + public: + void clear_object(); + const ::pg_query::Node& object() const; + ::pg_query::Node* release_object(); + ::pg_query::Node* mutable_object(); + void set_allocated_object(::pg_query::Node* object); + private: + const ::pg_query::Node& _internal_object() const; + ::pg_query::Node* _internal_mutable_object(); + public: + void unsafe_arena_set_allocated_object( + ::pg_query::Node* object); + ::pg_query::Node* unsafe_arena_release_object(); + + // int32 action = 2 [json_name = "action"]; + void clear_action(); + ::PROTOBUF_NAMESPACE_ID::int32 action() const; + void set_action(::PROTOBUF_NAMESPACE_ID::int32 value); + private: + ::PROTOBUF_NAMESPACE_ID::int32 _internal_action() const; + void _internal_set_action(::PROTOBUF_NAMESPACE_ID::int32 value); + public: + + // .pg_query.ObjectType objtype = 3 [json_name = "objtype"]; + void clear_objtype(); + ::pg_query::ObjectType objtype() const; + void set_objtype(::pg_query::ObjectType value); + private: + ::pg_query::ObjectType _internal_objtype() const; + void _internal_set_objtype(::pg_query::ObjectType value); + public: + + // @@protoc_insertion_point(class_scope:pg_query.AlterExtensionContentsStmt) + private: + class _Internal; + + template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; + typedef void InternalArenaConstructable_; + typedef void DestructorSkippable_; + ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr extname_; + ::pg_query::Node* object_; + ::PROTOBUF_NAMESPACE_ID::int32 action_; + int objtype_; + mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; + friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; +}; +// ------------------------------------------------------------------- + +class CreateEventTrigStmt PROTOBUF_FINAL : + public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.CreateEventTrigStmt) */ { + public: + inline CreateEventTrigStmt() : CreateEventTrigStmt(nullptr) {} + virtual ~CreateEventTrigStmt(); + + CreateEventTrigStmt(const CreateEventTrigStmt& from); + CreateEventTrigStmt(CreateEventTrigStmt&& from) noexcept + : CreateEventTrigStmt() { + *this = ::std::move(from); + } + + inline CreateEventTrigStmt& operator=(const CreateEventTrigStmt& from) { + CopyFrom(from); + return *this; + } + inline CreateEventTrigStmt& operator=(CreateEventTrigStmt&& from) noexcept { + if (GetArena() == from.GetArena()) { + if (this != &from) InternalSwap(&from); + } else { + CopyFrom(from); + } + return *this; + } + + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { + return GetDescriptor(); + } + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { + return GetMetadataStatic().descriptor; + } + static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { + return GetMetadataStatic().reflection; + } + static const CreateEventTrigStmt& default_instance(); + + static inline const CreateEventTrigStmt* internal_default_instance() { + return reinterpret_cast( + &_CreateEventTrigStmt_default_instance_); + } + static constexpr int kIndexInFileMessages = + 160; + + friend void swap(CreateEventTrigStmt& a, CreateEventTrigStmt& b) { + a.Swap(&b); + } + inline void Swap(CreateEventTrigStmt* other) { + if (other == this) return; + if (GetArena() == other->GetArena()) { + InternalSwap(other); + } else { + ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); + } + } + void UnsafeArenaSwap(CreateEventTrigStmt* other) { + if (other == this) return; + GOOGLE_DCHECK(GetArena() == other->GetArena()); + InternalSwap(other); + } + + // implements Message ---------------------------------------------- + + inline CreateEventTrigStmt* New() const final { + return CreateMaybeMessage(nullptr); + } + + CreateEventTrigStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { + return CreateMaybeMessage(arena); + } + void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void CopyFrom(const CreateEventTrigStmt& from); + void MergeFrom(const CreateEventTrigStmt& from); + PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; + bool IsInitialized() const final; + + size_t ByteSizeLong() const final; + const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; + ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( + ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; + int GetCachedSize() const final { return _cached_size_.Get(); } + + private: + inline void SharedCtor(); + inline void SharedDtor(); + void SetCachedSize(int size) const final; + void InternalSwap(CreateEventTrigStmt* other); + friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; + static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { + return "pg_query.CreateEventTrigStmt"; + } + protected: + explicit CreateEventTrigStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena); + private: + static void ArenaDtor(void* object); + inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); + public: + + ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; + private: + static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { + ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); + return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; + } + + public: + + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + + enum : int { + kWhenclauseFieldNumber = 3, + kFuncnameFieldNumber = 4, + kTrignameFieldNumber = 1, + kEventnameFieldNumber = 2, + }; + // repeated .pg_query.Node whenclause = 3 [json_name = "whenclause"]; + int whenclause_size() const; + private: + int _internal_whenclause_size() const; + public: + void clear_whenclause(); + ::pg_query::Node* mutable_whenclause(int index); + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* + mutable_whenclause(); + private: + const ::pg_query::Node& _internal_whenclause(int index) const; + ::pg_query::Node* _internal_add_whenclause(); + public: + const ::pg_query::Node& whenclause(int index) const; + ::pg_query::Node* add_whenclause(); + const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& + whenclause() const; + + // repeated .pg_query.Node funcname = 4 [json_name = "funcname"]; + int funcname_size() const; + private: + int _internal_funcname_size() const; + public: + void clear_funcname(); + ::pg_query::Node* mutable_funcname(int index); + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* + mutable_funcname(); + private: + const ::pg_query::Node& _internal_funcname(int index) const; + ::pg_query::Node* _internal_add_funcname(); + public: + const ::pg_query::Node& funcname(int index) const; + ::pg_query::Node* add_funcname(); + const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& + funcname() const; + + // string trigname = 1 [json_name = "trigname"]; + void clear_trigname(); + const std::string& trigname() const; + void set_trigname(const std::string& value); + void set_trigname(std::string&& value); + void set_trigname(const char* value); + void set_trigname(const char* value, size_t size); + std::string* mutable_trigname(); + std::string* release_trigname(); + void set_allocated_trigname(std::string* trigname); + private: + const std::string& _internal_trigname() const; + void _internal_set_trigname(const std::string& value); + std::string* _internal_mutable_trigname(); + public: + + // string eventname = 2 [json_name = "eventname"]; + void clear_eventname(); + const std::string& eventname() const; + void set_eventname(const std::string& value); + void set_eventname(std::string&& value); + void set_eventname(const char* value); + void set_eventname(const char* value, size_t size); + std::string* mutable_eventname(); + std::string* release_eventname(); + void set_allocated_eventname(std::string* eventname); + private: + const std::string& _internal_eventname() const; + void _internal_set_eventname(const std::string& value); + std::string* _internal_mutable_eventname(); + public: + + // @@protoc_insertion_point(class_scope:pg_query.CreateEventTrigStmt) + private: + class _Internal; + + template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; + typedef void InternalArenaConstructable_; + typedef void DestructorSkippable_; + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > whenclause_; + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > funcname_; + ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr trigname_; + ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr eventname_; + mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; + friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; +}; +// ------------------------------------------------------------------- + +class AlterEventTrigStmt PROTOBUF_FINAL : + public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.AlterEventTrigStmt) */ { + public: + inline AlterEventTrigStmt() : AlterEventTrigStmt(nullptr) {} + virtual ~AlterEventTrigStmt(); + + AlterEventTrigStmt(const AlterEventTrigStmt& from); + AlterEventTrigStmt(AlterEventTrigStmt&& from) noexcept + : AlterEventTrigStmt() { + *this = ::std::move(from); + } + + inline AlterEventTrigStmt& operator=(const AlterEventTrigStmt& from) { + CopyFrom(from); + return *this; + } + inline AlterEventTrigStmt& operator=(AlterEventTrigStmt&& from) noexcept { + if (GetArena() == from.GetArena()) { + if (this != &from) InternalSwap(&from); + } else { + CopyFrom(from); + } + return *this; + } + + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { + return GetDescriptor(); + } + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { + return GetMetadataStatic().descriptor; + } + static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { + return GetMetadataStatic().reflection; + } + static const AlterEventTrigStmt& default_instance(); + + static inline const AlterEventTrigStmt* internal_default_instance() { + return reinterpret_cast( + &_AlterEventTrigStmt_default_instance_); + } + static constexpr int kIndexInFileMessages = + 161; + + friend void swap(AlterEventTrigStmt& a, AlterEventTrigStmt& b) { + a.Swap(&b); + } + inline void Swap(AlterEventTrigStmt* other) { + if (other == this) return; + if (GetArena() == other->GetArena()) { + InternalSwap(other); + } else { + ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); + } + } + void UnsafeArenaSwap(AlterEventTrigStmt* other) { + if (other == this) return; + GOOGLE_DCHECK(GetArena() == other->GetArena()); + InternalSwap(other); + } + + // implements Message ---------------------------------------------- + + inline AlterEventTrigStmt* New() const final { + return CreateMaybeMessage(nullptr); + } + + AlterEventTrigStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { + return CreateMaybeMessage(arena); + } + void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void CopyFrom(const AlterEventTrigStmt& from); + void MergeFrom(const AlterEventTrigStmt& from); + PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; + bool IsInitialized() const final; + + size_t ByteSizeLong() const final; + const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; + ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( + ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; + int GetCachedSize() const final { return _cached_size_.Get(); } + + private: + inline void SharedCtor(); + inline void SharedDtor(); + void SetCachedSize(int size) const final; + void InternalSwap(AlterEventTrigStmt* other); + friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; + static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { + return "pg_query.AlterEventTrigStmt"; + } + protected: + explicit AlterEventTrigStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena); + private: + static void ArenaDtor(void* object); + inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); + public: + + ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; + private: + static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { + ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); + return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; + } + + public: + + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + + enum : int { + kTrignameFieldNumber = 1, + kTgenabledFieldNumber = 2, + }; + // string trigname = 1 [json_name = "trigname"]; + void clear_trigname(); + const std::string& trigname() const; + void set_trigname(const std::string& value); + void set_trigname(std::string&& value); + void set_trigname(const char* value); + void set_trigname(const char* value, size_t size); + std::string* mutable_trigname(); + std::string* release_trigname(); + void set_allocated_trigname(std::string* trigname); + private: + const std::string& _internal_trigname() const; + void _internal_set_trigname(const std::string& value); + std::string* _internal_mutable_trigname(); + public: + + // string tgenabled = 2 [json_name = "tgenabled"]; + void clear_tgenabled(); + const std::string& tgenabled() const; + void set_tgenabled(const std::string& value); + void set_tgenabled(std::string&& value); + void set_tgenabled(const char* value); + void set_tgenabled(const char* value, size_t size); + std::string* mutable_tgenabled(); + std::string* release_tgenabled(); + void set_allocated_tgenabled(std::string* tgenabled); + private: + const std::string& _internal_tgenabled() const; + void _internal_set_tgenabled(const std::string& value); + std::string* _internal_mutable_tgenabled(); + public: + + // @@protoc_insertion_point(class_scope:pg_query.AlterEventTrigStmt) + private: + class _Internal; + + template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; + typedef void InternalArenaConstructable_; + typedef void DestructorSkippable_; + ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr trigname_; + ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr tgenabled_; + mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; + friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; +}; +// ------------------------------------------------------------------- + +class RefreshMatViewStmt PROTOBUF_FINAL : + public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.RefreshMatViewStmt) */ { + public: + inline RefreshMatViewStmt() : RefreshMatViewStmt(nullptr) {} + virtual ~RefreshMatViewStmt(); + + RefreshMatViewStmt(const RefreshMatViewStmt& from); + RefreshMatViewStmt(RefreshMatViewStmt&& from) noexcept + : RefreshMatViewStmt() { + *this = ::std::move(from); + } + + inline RefreshMatViewStmt& operator=(const RefreshMatViewStmt& from) { + CopyFrom(from); + return *this; + } + inline RefreshMatViewStmt& operator=(RefreshMatViewStmt&& from) noexcept { + if (GetArena() == from.GetArena()) { + if (this != &from) InternalSwap(&from); + } else { + CopyFrom(from); + } + return *this; + } + + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { + return GetDescriptor(); + } + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { + return GetMetadataStatic().descriptor; + } + static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { + return GetMetadataStatic().reflection; + } + static const RefreshMatViewStmt& default_instance(); + + static inline const RefreshMatViewStmt* internal_default_instance() { + return reinterpret_cast( + &_RefreshMatViewStmt_default_instance_); + } + static constexpr int kIndexInFileMessages = + 162; + + friend void swap(RefreshMatViewStmt& a, RefreshMatViewStmt& b) { + a.Swap(&b); + } + inline void Swap(RefreshMatViewStmt* other) { + if (other == this) return; + if (GetArena() == other->GetArena()) { + InternalSwap(other); + } else { + ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); + } + } + void UnsafeArenaSwap(RefreshMatViewStmt* other) { + if (other == this) return; + GOOGLE_DCHECK(GetArena() == other->GetArena()); + InternalSwap(other); + } + + // implements Message ---------------------------------------------- + + inline RefreshMatViewStmt* New() const final { + return CreateMaybeMessage(nullptr); + } + + RefreshMatViewStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { + return CreateMaybeMessage(arena); + } + void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void CopyFrom(const RefreshMatViewStmt& from); + void MergeFrom(const RefreshMatViewStmt& from); + PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; + bool IsInitialized() const final; + + size_t ByteSizeLong() const final; + const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; + ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( + ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; + int GetCachedSize() const final { return _cached_size_.Get(); } + + private: + inline void SharedCtor(); + inline void SharedDtor(); + void SetCachedSize(int size) const final; + void InternalSwap(RefreshMatViewStmt* other); + friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; + static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { + return "pg_query.RefreshMatViewStmt"; + } + protected: + explicit RefreshMatViewStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena); + private: + static void ArenaDtor(void* object); + inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); + public: + + ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; + private: + static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { + ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); + return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; + } + + public: + + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + + enum : int { + kRelationFieldNumber = 3, + kConcurrentFieldNumber = 1, + kSkipDataFieldNumber = 2, + }; + // .pg_query.RangeVar relation = 3 [json_name = "relation"]; + bool has_relation() const; + private: + bool _internal_has_relation() const; + public: + void clear_relation(); + const ::pg_query::RangeVar& relation() const; + ::pg_query::RangeVar* release_relation(); + ::pg_query::RangeVar* mutable_relation(); + void set_allocated_relation(::pg_query::RangeVar* relation); + private: + const ::pg_query::RangeVar& _internal_relation() const; + ::pg_query::RangeVar* _internal_mutable_relation(); + public: + void unsafe_arena_set_allocated_relation( + ::pg_query::RangeVar* relation); + ::pg_query::RangeVar* unsafe_arena_release_relation(); + + // bool concurrent = 1 [json_name = "concurrent"]; + void clear_concurrent(); + bool concurrent() const; + void set_concurrent(bool value); + private: + bool _internal_concurrent() const; + void _internal_set_concurrent(bool value); + public: + + // bool skip_data = 2 [json_name = "skipData"]; + void clear_skip_data(); + bool skip_data() const; + void set_skip_data(bool value); + private: + bool _internal_skip_data() const; + void _internal_set_skip_data(bool value); + public: + + // @@protoc_insertion_point(class_scope:pg_query.RefreshMatViewStmt) + private: + class _Internal; + + template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; + typedef void InternalArenaConstructable_; + typedef void DestructorSkippable_; + ::pg_query::RangeVar* relation_; + bool concurrent_; + bool skip_data_; + mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; + friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; +}; +// ------------------------------------------------------------------- + +class ReplicaIdentityStmt PROTOBUF_FINAL : + public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.ReplicaIdentityStmt) */ { + public: + inline ReplicaIdentityStmt() : ReplicaIdentityStmt(nullptr) {} + virtual ~ReplicaIdentityStmt(); + + ReplicaIdentityStmt(const ReplicaIdentityStmt& from); + ReplicaIdentityStmt(ReplicaIdentityStmt&& from) noexcept + : ReplicaIdentityStmt() { + *this = ::std::move(from); + } + + inline ReplicaIdentityStmt& operator=(const ReplicaIdentityStmt& from) { + CopyFrom(from); + return *this; + } + inline ReplicaIdentityStmt& operator=(ReplicaIdentityStmt&& from) noexcept { + if (GetArena() == from.GetArena()) { + if (this != &from) InternalSwap(&from); + } else { + CopyFrom(from); + } + return *this; + } + + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { + return GetDescriptor(); + } + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { + return GetMetadataStatic().descriptor; + } + static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { + return GetMetadataStatic().reflection; + } + static const ReplicaIdentityStmt& default_instance(); + + static inline const ReplicaIdentityStmt* internal_default_instance() { + return reinterpret_cast( + &_ReplicaIdentityStmt_default_instance_); + } + static constexpr int kIndexInFileMessages = + 163; + + friend void swap(ReplicaIdentityStmt& a, ReplicaIdentityStmt& b) { + a.Swap(&b); + } + inline void Swap(ReplicaIdentityStmt* other) { + if (other == this) return; + if (GetArena() == other->GetArena()) { + InternalSwap(other); + } else { + ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); + } + } + void UnsafeArenaSwap(ReplicaIdentityStmt* other) { + if (other == this) return; + GOOGLE_DCHECK(GetArena() == other->GetArena()); + InternalSwap(other); + } + + // implements Message ---------------------------------------------- + + inline ReplicaIdentityStmt* New() const final { + return CreateMaybeMessage(nullptr); + } + + ReplicaIdentityStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { + return CreateMaybeMessage(arena); + } + void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void CopyFrom(const ReplicaIdentityStmt& from); + void MergeFrom(const ReplicaIdentityStmt& from); + PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; + bool IsInitialized() const final; + + size_t ByteSizeLong() const final; + const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; + ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( + ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; + int GetCachedSize() const final { return _cached_size_.Get(); } + + private: + inline void SharedCtor(); + inline void SharedDtor(); + void SetCachedSize(int size) const final; + void InternalSwap(ReplicaIdentityStmt* other); + friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; + static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { + return "pg_query.ReplicaIdentityStmt"; + } + protected: + explicit ReplicaIdentityStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena); + private: + static void ArenaDtor(void* object); + inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); + public: + + ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; + private: + static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { + ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); + return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; + } + + public: + + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + + enum : int { + kIdentityTypeFieldNumber = 1, + kNameFieldNumber = 2, + }; + // string identity_type = 1 [json_name = "identity_type"]; + void clear_identity_type(); + const std::string& identity_type() const; + void set_identity_type(const std::string& value); + void set_identity_type(std::string&& value); + void set_identity_type(const char* value); + void set_identity_type(const char* value, size_t size); + std::string* mutable_identity_type(); + std::string* release_identity_type(); + void set_allocated_identity_type(std::string* identity_type); + private: + const std::string& _internal_identity_type() const; + void _internal_set_identity_type(const std::string& value); + std::string* _internal_mutable_identity_type(); + public: + + // string name = 2 [json_name = "name"]; + void clear_name(); + const std::string& name() const; + void set_name(const std::string& value); + void set_name(std::string&& value); + void set_name(const char* value); + void set_name(const char* value, size_t size); + std::string* mutable_name(); + std::string* release_name(); + void set_allocated_name(std::string* name); + private: + const std::string& _internal_name() const; + void _internal_set_name(const std::string& value); + std::string* _internal_mutable_name(); + public: + + // @@protoc_insertion_point(class_scope:pg_query.ReplicaIdentityStmt) + private: + class _Internal; + + template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; + typedef void InternalArenaConstructable_; + typedef void DestructorSkippable_; + ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr identity_type_; + ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr name_; + mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; + friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; +}; +// ------------------------------------------------------------------- + +class AlterSystemStmt PROTOBUF_FINAL : + public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.AlterSystemStmt) */ { + public: + inline AlterSystemStmt() : AlterSystemStmt(nullptr) {} + virtual ~AlterSystemStmt(); + + AlterSystemStmt(const AlterSystemStmt& from); + AlterSystemStmt(AlterSystemStmt&& from) noexcept + : AlterSystemStmt() { + *this = ::std::move(from); + } + + inline AlterSystemStmt& operator=(const AlterSystemStmt& from) { + CopyFrom(from); + return *this; + } + inline AlterSystemStmt& operator=(AlterSystemStmt&& from) noexcept { + if (GetArena() == from.GetArena()) { + if (this != &from) InternalSwap(&from); + } else { + CopyFrom(from); + } + return *this; + } + + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { + return GetDescriptor(); + } + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { + return GetMetadataStatic().descriptor; + } + static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { + return GetMetadataStatic().reflection; + } + static const AlterSystemStmt& default_instance(); + + static inline const AlterSystemStmt* internal_default_instance() { + return reinterpret_cast( + &_AlterSystemStmt_default_instance_); + } + static constexpr int kIndexInFileMessages = + 164; + + friend void swap(AlterSystemStmt& a, AlterSystemStmt& b) { + a.Swap(&b); + } + inline void Swap(AlterSystemStmt* other) { + if (other == this) return; + if (GetArena() == other->GetArena()) { + InternalSwap(other); + } else { + ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); + } + } + void UnsafeArenaSwap(AlterSystemStmt* other) { + if (other == this) return; + GOOGLE_DCHECK(GetArena() == other->GetArena()); + InternalSwap(other); + } + + // implements Message ---------------------------------------------- + + inline AlterSystemStmt* New() const final { + return CreateMaybeMessage(nullptr); + } + + AlterSystemStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { + return CreateMaybeMessage(arena); + } + void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void CopyFrom(const AlterSystemStmt& from); + void MergeFrom(const AlterSystemStmt& from); + PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; + bool IsInitialized() const final; + + size_t ByteSizeLong() const final; + const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; + ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( + ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; + int GetCachedSize() const final { return _cached_size_.Get(); } + + private: + inline void SharedCtor(); + inline void SharedDtor(); + void SetCachedSize(int size) const final; + void InternalSwap(AlterSystemStmt* other); + friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; + static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { + return "pg_query.AlterSystemStmt"; + } + protected: + explicit AlterSystemStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena); + private: + static void ArenaDtor(void* object); + inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); + public: + + ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; + private: + static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { + ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); + return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; + } + + public: + + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + + enum : int { + kSetstmtFieldNumber = 1, + }; + // .pg_query.VariableSetStmt setstmt = 1 [json_name = "setstmt"]; + bool has_setstmt() const; + private: + bool _internal_has_setstmt() const; + public: + void clear_setstmt(); + const ::pg_query::VariableSetStmt& setstmt() const; + ::pg_query::VariableSetStmt* release_setstmt(); + ::pg_query::VariableSetStmt* mutable_setstmt(); + void set_allocated_setstmt(::pg_query::VariableSetStmt* setstmt); + private: + const ::pg_query::VariableSetStmt& _internal_setstmt() const; + ::pg_query::VariableSetStmt* _internal_mutable_setstmt(); + public: + void unsafe_arena_set_allocated_setstmt( + ::pg_query::VariableSetStmt* setstmt); + ::pg_query::VariableSetStmt* unsafe_arena_release_setstmt(); + + // @@protoc_insertion_point(class_scope:pg_query.AlterSystemStmt) + private: + class _Internal; + + template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; + typedef void InternalArenaConstructable_; + typedef void DestructorSkippable_; + ::pg_query::VariableSetStmt* setstmt_; + mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; + friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; +}; +// ------------------------------------------------------------------- + +class CreatePolicyStmt PROTOBUF_FINAL : + public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.CreatePolicyStmt) */ { + public: + inline CreatePolicyStmt() : CreatePolicyStmt(nullptr) {} + virtual ~CreatePolicyStmt(); + + CreatePolicyStmt(const CreatePolicyStmt& from); + CreatePolicyStmt(CreatePolicyStmt&& from) noexcept + : CreatePolicyStmt() { + *this = ::std::move(from); + } + + inline CreatePolicyStmt& operator=(const CreatePolicyStmt& from) { + CopyFrom(from); + return *this; + } + inline CreatePolicyStmt& operator=(CreatePolicyStmt&& from) noexcept { + if (GetArena() == from.GetArena()) { + if (this != &from) InternalSwap(&from); + } else { + CopyFrom(from); + } + return *this; + } + + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { + return GetDescriptor(); + } + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { + return GetMetadataStatic().descriptor; + } + static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { + return GetMetadataStatic().reflection; + } + static const CreatePolicyStmt& default_instance(); + + static inline const CreatePolicyStmt* internal_default_instance() { + return reinterpret_cast( + &_CreatePolicyStmt_default_instance_); + } + static constexpr int kIndexInFileMessages = + 165; + + friend void swap(CreatePolicyStmt& a, CreatePolicyStmt& b) { + a.Swap(&b); + } + inline void Swap(CreatePolicyStmt* other) { + if (other == this) return; + if (GetArena() == other->GetArena()) { + InternalSwap(other); + } else { + ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); + } + } + void UnsafeArenaSwap(CreatePolicyStmt* other) { + if (other == this) return; + GOOGLE_DCHECK(GetArena() == other->GetArena()); + InternalSwap(other); + } + + // implements Message ---------------------------------------------- + + inline CreatePolicyStmt* New() const final { + return CreateMaybeMessage(nullptr); + } + + CreatePolicyStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { + return CreateMaybeMessage(arena); + } + void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void CopyFrom(const CreatePolicyStmt& from); + void MergeFrom(const CreatePolicyStmt& from); + PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; + bool IsInitialized() const final; + + size_t ByteSizeLong() const final; + const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; + ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( + ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; + int GetCachedSize() const final { return _cached_size_.Get(); } + + private: + inline void SharedCtor(); + inline void SharedDtor(); + void SetCachedSize(int size) const final; + void InternalSwap(CreatePolicyStmt* other); + friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; + static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { + return "pg_query.CreatePolicyStmt"; + } + protected: + explicit CreatePolicyStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena); + private: + static void ArenaDtor(void* object); + inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); + public: + + ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; + private: + static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { + ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); + return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; + } + + public: + + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + + enum : int { + kRolesFieldNumber = 5, + kPolicyNameFieldNumber = 1, + kCmdNameFieldNumber = 3, + kTableFieldNumber = 2, + kQualFieldNumber = 6, + kWithCheckFieldNumber = 7, + kPermissiveFieldNumber = 4, + }; + // repeated .pg_query.Node roles = 5 [json_name = "roles"]; + int roles_size() const; + private: + int _internal_roles_size() const; + public: + void clear_roles(); + ::pg_query::Node* mutable_roles(int index); + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* + mutable_roles(); + private: + const ::pg_query::Node& _internal_roles(int index) const; + ::pg_query::Node* _internal_add_roles(); + public: + const ::pg_query::Node& roles(int index) const; + ::pg_query::Node* add_roles(); + const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& + roles() const; + + // string policy_name = 1 [json_name = "policy_name"]; + void clear_policy_name(); + const std::string& policy_name() const; + void set_policy_name(const std::string& value); + void set_policy_name(std::string&& value); + void set_policy_name(const char* value); + void set_policy_name(const char* value, size_t size); + std::string* mutable_policy_name(); + std::string* release_policy_name(); + void set_allocated_policy_name(std::string* policy_name); + private: + const std::string& _internal_policy_name() const; + void _internal_set_policy_name(const std::string& value); + std::string* _internal_mutable_policy_name(); + public: + + // string cmd_name = 3 [json_name = "cmd_name"]; + void clear_cmd_name(); + const std::string& cmd_name() const; + void set_cmd_name(const std::string& value); + void set_cmd_name(std::string&& value); + void set_cmd_name(const char* value); + void set_cmd_name(const char* value, size_t size); + std::string* mutable_cmd_name(); + std::string* release_cmd_name(); + void set_allocated_cmd_name(std::string* cmd_name); + private: + const std::string& _internal_cmd_name() const; + void _internal_set_cmd_name(const std::string& value); + std::string* _internal_mutable_cmd_name(); + public: + + // .pg_query.RangeVar table = 2 [json_name = "table"]; + bool has_table() const; + private: + bool _internal_has_table() const; + public: + void clear_table(); + const ::pg_query::RangeVar& table() const; + ::pg_query::RangeVar* release_table(); + ::pg_query::RangeVar* mutable_table(); + void set_allocated_table(::pg_query::RangeVar* table); + private: + const ::pg_query::RangeVar& _internal_table() const; + ::pg_query::RangeVar* _internal_mutable_table(); + public: + void unsafe_arena_set_allocated_table( + ::pg_query::RangeVar* table); + ::pg_query::RangeVar* unsafe_arena_release_table(); + + // .pg_query.Node qual = 6 [json_name = "qual"]; + bool has_qual() const; + private: + bool _internal_has_qual() const; + public: + void clear_qual(); + const ::pg_query::Node& qual() const; + ::pg_query::Node* release_qual(); + ::pg_query::Node* mutable_qual(); + void set_allocated_qual(::pg_query::Node* qual); + private: + const ::pg_query::Node& _internal_qual() const; + ::pg_query::Node* _internal_mutable_qual(); + public: + void unsafe_arena_set_allocated_qual( + ::pg_query::Node* qual); + ::pg_query::Node* unsafe_arena_release_qual(); + + // .pg_query.Node with_check = 7 [json_name = "with_check"]; + bool has_with_check() const; + private: + bool _internal_has_with_check() const; + public: + void clear_with_check(); + const ::pg_query::Node& with_check() const; + ::pg_query::Node* release_with_check(); + ::pg_query::Node* mutable_with_check(); + void set_allocated_with_check(::pg_query::Node* with_check); + private: + const ::pg_query::Node& _internal_with_check() const; + ::pg_query::Node* _internal_mutable_with_check(); + public: + void unsafe_arena_set_allocated_with_check( + ::pg_query::Node* with_check); + ::pg_query::Node* unsafe_arena_release_with_check(); + + // bool permissive = 4 [json_name = "permissive"]; + void clear_permissive(); + bool permissive() const; + void set_permissive(bool value); + private: + bool _internal_permissive() const; + void _internal_set_permissive(bool value); + public: + + // @@protoc_insertion_point(class_scope:pg_query.CreatePolicyStmt) + private: + class _Internal; + + template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; + typedef void InternalArenaConstructable_; + typedef void DestructorSkippable_; + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > roles_; + ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr policy_name_; + ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr cmd_name_; + ::pg_query::RangeVar* table_; + ::pg_query::Node* qual_; + ::pg_query::Node* with_check_; + bool permissive_; + mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; + friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; +}; +// ------------------------------------------------------------------- + +class AlterPolicyStmt PROTOBUF_FINAL : + public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.AlterPolicyStmt) */ { + public: + inline AlterPolicyStmt() : AlterPolicyStmt(nullptr) {} + virtual ~AlterPolicyStmt(); + + AlterPolicyStmt(const AlterPolicyStmt& from); + AlterPolicyStmt(AlterPolicyStmt&& from) noexcept + : AlterPolicyStmt() { + *this = ::std::move(from); + } + + inline AlterPolicyStmt& operator=(const AlterPolicyStmt& from) { + CopyFrom(from); + return *this; + } + inline AlterPolicyStmt& operator=(AlterPolicyStmt&& from) noexcept { + if (GetArena() == from.GetArena()) { + if (this != &from) InternalSwap(&from); + } else { + CopyFrom(from); + } + return *this; + } + + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { + return GetDescriptor(); + } + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { + return GetMetadataStatic().descriptor; + } + static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { + return GetMetadataStatic().reflection; + } + static const AlterPolicyStmt& default_instance(); + + static inline const AlterPolicyStmt* internal_default_instance() { + return reinterpret_cast( + &_AlterPolicyStmt_default_instance_); + } + static constexpr int kIndexInFileMessages = + 166; + + friend void swap(AlterPolicyStmt& a, AlterPolicyStmt& b) { + a.Swap(&b); + } + inline void Swap(AlterPolicyStmt* other) { + if (other == this) return; + if (GetArena() == other->GetArena()) { + InternalSwap(other); + } else { + ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); + } + } + void UnsafeArenaSwap(AlterPolicyStmt* other) { + if (other == this) return; + GOOGLE_DCHECK(GetArena() == other->GetArena()); + InternalSwap(other); + } + + // implements Message ---------------------------------------------- + + inline AlterPolicyStmt* New() const final { + return CreateMaybeMessage(nullptr); + } + + AlterPolicyStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { + return CreateMaybeMessage(arena); + } + void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void CopyFrom(const AlterPolicyStmt& from); + void MergeFrom(const AlterPolicyStmt& from); + PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; + bool IsInitialized() const final; + + size_t ByteSizeLong() const final; + const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; + ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( + ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; + int GetCachedSize() const final { return _cached_size_.Get(); } + + private: + inline void SharedCtor(); + inline void SharedDtor(); + void SetCachedSize(int size) const final; + void InternalSwap(AlterPolicyStmt* other); + friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; + static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { + return "pg_query.AlterPolicyStmt"; + } + protected: + explicit AlterPolicyStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena); + private: + static void ArenaDtor(void* object); + inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); + public: + + ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; + private: + static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { + ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); + return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; + } + + public: + + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + + enum : int { + kRolesFieldNumber = 3, + kPolicyNameFieldNumber = 1, + kTableFieldNumber = 2, + kQualFieldNumber = 4, + kWithCheckFieldNumber = 5, + }; + // repeated .pg_query.Node roles = 3 [json_name = "roles"]; + int roles_size() const; + private: + int _internal_roles_size() const; + public: + void clear_roles(); + ::pg_query::Node* mutable_roles(int index); + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* + mutable_roles(); + private: + const ::pg_query::Node& _internal_roles(int index) const; + ::pg_query::Node* _internal_add_roles(); + public: + const ::pg_query::Node& roles(int index) const; + ::pg_query::Node* add_roles(); + const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& + roles() const; + + // string policy_name = 1 [json_name = "policy_name"]; + void clear_policy_name(); + const std::string& policy_name() const; + void set_policy_name(const std::string& value); + void set_policy_name(std::string&& value); + void set_policy_name(const char* value); + void set_policy_name(const char* value, size_t size); + std::string* mutable_policy_name(); + std::string* release_policy_name(); + void set_allocated_policy_name(std::string* policy_name); + private: + const std::string& _internal_policy_name() const; + void _internal_set_policy_name(const std::string& value); + std::string* _internal_mutable_policy_name(); + public: + + // .pg_query.RangeVar table = 2 [json_name = "table"]; + bool has_table() const; + private: + bool _internal_has_table() const; + public: + void clear_table(); + const ::pg_query::RangeVar& table() const; + ::pg_query::RangeVar* release_table(); + ::pg_query::RangeVar* mutable_table(); + void set_allocated_table(::pg_query::RangeVar* table); + private: + const ::pg_query::RangeVar& _internal_table() const; + ::pg_query::RangeVar* _internal_mutable_table(); + public: + void unsafe_arena_set_allocated_table( + ::pg_query::RangeVar* table); + ::pg_query::RangeVar* unsafe_arena_release_table(); + + // .pg_query.Node qual = 4 [json_name = "qual"]; + bool has_qual() const; + private: + bool _internal_has_qual() const; + public: + void clear_qual(); + const ::pg_query::Node& qual() const; + ::pg_query::Node* release_qual(); + ::pg_query::Node* mutable_qual(); + void set_allocated_qual(::pg_query::Node* qual); + private: + const ::pg_query::Node& _internal_qual() const; + ::pg_query::Node* _internal_mutable_qual(); + public: + void unsafe_arena_set_allocated_qual( + ::pg_query::Node* qual); + ::pg_query::Node* unsafe_arena_release_qual(); + + // .pg_query.Node with_check = 5 [json_name = "with_check"]; + bool has_with_check() const; + private: + bool _internal_has_with_check() const; + public: + void clear_with_check(); + const ::pg_query::Node& with_check() const; + ::pg_query::Node* release_with_check(); + ::pg_query::Node* mutable_with_check(); + void set_allocated_with_check(::pg_query::Node* with_check); + private: + const ::pg_query::Node& _internal_with_check() const; + ::pg_query::Node* _internal_mutable_with_check(); + public: + void unsafe_arena_set_allocated_with_check( + ::pg_query::Node* with_check); + ::pg_query::Node* unsafe_arena_release_with_check(); + + // @@protoc_insertion_point(class_scope:pg_query.AlterPolicyStmt) + private: + class _Internal; + + template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; + typedef void InternalArenaConstructable_; + typedef void DestructorSkippable_; + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > roles_; + ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr policy_name_; + ::pg_query::RangeVar* table_; + ::pg_query::Node* qual_; + ::pg_query::Node* with_check_; + mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; + friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; +}; +// ------------------------------------------------------------------- + +class CreateTransformStmt PROTOBUF_FINAL : + public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.CreateTransformStmt) */ { + public: + inline CreateTransformStmt() : CreateTransformStmt(nullptr) {} + virtual ~CreateTransformStmt(); + + CreateTransformStmt(const CreateTransformStmt& from); + CreateTransformStmt(CreateTransformStmt&& from) noexcept + : CreateTransformStmt() { + *this = ::std::move(from); + } + + inline CreateTransformStmt& operator=(const CreateTransformStmt& from) { + CopyFrom(from); + return *this; + } + inline CreateTransformStmt& operator=(CreateTransformStmt&& from) noexcept { + if (GetArena() == from.GetArena()) { + if (this != &from) InternalSwap(&from); + } else { + CopyFrom(from); + } + return *this; + } + + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { + return GetDescriptor(); + } + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { + return GetMetadataStatic().descriptor; + } + static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { + return GetMetadataStatic().reflection; + } + static const CreateTransformStmt& default_instance(); + + static inline const CreateTransformStmt* internal_default_instance() { + return reinterpret_cast( + &_CreateTransformStmt_default_instance_); + } + static constexpr int kIndexInFileMessages = + 167; + + friend void swap(CreateTransformStmt& a, CreateTransformStmt& b) { + a.Swap(&b); + } + inline void Swap(CreateTransformStmt* other) { + if (other == this) return; + if (GetArena() == other->GetArena()) { + InternalSwap(other); + } else { + ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); + } + } + void UnsafeArenaSwap(CreateTransformStmt* other) { + if (other == this) return; + GOOGLE_DCHECK(GetArena() == other->GetArena()); + InternalSwap(other); + } + + // implements Message ---------------------------------------------- + + inline CreateTransformStmt* New() const final { + return CreateMaybeMessage(nullptr); + } + + CreateTransformStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { + return CreateMaybeMessage(arena); + } + void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void CopyFrom(const CreateTransformStmt& from); + void MergeFrom(const CreateTransformStmt& from); + PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; + bool IsInitialized() const final; + + size_t ByteSizeLong() const final; + const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; + ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( + ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; + int GetCachedSize() const final { return _cached_size_.Get(); } + + private: + inline void SharedCtor(); + inline void SharedDtor(); + void SetCachedSize(int size) const final; + void InternalSwap(CreateTransformStmt* other); + friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; + static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { + return "pg_query.CreateTransformStmt"; + } + protected: + explicit CreateTransformStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena); + private: + static void ArenaDtor(void* object); + inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); + public: + + ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; + private: + static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { + ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); + return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; + } + + public: + + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + + enum : int { + kLangFieldNumber = 3, + kTypeNameFieldNumber = 2, + kFromsqlFieldNumber = 4, + kTosqlFieldNumber = 5, + kReplaceFieldNumber = 1, + }; + // string lang = 3 [json_name = "lang"]; + void clear_lang(); + const std::string& lang() const; + void set_lang(const std::string& value); + void set_lang(std::string&& value); + void set_lang(const char* value); + void set_lang(const char* value, size_t size); + std::string* mutable_lang(); + std::string* release_lang(); + void set_allocated_lang(std::string* lang); + private: + const std::string& _internal_lang() const; + void _internal_set_lang(const std::string& value); + std::string* _internal_mutable_lang(); + public: + + // .pg_query.TypeName type_name = 2 [json_name = "type_name"]; + bool has_type_name() const; + private: + bool _internal_has_type_name() const; + public: + void clear_type_name(); + const ::pg_query::TypeName& type_name() const; + ::pg_query::TypeName* release_type_name(); + ::pg_query::TypeName* mutable_type_name(); + void set_allocated_type_name(::pg_query::TypeName* type_name); + private: + const ::pg_query::TypeName& _internal_type_name() const; + ::pg_query::TypeName* _internal_mutable_type_name(); + public: + void unsafe_arena_set_allocated_type_name( + ::pg_query::TypeName* type_name); + ::pg_query::TypeName* unsafe_arena_release_type_name(); + + // .pg_query.ObjectWithArgs fromsql = 4 [json_name = "fromsql"]; + bool has_fromsql() const; + private: + bool _internal_has_fromsql() const; + public: + void clear_fromsql(); + const ::pg_query::ObjectWithArgs& fromsql() const; + ::pg_query::ObjectWithArgs* release_fromsql(); + ::pg_query::ObjectWithArgs* mutable_fromsql(); + void set_allocated_fromsql(::pg_query::ObjectWithArgs* fromsql); + private: + const ::pg_query::ObjectWithArgs& _internal_fromsql() const; + ::pg_query::ObjectWithArgs* _internal_mutable_fromsql(); + public: + void unsafe_arena_set_allocated_fromsql( + ::pg_query::ObjectWithArgs* fromsql); + ::pg_query::ObjectWithArgs* unsafe_arena_release_fromsql(); + + // .pg_query.ObjectWithArgs tosql = 5 [json_name = "tosql"]; + bool has_tosql() const; + private: + bool _internal_has_tosql() const; + public: + void clear_tosql(); + const ::pg_query::ObjectWithArgs& tosql() const; + ::pg_query::ObjectWithArgs* release_tosql(); + ::pg_query::ObjectWithArgs* mutable_tosql(); + void set_allocated_tosql(::pg_query::ObjectWithArgs* tosql); + private: + const ::pg_query::ObjectWithArgs& _internal_tosql() const; + ::pg_query::ObjectWithArgs* _internal_mutable_tosql(); + public: + void unsafe_arena_set_allocated_tosql( + ::pg_query::ObjectWithArgs* tosql); + ::pg_query::ObjectWithArgs* unsafe_arena_release_tosql(); + + // bool replace = 1 [json_name = "replace"]; + void clear_replace(); + bool replace() const; + void set_replace(bool value); + private: + bool _internal_replace() const; + void _internal_set_replace(bool value); + public: + + // @@protoc_insertion_point(class_scope:pg_query.CreateTransformStmt) + private: + class _Internal; + + template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; + typedef void InternalArenaConstructable_; + typedef void DestructorSkippable_; + ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr lang_; + ::pg_query::TypeName* type_name_; + ::pg_query::ObjectWithArgs* fromsql_; + ::pg_query::ObjectWithArgs* tosql_; + bool replace_; + mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; + friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; +}; +// ------------------------------------------------------------------- + +class CreateAmStmt PROTOBUF_FINAL : + public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.CreateAmStmt) */ { + public: + inline CreateAmStmt() : CreateAmStmt(nullptr) {} + virtual ~CreateAmStmt(); + + CreateAmStmt(const CreateAmStmt& from); + CreateAmStmt(CreateAmStmt&& from) noexcept + : CreateAmStmt() { + *this = ::std::move(from); + } + + inline CreateAmStmt& operator=(const CreateAmStmt& from) { + CopyFrom(from); + return *this; + } + inline CreateAmStmt& operator=(CreateAmStmt&& from) noexcept { + if (GetArena() == from.GetArena()) { + if (this != &from) InternalSwap(&from); + } else { + CopyFrom(from); + } + return *this; + } + + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { + return GetDescriptor(); + } + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { + return GetMetadataStatic().descriptor; + } + static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { + return GetMetadataStatic().reflection; + } + static const CreateAmStmt& default_instance(); + + static inline const CreateAmStmt* internal_default_instance() { + return reinterpret_cast( + &_CreateAmStmt_default_instance_); + } + static constexpr int kIndexInFileMessages = + 168; + + friend void swap(CreateAmStmt& a, CreateAmStmt& b) { + a.Swap(&b); + } + inline void Swap(CreateAmStmt* other) { + if (other == this) return; + if (GetArena() == other->GetArena()) { + InternalSwap(other); + } else { + ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); + } + } + void UnsafeArenaSwap(CreateAmStmt* other) { + if (other == this) return; + GOOGLE_DCHECK(GetArena() == other->GetArena()); + InternalSwap(other); + } + + // implements Message ---------------------------------------------- + + inline CreateAmStmt* New() const final { + return CreateMaybeMessage(nullptr); + } + + CreateAmStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { + return CreateMaybeMessage(arena); + } + void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void CopyFrom(const CreateAmStmt& from); + void MergeFrom(const CreateAmStmt& from); + PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; + bool IsInitialized() const final; + + size_t ByteSizeLong() const final; + const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; + ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( + ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; + int GetCachedSize() const final { return _cached_size_.Get(); } + + private: + inline void SharedCtor(); + inline void SharedDtor(); + void SetCachedSize(int size) const final; + void InternalSwap(CreateAmStmt* other); + friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; + static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { + return "pg_query.CreateAmStmt"; + } + protected: + explicit CreateAmStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena); + private: + static void ArenaDtor(void* object); + inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); + public: + + ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; + private: + static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { + ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); + return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; + } + + public: + + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + + enum : int { + kHandlerNameFieldNumber = 2, + kAmnameFieldNumber = 1, + kAmtypeFieldNumber = 3, + }; + // repeated .pg_query.Node handler_name = 2 [json_name = "handler_name"]; + int handler_name_size() const; + private: + int _internal_handler_name_size() const; + public: + void clear_handler_name(); + ::pg_query::Node* mutable_handler_name(int index); + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* + mutable_handler_name(); + private: + const ::pg_query::Node& _internal_handler_name(int index) const; + ::pg_query::Node* _internal_add_handler_name(); + public: + const ::pg_query::Node& handler_name(int index) const; + ::pg_query::Node* add_handler_name(); + const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& + handler_name() const; + + // string amname = 1 [json_name = "amname"]; + void clear_amname(); + const std::string& amname() const; + void set_amname(const std::string& value); + void set_amname(std::string&& value); + void set_amname(const char* value); + void set_amname(const char* value, size_t size); + std::string* mutable_amname(); + std::string* release_amname(); + void set_allocated_amname(std::string* amname); + private: + const std::string& _internal_amname() const; + void _internal_set_amname(const std::string& value); + std::string* _internal_mutable_amname(); + public: + + // string amtype = 3 [json_name = "amtype"]; + void clear_amtype(); + const std::string& amtype() const; + void set_amtype(const std::string& value); + void set_amtype(std::string&& value); + void set_amtype(const char* value); + void set_amtype(const char* value, size_t size); + std::string* mutable_amtype(); + std::string* release_amtype(); + void set_allocated_amtype(std::string* amtype); + private: + const std::string& _internal_amtype() const; + void _internal_set_amtype(const std::string& value); + std::string* _internal_mutable_amtype(); + public: + + // @@protoc_insertion_point(class_scope:pg_query.CreateAmStmt) + private: + class _Internal; + + template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; + typedef void InternalArenaConstructable_; + typedef void DestructorSkippable_; + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > handler_name_; + ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr amname_; + ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr amtype_; + mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; + friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; +}; +// ------------------------------------------------------------------- + +class CreatePublicationStmt PROTOBUF_FINAL : + public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.CreatePublicationStmt) */ { + public: + inline CreatePublicationStmt() : CreatePublicationStmt(nullptr) {} + virtual ~CreatePublicationStmt(); + + CreatePublicationStmt(const CreatePublicationStmt& from); + CreatePublicationStmt(CreatePublicationStmt&& from) noexcept + : CreatePublicationStmt() { + *this = ::std::move(from); + } + + inline CreatePublicationStmt& operator=(const CreatePublicationStmt& from) { + CopyFrom(from); + return *this; + } + inline CreatePublicationStmt& operator=(CreatePublicationStmt&& from) noexcept { + if (GetArena() == from.GetArena()) { + if (this != &from) InternalSwap(&from); + } else { + CopyFrom(from); + } + return *this; + } + + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { + return GetDescriptor(); + } + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { + return GetMetadataStatic().descriptor; + } + static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { + return GetMetadataStatic().reflection; + } + static const CreatePublicationStmt& default_instance(); + + static inline const CreatePublicationStmt* internal_default_instance() { + return reinterpret_cast( + &_CreatePublicationStmt_default_instance_); + } + static constexpr int kIndexInFileMessages = + 169; + + friend void swap(CreatePublicationStmt& a, CreatePublicationStmt& b) { + a.Swap(&b); + } + inline void Swap(CreatePublicationStmt* other) { + if (other == this) return; + if (GetArena() == other->GetArena()) { + InternalSwap(other); + } else { + ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); + } + } + void UnsafeArenaSwap(CreatePublicationStmt* other) { + if (other == this) return; + GOOGLE_DCHECK(GetArena() == other->GetArena()); + InternalSwap(other); + } + + // implements Message ---------------------------------------------- + + inline CreatePublicationStmt* New() const final { + return CreateMaybeMessage(nullptr); + } + + CreatePublicationStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { + return CreateMaybeMessage(arena); + } + void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void CopyFrom(const CreatePublicationStmt& from); + void MergeFrom(const CreatePublicationStmt& from); + PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; + bool IsInitialized() const final; + + size_t ByteSizeLong() const final; + const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; + ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( + ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; + int GetCachedSize() const final { return _cached_size_.Get(); } + + private: + inline void SharedCtor(); + inline void SharedDtor(); + void SetCachedSize(int size) const final; + void InternalSwap(CreatePublicationStmt* other); + friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; + static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { + return "pg_query.CreatePublicationStmt"; + } + protected: + explicit CreatePublicationStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena); + private: + static void ArenaDtor(void* object); + inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); + public: + + ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; + private: + static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { + ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); + return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; + } + + public: + + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + + enum : int { + kOptionsFieldNumber = 2, + kTablesFieldNumber = 3, + kPubnameFieldNumber = 1, + kForAllTablesFieldNumber = 4, + }; + // repeated .pg_query.Node options = 2 [json_name = "options"]; + int options_size() const; + private: + int _internal_options_size() const; + public: + void clear_options(); + ::pg_query::Node* mutable_options(int index); + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* + mutable_options(); + private: + const ::pg_query::Node& _internal_options(int index) const; + ::pg_query::Node* _internal_add_options(); + public: + const ::pg_query::Node& options(int index) const; + ::pg_query::Node* add_options(); + const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& + options() const; + + // repeated .pg_query.Node tables = 3 [json_name = "tables"]; + int tables_size() const; + private: + int _internal_tables_size() const; + public: + void clear_tables(); + ::pg_query::Node* mutable_tables(int index); + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* + mutable_tables(); + private: + const ::pg_query::Node& _internal_tables(int index) const; + ::pg_query::Node* _internal_add_tables(); + public: + const ::pg_query::Node& tables(int index) const; + ::pg_query::Node* add_tables(); + const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& + tables() const; + + // string pubname = 1 [json_name = "pubname"]; + void clear_pubname(); + const std::string& pubname() const; + void set_pubname(const std::string& value); + void set_pubname(std::string&& value); + void set_pubname(const char* value); + void set_pubname(const char* value, size_t size); + std::string* mutable_pubname(); + std::string* release_pubname(); + void set_allocated_pubname(std::string* pubname); + private: + const std::string& _internal_pubname() const; + void _internal_set_pubname(const std::string& value); + std::string* _internal_mutable_pubname(); + public: + + // bool for_all_tables = 4 [json_name = "for_all_tables"]; + void clear_for_all_tables(); + bool for_all_tables() const; + void set_for_all_tables(bool value); + private: + bool _internal_for_all_tables() const; + void _internal_set_for_all_tables(bool value); + public: + + // @@protoc_insertion_point(class_scope:pg_query.CreatePublicationStmt) + private: + class _Internal; + + template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; + typedef void InternalArenaConstructable_; + typedef void DestructorSkippable_; + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > options_; + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > tables_; + ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr pubname_; + bool for_all_tables_; + mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; + friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; +}; +// ------------------------------------------------------------------- + +class AlterPublicationStmt PROTOBUF_FINAL : + public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.AlterPublicationStmt) */ { + public: + inline AlterPublicationStmt() : AlterPublicationStmt(nullptr) {} + virtual ~AlterPublicationStmt(); + + AlterPublicationStmt(const AlterPublicationStmt& from); + AlterPublicationStmt(AlterPublicationStmt&& from) noexcept + : AlterPublicationStmt() { + *this = ::std::move(from); + } + + inline AlterPublicationStmt& operator=(const AlterPublicationStmt& from) { + CopyFrom(from); + return *this; + } + inline AlterPublicationStmt& operator=(AlterPublicationStmt&& from) noexcept { + if (GetArena() == from.GetArena()) { + if (this != &from) InternalSwap(&from); + } else { + CopyFrom(from); + } + return *this; + } + + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { + return GetDescriptor(); + } + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { + return GetMetadataStatic().descriptor; + } + static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { + return GetMetadataStatic().reflection; + } + static const AlterPublicationStmt& default_instance(); + + static inline const AlterPublicationStmt* internal_default_instance() { + return reinterpret_cast( + &_AlterPublicationStmt_default_instance_); + } + static constexpr int kIndexInFileMessages = + 170; + + friend void swap(AlterPublicationStmt& a, AlterPublicationStmt& b) { + a.Swap(&b); + } + inline void Swap(AlterPublicationStmt* other) { + if (other == this) return; + if (GetArena() == other->GetArena()) { + InternalSwap(other); + } else { + ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); + } + } + void UnsafeArenaSwap(AlterPublicationStmt* other) { + if (other == this) return; + GOOGLE_DCHECK(GetArena() == other->GetArena()); + InternalSwap(other); + } + + // implements Message ---------------------------------------------- + + inline AlterPublicationStmt* New() const final { + return CreateMaybeMessage(nullptr); + } + + AlterPublicationStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { + return CreateMaybeMessage(arena); + } + void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void CopyFrom(const AlterPublicationStmt& from); + void MergeFrom(const AlterPublicationStmt& from); + PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; + bool IsInitialized() const final; + + size_t ByteSizeLong() const final; + const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; + ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( + ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; + int GetCachedSize() const final { return _cached_size_.Get(); } + + private: + inline void SharedCtor(); + inline void SharedDtor(); + void SetCachedSize(int size) const final; + void InternalSwap(AlterPublicationStmt* other); + friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; + static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { + return "pg_query.AlterPublicationStmt"; + } + protected: + explicit AlterPublicationStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena); + private: + static void ArenaDtor(void* object); + inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); + public: + + ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; + private: + static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { + ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); + return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; + } + + public: + + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + + enum : int { + kOptionsFieldNumber = 2, + kTablesFieldNumber = 3, + kPubnameFieldNumber = 1, + kForAllTablesFieldNumber = 4, + kTableActionFieldNumber = 5, + }; + // repeated .pg_query.Node options = 2 [json_name = "options"]; + int options_size() const; + private: + int _internal_options_size() const; + public: + void clear_options(); + ::pg_query::Node* mutable_options(int index); + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* + mutable_options(); + private: + const ::pg_query::Node& _internal_options(int index) const; + ::pg_query::Node* _internal_add_options(); + public: + const ::pg_query::Node& options(int index) const; + ::pg_query::Node* add_options(); + const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& + options() const; + + // repeated .pg_query.Node tables = 3 [json_name = "tables"]; + int tables_size() const; + private: + int _internal_tables_size() const; + public: + void clear_tables(); + ::pg_query::Node* mutable_tables(int index); + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* + mutable_tables(); + private: + const ::pg_query::Node& _internal_tables(int index) const; + ::pg_query::Node* _internal_add_tables(); + public: + const ::pg_query::Node& tables(int index) const; + ::pg_query::Node* add_tables(); + const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& + tables() const; + + // string pubname = 1 [json_name = "pubname"]; + void clear_pubname(); + const std::string& pubname() const; + void set_pubname(const std::string& value); + void set_pubname(std::string&& value); + void set_pubname(const char* value); + void set_pubname(const char* value, size_t size); + std::string* mutable_pubname(); + std::string* release_pubname(); + void set_allocated_pubname(std::string* pubname); + private: + const std::string& _internal_pubname() const; + void _internal_set_pubname(const std::string& value); + std::string* _internal_mutable_pubname(); + public: + + // bool for_all_tables = 4 [json_name = "for_all_tables"]; + void clear_for_all_tables(); + bool for_all_tables() const; + void set_for_all_tables(bool value); + private: + bool _internal_for_all_tables() const; + void _internal_set_for_all_tables(bool value); + public: + + // .pg_query.DefElemAction table_action = 5 [json_name = "tableAction"]; + void clear_table_action(); + ::pg_query::DefElemAction table_action() const; + void set_table_action(::pg_query::DefElemAction value); + private: + ::pg_query::DefElemAction _internal_table_action() const; + void _internal_set_table_action(::pg_query::DefElemAction value); + public: + + // @@protoc_insertion_point(class_scope:pg_query.AlterPublicationStmt) + private: + class _Internal; + + template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; + typedef void InternalArenaConstructable_; + typedef void DestructorSkippable_; + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > options_; + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > tables_; + ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr pubname_; + bool for_all_tables_; + int table_action_; + mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; + friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; +}; +// ------------------------------------------------------------------- + +class CreateSubscriptionStmt PROTOBUF_FINAL : + public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.CreateSubscriptionStmt) */ { + public: + inline CreateSubscriptionStmt() : CreateSubscriptionStmt(nullptr) {} + virtual ~CreateSubscriptionStmt(); + + CreateSubscriptionStmt(const CreateSubscriptionStmt& from); + CreateSubscriptionStmt(CreateSubscriptionStmt&& from) noexcept + : CreateSubscriptionStmt() { + *this = ::std::move(from); + } + + inline CreateSubscriptionStmt& operator=(const CreateSubscriptionStmt& from) { + CopyFrom(from); + return *this; + } + inline CreateSubscriptionStmt& operator=(CreateSubscriptionStmt&& from) noexcept { + if (GetArena() == from.GetArena()) { + if (this != &from) InternalSwap(&from); + } else { + CopyFrom(from); + } + return *this; + } + + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { + return GetDescriptor(); + } + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { + return GetMetadataStatic().descriptor; + } + static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { + return GetMetadataStatic().reflection; + } + static const CreateSubscriptionStmt& default_instance(); + + static inline const CreateSubscriptionStmt* internal_default_instance() { + return reinterpret_cast( + &_CreateSubscriptionStmt_default_instance_); + } + static constexpr int kIndexInFileMessages = + 171; + + friend void swap(CreateSubscriptionStmt& a, CreateSubscriptionStmt& b) { + a.Swap(&b); + } + inline void Swap(CreateSubscriptionStmt* other) { + if (other == this) return; + if (GetArena() == other->GetArena()) { + InternalSwap(other); + } else { + ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); + } + } + void UnsafeArenaSwap(CreateSubscriptionStmt* other) { + if (other == this) return; + GOOGLE_DCHECK(GetArena() == other->GetArena()); + InternalSwap(other); + } + + // implements Message ---------------------------------------------- + + inline CreateSubscriptionStmt* New() const final { + return CreateMaybeMessage(nullptr); + } + + CreateSubscriptionStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { + return CreateMaybeMessage(arena); + } + void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void CopyFrom(const CreateSubscriptionStmt& from); + void MergeFrom(const CreateSubscriptionStmt& from); + PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; + bool IsInitialized() const final; + + size_t ByteSizeLong() const final; + const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; + ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( + ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; + int GetCachedSize() const final { return _cached_size_.Get(); } + + private: + inline void SharedCtor(); + inline void SharedDtor(); + void SetCachedSize(int size) const final; + void InternalSwap(CreateSubscriptionStmt* other); + friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; + static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { + return "pg_query.CreateSubscriptionStmt"; + } + protected: + explicit CreateSubscriptionStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena); + private: + static void ArenaDtor(void* object); + inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); + public: + + ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; + private: + static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { + ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); + return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; + } + + public: + + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + + enum : int { + kPublicationFieldNumber = 3, + kOptionsFieldNumber = 4, + kSubnameFieldNumber = 1, + kConninfoFieldNumber = 2, + }; + // repeated .pg_query.Node publication = 3 [json_name = "publication"]; + int publication_size() const; + private: + int _internal_publication_size() const; + public: + void clear_publication(); + ::pg_query::Node* mutable_publication(int index); + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* + mutable_publication(); + private: + const ::pg_query::Node& _internal_publication(int index) const; + ::pg_query::Node* _internal_add_publication(); + public: + const ::pg_query::Node& publication(int index) const; + ::pg_query::Node* add_publication(); + const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& + publication() const; + + // repeated .pg_query.Node options = 4 [json_name = "options"]; + int options_size() const; + private: + int _internal_options_size() const; + public: + void clear_options(); + ::pg_query::Node* mutable_options(int index); + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* + mutable_options(); + private: + const ::pg_query::Node& _internal_options(int index) const; + ::pg_query::Node* _internal_add_options(); + public: + const ::pg_query::Node& options(int index) const; + ::pg_query::Node* add_options(); + const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& + options() const; + + // string subname = 1 [json_name = "subname"]; + void clear_subname(); + const std::string& subname() const; + void set_subname(const std::string& value); + void set_subname(std::string&& value); + void set_subname(const char* value); + void set_subname(const char* value, size_t size); + std::string* mutable_subname(); + std::string* release_subname(); + void set_allocated_subname(std::string* subname); + private: + const std::string& _internal_subname() const; + void _internal_set_subname(const std::string& value); + std::string* _internal_mutable_subname(); + public: + + // string conninfo = 2 [json_name = "conninfo"]; + void clear_conninfo(); + const std::string& conninfo() const; + void set_conninfo(const std::string& value); + void set_conninfo(std::string&& value); + void set_conninfo(const char* value); + void set_conninfo(const char* value, size_t size); + std::string* mutable_conninfo(); + std::string* release_conninfo(); + void set_allocated_conninfo(std::string* conninfo); + private: + const std::string& _internal_conninfo() const; + void _internal_set_conninfo(const std::string& value); + std::string* _internal_mutable_conninfo(); + public: + + // @@protoc_insertion_point(class_scope:pg_query.CreateSubscriptionStmt) + private: + class _Internal; + + template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; + typedef void InternalArenaConstructable_; + typedef void DestructorSkippable_; + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > publication_; + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > options_; + ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr subname_; + ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr conninfo_; + mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; + friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; +}; +// ------------------------------------------------------------------- + +class AlterSubscriptionStmt PROTOBUF_FINAL : + public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.AlterSubscriptionStmt) */ { + public: + inline AlterSubscriptionStmt() : AlterSubscriptionStmt(nullptr) {} + virtual ~AlterSubscriptionStmt(); + + AlterSubscriptionStmt(const AlterSubscriptionStmt& from); + AlterSubscriptionStmt(AlterSubscriptionStmt&& from) noexcept + : AlterSubscriptionStmt() { + *this = ::std::move(from); + } + + inline AlterSubscriptionStmt& operator=(const AlterSubscriptionStmt& from) { + CopyFrom(from); + return *this; + } + inline AlterSubscriptionStmt& operator=(AlterSubscriptionStmt&& from) noexcept { + if (GetArena() == from.GetArena()) { + if (this != &from) InternalSwap(&from); + } else { + CopyFrom(from); + } + return *this; + } + + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { + return GetDescriptor(); + } + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { + return GetMetadataStatic().descriptor; + } + static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { + return GetMetadataStatic().reflection; + } + static const AlterSubscriptionStmt& default_instance(); + + static inline const AlterSubscriptionStmt* internal_default_instance() { + return reinterpret_cast( + &_AlterSubscriptionStmt_default_instance_); + } + static constexpr int kIndexInFileMessages = + 172; + + friend void swap(AlterSubscriptionStmt& a, AlterSubscriptionStmt& b) { + a.Swap(&b); + } + inline void Swap(AlterSubscriptionStmt* other) { + if (other == this) return; + if (GetArena() == other->GetArena()) { + InternalSwap(other); + } else { + ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); + } + } + void UnsafeArenaSwap(AlterSubscriptionStmt* other) { + if (other == this) return; + GOOGLE_DCHECK(GetArena() == other->GetArena()); + InternalSwap(other); + } + + // implements Message ---------------------------------------------- + + inline AlterSubscriptionStmt* New() const final { + return CreateMaybeMessage(nullptr); + } + + AlterSubscriptionStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { + return CreateMaybeMessage(arena); + } + void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void CopyFrom(const AlterSubscriptionStmt& from); + void MergeFrom(const AlterSubscriptionStmt& from); + PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; + bool IsInitialized() const final; + + size_t ByteSizeLong() const final; + const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; + ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( + ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; + int GetCachedSize() const final { return _cached_size_.Get(); } + + private: + inline void SharedCtor(); + inline void SharedDtor(); + void SetCachedSize(int size) const final; + void InternalSwap(AlterSubscriptionStmt* other); + friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; + static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { + return "pg_query.AlterSubscriptionStmt"; + } + protected: + explicit AlterSubscriptionStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena); + private: + static void ArenaDtor(void* object); + inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); + public: + + ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; + private: + static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { + ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); + return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; + } + + public: + + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + + enum : int { + kPublicationFieldNumber = 4, + kOptionsFieldNumber = 5, + kSubnameFieldNumber = 2, + kConninfoFieldNumber = 3, + kKindFieldNumber = 1, + }; + // repeated .pg_query.Node publication = 4 [json_name = "publication"]; + int publication_size() const; + private: + int _internal_publication_size() const; + public: + void clear_publication(); + ::pg_query::Node* mutable_publication(int index); + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* + mutable_publication(); + private: + const ::pg_query::Node& _internal_publication(int index) const; + ::pg_query::Node* _internal_add_publication(); + public: + const ::pg_query::Node& publication(int index) const; + ::pg_query::Node* add_publication(); + const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& + publication() const; + + // repeated .pg_query.Node options = 5 [json_name = "options"]; + int options_size() const; + private: + int _internal_options_size() const; + public: + void clear_options(); + ::pg_query::Node* mutable_options(int index); + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* + mutable_options(); + private: + const ::pg_query::Node& _internal_options(int index) const; + ::pg_query::Node* _internal_add_options(); + public: + const ::pg_query::Node& options(int index) const; + ::pg_query::Node* add_options(); + const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& + options() const; + + // string subname = 2 [json_name = "subname"]; + void clear_subname(); + const std::string& subname() const; + void set_subname(const std::string& value); + void set_subname(std::string&& value); + void set_subname(const char* value); + void set_subname(const char* value, size_t size); + std::string* mutable_subname(); + std::string* release_subname(); + void set_allocated_subname(std::string* subname); + private: + const std::string& _internal_subname() const; + void _internal_set_subname(const std::string& value); + std::string* _internal_mutable_subname(); + public: + + // string conninfo = 3 [json_name = "conninfo"]; + void clear_conninfo(); + const std::string& conninfo() const; + void set_conninfo(const std::string& value); + void set_conninfo(std::string&& value); + void set_conninfo(const char* value); + void set_conninfo(const char* value, size_t size); + std::string* mutable_conninfo(); + std::string* release_conninfo(); + void set_allocated_conninfo(std::string* conninfo); + private: + const std::string& _internal_conninfo() const; + void _internal_set_conninfo(const std::string& value); + std::string* _internal_mutable_conninfo(); + public: + + // .pg_query.AlterSubscriptionType kind = 1 [json_name = "kind"]; + void clear_kind(); + ::pg_query::AlterSubscriptionType kind() const; + void set_kind(::pg_query::AlterSubscriptionType value); + private: + ::pg_query::AlterSubscriptionType _internal_kind() const; + void _internal_set_kind(::pg_query::AlterSubscriptionType value); + public: + + // @@protoc_insertion_point(class_scope:pg_query.AlterSubscriptionStmt) + private: + class _Internal; + + template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; + typedef void InternalArenaConstructable_; + typedef void DestructorSkippable_; + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > publication_; + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > options_; + ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr subname_; + ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr conninfo_; + int kind_; + mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; + friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; +}; +// ------------------------------------------------------------------- + +class DropSubscriptionStmt PROTOBUF_FINAL : + public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.DropSubscriptionStmt) */ { + public: + inline DropSubscriptionStmt() : DropSubscriptionStmt(nullptr) {} + virtual ~DropSubscriptionStmt(); + + DropSubscriptionStmt(const DropSubscriptionStmt& from); + DropSubscriptionStmt(DropSubscriptionStmt&& from) noexcept + : DropSubscriptionStmt() { + *this = ::std::move(from); + } + + inline DropSubscriptionStmt& operator=(const DropSubscriptionStmt& from) { + CopyFrom(from); + return *this; + } + inline DropSubscriptionStmt& operator=(DropSubscriptionStmt&& from) noexcept { + if (GetArena() == from.GetArena()) { + if (this != &from) InternalSwap(&from); + } else { + CopyFrom(from); + } + return *this; + } + + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { + return GetDescriptor(); + } + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { + return GetMetadataStatic().descriptor; + } + static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { + return GetMetadataStatic().reflection; + } + static const DropSubscriptionStmt& default_instance(); + + static inline const DropSubscriptionStmt* internal_default_instance() { + return reinterpret_cast( + &_DropSubscriptionStmt_default_instance_); + } + static constexpr int kIndexInFileMessages = + 173; + + friend void swap(DropSubscriptionStmt& a, DropSubscriptionStmt& b) { + a.Swap(&b); + } + inline void Swap(DropSubscriptionStmt* other) { + if (other == this) return; + if (GetArena() == other->GetArena()) { + InternalSwap(other); + } else { + ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); + } + } + void UnsafeArenaSwap(DropSubscriptionStmt* other) { + if (other == this) return; + GOOGLE_DCHECK(GetArena() == other->GetArena()); + InternalSwap(other); + } + + // implements Message ---------------------------------------------- + + inline DropSubscriptionStmt* New() const final { + return CreateMaybeMessage(nullptr); + } + + DropSubscriptionStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { + return CreateMaybeMessage(arena); + } + void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void CopyFrom(const DropSubscriptionStmt& from); + void MergeFrom(const DropSubscriptionStmt& from); + PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; + bool IsInitialized() const final; + + size_t ByteSizeLong() const final; + const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; + ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( + ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; + int GetCachedSize() const final { return _cached_size_.Get(); } + + private: + inline void SharedCtor(); + inline void SharedDtor(); + void SetCachedSize(int size) const final; + void InternalSwap(DropSubscriptionStmt* other); + friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; + static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { + return "pg_query.DropSubscriptionStmt"; + } + protected: + explicit DropSubscriptionStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena); + private: + static void ArenaDtor(void* object); + inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); + public: + + ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; + private: + static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { + ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); + return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; + } + + public: + + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + + enum : int { + kSubnameFieldNumber = 1, + kMissingOkFieldNumber = 2, + kBehaviorFieldNumber = 3, + }; + // string subname = 1 [json_name = "subname"]; + void clear_subname(); + const std::string& subname() const; + void set_subname(const std::string& value); + void set_subname(std::string&& value); + void set_subname(const char* value); + void set_subname(const char* value, size_t size); + std::string* mutable_subname(); + std::string* release_subname(); + void set_allocated_subname(std::string* subname); + private: + const std::string& _internal_subname() const; + void _internal_set_subname(const std::string& value); + std::string* _internal_mutable_subname(); + public: + + // bool missing_ok = 2 [json_name = "missing_ok"]; + void clear_missing_ok(); + bool missing_ok() const; + void set_missing_ok(bool value); + private: + bool _internal_missing_ok() const; + void _internal_set_missing_ok(bool value); + public: + + // .pg_query.DropBehavior behavior = 3 [json_name = "behavior"]; + void clear_behavior(); + ::pg_query::DropBehavior behavior() const; + void set_behavior(::pg_query::DropBehavior value); + private: + ::pg_query::DropBehavior _internal_behavior() const; + void _internal_set_behavior(::pg_query::DropBehavior value); + public: + + // @@protoc_insertion_point(class_scope:pg_query.DropSubscriptionStmt) + private: + class _Internal; + + template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; + typedef void InternalArenaConstructable_; + typedef void DestructorSkippable_; + ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr subname_; + bool missing_ok_; + int behavior_; + mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; + friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; +}; +// ------------------------------------------------------------------- + +class CreateStatsStmt PROTOBUF_FINAL : + public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.CreateStatsStmt) */ { + public: + inline CreateStatsStmt() : CreateStatsStmt(nullptr) {} + virtual ~CreateStatsStmt(); + + CreateStatsStmt(const CreateStatsStmt& from); + CreateStatsStmt(CreateStatsStmt&& from) noexcept + : CreateStatsStmt() { + *this = ::std::move(from); + } + + inline CreateStatsStmt& operator=(const CreateStatsStmt& from) { + CopyFrom(from); + return *this; + } + inline CreateStatsStmt& operator=(CreateStatsStmt&& from) noexcept { + if (GetArena() == from.GetArena()) { + if (this != &from) InternalSwap(&from); + } else { + CopyFrom(from); + } + return *this; + } + + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { + return GetDescriptor(); + } + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { + return GetMetadataStatic().descriptor; + } + static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { + return GetMetadataStatic().reflection; + } + static const CreateStatsStmt& default_instance(); + + static inline const CreateStatsStmt* internal_default_instance() { + return reinterpret_cast( + &_CreateStatsStmt_default_instance_); + } + static constexpr int kIndexInFileMessages = + 174; + + friend void swap(CreateStatsStmt& a, CreateStatsStmt& b) { + a.Swap(&b); + } + inline void Swap(CreateStatsStmt* other) { + if (other == this) return; + if (GetArena() == other->GetArena()) { + InternalSwap(other); + } else { + ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); + } + } + void UnsafeArenaSwap(CreateStatsStmt* other) { + if (other == this) return; + GOOGLE_DCHECK(GetArena() == other->GetArena()); + InternalSwap(other); + } + + // implements Message ---------------------------------------------- + + inline CreateStatsStmt* New() const final { + return CreateMaybeMessage(nullptr); + } + + CreateStatsStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { + return CreateMaybeMessage(arena); + } + void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void CopyFrom(const CreateStatsStmt& from); + void MergeFrom(const CreateStatsStmt& from); + PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; + bool IsInitialized() const final; + + size_t ByteSizeLong() const final; + const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; + ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( + ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; + int GetCachedSize() const final { return _cached_size_.Get(); } + + private: + inline void SharedCtor(); + inline void SharedDtor(); + void SetCachedSize(int size) const final; + void InternalSwap(CreateStatsStmt* other); + friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; + static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { + return "pg_query.CreateStatsStmt"; + } + protected: + explicit CreateStatsStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena); + private: + static void ArenaDtor(void* object); + inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); + public: + + ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; + private: + static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { + ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); + return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; + } + + public: + + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + + enum : int { + kDefnamesFieldNumber = 1, + kStatTypesFieldNumber = 2, + kExprsFieldNumber = 3, + kRelationsFieldNumber = 4, + kStxcommentFieldNumber = 5, + kIfNotExistsFieldNumber = 6, + }; + // repeated .pg_query.Node defnames = 1 [json_name = "defnames"]; + int defnames_size() const; + private: + int _internal_defnames_size() const; + public: + void clear_defnames(); + ::pg_query::Node* mutable_defnames(int index); + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* + mutable_defnames(); + private: + const ::pg_query::Node& _internal_defnames(int index) const; + ::pg_query::Node* _internal_add_defnames(); + public: + const ::pg_query::Node& defnames(int index) const; + ::pg_query::Node* add_defnames(); + const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& + defnames() const; + + // repeated .pg_query.Node stat_types = 2 [json_name = "stat_types"]; + int stat_types_size() const; + private: + int _internal_stat_types_size() const; + public: + void clear_stat_types(); + ::pg_query::Node* mutable_stat_types(int index); + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* + mutable_stat_types(); + private: + const ::pg_query::Node& _internal_stat_types(int index) const; + ::pg_query::Node* _internal_add_stat_types(); + public: + const ::pg_query::Node& stat_types(int index) const; + ::pg_query::Node* add_stat_types(); + const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& + stat_types() const; + + // repeated .pg_query.Node exprs = 3 [json_name = "exprs"]; + int exprs_size() const; + private: + int _internal_exprs_size() const; + public: + void clear_exprs(); + ::pg_query::Node* mutable_exprs(int index); + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* + mutable_exprs(); + private: + const ::pg_query::Node& _internal_exprs(int index) const; + ::pg_query::Node* _internal_add_exprs(); + public: + const ::pg_query::Node& exprs(int index) const; + ::pg_query::Node* add_exprs(); + const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& + exprs() const; + + // repeated .pg_query.Node relations = 4 [json_name = "relations"]; + int relations_size() const; + private: + int _internal_relations_size() const; + public: + void clear_relations(); + ::pg_query::Node* mutable_relations(int index); + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* + mutable_relations(); + private: + const ::pg_query::Node& _internal_relations(int index) const; + ::pg_query::Node* _internal_add_relations(); + public: + const ::pg_query::Node& relations(int index) const; + ::pg_query::Node* add_relations(); + const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& + relations() const; + + // string stxcomment = 5 [json_name = "stxcomment"]; + void clear_stxcomment(); + const std::string& stxcomment() const; + void set_stxcomment(const std::string& value); + void set_stxcomment(std::string&& value); + void set_stxcomment(const char* value); + void set_stxcomment(const char* value, size_t size); + std::string* mutable_stxcomment(); + std::string* release_stxcomment(); + void set_allocated_stxcomment(std::string* stxcomment); + private: + const std::string& _internal_stxcomment() const; + void _internal_set_stxcomment(const std::string& value); + std::string* _internal_mutable_stxcomment(); + public: + + // bool if_not_exists = 6 [json_name = "if_not_exists"]; + void clear_if_not_exists(); + bool if_not_exists() const; + void set_if_not_exists(bool value); + private: + bool _internal_if_not_exists() const; + void _internal_set_if_not_exists(bool value); + public: + + // @@protoc_insertion_point(class_scope:pg_query.CreateStatsStmt) + private: + class _Internal; + + template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; + typedef void InternalArenaConstructable_; + typedef void DestructorSkippable_; + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > defnames_; + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > stat_types_; + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > exprs_; + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > relations_; + ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr stxcomment_; + bool if_not_exists_; + mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; + friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; +}; +// ------------------------------------------------------------------- + +class AlterCollationStmt PROTOBUF_FINAL : + public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.AlterCollationStmt) */ { + public: + inline AlterCollationStmt() : AlterCollationStmt(nullptr) {} + virtual ~AlterCollationStmt(); + + AlterCollationStmt(const AlterCollationStmt& from); + AlterCollationStmt(AlterCollationStmt&& from) noexcept + : AlterCollationStmt() { + *this = ::std::move(from); + } + + inline AlterCollationStmt& operator=(const AlterCollationStmt& from) { + CopyFrom(from); + return *this; + } + inline AlterCollationStmt& operator=(AlterCollationStmt&& from) noexcept { + if (GetArena() == from.GetArena()) { + if (this != &from) InternalSwap(&from); + } else { + CopyFrom(from); + } + return *this; + } + + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { + return GetDescriptor(); + } + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { + return GetMetadataStatic().descriptor; + } + static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { + return GetMetadataStatic().reflection; + } + static const AlterCollationStmt& default_instance(); + + static inline const AlterCollationStmt* internal_default_instance() { + return reinterpret_cast( + &_AlterCollationStmt_default_instance_); + } + static constexpr int kIndexInFileMessages = + 175; + + friend void swap(AlterCollationStmt& a, AlterCollationStmt& b) { + a.Swap(&b); + } + inline void Swap(AlterCollationStmt* other) { + if (other == this) return; + if (GetArena() == other->GetArena()) { + InternalSwap(other); + } else { + ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); + } + } + void UnsafeArenaSwap(AlterCollationStmt* other) { + if (other == this) return; + GOOGLE_DCHECK(GetArena() == other->GetArena()); + InternalSwap(other); + } + + // implements Message ---------------------------------------------- + + inline AlterCollationStmt* New() const final { + return CreateMaybeMessage(nullptr); + } + + AlterCollationStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { + return CreateMaybeMessage(arena); + } + void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void CopyFrom(const AlterCollationStmt& from); + void MergeFrom(const AlterCollationStmt& from); + PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; + bool IsInitialized() const final; + + size_t ByteSizeLong() const final; + const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; + ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( + ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; + int GetCachedSize() const final { return _cached_size_.Get(); } + + private: + inline void SharedCtor(); + inline void SharedDtor(); + void SetCachedSize(int size) const final; + void InternalSwap(AlterCollationStmt* other); + friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; + static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { + return "pg_query.AlterCollationStmt"; + } + protected: + explicit AlterCollationStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena); + private: + static void ArenaDtor(void* object); + inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); + public: + + ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; + private: + static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { + ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); + return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; + } + + public: + + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + + enum : int { + kCollnameFieldNumber = 1, + }; + // repeated .pg_query.Node collname = 1 [json_name = "collname"]; + int collname_size() const; + private: + int _internal_collname_size() const; + public: + void clear_collname(); + ::pg_query::Node* mutable_collname(int index); + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* + mutable_collname(); + private: + const ::pg_query::Node& _internal_collname(int index) const; + ::pg_query::Node* _internal_add_collname(); + public: + const ::pg_query::Node& collname(int index) const; + ::pg_query::Node* add_collname(); + const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& + collname() const; + + // @@protoc_insertion_point(class_scope:pg_query.AlterCollationStmt) + private: + class _Internal; + + template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; + typedef void InternalArenaConstructable_; + typedef void DestructorSkippable_; + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > collname_; + mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; + friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; +}; +// ------------------------------------------------------------------- + +class CallStmt PROTOBUF_FINAL : + public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.CallStmt) */ { + public: + inline CallStmt() : CallStmt(nullptr) {} + virtual ~CallStmt(); + + CallStmt(const CallStmt& from); + CallStmt(CallStmt&& from) noexcept + : CallStmt() { + *this = ::std::move(from); + } + + inline CallStmt& operator=(const CallStmt& from) { + CopyFrom(from); + return *this; + } + inline CallStmt& operator=(CallStmt&& from) noexcept { + if (GetArena() == from.GetArena()) { + if (this != &from) InternalSwap(&from); + } else { + CopyFrom(from); + } + return *this; + } + + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { + return GetDescriptor(); + } + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { + return GetMetadataStatic().descriptor; + } + static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { + return GetMetadataStatic().reflection; + } + static const CallStmt& default_instance(); + + static inline const CallStmt* internal_default_instance() { + return reinterpret_cast( + &_CallStmt_default_instance_); + } + static constexpr int kIndexInFileMessages = + 176; + + friend void swap(CallStmt& a, CallStmt& b) { + a.Swap(&b); + } + inline void Swap(CallStmt* other) { + if (other == this) return; + if (GetArena() == other->GetArena()) { + InternalSwap(other); + } else { + ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); + } + } + void UnsafeArenaSwap(CallStmt* other) { + if (other == this) return; + GOOGLE_DCHECK(GetArena() == other->GetArena()); + InternalSwap(other); + } + + // implements Message ---------------------------------------------- + + inline CallStmt* New() const final { + return CreateMaybeMessage(nullptr); + } + + CallStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { + return CreateMaybeMessage(arena); + } + void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void CopyFrom(const CallStmt& from); + void MergeFrom(const CallStmt& from); + PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; + bool IsInitialized() const final; + + size_t ByteSizeLong() const final; + const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; + ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( + ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; + int GetCachedSize() const final { return _cached_size_.Get(); } + + private: + inline void SharedCtor(); + inline void SharedDtor(); + void SetCachedSize(int size) const final; + void InternalSwap(CallStmt* other); + friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; + static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { + return "pg_query.CallStmt"; + } + protected: + explicit CallStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena); + private: + static void ArenaDtor(void* object); + inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); + public: + + ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; + private: + static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { + ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); + return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; + } + + public: + + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + + enum : int { + kFunccallFieldNumber = 1, + kFuncexprFieldNumber = 2, + }; + // .pg_query.FuncCall funccall = 1 [json_name = "funccall"]; + bool has_funccall() const; + private: + bool _internal_has_funccall() const; + public: + void clear_funccall(); + const ::pg_query::FuncCall& funccall() const; + ::pg_query::FuncCall* release_funccall(); + ::pg_query::FuncCall* mutable_funccall(); + void set_allocated_funccall(::pg_query::FuncCall* funccall); + private: + const ::pg_query::FuncCall& _internal_funccall() const; + ::pg_query::FuncCall* _internal_mutable_funccall(); + public: + void unsafe_arena_set_allocated_funccall( + ::pg_query::FuncCall* funccall); + ::pg_query::FuncCall* unsafe_arena_release_funccall(); + + // .pg_query.FuncExpr funcexpr = 2 [json_name = "funcexpr"]; + bool has_funcexpr() const; + private: + bool _internal_has_funcexpr() const; + public: + void clear_funcexpr(); + const ::pg_query::FuncExpr& funcexpr() const; + ::pg_query::FuncExpr* release_funcexpr(); + ::pg_query::FuncExpr* mutable_funcexpr(); + void set_allocated_funcexpr(::pg_query::FuncExpr* funcexpr); + private: + const ::pg_query::FuncExpr& _internal_funcexpr() const; + ::pg_query::FuncExpr* _internal_mutable_funcexpr(); + public: + void unsafe_arena_set_allocated_funcexpr( + ::pg_query::FuncExpr* funcexpr); + ::pg_query::FuncExpr* unsafe_arena_release_funcexpr(); + + // @@protoc_insertion_point(class_scope:pg_query.CallStmt) + private: + class _Internal; + + template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; + typedef void InternalArenaConstructable_; + typedef void DestructorSkippable_; + ::pg_query::FuncCall* funccall_; + ::pg_query::FuncExpr* funcexpr_; + mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; + friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; +}; +// ------------------------------------------------------------------- + +class AlterStatsStmt PROTOBUF_FINAL : + public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.AlterStatsStmt) */ { + public: + inline AlterStatsStmt() : AlterStatsStmt(nullptr) {} + virtual ~AlterStatsStmt(); + + AlterStatsStmt(const AlterStatsStmt& from); + AlterStatsStmt(AlterStatsStmt&& from) noexcept + : AlterStatsStmt() { + *this = ::std::move(from); + } + + inline AlterStatsStmt& operator=(const AlterStatsStmt& from) { + CopyFrom(from); + return *this; + } + inline AlterStatsStmt& operator=(AlterStatsStmt&& from) noexcept { + if (GetArena() == from.GetArena()) { + if (this != &from) InternalSwap(&from); + } else { + CopyFrom(from); + } + return *this; + } + + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { + return GetDescriptor(); + } + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { + return GetMetadataStatic().descriptor; + } + static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { + return GetMetadataStatic().reflection; + } + static const AlterStatsStmt& default_instance(); + + static inline const AlterStatsStmt* internal_default_instance() { + return reinterpret_cast( + &_AlterStatsStmt_default_instance_); + } + static constexpr int kIndexInFileMessages = + 177; + + friend void swap(AlterStatsStmt& a, AlterStatsStmt& b) { + a.Swap(&b); + } + inline void Swap(AlterStatsStmt* other) { + if (other == this) return; + if (GetArena() == other->GetArena()) { + InternalSwap(other); + } else { + ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); + } + } + void UnsafeArenaSwap(AlterStatsStmt* other) { + if (other == this) return; + GOOGLE_DCHECK(GetArena() == other->GetArena()); + InternalSwap(other); + } + + // implements Message ---------------------------------------------- + + inline AlterStatsStmt* New() const final { + return CreateMaybeMessage(nullptr); + } + + AlterStatsStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { + return CreateMaybeMessage(arena); + } + void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void CopyFrom(const AlterStatsStmt& from); + void MergeFrom(const AlterStatsStmt& from); + PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; + bool IsInitialized() const final; + + size_t ByteSizeLong() const final; + const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; + ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( + ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; + int GetCachedSize() const final { return _cached_size_.Get(); } + + private: + inline void SharedCtor(); + inline void SharedDtor(); + void SetCachedSize(int size) const final; + void InternalSwap(AlterStatsStmt* other); + friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; + static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { + return "pg_query.AlterStatsStmt"; + } + protected: + explicit AlterStatsStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena); + private: + static void ArenaDtor(void* object); + inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); + public: + + ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; + private: + static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { + ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); + return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; + } + + public: + + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + + enum : int { + kDefnamesFieldNumber = 1, + kStxstattargetFieldNumber = 2, + kMissingOkFieldNumber = 3, + }; + // repeated .pg_query.Node defnames = 1 [json_name = "defnames"]; + int defnames_size() const; + private: + int _internal_defnames_size() const; + public: + void clear_defnames(); + ::pg_query::Node* mutable_defnames(int index); + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* + mutable_defnames(); + private: + const ::pg_query::Node& _internal_defnames(int index) const; + ::pg_query::Node* _internal_add_defnames(); + public: + const ::pg_query::Node& defnames(int index) const; + ::pg_query::Node* add_defnames(); + const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& + defnames() const; + + // int32 stxstattarget = 2 [json_name = "stxstattarget"]; + void clear_stxstattarget(); + ::PROTOBUF_NAMESPACE_ID::int32 stxstattarget() const; + void set_stxstattarget(::PROTOBUF_NAMESPACE_ID::int32 value); + private: + ::PROTOBUF_NAMESPACE_ID::int32 _internal_stxstattarget() const; + void _internal_set_stxstattarget(::PROTOBUF_NAMESPACE_ID::int32 value); + public: + + // bool missing_ok = 3 [json_name = "missing_ok"]; + void clear_missing_ok(); + bool missing_ok() const; + void set_missing_ok(bool value); + private: + bool _internal_missing_ok() const; + void _internal_set_missing_ok(bool value); + public: + + // @@protoc_insertion_point(class_scope:pg_query.AlterStatsStmt) + private: + class _Internal; + + template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; + typedef void InternalArenaConstructable_; + typedef void DestructorSkippable_; + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > defnames_; + ::PROTOBUF_NAMESPACE_ID::int32 stxstattarget_; + bool missing_ok_; + mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; + friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; +}; +// ------------------------------------------------------------------- + +class A_Expr PROTOBUF_FINAL : + public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.A_Expr) */ { + public: + inline A_Expr() : A_Expr(nullptr) {} + virtual ~A_Expr(); + + A_Expr(const A_Expr& from); + A_Expr(A_Expr&& from) noexcept + : A_Expr() { + *this = ::std::move(from); + } + + inline A_Expr& operator=(const A_Expr& from) { + CopyFrom(from); + return *this; + } + inline A_Expr& operator=(A_Expr&& from) noexcept { + if (GetArena() == from.GetArena()) { + if (this != &from) InternalSwap(&from); + } else { + CopyFrom(from); + } + return *this; + } + + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { + return GetDescriptor(); + } + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { + return GetMetadataStatic().descriptor; + } + static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { + return GetMetadataStatic().reflection; + } + static const A_Expr& default_instance(); + + static inline const A_Expr* internal_default_instance() { + return reinterpret_cast( + &_A_Expr_default_instance_); + } + static constexpr int kIndexInFileMessages = + 178; + + friend void swap(A_Expr& a, A_Expr& b) { + a.Swap(&b); + } + inline void Swap(A_Expr* other) { + if (other == this) return; + if (GetArena() == other->GetArena()) { + InternalSwap(other); + } else { + ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); + } + } + void UnsafeArenaSwap(A_Expr* other) { + if (other == this) return; + GOOGLE_DCHECK(GetArena() == other->GetArena()); + InternalSwap(other); + } + + // implements Message ---------------------------------------------- + + inline A_Expr* New() const final { + return CreateMaybeMessage(nullptr); + } + + A_Expr* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { + return CreateMaybeMessage(arena); + } + void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void CopyFrom(const A_Expr& from); + void MergeFrom(const A_Expr& from); + PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; + bool IsInitialized() const final; + + size_t ByteSizeLong() const final; + const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; + ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( + ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; + int GetCachedSize() const final { return _cached_size_.Get(); } + + private: + inline void SharedCtor(); + inline void SharedDtor(); + void SetCachedSize(int size) const final; + void InternalSwap(A_Expr* other); + friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; + static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { + return "pg_query.A_Expr"; + } + protected: + explicit A_Expr(::PROTOBUF_NAMESPACE_ID::Arena* arena); + private: + static void ArenaDtor(void* object); + inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); + public: + + ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; + private: + static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { + ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); + return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; + } + + public: + + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + + enum : int { + kNameFieldNumber = 2, + kLexprFieldNumber = 3, + kRexprFieldNumber = 4, + kKindFieldNumber = 1, + kLocationFieldNumber = 5, + }; + // repeated .pg_query.Node name = 2 [json_name = "name"]; + int name_size() const; + private: + int _internal_name_size() const; + public: + void clear_name(); + ::pg_query::Node* mutable_name(int index); + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* + mutable_name(); + private: + const ::pg_query::Node& _internal_name(int index) const; + ::pg_query::Node* _internal_add_name(); + public: + const ::pg_query::Node& name(int index) const; + ::pg_query::Node* add_name(); + const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& + name() const; + + // .pg_query.Node lexpr = 3 [json_name = "lexpr"]; + bool has_lexpr() const; + private: + bool _internal_has_lexpr() const; + public: + void clear_lexpr(); + const ::pg_query::Node& lexpr() const; + ::pg_query::Node* release_lexpr(); + ::pg_query::Node* mutable_lexpr(); + void set_allocated_lexpr(::pg_query::Node* lexpr); + private: + const ::pg_query::Node& _internal_lexpr() const; + ::pg_query::Node* _internal_mutable_lexpr(); + public: + void unsafe_arena_set_allocated_lexpr( + ::pg_query::Node* lexpr); + ::pg_query::Node* unsafe_arena_release_lexpr(); + + // .pg_query.Node rexpr = 4 [json_name = "rexpr"]; + bool has_rexpr() const; + private: + bool _internal_has_rexpr() const; + public: + void clear_rexpr(); + const ::pg_query::Node& rexpr() const; + ::pg_query::Node* release_rexpr(); + ::pg_query::Node* mutable_rexpr(); + void set_allocated_rexpr(::pg_query::Node* rexpr); + private: + const ::pg_query::Node& _internal_rexpr() const; + ::pg_query::Node* _internal_mutable_rexpr(); + public: + void unsafe_arena_set_allocated_rexpr( + ::pg_query::Node* rexpr); + ::pg_query::Node* unsafe_arena_release_rexpr(); + + // .pg_query.A_Expr_Kind kind = 1 [json_name = "kind"]; + void clear_kind(); + ::pg_query::A_Expr_Kind kind() const; + void set_kind(::pg_query::A_Expr_Kind value); + private: + ::pg_query::A_Expr_Kind _internal_kind() const; + void _internal_set_kind(::pg_query::A_Expr_Kind value); + public: + + // int32 location = 5 [json_name = "location"]; + void clear_location(); + ::PROTOBUF_NAMESPACE_ID::int32 location() const; + void set_location(::PROTOBUF_NAMESPACE_ID::int32 value); + private: + ::PROTOBUF_NAMESPACE_ID::int32 _internal_location() const; + void _internal_set_location(::PROTOBUF_NAMESPACE_ID::int32 value); + public: + + // @@protoc_insertion_point(class_scope:pg_query.A_Expr) + private: + class _Internal; + + template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; + typedef void InternalArenaConstructable_; + typedef void DestructorSkippable_; + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > name_; + ::pg_query::Node* lexpr_; + ::pg_query::Node* rexpr_; + int kind_; + ::PROTOBUF_NAMESPACE_ID::int32 location_; + mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; + friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; +}; +// ------------------------------------------------------------------- + +class ColumnRef PROTOBUF_FINAL : + public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.ColumnRef) */ { + public: + inline ColumnRef() : ColumnRef(nullptr) {} + virtual ~ColumnRef(); + + ColumnRef(const ColumnRef& from); + ColumnRef(ColumnRef&& from) noexcept + : ColumnRef() { + *this = ::std::move(from); + } + + inline ColumnRef& operator=(const ColumnRef& from) { + CopyFrom(from); + return *this; + } + inline ColumnRef& operator=(ColumnRef&& from) noexcept { + if (GetArena() == from.GetArena()) { + if (this != &from) InternalSwap(&from); + } else { + CopyFrom(from); + } + return *this; + } + + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { + return GetDescriptor(); + } + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { + return GetMetadataStatic().descriptor; + } + static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { + return GetMetadataStatic().reflection; + } + static const ColumnRef& default_instance(); + + static inline const ColumnRef* internal_default_instance() { + return reinterpret_cast( + &_ColumnRef_default_instance_); + } + static constexpr int kIndexInFileMessages = + 179; + + friend void swap(ColumnRef& a, ColumnRef& b) { + a.Swap(&b); + } + inline void Swap(ColumnRef* other) { + if (other == this) return; + if (GetArena() == other->GetArena()) { + InternalSwap(other); + } else { + ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); + } + } + void UnsafeArenaSwap(ColumnRef* other) { + if (other == this) return; + GOOGLE_DCHECK(GetArena() == other->GetArena()); + InternalSwap(other); + } + + // implements Message ---------------------------------------------- + + inline ColumnRef* New() const final { + return CreateMaybeMessage(nullptr); + } + + ColumnRef* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { + return CreateMaybeMessage(arena); + } + void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void CopyFrom(const ColumnRef& from); + void MergeFrom(const ColumnRef& from); + PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; + bool IsInitialized() const final; + + size_t ByteSizeLong() const final; + const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; + ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( + ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; + int GetCachedSize() const final { return _cached_size_.Get(); } + + private: + inline void SharedCtor(); + inline void SharedDtor(); + void SetCachedSize(int size) const final; + void InternalSwap(ColumnRef* other); + friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; + static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { + return "pg_query.ColumnRef"; + } + protected: + explicit ColumnRef(::PROTOBUF_NAMESPACE_ID::Arena* arena); + private: + static void ArenaDtor(void* object); + inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); + public: + + ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; + private: + static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { + ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); + return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; + } + + public: + + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + + enum : int { + kFieldsFieldNumber = 1, + kLocationFieldNumber = 2, + }; + // repeated .pg_query.Node fields = 1 [json_name = "fields"]; + int fields_size() const; + private: + int _internal_fields_size() const; + public: + void clear_fields(); + ::pg_query::Node* mutable_fields(int index); + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* + mutable_fields(); + private: + const ::pg_query::Node& _internal_fields(int index) const; + ::pg_query::Node* _internal_add_fields(); + public: + const ::pg_query::Node& fields(int index) const; + ::pg_query::Node* add_fields(); + const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& + fields() const; + + // int32 location = 2 [json_name = "location"]; + void clear_location(); + ::PROTOBUF_NAMESPACE_ID::int32 location() const; + void set_location(::PROTOBUF_NAMESPACE_ID::int32 value); + private: + ::PROTOBUF_NAMESPACE_ID::int32 _internal_location() const; + void _internal_set_location(::PROTOBUF_NAMESPACE_ID::int32 value); + public: + + // @@protoc_insertion_point(class_scope:pg_query.ColumnRef) + private: + class _Internal; + + template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; + typedef void InternalArenaConstructable_; + typedef void DestructorSkippable_; + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > fields_; + ::PROTOBUF_NAMESPACE_ID::int32 location_; + mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; + friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; +}; +// ------------------------------------------------------------------- + +class ParamRef PROTOBUF_FINAL : + public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.ParamRef) */ { + public: + inline ParamRef() : ParamRef(nullptr) {} + virtual ~ParamRef(); + + ParamRef(const ParamRef& from); + ParamRef(ParamRef&& from) noexcept + : ParamRef() { + *this = ::std::move(from); + } + + inline ParamRef& operator=(const ParamRef& from) { + CopyFrom(from); + return *this; + } + inline ParamRef& operator=(ParamRef&& from) noexcept { + if (GetArena() == from.GetArena()) { + if (this != &from) InternalSwap(&from); + } else { + CopyFrom(from); + } + return *this; + } + + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { + return GetDescriptor(); + } + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { + return GetMetadataStatic().descriptor; + } + static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { + return GetMetadataStatic().reflection; + } + static const ParamRef& default_instance(); + + static inline const ParamRef* internal_default_instance() { + return reinterpret_cast( + &_ParamRef_default_instance_); + } + static constexpr int kIndexInFileMessages = + 180; + + friend void swap(ParamRef& a, ParamRef& b) { + a.Swap(&b); + } + inline void Swap(ParamRef* other) { + if (other == this) return; + if (GetArena() == other->GetArena()) { + InternalSwap(other); + } else { + ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); + } + } + void UnsafeArenaSwap(ParamRef* other) { + if (other == this) return; + GOOGLE_DCHECK(GetArena() == other->GetArena()); + InternalSwap(other); + } + + // implements Message ---------------------------------------------- + + inline ParamRef* New() const final { + return CreateMaybeMessage(nullptr); + } + + ParamRef* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { + return CreateMaybeMessage(arena); + } + void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void CopyFrom(const ParamRef& from); + void MergeFrom(const ParamRef& from); + PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; + bool IsInitialized() const final; + + size_t ByteSizeLong() const final; + const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; + ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( + ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; + int GetCachedSize() const final { return _cached_size_.Get(); } + + private: + inline void SharedCtor(); + inline void SharedDtor(); + void SetCachedSize(int size) const final; + void InternalSwap(ParamRef* other); + friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; + static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { + return "pg_query.ParamRef"; + } + protected: + explicit ParamRef(::PROTOBUF_NAMESPACE_ID::Arena* arena); + private: + static void ArenaDtor(void* object); + inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); + public: + + ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; + private: + static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { + ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); + return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; + } + + public: + + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + + enum : int { + kNumberFieldNumber = 1, + kLocationFieldNumber = 2, + }; + // int32 number = 1 [json_name = "number"]; + void clear_number(); + ::PROTOBUF_NAMESPACE_ID::int32 number() const; + void set_number(::PROTOBUF_NAMESPACE_ID::int32 value); + private: + ::PROTOBUF_NAMESPACE_ID::int32 _internal_number() const; + void _internal_set_number(::PROTOBUF_NAMESPACE_ID::int32 value); + public: + + // int32 location = 2 [json_name = "location"]; + void clear_location(); + ::PROTOBUF_NAMESPACE_ID::int32 location() const; + void set_location(::PROTOBUF_NAMESPACE_ID::int32 value); + private: + ::PROTOBUF_NAMESPACE_ID::int32 _internal_location() const; + void _internal_set_location(::PROTOBUF_NAMESPACE_ID::int32 value); + public: + + // @@protoc_insertion_point(class_scope:pg_query.ParamRef) + private: + class _Internal; + + template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; + typedef void InternalArenaConstructable_; + typedef void DestructorSkippable_; + ::PROTOBUF_NAMESPACE_ID::int32 number_; + ::PROTOBUF_NAMESPACE_ID::int32 location_; + mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; + friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; +}; +// ------------------------------------------------------------------- + +class A_Const PROTOBUF_FINAL : + public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.A_Const) */ { + public: + inline A_Const() : A_Const(nullptr) {} + virtual ~A_Const(); + + A_Const(const A_Const& from); + A_Const(A_Const&& from) noexcept + : A_Const() { + *this = ::std::move(from); + } + + inline A_Const& operator=(const A_Const& from) { + CopyFrom(from); + return *this; + } + inline A_Const& operator=(A_Const&& from) noexcept { + if (GetArena() == from.GetArena()) { + if (this != &from) InternalSwap(&from); + } else { + CopyFrom(from); + } + return *this; + } + + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { + return GetDescriptor(); + } + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { + return GetMetadataStatic().descriptor; + } + static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { + return GetMetadataStatic().reflection; + } + static const A_Const& default_instance(); + + static inline const A_Const* internal_default_instance() { + return reinterpret_cast( + &_A_Const_default_instance_); + } + static constexpr int kIndexInFileMessages = + 181; + + friend void swap(A_Const& a, A_Const& b) { + a.Swap(&b); + } + inline void Swap(A_Const* other) { + if (other == this) return; + if (GetArena() == other->GetArena()) { + InternalSwap(other); + } else { + ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); + } + } + void UnsafeArenaSwap(A_Const* other) { + if (other == this) return; + GOOGLE_DCHECK(GetArena() == other->GetArena()); + InternalSwap(other); + } + + // implements Message ---------------------------------------------- + + inline A_Const* New() const final { + return CreateMaybeMessage(nullptr); + } + + A_Const* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { + return CreateMaybeMessage(arena); + } + void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void CopyFrom(const A_Const& from); + void MergeFrom(const A_Const& from); + PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; + bool IsInitialized() const final; + + size_t ByteSizeLong() const final; + const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; + ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( + ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; + int GetCachedSize() const final { return _cached_size_.Get(); } + + private: + inline void SharedCtor(); + inline void SharedDtor(); + void SetCachedSize(int size) const final; + void InternalSwap(A_Const* other); + friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; + static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { + return "pg_query.A_Const"; + } + protected: + explicit A_Const(::PROTOBUF_NAMESPACE_ID::Arena* arena); + private: + static void ArenaDtor(void* object); + inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); + public: + + ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; + private: + static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { + ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); + return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; + } + + public: + + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + + enum : int { + kValFieldNumber = 1, + kLocationFieldNumber = 2, + }; + // .pg_query.Node val = 1 [json_name = "val"]; + bool has_val() const; + private: + bool _internal_has_val() const; + public: + void clear_val(); + const ::pg_query::Node& val() const; + ::pg_query::Node* release_val(); + ::pg_query::Node* mutable_val(); + void set_allocated_val(::pg_query::Node* val); + private: + const ::pg_query::Node& _internal_val() const; + ::pg_query::Node* _internal_mutable_val(); + public: + void unsafe_arena_set_allocated_val( + ::pg_query::Node* val); + ::pg_query::Node* unsafe_arena_release_val(); + + // int32 location = 2 [json_name = "location"]; + void clear_location(); + ::PROTOBUF_NAMESPACE_ID::int32 location() const; + void set_location(::PROTOBUF_NAMESPACE_ID::int32 value); + private: + ::PROTOBUF_NAMESPACE_ID::int32 _internal_location() const; + void _internal_set_location(::PROTOBUF_NAMESPACE_ID::int32 value); + public: + + // @@protoc_insertion_point(class_scope:pg_query.A_Const) + private: + class _Internal; + + template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; + typedef void InternalArenaConstructable_; + typedef void DestructorSkippable_; + ::pg_query::Node* val_; + ::PROTOBUF_NAMESPACE_ID::int32 location_; + mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; + friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; +}; +// ------------------------------------------------------------------- + +class FuncCall PROTOBUF_FINAL : + public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.FuncCall) */ { + public: + inline FuncCall() : FuncCall(nullptr) {} + virtual ~FuncCall(); + + FuncCall(const FuncCall& from); + FuncCall(FuncCall&& from) noexcept + : FuncCall() { + *this = ::std::move(from); + } + + inline FuncCall& operator=(const FuncCall& from) { + CopyFrom(from); + return *this; + } + inline FuncCall& operator=(FuncCall&& from) noexcept { + if (GetArena() == from.GetArena()) { + if (this != &from) InternalSwap(&from); + } else { + CopyFrom(from); + } + return *this; + } + + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { + return GetDescriptor(); + } + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { + return GetMetadataStatic().descriptor; + } + static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { + return GetMetadataStatic().reflection; + } + static const FuncCall& default_instance(); + + static inline const FuncCall* internal_default_instance() { + return reinterpret_cast( + &_FuncCall_default_instance_); + } + static constexpr int kIndexInFileMessages = + 182; + + friend void swap(FuncCall& a, FuncCall& b) { + a.Swap(&b); + } + inline void Swap(FuncCall* other) { + if (other == this) return; + if (GetArena() == other->GetArena()) { + InternalSwap(other); + } else { + ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); + } + } + void UnsafeArenaSwap(FuncCall* other) { + if (other == this) return; + GOOGLE_DCHECK(GetArena() == other->GetArena()); + InternalSwap(other); + } + + // implements Message ---------------------------------------------- + + inline FuncCall* New() const final { + return CreateMaybeMessage(nullptr); + } + + FuncCall* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { + return CreateMaybeMessage(arena); + } + void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void CopyFrom(const FuncCall& from); + void MergeFrom(const FuncCall& from); + PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; + bool IsInitialized() const final; + + size_t ByteSizeLong() const final; + const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; + ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( + ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; + int GetCachedSize() const final { return _cached_size_.Get(); } + + private: + inline void SharedCtor(); + inline void SharedDtor(); + void SetCachedSize(int size) const final; + void InternalSwap(FuncCall* other); + friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; + static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { + return "pg_query.FuncCall"; + } + protected: + explicit FuncCall(::PROTOBUF_NAMESPACE_ID::Arena* arena); + private: + static void ArenaDtor(void* object); + inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); + public: + + ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; + private: + static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { + ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); + return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; + } + + public: + + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + + enum : int { + kFuncnameFieldNumber = 1, + kArgsFieldNumber = 2, + kAggOrderFieldNumber = 3, + kAggFilterFieldNumber = 4, + kOverFieldNumber = 9, + kAggWithinGroupFieldNumber = 5, + kAggStarFieldNumber = 6, + kAggDistinctFieldNumber = 7, + kFuncVariadicFieldNumber = 8, + kLocationFieldNumber = 10, + }; + // repeated .pg_query.Node funcname = 1 [json_name = "funcname"]; + int funcname_size() const; + private: + int _internal_funcname_size() const; + public: + void clear_funcname(); + ::pg_query::Node* mutable_funcname(int index); + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* + mutable_funcname(); + private: + const ::pg_query::Node& _internal_funcname(int index) const; + ::pg_query::Node* _internal_add_funcname(); + public: + const ::pg_query::Node& funcname(int index) const; + ::pg_query::Node* add_funcname(); + const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& + funcname() const; + + // repeated .pg_query.Node args = 2 [json_name = "args"]; + int args_size() const; + private: + int _internal_args_size() const; + public: + void clear_args(); + ::pg_query::Node* mutable_args(int index); + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* + mutable_args(); + private: + const ::pg_query::Node& _internal_args(int index) const; + ::pg_query::Node* _internal_add_args(); + public: + const ::pg_query::Node& args(int index) const; + ::pg_query::Node* add_args(); + const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& + args() const; + + // repeated .pg_query.Node agg_order = 3 [json_name = "agg_order"]; + int agg_order_size() const; + private: + int _internal_agg_order_size() const; + public: + void clear_agg_order(); + ::pg_query::Node* mutable_agg_order(int index); + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* + mutable_agg_order(); + private: + const ::pg_query::Node& _internal_agg_order(int index) const; + ::pg_query::Node* _internal_add_agg_order(); + public: + const ::pg_query::Node& agg_order(int index) const; + ::pg_query::Node* add_agg_order(); + const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& + agg_order() const; + + // .pg_query.Node agg_filter = 4 [json_name = "agg_filter"]; + bool has_agg_filter() const; + private: + bool _internal_has_agg_filter() const; + public: + void clear_agg_filter(); + const ::pg_query::Node& agg_filter() const; + ::pg_query::Node* release_agg_filter(); + ::pg_query::Node* mutable_agg_filter(); + void set_allocated_agg_filter(::pg_query::Node* agg_filter); + private: + const ::pg_query::Node& _internal_agg_filter() const; + ::pg_query::Node* _internal_mutable_agg_filter(); + public: + void unsafe_arena_set_allocated_agg_filter( + ::pg_query::Node* agg_filter); + ::pg_query::Node* unsafe_arena_release_agg_filter(); + + // .pg_query.WindowDef over = 9 [json_name = "over"]; + bool has_over() const; + private: + bool _internal_has_over() const; + public: + void clear_over(); + const ::pg_query::WindowDef& over() const; + ::pg_query::WindowDef* release_over(); + ::pg_query::WindowDef* mutable_over(); + void set_allocated_over(::pg_query::WindowDef* over); + private: + const ::pg_query::WindowDef& _internal_over() const; + ::pg_query::WindowDef* _internal_mutable_over(); + public: + void unsafe_arena_set_allocated_over( + ::pg_query::WindowDef* over); + ::pg_query::WindowDef* unsafe_arena_release_over(); + + // bool agg_within_group = 5 [json_name = "agg_within_group"]; + void clear_agg_within_group(); + bool agg_within_group() const; + void set_agg_within_group(bool value); + private: + bool _internal_agg_within_group() const; + void _internal_set_agg_within_group(bool value); + public: + + // bool agg_star = 6 [json_name = "agg_star"]; + void clear_agg_star(); + bool agg_star() const; + void set_agg_star(bool value); + private: + bool _internal_agg_star() const; + void _internal_set_agg_star(bool value); + public: + + // bool agg_distinct = 7 [json_name = "agg_distinct"]; + void clear_agg_distinct(); + bool agg_distinct() const; + void set_agg_distinct(bool value); + private: + bool _internal_agg_distinct() const; + void _internal_set_agg_distinct(bool value); + public: + + // bool func_variadic = 8 [json_name = "func_variadic"]; + void clear_func_variadic(); + bool func_variadic() const; + void set_func_variadic(bool value); + private: + bool _internal_func_variadic() const; + void _internal_set_func_variadic(bool value); + public: + + // int32 location = 10 [json_name = "location"]; + void clear_location(); + ::PROTOBUF_NAMESPACE_ID::int32 location() const; + void set_location(::PROTOBUF_NAMESPACE_ID::int32 value); + private: + ::PROTOBUF_NAMESPACE_ID::int32 _internal_location() const; + void _internal_set_location(::PROTOBUF_NAMESPACE_ID::int32 value); + public: + + // @@protoc_insertion_point(class_scope:pg_query.FuncCall) + private: + class _Internal; + + template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; + typedef void InternalArenaConstructable_; + typedef void DestructorSkippable_; + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > funcname_; + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > args_; + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > agg_order_; + ::pg_query::Node* agg_filter_; + ::pg_query::WindowDef* over_; + bool agg_within_group_; + bool agg_star_; + bool agg_distinct_; + bool func_variadic_; + ::PROTOBUF_NAMESPACE_ID::int32 location_; + mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; + friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; +}; +// ------------------------------------------------------------------- + +class A_Star PROTOBUF_FINAL : + public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.A_Star) */ { + public: + inline A_Star() : A_Star(nullptr) {} + virtual ~A_Star(); + + A_Star(const A_Star& from); + A_Star(A_Star&& from) noexcept + : A_Star() { + *this = ::std::move(from); + } + + inline A_Star& operator=(const A_Star& from) { + CopyFrom(from); + return *this; + } + inline A_Star& operator=(A_Star&& from) noexcept { + if (GetArena() == from.GetArena()) { + if (this != &from) InternalSwap(&from); + } else { + CopyFrom(from); + } + return *this; + } + + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { + return GetDescriptor(); + } + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { + return GetMetadataStatic().descriptor; + } + static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { + return GetMetadataStatic().reflection; + } + static const A_Star& default_instance(); + + static inline const A_Star* internal_default_instance() { + return reinterpret_cast( + &_A_Star_default_instance_); + } + static constexpr int kIndexInFileMessages = + 183; + + friend void swap(A_Star& a, A_Star& b) { + a.Swap(&b); + } + inline void Swap(A_Star* other) { + if (other == this) return; + if (GetArena() == other->GetArena()) { + InternalSwap(other); + } else { + ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); + } + } + void UnsafeArenaSwap(A_Star* other) { + if (other == this) return; + GOOGLE_DCHECK(GetArena() == other->GetArena()); + InternalSwap(other); + } + + // implements Message ---------------------------------------------- + + inline A_Star* New() const final { + return CreateMaybeMessage(nullptr); + } + + A_Star* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { + return CreateMaybeMessage(arena); + } + void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void CopyFrom(const A_Star& from); + void MergeFrom(const A_Star& from); + PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; + bool IsInitialized() const final; + + size_t ByteSizeLong() const final; + const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; + ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( + ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; + int GetCachedSize() const final { return _cached_size_.Get(); } + + private: + inline void SharedCtor(); + inline void SharedDtor(); + void SetCachedSize(int size) const final; + void InternalSwap(A_Star* other); + friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; + static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { + return "pg_query.A_Star"; + } + protected: + explicit A_Star(::PROTOBUF_NAMESPACE_ID::Arena* arena); + private: + static void ArenaDtor(void* object); + inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); + public: + + ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; + private: + static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { + ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); + return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; + } + + public: + + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + + // @@protoc_insertion_point(class_scope:pg_query.A_Star) + private: + class _Internal; + + template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; + typedef void InternalArenaConstructable_; + typedef void DestructorSkippable_; + mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; + friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; +}; +// ------------------------------------------------------------------- + +class A_Indices PROTOBUF_FINAL : + public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.A_Indices) */ { + public: + inline A_Indices() : A_Indices(nullptr) {} + virtual ~A_Indices(); + + A_Indices(const A_Indices& from); + A_Indices(A_Indices&& from) noexcept + : A_Indices() { + *this = ::std::move(from); + } + + inline A_Indices& operator=(const A_Indices& from) { + CopyFrom(from); + return *this; + } + inline A_Indices& operator=(A_Indices&& from) noexcept { + if (GetArena() == from.GetArena()) { + if (this != &from) InternalSwap(&from); + } else { + CopyFrom(from); + } + return *this; + } + + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { + return GetDescriptor(); + } + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { + return GetMetadataStatic().descriptor; + } + static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { + return GetMetadataStatic().reflection; + } + static const A_Indices& default_instance(); + + static inline const A_Indices* internal_default_instance() { + return reinterpret_cast( + &_A_Indices_default_instance_); + } + static constexpr int kIndexInFileMessages = + 184; + + friend void swap(A_Indices& a, A_Indices& b) { + a.Swap(&b); + } + inline void Swap(A_Indices* other) { + if (other == this) return; + if (GetArena() == other->GetArena()) { + InternalSwap(other); + } else { + ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); + } + } + void UnsafeArenaSwap(A_Indices* other) { + if (other == this) return; + GOOGLE_DCHECK(GetArena() == other->GetArena()); + InternalSwap(other); + } + + // implements Message ---------------------------------------------- + + inline A_Indices* New() const final { + return CreateMaybeMessage(nullptr); + } + + A_Indices* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { + return CreateMaybeMessage(arena); + } + void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void CopyFrom(const A_Indices& from); + void MergeFrom(const A_Indices& from); + PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; + bool IsInitialized() const final; + + size_t ByteSizeLong() const final; + const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; + ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( + ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; + int GetCachedSize() const final { return _cached_size_.Get(); } + + private: + inline void SharedCtor(); + inline void SharedDtor(); + void SetCachedSize(int size) const final; + void InternalSwap(A_Indices* other); + friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; + static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { + return "pg_query.A_Indices"; + } + protected: + explicit A_Indices(::PROTOBUF_NAMESPACE_ID::Arena* arena); + private: + static void ArenaDtor(void* object); + inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); + public: + + ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; + private: + static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { + ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); + return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; + } + + public: + + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + + enum : int { + kLidxFieldNumber = 2, + kUidxFieldNumber = 3, + kIsSliceFieldNumber = 1, + }; + // .pg_query.Node lidx = 2 [json_name = "lidx"]; + bool has_lidx() const; + private: + bool _internal_has_lidx() const; + public: + void clear_lidx(); + const ::pg_query::Node& lidx() const; + ::pg_query::Node* release_lidx(); + ::pg_query::Node* mutable_lidx(); + void set_allocated_lidx(::pg_query::Node* lidx); + private: + const ::pg_query::Node& _internal_lidx() const; + ::pg_query::Node* _internal_mutable_lidx(); + public: + void unsafe_arena_set_allocated_lidx( + ::pg_query::Node* lidx); + ::pg_query::Node* unsafe_arena_release_lidx(); + + // .pg_query.Node uidx = 3 [json_name = "uidx"]; + bool has_uidx() const; + private: + bool _internal_has_uidx() const; + public: + void clear_uidx(); + const ::pg_query::Node& uidx() const; + ::pg_query::Node* release_uidx(); + ::pg_query::Node* mutable_uidx(); + void set_allocated_uidx(::pg_query::Node* uidx); + private: + const ::pg_query::Node& _internal_uidx() const; + ::pg_query::Node* _internal_mutable_uidx(); + public: + void unsafe_arena_set_allocated_uidx( + ::pg_query::Node* uidx); + ::pg_query::Node* unsafe_arena_release_uidx(); + + // bool is_slice = 1 [json_name = "is_slice"]; + void clear_is_slice(); + bool is_slice() const; + void set_is_slice(bool value); + private: + bool _internal_is_slice() const; + void _internal_set_is_slice(bool value); + public: + + // @@protoc_insertion_point(class_scope:pg_query.A_Indices) + private: + class _Internal; + + template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; + typedef void InternalArenaConstructable_; + typedef void DestructorSkippable_; + ::pg_query::Node* lidx_; + ::pg_query::Node* uidx_; + bool is_slice_; + mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; + friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; +}; +// ------------------------------------------------------------------- + +class A_Indirection PROTOBUF_FINAL : + public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.A_Indirection) */ { + public: + inline A_Indirection() : A_Indirection(nullptr) {} + virtual ~A_Indirection(); + + A_Indirection(const A_Indirection& from); + A_Indirection(A_Indirection&& from) noexcept + : A_Indirection() { + *this = ::std::move(from); + } + + inline A_Indirection& operator=(const A_Indirection& from) { + CopyFrom(from); + return *this; + } + inline A_Indirection& operator=(A_Indirection&& from) noexcept { + if (GetArena() == from.GetArena()) { + if (this != &from) InternalSwap(&from); + } else { + CopyFrom(from); + } + return *this; + } + + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { + return GetDescriptor(); + } + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { + return GetMetadataStatic().descriptor; + } + static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { + return GetMetadataStatic().reflection; + } + static const A_Indirection& default_instance(); + + static inline const A_Indirection* internal_default_instance() { + return reinterpret_cast( + &_A_Indirection_default_instance_); + } + static constexpr int kIndexInFileMessages = + 185; + + friend void swap(A_Indirection& a, A_Indirection& b) { + a.Swap(&b); + } + inline void Swap(A_Indirection* other) { + if (other == this) return; + if (GetArena() == other->GetArena()) { + InternalSwap(other); + } else { + ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); + } + } + void UnsafeArenaSwap(A_Indirection* other) { + if (other == this) return; + GOOGLE_DCHECK(GetArena() == other->GetArena()); + InternalSwap(other); + } + + // implements Message ---------------------------------------------- + + inline A_Indirection* New() const final { + return CreateMaybeMessage(nullptr); + } + + A_Indirection* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { + return CreateMaybeMessage(arena); + } + void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void CopyFrom(const A_Indirection& from); + void MergeFrom(const A_Indirection& from); + PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; + bool IsInitialized() const final; + + size_t ByteSizeLong() const final; + const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; + ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( + ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; + int GetCachedSize() const final { return _cached_size_.Get(); } + + private: + inline void SharedCtor(); + inline void SharedDtor(); + void SetCachedSize(int size) const final; + void InternalSwap(A_Indirection* other); + friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; + static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { + return "pg_query.A_Indirection"; + } + protected: + explicit A_Indirection(::PROTOBUF_NAMESPACE_ID::Arena* arena); + private: + static void ArenaDtor(void* object); + inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); + public: + + ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; + private: + static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { + ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); + return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; + } + + public: + + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + + enum : int { + kIndirectionFieldNumber = 2, + kArgFieldNumber = 1, + }; + // repeated .pg_query.Node indirection = 2 [json_name = "indirection"]; + int indirection_size() const; + private: + int _internal_indirection_size() const; + public: + void clear_indirection(); + ::pg_query::Node* mutable_indirection(int index); + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* + mutable_indirection(); + private: + const ::pg_query::Node& _internal_indirection(int index) const; + ::pg_query::Node* _internal_add_indirection(); + public: + const ::pg_query::Node& indirection(int index) const; + ::pg_query::Node* add_indirection(); + const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& + indirection() const; + + // .pg_query.Node arg = 1 [json_name = "arg"]; + bool has_arg() const; + private: + bool _internal_has_arg() const; + public: + void clear_arg(); + const ::pg_query::Node& arg() const; + ::pg_query::Node* release_arg(); + ::pg_query::Node* mutable_arg(); + void set_allocated_arg(::pg_query::Node* arg); + private: + const ::pg_query::Node& _internal_arg() const; + ::pg_query::Node* _internal_mutable_arg(); + public: + void unsafe_arena_set_allocated_arg( + ::pg_query::Node* arg); + ::pg_query::Node* unsafe_arena_release_arg(); + + // @@protoc_insertion_point(class_scope:pg_query.A_Indirection) + private: + class _Internal; + + template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; + typedef void InternalArenaConstructable_; + typedef void DestructorSkippable_; + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > indirection_; + ::pg_query::Node* arg_; + mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; + friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; +}; +// ------------------------------------------------------------------- + +class A_ArrayExpr PROTOBUF_FINAL : + public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.A_ArrayExpr) */ { + public: + inline A_ArrayExpr() : A_ArrayExpr(nullptr) {} + virtual ~A_ArrayExpr(); + + A_ArrayExpr(const A_ArrayExpr& from); + A_ArrayExpr(A_ArrayExpr&& from) noexcept + : A_ArrayExpr() { + *this = ::std::move(from); + } + + inline A_ArrayExpr& operator=(const A_ArrayExpr& from) { + CopyFrom(from); + return *this; + } + inline A_ArrayExpr& operator=(A_ArrayExpr&& from) noexcept { + if (GetArena() == from.GetArena()) { + if (this != &from) InternalSwap(&from); + } else { + CopyFrom(from); + } + return *this; + } + + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { + return GetDescriptor(); + } + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { + return GetMetadataStatic().descriptor; + } + static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { + return GetMetadataStatic().reflection; + } + static const A_ArrayExpr& default_instance(); + + static inline const A_ArrayExpr* internal_default_instance() { + return reinterpret_cast( + &_A_ArrayExpr_default_instance_); + } + static constexpr int kIndexInFileMessages = + 186; + + friend void swap(A_ArrayExpr& a, A_ArrayExpr& b) { + a.Swap(&b); + } + inline void Swap(A_ArrayExpr* other) { + if (other == this) return; + if (GetArena() == other->GetArena()) { + InternalSwap(other); + } else { + ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); + } + } + void UnsafeArenaSwap(A_ArrayExpr* other) { + if (other == this) return; + GOOGLE_DCHECK(GetArena() == other->GetArena()); + InternalSwap(other); + } + + // implements Message ---------------------------------------------- + + inline A_ArrayExpr* New() const final { + return CreateMaybeMessage(nullptr); + } + + A_ArrayExpr* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { + return CreateMaybeMessage(arena); + } + void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void CopyFrom(const A_ArrayExpr& from); + void MergeFrom(const A_ArrayExpr& from); + PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; + bool IsInitialized() const final; + + size_t ByteSizeLong() const final; + const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; + ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( + ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; + int GetCachedSize() const final { return _cached_size_.Get(); } + + private: + inline void SharedCtor(); + inline void SharedDtor(); + void SetCachedSize(int size) const final; + void InternalSwap(A_ArrayExpr* other); + friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; + static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { + return "pg_query.A_ArrayExpr"; + } + protected: + explicit A_ArrayExpr(::PROTOBUF_NAMESPACE_ID::Arena* arena); + private: + static void ArenaDtor(void* object); + inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); + public: + + ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; + private: + static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { + ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); + return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; + } + + public: + + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + + enum : int { + kElementsFieldNumber = 1, + kLocationFieldNumber = 2, + }; + // repeated .pg_query.Node elements = 1 [json_name = "elements"]; + int elements_size() const; + private: + int _internal_elements_size() const; + public: + void clear_elements(); + ::pg_query::Node* mutable_elements(int index); + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* + mutable_elements(); + private: + const ::pg_query::Node& _internal_elements(int index) const; + ::pg_query::Node* _internal_add_elements(); + public: + const ::pg_query::Node& elements(int index) const; + ::pg_query::Node* add_elements(); + const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& + elements() const; + + // int32 location = 2 [json_name = "location"]; + void clear_location(); + ::PROTOBUF_NAMESPACE_ID::int32 location() const; + void set_location(::PROTOBUF_NAMESPACE_ID::int32 value); + private: + ::PROTOBUF_NAMESPACE_ID::int32 _internal_location() const; + void _internal_set_location(::PROTOBUF_NAMESPACE_ID::int32 value); + public: + + // @@protoc_insertion_point(class_scope:pg_query.A_ArrayExpr) + private: + class _Internal; + + template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; + typedef void InternalArenaConstructable_; + typedef void DestructorSkippable_; + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > elements_; + ::PROTOBUF_NAMESPACE_ID::int32 location_; + mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; + friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; +}; +// ------------------------------------------------------------------- + +class ResTarget PROTOBUF_FINAL : + public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.ResTarget) */ { + public: + inline ResTarget() : ResTarget(nullptr) {} + virtual ~ResTarget(); + + ResTarget(const ResTarget& from); + ResTarget(ResTarget&& from) noexcept + : ResTarget() { + *this = ::std::move(from); + } + + inline ResTarget& operator=(const ResTarget& from) { + CopyFrom(from); + return *this; + } + inline ResTarget& operator=(ResTarget&& from) noexcept { + if (GetArena() == from.GetArena()) { + if (this != &from) InternalSwap(&from); + } else { + CopyFrom(from); + } + return *this; + } + + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { + return GetDescriptor(); + } + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { + return GetMetadataStatic().descriptor; + } + static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { + return GetMetadataStatic().reflection; + } + static const ResTarget& default_instance(); + + static inline const ResTarget* internal_default_instance() { + return reinterpret_cast( + &_ResTarget_default_instance_); + } + static constexpr int kIndexInFileMessages = + 187; + + friend void swap(ResTarget& a, ResTarget& b) { + a.Swap(&b); + } + inline void Swap(ResTarget* other) { + if (other == this) return; + if (GetArena() == other->GetArena()) { + InternalSwap(other); + } else { + ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); + } + } + void UnsafeArenaSwap(ResTarget* other) { + if (other == this) return; + GOOGLE_DCHECK(GetArena() == other->GetArena()); + InternalSwap(other); + } + + // implements Message ---------------------------------------------- + + inline ResTarget* New() const final { + return CreateMaybeMessage(nullptr); + } + + ResTarget* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { + return CreateMaybeMessage(arena); + } + void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void CopyFrom(const ResTarget& from); + void MergeFrom(const ResTarget& from); + PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; + bool IsInitialized() const final; + + size_t ByteSizeLong() const final; + const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; + ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( + ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; + int GetCachedSize() const final { return _cached_size_.Get(); } + + private: + inline void SharedCtor(); + inline void SharedDtor(); + void SetCachedSize(int size) const final; + void InternalSwap(ResTarget* other); + friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; + static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { + return "pg_query.ResTarget"; + } + protected: + explicit ResTarget(::PROTOBUF_NAMESPACE_ID::Arena* arena); + private: + static void ArenaDtor(void* object); + inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); + public: + + ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; + private: + static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { + ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); + return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; + } + + public: + + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + + enum : int { + kIndirectionFieldNumber = 2, + kNameFieldNumber = 1, + kValFieldNumber = 3, + kLocationFieldNumber = 4, + }; + // repeated .pg_query.Node indirection = 2 [json_name = "indirection"]; + int indirection_size() const; + private: + int _internal_indirection_size() const; + public: + void clear_indirection(); + ::pg_query::Node* mutable_indirection(int index); + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* + mutable_indirection(); + private: + const ::pg_query::Node& _internal_indirection(int index) const; + ::pg_query::Node* _internal_add_indirection(); + public: + const ::pg_query::Node& indirection(int index) const; + ::pg_query::Node* add_indirection(); + const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& + indirection() const; + + // string name = 1 [json_name = "name"]; + void clear_name(); + const std::string& name() const; + void set_name(const std::string& value); + void set_name(std::string&& value); + void set_name(const char* value); + void set_name(const char* value, size_t size); + std::string* mutable_name(); + std::string* release_name(); + void set_allocated_name(std::string* name); + private: + const std::string& _internal_name() const; + void _internal_set_name(const std::string& value); + std::string* _internal_mutable_name(); + public: + + // .pg_query.Node val = 3 [json_name = "val"]; + bool has_val() const; + private: + bool _internal_has_val() const; + public: + void clear_val(); + const ::pg_query::Node& val() const; + ::pg_query::Node* release_val(); + ::pg_query::Node* mutable_val(); + void set_allocated_val(::pg_query::Node* val); + private: + const ::pg_query::Node& _internal_val() const; + ::pg_query::Node* _internal_mutable_val(); + public: + void unsafe_arena_set_allocated_val( + ::pg_query::Node* val); + ::pg_query::Node* unsafe_arena_release_val(); + + // int32 location = 4 [json_name = "location"]; + void clear_location(); + ::PROTOBUF_NAMESPACE_ID::int32 location() const; + void set_location(::PROTOBUF_NAMESPACE_ID::int32 value); + private: + ::PROTOBUF_NAMESPACE_ID::int32 _internal_location() const; + void _internal_set_location(::PROTOBUF_NAMESPACE_ID::int32 value); + public: + + // @@protoc_insertion_point(class_scope:pg_query.ResTarget) + private: + class _Internal; + + template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; + typedef void InternalArenaConstructable_; + typedef void DestructorSkippable_; + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > indirection_; + ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr name_; + ::pg_query::Node* val_; + ::PROTOBUF_NAMESPACE_ID::int32 location_; + mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; + friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; +}; +// ------------------------------------------------------------------- + +class MultiAssignRef PROTOBUF_FINAL : + public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.MultiAssignRef) */ { + public: + inline MultiAssignRef() : MultiAssignRef(nullptr) {} + virtual ~MultiAssignRef(); + + MultiAssignRef(const MultiAssignRef& from); + MultiAssignRef(MultiAssignRef&& from) noexcept + : MultiAssignRef() { + *this = ::std::move(from); + } + + inline MultiAssignRef& operator=(const MultiAssignRef& from) { + CopyFrom(from); + return *this; + } + inline MultiAssignRef& operator=(MultiAssignRef&& from) noexcept { + if (GetArena() == from.GetArena()) { + if (this != &from) InternalSwap(&from); + } else { + CopyFrom(from); + } + return *this; + } + + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { + return GetDescriptor(); + } + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { + return GetMetadataStatic().descriptor; + } + static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { + return GetMetadataStatic().reflection; + } + static const MultiAssignRef& default_instance(); + + static inline const MultiAssignRef* internal_default_instance() { + return reinterpret_cast( + &_MultiAssignRef_default_instance_); + } + static constexpr int kIndexInFileMessages = + 188; + + friend void swap(MultiAssignRef& a, MultiAssignRef& b) { + a.Swap(&b); + } + inline void Swap(MultiAssignRef* other) { + if (other == this) return; + if (GetArena() == other->GetArena()) { + InternalSwap(other); + } else { + ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); + } + } + void UnsafeArenaSwap(MultiAssignRef* other) { + if (other == this) return; + GOOGLE_DCHECK(GetArena() == other->GetArena()); + InternalSwap(other); + } + + // implements Message ---------------------------------------------- + + inline MultiAssignRef* New() const final { + return CreateMaybeMessage(nullptr); + } + + MultiAssignRef* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { + return CreateMaybeMessage(arena); + } + void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void CopyFrom(const MultiAssignRef& from); + void MergeFrom(const MultiAssignRef& from); + PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; + bool IsInitialized() const final; + + size_t ByteSizeLong() const final; + const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; + ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( + ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; + int GetCachedSize() const final { return _cached_size_.Get(); } + + private: + inline void SharedCtor(); + inline void SharedDtor(); + void SetCachedSize(int size) const final; + void InternalSwap(MultiAssignRef* other); + friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; + static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { + return "pg_query.MultiAssignRef"; + } + protected: + explicit MultiAssignRef(::PROTOBUF_NAMESPACE_ID::Arena* arena); + private: + static void ArenaDtor(void* object); + inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); + public: + + ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; + private: + static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { + ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); + return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; + } + + public: + + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + + enum : int { + kSourceFieldNumber = 1, + kColnoFieldNumber = 2, + kNcolumnsFieldNumber = 3, + }; + // .pg_query.Node source = 1 [json_name = "source"]; + bool has_source() const; + private: + bool _internal_has_source() const; + public: + void clear_source(); + const ::pg_query::Node& source() const; + ::pg_query::Node* release_source(); + ::pg_query::Node* mutable_source(); + void set_allocated_source(::pg_query::Node* source); + private: + const ::pg_query::Node& _internal_source() const; + ::pg_query::Node* _internal_mutable_source(); + public: + void unsafe_arena_set_allocated_source( + ::pg_query::Node* source); + ::pg_query::Node* unsafe_arena_release_source(); + + // int32 colno = 2 [json_name = "colno"]; + void clear_colno(); + ::PROTOBUF_NAMESPACE_ID::int32 colno() const; + void set_colno(::PROTOBUF_NAMESPACE_ID::int32 value); + private: + ::PROTOBUF_NAMESPACE_ID::int32 _internal_colno() const; + void _internal_set_colno(::PROTOBUF_NAMESPACE_ID::int32 value); + public: + + // int32 ncolumns = 3 [json_name = "ncolumns"]; + void clear_ncolumns(); + ::PROTOBUF_NAMESPACE_ID::int32 ncolumns() const; + void set_ncolumns(::PROTOBUF_NAMESPACE_ID::int32 value); + private: + ::PROTOBUF_NAMESPACE_ID::int32 _internal_ncolumns() const; + void _internal_set_ncolumns(::PROTOBUF_NAMESPACE_ID::int32 value); + public: + + // @@protoc_insertion_point(class_scope:pg_query.MultiAssignRef) + private: + class _Internal; + + template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; + typedef void InternalArenaConstructable_; + typedef void DestructorSkippable_; + ::pg_query::Node* source_; + ::PROTOBUF_NAMESPACE_ID::int32 colno_; + ::PROTOBUF_NAMESPACE_ID::int32 ncolumns_; + mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; + friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; +}; +// ------------------------------------------------------------------- + +class TypeCast PROTOBUF_FINAL : + public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.TypeCast) */ { + public: + inline TypeCast() : TypeCast(nullptr) {} + virtual ~TypeCast(); + + TypeCast(const TypeCast& from); + TypeCast(TypeCast&& from) noexcept + : TypeCast() { + *this = ::std::move(from); + } + + inline TypeCast& operator=(const TypeCast& from) { + CopyFrom(from); + return *this; + } + inline TypeCast& operator=(TypeCast&& from) noexcept { + if (GetArena() == from.GetArena()) { + if (this != &from) InternalSwap(&from); + } else { + CopyFrom(from); + } + return *this; + } + + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { + return GetDescriptor(); + } + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { + return GetMetadataStatic().descriptor; + } + static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { + return GetMetadataStatic().reflection; + } + static const TypeCast& default_instance(); + + static inline const TypeCast* internal_default_instance() { + return reinterpret_cast( + &_TypeCast_default_instance_); + } + static constexpr int kIndexInFileMessages = + 189; + + friend void swap(TypeCast& a, TypeCast& b) { + a.Swap(&b); + } + inline void Swap(TypeCast* other) { + if (other == this) return; + if (GetArena() == other->GetArena()) { + InternalSwap(other); + } else { + ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); + } + } + void UnsafeArenaSwap(TypeCast* other) { + if (other == this) return; + GOOGLE_DCHECK(GetArena() == other->GetArena()); + InternalSwap(other); + } + + // implements Message ---------------------------------------------- + + inline TypeCast* New() const final { + return CreateMaybeMessage(nullptr); + } + + TypeCast* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { + return CreateMaybeMessage(arena); + } + void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void CopyFrom(const TypeCast& from); + void MergeFrom(const TypeCast& from); + PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; + bool IsInitialized() const final; + + size_t ByteSizeLong() const final; + const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; + ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( + ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; + int GetCachedSize() const final { return _cached_size_.Get(); } + + private: + inline void SharedCtor(); + inline void SharedDtor(); + void SetCachedSize(int size) const final; + void InternalSwap(TypeCast* other); + friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; + static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { + return "pg_query.TypeCast"; + } + protected: + explicit TypeCast(::PROTOBUF_NAMESPACE_ID::Arena* arena); + private: + static void ArenaDtor(void* object); + inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); + public: + + ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; + private: + static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { + ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); + return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; + } + + public: + + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + + enum : int { + kArgFieldNumber = 1, + kTypeNameFieldNumber = 2, + kLocationFieldNumber = 3, + }; + // .pg_query.Node arg = 1 [json_name = "arg"]; + bool has_arg() const; + private: + bool _internal_has_arg() const; + public: + void clear_arg(); + const ::pg_query::Node& arg() const; + ::pg_query::Node* release_arg(); + ::pg_query::Node* mutable_arg(); + void set_allocated_arg(::pg_query::Node* arg); + private: + const ::pg_query::Node& _internal_arg() const; + ::pg_query::Node* _internal_mutable_arg(); + public: + void unsafe_arena_set_allocated_arg( + ::pg_query::Node* arg); + ::pg_query::Node* unsafe_arena_release_arg(); + + // .pg_query.TypeName type_name = 2 [json_name = "typeName"]; + bool has_type_name() const; + private: + bool _internal_has_type_name() const; + public: + void clear_type_name(); + const ::pg_query::TypeName& type_name() const; + ::pg_query::TypeName* release_type_name(); + ::pg_query::TypeName* mutable_type_name(); + void set_allocated_type_name(::pg_query::TypeName* type_name); + private: + const ::pg_query::TypeName& _internal_type_name() const; + ::pg_query::TypeName* _internal_mutable_type_name(); + public: + void unsafe_arena_set_allocated_type_name( + ::pg_query::TypeName* type_name); + ::pg_query::TypeName* unsafe_arena_release_type_name(); + + // int32 location = 3 [json_name = "location"]; + void clear_location(); + ::PROTOBUF_NAMESPACE_ID::int32 location() const; + void set_location(::PROTOBUF_NAMESPACE_ID::int32 value); + private: + ::PROTOBUF_NAMESPACE_ID::int32 _internal_location() const; + void _internal_set_location(::PROTOBUF_NAMESPACE_ID::int32 value); + public: + + // @@protoc_insertion_point(class_scope:pg_query.TypeCast) + private: + class _Internal; + + template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; + typedef void InternalArenaConstructable_; + typedef void DestructorSkippable_; + ::pg_query::Node* arg_; + ::pg_query::TypeName* type_name_; + ::PROTOBUF_NAMESPACE_ID::int32 location_; + mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; + friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; +}; +// ------------------------------------------------------------------- + +class CollateClause PROTOBUF_FINAL : + public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.CollateClause) */ { + public: + inline CollateClause() : CollateClause(nullptr) {} + virtual ~CollateClause(); + + CollateClause(const CollateClause& from); + CollateClause(CollateClause&& from) noexcept + : CollateClause() { + *this = ::std::move(from); + } + + inline CollateClause& operator=(const CollateClause& from) { + CopyFrom(from); + return *this; + } + inline CollateClause& operator=(CollateClause&& from) noexcept { + if (GetArena() == from.GetArena()) { + if (this != &from) InternalSwap(&from); + } else { + CopyFrom(from); + } + return *this; + } + + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { + return GetDescriptor(); + } + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { + return GetMetadataStatic().descriptor; + } + static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { + return GetMetadataStatic().reflection; + } + static const CollateClause& default_instance(); + + static inline const CollateClause* internal_default_instance() { + return reinterpret_cast( + &_CollateClause_default_instance_); + } + static constexpr int kIndexInFileMessages = + 190; + + friend void swap(CollateClause& a, CollateClause& b) { + a.Swap(&b); + } + inline void Swap(CollateClause* other) { + if (other == this) return; + if (GetArena() == other->GetArena()) { + InternalSwap(other); + } else { + ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); + } + } + void UnsafeArenaSwap(CollateClause* other) { + if (other == this) return; + GOOGLE_DCHECK(GetArena() == other->GetArena()); + InternalSwap(other); + } + + // implements Message ---------------------------------------------- + + inline CollateClause* New() const final { + return CreateMaybeMessage(nullptr); + } + + CollateClause* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { + return CreateMaybeMessage(arena); + } + void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void CopyFrom(const CollateClause& from); + void MergeFrom(const CollateClause& from); + PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; + bool IsInitialized() const final; + + size_t ByteSizeLong() const final; + const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; + ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( + ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; + int GetCachedSize() const final { return _cached_size_.Get(); } + + private: + inline void SharedCtor(); + inline void SharedDtor(); + void SetCachedSize(int size) const final; + void InternalSwap(CollateClause* other); + friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; + static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { + return "pg_query.CollateClause"; + } + protected: + explicit CollateClause(::PROTOBUF_NAMESPACE_ID::Arena* arena); + private: + static void ArenaDtor(void* object); + inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); + public: + + ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; + private: + static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { + ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); + return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; + } + + public: + + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + + enum : int { + kCollnameFieldNumber = 2, + kArgFieldNumber = 1, + kLocationFieldNumber = 3, + }; + // repeated .pg_query.Node collname = 2 [json_name = "collname"]; + int collname_size() const; + private: + int _internal_collname_size() const; + public: + void clear_collname(); + ::pg_query::Node* mutable_collname(int index); + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* + mutable_collname(); + private: + const ::pg_query::Node& _internal_collname(int index) const; + ::pg_query::Node* _internal_add_collname(); + public: + const ::pg_query::Node& collname(int index) const; + ::pg_query::Node* add_collname(); + const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& + collname() const; + + // .pg_query.Node arg = 1 [json_name = "arg"]; + bool has_arg() const; + private: + bool _internal_has_arg() const; + public: + void clear_arg(); + const ::pg_query::Node& arg() const; + ::pg_query::Node* release_arg(); + ::pg_query::Node* mutable_arg(); + void set_allocated_arg(::pg_query::Node* arg); + private: + const ::pg_query::Node& _internal_arg() const; + ::pg_query::Node* _internal_mutable_arg(); + public: + void unsafe_arena_set_allocated_arg( + ::pg_query::Node* arg); + ::pg_query::Node* unsafe_arena_release_arg(); + + // int32 location = 3 [json_name = "location"]; + void clear_location(); + ::PROTOBUF_NAMESPACE_ID::int32 location() const; + void set_location(::PROTOBUF_NAMESPACE_ID::int32 value); + private: + ::PROTOBUF_NAMESPACE_ID::int32 _internal_location() const; + void _internal_set_location(::PROTOBUF_NAMESPACE_ID::int32 value); + public: + + // @@protoc_insertion_point(class_scope:pg_query.CollateClause) + private: + class _Internal; + + template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; + typedef void InternalArenaConstructable_; + typedef void DestructorSkippable_; + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > collname_; + ::pg_query::Node* arg_; + ::PROTOBUF_NAMESPACE_ID::int32 location_; + mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; + friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; +}; +// ------------------------------------------------------------------- + +class SortBy PROTOBUF_FINAL : + public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.SortBy) */ { + public: + inline SortBy() : SortBy(nullptr) {} + virtual ~SortBy(); + + SortBy(const SortBy& from); + SortBy(SortBy&& from) noexcept + : SortBy() { + *this = ::std::move(from); + } + + inline SortBy& operator=(const SortBy& from) { + CopyFrom(from); + return *this; + } + inline SortBy& operator=(SortBy&& from) noexcept { + if (GetArena() == from.GetArena()) { + if (this != &from) InternalSwap(&from); + } else { + CopyFrom(from); + } + return *this; + } + + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { + return GetDescriptor(); + } + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { + return GetMetadataStatic().descriptor; + } + static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { + return GetMetadataStatic().reflection; + } + static const SortBy& default_instance(); + + static inline const SortBy* internal_default_instance() { + return reinterpret_cast( + &_SortBy_default_instance_); + } + static constexpr int kIndexInFileMessages = + 191; + + friend void swap(SortBy& a, SortBy& b) { + a.Swap(&b); + } + inline void Swap(SortBy* other) { + if (other == this) return; + if (GetArena() == other->GetArena()) { + InternalSwap(other); + } else { + ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); + } + } + void UnsafeArenaSwap(SortBy* other) { + if (other == this) return; + GOOGLE_DCHECK(GetArena() == other->GetArena()); + InternalSwap(other); + } + + // implements Message ---------------------------------------------- + + inline SortBy* New() const final { + return CreateMaybeMessage(nullptr); + } + + SortBy* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { + return CreateMaybeMessage(arena); + } + void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void CopyFrom(const SortBy& from); + void MergeFrom(const SortBy& from); + PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; + bool IsInitialized() const final; + + size_t ByteSizeLong() const final; + const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; + ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( + ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; + int GetCachedSize() const final { return _cached_size_.Get(); } + + private: + inline void SharedCtor(); + inline void SharedDtor(); + void SetCachedSize(int size) const final; + void InternalSwap(SortBy* other); + friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; + static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { + return "pg_query.SortBy"; + } + protected: + explicit SortBy(::PROTOBUF_NAMESPACE_ID::Arena* arena); + private: + static void ArenaDtor(void* object); + inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); + public: + + ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; + private: + static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { + ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); + return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; + } + + public: + + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + + enum : int { + kUseOpFieldNumber = 4, + kNodeFieldNumber = 1, + kSortbyDirFieldNumber = 2, + kSortbyNullsFieldNumber = 3, + kLocationFieldNumber = 5, + }; + // repeated .pg_query.Node use_op = 4 [json_name = "useOp"]; + int use_op_size() const; + private: + int _internal_use_op_size() const; + public: + void clear_use_op(); + ::pg_query::Node* mutable_use_op(int index); + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* + mutable_use_op(); + private: + const ::pg_query::Node& _internal_use_op(int index) const; + ::pg_query::Node* _internal_add_use_op(); + public: + const ::pg_query::Node& use_op(int index) const; + ::pg_query::Node* add_use_op(); + const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& + use_op() const; + + // .pg_query.Node node = 1 [json_name = "node"]; + bool has_node() const; + private: + bool _internal_has_node() const; + public: + void clear_node(); + const ::pg_query::Node& node() const; + ::pg_query::Node* release_node(); + ::pg_query::Node* mutable_node(); + void set_allocated_node(::pg_query::Node* node); + private: + const ::pg_query::Node& _internal_node() const; + ::pg_query::Node* _internal_mutable_node(); + public: + void unsafe_arena_set_allocated_node( + ::pg_query::Node* node); + ::pg_query::Node* unsafe_arena_release_node(); + + // .pg_query.SortByDir sortby_dir = 2 [json_name = "sortby_dir"]; + void clear_sortby_dir(); + ::pg_query::SortByDir sortby_dir() const; + void set_sortby_dir(::pg_query::SortByDir value); + private: + ::pg_query::SortByDir _internal_sortby_dir() const; + void _internal_set_sortby_dir(::pg_query::SortByDir value); + public: + + // .pg_query.SortByNulls sortby_nulls = 3 [json_name = "sortby_nulls"]; + void clear_sortby_nulls(); + ::pg_query::SortByNulls sortby_nulls() const; + void set_sortby_nulls(::pg_query::SortByNulls value); + private: + ::pg_query::SortByNulls _internal_sortby_nulls() const; + void _internal_set_sortby_nulls(::pg_query::SortByNulls value); + public: + + // int32 location = 5 [json_name = "location"]; + void clear_location(); + ::PROTOBUF_NAMESPACE_ID::int32 location() const; + void set_location(::PROTOBUF_NAMESPACE_ID::int32 value); + private: + ::PROTOBUF_NAMESPACE_ID::int32 _internal_location() const; + void _internal_set_location(::PROTOBUF_NAMESPACE_ID::int32 value); + public: + + // @@protoc_insertion_point(class_scope:pg_query.SortBy) + private: + class _Internal; + + template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; + typedef void InternalArenaConstructable_; + typedef void DestructorSkippable_; + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > use_op_; + ::pg_query::Node* node_; + int sortby_dir_; + int sortby_nulls_; + ::PROTOBUF_NAMESPACE_ID::int32 location_; + mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; + friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; +}; +// ------------------------------------------------------------------- + +class WindowDef PROTOBUF_FINAL : + public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.WindowDef) */ { + public: + inline WindowDef() : WindowDef(nullptr) {} + virtual ~WindowDef(); + + WindowDef(const WindowDef& from); + WindowDef(WindowDef&& from) noexcept + : WindowDef() { + *this = ::std::move(from); + } + + inline WindowDef& operator=(const WindowDef& from) { + CopyFrom(from); + return *this; + } + inline WindowDef& operator=(WindowDef&& from) noexcept { + if (GetArena() == from.GetArena()) { + if (this != &from) InternalSwap(&from); + } else { + CopyFrom(from); + } + return *this; + } + + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { + return GetDescriptor(); + } + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { + return GetMetadataStatic().descriptor; + } + static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { + return GetMetadataStatic().reflection; + } + static const WindowDef& default_instance(); + + static inline const WindowDef* internal_default_instance() { + return reinterpret_cast( + &_WindowDef_default_instance_); + } + static constexpr int kIndexInFileMessages = + 192; + + friend void swap(WindowDef& a, WindowDef& b) { + a.Swap(&b); + } + inline void Swap(WindowDef* other) { + if (other == this) return; + if (GetArena() == other->GetArena()) { + InternalSwap(other); + } else { + ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); + } + } + void UnsafeArenaSwap(WindowDef* other) { + if (other == this) return; + GOOGLE_DCHECK(GetArena() == other->GetArena()); + InternalSwap(other); + } + + // implements Message ---------------------------------------------- + + inline WindowDef* New() const final { + return CreateMaybeMessage(nullptr); + } + + WindowDef* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { + return CreateMaybeMessage(arena); + } + void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void CopyFrom(const WindowDef& from); + void MergeFrom(const WindowDef& from); + PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; + bool IsInitialized() const final; + + size_t ByteSizeLong() const final; + const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; + ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( + ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; + int GetCachedSize() const final { return _cached_size_.Get(); } + + private: + inline void SharedCtor(); + inline void SharedDtor(); + void SetCachedSize(int size) const final; + void InternalSwap(WindowDef* other); + friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; + static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { + return "pg_query.WindowDef"; + } + protected: + explicit WindowDef(::PROTOBUF_NAMESPACE_ID::Arena* arena); + private: + static void ArenaDtor(void* object); + inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); + public: + + ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; + private: + static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { + ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); + return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; + } + + public: + + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + + enum : int { + kPartitionClauseFieldNumber = 3, + kOrderClauseFieldNumber = 4, + kNameFieldNumber = 1, + kRefnameFieldNumber = 2, + kStartOffsetFieldNumber = 6, + kEndOffsetFieldNumber = 7, + kFrameOptionsFieldNumber = 5, + kLocationFieldNumber = 8, + }; + // repeated .pg_query.Node partition_clause = 3 [json_name = "partitionClause"]; + int partition_clause_size() const; + private: + int _internal_partition_clause_size() const; + public: + void clear_partition_clause(); + ::pg_query::Node* mutable_partition_clause(int index); + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* + mutable_partition_clause(); + private: + const ::pg_query::Node& _internal_partition_clause(int index) const; + ::pg_query::Node* _internal_add_partition_clause(); + public: + const ::pg_query::Node& partition_clause(int index) const; + ::pg_query::Node* add_partition_clause(); + const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& + partition_clause() const; + + // repeated .pg_query.Node order_clause = 4 [json_name = "orderClause"]; + int order_clause_size() const; + private: + int _internal_order_clause_size() const; + public: + void clear_order_clause(); + ::pg_query::Node* mutable_order_clause(int index); + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* + mutable_order_clause(); + private: + const ::pg_query::Node& _internal_order_clause(int index) const; + ::pg_query::Node* _internal_add_order_clause(); + public: + const ::pg_query::Node& order_clause(int index) const; + ::pg_query::Node* add_order_clause(); + const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& + order_clause() const; + + // string name = 1 [json_name = "name"]; + void clear_name(); + const std::string& name() const; + void set_name(const std::string& value); + void set_name(std::string&& value); + void set_name(const char* value); + void set_name(const char* value, size_t size); + std::string* mutable_name(); + std::string* release_name(); + void set_allocated_name(std::string* name); + private: + const std::string& _internal_name() const; + void _internal_set_name(const std::string& value); + std::string* _internal_mutable_name(); + public: + + // string refname = 2 [json_name = "refname"]; + void clear_refname(); + const std::string& refname() const; + void set_refname(const std::string& value); + void set_refname(std::string&& value); + void set_refname(const char* value); + void set_refname(const char* value, size_t size); + std::string* mutable_refname(); + std::string* release_refname(); + void set_allocated_refname(std::string* refname); + private: + const std::string& _internal_refname() const; + void _internal_set_refname(const std::string& value); + std::string* _internal_mutable_refname(); + public: + + // .pg_query.Node start_offset = 6 [json_name = "startOffset"]; + bool has_start_offset() const; + private: + bool _internal_has_start_offset() const; + public: + void clear_start_offset(); + const ::pg_query::Node& start_offset() const; + ::pg_query::Node* release_start_offset(); + ::pg_query::Node* mutable_start_offset(); + void set_allocated_start_offset(::pg_query::Node* start_offset); + private: + const ::pg_query::Node& _internal_start_offset() const; + ::pg_query::Node* _internal_mutable_start_offset(); + public: + void unsafe_arena_set_allocated_start_offset( + ::pg_query::Node* start_offset); + ::pg_query::Node* unsafe_arena_release_start_offset(); + + // .pg_query.Node end_offset = 7 [json_name = "endOffset"]; + bool has_end_offset() const; + private: + bool _internal_has_end_offset() const; + public: + void clear_end_offset(); + const ::pg_query::Node& end_offset() const; + ::pg_query::Node* release_end_offset(); + ::pg_query::Node* mutable_end_offset(); + void set_allocated_end_offset(::pg_query::Node* end_offset); + private: + const ::pg_query::Node& _internal_end_offset() const; + ::pg_query::Node* _internal_mutable_end_offset(); + public: + void unsafe_arena_set_allocated_end_offset( + ::pg_query::Node* end_offset); + ::pg_query::Node* unsafe_arena_release_end_offset(); + + // int32 frame_options = 5 [json_name = "frameOptions"]; + void clear_frame_options(); + ::PROTOBUF_NAMESPACE_ID::int32 frame_options() const; + void set_frame_options(::PROTOBUF_NAMESPACE_ID::int32 value); + private: + ::PROTOBUF_NAMESPACE_ID::int32 _internal_frame_options() const; + void _internal_set_frame_options(::PROTOBUF_NAMESPACE_ID::int32 value); + public: + + // int32 location = 8 [json_name = "location"]; + void clear_location(); + ::PROTOBUF_NAMESPACE_ID::int32 location() const; + void set_location(::PROTOBUF_NAMESPACE_ID::int32 value); + private: + ::PROTOBUF_NAMESPACE_ID::int32 _internal_location() const; + void _internal_set_location(::PROTOBUF_NAMESPACE_ID::int32 value); + public: + + // @@protoc_insertion_point(class_scope:pg_query.WindowDef) + private: + class _Internal; + + template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; + typedef void InternalArenaConstructable_; + typedef void DestructorSkippable_; + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > partition_clause_; + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > order_clause_; + ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr name_; + ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr refname_; + ::pg_query::Node* start_offset_; + ::pg_query::Node* end_offset_; + ::PROTOBUF_NAMESPACE_ID::int32 frame_options_; + ::PROTOBUF_NAMESPACE_ID::int32 location_; + mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; + friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; +}; +// ------------------------------------------------------------------- + +class RangeSubselect PROTOBUF_FINAL : + public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.RangeSubselect) */ { + public: + inline RangeSubselect() : RangeSubselect(nullptr) {} + virtual ~RangeSubselect(); + + RangeSubselect(const RangeSubselect& from); + RangeSubselect(RangeSubselect&& from) noexcept + : RangeSubselect() { + *this = ::std::move(from); + } + + inline RangeSubselect& operator=(const RangeSubselect& from) { + CopyFrom(from); + return *this; + } + inline RangeSubselect& operator=(RangeSubselect&& from) noexcept { + if (GetArena() == from.GetArena()) { + if (this != &from) InternalSwap(&from); + } else { + CopyFrom(from); + } + return *this; + } + + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { + return GetDescriptor(); + } + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { + return GetMetadataStatic().descriptor; + } + static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { + return GetMetadataStatic().reflection; + } + static const RangeSubselect& default_instance(); + + static inline const RangeSubselect* internal_default_instance() { + return reinterpret_cast( + &_RangeSubselect_default_instance_); + } + static constexpr int kIndexInFileMessages = + 193; + + friend void swap(RangeSubselect& a, RangeSubselect& b) { + a.Swap(&b); + } + inline void Swap(RangeSubselect* other) { + if (other == this) return; + if (GetArena() == other->GetArena()) { + InternalSwap(other); + } else { + ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); + } + } + void UnsafeArenaSwap(RangeSubselect* other) { + if (other == this) return; + GOOGLE_DCHECK(GetArena() == other->GetArena()); + InternalSwap(other); + } + + // implements Message ---------------------------------------------- + + inline RangeSubselect* New() const final { + return CreateMaybeMessage(nullptr); + } + + RangeSubselect* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { + return CreateMaybeMessage(arena); + } + void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void CopyFrom(const RangeSubselect& from); + void MergeFrom(const RangeSubselect& from); + PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; + bool IsInitialized() const final; + + size_t ByteSizeLong() const final; + const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; + ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( + ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; + int GetCachedSize() const final { return _cached_size_.Get(); } + + private: + inline void SharedCtor(); + inline void SharedDtor(); + void SetCachedSize(int size) const final; + void InternalSwap(RangeSubselect* other); + friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; + static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { + return "pg_query.RangeSubselect"; + } + protected: + explicit RangeSubselect(::PROTOBUF_NAMESPACE_ID::Arena* arena); + private: + static void ArenaDtor(void* object); + inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); + public: + + ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; + private: + static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { + ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); + return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; + } + + public: + + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + + enum : int { + kSubqueryFieldNumber = 2, + kAliasFieldNumber = 3, + kLateralFieldNumber = 1, + }; + // .pg_query.Node subquery = 2 [json_name = "subquery"]; + bool has_subquery() const; + private: + bool _internal_has_subquery() const; + public: + void clear_subquery(); + const ::pg_query::Node& subquery() const; + ::pg_query::Node* release_subquery(); + ::pg_query::Node* mutable_subquery(); + void set_allocated_subquery(::pg_query::Node* subquery); + private: + const ::pg_query::Node& _internal_subquery() const; + ::pg_query::Node* _internal_mutable_subquery(); + public: + void unsafe_arena_set_allocated_subquery( + ::pg_query::Node* subquery); + ::pg_query::Node* unsafe_arena_release_subquery(); + + // .pg_query.Alias alias = 3 [json_name = "alias"]; + bool has_alias() const; + private: + bool _internal_has_alias() const; + public: + void clear_alias(); + const ::pg_query::Alias& alias() const; + ::pg_query::Alias* release_alias(); + ::pg_query::Alias* mutable_alias(); + void set_allocated_alias(::pg_query::Alias* alias); + private: + const ::pg_query::Alias& _internal_alias() const; + ::pg_query::Alias* _internal_mutable_alias(); + public: + void unsafe_arena_set_allocated_alias( + ::pg_query::Alias* alias); + ::pg_query::Alias* unsafe_arena_release_alias(); + + // bool lateral = 1 [json_name = "lateral"]; + void clear_lateral(); + bool lateral() const; + void set_lateral(bool value); + private: + bool _internal_lateral() const; + void _internal_set_lateral(bool value); + public: + + // @@protoc_insertion_point(class_scope:pg_query.RangeSubselect) + private: + class _Internal; + + template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; + typedef void InternalArenaConstructable_; + typedef void DestructorSkippable_; + ::pg_query::Node* subquery_; + ::pg_query::Alias* alias_; + bool lateral_; + mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; + friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; +}; +// ------------------------------------------------------------------- + +class RangeFunction PROTOBUF_FINAL : + public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.RangeFunction) */ { + public: + inline RangeFunction() : RangeFunction(nullptr) {} + virtual ~RangeFunction(); + + RangeFunction(const RangeFunction& from); + RangeFunction(RangeFunction&& from) noexcept + : RangeFunction() { + *this = ::std::move(from); + } + + inline RangeFunction& operator=(const RangeFunction& from) { + CopyFrom(from); + return *this; + } + inline RangeFunction& operator=(RangeFunction&& from) noexcept { + if (GetArena() == from.GetArena()) { + if (this != &from) InternalSwap(&from); + } else { + CopyFrom(from); + } + return *this; + } + + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { + return GetDescriptor(); + } + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { + return GetMetadataStatic().descriptor; + } + static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { + return GetMetadataStatic().reflection; + } + static const RangeFunction& default_instance(); + + static inline const RangeFunction* internal_default_instance() { + return reinterpret_cast( + &_RangeFunction_default_instance_); + } + static constexpr int kIndexInFileMessages = + 194; + + friend void swap(RangeFunction& a, RangeFunction& b) { + a.Swap(&b); + } + inline void Swap(RangeFunction* other) { + if (other == this) return; + if (GetArena() == other->GetArena()) { + InternalSwap(other); + } else { + ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); + } + } + void UnsafeArenaSwap(RangeFunction* other) { + if (other == this) return; + GOOGLE_DCHECK(GetArena() == other->GetArena()); + InternalSwap(other); + } + + // implements Message ---------------------------------------------- + + inline RangeFunction* New() const final { + return CreateMaybeMessage(nullptr); + } + + RangeFunction* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { + return CreateMaybeMessage(arena); + } + void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void CopyFrom(const RangeFunction& from); + void MergeFrom(const RangeFunction& from); + PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; + bool IsInitialized() const final; + + size_t ByteSizeLong() const final; + const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; + ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( + ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; + int GetCachedSize() const final { return _cached_size_.Get(); } + + private: + inline void SharedCtor(); + inline void SharedDtor(); + void SetCachedSize(int size) const final; + void InternalSwap(RangeFunction* other); + friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; + static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { + return "pg_query.RangeFunction"; + } + protected: + explicit RangeFunction(::PROTOBUF_NAMESPACE_ID::Arena* arena); + private: + static void ArenaDtor(void* object); + inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); + public: + + ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; + private: + static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { + ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); + return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; + } + + public: + + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + + enum : int { + kFunctionsFieldNumber = 4, + kColdeflistFieldNumber = 6, + kAliasFieldNumber = 5, + kLateralFieldNumber = 1, + kOrdinalityFieldNumber = 2, + kIsRowsfromFieldNumber = 3, + }; + // repeated .pg_query.Node functions = 4 [json_name = "functions"]; + int functions_size() const; + private: + int _internal_functions_size() const; + public: + void clear_functions(); + ::pg_query::Node* mutable_functions(int index); + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* + mutable_functions(); + private: + const ::pg_query::Node& _internal_functions(int index) const; + ::pg_query::Node* _internal_add_functions(); + public: + const ::pg_query::Node& functions(int index) const; + ::pg_query::Node* add_functions(); + const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& + functions() const; + + // repeated .pg_query.Node coldeflist = 6 [json_name = "coldeflist"]; + int coldeflist_size() const; + private: + int _internal_coldeflist_size() const; + public: + void clear_coldeflist(); + ::pg_query::Node* mutable_coldeflist(int index); + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* + mutable_coldeflist(); + private: + const ::pg_query::Node& _internal_coldeflist(int index) const; + ::pg_query::Node* _internal_add_coldeflist(); + public: + const ::pg_query::Node& coldeflist(int index) const; + ::pg_query::Node* add_coldeflist(); + const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& + coldeflist() const; + + // .pg_query.Alias alias = 5 [json_name = "alias"]; + bool has_alias() const; + private: + bool _internal_has_alias() const; + public: + void clear_alias(); + const ::pg_query::Alias& alias() const; + ::pg_query::Alias* release_alias(); + ::pg_query::Alias* mutable_alias(); + void set_allocated_alias(::pg_query::Alias* alias); + private: + const ::pg_query::Alias& _internal_alias() const; + ::pg_query::Alias* _internal_mutable_alias(); + public: + void unsafe_arena_set_allocated_alias( + ::pg_query::Alias* alias); + ::pg_query::Alias* unsafe_arena_release_alias(); + + // bool lateral = 1 [json_name = "lateral"]; + void clear_lateral(); + bool lateral() const; + void set_lateral(bool value); + private: + bool _internal_lateral() const; + void _internal_set_lateral(bool value); + public: + + // bool ordinality = 2 [json_name = "ordinality"]; + void clear_ordinality(); + bool ordinality() const; + void set_ordinality(bool value); + private: + bool _internal_ordinality() const; + void _internal_set_ordinality(bool value); + public: + + // bool is_rowsfrom = 3 [json_name = "is_rowsfrom"]; + void clear_is_rowsfrom(); + bool is_rowsfrom() const; + void set_is_rowsfrom(bool value); + private: + bool _internal_is_rowsfrom() const; + void _internal_set_is_rowsfrom(bool value); + public: + + // @@protoc_insertion_point(class_scope:pg_query.RangeFunction) + private: + class _Internal; + + template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; + typedef void InternalArenaConstructable_; + typedef void DestructorSkippable_; + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > functions_; + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > coldeflist_; + ::pg_query::Alias* alias_; + bool lateral_; + bool ordinality_; + bool is_rowsfrom_; + mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; + friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; +}; +// ------------------------------------------------------------------- + +class RangeTableSample PROTOBUF_FINAL : + public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.RangeTableSample) */ { + public: + inline RangeTableSample() : RangeTableSample(nullptr) {} + virtual ~RangeTableSample(); + + RangeTableSample(const RangeTableSample& from); + RangeTableSample(RangeTableSample&& from) noexcept + : RangeTableSample() { + *this = ::std::move(from); + } + + inline RangeTableSample& operator=(const RangeTableSample& from) { + CopyFrom(from); + return *this; + } + inline RangeTableSample& operator=(RangeTableSample&& from) noexcept { + if (GetArena() == from.GetArena()) { + if (this != &from) InternalSwap(&from); + } else { + CopyFrom(from); + } + return *this; + } + + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { + return GetDescriptor(); + } + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { + return GetMetadataStatic().descriptor; + } + static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { + return GetMetadataStatic().reflection; + } + static const RangeTableSample& default_instance(); + + static inline const RangeTableSample* internal_default_instance() { + return reinterpret_cast( + &_RangeTableSample_default_instance_); + } + static constexpr int kIndexInFileMessages = + 195; + + friend void swap(RangeTableSample& a, RangeTableSample& b) { + a.Swap(&b); + } + inline void Swap(RangeTableSample* other) { + if (other == this) return; + if (GetArena() == other->GetArena()) { + InternalSwap(other); + } else { + ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); + } + } + void UnsafeArenaSwap(RangeTableSample* other) { + if (other == this) return; + GOOGLE_DCHECK(GetArena() == other->GetArena()); + InternalSwap(other); + } + + // implements Message ---------------------------------------------- + + inline RangeTableSample* New() const final { + return CreateMaybeMessage(nullptr); + } + + RangeTableSample* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { + return CreateMaybeMessage(arena); + } + void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void CopyFrom(const RangeTableSample& from); + void MergeFrom(const RangeTableSample& from); + PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; + bool IsInitialized() const final; + + size_t ByteSizeLong() const final; + const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; + ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( + ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; + int GetCachedSize() const final { return _cached_size_.Get(); } + + private: + inline void SharedCtor(); + inline void SharedDtor(); + void SetCachedSize(int size) const final; + void InternalSwap(RangeTableSample* other); + friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; + static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { + return "pg_query.RangeTableSample"; + } + protected: + explicit RangeTableSample(::PROTOBUF_NAMESPACE_ID::Arena* arena); + private: + static void ArenaDtor(void* object); + inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); + public: + + ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; + private: + static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { + ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); + return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; + } + + public: + + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + + enum : int { + kMethodFieldNumber = 2, + kArgsFieldNumber = 3, + kRelationFieldNumber = 1, + kRepeatableFieldNumber = 4, + kLocationFieldNumber = 5, + }; + // repeated .pg_query.Node method = 2 [json_name = "method"]; + int method_size() const; + private: + int _internal_method_size() const; + public: + void clear_method(); + ::pg_query::Node* mutable_method(int index); + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* + mutable_method(); + private: + const ::pg_query::Node& _internal_method(int index) const; + ::pg_query::Node* _internal_add_method(); + public: + const ::pg_query::Node& method(int index) const; + ::pg_query::Node* add_method(); + const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& + method() const; + + // repeated .pg_query.Node args = 3 [json_name = "args"]; + int args_size() const; + private: + int _internal_args_size() const; + public: + void clear_args(); + ::pg_query::Node* mutable_args(int index); + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* + mutable_args(); + private: + const ::pg_query::Node& _internal_args(int index) const; + ::pg_query::Node* _internal_add_args(); + public: + const ::pg_query::Node& args(int index) const; + ::pg_query::Node* add_args(); + const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& + args() const; + + // .pg_query.Node relation = 1 [json_name = "relation"]; + bool has_relation() const; + private: + bool _internal_has_relation() const; + public: + void clear_relation(); + const ::pg_query::Node& relation() const; + ::pg_query::Node* release_relation(); + ::pg_query::Node* mutable_relation(); + void set_allocated_relation(::pg_query::Node* relation); + private: + const ::pg_query::Node& _internal_relation() const; + ::pg_query::Node* _internal_mutable_relation(); + public: + void unsafe_arena_set_allocated_relation( + ::pg_query::Node* relation); + ::pg_query::Node* unsafe_arena_release_relation(); + + // .pg_query.Node repeatable = 4 [json_name = "repeatable"]; + bool has_repeatable() const; + private: + bool _internal_has_repeatable() const; + public: + void clear_repeatable(); + const ::pg_query::Node& repeatable() const; + ::pg_query::Node* release_repeatable(); + ::pg_query::Node* mutable_repeatable(); + void set_allocated_repeatable(::pg_query::Node* repeatable); + private: + const ::pg_query::Node& _internal_repeatable() const; + ::pg_query::Node* _internal_mutable_repeatable(); + public: + void unsafe_arena_set_allocated_repeatable( + ::pg_query::Node* repeatable); + ::pg_query::Node* unsafe_arena_release_repeatable(); + + // int32 location = 5 [json_name = "location"]; + void clear_location(); + ::PROTOBUF_NAMESPACE_ID::int32 location() const; + void set_location(::PROTOBUF_NAMESPACE_ID::int32 value); + private: + ::PROTOBUF_NAMESPACE_ID::int32 _internal_location() const; + void _internal_set_location(::PROTOBUF_NAMESPACE_ID::int32 value); + public: + + // @@protoc_insertion_point(class_scope:pg_query.RangeTableSample) + private: + class _Internal; + + template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; + typedef void InternalArenaConstructable_; + typedef void DestructorSkippable_; + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > method_; + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > args_; + ::pg_query::Node* relation_; + ::pg_query::Node* repeatable_; + ::PROTOBUF_NAMESPACE_ID::int32 location_; + mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; + friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; +}; +// ------------------------------------------------------------------- + +class RangeTableFunc PROTOBUF_FINAL : + public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.RangeTableFunc) */ { + public: + inline RangeTableFunc() : RangeTableFunc(nullptr) {} + virtual ~RangeTableFunc(); + + RangeTableFunc(const RangeTableFunc& from); + RangeTableFunc(RangeTableFunc&& from) noexcept + : RangeTableFunc() { + *this = ::std::move(from); + } + + inline RangeTableFunc& operator=(const RangeTableFunc& from) { + CopyFrom(from); + return *this; + } + inline RangeTableFunc& operator=(RangeTableFunc&& from) noexcept { + if (GetArena() == from.GetArena()) { + if (this != &from) InternalSwap(&from); + } else { + CopyFrom(from); + } + return *this; + } + + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { + return GetDescriptor(); + } + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { + return GetMetadataStatic().descriptor; + } + static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { + return GetMetadataStatic().reflection; + } + static const RangeTableFunc& default_instance(); + + static inline const RangeTableFunc* internal_default_instance() { + return reinterpret_cast( + &_RangeTableFunc_default_instance_); + } + static constexpr int kIndexInFileMessages = + 196; + + friend void swap(RangeTableFunc& a, RangeTableFunc& b) { + a.Swap(&b); + } + inline void Swap(RangeTableFunc* other) { + if (other == this) return; + if (GetArena() == other->GetArena()) { + InternalSwap(other); + } else { + ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); + } + } + void UnsafeArenaSwap(RangeTableFunc* other) { + if (other == this) return; + GOOGLE_DCHECK(GetArena() == other->GetArena()); + InternalSwap(other); + } + + // implements Message ---------------------------------------------- + + inline RangeTableFunc* New() const final { + return CreateMaybeMessage(nullptr); + } + + RangeTableFunc* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { + return CreateMaybeMessage(arena); + } + void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void CopyFrom(const RangeTableFunc& from); + void MergeFrom(const RangeTableFunc& from); + PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; + bool IsInitialized() const final; + + size_t ByteSizeLong() const final; + const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; + ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( + ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; + int GetCachedSize() const final { return _cached_size_.Get(); } + + private: + inline void SharedCtor(); + inline void SharedDtor(); + void SetCachedSize(int size) const final; + void InternalSwap(RangeTableFunc* other); + friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; + static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { + return "pg_query.RangeTableFunc"; + } + protected: + explicit RangeTableFunc(::PROTOBUF_NAMESPACE_ID::Arena* arena); + private: + static void ArenaDtor(void* object); + inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); + public: + + ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; + private: + static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { + ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); + return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; + } + + public: + + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + + enum : int { + kNamespacesFieldNumber = 4, + kColumnsFieldNumber = 5, + kDocexprFieldNumber = 2, + kRowexprFieldNumber = 3, + kAliasFieldNumber = 6, + kLateralFieldNumber = 1, + kLocationFieldNumber = 7, + }; + // repeated .pg_query.Node namespaces = 4 [json_name = "namespaces"]; + int namespaces_size() const; + private: + int _internal_namespaces_size() const; + public: + void clear_namespaces(); + ::pg_query::Node* mutable_namespaces(int index); + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* + mutable_namespaces(); + private: + const ::pg_query::Node& _internal_namespaces(int index) const; + ::pg_query::Node* _internal_add_namespaces(); + public: + const ::pg_query::Node& namespaces(int index) const; + ::pg_query::Node* add_namespaces(); + const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& + namespaces() const; + + // repeated .pg_query.Node columns = 5 [json_name = "columns"]; + int columns_size() const; + private: + int _internal_columns_size() const; + public: + void clear_columns(); + ::pg_query::Node* mutable_columns(int index); + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* + mutable_columns(); + private: + const ::pg_query::Node& _internal_columns(int index) const; + ::pg_query::Node* _internal_add_columns(); + public: + const ::pg_query::Node& columns(int index) const; + ::pg_query::Node* add_columns(); + const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& + columns() const; + + // .pg_query.Node docexpr = 2 [json_name = "docexpr"]; + bool has_docexpr() const; + private: + bool _internal_has_docexpr() const; + public: + void clear_docexpr(); + const ::pg_query::Node& docexpr() const; + ::pg_query::Node* release_docexpr(); + ::pg_query::Node* mutable_docexpr(); + void set_allocated_docexpr(::pg_query::Node* docexpr); + private: + const ::pg_query::Node& _internal_docexpr() const; + ::pg_query::Node* _internal_mutable_docexpr(); + public: + void unsafe_arena_set_allocated_docexpr( + ::pg_query::Node* docexpr); + ::pg_query::Node* unsafe_arena_release_docexpr(); + + // .pg_query.Node rowexpr = 3 [json_name = "rowexpr"]; + bool has_rowexpr() const; + private: + bool _internal_has_rowexpr() const; + public: + void clear_rowexpr(); + const ::pg_query::Node& rowexpr() const; + ::pg_query::Node* release_rowexpr(); + ::pg_query::Node* mutable_rowexpr(); + void set_allocated_rowexpr(::pg_query::Node* rowexpr); + private: + const ::pg_query::Node& _internal_rowexpr() const; + ::pg_query::Node* _internal_mutable_rowexpr(); + public: + void unsafe_arena_set_allocated_rowexpr( + ::pg_query::Node* rowexpr); + ::pg_query::Node* unsafe_arena_release_rowexpr(); + + // .pg_query.Alias alias = 6 [json_name = "alias"]; + bool has_alias() const; + private: + bool _internal_has_alias() const; + public: + void clear_alias(); + const ::pg_query::Alias& alias() const; + ::pg_query::Alias* release_alias(); + ::pg_query::Alias* mutable_alias(); + void set_allocated_alias(::pg_query::Alias* alias); + private: + const ::pg_query::Alias& _internal_alias() const; + ::pg_query::Alias* _internal_mutable_alias(); + public: + void unsafe_arena_set_allocated_alias( + ::pg_query::Alias* alias); + ::pg_query::Alias* unsafe_arena_release_alias(); + + // bool lateral = 1 [json_name = "lateral"]; + void clear_lateral(); + bool lateral() const; + void set_lateral(bool value); + private: + bool _internal_lateral() const; + void _internal_set_lateral(bool value); + public: + + // int32 location = 7 [json_name = "location"]; + void clear_location(); + ::PROTOBUF_NAMESPACE_ID::int32 location() const; + void set_location(::PROTOBUF_NAMESPACE_ID::int32 value); + private: + ::PROTOBUF_NAMESPACE_ID::int32 _internal_location() const; + void _internal_set_location(::PROTOBUF_NAMESPACE_ID::int32 value); + public: + + // @@protoc_insertion_point(class_scope:pg_query.RangeTableFunc) + private: + class _Internal; + + template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; + typedef void InternalArenaConstructable_; + typedef void DestructorSkippable_; + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > namespaces_; + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > columns_; + ::pg_query::Node* docexpr_; + ::pg_query::Node* rowexpr_; + ::pg_query::Alias* alias_; + bool lateral_; + ::PROTOBUF_NAMESPACE_ID::int32 location_; + mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; + friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; +}; +// ------------------------------------------------------------------- + +class RangeTableFuncCol PROTOBUF_FINAL : + public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.RangeTableFuncCol) */ { + public: + inline RangeTableFuncCol() : RangeTableFuncCol(nullptr) {} + virtual ~RangeTableFuncCol(); + + RangeTableFuncCol(const RangeTableFuncCol& from); + RangeTableFuncCol(RangeTableFuncCol&& from) noexcept + : RangeTableFuncCol() { + *this = ::std::move(from); + } + + inline RangeTableFuncCol& operator=(const RangeTableFuncCol& from) { + CopyFrom(from); + return *this; + } + inline RangeTableFuncCol& operator=(RangeTableFuncCol&& from) noexcept { + if (GetArena() == from.GetArena()) { + if (this != &from) InternalSwap(&from); + } else { + CopyFrom(from); + } + return *this; + } + + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { + return GetDescriptor(); + } + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { + return GetMetadataStatic().descriptor; + } + static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { + return GetMetadataStatic().reflection; + } + static const RangeTableFuncCol& default_instance(); + + static inline const RangeTableFuncCol* internal_default_instance() { + return reinterpret_cast( + &_RangeTableFuncCol_default_instance_); + } + static constexpr int kIndexInFileMessages = + 197; + + friend void swap(RangeTableFuncCol& a, RangeTableFuncCol& b) { + a.Swap(&b); + } + inline void Swap(RangeTableFuncCol* other) { + if (other == this) return; + if (GetArena() == other->GetArena()) { + InternalSwap(other); + } else { + ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); + } + } + void UnsafeArenaSwap(RangeTableFuncCol* other) { + if (other == this) return; + GOOGLE_DCHECK(GetArena() == other->GetArena()); + InternalSwap(other); + } + + // implements Message ---------------------------------------------- + + inline RangeTableFuncCol* New() const final { + return CreateMaybeMessage(nullptr); + } + + RangeTableFuncCol* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { + return CreateMaybeMessage(arena); + } + void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void CopyFrom(const RangeTableFuncCol& from); + void MergeFrom(const RangeTableFuncCol& from); + PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; + bool IsInitialized() const final; + + size_t ByteSizeLong() const final; + const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; + ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( + ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; + int GetCachedSize() const final { return _cached_size_.Get(); } + + private: + inline void SharedCtor(); + inline void SharedDtor(); + void SetCachedSize(int size) const final; + void InternalSwap(RangeTableFuncCol* other); + friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; + static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { + return "pg_query.RangeTableFuncCol"; + } + protected: + explicit RangeTableFuncCol(::PROTOBUF_NAMESPACE_ID::Arena* arena); + private: + static void ArenaDtor(void* object); + inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); + public: + + ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; + private: + static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { + ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); + return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; + } + + public: + + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + + enum : int { + kColnameFieldNumber = 1, + kTypeNameFieldNumber = 2, + kColexprFieldNumber = 5, + kColdefexprFieldNumber = 6, + kForOrdinalityFieldNumber = 3, + kIsNotNullFieldNumber = 4, + kLocationFieldNumber = 7, + }; + // string colname = 1 [json_name = "colname"]; + void clear_colname(); + const std::string& colname() const; + void set_colname(const std::string& value); + void set_colname(std::string&& value); + void set_colname(const char* value); + void set_colname(const char* value, size_t size); + std::string* mutable_colname(); + std::string* release_colname(); + void set_allocated_colname(std::string* colname); + private: + const std::string& _internal_colname() const; + void _internal_set_colname(const std::string& value); + std::string* _internal_mutable_colname(); + public: + + // .pg_query.TypeName type_name = 2 [json_name = "typeName"]; + bool has_type_name() const; + private: + bool _internal_has_type_name() const; + public: + void clear_type_name(); + const ::pg_query::TypeName& type_name() const; + ::pg_query::TypeName* release_type_name(); + ::pg_query::TypeName* mutable_type_name(); + void set_allocated_type_name(::pg_query::TypeName* type_name); + private: + const ::pg_query::TypeName& _internal_type_name() const; + ::pg_query::TypeName* _internal_mutable_type_name(); + public: + void unsafe_arena_set_allocated_type_name( + ::pg_query::TypeName* type_name); + ::pg_query::TypeName* unsafe_arena_release_type_name(); + + // .pg_query.Node colexpr = 5 [json_name = "colexpr"]; + bool has_colexpr() const; + private: + bool _internal_has_colexpr() const; + public: + void clear_colexpr(); + const ::pg_query::Node& colexpr() const; + ::pg_query::Node* release_colexpr(); + ::pg_query::Node* mutable_colexpr(); + void set_allocated_colexpr(::pg_query::Node* colexpr); + private: + const ::pg_query::Node& _internal_colexpr() const; + ::pg_query::Node* _internal_mutable_colexpr(); + public: + void unsafe_arena_set_allocated_colexpr( + ::pg_query::Node* colexpr); + ::pg_query::Node* unsafe_arena_release_colexpr(); + + // .pg_query.Node coldefexpr = 6 [json_name = "coldefexpr"]; + bool has_coldefexpr() const; + private: + bool _internal_has_coldefexpr() const; + public: + void clear_coldefexpr(); + const ::pg_query::Node& coldefexpr() const; + ::pg_query::Node* release_coldefexpr(); + ::pg_query::Node* mutable_coldefexpr(); + void set_allocated_coldefexpr(::pg_query::Node* coldefexpr); + private: + const ::pg_query::Node& _internal_coldefexpr() const; + ::pg_query::Node* _internal_mutable_coldefexpr(); + public: + void unsafe_arena_set_allocated_coldefexpr( + ::pg_query::Node* coldefexpr); + ::pg_query::Node* unsafe_arena_release_coldefexpr(); + + // bool for_ordinality = 3 [json_name = "for_ordinality"]; + void clear_for_ordinality(); + bool for_ordinality() const; + void set_for_ordinality(bool value); + private: + bool _internal_for_ordinality() const; + void _internal_set_for_ordinality(bool value); + public: + + // bool is_not_null = 4 [json_name = "is_not_null"]; + void clear_is_not_null(); + bool is_not_null() const; + void set_is_not_null(bool value); + private: + bool _internal_is_not_null() const; + void _internal_set_is_not_null(bool value); + public: + + // int32 location = 7 [json_name = "location"]; + void clear_location(); + ::PROTOBUF_NAMESPACE_ID::int32 location() const; + void set_location(::PROTOBUF_NAMESPACE_ID::int32 value); + private: + ::PROTOBUF_NAMESPACE_ID::int32 _internal_location() const; + void _internal_set_location(::PROTOBUF_NAMESPACE_ID::int32 value); + public: + + // @@protoc_insertion_point(class_scope:pg_query.RangeTableFuncCol) + private: + class _Internal; + + template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; + typedef void InternalArenaConstructable_; + typedef void DestructorSkippable_; + ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr colname_; + ::pg_query::TypeName* type_name_; + ::pg_query::Node* colexpr_; + ::pg_query::Node* coldefexpr_; + bool for_ordinality_; + bool is_not_null_; + ::PROTOBUF_NAMESPACE_ID::int32 location_; + mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; + friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; +}; +// ------------------------------------------------------------------- + +class TypeName PROTOBUF_FINAL : + public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.TypeName) */ { + public: + inline TypeName() : TypeName(nullptr) {} + virtual ~TypeName(); + + TypeName(const TypeName& from); + TypeName(TypeName&& from) noexcept + : TypeName() { + *this = ::std::move(from); + } + + inline TypeName& operator=(const TypeName& from) { + CopyFrom(from); + return *this; + } + inline TypeName& operator=(TypeName&& from) noexcept { + if (GetArena() == from.GetArena()) { + if (this != &from) InternalSwap(&from); + } else { + CopyFrom(from); + } + return *this; + } + + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { + return GetDescriptor(); + } + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { + return GetMetadataStatic().descriptor; + } + static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { + return GetMetadataStatic().reflection; + } + static const TypeName& default_instance(); + + static inline const TypeName* internal_default_instance() { + return reinterpret_cast( + &_TypeName_default_instance_); + } + static constexpr int kIndexInFileMessages = + 198; + + friend void swap(TypeName& a, TypeName& b) { + a.Swap(&b); + } + inline void Swap(TypeName* other) { + if (other == this) return; + if (GetArena() == other->GetArena()) { + InternalSwap(other); + } else { + ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); + } + } + void UnsafeArenaSwap(TypeName* other) { + if (other == this) return; + GOOGLE_DCHECK(GetArena() == other->GetArena()); + InternalSwap(other); + } + + // implements Message ---------------------------------------------- + + inline TypeName* New() const final { + return CreateMaybeMessage(nullptr); + } + + TypeName* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { + return CreateMaybeMessage(arena); + } + void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void CopyFrom(const TypeName& from); + void MergeFrom(const TypeName& from); + PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; + bool IsInitialized() const final; + + size_t ByteSizeLong() const final; + const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; + ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( + ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; + int GetCachedSize() const final { return _cached_size_.Get(); } + + private: + inline void SharedCtor(); + inline void SharedDtor(); + void SetCachedSize(int size) const final; + void InternalSwap(TypeName* other); + friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; + static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { + return "pg_query.TypeName"; + } + protected: + explicit TypeName(::PROTOBUF_NAMESPACE_ID::Arena* arena); + private: + static void ArenaDtor(void* object); + inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); + public: + + ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; + private: + static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { + ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); + return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; + } + + public: + + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + + enum : int { + kNamesFieldNumber = 1, + kTypmodsFieldNumber = 5, + kArrayBoundsFieldNumber = 7, + kTypeOidFieldNumber = 2, + kSetofFieldNumber = 3, + kPctTypeFieldNumber = 4, + kTypemodFieldNumber = 6, + kLocationFieldNumber = 8, + }; + // repeated .pg_query.Node names = 1 [json_name = "names"]; + int names_size() const; + private: + int _internal_names_size() const; + public: + void clear_names(); + ::pg_query::Node* mutable_names(int index); + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* + mutable_names(); + private: + const ::pg_query::Node& _internal_names(int index) const; + ::pg_query::Node* _internal_add_names(); + public: + const ::pg_query::Node& names(int index) const; + ::pg_query::Node* add_names(); + const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& + names() const; + + // repeated .pg_query.Node typmods = 5 [json_name = "typmods"]; + int typmods_size() const; + private: + int _internal_typmods_size() const; + public: + void clear_typmods(); + ::pg_query::Node* mutable_typmods(int index); + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* + mutable_typmods(); + private: + const ::pg_query::Node& _internal_typmods(int index) const; + ::pg_query::Node* _internal_add_typmods(); + public: + const ::pg_query::Node& typmods(int index) const; + ::pg_query::Node* add_typmods(); + const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& + typmods() const; + + // repeated .pg_query.Node array_bounds = 7 [json_name = "arrayBounds"]; + int array_bounds_size() const; + private: + int _internal_array_bounds_size() const; + public: + void clear_array_bounds(); + ::pg_query::Node* mutable_array_bounds(int index); + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* + mutable_array_bounds(); + private: + const ::pg_query::Node& _internal_array_bounds(int index) const; + ::pg_query::Node* _internal_add_array_bounds(); + public: + const ::pg_query::Node& array_bounds(int index) const; + ::pg_query::Node* add_array_bounds(); + const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& + array_bounds() const; + + // uint32 type_oid = 2 [json_name = "typeOid"]; + void clear_type_oid(); + ::PROTOBUF_NAMESPACE_ID::uint32 type_oid() const; + void set_type_oid(::PROTOBUF_NAMESPACE_ID::uint32 value); + private: + ::PROTOBUF_NAMESPACE_ID::uint32 _internal_type_oid() const; + void _internal_set_type_oid(::PROTOBUF_NAMESPACE_ID::uint32 value); + public: + + // bool setof = 3 [json_name = "setof"]; + void clear_setof(); + bool setof() const; + void set_setof(bool value); + private: + bool _internal_setof() const; + void _internal_set_setof(bool value); + public: + + // bool pct_type = 4 [json_name = "pct_type"]; + void clear_pct_type(); + bool pct_type() const; + void set_pct_type(bool value); + private: + bool _internal_pct_type() const; + void _internal_set_pct_type(bool value); + public: + + // int32 typemod = 6 [json_name = "typemod"]; + void clear_typemod(); + ::PROTOBUF_NAMESPACE_ID::int32 typemod() const; + void set_typemod(::PROTOBUF_NAMESPACE_ID::int32 value); + private: + ::PROTOBUF_NAMESPACE_ID::int32 _internal_typemod() const; + void _internal_set_typemod(::PROTOBUF_NAMESPACE_ID::int32 value); + public: + + // int32 location = 8 [json_name = "location"]; + void clear_location(); + ::PROTOBUF_NAMESPACE_ID::int32 location() const; + void set_location(::PROTOBUF_NAMESPACE_ID::int32 value); + private: + ::PROTOBUF_NAMESPACE_ID::int32 _internal_location() const; + void _internal_set_location(::PROTOBUF_NAMESPACE_ID::int32 value); + public: + + // @@protoc_insertion_point(class_scope:pg_query.TypeName) + private: + class _Internal; + + template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; + typedef void InternalArenaConstructable_; + typedef void DestructorSkippable_; + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > names_; + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > typmods_; + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > array_bounds_; + ::PROTOBUF_NAMESPACE_ID::uint32 type_oid_; + bool setof_; + bool pct_type_; + ::PROTOBUF_NAMESPACE_ID::int32 typemod_; + ::PROTOBUF_NAMESPACE_ID::int32 location_; + mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; + friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; +}; +// ------------------------------------------------------------------- + +class ColumnDef PROTOBUF_FINAL : + public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.ColumnDef) */ { + public: + inline ColumnDef() : ColumnDef(nullptr) {} + virtual ~ColumnDef(); + + ColumnDef(const ColumnDef& from); + ColumnDef(ColumnDef&& from) noexcept + : ColumnDef() { + *this = ::std::move(from); + } + + inline ColumnDef& operator=(const ColumnDef& from) { + CopyFrom(from); + return *this; + } + inline ColumnDef& operator=(ColumnDef&& from) noexcept { + if (GetArena() == from.GetArena()) { + if (this != &from) InternalSwap(&from); + } else { + CopyFrom(from); + } + return *this; + } + + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { + return GetDescriptor(); + } + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { + return GetMetadataStatic().descriptor; + } + static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { + return GetMetadataStatic().reflection; + } + static const ColumnDef& default_instance(); + + static inline const ColumnDef* internal_default_instance() { + return reinterpret_cast( + &_ColumnDef_default_instance_); + } + static constexpr int kIndexInFileMessages = + 199; + + friend void swap(ColumnDef& a, ColumnDef& b) { + a.Swap(&b); + } + inline void Swap(ColumnDef* other) { + if (other == this) return; + if (GetArena() == other->GetArena()) { + InternalSwap(other); + } else { + ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); + } + } + void UnsafeArenaSwap(ColumnDef* other) { + if (other == this) return; + GOOGLE_DCHECK(GetArena() == other->GetArena()); + InternalSwap(other); + } + + // implements Message ---------------------------------------------- + + inline ColumnDef* New() const final { + return CreateMaybeMessage(nullptr); + } + + ColumnDef* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { + return CreateMaybeMessage(arena); + } + void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void CopyFrom(const ColumnDef& from); + void MergeFrom(const ColumnDef& from); + PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; + bool IsInitialized() const final; + + size_t ByteSizeLong() const final; + const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; + ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( + ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; + int GetCachedSize() const final { return _cached_size_.Get(); } + + private: + inline void SharedCtor(); + inline void SharedDtor(); + void SetCachedSize(int size) const final; + void InternalSwap(ColumnDef* other); + friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; + static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { + return "pg_query.ColumnDef"; + } + protected: + explicit ColumnDef(::PROTOBUF_NAMESPACE_ID::Arena* arena); + private: + static void ArenaDtor(void* object); + inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); + public: + + ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; + private: + static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { + ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); + return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; + } + + public: + + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + + enum : int { + kConstraintsFieldNumber = 15, + kFdwoptionsFieldNumber = 16, + kColnameFieldNumber = 1, + kStorageFieldNumber = 7, + kIdentityFieldNumber = 10, + kGeneratedFieldNumber = 12, + kTypeNameFieldNumber = 2, + kRawDefaultFieldNumber = 8, + kCookedDefaultFieldNumber = 9, + kIdentitySequenceFieldNumber = 11, + kCollClauseFieldNumber = 13, + kInhcountFieldNumber = 3, + kIsLocalFieldNumber = 4, + kIsNotNullFieldNumber = 5, + kIsFromTypeFieldNumber = 6, + kCollOidFieldNumber = 14, + kLocationFieldNumber = 17, + }; + // repeated .pg_query.Node constraints = 15 [json_name = "constraints"]; + int constraints_size() const; + private: + int _internal_constraints_size() const; + public: + void clear_constraints(); + ::pg_query::Node* mutable_constraints(int index); + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* + mutable_constraints(); + private: + const ::pg_query::Node& _internal_constraints(int index) const; + ::pg_query::Node* _internal_add_constraints(); + public: + const ::pg_query::Node& constraints(int index) const; + ::pg_query::Node* add_constraints(); + const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& + constraints() const; + + // repeated .pg_query.Node fdwoptions = 16 [json_name = "fdwoptions"]; + int fdwoptions_size() const; + private: + int _internal_fdwoptions_size() const; + public: + void clear_fdwoptions(); + ::pg_query::Node* mutable_fdwoptions(int index); + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* + mutable_fdwoptions(); + private: + const ::pg_query::Node& _internal_fdwoptions(int index) const; + ::pg_query::Node* _internal_add_fdwoptions(); + public: + const ::pg_query::Node& fdwoptions(int index) const; + ::pg_query::Node* add_fdwoptions(); + const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& + fdwoptions() const; + + // string colname = 1 [json_name = "colname"]; + void clear_colname(); + const std::string& colname() const; + void set_colname(const std::string& value); + void set_colname(std::string&& value); + void set_colname(const char* value); + void set_colname(const char* value, size_t size); + std::string* mutable_colname(); + std::string* release_colname(); + void set_allocated_colname(std::string* colname); + private: + const std::string& _internal_colname() const; + void _internal_set_colname(const std::string& value); + std::string* _internal_mutable_colname(); + public: + + // string storage = 7 [json_name = "storage"]; + void clear_storage(); + const std::string& storage() const; + void set_storage(const std::string& value); + void set_storage(std::string&& value); + void set_storage(const char* value); + void set_storage(const char* value, size_t size); + std::string* mutable_storage(); + std::string* release_storage(); + void set_allocated_storage(std::string* storage); + private: + const std::string& _internal_storage() const; + void _internal_set_storage(const std::string& value); + std::string* _internal_mutable_storage(); + public: + + // string identity = 10 [json_name = "identity"]; + void clear_identity(); + const std::string& identity() const; + void set_identity(const std::string& value); + void set_identity(std::string&& value); + void set_identity(const char* value); + void set_identity(const char* value, size_t size); + std::string* mutable_identity(); + std::string* release_identity(); + void set_allocated_identity(std::string* identity); + private: + const std::string& _internal_identity() const; + void _internal_set_identity(const std::string& value); + std::string* _internal_mutable_identity(); + public: + + // string generated = 12 [json_name = "generated"]; + void clear_generated(); + const std::string& generated() const; + void set_generated(const std::string& value); + void set_generated(std::string&& value); + void set_generated(const char* value); + void set_generated(const char* value, size_t size); + std::string* mutable_generated(); + std::string* release_generated(); + void set_allocated_generated(std::string* generated); + private: + const std::string& _internal_generated() const; + void _internal_set_generated(const std::string& value); + std::string* _internal_mutable_generated(); + public: + + // .pg_query.TypeName type_name = 2 [json_name = "typeName"]; + bool has_type_name() const; + private: + bool _internal_has_type_name() const; + public: + void clear_type_name(); + const ::pg_query::TypeName& type_name() const; + ::pg_query::TypeName* release_type_name(); + ::pg_query::TypeName* mutable_type_name(); + void set_allocated_type_name(::pg_query::TypeName* type_name); + private: + const ::pg_query::TypeName& _internal_type_name() const; + ::pg_query::TypeName* _internal_mutable_type_name(); + public: + void unsafe_arena_set_allocated_type_name( + ::pg_query::TypeName* type_name); + ::pg_query::TypeName* unsafe_arena_release_type_name(); + + // .pg_query.Node raw_default = 8 [json_name = "raw_default"]; + bool has_raw_default() const; + private: + bool _internal_has_raw_default() const; + public: + void clear_raw_default(); + const ::pg_query::Node& raw_default() const; + ::pg_query::Node* release_raw_default(); + ::pg_query::Node* mutable_raw_default(); + void set_allocated_raw_default(::pg_query::Node* raw_default); + private: + const ::pg_query::Node& _internal_raw_default() const; + ::pg_query::Node* _internal_mutable_raw_default(); + public: + void unsafe_arena_set_allocated_raw_default( + ::pg_query::Node* raw_default); + ::pg_query::Node* unsafe_arena_release_raw_default(); + + // .pg_query.Node cooked_default = 9 [json_name = "cooked_default"]; + bool has_cooked_default() const; + private: + bool _internal_has_cooked_default() const; + public: + void clear_cooked_default(); + const ::pg_query::Node& cooked_default() const; + ::pg_query::Node* release_cooked_default(); + ::pg_query::Node* mutable_cooked_default(); + void set_allocated_cooked_default(::pg_query::Node* cooked_default); + private: + const ::pg_query::Node& _internal_cooked_default() const; + ::pg_query::Node* _internal_mutable_cooked_default(); + public: + void unsafe_arena_set_allocated_cooked_default( + ::pg_query::Node* cooked_default); + ::pg_query::Node* unsafe_arena_release_cooked_default(); + + // .pg_query.RangeVar identity_sequence = 11 [json_name = "identitySequence"]; + bool has_identity_sequence() const; + private: + bool _internal_has_identity_sequence() const; + public: + void clear_identity_sequence(); + const ::pg_query::RangeVar& identity_sequence() const; + ::pg_query::RangeVar* release_identity_sequence(); + ::pg_query::RangeVar* mutable_identity_sequence(); + void set_allocated_identity_sequence(::pg_query::RangeVar* identity_sequence); + private: + const ::pg_query::RangeVar& _internal_identity_sequence() const; + ::pg_query::RangeVar* _internal_mutable_identity_sequence(); + public: + void unsafe_arena_set_allocated_identity_sequence( + ::pg_query::RangeVar* identity_sequence); + ::pg_query::RangeVar* unsafe_arena_release_identity_sequence(); + + // .pg_query.CollateClause coll_clause = 13 [json_name = "collClause"]; + bool has_coll_clause() const; + private: + bool _internal_has_coll_clause() const; + public: + void clear_coll_clause(); + const ::pg_query::CollateClause& coll_clause() const; + ::pg_query::CollateClause* release_coll_clause(); + ::pg_query::CollateClause* mutable_coll_clause(); + void set_allocated_coll_clause(::pg_query::CollateClause* coll_clause); + private: + const ::pg_query::CollateClause& _internal_coll_clause() const; + ::pg_query::CollateClause* _internal_mutable_coll_clause(); + public: + void unsafe_arena_set_allocated_coll_clause( + ::pg_query::CollateClause* coll_clause); + ::pg_query::CollateClause* unsafe_arena_release_coll_clause(); + + // int32 inhcount = 3 [json_name = "inhcount"]; + void clear_inhcount(); + ::PROTOBUF_NAMESPACE_ID::int32 inhcount() const; + void set_inhcount(::PROTOBUF_NAMESPACE_ID::int32 value); + private: + ::PROTOBUF_NAMESPACE_ID::int32 _internal_inhcount() const; + void _internal_set_inhcount(::PROTOBUF_NAMESPACE_ID::int32 value); + public: + + // bool is_local = 4 [json_name = "is_local"]; + void clear_is_local(); + bool is_local() const; + void set_is_local(bool value); + private: + bool _internal_is_local() const; + void _internal_set_is_local(bool value); + public: + + // bool is_not_null = 5 [json_name = "is_not_null"]; + void clear_is_not_null(); + bool is_not_null() const; + void set_is_not_null(bool value); + private: + bool _internal_is_not_null() const; + void _internal_set_is_not_null(bool value); + public: + + // bool is_from_type = 6 [json_name = "is_from_type"]; + void clear_is_from_type(); + bool is_from_type() const; + void set_is_from_type(bool value); + private: + bool _internal_is_from_type() const; + void _internal_set_is_from_type(bool value); + public: + + // uint32 coll_oid = 14 [json_name = "collOid"]; + void clear_coll_oid(); + ::PROTOBUF_NAMESPACE_ID::uint32 coll_oid() const; + void set_coll_oid(::PROTOBUF_NAMESPACE_ID::uint32 value); + private: + ::PROTOBUF_NAMESPACE_ID::uint32 _internal_coll_oid() const; + void _internal_set_coll_oid(::PROTOBUF_NAMESPACE_ID::uint32 value); + public: + + // int32 location = 17 [json_name = "location"]; + void clear_location(); + ::PROTOBUF_NAMESPACE_ID::int32 location() const; + void set_location(::PROTOBUF_NAMESPACE_ID::int32 value); + private: + ::PROTOBUF_NAMESPACE_ID::int32 _internal_location() const; + void _internal_set_location(::PROTOBUF_NAMESPACE_ID::int32 value); + public: + + // @@protoc_insertion_point(class_scope:pg_query.ColumnDef) + private: + class _Internal; + + template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; + typedef void InternalArenaConstructable_; + typedef void DestructorSkippable_; + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > constraints_; + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > fdwoptions_; + ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr colname_; + ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr storage_; + ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr identity_; + ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr generated_; + ::pg_query::TypeName* type_name_; + ::pg_query::Node* raw_default_; + ::pg_query::Node* cooked_default_; + ::pg_query::RangeVar* identity_sequence_; + ::pg_query::CollateClause* coll_clause_; + ::PROTOBUF_NAMESPACE_ID::int32 inhcount_; + bool is_local_; + bool is_not_null_; + bool is_from_type_; + ::PROTOBUF_NAMESPACE_ID::uint32 coll_oid_; + ::PROTOBUF_NAMESPACE_ID::int32 location_; + mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; + friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; +}; +// ------------------------------------------------------------------- + +class IndexElem PROTOBUF_FINAL : + public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.IndexElem) */ { + public: + inline IndexElem() : IndexElem(nullptr) {} + virtual ~IndexElem(); + + IndexElem(const IndexElem& from); + IndexElem(IndexElem&& from) noexcept + : IndexElem() { + *this = ::std::move(from); + } + + inline IndexElem& operator=(const IndexElem& from) { + CopyFrom(from); + return *this; + } + inline IndexElem& operator=(IndexElem&& from) noexcept { + if (GetArena() == from.GetArena()) { + if (this != &from) InternalSwap(&from); + } else { + CopyFrom(from); + } + return *this; + } + + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { + return GetDescriptor(); + } + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { + return GetMetadataStatic().descriptor; + } + static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { + return GetMetadataStatic().reflection; + } + static const IndexElem& default_instance(); + + static inline const IndexElem* internal_default_instance() { + return reinterpret_cast( + &_IndexElem_default_instance_); + } + static constexpr int kIndexInFileMessages = + 200; + + friend void swap(IndexElem& a, IndexElem& b) { + a.Swap(&b); + } + inline void Swap(IndexElem* other) { + if (other == this) return; + if (GetArena() == other->GetArena()) { + InternalSwap(other); + } else { + ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); + } + } + void UnsafeArenaSwap(IndexElem* other) { + if (other == this) return; + GOOGLE_DCHECK(GetArena() == other->GetArena()); + InternalSwap(other); + } + + // implements Message ---------------------------------------------- + + inline IndexElem* New() const final { + return CreateMaybeMessage(nullptr); + } + + IndexElem* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { + return CreateMaybeMessage(arena); + } + void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void CopyFrom(const IndexElem& from); + void MergeFrom(const IndexElem& from); + PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; + bool IsInitialized() const final; + + size_t ByteSizeLong() const final; + const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; + ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( + ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; + int GetCachedSize() const final { return _cached_size_.Get(); } + + private: + inline void SharedCtor(); + inline void SharedDtor(); + void SetCachedSize(int size) const final; + void InternalSwap(IndexElem* other); + friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; + static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { + return "pg_query.IndexElem"; + } + protected: + explicit IndexElem(::PROTOBUF_NAMESPACE_ID::Arena* arena); + private: + static void ArenaDtor(void* object); + inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); + public: + + ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; + private: + static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { + ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); + return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; + } + + public: + + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + + enum : int { + kCollationFieldNumber = 4, + kOpclassFieldNumber = 5, + kOpclassoptsFieldNumber = 6, + kNameFieldNumber = 1, + kIndexcolnameFieldNumber = 3, + kExprFieldNumber = 2, + kOrderingFieldNumber = 7, + kNullsOrderingFieldNumber = 8, + }; + // repeated .pg_query.Node collation = 4 [json_name = "collation"]; + int collation_size() const; + private: + int _internal_collation_size() const; + public: + void clear_collation(); + ::pg_query::Node* mutable_collation(int index); + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* + mutable_collation(); + private: + const ::pg_query::Node& _internal_collation(int index) const; + ::pg_query::Node* _internal_add_collation(); + public: + const ::pg_query::Node& collation(int index) const; + ::pg_query::Node* add_collation(); + const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& + collation() const; + + // repeated .pg_query.Node opclass = 5 [json_name = "opclass"]; + int opclass_size() const; + private: + int _internal_opclass_size() const; + public: + void clear_opclass(); + ::pg_query::Node* mutable_opclass(int index); + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* + mutable_opclass(); + private: + const ::pg_query::Node& _internal_opclass(int index) const; + ::pg_query::Node* _internal_add_opclass(); + public: + const ::pg_query::Node& opclass(int index) const; + ::pg_query::Node* add_opclass(); + const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& + opclass() const; + + // repeated .pg_query.Node opclassopts = 6 [json_name = "opclassopts"]; + int opclassopts_size() const; + private: + int _internal_opclassopts_size() const; + public: + void clear_opclassopts(); + ::pg_query::Node* mutable_opclassopts(int index); + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* + mutable_opclassopts(); + private: + const ::pg_query::Node& _internal_opclassopts(int index) const; + ::pg_query::Node* _internal_add_opclassopts(); + public: + const ::pg_query::Node& opclassopts(int index) const; + ::pg_query::Node* add_opclassopts(); + const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& + opclassopts() const; + + // string name = 1 [json_name = "name"]; + void clear_name(); + const std::string& name() const; + void set_name(const std::string& value); + void set_name(std::string&& value); + void set_name(const char* value); + void set_name(const char* value, size_t size); + std::string* mutable_name(); + std::string* release_name(); + void set_allocated_name(std::string* name); + private: + const std::string& _internal_name() const; + void _internal_set_name(const std::string& value); + std::string* _internal_mutable_name(); + public: + + // string indexcolname = 3 [json_name = "indexcolname"]; + void clear_indexcolname(); + const std::string& indexcolname() const; + void set_indexcolname(const std::string& value); + void set_indexcolname(std::string&& value); + void set_indexcolname(const char* value); + void set_indexcolname(const char* value, size_t size); + std::string* mutable_indexcolname(); + std::string* release_indexcolname(); + void set_allocated_indexcolname(std::string* indexcolname); + private: + const std::string& _internal_indexcolname() const; + void _internal_set_indexcolname(const std::string& value); + std::string* _internal_mutable_indexcolname(); + public: + + // .pg_query.Node expr = 2 [json_name = "expr"]; + bool has_expr() const; + private: + bool _internal_has_expr() const; + public: + void clear_expr(); + const ::pg_query::Node& expr() const; + ::pg_query::Node* release_expr(); + ::pg_query::Node* mutable_expr(); + void set_allocated_expr(::pg_query::Node* expr); + private: + const ::pg_query::Node& _internal_expr() const; + ::pg_query::Node* _internal_mutable_expr(); + public: + void unsafe_arena_set_allocated_expr( + ::pg_query::Node* expr); + ::pg_query::Node* unsafe_arena_release_expr(); + + // .pg_query.SortByDir ordering = 7 [json_name = "ordering"]; + void clear_ordering(); + ::pg_query::SortByDir ordering() const; + void set_ordering(::pg_query::SortByDir value); + private: + ::pg_query::SortByDir _internal_ordering() const; + void _internal_set_ordering(::pg_query::SortByDir value); + public: + + // .pg_query.SortByNulls nulls_ordering = 8 [json_name = "nulls_ordering"]; + void clear_nulls_ordering(); + ::pg_query::SortByNulls nulls_ordering() const; + void set_nulls_ordering(::pg_query::SortByNulls value); + private: + ::pg_query::SortByNulls _internal_nulls_ordering() const; + void _internal_set_nulls_ordering(::pg_query::SortByNulls value); + public: + + // @@protoc_insertion_point(class_scope:pg_query.IndexElem) + private: + class _Internal; + + template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; + typedef void InternalArenaConstructable_; + typedef void DestructorSkippable_; + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > collation_; + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > opclass_; + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > opclassopts_; + ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr name_; + ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr indexcolname_; + ::pg_query::Node* expr_; + int ordering_; + int nulls_ordering_; + mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; + friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; +}; +// ------------------------------------------------------------------- + +class Constraint PROTOBUF_FINAL : + public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.Constraint) */ { + public: + inline Constraint() : Constraint(nullptr) {} + virtual ~Constraint(); + + Constraint(const Constraint& from); + Constraint(Constraint&& from) noexcept + : Constraint() { + *this = ::std::move(from); + } + + inline Constraint& operator=(const Constraint& from) { + CopyFrom(from); + return *this; + } + inline Constraint& operator=(Constraint&& from) noexcept { + if (GetArena() == from.GetArena()) { + if (this != &from) InternalSwap(&from); + } else { + CopyFrom(from); + } + return *this; + } + + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { + return GetDescriptor(); + } + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { + return GetMetadataStatic().descriptor; + } + static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { + return GetMetadataStatic().reflection; + } + static const Constraint& default_instance(); + + static inline const Constraint* internal_default_instance() { + return reinterpret_cast( + &_Constraint_default_instance_); + } + static constexpr int kIndexInFileMessages = + 201; + + friend void swap(Constraint& a, Constraint& b) { + a.Swap(&b); + } + inline void Swap(Constraint* other) { + if (other == this) return; + if (GetArena() == other->GetArena()) { + InternalSwap(other); + } else { + ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); + } + } + void UnsafeArenaSwap(Constraint* other) { + if (other == this) return; + GOOGLE_DCHECK(GetArena() == other->GetArena()); + InternalSwap(other); + } + + // implements Message ---------------------------------------------- + + inline Constraint* New() const final { + return CreateMaybeMessage(nullptr); + } + + Constraint* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { + return CreateMaybeMessage(arena); + } + void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void CopyFrom(const Constraint& from); + void MergeFrom(const Constraint& from); + PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; + bool IsInitialized() const final; + + size_t ByteSizeLong() const final; + const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; + ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( + ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; + int GetCachedSize() const final { return _cached_size_.Get(); } + + private: + inline void SharedCtor(); + inline void SharedDtor(); + void SetCachedSize(int size) const final; + void InternalSwap(Constraint* other); + friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; + static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { + return "pg_query.Constraint"; + } + protected: + explicit Constraint(::PROTOBUF_NAMESPACE_ID::Arena* arena); + private: + static void ArenaDtor(void* object); + inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); + public: + + ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; + private: + static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { + ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); + return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; + } + + public: + + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + + enum : int { + kKeysFieldNumber = 10, + kIncludingFieldNumber = 11, + kExclusionsFieldNumber = 12, + kOptionsFieldNumber = 13, + kFkAttrsFieldNumber = 20, + kPkAttrsFieldNumber = 21, + kOldConpfeqopFieldNumber = 25, + kConnameFieldNumber = 2, + kCookedExprFieldNumber = 8, + kGeneratedWhenFieldNumber = 9, + kIndexnameFieldNumber = 14, + kIndexspaceFieldNumber = 15, + kAccessMethodFieldNumber = 17, + kFkMatchtypeFieldNumber = 22, + kFkUpdActionFieldNumber = 23, + kFkDelActionFieldNumber = 24, + kRawExprFieldNumber = 7, + kWhereClauseFieldNumber = 18, + kPktableFieldNumber = 19, + kContypeFieldNumber = 1, + kLocationFieldNumber = 5, + kDeferrableFieldNumber = 3, + kInitdeferredFieldNumber = 4, + kIsNoInheritFieldNumber = 6, + kResetDefaultTblspcFieldNumber = 16, + kOldPktableOidFieldNumber = 26, + kSkipValidationFieldNumber = 27, + kInitiallyValidFieldNumber = 28, + }; + // repeated .pg_query.Node keys = 10 [json_name = "keys"]; + int keys_size() const; + private: + int _internal_keys_size() const; + public: + void clear_keys(); + ::pg_query::Node* mutable_keys(int index); + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* + mutable_keys(); + private: + const ::pg_query::Node& _internal_keys(int index) const; + ::pg_query::Node* _internal_add_keys(); + public: + const ::pg_query::Node& keys(int index) const; + ::pg_query::Node* add_keys(); + const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& + keys() const; + + // repeated .pg_query.Node including = 11 [json_name = "including"]; + int including_size() const; + private: + int _internal_including_size() const; + public: + void clear_including(); + ::pg_query::Node* mutable_including(int index); + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* + mutable_including(); + private: + const ::pg_query::Node& _internal_including(int index) const; + ::pg_query::Node* _internal_add_including(); + public: + const ::pg_query::Node& including(int index) const; + ::pg_query::Node* add_including(); + const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& + including() const; + + // repeated .pg_query.Node exclusions = 12 [json_name = "exclusions"]; + int exclusions_size() const; + private: + int _internal_exclusions_size() const; + public: + void clear_exclusions(); + ::pg_query::Node* mutable_exclusions(int index); + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* + mutable_exclusions(); + private: + const ::pg_query::Node& _internal_exclusions(int index) const; + ::pg_query::Node* _internal_add_exclusions(); + public: + const ::pg_query::Node& exclusions(int index) const; + ::pg_query::Node* add_exclusions(); + const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& + exclusions() const; + + // repeated .pg_query.Node options = 13 [json_name = "options"]; + int options_size() const; + private: + int _internal_options_size() const; + public: + void clear_options(); + ::pg_query::Node* mutable_options(int index); + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* + mutable_options(); + private: + const ::pg_query::Node& _internal_options(int index) const; + ::pg_query::Node* _internal_add_options(); + public: + const ::pg_query::Node& options(int index) const; + ::pg_query::Node* add_options(); + const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& + options() const; + + // repeated .pg_query.Node fk_attrs = 20 [json_name = "fk_attrs"]; + int fk_attrs_size() const; + private: + int _internal_fk_attrs_size() const; + public: + void clear_fk_attrs(); + ::pg_query::Node* mutable_fk_attrs(int index); + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* + mutable_fk_attrs(); + private: + const ::pg_query::Node& _internal_fk_attrs(int index) const; + ::pg_query::Node* _internal_add_fk_attrs(); + public: + const ::pg_query::Node& fk_attrs(int index) const; + ::pg_query::Node* add_fk_attrs(); + const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& + fk_attrs() const; + + // repeated .pg_query.Node pk_attrs = 21 [json_name = "pk_attrs"]; + int pk_attrs_size() const; + private: + int _internal_pk_attrs_size() const; + public: + void clear_pk_attrs(); + ::pg_query::Node* mutable_pk_attrs(int index); + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* + mutable_pk_attrs(); + private: + const ::pg_query::Node& _internal_pk_attrs(int index) const; + ::pg_query::Node* _internal_add_pk_attrs(); + public: + const ::pg_query::Node& pk_attrs(int index) const; + ::pg_query::Node* add_pk_attrs(); + const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& + pk_attrs() const; + + // repeated .pg_query.Node old_conpfeqop = 25 [json_name = "old_conpfeqop"]; + int old_conpfeqop_size() const; + private: + int _internal_old_conpfeqop_size() const; + public: + void clear_old_conpfeqop(); + ::pg_query::Node* mutable_old_conpfeqop(int index); + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* + mutable_old_conpfeqop(); + private: + const ::pg_query::Node& _internal_old_conpfeqop(int index) const; + ::pg_query::Node* _internal_add_old_conpfeqop(); + public: + const ::pg_query::Node& old_conpfeqop(int index) const; + ::pg_query::Node* add_old_conpfeqop(); + const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& + old_conpfeqop() const; + + // string conname = 2 [json_name = "conname"]; + void clear_conname(); + const std::string& conname() const; + void set_conname(const std::string& value); + void set_conname(std::string&& value); + void set_conname(const char* value); + void set_conname(const char* value, size_t size); + std::string* mutable_conname(); + std::string* release_conname(); + void set_allocated_conname(std::string* conname); + private: + const std::string& _internal_conname() const; + void _internal_set_conname(const std::string& value); + std::string* _internal_mutable_conname(); + public: + + // string cooked_expr = 8 [json_name = "cooked_expr"]; + void clear_cooked_expr(); + const std::string& cooked_expr() const; + void set_cooked_expr(const std::string& value); + void set_cooked_expr(std::string&& value); + void set_cooked_expr(const char* value); + void set_cooked_expr(const char* value, size_t size); + std::string* mutable_cooked_expr(); + std::string* release_cooked_expr(); + void set_allocated_cooked_expr(std::string* cooked_expr); + private: + const std::string& _internal_cooked_expr() const; + void _internal_set_cooked_expr(const std::string& value); + std::string* _internal_mutable_cooked_expr(); + public: + + // string generated_when = 9 [json_name = "generated_when"]; + void clear_generated_when(); + const std::string& generated_when() const; + void set_generated_when(const std::string& value); + void set_generated_when(std::string&& value); + void set_generated_when(const char* value); + void set_generated_when(const char* value, size_t size); + std::string* mutable_generated_when(); + std::string* release_generated_when(); + void set_allocated_generated_when(std::string* generated_when); + private: + const std::string& _internal_generated_when() const; + void _internal_set_generated_when(const std::string& value); + std::string* _internal_mutable_generated_when(); + public: + + // string indexname = 14 [json_name = "indexname"]; + void clear_indexname(); + const std::string& indexname() const; + void set_indexname(const std::string& value); + void set_indexname(std::string&& value); + void set_indexname(const char* value); + void set_indexname(const char* value, size_t size); + std::string* mutable_indexname(); + std::string* release_indexname(); + void set_allocated_indexname(std::string* indexname); + private: + const std::string& _internal_indexname() const; + void _internal_set_indexname(const std::string& value); + std::string* _internal_mutable_indexname(); + public: + + // string indexspace = 15 [json_name = "indexspace"]; + void clear_indexspace(); + const std::string& indexspace() const; + void set_indexspace(const std::string& value); + void set_indexspace(std::string&& value); + void set_indexspace(const char* value); + void set_indexspace(const char* value, size_t size); + std::string* mutable_indexspace(); + std::string* release_indexspace(); + void set_allocated_indexspace(std::string* indexspace); + private: + const std::string& _internal_indexspace() const; + void _internal_set_indexspace(const std::string& value); + std::string* _internal_mutable_indexspace(); + public: + + // string access_method = 17 [json_name = "access_method"]; + void clear_access_method(); + const std::string& access_method() const; + void set_access_method(const std::string& value); + void set_access_method(std::string&& value); + void set_access_method(const char* value); + void set_access_method(const char* value, size_t size); + std::string* mutable_access_method(); + std::string* release_access_method(); + void set_allocated_access_method(std::string* access_method); + private: + const std::string& _internal_access_method() const; + void _internal_set_access_method(const std::string& value); + std::string* _internal_mutable_access_method(); + public: + + // string fk_matchtype = 22 [json_name = "fk_matchtype"]; + void clear_fk_matchtype(); + const std::string& fk_matchtype() const; + void set_fk_matchtype(const std::string& value); + void set_fk_matchtype(std::string&& value); + void set_fk_matchtype(const char* value); + void set_fk_matchtype(const char* value, size_t size); + std::string* mutable_fk_matchtype(); + std::string* release_fk_matchtype(); + void set_allocated_fk_matchtype(std::string* fk_matchtype); + private: + const std::string& _internal_fk_matchtype() const; + void _internal_set_fk_matchtype(const std::string& value); + std::string* _internal_mutable_fk_matchtype(); + public: + + // string fk_upd_action = 23 [json_name = "fk_upd_action"]; + void clear_fk_upd_action(); + const std::string& fk_upd_action() const; + void set_fk_upd_action(const std::string& value); + void set_fk_upd_action(std::string&& value); + void set_fk_upd_action(const char* value); + void set_fk_upd_action(const char* value, size_t size); + std::string* mutable_fk_upd_action(); + std::string* release_fk_upd_action(); + void set_allocated_fk_upd_action(std::string* fk_upd_action); + private: + const std::string& _internal_fk_upd_action() const; + void _internal_set_fk_upd_action(const std::string& value); + std::string* _internal_mutable_fk_upd_action(); + public: + + // string fk_del_action = 24 [json_name = "fk_del_action"]; + void clear_fk_del_action(); + const std::string& fk_del_action() const; + void set_fk_del_action(const std::string& value); + void set_fk_del_action(std::string&& value); + void set_fk_del_action(const char* value); + void set_fk_del_action(const char* value, size_t size); + std::string* mutable_fk_del_action(); + std::string* release_fk_del_action(); + void set_allocated_fk_del_action(std::string* fk_del_action); + private: + const std::string& _internal_fk_del_action() const; + void _internal_set_fk_del_action(const std::string& value); + std::string* _internal_mutable_fk_del_action(); + public: + + // .pg_query.Node raw_expr = 7 [json_name = "raw_expr"]; + bool has_raw_expr() const; + private: + bool _internal_has_raw_expr() const; + public: + void clear_raw_expr(); + const ::pg_query::Node& raw_expr() const; + ::pg_query::Node* release_raw_expr(); + ::pg_query::Node* mutable_raw_expr(); + void set_allocated_raw_expr(::pg_query::Node* raw_expr); + private: + const ::pg_query::Node& _internal_raw_expr() const; + ::pg_query::Node* _internal_mutable_raw_expr(); + public: + void unsafe_arena_set_allocated_raw_expr( + ::pg_query::Node* raw_expr); + ::pg_query::Node* unsafe_arena_release_raw_expr(); + + // .pg_query.Node where_clause = 18 [json_name = "where_clause"]; + bool has_where_clause() const; + private: + bool _internal_has_where_clause() const; + public: + void clear_where_clause(); + const ::pg_query::Node& where_clause() const; + ::pg_query::Node* release_where_clause(); + ::pg_query::Node* mutable_where_clause(); + void set_allocated_where_clause(::pg_query::Node* where_clause); + private: + const ::pg_query::Node& _internal_where_clause() const; + ::pg_query::Node* _internal_mutable_where_clause(); + public: + void unsafe_arena_set_allocated_where_clause( + ::pg_query::Node* where_clause); + ::pg_query::Node* unsafe_arena_release_where_clause(); + + // .pg_query.RangeVar pktable = 19 [json_name = "pktable"]; + bool has_pktable() const; + private: + bool _internal_has_pktable() const; + public: + void clear_pktable(); + const ::pg_query::RangeVar& pktable() const; + ::pg_query::RangeVar* release_pktable(); + ::pg_query::RangeVar* mutable_pktable(); + void set_allocated_pktable(::pg_query::RangeVar* pktable); + private: + const ::pg_query::RangeVar& _internal_pktable() const; + ::pg_query::RangeVar* _internal_mutable_pktable(); + public: + void unsafe_arena_set_allocated_pktable( + ::pg_query::RangeVar* pktable); + ::pg_query::RangeVar* unsafe_arena_release_pktable(); + + // .pg_query.ConstrType contype = 1 [json_name = "contype"]; + void clear_contype(); + ::pg_query::ConstrType contype() const; + void set_contype(::pg_query::ConstrType value); + private: + ::pg_query::ConstrType _internal_contype() const; + void _internal_set_contype(::pg_query::ConstrType value); + public: + + // int32 location = 5 [json_name = "location"]; + void clear_location(); + ::PROTOBUF_NAMESPACE_ID::int32 location() const; + void set_location(::PROTOBUF_NAMESPACE_ID::int32 value); + private: + ::PROTOBUF_NAMESPACE_ID::int32 _internal_location() const; + void _internal_set_location(::PROTOBUF_NAMESPACE_ID::int32 value); + public: + + // bool deferrable = 3 [json_name = "deferrable"]; + void clear_deferrable(); + bool deferrable() const; + void set_deferrable(bool value); + private: + bool _internal_deferrable() const; + void _internal_set_deferrable(bool value); + public: + + // bool initdeferred = 4 [json_name = "initdeferred"]; + void clear_initdeferred(); + bool initdeferred() const; + void set_initdeferred(bool value); + private: + bool _internal_initdeferred() const; + void _internal_set_initdeferred(bool value); + public: + + // bool is_no_inherit = 6 [json_name = "is_no_inherit"]; + void clear_is_no_inherit(); + bool is_no_inherit() const; + void set_is_no_inherit(bool value); + private: + bool _internal_is_no_inherit() const; + void _internal_set_is_no_inherit(bool value); + public: + + // bool reset_default_tblspc = 16 [json_name = "reset_default_tblspc"]; + void clear_reset_default_tblspc(); + bool reset_default_tblspc() const; + void set_reset_default_tblspc(bool value); + private: + bool _internal_reset_default_tblspc() const; + void _internal_set_reset_default_tblspc(bool value); + public: + + // uint32 old_pktable_oid = 26 [json_name = "old_pktable_oid"]; + void clear_old_pktable_oid(); + ::PROTOBUF_NAMESPACE_ID::uint32 old_pktable_oid() const; + void set_old_pktable_oid(::PROTOBUF_NAMESPACE_ID::uint32 value); + private: + ::PROTOBUF_NAMESPACE_ID::uint32 _internal_old_pktable_oid() const; + void _internal_set_old_pktable_oid(::PROTOBUF_NAMESPACE_ID::uint32 value); + public: + + // bool skip_validation = 27 [json_name = "skip_validation"]; + void clear_skip_validation(); + bool skip_validation() const; + void set_skip_validation(bool value); + private: + bool _internal_skip_validation() const; + void _internal_set_skip_validation(bool value); + public: + + // bool initially_valid = 28 [json_name = "initially_valid"]; + void clear_initially_valid(); + bool initially_valid() const; + void set_initially_valid(bool value); + private: + bool _internal_initially_valid() const; + void _internal_set_initially_valid(bool value); + public: + + // @@protoc_insertion_point(class_scope:pg_query.Constraint) + private: + class _Internal; + + template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; + typedef void InternalArenaConstructable_; + typedef void DestructorSkippable_; + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > keys_; + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > including_; + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > exclusions_; + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > options_; + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > fk_attrs_; + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > pk_attrs_; + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > old_conpfeqop_; + ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr conname_; + ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr cooked_expr_; + ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr generated_when_; + ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr indexname_; + ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr indexspace_; + ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr access_method_; + ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr fk_matchtype_; + ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr fk_upd_action_; + ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr fk_del_action_; + ::pg_query::Node* raw_expr_; + ::pg_query::Node* where_clause_; + ::pg_query::RangeVar* pktable_; + int contype_; + ::PROTOBUF_NAMESPACE_ID::int32 location_; + bool deferrable_; + bool initdeferred_; + bool is_no_inherit_; + bool reset_default_tblspc_; + ::PROTOBUF_NAMESPACE_ID::uint32 old_pktable_oid_; + bool skip_validation_; + bool initially_valid_; + mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; + friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; +}; +// ------------------------------------------------------------------- + +class DefElem PROTOBUF_FINAL : + public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.DefElem) */ { + public: + inline DefElem() : DefElem(nullptr) {} + virtual ~DefElem(); + + DefElem(const DefElem& from); + DefElem(DefElem&& from) noexcept + : DefElem() { + *this = ::std::move(from); + } + + inline DefElem& operator=(const DefElem& from) { + CopyFrom(from); + return *this; + } + inline DefElem& operator=(DefElem&& from) noexcept { + if (GetArena() == from.GetArena()) { + if (this != &from) InternalSwap(&from); + } else { + CopyFrom(from); + } + return *this; + } + + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { + return GetDescriptor(); + } + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { + return GetMetadataStatic().descriptor; + } + static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { + return GetMetadataStatic().reflection; + } + static const DefElem& default_instance(); + + static inline const DefElem* internal_default_instance() { + return reinterpret_cast( + &_DefElem_default_instance_); + } + static constexpr int kIndexInFileMessages = + 202; + + friend void swap(DefElem& a, DefElem& b) { + a.Swap(&b); + } + inline void Swap(DefElem* other) { + if (other == this) return; + if (GetArena() == other->GetArena()) { + InternalSwap(other); + } else { + ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); + } + } + void UnsafeArenaSwap(DefElem* other) { + if (other == this) return; + GOOGLE_DCHECK(GetArena() == other->GetArena()); + InternalSwap(other); + } + + // implements Message ---------------------------------------------- + + inline DefElem* New() const final { + return CreateMaybeMessage(nullptr); + } + + DefElem* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { + return CreateMaybeMessage(arena); + } + void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void CopyFrom(const DefElem& from); + void MergeFrom(const DefElem& from); + PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; + bool IsInitialized() const final; + + size_t ByteSizeLong() const final; + const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; + ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( + ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; + int GetCachedSize() const final { return _cached_size_.Get(); } + + private: + inline void SharedCtor(); + inline void SharedDtor(); + void SetCachedSize(int size) const final; + void InternalSwap(DefElem* other); + friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; + static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { + return "pg_query.DefElem"; + } + protected: + explicit DefElem(::PROTOBUF_NAMESPACE_ID::Arena* arena); + private: + static void ArenaDtor(void* object); + inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); + public: + + ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; + private: + static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { + ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); + return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; + } + + public: + + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + + enum : int { + kDefnamespaceFieldNumber = 1, + kDefnameFieldNumber = 2, + kArgFieldNumber = 3, + kDefactionFieldNumber = 4, + kLocationFieldNumber = 5, + }; + // string defnamespace = 1 [json_name = "defnamespace"]; + void clear_defnamespace(); + const std::string& defnamespace() const; + void set_defnamespace(const std::string& value); + void set_defnamespace(std::string&& value); + void set_defnamespace(const char* value); + void set_defnamespace(const char* value, size_t size); + std::string* mutable_defnamespace(); + std::string* release_defnamespace(); + void set_allocated_defnamespace(std::string* defnamespace); + private: + const std::string& _internal_defnamespace() const; + void _internal_set_defnamespace(const std::string& value); + std::string* _internal_mutable_defnamespace(); + public: + + // string defname = 2 [json_name = "defname"]; + void clear_defname(); + const std::string& defname() const; + void set_defname(const std::string& value); + void set_defname(std::string&& value); + void set_defname(const char* value); + void set_defname(const char* value, size_t size); + std::string* mutable_defname(); + std::string* release_defname(); + void set_allocated_defname(std::string* defname); + private: + const std::string& _internal_defname() const; + void _internal_set_defname(const std::string& value); + std::string* _internal_mutable_defname(); + public: + + // .pg_query.Node arg = 3 [json_name = "arg"]; + bool has_arg() const; + private: + bool _internal_has_arg() const; + public: + void clear_arg(); + const ::pg_query::Node& arg() const; + ::pg_query::Node* release_arg(); + ::pg_query::Node* mutable_arg(); + void set_allocated_arg(::pg_query::Node* arg); + private: + const ::pg_query::Node& _internal_arg() const; + ::pg_query::Node* _internal_mutable_arg(); + public: + void unsafe_arena_set_allocated_arg( + ::pg_query::Node* arg); + ::pg_query::Node* unsafe_arena_release_arg(); + + // .pg_query.DefElemAction defaction = 4 [json_name = "defaction"]; + void clear_defaction(); + ::pg_query::DefElemAction defaction() const; + void set_defaction(::pg_query::DefElemAction value); + private: + ::pg_query::DefElemAction _internal_defaction() const; + void _internal_set_defaction(::pg_query::DefElemAction value); + public: + + // int32 location = 5 [json_name = "location"]; + void clear_location(); + ::PROTOBUF_NAMESPACE_ID::int32 location() const; + void set_location(::PROTOBUF_NAMESPACE_ID::int32 value); + private: + ::PROTOBUF_NAMESPACE_ID::int32 _internal_location() const; + void _internal_set_location(::PROTOBUF_NAMESPACE_ID::int32 value); + public: + + // @@protoc_insertion_point(class_scope:pg_query.DefElem) + private: + class _Internal; + + template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; + typedef void InternalArenaConstructable_; + typedef void DestructorSkippable_; + ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr defnamespace_; + ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr defname_; + ::pg_query::Node* arg_; + int defaction_; + ::PROTOBUF_NAMESPACE_ID::int32 location_; + mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; + friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; +}; +// ------------------------------------------------------------------- + +class RangeTblEntry PROTOBUF_FINAL : + public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.RangeTblEntry) */ { + public: + inline RangeTblEntry() : RangeTblEntry(nullptr) {} + virtual ~RangeTblEntry(); + + RangeTblEntry(const RangeTblEntry& from); + RangeTblEntry(RangeTblEntry&& from) noexcept + : RangeTblEntry() { + *this = ::std::move(from); + } + + inline RangeTblEntry& operator=(const RangeTblEntry& from) { + CopyFrom(from); + return *this; + } + inline RangeTblEntry& operator=(RangeTblEntry&& from) noexcept { + if (GetArena() == from.GetArena()) { + if (this != &from) InternalSwap(&from); + } else { + CopyFrom(from); + } + return *this; + } + + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { + return GetDescriptor(); + } + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { + return GetMetadataStatic().descriptor; + } + static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { + return GetMetadataStatic().reflection; + } + static const RangeTblEntry& default_instance(); + + static inline const RangeTblEntry* internal_default_instance() { + return reinterpret_cast( + &_RangeTblEntry_default_instance_); + } + static constexpr int kIndexInFileMessages = + 203; + + friend void swap(RangeTblEntry& a, RangeTblEntry& b) { + a.Swap(&b); + } + inline void Swap(RangeTblEntry* other) { + if (other == this) return; + if (GetArena() == other->GetArena()) { + InternalSwap(other); + } else { + ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); + } + } + void UnsafeArenaSwap(RangeTblEntry* other) { + if (other == this) return; + GOOGLE_DCHECK(GetArena() == other->GetArena()); + InternalSwap(other); + } + + // implements Message ---------------------------------------------- + + inline RangeTblEntry* New() const final { + return CreateMaybeMessage(nullptr); + } + + RangeTblEntry* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { + return CreateMaybeMessage(arena); + } + void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void CopyFrom(const RangeTblEntry& from); + void MergeFrom(const RangeTblEntry& from); + PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; + bool IsInitialized() const final; + + size_t ByteSizeLong() const final; + const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; + ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( + ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; + int GetCachedSize() const final { return _cached_size_.Get(); } + + private: + inline void SharedCtor(); + inline void SharedDtor(); + void SetCachedSize(int size) const final; + void InternalSwap(RangeTblEntry* other); + friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; + static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { + return "pg_query.RangeTblEntry"; + } + protected: + explicit RangeTblEntry(::PROTOBUF_NAMESPACE_ID::Arena* arena); + private: + static void ArenaDtor(void* object); + inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); + public: + + ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; + private: + static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { + ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); + return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; + } + + public: + + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + + enum : int { + kJoinaliasvarsFieldNumber = 10, + kJoinleftcolsFieldNumber = 11, + kJoinrightcolsFieldNumber = 12, + kFunctionsFieldNumber = 13, + kValuesListsFieldNumber = 16, + kColtypesFieldNumber = 20, + kColtypmodsFieldNumber = 21, + kColcollationsFieldNumber = 22, + kSecurityQualsFieldNumber = 32, + kRelkindFieldNumber = 3, + kCtenameFieldNumber = 17, + kEnrnameFieldNumber = 23, + kTablesampleFieldNumber = 5, + kSubqueryFieldNumber = 6, + kTablefuncFieldNumber = 15, + kAliasFieldNumber = 25, + kErefFieldNumber = 26, + kRtekindFieldNumber = 1, + kRelidFieldNumber = 2, + kRellockmodeFieldNumber = 4, + kJointypeFieldNumber = 8, + kJoinmergedcolsFieldNumber = 9, + kSecurityBarrierFieldNumber = 7, + kFuncordinalityFieldNumber = 14, + kSelfReferenceFieldNumber = 19, + kLateralFieldNumber = 27, + kEnrtuplesFieldNumber = 24, + kCtelevelsupFieldNumber = 18, + kInhFieldNumber = 28, + kInFromClFieldNumber = 29, + kRequiredPermsFieldNumber = 30, + kCheckAsUserFieldNumber = 31, + }; + // repeated .pg_query.Node joinaliasvars = 10 [json_name = "joinaliasvars"]; + int joinaliasvars_size() const; + private: + int _internal_joinaliasvars_size() const; + public: + void clear_joinaliasvars(); + ::pg_query::Node* mutable_joinaliasvars(int index); + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* + mutable_joinaliasvars(); + private: + const ::pg_query::Node& _internal_joinaliasvars(int index) const; + ::pg_query::Node* _internal_add_joinaliasvars(); + public: + const ::pg_query::Node& joinaliasvars(int index) const; + ::pg_query::Node* add_joinaliasvars(); + const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& + joinaliasvars() const; + + // repeated .pg_query.Node joinleftcols = 11 [json_name = "joinleftcols"]; + int joinleftcols_size() const; + private: + int _internal_joinleftcols_size() const; + public: + void clear_joinleftcols(); + ::pg_query::Node* mutable_joinleftcols(int index); + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* + mutable_joinleftcols(); + private: + const ::pg_query::Node& _internal_joinleftcols(int index) const; + ::pg_query::Node* _internal_add_joinleftcols(); + public: + const ::pg_query::Node& joinleftcols(int index) const; + ::pg_query::Node* add_joinleftcols(); + const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& + joinleftcols() const; + + // repeated .pg_query.Node joinrightcols = 12 [json_name = "joinrightcols"]; + int joinrightcols_size() const; + private: + int _internal_joinrightcols_size() const; + public: + void clear_joinrightcols(); + ::pg_query::Node* mutable_joinrightcols(int index); + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* + mutable_joinrightcols(); + private: + const ::pg_query::Node& _internal_joinrightcols(int index) const; + ::pg_query::Node* _internal_add_joinrightcols(); + public: + const ::pg_query::Node& joinrightcols(int index) const; + ::pg_query::Node* add_joinrightcols(); + const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& + joinrightcols() const; + + // repeated .pg_query.Node functions = 13 [json_name = "functions"]; + int functions_size() const; + private: + int _internal_functions_size() const; + public: + void clear_functions(); + ::pg_query::Node* mutable_functions(int index); + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* + mutable_functions(); + private: + const ::pg_query::Node& _internal_functions(int index) const; + ::pg_query::Node* _internal_add_functions(); + public: + const ::pg_query::Node& functions(int index) const; + ::pg_query::Node* add_functions(); + const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& + functions() const; + + // repeated .pg_query.Node values_lists = 16 [json_name = "values_lists"]; + int values_lists_size() const; + private: + int _internal_values_lists_size() const; + public: + void clear_values_lists(); + ::pg_query::Node* mutable_values_lists(int index); + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* + mutable_values_lists(); + private: + const ::pg_query::Node& _internal_values_lists(int index) const; + ::pg_query::Node* _internal_add_values_lists(); + public: + const ::pg_query::Node& values_lists(int index) const; + ::pg_query::Node* add_values_lists(); + const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& + values_lists() const; + + // repeated .pg_query.Node coltypes = 20 [json_name = "coltypes"]; + int coltypes_size() const; + private: + int _internal_coltypes_size() const; + public: + void clear_coltypes(); + ::pg_query::Node* mutable_coltypes(int index); + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* + mutable_coltypes(); + private: + const ::pg_query::Node& _internal_coltypes(int index) const; + ::pg_query::Node* _internal_add_coltypes(); + public: + const ::pg_query::Node& coltypes(int index) const; + ::pg_query::Node* add_coltypes(); + const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& + coltypes() const; + + // repeated .pg_query.Node coltypmods = 21 [json_name = "coltypmods"]; + int coltypmods_size() const; + private: + int _internal_coltypmods_size() const; + public: + void clear_coltypmods(); + ::pg_query::Node* mutable_coltypmods(int index); + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* + mutable_coltypmods(); + private: + const ::pg_query::Node& _internal_coltypmods(int index) const; + ::pg_query::Node* _internal_add_coltypmods(); + public: + const ::pg_query::Node& coltypmods(int index) const; + ::pg_query::Node* add_coltypmods(); + const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& + coltypmods() const; + + // repeated .pg_query.Node colcollations = 22 [json_name = "colcollations"]; + int colcollations_size() const; + private: + int _internal_colcollations_size() const; + public: + void clear_colcollations(); + ::pg_query::Node* mutable_colcollations(int index); + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* + mutable_colcollations(); + private: + const ::pg_query::Node& _internal_colcollations(int index) const; + ::pg_query::Node* _internal_add_colcollations(); + public: + const ::pg_query::Node& colcollations(int index) const; + ::pg_query::Node* add_colcollations(); + const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& + colcollations() const; + + // repeated .pg_query.Node security_quals = 32 [json_name = "securityQuals"]; + int security_quals_size() const; + private: + int _internal_security_quals_size() const; + public: + void clear_security_quals(); + ::pg_query::Node* mutable_security_quals(int index); + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* + mutable_security_quals(); + private: + const ::pg_query::Node& _internal_security_quals(int index) const; + ::pg_query::Node* _internal_add_security_quals(); + public: + const ::pg_query::Node& security_quals(int index) const; + ::pg_query::Node* add_security_quals(); + const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& + security_quals() const; + + // string relkind = 3 [json_name = "relkind"]; + void clear_relkind(); + const std::string& relkind() const; + void set_relkind(const std::string& value); + void set_relkind(std::string&& value); + void set_relkind(const char* value); + void set_relkind(const char* value, size_t size); + std::string* mutable_relkind(); + std::string* release_relkind(); + void set_allocated_relkind(std::string* relkind); + private: + const std::string& _internal_relkind() const; + void _internal_set_relkind(const std::string& value); + std::string* _internal_mutable_relkind(); + public: + + // string ctename = 17 [json_name = "ctename"]; + void clear_ctename(); + const std::string& ctename() const; + void set_ctename(const std::string& value); + void set_ctename(std::string&& value); + void set_ctename(const char* value); + void set_ctename(const char* value, size_t size); + std::string* mutable_ctename(); + std::string* release_ctename(); + void set_allocated_ctename(std::string* ctename); + private: + const std::string& _internal_ctename() const; + void _internal_set_ctename(const std::string& value); + std::string* _internal_mutable_ctename(); + public: + + // string enrname = 23 [json_name = "enrname"]; + void clear_enrname(); + const std::string& enrname() const; + void set_enrname(const std::string& value); + void set_enrname(std::string&& value); + void set_enrname(const char* value); + void set_enrname(const char* value, size_t size); + std::string* mutable_enrname(); + std::string* release_enrname(); + void set_allocated_enrname(std::string* enrname); + private: + const std::string& _internal_enrname() const; + void _internal_set_enrname(const std::string& value); + std::string* _internal_mutable_enrname(); + public: + + // .pg_query.TableSampleClause tablesample = 5 [json_name = "tablesample"]; + bool has_tablesample() const; + private: + bool _internal_has_tablesample() const; + public: + void clear_tablesample(); + const ::pg_query::TableSampleClause& tablesample() const; + ::pg_query::TableSampleClause* release_tablesample(); + ::pg_query::TableSampleClause* mutable_tablesample(); + void set_allocated_tablesample(::pg_query::TableSampleClause* tablesample); + private: + const ::pg_query::TableSampleClause& _internal_tablesample() const; + ::pg_query::TableSampleClause* _internal_mutable_tablesample(); + public: + void unsafe_arena_set_allocated_tablesample( + ::pg_query::TableSampleClause* tablesample); + ::pg_query::TableSampleClause* unsafe_arena_release_tablesample(); + + // .pg_query.Query subquery = 6 [json_name = "subquery"]; + bool has_subquery() const; + private: + bool _internal_has_subquery() const; + public: + void clear_subquery(); + const ::pg_query::Query& subquery() const; + ::pg_query::Query* release_subquery(); + ::pg_query::Query* mutable_subquery(); + void set_allocated_subquery(::pg_query::Query* subquery); + private: + const ::pg_query::Query& _internal_subquery() const; + ::pg_query::Query* _internal_mutable_subquery(); + public: + void unsafe_arena_set_allocated_subquery( + ::pg_query::Query* subquery); + ::pg_query::Query* unsafe_arena_release_subquery(); + + // .pg_query.TableFunc tablefunc = 15 [json_name = "tablefunc"]; + bool has_tablefunc() const; + private: + bool _internal_has_tablefunc() const; + public: + void clear_tablefunc(); + const ::pg_query::TableFunc& tablefunc() const; + ::pg_query::TableFunc* release_tablefunc(); + ::pg_query::TableFunc* mutable_tablefunc(); + void set_allocated_tablefunc(::pg_query::TableFunc* tablefunc); + private: + const ::pg_query::TableFunc& _internal_tablefunc() const; + ::pg_query::TableFunc* _internal_mutable_tablefunc(); + public: + void unsafe_arena_set_allocated_tablefunc( + ::pg_query::TableFunc* tablefunc); + ::pg_query::TableFunc* unsafe_arena_release_tablefunc(); + + // .pg_query.Alias alias = 25 [json_name = "alias"]; + bool has_alias() const; + private: + bool _internal_has_alias() const; + public: + void clear_alias(); + const ::pg_query::Alias& alias() const; + ::pg_query::Alias* release_alias(); + ::pg_query::Alias* mutable_alias(); + void set_allocated_alias(::pg_query::Alias* alias); + private: + const ::pg_query::Alias& _internal_alias() const; + ::pg_query::Alias* _internal_mutable_alias(); + public: + void unsafe_arena_set_allocated_alias( + ::pg_query::Alias* alias); + ::pg_query::Alias* unsafe_arena_release_alias(); + + // .pg_query.Alias eref = 26 [json_name = "eref"]; + bool has_eref() const; + private: + bool _internal_has_eref() const; + public: + void clear_eref(); + const ::pg_query::Alias& eref() const; + ::pg_query::Alias* release_eref(); + ::pg_query::Alias* mutable_eref(); + void set_allocated_eref(::pg_query::Alias* eref); + private: + const ::pg_query::Alias& _internal_eref() const; + ::pg_query::Alias* _internal_mutable_eref(); + public: + void unsafe_arena_set_allocated_eref( + ::pg_query::Alias* eref); + ::pg_query::Alias* unsafe_arena_release_eref(); + + // .pg_query.RTEKind rtekind = 1 [json_name = "rtekind"]; + void clear_rtekind(); + ::pg_query::RTEKind rtekind() const; + void set_rtekind(::pg_query::RTEKind value); + private: + ::pg_query::RTEKind _internal_rtekind() const; + void _internal_set_rtekind(::pg_query::RTEKind value); + public: + + // uint32 relid = 2 [json_name = "relid"]; + void clear_relid(); + ::PROTOBUF_NAMESPACE_ID::uint32 relid() const; + void set_relid(::PROTOBUF_NAMESPACE_ID::uint32 value); + private: + ::PROTOBUF_NAMESPACE_ID::uint32 _internal_relid() const; + void _internal_set_relid(::PROTOBUF_NAMESPACE_ID::uint32 value); + public: + + // int32 rellockmode = 4 [json_name = "rellockmode"]; + void clear_rellockmode(); + ::PROTOBUF_NAMESPACE_ID::int32 rellockmode() const; + void set_rellockmode(::PROTOBUF_NAMESPACE_ID::int32 value); + private: + ::PROTOBUF_NAMESPACE_ID::int32 _internal_rellockmode() const; + void _internal_set_rellockmode(::PROTOBUF_NAMESPACE_ID::int32 value); + public: + + // .pg_query.JoinType jointype = 8 [json_name = "jointype"]; + void clear_jointype(); + ::pg_query::JoinType jointype() const; + void set_jointype(::pg_query::JoinType value); + private: + ::pg_query::JoinType _internal_jointype() const; + void _internal_set_jointype(::pg_query::JoinType value); + public: + + // int32 joinmergedcols = 9 [json_name = "joinmergedcols"]; + void clear_joinmergedcols(); + ::PROTOBUF_NAMESPACE_ID::int32 joinmergedcols() const; + void set_joinmergedcols(::PROTOBUF_NAMESPACE_ID::int32 value); + private: + ::PROTOBUF_NAMESPACE_ID::int32 _internal_joinmergedcols() const; + void _internal_set_joinmergedcols(::PROTOBUF_NAMESPACE_ID::int32 value); + public: + + // bool security_barrier = 7 [json_name = "security_barrier"]; + void clear_security_barrier(); + bool security_barrier() const; + void set_security_barrier(bool value); + private: + bool _internal_security_barrier() const; + void _internal_set_security_barrier(bool value); + public: + + // bool funcordinality = 14 [json_name = "funcordinality"]; + void clear_funcordinality(); + bool funcordinality() const; + void set_funcordinality(bool value); + private: + bool _internal_funcordinality() const; + void _internal_set_funcordinality(bool value); + public: + + // bool self_reference = 19 [json_name = "self_reference"]; + void clear_self_reference(); + bool self_reference() const; + void set_self_reference(bool value); + private: + bool _internal_self_reference() const; + void _internal_set_self_reference(bool value); + public: + + // bool lateral = 27 [json_name = "lateral"]; + void clear_lateral(); + bool lateral() const; + void set_lateral(bool value); + private: + bool _internal_lateral() const; + void _internal_set_lateral(bool value); + public: + + // double enrtuples = 24 [json_name = "enrtuples"]; + void clear_enrtuples(); + double enrtuples() const; + void set_enrtuples(double value); + private: + double _internal_enrtuples() const; + void _internal_set_enrtuples(double value); + public: + + // uint32 ctelevelsup = 18 [json_name = "ctelevelsup"]; + void clear_ctelevelsup(); + ::PROTOBUF_NAMESPACE_ID::uint32 ctelevelsup() const; + void set_ctelevelsup(::PROTOBUF_NAMESPACE_ID::uint32 value); + private: + ::PROTOBUF_NAMESPACE_ID::uint32 _internal_ctelevelsup() const; + void _internal_set_ctelevelsup(::PROTOBUF_NAMESPACE_ID::uint32 value); + public: + + // bool inh = 28 [json_name = "inh"]; + void clear_inh(); + bool inh() const; + void set_inh(bool value); + private: + bool _internal_inh() const; + void _internal_set_inh(bool value); + public: + + // bool in_from_cl = 29 [json_name = "inFromCl"]; + void clear_in_from_cl(); + bool in_from_cl() const; + void set_in_from_cl(bool value); + private: + bool _internal_in_from_cl() const; + void _internal_set_in_from_cl(bool value); + public: + + // uint32 required_perms = 30 [json_name = "requiredPerms"]; + void clear_required_perms(); + ::PROTOBUF_NAMESPACE_ID::uint32 required_perms() const; + void set_required_perms(::PROTOBUF_NAMESPACE_ID::uint32 value); + private: + ::PROTOBUF_NAMESPACE_ID::uint32 _internal_required_perms() const; + void _internal_set_required_perms(::PROTOBUF_NAMESPACE_ID::uint32 value); + public: + + // uint32 check_as_user = 31 [json_name = "checkAsUser"]; + void clear_check_as_user(); + ::PROTOBUF_NAMESPACE_ID::uint32 check_as_user() const; + void set_check_as_user(::PROTOBUF_NAMESPACE_ID::uint32 value); + private: + ::PROTOBUF_NAMESPACE_ID::uint32 _internal_check_as_user() const; + void _internal_set_check_as_user(::PROTOBUF_NAMESPACE_ID::uint32 value); + public: + + // @@protoc_insertion_point(class_scope:pg_query.RangeTblEntry) + private: + class _Internal; + + template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; + typedef void InternalArenaConstructable_; + typedef void DestructorSkippable_; + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > joinaliasvars_; + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > joinleftcols_; + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > joinrightcols_; + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > functions_; + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > values_lists_; + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > coltypes_; + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > coltypmods_; + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > colcollations_; + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > security_quals_; + ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr relkind_; + ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr ctename_; + ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr enrname_; + ::pg_query::TableSampleClause* tablesample_; + ::pg_query::Query* subquery_; + ::pg_query::TableFunc* tablefunc_; + ::pg_query::Alias* alias_; + ::pg_query::Alias* eref_; + int rtekind_; + ::PROTOBUF_NAMESPACE_ID::uint32 relid_; + ::PROTOBUF_NAMESPACE_ID::int32 rellockmode_; + int jointype_; + ::PROTOBUF_NAMESPACE_ID::int32 joinmergedcols_; + bool security_barrier_; + bool funcordinality_; + bool self_reference_; + bool lateral_; + double enrtuples_; + ::PROTOBUF_NAMESPACE_ID::uint32 ctelevelsup_; + bool inh_; + bool in_from_cl_; + ::PROTOBUF_NAMESPACE_ID::uint32 required_perms_; + ::PROTOBUF_NAMESPACE_ID::uint32 check_as_user_; + mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; + friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; +}; +// ------------------------------------------------------------------- + +class RangeTblFunction PROTOBUF_FINAL : + public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.RangeTblFunction) */ { + public: + inline RangeTblFunction() : RangeTblFunction(nullptr) {} + virtual ~RangeTblFunction(); + + RangeTblFunction(const RangeTblFunction& from); + RangeTblFunction(RangeTblFunction&& from) noexcept + : RangeTblFunction() { + *this = ::std::move(from); + } + + inline RangeTblFunction& operator=(const RangeTblFunction& from) { + CopyFrom(from); + return *this; + } + inline RangeTblFunction& operator=(RangeTblFunction&& from) noexcept { + if (GetArena() == from.GetArena()) { + if (this != &from) InternalSwap(&from); + } else { + CopyFrom(from); + } + return *this; + } + + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { + return GetDescriptor(); + } + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { + return GetMetadataStatic().descriptor; + } + static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { + return GetMetadataStatic().reflection; + } + static const RangeTblFunction& default_instance(); + + static inline const RangeTblFunction* internal_default_instance() { + return reinterpret_cast( + &_RangeTblFunction_default_instance_); + } + static constexpr int kIndexInFileMessages = + 204; + + friend void swap(RangeTblFunction& a, RangeTblFunction& b) { + a.Swap(&b); + } + inline void Swap(RangeTblFunction* other) { + if (other == this) return; + if (GetArena() == other->GetArena()) { + InternalSwap(other); + } else { + ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); + } + } + void UnsafeArenaSwap(RangeTblFunction* other) { + if (other == this) return; + GOOGLE_DCHECK(GetArena() == other->GetArena()); + InternalSwap(other); + } + + // implements Message ---------------------------------------------- + + inline RangeTblFunction* New() const final { + return CreateMaybeMessage(nullptr); + } + + RangeTblFunction* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { + return CreateMaybeMessage(arena); + } + void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void CopyFrom(const RangeTblFunction& from); + void MergeFrom(const RangeTblFunction& from); + PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; + bool IsInitialized() const final; + + size_t ByteSizeLong() const final; + const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; + ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( + ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; + int GetCachedSize() const final { return _cached_size_.Get(); } + + private: + inline void SharedCtor(); + inline void SharedDtor(); + void SetCachedSize(int size) const final; + void InternalSwap(RangeTblFunction* other); + friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; + static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { + return "pg_query.RangeTblFunction"; + } + protected: + explicit RangeTblFunction(::PROTOBUF_NAMESPACE_ID::Arena* arena); + private: + static void ArenaDtor(void* object); + inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); + public: + + ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; + private: + static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { + ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); + return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; + } + + public: + + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + + enum : int { + kFunccolnamesFieldNumber = 3, + kFunccoltypesFieldNumber = 4, + kFunccoltypmodsFieldNumber = 5, + kFunccolcollationsFieldNumber = 6, + kFuncexprFieldNumber = 1, + kFunccolcountFieldNumber = 2, + }; + // repeated .pg_query.Node funccolnames = 3 [json_name = "funccolnames"]; + int funccolnames_size() const; + private: + int _internal_funccolnames_size() const; + public: + void clear_funccolnames(); + ::pg_query::Node* mutable_funccolnames(int index); + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* + mutable_funccolnames(); + private: + const ::pg_query::Node& _internal_funccolnames(int index) const; + ::pg_query::Node* _internal_add_funccolnames(); + public: + const ::pg_query::Node& funccolnames(int index) const; + ::pg_query::Node* add_funccolnames(); + const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& + funccolnames() const; + + // repeated .pg_query.Node funccoltypes = 4 [json_name = "funccoltypes"]; + int funccoltypes_size() const; + private: + int _internal_funccoltypes_size() const; + public: + void clear_funccoltypes(); + ::pg_query::Node* mutable_funccoltypes(int index); + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* + mutable_funccoltypes(); + private: + const ::pg_query::Node& _internal_funccoltypes(int index) const; + ::pg_query::Node* _internal_add_funccoltypes(); + public: + const ::pg_query::Node& funccoltypes(int index) const; + ::pg_query::Node* add_funccoltypes(); + const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& + funccoltypes() const; + + // repeated .pg_query.Node funccoltypmods = 5 [json_name = "funccoltypmods"]; + int funccoltypmods_size() const; + private: + int _internal_funccoltypmods_size() const; + public: + void clear_funccoltypmods(); + ::pg_query::Node* mutable_funccoltypmods(int index); + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* + mutable_funccoltypmods(); + private: + const ::pg_query::Node& _internal_funccoltypmods(int index) const; + ::pg_query::Node* _internal_add_funccoltypmods(); + public: + const ::pg_query::Node& funccoltypmods(int index) const; + ::pg_query::Node* add_funccoltypmods(); + const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& + funccoltypmods() const; + + // repeated .pg_query.Node funccolcollations = 6 [json_name = "funccolcollations"]; + int funccolcollations_size() const; + private: + int _internal_funccolcollations_size() const; + public: + void clear_funccolcollations(); + ::pg_query::Node* mutable_funccolcollations(int index); + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* + mutable_funccolcollations(); + private: + const ::pg_query::Node& _internal_funccolcollations(int index) const; + ::pg_query::Node* _internal_add_funccolcollations(); + public: + const ::pg_query::Node& funccolcollations(int index) const; + ::pg_query::Node* add_funccolcollations(); + const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& + funccolcollations() const; + + // .pg_query.Node funcexpr = 1 [json_name = "funcexpr"]; + bool has_funcexpr() const; + private: + bool _internal_has_funcexpr() const; + public: + void clear_funcexpr(); + const ::pg_query::Node& funcexpr() const; + ::pg_query::Node* release_funcexpr(); + ::pg_query::Node* mutable_funcexpr(); + void set_allocated_funcexpr(::pg_query::Node* funcexpr); + private: + const ::pg_query::Node& _internal_funcexpr() const; + ::pg_query::Node* _internal_mutable_funcexpr(); + public: + void unsafe_arena_set_allocated_funcexpr( + ::pg_query::Node* funcexpr); + ::pg_query::Node* unsafe_arena_release_funcexpr(); + + // int32 funccolcount = 2 [json_name = "funccolcount"]; + void clear_funccolcount(); + ::PROTOBUF_NAMESPACE_ID::int32 funccolcount() const; + void set_funccolcount(::PROTOBUF_NAMESPACE_ID::int32 value); + private: + ::PROTOBUF_NAMESPACE_ID::int32 _internal_funccolcount() const; + void _internal_set_funccolcount(::PROTOBUF_NAMESPACE_ID::int32 value); + public: + + // @@protoc_insertion_point(class_scope:pg_query.RangeTblFunction) + private: + class _Internal; + + template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; + typedef void InternalArenaConstructable_; + typedef void DestructorSkippable_; + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > funccolnames_; + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > funccoltypes_; + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > funccoltypmods_; + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > funccolcollations_; + ::pg_query::Node* funcexpr_; + ::PROTOBUF_NAMESPACE_ID::int32 funccolcount_; + mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; + friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; +}; +// ------------------------------------------------------------------- + +class TableSampleClause PROTOBUF_FINAL : + public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.TableSampleClause) */ { + public: + inline TableSampleClause() : TableSampleClause(nullptr) {} + virtual ~TableSampleClause(); + + TableSampleClause(const TableSampleClause& from); + TableSampleClause(TableSampleClause&& from) noexcept + : TableSampleClause() { + *this = ::std::move(from); + } + + inline TableSampleClause& operator=(const TableSampleClause& from) { + CopyFrom(from); + return *this; + } + inline TableSampleClause& operator=(TableSampleClause&& from) noexcept { + if (GetArena() == from.GetArena()) { + if (this != &from) InternalSwap(&from); + } else { + CopyFrom(from); + } + return *this; + } + + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { + return GetDescriptor(); + } + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { + return GetMetadataStatic().descriptor; + } + static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { + return GetMetadataStatic().reflection; + } + static const TableSampleClause& default_instance(); + + static inline const TableSampleClause* internal_default_instance() { + return reinterpret_cast( + &_TableSampleClause_default_instance_); + } + static constexpr int kIndexInFileMessages = + 205; + + friend void swap(TableSampleClause& a, TableSampleClause& b) { + a.Swap(&b); + } + inline void Swap(TableSampleClause* other) { + if (other == this) return; + if (GetArena() == other->GetArena()) { + InternalSwap(other); + } else { + ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); + } + } + void UnsafeArenaSwap(TableSampleClause* other) { + if (other == this) return; + GOOGLE_DCHECK(GetArena() == other->GetArena()); + InternalSwap(other); + } + + // implements Message ---------------------------------------------- + + inline TableSampleClause* New() const final { + return CreateMaybeMessage(nullptr); + } + + TableSampleClause* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { + return CreateMaybeMessage(arena); + } + void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void CopyFrom(const TableSampleClause& from); + void MergeFrom(const TableSampleClause& from); + PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; + bool IsInitialized() const final; + + size_t ByteSizeLong() const final; + const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; + ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( + ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; + int GetCachedSize() const final { return _cached_size_.Get(); } + + private: + inline void SharedCtor(); + inline void SharedDtor(); + void SetCachedSize(int size) const final; + void InternalSwap(TableSampleClause* other); + friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; + static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { + return "pg_query.TableSampleClause"; + } + protected: + explicit TableSampleClause(::PROTOBUF_NAMESPACE_ID::Arena* arena); + private: + static void ArenaDtor(void* object); + inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); + public: + + ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; + private: + static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { + ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); + return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; + } + + public: + + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + + enum : int { + kArgsFieldNumber = 2, + kRepeatableFieldNumber = 3, + kTsmhandlerFieldNumber = 1, + }; + // repeated .pg_query.Node args = 2 [json_name = "args"]; + int args_size() const; + private: + int _internal_args_size() const; + public: + void clear_args(); + ::pg_query::Node* mutable_args(int index); + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* + mutable_args(); + private: + const ::pg_query::Node& _internal_args(int index) const; + ::pg_query::Node* _internal_add_args(); + public: + const ::pg_query::Node& args(int index) const; + ::pg_query::Node* add_args(); + const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& + args() const; + + // .pg_query.Node repeatable = 3 [json_name = "repeatable"]; + bool has_repeatable() const; + private: + bool _internal_has_repeatable() const; + public: + void clear_repeatable(); + const ::pg_query::Node& repeatable() const; + ::pg_query::Node* release_repeatable(); + ::pg_query::Node* mutable_repeatable(); + void set_allocated_repeatable(::pg_query::Node* repeatable); + private: + const ::pg_query::Node& _internal_repeatable() const; + ::pg_query::Node* _internal_mutable_repeatable(); + public: + void unsafe_arena_set_allocated_repeatable( + ::pg_query::Node* repeatable); + ::pg_query::Node* unsafe_arena_release_repeatable(); + + // uint32 tsmhandler = 1 [json_name = "tsmhandler"]; + void clear_tsmhandler(); + ::PROTOBUF_NAMESPACE_ID::uint32 tsmhandler() const; + void set_tsmhandler(::PROTOBUF_NAMESPACE_ID::uint32 value); + private: + ::PROTOBUF_NAMESPACE_ID::uint32 _internal_tsmhandler() const; + void _internal_set_tsmhandler(::PROTOBUF_NAMESPACE_ID::uint32 value); + public: + + // @@protoc_insertion_point(class_scope:pg_query.TableSampleClause) + private: + class _Internal; + + template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; + typedef void InternalArenaConstructable_; + typedef void DestructorSkippable_; + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > args_; + ::pg_query::Node* repeatable_; + ::PROTOBUF_NAMESPACE_ID::uint32 tsmhandler_; + mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; + friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; +}; +// ------------------------------------------------------------------- + +class WithCheckOption PROTOBUF_FINAL : + public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.WithCheckOption) */ { + public: + inline WithCheckOption() : WithCheckOption(nullptr) {} + virtual ~WithCheckOption(); + + WithCheckOption(const WithCheckOption& from); + WithCheckOption(WithCheckOption&& from) noexcept + : WithCheckOption() { + *this = ::std::move(from); + } + + inline WithCheckOption& operator=(const WithCheckOption& from) { + CopyFrom(from); + return *this; + } + inline WithCheckOption& operator=(WithCheckOption&& from) noexcept { + if (GetArena() == from.GetArena()) { + if (this != &from) InternalSwap(&from); + } else { + CopyFrom(from); + } + return *this; + } + + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { + return GetDescriptor(); + } + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { + return GetMetadataStatic().descriptor; + } + static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { + return GetMetadataStatic().reflection; + } + static const WithCheckOption& default_instance(); + + static inline const WithCheckOption* internal_default_instance() { + return reinterpret_cast( + &_WithCheckOption_default_instance_); + } + static constexpr int kIndexInFileMessages = + 206; + + friend void swap(WithCheckOption& a, WithCheckOption& b) { + a.Swap(&b); + } + inline void Swap(WithCheckOption* other) { + if (other == this) return; + if (GetArena() == other->GetArena()) { + InternalSwap(other); + } else { + ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); + } + } + void UnsafeArenaSwap(WithCheckOption* other) { + if (other == this) return; + GOOGLE_DCHECK(GetArena() == other->GetArena()); + InternalSwap(other); + } + + // implements Message ---------------------------------------------- + + inline WithCheckOption* New() const final { + return CreateMaybeMessage(nullptr); + } + + WithCheckOption* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { + return CreateMaybeMessage(arena); + } + void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void CopyFrom(const WithCheckOption& from); + void MergeFrom(const WithCheckOption& from); + PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; + bool IsInitialized() const final; + + size_t ByteSizeLong() const final; + const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; + ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( + ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; + int GetCachedSize() const final { return _cached_size_.Get(); } + + private: + inline void SharedCtor(); + inline void SharedDtor(); + void SetCachedSize(int size) const final; + void InternalSwap(WithCheckOption* other); + friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; + static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { + return "pg_query.WithCheckOption"; + } + protected: + explicit WithCheckOption(::PROTOBUF_NAMESPACE_ID::Arena* arena); + private: + static void ArenaDtor(void* object); + inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); + public: + + ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; + private: + static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { + ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); + return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; + } + + public: + + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + + enum : int { + kRelnameFieldNumber = 2, + kPolnameFieldNumber = 3, + kQualFieldNumber = 4, + kKindFieldNumber = 1, + kCascadedFieldNumber = 5, + }; + // string relname = 2 [json_name = "relname"]; + void clear_relname(); + const std::string& relname() const; + void set_relname(const std::string& value); + void set_relname(std::string&& value); + void set_relname(const char* value); + void set_relname(const char* value, size_t size); + std::string* mutable_relname(); + std::string* release_relname(); + void set_allocated_relname(std::string* relname); + private: + const std::string& _internal_relname() const; + void _internal_set_relname(const std::string& value); + std::string* _internal_mutable_relname(); + public: + + // string polname = 3 [json_name = "polname"]; + void clear_polname(); + const std::string& polname() const; + void set_polname(const std::string& value); + void set_polname(std::string&& value); + void set_polname(const char* value); + void set_polname(const char* value, size_t size); + std::string* mutable_polname(); + std::string* release_polname(); + void set_allocated_polname(std::string* polname); + private: + const std::string& _internal_polname() const; + void _internal_set_polname(const std::string& value); + std::string* _internal_mutable_polname(); + public: + + // .pg_query.Node qual = 4 [json_name = "qual"]; + bool has_qual() const; + private: + bool _internal_has_qual() const; + public: + void clear_qual(); + const ::pg_query::Node& qual() const; + ::pg_query::Node* release_qual(); + ::pg_query::Node* mutable_qual(); + void set_allocated_qual(::pg_query::Node* qual); + private: + const ::pg_query::Node& _internal_qual() const; + ::pg_query::Node* _internal_mutable_qual(); + public: + void unsafe_arena_set_allocated_qual( + ::pg_query::Node* qual); + ::pg_query::Node* unsafe_arena_release_qual(); + + // .pg_query.WCOKind kind = 1 [json_name = "kind"]; + void clear_kind(); + ::pg_query::WCOKind kind() const; + void set_kind(::pg_query::WCOKind value); + private: + ::pg_query::WCOKind _internal_kind() const; + void _internal_set_kind(::pg_query::WCOKind value); + public: + + // bool cascaded = 5 [json_name = "cascaded"]; + void clear_cascaded(); + bool cascaded() const; + void set_cascaded(bool value); + private: + bool _internal_cascaded() const; + void _internal_set_cascaded(bool value); + public: + + // @@protoc_insertion_point(class_scope:pg_query.WithCheckOption) + private: + class _Internal; + + template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; + typedef void InternalArenaConstructable_; + typedef void DestructorSkippable_; + ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr relname_; + ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr polname_; + ::pg_query::Node* qual_; + int kind_; + bool cascaded_; + mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; + friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; +}; +// ------------------------------------------------------------------- + +class SortGroupClause PROTOBUF_FINAL : + public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.SortGroupClause) */ { + public: + inline SortGroupClause() : SortGroupClause(nullptr) {} + virtual ~SortGroupClause(); + + SortGroupClause(const SortGroupClause& from); + SortGroupClause(SortGroupClause&& from) noexcept + : SortGroupClause() { + *this = ::std::move(from); + } + + inline SortGroupClause& operator=(const SortGroupClause& from) { + CopyFrom(from); + return *this; + } + inline SortGroupClause& operator=(SortGroupClause&& from) noexcept { + if (GetArena() == from.GetArena()) { + if (this != &from) InternalSwap(&from); + } else { + CopyFrom(from); + } + return *this; + } + + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { + return GetDescriptor(); + } + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { + return GetMetadataStatic().descriptor; + } + static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { + return GetMetadataStatic().reflection; + } + static const SortGroupClause& default_instance(); + + static inline const SortGroupClause* internal_default_instance() { + return reinterpret_cast( + &_SortGroupClause_default_instance_); + } + static constexpr int kIndexInFileMessages = + 207; + + friend void swap(SortGroupClause& a, SortGroupClause& b) { + a.Swap(&b); + } + inline void Swap(SortGroupClause* other) { + if (other == this) return; + if (GetArena() == other->GetArena()) { + InternalSwap(other); + } else { + ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); + } + } + void UnsafeArenaSwap(SortGroupClause* other) { + if (other == this) return; + GOOGLE_DCHECK(GetArena() == other->GetArena()); + InternalSwap(other); + } + + // implements Message ---------------------------------------------- + + inline SortGroupClause* New() const final { + return CreateMaybeMessage(nullptr); + } + + SortGroupClause* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { + return CreateMaybeMessage(arena); + } + void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void CopyFrom(const SortGroupClause& from); + void MergeFrom(const SortGroupClause& from); + PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; + bool IsInitialized() const final; + + size_t ByteSizeLong() const final; + const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; + ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( + ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; + int GetCachedSize() const final { return _cached_size_.Get(); } + + private: + inline void SharedCtor(); + inline void SharedDtor(); + void SetCachedSize(int size) const final; + void InternalSwap(SortGroupClause* other); + friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; + static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { + return "pg_query.SortGroupClause"; + } + protected: + explicit SortGroupClause(::PROTOBUF_NAMESPACE_ID::Arena* arena); + private: + static void ArenaDtor(void* object); + inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); + public: + + ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; + private: + static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { + ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); + return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; + } + + public: + + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + + enum : int { + kTleSortGroupRefFieldNumber = 1, + kEqopFieldNumber = 2, + kSortopFieldNumber = 3, + kNullsFirstFieldNumber = 4, + kHashableFieldNumber = 5, + }; + // uint32 tle_sort_group_ref = 1 [json_name = "tleSortGroupRef"]; + void clear_tle_sort_group_ref(); + ::PROTOBUF_NAMESPACE_ID::uint32 tle_sort_group_ref() const; + void set_tle_sort_group_ref(::PROTOBUF_NAMESPACE_ID::uint32 value); + private: + ::PROTOBUF_NAMESPACE_ID::uint32 _internal_tle_sort_group_ref() const; + void _internal_set_tle_sort_group_ref(::PROTOBUF_NAMESPACE_ID::uint32 value); + public: + + // uint32 eqop = 2 [json_name = "eqop"]; + void clear_eqop(); + ::PROTOBUF_NAMESPACE_ID::uint32 eqop() const; + void set_eqop(::PROTOBUF_NAMESPACE_ID::uint32 value); + private: + ::PROTOBUF_NAMESPACE_ID::uint32 _internal_eqop() const; + void _internal_set_eqop(::PROTOBUF_NAMESPACE_ID::uint32 value); + public: + + // uint32 sortop = 3 [json_name = "sortop"]; + void clear_sortop(); + ::PROTOBUF_NAMESPACE_ID::uint32 sortop() const; + void set_sortop(::PROTOBUF_NAMESPACE_ID::uint32 value); + private: + ::PROTOBUF_NAMESPACE_ID::uint32 _internal_sortop() const; + void _internal_set_sortop(::PROTOBUF_NAMESPACE_ID::uint32 value); + public: + + // bool nulls_first = 4 [json_name = "nulls_first"]; + void clear_nulls_first(); + bool nulls_first() const; + void set_nulls_first(bool value); + private: + bool _internal_nulls_first() const; + void _internal_set_nulls_first(bool value); + public: + + // bool hashable = 5 [json_name = "hashable"]; + void clear_hashable(); + bool hashable() const; + void set_hashable(bool value); + private: + bool _internal_hashable() const; + void _internal_set_hashable(bool value); + public: + + // @@protoc_insertion_point(class_scope:pg_query.SortGroupClause) + private: + class _Internal; + + template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; + typedef void InternalArenaConstructable_; + typedef void DestructorSkippable_; + ::PROTOBUF_NAMESPACE_ID::uint32 tle_sort_group_ref_; + ::PROTOBUF_NAMESPACE_ID::uint32 eqop_; + ::PROTOBUF_NAMESPACE_ID::uint32 sortop_; + bool nulls_first_; + bool hashable_; + mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; + friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; +}; +// ------------------------------------------------------------------- + +class GroupingSet PROTOBUF_FINAL : + public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.GroupingSet) */ { + public: + inline GroupingSet() : GroupingSet(nullptr) {} + virtual ~GroupingSet(); + + GroupingSet(const GroupingSet& from); + GroupingSet(GroupingSet&& from) noexcept + : GroupingSet() { + *this = ::std::move(from); + } + + inline GroupingSet& operator=(const GroupingSet& from) { + CopyFrom(from); + return *this; + } + inline GroupingSet& operator=(GroupingSet&& from) noexcept { + if (GetArena() == from.GetArena()) { + if (this != &from) InternalSwap(&from); + } else { + CopyFrom(from); + } + return *this; + } + + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { + return GetDescriptor(); + } + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { + return GetMetadataStatic().descriptor; + } + static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { + return GetMetadataStatic().reflection; + } + static const GroupingSet& default_instance(); + + static inline const GroupingSet* internal_default_instance() { + return reinterpret_cast( + &_GroupingSet_default_instance_); + } + static constexpr int kIndexInFileMessages = + 208; + + friend void swap(GroupingSet& a, GroupingSet& b) { + a.Swap(&b); + } + inline void Swap(GroupingSet* other) { + if (other == this) return; + if (GetArena() == other->GetArena()) { + InternalSwap(other); + } else { + ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); + } + } + void UnsafeArenaSwap(GroupingSet* other) { + if (other == this) return; + GOOGLE_DCHECK(GetArena() == other->GetArena()); + InternalSwap(other); + } + + // implements Message ---------------------------------------------- + + inline GroupingSet* New() const final { + return CreateMaybeMessage(nullptr); + } + + GroupingSet* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { + return CreateMaybeMessage(arena); + } + void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void CopyFrom(const GroupingSet& from); + void MergeFrom(const GroupingSet& from); + PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; + bool IsInitialized() const final; + + size_t ByteSizeLong() const final; + const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; + ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( + ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; + int GetCachedSize() const final { return _cached_size_.Get(); } + + private: + inline void SharedCtor(); + inline void SharedDtor(); + void SetCachedSize(int size) const final; + void InternalSwap(GroupingSet* other); + friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; + static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { + return "pg_query.GroupingSet"; + } + protected: + explicit GroupingSet(::PROTOBUF_NAMESPACE_ID::Arena* arena); + private: + static void ArenaDtor(void* object); + inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); + public: + + ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; + private: + static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { + ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); + return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; + } + + public: + + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + + enum : int { + kContentFieldNumber = 2, + kKindFieldNumber = 1, + kLocationFieldNumber = 3, + }; + // repeated .pg_query.Node content = 2 [json_name = "content"]; + int content_size() const; + private: + int _internal_content_size() const; + public: + void clear_content(); + ::pg_query::Node* mutable_content(int index); + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* + mutable_content(); + private: + const ::pg_query::Node& _internal_content(int index) const; + ::pg_query::Node* _internal_add_content(); + public: + const ::pg_query::Node& content(int index) const; + ::pg_query::Node* add_content(); + const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& + content() const; + + // .pg_query.GroupingSetKind kind = 1 [json_name = "kind"]; + void clear_kind(); + ::pg_query::GroupingSetKind kind() const; + void set_kind(::pg_query::GroupingSetKind value); + private: + ::pg_query::GroupingSetKind _internal_kind() const; + void _internal_set_kind(::pg_query::GroupingSetKind value); + public: + + // int32 location = 3 [json_name = "location"]; + void clear_location(); + ::PROTOBUF_NAMESPACE_ID::int32 location() const; + void set_location(::PROTOBUF_NAMESPACE_ID::int32 value); + private: + ::PROTOBUF_NAMESPACE_ID::int32 _internal_location() const; + void _internal_set_location(::PROTOBUF_NAMESPACE_ID::int32 value); + public: + + // @@protoc_insertion_point(class_scope:pg_query.GroupingSet) + private: + class _Internal; + + template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; + typedef void InternalArenaConstructable_; + typedef void DestructorSkippable_; + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > content_; + int kind_; + ::PROTOBUF_NAMESPACE_ID::int32 location_; + mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; + friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; +}; +// ------------------------------------------------------------------- + +class WindowClause PROTOBUF_FINAL : + public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.WindowClause) */ { + public: + inline WindowClause() : WindowClause(nullptr) {} + virtual ~WindowClause(); + + WindowClause(const WindowClause& from); + WindowClause(WindowClause&& from) noexcept + : WindowClause() { + *this = ::std::move(from); + } + + inline WindowClause& operator=(const WindowClause& from) { + CopyFrom(from); + return *this; + } + inline WindowClause& operator=(WindowClause&& from) noexcept { + if (GetArena() == from.GetArena()) { + if (this != &from) InternalSwap(&from); + } else { + CopyFrom(from); + } + return *this; + } + + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { + return GetDescriptor(); + } + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { + return GetMetadataStatic().descriptor; + } + static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { + return GetMetadataStatic().reflection; + } + static const WindowClause& default_instance(); + + static inline const WindowClause* internal_default_instance() { + return reinterpret_cast( + &_WindowClause_default_instance_); + } + static constexpr int kIndexInFileMessages = + 209; + + friend void swap(WindowClause& a, WindowClause& b) { + a.Swap(&b); + } + inline void Swap(WindowClause* other) { + if (other == this) return; + if (GetArena() == other->GetArena()) { + InternalSwap(other); + } else { + ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); + } + } + void UnsafeArenaSwap(WindowClause* other) { + if (other == this) return; + GOOGLE_DCHECK(GetArena() == other->GetArena()); + InternalSwap(other); + } + + // implements Message ---------------------------------------------- + + inline WindowClause* New() const final { + return CreateMaybeMessage(nullptr); + } + + WindowClause* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { + return CreateMaybeMessage(arena); + } + void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void CopyFrom(const WindowClause& from); + void MergeFrom(const WindowClause& from); + PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; + bool IsInitialized() const final; + + size_t ByteSizeLong() const final; + const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; + ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( + ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; + int GetCachedSize() const final { return _cached_size_.Get(); } + + private: + inline void SharedCtor(); + inline void SharedDtor(); + void SetCachedSize(int size) const final; + void InternalSwap(WindowClause* other); + friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; + static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { + return "pg_query.WindowClause"; + } + protected: + explicit WindowClause(::PROTOBUF_NAMESPACE_ID::Arena* arena); + private: + static void ArenaDtor(void* object); + inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); + public: + + ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; + private: + static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { + ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); + return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; + } + + public: + + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + + enum : int { + kPartitionClauseFieldNumber = 3, + kOrderClauseFieldNumber = 4, + kNameFieldNumber = 1, + kRefnameFieldNumber = 2, + kStartOffsetFieldNumber = 6, + kEndOffsetFieldNumber = 7, + kFrameOptionsFieldNumber = 5, + kStartInRangeFuncFieldNumber = 8, + kEndInRangeFuncFieldNumber = 9, + kInRangeCollFieldNumber = 10, + kInRangeAscFieldNumber = 11, + kInRangeNullsFirstFieldNumber = 12, + kCopiedOrderFieldNumber = 14, + kWinrefFieldNumber = 13, + }; + // repeated .pg_query.Node partition_clause = 3 [json_name = "partitionClause"]; + int partition_clause_size() const; + private: + int _internal_partition_clause_size() const; + public: + void clear_partition_clause(); + ::pg_query::Node* mutable_partition_clause(int index); + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* + mutable_partition_clause(); + private: + const ::pg_query::Node& _internal_partition_clause(int index) const; + ::pg_query::Node* _internal_add_partition_clause(); + public: + const ::pg_query::Node& partition_clause(int index) const; + ::pg_query::Node* add_partition_clause(); + const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& + partition_clause() const; + + // repeated .pg_query.Node order_clause = 4 [json_name = "orderClause"]; + int order_clause_size() const; + private: + int _internal_order_clause_size() const; + public: + void clear_order_clause(); + ::pg_query::Node* mutable_order_clause(int index); + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* + mutable_order_clause(); + private: + const ::pg_query::Node& _internal_order_clause(int index) const; + ::pg_query::Node* _internal_add_order_clause(); + public: + const ::pg_query::Node& order_clause(int index) const; + ::pg_query::Node* add_order_clause(); + const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& + order_clause() const; + + // string name = 1 [json_name = "name"]; + void clear_name(); + const std::string& name() const; + void set_name(const std::string& value); + void set_name(std::string&& value); + void set_name(const char* value); + void set_name(const char* value, size_t size); + std::string* mutable_name(); + std::string* release_name(); + void set_allocated_name(std::string* name); + private: + const std::string& _internal_name() const; + void _internal_set_name(const std::string& value); + std::string* _internal_mutable_name(); + public: + + // string refname = 2 [json_name = "refname"]; + void clear_refname(); + const std::string& refname() const; + void set_refname(const std::string& value); + void set_refname(std::string&& value); + void set_refname(const char* value); + void set_refname(const char* value, size_t size); + std::string* mutable_refname(); + std::string* release_refname(); + void set_allocated_refname(std::string* refname); + private: + const std::string& _internal_refname() const; + void _internal_set_refname(const std::string& value); + std::string* _internal_mutable_refname(); + public: + + // .pg_query.Node start_offset = 6 [json_name = "startOffset"]; + bool has_start_offset() const; + private: + bool _internal_has_start_offset() const; + public: + void clear_start_offset(); + const ::pg_query::Node& start_offset() const; + ::pg_query::Node* release_start_offset(); + ::pg_query::Node* mutable_start_offset(); + void set_allocated_start_offset(::pg_query::Node* start_offset); + private: + const ::pg_query::Node& _internal_start_offset() const; + ::pg_query::Node* _internal_mutable_start_offset(); + public: + void unsafe_arena_set_allocated_start_offset( + ::pg_query::Node* start_offset); + ::pg_query::Node* unsafe_arena_release_start_offset(); + + // .pg_query.Node end_offset = 7 [json_name = "endOffset"]; + bool has_end_offset() const; + private: + bool _internal_has_end_offset() const; + public: + void clear_end_offset(); + const ::pg_query::Node& end_offset() const; + ::pg_query::Node* release_end_offset(); + ::pg_query::Node* mutable_end_offset(); + void set_allocated_end_offset(::pg_query::Node* end_offset); + private: + const ::pg_query::Node& _internal_end_offset() const; + ::pg_query::Node* _internal_mutable_end_offset(); + public: + void unsafe_arena_set_allocated_end_offset( + ::pg_query::Node* end_offset); + ::pg_query::Node* unsafe_arena_release_end_offset(); + + // int32 frame_options = 5 [json_name = "frameOptions"]; + void clear_frame_options(); + ::PROTOBUF_NAMESPACE_ID::int32 frame_options() const; + void set_frame_options(::PROTOBUF_NAMESPACE_ID::int32 value); + private: + ::PROTOBUF_NAMESPACE_ID::int32 _internal_frame_options() const; + void _internal_set_frame_options(::PROTOBUF_NAMESPACE_ID::int32 value); + public: + + // uint32 start_in_range_func = 8 [json_name = "startInRangeFunc"]; + void clear_start_in_range_func(); + ::PROTOBUF_NAMESPACE_ID::uint32 start_in_range_func() const; + void set_start_in_range_func(::PROTOBUF_NAMESPACE_ID::uint32 value); + private: + ::PROTOBUF_NAMESPACE_ID::uint32 _internal_start_in_range_func() const; + void _internal_set_start_in_range_func(::PROTOBUF_NAMESPACE_ID::uint32 value); + public: + + // uint32 end_in_range_func = 9 [json_name = "endInRangeFunc"]; + void clear_end_in_range_func(); + ::PROTOBUF_NAMESPACE_ID::uint32 end_in_range_func() const; + void set_end_in_range_func(::PROTOBUF_NAMESPACE_ID::uint32 value); + private: + ::PROTOBUF_NAMESPACE_ID::uint32 _internal_end_in_range_func() const; + void _internal_set_end_in_range_func(::PROTOBUF_NAMESPACE_ID::uint32 value); + public: + + // uint32 in_range_coll = 10 [json_name = "inRangeColl"]; + void clear_in_range_coll(); + ::PROTOBUF_NAMESPACE_ID::uint32 in_range_coll() const; + void set_in_range_coll(::PROTOBUF_NAMESPACE_ID::uint32 value); + private: + ::PROTOBUF_NAMESPACE_ID::uint32 _internal_in_range_coll() const; + void _internal_set_in_range_coll(::PROTOBUF_NAMESPACE_ID::uint32 value); + public: + + // bool in_range_asc = 11 [json_name = "inRangeAsc"]; + void clear_in_range_asc(); + bool in_range_asc() const; + void set_in_range_asc(bool value); + private: + bool _internal_in_range_asc() const; + void _internal_set_in_range_asc(bool value); + public: + + // bool in_range_nulls_first = 12 [json_name = "inRangeNullsFirst"]; + void clear_in_range_nulls_first(); + bool in_range_nulls_first() const; + void set_in_range_nulls_first(bool value); + private: + bool _internal_in_range_nulls_first() const; + void _internal_set_in_range_nulls_first(bool value); + public: + + // bool copied_order = 14 [json_name = "copiedOrder"]; + void clear_copied_order(); + bool copied_order() const; + void set_copied_order(bool value); + private: + bool _internal_copied_order() const; + void _internal_set_copied_order(bool value); + public: + + // uint32 winref = 13 [json_name = "winref"]; + void clear_winref(); + ::PROTOBUF_NAMESPACE_ID::uint32 winref() const; + void set_winref(::PROTOBUF_NAMESPACE_ID::uint32 value); + private: + ::PROTOBUF_NAMESPACE_ID::uint32 _internal_winref() const; + void _internal_set_winref(::PROTOBUF_NAMESPACE_ID::uint32 value); + public: + + // @@protoc_insertion_point(class_scope:pg_query.WindowClause) + private: + class _Internal; + + template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; + typedef void InternalArenaConstructable_; + typedef void DestructorSkippable_; + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > partition_clause_; + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > order_clause_; + ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr name_; + ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr refname_; + ::pg_query::Node* start_offset_; + ::pg_query::Node* end_offset_; + ::PROTOBUF_NAMESPACE_ID::int32 frame_options_; + ::PROTOBUF_NAMESPACE_ID::uint32 start_in_range_func_; + ::PROTOBUF_NAMESPACE_ID::uint32 end_in_range_func_; + ::PROTOBUF_NAMESPACE_ID::uint32 in_range_coll_; + bool in_range_asc_; + bool in_range_nulls_first_; + bool copied_order_; + ::PROTOBUF_NAMESPACE_ID::uint32 winref_; + mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; + friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; +}; +// ------------------------------------------------------------------- + +class ObjectWithArgs PROTOBUF_FINAL : + public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.ObjectWithArgs) */ { + public: + inline ObjectWithArgs() : ObjectWithArgs(nullptr) {} + virtual ~ObjectWithArgs(); + + ObjectWithArgs(const ObjectWithArgs& from); + ObjectWithArgs(ObjectWithArgs&& from) noexcept + : ObjectWithArgs() { + *this = ::std::move(from); + } + + inline ObjectWithArgs& operator=(const ObjectWithArgs& from) { + CopyFrom(from); + return *this; + } + inline ObjectWithArgs& operator=(ObjectWithArgs&& from) noexcept { + if (GetArena() == from.GetArena()) { + if (this != &from) InternalSwap(&from); + } else { + CopyFrom(from); + } + return *this; + } + + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { + return GetDescriptor(); + } + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { + return GetMetadataStatic().descriptor; + } + static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { + return GetMetadataStatic().reflection; + } + static const ObjectWithArgs& default_instance(); + + static inline const ObjectWithArgs* internal_default_instance() { + return reinterpret_cast( + &_ObjectWithArgs_default_instance_); + } + static constexpr int kIndexInFileMessages = + 210; + + friend void swap(ObjectWithArgs& a, ObjectWithArgs& b) { + a.Swap(&b); + } + inline void Swap(ObjectWithArgs* other) { + if (other == this) return; + if (GetArena() == other->GetArena()) { + InternalSwap(other); + } else { + ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); + } + } + void UnsafeArenaSwap(ObjectWithArgs* other) { + if (other == this) return; + GOOGLE_DCHECK(GetArena() == other->GetArena()); + InternalSwap(other); + } + + // implements Message ---------------------------------------------- + + inline ObjectWithArgs* New() const final { + return CreateMaybeMessage(nullptr); + } + + ObjectWithArgs* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { + return CreateMaybeMessage(arena); + } + void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void CopyFrom(const ObjectWithArgs& from); + void MergeFrom(const ObjectWithArgs& from); + PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; + bool IsInitialized() const final; + + size_t ByteSizeLong() const final; + const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; + ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( + ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; + int GetCachedSize() const final { return _cached_size_.Get(); } + + private: + inline void SharedCtor(); + inline void SharedDtor(); + void SetCachedSize(int size) const final; + void InternalSwap(ObjectWithArgs* other); + friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; + static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { + return "pg_query.ObjectWithArgs"; + } + protected: + explicit ObjectWithArgs(::PROTOBUF_NAMESPACE_ID::Arena* arena); + private: + static void ArenaDtor(void* object); + inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); + public: + + ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; + private: + static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { + ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); + return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; + } + + public: + + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + + enum : int { + kObjnameFieldNumber = 1, + kObjargsFieldNumber = 2, + kArgsUnspecifiedFieldNumber = 3, + }; + // repeated .pg_query.Node objname = 1 [json_name = "objname"]; + int objname_size() const; + private: + int _internal_objname_size() const; + public: + void clear_objname(); + ::pg_query::Node* mutable_objname(int index); + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* + mutable_objname(); + private: + const ::pg_query::Node& _internal_objname(int index) const; + ::pg_query::Node* _internal_add_objname(); + public: + const ::pg_query::Node& objname(int index) const; + ::pg_query::Node* add_objname(); + const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& + objname() const; + + // repeated .pg_query.Node objargs = 2 [json_name = "objargs"]; + int objargs_size() const; + private: + int _internal_objargs_size() const; + public: + void clear_objargs(); + ::pg_query::Node* mutable_objargs(int index); + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* + mutable_objargs(); + private: + const ::pg_query::Node& _internal_objargs(int index) const; + ::pg_query::Node* _internal_add_objargs(); + public: + const ::pg_query::Node& objargs(int index) const; + ::pg_query::Node* add_objargs(); + const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& + objargs() const; + + // bool args_unspecified = 3 [json_name = "args_unspecified"]; + void clear_args_unspecified(); + bool args_unspecified() const; + void set_args_unspecified(bool value); + private: + bool _internal_args_unspecified() const; + void _internal_set_args_unspecified(bool value); + public: + + // @@protoc_insertion_point(class_scope:pg_query.ObjectWithArgs) + private: + class _Internal; + + template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; + typedef void InternalArenaConstructable_; + typedef void DestructorSkippable_; + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > objname_; + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > objargs_; + bool args_unspecified_; + mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; + friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; +}; +// ------------------------------------------------------------------- + +class AccessPriv PROTOBUF_FINAL : + public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.AccessPriv) */ { + public: + inline AccessPriv() : AccessPriv(nullptr) {} + virtual ~AccessPriv(); + + AccessPriv(const AccessPriv& from); + AccessPriv(AccessPriv&& from) noexcept + : AccessPriv() { + *this = ::std::move(from); + } + + inline AccessPriv& operator=(const AccessPriv& from) { + CopyFrom(from); + return *this; + } + inline AccessPriv& operator=(AccessPriv&& from) noexcept { + if (GetArena() == from.GetArena()) { + if (this != &from) InternalSwap(&from); + } else { + CopyFrom(from); + } + return *this; + } + + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { + return GetDescriptor(); + } + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { + return GetMetadataStatic().descriptor; + } + static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { + return GetMetadataStatic().reflection; + } + static const AccessPriv& default_instance(); + + static inline const AccessPriv* internal_default_instance() { + return reinterpret_cast( + &_AccessPriv_default_instance_); + } + static constexpr int kIndexInFileMessages = + 211; + + friend void swap(AccessPriv& a, AccessPriv& b) { + a.Swap(&b); + } + inline void Swap(AccessPriv* other) { + if (other == this) return; + if (GetArena() == other->GetArena()) { + InternalSwap(other); + } else { + ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); + } + } + void UnsafeArenaSwap(AccessPriv* other) { + if (other == this) return; + GOOGLE_DCHECK(GetArena() == other->GetArena()); + InternalSwap(other); + } + + // implements Message ---------------------------------------------- + + inline AccessPriv* New() const final { + return CreateMaybeMessage(nullptr); + } + + AccessPriv* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { + return CreateMaybeMessage(arena); + } + void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void CopyFrom(const AccessPriv& from); + void MergeFrom(const AccessPriv& from); + PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; + bool IsInitialized() const final; + + size_t ByteSizeLong() const final; + const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; + ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( + ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; + int GetCachedSize() const final { return _cached_size_.Get(); } + + private: + inline void SharedCtor(); + inline void SharedDtor(); + void SetCachedSize(int size) const final; + void InternalSwap(AccessPriv* other); + friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; + static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { + return "pg_query.AccessPriv"; + } + protected: + explicit AccessPriv(::PROTOBUF_NAMESPACE_ID::Arena* arena); + private: + static void ArenaDtor(void* object); + inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); + public: + + ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; + private: + static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { + ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); + return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; + } + + public: + + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + + enum : int { + kColsFieldNumber = 2, + kPrivNameFieldNumber = 1, + }; + // repeated .pg_query.Node cols = 2 [json_name = "cols"]; + int cols_size() const; + private: + int _internal_cols_size() const; + public: + void clear_cols(); + ::pg_query::Node* mutable_cols(int index); + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* + mutable_cols(); + private: + const ::pg_query::Node& _internal_cols(int index) const; + ::pg_query::Node* _internal_add_cols(); + public: + const ::pg_query::Node& cols(int index) const; + ::pg_query::Node* add_cols(); + const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& + cols() const; + + // string priv_name = 1 [json_name = "priv_name"]; + void clear_priv_name(); + const std::string& priv_name() const; + void set_priv_name(const std::string& value); + void set_priv_name(std::string&& value); + void set_priv_name(const char* value); + void set_priv_name(const char* value, size_t size); + std::string* mutable_priv_name(); + std::string* release_priv_name(); + void set_allocated_priv_name(std::string* priv_name); + private: + const std::string& _internal_priv_name() const; + void _internal_set_priv_name(const std::string& value); + std::string* _internal_mutable_priv_name(); + public: + + // @@protoc_insertion_point(class_scope:pg_query.AccessPriv) + private: + class _Internal; + + template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; + typedef void InternalArenaConstructable_; + typedef void DestructorSkippable_; + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > cols_; + ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr priv_name_; + mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; + friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; +}; +// ------------------------------------------------------------------- + +class CreateOpClassItem PROTOBUF_FINAL : + public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.CreateOpClassItem) */ { + public: + inline CreateOpClassItem() : CreateOpClassItem(nullptr) {} + virtual ~CreateOpClassItem(); + + CreateOpClassItem(const CreateOpClassItem& from); + CreateOpClassItem(CreateOpClassItem&& from) noexcept + : CreateOpClassItem() { + *this = ::std::move(from); + } + + inline CreateOpClassItem& operator=(const CreateOpClassItem& from) { + CopyFrom(from); + return *this; + } + inline CreateOpClassItem& operator=(CreateOpClassItem&& from) noexcept { + if (GetArena() == from.GetArena()) { + if (this != &from) InternalSwap(&from); + } else { + CopyFrom(from); + } + return *this; + } + + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { + return GetDescriptor(); + } + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { + return GetMetadataStatic().descriptor; + } + static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { + return GetMetadataStatic().reflection; + } + static const CreateOpClassItem& default_instance(); + + static inline const CreateOpClassItem* internal_default_instance() { + return reinterpret_cast( + &_CreateOpClassItem_default_instance_); + } + static constexpr int kIndexInFileMessages = + 212; + + friend void swap(CreateOpClassItem& a, CreateOpClassItem& b) { + a.Swap(&b); + } + inline void Swap(CreateOpClassItem* other) { + if (other == this) return; + if (GetArena() == other->GetArena()) { + InternalSwap(other); + } else { + ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); + } + } + void UnsafeArenaSwap(CreateOpClassItem* other) { + if (other == this) return; + GOOGLE_DCHECK(GetArena() == other->GetArena()); + InternalSwap(other); + } + + // implements Message ---------------------------------------------- + + inline CreateOpClassItem* New() const final { + return CreateMaybeMessage(nullptr); + } + + CreateOpClassItem* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { + return CreateMaybeMessage(arena); + } + void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void CopyFrom(const CreateOpClassItem& from); + void MergeFrom(const CreateOpClassItem& from); + PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; + bool IsInitialized() const final; + + size_t ByteSizeLong() const final; + const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; + ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( + ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; + int GetCachedSize() const final { return _cached_size_.Get(); } + + private: + inline void SharedCtor(); + inline void SharedDtor(); + void SetCachedSize(int size) const final; + void InternalSwap(CreateOpClassItem* other); + friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; + static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { + return "pg_query.CreateOpClassItem"; + } + protected: + explicit CreateOpClassItem(::PROTOBUF_NAMESPACE_ID::Arena* arena); + private: + static void ArenaDtor(void* object); + inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); + public: + + ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; + private: + static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { + ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); + return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; + } + + public: + + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + + enum : int { + kOrderFamilyFieldNumber = 4, + kClassArgsFieldNumber = 5, + kNameFieldNumber = 2, + kStoredtypeFieldNumber = 6, + kItemtypeFieldNumber = 1, + kNumberFieldNumber = 3, + }; + // repeated .pg_query.Node order_family = 4 [json_name = "order_family"]; + int order_family_size() const; + private: + int _internal_order_family_size() const; + public: + void clear_order_family(); + ::pg_query::Node* mutable_order_family(int index); + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* + mutable_order_family(); + private: + const ::pg_query::Node& _internal_order_family(int index) const; + ::pg_query::Node* _internal_add_order_family(); + public: + const ::pg_query::Node& order_family(int index) const; + ::pg_query::Node* add_order_family(); + const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& + order_family() const; + + // repeated .pg_query.Node class_args = 5 [json_name = "class_args"]; + int class_args_size() const; + private: + int _internal_class_args_size() const; + public: + void clear_class_args(); + ::pg_query::Node* mutable_class_args(int index); + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* + mutable_class_args(); + private: + const ::pg_query::Node& _internal_class_args(int index) const; + ::pg_query::Node* _internal_add_class_args(); + public: + const ::pg_query::Node& class_args(int index) const; + ::pg_query::Node* add_class_args(); + const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& + class_args() const; + + // .pg_query.ObjectWithArgs name = 2 [json_name = "name"]; + bool has_name() const; + private: + bool _internal_has_name() const; + public: + void clear_name(); + const ::pg_query::ObjectWithArgs& name() const; + ::pg_query::ObjectWithArgs* release_name(); + ::pg_query::ObjectWithArgs* mutable_name(); + void set_allocated_name(::pg_query::ObjectWithArgs* name); + private: + const ::pg_query::ObjectWithArgs& _internal_name() const; + ::pg_query::ObjectWithArgs* _internal_mutable_name(); + public: + void unsafe_arena_set_allocated_name( + ::pg_query::ObjectWithArgs* name); + ::pg_query::ObjectWithArgs* unsafe_arena_release_name(); + + // .pg_query.TypeName storedtype = 6 [json_name = "storedtype"]; + bool has_storedtype() const; + private: + bool _internal_has_storedtype() const; + public: + void clear_storedtype(); + const ::pg_query::TypeName& storedtype() const; + ::pg_query::TypeName* release_storedtype(); + ::pg_query::TypeName* mutable_storedtype(); + void set_allocated_storedtype(::pg_query::TypeName* storedtype); + private: + const ::pg_query::TypeName& _internal_storedtype() const; + ::pg_query::TypeName* _internal_mutable_storedtype(); + public: + void unsafe_arena_set_allocated_storedtype( + ::pg_query::TypeName* storedtype); + ::pg_query::TypeName* unsafe_arena_release_storedtype(); + + // int32 itemtype = 1 [json_name = "itemtype"]; + void clear_itemtype(); + ::PROTOBUF_NAMESPACE_ID::int32 itemtype() const; + void set_itemtype(::PROTOBUF_NAMESPACE_ID::int32 value); + private: + ::PROTOBUF_NAMESPACE_ID::int32 _internal_itemtype() const; + void _internal_set_itemtype(::PROTOBUF_NAMESPACE_ID::int32 value); + public: + + // int32 number = 3 [json_name = "number"]; + void clear_number(); + ::PROTOBUF_NAMESPACE_ID::int32 number() const; + void set_number(::PROTOBUF_NAMESPACE_ID::int32 value); + private: + ::PROTOBUF_NAMESPACE_ID::int32 _internal_number() const; + void _internal_set_number(::PROTOBUF_NAMESPACE_ID::int32 value); + public: + + // @@protoc_insertion_point(class_scope:pg_query.CreateOpClassItem) + private: + class _Internal; + + template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; + typedef void InternalArenaConstructable_; + typedef void DestructorSkippable_; + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > order_family_; + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > class_args_; + ::pg_query::ObjectWithArgs* name_; + ::pg_query::TypeName* storedtype_; + ::PROTOBUF_NAMESPACE_ID::int32 itemtype_; + ::PROTOBUF_NAMESPACE_ID::int32 number_; + mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; + friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; +}; +// ------------------------------------------------------------------- + +class TableLikeClause PROTOBUF_FINAL : + public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.TableLikeClause) */ { + public: + inline TableLikeClause() : TableLikeClause(nullptr) {} + virtual ~TableLikeClause(); + + TableLikeClause(const TableLikeClause& from); + TableLikeClause(TableLikeClause&& from) noexcept + : TableLikeClause() { + *this = ::std::move(from); + } + + inline TableLikeClause& operator=(const TableLikeClause& from) { + CopyFrom(from); + return *this; + } + inline TableLikeClause& operator=(TableLikeClause&& from) noexcept { + if (GetArena() == from.GetArena()) { + if (this != &from) InternalSwap(&from); + } else { + CopyFrom(from); + } + return *this; + } + + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { + return GetDescriptor(); + } + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { + return GetMetadataStatic().descriptor; + } + static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { + return GetMetadataStatic().reflection; + } + static const TableLikeClause& default_instance(); + + static inline const TableLikeClause* internal_default_instance() { + return reinterpret_cast( + &_TableLikeClause_default_instance_); + } + static constexpr int kIndexInFileMessages = + 213; + + friend void swap(TableLikeClause& a, TableLikeClause& b) { + a.Swap(&b); + } + inline void Swap(TableLikeClause* other) { + if (other == this) return; + if (GetArena() == other->GetArena()) { + InternalSwap(other); + } else { + ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); + } + } + void UnsafeArenaSwap(TableLikeClause* other) { + if (other == this) return; + GOOGLE_DCHECK(GetArena() == other->GetArena()); + InternalSwap(other); + } + + // implements Message ---------------------------------------------- + + inline TableLikeClause* New() const final { + return CreateMaybeMessage(nullptr); + } + + TableLikeClause* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { + return CreateMaybeMessage(arena); + } + void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void CopyFrom(const TableLikeClause& from); + void MergeFrom(const TableLikeClause& from); + PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; + bool IsInitialized() const final; + + size_t ByteSizeLong() const final; + const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; + ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( + ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; + int GetCachedSize() const final { return _cached_size_.Get(); } + + private: + inline void SharedCtor(); + inline void SharedDtor(); + void SetCachedSize(int size) const final; + void InternalSwap(TableLikeClause* other); + friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; + static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { + return "pg_query.TableLikeClause"; + } + protected: + explicit TableLikeClause(::PROTOBUF_NAMESPACE_ID::Arena* arena); + private: + static void ArenaDtor(void* object); + inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); + public: + + ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; + private: + static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { + ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); + return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; + } + + public: + + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + + enum : int { + kRelationFieldNumber = 1, + kOptionsFieldNumber = 2, + }; + // .pg_query.RangeVar relation = 1 [json_name = "relation"]; + bool has_relation() const; + private: + bool _internal_has_relation() const; + public: + void clear_relation(); + const ::pg_query::RangeVar& relation() const; + ::pg_query::RangeVar* release_relation(); + ::pg_query::RangeVar* mutable_relation(); + void set_allocated_relation(::pg_query::RangeVar* relation); + private: + const ::pg_query::RangeVar& _internal_relation() const; + ::pg_query::RangeVar* _internal_mutable_relation(); + public: + void unsafe_arena_set_allocated_relation( + ::pg_query::RangeVar* relation); + ::pg_query::RangeVar* unsafe_arena_release_relation(); + + // uint32 options = 2 [json_name = "options"]; + void clear_options(); + ::PROTOBUF_NAMESPACE_ID::uint32 options() const; + void set_options(::PROTOBUF_NAMESPACE_ID::uint32 value); + private: + ::PROTOBUF_NAMESPACE_ID::uint32 _internal_options() const; + void _internal_set_options(::PROTOBUF_NAMESPACE_ID::uint32 value); + public: + + // @@protoc_insertion_point(class_scope:pg_query.TableLikeClause) + private: + class _Internal; + + template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; + typedef void InternalArenaConstructable_; + typedef void DestructorSkippable_; + ::pg_query::RangeVar* relation_; + ::PROTOBUF_NAMESPACE_ID::uint32 options_; + mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; + friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; +}; +// ------------------------------------------------------------------- + +class FunctionParameter PROTOBUF_FINAL : + public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.FunctionParameter) */ { + public: + inline FunctionParameter() : FunctionParameter(nullptr) {} + virtual ~FunctionParameter(); + + FunctionParameter(const FunctionParameter& from); + FunctionParameter(FunctionParameter&& from) noexcept + : FunctionParameter() { + *this = ::std::move(from); + } + + inline FunctionParameter& operator=(const FunctionParameter& from) { + CopyFrom(from); + return *this; + } + inline FunctionParameter& operator=(FunctionParameter&& from) noexcept { + if (GetArena() == from.GetArena()) { + if (this != &from) InternalSwap(&from); + } else { + CopyFrom(from); + } + return *this; + } + + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { + return GetDescriptor(); + } + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { + return GetMetadataStatic().descriptor; + } + static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { + return GetMetadataStatic().reflection; + } + static const FunctionParameter& default_instance(); + + static inline const FunctionParameter* internal_default_instance() { + return reinterpret_cast( + &_FunctionParameter_default_instance_); + } + static constexpr int kIndexInFileMessages = + 214; + + friend void swap(FunctionParameter& a, FunctionParameter& b) { + a.Swap(&b); + } + inline void Swap(FunctionParameter* other) { + if (other == this) return; + if (GetArena() == other->GetArena()) { + InternalSwap(other); + } else { + ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); + } + } + void UnsafeArenaSwap(FunctionParameter* other) { + if (other == this) return; + GOOGLE_DCHECK(GetArena() == other->GetArena()); + InternalSwap(other); + } + + // implements Message ---------------------------------------------- + + inline FunctionParameter* New() const final { + return CreateMaybeMessage(nullptr); + } + + FunctionParameter* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { + return CreateMaybeMessage(arena); + } + void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void CopyFrom(const FunctionParameter& from); + void MergeFrom(const FunctionParameter& from); + PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; + bool IsInitialized() const final; + + size_t ByteSizeLong() const final; + const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; + ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( + ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; + int GetCachedSize() const final { return _cached_size_.Get(); } + + private: + inline void SharedCtor(); + inline void SharedDtor(); + void SetCachedSize(int size) const final; + void InternalSwap(FunctionParameter* other); + friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; + static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { + return "pg_query.FunctionParameter"; + } + protected: + explicit FunctionParameter(::PROTOBUF_NAMESPACE_ID::Arena* arena); + private: + static void ArenaDtor(void* object); + inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); + public: + + ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; + private: + static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { + ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); + return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; + } + + public: + + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + + enum : int { + kNameFieldNumber = 1, + kArgTypeFieldNumber = 2, + kDefexprFieldNumber = 4, + kModeFieldNumber = 3, + }; + // string name = 1 [json_name = "name"]; + void clear_name(); + const std::string& name() const; + void set_name(const std::string& value); + void set_name(std::string&& value); + void set_name(const char* value); + void set_name(const char* value, size_t size); + std::string* mutable_name(); + std::string* release_name(); + void set_allocated_name(std::string* name); + private: + const std::string& _internal_name() const; + void _internal_set_name(const std::string& value); + std::string* _internal_mutable_name(); + public: + + // .pg_query.TypeName arg_type = 2 [json_name = "argType"]; + bool has_arg_type() const; + private: + bool _internal_has_arg_type() const; + public: + void clear_arg_type(); + const ::pg_query::TypeName& arg_type() const; + ::pg_query::TypeName* release_arg_type(); + ::pg_query::TypeName* mutable_arg_type(); + void set_allocated_arg_type(::pg_query::TypeName* arg_type); + private: + const ::pg_query::TypeName& _internal_arg_type() const; + ::pg_query::TypeName* _internal_mutable_arg_type(); + public: + void unsafe_arena_set_allocated_arg_type( + ::pg_query::TypeName* arg_type); + ::pg_query::TypeName* unsafe_arena_release_arg_type(); + + // .pg_query.Node defexpr = 4 [json_name = "defexpr"]; + bool has_defexpr() const; + private: + bool _internal_has_defexpr() const; + public: + void clear_defexpr(); + const ::pg_query::Node& defexpr() const; + ::pg_query::Node* release_defexpr(); + ::pg_query::Node* mutable_defexpr(); + void set_allocated_defexpr(::pg_query::Node* defexpr); + private: + const ::pg_query::Node& _internal_defexpr() const; + ::pg_query::Node* _internal_mutable_defexpr(); + public: + void unsafe_arena_set_allocated_defexpr( + ::pg_query::Node* defexpr); + ::pg_query::Node* unsafe_arena_release_defexpr(); + + // .pg_query.FunctionParameterMode mode = 3 [json_name = "mode"]; + void clear_mode(); + ::pg_query::FunctionParameterMode mode() const; + void set_mode(::pg_query::FunctionParameterMode value); + private: + ::pg_query::FunctionParameterMode _internal_mode() const; + void _internal_set_mode(::pg_query::FunctionParameterMode value); + public: + + // @@protoc_insertion_point(class_scope:pg_query.FunctionParameter) + private: + class _Internal; + + template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; + typedef void InternalArenaConstructable_; + typedef void DestructorSkippable_; + ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr name_; + ::pg_query::TypeName* arg_type_; + ::pg_query::Node* defexpr_; + int mode_; + mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; + friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; +}; +// ------------------------------------------------------------------- + +class LockingClause PROTOBUF_FINAL : + public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.LockingClause) */ { + public: + inline LockingClause() : LockingClause(nullptr) {} + virtual ~LockingClause(); + + LockingClause(const LockingClause& from); + LockingClause(LockingClause&& from) noexcept + : LockingClause() { + *this = ::std::move(from); + } + + inline LockingClause& operator=(const LockingClause& from) { + CopyFrom(from); + return *this; + } + inline LockingClause& operator=(LockingClause&& from) noexcept { + if (GetArena() == from.GetArena()) { + if (this != &from) InternalSwap(&from); + } else { + CopyFrom(from); + } + return *this; + } + + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { + return GetDescriptor(); + } + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { + return GetMetadataStatic().descriptor; + } + static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { + return GetMetadataStatic().reflection; + } + static const LockingClause& default_instance(); + + static inline const LockingClause* internal_default_instance() { + return reinterpret_cast( + &_LockingClause_default_instance_); + } + static constexpr int kIndexInFileMessages = + 215; + + friend void swap(LockingClause& a, LockingClause& b) { + a.Swap(&b); + } + inline void Swap(LockingClause* other) { + if (other == this) return; + if (GetArena() == other->GetArena()) { + InternalSwap(other); + } else { + ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); + } + } + void UnsafeArenaSwap(LockingClause* other) { + if (other == this) return; + GOOGLE_DCHECK(GetArena() == other->GetArena()); + InternalSwap(other); + } + + // implements Message ---------------------------------------------- + + inline LockingClause* New() const final { + return CreateMaybeMessage(nullptr); + } + + LockingClause* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { + return CreateMaybeMessage(arena); + } + void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void CopyFrom(const LockingClause& from); + void MergeFrom(const LockingClause& from); + PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; + bool IsInitialized() const final; + + size_t ByteSizeLong() const final; + const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; + ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( + ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; + int GetCachedSize() const final { return _cached_size_.Get(); } + + private: + inline void SharedCtor(); + inline void SharedDtor(); + void SetCachedSize(int size) const final; + void InternalSwap(LockingClause* other); + friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; + static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { + return "pg_query.LockingClause"; + } + protected: + explicit LockingClause(::PROTOBUF_NAMESPACE_ID::Arena* arena); + private: + static void ArenaDtor(void* object); + inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); + public: + + ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; + private: + static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { + ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); + return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; + } + + public: + + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + + enum : int { + kLockedRelsFieldNumber = 1, + kStrengthFieldNumber = 2, + kWaitPolicyFieldNumber = 3, + }; + // repeated .pg_query.Node locked_rels = 1 [json_name = "lockedRels"]; + int locked_rels_size() const; + private: + int _internal_locked_rels_size() const; + public: + void clear_locked_rels(); + ::pg_query::Node* mutable_locked_rels(int index); + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* + mutable_locked_rels(); + private: + const ::pg_query::Node& _internal_locked_rels(int index) const; + ::pg_query::Node* _internal_add_locked_rels(); + public: + const ::pg_query::Node& locked_rels(int index) const; + ::pg_query::Node* add_locked_rels(); + const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& + locked_rels() const; + + // .pg_query.LockClauseStrength strength = 2 [json_name = "strength"]; + void clear_strength(); + ::pg_query::LockClauseStrength strength() const; + void set_strength(::pg_query::LockClauseStrength value); + private: + ::pg_query::LockClauseStrength _internal_strength() const; + void _internal_set_strength(::pg_query::LockClauseStrength value); + public: + + // .pg_query.LockWaitPolicy wait_policy = 3 [json_name = "waitPolicy"]; + void clear_wait_policy(); + ::pg_query::LockWaitPolicy wait_policy() const; + void set_wait_policy(::pg_query::LockWaitPolicy value); + private: + ::pg_query::LockWaitPolicy _internal_wait_policy() const; + void _internal_set_wait_policy(::pg_query::LockWaitPolicy value); + public: + + // @@protoc_insertion_point(class_scope:pg_query.LockingClause) + private: + class _Internal; + + template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; + typedef void InternalArenaConstructable_; + typedef void DestructorSkippable_; + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > locked_rels_; + int strength_; + int wait_policy_; + mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; + friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; +}; +// ------------------------------------------------------------------- + +class RowMarkClause PROTOBUF_FINAL : + public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.RowMarkClause) */ { + public: + inline RowMarkClause() : RowMarkClause(nullptr) {} + virtual ~RowMarkClause(); + + RowMarkClause(const RowMarkClause& from); + RowMarkClause(RowMarkClause&& from) noexcept + : RowMarkClause() { + *this = ::std::move(from); + } + + inline RowMarkClause& operator=(const RowMarkClause& from) { + CopyFrom(from); + return *this; + } + inline RowMarkClause& operator=(RowMarkClause&& from) noexcept { + if (GetArena() == from.GetArena()) { + if (this != &from) InternalSwap(&from); + } else { + CopyFrom(from); + } + return *this; + } + + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { + return GetDescriptor(); + } + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { + return GetMetadataStatic().descriptor; + } + static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { + return GetMetadataStatic().reflection; + } + static const RowMarkClause& default_instance(); + + static inline const RowMarkClause* internal_default_instance() { + return reinterpret_cast( + &_RowMarkClause_default_instance_); + } + static constexpr int kIndexInFileMessages = + 216; + + friend void swap(RowMarkClause& a, RowMarkClause& b) { + a.Swap(&b); + } + inline void Swap(RowMarkClause* other) { + if (other == this) return; + if (GetArena() == other->GetArena()) { + InternalSwap(other); + } else { + ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); + } + } + void UnsafeArenaSwap(RowMarkClause* other) { + if (other == this) return; + GOOGLE_DCHECK(GetArena() == other->GetArena()); + InternalSwap(other); + } + + // implements Message ---------------------------------------------- + + inline RowMarkClause* New() const final { + return CreateMaybeMessage(nullptr); + } + + RowMarkClause* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { + return CreateMaybeMessage(arena); + } + void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void CopyFrom(const RowMarkClause& from); + void MergeFrom(const RowMarkClause& from); + PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; + bool IsInitialized() const final; + + size_t ByteSizeLong() const final; + const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; + ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( + ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; + int GetCachedSize() const final { return _cached_size_.Get(); } + + private: + inline void SharedCtor(); + inline void SharedDtor(); + void SetCachedSize(int size) const final; + void InternalSwap(RowMarkClause* other); + friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; + static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { + return "pg_query.RowMarkClause"; + } + protected: + explicit RowMarkClause(::PROTOBUF_NAMESPACE_ID::Arena* arena); + private: + static void ArenaDtor(void* object); + inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); + public: + + ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; + private: + static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { + ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); + return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; + } + + public: + + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + + enum : int { + kRtiFieldNumber = 1, + kStrengthFieldNumber = 2, + kWaitPolicyFieldNumber = 3, + kPushedDownFieldNumber = 4, + }; + // uint32 rti = 1 [json_name = "rti"]; + void clear_rti(); + ::PROTOBUF_NAMESPACE_ID::uint32 rti() const; + void set_rti(::PROTOBUF_NAMESPACE_ID::uint32 value); + private: + ::PROTOBUF_NAMESPACE_ID::uint32 _internal_rti() const; + void _internal_set_rti(::PROTOBUF_NAMESPACE_ID::uint32 value); + public: + + // .pg_query.LockClauseStrength strength = 2 [json_name = "strength"]; + void clear_strength(); + ::pg_query::LockClauseStrength strength() const; + void set_strength(::pg_query::LockClauseStrength value); + private: + ::pg_query::LockClauseStrength _internal_strength() const; + void _internal_set_strength(::pg_query::LockClauseStrength value); + public: + + // .pg_query.LockWaitPolicy wait_policy = 3 [json_name = "waitPolicy"]; + void clear_wait_policy(); + ::pg_query::LockWaitPolicy wait_policy() const; + void set_wait_policy(::pg_query::LockWaitPolicy value); + private: + ::pg_query::LockWaitPolicy _internal_wait_policy() const; + void _internal_set_wait_policy(::pg_query::LockWaitPolicy value); + public: + + // bool pushed_down = 4 [json_name = "pushedDown"]; + void clear_pushed_down(); + bool pushed_down() const; + void set_pushed_down(bool value); + private: + bool _internal_pushed_down() const; + void _internal_set_pushed_down(bool value); + public: + + // @@protoc_insertion_point(class_scope:pg_query.RowMarkClause) + private: + class _Internal; + + template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; + typedef void InternalArenaConstructable_; + typedef void DestructorSkippable_; + ::PROTOBUF_NAMESPACE_ID::uint32 rti_; + int strength_; + int wait_policy_; + bool pushed_down_; + mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; + friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; +}; +// ------------------------------------------------------------------- + +class XmlSerialize PROTOBUF_FINAL : + public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.XmlSerialize) */ { + public: + inline XmlSerialize() : XmlSerialize(nullptr) {} + virtual ~XmlSerialize(); + + XmlSerialize(const XmlSerialize& from); + XmlSerialize(XmlSerialize&& from) noexcept + : XmlSerialize() { + *this = ::std::move(from); + } + + inline XmlSerialize& operator=(const XmlSerialize& from) { + CopyFrom(from); + return *this; + } + inline XmlSerialize& operator=(XmlSerialize&& from) noexcept { + if (GetArena() == from.GetArena()) { + if (this != &from) InternalSwap(&from); + } else { + CopyFrom(from); + } + return *this; + } + + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { + return GetDescriptor(); + } + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { + return GetMetadataStatic().descriptor; + } + static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { + return GetMetadataStatic().reflection; + } + static const XmlSerialize& default_instance(); + + static inline const XmlSerialize* internal_default_instance() { + return reinterpret_cast( + &_XmlSerialize_default_instance_); + } + static constexpr int kIndexInFileMessages = + 217; + + friend void swap(XmlSerialize& a, XmlSerialize& b) { + a.Swap(&b); + } + inline void Swap(XmlSerialize* other) { + if (other == this) return; + if (GetArena() == other->GetArena()) { + InternalSwap(other); + } else { + ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); + } + } + void UnsafeArenaSwap(XmlSerialize* other) { + if (other == this) return; + GOOGLE_DCHECK(GetArena() == other->GetArena()); + InternalSwap(other); + } + + // implements Message ---------------------------------------------- + + inline XmlSerialize* New() const final { + return CreateMaybeMessage(nullptr); + } + + XmlSerialize* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { + return CreateMaybeMessage(arena); + } + void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void CopyFrom(const XmlSerialize& from); + void MergeFrom(const XmlSerialize& from); + PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; + bool IsInitialized() const final; + + size_t ByteSizeLong() const final; + const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; + ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( + ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; + int GetCachedSize() const final { return _cached_size_.Get(); } + + private: + inline void SharedCtor(); + inline void SharedDtor(); + void SetCachedSize(int size) const final; + void InternalSwap(XmlSerialize* other); + friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; + static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { + return "pg_query.XmlSerialize"; + } + protected: + explicit XmlSerialize(::PROTOBUF_NAMESPACE_ID::Arena* arena); + private: + static void ArenaDtor(void* object); + inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); + public: + + ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; + private: + static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { + ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); + return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; + } + + public: + + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + + enum : int { + kExprFieldNumber = 2, + kTypeNameFieldNumber = 3, + kXmloptionFieldNumber = 1, + kLocationFieldNumber = 4, + }; + // .pg_query.Node expr = 2 [json_name = "expr"]; + bool has_expr() const; + private: + bool _internal_has_expr() const; + public: + void clear_expr(); + const ::pg_query::Node& expr() const; + ::pg_query::Node* release_expr(); + ::pg_query::Node* mutable_expr(); + void set_allocated_expr(::pg_query::Node* expr); + private: + const ::pg_query::Node& _internal_expr() const; + ::pg_query::Node* _internal_mutable_expr(); + public: + void unsafe_arena_set_allocated_expr( + ::pg_query::Node* expr); + ::pg_query::Node* unsafe_arena_release_expr(); + + // .pg_query.TypeName type_name = 3 [json_name = "typeName"]; + bool has_type_name() const; + private: + bool _internal_has_type_name() const; + public: + void clear_type_name(); + const ::pg_query::TypeName& type_name() const; + ::pg_query::TypeName* release_type_name(); + ::pg_query::TypeName* mutable_type_name(); + void set_allocated_type_name(::pg_query::TypeName* type_name); + private: + const ::pg_query::TypeName& _internal_type_name() const; + ::pg_query::TypeName* _internal_mutable_type_name(); + public: + void unsafe_arena_set_allocated_type_name( + ::pg_query::TypeName* type_name); + ::pg_query::TypeName* unsafe_arena_release_type_name(); + + // .pg_query.XmlOptionType xmloption = 1 [json_name = "xmloption"]; + void clear_xmloption(); + ::pg_query::XmlOptionType xmloption() const; + void set_xmloption(::pg_query::XmlOptionType value); + private: + ::pg_query::XmlOptionType _internal_xmloption() const; + void _internal_set_xmloption(::pg_query::XmlOptionType value); + public: + + // int32 location = 4 [json_name = "location"]; + void clear_location(); + ::PROTOBUF_NAMESPACE_ID::int32 location() const; + void set_location(::PROTOBUF_NAMESPACE_ID::int32 value); + private: + ::PROTOBUF_NAMESPACE_ID::int32 _internal_location() const; + void _internal_set_location(::PROTOBUF_NAMESPACE_ID::int32 value); + public: + + // @@protoc_insertion_point(class_scope:pg_query.XmlSerialize) + private: + class _Internal; + + template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; + typedef void InternalArenaConstructable_; + typedef void DestructorSkippable_; + ::pg_query::Node* expr_; + ::pg_query::TypeName* type_name_; + int xmloption_; + ::PROTOBUF_NAMESPACE_ID::int32 location_; + mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; + friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; +}; +// ------------------------------------------------------------------- + +class WithClause PROTOBUF_FINAL : + public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.WithClause) */ { + public: + inline WithClause() : WithClause(nullptr) {} + virtual ~WithClause(); + + WithClause(const WithClause& from); + WithClause(WithClause&& from) noexcept + : WithClause() { + *this = ::std::move(from); + } + + inline WithClause& operator=(const WithClause& from) { + CopyFrom(from); + return *this; + } + inline WithClause& operator=(WithClause&& from) noexcept { + if (GetArena() == from.GetArena()) { + if (this != &from) InternalSwap(&from); + } else { + CopyFrom(from); + } + return *this; + } + + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { + return GetDescriptor(); + } + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { + return GetMetadataStatic().descriptor; + } + static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { + return GetMetadataStatic().reflection; + } + static const WithClause& default_instance(); + + static inline const WithClause* internal_default_instance() { + return reinterpret_cast( + &_WithClause_default_instance_); + } + static constexpr int kIndexInFileMessages = + 218; + + friend void swap(WithClause& a, WithClause& b) { + a.Swap(&b); + } + inline void Swap(WithClause* other) { + if (other == this) return; + if (GetArena() == other->GetArena()) { + InternalSwap(other); + } else { + ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); + } + } + void UnsafeArenaSwap(WithClause* other) { + if (other == this) return; + GOOGLE_DCHECK(GetArena() == other->GetArena()); + InternalSwap(other); + } + + // implements Message ---------------------------------------------- + + inline WithClause* New() const final { + return CreateMaybeMessage(nullptr); + } + + WithClause* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { + return CreateMaybeMessage(arena); + } + void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void CopyFrom(const WithClause& from); + void MergeFrom(const WithClause& from); + PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; + bool IsInitialized() const final; + + size_t ByteSizeLong() const final; + const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; + ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( + ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; + int GetCachedSize() const final { return _cached_size_.Get(); } + + private: + inline void SharedCtor(); + inline void SharedDtor(); + void SetCachedSize(int size) const final; + void InternalSwap(WithClause* other); + friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; + static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { + return "pg_query.WithClause"; + } + protected: + explicit WithClause(::PROTOBUF_NAMESPACE_ID::Arena* arena); + private: + static void ArenaDtor(void* object); + inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); + public: + + ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; + private: + static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { + ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); + return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; + } + + public: + + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + + enum : int { + kCtesFieldNumber = 1, + kRecursiveFieldNumber = 2, + kLocationFieldNumber = 3, + }; + // repeated .pg_query.Node ctes = 1 [json_name = "ctes"]; + int ctes_size() const; + private: + int _internal_ctes_size() const; + public: + void clear_ctes(); + ::pg_query::Node* mutable_ctes(int index); + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* + mutable_ctes(); + private: + const ::pg_query::Node& _internal_ctes(int index) const; + ::pg_query::Node* _internal_add_ctes(); + public: + const ::pg_query::Node& ctes(int index) const; + ::pg_query::Node* add_ctes(); + const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& + ctes() const; + + // bool recursive = 2 [json_name = "recursive"]; + void clear_recursive(); + bool recursive() const; + void set_recursive(bool value); + private: + bool _internal_recursive() const; + void _internal_set_recursive(bool value); + public: + + // int32 location = 3 [json_name = "location"]; + void clear_location(); + ::PROTOBUF_NAMESPACE_ID::int32 location() const; + void set_location(::PROTOBUF_NAMESPACE_ID::int32 value); + private: + ::PROTOBUF_NAMESPACE_ID::int32 _internal_location() const; + void _internal_set_location(::PROTOBUF_NAMESPACE_ID::int32 value); + public: + + // @@protoc_insertion_point(class_scope:pg_query.WithClause) + private: + class _Internal; + + template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; + typedef void InternalArenaConstructable_; + typedef void DestructorSkippable_; + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > ctes_; + bool recursive_; + ::PROTOBUF_NAMESPACE_ID::int32 location_; + mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; + friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; +}; +// ------------------------------------------------------------------- + +class InferClause PROTOBUF_FINAL : + public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.InferClause) */ { + public: + inline InferClause() : InferClause(nullptr) {} + virtual ~InferClause(); + + InferClause(const InferClause& from); + InferClause(InferClause&& from) noexcept + : InferClause() { + *this = ::std::move(from); + } + + inline InferClause& operator=(const InferClause& from) { + CopyFrom(from); + return *this; + } + inline InferClause& operator=(InferClause&& from) noexcept { + if (GetArena() == from.GetArena()) { + if (this != &from) InternalSwap(&from); + } else { + CopyFrom(from); + } + return *this; + } + + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { + return GetDescriptor(); + } + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { + return GetMetadataStatic().descriptor; + } + static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { + return GetMetadataStatic().reflection; + } + static const InferClause& default_instance(); + + static inline const InferClause* internal_default_instance() { + return reinterpret_cast( + &_InferClause_default_instance_); + } + static constexpr int kIndexInFileMessages = + 219; + + friend void swap(InferClause& a, InferClause& b) { + a.Swap(&b); + } + inline void Swap(InferClause* other) { + if (other == this) return; + if (GetArena() == other->GetArena()) { + InternalSwap(other); + } else { + ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); + } + } + void UnsafeArenaSwap(InferClause* other) { + if (other == this) return; + GOOGLE_DCHECK(GetArena() == other->GetArena()); + InternalSwap(other); + } + + // implements Message ---------------------------------------------- + + inline InferClause* New() const final { + return CreateMaybeMessage(nullptr); + } + + InferClause* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { + return CreateMaybeMessage(arena); + } + void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void CopyFrom(const InferClause& from); + void MergeFrom(const InferClause& from); + PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; + bool IsInitialized() const final; + + size_t ByteSizeLong() const final; + const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; + ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( + ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; + int GetCachedSize() const final { return _cached_size_.Get(); } + + private: + inline void SharedCtor(); + inline void SharedDtor(); + void SetCachedSize(int size) const final; + void InternalSwap(InferClause* other); + friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; + static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { + return "pg_query.InferClause"; + } + protected: + explicit InferClause(::PROTOBUF_NAMESPACE_ID::Arena* arena); + private: + static void ArenaDtor(void* object); + inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); + public: + + ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; + private: + static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { + ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); + return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; + } + + public: + + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + + enum : int { + kIndexElemsFieldNumber = 1, + kConnameFieldNumber = 3, + kWhereClauseFieldNumber = 2, + kLocationFieldNumber = 4, + }; + // repeated .pg_query.Node index_elems = 1 [json_name = "indexElems"]; + int index_elems_size() const; + private: + int _internal_index_elems_size() const; + public: + void clear_index_elems(); + ::pg_query::Node* mutable_index_elems(int index); + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* + mutable_index_elems(); + private: + const ::pg_query::Node& _internal_index_elems(int index) const; + ::pg_query::Node* _internal_add_index_elems(); + public: + const ::pg_query::Node& index_elems(int index) const; + ::pg_query::Node* add_index_elems(); + const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& + index_elems() const; + + // string conname = 3 [json_name = "conname"]; + void clear_conname(); + const std::string& conname() const; + void set_conname(const std::string& value); + void set_conname(std::string&& value); + void set_conname(const char* value); + void set_conname(const char* value, size_t size); + std::string* mutable_conname(); + std::string* release_conname(); + void set_allocated_conname(std::string* conname); + private: + const std::string& _internal_conname() const; + void _internal_set_conname(const std::string& value); + std::string* _internal_mutable_conname(); + public: + + // .pg_query.Node where_clause = 2 [json_name = "whereClause"]; + bool has_where_clause() const; + private: + bool _internal_has_where_clause() const; + public: + void clear_where_clause(); + const ::pg_query::Node& where_clause() const; + ::pg_query::Node* release_where_clause(); + ::pg_query::Node* mutable_where_clause(); + void set_allocated_where_clause(::pg_query::Node* where_clause); + private: + const ::pg_query::Node& _internal_where_clause() const; + ::pg_query::Node* _internal_mutable_where_clause(); + public: + void unsafe_arena_set_allocated_where_clause( + ::pg_query::Node* where_clause); + ::pg_query::Node* unsafe_arena_release_where_clause(); + + // int32 location = 4 [json_name = "location"]; + void clear_location(); + ::PROTOBUF_NAMESPACE_ID::int32 location() const; + void set_location(::PROTOBUF_NAMESPACE_ID::int32 value); + private: + ::PROTOBUF_NAMESPACE_ID::int32 _internal_location() const; + void _internal_set_location(::PROTOBUF_NAMESPACE_ID::int32 value); + public: + + // @@protoc_insertion_point(class_scope:pg_query.InferClause) + private: + class _Internal; + + template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; + typedef void InternalArenaConstructable_; + typedef void DestructorSkippable_; + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > index_elems_; + ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr conname_; + ::pg_query::Node* where_clause_; + ::PROTOBUF_NAMESPACE_ID::int32 location_; + mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; + friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; +}; +// ------------------------------------------------------------------- + +class OnConflictClause PROTOBUF_FINAL : + public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.OnConflictClause) */ { + public: + inline OnConflictClause() : OnConflictClause(nullptr) {} + virtual ~OnConflictClause(); + + OnConflictClause(const OnConflictClause& from); + OnConflictClause(OnConflictClause&& from) noexcept + : OnConflictClause() { + *this = ::std::move(from); + } + + inline OnConflictClause& operator=(const OnConflictClause& from) { + CopyFrom(from); + return *this; + } + inline OnConflictClause& operator=(OnConflictClause&& from) noexcept { + if (GetArena() == from.GetArena()) { + if (this != &from) InternalSwap(&from); + } else { + CopyFrom(from); + } + return *this; + } + + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { + return GetDescriptor(); + } + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { + return GetMetadataStatic().descriptor; + } + static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { + return GetMetadataStatic().reflection; + } + static const OnConflictClause& default_instance(); + + static inline const OnConflictClause* internal_default_instance() { + return reinterpret_cast( + &_OnConflictClause_default_instance_); + } + static constexpr int kIndexInFileMessages = + 220; + + friend void swap(OnConflictClause& a, OnConflictClause& b) { + a.Swap(&b); + } + inline void Swap(OnConflictClause* other) { + if (other == this) return; + if (GetArena() == other->GetArena()) { + InternalSwap(other); + } else { + ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); + } + } + void UnsafeArenaSwap(OnConflictClause* other) { + if (other == this) return; + GOOGLE_DCHECK(GetArena() == other->GetArena()); + InternalSwap(other); + } + + // implements Message ---------------------------------------------- + + inline OnConflictClause* New() const final { + return CreateMaybeMessage(nullptr); + } + + OnConflictClause* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { + return CreateMaybeMessage(arena); + } + void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void CopyFrom(const OnConflictClause& from); + void MergeFrom(const OnConflictClause& from); + PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; + bool IsInitialized() const final; + + size_t ByteSizeLong() const final; + const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; + ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( + ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; + int GetCachedSize() const final { return _cached_size_.Get(); } + + private: + inline void SharedCtor(); + inline void SharedDtor(); + void SetCachedSize(int size) const final; + void InternalSwap(OnConflictClause* other); + friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; + static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { + return "pg_query.OnConflictClause"; + } + protected: + explicit OnConflictClause(::PROTOBUF_NAMESPACE_ID::Arena* arena); + private: + static void ArenaDtor(void* object); + inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); + public: + + ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; + private: + static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { + ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); + return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; + } + + public: + + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + + enum : int { + kTargetListFieldNumber = 3, + kInferFieldNumber = 2, + kWhereClauseFieldNumber = 4, + kActionFieldNumber = 1, + kLocationFieldNumber = 5, + }; + // repeated .pg_query.Node target_list = 3 [json_name = "targetList"]; + int target_list_size() const; + private: + int _internal_target_list_size() const; + public: + void clear_target_list(); + ::pg_query::Node* mutable_target_list(int index); + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* + mutable_target_list(); + private: + const ::pg_query::Node& _internal_target_list(int index) const; + ::pg_query::Node* _internal_add_target_list(); + public: + const ::pg_query::Node& target_list(int index) const; + ::pg_query::Node* add_target_list(); + const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& + target_list() const; + + // .pg_query.InferClause infer = 2 [json_name = "infer"]; + bool has_infer() const; + private: + bool _internal_has_infer() const; + public: + void clear_infer(); + const ::pg_query::InferClause& infer() const; + ::pg_query::InferClause* release_infer(); + ::pg_query::InferClause* mutable_infer(); + void set_allocated_infer(::pg_query::InferClause* infer); + private: + const ::pg_query::InferClause& _internal_infer() const; + ::pg_query::InferClause* _internal_mutable_infer(); + public: + void unsafe_arena_set_allocated_infer( + ::pg_query::InferClause* infer); + ::pg_query::InferClause* unsafe_arena_release_infer(); + + // .pg_query.Node where_clause = 4 [json_name = "whereClause"]; + bool has_where_clause() const; + private: + bool _internal_has_where_clause() const; + public: + void clear_where_clause(); + const ::pg_query::Node& where_clause() const; + ::pg_query::Node* release_where_clause(); + ::pg_query::Node* mutable_where_clause(); + void set_allocated_where_clause(::pg_query::Node* where_clause); + private: + const ::pg_query::Node& _internal_where_clause() const; + ::pg_query::Node* _internal_mutable_where_clause(); + public: + void unsafe_arena_set_allocated_where_clause( + ::pg_query::Node* where_clause); + ::pg_query::Node* unsafe_arena_release_where_clause(); + + // .pg_query.OnConflictAction action = 1 [json_name = "action"]; + void clear_action(); + ::pg_query::OnConflictAction action() const; + void set_action(::pg_query::OnConflictAction value); + private: + ::pg_query::OnConflictAction _internal_action() const; + void _internal_set_action(::pg_query::OnConflictAction value); + public: + + // int32 location = 5 [json_name = "location"]; + void clear_location(); + ::PROTOBUF_NAMESPACE_ID::int32 location() const; + void set_location(::PROTOBUF_NAMESPACE_ID::int32 value); + private: + ::PROTOBUF_NAMESPACE_ID::int32 _internal_location() const; + void _internal_set_location(::PROTOBUF_NAMESPACE_ID::int32 value); + public: + + // @@protoc_insertion_point(class_scope:pg_query.OnConflictClause) + private: + class _Internal; + + template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; + typedef void InternalArenaConstructable_; + typedef void DestructorSkippable_; + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > target_list_; + ::pg_query::InferClause* infer_; + ::pg_query::Node* where_clause_; + int action_; + ::PROTOBUF_NAMESPACE_ID::int32 location_; + mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; + friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; +}; +// ------------------------------------------------------------------- + +class CommonTableExpr PROTOBUF_FINAL : + public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.CommonTableExpr) */ { + public: + inline CommonTableExpr() : CommonTableExpr(nullptr) {} + virtual ~CommonTableExpr(); + + CommonTableExpr(const CommonTableExpr& from); + CommonTableExpr(CommonTableExpr&& from) noexcept + : CommonTableExpr() { + *this = ::std::move(from); + } + + inline CommonTableExpr& operator=(const CommonTableExpr& from) { + CopyFrom(from); + return *this; + } + inline CommonTableExpr& operator=(CommonTableExpr&& from) noexcept { + if (GetArena() == from.GetArena()) { + if (this != &from) InternalSwap(&from); + } else { + CopyFrom(from); + } + return *this; + } + + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { + return GetDescriptor(); + } + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { + return GetMetadataStatic().descriptor; + } + static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { + return GetMetadataStatic().reflection; + } + static const CommonTableExpr& default_instance(); + + static inline const CommonTableExpr* internal_default_instance() { + return reinterpret_cast( + &_CommonTableExpr_default_instance_); + } + static constexpr int kIndexInFileMessages = + 221; + + friend void swap(CommonTableExpr& a, CommonTableExpr& b) { + a.Swap(&b); + } + inline void Swap(CommonTableExpr* other) { + if (other == this) return; + if (GetArena() == other->GetArena()) { + InternalSwap(other); + } else { + ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); + } + } + void UnsafeArenaSwap(CommonTableExpr* other) { + if (other == this) return; + GOOGLE_DCHECK(GetArena() == other->GetArena()); + InternalSwap(other); + } + + // implements Message ---------------------------------------------- + + inline CommonTableExpr* New() const final { + return CreateMaybeMessage(nullptr); + } + + CommonTableExpr* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { + return CreateMaybeMessage(arena); + } + void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void CopyFrom(const CommonTableExpr& from); + void MergeFrom(const CommonTableExpr& from); + PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; + bool IsInitialized() const final; + + size_t ByteSizeLong() const final; + const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; + ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( + ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; + int GetCachedSize() const final { return _cached_size_.Get(); } + + private: + inline void SharedCtor(); + inline void SharedDtor(); + void SetCachedSize(int size) const final; + void InternalSwap(CommonTableExpr* other); + friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; + static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { + return "pg_query.CommonTableExpr"; + } + protected: + explicit CommonTableExpr(::PROTOBUF_NAMESPACE_ID::Arena* arena); + private: + static void ArenaDtor(void* object); + inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); + public: + + ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; + private: + static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { + ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); + return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; + } + + public: + + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + + enum : int { + kAliascolnamesFieldNumber = 2, + kCtecolnamesFieldNumber = 8, + kCtecoltypesFieldNumber = 9, + kCtecoltypmodsFieldNumber = 10, + kCtecolcollationsFieldNumber = 11, + kCtenameFieldNumber = 1, + kCtequeryFieldNumber = 4, + kCtematerializedFieldNumber = 3, + kLocationFieldNumber = 5, + kCterecursiveFieldNumber = 6, + kCterefcountFieldNumber = 7, + }; + // repeated .pg_query.Node aliascolnames = 2 [json_name = "aliascolnames"]; + int aliascolnames_size() const; + private: + int _internal_aliascolnames_size() const; + public: + void clear_aliascolnames(); + ::pg_query::Node* mutable_aliascolnames(int index); + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* + mutable_aliascolnames(); + private: + const ::pg_query::Node& _internal_aliascolnames(int index) const; + ::pg_query::Node* _internal_add_aliascolnames(); + public: + const ::pg_query::Node& aliascolnames(int index) const; + ::pg_query::Node* add_aliascolnames(); + const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& + aliascolnames() const; + + // repeated .pg_query.Node ctecolnames = 8 [json_name = "ctecolnames"]; + int ctecolnames_size() const; + private: + int _internal_ctecolnames_size() const; + public: + void clear_ctecolnames(); + ::pg_query::Node* mutable_ctecolnames(int index); + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* + mutable_ctecolnames(); + private: + const ::pg_query::Node& _internal_ctecolnames(int index) const; + ::pg_query::Node* _internal_add_ctecolnames(); + public: + const ::pg_query::Node& ctecolnames(int index) const; + ::pg_query::Node* add_ctecolnames(); + const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& + ctecolnames() const; + + // repeated .pg_query.Node ctecoltypes = 9 [json_name = "ctecoltypes"]; + int ctecoltypes_size() const; + private: + int _internal_ctecoltypes_size() const; + public: + void clear_ctecoltypes(); + ::pg_query::Node* mutable_ctecoltypes(int index); + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* + mutable_ctecoltypes(); + private: + const ::pg_query::Node& _internal_ctecoltypes(int index) const; + ::pg_query::Node* _internal_add_ctecoltypes(); + public: + const ::pg_query::Node& ctecoltypes(int index) const; + ::pg_query::Node* add_ctecoltypes(); + const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& + ctecoltypes() const; + + // repeated .pg_query.Node ctecoltypmods = 10 [json_name = "ctecoltypmods"]; + int ctecoltypmods_size() const; + private: + int _internal_ctecoltypmods_size() const; + public: + void clear_ctecoltypmods(); + ::pg_query::Node* mutable_ctecoltypmods(int index); + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* + mutable_ctecoltypmods(); + private: + const ::pg_query::Node& _internal_ctecoltypmods(int index) const; + ::pg_query::Node* _internal_add_ctecoltypmods(); + public: + const ::pg_query::Node& ctecoltypmods(int index) const; + ::pg_query::Node* add_ctecoltypmods(); + const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& + ctecoltypmods() const; + + // repeated .pg_query.Node ctecolcollations = 11 [json_name = "ctecolcollations"]; + int ctecolcollations_size() const; + private: + int _internal_ctecolcollations_size() const; + public: + void clear_ctecolcollations(); + ::pg_query::Node* mutable_ctecolcollations(int index); + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* + mutable_ctecolcollations(); + private: + const ::pg_query::Node& _internal_ctecolcollations(int index) const; + ::pg_query::Node* _internal_add_ctecolcollations(); + public: + const ::pg_query::Node& ctecolcollations(int index) const; + ::pg_query::Node* add_ctecolcollations(); + const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& + ctecolcollations() const; + + // string ctename = 1 [json_name = "ctename"]; + void clear_ctename(); + const std::string& ctename() const; + void set_ctename(const std::string& value); + void set_ctename(std::string&& value); + void set_ctename(const char* value); + void set_ctename(const char* value, size_t size); + std::string* mutable_ctename(); + std::string* release_ctename(); + void set_allocated_ctename(std::string* ctename); + private: + const std::string& _internal_ctename() const; + void _internal_set_ctename(const std::string& value); + std::string* _internal_mutable_ctename(); + public: + + // .pg_query.Node ctequery = 4 [json_name = "ctequery"]; + bool has_ctequery() const; + private: + bool _internal_has_ctequery() const; + public: + void clear_ctequery(); + const ::pg_query::Node& ctequery() const; + ::pg_query::Node* release_ctequery(); + ::pg_query::Node* mutable_ctequery(); + void set_allocated_ctequery(::pg_query::Node* ctequery); + private: + const ::pg_query::Node& _internal_ctequery() const; + ::pg_query::Node* _internal_mutable_ctequery(); + public: + void unsafe_arena_set_allocated_ctequery( + ::pg_query::Node* ctequery); + ::pg_query::Node* unsafe_arena_release_ctequery(); + + // .pg_query.CTEMaterialize ctematerialized = 3 [json_name = "ctematerialized"]; + void clear_ctematerialized(); + ::pg_query::CTEMaterialize ctematerialized() const; + void set_ctematerialized(::pg_query::CTEMaterialize value); + private: + ::pg_query::CTEMaterialize _internal_ctematerialized() const; + void _internal_set_ctematerialized(::pg_query::CTEMaterialize value); + public: + + // int32 location = 5 [json_name = "location"]; + void clear_location(); + ::PROTOBUF_NAMESPACE_ID::int32 location() const; + void set_location(::PROTOBUF_NAMESPACE_ID::int32 value); + private: + ::PROTOBUF_NAMESPACE_ID::int32 _internal_location() const; + void _internal_set_location(::PROTOBUF_NAMESPACE_ID::int32 value); + public: + + // bool cterecursive = 6 [json_name = "cterecursive"]; + void clear_cterecursive(); + bool cterecursive() const; + void set_cterecursive(bool value); + private: + bool _internal_cterecursive() const; + void _internal_set_cterecursive(bool value); + public: + + // int32 cterefcount = 7 [json_name = "cterefcount"]; + void clear_cterefcount(); + ::PROTOBUF_NAMESPACE_ID::int32 cterefcount() const; + void set_cterefcount(::PROTOBUF_NAMESPACE_ID::int32 value); + private: + ::PROTOBUF_NAMESPACE_ID::int32 _internal_cterefcount() const; + void _internal_set_cterefcount(::PROTOBUF_NAMESPACE_ID::int32 value); + public: + + // @@protoc_insertion_point(class_scope:pg_query.CommonTableExpr) + private: + class _Internal; + + template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; + typedef void InternalArenaConstructable_; + typedef void DestructorSkippable_; + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > aliascolnames_; + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > ctecolnames_; + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > ctecoltypes_; + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > ctecoltypmods_; + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > ctecolcollations_; + ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr ctename_; + ::pg_query::Node* ctequery_; + int ctematerialized_; + ::PROTOBUF_NAMESPACE_ID::int32 location_; + bool cterecursive_; + ::PROTOBUF_NAMESPACE_ID::int32 cterefcount_; + mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; + friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; +}; +// ------------------------------------------------------------------- + +class RoleSpec PROTOBUF_FINAL : + public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.RoleSpec) */ { + public: + inline RoleSpec() : RoleSpec(nullptr) {} + virtual ~RoleSpec(); + + RoleSpec(const RoleSpec& from); + RoleSpec(RoleSpec&& from) noexcept + : RoleSpec() { + *this = ::std::move(from); + } + + inline RoleSpec& operator=(const RoleSpec& from) { + CopyFrom(from); + return *this; + } + inline RoleSpec& operator=(RoleSpec&& from) noexcept { + if (GetArena() == from.GetArena()) { + if (this != &from) InternalSwap(&from); + } else { + CopyFrom(from); + } + return *this; + } + + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { + return GetDescriptor(); + } + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { + return GetMetadataStatic().descriptor; + } + static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { + return GetMetadataStatic().reflection; + } + static const RoleSpec& default_instance(); + + static inline const RoleSpec* internal_default_instance() { + return reinterpret_cast( + &_RoleSpec_default_instance_); + } + static constexpr int kIndexInFileMessages = + 222; + + friend void swap(RoleSpec& a, RoleSpec& b) { + a.Swap(&b); + } + inline void Swap(RoleSpec* other) { + if (other == this) return; + if (GetArena() == other->GetArena()) { + InternalSwap(other); + } else { + ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); + } + } + void UnsafeArenaSwap(RoleSpec* other) { + if (other == this) return; + GOOGLE_DCHECK(GetArena() == other->GetArena()); + InternalSwap(other); + } + + // implements Message ---------------------------------------------- + + inline RoleSpec* New() const final { + return CreateMaybeMessage(nullptr); + } + + RoleSpec* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { + return CreateMaybeMessage(arena); + } + void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void CopyFrom(const RoleSpec& from); + void MergeFrom(const RoleSpec& from); + PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; + bool IsInitialized() const final; + + size_t ByteSizeLong() const final; + const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; + ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( + ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; + int GetCachedSize() const final { return _cached_size_.Get(); } + + private: + inline void SharedCtor(); + inline void SharedDtor(); + void SetCachedSize(int size) const final; + void InternalSwap(RoleSpec* other); + friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; + static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { + return "pg_query.RoleSpec"; + } + protected: + explicit RoleSpec(::PROTOBUF_NAMESPACE_ID::Arena* arena); + private: + static void ArenaDtor(void* object); + inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); + public: + + ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; + private: + static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { + ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); + return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; + } + + public: + + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + + enum : int { + kRolenameFieldNumber = 2, + kRoletypeFieldNumber = 1, + kLocationFieldNumber = 3, + }; + // string rolename = 2 [json_name = "rolename"]; + void clear_rolename(); + const std::string& rolename() const; + void set_rolename(const std::string& value); + void set_rolename(std::string&& value); + void set_rolename(const char* value); + void set_rolename(const char* value, size_t size); + std::string* mutable_rolename(); + std::string* release_rolename(); + void set_allocated_rolename(std::string* rolename); + private: + const std::string& _internal_rolename() const; + void _internal_set_rolename(const std::string& value); + std::string* _internal_mutable_rolename(); + public: + + // .pg_query.RoleSpecType roletype = 1 [json_name = "roletype"]; + void clear_roletype(); + ::pg_query::RoleSpecType roletype() const; + void set_roletype(::pg_query::RoleSpecType value); + private: + ::pg_query::RoleSpecType _internal_roletype() const; + void _internal_set_roletype(::pg_query::RoleSpecType value); + public: + + // int32 location = 3 [json_name = "location"]; + void clear_location(); + ::PROTOBUF_NAMESPACE_ID::int32 location() const; + void set_location(::PROTOBUF_NAMESPACE_ID::int32 value); + private: + ::PROTOBUF_NAMESPACE_ID::int32 _internal_location() const; + void _internal_set_location(::PROTOBUF_NAMESPACE_ID::int32 value); + public: + + // @@protoc_insertion_point(class_scope:pg_query.RoleSpec) + private: + class _Internal; + + template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; + typedef void InternalArenaConstructable_; + typedef void DestructorSkippable_; + ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr rolename_; + int roletype_; + ::PROTOBUF_NAMESPACE_ID::int32 location_; + mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; + friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; +}; +// ------------------------------------------------------------------- + +class TriggerTransition PROTOBUF_FINAL : + public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.TriggerTransition) */ { + public: + inline TriggerTransition() : TriggerTransition(nullptr) {} + virtual ~TriggerTransition(); + + TriggerTransition(const TriggerTransition& from); + TriggerTransition(TriggerTransition&& from) noexcept + : TriggerTransition() { + *this = ::std::move(from); + } + + inline TriggerTransition& operator=(const TriggerTransition& from) { + CopyFrom(from); + return *this; + } + inline TriggerTransition& operator=(TriggerTransition&& from) noexcept { + if (GetArena() == from.GetArena()) { + if (this != &from) InternalSwap(&from); + } else { + CopyFrom(from); + } + return *this; + } + + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { + return GetDescriptor(); + } + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { + return GetMetadataStatic().descriptor; + } + static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { + return GetMetadataStatic().reflection; + } + static const TriggerTransition& default_instance(); + + static inline const TriggerTransition* internal_default_instance() { + return reinterpret_cast( + &_TriggerTransition_default_instance_); + } + static constexpr int kIndexInFileMessages = + 223; + + friend void swap(TriggerTransition& a, TriggerTransition& b) { + a.Swap(&b); + } + inline void Swap(TriggerTransition* other) { + if (other == this) return; + if (GetArena() == other->GetArena()) { + InternalSwap(other); + } else { + ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); + } + } + void UnsafeArenaSwap(TriggerTransition* other) { + if (other == this) return; + GOOGLE_DCHECK(GetArena() == other->GetArena()); + InternalSwap(other); + } + + // implements Message ---------------------------------------------- + + inline TriggerTransition* New() const final { + return CreateMaybeMessage(nullptr); + } + + TriggerTransition* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { + return CreateMaybeMessage(arena); + } + void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void CopyFrom(const TriggerTransition& from); + void MergeFrom(const TriggerTransition& from); + PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; + bool IsInitialized() const final; + + size_t ByteSizeLong() const final; + const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; + ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( + ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; + int GetCachedSize() const final { return _cached_size_.Get(); } + + private: + inline void SharedCtor(); + inline void SharedDtor(); + void SetCachedSize(int size) const final; + void InternalSwap(TriggerTransition* other); + friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; + static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { + return "pg_query.TriggerTransition"; + } + protected: + explicit TriggerTransition(::PROTOBUF_NAMESPACE_ID::Arena* arena); + private: + static void ArenaDtor(void* object); + inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); + public: + + ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; + private: + static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { + ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); + return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; + } + + public: + + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + + enum : int { + kNameFieldNumber = 1, + kIsNewFieldNumber = 2, + kIsTableFieldNumber = 3, + }; + // string name = 1 [json_name = "name"]; + void clear_name(); + const std::string& name() const; + void set_name(const std::string& value); + void set_name(std::string&& value); + void set_name(const char* value); + void set_name(const char* value, size_t size); + std::string* mutable_name(); + std::string* release_name(); + void set_allocated_name(std::string* name); + private: + const std::string& _internal_name() const; + void _internal_set_name(const std::string& value); + std::string* _internal_mutable_name(); + public: + + // bool is_new = 2 [json_name = "isNew"]; + void clear_is_new(); + bool is_new() const; + void set_is_new(bool value); + private: + bool _internal_is_new() const; + void _internal_set_is_new(bool value); + public: + + // bool is_table = 3 [json_name = "isTable"]; + void clear_is_table(); + bool is_table() const; + void set_is_table(bool value); + private: + bool _internal_is_table() const; + void _internal_set_is_table(bool value); + public: + + // @@protoc_insertion_point(class_scope:pg_query.TriggerTransition) + private: + class _Internal; + + template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; + typedef void InternalArenaConstructable_; + typedef void DestructorSkippable_; + ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr name_; + bool is_new_; + bool is_table_; + mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; + friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; +}; +// ------------------------------------------------------------------- + +class PartitionElem PROTOBUF_FINAL : + public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.PartitionElem) */ { + public: + inline PartitionElem() : PartitionElem(nullptr) {} + virtual ~PartitionElem(); + + PartitionElem(const PartitionElem& from); + PartitionElem(PartitionElem&& from) noexcept + : PartitionElem() { + *this = ::std::move(from); + } + + inline PartitionElem& operator=(const PartitionElem& from) { + CopyFrom(from); + return *this; + } + inline PartitionElem& operator=(PartitionElem&& from) noexcept { + if (GetArena() == from.GetArena()) { + if (this != &from) InternalSwap(&from); + } else { + CopyFrom(from); + } + return *this; + } + + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { + return GetDescriptor(); + } + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { + return GetMetadataStatic().descriptor; + } + static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { + return GetMetadataStatic().reflection; + } + static const PartitionElem& default_instance(); + + static inline const PartitionElem* internal_default_instance() { + return reinterpret_cast( + &_PartitionElem_default_instance_); + } + static constexpr int kIndexInFileMessages = + 224; + + friend void swap(PartitionElem& a, PartitionElem& b) { + a.Swap(&b); + } + inline void Swap(PartitionElem* other) { + if (other == this) return; + if (GetArena() == other->GetArena()) { + InternalSwap(other); + } else { + ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); + } + } + void UnsafeArenaSwap(PartitionElem* other) { + if (other == this) return; + GOOGLE_DCHECK(GetArena() == other->GetArena()); + InternalSwap(other); + } + + // implements Message ---------------------------------------------- + + inline PartitionElem* New() const final { + return CreateMaybeMessage(nullptr); + } + + PartitionElem* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { + return CreateMaybeMessage(arena); + } + void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void CopyFrom(const PartitionElem& from); + void MergeFrom(const PartitionElem& from); + PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; + bool IsInitialized() const final; + + size_t ByteSizeLong() const final; + const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; + ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( + ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; + int GetCachedSize() const final { return _cached_size_.Get(); } + + private: + inline void SharedCtor(); + inline void SharedDtor(); + void SetCachedSize(int size) const final; + void InternalSwap(PartitionElem* other); + friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; + static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { + return "pg_query.PartitionElem"; + } + protected: + explicit PartitionElem(::PROTOBUF_NAMESPACE_ID::Arena* arena); + private: + static void ArenaDtor(void* object); + inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); + public: + + ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; + private: + static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { + ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); + return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; + } + + public: + + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + + enum : int { + kCollationFieldNumber = 3, + kOpclassFieldNumber = 4, + kNameFieldNumber = 1, + kExprFieldNumber = 2, + kLocationFieldNumber = 5, + }; + // repeated .pg_query.Node collation = 3 [json_name = "collation"]; + int collation_size() const; + private: + int _internal_collation_size() const; + public: + void clear_collation(); + ::pg_query::Node* mutable_collation(int index); + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* + mutable_collation(); + private: + const ::pg_query::Node& _internal_collation(int index) const; + ::pg_query::Node* _internal_add_collation(); + public: + const ::pg_query::Node& collation(int index) const; + ::pg_query::Node* add_collation(); + const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& + collation() const; + + // repeated .pg_query.Node opclass = 4 [json_name = "opclass"]; + int opclass_size() const; + private: + int _internal_opclass_size() const; + public: + void clear_opclass(); + ::pg_query::Node* mutable_opclass(int index); + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* + mutable_opclass(); + private: + const ::pg_query::Node& _internal_opclass(int index) const; + ::pg_query::Node* _internal_add_opclass(); + public: + const ::pg_query::Node& opclass(int index) const; + ::pg_query::Node* add_opclass(); + const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& + opclass() const; + + // string name = 1 [json_name = "name"]; + void clear_name(); + const std::string& name() const; + void set_name(const std::string& value); + void set_name(std::string&& value); + void set_name(const char* value); + void set_name(const char* value, size_t size); + std::string* mutable_name(); + std::string* release_name(); + void set_allocated_name(std::string* name); + private: + const std::string& _internal_name() const; + void _internal_set_name(const std::string& value); + std::string* _internal_mutable_name(); + public: + + // .pg_query.Node expr = 2 [json_name = "expr"]; + bool has_expr() const; + private: + bool _internal_has_expr() const; + public: + void clear_expr(); + const ::pg_query::Node& expr() const; + ::pg_query::Node* release_expr(); + ::pg_query::Node* mutable_expr(); + void set_allocated_expr(::pg_query::Node* expr); + private: + const ::pg_query::Node& _internal_expr() const; + ::pg_query::Node* _internal_mutable_expr(); + public: + void unsafe_arena_set_allocated_expr( + ::pg_query::Node* expr); + ::pg_query::Node* unsafe_arena_release_expr(); + + // int32 location = 5 [json_name = "location"]; + void clear_location(); + ::PROTOBUF_NAMESPACE_ID::int32 location() const; + void set_location(::PROTOBUF_NAMESPACE_ID::int32 value); + private: + ::PROTOBUF_NAMESPACE_ID::int32 _internal_location() const; + void _internal_set_location(::PROTOBUF_NAMESPACE_ID::int32 value); + public: + + // @@protoc_insertion_point(class_scope:pg_query.PartitionElem) + private: + class _Internal; + + template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; + typedef void InternalArenaConstructable_; + typedef void DestructorSkippable_; + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > collation_; + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > opclass_; + ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr name_; + ::pg_query::Node* expr_; + ::PROTOBUF_NAMESPACE_ID::int32 location_; + mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; + friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; +}; +// ------------------------------------------------------------------- + +class PartitionSpec PROTOBUF_FINAL : + public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.PartitionSpec) */ { + public: + inline PartitionSpec() : PartitionSpec(nullptr) {} + virtual ~PartitionSpec(); + + PartitionSpec(const PartitionSpec& from); + PartitionSpec(PartitionSpec&& from) noexcept + : PartitionSpec() { + *this = ::std::move(from); + } + + inline PartitionSpec& operator=(const PartitionSpec& from) { + CopyFrom(from); + return *this; + } + inline PartitionSpec& operator=(PartitionSpec&& from) noexcept { + if (GetArena() == from.GetArena()) { + if (this != &from) InternalSwap(&from); + } else { + CopyFrom(from); + } + return *this; + } + + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { + return GetDescriptor(); + } + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { + return GetMetadataStatic().descriptor; + } + static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { + return GetMetadataStatic().reflection; + } + static const PartitionSpec& default_instance(); + + static inline const PartitionSpec* internal_default_instance() { + return reinterpret_cast( + &_PartitionSpec_default_instance_); + } + static constexpr int kIndexInFileMessages = + 225; + + friend void swap(PartitionSpec& a, PartitionSpec& b) { + a.Swap(&b); + } + inline void Swap(PartitionSpec* other) { + if (other == this) return; + if (GetArena() == other->GetArena()) { + InternalSwap(other); + } else { + ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); + } + } + void UnsafeArenaSwap(PartitionSpec* other) { + if (other == this) return; + GOOGLE_DCHECK(GetArena() == other->GetArena()); + InternalSwap(other); + } + + // implements Message ---------------------------------------------- + + inline PartitionSpec* New() const final { + return CreateMaybeMessage(nullptr); + } + + PartitionSpec* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { + return CreateMaybeMessage(arena); + } + void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void CopyFrom(const PartitionSpec& from); + void MergeFrom(const PartitionSpec& from); + PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; + bool IsInitialized() const final; + + size_t ByteSizeLong() const final; + const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; + ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( + ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; + int GetCachedSize() const final { return _cached_size_.Get(); } + + private: + inline void SharedCtor(); + inline void SharedDtor(); + void SetCachedSize(int size) const final; + void InternalSwap(PartitionSpec* other); + friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; + static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { + return "pg_query.PartitionSpec"; + } + protected: + explicit PartitionSpec(::PROTOBUF_NAMESPACE_ID::Arena* arena); + private: + static void ArenaDtor(void* object); + inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); + public: + + ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; + private: + static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { + ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); + return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; + } + + public: + + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + + enum : int { + kPartParamsFieldNumber = 2, + kStrategyFieldNumber = 1, + kLocationFieldNumber = 3, + }; + // repeated .pg_query.Node part_params = 2 [json_name = "partParams"]; + int part_params_size() const; + private: + int _internal_part_params_size() const; + public: + void clear_part_params(); + ::pg_query::Node* mutable_part_params(int index); + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* + mutable_part_params(); + private: + const ::pg_query::Node& _internal_part_params(int index) const; + ::pg_query::Node* _internal_add_part_params(); + public: + const ::pg_query::Node& part_params(int index) const; + ::pg_query::Node* add_part_params(); + const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& + part_params() const; + + // string strategy = 1 [json_name = "strategy"]; + void clear_strategy(); + const std::string& strategy() const; + void set_strategy(const std::string& value); + void set_strategy(std::string&& value); + void set_strategy(const char* value); + void set_strategy(const char* value, size_t size); + std::string* mutable_strategy(); + std::string* release_strategy(); + void set_allocated_strategy(std::string* strategy); + private: + const std::string& _internal_strategy() const; + void _internal_set_strategy(const std::string& value); + std::string* _internal_mutable_strategy(); + public: + + // int32 location = 3 [json_name = "location"]; + void clear_location(); + ::PROTOBUF_NAMESPACE_ID::int32 location() const; + void set_location(::PROTOBUF_NAMESPACE_ID::int32 value); + private: + ::PROTOBUF_NAMESPACE_ID::int32 _internal_location() const; + void _internal_set_location(::PROTOBUF_NAMESPACE_ID::int32 value); + public: + + // @@protoc_insertion_point(class_scope:pg_query.PartitionSpec) + private: + class _Internal; + + template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; + typedef void InternalArenaConstructable_; + typedef void DestructorSkippable_; + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > part_params_; + ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr strategy_; + ::PROTOBUF_NAMESPACE_ID::int32 location_; + mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; + friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; +}; +// ------------------------------------------------------------------- + +class PartitionBoundSpec PROTOBUF_FINAL : + public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.PartitionBoundSpec) */ { + public: + inline PartitionBoundSpec() : PartitionBoundSpec(nullptr) {} + virtual ~PartitionBoundSpec(); + + PartitionBoundSpec(const PartitionBoundSpec& from); + PartitionBoundSpec(PartitionBoundSpec&& from) noexcept + : PartitionBoundSpec() { + *this = ::std::move(from); + } + + inline PartitionBoundSpec& operator=(const PartitionBoundSpec& from) { + CopyFrom(from); + return *this; + } + inline PartitionBoundSpec& operator=(PartitionBoundSpec&& from) noexcept { + if (GetArena() == from.GetArena()) { + if (this != &from) InternalSwap(&from); + } else { + CopyFrom(from); + } + return *this; + } + + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { + return GetDescriptor(); + } + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { + return GetMetadataStatic().descriptor; + } + static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { + return GetMetadataStatic().reflection; + } + static const PartitionBoundSpec& default_instance(); + + static inline const PartitionBoundSpec* internal_default_instance() { + return reinterpret_cast( + &_PartitionBoundSpec_default_instance_); + } + static constexpr int kIndexInFileMessages = + 226; + + friend void swap(PartitionBoundSpec& a, PartitionBoundSpec& b) { + a.Swap(&b); + } + inline void Swap(PartitionBoundSpec* other) { + if (other == this) return; + if (GetArena() == other->GetArena()) { + InternalSwap(other); + } else { + ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); + } + } + void UnsafeArenaSwap(PartitionBoundSpec* other) { + if (other == this) return; + GOOGLE_DCHECK(GetArena() == other->GetArena()); + InternalSwap(other); + } + + // implements Message ---------------------------------------------- + + inline PartitionBoundSpec* New() const final { + return CreateMaybeMessage(nullptr); + } + + PartitionBoundSpec* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { + return CreateMaybeMessage(arena); + } + void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void CopyFrom(const PartitionBoundSpec& from); + void MergeFrom(const PartitionBoundSpec& from); + PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; + bool IsInitialized() const final; + + size_t ByteSizeLong() const final; + const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; + ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( + ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; + int GetCachedSize() const final { return _cached_size_.Get(); } + + private: + inline void SharedCtor(); + inline void SharedDtor(); + void SetCachedSize(int size) const final; + void InternalSwap(PartitionBoundSpec* other); + friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; + static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { + return "pg_query.PartitionBoundSpec"; + } + protected: + explicit PartitionBoundSpec(::PROTOBUF_NAMESPACE_ID::Arena* arena); + private: + static void ArenaDtor(void* object); + inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); + public: + + ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; + private: + static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { + ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); + return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; + } + + public: + + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + + enum : int { + kListdatumsFieldNumber = 5, + kLowerdatumsFieldNumber = 6, + kUpperdatumsFieldNumber = 7, + kStrategyFieldNumber = 1, + kIsDefaultFieldNumber = 2, + kModulusFieldNumber = 3, + kRemainderFieldNumber = 4, + kLocationFieldNumber = 8, + }; + // repeated .pg_query.Node listdatums = 5 [json_name = "listdatums"]; + int listdatums_size() const; + private: + int _internal_listdatums_size() const; + public: + void clear_listdatums(); + ::pg_query::Node* mutable_listdatums(int index); + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* + mutable_listdatums(); + private: + const ::pg_query::Node& _internal_listdatums(int index) const; + ::pg_query::Node* _internal_add_listdatums(); + public: + const ::pg_query::Node& listdatums(int index) const; + ::pg_query::Node* add_listdatums(); + const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& + listdatums() const; + + // repeated .pg_query.Node lowerdatums = 6 [json_name = "lowerdatums"]; + int lowerdatums_size() const; + private: + int _internal_lowerdatums_size() const; + public: + void clear_lowerdatums(); + ::pg_query::Node* mutable_lowerdatums(int index); + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* + mutable_lowerdatums(); + private: + const ::pg_query::Node& _internal_lowerdatums(int index) const; + ::pg_query::Node* _internal_add_lowerdatums(); + public: + const ::pg_query::Node& lowerdatums(int index) const; + ::pg_query::Node* add_lowerdatums(); + const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& + lowerdatums() const; + + // repeated .pg_query.Node upperdatums = 7 [json_name = "upperdatums"]; + int upperdatums_size() const; + private: + int _internal_upperdatums_size() const; + public: + void clear_upperdatums(); + ::pg_query::Node* mutable_upperdatums(int index); + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* + mutable_upperdatums(); + private: + const ::pg_query::Node& _internal_upperdatums(int index) const; + ::pg_query::Node* _internal_add_upperdatums(); + public: + const ::pg_query::Node& upperdatums(int index) const; + ::pg_query::Node* add_upperdatums(); + const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& + upperdatums() const; + + // string strategy = 1 [json_name = "strategy"]; + void clear_strategy(); + const std::string& strategy() const; + void set_strategy(const std::string& value); + void set_strategy(std::string&& value); + void set_strategy(const char* value); + void set_strategy(const char* value, size_t size); + std::string* mutable_strategy(); + std::string* release_strategy(); + void set_allocated_strategy(std::string* strategy); + private: + const std::string& _internal_strategy() const; + void _internal_set_strategy(const std::string& value); + std::string* _internal_mutable_strategy(); + public: + + // bool is_default = 2 [json_name = "is_default"]; + void clear_is_default(); + bool is_default() const; + void set_is_default(bool value); + private: + bool _internal_is_default() const; + void _internal_set_is_default(bool value); + public: + + // int32 modulus = 3 [json_name = "modulus"]; + void clear_modulus(); + ::PROTOBUF_NAMESPACE_ID::int32 modulus() const; + void set_modulus(::PROTOBUF_NAMESPACE_ID::int32 value); + private: + ::PROTOBUF_NAMESPACE_ID::int32 _internal_modulus() const; + void _internal_set_modulus(::PROTOBUF_NAMESPACE_ID::int32 value); + public: + + // int32 remainder = 4 [json_name = "remainder"]; + void clear_remainder(); + ::PROTOBUF_NAMESPACE_ID::int32 remainder() const; + void set_remainder(::PROTOBUF_NAMESPACE_ID::int32 value); + private: + ::PROTOBUF_NAMESPACE_ID::int32 _internal_remainder() const; + void _internal_set_remainder(::PROTOBUF_NAMESPACE_ID::int32 value); + public: + + // int32 location = 8 [json_name = "location"]; + void clear_location(); + ::PROTOBUF_NAMESPACE_ID::int32 location() const; + void set_location(::PROTOBUF_NAMESPACE_ID::int32 value); + private: + ::PROTOBUF_NAMESPACE_ID::int32 _internal_location() const; + void _internal_set_location(::PROTOBUF_NAMESPACE_ID::int32 value); + public: + + // @@protoc_insertion_point(class_scope:pg_query.PartitionBoundSpec) + private: + class _Internal; + + template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; + typedef void InternalArenaConstructable_; + typedef void DestructorSkippable_; + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > listdatums_; + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > lowerdatums_; + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > upperdatums_; + ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr strategy_; + bool is_default_; + ::PROTOBUF_NAMESPACE_ID::int32 modulus_; + ::PROTOBUF_NAMESPACE_ID::int32 remainder_; + ::PROTOBUF_NAMESPACE_ID::int32 location_; + mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; + friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; +}; +// ------------------------------------------------------------------- + +class PartitionRangeDatum PROTOBUF_FINAL : + public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.PartitionRangeDatum) */ { + public: + inline PartitionRangeDatum() : PartitionRangeDatum(nullptr) {} + virtual ~PartitionRangeDatum(); + + PartitionRangeDatum(const PartitionRangeDatum& from); + PartitionRangeDatum(PartitionRangeDatum&& from) noexcept + : PartitionRangeDatum() { + *this = ::std::move(from); + } + + inline PartitionRangeDatum& operator=(const PartitionRangeDatum& from) { + CopyFrom(from); + return *this; + } + inline PartitionRangeDatum& operator=(PartitionRangeDatum&& from) noexcept { + if (GetArena() == from.GetArena()) { + if (this != &from) InternalSwap(&from); + } else { + CopyFrom(from); + } + return *this; + } + + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { + return GetDescriptor(); + } + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { + return GetMetadataStatic().descriptor; + } + static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { + return GetMetadataStatic().reflection; + } + static const PartitionRangeDatum& default_instance(); + + static inline const PartitionRangeDatum* internal_default_instance() { + return reinterpret_cast( + &_PartitionRangeDatum_default_instance_); + } + static constexpr int kIndexInFileMessages = + 227; + + friend void swap(PartitionRangeDatum& a, PartitionRangeDatum& b) { + a.Swap(&b); + } + inline void Swap(PartitionRangeDatum* other) { + if (other == this) return; + if (GetArena() == other->GetArena()) { + InternalSwap(other); + } else { + ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); + } + } + void UnsafeArenaSwap(PartitionRangeDatum* other) { + if (other == this) return; + GOOGLE_DCHECK(GetArena() == other->GetArena()); + InternalSwap(other); + } + + // implements Message ---------------------------------------------- + + inline PartitionRangeDatum* New() const final { + return CreateMaybeMessage(nullptr); + } + + PartitionRangeDatum* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { + return CreateMaybeMessage(arena); + } + void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void CopyFrom(const PartitionRangeDatum& from); + void MergeFrom(const PartitionRangeDatum& from); + PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; + bool IsInitialized() const final; + + size_t ByteSizeLong() const final; + const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; + ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( + ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; + int GetCachedSize() const final { return _cached_size_.Get(); } + + private: + inline void SharedCtor(); + inline void SharedDtor(); + void SetCachedSize(int size) const final; + void InternalSwap(PartitionRangeDatum* other); + friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; + static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { + return "pg_query.PartitionRangeDatum"; + } + protected: + explicit PartitionRangeDatum(::PROTOBUF_NAMESPACE_ID::Arena* arena); + private: + static void ArenaDtor(void* object); + inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); + public: + + ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; + private: + static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { + ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); + return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; + } + + public: + + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + + enum : int { + kValueFieldNumber = 2, + kKindFieldNumber = 1, + kLocationFieldNumber = 3, + }; + // .pg_query.Node value = 2 [json_name = "value"]; + bool has_value() const; + private: + bool _internal_has_value() const; + public: + void clear_value(); + const ::pg_query::Node& value() const; + ::pg_query::Node* release_value(); + ::pg_query::Node* mutable_value(); + void set_allocated_value(::pg_query::Node* value); + private: + const ::pg_query::Node& _internal_value() const; + ::pg_query::Node* _internal_mutable_value(); + public: + void unsafe_arena_set_allocated_value( + ::pg_query::Node* value); + ::pg_query::Node* unsafe_arena_release_value(); + + // .pg_query.PartitionRangeDatumKind kind = 1 [json_name = "kind"]; + void clear_kind(); + ::pg_query::PartitionRangeDatumKind kind() const; + void set_kind(::pg_query::PartitionRangeDatumKind value); + private: + ::pg_query::PartitionRangeDatumKind _internal_kind() const; + void _internal_set_kind(::pg_query::PartitionRangeDatumKind value); + public: + + // int32 location = 3 [json_name = "location"]; + void clear_location(); + ::PROTOBUF_NAMESPACE_ID::int32 location() const; + void set_location(::PROTOBUF_NAMESPACE_ID::int32 value); + private: + ::PROTOBUF_NAMESPACE_ID::int32 _internal_location() const; + void _internal_set_location(::PROTOBUF_NAMESPACE_ID::int32 value); + public: + + // @@protoc_insertion_point(class_scope:pg_query.PartitionRangeDatum) + private: + class _Internal; + + template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; + typedef void InternalArenaConstructable_; + typedef void DestructorSkippable_; + ::pg_query::Node* value_; + int kind_; + ::PROTOBUF_NAMESPACE_ID::int32 location_; + mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; + friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; +}; +// ------------------------------------------------------------------- + +class PartitionCmd PROTOBUF_FINAL : + public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.PartitionCmd) */ { + public: + inline PartitionCmd() : PartitionCmd(nullptr) {} + virtual ~PartitionCmd(); + + PartitionCmd(const PartitionCmd& from); + PartitionCmd(PartitionCmd&& from) noexcept + : PartitionCmd() { + *this = ::std::move(from); + } + + inline PartitionCmd& operator=(const PartitionCmd& from) { + CopyFrom(from); + return *this; + } + inline PartitionCmd& operator=(PartitionCmd&& from) noexcept { + if (GetArena() == from.GetArena()) { + if (this != &from) InternalSwap(&from); + } else { + CopyFrom(from); + } + return *this; + } + + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { + return GetDescriptor(); + } + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { + return GetMetadataStatic().descriptor; + } + static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { + return GetMetadataStatic().reflection; + } + static const PartitionCmd& default_instance(); + + static inline const PartitionCmd* internal_default_instance() { + return reinterpret_cast( + &_PartitionCmd_default_instance_); + } + static constexpr int kIndexInFileMessages = + 228; + + friend void swap(PartitionCmd& a, PartitionCmd& b) { + a.Swap(&b); + } + inline void Swap(PartitionCmd* other) { + if (other == this) return; + if (GetArena() == other->GetArena()) { + InternalSwap(other); + } else { + ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); + } + } + void UnsafeArenaSwap(PartitionCmd* other) { + if (other == this) return; + GOOGLE_DCHECK(GetArena() == other->GetArena()); + InternalSwap(other); + } + + // implements Message ---------------------------------------------- + + inline PartitionCmd* New() const final { + return CreateMaybeMessage(nullptr); + } + + PartitionCmd* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { + return CreateMaybeMessage(arena); + } + void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void CopyFrom(const PartitionCmd& from); + void MergeFrom(const PartitionCmd& from); + PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; + bool IsInitialized() const final; + + size_t ByteSizeLong() const final; + const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; + ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( + ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; + int GetCachedSize() const final { return _cached_size_.Get(); } + + private: + inline void SharedCtor(); + inline void SharedDtor(); + void SetCachedSize(int size) const final; + void InternalSwap(PartitionCmd* other); + friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; + static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { + return "pg_query.PartitionCmd"; + } + protected: + explicit PartitionCmd(::PROTOBUF_NAMESPACE_ID::Arena* arena); + private: + static void ArenaDtor(void* object); + inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); + public: + + ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; + private: + static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { + ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); + return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; + } + + public: + + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + + enum : int { + kNameFieldNumber = 1, + kBoundFieldNumber = 2, + }; + // .pg_query.RangeVar name = 1 [json_name = "name"]; + bool has_name() const; + private: + bool _internal_has_name() const; + public: + void clear_name(); + const ::pg_query::RangeVar& name() const; + ::pg_query::RangeVar* release_name(); + ::pg_query::RangeVar* mutable_name(); + void set_allocated_name(::pg_query::RangeVar* name); + private: + const ::pg_query::RangeVar& _internal_name() const; + ::pg_query::RangeVar* _internal_mutable_name(); + public: + void unsafe_arena_set_allocated_name( + ::pg_query::RangeVar* name); + ::pg_query::RangeVar* unsafe_arena_release_name(); + + // .pg_query.PartitionBoundSpec bound = 2 [json_name = "bound"]; + bool has_bound() const; + private: + bool _internal_has_bound() const; + public: + void clear_bound(); + const ::pg_query::PartitionBoundSpec& bound() const; + ::pg_query::PartitionBoundSpec* release_bound(); + ::pg_query::PartitionBoundSpec* mutable_bound(); + void set_allocated_bound(::pg_query::PartitionBoundSpec* bound); + private: + const ::pg_query::PartitionBoundSpec& _internal_bound() const; + ::pg_query::PartitionBoundSpec* _internal_mutable_bound(); + public: + void unsafe_arena_set_allocated_bound( + ::pg_query::PartitionBoundSpec* bound); + ::pg_query::PartitionBoundSpec* unsafe_arena_release_bound(); + + // @@protoc_insertion_point(class_scope:pg_query.PartitionCmd) + private: + class _Internal; + + template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; + typedef void InternalArenaConstructable_; + typedef void DestructorSkippable_; + ::pg_query::RangeVar* name_; + ::pg_query::PartitionBoundSpec* bound_; + mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; + friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; +}; +// ------------------------------------------------------------------- + +class VacuumRelation PROTOBUF_FINAL : + public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.VacuumRelation) */ { + public: + inline VacuumRelation() : VacuumRelation(nullptr) {} + virtual ~VacuumRelation(); + + VacuumRelation(const VacuumRelation& from); + VacuumRelation(VacuumRelation&& from) noexcept + : VacuumRelation() { + *this = ::std::move(from); + } + + inline VacuumRelation& operator=(const VacuumRelation& from) { + CopyFrom(from); + return *this; + } + inline VacuumRelation& operator=(VacuumRelation&& from) noexcept { + if (GetArena() == from.GetArena()) { + if (this != &from) InternalSwap(&from); + } else { + CopyFrom(from); + } + return *this; + } + + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { + return GetDescriptor(); + } + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { + return GetMetadataStatic().descriptor; + } + static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { + return GetMetadataStatic().reflection; + } + static const VacuumRelation& default_instance(); + + static inline const VacuumRelation* internal_default_instance() { + return reinterpret_cast( + &_VacuumRelation_default_instance_); + } + static constexpr int kIndexInFileMessages = + 229; + + friend void swap(VacuumRelation& a, VacuumRelation& b) { + a.Swap(&b); + } + inline void Swap(VacuumRelation* other) { + if (other == this) return; + if (GetArena() == other->GetArena()) { + InternalSwap(other); + } else { + ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); + } + } + void UnsafeArenaSwap(VacuumRelation* other) { + if (other == this) return; + GOOGLE_DCHECK(GetArena() == other->GetArena()); + InternalSwap(other); + } + + // implements Message ---------------------------------------------- + + inline VacuumRelation* New() const final { + return CreateMaybeMessage(nullptr); + } + + VacuumRelation* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { + return CreateMaybeMessage(arena); + } + void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void CopyFrom(const VacuumRelation& from); + void MergeFrom(const VacuumRelation& from); + PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; + bool IsInitialized() const final; + + size_t ByteSizeLong() const final; + const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; + ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( + ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; + int GetCachedSize() const final { return _cached_size_.Get(); } + + private: + inline void SharedCtor(); + inline void SharedDtor(); + void SetCachedSize(int size) const final; + void InternalSwap(VacuumRelation* other); + friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; + static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { + return "pg_query.VacuumRelation"; + } + protected: + explicit VacuumRelation(::PROTOBUF_NAMESPACE_ID::Arena* arena); + private: + static void ArenaDtor(void* object); + inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); + public: + + ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; + private: + static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { + ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); + return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; + } + + public: + + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + + enum : int { + kVaColsFieldNumber = 3, + kRelationFieldNumber = 1, + kOidFieldNumber = 2, + }; + // repeated .pg_query.Node va_cols = 3 [json_name = "va_cols"]; + int va_cols_size() const; + private: + int _internal_va_cols_size() const; + public: + void clear_va_cols(); + ::pg_query::Node* mutable_va_cols(int index); + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* + mutable_va_cols(); + private: + const ::pg_query::Node& _internal_va_cols(int index) const; + ::pg_query::Node* _internal_add_va_cols(); + public: + const ::pg_query::Node& va_cols(int index) const; + ::pg_query::Node* add_va_cols(); + const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& + va_cols() const; + + // .pg_query.RangeVar relation = 1 [json_name = "relation"]; + bool has_relation() const; + private: + bool _internal_has_relation() const; + public: + void clear_relation(); + const ::pg_query::RangeVar& relation() const; + ::pg_query::RangeVar* release_relation(); + ::pg_query::RangeVar* mutable_relation(); + void set_allocated_relation(::pg_query::RangeVar* relation); + private: + const ::pg_query::RangeVar& _internal_relation() const; + ::pg_query::RangeVar* _internal_mutable_relation(); + public: + void unsafe_arena_set_allocated_relation( + ::pg_query::RangeVar* relation); + ::pg_query::RangeVar* unsafe_arena_release_relation(); + + // uint32 oid = 2 [json_name = "oid"]; + void clear_oid(); + ::PROTOBUF_NAMESPACE_ID::uint32 oid() const; + void set_oid(::PROTOBUF_NAMESPACE_ID::uint32 value); + private: + ::PROTOBUF_NAMESPACE_ID::uint32 _internal_oid() const; + void _internal_set_oid(::PROTOBUF_NAMESPACE_ID::uint32 value); + public: + + // @@protoc_insertion_point(class_scope:pg_query.VacuumRelation) + private: + class _Internal; + + template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; + typedef void InternalArenaConstructable_; + typedef void DestructorSkippable_; + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > va_cols_; + ::pg_query::RangeVar* relation_; + ::PROTOBUF_NAMESPACE_ID::uint32 oid_; + mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; + friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; +}; +// ------------------------------------------------------------------- + +class InlineCodeBlock PROTOBUF_FINAL : + public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.InlineCodeBlock) */ { + public: + inline InlineCodeBlock() : InlineCodeBlock(nullptr) {} + virtual ~InlineCodeBlock(); + + InlineCodeBlock(const InlineCodeBlock& from); + InlineCodeBlock(InlineCodeBlock&& from) noexcept + : InlineCodeBlock() { + *this = ::std::move(from); + } + + inline InlineCodeBlock& operator=(const InlineCodeBlock& from) { + CopyFrom(from); + return *this; + } + inline InlineCodeBlock& operator=(InlineCodeBlock&& from) noexcept { + if (GetArena() == from.GetArena()) { + if (this != &from) InternalSwap(&from); + } else { + CopyFrom(from); + } + return *this; + } + + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { + return GetDescriptor(); + } + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { + return GetMetadataStatic().descriptor; + } + static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { + return GetMetadataStatic().reflection; + } + static const InlineCodeBlock& default_instance(); + + static inline const InlineCodeBlock* internal_default_instance() { + return reinterpret_cast( + &_InlineCodeBlock_default_instance_); + } + static constexpr int kIndexInFileMessages = + 230; + + friend void swap(InlineCodeBlock& a, InlineCodeBlock& b) { + a.Swap(&b); + } + inline void Swap(InlineCodeBlock* other) { + if (other == this) return; + if (GetArena() == other->GetArena()) { + InternalSwap(other); + } else { + ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); + } + } + void UnsafeArenaSwap(InlineCodeBlock* other) { + if (other == this) return; + GOOGLE_DCHECK(GetArena() == other->GetArena()); + InternalSwap(other); + } + + // implements Message ---------------------------------------------- + + inline InlineCodeBlock* New() const final { + return CreateMaybeMessage(nullptr); + } + + InlineCodeBlock* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { + return CreateMaybeMessage(arena); + } + void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void CopyFrom(const InlineCodeBlock& from); + void MergeFrom(const InlineCodeBlock& from); + PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; + bool IsInitialized() const final; + + size_t ByteSizeLong() const final; + const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; + ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( + ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; + int GetCachedSize() const final { return _cached_size_.Get(); } + + private: + inline void SharedCtor(); + inline void SharedDtor(); + void SetCachedSize(int size) const final; + void InternalSwap(InlineCodeBlock* other); + friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; + static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { + return "pg_query.InlineCodeBlock"; + } + protected: + explicit InlineCodeBlock(::PROTOBUF_NAMESPACE_ID::Arena* arena); + private: + static void ArenaDtor(void* object); + inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); + public: + + ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; + private: + static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { + ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); + return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; + } + + public: + + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + + enum : int { + kSourceTextFieldNumber = 1, + kLangOidFieldNumber = 2, + kLangIsTrustedFieldNumber = 3, + kAtomicFieldNumber = 4, + }; + // string source_text = 1 [json_name = "source_text"]; + void clear_source_text(); + const std::string& source_text() const; + void set_source_text(const std::string& value); + void set_source_text(std::string&& value); + void set_source_text(const char* value); + void set_source_text(const char* value, size_t size); + std::string* mutable_source_text(); + std::string* release_source_text(); + void set_allocated_source_text(std::string* source_text); + private: + const std::string& _internal_source_text() const; + void _internal_set_source_text(const std::string& value); + std::string* _internal_mutable_source_text(); + public: + + // uint32 lang_oid = 2 [json_name = "langOid"]; + void clear_lang_oid(); + ::PROTOBUF_NAMESPACE_ID::uint32 lang_oid() const; + void set_lang_oid(::PROTOBUF_NAMESPACE_ID::uint32 value); + private: + ::PROTOBUF_NAMESPACE_ID::uint32 _internal_lang_oid() const; + void _internal_set_lang_oid(::PROTOBUF_NAMESPACE_ID::uint32 value); + public: + + // bool lang_is_trusted = 3 [json_name = "langIsTrusted"]; + void clear_lang_is_trusted(); + bool lang_is_trusted() const; + void set_lang_is_trusted(bool value); + private: + bool _internal_lang_is_trusted() const; + void _internal_set_lang_is_trusted(bool value); + public: + + // bool atomic = 4 [json_name = "atomic"]; + void clear_atomic(); + bool atomic() const; + void set_atomic(bool value); + private: + bool _internal_atomic() const; + void _internal_set_atomic(bool value); + public: + + // @@protoc_insertion_point(class_scope:pg_query.InlineCodeBlock) + private: + class _Internal; + + template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; + typedef void InternalArenaConstructable_; + typedef void DestructorSkippable_; + ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr source_text_; + ::PROTOBUF_NAMESPACE_ID::uint32 lang_oid_; + bool lang_is_trusted_; + bool atomic_; + mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; + friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; +}; +// ------------------------------------------------------------------- + +class CallContext PROTOBUF_FINAL : + public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.CallContext) */ { + public: + inline CallContext() : CallContext(nullptr) {} + virtual ~CallContext(); + + CallContext(const CallContext& from); + CallContext(CallContext&& from) noexcept + : CallContext() { + *this = ::std::move(from); + } + + inline CallContext& operator=(const CallContext& from) { + CopyFrom(from); + return *this; + } + inline CallContext& operator=(CallContext&& from) noexcept { + if (GetArena() == from.GetArena()) { + if (this != &from) InternalSwap(&from); + } else { + CopyFrom(from); + } + return *this; + } + + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { + return GetDescriptor(); + } + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { + return GetMetadataStatic().descriptor; + } + static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { + return GetMetadataStatic().reflection; + } + static const CallContext& default_instance(); + + static inline const CallContext* internal_default_instance() { + return reinterpret_cast( + &_CallContext_default_instance_); + } + static constexpr int kIndexInFileMessages = + 231; + + friend void swap(CallContext& a, CallContext& b) { + a.Swap(&b); + } + inline void Swap(CallContext* other) { + if (other == this) return; + if (GetArena() == other->GetArena()) { + InternalSwap(other); + } else { + ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); + } + } + void UnsafeArenaSwap(CallContext* other) { + if (other == this) return; + GOOGLE_DCHECK(GetArena() == other->GetArena()); + InternalSwap(other); + } + + // implements Message ---------------------------------------------- + + inline CallContext* New() const final { + return CreateMaybeMessage(nullptr); + } + + CallContext* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { + return CreateMaybeMessage(arena); + } + void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void CopyFrom(const CallContext& from); + void MergeFrom(const CallContext& from); + PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; + bool IsInitialized() const final; + + size_t ByteSizeLong() const final; + const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; + ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( + ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; + int GetCachedSize() const final { return _cached_size_.Get(); } + + private: + inline void SharedCtor(); + inline void SharedDtor(); + void SetCachedSize(int size) const final; + void InternalSwap(CallContext* other); + friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; + static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { + return "pg_query.CallContext"; + } + protected: + explicit CallContext(::PROTOBUF_NAMESPACE_ID::Arena* arena); + private: + static void ArenaDtor(void* object); + inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); + public: + + ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; + private: + static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { + ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); + return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; + } + + public: + + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + + enum : int { + kAtomicFieldNumber = 1, + }; + // bool atomic = 1 [json_name = "atomic"]; + void clear_atomic(); + bool atomic() const; + void set_atomic(bool value); + private: + bool _internal_atomic() const; + void _internal_set_atomic(bool value); + public: + + // @@protoc_insertion_point(class_scope:pg_query.CallContext) + private: + class _Internal; + + template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; + typedef void InternalArenaConstructable_; + typedef void DestructorSkippable_; + bool atomic_; + mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; + friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; +}; +// ------------------------------------------------------------------- + +class ScanToken PROTOBUF_FINAL : + public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.ScanToken) */ { + public: + inline ScanToken() : ScanToken(nullptr) {} + virtual ~ScanToken(); + + ScanToken(const ScanToken& from); + ScanToken(ScanToken&& from) noexcept + : ScanToken() { + *this = ::std::move(from); + } + + inline ScanToken& operator=(const ScanToken& from) { + CopyFrom(from); + return *this; + } + inline ScanToken& operator=(ScanToken&& from) noexcept { + if (GetArena() == from.GetArena()) { + if (this != &from) InternalSwap(&from); + } else { + CopyFrom(from); + } + return *this; + } + + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { + return GetDescriptor(); + } + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { + return GetMetadataStatic().descriptor; + } + static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { + return GetMetadataStatic().reflection; + } + static const ScanToken& default_instance(); + + static inline const ScanToken* internal_default_instance() { + return reinterpret_cast( + &_ScanToken_default_instance_); + } + static constexpr int kIndexInFileMessages = + 232; + + friend void swap(ScanToken& a, ScanToken& b) { + a.Swap(&b); + } + inline void Swap(ScanToken* other) { + if (other == this) return; + if (GetArena() == other->GetArena()) { + InternalSwap(other); + } else { + ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); + } + } + void UnsafeArenaSwap(ScanToken* other) { + if (other == this) return; + GOOGLE_DCHECK(GetArena() == other->GetArena()); + InternalSwap(other); + } + + // implements Message ---------------------------------------------- + + inline ScanToken* New() const final { + return CreateMaybeMessage(nullptr); + } + + ScanToken* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { + return CreateMaybeMessage(arena); + } + void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void CopyFrom(const ScanToken& from); + void MergeFrom(const ScanToken& from); + PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; + bool IsInitialized() const final; + + size_t ByteSizeLong() const final; + const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; + ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( + ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; + int GetCachedSize() const final { return _cached_size_.Get(); } + + private: + inline void SharedCtor(); + inline void SharedDtor(); + void SetCachedSize(int size) const final; + void InternalSwap(ScanToken* other); + friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; + static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { + return "pg_query.ScanToken"; + } + protected: + explicit ScanToken(::PROTOBUF_NAMESPACE_ID::Arena* arena); + private: + static void ArenaDtor(void* object); + inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); + public: + + ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; + private: + static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { + ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); + return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; + } + + public: + + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + + enum : int { + kStartFieldNumber = 1, + kEndFieldNumber = 2, + kTokenFieldNumber = 4, + kKeywordKindFieldNumber = 5, + }; + // int32 start = 1; + void clear_start(); + ::PROTOBUF_NAMESPACE_ID::int32 start() const; + void set_start(::PROTOBUF_NAMESPACE_ID::int32 value); + private: + ::PROTOBUF_NAMESPACE_ID::int32 _internal_start() const; + void _internal_set_start(::PROTOBUF_NAMESPACE_ID::int32 value); + public: + + // int32 end = 2; + void clear_end(); + ::PROTOBUF_NAMESPACE_ID::int32 end() const; + void set_end(::PROTOBUF_NAMESPACE_ID::int32 value); + private: + ::PROTOBUF_NAMESPACE_ID::int32 _internal_end() const; + void _internal_set_end(::PROTOBUF_NAMESPACE_ID::int32 value); + public: + + // .pg_query.Token token = 4; + void clear_token(); + ::pg_query::Token token() const; + void set_token(::pg_query::Token value); + private: + ::pg_query::Token _internal_token() const; + void _internal_set_token(::pg_query::Token value); + public: + + // .pg_query.KeywordKind keyword_kind = 5; + void clear_keyword_kind(); + ::pg_query::KeywordKind keyword_kind() const; + void set_keyword_kind(::pg_query::KeywordKind value); + private: + ::pg_query::KeywordKind _internal_keyword_kind() const; + void _internal_set_keyword_kind(::pg_query::KeywordKind value); + public: + + // @@protoc_insertion_point(class_scope:pg_query.ScanToken) + private: + class _Internal; + + template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; + typedef void InternalArenaConstructable_; + typedef void DestructorSkippable_; + ::PROTOBUF_NAMESPACE_ID::int32 start_; + ::PROTOBUF_NAMESPACE_ID::int32 end_; + int token_; + int keyword_kind_; + mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; + friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; +}; +// =================================================================== + + +// =================================================================== + +#ifdef __GNUC__ + #pragma GCC diagnostic push + #pragma GCC diagnostic ignored "-Wstrict-aliasing" +#endif // __GNUC__ +// ParseResult + +// int32 version = 1; +inline void ParseResult::clear_version() { + version_ = 0; +} +inline ::PROTOBUF_NAMESPACE_ID::int32 ParseResult::_internal_version() const { + return version_; +} +inline ::PROTOBUF_NAMESPACE_ID::int32 ParseResult::version() const { + // @@protoc_insertion_point(field_get:pg_query.ParseResult.version) + return _internal_version(); +} +inline void ParseResult::_internal_set_version(::PROTOBUF_NAMESPACE_ID::int32 value) { + + version_ = value; +} +inline void ParseResult::set_version(::PROTOBUF_NAMESPACE_ID::int32 value) { + _internal_set_version(value); + // @@protoc_insertion_point(field_set:pg_query.ParseResult.version) +} + +// repeated .pg_query.RawStmt stmts = 2; +inline int ParseResult::_internal_stmts_size() const { + return stmts_.size(); +} +inline int ParseResult::stmts_size() const { + return _internal_stmts_size(); +} +inline void ParseResult::clear_stmts() { + stmts_.Clear(); +} +inline ::pg_query::RawStmt* ParseResult::mutable_stmts(int index) { + // @@protoc_insertion_point(field_mutable:pg_query.ParseResult.stmts) + return stmts_.Mutable(index); +} +inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::RawStmt >* +ParseResult::mutable_stmts() { + // @@protoc_insertion_point(field_mutable_list:pg_query.ParseResult.stmts) + return &stmts_; +} +inline const ::pg_query::RawStmt& ParseResult::_internal_stmts(int index) const { + return stmts_.Get(index); +} +inline const ::pg_query::RawStmt& ParseResult::stmts(int index) const { + // @@protoc_insertion_point(field_get:pg_query.ParseResult.stmts) + return _internal_stmts(index); +} +inline ::pg_query::RawStmt* ParseResult::_internal_add_stmts() { + return stmts_.Add(); +} +inline ::pg_query::RawStmt* ParseResult::add_stmts() { + // @@protoc_insertion_point(field_add:pg_query.ParseResult.stmts) + return _internal_add_stmts(); +} +inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::RawStmt >& +ParseResult::stmts() const { + // @@protoc_insertion_point(field_list:pg_query.ParseResult.stmts) + return stmts_; +} + +// ------------------------------------------------------------------- + +// ScanResult + +// int32 version = 1; +inline void ScanResult::clear_version() { + version_ = 0; +} +inline ::PROTOBUF_NAMESPACE_ID::int32 ScanResult::_internal_version() const { + return version_; +} +inline ::PROTOBUF_NAMESPACE_ID::int32 ScanResult::version() const { + // @@protoc_insertion_point(field_get:pg_query.ScanResult.version) + return _internal_version(); +} +inline void ScanResult::_internal_set_version(::PROTOBUF_NAMESPACE_ID::int32 value) { + + version_ = value; +} +inline void ScanResult::set_version(::PROTOBUF_NAMESPACE_ID::int32 value) { + _internal_set_version(value); + // @@protoc_insertion_point(field_set:pg_query.ScanResult.version) +} + +// repeated .pg_query.ScanToken tokens = 2; +inline int ScanResult::_internal_tokens_size() const { + return tokens_.size(); +} +inline int ScanResult::tokens_size() const { + return _internal_tokens_size(); +} +inline void ScanResult::clear_tokens() { + tokens_.Clear(); +} +inline ::pg_query::ScanToken* ScanResult::mutable_tokens(int index) { + // @@protoc_insertion_point(field_mutable:pg_query.ScanResult.tokens) + return tokens_.Mutable(index); +} +inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::ScanToken >* +ScanResult::mutable_tokens() { + // @@protoc_insertion_point(field_mutable_list:pg_query.ScanResult.tokens) + return &tokens_; +} +inline const ::pg_query::ScanToken& ScanResult::_internal_tokens(int index) const { + return tokens_.Get(index); +} +inline const ::pg_query::ScanToken& ScanResult::tokens(int index) const { + // @@protoc_insertion_point(field_get:pg_query.ScanResult.tokens) + return _internal_tokens(index); +} +inline ::pg_query::ScanToken* ScanResult::_internal_add_tokens() { + return tokens_.Add(); +} +inline ::pg_query::ScanToken* ScanResult::add_tokens() { + // @@protoc_insertion_point(field_add:pg_query.ScanResult.tokens) + return _internal_add_tokens(); +} +inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::ScanToken >& +ScanResult::tokens() const { + // @@protoc_insertion_point(field_list:pg_query.ScanResult.tokens) + return tokens_; +} + +// ------------------------------------------------------------------- + +// Node + +// .pg_query.Alias alias = 1 [json_name = "Alias"]; +inline bool Node::_internal_has_alias() const { + return node_case() == kAlias; +} +inline bool Node::has_alias() const { + return _internal_has_alias(); +} +inline void Node::set_has_alias() { + _oneof_case_[0] = kAlias; +} +inline void Node::clear_alias() { + if (_internal_has_alias()) { + if (GetArena() == nullptr) { + delete node_.alias_; + } + clear_has_node(); + } +} +inline ::pg_query::Alias* Node::release_alias() { + // @@protoc_insertion_point(field_release:pg_query.Node.alias) + if (_internal_has_alias()) { + clear_has_node(); + ::pg_query::Alias* temp = node_.alias_; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + node_.alias_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline const ::pg_query::Alias& Node::_internal_alias() const { + return _internal_has_alias() + ? *node_.alias_ + : reinterpret_cast< ::pg_query::Alias&>(::pg_query::_Alias_default_instance_); +} +inline const ::pg_query::Alias& Node::alias() const { + // @@protoc_insertion_point(field_get:pg_query.Node.alias) + return _internal_alias(); +} +inline ::pg_query::Alias* Node::unsafe_arena_release_alias() { + // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.alias) + if (_internal_has_alias()) { + clear_has_node(); + ::pg_query::Alias* temp = node_.alias_; + node_.alias_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline void Node::unsafe_arena_set_allocated_alias(::pg_query::Alias* alias) { + clear_node(); + if (alias) { + set_has_alias(); + node_.alias_ = alias; + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.alias) +} +inline ::pg_query::Alias* Node::_internal_mutable_alias() { + if (!_internal_has_alias()) { + clear_node(); + set_has_alias(); + node_.alias_ = CreateMaybeMessage< ::pg_query::Alias >(GetArena()); + } + return node_.alias_; +} +inline ::pg_query::Alias* Node::mutable_alias() { + // @@protoc_insertion_point(field_mutable:pg_query.Node.alias) + return _internal_mutable_alias(); +} + +// .pg_query.RangeVar range_var = 2 [json_name = "RangeVar"]; +inline bool Node::_internal_has_range_var() const { + return node_case() == kRangeVar; +} +inline bool Node::has_range_var() const { + return _internal_has_range_var(); +} +inline void Node::set_has_range_var() { + _oneof_case_[0] = kRangeVar; +} +inline void Node::clear_range_var() { + if (_internal_has_range_var()) { + if (GetArena() == nullptr) { + delete node_.range_var_; + } + clear_has_node(); + } +} +inline ::pg_query::RangeVar* Node::release_range_var() { + // @@protoc_insertion_point(field_release:pg_query.Node.range_var) + if (_internal_has_range_var()) { + clear_has_node(); + ::pg_query::RangeVar* temp = node_.range_var_; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + node_.range_var_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline const ::pg_query::RangeVar& Node::_internal_range_var() const { + return _internal_has_range_var() + ? *node_.range_var_ + : reinterpret_cast< ::pg_query::RangeVar&>(::pg_query::_RangeVar_default_instance_); +} +inline const ::pg_query::RangeVar& Node::range_var() const { + // @@protoc_insertion_point(field_get:pg_query.Node.range_var) + return _internal_range_var(); +} +inline ::pg_query::RangeVar* Node::unsafe_arena_release_range_var() { + // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.range_var) + if (_internal_has_range_var()) { + clear_has_node(); + ::pg_query::RangeVar* temp = node_.range_var_; + node_.range_var_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline void Node::unsafe_arena_set_allocated_range_var(::pg_query::RangeVar* range_var) { + clear_node(); + if (range_var) { + set_has_range_var(); + node_.range_var_ = range_var; + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.range_var) +} +inline ::pg_query::RangeVar* Node::_internal_mutable_range_var() { + if (!_internal_has_range_var()) { + clear_node(); + set_has_range_var(); + node_.range_var_ = CreateMaybeMessage< ::pg_query::RangeVar >(GetArena()); + } + return node_.range_var_; +} +inline ::pg_query::RangeVar* Node::mutable_range_var() { + // @@protoc_insertion_point(field_mutable:pg_query.Node.range_var) + return _internal_mutable_range_var(); +} + +// .pg_query.TableFunc table_func = 3 [json_name = "TableFunc"]; +inline bool Node::_internal_has_table_func() const { + return node_case() == kTableFunc; +} +inline bool Node::has_table_func() const { + return _internal_has_table_func(); +} +inline void Node::set_has_table_func() { + _oneof_case_[0] = kTableFunc; +} +inline void Node::clear_table_func() { + if (_internal_has_table_func()) { + if (GetArena() == nullptr) { + delete node_.table_func_; + } + clear_has_node(); + } +} +inline ::pg_query::TableFunc* Node::release_table_func() { + // @@protoc_insertion_point(field_release:pg_query.Node.table_func) + if (_internal_has_table_func()) { + clear_has_node(); + ::pg_query::TableFunc* temp = node_.table_func_; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + node_.table_func_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline const ::pg_query::TableFunc& Node::_internal_table_func() const { + return _internal_has_table_func() + ? *node_.table_func_ + : reinterpret_cast< ::pg_query::TableFunc&>(::pg_query::_TableFunc_default_instance_); +} +inline const ::pg_query::TableFunc& Node::table_func() const { + // @@protoc_insertion_point(field_get:pg_query.Node.table_func) + return _internal_table_func(); +} +inline ::pg_query::TableFunc* Node::unsafe_arena_release_table_func() { + // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.table_func) + if (_internal_has_table_func()) { + clear_has_node(); + ::pg_query::TableFunc* temp = node_.table_func_; + node_.table_func_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline void Node::unsafe_arena_set_allocated_table_func(::pg_query::TableFunc* table_func) { + clear_node(); + if (table_func) { + set_has_table_func(); + node_.table_func_ = table_func; + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.table_func) +} +inline ::pg_query::TableFunc* Node::_internal_mutable_table_func() { + if (!_internal_has_table_func()) { + clear_node(); + set_has_table_func(); + node_.table_func_ = CreateMaybeMessage< ::pg_query::TableFunc >(GetArena()); + } + return node_.table_func_; +} +inline ::pg_query::TableFunc* Node::mutable_table_func() { + // @@protoc_insertion_point(field_mutable:pg_query.Node.table_func) + return _internal_mutable_table_func(); +} + +// .pg_query.Expr expr = 4 [json_name = "Expr"]; +inline bool Node::_internal_has_expr() const { + return node_case() == kExpr; +} +inline bool Node::has_expr() const { + return _internal_has_expr(); +} +inline void Node::set_has_expr() { + _oneof_case_[0] = kExpr; +} +inline void Node::clear_expr() { + if (_internal_has_expr()) { + if (GetArena() == nullptr) { + delete node_.expr_; + } + clear_has_node(); + } +} +inline ::pg_query::Expr* Node::release_expr() { + // @@protoc_insertion_point(field_release:pg_query.Node.expr) + if (_internal_has_expr()) { + clear_has_node(); + ::pg_query::Expr* temp = node_.expr_; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + node_.expr_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline const ::pg_query::Expr& Node::_internal_expr() const { + return _internal_has_expr() + ? *node_.expr_ + : reinterpret_cast< ::pg_query::Expr&>(::pg_query::_Expr_default_instance_); +} +inline const ::pg_query::Expr& Node::expr() const { + // @@protoc_insertion_point(field_get:pg_query.Node.expr) + return _internal_expr(); +} +inline ::pg_query::Expr* Node::unsafe_arena_release_expr() { + // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.expr) + if (_internal_has_expr()) { + clear_has_node(); + ::pg_query::Expr* temp = node_.expr_; + node_.expr_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline void Node::unsafe_arena_set_allocated_expr(::pg_query::Expr* expr) { + clear_node(); + if (expr) { + set_has_expr(); + node_.expr_ = expr; + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.expr) +} +inline ::pg_query::Expr* Node::_internal_mutable_expr() { + if (!_internal_has_expr()) { + clear_node(); + set_has_expr(); + node_.expr_ = CreateMaybeMessage< ::pg_query::Expr >(GetArena()); + } + return node_.expr_; +} +inline ::pg_query::Expr* Node::mutable_expr() { + // @@protoc_insertion_point(field_mutable:pg_query.Node.expr) + return _internal_mutable_expr(); +} + +// .pg_query.Var var = 5 [json_name = "Var"]; +inline bool Node::_internal_has_var() const { + return node_case() == kVar; +} +inline bool Node::has_var() const { + return _internal_has_var(); +} +inline void Node::set_has_var() { + _oneof_case_[0] = kVar; +} +inline void Node::clear_var() { + if (_internal_has_var()) { + if (GetArena() == nullptr) { + delete node_.var_; + } + clear_has_node(); + } +} +inline ::pg_query::Var* Node::release_var() { + // @@protoc_insertion_point(field_release:pg_query.Node.var) + if (_internal_has_var()) { + clear_has_node(); + ::pg_query::Var* temp = node_.var_; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + node_.var_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline const ::pg_query::Var& Node::_internal_var() const { + return _internal_has_var() + ? *node_.var_ + : reinterpret_cast< ::pg_query::Var&>(::pg_query::_Var_default_instance_); +} +inline const ::pg_query::Var& Node::var() const { + // @@protoc_insertion_point(field_get:pg_query.Node.var) + return _internal_var(); +} +inline ::pg_query::Var* Node::unsafe_arena_release_var() { + // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.var) + if (_internal_has_var()) { + clear_has_node(); + ::pg_query::Var* temp = node_.var_; + node_.var_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline void Node::unsafe_arena_set_allocated_var(::pg_query::Var* var) { + clear_node(); + if (var) { + set_has_var(); + node_.var_ = var; + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.var) +} +inline ::pg_query::Var* Node::_internal_mutable_var() { + if (!_internal_has_var()) { + clear_node(); + set_has_var(); + node_.var_ = CreateMaybeMessage< ::pg_query::Var >(GetArena()); + } + return node_.var_; +} +inline ::pg_query::Var* Node::mutable_var() { + // @@protoc_insertion_point(field_mutable:pg_query.Node.var) + return _internal_mutable_var(); +} + +// .pg_query.Param param = 6 [json_name = "Param"]; +inline bool Node::_internal_has_param() const { + return node_case() == kParam; +} +inline bool Node::has_param() const { + return _internal_has_param(); +} +inline void Node::set_has_param() { + _oneof_case_[0] = kParam; +} +inline void Node::clear_param() { + if (_internal_has_param()) { + if (GetArena() == nullptr) { + delete node_.param_; + } + clear_has_node(); + } +} +inline ::pg_query::Param* Node::release_param() { + // @@protoc_insertion_point(field_release:pg_query.Node.param) + if (_internal_has_param()) { + clear_has_node(); + ::pg_query::Param* temp = node_.param_; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + node_.param_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline const ::pg_query::Param& Node::_internal_param() const { + return _internal_has_param() + ? *node_.param_ + : reinterpret_cast< ::pg_query::Param&>(::pg_query::_Param_default_instance_); +} +inline const ::pg_query::Param& Node::param() const { + // @@protoc_insertion_point(field_get:pg_query.Node.param) + return _internal_param(); +} +inline ::pg_query::Param* Node::unsafe_arena_release_param() { + // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.param) + if (_internal_has_param()) { + clear_has_node(); + ::pg_query::Param* temp = node_.param_; + node_.param_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline void Node::unsafe_arena_set_allocated_param(::pg_query::Param* param) { + clear_node(); + if (param) { + set_has_param(); + node_.param_ = param; + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.param) +} +inline ::pg_query::Param* Node::_internal_mutable_param() { + if (!_internal_has_param()) { + clear_node(); + set_has_param(); + node_.param_ = CreateMaybeMessage< ::pg_query::Param >(GetArena()); + } + return node_.param_; +} +inline ::pg_query::Param* Node::mutable_param() { + // @@protoc_insertion_point(field_mutable:pg_query.Node.param) + return _internal_mutable_param(); +} + +// .pg_query.Aggref aggref = 7 [json_name = "Aggref"]; +inline bool Node::_internal_has_aggref() const { + return node_case() == kAggref; +} +inline bool Node::has_aggref() const { + return _internal_has_aggref(); +} +inline void Node::set_has_aggref() { + _oneof_case_[0] = kAggref; +} +inline void Node::clear_aggref() { + if (_internal_has_aggref()) { + if (GetArena() == nullptr) { + delete node_.aggref_; + } + clear_has_node(); + } +} +inline ::pg_query::Aggref* Node::release_aggref() { + // @@protoc_insertion_point(field_release:pg_query.Node.aggref) + if (_internal_has_aggref()) { + clear_has_node(); + ::pg_query::Aggref* temp = node_.aggref_; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + node_.aggref_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline const ::pg_query::Aggref& Node::_internal_aggref() const { + return _internal_has_aggref() + ? *node_.aggref_ + : reinterpret_cast< ::pg_query::Aggref&>(::pg_query::_Aggref_default_instance_); +} +inline const ::pg_query::Aggref& Node::aggref() const { + // @@protoc_insertion_point(field_get:pg_query.Node.aggref) + return _internal_aggref(); +} +inline ::pg_query::Aggref* Node::unsafe_arena_release_aggref() { + // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.aggref) + if (_internal_has_aggref()) { + clear_has_node(); + ::pg_query::Aggref* temp = node_.aggref_; + node_.aggref_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline void Node::unsafe_arena_set_allocated_aggref(::pg_query::Aggref* aggref) { + clear_node(); + if (aggref) { + set_has_aggref(); + node_.aggref_ = aggref; + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.aggref) +} +inline ::pg_query::Aggref* Node::_internal_mutable_aggref() { + if (!_internal_has_aggref()) { + clear_node(); + set_has_aggref(); + node_.aggref_ = CreateMaybeMessage< ::pg_query::Aggref >(GetArena()); + } + return node_.aggref_; +} +inline ::pg_query::Aggref* Node::mutable_aggref() { + // @@protoc_insertion_point(field_mutable:pg_query.Node.aggref) + return _internal_mutable_aggref(); +} + +// .pg_query.GroupingFunc grouping_func = 8 [json_name = "GroupingFunc"]; +inline bool Node::_internal_has_grouping_func() const { + return node_case() == kGroupingFunc; +} +inline bool Node::has_grouping_func() const { + return _internal_has_grouping_func(); +} +inline void Node::set_has_grouping_func() { + _oneof_case_[0] = kGroupingFunc; +} +inline void Node::clear_grouping_func() { + if (_internal_has_grouping_func()) { + if (GetArena() == nullptr) { + delete node_.grouping_func_; + } + clear_has_node(); + } +} +inline ::pg_query::GroupingFunc* Node::release_grouping_func() { + // @@protoc_insertion_point(field_release:pg_query.Node.grouping_func) + if (_internal_has_grouping_func()) { + clear_has_node(); + ::pg_query::GroupingFunc* temp = node_.grouping_func_; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + node_.grouping_func_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline const ::pg_query::GroupingFunc& Node::_internal_grouping_func() const { + return _internal_has_grouping_func() + ? *node_.grouping_func_ + : reinterpret_cast< ::pg_query::GroupingFunc&>(::pg_query::_GroupingFunc_default_instance_); +} +inline const ::pg_query::GroupingFunc& Node::grouping_func() const { + // @@protoc_insertion_point(field_get:pg_query.Node.grouping_func) + return _internal_grouping_func(); +} +inline ::pg_query::GroupingFunc* Node::unsafe_arena_release_grouping_func() { + // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.grouping_func) + if (_internal_has_grouping_func()) { + clear_has_node(); + ::pg_query::GroupingFunc* temp = node_.grouping_func_; + node_.grouping_func_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline void Node::unsafe_arena_set_allocated_grouping_func(::pg_query::GroupingFunc* grouping_func) { + clear_node(); + if (grouping_func) { + set_has_grouping_func(); + node_.grouping_func_ = grouping_func; + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.grouping_func) +} +inline ::pg_query::GroupingFunc* Node::_internal_mutable_grouping_func() { + if (!_internal_has_grouping_func()) { + clear_node(); + set_has_grouping_func(); + node_.grouping_func_ = CreateMaybeMessage< ::pg_query::GroupingFunc >(GetArena()); + } + return node_.grouping_func_; +} +inline ::pg_query::GroupingFunc* Node::mutable_grouping_func() { + // @@protoc_insertion_point(field_mutable:pg_query.Node.grouping_func) + return _internal_mutable_grouping_func(); +} + +// .pg_query.WindowFunc window_func = 9 [json_name = "WindowFunc"]; +inline bool Node::_internal_has_window_func() const { + return node_case() == kWindowFunc; +} +inline bool Node::has_window_func() const { + return _internal_has_window_func(); +} +inline void Node::set_has_window_func() { + _oneof_case_[0] = kWindowFunc; +} +inline void Node::clear_window_func() { + if (_internal_has_window_func()) { + if (GetArena() == nullptr) { + delete node_.window_func_; + } + clear_has_node(); + } +} +inline ::pg_query::WindowFunc* Node::release_window_func() { + // @@protoc_insertion_point(field_release:pg_query.Node.window_func) + if (_internal_has_window_func()) { + clear_has_node(); + ::pg_query::WindowFunc* temp = node_.window_func_; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + node_.window_func_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline const ::pg_query::WindowFunc& Node::_internal_window_func() const { + return _internal_has_window_func() + ? *node_.window_func_ + : reinterpret_cast< ::pg_query::WindowFunc&>(::pg_query::_WindowFunc_default_instance_); +} +inline const ::pg_query::WindowFunc& Node::window_func() const { + // @@protoc_insertion_point(field_get:pg_query.Node.window_func) + return _internal_window_func(); +} +inline ::pg_query::WindowFunc* Node::unsafe_arena_release_window_func() { + // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.window_func) + if (_internal_has_window_func()) { + clear_has_node(); + ::pg_query::WindowFunc* temp = node_.window_func_; + node_.window_func_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline void Node::unsafe_arena_set_allocated_window_func(::pg_query::WindowFunc* window_func) { + clear_node(); + if (window_func) { + set_has_window_func(); + node_.window_func_ = window_func; + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.window_func) +} +inline ::pg_query::WindowFunc* Node::_internal_mutable_window_func() { + if (!_internal_has_window_func()) { + clear_node(); + set_has_window_func(); + node_.window_func_ = CreateMaybeMessage< ::pg_query::WindowFunc >(GetArena()); + } + return node_.window_func_; +} +inline ::pg_query::WindowFunc* Node::mutable_window_func() { + // @@protoc_insertion_point(field_mutable:pg_query.Node.window_func) + return _internal_mutable_window_func(); +} + +// .pg_query.SubscriptingRef subscripting_ref = 10 [json_name = "SubscriptingRef"]; +inline bool Node::_internal_has_subscripting_ref() const { + return node_case() == kSubscriptingRef; +} +inline bool Node::has_subscripting_ref() const { + return _internal_has_subscripting_ref(); +} +inline void Node::set_has_subscripting_ref() { + _oneof_case_[0] = kSubscriptingRef; +} +inline void Node::clear_subscripting_ref() { + if (_internal_has_subscripting_ref()) { + if (GetArena() == nullptr) { + delete node_.subscripting_ref_; + } + clear_has_node(); + } +} +inline ::pg_query::SubscriptingRef* Node::release_subscripting_ref() { + // @@protoc_insertion_point(field_release:pg_query.Node.subscripting_ref) + if (_internal_has_subscripting_ref()) { + clear_has_node(); + ::pg_query::SubscriptingRef* temp = node_.subscripting_ref_; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + node_.subscripting_ref_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline const ::pg_query::SubscriptingRef& Node::_internal_subscripting_ref() const { + return _internal_has_subscripting_ref() + ? *node_.subscripting_ref_ + : reinterpret_cast< ::pg_query::SubscriptingRef&>(::pg_query::_SubscriptingRef_default_instance_); +} +inline const ::pg_query::SubscriptingRef& Node::subscripting_ref() const { + // @@protoc_insertion_point(field_get:pg_query.Node.subscripting_ref) + return _internal_subscripting_ref(); +} +inline ::pg_query::SubscriptingRef* Node::unsafe_arena_release_subscripting_ref() { + // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.subscripting_ref) + if (_internal_has_subscripting_ref()) { + clear_has_node(); + ::pg_query::SubscriptingRef* temp = node_.subscripting_ref_; + node_.subscripting_ref_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline void Node::unsafe_arena_set_allocated_subscripting_ref(::pg_query::SubscriptingRef* subscripting_ref) { + clear_node(); + if (subscripting_ref) { + set_has_subscripting_ref(); + node_.subscripting_ref_ = subscripting_ref; + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.subscripting_ref) +} +inline ::pg_query::SubscriptingRef* Node::_internal_mutable_subscripting_ref() { + if (!_internal_has_subscripting_ref()) { + clear_node(); + set_has_subscripting_ref(); + node_.subscripting_ref_ = CreateMaybeMessage< ::pg_query::SubscriptingRef >(GetArena()); + } + return node_.subscripting_ref_; +} +inline ::pg_query::SubscriptingRef* Node::mutable_subscripting_ref() { + // @@protoc_insertion_point(field_mutable:pg_query.Node.subscripting_ref) + return _internal_mutable_subscripting_ref(); +} + +// .pg_query.FuncExpr func_expr = 11 [json_name = "FuncExpr"]; +inline bool Node::_internal_has_func_expr() const { + return node_case() == kFuncExpr; +} +inline bool Node::has_func_expr() const { + return _internal_has_func_expr(); +} +inline void Node::set_has_func_expr() { + _oneof_case_[0] = kFuncExpr; +} +inline void Node::clear_func_expr() { + if (_internal_has_func_expr()) { + if (GetArena() == nullptr) { + delete node_.func_expr_; + } + clear_has_node(); + } +} +inline ::pg_query::FuncExpr* Node::release_func_expr() { + // @@protoc_insertion_point(field_release:pg_query.Node.func_expr) + if (_internal_has_func_expr()) { + clear_has_node(); + ::pg_query::FuncExpr* temp = node_.func_expr_; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + node_.func_expr_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline const ::pg_query::FuncExpr& Node::_internal_func_expr() const { + return _internal_has_func_expr() + ? *node_.func_expr_ + : reinterpret_cast< ::pg_query::FuncExpr&>(::pg_query::_FuncExpr_default_instance_); +} +inline const ::pg_query::FuncExpr& Node::func_expr() const { + // @@protoc_insertion_point(field_get:pg_query.Node.func_expr) + return _internal_func_expr(); +} +inline ::pg_query::FuncExpr* Node::unsafe_arena_release_func_expr() { + // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.func_expr) + if (_internal_has_func_expr()) { + clear_has_node(); + ::pg_query::FuncExpr* temp = node_.func_expr_; + node_.func_expr_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline void Node::unsafe_arena_set_allocated_func_expr(::pg_query::FuncExpr* func_expr) { + clear_node(); + if (func_expr) { + set_has_func_expr(); + node_.func_expr_ = func_expr; + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.func_expr) +} +inline ::pg_query::FuncExpr* Node::_internal_mutable_func_expr() { + if (!_internal_has_func_expr()) { + clear_node(); + set_has_func_expr(); + node_.func_expr_ = CreateMaybeMessage< ::pg_query::FuncExpr >(GetArena()); + } + return node_.func_expr_; +} +inline ::pg_query::FuncExpr* Node::mutable_func_expr() { + // @@protoc_insertion_point(field_mutable:pg_query.Node.func_expr) + return _internal_mutable_func_expr(); +} + +// .pg_query.NamedArgExpr named_arg_expr = 12 [json_name = "NamedArgExpr"]; +inline bool Node::_internal_has_named_arg_expr() const { + return node_case() == kNamedArgExpr; +} +inline bool Node::has_named_arg_expr() const { + return _internal_has_named_arg_expr(); +} +inline void Node::set_has_named_arg_expr() { + _oneof_case_[0] = kNamedArgExpr; +} +inline void Node::clear_named_arg_expr() { + if (_internal_has_named_arg_expr()) { + if (GetArena() == nullptr) { + delete node_.named_arg_expr_; + } + clear_has_node(); + } +} +inline ::pg_query::NamedArgExpr* Node::release_named_arg_expr() { + // @@protoc_insertion_point(field_release:pg_query.Node.named_arg_expr) + if (_internal_has_named_arg_expr()) { + clear_has_node(); + ::pg_query::NamedArgExpr* temp = node_.named_arg_expr_; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + node_.named_arg_expr_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline const ::pg_query::NamedArgExpr& Node::_internal_named_arg_expr() const { + return _internal_has_named_arg_expr() + ? *node_.named_arg_expr_ + : reinterpret_cast< ::pg_query::NamedArgExpr&>(::pg_query::_NamedArgExpr_default_instance_); +} +inline const ::pg_query::NamedArgExpr& Node::named_arg_expr() const { + // @@protoc_insertion_point(field_get:pg_query.Node.named_arg_expr) + return _internal_named_arg_expr(); +} +inline ::pg_query::NamedArgExpr* Node::unsafe_arena_release_named_arg_expr() { + // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.named_arg_expr) + if (_internal_has_named_arg_expr()) { + clear_has_node(); + ::pg_query::NamedArgExpr* temp = node_.named_arg_expr_; + node_.named_arg_expr_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline void Node::unsafe_arena_set_allocated_named_arg_expr(::pg_query::NamedArgExpr* named_arg_expr) { + clear_node(); + if (named_arg_expr) { + set_has_named_arg_expr(); + node_.named_arg_expr_ = named_arg_expr; + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.named_arg_expr) +} +inline ::pg_query::NamedArgExpr* Node::_internal_mutable_named_arg_expr() { + if (!_internal_has_named_arg_expr()) { + clear_node(); + set_has_named_arg_expr(); + node_.named_arg_expr_ = CreateMaybeMessage< ::pg_query::NamedArgExpr >(GetArena()); + } + return node_.named_arg_expr_; +} +inline ::pg_query::NamedArgExpr* Node::mutable_named_arg_expr() { + // @@protoc_insertion_point(field_mutable:pg_query.Node.named_arg_expr) + return _internal_mutable_named_arg_expr(); +} + +// .pg_query.OpExpr op_expr = 13 [json_name = "OpExpr"]; +inline bool Node::_internal_has_op_expr() const { + return node_case() == kOpExpr; +} +inline bool Node::has_op_expr() const { + return _internal_has_op_expr(); +} +inline void Node::set_has_op_expr() { + _oneof_case_[0] = kOpExpr; +} +inline void Node::clear_op_expr() { + if (_internal_has_op_expr()) { + if (GetArena() == nullptr) { + delete node_.op_expr_; + } + clear_has_node(); + } +} +inline ::pg_query::OpExpr* Node::release_op_expr() { + // @@protoc_insertion_point(field_release:pg_query.Node.op_expr) + if (_internal_has_op_expr()) { + clear_has_node(); + ::pg_query::OpExpr* temp = node_.op_expr_; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + node_.op_expr_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline const ::pg_query::OpExpr& Node::_internal_op_expr() const { + return _internal_has_op_expr() + ? *node_.op_expr_ + : reinterpret_cast< ::pg_query::OpExpr&>(::pg_query::_OpExpr_default_instance_); +} +inline const ::pg_query::OpExpr& Node::op_expr() const { + // @@protoc_insertion_point(field_get:pg_query.Node.op_expr) + return _internal_op_expr(); +} +inline ::pg_query::OpExpr* Node::unsafe_arena_release_op_expr() { + // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.op_expr) + if (_internal_has_op_expr()) { + clear_has_node(); + ::pg_query::OpExpr* temp = node_.op_expr_; + node_.op_expr_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline void Node::unsafe_arena_set_allocated_op_expr(::pg_query::OpExpr* op_expr) { + clear_node(); + if (op_expr) { + set_has_op_expr(); + node_.op_expr_ = op_expr; + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.op_expr) +} +inline ::pg_query::OpExpr* Node::_internal_mutable_op_expr() { + if (!_internal_has_op_expr()) { + clear_node(); + set_has_op_expr(); + node_.op_expr_ = CreateMaybeMessage< ::pg_query::OpExpr >(GetArena()); + } + return node_.op_expr_; +} +inline ::pg_query::OpExpr* Node::mutable_op_expr() { + // @@protoc_insertion_point(field_mutable:pg_query.Node.op_expr) + return _internal_mutable_op_expr(); +} + +// .pg_query.DistinctExpr distinct_expr = 14 [json_name = "DistinctExpr"]; +inline bool Node::_internal_has_distinct_expr() const { + return node_case() == kDistinctExpr; +} +inline bool Node::has_distinct_expr() const { + return _internal_has_distinct_expr(); +} +inline void Node::set_has_distinct_expr() { + _oneof_case_[0] = kDistinctExpr; +} +inline void Node::clear_distinct_expr() { + if (_internal_has_distinct_expr()) { + if (GetArena() == nullptr) { + delete node_.distinct_expr_; + } + clear_has_node(); + } +} +inline ::pg_query::DistinctExpr* Node::release_distinct_expr() { + // @@protoc_insertion_point(field_release:pg_query.Node.distinct_expr) + if (_internal_has_distinct_expr()) { + clear_has_node(); + ::pg_query::DistinctExpr* temp = node_.distinct_expr_; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + node_.distinct_expr_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline const ::pg_query::DistinctExpr& Node::_internal_distinct_expr() const { + return _internal_has_distinct_expr() + ? *node_.distinct_expr_ + : reinterpret_cast< ::pg_query::DistinctExpr&>(::pg_query::_DistinctExpr_default_instance_); +} +inline const ::pg_query::DistinctExpr& Node::distinct_expr() const { + // @@protoc_insertion_point(field_get:pg_query.Node.distinct_expr) + return _internal_distinct_expr(); +} +inline ::pg_query::DistinctExpr* Node::unsafe_arena_release_distinct_expr() { + // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.distinct_expr) + if (_internal_has_distinct_expr()) { + clear_has_node(); + ::pg_query::DistinctExpr* temp = node_.distinct_expr_; + node_.distinct_expr_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline void Node::unsafe_arena_set_allocated_distinct_expr(::pg_query::DistinctExpr* distinct_expr) { + clear_node(); + if (distinct_expr) { + set_has_distinct_expr(); + node_.distinct_expr_ = distinct_expr; + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.distinct_expr) +} +inline ::pg_query::DistinctExpr* Node::_internal_mutable_distinct_expr() { + if (!_internal_has_distinct_expr()) { + clear_node(); + set_has_distinct_expr(); + node_.distinct_expr_ = CreateMaybeMessage< ::pg_query::DistinctExpr >(GetArena()); + } + return node_.distinct_expr_; +} +inline ::pg_query::DistinctExpr* Node::mutable_distinct_expr() { + // @@protoc_insertion_point(field_mutable:pg_query.Node.distinct_expr) + return _internal_mutable_distinct_expr(); +} + +// .pg_query.NullIfExpr null_if_expr = 15 [json_name = "NullIfExpr"]; +inline bool Node::_internal_has_null_if_expr() const { + return node_case() == kNullIfExpr; +} +inline bool Node::has_null_if_expr() const { + return _internal_has_null_if_expr(); +} +inline void Node::set_has_null_if_expr() { + _oneof_case_[0] = kNullIfExpr; +} +inline void Node::clear_null_if_expr() { + if (_internal_has_null_if_expr()) { + if (GetArena() == nullptr) { + delete node_.null_if_expr_; + } + clear_has_node(); + } +} +inline ::pg_query::NullIfExpr* Node::release_null_if_expr() { + // @@protoc_insertion_point(field_release:pg_query.Node.null_if_expr) + if (_internal_has_null_if_expr()) { + clear_has_node(); + ::pg_query::NullIfExpr* temp = node_.null_if_expr_; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + node_.null_if_expr_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline const ::pg_query::NullIfExpr& Node::_internal_null_if_expr() const { + return _internal_has_null_if_expr() + ? *node_.null_if_expr_ + : reinterpret_cast< ::pg_query::NullIfExpr&>(::pg_query::_NullIfExpr_default_instance_); +} +inline const ::pg_query::NullIfExpr& Node::null_if_expr() const { + // @@protoc_insertion_point(field_get:pg_query.Node.null_if_expr) + return _internal_null_if_expr(); +} +inline ::pg_query::NullIfExpr* Node::unsafe_arena_release_null_if_expr() { + // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.null_if_expr) + if (_internal_has_null_if_expr()) { + clear_has_node(); + ::pg_query::NullIfExpr* temp = node_.null_if_expr_; + node_.null_if_expr_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline void Node::unsafe_arena_set_allocated_null_if_expr(::pg_query::NullIfExpr* null_if_expr) { + clear_node(); + if (null_if_expr) { + set_has_null_if_expr(); + node_.null_if_expr_ = null_if_expr; + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.null_if_expr) +} +inline ::pg_query::NullIfExpr* Node::_internal_mutable_null_if_expr() { + if (!_internal_has_null_if_expr()) { + clear_node(); + set_has_null_if_expr(); + node_.null_if_expr_ = CreateMaybeMessage< ::pg_query::NullIfExpr >(GetArena()); + } + return node_.null_if_expr_; +} +inline ::pg_query::NullIfExpr* Node::mutable_null_if_expr() { + // @@protoc_insertion_point(field_mutable:pg_query.Node.null_if_expr) + return _internal_mutable_null_if_expr(); +} + +// .pg_query.ScalarArrayOpExpr scalar_array_op_expr = 16 [json_name = "ScalarArrayOpExpr"]; +inline bool Node::_internal_has_scalar_array_op_expr() const { + return node_case() == kScalarArrayOpExpr; +} +inline bool Node::has_scalar_array_op_expr() const { + return _internal_has_scalar_array_op_expr(); +} +inline void Node::set_has_scalar_array_op_expr() { + _oneof_case_[0] = kScalarArrayOpExpr; +} +inline void Node::clear_scalar_array_op_expr() { + if (_internal_has_scalar_array_op_expr()) { + if (GetArena() == nullptr) { + delete node_.scalar_array_op_expr_; + } + clear_has_node(); + } +} +inline ::pg_query::ScalarArrayOpExpr* Node::release_scalar_array_op_expr() { + // @@protoc_insertion_point(field_release:pg_query.Node.scalar_array_op_expr) + if (_internal_has_scalar_array_op_expr()) { + clear_has_node(); + ::pg_query::ScalarArrayOpExpr* temp = node_.scalar_array_op_expr_; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + node_.scalar_array_op_expr_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline const ::pg_query::ScalarArrayOpExpr& Node::_internal_scalar_array_op_expr() const { + return _internal_has_scalar_array_op_expr() + ? *node_.scalar_array_op_expr_ + : reinterpret_cast< ::pg_query::ScalarArrayOpExpr&>(::pg_query::_ScalarArrayOpExpr_default_instance_); +} +inline const ::pg_query::ScalarArrayOpExpr& Node::scalar_array_op_expr() const { + // @@protoc_insertion_point(field_get:pg_query.Node.scalar_array_op_expr) + return _internal_scalar_array_op_expr(); +} +inline ::pg_query::ScalarArrayOpExpr* Node::unsafe_arena_release_scalar_array_op_expr() { + // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.scalar_array_op_expr) + if (_internal_has_scalar_array_op_expr()) { + clear_has_node(); + ::pg_query::ScalarArrayOpExpr* temp = node_.scalar_array_op_expr_; + node_.scalar_array_op_expr_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline void Node::unsafe_arena_set_allocated_scalar_array_op_expr(::pg_query::ScalarArrayOpExpr* scalar_array_op_expr) { + clear_node(); + if (scalar_array_op_expr) { + set_has_scalar_array_op_expr(); + node_.scalar_array_op_expr_ = scalar_array_op_expr; + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.scalar_array_op_expr) +} +inline ::pg_query::ScalarArrayOpExpr* Node::_internal_mutable_scalar_array_op_expr() { + if (!_internal_has_scalar_array_op_expr()) { + clear_node(); + set_has_scalar_array_op_expr(); + node_.scalar_array_op_expr_ = CreateMaybeMessage< ::pg_query::ScalarArrayOpExpr >(GetArena()); + } + return node_.scalar_array_op_expr_; +} +inline ::pg_query::ScalarArrayOpExpr* Node::mutable_scalar_array_op_expr() { + // @@protoc_insertion_point(field_mutable:pg_query.Node.scalar_array_op_expr) + return _internal_mutable_scalar_array_op_expr(); +} + +// .pg_query.BoolExpr bool_expr = 17 [json_name = "BoolExpr"]; +inline bool Node::_internal_has_bool_expr() const { + return node_case() == kBoolExpr; +} +inline bool Node::has_bool_expr() const { + return _internal_has_bool_expr(); +} +inline void Node::set_has_bool_expr() { + _oneof_case_[0] = kBoolExpr; +} +inline void Node::clear_bool_expr() { + if (_internal_has_bool_expr()) { + if (GetArena() == nullptr) { + delete node_.bool_expr_; + } + clear_has_node(); + } +} +inline ::pg_query::BoolExpr* Node::release_bool_expr() { + // @@protoc_insertion_point(field_release:pg_query.Node.bool_expr) + if (_internal_has_bool_expr()) { + clear_has_node(); + ::pg_query::BoolExpr* temp = node_.bool_expr_; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + node_.bool_expr_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline const ::pg_query::BoolExpr& Node::_internal_bool_expr() const { + return _internal_has_bool_expr() + ? *node_.bool_expr_ + : reinterpret_cast< ::pg_query::BoolExpr&>(::pg_query::_BoolExpr_default_instance_); +} +inline const ::pg_query::BoolExpr& Node::bool_expr() const { + // @@protoc_insertion_point(field_get:pg_query.Node.bool_expr) + return _internal_bool_expr(); +} +inline ::pg_query::BoolExpr* Node::unsafe_arena_release_bool_expr() { + // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.bool_expr) + if (_internal_has_bool_expr()) { + clear_has_node(); + ::pg_query::BoolExpr* temp = node_.bool_expr_; + node_.bool_expr_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline void Node::unsafe_arena_set_allocated_bool_expr(::pg_query::BoolExpr* bool_expr) { + clear_node(); + if (bool_expr) { + set_has_bool_expr(); + node_.bool_expr_ = bool_expr; + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.bool_expr) +} +inline ::pg_query::BoolExpr* Node::_internal_mutable_bool_expr() { + if (!_internal_has_bool_expr()) { + clear_node(); + set_has_bool_expr(); + node_.bool_expr_ = CreateMaybeMessage< ::pg_query::BoolExpr >(GetArena()); + } + return node_.bool_expr_; +} +inline ::pg_query::BoolExpr* Node::mutable_bool_expr() { + // @@protoc_insertion_point(field_mutable:pg_query.Node.bool_expr) + return _internal_mutable_bool_expr(); +} + +// .pg_query.SubLink sub_link = 18 [json_name = "SubLink"]; +inline bool Node::_internal_has_sub_link() const { + return node_case() == kSubLink; +} +inline bool Node::has_sub_link() const { + return _internal_has_sub_link(); +} +inline void Node::set_has_sub_link() { + _oneof_case_[0] = kSubLink; +} +inline void Node::clear_sub_link() { + if (_internal_has_sub_link()) { + if (GetArena() == nullptr) { + delete node_.sub_link_; + } + clear_has_node(); + } +} +inline ::pg_query::SubLink* Node::release_sub_link() { + // @@protoc_insertion_point(field_release:pg_query.Node.sub_link) + if (_internal_has_sub_link()) { + clear_has_node(); + ::pg_query::SubLink* temp = node_.sub_link_; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + node_.sub_link_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline const ::pg_query::SubLink& Node::_internal_sub_link() const { + return _internal_has_sub_link() + ? *node_.sub_link_ + : reinterpret_cast< ::pg_query::SubLink&>(::pg_query::_SubLink_default_instance_); +} +inline const ::pg_query::SubLink& Node::sub_link() const { + // @@protoc_insertion_point(field_get:pg_query.Node.sub_link) + return _internal_sub_link(); +} +inline ::pg_query::SubLink* Node::unsafe_arena_release_sub_link() { + // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.sub_link) + if (_internal_has_sub_link()) { + clear_has_node(); + ::pg_query::SubLink* temp = node_.sub_link_; + node_.sub_link_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline void Node::unsafe_arena_set_allocated_sub_link(::pg_query::SubLink* sub_link) { + clear_node(); + if (sub_link) { + set_has_sub_link(); + node_.sub_link_ = sub_link; + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.sub_link) +} +inline ::pg_query::SubLink* Node::_internal_mutable_sub_link() { + if (!_internal_has_sub_link()) { + clear_node(); + set_has_sub_link(); + node_.sub_link_ = CreateMaybeMessage< ::pg_query::SubLink >(GetArena()); + } + return node_.sub_link_; +} +inline ::pg_query::SubLink* Node::mutable_sub_link() { + // @@protoc_insertion_point(field_mutable:pg_query.Node.sub_link) + return _internal_mutable_sub_link(); +} + +// .pg_query.SubPlan sub_plan = 19 [json_name = "SubPlan"]; +inline bool Node::_internal_has_sub_plan() const { + return node_case() == kSubPlan; +} +inline bool Node::has_sub_plan() const { + return _internal_has_sub_plan(); +} +inline void Node::set_has_sub_plan() { + _oneof_case_[0] = kSubPlan; +} +inline void Node::clear_sub_plan() { + if (_internal_has_sub_plan()) { + if (GetArena() == nullptr) { + delete node_.sub_plan_; + } + clear_has_node(); + } +} +inline ::pg_query::SubPlan* Node::release_sub_plan() { + // @@protoc_insertion_point(field_release:pg_query.Node.sub_plan) + if (_internal_has_sub_plan()) { + clear_has_node(); + ::pg_query::SubPlan* temp = node_.sub_plan_; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + node_.sub_plan_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline const ::pg_query::SubPlan& Node::_internal_sub_plan() const { + return _internal_has_sub_plan() + ? *node_.sub_plan_ + : reinterpret_cast< ::pg_query::SubPlan&>(::pg_query::_SubPlan_default_instance_); +} +inline const ::pg_query::SubPlan& Node::sub_plan() const { + // @@protoc_insertion_point(field_get:pg_query.Node.sub_plan) + return _internal_sub_plan(); +} +inline ::pg_query::SubPlan* Node::unsafe_arena_release_sub_plan() { + // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.sub_plan) + if (_internal_has_sub_plan()) { + clear_has_node(); + ::pg_query::SubPlan* temp = node_.sub_plan_; + node_.sub_plan_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline void Node::unsafe_arena_set_allocated_sub_plan(::pg_query::SubPlan* sub_plan) { + clear_node(); + if (sub_plan) { + set_has_sub_plan(); + node_.sub_plan_ = sub_plan; + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.sub_plan) +} +inline ::pg_query::SubPlan* Node::_internal_mutable_sub_plan() { + if (!_internal_has_sub_plan()) { + clear_node(); + set_has_sub_plan(); + node_.sub_plan_ = CreateMaybeMessage< ::pg_query::SubPlan >(GetArena()); + } + return node_.sub_plan_; +} +inline ::pg_query::SubPlan* Node::mutable_sub_plan() { + // @@protoc_insertion_point(field_mutable:pg_query.Node.sub_plan) + return _internal_mutable_sub_plan(); +} + +// .pg_query.AlternativeSubPlan alternative_sub_plan = 20 [json_name = "AlternativeSubPlan"]; +inline bool Node::_internal_has_alternative_sub_plan() const { + return node_case() == kAlternativeSubPlan; +} +inline bool Node::has_alternative_sub_plan() const { + return _internal_has_alternative_sub_plan(); +} +inline void Node::set_has_alternative_sub_plan() { + _oneof_case_[0] = kAlternativeSubPlan; +} +inline void Node::clear_alternative_sub_plan() { + if (_internal_has_alternative_sub_plan()) { + if (GetArena() == nullptr) { + delete node_.alternative_sub_plan_; + } + clear_has_node(); + } +} +inline ::pg_query::AlternativeSubPlan* Node::release_alternative_sub_plan() { + // @@protoc_insertion_point(field_release:pg_query.Node.alternative_sub_plan) + if (_internal_has_alternative_sub_plan()) { + clear_has_node(); + ::pg_query::AlternativeSubPlan* temp = node_.alternative_sub_plan_; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + node_.alternative_sub_plan_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline const ::pg_query::AlternativeSubPlan& Node::_internal_alternative_sub_plan() const { + return _internal_has_alternative_sub_plan() + ? *node_.alternative_sub_plan_ + : reinterpret_cast< ::pg_query::AlternativeSubPlan&>(::pg_query::_AlternativeSubPlan_default_instance_); +} +inline const ::pg_query::AlternativeSubPlan& Node::alternative_sub_plan() const { + // @@protoc_insertion_point(field_get:pg_query.Node.alternative_sub_plan) + return _internal_alternative_sub_plan(); +} +inline ::pg_query::AlternativeSubPlan* Node::unsafe_arena_release_alternative_sub_plan() { + // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.alternative_sub_plan) + if (_internal_has_alternative_sub_plan()) { + clear_has_node(); + ::pg_query::AlternativeSubPlan* temp = node_.alternative_sub_plan_; + node_.alternative_sub_plan_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline void Node::unsafe_arena_set_allocated_alternative_sub_plan(::pg_query::AlternativeSubPlan* alternative_sub_plan) { + clear_node(); + if (alternative_sub_plan) { + set_has_alternative_sub_plan(); + node_.alternative_sub_plan_ = alternative_sub_plan; + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.alternative_sub_plan) +} +inline ::pg_query::AlternativeSubPlan* Node::_internal_mutable_alternative_sub_plan() { + if (!_internal_has_alternative_sub_plan()) { + clear_node(); + set_has_alternative_sub_plan(); + node_.alternative_sub_plan_ = CreateMaybeMessage< ::pg_query::AlternativeSubPlan >(GetArena()); + } + return node_.alternative_sub_plan_; +} +inline ::pg_query::AlternativeSubPlan* Node::mutable_alternative_sub_plan() { + // @@protoc_insertion_point(field_mutable:pg_query.Node.alternative_sub_plan) + return _internal_mutable_alternative_sub_plan(); +} + +// .pg_query.FieldSelect field_select = 21 [json_name = "FieldSelect"]; +inline bool Node::_internal_has_field_select() const { + return node_case() == kFieldSelect; +} +inline bool Node::has_field_select() const { + return _internal_has_field_select(); +} +inline void Node::set_has_field_select() { + _oneof_case_[0] = kFieldSelect; +} +inline void Node::clear_field_select() { + if (_internal_has_field_select()) { + if (GetArena() == nullptr) { + delete node_.field_select_; + } + clear_has_node(); + } +} +inline ::pg_query::FieldSelect* Node::release_field_select() { + // @@protoc_insertion_point(field_release:pg_query.Node.field_select) + if (_internal_has_field_select()) { + clear_has_node(); + ::pg_query::FieldSelect* temp = node_.field_select_; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + node_.field_select_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline const ::pg_query::FieldSelect& Node::_internal_field_select() const { + return _internal_has_field_select() + ? *node_.field_select_ + : reinterpret_cast< ::pg_query::FieldSelect&>(::pg_query::_FieldSelect_default_instance_); +} +inline const ::pg_query::FieldSelect& Node::field_select() const { + // @@protoc_insertion_point(field_get:pg_query.Node.field_select) + return _internal_field_select(); +} +inline ::pg_query::FieldSelect* Node::unsafe_arena_release_field_select() { + // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.field_select) + if (_internal_has_field_select()) { + clear_has_node(); + ::pg_query::FieldSelect* temp = node_.field_select_; + node_.field_select_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline void Node::unsafe_arena_set_allocated_field_select(::pg_query::FieldSelect* field_select) { + clear_node(); + if (field_select) { + set_has_field_select(); + node_.field_select_ = field_select; + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.field_select) +} +inline ::pg_query::FieldSelect* Node::_internal_mutable_field_select() { + if (!_internal_has_field_select()) { + clear_node(); + set_has_field_select(); + node_.field_select_ = CreateMaybeMessage< ::pg_query::FieldSelect >(GetArena()); + } + return node_.field_select_; +} +inline ::pg_query::FieldSelect* Node::mutable_field_select() { + // @@protoc_insertion_point(field_mutable:pg_query.Node.field_select) + return _internal_mutable_field_select(); +} + +// .pg_query.FieldStore field_store = 22 [json_name = "FieldStore"]; +inline bool Node::_internal_has_field_store() const { + return node_case() == kFieldStore; +} +inline bool Node::has_field_store() const { + return _internal_has_field_store(); +} +inline void Node::set_has_field_store() { + _oneof_case_[0] = kFieldStore; +} +inline void Node::clear_field_store() { + if (_internal_has_field_store()) { + if (GetArena() == nullptr) { + delete node_.field_store_; + } + clear_has_node(); + } +} +inline ::pg_query::FieldStore* Node::release_field_store() { + // @@protoc_insertion_point(field_release:pg_query.Node.field_store) + if (_internal_has_field_store()) { + clear_has_node(); + ::pg_query::FieldStore* temp = node_.field_store_; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + node_.field_store_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline const ::pg_query::FieldStore& Node::_internal_field_store() const { + return _internal_has_field_store() + ? *node_.field_store_ + : reinterpret_cast< ::pg_query::FieldStore&>(::pg_query::_FieldStore_default_instance_); +} +inline const ::pg_query::FieldStore& Node::field_store() const { + // @@protoc_insertion_point(field_get:pg_query.Node.field_store) + return _internal_field_store(); +} +inline ::pg_query::FieldStore* Node::unsafe_arena_release_field_store() { + // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.field_store) + if (_internal_has_field_store()) { + clear_has_node(); + ::pg_query::FieldStore* temp = node_.field_store_; + node_.field_store_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline void Node::unsafe_arena_set_allocated_field_store(::pg_query::FieldStore* field_store) { + clear_node(); + if (field_store) { + set_has_field_store(); + node_.field_store_ = field_store; + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.field_store) +} +inline ::pg_query::FieldStore* Node::_internal_mutable_field_store() { + if (!_internal_has_field_store()) { + clear_node(); + set_has_field_store(); + node_.field_store_ = CreateMaybeMessage< ::pg_query::FieldStore >(GetArena()); + } + return node_.field_store_; +} +inline ::pg_query::FieldStore* Node::mutable_field_store() { + // @@protoc_insertion_point(field_mutable:pg_query.Node.field_store) + return _internal_mutable_field_store(); +} + +// .pg_query.RelabelType relabel_type = 23 [json_name = "RelabelType"]; +inline bool Node::_internal_has_relabel_type() const { + return node_case() == kRelabelType; +} +inline bool Node::has_relabel_type() const { + return _internal_has_relabel_type(); +} +inline void Node::set_has_relabel_type() { + _oneof_case_[0] = kRelabelType; +} +inline void Node::clear_relabel_type() { + if (_internal_has_relabel_type()) { + if (GetArena() == nullptr) { + delete node_.relabel_type_; + } + clear_has_node(); + } +} +inline ::pg_query::RelabelType* Node::release_relabel_type() { + // @@protoc_insertion_point(field_release:pg_query.Node.relabel_type) + if (_internal_has_relabel_type()) { + clear_has_node(); + ::pg_query::RelabelType* temp = node_.relabel_type_; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + node_.relabel_type_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline const ::pg_query::RelabelType& Node::_internal_relabel_type() const { + return _internal_has_relabel_type() + ? *node_.relabel_type_ + : reinterpret_cast< ::pg_query::RelabelType&>(::pg_query::_RelabelType_default_instance_); +} +inline const ::pg_query::RelabelType& Node::relabel_type() const { + // @@protoc_insertion_point(field_get:pg_query.Node.relabel_type) + return _internal_relabel_type(); +} +inline ::pg_query::RelabelType* Node::unsafe_arena_release_relabel_type() { + // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.relabel_type) + if (_internal_has_relabel_type()) { + clear_has_node(); + ::pg_query::RelabelType* temp = node_.relabel_type_; + node_.relabel_type_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline void Node::unsafe_arena_set_allocated_relabel_type(::pg_query::RelabelType* relabel_type) { + clear_node(); + if (relabel_type) { + set_has_relabel_type(); + node_.relabel_type_ = relabel_type; + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.relabel_type) +} +inline ::pg_query::RelabelType* Node::_internal_mutable_relabel_type() { + if (!_internal_has_relabel_type()) { + clear_node(); + set_has_relabel_type(); + node_.relabel_type_ = CreateMaybeMessage< ::pg_query::RelabelType >(GetArena()); + } + return node_.relabel_type_; +} +inline ::pg_query::RelabelType* Node::mutable_relabel_type() { + // @@protoc_insertion_point(field_mutable:pg_query.Node.relabel_type) + return _internal_mutable_relabel_type(); +} + +// .pg_query.CoerceViaIO coerce_via_io = 24 [json_name = "CoerceViaIO"]; +inline bool Node::_internal_has_coerce_via_io() const { + return node_case() == kCoerceViaIo; +} +inline bool Node::has_coerce_via_io() const { + return _internal_has_coerce_via_io(); +} +inline void Node::set_has_coerce_via_io() { + _oneof_case_[0] = kCoerceViaIo; +} +inline void Node::clear_coerce_via_io() { + if (_internal_has_coerce_via_io()) { + if (GetArena() == nullptr) { + delete node_.coerce_via_io_; + } + clear_has_node(); + } +} +inline ::pg_query::CoerceViaIO* Node::release_coerce_via_io() { + // @@protoc_insertion_point(field_release:pg_query.Node.coerce_via_io) + if (_internal_has_coerce_via_io()) { + clear_has_node(); + ::pg_query::CoerceViaIO* temp = node_.coerce_via_io_; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + node_.coerce_via_io_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline const ::pg_query::CoerceViaIO& Node::_internal_coerce_via_io() const { + return _internal_has_coerce_via_io() + ? *node_.coerce_via_io_ + : reinterpret_cast< ::pg_query::CoerceViaIO&>(::pg_query::_CoerceViaIO_default_instance_); +} +inline const ::pg_query::CoerceViaIO& Node::coerce_via_io() const { + // @@protoc_insertion_point(field_get:pg_query.Node.coerce_via_io) + return _internal_coerce_via_io(); +} +inline ::pg_query::CoerceViaIO* Node::unsafe_arena_release_coerce_via_io() { + // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.coerce_via_io) + if (_internal_has_coerce_via_io()) { + clear_has_node(); + ::pg_query::CoerceViaIO* temp = node_.coerce_via_io_; + node_.coerce_via_io_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline void Node::unsafe_arena_set_allocated_coerce_via_io(::pg_query::CoerceViaIO* coerce_via_io) { + clear_node(); + if (coerce_via_io) { + set_has_coerce_via_io(); + node_.coerce_via_io_ = coerce_via_io; + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.coerce_via_io) +} +inline ::pg_query::CoerceViaIO* Node::_internal_mutable_coerce_via_io() { + if (!_internal_has_coerce_via_io()) { + clear_node(); + set_has_coerce_via_io(); + node_.coerce_via_io_ = CreateMaybeMessage< ::pg_query::CoerceViaIO >(GetArena()); + } + return node_.coerce_via_io_; +} +inline ::pg_query::CoerceViaIO* Node::mutable_coerce_via_io() { + // @@protoc_insertion_point(field_mutable:pg_query.Node.coerce_via_io) + return _internal_mutable_coerce_via_io(); +} + +// .pg_query.ArrayCoerceExpr array_coerce_expr = 25 [json_name = "ArrayCoerceExpr"]; +inline bool Node::_internal_has_array_coerce_expr() const { + return node_case() == kArrayCoerceExpr; +} +inline bool Node::has_array_coerce_expr() const { + return _internal_has_array_coerce_expr(); +} +inline void Node::set_has_array_coerce_expr() { + _oneof_case_[0] = kArrayCoerceExpr; +} +inline void Node::clear_array_coerce_expr() { + if (_internal_has_array_coerce_expr()) { + if (GetArena() == nullptr) { + delete node_.array_coerce_expr_; + } + clear_has_node(); + } +} +inline ::pg_query::ArrayCoerceExpr* Node::release_array_coerce_expr() { + // @@protoc_insertion_point(field_release:pg_query.Node.array_coerce_expr) + if (_internal_has_array_coerce_expr()) { + clear_has_node(); + ::pg_query::ArrayCoerceExpr* temp = node_.array_coerce_expr_; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + node_.array_coerce_expr_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline const ::pg_query::ArrayCoerceExpr& Node::_internal_array_coerce_expr() const { + return _internal_has_array_coerce_expr() + ? *node_.array_coerce_expr_ + : reinterpret_cast< ::pg_query::ArrayCoerceExpr&>(::pg_query::_ArrayCoerceExpr_default_instance_); +} +inline const ::pg_query::ArrayCoerceExpr& Node::array_coerce_expr() const { + // @@protoc_insertion_point(field_get:pg_query.Node.array_coerce_expr) + return _internal_array_coerce_expr(); +} +inline ::pg_query::ArrayCoerceExpr* Node::unsafe_arena_release_array_coerce_expr() { + // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.array_coerce_expr) + if (_internal_has_array_coerce_expr()) { + clear_has_node(); + ::pg_query::ArrayCoerceExpr* temp = node_.array_coerce_expr_; + node_.array_coerce_expr_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline void Node::unsafe_arena_set_allocated_array_coerce_expr(::pg_query::ArrayCoerceExpr* array_coerce_expr) { + clear_node(); + if (array_coerce_expr) { + set_has_array_coerce_expr(); + node_.array_coerce_expr_ = array_coerce_expr; + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.array_coerce_expr) +} +inline ::pg_query::ArrayCoerceExpr* Node::_internal_mutable_array_coerce_expr() { + if (!_internal_has_array_coerce_expr()) { + clear_node(); + set_has_array_coerce_expr(); + node_.array_coerce_expr_ = CreateMaybeMessage< ::pg_query::ArrayCoerceExpr >(GetArena()); + } + return node_.array_coerce_expr_; +} +inline ::pg_query::ArrayCoerceExpr* Node::mutable_array_coerce_expr() { + // @@protoc_insertion_point(field_mutable:pg_query.Node.array_coerce_expr) + return _internal_mutable_array_coerce_expr(); +} + +// .pg_query.ConvertRowtypeExpr convert_rowtype_expr = 26 [json_name = "ConvertRowtypeExpr"]; +inline bool Node::_internal_has_convert_rowtype_expr() const { + return node_case() == kConvertRowtypeExpr; +} +inline bool Node::has_convert_rowtype_expr() const { + return _internal_has_convert_rowtype_expr(); +} +inline void Node::set_has_convert_rowtype_expr() { + _oneof_case_[0] = kConvertRowtypeExpr; +} +inline void Node::clear_convert_rowtype_expr() { + if (_internal_has_convert_rowtype_expr()) { + if (GetArena() == nullptr) { + delete node_.convert_rowtype_expr_; + } + clear_has_node(); + } +} +inline ::pg_query::ConvertRowtypeExpr* Node::release_convert_rowtype_expr() { + // @@protoc_insertion_point(field_release:pg_query.Node.convert_rowtype_expr) + if (_internal_has_convert_rowtype_expr()) { + clear_has_node(); + ::pg_query::ConvertRowtypeExpr* temp = node_.convert_rowtype_expr_; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + node_.convert_rowtype_expr_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline const ::pg_query::ConvertRowtypeExpr& Node::_internal_convert_rowtype_expr() const { + return _internal_has_convert_rowtype_expr() + ? *node_.convert_rowtype_expr_ + : reinterpret_cast< ::pg_query::ConvertRowtypeExpr&>(::pg_query::_ConvertRowtypeExpr_default_instance_); +} +inline const ::pg_query::ConvertRowtypeExpr& Node::convert_rowtype_expr() const { + // @@protoc_insertion_point(field_get:pg_query.Node.convert_rowtype_expr) + return _internal_convert_rowtype_expr(); +} +inline ::pg_query::ConvertRowtypeExpr* Node::unsafe_arena_release_convert_rowtype_expr() { + // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.convert_rowtype_expr) + if (_internal_has_convert_rowtype_expr()) { + clear_has_node(); + ::pg_query::ConvertRowtypeExpr* temp = node_.convert_rowtype_expr_; + node_.convert_rowtype_expr_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline void Node::unsafe_arena_set_allocated_convert_rowtype_expr(::pg_query::ConvertRowtypeExpr* convert_rowtype_expr) { + clear_node(); + if (convert_rowtype_expr) { + set_has_convert_rowtype_expr(); + node_.convert_rowtype_expr_ = convert_rowtype_expr; + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.convert_rowtype_expr) +} +inline ::pg_query::ConvertRowtypeExpr* Node::_internal_mutable_convert_rowtype_expr() { + if (!_internal_has_convert_rowtype_expr()) { + clear_node(); + set_has_convert_rowtype_expr(); + node_.convert_rowtype_expr_ = CreateMaybeMessage< ::pg_query::ConvertRowtypeExpr >(GetArena()); + } + return node_.convert_rowtype_expr_; +} +inline ::pg_query::ConvertRowtypeExpr* Node::mutable_convert_rowtype_expr() { + // @@protoc_insertion_point(field_mutable:pg_query.Node.convert_rowtype_expr) + return _internal_mutable_convert_rowtype_expr(); +} + +// .pg_query.CollateExpr collate_expr = 27 [json_name = "CollateExpr"]; +inline bool Node::_internal_has_collate_expr() const { + return node_case() == kCollateExpr; +} +inline bool Node::has_collate_expr() const { + return _internal_has_collate_expr(); +} +inline void Node::set_has_collate_expr() { + _oneof_case_[0] = kCollateExpr; +} +inline void Node::clear_collate_expr() { + if (_internal_has_collate_expr()) { + if (GetArena() == nullptr) { + delete node_.collate_expr_; + } + clear_has_node(); + } +} +inline ::pg_query::CollateExpr* Node::release_collate_expr() { + // @@protoc_insertion_point(field_release:pg_query.Node.collate_expr) + if (_internal_has_collate_expr()) { + clear_has_node(); + ::pg_query::CollateExpr* temp = node_.collate_expr_; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + node_.collate_expr_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline const ::pg_query::CollateExpr& Node::_internal_collate_expr() const { + return _internal_has_collate_expr() + ? *node_.collate_expr_ + : reinterpret_cast< ::pg_query::CollateExpr&>(::pg_query::_CollateExpr_default_instance_); +} +inline const ::pg_query::CollateExpr& Node::collate_expr() const { + // @@protoc_insertion_point(field_get:pg_query.Node.collate_expr) + return _internal_collate_expr(); +} +inline ::pg_query::CollateExpr* Node::unsafe_arena_release_collate_expr() { + // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.collate_expr) + if (_internal_has_collate_expr()) { + clear_has_node(); + ::pg_query::CollateExpr* temp = node_.collate_expr_; + node_.collate_expr_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline void Node::unsafe_arena_set_allocated_collate_expr(::pg_query::CollateExpr* collate_expr) { + clear_node(); + if (collate_expr) { + set_has_collate_expr(); + node_.collate_expr_ = collate_expr; + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.collate_expr) +} +inline ::pg_query::CollateExpr* Node::_internal_mutable_collate_expr() { + if (!_internal_has_collate_expr()) { + clear_node(); + set_has_collate_expr(); + node_.collate_expr_ = CreateMaybeMessage< ::pg_query::CollateExpr >(GetArena()); + } + return node_.collate_expr_; +} +inline ::pg_query::CollateExpr* Node::mutable_collate_expr() { + // @@protoc_insertion_point(field_mutable:pg_query.Node.collate_expr) + return _internal_mutable_collate_expr(); +} + +// .pg_query.CaseExpr case_expr = 28 [json_name = "CaseExpr"]; +inline bool Node::_internal_has_case_expr() const { + return node_case() == kCaseExpr; +} +inline bool Node::has_case_expr() const { + return _internal_has_case_expr(); +} +inline void Node::set_has_case_expr() { + _oneof_case_[0] = kCaseExpr; +} +inline void Node::clear_case_expr() { + if (_internal_has_case_expr()) { + if (GetArena() == nullptr) { + delete node_.case_expr_; + } + clear_has_node(); + } +} +inline ::pg_query::CaseExpr* Node::release_case_expr() { + // @@protoc_insertion_point(field_release:pg_query.Node.case_expr) + if (_internal_has_case_expr()) { + clear_has_node(); + ::pg_query::CaseExpr* temp = node_.case_expr_; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + node_.case_expr_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline const ::pg_query::CaseExpr& Node::_internal_case_expr() const { + return _internal_has_case_expr() + ? *node_.case_expr_ + : reinterpret_cast< ::pg_query::CaseExpr&>(::pg_query::_CaseExpr_default_instance_); +} +inline const ::pg_query::CaseExpr& Node::case_expr() const { + // @@protoc_insertion_point(field_get:pg_query.Node.case_expr) + return _internal_case_expr(); +} +inline ::pg_query::CaseExpr* Node::unsafe_arena_release_case_expr() { + // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.case_expr) + if (_internal_has_case_expr()) { + clear_has_node(); + ::pg_query::CaseExpr* temp = node_.case_expr_; + node_.case_expr_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline void Node::unsafe_arena_set_allocated_case_expr(::pg_query::CaseExpr* case_expr) { + clear_node(); + if (case_expr) { + set_has_case_expr(); + node_.case_expr_ = case_expr; + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.case_expr) +} +inline ::pg_query::CaseExpr* Node::_internal_mutable_case_expr() { + if (!_internal_has_case_expr()) { + clear_node(); + set_has_case_expr(); + node_.case_expr_ = CreateMaybeMessage< ::pg_query::CaseExpr >(GetArena()); + } + return node_.case_expr_; +} +inline ::pg_query::CaseExpr* Node::mutable_case_expr() { + // @@protoc_insertion_point(field_mutable:pg_query.Node.case_expr) + return _internal_mutable_case_expr(); +} + +// .pg_query.CaseWhen case_when = 29 [json_name = "CaseWhen"]; +inline bool Node::_internal_has_case_when() const { + return node_case() == kCaseWhen; +} +inline bool Node::has_case_when() const { + return _internal_has_case_when(); +} +inline void Node::set_has_case_when() { + _oneof_case_[0] = kCaseWhen; +} +inline void Node::clear_case_when() { + if (_internal_has_case_when()) { + if (GetArena() == nullptr) { + delete node_.case_when_; + } + clear_has_node(); + } +} +inline ::pg_query::CaseWhen* Node::release_case_when() { + // @@protoc_insertion_point(field_release:pg_query.Node.case_when) + if (_internal_has_case_when()) { + clear_has_node(); + ::pg_query::CaseWhen* temp = node_.case_when_; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + node_.case_when_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline const ::pg_query::CaseWhen& Node::_internal_case_when() const { + return _internal_has_case_when() + ? *node_.case_when_ + : reinterpret_cast< ::pg_query::CaseWhen&>(::pg_query::_CaseWhen_default_instance_); +} +inline const ::pg_query::CaseWhen& Node::case_when() const { + // @@protoc_insertion_point(field_get:pg_query.Node.case_when) + return _internal_case_when(); +} +inline ::pg_query::CaseWhen* Node::unsafe_arena_release_case_when() { + // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.case_when) + if (_internal_has_case_when()) { + clear_has_node(); + ::pg_query::CaseWhen* temp = node_.case_when_; + node_.case_when_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline void Node::unsafe_arena_set_allocated_case_when(::pg_query::CaseWhen* case_when) { + clear_node(); + if (case_when) { + set_has_case_when(); + node_.case_when_ = case_when; + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.case_when) +} +inline ::pg_query::CaseWhen* Node::_internal_mutable_case_when() { + if (!_internal_has_case_when()) { + clear_node(); + set_has_case_when(); + node_.case_when_ = CreateMaybeMessage< ::pg_query::CaseWhen >(GetArena()); + } + return node_.case_when_; +} +inline ::pg_query::CaseWhen* Node::mutable_case_when() { + // @@protoc_insertion_point(field_mutable:pg_query.Node.case_when) + return _internal_mutable_case_when(); +} + +// .pg_query.CaseTestExpr case_test_expr = 30 [json_name = "CaseTestExpr"]; +inline bool Node::_internal_has_case_test_expr() const { + return node_case() == kCaseTestExpr; +} +inline bool Node::has_case_test_expr() const { + return _internal_has_case_test_expr(); +} +inline void Node::set_has_case_test_expr() { + _oneof_case_[0] = kCaseTestExpr; +} +inline void Node::clear_case_test_expr() { + if (_internal_has_case_test_expr()) { + if (GetArena() == nullptr) { + delete node_.case_test_expr_; + } + clear_has_node(); + } +} +inline ::pg_query::CaseTestExpr* Node::release_case_test_expr() { + // @@protoc_insertion_point(field_release:pg_query.Node.case_test_expr) + if (_internal_has_case_test_expr()) { + clear_has_node(); + ::pg_query::CaseTestExpr* temp = node_.case_test_expr_; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + node_.case_test_expr_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline const ::pg_query::CaseTestExpr& Node::_internal_case_test_expr() const { + return _internal_has_case_test_expr() + ? *node_.case_test_expr_ + : reinterpret_cast< ::pg_query::CaseTestExpr&>(::pg_query::_CaseTestExpr_default_instance_); +} +inline const ::pg_query::CaseTestExpr& Node::case_test_expr() const { + // @@protoc_insertion_point(field_get:pg_query.Node.case_test_expr) + return _internal_case_test_expr(); +} +inline ::pg_query::CaseTestExpr* Node::unsafe_arena_release_case_test_expr() { + // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.case_test_expr) + if (_internal_has_case_test_expr()) { + clear_has_node(); + ::pg_query::CaseTestExpr* temp = node_.case_test_expr_; + node_.case_test_expr_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline void Node::unsafe_arena_set_allocated_case_test_expr(::pg_query::CaseTestExpr* case_test_expr) { + clear_node(); + if (case_test_expr) { + set_has_case_test_expr(); + node_.case_test_expr_ = case_test_expr; + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.case_test_expr) +} +inline ::pg_query::CaseTestExpr* Node::_internal_mutable_case_test_expr() { + if (!_internal_has_case_test_expr()) { + clear_node(); + set_has_case_test_expr(); + node_.case_test_expr_ = CreateMaybeMessage< ::pg_query::CaseTestExpr >(GetArena()); + } + return node_.case_test_expr_; +} +inline ::pg_query::CaseTestExpr* Node::mutable_case_test_expr() { + // @@protoc_insertion_point(field_mutable:pg_query.Node.case_test_expr) + return _internal_mutable_case_test_expr(); +} + +// .pg_query.ArrayExpr array_expr = 31 [json_name = "ArrayExpr"]; +inline bool Node::_internal_has_array_expr() const { + return node_case() == kArrayExpr; +} +inline bool Node::has_array_expr() const { + return _internal_has_array_expr(); +} +inline void Node::set_has_array_expr() { + _oneof_case_[0] = kArrayExpr; +} +inline void Node::clear_array_expr() { + if (_internal_has_array_expr()) { + if (GetArena() == nullptr) { + delete node_.array_expr_; + } + clear_has_node(); + } +} +inline ::pg_query::ArrayExpr* Node::release_array_expr() { + // @@protoc_insertion_point(field_release:pg_query.Node.array_expr) + if (_internal_has_array_expr()) { + clear_has_node(); + ::pg_query::ArrayExpr* temp = node_.array_expr_; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + node_.array_expr_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline const ::pg_query::ArrayExpr& Node::_internal_array_expr() const { + return _internal_has_array_expr() + ? *node_.array_expr_ + : reinterpret_cast< ::pg_query::ArrayExpr&>(::pg_query::_ArrayExpr_default_instance_); +} +inline const ::pg_query::ArrayExpr& Node::array_expr() const { + // @@protoc_insertion_point(field_get:pg_query.Node.array_expr) + return _internal_array_expr(); +} +inline ::pg_query::ArrayExpr* Node::unsafe_arena_release_array_expr() { + // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.array_expr) + if (_internal_has_array_expr()) { + clear_has_node(); + ::pg_query::ArrayExpr* temp = node_.array_expr_; + node_.array_expr_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline void Node::unsafe_arena_set_allocated_array_expr(::pg_query::ArrayExpr* array_expr) { + clear_node(); + if (array_expr) { + set_has_array_expr(); + node_.array_expr_ = array_expr; + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.array_expr) +} +inline ::pg_query::ArrayExpr* Node::_internal_mutable_array_expr() { + if (!_internal_has_array_expr()) { + clear_node(); + set_has_array_expr(); + node_.array_expr_ = CreateMaybeMessage< ::pg_query::ArrayExpr >(GetArena()); + } + return node_.array_expr_; +} +inline ::pg_query::ArrayExpr* Node::mutable_array_expr() { + // @@protoc_insertion_point(field_mutable:pg_query.Node.array_expr) + return _internal_mutable_array_expr(); +} + +// .pg_query.RowExpr row_expr = 32 [json_name = "RowExpr"]; +inline bool Node::_internal_has_row_expr() const { + return node_case() == kRowExpr; +} +inline bool Node::has_row_expr() const { + return _internal_has_row_expr(); +} +inline void Node::set_has_row_expr() { + _oneof_case_[0] = kRowExpr; +} +inline void Node::clear_row_expr() { + if (_internal_has_row_expr()) { + if (GetArena() == nullptr) { + delete node_.row_expr_; + } + clear_has_node(); + } +} +inline ::pg_query::RowExpr* Node::release_row_expr() { + // @@protoc_insertion_point(field_release:pg_query.Node.row_expr) + if (_internal_has_row_expr()) { + clear_has_node(); + ::pg_query::RowExpr* temp = node_.row_expr_; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + node_.row_expr_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline const ::pg_query::RowExpr& Node::_internal_row_expr() const { + return _internal_has_row_expr() + ? *node_.row_expr_ + : reinterpret_cast< ::pg_query::RowExpr&>(::pg_query::_RowExpr_default_instance_); +} +inline const ::pg_query::RowExpr& Node::row_expr() const { + // @@protoc_insertion_point(field_get:pg_query.Node.row_expr) + return _internal_row_expr(); +} +inline ::pg_query::RowExpr* Node::unsafe_arena_release_row_expr() { + // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.row_expr) + if (_internal_has_row_expr()) { + clear_has_node(); + ::pg_query::RowExpr* temp = node_.row_expr_; + node_.row_expr_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline void Node::unsafe_arena_set_allocated_row_expr(::pg_query::RowExpr* row_expr) { + clear_node(); + if (row_expr) { + set_has_row_expr(); + node_.row_expr_ = row_expr; + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.row_expr) +} +inline ::pg_query::RowExpr* Node::_internal_mutable_row_expr() { + if (!_internal_has_row_expr()) { + clear_node(); + set_has_row_expr(); + node_.row_expr_ = CreateMaybeMessage< ::pg_query::RowExpr >(GetArena()); + } + return node_.row_expr_; +} +inline ::pg_query::RowExpr* Node::mutable_row_expr() { + // @@protoc_insertion_point(field_mutable:pg_query.Node.row_expr) + return _internal_mutable_row_expr(); +} + +// .pg_query.RowCompareExpr row_compare_expr = 33 [json_name = "RowCompareExpr"]; +inline bool Node::_internal_has_row_compare_expr() const { + return node_case() == kRowCompareExpr; +} +inline bool Node::has_row_compare_expr() const { + return _internal_has_row_compare_expr(); +} +inline void Node::set_has_row_compare_expr() { + _oneof_case_[0] = kRowCompareExpr; +} +inline void Node::clear_row_compare_expr() { + if (_internal_has_row_compare_expr()) { + if (GetArena() == nullptr) { + delete node_.row_compare_expr_; + } + clear_has_node(); + } +} +inline ::pg_query::RowCompareExpr* Node::release_row_compare_expr() { + // @@protoc_insertion_point(field_release:pg_query.Node.row_compare_expr) + if (_internal_has_row_compare_expr()) { + clear_has_node(); + ::pg_query::RowCompareExpr* temp = node_.row_compare_expr_; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + node_.row_compare_expr_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline const ::pg_query::RowCompareExpr& Node::_internal_row_compare_expr() const { + return _internal_has_row_compare_expr() + ? *node_.row_compare_expr_ + : reinterpret_cast< ::pg_query::RowCompareExpr&>(::pg_query::_RowCompareExpr_default_instance_); +} +inline const ::pg_query::RowCompareExpr& Node::row_compare_expr() const { + // @@protoc_insertion_point(field_get:pg_query.Node.row_compare_expr) + return _internal_row_compare_expr(); +} +inline ::pg_query::RowCompareExpr* Node::unsafe_arena_release_row_compare_expr() { + // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.row_compare_expr) + if (_internal_has_row_compare_expr()) { + clear_has_node(); + ::pg_query::RowCompareExpr* temp = node_.row_compare_expr_; + node_.row_compare_expr_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline void Node::unsafe_arena_set_allocated_row_compare_expr(::pg_query::RowCompareExpr* row_compare_expr) { + clear_node(); + if (row_compare_expr) { + set_has_row_compare_expr(); + node_.row_compare_expr_ = row_compare_expr; + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.row_compare_expr) +} +inline ::pg_query::RowCompareExpr* Node::_internal_mutable_row_compare_expr() { + if (!_internal_has_row_compare_expr()) { + clear_node(); + set_has_row_compare_expr(); + node_.row_compare_expr_ = CreateMaybeMessage< ::pg_query::RowCompareExpr >(GetArena()); + } + return node_.row_compare_expr_; +} +inline ::pg_query::RowCompareExpr* Node::mutable_row_compare_expr() { + // @@protoc_insertion_point(field_mutable:pg_query.Node.row_compare_expr) + return _internal_mutable_row_compare_expr(); +} + +// .pg_query.CoalesceExpr coalesce_expr = 34 [json_name = "CoalesceExpr"]; +inline bool Node::_internal_has_coalesce_expr() const { + return node_case() == kCoalesceExpr; +} +inline bool Node::has_coalesce_expr() const { + return _internal_has_coalesce_expr(); +} +inline void Node::set_has_coalesce_expr() { + _oneof_case_[0] = kCoalesceExpr; +} +inline void Node::clear_coalesce_expr() { + if (_internal_has_coalesce_expr()) { + if (GetArena() == nullptr) { + delete node_.coalesce_expr_; + } + clear_has_node(); + } +} +inline ::pg_query::CoalesceExpr* Node::release_coalesce_expr() { + // @@protoc_insertion_point(field_release:pg_query.Node.coalesce_expr) + if (_internal_has_coalesce_expr()) { + clear_has_node(); + ::pg_query::CoalesceExpr* temp = node_.coalesce_expr_; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + node_.coalesce_expr_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline const ::pg_query::CoalesceExpr& Node::_internal_coalesce_expr() const { + return _internal_has_coalesce_expr() + ? *node_.coalesce_expr_ + : reinterpret_cast< ::pg_query::CoalesceExpr&>(::pg_query::_CoalesceExpr_default_instance_); +} +inline const ::pg_query::CoalesceExpr& Node::coalesce_expr() const { + // @@protoc_insertion_point(field_get:pg_query.Node.coalesce_expr) + return _internal_coalesce_expr(); +} +inline ::pg_query::CoalesceExpr* Node::unsafe_arena_release_coalesce_expr() { + // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.coalesce_expr) + if (_internal_has_coalesce_expr()) { + clear_has_node(); + ::pg_query::CoalesceExpr* temp = node_.coalesce_expr_; + node_.coalesce_expr_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline void Node::unsafe_arena_set_allocated_coalesce_expr(::pg_query::CoalesceExpr* coalesce_expr) { + clear_node(); + if (coalesce_expr) { + set_has_coalesce_expr(); + node_.coalesce_expr_ = coalesce_expr; + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.coalesce_expr) +} +inline ::pg_query::CoalesceExpr* Node::_internal_mutable_coalesce_expr() { + if (!_internal_has_coalesce_expr()) { + clear_node(); + set_has_coalesce_expr(); + node_.coalesce_expr_ = CreateMaybeMessage< ::pg_query::CoalesceExpr >(GetArena()); + } + return node_.coalesce_expr_; +} +inline ::pg_query::CoalesceExpr* Node::mutable_coalesce_expr() { + // @@protoc_insertion_point(field_mutable:pg_query.Node.coalesce_expr) + return _internal_mutable_coalesce_expr(); +} + +// .pg_query.MinMaxExpr min_max_expr = 35 [json_name = "MinMaxExpr"]; +inline bool Node::_internal_has_min_max_expr() const { + return node_case() == kMinMaxExpr; +} +inline bool Node::has_min_max_expr() const { + return _internal_has_min_max_expr(); +} +inline void Node::set_has_min_max_expr() { + _oneof_case_[0] = kMinMaxExpr; +} +inline void Node::clear_min_max_expr() { + if (_internal_has_min_max_expr()) { + if (GetArena() == nullptr) { + delete node_.min_max_expr_; + } + clear_has_node(); + } +} +inline ::pg_query::MinMaxExpr* Node::release_min_max_expr() { + // @@protoc_insertion_point(field_release:pg_query.Node.min_max_expr) + if (_internal_has_min_max_expr()) { + clear_has_node(); + ::pg_query::MinMaxExpr* temp = node_.min_max_expr_; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + node_.min_max_expr_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline const ::pg_query::MinMaxExpr& Node::_internal_min_max_expr() const { + return _internal_has_min_max_expr() + ? *node_.min_max_expr_ + : reinterpret_cast< ::pg_query::MinMaxExpr&>(::pg_query::_MinMaxExpr_default_instance_); +} +inline const ::pg_query::MinMaxExpr& Node::min_max_expr() const { + // @@protoc_insertion_point(field_get:pg_query.Node.min_max_expr) + return _internal_min_max_expr(); +} +inline ::pg_query::MinMaxExpr* Node::unsafe_arena_release_min_max_expr() { + // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.min_max_expr) + if (_internal_has_min_max_expr()) { + clear_has_node(); + ::pg_query::MinMaxExpr* temp = node_.min_max_expr_; + node_.min_max_expr_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline void Node::unsafe_arena_set_allocated_min_max_expr(::pg_query::MinMaxExpr* min_max_expr) { + clear_node(); + if (min_max_expr) { + set_has_min_max_expr(); + node_.min_max_expr_ = min_max_expr; + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.min_max_expr) +} +inline ::pg_query::MinMaxExpr* Node::_internal_mutable_min_max_expr() { + if (!_internal_has_min_max_expr()) { + clear_node(); + set_has_min_max_expr(); + node_.min_max_expr_ = CreateMaybeMessage< ::pg_query::MinMaxExpr >(GetArena()); + } + return node_.min_max_expr_; +} +inline ::pg_query::MinMaxExpr* Node::mutable_min_max_expr() { + // @@protoc_insertion_point(field_mutable:pg_query.Node.min_max_expr) + return _internal_mutable_min_max_expr(); +} + +// .pg_query.SQLValueFunction sqlvalue_function = 36 [json_name = "SQLValueFunction"]; +inline bool Node::_internal_has_sqlvalue_function() const { + return node_case() == kSqlvalueFunction; +} +inline bool Node::has_sqlvalue_function() const { + return _internal_has_sqlvalue_function(); +} +inline void Node::set_has_sqlvalue_function() { + _oneof_case_[0] = kSqlvalueFunction; +} +inline void Node::clear_sqlvalue_function() { + if (_internal_has_sqlvalue_function()) { + if (GetArena() == nullptr) { + delete node_.sqlvalue_function_; + } + clear_has_node(); + } +} +inline ::pg_query::SQLValueFunction* Node::release_sqlvalue_function() { + // @@protoc_insertion_point(field_release:pg_query.Node.sqlvalue_function) + if (_internal_has_sqlvalue_function()) { + clear_has_node(); + ::pg_query::SQLValueFunction* temp = node_.sqlvalue_function_; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + node_.sqlvalue_function_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline const ::pg_query::SQLValueFunction& Node::_internal_sqlvalue_function() const { + return _internal_has_sqlvalue_function() + ? *node_.sqlvalue_function_ + : reinterpret_cast< ::pg_query::SQLValueFunction&>(::pg_query::_SQLValueFunction_default_instance_); +} +inline const ::pg_query::SQLValueFunction& Node::sqlvalue_function() const { + // @@protoc_insertion_point(field_get:pg_query.Node.sqlvalue_function) + return _internal_sqlvalue_function(); +} +inline ::pg_query::SQLValueFunction* Node::unsafe_arena_release_sqlvalue_function() { + // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.sqlvalue_function) + if (_internal_has_sqlvalue_function()) { + clear_has_node(); + ::pg_query::SQLValueFunction* temp = node_.sqlvalue_function_; + node_.sqlvalue_function_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline void Node::unsafe_arena_set_allocated_sqlvalue_function(::pg_query::SQLValueFunction* sqlvalue_function) { + clear_node(); + if (sqlvalue_function) { + set_has_sqlvalue_function(); + node_.sqlvalue_function_ = sqlvalue_function; + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.sqlvalue_function) +} +inline ::pg_query::SQLValueFunction* Node::_internal_mutable_sqlvalue_function() { + if (!_internal_has_sqlvalue_function()) { + clear_node(); + set_has_sqlvalue_function(); + node_.sqlvalue_function_ = CreateMaybeMessage< ::pg_query::SQLValueFunction >(GetArena()); + } + return node_.sqlvalue_function_; +} +inline ::pg_query::SQLValueFunction* Node::mutable_sqlvalue_function() { + // @@protoc_insertion_point(field_mutable:pg_query.Node.sqlvalue_function) + return _internal_mutable_sqlvalue_function(); +} + +// .pg_query.XmlExpr xml_expr = 37 [json_name = "XmlExpr"]; +inline bool Node::_internal_has_xml_expr() const { + return node_case() == kXmlExpr; +} +inline bool Node::has_xml_expr() const { + return _internal_has_xml_expr(); +} +inline void Node::set_has_xml_expr() { + _oneof_case_[0] = kXmlExpr; +} +inline void Node::clear_xml_expr() { + if (_internal_has_xml_expr()) { + if (GetArena() == nullptr) { + delete node_.xml_expr_; + } + clear_has_node(); + } +} +inline ::pg_query::XmlExpr* Node::release_xml_expr() { + // @@protoc_insertion_point(field_release:pg_query.Node.xml_expr) + if (_internal_has_xml_expr()) { + clear_has_node(); + ::pg_query::XmlExpr* temp = node_.xml_expr_; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + node_.xml_expr_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline const ::pg_query::XmlExpr& Node::_internal_xml_expr() const { + return _internal_has_xml_expr() + ? *node_.xml_expr_ + : reinterpret_cast< ::pg_query::XmlExpr&>(::pg_query::_XmlExpr_default_instance_); +} +inline const ::pg_query::XmlExpr& Node::xml_expr() const { + // @@protoc_insertion_point(field_get:pg_query.Node.xml_expr) + return _internal_xml_expr(); +} +inline ::pg_query::XmlExpr* Node::unsafe_arena_release_xml_expr() { + // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.xml_expr) + if (_internal_has_xml_expr()) { + clear_has_node(); + ::pg_query::XmlExpr* temp = node_.xml_expr_; + node_.xml_expr_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline void Node::unsafe_arena_set_allocated_xml_expr(::pg_query::XmlExpr* xml_expr) { + clear_node(); + if (xml_expr) { + set_has_xml_expr(); + node_.xml_expr_ = xml_expr; + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.xml_expr) +} +inline ::pg_query::XmlExpr* Node::_internal_mutable_xml_expr() { + if (!_internal_has_xml_expr()) { + clear_node(); + set_has_xml_expr(); + node_.xml_expr_ = CreateMaybeMessage< ::pg_query::XmlExpr >(GetArena()); + } + return node_.xml_expr_; +} +inline ::pg_query::XmlExpr* Node::mutable_xml_expr() { + // @@protoc_insertion_point(field_mutable:pg_query.Node.xml_expr) + return _internal_mutable_xml_expr(); +} + +// .pg_query.NullTest null_test = 38 [json_name = "NullTest"]; +inline bool Node::_internal_has_null_test() const { + return node_case() == kNullTest; +} +inline bool Node::has_null_test() const { + return _internal_has_null_test(); +} +inline void Node::set_has_null_test() { + _oneof_case_[0] = kNullTest; +} +inline void Node::clear_null_test() { + if (_internal_has_null_test()) { + if (GetArena() == nullptr) { + delete node_.null_test_; + } + clear_has_node(); + } +} +inline ::pg_query::NullTest* Node::release_null_test() { + // @@protoc_insertion_point(field_release:pg_query.Node.null_test) + if (_internal_has_null_test()) { + clear_has_node(); + ::pg_query::NullTest* temp = node_.null_test_; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + node_.null_test_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline const ::pg_query::NullTest& Node::_internal_null_test() const { + return _internal_has_null_test() + ? *node_.null_test_ + : reinterpret_cast< ::pg_query::NullTest&>(::pg_query::_NullTest_default_instance_); +} +inline const ::pg_query::NullTest& Node::null_test() const { + // @@protoc_insertion_point(field_get:pg_query.Node.null_test) + return _internal_null_test(); +} +inline ::pg_query::NullTest* Node::unsafe_arena_release_null_test() { + // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.null_test) + if (_internal_has_null_test()) { + clear_has_node(); + ::pg_query::NullTest* temp = node_.null_test_; + node_.null_test_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline void Node::unsafe_arena_set_allocated_null_test(::pg_query::NullTest* null_test) { + clear_node(); + if (null_test) { + set_has_null_test(); + node_.null_test_ = null_test; + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.null_test) +} +inline ::pg_query::NullTest* Node::_internal_mutable_null_test() { + if (!_internal_has_null_test()) { + clear_node(); + set_has_null_test(); + node_.null_test_ = CreateMaybeMessage< ::pg_query::NullTest >(GetArena()); + } + return node_.null_test_; +} +inline ::pg_query::NullTest* Node::mutable_null_test() { + // @@protoc_insertion_point(field_mutable:pg_query.Node.null_test) + return _internal_mutable_null_test(); +} + +// .pg_query.BooleanTest boolean_test = 39 [json_name = "BooleanTest"]; +inline bool Node::_internal_has_boolean_test() const { + return node_case() == kBooleanTest; +} +inline bool Node::has_boolean_test() const { + return _internal_has_boolean_test(); +} +inline void Node::set_has_boolean_test() { + _oneof_case_[0] = kBooleanTest; +} +inline void Node::clear_boolean_test() { + if (_internal_has_boolean_test()) { + if (GetArena() == nullptr) { + delete node_.boolean_test_; + } + clear_has_node(); + } +} +inline ::pg_query::BooleanTest* Node::release_boolean_test() { + // @@protoc_insertion_point(field_release:pg_query.Node.boolean_test) + if (_internal_has_boolean_test()) { + clear_has_node(); + ::pg_query::BooleanTest* temp = node_.boolean_test_; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + node_.boolean_test_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline const ::pg_query::BooleanTest& Node::_internal_boolean_test() const { + return _internal_has_boolean_test() + ? *node_.boolean_test_ + : reinterpret_cast< ::pg_query::BooleanTest&>(::pg_query::_BooleanTest_default_instance_); +} +inline const ::pg_query::BooleanTest& Node::boolean_test() const { + // @@protoc_insertion_point(field_get:pg_query.Node.boolean_test) + return _internal_boolean_test(); +} +inline ::pg_query::BooleanTest* Node::unsafe_arena_release_boolean_test() { + // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.boolean_test) + if (_internal_has_boolean_test()) { + clear_has_node(); + ::pg_query::BooleanTest* temp = node_.boolean_test_; + node_.boolean_test_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline void Node::unsafe_arena_set_allocated_boolean_test(::pg_query::BooleanTest* boolean_test) { + clear_node(); + if (boolean_test) { + set_has_boolean_test(); + node_.boolean_test_ = boolean_test; + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.boolean_test) +} +inline ::pg_query::BooleanTest* Node::_internal_mutable_boolean_test() { + if (!_internal_has_boolean_test()) { + clear_node(); + set_has_boolean_test(); + node_.boolean_test_ = CreateMaybeMessage< ::pg_query::BooleanTest >(GetArena()); + } + return node_.boolean_test_; +} +inline ::pg_query::BooleanTest* Node::mutable_boolean_test() { + // @@protoc_insertion_point(field_mutable:pg_query.Node.boolean_test) + return _internal_mutable_boolean_test(); +} + +// .pg_query.CoerceToDomain coerce_to_domain = 40 [json_name = "CoerceToDomain"]; +inline bool Node::_internal_has_coerce_to_domain() const { + return node_case() == kCoerceToDomain; +} +inline bool Node::has_coerce_to_domain() const { + return _internal_has_coerce_to_domain(); +} +inline void Node::set_has_coerce_to_domain() { + _oneof_case_[0] = kCoerceToDomain; +} +inline void Node::clear_coerce_to_domain() { + if (_internal_has_coerce_to_domain()) { + if (GetArena() == nullptr) { + delete node_.coerce_to_domain_; + } + clear_has_node(); + } +} +inline ::pg_query::CoerceToDomain* Node::release_coerce_to_domain() { + // @@protoc_insertion_point(field_release:pg_query.Node.coerce_to_domain) + if (_internal_has_coerce_to_domain()) { + clear_has_node(); + ::pg_query::CoerceToDomain* temp = node_.coerce_to_domain_; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + node_.coerce_to_domain_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline const ::pg_query::CoerceToDomain& Node::_internal_coerce_to_domain() const { + return _internal_has_coerce_to_domain() + ? *node_.coerce_to_domain_ + : reinterpret_cast< ::pg_query::CoerceToDomain&>(::pg_query::_CoerceToDomain_default_instance_); +} +inline const ::pg_query::CoerceToDomain& Node::coerce_to_domain() const { + // @@protoc_insertion_point(field_get:pg_query.Node.coerce_to_domain) + return _internal_coerce_to_domain(); +} +inline ::pg_query::CoerceToDomain* Node::unsafe_arena_release_coerce_to_domain() { + // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.coerce_to_domain) + if (_internal_has_coerce_to_domain()) { + clear_has_node(); + ::pg_query::CoerceToDomain* temp = node_.coerce_to_domain_; + node_.coerce_to_domain_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline void Node::unsafe_arena_set_allocated_coerce_to_domain(::pg_query::CoerceToDomain* coerce_to_domain) { + clear_node(); + if (coerce_to_domain) { + set_has_coerce_to_domain(); + node_.coerce_to_domain_ = coerce_to_domain; + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.coerce_to_domain) +} +inline ::pg_query::CoerceToDomain* Node::_internal_mutable_coerce_to_domain() { + if (!_internal_has_coerce_to_domain()) { + clear_node(); + set_has_coerce_to_domain(); + node_.coerce_to_domain_ = CreateMaybeMessage< ::pg_query::CoerceToDomain >(GetArena()); + } + return node_.coerce_to_domain_; +} +inline ::pg_query::CoerceToDomain* Node::mutable_coerce_to_domain() { + // @@protoc_insertion_point(field_mutable:pg_query.Node.coerce_to_domain) + return _internal_mutable_coerce_to_domain(); +} + +// .pg_query.CoerceToDomainValue coerce_to_domain_value = 41 [json_name = "CoerceToDomainValue"]; +inline bool Node::_internal_has_coerce_to_domain_value() const { + return node_case() == kCoerceToDomainValue; +} +inline bool Node::has_coerce_to_domain_value() const { + return _internal_has_coerce_to_domain_value(); +} +inline void Node::set_has_coerce_to_domain_value() { + _oneof_case_[0] = kCoerceToDomainValue; +} +inline void Node::clear_coerce_to_domain_value() { + if (_internal_has_coerce_to_domain_value()) { + if (GetArena() == nullptr) { + delete node_.coerce_to_domain_value_; + } + clear_has_node(); + } +} +inline ::pg_query::CoerceToDomainValue* Node::release_coerce_to_domain_value() { + // @@protoc_insertion_point(field_release:pg_query.Node.coerce_to_domain_value) + if (_internal_has_coerce_to_domain_value()) { + clear_has_node(); + ::pg_query::CoerceToDomainValue* temp = node_.coerce_to_domain_value_; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + node_.coerce_to_domain_value_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline const ::pg_query::CoerceToDomainValue& Node::_internal_coerce_to_domain_value() const { + return _internal_has_coerce_to_domain_value() + ? *node_.coerce_to_domain_value_ + : reinterpret_cast< ::pg_query::CoerceToDomainValue&>(::pg_query::_CoerceToDomainValue_default_instance_); +} +inline const ::pg_query::CoerceToDomainValue& Node::coerce_to_domain_value() const { + // @@protoc_insertion_point(field_get:pg_query.Node.coerce_to_domain_value) + return _internal_coerce_to_domain_value(); +} +inline ::pg_query::CoerceToDomainValue* Node::unsafe_arena_release_coerce_to_domain_value() { + // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.coerce_to_domain_value) + if (_internal_has_coerce_to_domain_value()) { + clear_has_node(); + ::pg_query::CoerceToDomainValue* temp = node_.coerce_to_domain_value_; + node_.coerce_to_domain_value_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline void Node::unsafe_arena_set_allocated_coerce_to_domain_value(::pg_query::CoerceToDomainValue* coerce_to_domain_value) { + clear_node(); + if (coerce_to_domain_value) { + set_has_coerce_to_domain_value(); + node_.coerce_to_domain_value_ = coerce_to_domain_value; + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.coerce_to_domain_value) +} +inline ::pg_query::CoerceToDomainValue* Node::_internal_mutable_coerce_to_domain_value() { + if (!_internal_has_coerce_to_domain_value()) { + clear_node(); + set_has_coerce_to_domain_value(); + node_.coerce_to_domain_value_ = CreateMaybeMessage< ::pg_query::CoerceToDomainValue >(GetArena()); + } + return node_.coerce_to_domain_value_; +} +inline ::pg_query::CoerceToDomainValue* Node::mutable_coerce_to_domain_value() { + // @@protoc_insertion_point(field_mutable:pg_query.Node.coerce_to_domain_value) + return _internal_mutable_coerce_to_domain_value(); +} + +// .pg_query.SetToDefault set_to_default = 42 [json_name = "SetToDefault"]; +inline bool Node::_internal_has_set_to_default() const { + return node_case() == kSetToDefault; +} +inline bool Node::has_set_to_default() const { + return _internal_has_set_to_default(); +} +inline void Node::set_has_set_to_default() { + _oneof_case_[0] = kSetToDefault; +} +inline void Node::clear_set_to_default() { + if (_internal_has_set_to_default()) { + if (GetArena() == nullptr) { + delete node_.set_to_default_; + } + clear_has_node(); + } +} +inline ::pg_query::SetToDefault* Node::release_set_to_default() { + // @@protoc_insertion_point(field_release:pg_query.Node.set_to_default) + if (_internal_has_set_to_default()) { + clear_has_node(); + ::pg_query::SetToDefault* temp = node_.set_to_default_; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + node_.set_to_default_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline const ::pg_query::SetToDefault& Node::_internal_set_to_default() const { + return _internal_has_set_to_default() + ? *node_.set_to_default_ + : reinterpret_cast< ::pg_query::SetToDefault&>(::pg_query::_SetToDefault_default_instance_); +} +inline const ::pg_query::SetToDefault& Node::set_to_default() const { + // @@protoc_insertion_point(field_get:pg_query.Node.set_to_default) + return _internal_set_to_default(); +} +inline ::pg_query::SetToDefault* Node::unsafe_arena_release_set_to_default() { + // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.set_to_default) + if (_internal_has_set_to_default()) { + clear_has_node(); + ::pg_query::SetToDefault* temp = node_.set_to_default_; + node_.set_to_default_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline void Node::unsafe_arena_set_allocated_set_to_default(::pg_query::SetToDefault* set_to_default) { + clear_node(); + if (set_to_default) { + set_has_set_to_default(); + node_.set_to_default_ = set_to_default; + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.set_to_default) +} +inline ::pg_query::SetToDefault* Node::_internal_mutable_set_to_default() { + if (!_internal_has_set_to_default()) { + clear_node(); + set_has_set_to_default(); + node_.set_to_default_ = CreateMaybeMessage< ::pg_query::SetToDefault >(GetArena()); + } + return node_.set_to_default_; +} +inline ::pg_query::SetToDefault* Node::mutable_set_to_default() { + // @@protoc_insertion_point(field_mutable:pg_query.Node.set_to_default) + return _internal_mutable_set_to_default(); +} + +// .pg_query.CurrentOfExpr current_of_expr = 43 [json_name = "CurrentOfExpr"]; +inline bool Node::_internal_has_current_of_expr() const { + return node_case() == kCurrentOfExpr; +} +inline bool Node::has_current_of_expr() const { + return _internal_has_current_of_expr(); +} +inline void Node::set_has_current_of_expr() { + _oneof_case_[0] = kCurrentOfExpr; +} +inline void Node::clear_current_of_expr() { + if (_internal_has_current_of_expr()) { + if (GetArena() == nullptr) { + delete node_.current_of_expr_; + } + clear_has_node(); + } +} +inline ::pg_query::CurrentOfExpr* Node::release_current_of_expr() { + // @@protoc_insertion_point(field_release:pg_query.Node.current_of_expr) + if (_internal_has_current_of_expr()) { + clear_has_node(); + ::pg_query::CurrentOfExpr* temp = node_.current_of_expr_; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + node_.current_of_expr_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline const ::pg_query::CurrentOfExpr& Node::_internal_current_of_expr() const { + return _internal_has_current_of_expr() + ? *node_.current_of_expr_ + : reinterpret_cast< ::pg_query::CurrentOfExpr&>(::pg_query::_CurrentOfExpr_default_instance_); +} +inline const ::pg_query::CurrentOfExpr& Node::current_of_expr() const { + // @@protoc_insertion_point(field_get:pg_query.Node.current_of_expr) + return _internal_current_of_expr(); +} +inline ::pg_query::CurrentOfExpr* Node::unsafe_arena_release_current_of_expr() { + // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.current_of_expr) + if (_internal_has_current_of_expr()) { + clear_has_node(); + ::pg_query::CurrentOfExpr* temp = node_.current_of_expr_; + node_.current_of_expr_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline void Node::unsafe_arena_set_allocated_current_of_expr(::pg_query::CurrentOfExpr* current_of_expr) { + clear_node(); + if (current_of_expr) { + set_has_current_of_expr(); + node_.current_of_expr_ = current_of_expr; + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.current_of_expr) +} +inline ::pg_query::CurrentOfExpr* Node::_internal_mutable_current_of_expr() { + if (!_internal_has_current_of_expr()) { + clear_node(); + set_has_current_of_expr(); + node_.current_of_expr_ = CreateMaybeMessage< ::pg_query::CurrentOfExpr >(GetArena()); + } + return node_.current_of_expr_; +} +inline ::pg_query::CurrentOfExpr* Node::mutable_current_of_expr() { + // @@protoc_insertion_point(field_mutable:pg_query.Node.current_of_expr) + return _internal_mutable_current_of_expr(); +} + +// .pg_query.NextValueExpr next_value_expr = 44 [json_name = "NextValueExpr"]; +inline bool Node::_internal_has_next_value_expr() const { + return node_case() == kNextValueExpr; +} +inline bool Node::has_next_value_expr() const { + return _internal_has_next_value_expr(); +} +inline void Node::set_has_next_value_expr() { + _oneof_case_[0] = kNextValueExpr; +} +inline void Node::clear_next_value_expr() { + if (_internal_has_next_value_expr()) { + if (GetArena() == nullptr) { + delete node_.next_value_expr_; + } + clear_has_node(); + } +} +inline ::pg_query::NextValueExpr* Node::release_next_value_expr() { + // @@protoc_insertion_point(field_release:pg_query.Node.next_value_expr) + if (_internal_has_next_value_expr()) { + clear_has_node(); + ::pg_query::NextValueExpr* temp = node_.next_value_expr_; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + node_.next_value_expr_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline const ::pg_query::NextValueExpr& Node::_internal_next_value_expr() const { + return _internal_has_next_value_expr() + ? *node_.next_value_expr_ + : reinterpret_cast< ::pg_query::NextValueExpr&>(::pg_query::_NextValueExpr_default_instance_); +} +inline const ::pg_query::NextValueExpr& Node::next_value_expr() const { + // @@protoc_insertion_point(field_get:pg_query.Node.next_value_expr) + return _internal_next_value_expr(); +} +inline ::pg_query::NextValueExpr* Node::unsafe_arena_release_next_value_expr() { + // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.next_value_expr) + if (_internal_has_next_value_expr()) { + clear_has_node(); + ::pg_query::NextValueExpr* temp = node_.next_value_expr_; + node_.next_value_expr_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline void Node::unsafe_arena_set_allocated_next_value_expr(::pg_query::NextValueExpr* next_value_expr) { + clear_node(); + if (next_value_expr) { + set_has_next_value_expr(); + node_.next_value_expr_ = next_value_expr; + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.next_value_expr) +} +inline ::pg_query::NextValueExpr* Node::_internal_mutable_next_value_expr() { + if (!_internal_has_next_value_expr()) { + clear_node(); + set_has_next_value_expr(); + node_.next_value_expr_ = CreateMaybeMessage< ::pg_query::NextValueExpr >(GetArena()); + } + return node_.next_value_expr_; +} +inline ::pg_query::NextValueExpr* Node::mutable_next_value_expr() { + // @@protoc_insertion_point(field_mutable:pg_query.Node.next_value_expr) + return _internal_mutable_next_value_expr(); +} + +// .pg_query.InferenceElem inference_elem = 45 [json_name = "InferenceElem"]; +inline bool Node::_internal_has_inference_elem() const { + return node_case() == kInferenceElem; +} +inline bool Node::has_inference_elem() const { + return _internal_has_inference_elem(); +} +inline void Node::set_has_inference_elem() { + _oneof_case_[0] = kInferenceElem; +} +inline void Node::clear_inference_elem() { + if (_internal_has_inference_elem()) { + if (GetArena() == nullptr) { + delete node_.inference_elem_; + } + clear_has_node(); + } +} +inline ::pg_query::InferenceElem* Node::release_inference_elem() { + // @@protoc_insertion_point(field_release:pg_query.Node.inference_elem) + if (_internal_has_inference_elem()) { + clear_has_node(); + ::pg_query::InferenceElem* temp = node_.inference_elem_; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + node_.inference_elem_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline const ::pg_query::InferenceElem& Node::_internal_inference_elem() const { + return _internal_has_inference_elem() + ? *node_.inference_elem_ + : reinterpret_cast< ::pg_query::InferenceElem&>(::pg_query::_InferenceElem_default_instance_); +} +inline const ::pg_query::InferenceElem& Node::inference_elem() const { + // @@protoc_insertion_point(field_get:pg_query.Node.inference_elem) + return _internal_inference_elem(); +} +inline ::pg_query::InferenceElem* Node::unsafe_arena_release_inference_elem() { + // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.inference_elem) + if (_internal_has_inference_elem()) { + clear_has_node(); + ::pg_query::InferenceElem* temp = node_.inference_elem_; + node_.inference_elem_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline void Node::unsafe_arena_set_allocated_inference_elem(::pg_query::InferenceElem* inference_elem) { + clear_node(); + if (inference_elem) { + set_has_inference_elem(); + node_.inference_elem_ = inference_elem; + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.inference_elem) +} +inline ::pg_query::InferenceElem* Node::_internal_mutable_inference_elem() { + if (!_internal_has_inference_elem()) { + clear_node(); + set_has_inference_elem(); + node_.inference_elem_ = CreateMaybeMessage< ::pg_query::InferenceElem >(GetArena()); + } + return node_.inference_elem_; +} +inline ::pg_query::InferenceElem* Node::mutable_inference_elem() { + // @@protoc_insertion_point(field_mutable:pg_query.Node.inference_elem) + return _internal_mutable_inference_elem(); +} + +// .pg_query.TargetEntry target_entry = 46 [json_name = "TargetEntry"]; +inline bool Node::_internal_has_target_entry() const { + return node_case() == kTargetEntry; +} +inline bool Node::has_target_entry() const { + return _internal_has_target_entry(); +} +inline void Node::set_has_target_entry() { + _oneof_case_[0] = kTargetEntry; +} +inline void Node::clear_target_entry() { + if (_internal_has_target_entry()) { + if (GetArena() == nullptr) { + delete node_.target_entry_; + } + clear_has_node(); + } +} +inline ::pg_query::TargetEntry* Node::release_target_entry() { + // @@protoc_insertion_point(field_release:pg_query.Node.target_entry) + if (_internal_has_target_entry()) { + clear_has_node(); + ::pg_query::TargetEntry* temp = node_.target_entry_; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + node_.target_entry_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline const ::pg_query::TargetEntry& Node::_internal_target_entry() const { + return _internal_has_target_entry() + ? *node_.target_entry_ + : reinterpret_cast< ::pg_query::TargetEntry&>(::pg_query::_TargetEntry_default_instance_); +} +inline const ::pg_query::TargetEntry& Node::target_entry() const { + // @@protoc_insertion_point(field_get:pg_query.Node.target_entry) + return _internal_target_entry(); +} +inline ::pg_query::TargetEntry* Node::unsafe_arena_release_target_entry() { + // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.target_entry) + if (_internal_has_target_entry()) { + clear_has_node(); + ::pg_query::TargetEntry* temp = node_.target_entry_; + node_.target_entry_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline void Node::unsafe_arena_set_allocated_target_entry(::pg_query::TargetEntry* target_entry) { + clear_node(); + if (target_entry) { + set_has_target_entry(); + node_.target_entry_ = target_entry; + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.target_entry) +} +inline ::pg_query::TargetEntry* Node::_internal_mutable_target_entry() { + if (!_internal_has_target_entry()) { + clear_node(); + set_has_target_entry(); + node_.target_entry_ = CreateMaybeMessage< ::pg_query::TargetEntry >(GetArena()); + } + return node_.target_entry_; +} +inline ::pg_query::TargetEntry* Node::mutable_target_entry() { + // @@protoc_insertion_point(field_mutable:pg_query.Node.target_entry) + return _internal_mutable_target_entry(); +} + +// .pg_query.RangeTblRef range_tbl_ref = 47 [json_name = "RangeTblRef"]; +inline bool Node::_internal_has_range_tbl_ref() const { + return node_case() == kRangeTblRef; +} +inline bool Node::has_range_tbl_ref() const { + return _internal_has_range_tbl_ref(); +} +inline void Node::set_has_range_tbl_ref() { + _oneof_case_[0] = kRangeTblRef; +} +inline void Node::clear_range_tbl_ref() { + if (_internal_has_range_tbl_ref()) { + if (GetArena() == nullptr) { + delete node_.range_tbl_ref_; + } + clear_has_node(); + } +} +inline ::pg_query::RangeTblRef* Node::release_range_tbl_ref() { + // @@protoc_insertion_point(field_release:pg_query.Node.range_tbl_ref) + if (_internal_has_range_tbl_ref()) { + clear_has_node(); + ::pg_query::RangeTblRef* temp = node_.range_tbl_ref_; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + node_.range_tbl_ref_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline const ::pg_query::RangeTblRef& Node::_internal_range_tbl_ref() const { + return _internal_has_range_tbl_ref() + ? *node_.range_tbl_ref_ + : reinterpret_cast< ::pg_query::RangeTblRef&>(::pg_query::_RangeTblRef_default_instance_); +} +inline const ::pg_query::RangeTblRef& Node::range_tbl_ref() const { + // @@protoc_insertion_point(field_get:pg_query.Node.range_tbl_ref) + return _internal_range_tbl_ref(); +} +inline ::pg_query::RangeTblRef* Node::unsafe_arena_release_range_tbl_ref() { + // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.range_tbl_ref) + if (_internal_has_range_tbl_ref()) { + clear_has_node(); + ::pg_query::RangeTblRef* temp = node_.range_tbl_ref_; + node_.range_tbl_ref_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline void Node::unsafe_arena_set_allocated_range_tbl_ref(::pg_query::RangeTblRef* range_tbl_ref) { + clear_node(); + if (range_tbl_ref) { + set_has_range_tbl_ref(); + node_.range_tbl_ref_ = range_tbl_ref; + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.range_tbl_ref) +} +inline ::pg_query::RangeTblRef* Node::_internal_mutable_range_tbl_ref() { + if (!_internal_has_range_tbl_ref()) { + clear_node(); + set_has_range_tbl_ref(); + node_.range_tbl_ref_ = CreateMaybeMessage< ::pg_query::RangeTblRef >(GetArena()); + } + return node_.range_tbl_ref_; +} +inline ::pg_query::RangeTblRef* Node::mutable_range_tbl_ref() { + // @@protoc_insertion_point(field_mutable:pg_query.Node.range_tbl_ref) + return _internal_mutable_range_tbl_ref(); +} + +// .pg_query.JoinExpr join_expr = 48 [json_name = "JoinExpr"]; +inline bool Node::_internal_has_join_expr() const { + return node_case() == kJoinExpr; +} +inline bool Node::has_join_expr() const { + return _internal_has_join_expr(); +} +inline void Node::set_has_join_expr() { + _oneof_case_[0] = kJoinExpr; +} +inline void Node::clear_join_expr() { + if (_internal_has_join_expr()) { + if (GetArena() == nullptr) { + delete node_.join_expr_; + } + clear_has_node(); + } +} +inline ::pg_query::JoinExpr* Node::release_join_expr() { + // @@protoc_insertion_point(field_release:pg_query.Node.join_expr) + if (_internal_has_join_expr()) { + clear_has_node(); + ::pg_query::JoinExpr* temp = node_.join_expr_; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + node_.join_expr_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline const ::pg_query::JoinExpr& Node::_internal_join_expr() const { + return _internal_has_join_expr() + ? *node_.join_expr_ + : reinterpret_cast< ::pg_query::JoinExpr&>(::pg_query::_JoinExpr_default_instance_); +} +inline const ::pg_query::JoinExpr& Node::join_expr() const { + // @@protoc_insertion_point(field_get:pg_query.Node.join_expr) + return _internal_join_expr(); +} +inline ::pg_query::JoinExpr* Node::unsafe_arena_release_join_expr() { + // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.join_expr) + if (_internal_has_join_expr()) { + clear_has_node(); + ::pg_query::JoinExpr* temp = node_.join_expr_; + node_.join_expr_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline void Node::unsafe_arena_set_allocated_join_expr(::pg_query::JoinExpr* join_expr) { + clear_node(); + if (join_expr) { + set_has_join_expr(); + node_.join_expr_ = join_expr; + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.join_expr) +} +inline ::pg_query::JoinExpr* Node::_internal_mutable_join_expr() { + if (!_internal_has_join_expr()) { + clear_node(); + set_has_join_expr(); + node_.join_expr_ = CreateMaybeMessage< ::pg_query::JoinExpr >(GetArena()); + } + return node_.join_expr_; +} +inline ::pg_query::JoinExpr* Node::mutable_join_expr() { + // @@protoc_insertion_point(field_mutable:pg_query.Node.join_expr) + return _internal_mutable_join_expr(); +} + +// .pg_query.FromExpr from_expr = 49 [json_name = "FromExpr"]; +inline bool Node::_internal_has_from_expr() const { + return node_case() == kFromExpr; +} +inline bool Node::has_from_expr() const { + return _internal_has_from_expr(); +} +inline void Node::set_has_from_expr() { + _oneof_case_[0] = kFromExpr; +} +inline void Node::clear_from_expr() { + if (_internal_has_from_expr()) { + if (GetArena() == nullptr) { + delete node_.from_expr_; + } + clear_has_node(); + } +} +inline ::pg_query::FromExpr* Node::release_from_expr() { + // @@protoc_insertion_point(field_release:pg_query.Node.from_expr) + if (_internal_has_from_expr()) { + clear_has_node(); + ::pg_query::FromExpr* temp = node_.from_expr_; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + node_.from_expr_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline const ::pg_query::FromExpr& Node::_internal_from_expr() const { + return _internal_has_from_expr() + ? *node_.from_expr_ + : reinterpret_cast< ::pg_query::FromExpr&>(::pg_query::_FromExpr_default_instance_); +} +inline const ::pg_query::FromExpr& Node::from_expr() const { + // @@protoc_insertion_point(field_get:pg_query.Node.from_expr) + return _internal_from_expr(); +} +inline ::pg_query::FromExpr* Node::unsafe_arena_release_from_expr() { + // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.from_expr) + if (_internal_has_from_expr()) { + clear_has_node(); + ::pg_query::FromExpr* temp = node_.from_expr_; + node_.from_expr_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline void Node::unsafe_arena_set_allocated_from_expr(::pg_query::FromExpr* from_expr) { + clear_node(); + if (from_expr) { + set_has_from_expr(); + node_.from_expr_ = from_expr; + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.from_expr) +} +inline ::pg_query::FromExpr* Node::_internal_mutable_from_expr() { + if (!_internal_has_from_expr()) { + clear_node(); + set_has_from_expr(); + node_.from_expr_ = CreateMaybeMessage< ::pg_query::FromExpr >(GetArena()); + } + return node_.from_expr_; +} +inline ::pg_query::FromExpr* Node::mutable_from_expr() { + // @@protoc_insertion_point(field_mutable:pg_query.Node.from_expr) + return _internal_mutable_from_expr(); +} + +// .pg_query.OnConflictExpr on_conflict_expr = 50 [json_name = "OnConflictExpr"]; +inline bool Node::_internal_has_on_conflict_expr() const { + return node_case() == kOnConflictExpr; +} +inline bool Node::has_on_conflict_expr() const { + return _internal_has_on_conflict_expr(); +} +inline void Node::set_has_on_conflict_expr() { + _oneof_case_[0] = kOnConflictExpr; +} +inline void Node::clear_on_conflict_expr() { + if (_internal_has_on_conflict_expr()) { + if (GetArena() == nullptr) { + delete node_.on_conflict_expr_; + } + clear_has_node(); + } +} +inline ::pg_query::OnConflictExpr* Node::release_on_conflict_expr() { + // @@protoc_insertion_point(field_release:pg_query.Node.on_conflict_expr) + if (_internal_has_on_conflict_expr()) { + clear_has_node(); + ::pg_query::OnConflictExpr* temp = node_.on_conflict_expr_; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + node_.on_conflict_expr_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline const ::pg_query::OnConflictExpr& Node::_internal_on_conflict_expr() const { + return _internal_has_on_conflict_expr() + ? *node_.on_conflict_expr_ + : reinterpret_cast< ::pg_query::OnConflictExpr&>(::pg_query::_OnConflictExpr_default_instance_); +} +inline const ::pg_query::OnConflictExpr& Node::on_conflict_expr() const { + // @@protoc_insertion_point(field_get:pg_query.Node.on_conflict_expr) + return _internal_on_conflict_expr(); +} +inline ::pg_query::OnConflictExpr* Node::unsafe_arena_release_on_conflict_expr() { + // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.on_conflict_expr) + if (_internal_has_on_conflict_expr()) { + clear_has_node(); + ::pg_query::OnConflictExpr* temp = node_.on_conflict_expr_; + node_.on_conflict_expr_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline void Node::unsafe_arena_set_allocated_on_conflict_expr(::pg_query::OnConflictExpr* on_conflict_expr) { + clear_node(); + if (on_conflict_expr) { + set_has_on_conflict_expr(); + node_.on_conflict_expr_ = on_conflict_expr; + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.on_conflict_expr) +} +inline ::pg_query::OnConflictExpr* Node::_internal_mutable_on_conflict_expr() { + if (!_internal_has_on_conflict_expr()) { + clear_node(); + set_has_on_conflict_expr(); + node_.on_conflict_expr_ = CreateMaybeMessage< ::pg_query::OnConflictExpr >(GetArena()); + } + return node_.on_conflict_expr_; +} +inline ::pg_query::OnConflictExpr* Node::mutable_on_conflict_expr() { + // @@protoc_insertion_point(field_mutable:pg_query.Node.on_conflict_expr) + return _internal_mutable_on_conflict_expr(); +} + +// .pg_query.IntoClause into_clause = 51 [json_name = "IntoClause"]; +inline bool Node::_internal_has_into_clause() const { + return node_case() == kIntoClause; +} +inline bool Node::has_into_clause() const { + return _internal_has_into_clause(); +} +inline void Node::set_has_into_clause() { + _oneof_case_[0] = kIntoClause; +} +inline void Node::clear_into_clause() { + if (_internal_has_into_clause()) { + if (GetArena() == nullptr) { + delete node_.into_clause_; + } + clear_has_node(); + } +} +inline ::pg_query::IntoClause* Node::release_into_clause() { + // @@protoc_insertion_point(field_release:pg_query.Node.into_clause) + if (_internal_has_into_clause()) { + clear_has_node(); + ::pg_query::IntoClause* temp = node_.into_clause_; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + node_.into_clause_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline const ::pg_query::IntoClause& Node::_internal_into_clause() const { + return _internal_has_into_clause() + ? *node_.into_clause_ + : reinterpret_cast< ::pg_query::IntoClause&>(::pg_query::_IntoClause_default_instance_); +} +inline const ::pg_query::IntoClause& Node::into_clause() const { + // @@protoc_insertion_point(field_get:pg_query.Node.into_clause) + return _internal_into_clause(); +} +inline ::pg_query::IntoClause* Node::unsafe_arena_release_into_clause() { + // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.into_clause) + if (_internal_has_into_clause()) { + clear_has_node(); + ::pg_query::IntoClause* temp = node_.into_clause_; + node_.into_clause_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline void Node::unsafe_arena_set_allocated_into_clause(::pg_query::IntoClause* into_clause) { + clear_node(); + if (into_clause) { + set_has_into_clause(); + node_.into_clause_ = into_clause; + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.into_clause) +} +inline ::pg_query::IntoClause* Node::_internal_mutable_into_clause() { + if (!_internal_has_into_clause()) { + clear_node(); + set_has_into_clause(); + node_.into_clause_ = CreateMaybeMessage< ::pg_query::IntoClause >(GetArena()); + } + return node_.into_clause_; +} +inline ::pg_query::IntoClause* Node::mutable_into_clause() { + // @@protoc_insertion_point(field_mutable:pg_query.Node.into_clause) + return _internal_mutable_into_clause(); +} + +// .pg_query.RawStmt raw_stmt = 52 [json_name = "RawStmt"]; +inline bool Node::_internal_has_raw_stmt() const { + return node_case() == kRawStmt; +} +inline bool Node::has_raw_stmt() const { + return _internal_has_raw_stmt(); +} +inline void Node::set_has_raw_stmt() { + _oneof_case_[0] = kRawStmt; +} +inline void Node::clear_raw_stmt() { + if (_internal_has_raw_stmt()) { + if (GetArena() == nullptr) { + delete node_.raw_stmt_; + } + clear_has_node(); + } +} +inline ::pg_query::RawStmt* Node::release_raw_stmt() { + // @@protoc_insertion_point(field_release:pg_query.Node.raw_stmt) + if (_internal_has_raw_stmt()) { + clear_has_node(); + ::pg_query::RawStmt* temp = node_.raw_stmt_; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + node_.raw_stmt_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline const ::pg_query::RawStmt& Node::_internal_raw_stmt() const { + return _internal_has_raw_stmt() + ? *node_.raw_stmt_ + : reinterpret_cast< ::pg_query::RawStmt&>(::pg_query::_RawStmt_default_instance_); +} +inline const ::pg_query::RawStmt& Node::raw_stmt() const { + // @@protoc_insertion_point(field_get:pg_query.Node.raw_stmt) + return _internal_raw_stmt(); +} +inline ::pg_query::RawStmt* Node::unsafe_arena_release_raw_stmt() { + // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.raw_stmt) + if (_internal_has_raw_stmt()) { + clear_has_node(); + ::pg_query::RawStmt* temp = node_.raw_stmt_; + node_.raw_stmt_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline void Node::unsafe_arena_set_allocated_raw_stmt(::pg_query::RawStmt* raw_stmt) { + clear_node(); + if (raw_stmt) { + set_has_raw_stmt(); + node_.raw_stmt_ = raw_stmt; + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.raw_stmt) +} +inline ::pg_query::RawStmt* Node::_internal_mutable_raw_stmt() { + if (!_internal_has_raw_stmt()) { + clear_node(); + set_has_raw_stmt(); + node_.raw_stmt_ = CreateMaybeMessage< ::pg_query::RawStmt >(GetArena()); + } + return node_.raw_stmt_; +} +inline ::pg_query::RawStmt* Node::mutable_raw_stmt() { + // @@protoc_insertion_point(field_mutable:pg_query.Node.raw_stmt) + return _internal_mutable_raw_stmt(); +} + +// .pg_query.Query query = 53 [json_name = "Query"]; +inline bool Node::_internal_has_query() const { + return node_case() == kQuery; +} +inline bool Node::has_query() const { + return _internal_has_query(); +} +inline void Node::set_has_query() { + _oneof_case_[0] = kQuery; +} +inline void Node::clear_query() { + if (_internal_has_query()) { + if (GetArena() == nullptr) { + delete node_.query_; + } + clear_has_node(); + } +} +inline ::pg_query::Query* Node::release_query() { + // @@protoc_insertion_point(field_release:pg_query.Node.query) + if (_internal_has_query()) { + clear_has_node(); + ::pg_query::Query* temp = node_.query_; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + node_.query_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline const ::pg_query::Query& Node::_internal_query() const { + return _internal_has_query() + ? *node_.query_ + : reinterpret_cast< ::pg_query::Query&>(::pg_query::_Query_default_instance_); +} +inline const ::pg_query::Query& Node::query() const { + // @@protoc_insertion_point(field_get:pg_query.Node.query) + return _internal_query(); +} +inline ::pg_query::Query* Node::unsafe_arena_release_query() { + // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.query) + if (_internal_has_query()) { + clear_has_node(); + ::pg_query::Query* temp = node_.query_; + node_.query_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline void Node::unsafe_arena_set_allocated_query(::pg_query::Query* query) { + clear_node(); + if (query) { + set_has_query(); + node_.query_ = query; + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.query) +} +inline ::pg_query::Query* Node::_internal_mutable_query() { + if (!_internal_has_query()) { + clear_node(); + set_has_query(); + node_.query_ = CreateMaybeMessage< ::pg_query::Query >(GetArena()); + } + return node_.query_; +} +inline ::pg_query::Query* Node::mutable_query() { + // @@protoc_insertion_point(field_mutable:pg_query.Node.query) + return _internal_mutable_query(); +} + +// .pg_query.InsertStmt insert_stmt = 54 [json_name = "InsertStmt"]; +inline bool Node::_internal_has_insert_stmt() const { + return node_case() == kInsertStmt; +} +inline bool Node::has_insert_stmt() const { + return _internal_has_insert_stmt(); +} +inline void Node::set_has_insert_stmt() { + _oneof_case_[0] = kInsertStmt; +} +inline void Node::clear_insert_stmt() { + if (_internal_has_insert_stmt()) { + if (GetArena() == nullptr) { + delete node_.insert_stmt_; + } + clear_has_node(); + } +} +inline ::pg_query::InsertStmt* Node::release_insert_stmt() { + // @@protoc_insertion_point(field_release:pg_query.Node.insert_stmt) + if (_internal_has_insert_stmt()) { + clear_has_node(); + ::pg_query::InsertStmt* temp = node_.insert_stmt_; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + node_.insert_stmt_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline const ::pg_query::InsertStmt& Node::_internal_insert_stmt() const { + return _internal_has_insert_stmt() + ? *node_.insert_stmt_ + : reinterpret_cast< ::pg_query::InsertStmt&>(::pg_query::_InsertStmt_default_instance_); +} +inline const ::pg_query::InsertStmt& Node::insert_stmt() const { + // @@protoc_insertion_point(field_get:pg_query.Node.insert_stmt) + return _internal_insert_stmt(); +} +inline ::pg_query::InsertStmt* Node::unsafe_arena_release_insert_stmt() { + // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.insert_stmt) + if (_internal_has_insert_stmt()) { + clear_has_node(); + ::pg_query::InsertStmt* temp = node_.insert_stmt_; + node_.insert_stmt_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline void Node::unsafe_arena_set_allocated_insert_stmt(::pg_query::InsertStmt* insert_stmt) { + clear_node(); + if (insert_stmt) { + set_has_insert_stmt(); + node_.insert_stmt_ = insert_stmt; + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.insert_stmt) +} +inline ::pg_query::InsertStmt* Node::_internal_mutable_insert_stmt() { + if (!_internal_has_insert_stmt()) { + clear_node(); + set_has_insert_stmt(); + node_.insert_stmt_ = CreateMaybeMessage< ::pg_query::InsertStmt >(GetArena()); + } + return node_.insert_stmt_; +} +inline ::pg_query::InsertStmt* Node::mutable_insert_stmt() { + // @@protoc_insertion_point(field_mutable:pg_query.Node.insert_stmt) + return _internal_mutable_insert_stmt(); +} + +// .pg_query.DeleteStmt delete_stmt = 55 [json_name = "DeleteStmt"]; +inline bool Node::_internal_has_delete_stmt() const { + return node_case() == kDeleteStmt; +} +inline bool Node::has_delete_stmt() const { + return _internal_has_delete_stmt(); +} +inline void Node::set_has_delete_stmt() { + _oneof_case_[0] = kDeleteStmt; +} +inline void Node::clear_delete_stmt() { + if (_internal_has_delete_stmt()) { + if (GetArena() == nullptr) { + delete node_.delete_stmt_; + } + clear_has_node(); + } +} +inline ::pg_query::DeleteStmt* Node::release_delete_stmt() { + // @@protoc_insertion_point(field_release:pg_query.Node.delete_stmt) + if (_internal_has_delete_stmt()) { + clear_has_node(); + ::pg_query::DeleteStmt* temp = node_.delete_stmt_; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + node_.delete_stmt_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline const ::pg_query::DeleteStmt& Node::_internal_delete_stmt() const { + return _internal_has_delete_stmt() + ? *node_.delete_stmt_ + : reinterpret_cast< ::pg_query::DeleteStmt&>(::pg_query::_DeleteStmt_default_instance_); +} +inline const ::pg_query::DeleteStmt& Node::delete_stmt() const { + // @@protoc_insertion_point(field_get:pg_query.Node.delete_stmt) + return _internal_delete_stmt(); +} +inline ::pg_query::DeleteStmt* Node::unsafe_arena_release_delete_stmt() { + // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.delete_stmt) + if (_internal_has_delete_stmt()) { + clear_has_node(); + ::pg_query::DeleteStmt* temp = node_.delete_stmt_; + node_.delete_stmt_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline void Node::unsafe_arena_set_allocated_delete_stmt(::pg_query::DeleteStmt* delete_stmt) { + clear_node(); + if (delete_stmt) { + set_has_delete_stmt(); + node_.delete_stmt_ = delete_stmt; + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.delete_stmt) +} +inline ::pg_query::DeleteStmt* Node::_internal_mutable_delete_stmt() { + if (!_internal_has_delete_stmt()) { + clear_node(); + set_has_delete_stmt(); + node_.delete_stmt_ = CreateMaybeMessage< ::pg_query::DeleteStmt >(GetArena()); + } + return node_.delete_stmt_; +} +inline ::pg_query::DeleteStmt* Node::mutable_delete_stmt() { + // @@protoc_insertion_point(field_mutable:pg_query.Node.delete_stmt) + return _internal_mutable_delete_stmt(); +} + +// .pg_query.UpdateStmt update_stmt = 56 [json_name = "UpdateStmt"]; +inline bool Node::_internal_has_update_stmt() const { + return node_case() == kUpdateStmt; +} +inline bool Node::has_update_stmt() const { + return _internal_has_update_stmt(); +} +inline void Node::set_has_update_stmt() { + _oneof_case_[0] = kUpdateStmt; +} +inline void Node::clear_update_stmt() { + if (_internal_has_update_stmt()) { + if (GetArena() == nullptr) { + delete node_.update_stmt_; + } + clear_has_node(); + } +} +inline ::pg_query::UpdateStmt* Node::release_update_stmt() { + // @@protoc_insertion_point(field_release:pg_query.Node.update_stmt) + if (_internal_has_update_stmt()) { + clear_has_node(); + ::pg_query::UpdateStmt* temp = node_.update_stmt_; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + node_.update_stmt_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline const ::pg_query::UpdateStmt& Node::_internal_update_stmt() const { + return _internal_has_update_stmt() + ? *node_.update_stmt_ + : reinterpret_cast< ::pg_query::UpdateStmt&>(::pg_query::_UpdateStmt_default_instance_); +} +inline const ::pg_query::UpdateStmt& Node::update_stmt() const { + // @@protoc_insertion_point(field_get:pg_query.Node.update_stmt) + return _internal_update_stmt(); +} +inline ::pg_query::UpdateStmt* Node::unsafe_arena_release_update_stmt() { + // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.update_stmt) + if (_internal_has_update_stmt()) { + clear_has_node(); + ::pg_query::UpdateStmt* temp = node_.update_stmt_; + node_.update_stmt_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline void Node::unsafe_arena_set_allocated_update_stmt(::pg_query::UpdateStmt* update_stmt) { + clear_node(); + if (update_stmt) { + set_has_update_stmt(); + node_.update_stmt_ = update_stmt; + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.update_stmt) +} +inline ::pg_query::UpdateStmt* Node::_internal_mutable_update_stmt() { + if (!_internal_has_update_stmt()) { + clear_node(); + set_has_update_stmt(); + node_.update_stmt_ = CreateMaybeMessage< ::pg_query::UpdateStmt >(GetArena()); + } + return node_.update_stmt_; +} +inline ::pg_query::UpdateStmt* Node::mutable_update_stmt() { + // @@protoc_insertion_point(field_mutable:pg_query.Node.update_stmt) + return _internal_mutable_update_stmt(); +} + +// .pg_query.SelectStmt select_stmt = 57 [json_name = "SelectStmt"]; +inline bool Node::_internal_has_select_stmt() const { + return node_case() == kSelectStmt; +} +inline bool Node::has_select_stmt() const { + return _internal_has_select_stmt(); +} +inline void Node::set_has_select_stmt() { + _oneof_case_[0] = kSelectStmt; +} +inline void Node::clear_select_stmt() { + if (_internal_has_select_stmt()) { + if (GetArena() == nullptr) { + delete node_.select_stmt_; + } + clear_has_node(); + } +} +inline ::pg_query::SelectStmt* Node::release_select_stmt() { + // @@protoc_insertion_point(field_release:pg_query.Node.select_stmt) + if (_internal_has_select_stmt()) { + clear_has_node(); + ::pg_query::SelectStmt* temp = node_.select_stmt_; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + node_.select_stmt_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline const ::pg_query::SelectStmt& Node::_internal_select_stmt() const { + return _internal_has_select_stmt() + ? *node_.select_stmt_ + : reinterpret_cast< ::pg_query::SelectStmt&>(::pg_query::_SelectStmt_default_instance_); +} +inline const ::pg_query::SelectStmt& Node::select_stmt() const { + // @@protoc_insertion_point(field_get:pg_query.Node.select_stmt) + return _internal_select_stmt(); +} +inline ::pg_query::SelectStmt* Node::unsafe_arena_release_select_stmt() { + // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.select_stmt) + if (_internal_has_select_stmt()) { + clear_has_node(); + ::pg_query::SelectStmt* temp = node_.select_stmt_; + node_.select_stmt_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline void Node::unsafe_arena_set_allocated_select_stmt(::pg_query::SelectStmt* select_stmt) { + clear_node(); + if (select_stmt) { + set_has_select_stmt(); + node_.select_stmt_ = select_stmt; + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.select_stmt) +} +inline ::pg_query::SelectStmt* Node::_internal_mutable_select_stmt() { + if (!_internal_has_select_stmt()) { + clear_node(); + set_has_select_stmt(); + node_.select_stmt_ = CreateMaybeMessage< ::pg_query::SelectStmt >(GetArena()); + } + return node_.select_stmt_; +} +inline ::pg_query::SelectStmt* Node::mutable_select_stmt() { + // @@protoc_insertion_point(field_mutable:pg_query.Node.select_stmt) + return _internal_mutable_select_stmt(); +} + +// .pg_query.AlterTableStmt alter_table_stmt = 58 [json_name = "AlterTableStmt"]; +inline bool Node::_internal_has_alter_table_stmt() const { + return node_case() == kAlterTableStmt; +} +inline bool Node::has_alter_table_stmt() const { + return _internal_has_alter_table_stmt(); +} +inline void Node::set_has_alter_table_stmt() { + _oneof_case_[0] = kAlterTableStmt; +} +inline void Node::clear_alter_table_stmt() { + if (_internal_has_alter_table_stmt()) { + if (GetArena() == nullptr) { + delete node_.alter_table_stmt_; + } + clear_has_node(); + } +} +inline ::pg_query::AlterTableStmt* Node::release_alter_table_stmt() { + // @@protoc_insertion_point(field_release:pg_query.Node.alter_table_stmt) + if (_internal_has_alter_table_stmt()) { + clear_has_node(); + ::pg_query::AlterTableStmt* temp = node_.alter_table_stmt_; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + node_.alter_table_stmt_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline const ::pg_query::AlterTableStmt& Node::_internal_alter_table_stmt() const { + return _internal_has_alter_table_stmt() + ? *node_.alter_table_stmt_ + : reinterpret_cast< ::pg_query::AlterTableStmt&>(::pg_query::_AlterTableStmt_default_instance_); +} +inline const ::pg_query::AlterTableStmt& Node::alter_table_stmt() const { + // @@protoc_insertion_point(field_get:pg_query.Node.alter_table_stmt) + return _internal_alter_table_stmt(); +} +inline ::pg_query::AlterTableStmt* Node::unsafe_arena_release_alter_table_stmt() { + // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.alter_table_stmt) + if (_internal_has_alter_table_stmt()) { + clear_has_node(); + ::pg_query::AlterTableStmt* temp = node_.alter_table_stmt_; + node_.alter_table_stmt_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline void Node::unsafe_arena_set_allocated_alter_table_stmt(::pg_query::AlterTableStmt* alter_table_stmt) { + clear_node(); + if (alter_table_stmt) { + set_has_alter_table_stmt(); + node_.alter_table_stmt_ = alter_table_stmt; + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.alter_table_stmt) +} +inline ::pg_query::AlterTableStmt* Node::_internal_mutable_alter_table_stmt() { + if (!_internal_has_alter_table_stmt()) { + clear_node(); + set_has_alter_table_stmt(); + node_.alter_table_stmt_ = CreateMaybeMessage< ::pg_query::AlterTableStmt >(GetArena()); + } + return node_.alter_table_stmt_; +} +inline ::pg_query::AlterTableStmt* Node::mutable_alter_table_stmt() { + // @@protoc_insertion_point(field_mutable:pg_query.Node.alter_table_stmt) + return _internal_mutable_alter_table_stmt(); +} + +// .pg_query.AlterTableCmd alter_table_cmd = 59 [json_name = "AlterTableCmd"]; +inline bool Node::_internal_has_alter_table_cmd() const { + return node_case() == kAlterTableCmd; +} +inline bool Node::has_alter_table_cmd() const { + return _internal_has_alter_table_cmd(); +} +inline void Node::set_has_alter_table_cmd() { + _oneof_case_[0] = kAlterTableCmd; +} +inline void Node::clear_alter_table_cmd() { + if (_internal_has_alter_table_cmd()) { + if (GetArena() == nullptr) { + delete node_.alter_table_cmd_; + } + clear_has_node(); + } +} +inline ::pg_query::AlterTableCmd* Node::release_alter_table_cmd() { + // @@protoc_insertion_point(field_release:pg_query.Node.alter_table_cmd) + if (_internal_has_alter_table_cmd()) { + clear_has_node(); + ::pg_query::AlterTableCmd* temp = node_.alter_table_cmd_; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + node_.alter_table_cmd_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline const ::pg_query::AlterTableCmd& Node::_internal_alter_table_cmd() const { + return _internal_has_alter_table_cmd() + ? *node_.alter_table_cmd_ + : reinterpret_cast< ::pg_query::AlterTableCmd&>(::pg_query::_AlterTableCmd_default_instance_); +} +inline const ::pg_query::AlterTableCmd& Node::alter_table_cmd() const { + // @@protoc_insertion_point(field_get:pg_query.Node.alter_table_cmd) + return _internal_alter_table_cmd(); +} +inline ::pg_query::AlterTableCmd* Node::unsafe_arena_release_alter_table_cmd() { + // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.alter_table_cmd) + if (_internal_has_alter_table_cmd()) { + clear_has_node(); + ::pg_query::AlterTableCmd* temp = node_.alter_table_cmd_; + node_.alter_table_cmd_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline void Node::unsafe_arena_set_allocated_alter_table_cmd(::pg_query::AlterTableCmd* alter_table_cmd) { + clear_node(); + if (alter_table_cmd) { + set_has_alter_table_cmd(); + node_.alter_table_cmd_ = alter_table_cmd; + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.alter_table_cmd) +} +inline ::pg_query::AlterTableCmd* Node::_internal_mutable_alter_table_cmd() { + if (!_internal_has_alter_table_cmd()) { + clear_node(); + set_has_alter_table_cmd(); + node_.alter_table_cmd_ = CreateMaybeMessage< ::pg_query::AlterTableCmd >(GetArena()); + } + return node_.alter_table_cmd_; +} +inline ::pg_query::AlterTableCmd* Node::mutable_alter_table_cmd() { + // @@protoc_insertion_point(field_mutable:pg_query.Node.alter_table_cmd) + return _internal_mutable_alter_table_cmd(); +} + +// .pg_query.AlterDomainStmt alter_domain_stmt = 60 [json_name = "AlterDomainStmt"]; +inline bool Node::_internal_has_alter_domain_stmt() const { + return node_case() == kAlterDomainStmt; +} +inline bool Node::has_alter_domain_stmt() const { + return _internal_has_alter_domain_stmt(); +} +inline void Node::set_has_alter_domain_stmt() { + _oneof_case_[0] = kAlterDomainStmt; +} +inline void Node::clear_alter_domain_stmt() { + if (_internal_has_alter_domain_stmt()) { + if (GetArena() == nullptr) { + delete node_.alter_domain_stmt_; + } + clear_has_node(); + } +} +inline ::pg_query::AlterDomainStmt* Node::release_alter_domain_stmt() { + // @@protoc_insertion_point(field_release:pg_query.Node.alter_domain_stmt) + if (_internal_has_alter_domain_stmt()) { + clear_has_node(); + ::pg_query::AlterDomainStmt* temp = node_.alter_domain_stmt_; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + node_.alter_domain_stmt_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline const ::pg_query::AlterDomainStmt& Node::_internal_alter_domain_stmt() const { + return _internal_has_alter_domain_stmt() + ? *node_.alter_domain_stmt_ + : reinterpret_cast< ::pg_query::AlterDomainStmt&>(::pg_query::_AlterDomainStmt_default_instance_); +} +inline const ::pg_query::AlterDomainStmt& Node::alter_domain_stmt() const { + // @@protoc_insertion_point(field_get:pg_query.Node.alter_domain_stmt) + return _internal_alter_domain_stmt(); +} +inline ::pg_query::AlterDomainStmt* Node::unsafe_arena_release_alter_domain_stmt() { + // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.alter_domain_stmt) + if (_internal_has_alter_domain_stmt()) { + clear_has_node(); + ::pg_query::AlterDomainStmt* temp = node_.alter_domain_stmt_; + node_.alter_domain_stmt_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline void Node::unsafe_arena_set_allocated_alter_domain_stmt(::pg_query::AlterDomainStmt* alter_domain_stmt) { + clear_node(); + if (alter_domain_stmt) { + set_has_alter_domain_stmt(); + node_.alter_domain_stmt_ = alter_domain_stmt; + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.alter_domain_stmt) +} +inline ::pg_query::AlterDomainStmt* Node::_internal_mutable_alter_domain_stmt() { + if (!_internal_has_alter_domain_stmt()) { + clear_node(); + set_has_alter_domain_stmt(); + node_.alter_domain_stmt_ = CreateMaybeMessage< ::pg_query::AlterDomainStmt >(GetArena()); + } + return node_.alter_domain_stmt_; +} +inline ::pg_query::AlterDomainStmt* Node::mutable_alter_domain_stmt() { + // @@protoc_insertion_point(field_mutable:pg_query.Node.alter_domain_stmt) + return _internal_mutable_alter_domain_stmt(); +} + +// .pg_query.SetOperationStmt set_operation_stmt = 61 [json_name = "SetOperationStmt"]; +inline bool Node::_internal_has_set_operation_stmt() const { + return node_case() == kSetOperationStmt; +} +inline bool Node::has_set_operation_stmt() const { + return _internal_has_set_operation_stmt(); +} +inline void Node::set_has_set_operation_stmt() { + _oneof_case_[0] = kSetOperationStmt; +} +inline void Node::clear_set_operation_stmt() { + if (_internal_has_set_operation_stmt()) { + if (GetArena() == nullptr) { + delete node_.set_operation_stmt_; + } + clear_has_node(); + } +} +inline ::pg_query::SetOperationStmt* Node::release_set_operation_stmt() { + // @@protoc_insertion_point(field_release:pg_query.Node.set_operation_stmt) + if (_internal_has_set_operation_stmt()) { + clear_has_node(); + ::pg_query::SetOperationStmt* temp = node_.set_operation_stmt_; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + node_.set_operation_stmt_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline const ::pg_query::SetOperationStmt& Node::_internal_set_operation_stmt() const { + return _internal_has_set_operation_stmt() + ? *node_.set_operation_stmt_ + : reinterpret_cast< ::pg_query::SetOperationStmt&>(::pg_query::_SetOperationStmt_default_instance_); +} +inline const ::pg_query::SetOperationStmt& Node::set_operation_stmt() const { + // @@protoc_insertion_point(field_get:pg_query.Node.set_operation_stmt) + return _internal_set_operation_stmt(); +} +inline ::pg_query::SetOperationStmt* Node::unsafe_arena_release_set_operation_stmt() { + // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.set_operation_stmt) + if (_internal_has_set_operation_stmt()) { + clear_has_node(); + ::pg_query::SetOperationStmt* temp = node_.set_operation_stmt_; + node_.set_operation_stmt_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline void Node::unsafe_arena_set_allocated_set_operation_stmt(::pg_query::SetOperationStmt* set_operation_stmt) { + clear_node(); + if (set_operation_stmt) { + set_has_set_operation_stmt(); + node_.set_operation_stmt_ = set_operation_stmt; + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.set_operation_stmt) +} +inline ::pg_query::SetOperationStmt* Node::_internal_mutable_set_operation_stmt() { + if (!_internal_has_set_operation_stmt()) { + clear_node(); + set_has_set_operation_stmt(); + node_.set_operation_stmt_ = CreateMaybeMessage< ::pg_query::SetOperationStmt >(GetArena()); + } + return node_.set_operation_stmt_; +} +inline ::pg_query::SetOperationStmt* Node::mutable_set_operation_stmt() { + // @@protoc_insertion_point(field_mutable:pg_query.Node.set_operation_stmt) + return _internal_mutable_set_operation_stmt(); +} + +// .pg_query.GrantStmt grant_stmt = 62 [json_name = "GrantStmt"]; +inline bool Node::_internal_has_grant_stmt() const { + return node_case() == kGrantStmt; +} +inline bool Node::has_grant_stmt() const { + return _internal_has_grant_stmt(); +} +inline void Node::set_has_grant_stmt() { + _oneof_case_[0] = kGrantStmt; +} +inline void Node::clear_grant_stmt() { + if (_internal_has_grant_stmt()) { + if (GetArena() == nullptr) { + delete node_.grant_stmt_; + } + clear_has_node(); + } +} +inline ::pg_query::GrantStmt* Node::release_grant_stmt() { + // @@protoc_insertion_point(field_release:pg_query.Node.grant_stmt) + if (_internal_has_grant_stmt()) { + clear_has_node(); + ::pg_query::GrantStmt* temp = node_.grant_stmt_; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + node_.grant_stmt_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline const ::pg_query::GrantStmt& Node::_internal_grant_stmt() const { + return _internal_has_grant_stmt() + ? *node_.grant_stmt_ + : reinterpret_cast< ::pg_query::GrantStmt&>(::pg_query::_GrantStmt_default_instance_); +} +inline const ::pg_query::GrantStmt& Node::grant_stmt() const { + // @@protoc_insertion_point(field_get:pg_query.Node.grant_stmt) + return _internal_grant_stmt(); +} +inline ::pg_query::GrantStmt* Node::unsafe_arena_release_grant_stmt() { + // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.grant_stmt) + if (_internal_has_grant_stmt()) { + clear_has_node(); + ::pg_query::GrantStmt* temp = node_.grant_stmt_; + node_.grant_stmt_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline void Node::unsafe_arena_set_allocated_grant_stmt(::pg_query::GrantStmt* grant_stmt) { + clear_node(); + if (grant_stmt) { + set_has_grant_stmt(); + node_.grant_stmt_ = grant_stmt; + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.grant_stmt) +} +inline ::pg_query::GrantStmt* Node::_internal_mutable_grant_stmt() { + if (!_internal_has_grant_stmt()) { + clear_node(); + set_has_grant_stmt(); + node_.grant_stmt_ = CreateMaybeMessage< ::pg_query::GrantStmt >(GetArena()); + } + return node_.grant_stmt_; +} +inline ::pg_query::GrantStmt* Node::mutable_grant_stmt() { + // @@protoc_insertion_point(field_mutable:pg_query.Node.grant_stmt) + return _internal_mutable_grant_stmt(); +} + +// .pg_query.GrantRoleStmt grant_role_stmt = 63 [json_name = "GrantRoleStmt"]; +inline bool Node::_internal_has_grant_role_stmt() const { + return node_case() == kGrantRoleStmt; +} +inline bool Node::has_grant_role_stmt() const { + return _internal_has_grant_role_stmt(); +} +inline void Node::set_has_grant_role_stmt() { + _oneof_case_[0] = kGrantRoleStmt; +} +inline void Node::clear_grant_role_stmt() { + if (_internal_has_grant_role_stmt()) { + if (GetArena() == nullptr) { + delete node_.grant_role_stmt_; + } + clear_has_node(); + } +} +inline ::pg_query::GrantRoleStmt* Node::release_grant_role_stmt() { + // @@protoc_insertion_point(field_release:pg_query.Node.grant_role_stmt) + if (_internal_has_grant_role_stmt()) { + clear_has_node(); + ::pg_query::GrantRoleStmt* temp = node_.grant_role_stmt_; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + node_.grant_role_stmt_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline const ::pg_query::GrantRoleStmt& Node::_internal_grant_role_stmt() const { + return _internal_has_grant_role_stmt() + ? *node_.grant_role_stmt_ + : reinterpret_cast< ::pg_query::GrantRoleStmt&>(::pg_query::_GrantRoleStmt_default_instance_); +} +inline const ::pg_query::GrantRoleStmt& Node::grant_role_stmt() const { + // @@protoc_insertion_point(field_get:pg_query.Node.grant_role_stmt) + return _internal_grant_role_stmt(); +} +inline ::pg_query::GrantRoleStmt* Node::unsafe_arena_release_grant_role_stmt() { + // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.grant_role_stmt) + if (_internal_has_grant_role_stmt()) { + clear_has_node(); + ::pg_query::GrantRoleStmt* temp = node_.grant_role_stmt_; + node_.grant_role_stmt_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline void Node::unsafe_arena_set_allocated_grant_role_stmt(::pg_query::GrantRoleStmt* grant_role_stmt) { + clear_node(); + if (grant_role_stmt) { + set_has_grant_role_stmt(); + node_.grant_role_stmt_ = grant_role_stmt; + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.grant_role_stmt) +} +inline ::pg_query::GrantRoleStmt* Node::_internal_mutable_grant_role_stmt() { + if (!_internal_has_grant_role_stmt()) { + clear_node(); + set_has_grant_role_stmt(); + node_.grant_role_stmt_ = CreateMaybeMessage< ::pg_query::GrantRoleStmt >(GetArena()); + } + return node_.grant_role_stmt_; +} +inline ::pg_query::GrantRoleStmt* Node::mutable_grant_role_stmt() { + // @@protoc_insertion_point(field_mutable:pg_query.Node.grant_role_stmt) + return _internal_mutable_grant_role_stmt(); +} + +// .pg_query.AlterDefaultPrivilegesStmt alter_default_privileges_stmt = 64 [json_name = "AlterDefaultPrivilegesStmt"]; +inline bool Node::_internal_has_alter_default_privileges_stmt() const { + return node_case() == kAlterDefaultPrivilegesStmt; +} +inline bool Node::has_alter_default_privileges_stmt() const { + return _internal_has_alter_default_privileges_stmt(); +} +inline void Node::set_has_alter_default_privileges_stmt() { + _oneof_case_[0] = kAlterDefaultPrivilegesStmt; +} +inline void Node::clear_alter_default_privileges_stmt() { + if (_internal_has_alter_default_privileges_stmt()) { + if (GetArena() == nullptr) { + delete node_.alter_default_privileges_stmt_; + } + clear_has_node(); + } +} +inline ::pg_query::AlterDefaultPrivilegesStmt* Node::release_alter_default_privileges_stmt() { + // @@protoc_insertion_point(field_release:pg_query.Node.alter_default_privileges_stmt) + if (_internal_has_alter_default_privileges_stmt()) { + clear_has_node(); + ::pg_query::AlterDefaultPrivilegesStmt* temp = node_.alter_default_privileges_stmt_; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + node_.alter_default_privileges_stmt_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline const ::pg_query::AlterDefaultPrivilegesStmt& Node::_internal_alter_default_privileges_stmt() const { + return _internal_has_alter_default_privileges_stmt() + ? *node_.alter_default_privileges_stmt_ + : reinterpret_cast< ::pg_query::AlterDefaultPrivilegesStmt&>(::pg_query::_AlterDefaultPrivilegesStmt_default_instance_); +} +inline const ::pg_query::AlterDefaultPrivilegesStmt& Node::alter_default_privileges_stmt() const { + // @@protoc_insertion_point(field_get:pg_query.Node.alter_default_privileges_stmt) + return _internal_alter_default_privileges_stmt(); +} +inline ::pg_query::AlterDefaultPrivilegesStmt* Node::unsafe_arena_release_alter_default_privileges_stmt() { + // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.alter_default_privileges_stmt) + if (_internal_has_alter_default_privileges_stmt()) { + clear_has_node(); + ::pg_query::AlterDefaultPrivilegesStmt* temp = node_.alter_default_privileges_stmt_; + node_.alter_default_privileges_stmt_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline void Node::unsafe_arena_set_allocated_alter_default_privileges_stmt(::pg_query::AlterDefaultPrivilegesStmt* alter_default_privileges_stmt) { + clear_node(); + if (alter_default_privileges_stmt) { + set_has_alter_default_privileges_stmt(); + node_.alter_default_privileges_stmt_ = alter_default_privileges_stmt; + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.alter_default_privileges_stmt) +} +inline ::pg_query::AlterDefaultPrivilegesStmt* Node::_internal_mutable_alter_default_privileges_stmt() { + if (!_internal_has_alter_default_privileges_stmt()) { + clear_node(); + set_has_alter_default_privileges_stmt(); + node_.alter_default_privileges_stmt_ = CreateMaybeMessage< ::pg_query::AlterDefaultPrivilegesStmt >(GetArena()); + } + return node_.alter_default_privileges_stmt_; +} +inline ::pg_query::AlterDefaultPrivilegesStmt* Node::mutable_alter_default_privileges_stmt() { + // @@protoc_insertion_point(field_mutable:pg_query.Node.alter_default_privileges_stmt) + return _internal_mutable_alter_default_privileges_stmt(); +} + +// .pg_query.ClosePortalStmt close_portal_stmt = 65 [json_name = "ClosePortalStmt"]; +inline bool Node::_internal_has_close_portal_stmt() const { + return node_case() == kClosePortalStmt; +} +inline bool Node::has_close_portal_stmt() const { + return _internal_has_close_portal_stmt(); +} +inline void Node::set_has_close_portal_stmt() { + _oneof_case_[0] = kClosePortalStmt; +} +inline void Node::clear_close_portal_stmt() { + if (_internal_has_close_portal_stmt()) { + if (GetArena() == nullptr) { + delete node_.close_portal_stmt_; + } + clear_has_node(); + } +} +inline ::pg_query::ClosePortalStmt* Node::release_close_portal_stmt() { + // @@protoc_insertion_point(field_release:pg_query.Node.close_portal_stmt) + if (_internal_has_close_portal_stmt()) { + clear_has_node(); + ::pg_query::ClosePortalStmt* temp = node_.close_portal_stmt_; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + node_.close_portal_stmt_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline const ::pg_query::ClosePortalStmt& Node::_internal_close_portal_stmt() const { + return _internal_has_close_portal_stmt() + ? *node_.close_portal_stmt_ + : reinterpret_cast< ::pg_query::ClosePortalStmt&>(::pg_query::_ClosePortalStmt_default_instance_); +} +inline const ::pg_query::ClosePortalStmt& Node::close_portal_stmt() const { + // @@protoc_insertion_point(field_get:pg_query.Node.close_portal_stmt) + return _internal_close_portal_stmt(); +} +inline ::pg_query::ClosePortalStmt* Node::unsafe_arena_release_close_portal_stmt() { + // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.close_portal_stmt) + if (_internal_has_close_portal_stmt()) { + clear_has_node(); + ::pg_query::ClosePortalStmt* temp = node_.close_portal_stmt_; + node_.close_portal_stmt_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline void Node::unsafe_arena_set_allocated_close_portal_stmt(::pg_query::ClosePortalStmt* close_portal_stmt) { + clear_node(); + if (close_portal_stmt) { + set_has_close_portal_stmt(); + node_.close_portal_stmt_ = close_portal_stmt; + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.close_portal_stmt) +} +inline ::pg_query::ClosePortalStmt* Node::_internal_mutable_close_portal_stmt() { + if (!_internal_has_close_portal_stmt()) { + clear_node(); + set_has_close_portal_stmt(); + node_.close_portal_stmt_ = CreateMaybeMessage< ::pg_query::ClosePortalStmt >(GetArena()); + } + return node_.close_portal_stmt_; +} +inline ::pg_query::ClosePortalStmt* Node::mutable_close_portal_stmt() { + // @@protoc_insertion_point(field_mutable:pg_query.Node.close_portal_stmt) + return _internal_mutable_close_portal_stmt(); +} + +// .pg_query.ClusterStmt cluster_stmt = 66 [json_name = "ClusterStmt"]; +inline bool Node::_internal_has_cluster_stmt() const { + return node_case() == kClusterStmt; +} +inline bool Node::has_cluster_stmt() const { + return _internal_has_cluster_stmt(); +} +inline void Node::set_has_cluster_stmt() { + _oneof_case_[0] = kClusterStmt; +} +inline void Node::clear_cluster_stmt() { + if (_internal_has_cluster_stmt()) { + if (GetArena() == nullptr) { + delete node_.cluster_stmt_; + } + clear_has_node(); + } +} +inline ::pg_query::ClusterStmt* Node::release_cluster_stmt() { + // @@protoc_insertion_point(field_release:pg_query.Node.cluster_stmt) + if (_internal_has_cluster_stmt()) { + clear_has_node(); + ::pg_query::ClusterStmt* temp = node_.cluster_stmt_; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + node_.cluster_stmt_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline const ::pg_query::ClusterStmt& Node::_internal_cluster_stmt() const { + return _internal_has_cluster_stmt() + ? *node_.cluster_stmt_ + : reinterpret_cast< ::pg_query::ClusterStmt&>(::pg_query::_ClusterStmt_default_instance_); +} +inline const ::pg_query::ClusterStmt& Node::cluster_stmt() const { + // @@protoc_insertion_point(field_get:pg_query.Node.cluster_stmt) + return _internal_cluster_stmt(); +} +inline ::pg_query::ClusterStmt* Node::unsafe_arena_release_cluster_stmt() { + // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.cluster_stmt) + if (_internal_has_cluster_stmt()) { + clear_has_node(); + ::pg_query::ClusterStmt* temp = node_.cluster_stmt_; + node_.cluster_stmt_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline void Node::unsafe_arena_set_allocated_cluster_stmt(::pg_query::ClusterStmt* cluster_stmt) { + clear_node(); + if (cluster_stmt) { + set_has_cluster_stmt(); + node_.cluster_stmt_ = cluster_stmt; + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.cluster_stmt) +} +inline ::pg_query::ClusterStmt* Node::_internal_mutable_cluster_stmt() { + if (!_internal_has_cluster_stmt()) { + clear_node(); + set_has_cluster_stmt(); + node_.cluster_stmt_ = CreateMaybeMessage< ::pg_query::ClusterStmt >(GetArena()); + } + return node_.cluster_stmt_; +} +inline ::pg_query::ClusterStmt* Node::mutable_cluster_stmt() { + // @@protoc_insertion_point(field_mutable:pg_query.Node.cluster_stmt) + return _internal_mutable_cluster_stmt(); +} + +// .pg_query.CopyStmt copy_stmt = 67 [json_name = "CopyStmt"]; +inline bool Node::_internal_has_copy_stmt() const { + return node_case() == kCopyStmt; +} +inline bool Node::has_copy_stmt() const { + return _internal_has_copy_stmt(); +} +inline void Node::set_has_copy_stmt() { + _oneof_case_[0] = kCopyStmt; +} +inline void Node::clear_copy_stmt() { + if (_internal_has_copy_stmt()) { + if (GetArena() == nullptr) { + delete node_.copy_stmt_; + } + clear_has_node(); + } +} +inline ::pg_query::CopyStmt* Node::release_copy_stmt() { + // @@protoc_insertion_point(field_release:pg_query.Node.copy_stmt) + if (_internal_has_copy_stmt()) { + clear_has_node(); + ::pg_query::CopyStmt* temp = node_.copy_stmt_; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + node_.copy_stmt_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline const ::pg_query::CopyStmt& Node::_internal_copy_stmt() const { + return _internal_has_copy_stmt() + ? *node_.copy_stmt_ + : reinterpret_cast< ::pg_query::CopyStmt&>(::pg_query::_CopyStmt_default_instance_); +} +inline const ::pg_query::CopyStmt& Node::copy_stmt() const { + // @@protoc_insertion_point(field_get:pg_query.Node.copy_stmt) + return _internal_copy_stmt(); +} +inline ::pg_query::CopyStmt* Node::unsafe_arena_release_copy_stmt() { + // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.copy_stmt) + if (_internal_has_copy_stmt()) { + clear_has_node(); + ::pg_query::CopyStmt* temp = node_.copy_stmt_; + node_.copy_stmt_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline void Node::unsafe_arena_set_allocated_copy_stmt(::pg_query::CopyStmt* copy_stmt) { + clear_node(); + if (copy_stmt) { + set_has_copy_stmt(); + node_.copy_stmt_ = copy_stmt; + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.copy_stmt) +} +inline ::pg_query::CopyStmt* Node::_internal_mutable_copy_stmt() { + if (!_internal_has_copy_stmt()) { + clear_node(); + set_has_copy_stmt(); + node_.copy_stmt_ = CreateMaybeMessage< ::pg_query::CopyStmt >(GetArena()); + } + return node_.copy_stmt_; +} +inline ::pg_query::CopyStmt* Node::mutable_copy_stmt() { + // @@protoc_insertion_point(field_mutable:pg_query.Node.copy_stmt) + return _internal_mutable_copy_stmt(); +} + +// .pg_query.CreateStmt create_stmt = 68 [json_name = "CreateStmt"]; +inline bool Node::_internal_has_create_stmt() const { + return node_case() == kCreateStmt; +} +inline bool Node::has_create_stmt() const { + return _internal_has_create_stmt(); +} +inline void Node::set_has_create_stmt() { + _oneof_case_[0] = kCreateStmt; +} +inline void Node::clear_create_stmt() { + if (_internal_has_create_stmt()) { + if (GetArena() == nullptr) { + delete node_.create_stmt_; + } + clear_has_node(); + } +} +inline ::pg_query::CreateStmt* Node::release_create_stmt() { + // @@protoc_insertion_point(field_release:pg_query.Node.create_stmt) + if (_internal_has_create_stmt()) { + clear_has_node(); + ::pg_query::CreateStmt* temp = node_.create_stmt_; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + node_.create_stmt_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline const ::pg_query::CreateStmt& Node::_internal_create_stmt() const { + return _internal_has_create_stmt() + ? *node_.create_stmt_ + : reinterpret_cast< ::pg_query::CreateStmt&>(::pg_query::_CreateStmt_default_instance_); +} +inline const ::pg_query::CreateStmt& Node::create_stmt() const { + // @@protoc_insertion_point(field_get:pg_query.Node.create_stmt) + return _internal_create_stmt(); +} +inline ::pg_query::CreateStmt* Node::unsafe_arena_release_create_stmt() { + // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.create_stmt) + if (_internal_has_create_stmt()) { + clear_has_node(); + ::pg_query::CreateStmt* temp = node_.create_stmt_; + node_.create_stmt_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline void Node::unsafe_arena_set_allocated_create_stmt(::pg_query::CreateStmt* create_stmt) { + clear_node(); + if (create_stmt) { + set_has_create_stmt(); + node_.create_stmt_ = create_stmt; + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.create_stmt) +} +inline ::pg_query::CreateStmt* Node::_internal_mutable_create_stmt() { + if (!_internal_has_create_stmt()) { + clear_node(); + set_has_create_stmt(); + node_.create_stmt_ = CreateMaybeMessage< ::pg_query::CreateStmt >(GetArena()); + } + return node_.create_stmt_; +} +inline ::pg_query::CreateStmt* Node::mutable_create_stmt() { + // @@protoc_insertion_point(field_mutable:pg_query.Node.create_stmt) + return _internal_mutable_create_stmt(); +} + +// .pg_query.DefineStmt define_stmt = 69 [json_name = "DefineStmt"]; +inline bool Node::_internal_has_define_stmt() const { + return node_case() == kDefineStmt; +} +inline bool Node::has_define_stmt() const { + return _internal_has_define_stmt(); +} +inline void Node::set_has_define_stmt() { + _oneof_case_[0] = kDefineStmt; +} +inline void Node::clear_define_stmt() { + if (_internal_has_define_stmt()) { + if (GetArena() == nullptr) { + delete node_.define_stmt_; + } + clear_has_node(); + } +} +inline ::pg_query::DefineStmt* Node::release_define_stmt() { + // @@protoc_insertion_point(field_release:pg_query.Node.define_stmt) + if (_internal_has_define_stmt()) { + clear_has_node(); + ::pg_query::DefineStmt* temp = node_.define_stmt_; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + node_.define_stmt_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline const ::pg_query::DefineStmt& Node::_internal_define_stmt() const { + return _internal_has_define_stmt() + ? *node_.define_stmt_ + : reinterpret_cast< ::pg_query::DefineStmt&>(::pg_query::_DefineStmt_default_instance_); +} +inline const ::pg_query::DefineStmt& Node::define_stmt() const { + // @@protoc_insertion_point(field_get:pg_query.Node.define_stmt) + return _internal_define_stmt(); +} +inline ::pg_query::DefineStmt* Node::unsafe_arena_release_define_stmt() { + // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.define_stmt) + if (_internal_has_define_stmt()) { + clear_has_node(); + ::pg_query::DefineStmt* temp = node_.define_stmt_; + node_.define_stmt_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline void Node::unsafe_arena_set_allocated_define_stmt(::pg_query::DefineStmt* define_stmt) { + clear_node(); + if (define_stmt) { + set_has_define_stmt(); + node_.define_stmt_ = define_stmt; + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.define_stmt) +} +inline ::pg_query::DefineStmt* Node::_internal_mutable_define_stmt() { + if (!_internal_has_define_stmt()) { + clear_node(); + set_has_define_stmt(); + node_.define_stmt_ = CreateMaybeMessage< ::pg_query::DefineStmt >(GetArena()); + } + return node_.define_stmt_; +} +inline ::pg_query::DefineStmt* Node::mutable_define_stmt() { + // @@protoc_insertion_point(field_mutable:pg_query.Node.define_stmt) + return _internal_mutable_define_stmt(); +} + +// .pg_query.DropStmt drop_stmt = 70 [json_name = "DropStmt"]; +inline bool Node::_internal_has_drop_stmt() const { + return node_case() == kDropStmt; +} +inline bool Node::has_drop_stmt() const { + return _internal_has_drop_stmt(); +} +inline void Node::set_has_drop_stmt() { + _oneof_case_[0] = kDropStmt; +} +inline void Node::clear_drop_stmt() { + if (_internal_has_drop_stmt()) { + if (GetArena() == nullptr) { + delete node_.drop_stmt_; + } + clear_has_node(); + } +} +inline ::pg_query::DropStmt* Node::release_drop_stmt() { + // @@protoc_insertion_point(field_release:pg_query.Node.drop_stmt) + if (_internal_has_drop_stmt()) { + clear_has_node(); + ::pg_query::DropStmt* temp = node_.drop_stmt_; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + node_.drop_stmt_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline const ::pg_query::DropStmt& Node::_internal_drop_stmt() const { + return _internal_has_drop_stmt() + ? *node_.drop_stmt_ + : reinterpret_cast< ::pg_query::DropStmt&>(::pg_query::_DropStmt_default_instance_); +} +inline const ::pg_query::DropStmt& Node::drop_stmt() const { + // @@protoc_insertion_point(field_get:pg_query.Node.drop_stmt) + return _internal_drop_stmt(); +} +inline ::pg_query::DropStmt* Node::unsafe_arena_release_drop_stmt() { + // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.drop_stmt) + if (_internal_has_drop_stmt()) { + clear_has_node(); + ::pg_query::DropStmt* temp = node_.drop_stmt_; + node_.drop_stmt_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline void Node::unsafe_arena_set_allocated_drop_stmt(::pg_query::DropStmt* drop_stmt) { + clear_node(); + if (drop_stmt) { + set_has_drop_stmt(); + node_.drop_stmt_ = drop_stmt; + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.drop_stmt) +} +inline ::pg_query::DropStmt* Node::_internal_mutable_drop_stmt() { + if (!_internal_has_drop_stmt()) { + clear_node(); + set_has_drop_stmt(); + node_.drop_stmt_ = CreateMaybeMessage< ::pg_query::DropStmt >(GetArena()); + } + return node_.drop_stmt_; +} +inline ::pg_query::DropStmt* Node::mutable_drop_stmt() { + // @@protoc_insertion_point(field_mutable:pg_query.Node.drop_stmt) + return _internal_mutable_drop_stmt(); +} + +// .pg_query.TruncateStmt truncate_stmt = 71 [json_name = "TruncateStmt"]; +inline bool Node::_internal_has_truncate_stmt() const { + return node_case() == kTruncateStmt; +} +inline bool Node::has_truncate_stmt() const { + return _internal_has_truncate_stmt(); +} +inline void Node::set_has_truncate_stmt() { + _oneof_case_[0] = kTruncateStmt; +} +inline void Node::clear_truncate_stmt() { + if (_internal_has_truncate_stmt()) { + if (GetArena() == nullptr) { + delete node_.truncate_stmt_; + } + clear_has_node(); + } +} +inline ::pg_query::TruncateStmt* Node::release_truncate_stmt() { + // @@protoc_insertion_point(field_release:pg_query.Node.truncate_stmt) + if (_internal_has_truncate_stmt()) { + clear_has_node(); + ::pg_query::TruncateStmt* temp = node_.truncate_stmt_; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + node_.truncate_stmt_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline const ::pg_query::TruncateStmt& Node::_internal_truncate_stmt() const { + return _internal_has_truncate_stmt() + ? *node_.truncate_stmt_ + : reinterpret_cast< ::pg_query::TruncateStmt&>(::pg_query::_TruncateStmt_default_instance_); +} +inline const ::pg_query::TruncateStmt& Node::truncate_stmt() const { + // @@protoc_insertion_point(field_get:pg_query.Node.truncate_stmt) + return _internal_truncate_stmt(); +} +inline ::pg_query::TruncateStmt* Node::unsafe_arena_release_truncate_stmt() { + // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.truncate_stmt) + if (_internal_has_truncate_stmt()) { + clear_has_node(); + ::pg_query::TruncateStmt* temp = node_.truncate_stmt_; + node_.truncate_stmt_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline void Node::unsafe_arena_set_allocated_truncate_stmt(::pg_query::TruncateStmt* truncate_stmt) { + clear_node(); + if (truncate_stmt) { + set_has_truncate_stmt(); + node_.truncate_stmt_ = truncate_stmt; + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.truncate_stmt) +} +inline ::pg_query::TruncateStmt* Node::_internal_mutable_truncate_stmt() { + if (!_internal_has_truncate_stmt()) { + clear_node(); + set_has_truncate_stmt(); + node_.truncate_stmt_ = CreateMaybeMessage< ::pg_query::TruncateStmt >(GetArena()); + } + return node_.truncate_stmt_; +} +inline ::pg_query::TruncateStmt* Node::mutable_truncate_stmt() { + // @@protoc_insertion_point(field_mutable:pg_query.Node.truncate_stmt) + return _internal_mutable_truncate_stmt(); +} + +// .pg_query.CommentStmt comment_stmt = 72 [json_name = "CommentStmt"]; +inline bool Node::_internal_has_comment_stmt() const { + return node_case() == kCommentStmt; +} +inline bool Node::has_comment_stmt() const { + return _internal_has_comment_stmt(); +} +inline void Node::set_has_comment_stmt() { + _oneof_case_[0] = kCommentStmt; +} +inline void Node::clear_comment_stmt() { + if (_internal_has_comment_stmt()) { + if (GetArena() == nullptr) { + delete node_.comment_stmt_; + } + clear_has_node(); + } +} +inline ::pg_query::CommentStmt* Node::release_comment_stmt() { + // @@protoc_insertion_point(field_release:pg_query.Node.comment_stmt) + if (_internal_has_comment_stmt()) { + clear_has_node(); + ::pg_query::CommentStmt* temp = node_.comment_stmt_; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + node_.comment_stmt_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline const ::pg_query::CommentStmt& Node::_internal_comment_stmt() const { + return _internal_has_comment_stmt() + ? *node_.comment_stmt_ + : reinterpret_cast< ::pg_query::CommentStmt&>(::pg_query::_CommentStmt_default_instance_); +} +inline const ::pg_query::CommentStmt& Node::comment_stmt() const { + // @@protoc_insertion_point(field_get:pg_query.Node.comment_stmt) + return _internal_comment_stmt(); +} +inline ::pg_query::CommentStmt* Node::unsafe_arena_release_comment_stmt() { + // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.comment_stmt) + if (_internal_has_comment_stmt()) { + clear_has_node(); + ::pg_query::CommentStmt* temp = node_.comment_stmt_; + node_.comment_stmt_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline void Node::unsafe_arena_set_allocated_comment_stmt(::pg_query::CommentStmt* comment_stmt) { + clear_node(); + if (comment_stmt) { + set_has_comment_stmt(); + node_.comment_stmt_ = comment_stmt; + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.comment_stmt) +} +inline ::pg_query::CommentStmt* Node::_internal_mutable_comment_stmt() { + if (!_internal_has_comment_stmt()) { + clear_node(); + set_has_comment_stmt(); + node_.comment_stmt_ = CreateMaybeMessage< ::pg_query::CommentStmt >(GetArena()); + } + return node_.comment_stmt_; +} +inline ::pg_query::CommentStmt* Node::mutable_comment_stmt() { + // @@protoc_insertion_point(field_mutable:pg_query.Node.comment_stmt) + return _internal_mutable_comment_stmt(); +} + +// .pg_query.FetchStmt fetch_stmt = 73 [json_name = "FetchStmt"]; +inline bool Node::_internal_has_fetch_stmt() const { + return node_case() == kFetchStmt; +} +inline bool Node::has_fetch_stmt() const { + return _internal_has_fetch_stmt(); +} +inline void Node::set_has_fetch_stmt() { + _oneof_case_[0] = kFetchStmt; +} +inline void Node::clear_fetch_stmt() { + if (_internal_has_fetch_stmt()) { + if (GetArena() == nullptr) { + delete node_.fetch_stmt_; + } + clear_has_node(); + } +} +inline ::pg_query::FetchStmt* Node::release_fetch_stmt() { + // @@protoc_insertion_point(field_release:pg_query.Node.fetch_stmt) + if (_internal_has_fetch_stmt()) { + clear_has_node(); + ::pg_query::FetchStmt* temp = node_.fetch_stmt_; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + node_.fetch_stmt_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline const ::pg_query::FetchStmt& Node::_internal_fetch_stmt() const { + return _internal_has_fetch_stmt() + ? *node_.fetch_stmt_ + : reinterpret_cast< ::pg_query::FetchStmt&>(::pg_query::_FetchStmt_default_instance_); +} +inline const ::pg_query::FetchStmt& Node::fetch_stmt() const { + // @@protoc_insertion_point(field_get:pg_query.Node.fetch_stmt) + return _internal_fetch_stmt(); +} +inline ::pg_query::FetchStmt* Node::unsafe_arena_release_fetch_stmt() { + // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.fetch_stmt) + if (_internal_has_fetch_stmt()) { + clear_has_node(); + ::pg_query::FetchStmt* temp = node_.fetch_stmt_; + node_.fetch_stmt_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline void Node::unsafe_arena_set_allocated_fetch_stmt(::pg_query::FetchStmt* fetch_stmt) { + clear_node(); + if (fetch_stmt) { + set_has_fetch_stmt(); + node_.fetch_stmt_ = fetch_stmt; + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.fetch_stmt) +} +inline ::pg_query::FetchStmt* Node::_internal_mutable_fetch_stmt() { + if (!_internal_has_fetch_stmt()) { + clear_node(); + set_has_fetch_stmt(); + node_.fetch_stmt_ = CreateMaybeMessage< ::pg_query::FetchStmt >(GetArena()); + } + return node_.fetch_stmt_; +} +inline ::pg_query::FetchStmt* Node::mutable_fetch_stmt() { + // @@protoc_insertion_point(field_mutable:pg_query.Node.fetch_stmt) + return _internal_mutable_fetch_stmt(); +} + +// .pg_query.IndexStmt index_stmt = 74 [json_name = "IndexStmt"]; +inline bool Node::_internal_has_index_stmt() const { + return node_case() == kIndexStmt; +} +inline bool Node::has_index_stmt() const { + return _internal_has_index_stmt(); +} +inline void Node::set_has_index_stmt() { + _oneof_case_[0] = kIndexStmt; +} +inline void Node::clear_index_stmt() { + if (_internal_has_index_stmt()) { + if (GetArena() == nullptr) { + delete node_.index_stmt_; + } + clear_has_node(); + } +} +inline ::pg_query::IndexStmt* Node::release_index_stmt() { + // @@protoc_insertion_point(field_release:pg_query.Node.index_stmt) + if (_internal_has_index_stmt()) { + clear_has_node(); + ::pg_query::IndexStmt* temp = node_.index_stmt_; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + node_.index_stmt_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline const ::pg_query::IndexStmt& Node::_internal_index_stmt() const { + return _internal_has_index_stmt() + ? *node_.index_stmt_ + : reinterpret_cast< ::pg_query::IndexStmt&>(::pg_query::_IndexStmt_default_instance_); +} +inline const ::pg_query::IndexStmt& Node::index_stmt() const { + // @@protoc_insertion_point(field_get:pg_query.Node.index_stmt) + return _internal_index_stmt(); +} +inline ::pg_query::IndexStmt* Node::unsafe_arena_release_index_stmt() { + // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.index_stmt) + if (_internal_has_index_stmt()) { + clear_has_node(); + ::pg_query::IndexStmt* temp = node_.index_stmt_; + node_.index_stmt_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline void Node::unsafe_arena_set_allocated_index_stmt(::pg_query::IndexStmt* index_stmt) { + clear_node(); + if (index_stmt) { + set_has_index_stmt(); + node_.index_stmt_ = index_stmt; + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.index_stmt) +} +inline ::pg_query::IndexStmt* Node::_internal_mutable_index_stmt() { + if (!_internal_has_index_stmt()) { + clear_node(); + set_has_index_stmt(); + node_.index_stmt_ = CreateMaybeMessage< ::pg_query::IndexStmt >(GetArena()); + } + return node_.index_stmt_; +} +inline ::pg_query::IndexStmt* Node::mutable_index_stmt() { + // @@protoc_insertion_point(field_mutable:pg_query.Node.index_stmt) + return _internal_mutable_index_stmt(); +} + +// .pg_query.CreateFunctionStmt create_function_stmt = 75 [json_name = "CreateFunctionStmt"]; +inline bool Node::_internal_has_create_function_stmt() const { + return node_case() == kCreateFunctionStmt; +} +inline bool Node::has_create_function_stmt() const { + return _internal_has_create_function_stmt(); +} +inline void Node::set_has_create_function_stmt() { + _oneof_case_[0] = kCreateFunctionStmt; +} +inline void Node::clear_create_function_stmt() { + if (_internal_has_create_function_stmt()) { + if (GetArena() == nullptr) { + delete node_.create_function_stmt_; + } + clear_has_node(); + } +} +inline ::pg_query::CreateFunctionStmt* Node::release_create_function_stmt() { + // @@protoc_insertion_point(field_release:pg_query.Node.create_function_stmt) + if (_internal_has_create_function_stmt()) { + clear_has_node(); + ::pg_query::CreateFunctionStmt* temp = node_.create_function_stmt_; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + node_.create_function_stmt_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline const ::pg_query::CreateFunctionStmt& Node::_internal_create_function_stmt() const { + return _internal_has_create_function_stmt() + ? *node_.create_function_stmt_ + : reinterpret_cast< ::pg_query::CreateFunctionStmt&>(::pg_query::_CreateFunctionStmt_default_instance_); +} +inline const ::pg_query::CreateFunctionStmt& Node::create_function_stmt() const { + // @@protoc_insertion_point(field_get:pg_query.Node.create_function_stmt) + return _internal_create_function_stmt(); +} +inline ::pg_query::CreateFunctionStmt* Node::unsafe_arena_release_create_function_stmt() { + // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.create_function_stmt) + if (_internal_has_create_function_stmt()) { + clear_has_node(); + ::pg_query::CreateFunctionStmt* temp = node_.create_function_stmt_; + node_.create_function_stmt_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline void Node::unsafe_arena_set_allocated_create_function_stmt(::pg_query::CreateFunctionStmt* create_function_stmt) { + clear_node(); + if (create_function_stmt) { + set_has_create_function_stmt(); + node_.create_function_stmt_ = create_function_stmt; + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.create_function_stmt) +} +inline ::pg_query::CreateFunctionStmt* Node::_internal_mutable_create_function_stmt() { + if (!_internal_has_create_function_stmt()) { + clear_node(); + set_has_create_function_stmt(); + node_.create_function_stmt_ = CreateMaybeMessage< ::pg_query::CreateFunctionStmt >(GetArena()); + } + return node_.create_function_stmt_; +} +inline ::pg_query::CreateFunctionStmt* Node::mutable_create_function_stmt() { + // @@protoc_insertion_point(field_mutable:pg_query.Node.create_function_stmt) + return _internal_mutable_create_function_stmt(); +} + +// .pg_query.AlterFunctionStmt alter_function_stmt = 76 [json_name = "AlterFunctionStmt"]; +inline bool Node::_internal_has_alter_function_stmt() const { + return node_case() == kAlterFunctionStmt; +} +inline bool Node::has_alter_function_stmt() const { + return _internal_has_alter_function_stmt(); +} +inline void Node::set_has_alter_function_stmt() { + _oneof_case_[0] = kAlterFunctionStmt; +} +inline void Node::clear_alter_function_stmt() { + if (_internal_has_alter_function_stmt()) { + if (GetArena() == nullptr) { + delete node_.alter_function_stmt_; + } + clear_has_node(); + } +} +inline ::pg_query::AlterFunctionStmt* Node::release_alter_function_stmt() { + // @@protoc_insertion_point(field_release:pg_query.Node.alter_function_stmt) + if (_internal_has_alter_function_stmt()) { + clear_has_node(); + ::pg_query::AlterFunctionStmt* temp = node_.alter_function_stmt_; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + node_.alter_function_stmt_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline const ::pg_query::AlterFunctionStmt& Node::_internal_alter_function_stmt() const { + return _internal_has_alter_function_stmt() + ? *node_.alter_function_stmt_ + : reinterpret_cast< ::pg_query::AlterFunctionStmt&>(::pg_query::_AlterFunctionStmt_default_instance_); +} +inline const ::pg_query::AlterFunctionStmt& Node::alter_function_stmt() const { + // @@protoc_insertion_point(field_get:pg_query.Node.alter_function_stmt) + return _internal_alter_function_stmt(); +} +inline ::pg_query::AlterFunctionStmt* Node::unsafe_arena_release_alter_function_stmt() { + // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.alter_function_stmt) + if (_internal_has_alter_function_stmt()) { + clear_has_node(); + ::pg_query::AlterFunctionStmt* temp = node_.alter_function_stmt_; + node_.alter_function_stmt_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline void Node::unsafe_arena_set_allocated_alter_function_stmt(::pg_query::AlterFunctionStmt* alter_function_stmt) { + clear_node(); + if (alter_function_stmt) { + set_has_alter_function_stmt(); + node_.alter_function_stmt_ = alter_function_stmt; + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.alter_function_stmt) +} +inline ::pg_query::AlterFunctionStmt* Node::_internal_mutable_alter_function_stmt() { + if (!_internal_has_alter_function_stmt()) { + clear_node(); + set_has_alter_function_stmt(); + node_.alter_function_stmt_ = CreateMaybeMessage< ::pg_query::AlterFunctionStmt >(GetArena()); + } + return node_.alter_function_stmt_; +} +inline ::pg_query::AlterFunctionStmt* Node::mutable_alter_function_stmt() { + // @@protoc_insertion_point(field_mutable:pg_query.Node.alter_function_stmt) + return _internal_mutable_alter_function_stmt(); +} + +// .pg_query.DoStmt do_stmt = 77 [json_name = "DoStmt"]; +inline bool Node::_internal_has_do_stmt() const { + return node_case() == kDoStmt; +} +inline bool Node::has_do_stmt() const { + return _internal_has_do_stmt(); +} +inline void Node::set_has_do_stmt() { + _oneof_case_[0] = kDoStmt; +} +inline void Node::clear_do_stmt() { + if (_internal_has_do_stmt()) { + if (GetArena() == nullptr) { + delete node_.do_stmt_; + } + clear_has_node(); + } +} +inline ::pg_query::DoStmt* Node::release_do_stmt() { + // @@protoc_insertion_point(field_release:pg_query.Node.do_stmt) + if (_internal_has_do_stmt()) { + clear_has_node(); + ::pg_query::DoStmt* temp = node_.do_stmt_; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + node_.do_stmt_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline const ::pg_query::DoStmt& Node::_internal_do_stmt() const { + return _internal_has_do_stmt() + ? *node_.do_stmt_ + : reinterpret_cast< ::pg_query::DoStmt&>(::pg_query::_DoStmt_default_instance_); +} +inline const ::pg_query::DoStmt& Node::do_stmt() const { + // @@protoc_insertion_point(field_get:pg_query.Node.do_stmt) + return _internal_do_stmt(); +} +inline ::pg_query::DoStmt* Node::unsafe_arena_release_do_stmt() { + // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.do_stmt) + if (_internal_has_do_stmt()) { + clear_has_node(); + ::pg_query::DoStmt* temp = node_.do_stmt_; + node_.do_stmt_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline void Node::unsafe_arena_set_allocated_do_stmt(::pg_query::DoStmt* do_stmt) { + clear_node(); + if (do_stmt) { + set_has_do_stmt(); + node_.do_stmt_ = do_stmt; + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.do_stmt) +} +inline ::pg_query::DoStmt* Node::_internal_mutable_do_stmt() { + if (!_internal_has_do_stmt()) { + clear_node(); + set_has_do_stmt(); + node_.do_stmt_ = CreateMaybeMessage< ::pg_query::DoStmt >(GetArena()); + } + return node_.do_stmt_; +} +inline ::pg_query::DoStmt* Node::mutable_do_stmt() { + // @@protoc_insertion_point(field_mutable:pg_query.Node.do_stmt) + return _internal_mutable_do_stmt(); +} + +// .pg_query.RenameStmt rename_stmt = 78 [json_name = "RenameStmt"]; +inline bool Node::_internal_has_rename_stmt() const { + return node_case() == kRenameStmt; +} +inline bool Node::has_rename_stmt() const { + return _internal_has_rename_stmt(); +} +inline void Node::set_has_rename_stmt() { + _oneof_case_[0] = kRenameStmt; +} +inline void Node::clear_rename_stmt() { + if (_internal_has_rename_stmt()) { + if (GetArena() == nullptr) { + delete node_.rename_stmt_; + } + clear_has_node(); + } +} +inline ::pg_query::RenameStmt* Node::release_rename_stmt() { + // @@protoc_insertion_point(field_release:pg_query.Node.rename_stmt) + if (_internal_has_rename_stmt()) { + clear_has_node(); + ::pg_query::RenameStmt* temp = node_.rename_stmt_; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + node_.rename_stmt_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline const ::pg_query::RenameStmt& Node::_internal_rename_stmt() const { + return _internal_has_rename_stmt() + ? *node_.rename_stmt_ + : reinterpret_cast< ::pg_query::RenameStmt&>(::pg_query::_RenameStmt_default_instance_); +} +inline const ::pg_query::RenameStmt& Node::rename_stmt() const { + // @@protoc_insertion_point(field_get:pg_query.Node.rename_stmt) + return _internal_rename_stmt(); +} +inline ::pg_query::RenameStmt* Node::unsafe_arena_release_rename_stmt() { + // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.rename_stmt) + if (_internal_has_rename_stmt()) { + clear_has_node(); + ::pg_query::RenameStmt* temp = node_.rename_stmt_; + node_.rename_stmt_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline void Node::unsafe_arena_set_allocated_rename_stmt(::pg_query::RenameStmt* rename_stmt) { + clear_node(); + if (rename_stmt) { + set_has_rename_stmt(); + node_.rename_stmt_ = rename_stmt; + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.rename_stmt) +} +inline ::pg_query::RenameStmt* Node::_internal_mutable_rename_stmt() { + if (!_internal_has_rename_stmt()) { + clear_node(); + set_has_rename_stmt(); + node_.rename_stmt_ = CreateMaybeMessage< ::pg_query::RenameStmt >(GetArena()); + } + return node_.rename_stmt_; +} +inline ::pg_query::RenameStmt* Node::mutable_rename_stmt() { + // @@protoc_insertion_point(field_mutable:pg_query.Node.rename_stmt) + return _internal_mutable_rename_stmt(); +} + +// .pg_query.RuleStmt rule_stmt = 79 [json_name = "RuleStmt"]; +inline bool Node::_internal_has_rule_stmt() const { + return node_case() == kRuleStmt; +} +inline bool Node::has_rule_stmt() const { + return _internal_has_rule_stmt(); +} +inline void Node::set_has_rule_stmt() { + _oneof_case_[0] = kRuleStmt; +} +inline void Node::clear_rule_stmt() { + if (_internal_has_rule_stmt()) { + if (GetArena() == nullptr) { + delete node_.rule_stmt_; + } + clear_has_node(); + } +} +inline ::pg_query::RuleStmt* Node::release_rule_stmt() { + // @@protoc_insertion_point(field_release:pg_query.Node.rule_stmt) + if (_internal_has_rule_stmt()) { + clear_has_node(); + ::pg_query::RuleStmt* temp = node_.rule_stmt_; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + node_.rule_stmt_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline const ::pg_query::RuleStmt& Node::_internal_rule_stmt() const { + return _internal_has_rule_stmt() + ? *node_.rule_stmt_ + : reinterpret_cast< ::pg_query::RuleStmt&>(::pg_query::_RuleStmt_default_instance_); +} +inline const ::pg_query::RuleStmt& Node::rule_stmt() const { + // @@protoc_insertion_point(field_get:pg_query.Node.rule_stmt) + return _internal_rule_stmt(); +} +inline ::pg_query::RuleStmt* Node::unsafe_arena_release_rule_stmt() { + // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.rule_stmt) + if (_internal_has_rule_stmt()) { + clear_has_node(); + ::pg_query::RuleStmt* temp = node_.rule_stmt_; + node_.rule_stmt_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline void Node::unsafe_arena_set_allocated_rule_stmt(::pg_query::RuleStmt* rule_stmt) { + clear_node(); + if (rule_stmt) { + set_has_rule_stmt(); + node_.rule_stmt_ = rule_stmt; + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.rule_stmt) +} +inline ::pg_query::RuleStmt* Node::_internal_mutable_rule_stmt() { + if (!_internal_has_rule_stmt()) { + clear_node(); + set_has_rule_stmt(); + node_.rule_stmt_ = CreateMaybeMessage< ::pg_query::RuleStmt >(GetArena()); + } + return node_.rule_stmt_; +} +inline ::pg_query::RuleStmt* Node::mutable_rule_stmt() { + // @@protoc_insertion_point(field_mutable:pg_query.Node.rule_stmt) + return _internal_mutable_rule_stmt(); +} + +// .pg_query.NotifyStmt notify_stmt = 80 [json_name = "NotifyStmt"]; +inline bool Node::_internal_has_notify_stmt() const { + return node_case() == kNotifyStmt; +} +inline bool Node::has_notify_stmt() const { + return _internal_has_notify_stmt(); +} +inline void Node::set_has_notify_stmt() { + _oneof_case_[0] = kNotifyStmt; +} +inline void Node::clear_notify_stmt() { + if (_internal_has_notify_stmt()) { + if (GetArena() == nullptr) { + delete node_.notify_stmt_; + } + clear_has_node(); + } +} +inline ::pg_query::NotifyStmt* Node::release_notify_stmt() { + // @@protoc_insertion_point(field_release:pg_query.Node.notify_stmt) + if (_internal_has_notify_stmt()) { + clear_has_node(); + ::pg_query::NotifyStmt* temp = node_.notify_stmt_; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + node_.notify_stmt_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline const ::pg_query::NotifyStmt& Node::_internal_notify_stmt() const { + return _internal_has_notify_stmt() + ? *node_.notify_stmt_ + : reinterpret_cast< ::pg_query::NotifyStmt&>(::pg_query::_NotifyStmt_default_instance_); +} +inline const ::pg_query::NotifyStmt& Node::notify_stmt() const { + // @@protoc_insertion_point(field_get:pg_query.Node.notify_stmt) + return _internal_notify_stmt(); +} +inline ::pg_query::NotifyStmt* Node::unsafe_arena_release_notify_stmt() { + // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.notify_stmt) + if (_internal_has_notify_stmt()) { + clear_has_node(); + ::pg_query::NotifyStmt* temp = node_.notify_stmt_; + node_.notify_stmt_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline void Node::unsafe_arena_set_allocated_notify_stmt(::pg_query::NotifyStmt* notify_stmt) { + clear_node(); + if (notify_stmt) { + set_has_notify_stmt(); + node_.notify_stmt_ = notify_stmt; + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.notify_stmt) +} +inline ::pg_query::NotifyStmt* Node::_internal_mutable_notify_stmt() { + if (!_internal_has_notify_stmt()) { + clear_node(); + set_has_notify_stmt(); + node_.notify_stmt_ = CreateMaybeMessage< ::pg_query::NotifyStmt >(GetArena()); + } + return node_.notify_stmt_; +} +inline ::pg_query::NotifyStmt* Node::mutable_notify_stmt() { + // @@protoc_insertion_point(field_mutable:pg_query.Node.notify_stmt) + return _internal_mutable_notify_stmt(); +} + +// .pg_query.ListenStmt listen_stmt = 81 [json_name = "ListenStmt"]; +inline bool Node::_internal_has_listen_stmt() const { + return node_case() == kListenStmt; +} +inline bool Node::has_listen_stmt() const { + return _internal_has_listen_stmt(); +} +inline void Node::set_has_listen_stmt() { + _oneof_case_[0] = kListenStmt; +} +inline void Node::clear_listen_stmt() { + if (_internal_has_listen_stmt()) { + if (GetArena() == nullptr) { + delete node_.listen_stmt_; + } + clear_has_node(); + } +} +inline ::pg_query::ListenStmt* Node::release_listen_stmt() { + // @@protoc_insertion_point(field_release:pg_query.Node.listen_stmt) + if (_internal_has_listen_stmt()) { + clear_has_node(); + ::pg_query::ListenStmt* temp = node_.listen_stmt_; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + node_.listen_stmt_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline const ::pg_query::ListenStmt& Node::_internal_listen_stmt() const { + return _internal_has_listen_stmt() + ? *node_.listen_stmt_ + : reinterpret_cast< ::pg_query::ListenStmt&>(::pg_query::_ListenStmt_default_instance_); +} +inline const ::pg_query::ListenStmt& Node::listen_stmt() const { + // @@protoc_insertion_point(field_get:pg_query.Node.listen_stmt) + return _internal_listen_stmt(); +} +inline ::pg_query::ListenStmt* Node::unsafe_arena_release_listen_stmt() { + // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.listen_stmt) + if (_internal_has_listen_stmt()) { + clear_has_node(); + ::pg_query::ListenStmt* temp = node_.listen_stmt_; + node_.listen_stmt_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline void Node::unsafe_arena_set_allocated_listen_stmt(::pg_query::ListenStmt* listen_stmt) { + clear_node(); + if (listen_stmt) { + set_has_listen_stmt(); + node_.listen_stmt_ = listen_stmt; + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.listen_stmt) +} +inline ::pg_query::ListenStmt* Node::_internal_mutable_listen_stmt() { + if (!_internal_has_listen_stmt()) { + clear_node(); + set_has_listen_stmt(); + node_.listen_stmt_ = CreateMaybeMessage< ::pg_query::ListenStmt >(GetArena()); + } + return node_.listen_stmt_; +} +inline ::pg_query::ListenStmt* Node::mutable_listen_stmt() { + // @@protoc_insertion_point(field_mutable:pg_query.Node.listen_stmt) + return _internal_mutable_listen_stmt(); +} + +// .pg_query.UnlistenStmt unlisten_stmt = 82 [json_name = "UnlistenStmt"]; +inline bool Node::_internal_has_unlisten_stmt() const { + return node_case() == kUnlistenStmt; +} +inline bool Node::has_unlisten_stmt() const { + return _internal_has_unlisten_stmt(); +} +inline void Node::set_has_unlisten_stmt() { + _oneof_case_[0] = kUnlistenStmt; +} +inline void Node::clear_unlisten_stmt() { + if (_internal_has_unlisten_stmt()) { + if (GetArena() == nullptr) { + delete node_.unlisten_stmt_; + } + clear_has_node(); + } +} +inline ::pg_query::UnlistenStmt* Node::release_unlisten_stmt() { + // @@protoc_insertion_point(field_release:pg_query.Node.unlisten_stmt) + if (_internal_has_unlisten_stmt()) { + clear_has_node(); + ::pg_query::UnlistenStmt* temp = node_.unlisten_stmt_; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + node_.unlisten_stmt_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline const ::pg_query::UnlistenStmt& Node::_internal_unlisten_stmt() const { + return _internal_has_unlisten_stmt() + ? *node_.unlisten_stmt_ + : reinterpret_cast< ::pg_query::UnlistenStmt&>(::pg_query::_UnlistenStmt_default_instance_); +} +inline const ::pg_query::UnlistenStmt& Node::unlisten_stmt() const { + // @@protoc_insertion_point(field_get:pg_query.Node.unlisten_stmt) + return _internal_unlisten_stmt(); +} +inline ::pg_query::UnlistenStmt* Node::unsafe_arena_release_unlisten_stmt() { + // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.unlisten_stmt) + if (_internal_has_unlisten_stmt()) { + clear_has_node(); + ::pg_query::UnlistenStmt* temp = node_.unlisten_stmt_; + node_.unlisten_stmt_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline void Node::unsafe_arena_set_allocated_unlisten_stmt(::pg_query::UnlistenStmt* unlisten_stmt) { + clear_node(); + if (unlisten_stmt) { + set_has_unlisten_stmt(); + node_.unlisten_stmt_ = unlisten_stmt; + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.unlisten_stmt) +} +inline ::pg_query::UnlistenStmt* Node::_internal_mutable_unlisten_stmt() { + if (!_internal_has_unlisten_stmt()) { + clear_node(); + set_has_unlisten_stmt(); + node_.unlisten_stmt_ = CreateMaybeMessage< ::pg_query::UnlistenStmt >(GetArena()); + } + return node_.unlisten_stmt_; +} +inline ::pg_query::UnlistenStmt* Node::mutable_unlisten_stmt() { + // @@protoc_insertion_point(field_mutable:pg_query.Node.unlisten_stmt) + return _internal_mutable_unlisten_stmt(); +} + +// .pg_query.TransactionStmt transaction_stmt = 83 [json_name = "TransactionStmt"]; +inline bool Node::_internal_has_transaction_stmt() const { + return node_case() == kTransactionStmt; +} +inline bool Node::has_transaction_stmt() const { + return _internal_has_transaction_stmt(); +} +inline void Node::set_has_transaction_stmt() { + _oneof_case_[0] = kTransactionStmt; +} +inline void Node::clear_transaction_stmt() { + if (_internal_has_transaction_stmt()) { + if (GetArena() == nullptr) { + delete node_.transaction_stmt_; + } + clear_has_node(); + } +} +inline ::pg_query::TransactionStmt* Node::release_transaction_stmt() { + // @@protoc_insertion_point(field_release:pg_query.Node.transaction_stmt) + if (_internal_has_transaction_stmt()) { + clear_has_node(); + ::pg_query::TransactionStmt* temp = node_.transaction_stmt_; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + node_.transaction_stmt_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline const ::pg_query::TransactionStmt& Node::_internal_transaction_stmt() const { + return _internal_has_transaction_stmt() + ? *node_.transaction_stmt_ + : reinterpret_cast< ::pg_query::TransactionStmt&>(::pg_query::_TransactionStmt_default_instance_); +} +inline const ::pg_query::TransactionStmt& Node::transaction_stmt() const { + // @@protoc_insertion_point(field_get:pg_query.Node.transaction_stmt) + return _internal_transaction_stmt(); +} +inline ::pg_query::TransactionStmt* Node::unsafe_arena_release_transaction_stmt() { + // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.transaction_stmt) + if (_internal_has_transaction_stmt()) { + clear_has_node(); + ::pg_query::TransactionStmt* temp = node_.transaction_stmt_; + node_.transaction_stmt_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline void Node::unsafe_arena_set_allocated_transaction_stmt(::pg_query::TransactionStmt* transaction_stmt) { + clear_node(); + if (transaction_stmt) { + set_has_transaction_stmt(); + node_.transaction_stmt_ = transaction_stmt; + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.transaction_stmt) +} +inline ::pg_query::TransactionStmt* Node::_internal_mutable_transaction_stmt() { + if (!_internal_has_transaction_stmt()) { + clear_node(); + set_has_transaction_stmt(); + node_.transaction_stmt_ = CreateMaybeMessage< ::pg_query::TransactionStmt >(GetArena()); + } + return node_.transaction_stmt_; +} +inline ::pg_query::TransactionStmt* Node::mutable_transaction_stmt() { + // @@protoc_insertion_point(field_mutable:pg_query.Node.transaction_stmt) + return _internal_mutable_transaction_stmt(); +} + +// .pg_query.ViewStmt view_stmt = 84 [json_name = "ViewStmt"]; +inline bool Node::_internal_has_view_stmt() const { + return node_case() == kViewStmt; +} +inline bool Node::has_view_stmt() const { + return _internal_has_view_stmt(); +} +inline void Node::set_has_view_stmt() { + _oneof_case_[0] = kViewStmt; +} +inline void Node::clear_view_stmt() { + if (_internal_has_view_stmt()) { + if (GetArena() == nullptr) { + delete node_.view_stmt_; + } + clear_has_node(); + } +} +inline ::pg_query::ViewStmt* Node::release_view_stmt() { + // @@protoc_insertion_point(field_release:pg_query.Node.view_stmt) + if (_internal_has_view_stmt()) { + clear_has_node(); + ::pg_query::ViewStmt* temp = node_.view_stmt_; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + node_.view_stmt_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline const ::pg_query::ViewStmt& Node::_internal_view_stmt() const { + return _internal_has_view_stmt() + ? *node_.view_stmt_ + : reinterpret_cast< ::pg_query::ViewStmt&>(::pg_query::_ViewStmt_default_instance_); +} +inline const ::pg_query::ViewStmt& Node::view_stmt() const { + // @@protoc_insertion_point(field_get:pg_query.Node.view_stmt) + return _internal_view_stmt(); +} +inline ::pg_query::ViewStmt* Node::unsafe_arena_release_view_stmt() { + // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.view_stmt) + if (_internal_has_view_stmt()) { + clear_has_node(); + ::pg_query::ViewStmt* temp = node_.view_stmt_; + node_.view_stmt_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline void Node::unsafe_arena_set_allocated_view_stmt(::pg_query::ViewStmt* view_stmt) { + clear_node(); + if (view_stmt) { + set_has_view_stmt(); + node_.view_stmt_ = view_stmt; + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.view_stmt) +} +inline ::pg_query::ViewStmt* Node::_internal_mutable_view_stmt() { + if (!_internal_has_view_stmt()) { + clear_node(); + set_has_view_stmt(); + node_.view_stmt_ = CreateMaybeMessage< ::pg_query::ViewStmt >(GetArena()); + } + return node_.view_stmt_; +} +inline ::pg_query::ViewStmt* Node::mutable_view_stmt() { + // @@protoc_insertion_point(field_mutable:pg_query.Node.view_stmt) + return _internal_mutable_view_stmt(); +} + +// .pg_query.LoadStmt load_stmt = 85 [json_name = "LoadStmt"]; +inline bool Node::_internal_has_load_stmt() const { + return node_case() == kLoadStmt; +} +inline bool Node::has_load_stmt() const { + return _internal_has_load_stmt(); +} +inline void Node::set_has_load_stmt() { + _oneof_case_[0] = kLoadStmt; +} +inline void Node::clear_load_stmt() { + if (_internal_has_load_stmt()) { + if (GetArena() == nullptr) { + delete node_.load_stmt_; + } + clear_has_node(); + } +} +inline ::pg_query::LoadStmt* Node::release_load_stmt() { + // @@protoc_insertion_point(field_release:pg_query.Node.load_stmt) + if (_internal_has_load_stmt()) { + clear_has_node(); + ::pg_query::LoadStmt* temp = node_.load_stmt_; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + node_.load_stmt_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline const ::pg_query::LoadStmt& Node::_internal_load_stmt() const { + return _internal_has_load_stmt() + ? *node_.load_stmt_ + : reinterpret_cast< ::pg_query::LoadStmt&>(::pg_query::_LoadStmt_default_instance_); +} +inline const ::pg_query::LoadStmt& Node::load_stmt() const { + // @@protoc_insertion_point(field_get:pg_query.Node.load_stmt) + return _internal_load_stmt(); +} +inline ::pg_query::LoadStmt* Node::unsafe_arena_release_load_stmt() { + // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.load_stmt) + if (_internal_has_load_stmt()) { + clear_has_node(); + ::pg_query::LoadStmt* temp = node_.load_stmt_; + node_.load_stmt_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline void Node::unsafe_arena_set_allocated_load_stmt(::pg_query::LoadStmt* load_stmt) { + clear_node(); + if (load_stmt) { + set_has_load_stmt(); + node_.load_stmt_ = load_stmt; + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.load_stmt) +} +inline ::pg_query::LoadStmt* Node::_internal_mutable_load_stmt() { + if (!_internal_has_load_stmt()) { + clear_node(); + set_has_load_stmt(); + node_.load_stmt_ = CreateMaybeMessage< ::pg_query::LoadStmt >(GetArena()); + } + return node_.load_stmt_; +} +inline ::pg_query::LoadStmt* Node::mutable_load_stmt() { + // @@protoc_insertion_point(field_mutable:pg_query.Node.load_stmt) + return _internal_mutable_load_stmt(); +} + +// .pg_query.CreateDomainStmt create_domain_stmt = 86 [json_name = "CreateDomainStmt"]; +inline bool Node::_internal_has_create_domain_stmt() const { + return node_case() == kCreateDomainStmt; +} +inline bool Node::has_create_domain_stmt() const { + return _internal_has_create_domain_stmt(); +} +inline void Node::set_has_create_domain_stmt() { + _oneof_case_[0] = kCreateDomainStmt; +} +inline void Node::clear_create_domain_stmt() { + if (_internal_has_create_domain_stmt()) { + if (GetArena() == nullptr) { + delete node_.create_domain_stmt_; + } + clear_has_node(); + } +} +inline ::pg_query::CreateDomainStmt* Node::release_create_domain_stmt() { + // @@protoc_insertion_point(field_release:pg_query.Node.create_domain_stmt) + if (_internal_has_create_domain_stmt()) { + clear_has_node(); + ::pg_query::CreateDomainStmt* temp = node_.create_domain_stmt_; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + node_.create_domain_stmt_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline const ::pg_query::CreateDomainStmt& Node::_internal_create_domain_stmt() const { + return _internal_has_create_domain_stmt() + ? *node_.create_domain_stmt_ + : reinterpret_cast< ::pg_query::CreateDomainStmt&>(::pg_query::_CreateDomainStmt_default_instance_); +} +inline const ::pg_query::CreateDomainStmt& Node::create_domain_stmt() const { + // @@protoc_insertion_point(field_get:pg_query.Node.create_domain_stmt) + return _internal_create_domain_stmt(); +} +inline ::pg_query::CreateDomainStmt* Node::unsafe_arena_release_create_domain_stmt() { + // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.create_domain_stmt) + if (_internal_has_create_domain_stmt()) { + clear_has_node(); + ::pg_query::CreateDomainStmt* temp = node_.create_domain_stmt_; + node_.create_domain_stmt_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline void Node::unsafe_arena_set_allocated_create_domain_stmt(::pg_query::CreateDomainStmt* create_domain_stmt) { + clear_node(); + if (create_domain_stmt) { + set_has_create_domain_stmt(); + node_.create_domain_stmt_ = create_domain_stmt; + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.create_domain_stmt) +} +inline ::pg_query::CreateDomainStmt* Node::_internal_mutable_create_domain_stmt() { + if (!_internal_has_create_domain_stmt()) { + clear_node(); + set_has_create_domain_stmt(); + node_.create_domain_stmt_ = CreateMaybeMessage< ::pg_query::CreateDomainStmt >(GetArena()); + } + return node_.create_domain_stmt_; +} +inline ::pg_query::CreateDomainStmt* Node::mutable_create_domain_stmt() { + // @@protoc_insertion_point(field_mutable:pg_query.Node.create_domain_stmt) + return _internal_mutable_create_domain_stmt(); +} + +// .pg_query.CreatedbStmt createdb_stmt = 87 [json_name = "CreatedbStmt"]; +inline bool Node::_internal_has_createdb_stmt() const { + return node_case() == kCreatedbStmt; +} +inline bool Node::has_createdb_stmt() const { + return _internal_has_createdb_stmt(); +} +inline void Node::set_has_createdb_stmt() { + _oneof_case_[0] = kCreatedbStmt; +} +inline void Node::clear_createdb_stmt() { + if (_internal_has_createdb_stmt()) { + if (GetArena() == nullptr) { + delete node_.createdb_stmt_; + } + clear_has_node(); + } +} +inline ::pg_query::CreatedbStmt* Node::release_createdb_stmt() { + // @@protoc_insertion_point(field_release:pg_query.Node.createdb_stmt) + if (_internal_has_createdb_stmt()) { + clear_has_node(); + ::pg_query::CreatedbStmt* temp = node_.createdb_stmt_; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + node_.createdb_stmt_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline const ::pg_query::CreatedbStmt& Node::_internal_createdb_stmt() const { + return _internal_has_createdb_stmt() + ? *node_.createdb_stmt_ + : reinterpret_cast< ::pg_query::CreatedbStmt&>(::pg_query::_CreatedbStmt_default_instance_); +} +inline const ::pg_query::CreatedbStmt& Node::createdb_stmt() const { + // @@protoc_insertion_point(field_get:pg_query.Node.createdb_stmt) + return _internal_createdb_stmt(); +} +inline ::pg_query::CreatedbStmt* Node::unsafe_arena_release_createdb_stmt() { + // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.createdb_stmt) + if (_internal_has_createdb_stmt()) { + clear_has_node(); + ::pg_query::CreatedbStmt* temp = node_.createdb_stmt_; + node_.createdb_stmt_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline void Node::unsafe_arena_set_allocated_createdb_stmt(::pg_query::CreatedbStmt* createdb_stmt) { + clear_node(); + if (createdb_stmt) { + set_has_createdb_stmt(); + node_.createdb_stmt_ = createdb_stmt; + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.createdb_stmt) +} +inline ::pg_query::CreatedbStmt* Node::_internal_mutable_createdb_stmt() { + if (!_internal_has_createdb_stmt()) { + clear_node(); + set_has_createdb_stmt(); + node_.createdb_stmt_ = CreateMaybeMessage< ::pg_query::CreatedbStmt >(GetArena()); + } + return node_.createdb_stmt_; +} +inline ::pg_query::CreatedbStmt* Node::mutable_createdb_stmt() { + // @@protoc_insertion_point(field_mutable:pg_query.Node.createdb_stmt) + return _internal_mutable_createdb_stmt(); +} + +// .pg_query.DropdbStmt dropdb_stmt = 88 [json_name = "DropdbStmt"]; +inline bool Node::_internal_has_dropdb_stmt() const { + return node_case() == kDropdbStmt; +} +inline bool Node::has_dropdb_stmt() const { + return _internal_has_dropdb_stmt(); +} +inline void Node::set_has_dropdb_stmt() { + _oneof_case_[0] = kDropdbStmt; +} +inline void Node::clear_dropdb_stmt() { + if (_internal_has_dropdb_stmt()) { + if (GetArena() == nullptr) { + delete node_.dropdb_stmt_; + } + clear_has_node(); + } +} +inline ::pg_query::DropdbStmt* Node::release_dropdb_stmt() { + // @@protoc_insertion_point(field_release:pg_query.Node.dropdb_stmt) + if (_internal_has_dropdb_stmt()) { + clear_has_node(); + ::pg_query::DropdbStmt* temp = node_.dropdb_stmt_; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + node_.dropdb_stmt_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline const ::pg_query::DropdbStmt& Node::_internal_dropdb_stmt() const { + return _internal_has_dropdb_stmt() + ? *node_.dropdb_stmt_ + : reinterpret_cast< ::pg_query::DropdbStmt&>(::pg_query::_DropdbStmt_default_instance_); +} +inline const ::pg_query::DropdbStmt& Node::dropdb_stmt() const { + // @@protoc_insertion_point(field_get:pg_query.Node.dropdb_stmt) + return _internal_dropdb_stmt(); +} +inline ::pg_query::DropdbStmt* Node::unsafe_arena_release_dropdb_stmt() { + // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.dropdb_stmt) + if (_internal_has_dropdb_stmt()) { + clear_has_node(); + ::pg_query::DropdbStmt* temp = node_.dropdb_stmt_; + node_.dropdb_stmt_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline void Node::unsafe_arena_set_allocated_dropdb_stmt(::pg_query::DropdbStmt* dropdb_stmt) { + clear_node(); + if (dropdb_stmt) { + set_has_dropdb_stmt(); + node_.dropdb_stmt_ = dropdb_stmt; + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.dropdb_stmt) +} +inline ::pg_query::DropdbStmt* Node::_internal_mutable_dropdb_stmt() { + if (!_internal_has_dropdb_stmt()) { + clear_node(); + set_has_dropdb_stmt(); + node_.dropdb_stmt_ = CreateMaybeMessage< ::pg_query::DropdbStmt >(GetArena()); + } + return node_.dropdb_stmt_; +} +inline ::pg_query::DropdbStmt* Node::mutable_dropdb_stmt() { + // @@protoc_insertion_point(field_mutable:pg_query.Node.dropdb_stmt) + return _internal_mutable_dropdb_stmt(); +} + +// .pg_query.VacuumStmt vacuum_stmt = 89 [json_name = "VacuumStmt"]; +inline bool Node::_internal_has_vacuum_stmt() const { + return node_case() == kVacuumStmt; +} +inline bool Node::has_vacuum_stmt() const { + return _internal_has_vacuum_stmt(); +} +inline void Node::set_has_vacuum_stmt() { + _oneof_case_[0] = kVacuumStmt; +} +inline void Node::clear_vacuum_stmt() { + if (_internal_has_vacuum_stmt()) { + if (GetArena() == nullptr) { + delete node_.vacuum_stmt_; + } + clear_has_node(); + } +} +inline ::pg_query::VacuumStmt* Node::release_vacuum_stmt() { + // @@protoc_insertion_point(field_release:pg_query.Node.vacuum_stmt) + if (_internal_has_vacuum_stmt()) { + clear_has_node(); + ::pg_query::VacuumStmt* temp = node_.vacuum_stmt_; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + node_.vacuum_stmt_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline const ::pg_query::VacuumStmt& Node::_internal_vacuum_stmt() const { + return _internal_has_vacuum_stmt() + ? *node_.vacuum_stmt_ + : reinterpret_cast< ::pg_query::VacuumStmt&>(::pg_query::_VacuumStmt_default_instance_); +} +inline const ::pg_query::VacuumStmt& Node::vacuum_stmt() const { + // @@protoc_insertion_point(field_get:pg_query.Node.vacuum_stmt) + return _internal_vacuum_stmt(); +} +inline ::pg_query::VacuumStmt* Node::unsafe_arena_release_vacuum_stmt() { + // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.vacuum_stmt) + if (_internal_has_vacuum_stmt()) { + clear_has_node(); + ::pg_query::VacuumStmt* temp = node_.vacuum_stmt_; + node_.vacuum_stmt_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline void Node::unsafe_arena_set_allocated_vacuum_stmt(::pg_query::VacuumStmt* vacuum_stmt) { + clear_node(); + if (vacuum_stmt) { + set_has_vacuum_stmt(); + node_.vacuum_stmt_ = vacuum_stmt; + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.vacuum_stmt) +} +inline ::pg_query::VacuumStmt* Node::_internal_mutable_vacuum_stmt() { + if (!_internal_has_vacuum_stmt()) { + clear_node(); + set_has_vacuum_stmt(); + node_.vacuum_stmt_ = CreateMaybeMessage< ::pg_query::VacuumStmt >(GetArena()); + } + return node_.vacuum_stmt_; +} +inline ::pg_query::VacuumStmt* Node::mutable_vacuum_stmt() { + // @@protoc_insertion_point(field_mutable:pg_query.Node.vacuum_stmt) + return _internal_mutable_vacuum_stmt(); +} + +// .pg_query.ExplainStmt explain_stmt = 90 [json_name = "ExplainStmt"]; +inline bool Node::_internal_has_explain_stmt() const { + return node_case() == kExplainStmt; +} +inline bool Node::has_explain_stmt() const { + return _internal_has_explain_stmt(); +} +inline void Node::set_has_explain_stmt() { + _oneof_case_[0] = kExplainStmt; +} +inline void Node::clear_explain_stmt() { + if (_internal_has_explain_stmt()) { + if (GetArena() == nullptr) { + delete node_.explain_stmt_; + } + clear_has_node(); + } +} +inline ::pg_query::ExplainStmt* Node::release_explain_stmt() { + // @@protoc_insertion_point(field_release:pg_query.Node.explain_stmt) + if (_internal_has_explain_stmt()) { + clear_has_node(); + ::pg_query::ExplainStmt* temp = node_.explain_stmt_; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + node_.explain_stmt_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline const ::pg_query::ExplainStmt& Node::_internal_explain_stmt() const { + return _internal_has_explain_stmt() + ? *node_.explain_stmt_ + : reinterpret_cast< ::pg_query::ExplainStmt&>(::pg_query::_ExplainStmt_default_instance_); +} +inline const ::pg_query::ExplainStmt& Node::explain_stmt() const { + // @@protoc_insertion_point(field_get:pg_query.Node.explain_stmt) + return _internal_explain_stmt(); +} +inline ::pg_query::ExplainStmt* Node::unsafe_arena_release_explain_stmt() { + // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.explain_stmt) + if (_internal_has_explain_stmt()) { + clear_has_node(); + ::pg_query::ExplainStmt* temp = node_.explain_stmt_; + node_.explain_stmt_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline void Node::unsafe_arena_set_allocated_explain_stmt(::pg_query::ExplainStmt* explain_stmt) { + clear_node(); + if (explain_stmt) { + set_has_explain_stmt(); + node_.explain_stmt_ = explain_stmt; + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.explain_stmt) +} +inline ::pg_query::ExplainStmt* Node::_internal_mutable_explain_stmt() { + if (!_internal_has_explain_stmt()) { + clear_node(); + set_has_explain_stmt(); + node_.explain_stmt_ = CreateMaybeMessage< ::pg_query::ExplainStmt >(GetArena()); + } + return node_.explain_stmt_; +} +inline ::pg_query::ExplainStmt* Node::mutable_explain_stmt() { + // @@protoc_insertion_point(field_mutable:pg_query.Node.explain_stmt) + return _internal_mutable_explain_stmt(); +} + +// .pg_query.CreateTableAsStmt create_table_as_stmt = 91 [json_name = "CreateTableAsStmt"]; +inline bool Node::_internal_has_create_table_as_stmt() const { + return node_case() == kCreateTableAsStmt; +} +inline bool Node::has_create_table_as_stmt() const { + return _internal_has_create_table_as_stmt(); +} +inline void Node::set_has_create_table_as_stmt() { + _oneof_case_[0] = kCreateTableAsStmt; +} +inline void Node::clear_create_table_as_stmt() { + if (_internal_has_create_table_as_stmt()) { + if (GetArena() == nullptr) { + delete node_.create_table_as_stmt_; + } + clear_has_node(); + } +} +inline ::pg_query::CreateTableAsStmt* Node::release_create_table_as_stmt() { + // @@protoc_insertion_point(field_release:pg_query.Node.create_table_as_stmt) + if (_internal_has_create_table_as_stmt()) { + clear_has_node(); + ::pg_query::CreateTableAsStmt* temp = node_.create_table_as_stmt_; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + node_.create_table_as_stmt_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline const ::pg_query::CreateTableAsStmt& Node::_internal_create_table_as_stmt() const { + return _internal_has_create_table_as_stmt() + ? *node_.create_table_as_stmt_ + : reinterpret_cast< ::pg_query::CreateTableAsStmt&>(::pg_query::_CreateTableAsStmt_default_instance_); +} +inline const ::pg_query::CreateTableAsStmt& Node::create_table_as_stmt() const { + // @@protoc_insertion_point(field_get:pg_query.Node.create_table_as_stmt) + return _internal_create_table_as_stmt(); +} +inline ::pg_query::CreateTableAsStmt* Node::unsafe_arena_release_create_table_as_stmt() { + // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.create_table_as_stmt) + if (_internal_has_create_table_as_stmt()) { + clear_has_node(); + ::pg_query::CreateTableAsStmt* temp = node_.create_table_as_stmt_; + node_.create_table_as_stmt_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline void Node::unsafe_arena_set_allocated_create_table_as_stmt(::pg_query::CreateTableAsStmt* create_table_as_stmt) { + clear_node(); + if (create_table_as_stmt) { + set_has_create_table_as_stmt(); + node_.create_table_as_stmt_ = create_table_as_stmt; + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.create_table_as_stmt) +} +inline ::pg_query::CreateTableAsStmt* Node::_internal_mutable_create_table_as_stmt() { + if (!_internal_has_create_table_as_stmt()) { + clear_node(); + set_has_create_table_as_stmt(); + node_.create_table_as_stmt_ = CreateMaybeMessage< ::pg_query::CreateTableAsStmt >(GetArena()); + } + return node_.create_table_as_stmt_; +} +inline ::pg_query::CreateTableAsStmt* Node::mutable_create_table_as_stmt() { + // @@protoc_insertion_point(field_mutable:pg_query.Node.create_table_as_stmt) + return _internal_mutable_create_table_as_stmt(); +} + +// .pg_query.CreateSeqStmt create_seq_stmt = 92 [json_name = "CreateSeqStmt"]; +inline bool Node::_internal_has_create_seq_stmt() const { + return node_case() == kCreateSeqStmt; +} +inline bool Node::has_create_seq_stmt() const { + return _internal_has_create_seq_stmt(); +} +inline void Node::set_has_create_seq_stmt() { + _oneof_case_[0] = kCreateSeqStmt; +} +inline void Node::clear_create_seq_stmt() { + if (_internal_has_create_seq_stmt()) { + if (GetArena() == nullptr) { + delete node_.create_seq_stmt_; + } + clear_has_node(); + } +} +inline ::pg_query::CreateSeqStmt* Node::release_create_seq_stmt() { + // @@protoc_insertion_point(field_release:pg_query.Node.create_seq_stmt) + if (_internal_has_create_seq_stmt()) { + clear_has_node(); + ::pg_query::CreateSeqStmt* temp = node_.create_seq_stmt_; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + node_.create_seq_stmt_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline const ::pg_query::CreateSeqStmt& Node::_internal_create_seq_stmt() const { + return _internal_has_create_seq_stmt() + ? *node_.create_seq_stmt_ + : reinterpret_cast< ::pg_query::CreateSeqStmt&>(::pg_query::_CreateSeqStmt_default_instance_); +} +inline const ::pg_query::CreateSeqStmt& Node::create_seq_stmt() const { + // @@protoc_insertion_point(field_get:pg_query.Node.create_seq_stmt) + return _internal_create_seq_stmt(); +} +inline ::pg_query::CreateSeqStmt* Node::unsafe_arena_release_create_seq_stmt() { + // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.create_seq_stmt) + if (_internal_has_create_seq_stmt()) { + clear_has_node(); + ::pg_query::CreateSeqStmt* temp = node_.create_seq_stmt_; + node_.create_seq_stmt_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline void Node::unsafe_arena_set_allocated_create_seq_stmt(::pg_query::CreateSeqStmt* create_seq_stmt) { + clear_node(); + if (create_seq_stmt) { + set_has_create_seq_stmt(); + node_.create_seq_stmt_ = create_seq_stmt; + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.create_seq_stmt) +} +inline ::pg_query::CreateSeqStmt* Node::_internal_mutable_create_seq_stmt() { + if (!_internal_has_create_seq_stmt()) { + clear_node(); + set_has_create_seq_stmt(); + node_.create_seq_stmt_ = CreateMaybeMessage< ::pg_query::CreateSeqStmt >(GetArena()); + } + return node_.create_seq_stmt_; +} +inline ::pg_query::CreateSeqStmt* Node::mutable_create_seq_stmt() { + // @@protoc_insertion_point(field_mutable:pg_query.Node.create_seq_stmt) + return _internal_mutable_create_seq_stmt(); +} + +// .pg_query.AlterSeqStmt alter_seq_stmt = 93 [json_name = "AlterSeqStmt"]; +inline bool Node::_internal_has_alter_seq_stmt() const { + return node_case() == kAlterSeqStmt; +} +inline bool Node::has_alter_seq_stmt() const { + return _internal_has_alter_seq_stmt(); +} +inline void Node::set_has_alter_seq_stmt() { + _oneof_case_[0] = kAlterSeqStmt; +} +inline void Node::clear_alter_seq_stmt() { + if (_internal_has_alter_seq_stmt()) { + if (GetArena() == nullptr) { + delete node_.alter_seq_stmt_; + } + clear_has_node(); + } +} +inline ::pg_query::AlterSeqStmt* Node::release_alter_seq_stmt() { + // @@protoc_insertion_point(field_release:pg_query.Node.alter_seq_stmt) + if (_internal_has_alter_seq_stmt()) { + clear_has_node(); + ::pg_query::AlterSeqStmt* temp = node_.alter_seq_stmt_; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + node_.alter_seq_stmt_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline const ::pg_query::AlterSeqStmt& Node::_internal_alter_seq_stmt() const { + return _internal_has_alter_seq_stmt() + ? *node_.alter_seq_stmt_ + : reinterpret_cast< ::pg_query::AlterSeqStmt&>(::pg_query::_AlterSeqStmt_default_instance_); +} +inline const ::pg_query::AlterSeqStmt& Node::alter_seq_stmt() const { + // @@protoc_insertion_point(field_get:pg_query.Node.alter_seq_stmt) + return _internal_alter_seq_stmt(); +} +inline ::pg_query::AlterSeqStmt* Node::unsafe_arena_release_alter_seq_stmt() { + // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.alter_seq_stmt) + if (_internal_has_alter_seq_stmt()) { + clear_has_node(); + ::pg_query::AlterSeqStmt* temp = node_.alter_seq_stmt_; + node_.alter_seq_stmt_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline void Node::unsafe_arena_set_allocated_alter_seq_stmt(::pg_query::AlterSeqStmt* alter_seq_stmt) { + clear_node(); + if (alter_seq_stmt) { + set_has_alter_seq_stmt(); + node_.alter_seq_stmt_ = alter_seq_stmt; + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.alter_seq_stmt) +} +inline ::pg_query::AlterSeqStmt* Node::_internal_mutable_alter_seq_stmt() { + if (!_internal_has_alter_seq_stmt()) { + clear_node(); + set_has_alter_seq_stmt(); + node_.alter_seq_stmt_ = CreateMaybeMessage< ::pg_query::AlterSeqStmt >(GetArena()); + } + return node_.alter_seq_stmt_; +} +inline ::pg_query::AlterSeqStmt* Node::mutable_alter_seq_stmt() { + // @@protoc_insertion_point(field_mutable:pg_query.Node.alter_seq_stmt) + return _internal_mutable_alter_seq_stmt(); +} + +// .pg_query.VariableSetStmt variable_set_stmt = 94 [json_name = "VariableSetStmt"]; +inline bool Node::_internal_has_variable_set_stmt() const { + return node_case() == kVariableSetStmt; +} +inline bool Node::has_variable_set_stmt() const { + return _internal_has_variable_set_stmt(); +} +inline void Node::set_has_variable_set_stmt() { + _oneof_case_[0] = kVariableSetStmt; +} +inline void Node::clear_variable_set_stmt() { + if (_internal_has_variable_set_stmt()) { + if (GetArena() == nullptr) { + delete node_.variable_set_stmt_; + } + clear_has_node(); + } +} +inline ::pg_query::VariableSetStmt* Node::release_variable_set_stmt() { + // @@protoc_insertion_point(field_release:pg_query.Node.variable_set_stmt) + if (_internal_has_variable_set_stmt()) { + clear_has_node(); + ::pg_query::VariableSetStmt* temp = node_.variable_set_stmt_; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + node_.variable_set_stmt_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline const ::pg_query::VariableSetStmt& Node::_internal_variable_set_stmt() const { + return _internal_has_variable_set_stmt() + ? *node_.variable_set_stmt_ + : reinterpret_cast< ::pg_query::VariableSetStmt&>(::pg_query::_VariableSetStmt_default_instance_); +} +inline const ::pg_query::VariableSetStmt& Node::variable_set_stmt() const { + // @@protoc_insertion_point(field_get:pg_query.Node.variable_set_stmt) + return _internal_variable_set_stmt(); +} +inline ::pg_query::VariableSetStmt* Node::unsafe_arena_release_variable_set_stmt() { + // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.variable_set_stmt) + if (_internal_has_variable_set_stmt()) { + clear_has_node(); + ::pg_query::VariableSetStmt* temp = node_.variable_set_stmt_; + node_.variable_set_stmt_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline void Node::unsafe_arena_set_allocated_variable_set_stmt(::pg_query::VariableSetStmt* variable_set_stmt) { + clear_node(); + if (variable_set_stmt) { + set_has_variable_set_stmt(); + node_.variable_set_stmt_ = variable_set_stmt; + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.variable_set_stmt) +} +inline ::pg_query::VariableSetStmt* Node::_internal_mutable_variable_set_stmt() { + if (!_internal_has_variable_set_stmt()) { + clear_node(); + set_has_variable_set_stmt(); + node_.variable_set_stmt_ = CreateMaybeMessage< ::pg_query::VariableSetStmt >(GetArena()); + } + return node_.variable_set_stmt_; +} +inline ::pg_query::VariableSetStmt* Node::mutable_variable_set_stmt() { + // @@protoc_insertion_point(field_mutable:pg_query.Node.variable_set_stmt) + return _internal_mutable_variable_set_stmt(); +} + +// .pg_query.VariableShowStmt variable_show_stmt = 95 [json_name = "VariableShowStmt"]; +inline bool Node::_internal_has_variable_show_stmt() const { + return node_case() == kVariableShowStmt; +} +inline bool Node::has_variable_show_stmt() const { + return _internal_has_variable_show_stmt(); +} +inline void Node::set_has_variable_show_stmt() { + _oneof_case_[0] = kVariableShowStmt; +} +inline void Node::clear_variable_show_stmt() { + if (_internal_has_variable_show_stmt()) { + if (GetArena() == nullptr) { + delete node_.variable_show_stmt_; + } + clear_has_node(); + } +} +inline ::pg_query::VariableShowStmt* Node::release_variable_show_stmt() { + // @@protoc_insertion_point(field_release:pg_query.Node.variable_show_stmt) + if (_internal_has_variable_show_stmt()) { + clear_has_node(); + ::pg_query::VariableShowStmt* temp = node_.variable_show_stmt_; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + node_.variable_show_stmt_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline const ::pg_query::VariableShowStmt& Node::_internal_variable_show_stmt() const { + return _internal_has_variable_show_stmt() + ? *node_.variable_show_stmt_ + : reinterpret_cast< ::pg_query::VariableShowStmt&>(::pg_query::_VariableShowStmt_default_instance_); +} +inline const ::pg_query::VariableShowStmt& Node::variable_show_stmt() const { + // @@protoc_insertion_point(field_get:pg_query.Node.variable_show_stmt) + return _internal_variable_show_stmt(); +} +inline ::pg_query::VariableShowStmt* Node::unsafe_arena_release_variable_show_stmt() { + // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.variable_show_stmt) + if (_internal_has_variable_show_stmt()) { + clear_has_node(); + ::pg_query::VariableShowStmt* temp = node_.variable_show_stmt_; + node_.variable_show_stmt_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline void Node::unsafe_arena_set_allocated_variable_show_stmt(::pg_query::VariableShowStmt* variable_show_stmt) { + clear_node(); + if (variable_show_stmt) { + set_has_variable_show_stmt(); + node_.variable_show_stmt_ = variable_show_stmt; + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.variable_show_stmt) +} +inline ::pg_query::VariableShowStmt* Node::_internal_mutable_variable_show_stmt() { + if (!_internal_has_variable_show_stmt()) { + clear_node(); + set_has_variable_show_stmt(); + node_.variable_show_stmt_ = CreateMaybeMessage< ::pg_query::VariableShowStmt >(GetArena()); + } + return node_.variable_show_stmt_; +} +inline ::pg_query::VariableShowStmt* Node::mutable_variable_show_stmt() { + // @@protoc_insertion_point(field_mutable:pg_query.Node.variable_show_stmt) + return _internal_mutable_variable_show_stmt(); +} + +// .pg_query.DiscardStmt discard_stmt = 96 [json_name = "DiscardStmt"]; +inline bool Node::_internal_has_discard_stmt() const { + return node_case() == kDiscardStmt; +} +inline bool Node::has_discard_stmt() const { + return _internal_has_discard_stmt(); +} +inline void Node::set_has_discard_stmt() { + _oneof_case_[0] = kDiscardStmt; +} +inline void Node::clear_discard_stmt() { + if (_internal_has_discard_stmt()) { + if (GetArena() == nullptr) { + delete node_.discard_stmt_; + } + clear_has_node(); + } +} +inline ::pg_query::DiscardStmt* Node::release_discard_stmt() { + // @@protoc_insertion_point(field_release:pg_query.Node.discard_stmt) + if (_internal_has_discard_stmt()) { + clear_has_node(); + ::pg_query::DiscardStmt* temp = node_.discard_stmt_; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + node_.discard_stmt_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline const ::pg_query::DiscardStmt& Node::_internal_discard_stmt() const { + return _internal_has_discard_stmt() + ? *node_.discard_stmt_ + : reinterpret_cast< ::pg_query::DiscardStmt&>(::pg_query::_DiscardStmt_default_instance_); +} +inline const ::pg_query::DiscardStmt& Node::discard_stmt() const { + // @@protoc_insertion_point(field_get:pg_query.Node.discard_stmt) + return _internal_discard_stmt(); +} +inline ::pg_query::DiscardStmt* Node::unsafe_arena_release_discard_stmt() { + // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.discard_stmt) + if (_internal_has_discard_stmt()) { + clear_has_node(); + ::pg_query::DiscardStmt* temp = node_.discard_stmt_; + node_.discard_stmt_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline void Node::unsafe_arena_set_allocated_discard_stmt(::pg_query::DiscardStmt* discard_stmt) { + clear_node(); + if (discard_stmt) { + set_has_discard_stmt(); + node_.discard_stmt_ = discard_stmt; + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.discard_stmt) +} +inline ::pg_query::DiscardStmt* Node::_internal_mutable_discard_stmt() { + if (!_internal_has_discard_stmt()) { + clear_node(); + set_has_discard_stmt(); + node_.discard_stmt_ = CreateMaybeMessage< ::pg_query::DiscardStmt >(GetArena()); + } + return node_.discard_stmt_; +} +inline ::pg_query::DiscardStmt* Node::mutable_discard_stmt() { + // @@protoc_insertion_point(field_mutable:pg_query.Node.discard_stmt) + return _internal_mutable_discard_stmt(); +} + +// .pg_query.CreateTrigStmt create_trig_stmt = 97 [json_name = "CreateTrigStmt"]; +inline bool Node::_internal_has_create_trig_stmt() const { + return node_case() == kCreateTrigStmt; +} +inline bool Node::has_create_trig_stmt() const { + return _internal_has_create_trig_stmt(); +} +inline void Node::set_has_create_trig_stmt() { + _oneof_case_[0] = kCreateTrigStmt; +} +inline void Node::clear_create_trig_stmt() { + if (_internal_has_create_trig_stmt()) { + if (GetArena() == nullptr) { + delete node_.create_trig_stmt_; + } + clear_has_node(); + } +} +inline ::pg_query::CreateTrigStmt* Node::release_create_trig_stmt() { + // @@protoc_insertion_point(field_release:pg_query.Node.create_trig_stmt) + if (_internal_has_create_trig_stmt()) { + clear_has_node(); + ::pg_query::CreateTrigStmt* temp = node_.create_trig_stmt_; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + node_.create_trig_stmt_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline const ::pg_query::CreateTrigStmt& Node::_internal_create_trig_stmt() const { + return _internal_has_create_trig_stmt() + ? *node_.create_trig_stmt_ + : reinterpret_cast< ::pg_query::CreateTrigStmt&>(::pg_query::_CreateTrigStmt_default_instance_); +} +inline const ::pg_query::CreateTrigStmt& Node::create_trig_stmt() const { + // @@protoc_insertion_point(field_get:pg_query.Node.create_trig_stmt) + return _internal_create_trig_stmt(); +} +inline ::pg_query::CreateTrigStmt* Node::unsafe_arena_release_create_trig_stmt() { + // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.create_trig_stmt) + if (_internal_has_create_trig_stmt()) { + clear_has_node(); + ::pg_query::CreateTrigStmt* temp = node_.create_trig_stmt_; + node_.create_trig_stmt_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline void Node::unsafe_arena_set_allocated_create_trig_stmt(::pg_query::CreateTrigStmt* create_trig_stmt) { + clear_node(); + if (create_trig_stmt) { + set_has_create_trig_stmt(); + node_.create_trig_stmt_ = create_trig_stmt; + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.create_trig_stmt) +} +inline ::pg_query::CreateTrigStmt* Node::_internal_mutable_create_trig_stmt() { + if (!_internal_has_create_trig_stmt()) { + clear_node(); + set_has_create_trig_stmt(); + node_.create_trig_stmt_ = CreateMaybeMessage< ::pg_query::CreateTrigStmt >(GetArena()); + } + return node_.create_trig_stmt_; +} +inline ::pg_query::CreateTrigStmt* Node::mutable_create_trig_stmt() { + // @@protoc_insertion_point(field_mutable:pg_query.Node.create_trig_stmt) + return _internal_mutable_create_trig_stmt(); +} + +// .pg_query.CreatePLangStmt create_plang_stmt = 98 [json_name = "CreatePLangStmt"]; +inline bool Node::_internal_has_create_plang_stmt() const { + return node_case() == kCreatePlangStmt; +} +inline bool Node::has_create_plang_stmt() const { + return _internal_has_create_plang_stmt(); +} +inline void Node::set_has_create_plang_stmt() { + _oneof_case_[0] = kCreatePlangStmt; +} +inline void Node::clear_create_plang_stmt() { + if (_internal_has_create_plang_stmt()) { + if (GetArena() == nullptr) { + delete node_.create_plang_stmt_; + } + clear_has_node(); + } +} +inline ::pg_query::CreatePLangStmt* Node::release_create_plang_stmt() { + // @@protoc_insertion_point(field_release:pg_query.Node.create_plang_stmt) + if (_internal_has_create_plang_stmt()) { + clear_has_node(); + ::pg_query::CreatePLangStmt* temp = node_.create_plang_stmt_; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + node_.create_plang_stmt_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline const ::pg_query::CreatePLangStmt& Node::_internal_create_plang_stmt() const { + return _internal_has_create_plang_stmt() + ? *node_.create_plang_stmt_ + : reinterpret_cast< ::pg_query::CreatePLangStmt&>(::pg_query::_CreatePLangStmt_default_instance_); +} +inline const ::pg_query::CreatePLangStmt& Node::create_plang_stmt() const { + // @@protoc_insertion_point(field_get:pg_query.Node.create_plang_stmt) + return _internal_create_plang_stmt(); +} +inline ::pg_query::CreatePLangStmt* Node::unsafe_arena_release_create_plang_stmt() { + // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.create_plang_stmt) + if (_internal_has_create_plang_stmt()) { + clear_has_node(); + ::pg_query::CreatePLangStmt* temp = node_.create_plang_stmt_; + node_.create_plang_stmt_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline void Node::unsafe_arena_set_allocated_create_plang_stmt(::pg_query::CreatePLangStmt* create_plang_stmt) { + clear_node(); + if (create_plang_stmt) { + set_has_create_plang_stmt(); + node_.create_plang_stmt_ = create_plang_stmt; + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.create_plang_stmt) +} +inline ::pg_query::CreatePLangStmt* Node::_internal_mutable_create_plang_stmt() { + if (!_internal_has_create_plang_stmt()) { + clear_node(); + set_has_create_plang_stmt(); + node_.create_plang_stmt_ = CreateMaybeMessage< ::pg_query::CreatePLangStmt >(GetArena()); + } + return node_.create_plang_stmt_; +} +inline ::pg_query::CreatePLangStmt* Node::mutable_create_plang_stmt() { + // @@protoc_insertion_point(field_mutable:pg_query.Node.create_plang_stmt) + return _internal_mutable_create_plang_stmt(); +} + +// .pg_query.CreateRoleStmt create_role_stmt = 99 [json_name = "CreateRoleStmt"]; +inline bool Node::_internal_has_create_role_stmt() const { + return node_case() == kCreateRoleStmt; +} +inline bool Node::has_create_role_stmt() const { + return _internal_has_create_role_stmt(); +} +inline void Node::set_has_create_role_stmt() { + _oneof_case_[0] = kCreateRoleStmt; +} +inline void Node::clear_create_role_stmt() { + if (_internal_has_create_role_stmt()) { + if (GetArena() == nullptr) { + delete node_.create_role_stmt_; + } + clear_has_node(); + } +} +inline ::pg_query::CreateRoleStmt* Node::release_create_role_stmt() { + // @@protoc_insertion_point(field_release:pg_query.Node.create_role_stmt) + if (_internal_has_create_role_stmt()) { + clear_has_node(); + ::pg_query::CreateRoleStmt* temp = node_.create_role_stmt_; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + node_.create_role_stmt_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline const ::pg_query::CreateRoleStmt& Node::_internal_create_role_stmt() const { + return _internal_has_create_role_stmt() + ? *node_.create_role_stmt_ + : reinterpret_cast< ::pg_query::CreateRoleStmt&>(::pg_query::_CreateRoleStmt_default_instance_); +} +inline const ::pg_query::CreateRoleStmt& Node::create_role_stmt() const { + // @@protoc_insertion_point(field_get:pg_query.Node.create_role_stmt) + return _internal_create_role_stmt(); +} +inline ::pg_query::CreateRoleStmt* Node::unsafe_arena_release_create_role_stmt() { + // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.create_role_stmt) + if (_internal_has_create_role_stmt()) { + clear_has_node(); + ::pg_query::CreateRoleStmt* temp = node_.create_role_stmt_; + node_.create_role_stmt_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline void Node::unsafe_arena_set_allocated_create_role_stmt(::pg_query::CreateRoleStmt* create_role_stmt) { + clear_node(); + if (create_role_stmt) { + set_has_create_role_stmt(); + node_.create_role_stmt_ = create_role_stmt; + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.create_role_stmt) +} +inline ::pg_query::CreateRoleStmt* Node::_internal_mutable_create_role_stmt() { + if (!_internal_has_create_role_stmt()) { + clear_node(); + set_has_create_role_stmt(); + node_.create_role_stmt_ = CreateMaybeMessage< ::pg_query::CreateRoleStmt >(GetArena()); + } + return node_.create_role_stmt_; +} +inline ::pg_query::CreateRoleStmt* Node::mutable_create_role_stmt() { + // @@protoc_insertion_point(field_mutable:pg_query.Node.create_role_stmt) + return _internal_mutable_create_role_stmt(); +} + +// .pg_query.AlterRoleStmt alter_role_stmt = 100 [json_name = "AlterRoleStmt"]; +inline bool Node::_internal_has_alter_role_stmt() const { + return node_case() == kAlterRoleStmt; +} +inline bool Node::has_alter_role_stmt() const { + return _internal_has_alter_role_stmt(); +} +inline void Node::set_has_alter_role_stmt() { + _oneof_case_[0] = kAlterRoleStmt; +} +inline void Node::clear_alter_role_stmt() { + if (_internal_has_alter_role_stmt()) { + if (GetArena() == nullptr) { + delete node_.alter_role_stmt_; + } + clear_has_node(); + } +} +inline ::pg_query::AlterRoleStmt* Node::release_alter_role_stmt() { + // @@protoc_insertion_point(field_release:pg_query.Node.alter_role_stmt) + if (_internal_has_alter_role_stmt()) { + clear_has_node(); + ::pg_query::AlterRoleStmt* temp = node_.alter_role_stmt_; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + node_.alter_role_stmt_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline const ::pg_query::AlterRoleStmt& Node::_internal_alter_role_stmt() const { + return _internal_has_alter_role_stmt() + ? *node_.alter_role_stmt_ + : reinterpret_cast< ::pg_query::AlterRoleStmt&>(::pg_query::_AlterRoleStmt_default_instance_); +} +inline const ::pg_query::AlterRoleStmt& Node::alter_role_stmt() const { + // @@protoc_insertion_point(field_get:pg_query.Node.alter_role_stmt) + return _internal_alter_role_stmt(); +} +inline ::pg_query::AlterRoleStmt* Node::unsafe_arena_release_alter_role_stmt() { + // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.alter_role_stmt) + if (_internal_has_alter_role_stmt()) { + clear_has_node(); + ::pg_query::AlterRoleStmt* temp = node_.alter_role_stmt_; + node_.alter_role_stmt_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline void Node::unsafe_arena_set_allocated_alter_role_stmt(::pg_query::AlterRoleStmt* alter_role_stmt) { + clear_node(); + if (alter_role_stmt) { + set_has_alter_role_stmt(); + node_.alter_role_stmt_ = alter_role_stmt; + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.alter_role_stmt) +} +inline ::pg_query::AlterRoleStmt* Node::_internal_mutable_alter_role_stmt() { + if (!_internal_has_alter_role_stmt()) { + clear_node(); + set_has_alter_role_stmt(); + node_.alter_role_stmt_ = CreateMaybeMessage< ::pg_query::AlterRoleStmt >(GetArena()); + } + return node_.alter_role_stmt_; +} +inline ::pg_query::AlterRoleStmt* Node::mutable_alter_role_stmt() { + // @@protoc_insertion_point(field_mutable:pg_query.Node.alter_role_stmt) + return _internal_mutable_alter_role_stmt(); +} + +// .pg_query.DropRoleStmt drop_role_stmt = 101 [json_name = "DropRoleStmt"]; +inline bool Node::_internal_has_drop_role_stmt() const { + return node_case() == kDropRoleStmt; +} +inline bool Node::has_drop_role_stmt() const { + return _internal_has_drop_role_stmt(); +} +inline void Node::set_has_drop_role_stmt() { + _oneof_case_[0] = kDropRoleStmt; +} +inline void Node::clear_drop_role_stmt() { + if (_internal_has_drop_role_stmt()) { + if (GetArena() == nullptr) { + delete node_.drop_role_stmt_; + } + clear_has_node(); + } +} +inline ::pg_query::DropRoleStmt* Node::release_drop_role_stmt() { + // @@protoc_insertion_point(field_release:pg_query.Node.drop_role_stmt) + if (_internal_has_drop_role_stmt()) { + clear_has_node(); + ::pg_query::DropRoleStmt* temp = node_.drop_role_stmt_; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + node_.drop_role_stmt_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline const ::pg_query::DropRoleStmt& Node::_internal_drop_role_stmt() const { + return _internal_has_drop_role_stmt() + ? *node_.drop_role_stmt_ + : reinterpret_cast< ::pg_query::DropRoleStmt&>(::pg_query::_DropRoleStmt_default_instance_); +} +inline const ::pg_query::DropRoleStmt& Node::drop_role_stmt() const { + // @@protoc_insertion_point(field_get:pg_query.Node.drop_role_stmt) + return _internal_drop_role_stmt(); +} +inline ::pg_query::DropRoleStmt* Node::unsafe_arena_release_drop_role_stmt() { + // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.drop_role_stmt) + if (_internal_has_drop_role_stmt()) { + clear_has_node(); + ::pg_query::DropRoleStmt* temp = node_.drop_role_stmt_; + node_.drop_role_stmt_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline void Node::unsafe_arena_set_allocated_drop_role_stmt(::pg_query::DropRoleStmt* drop_role_stmt) { + clear_node(); + if (drop_role_stmt) { + set_has_drop_role_stmt(); + node_.drop_role_stmt_ = drop_role_stmt; + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.drop_role_stmt) +} +inline ::pg_query::DropRoleStmt* Node::_internal_mutable_drop_role_stmt() { + if (!_internal_has_drop_role_stmt()) { + clear_node(); + set_has_drop_role_stmt(); + node_.drop_role_stmt_ = CreateMaybeMessage< ::pg_query::DropRoleStmt >(GetArena()); + } + return node_.drop_role_stmt_; +} +inline ::pg_query::DropRoleStmt* Node::mutable_drop_role_stmt() { + // @@protoc_insertion_point(field_mutable:pg_query.Node.drop_role_stmt) + return _internal_mutable_drop_role_stmt(); +} + +// .pg_query.LockStmt lock_stmt = 102 [json_name = "LockStmt"]; +inline bool Node::_internal_has_lock_stmt() const { + return node_case() == kLockStmt; +} +inline bool Node::has_lock_stmt() const { + return _internal_has_lock_stmt(); +} +inline void Node::set_has_lock_stmt() { + _oneof_case_[0] = kLockStmt; +} +inline void Node::clear_lock_stmt() { + if (_internal_has_lock_stmt()) { + if (GetArena() == nullptr) { + delete node_.lock_stmt_; + } + clear_has_node(); + } +} +inline ::pg_query::LockStmt* Node::release_lock_stmt() { + // @@protoc_insertion_point(field_release:pg_query.Node.lock_stmt) + if (_internal_has_lock_stmt()) { + clear_has_node(); + ::pg_query::LockStmt* temp = node_.lock_stmt_; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + node_.lock_stmt_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline const ::pg_query::LockStmt& Node::_internal_lock_stmt() const { + return _internal_has_lock_stmt() + ? *node_.lock_stmt_ + : reinterpret_cast< ::pg_query::LockStmt&>(::pg_query::_LockStmt_default_instance_); +} +inline const ::pg_query::LockStmt& Node::lock_stmt() const { + // @@protoc_insertion_point(field_get:pg_query.Node.lock_stmt) + return _internal_lock_stmt(); +} +inline ::pg_query::LockStmt* Node::unsafe_arena_release_lock_stmt() { + // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.lock_stmt) + if (_internal_has_lock_stmt()) { + clear_has_node(); + ::pg_query::LockStmt* temp = node_.lock_stmt_; + node_.lock_stmt_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline void Node::unsafe_arena_set_allocated_lock_stmt(::pg_query::LockStmt* lock_stmt) { + clear_node(); + if (lock_stmt) { + set_has_lock_stmt(); + node_.lock_stmt_ = lock_stmt; + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.lock_stmt) +} +inline ::pg_query::LockStmt* Node::_internal_mutable_lock_stmt() { + if (!_internal_has_lock_stmt()) { + clear_node(); + set_has_lock_stmt(); + node_.lock_stmt_ = CreateMaybeMessage< ::pg_query::LockStmt >(GetArena()); + } + return node_.lock_stmt_; +} +inline ::pg_query::LockStmt* Node::mutable_lock_stmt() { + // @@protoc_insertion_point(field_mutable:pg_query.Node.lock_stmt) + return _internal_mutable_lock_stmt(); +} + +// .pg_query.ConstraintsSetStmt constraints_set_stmt = 103 [json_name = "ConstraintsSetStmt"]; +inline bool Node::_internal_has_constraints_set_stmt() const { + return node_case() == kConstraintsSetStmt; +} +inline bool Node::has_constraints_set_stmt() const { + return _internal_has_constraints_set_stmt(); +} +inline void Node::set_has_constraints_set_stmt() { + _oneof_case_[0] = kConstraintsSetStmt; +} +inline void Node::clear_constraints_set_stmt() { + if (_internal_has_constraints_set_stmt()) { + if (GetArena() == nullptr) { + delete node_.constraints_set_stmt_; + } + clear_has_node(); + } +} +inline ::pg_query::ConstraintsSetStmt* Node::release_constraints_set_stmt() { + // @@protoc_insertion_point(field_release:pg_query.Node.constraints_set_stmt) + if (_internal_has_constraints_set_stmt()) { + clear_has_node(); + ::pg_query::ConstraintsSetStmt* temp = node_.constraints_set_stmt_; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + node_.constraints_set_stmt_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline const ::pg_query::ConstraintsSetStmt& Node::_internal_constraints_set_stmt() const { + return _internal_has_constraints_set_stmt() + ? *node_.constraints_set_stmt_ + : reinterpret_cast< ::pg_query::ConstraintsSetStmt&>(::pg_query::_ConstraintsSetStmt_default_instance_); +} +inline const ::pg_query::ConstraintsSetStmt& Node::constraints_set_stmt() const { + // @@protoc_insertion_point(field_get:pg_query.Node.constraints_set_stmt) + return _internal_constraints_set_stmt(); +} +inline ::pg_query::ConstraintsSetStmt* Node::unsafe_arena_release_constraints_set_stmt() { + // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.constraints_set_stmt) + if (_internal_has_constraints_set_stmt()) { + clear_has_node(); + ::pg_query::ConstraintsSetStmt* temp = node_.constraints_set_stmt_; + node_.constraints_set_stmt_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline void Node::unsafe_arena_set_allocated_constraints_set_stmt(::pg_query::ConstraintsSetStmt* constraints_set_stmt) { + clear_node(); + if (constraints_set_stmt) { + set_has_constraints_set_stmt(); + node_.constraints_set_stmt_ = constraints_set_stmt; + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.constraints_set_stmt) +} +inline ::pg_query::ConstraintsSetStmt* Node::_internal_mutable_constraints_set_stmt() { + if (!_internal_has_constraints_set_stmt()) { + clear_node(); + set_has_constraints_set_stmt(); + node_.constraints_set_stmt_ = CreateMaybeMessage< ::pg_query::ConstraintsSetStmt >(GetArena()); + } + return node_.constraints_set_stmt_; +} +inline ::pg_query::ConstraintsSetStmt* Node::mutable_constraints_set_stmt() { + // @@protoc_insertion_point(field_mutable:pg_query.Node.constraints_set_stmt) + return _internal_mutable_constraints_set_stmt(); +} + +// .pg_query.ReindexStmt reindex_stmt = 104 [json_name = "ReindexStmt"]; +inline bool Node::_internal_has_reindex_stmt() const { + return node_case() == kReindexStmt; +} +inline bool Node::has_reindex_stmt() const { + return _internal_has_reindex_stmt(); +} +inline void Node::set_has_reindex_stmt() { + _oneof_case_[0] = kReindexStmt; +} +inline void Node::clear_reindex_stmt() { + if (_internal_has_reindex_stmt()) { + if (GetArena() == nullptr) { + delete node_.reindex_stmt_; + } + clear_has_node(); + } +} +inline ::pg_query::ReindexStmt* Node::release_reindex_stmt() { + // @@protoc_insertion_point(field_release:pg_query.Node.reindex_stmt) + if (_internal_has_reindex_stmt()) { + clear_has_node(); + ::pg_query::ReindexStmt* temp = node_.reindex_stmt_; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + node_.reindex_stmt_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline const ::pg_query::ReindexStmt& Node::_internal_reindex_stmt() const { + return _internal_has_reindex_stmt() + ? *node_.reindex_stmt_ + : reinterpret_cast< ::pg_query::ReindexStmt&>(::pg_query::_ReindexStmt_default_instance_); +} +inline const ::pg_query::ReindexStmt& Node::reindex_stmt() const { + // @@protoc_insertion_point(field_get:pg_query.Node.reindex_stmt) + return _internal_reindex_stmt(); +} +inline ::pg_query::ReindexStmt* Node::unsafe_arena_release_reindex_stmt() { + // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.reindex_stmt) + if (_internal_has_reindex_stmt()) { + clear_has_node(); + ::pg_query::ReindexStmt* temp = node_.reindex_stmt_; + node_.reindex_stmt_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline void Node::unsafe_arena_set_allocated_reindex_stmt(::pg_query::ReindexStmt* reindex_stmt) { + clear_node(); + if (reindex_stmt) { + set_has_reindex_stmt(); + node_.reindex_stmt_ = reindex_stmt; + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.reindex_stmt) +} +inline ::pg_query::ReindexStmt* Node::_internal_mutable_reindex_stmt() { + if (!_internal_has_reindex_stmt()) { + clear_node(); + set_has_reindex_stmt(); + node_.reindex_stmt_ = CreateMaybeMessage< ::pg_query::ReindexStmt >(GetArena()); + } + return node_.reindex_stmt_; +} +inline ::pg_query::ReindexStmt* Node::mutable_reindex_stmt() { + // @@protoc_insertion_point(field_mutable:pg_query.Node.reindex_stmt) + return _internal_mutable_reindex_stmt(); +} + +// .pg_query.CheckPointStmt check_point_stmt = 105 [json_name = "CheckPointStmt"]; +inline bool Node::_internal_has_check_point_stmt() const { + return node_case() == kCheckPointStmt; +} +inline bool Node::has_check_point_stmt() const { + return _internal_has_check_point_stmt(); +} +inline void Node::set_has_check_point_stmt() { + _oneof_case_[0] = kCheckPointStmt; +} +inline void Node::clear_check_point_stmt() { + if (_internal_has_check_point_stmt()) { + if (GetArena() == nullptr) { + delete node_.check_point_stmt_; + } + clear_has_node(); + } +} +inline ::pg_query::CheckPointStmt* Node::release_check_point_stmt() { + // @@protoc_insertion_point(field_release:pg_query.Node.check_point_stmt) + if (_internal_has_check_point_stmt()) { + clear_has_node(); + ::pg_query::CheckPointStmt* temp = node_.check_point_stmt_; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + node_.check_point_stmt_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline const ::pg_query::CheckPointStmt& Node::_internal_check_point_stmt() const { + return _internal_has_check_point_stmt() + ? *node_.check_point_stmt_ + : reinterpret_cast< ::pg_query::CheckPointStmt&>(::pg_query::_CheckPointStmt_default_instance_); +} +inline const ::pg_query::CheckPointStmt& Node::check_point_stmt() const { + // @@protoc_insertion_point(field_get:pg_query.Node.check_point_stmt) + return _internal_check_point_stmt(); +} +inline ::pg_query::CheckPointStmt* Node::unsafe_arena_release_check_point_stmt() { + // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.check_point_stmt) + if (_internal_has_check_point_stmt()) { + clear_has_node(); + ::pg_query::CheckPointStmt* temp = node_.check_point_stmt_; + node_.check_point_stmt_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline void Node::unsafe_arena_set_allocated_check_point_stmt(::pg_query::CheckPointStmt* check_point_stmt) { + clear_node(); + if (check_point_stmt) { + set_has_check_point_stmt(); + node_.check_point_stmt_ = check_point_stmt; + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.check_point_stmt) +} +inline ::pg_query::CheckPointStmt* Node::_internal_mutable_check_point_stmt() { + if (!_internal_has_check_point_stmt()) { + clear_node(); + set_has_check_point_stmt(); + node_.check_point_stmt_ = CreateMaybeMessage< ::pg_query::CheckPointStmt >(GetArena()); + } + return node_.check_point_stmt_; +} +inline ::pg_query::CheckPointStmt* Node::mutable_check_point_stmt() { + // @@protoc_insertion_point(field_mutable:pg_query.Node.check_point_stmt) + return _internal_mutable_check_point_stmt(); +} + +// .pg_query.CreateSchemaStmt create_schema_stmt = 106 [json_name = "CreateSchemaStmt"]; +inline bool Node::_internal_has_create_schema_stmt() const { + return node_case() == kCreateSchemaStmt; +} +inline bool Node::has_create_schema_stmt() const { + return _internal_has_create_schema_stmt(); +} +inline void Node::set_has_create_schema_stmt() { + _oneof_case_[0] = kCreateSchemaStmt; +} +inline void Node::clear_create_schema_stmt() { + if (_internal_has_create_schema_stmt()) { + if (GetArena() == nullptr) { + delete node_.create_schema_stmt_; + } + clear_has_node(); + } +} +inline ::pg_query::CreateSchemaStmt* Node::release_create_schema_stmt() { + // @@protoc_insertion_point(field_release:pg_query.Node.create_schema_stmt) + if (_internal_has_create_schema_stmt()) { + clear_has_node(); + ::pg_query::CreateSchemaStmt* temp = node_.create_schema_stmt_; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + node_.create_schema_stmt_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline const ::pg_query::CreateSchemaStmt& Node::_internal_create_schema_stmt() const { + return _internal_has_create_schema_stmt() + ? *node_.create_schema_stmt_ + : reinterpret_cast< ::pg_query::CreateSchemaStmt&>(::pg_query::_CreateSchemaStmt_default_instance_); +} +inline const ::pg_query::CreateSchemaStmt& Node::create_schema_stmt() const { + // @@protoc_insertion_point(field_get:pg_query.Node.create_schema_stmt) + return _internal_create_schema_stmt(); +} +inline ::pg_query::CreateSchemaStmt* Node::unsafe_arena_release_create_schema_stmt() { + // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.create_schema_stmt) + if (_internal_has_create_schema_stmt()) { + clear_has_node(); + ::pg_query::CreateSchemaStmt* temp = node_.create_schema_stmt_; + node_.create_schema_stmt_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline void Node::unsafe_arena_set_allocated_create_schema_stmt(::pg_query::CreateSchemaStmt* create_schema_stmt) { + clear_node(); + if (create_schema_stmt) { + set_has_create_schema_stmt(); + node_.create_schema_stmt_ = create_schema_stmt; + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.create_schema_stmt) +} +inline ::pg_query::CreateSchemaStmt* Node::_internal_mutable_create_schema_stmt() { + if (!_internal_has_create_schema_stmt()) { + clear_node(); + set_has_create_schema_stmt(); + node_.create_schema_stmt_ = CreateMaybeMessage< ::pg_query::CreateSchemaStmt >(GetArena()); + } + return node_.create_schema_stmt_; +} +inline ::pg_query::CreateSchemaStmt* Node::mutable_create_schema_stmt() { + // @@protoc_insertion_point(field_mutable:pg_query.Node.create_schema_stmt) + return _internal_mutable_create_schema_stmt(); +} + +// .pg_query.AlterDatabaseStmt alter_database_stmt = 107 [json_name = "AlterDatabaseStmt"]; +inline bool Node::_internal_has_alter_database_stmt() const { + return node_case() == kAlterDatabaseStmt; +} +inline bool Node::has_alter_database_stmt() const { + return _internal_has_alter_database_stmt(); +} +inline void Node::set_has_alter_database_stmt() { + _oneof_case_[0] = kAlterDatabaseStmt; +} +inline void Node::clear_alter_database_stmt() { + if (_internal_has_alter_database_stmt()) { + if (GetArena() == nullptr) { + delete node_.alter_database_stmt_; + } + clear_has_node(); + } +} +inline ::pg_query::AlterDatabaseStmt* Node::release_alter_database_stmt() { + // @@protoc_insertion_point(field_release:pg_query.Node.alter_database_stmt) + if (_internal_has_alter_database_stmt()) { + clear_has_node(); + ::pg_query::AlterDatabaseStmt* temp = node_.alter_database_stmt_; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + node_.alter_database_stmt_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline const ::pg_query::AlterDatabaseStmt& Node::_internal_alter_database_stmt() const { + return _internal_has_alter_database_stmt() + ? *node_.alter_database_stmt_ + : reinterpret_cast< ::pg_query::AlterDatabaseStmt&>(::pg_query::_AlterDatabaseStmt_default_instance_); +} +inline const ::pg_query::AlterDatabaseStmt& Node::alter_database_stmt() const { + // @@protoc_insertion_point(field_get:pg_query.Node.alter_database_stmt) + return _internal_alter_database_stmt(); +} +inline ::pg_query::AlterDatabaseStmt* Node::unsafe_arena_release_alter_database_stmt() { + // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.alter_database_stmt) + if (_internal_has_alter_database_stmt()) { + clear_has_node(); + ::pg_query::AlterDatabaseStmt* temp = node_.alter_database_stmt_; + node_.alter_database_stmt_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline void Node::unsafe_arena_set_allocated_alter_database_stmt(::pg_query::AlterDatabaseStmt* alter_database_stmt) { + clear_node(); + if (alter_database_stmt) { + set_has_alter_database_stmt(); + node_.alter_database_stmt_ = alter_database_stmt; + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.alter_database_stmt) +} +inline ::pg_query::AlterDatabaseStmt* Node::_internal_mutable_alter_database_stmt() { + if (!_internal_has_alter_database_stmt()) { + clear_node(); + set_has_alter_database_stmt(); + node_.alter_database_stmt_ = CreateMaybeMessage< ::pg_query::AlterDatabaseStmt >(GetArena()); + } + return node_.alter_database_stmt_; +} +inline ::pg_query::AlterDatabaseStmt* Node::mutable_alter_database_stmt() { + // @@protoc_insertion_point(field_mutable:pg_query.Node.alter_database_stmt) + return _internal_mutable_alter_database_stmt(); +} + +// .pg_query.AlterDatabaseSetStmt alter_database_set_stmt = 108 [json_name = "AlterDatabaseSetStmt"]; +inline bool Node::_internal_has_alter_database_set_stmt() const { + return node_case() == kAlterDatabaseSetStmt; +} +inline bool Node::has_alter_database_set_stmt() const { + return _internal_has_alter_database_set_stmt(); +} +inline void Node::set_has_alter_database_set_stmt() { + _oneof_case_[0] = kAlterDatabaseSetStmt; +} +inline void Node::clear_alter_database_set_stmt() { + if (_internal_has_alter_database_set_stmt()) { + if (GetArena() == nullptr) { + delete node_.alter_database_set_stmt_; + } + clear_has_node(); + } +} +inline ::pg_query::AlterDatabaseSetStmt* Node::release_alter_database_set_stmt() { + // @@protoc_insertion_point(field_release:pg_query.Node.alter_database_set_stmt) + if (_internal_has_alter_database_set_stmt()) { + clear_has_node(); + ::pg_query::AlterDatabaseSetStmt* temp = node_.alter_database_set_stmt_; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + node_.alter_database_set_stmt_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline const ::pg_query::AlterDatabaseSetStmt& Node::_internal_alter_database_set_stmt() const { + return _internal_has_alter_database_set_stmt() + ? *node_.alter_database_set_stmt_ + : reinterpret_cast< ::pg_query::AlterDatabaseSetStmt&>(::pg_query::_AlterDatabaseSetStmt_default_instance_); +} +inline const ::pg_query::AlterDatabaseSetStmt& Node::alter_database_set_stmt() const { + // @@protoc_insertion_point(field_get:pg_query.Node.alter_database_set_stmt) + return _internal_alter_database_set_stmt(); +} +inline ::pg_query::AlterDatabaseSetStmt* Node::unsafe_arena_release_alter_database_set_stmt() { + // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.alter_database_set_stmt) + if (_internal_has_alter_database_set_stmt()) { + clear_has_node(); + ::pg_query::AlterDatabaseSetStmt* temp = node_.alter_database_set_stmt_; + node_.alter_database_set_stmt_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline void Node::unsafe_arena_set_allocated_alter_database_set_stmt(::pg_query::AlterDatabaseSetStmt* alter_database_set_stmt) { + clear_node(); + if (alter_database_set_stmt) { + set_has_alter_database_set_stmt(); + node_.alter_database_set_stmt_ = alter_database_set_stmt; + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.alter_database_set_stmt) +} +inline ::pg_query::AlterDatabaseSetStmt* Node::_internal_mutable_alter_database_set_stmt() { + if (!_internal_has_alter_database_set_stmt()) { + clear_node(); + set_has_alter_database_set_stmt(); + node_.alter_database_set_stmt_ = CreateMaybeMessage< ::pg_query::AlterDatabaseSetStmt >(GetArena()); + } + return node_.alter_database_set_stmt_; +} +inline ::pg_query::AlterDatabaseSetStmt* Node::mutable_alter_database_set_stmt() { + // @@protoc_insertion_point(field_mutable:pg_query.Node.alter_database_set_stmt) + return _internal_mutable_alter_database_set_stmt(); +} + +// .pg_query.AlterRoleSetStmt alter_role_set_stmt = 109 [json_name = "AlterRoleSetStmt"]; +inline bool Node::_internal_has_alter_role_set_stmt() const { + return node_case() == kAlterRoleSetStmt; +} +inline bool Node::has_alter_role_set_stmt() const { + return _internal_has_alter_role_set_stmt(); +} +inline void Node::set_has_alter_role_set_stmt() { + _oneof_case_[0] = kAlterRoleSetStmt; +} +inline void Node::clear_alter_role_set_stmt() { + if (_internal_has_alter_role_set_stmt()) { + if (GetArena() == nullptr) { + delete node_.alter_role_set_stmt_; + } + clear_has_node(); + } +} +inline ::pg_query::AlterRoleSetStmt* Node::release_alter_role_set_stmt() { + // @@protoc_insertion_point(field_release:pg_query.Node.alter_role_set_stmt) + if (_internal_has_alter_role_set_stmt()) { + clear_has_node(); + ::pg_query::AlterRoleSetStmt* temp = node_.alter_role_set_stmt_; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + node_.alter_role_set_stmt_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline const ::pg_query::AlterRoleSetStmt& Node::_internal_alter_role_set_stmt() const { + return _internal_has_alter_role_set_stmt() + ? *node_.alter_role_set_stmt_ + : reinterpret_cast< ::pg_query::AlterRoleSetStmt&>(::pg_query::_AlterRoleSetStmt_default_instance_); +} +inline const ::pg_query::AlterRoleSetStmt& Node::alter_role_set_stmt() const { + // @@protoc_insertion_point(field_get:pg_query.Node.alter_role_set_stmt) + return _internal_alter_role_set_stmt(); +} +inline ::pg_query::AlterRoleSetStmt* Node::unsafe_arena_release_alter_role_set_stmt() { + // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.alter_role_set_stmt) + if (_internal_has_alter_role_set_stmt()) { + clear_has_node(); + ::pg_query::AlterRoleSetStmt* temp = node_.alter_role_set_stmt_; + node_.alter_role_set_stmt_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline void Node::unsafe_arena_set_allocated_alter_role_set_stmt(::pg_query::AlterRoleSetStmt* alter_role_set_stmt) { + clear_node(); + if (alter_role_set_stmt) { + set_has_alter_role_set_stmt(); + node_.alter_role_set_stmt_ = alter_role_set_stmt; + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.alter_role_set_stmt) +} +inline ::pg_query::AlterRoleSetStmt* Node::_internal_mutable_alter_role_set_stmt() { + if (!_internal_has_alter_role_set_stmt()) { + clear_node(); + set_has_alter_role_set_stmt(); + node_.alter_role_set_stmt_ = CreateMaybeMessage< ::pg_query::AlterRoleSetStmt >(GetArena()); + } + return node_.alter_role_set_stmt_; +} +inline ::pg_query::AlterRoleSetStmt* Node::mutable_alter_role_set_stmt() { + // @@protoc_insertion_point(field_mutable:pg_query.Node.alter_role_set_stmt) + return _internal_mutable_alter_role_set_stmt(); +} + +// .pg_query.CreateConversionStmt create_conversion_stmt = 110 [json_name = "CreateConversionStmt"]; +inline bool Node::_internal_has_create_conversion_stmt() const { + return node_case() == kCreateConversionStmt; +} +inline bool Node::has_create_conversion_stmt() const { + return _internal_has_create_conversion_stmt(); +} +inline void Node::set_has_create_conversion_stmt() { + _oneof_case_[0] = kCreateConversionStmt; +} +inline void Node::clear_create_conversion_stmt() { + if (_internal_has_create_conversion_stmt()) { + if (GetArena() == nullptr) { + delete node_.create_conversion_stmt_; + } + clear_has_node(); + } +} +inline ::pg_query::CreateConversionStmt* Node::release_create_conversion_stmt() { + // @@protoc_insertion_point(field_release:pg_query.Node.create_conversion_stmt) + if (_internal_has_create_conversion_stmt()) { + clear_has_node(); + ::pg_query::CreateConversionStmt* temp = node_.create_conversion_stmt_; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + node_.create_conversion_stmt_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline const ::pg_query::CreateConversionStmt& Node::_internal_create_conversion_stmt() const { + return _internal_has_create_conversion_stmt() + ? *node_.create_conversion_stmt_ + : reinterpret_cast< ::pg_query::CreateConversionStmt&>(::pg_query::_CreateConversionStmt_default_instance_); +} +inline const ::pg_query::CreateConversionStmt& Node::create_conversion_stmt() const { + // @@protoc_insertion_point(field_get:pg_query.Node.create_conversion_stmt) + return _internal_create_conversion_stmt(); +} +inline ::pg_query::CreateConversionStmt* Node::unsafe_arena_release_create_conversion_stmt() { + // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.create_conversion_stmt) + if (_internal_has_create_conversion_stmt()) { + clear_has_node(); + ::pg_query::CreateConversionStmt* temp = node_.create_conversion_stmt_; + node_.create_conversion_stmt_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline void Node::unsafe_arena_set_allocated_create_conversion_stmt(::pg_query::CreateConversionStmt* create_conversion_stmt) { + clear_node(); + if (create_conversion_stmt) { + set_has_create_conversion_stmt(); + node_.create_conversion_stmt_ = create_conversion_stmt; + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.create_conversion_stmt) +} +inline ::pg_query::CreateConversionStmt* Node::_internal_mutable_create_conversion_stmt() { + if (!_internal_has_create_conversion_stmt()) { + clear_node(); + set_has_create_conversion_stmt(); + node_.create_conversion_stmt_ = CreateMaybeMessage< ::pg_query::CreateConversionStmt >(GetArena()); + } + return node_.create_conversion_stmt_; +} +inline ::pg_query::CreateConversionStmt* Node::mutable_create_conversion_stmt() { + // @@protoc_insertion_point(field_mutable:pg_query.Node.create_conversion_stmt) + return _internal_mutable_create_conversion_stmt(); +} + +// .pg_query.CreateCastStmt create_cast_stmt = 111 [json_name = "CreateCastStmt"]; +inline bool Node::_internal_has_create_cast_stmt() const { + return node_case() == kCreateCastStmt; +} +inline bool Node::has_create_cast_stmt() const { + return _internal_has_create_cast_stmt(); +} +inline void Node::set_has_create_cast_stmt() { + _oneof_case_[0] = kCreateCastStmt; +} +inline void Node::clear_create_cast_stmt() { + if (_internal_has_create_cast_stmt()) { + if (GetArena() == nullptr) { + delete node_.create_cast_stmt_; + } + clear_has_node(); + } +} +inline ::pg_query::CreateCastStmt* Node::release_create_cast_stmt() { + // @@protoc_insertion_point(field_release:pg_query.Node.create_cast_stmt) + if (_internal_has_create_cast_stmt()) { + clear_has_node(); + ::pg_query::CreateCastStmt* temp = node_.create_cast_stmt_; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + node_.create_cast_stmt_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline const ::pg_query::CreateCastStmt& Node::_internal_create_cast_stmt() const { + return _internal_has_create_cast_stmt() + ? *node_.create_cast_stmt_ + : reinterpret_cast< ::pg_query::CreateCastStmt&>(::pg_query::_CreateCastStmt_default_instance_); +} +inline const ::pg_query::CreateCastStmt& Node::create_cast_stmt() const { + // @@protoc_insertion_point(field_get:pg_query.Node.create_cast_stmt) + return _internal_create_cast_stmt(); +} +inline ::pg_query::CreateCastStmt* Node::unsafe_arena_release_create_cast_stmt() { + // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.create_cast_stmt) + if (_internal_has_create_cast_stmt()) { + clear_has_node(); + ::pg_query::CreateCastStmt* temp = node_.create_cast_stmt_; + node_.create_cast_stmt_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline void Node::unsafe_arena_set_allocated_create_cast_stmt(::pg_query::CreateCastStmt* create_cast_stmt) { + clear_node(); + if (create_cast_stmt) { + set_has_create_cast_stmt(); + node_.create_cast_stmt_ = create_cast_stmt; + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.create_cast_stmt) +} +inline ::pg_query::CreateCastStmt* Node::_internal_mutable_create_cast_stmt() { + if (!_internal_has_create_cast_stmt()) { + clear_node(); + set_has_create_cast_stmt(); + node_.create_cast_stmt_ = CreateMaybeMessage< ::pg_query::CreateCastStmt >(GetArena()); + } + return node_.create_cast_stmt_; +} +inline ::pg_query::CreateCastStmt* Node::mutable_create_cast_stmt() { + // @@protoc_insertion_point(field_mutable:pg_query.Node.create_cast_stmt) + return _internal_mutable_create_cast_stmt(); +} + +// .pg_query.CreateOpClassStmt create_op_class_stmt = 112 [json_name = "CreateOpClassStmt"]; +inline bool Node::_internal_has_create_op_class_stmt() const { + return node_case() == kCreateOpClassStmt; +} +inline bool Node::has_create_op_class_stmt() const { + return _internal_has_create_op_class_stmt(); +} +inline void Node::set_has_create_op_class_stmt() { + _oneof_case_[0] = kCreateOpClassStmt; +} +inline void Node::clear_create_op_class_stmt() { + if (_internal_has_create_op_class_stmt()) { + if (GetArena() == nullptr) { + delete node_.create_op_class_stmt_; + } + clear_has_node(); + } +} +inline ::pg_query::CreateOpClassStmt* Node::release_create_op_class_stmt() { + // @@protoc_insertion_point(field_release:pg_query.Node.create_op_class_stmt) + if (_internal_has_create_op_class_stmt()) { + clear_has_node(); + ::pg_query::CreateOpClassStmt* temp = node_.create_op_class_stmt_; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + node_.create_op_class_stmt_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline const ::pg_query::CreateOpClassStmt& Node::_internal_create_op_class_stmt() const { + return _internal_has_create_op_class_stmt() + ? *node_.create_op_class_stmt_ + : reinterpret_cast< ::pg_query::CreateOpClassStmt&>(::pg_query::_CreateOpClassStmt_default_instance_); +} +inline const ::pg_query::CreateOpClassStmt& Node::create_op_class_stmt() const { + // @@protoc_insertion_point(field_get:pg_query.Node.create_op_class_stmt) + return _internal_create_op_class_stmt(); +} +inline ::pg_query::CreateOpClassStmt* Node::unsafe_arena_release_create_op_class_stmt() { + // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.create_op_class_stmt) + if (_internal_has_create_op_class_stmt()) { + clear_has_node(); + ::pg_query::CreateOpClassStmt* temp = node_.create_op_class_stmt_; + node_.create_op_class_stmt_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline void Node::unsafe_arena_set_allocated_create_op_class_stmt(::pg_query::CreateOpClassStmt* create_op_class_stmt) { + clear_node(); + if (create_op_class_stmt) { + set_has_create_op_class_stmt(); + node_.create_op_class_stmt_ = create_op_class_stmt; + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.create_op_class_stmt) +} +inline ::pg_query::CreateOpClassStmt* Node::_internal_mutable_create_op_class_stmt() { + if (!_internal_has_create_op_class_stmt()) { + clear_node(); + set_has_create_op_class_stmt(); + node_.create_op_class_stmt_ = CreateMaybeMessage< ::pg_query::CreateOpClassStmt >(GetArena()); + } + return node_.create_op_class_stmt_; +} +inline ::pg_query::CreateOpClassStmt* Node::mutable_create_op_class_stmt() { + // @@protoc_insertion_point(field_mutable:pg_query.Node.create_op_class_stmt) + return _internal_mutable_create_op_class_stmt(); +} + +// .pg_query.CreateOpFamilyStmt create_op_family_stmt = 113 [json_name = "CreateOpFamilyStmt"]; +inline bool Node::_internal_has_create_op_family_stmt() const { + return node_case() == kCreateOpFamilyStmt; +} +inline bool Node::has_create_op_family_stmt() const { + return _internal_has_create_op_family_stmt(); +} +inline void Node::set_has_create_op_family_stmt() { + _oneof_case_[0] = kCreateOpFamilyStmt; +} +inline void Node::clear_create_op_family_stmt() { + if (_internal_has_create_op_family_stmt()) { + if (GetArena() == nullptr) { + delete node_.create_op_family_stmt_; + } + clear_has_node(); + } +} +inline ::pg_query::CreateOpFamilyStmt* Node::release_create_op_family_stmt() { + // @@protoc_insertion_point(field_release:pg_query.Node.create_op_family_stmt) + if (_internal_has_create_op_family_stmt()) { + clear_has_node(); + ::pg_query::CreateOpFamilyStmt* temp = node_.create_op_family_stmt_; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + node_.create_op_family_stmt_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline const ::pg_query::CreateOpFamilyStmt& Node::_internal_create_op_family_stmt() const { + return _internal_has_create_op_family_stmt() + ? *node_.create_op_family_stmt_ + : reinterpret_cast< ::pg_query::CreateOpFamilyStmt&>(::pg_query::_CreateOpFamilyStmt_default_instance_); +} +inline const ::pg_query::CreateOpFamilyStmt& Node::create_op_family_stmt() const { + // @@protoc_insertion_point(field_get:pg_query.Node.create_op_family_stmt) + return _internal_create_op_family_stmt(); +} +inline ::pg_query::CreateOpFamilyStmt* Node::unsafe_arena_release_create_op_family_stmt() { + // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.create_op_family_stmt) + if (_internal_has_create_op_family_stmt()) { + clear_has_node(); + ::pg_query::CreateOpFamilyStmt* temp = node_.create_op_family_stmt_; + node_.create_op_family_stmt_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline void Node::unsafe_arena_set_allocated_create_op_family_stmt(::pg_query::CreateOpFamilyStmt* create_op_family_stmt) { + clear_node(); + if (create_op_family_stmt) { + set_has_create_op_family_stmt(); + node_.create_op_family_stmt_ = create_op_family_stmt; + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.create_op_family_stmt) +} +inline ::pg_query::CreateOpFamilyStmt* Node::_internal_mutable_create_op_family_stmt() { + if (!_internal_has_create_op_family_stmt()) { + clear_node(); + set_has_create_op_family_stmt(); + node_.create_op_family_stmt_ = CreateMaybeMessage< ::pg_query::CreateOpFamilyStmt >(GetArena()); + } + return node_.create_op_family_stmt_; +} +inline ::pg_query::CreateOpFamilyStmt* Node::mutable_create_op_family_stmt() { + // @@protoc_insertion_point(field_mutable:pg_query.Node.create_op_family_stmt) + return _internal_mutable_create_op_family_stmt(); +} + +// .pg_query.AlterOpFamilyStmt alter_op_family_stmt = 114 [json_name = "AlterOpFamilyStmt"]; +inline bool Node::_internal_has_alter_op_family_stmt() const { + return node_case() == kAlterOpFamilyStmt; +} +inline bool Node::has_alter_op_family_stmt() const { + return _internal_has_alter_op_family_stmt(); +} +inline void Node::set_has_alter_op_family_stmt() { + _oneof_case_[0] = kAlterOpFamilyStmt; +} +inline void Node::clear_alter_op_family_stmt() { + if (_internal_has_alter_op_family_stmt()) { + if (GetArena() == nullptr) { + delete node_.alter_op_family_stmt_; + } + clear_has_node(); + } +} +inline ::pg_query::AlterOpFamilyStmt* Node::release_alter_op_family_stmt() { + // @@protoc_insertion_point(field_release:pg_query.Node.alter_op_family_stmt) + if (_internal_has_alter_op_family_stmt()) { + clear_has_node(); + ::pg_query::AlterOpFamilyStmt* temp = node_.alter_op_family_stmt_; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + node_.alter_op_family_stmt_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline const ::pg_query::AlterOpFamilyStmt& Node::_internal_alter_op_family_stmt() const { + return _internal_has_alter_op_family_stmt() + ? *node_.alter_op_family_stmt_ + : reinterpret_cast< ::pg_query::AlterOpFamilyStmt&>(::pg_query::_AlterOpFamilyStmt_default_instance_); +} +inline const ::pg_query::AlterOpFamilyStmt& Node::alter_op_family_stmt() const { + // @@protoc_insertion_point(field_get:pg_query.Node.alter_op_family_stmt) + return _internal_alter_op_family_stmt(); +} +inline ::pg_query::AlterOpFamilyStmt* Node::unsafe_arena_release_alter_op_family_stmt() { + // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.alter_op_family_stmt) + if (_internal_has_alter_op_family_stmt()) { + clear_has_node(); + ::pg_query::AlterOpFamilyStmt* temp = node_.alter_op_family_stmt_; + node_.alter_op_family_stmt_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline void Node::unsafe_arena_set_allocated_alter_op_family_stmt(::pg_query::AlterOpFamilyStmt* alter_op_family_stmt) { + clear_node(); + if (alter_op_family_stmt) { + set_has_alter_op_family_stmt(); + node_.alter_op_family_stmt_ = alter_op_family_stmt; + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.alter_op_family_stmt) +} +inline ::pg_query::AlterOpFamilyStmt* Node::_internal_mutable_alter_op_family_stmt() { + if (!_internal_has_alter_op_family_stmt()) { + clear_node(); + set_has_alter_op_family_stmt(); + node_.alter_op_family_stmt_ = CreateMaybeMessage< ::pg_query::AlterOpFamilyStmt >(GetArena()); + } + return node_.alter_op_family_stmt_; +} +inline ::pg_query::AlterOpFamilyStmt* Node::mutable_alter_op_family_stmt() { + // @@protoc_insertion_point(field_mutable:pg_query.Node.alter_op_family_stmt) + return _internal_mutable_alter_op_family_stmt(); +} + +// .pg_query.PrepareStmt prepare_stmt = 115 [json_name = "PrepareStmt"]; +inline bool Node::_internal_has_prepare_stmt() const { + return node_case() == kPrepareStmt; +} +inline bool Node::has_prepare_stmt() const { + return _internal_has_prepare_stmt(); +} +inline void Node::set_has_prepare_stmt() { + _oneof_case_[0] = kPrepareStmt; +} +inline void Node::clear_prepare_stmt() { + if (_internal_has_prepare_stmt()) { + if (GetArena() == nullptr) { + delete node_.prepare_stmt_; + } + clear_has_node(); + } +} +inline ::pg_query::PrepareStmt* Node::release_prepare_stmt() { + // @@protoc_insertion_point(field_release:pg_query.Node.prepare_stmt) + if (_internal_has_prepare_stmt()) { + clear_has_node(); + ::pg_query::PrepareStmt* temp = node_.prepare_stmt_; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + node_.prepare_stmt_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline const ::pg_query::PrepareStmt& Node::_internal_prepare_stmt() const { + return _internal_has_prepare_stmt() + ? *node_.prepare_stmt_ + : reinterpret_cast< ::pg_query::PrepareStmt&>(::pg_query::_PrepareStmt_default_instance_); +} +inline const ::pg_query::PrepareStmt& Node::prepare_stmt() const { + // @@protoc_insertion_point(field_get:pg_query.Node.prepare_stmt) + return _internal_prepare_stmt(); +} +inline ::pg_query::PrepareStmt* Node::unsafe_arena_release_prepare_stmt() { + // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.prepare_stmt) + if (_internal_has_prepare_stmt()) { + clear_has_node(); + ::pg_query::PrepareStmt* temp = node_.prepare_stmt_; + node_.prepare_stmt_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline void Node::unsafe_arena_set_allocated_prepare_stmt(::pg_query::PrepareStmt* prepare_stmt) { + clear_node(); + if (prepare_stmt) { + set_has_prepare_stmt(); + node_.prepare_stmt_ = prepare_stmt; + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.prepare_stmt) +} +inline ::pg_query::PrepareStmt* Node::_internal_mutable_prepare_stmt() { + if (!_internal_has_prepare_stmt()) { + clear_node(); + set_has_prepare_stmt(); + node_.prepare_stmt_ = CreateMaybeMessage< ::pg_query::PrepareStmt >(GetArena()); + } + return node_.prepare_stmt_; +} +inline ::pg_query::PrepareStmt* Node::mutable_prepare_stmt() { + // @@protoc_insertion_point(field_mutable:pg_query.Node.prepare_stmt) + return _internal_mutable_prepare_stmt(); +} + +// .pg_query.ExecuteStmt execute_stmt = 116 [json_name = "ExecuteStmt"]; +inline bool Node::_internal_has_execute_stmt() const { + return node_case() == kExecuteStmt; +} +inline bool Node::has_execute_stmt() const { + return _internal_has_execute_stmt(); +} +inline void Node::set_has_execute_stmt() { + _oneof_case_[0] = kExecuteStmt; +} +inline void Node::clear_execute_stmt() { + if (_internal_has_execute_stmt()) { + if (GetArena() == nullptr) { + delete node_.execute_stmt_; + } + clear_has_node(); + } +} +inline ::pg_query::ExecuteStmt* Node::release_execute_stmt() { + // @@protoc_insertion_point(field_release:pg_query.Node.execute_stmt) + if (_internal_has_execute_stmt()) { + clear_has_node(); + ::pg_query::ExecuteStmt* temp = node_.execute_stmt_; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + node_.execute_stmt_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline const ::pg_query::ExecuteStmt& Node::_internal_execute_stmt() const { + return _internal_has_execute_stmt() + ? *node_.execute_stmt_ + : reinterpret_cast< ::pg_query::ExecuteStmt&>(::pg_query::_ExecuteStmt_default_instance_); +} +inline const ::pg_query::ExecuteStmt& Node::execute_stmt() const { + // @@protoc_insertion_point(field_get:pg_query.Node.execute_stmt) + return _internal_execute_stmt(); +} +inline ::pg_query::ExecuteStmt* Node::unsafe_arena_release_execute_stmt() { + // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.execute_stmt) + if (_internal_has_execute_stmt()) { + clear_has_node(); + ::pg_query::ExecuteStmt* temp = node_.execute_stmt_; + node_.execute_stmt_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline void Node::unsafe_arena_set_allocated_execute_stmt(::pg_query::ExecuteStmt* execute_stmt) { + clear_node(); + if (execute_stmt) { + set_has_execute_stmt(); + node_.execute_stmt_ = execute_stmt; + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.execute_stmt) +} +inline ::pg_query::ExecuteStmt* Node::_internal_mutable_execute_stmt() { + if (!_internal_has_execute_stmt()) { + clear_node(); + set_has_execute_stmt(); + node_.execute_stmt_ = CreateMaybeMessage< ::pg_query::ExecuteStmt >(GetArena()); + } + return node_.execute_stmt_; +} +inline ::pg_query::ExecuteStmt* Node::mutable_execute_stmt() { + // @@protoc_insertion_point(field_mutable:pg_query.Node.execute_stmt) + return _internal_mutable_execute_stmt(); +} + +// .pg_query.DeallocateStmt deallocate_stmt = 117 [json_name = "DeallocateStmt"]; +inline bool Node::_internal_has_deallocate_stmt() const { + return node_case() == kDeallocateStmt; +} +inline bool Node::has_deallocate_stmt() const { + return _internal_has_deallocate_stmt(); +} +inline void Node::set_has_deallocate_stmt() { + _oneof_case_[0] = kDeallocateStmt; +} +inline void Node::clear_deallocate_stmt() { + if (_internal_has_deallocate_stmt()) { + if (GetArena() == nullptr) { + delete node_.deallocate_stmt_; + } + clear_has_node(); + } +} +inline ::pg_query::DeallocateStmt* Node::release_deallocate_stmt() { + // @@protoc_insertion_point(field_release:pg_query.Node.deallocate_stmt) + if (_internal_has_deallocate_stmt()) { + clear_has_node(); + ::pg_query::DeallocateStmt* temp = node_.deallocate_stmt_; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + node_.deallocate_stmt_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline const ::pg_query::DeallocateStmt& Node::_internal_deallocate_stmt() const { + return _internal_has_deallocate_stmt() + ? *node_.deallocate_stmt_ + : reinterpret_cast< ::pg_query::DeallocateStmt&>(::pg_query::_DeallocateStmt_default_instance_); +} +inline const ::pg_query::DeallocateStmt& Node::deallocate_stmt() const { + // @@protoc_insertion_point(field_get:pg_query.Node.deallocate_stmt) + return _internal_deallocate_stmt(); +} +inline ::pg_query::DeallocateStmt* Node::unsafe_arena_release_deallocate_stmt() { + // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.deallocate_stmt) + if (_internal_has_deallocate_stmt()) { + clear_has_node(); + ::pg_query::DeallocateStmt* temp = node_.deallocate_stmt_; + node_.deallocate_stmt_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline void Node::unsafe_arena_set_allocated_deallocate_stmt(::pg_query::DeallocateStmt* deallocate_stmt) { + clear_node(); + if (deallocate_stmt) { + set_has_deallocate_stmt(); + node_.deallocate_stmt_ = deallocate_stmt; + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.deallocate_stmt) +} +inline ::pg_query::DeallocateStmt* Node::_internal_mutable_deallocate_stmt() { + if (!_internal_has_deallocate_stmt()) { + clear_node(); + set_has_deallocate_stmt(); + node_.deallocate_stmt_ = CreateMaybeMessage< ::pg_query::DeallocateStmt >(GetArena()); + } + return node_.deallocate_stmt_; +} +inline ::pg_query::DeallocateStmt* Node::mutable_deallocate_stmt() { + // @@protoc_insertion_point(field_mutable:pg_query.Node.deallocate_stmt) + return _internal_mutable_deallocate_stmt(); +} + +// .pg_query.DeclareCursorStmt declare_cursor_stmt = 118 [json_name = "DeclareCursorStmt"]; +inline bool Node::_internal_has_declare_cursor_stmt() const { + return node_case() == kDeclareCursorStmt; +} +inline bool Node::has_declare_cursor_stmt() const { + return _internal_has_declare_cursor_stmt(); +} +inline void Node::set_has_declare_cursor_stmt() { + _oneof_case_[0] = kDeclareCursorStmt; +} +inline void Node::clear_declare_cursor_stmt() { + if (_internal_has_declare_cursor_stmt()) { + if (GetArena() == nullptr) { + delete node_.declare_cursor_stmt_; + } + clear_has_node(); + } +} +inline ::pg_query::DeclareCursorStmt* Node::release_declare_cursor_stmt() { + // @@protoc_insertion_point(field_release:pg_query.Node.declare_cursor_stmt) + if (_internal_has_declare_cursor_stmt()) { + clear_has_node(); + ::pg_query::DeclareCursorStmt* temp = node_.declare_cursor_stmt_; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + node_.declare_cursor_stmt_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline const ::pg_query::DeclareCursorStmt& Node::_internal_declare_cursor_stmt() const { + return _internal_has_declare_cursor_stmt() + ? *node_.declare_cursor_stmt_ + : reinterpret_cast< ::pg_query::DeclareCursorStmt&>(::pg_query::_DeclareCursorStmt_default_instance_); +} +inline const ::pg_query::DeclareCursorStmt& Node::declare_cursor_stmt() const { + // @@protoc_insertion_point(field_get:pg_query.Node.declare_cursor_stmt) + return _internal_declare_cursor_stmt(); +} +inline ::pg_query::DeclareCursorStmt* Node::unsafe_arena_release_declare_cursor_stmt() { + // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.declare_cursor_stmt) + if (_internal_has_declare_cursor_stmt()) { + clear_has_node(); + ::pg_query::DeclareCursorStmt* temp = node_.declare_cursor_stmt_; + node_.declare_cursor_stmt_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline void Node::unsafe_arena_set_allocated_declare_cursor_stmt(::pg_query::DeclareCursorStmt* declare_cursor_stmt) { + clear_node(); + if (declare_cursor_stmt) { + set_has_declare_cursor_stmt(); + node_.declare_cursor_stmt_ = declare_cursor_stmt; + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.declare_cursor_stmt) +} +inline ::pg_query::DeclareCursorStmt* Node::_internal_mutable_declare_cursor_stmt() { + if (!_internal_has_declare_cursor_stmt()) { + clear_node(); + set_has_declare_cursor_stmt(); + node_.declare_cursor_stmt_ = CreateMaybeMessage< ::pg_query::DeclareCursorStmt >(GetArena()); + } + return node_.declare_cursor_stmt_; +} +inline ::pg_query::DeclareCursorStmt* Node::mutable_declare_cursor_stmt() { + // @@protoc_insertion_point(field_mutable:pg_query.Node.declare_cursor_stmt) + return _internal_mutable_declare_cursor_stmt(); +} + +// .pg_query.CreateTableSpaceStmt create_table_space_stmt = 119 [json_name = "CreateTableSpaceStmt"]; +inline bool Node::_internal_has_create_table_space_stmt() const { + return node_case() == kCreateTableSpaceStmt; +} +inline bool Node::has_create_table_space_stmt() const { + return _internal_has_create_table_space_stmt(); +} +inline void Node::set_has_create_table_space_stmt() { + _oneof_case_[0] = kCreateTableSpaceStmt; +} +inline void Node::clear_create_table_space_stmt() { + if (_internal_has_create_table_space_stmt()) { + if (GetArena() == nullptr) { + delete node_.create_table_space_stmt_; + } + clear_has_node(); + } +} +inline ::pg_query::CreateTableSpaceStmt* Node::release_create_table_space_stmt() { + // @@protoc_insertion_point(field_release:pg_query.Node.create_table_space_stmt) + if (_internal_has_create_table_space_stmt()) { + clear_has_node(); + ::pg_query::CreateTableSpaceStmt* temp = node_.create_table_space_stmt_; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + node_.create_table_space_stmt_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline const ::pg_query::CreateTableSpaceStmt& Node::_internal_create_table_space_stmt() const { + return _internal_has_create_table_space_stmt() + ? *node_.create_table_space_stmt_ + : reinterpret_cast< ::pg_query::CreateTableSpaceStmt&>(::pg_query::_CreateTableSpaceStmt_default_instance_); +} +inline const ::pg_query::CreateTableSpaceStmt& Node::create_table_space_stmt() const { + // @@protoc_insertion_point(field_get:pg_query.Node.create_table_space_stmt) + return _internal_create_table_space_stmt(); +} +inline ::pg_query::CreateTableSpaceStmt* Node::unsafe_arena_release_create_table_space_stmt() { + // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.create_table_space_stmt) + if (_internal_has_create_table_space_stmt()) { + clear_has_node(); + ::pg_query::CreateTableSpaceStmt* temp = node_.create_table_space_stmt_; + node_.create_table_space_stmt_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline void Node::unsafe_arena_set_allocated_create_table_space_stmt(::pg_query::CreateTableSpaceStmt* create_table_space_stmt) { + clear_node(); + if (create_table_space_stmt) { + set_has_create_table_space_stmt(); + node_.create_table_space_stmt_ = create_table_space_stmt; + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.create_table_space_stmt) +} +inline ::pg_query::CreateTableSpaceStmt* Node::_internal_mutable_create_table_space_stmt() { + if (!_internal_has_create_table_space_stmt()) { + clear_node(); + set_has_create_table_space_stmt(); + node_.create_table_space_stmt_ = CreateMaybeMessage< ::pg_query::CreateTableSpaceStmt >(GetArena()); + } + return node_.create_table_space_stmt_; +} +inline ::pg_query::CreateTableSpaceStmt* Node::mutable_create_table_space_stmt() { + // @@protoc_insertion_point(field_mutable:pg_query.Node.create_table_space_stmt) + return _internal_mutable_create_table_space_stmt(); +} + +// .pg_query.DropTableSpaceStmt drop_table_space_stmt = 120 [json_name = "DropTableSpaceStmt"]; +inline bool Node::_internal_has_drop_table_space_stmt() const { + return node_case() == kDropTableSpaceStmt; +} +inline bool Node::has_drop_table_space_stmt() const { + return _internal_has_drop_table_space_stmt(); +} +inline void Node::set_has_drop_table_space_stmt() { + _oneof_case_[0] = kDropTableSpaceStmt; +} +inline void Node::clear_drop_table_space_stmt() { + if (_internal_has_drop_table_space_stmt()) { + if (GetArena() == nullptr) { + delete node_.drop_table_space_stmt_; + } + clear_has_node(); + } +} +inline ::pg_query::DropTableSpaceStmt* Node::release_drop_table_space_stmt() { + // @@protoc_insertion_point(field_release:pg_query.Node.drop_table_space_stmt) + if (_internal_has_drop_table_space_stmt()) { + clear_has_node(); + ::pg_query::DropTableSpaceStmt* temp = node_.drop_table_space_stmt_; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + node_.drop_table_space_stmt_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline const ::pg_query::DropTableSpaceStmt& Node::_internal_drop_table_space_stmt() const { + return _internal_has_drop_table_space_stmt() + ? *node_.drop_table_space_stmt_ + : reinterpret_cast< ::pg_query::DropTableSpaceStmt&>(::pg_query::_DropTableSpaceStmt_default_instance_); +} +inline const ::pg_query::DropTableSpaceStmt& Node::drop_table_space_stmt() const { + // @@protoc_insertion_point(field_get:pg_query.Node.drop_table_space_stmt) + return _internal_drop_table_space_stmt(); +} +inline ::pg_query::DropTableSpaceStmt* Node::unsafe_arena_release_drop_table_space_stmt() { + // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.drop_table_space_stmt) + if (_internal_has_drop_table_space_stmt()) { + clear_has_node(); + ::pg_query::DropTableSpaceStmt* temp = node_.drop_table_space_stmt_; + node_.drop_table_space_stmt_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline void Node::unsafe_arena_set_allocated_drop_table_space_stmt(::pg_query::DropTableSpaceStmt* drop_table_space_stmt) { + clear_node(); + if (drop_table_space_stmt) { + set_has_drop_table_space_stmt(); + node_.drop_table_space_stmt_ = drop_table_space_stmt; + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.drop_table_space_stmt) +} +inline ::pg_query::DropTableSpaceStmt* Node::_internal_mutable_drop_table_space_stmt() { + if (!_internal_has_drop_table_space_stmt()) { + clear_node(); + set_has_drop_table_space_stmt(); + node_.drop_table_space_stmt_ = CreateMaybeMessage< ::pg_query::DropTableSpaceStmt >(GetArena()); + } + return node_.drop_table_space_stmt_; +} +inline ::pg_query::DropTableSpaceStmt* Node::mutable_drop_table_space_stmt() { + // @@protoc_insertion_point(field_mutable:pg_query.Node.drop_table_space_stmt) + return _internal_mutable_drop_table_space_stmt(); +} + +// .pg_query.AlterObjectDependsStmt alter_object_depends_stmt = 121 [json_name = "AlterObjectDependsStmt"]; +inline bool Node::_internal_has_alter_object_depends_stmt() const { + return node_case() == kAlterObjectDependsStmt; +} +inline bool Node::has_alter_object_depends_stmt() const { + return _internal_has_alter_object_depends_stmt(); +} +inline void Node::set_has_alter_object_depends_stmt() { + _oneof_case_[0] = kAlterObjectDependsStmt; +} +inline void Node::clear_alter_object_depends_stmt() { + if (_internal_has_alter_object_depends_stmt()) { + if (GetArena() == nullptr) { + delete node_.alter_object_depends_stmt_; + } + clear_has_node(); + } +} +inline ::pg_query::AlterObjectDependsStmt* Node::release_alter_object_depends_stmt() { + // @@protoc_insertion_point(field_release:pg_query.Node.alter_object_depends_stmt) + if (_internal_has_alter_object_depends_stmt()) { + clear_has_node(); + ::pg_query::AlterObjectDependsStmt* temp = node_.alter_object_depends_stmt_; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + node_.alter_object_depends_stmt_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline const ::pg_query::AlterObjectDependsStmt& Node::_internal_alter_object_depends_stmt() const { + return _internal_has_alter_object_depends_stmt() + ? *node_.alter_object_depends_stmt_ + : reinterpret_cast< ::pg_query::AlterObjectDependsStmt&>(::pg_query::_AlterObjectDependsStmt_default_instance_); +} +inline const ::pg_query::AlterObjectDependsStmt& Node::alter_object_depends_stmt() const { + // @@protoc_insertion_point(field_get:pg_query.Node.alter_object_depends_stmt) + return _internal_alter_object_depends_stmt(); +} +inline ::pg_query::AlterObjectDependsStmt* Node::unsafe_arena_release_alter_object_depends_stmt() { + // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.alter_object_depends_stmt) + if (_internal_has_alter_object_depends_stmt()) { + clear_has_node(); + ::pg_query::AlterObjectDependsStmt* temp = node_.alter_object_depends_stmt_; + node_.alter_object_depends_stmt_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline void Node::unsafe_arena_set_allocated_alter_object_depends_stmt(::pg_query::AlterObjectDependsStmt* alter_object_depends_stmt) { + clear_node(); + if (alter_object_depends_stmt) { + set_has_alter_object_depends_stmt(); + node_.alter_object_depends_stmt_ = alter_object_depends_stmt; + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.alter_object_depends_stmt) +} +inline ::pg_query::AlterObjectDependsStmt* Node::_internal_mutable_alter_object_depends_stmt() { + if (!_internal_has_alter_object_depends_stmt()) { + clear_node(); + set_has_alter_object_depends_stmt(); + node_.alter_object_depends_stmt_ = CreateMaybeMessage< ::pg_query::AlterObjectDependsStmt >(GetArena()); + } + return node_.alter_object_depends_stmt_; +} +inline ::pg_query::AlterObjectDependsStmt* Node::mutable_alter_object_depends_stmt() { + // @@protoc_insertion_point(field_mutable:pg_query.Node.alter_object_depends_stmt) + return _internal_mutable_alter_object_depends_stmt(); +} + +// .pg_query.AlterObjectSchemaStmt alter_object_schema_stmt = 122 [json_name = "AlterObjectSchemaStmt"]; +inline bool Node::_internal_has_alter_object_schema_stmt() const { + return node_case() == kAlterObjectSchemaStmt; +} +inline bool Node::has_alter_object_schema_stmt() const { + return _internal_has_alter_object_schema_stmt(); +} +inline void Node::set_has_alter_object_schema_stmt() { + _oneof_case_[0] = kAlterObjectSchemaStmt; +} +inline void Node::clear_alter_object_schema_stmt() { + if (_internal_has_alter_object_schema_stmt()) { + if (GetArena() == nullptr) { + delete node_.alter_object_schema_stmt_; + } + clear_has_node(); + } +} +inline ::pg_query::AlterObjectSchemaStmt* Node::release_alter_object_schema_stmt() { + // @@protoc_insertion_point(field_release:pg_query.Node.alter_object_schema_stmt) + if (_internal_has_alter_object_schema_stmt()) { + clear_has_node(); + ::pg_query::AlterObjectSchemaStmt* temp = node_.alter_object_schema_stmt_; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + node_.alter_object_schema_stmt_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline const ::pg_query::AlterObjectSchemaStmt& Node::_internal_alter_object_schema_stmt() const { + return _internal_has_alter_object_schema_stmt() + ? *node_.alter_object_schema_stmt_ + : reinterpret_cast< ::pg_query::AlterObjectSchemaStmt&>(::pg_query::_AlterObjectSchemaStmt_default_instance_); +} +inline const ::pg_query::AlterObjectSchemaStmt& Node::alter_object_schema_stmt() const { + // @@protoc_insertion_point(field_get:pg_query.Node.alter_object_schema_stmt) + return _internal_alter_object_schema_stmt(); +} +inline ::pg_query::AlterObjectSchemaStmt* Node::unsafe_arena_release_alter_object_schema_stmt() { + // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.alter_object_schema_stmt) + if (_internal_has_alter_object_schema_stmt()) { + clear_has_node(); + ::pg_query::AlterObjectSchemaStmt* temp = node_.alter_object_schema_stmt_; + node_.alter_object_schema_stmt_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline void Node::unsafe_arena_set_allocated_alter_object_schema_stmt(::pg_query::AlterObjectSchemaStmt* alter_object_schema_stmt) { + clear_node(); + if (alter_object_schema_stmt) { + set_has_alter_object_schema_stmt(); + node_.alter_object_schema_stmt_ = alter_object_schema_stmt; + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.alter_object_schema_stmt) +} +inline ::pg_query::AlterObjectSchemaStmt* Node::_internal_mutable_alter_object_schema_stmt() { + if (!_internal_has_alter_object_schema_stmt()) { + clear_node(); + set_has_alter_object_schema_stmt(); + node_.alter_object_schema_stmt_ = CreateMaybeMessage< ::pg_query::AlterObjectSchemaStmt >(GetArena()); + } + return node_.alter_object_schema_stmt_; +} +inline ::pg_query::AlterObjectSchemaStmt* Node::mutable_alter_object_schema_stmt() { + // @@protoc_insertion_point(field_mutable:pg_query.Node.alter_object_schema_stmt) + return _internal_mutable_alter_object_schema_stmt(); +} + +// .pg_query.AlterOwnerStmt alter_owner_stmt = 123 [json_name = "AlterOwnerStmt"]; +inline bool Node::_internal_has_alter_owner_stmt() const { + return node_case() == kAlterOwnerStmt; +} +inline bool Node::has_alter_owner_stmt() const { + return _internal_has_alter_owner_stmt(); +} +inline void Node::set_has_alter_owner_stmt() { + _oneof_case_[0] = kAlterOwnerStmt; +} +inline void Node::clear_alter_owner_stmt() { + if (_internal_has_alter_owner_stmt()) { + if (GetArena() == nullptr) { + delete node_.alter_owner_stmt_; + } + clear_has_node(); + } +} +inline ::pg_query::AlterOwnerStmt* Node::release_alter_owner_stmt() { + // @@protoc_insertion_point(field_release:pg_query.Node.alter_owner_stmt) + if (_internal_has_alter_owner_stmt()) { + clear_has_node(); + ::pg_query::AlterOwnerStmt* temp = node_.alter_owner_stmt_; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + node_.alter_owner_stmt_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline const ::pg_query::AlterOwnerStmt& Node::_internal_alter_owner_stmt() const { + return _internal_has_alter_owner_stmt() + ? *node_.alter_owner_stmt_ + : reinterpret_cast< ::pg_query::AlterOwnerStmt&>(::pg_query::_AlterOwnerStmt_default_instance_); +} +inline const ::pg_query::AlterOwnerStmt& Node::alter_owner_stmt() const { + // @@protoc_insertion_point(field_get:pg_query.Node.alter_owner_stmt) + return _internal_alter_owner_stmt(); +} +inline ::pg_query::AlterOwnerStmt* Node::unsafe_arena_release_alter_owner_stmt() { + // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.alter_owner_stmt) + if (_internal_has_alter_owner_stmt()) { + clear_has_node(); + ::pg_query::AlterOwnerStmt* temp = node_.alter_owner_stmt_; + node_.alter_owner_stmt_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline void Node::unsafe_arena_set_allocated_alter_owner_stmt(::pg_query::AlterOwnerStmt* alter_owner_stmt) { + clear_node(); + if (alter_owner_stmt) { + set_has_alter_owner_stmt(); + node_.alter_owner_stmt_ = alter_owner_stmt; + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.alter_owner_stmt) +} +inline ::pg_query::AlterOwnerStmt* Node::_internal_mutable_alter_owner_stmt() { + if (!_internal_has_alter_owner_stmt()) { + clear_node(); + set_has_alter_owner_stmt(); + node_.alter_owner_stmt_ = CreateMaybeMessage< ::pg_query::AlterOwnerStmt >(GetArena()); + } + return node_.alter_owner_stmt_; +} +inline ::pg_query::AlterOwnerStmt* Node::mutable_alter_owner_stmt() { + // @@protoc_insertion_point(field_mutable:pg_query.Node.alter_owner_stmt) + return _internal_mutable_alter_owner_stmt(); +} + +// .pg_query.AlterOperatorStmt alter_operator_stmt = 124 [json_name = "AlterOperatorStmt"]; +inline bool Node::_internal_has_alter_operator_stmt() const { + return node_case() == kAlterOperatorStmt; +} +inline bool Node::has_alter_operator_stmt() const { + return _internal_has_alter_operator_stmt(); +} +inline void Node::set_has_alter_operator_stmt() { + _oneof_case_[0] = kAlterOperatorStmt; +} +inline void Node::clear_alter_operator_stmt() { + if (_internal_has_alter_operator_stmt()) { + if (GetArena() == nullptr) { + delete node_.alter_operator_stmt_; + } + clear_has_node(); + } +} +inline ::pg_query::AlterOperatorStmt* Node::release_alter_operator_stmt() { + // @@protoc_insertion_point(field_release:pg_query.Node.alter_operator_stmt) + if (_internal_has_alter_operator_stmt()) { + clear_has_node(); + ::pg_query::AlterOperatorStmt* temp = node_.alter_operator_stmt_; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + node_.alter_operator_stmt_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline const ::pg_query::AlterOperatorStmt& Node::_internal_alter_operator_stmt() const { + return _internal_has_alter_operator_stmt() + ? *node_.alter_operator_stmt_ + : reinterpret_cast< ::pg_query::AlterOperatorStmt&>(::pg_query::_AlterOperatorStmt_default_instance_); +} +inline const ::pg_query::AlterOperatorStmt& Node::alter_operator_stmt() const { + // @@protoc_insertion_point(field_get:pg_query.Node.alter_operator_stmt) + return _internal_alter_operator_stmt(); +} +inline ::pg_query::AlterOperatorStmt* Node::unsafe_arena_release_alter_operator_stmt() { + // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.alter_operator_stmt) + if (_internal_has_alter_operator_stmt()) { + clear_has_node(); + ::pg_query::AlterOperatorStmt* temp = node_.alter_operator_stmt_; + node_.alter_operator_stmt_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline void Node::unsafe_arena_set_allocated_alter_operator_stmt(::pg_query::AlterOperatorStmt* alter_operator_stmt) { + clear_node(); + if (alter_operator_stmt) { + set_has_alter_operator_stmt(); + node_.alter_operator_stmt_ = alter_operator_stmt; + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.alter_operator_stmt) +} +inline ::pg_query::AlterOperatorStmt* Node::_internal_mutable_alter_operator_stmt() { + if (!_internal_has_alter_operator_stmt()) { + clear_node(); + set_has_alter_operator_stmt(); + node_.alter_operator_stmt_ = CreateMaybeMessage< ::pg_query::AlterOperatorStmt >(GetArena()); + } + return node_.alter_operator_stmt_; +} +inline ::pg_query::AlterOperatorStmt* Node::mutable_alter_operator_stmt() { + // @@protoc_insertion_point(field_mutable:pg_query.Node.alter_operator_stmt) + return _internal_mutable_alter_operator_stmt(); +} + +// .pg_query.AlterTypeStmt alter_type_stmt = 125 [json_name = "AlterTypeStmt"]; +inline bool Node::_internal_has_alter_type_stmt() const { + return node_case() == kAlterTypeStmt; +} +inline bool Node::has_alter_type_stmt() const { + return _internal_has_alter_type_stmt(); +} +inline void Node::set_has_alter_type_stmt() { + _oneof_case_[0] = kAlterTypeStmt; +} +inline void Node::clear_alter_type_stmt() { + if (_internal_has_alter_type_stmt()) { + if (GetArena() == nullptr) { + delete node_.alter_type_stmt_; + } + clear_has_node(); + } +} +inline ::pg_query::AlterTypeStmt* Node::release_alter_type_stmt() { + // @@protoc_insertion_point(field_release:pg_query.Node.alter_type_stmt) + if (_internal_has_alter_type_stmt()) { + clear_has_node(); + ::pg_query::AlterTypeStmt* temp = node_.alter_type_stmt_; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + node_.alter_type_stmt_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline const ::pg_query::AlterTypeStmt& Node::_internal_alter_type_stmt() const { + return _internal_has_alter_type_stmt() + ? *node_.alter_type_stmt_ + : reinterpret_cast< ::pg_query::AlterTypeStmt&>(::pg_query::_AlterTypeStmt_default_instance_); +} +inline const ::pg_query::AlterTypeStmt& Node::alter_type_stmt() const { + // @@protoc_insertion_point(field_get:pg_query.Node.alter_type_stmt) + return _internal_alter_type_stmt(); +} +inline ::pg_query::AlterTypeStmt* Node::unsafe_arena_release_alter_type_stmt() { + // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.alter_type_stmt) + if (_internal_has_alter_type_stmt()) { + clear_has_node(); + ::pg_query::AlterTypeStmt* temp = node_.alter_type_stmt_; + node_.alter_type_stmt_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline void Node::unsafe_arena_set_allocated_alter_type_stmt(::pg_query::AlterTypeStmt* alter_type_stmt) { + clear_node(); + if (alter_type_stmt) { + set_has_alter_type_stmt(); + node_.alter_type_stmt_ = alter_type_stmt; + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.alter_type_stmt) +} +inline ::pg_query::AlterTypeStmt* Node::_internal_mutable_alter_type_stmt() { + if (!_internal_has_alter_type_stmt()) { + clear_node(); + set_has_alter_type_stmt(); + node_.alter_type_stmt_ = CreateMaybeMessage< ::pg_query::AlterTypeStmt >(GetArena()); + } + return node_.alter_type_stmt_; +} +inline ::pg_query::AlterTypeStmt* Node::mutable_alter_type_stmt() { + // @@protoc_insertion_point(field_mutable:pg_query.Node.alter_type_stmt) + return _internal_mutable_alter_type_stmt(); +} + +// .pg_query.DropOwnedStmt drop_owned_stmt = 126 [json_name = "DropOwnedStmt"]; +inline bool Node::_internal_has_drop_owned_stmt() const { + return node_case() == kDropOwnedStmt; +} +inline bool Node::has_drop_owned_stmt() const { + return _internal_has_drop_owned_stmt(); +} +inline void Node::set_has_drop_owned_stmt() { + _oneof_case_[0] = kDropOwnedStmt; +} +inline void Node::clear_drop_owned_stmt() { + if (_internal_has_drop_owned_stmt()) { + if (GetArena() == nullptr) { + delete node_.drop_owned_stmt_; + } + clear_has_node(); + } +} +inline ::pg_query::DropOwnedStmt* Node::release_drop_owned_stmt() { + // @@protoc_insertion_point(field_release:pg_query.Node.drop_owned_stmt) + if (_internal_has_drop_owned_stmt()) { + clear_has_node(); + ::pg_query::DropOwnedStmt* temp = node_.drop_owned_stmt_; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + node_.drop_owned_stmt_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline const ::pg_query::DropOwnedStmt& Node::_internal_drop_owned_stmt() const { + return _internal_has_drop_owned_stmt() + ? *node_.drop_owned_stmt_ + : reinterpret_cast< ::pg_query::DropOwnedStmt&>(::pg_query::_DropOwnedStmt_default_instance_); +} +inline const ::pg_query::DropOwnedStmt& Node::drop_owned_stmt() const { + // @@protoc_insertion_point(field_get:pg_query.Node.drop_owned_stmt) + return _internal_drop_owned_stmt(); +} +inline ::pg_query::DropOwnedStmt* Node::unsafe_arena_release_drop_owned_stmt() { + // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.drop_owned_stmt) + if (_internal_has_drop_owned_stmt()) { + clear_has_node(); + ::pg_query::DropOwnedStmt* temp = node_.drop_owned_stmt_; + node_.drop_owned_stmt_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline void Node::unsafe_arena_set_allocated_drop_owned_stmt(::pg_query::DropOwnedStmt* drop_owned_stmt) { + clear_node(); + if (drop_owned_stmt) { + set_has_drop_owned_stmt(); + node_.drop_owned_stmt_ = drop_owned_stmt; + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.drop_owned_stmt) +} +inline ::pg_query::DropOwnedStmt* Node::_internal_mutable_drop_owned_stmt() { + if (!_internal_has_drop_owned_stmt()) { + clear_node(); + set_has_drop_owned_stmt(); + node_.drop_owned_stmt_ = CreateMaybeMessage< ::pg_query::DropOwnedStmt >(GetArena()); + } + return node_.drop_owned_stmt_; +} +inline ::pg_query::DropOwnedStmt* Node::mutable_drop_owned_stmt() { + // @@protoc_insertion_point(field_mutable:pg_query.Node.drop_owned_stmt) + return _internal_mutable_drop_owned_stmt(); +} + +// .pg_query.ReassignOwnedStmt reassign_owned_stmt = 127 [json_name = "ReassignOwnedStmt"]; +inline bool Node::_internal_has_reassign_owned_stmt() const { + return node_case() == kReassignOwnedStmt; +} +inline bool Node::has_reassign_owned_stmt() const { + return _internal_has_reassign_owned_stmt(); +} +inline void Node::set_has_reassign_owned_stmt() { + _oneof_case_[0] = kReassignOwnedStmt; +} +inline void Node::clear_reassign_owned_stmt() { + if (_internal_has_reassign_owned_stmt()) { + if (GetArena() == nullptr) { + delete node_.reassign_owned_stmt_; + } + clear_has_node(); + } +} +inline ::pg_query::ReassignOwnedStmt* Node::release_reassign_owned_stmt() { + // @@protoc_insertion_point(field_release:pg_query.Node.reassign_owned_stmt) + if (_internal_has_reassign_owned_stmt()) { + clear_has_node(); + ::pg_query::ReassignOwnedStmt* temp = node_.reassign_owned_stmt_; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + node_.reassign_owned_stmt_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline const ::pg_query::ReassignOwnedStmt& Node::_internal_reassign_owned_stmt() const { + return _internal_has_reassign_owned_stmt() + ? *node_.reassign_owned_stmt_ + : reinterpret_cast< ::pg_query::ReassignOwnedStmt&>(::pg_query::_ReassignOwnedStmt_default_instance_); +} +inline const ::pg_query::ReassignOwnedStmt& Node::reassign_owned_stmt() const { + // @@protoc_insertion_point(field_get:pg_query.Node.reassign_owned_stmt) + return _internal_reassign_owned_stmt(); +} +inline ::pg_query::ReassignOwnedStmt* Node::unsafe_arena_release_reassign_owned_stmt() { + // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.reassign_owned_stmt) + if (_internal_has_reassign_owned_stmt()) { + clear_has_node(); + ::pg_query::ReassignOwnedStmt* temp = node_.reassign_owned_stmt_; + node_.reassign_owned_stmt_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline void Node::unsafe_arena_set_allocated_reassign_owned_stmt(::pg_query::ReassignOwnedStmt* reassign_owned_stmt) { + clear_node(); + if (reassign_owned_stmt) { + set_has_reassign_owned_stmt(); + node_.reassign_owned_stmt_ = reassign_owned_stmt; + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.reassign_owned_stmt) +} +inline ::pg_query::ReassignOwnedStmt* Node::_internal_mutable_reassign_owned_stmt() { + if (!_internal_has_reassign_owned_stmt()) { + clear_node(); + set_has_reassign_owned_stmt(); + node_.reassign_owned_stmt_ = CreateMaybeMessage< ::pg_query::ReassignOwnedStmt >(GetArena()); + } + return node_.reassign_owned_stmt_; +} +inline ::pg_query::ReassignOwnedStmt* Node::mutable_reassign_owned_stmt() { + // @@protoc_insertion_point(field_mutable:pg_query.Node.reassign_owned_stmt) + return _internal_mutable_reassign_owned_stmt(); +} + +// .pg_query.CompositeTypeStmt composite_type_stmt = 128 [json_name = "CompositeTypeStmt"]; +inline bool Node::_internal_has_composite_type_stmt() const { + return node_case() == kCompositeTypeStmt; +} +inline bool Node::has_composite_type_stmt() const { + return _internal_has_composite_type_stmt(); +} +inline void Node::set_has_composite_type_stmt() { + _oneof_case_[0] = kCompositeTypeStmt; +} +inline void Node::clear_composite_type_stmt() { + if (_internal_has_composite_type_stmt()) { + if (GetArena() == nullptr) { + delete node_.composite_type_stmt_; + } + clear_has_node(); + } +} +inline ::pg_query::CompositeTypeStmt* Node::release_composite_type_stmt() { + // @@protoc_insertion_point(field_release:pg_query.Node.composite_type_stmt) + if (_internal_has_composite_type_stmt()) { + clear_has_node(); + ::pg_query::CompositeTypeStmt* temp = node_.composite_type_stmt_; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + node_.composite_type_stmt_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline const ::pg_query::CompositeTypeStmt& Node::_internal_composite_type_stmt() const { + return _internal_has_composite_type_stmt() + ? *node_.composite_type_stmt_ + : reinterpret_cast< ::pg_query::CompositeTypeStmt&>(::pg_query::_CompositeTypeStmt_default_instance_); +} +inline const ::pg_query::CompositeTypeStmt& Node::composite_type_stmt() const { + // @@protoc_insertion_point(field_get:pg_query.Node.composite_type_stmt) + return _internal_composite_type_stmt(); +} +inline ::pg_query::CompositeTypeStmt* Node::unsafe_arena_release_composite_type_stmt() { + // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.composite_type_stmt) + if (_internal_has_composite_type_stmt()) { + clear_has_node(); + ::pg_query::CompositeTypeStmt* temp = node_.composite_type_stmt_; + node_.composite_type_stmt_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline void Node::unsafe_arena_set_allocated_composite_type_stmt(::pg_query::CompositeTypeStmt* composite_type_stmt) { + clear_node(); + if (composite_type_stmt) { + set_has_composite_type_stmt(); + node_.composite_type_stmt_ = composite_type_stmt; + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.composite_type_stmt) +} +inline ::pg_query::CompositeTypeStmt* Node::_internal_mutable_composite_type_stmt() { + if (!_internal_has_composite_type_stmt()) { + clear_node(); + set_has_composite_type_stmt(); + node_.composite_type_stmt_ = CreateMaybeMessage< ::pg_query::CompositeTypeStmt >(GetArena()); + } + return node_.composite_type_stmt_; +} +inline ::pg_query::CompositeTypeStmt* Node::mutable_composite_type_stmt() { + // @@protoc_insertion_point(field_mutable:pg_query.Node.composite_type_stmt) + return _internal_mutable_composite_type_stmt(); +} + +// .pg_query.CreateEnumStmt create_enum_stmt = 129 [json_name = "CreateEnumStmt"]; +inline bool Node::_internal_has_create_enum_stmt() const { + return node_case() == kCreateEnumStmt; +} +inline bool Node::has_create_enum_stmt() const { + return _internal_has_create_enum_stmt(); +} +inline void Node::set_has_create_enum_stmt() { + _oneof_case_[0] = kCreateEnumStmt; +} +inline void Node::clear_create_enum_stmt() { + if (_internal_has_create_enum_stmt()) { + if (GetArena() == nullptr) { + delete node_.create_enum_stmt_; + } + clear_has_node(); + } +} +inline ::pg_query::CreateEnumStmt* Node::release_create_enum_stmt() { + // @@protoc_insertion_point(field_release:pg_query.Node.create_enum_stmt) + if (_internal_has_create_enum_stmt()) { + clear_has_node(); + ::pg_query::CreateEnumStmt* temp = node_.create_enum_stmt_; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + node_.create_enum_stmt_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline const ::pg_query::CreateEnumStmt& Node::_internal_create_enum_stmt() const { + return _internal_has_create_enum_stmt() + ? *node_.create_enum_stmt_ + : reinterpret_cast< ::pg_query::CreateEnumStmt&>(::pg_query::_CreateEnumStmt_default_instance_); +} +inline const ::pg_query::CreateEnumStmt& Node::create_enum_stmt() const { + // @@protoc_insertion_point(field_get:pg_query.Node.create_enum_stmt) + return _internal_create_enum_stmt(); +} +inline ::pg_query::CreateEnumStmt* Node::unsafe_arena_release_create_enum_stmt() { + // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.create_enum_stmt) + if (_internal_has_create_enum_stmt()) { + clear_has_node(); + ::pg_query::CreateEnumStmt* temp = node_.create_enum_stmt_; + node_.create_enum_stmt_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline void Node::unsafe_arena_set_allocated_create_enum_stmt(::pg_query::CreateEnumStmt* create_enum_stmt) { + clear_node(); + if (create_enum_stmt) { + set_has_create_enum_stmt(); + node_.create_enum_stmt_ = create_enum_stmt; + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.create_enum_stmt) +} +inline ::pg_query::CreateEnumStmt* Node::_internal_mutable_create_enum_stmt() { + if (!_internal_has_create_enum_stmt()) { + clear_node(); + set_has_create_enum_stmt(); + node_.create_enum_stmt_ = CreateMaybeMessage< ::pg_query::CreateEnumStmt >(GetArena()); + } + return node_.create_enum_stmt_; +} +inline ::pg_query::CreateEnumStmt* Node::mutable_create_enum_stmt() { + // @@protoc_insertion_point(field_mutable:pg_query.Node.create_enum_stmt) + return _internal_mutable_create_enum_stmt(); +} + +// .pg_query.CreateRangeStmt create_range_stmt = 130 [json_name = "CreateRangeStmt"]; +inline bool Node::_internal_has_create_range_stmt() const { + return node_case() == kCreateRangeStmt; +} +inline bool Node::has_create_range_stmt() const { + return _internal_has_create_range_stmt(); +} +inline void Node::set_has_create_range_stmt() { + _oneof_case_[0] = kCreateRangeStmt; +} +inline void Node::clear_create_range_stmt() { + if (_internal_has_create_range_stmt()) { + if (GetArena() == nullptr) { + delete node_.create_range_stmt_; + } + clear_has_node(); + } +} +inline ::pg_query::CreateRangeStmt* Node::release_create_range_stmt() { + // @@protoc_insertion_point(field_release:pg_query.Node.create_range_stmt) + if (_internal_has_create_range_stmt()) { + clear_has_node(); + ::pg_query::CreateRangeStmt* temp = node_.create_range_stmt_; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + node_.create_range_stmt_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline const ::pg_query::CreateRangeStmt& Node::_internal_create_range_stmt() const { + return _internal_has_create_range_stmt() + ? *node_.create_range_stmt_ + : reinterpret_cast< ::pg_query::CreateRangeStmt&>(::pg_query::_CreateRangeStmt_default_instance_); +} +inline const ::pg_query::CreateRangeStmt& Node::create_range_stmt() const { + // @@protoc_insertion_point(field_get:pg_query.Node.create_range_stmt) + return _internal_create_range_stmt(); +} +inline ::pg_query::CreateRangeStmt* Node::unsafe_arena_release_create_range_stmt() { + // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.create_range_stmt) + if (_internal_has_create_range_stmt()) { + clear_has_node(); + ::pg_query::CreateRangeStmt* temp = node_.create_range_stmt_; + node_.create_range_stmt_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline void Node::unsafe_arena_set_allocated_create_range_stmt(::pg_query::CreateRangeStmt* create_range_stmt) { + clear_node(); + if (create_range_stmt) { + set_has_create_range_stmt(); + node_.create_range_stmt_ = create_range_stmt; + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.create_range_stmt) +} +inline ::pg_query::CreateRangeStmt* Node::_internal_mutable_create_range_stmt() { + if (!_internal_has_create_range_stmt()) { + clear_node(); + set_has_create_range_stmt(); + node_.create_range_stmt_ = CreateMaybeMessage< ::pg_query::CreateRangeStmt >(GetArena()); + } + return node_.create_range_stmt_; +} +inline ::pg_query::CreateRangeStmt* Node::mutable_create_range_stmt() { + // @@protoc_insertion_point(field_mutable:pg_query.Node.create_range_stmt) + return _internal_mutable_create_range_stmt(); +} + +// .pg_query.AlterEnumStmt alter_enum_stmt = 131 [json_name = "AlterEnumStmt"]; +inline bool Node::_internal_has_alter_enum_stmt() const { + return node_case() == kAlterEnumStmt; +} +inline bool Node::has_alter_enum_stmt() const { + return _internal_has_alter_enum_stmt(); +} +inline void Node::set_has_alter_enum_stmt() { + _oneof_case_[0] = kAlterEnumStmt; +} +inline void Node::clear_alter_enum_stmt() { + if (_internal_has_alter_enum_stmt()) { + if (GetArena() == nullptr) { + delete node_.alter_enum_stmt_; + } + clear_has_node(); + } +} +inline ::pg_query::AlterEnumStmt* Node::release_alter_enum_stmt() { + // @@protoc_insertion_point(field_release:pg_query.Node.alter_enum_stmt) + if (_internal_has_alter_enum_stmt()) { + clear_has_node(); + ::pg_query::AlterEnumStmt* temp = node_.alter_enum_stmt_; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + node_.alter_enum_stmt_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline const ::pg_query::AlterEnumStmt& Node::_internal_alter_enum_stmt() const { + return _internal_has_alter_enum_stmt() + ? *node_.alter_enum_stmt_ + : reinterpret_cast< ::pg_query::AlterEnumStmt&>(::pg_query::_AlterEnumStmt_default_instance_); +} +inline const ::pg_query::AlterEnumStmt& Node::alter_enum_stmt() const { + // @@protoc_insertion_point(field_get:pg_query.Node.alter_enum_stmt) + return _internal_alter_enum_stmt(); +} +inline ::pg_query::AlterEnumStmt* Node::unsafe_arena_release_alter_enum_stmt() { + // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.alter_enum_stmt) + if (_internal_has_alter_enum_stmt()) { + clear_has_node(); + ::pg_query::AlterEnumStmt* temp = node_.alter_enum_stmt_; + node_.alter_enum_stmt_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline void Node::unsafe_arena_set_allocated_alter_enum_stmt(::pg_query::AlterEnumStmt* alter_enum_stmt) { + clear_node(); + if (alter_enum_stmt) { + set_has_alter_enum_stmt(); + node_.alter_enum_stmt_ = alter_enum_stmt; + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.alter_enum_stmt) +} +inline ::pg_query::AlterEnumStmt* Node::_internal_mutable_alter_enum_stmt() { + if (!_internal_has_alter_enum_stmt()) { + clear_node(); + set_has_alter_enum_stmt(); + node_.alter_enum_stmt_ = CreateMaybeMessage< ::pg_query::AlterEnumStmt >(GetArena()); + } + return node_.alter_enum_stmt_; +} +inline ::pg_query::AlterEnumStmt* Node::mutable_alter_enum_stmt() { + // @@protoc_insertion_point(field_mutable:pg_query.Node.alter_enum_stmt) + return _internal_mutable_alter_enum_stmt(); +} + +// .pg_query.AlterTSDictionaryStmt alter_tsdictionary_stmt = 132 [json_name = "AlterTSDictionaryStmt"]; +inline bool Node::_internal_has_alter_tsdictionary_stmt() const { + return node_case() == kAlterTsdictionaryStmt; +} +inline bool Node::has_alter_tsdictionary_stmt() const { + return _internal_has_alter_tsdictionary_stmt(); +} +inline void Node::set_has_alter_tsdictionary_stmt() { + _oneof_case_[0] = kAlterTsdictionaryStmt; +} +inline void Node::clear_alter_tsdictionary_stmt() { + if (_internal_has_alter_tsdictionary_stmt()) { + if (GetArena() == nullptr) { + delete node_.alter_tsdictionary_stmt_; + } + clear_has_node(); + } +} +inline ::pg_query::AlterTSDictionaryStmt* Node::release_alter_tsdictionary_stmt() { + // @@protoc_insertion_point(field_release:pg_query.Node.alter_tsdictionary_stmt) + if (_internal_has_alter_tsdictionary_stmt()) { + clear_has_node(); + ::pg_query::AlterTSDictionaryStmt* temp = node_.alter_tsdictionary_stmt_; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + node_.alter_tsdictionary_stmt_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline const ::pg_query::AlterTSDictionaryStmt& Node::_internal_alter_tsdictionary_stmt() const { + return _internal_has_alter_tsdictionary_stmt() + ? *node_.alter_tsdictionary_stmt_ + : reinterpret_cast< ::pg_query::AlterTSDictionaryStmt&>(::pg_query::_AlterTSDictionaryStmt_default_instance_); +} +inline const ::pg_query::AlterTSDictionaryStmt& Node::alter_tsdictionary_stmt() const { + // @@protoc_insertion_point(field_get:pg_query.Node.alter_tsdictionary_stmt) + return _internal_alter_tsdictionary_stmt(); +} +inline ::pg_query::AlterTSDictionaryStmt* Node::unsafe_arena_release_alter_tsdictionary_stmt() { + // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.alter_tsdictionary_stmt) + if (_internal_has_alter_tsdictionary_stmt()) { + clear_has_node(); + ::pg_query::AlterTSDictionaryStmt* temp = node_.alter_tsdictionary_stmt_; + node_.alter_tsdictionary_stmt_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline void Node::unsafe_arena_set_allocated_alter_tsdictionary_stmt(::pg_query::AlterTSDictionaryStmt* alter_tsdictionary_stmt) { + clear_node(); + if (alter_tsdictionary_stmt) { + set_has_alter_tsdictionary_stmt(); + node_.alter_tsdictionary_stmt_ = alter_tsdictionary_stmt; + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.alter_tsdictionary_stmt) +} +inline ::pg_query::AlterTSDictionaryStmt* Node::_internal_mutable_alter_tsdictionary_stmt() { + if (!_internal_has_alter_tsdictionary_stmt()) { + clear_node(); + set_has_alter_tsdictionary_stmt(); + node_.alter_tsdictionary_stmt_ = CreateMaybeMessage< ::pg_query::AlterTSDictionaryStmt >(GetArena()); + } + return node_.alter_tsdictionary_stmt_; +} +inline ::pg_query::AlterTSDictionaryStmt* Node::mutable_alter_tsdictionary_stmt() { + // @@protoc_insertion_point(field_mutable:pg_query.Node.alter_tsdictionary_stmt) + return _internal_mutable_alter_tsdictionary_stmt(); +} + +// .pg_query.AlterTSConfigurationStmt alter_tsconfiguration_stmt = 133 [json_name = "AlterTSConfigurationStmt"]; +inline bool Node::_internal_has_alter_tsconfiguration_stmt() const { + return node_case() == kAlterTsconfigurationStmt; +} +inline bool Node::has_alter_tsconfiguration_stmt() const { + return _internal_has_alter_tsconfiguration_stmt(); +} +inline void Node::set_has_alter_tsconfiguration_stmt() { + _oneof_case_[0] = kAlterTsconfigurationStmt; +} +inline void Node::clear_alter_tsconfiguration_stmt() { + if (_internal_has_alter_tsconfiguration_stmt()) { + if (GetArena() == nullptr) { + delete node_.alter_tsconfiguration_stmt_; + } + clear_has_node(); + } +} +inline ::pg_query::AlterTSConfigurationStmt* Node::release_alter_tsconfiguration_stmt() { + // @@protoc_insertion_point(field_release:pg_query.Node.alter_tsconfiguration_stmt) + if (_internal_has_alter_tsconfiguration_stmt()) { + clear_has_node(); + ::pg_query::AlterTSConfigurationStmt* temp = node_.alter_tsconfiguration_stmt_; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + node_.alter_tsconfiguration_stmt_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline const ::pg_query::AlterTSConfigurationStmt& Node::_internal_alter_tsconfiguration_stmt() const { + return _internal_has_alter_tsconfiguration_stmt() + ? *node_.alter_tsconfiguration_stmt_ + : reinterpret_cast< ::pg_query::AlterTSConfigurationStmt&>(::pg_query::_AlterTSConfigurationStmt_default_instance_); +} +inline const ::pg_query::AlterTSConfigurationStmt& Node::alter_tsconfiguration_stmt() const { + // @@protoc_insertion_point(field_get:pg_query.Node.alter_tsconfiguration_stmt) + return _internal_alter_tsconfiguration_stmt(); +} +inline ::pg_query::AlterTSConfigurationStmt* Node::unsafe_arena_release_alter_tsconfiguration_stmt() { + // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.alter_tsconfiguration_stmt) + if (_internal_has_alter_tsconfiguration_stmt()) { + clear_has_node(); + ::pg_query::AlterTSConfigurationStmt* temp = node_.alter_tsconfiguration_stmt_; + node_.alter_tsconfiguration_stmt_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline void Node::unsafe_arena_set_allocated_alter_tsconfiguration_stmt(::pg_query::AlterTSConfigurationStmt* alter_tsconfiguration_stmt) { + clear_node(); + if (alter_tsconfiguration_stmt) { + set_has_alter_tsconfiguration_stmt(); + node_.alter_tsconfiguration_stmt_ = alter_tsconfiguration_stmt; + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.alter_tsconfiguration_stmt) +} +inline ::pg_query::AlterTSConfigurationStmt* Node::_internal_mutable_alter_tsconfiguration_stmt() { + if (!_internal_has_alter_tsconfiguration_stmt()) { + clear_node(); + set_has_alter_tsconfiguration_stmt(); + node_.alter_tsconfiguration_stmt_ = CreateMaybeMessage< ::pg_query::AlterTSConfigurationStmt >(GetArena()); + } + return node_.alter_tsconfiguration_stmt_; +} +inline ::pg_query::AlterTSConfigurationStmt* Node::mutable_alter_tsconfiguration_stmt() { + // @@protoc_insertion_point(field_mutable:pg_query.Node.alter_tsconfiguration_stmt) + return _internal_mutable_alter_tsconfiguration_stmt(); +} + +// .pg_query.CreateFdwStmt create_fdw_stmt = 134 [json_name = "CreateFdwStmt"]; +inline bool Node::_internal_has_create_fdw_stmt() const { + return node_case() == kCreateFdwStmt; +} +inline bool Node::has_create_fdw_stmt() const { + return _internal_has_create_fdw_stmt(); +} +inline void Node::set_has_create_fdw_stmt() { + _oneof_case_[0] = kCreateFdwStmt; +} +inline void Node::clear_create_fdw_stmt() { + if (_internal_has_create_fdw_stmt()) { + if (GetArena() == nullptr) { + delete node_.create_fdw_stmt_; + } + clear_has_node(); + } +} +inline ::pg_query::CreateFdwStmt* Node::release_create_fdw_stmt() { + // @@protoc_insertion_point(field_release:pg_query.Node.create_fdw_stmt) + if (_internal_has_create_fdw_stmt()) { + clear_has_node(); + ::pg_query::CreateFdwStmt* temp = node_.create_fdw_stmt_; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + node_.create_fdw_stmt_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline const ::pg_query::CreateFdwStmt& Node::_internal_create_fdw_stmt() const { + return _internal_has_create_fdw_stmt() + ? *node_.create_fdw_stmt_ + : reinterpret_cast< ::pg_query::CreateFdwStmt&>(::pg_query::_CreateFdwStmt_default_instance_); +} +inline const ::pg_query::CreateFdwStmt& Node::create_fdw_stmt() const { + // @@protoc_insertion_point(field_get:pg_query.Node.create_fdw_stmt) + return _internal_create_fdw_stmt(); +} +inline ::pg_query::CreateFdwStmt* Node::unsafe_arena_release_create_fdw_stmt() { + // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.create_fdw_stmt) + if (_internal_has_create_fdw_stmt()) { + clear_has_node(); + ::pg_query::CreateFdwStmt* temp = node_.create_fdw_stmt_; + node_.create_fdw_stmt_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline void Node::unsafe_arena_set_allocated_create_fdw_stmt(::pg_query::CreateFdwStmt* create_fdw_stmt) { + clear_node(); + if (create_fdw_stmt) { + set_has_create_fdw_stmt(); + node_.create_fdw_stmt_ = create_fdw_stmt; + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.create_fdw_stmt) +} +inline ::pg_query::CreateFdwStmt* Node::_internal_mutable_create_fdw_stmt() { + if (!_internal_has_create_fdw_stmt()) { + clear_node(); + set_has_create_fdw_stmt(); + node_.create_fdw_stmt_ = CreateMaybeMessage< ::pg_query::CreateFdwStmt >(GetArena()); + } + return node_.create_fdw_stmt_; +} +inline ::pg_query::CreateFdwStmt* Node::mutable_create_fdw_stmt() { + // @@protoc_insertion_point(field_mutable:pg_query.Node.create_fdw_stmt) + return _internal_mutable_create_fdw_stmt(); +} + +// .pg_query.AlterFdwStmt alter_fdw_stmt = 135 [json_name = "AlterFdwStmt"]; +inline bool Node::_internal_has_alter_fdw_stmt() const { + return node_case() == kAlterFdwStmt; +} +inline bool Node::has_alter_fdw_stmt() const { + return _internal_has_alter_fdw_stmt(); +} +inline void Node::set_has_alter_fdw_stmt() { + _oneof_case_[0] = kAlterFdwStmt; +} +inline void Node::clear_alter_fdw_stmt() { + if (_internal_has_alter_fdw_stmt()) { + if (GetArena() == nullptr) { + delete node_.alter_fdw_stmt_; + } + clear_has_node(); + } +} +inline ::pg_query::AlterFdwStmt* Node::release_alter_fdw_stmt() { + // @@protoc_insertion_point(field_release:pg_query.Node.alter_fdw_stmt) + if (_internal_has_alter_fdw_stmt()) { + clear_has_node(); + ::pg_query::AlterFdwStmt* temp = node_.alter_fdw_stmt_; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + node_.alter_fdw_stmt_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline const ::pg_query::AlterFdwStmt& Node::_internal_alter_fdw_stmt() const { + return _internal_has_alter_fdw_stmt() + ? *node_.alter_fdw_stmt_ + : reinterpret_cast< ::pg_query::AlterFdwStmt&>(::pg_query::_AlterFdwStmt_default_instance_); +} +inline const ::pg_query::AlterFdwStmt& Node::alter_fdw_stmt() const { + // @@protoc_insertion_point(field_get:pg_query.Node.alter_fdw_stmt) + return _internal_alter_fdw_stmt(); +} +inline ::pg_query::AlterFdwStmt* Node::unsafe_arena_release_alter_fdw_stmt() { + // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.alter_fdw_stmt) + if (_internal_has_alter_fdw_stmt()) { + clear_has_node(); + ::pg_query::AlterFdwStmt* temp = node_.alter_fdw_stmt_; + node_.alter_fdw_stmt_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline void Node::unsafe_arena_set_allocated_alter_fdw_stmt(::pg_query::AlterFdwStmt* alter_fdw_stmt) { + clear_node(); + if (alter_fdw_stmt) { + set_has_alter_fdw_stmt(); + node_.alter_fdw_stmt_ = alter_fdw_stmt; + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.alter_fdw_stmt) +} +inline ::pg_query::AlterFdwStmt* Node::_internal_mutable_alter_fdw_stmt() { + if (!_internal_has_alter_fdw_stmt()) { + clear_node(); + set_has_alter_fdw_stmt(); + node_.alter_fdw_stmt_ = CreateMaybeMessage< ::pg_query::AlterFdwStmt >(GetArena()); + } + return node_.alter_fdw_stmt_; +} +inline ::pg_query::AlterFdwStmt* Node::mutable_alter_fdw_stmt() { + // @@protoc_insertion_point(field_mutable:pg_query.Node.alter_fdw_stmt) + return _internal_mutable_alter_fdw_stmt(); +} + +// .pg_query.CreateForeignServerStmt create_foreign_server_stmt = 136 [json_name = "CreateForeignServerStmt"]; +inline bool Node::_internal_has_create_foreign_server_stmt() const { + return node_case() == kCreateForeignServerStmt; +} +inline bool Node::has_create_foreign_server_stmt() const { + return _internal_has_create_foreign_server_stmt(); +} +inline void Node::set_has_create_foreign_server_stmt() { + _oneof_case_[0] = kCreateForeignServerStmt; +} +inline void Node::clear_create_foreign_server_stmt() { + if (_internal_has_create_foreign_server_stmt()) { + if (GetArena() == nullptr) { + delete node_.create_foreign_server_stmt_; + } + clear_has_node(); + } +} +inline ::pg_query::CreateForeignServerStmt* Node::release_create_foreign_server_stmt() { + // @@protoc_insertion_point(field_release:pg_query.Node.create_foreign_server_stmt) + if (_internal_has_create_foreign_server_stmt()) { + clear_has_node(); + ::pg_query::CreateForeignServerStmt* temp = node_.create_foreign_server_stmt_; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + node_.create_foreign_server_stmt_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline const ::pg_query::CreateForeignServerStmt& Node::_internal_create_foreign_server_stmt() const { + return _internal_has_create_foreign_server_stmt() + ? *node_.create_foreign_server_stmt_ + : reinterpret_cast< ::pg_query::CreateForeignServerStmt&>(::pg_query::_CreateForeignServerStmt_default_instance_); +} +inline const ::pg_query::CreateForeignServerStmt& Node::create_foreign_server_stmt() const { + // @@protoc_insertion_point(field_get:pg_query.Node.create_foreign_server_stmt) + return _internal_create_foreign_server_stmt(); +} +inline ::pg_query::CreateForeignServerStmt* Node::unsafe_arena_release_create_foreign_server_stmt() { + // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.create_foreign_server_stmt) + if (_internal_has_create_foreign_server_stmt()) { + clear_has_node(); + ::pg_query::CreateForeignServerStmt* temp = node_.create_foreign_server_stmt_; + node_.create_foreign_server_stmt_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline void Node::unsafe_arena_set_allocated_create_foreign_server_stmt(::pg_query::CreateForeignServerStmt* create_foreign_server_stmt) { + clear_node(); + if (create_foreign_server_stmt) { + set_has_create_foreign_server_stmt(); + node_.create_foreign_server_stmt_ = create_foreign_server_stmt; + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.create_foreign_server_stmt) +} +inline ::pg_query::CreateForeignServerStmt* Node::_internal_mutable_create_foreign_server_stmt() { + if (!_internal_has_create_foreign_server_stmt()) { + clear_node(); + set_has_create_foreign_server_stmt(); + node_.create_foreign_server_stmt_ = CreateMaybeMessage< ::pg_query::CreateForeignServerStmt >(GetArena()); + } + return node_.create_foreign_server_stmt_; +} +inline ::pg_query::CreateForeignServerStmt* Node::mutable_create_foreign_server_stmt() { + // @@protoc_insertion_point(field_mutable:pg_query.Node.create_foreign_server_stmt) + return _internal_mutable_create_foreign_server_stmt(); +} + +// .pg_query.AlterForeignServerStmt alter_foreign_server_stmt = 137 [json_name = "AlterForeignServerStmt"]; +inline bool Node::_internal_has_alter_foreign_server_stmt() const { + return node_case() == kAlterForeignServerStmt; +} +inline bool Node::has_alter_foreign_server_stmt() const { + return _internal_has_alter_foreign_server_stmt(); +} +inline void Node::set_has_alter_foreign_server_stmt() { + _oneof_case_[0] = kAlterForeignServerStmt; +} +inline void Node::clear_alter_foreign_server_stmt() { + if (_internal_has_alter_foreign_server_stmt()) { + if (GetArena() == nullptr) { + delete node_.alter_foreign_server_stmt_; + } + clear_has_node(); + } +} +inline ::pg_query::AlterForeignServerStmt* Node::release_alter_foreign_server_stmt() { + // @@protoc_insertion_point(field_release:pg_query.Node.alter_foreign_server_stmt) + if (_internal_has_alter_foreign_server_stmt()) { + clear_has_node(); + ::pg_query::AlterForeignServerStmt* temp = node_.alter_foreign_server_stmt_; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + node_.alter_foreign_server_stmt_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline const ::pg_query::AlterForeignServerStmt& Node::_internal_alter_foreign_server_stmt() const { + return _internal_has_alter_foreign_server_stmt() + ? *node_.alter_foreign_server_stmt_ + : reinterpret_cast< ::pg_query::AlterForeignServerStmt&>(::pg_query::_AlterForeignServerStmt_default_instance_); +} +inline const ::pg_query::AlterForeignServerStmt& Node::alter_foreign_server_stmt() const { + // @@protoc_insertion_point(field_get:pg_query.Node.alter_foreign_server_stmt) + return _internal_alter_foreign_server_stmt(); +} +inline ::pg_query::AlterForeignServerStmt* Node::unsafe_arena_release_alter_foreign_server_stmt() { + // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.alter_foreign_server_stmt) + if (_internal_has_alter_foreign_server_stmt()) { + clear_has_node(); + ::pg_query::AlterForeignServerStmt* temp = node_.alter_foreign_server_stmt_; + node_.alter_foreign_server_stmt_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline void Node::unsafe_arena_set_allocated_alter_foreign_server_stmt(::pg_query::AlterForeignServerStmt* alter_foreign_server_stmt) { + clear_node(); + if (alter_foreign_server_stmt) { + set_has_alter_foreign_server_stmt(); + node_.alter_foreign_server_stmt_ = alter_foreign_server_stmt; + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.alter_foreign_server_stmt) +} +inline ::pg_query::AlterForeignServerStmt* Node::_internal_mutable_alter_foreign_server_stmt() { + if (!_internal_has_alter_foreign_server_stmt()) { + clear_node(); + set_has_alter_foreign_server_stmt(); + node_.alter_foreign_server_stmt_ = CreateMaybeMessage< ::pg_query::AlterForeignServerStmt >(GetArena()); + } + return node_.alter_foreign_server_stmt_; +} +inline ::pg_query::AlterForeignServerStmt* Node::mutable_alter_foreign_server_stmt() { + // @@protoc_insertion_point(field_mutable:pg_query.Node.alter_foreign_server_stmt) + return _internal_mutable_alter_foreign_server_stmt(); +} + +// .pg_query.CreateUserMappingStmt create_user_mapping_stmt = 138 [json_name = "CreateUserMappingStmt"]; +inline bool Node::_internal_has_create_user_mapping_stmt() const { + return node_case() == kCreateUserMappingStmt; +} +inline bool Node::has_create_user_mapping_stmt() const { + return _internal_has_create_user_mapping_stmt(); +} +inline void Node::set_has_create_user_mapping_stmt() { + _oneof_case_[0] = kCreateUserMappingStmt; +} +inline void Node::clear_create_user_mapping_stmt() { + if (_internal_has_create_user_mapping_stmt()) { + if (GetArena() == nullptr) { + delete node_.create_user_mapping_stmt_; + } + clear_has_node(); + } +} +inline ::pg_query::CreateUserMappingStmt* Node::release_create_user_mapping_stmt() { + // @@protoc_insertion_point(field_release:pg_query.Node.create_user_mapping_stmt) + if (_internal_has_create_user_mapping_stmt()) { + clear_has_node(); + ::pg_query::CreateUserMappingStmt* temp = node_.create_user_mapping_stmt_; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + node_.create_user_mapping_stmt_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline const ::pg_query::CreateUserMappingStmt& Node::_internal_create_user_mapping_stmt() const { + return _internal_has_create_user_mapping_stmt() + ? *node_.create_user_mapping_stmt_ + : reinterpret_cast< ::pg_query::CreateUserMappingStmt&>(::pg_query::_CreateUserMappingStmt_default_instance_); +} +inline const ::pg_query::CreateUserMappingStmt& Node::create_user_mapping_stmt() const { + // @@protoc_insertion_point(field_get:pg_query.Node.create_user_mapping_stmt) + return _internal_create_user_mapping_stmt(); +} +inline ::pg_query::CreateUserMappingStmt* Node::unsafe_arena_release_create_user_mapping_stmt() { + // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.create_user_mapping_stmt) + if (_internal_has_create_user_mapping_stmt()) { + clear_has_node(); + ::pg_query::CreateUserMappingStmt* temp = node_.create_user_mapping_stmt_; + node_.create_user_mapping_stmt_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline void Node::unsafe_arena_set_allocated_create_user_mapping_stmt(::pg_query::CreateUserMappingStmt* create_user_mapping_stmt) { + clear_node(); + if (create_user_mapping_stmt) { + set_has_create_user_mapping_stmt(); + node_.create_user_mapping_stmt_ = create_user_mapping_stmt; + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.create_user_mapping_stmt) +} +inline ::pg_query::CreateUserMappingStmt* Node::_internal_mutable_create_user_mapping_stmt() { + if (!_internal_has_create_user_mapping_stmt()) { + clear_node(); + set_has_create_user_mapping_stmt(); + node_.create_user_mapping_stmt_ = CreateMaybeMessage< ::pg_query::CreateUserMappingStmt >(GetArena()); + } + return node_.create_user_mapping_stmt_; +} +inline ::pg_query::CreateUserMappingStmt* Node::mutable_create_user_mapping_stmt() { + // @@protoc_insertion_point(field_mutable:pg_query.Node.create_user_mapping_stmt) + return _internal_mutable_create_user_mapping_stmt(); +} + +// .pg_query.AlterUserMappingStmt alter_user_mapping_stmt = 139 [json_name = "AlterUserMappingStmt"]; +inline bool Node::_internal_has_alter_user_mapping_stmt() const { + return node_case() == kAlterUserMappingStmt; +} +inline bool Node::has_alter_user_mapping_stmt() const { + return _internal_has_alter_user_mapping_stmt(); +} +inline void Node::set_has_alter_user_mapping_stmt() { + _oneof_case_[0] = kAlterUserMappingStmt; +} +inline void Node::clear_alter_user_mapping_stmt() { + if (_internal_has_alter_user_mapping_stmt()) { + if (GetArena() == nullptr) { + delete node_.alter_user_mapping_stmt_; + } + clear_has_node(); + } +} +inline ::pg_query::AlterUserMappingStmt* Node::release_alter_user_mapping_stmt() { + // @@protoc_insertion_point(field_release:pg_query.Node.alter_user_mapping_stmt) + if (_internal_has_alter_user_mapping_stmt()) { + clear_has_node(); + ::pg_query::AlterUserMappingStmt* temp = node_.alter_user_mapping_stmt_; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + node_.alter_user_mapping_stmt_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline const ::pg_query::AlterUserMappingStmt& Node::_internal_alter_user_mapping_stmt() const { + return _internal_has_alter_user_mapping_stmt() + ? *node_.alter_user_mapping_stmt_ + : reinterpret_cast< ::pg_query::AlterUserMappingStmt&>(::pg_query::_AlterUserMappingStmt_default_instance_); +} +inline const ::pg_query::AlterUserMappingStmt& Node::alter_user_mapping_stmt() const { + // @@protoc_insertion_point(field_get:pg_query.Node.alter_user_mapping_stmt) + return _internal_alter_user_mapping_stmt(); +} +inline ::pg_query::AlterUserMappingStmt* Node::unsafe_arena_release_alter_user_mapping_stmt() { + // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.alter_user_mapping_stmt) + if (_internal_has_alter_user_mapping_stmt()) { + clear_has_node(); + ::pg_query::AlterUserMappingStmt* temp = node_.alter_user_mapping_stmt_; + node_.alter_user_mapping_stmt_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline void Node::unsafe_arena_set_allocated_alter_user_mapping_stmt(::pg_query::AlterUserMappingStmt* alter_user_mapping_stmt) { + clear_node(); + if (alter_user_mapping_stmt) { + set_has_alter_user_mapping_stmt(); + node_.alter_user_mapping_stmt_ = alter_user_mapping_stmt; + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.alter_user_mapping_stmt) +} +inline ::pg_query::AlterUserMappingStmt* Node::_internal_mutable_alter_user_mapping_stmt() { + if (!_internal_has_alter_user_mapping_stmt()) { + clear_node(); + set_has_alter_user_mapping_stmt(); + node_.alter_user_mapping_stmt_ = CreateMaybeMessage< ::pg_query::AlterUserMappingStmt >(GetArena()); + } + return node_.alter_user_mapping_stmt_; +} +inline ::pg_query::AlterUserMappingStmt* Node::mutable_alter_user_mapping_stmt() { + // @@protoc_insertion_point(field_mutable:pg_query.Node.alter_user_mapping_stmt) + return _internal_mutable_alter_user_mapping_stmt(); +} + +// .pg_query.DropUserMappingStmt drop_user_mapping_stmt = 140 [json_name = "DropUserMappingStmt"]; +inline bool Node::_internal_has_drop_user_mapping_stmt() const { + return node_case() == kDropUserMappingStmt; +} +inline bool Node::has_drop_user_mapping_stmt() const { + return _internal_has_drop_user_mapping_stmt(); +} +inline void Node::set_has_drop_user_mapping_stmt() { + _oneof_case_[0] = kDropUserMappingStmt; +} +inline void Node::clear_drop_user_mapping_stmt() { + if (_internal_has_drop_user_mapping_stmt()) { + if (GetArena() == nullptr) { + delete node_.drop_user_mapping_stmt_; + } + clear_has_node(); + } +} +inline ::pg_query::DropUserMappingStmt* Node::release_drop_user_mapping_stmt() { + // @@protoc_insertion_point(field_release:pg_query.Node.drop_user_mapping_stmt) + if (_internal_has_drop_user_mapping_stmt()) { + clear_has_node(); + ::pg_query::DropUserMappingStmt* temp = node_.drop_user_mapping_stmt_; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + node_.drop_user_mapping_stmt_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline const ::pg_query::DropUserMappingStmt& Node::_internal_drop_user_mapping_stmt() const { + return _internal_has_drop_user_mapping_stmt() + ? *node_.drop_user_mapping_stmt_ + : reinterpret_cast< ::pg_query::DropUserMappingStmt&>(::pg_query::_DropUserMappingStmt_default_instance_); +} +inline const ::pg_query::DropUserMappingStmt& Node::drop_user_mapping_stmt() const { + // @@protoc_insertion_point(field_get:pg_query.Node.drop_user_mapping_stmt) + return _internal_drop_user_mapping_stmt(); +} +inline ::pg_query::DropUserMappingStmt* Node::unsafe_arena_release_drop_user_mapping_stmt() { + // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.drop_user_mapping_stmt) + if (_internal_has_drop_user_mapping_stmt()) { + clear_has_node(); + ::pg_query::DropUserMappingStmt* temp = node_.drop_user_mapping_stmt_; + node_.drop_user_mapping_stmt_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline void Node::unsafe_arena_set_allocated_drop_user_mapping_stmt(::pg_query::DropUserMappingStmt* drop_user_mapping_stmt) { + clear_node(); + if (drop_user_mapping_stmt) { + set_has_drop_user_mapping_stmt(); + node_.drop_user_mapping_stmt_ = drop_user_mapping_stmt; + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.drop_user_mapping_stmt) +} +inline ::pg_query::DropUserMappingStmt* Node::_internal_mutable_drop_user_mapping_stmt() { + if (!_internal_has_drop_user_mapping_stmt()) { + clear_node(); + set_has_drop_user_mapping_stmt(); + node_.drop_user_mapping_stmt_ = CreateMaybeMessage< ::pg_query::DropUserMappingStmt >(GetArena()); + } + return node_.drop_user_mapping_stmt_; +} +inline ::pg_query::DropUserMappingStmt* Node::mutable_drop_user_mapping_stmt() { + // @@protoc_insertion_point(field_mutable:pg_query.Node.drop_user_mapping_stmt) + return _internal_mutable_drop_user_mapping_stmt(); +} + +// .pg_query.AlterTableSpaceOptionsStmt alter_table_space_options_stmt = 141 [json_name = "AlterTableSpaceOptionsStmt"]; +inline bool Node::_internal_has_alter_table_space_options_stmt() const { + return node_case() == kAlterTableSpaceOptionsStmt; +} +inline bool Node::has_alter_table_space_options_stmt() const { + return _internal_has_alter_table_space_options_stmt(); +} +inline void Node::set_has_alter_table_space_options_stmt() { + _oneof_case_[0] = kAlterTableSpaceOptionsStmt; +} +inline void Node::clear_alter_table_space_options_stmt() { + if (_internal_has_alter_table_space_options_stmt()) { + if (GetArena() == nullptr) { + delete node_.alter_table_space_options_stmt_; + } + clear_has_node(); + } +} +inline ::pg_query::AlterTableSpaceOptionsStmt* Node::release_alter_table_space_options_stmt() { + // @@protoc_insertion_point(field_release:pg_query.Node.alter_table_space_options_stmt) + if (_internal_has_alter_table_space_options_stmt()) { + clear_has_node(); + ::pg_query::AlterTableSpaceOptionsStmt* temp = node_.alter_table_space_options_stmt_; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + node_.alter_table_space_options_stmt_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline const ::pg_query::AlterTableSpaceOptionsStmt& Node::_internal_alter_table_space_options_stmt() const { + return _internal_has_alter_table_space_options_stmt() + ? *node_.alter_table_space_options_stmt_ + : reinterpret_cast< ::pg_query::AlterTableSpaceOptionsStmt&>(::pg_query::_AlterTableSpaceOptionsStmt_default_instance_); +} +inline const ::pg_query::AlterTableSpaceOptionsStmt& Node::alter_table_space_options_stmt() const { + // @@protoc_insertion_point(field_get:pg_query.Node.alter_table_space_options_stmt) + return _internal_alter_table_space_options_stmt(); +} +inline ::pg_query::AlterTableSpaceOptionsStmt* Node::unsafe_arena_release_alter_table_space_options_stmt() { + // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.alter_table_space_options_stmt) + if (_internal_has_alter_table_space_options_stmt()) { + clear_has_node(); + ::pg_query::AlterTableSpaceOptionsStmt* temp = node_.alter_table_space_options_stmt_; + node_.alter_table_space_options_stmt_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline void Node::unsafe_arena_set_allocated_alter_table_space_options_stmt(::pg_query::AlterTableSpaceOptionsStmt* alter_table_space_options_stmt) { + clear_node(); + if (alter_table_space_options_stmt) { + set_has_alter_table_space_options_stmt(); + node_.alter_table_space_options_stmt_ = alter_table_space_options_stmt; + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.alter_table_space_options_stmt) +} +inline ::pg_query::AlterTableSpaceOptionsStmt* Node::_internal_mutable_alter_table_space_options_stmt() { + if (!_internal_has_alter_table_space_options_stmt()) { + clear_node(); + set_has_alter_table_space_options_stmt(); + node_.alter_table_space_options_stmt_ = CreateMaybeMessage< ::pg_query::AlterTableSpaceOptionsStmt >(GetArena()); + } + return node_.alter_table_space_options_stmt_; +} +inline ::pg_query::AlterTableSpaceOptionsStmt* Node::mutable_alter_table_space_options_stmt() { + // @@protoc_insertion_point(field_mutable:pg_query.Node.alter_table_space_options_stmt) + return _internal_mutable_alter_table_space_options_stmt(); +} + +// .pg_query.AlterTableMoveAllStmt alter_table_move_all_stmt = 142 [json_name = "AlterTableMoveAllStmt"]; +inline bool Node::_internal_has_alter_table_move_all_stmt() const { + return node_case() == kAlterTableMoveAllStmt; +} +inline bool Node::has_alter_table_move_all_stmt() const { + return _internal_has_alter_table_move_all_stmt(); +} +inline void Node::set_has_alter_table_move_all_stmt() { + _oneof_case_[0] = kAlterTableMoveAllStmt; +} +inline void Node::clear_alter_table_move_all_stmt() { + if (_internal_has_alter_table_move_all_stmt()) { + if (GetArena() == nullptr) { + delete node_.alter_table_move_all_stmt_; + } + clear_has_node(); + } +} +inline ::pg_query::AlterTableMoveAllStmt* Node::release_alter_table_move_all_stmt() { + // @@protoc_insertion_point(field_release:pg_query.Node.alter_table_move_all_stmt) + if (_internal_has_alter_table_move_all_stmt()) { + clear_has_node(); + ::pg_query::AlterTableMoveAllStmt* temp = node_.alter_table_move_all_stmt_; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + node_.alter_table_move_all_stmt_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline const ::pg_query::AlterTableMoveAllStmt& Node::_internal_alter_table_move_all_stmt() const { + return _internal_has_alter_table_move_all_stmt() + ? *node_.alter_table_move_all_stmt_ + : reinterpret_cast< ::pg_query::AlterTableMoveAllStmt&>(::pg_query::_AlterTableMoveAllStmt_default_instance_); +} +inline const ::pg_query::AlterTableMoveAllStmt& Node::alter_table_move_all_stmt() const { + // @@protoc_insertion_point(field_get:pg_query.Node.alter_table_move_all_stmt) + return _internal_alter_table_move_all_stmt(); +} +inline ::pg_query::AlterTableMoveAllStmt* Node::unsafe_arena_release_alter_table_move_all_stmt() { + // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.alter_table_move_all_stmt) + if (_internal_has_alter_table_move_all_stmt()) { + clear_has_node(); + ::pg_query::AlterTableMoveAllStmt* temp = node_.alter_table_move_all_stmt_; + node_.alter_table_move_all_stmt_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline void Node::unsafe_arena_set_allocated_alter_table_move_all_stmt(::pg_query::AlterTableMoveAllStmt* alter_table_move_all_stmt) { + clear_node(); + if (alter_table_move_all_stmt) { + set_has_alter_table_move_all_stmt(); + node_.alter_table_move_all_stmt_ = alter_table_move_all_stmt; + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.alter_table_move_all_stmt) +} +inline ::pg_query::AlterTableMoveAllStmt* Node::_internal_mutable_alter_table_move_all_stmt() { + if (!_internal_has_alter_table_move_all_stmt()) { + clear_node(); + set_has_alter_table_move_all_stmt(); + node_.alter_table_move_all_stmt_ = CreateMaybeMessage< ::pg_query::AlterTableMoveAllStmt >(GetArena()); + } + return node_.alter_table_move_all_stmt_; +} +inline ::pg_query::AlterTableMoveAllStmt* Node::mutable_alter_table_move_all_stmt() { + // @@protoc_insertion_point(field_mutable:pg_query.Node.alter_table_move_all_stmt) + return _internal_mutable_alter_table_move_all_stmt(); +} + +// .pg_query.SecLabelStmt sec_label_stmt = 143 [json_name = "SecLabelStmt"]; +inline bool Node::_internal_has_sec_label_stmt() const { + return node_case() == kSecLabelStmt; +} +inline bool Node::has_sec_label_stmt() const { + return _internal_has_sec_label_stmt(); +} +inline void Node::set_has_sec_label_stmt() { + _oneof_case_[0] = kSecLabelStmt; +} +inline void Node::clear_sec_label_stmt() { + if (_internal_has_sec_label_stmt()) { + if (GetArena() == nullptr) { + delete node_.sec_label_stmt_; + } + clear_has_node(); + } +} +inline ::pg_query::SecLabelStmt* Node::release_sec_label_stmt() { + // @@protoc_insertion_point(field_release:pg_query.Node.sec_label_stmt) + if (_internal_has_sec_label_stmt()) { + clear_has_node(); + ::pg_query::SecLabelStmt* temp = node_.sec_label_stmt_; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + node_.sec_label_stmt_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline const ::pg_query::SecLabelStmt& Node::_internal_sec_label_stmt() const { + return _internal_has_sec_label_stmt() + ? *node_.sec_label_stmt_ + : reinterpret_cast< ::pg_query::SecLabelStmt&>(::pg_query::_SecLabelStmt_default_instance_); +} +inline const ::pg_query::SecLabelStmt& Node::sec_label_stmt() const { + // @@protoc_insertion_point(field_get:pg_query.Node.sec_label_stmt) + return _internal_sec_label_stmt(); +} +inline ::pg_query::SecLabelStmt* Node::unsafe_arena_release_sec_label_stmt() { + // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.sec_label_stmt) + if (_internal_has_sec_label_stmt()) { + clear_has_node(); + ::pg_query::SecLabelStmt* temp = node_.sec_label_stmt_; + node_.sec_label_stmt_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline void Node::unsafe_arena_set_allocated_sec_label_stmt(::pg_query::SecLabelStmt* sec_label_stmt) { + clear_node(); + if (sec_label_stmt) { + set_has_sec_label_stmt(); + node_.sec_label_stmt_ = sec_label_stmt; + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.sec_label_stmt) +} +inline ::pg_query::SecLabelStmt* Node::_internal_mutable_sec_label_stmt() { + if (!_internal_has_sec_label_stmt()) { + clear_node(); + set_has_sec_label_stmt(); + node_.sec_label_stmt_ = CreateMaybeMessage< ::pg_query::SecLabelStmt >(GetArena()); + } + return node_.sec_label_stmt_; +} +inline ::pg_query::SecLabelStmt* Node::mutable_sec_label_stmt() { + // @@protoc_insertion_point(field_mutable:pg_query.Node.sec_label_stmt) + return _internal_mutable_sec_label_stmt(); +} + +// .pg_query.CreateForeignTableStmt create_foreign_table_stmt = 144 [json_name = "CreateForeignTableStmt"]; +inline bool Node::_internal_has_create_foreign_table_stmt() const { + return node_case() == kCreateForeignTableStmt; +} +inline bool Node::has_create_foreign_table_stmt() const { + return _internal_has_create_foreign_table_stmt(); +} +inline void Node::set_has_create_foreign_table_stmt() { + _oneof_case_[0] = kCreateForeignTableStmt; +} +inline void Node::clear_create_foreign_table_stmt() { + if (_internal_has_create_foreign_table_stmt()) { + if (GetArena() == nullptr) { + delete node_.create_foreign_table_stmt_; + } + clear_has_node(); + } +} +inline ::pg_query::CreateForeignTableStmt* Node::release_create_foreign_table_stmt() { + // @@protoc_insertion_point(field_release:pg_query.Node.create_foreign_table_stmt) + if (_internal_has_create_foreign_table_stmt()) { + clear_has_node(); + ::pg_query::CreateForeignTableStmt* temp = node_.create_foreign_table_stmt_; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + node_.create_foreign_table_stmt_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline const ::pg_query::CreateForeignTableStmt& Node::_internal_create_foreign_table_stmt() const { + return _internal_has_create_foreign_table_stmt() + ? *node_.create_foreign_table_stmt_ + : reinterpret_cast< ::pg_query::CreateForeignTableStmt&>(::pg_query::_CreateForeignTableStmt_default_instance_); +} +inline const ::pg_query::CreateForeignTableStmt& Node::create_foreign_table_stmt() const { + // @@protoc_insertion_point(field_get:pg_query.Node.create_foreign_table_stmt) + return _internal_create_foreign_table_stmt(); +} +inline ::pg_query::CreateForeignTableStmt* Node::unsafe_arena_release_create_foreign_table_stmt() { + // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.create_foreign_table_stmt) + if (_internal_has_create_foreign_table_stmt()) { + clear_has_node(); + ::pg_query::CreateForeignTableStmt* temp = node_.create_foreign_table_stmt_; + node_.create_foreign_table_stmt_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline void Node::unsafe_arena_set_allocated_create_foreign_table_stmt(::pg_query::CreateForeignTableStmt* create_foreign_table_stmt) { + clear_node(); + if (create_foreign_table_stmt) { + set_has_create_foreign_table_stmt(); + node_.create_foreign_table_stmt_ = create_foreign_table_stmt; + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.create_foreign_table_stmt) +} +inline ::pg_query::CreateForeignTableStmt* Node::_internal_mutable_create_foreign_table_stmt() { + if (!_internal_has_create_foreign_table_stmt()) { + clear_node(); + set_has_create_foreign_table_stmt(); + node_.create_foreign_table_stmt_ = CreateMaybeMessage< ::pg_query::CreateForeignTableStmt >(GetArena()); + } + return node_.create_foreign_table_stmt_; +} +inline ::pg_query::CreateForeignTableStmt* Node::mutable_create_foreign_table_stmt() { + // @@protoc_insertion_point(field_mutable:pg_query.Node.create_foreign_table_stmt) + return _internal_mutable_create_foreign_table_stmt(); +} + +// .pg_query.ImportForeignSchemaStmt import_foreign_schema_stmt = 145 [json_name = "ImportForeignSchemaStmt"]; +inline bool Node::_internal_has_import_foreign_schema_stmt() const { + return node_case() == kImportForeignSchemaStmt; +} +inline bool Node::has_import_foreign_schema_stmt() const { + return _internal_has_import_foreign_schema_stmt(); +} +inline void Node::set_has_import_foreign_schema_stmt() { + _oneof_case_[0] = kImportForeignSchemaStmt; +} +inline void Node::clear_import_foreign_schema_stmt() { + if (_internal_has_import_foreign_schema_stmt()) { + if (GetArena() == nullptr) { + delete node_.import_foreign_schema_stmt_; + } + clear_has_node(); + } +} +inline ::pg_query::ImportForeignSchemaStmt* Node::release_import_foreign_schema_stmt() { + // @@protoc_insertion_point(field_release:pg_query.Node.import_foreign_schema_stmt) + if (_internal_has_import_foreign_schema_stmt()) { + clear_has_node(); + ::pg_query::ImportForeignSchemaStmt* temp = node_.import_foreign_schema_stmt_; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + node_.import_foreign_schema_stmt_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline const ::pg_query::ImportForeignSchemaStmt& Node::_internal_import_foreign_schema_stmt() const { + return _internal_has_import_foreign_schema_stmt() + ? *node_.import_foreign_schema_stmt_ + : reinterpret_cast< ::pg_query::ImportForeignSchemaStmt&>(::pg_query::_ImportForeignSchemaStmt_default_instance_); +} +inline const ::pg_query::ImportForeignSchemaStmt& Node::import_foreign_schema_stmt() const { + // @@protoc_insertion_point(field_get:pg_query.Node.import_foreign_schema_stmt) + return _internal_import_foreign_schema_stmt(); +} +inline ::pg_query::ImportForeignSchemaStmt* Node::unsafe_arena_release_import_foreign_schema_stmt() { + // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.import_foreign_schema_stmt) + if (_internal_has_import_foreign_schema_stmt()) { + clear_has_node(); + ::pg_query::ImportForeignSchemaStmt* temp = node_.import_foreign_schema_stmt_; + node_.import_foreign_schema_stmt_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline void Node::unsafe_arena_set_allocated_import_foreign_schema_stmt(::pg_query::ImportForeignSchemaStmt* import_foreign_schema_stmt) { + clear_node(); + if (import_foreign_schema_stmt) { + set_has_import_foreign_schema_stmt(); + node_.import_foreign_schema_stmt_ = import_foreign_schema_stmt; + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.import_foreign_schema_stmt) +} +inline ::pg_query::ImportForeignSchemaStmt* Node::_internal_mutable_import_foreign_schema_stmt() { + if (!_internal_has_import_foreign_schema_stmt()) { + clear_node(); + set_has_import_foreign_schema_stmt(); + node_.import_foreign_schema_stmt_ = CreateMaybeMessage< ::pg_query::ImportForeignSchemaStmt >(GetArena()); + } + return node_.import_foreign_schema_stmt_; +} +inline ::pg_query::ImportForeignSchemaStmt* Node::mutable_import_foreign_schema_stmt() { + // @@protoc_insertion_point(field_mutable:pg_query.Node.import_foreign_schema_stmt) + return _internal_mutable_import_foreign_schema_stmt(); +} + +// .pg_query.CreateExtensionStmt create_extension_stmt = 146 [json_name = "CreateExtensionStmt"]; +inline bool Node::_internal_has_create_extension_stmt() const { + return node_case() == kCreateExtensionStmt; +} +inline bool Node::has_create_extension_stmt() const { + return _internal_has_create_extension_stmt(); +} +inline void Node::set_has_create_extension_stmt() { + _oneof_case_[0] = kCreateExtensionStmt; +} +inline void Node::clear_create_extension_stmt() { + if (_internal_has_create_extension_stmt()) { + if (GetArena() == nullptr) { + delete node_.create_extension_stmt_; + } + clear_has_node(); + } +} +inline ::pg_query::CreateExtensionStmt* Node::release_create_extension_stmt() { + // @@protoc_insertion_point(field_release:pg_query.Node.create_extension_stmt) + if (_internal_has_create_extension_stmt()) { + clear_has_node(); + ::pg_query::CreateExtensionStmt* temp = node_.create_extension_stmt_; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + node_.create_extension_stmt_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline const ::pg_query::CreateExtensionStmt& Node::_internal_create_extension_stmt() const { + return _internal_has_create_extension_stmt() + ? *node_.create_extension_stmt_ + : reinterpret_cast< ::pg_query::CreateExtensionStmt&>(::pg_query::_CreateExtensionStmt_default_instance_); +} +inline const ::pg_query::CreateExtensionStmt& Node::create_extension_stmt() const { + // @@protoc_insertion_point(field_get:pg_query.Node.create_extension_stmt) + return _internal_create_extension_stmt(); +} +inline ::pg_query::CreateExtensionStmt* Node::unsafe_arena_release_create_extension_stmt() { + // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.create_extension_stmt) + if (_internal_has_create_extension_stmt()) { + clear_has_node(); + ::pg_query::CreateExtensionStmt* temp = node_.create_extension_stmt_; + node_.create_extension_stmt_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline void Node::unsafe_arena_set_allocated_create_extension_stmt(::pg_query::CreateExtensionStmt* create_extension_stmt) { + clear_node(); + if (create_extension_stmt) { + set_has_create_extension_stmt(); + node_.create_extension_stmt_ = create_extension_stmt; + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.create_extension_stmt) +} +inline ::pg_query::CreateExtensionStmt* Node::_internal_mutable_create_extension_stmt() { + if (!_internal_has_create_extension_stmt()) { + clear_node(); + set_has_create_extension_stmt(); + node_.create_extension_stmt_ = CreateMaybeMessage< ::pg_query::CreateExtensionStmt >(GetArena()); + } + return node_.create_extension_stmt_; +} +inline ::pg_query::CreateExtensionStmt* Node::mutable_create_extension_stmt() { + // @@protoc_insertion_point(field_mutable:pg_query.Node.create_extension_stmt) + return _internal_mutable_create_extension_stmt(); +} + +// .pg_query.AlterExtensionStmt alter_extension_stmt = 147 [json_name = "AlterExtensionStmt"]; +inline bool Node::_internal_has_alter_extension_stmt() const { + return node_case() == kAlterExtensionStmt; +} +inline bool Node::has_alter_extension_stmt() const { + return _internal_has_alter_extension_stmt(); +} +inline void Node::set_has_alter_extension_stmt() { + _oneof_case_[0] = kAlterExtensionStmt; +} +inline void Node::clear_alter_extension_stmt() { + if (_internal_has_alter_extension_stmt()) { + if (GetArena() == nullptr) { + delete node_.alter_extension_stmt_; + } + clear_has_node(); + } +} +inline ::pg_query::AlterExtensionStmt* Node::release_alter_extension_stmt() { + // @@protoc_insertion_point(field_release:pg_query.Node.alter_extension_stmt) + if (_internal_has_alter_extension_stmt()) { + clear_has_node(); + ::pg_query::AlterExtensionStmt* temp = node_.alter_extension_stmt_; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + node_.alter_extension_stmt_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline const ::pg_query::AlterExtensionStmt& Node::_internal_alter_extension_stmt() const { + return _internal_has_alter_extension_stmt() + ? *node_.alter_extension_stmt_ + : reinterpret_cast< ::pg_query::AlterExtensionStmt&>(::pg_query::_AlterExtensionStmt_default_instance_); +} +inline const ::pg_query::AlterExtensionStmt& Node::alter_extension_stmt() const { + // @@protoc_insertion_point(field_get:pg_query.Node.alter_extension_stmt) + return _internal_alter_extension_stmt(); +} +inline ::pg_query::AlterExtensionStmt* Node::unsafe_arena_release_alter_extension_stmt() { + // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.alter_extension_stmt) + if (_internal_has_alter_extension_stmt()) { + clear_has_node(); + ::pg_query::AlterExtensionStmt* temp = node_.alter_extension_stmt_; + node_.alter_extension_stmt_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline void Node::unsafe_arena_set_allocated_alter_extension_stmt(::pg_query::AlterExtensionStmt* alter_extension_stmt) { + clear_node(); + if (alter_extension_stmt) { + set_has_alter_extension_stmt(); + node_.alter_extension_stmt_ = alter_extension_stmt; + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.alter_extension_stmt) +} +inline ::pg_query::AlterExtensionStmt* Node::_internal_mutable_alter_extension_stmt() { + if (!_internal_has_alter_extension_stmt()) { + clear_node(); + set_has_alter_extension_stmt(); + node_.alter_extension_stmt_ = CreateMaybeMessage< ::pg_query::AlterExtensionStmt >(GetArena()); + } + return node_.alter_extension_stmt_; +} +inline ::pg_query::AlterExtensionStmt* Node::mutable_alter_extension_stmt() { + // @@protoc_insertion_point(field_mutable:pg_query.Node.alter_extension_stmt) + return _internal_mutable_alter_extension_stmt(); +} + +// .pg_query.AlterExtensionContentsStmt alter_extension_contents_stmt = 148 [json_name = "AlterExtensionContentsStmt"]; +inline bool Node::_internal_has_alter_extension_contents_stmt() const { + return node_case() == kAlterExtensionContentsStmt; +} +inline bool Node::has_alter_extension_contents_stmt() const { + return _internal_has_alter_extension_contents_stmt(); +} +inline void Node::set_has_alter_extension_contents_stmt() { + _oneof_case_[0] = kAlterExtensionContentsStmt; +} +inline void Node::clear_alter_extension_contents_stmt() { + if (_internal_has_alter_extension_contents_stmt()) { + if (GetArena() == nullptr) { + delete node_.alter_extension_contents_stmt_; + } + clear_has_node(); + } +} +inline ::pg_query::AlterExtensionContentsStmt* Node::release_alter_extension_contents_stmt() { + // @@protoc_insertion_point(field_release:pg_query.Node.alter_extension_contents_stmt) + if (_internal_has_alter_extension_contents_stmt()) { + clear_has_node(); + ::pg_query::AlterExtensionContentsStmt* temp = node_.alter_extension_contents_stmt_; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + node_.alter_extension_contents_stmt_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline const ::pg_query::AlterExtensionContentsStmt& Node::_internal_alter_extension_contents_stmt() const { + return _internal_has_alter_extension_contents_stmt() + ? *node_.alter_extension_contents_stmt_ + : reinterpret_cast< ::pg_query::AlterExtensionContentsStmt&>(::pg_query::_AlterExtensionContentsStmt_default_instance_); +} +inline const ::pg_query::AlterExtensionContentsStmt& Node::alter_extension_contents_stmt() const { + // @@protoc_insertion_point(field_get:pg_query.Node.alter_extension_contents_stmt) + return _internal_alter_extension_contents_stmt(); +} +inline ::pg_query::AlterExtensionContentsStmt* Node::unsafe_arena_release_alter_extension_contents_stmt() { + // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.alter_extension_contents_stmt) + if (_internal_has_alter_extension_contents_stmt()) { + clear_has_node(); + ::pg_query::AlterExtensionContentsStmt* temp = node_.alter_extension_contents_stmt_; + node_.alter_extension_contents_stmt_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline void Node::unsafe_arena_set_allocated_alter_extension_contents_stmt(::pg_query::AlterExtensionContentsStmt* alter_extension_contents_stmt) { + clear_node(); + if (alter_extension_contents_stmt) { + set_has_alter_extension_contents_stmt(); + node_.alter_extension_contents_stmt_ = alter_extension_contents_stmt; + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.alter_extension_contents_stmt) +} +inline ::pg_query::AlterExtensionContentsStmt* Node::_internal_mutable_alter_extension_contents_stmt() { + if (!_internal_has_alter_extension_contents_stmt()) { + clear_node(); + set_has_alter_extension_contents_stmt(); + node_.alter_extension_contents_stmt_ = CreateMaybeMessage< ::pg_query::AlterExtensionContentsStmt >(GetArena()); + } + return node_.alter_extension_contents_stmt_; +} +inline ::pg_query::AlterExtensionContentsStmt* Node::mutable_alter_extension_contents_stmt() { + // @@protoc_insertion_point(field_mutable:pg_query.Node.alter_extension_contents_stmt) + return _internal_mutable_alter_extension_contents_stmt(); +} + +// .pg_query.CreateEventTrigStmt create_event_trig_stmt = 149 [json_name = "CreateEventTrigStmt"]; +inline bool Node::_internal_has_create_event_trig_stmt() const { + return node_case() == kCreateEventTrigStmt; +} +inline bool Node::has_create_event_trig_stmt() const { + return _internal_has_create_event_trig_stmt(); +} +inline void Node::set_has_create_event_trig_stmt() { + _oneof_case_[0] = kCreateEventTrigStmt; +} +inline void Node::clear_create_event_trig_stmt() { + if (_internal_has_create_event_trig_stmt()) { + if (GetArena() == nullptr) { + delete node_.create_event_trig_stmt_; + } + clear_has_node(); + } +} +inline ::pg_query::CreateEventTrigStmt* Node::release_create_event_trig_stmt() { + // @@protoc_insertion_point(field_release:pg_query.Node.create_event_trig_stmt) + if (_internal_has_create_event_trig_stmt()) { + clear_has_node(); + ::pg_query::CreateEventTrigStmt* temp = node_.create_event_trig_stmt_; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + node_.create_event_trig_stmt_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline const ::pg_query::CreateEventTrigStmt& Node::_internal_create_event_trig_stmt() const { + return _internal_has_create_event_trig_stmt() + ? *node_.create_event_trig_stmt_ + : reinterpret_cast< ::pg_query::CreateEventTrigStmt&>(::pg_query::_CreateEventTrigStmt_default_instance_); +} +inline const ::pg_query::CreateEventTrigStmt& Node::create_event_trig_stmt() const { + // @@protoc_insertion_point(field_get:pg_query.Node.create_event_trig_stmt) + return _internal_create_event_trig_stmt(); +} +inline ::pg_query::CreateEventTrigStmt* Node::unsafe_arena_release_create_event_trig_stmt() { + // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.create_event_trig_stmt) + if (_internal_has_create_event_trig_stmt()) { + clear_has_node(); + ::pg_query::CreateEventTrigStmt* temp = node_.create_event_trig_stmt_; + node_.create_event_trig_stmt_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline void Node::unsafe_arena_set_allocated_create_event_trig_stmt(::pg_query::CreateEventTrigStmt* create_event_trig_stmt) { + clear_node(); + if (create_event_trig_stmt) { + set_has_create_event_trig_stmt(); + node_.create_event_trig_stmt_ = create_event_trig_stmt; + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.create_event_trig_stmt) +} +inline ::pg_query::CreateEventTrigStmt* Node::_internal_mutable_create_event_trig_stmt() { + if (!_internal_has_create_event_trig_stmt()) { + clear_node(); + set_has_create_event_trig_stmt(); + node_.create_event_trig_stmt_ = CreateMaybeMessage< ::pg_query::CreateEventTrigStmt >(GetArena()); + } + return node_.create_event_trig_stmt_; +} +inline ::pg_query::CreateEventTrigStmt* Node::mutable_create_event_trig_stmt() { + // @@protoc_insertion_point(field_mutable:pg_query.Node.create_event_trig_stmt) + return _internal_mutable_create_event_trig_stmt(); +} + +// .pg_query.AlterEventTrigStmt alter_event_trig_stmt = 150 [json_name = "AlterEventTrigStmt"]; +inline bool Node::_internal_has_alter_event_trig_stmt() const { + return node_case() == kAlterEventTrigStmt; +} +inline bool Node::has_alter_event_trig_stmt() const { + return _internal_has_alter_event_trig_stmt(); +} +inline void Node::set_has_alter_event_trig_stmt() { + _oneof_case_[0] = kAlterEventTrigStmt; +} +inline void Node::clear_alter_event_trig_stmt() { + if (_internal_has_alter_event_trig_stmt()) { + if (GetArena() == nullptr) { + delete node_.alter_event_trig_stmt_; + } + clear_has_node(); + } +} +inline ::pg_query::AlterEventTrigStmt* Node::release_alter_event_trig_stmt() { + // @@protoc_insertion_point(field_release:pg_query.Node.alter_event_trig_stmt) + if (_internal_has_alter_event_trig_stmt()) { + clear_has_node(); + ::pg_query::AlterEventTrigStmt* temp = node_.alter_event_trig_stmt_; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + node_.alter_event_trig_stmt_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline const ::pg_query::AlterEventTrigStmt& Node::_internal_alter_event_trig_stmt() const { + return _internal_has_alter_event_trig_stmt() + ? *node_.alter_event_trig_stmt_ + : reinterpret_cast< ::pg_query::AlterEventTrigStmt&>(::pg_query::_AlterEventTrigStmt_default_instance_); +} +inline const ::pg_query::AlterEventTrigStmt& Node::alter_event_trig_stmt() const { + // @@protoc_insertion_point(field_get:pg_query.Node.alter_event_trig_stmt) + return _internal_alter_event_trig_stmt(); +} +inline ::pg_query::AlterEventTrigStmt* Node::unsafe_arena_release_alter_event_trig_stmt() { + // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.alter_event_trig_stmt) + if (_internal_has_alter_event_trig_stmt()) { + clear_has_node(); + ::pg_query::AlterEventTrigStmt* temp = node_.alter_event_trig_stmt_; + node_.alter_event_trig_stmt_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline void Node::unsafe_arena_set_allocated_alter_event_trig_stmt(::pg_query::AlterEventTrigStmt* alter_event_trig_stmt) { + clear_node(); + if (alter_event_trig_stmt) { + set_has_alter_event_trig_stmt(); + node_.alter_event_trig_stmt_ = alter_event_trig_stmt; + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.alter_event_trig_stmt) +} +inline ::pg_query::AlterEventTrigStmt* Node::_internal_mutable_alter_event_trig_stmt() { + if (!_internal_has_alter_event_trig_stmt()) { + clear_node(); + set_has_alter_event_trig_stmt(); + node_.alter_event_trig_stmt_ = CreateMaybeMessage< ::pg_query::AlterEventTrigStmt >(GetArena()); + } + return node_.alter_event_trig_stmt_; +} +inline ::pg_query::AlterEventTrigStmt* Node::mutable_alter_event_trig_stmt() { + // @@protoc_insertion_point(field_mutable:pg_query.Node.alter_event_trig_stmt) + return _internal_mutable_alter_event_trig_stmt(); +} + +// .pg_query.RefreshMatViewStmt refresh_mat_view_stmt = 151 [json_name = "RefreshMatViewStmt"]; +inline bool Node::_internal_has_refresh_mat_view_stmt() const { + return node_case() == kRefreshMatViewStmt; +} +inline bool Node::has_refresh_mat_view_stmt() const { + return _internal_has_refresh_mat_view_stmt(); +} +inline void Node::set_has_refresh_mat_view_stmt() { + _oneof_case_[0] = kRefreshMatViewStmt; +} +inline void Node::clear_refresh_mat_view_stmt() { + if (_internal_has_refresh_mat_view_stmt()) { + if (GetArena() == nullptr) { + delete node_.refresh_mat_view_stmt_; + } + clear_has_node(); + } +} +inline ::pg_query::RefreshMatViewStmt* Node::release_refresh_mat_view_stmt() { + // @@protoc_insertion_point(field_release:pg_query.Node.refresh_mat_view_stmt) + if (_internal_has_refresh_mat_view_stmt()) { + clear_has_node(); + ::pg_query::RefreshMatViewStmt* temp = node_.refresh_mat_view_stmt_; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + node_.refresh_mat_view_stmt_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline const ::pg_query::RefreshMatViewStmt& Node::_internal_refresh_mat_view_stmt() const { + return _internal_has_refresh_mat_view_stmt() + ? *node_.refresh_mat_view_stmt_ + : reinterpret_cast< ::pg_query::RefreshMatViewStmt&>(::pg_query::_RefreshMatViewStmt_default_instance_); +} +inline const ::pg_query::RefreshMatViewStmt& Node::refresh_mat_view_stmt() const { + // @@protoc_insertion_point(field_get:pg_query.Node.refresh_mat_view_stmt) + return _internal_refresh_mat_view_stmt(); +} +inline ::pg_query::RefreshMatViewStmt* Node::unsafe_arena_release_refresh_mat_view_stmt() { + // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.refresh_mat_view_stmt) + if (_internal_has_refresh_mat_view_stmt()) { + clear_has_node(); + ::pg_query::RefreshMatViewStmt* temp = node_.refresh_mat_view_stmt_; + node_.refresh_mat_view_stmt_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline void Node::unsafe_arena_set_allocated_refresh_mat_view_stmt(::pg_query::RefreshMatViewStmt* refresh_mat_view_stmt) { + clear_node(); + if (refresh_mat_view_stmt) { + set_has_refresh_mat_view_stmt(); + node_.refresh_mat_view_stmt_ = refresh_mat_view_stmt; + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.refresh_mat_view_stmt) +} +inline ::pg_query::RefreshMatViewStmt* Node::_internal_mutable_refresh_mat_view_stmt() { + if (!_internal_has_refresh_mat_view_stmt()) { + clear_node(); + set_has_refresh_mat_view_stmt(); + node_.refresh_mat_view_stmt_ = CreateMaybeMessage< ::pg_query::RefreshMatViewStmt >(GetArena()); + } + return node_.refresh_mat_view_stmt_; +} +inline ::pg_query::RefreshMatViewStmt* Node::mutable_refresh_mat_view_stmt() { + // @@protoc_insertion_point(field_mutable:pg_query.Node.refresh_mat_view_stmt) + return _internal_mutable_refresh_mat_view_stmt(); +} + +// .pg_query.ReplicaIdentityStmt replica_identity_stmt = 152 [json_name = "ReplicaIdentityStmt"]; +inline bool Node::_internal_has_replica_identity_stmt() const { + return node_case() == kReplicaIdentityStmt; +} +inline bool Node::has_replica_identity_stmt() const { + return _internal_has_replica_identity_stmt(); +} +inline void Node::set_has_replica_identity_stmt() { + _oneof_case_[0] = kReplicaIdentityStmt; +} +inline void Node::clear_replica_identity_stmt() { + if (_internal_has_replica_identity_stmt()) { + if (GetArena() == nullptr) { + delete node_.replica_identity_stmt_; + } + clear_has_node(); + } +} +inline ::pg_query::ReplicaIdentityStmt* Node::release_replica_identity_stmt() { + // @@protoc_insertion_point(field_release:pg_query.Node.replica_identity_stmt) + if (_internal_has_replica_identity_stmt()) { + clear_has_node(); + ::pg_query::ReplicaIdentityStmt* temp = node_.replica_identity_stmt_; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + node_.replica_identity_stmt_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline const ::pg_query::ReplicaIdentityStmt& Node::_internal_replica_identity_stmt() const { + return _internal_has_replica_identity_stmt() + ? *node_.replica_identity_stmt_ + : reinterpret_cast< ::pg_query::ReplicaIdentityStmt&>(::pg_query::_ReplicaIdentityStmt_default_instance_); +} +inline const ::pg_query::ReplicaIdentityStmt& Node::replica_identity_stmt() const { + // @@protoc_insertion_point(field_get:pg_query.Node.replica_identity_stmt) + return _internal_replica_identity_stmt(); +} +inline ::pg_query::ReplicaIdentityStmt* Node::unsafe_arena_release_replica_identity_stmt() { + // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.replica_identity_stmt) + if (_internal_has_replica_identity_stmt()) { + clear_has_node(); + ::pg_query::ReplicaIdentityStmt* temp = node_.replica_identity_stmt_; + node_.replica_identity_stmt_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline void Node::unsafe_arena_set_allocated_replica_identity_stmt(::pg_query::ReplicaIdentityStmt* replica_identity_stmt) { + clear_node(); + if (replica_identity_stmt) { + set_has_replica_identity_stmt(); + node_.replica_identity_stmt_ = replica_identity_stmt; + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.replica_identity_stmt) +} +inline ::pg_query::ReplicaIdentityStmt* Node::_internal_mutable_replica_identity_stmt() { + if (!_internal_has_replica_identity_stmt()) { + clear_node(); + set_has_replica_identity_stmt(); + node_.replica_identity_stmt_ = CreateMaybeMessage< ::pg_query::ReplicaIdentityStmt >(GetArena()); + } + return node_.replica_identity_stmt_; +} +inline ::pg_query::ReplicaIdentityStmt* Node::mutable_replica_identity_stmt() { + // @@protoc_insertion_point(field_mutable:pg_query.Node.replica_identity_stmt) + return _internal_mutable_replica_identity_stmt(); +} + +// .pg_query.AlterSystemStmt alter_system_stmt = 153 [json_name = "AlterSystemStmt"]; +inline bool Node::_internal_has_alter_system_stmt() const { + return node_case() == kAlterSystemStmt; +} +inline bool Node::has_alter_system_stmt() const { + return _internal_has_alter_system_stmt(); +} +inline void Node::set_has_alter_system_stmt() { + _oneof_case_[0] = kAlterSystemStmt; +} +inline void Node::clear_alter_system_stmt() { + if (_internal_has_alter_system_stmt()) { + if (GetArena() == nullptr) { + delete node_.alter_system_stmt_; + } + clear_has_node(); + } +} +inline ::pg_query::AlterSystemStmt* Node::release_alter_system_stmt() { + // @@protoc_insertion_point(field_release:pg_query.Node.alter_system_stmt) + if (_internal_has_alter_system_stmt()) { + clear_has_node(); + ::pg_query::AlterSystemStmt* temp = node_.alter_system_stmt_; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + node_.alter_system_stmt_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline const ::pg_query::AlterSystemStmt& Node::_internal_alter_system_stmt() const { + return _internal_has_alter_system_stmt() + ? *node_.alter_system_stmt_ + : reinterpret_cast< ::pg_query::AlterSystemStmt&>(::pg_query::_AlterSystemStmt_default_instance_); +} +inline const ::pg_query::AlterSystemStmt& Node::alter_system_stmt() const { + // @@protoc_insertion_point(field_get:pg_query.Node.alter_system_stmt) + return _internal_alter_system_stmt(); +} +inline ::pg_query::AlterSystemStmt* Node::unsafe_arena_release_alter_system_stmt() { + // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.alter_system_stmt) + if (_internal_has_alter_system_stmt()) { + clear_has_node(); + ::pg_query::AlterSystemStmt* temp = node_.alter_system_stmt_; + node_.alter_system_stmt_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline void Node::unsafe_arena_set_allocated_alter_system_stmt(::pg_query::AlterSystemStmt* alter_system_stmt) { + clear_node(); + if (alter_system_stmt) { + set_has_alter_system_stmt(); + node_.alter_system_stmt_ = alter_system_stmt; + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.alter_system_stmt) +} +inline ::pg_query::AlterSystemStmt* Node::_internal_mutable_alter_system_stmt() { + if (!_internal_has_alter_system_stmt()) { + clear_node(); + set_has_alter_system_stmt(); + node_.alter_system_stmt_ = CreateMaybeMessage< ::pg_query::AlterSystemStmt >(GetArena()); + } + return node_.alter_system_stmt_; +} +inline ::pg_query::AlterSystemStmt* Node::mutable_alter_system_stmt() { + // @@protoc_insertion_point(field_mutable:pg_query.Node.alter_system_stmt) + return _internal_mutable_alter_system_stmt(); +} + +// .pg_query.CreatePolicyStmt create_policy_stmt = 154 [json_name = "CreatePolicyStmt"]; +inline bool Node::_internal_has_create_policy_stmt() const { + return node_case() == kCreatePolicyStmt; +} +inline bool Node::has_create_policy_stmt() const { + return _internal_has_create_policy_stmt(); +} +inline void Node::set_has_create_policy_stmt() { + _oneof_case_[0] = kCreatePolicyStmt; +} +inline void Node::clear_create_policy_stmt() { + if (_internal_has_create_policy_stmt()) { + if (GetArena() == nullptr) { + delete node_.create_policy_stmt_; + } + clear_has_node(); + } +} +inline ::pg_query::CreatePolicyStmt* Node::release_create_policy_stmt() { + // @@protoc_insertion_point(field_release:pg_query.Node.create_policy_stmt) + if (_internal_has_create_policy_stmt()) { + clear_has_node(); + ::pg_query::CreatePolicyStmt* temp = node_.create_policy_stmt_; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + node_.create_policy_stmt_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline const ::pg_query::CreatePolicyStmt& Node::_internal_create_policy_stmt() const { + return _internal_has_create_policy_stmt() + ? *node_.create_policy_stmt_ + : reinterpret_cast< ::pg_query::CreatePolicyStmt&>(::pg_query::_CreatePolicyStmt_default_instance_); +} +inline const ::pg_query::CreatePolicyStmt& Node::create_policy_stmt() const { + // @@protoc_insertion_point(field_get:pg_query.Node.create_policy_stmt) + return _internal_create_policy_stmt(); +} +inline ::pg_query::CreatePolicyStmt* Node::unsafe_arena_release_create_policy_stmt() { + // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.create_policy_stmt) + if (_internal_has_create_policy_stmt()) { + clear_has_node(); + ::pg_query::CreatePolicyStmt* temp = node_.create_policy_stmt_; + node_.create_policy_stmt_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline void Node::unsafe_arena_set_allocated_create_policy_stmt(::pg_query::CreatePolicyStmt* create_policy_stmt) { + clear_node(); + if (create_policy_stmt) { + set_has_create_policy_stmt(); + node_.create_policy_stmt_ = create_policy_stmt; + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.create_policy_stmt) +} +inline ::pg_query::CreatePolicyStmt* Node::_internal_mutable_create_policy_stmt() { + if (!_internal_has_create_policy_stmt()) { + clear_node(); + set_has_create_policy_stmt(); + node_.create_policy_stmt_ = CreateMaybeMessage< ::pg_query::CreatePolicyStmt >(GetArena()); + } + return node_.create_policy_stmt_; +} +inline ::pg_query::CreatePolicyStmt* Node::mutable_create_policy_stmt() { + // @@protoc_insertion_point(field_mutable:pg_query.Node.create_policy_stmt) + return _internal_mutable_create_policy_stmt(); +} + +// .pg_query.AlterPolicyStmt alter_policy_stmt = 155 [json_name = "AlterPolicyStmt"]; +inline bool Node::_internal_has_alter_policy_stmt() const { + return node_case() == kAlterPolicyStmt; +} +inline bool Node::has_alter_policy_stmt() const { + return _internal_has_alter_policy_stmt(); +} +inline void Node::set_has_alter_policy_stmt() { + _oneof_case_[0] = kAlterPolicyStmt; +} +inline void Node::clear_alter_policy_stmt() { + if (_internal_has_alter_policy_stmt()) { + if (GetArena() == nullptr) { + delete node_.alter_policy_stmt_; + } + clear_has_node(); + } +} +inline ::pg_query::AlterPolicyStmt* Node::release_alter_policy_stmt() { + // @@protoc_insertion_point(field_release:pg_query.Node.alter_policy_stmt) + if (_internal_has_alter_policy_stmt()) { + clear_has_node(); + ::pg_query::AlterPolicyStmt* temp = node_.alter_policy_stmt_; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + node_.alter_policy_stmt_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline const ::pg_query::AlterPolicyStmt& Node::_internal_alter_policy_stmt() const { + return _internal_has_alter_policy_stmt() + ? *node_.alter_policy_stmt_ + : reinterpret_cast< ::pg_query::AlterPolicyStmt&>(::pg_query::_AlterPolicyStmt_default_instance_); +} +inline const ::pg_query::AlterPolicyStmt& Node::alter_policy_stmt() const { + // @@protoc_insertion_point(field_get:pg_query.Node.alter_policy_stmt) + return _internal_alter_policy_stmt(); +} +inline ::pg_query::AlterPolicyStmt* Node::unsafe_arena_release_alter_policy_stmt() { + // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.alter_policy_stmt) + if (_internal_has_alter_policy_stmt()) { + clear_has_node(); + ::pg_query::AlterPolicyStmt* temp = node_.alter_policy_stmt_; + node_.alter_policy_stmt_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline void Node::unsafe_arena_set_allocated_alter_policy_stmt(::pg_query::AlterPolicyStmt* alter_policy_stmt) { + clear_node(); + if (alter_policy_stmt) { + set_has_alter_policy_stmt(); + node_.alter_policy_stmt_ = alter_policy_stmt; + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.alter_policy_stmt) +} +inline ::pg_query::AlterPolicyStmt* Node::_internal_mutable_alter_policy_stmt() { + if (!_internal_has_alter_policy_stmt()) { + clear_node(); + set_has_alter_policy_stmt(); + node_.alter_policy_stmt_ = CreateMaybeMessage< ::pg_query::AlterPolicyStmt >(GetArena()); + } + return node_.alter_policy_stmt_; +} +inline ::pg_query::AlterPolicyStmt* Node::mutable_alter_policy_stmt() { + // @@protoc_insertion_point(field_mutable:pg_query.Node.alter_policy_stmt) + return _internal_mutable_alter_policy_stmt(); +} + +// .pg_query.CreateTransformStmt create_transform_stmt = 156 [json_name = "CreateTransformStmt"]; +inline bool Node::_internal_has_create_transform_stmt() const { + return node_case() == kCreateTransformStmt; +} +inline bool Node::has_create_transform_stmt() const { + return _internal_has_create_transform_stmt(); +} +inline void Node::set_has_create_transform_stmt() { + _oneof_case_[0] = kCreateTransformStmt; +} +inline void Node::clear_create_transform_stmt() { + if (_internal_has_create_transform_stmt()) { + if (GetArena() == nullptr) { + delete node_.create_transform_stmt_; + } + clear_has_node(); + } +} +inline ::pg_query::CreateTransformStmt* Node::release_create_transform_stmt() { + // @@protoc_insertion_point(field_release:pg_query.Node.create_transform_stmt) + if (_internal_has_create_transform_stmt()) { + clear_has_node(); + ::pg_query::CreateTransformStmt* temp = node_.create_transform_stmt_; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + node_.create_transform_stmt_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline const ::pg_query::CreateTransformStmt& Node::_internal_create_transform_stmt() const { + return _internal_has_create_transform_stmt() + ? *node_.create_transform_stmt_ + : reinterpret_cast< ::pg_query::CreateTransformStmt&>(::pg_query::_CreateTransformStmt_default_instance_); +} +inline const ::pg_query::CreateTransformStmt& Node::create_transform_stmt() const { + // @@protoc_insertion_point(field_get:pg_query.Node.create_transform_stmt) + return _internal_create_transform_stmt(); +} +inline ::pg_query::CreateTransformStmt* Node::unsafe_arena_release_create_transform_stmt() { + // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.create_transform_stmt) + if (_internal_has_create_transform_stmt()) { + clear_has_node(); + ::pg_query::CreateTransformStmt* temp = node_.create_transform_stmt_; + node_.create_transform_stmt_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline void Node::unsafe_arena_set_allocated_create_transform_stmt(::pg_query::CreateTransformStmt* create_transform_stmt) { + clear_node(); + if (create_transform_stmt) { + set_has_create_transform_stmt(); + node_.create_transform_stmt_ = create_transform_stmt; + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.create_transform_stmt) +} +inline ::pg_query::CreateTransformStmt* Node::_internal_mutable_create_transform_stmt() { + if (!_internal_has_create_transform_stmt()) { + clear_node(); + set_has_create_transform_stmt(); + node_.create_transform_stmt_ = CreateMaybeMessage< ::pg_query::CreateTransformStmt >(GetArena()); + } + return node_.create_transform_stmt_; +} +inline ::pg_query::CreateTransformStmt* Node::mutable_create_transform_stmt() { + // @@protoc_insertion_point(field_mutable:pg_query.Node.create_transform_stmt) + return _internal_mutable_create_transform_stmt(); +} + +// .pg_query.CreateAmStmt create_am_stmt = 157 [json_name = "CreateAmStmt"]; +inline bool Node::_internal_has_create_am_stmt() const { + return node_case() == kCreateAmStmt; +} +inline bool Node::has_create_am_stmt() const { + return _internal_has_create_am_stmt(); +} +inline void Node::set_has_create_am_stmt() { + _oneof_case_[0] = kCreateAmStmt; +} +inline void Node::clear_create_am_stmt() { + if (_internal_has_create_am_stmt()) { + if (GetArena() == nullptr) { + delete node_.create_am_stmt_; + } + clear_has_node(); + } +} +inline ::pg_query::CreateAmStmt* Node::release_create_am_stmt() { + // @@protoc_insertion_point(field_release:pg_query.Node.create_am_stmt) + if (_internal_has_create_am_stmt()) { + clear_has_node(); + ::pg_query::CreateAmStmt* temp = node_.create_am_stmt_; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + node_.create_am_stmt_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline const ::pg_query::CreateAmStmt& Node::_internal_create_am_stmt() const { + return _internal_has_create_am_stmt() + ? *node_.create_am_stmt_ + : reinterpret_cast< ::pg_query::CreateAmStmt&>(::pg_query::_CreateAmStmt_default_instance_); +} +inline const ::pg_query::CreateAmStmt& Node::create_am_stmt() const { + // @@protoc_insertion_point(field_get:pg_query.Node.create_am_stmt) + return _internal_create_am_stmt(); +} +inline ::pg_query::CreateAmStmt* Node::unsafe_arena_release_create_am_stmt() { + // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.create_am_stmt) + if (_internal_has_create_am_stmt()) { + clear_has_node(); + ::pg_query::CreateAmStmt* temp = node_.create_am_stmt_; + node_.create_am_stmt_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline void Node::unsafe_arena_set_allocated_create_am_stmt(::pg_query::CreateAmStmt* create_am_stmt) { + clear_node(); + if (create_am_stmt) { + set_has_create_am_stmt(); + node_.create_am_stmt_ = create_am_stmt; + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.create_am_stmt) +} +inline ::pg_query::CreateAmStmt* Node::_internal_mutable_create_am_stmt() { + if (!_internal_has_create_am_stmt()) { + clear_node(); + set_has_create_am_stmt(); + node_.create_am_stmt_ = CreateMaybeMessage< ::pg_query::CreateAmStmt >(GetArena()); + } + return node_.create_am_stmt_; +} +inline ::pg_query::CreateAmStmt* Node::mutable_create_am_stmt() { + // @@protoc_insertion_point(field_mutable:pg_query.Node.create_am_stmt) + return _internal_mutable_create_am_stmt(); +} + +// .pg_query.CreatePublicationStmt create_publication_stmt = 158 [json_name = "CreatePublicationStmt"]; +inline bool Node::_internal_has_create_publication_stmt() const { + return node_case() == kCreatePublicationStmt; +} +inline bool Node::has_create_publication_stmt() const { + return _internal_has_create_publication_stmt(); +} +inline void Node::set_has_create_publication_stmt() { + _oneof_case_[0] = kCreatePublicationStmt; +} +inline void Node::clear_create_publication_stmt() { + if (_internal_has_create_publication_stmt()) { + if (GetArena() == nullptr) { + delete node_.create_publication_stmt_; + } + clear_has_node(); + } +} +inline ::pg_query::CreatePublicationStmt* Node::release_create_publication_stmt() { + // @@protoc_insertion_point(field_release:pg_query.Node.create_publication_stmt) + if (_internal_has_create_publication_stmt()) { + clear_has_node(); + ::pg_query::CreatePublicationStmt* temp = node_.create_publication_stmt_; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + node_.create_publication_stmt_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline const ::pg_query::CreatePublicationStmt& Node::_internal_create_publication_stmt() const { + return _internal_has_create_publication_stmt() + ? *node_.create_publication_stmt_ + : reinterpret_cast< ::pg_query::CreatePublicationStmt&>(::pg_query::_CreatePublicationStmt_default_instance_); +} +inline const ::pg_query::CreatePublicationStmt& Node::create_publication_stmt() const { + // @@protoc_insertion_point(field_get:pg_query.Node.create_publication_stmt) + return _internal_create_publication_stmt(); +} +inline ::pg_query::CreatePublicationStmt* Node::unsafe_arena_release_create_publication_stmt() { + // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.create_publication_stmt) + if (_internal_has_create_publication_stmt()) { + clear_has_node(); + ::pg_query::CreatePublicationStmt* temp = node_.create_publication_stmt_; + node_.create_publication_stmt_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline void Node::unsafe_arena_set_allocated_create_publication_stmt(::pg_query::CreatePublicationStmt* create_publication_stmt) { + clear_node(); + if (create_publication_stmt) { + set_has_create_publication_stmt(); + node_.create_publication_stmt_ = create_publication_stmt; + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.create_publication_stmt) +} +inline ::pg_query::CreatePublicationStmt* Node::_internal_mutable_create_publication_stmt() { + if (!_internal_has_create_publication_stmt()) { + clear_node(); + set_has_create_publication_stmt(); + node_.create_publication_stmt_ = CreateMaybeMessage< ::pg_query::CreatePublicationStmt >(GetArena()); + } + return node_.create_publication_stmt_; +} +inline ::pg_query::CreatePublicationStmt* Node::mutable_create_publication_stmt() { + // @@protoc_insertion_point(field_mutable:pg_query.Node.create_publication_stmt) + return _internal_mutable_create_publication_stmt(); +} + +// .pg_query.AlterPublicationStmt alter_publication_stmt = 159 [json_name = "AlterPublicationStmt"]; +inline bool Node::_internal_has_alter_publication_stmt() const { + return node_case() == kAlterPublicationStmt; +} +inline bool Node::has_alter_publication_stmt() const { + return _internal_has_alter_publication_stmt(); +} +inline void Node::set_has_alter_publication_stmt() { + _oneof_case_[0] = kAlterPublicationStmt; +} +inline void Node::clear_alter_publication_stmt() { + if (_internal_has_alter_publication_stmt()) { + if (GetArena() == nullptr) { + delete node_.alter_publication_stmt_; + } + clear_has_node(); + } +} +inline ::pg_query::AlterPublicationStmt* Node::release_alter_publication_stmt() { + // @@protoc_insertion_point(field_release:pg_query.Node.alter_publication_stmt) + if (_internal_has_alter_publication_stmt()) { + clear_has_node(); + ::pg_query::AlterPublicationStmt* temp = node_.alter_publication_stmt_; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + node_.alter_publication_stmt_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline const ::pg_query::AlterPublicationStmt& Node::_internal_alter_publication_stmt() const { + return _internal_has_alter_publication_stmt() + ? *node_.alter_publication_stmt_ + : reinterpret_cast< ::pg_query::AlterPublicationStmt&>(::pg_query::_AlterPublicationStmt_default_instance_); +} +inline const ::pg_query::AlterPublicationStmt& Node::alter_publication_stmt() const { + // @@protoc_insertion_point(field_get:pg_query.Node.alter_publication_stmt) + return _internal_alter_publication_stmt(); +} +inline ::pg_query::AlterPublicationStmt* Node::unsafe_arena_release_alter_publication_stmt() { + // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.alter_publication_stmt) + if (_internal_has_alter_publication_stmt()) { + clear_has_node(); + ::pg_query::AlterPublicationStmt* temp = node_.alter_publication_stmt_; + node_.alter_publication_stmt_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline void Node::unsafe_arena_set_allocated_alter_publication_stmt(::pg_query::AlterPublicationStmt* alter_publication_stmt) { + clear_node(); + if (alter_publication_stmt) { + set_has_alter_publication_stmt(); + node_.alter_publication_stmt_ = alter_publication_stmt; + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.alter_publication_stmt) +} +inline ::pg_query::AlterPublicationStmt* Node::_internal_mutable_alter_publication_stmt() { + if (!_internal_has_alter_publication_stmt()) { + clear_node(); + set_has_alter_publication_stmt(); + node_.alter_publication_stmt_ = CreateMaybeMessage< ::pg_query::AlterPublicationStmt >(GetArena()); + } + return node_.alter_publication_stmt_; +} +inline ::pg_query::AlterPublicationStmt* Node::mutable_alter_publication_stmt() { + // @@protoc_insertion_point(field_mutable:pg_query.Node.alter_publication_stmt) + return _internal_mutable_alter_publication_stmt(); +} + +// .pg_query.CreateSubscriptionStmt create_subscription_stmt = 160 [json_name = "CreateSubscriptionStmt"]; +inline bool Node::_internal_has_create_subscription_stmt() const { + return node_case() == kCreateSubscriptionStmt; +} +inline bool Node::has_create_subscription_stmt() const { + return _internal_has_create_subscription_stmt(); +} +inline void Node::set_has_create_subscription_stmt() { + _oneof_case_[0] = kCreateSubscriptionStmt; +} +inline void Node::clear_create_subscription_stmt() { + if (_internal_has_create_subscription_stmt()) { + if (GetArena() == nullptr) { + delete node_.create_subscription_stmt_; + } + clear_has_node(); + } +} +inline ::pg_query::CreateSubscriptionStmt* Node::release_create_subscription_stmt() { + // @@protoc_insertion_point(field_release:pg_query.Node.create_subscription_stmt) + if (_internal_has_create_subscription_stmt()) { + clear_has_node(); + ::pg_query::CreateSubscriptionStmt* temp = node_.create_subscription_stmt_; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + node_.create_subscription_stmt_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline const ::pg_query::CreateSubscriptionStmt& Node::_internal_create_subscription_stmt() const { + return _internal_has_create_subscription_stmt() + ? *node_.create_subscription_stmt_ + : reinterpret_cast< ::pg_query::CreateSubscriptionStmt&>(::pg_query::_CreateSubscriptionStmt_default_instance_); +} +inline const ::pg_query::CreateSubscriptionStmt& Node::create_subscription_stmt() const { + // @@protoc_insertion_point(field_get:pg_query.Node.create_subscription_stmt) + return _internal_create_subscription_stmt(); +} +inline ::pg_query::CreateSubscriptionStmt* Node::unsafe_arena_release_create_subscription_stmt() { + // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.create_subscription_stmt) + if (_internal_has_create_subscription_stmt()) { + clear_has_node(); + ::pg_query::CreateSubscriptionStmt* temp = node_.create_subscription_stmt_; + node_.create_subscription_stmt_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline void Node::unsafe_arena_set_allocated_create_subscription_stmt(::pg_query::CreateSubscriptionStmt* create_subscription_stmt) { + clear_node(); + if (create_subscription_stmt) { + set_has_create_subscription_stmt(); + node_.create_subscription_stmt_ = create_subscription_stmt; + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.create_subscription_stmt) +} +inline ::pg_query::CreateSubscriptionStmt* Node::_internal_mutable_create_subscription_stmt() { + if (!_internal_has_create_subscription_stmt()) { + clear_node(); + set_has_create_subscription_stmt(); + node_.create_subscription_stmt_ = CreateMaybeMessage< ::pg_query::CreateSubscriptionStmt >(GetArena()); + } + return node_.create_subscription_stmt_; +} +inline ::pg_query::CreateSubscriptionStmt* Node::mutable_create_subscription_stmt() { + // @@protoc_insertion_point(field_mutable:pg_query.Node.create_subscription_stmt) + return _internal_mutable_create_subscription_stmt(); +} + +// .pg_query.AlterSubscriptionStmt alter_subscription_stmt = 161 [json_name = "AlterSubscriptionStmt"]; +inline bool Node::_internal_has_alter_subscription_stmt() const { + return node_case() == kAlterSubscriptionStmt; +} +inline bool Node::has_alter_subscription_stmt() const { + return _internal_has_alter_subscription_stmt(); +} +inline void Node::set_has_alter_subscription_stmt() { + _oneof_case_[0] = kAlterSubscriptionStmt; +} +inline void Node::clear_alter_subscription_stmt() { + if (_internal_has_alter_subscription_stmt()) { + if (GetArena() == nullptr) { + delete node_.alter_subscription_stmt_; + } + clear_has_node(); + } +} +inline ::pg_query::AlterSubscriptionStmt* Node::release_alter_subscription_stmt() { + // @@protoc_insertion_point(field_release:pg_query.Node.alter_subscription_stmt) + if (_internal_has_alter_subscription_stmt()) { + clear_has_node(); + ::pg_query::AlterSubscriptionStmt* temp = node_.alter_subscription_stmt_; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + node_.alter_subscription_stmt_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline const ::pg_query::AlterSubscriptionStmt& Node::_internal_alter_subscription_stmt() const { + return _internal_has_alter_subscription_stmt() + ? *node_.alter_subscription_stmt_ + : reinterpret_cast< ::pg_query::AlterSubscriptionStmt&>(::pg_query::_AlterSubscriptionStmt_default_instance_); +} +inline const ::pg_query::AlterSubscriptionStmt& Node::alter_subscription_stmt() const { + // @@protoc_insertion_point(field_get:pg_query.Node.alter_subscription_stmt) + return _internal_alter_subscription_stmt(); +} +inline ::pg_query::AlterSubscriptionStmt* Node::unsafe_arena_release_alter_subscription_stmt() { + // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.alter_subscription_stmt) + if (_internal_has_alter_subscription_stmt()) { + clear_has_node(); + ::pg_query::AlterSubscriptionStmt* temp = node_.alter_subscription_stmt_; + node_.alter_subscription_stmt_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline void Node::unsafe_arena_set_allocated_alter_subscription_stmt(::pg_query::AlterSubscriptionStmt* alter_subscription_stmt) { + clear_node(); + if (alter_subscription_stmt) { + set_has_alter_subscription_stmt(); + node_.alter_subscription_stmt_ = alter_subscription_stmt; + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.alter_subscription_stmt) +} +inline ::pg_query::AlterSubscriptionStmt* Node::_internal_mutable_alter_subscription_stmt() { + if (!_internal_has_alter_subscription_stmt()) { + clear_node(); + set_has_alter_subscription_stmt(); + node_.alter_subscription_stmt_ = CreateMaybeMessage< ::pg_query::AlterSubscriptionStmt >(GetArena()); + } + return node_.alter_subscription_stmt_; +} +inline ::pg_query::AlterSubscriptionStmt* Node::mutable_alter_subscription_stmt() { + // @@protoc_insertion_point(field_mutable:pg_query.Node.alter_subscription_stmt) + return _internal_mutable_alter_subscription_stmt(); +} + +// .pg_query.DropSubscriptionStmt drop_subscription_stmt = 162 [json_name = "DropSubscriptionStmt"]; +inline bool Node::_internal_has_drop_subscription_stmt() const { + return node_case() == kDropSubscriptionStmt; +} +inline bool Node::has_drop_subscription_stmt() const { + return _internal_has_drop_subscription_stmt(); +} +inline void Node::set_has_drop_subscription_stmt() { + _oneof_case_[0] = kDropSubscriptionStmt; +} +inline void Node::clear_drop_subscription_stmt() { + if (_internal_has_drop_subscription_stmt()) { + if (GetArena() == nullptr) { + delete node_.drop_subscription_stmt_; + } + clear_has_node(); + } +} +inline ::pg_query::DropSubscriptionStmt* Node::release_drop_subscription_stmt() { + // @@protoc_insertion_point(field_release:pg_query.Node.drop_subscription_stmt) + if (_internal_has_drop_subscription_stmt()) { + clear_has_node(); + ::pg_query::DropSubscriptionStmt* temp = node_.drop_subscription_stmt_; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + node_.drop_subscription_stmt_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline const ::pg_query::DropSubscriptionStmt& Node::_internal_drop_subscription_stmt() const { + return _internal_has_drop_subscription_stmt() + ? *node_.drop_subscription_stmt_ + : reinterpret_cast< ::pg_query::DropSubscriptionStmt&>(::pg_query::_DropSubscriptionStmt_default_instance_); +} +inline const ::pg_query::DropSubscriptionStmt& Node::drop_subscription_stmt() const { + // @@protoc_insertion_point(field_get:pg_query.Node.drop_subscription_stmt) + return _internal_drop_subscription_stmt(); +} +inline ::pg_query::DropSubscriptionStmt* Node::unsafe_arena_release_drop_subscription_stmt() { + // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.drop_subscription_stmt) + if (_internal_has_drop_subscription_stmt()) { + clear_has_node(); + ::pg_query::DropSubscriptionStmt* temp = node_.drop_subscription_stmt_; + node_.drop_subscription_stmt_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline void Node::unsafe_arena_set_allocated_drop_subscription_stmt(::pg_query::DropSubscriptionStmt* drop_subscription_stmt) { + clear_node(); + if (drop_subscription_stmt) { + set_has_drop_subscription_stmt(); + node_.drop_subscription_stmt_ = drop_subscription_stmt; + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.drop_subscription_stmt) +} +inline ::pg_query::DropSubscriptionStmt* Node::_internal_mutable_drop_subscription_stmt() { + if (!_internal_has_drop_subscription_stmt()) { + clear_node(); + set_has_drop_subscription_stmt(); + node_.drop_subscription_stmt_ = CreateMaybeMessage< ::pg_query::DropSubscriptionStmt >(GetArena()); + } + return node_.drop_subscription_stmt_; +} +inline ::pg_query::DropSubscriptionStmt* Node::mutable_drop_subscription_stmt() { + // @@protoc_insertion_point(field_mutable:pg_query.Node.drop_subscription_stmt) + return _internal_mutable_drop_subscription_stmt(); +} + +// .pg_query.CreateStatsStmt create_stats_stmt = 163 [json_name = "CreateStatsStmt"]; +inline bool Node::_internal_has_create_stats_stmt() const { + return node_case() == kCreateStatsStmt; +} +inline bool Node::has_create_stats_stmt() const { + return _internal_has_create_stats_stmt(); +} +inline void Node::set_has_create_stats_stmt() { + _oneof_case_[0] = kCreateStatsStmt; +} +inline void Node::clear_create_stats_stmt() { + if (_internal_has_create_stats_stmt()) { + if (GetArena() == nullptr) { + delete node_.create_stats_stmt_; + } + clear_has_node(); + } +} +inline ::pg_query::CreateStatsStmt* Node::release_create_stats_stmt() { + // @@protoc_insertion_point(field_release:pg_query.Node.create_stats_stmt) + if (_internal_has_create_stats_stmt()) { + clear_has_node(); + ::pg_query::CreateStatsStmt* temp = node_.create_stats_stmt_; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + node_.create_stats_stmt_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline const ::pg_query::CreateStatsStmt& Node::_internal_create_stats_stmt() const { + return _internal_has_create_stats_stmt() + ? *node_.create_stats_stmt_ + : reinterpret_cast< ::pg_query::CreateStatsStmt&>(::pg_query::_CreateStatsStmt_default_instance_); +} +inline const ::pg_query::CreateStatsStmt& Node::create_stats_stmt() const { + // @@protoc_insertion_point(field_get:pg_query.Node.create_stats_stmt) + return _internal_create_stats_stmt(); +} +inline ::pg_query::CreateStatsStmt* Node::unsafe_arena_release_create_stats_stmt() { + // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.create_stats_stmt) + if (_internal_has_create_stats_stmt()) { + clear_has_node(); + ::pg_query::CreateStatsStmt* temp = node_.create_stats_stmt_; + node_.create_stats_stmt_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline void Node::unsafe_arena_set_allocated_create_stats_stmt(::pg_query::CreateStatsStmt* create_stats_stmt) { + clear_node(); + if (create_stats_stmt) { + set_has_create_stats_stmt(); + node_.create_stats_stmt_ = create_stats_stmt; + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.create_stats_stmt) +} +inline ::pg_query::CreateStatsStmt* Node::_internal_mutable_create_stats_stmt() { + if (!_internal_has_create_stats_stmt()) { + clear_node(); + set_has_create_stats_stmt(); + node_.create_stats_stmt_ = CreateMaybeMessage< ::pg_query::CreateStatsStmt >(GetArena()); + } + return node_.create_stats_stmt_; +} +inline ::pg_query::CreateStatsStmt* Node::mutable_create_stats_stmt() { + // @@protoc_insertion_point(field_mutable:pg_query.Node.create_stats_stmt) + return _internal_mutable_create_stats_stmt(); +} + +// .pg_query.AlterCollationStmt alter_collation_stmt = 164 [json_name = "AlterCollationStmt"]; +inline bool Node::_internal_has_alter_collation_stmt() const { + return node_case() == kAlterCollationStmt; +} +inline bool Node::has_alter_collation_stmt() const { + return _internal_has_alter_collation_stmt(); +} +inline void Node::set_has_alter_collation_stmt() { + _oneof_case_[0] = kAlterCollationStmt; +} +inline void Node::clear_alter_collation_stmt() { + if (_internal_has_alter_collation_stmt()) { + if (GetArena() == nullptr) { + delete node_.alter_collation_stmt_; + } + clear_has_node(); + } +} +inline ::pg_query::AlterCollationStmt* Node::release_alter_collation_stmt() { + // @@protoc_insertion_point(field_release:pg_query.Node.alter_collation_stmt) + if (_internal_has_alter_collation_stmt()) { + clear_has_node(); + ::pg_query::AlterCollationStmt* temp = node_.alter_collation_stmt_; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + node_.alter_collation_stmt_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline const ::pg_query::AlterCollationStmt& Node::_internal_alter_collation_stmt() const { + return _internal_has_alter_collation_stmt() + ? *node_.alter_collation_stmt_ + : reinterpret_cast< ::pg_query::AlterCollationStmt&>(::pg_query::_AlterCollationStmt_default_instance_); +} +inline const ::pg_query::AlterCollationStmt& Node::alter_collation_stmt() const { + // @@protoc_insertion_point(field_get:pg_query.Node.alter_collation_stmt) + return _internal_alter_collation_stmt(); +} +inline ::pg_query::AlterCollationStmt* Node::unsafe_arena_release_alter_collation_stmt() { + // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.alter_collation_stmt) + if (_internal_has_alter_collation_stmt()) { + clear_has_node(); + ::pg_query::AlterCollationStmt* temp = node_.alter_collation_stmt_; + node_.alter_collation_stmt_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline void Node::unsafe_arena_set_allocated_alter_collation_stmt(::pg_query::AlterCollationStmt* alter_collation_stmt) { + clear_node(); + if (alter_collation_stmt) { + set_has_alter_collation_stmt(); + node_.alter_collation_stmt_ = alter_collation_stmt; + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.alter_collation_stmt) +} +inline ::pg_query::AlterCollationStmt* Node::_internal_mutable_alter_collation_stmt() { + if (!_internal_has_alter_collation_stmt()) { + clear_node(); + set_has_alter_collation_stmt(); + node_.alter_collation_stmt_ = CreateMaybeMessage< ::pg_query::AlterCollationStmt >(GetArena()); + } + return node_.alter_collation_stmt_; +} +inline ::pg_query::AlterCollationStmt* Node::mutable_alter_collation_stmt() { + // @@protoc_insertion_point(field_mutable:pg_query.Node.alter_collation_stmt) + return _internal_mutable_alter_collation_stmt(); +} + +// .pg_query.CallStmt call_stmt = 165 [json_name = "CallStmt"]; +inline bool Node::_internal_has_call_stmt() const { + return node_case() == kCallStmt; +} +inline bool Node::has_call_stmt() const { + return _internal_has_call_stmt(); +} +inline void Node::set_has_call_stmt() { + _oneof_case_[0] = kCallStmt; +} +inline void Node::clear_call_stmt() { + if (_internal_has_call_stmt()) { + if (GetArena() == nullptr) { + delete node_.call_stmt_; + } + clear_has_node(); + } +} +inline ::pg_query::CallStmt* Node::release_call_stmt() { + // @@protoc_insertion_point(field_release:pg_query.Node.call_stmt) + if (_internal_has_call_stmt()) { + clear_has_node(); + ::pg_query::CallStmt* temp = node_.call_stmt_; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + node_.call_stmt_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline const ::pg_query::CallStmt& Node::_internal_call_stmt() const { + return _internal_has_call_stmt() + ? *node_.call_stmt_ + : reinterpret_cast< ::pg_query::CallStmt&>(::pg_query::_CallStmt_default_instance_); +} +inline const ::pg_query::CallStmt& Node::call_stmt() const { + // @@protoc_insertion_point(field_get:pg_query.Node.call_stmt) + return _internal_call_stmt(); +} +inline ::pg_query::CallStmt* Node::unsafe_arena_release_call_stmt() { + // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.call_stmt) + if (_internal_has_call_stmt()) { + clear_has_node(); + ::pg_query::CallStmt* temp = node_.call_stmt_; + node_.call_stmt_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline void Node::unsafe_arena_set_allocated_call_stmt(::pg_query::CallStmt* call_stmt) { + clear_node(); + if (call_stmt) { + set_has_call_stmt(); + node_.call_stmt_ = call_stmt; + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.call_stmt) +} +inline ::pg_query::CallStmt* Node::_internal_mutable_call_stmt() { + if (!_internal_has_call_stmt()) { + clear_node(); + set_has_call_stmt(); + node_.call_stmt_ = CreateMaybeMessage< ::pg_query::CallStmt >(GetArena()); + } + return node_.call_stmt_; +} +inline ::pg_query::CallStmt* Node::mutable_call_stmt() { + // @@protoc_insertion_point(field_mutable:pg_query.Node.call_stmt) + return _internal_mutable_call_stmt(); +} + +// .pg_query.AlterStatsStmt alter_stats_stmt = 166 [json_name = "AlterStatsStmt"]; +inline bool Node::_internal_has_alter_stats_stmt() const { + return node_case() == kAlterStatsStmt; +} +inline bool Node::has_alter_stats_stmt() const { + return _internal_has_alter_stats_stmt(); +} +inline void Node::set_has_alter_stats_stmt() { + _oneof_case_[0] = kAlterStatsStmt; +} +inline void Node::clear_alter_stats_stmt() { + if (_internal_has_alter_stats_stmt()) { + if (GetArena() == nullptr) { + delete node_.alter_stats_stmt_; + } + clear_has_node(); + } +} +inline ::pg_query::AlterStatsStmt* Node::release_alter_stats_stmt() { + // @@protoc_insertion_point(field_release:pg_query.Node.alter_stats_stmt) + if (_internal_has_alter_stats_stmt()) { + clear_has_node(); + ::pg_query::AlterStatsStmt* temp = node_.alter_stats_stmt_; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + node_.alter_stats_stmt_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline const ::pg_query::AlterStatsStmt& Node::_internal_alter_stats_stmt() const { + return _internal_has_alter_stats_stmt() + ? *node_.alter_stats_stmt_ + : reinterpret_cast< ::pg_query::AlterStatsStmt&>(::pg_query::_AlterStatsStmt_default_instance_); +} +inline const ::pg_query::AlterStatsStmt& Node::alter_stats_stmt() const { + // @@protoc_insertion_point(field_get:pg_query.Node.alter_stats_stmt) + return _internal_alter_stats_stmt(); +} +inline ::pg_query::AlterStatsStmt* Node::unsafe_arena_release_alter_stats_stmt() { + // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.alter_stats_stmt) + if (_internal_has_alter_stats_stmt()) { + clear_has_node(); + ::pg_query::AlterStatsStmt* temp = node_.alter_stats_stmt_; + node_.alter_stats_stmt_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline void Node::unsafe_arena_set_allocated_alter_stats_stmt(::pg_query::AlterStatsStmt* alter_stats_stmt) { + clear_node(); + if (alter_stats_stmt) { + set_has_alter_stats_stmt(); + node_.alter_stats_stmt_ = alter_stats_stmt; + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.alter_stats_stmt) +} +inline ::pg_query::AlterStatsStmt* Node::_internal_mutable_alter_stats_stmt() { + if (!_internal_has_alter_stats_stmt()) { + clear_node(); + set_has_alter_stats_stmt(); + node_.alter_stats_stmt_ = CreateMaybeMessage< ::pg_query::AlterStatsStmt >(GetArena()); + } + return node_.alter_stats_stmt_; +} +inline ::pg_query::AlterStatsStmt* Node::mutable_alter_stats_stmt() { + // @@protoc_insertion_point(field_mutable:pg_query.Node.alter_stats_stmt) + return _internal_mutable_alter_stats_stmt(); +} + +// .pg_query.A_Expr a_expr = 167 [json_name = "A_Expr"]; +inline bool Node::_internal_has_a_expr() const { + return node_case() == kAExpr; +} +inline bool Node::has_a_expr() const { + return _internal_has_a_expr(); +} +inline void Node::set_has_a_expr() { + _oneof_case_[0] = kAExpr; +} +inline void Node::clear_a_expr() { + if (_internal_has_a_expr()) { + if (GetArena() == nullptr) { + delete node_.a_expr_; + } + clear_has_node(); + } +} +inline ::pg_query::A_Expr* Node::release_a_expr() { + // @@protoc_insertion_point(field_release:pg_query.Node.a_expr) + if (_internal_has_a_expr()) { + clear_has_node(); + ::pg_query::A_Expr* temp = node_.a_expr_; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + node_.a_expr_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline const ::pg_query::A_Expr& Node::_internal_a_expr() const { + return _internal_has_a_expr() + ? *node_.a_expr_ + : reinterpret_cast< ::pg_query::A_Expr&>(::pg_query::_A_Expr_default_instance_); +} +inline const ::pg_query::A_Expr& Node::a_expr() const { + // @@protoc_insertion_point(field_get:pg_query.Node.a_expr) + return _internal_a_expr(); +} +inline ::pg_query::A_Expr* Node::unsafe_arena_release_a_expr() { + // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.a_expr) + if (_internal_has_a_expr()) { + clear_has_node(); + ::pg_query::A_Expr* temp = node_.a_expr_; + node_.a_expr_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline void Node::unsafe_arena_set_allocated_a_expr(::pg_query::A_Expr* a_expr) { + clear_node(); + if (a_expr) { + set_has_a_expr(); + node_.a_expr_ = a_expr; + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.a_expr) +} +inline ::pg_query::A_Expr* Node::_internal_mutable_a_expr() { + if (!_internal_has_a_expr()) { + clear_node(); + set_has_a_expr(); + node_.a_expr_ = CreateMaybeMessage< ::pg_query::A_Expr >(GetArena()); + } + return node_.a_expr_; +} +inline ::pg_query::A_Expr* Node::mutable_a_expr() { + // @@protoc_insertion_point(field_mutable:pg_query.Node.a_expr) + return _internal_mutable_a_expr(); +} + +// .pg_query.ColumnRef column_ref = 168 [json_name = "ColumnRef"]; +inline bool Node::_internal_has_column_ref() const { + return node_case() == kColumnRef; +} +inline bool Node::has_column_ref() const { + return _internal_has_column_ref(); +} +inline void Node::set_has_column_ref() { + _oneof_case_[0] = kColumnRef; +} +inline void Node::clear_column_ref() { + if (_internal_has_column_ref()) { + if (GetArena() == nullptr) { + delete node_.column_ref_; + } + clear_has_node(); + } +} +inline ::pg_query::ColumnRef* Node::release_column_ref() { + // @@protoc_insertion_point(field_release:pg_query.Node.column_ref) + if (_internal_has_column_ref()) { + clear_has_node(); + ::pg_query::ColumnRef* temp = node_.column_ref_; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + node_.column_ref_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline const ::pg_query::ColumnRef& Node::_internal_column_ref() const { + return _internal_has_column_ref() + ? *node_.column_ref_ + : reinterpret_cast< ::pg_query::ColumnRef&>(::pg_query::_ColumnRef_default_instance_); +} +inline const ::pg_query::ColumnRef& Node::column_ref() const { + // @@protoc_insertion_point(field_get:pg_query.Node.column_ref) + return _internal_column_ref(); +} +inline ::pg_query::ColumnRef* Node::unsafe_arena_release_column_ref() { + // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.column_ref) + if (_internal_has_column_ref()) { + clear_has_node(); + ::pg_query::ColumnRef* temp = node_.column_ref_; + node_.column_ref_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline void Node::unsafe_arena_set_allocated_column_ref(::pg_query::ColumnRef* column_ref) { + clear_node(); + if (column_ref) { + set_has_column_ref(); + node_.column_ref_ = column_ref; + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.column_ref) +} +inline ::pg_query::ColumnRef* Node::_internal_mutable_column_ref() { + if (!_internal_has_column_ref()) { + clear_node(); + set_has_column_ref(); + node_.column_ref_ = CreateMaybeMessage< ::pg_query::ColumnRef >(GetArena()); + } + return node_.column_ref_; +} +inline ::pg_query::ColumnRef* Node::mutable_column_ref() { + // @@protoc_insertion_point(field_mutable:pg_query.Node.column_ref) + return _internal_mutable_column_ref(); +} + +// .pg_query.ParamRef param_ref = 169 [json_name = "ParamRef"]; +inline bool Node::_internal_has_param_ref() const { + return node_case() == kParamRef; +} +inline bool Node::has_param_ref() const { + return _internal_has_param_ref(); +} +inline void Node::set_has_param_ref() { + _oneof_case_[0] = kParamRef; +} +inline void Node::clear_param_ref() { + if (_internal_has_param_ref()) { + if (GetArena() == nullptr) { + delete node_.param_ref_; + } + clear_has_node(); + } +} +inline ::pg_query::ParamRef* Node::release_param_ref() { + // @@protoc_insertion_point(field_release:pg_query.Node.param_ref) + if (_internal_has_param_ref()) { + clear_has_node(); + ::pg_query::ParamRef* temp = node_.param_ref_; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + node_.param_ref_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline const ::pg_query::ParamRef& Node::_internal_param_ref() const { + return _internal_has_param_ref() + ? *node_.param_ref_ + : reinterpret_cast< ::pg_query::ParamRef&>(::pg_query::_ParamRef_default_instance_); +} +inline const ::pg_query::ParamRef& Node::param_ref() const { + // @@protoc_insertion_point(field_get:pg_query.Node.param_ref) + return _internal_param_ref(); +} +inline ::pg_query::ParamRef* Node::unsafe_arena_release_param_ref() { + // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.param_ref) + if (_internal_has_param_ref()) { + clear_has_node(); + ::pg_query::ParamRef* temp = node_.param_ref_; + node_.param_ref_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline void Node::unsafe_arena_set_allocated_param_ref(::pg_query::ParamRef* param_ref) { + clear_node(); + if (param_ref) { + set_has_param_ref(); + node_.param_ref_ = param_ref; + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.param_ref) +} +inline ::pg_query::ParamRef* Node::_internal_mutable_param_ref() { + if (!_internal_has_param_ref()) { + clear_node(); + set_has_param_ref(); + node_.param_ref_ = CreateMaybeMessage< ::pg_query::ParamRef >(GetArena()); + } + return node_.param_ref_; +} +inline ::pg_query::ParamRef* Node::mutable_param_ref() { + // @@protoc_insertion_point(field_mutable:pg_query.Node.param_ref) + return _internal_mutable_param_ref(); +} + +// .pg_query.A_Const a_const = 170 [json_name = "A_Const"]; +inline bool Node::_internal_has_a_const() const { + return node_case() == kAConst; +} +inline bool Node::has_a_const() const { + return _internal_has_a_const(); +} +inline void Node::set_has_a_const() { + _oneof_case_[0] = kAConst; +} +inline void Node::clear_a_const() { + if (_internal_has_a_const()) { + if (GetArena() == nullptr) { + delete node_.a_const_; + } + clear_has_node(); + } +} +inline ::pg_query::A_Const* Node::release_a_const() { + // @@protoc_insertion_point(field_release:pg_query.Node.a_const) + if (_internal_has_a_const()) { + clear_has_node(); + ::pg_query::A_Const* temp = node_.a_const_; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + node_.a_const_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline const ::pg_query::A_Const& Node::_internal_a_const() const { + return _internal_has_a_const() + ? *node_.a_const_ + : reinterpret_cast< ::pg_query::A_Const&>(::pg_query::_A_Const_default_instance_); +} +inline const ::pg_query::A_Const& Node::a_const() const { + // @@protoc_insertion_point(field_get:pg_query.Node.a_const) + return _internal_a_const(); +} +inline ::pg_query::A_Const* Node::unsafe_arena_release_a_const() { + // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.a_const) + if (_internal_has_a_const()) { + clear_has_node(); + ::pg_query::A_Const* temp = node_.a_const_; + node_.a_const_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline void Node::unsafe_arena_set_allocated_a_const(::pg_query::A_Const* a_const) { + clear_node(); + if (a_const) { + set_has_a_const(); + node_.a_const_ = a_const; + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.a_const) +} +inline ::pg_query::A_Const* Node::_internal_mutable_a_const() { + if (!_internal_has_a_const()) { + clear_node(); + set_has_a_const(); + node_.a_const_ = CreateMaybeMessage< ::pg_query::A_Const >(GetArena()); + } + return node_.a_const_; +} +inline ::pg_query::A_Const* Node::mutable_a_const() { + // @@protoc_insertion_point(field_mutable:pg_query.Node.a_const) + return _internal_mutable_a_const(); +} + +// .pg_query.FuncCall func_call = 171 [json_name = "FuncCall"]; +inline bool Node::_internal_has_func_call() const { + return node_case() == kFuncCall; +} +inline bool Node::has_func_call() const { + return _internal_has_func_call(); +} +inline void Node::set_has_func_call() { + _oneof_case_[0] = kFuncCall; +} +inline void Node::clear_func_call() { + if (_internal_has_func_call()) { + if (GetArena() == nullptr) { + delete node_.func_call_; + } + clear_has_node(); + } +} +inline ::pg_query::FuncCall* Node::release_func_call() { + // @@protoc_insertion_point(field_release:pg_query.Node.func_call) + if (_internal_has_func_call()) { + clear_has_node(); + ::pg_query::FuncCall* temp = node_.func_call_; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + node_.func_call_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline const ::pg_query::FuncCall& Node::_internal_func_call() const { + return _internal_has_func_call() + ? *node_.func_call_ + : reinterpret_cast< ::pg_query::FuncCall&>(::pg_query::_FuncCall_default_instance_); +} +inline const ::pg_query::FuncCall& Node::func_call() const { + // @@protoc_insertion_point(field_get:pg_query.Node.func_call) + return _internal_func_call(); +} +inline ::pg_query::FuncCall* Node::unsafe_arena_release_func_call() { + // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.func_call) + if (_internal_has_func_call()) { + clear_has_node(); + ::pg_query::FuncCall* temp = node_.func_call_; + node_.func_call_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline void Node::unsafe_arena_set_allocated_func_call(::pg_query::FuncCall* func_call) { + clear_node(); + if (func_call) { + set_has_func_call(); + node_.func_call_ = func_call; + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.func_call) +} +inline ::pg_query::FuncCall* Node::_internal_mutable_func_call() { + if (!_internal_has_func_call()) { + clear_node(); + set_has_func_call(); + node_.func_call_ = CreateMaybeMessage< ::pg_query::FuncCall >(GetArena()); + } + return node_.func_call_; +} +inline ::pg_query::FuncCall* Node::mutable_func_call() { + // @@protoc_insertion_point(field_mutable:pg_query.Node.func_call) + return _internal_mutable_func_call(); +} + +// .pg_query.A_Star a_star = 172 [json_name = "A_Star"]; +inline bool Node::_internal_has_a_star() const { + return node_case() == kAStar; +} +inline bool Node::has_a_star() const { + return _internal_has_a_star(); +} +inline void Node::set_has_a_star() { + _oneof_case_[0] = kAStar; +} +inline void Node::clear_a_star() { + if (_internal_has_a_star()) { + if (GetArena() == nullptr) { + delete node_.a_star_; + } + clear_has_node(); + } +} +inline ::pg_query::A_Star* Node::release_a_star() { + // @@protoc_insertion_point(field_release:pg_query.Node.a_star) + if (_internal_has_a_star()) { + clear_has_node(); + ::pg_query::A_Star* temp = node_.a_star_; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + node_.a_star_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline const ::pg_query::A_Star& Node::_internal_a_star() const { + return _internal_has_a_star() + ? *node_.a_star_ + : reinterpret_cast< ::pg_query::A_Star&>(::pg_query::_A_Star_default_instance_); +} +inline const ::pg_query::A_Star& Node::a_star() const { + // @@protoc_insertion_point(field_get:pg_query.Node.a_star) + return _internal_a_star(); +} +inline ::pg_query::A_Star* Node::unsafe_arena_release_a_star() { + // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.a_star) + if (_internal_has_a_star()) { + clear_has_node(); + ::pg_query::A_Star* temp = node_.a_star_; + node_.a_star_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline void Node::unsafe_arena_set_allocated_a_star(::pg_query::A_Star* a_star) { + clear_node(); + if (a_star) { + set_has_a_star(); + node_.a_star_ = a_star; + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.a_star) +} +inline ::pg_query::A_Star* Node::_internal_mutable_a_star() { + if (!_internal_has_a_star()) { + clear_node(); + set_has_a_star(); + node_.a_star_ = CreateMaybeMessage< ::pg_query::A_Star >(GetArena()); + } + return node_.a_star_; +} +inline ::pg_query::A_Star* Node::mutable_a_star() { + // @@protoc_insertion_point(field_mutable:pg_query.Node.a_star) + return _internal_mutable_a_star(); +} + +// .pg_query.A_Indices a_indices = 173 [json_name = "A_Indices"]; +inline bool Node::_internal_has_a_indices() const { + return node_case() == kAIndices; +} +inline bool Node::has_a_indices() const { + return _internal_has_a_indices(); +} +inline void Node::set_has_a_indices() { + _oneof_case_[0] = kAIndices; +} +inline void Node::clear_a_indices() { + if (_internal_has_a_indices()) { + if (GetArena() == nullptr) { + delete node_.a_indices_; + } + clear_has_node(); + } +} +inline ::pg_query::A_Indices* Node::release_a_indices() { + // @@protoc_insertion_point(field_release:pg_query.Node.a_indices) + if (_internal_has_a_indices()) { + clear_has_node(); + ::pg_query::A_Indices* temp = node_.a_indices_; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + node_.a_indices_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline const ::pg_query::A_Indices& Node::_internal_a_indices() const { + return _internal_has_a_indices() + ? *node_.a_indices_ + : reinterpret_cast< ::pg_query::A_Indices&>(::pg_query::_A_Indices_default_instance_); +} +inline const ::pg_query::A_Indices& Node::a_indices() const { + // @@protoc_insertion_point(field_get:pg_query.Node.a_indices) + return _internal_a_indices(); +} +inline ::pg_query::A_Indices* Node::unsafe_arena_release_a_indices() { + // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.a_indices) + if (_internal_has_a_indices()) { + clear_has_node(); + ::pg_query::A_Indices* temp = node_.a_indices_; + node_.a_indices_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline void Node::unsafe_arena_set_allocated_a_indices(::pg_query::A_Indices* a_indices) { + clear_node(); + if (a_indices) { + set_has_a_indices(); + node_.a_indices_ = a_indices; + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.a_indices) +} +inline ::pg_query::A_Indices* Node::_internal_mutable_a_indices() { + if (!_internal_has_a_indices()) { + clear_node(); + set_has_a_indices(); + node_.a_indices_ = CreateMaybeMessage< ::pg_query::A_Indices >(GetArena()); + } + return node_.a_indices_; +} +inline ::pg_query::A_Indices* Node::mutable_a_indices() { + // @@protoc_insertion_point(field_mutable:pg_query.Node.a_indices) + return _internal_mutable_a_indices(); +} + +// .pg_query.A_Indirection a_indirection = 174 [json_name = "A_Indirection"]; +inline bool Node::_internal_has_a_indirection() const { + return node_case() == kAIndirection; +} +inline bool Node::has_a_indirection() const { + return _internal_has_a_indirection(); +} +inline void Node::set_has_a_indirection() { + _oneof_case_[0] = kAIndirection; +} +inline void Node::clear_a_indirection() { + if (_internal_has_a_indirection()) { + if (GetArena() == nullptr) { + delete node_.a_indirection_; + } + clear_has_node(); + } +} +inline ::pg_query::A_Indirection* Node::release_a_indirection() { + // @@protoc_insertion_point(field_release:pg_query.Node.a_indirection) + if (_internal_has_a_indirection()) { + clear_has_node(); + ::pg_query::A_Indirection* temp = node_.a_indirection_; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + node_.a_indirection_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline const ::pg_query::A_Indirection& Node::_internal_a_indirection() const { + return _internal_has_a_indirection() + ? *node_.a_indirection_ + : reinterpret_cast< ::pg_query::A_Indirection&>(::pg_query::_A_Indirection_default_instance_); +} +inline const ::pg_query::A_Indirection& Node::a_indirection() const { + // @@protoc_insertion_point(field_get:pg_query.Node.a_indirection) + return _internal_a_indirection(); +} +inline ::pg_query::A_Indirection* Node::unsafe_arena_release_a_indirection() { + // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.a_indirection) + if (_internal_has_a_indirection()) { + clear_has_node(); + ::pg_query::A_Indirection* temp = node_.a_indirection_; + node_.a_indirection_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline void Node::unsafe_arena_set_allocated_a_indirection(::pg_query::A_Indirection* a_indirection) { + clear_node(); + if (a_indirection) { + set_has_a_indirection(); + node_.a_indirection_ = a_indirection; + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.a_indirection) +} +inline ::pg_query::A_Indirection* Node::_internal_mutable_a_indirection() { + if (!_internal_has_a_indirection()) { + clear_node(); + set_has_a_indirection(); + node_.a_indirection_ = CreateMaybeMessage< ::pg_query::A_Indirection >(GetArena()); + } + return node_.a_indirection_; +} +inline ::pg_query::A_Indirection* Node::mutable_a_indirection() { + // @@protoc_insertion_point(field_mutable:pg_query.Node.a_indirection) + return _internal_mutable_a_indirection(); +} + +// .pg_query.A_ArrayExpr a_array_expr = 175 [json_name = "A_ArrayExpr"]; +inline bool Node::_internal_has_a_array_expr() const { + return node_case() == kAArrayExpr; +} +inline bool Node::has_a_array_expr() const { + return _internal_has_a_array_expr(); +} +inline void Node::set_has_a_array_expr() { + _oneof_case_[0] = kAArrayExpr; +} +inline void Node::clear_a_array_expr() { + if (_internal_has_a_array_expr()) { + if (GetArena() == nullptr) { + delete node_.a_array_expr_; + } + clear_has_node(); + } +} +inline ::pg_query::A_ArrayExpr* Node::release_a_array_expr() { + // @@protoc_insertion_point(field_release:pg_query.Node.a_array_expr) + if (_internal_has_a_array_expr()) { + clear_has_node(); + ::pg_query::A_ArrayExpr* temp = node_.a_array_expr_; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + node_.a_array_expr_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline const ::pg_query::A_ArrayExpr& Node::_internal_a_array_expr() const { + return _internal_has_a_array_expr() + ? *node_.a_array_expr_ + : reinterpret_cast< ::pg_query::A_ArrayExpr&>(::pg_query::_A_ArrayExpr_default_instance_); +} +inline const ::pg_query::A_ArrayExpr& Node::a_array_expr() const { + // @@protoc_insertion_point(field_get:pg_query.Node.a_array_expr) + return _internal_a_array_expr(); +} +inline ::pg_query::A_ArrayExpr* Node::unsafe_arena_release_a_array_expr() { + // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.a_array_expr) + if (_internal_has_a_array_expr()) { + clear_has_node(); + ::pg_query::A_ArrayExpr* temp = node_.a_array_expr_; + node_.a_array_expr_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline void Node::unsafe_arena_set_allocated_a_array_expr(::pg_query::A_ArrayExpr* a_array_expr) { + clear_node(); + if (a_array_expr) { + set_has_a_array_expr(); + node_.a_array_expr_ = a_array_expr; + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.a_array_expr) +} +inline ::pg_query::A_ArrayExpr* Node::_internal_mutable_a_array_expr() { + if (!_internal_has_a_array_expr()) { + clear_node(); + set_has_a_array_expr(); + node_.a_array_expr_ = CreateMaybeMessage< ::pg_query::A_ArrayExpr >(GetArena()); + } + return node_.a_array_expr_; +} +inline ::pg_query::A_ArrayExpr* Node::mutable_a_array_expr() { + // @@protoc_insertion_point(field_mutable:pg_query.Node.a_array_expr) + return _internal_mutable_a_array_expr(); +} + +// .pg_query.ResTarget res_target = 176 [json_name = "ResTarget"]; +inline bool Node::_internal_has_res_target() const { + return node_case() == kResTarget; +} +inline bool Node::has_res_target() const { + return _internal_has_res_target(); +} +inline void Node::set_has_res_target() { + _oneof_case_[0] = kResTarget; +} +inline void Node::clear_res_target() { + if (_internal_has_res_target()) { + if (GetArena() == nullptr) { + delete node_.res_target_; + } + clear_has_node(); + } +} +inline ::pg_query::ResTarget* Node::release_res_target() { + // @@protoc_insertion_point(field_release:pg_query.Node.res_target) + if (_internal_has_res_target()) { + clear_has_node(); + ::pg_query::ResTarget* temp = node_.res_target_; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + node_.res_target_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline const ::pg_query::ResTarget& Node::_internal_res_target() const { + return _internal_has_res_target() + ? *node_.res_target_ + : reinterpret_cast< ::pg_query::ResTarget&>(::pg_query::_ResTarget_default_instance_); +} +inline const ::pg_query::ResTarget& Node::res_target() const { + // @@protoc_insertion_point(field_get:pg_query.Node.res_target) + return _internal_res_target(); +} +inline ::pg_query::ResTarget* Node::unsafe_arena_release_res_target() { + // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.res_target) + if (_internal_has_res_target()) { + clear_has_node(); + ::pg_query::ResTarget* temp = node_.res_target_; + node_.res_target_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline void Node::unsafe_arena_set_allocated_res_target(::pg_query::ResTarget* res_target) { + clear_node(); + if (res_target) { + set_has_res_target(); + node_.res_target_ = res_target; + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.res_target) +} +inline ::pg_query::ResTarget* Node::_internal_mutable_res_target() { + if (!_internal_has_res_target()) { + clear_node(); + set_has_res_target(); + node_.res_target_ = CreateMaybeMessage< ::pg_query::ResTarget >(GetArena()); + } + return node_.res_target_; +} +inline ::pg_query::ResTarget* Node::mutable_res_target() { + // @@protoc_insertion_point(field_mutable:pg_query.Node.res_target) + return _internal_mutable_res_target(); +} + +// .pg_query.MultiAssignRef multi_assign_ref = 177 [json_name = "MultiAssignRef"]; +inline bool Node::_internal_has_multi_assign_ref() const { + return node_case() == kMultiAssignRef; +} +inline bool Node::has_multi_assign_ref() const { + return _internal_has_multi_assign_ref(); +} +inline void Node::set_has_multi_assign_ref() { + _oneof_case_[0] = kMultiAssignRef; +} +inline void Node::clear_multi_assign_ref() { + if (_internal_has_multi_assign_ref()) { + if (GetArena() == nullptr) { + delete node_.multi_assign_ref_; + } + clear_has_node(); + } +} +inline ::pg_query::MultiAssignRef* Node::release_multi_assign_ref() { + // @@protoc_insertion_point(field_release:pg_query.Node.multi_assign_ref) + if (_internal_has_multi_assign_ref()) { + clear_has_node(); + ::pg_query::MultiAssignRef* temp = node_.multi_assign_ref_; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + node_.multi_assign_ref_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline const ::pg_query::MultiAssignRef& Node::_internal_multi_assign_ref() const { + return _internal_has_multi_assign_ref() + ? *node_.multi_assign_ref_ + : reinterpret_cast< ::pg_query::MultiAssignRef&>(::pg_query::_MultiAssignRef_default_instance_); +} +inline const ::pg_query::MultiAssignRef& Node::multi_assign_ref() const { + // @@protoc_insertion_point(field_get:pg_query.Node.multi_assign_ref) + return _internal_multi_assign_ref(); +} +inline ::pg_query::MultiAssignRef* Node::unsafe_arena_release_multi_assign_ref() { + // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.multi_assign_ref) + if (_internal_has_multi_assign_ref()) { + clear_has_node(); + ::pg_query::MultiAssignRef* temp = node_.multi_assign_ref_; + node_.multi_assign_ref_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline void Node::unsafe_arena_set_allocated_multi_assign_ref(::pg_query::MultiAssignRef* multi_assign_ref) { + clear_node(); + if (multi_assign_ref) { + set_has_multi_assign_ref(); + node_.multi_assign_ref_ = multi_assign_ref; + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.multi_assign_ref) +} +inline ::pg_query::MultiAssignRef* Node::_internal_mutable_multi_assign_ref() { + if (!_internal_has_multi_assign_ref()) { + clear_node(); + set_has_multi_assign_ref(); + node_.multi_assign_ref_ = CreateMaybeMessage< ::pg_query::MultiAssignRef >(GetArena()); + } + return node_.multi_assign_ref_; +} +inline ::pg_query::MultiAssignRef* Node::mutable_multi_assign_ref() { + // @@protoc_insertion_point(field_mutable:pg_query.Node.multi_assign_ref) + return _internal_mutable_multi_assign_ref(); +} + +// .pg_query.TypeCast type_cast = 178 [json_name = "TypeCast"]; +inline bool Node::_internal_has_type_cast() const { + return node_case() == kTypeCast; +} +inline bool Node::has_type_cast() const { + return _internal_has_type_cast(); +} +inline void Node::set_has_type_cast() { + _oneof_case_[0] = kTypeCast; +} +inline void Node::clear_type_cast() { + if (_internal_has_type_cast()) { + if (GetArena() == nullptr) { + delete node_.type_cast_; + } + clear_has_node(); + } +} +inline ::pg_query::TypeCast* Node::release_type_cast() { + // @@protoc_insertion_point(field_release:pg_query.Node.type_cast) + if (_internal_has_type_cast()) { + clear_has_node(); + ::pg_query::TypeCast* temp = node_.type_cast_; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + node_.type_cast_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline const ::pg_query::TypeCast& Node::_internal_type_cast() const { + return _internal_has_type_cast() + ? *node_.type_cast_ + : reinterpret_cast< ::pg_query::TypeCast&>(::pg_query::_TypeCast_default_instance_); +} +inline const ::pg_query::TypeCast& Node::type_cast() const { + // @@protoc_insertion_point(field_get:pg_query.Node.type_cast) + return _internal_type_cast(); +} +inline ::pg_query::TypeCast* Node::unsafe_arena_release_type_cast() { + // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.type_cast) + if (_internal_has_type_cast()) { + clear_has_node(); + ::pg_query::TypeCast* temp = node_.type_cast_; + node_.type_cast_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline void Node::unsafe_arena_set_allocated_type_cast(::pg_query::TypeCast* type_cast) { + clear_node(); + if (type_cast) { + set_has_type_cast(); + node_.type_cast_ = type_cast; + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.type_cast) +} +inline ::pg_query::TypeCast* Node::_internal_mutable_type_cast() { + if (!_internal_has_type_cast()) { + clear_node(); + set_has_type_cast(); + node_.type_cast_ = CreateMaybeMessage< ::pg_query::TypeCast >(GetArena()); + } + return node_.type_cast_; +} +inline ::pg_query::TypeCast* Node::mutable_type_cast() { + // @@protoc_insertion_point(field_mutable:pg_query.Node.type_cast) + return _internal_mutable_type_cast(); +} + +// .pg_query.CollateClause collate_clause = 179 [json_name = "CollateClause"]; +inline bool Node::_internal_has_collate_clause() const { + return node_case() == kCollateClause; +} +inline bool Node::has_collate_clause() const { + return _internal_has_collate_clause(); +} +inline void Node::set_has_collate_clause() { + _oneof_case_[0] = kCollateClause; +} +inline void Node::clear_collate_clause() { + if (_internal_has_collate_clause()) { + if (GetArena() == nullptr) { + delete node_.collate_clause_; + } + clear_has_node(); + } +} +inline ::pg_query::CollateClause* Node::release_collate_clause() { + // @@protoc_insertion_point(field_release:pg_query.Node.collate_clause) + if (_internal_has_collate_clause()) { + clear_has_node(); + ::pg_query::CollateClause* temp = node_.collate_clause_; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + node_.collate_clause_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline const ::pg_query::CollateClause& Node::_internal_collate_clause() const { + return _internal_has_collate_clause() + ? *node_.collate_clause_ + : reinterpret_cast< ::pg_query::CollateClause&>(::pg_query::_CollateClause_default_instance_); +} +inline const ::pg_query::CollateClause& Node::collate_clause() const { + // @@protoc_insertion_point(field_get:pg_query.Node.collate_clause) + return _internal_collate_clause(); +} +inline ::pg_query::CollateClause* Node::unsafe_arena_release_collate_clause() { + // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.collate_clause) + if (_internal_has_collate_clause()) { + clear_has_node(); + ::pg_query::CollateClause* temp = node_.collate_clause_; + node_.collate_clause_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline void Node::unsafe_arena_set_allocated_collate_clause(::pg_query::CollateClause* collate_clause) { + clear_node(); + if (collate_clause) { + set_has_collate_clause(); + node_.collate_clause_ = collate_clause; + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.collate_clause) +} +inline ::pg_query::CollateClause* Node::_internal_mutable_collate_clause() { + if (!_internal_has_collate_clause()) { + clear_node(); + set_has_collate_clause(); + node_.collate_clause_ = CreateMaybeMessage< ::pg_query::CollateClause >(GetArena()); + } + return node_.collate_clause_; +} +inline ::pg_query::CollateClause* Node::mutable_collate_clause() { + // @@protoc_insertion_point(field_mutable:pg_query.Node.collate_clause) + return _internal_mutable_collate_clause(); +} + +// .pg_query.SortBy sort_by = 180 [json_name = "SortBy"]; +inline bool Node::_internal_has_sort_by() const { + return node_case() == kSortBy; +} +inline bool Node::has_sort_by() const { + return _internal_has_sort_by(); +} +inline void Node::set_has_sort_by() { + _oneof_case_[0] = kSortBy; +} +inline void Node::clear_sort_by() { + if (_internal_has_sort_by()) { + if (GetArena() == nullptr) { + delete node_.sort_by_; + } + clear_has_node(); + } +} +inline ::pg_query::SortBy* Node::release_sort_by() { + // @@protoc_insertion_point(field_release:pg_query.Node.sort_by) + if (_internal_has_sort_by()) { + clear_has_node(); + ::pg_query::SortBy* temp = node_.sort_by_; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + node_.sort_by_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline const ::pg_query::SortBy& Node::_internal_sort_by() const { + return _internal_has_sort_by() + ? *node_.sort_by_ + : reinterpret_cast< ::pg_query::SortBy&>(::pg_query::_SortBy_default_instance_); +} +inline const ::pg_query::SortBy& Node::sort_by() const { + // @@protoc_insertion_point(field_get:pg_query.Node.sort_by) + return _internal_sort_by(); +} +inline ::pg_query::SortBy* Node::unsafe_arena_release_sort_by() { + // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.sort_by) + if (_internal_has_sort_by()) { + clear_has_node(); + ::pg_query::SortBy* temp = node_.sort_by_; + node_.sort_by_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline void Node::unsafe_arena_set_allocated_sort_by(::pg_query::SortBy* sort_by) { + clear_node(); + if (sort_by) { + set_has_sort_by(); + node_.sort_by_ = sort_by; + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.sort_by) +} +inline ::pg_query::SortBy* Node::_internal_mutable_sort_by() { + if (!_internal_has_sort_by()) { + clear_node(); + set_has_sort_by(); + node_.sort_by_ = CreateMaybeMessage< ::pg_query::SortBy >(GetArena()); + } + return node_.sort_by_; +} +inline ::pg_query::SortBy* Node::mutable_sort_by() { + // @@protoc_insertion_point(field_mutable:pg_query.Node.sort_by) + return _internal_mutable_sort_by(); +} + +// .pg_query.WindowDef window_def = 181 [json_name = "WindowDef"]; +inline bool Node::_internal_has_window_def() const { + return node_case() == kWindowDef; +} +inline bool Node::has_window_def() const { + return _internal_has_window_def(); +} +inline void Node::set_has_window_def() { + _oneof_case_[0] = kWindowDef; +} +inline void Node::clear_window_def() { + if (_internal_has_window_def()) { + if (GetArena() == nullptr) { + delete node_.window_def_; + } + clear_has_node(); + } +} +inline ::pg_query::WindowDef* Node::release_window_def() { + // @@protoc_insertion_point(field_release:pg_query.Node.window_def) + if (_internal_has_window_def()) { + clear_has_node(); + ::pg_query::WindowDef* temp = node_.window_def_; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + node_.window_def_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline const ::pg_query::WindowDef& Node::_internal_window_def() const { + return _internal_has_window_def() + ? *node_.window_def_ + : reinterpret_cast< ::pg_query::WindowDef&>(::pg_query::_WindowDef_default_instance_); +} +inline const ::pg_query::WindowDef& Node::window_def() const { + // @@protoc_insertion_point(field_get:pg_query.Node.window_def) + return _internal_window_def(); +} +inline ::pg_query::WindowDef* Node::unsafe_arena_release_window_def() { + // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.window_def) + if (_internal_has_window_def()) { + clear_has_node(); + ::pg_query::WindowDef* temp = node_.window_def_; + node_.window_def_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline void Node::unsafe_arena_set_allocated_window_def(::pg_query::WindowDef* window_def) { + clear_node(); + if (window_def) { + set_has_window_def(); + node_.window_def_ = window_def; + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.window_def) +} +inline ::pg_query::WindowDef* Node::_internal_mutable_window_def() { + if (!_internal_has_window_def()) { + clear_node(); + set_has_window_def(); + node_.window_def_ = CreateMaybeMessage< ::pg_query::WindowDef >(GetArena()); + } + return node_.window_def_; +} +inline ::pg_query::WindowDef* Node::mutable_window_def() { + // @@protoc_insertion_point(field_mutable:pg_query.Node.window_def) + return _internal_mutable_window_def(); +} + +// .pg_query.RangeSubselect range_subselect = 182 [json_name = "RangeSubselect"]; +inline bool Node::_internal_has_range_subselect() const { + return node_case() == kRangeSubselect; +} +inline bool Node::has_range_subselect() const { + return _internal_has_range_subselect(); +} +inline void Node::set_has_range_subselect() { + _oneof_case_[0] = kRangeSubselect; +} +inline void Node::clear_range_subselect() { + if (_internal_has_range_subselect()) { + if (GetArena() == nullptr) { + delete node_.range_subselect_; + } + clear_has_node(); + } +} +inline ::pg_query::RangeSubselect* Node::release_range_subselect() { + // @@protoc_insertion_point(field_release:pg_query.Node.range_subselect) + if (_internal_has_range_subselect()) { + clear_has_node(); + ::pg_query::RangeSubselect* temp = node_.range_subselect_; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + node_.range_subselect_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline const ::pg_query::RangeSubselect& Node::_internal_range_subselect() const { + return _internal_has_range_subselect() + ? *node_.range_subselect_ + : reinterpret_cast< ::pg_query::RangeSubselect&>(::pg_query::_RangeSubselect_default_instance_); +} +inline const ::pg_query::RangeSubselect& Node::range_subselect() const { + // @@protoc_insertion_point(field_get:pg_query.Node.range_subselect) + return _internal_range_subselect(); +} +inline ::pg_query::RangeSubselect* Node::unsafe_arena_release_range_subselect() { + // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.range_subselect) + if (_internal_has_range_subselect()) { + clear_has_node(); + ::pg_query::RangeSubselect* temp = node_.range_subselect_; + node_.range_subselect_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline void Node::unsafe_arena_set_allocated_range_subselect(::pg_query::RangeSubselect* range_subselect) { + clear_node(); + if (range_subselect) { + set_has_range_subselect(); + node_.range_subselect_ = range_subselect; + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.range_subselect) +} +inline ::pg_query::RangeSubselect* Node::_internal_mutable_range_subselect() { + if (!_internal_has_range_subselect()) { + clear_node(); + set_has_range_subselect(); + node_.range_subselect_ = CreateMaybeMessage< ::pg_query::RangeSubselect >(GetArena()); + } + return node_.range_subselect_; +} +inline ::pg_query::RangeSubselect* Node::mutable_range_subselect() { + // @@protoc_insertion_point(field_mutable:pg_query.Node.range_subselect) + return _internal_mutable_range_subselect(); +} + +// .pg_query.RangeFunction range_function = 183 [json_name = "RangeFunction"]; +inline bool Node::_internal_has_range_function() const { + return node_case() == kRangeFunction; +} +inline bool Node::has_range_function() const { + return _internal_has_range_function(); +} +inline void Node::set_has_range_function() { + _oneof_case_[0] = kRangeFunction; +} +inline void Node::clear_range_function() { + if (_internal_has_range_function()) { + if (GetArena() == nullptr) { + delete node_.range_function_; + } + clear_has_node(); + } +} +inline ::pg_query::RangeFunction* Node::release_range_function() { + // @@protoc_insertion_point(field_release:pg_query.Node.range_function) + if (_internal_has_range_function()) { + clear_has_node(); + ::pg_query::RangeFunction* temp = node_.range_function_; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + node_.range_function_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline const ::pg_query::RangeFunction& Node::_internal_range_function() const { + return _internal_has_range_function() + ? *node_.range_function_ + : reinterpret_cast< ::pg_query::RangeFunction&>(::pg_query::_RangeFunction_default_instance_); +} +inline const ::pg_query::RangeFunction& Node::range_function() const { + // @@protoc_insertion_point(field_get:pg_query.Node.range_function) + return _internal_range_function(); +} +inline ::pg_query::RangeFunction* Node::unsafe_arena_release_range_function() { + // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.range_function) + if (_internal_has_range_function()) { + clear_has_node(); + ::pg_query::RangeFunction* temp = node_.range_function_; + node_.range_function_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline void Node::unsafe_arena_set_allocated_range_function(::pg_query::RangeFunction* range_function) { + clear_node(); + if (range_function) { + set_has_range_function(); + node_.range_function_ = range_function; + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.range_function) +} +inline ::pg_query::RangeFunction* Node::_internal_mutable_range_function() { + if (!_internal_has_range_function()) { + clear_node(); + set_has_range_function(); + node_.range_function_ = CreateMaybeMessage< ::pg_query::RangeFunction >(GetArena()); + } + return node_.range_function_; +} +inline ::pg_query::RangeFunction* Node::mutable_range_function() { + // @@protoc_insertion_point(field_mutable:pg_query.Node.range_function) + return _internal_mutable_range_function(); +} + +// .pg_query.RangeTableSample range_table_sample = 184 [json_name = "RangeTableSample"]; +inline bool Node::_internal_has_range_table_sample() const { + return node_case() == kRangeTableSample; +} +inline bool Node::has_range_table_sample() const { + return _internal_has_range_table_sample(); +} +inline void Node::set_has_range_table_sample() { + _oneof_case_[0] = kRangeTableSample; +} +inline void Node::clear_range_table_sample() { + if (_internal_has_range_table_sample()) { + if (GetArena() == nullptr) { + delete node_.range_table_sample_; + } + clear_has_node(); + } +} +inline ::pg_query::RangeTableSample* Node::release_range_table_sample() { + // @@protoc_insertion_point(field_release:pg_query.Node.range_table_sample) + if (_internal_has_range_table_sample()) { + clear_has_node(); + ::pg_query::RangeTableSample* temp = node_.range_table_sample_; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + node_.range_table_sample_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline const ::pg_query::RangeTableSample& Node::_internal_range_table_sample() const { + return _internal_has_range_table_sample() + ? *node_.range_table_sample_ + : reinterpret_cast< ::pg_query::RangeTableSample&>(::pg_query::_RangeTableSample_default_instance_); +} +inline const ::pg_query::RangeTableSample& Node::range_table_sample() const { + // @@protoc_insertion_point(field_get:pg_query.Node.range_table_sample) + return _internal_range_table_sample(); +} +inline ::pg_query::RangeTableSample* Node::unsafe_arena_release_range_table_sample() { + // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.range_table_sample) + if (_internal_has_range_table_sample()) { + clear_has_node(); + ::pg_query::RangeTableSample* temp = node_.range_table_sample_; + node_.range_table_sample_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline void Node::unsafe_arena_set_allocated_range_table_sample(::pg_query::RangeTableSample* range_table_sample) { + clear_node(); + if (range_table_sample) { + set_has_range_table_sample(); + node_.range_table_sample_ = range_table_sample; + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.range_table_sample) +} +inline ::pg_query::RangeTableSample* Node::_internal_mutable_range_table_sample() { + if (!_internal_has_range_table_sample()) { + clear_node(); + set_has_range_table_sample(); + node_.range_table_sample_ = CreateMaybeMessage< ::pg_query::RangeTableSample >(GetArena()); + } + return node_.range_table_sample_; +} +inline ::pg_query::RangeTableSample* Node::mutable_range_table_sample() { + // @@protoc_insertion_point(field_mutable:pg_query.Node.range_table_sample) + return _internal_mutable_range_table_sample(); +} + +// .pg_query.RangeTableFunc range_table_func = 185 [json_name = "RangeTableFunc"]; +inline bool Node::_internal_has_range_table_func() const { + return node_case() == kRangeTableFunc; +} +inline bool Node::has_range_table_func() const { + return _internal_has_range_table_func(); +} +inline void Node::set_has_range_table_func() { + _oneof_case_[0] = kRangeTableFunc; +} +inline void Node::clear_range_table_func() { + if (_internal_has_range_table_func()) { + if (GetArena() == nullptr) { + delete node_.range_table_func_; + } + clear_has_node(); + } +} +inline ::pg_query::RangeTableFunc* Node::release_range_table_func() { + // @@protoc_insertion_point(field_release:pg_query.Node.range_table_func) + if (_internal_has_range_table_func()) { + clear_has_node(); + ::pg_query::RangeTableFunc* temp = node_.range_table_func_; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + node_.range_table_func_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline const ::pg_query::RangeTableFunc& Node::_internal_range_table_func() const { + return _internal_has_range_table_func() + ? *node_.range_table_func_ + : reinterpret_cast< ::pg_query::RangeTableFunc&>(::pg_query::_RangeTableFunc_default_instance_); +} +inline const ::pg_query::RangeTableFunc& Node::range_table_func() const { + // @@protoc_insertion_point(field_get:pg_query.Node.range_table_func) + return _internal_range_table_func(); +} +inline ::pg_query::RangeTableFunc* Node::unsafe_arena_release_range_table_func() { + // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.range_table_func) + if (_internal_has_range_table_func()) { + clear_has_node(); + ::pg_query::RangeTableFunc* temp = node_.range_table_func_; + node_.range_table_func_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline void Node::unsafe_arena_set_allocated_range_table_func(::pg_query::RangeTableFunc* range_table_func) { + clear_node(); + if (range_table_func) { + set_has_range_table_func(); + node_.range_table_func_ = range_table_func; + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.range_table_func) +} +inline ::pg_query::RangeTableFunc* Node::_internal_mutable_range_table_func() { + if (!_internal_has_range_table_func()) { + clear_node(); + set_has_range_table_func(); + node_.range_table_func_ = CreateMaybeMessage< ::pg_query::RangeTableFunc >(GetArena()); + } + return node_.range_table_func_; +} +inline ::pg_query::RangeTableFunc* Node::mutable_range_table_func() { + // @@protoc_insertion_point(field_mutable:pg_query.Node.range_table_func) + return _internal_mutable_range_table_func(); +} + +// .pg_query.RangeTableFuncCol range_table_func_col = 186 [json_name = "RangeTableFuncCol"]; +inline bool Node::_internal_has_range_table_func_col() const { + return node_case() == kRangeTableFuncCol; +} +inline bool Node::has_range_table_func_col() const { + return _internal_has_range_table_func_col(); +} +inline void Node::set_has_range_table_func_col() { + _oneof_case_[0] = kRangeTableFuncCol; +} +inline void Node::clear_range_table_func_col() { + if (_internal_has_range_table_func_col()) { + if (GetArena() == nullptr) { + delete node_.range_table_func_col_; + } + clear_has_node(); + } +} +inline ::pg_query::RangeTableFuncCol* Node::release_range_table_func_col() { + // @@protoc_insertion_point(field_release:pg_query.Node.range_table_func_col) + if (_internal_has_range_table_func_col()) { + clear_has_node(); + ::pg_query::RangeTableFuncCol* temp = node_.range_table_func_col_; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + node_.range_table_func_col_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline const ::pg_query::RangeTableFuncCol& Node::_internal_range_table_func_col() const { + return _internal_has_range_table_func_col() + ? *node_.range_table_func_col_ + : reinterpret_cast< ::pg_query::RangeTableFuncCol&>(::pg_query::_RangeTableFuncCol_default_instance_); +} +inline const ::pg_query::RangeTableFuncCol& Node::range_table_func_col() const { + // @@protoc_insertion_point(field_get:pg_query.Node.range_table_func_col) + return _internal_range_table_func_col(); +} +inline ::pg_query::RangeTableFuncCol* Node::unsafe_arena_release_range_table_func_col() { + // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.range_table_func_col) + if (_internal_has_range_table_func_col()) { + clear_has_node(); + ::pg_query::RangeTableFuncCol* temp = node_.range_table_func_col_; + node_.range_table_func_col_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline void Node::unsafe_arena_set_allocated_range_table_func_col(::pg_query::RangeTableFuncCol* range_table_func_col) { + clear_node(); + if (range_table_func_col) { + set_has_range_table_func_col(); + node_.range_table_func_col_ = range_table_func_col; + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.range_table_func_col) +} +inline ::pg_query::RangeTableFuncCol* Node::_internal_mutable_range_table_func_col() { + if (!_internal_has_range_table_func_col()) { + clear_node(); + set_has_range_table_func_col(); + node_.range_table_func_col_ = CreateMaybeMessage< ::pg_query::RangeTableFuncCol >(GetArena()); + } + return node_.range_table_func_col_; +} +inline ::pg_query::RangeTableFuncCol* Node::mutable_range_table_func_col() { + // @@protoc_insertion_point(field_mutable:pg_query.Node.range_table_func_col) + return _internal_mutable_range_table_func_col(); +} + +// .pg_query.TypeName type_name = 187 [json_name = "TypeName"]; +inline bool Node::_internal_has_type_name() const { + return node_case() == kTypeName; +} +inline bool Node::has_type_name() const { + return _internal_has_type_name(); +} +inline void Node::set_has_type_name() { + _oneof_case_[0] = kTypeName; +} +inline void Node::clear_type_name() { + if (_internal_has_type_name()) { + if (GetArena() == nullptr) { + delete node_.type_name_; + } + clear_has_node(); + } +} +inline ::pg_query::TypeName* Node::release_type_name() { + // @@protoc_insertion_point(field_release:pg_query.Node.type_name) + if (_internal_has_type_name()) { + clear_has_node(); + ::pg_query::TypeName* temp = node_.type_name_; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + node_.type_name_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline const ::pg_query::TypeName& Node::_internal_type_name() const { + return _internal_has_type_name() + ? *node_.type_name_ + : reinterpret_cast< ::pg_query::TypeName&>(::pg_query::_TypeName_default_instance_); +} +inline const ::pg_query::TypeName& Node::type_name() const { + // @@protoc_insertion_point(field_get:pg_query.Node.type_name) + return _internal_type_name(); +} +inline ::pg_query::TypeName* Node::unsafe_arena_release_type_name() { + // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.type_name) + if (_internal_has_type_name()) { + clear_has_node(); + ::pg_query::TypeName* temp = node_.type_name_; + node_.type_name_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline void Node::unsafe_arena_set_allocated_type_name(::pg_query::TypeName* type_name) { + clear_node(); + if (type_name) { + set_has_type_name(); + node_.type_name_ = type_name; + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.type_name) +} +inline ::pg_query::TypeName* Node::_internal_mutable_type_name() { + if (!_internal_has_type_name()) { + clear_node(); + set_has_type_name(); + node_.type_name_ = CreateMaybeMessage< ::pg_query::TypeName >(GetArena()); + } + return node_.type_name_; +} +inline ::pg_query::TypeName* Node::mutable_type_name() { + // @@protoc_insertion_point(field_mutable:pg_query.Node.type_name) + return _internal_mutable_type_name(); +} + +// .pg_query.ColumnDef column_def = 188 [json_name = "ColumnDef"]; +inline bool Node::_internal_has_column_def() const { + return node_case() == kColumnDef; +} +inline bool Node::has_column_def() const { + return _internal_has_column_def(); +} +inline void Node::set_has_column_def() { + _oneof_case_[0] = kColumnDef; +} +inline void Node::clear_column_def() { + if (_internal_has_column_def()) { + if (GetArena() == nullptr) { + delete node_.column_def_; + } + clear_has_node(); + } +} +inline ::pg_query::ColumnDef* Node::release_column_def() { + // @@protoc_insertion_point(field_release:pg_query.Node.column_def) + if (_internal_has_column_def()) { + clear_has_node(); + ::pg_query::ColumnDef* temp = node_.column_def_; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + node_.column_def_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline const ::pg_query::ColumnDef& Node::_internal_column_def() const { + return _internal_has_column_def() + ? *node_.column_def_ + : reinterpret_cast< ::pg_query::ColumnDef&>(::pg_query::_ColumnDef_default_instance_); +} +inline const ::pg_query::ColumnDef& Node::column_def() const { + // @@protoc_insertion_point(field_get:pg_query.Node.column_def) + return _internal_column_def(); +} +inline ::pg_query::ColumnDef* Node::unsafe_arena_release_column_def() { + // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.column_def) + if (_internal_has_column_def()) { + clear_has_node(); + ::pg_query::ColumnDef* temp = node_.column_def_; + node_.column_def_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline void Node::unsafe_arena_set_allocated_column_def(::pg_query::ColumnDef* column_def) { + clear_node(); + if (column_def) { + set_has_column_def(); + node_.column_def_ = column_def; + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.column_def) +} +inline ::pg_query::ColumnDef* Node::_internal_mutable_column_def() { + if (!_internal_has_column_def()) { + clear_node(); + set_has_column_def(); + node_.column_def_ = CreateMaybeMessage< ::pg_query::ColumnDef >(GetArena()); + } + return node_.column_def_; +} +inline ::pg_query::ColumnDef* Node::mutable_column_def() { + // @@protoc_insertion_point(field_mutable:pg_query.Node.column_def) + return _internal_mutable_column_def(); +} + +// .pg_query.IndexElem index_elem = 189 [json_name = "IndexElem"]; +inline bool Node::_internal_has_index_elem() const { + return node_case() == kIndexElem; +} +inline bool Node::has_index_elem() const { + return _internal_has_index_elem(); +} +inline void Node::set_has_index_elem() { + _oneof_case_[0] = kIndexElem; +} +inline void Node::clear_index_elem() { + if (_internal_has_index_elem()) { + if (GetArena() == nullptr) { + delete node_.index_elem_; + } + clear_has_node(); + } +} +inline ::pg_query::IndexElem* Node::release_index_elem() { + // @@protoc_insertion_point(field_release:pg_query.Node.index_elem) + if (_internal_has_index_elem()) { + clear_has_node(); + ::pg_query::IndexElem* temp = node_.index_elem_; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + node_.index_elem_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline const ::pg_query::IndexElem& Node::_internal_index_elem() const { + return _internal_has_index_elem() + ? *node_.index_elem_ + : reinterpret_cast< ::pg_query::IndexElem&>(::pg_query::_IndexElem_default_instance_); +} +inline const ::pg_query::IndexElem& Node::index_elem() const { + // @@protoc_insertion_point(field_get:pg_query.Node.index_elem) + return _internal_index_elem(); +} +inline ::pg_query::IndexElem* Node::unsafe_arena_release_index_elem() { + // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.index_elem) + if (_internal_has_index_elem()) { + clear_has_node(); + ::pg_query::IndexElem* temp = node_.index_elem_; + node_.index_elem_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline void Node::unsafe_arena_set_allocated_index_elem(::pg_query::IndexElem* index_elem) { + clear_node(); + if (index_elem) { + set_has_index_elem(); + node_.index_elem_ = index_elem; + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.index_elem) +} +inline ::pg_query::IndexElem* Node::_internal_mutable_index_elem() { + if (!_internal_has_index_elem()) { + clear_node(); + set_has_index_elem(); + node_.index_elem_ = CreateMaybeMessage< ::pg_query::IndexElem >(GetArena()); + } + return node_.index_elem_; +} +inline ::pg_query::IndexElem* Node::mutable_index_elem() { + // @@protoc_insertion_point(field_mutable:pg_query.Node.index_elem) + return _internal_mutable_index_elem(); +} + +// .pg_query.Constraint constraint = 190 [json_name = "Constraint"]; +inline bool Node::_internal_has_constraint() const { + return node_case() == kConstraint; +} +inline bool Node::has_constraint() const { + return _internal_has_constraint(); +} +inline void Node::set_has_constraint() { + _oneof_case_[0] = kConstraint; +} +inline void Node::clear_constraint() { + if (_internal_has_constraint()) { + if (GetArena() == nullptr) { + delete node_.constraint_; + } + clear_has_node(); + } +} +inline ::pg_query::Constraint* Node::release_constraint() { + // @@protoc_insertion_point(field_release:pg_query.Node.constraint) + if (_internal_has_constraint()) { + clear_has_node(); + ::pg_query::Constraint* temp = node_.constraint_; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + node_.constraint_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline const ::pg_query::Constraint& Node::_internal_constraint() const { + return _internal_has_constraint() + ? *node_.constraint_ + : reinterpret_cast< ::pg_query::Constraint&>(::pg_query::_Constraint_default_instance_); +} +inline const ::pg_query::Constraint& Node::constraint() const { + // @@protoc_insertion_point(field_get:pg_query.Node.constraint) + return _internal_constraint(); +} +inline ::pg_query::Constraint* Node::unsafe_arena_release_constraint() { + // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.constraint) + if (_internal_has_constraint()) { + clear_has_node(); + ::pg_query::Constraint* temp = node_.constraint_; + node_.constraint_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline void Node::unsafe_arena_set_allocated_constraint(::pg_query::Constraint* constraint) { + clear_node(); + if (constraint) { + set_has_constraint(); + node_.constraint_ = constraint; + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.constraint) +} +inline ::pg_query::Constraint* Node::_internal_mutable_constraint() { + if (!_internal_has_constraint()) { + clear_node(); + set_has_constraint(); + node_.constraint_ = CreateMaybeMessage< ::pg_query::Constraint >(GetArena()); + } + return node_.constraint_; +} +inline ::pg_query::Constraint* Node::mutable_constraint() { + // @@protoc_insertion_point(field_mutable:pg_query.Node.constraint) + return _internal_mutable_constraint(); +} + +// .pg_query.DefElem def_elem = 191 [json_name = "DefElem"]; +inline bool Node::_internal_has_def_elem() const { + return node_case() == kDefElem; +} +inline bool Node::has_def_elem() const { + return _internal_has_def_elem(); +} +inline void Node::set_has_def_elem() { + _oneof_case_[0] = kDefElem; +} +inline void Node::clear_def_elem() { + if (_internal_has_def_elem()) { + if (GetArena() == nullptr) { + delete node_.def_elem_; + } + clear_has_node(); + } +} +inline ::pg_query::DefElem* Node::release_def_elem() { + // @@protoc_insertion_point(field_release:pg_query.Node.def_elem) + if (_internal_has_def_elem()) { + clear_has_node(); + ::pg_query::DefElem* temp = node_.def_elem_; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + node_.def_elem_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline const ::pg_query::DefElem& Node::_internal_def_elem() const { + return _internal_has_def_elem() + ? *node_.def_elem_ + : reinterpret_cast< ::pg_query::DefElem&>(::pg_query::_DefElem_default_instance_); +} +inline const ::pg_query::DefElem& Node::def_elem() const { + // @@protoc_insertion_point(field_get:pg_query.Node.def_elem) + return _internal_def_elem(); +} +inline ::pg_query::DefElem* Node::unsafe_arena_release_def_elem() { + // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.def_elem) + if (_internal_has_def_elem()) { + clear_has_node(); + ::pg_query::DefElem* temp = node_.def_elem_; + node_.def_elem_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline void Node::unsafe_arena_set_allocated_def_elem(::pg_query::DefElem* def_elem) { + clear_node(); + if (def_elem) { + set_has_def_elem(); + node_.def_elem_ = def_elem; + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.def_elem) +} +inline ::pg_query::DefElem* Node::_internal_mutable_def_elem() { + if (!_internal_has_def_elem()) { + clear_node(); + set_has_def_elem(); + node_.def_elem_ = CreateMaybeMessage< ::pg_query::DefElem >(GetArena()); + } + return node_.def_elem_; +} +inline ::pg_query::DefElem* Node::mutable_def_elem() { + // @@protoc_insertion_point(field_mutable:pg_query.Node.def_elem) + return _internal_mutable_def_elem(); +} + +// .pg_query.RangeTblEntry range_tbl_entry = 192 [json_name = "RangeTblEntry"]; +inline bool Node::_internal_has_range_tbl_entry() const { + return node_case() == kRangeTblEntry; +} +inline bool Node::has_range_tbl_entry() const { + return _internal_has_range_tbl_entry(); +} +inline void Node::set_has_range_tbl_entry() { + _oneof_case_[0] = kRangeTblEntry; +} +inline void Node::clear_range_tbl_entry() { + if (_internal_has_range_tbl_entry()) { + if (GetArena() == nullptr) { + delete node_.range_tbl_entry_; + } + clear_has_node(); + } +} +inline ::pg_query::RangeTblEntry* Node::release_range_tbl_entry() { + // @@protoc_insertion_point(field_release:pg_query.Node.range_tbl_entry) + if (_internal_has_range_tbl_entry()) { + clear_has_node(); + ::pg_query::RangeTblEntry* temp = node_.range_tbl_entry_; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + node_.range_tbl_entry_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline const ::pg_query::RangeTblEntry& Node::_internal_range_tbl_entry() const { + return _internal_has_range_tbl_entry() + ? *node_.range_tbl_entry_ + : reinterpret_cast< ::pg_query::RangeTblEntry&>(::pg_query::_RangeTblEntry_default_instance_); +} +inline const ::pg_query::RangeTblEntry& Node::range_tbl_entry() const { + // @@protoc_insertion_point(field_get:pg_query.Node.range_tbl_entry) + return _internal_range_tbl_entry(); +} +inline ::pg_query::RangeTblEntry* Node::unsafe_arena_release_range_tbl_entry() { + // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.range_tbl_entry) + if (_internal_has_range_tbl_entry()) { + clear_has_node(); + ::pg_query::RangeTblEntry* temp = node_.range_tbl_entry_; + node_.range_tbl_entry_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline void Node::unsafe_arena_set_allocated_range_tbl_entry(::pg_query::RangeTblEntry* range_tbl_entry) { + clear_node(); + if (range_tbl_entry) { + set_has_range_tbl_entry(); + node_.range_tbl_entry_ = range_tbl_entry; + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.range_tbl_entry) +} +inline ::pg_query::RangeTblEntry* Node::_internal_mutable_range_tbl_entry() { + if (!_internal_has_range_tbl_entry()) { + clear_node(); + set_has_range_tbl_entry(); + node_.range_tbl_entry_ = CreateMaybeMessage< ::pg_query::RangeTblEntry >(GetArena()); + } + return node_.range_tbl_entry_; +} +inline ::pg_query::RangeTblEntry* Node::mutable_range_tbl_entry() { + // @@protoc_insertion_point(field_mutable:pg_query.Node.range_tbl_entry) + return _internal_mutable_range_tbl_entry(); +} + +// .pg_query.RangeTblFunction range_tbl_function = 193 [json_name = "RangeTblFunction"]; +inline bool Node::_internal_has_range_tbl_function() const { + return node_case() == kRangeTblFunction; +} +inline bool Node::has_range_tbl_function() const { + return _internal_has_range_tbl_function(); +} +inline void Node::set_has_range_tbl_function() { + _oneof_case_[0] = kRangeTblFunction; +} +inline void Node::clear_range_tbl_function() { + if (_internal_has_range_tbl_function()) { + if (GetArena() == nullptr) { + delete node_.range_tbl_function_; + } + clear_has_node(); + } +} +inline ::pg_query::RangeTblFunction* Node::release_range_tbl_function() { + // @@protoc_insertion_point(field_release:pg_query.Node.range_tbl_function) + if (_internal_has_range_tbl_function()) { + clear_has_node(); + ::pg_query::RangeTblFunction* temp = node_.range_tbl_function_; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + node_.range_tbl_function_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline const ::pg_query::RangeTblFunction& Node::_internal_range_tbl_function() const { + return _internal_has_range_tbl_function() + ? *node_.range_tbl_function_ + : reinterpret_cast< ::pg_query::RangeTblFunction&>(::pg_query::_RangeTblFunction_default_instance_); +} +inline const ::pg_query::RangeTblFunction& Node::range_tbl_function() const { + // @@protoc_insertion_point(field_get:pg_query.Node.range_tbl_function) + return _internal_range_tbl_function(); +} +inline ::pg_query::RangeTblFunction* Node::unsafe_arena_release_range_tbl_function() { + // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.range_tbl_function) + if (_internal_has_range_tbl_function()) { + clear_has_node(); + ::pg_query::RangeTblFunction* temp = node_.range_tbl_function_; + node_.range_tbl_function_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline void Node::unsafe_arena_set_allocated_range_tbl_function(::pg_query::RangeTblFunction* range_tbl_function) { + clear_node(); + if (range_tbl_function) { + set_has_range_tbl_function(); + node_.range_tbl_function_ = range_tbl_function; + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.range_tbl_function) +} +inline ::pg_query::RangeTblFunction* Node::_internal_mutable_range_tbl_function() { + if (!_internal_has_range_tbl_function()) { + clear_node(); + set_has_range_tbl_function(); + node_.range_tbl_function_ = CreateMaybeMessage< ::pg_query::RangeTblFunction >(GetArena()); + } + return node_.range_tbl_function_; +} +inline ::pg_query::RangeTblFunction* Node::mutable_range_tbl_function() { + // @@protoc_insertion_point(field_mutable:pg_query.Node.range_tbl_function) + return _internal_mutable_range_tbl_function(); +} + +// .pg_query.TableSampleClause table_sample_clause = 194 [json_name = "TableSampleClause"]; +inline bool Node::_internal_has_table_sample_clause() const { + return node_case() == kTableSampleClause; +} +inline bool Node::has_table_sample_clause() const { + return _internal_has_table_sample_clause(); +} +inline void Node::set_has_table_sample_clause() { + _oneof_case_[0] = kTableSampleClause; +} +inline void Node::clear_table_sample_clause() { + if (_internal_has_table_sample_clause()) { + if (GetArena() == nullptr) { + delete node_.table_sample_clause_; + } + clear_has_node(); + } +} +inline ::pg_query::TableSampleClause* Node::release_table_sample_clause() { + // @@protoc_insertion_point(field_release:pg_query.Node.table_sample_clause) + if (_internal_has_table_sample_clause()) { + clear_has_node(); + ::pg_query::TableSampleClause* temp = node_.table_sample_clause_; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + node_.table_sample_clause_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline const ::pg_query::TableSampleClause& Node::_internal_table_sample_clause() const { + return _internal_has_table_sample_clause() + ? *node_.table_sample_clause_ + : reinterpret_cast< ::pg_query::TableSampleClause&>(::pg_query::_TableSampleClause_default_instance_); +} +inline const ::pg_query::TableSampleClause& Node::table_sample_clause() const { + // @@protoc_insertion_point(field_get:pg_query.Node.table_sample_clause) + return _internal_table_sample_clause(); +} +inline ::pg_query::TableSampleClause* Node::unsafe_arena_release_table_sample_clause() { + // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.table_sample_clause) + if (_internal_has_table_sample_clause()) { + clear_has_node(); + ::pg_query::TableSampleClause* temp = node_.table_sample_clause_; + node_.table_sample_clause_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline void Node::unsafe_arena_set_allocated_table_sample_clause(::pg_query::TableSampleClause* table_sample_clause) { + clear_node(); + if (table_sample_clause) { + set_has_table_sample_clause(); + node_.table_sample_clause_ = table_sample_clause; + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.table_sample_clause) +} +inline ::pg_query::TableSampleClause* Node::_internal_mutable_table_sample_clause() { + if (!_internal_has_table_sample_clause()) { + clear_node(); + set_has_table_sample_clause(); + node_.table_sample_clause_ = CreateMaybeMessage< ::pg_query::TableSampleClause >(GetArena()); + } + return node_.table_sample_clause_; +} +inline ::pg_query::TableSampleClause* Node::mutable_table_sample_clause() { + // @@protoc_insertion_point(field_mutable:pg_query.Node.table_sample_clause) + return _internal_mutable_table_sample_clause(); +} + +// .pg_query.WithCheckOption with_check_option = 195 [json_name = "WithCheckOption"]; +inline bool Node::_internal_has_with_check_option() const { + return node_case() == kWithCheckOption; +} +inline bool Node::has_with_check_option() const { + return _internal_has_with_check_option(); +} +inline void Node::set_has_with_check_option() { + _oneof_case_[0] = kWithCheckOption; +} +inline void Node::clear_with_check_option() { + if (_internal_has_with_check_option()) { + if (GetArena() == nullptr) { + delete node_.with_check_option_; + } + clear_has_node(); + } +} +inline ::pg_query::WithCheckOption* Node::release_with_check_option() { + // @@protoc_insertion_point(field_release:pg_query.Node.with_check_option) + if (_internal_has_with_check_option()) { + clear_has_node(); + ::pg_query::WithCheckOption* temp = node_.with_check_option_; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + node_.with_check_option_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline const ::pg_query::WithCheckOption& Node::_internal_with_check_option() const { + return _internal_has_with_check_option() + ? *node_.with_check_option_ + : reinterpret_cast< ::pg_query::WithCheckOption&>(::pg_query::_WithCheckOption_default_instance_); +} +inline const ::pg_query::WithCheckOption& Node::with_check_option() const { + // @@protoc_insertion_point(field_get:pg_query.Node.with_check_option) + return _internal_with_check_option(); +} +inline ::pg_query::WithCheckOption* Node::unsafe_arena_release_with_check_option() { + // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.with_check_option) + if (_internal_has_with_check_option()) { + clear_has_node(); + ::pg_query::WithCheckOption* temp = node_.with_check_option_; + node_.with_check_option_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline void Node::unsafe_arena_set_allocated_with_check_option(::pg_query::WithCheckOption* with_check_option) { + clear_node(); + if (with_check_option) { + set_has_with_check_option(); + node_.with_check_option_ = with_check_option; + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.with_check_option) +} +inline ::pg_query::WithCheckOption* Node::_internal_mutable_with_check_option() { + if (!_internal_has_with_check_option()) { + clear_node(); + set_has_with_check_option(); + node_.with_check_option_ = CreateMaybeMessage< ::pg_query::WithCheckOption >(GetArena()); + } + return node_.with_check_option_; +} +inline ::pg_query::WithCheckOption* Node::mutable_with_check_option() { + // @@protoc_insertion_point(field_mutable:pg_query.Node.with_check_option) + return _internal_mutable_with_check_option(); +} + +// .pg_query.SortGroupClause sort_group_clause = 196 [json_name = "SortGroupClause"]; +inline bool Node::_internal_has_sort_group_clause() const { + return node_case() == kSortGroupClause; +} +inline bool Node::has_sort_group_clause() const { + return _internal_has_sort_group_clause(); +} +inline void Node::set_has_sort_group_clause() { + _oneof_case_[0] = kSortGroupClause; +} +inline void Node::clear_sort_group_clause() { + if (_internal_has_sort_group_clause()) { + if (GetArena() == nullptr) { + delete node_.sort_group_clause_; + } + clear_has_node(); + } +} +inline ::pg_query::SortGroupClause* Node::release_sort_group_clause() { + // @@protoc_insertion_point(field_release:pg_query.Node.sort_group_clause) + if (_internal_has_sort_group_clause()) { + clear_has_node(); + ::pg_query::SortGroupClause* temp = node_.sort_group_clause_; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + node_.sort_group_clause_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline const ::pg_query::SortGroupClause& Node::_internal_sort_group_clause() const { + return _internal_has_sort_group_clause() + ? *node_.sort_group_clause_ + : reinterpret_cast< ::pg_query::SortGroupClause&>(::pg_query::_SortGroupClause_default_instance_); +} +inline const ::pg_query::SortGroupClause& Node::sort_group_clause() const { + // @@protoc_insertion_point(field_get:pg_query.Node.sort_group_clause) + return _internal_sort_group_clause(); +} +inline ::pg_query::SortGroupClause* Node::unsafe_arena_release_sort_group_clause() { + // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.sort_group_clause) + if (_internal_has_sort_group_clause()) { + clear_has_node(); + ::pg_query::SortGroupClause* temp = node_.sort_group_clause_; + node_.sort_group_clause_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline void Node::unsafe_arena_set_allocated_sort_group_clause(::pg_query::SortGroupClause* sort_group_clause) { + clear_node(); + if (sort_group_clause) { + set_has_sort_group_clause(); + node_.sort_group_clause_ = sort_group_clause; + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.sort_group_clause) +} +inline ::pg_query::SortGroupClause* Node::_internal_mutable_sort_group_clause() { + if (!_internal_has_sort_group_clause()) { + clear_node(); + set_has_sort_group_clause(); + node_.sort_group_clause_ = CreateMaybeMessage< ::pg_query::SortGroupClause >(GetArena()); + } + return node_.sort_group_clause_; +} +inline ::pg_query::SortGroupClause* Node::mutable_sort_group_clause() { + // @@protoc_insertion_point(field_mutable:pg_query.Node.sort_group_clause) + return _internal_mutable_sort_group_clause(); +} + +// .pg_query.GroupingSet grouping_set = 197 [json_name = "GroupingSet"]; +inline bool Node::_internal_has_grouping_set() const { + return node_case() == kGroupingSet; +} +inline bool Node::has_grouping_set() const { + return _internal_has_grouping_set(); +} +inline void Node::set_has_grouping_set() { + _oneof_case_[0] = kGroupingSet; +} +inline void Node::clear_grouping_set() { + if (_internal_has_grouping_set()) { + if (GetArena() == nullptr) { + delete node_.grouping_set_; + } + clear_has_node(); + } +} +inline ::pg_query::GroupingSet* Node::release_grouping_set() { + // @@protoc_insertion_point(field_release:pg_query.Node.grouping_set) + if (_internal_has_grouping_set()) { + clear_has_node(); + ::pg_query::GroupingSet* temp = node_.grouping_set_; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + node_.grouping_set_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline const ::pg_query::GroupingSet& Node::_internal_grouping_set() const { + return _internal_has_grouping_set() + ? *node_.grouping_set_ + : reinterpret_cast< ::pg_query::GroupingSet&>(::pg_query::_GroupingSet_default_instance_); +} +inline const ::pg_query::GroupingSet& Node::grouping_set() const { + // @@protoc_insertion_point(field_get:pg_query.Node.grouping_set) + return _internal_grouping_set(); +} +inline ::pg_query::GroupingSet* Node::unsafe_arena_release_grouping_set() { + // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.grouping_set) + if (_internal_has_grouping_set()) { + clear_has_node(); + ::pg_query::GroupingSet* temp = node_.grouping_set_; + node_.grouping_set_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline void Node::unsafe_arena_set_allocated_grouping_set(::pg_query::GroupingSet* grouping_set) { + clear_node(); + if (grouping_set) { + set_has_grouping_set(); + node_.grouping_set_ = grouping_set; + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.grouping_set) +} +inline ::pg_query::GroupingSet* Node::_internal_mutable_grouping_set() { + if (!_internal_has_grouping_set()) { + clear_node(); + set_has_grouping_set(); + node_.grouping_set_ = CreateMaybeMessage< ::pg_query::GroupingSet >(GetArena()); + } + return node_.grouping_set_; +} +inline ::pg_query::GroupingSet* Node::mutable_grouping_set() { + // @@protoc_insertion_point(field_mutable:pg_query.Node.grouping_set) + return _internal_mutable_grouping_set(); +} + +// .pg_query.WindowClause window_clause = 198 [json_name = "WindowClause"]; +inline bool Node::_internal_has_window_clause() const { + return node_case() == kWindowClause; +} +inline bool Node::has_window_clause() const { + return _internal_has_window_clause(); +} +inline void Node::set_has_window_clause() { + _oneof_case_[0] = kWindowClause; +} +inline void Node::clear_window_clause() { + if (_internal_has_window_clause()) { + if (GetArena() == nullptr) { + delete node_.window_clause_; + } + clear_has_node(); + } +} +inline ::pg_query::WindowClause* Node::release_window_clause() { + // @@protoc_insertion_point(field_release:pg_query.Node.window_clause) + if (_internal_has_window_clause()) { + clear_has_node(); + ::pg_query::WindowClause* temp = node_.window_clause_; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + node_.window_clause_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline const ::pg_query::WindowClause& Node::_internal_window_clause() const { + return _internal_has_window_clause() + ? *node_.window_clause_ + : reinterpret_cast< ::pg_query::WindowClause&>(::pg_query::_WindowClause_default_instance_); +} +inline const ::pg_query::WindowClause& Node::window_clause() const { + // @@protoc_insertion_point(field_get:pg_query.Node.window_clause) + return _internal_window_clause(); +} +inline ::pg_query::WindowClause* Node::unsafe_arena_release_window_clause() { + // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.window_clause) + if (_internal_has_window_clause()) { + clear_has_node(); + ::pg_query::WindowClause* temp = node_.window_clause_; + node_.window_clause_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline void Node::unsafe_arena_set_allocated_window_clause(::pg_query::WindowClause* window_clause) { + clear_node(); + if (window_clause) { + set_has_window_clause(); + node_.window_clause_ = window_clause; + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.window_clause) +} +inline ::pg_query::WindowClause* Node::_internal_mutable_window_clause() { + if (!_internal_has_window_clause()) { + clear_node(); + set_has_window_clause(); + node_.window_clause_ = CreateMaybeMessage< ::pg_query::WindowClause >(GetArena()); + } + return node_.window_clause_; +} +inline ::pg_query::WindowClause* Node::mutable_window_clause() { + // @@protoc_insertion_point(field_mutable:pg_query.Node.window_clause) + return _internal_mutable_window_clause(); +} + +// .pg_query.ObjectWithArgs object_with_args = 199 [json_name = "ObjectWithArgs"]; +inline bool Node::_internal_has_object_with_args() const { + return node_case() == kObjectWithArgs; +} +inline bool Node::has_object_with_args() const { + return _internal_has_object_with_args(); +} +inline void Node::set_has_object_with_args() { + _oneof_case_[0] = kObjectWithArgs; +} +inline void Node::clear_object_with_args() { + if (_internal_has_object_with_args()) { + if (GetArena() == nullptr) { + delete node_.object_with_args_; + } + clear_has_node(); + } +} +inline ::pg_query::ObjectWithArgs* Node::release_object_with_args() { + // @@protoc_insertion_point(field_release:pg_query.Node.object_with_args) + if (_internal_has_object_with_args()) { + clear_has_node(); + ::pg_query::ObjectWithArgs* temp = node_.object_with_args_; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + node_.object_with_args_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline const ::pg_query::ObjectWithArgs& Node::_internal_object_with_args() const { + return _internal_has_object_with_args() + ? *node_.object_with_args_ + : reinterpret_cast< ::pg_query::ObjectWithArgs&>(::pg_query::_ObjectWithArgs_default_instance_); +} +inline const ::pg_query::ObjectWithArgs& Node::object_with_args() const { + // @@protoc_insertion_point(field_get:pg_query.Node.object_with_args) + return _internal_object_with_args(); +} +inline ::pg_query::ObjectWithArgs* Node::unsafe_arena_release_object_with_args() { + // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.object_with_args) + if (_internal_has_object_with_args()) { + clear_has_node(); + ::pg_query::ObjectWithArgs* temp = node_.object_with_args_; + node_.object_with_args_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline void Node::unsafe_arena_set_allocated_object_with_args(::pg_query::ObjectWithArgs* object_with_args) { + clear_node(); + if (object_with_args) { + set_has_object_with_args(); + node_.object_with_args_ = object_with_args; + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.object_with_args) +} +inline ::pg_query::ObjectWithArgs* Node::_internal_mutable_object_with_args() { + if (!_internal_has_object_with_args()) { + clear_node(); + set_has_object_with_args(); + node_.object_with_args_ = CreateMaybeMessage< ::pg_query::ObjectWithArgs >(GetArena()); + } + return node_.object_with_args_; +} +inline ::pg_query::ObjectWithArgs* Node::mutable_object_with_args() { + // @@protoc_insertion_point(field_mutable:pg_query.Node.object_with_args) + return _internal_mutable_object_with_args(); +} + +// .pg_query.AccessPriv access_priv = 200 [json_name = "AccessPriv"]; +inline bool Node::_internal_has_access_priv() const { + return node_case() == kAccessPriv; +} +inline bool Node::has_access_priv() const { + return _internal_has_access_priv(); +} +inline void Node::set_has_access_priv() { + _oneof_case_[0] = kAccessPriv; +} +inline void Node::clear_access_priv() { + if (_internal_has_access_priv()) { + if (GetArena() == nullptr) { + delete node_.access_priv_; + } + clear_has_node(); + } +} +inline ::pg_query::AccessPriv* Node::release_access_priv() { + // @@protoc_insertion_point(field_release:pg_query.Node.access_priv) + if (_internal_has_access_priv()) { + clear_has_node(); + ::pg_query::AccessPriv* temp = node_.access_priv_; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + node_.access_priv_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline const ::pg_query::AccessPriv& Node::_internal_access_priv() const { + return _internal_has_access_priv() + ? *node_.access_priv_ + : reinterpret_cast< ::pg_query::AccessPriv&>(::pg_query::_AccessPriv_default_instance_); +} +inline const ::pg_query::AccessPriv& Node::access_priv() const { + // @@protoc_insertion_point(field_get:pg_query.Node.access_priv) + return _internal_access_priv(); +} +inline ::pg_query::AccessPriv* Node::unsafe_arena_release_access_priv() { + // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.access_priv) + if (_internal_has_access_priv()) { + clear_has_node(); + ::pg_query::AccessPriv* temp = node_.access_priv_; + node_.access_priv_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline void Node::unsafe_arena_set_allocated_access_priv(::pg_query::AccessPriv* access_priv) { + clear_node(); + if (access_priv) { + set_has_access_priv(); + node_.access_priv_ = access_priv; + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.access_priv) +} +inline ::pg_query::AccessPriv* Node::_internal_mutable_access_priv() { + if (!_internal_has_access_priv()) { + clear_node(); + set_has_access_priv(); + node_.access_priv_ = CreateMaybeMessage< ::pg_query::AccessPriv >(GetArena()); + } + return node_.access_priv_; +} +inline ::pg_query::AccessPriv* Node::mutable_access_priv() { + // @@protoc_insertion_point(field_mutable:pg_query.Node.access_priv) + return _internal_mutable_access_priv(); +} + +// .pg_query.CreateOpClassItem create_op_class_item = 201 [json_name = "CreateOpClassItem"]; +inline bool Node::_internal_has_create_op_class_item() const { + return node_case() == kCreateOpClassItem; +} +inline bool Node::has_create_op_class_item() const { + return _internal_has_create_op_class_item(); +} +inline void Node::set_has_create_op_class_item() { + _oneof_case_[0] = kCreateOpClassItem; +} +inline void Node::clear_create_op_class_item() { + if (_internal_has_create_op_class_item()) { + if (GetArena() == nullptr) { + delete node_.create_op_class_item_; + } + clear_has_node(); + } +} +inline ::pg_query::CreateOpClassItem* Node::release_create_op_class_item() { + // @@protoc_insertion_point(field_release:pg_query.Node.create_op_class_item) + if (_internal_has_create_op_class_item()) { + clear_has_node(); + ::pg_query::CreateOpClassItem* temp = node_.create_op_class_item_; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + node_.create_op_class_item_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline const ::pg_query::CreateOpClassItem& Node::_internal_create_op_class_item() const { + return _internal_has_create_op_class_item() + ? *node_.create_op_class_item_ + : reinterpret_cast< ::pg_query::CreateOpClassItem&>(::pg_query::_CreateOpClassItem_default_instance_); +} +inline const ::pg_query::CreateOpClassItem& Node::create_op_class_item() const { + // @@protoc_insertion_point(field_get:pg_query.Node.create_op_class_item) + return _internal_create_op_class_item(); +} +inline ::pg_query::CreateOpClassItem* Node::unsafe_arena_release_create_op_class_item() { + // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.create_op_class_item) + if (_internal_has_create_op_class_item()) { + clear_has_node(); + ::pg_query::CreateOpClassItem* temp = node_.create_op_class_item_; + node_.create_op_class_item_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline void Node::unsafe_arena_set_allocated_create_op_class_item(::pg_query::CreateOpClassItem* create_op_class_item) { + clear_node(); + if (create_op_class_item) { + set_has_create_op_class_item(); + node_.create_op_class_item_ = create_op_class_item; + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.create_op_class_item) +} +inline ::pg_query::CreateOpClassItem* Node::_internal_mutable_create_op_class_item() { + if (!_internal_has_create_op_class_item()) { + clear_node(); + set_has_create_op_class_item(); + node_.create_op_class_item_ = CreateMaybeMessage< ::pg_query::CreateOpClassItem >(GetArena()); + } + return node_.create_op_class_item_; +} +inline ::pg_query::CreateOpClassItem* Node::mutable_create_op_class_item() { + // @@protoc_insertion_point(field_mutable:pg_query.Node.create_op_class_item) + return _internal_mutable_create_op_class_item(); +} + +// .pg_query.TableLikeClause table_like_clause = 202 [json_name = "TableLikeClause"]; +inline bool Node::_internal_has_table_like_clause() const { + return node_case() == kTableLikeClause; +} +inline bool Node::has_table_like_clause() const { + return _internal_has_table_like_clause(); +} +inline void Node::set_has_table_like_clause() { + _oneof_case_[0] = kTableLikeClause; +} +inline void Node::clear_table_like_clause() { + if (_internal_has_table_like_clause()) { + if (GetArena() == nullptr) { + delete node_.table_like_clause_; + } + clear_has_node(); + } +} +inline ::pg_query::TableLikeClause* Node::release_table_like_clause() { + // @@protoc_insertion_point(field_release:pg_query.Node.table_like_clause) + if (_internal_has_table_like_clause()) { + clear_has_node(); + ::pg_query::TableLikeClause* temp = node_.table_like_clause_; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + node_.table_like_clause_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline const ::pg_query::TableLikeClause& Node::_internal_table_like_clause() const { + return _internal_has_table_like_clause() + ? *node_.table_like_clause_ + : reinterpret_cast< ::pg_query::TableLikeClause&>(::pg_query::_TableLikeClause_default_instance_); +} +inline const ::pg_query::TableLikeClause& Node::table_like_clause() const { + // @@protoc_insertion_point(field_get:pg_query.Node.table_like_clause) + return _internal_table_like_clause(); +} +inline ::pg_query::TableLikeClause* Node::unsafe_arena_release_table_like_clause() { + // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.table_like_clause) + if (_internal_has_table_like_clause()) { + clear_has_node(); + ::pg_query::TableLikeClause* temp = node_.table_like_clause_; + node_.table_like_clause_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline void Node::unsafe_arena_set_allocated_table_like_clause(::pg_query::TableLikeClause* table_like_clause) { + clear_node(); + if (table_like_clause) { + set_has_table_like_clause(); + node_.table_like_clause_ = table_like_clause; + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.table_like_clause) +} +inline ::pg_query::TableLikeClause* Node::_internal_mutable_table_like_clause() { + if (!_internal_has_table_like_clause()) { + clear_node(); + set_has_table_like_clause(); + node_.table_like_clause_ = CreateMaybeMessage< ::pg_query::TableLikeClause >(GetArena()); + } + return node_.table_like_clause_; +} +inline ::pg_query::TableLikeClause* Node::mutable_table_like_clause() { + // @@protoc_insertion_point(field_mutable:pg_query.Node.table_like_clause) + return _internal_mutable_table_like_clause(); +} + +// .pg_query.FunctionParameter function_parameter = 203 [json_name = "FunctionParameter"]; +inline bool Node::_internal_has_function_parameter() const { + return node_case() == kFunctionParameter; +} +inline bool Node::has_function_parameter() const { + return _internal_has_function_parameter(); +} +inline void Node::set_has_function_parameter() { + _oneof_case_[0] = kFunctionParameter; +} +inline void Node::clear_function_parameter() { + if (_internal_has_function_parameter()) { + if (GetArena() == nullptr) { + delete node_.function_parameter_; + } + clear_has_node(); + } +} +inline ::pg_query::FunctionParameter* Node::release_function_parameter() { + // @@protoc_insertion_point(field_release:pg_query.Node.function_parameter) + if (_internal_has_function_parameter()) { + clear_has_node(); + ::pg_query::FunctionParameter* temp = node_.function_parameter_; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + node_.function_parameter_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline const ::pg_query::FunctionParameter& Node::_internal_function_parameter() const { + return _internal_has_function_parameter() + ? *node_.function_parameter_ + : reinterpret_cast< ::pg_query::FunctionParameter&>(::pg_query::_FunctionParameter_default_instance_); +} +inline const ::pg_query::FunctionParameter& Node::function_parameter() const { + // @@protoc_insertion_point(field_get:pg_query.Node.function_parameter) + return _internal_function_parameter(); +} +inline ::pg_query::FunctionParameter* Node::unsafe_arena_release_function_parameter() { + // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.function_parameter) + if (_internal_has_function_parameter()) { + clear_has_node(); + ::pg_query::FunctionParameter* temp = node_.function_parameter_; + node_.function_parameter_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline void Node::unsafe_arena_set_allocated_function_parameter(::pg_query::FunctionParameter* function_parameter) { + clear_node(); + if (function_parameter) { + set_has_function_parameter(); + node_.function_parameter_ = function_parameter; + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.function_parameter) +} +inline ::pg_query::FunctionParameter* Node::_internal_mutable_function_parameter() { + if (!_internal_has_function_parameter()) { + clear_node(); + set_has_function_parameter(); + node_.function_parameter_ = CreateMaybeMessage< ::pg_query::FunctionParameter >(GetArena()); + } + return node_.function_parameter_; +} +inline ::pg_query::FunctionParameter* Node::mutable_function_parameter() { + // @@protoc_insertion_point(field_mutable:pg_query.Node.function_parameter) + return _internal_mutable_function_parameter(); +} + +// .pg_query.LockingClause locking_clause = 204 [json_name = "LockingClause"]; +inline bool Node::_internal_has_locking_clause() const { + return node_case() == kLockingClause; +} +inline bool Node::has_locking_clause() const { + return _internal_has_locking_clause(); +} +inline void Node::set_has_locking_clause() { + _oneof_case_[0] = kLockingClause; +} +inline void Node::clear_locking_clause() { + if (_internal_has_locking_clause()) { + if (GetArena() == nullptr) { + delete node_.locking_clause_; + } + clear_has_node(); + } +} +inline ::pg_query::LockingClause* Node::release_locking_clause() { + // @@protoc_insertion_point(field_release:pg_query.Node.locking_clause) + if (_internal_has_locking_clause()) { + clear_has_node(); + ::pg_query::LockingClause* temp = node_.locking_clause_; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + node_.locking_clause_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline const ::pg_query::LockingClause& Node::_internal_locking_clause() const { + return _internal_has_locking_clause() + ? *node_.locking_clause_ + : reinterpret_cast< ::pg_query::LockingClause&>(::pg_query::_LockingClause_default_instance_); +} +inline const ::pg_query::LockingClause& Node::locking_clause() const { + // @@protoc_insertion_point(field_get:pg_query.Node.locking_clause) + return _internal_locking_clause(); +} +inline ::pg_query::LockingClause* Node::unsafe_arena_release_locking_clause() { + // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.locking_clause) + if (_internal_has_locking_clause()) { + clear_has_node(); + ::pg_query::LockingClause* temp = node_.locking_clause_; + node_.locking_clause_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline void Node::unsafe_arena_set_allocated_locking_clause(::pg_query::LockingClause* locking_clause) { + clear_node(); + if (locking_clause) { + set_has_locking_clause(); + node_.locking_clause_ = locking_clause; + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.locking_clause) +} +inline ::pg_query::LockingClause* Node::_internal_mutable_locking_clause() { + if (!_internal_has_locking_clause()) { + clear_node(); + set_has_locking_clause(); + node_.locking_clause_ = CreateMaybeMessage< ::pg_query::LockingClause >(GetArena()); + } + return node_.locking_clause_; +} +inline ::pg_query::LockingClause* Node::mutable_locking_clause() { + // @@protoc_insertion_point(field_mutable:pg_query.Node.locking_clause) + return _internal_mutable_locking_clause(); +} + +// .pg_query.RowMarkClause row_mark_clause = 205 [json_name = "RowMarkClause"]; +inline bool Node::_internal_has_row_mark_clause() const { + return node_case() == kRowMarkClause; +} +inline bool Node::has_row_mark_clause() const { + return _internal_has_row_mark_clause(); +} +inline void Node::set_has_row_mark_clause() { + _oneof_case_[0] = kRowMarkClause; +} +inline void Node::clear_row_mark_clause() { + if (_internal_has_row_mark_clause()) { + if (GetArena() == nullptr) { + delete node_.row_mark_clause_; + } + clear_has_node(); + } +} +inline ::pg_query::RowMarkClause* Node::release_row_mark_clause() { + // @@protoc_insertion_point(field_release:pg_query.Node.row_mark_clause) + if (_internal_has_row_mark_clause()) { + clear_has_node(); + ::pg_query::RowMarkClause* temp = node_.row_mark_clause_; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + node_.row_mark_clause_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline const ::pg_query::RowMarkClause& Node::_internal_row_mark_clause() const { + return _internal_has_row_mark_clause() + ? *node_.row_mark_clause_ + : reinterpret_cast< ::pg_query::RowMarkClause&>(::pg_query::_RowMarkClause_default_instance_); +} +inline const ::pg_query::RowMarkClause& Node::row_mark_clause() const { + // @@protoc_insertion_point(field_get:pg_query.Node.row_mark_clause) + return _internal_row_mark_clause(); +} +inline ::pg_query::RowMarkClause* Node::unsafe_arena_release_row_mark_clause() { + // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.row_mark_clause) + if (_internal_has_row_mark_clause()) { + clear_has_node(); + ::pg_query::RowMarkClause* temp = node_.row_mark_clause_; + node_.row_mark_clause_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline void Node::unsafe_arena_set_allocated_row_mark_clause(::pg_query::RowMarkClause* row_mark_clause) { + clear_node(); + if (row_mark_clause) { + set_has_row_mark_clause(); + node_.row_mark_clause_ = row_mark_clause; + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.row_mark_clause) +} +inline ::pg_query::RowMarkClause* Node::_internal_mutable_row_mark_clause() { + if (!_internal_has_row_mark_clause()) { + clear_node(); + set_has_row_mark_clause(); + node_.row_mark_clause_ = CreateMaybeMessage< ::pg_query::RowMarkClause >(GetArena()); + } + return node_.row_mark_clause_; +} +inline ::pg_query::RowMarkClause* Node::mutable_row_mark_clause() { + // @@protoc_insertion_point(field_mutable:pg_query.Node.row_mark_clause) + return _internal_mutable_row_mark_clause(); +} + +// .pg_query.XmlSerialize xml_serialize = 206 [json_name = "XmlSerialize"]; +inline bool Node::_internal_has_xml_serialize() const { + return node_case() == kXmlSerialize; +} +inline bool Node::has_xml_serialize() const { + return _internal_has_xml_serialize(); +} +inline void Node::set_has_xml_serialize() { + _oneof_case_[0] = kXmlSerialize; +} +inline void Node::clear_xml_serialize() { + if (_internal_has_xml_serialize()) { + if (GetArena() == nullptr) { + delete node_.xml_serialize_; + } + clear_has_node(); + } +} +inline ::pg_query::XmlSerialize* Node::release_xml_serialize() { + // @@protoc_insertion_point(field_release:pg_query.Node.xml_serialize) + if (_internal_has_xml_serialize()) { + clear_has_node(); + ::pg_query::XmlSerialize* temp = node_.xml_serialize_; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + node_.xml_serialize_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline const ::pg_query::XmlSerialize& Node::_internal_xml_serialize() const { + return _internal_has_xml_serialize() + ? *node_.xml_serialize_ + : reinterpret_cast< ::pg_query::XmlSerialize&>(::pg_query::_XmlSerialize_default_instance_); +} +inline const ::pg_query::XmlSerialize& Node::xml_serialize() const { + // @@protoc_insertion_point(field_get:pg_query.Node.xml_serialize) + return _internal_xml_serialize(); +} +inline ::pg_query::XmlSerialize* Node::unsafe_arena_release_xml_serialize() { + // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.xml_serialize) + if (_internal_has_xml_serialize()) { + clear_has_node(); + ::pg_query::XmlSerialize* temp = node_.xml_serialize_; + node_.xml_serialize_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline void Node::unsafe_arena_set_allocated_xml_serialize(::pg_query::XmlSerialize* xml_serialize) { + clear_node(); + if (xml_serialize) { + set_has_xml_serialize(); + node_.xml_serialize_ = xml_serialize; + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.xml_serialize) +} +inline ::pg_query::XmlSerialize* Node::_internal_mutable_xml_serialize() { + if (!_internal_has_xml_serialize()) { + clear_node(); + set_has_xml_serialize(); + node_.xml_serialize_ = CreateMaybeMessage< ::pg_query::XmlSerialize >(GetArena()); + } + return node_.xml_serialize_; +} +inline ::pg_query::XmlSerialize* Node::mutable_xml_serialize() { + // @@protoc_insertion_point(field_mutable:pg_query.Node.xml_serialize) + return _internal_mutable_xml_serialize(); +} + +// .pg_query.WithClause with_clause = 207 [json_name = "WithClause"]; +inline bool Node::_internal_has_with_clause() const { + return node_case() == kWithClause; +} +inline bool Node::has_with_clause() const { + return _internal_has_with_clause(); +} +inline void Node::set_has_with_clause() { + _oneof_case_[0] = kWithClause; +} +inline void Node::clear_with_clause() { + if (_internal_has_with_clause()) { + if (GetArena() == nullptr) { + delete node_.with_clause_; + } + clear_has_node(); + } +} +inline ::pg_query::WithClause* Node::release_with_clause() { + // @@protoc_insertion_point(field_release:pg_query.Node.with_clause) + if (_internal_has_with_clause()) { + clear_has_node(); + ::pg_query::WithClause* temp = node_.with_clause_; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + node_.with_clause_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline const ::pg_query::WithClause& Node::_internal_with_clause() const { + return _internal_has_with_clause() + ? *node_.with_clause_ + : reinterpret_cast< ::pg_query::WithClause&>(::pg_query::_WithClause_default_instance_); +} +inline const ::pg_query::WithClause& Node::with_clause() const { + // @@protoc_insertion_point(field_get:pg_query.Node.with_clause) + return _internal_with_clause(); +} +inline ::pg_query::WithClause* Node::unsafe_arena_release_with_clause() { + // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.with_clause) + if (_internal_has_with_clause()) { + clear_has_node(); + ::pg_query::WithClause* temp = node_.with_clause_; + node_.with_clause_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline void Node::unsafe_arena_set_allocated_with_clause(::pg_query::WithClause* with_clause) { + clear_node(); + if (with_clause) { + set_has_with_clause(); + node_.with_clause_ = with_clause; + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.with_clause) +} +inline ::pg_query::WithClause* Node::_internal_mutable_with_clause() { + if (!_internal_has_with_clause()) { + clear_node(); + set_has_with_clause(); + node_.with_clause_ = CreateMaybeMessage< ::pg_query::WithClause >(GetArena()); + } + return node_.with_clause_; +} +inline ::pg_query::WithClause* Node::mutable_with_clause() { + // @@protoc_insertion_point(field_mutable:pg_query.Node.with_clause) + return _internal_mutable_with_clause(); +} + +// .pg_query.InferClause infer_clause = 208 [json_name = "InferClause"]; +inline bool Node::_internal_has_infer_clause() const { + return node_case() == kInferClause; +} +inline bool Node::has_infer_clause() const { + return _internal_has_infer_clause(); +} +inline void Node::set_has_infer_clause() { + _oneof_case_[0] = kInferClause; +} +inline void Node::clear_infer_clause() { + if (_internal_has_infer_clause()) { + if (GetArena() == nullptr) { + delete node_.infer_clause_; + } + clear_has_node(); + } +} +inline ::pg_query::InferClause* Node::release_infer_clause() { + // @@protoc_insertion_point(field_release:pg_query.Node.infer_clause) + if (_internal_has_infer_clause()) { + clear_has_node(); + ::pg_query::InferClause* temp = node_.infer_clause_; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + node_.infer_clause_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline const ::pg_query::InferClause& Node::_internal_infer_clause() const { + return _internal_has_infer_clause() + ? *node_.infer_clause_ + : reinterpret_cast< ::pg_query::InferClause&>(::pg_query::_InferClause_default_instance_); +} +inline const ::pg_query::InferClause& Node::infer_clause() const { + // @@protoc_insertion_point(field_get:pg_query.Node.infer_clause) + return _internal_infer_clause(); +} +inline ::pg_query::InferClause* Node::unsafe_arena_release_infer_clause() { + // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.infer_clause) + if (_internal_has_infer_clause()) { + clear_has_node(); + ::pg_query::InferClause* temp = node_.infer_clause_; + node_.infer_clause_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline void Node::unsafe_arena_set_allocated_infer_clause(::pg_query::InferClause* infer_clause) { + clear_node(); + if (infer_clause) { + set_has_infer_clause(); + node_.infer_clause_ = infer_clause; + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.infer_clause) +} +inline ::pg_query::InferClause* Node::_internal_mutable_infer_clause() { + if (!_internal_has_infer_clause()) { + clear_node(); + set_has_infer_clause(); + node_.infer_clause_ = CreateMaybeMessage< ::pg_query::InferClause >(GetArena()); + } + return node_.infer_clause_; +} +inline ::pg_query::InferClause* Node::mutable_infer_clause() { + // @@protoc_insertion_point(field_mutable:pg_query.Node.infer_clause) + return _internal_mutable_infer_clause(); +} + +// .pg_query.OnConflictClause on_conflict_clause = 209 [json_name = "OnConflictClause"]; +inline bool Node::_internal_has_on_conflict_clause() const { + return node_case() == kOnConflictClause; +} +inline bool Node::has_on_conflict_clause() const { + return _internal_has_on_conflict_clause(); +} +inline void Node::set_has_on_conflict_clause() { + _oneof_case_[0] = kOnConflictClause; +} +inline void Node::clear_on_conflict_clause() { + if (_internal_has_on_conflict_clause()) { + if (GetArena() == nullptr) { + delete node_.on_conflict_clause_; + } + clear_has_node(); + } +} +inline ::pg_query::OnConflictClause* Node::release_on_conflict_clause() { + // @@protoc_insertion_point(field_release:pg_query.Node.on_conflict_clause) + if (_internal_has_on_conflict_clause()) { + clear_has_node(); + ::pg_query::OnConflictClause* temp = node_.on_conflict_clause_; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + node_.on_conflict_clause_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline const ::pg_query::OnConflictClause& Node::_internal_on_conflict_clause() const { + return _internal_has_on_conflict_clause() + ? *node_.on_conflict_clause_ + : reinterpret_cast< ::pg_query::OnConflictClause&>(::pg_query::_OnConflictClause_default_instance_); +} +inline const ::pg_query::OnConflictClause& Node::on_conflict_clause() const { + // @@protoc_insertion_point(field_get:pg_query.Node.on_conflict_clause) + return _internal_on_conflict_clause(); +} +inline ::pg_query::OnConflictClause* Node::unsafe_arena_release_on_conflict_clause() { + // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.on_conflict_clause) + if (_internal_has_on_conflict_clause()) { + clear_has_node(); + ::pg_query::OnConflictClause* temp = node_.on_conflict_clause_; + node_.on_conflict_clause_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline void Node::unsafe_arena_set_allocated_on_conflict_clause(::pg_query::OnConflictClause* on_conflict_clause) { + clear_node(); + if (on_conflict_clause) { + set_has_on_conflict_clause(); + node_.on_conflict_clause_ = on_conflict_clause; + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.on_conflict_clause) +} +inline ::pg_query::OnConflictClause* Node::_internal_mutable_on_conflict_clause() { + if (!_internal_has_on_conflict_clause()) { + clear_node(); + set_has_on_conflict_clause(); + node_.on_conflict_clause_ = CreateMaybeMessage< ::pg_query::OnConflictClause >(GetArena()); + } + return node_.on_conflict_clause_; +} +inline ::pg_query::OnConflictClause* Node::mutable_on_conflict_clause() { + // @@protoc_insertion_point(field_mutable:pg_query.Node.on_conflict_clause) + return _internal_mutable_on_conflict_clause(); +} + +// .pg_query.CommonTableExpr common_table_expr = 210 [json_name = "CommonTableExpr"]; +inline bool Node::_internal_has_common_table_expr() const { + return node_case() == kCommonTableExpr; +} +inline bool Node::has_common_table_expr() const { + return _internal_has_common_table_expr(); +} +inline void Node::set_has_common_table_expr() { + _oneof_case_[0] = kCommonTableExpr; +} +inline void Node::clear_common_table_expr() { + if (_internal_has_common_table_expr()) { + if (GetArena() == nullptr) { + delete node_.common_table_expr_; + } + clear_has_node(); + } +} +inline ::pg_query::CommonTableExpr* Node::release_common_table_expr() { + // @@protoc_insertion_point(field_release:pg_query.Node.common_table_expr) + if (_internal_has_common_table_expr()) { + clear_has_node(); + ::pg_query::CommonTableExpr* temp = node_.common_table_expr_; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + node_.common_table_expr_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline const ::pg_query::CommonTableExpr& Node::_internal_common_table_expr() const { + return _internal_has_common_table_expr() + ? *node_.common_table_expr_ + : reinterpret_cast< ::pg_query::CommonTableExpr&>(::pg_query::_CommonTableExpr_default_instance_); +} +inline const ::pg_query::CommonTableExpr& Node::common_table_expr() const { + // @@protoc_insertion_point(field_get:pg_query.Node.common_table_expr) + return _internal_common_table_expr(); +} +inline ::pg_query::CommonTableExpr* Node::unsafe_arena_release_common_table_expr() { + // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.common_table_expr) + if (_internal_has_common_table_expr()) { + clear_has_node(); + ::pg_query::CommonTableExpr* temp = node_.common_table_expr_; + node_.common_table_expr_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline void Node::unsafe_arena_set_allocated_common_table_expr(::pg_query::CommonTableExpr* common_table_expr) { + clear_node(); + if (common_table_expr) { + set_has_common_table_expr(); + node_.common_table_expr_ = common_table_expr; + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.common_table_expr) +} +inline ::pg_query::CommonTableExpr* Node::_internal_mutable_common_table_expr() { + if (!_internal_has_common_table_expr()) { + clear_node(); + set_has_common_table_expr(); + node_.common_table_expr_ = CreateMaybeMessage< ::pg_query::CommonTableExpr >(GetArena()); + } + return node_.common_table_expr_; +} +inline ::pg_query::CommonTableExpr* Node::mutable_common_table_expr() { + // @@protoc_insertion_point(field_mutable:pg_query.Node.common_table_expr) + return _internal_mutable_common_table_expr(); +} + +// .pg_query.RoleSpec role_spec = 211 [json_name = "RoleSpec"]; +inline bool Node::_internal_has_role_spec() const { + return node_case() == kRoleSpec; +} +inline bool Node::has_role_spec() const { + return _internal_has_role_spec(); +} +inline void Node::set_has_role_spec() { + _oneof_case_[0] = kRoleSpec; +} +inline void Node::clear_role_spec() { + if (_internal_has_role_spec()) { + if (GetArena() == nullptr) { + delete node_.role_spec_; + } + clear_has_node(); + } +} +inline ::pg_query::RoleSpec* Node::release_role_spec() { + // @@protoc_insertion_point(field_release:pg_query.Node.role_spec) + if (_internal_has_role_spec()) { + clear_has_node(); + ::pg_query::RoleSpec* temp = node_.role_spec_; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + node_.role_spec_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline const ::pg_query::RoleSpec& Node::_internal_role_spec() const { + return _internal_has_role_spec() + ? *node_.role_spec_ + : reinterpret_cast< ::pg_query::RoleSpec&>(::pg_query::_RoleSpec_default_instance_); +} +inline const ::pg_query::RoleSpec& Node::role_spec() const { + // @@protoc_insertion_point(field_get:pg_query.Node.role_spec) + return _internal_role_spec(); +} +inline ::pg_query::RoleSpec* Node::unsafe_arena_release_role_spec() { + // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.role_spec) + if (_internal_has_role_spec()) { + clear_has_node(); + ::pg_query::RoleSpec* temp = node_.role_spec_; + node_.role_spec_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline void Node::unsafe_arena_set_allocated_role_spec(::pg_query::RoleSpec* role_spec) { + clear_node(); + if (role_spec) { + set_has_role_spec(); + node_.role_spec_ = role_spec; + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.role_spec) +} +inline ::pg_query::RoleSpec* Node::_internal_mutable_role_spec() { + if (!_internal_has_role_spec()) { + clear_node(); + set_has_role_spec(); + node_.role_spec_ = CreateMaybeMessage< ::pg_query::RoleSpec >(GetArena()); + } + return node_.role_spec_; +} +inline ::pg_query::RoleSpec* Node::mutable_role_spec() { + // @@protoc_insertion_point(field_mutable:pg_query.Node.role_spec) + return _internal_mutable_role_spec(); +} + +// .pg_query.TriggerTransition trigger_transition = 212 [json_name = "TriggerTransition"]; +inline bool Node::_internal_has_trigger_transition() const { + return node_case() == kTriggerTransition; +} +inline bool Node::has_trigger_transition() const { + return _internal_has_trigger_transition(); +} +inline void Node::set_has_trigger_transition() { + _oneof_case_[0] = kTriggerTransition; +} +inline void Node::clear_trigger_transition() { + if (_internal_has_trigger_transition()) { + if (GetArena() == nullptr) { + delete node_.trigger_transition_; + } + clear_has_node(); + } +} +inline ::pg_query::TriggerTransition* Node::release_trigger_transition() { + // @@protoc_insertion_point(field_release:pg_query.Node.trigger_transition) + if (_internal_has_trigger_transition()) { + clear_has_node(); + ::pg_query::TriggerTransition* temp = node_.trigger_transition_; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + node_.trigger_transition_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline const ::pg_query::TriggerTransition& Node::_internal_trigger_transition() const { + return _internal_has_trigger_transition() + ? *node_.trigger_transition_ + : reinterpret_cast< ::pg_query::TriggerTransition&>(::pg_query::_TriggerTransition_default_instance_); +} +inline const ::pg_query::TriggerTransition& Node::trigger_transition() const { + // @@protoc_insertion_point(field_get:pg_query.Node.trigger_transition) + return _internal_trigger_transition(); +} +inline ::pg_query::TriggerTransition* Node::unsafe_arena_release_trigger_transition() { + // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.trigger_transition) + if (_internal_has_trigger_transition()) { + clear_has_node(); + ::pg_query::TriggerTransition* temp = node_.trigger_transition_; + node_.trigger_transition_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline void Node::unsafe_arena_set_allocated_trigger_transition(::pg_query::TriggerTransition* trigger_transition) { + clear_node(); + if (trigger_transition) { + set_has_trigger_transition(); + node_.trigger_transition_ = trigger_transition; + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.trigger_transition) +} +inline ::pg_query::TriggerTransition* Node::_internal_mutable_trigger_transition() { + if (!_internal_has_trigger_transition()) { + clear_node(); + set_has_trigger_transition(); + node_.trigger_transition_ = CreateMaybeMessage< ::pg_query::TriggerTransition >(GetArena()); + } + return node_.trigger_transition_; +} +inline ::pg_query::TriggerTransition* Node::mutable_trigger_transition() { + // @@protoc_insertion_point(field_mutable:pg_query.Node.trigger_transition) + return _internal_mutable_trigger_transition(); +} + +// .pg_query.PartitionElem partition_elem = 213 [json_name = "PartitionElem"]; +inline bool Node::_internal_has_partition_elem() const { + return node_case() == kPartitionElem; +} +inline bool Node::has_partition_elem() const { + return _internal_has_partition_elem(); +} +inline void Node::set_has_partition_elem() { + _oneof_case_[0] = kPartitionElem; +} +inline void Node::clear_partition_elem() { + if (_internal_has_partition_elem()) { + if (GetArena() == nullptr) { + delete node_.partition_elem_; + } + clear_has_node(); + } +} +inline ::pg_query::PartitionElem* Node::release_partition_elem() { + // @@protoc_insertion_point(field_release:pg_query.Node.partition_elem) + if (_internal_has_partition_elem()) { + clear_has_node(); + ::pg_query::PartitionElem* temp = node_.partition_elem_; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + node_.partition_elem_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline const ::pg_query::PartitionElem& Node::_internal_partition_elem() const { + return _internal_has_partition_elem() + ? *node_.partition_elem_ + : reinterpret_cast< ::pg_query::PartitionElem&>(::pg_query::_PartitionElem_default_instance_); +} +inline const ::pg_query::PartitionElem& Node::partition_elem() const { + // @@protoc_insertion_point(field_get:pg_query.Node.partition_elem) + return _internal_partition_elem(); +} +inline ::pg_query::PartitionElem* Node::unsafe_arena_release_partition_elem() { + // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.partition_elem) + if (_internal_has_partition_elem()) { + clear_has_node(); + ::pg_query::PartitionElem* temp = node_.partition_elem_; + node_.partition_elem_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline void Node::unsafe_arena_set_allocated_partition_elem(::pg_query::PartitionElem* partition_elem) { + clear_node(); + if (partition_elem) { + set_has_partition_elem(); + node_.partition_elem_ = partition_elem; + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.partition_elem) +} +inline ::pg_query::PartitionElem* Node::_internal_mutable_partition_elem() { + if (!_internal_has_partition_elem()) { + clear_node(); + set_has_partition_elem(); + node_.partition_elem_ = CreateMaybeMessage< ::pg_query::PartitionElem >(GetArena()); + } + return node_.partition_elem_; +} +inline ::pg_query::PartitionElem* Node::mutable_partition_elem() { + // @@protoc_insertion_point(field_mutable:pg_query.Node.partition_elem) + return _internal_mutable_partition_elem(); +} + +// .pg_query.PartitionSpec partition_spec = 214 [json_name = "PartitionSpec"]; +inline bool Node::_internal_has_partition_spec() const { + return node_case() == kPartitionSpec; +} +inline bool Node::has_partition_spec() const { + return _internal_has_partition_spec(); +} +inline void Node::set_has_partition_spec() { + _oneof_case_[0] = kPartitionSpec; +} +inline void Node::clear_partition_spec() { + if (_internal_has_partition_spec()) { + if (GetArena() == nullptr) { + delete node_.partition_spec_; + } + clear_has_node(); + } +} +inline ::pg_query::PartitionSpec* Node::release_partition_spec() { + // @@protoc_insertion_point(field_release:pg_query.Node.partition_spec) + if (_internal_has_partition_spec()) { + clear_has_node(); + ::pg_query::PartitionSpec* temp = node_.partition_spec_; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + node_.partition_spec_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline const ::pg_query::PartitionSpec& Node::_internal_partition_spec() const { + return _internal_has_partition_spec() + ? *node_.partition_spec_ + : reinterpret_cast< ::pg_query::PartitionSpec&>(::pg_query::_PartitionSpec_default_instance_); +} +inline const ::pg_query::PartitionSpec& Node::partition_spec() const { + // @@protoc_insertion_point(field_get:pg_query.Node.partition_spec) + return _internal_partition_spec(); +} +inline ::pg_query::PartitionSpec* Node::unsafe_arena_release_partition_spec() { + // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.partition_spec) + if (_internal_has_partition_spec()) { + clear_has_node(); + ::pg_query::PartitionSpec* temp = node_.partition_spec_; + node_.partition_spec_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline void Node::unsafe_arena_set_allocated_partition_spec(::pg_query::PartitionSpec* partition_spec) { + clear_node(); + if (partition_spec) { + set_has_partition_spec(); + node_.partition_spec_ = partition_spec; + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.partition_spec) +} +inline ::pg_query::PartitionSpec* Node::_internal_mutable_partition_spec() { + if (!_internal_has_partition_spec()) { + clear_node(); + set_has_partition_spec(); + node_.partition_spec_ = CreateMaybeMessage< ::pg_query::PartitionSpec >(GetArena()); + } + return node_.partition_spec_; +} +inline ::pg_query::PartitionSpec* Node::mutable_partition_spec() { + // @@protoc_insertion_point(field_mutable:pg_query.Node.partition_spec) + return _internal_mutable_partition_spec(); +} + +// .pg_query.PartitionBoundSpec partition_bound_spec = 215 [json_name = "PartitionBoundSpec"]; +inline bool Node::_internal_has_partition_bound_spec() const { + return node_case() == kPartitionBoundSpec; +} +inline bool Node::has_partition_bound_spec() const { + return _internal_has_partition_bound_spec(); +} +inline void Node::set_has_partition_bound_spec() { + _oneof_case_[0] = kPartitionBoundSpec; +} +inline void Node::clear_partition_bound_spec() { + if (_internal_has_partition_bound_spec()) { + if (GetArena() == nullptr) { + delete node_.partition_bound_spec_; + } + clear_has_node(); + } +} +inline ::pg_query::PartitionBoundSpec* Node::release_partition_bound_spec() { + // @@protoc_insertion_point(field_release:pg_query.Node.partition_bound_spec) + if (_internal_has_partition_bound_spec()) { + clear_has_node(); + ::pg_query::PartitionBoundSpec* temp = node_.partition_bound_spec_; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + node_.partition_bound_spec_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline const ::pg_query::PartitionBoundSpec& Node::_internal_partition_bound_spec() const { + return _internal_has_partition_bound_spec() + ? *node_.partition_bound_spec_ + : reinterpret_cast< ::pg_query::PartitionBoundSpec&>(::pg_query::_PartitionBoundSpec_default_instance_); +} +inline const ::pg_query::PartitionBoundSpec& Node::partition_bound_spec() const { + // @@protoc_insertion_point(field_get:pg_query.Node.partition_bound_spec) + return _internal_partition_bound_spec(); +} +inline ::pg_query::PartitionBoundSpec* Node::unsafe_arena_release_partition_bound_spec() { + // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.partition_bound_spec) + if (_internal_has_partition_bound_spec()) { + clear_has_node(); + ::pg_query::PartitionBoundSpec* temp = node_.partition_bound_spec_; + node_.partition_bound_spec_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline void Node::unsafe_arena_set_allocated_partition_bound_spec(::pg_query::PartitionBoundSpec* partition_bound_spec) { + clear_node(); + if (partition_bound_spec) { + set_has_partition_bound_spec(); + node_.partition_bound_spec_ = partition_bound_spec; + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.partition_bound_spec) +} +inline ::pg_query::PartitionBoundSpec* Node::_internal_mutable_partition_bound_spec() { + if (!_internal_has_partition_bound_spec()) { + clear_node(); + set_has_partition_bound_spec(); + node_.partition_bound_spec_ = CreateMaybeMessage< ::pg_query::PartitionBoundSpec >(GetArena()); + } + return node_.partition_bound_spec_; +} +inline ::pg_query::PartitionBoundSpec* Node::mutable_partition_bound_spec() { + // @@protoc_insertion_point(field_mutable:pg_query.Node.partition_bound_spec) + return _internal_mutable_partition_bound_spec(); +} + +// .pg_query.PartitionRangeDatum partition_range_datum = 216 [json_name = "PartitionRangeDatum"]; +inline bool Node::_internal_has_partition_range_datum() const { + return node_case() == kPartitionRangeDatum; +} +inline bool Node::has_partition_range_datum() const { + return _internal_has_partition_range_datum(); +} +inline void Node::set_has_partition_range_datum() { + _oneof_case_[0] = kPartitionRangeDatum; +} +inline void Node::clear_partition_range_datum() { + if (_internal_has_partition_range_datum()) { + if (GetArena() == nullptr) { + delete node_.partition_range_datum_; + } + clear_has_node(); + } +} +inline ::pg_query::PartitionRangeDatum* Node::release_partition_range_datum() { + // @@protoc_insertion_point(field_release:pg_query.Node.partition_range_datum) + if (_internal_has_partition_range_datum()) { + clear_has_node(); + ::pg_query::PartitionRangeDatum* temp = node_.partition_range_datum_; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + node_.partition_range_datum_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline const ::pg_query::PartitionRangeDatum& Node::_internal_partition_range_datum() const { + return _internal_has_partition_range_datum() + ? *node_.partition_range_datum_ + : reinterpret_cast< ::pg_query::PartitionRangeDatum&>(::pg_query::_PartitionRangeDatum_default_instance_); +} +inline const ::pg_query::PartitionRangeDatum& Node::partition_range_datum() const { + // @@protoc_insertion_point(field_get:pg_query.Node.partition_range_datum) + return _internal_partition_range_datum(); +} +inline ::pg_query::PartitionRangeDatum* Node::unsafe_arena_release_partition_range_datum() { + // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.partition_range_datum) + if (_internal_has_partition_range_datum()) { + clear_has_node(); + ::pg_query::PartitionRangeDatum* temp = node_.partition_range_datum_; + node_.partition_range_datum_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline void Node::unsafe_arena_set_allocated_partition_range_datum(::pg_query::PartitionRangeDatum* partition_range_datum) { + clear_node(); + if (partition_range_datum) { + set_has_partition_range_datum(); + node_.partition_range_datum_ = partition_range_datum; + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.partition_range_datum) +} +inline ::pg_query::PartitionRangeDatum* Node::_internal_mutable_partition_range_datum() { + if (!_internal_has_partition_range_datum()) { + clear_node(); + set_has_partition_range_datum(); + node_.partition_range_datum_ = CreateMaybeMessage< ::pg_query::PartitionRangeDatum >(GetArena()); + } + return node_.partition_range_datum_; +} +inline ::pg_query::PartitionRangeDatum* Node::mutable_partition_range_datum() { + // @@protoc_insertion_point(field_mutable:pg_query.Node.partition_range_datum) + return _internal_mutable_partition_range_datum(); +} + +// .pg_query.PartitionCmd partition_cmd = 217 [json_name = "PartitionCmd"]; +inline bool Node::_internal_has_partition_cmd() const { + return node_case() == kPartitionCmd; +} +inline bool Node::has_partition_cmd() const { + return _internal_has_partition_cmd(); +} +inline void Node::set_has_partition_cmd() { + _oneof_case_[0] = kPartitionCmd; +} +inline void Node::clear_partition_cmd() { + if (_internal_has_partition_cmd()) { + if (GetArena() == nullptr) { + delete node_.partition_cmd_; + } + clear_has_node(); + } +} +inline ::pg_query::PartitionCmd* Node::release_partition_cmd() { + // @@protoc_insertion_point(field_release:pg_query.Node.partition_cmd) + if (_internal_has_partition_cmd()) { + clear_has_node(); + ::pg_query::PartitionCmd* temp = node_.partition_cmd_; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + node_.partition_cmd_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline const ::pg_query::PartitionCmd& Node::_internal_partition_cmd() const { + return _internal_has_partition_cmd() + ? *node_.partition_cmd_ + : reinterpret_cast< ::pg_query::PartitionCmd&>(::pg_query::_PartitionCmd_default_instance_); +} +inline const ::pg_query::PartitionCmd& Node::partition_cmd() const { + // @@protoc_insertion_point(field_get:pg_query.Node.partition_cmd) + return _internal_partition_cmd(); +} +inline ::pg_query::PartitionCmd* Node::unsafe_arena_release_partition_cmd() { + // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.partition_cmd) + if (_internal_has_partition_cmd()) { + clear_has_node(); + ::pg_query::PartitionCmd* temp = node_.partition_cmd_; + node_.partition_cmd_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline void Node::unsafe_arena_set_allocated_partition_cmd(::pg_query::PartitionCmd* partition_cmd) { + clear_node(); + if (partition_cmd) { + set_has_partition_cmd(); + node_.partition_cmd_ = partition_cmd; + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.partition_cmd) +} +inline ::pg_query::PartitionCmd* Node::_internal_mutable_partition_cmd() { + if (!_internal_has_partition_cmd()) { + clear_node(); + set_has_partition_cmd(); + node_.partition_cmd_ = CreateMaybeMessage< ::pg_query::PartitionCmd >(GetArena()); + } + return node_.partition_cmd_; +} +inline ::pg_query::PartitionCmd* Node::mutable_partition_cmd() { + // @@protoc_insertion_point(field_mutable:pg_query.Node.partition_cmd) + return _internal_mutable_partition_cmd(); +} + +// .pg_query.VacuumRelation vacuum_relation = 218 [json_name = "VacuumRelation"]; +inline bool Node::_internal_has_vacuum_relation() const { + return node_case() == kVacuumRelation; +} +inline bool Node::has_vacuum_relation() const { + return _internal_has_vacuum_relation(); +} +inline void Node::set_has_vacuum_relation() { + _oneof_case_[0] = kVacuumRelation; +} +inline void Node::clear_vacuum_relation() { + if (_internal_has_vacuum_relation()) { + if (GetArena() == nullptr) { + delete node_.vacuum_relation_; + } + clear_has_node(); + } +} +inline ::pg_query::VacuumRelation* Node::release_vacuum_relation() { + // @@protoc_insertion_point(field_release:pg_query.Node.vacuum_relation) + if (_internal_has_vacuum_relation()) { + clear_has_node(); + ::pg_query::VacuumRelation* temp = node_.vacuum_relation_; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + node_.vacuum_relation_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline const ::pg_query::VacuumRelation& Node::_internal_vacuum_relation() const { + return _internal_has_vacuum_relation() + ? *node_.vacuum_relation_ + : reinterpret_cast< ::pg_query::VacuumRelation&>(::pg_query::_VacuumRelation_default_instance_); +} +inline const ::pg_query::VacuumRelation& Node::vacuum_relation() const { + // @@protoc_insertion_point(field_get:pg_query.Node.vacuum_relation) + return _internal_vacuum_relation(); +} +inline ::pg_query::VacuumRelation* Node::unsafe_arena_release_vacuum_relation() { + // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.vacuum_relation) + if (_internal_has_vacuum_relation()) { + clear_has_node(); + ::pg_query::VacuumRelation* temp = node_.vacuum_relation_; + node_.vacuum_relation_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline void Node::unsafe_arena_set_allocated_vacuum_relation(::pg_query::VacuumRelation* vacuum_relation) { + clear_node(); + if (vacuum_relation) { + set_has_vacuum_relation(); + node_.vacuum_relation_ = vacuum_relation; + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.vacuum_relation) +} +inline ::pg_query::VacuumRelation* Node::_internal_mutable_vacuum_relation() { + if (!_internal_has_vacuum_relation()) { + clear_node(); + set_has_vacuum_relation(); + node_.vacuum_relation_ = CreateMaybeMessage< ::pg_query::VacuumRelation >(GetArena()); + } + return node_.vacuum_relation_; +} +inline ::pg_query::VacuumRelation* Node::mutable_vacuum_relation() { + // @@protoc_insertion_point(field_mutable:pg_query.Node.vacuum_relation) + return _internal_mutable_vacuum_relation(); +} + +// .pg_query.InlineCodeBlock inline_code_block = 219 [json_name = "InlineCodeBlock"]; +inline bool Node::_internal_has_inline_code_block() const { + return node_case() == kInlineCodeBlock; +} +inline bool Node::has_inline_code_block() const { + return _internal_has_inline_code_block(); +} +inline void Node::set_has_inline_code_block() { + _oneof_case_[0] = kInlineCodeBlock; +} +inline void Node::clear_inline_code_block() { + if (_internal_has_inline_code_block()) { + if (GetArena() == nullptr) { + delete node_.inline_code_block_; + } + clear_has_node(); + } +} +inline ::pg_query::InlineCodeBlock* Node::release_inline_code_block() { + // @@protoc_insertion_point(field_release:pg_query.Node.inline_code_block) + if (_internal_has_inline_code_block()) { + clear_has_node(); + ::pg_query::InlineCodeBlock* temp = node_.inline_code_block_; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + node_.inline_code_block_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline const ::pg_query::InlineCodeBlock& Node::_internal_inline_code_block() const { + return _internal_has_inline_code_block() + ? *node_.inline_code_block_ + : reinterpret_cast< ::pg_query::InlineCodeBlock&>(::pg_query::_InlineCodeBlock_default_instance_); +} +inline const ::pg_query::InlineCodeBlock& Node::inline_code_block() const { + // @@protoc_insertion_point(field_get:pg_query.Node.inline_code_block) + return _internal_inline_code_block(); +} +inline ::pg_query::InlineCodeBlock* Node::unsafe_arena_release_inline_code_block() { + // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.inline_code_block) + if (_internal_has_inline_code_block()) { + clear_has_node(); + ::pg_query::InlineCodeBlock* temp = node_.inline_code_block_; + node_.inline_code_block_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline void Node::unsafe_arena_set_allocated_inline_code_block(::pg_query::InlineCodeBlock* inline_code_block) { + clear_node(); + if (inline_code_block) { + set_has_inline_code_block(); + node_.inline_code_block_ = inline_code_block; + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.inline_code_block) +} +inline ::pg_query::InlineCodeBlock* Node::_internal_mutable_inline_code_block() { + if (!_internal_has_inline_code_block()) { + clear_node(); + set_has_inline_code_block(); + node_.inline_code_block_ = CreateMaybeMessage< ::pg_query::InlineCodeBlock >(GetArena()); + } + return node_.inline_code_block_; +} +inline ::pg_query::InlineCodeBlock* Node::mutable_inline_code_block() { + // @@protoc_insertion_point(field_mutable:pg_query.Node.inline_code_block) + return _internal_mutable_inline_code_block(); +} + +// .pg_query.CallContext call_context = 220 [json_name = "CallContext"]; +inline bool Node::_internal_has_call_context() const { + return node_case() == kCallContext; +} +inline bool Node::has_call_context() const { + return _internal_has_call_context(); +} +inline void Node::set_has_call_context() { + _oneof_case_[0] = kCallContext; +} +inline void Node::clear_call_context() { + if (_internal_has_call_context()) { + if (GetArena() == nullptr) { + delete node_.call_context_; + } + clear_has_node(); + } +} +inline ::pg_query::CallContext* Node::release_call_context() { + // @@protoc_insertion_point(field_release:pg_query.Node.call_context) + if (_internal_has_call_context()) { + clear_has_node(); + ::pg_query::CallContext* temp = node_.call_context_; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + node_.call_context_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline const ::pg_query::CallContext& Node::_internal_call_context() const { + return _internal_has_call_context() + ? *node_.call_context_ + : reinterpret_cast< ::pg_query::CallContext&>(::pg_query::_CallContext_default_instance_); +} +inline const ::pg_query::CallContext& Node::call_context() const { + // @@protoc_insertion_point(field_get:pg_query.Node.call_context) + return _internal_call_context(); +} +inline ::pg_query::CallContext* Node::unsafe_arena_release_call_context() { + // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.call_context) + if (_internal_has_call_context()) { + clear_has_node(); + ::pg_query::CallContext* temp = node_.call_context_; + node_.call_context_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline void Node::unsafe_arena_set_allocated_call_context(::pg_query::CallContext* call_context) { + clear_node(); + if (call_context) { + set_has_call_context(); + node_.call_context_ = call_context; + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.call_context) +} +inline ::pg_query::CallContext* Node::_internal_mutable_call_context() { + if (!_internal_has_call_context()) { + clear_node(); + set_has_call_context(); + node_.call_context_ = CreateMaybeMessage< ::pg_query::CallContext >(GetArena()); + } + return node_.call_context_; +} +inline ::pg_query::CallContext* Node::mutable_call_context() { + // @@protoc_insertion_point(field_mutable:pg_query.Node.call_context) + return _internal_mutable_call_context(); +} + +// .pg_query.Integer integer = 221 [json_name = "Integer"]; +inline bool Node::_internal_has_integer() const { + return node_case() == kInteger; +} +inline bool Node::has_integer() const { + return _internal_has_integer(); +} +inline void Node::set_has_integer() { + _oneof_case_[0] = kInteger; +} +inline void Node::clear_integer() { + if (_internal_has_integer()) { + if (GetArena() == nullptr) { + delete node_.integer_; + } + clear_has_node(); + } +} +inline ::pg_query::Integer* Node::release_integer() { + // @@protoc_insertion_point(field_release:pg_query.Node.integer) + if (_internal_has_integer()) { + clear_has_node(); + ::pg_query::Integer* temp = node_.integer_; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + node_.integer_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline const ::pg_query::Integer& Node::_internal_integer() const { + return _internal_has_integer() + ? *node_.integer_ + : reinterpret_cast< ::pg_query::Integer&>(::pg_query::_Integer_default_instance_); +} +inline const ::pg_query::Integer& Node::integer() const { + // @@protoc_insertion_point(field_get:pg_query.Node.integer) + return _internal_integer(); +} +inline ::pg_query::Integer* Node::unsafe_arena_release_integer() { + // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.integer) + if (_internal_has_integer()) { + clear_has_node(); + ::pg_query::Integer* temp = node_.integer_; + node_.integer_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline void Node::unsafe_arena_set_allocated_integer(::pg_query::Integer* integer) { + clear_node(); + if (integer) { + set_has_integer(); + node_.integer_ = integer; + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.integer) +} +inline ::pg_query::Integer* Node::_internal_mutable_integer() { + if (!_internal_has_integer()) { + clear_node(); + set_has_integer(); + node_.integer_ = CreateMaybeMessage< ::pg_query::Integer >(GetArena()); + } + return node_.integer_; +} +inline ::pg_query::Integer* Node::mutable_integer() { + // @@protoc_insertion_point(field_mutable:pg_query.Node.integer) + return _internal_mutable_integer(); +} + +// .pg_query.Float float = 222 [json_name = "Float"]; +inline bool Node::_internal_has_float_() const { + return node_case() == kFloat; +} +inline bool Node::has_float_() const { + return _internal_has_float_(); +} +inline void Node::set_has_float_() { + _oneof_case_[0] = kFloat; +} +inline void Node::clear_float_() { + if (_internal_has_float_()) { + if (GetArena() == nullptr) { + delete node_.float__; + } + clear_has_node(); + } +} +inline ::pg_query::Float* Node::release_float_() { + // @@protoc_insertion_point(field_release:pg_query.Node.float) + if (_internal_has_float_()) { + clear_has_node(); + ::pg_query::Float* temp = node_.float__; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + node_.float__ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline const ::pg_query::Float& Node::_internal_float_() const { + return _internal_has_float_() + ? *node_.float__ + : reinterpret_cast< ::pg_query::Float&>(::pg_query::_Float_default_instance_); +} +inline const ::pg_query::Float& Node::float_() const { + // @@protoc_insertion_point(field_get:pg_query.Node.float) + return _internal_float_(); +} +inline ::pg_query::Float* Node::unsafe_arena_release_float_() { + // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.float) + if (_internal_has_float_()) { + clear_has_node(); + ::pg_query::Float* temp = node_.float__; + node_.float__ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline void Node::unsafe_arena_set_allocated_float_(::pg_query::Float* float_) { + clear_node(); + if (float_) { + set_has_float_(); + node_.float__ = float_; + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.float) +} +inline ::pg_query::Float* Node::_internal_mutable_float_() { + if (!_internal_has_float_()) { + clear_node(); + set_has_float_(); + node_.float__ = CreateMaybeMessage< ::pg_query::Float >(GetArena()); + } + return node_.float__; +} +inline ::pg_query::Float* Node::mutable_float_() { + // @@protoc_insertion_point(field_mutable:pg_query.Node.float) + return _internal_mutable_float_(); +} + +// .pg_query.String string = 223 [json_name = "String"]; +inline bool Node::_internal_has_string() const { + return node_case() == kString; +} +inline bool Node::has_string() const { + return _internal_has_string(); +} +inline void Node::set_has_string() { + _oneof_case_[0] = kString; +} +inline void Node::clear_string() { + if (_internal_has_string()) { + if (GetArena() == nullptr) { + delete node_.string_; + } + clear_has_node(); + } +} +inline ::pg_query::String* Node::release_string() { + // @@protoc_insertion_point(field_release:pg_query.Node.string) + if (_internal_has_string()) { + clear_has_node(); + ::pg_query::String* temp = node_.string_; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + node_.string_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline const ::pg_query::String& Node::_internal_string() const { + return _internal_has_string() + ? *node_.string_ + : reinterpret_cast< ::pg_query::String&>(::pg_query::_String_default_instance_); +} +inline const ::pg_query::String& Node::string() const { + // @@protoc_insertion_point(field_get:pg_query.Node.string) + return _internal_string(); +} +inline ::pg_query::String* Node::unsafe_arena_release_string() { + // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.string) + if (_internal_has_string()) { + clear_has_node(); + ::pg_query::String* temp = node_.string_; + node_.string_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline void Node::unsafe_arena_set_allocated_string(::pg_query::String* string) { + clear_node(); + if (string) { + set_has_string(); + node_.string_ = string; + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.string) +} +inline ::pg_query::String* Node::_internal_mutable_string() { + if (!_internal_has_string()) { + clear_node(); + set_has_string(); + node_.string_ = CreateMaybeMessage< ::pg_query::String >(GetArena()); + } + return node_.string_; +} +inline ::pg_query::String* Node::mutable_string() { + // @@protoc_insertion_point(field_mutable:pg_query.Node.string) + return _internal_mutable_string(); +} + +// .pg_query.BitString bit_string = 224 [json_name = "BitString"]; +inline bool Node::_internal_has_bit_string() const { + return node_case() == kBitString; +} +inline bool Node::has_bit_string() const { + return _internal_has_bit_string(); +} +inline void Node::set_has_bit_string() { + _oneof_case_[0] = kBitString; +} +inline void Node::clear_bit_string() { + if (_internal_has_bit_string()) { + if (GetArena() == nullptr) { + delete node_.bit_string_; + } + clear_has_node(); + } +} +inline ::pg_query::BitString* Node::release_bit_string() { + // @@protoc_insertion_point(field_release:pg_query.Node.bit_string) + if (_internal_has_bit_string()) { + clear_has_node(); + ::pg_query::BitString* temp = node_.bit_string_; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + node_.bit_string_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline const ::pg_query::BitString& Node::_internal_bit_string() const { + return _internal_has_bit_string() + ? *node_.bit_string_ + : reinterpret_cast< ::pg_query::BitString&>(::pg_query::_BitString_default_instance_); +} +inline const ::pg_query::BitString& Node::bit_string() const { + // @@protoc_insertion_point(field_get:pg_query.Node.bit_string) + return _internal_bit_string(); +} +inline ::pg_query::BitString* Node::unsafe_arena_release_bit_string() { + // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.bit_string) + if (_internal_has_bit_string()) { + clear_has_node(); + ::pg_query::BitString* temp = node_.bit_string_; + node_.bit_string_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline void Node::unsafe_arena_set_allocated_bit_string(::pg_query::BitString* bit_string) { + clear_node(); + if (bit_string) { + set_has_bit_string(); + node_.bit_string_ = bit_string; + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.bit_string) +} +inline ::pg_query::BitString* Node::_internal_mutable_bit_string() { + if (!_internal_has_bit_string()) { + clear_node(); + set_has_bit_string(); + node_.bit_string_ = CreateMaybeMessage< ::pg_query::BitString >(GetArena()); + } + return node_.bit_string_; +} +inline ::pg_query::BitString* Node::mutable_bit_string() { + // @@protoc_insertion_point(field_mutable:pg_query.Node.bit_string) + return _internal_mutable_bit_string(); +} + +// .pg_query.Null null = 225 [json_name = "Null"]; +inline bool Node::_internal_has_null() const { + return node_case() == kNull; +} +inline bool Node::has_null() const { + return _internal_has_null(); +} +inline void Node::set_has_null() { + _oneof_case_[0] = kNull; +} +inline void Node::clear_null() { + if (_internal_has_null()) { + if (GetArena() == nullptr) { + delete node_.null_; + } + clear_has_node(); + } +} +inline ::pg_query::Null* Node::release_null() { + // @@protoc_insertion_point(field_release:pg_query.Node.null) + if (_internal_has_null()) { + clear_has_node(); + ::pg_query::Null* temp = node_.null_; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + node_.null_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline const ::pg_query::Null& Node::_internal_null() const { + return _internal_has_null() + ? *node_.null_ + : reinterpret_cast< ::pg_query::Null&>(::pg_query::_Null_default_instance_); +} +inline const ::pg_query::Null& Node::null() const { + // @@protoc_insertion_point(field_get:pg_query.Node.null) + return _internal_null(); +} +inline ::pg_query::Null* Node::unsafe_arena_release_null() { + // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.null) + if (_internal_has_null()) { + clear_has_node(); + ::pg_query::Null* temp = node_.null_; + node_.null_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline void Node::unsafe_arena_set_allocated_null(::pg_query::Null* null) { + clear_node(); + if (null) { + set_has_null(); + node_.null_ = null; + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.null) +} +inline ::pg_query::Null* Node::_internal_mutable_null() { + if (!_internal_has_null()) { + clear_node(); + set_has_null(); + node_.null_ = CreateMaybeMessage< ::pg_query::Null >(GetArena()); + } + return node_.null_; +} +inline ::pg_query::Null* Node::mutable_null() { + // @@protoc_insertion_point(field_mutable:pg_query.Node.null) + return _internal_mutable_null(); +} + +// .pg_query.List list = 226 [json_name = "List"]; +inline bool Node::_internal_has_list() const { + return node_case() == kList; +} +inline bool Node::has_list() const { + return _internal_has_list(); +} +inline void Node::set_has_list() { + _oneof_case_[0] = kList; +} +inline void Node::clear_list() { + if (_internal_has_list()) { + if (GetArena() == nullptr) { + delete node_.list_; + } + clear_has_node(); + } +} +inline ::pg_query::List* Node::release_list() { + // @@protoc_insertion_point(field_release:pg_query.Node.list) + if (_internal_has_list()) { + clear_has_node(); + ::pg_query::List* temp = node_.list_; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + node_.list_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline const ::pg_query::List& Node::_internal_list() const { + return _internal_has_list() + ? *node_.list_ + : reinterpret_cast< ::pg_query::List&>(::pg_query::_List_default_instance_); +} +inline const ::pg_query::List& Node::list() const { + // @@protoc_insertion_point(field_get:pg_query.Node.list) + return _internal_list(); +} +inline ::pg_query::List* Node::unsafe_arena_release_list() { + // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.list) + if (_internal_has_list()) { + clear_has_node(); + ::pg_query::List* temp = node_.list_; + node_.list_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline void Node::unsafe_arena_set_allocated_list(::pg_query::List* list) { + clear_node(); + if (list) { + set_has_list(); + node_.list_ = list; + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.list) +} +inline ::pg_query::List* Node::_internal_mutable_list() { + if (!_internal_has_list()) { + clear_node(); + set_has_list(); + node_.list_ = CreateMaybeMessage< ::pg_query::List >(GetArena()); + } + return node_.list_; +} +inline ::pg_query::List* Node::mutable_list() { + // @@protoc_insertion_point(field_mutable:pg_query.Node.list) + return _internal_mutable_list(); +} + +// .pg_query.IntList int_list = 227 [json_name = "IntList"]; +inline bool Node::_internal_has_int_list() const { + return node_case() == kIntList; +} +inline bool Node::has_int_list() const { + return _internal_has_int_list(); +} +inline void Node::set_has_int_list() { + _oneof_case_[0] = kIntList; +} +inline void Node::clear_int_list() { + if (_internal_has_int_list()) { + if (GetArena() == nullptr) { + delete node_.int_list_; + } + clear_has_node(); + } +} +inline ::pg_query::IntList* Node::release_int_list() { + // @@protoc_insertion_point(field_release:pg_query.Node.int_list) + if (_internal_has_int_list()) { + clear_has_node(); + ::pg_query::IntList* temp = node_.int_list_; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + node_.int_list_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline const ::pg_query::IntList& Node::_internal_int_list() const { + return _internal_has_int_list() + ? *node_.int_list_ + : reinterpret_cast< ::pg_query::IntList&>(::pg_query::_IntList_default_instance_); +} +inline const ::pg_query::IntList& Node::int_list() const { + // @@protoc_insertion_point(field_get:pg_query.Node.int_list) + return _internal_int_list(); +} +inline ::pg_query::IntList* Node::unsafe_arena_release_int_list() { + // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.int_list) + if (_internal_has_int_list()) { + clear_has_node(); + ::pg_query::IntList* temp = node_.int_list_; + node_.int_list_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline void Node::unsafe_arena_set_allocated_int_list(::pg_query::IntList* int_list) { + clear_node(); + if (int_list) { + set_has_int_list(); + node_.int_list_ = int_list; + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.int_list) +} +inline ::pg_query::IntList* Node::_internal_mutable_int_list() { + if (!_internal_has_int_list()) { + clear_node(); + set_has_int_list(); + node_.int_list_ = CreateMaybeMessage< ::pg_query::IntList >(GetArena()); + } + return node_.int_list_; +} +inline ::pg_query::IntList* Node::mutable_int_list() { + // @@protoc_insertion_point(field_mutable:pg_query.Node.int_list) + return _internal_mutable_int_list(); +} + +// .pg_query.OidList oid_list = 228 [json_name = "OidList"]; +inline bool Node::_internal_has_oid_list() const { + return node_case() == kOidList; +} +inline bool Node::has_oid_list() const { + return _internal_has_oid_list(); +} +inline void Node::set_has_oid_list() { + _oneof_case_[0] = kOidList; +} +inline void Node::clear_oid_list() { + if (_internal_has_oid_list()) { + if (GetArena() == nullptr) { + delete node_.oid_list_; + } + clear_has_node(); + } +} +inline ::pg_query::OidList* Node::release_oid_list() { + // @@protoc_insertion_point(field_release:pg_query.Node.oid_list) + if (_internal_has_oid_list()) { + clear_has_node(); + ::pg_query::OidList* temp = node_.oid_list_; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + node_.oid_list_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline const ::pg_query::OidList& Node::_internal_oid_list() const { + return _internal_has_oid_list() + ? *node_.oid_list_ + : reinterpret_cast< ::pg_query::OidList&>(::pg_query::_OidList_default_instance_); +} +inline const ::pg_query::OidList& Node::oid_list() const { + // @@protoc_insertion_point(field_get:pg_query.Node.oid_list) + return _internal_oid_list(); +} +inline ::pg_query::OidList* Node::unsafe_arena_release_oid_list() { + // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.oid_list) + if (_internal_has_oid_list()) { + clear_has_node(); + ::pg_query::OidList* temp = node_.oid_list_; + node_.oid_list_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline void Node::unsafe_arena_set_allocated_oid_list(::pg_query::OidList* oid_list) { + clear_node(); + if (oid_list) { + set_has_oid_list(); + node_.oid_list_ = oid_list; + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.oid_list) +} +inline ::pg_query::OidList* Node::_internal_mutable_oid_list() { + if (!_internal_has_oid_list()) { + clear_node(); + set_has_oid_list(); + node_.oid_list_ = CreateMaybeMessage< ::pg_query::OidList >(GetArena()); + } + return node_.oid_list_; +} +inline ::pg_query::OidList* Node::mutable_oid_list() { + // @@protoc_insertion_point(field_mutable:pg_query.Node.oid_list) + return _internal_mutable_oid_list(); +} + +inline bool Node::has_node() const { + return node_case() != NODE_NOT_SET; +} +inline void Node::clear_has_node() { + _oneof_case_[0] = NODE_NOT_SET; +} +inline Node::NodeCase Node::node_case() const { + return Node::NodeCase(_oneof_case_[0]); +} +// ------------------------------------------------------------------- + +// Integer + +// int32 ival = 1; +inline void Integer::clear_ival() { + ival_ = 0; +} +inline ::PROTOBUF_NAMESPACE_ID::int32 Integer::_internal_ival() const { + return ival_; +} +inline ::PROTOBUF_NAMESPACE_ID::int32 Integer::ival() const { + // @@protoc_insertion_point(field_get:pg_query.Integer.ival) + return _internal_ival(); +} +inline void Integer::_internal_set_ival(::PROTOBUF_NAMESPACE_ID::int32 value) { + + ival_ = value; +} +inline void Integer::set_ival(::PROTOBUF_NAMESPACE_ID::int32 value) { + _internal_set_ival(value); + // @@protoc_insertion_point(field_set:pg_query.Integer.ival) +} + +// ------------------------------------------------------------------- + +// Float + +// string str = 1; +inline void Float::clear_str() { + str_.ClearToEmpty(); +} +inline const std::string& Float::str() const { + // @@protoc_insertion_point(field_get:pg_query.Float.str) + return _internal_str(); +} +inline void Float::set_str(const std::string& value) { + _internal_set_str(value); + // @@protoc_insertion_point(field_set:pg_query.Float.str) +} +inline std::string* Float::mutable_str() { + // @@protoc_insertion_point(field_mutable:pg_query.Float.str) + return _internal_mutable_str(); +} +inline const std::string& Float::_internal_str() const { + return str_.Get(); +} +inline void Float::_internal_set_str(const std::string& value) { + + str_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArena()); +} +inline void Float::set_str(std::string&& value) { + + str_.Set( + ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::move(value), GetArena()); + // @@protoc_insertion_point(field_set_rvalue:pg_query.Float.str) +} +inline void Float::set_str(const char* value) { + GOOGLE_DCHECK(value != nullptr); + + str_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string(value), GetArena()); + // @@protoc_insertion_point(field_set_char:pg_query.Float.str) +} +inline void Float::set_str(const char* value, + size_t size) { + + str_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string( + reinterpret_cast(value), size), GetArena()); + // @@protoc_insertion_point(field_set_pointer:pg_query.Float.str) +} +inline std::string* Float::_internal_mutable_str() { + + return str_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArena()); +} +inline std::string* Float::release_str() { + // @@protoc_insertion_point(field_release:pg_query.Float.str) + return str_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); +} +inline void Float::set_allocated_str(std::string* str) { + if (str != nullptr) { + + } else { + + } + str_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), str, + GetArena()); + // @@protoc_insertion_point(field_set_allocated:pg_query.Float.str) +} + +// ------------------------------------------------------------------- + +// String + +// string str = 1; +inline void String::clear_str() { + str_.ClearToEmpty(); +} +inline const std::string& String::str() const { + // @@protoc_insertion_point(field_get:pg_query.String.str) + return _internal_str(); +} +inline void String::set_str(const std::string& value) { + _internal_set_str(value); + // @@protoc_insertion_point(field_set:pg_query.String.str) +} +inline std::string* String::mutable_str() { + // @@protoc_insertion_point(field_mutable:pg_query.String.str) + return _internal_mutable_str(); +} +inline const std::string& String::_internal_str() const { + return str_.Get(); +} +inline void String::_internal_set_str(const std::string& value) { + + str_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArena()); +} +inline void String::set_str(std::string&& value) { + + str_.Set( + ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::move(value), GetArena()); + // @@protoc_insertion_point(field_set_rvalue:pg_query.String.str) +} +inline void String::set_str(const char* value) { + GOOGLE_DCHECK(value != nullptr); + + str_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string(value), GetArena()); + // @@protoc_insertion_point(field_set_char:pg_query.String.str) +} +inline void String::set_str(const char* value, + size_t size) { + + str_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string( + reinterpret_cast(value), size), GetArena()); + // @@protoc_insertion_point(field_set_pointer:pg_query.String.str) +} +inline std::string* String::_internal_mutable_str() { + + return str_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArena()); +} +inline std::string* String::release_str() { + // @@protoc_insertion_point(field_release:pg_query.String.str) + return str_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); +} +inline void String::set_allocated_str(std::string* str) { + if (str != nullptr) { + + } else { + + } + str_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), str, + GetArena()); + // @@protoc_insertion_point(field_set_allocated:pg_query.String.str) +} + +// ------------------------------------------------------------------- + +// BitString + +// string str = 1; +inline void BitString::clear_str() { + str_.ClearToEmpty(); +} +inline const std::string& BitString::str() const { + // @@protoc_insertion_point(field_get:pg_query.BitString.str) + return _internal_str(); +} +inline void BitString::set_str(const std::string& value) { + _internal_set_str(value); + // @@protoc_insertion_point(field_set:pg_query.BitString.str) +} +inline std::string* BitString::mutable_str() { + // @@protoc_insertion_point(field_mutable:pg_query.BitString.str) + return _internal_mutable_str(); +} +inline const std::string& BitString::_internal_str() const { + return str_.Get(); +} +inline void BitString::_internal_set_str(const std::string& value) { + + str_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArena()); +} +inline void BitString::set_str(std::string&& value) { + + str_.Set( + ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::move(value), GetArena()); + // @@protoc_insertion_point(field_set_rvalue:pg_query.BitString.str) +} +inline void BitString::set_str(const char* value) { + GOOGLE_DCHECK(value != nullptr); + + str_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string(value), GetArena()); + // @@protoc_insertion_point(field_set_char:pg_query.BitString.str) +} +inline void BitString::set_str(const char* value, + size_t size) { + + str_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string( + reinterpret_cast(value), size), GetArena()); + // @@protoc_insertion_point(field_set_pointer:pg_query.BitString.str) +} +inline std::string* BitString::_internal_mutable_str() { + + return str_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArena()); +} +inline std::string* BitString::release_str() { + // @@protoc_insertion_point(field_release:pg_query.BitString.str) + return str_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); +} +inline void BitString::set_allocated_str(std::string* str) { + if (str != nullptr) { + + } else { + + } + str_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), str, + GetArena()); + // @@protoc_insertion_point(field_set_allocated:pg_query.BitString.str) +} + +// ------------------------------------------------------------------- + +// Null + +// ------------------------------------------------------------------- + +// List + +// repeated .pg_query.Node items = 1; +inline int List::_internal_items_size() const { + return items_.size(); +} +inline int List::items_size() const { + return _internal_items_size(); +} +inline void List::clear_items() { + items_.Clear(); +} +inline ::pg_query::Node* List::mutable_items(int index) { + // @@protoc_insertion_point(field_mutable:pg_query.List.items) + return items_.Mutable(index); +} +inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* +List::mutable_items() { + // @@protoc_insertion_point(field_mutable_list:pg_query.List.items) + return &items_; +} +inline const ::pg_query::Node& List::_internal_items(int index) const { + return items_.Get(index); +} +inline const ::pg_query::Node& List::items(int index) const { + // @@protoc_insertion_point(field_get:pg_query.List.items) + return _internal_items(index); +} +inline ::pg_query::Node* List::_internal_add_items() { + return items_.Add(); +} +inline ::pg_query::Node* List::add_items() { + // @@protoc_insertion_point(field_add:pg_query.List.items) + return _internal_add_items(); +} +inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& +List::items() const { + // @@protoc_insertion_point(field_list:pg_query.List.items) + return items_; +} + +// ------------------------------------------------------------------- + +// OidList + +// repeated .pg_query.Node items = 1; +inline int OidList::_internal_items_size() const { + return items_.size(); +} +inline int OidList::items_size() const { + return _internal_items_size(); +} +inline void OidList::clear_items() { + items_.Clear(); +} +inline ::pg_query::Node* OidList::mutable_items(int index) { + // @@protoc_insertion_point(field_mutable:pg_query.OidList.items) + return items_.Mutable(index); +} +inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* +OidList::mutable_items() { + // @@protoc_insertion_point(field_mutable_list:pg_query.OidList.items) + return &items_; +} +inline const ::pg_query::Node& OidList::_internal_items(int index) const { + return items_.Get(index); +} +inline const ::pg_query::Node& OidList::items(int index) const { + // @@protoc_insertion_point(field_get:pg_query.OidList.items) + return _internal_items(index); +} +inline ::pg_query::Node* OidList::_internal_add_items() { + return items_.Add(); +} +inline ::pg_query::Node* OidList::add_items() { + // @@protoc_insertion_point(field_add:pg_query.OidList.items) + return _internal_add_items(); +} +inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& +OidList::items() const { + // @@protoc_insertion_point(field_list:pg_query.OidList.items) + return items_; +} + +// ------------------------------------------------------------------- + +// IntList + +// repeated .pg_query.Node items = 1; +inline int IntList::_internal_items_size() const { + return items_.size(); +} +inline int IntList::items_size() const { + return _internal_items_size(); +} +inline void IntList::clear_items() { + items_.Clear(); +} +inline ::pg_query::Node* IntList::mutable_items(int index) { + // @@protoc_insertion_point(field_mutable:pg_query.IntList.items) + return items_.Mutable(index); +} +inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* +IntList::mutable_items() { + // @@protoc_insertion_point(field_mutable_list:pg_query.IntList.items) + return &items_; +} +inline const ::pg_query::Node& IntList::_internal_items(int index) const { + return items_.Get(index); +} +inline const ::pg_query::Node& IntList::items(int index) const { + // @@protoc_insertion_point(field_get:pg_query.IntList.items) + return _internal_items(index); +} +inline ::pg_query::Node* IntList::_internal_add_items() { + return items_.Add(); +} +inline ::pg_query::Node* IntList::add_items() { + // @@protoc_insertion_point(field_add:pg_query.IntList.items) + return _internal_add_items(); +} +inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& +IntList::items() const { + // @@protoc_insertion_point(field_list:pg_query.IntList.items) + return items_; +} + +// ------------------------------------------------------------------- + +// Bitmapset + +// repeated uint64 words = 1; +inline int Bitmapset::_internal_words_size() const { + return words_.size(); +} +inline int Bitmapset::words_size() const { + return _internal_words_size(); +} +inline void Bitmapset::clear_words() { + words_.Clear(); +} +inline ::PROTOBUF_NAMESPACE_ID::uint64 Bitmapset::_internal_words(int index) const { + return words_.Get(index); +} +inline ::PROTOBUF_NAMESPACE_ID::uint64 Bitmapset::words(int index) const { + // @@protoc_insertion_point(field_get:pg_query.Bitmapset.words) + return _internal_words(index); +} +inline void Bitmapset::set_words(int index, ::PROTOBUF_NAMESPACE_ID::uint64 value) { + words_.Set(index, value); + // @@protoc_insertion_point(field_set:pg_query.Bitmapset.words) +} +inline void Bitmapset::_internal_add_words(::PROTOBUF_NAMESPACE_ID::uint64 value) { + words_.Add(value); +} +inline void Bitmapset::add_words(::PROTOBUF_NAMESPACE_ID::uint64 value) { + _internal_add_words(value); + // @@protoc_insertion_point(field_add:pg_query.Bitmapset.words) +} +inline const ::PROTOBUF_NAMESPACE_ID::RepeatedField< ::PROTOBUF_NAMESPACE_ID::uint64 >& +Bitmapset::_internal_words() const { + return words_; +} +inline const ::PROTOBUF_NAMESPACE_ID::RepeatedField< ::PROTOBUF_NAMESPACE_ID::uint64 >& +Bitmapset::words() const { + // @@protoc_insertion_point(field_list:pg_query.Bitmapset.words) + return _internal_words(); +} +inline ::PROTOBUF_NAMESPACE_ID::RepeatedField< ::PROTOBUF_NAMESPACE_ID::uint64 >* +Bitmapset::_internal_mutable_words() { + return &words_; +} +inline ::PROTOBUF_NAMESPACE_ID::RepeatedField< ::PROTOBUF_NAMESPACE_ID::uint64 >* +Bitmapset::mutable_words() { + // @@protoc_insertion_point(field_mutable_list:pg_query.Bitmapset.words) + return _internal_mutable_words(); +} + +// ------------------------------------------------------------------- + +// Alias + +// string aliasname = 1 [json_name = "aliasname"]; +inline void Alias::clear_aliasname() { + aliasname_.ClearToEmpty(); +} +inline const std::string& Alias::aliasname() const { + // @@protoc_insertion_point(field_get:pg_query.Alias.aliasname) + return _internal_aliasname(); +} +inline void Alias::set_aliasname(const std::string& value) { + _internal_set_aliasname(value); + // @@protoc_insertion_point(field_set:pg_query.Alias.aliasname) +} +inline std::string* Alias::mutable_aliasname() { + // @@protoc_insertion_point(field_mutable:pg_query.Alias.aliasname) + return _internal_mutable_aliasname(); +} +inline const std::string& Alias::_internal_aliasname() const { + return aliasname_.Get(); +} +inline void Alias::_internal_set_aliasname(const std::string& value) { + + aliasname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArena()); +} +inline void Alias::set_aliasname(std::string&& value) { + + aliasname_.Set( + ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::move(value), GetArena()); + // @@protoc_insertion_point(field_set_rvalue:pg_query.Alias.aliasname) +} +inline void Alias::set_aliasname(const char* value) { + GOOGLE_DCHECK(value != nullptr); + + aliasname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string(value), GetArena()); + // @@protoc_insertion_point(field_set_char:pg_query.Alias.aliasname) +} +inline void Alias::set_aliasname(const char* value, + size_t size) { + + aliasname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string( + reinterpret_cast(value), size), GetArena()); + // @@protoc_insertion_point(field_set_pointer:pg_query.Alias.aliasname) +} +inline std::string* Alias::_internal_mutable_aliasname() { + + return aliasname_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArena()); +} +inline std::string* Alias::release_aliasname() { + // @@protoc_insertion_point(field_release:pg_query.Alias.aliasname) + return aliasname_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); +} +inline void Alias::set_allocated_aliasname(std::string* aliasname) { + if (aliasname != nullptr) { + + } else { + + } + aliasname_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), aliasname, + GetArena()); + // @@protoc_insertion_point(field_set_allocated:pg_query.Alias.aliasname) +} + +// repeated .pg_query.Node colnames = 2 [json_name = "colnames"]; +inline int Alias::_internal_colnames_size() const { + return colnames_.size(); +} +inline int Alias::colnames_size() const { + return _internal_colnames_size(); +} +inline void Alias::clear_colnames() { + colnames_.Clear(); +} +inline ::pg_query::Node* Alias::mutable_colnames(int index) { + // @@protoc_insertion_point(field_mutable:pg_query.Alias.colnames) + return colnames_.Mutable(index); +} +inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* +Alias::mutable_colnames() { + // @@protoc_insertion_point(field_mutable_list:pg_query.Alias.colnames) + return &colnames_; +} +inline const ::pg_query::Node& Alias::_internal_colnames(int index) const { + return colnames_.Get(index); +} +inline const ::pg_query::Node& Alias::colnames(int index) const { + // @@protoc_insertion_point(field_get:pg_query.Alias.colnames) + return _internal_colnames(index); +} +inline ::pg_query::Node* Alias::_internal_add_colnames() { + return colnames_.Add(); +} +inline ::pg_query::Node* Alias::add_colnames() { + // @@protoc_insertion_point(field_add:pg_query.Alias.colnames) + return _internal_add_colnames(); +} +inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& +Alias::colnames() const { + // @@protoc_insertion_point(field_list:pg_query.Alias.colnames) + return colnames_; +} + +// ------------------------------------------------------------------- + +// RangeVar + +// string catalogname = 1 [json_name = "catalogname"]; +inline void RangeVar::clear_catalogname() { + catalogname_.ClearToEmpty(); +} +inline const std::string& RangeVar::catalogname() const { + // @@protoc_insertion_point(field_get:pg_query.RangeVar.catalogname) + return _internal_catalogname(); +} +inline void RangeVar::set_catalogname(const std::string& value) { + _internal_set_catalogname(value); + // @@protoc_insertion_point(field_set:pg_query.RangeVar.catalogname) +} +inline std::string* RangeVar::mutable_catalogname() { + // @@protoc_insertion_point(field_mutable:pg_query.RangeVar.catalogname) + return _internal_mutable_catalogname(); +} +inline const std::string& RangeVar::_internal_catalogname() const { + return catalogname_.Get(); +} +inline void RangeVar::_internal_set_catalogname(const std::string& value) { + + catalogname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArena()); +} +inline void RangeVar::set_catalogname(std::string&& value) { + + catalogname_.Set( + ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::move(value), GetArena()); + // @@protoc_insertion_point(field_set_rvalue:pg_query.RangeVar.catalogname) +} +inline void RangeVar::set_catalogname(const char* value) { + GOOGLE_DCHECK(value != nullptr); + + catalogname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string(value), GetArena()); + // @@protoc_insertion_point(field_set_char:pg_query.RangeVar.catalogname) +} +inline void RangeVar::set_catalogname(const char* value, + size_t size) { + + catalogname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string( + reinterpret_cast(value), size), GetArena()); + // @@protoc_insertion_point(field_set_pointer:pg_query.RangeVar.catalogname) +} +inline std::string* RangeVar::_internal_mutable_catalogname() { + + return catalogname_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArena()); +} +inline std::string* RangeVar::release_catalogname() { + // @@protoc_insertion_point(field_release:pg_query.RangeVar.catalogname) + return catalogname_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); +} +inline void RangeVar::set_allocated_catalogname(std::string* catalogname) { + if (catalogname != nullptr) { + + } else { + + } + catalogname_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), catalogname, + GetArena()); + // @@protoc_insertion_point(field_set_allocated:pg_query.RangeVar.catalogname) +} + +// string schemaname = 2 [json_name = "schemaname"]; +inline void RangeVar::clear_schemaname() { + schemaname_.ClearToEmpty(); +} +inline const std::string& RangeVar::schemaname() const { + // @@protoc_insertion_point(field_get:pg_query.RangeVar.schemaname) + return _internal_schemaname(); +} +inline void RangeVar::set_schemaname(const std::string& value) { + _internal_set_schemaname(value); + // @@protoc_insertion_point(field_set:pg_query.RangeVar.schemaname) +} +inline std::string* RangeVar::mutable_schemaname() { + // @@protoc_insertion_point(field_mutable:pg_query.RangeVar.schemaname) + return _internal_mutable_schemaname(); +} +inline const std::string& RangeVar::_internal_schemaname() const { + return schemaname_.Get(); +} +inline void RangeVar::_internal_set_schemaname(const std::string& value) { + + schemaname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArena()); +} +inline void RangeVar::set_schemaname(std::string&& value) { + + schemaname_.Set( + ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::move(value), GetArena()); + // @@protoc_insertion_point(field_set_rvalue:pg_query.RangeVar.schemaname) +} +inline void RangeVar::set_schemaname(const char* value) { + GOOGLE_DCHECK(value != nullptr); + + schemaname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string(value), GetArena()); + // @@protoc_insertion_point(field_set_char:pg_query.RangeVar.schemaname) +} +inline void RangeVar::set_schemaname(const char* value, + size_t size) { + + schemaname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string( + reinterpret_cast(value), size), GetArena()); + // @@protoc_insertion_point(field_set_pointer:pg_query.RangeVar.schemaname) +} +inline std::string* RangeVar::_internal_mutable_schemaname() { + + return schemaname_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArena()); +} +inline std::string* RangeVar::release_schemaname() { + // @@protoc_insertion_point(field_release:pg_query.RangeVar.schemaname) + return schemaname_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); +} +inline void RangeVar::set_allocated_schemaname(std::string* schemaname) { + if (schemaname != nullptr) { + + } else { + + } + schemaname_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), schemaname, + GetArena()); + // @@protoc_insertion_point(field_set_allocated:pg_query.RangeVar.schemaname) +} + +// string relname = 3 [json_name = "relname"]; +inline void RangeVar::clear_relname() { + relname_.ClearToEmpty(); +} +inline const std::string& RangeVar::relname() const { + // @@protoc_insertion_point(field_get:pg_query.RangeVar.relname) + return _internal_relname(); +} +inline void RangeVar::set_relname(const std::string& value) { + _internal_set_relname(value); + // @@protoc_insertion_point(field_set:pg_query.RangeVar.relname) +} +inline std::string* RangeVar::mutable_relname() { + // @@protoc_insertion_point(field_mutable:pg_query.RangeVar.relname) + return _internal_mutable_relname(); +} +inline const std::string& RangeVar::_internal_relname() const { + return relname_.Get(); +} +inline void RangeVar::_internal_set_relname(const std::string& value) { + + relname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArena()); +} +inline void RangeVar::set_relname(std::string&& value) { + + relname_.Set( + ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::move(value), GetArena()); + // @@protoc_insertion_point(field_set_rvalue:pg_query.RangeVar.relname) +} +inline void RangeVar::set_relname(const char* value) { + GOOGLE_DCHECK(value != nullptr); + + relname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string(value), GetArena()); + // @@protoc_insertion_point(field_set_char:pg_query.RangeVar.relname) +} +inline void RangeVar::set_relname(const char* value, + size_t size) { + + relname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string( + reinterpret_cast(value), size), GetArena()); + // @@protoc_insertion_point(field_set_pointer:pg_query.RangeVar.relname) +} +inline std::string* RangeVar::_internal_mutable_relname() { + + return relname_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArena()); +} +inline std::string* RangeVar::release_relname() { + // @@protoc_insertion_point(field_release:pg_query.RangeVar.relname) + return relname_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); +} +inline void RangeVar::set_allocated_relname(std::string* relname) { + if (relname != nullptr) { + + } else { + + } + relname_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), relname, + GetArena()); + // @@protoc_insertion_point(field_set_allocated:pg_query.RangeVar.relname) +} + +// bool inh = 4 [json_name = "inh"]; +inline void RangeVar::clear_inh() { + inh_ = false; +} +inline bool RangeVar::_internal_inh() const { + return inh_; +} +inline bool RangeVar::inh() const { + // @@protoc_insertion_point(field_get:pg_query.RangeVar.inh) + return _internal_inh(); +} +inline void RangeVar::_internal_set_inh(bool value) { + + inh_ = value; +} +inline void RangeVar::set_inh(bool value) { + _internal_set_inh(value); + // @@protoc_insertion_point(field_set:pg_query.RangeVar.inh) +} + +// string relpersistence = 5 [json_name = "relpersistence"]; +inline void RangeVar::clear_relpersistence() { + relpersistence_.ClearToEmpty(); +} +inline const std::string& RangeVar::relpersistence() const { + // @@protoc_insertion_point(field_get:pg_query.RangeVar.relpersistence) + return _internal_relpersistence(); +} +inline void RangeVar::set_relpersistence(const std::string& value) { + _internal_set_relpersistence(value); + // @@protoc_insertion_point(field_set:pg_query.RangeVar.relpersistence) +} +inline std::string* RangeVar::mutable_relpersistence() { + // @@protoc_insertion_point(field_mutable:pg_query.RangeVar.relpersistence) + return _internal_mutable_relpersistence(); +} +inline const std::string& RangeVar::_internal_relpersistence() const { + return relpersistence_.Get(); +} +inline void RangeVar::_internal_set_relpersistence(const std::string& value) { + + relpersistence_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArena()); +} +inline void RangeVar::set_relpersistence(std::string&& value) { + + relpersistence_.Set( + ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::move(value), GetArena()); + // @@protoc_insertion_point(field_set_rvalue:pg_query.RangeVar.relpersistence) +} +inline void RangeVar::set_relpersistence(const char* value) { + GOOGLE_DCHECK(value != nullptr); + + relpersistence_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string(value), GetArena()); + // @@protoc_insertion_point(field_set_char:pg_query.RangeVar.relpersistence) +} +inline void RangeVar::set_relpersistence(const char* value, + size_t size) { + + relpersistence_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string( + reinterpret_cast(value), size), GetArena()); + // @@protoc_insertion_point(field_set_pointer:pg_query.RangeVar.relpersistence) +} +inline std::string* RangeVar::_internal_mutable_relpersistence() { + + return relpersistence_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArena()); +} +inline std::string* RangeVar::release_relpersistence() { + // @@protoc_insertion_point(field_release:pg_query.RangeVar.relpersistence) + return relpersistence_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); +} +inline void RangeVar::set_allocated_relpersistence(std::string* relpersistence) { + if (relpersistence != nullptr) { + + } else { + + } + relpersistence_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), relpersistence, + GetArena()); + // @@protoc_insertion_point(field_set_allocated:pg_query.RangeVar.relpersistence) +} + +// .pg_query.Alias alias = 6 [json_name = "alias"]; +inline bool RangeVar::_internal_has_alias() const { + return this != internal_default_instance() && alias_ != nullptr; +} +inline bool RangeVar::has_alias() const { + return _internal_has_alias(); +} +inline void RangeVar::clear_alias() { + if (GetArena() == nullptr && alias_ != nullptr) { + delete alias_; + } + alias_ = nullptr; +} +inline const ::pg_query::Alias& RangeVar::_internal_alias() const { + const ::pg_query::Alias* p = alias_; + return p != nullptr ? *p : reinterpret_cast( + ::pg_query::_Alias_default_instance_); +} +inline const ::pg_query::Alias& RangeVar::alias() const { + // @@protoc_insertion_point(field_get:pg_query.RangeVar.alias) + return _internal_alias(); +} +inline void RangeVar::unsafe_arena_set_allocated_alias( + ::pg_query::Alias* alias) { + if (GetArena() == nullptr) { + delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(alias_); + } + alias_ = alias; + if (alias) { + + } else { + + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.RangeVar.alias) +} +inline ::pg_query::Alias* RangeVar::release_alias() { + + ::pg_query::Alias* temp = alias_; + alias_ = nullptr; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + return temp; +} +inline ::pg_query::Alias* RangeVar::unsafe_arena_release_alias() { + // @@protoc_insertion_point(field_release:pg_query.RangeVar.alias) + + ::pg_query::Alias* temp = alias_; + alias_ = nullptr; + return temp; +} +inline ::pg_query::Alias* RangeVar::_internal_mutable_alias() { + + if (alias_ == nullptr) { + auto* p = CreateMaybeMessage<::pg_query::Alias>(GetArena()); + alias_ = p; + } + return alias_; +} +inline ::pg_query::Alias* RangeVar::mutable_alias() { + // @@protoc_insertion_point(field_mutable:pg_query.RangeVar.alias) + return _internal_mutable_alias(); +} +inline void RangeVar::set_allocated_alias(::pg_query::Alias* alias) { + ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); + if (message_arena == nullptr) { + delete alias_; + } + if (alias) { + ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = + ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(alias); + if (message_arena != submessage_arena) { + alias = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( + message_arena, alias, submessage_arena); + } + + } else { + + } + alias_ = alias; + // @@protoc_insertion_point(field_set_allocated:pg_query.RangeVar.alias) +} + +// int32 location = 7 [json_name = "location"]; +inline void RangeVar::clear_location() { + location_ = 0; +} +inline ::PROTOBUF_NAMESPACE_ID::int32 RangeVar::_internal_location() const { + return location_; +} +inline ::PROTOBUF_NAMESPACE_ID::int32 RangeVar::location() const { + // @@protoc_insertion_point(field_get:pg_query.RangeVar.location) + return _internal_location(); +} +inline void RangeVar::_internal_set_location(::PROTOBUF_NAMESPACE_ID::int32 value) { + + location_ = value; +} +inline void RangeVar::set_location(::PROTOBUF_NAMESPACE_ID::int32 value) { + _internal_set_location(value); + // @@protoc_insertion_point(field_set:pg_query.RangeVar.location) +} + +// ------------------------------------------------------------------- + +// TableFunc + +// repeated .pg_query.Node ns_uris = 1 [json_name = "ns_uris"]; +inline int TableFunc::_internal_ns_uris_size() const { + return ns_uris_.size(); +} +inline int TableFunc::ns_uris_size() const { + return _internal_ns_uris_size(); +} +inline void TableFunc::clear_ns_uris() { + ns_uris_.Clear(); +} +inline ::pg_query::Node* TableFunc::mutable_ns_uris(int index) { + // @@protoc_insertion_point(field_mutable:pg_query.TableFunc.ns_uris) + return ns_uris_.Mutable(index); +} +inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* +TableFunc::mutable_ns_uris() { + // @@protoc_insertion_point(field_mutable_list:pg_query.TableFunc.ns_uris) + return &ns_uris_; +} +inline const ::pg_query::Node& TableFunc::_internal_ns_uris(int index) const { + return ns_uris_.Get(index); +} +inline const ::pg_query::Node& TableFunc::ns_uris(int index) const { + // @@protoc_insertion_point(field_get:pg_query.TableFunc.ns_uris) + return _internal_ns_uris(index); +} +inline ::pg_query::Node* TableFunc::_internal_add_ns_uris() { + return ns_uris_.Add(); +} +inline ::pg_query::Node* TableFunc::add_ns_uris() { + // @@protoc_insertion_point(field_add:pg_query.TableFunc.ns_uris) + return _internal_add_ns_uris(); +} +inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& +TableFunc::ns_uris() const { + // @@protoc_insertion_point(field_list:pg_query.TableFunc.ns_uris) + return ns_uris_; +} + +// repeated .pg_query.Node ns_names = 2 [json_name = "ns_names"]; +inline int TableFunc::_internal_ns_names_size() const { + return ns_names_.size(); +} +inline int TableFunc::ns_names_size() const { + return _internal_ns_names_size(); +} +inline void TableFunc::clear_ns_names() { + ns_names_.Clear(); +} +inline ::pg_query::Node* TableFunc::mutable_ns_names(int index) { + // @@protoc_insertion_point(field_mutable:pg_query.TableFunc.ns_names) + return ns_names_.Mutable(index); +} +inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* +TableFunc::mutable_ns_names() { + // @@protoc_insertion_point(field_mutable_list:pg_query.TableFunc.ns_names) + return &ns_names_; +} +inline const ::pg_query::Node& TableFunc::_internal_ns_names(int index) const { + return ns_names_.Get(index); +} +inline const ::pg_query::Node& TableFunc::ns_names(int index) const { + // @@protoc_insertion_point(field_get:pg_query.TableFunc.ns_names) + return _internal_ns_names(index); +} +inline ::pg_query::Node* TableFunc::_internal_add_ns_names() { + return ns_names_.Add(); +} +inline ::pg_query::Node* TableFunc::add_ns_names() { + // @@protoc_insertion_point(field_add:pg_query.TableFunc.ns_names) + return _internal_add_ns_names(); +} +inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& +TableFunc::ns_names() const { + // @@protoc_insertion_point(field_list:pg_query.TableFunc.ns_names) + return ns_names_; +} + +// .pg_query.Node docexpr = 3 [json_name = "docexpr"]; +inline bool TableFunc::_internal_has_docexpr() const { + return this != internal_default_instance() && docexpr_ != nullptr; +} +inline bool TableFunc::has_docexpr() const { + return _internal_has_docexpr(); +} +inline void TableFunc::clear_docexpr() { + if (GetArena() == nullptr && docexpr_ != nullptr) { + delete docexpr_; + } + docexpr_ = nullptr; +} +inline const ::pg_query::Node& TableFunc::_internal_docexpr() const { + const ::pg_query::Node* p = docexpr_; + return p != nullptr ? *p : reinterpret_cast( + ::pg_query::_Node_default_instance_); +} +inline const ::pg_query::Node& TableFunc::docexpr() const { + // @@protoc_insertion_point(field_get:pg_query.TableFunc.docexpr) + return _internal_docexpr(); +} +inline void TableFunc::unsafe_arena_set_allocated_docexpr( + ::pg_query::Node* docexpr) { + if (GetArena() == nullptr) { + delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(docexpr_); + } + docexpr_ = docexpr; + if (docexpr) { + + } else { + + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.TableFunc.docexpr) +} +inline ::pg_query::Node* TableFunc::release_docexpr() { + + ::pg_query::Node* temp = docexpr_; + docexpr_ = nullptr; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + return temp; +} +inline ::pg_query::Node* TableFunc::unsafe_arena_release_docexpr() { + // @@protoc_insertion_point(field_release:pg_query.TableFunc.docexpr) + + ::pg_query::Node* temp = docexpr_; + docexpr_ = nullptr; + return temp; +} +inline ::pg_query::Node* TableFunc::_internal_mutable_docexpr() { + + if (docexpr_ == nullptr) { + auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); + docexpr_ = p; + } + return docexpr_; +} +inline ::pg_query::Node* TableFunc::mutable_docexpr() { + // @@protoc_insertion_point(field_mutable:pg_query.TableFunc.docexpr) + return _internal_mutable_docexpr(); +} +inline void TableFunc::set_allocated_docexpr(::pg_query::Node* docexpr) { + ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); + if (message_arena == nullptr) { + delete docexpr_; + } + if (docexpr) { + ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = + ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(docexpr); + if (message_arena != submessage_arena) { + docexpr = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( + message_arena, docexpr, submessage_arena); + } + + } else { + + } + docexpr_ = docexpr; + // @@protoc_insertion_point(field_set_allocated:pg_query.TableFunc.docexpr) +} + +// .pg_query.Node rowexpr = 4 [json_name = "rowexpr"]; +inline bool TableFunc::_internal_has_rowexpr() const { + return this != internal_default_instance() && rowexpr_ != nullptr; +} +inline bool TableFunc::has_rowexpr() const { + return _internal_has_rowexpr(); +} +inline void TableFunc::clear_rowexpr() { + if (GetArena() == nullptr && rowexpr_ != nullptr) { + delete rowexpr_; + } + rowexpr_ = nullptr; +} +inline const ::pg_query::Node& TableFunc::_internal_rowexpr() const { + const ::pg_query::Node* p = rowexpr_; + return p != nullptr ? *p : reinterpret_cast( + ::pg_query::_Node_default_instance_); +} +inline const ::pg_query::Node& TableFunc::rowexpr() const { + // @@protoc_insertion_point(field_get:pg_query.TableFunc.rowexpr) + return _internal_rowexpr(); +} +inline void TableFunc::unsafe_arena_set_allocated_rowexpr( + ::pg_query::Node* rowexpr) { + if (GetArena() == nullptr) { + delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(rowexpr_); + } + rowexpr_ = rowexpr; + if (rowexpr) { + + } else { + + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.TableFunc.rowexpr) +} +inline ::pg_query::Node* TableFunc::release_rowexpr() { + + ::pg_query::Node* temp = rowexpr_; + rowexpr_ = nullptr; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + return temp; +} +inline ::pg_query::Node* TableFunc::unsafe_arena_release_rowexpr() { + // @@protoc_insertion_point(field_release:pg_query.TableFunc.rowexpr) + + ::pg_query::Node* temp = rowexpr_; + rowexpr_ = nullptr; + return temp; +} +inline ::pg_query::Node* TableFunc::_internal_mutable_rowexpr() { + + if (rowexpr_ == nullptr) { + auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); + rowexpr_ = p; + } + return rowexpr_; +} +inline ::pg_query::Node* TableFunc::mutable_rowexpr() { + // @@protoc_insertion_point(field_mutable:pg_query.TableFunc.rowexpr) + return _internal_mutable_rowexpr(); +} +inline void TableFunc::set_allocated_rowexpr(::pg_query::Node* rowexpr) { + ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); + if (message_arena == nullptr) { + delete rowexpr_; + } + if (rowexpr) { + ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = + ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(rowexpr); + if (message_arena != submessage_arena) { + rowexpr = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( + message_arena, rowexpr, submessage_arena); + } + + } else { + + } + rowexpr_ = rowexpr; + // @@protoc_insertion_point(field_set_allocated:pg_query.TableFunc.rowexpr) +} + +// repeated .pg_query.Node colnames = 5 [json_name = "colnames"]; +inline int TableFunc::_internal_colnames_size() const { + return colnames_.size(); +} +inline int TableFunc::colnames_size() const { + return _internal_colnames_size(); +} +inline void TableFunc::clear_colnames() { + colnames_.Clear(); +} +inline ::pg_query::Node* TableFunc::mutable_colnames(int index) { + // @@protoc_insertion_point(field_mutable:pg_query.TableFunc.colnames) + return colnames_.Mutable(index); +} +inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* +TableFunc::mutable_colnames() { + // @@protoc_insertion_point(field_mutable_list:pg_query.TableFunc.colnames) + return &colnames_; +} +inline const ::pg_query::Node& TableFunc::_internal_colnames(int index) const { + return colnames_.Get(index); +} +inline const ::pg_query::Node& TableFunc::colnames(int index) const { + // @@protoc_insertion_point(field_get:pg_query.TableFunc.colnames) + return _internal_colnames(index); +} +inline ::pg_query::Node* TableFunc::_internal_add_colnames() { + return colnames_.Add(); +} +inline ::pg_query::Node* TableFunc::add_colnames() { + // @@protoc_insertion_point(field_add:pg_query.TableFunc.colnames) + return _internal_add_colnames(); +} +inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& +TableFunc::colnames() const { + // @@protoc_insertion_point(field_list:pg_query.TableFunc.colnames) + return colnames_; +} + +// repeated .pg_query.Node coltypes = 6 [json_name = "coltypes"]; +inline int TableFunc::_internal_coltypes_size() const { + return coltypes_.size(); +} +inline int TableFunc::coltypes_size() const { + return _internal_coltypes_size(); +} +inline void TableFunc::clear_coltypes() { + coltypes_.Clear(); +} +inline ::pg_query::Node* TableFunc::mutable_coltypes(int index) { + // @@protoc_insertion_point(field_mutable:pg_query.TableFunc.coltypes) + return coltypes_.Mutable(index); +} +inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* +TableFunc::mutable_coltypes() { + // @@protoc_insertion_point(field_mutable_list:pg_query.TableFunc.coltypes) + return &coltypes_; +} +inline const ::pg_query::Node& TableFunc::_internal_coltypes(int index) const { + return coltypes_.Get(index); +} +inline const ::pg_query::Node& TableFunc::coltypes(int index) const { + // @@protoc_insertion_point(field_get:pg_query.TableFunc.coltypes) + return _internal_coltypes(index); +} +inline ::pg_query::Node* TableFunc::_internal_add_coltypes() { + return coltypes_.Add(); +} +inline ::pg_query::Node* TableFunc::add_coltypes() { + // @@protoc_insertion_point(field_add:pg_query.TableFunc.coltypes) + return _internal_add_coltypes(); +} +inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& +TableFunc::coltypes() const { + // @@protoc_insertion_point(field_list:pg_query.TableFunc.coltypes) + return coltypes_; +} + +// repeated .pg_query.Node coltypmods = 7 [json_name = "coltypmods"]; +inline int TableFunc::_internal_coltypmods_size() const { + return coltypmods_.size(); +} +inline int TableFunc::coltypmods_size() const { + return _internal_coltypmods_size(); +} +inline void TableFunc::clear_coltypmods() { + coltypmods_.Clear(); +} +inline ::pg_query::Node* TableFunc::mutable_coltypmods(int index) { + // @@protoc_insertion_point(field_mutable:pg_query.TableFunc.coltypmods) + return coltypmods_.Mutable(index); +} +inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* +TableFunc::mutable_coltypmods() { + // @@protoc_insertion_point(field_mutable_list:pg_query.TableFunc.coltypmods) + return &coltypmods_; +} +inline const ::pg_query::Node& TableFunc::_internal_coltypmods(int index) const { + return coltypmods_.Get(index); +} +inline const ::pg_query::Node& TableFunc::coltypmods(int index) const { + // @@protoc_insertion_point(field_get:pg_query.TableFunc.coltypmods) + return _internal_coltypmods(index); +} +inline ::pg_query::Node* TableFunc::_internal_add_coltypmods() { + return coltypmods_.Add(); +} +inline ::pg_query::Node* TableFunc::add_coltypmods() { + // @@protoc_insertion_point(field_add:pg_query.TableFunc.coltypmods) + return _internal_add_coltypmods(); +} +inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& +TableFunc::coltypmods() const { + // @@protoc_insertion_point(field_list:pg_query.TableFunc.coltypmods) + return coltypmods_; +} + +// repeated .pg_query.Node colcollations = 8 [json_name = "colcollations"]; +inline int TableFunc::_internal_colcollations_size() const { + return colcollations_.size(); +} +inline int TableFunc::colcollations_size() const { + return _internal_colcollations_size(); +} +inline void TableFunc::clear_colcollations() { + colcollations_.Clear(); +} +inline ::pg_query::Node* TableFunc::mutable_colcollations(int index) { + // @@protoc_insertion_point(field_mutable:pg_query.TableFunc.colcollations) + return colcollations_.Mutable(index); +} +inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* +TableFunc::mutable_colcollations() { + // @@protoc_insertion_point(field_mutable_list:pg_query.TableFunc.colcollations) + return &colcollations_; +} +inline const ::pg_query::Node& TableFunc::_internal_colcollations(int index) const { + return colcollations_.Get(index); +} +inline const ::pg_query::Node& TableFunc::colcollations(int index) const { + // @@protoc_insertion_point(field_get:pg_query.TableFunc.colcollations) + return _internal_colcollations(index); +} +inline ::pg_query::Node* TableFunc::_internal_add_colcollations() { + return colcollations_.Add(); +} +inline ::pg_query::Node* TableFunc::add_colcollations() { + // @@protoc_insertion_point(field_add:pg_query.TableFunc.colcollations) + return _internal_add_colcollations(); +} +inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& +TableFunc::colcollations() const { + // @@protoc_insertion_point(field_list:pg_query.TableFunc.colcollations) + return colcollations_; +} + +// repeated .pg_query.Node colexprs = 9 [json_name = "colexprs"]; +inline int TableFunc::_internal_colexprs_size() const { + return colexprs_.size(); +} +inline int TableFunc::colexprs_size() const { + return _internal_colexprs_size(); +} +inline void TableFunc::clear_colexprs() { + colexprs_.Clear(); +} +inline ::pg_query::Node* TableFunc::mutable_colexprs(int index) { + // @@protoc_insertion_point(field_mutable:pg_query.TableFunc.colexprs) + return colexprs_.Mutable(index); +} +inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* +TableFunc::mutable_colexprs() { + // @@protoc_insertion_point(field_mutable_list:pg_query.TableFunc.colexprs) + return &colexprs_; +} +inline const ::pg_query::Node& TableFunc::_internal_colexprs(int index) const { + return colexprs_.Get(index); +} +inline const ::pg_query::Node& TableFunc::colexprs(int index) const { + // @@protoc_insertion_point(field_get:pg_query.TableFunc.colexprs) + return _internal_colexprs(index); +} +inline ::pg_query::Node* TableFunc::_internal_add_colexprs() { + return colexprs_.Add(); +} +inline ::pg_query::Node* TableFunc::add_colexprs() { + // @@protoc_insertion_point(field_add:pg_query.TableFunc.colexprs) + return _internal_add_colexprs(); +} +inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& +TableFunc::colexprs() const { + // @@protoc_insertion_point(field_list:pg_query.TableFunc.colexprs) + return colexprs_; +} + +// repeated .pg_query.Node coldefexprs = 10 [json_name = "coldefexprs"]; +inline int TableFunc::_internal_coldefexprs_size() const { + return coldefexprs_.size(); +} +inline int TableFunc::coldefexprs_size() const { + return _internal_coldefexprs_size(); +} +inline void TableFunc::clear_coldefexprs() { + coldefexprs_.Clear(); +} +inline ::pg_query::Node* TableFunc::mutable_coldefexprs(int index) { + // @@protoc_insertion_point(field_mutable:pg_query.TableFunc.coldefexprs) + return coldefexprs_.Mutable(index); +} +inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* +TableFunc::mutable_coldefexprs() { + // @@protoc_insertion_point(field_mutable_list:pg_query.TableFunc.coldefexprs) + return &coldefexprs_; +} +inline const ::pg_query::Node& TableFunc::_internal_coldefexprs(int index) const { + return coldefexprs_.Get(index); +} +inline const ::pg_query::Node& TableFunc::coldefexprs(int index) const { + // @@protoc_insertion_point(field_get:pg_query.TableFunc.coldefexprs) + return _internal_coldefexprs(index); +} +inline ::pg_query::Node* TableFunc::_internal_add_coldefexprs() { + return coldefexprs_.Add(); +} +inline ::pg_query::Node* TableFunc::add_coldefexprs() { + // @@protoc_insertion_point(field_add:pg_query.TableFunc.coldefexprs) + return _internal_add_coldefexprs(); +} +inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& +TableFunc::coldefexprs() const { + // @@protoc_insertion_point(field_list:pg_query.TableFunc.coldefexprs) + return coldefexprs_; +} + +// int32 ordinalitycol = 11 [json_name = "ordinalitycol"]; +inline void TableFunc::clear_ordinalitycol() { + ordinalitycol_ = 0; +} +inline ::PROTOBUF_NAMESPACE_ID::int32 TableFunc::_internal_ordinalitycol() const { + return ordinalitycol_; +} +inline ::PROTOBUF_NAMESPACE_ID::int32 TableFunc::ordinalitycol() const { + // @@protoc_insertion_point(field_get:pg_query.TableFunc.ordinalitycol) + return _internal_ordinalitycol(); +} +inline void TableFunc::_internal_set_ordinalitycol(::PROTOBUF_NAMESPACE_ID::int32 value) { + + ordinalitycol_ = value; +} +inline void TableFunc::set_ordinalitycol(::PROTOBUF_NAMESPACE_ID::int32 value) { + _internal_set_ordinalitycol(value); + // @@protoc_insertion_point(field_set:pg_query.TableFunc.ordinalitycol) +} + +// int32 location = 12 [json_name = "location"]; +inline void TableFunc::clear_location() { + location_ = 0; +} +inline ::PROTOBUF_NAMESPACE_ID::int32 TableFunc::_internal_location() const { + return location_; +} +inline ::PROTOBUF_NAMESPACE_ID::int32 TableFunc::location() const { + // @@protoc_insertion_point(field_get:pg_query.TableFunc.location) + return _internal_location(); +} +inline void TableFunc::_internal_set_location(::PROTOBUF_NAMESPACE_ID::int32 value) { + + location_ = value; +} +inline void TableFunc::set_location(::PROTOBUF_NAMESPACE_ID::int32 value) { + _internal_set_location(value); + // @@protoc_insertion_point(field_set:pg_query.TableFunc.location) +} + +// ------------------------------------------------------------------- + +// Expr + +// ------------------------------------------------------------------- + +// Var + +// .pg_query.Node xpr = 1 [json_name = "xpr"]; +inline bool Var::_internal_has_xpr() const { + return this != internal_default_instance() && xpr_ != nullptr; +} +inline bool Var::has_xpr() const { + return _internal_has_xpr(); +} +inline void Var::clear_xpr() { + if (GetArena() == nullptr && xpr_ != nullptr) { + delete xpr_; + } + xpr_ = nullptr; +} +inline const ::pg_query::Node& Var::_internal_xpr() const { + const ::pg_query::Node* p = xpr_; + return p != nullptr ? *p : reinterpret_cast( + ::pg_query::_Node_default_instance_); +} +inline const ::pg_query::Node& Var::xpr() const { + // @@protoc_insertion_point(field_get:pg_query.Var.xpr) + return _internal_xpr(); +} +inline void Var::unsafe_arena_set_allocated_xpr( + ::pg_query::Node* xpr) { + if (GetArena() == nullptr) { + delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(xpr_); + } + xpr_ = xpr; + if (xpr) { + + } else { + + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Var.xpr) +} +inline ::pg_query::Node* Var::release_xpr() { + + ::pg_query::Node* temp = xpr_; + xpr_ = nullptr; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + return temp; +} +inline ::pg_query::Node* Var::unsafe_arena_release_xpr() { + // @@protoc_insertion_point(field_release:pg_query.Var.xpr) + + ::pg_query::Node* temp = xpr_; + xpr_ = nullptr; + return temp; +} +inline ::pg_query::Node* Var::_internal_mutable_xpr() { + + if (xpr_ == nullptr) { + auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); + xpr_ = p; + } + return xpr_; +} +inline ::pg_query::Node* Var::mutable_xpr() { + // @@protoc_insertion_point(field_mutable:pg_query.Var.xpr) + return _internal_mutable_xpr(); +} +inline void Var::set_allocated_xpr(::pg_query::Node* xpr) { + ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); + if (message_arena == nullptr) { + delete xpr_; + } + if (xpr) { + ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = + ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(xpr); + if (message_arena != submessage_arena) { + xpr = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( + message_arena, xpr, submessage_arena); + } + + } else { + + } + xpr_ = xpr; + // @@protoc_insertion_point(field_set_allocated:pg_query.Var.xpr) +} + +// uint32 varno = 2 [json_name = "varno"]; +inline void Var::clear_varno() { + varno_ = 0u; +} +inline ::PROTOBUF_NAMESPACE_ID::uint32 Var::_internal_varno() const { + return varno_; +} +inline ::PROTOBUF_NAMESPACE_ID::uint32 Var::varno() const { + // @@protoc_insertion_point(field_get:pg_query.Var.varno) + return _internal_varno(); +} +inline void Var::_internal_set_varno(::PROTOBUF_NAMESPACE_ID::uint32 value) { + + varno_ = value; +} +inline void Var::set_varno(::PROTOBUF_NAMESPACE_ID::uint32 value) { + _internal_set_varno(value); + // @@protoc_insertion_point(field_set:pg_query.Var.varno) +} + +// int32 varattno = 3 [json_name = "varattno"]; +inline void Var::clear_varattno() { + varattno_ = 0; +} +inline ::PROTOBUF_NAMESPACE_ID::int32 Var::_internal_varattno() const { + return varattno_; +} +inline ::PROTOBUF_NAMESPACE_ID::int32 Var::varattno() const { + // @@protoc_insertion_point(field_get:pg_query.Var.varattno) + return _internal_varattno(); +} +inline void Var::_internal_set_varattno(::PROTOBUF_NAMESPACE_ID::int32 value) { + + varattno_ = value; +} +inline void Var::set_varattno(::PROTOBUF_NAMESPACE_ID::int32 value) { + _internal_set_varattno(value); + // @@protoc_insertion_point(field_set:pg_query.Var.varattno) +} + +// uint32 vartype = 4 [json_name = "vartype"]; +inline void Var::clear_vartype() { + vartype_ = 0u; +} +inline ::PROTOBUF_NAMESPACE_ID::uint32 Var::_internal_vartype() const { + return vartype_; +} +inline ::PROTOBUF_NAMESPACE_ID::uint32 Var::vartype() const { + // @@protoc_insertion_point(field_get:pg_query.Var.vartype) + return _internal_vartype(); +} +inline void Var::_internal_set_vartype(::PROTOBUF_NAMESPACE_ID::uint32 value) { + + vartype_ = value; +} +inline void Var::set_vartype(::PROTOBUF_NAMESPACE_ID::uint32 value) { + _internal_set_vartype(value); + // @@protoc_insertion_point(field_set:pg_query.Var.vartype) +} + +// int32 vartypmod = 5 [json_name = "vartypmod"]; +inline void Var::clear_vartypmod() { + vartypmod_ = 0; +} +inline ::PROTOBUF_NAMESPACE_ID::int32 Var::_internal_vartypmod() const { + return vartypmod_; +} +inline ::PROTOBUF_NAMESPACE_ID::int32 Var::vartypmod() const { + // @@protoc_insertion_point(field_get:pg_query.Var.vartypmod) + return _internal_vartypmod(); +} +inline void Var::_internal_set_vartypmod(::PROTOBUF_NAMESPACE_ID::int32 value) { + + vartypmod_ = value; +} +inline void Var::set_vartypmod(::PROTOBUF_NAMESPACE_ID::int32 value) { + _internal_set_vartypmod(value); + // @@protoc_insertion_point(field_set:pg_query.Var.vartypmod) +} + +// uint32 varcollid = 6 [json_name = "varcollid"]; +inline void Var::clear_varcollid() { + varcollid_ = 0u; +} +inline ::PROTOBUF_NAMESPACE_ID::uint32 Var::_internal_varcollid() const { + return varcollid_; +} +inline ::PROTOBUF_NAMESPACE_ID::uint32 Var::varcollid() const { + // @@protoc_insertion_point(field_get:pg_query.Var.varcollid) + return _internal_varcollid(); +} +inline void Var::_internal_set_varcollid(::PROTOBUF_NAMESPACE_ID::uint32 value) { + + varcollid_ = value; +} +inline void Var::set_varcollid(::PROTOBUF_NAMESPACE_ID::uint32 value) { + _internal_set_varcollid(value); + // @@protoc_insertion_point(field_set:pg_query.Var.varcollid) +} + +// uint32 varlevelsup = 7 [json_name = "varlevelsup"]; +inline void Var::clear_varlevelsup() { + varlevelsup_ = 0u; +} +inline ::PROTOBUF_NAMESPACE_ID::uint32 Var::_internal_varlevelsup() const { + return varlevelsup_; +} +inline ::PROTOBUF_NAMESPACE_ID::uint32 Var::varlevelsup() const { + // @@protoc_insertion_point(field_get:pg_query.Var.varlevelsup) + return _internal_varlevelsup(); +} +inline void Var::_internal_set_varlevelsup(::PROTOBUF_NAMESPACE_ID::uint32 value) { + + varlevelsup_ = value; +} +inline void Var::set_varlevelsup(::PROTOBUF_NAMESPACE_ID::uint32 value) { + _internal_set_varlevelsup(value); + // @@protoc_insertion_point(field_set:pg_query.Var.varlevelsup) +} + +// uint32 varnosyn = 8 [json_name = "varnosyn"]; +inline void Var::clear_varnosyn() { + varnosyn_ = 0u; +} +inline ::PROTOBUF_NAMESPACE_ID::uint32 Var::_internal_varnosyn() const { + return varnosyn_; +} +inline ::PROTOBUF_NAMESPACE_ID::uint32 Var::varnosyn() const { + // @@protoc_insertion_point(field_get:pg_query.Var.varnosyn) + return _internal_varnosyn(); +} +inline void Var::_internal_set_varnosyn(::PROTOBUF_NAMESPACE_ID::uint32 value) { + + varnosyn_ = value; +} +inline void Var::set_varnosyn(::PROTOBUF_NAMESPACE_ID::uint32 value) { + _internal_set_varnosyn(value); + // @@protoc_insertion_point(field_set:pg_query.Var.varnosyn) +} + +// int32 varattnosyn = 9 [json_name = "varattnosyn"]; +inline void Var::clear_varattnosyn() { + varattnosyn_ = 0; +} +inline ::PROTOBUF_NAMESPACE_ID::int32 Var::_internal_varattnosyn() const { + return varattnosyn_; +} +inline ::PROTOBUF_NAMESPACE_ID::int32 Var::varattnosyn() const { + // @@protoc_insertion_point(field_get:pg_query.Var.varattnosyn) + return _internal_varattnosyn(); +} +inline void Var::_internal_set_varattnosyn(::PROTOBUF_NAMESPACE_ID::int32 value) { + + varattnosyn_ = value; +} +inline void Var::set_varattnosyn(::PROTOBUF_NAMESPACE_ID::int32 value) { + _internal_set_varattnosyn(value); + // @@protoc_insertion_point(field_set:pg_query.Var.varattnosyn) +} + +// int32 location = 10 [json_name = "location"]; +inline void Var::clear_location() { + location_ = 0; +} +inline ::PROTOBUF_NAMESPACE_ID::int32 Var::_internal_location() const { + return location_; +} +inline ::PROTOBUF_NAMESPACE_ID::int32 Var::location() const { + // @@protoc_insertion_point(field_get:pg_query.Var.location) + return _internal_location(); +} +inline void Var::_internal_set_location(::PROTOBUF_NAMESPACE_ID::int32 value) { + + location_ = value; +} +inline void Var::set_location(::PROTOBUF_NAMESPACE_ID::int32 value) { + _internal_set_location(value); + // @@protoc_insertion_point(field_set:pg_query.Var.location) +} + +// ------------------------------------------------------------------- + +// Param + +// .pg_query.Node xpr = 1 [json_name = "xpr"]; +inline bool Param::_internal_has_xpr() const { + return this != internal_default_instance() && xpr_ != nullptr; +} +inline bool Param::has_xpr() const { + return _internal_has_xpr(); +} +inline void Param::clear_xpr() { + if (GetArena() == nullptr && xpr_ != nullptr) { + delete xpr_; + } + xpr_ = nullptr; +} +inline const ::pg_query::Node& Param::_internal_xpr() const { + const ::pg_query::Node* p = xpr_; + return p != nullptr ? *p : reinterpret_cast( + ::pg_query::_Node_default_instance_); +} +inline const ::pg_query::Node& Param::xpr() const { + // @@protoc_insertion_point(field_get:pg_query.Param.xpr) + return _internal_xpr(); +} +inline void Param::unsafe_arena_set_allocated_xpr( + ::pg_query::Node* xpr) { + if (GetArena() == nullptr) { + delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(xpr_); + } + xpr_ = xpr; + if (xpr) { + + } else { + + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Param.xpr) +} +inline ::pg_query::Node* Param::release_xpr() { + + ::pg_query::Node* temp = xpr_; + xpr_ = nullptr; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + return temp; +} +inline ::pg_query::Node* Param::unsafe_arena_release_xpr() { + // @@protoc_insertion_point(field_release:pg_query.Param.xpr) + + ::pg_query::Node* temp = xpr_; + xpr_ = nullptr; + return temp; +} +inline ::pg_query::Node* Param::_internal_mutable_xpr() { + + if (xpr_ == nullptr) { + auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); + xpr_ = p; + } + return xpr_; +} +inline ::pg_query::Node* Param::mutable_xpr() { + // @@protoc_insertion_point(field_mutable:pg_query.Param.xpr) + return _internal_mutable_xpr(); +} +inline void Param::set_allocated_xpr(::pg_query::Node* xpr) { + ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); + if (message_arena == nullptr) { + delete xpr_; + } + if (xpr) { + ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = + ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(xpr); + if (message_arena != submessage_arena) { + xpr = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( + message_arena, xpr, submessage_arena); + } + + } else { + + } + xpr_ = xpr; + // @@protoc_insertion_point(field_set_allocated:pg_query.Param.xpr) +} + +// .pg_query.ParamKind paramkind = 2 [json_name = "paramkind"]; +inline void Param::clear_paramkind() { + paramkind_ = 0; +} +inline ::pg_query::ParamKind Param::_internal_paramkind() const { + return static_cast< ::pg_query::ParamKind >(paramkind_); +} +inline ::pg_query::ParamKind Param::paramkind() const { + // @@protoc_insertion_point(field_get:pg_query.Param.paramkind) + return _internal_paramkind(); +} +inline void Param::_internal_set_paramkind(::pg_query::ParamKind value) { + + paramkind_ = value; +} +inline void Param::set_paramkind(::pg_query::ParamKind value) { + _internal_set_paramkind(value); + // @@protoc_insertion_point(field_set:pg_query.Param.paramkind) +} + +// int32 paramid = 3 [json_name = "paramid"]; +inline void Param::clear_paramid() { + paramid_ = 0; +} +inline ::PROTOBUF_NAMESPACE_ID::int32 Param::_internal_paramid() const { + return paramid_; +} +inline ::PROTOBUF_NAMESPACE_ID::int32 Param::paramid() const { + // @@protoc_insertion_point(field_get:pg_query.Param.paramid) + return _internal_paramid(); +} +inline void Param::_internal_set_paramid(::PROTOBUF_NAMESPACE_ID::int32 value) { + + paramid_ = value; +} +inline void Param::set_paramid(::PROTOBUF_NAMESPACE_ID::int32 value) { + _internal_set_paramid(value); + // @@protoc_insertion_point(field_set:pg_query.Param.paramid) +} + +// uint32 paramtype = 4 [json_name = "paramtype"]; +inline void Param::clear_paramtype() { + paramtype_ = 0u; +} +inline ::PROTOBUF_NAMESPACE_ID::uint32 Param::_internal_paramtype() const { + return paramtype_; +} +inline ::PROTOBUF_NAMESPACE_ID::uint32 Param::paramtype() const { + // @@protoc_insertion_point(field_get:pg_query.Param.paramtype) + return _internal_paramtype(); +} +inline void Param::_internal_set_paramtype(::PROTOBUF_NAMESPACE_ID::uint32 value) { + + paramtype_ = value; +} +inline void Param::set_paramtype(::PROTOBUF_NAMESPACE_ID::uint32 value) { + _internal_set_paramtype(value); + // @@protoc_insertion_point(field_set:pg_query.Param.paramtype) +} + +// int32 paramtypmod = 5 [json_name = "paramtypmod"]; +inline void Param::clear_paramtypmod() { + paramtypmod_ = 0; +} +inline ::PROTOBUF_NAMESPACE_ID::int32 Param::_internal_paramtypmod() const { + return paramtypmod_; +} +inline ::PROTOBUF_NAMESPACE_ID::int32 Param::paramtypmod() const { + // @@protoc_insertion_point(field_get:pg_query.Param.paramtypmod) + return _internal_paramtypmod(); +} +inline void Param::_internal_set_paramtypmod(::PROTOBUF_NAMESPACE_ID::int32 value) { + + paramtypmod_ = value; +} +inline void Param::set_paramtypmod(::PROTOBUF_NAMESPACE_ID::int32 value) { + _internal_set_paramtypmod(value); + // @@protoc_insertion_point(field_set:pg_query.Param.paramtypmod) +} + +// uint32 paramcollid = 6 [json_name = "paramcollid"]; +inline void Param::clear_paramcollid() { + paramcollid_ = 0u; +} +inline ::PROTOBUF_NAMESPACE_ID::uint32 Param::_internal_paramcollid() const { + return paramcollid_; +} +inline ::PROTOBUF_NAMESPACE_ID::uint32 Param::paramcollid() const { + // @@protoc_insertion_point(field_get:pg_query.Param.paramcollid) + return _internal_paramcollid(); +} +inline void Param::_internal_set_paramcollid(::PROTOBUF_NAMESPACE_ID::uint32 value) { + + paramcollid_ = value; +} +inline void Param::set_paramcollid(::PROTOBUF_NAMESPACE_ID::uint32 value) { + _internal_set_paramcollid(value); + // @@protoc_insertion_point(field_set:pg_query.Param.paramcollid) +} + +// int32 location = 7 [json_name = "location"]; +inline void Param::clear_location() { + location_ = 0; +} +inline ::PROTOBUF_NAMESPACE_ID::int32 Param::_internal_location() const { + return location_; +} +inline ::PROTOBUF_NAMESPACE_ID::int32 Param::location() const { + // @@protoc_insertion_point(field_get:pg_query.Param.location) + return _internal_location(); +} +inline void Param::_internal_set_location(::PROTOBUF_NAMESPACE_ID::int32 value) { + + location_ = value; +} +inline void Param::set_location(::PROTOBUF_NAMESPACE_ID::int32 value) { + _internal_set_location(value); + // @@protoc_insertion_point(field_set:pg_query.Param.location) +} + +// ------------------------------------------------------------------- + +// Aggref + +// .pg_query.Node xpr = 1 [json_name = "xpr"]; +inline bool Aggref::_internal_has_xpr() const { + return this != internal_default_instance() && xpr_ != nullptr; +} +inline bool Aggref::has_xpr() const { + return _internal_has_xpr(); +} +inline void Aggref::clear_xpr() { + if (GetArena() == nullptr && xpr_ != nullptr) { + delete xpr_; + } + xpr_ = nullptr; +} +inline const ::pg_query::Node& Aggref::_internal_xpr() const { + const ::pg_query::Node* p = xpr_; + return p != nullptr ? *p : reinterpret_cast( + ::pg_query::_Node_default_instance_); +} +inline const ::pg_query::Node& Aggref::xpr() const { + // @@protoc_insertion_point(field_get:pg_query.Aggref.xpr) + return _internal_xpr(); +} +inline void Aggref::unsafe_arena_set_allocated_xpr( + ::pg_query::Node* xpr) { + if (GetArena() == nullptr) { + delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(xpr_); + } + xpr_ = xpr; + if (xpr) { + + } else { + + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Aggref.xpr) +} +inline ::pg_query::Node* Aggref::release_xpr() { + + ::pg_query::Node* temp = xpr_; + xpr_ = nullptr; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + return temp; +} +inline ::pg_query::Node* Aggref::unsafe_arena_release_xpr() { + // @@protoc_insertion_point(field_release:pg_query.Aggref.xpr) + + ::pg_query::Node* temp = xpr_; + xpr_ = nullptr; + return temp; +} +inline ::pg_query::Node* Aggref::_internal_mutable_xpr() { + + if (xpr_ == nullptr) { + auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); + xpr_ = p; + } + return xpr_; +} +inline ::pg_query::Node* Aggref::mutable_xpr() { + // @@protoc_insertion_point(field_mutable:pg_query.Aggref.xpr) + return _internal_mutable_xpr(); +} +inline void Aggref::set_allocated_xpr(::pg_query::Node* xpr) { + ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); + if (message_arena == nullptr) { + delete xpr_; + } + if (xpr) { + ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = + ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(xpr); + if (message_arena != submessage_arena) { + xpr = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( + message_arena, xpr, submessage_arena); + } + + } else { + + } + xpr_ = xpr; + // @@protoc_insertion_point(field_set_allocated:pg_query.Aggref.xpr) +} + +// uint32 aggfnoid = 2 [json_name = "aggfnoid"]; +inline void Aggref::clear_aggfnoid() { + aggfnoid_ = 0u; +} +inline ::PROTOBUF_NAMESPACE_ID::uint32 Aggref::_internal_aggfnoid() const { + return aggfnoid_; +} +inline ::PROTOBUF_NAMESPACE_ID::uint32 Aggref::aggfnoid() const { + // @@protoc_insertion_point(field_get:pg_query.Aggref.aggfnoid) + return _internal_aggfnoid(); +} +inline void Aggref::_internal_set_aggfnoid(::PROTOBUF_NAMESPACE_ID::uint32 value) { + + aggfnoid_ = value; +} +inline void Aggref::set_aggfnoid(::PROTOBUF_NAMESPACE_ID::uint32 value) { + _internal_set_aggfnoid(value); + // @@protoc_insertion_point(field_set:pg_query.Aggref.aggfnoid) +} + +// uint32 aggtype = 3 [json_name = "aggtype"]; +inline void Aggref::clear_aggtype() { + aggtype_ = 0u; +} +inline ::PROTOBUF_NAMESPACE_ID::uint32 Aggref::_internal_aggtype() const { + return aggtype_; +} +inline ::PROTOBUF_NAMESPACE_ID::uint32 Aggref::aggtype() const { + // @@protoc_insertion_point(field_get:pg_query.Aggref.aggtype) + return _internal_aggtype(); +} +inline void Aggref::_internal_set_aggtype(::PROTOBUF_NAMESPACE_ID::uint32 value) { + + aggtype_ = value; +} +inline void Aggref::set_aggtype(::PROTOBUF_NAMESPACE_ID::uint32 value) { + _internal_set_aggtype(value); + // @@protoc_insertion_point(field_set:pg_query.Aggref.aggtype) +} + +// uint32 aggcollid = 4 [json_name = "aggcollid"]; +inline void Aggref::clear_aggcollid() { + aggcollid_ = 0u; +} +inline ::PROTOBUF_NAMESPACE_ID::uint32 Aggref::_internal_aggcollid() const { + return aggcollid_; +} +inline ::PROTOBUF_NAMESPACE_ID::uint32 Aggref::aggcollid() const { + // @@protoc_insertion_point(field_get:pg_query.Aggref.aggcollid) + return _internal_aggcollid(); +} +inline void Aggref::_internal_set_aggcollid(::PROTOBUF_NAMESPACE_ID::uint32 value) { + + aggcollid_ = value; +} +inline void Aggref::set_aggcollid(::PROTOBUF_NAMESPACE_ID::uint32 value) { + _internal_set_aggcollid(value); + // @@protoc_insertion_point(field_set:pg_query.Aggref.aggcollid) +} + +// uint32 inputcollid = 5 [json_name = "inputcollid"]; +inline void Aggref::clear_inputcollid() { + inputcollid_ = 0u; +} +inline ::PROTOBUF_NAMESPACE_ID::uint32 Aggref::_internal_inputcollid() const { + return inputcollid_; +} +inline ::PROTOBUF_NAMESPACE_ID::uint32 Aggref::inputcollid() const { + // @@protoc_insertion_point(field_get:pg_query.Aggref.inputcollid) + return _internal_inputcollid(); +} +inline void Aggref::_internal_set_inputcollid(::PROTOBUF_NAMESPACE_ID::uint32 value) { + + inputcollid_ = value; +} +inline void Aggref::set_inputcollid(::PROTOBUF_NAMESPACE_ID::uint32 value) { + _internal_set_inputcollid(value); + // @@protoc_insertion_point(field_set:pg_query.Aggref.inputcollid) +} + +// uint32 aggtranstype = 6 [json_name = "aggtranstype"]; +inline void Aggref::clear_aggtranstype() { + aggtranstype_ = 0u; +} +inline ::PROTOBUF_NAMESPACE_ID::uint32 Aggref::_internal_aggtranstype() const { + return aggtranstype_; +} +inline ::PROTOBUF_NAMESPACE_ID::uint32 Aggref::aggtranstype() const { + // @@protoc_insertion_point(field_get:pg_query.Aggref.aggtranstype) + return _internal_aggtranstype(); +} +inline void Aggref::_internal_set_aggtranstype(::PROTOBUF_NAMESPACE_ID::uint32 value) { + + aggtranstype_ = value; +} +inline void Aggref::set_aggtranstype(::PROTOBUF_NAMESPACE_ID::uint32 value) { + _internal_set_aggtranstype(value); + // @@protoc_insertion_point(field_set:pg_query.Aggref.aggtranstype) +} + +// repeated .pg_query.Node aggargtypes = 7 [json_name = "aggargtypes"]; +inline int Aggref::_internal_aggargtypes_size() const { + return aggargtypes_.size(); +} +inline int Aggref::aggargtypes_size() const { + return _internal_aggargtypes_size(); +} +inline void Aggref::clear_aggargtypes() { + aggargtypes_.Clear(); +} +inline ::pg_query::Node* Aggref::mutable_aggargtypes(int index) { + // @@protoc_insertion_point(field_mutable:pg_query.Aggref.aggargtypes) + return aggargtypes_.Mutable(index); +} +inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* +Aggref::mutable_aggargtypes() { + // @@protoc_insertion_point(field_mutable_list:pg_query.Aggref.aggargtypes) + return &aggargtypes_; +} +inline const ::pg_query::Node& Aggref::_internal_aggargtypes(int index) const { + return aggargtypes_.Get(index); +} +inline const ::pg_query::Node& Aggref::aggargtypes(int index) const { + // @@protoc_insertion_point(field_get:pg_query.Aggref.aggargtypes) + return _internal_aggargtypes(index); +} +inline ::pg_query::Node* Aggref::_internal_add_aggargtypes() { + return aggargtypes_.Add(); +} +inline ::pg_query::Node* Aggref::add_aggargtypes() { + // @@protoc_insertion_point(field_add:pg_query.Aggref.aggargtypes) + return _internal_add_aggargtypes(); +} +inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& +Aggref::aggargtypes() const { + // @@protoc_insertion_point(field_list:pg_query.Aggref.aggargtypes) + return aggargtypes_; +} + +// repeated .pg_query.Node aggdirectargs = 8 [json_name = "aggdirectargs"]; +inline int Aggref::_internal_aggdirectargs_size() const { + return aggdirectargs_.size(); +} +inline int Aggref::aggdirectargs_size() const { + return _internal_aggdirectargs_size(); +} +inline void Aggref::clear_aggdirectargs() { + aggdirectargs_.Clear(); +} +inline ::pg_query::Node* Aggref::mutable_aggdirectargs(int index) { + // @@protoc_insertion_point(field_mutable:pg_query.Aggref.aggdirectargs) + return aggdirectargs_.Mutable(index); +} +inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* +Aggref::mutable_aggdirectargs() { + // @@protoc_insertion_point(field_mutable_list:pg_query.Aggref.aggdirectargs) + return &aggdirectargs_; +} +inline const ::pg_query::Node& Aggref::_internal_aggdirectargs(int index) const { + return aggdirectargs_.Get(index); +} +inline const ::pg_query::Node& Aggref::aggdirectargs(int index) const { + // @@protoc_insertion_point(field_get:pg_query.Aggref.aggdirectargs) + return _internal_aggdirectargs(index); +} +inline ::pg_query::Node* Aggref::_internal_add_aggdirectargs() { + return aggdirectargs_.Add(); +} +inline ::pg_query::Node* Aggref::add_aggdirectargs() { + // @@protoc_insertion_point(field_add:pg_query.Aggref.aggdirectargs) + return _internal_add_aggdirectargs(); +} +inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& +Aggref::aggdirectargs() const { + // @@protoc_insertion_point(field_list:pg_query.Aggref.aggdirectargs) + return aggdirectargs_; +} + +// repeated .pg_query.Node args = 9 [json_name = "args"]; +inline int Aggref::_internal_args_size() const { + return args_.size(); +} +inline int Aggref::args_size() const { + return _internal_args_size(); +} +inline void Aggref::clear_args() { + args_.Clear(); +} +inline ::pg_query::Node* Aggref::mutable_args(int index) { + // @@protoc_insertion_point(field_mutable:pg_query.Aggref.args) + return args_.Mutable(index); +} +inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* +Aggref::mutable_args() { + // @@protoc_insertion_point(field_mutable_list:pg_query.Aggref.args) + return &args_; +} +inline const ::pg_query::Node& Aggref::_internal_args(int index) const { + return args_.Get(index); +} +inline const ::pg_query::Node& Aggref::args(int index) const { + // @@protoc_insertion_point(field_get:pg_query.Aggref.args) + return _internal_args(index); +} +inline ::pg_query::Node* Aggref::_internal_add_args() { + return args_.Add(); +} +inline ::pg_query::Node* Aggref::add_args() { + // @@protoc_insertion_point(field_add:pg_query.Aggref.args) + return _internal_add_args(); +} +inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& +Aggref::args() const { + // @@protoc_insertion_point(field_list:pg_query.Aggref.args) + return args_; +} + +// repeated .pg_query.Node aggorder = 10 [json_name = "aggorder"]; +inline int Aggref::_internal_aggorder_size() const { + return aggorder_.size(); +} +inline int Aggref::aggorder_size() const { + return _internal_aggorder_size(); +} +inline void Aggref::clear_aggorder() { + aggorder_.Clear(); +} +inline ::pg_query::Node* Aggref::mutable_aggorder(int index) { + // @@protoc_insertion_point(field_mutable:pg_query.Aggref.aggorder) + return aggorder_.Mutable(index); +} +inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* +Aggref::mutable_aggorder() { + // @@protoc_insertion_point(field_mutable_list:pg_query.Aggref.aggorder) + return &aggorder_; +} +inline const ::pg_query::Node& Aggref::_internal_aggorder(int index) const { + return aggorder_.Get(index); +} +inline const ::pg_query::Node& Aggref::aggorder(int index) const { + // @@protoc_insertion_point(field_get:pg_query.Aggref.aggorder) + return _internal_aggorder(index); +} +inline ::pg_query::Node* Aggref::_internal_add_aggorder() { + return aggorder_.Add(); +} +inline ::pg_query::Node* Aggref::add_aggorder() { + // @@protoc_insertion_point(field_add:pg_query.Aggref.aggorder) + return _internal_add_aggorder(); +} +inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& +Aggref::aggorder() const { + // @@protoc_insertion_point(field_list:pg_query.Aggref.aggorder) + return aggorder_; +} + +// repeated .pg_query.Node aggdistinct = 11 [json_name = "aggdistinct"]; +inline int Aggref::_internal_aggdistinct_size() const { + return aggdistinct_.size(); +} +inline int Aggref::aggdistinct_size() const { + return _internal_aggdistinct_size(); +} +inline void Aggref::clear_aggdistinct() { + aggdistinct_.Clear(); +} +inline ::pg_query::Node* Aggref::mutable_aggdistinct(int index) { + // @@protoc_insertion_point(field_mutable:pg_query.Aggref.aggdistinct) + return aggdistinct_.Mutable(index); +} +inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* +Aggref::mutable_aggdistinct() { + // @@protoc_insertion_point(field_mutable_list:pg_query.Aggref.aggdistinct) + return &aggdistinct_; +} +inline const ::pg_query::Node& Aggref::_internal_aggdistinct(int index) const { + return aggdistinct_.Get(index); +} +inline const ::pg_query::Node& Aggref::aggdistinct(int index) const { + // @@protoc_insertion_point(field_get:pg_query.Aggref.aggdistinct) + return _internal_aggdistinct(index); +} +inline ::pg_query::Node* Aggref::_internal_add_aggdistinct() { + return aggdistinct_.Add(); +} +inline ::pg_query::Node* Aggref::add_aggdistinct() { + // @@protoc_insertion_point(field_add:pg_query.Aggref.aggdistinct) + return _internal_add_aggdistinct(); +} +inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& +Aggref::aggdistinct() const { + // @@protoc_insertion_point(field_list:pg_query.Aggref.aggdistinct) + return aggdistinct_; +} + +// .pg_query.Node aggfilter = 12 [json_name = "aggfilter"]; +inline bool Aggref::_internal_has_aggfilter() const { + return this != internal_default_instance() && aggfilter_ != nullptr; +} +inline bool Aggref::has_aggfilter() const { + return _internal_has_aggfilter(); +} +inline void Aggref::clear_aggfilter() { + if (GetArena() == nullptr && aggfilter_ != nullptr) { + delete aggfilter_; + } + aggfilter_ = nullptr; +} +inline const ::pg_query::Node& Aggref::_internal_aggfilter() const { + const ::pg_query::Node* p = aggfilter_; + return p != nullptr ? *p : reinterpret_cast( + ::pg_query::_Node_default_instance_); +} +inline const ::pg_query::Node& Aggref::aggfilter() const { + // @@protoc_insertion_point(field_get:pg_query.Aggref.aggfilter) + return _internal_aggfilter(); +} +inline void Aggref::unsafe_arena_set_allocated_aggfilter( + ::pg_query::Node* aggfilter) { + if (GetArena() == nullptr) { + delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(aggfilter_); + } + aggfilter_ = aggfilter; + if (aggfilter) { + + } else { + + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Aggref.aggfilter) +} +inline ::pg_query::Node* Aggref::release_aggfilter() { + + ::pg_query::Node* temp = aggfilter_; + aggfilter_ = nullptr; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + return temp; +} +inline ::pg_query::Node* Aggref::unsafe_arena_release_aggfilter() { + // @@protoc_insertion_point(field_release:pg_query.Aggref.aggfilter) + + ::pg_query::Node* temp = aggfilter_; + aggfilter_ = nullptr; + return temp; +} +inline ::pg_query::Node* Aggref::_internal_mutable_aggfilter() { + + if (aggfilter_ == nullptr) { + auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); + aggfilter_ = p; + } + return aggfilter_; +} +inline ::pg_query::Node* Aggref::mutable_aggfilter() { + // @@protoc_insertion_point(field_mutable:pg_query.Aggref.aggfilter) + return _internal_mutable_aggfilter(); +} +inline void Aggref::set_allocated_aggfilter(::pg_query::Node* aggfilter) { + ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); + if (message_arena == nullptr) { + delete aggfilter_; + } + if (aggfilter) { + ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = + ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(aggfilter); + if (message_arena != submessage_arena) { + aggfilter = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( + message_arena, aggfilter, submessage_arena); + } + + } else { + + } + aggfilter_ = aggfilter; + // @@protoc_insertion_point(field_set_allocated:pg_query.Aggref.aggfilter) +} + +// bool aggstar = 13 [json_name = "aggstar"]; +inline void Aggref::clear_aggstar() { + aggstar_ = false; +} +inline bool Aggref::_internal_aggstar() const { + return aggstar_; +} +inline bool Aggref::aggstar() const { + // @@protoc_insertion_point(field_get:pg_query.Aggref.aggstar) + return _internal_aggstar(); +} +inline void Aggref::_internal_set_aggstar(bool value) { + + aggstar_ = value; +} +inline void Aggref::set_aggstar(bool value) { + _internal_set_aggstar(value); + // @@protoc_insertion_point(field_set:pg_query.Aggref.aggstar) +} + +// bool aggvariadic = 14 [json_name = "aggvariadic"]; +inline void Aggref::clear_aggvariadic() { + aggvariadic_ = false; +} +inline bool Aggref::_internal_aggvariadic() const { + return aggvariadic_; +} +inline bool Aggref::aggvariadic() const { + // @@protoc_insertion_point(field_get:pg_query.Aggref.aggvariadic) + return _internal_aggvariadic(); +} +inline void Aggref::_internal_set_aggvariadic(bool value) { + + aggvariadic_ = value; +} +inline void Aggref::set_aggvariadic(bool value) { + _internal_set_aggvariadic(value); + // @@protoc_insertion_point(field_set:pg_query.Aggref.aggvariadic) +} + +// string aggkind = 15 [json_name = "aggkind"]; +inline void Aggref::clear_aggkind() { + aggkind_.ClearToEmpty(); +} +inline const std::string& Aggref::aggkind() const { + // @@protoc_insertion_point(field_get:pg_query.Aggref.aggkind) + return _internal_aggkind(); +} +inline void Aggref::set_aggkind(const std::string& value) { + _internal_set_aggkind(value); + // @@protoc_insertion_point(field_set:pg_query.Aggref.aggkind) +} +inline std::string* Aggref::mutable_aggkind() { + // @@protoc_insertion_point(field_mutable:pg_query.Aggref.aggkind) + return _internal_mutable_aggkind(); +} +inline const std::string& Aggref::_internal_aggkind() const { + return aggkind_.Get(); +} +inline void Aggref::_internal_set_aggkind(const std::string& value) { + + aggkind_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArena()); +} +inline void Aggref::set_aggkind(std::string&& value) { + + aggkind_.Set( + ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::move(value), GetArena()); + // @@protoc_insertion_point(field_set_rvalue:pg_query.Aggref.aggkind) +} +inline void Aggref::set_aggkind(const char* value) { + GOOGLE_DCHECK(value != nullptr); + + aggkind_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string(value), GetArena()); + // @@protoc_insertion_point(field_set_char:pg_query.Aggref.aggkind) +} +inline void Aggref::set_aggkind(const char* value, + size_t size) { + + aggkind_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string( + reinterpret_cast(value), size), GetArena()); + // @@protoc_insertion_point(field_set_pointer:pg_query.Aggref.aggkind) +} +inline std::string* Aggref::_internal_mutable_aggkind() { + + return aggkind_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArena()); +} +inline std::string* Aggref::release_aggkind() { + // @@protoc_insertion_point(field_release:pg_query.Aggref.aggkind) + return aggkind_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); +} +inline void Aggref::set_allocated_aggkind(std::string* aggkind) { + if (aggkind != nullptr) { + + } else { + + } + aggkind_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), aggkind, + GetArena()); + // @@protoc_insertion_point(field_set_allocated:pg_query.Aggref.aggkind) +} + +// uint32 agglevelsup = 16 [json_name = "agglevelsup"]; +inline void Aggref::clear_agglevelsup() { + agglevelsup_ = 0u; +} +inline ::PROTOBUF_NAMESPACE_ID::uint32 Aggref::_internal_agglevelsup() const { + return agglevelsup_; +} +inline ::PROTOBUF_NAMESPACE_ID::uint32 Aggref::agglevelsup() const { + // @@protoc_insertion_point(field_get:pg_query.Aggref.agglevelsup) + return _internal_agglevelsup(); +} +inline void Aggref::_internal_set_agglevelsup(::PROTOBUF_NAMESPACE_ID::uint32 value) { + + agglevelsup_ = value; +} +inline void Aggref::set_agglevelsup(::PROTOBUF_NAMESPACE_ID::uint32 value) { + _internal_set_agglevelsup(value); + // @@protoc_insertion_point(field_set:pg_query.Aggref.agglevelsup) +} + +// .pg_query.AggSplit aggsplit = 17 [json_name = "aggsplit"]; +inline void Aggref::clear_aggsplit() { + aggsplit_ = 0; +} +inline ::pg_query::AggSplit Aggref::_internal_aggsplit() const { + return static_cast< ::pg_query::AggSplit >(aggsplit_); +} +inline ::pg_query::AggSplit Aggref::aggsplit() const { + // @@protoc_insertion_point(field_get:pg_query.Aggref.aggsplit) + return _internal_aggsplit(); +} +inline void Aggref::_internal_set_aggsplit(::pg_query::AggSplit value) { + + aggsplit_ = value; +} +inline void Aggref::set_aggsplit(::pg_query::AggSplit value) { + _internal_set_aggsplit(value); + // @@protoc_insertion_point(field_set:pg_query.Aggref.aggsplit) +} + +// int32 location = 18 [json_name = "location"]; +inline void Aggref::clear_location() { + location_ = 0; +} +inline ::PROTOBUF_NAMESPACE_ID::int32 Aggref::_internal_location() const { + return location_; +} +inline ::PROTOBUF_NAMESPACE_ID::int32 Aggref::location() const { + // @@protoc_insertion_point(field_get:pg_query.Aggref.location) + return _internal_location(); +} +inline void Aggref::_internal_set_location(::PROTOBUF_NAMESPACE_ID::int32 value) { + + location_ = value; +} +inline void Aggref::set_location(::PROTOBUF_NAMESPACE_ID::int32 value) { + _internal_set_location(value); + // @@protoc_insertion_point(field_set:pg_query.Aggref.location) +} + +// ------------------------------------------------------------------- + +// GroupingFunc + +// .pg_query.Node xpr = 1 [json_name = "xpr"]; +inline bool GroupingFunc::_internal_has_xpr() const { + return this != internal_default_instance() && xpr_ != nullptr; +} +inline bool GroupingFunc::has_xpr() const { + return _internal_has_xpr(); +} +inline void GroupingFunc::clear_xpr() { + if (GetArena() == nullptr && xpr_ != nullptr) { + delete xpr_; + } + xpr_ = nullptr; +} +inline const ::pg_query::Node& GroupingFunc::_internal_xpr() const { + const ::pg_query::Node* p = xpr_; + return p != nullptr ? *p : reinterpret_cast( + ::pg_query::_Node_default_instance_); +} +inline const ::pg_query::Node& GroupingFunc::xpr() const { + // @@protoc_insertion_point(field_get:pg_query.GroupingFunc.xpr) + return _internal_xpr(); +} +inline void GroupingFunc::unsafe_arena_set_allocated_xpr( + ::pg_query::Node* xpr) { + if (GetArena() == nullptr) { + delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(xpr_); + } + xpr_ = xpr; + if (xpr) { + + } else { + + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.GroupingFunc.xpr) +} +inline ::pg_query::Node* GroupingFunc::release_xpr() { + + ::pg_query::Node* temp = xpr_; + xpr_ = nullptr; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + return temp; +} +inline ::pg_query::Node* GroupingFunc::unsafe_arena_release_xpr() { + // @@protoc_insertion_point(field_release:pg_query.GroupingFunc.xpr) + + ::pg_query::Node* temp = xpr_; + xpr_ = nullptr; + return temp; +} +inline ::pg_query::Node* GroupingFunc::_internal_mutable_xpr() { + + if (xpr_ == nullptr) { + auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); + xpr_ = p; + } + return xpr_; +} +inline ::pg_query::Node* GroupingFunc::mutable_xpr() { + // @@protoc_insertion_point(field_mutable:pg_query.GroupingFunc.xpr) + return _internal_mutable_xpr(); +} +inline void GroupingFunc::set_allocated_xpr(::pg_query::Node* xpr) { + ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); + if (message_arena == nullptr) { + delete xpr_; + } + if (xpr) { + ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = + ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(xpr); + if (message_arena != submessage_arena) { + xpr = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( + message_arena, xpr, submessage_arena); + } + + } else { + + } + xpr_ = xpr; + // @@protoc_insertion_point(field_set_allocated:pg_query.GroupingFunc.xpr) +} + +// repeated .pg_query.Node args = 2 [json_name = "args"]; +inline int GroupingFunc::_internal_args_size() const { + return args_.size(); +} +inline int GroupingFunc::args_size() const { + return _internal_args_size(); +} +inline void GroupingFunc::clear_args() { + args_.Clear(); +} +inline ::pg_query::Node* GroupingFunc::mutable_args(int index) { + // @@protoc_insertion_point(field_mutable:pg_query.GroupingFunc.args) + return args_.Mutable(index); +} +inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* +GroupingFunc::mutable_args() { + // @@protoc_insertion_point(field_mutable_list:pg_query.GroupingFunc.args) + return &args_; +} +inline const ::pg_query::Node& GroupingFunc::_internal_args(int index) const { + return args_.Get(index); +} +inline const ::pg_query::Node& GroupingFunc::args(int index) const { + // @@protoc_insertion_point(field_get:pg_query.GroupingFunc.args) + return _internal_args(index); +} +inline ::pg_query::Node* GroupingFunc::_internal_add_args() { + return args_.Add(); +} +inline ::pg_query::Node* GroupingFunc::add_args() { + // @@protoc_insertion_point(field_add:pg_query.GroupingFunc.args) + return _internal_add_args(); +} +inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& +GroupingFunc::args() const { + // @@protoc_insertion_point(field_list:pg_query.GroupingFunc.args) + return args_; +} + +// repeated .pg_query.Node refs = 3 [json_name = "refs"]; +inline int GroupingFunc::_internal_refs_size() const { + return refs_.size(); +} +inline int GroupingFunc::refs_size() const { + return _internal_refs_size(); +} +inline void GroupingFunc::clear_refs() { + refs_.Clear(); +} +inline ::pg_query::Node* GroupingFunc::mutable_refs(int index) { + // @@protoc_insertion_point(field_mutable:pg_query.GroupingFunc.refs) + return refs_.Mutable(index); +} +inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* +GroupingFunc::mutable_refs() { + // @@protoc_insertion_point(field_mutable_list:pg_query.GroupingFunc.refs) + return &refs_; +} +inline const ::pg_query::Node& GroupingFunc::_internal_refs(int index) const { + return refs_.Get(index); +} +inline const ::pg_query::Node& GroupingFunc::refs(int index) const { + // @@protoc_insertion_point(field_get:pg_query.GroupingFunc.refs) + return _internal_refs(index); +} +inline ::pg_query::Node* GroupingFunc::_internal_add_refs() { + return refs_.Add(); +} +inline ::pg_query::Node* GroupingFunc::add_refs() { + // @@protoc_insertion_point(field_add:pg_query.GroupingFunc.refs) + return _internal_add_refs(); +} +inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& +GroupingFunc::refs() const { + // @@protoc_insertion_point(field_list:pg_query.GroupingFunc.refs) + return refs_; +} + +// repeated .pg_query.Node cols = 4 [json_name = "cols"]; +inline int GroupingFunc::_internal_cols_size() const { + return cols_.size(); +} +inline int GroupingFunc::cols_size() const { + return _internal_cols_size(); +} +inline void GroupingFunc::clear_cols() { + cols_.Clear(); +} +inline ::pg_query::Node* GroupingFunc::mutable_cols(int index) { + // @@protoc_insertion_point(field_mutable:pg_query.GroupingFunc.cols) + return cols_.Mutable(index); +} +inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* +GroupingFunc::mutable_cols() { + // @@protoc_insertion_point(field_mutable_list:pg_query.GroupingFunc.cols) + return &cols_; +} +inline const ::pg_query::Node& GroupingFunc::_internal_cols(int index) const { + return cols_.Get(index); +} +inline const ::pg_query::Node& GroupingFunc::cols(int index) const { + // @@protoc_insertion_point(field_get:pg_query.GroupingFunc.cols) + return _internal_cols(index); +} +inline ::pg_query::Node* GroupingFunc::_internal_add_cols() { + return cols_.Add(); +} +inline ::pg_query::Node* GroupingFunc::add_cols() { + // @@protoc_insertion_point(field_add:pg_query.GroupingFunc.cols) + return _internal_add_cols(); +} +inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& +GroupingFunc::cols() const { + // @@protoc_insertion_point(field_list:pg_query.GroupingFunc.cols) + return cols_; +} + +// uint32 agglevelsup = 5 [json_name = "agglevelsup"]; +inline void GroupingFunc::clear_agglevelsup() { + agglevelsup_ = 0u; +} +inline ::PROTOBUF_NAMESPACE_ID::uint32 GroupingFunc::_internal_agglevelsup() const { + return agglevelsup_; +} +inline ::PROTOBUF_NAMESPACE_ID::uint32 GroupingFunc::agglevelsup() const { + // @@protoc_insertion_point(field_get:pg_query.GroupingFunc.agglevelsup) + return _internal_agglevelsup(); +} +inline void GroupingFunc::_internal_set_agglevelsup(::PROTOBUF_NAMESPACE_ID::uint32 value) { + + agglevelsup_ = value; +} +inline void GroupingFunc::set_agglevelsup(::PROTOBUF_NAMESPACE_ID::uint32 value) { + _internal_set_agglevelsup(value); + // @@protoc_insertion_point(field_set:pg_query.GroupingFunc.agglevelsup) +} + +// int32 location = 6 [json_name = "location"]; +inline void GroupingFunc::clear_location() { + location_ = 0; +} +inline ::PROTOBUF_NAMESPACE_ID::int32 GroupingFunc::_internal_location() const { + return location_; +} +inline ::PROTOBUF_NAMESPACE_ID::int32 GroupingFunc::location() const { + // @@protoc_insertion_point(field_get:pg_query.GroupingFunc.location) + return _internal_location(); +} +inline void GroupingFunc::_internal_set_location(::PROTOBUF_NAMESPACE_ID::int32 value) { + + location_ = value; +} +inline void GroupingFunc::set_location(::PROTOBUF_NAMESPACE_ID::int32 value) { + _internal_set_location(value); + // @@protoc_insertion_point(field_set:pg_query.GroupingFunc.location) +} + +// ------------------------------------------------------------------- + +// WindowFunc + +// .pg_query.Node xpr = 1 [json_name = "xpr"]; +inline bool WindowFunc::_internal_has_xpr() const { + return this != internal_default_instance() && xpr_ != nullptr; +} +inline bool WindowFunc::has_xpr() const { + return _internal_has_xpr(); +} +inline void WindowFunc::clear_xpr() { + if (GetArena() == nullptr && xpr_ != nullptr) { + delete xpr_; + } + xpr_ = nullptr; +} +inline const ::pg_query::Node& WindowFunc::_internal_xpr() const { + const ::pg_query::Node* p = xpr_; + return p != nullptr ? *p : reinterpret_cast( + ::pg_query::_Node_default_instance_); +} +inline const ::pg_query::Node& WindowFunc::xpr() const { + // @@protoc_insertion_point(field_get:pg_query.WindowFunc.xpr) + return _internal_xpr(); +} +inline void WindowFunc::unsafe_arena_set_allocated_xpr( + ::pg_query::Node* xpr) { + if (GetArena() == nullptr) { + delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(xpr_); + } + xpr_ = xpr; + if (xpr) { + + } else { + + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.WindowFunc.xpr) +} +inline ::pg_query::Node* WindowFunc::release_xpr() { + + ::pg_query::Node* temp = xpr_; + xpr_ = nullptr; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + return temp; +} +inline ::pg_query::Node* WindowFunc::unsafe_arena_release_xpr() { + // @@protoc_insertion_point(field_release:pg_query.WindowFunc.xpr) + + ::pg_query::Node* temp = xpr_; + xpr_ = nullptr; + return temp; +} +inline ::pg_query::Node* WindowFunc::_internal_mutable_xpr() { + + if (xpr_ == nullptr) { + auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); + xpr_ = p; + } + return xpr_; +} +inline ::pg_query::Node* WindowFunc::mutable_xpr() { + // @@protoc_insertion_point(field_mutable:pg_query.WindowFunc.xpr) + return _internal_mutable_xpr(); +} +inline void WindowFunc::set_allocated_xpr(::pg_query::Node* xpr) { + ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); + if (message_arena == nullptr) { + delete xpr_; + } + if (xpr) { + ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = + ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(xpr); + if (message_arena != submessage_arena) { + xpr = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( + message_arena, xpr, submessage_arena); + } + + } else { + + } + xpr_ = xpr; + // @@protoc_insertion_point(field_set_allocated:pg_query.WindowFunc.xpr) +} + +// uint32 winfnoid = 2 [json_name = "winfnoid"]; +inline void WindowFunc::clear_winfnoid() { + winfnoid_ = 0u; +} +inline ::PROTOBUF_NAMESPACE_ID::uint32 WindowFunc::_internal_winfnoid() const { + return winfnoid_; +} +inline ::PROTOBUF_NAMESPACE_ID::uint32 WindowFunc::winfnoid() const { + // @@protoc_insertion_point(field_get:pg_query.WindowFunc.winfnoid) + return _internal_winfnoid(); +} +inline void WindowFunc::_internal_set_winfnoid(::PROTOBUF_NAMESPACE_ID::uint32 value) { + + winfnoid_ = value; +} +inline void WindowFunc::set_winfnoid(::PROTOBUF_NAMESPACE_ID::uint32 value) { + _internal_set_winfnoid(value); + // @@protoc_insertion_point(field_set:pg_query.WindowFunc.winfnoid) +} + +// uint32 wintype = 3 [json_name = "wintype"]; +inline void WindowFunc::clear_wintype() { + wintype_ = 0u; +} +inline ::PROTOBUF_NAMESPACE_ID::uint32 WindowFunc::_internal_wintype() const { + return wintype_; +} +inline ::PROTOBUF_NAMESPACE_ID::uint32 WindowFunc::wintype() const { + // @@protoc_insertion_point(field_get:pg_query.WindowFunc.wintype) + return _internal_wintype(); +} +inline void WindowFunc::_internal_set_wintype(::PROTOBUF_NAMESPACE_ID::uint32 value) { + + wintype_ = value; +} +inline void WindowFunc::set_wintype(::PROTOBUF_NAMESPACE_ID::uint32 value) { + _internal_set_wintype(value); + // @@protoc_insertion_point(field_set:pg_query.WindowFunc.wintype) +} + +// uint32 wincollid = 4 [json_name = "wincollid"]; +inline void WindowFunc::clear_wincollid() { + wincollid_ = 0u; +} +inline ::PROTOBUF_NAMESPACE_ID::uint32 WindowFunc::_internal_wincollid() const { + return wincollid_; +} +inline ::PROTOBUF_NAMESPACE_ID::uint32 WindowFunc::wincollid() const { + // @@protoc_insertion_point(field_get:pg_query.WindowFunc.wincollid) + return _internal_wincollid(); +} +inline void WindowFunc::_internal_set_wincollid(::PROTOBUF_NAMESPACE_ID::uint32 value) { + + wincollid_ = value; +} +inline void WindowFunc::set_wincollid(::PROTOBUF_NAMESPACE_ID::uint32 value) { + _internal_set_wincollid(value); + // @@protoc_insertion_point(field_set:pg_query.WindowFunc.wincollid) +} + +// uint32 inputcollid = 5 [json_name = "inputcollid"]; +inline void WindowFunc::clear_inputcollid() { + inputcollid_ = 0u; +} +inline ::PROTOBUF_NAMESPACE_ID::uint32 WindowFunc::_internal_inputcollid() const { + return inputcollid_; +} +inline ::PROTOBUF_NAMESPACE_ID::uint32 WindowFunc::inputcollid() const { + // @@protoc_insertion_point(field_get:pg_query.WindowFunc.inputcollid) + return _internal_inputcollid(); +} +inline void WindowFunc::_internal_set_inputcollid(::PROTOBUF_NAMESPACE_ID::uint32 value) { + + inputcollid_ = value; +} +inline void WindowFunc::set_inputcollid(::PROTOBUF_NAMESPACE_ID::uint32 value) { + _internal_set_inputcollid(value); + // @@protoc_insertion_point(field_set:pg_query.WindowFunc.inputcollid) +} + +// repeated .pg_query.Node args = 6 [json_name = "args"]; +inline int WindowFunc::_internal_args_size() const { + return args_.size(); +} +inline int WindowFunc::args_size() const { + return _internal_args_size(); +} +inline void WindowFunc::clear_args() { + args_.Clear(); +} +inline ::pg_query::Node* WindowFunc::mutable_args(int index) { + // @@protoc_insertion_point(field_mutable:pg_query.WindowFunc.args) + return args_.Mutable(index); +} +inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* +WindowFunc::mutable_args() { + // @@protoc_insertion_point(field_mutable_list:pg_query.WindowFunc.args) + return &args_; +} +inline const ::pg_query::Node& WindowFunc::_internal_args(int index) const { + return args_.Get(index); +} +inline const ::pg_query::Node& WindowFunc::args(int index) const { + // @@protoc_insertion_point(field_get:pg_query.WindowFunc.args) + return _internal_args(index); +} +inline ::pg_query::Node* WindowFunc::_internal_add_args() { + return args_.Add(); +} +inline ::pg_query::Node* WindowFunc::add_args() { + // @@protoc_insertion_point(field_add:pg_query.WindowFunc.args) + return _internal_add_args(); +} +inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& +WindowFunc::args() const { + // @@protoc_insertion_point(field_list:pg_query.WindowFunc.args) + return args_; +} + +// .pg_query.Node aggfilter = 7 [json_name = "aggfilter"]; +inline bool WindowFunc::_internal_has_aggfilter() const { + return this != internal_default_instance() && aggfilter_ != nullptr; +} +inline bool WindowFunc::has_aggfilter() const { + return _internal_has_aggfilter(); +} +inline void WindowFunc::clear_aggfilter() { + if (GetArena() == nullptr && aggfilter_ != nullptr) { + delete aggfilter_; + } + aggfilter_ = nullptr; +} +inline const ::pg_query::Node& WindowFunc::_internal_aggfilter() const { + const ::pg_query::Node* p = aggfilter_; + return p != nullptr ? *p : reinterpret_cast( + ::pg_query::_Node_default_instance_); +} +inline const ::pg_query::Node& WindowFunc::aggfilter() const { + // @@protoc_insertion_point(field_get:pg_query.WindowFunc.aggfilter) + return _internal_aggfilter(); +} +inline void WindowFunc::unsafe_arena_set_allocated_aggfilter( + ::pg_query::Node* aggfilter) { + if (GetArena() == nullptr) { + delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(aggfilter_); + } + aggfilter_ = aggfilter; + if (aggfilter) { + + } else { + + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.WindowFunc.aggfilter) +} +inline ::pg_query::Node* WindowFunc::release_aggfilter() { + + ::pg_query::Node* temp = aggfilter_; + aggfilter_ = nullptr; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + return temp; +} +inline ::pg_query::Node* WindowFunc::unsafe_arena_release_aggfilter() { + // @@protoc_insertion_point(field_release:pg_query.WindowFunc.aggfilter) + + ::pg_query::Node* temp = aggfilter_; + aggfilter_ = nullptr; + return temp; +} +inline ::pg_query::Node* WindowFunc::_internal_mutable_aggfilter() { + + if (aggfilter_ == nullptr) { + auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); + aggfilter_ = p; + } + return aggfilter_; +} +inline ::pg_query::Node* WindowFunc::mutable_aggfilter() { + // @@protoc_insertion_point(field_mutable:pg_query.WindowFunc.aggfilter) + return _internal_mutable_aggfilter(); +} +inline void WindowFunc::set_allocated_aggfilter(::pg_query::Node* aggfilter) { + ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); + if (message_arena == nullptr) { + delete aggfilter_; + } + if (aggfilter) { + ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = + ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(aggfilter); + if (message_arena != submessage_arena) { + aggfilter = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( + message_arena, aggfilter, submessage_arena); + } + + } else { + + } + aggfilter_ = aggfilter; + // @@protoc_insertion_point(field_set_allocated:pg_query.WindowFunc.aggfilter) +} + +// uint32 winref = 8 [json_name = "winref"]; +inline void WindowFunc::clear_winref() { + winref_ = 0u; +} +inline ::PROTOBUF_NAMESPACE_ID::uint32 WindowFunc::_internal_winref() const { + return winref_; +} +inline ::PROTOBUF_NAMESPACE_ID::uint32 WindowFunc::winref() const { + // @@protoc_insertion_point(field_get:pg_query.WindowFunc.winref) + return _internal_winref(); +} +inline void WindowFunc::_internal_set_winref(::PROTOBUF_NAMESPACE_ID::uint32 value) { + + winref_ = value; +} +inline void WindowFunc::set_winref(::PROTOBUF_NAMESPACE_ID::uint32 value) { + _internal_set_winref(value); + // @@protoc_insertion_point(field_set:pg_query.WindowFunc.winref) +} + +// bool winstar = 9 [json_name = "winstar"]; +inline void WindowFunc::clear_winstar() { + winstar_ = false; +} +inline bool WindowFunc::_internal_winstar() const { + return winstar_; +} +inline bool WindowFunc::winstar() const { + // @@protoc_insertion_point(field_get:pg_query.WindowFunc.winstar) + return _internal_winstar(); +} +inline void WindowFunc::_internal_set_winstar(bool value) { + + winstar_ = value; +} +inline void WindowFunc::set_winstar(bool value) { + _internal_set_winstar(value); + // @@protoc_insertion_point(field_set:pg_query.WindowFunc.winstar) +} + +// bool winagg = 10 [json_name = "winagg"]; +inline void WindowFunc::clear_winagg() { + winagg_ = false; +} +inline bool WindowFunc::_internal_winagg() const { + return winagg_; +} +inline bool WindowFunc::winagg() const { + // @@protoc_insertion_point(field_get:pg_query.WindowFunc.winagg) + return _internal_winagg(); +} +inline void WindowFunc::_internal_set_winagg(bool value) { + + winagg_ = value; +} +inline void WindowFunc::set_winagg(bool value) { + _internal_set_winagg(value); + // @@protoc_insertion_point(field_set:pg_query.WindowFunc.winagg) +} + +// int32 location = 11 [json_name = "location"]; +inline void WindowFunc::clear_location() { + location_ = 0; +} +inline ::PROTOBUF_NAMESPACE_ID::int32 WindowFunc::_internal_location() const { + return location_; +} +inline ::PROTOBUF_NAMESPACE_ID::int32 WindowFunc::location() const { + // @@protoc_insertion_point(field_get:pg_query.WindowFunc.location) + return _internal_location(); +} +inline void WindowFunc::_internal_set_location(::PROTOBUF_NAMESPACE_ID::int32 value) { + + location_ = value; +} +inline void WindowFunc::set_location(::PROTOBUF_NAMESPACE_ID::int32 value) { + _internal_set_location(value); + // @@protoc_insertion_point(field_set:pg_query.WindowFunc.location) +} + +// ------------------------------------------------------------------- + +// SubscriptingRef + +// .pg_query.Node xpr = 1 [json_name = "xpr"]; +inline bool SubscriptingRef::_internal_has_xpr() const { + return this != internal_default_instance() && xpr_ != nullptr; +} +inline bool SubscriptingRef::has_xpr() const { + return _internal_has_xpr(); +} +inline void SubscriptingRef::clear_xpr() { + if (GetArena() == nullptr && xpr_ != nullptr) { + delete xpr_; + } + xpr_ = nullptr; +} +inline const ::pg_query::Node& SubscriptingRef::_internal_xpr() const { + const ::pg_query::Node* p = xpr_; + return p != nullptr ? *p : reinterpret_cast( + ::pg_query::_Node_default_instance_); +} +inline const ::pg_query::Node& SubscriptingRef::xpr() const { + // @@protoc_insertion_point(field_get:pg_query.SubscriptingRef.xpr) + return _internal_xpr(); +} +inline void SubscriptingRef::unsafe_arena_set_allocated_xpr( + ::pg_query::Node* xpr) { + if (GetArena() == nullptr) { + delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(xpr_); + } + xpr_ = xpr; + if (xpr) { + + } else { + + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.SubscriptingRef.xpr) +} +inline ::pg_query::Node* SubscriptingRef::release_xpr() { + + ::pg_query::Node* temp = xpr_; + xpr_ = nullptr; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + return temp; +} +inline ::pg_query::Node* SubscriptingRef::unsafe_arena_release_xpr() { + // @@protoc_insertion_point(field_release:pg_query.SubscriptingRef.xpr) + + ::pg_query::Node* temp = xpr_; + xpr_ = nullptr; + return temp; +} +inline ::pg_query::Node* SubscriptingRef::_internal_mutable_xpr() { + + if (xpr_ == nullptr) { + auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); + xpr_ = p; + } + return xpr_; +} +inline ::pg_query::Node* SubscriptingRef::mutable_xpr() { + // @@protoc_insertion_point(field_mutable:pg_query.SubscriptingRef.xpr) + return _internal_mutable_xpr(); +} +inline void SubscriptingRef::set_allocated_xpr(::pg_query::Node* xpr) { + ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); + if (message_arena == nullptr) { + delete xpr_; + } + if (xpr) { + ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = + ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(xpr); + if (message_arena != submessage_arena) { + xpr = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( + message_arena, xpr, submessage_arena); + } + + } else { + + } + xpr_ = xpr; + // @@protoc_insertion_point(field_set_allocated:pg_query.SubscriptingRef.xpr) +} + +// uint32 refcontainertype = 2 [json_name = "refcontainertype"]; +inline void SubscriptingRef::clear_refcontainertype() { + refcontainertype_ = 0u; +} +inline ::PROTOBUF_NAMESPACE_ID::uint32 SubscriptingRef::_internal_refcontainertype() const { + return refcontainertype_; +} +inline ::PROTOBUF_NAMESPACE_ID::uint32 SubscriptingRef::refcontainertype() const { + // @@protoc_insertion_point(field_get:pg_query.SubscriptingRef.refcontainertype) + return _internal_refcontainertype(); +} +inline void SubscriptingRef::_internal_set_refcontainertype(::PROTOBUF_NAMESPACE_ID::uint32 value) { + + refcontainertype_ = value; +} +inline void SubscriptingRef::set_refcontainertype(::PROTOBUF_NAMESPACE_ID::uint32 value) { + _internal_set_refcontainertype(value); + // @@protoc_insertion_point(field_set:pg_query.SubscriptingRef.refcontainertype) +} + +// uint32 refelemtype = 3 [json_name = "refelemtype"]; +inline void SubscriptingRef::clear_refelemtype() { + refelemtype_ = 0u; +} +inline ::PROTOBUF_NAMESPACE_ID::uint32 SubscriptingRef::_internal_refelemtype() const { + return refelemtype_; +} +inline ::PROTOBUF_NAMESPACE_ID::uint32 SubscriptingRef::refelemtype() const { + // @@protoc_insertion_point(field_get:pg_query.SubscriptingRef.refelemtype) + return _internal_refelemtype(); +} +inline void SubscriptingRef::_internal_set_refelemtype(::PROTOBUF_NAMESPACE_ID::uint32 value) { + + refelemtype_ = value; +} +inline void SubscriptingRef::set_refelemtype(::PROTOBUF_NAMESPACE_ID::uint32 value) { + _internal_set_refelemtype(value); + // @@protoc_insertion_point(field_set:pg_query.SubscriptingRef.refelemtype) +} + +// int32 reftypmod = 4 [json_name = "reftypmod"]; +inline void SubscriptingRef::clear_reftypmod() { + reftypmod_ = 0; +} +inline ::PROTOBUF_NAMESPACE_ID::int32 SubscriptingRef::_internal_reftypmod() const { + return reftypmod_; +} +inline ::PROTOBUF_NAMESPACE_ID::int32 SubscriptingRef::reftypmod() const { + // @@protoc_insertion_point(field_get:pg_query.SubscriptingRef.reftypmod) + return _internal_reftypmod(); +} +inline void SubscriptingRef::_internal_set_reftypmod(::PROTOBUF_NAMESPACE_ID::int32 value) { + + reftypmod_ = value; +} +inline void SubscriptingRef::set_reftypmod(::PROTOBUF_NAMESPACE_ID::int32 value) { + _internal_set_reftypmod(value); + // @@protoc_insertion_point(field_set:pg_query.SubscriptingRef.reftypmod) +} + +// uint32 refcollid = 5 [json_name = "refcollid"]; +inline void SubscriptingRef::clear_refcollid() { + refcollid_ = 0u; +} +inline ::PROTOBUF_NAMESPACE_ID::uint32 SubscriptingRef::_internal_refcollid() const { + return refcollid_; +} +inline ::PROTOBUF_NAMESPACE_ID::uint32 SubscriptingRef::refcollid() const { + // @@protoc_insertion_point(field_get:pg_query.SubscriptingRef.refcollid) + return _internal_refcollid(); +} +inline void SubscriptingRef::_internal_set_refcollid(::PROTOBUF_NAMESPACE_ID::uint32 value) { + + refcollid_ = value; +} +inline void SubscriptingRef::set_refcollid(::PROTOBUF_NAMESPACE_ID::uint32 value) { + _internal_set_refcollid(value); + // @@protoc_insertion_point(field_set:pg_query.SubscriptingRef.refcollid) +} + +// repeated .pg_query.Node refupperindexpr = 6 [json_name = "refupperindexpr"]; +inline int SubscriptingRef::_internal_refupperindexpr_size() const { + return refupperindexpr_.size(); +} +inline int SubscriptingRef::refupperindexpr_size() const { + return _internal_refupperindexpr_size(); +} +inline void SubscriptingRef::clear_refupperindexpr() { + refupperindexpr_.Clear(); +} +inline ::pg_query::Node* SubscriptingRef::mutable_refupperindexpr(int index) { + // @@protoc_insertion_point(field_mutable:pg_query.SubscriptingRef.refupperindexpr) + return refupperindexpr_.Mutable(index); +} +inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* +SubscriptingRef::mutable_refupperindexpr() { + // @@protoc_insertion_point(field_mutable_list:pg_query.SubscriptingRef.refupperindexpr) + return &refupperindexpr_; +} +inline const ::pg_query::Node& SubscriptingRef::_internal_refupperindexpr(int index) const { + return refupperindexpr_.Get(index); +} +inline const ::pg_query::Node& SubscriptingRef::refupperindexpr(int index) const { + // @@protoc_insertion_point(field_get:pg_query.SubscriptingRef.refupperindexpr) + return _internal_refupperindexpr(index); +} +inline ::pg_query::Node* SubscriptingRef::_internal_add_refupperindexpr() { + return refupperindexpr_.Add(); +} +inline ::pg_query::Node* SubscriptingRef::add_refupperindexpr() { + // @@protoc_insertion_point(field_add:pg_query.SubscriptingRef.refupperindexpr) + return _internal_add_refupperindexpr(); +} +inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& +SubscriptingRef::refupperindexpr() const { + // @@protoc_insertion_point(field_list:pg_query.SubscriptingRef.refupperindexpr) + return refupperindexpr_; +} + +// repeated .pg_query.Node reflowerindexpr = 7 [json_name = "reflowerindexpr"]; +inline int SubscriptingRef::_internal_reflowerindexpr_size() const { + return reflowerindexpr_.size(); +} +inline int SubscriptingRef::reflowerindexpr_size() const { + return _internal_reflowerindexpr_size(); +} +inline void SubscriptingRef::clear_reflowerindexpr() { + reflowerindexpr_.Clear(); +} +inline ::pg_query::Node* SubscriptingRef::mutable_reflowerindexpr(int index) { + // @@protoc_insertion_point(field_mutable:pg_query.SubscriptingRef.reflowerindexpr) + return reflowerindexpr_.Mutable(index); +} +inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* +SubscriptingRef::mutable_reflowerindexpr() { + // @@protoc_insertion_point(field_mutable_list:pg_query.SubscriptingRef.reflowerindexpr) + return &reflowerindexpr_; +} +inline const ::pg_query::Node& SubscriptingRef::_internal_reflowerindexpr(int index) const { + return reflowerindexpr_.Get(index); +} +inline const ::pg_query::Node& SubscriptingRef::reflowerindexpr(int index) const { + // @@protoc_insertion_point(field_get:pg_query.SubscriptingRef.reflowerindexpr) + return _internal_reflowerindexpr(index); +} +inline ::pg_query::Node* SubscriptingRef::_internal_add_reflowerindexpr() { + return reflowerindexpr_.Add(); +} +inline ::pg_query::Node* SubscriptingRef::add_reflowerindexpr() { + // @@protoc_insertion_point(field_add:pg_query.SubscriptingRef.reflowerindexpr) + return _internal_add_reflowerindexpr(); +} +inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& +SubscriptingRef::reflowerindexpr() const { + // @@protoc_insertion_point(field_list:pg_query.SubscriptingRef.reflowerindexpr) + return reflowerindexpr_; +} + +// .pg_query.Node refexpr = 8 [json_name = "refexpr"]; +inline bool SubscriptingRef::_internal_has_refexpr() const { + return this != internal_default_instance() && refexpr_ != nullptr; +} +inline bool SubscriptingRef::has_refexpr() const { + return _internal_has_refexpr(); +} +inline void SubscriptingRef::clear_refexpr() { + if (GetArena() == nullptr && refexpr_ != nullptr) { + delete refexpr_; + } + refexpr_ = nullptr; +} +inline const ::pg_query::Node& SubscriptingRef::_internal_refexpr() const { + const ::pg_query::Node* p = refexpr_; + return p != nullptr ? *p : reinterpret_cast( + ::pg_query::_Node_default_instance_); +} +inline const ::pg_query::Node& SubscriptingRef::refexpr() const { + // @@protoc_insertion_point(field_get:pg_query.SubscriptingRef.refexpr) + return _internal_refexpr(); +} +inline void SubscriptingRef::unsafe_arena_set_allocated_refexpr( + ::pg_query::Node* refexpr) { + if (GetArena() == nullptr) { + delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(refexpr_); + } + refexpr_ = refexpr; + if (refexpr) { + + } else { + + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.SubscriptingRef.refexpr) +} +inline ::pg_query::Node* SubscriptingRef::release_refexpr() { + + ::pg_query::Node* temp = refexpr_; + refexpr_ = nullptr; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + return temp; +} +inline ::pg_query::Node* SubscriptingRef::unsafe_arena_release_refexpr() { + // @@protoc_insertion_point(field_release:pg_query.SubscriptingRef.refexpr) + + ::pg_query::Node* temp = refexpr_; + refexpr_ = nullptr; + return temp; +} +inline ::pg_query::Node* SubscriptingRef::_internal_mutable_refexpr() { + + if (refexpr_ == nullptr) { + auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); + refexpr_ = p; + } + return refexpr_; +} +inline ::pg_query::Node* SubscriptingRef::mutable_refexpr() { + // @@protoc_insertion_point(field_mutable:pg_query.SubscriptingRef.refexpr) + return _internal_mutable_refexpr(); +} +inline void SubscriptingRef::set_allocated_refexpr(::pg_query::Node* refexpr) { + ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); + if (message_arena == nullptr) { + delete refexpr_; + } + if (refexpr) { + ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = + ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(refexpr); + if (message_arena != submessage_arena) { + refexpr = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( + message_arena, refexpr, submessage_arena); + } + + } else { + + } + refexpr_ = refexpr; + // @@protoc_insertion_point(field_set_allocated:pg_query.SubscriptingRef.refexpr) +} + +// .pg_query.Node refassgnexpr = 9 [json_name = "refassgnexpr"]; +inline bool SubscriptingRef::_internal_has_refassgnexpr() const { + return this != internal_default_instance() && refassgnexpr_ != nullptr; +} +inline bool SubscriptingRef::has_refassgnexpr() const { + return _internal_has_refassgnexpr(); +} +inline void SubscriptingRef::clear_refassgnexpr() { + if (GetArena() == nullptr && refassgnexpr_ != nullptr) { + delete refassgnexpr_; + } + refassgnexpr_ = nullptr; +} +inline const ::pg_query::Node& SubscriptingRef::_internal_refassgnexpr() const { + const ::pg_query::Node* p = refassgnexpr_; + return p != nullptr ? *p : reinterpret_cast( + ::pg_query::_Node_default_instance_); +} +inline const ::pg_query::Node& SubscriptingRef::refassgnexpr() const { + // @@protoc_insertion_point(field_get:pg_query.SubscriptingRef.refassgnexpr) + return _internal_refassgnexpr(); +} +inline void SubscriptingRef::unsafe_arena_set_allocated_refassgnexpr( + ::pg_query::Node* refassgnexpr) { + if (GetArena() == nullptr) { + delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(refassgnexpr_); + } + refassgnexpr_ = refassgnexpr; + if (refassgnexpr) { + + } else { + + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.SubscriptingRef.refassgnexpr) +} +inline ::pg_query::Node* SubscriptingRef::release_refassgnexpr() { + + ::pg_query::Node* temp = refassgnexpr_; + refassgnexpr_ = nullptr; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + return temp; +} +inline ::pg_query::Node* SubscriptingRef::unsafe_arena_release_refassgnexpr() { + // @@protoc_insertion_point(field_release:pg_query.SubscriptingRef.refassgnexpr) + + ::pg_query::Node* temp = refassgnexpr_; + refassgnexpr_ = nullptr; + return temp; +} +inline ::pg_query::Node* SubscriptingRef::_internal_mutable_refassgnexpr() { + + if (refassgnexpr_ == nullptr) { + auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); + refassgnexpr_ = p; + } + return refassgnexpr_; +} +inline ::pg_query::Node* SubscriptingRef::mutable_refassgnexpr() { + // @@protoc_insertion_point(field_mutable:pg_query.SubscriptingRef.refassgnexpr) + return _internal_mutable_refassgnexpr(); +} +inline void SubscriptingRef::set_allocated_refassgnexpr(::pg_query::Node* refassgnexpr) { + ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); + if (message_arena == nullptr) { + delete refassgnexpr_; + } + if (refassgnexpr) { + ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = + ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(refassgnexpr); + if (message_arena != submessage_arena) { + refassgnexpr = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( + message_arena, refassgnexpr, submessage_arena); + } + + } else { + + } + refassgnexpr_ = refassgnexpr; + // @@protoc_insertion_point(field_set_allocated:pg_query.SubscriptingRef.refassgnexpr) +} + +// ------------------------------------------------------------------- + +// FuncExpr + +// .pg_query.Node xpr = 1 [json_name = "xpr"]; +inline bool FuncExpr::_internal_has_xpr() const { + return this != internal_default_instance() && xpr_ != nullptr; +} +inline bool FuncExpr::has_xpr() const { + return _internal_has_xpr(); +} +inline void FuncExpr::clear_xpr() { + if (GetArena() == nullptr && xpr_ != nullptr) { + delete xpr_; + } + xpr_ = nullptr; +} +inline const ::pg_query::Node& FuncExpr::_internal_xpr() const { + const ::pg_query::Node* p = xpr_; + return p != nullptr ? *p : reinterpret_cast( + ::pg_query::_Node_default_instance_); +} +inline const ::pg_query::Node& FuncExpr::xpr() const { + // @@protoc_insertion_point(field_get:pg_query.FuncExpr.xpr) + return _internal_xpr(); +} +inline void FuncExpr::unsafe_arena_set_allocated_xpr( + ::pg_query::Node* xpr) { + if (GetArena() == nullptr) { + delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(xpr_); + } + xpr_ = xpr; + if (xpr) { + + } else { + + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.FuncExpr.xpr) +} +inline ::pg_query::Node* FuncExpr::release_xpr() { + + ::pg_query::Node* temp = xpr_; + xpr_ = nullptr; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + return temp; +} +inline ::pg_query::Node* FuncExpr::unsafe_arena_release_xpr() { + // @@protoc_insertion_point(field_release:pg_query.FuncExpr.xpr) + + ::pg_query::Node* temp = xpr_; + xpr_ = nullptr; + return temp; +} +inline ::pg_query::Node* FuncExpr::_internal_mutable_xpr() { + + if (xpr_ == nullptr) { + auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); + xpr_ = p; + } + return xpr_; +} +inline ::pg_query::Node* FuncExpr::mutable_xpr() { + // @@protoc_insertion_point(field_mutable:pg_query.FuncExpr.xpr) + return _internal_mutable_xpr(); +} +inline void FuncExpr::set_allocated_xpr(::pg_query::Node* xpr) { + ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); + if (message_arena == nullptr) { + delete xpr_; + } + if (xpr) { + ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = + ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(xpr); + if (message_arena != submessage_arena) { + xpr = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( + message_arena, xpr, submessage_arena); + } + + } else { + + } + xpr_ = xpr; + // @@protoc_insertion_point(field_set_allocated:pg_query.FuncExpr.xpr) +} + +// uint32 funcid = 2 [json_name = "funcid"]; +inline void FuncExpr::clear_funcid() { + funcid_ = 0u; +} +inline ::PROTOBUF_NAMESPACE_ID::uint32 FuncExpr::_internal_funcid() const { + return funcid_; +} +inline ::PROTOBUF_NAMESPACE_ID::uint32 FuncExpr::funcid() const { + // @@protoc_insertion_point(field_get:pg_query.FuncExpr.funcid) + return _internal_funcid(); +} +inline void FuncExpr::_internal_set_funcid(::PROTOBUF_NAMESPACE_ID::uint32 value) { + + funcid_ = value; +} +inline void FuncExpr::set_funcid(::PROTOBUF_NAMESPACE_ID::uint32 value) { + _internal_set_funcid(value); + // @@protoc_insertion_point(field_set:pg_query.FuncExpr.funcid) +} + +// uint32 funcresulttype = 3 [json_name = "funcresulttype"]; +inline void FuncExpr::clear_funcresulttype() { + funcresulttype_ = 0u; +} +inline ::PROTOBUF_NAMESPACE_ID::uint32 FuncExpr::_internal_funcresulttype() const { + return funcresulttype_; +} +inline ::PROTOBUF_NAMESPACE_ID::uint32 FuncExpr::funcresulttype() const { + // @@protoc_insertion_point(field_get:pg_query.FuncExpr.funcresulttype) + return _internal_funcresulttype(); +} +inline void FuncExpr::_internal_set_funcresulttype(::PROTOBUF_NAMESPACE_ID::uint32 value) { + + funcresulttype_ = value; +} +inline void FuncExpr::set_funcresulttype(::PROTOBUF_NAMESPACE_ID::uint32 value) { + _internal_set_funcresulttype(value); + // @@protoc_insertion_point(field_set:pg_query.FuncExpr.funcresulttype) +} + +// bool funcretset = 4 [json_name = "funcretset"]; +inline void FuncExpr::clear_funcretset() { + funcretset_ = false; +} +inline bool FuncExpr::_internal_funcretset() const { + return funcretset_; +} +inline bool FuncExpr::funcretset() const { + // @@protoc_insertion_point(field_get:pg_query.FuncExpr.funcretset) + return _internal_funcretset(); +} +inline void FuncExpr::_internal_set_funcretset(bool value) { + + funcretset_ = value; +} +inline void FuncExpr::set_funcretset(bool value) { + _internal_set_funcretset(value); + // @@protoc_insertion_point(field_set:pg_query.FuncExpr.funcretset) +} + +// bool funcvariadic = 5 [json_name = "funcvariadic"]; +inline void FuncExpr::clear_funcvariadic() { + funcvariadic_ = false; +} +inline bool FuncExpr::_internal_funcvariadic() const { + return funcvariadic_; +} +inline bool FuncExpr::funcvariadic() const { + // @@protoc_insertion_point(field_get:pg_query.FuncExpr.funcvariadic) + return _internal_funcvariadic(); +} +inline void FuncExpr::_internal_set_funcvariadic(bool value) { + + funcvariadic_ = value; +} +inline void FuncExpr::set_funcvariadic(bool value) { + _internal_set_funcvariadic(value); + // @@protoc_insertion_point(field_set:pg_query.FuncExpr.funcvariadic) +} + +// .pg_query.CoercionForm funcformat = 6 [json_name = "funcformat"]; +inline void FuncExpr::clear_funcformat() { + funcformat_ = 0; +} +inline ::pg_query::CoercionForm FuncExpr::_internal_funcformat() const { + return static_cast< ::pg_query::CoercionForm >(funcformat_); +} +inline ::pg_query::CoercionForm FuncExpr::funcformat() const { + // @@protoc_insertion_point(field_get:pg_query.FuncExpr.funcformat) + return _internal_funcformat(); +} +inline void FuncExpr::_internal_set_funcformat(::pg_query::CoercionForm value) { + + funcformat_ = value; +} +inline void FuncExpr::set_funcformat(::pg_query::CoercionForm value) { + _internal_set_funcformat(value); + // @@protoc_insertion_point(field_set:pg_query.FuncExpr.funcformat) +} + +// uint32 funccollid = 7 [json_name = "funccollid"]; +inline void FuncExpr::clear_funccollid() { + funccollid_ = 0u; +} +inline ::PROTOBUF_NAMESPACE_ID::uint32 FuncExpr::_internal_funccollid() const { + return funccollid_; +} +inline ::PROTOBUF_NAMESPACE_ID::uint32 FuncExpr::funccollid() const { + // @@protoc_insertion_point(field_get:pg_query.FuncExpr.funccollid) + return _internal_funccollid(); +} +inline void FuncExpr::_internal_set_funccollid(::PROTOBUF_NAMESPACE_ID::uint32 value) { + + funccollid_ = value; +} +inline void FuncExpr::set_funccollid(::PROTOBUF_NAMESPACE_ID::uint32 value) { + _internal_set_funccollid(value); + // @@protoc_insertion_point(field_set:pg_query.FuncExpr.funccollid) +} + +// uint32 inputcollid = 8 [json_name = "inputcollid"]; +inline void FuncExpr::clear_inputcollid() { + inputcollid_ = 0u; +} +inline ::PROTOBUF_NAMESPACE_ID::uint32 FuncExpr::_internal_inputcollid() const { + return inputcollid_; +} +inline ::PROTOBUF_NAMESPACE_ID::uint32 FuncExpr::inputcollid() const { + // @@protoc_insertion_point(field_get:pg_query.FuncExpr.inputcollid) + return _internal_inputcollid(); +} +inline void FuncExpr::_internal_set_inputcollid(::PROTOBUF_NAMESPACE_ID::uint32 value) { + + inputcollid_ = value; +} +inline void FuncExpr::set_inputcollid(::PROTOBUF_NAMESPACE_ID::uint32 value) { + _internal_set_inputcollid(value); + // @@protoc_insertion_point(field_set:pg_query.FuncExpr.inputcollid) +} + +// repeated .pg_query.Node args = 9 [json_name = "args"]; +inline int FuncExpr::_internal_args_size() const { + return args_.size(); +} +inline int FuncExpr::args_size() const { + return _internal_args_size(); +} +inline void FuncExpr::clear_args() { + args_.Clear(); +} +inline ::pg_query::Node* FuncExpr::mutable_args(int index) { + // @@protoc_insertion_point(field_mutable:pg_query.FuncExpr.args) + return args_.Mutable(index); +} +inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* +FuncExpr::mutable_args() { + // @@protoc_insertion_point(field_mutable_list:pg_query.FuncExpr.args) + return &args_; +} +inline const ::pg_query::Node& FuncExpr::_internal_args(int index) const { + return args_.Get(index); +} +inline const ::pg_query::Node& FuncExpr::args(int index) const { + // @@protoc_insertion_point(field_get:pg_query.FuncExpr.args) + return _internal_args(index); +} +inline ::pg_query::Node* FuncExpr::_internal_add_args() { + return args_.Add(); +} +inline ::pg_query::Node* FuncExpr::add_args() { + // @@protoc_insertion_point(field_add:pg_query.FuncExpr.args) + return _internal_add_args(); +} +inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& +FuncExpr::args() const { + // @@protoc_insertion_point(field_list:pg_query.FuncExpr.args) + return args_; +} + +// int32 location = 10 [json_name = "location"]; +inline void FuncExpr::clear_location() { + location_ = 0; +} +inline ::PROTOBUF_NAMESPACE_ID::int32 FuncExpr::_internal_location() const { + return location_; +} +inline ::PROTOBUF_NAMESPACE_ID::int32 FuncExpr::location() const { + // @@protoc_insertion_point(field_get:pg_query.FuncExpr.location) + return _internal_location(); +} +inline void FuncExpr::_internal_set_location(::PROTOBUF_NAMESPACE_ID::int32 value) { + + location_ = value; +} +inline void FuncExpr::set_location(::PROTOBUF_NAMESPACE_ID::int32 value) { + _internal_set_location(value); + // @@protoc_insertion_point(field_set:pg_query.FuncExpr.location) +} + +// ------------------------------------------------------------------- + +// NamedArgExpr + +// .pg_query.Node xpr = 1 [json_name = "xpr"]; +inline bool NamedArgExpr::_internal_has_xpr() const { + return this != internal_default_instance() && xpr_ != nullptr; +} +inline bool NamedArgExpr::has_xpr() const { + return _internal_has_xpr(); +} +inline void NamedArgExpr::clear_xpr() { + if (GetArena() == nullptr && xpr_ != nullptr) { + delete xpr_; + } + xpr_ = nullptr; +} +inline const ::pg_query::Node& NamedArgExpr::_internal_xpr() const { + const ::pg_query::Node* p = xpr_; + return p != nullptr ? *p : reinterpret_cast( + ::pg_query::_Node_default_instance_); +} +inline const ::pg_query::Node& NamedArgExpr::xpr() const { + // @@protoc_insertion_point(field_get:pg_query.NamedArgExpr.xpr) + return _internal_xpr(); +} +inline void NamedArgExpr::unsafe_arena_set_allocated_xpr( + ::pg_query::Node* xpr) { + if (GetArena() == nullptr) { + delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(xpr_); + } + xpr_ = xpr; + if (xpr) { + + } else { + + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.NamedArgExpr.xpr) +} +inline ::pg_query::Node* NamedArgExpr::release_xpr() { + + ::pg_query::Node* temp = xpr_; + xpr_ = nullptr; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + return temp; +} +inline ::pg_query::Node* NamedArgExpr::unsafe_arena_release_xpr() { + // @@protoc_insertion_point(field_release:pg_query.NamedArgExpr.xpr) + + ::pg_query::Node* temp = xpr_; + xpr_ = nullptr; + return temp; +} +inline ::pg_query::Node* NamedArgExpr::_internal_mutable_xpr() { + + if (xpr_ == nullptr) { + auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); + xpr_ = p; + } + return xpr_; +} +inline ::pg_query::Node* NamedArgExpr::mutable_xpr() { + // @@protoc_insertion_point(field_mutable:pg_query.NamedArgExpr.xpr) + return _internal_mutable_xpr(); +} +inline void NamedArgExpr::set_allocated_xpr(::pg_query::Node* xpr) { + ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); + if (message_arena == nullptr) { + delete xpr_; + } + if (xpr) { + ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = + ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(xpr); + if (message_arena != submessage_arena) { + xpr = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( + message_arena, xpr, submessage_arena); + } + + } else { + + } + xpr_ = xpr; + // @@protoc_insertion_point(field_set_allocated:pg_query.NamedArgExpr.xpr) +} + +// .pg_query.Node arg = 2 [json_name = "arg"]; +inline bool NamedArgExpr::_internal_has_arg() const { + return this != internal_default_instance() && arg_ != nullptr; +} +inline bool NamedArgExpr::has_arg() const { + return _internal_has_arg(); +} +inline void NamedArgExpr::clear_arg() { + if (GetArena() == nullptr && arg_ != nullptr) { + delete arg_; + } + arg_ = nullptr; +} +inline const ::pg_query::Node& NamedArgExpr::_internal_arg() const { + const ::pg_query::Node* p = arg_; + return p != nullptr ? *p : reinterpret_cast( + ::pg_query::_Node_default_instance_); +} +inline const ::pg_query::Node& NamedArgExpr::arg() const { + // @@protoc_insertion_point(field_get:pg_query.NamedArgExpr.arg) + return _internal_arg(); +} +inline void NamedArgExpr::unsafe_arena_set_allocated_arg( + ::pg_query::Node* arg) { + if (GetArena() == nullptr) { + delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(arg_); + } + arg_ = arg; + if (arg) { + + } else { + + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.NamedArgExpr.arg) +} +inline ::pg_query::Node* NamedArgExpr::release_arg() { + + ::pg_query::Node* temp = arg_; + arg_ = nullptr; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + return temp; +} +inline ::pg_query::Node* NamedArgExpr::unsafe_arena_release_arg() { + // @@protoc_insertion_point(field_release:pg_query.NamedArgExpr.arg) + + ::pg_query::Node* temp = arg_; + arg_ = nullptr; + return temp; +} +inline ::pg_query::Node* NamedArgExpr::_internal_mutable_arg() { + + if (arg_ == nullptr) { + auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); + arg_ = p; + } + return arg_; +} +inline ::pg_query::Node* NamedArgExpr::mutable_arg() { + // @@protoc_insertion_point(field_mutable:pg_query.NamedArgExpr.arg) + return _internal_mutable_arg(); +} +inline void NamedArgExpr::set_allocated_arg(::pg_query::Node* arg) { + ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); + if (message_arena == nullptr) { + delete arg_; + } + if (arg) { + ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = + ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(arg); + if (message_arena != submessage_arena) { + arg = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( + message_arena, arg, submessage_arena); + } + + } else { + + } + arg_ = arg; + // @@protoc_insertion_point(field_set_allocated:pg_query.NamedArgExpr.arg) +} + +// string name = 3 [json_name = "name"]; +inline void NamedArgExpr::clear_name() { + name_.ClearToEmpty(); +} +inline const std::string& NamedArgExpr::name() const { + // @@protoc_insertion_point(field_get:pg_query.NamedArgExpr.name) + return _internal_name(); +} +inline void NamedArgExpr::set_name(const std::string& value) { + _internal_set_name(value); + // @@protoc_insertion_point(field_set:pg_query.NamedArgExpr.name) +} +inline std::string* NamedArgExpr::mutable_name() { + // @@protoc_insertion_point(field_mutable:pg_query.NamedArgExpr.name) + return _internal_mutable_name(); +} +inline const std::string& NamedArgExpr::_internal_name() const { + return name_.Get(); +} +inline void NamedArgExpr::_internal_set_name(const std::string& value) { + + name_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArena()); +} +inline void NamedArgExpr::set_name(std::string&& value) { + + name_.Set( + ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::move(value), GetArena()); + // @@protoc_insertion_point(field_set_rvalue:pg_query.NamedArgExpr.name) +} +inline void NamedArgExpr::set_name(const char* value) { + GOOGLE_DCHECK(value != nullptr); + + name_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string(value), GetArena()); + // @@protoc_insertion_point(field_set_char:pg_query.NamedArgExpr.name) +} +inline void NamedArgExpr::set_name(const char* value, + size_t size) { + + name_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string( + reinterpret_cast(value), size), GetArena()); + // @@protoc_insertion_point(field_set_pointer:pg_query.NamedArgExpr.name) +} +inline std::string* NamedArgExpr::_internal_mutable_name() { + + return name_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArena()); +} +inline std::string* NamedArgExpr::release_name() { + // @@protoc_insertion_point(field_release:pg_query.NamedArgExpr.name) + return name_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); +} +inline void NamedArgExpr::set_allocated_name(std::string* name) { + if (name != nullptr) { + + } else { + + } + name_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), name, + GetArena()); + // @@protoc_insertion_point(field_set_allocated:pg_query.NamedArgExpr.name) +} + +// int32 argnumber = 4 [json_name = "argnumber"]; +inline void NamedArgExpr::clear_argnumber() { + argnumber_ = 0; +} +inline ::PROTOBUF_NAMESPACE_ID::int32 NamedArgExpr::_internal_argnumber() const { + return argnumber_; +} +inline ::PROTOBUF_NAMESPACE_ID::int32 NamedArgExpr::argnumber() const { + // @@protoc_insertion_point(field_get:pg_query.NamedArgExpr.argnumber) + return _internal_argnumber(); +} +inline void NamedArgExpr::_internal_set_argnumber(::PROTOBUF_NAMESPACE_ID::int32 value) { + + argnumber_ = value; +} +inline void NamedArgExpr::set_argnumber(::PROTOBUF_NAMESPACE_ID::int32 value) { + _internal_set_argnumber(value); + // @@protoc_insertion_point(field_set:pg_query.NamedArgExpr.argnumber) +} + +// int32 location = 5 [json_name = "location"]; +inline void NamedArgExpr::clear_location() { + location_ = 0; +} +inline ::PROTOBUF_NAMESPACE_ID::int32 NamedArgExpr::_internal_location() const { + return location_; +} +inline ::PROTOBUF_NAMESPACE_ID::int32 NamedArgExpr::location() const { + // @@protoc_insertion_point(field_get:pg_query.NamedArgExpr.location) + return _internal_location(); +} +inline void NamedArgExpr::_internal_set_location(::PROTOBUF_NAMESPACE_ID::int32 value) { + + location_ = value; +} +inline void NamedArgExpr::set_location(::PROTOBUF_NAMESPACE_ID::int32 value) { + _internal_set_location(value); + // @@protoc_insertion_point(field_set:pg_query.NamedArgExpr.location) +} + +// ------------------------------------------------------------------- + +// OpExpr + +// .pg_query.Node xpr = 1 [json_name = "xpr"]; +inline bool OpExpr::_internal_has_xpr() const { + return this != internal_default_instance() && xpr_ != nullptr; +} +inline bool OpExpr::has_xpr() const { + return _internal_has_xpr(); +} +inline void OpExpr::clear_xpr() { + if (GetArena() == nullptr && xpr_ != nullptr) { + delete xpr_; + } + xpr_ = nullptr; +} +inline const ::pg_query::Node& OpExpr::_internal_xpr() const { + const ::pg_query::Node* p = xpr_; + return p != nullptr ? *p : reinterpret_cast( + ::pg_query::_Node_default_instance_); +} +inline const ::pg_query::Node& OpExpr::xpr() const { + // @@protoc_insertion_point(field_get:pg_query.OpExpr.xpr) + return _internal_xpr(); +} +inline void OpExpr::unsafe_arena_set_allocated_xpr( + ::pg_query::Node* xpr) { + if (GetArena() == nullptr) { + delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(xpr_); + } + xpr_ = xpr; + if (xpr) { + + } else { + + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.OpExpr.xpr) +} +inline ::pg_query::Node* OpExpr::release_xpr() { + + ::pg_query::Node* temp = xpr_; + xpr_ = nullptr; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + return temp; +} +inline ::pg_query::Node* OpExpr::unsafe_arena_release_xpr() { + // @@protoc_insertion_point(field_release:pg_query.OpExpr.xpr) + + ::pg_query::Node* temp = xpr_; + xpr_ = nullptr; + return temp; +} +inline ::pg_query::Node* OpExpr::_internal_mutable_xpr() { + + if (xpr_ == nullptr) { + auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); + xpr_ = p; + } + return xpr_; +} +inline ::pg_query::Node* OpExpr::mutable_xpr() { + // @@protoc_insertion_point(field_mutable:pg_query.OpExpr.xpr) + return _internal_mutable_xpr(); +} +inline void OpExpr::set_allocated_xpr(::pg_query::Node* xpr) { + ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); + if (message_arena == nullptr) { + delete xpr_; + } + if (xpr) { + ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = + ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(xpr); + if (message_arena != submessage_arena) { + xpr = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( + message_arena, xpr, submessage_arena); + } + + } else { + + } + xpr_ = xpr; + // @@protoc_insertion_point(field_set_allocated:pg_query.OpExpr.xpr) +} + +// uint32 opno = 2 [json_name = "opno"]; +inline void OpExpr::clear_opno() { + opno_ = 0u; +} +inline ::PROTOBUF_NAMESPACE_ID::uint32 OpExpr::_internal_opno() const { + return opno_; +} +inline ::PROTOBUF_NAMESPACE_ID::uint32 OpExpr::opno() const { + // @@protoc_insertion_point(field_get:pg_query.OpExpr.opno) + return _internal_opno(); +} +inline void OpExpr::_internal_set_opno(::PROTOBUF_NAMESPACE_ID::uint32 value) { + + opno_ = value; +} +inline void OpExpr::set_opno(::PROTOBUF_NAMESPACE_ID::uint32 value) { + _internal_set_opno(value); + // @@protoc_insertion_point(field_set:pg_query.OpExpr.opno) +} + +// uint32 opfuncid = 3 [json_name = "opfuncid"]; +inline void OpExpr::clear_opfuncid() { + opfuncid_ = 0u; +} +inline ::PROTOBUF_NAMESPACE_ID::uint32 OpExpr::_internal_opfuncid() const { + return opfuncid_; +} +inline ::PROTOBUF_NAMESPACE_ID::uint32 OpExpr::opfuncid() const { + // @@protoc_insertion_point(field_get:pg_query.OpExpr.opfuncid) + return _internal_opfuncid(); +} +inline void OpExpr::_internal_set_opfuncid(::PROTOBUF_NAMESPACE_ID::uint32 value) { + + opfuncid_ = value; +} +inline void OpExpr::set_opfuncid(::PROTOBUF_NAMESPACE_ID::uint32 value) { + _internal_set_opfuncid(value); + // @@protoc_insertion_point(field_set:pg_query.OpExpr.opfuncid) +} + +// uint32 opresulttype = 4 [json_name = "opresulttype"]; +inline void OpExpr::clear_opresulttype() { + opresulttype_ = 0u; +} +inline ::PROTOBUF_NAMESPACE_ID::uint32 OpExpr::_internal_opresulttype() const { + return opresulttype_; +} +inline ::PROTOBUF_NAMESPACE_ID::uint32 OpExpr::opresulttype() const { + // @@protoc_insertion_point(field_get:pg_query.OpExpr.opresulttype) + return _internal_opresulttype(); +} +inline void OpExpr::_internal_set_opresulttype(::PROTOBUF_NAMESPACE_ID::uint32 value) { + + opresulttype_ = value; +} +inline void OpExpr::set_opresulttype(::PROTOBUF_NAMESPACE_ID::uint32 value) { + _internal_set_opresulttype(value); + // @@protoc_insertion_point(field_set:pg_query.OpExpr.opresulttype) +} + +// bool opretset = 5 [json_name = "opretset"]; +inline void OpExpr::clear_opretset() { + opretset_ = false; +} +inline bool OpExpr::_internal_opretset() const { + return opretset_; +} +inline bool OpExpr::opretset() const { + // @@protoc_insertion_point(field_get:pg_query.OpExpr.opretset) + return _internal_opretset(); +} +inline void OpExpr::_internal_set_opretset(bool value) { + + opretset_ = value; +} +inline void OpExpr::set_opretset(bool value) { + _internal_set_opretset(value); + // @@protoc_insertion_point(field_set:pg_query.OpExpr.opretset) +} + +// uint32 opcollid = 6 [json_name = "opcollid"]; +inline void OpExpr::clear_opcollid() { + opcollid_ = 0u; +} +inline ::PROTOBUF_NAMESPACE_ID::uint32 OpExpr::_internal_opcollid() const { + return opcollid_; +} +inline ::PROTOBUF_NAMESPACE_ID::uint32 OpExpr::opcollid() const { + // @@protoc_insertion_point(field_get:pg_query.OpExpr.opcollid) + return _internal_opcollid(); +} +inline void OpExpr::_internal_set_opcollid(::PROTOBUF_NAMESPACE_ID::uint32 value) { + + opcollid_ = value; +} +inline void OpExpr::set_opcollid(::PROTOBUF_NAMESPACE_ID::uint32 value) { + _internal_set_opcollid(value); + // @@protoc_insertion_point(field_set:pg_query.OpExpr.opcollid) +} + +// uint32 inputcollid = 7 [json_name = "inputcollid"]; +inline void OpExpr::clear_inputcollid() { + inputcollid_ = 0u; +} +inline ::PROTOBUF_NAMESPACE_ID::uint32 OpExpr::_internal_inputcollid() const { + return inputcollid_; +} +inline ::PROTOBUF_NAMESPACE_ID::uint32 OpExpr::inputcollid() const { + // @@protoc_insertion_point(field_get:pg_query.OpExpr.inputcollid) + return _internal_inputcollid(); +} +inline void OpExpr::_internal_set_inputcollid(::PROTOBUF_NAMESPACE_ID::uint32 value) { + + inputcollid_ = value; +} +inline void OpExpr::set_inputcollid(::PROTOBUF_NAMESPACE_ID::uint32 value) { + _internal_set_inputcollid(value); + // @@protoc_insertion_point(field_set:pg_query.OpExpr.inputcollid) +} + +// repeated .pg_query.Node args = 8 [json_name = "args"]; +inline int OpExpr::_internal_args_size() const { + return args_.size(); +} +inline int OpExpr::args_size() const { + return _internal_args_size(); +} +inline void OpExpr::clear_args() { + args_.Clear(); +} +inline ::pg_query::Node* OpExpr::mutable_args(int index) { + // @@protoc_insertion_point(field_mutable:pg_query.OpExpr.args) + return args_.Mutable(index); +} +inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* +OpExpr::mutable_args() { + // @@protoc_insertion_point(field_mutable_list:pg_query.OpExpr.args) + return &args_; +} +inline const ::pg_query::Node& OpExpr::_internal_args(int index) const { + return args_.Get(index); +} +inline const ::pg_query::Node& OpExpr::args(int index) const { + // @@protoc_insertion_point(field_get:pg_query.OpExpr.args) + return _internal_args(index); +} +inline ::pg_query::Node* OpExpr::_internal_add_args() { + return args_.Add(); +} +inline ::pg_query::Node* OpExpr::add_args() { + // @@protoc_insertion_point(field_add:pg_query.OpExpr.args) + return _internal_add_args(); +} +inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& +OpExpr::args() const { + // @@protoc_insertion_point(field_list:pg_query.OpExpr.args) + return args_; +} + +// int32 location = 9 [json_name = "location"]; +inline void OpExpr::clear_location() { + location_ = 0; +} +inline ::PROTOBUF_NAMESPACE_ID::int32 OpExpr::_internal_location() const { + return location_; +} +inline ::PROTOBUF_NAMESPACE_ID::int32 OpExpr::location() const { + // @@protoc_insertion_point(field_get:pg_query.OpExpr.location) + return _internal_location(); +} +inline void OpExpr::_internal_set_location(::PROTOBUF_NAMESPACE_ID::int32 value) { + + location_ = value; +} +inline void OpExpr::set_location(::PROTOBUF_NAMESPACE_ID::int32 value) { + _internal_set_location(value); + // @@protoc_insertion_point(field_set:pg_query.OpExpr.location) +} + +// ------------------------------------------------------------------- + +// DistinctExpr + +// .pg_query.Node xpr = 1 [json_name = "xpr"]; +inline bool DistinctExpr::_internal_has_xpr() const { + return this != internal_default_instance() && xpr_ != nullptr; +} +inline bool DistinctExpr::has_xpr() const { + return _internal_has_xpr(); +} +inline void DistinctExpr::clear_xpr() { + if (GetArena() == nullptr && xpr_ != nullptr) { + delete xpr_; + } + xpr_ = nullptr; +} +inline const ::pg_query::Node& DistinctExpr::_internal_xpr() const { + const ::pg_query::Node* p = xpr_; + return p != nullptr ? *p : reinterpret_cast( + ::pg_query::_Node_default_instance_); +} +inline const ::pg_query::Node& DistinctExpr::xpr() const { + // @@protoc_insertion_point(field_get:pg_query.DistinctExpr.xpr) + return _internal_xpr(); +} +inline void DistinctExpr::unsafe_arena_set_allocated_xpr( + ::pg_query::Node* xpr) { + if (GetArena() == nullptr) { + delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(xpr_); + } + xpr_ = xpr; + if (xpr) { + + } else { + + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.DistinctExpr.xpr) +} +inline ::pg_query::Node* DistinctExpr::release_xpr() { + + ::pg_query::Node* temp = xpr_; + xpr_ = nullptr; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + return temp; +} +inline ::pg_query::Node* DistinctExpr::unsafe_arena_release_xpr() { + // @@protoc_insertion_point(field_release:pg_query.DistinctExpr.xpr) + + ::pg_query::Node* temp = xpr_; + xpr_ = nullptr; + return temp; +} +inline ::pg_query::Node* DistinctExpr::_internal_mutable_xpr() { + + if (xpr_ == nullptr) { + auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); + xpr_ = p; + } + return xpr_; +} +inline ::pg_query::Node* DistinctExpr::mutable_xpr() { + // @@protoc_insertion_point(field_mutable:pg_query.DistinctExpr.xpr) + return _internal_mutable_xpr(); +} +inline void DistinctExpr::set_allocated_xpr(::pg_query::Node* xpr) { + ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); + if (message_arena == nullptr) { + delete xpr_; + } + if (xpr) { + ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = + ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(xpr); + if (message_arena != submessage_arena) { + xpr = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( + message_arena, xpr, submessage_arena); + } + + } else { + + } + xpr_ = xpr; + // @@protoc_insertion_point(field_set_allocated:pg_query.DistinctExpr.xpr) +} + +// uint32 opno = 2 [json_name = "opno"]; +inline void DistinctExpr::clear_opno() { + opno_ = 0u; +} +inline ::PROTOBUF_NAMESPACE_ID::uint32 DistinctExpr::_internal_opno() const { + return opno_; +} +inline ::PROTOBUF_NAMESPACE_ID::uint32 DistinctExpr::opno() const { + // @@protoc_insertion_point(field_get:pg_query.DistinctExpr.opno) + return _internal_opno(); +} +inline void DistinctExpr::_internal_set_opno(::PROTOBUF_NAMESPACE_ID::uint32 value) { + + opno_ = value; +} +inline void DistinctExpr::set_opno(::PROTOBUF_NAMESPACE_ID::uint32 value) { + _internal_set_opno(value); + // @@protoc_insertion_point(field_set:pg_query.DistinctExpr.opno) +} + +// uint32 opfuncid = 3 [json_name = "opfuncid"]; +inline void DistinctExpr::clear_opfuncid() { + opfuncid_ = 0u; +} +inline ::PROTOBUF_NAMESPACE_ID::uint32 DistinctExpr::_internal_opfuncid() const { + return opfuncid_; +} +inline ::PROTOBUF_NAMESPACE_ID::uint32 DistinctExpr::opfuncid() const { + // @@protoc_insertion_point(field_get:pg_query.DistinctExpr.opfuncid) + return _internal_opfuncid(); +} +inline void DistinctExpr::_internal_set_opfuncid(::PROTOBUF_NAMESPACE_ID::uint32 value) { + + opfuncid_ = value; +} +inline void DistinctExpr::set_opfuncid(::PROTOBUF_NAMESPACE_ID::uint32 value) { + _internal_set_opfuncid(value); + // @@protoc_insertion_point(field_set:pg_query.DistinctExpr.opfuncid) +} + +// uint32 opresulttype = 4 [json_name = "opresulttype"]; +inline void DistinctExpr::clear_opresulttype() { + opresulttype_ = 0u; +} +inline ::PROTOBUF_NAMESPACE_ID::uint32 DistinctExpr::_internal_opresulttype() const { + return opresulttype_; +} +inline ::PROTOBUF_NAMESPACE_ID::uint32 DistinctExpr::opresulttype() const { + // @@protoc_insertion_point(field_get:pg_query.DistinctExpr.opresulttype) + return _internal_opresulttype(); +} +inline void DistinctExpr::_internal_set_opresulttype(::PROTOBUF_NAMESPACE_ID::uint32 value) { + + opresulttype_ = value; +} +inline void DistinctExpr::set_opresulttype(::PROTOBUF_NAMESPACE_ID::uint32 value) { + _internal_set_opresulttype(value); + // @@protoc_insertion_point(field_set:pg_query.DistinctExpr.opresulttype) +} + +// bool opretset = 5 [json_name = "opretset"]; +inline void DistinctExpr::clear_opretset() { + opretset_ = false; +} +inline bool DistinctExpr::_internal_opretset() const { + return opretset_; +} +inline bool DistinctExpr::opretset() const { + // @@protoc_insertion_point(field_get:pg_query.DistinctExpr.opretset) + return _internal_opretset(); +} +inline void DistinctExpr::_internal_set_opretset(bool value) { + + opretset_ = value; +} +inline void DistinctExpr::set_opretset(bool value) { + _internal_set_opretset(value); + // @@protoc_insertion_point(field_set:pg_query.DistinctExpr.opretset) +} + +// uint32 opcollid = 6 [json_name = "opcollid"]; +inline void DistinctExpr::clear_opcollid() { + opcollid_ = 0u; +} +inline ::PROTOBUF_NAMESPACE_ID::uint32 DistinctExpr::_internal_opcollid() const { + return opcollid_; +} +inline ::PROTOBUF_NAMESPACE_ID::uint32 DistinctExpr::opcollid() const { + // @@protoc_insertion_point(field_get:pg_query.DistinctExpr.opcollid) + return _internal_opcollid(); +} +inline void DistinctExpr::_internal_set_opcollid(::PROTOBUF_NAMESPACE_ID::uint32 value) { + + opcollid_ = value; +} +inline void DistinctExpr::set_opcollid(::PROTOBUF_NAMESPACE_ID::uint32 value) { + _internal_set_opcollid(value); + // @@protoc_insertion_point(field_set:pg_query.DistinctExpr.opcollid) +} + +// uint32 inputcollid = 7 [json_name = "inputcollid"]; +inline void DistinctExpr::clear_inputcollid() { + inputcollid_ = 0u; +} +inline ::PROTOBUF_NAMESPACE_ID::uint32 DistinctExpr::_internal_inputcollid() const { + return inputcollid_; +} +inline ::PROTOBUF_NAMESPACE_ID::uint32 DistinctExpr::inputcollid() const { + // @@protoc_insertion_point(field_get:pg_query.DistinctExpr.inputcollid) + return _internal_inputcollid(); +} +inline void DistinctExpr::_internal_set_inputcollid(::PROTOBUF_NAMESPACE_ID::uint32 value) { + + inputcollid_ = value; +} +inline void DistinctExpr::set_inputcollid(::PROTOBUF_NAMESPACE_ID::uint32 value) { + _internal_set_inputcollid(value); + // @@protoc_insertion_point(field_set:pg_query.DistinctExpr.inputcollid) +} + +// repeated .pg_query.Node args = 8 [json_name = "args"]; +inline int DistinctExpr::_internal_args_size() const { + return args_.size(); +} +inline int DistinctExpr::args_size() const { + return _internal_args_size(); +} +inline void DistinctExpr::clear_args() { + args_.Clear(); +} +inline ::pg_query::Node* DistinctExpr::mutable_args(int index) { + // @@protoc_insertion_point(field_mutable:pg_query.DistinctExpr.args) + return args_.Mutable(index); +} +inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* +DistinctExpr::mutable_args() { + // @@protoc_insertion_point(field_mutable_list:pg_query.DistinctExpr.args) + return &args_; +} +inline const ::pg_query::Node& DistinctExpr::_internal_args(int index) const { + return args_.Get(index); +} +inline const ::pg_query::Node& DistinctExpr::args(int index) const { + // @@protoc_insertion_point(field_get:pg_query.DistinctExpr.args) + return _internal_args(index); +} +inline ::pg_query::Node* DistinctExpr::_internal_add_args() { + return args_.Add(); +} +inline ::pg_query::Node* DistinctExpr::add_args() { + // @@protoc_insertion_point(field_add:pg_query.DistinctExpr.args) + return _internal_add_args(); +} +inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& +DistinctExpr::args() const { + // @@protoc_insertion_point(field_list:pg_query.DistinctExpr.args) + return args_; +} + +// int32 location = 9 [json_name = "location"]; +inline void DistinctExpr::clear_location() { + location_ = 0; +} +inline ::PROTOBUF_NAMESPACE_ID::int32 DistinctExpr::_internal_location() const { + return location_; +} +inline ::PROTOBUF_NAMESPACE_ID::int32 DistinctExpr::location() const { + // @@protoc_insertion_point(field_get:pg_query.DistinctExpr.location) + return _internal_location(); +} +inline void DistinctExpr::_internal_set_location(::PROTOBUF_NAMESPACE_ID::int32 value) { + + location_ = value; +} +inline void DistinctExpr::set_location(::PROTOBUF_NAMESPACE_ID::int32 value) { + _internal_set_location(value); + // @@protoc_insertion_point(field_set:pg_query.DistinctExpr.location) +} + +// ------------------------------------------------------------------- + +// NullIfExpr + +// .pg_query.Node xpr = 1 [json_name = "xpr"]; +inline bool NullIfExpr::_internal_has_xpr() const { + return this != internal_default_instance() && xpr_ != nullptr; +} +inline bool NullIfExpr::has_xpr() const { + return _internal_has_xpr(); +} +inline void NullIfExpr::clear_xpr() { + if (GetArena() == nullptr && xpr_ != nullptr) { + delete xpr_; + } + xpr_ = nullptr; +} +inline const ::pg_query::Node& NullIfExpr::_internal_xpr() const { + const ::pg_query::Node* p = xpr_; + return p != nullptr ? *p : reinterpret_cast( + ::pg_query::_Node_default_instance_); +} +inline const ::pg_query::Node& NullIfExpr::xpr() const { + // @@protoc_insertion_point(field_get:pg_query.NullIfExpr.xpr) + return _internal_xpr(); +} +inline void NullIfExpr::unsafe_arena_set_allocated_xpr( + ::pg_query::Node* xpr) { + if (GetArena() == nullptr) { + delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(xpr_); + } + xpr_ = xpr; + if (xpr) { + + } else { + + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.NullIfExpr.xpr) +} +inline ::pg_query::Node* NullIfExpr::release_xpr() { + + ::pg_query::Node* temp = xpr_; + xpr_ = nullptr; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + return temp; +} +inline ::pg_query::Node* NullIfExpr::unsafe_arena_release_xpr() { + // @@protoc_insertion_point(field_release:pg_query.NullIfExpr.xpr) + + ::pg_query::Node* temp = xpr_; + xpr_ = nullptr; + return temp; +} +inline ::pg_query::Node* NullIfExpr::_internal_mutable_xpr() { + + if (xpr_ == nullptr) { + auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); + xpr_ = p; + } + return xpr_; +} +inline ::pg_query::Node* NullIfExpr::mutable_xpr() { + // @@protoc_insertion_point(field_mutable:pg_query.NullIfExpr.xpr) + return _internal_mutable_xpr(); +} +inline void NullIfExpr::set_allocated_xpr(::pg_query::Node* xpr) { + ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); + if (message_arena == nullptr) { + delete xpr_; + } + if (xpr) { + ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = + ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(xpr); + if (message_arena != submessage_arena) { + xpr = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( + message_arena, xpr, submessage_arena); + } + + } else { + + } + xpr_ = xpr; + // @@protoc_insertion_point(field_set_allocated:pg_query.NullIfExpr.xpr) +} + +// uint32 opno = 2 [json_name = "opno"]; +inline void NullIfExpr::clear_opno() { + opno_ = 0u; +} +inline ::PROTOBUF_NAMESPACE_ID::uint32 NullIfExpr::_internal_opno() const { + return opno_; +} +inline ::PROTOBUF_NAMESPACE_ID::uint32 NullIfExpr::opno() const { + // @@protoc_insertion_point(field_get:pg_query.NullIfExpr.opno) + return _internal_opno(); +} +inline void NullIfExpr::_internal_set_opno(::PROTOBUF_NAMESPACE_ID::uint32 value) { + + opno_ = value; +} +inline void NullIfExpr::set_opno(::PROTOBUF_NAMESPACE_ID::uint32 value) { + _internal_set_opno(value); + // @@protoc_insertion_point(field_set:pg_query.NullIfExpr.opno) +} + +// uint32 opfuncid = 3 [json_name = "opfuncid"]; +inline void NullIfExpr::clear_opfuncid() { + opfuncid_ = 0u; +} +inline ::PROTOBUF_NAMESPACE_ID::uint32 NullIfExpr::_internal_opfuncid() const { + return opfuncid_; +} +inline ::PROTOBUF_NAMESPACE_ID::uint32 NullIfExpr::opfuncid() const { + // @@protoc_insertion_point(field_get:pg_query.NullIfExpr.opfuncid) + return _internal_opfuncid(); +} +inline void NullIfExpr::_internal_set_opfuncid(::PROTOBUF_NAMESPACE_ID::uint32 value) { + + opfuncid_ = value; +} +inline void NullIfExpr::set_opfuncid(::PROTOBUF_NAMESPACE_ID::uint32 value) { + _internal_set_opfuncid(value); + // @@protoc_insertion_point(field_set:pg_query.NullIfExpr.opfuncid) +} + +// uint32 opresulttype = 4 [json_name = "opresulttype"]; +inline void NullIfExpr::clear_opresulttype() { + opresulttype_ = 0u; +} +inline ::PROTOBUF_NAMESPACE_ID::uint32 NullIfExpr::_internal_opresulttype() const { + return opresulttype_; +} +inline ::PROTOBUF_NAMESPACE_ID::uint32 NullIfExpr::opresulttype() const { + // @@protoc_insertion_point(field_get:pg_query.NullIfExpr.opresulttype) + return _internal_opresulttype(); +} +inline void NullIfExpr::_internal_set_opresulttype(::PROTOBUF_NAMESPACE_ID::uint32 value) { + + opresulttype_ = value; +} +inline void NullIfExpr::set_opresulttype(::PROTOBUF_NAMESPACE_ID::uint32 value) { + _internal_set_opresulttype(value); + // @@protoc_insertion_point(field_set:pg_query.NullIfExpr.opresulttype) +} + +// bool opretset = 5 [json_name = "opretset"]; +inline void NullIfExpr::clear_opretset() { + opretset_ = false; +} +inline bool NullIfExpr::_internal_opretset() const { + return opretset_; +} +inline bool NullIfExpr::opretset() const { + // @@protoc_insertion_point(field_get:pg_query.NullIfExpr.opretset) + return _internal_opretset(); +} +inline void NullIfExpr::_internal_set_opretset(bool value) { + + opretset_ = value; +} +inline void NullIfExpr::set_opretset(bool value) { + _internal_set_opretset(value); + // @@protoc_insertion_point(field_set:pg_query.NullIfExpr.opretset) +} + +// uint32 opcollid = 6 [json_name = "opcollid"]; +inline void NullIfExpr::clear_opcollid() { + opcollid_ = 0u; +} +inline ::PROTOBUF_NAMESPACE_ID::uint32 NullIfExpr::_internal_opcollid() const { + return opcollid_; +} +inline ::PROTOBUF_NAMESPACE_ID::uint32 NullIfExpr::opcollid() const { + // @@protoc_insertion_point(field_get:pg_query.NullIfExpr.opcollid) + return _internal_opcollid(); +} +inline void NullIfExpr::_internal_set_opcollid(::PROTOBUF_NAMESPACE_ID::uint32 value) { + + opcollid_ = value; +} +inline void NullIfExpr::set_opcollid(::PROTOBUF_NAMESPACE_ID::uint32 value) { + _internal_set_opcollid(value); + // @@protoc_insertion_point(field_set:pg_query.NullIfExpr.opcollid) +} + +// uint32 inputcollid = 7 [json_name = "inputcollid"]; +inline void NullIfExpr::clear_inputcollid() { + inputcollid_ = 0u; +} +inline ::PROTOBUF_NAMESPACE_ID::uint32 NullIfExpr::_internal_inputcollid() const { + return inputcollid_; +} +inline ::PROTOBUF_NAMESPACE_ID::uint32 NullIfExpr::inputcollid() const { + // @@protoc_insertion_point(field_get:pg_query.NullIfExpr.inputcollid) + return _internal_inputcollid(); +} +inline void NullIfExpr::_internal_set_inputcollid(::PROTOBUF_NAMESPACE_ID::uint32 value) { + + inputcollid_ = value; +} +inline void NullIfExpr::set_inputcollid(::PROTOBUF_NAMESPACE_ID::uint32 value) { + _internal_set_inputcollid(value); + // @@protoc_insertion_point(field_set:pg_query.NullIfExpr.inputcollid) +} + +// repeated .pg_query.Node args = 8 [json_name = "args"]; +inline int NullIfExpr::_internal_args_size() const { + return args_.size(); +} +inline int NullIfExpr::args_size() const { + return _internal_args_size(); +} +inline void NullIfExpr::clear_args() { + args_.Clear(); +} +inline ::pg_query::Node* NullIfExpr::mutable_args(int index) { + // @@protoc_insertion_point(field_mutable:pg_query.NullIfExpr.args) + return args_.Mutable(index); +} +inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* +NullIfExpr::mutable_args() { + // @@protoc_insertion_point(field_mutable_list:pg_query.NullIfExpr.args) + return &args_; +} +inline const ::pg_query::Node& NullIfExpr::_internal_args(int index) const { + return args_.Get(index); +} +inline const ::pg_query::Node& NullIfExpr::args(int index) const { + // @@protoc_insertion_point(field_get:pg_query.NullIfExpr.args) + return _internal_args(index); +} +inline ::pg_query::Node* NullIfExpr::_internal_add_args() { + return args_.Add(); +} +inline ::pg_query::Node* NullIfExpr::add_args() { + // @@protoc_insertion_point(field_add:pg_query.NullIfExpr.args) + return _internal_add_args(); +} +inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& +NullIfExpr::args() const { + // @@protoc_insertion_point(field_list:pg_query.NullIfExpr.args) + return args_; +} + +// int32 location = 9 [json_name = "location"]; +inline void NullIfExpr::clear_location() { + location_ = 0; +} +inline ::PROTOBUF_NAMESPACE_ID::int32 NullIfExpr::_internal_location() const { + return location_; +} +inline ::PROTOBUF_NAMESPACE_ID::int32 NullIfExpr::location() const { + // @@protoc_insertion_point(field_get:pg_query.NullIfExpr.location) + return _internal_location(); +} +inline void NullIfExpr::_internal_set_location(::PROTOBUF_NAMESPACE_ID::int32 value) { + + location_ = value; +} +inline void NullIfExpr::set_location(::PROTOBUF_NAMESPACE_ID::int32 value) { + _internal_set_location(value); + // @@protoc_insertion_point(field_set:pg_query.NullIfExpr.location) +} + +// ------------------------------------------------------------------- + +// ScalarArrayOpExpr + +// .pg_query.Node xpr = 1 [json_name = "xpr"]; +inline bool ScalarArrayOpExpr::_internal_has_xpr() const { + return this != internal_default_instance() && xpr_ != nullptr; +} +inline bool ScalarArrayOpExpr::has_xpr() const { + return _internal_has_xpr(); +} +inline void ScalarArrayOpExpr::clear_xpr() { + if (GetArena() == nullptr && xpr_ != nullptr) { + delete xpr_; + } + xpr_ = nullptr; +} +inline const ::pg_query::Node& ScalarArrayOpExpr::_internal_xpr() const { + const ::pg_query::Node* p = xpr_; + return p != nullptr ? *p : reinterpret_cast( + ::pg_query::_Node_default_instance_); +} +inline const ::pg_query::Node& ScalarArrayOpExpr::xpr() const { + // @@protoc_insertion_point(field_get:pg_query.ScalarArrayOpExpr.xpr) + return _internal_xpr(); +} +inline void ScalarArrayOpExpr::unsafe_arena_set_allocated_xpr( + ::pg_query::Node* xpr) { + if (GetArena() == nullptr) { + delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(xpr_); + } + xpr_ = xpr; + if (xpr) { + + } else { + + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.ScalarArrayOpExpr.xpr) +} +inline ::pg_query::Node* ScalarArrayOpExpr::release_xpr() { + + ::pg_query::Node* temp = xpr_; + xpr_ = nullptr; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + return temp; +} +inline ::pg_query::Node* ScalarArrayOpExpr::unsafe_arena_release_xpr() { + // @@protoc_insertion_point(field_release:pg_query.ScalarArrayOpExpr.xpr) + + ::pg_query::Node* temp = xpr_; + xpr_ = nullptr; + return temp; +} +inline ::pg_query::Node* ScalarArrayOpExpr::_internal_mutable_xpr() { + + if (xpr_ == nullptr) { + auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); + xpr_ = p; + } + return xpr_; +} +inline ::pg_query::Node* ScalarArrayOpExpr::mutable_xpr() { + // @@protoc_insertion_point(field_mutable:pg_query.ScalarArrayOpExpr.xpr) + return _internal_mutable_xpr(); +} +inline void ScalarArrayOpExpr::set_allocated_xpr(::pg_query::Node* xpr) { + ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); + if (message_arena == nullptr) { + delete xpr_; + } + if (xpr) { + ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = + ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(xpr); + if (message_arena != submessage_arena) { + xpr = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( + message_arena, xpr, submessage_arena); + } + + } else { + + } + xpr_ = xpr; + // @@protoc_insertion_point(field_set_allocated:pg_query.ScalarArrayOpExpr.xpr) +} + +// uint32 opno = 2 [json_name = "opno"]; +inline void ScalarArrayOpExpr::clear_opno() { + opno_ = 0u; +} +inline ::PROTOBUF_NAMESPACE_ID::uint32 ScalarArrayOpExpr::_internal_opno() const { + return opno_; +} +inline ::PROTOBUF_NAMESPACE_ID::uint32 ScalarArrayOpExpr::opno() const { + // @@protoc_insertion_point(field_get:pg_query.ScalarArrayOpExpr.opno) + return _internal_opno(); +} +inline void ScalarArrayOpExpr::_internal_set_opno(::PROTOBUF_NAMESPACE_ID::uint32 value) { + + opno_ = value; +} +inline void ScalarArrayOpExpr::set_opno(::PROTOBUF_NAMESPACE_ID::uint32 value) { + _internal_set_opno(value); + // @@protoc_insertion_point(field_set:pg_query.ScalarArrayOpExpr.opno) +} + +// uint32 opfuncid = 3 [json_name = "opfuncid"]; +inline void ScalarArrayOpExpr::clear_opfuncid() { + opfuncid_ = 0u; +} +inline ::PROTOBUF_NAMESPACE_ID::uint32 ScalarArrayOpExpr::_internal_opfuncid() const { + return opfuncid_; +} +inline ::PROTOBUF_NAMESPACE_ID::uint32 ScalarArrayOpExpr::opfuncid() const { + // @@protoc_insertion_point(field_get:pg_query.ScalarArrayOpExpr.opfuncid) + return _internal_opfuncid(); +} +inline void ScalarArrayOpExpr::_internal_set_opfuncid(::PROTOBUF_NAMESPACE_ID::uint32 value) { + + opfuncid_ = value; +} +inline void ScalarArrayOpExpr::set_opfuncid(::PROTOBUF_NAMESPACE_ID::uint32 value) { + _internal_set_opfuncid(value); + // @@protoc_insertion_point(field_set:pg_query.ScalarArrayOpExpr.opfuncid) +} + +// bool use_or = 4 [json_name = "useOr"]; +inline void ScalarArrayOpExpr::clear_use_or() { + use_or_ = false; +} +inline bool ScalarArrayOpExpr::_internal_use_or() const { + return use_or_; +} +inline bool ScalarArrayOpExpr::use_or() const { + // @@protoc_insertion_point(field_get:pg_query.ScalarArrayOpExpr.use_or) + return _internal_use_or(); +} +inline void ScalarArrayOpExpr::_internal_set_use_or(bool value) { + + use_or_ = value; +} +inline void ScalarArrayOpExpr::set_use_or(bool value) { + _internal_set_use_or(value); + // @@protoc_insertion_point(field_set:pg_query.ScalarArrayOpExpr.use_or) +} + +// uint32 inputcollid = 5 [json_name = "inputcollid"]; +inline void ScalarArrayOpExpr::clear_inputcollid() { + inputcollid_ = 0u; +} +inline ::PROTOBUF_NAMESPACE_ID::uint32 ScalarArrayOpExpr::_internal_inputcollid() const { + return inputcollid_; +} +inline ::PROTOBUF_NAMESPACE_ID::uint32 ScalarArrayOpExpr::inputcollid() const { + // @@protoc_insertion_point(field_get:pg_query.ScalarArrayOpExpr.inputcollid) + return _internal_inputcollid(); +} +inline void ScalarArrayOpExpr::_internal_set_inputcollid(::PROTOBUF_NAMESPACE_ID::uint32 value) { + + inputcollid_ = value; +} +inline void ScalarArrayOpExpr::set_inputcollid(::PROTOBUF_NAMESPACE_ID::uint32 value) { + _internal_set_inputcollid(value); + // @@protoc_insertion_point(field_set:pg_query.ScalarArrayOpExpr.inputcollid) +} + +// repeated .pg_query.Node args = 6 [json_name = "args"]; +inline int ScalarArrayOpExpr::_internal_args_size() const { + return args_.size(); +} +inline int ScalarArrayOpExpr::args_size() const { + return _internal_args_size(); +} +inline void ScalarArrayOpExpr::clear_args() { + args_.Clear(); +} +inline ::pg_query::Node* ScalarArrayOpExpr::mutable_args(int index) { + // @@protoc_insertion_point(field_mutable:pg_query.ScalarArrayOpExpr.args) + return args_.Mutable(index); +} +inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* +ScalarArrayOpExpr::mutable_args() { + // @@protoc_insertion_point(field_mutable_list:pg_query.ScalarArrayOpExpr.args) + return &args_; +} +inline const ::pg_query::Node& ScalarArrayOpExpr::_internal_args(int index) const { + return args_.Get(index); +} +inline const ::pg_query::Node& ScalarArrayOpExpr::args(int index) const { + // @@protoc_insertion_point(field_get:pg_query.ScalarArrayOpExpr.args) + return _internal_args(index); +} +inline ::pg_query::Node* ScalarArrayOpExpr::_internal_add_args() { + return args_.Add(); +} +inline ::pg_query::Node* ScalarArrayOpExpr::add_args() { + // @@protoc_insertion_point(field_add:pg_query.ScalarArrayOpExpr.args) + return _internal_add_args(); +} +inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& +ScalarArrayOpExpr::args() const { + // @@protoc_insertion_point(field_list:pg_query.ScalarArrayOpExpr.args) + return args_; +} + +// int32 location = 7 [json_name = "location"]; +inline void ScalarArrayOpExpr::clear_location() { + location_ = 0; +} +inline ::PROTOBUF_NAMESPACE_ID::int32 ScalarArrayOpExpr::_internal_location() const { + return location_; +} +inline ::PROTOBUF_NAMESPACE_ID::int32 ScalarArrayOpExpr::location() const { + // @@protoc_insertion_point(field_get:pg_query.ScalarArrayOpExpr.location) + return _internal_location(); +} +inline void ScalarArrayOpExpr::_internal_set_location(::PROTOBUF_NAMESPACE_ID::int32 value) { + + location_ = value; +} +inline void ScalarArrayOpExpr::set_location(::PROTOBUF_NAMESPACE_ID::int32 value) { + _internal_set_location(value); + // @@protoc_insertion_point(field_set:pg_query.ScalarArrayOpExpr.location) +} + +// ------------------------------------------------------------------- + +// BoolExpr + +// .pg_query.Node xpr = 1 [json_name = "xpr"]; +inline bool BoolExpr::_internal_has_xpr() const { + return this != internal_default_instance() && xpr_ != nullptr; +} +inline bool BoolExpr::has_xpr() const { + return _internal_has_xpr(); +} +inline void BoolExpr::clear_xpr() { + if (GetArena() == nullptr && xpr_ != nullptr) { + delete xpr_; + } + xpr_ = nullptr; +} +inline const ::pg_query::Node& BoolExpr::_internal_xpr() const { + const ::pg_query::Node* p = xpr_; + return p != nullptr ? *p : reinterpret_cast( + ::pg_query::_Node_default_instance_); +} +inline const ::pg_query::Node& BoolExpr::xpr() const { + // @@protoc_insertion_point(field_get:pg_query.BoolExpr.xpr) + return _internal_xpr(); +} +inline void BoolExpr::unsafe_arena_set_allocated_xpr( + ::pg_query::Node* xpr) { + if (GetArena() == nullptr) { + delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(xpr_); + } + xpr_ = xpr; + if (xpr) { + + } else { + + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.BoolExpr.xpr) +} +inline ::pg_query::Node* BoolExpr::release_xpr() { + + ::pg_query::Node* temp = xpr_; + xpr_ = nullptr; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + return temp; +} +inline ::pg_query::Node* BoolExpr::unsafe_arena_release_xpr() { + // @@protoc_insertion_point(field_release:pg_query.BoolExpr.xpr) + + ::pg_query::Node* temp = xpr_; + xpr_ = nullptr; + return temp; +} +inline ::pg_query::Node* BoolExpr::_internal_mutable_xpr() { + + if (xpr_ == nullptr) { + auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); + xpr_ = p; + } + return xpr_; +} +inline ::pg_query::Node* BoolExpr::mutable_xpr() { + // @@protoc_insertion_point(field_mutable:pg_query.BoolExpr.xpr) + return _internal_mutable_xpr(); +} +inline void BoolExpr::set_allocated_xpr(::pg_query::Node* xpr) { + ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); + if (message_arena == nullptr) { + delete xpr_; + } + if (xpr) { + ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = + ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(xpr); + if (message_arena != submessage_arena) { + xpr = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( + message_arena, xpr, submessage_arena); + } + + } else { + + } + xpr_ = xpr; + // @@protoc_insertion_point(field_set_allocated:pg_query.BoolExpr.xpr) +} + +// .pg_query.BoolExprType boolop = 2 [json_name = "boolop"]; +inline void BoolExpr::clear_boolop() { + boolop_ = 0; +} +inline ::pg_query::BoolExprType BoolExpr::_internal_boolop() const { + return static_cast< ::pg_query::BoolExprType >(boolop_); +} +inline ::pg_query::BoolExprType BoolExpr::boolop() const { + // @@protoc_insertion_point(field_get:pg_query.BoolExpr.boolop) + return _internal_boolop(); +} +inline void BoolExpr::_internal_set_boolop(::pg_query::BoolExprType value) { + + boolop_ = value; +} +inline void BoolExpr::set_boolop(::pg_query::BoolExprType value) { + _internal_set_boolop(value); + // @@protoc_insertion_point(field_set:pg_query.BoolExpr.boolop) +} + +// repeated .pg_query.Node args = 3 [json_name = "args"]; +inline int BoolExpr::_internal_args_size() const { + return args_.size(); +} +inline int BoolExpr::args_size() const { + return _internal_args_size(); +} +inline void BoolExpr::clear_args() { + args_.Clear(); +} +inline ::pg_query::Node* BoolExpr::mutable_args(int index) { + // @@protoc_insertion_point(field_mutable:pg_query.BoolExpr.args) + return args_.Mutable(index); +} +inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* +BoolExpr::mutable_args() { + // @@protoc_insertion_point(field_mutable_list:pg_query.BoolExpr.args) + return &args_; +} +inline const ::pg_query::Node& BoolExpr::_internal_args(int index) const { + return args_.Get(index); +} +inline const ::pg_query::Node& BoolExpr::args(int index) const { + // @@protoc_insertion_point(field_get:pg_query.BoolExpr.args) + return _internal_args(index); +} +inline ::pg_query::Node* BoolExpr::_internal_add_args() { + return args_.Add(); +} +inline ::pg_query::Node* BoolExpr::add_args() { + // @@protoc_insertion_point(field_add:pg_query.BoolExpr.args) + return _internal_add_args(); +} +inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& +BoolExpr::args() const { + // @@protoc_insertion_point(field_list:pg_query.BoolExpr.args) + return args_; +} + +// int32 location = 4 [json_name = "location"]; +inline void BoolExpr::clear_location() { + location_ = 0; +} +inline ::PROTOBUF_NAMESPACE_ID::int32 BoolExpr::_internal_location() const { + return location_; +} +inline ::PROTOBUF_NAMESPACE_ID::int32 BoolExpr::location() const { + // @@protoc_insertion_point(field_get:pg_query.BoolExpr.location) + return _internal_location(); +} +inline void BoolExpr::_internal_set_location(::PROTOBUF_NAMESPACE_ID::int32 value) { + + location_ = value; +} +inline void BoolExpr::set_location(::PROTOBUF_NAMESPACE_ID::int32 value) { + _internal_set_location(value); + // @@protoc_insertion_point(field_set:pg_query.BoolExpr.location) +} + +// ------------------------------------------------------------------- + +// SubLink + +// .pg_query.Node xpr = 1 [json_name = "xpr"]; +inline bool SubLink::_internal_has_xpr() const { + return this != internal_default_instance() && xpr_ != nullptr; +} +inline bool SubLink::has_xpr() const { + return _internal_has_xpr(); +} +inline void SubLink::clear_xpr() { + if (GetArena() == nullptr && xpr_ != nullptr) { + delete xpr_; + } + xpr_ = nullptr; +} +inline const ::pg_query::Node& SubLink::_internal_xpr() const { + const ::pg_query::Node* p = xpr_; + return p != nullptr ? *p : reinterpret_cast( + ::pg_query::_Node_default_instance_); +} +inline const ::pg_query::Node& SubLink::xpr() const { + // @@protoc_insertion_point(field_get:pg_query.SubLink.xpr) + return _internal_xpr(); +} +inline void SubLink::unsafe_arena_set_allocated_xpr( + ::pg_query::Node* xpr) { + if (GetArena() == nullptr) { + delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(xpr_); + } + xpr_ = xpr; + if (xpr) { + + } else { + + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.SubLink.xpr) +} +inline ::pg_query::Node* SubLink::release_xpr() { + + ::pg_query::Node* temp = xpr_; + xpr_ = nullptr; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + return temp; +} +inline ::pg_query::Node* SubLink::unsafe_arena_release_xpr() { + // @@protoc_insertion_point(field_release:pg_query.SubLink.xpr) + + ::pg_query::Node* temp = xpr_; + xpr_ = nullptr; + return temp; +} +inline ::pg_query::Node* SubLink::_internal_mutable_xpr() { + + if (xpr_ == nullptr) { + auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); + xpr_ = p; + } + return xpr_; +} +inline ::pg_query::Node* SubLink::mutable_xpr() { + // @@protoc_insertion_point(field_mutable:pg_query.SubLink.xpr) + return _internal_mutable_xpr(); +} +inline void SubLink::set_allocated_xpr(::pg_query::Node* xpr) { + ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); + if (message_arena == nullptr) { + delete xpr_; + } + if (xpr) { + ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = + ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(xpr); + if (message_arena != submessage_arena) { + xpr = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( + message_arena, xpr, submessage_arena); + } + + } else { + + } + xpr_ = xpr; + // @@protoc_insertion_point(field_set_allocated:pg_query.SubLink.xpr) +} + +// .pg_query.SubLinkType sub_link_type = 2 [json_name = "subLinkType"]; +inline void SubLink::clear_sub_link_type() { + sub_link_type_ = 0; +} +inline ::pg_query::SubLinkType SubLink::_internal_sub_link_type() const { + return static_cast< ::pg_query::SubLinkType >(sub_link_type_); +} +inline ::pg_query::SubLinkType SubLink::sub_link_type() const { + // @@protoc_insertion_point(field_get:pg_query.SubLink.sub_link_type) + return _internal_sub_link_type(); +} +inline void SubLink::_internal_set_sub_link_type(::pg_query::SubLinkType value) { + + sub_link_type_ = value; +} +inline void SubLink::set_sub_link_type(::pg_query::SubLinkType value) { + _internal_set_sub_link_type(value); + // @@protoc_insertion_point(field_set:pg_query.SubLink.sub_link_type) +} + +// int32 sub_link_id = 3 [json_name = "subLinkId"]; +inline void SubLink::clear_sub_link_id() { + sub_link_id_ = 0; +} +inline ::PROTOBUF_NAMESPACE_ID::int32 SubLink::_internal_sub_link_id() const { + return sub_link_id_; +} +inline ::PROTOBUF_NAMESPACE_ID::int32 SubLink::sub_link_id() const { + // @@protoc_insertion_point(field_get:pg_query.SubLink.sub_link_id) + return _internal_sub_link_id(); +} +inline void SubLink::_internal_set_sub_link_id(::PROTOBUF_NAMESPACE_ID::int32 value) { + + sub_link_id_ = value; +} +inline void SubLink::set_sub_link_id(::PROTOBUF_NAMESPACE_ID::int32 value) { + _internal_set_sub_link_id(value); + // @@protoc_insertion_point(field_set:pg_query.SubLink.sub_link_id) +} + +// .pg_query.Node testexpr = 4 [json_name = "testexpr"]; +inline bool SubLink::_internal_has_testexpr() const { + return this != internal_default_instance() && testexpr_ != nullptr; +} +inline bool SubLink::has_testexpr() const { + return _internal_has_testexpr(); +} +inline void SubLink::clear_testexpr() { + if (GetArena() == nullptr && testexpr_ != nullptr) { + delete testexpr_; + } + testexpr_ = nullptr; +} +inline const ::pg_query::Node& SubLink::_internal_testexpr() const { + const ::pg_query::Node* p = testexpr_; + return p != nullptr ? *p : reinterpret_cast( + ::pg_query::_Node_default_instance_); +} +inline const ::pg_query::Node& SubLink::testexpr() const { + // @@protoc_insertion_point(field_get:pg_query.SubLink.testexpr) + return _internal_testexpr(); +} +inline void SubLink::unsafe_arena_set_allocated_testexpr( + ::pg_query::Node* testexpr) { + if (GetArena() == nullptr) { + delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(testexpr_); + } + testexpr_ = testexpr; + if (testexpr) { + + } else { + + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.SubLink.testexpr) +} +inline ::pg_query::Node* SubLink::release_testexpr() { + + ::pg_query::Node* temp = testexpr_; + testexpr_ = nullptr; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + return temp; +} +inline ::pg_query::Node* SubLink::unsafe_arena_release_testexpr() { + // @@protoc_insertion_point(field_release:pg_query.SubLink.testexpr) + + ::pg_query::Node* temp = testexpr_; + testexpr_ = nullptr; + return temp; +} +inline ::pg_query::Node* SubLink::_internal_mutable_testexpr() { + + if (testexpr_ == nullptr) { + auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); + testexpr_ = p; + } + return testexpr_; +} +inline ::pg_query::Node* SubLink::mutable_testexpr() { + // @@protoc_insertion_point(field_mutable:pg_query.SubLink.testexpr) + return _internal_mutable_testexpr(); +} +inline void SubLink::set_allocated_testexpr(::pg_query::Node* testexpr) { + ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); + if (message_arena == nullptr) { + delete testexpr_; + } + if (testexpr) { + ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = + ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(testexpr); + if (message_arena != submessage_arena) { + testexpr = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( + message_arena, testexpr, submessage_arena); + } + + } else { + + } + testexpr_ = testexpr; + // @@protoc_insertion_point(field_set_allocated:pg_query.SubLink.testexpr) +} + +// repeated .pg_query.Node oper_name = 5 [json_name = "operName"]; +inline int SubLink::_internal_oper_name_size() const { + return oper_name_.size(); +} +inline int SubLink::oper_name_size() const { + return _internal_oper_name_size(); +} +inline void SubLink::clear_oper_name() { + oper_name_.Clear(); +} +inline ::pg_query::Node* SubLink::mutable_oper_name(int index) { + // @@protoc_insertion_point(field_mutable:pg_query.SubLink.oper_name) + return oper_name_.Mutable(index); +} +inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* +SubLink::mutable_oper_name() { + // @@protoc_insertion_point(field_mutable_list:pg_query.SubLink.oper_name) + return &oper_name_; +} +inline const ::pg_query::Node& SubLink::_internal_oper_name(int index) const { + return oper_name_.Get(index); +} +inline const ::pg_query::Node& SubLink::oper_name(int index) const { + // @@protoc_insertion_point(field_get:pg_query.SubLink.oper_name) + return _internal_oper_name(index); +} +inline ::pg_query::Node* SubLink::_internal_add_oper_name() { + return oper_name_.Add(); +} +inline ::pg_query::Node* SubLink::add_oper_name() { + // @@protoc_insertion_point(field_add:pg_query.SubLink.oper_name) + return _internal_add_oper_name(); +} +inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& +SubLink::oper_name() const { + // @@protoc_insertion_point(field_list:pg_query.SubLink.oper_name) + return oper_name_; +} + +// .pg_query.Node subselect = 6 [json_name = "subselect"]; +inline bool SubLink::_internal_has_subselect() const { + return this != internal_default_instance() && subselect_ != nullptr; +} +inline bool SubLink::has_subselect() const { + return _internal_has_subselect(); +} +inline void SubLink::clear_subselect() { + if (GetArena() == nullptr && subselect_ != nullptr) { + delete subselect_; + } + subselect_ = nullptr; +} +inline const ::pg_query::Node& SubLink::_internal_subselect() const { + const ::pg_query::Node* p = subselect_; + return p != nullptr ? *p : reinterpret_cast( + ::pg_query::_Node_default_instance_); +} +inline const ::pg_query::Node& SubLink::subselect() const { + // @@protoc_insertion_point(field_get:pg_query.SubLink.subselect) + return _internal_subselect(); +} +inline void SubLink::unsafe_arena_set_allocated_subselect( + ::pg_query::Node* subselect) { + if (GetArena() == nullptr) { + delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(subselect_); + } + subselect_ = subselect; + if (subselect) { + + } else { + + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.SubLink.subselect) +} +inline ::pg_query::Node* SubLink::release_subselect() { + + ::pg_query::Node* temp = subselect_; + subselect_ = nullptr; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + return temp; +} +inline ::pg_query::Node* SubLink::unsafe_arena_release_subselect() { + // @@protoc_insertion_point(field_release:pg_query.SubLink.subselect) + + ::pg_query::Node* temp = subselect_; + subselect_ = nullptr; + return temp; +} +inline ::pg_query::Node* SubLink::_internal_mutable_subselect() { + + if (subselect_ == nullptr) { + auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); + subselect_ = p; + } + return subselect_; +} +inline ::pg_query::Node* SubLink::mutable_subselect() { + // @@protoc_insertion_point(field_mutable:pg_query.SubLink.subselect) + return _internal_mutable_subselect(); +} +inline void SubLink::set_allocated_subselect(::pg_query::Node* subselect) { + ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); + if (message_arena == nullptr) { + delete subselect_; + } + if (subselect) { + ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = + ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(subselect); + if (message_arena != submessage_arena) { + subselect = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( + message_arena, subselect, submessage_arena); + } + + } else { + + } + subselect_ = subselect; + // @@protoc_insertion_point(field_set_allocated:pg_query.SubLink.subselect) +} + +// int32 location = 7 [json_name = "location"]; +inline void SubLink::clear_location() { + location_ = 0; +} +inline ::PROTOBUF_NAMESPACE_ID::int32 SubLink::_internal_location() const { + return location_; +} +inline ::PROTOBUF_NAMESPACE_ID::int32 SubLink::location() const { + // @@protoc_insertion_point(field_get:pg_query.SubLink.location) + return _internal_location(); +} +inline void SubLink::_internal_set_location(::PROTOBUF_NAMESPACE_ID::int32 value) { + + location_ = value; +} +inline void SubLink::set_location(::PROTOBUF_NAMESPACE_ID::int32 value) { + _internal_set_location(value); + // @@protoc_insertion_point(field_set:pg_query.SubLink.location) +} + +// ------------------------------------------------------------------- + +// SubPlan + +// .pg_query.Node xpr = 1 [json_name = "xpr"]; +inline bool SubPlan::_internal_has_xpr() const { + return this != internal_default_instance() && xpr_ != nullptr; +} +inline bool SubPlan::has_xpr() const { + return _internal_has_xpr(); +} +inline void SubPlan::clear_xpr() { + if (GetArena() == nullptr && xpr_ != nullptr) { + delete xpr_; + } + xpr_ = nullptr; +} +inline const ::pg_query::Node& SubPlan::_internal_xpr() const { + const ::pg_query::Node* p = xpr_; + return p != nullptr ? *p : reinterpret_cast( + ::pg_query::_Node_default_instance_); +} +inline const ::pg_query::Node& SubPlan::xpr() const { + // @@protoc_insertion_point(field_get:pg_query.SubPlan.xpr) + return _internal_xpr(); +} +inline void SubPlan::unsafe_arena_set_allocated_xpr( + ::pg_query::Node* xpr) { + if (GetArena() == nullptr) { + delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(xpr_); + } + xpr_ = xpr; + if (xpr) { + + } else { + + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.SubPlan.xpr) +} +inline ::pg_query::Node* SubPlan::release_xpr() { + + ::pg_query::Node* temp = xpr_; + xpr_ = nullptr; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + return temp; +} +inline ::pg_query::Node* SubPlan::unsafe_arena_release_xpr() { + // @@protoc_insertion_point(field_release:pg_query.SubPlan.xpr) + + ::pg_query::Node* temp = xpr_; + xpr_ = nullptr; + return temp; +} +inline ::pg_query::Node* SubPlan::_internal_mutable_xpr() { + + if (xpr_ == nullptr) { + auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); + xpr_ = p; + } + return xpr_; +} +inline ::pg_query::Node* SubPlan::mutable_xpr() { + // @@protoc_insertion_point(field_mutable:pg_query.SubPlan.xpr) + return _internal_mutable_xpr(); +} +inline void SubPlan::set_allocated_xpr(::pg_query::Node* xpr) { + ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); + if (message_arena == nullptr) { + delete xpr_; + } + if (xpr) { + ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = + ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(xpr); + if (message_arena != submessage_arena) { + xpr = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( + message_arena, xpr, submessage_arena); + } + + } else { + + } + xpr_ = xpr; + // @@protoc_insertion_point(field_set_allocated:pg_query.SubPlan.xpr) +} + +// .pg_query.SubLinkType sub_link_type = 2 [json_name = "subLinkType"]; +inline void SubPlan::clear_sub_link_type() { + sub_link_type_ = 0; +} +inline ::pg_query::SubLinkType SubPlan::_internal_sub_link_type() const { + return static_cast< ::pg_query::SubLinkType >(sub_link_type_); +} +inline ::pg_query::SubLinkType SubPlan::sub_link_type() const { + // @@protoc_insertion_point(field_get:pg_query.SubPlan.sub_link_type) + return _internal_sub_link_type(); +} +inline void SubPlan::_internal_set_sub_link_type(::pg_query::SubLinkType value) { + + sub_link_type_ = value; +} +inline void SubPlan::set_sub_link_type(::pg_query::SubLinkType value) { + _internal_set_sub_link_type(value); + // @@protoc_insertion_point(field_set:pg_query.SubPlan.sub_link_type) +} + +// .pg_query.Node testexpr = 3 [json_name = "testexpr"]; +inline bool SubPlan::_internal_has_testexpr() const { + return this != internal_default_instance() && testexpr_ != nullptr; +} +inline bool SubPlan::has_testexpr() const { + return _internal_has_testexpr(); +} +inline void SubPlan::clear_testexpr() { + if (GetArena() == nullptr && testexpr_ != nullptr) { + delete testexpr_; + } + testexpr_ = nullptr; +} +inline const ::pg_query::Node& SubPlan::_internal_testexpr() const { + const ::pg_query::Node* p = testexpr_; + return p != nullptr ? *p : reinterpret_cast( + ::pg_query::_Node_default_instance_); +} +inline const ::pg_query::Node& SubPlan::testexpr() const { + // @@protoc_insertion_point(field_get:pg_query.SubPlan.testexpr) + return _internal_testexpr(); +} +inline void SubPlan::unsafe_arena_set_allocated_testexpr( + ::pg_query::Node* testexpr) { + if (GetArena() == nullptr) { + delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(testexpr_); + } + testexpr_ = testexpr; + if (testexpr) { + + } else { + + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.SubPlan.testexpr) +} +inline ::pg_query::Node* SubPlan::release_testexpr() { + + ::pg_query::Node* temp = testexpr_; + testexpr_ = nullptr; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + return temp; +} +inline ::pg_query::Node* SubPlan::unsafe_arena_release_testexpr() { + // @@protoc_insertion_point(field_release:pg_query.SubPlan.testexpr) + + ::pg_query::Node* temp = testexpr_; + testexpr_ = nullptr; + return temp; +} +inline ::pg_query::Node* SubPlan::_internal_mutable_testexpr() { + + if (testexpr_ == nullptr) { + auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); + testexpr_ = p; + } + return testexpr_; +} +inline ::pg_query::Node* SubPlan::mutable_testexpr() { + // @@protoc_insertion_point(field_mutable:pg_query.SubPlan.testexpr) + return _internal_mutable_testexpr(); +} +inline void SubPlan::set_allocated_testexpr(::pg_query::Node* testexpr) { + ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); + if (message_arena == nullptr) { + delete testexpr_; + } + if (testexpr) { + ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = + ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(testexpr); + if (message_arena != submessage_arena) { + testexpr = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( + message_arena, testexpr, submessage_arena); + } + + } else { + + } + testexpr_ = testexpr; + // @@protoc_insertion_point(field_set_allocated:pg_query.SubPlan.testexpr) +} + +// repeated .pg_query.Node param_ids = 4 [json_name = "paramIds"]; +inline int SubPlan::_internal_param_ids_size() const { + return param_ids_.size(); +} +inline int SubPlan::param_ids_size() const { + return _internal_param_ids_size(); +} +inline void SubPlan::clear_param_ids() { + param_ids_.Clear(); +} +inline ::pg_query::Node* SubPlan::mutable_param_ids(int index) { + // @@protoc_insertion_point(field_mutable:pg_query.SubPlan.param_ids) + return param_ids_.Mutable(index); +} +inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* +SubPlan::mutable_param_ids() { + // @@protoc_insertion_point(field_mutable_list:pg_query.SubPlan.param_ids) + return ¶m_ids_; +} +inline const ::pg_query::Node& SubPlan::_internal_param_ids(int index) const { + return param_ids_.Get(index); +} +inline const ::pg_query::Node& SubPlan::param_ids(int index) const { + // @@protoc_insertion_point(field_get:pg_query.SubPlan.param_ids) + return _internal_param_ids(index); +} +inline ::pg_query::Node* SubPlan::_internal_add_param_ids() { + return param_ids_.Add(); +} +inline ::pg_query::Node* SubPlan::add_param_ids() { + // @@protoc_insertion_point(field_add:pg_query.SubPlan.param_ids) + return _internal_add_param_ids(); +} +inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& +SubPlan::param_ids() const { + // @@protoc_insertion_point(field_list:pg_query.SubPlan.param_ids) + return param_ids_; +} + +// int32 plan_id = 5 [json_name = "plan_id"]; +inline void SubPlan::clear_plan_id() { + plan_id_ = 0; +} +inline ::PROTOBUF_NAMESPACE_ID::int32 SubPlan::_internal_plan_id() const { + return plan_id_; +} +inline ::PROTOBUF_NAMESPACE_ID::int32 SubPlan::plan_id() const { + // @@protoc_insertion_point(field_get:pg_query.SubPlan.plan_id) + return _internal_plan_id(); +} +inline void SubPlan::_internal_set_plan_id(::PROTOBUF_NAMESPACE_ID::int32 value) { + + plan_id_ = value; +} +inline void SubPlan::set_plan_id(::PROTOBUF_NAMESPACE_ID::int32 value) { + _internal_set_plan_id(value); + // @@protoc_insertion_point(field_set:pg_query.SubPlan.plan_id) +} + +// string plan_name = 6 [json_name = "plan_name"]; +inline void SubPlan::clear_plan_name() { + plan_name_.ClearToEmpty(); +} +inline const std::string& SubPlan::plan_name() const { + // @@protoc_insertion_point(field_get:pg_query.SubPlan.plan_name) + return _internal_plan_name(); +} +inline void SubPlan::set_plan_name(const std::string& value) { + _internal_set_plan_name(value); + // @@protoc_insertion_point(field_set:pg_query.SubPlan.plan_name) +} +inline std::string* SubPlan::mutable_plan_name() { + // @@protoc_insertion_point(field_mutable:pg_query.SubPlan.plan_name) + return _internal_mutable_plan_name(); +} +inline const std::string& SubPlan::_internal_plan_name() const { + return plan_name_.Get(); +} +inline void SubPlan::_internal_set_plan_name(const std::string& value) { + + plan_name_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArena()); +} +inline void SubPlan::set_plan_name(std::string&& value) { + + plan_name_.Set( + ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::move(value), GetArena()); + // @@protoc_insertion_point(field_set_rvalue:pg_query.SubPlan.plan_name) +} +inline void SubPlan::set_plan_name(const char* value) { + GOOGLE_DCHECK(value != nullptr); + + plan_name_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string(value), GetArena()); + // @@protoc_insertion_point(field_set_char:pg_query.SubPlan.plan_name) +} +inline void SubPlan::set_plan_name(const char* value, + size_t size) { + + plan_name_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string( + reinterpret_cast(value), size), GetArena()); + // @@protoc_insertion_point(field_set_pointer:pg_query.SubPlan.plan_name) +} +inline std::string* SubPlan::_internal_mutable_plan_name() { + + return plan_name_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArena()); +} +inline std::string* SubPlan::release_plan_name() { + // @@protoc_insertion_point(field_release:pg_query.SubPlan.plan_name) + return plan_name_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); +} +inline void SubPlan::set_allocated_plan_name(std::string* plan_name) { + if (plan_name != nullptr) { + + } else { + + } + plan_name_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), plan_name, + GetArena()); + // @@protoc_insertion_point(field_set_allocated:pg_query.SubPlan.plan_name) +} + +// uint32 first_col_type = 7 [json_name = "firstColType"]; +inline void SubPlan::clear_first_col_type() { + first_col_type_ = 0u; +} +inline ::PROTOBUF_NAMESPACE_ID::uint32 SubPlan::_internal_first_col_type() const { + return first_col_type_; +} +inline ::PROTOBUF_NAMESPACE_ID::uint32 SubPlan::first_col_type() const { + // @@protoc_insertion_point(field_get:pg_query.SubPlan.first_col_type) + return _internal_first_col_type(); +} +inline void SubPlan::_internal_set_first_col_type(::PROTOBUF_NAMESPACE_ID::uint32 value) { + + first_col_type_ = value; +} +inline void SubPlan::set_first_col_type(::PROTOBUF_NAMESPACE_ID::uint32 value) { + _internal_set_first_col_type(value); + // @@protoc_insertion_point(field_set:pg_query.SubPlan.first_col_type) +} + +// int32 first_col_typmod = 8 [json_name = "firstColTypmod"]; +inline void SubPlan::clear_first_col_typmod() { + first_col_typmod_ = 0; +} +inline ::PROTOBUF_NAMESPACE_ID::int32 SubPlan::_internal_first_col_typmod() const { + return first_col_typmod_; +} +inline ::PROTOBUF_NAMESPACE_ID::int32 SubPlan::first_col_typmod() const { + // @@protoc_insertion_point(field_get:pg_query.SubPlan.first_col_typmod) + return _internal_first_col_typmod(); +} +inline void SubPlan::_internal_set_first_col_typmod(::PROTOBUF_NAMESPACE_ID::int32 value) { + + first_col_typmod_ = value; +} +inline void SubPlan::set_first_col_typmod(::PROTOBUF_NAMESPACE_ID::int32 value) { + _internal_set_first_col_typmod(value); + // @@protoc_insertion_point(field_set:pg_query.SubPlan.first_col_typmod) +} + +// uint32 first_col_collation = 9 [json_name = "firstColCollation"]; +inline void SubPlan::clear_first_col_collation() { + first_col_collation_ = 0u; +} +inline ::PROTOBUF_NAMESPACE_ID::uint32 SubPlan::_internal_first_col_collation() const { + return first_col_collation_; +} +inline ::PROTOBUF_NAMESPACE_ID::uint32 SubPlan::first_col_collation() const { + // @@protoc_insertion_point(field_get:pg_query.SubPlan.first_col_collation) + return _internal_first_col_collation(); +} +inline void SubPlan::_internal_set_first_col_collation(::PROTOBUF_NAMESPACE_ID::uint32 value) { + + first_col_collation_ = value; +} +inline void SubPlan::set_first_col_collation(::PROTOBUF_NAMESPACE_ID::uint32 value) { + _internal_set_first_col_collation(value); + // @@protoc_insertion_point(field_set:pg_query.SubPlan.first_col_collation) +} + +// bool use_hash_table = 10 [json_name = "useHashTable"]; +inline void SubPlan::clear_use_hash_table() { + use_hash_table_ = false; +} +inline bool SubPlan::_internal_use_hash_table() const { + return use_hash_table_; +} +inline bool SubPlan::use_hash_table() const { + // @@protoc_insertion_point(field_get:pg_query.SubPlan.use_hash_table) + return _internal_use_hash_table(); +} +inline void SubPlan::_internal_set_use_hash_table(bool value) { + + use_hash_table_ = value; +} +inline void SubPlan::set_use_hash_table(bool value) { + _internal_set_use_hash_table(value); + // @@protoc_insertion_point(field_set:pg_query.SubPlan.use_hash_table) +} + +// bool unknown_eq_false = 11 [json_name = "unknownEqFalse"]; +inline void SubPlan::clear_unknown_eq_false() { + unknown_eq_false_ = false; +} +inline bool SubPlan::_internal_unknown_eq_false() const { + return unknown_eq_false_; +} +inline bool SubPlan::unknown_eq_false() const { + // @@protoc_insertion_point(field_get:pg_query.SubPlan.unknown_eq_false) + return _internal_unknown_eq_false(); +} +inline void SubPlan::_internal_set_unknown_eq_false(bool value) { + + unknown_eq_false_ = value; +} +inline void SubPlan::set_unknown_eq_false(bool value) { + _internal_set_unknown_eq_false(value); + // @@protoc_insertion_point(field_set:pg_query.SubPlan.unknown_eq_false) +} + +// bool parallel_safe = 12 [json_name = "parallel_safe"]; +inline void SubPlan::clear_parallel_safe() { + parallel_safe_ = false; +} +inline bool SubPlan::_internal_parallel_safe() const { + return parallel_safe_; +} +inline bool SubPlan::parallel_safe() const { + // @@protoc_insertion_point(field_get:pg_query.SubPlan.parallel_safe) + return _internal_parallel_safe(); +} +inline void SubPlan::_internal_set_parallel_safe(bool value) { + + parallel_safe_ = value; +} +inline void SubPlan::set_parallel_safe(bool value) { + _internal_set_parallel_safe(value); + // @@protoc_insertion_point(field_set:pg_query.SubPlan.parallel_safe) +} + +// repeated .pg_query.Node set_param = 13 [json_name = "setParam"]; +inline int SubPlan::_internal_set_param_size() const { + return set_param_.size(); +} +inline int SubPlan::set_param_size() const { + return _internal_set_param_size(); +} +inline void SubPlan::clear_set_param() { + set_param_.Clear(); +} +inline ::pg_query::Node* SubPlan::mutable_set_param(int index) { + // @@protoc_insertion_point(field_mutable:pg_query.SubPlan.set_param) + return set_param_.Mutable(index); +} +inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* +SubPlan::mutable_set_param() { + // @@protoc_insertion_point(field_mutable_list:pg_query.SubPlan.set_param) + return &set_param_; +} +inline const ::pg_query::Node& SubPlan::_internal_set_param(int index) const { + return set_param_.Get(index); +} +inline const ::pg_query::Node& SubPlan::set_param(int index) const { + // @@protoc_insertion_point(field_get:pg_query.SubPlan.set_param) + return _internal_set_param(index); +} +inline ::pg_query::Node* SubPlan::_internal_add_set_param() { + return set_param_.Add(); +} +inline ::pg_query::Node* SubPlan::add_set_param() { + // @@protoc_insertion_point(field_add:pg_query.SubPlan.set_param) + return _internal_add_set_param(); +} +inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& +SubPlan::set_param() const { + // @@protoc_insertion_point(field_list:pg_query.SubPlan.set_param) + return set_param_; +} + +// repeated .pg_query.Node par_param = 14 [json_name = "parParam"]; +inline int SubPlan::_internal_par_param_size() const { + return par_param_.size(); +} +inline int SubPlan::par_param_size() const { + return _internal_par_param_size(); +} +inline void SubPlan::clear_par_param() { + par_param_.Clear(); +} +inline ::pg_query::Node* SubPlan::mutable_par_param(int index) { + // @@protoc_insertion_point(field_mutable:pg_query.SubPlan.par_param) + return par_param_.Mutable(index); +} +inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* +SubPlan::mutable_par_param() { + // @@protoc_insertion_point(field_mutable_list:pg_query.SubPlan.par_param) + return &par_param_; +} +inline const ::pg_query::Node& SubPlan::_internal_par_param(int index) const { + return par_param_.Get(index); +} +inline const ::pg_query::Node& SubPlan::par_param(int index) const { + // @@protoc_insertion_point(field_get:pg_query.SubPlan.par_param) + return _internal_par_param(index); +} +inline ::pg_query::Node* SubPlan::_internal_add_par_param() { + return par_param_.Add(); +} +inline ::pg_query::Node* SubPlan::add_par_param() { + // @@protoc_insertion_point(field_add:pg_query.SubPlan.par_param) + return _internal_add_par_param(); +} +inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& +SubPlan::par_param() const { + // @@protoc_insertion_point(field_list:pg_query.SubPlan.par_param) + return par_param_; +} + +// repeated .pg_query.Node args = 15 [json_name = "args"]; +inline int SubPlan::_internal_args_size() const { + return args_.size(); +} +inline int SubPlan::args_size() const { + return _internal_args_size(); +} +inline void SubPlan::clear_args() { + args_.Clear(); +} +inline ::pg_query::Node* SubPlan::mutable_args(int index) { + // @@protoc_insertion_point(field_mutable:pg_query.SubPlan.args) + return args_.Mutable(index); +} +inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* +SubPlan::mutable_args() { + // @@protoc_insertion_point(field_mutable_list:pg_query.SubPlan.args) + return &args_; +} +inline const ::pg_query::Node& SubPlan::_internal_args(int index) const { + return args_.Get(index); +} +inline const ::pg_query::Node& SubPlan::args(int index) const { + // @@protoc_insertion_point(field_get:pg_query.SubPlan.args) + return _internal_args(index); +} +inline ::pg_query::Node* SubPlan::_internal_add_args() { + return args_.Add(); +} +inline ::pg_query::Node* SubPlan::add_args() { + // @@protoc_insertion_point(field_add:pg_query.SubPlan.args) + return _internal_add_args(); +} +inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& +SubPlan::args() const { + // @@protoc_insertion_point(field_list:pg_query.SubPlan.args) + return args_; +} + +// double startup_cost = 16 [json_name = "startup_cost"]; +inline void SubPlan::clear_startup_cost() { + startup_cost_ = 0; +} +inline double SubPlan::_internal_startup_cost() const { + return startup_cost_; +} +inline double SubPlan::startup_cost() const { + // @@protoc_insertion_point(field_get:pg_query.SubPlan.startup_cost) + return _internal_startup_cost(); +} +inline void SubPlan::_internal_set_startup_cost(double value) { + + startup_cost_ = value; +} +inline void SubPlan::set_startup_cost(double value) { + _internal_set_startup_cost(value); + // @@protoc_insertion_point(field_set:pg_query.SubPlan.startup_cost) +} + +// double per_call_cost = 17 [json_name = "per_call_cost"]; +inline void SubPlan::clear_per_call_cost() { + per_call_cost_ = 0; +} +inline double SubPlan::_internal_per_call_cost() const { + return per_call_cost_; +} +inline double SubPlan::per_call_cost() const { + // @@protoc_insertion_point(field_get:pg_query.SubPlan.per_call_cost) + return _internal_per_call_cost(); +} +inline void SubPlan::_internal_set_per_call_cost(double value) { + + per_call_cost_ = value; +} +inline void SubPlan::set_per_call_cost(double value) { + _internal_set_per_call_cost(value); + // @@protoc_insertion_point(field_set:pg_query.SubPlan.per_call_cost) +} + +// ------------------------------------------------------------------- + +// AlternativeSubPlan + +// .pg_query.Node xpr = 1 [json_name = "xpr"]; +inline bool AlternativeSubPlan::_internal_has_xpr() const { + return this != internal_default_instance() && xpr_ != nullptr; +} +inline bool AlternativeSubPlan::has_xpr() const { + return _internal_has_xpr(); +} +inline void AlternativeSubPlan::clear_xpr() { + if (GetArena() == nullptr && xpr_ != nullptr) { + delete xpr_; + } + xpr_ = nullptr; +} +inline const ::pg_query::Node& AlternativeSubPlan::_internal_xpr() const { + const ::pg_query::Node* p = xpr_; + return p != nullptr ? *p : reinterpret_cast( + ::pg_query::_Node_default_instance_); +} +inline const ::pg_query::Node& AlternativeSubPlan::xpr() const { + // @@protoc_insertion_point(field_get:pg_query.AlternativeSubPlan.xpr) + return _internal_xpr(); +} +inline void AlternativeSubPlan::unsafe_arena_set_allocated_xpr( + ::pg_query::Node* xpr) { + if (GetArena() == nullptr) { + delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(xpr_); + } + xpr_ = xpr; + if (xpr) { + + } else { + + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.AlternativeSubPlan.xpr) +} +inline ::pg_query::Node* AlternativeSubPlan::release_xpr() { + + ::pg_query::Node* temp = xpr_; + xpr_ = nullptr; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + return temp; +} +inline ::pg_query::Node* AlternativeSubPlan::unsafe_arena_release_xpr() { + // @@protoc_insertion_point(field_release:pg_query.AlternativeSubPlan.xpr) + + ::pg_query::Node* temp = xpr_; + xpr_ = nullptr; + return temp; +} +inline ::pg_query::Node* AlternativeSubPlan::_internal_mutable_xpr() { + + if (xpr_ == nullptr) { + auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); + xpr_ = p; + } + return xpr_; +} +inline ::pg_query::Node* AlternativeSubPlan::mutable_xpr() { + // @@protoc_insertion_point(field_mutable:pg_query.AlternativeSubPlan.xpr) + return _internal_mutable_xpr(); +} +inline void AlternativeSubPlan::set_allocated_xpr(::pg_query::Node* xpr) { + ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); + if (message_arena == nullptr) { + delete xpr_; + } + if (xpr) { + ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = + ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(xpr); + if (message_arena != submessage_arena) { + xpr = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( + message_arena, xpr, submessage_arena); + } + + } else { + + } + xpr_ = xpr; + // @@protoc_insertion_point(field_set_allocated:pg_query.AlternativeSubPlan.xpr) +} + +// repeated .pg_query.Node subplans = 2 [json_name = "subplans"]; +inline int AlternativeSubPlan::_internal_subplans_size() const { + return subplans_.size(); +} +inline int AlternativeSubPlan::subplans_size() const { + return _internal_subplans_size(); +} +inline void AlternativeSubPlan::clear_subplans() { + subplans_.Clear(); +} +inline ::pg_query::Node* AlternativeSubPlan::mutable_subplans(int index) { + // @@protoc_insertion_point(field_mutable:pg_query.AlternativeSubPlan.subplans) + return subplans_.Mutable(index); +} +inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* +AlternativeSubPlan::mutable_subplans() { + // @@protoc_insertion_point(field_mutable_list:pg_query.AlternativeSubPlan.subplans) + return &subplans_; +} +inline const ::pg_query::Node& AlternativeSubPlan::_internal_subplans(int index) const { + return subplans_.Get(index); +} +inline const ::pg_query::Node& AlternativeSubPlan::subplans(int index) const { + // @@protoc_insertion_point(field_get:pg_query.AlternativeSubPlan.subplans) + return _internal_subplans(index); +} +inline ::pg_query::Node* AlternativeSubPlan::_internal_add_subplans() { + return subplans_.Add(); +} +inline ::pg_query::Node* AlternativeSubPlan::add_subplans() { + // @@protoc_insertion_point(field_add:pg_query.AlternativeSubPlan.subplans) + return _internal_add_subplans(); +} +inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& +AlternativeSubPlan::subplans() const { + // @@protoc_insertion_point(field_list:pg_query.AlternativeSubPlan.subplans) + return subplans_; +} + +// ------------------------------------------------------------------- + +// FieldSelect + +// .pg_query.Node xpr = 1 [json_name = "xpr"]; +inline bool FieldSelect::_internal_has_xpr() const { + return this != internal_default_instance() && xpr_ != nullptr; +} +inline bool FieldSelect::has_xpr() const { + return _internal_has_xpr(); +} +inline void FieldSelect::clear_xpr() { + if (GetArena() == nullptr && xpr_ != nullptr) { + delete xpr_; + } + xpr_ = nullptr; +} +inline const ::pg_query::Node& FieldSelect::_internal_xpr() const { + const ::pg_query::Node* p = xpr_; + return p != nullptr ? *p : reinterpret_cast( + ::pg_query::_Node_default_instance_); +} +inline const ::pg_query::Node& FieldSelect::xpr() const { + // @@protoc_insertion_point(field_get:pg_query.FieldSelect.xpr) + return _internal_xpr(); +} +inline void FieldSelect::unsafe_arena_set_allocated_xpr( + ::pg_query::Node* xpr) { + if (GetArena() == nullptr) { + delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(xpr_); + } + xpr_ = xpr; + if (xpr) { + + } else { + + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.FieldSelect.xpr) +} +inline ::pg_query::Node* FieldSelect::release_xpr() { + + ::pg_query::Node* temp = xpr_; + xpr_ = nullptr; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + return temp; +} +inline ::pg_query::Node* FieldSelect::unsafe_arena_release_xpr() { + // @@protoc_insertion_point(field_release:pg_query.FieldSelect.xpr) + + ::pg_query::Node* temp = xpr_; + xpr_ = nullptr; + return temp; +} +inline ::pg_query::Node* FieldSelect::_internal_mutable_xpr() { + + if (xpr_ == nullptr) { + auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); + xpr_ = p; + } + return xpr_; +} +inline ::pg_query::Node* FieldSelect::mutable_xpr() { + // @@protoc_insertion_point(field_mutable:pg_query.FieldSelect.xpr) + return _internal_mutable_xpr(); +} +inline void FieldSelect::set_allocated_xpr(::pg_query::Node* xpr) { + ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); + if (message_arena == nullptr) { + delete xpr_; + } + if (xpr) { + ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = + ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(xpr); + if (message_arena != submessage_arena) { + xpr = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( + message_arena, xpr, submessage_arena); + } + + } else { + + } + xpr_ = xpr; + // @@protoc_insertion_point(field_set_allocated:pg_query.FieldSelect.xpr) +} + +// .pg_query.Node arg = 2 [json_name = "arg"]; +inline bool FieldSelect::_internal_has_arg() const { + return this != internal_default_instance() && arg_ != nullptr; +} +inline bool FieldSelect::has_arg() const { + return _internal_has_arg(); +} +inline void FieldSelect::clear_arg() { + if (GetArena() == nullptr && arg_ != nullptr) { + delete arg_; + } + arg_ = nullptr; +} +inline const ::pg_query::Node& FieldSelect::_internal_arg() const { + const ::pg_query::Node* p = arg_; + return p != nullptr ? *p : reinterpret_cast( + ::pg_query::_Node_default_instance_); +} +inline const ::pg_query::Node& FieldSelect::arg() const { + // @@protoc_insertion_point(field_get:pg_query.FieldSelect.arg) + return _internal_arg(); +} +inline void FieldSelect::unsafe_arena_set_allocated_arg( + ::pg_query::Node* arg) { + if (GetArena() == nullptr) { + delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(arg_); + } + arg_ = arg; + if (arg) { + + } else { + + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.FieldSelect.arg) +} +inline ::pg_query::Node* FieldSelect::release_arg() { + + ::pg_query::Node* temp = arg_; + arg_ = nullptr; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + return temp; +} +inline ::pg_query::Node* FieldSelect::unsafe_arena_release_arg() { + // @@protoc_insertion_point(field_release:pg_query.FieldSelect.arg) + + ::pg_query::Node* temp = arg_; + arg_ = nullptr; + return temp; +} +inline ::pg_query::Node* FieldSelect::_internal_mutable_arg() { + + if (arg_ == nullptr) { + auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); + arg_ = p; + } + return arg_; +} +inline ::pg_query::Node* FieldSelect::mutable_arg() { + // @@protoc_insertion_point(field_mutable:pg_query.FieldSelect.arg) + return _internal_mutable_arg(); +} +inline void FieldSelect::set_allocated_arg(::pg_query::Node* arg) { + ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); + if (message_arena == nullptr) { + delete arg_; + } + if (arg) { + ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = + ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(arg); + if (message_arena != submessage_arena) { + arg = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( + message_arena, arg, submessage_arena); + } + + } else { + + } + arg_ = arg; + // @@protoc_insertion_point(field_set_allocated:pg_query.FieldSelect.arg) +} + +// int32 fieldnum = 3 [json_name = "fieldnum"]; +inline void FieldSelect::clear_fieldnum() { + fieldnum_ = 0; +} +inline ::PROTOBUF_NAMESPACE_ID::int32 FieldSelect::_internal_fieldnum() const { + return fieldnum_; +} +inline ::PROTOBUF_NAMESPACE_ID::int32 FieldSelect::fieldnum() const { + // @@protoc_insertion_point(field_get:pg_query.FieldSelect.fieldnum) + return _internal_fieldnum(); +} +inline void FieldSelect::_internal_set_fieldnum(::PROTOBUF_NAMESPACE_ID::int32 value) { + + fieldnum_ = value; +} +inline void FieldSelect::set_fieldnum(::PROTOBUF_NAMESPACE_ID::int32 value) { + _internal_set_fieldnum(value); + // @@protoc_insertion_point(field_set:pg_query.FieldSelect.fieldnum) +} + +// uint32 resulttype = 4 [json_name = "resulttype"]; +inline void FieldSelect::clear_resulttype() { + resulttype_ = 0u; +} +inline ::PROTOBUF_NAMESPACE_ID::uint32 FieldSelect::_internal_resulttype() const { + return resulttype_; +} +inline ::PROTOBUF_NAMESPACE_ID::uint32 FieldSelect::resulttype() const { + // @@protoc_insertion_point(field_get:pg_query.FieldSelect.resulttype) + return _internal_resulttype(); +} +inline void FieldSelect::_internal_set_resulttype(::PROTOBUF_NAMESPACE_ID::uint32 value) { + + resulttype_ = value; +} +inline void FieldSelect::set_resulttype(::PROTOBUF_NAMESPACE_ID::uint32 value) { + _internal_set_resulttype(value); + // @@protoc_insertion_point(field_set:pg_query.FieldSelect.resulttype) +} + +// int32 resulttypmod = 5 [json_name = "resulttypmod"]; +inline void FieldSelect::clear_resulttypmod() { + resulttypmod_ = 0; +} +inline ::PROTOBUF_NAMESPACE_ID::int32 FieldSelect::_internal_resulttypmod() const { + return resulttypmod_; +} +inline ::PROTOBUF_NAMESPACE_ID::int32 FieldSelect::resulttypmod() const { + // @@protoc_insertion_point(field_get:pg_query.FieldSelect.resulttypmod) + return _internal_resulttypmod(); +} +inline void FieldSelect::_internal_set_resulttypmod(::PROTOBUF_NAMESPACE_ID::int32 value) { + + resulttypmod_ = value; +} +inline void FieldSelect::set_resulttypmod(::PROTOBUF_NAMESPACE_ID::int32 value) { + _internal_set_resulttypmod(value); + // @@protoc_insertion_point(field_set:pg_query.FieldSelect.resulttypmod) +} + +// uint32 resultcollid = 6 [json_name = "resultcollid"]; +inline void FieldSelect::clear_resultcollid() { + resultcollid_ = 0u; +} +inline ::PROTOBUF_NAMESPACE_ID::uint32 FieldSelect::_internal_resultcollid() const { + return resultcollid_; +} +inline ::PROTOBUF_NAMESPACE_ID::uint32 FieldSelect::resultcollid() const { + // @@protoc_insertion_point(field_get:pg_query.FieldSelect.resultcollid) + return _internal_resultcollid(); +} +inline void FieldSelect::_internal_set_resultcollid(::PROTOBUF_NAMESPACE_ID::uint32 value) { + + resultcollid_ = value; +} +inline void FieldSelect::set_resultcollid(::PROTOBUF_NAMESPACE_ID::uint32 value) { + _internal_set_resultcollid(value); + // @@protoc_insertion_point(field_set:pg_query.FieldSelect.resultcollid) +} + +// ------------------------------------------------------------------- + +// FieldStore + +// .pg_query.Node xpr = 1 [json_name = "xpr"]; +inline bool FieldStore::_internal_has_xpr() const { + return this != internal_default_instance() && xpr_ != nullptr; +} +inline bool FieldStore::has_xpr() const { + return _internal_has_xpr(); +} +inline void FieldStore::clear_xpr() { + if (GetArena() == nullptr && xpr_ != nullptr) { + delete xpr_; + } + xpr_ = nullptr; +} +inline const ::pg_query::Node& FieldStore::_internal_xpr() const { + const ::pg_query::Node* p = xpr_; + return p != nullptr ? *p : reinterpret_cast( + ::pg_query::_Node_default_instance_); +} +inline const ::pg_query::Node& FieldStore::xpr() const { + // @@protoc_insertion_point(field_get:pg_query.FieldStore.xpr) + return _internal_xpr(); +} +inline void FieldStore::unsafe_arena_set_allocated_xpr( + ::pg_query::Node* xpr) { + if (GetArena() == nullptr) { + delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(xpr_); + } + xpr_ = xpr; + if (xpr) { + + } else { + + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.FieldStore.xpr) +} +inline ::pg_query::Node* FieldStore::release_xpr() { + + ::pg_query::Node* temp = xpr_; + xpr_ = nullptr; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + return temp; +} +inline ::pg_query::Node* FieldStore::unsafe_arena_release_xpr() { + // @@protoc_insertion_point(field_release:pg_query.FieldStore.xpr) + + ::pg_query::Node* temp = xpr_; + xpr_ = nullptr; + return temp; +} +inline ::pg_query::Node* FieldStore::_internal_mutable_xpr() { + + if (xpr_ == nullptr) { + auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); + xpr_ = p; + } + return xpr_; +} +inline ::pg_query::Node* FieldStore::mutable_xpr() { + // @@protoc_insertion_point(field_mutable:pg_query.FieldStore.xpr) + return _internal_mutable_xpr(); +} +inline void FieldStore::set_allocated_xpr(::pg_query::Node* xpr) { + ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); + if (message_arena == nullptr) { + delete xpr_; + } + if (xpr) { + ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = + ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(xpr); + if (message_arena != submessage_arena) { + xpr = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( + message_arena, xpr, submessage_arena); + } + + } else { + + } + xpr_ = xpr; + // @@protoc_insertion_point(field_set_allocated:pg_query.FieldStore.xpr) +} + +// .pg_query.Node arg = 2 [json_name = "arg"]; +inline bool FieldStore::_internal_has_arg() const { + return this != internal_default_instance() && arg_ != nullptr; +} +inline bool FieldStore::has_arg() const { + return _internal_has_arg(); +} +inline void FieldStore::clear_arg() { + if (GetArena() == nullptr && arg_ != nullptr) { + delete arg_; + } + arg_ = nullptr; +} +inline const ::pg_query::Node& FieldStore::_internal_arg() const { + const ::pg_query::Node* p = arg_; + return p != nullptr ? *p : reinterpret_cast( + ::pg_query::_Node_default_instance_); +} +inline const ::pg_query::Node& FieldStore::arg() const { + // @@protoc_insertion_point(field_get:pg_query.FieldStore.arg) + return _internal_arg(); +} +inline void FieldStore::unsafe_arena_set_allocated_arg( + ::pg_query::Node* arg) { + if (GetArena() == nullptr) { + delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(arg_); + } + arg_ = arg; + if (arg) { + + } else { + + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.FieldStore.arg) +} +inline ::pg_query::Node* FieldStore::release_arg() { + + ::pg_query::Node* temp = arg_; + arg_ = nullptr; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + return temp; +} +inline ::pg_query::Node* FieldStore::unsafe_arena_release_arg() { + // @@protoc_insertion_point(field_release:pg_query.FieldStore.arg) + + ::pg_query::Node* temp = arg_; + arg_ = nullptr; + return temp; +} +inline ::pg_query::Node* FieldStore::_internal_mutable_arg() { + + if (arg_ == nullptr) { + auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); + arg_ = p; + } + return arg_; +} +inline ::pg_query::Node* FieldStore::mutable_arg() { + // @@protoc_insertion_point(field_mutable:pg_query.FieldStore.arg) + return _internal_mutable_arg(); +} +inline void FieldStore::set_allocated_arg(::pg_query::Node* arg) { + ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); + if (message_arena == nullptr) { + delete arg_; + } + if (arg) { + ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = + ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(arg); + if (message_arena != submessage_arena) { + arg = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( + message_arena, arg, submessage_arena); + } + + } else { + + } + arg_ = arg; + // @@protoc_insertion_point(field_set_allocated:pg_query.FieldStore.arg) +} + +// repeated .pg_query.Node newvals = 3 [json_name = "newvals"]; +inline int FieldStore::_internal_newvals_size() const { + return newvals_.size(); +} +inline int FieldStore::newvals_size() const { + return _internal_newvals_size(); +} +inline void FieldStore::clear_newvals() { + newvals_.Clear(); +} +inline ::pg_query::Node* FieldStore::mutable_newvals(int index) { + // @@protoc_insertion_point(field_mutable:pg_query.FieldStore.newvals) + return newvals_.Mutable(index); +} +inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* +FieldStore::mutable_newvals() { + // @@protoc_insertion_point(field_mutable_list:pg_query.FieldStore.newvals) + return &newvals_; +} +inline const ::pg_query::Node& FieldStore::_internal_newvals(int index) const { + return newvals_.Get(index); +} +inline const ::pg_query::Node& FieldStore::newvals(int index) const { + // @@protoc_insertion_point(field_get:pg_query.FieldStore.newvals) + return _internal_newvals(index); +} +inline ::pg_query::Node* FieldStore::_internal_add_newvals() { + return newvals_.Add(); +} +inline ::pg_query::Node* FieldStore::add_newvals() { + // @@protoc_insertion_point(field_add:pg_query.FieldStore.newvals) + return _internal_add_newvals(); +} +inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& +FieldStore::newvals() const { + // @@protoc_insertion_point(field_list:pg_query.FieldStore.newvals) + return newvals_; +} + +// repeated .pg_query.Node fieldnums = 4 [json_name = "fieldnums"]; +inline int FieldStore::_internal_fieldnums_size() const { + return fieldnums_.size(); +} +inline int FieldStore::fieldnums_size() const { + return _internal_fieldnums_size(); +} +inline void FieldStore::clear_fieldnums() { + fieldnums_.Clear(); +} +inline ::pg_query::Node* FieldStore::mutable_fieldnums(int index) { + // @@protoc_insertion_point(field_mutable:pg_query.FieldStore.fieldnums) + return fieldnums_.Mutable(index); +} +inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* +FieldStore::mutable_fieldnums() { + // @@protoc_insertion_point(field_mutable_list:pg_query.FieldStore.fieldnums) + return &fieldnums_; +} +inline const ::pg_query::Node& FieldStore::_internal_fieldnums(int index) const { + return fieldnums_.Get(index); +} +inline const ::pg_query::Node& FieldStore::fieldnums(int index) const { + // @@protoc_insertion_point(field_get:pg_query.FieldStore.fieldnums) + return _internal_fieldnums(index); +} +inline ::pg_query::Node* FieldStore::_internal_add_fieldnums() { + return fieldnums_.Add(); +} +inline ::pg_query::Node* FieldStore::add_fieldnums() { + // @@protoc_insertion_point(field_add:pg_query.FieldStore.fieldnums) + return _internal_add_fieldnums(); +} +inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& +FieldStore::fieldnums() const { + // @@protoc_insertion_point(field_list:pg_query.FieldStore.fieldnums) + return fieldnums_; +} + +// uint32 resulttype = 5 [json_name = "resulttype"]; +inline void FieldStore::clear_resulttype() { + resulttype_ = 0u; +} +inline ::PROTOBUF_NAMESPACE_ID::uint32 FieldStore::_internal_resulttype() const { + return resulttype_; +} +inline ::PROTOBUF_NAMESPACE_ID::uint32 FieldStore::resulttype() const { + // @@protoc_insertion_point(field_get:pg_query.FieldStore.resulttype) + return _internal_resulttype(); +} +inline void FieldStore::_internal_set_resulttype(::PROTOBUF_NAMESPACE_ID::uint32 value) { + + resulttype_ = value; +} +inline void FieldStore::set_resulttype(::PROTOBUF_NAMESPACE_ID::uint32 value) { + _internal_set_resulttype(value); + // @@protoc_insertion_point(field_set:pg_query.FieldStore.resulttype) +} + +// ------------------------------------------------------------------- + +// RelabelType + +// .pg_query.Node xpr = 1 [json_name = "xpr"]; +inline bool RelabelType::_internal_has_xpr() const { + return this != internal_default_instance() && xpr_ != nullptr; +} +inline bool RelabelType::has_xpr() const { + return _internal_has_xpr(); +} +inline void RelabelType::clear_xpr() { + if (GetArena() == nullptr && xpr_ != nullptr) { + delete xpr_; + } + xpr_ = nullptr; +} +inline const ::pg_query::Node& RelabelType::_internal_xpr() const { + const ::pg_query::Node* p = xpr_; + return p != nullptr ? *p : reinterpret_cast( + ::pg_query::_Node_default_instance_); +} +inline const ::pg_query::Node& RelabelType::xpr() const { + // @@protoc_insertion_point(field_get:pg_query.RelabelType.xpr) + return _internal_xpr(); +} +inline void RelabelType::unsafe_arena_set_allocated_xpr( + ::pg_query::Node* xpr) { + if (GetArena() == nullptr) { + delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(xpr_); + } + xpr_ = xpr; + if (xpr) { + + } else { + + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.RelabelType.xpr) +} +inline ::pg_query::Node* RelabelType::release_xpr() { + + ::pg_query::Node* temp = xpr_; + xpr_ = nullptr; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + return temp; +} +inline ::pg_query::Node* RelabelType::unsafe_arena_release_xpr() { + // @@protoc_insertion_point(field_release:pg_query.RelabelType.xpr) + + ::pg_query::Node* temp = xpr_; + xpr_ = nullptr; + return temp; +} +inline ::pg_query::Node* RelabelType::_internal_mutable_xpr() { + + if (xpr_ == nullptr) { + auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); + xpr_ = p; + } + return xpr_; +} +inline ::pg_query::Node* RelabelType::mutable_xpr() { + // @@protoc_insertion_point(field_mutable:pg_query.RelabelType.xpr) + return _internal_mutable_xpr(); +} +inline void RelabelType::set_allocated_xpr(::pg_query::Node* xpr) { + ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); + if (message_arena == nullptr) { + delete xpr_; + } + if (xpr) { + ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = + ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(xpr); + if (message_arena != submessage_arena) { + xpr = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( + message_arena, xpr, submessage_arena); + } + + } else { + + } + xpr_ = xpr; + // @@protoc_insertion_point(field_set_allocated:pg_query.RelabelType.xpr) +} + +// .pg_query.Node arg = 2 [json_name = "arg"]; +inline bool RelabelType::_internal_has_arg() const { + return this != internal_default_instance() && arg_ != nullptr; +} +inline bool RelabelType::has_arg() const { + return _internal_has_arg(); +} +inline void RelabelType::clear_arg() { + if (GetArena() == nullptr && arg_ != nullptr) { + delete arg_; + } + arg_ = nullptr; +} +inline const ::pg_query::Node& RelabelType::_internal_arg() const { + const ::pg_query::Node* p = arg_; + return p != nullptr ? *p : reinterpret_cast( + ::pg_query::_Node_default_instance_); +} +inline const ::pg_query::Node& RelabelType::arg() const { + // @@protoc_insertion_point(field_get:pg_query.RelabelType.arg) + return _internal_arg(); +} +inline void RelabelType::unsafe_arena_set_allocated_arg( + ::pg_query::Node* arg) { + if (GetArena() == nullptr) { + delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(arg_); + } + arg_ = arg; + if (arg) { + + } else { + + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.RelabelType.arg) +} +inline ::pg_query::Node* RelabelType::release_arg() { + + ::pg_query::Node* temp = arg_; + arg_ = nullptr; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + return temp; +} +inline ::pg_query::Node* RelabelType::unsafe_arena_release_arg() { + // @@protoc_insertion_point(field_release:pg_query.RelabelType.arg) + + ::pg_query::Node* temp = arg_; + arg_ = nullptr; + return temp; +} +inline ::pg_query::Node* RelabelType::_internal_mutable_arg() { + + if (arg_ == nullptr) { + auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); + arg_ = p; + } + return arg_; +} +inline ::pg_query::Node* RelabelType::mutable_arg() { + // @@protoc_insertion_point(field_mutable:pg_query.RelabelType.arg) + return _internal_mutable_arg(); +} +inline void RelabelType::set_allocated_arg(::pg_query::Node* arg) { + ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); + if (message_arena == nullptr) { + delete arg_; + } + if (arg) { + ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = + ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(arg); + if (message_arena != submessage_arena) { + arg = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( + message_arena, arg, submessage_arena); + } + + } else { + + } + arg_ = arg; + // @@protoc_insertion_point(field_set_allocated:pg_query.RelabelType.arg) +} + +// uint32 resulttype = 3 [json_name = "resulttype"]; +inline void RelabelType::clear_resulttype() { + resulttype_ = 0u; +} +inline ::PROTOBUF_NAMESPACE_ID::uint32 RelabelType::_internal_resulttype() const { + return resulttype_; +} +inline ::PROTOBUF_NAMESPACE_ID::uint32 RelabelType::resulttype() const { + // @@protoc_insertion_point(field_get:pg_query.RelabelType.resulttype) + return _internal_resulttype(); +} +inline void RelabelType::_internal_set_resulttype(::PROTOBUF_NAMESPACE_ID::uint32 value) { + + resulttype_ = value; +} +inline void RelabelType::set_resulttype(::PROTOBUF_NAMESPACE_ID::uint32 value) { + _internal_set_resulttype(value); + // @@protoc_insertion_point(field_set:pg_query.RelabelType.resulttype) +} + +// int32 resulttypmod = 4 [json_name = "resulttypmod"]; +inline void RelabelType::clear_resulttypmod() { + resulttypmod_ = 0; +} +inline ::PROTOBUF_NAMESPACE_ID::int32 RelabelType::_internal_resulttypmod() const { + return resulttypmod_; +} +inline ::PROTOBUF_NAMESPACE_ID::int32 RelabelType::resulttypmod() const { + // @@protoc_insertion_point(field_get:pg_query.RelabelType.resulttypmod) + return _internal_resulttypmod(); +} +inline void RelabelType::_internal_set_resulttypmod(::PROTOBUF_NAMESPACE_ID::int32 value) { + + resulttypmod_ = value; +} +inline void RelabelType::set_resulttypmod(::PROTOBUF_NAMESPACE_ID::int32 value) { + _internal_set_resulttypmod(value); + // @@protoc_insertion_point(field_set:pg_query.RelabelType.resulttypmod) +} + +// uint32 resultcollid = 5 [json_name = "resultcollid"]; +inline void RelabelType::clear_resultcollid() { + resultcollid_ = 0u; +} +inline ::PROTOBUF_NAMESPACE_ID::uint32 RelabelType::_internal_resultcollid() const { + return resultcollid_; +} +inline ::PROTOBUF_NAMESPACE_ID::uint32 RelabelType::resultcollid() const { + // @@protoc_insertion_point(field_get:pg_query.RelabelType.resultcollid) + return _internal_resultcollid(); +} +inline void RelabelType::_internal_set_resultcollid(::PROTOBUF_NAMESPACE_ID::uint32 value) { + + resultcollid_ = value; +} +inline void RelabelType::set_resultcollid(::PROTOBUF_NAMESPACE_ID::uint32 value) { + _internal_set_resultcollid(value); + // @@protoc_insertion_point(field_set:pg_query.RelabelType.resultcollid) +} + +// .pg_query.CoercionForm relabelformat = 6 [json_name = "relabelformat"]; +inline void RelabelType::clear_relabelformat() { + relabelformat_ = 0; +} +inline ::pg_query::CoercionForm RelabelType::_internal_relabelformat() const { + return static_cast< ::pg_query::CoercionForm >(relabelformat_); +} +inline ::pg_query::CoercionForm RelabelType::relabelformat() const { + // @@protoc_insertion_point(field_get:pg_query.RelabelType.relabelformat) + return _internal_relabelformat(); +} +inline void RelabelType::_internal_set_relabelformat(::pg_query::CoercionForm value) { + + relabelformat_ = value; +} +inline void RelabelType::set_relabelformat(::pg_query::CoercionForm value) { + _internal_set_relabelformat(value); + // @@protoc_insertion_point(field_set:pg_query.RelabelType.relabelformat) +} + +// int32 location = 7 [json_name = "location"]; +inline void RelabelType::clear_location() { + location_ = 0; +} +inline ::PROTOBUF_NAMESPACE_ID::int32 RelabelType::_internal_location() const { + return location_; +} +inline ::PROTOBUF_NAMESPACE_ID::int32 RelabelType::location() const { + // @@protoc_insertion_point(field_get:pg_query.RelabelType.location) + return _internal_location(); +} +inline void RelabelType::_internal_set_location(::PROTOBUF_NAMESPACE_ID::int32 value) { + + location_ = value; +} +inline void RelabelType::set_location(::PROTOBUF_NAMESPACE_ID::int32 value) { + _internal_set_location(value); + // @@protoc_insertion_point(field_set:pg_query.RelabelType.location) +} + +// ------------------------------------------------------------------- + +// CoerceViaIO + +// .pg_query.Node xpr = 1 [json_name = "xpr"]; +inline bool CoerceViaIO::_internal_has_xpr() const { + return this != internal_default_instance() && xpr_ != nullptr; +} +inline bool CoerceViaIO::has_xpr() const { + return _internal_has_xpr(); +} +inline void CoerceViaIO::clear_xpr() { + if (GetArena() == nullptr && xpr_ != nullptr) { + delete xpr_; + } + xpr_ = nullptr; +} +inline const ::pg_query::Node& CoerceViaIO::_internal_xpr() const { + const ::pg_query::Node* p = xpr_; + return p != nullptr ? *p : reinterpret_cast( + ::pg_query::_Node_default_instance_); +} +inline const ::pg_query::Node& CoerceViaIO::xpr() const { + // @@protoc_insertion_point(field_get:pg_query.CoerceViaIO.xpr) + return _internal_xpr(); +} +inline void CoerceViaIO::unsafe_arena_set_allocated_xpr( + ::pg_query::Node* xpr) { + if (GetArena() == nullptr) { + delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(xpr_); + } + xpr_ = xpr; + if (xpr) { + + } else { + + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.CoerceViaIO.xpr) +} +inline ::pg_query::Node* CoerceViaIO::release_xpr() { + + ::pg_query::Node* temp = xpr_; + xpr_ = nullptr; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + return temp; +} +inline ::pg_query::Node* CoerceViaIO::unsafe_arena_release_xpr() { + // @@protoc_insertion_point(field_release:pg_query.CoerceViaIO.xpr) + + ::pg_query::Node* temp = xpr_; + xpr_ = nullptr; + return temp; +} +inline ::pg_query::Node* CoerceViaIO::_internal_mutable_xpr() { + + if (xpr_ == nullptr) { + auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); + xpr_ = p; + } + return xpr_; +} +inline ::pg_query::Node* CoerceViaIO::mutable_xpr() { + // @@protoc_insertion_point(field_mutable:pg_query.CoerceViaIO.xpr) + return _internal_mutable_xpr(); +} +inline void CoerceViaIO::set_allocated_xpr(::pg_query::Node* xpr) { + ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); + if (message_arena == nullptr) { + delete xpr_; + } + if (xpr) { + ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = + ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(xpr); + if (message_arena != submessage_arena) { + xpr = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( + message_arena, xpr, submessage_arena); + } + + } else { + + } + xpr_ = xpr; + // @@protoc_insertion_point(field_set_allocated:pg_query.CoerceViaIO.xpr) +} + +// .pg_query.Node arg = 2 [json_name = "arg"]; +inline bool CoerceViaIO::_internal_has_arg() const { + return this != internal_default_instance() && arg_ != nullptr; +} +inline bool CoerceViaIO::has_arg() const { + return _internal_has_arg(); +} +inline void CoerceViaIO::clear_arg() { + if (GetArena() == nullptr && arg_ != nullptr) { + delete arg_; + } + arg_ = nullptr; +} +inline const ::pg_query::Node& CoerceViaIO::_internal_arg() const { + const ::pg_query::Node* p = arg_; + return p != nullptr ? *p : reinterpret_cast( + ::pg_query::_Node_default_instance_); +} +inline const ::pg_query::Node& CoerceViaIO::arg() const { + // @@protoc_insertion_point(field_get:pg_query.CoerceViaIO.arg) + return _internal_arg(); +} +inline void CoerceViaIO::unsafe_arena_set_allocated_arg( + ::pg_query::Node* arg) { + if (GetArena() == nullptr) { + delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(arg_); + } + arg_ = arg; + if (arg) { + + } else { + + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.CoerceViaIO.arg) +} +inline ::pg_query::Node* CoerceViaIO::release_arg() { + + ::pg_query::Node* temp = arg_; + arg_ = nullptr; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + return temp; +} +inline ::pg_query::Node* CoerceViaIO::unsafe_arena_release_arg() { + // @@protoc_insertion_point(field_release:pg_query.CoerceViaIO.arg) + + ::pg_query::Node* temp = arg_; + arg_ = nullptr; + return temp; +} +inline ::pg_query::Node* CoerceViaIO::_internal_mutable_arg() { + + if (arg_ == nullptr) { + auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); + arg_ = p; + } + return arg_; +} +inline ::pg_query::Node* CoerceViaIO::mutable_arg() { + // @@protoc_insertion_point(field_mutable:pg_query.CoerceViaIO.arg) + return _internal_mutable_arg(); +} +inline void CoerceViaIO::set_allocated_arg(::pg_query::Node* arg) { + ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); + if (message_arena == nullptr) { + delete arg_; + } + if (arg) { + ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = + ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(arg); + if (message_arena != submessage_arena) { + arg = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( + message_arena, arg, submessage_arena); + } + + } else { + + } + arg_ = arg; + // @@protoc_insertion_point(field_set_allocated:pg_query.CoerceViaIO.arg) +} + +// uint32 resulttype = 3 [json_name = "resulttype"]; +inline void CoerceViaIO::clear_resulttype() { + resulttype_ = 0u; +} +inline ::PROTOBUF_NAMESPACE_ID::uint32 CoerceViaIO::_internal_resulttype() const { + return resulttype_; +} +inline ::PROTOBUF_NAMESPACE_ID::uint32 CoerceViaIO::resulttype() const { + // @@protoc_insertion_point(field_get:pg_query.CoerceViaIO.resulttype) + return _internal_resulttype(); +} +inline void CoerceViaIO::_internal_set_resulttype(::PROTOBUF_NAMESPACE_ID::uint32 value) { + + resulttype_ = value; +} +inline void CoerceViaIO::set_resulttype(::PROTOBUF_NAMESPACE_ID::uint32 value) { + _internal_set_resulttype(value); + // @@protoc_insertion_point(field_set:pg_query.CoerceViaIO.resulttype) +} + +// uint32 resultcollid = 4 [json_name = "resultcollid"]; +inline void CoerceViaIO::clear_resultcollid() { + resultcollid_ = 0u; +} +inline ::PROTOBUF_NAMESPACE_ID::uint32 CoerceViaIO::_internal_resultcollid() const { + return resultcollid_; +} +inline ::PROTOBUF_NAMESPACE_ID::uint32 CoerceViaIO::resultcollid() const { + // @@protoc_insertion_point(field_get:pg_query.CoerceViaIO.resultcollid) + return _internal_resultcollid(); +} +inline void CoerceViaIO::_internal_set_resultcollid(::PROTOBUF_NAMESPACE_ID::uint32 value) { + + resultcollid_ = value; +} +inline void CoerceViaIO::set_resultcollid(::PROTOBUF_NAMESPACE_ID::uint32 value) { + _internal_set_resultcollid(value); + // @@protoc_insertion_point(field_set:pg_query.CoerceViaIO.resultcollid) +} + +// .pg_query.CoercionForm coerceformat = 5 [json_name = "coerceformat"]; +inline void CoerceViaIO::clear_coerceformat() { + coerceformat_ = 0; +} +inline ::pg_query::CoercionForm CoerceViaIO::_internal_coerceformat() const { + return static_cast< ::pg_query::CoercionForm >(coerceformat_); +} +inline ::pg_query::CoercionForm CoerceViaIO::coerceformat() const { + // @@protoc_insertion_point(field_get:pg_query.CoerceViaIO.coerceformat) + return _internal_coerceformat(); +} +inline void CoerceViaIO::_internal_set_coerceformat(::pg_query::CoercionForm value) { + + coerceformat_ = value; +} +inline void CoerceViaIO::set_coerceformat(::pg_query::CoercionForm value) { + _internal_set_coerceformat(value); + // @@protoc_insertion_point(field_set:pg_query.CoerceViaIO.coerceformat) +} + +// int32 location = 6 [json_name = "location"]; +inline void CoerceViaIO::clear_location() { + location_ = 0; +} +inline ::PROTOBUF_NAMESPACE_ID::int32 CoerceViaIO::_internal_location() const { + return location_; +} +inline ::PROTOBUF_NAMESPACE_ID::int32 CoerceViaIO::location() const { + // @@protoc_insertion_point(field_get:pg_query.CoerceViaIO.location) + return _internal_location(); +} +inline void CoerceViaIO::_internal_set_location(::PROTOBUF_NAMESPACE_ID::int32 value) { + + location_ = value; +} +inline void CoerceViaIO::set_location(::PROTOBUF_NAMESPACE_ID::int32 value) { + _internal_set_location(value); + // @@protoc_insertion_point(field_set:pg_query.CoerceViaIO.location) +} + +// ------------------------------------------------------------------- + +// ArrayCoerceExpr + +// .pg_query.Node xpr = 1 [json_name = "xpr"]; +inline bool ArrayCoerceExpr::_internal_has_xpr() const { + return this != internal_default_instance() && xpr_ != nullptr; +} +inline bool ArrayCoerceExpr::has_xpr() const { + return _internal_has_xpr(); +} +inline void ArrayCoerceExpr::clear_xpr() { + if (GetArena() == nullptr && xpr_ != nullptr) { + delete xpr_; + } + xpr_ = nullptr; +} +inline const ::pg_query::Node& ArrayCoerceExpr::_internal_xpr() const { + const ::pg_query::Node* p = xpr_; + return p != nullptr ? *p : reinterpret_cast( + ::pg_query::_Node_default_instance_); +} +inline const ::pg_query::Node& ArrayCoerceExpr::xpr() const { + // @@protoc_insertion_point(field_get:pg_query.ArrayCoerceExpr.xpr) + return _internal_xpr(); +} +inline void ArrayCoerceExpr::unsafe_arena_set_allocated_xpr( + ::pg_query::Node* xpr) { + if (GetArena() == nullptr) { + delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(xpr_); + } + xpr_ = xpr; + if (xpr) { + + } else { + + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.ArrayCoerceExpr.xpr) +} +inline ::pg_query::Node* ArrayCoerceExpr::release_xpr() { + + ::pg_query::Node* temp = xpr_; + xpr_ = nullptr; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + return temp; +} +inline ::pg_query::Node* ArrayCoerceExpr::unsafe_arena_release_xpr() { + // @@protoc_insertion_point(field_release:pg_query.ArrayCoerceExpr.xpr) + + ::pg_query::Node* temp = xpr_; + xpr_ = nullptr; + return temp; +} +inline ::pg_query::Node* ArrayCoerceExpr::_internal_mutable_xpr() { + + if (xpr_ == nullptr) { + auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); + xpr_ = p; + } + return xpr_; +} +inline ::pg_query::Node* ArrayCoerceExpr::mutable_xpr() { + // @@protoc_insertion_point(field_mutable:pg_query.ArrayCoerceExpr.xpr) + return _internal_mutable_xpr(); +} +inline void ArrayCoerceExpr::set_allocated_xpr(::pg_query::Node* xpr) { + ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); + if (message_arena == nullptr) { + delete xpr_; + } + if (xpr) { + ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = + ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(xpr); + if (message_arena != submessage_arena) { + xpr = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( + message_arena, xpr, submessage_arena); + } + + } else { + + } + xpr_ = xpr; + // @@protoc_insertion_point(field_set_allocated:pg_query.ArrayCoerceExpr.xpr) +} + +// .pg_query.Node arg = 2 [json_name = "arg"]; +inline bool ArrayCoerceExpr::_internal_has_arg() const { + return this != internal_default_instance() && arg_ != nullptr; +} +inline bool ArrayCoerceExpr::has_arg() const { + return _internal_has_arg(); +} +inline void ArrayCoerceExpr::clear_arg() { + if (GetArena() == nullptr && arg_ != nullptr) { + delete arg_; + } + arg_ = nullptr; +} +inline const ::pg_query::Node& ArrayCoerceExpr::_internal_arg() const { + const ::pg_query::Node* p = arg_; + return p != nullptr ? *p : reinterpret_cast( + ::pg_query::_Node_default_instance_); +} +inline const ::pg_query::Node& ArrayCoerceExpr::arg() const { + // @@protoc_insertion_point(field_get:pg_query.ArrayCoerceExpr.arg) + return _internal_arg(); +} +inline void ArrayCoerceExpr::unsafe_arena_set_allocated_arg( + ::pg_query::Node* arg) { + if (GetArena() == nullptr) { + delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(arg_); + } + arg_ = arg; + if (arg) { + + } else { + + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.ArrayCoerceExpr.arg) +} +inline ::pg_query::Node* ArrayCoerceExpr::release_arg() { + + ::pg_query::Node* temp = arg_; + arg_ = nullptr; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + return temp; +} +inline ::pg_query::Node* ArrayCoerceExpr::unsafe_arena_release_arg() { + // @@protoc_insertion_point(field_release:pg_query.ArrayCoerceExpr.arg) + + ::pg_query::Node* temp = arg_; + arg_ = nullptr; + return temp; +} +inline ::pg_query::Node* ArrayCoerceExpr::_internal_mutable_arg() { + + if (arg_ == nullptr) { + auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); + arg_ = p; + } + return arg_; +} +inline ::pg_query::Node* ArrayCoerceExpr::mutable_arg() { + // @@protoc_insertion_point(field_mutable:pg_query.ArrayCoerceExpr.arg) + return _internal_mutable_arg(); +} +inline void ArrayCoerceExpr::set_allocated_arg(::pg_query::Node* arg) { + ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); + if (message_arena == nullptr) { + delete arg_; + } + if (arg) { + ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = + ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(arg); + if (message_arena != submessage_arena) { + arg = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( + message_arena, arg, submessage_arena); + } + + } else { + + } + arg_ = arg; + // @@protoc_insertion_point(field_set_allocated:pg_query.ArrayCoerceExpr.arg) +} + +// .pg_query.Node elemexpr = 3 [json_name = "elemexpr"]; +inline bool ArrayCoerceExpr::_internal_has_elemexpr() const { + return this != internal_default_instance() && elemexpr_ != nullptr; +} +inline bool ArrayCoerceExpr::has_elemexpr() const { + return _internal_has_elemexpr(); +} +inline void ArrayCoerceExpr::clear_elemexpr() { + if (GetArena() == nullptr && elemexpr_ != nullptr) { + delete elemexpr_; + } + elemexpr_ = nullptr; +} +inline const ::pg_query::Node& ArrayCoerceExpr::_internal_elemexpr() const { + const ::pg_query::Node* p = elemexpr_; + return p != nullptr ? *p : reinterpret_cast( + ::pg_query::_Node_default_instance_); +} +inline const ::pg_query::Node& ArrayCoerceExpr::elemexpr() const { + // @@protoc_insertion_point(field_get:pg_query.ArrayCoerceExpr.elemexpr) + return _internal_elemexpr(); +} +inline void ArrayCoerceExpr::unsafe_arena_set_allocated_elemexpr( + ::pg_query::Node* elemexpr) { + if (GetArena() == nullptr) { + delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(elemexpr_); + } + elemexpr_ = elemexpr; + if (elemexpr) { + + } else { + + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.ArrayCoerceExpr.elemexpr) +} +inline ::pg_query::Node* ArrayCoerceExpr::release_elemexpr() { + + ::pg_query::Node* temp = elemexpr_; + elemexpr_ = nullptr; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + return temp; +} +inline ::pg_query::Node* ArrayCoerceExpr::unsafe_arena_release_elemexpr() { + // @@protoc_insertion_point(field_release:pg_query.ArrayCoerceExpr.elemexpr) + + ::pg_query::Node* temp = elemexpr_; + elemexpr_ = nullptr; + return temp; +} +inline ::pg_query::Node* ArrayCoerceExpr::_internal_mutable_elemexpr() { + + if (elemexpr_ == nullptr) { + auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); + elemexpr_ = p; + } + return elemexpr_; +} +inline ::pg_query::Node* ArrayCoerceExpr::mutable_elemexpr() { + // @@protoc_insertion_point(field_mutable:pg_query.ArrayCoerceExpr.elemexpr) + return _internal_mutable_elemexpr(); +} +inline void ArrayCoerceExpr::set_allocated_elemexpr(::pg_query::Node* elemexpr) { + ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); + if (message_arena == nullptr) { + delete elemexpr_; + } + if (elemexpr) { + ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = + ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(elemexpr); + if (message_arena != submessage_arena) { + elemexpr = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( + message_arena, elemexpr, submessage_arena); + } + + } else { + + } + elemexpr_ = elemexpr; + // @@protoc_insertion_point(field_set_allocated:pg_query.ArrayCoerceExpr.elemexpr) +} + +// uint32 resulttype = 4 [json_name = "resulttype"]; +inline void ArrayCoerceExpr::clear_resulttype() { + resulttype_ = 0u; +} +inline ::PROTOBUF_NAMESPACE_ID::uint32 ArrayCoerceExpr::_internal_resulttype() const { + return resulttype_; +} +inline ::PROTOBUF_NAMESPACE_ID::uint32 ArrayCoerceExpr::resulttype() const { + // @@protoc_insertion_point(field_get:pg_query.ArrayCoerceExpr.resulttype) + return _internal_resulttype(); +} +inline void ArrayCoerceExpr::_internal_set_resulttype(::PROTOBUF_NAMESPACE_ID::uint32 value) { + + resulttype_ = value; +} +inline void ArrayCoerceExpr::set_resulttype(::PROTOBUF_NAMESPACE_ID::uint32 value) { + _internal_set_resulttype(value); + // @@protoc_insertion_point(field_set:pg_query.ArrayCoerceExpr.resulttype) +} + +// int32 resulttypmod = 5 [json_name = "resulttypmod"]; +inline void ArrayCoerceExpr::clear_resulttypmod() { + resulttypmod_ = 0; +} +inline ::PROTOBUF_NAMESPACE_ID::int32 ArrayCoerceExpr::_internal_resulttypmod() const { + return resulttypmod_; +} +inline ::PROTOBUF_NAMESPACE_ID::int32 ArrayCoerceExpr::resulttypmod() const { + // @@protoc_insertion_point(field_get:pg_query.ArrayCoerceExpr.resulttypmod) + return _internal_resulttypmod(); +} +inline void ArrayCoerceExpr::_internal_set_resulttypmod(::PROTOBUF_NAMESPACE_ID::int32 value) { + + resulttypmod_ = value; +} +inline void ArrayCoerceExpr::set_resulttypmod(::PROTOBUF_NAMESPACE_ID::int32 value) { + _internal_set_resulttypmod(value); + // @@protoc_insertion_point(field_set:pg_query.ArrayCoerceExpr.resulttypmod) +} + +// uint32 resultcollid = 6 [json_name = "resultcollid"]; +inline void ArrayCoerceExpr::clear_resultcollid() { + resultcollid_ = 0u; +} +inline ::PROTOBUF_NAMESPACE_ID::uint32 ArrayCoerceExpr::_internal_resultcollid() const { + return resultcollid_; +} +inline ::PROTOBUF_NAMESPACE_ID::uint32 ArrayCoerceExpr::resultcollid() const { + // @@protoc_insertion_point(field_get:pg_query.ArrayCoerceExpr.resultcollid) + return _internal_resultcollid(); +} +inline void ArrayCoerceExpr::_internal_set_resultcollid(::PROTOBUF_NAMESPACE_ID::uint32 value) { + + resultcollid_ = value; +} +inline void ArrayCoerceExpr::set_resultcollid(::PROTOBUF_NAMESPACE_ID::uint32 value) { + _internal_set_resultcollid(value); + // @@protoc_insertion_point(field_set:pg_query.ArrayCoerceExpr.resultcollid) +} + +// .pg_query.CoercionForm coerceformat = 7 [json_name = "coerceformat"]; +inline void ArrayCoerceExpr::clear_coerceformat() { + coerceformat_ = 0; +} +inline ::pg_query::CoercionForm ArrayCoerceExpr::_internal_coerceformat() const { + return static_cast< ::pg_query::CoercionForm >(coerceformat_); +} +inline ::pg_query::CoercionForm ArrayCoerceExpr::coerceformat() const { + // @@protoc_insertion_point(field_get:pg_query.ArrayCoerceExpr.coerceformat) + return _internal_coerceformat(); +} +inline void ArrayCoerceExpr::_internal_set_coerceformat(::pg_query::CoercionForm value) { + + coerceformat_ = value; +} +inline void ArrayCoerceExpr::set_coerceformat(::pg_query::CoercionForm value) { + _internal_set_coerceformat(value); + // @@protoc_insertion_point(field_set:pg_query.ArrayCoerceExpr.coerceformat) +} + +// int32 location = 8 [json_name = "location"]; +inline void ArrayCoerceExpr::clear_location() { + location_ = 0; +} +inline ::PROTOBUF_NAMESPACE_ID::int32 ArrayCoerceExpr::_internal_location() const { + return location_; +} +inline ::PROTOBUF_NAMESPACE_ID::int32 ArrayCoerceExpr::location() const { + // @@protoc_insertion_point(field_get:pg_query.ArrayCoerceExpr.location) + return _internal_location(); +} +inline void ArrayCoerceExpr::_internal_set_location(::PROTOBUF_NAMESPACE_ID::int32 value) { + + location_ = value; +} +inline void ArrayCoerceExpr::set_location(::PROTOBUF_NAMESPACE_ID::int32 value) { + _internal_set_location(value); + // @@protoc_insertion_point(field_set:pg_query.ArrayCoerceExpr.location) +} + +// ------------------------------------------------------------------- + +// ConvertRowtypeExpr + +// .pg_query.Node xpr = 1 [json_name = "xpr"]; +inline bool ConvertRowtypeExpr::_internal_has_xpr() const { + return this != internal_default_instance() && xpr_ != nullptr; +} +inline bool ConvertRowtypeExpr::has_xpr() const { + return _internal_has_xpr(); +} +inline void ConvertRowtypeExpr::clear_xpr() { + if (GetArena() == nullptr && xpr_ != nullptr) { + delete xpr_; + } + xpr_ = nullptr; +} +inline const ::pg_query::Node& ConvertRowtypeExpr::_internal_xpr() const { + const ::pg_query::Node* p = xpr_; + return p != nullptr ? *p : reinterpret_cast( + ::pg_query::_Node_default_instance_); +} +inline const ::pg_query::Node& ConvertRowtypeExpr::xpr() const { + // @@protoc_insertion_point(field_get:pg_query.ConvertRowtypeExpr.xpr) + return _internal_xpr(); +} +inline void ConvertRowtypeExpr::unsafe_arena_set_allocated_xpr( + ::pg_query::Node* xpr) { + if (GetArena() == nullptr) { + delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(xpr_); + } + xpr_ = xpr; + if (xpr) { + + } else { + + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.ConvertRowtypeExpr.xpr) +} +inline ::pg_query::Node* ConvertRowtypeExpr::release_xpr() { + + ::pg_query::Node* temp = xpr_; + xpr_ = nullptr; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + return temp; +} +inline ::pg_query::Node* ConvertRowtypeExpr::unsafe_arena_release_xpr() { + // @@protoc_insertion_point(field_release:pg_query.ConvertRowtypeExpr.xpr) + + ::pg_query::Node* temp = xpr_; + xpr_ = nullptr; + return temp; +} +inline ::pg_query::Node* ConvertRowtypeExpr::_internal_mutable_xpr() { + + if (xpr_ == nullptr) { + auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); + xpr_ = p; + } + return xpr_; +} +inline ::pg_query::Node* ConvertRowtypeExpr::mutable_xpr() { + // @@protoc_insertion_point(field_mutable:pg_query.ConvertRowtypeExpr.xpr) + return _internal_mutable_xpr(); +} +inline void ConvertRowtypeExpr::set_allocated_xpr(::pg_query::Node* xpr) { + ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); + if (message_arena == nullptr) { + delete xpr_; + } + if (xpr) { + ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = + ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(xpr); + if (message_arena != submessage_arena) { + xpr = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( + message_arena, xpr, submessage_arena); + } + + } else { + + } + xpr_ = xpr; + // @@protoc_insertion_point(field_set_allocated:pg_query.ConvertRowtypeExpr.xpr) +} + +// .pg_query.Node arg = 2 [json_name = "arg"]; +inline bool ConvertRowtypeExpr::_internal_has_arg() const { + return this != internal_default_instance() && arg_ != nullptr; +} +inline bool ConvertRowtypeExpr::has_arg() const { + return _internal_has_arg(); +} +inline void ConvertRowtypeExpr::clear_arg() { + if (GetArena() == nullptr && arg_ != nullptr) { + delete arg_; + } + arg_ = nullptr; +} +inline const ::pg_query::Node& ConvertRowtypeExpr::_internal_arg() const { + const ::pg_query::Node* p = arg_; + return p != nullptr ? *p : reinterpret_cast( + ::pg_query::_Node_default_instance_); +} +inline const ::pg_query::Node& ConvertRowtypeExpr::arg() const { + // @@protoc_insertion_point(field_get:pg_query.ConvertRowtypeExpr.arg) + return _internal_arg(); +} +inline void ConvertRowtypeExpr::unsafe_arena_set_allocated_arg( + ::pg_query::Node* arg) { + if (GetArena() == nullptr) { + delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(arg_); + } + arg_ = arg; + if (arg) { + + } else { + + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.ConvertRowtypeExpr.arg) +} +inline ::pg_query::Node* ConvertRowtypeExpr::release_arg() { + + ::pg_query::Node* temp = arg_; + arg_ = nullptr; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + return temp; +} +inline ::pg_query::Node* ConvertRowtypeExpr::unsafe_arena_release_arg() { + // @@protoc_insertion_point(field_release:pg_query.ConvertRowtypeExpr.arg) + + ::pg_query::Node* temp = arg_; + arg_ = nullptr; + return temp; +} +inline ::pg_query::Node* ConvertRowtypeExpr::_internal_mutable_arg() { + + if (arg_ == nullptr) { + auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); + arg_ = p; + } + return arg_; +} +inline ::pg_query::Node* ConvertRowtypeExpr::mutable_arg() { + // @@protoc_insertion_point(field_mutable:pg_query.ConvertRowtypeExpr.arg) + return _internal_mutable_arg(); +} +inline void ConvertRowtypeExpr::set_allocated_arg(::pg_query::Node* arg) { + ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); + if (message_arena == nullptr) { + delete arg_; + } + if (arg) { + ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = + ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(arg); + if (message_arena != submessage_arena) { + arg = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( + message_arena, arg, submessage_arena); + } + + } else { + + } + arg_ = arg; + // @@protoc_insertion_point(field_set_allocated:pg_query.ConvertRowtypeExpr.arg) +} + +// uint32 resulttype = 3 [json_name = "resulttype"]; +inline void ConvertRowtypeExpr::clear_resulttype() { + resulttype_ = 0u; +} +inline ::PROTOBUF_NAMESPACE_ID::uint32 ConvertRowtypeExpr::_internal_resulttype() const { + return resulttype_; +} +inline ::PROTOBUF_NAMESPACE_ID::uint32 ConvertRowtypeExpr::resulttype() const { + // @@protoc_insertion_point(field_get:pg_query.ConvertRowtypeExpr.resulttype) + return _internal_resulttype(); +} +inline void ConvertRowtypeExpr::_internal_set_resulttype(::PROTOBUF_NAMESPACE_ID::uint32 value) { + + resulttype_ = value; +} +inline void ConvertRowtypeExpr::set_resulttype(::PROTOBUF_NAMESPACE_ID::uint32 value) { + _internal_set_resulttype(value); + // @@protoc_insertion_point(field_set:pg_query.ConvertRowtypeExpr.resulttype) +} + +// .pg_query.CoercionForm convertformat = 4 [json_name = "convertformat"]; +inline void ConvertRowtypeExpr::clear_convertformat() { + convertformat_ = 0; +} +inline ::pg_query::CoercionForm ConvertRowtypeExpr::_internal_convertformat() const { + return static_cast< ::pg_query::CoercionForm >(convertformat_); +} +inline ::pg_query::CoercionForm ConvertRowtypeExpr::convertformat() const { + // @@protoc_insertion_point(field_get:pg_query.ConvertRowtypeExpr.convertformat) + return _internal_convertformat(); +} +inline void ConvertRowtypeExpr::_internal_set_convertformat(::pg_query::CoercionForm value) { + + convertformat_ = value; +} +inline void ConvertRowtypeExpr::set_convertformat(::pg_query::CoercionForm value) { + _internal_set_convertformat(value); + // @@protoc_insertion_point(field_set:pg_query.ConvertRowtypeExpr.convertformat) +} + +// int32 location = 5 [json_name = "location"]; +inline void ConvertRowtypeExpr::clear_location() { + location_ = 0; +} +inline ::PROTOBUF_NAMESPACE_ID::int32 ConvertRowtypeExpr::_internal_location() const { + return location_; +} +inline ::PROTOBUF_NAMESPACE_ID::int32 ConvertRowtypeExpr::location() const { + // @@protoc_insertion_point(field_get:pg_query.ConvertRowtypeExpr.location) + return _internal_location(); +} +inline void ConvertRowtypeExpr::_internal_set_location(::PROTOBUF_NAMESPACE_ID::int32 value) { + + location_ = value; +} +inline void ConvertRowtypeExpr::set_location(::PROTOBUF_NAMESPACE_ID::int32 value) { + _internal_set_location(value); + // @@protoc_insertion_point(field_set:pg_query.ConvertRowtypeExpr.location) +} + +// ------------------------------------------------------------------- + +// CollateExpr + +// .pg_query.Node xpr = 1 [json_name = "xpr"]; +inline bool CollateExpr::_internal_has_xpr() const { + return this != internal_default_instance() && xpr_ != nullptr; +} +inline bool CollateExpr::has_xpr() const { + return _internal_has_xpr(); +} +inline void CollateExpr::clear_xpr() { + if (GetArena() == nullptr && xpr_ != nullptr) { + delete xpr_; + } + xpr_ = nullptr; +} +inline const ::pg_query::Node& CollateExpr::_internal_xpr() const { + const ::pg_query::Node* p = xpr_; + return p != nullptr ? *p : reinterpret_cast( + ::pg_query::_Node_default_instance_); +} +inline const ::pg_query::Node& CollateExpr::xpr() const { + // @@protoc_insertion_point(field_get:pg_query.CollateExpr.xpr) + return _internal_xpr(); +} +inline void CollateExpr::unsafe_arena_set_allocated_xpr( + ::pg_query::Node* xpr) { + if (GetArena() == nullptr) { + delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(xpr_); + } + xpr_ = xpr; + if (xpr) { + + } else { + + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.CollateExpr.xpr) +} +inline ::pg_query::Node* CollateExpr::release_xpr() { + + ::pg_query::Node* temp = xpr_; + xpr_ = nullptr; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + return temp; +} +inline ::pg_query::Node* CollateExpr::unsafe_arena_release_xpr() { + // @@protoc_insertion_point(field_release:pg_query.CollateExpr.xpr) + + ::pg_query::Node* temp = xpr_; + xpr_ = nullptr; + return temp; +} +inline ::pg_query::Node* CollateExpr::_internal_mutable_xpr() { + + if (xpr_ == nullptr) { + auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); + xpr_ = p; + } + return xpr_; +} +inline ::pg_query::Node* CollateExpr::mutable_xpr() { + // @@protoc_insertion_point(field_mutable:pg_query.CollateExpr.xpr) + return _internal_mutable_xpr(); +} +inline void CollateExpr::set_allocated_xpr(::pg_query::Node* xpr) { + ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); + if (message_arena == nullptr) { + delete xpr_; + } + if (xpr) { + ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = + ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(xpr); + if (message_arena != submessage_arena) { + xpr = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( + message_arena, xpr, submessage_arena); + } + + } else { + + } + xpr_ = xpr; + // @@protoc_insertion_point(field_set_allocated:pg_query.CollateExpr.xpr) +} + +// .pg_query.Node arg = 2 [json_name = "arg"]; +inline bool CollateExpr::_internal_has_arg() const { + return this != internal_default_instance() && arg_ != nullptr; +} +inline bool CollateExpr::has_arg() const { + return _internal_has_arg(); +} +inline void CollateExpr::clear_arg() { + if (GetArena() == nullptr && arg_ != nullptr) { + delete arg_; + } + arg_ = nullptr; +} +inline const ::pg_query::Node& CollateExpr::_internal_arg() const { + const ::pg_query::Node* p = arg_; + return p != nullptr ? *p : reinterpret_cast( + ::pg_query::_Node_default_instance_); +} +inline const ::pg_query::Node& CollateExpr::arg() const { + // @@protoc_insertion_point(field_get:pg_query.CollateExpr.arg) + return _internal_arg(); +} +inline void CollateExpr::unsafe_arena_set_allocated_arg( + ::pg_query::Node* arg) { + if (GetArena() == nullptr) { + delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(arg_); + } + arg_ = arg; + if (arg) { + + } else { + + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.CollateExpr.arg) +} +inline ::pg_query::Node* CollateExpr::release_arg() { + + ::pg_query::Node* temp = arg_; + arg_ = nullptr; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + return temp; +} +inline ::pg_query::Node* CollateExpr::unsafe_arena_release_arg() { + // @@protoc_insertion_point(field_release:pg_query.CollateExpr.arg) + + ::pg_query::Node* temp = arg_; + arg_ = nullptr; + return temp; +} +inline ::pg_query::Node* CollateExpr::_internal_mutable_arg() { + + if (arg_ == nullptr) { + auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); + arg_ = p; + } + return arg_; +} +inline ::pg_query::Node* CollateExpr::mutable_arg() { + // @@protoc_insertion_point(field_mutable:pg_query.CollateExpr.arg) + return _internal_mutable_arg(); +} +inline void CollateExpr::set_allocated_arg(::pg_query::Node* arg) { + ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); + if (message_arena == nullptr) { + delete arg_; + } + if (arg) { + ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = + ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(arg); + if (message_arena != submessage_arena) { + arg = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( + message_arena, arg, submessage_arena); + } + + } else { + + } + arg_ = arg; + // @@protoc_insertion_point(field_set_allocated:pg_query.CollateExpr.arg) +} + +// uint32 coll_oid = 3 [json_name = "collOid"]; +inline void CollateExpr::clear_coll_oid() { + coll_oid_ = 0u; +} +inline ::PROTOBUF_NAMESPACE_ID::uint32 CollateExpr::_internal_coll_oid() const { + return coll_oid_; +} +inline ::PROTOBUF_NAMESPACE_ID::uint32 CollateExpr::coll_oid() const { + // @@protoc_insertion_point(field_get:pg_query.CollateExpr.coll_oid) + return _internal_coll_oid(); +} +inline void CollateExpr::_internal_set_coll_oid(::PROTOBUF_NAMESPACE_ID::uint32 value) { + + coll_oid_ = value; +} +inline void CollateExpr::set_coll_oid(::PROTOBUF_NAMESPACE_ID::uint32 value) { + _internal_set_coll_oid(value); + // @@protoc_insertion_point(field_set:pg_query.CollateExpr.coll_oid) +} + +// int32 location = 4 [json_name = "location"]; +inline void CollateExpr::clear_location() { + location_ = 0; +} +inline ::PROTOBUF_NAMESPACE_ID::int32 CollateExpr::_internal_location() const { + return location_; +} +inline ::PROTOBUF_NAMESPACE_ID::int32 CollateExpr::location() const { + // @@protoc_insertion_point(field_get:pg_query.CollateExpr.location) + return _internal_location(); +} +inline void CollateExpr::_internal_set_location(::PROTOBUF_NAMESPACE_ID::int32 value) { + + location_ = value; +} +inline void CollateExpr::set_location(::PROTOBUF_NAMESPACE_ID::int32 value) { + _internal_set_location(value); + // @@protoc_insertion_point(field_set:pg_query.CollateExpr.location) +} + +// ------------------------------------------------------------------- + +// CaseExpr + +// .pg_query.Node xpr = 1 [json_name = "xpr"]; +inline bool CaseExpr::_internal_has_xpr() const { + return this != internal_default_instance() && xpr_ != nullptr; +} +inline bool CaseExpr::has_xpr() const { + return _internal_has_xpr(); +} +inline void CaseExpr::clear_xpr() { + if (GetArena() == nullptr && xpr_ != nullptr) { + delete xpr_; + } + xpr_ = nullptr; +} +inline const ::pg_query::Node& CaseExpr::_internal_xpr() const { + const ::pg_query::Node* p = xpr_; + return p != nullptr ? *p : reinterpret_cast( + ::pg_query::_Node_default_instance_); +} +inline const ::pg_query::Node& CaseExpr::xpr() const { + // @@protoc_insertion_point(field_get:pg_query.CaseExpr.xpr) + return _internal_xpr(); +} +inline void CaseExpr::unsafe_arena_set_allocated_xpr( + ::pg_query::Node* xpr) { + if (GetArena() == nullptr) { + delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(xpr_); + } + xpr_ = xpr; + if (xpr) { + + } else { + + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.CaseExpr.xpr) +} +inline ::pg_query::Node* CaseExpr::release_xpr() { + + ::pg_query::Node* temp = xpr_; + xpr_ = nullptr; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + return temp; +} +inline ::pg_query::Node* CaseExpr::unsafe_arena_release_xpr() { + // @@protoc_insertion_point(field_release:pg_query.CaseExpr.xpr) + + ::pg_query::Node* temp = xpr_; + xpr_ = nullptr; + return temp; +} +inline ::pg_query::Node* CaseExpr::_internal_mutable_xpr() { + + if (xpr_ == nullptr) { + auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); + xpr_ = p; + } + return xpr_; +} +inline ::pg_query::Node* CaseExpr::mutable_xpr() { + // @@protoc_insertion_point(field_mutable:pg_query.CaseExpr.xpr) + return _internal_mutable_xpr(); +} +inline void CaseExpr::set_allocated_xpr(::pg_query::Node* xpr) { + ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); + if (message_arena == nullptr) { + delete xpr_; + } + if (xpr) { + ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = + ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(xpr); + if (message_arena != submessage_arena) { + xpr = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( + message_arena, xpr, submessage_arena); + } + + } else { + + } + xpr_ = xpr; + // @@protoc_insertion_point(field_set_allocated:pg_query.CaseExpr.xpr) +} + +// uint32 casetype = 2 [json_name = "casetype"]; +inline void CaseExpr::clear_casetype() { + casetype_ = 0u; +} +inline ::PROTOBUF_NAMESPACE_ID::uint32 CaseExpr::_internal_casetype() const { + return casetype_; +} +inline ::PROTOBUF_NAMESPACE_ID::uint32 CaseExpr::casetype() const { + // @@protoc_insertion_point(field_get:pg_query.CaseExpr.casetype) + return _internal_casetype(); +} +inline void CaseExpr::_internal_set_casetype(::PROTOBUF_NAMESPACE_ID::uint32 value) { + + casetype_ = value; +} +inline void CaseExpr::set_casetype(::PROTOBUF_NAMESPACE_ID::uint32 value) { + _internal_set_casetype(value); + // @@protoc_insertion_point(field_set:pg_query.CaseExpr.casetype) +} + +// uint32 casecollid = 3 [json_name = "casecollid"]; +inline void CaseExpr::clear_casecollid() { + casecollid_ = 0u; +} +inline ::PROTOBUF_NAMESPACE_ID::uint32 CaseExpr::_internal_casecollid() const { + return casecollid_; +} +inline ::PROTOBUF_NAMESPACE_ID::uint32 CaseExpr::casecollid() const { + // @@protoc_insertion_point(field_get:pg_query.CaseExpr.casecollid) + return _internal_casecollid(); +} +inline void CaseExpr::_internal_set_casecollid(::PROTOBUF_NAMESPACE_ID::uint32 value) { + + casecollid_ = value; +} +inline void CaseExpr::set_casecollid(::PROTOBUF_NAMESPACE_ID::uint32 value) { + _internal_set_casecollid(value); + // @@protoc_insertion_point(field_set:pg_query.CaseExpr.casecollid) +} + +// .pg_query.Node arg = 4 [json_name = "arg"]; +inline bool CaseExpr::_internal_has_arg() const { + return this != internal_default_instance() && arg_ != nullptr; +} +inline bool CaseExpr::has_arg() const { + return _internal_has_arg(); +} +inline void CaseExpr::clear_arg() { + if (GetArena() == nullptr && arg_ != nullptr) { + delete arg_; + } + arg_ = nullptr; +} +inline const ::pg_query::Node& CaseExpr::_internal_arg() const { + const ::pg_query::Node* p = arg_; + return p != nullptr ? *p : reinterpret_cast( + ::pg_query::_Node_default_instance_); +} +inline const ::pg_query::Node& CaseExpr::arg() const { + // @@protoc_insertion_point(field_get:pg_query.CaseExpr.arg) + return _internal_arg(); +} +inline void CaseExpr::unsafe_arena_set_allocated_arg( + ::pg_query::Node* arg) { + if (GetArena() == nullptr) { + delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(arg_); + } + arg_ = arg; + if (arg) { + + } else { + + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.CaseExpr.arg) +} +inline ::pg_query::Node* CaseExpr::release_arg() { + + ::pg_query::Node* temp = arg_; + arg_ = nullptr; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + return temp; +} +inline ::pg_query::Node* CaseExpr::unsafe_arena_release_arg() { + // @@protoc_insertion_point(field_release:pg_query.CaseExpr.arg) + + ::pg_query::Node* temp = arg_; + arg_ = nullptr; + return temp; +} +inline ::pg_query::Node* CaseExpr::_internal_mutable_arg() { + + if (arg_ == nullptr) { + auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); + arg_ = p; + } + return arg_; +} +inline ::pg_query::Node* CaseExpr::mutable_arg() { + // @@protoc_insertion_point(field_mutable:pg_query.CaseExpr.arg) + return _internal_mutable_arg(); +} +inline void CaseExpr::set_allocated_arg(::pg_query::Node* arg) { + ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); + if (message_arena == nullptr) { + delete arg_; + } + if (arg) { + ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = + ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(arg); + if (message_arena != submessage_arena) { + arg = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( + message_arena, arg, submessage_arena); + } + + } else { + + } + arg_ = arg; + // @@protoc_insertion_point(field_set_allocated:pg_query.CaseExpr.arg) +} + +// repeated .pg_query.Node args = 5 [json_name = "args"]; +inline int CaseExpr::_internal_args_size() const { + return args_.size(); +} +inline int CaseExpr::args_size() const { + return _internal_args_size(); +} +inline void CaseExpr::clear_args() { + args_.Clear(); +} +inline ::pg_query::Node* CaseExpr::mutable_args(int index) { + // @@protoc_insertion_point(field_mutable:pg_query.CaseExpr.args) + return args_.Mutable(index); +} +inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* +CaseExpr::mutable_args() { + // @@protoc_insertion_point(field_mutable_list:pg_query.CaseExpr.args) + return &args_; +} +inline const ::pg_query::Node& CaseExpr::_internal_args(int index) const { + return args_.Get(index); +} +inline const ::pg_query::Node& CaseExpr::args(int index) const { + // @@protoc_insertion_point(field_get:pg_query.CaseExpr.args) + return _internal_args(index); +} +inline ::pg_query::Node* CaseExpr::_internal_add_args() { + return args_.Add(); +} +inline ::pg_query::Node* CaseExpr::add_args() { + // @@protoc_insertion_point(field_add:pg_query.CaseExpr.args) + return _internal_add_args(); +} +inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& +CaseExpr::args() const { + // @@protoc_insertion_point(field_list:pg_query.CaseExpr.args) + return args_; +} + +// .pg_query.Node defresult = 6 [json_name = "defresult"]; +inline bool CaseExpr::_internal_has_defresult() const { + return this != internal_default_instance() && defresult_ != nullptr; +} +inline bool CaseExpr::has_defresult() const { + return _internal_has_defresult(); +} +inline void CaseExpr::clear_defresult() { + if (GetArena() == nullptr && defresult_ != nullptr) { + delete defresult_; + } + defresult_ = nullptr; +} +inline const ::pg_query::Node& CaseExpr::_internal_defresult() const { + const ::pg_query::Node* p = defresult_; + return p != nullptr ? *p : reinterpret_cast( + ::pg_query::_Node_default_instance_); +} +inline const ::pg_query::Node& CaseExpr::defresult() const { + // @@protoc_insertion_point(field_get:pg_query.CaseExpr.defresult) + return _internal_defresult(); +} +inline void CaseExpr::unsafe_arena_set_allocated_defresult( + ::pg_query::Node* defresult) { + if (GetArena() == nullptr) { + delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(defresult_); + } + defresult_ = defresult; + if (defresult) { + + } else { + + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.CaseExpr.defresult) +} +inline ::pg_query::Node* CaseExpr::release_defresult() { + + ::pg_query::Node* temp = defresult_; + defresult_ = nullptr; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + return temp; +} +inline ::pg_query::Node* CaseExpr::unsafe_arena_release_defresult() { + // @@protoc_insertion_point(field_release:pg_query.CaseExpr.defresult) + + ::pg_query::Node* temp = defresult_; + defresult_ = nullptr; + return temp; +} +inline ::pg_query::Node* CaseExpr::_internal_mutable_defresult() { + + if (defresult_ == nullptr) { + auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); + defresult_ = p; + } + return defresult_; +} +inline ::pg_query::Node* CaseExpr::mutable_defresult() { + // @@protoc_insertion_point(field_mutable:pg_query.CaseExpr.defresult) + return _internal_mutable_defresult(); +} +inline void CaseExpr::set_allocated_defresult(::pg_query::Node* defresult) { + ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); + if (message_arena == nullptr) { + delete defresult_; + } + if (defresult) { + ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = + ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(defresult); + if (message_arena != submessage_arena) { + defresult = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( + message_arena, defresult, submessage_arena); + } + + } else { + + } + defresult_ = defresult; + // @@protoc_insertion_point(field_set_allocated:pg_query.CaseExpr.defresult) +} + +// int32 location = 7 [json_name = "location"]; +inline void CaseExpr::clear_location() { + location_ = 0; +} +inline ::PROTOBUF_NAMESPACE_ID::int32 CaseExpr::_internal_location() const { + return location_; +} +inline ::PROTOBUF_NAMESPACE_ID::int32 CaseExpr::location() const { + // @@protoc_insertion_point(field_get:pg_query.CaseExpr.location) + return _internal_location(); +} +inline void CaseExpr::_internal_set_location(::PROTOBUF_NAMESPACE_ID::int32 value) { + + location_ = value; +} +inline void CaseExpr::set_location(::PROTOBUF_NAMESPACE_ID::int32 value) { + _internal_set_location(value); + // @@protoc_insertion_point(field_set:pg_query.CaseExpr.location) +} + +// ------------------------------------------------------------------- + +// CaseWhen + +// .pg_query.Node xpr = 1 [json_name = "xpr"]; +inline bool CaseWhen::_internal_has_xpr() const { + return this != internal_default_instance() && xpr_ != nullptr; +} +inline bool CaseWhen::has_xpr() const { + return _internal_has_xpr(); +} +inline void CaseWhen::clear_xpr() { + if (GetArena() == nullptr && xpr_ != nullptr) { + delete xpr_; + } + xpr_ = nullptr; +} +inline const ::pg_query::Node& CaseWhen::_internal_xpr() const { + const ::pg_query::Node* p = xpr_; + return p != nullptr ? *p : reinterpret_cast( + ::pg_query::_Node_default_instance_); +} +inline const ::pg_query::Node& CaseWhen::xpr() const { + // @@protoc_insertion_point(field_get:pg_query.CaseWhen.xpr) + return _internal_xpr(); +} +inline void CaseWhen::unsafe_arena_set_allocated_xpr( + ::pg_query::Node* xpr) { + if (GetArena() == nullptr) { + delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(xpr_); + } + xpr_ = xpr; + if (xpr) { + + } else { + + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.CaseWhen.xpr) +} +inline ::pg_query::Node* CaseWhen::release_xpr() { + + ::pg_query::Node* temp = xpr_; + xpr_ = nullptr; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + return temp; +} +inline ::pg_query::Node* CaseWhen::unsafe_arena_release_xpr() { + // @@protoc_insertion_point(field_release:pg_query.CaseWhen.xpr) + + ::pg_query::Node* temp = xpr_; + xpr_ = nullptr; + return temp; +} +inline ::pg_query::Node* CaseWhen::_internal_mutable_xpr() { + + if (xpr_ == nullptr) { + auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); + xpr_ = p; + } + return xpr_; +} +inline ::pg_query::Node* CaseWhen::mutable_xpr() { + // @@protoc_insertion_point(field_mutable:pg_query.CaseWhen.xpr) + return _internal_mutable_xpr(); +} +inline void CaseWhen::set_allocated_xpr(::pg_query::Node* xpr) { + ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); + if (message_arena == nullptr) { + delete xpr_; + } + if (xpr) { + ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = + ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(xpr); + if (message_arena != submessage_arena) { + xpr = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( + message_arena, xpr, submessage_arena); + } + + } else { + + } + xpr_ = xpr; + // @@protoc_insertion_point(field_set_allocated:pg_query.CaseWhen.xpr) +} + +// .pg_query.Node expr = 2 [json_name = "expr"]; +inline bool CaseWhen::_internal_has_expr() const { + return this != internal_default_instance() && expr_ != nullptr; +} +inline bool CaseWhen::has_expr() const { + return _internal_has_expr(); +} +inline void CaseWhen::clear_expr() { + if (GetArena() == nullptr && expr_ != nullptr) { + delete expr_; + } + expr_ = nullptr; +} +inline const ::pg_query::Node& CaseWhen::_internal_expr() const { + const ::pg_query::Node* p = expr_; + return p != nullptr ? *p : reinterpret_cast( + ::pg_query::_Node_default_instance_); +} +inline const ::pg_query::Node& CaseWhen::expr() const { + // @@protoc_insertion_point(field_get:pg_query.CaseWhen.expr) + return _internal_expr(); +} +inline void CaseWhen::unsafe_arena_set_allocated_expr( + ::pg_query::Node* expr) { + if (GetArena() == nullptr) { + delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(expr_); + } + expr_ = expr; + if (expr) { + + } else { + + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.CaseWhen.expr) +} +inline ::pg_query::Node* CaseWhen::release_expr() { + + ::pg_query::Node* temp = expr_; + expr_ = nullptr; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + return temp; +} +inline ::pg_query::Node* CaseWhen::unsafe_arena_release_expr() { + // @@protoc_insertion_point(field_release:pg_query.CaseWhen.expr) + + ::pg_query::Node* temp = expr_; + expr_ = nullptr; + return temp; +} +inline ::pg_query::Node* CaseWhen::_internal_mutable_expr() { + + if (expr_ == nullptr) { + auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); + expr_ = p; + } + return expr_; +} +inline ::pg_query::Node* CaseWhen::mutable_expr() { + // @@protoc_insertion_point(field_mutable:pg_query.CaseWhen.expr) + return _internal_mutable_expr(); +} +inline void CaseWhen::set_allocated_expr(::pg_query::Node* expr) { + ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); + if (message_arena == nullptr) { + delete expr_; + } + if (expr) { + ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = + ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(expr); + if (message_arena != submessage_arena) { + expr = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( + message_arena, expr, submessage_arena); + } + + } else { + + } + expr_ = expr; + // @@protoc_insertion_point(field_set_allocated:pg_query.CaseWhen.expr) +} + +// .pg_query.Node result = 3 [json_name = "result"]; +inline bool CaseWhen::_internal_has_result() const { + return this != internal_default_instance() && result_ != nullptr; +} +inline bool CaseWhen::has_result() const { + return _internal_has_result(); +} +inline void CaseWhen::clear_result() { + if (GetArena() == nullptr && result_ != nullptr) { + delete result_; + } + result_ = nullptr; +} +inline const ::pg_query::Node& CaseWhen::_internal_result() const { + const ::pg_query::Node* p = result_; + return p != nullptr ? *p : reinterpret_cast( + ::pg_query::_Node_default_instance_); +} +inline const ::pg_query::Node& CaseWhen::result() const { + // @@protoc_insertion_point(field_get:pg_query.CaseWhen.result) + return _internal_result(); +} +inline void CaseWhen::unsafe_arena_set_allocated_result( + ::pg_query::Node* result) { + if (GetArena() == nullptr) { + delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(result_); + } + result_ = result; + if (result) { + + } else { + + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.CaseWhen.result) +} +inline ::pg_query::Node* CaseWhen::release_result() { + + ::pg_query::Node* temp = result_; + result_ = nullptr; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + return temp; +} +inline ::pg_query::Node* CaseWhen::unsafe_arena_release_result() { + // @@protoc_insertion_point(field_release:pg_query.CaseWhen.result) + + ::pg_query::Node* temp = result_; + result_ = nullptr; + return temp; +} +inline ::pg_query::Node* CaseWhen::_internal_mutable_result() { + + if (result_ == nullptr) { + auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); + result_ = p; + } + return result_; +} +inline ::pg_query::Node* CaseWhen::mutable_result() { + // @@protoc_insertion_point(field_mutable:pg_query.CaseWhen.result) + return _internal_mutable_result(); +} +inline void CaseWhen::set_allocated_result(::pg_query::Node* result) { + ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); + if (message_arena == nullptr) { + delete result_; + } + if (result) { + ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = + ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(result); + if (message_arena != submessage_arena) { + result = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( + message_arena, result, submessage_arena); + } + + } else { + + } + result_ = result; + // @@protoc_insertion_point(field_set_allocated:pg_query.CaseWhen.result) +} + +// int32 location = 4 [json_name = "location"]; +inline void CaseWhen::clear_location() { + location_ = 0; +} +inline ::PROTOBUF_NAMESPACE_ID::int32 CaseWhen::_internal_location() const { + return location_; +} +inline ::PROTOBUF_NAMESPACE_ID::int32 CaseWhen::location() const { + // @@protoc_insertion_point(field_get:pg_query.CaseWhen.location) + return _internal_location(); +} +inline void CaseWhen::_internal_set_location(::PROTOBUF_NAMESPACE_ID::int32 value) { + + location_ = value; +} +inline void CaseWhen::set_location(::PROTOBUF_NAMESPACE_ID::int32 value) { + _internal_set_location(value); + // @@protoc_insertion_point(field_set:pg_query.CaseWhen.location) +} + +// ------------------------------------------------------------------- + +// CaseTestExpr + +// .pg_query.Node xpr = 1 [json_name = "xpr"]; +inline bool CaseTestExpr::_internal_has_xpr() const { + return this != internal_default_instance() && xpr_ != nullptr; +} +inline bool CaseTestExpr::has_xpr() const { + return _internal_has_xpr(); +} +inline void CaseTestExpr::clear_xpr() { + if (GetArena() == nullptr && xpr_ != nullptr) { + delete xpr_; + } + xpr_ = nullptr; +} +inline const ::pg_query::Node& CaseTestExpr::_internal_xpr() const { + const ::pg_query::Node* p = xpr_; + return p != nullptr ? *p : reinterpret_cast( + ::pg_query::_Node_default_instance_); +} +inline const ::pg_query::Node& CaseTestExpr::xpr() const { + // @@protoc_insertion_point(field_get:pg_query.CaseTestExpr.xpr) + return _internal_xpr(); +} +inline void CaseTestExpr::unsafe_arena_set_allocated_xpr( + ::pg_query::Node* xpr) { + if (GetArena() == nullptr) { + delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(xpr_); + } + xpr_ = xpr; + if (xpr) { + + } else { + + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.CaseTestExpr.xpr) +} +inline ::pg_query::Node* CaseTestExpr::release_xpr() { + + ::pg_query::Node* temp = xpr_; + xpr_ = nullptr; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + return temp; +} +inline ::pg_query::Node* CaseTestExpr::unsafe_arena_release_xpr() { + // @@protoc_insertion_point(field_release:pg_query.CaseTestExpr.xpr) + + ::pg_query::Node* temp = xpr_; + xpr_ = nullptr; + return temp; +} +inline ::pg_query::Node* CaseTestExpr::_internal_mutable_xpr() { + + if (xpr_ == nullptr) { + auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); + xpr_ = p; + } + return xpr_; +} +inline ::pg_query::Node* CaseTestExpr::mutable_xpr() { + // @@protoc_insertion_point(field_mutable:pg_query.CaseTestExpr.xpr) + return _internal_mutable_xpr(); +} +inline void CaseTestExpr::set_allocated_xpr(::pg_query::Node* xpr) { + ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); + if (message_arena == nullptr) { + delete xpr_; + } + if (xpr) { + ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = + ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(xpr); + if (message_arena != submessage_arena) { + xpr = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( + message_arena, xpr, submessage_arena); + } + + } else { + + } + xpr_ = xpr; + // @@protoc_insertion_point(field_set_allocated:pg_query.CaseTestExpr.xpr) +} + +// uint32 type_id = 2 [json_name = "typeId"]; +inline void CaseTestExpr::clear_type_id() { + type_id_ = 0u; +} +inline ::PROTOBUF_NAMESPACE_ID::uint32 CaseTestExpr::_internal_type_id() const { + return type_id_; +} +inline ::PROTOBUF_NAMESPACE_ID::uint32 CaseTestExpr::type_id() const { + // @@protoc_insertion_point(field_get:pg_query.CaseTestExpr.type_id) + return _internal_type_id(); +} +inline void CaseTestExpr::_internal_set_type_id(::PROTOBUF_NAMESPACE_ID::uint32 value) { + + type_id_ = value; +} +inline void CaseTestExpr::set_type_id(::PROTOBUF_NAMESPACE_ID::uint32 value) { + _internal_set_type_id(value); + // @@protoc_insertion_point(field_set:pg_query.CaseTestExpr.type_id) +} + +// int32 type_mod = 3 [json_name = "typeMod"]; +inline void CaseTestExpr::clear_type_mod() { + type_mod_ = 0; +} +inline ::PROTOBUF_NAMESPACE_ID::int32 CaseTestExpr::_internal_type_mod() const { + return type_mod_; +} +inline ::PROTOBUF_NAMESPACE_ID::int32 CaseTestExpr::type_mod() const { + // @@protoc_insertion_point(field_get:pg_query.CaseTestExpr.type_mod) + return _internal_type_mod(); +} +inline void CaseTestExpr::_internal_set_type_mod(::PROTOBUF_NAMESPACE_ID::int32 value) { + + type_mod_ = value; +} +inline void CaseTestExpr::set_type_mod(::PROTOBUF_NAMESPACE_ID::int32 value) { + _internal_set_type_mod(value); + // @@protoc_insertion_point(field_set:pg_query.CaseTestExpr.type_mod) +} + +// uint32 collation = 4 [json_name = "collation"]; +inline void CaseTestExpr::clear_collation() { + collation_ = 0u; +} +inline ::PROTOBUF_NAMESPACE_ID::uint32 CaseTestExpr::_internal_collation() const { + return collation_; +} +inline ::PROTOBUF_NAMESPACE_ID::uint32 CaseTestExpr::collation() const { + // @@protoc_insertion_point(field_get:pg_query.CaseTestExpr.collation) + return _internal_collation(); +} +inline void CaseTestExpr::_internal_set_collation(::PROTOBUF_NAMESPACE_ID::uint32 value) { + + collation_ = value; +} +inline void CaseTestExpr::set_collation(::PROTOBUF_NAMESPACE_ID::uint32 value) { + _internal_set_collation(value); + // @@protoc_insertion_point(field_set:pg_query.CaseTestExpr.collation) +} + +// ------------------------------------------------------------------- + +// ArrayExpr + +// .pg_query.Node xpr = 1 [json_name = "xpr"]; +inline bool ArrayExpr::_internal_has_xpr() const { + return this != internal_default_instance() && xpr_ != nullptr; +} +inline bool ArrayExpr::has_xpr() const { + return _internal_has_xpr(); +} +inline void ArrayExpr::clear_xpr() { + if (GetArena() == nullptr && xpr_ != nullptr) { + delete xpr_; + } + xpr_ = nullptr; +} +inline const ::pg_query::Node& ArrayExpr::_internal_xpr() const { + const ::pg_query::Node* p = xpr_; + return p != nullptr ? *p : reinterpret_cast( + ::pg_query::_Node_default_instance_); +} +inline const ::pg_query::Node& ArrayExpr::xpr() const { + // @@protoc_insertion_point(field_get:pg_query.ArrayExpr.xpr) + return _internal_xpr(); +} +inline void ArrayExpr::unsafe_arena_set_allocated_xpr( + ::pg_query::Node* xpr) { + if (GetArena() == nullptr) { + delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(xpr_); + } + xpr_ = xpr; + if (xpr) { + + } else { + + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.ArrayExpr.xpr) +} +inline ::pg_query::Node* ArrayExpr::release_xpr() { + + ::pg_query::Node* temp = xpr_; + xpr_ = nullptr; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + return temp; +} +inline ::pg_query::Node* ArrayExpr::unsafe_arena_release_xpr() { + // @@protoc_insertion_point(field_release:pg_query.ArrayExpr.xpr) + + ::pg_query::Node* temp = xpr_; + xpr_ = nullptr; + return temp; +} +inline ::pg_query::Node* ArrayExpr::_internal_mutable_xpr() { + + if (xpr_ == nullptr) { + auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); + xpr_ = p; + } + return xpr_; +} +inline ::pg_query::Node* ArrayExpr::mutable_xpr() { + // @@protoc_insertion_point(field_mutable:pg_query.ArrayExpr.xpr) + return _internal_mutable_xpr(); +} +inline void ArrayExpr::set_allocated_xpr(::pg_query::Node* xpr) { + ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); + if (message_arena == nullptr) { + delete xpr_; + } + if (xpr) { + ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = + ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(xpr); + if (message_arena != submessage_arena) { + xpr = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( + message_arena, xpr, submessage_arena); + } + + } else { + + } + xpr_ = xpr; + // @@protoc_insertion_point(field_set_allocated:pg_query.ArrayExpr.xpr) +} + +// uint32 array_typeid = 2 [json_name = "array_typeid"]; +inline void ArrayExpr::clear_array_typeid() { + array_typeid_ = 0u; +} +inline ::PROTOBUF_NAMESPACE_ID::uint32 ArrayExpr::_internal_array_typeid() const { + return array_typeid_; +} +inline ::PROTOBUF_NAMESPACE_ID::uint32 ArrayExpr::array_typeid() const { + // @@protoc_insertion_point(field_get:pg_query.ArrayExpr.array_typeid) + return _internal_array_typeid(); +} +inline void ArrayExpr::_internal_set_array_typeid(::PROTOBUF_NAMESPACE_ID::uint32 value) { + + array_typeid_ = value; +} +inline void ArrayExpr::set_array_typeid(::PROTOBUF_NAMESPACE_ID::uint32 value) { + _internal_set_array_typeid(value); + // @@protoc_insertion_point(field_set:pg_query.ArrayExpr.array_typeid) +} + +// uint32 array_collid = 3 [json_name = "array_collid"]; +inline void ArrayExpr::clear_array_collid() { + array_collid_ = 0u; +} +inline ::PROTOBUF_NAMESPACE_ID::uint32 ArrayExpr::_internal_array_collid() const { + return array_collid_; +} +inline ::PROTOBUF_NAMESPACE_ID::uint32 ArrayExpr::array_collid() const { + // @@protoc_insertion_point(field_get:pg_query.ArrayExpr.array_collid) + return _internal_array_collid(); +} +inline void ArrayExpr::_internal_set_array_collid(::PROTOBUF_NAMESPACE_ID::uint32 value) { + + array_collid_ = value; +} +inline void ArrayExpr::set_array_collid(::PROTOBUF_NAMESPACE_ID::uint32 value) { + _internal_set_array_collid(value); + // @@protoc_insertion_point(field_set:pg_query.ArrayExpr.array_collid) +} + +// uint32 element_typeid = 4 [json_name = "element_typeid"]; +inline void ArrayExpr::clear_element_typeid() { + element_typeid_ = 0u; +} +inline ::PROTOBUF_NAMESPACE_ID::uint32 ArrayExpr::_internal_element_typeid() const { + return element_typeid_; +} +inline ::PROTOBUF_NAMESPACE_ID::uint32 ArrayExpr::element_typeid() const { + // @@protoc_insertion_point(field_get:pg_query.ArrayExpr.element_typeid) + return _internal_element_typeid(); +} +inline void ArrayExpr::_internal_set_element_typeid(::PROTOBUF_NAMESPACE_ID::uint32 value) { + + element_typeid_ = value; +} +inline void ArrayExpr::set_element_typeid(::PROTOBUF_NAMESPACE_ID::uint32 value) { + _internal_set_element_typeid(value); + // @@protoc_insertion_point(field_set:pg_query.ArrayExpr.element_typeid) +} + +// repeated .pg_query.Node elements = 5 [json_name = "elements"]; +inline int ArrayExpr::_internal_elements_size() const { + return elements_.size(); +} +inline int ArrayExpr::elements_size() const { + return _internal_elements_size(); +} +inline void ArrayExpr::clear_elements() { + elements_.Clear(); +} +inline ::pg_query::Node* ArrayExpr::mutable_elements(int index) { + // @@protoc_insertion_point(field_mutable:pg_query.ArrayExpr.elements) + return elements_.Mutable(index); +} +inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* +ArrayExpr::mutable_elements() { + // @@protoc_insertion_point(field_mutable_list:pg_query.ArrayExpr.elements) + return &elements_; +} +inline const ::pg_query::Node& ArrayExpr::_internal_elements(int index) const { + return elements_.Get(index); +} +inline const ::pg_query::Node& ArrayExpr::elements(int index) const { + // @@protoc_insertion_point(field_get:pg_query.ArrayExpr.elements) + return _internal_elements(index); +} +inline ::pg_query::Node* ArrayExpr::_internal_add_elements() { + return elements_.Add(); +} +inline ::pg_query::Node* ArrayExpr::add_elements() { + // @@protoc_insertion_point(field_add:pg_query.ArrayExpr.elements) + return _internal_add_elements(); +} +inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& +ArrayExpr::elements() const { + // @@protoc_insertion_point(field_list:pg_query.ArrayExpr.elements) + return elements_; +} + +// bool multidims = 6 [json_name = "multidims"]; +inline void ArrayExpr::clear_multidims() { + multidims_ = false; +} +inline bool ArrayExpr::_internal_multidims() const { + return multidims_; +} +inline bool ArrayExpr::multidims() const { + // @@protoc_insertion_point(field_get:pg_query.ArrayExpr.multidims) + return _internal_multidims(); +} +inline void ArrayExpr::_internal_set_multidims(bool value) { + + multidims_ = value; +} +inline void ArrayExpr::set_multidims(bool value) { + _internal_set_multidims(value); + // @@protoc_insertion_point(field_set:pg_query.ArrayExpr.multidims) +} + +// int32 location = 7 [json_name = "location"]; +inline void ArrayExpr::clear_location() { + location_ = 0; +} +inline ::PROTOBUF_NAMESPACE_ID::int32 ArrayExpr::_internal_location() const { + return location_; +} +inline ::PROTOBUF_NAMESPACE_ID::int32 ArrayExpr::location() const { + // @@protoc_insertion_point(field_get:pg_query.ArrayExpr.location) + return _internal_location(); +} +inline void ArrayExpr::_internal_set_location(::PROTOBUF_NAMESPACE_ID::int32 value) { + + location_ = value; +} +inline void ArrayExpr::set_location(::PROTOBUF_NAMESPACE_ID::int32 value) { + _internal_set_location(value); + // @@protoc_insertion_point(field_set:pg_query.ArrayExpr.location) +} + +// ------------------------------------------------------------------- + +// RowExpr + +// .pg_query.Node xpr = 1 [json_name = "xpr"]; +inline bool RowExpr::_internal_has_xpr() const { + return this != internal_default_instance() && xpr_ != nullptr; +} +inline bool RowExpr::has_xpr() const { + return _internal_has_xpr(); +} +inline void RowExpr::clear_xpr() { + if (GetArena() == nullptr && xpr_ != nullptr) { + delete xpr_; + } + xpr_ = nullptr; +} +inline const ::pg_query::Node& RowExpr::_internal_xpr() const { + const ::pg_query::Node* p = xpr_; + return p != nullptr ? *p : reinterpret_cast( + ::pg_query::_Node_default_instance_); +} +inline const ::pg_query::Node& RowExpr::xpr() const { + // @@protoc_insertion_point(field_get:pg_query.RowExpr.xpr) + return _internal_xpr(); +} +inline void RowExpr::unsafe_arena_set_allocated_xpr( + ::pg_query::Node* xpr) { + if (GetArena() == nullptr) { + delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(xpr_); + } + xpr_ = xpr; + if (xpr) { + + } else { + + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.RowExpr.xpr) +} +inline ::pg_query::Node* RowExpr::release_xpr() { + + ::pg_query::Node* temp = xpr_; + xpr_ = nullptr; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + return temp; +} +inline ::pg_query::Node* RowExpr::unsafe_arena_release_xpr() { + // @@protoc_insertion_point(field_release:pg_query.RowExpr.xpr) + + ::pg_query::Node* temp = xpr_; + xpr_ = nullptr; + return temp; +} +inline ::pg_query::Node* RowExpr::_internal_mutable_xpr() { + + if (xpr_ == nullptr) { + auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); + xpr_ = p; + } + return xpr_; +} +inline ::pg_query::Node* RowExpr::mutable_xpr() { + // @@protoc_insertion_point(field_mutable:pg_query.RowExpr.xpr) + return _internal_mutable_xpr(); +} +inline void RowExpr::set_allocated_xpr(::pg_query::Node* xpr) { + ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); + if (message_arena == nullptr) { + delete xpr_; + } + if (xpr) { + ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = + ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(xpr); + if (message_arena != submessage_arena) { + xpr = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( + message_arena, xpr, submessage_arena); + } + + } else { + + } + xpr_ = xpr; + // @@protoc_insertion_point(field_set_allocated:pg_query.RowExpr.xpr) +} + +// repeated .pg_query.Node args = 2 [json_name = "args"]; +inline int RowExpr::_internal_args_size() const { + return args_.size(); +} +inline int RowExpr::args_size() const { + return _internal_args_size(); +} +inline void RowExpr::clear_args() { + args_.Clear(); +} +inline ::pg_query::Node* RowExpr::mutable_args(int index) { + // @@protoc_insertion_point(field_mutable:pg_query.RowExpr.args) + return args_.Mutable(index); +} +inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* +RowExpr::mutable_args() { + // @@protoc_insertion_point(field_mutable_list:pg_query.RowExpr.args) + return &args_; +} +inline const ::pg_query::Node& RowExpr::_internal_args(int index) const { + return args_.Get(index); +} +inline const ::pg_query::Node& RowExpr::args(int index) const { + // @@protoc_insertion_point(field_get:pg_query.RowExpr.args) + return _internal_args(index); +} +inline ::pg_query::Node* RowExpr::_internal_add_args() { + return args_.Add(); +} +inline ::pg_query::Node* RowExpr::add_args() { + // @@protoc_insertion_point(field_add:pg_query.RowExpr.args) + return _internal_add_args(); +} +inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& +RowExpr::args() const { + // @@protoc_insertion_point(field_list:pg_query.RowExpr.args) + return args_; +} + +// uint32 row_typeid = 3 [json_name = "row_typeid"]; +inline void RowExpr::clear_row_typeid() { + row_typeid_ = 0u; +} +inline ::PROTOBUF_NAMESPACE_ID::uint32 RowExpr::_internal_row_typeid() const { + return row_typeid_; +} +inline ::PROTOBUF_NAMESPACE_ID::uint32 RowExpr::row_typeid() const { + // @@protoc_insertion_point(field_get:pg_query.RowExpr.row_typeid) + return _internal_row_typeid(); +} +inline void RowExpr::_internal_set_row_typeid(::PROTOBUF_NAMESPACE_ID::uint32 value) { + + row_typeid_ = value; +} +inline void RowExpr::set_row_typeid(::PROTOBUF_NAMESPACE_ID::uint32 value) { + _internal_set_row_typeid(value); + // @@protoc_insertion_point(field_set:pg_query.RowExpr.row_typeid) +} + +// .pg_query.CoercionForm row_format = 4 [json_name = "row_format"]; +inline void RowExpr::clear_row_format() { + row_format_ = 0; +} +inline ::pg_query::CoercionForm RowExpr::_internal_row_format() const { + return static_cast< ::pg_query::CoercionForm >(row_format_); +} +inline ::pg_query::CoercionForm RowExpr::row_format() const { + // @@protoc_insertion_point(field_get:pg_query.RowExpr.row_format) + return _internal_row_format(); +} +inline void RowExpr::_internal_set_row_format(::pg_query::CoercionForm value) { + + row_format_ = value; +} +inline void RowExpr::set_row_format(::pg_query::CoercionForm value) { + _internal_set_row_format(value); + // @@protoc_insertion_point(field_set:pg_query.RowExpr.row_format) +} + +// repeated .pg_query.Node colnames = 5 [json_name = "colnames"]; +inline int RowExpr::_internal_colnames_size() const { + return colnames_.size(); +} +inline int RowExpr::colnames_size() const { + return _internal_colnames_size(); +} +inline void RowExpr::clear_colnames() { + colnames_.Clear(); +} +inline ::pg_query::Node* RowExpr::mutable_colnames(int index) { + // @@protoc_insertion_point(field_mutable:pg_query.RowExpr.colnames) + return colnames_.Mutable(index); +} +inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* +RowExpr::mutable_colnames() { + // @@protoc_insertion_point(field_mutable_list:pg_query.RowExpr.colnames) + return &colnames_; +} +inline const ::pg_query::Node& RowExpr::_internal_colnames(int index) const { + return colnames_.Get(index); +} +inline const ::pg_query::Node& RowExpr::colnames(int index) const { + // @@protoc_insertion_point(field_get:pg_query.RowExpr.colnames) + return _internal_colnames(index); +} +inline ::pg_query::Node* RowExpr::_internal_add_colnames() { + return colnames_.Add(); +} +inline ::pg_query::Node* RowExpr::add_colnames() { + // @@protoc_insertion_point(field_add:pg_query.RowExpr.colnames) + return _internal_add_colnames(); +} +inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& +RowExpr::colnames() const { + // @@protoc_insertion_point(field_list:pg_query.RowExpr.colnames) + return colnames_; +} + +// int32 location = 6 [json_name = "location"]; +inline void RowExpr::clear_location() { + location_ = 0; +} +inline ::PROTOBUF_NAMESPACE_ID::int32 RowExpr::_internal_location() const { + return location_; +} +inline ::PROTOBUF_NAMESPACE_ID::int32 RowExpr::location() const { + // @@protoc_insertion_point(field_get:pg_query.RowExpr.location) + return _internal_location(); +} +inline void RowExpr::_internal_set_location(::PROTOBUF_NAMESPACE_ID::int32 value) { + + location_ = value; +} +inline void RowExpr::set_location(::PROTOBUF_NAMESPACE_ID::int32 value) { + _internal_set_location(value); + // @@protoc_insertion_point(field_set:pg_query.RowExpr.location) +} + +// ------------------------------------------------------------------- + +// RowCompareExpr + +// .pg_query.Node xpr = 1 [json_name = "xpr"]; +inline bool RowCompareExpr::_internal_has_xpr() const { + return this != internal_default_instance() && xpr_ != nullptr; +} +inline bool RowCompareExpr::has_xpr() const { + return _internal_has_xpr(); +} +inline void RowCompareExpr::clear_xpr() { + if (GetArena() == nullptr && xpr_ != nullptr) { + delete xpr_; + } + xpr_ = nullptr; +} +inline const ::pg_query::Node& RowCompareExpr::_internal_xpr() const { + const ::pg_query::Node* p = xpr_; + return p != nullptr ? *p : reinterpret_cast( + ::pg_query::_Node_default_instance_); +} +inline const ::pg_query::Node& RowCompareExpr::xpr() const { + // @@protoc_insertion_point(field_get:pg_query.RowCompareExpr.xpr) + return _internal_xpr(); +} +inline void RowCompareExpr::unsafe_arena_set_allocated_xpr( + ::pg_query::Node* xpr) { + if (GetArena() == nullptr) { + delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(xpr_); + } + xpr_ = xpr; + if (xpr) { + + } else { + + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.RowCompareExpr.xpr) +} +inline ::pg_query::Node* RowCompareExpr::release_xpr() { + + ::pg_query::Node* temp = xpr_; + xpr_ = nullptr; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + return temp; +} +inline ::pg_query::Node* RowCompareExpr::unsafe_arena_release_xpr() { + // @@protoc_insertion_point(field_release:pg_query.RowCompareExpr.xpr) + + ::pg_query::Node* temp = xpr_; + xpr_ = nullptr; + return temp; +} +inline ::pg_query::Node* RowCompareExpr::_internal_mutable_xpr() { + + if (xpr_ == nullptr) { + auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); + xpr_ = p; + } + return xpr_; +} +inline ::pg_query::Node* RowCompareExpr::mutable_xpr() { + // @@protoc_insertion_point(field_mutable:pg_query.RowCompareExpr.xpr) + return _internal_mutable_xpr(); +} +inline void RowCompareExpr::set_allocated_xpr(::pg_query::Node* xpr) { + ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); + if (message_arena == nullptr) { + delete xpr_; + } + if (xpr) { + ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = + ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(xpr); + if (message_arena != submessage_arena) { + xpr = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( + message_arena, xpr, submessage_arena); + } + + } else { + + } + xpr_ = xpr; + // @@protoc_insertion_point(field_set_allocated:pg_query.RowCompareExpr.xpr) +} + +// .pg_query.RowCompareType rctype = 2 [json_name = "rctype"]; +inline void RowCompareExpr::clear_rctype() { + rctype_ = 0; +} +inline ::pg_query::RowCompareType RowCompareExpr::_internal_rctype() const { + return static_cast< ::pg_query::RowCompareType >(rctype_); +} +inline ::pg_query::RowCompareType RowCompareExpr::rctype() const { + // @@protoc_insertion_point(field_get:pg_query.RowCompareExpr.rctype) + return _internal_rctype(); +} +inline void RowCompareExpr::_internal_set_rctype(::pg_query::RowCompareType value) { + + rctype_ = value; +} +inline void RowCompareExpr::set_rctype(::pg_query::RowCompareType value) { + _internal_set_rctype(value); + // @@protoc_insertion_point(field_set:pg_query.RowCompareExpr.rctype) +} + +// repeated .pg_query.Node opnos = 3 [json_name = "opnos"]; +inline int RowCompareExpr::_internal_opnos_size() const { + return opnos_.size(); +} +inline int RowCompareExpr::opnos_size() const { + return _internal_opnos_size(); +} +inline void RowCompareExpr::clear_opnos() { + opnos_.Clear(); +} +inline ::pg_query::Node* RowCompareExpr::mutable_opnos(int index) { + // @@protoc_insertion_point(field_mutable:pg_query.RowCompareExpr.opnos) + return opnos_.Mutable(index); +} +inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* +RowCompareExpr::mutable_opnos() { + // @@protoc_insertion_point(field_mutable_list:pg_query.RowCompareExpr.opnos) + return &opnos_; +} +inline const ::pg_query::Node& RowCompareExpr::_internal_opnos(int index) const { + return opnos_.Get(index); +} +inline const ::pg_query::Node& RowCompareExpr::opnos(int index) const { + // @@protoc_insertion_point(field_get:pg_query.RowCompareExpr.opnos) + return _internal_opnos(index); +} +inline ::pg_query::Node* RowCompareExpr::_internal_add_opnos() { + return opnos_.Add(); +} +inline ::pg_query::Node* RowCompareExpr::add_opnos() { + // @@protoc_insertion_point(field_add:pg_query.RowCompareExpr.opnos) + return _internal_add_opnos(); +} +inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& +RowCompareExpr::opnos() const { + // @@protoc_insertion_point(field_list:pg_query.RowCompareExpr.opnos) + return opnos_; +} + +// repeated .pg_query.Node opfamilies = 4 [json_name = "opfamilies"]; +inline int RowCompareExpr::_internal_opfamilies_size() const { + return opfamilies_.size(); +} +inline int RowCompareExpr::opfamilies_size() const { + return _internal_opfamilies_size(); +} +inline void RowCompareExpr::clear_opfamilies() { + opfamilies_.Clear(); +} +inline ::pg_query::Node* RowCompareExpr::mutable_opfamilies(int index) { + // @@protoc_insertion_point(field_mutable:pg_query.RowCompareExpr.opfamilies) + return opfamilies_.Mutable(index); +} +inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* +RowCompareExpr::mutable_opfamilies() { + // @@protoc_insertion_point(field_mutable_list:pg_query.RowCompareExpr.opfamilies) + return &opfamilies_; +} +inline const ::pg_query::Node& RowCompareExpr::_internal_opfamilies(int index) const { + return opfamilies_.Get(index); +} +inline const ::pg_query::Node& RowCompareExpr::opfamilies(int index) const { + // @@protoc_insertion_point(field_get:pg_query.RowCompareExpr.opfamilies) + return _internal_opfamilies(index); +} +inline ::pg_query::Node* RowCompareExpr::_internal_add_opfamilies() { + return opfamilies_.Add(); +} +inline ::pg_query::Node* RowCompareExpr::add_opfamilies() { + // @@protoc_insertion_point(field_add:pg_query.RowCompareExpr.opfamilies) + return _internal_add_opfamilies(); +} +inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& +RowCompareExpr::opfamilies() const { + // @@protoc_insertion_point(field_list:pg_query.RowCompareExpr.opfamilies) + return opfamilies_; +} + +// repeated .pg_query.Node inputcollids = 5 [json_name = "inputcollids"]; +inline int RowCompareExpr::_internal_inputcollids_size() const { + return inputcollids_.size(); +} +inline int RowCompareExpr::inputcollids_size() const { + return _internal_inputcollids_size(); +} +inline void RowCompareExpr::clear_inputcollids() { + inputcollids_.Clear(); +} +inline ::pg_query::Node* RowCompareExpr::mutable_inputcollids(int index) { + // @@protoc_insertion_point(field_mutable:pg_query.RowCompareExpr.inputcollids) + return inputcollids_.Mutable(index); +} +inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* +RowCompareExpr::mutable_inputcollids() { + // @@protoc_insertion_point(field_mutable_list:pg_query.RowCompareExpr.inputcollids) + return &inputcollids_; +} +inline const ::pg_query::Node& RowCompareExpr::_internal_inputcollids(int index) const { + return inputcollids_.Get(index); +} +inline const ::pg_query::Node& RowCompareExpr::inputcollids(int index) const { + // @@protoc_insertion_point(field_get:pg_query.RowCompareExpr.inputcollids) + return _internal_inputcollids(index); +} +inline ::pg_query::Node* RowCompareExpr::_internal_add_inputcollids() { + return inputcollids_.Add(); +} +inline ::pg_query::Node* RowCompareExpr::add_inputcollids() { + // @@protoc_insertion_point(field_add:pg_query.RowCompareExpr.inputcollids) + return _internal_add_inputcollids(); +} +inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& +RowCompareExpr::inputcollids() const { + // @@protoc_insertion_point(field_list:pg_query.RowCompareExpr.inputcollids) + return inputcollids_; +} + +// repeated .pg_query.Node largs = 6 [json_name = "largs"]; +inline int RowCompareExpr::_internal_largs_size() const { + return largs_.size(); +} +inline int RowCompareExpr::largs_size() const { + return _internal_largs_size(); +} +inline void RowCompareExpr::clear_largs() { + largs_.Clear(); +} +inline ::pg_query::Node* RowCompareExpr::mutable_largs(int index) { + // @@protoc_insertion_point(field_mutable:pg_query.RowCompareExpr.largs) + return largs_.Mutable(index); +} +inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* +RowCompareExpr::mutable_largs() { + // @@protoc_insertion_point(field_mutable_list:pg_query.RowCompareExpr.largs) + return &largs_; +} +inline const ::pg_query::Node& RowCompareExpr::_internal_largs(int index) const { + return largs_.Get(index); +} +inline const ::pg_query::Node& RowCompareExpr::largs(int index) const { + // @@protoc_insertion_point(field_get:pg_query.RowCompareExpr.largs) + return _internal_largs(index); +} +inline ::pg_query::Node* RowCompareExpr::_internal_add_largs() { + return largs_.Add(); +} +inline ::pg_query::Node* RowCompareExpr::add_largs() { + // @@protoc_insertion_point(field_add:pg_query.RowCompareExpr.largs) + return _internal_add_largs(); +} +inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& +RowCompareExpr::largs() const { + // @@protoc_insertion_point(field_list:pg_query.RowCompareExpr.largs) + return largs_; +} + +// repeated .pg_query.Node rargs = 7 [json_name = "rargs"]; +inline int RowCompareExpr::_internal_rargs_size() const { + return rargs_.size(); +} +inline int RowCompareExpr::rargs_size() const { + return _internal_rargs_size(); +} +inline void RowCompareExpr::clear_rargs() { + rargs_.Clear(); +} +inline ::pg_query::Node* RowCompareExpr::mutable_rargs(int index) { + // @@protoc_insertion_point(field_mutable:pg_query.RowCompareExpr.rargs) + return rargs_.Mutable(index); +} +inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* +RowCompareExpr::mutable_rargs() { + // @@protoc_insertion_point(field_mutable_list:pg_query.RowCompareExpr.rargs) + return &rargs_; +} +inline const ::pg_query::Node& RowCompareExpr::_internal_rargs(int index) const { + return rargs_.Get(index); +} +inline const ::pg_query::Node& RowCompareExpr::rargs(int index) const { + // @@protoc_insertion_point(field_get:pg_query.RowCompareExpr.rargs) + return _internal_rargs(index); +} +inline ::pg_query::Node* RowCompareExpr::_internal_add_rargs() { + return rargs_.Add(); +} +inline ::pg_query::Node* RowCompareExpr::add_rargs() { + // @@protoc_insertion_point(field_add:pg_query.RowCompareExpr.rargs) + return _internal_add_rargs(); +} +inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& +RowCompareExpr::rargs() const { + // @@protoc_insertion_point(field_list:pg_query.RowCompareExpr.rargs) + return rargs_; +} + +// ------------------------------------------------------------------- + +// CoalesceExpr + +// .pg_query.Node xpr = 1 [json_name = "xpr"]; +inline bool CoalesceExpr::_internal_has_xpr() const { + return this != internal_default_instance() && xpr_ != nullptr; +} +inline bool CoalesceExpr::has_xpr() const { + return _internal_has_xpr(); +} +inline void CoalesceExpr::clear_xpr() { + if (GetArena() == nullptr && xpr_ != nullptr) { + delete xpr_; + } + xpr_ = nullptr; +} +inline const ::pg_query::Node& CoalesceExpr::_internal_xpr() const { + const ::pg_query::Node* p = xpr_; + return p != nullptr ? *p : reinterpret_cast( + ::pg_query::_Node_default_instance_); +} +inline const ::pg_query::Node& CoalesceExpr::xpr() const { + // @@protoc_insertion_point(field_get:pg_query.CoalesceExpr.xpr) + return _internal_xpr(); +} +inline void CoalesceExpr::unsafe_arena_set_allocated_xpr( + ::pg_query::Node* xpr) { + if (GetArena() == nullptr) { + delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(xpr_); + } + xpr_ = xpr; + if (xpr) { + + } else { + + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.CoalesceExpr.xpr) +} +inline ::pg_query::Node* CoalesceExpr::release_xpr() { + + ::pg_query::Node* temp = xpr_; + xpr_ = nullptr; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + return temp; +} +inline ::pg_query::Node* CoalesceExpr::unsafe_arena_release_xpr() { + // @@protoc_insertion_point(field_release:pg_query.CoalesceExpr.xpr) + + ::pg_query::Node* temp = xpr_; + xpr_ = nullptr; + return temp; +} +inline ::pg_query::Node* CoalesceExpr::_internal_mutable_xpr() { + + if (xpr_ == nullptr) { + auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); + xpr_ = p; + } + return xpr_; +} +inline ::pg_query::Node* CoalesceExpr::mutable_xpr() { + // @@protoc_insertion_point(field_mutable:pg_query.CoalesceExpr.xpr) + return _internal_mutable_xpr(); +} +inline void CoalesceExpr::set_allocated_xpr(::pg_query::Node* xpr) { + ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); + if (message_arena == nullptr) { + delete xpr_; + } + if (xpr) { + ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = + ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(xpr); + if (message_arena != submessage_arena) { + xpr = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( + message_arena, xpr, submessage_arena); + } + + } else { + + } + xpr_ = xpr; + // @@protoc_insertion_point(field_set_allocated:pg_query.CoalesceExpr.xpr) +} + +// uint32 coalescetype = 2 [json_name = "coalescetype"]; +inline void CoalesceExpr::clear_coalescetype() { + coalescetype_ = 0u; +} +inline ::PROTOBUF_NAMESPACE_ID::uint32 CoalesceExpr::_internal_coalescetype() const { + return coalescetype_; +} +inline ::PROTOBUF_NAMESPACE_ID::uint32 CoalesceExpr::coalescetype() const { + // @@protoc_insertion_point(field_get:pg_query.CoalesceExpr.coalescetype) + return _internal_coalescetype(); +} +inline void CoalesceExpr::_internal_set_coalescetype(::PROTOBUF_NAMESPACE_ID::uint32 value) { + + coalescetype_ = value; +} +inline void CoalesceExpr::set_coalescetype(::PROTOBUF_NAMESPACE_ID::uint32 value) { + _internal_set_coalescetype(value); + // @@protoc_insertion_point(field_set:pg_query.CoalesceExpr.coalescetype) +} + +// uint32 coalescecollid = 3 [json_name = "coalescecollid"]; +inline void CoalesceExpr::clear_coalescecollid() { + coalescecollid_ = 0u; +} +inline ::PROTOBUF_NAMESPACE_ID::uint32 CoalesceExpr::_internal_coalescecollid() const { + return coalescecollid_; +} +inline ::PROTOBUF_NAMESPACE_ID::uint32 CoalesceExpr::coalescecollid() const { + // @@protoc_insertion_point(field_get:pg_query.CoalesceExpr.coalescecollid) + return _internal_coalescecollid(); +} +inline void CoalesceExpr::_internal_set_coalescecollid(::PROTOBUF_NAMESPACE_ID::uint32 value) { + + coalescecollid_ = value; +} +inline void CoalesceExpr::set_coalescecollid(::PROTOBUF_NAMESPACE_ID::uint32 value) { + _internal_set_coalescecollid(value); + // @@protoc_insertion_point(field_set:pg_query.CoalesceExpr.coalescecollid) +} + +// repeated .pg_query.Node args = 4 [json_name = "args"]; +inline int CoalesceExpr::_internal_args_size() const { + return args_.size(); +} +inline int CoalesceExpr::args_size() const { + return _internal_args_size(); +} +inline void CoalesceExpr::clear_args() { + args_.Clear(); +} +inline ::pg_query::Node* CoalesceExpr::mutable_args(int index) { + // @@protoc_insertion_point(field_mutable:pg_query.CoalesceExpr.args) + return args_.Mutable(index); +} +inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* +CoalesceExpr::mutable_args() { + // @@protoc_insertion_point(field_mutable_list:pg_query.CoalesceExpr.args) + return &args_; +} +inline const ::pg_query::Node& CoalesceExpr::_internal_args(int index) const { + return args_.Get(index); +} +inline const ::pg_query::Node& CoalesceExpr::args(int index) const { + // @@protoc_insertion_point(field_get:pg_query.CoalesceExpr.args) + return _internal_args(index); +} +inline ::pg_query::Node* CoalesceExpr::_internal_add_args() { + return args_.Add(); +} +inline ::pg_query::Node* CoalesceExpr::add_args() { + // @@protoc_insertion_point(field_add:pg_query.CoalesceExpr.args) + return _internal_add_args(); +} +inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& +CoalesceExpr::args() const { + // @@protoc_insertion_point(field_list:pg_query.CoalesceExpr.args) + return args_; +} + +// int32 location = 5 [json_name = "location"]; +inline void CoalesceExpr::clear_location() { + location_ = 0; +} +inline ::PROTOBUF_NAMESPACE_ID::int32 CoalesceExpr::_internal_location() const { + return location_; +} +inline ::PROTOBUF_NAMESPACE_ID::int32 CoalesceExpr::location() const { + // @@protoc_insertion_point(field_get:pg_query.CoalesceExpr.location) + return _internal_location(); +} +inline void CoalesceExpr::_internal_set_location(::PROTOBUF_NAMESPACE_ID::int32 value) { + + location_ = value; +} +inline void CoalesceExpr::set_location(::PROTOBUF_NAMESPACE_ID::int32 value) { + _internal_set_location(value); + // @@protoc_insertion_point(field_set:pg_query.CoalesceExpr.location) +} + +// ------------------------------------------------------------------- + +// MinMaxExpr + +// .pg_query.Node xpr = 1 [json_name = "xpr"]; +inline bool MinMaxExpr::_internal_has_xpr() const { + return this != internal_default_instance() && xpr_ != nullptr; +} +inline bool MinMaxExpr::has_xpr() const { + return _internal_has_xpr(); +} +inline void MinMaxExpr::clear_xpr() { + if (GetArena() == nullptr && xpr_ != nullptr) { + delete xpr_; + } + xpr_ = nullptr; +} +inline const ::pg_query::Node& MinMaxExpr::_internal_xpr() const { + const ::pg_query::Node* p = xpr_; + return p != nullptr ? *p : reinterpret_cast( + ::pg_query::_Node_default_instance_); +} +inline const ::pg_query::Node& MinMaxExpr::xpr() const { + // @@protoc_insertion_point(field_get:pg_query.MinMaxExpr.xpr) + return _internal_xpr(); +} +inline void MinMaxExpr::unsafe_arena_set_allocated_xpr( + ::pg_query::Node* xpr) { + if (GetArena() == nullptr) { + delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(xpr_); + } + xpr_ = xpr; + if (xpr) { + + } else { + + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.MinMaxExpr.xpr) +} +inline ::pg_query::Node* MinMaxExpr::release_xpr() { + + ::pg_query::Node* temp = xpr_; + xpr_ = nullptr; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + return temp; +} +inline ::pg_query::Node* MinMaxExpr::unsafe_arena_release_xpr() { + // @@protoc_insertion_point(field_release:pg_query.MinMaxExpr.xpr) + + ::pg_query::Node* temp = xpr_; + xpr_ = nullptr; + return temp; +} +inline ::pg_query::Node* MinMaxExpr::_internal_mutable_xpr() { + + if (xpr_ == nullptr) { + auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); + xpr_ = p; + } + return xpr_; +} +inline ::pg_query::Node* MinMaxExpr::mutable_xpr() { + // @@protoc_insertion_point(field_mutable:pg_query.MinMaxExpr.xpr) + return _internal_mutable_xpr(); +} +inline void MinMaxExpr::set_allocated_xpr(::pg_query::Node* xpr) { + ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); + if (message_arena == nullptr) { + delete xpr_; + } + if (xpr) { + ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = + ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(xpr); + if (message_arena != submessage_arena) { + xpr = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( + message_arena, xpr, submessage_arena); + } + + } else { + + } + xpr_ = xpr; + // @@protoc_insertion_point(field_set_allocated:pg_query.MinMaxExpr.xpr) +} + +// uint32 minmaxtype = 2 [json_name = "minmaxtype"]; +inline void MinMaxExpr::clear_minmaxtype() { + minmaxtype_ = 0u; +} +inline ::PROTOBUF_NAMESPACE_ID::uint32 MinMaxExpr::_internal_minmaxtype() const { + return minmaxtype_; +} +inline ::PROTOBUF_NAMESPACE_ID::uint32 MinMaxExpr::minmaxtype() const { + // @@protoc_insertion_point(field_get:pg_query.MinMaxExpr.minmaxtype) + return _internal_minmaxtype(); +} +inline void MinMaxExpr::_internal_set_minmaxtype(::PROTOBUF_NAMESPACE_ID::uint32 value) { + + minmaxtype_ = value; +} +inline void MinMaxExpr::set_minmaxtype(::PROTOBUF_NAMESPACE_ID::uint32 value) { + _internal_set_minmaxtype(value); + // @@protoc_insertion_point(field_set:pg_query.MinMaxExpr.minmaxtype) +} + +// uint32 minmaxcollid = 3 [json_name = "minmaxcollid"]; +inline void MinMaxExpr::clear_minmaxcollid() { + minmaxcollid_ = 0u; +} +inline ::PROTOBUF_NAMESPACE_ID::uint32 MinMaxExpr::_internal_minmaxcollid() const { + return minmaxcollid_; +} +inline ::PROTOBUF_NAMESPACE_ID::uint32 MinMaxExpr::minmaxcollid() const { + // @@protoc_insertion_point(field_get:pg_query.MinMaxExpr.minmaxcollid) + return _internal_minmaxcollid(); +} +inline void MinMaxExpr::_internal_set_minmaxcollid(::PROTOBUF_NAMESPACE_ID::uint32 value) { + + minmaxcollid_ = value; +} +inline void MinMaxExpr::set_minmaxcollid(::PROTOBUF_NAMESPACE_ID::uint32 value) { + _internal_set_minmaxcollid(value); + // @@protoc_insertion_point(field_set:pg_query.MinMaxExpr.minmaxcollid) +} + +// uint32 inputcollid = 4 [json_name = "inputcollid"]; +inline void MinMaxExpr::clear_inputcollid() { + inputcollid_ = 0u; +} +inline ::PROTOBUF_NAMESPACE_ID::uint32 MinMaxExpr::_internal_inputcollid() const { + return inputcollid_; +} +inline ::PROTOBUF_NAMESPACE_ID::uint32 MinMaxExpr::inputcollid() const { + // @@protoc_insertion_point(field_get:pg_query.MinMaxExpr.inputcollid) + return _internal_inputcollid(); +} +inline void MinMaxExpr::_internal_set_inputcollid(::PROTOBUF_NAMESPACE_ID::uint32 value) { + + inputcollid_ = value; +} +inline void MinMaxExpr::set_inputcollid(::PROTOBUF_NAMESPACE_ID::uint32 value) { + _internal_set_inputcollid(value); + // @@protoc_insertion_point(field_set:pg_query.MinMaxExpr.inputcollid) +} + +// .pg_query.MinMaxOp op = 5 [json_name = "op"]; +inline void MinMaxExpr::clear_op() { + op_ = 0; +} +inline ::pg_query::MinMaxOp MinMaxExpr::_internal_op() const { + return static_cast< ::pg_query::MinMaxOp >(op_); +} +inline ::pg_query::MinMaxOp MinMaxExpr::op() const { + // @@protoc_insertion_point(field_get:pg_query.MinMaxExpr.op) + return _internal_op(); +} +inline void MinMaxExpr::_internal_set_op(::pg_query::MinMaxOp value) { + + op_ = value; +} +inline void MinMaxExpr::set_op(::pg_query::MinMaxOp value) { + _internal_set_op(value); + // @@protoc_insertion_point(field_set:pg_query.MinMaxExpr.op) +} + +// repeated .pg_query.Node args = 6 [json_name = "args"]; +inline int MinMaxExpr::_internal_args_size() const { + return args_.size(); +} +inline int MinMaxExpr::args_size() const { + return _internal_args_size(); +} +inline void MinMaxExpr::clear_args() { + args_.Clear(); +} +inline ::pg_query::Node* MinMaxExpr::mutable_args(int index) { + // @@protoc_insertion_point(field_mutable:pg_query.MinMaxExpr.args) + return args_.Mutable(index); +} +inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* +MinMaxExpr::mutable_args() { + // @@protoc_insertion_point(field_mutable_list:pg_query.MinMaxExpr.args) + return &args_; +} +inline const ::pg_query::Node& MinMaxExpr::_internal_args(int index) const { + return args_.Get(index); +} +inline const ::pg_query::Node& MinMaxExpr::args(int index) const { + // @@protoc_insertion_point(field_get:pg_query.MinMaxExpr.args) + return _internal_args(index); +} +inline ::pg_query::Node* MinMaxExpr::_internal_add_args() { + return args_.Add(); +} +inline ::pg_query::Node* MinMaxExpr::add_args() { + // @@protoc_insertion_point(field_add:pg_query.MinMaxExpr.args) + return _internal_add_args(); +} +inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& +MinMaxExpr::args() const { + // @@protoc_insertion_point(field_list:pg_query.MinMaxExpr.args) + return args_; +} + +// int32 location = 7 [json_name = "location"]; +inline void MinMaxExpr::clear_location() { + location_ = 0; +} +inline ::PROTOBUF_NAMESPACE_ID::int32 MinMaxExpr::_internal_location() const { + return location_; +} +inline ::PROTOBUF_NAMESPACE_ID::int32 MinMaxExpr::location() const { + // @@protoc_insertion_point(field_get:pg_query.MinMaxExpr.location) + return _internal_location(); +} +inline void MinMaxExpr::_internal_set_location(::PROTOBUF_NAMESPACE_ID::int32 value) { + + location_ = value; +} +inline void MinMaxExpr::set_location(::PROTOBUF_NAMESPACE_ID::int32 value) { + _internal_set_location(value); + // @@protoc_insertion_point(field_set:pg_query.MinMaxExpr.location) +} + +// ------------------------------------------------------------------- + +// SQLValueFunction + +// .pg_query.Node xpr = 1 [json_name = "xpr"]; +inline bool SQLValueFunction::_internal_has_xpr() const { + return this != internal_default_instance() && xpr_ != nullptr; +} +inline bool SQLValueFunction::has_xpr() const { + return _internal_has_xpr(); +} +inline void SQLValueFunction::clear_xpr() { + if (GetArena() == nullptr && xpr_ != nullptr) { + delete xpr_; + } + xpr_ = nullptr; +} +inline const ::pg_query::Node& SQLValueFunction::_internal_xpr() const { + const ::pg_query::Node* p = xpr_; + return p != nullptr ? *p : reinterpret_cast( + ::pg_query::_Node_default_instance_); +} +inline const ::pg_query::Node& SQLValueFunction::xpr() const { + // @@protoc_insertion_point(field_get:pg_query.SQLValueFunction.xpr) + return _internal_xpr(); +} +inline void SQLValueFunction::unsafe_arena_set_allocated_xpr( + ::pg_query::Node* xpr) { + if (GetArena() == nullptr) { + delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(xpr_); + } + xpr_ = xpr; + if (xpr) { + + } else { + + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.SQLValueFunction.xpr) +} +inline ::pg_query::Node* SQLValueFunction::release_xpr() { + + ::pg_query::Node* temp = xpr_; + xpr_ = nullptr; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + return temp; +} +inline ::pg_query::Node* SQLValueFunction::unsafe_arena_release_xpr() { + // @@protoc_insertion_point(field_release:pg_query.SQLValueFunction.xpr) + + ::pg_query::Node* temp = xpr_; + xpr_ = nullptr; + return temp; +} +inline ::pg_query::Node* SQLValueFunction::_internal_mutable_xpr() { + + if (xpr_ == nullptr) { + auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); + xpr_ = p; + } + return xpr_; +} +inline ::pg_query::Node* SQLValueFunction::mutable_xpr() { + // @@protoc_insertion_point(field_mutable:pg_query.SQLValueFunction.xpr) + return _internal_mutable_xpr(); +} +inline void SQLValueFunction::set_allocated_xpr(::pg_query::Node* xpr) { + ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); + if (message_arena == nullptr) { + delete xpr_; + } + if (xpr) { + ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = + ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(xpr); + if (message_arena != submessage_arena) { + xpr = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( + message_arena, xpr, submessage_arena); + } + + } else { + + } + xpr_ = xpr; + // @@protoc_insertion_point(field_set_allocated:pg_query.SQLValueFunction.xpr) +} + +// .pg_query.SQLValueFunctionOp op = 2 [json_name = "op"]; +inline void SQLValueFunction::clear_op() { + op_ = 0; +} +inline ::pg_query::SQLValueFunctionOp SQLValueFunction::_internal_op() const { + return static_cast< ::pg_query::SQLValueFunctionOp >(op_); +} +inline ::pg_query::SQLValueFunctionOp SQLValueFunction::op() const { + // @@protoc_insertion_point(field_get:pg_query.SQLValueFunction.op) + return _internal_op(); +} +inline void SQLValueFunction::_internal_set_op(::pg_query::SQLValueFunctionOp value) { + + op_ = value; +} +inline void SQLValueFunction::set_op(::pg_query::SQLValueFunctionOp value) { + _internal_set_op(value); + // @@protoc_insertion_point(field_set:pg_query.SQLValueFunction.op) +} + +// uint32 type = 3 [json_name = "type"]; +inline void SQLValueFunction::clear_type() { + type_ = 0u; +} +inline ::PROTOBUF_NAMESPACE_ID::uint32 SQLValueFunction::_internal_type() const { + return type_; +} +inline ::PROTOBUF_NAMESPACE_ID::uint32 SQLValueFunction::type() const { + // @@protoc_insertion_point(field_get:pg_query.SQLValueFunction.type) + return _internal_type(); +} +inline void SQLValueFunction::_internal_set_type(::PROTOBUF_NAMESPACE_ID::uint32 value) { + + type_ = value; +} +inline void SQLValueFunction::set_type(::PROTOBUF_NAMESPACE_ID::uint32 value) { + _internal_set_type(value); + // @@protoc_insertion_point(field_set:pg_query.SQLValueFunction.type) +} + +// int32 typmod = 4 [json_name = "typmod"]; +inline void SQLValueFunction::clear_typmod() { + typmod_ = 0; +} +inline ::PROTOBUF_NAMESPACE_ID::int32 SQLValueFunction::_internal_typmod() const { + return typmod_; +} +inline ::PROTOBUF_NAMESPACE_ID::int32 SQLValueFunction::typmod() const { + // @@protoc_insertion_point(field_get:pg_query.SQLValueFunction.typmod) + return _internal_typmod(); +} +inline void SQLValueFunction::_internal_set_typmod(::PROTOBUF_NAMESPACE_ID::int32 value) { + + typmod_ = value; +} +inline void SQLValueFunction::set_typmod(::PROTOBUF_NAMESPACE_ID::int32 value) { + _internal_set_typmod(value); + // @@protoc_insertion_point(field_set:pg_query.SQLValueFunction.typmod) +} + +// int32 location = 5 [json_name = "location"]; +inline void SQLValueFunction::clear_location() { + location_ = 0; +} +inline ::PROTOBUF_NAMESPACE_ID::int32 SQLValueFunction::_internal_location() const { + return location_; +} +inline ::PROTOBUF_NAMESPACE_ID::int32 SQLValueFunction::location() const { + // @@protoc_insertion_point(field_get:pg_query.SQLValueFunction.location) + return _internal_location(); +} +inline void SQLValueFunction::_internal_set_location(::PROTOBUF_NAMESPACE_ID::int32 value) { + + location_ = value; +} +inline void SQLValueFunction::set_location(::PROTOBUF_NAMESPACE_ID::int32 value) { + _internal_set_location(value); + // @@protoc_insertion_point(field_set:pg_query.SQLValueFunction.location) +} + +// ------------------------------------------------------------------- + +// XmlExpr + +// .pg_query.Node xpr = 1 [json_name = "xpr"]; +inline bool XmlExpr::_internal_has_xpr() const { + return this != internal_default_instance() && xpr_ != nullptr; +} +inline bool XmlExpr::has_xpr() const { + return _internal_has_xpr(); +} +inline void XmlExpr::clear_xpr() { + if (GetArena() == nullptr && xpr_ != nullptr) { + delete xpr_; + } + xpr_ = nullptr; +} +inline const ::pg_query::Node& XmlExpr::_internal_xpr() const { + const ::pg_query::Node* p = xpr_; + return p != nullptr ? *p : reinterpret_cast( + ::pg_query::_Node_default_instance_); +} +inline const ::pg_query::Node& XmlExpr::xpr() const { + // @@protoc_insertion_point(field_get:pg_query.XmlExpr.xpr) + return _internal_xpr(); +} +inline void XmlExpr::unsafe_arena_set_allocated_xpr( + ::pg_query::Node* xpr) { + if (GetArena() == nullptr) { + delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(xpr_); + } + xpr_ = xpr; + if (xpr) { + + } else { + + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.XmlExpr.xpr) +} +inline ::pg_query::Node* XmlExpr::release_xpr() { + + ::pg_query::Node* temp = xpr_; + xpr_ = nullptr; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + return temp; +} +inline ::pg_query::Node* XmlExpr::unsafe_arena_release_xpr() { + // @@protoc_insertion_point(field_release:pg_query.XmlExpr.xpr) + + ::pg_query::Node* temp = xpr_; + xpr_ = nullptr; + return temp; +} +inline ::pg_query::Node* XmlExpr::_internal_mutable_xpr() { + + if (xpr_ == nullptr) { + auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); + xpr_ = p; + } + return xpr_; +} +inline ::pg_query::Node* XmlExpr::mutable_xpr() { + // @@protoc_insertion_point(field_mutable:pg_query.XmlExpr.xpr) + return _internal_mutable_xpr(); +} +inline void XmlExpr::set_allocated_xpr(::pg_query::Node* xpr) { + ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); + if (message_arena == nullptr) { + delete xpr_; + } + if (xpr) { + ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = + ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(xpr); + if (message_arena != submessage_arena) { + xpr = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( + message_arena, xpr, submessage_arena); + } + + } else { + + } + xpr_ = xpr; + // @@protoc_insertion_point(field_set_allocated:pg_query.XmlExpr.xpr) +} + +// .pg_query.XmlExprOp op = 2 [json_name = "op"]; +inline void XmlExpr::clear_op() { + op_ = 0; +} +inline ::pg_query::XmlExprOp XmlExpr::_internal_op() const { + return static_cast< ::pg_query::XmlExprOp >(op_); +} +inline ::pg_query::XmlExprOp XmlExpr::op() const { + // @@protoc_insertion_point(field_get:pg_query.XmlExpr.op) + return _internal_op(); +} +inline void XmlExpr::_internal_set_op(::pg_query::XmlExprOp value) { + + op_ = value; +} +inline void XmlExpr::set_op(::pg_query::XmlExprOp value) { + _internal_set_op(value); + // @@protoc_insertion_point(field_set:pg_query.XmlExpr.op) +} + +// string name = 3 [json_name = "name"]; +inline void XmlExpr::clear_name() { + name_.ClearToEmpty(); +} +inline const std::string& XmlExpr::name() const { + // @@protoc_insertion_point(field_get:pg_query.XmlExpr.name) + return _internal_name(); +} +inline void XmlExpr::set_name(const std::string& value) { + _internal_set_name(value); + // @@protoc_insertion_point(field_set:pg_query.XmlExpr.name) +} +inline std::string* XmlExpr::mutable_name() { + // @@protoc_insertion_point(field_mutable:pg_query.XmlExpr.name) + return _internal_mutable_name(); +} +inline const std::string& XmlExpr::_internal_name() const { + return name_.Get(); +} +inline void XmlExpr::_internal_set_name(const std::string& value) { + + name_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArena()); +} +inline void XmlExpr::set_name(std::string&& value) { + + name_.Set( + ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::move(value), GetArena()); + // @@protoc_insertion_point(field_set_rvalue:pg_query.XmlExpr.name) +} +inline void XmlExpr::set_name(const char* value) { + GOOGLE_DCHECK(value != nullptr); + + name_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string(value), GetArena()); + // @@protoc_insertion_point(field_set_char:pg_query.XmlExpr.name) +} +inline void XmlExpr::set_name(const char* value, + size_t size) { + + name_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string( + reinterpret_cast(value), size), GetArena()); + // @@protoc_insertion_point(field_set_pointer:pg_query.XmlExpr.name) +} +inline std::string* XmlExpr::_internal_mutable_name() { + + return name_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArena()); +} +inline std::string* XmlExpr::release_name() { + // @@protoc_insertion_point(field_release:pg_query.XmlExpr.name) + return name_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); +} +inline void XmlExpr::set_allocated_name(std::string* name) { + if (name != nullptr) { + + } else { + + } + name_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), name, + GetArena()); + // @@protoc_insertion_point(field_set_allocated:pg_query.XmlExpr.name) +} + +// repeated .pg_query.Node named_args = 4 [json_name = "named_args"]; +inline int XmlExpr::_internal_named_args_size() const { + return named_args_.size(); +} +inline int XmlExpr::named_args_size() const { + return _internal_named_args_size(); +} +inline void XmlExpr::clear_named_args() { + named_args_.Clear(); +} +inline ::pg_query::Node* XmlExpr::mutable_named_args(int index) { + // @@protoc_insertion_point(field_mutable:pg_query.XmlExpr.named_args) + return named_args_.Mutable(index); +} +inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* +XmlExpr::mutable_named_args() { + // @@protoc_insertion_point(field_mutable_list:pg_query.XmlExpr.named_args) + return &named_args_; +} +inline const ::pg_query::Node& XmlExpr::_internal_named_args(int index) const { + return named_args_.Get(index); +} +inline const ::pg_query::Node& XmlExpr::named_args(int index) const { + // @@protoc_insertion_point(field_get:pg_query.XmlExpr.named_args) + return _internal_named_args(index); +} +inline ::pg_query::Node* XmlExpr::_internal_add_named_args() { + return named_args_.Add(); +} +inline ::pg_query::Node* XmlExpr::add_named_args() { + // @@protoc_insertion_point(field_add:pg_query.XmlExpr.named_args) + return _internal_add_named_args(); +} +inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& +XmlExpr::named_args() const { + // @@protoc_insertion_point(field_list:pg_query.XmlExpr.named_args) + return named_args_; +} + +// repeated .pg_query.Node arg_names = 5 [json_name = "arg_names"]; +inline int XmlExpr::_internal_arg_names_size() const { + return arg_names_.size(); +} +inline int XmlExpr::arg_names_size() const { + return _internal_arg_names_size(); +} +inline void XmlExpr::clear_arg_names() { + arg_names_.Clear(); +} +inline ::pg_query::Node* XmlExpr::mutable_arg_names(int index) { + // @@protoc_insertion_point(field_mutable:pg_query.XmlExpr.arg_names) + return arg_names_.Mutable(index); +} +inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* +XmlExpr::mutable_arg_names() { + // @@protoc_insertion_point(field_mutable_list:pg_query.XmlExpr.arg_names) + return &arg_names_; +} +inline const ::pg_query::Node& XmlExpr::_internal_arg_names(int index) const { + return arg_names_.Get(index); +} +inline const ::pg_query::Node& XmlExpr::arg_names(int index) const { + // @@protoc_insertion_point(field_get:pg_query.XmlExpr.arg_names) + return _internal_arg_names(index); +} +inline ::pg_query::Node* XmlExpr::_internal_add_arg_names() { + return arg_names_.Add(); +} +inline ::pg_query::Node* XmlExpr::add_arg_names() { + // @@protoc_insertion_point(field_add:pg_query.XmlExpr.arg_names) + return _internal_add_arg_names(); +} +inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& +XmlExpr::arg_names() const { + // @@protoc_insertion_point(field_list:pg_query.XmlExpr.arg_names) + return arg_names_; +} + +// repeated .pg_query.Node args = 6 [json_name = "args"]; +inline int XmlExpr::_internal_args_size() const { + return args_.size(); +} +inline int XmlExpr::args_size() const { + return _internal_args_size(); +} +inline void XmlExpr::clear_args() { + args_.Clear(); +} +inline ::pg_query::Node* XmlExpr::mutable_args(int index) { + // @@protoc_insertion_point(field_mutable:pg_query.XmlExpr.args) + return args_.Mutable(index); +} +inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* +XmlExpr::mutable_args() { + // @@protoc_insertion_point(field_mutable_list:pg_query.XmlExpr.args) + return &args_; +} +inline const ::pg_query::Node& XmlExpr::_internal_args(int index) const { + return args_.Get(index); +} +inline const ::pg_query::Node& XmlExpr::args(int index) const { + // @@protoc_insertion_point(field_get:pg_query.XmlExpr.args) + return _internal_args(index); +} +inline ::pg_query::Node* XmlExpr::_internal_add_args() { + return args_.Add(); +} +inline ::pg_query::Node* XmlExpr::add_args() { + // @@protoc_insertion_point(field_add:pg_query.XmlExpr.args) + return _internal_add_args(); +} +inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& +XmlExpr::args() const { + // @@protoc_insertion_point(field_list:pg_query.XmlExpr.args) + return args_; +} + +// .pg_query.XmlOptionType xmloption = 7 [json_name = "xmloption"]; +inline void XmlExpr::clear_xmloption() { + xmloption_ = 0; +} +inline ::pg_query::XmlOptionType XmlExpr::_internal_xmloption() const { + return static_cast< ::pg_query::XmlOptionType >(xmloption_); +} +inline ::pg_query::XmlOptionType XmlExpr::xmloption() const { + // @@protoc_insertion_point(field_get:pg_query.XmlExpr.xmloption) + return _internal_xmloption(); +} +inline void XmlExpr::_internal_set_xmloption(::pg_query::XmlOptionType value) { + + xmloption_ = value; +} +inline void XmlExpr::set_xmloption(::pg_query::XmlOptionType value) { + _internal_set_xmloption(value); + // @@protoc_insertion_point(field_set:pg_query.XmlExpr.xmloption) +} + +// uint32 type = 8 [json_name = "type"]; +inline void XmlExpr::clear_type() { + type_ = 0u; +} +inline ::PROTOBUF_NAMESPACE_ID::uint32 XmlExpr::_internal_type() const { + return type_; +} +inline ::PROTOBUF_NAMESPACE_ID::uint32 XmlExpr::type() const { + // @@protoc_insertion_point(field_get:pg_query.XmlExpr.type) + return _internal_type(); +} +inline void XmlExpr::_internal_set_type(::PROTOBUF_NAMESPACE_ID::uint32 value) { + + type_ = value; +} +inline void XmlExpr::set_type(::PROTOBUF_NAMESPACE_ID::uint32 value) { + _internal_set_type(value); + // @@protoc_insertion_point(field_set:pg_query.XmlExpr.type) +} + +// int32 typmod = 9 [json_name = "typmod"]; +inline void XmlExpr::clear_typmod() { + typmod_ = 0; +} +inline ::PROTOBUF_NAMESPACE_ID::int32 XmlExpr::_internal_typmod() const { + return typmod_; +} +inline ::PROTOBUF_NAMESPACE_ID::int32 XmlExpr::typmod() const { + // @@protoc_insertion_point(field_get:pg_query.XmlExpr.typmod) + return _internal_typmod(); +} +inline void XmlExpr::_internal_set_typmod(::PROTOBUF_NAMESPACE_ID::int32 value) { + + typmod_ = value; +} +inline void XmlExpr::set_typmod(::PROTOBUF_NAMESPACE_ID::int32 value) { + _internal_set_typmod(value); + // @@protoc_insertion_point(field_set:pg_query.XmlExpr.typmod) +} + +// int32 location = 10 [json_name = "location"]; +inline void XmlExpr::clear_location() { + location_ = 0; +} +inline ::PROTOBUF_NAMESPACE_ID::int32 XmlExpr::_internal_location() const { + return location_; +} +inline ::PROTOBUF_NAMESPACE_ID::int32 XmlExpr::location() const { + // @@protoc_insertion_point(field_get:pg_query.XmlExpr.location) + return _internal_location(); +} +inline void XmlExpr::_internal_set_location(::PROTOBUF_NAMESPACE_ID::int32 value) { + + location_ = value; +} +inline void XmlExpr::set_location(::PROTOBUF_NAMESPACE_ID::int32 value) { + _internal_set_location(value); + // @@protoc_insertion_point(field_set:pg_query.XmlExpr.location) +} + +// ------------------------------------------------------------------- + +// NullTest + +// .pg_query.Node xpr = 1 [json_name = "xpr"]; +inline bool NullTest::_internal_has_xpr() const { + return this != internal_default_instance() && xpr_ != nullptr; +} +inline bool NullTest::has_xpr() const { + return _internal_has_xpr(); +} +inline void NullTest::clear_xpr() { + if (GetArena() == nullptr && xpr_ != nullptr) { + delete xpr_; + } + xpr_ = nullptr; +} +inline const ::pg_query::Node& NullTest::_internal_xpr() const { + const ::pg_query::Node* p = xpr_; + return p != nullptr ? *p : reinterpret_cast( + ::pg_query::_Node_default_instance_); +} +inline const ::pg_query::Node& NullTest::xpr() const { + // @@protoc_insertion_point(field_get:pg_query.NullTest.xpr) + return _internal_xpr(); +} +inline void NullTest::unsafe_arena_set_allocated_xpr( + ::pg_query::Node* xpr) { + if (GetArena() == nullptr) { + delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(xpr_); + } + xpr_ = xpr; + if (xpr) { + + } else { + + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.NullTest.xpr) +} +inline ::pg_query::Node* NullTest::release_xpr() { + + ::pg_query::Node* temp = xpr_; + xpr_ = nullptr; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + return temp; +} +inline ::pg_query::Node* NullTest::unsafe_arena_release_xpr() { + // @@protoc_insertion_point(field_release:pg_query.NullTest.xpr) + + ::pg_query::Node* temp = xpr_; + xpr_ = nullptr; + return temp; +} +inline ::pg_query::Node* NullTest::_internal_mutable_xpr() { + + if (xpr_ == nullptr) { + auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); + xpr_ = p; + } + return xpr_; +} +inline ::pg_query::Node* NullTest::mutable_xpr() { + // @@protoc_insertion_point(field_mutable:pg_query.NullTest.xpr) + return _internal_mutable_xpr(); +} +inline void NullTest::set_allocated_xpr(::pg_query::Node* xpr) { + ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); + if (message_arena == nullptr) { + delete xpr_; + } + if (xpr) { + ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = + ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(xpr); + if (message_arena != submessage_arena) { + xpr = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( + message_arena, xpr, submessage_arena); + } + + } else { + + } + xpr_ = xpr; + // @@protoc_insertion_point(field_set_allocated:pg_query.NullTest.xpr) +} + +// .pg_query.Node arg = 2 [json_name = "arg"]; +inline bool NullTest::_internal_has_arg() const { + return this != internal_default_instance() && arg_ != nullptr; +} +inline bool NullTest::has_arg() const { + return _internal_has_arg(); +} +inline void NullTest::clear_arg() { + if (GetArena() == nullptr && arg_ != nullptr) { + delete arg_; + } + arg_ = nullptr; +} +inline const ::pg_query::Node& NullTest::_internal_arg() const { + const ::pg_query::Node* p = arg_; + return p != nullptr ? *p : reinterpret_cast( + ::pg_query::_Node_default_instance_); +} +inline const ::pg_query::Node& NullTest::arg() const { + // @@protoc_insertion_point(field_get:pg_query.NullTest.arg) + return _internal_arg(); +} +inline void NullTest::unsafe_arena_set_allocated_arg( + ::pg_query::Node* arg) { + if (GetArena() == nullptr) { + delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(arg_); + } + arg_ = arg; + if (arg) { + + } else { + + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.NullTest.arg) +} +inline ::pg_query::Node* NullTest::release_arg() { + + ::pg_query::Node* temp = arg_; + arg_ = nullptr; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + return temp; +} +inline ::pg_query::Node* NullTest::unsafe_arena_release_arg() { + // @@protoc_insertion_point(field_release:pg_query.NullTest.arg) + + ::pg_query::Node* temp = arg_; + arg_ = nullptr; + return temp; +} +inline ::pg_query::Node* NullTest::_internal_mutable_arg() { + + if (arg_ == nullptr) { + auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); + arg_ = p; + } + return arg_; +} +inline ::pg_query::Node* NullTest::mutable_arg() { + // @@protoc_insertion_point(field_mutable:pg_query.NullTest.arg) + return _internal_mutable_arg(); +} +inline void NullTest::set_allocated_arg(::pg_query::Node* arg) { + ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); + if (message_arena == nullptr) { + delete arg_; + } + if (arg) { + ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = + ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(arg); + if (message_arena != submessage_arena) { + arg = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( + message_arena, arg, submessage_arena); + } + + } else { + + } + arg_ = arg; + // @@protoc_insertion_point(field_set_allocated:pg_query.NullTest.arg) +} + +// .pg_query.NullTestType nulltesttype = 3 [json_name = "nulltesttype"]; +inline void NullTest::clear_nulltesttype() { + nulltesttype_ = 0; +} +inline ::pg_query::NullTestType NullTest::_internal_nulltesttype() const { + return static_cast< ::pg_query::NullTestType >(nulltesttype_); +} +inline ::pg_query::NullTestType NullTest::nulltesttype() const { + // @@protoc_insertion_point(field_get:pg_query.NullTest.nulltesttype) + return _internal_nulltesttype(); +} +inline void NullTest::_internal_set_nulltesttype(::pg_query::NullTestType value) { + + nulltesttype_ = value; +} +inline void NullTest::set_nulltesttype(::pg_query::NullTestType value) { + _internal_set_nulltesttype(value); + // @@protoc_insertion_point(field_set:pg_query.NullTest.nulltesttype) +} + +// bool argisrow = 4 [json_name = "argisrow"]; +inline void NullTest::clear_argisrow() { + argisrow_ = false; +} +inline bool NullTest::_internal_argisrow() const { + return argisrow_; +} +inline bool NullTest::argisrow() const { + // @@protoc_insertion_point(field_get:pg_query.NullTest.argisrow) + return _internal_argisrow(); +} +inline void NullTest::_internal_set_argisrow(bool value) { + + argisrow_ = value; +} +inline void NullTest::set_argisrow(bool value) { + _internal_set_argisrow(value); + // @@protoc_insertion_point(field_set:pg_query.NullTest.argisrow) +} + +// int32 location = 5 [json_name = "location"]; +inline void NullTest::clear_location() { + location_ = 0; +} +inline ::PROTOBUF_NAMESPACE_ID::int32 NullTest::_internal_location() const { + return location_; +} +inline ::PROTOBUF_NAMESPACE_ID::int32 NullTest::location() const { + // @@protoc_insertion_point(field_get:pg_query.NullTest.location) + return _internal_location(); +} +inline void NullTest::_internal_set_location(::PROTOBUF_NAMESPACE_ID::int32 value) { + + location_ = value; +} +inline void NullTest::set_location(::PROTOBUF_NAMESPACE_ID::int32 value) { + _internal_set_location(value); + // @@protoc_insertion_point(field_set:pg_query.NullTest.location) +} + +// ------------------------------------------------------------------- + +// BooleanTest + +// .pg_query.Node xpr = 1 [json_name = "xpr"]; +inline bool BooleanTest::_internal_has_xpr() const { + return this != internal_default_instance() && xpr_ != nullptr; +} +inline bool BooleanTest::has_xpr() const { + return _internal_has_xpr(); +} +inline void BooleanTest::clear_xpr() { + if (GetArena() == nullptr && xpr_ != nullptr) { + delete xpr_; + } + xpr_ = nullptr; +} +inline const ::pg_query::Node& BooleanTest::_internal_xpr() const { + const ::pg_query::Node* p = xpr_; + return p != nullptr ? *p : reinterpret_cast( + ::pg_query::_Node_default_instance_); +} +inline const ::pg_query::Node& BooleanTest::xpr() const { + // @@protoc_insertion_point(field_get:pg_query.BooleanTest.xpr) + return _internal_xpr(); +} +inline void BooleanTest::unsafe_arena_set_allocated_xpr( + ::pg_query::Node* xpr) { + if (GetArena() == nullptr) { + delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(xpr_); + } + xpr_ = xpr; + if (xpr) { + + } else { + + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.BooleanTest.xpr) +} +inline ::pg_query::Node* BooleanTest::release_xpr() { + + ::pg_query::Node* temp = xpr_; + xpr_ = nullptr; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + return temp; +} +inline ::pg_query::Node* BooleanTest::unsafe_arena_release_xpr() { + // @@protoc_insertion_point(field_release:pg_query.BooleanTest.xpr) + + ::pg_query::Node* temp = xpr_; + xpr_ = nullptr; + return temp; +} +inline ::pg_query::Node* BooleanTest::_internal_mutable_xpr() { + + if (xpr_ == nullptr) { + auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); + xpr_ = p; + } + return xpr_; +} +inline ::pg_query::Node* BooleanTest::mutable_xpr() { + // @@protoc_insertion_point(field_mutable:pg_query.BooleanTest.xpr) + return _internal_mutable_xpr(); +} +inline void BooleanTest::set_allocated_xpr(::pg_query::Node* xpr) { + ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); + if (message_arena == nullptr) { + delete xpr_; + } + if (xpr) { + ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = + ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(xpr); + if (message_arena != submessage_arena) { + xpr = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( + message_arena, xpr, submessage_arena); + } + + } else { + + } + xpr_ = xpr; + // @@protoc_insertion_point(field_set_allocated:pg_query.BooleanTest.xpr) +} + +// .pg_query.Node arg = 2 [json_name = "arg"]; +inline bool BooleanTest::_internal_has_arg() const { + return this != internal_default_instance() && arg_ != nullptr; +} +inline bool BooleanTest::has_arg() const { + return _internal_has_arg(); +} +inline void BooleanTest::clear_arg() { + if (GetArena() == nullptr && arg_ != nullptr) { + delete arg_; + } + arg_ = nullptr; +} +inline const ::pg_query::Node& BooleanTest::_internal_arg() const { + const ::pg_query::Node* p = arg_; + return p != nullptr ? *p : reinterpret_cast( + ::pg_query::_Node_default_instance_); +} +inline const ::pg_query::Node& BooleanTest::arg() const { + // @@protoc_insertion_point(field_get:pg_query.BooleanTest.arg) + return _internal_arg(); +} +inline void BooleanTest::unsafe_arena_set_allocated_arg( + ::pg_query::Node* arg) { + if (GetArena() == nullptr) { + delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(arg_); + } + arg_ = arg; + if (arg) { + + } else { + + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.BooleanTest.arg) +} +inline ::pg_query::Node* BooleanTest::release_arg() { + + ::pg_query::Node* temp = arg_; + arg_ = nullptr; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + return temp; +} +inline ::pg_query::Node* BooleanTest::unsafe_arena_release_arg() { + // @@protoc_insertion_point(field_release:pg_query.BooleanTest.arg) + + ::pg_query::Node* temp = arg_; + arg_ = nullptr; + return temp; +} +inline ::pg_query::Node* BooleanTest::_internal_mutable_arg() { + + if (arg_ == nullptr) { + auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); + arg_ = p; + } + return arg_; +} +inline ::pg_query::Node* BooleanTest::mutable_arg() { + // @@protoc_insertion_point(field_mutable:pg_query.BooleanTest.arg) + return _internal_mutable_arg(); +} +inline void BooleanTest::set_allocated_arg(::pg_query::Node* arg) { + ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); + if (message_arena == nullptr) { + delete arg_; + } + if (arg) { + ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = + ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(arg); + if (message_arena != submessage_arena) { + arg = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( + message_arena, arg, submessage_arena); + } + + } else { + + } + arg_ = arg; + // @@protoc_insertion_point(field_set_allocated:pg_query.BooleanTest.arg) +} + +// .pg_query.BoolTestType booltesttype = 3 [json_name = "booltesttype"]; +inline void BooleanTest::clear_booltesttype() { + booltesttype_ = 0; +} +inline ::pg_query::BoolTestType BooleanTest::_internal_booltesttype() const { + return static_cast< ::pg_query::BoolTestType >(booltesttype_); +} +inline ::pg_query::BoolTestType BooleanTest::booltesttype() const { + // @@protoc_insertion_point(field_get:pg_query.BooleanTest.booltesttype) + return _internal_booltesttype(); +} +inline void BooleanTest::_internal_set_booltesttype(::pg_query::BoolTestType value) { + + booltesttype_ = value; +} +inline void BooleanTest::set_booltesttype(::pg_query::BoolTestType value) { + _internal_set_booltesttype(value); + // @@protoc_insertion_point(field_set:pg_query.BooleanTest.booltesttype) +} + +// int32 location = 4 [json_name = "location"]; +inline void BooleanTest::clear_location() { + location_ = 0; +} +inline ::PROTOBUF_NAMESPACE_ID::int32 BooleanTest::_internal_location() const { + return location_; +} +inline ::PROTOBUF_NAMESPACE_ID::int32 BooleanTest::location() const { + // @@protoc_insertion_point(field_get:pg_query.BooleanTest.location) + return _internal_location(); +} +inline void BooleanTest::_internal_set_location(::PROTOBUF_NAMESPACE_ID::int32 value) { + + location_ = value; +} +inline void BooleanTest::set_location(::PROTOBUF_NAMESPACE_ID::int32 value) { + _internal_set_location(value); + // @@protoc_insertion_point(field_set:pg_query.BooleanTest.location) +} + +// ------------------------------------------------------------------- + +// CoerceToDomain + +// .pg_query.Node xpr = 1 [json_name = "xpr"]; +inline bool CoerceToDomain::_internal_has_xpr() const { + return this != internal_default_instance() && xpr_ != nullptr; +} +inline bool CoerceToDomain::has_xpr() const { + return _internal_has_xpr(); +} +inline void CoerceToDomain::clear_xpr() { + if (GetArena() == nullptr && xpr_ != nullptr) { + delete xpr_; + } + xpr_ = nullptr; +} +inline const ::pg_query::Node& CoerceToDomain::_internal_xpr() const { + const ::pg_query::Node* p = xpr_; + return p != nullptr ? *p : reinterpret_cast( + ::pg_query::_Node_default_instance_); +} +inline const ::pg_query::Node& CoerceToDomain::xpr() const { + // @@protoc_insertion_point(field_get:pg_query.CoerceToDomain.xpr) + return _internal_xpr(); +} +inline void CoerceToDomain::unsafe_arena_set_allocated_xpr( + ::pg_query::Node* xpr) { + if (GetArena() == nullptr) { + delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(xpr_); + } + xpr_ = xpr; + if (xpr) { + + } else { + + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.CoerceToDomain.xpr) +} +inline ::pg_query::Node* CoerceToDomain::release_xpr() { + + ::pg_query::Node* temp = xpr_; + xpr_ = nullptr; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + return temp; +} +inline ::pg_query::Node* CoerceToDomain::unsafe_arena_release_xpr() { + // @@protoc_insertion_point(field_release:pg_query.CoerceToDomain.xpr) + + ::pg_query::Node* temp = xpr_; + xpr_ = nullptr; + return temp; +} +inline ::pg_query::Node* CoerceToDomain::_internal_mutable_xpr() { + + if (xpr_ == nullptr) { + auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); + xpr_ = p; + } + return xpr_; +} +inline ::pg_query::Node* CoerceToDomain::mutable_xpr() { + // @@protoc_insertion_point(field_mutable:pg_query.CoerceToDomain.xpr) + return _internal_mutable_xpr(); +} +inline void CoerceToDomain::set_allocated_xpr(::pg_query::Node* xpr) { + ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); + if (message_arena == nullptr) { + delete xpr_; + } + if (xpr) { + ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = + ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(xpr); + if (message_arena != submessage_arena) { + xpr = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( + message_arena, xpr, submessage_arena); + } + + } else { + + } + xpr_ = xpr; + // @@protoc_insertion_point(field_set_allocated:pg_query.CoerceToDomain.xpr) +} + +// .pg_query.Node arg = 2 [json_name = "arg"]; +inline bool CoerceToDomain::_internal_has_arg() const { + return this != internal_default_instance() && arg_ != nullptr; +} +inline bool CoerceToDomain::has_arg() const { + return _internal_has_arg(); +} +inline void CoerceToDomain::clear_arg() { + if (GetArena() == nullptr && arg_ != nullptr) { + delete arg_; + } + arg_ = nullptr; +} +inline const ::pg_query::Node& CoerceToDomain::_internal_arg() const { + const ::pg_query::Node* p = arg_; + return p != nullptr ? *p : reinterpret_cast( + ::pg_query::_Node_default_instance_); +} +inline const ::pg_query::Node& CoerceToDomain::arg() const { + // @@protoc_insertion_point(field_get:pg_query.CoerceToDomain.arg) + return _internal_arg(); +} +inline void CoerceToDomain::unsafe_arena_set_allocated_arg( + ::pg_query::Node* arg) { + if (GetArena() == nullptr) { + delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(arg_); + } + arg_ = arg; + if (arg) { + + } else { + + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.CoerceToDomain.arg) +} +inline ::pg_query::Node* CoerceToDomain::release_arg() { + + ::pg_query::Node* temp = arg_; + arg_ = nullptr; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + return temp; +} +inline ::pg_query::Node* CoerceToDomain::unsafe_arena_release_arg() { + // @@protoc_insertion_point(field_release:pg_query.CoerceToDomain.arg) + + ::pg_query::Node* temp = arg_; + arg_ = nullptr; + return temp; +} +inline ::pg_query::Node* CoerceToDomain::_internal_mutable_arg() { + + if (arg_ == nullptr) { + auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); + arg_ = p; + } + return arg_; +} +inline ::pg_query::Node* CoerceToDomain::mutable_arg() { + // @@protoc_insertion_point(field_mutable:pg_query.CoerceToDomain.arg) + return _internal_mutable_arg(); +} +inline void CoerceToDomain::set_allocated_arg(::pg_query::Node* arg) { + ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); + if (message_arena == nullptr) { + delete arg_; + } + if (arg) { + ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = + ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(arg); + if (message_arena != submessage_arena) { + arg = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( + message_arena, arg, submessage_arena); + } + + } else { + + } + arg_ = arg; + // @@protoc_insertion_point(field_set_allocated:pg_query.CoerceToDomain.arg) +} + +// uint32 resulttype = 3 [json_name = "resulttype"]; +inline void CoerceToDomain::clear_resulttype() { + resulttype_ = 0u; +} +inline ::PROTOBUF_NAMESPACE_ID::uint32 CoerceToDomain::_internal_resulttype() const { + return resulttype_; +} +inline ::PROTOBUF_NAMESPACE_ID::uint32 CoerceToDomain::resulttype() const { + // @@protoc_insertion_point(field_get:pg_query.CoerceToDomain.resulttype) + return _internal_resulttype(); +} +inline void CoerceToDomain::_internal_set_resulttype(::PROTOBUF_NAMESPACE_ID::uint32 value) { + + resulttype_ = value; +} +inline void CoerceToDomain::set_resulttype(::PROTOBUF_NAMESPACE_ID::uint32 value) { + _internal_set_resulttype(value); + // @@protoc_insertion_point(field_set:pg_query.CoerceToDomain.resulttype) +} + +// int32 resulttypmod = 4 [json_name = "resulttypmod"]; +inline void CoerceToDomain::clear_resulttypmod() { + resulttypmod_ = 0; +} +inline ::PROTOBUF_NAMESPACE_ID::int32 CoerceToDomain::_internal_resulttypmod() const { + return resulttypmod_; +} +inline ::PROTOBUF_NAMESPACE_ID::int32 CoerceToDomain::resulttypmod() const { + // @@protoc_insertion_point(field_get:pg_query.CoerceToDomain.resulttypmod) + return _internal_resulttypmod(); +} +inline void CoerceToDomain::_internal_set_resulttypmod(::PROTOBUF_NAMESPACE_ID::int32 value) { + + resulttypmod_ = value; +} +inline void CoerceToDomain::set_resulttypmod(::PROTOBUF_NAMESPACE_ID::int32 value) { + _internal_set_resulttypmod(value); + // @@protoc_insertion_point(field_set:pg_query.CoerceToDomain.resulttypmod) +} + +// uint32 resultcollid = 5 [json_name = "resultcollid"]; +inline void CoerceToDomain::clear_resultcollid() { + resultcollid_ = 0u; +} +inline ::PROTOBUF_NAMESPACE_ID::uint32 CoerceToDomain::_internal_resultcollid() const { + return resultcollid_; +} +inline ::PROTOBUF_NAMESPACE_ID::uint32 CoerceToDomain::resultcollid() const { + // @@protoc_insertion_point(field_get:pg_query.CoerceToDomain.resultcollid) + return _internal_resultcollid(); +} +inline void CoerceToDomain::_internal_set_resultcollid(::PROTOBUF_NAMESPACE_ID::uint32 value) { + + resultcollid_ = value; +} +inline void CoerceToDomain::set_resultcollid(::PROTOBUF_NAMESPACE_ID::uint32 value) { + _internal_set_resultcollid(value); + // @@protoc_insertion_point(field_set:pg_query.CoerceToDomain.resultcollid) +} + +// .pg_query.CoercionForm coercionformat = 6 [json_name = "coercionformat"]; +inline void CoerceToDomain::clear_coercionformat() { + coercionformat_ = 0; +} +inline ::pg_query::CoercionForm CoerceToDomain::_internal_coercionformat() const { + return static_cast< ::pg_query::CoercionForm >(coercionformat_); +} +inline ::pg_query::CoercionForm CoerceToDomain::coercionformat() const { + // @@protoc_insertion_point(field_get:pg_query.CoerceToDomain.coercionformat) + return _internal_coercionformat(); +} +inline void CoerceToDomain::_internal_set_coercionformat(::pg_query::CoercionForm value) { + + coercionformat_ = value; +} +inline void CoerceToDomain::set_coercionformat(::pg_query::CoercionForm value) { + _internal_set_coercionformat(value); + // @@protoc_insertion_point(field_set:pg_query.CoerceToDomain.coercionformat) +} + +// int32 location = 7 [json_name = "location"]; +inline void CoerceToDomain::clear_location() { + location_ = 0; +} +inline ::PROTOBUF_NAMESPACE_ID::int32 CoerceToDomain::_internal_location() const { + return location_; +} +inline ::PROTOBUF_NAMESPACE_ID::int32 CoerceToDomain::location() const { + // @@protoc_insertion_point(field_get:pg_query.CoerceToDomain.location) + return _internal_location(); +} +inline void CoerceToDomain::_internal_set_location(::PROTOBUF_NAMESPACE_ID::int32 value) { + + location_ = value; +} +inline void CoerceToDomain::set_location(::PROTOBUF_NAMESPACE_ID::int32 value) { + _internal_set_location(value); + // @@protoc_insertion_point(field_set:pg_query.CoerceToDomain.location) +} + +// ------------------------------------------------------------------- + +// CoerceToDomainValue + +// .pg_query.Node xpr = 1 [json_name = "xpr"]; +inline bool CoerceToDomainValue::_internal_has_xpr() const { + return this != internal_default_instance() && xpr_ != nullptr; +} +inline bool CoerceToDomainValue::has_xpr() const { + return _internal_has_xpr(); +} +inline void CoerceToDomainValue::clear_xpr() { + if (GetArena() == nullptr && xpr_ != nullptr) { + delete xpr_; + } + xpr_ = nullptr; +} +inline const ::pg_query::Node& CoerceToDomainValue::_internal_xpr() const { + const ::pg_query::Node* p = xpr_; + return p != nullptr ? *p : reinterpret_cast( + ::pg_query::_Node_default_instance_); +} +inline const ::pg_query::Node& CoerceToDomainValue::xpr() const { + // @@protoc_insertion_point(field_get:pg_query.CoerceToDomainValue.xpr) + return _internal_xpr(); +} +inline void CoerceToDomainValue::unsafe_arena_set_allocated_xpr( + ::pg_query::Node* xpr) { + if (GetArena() == nullptr) { + delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(xpr_); + } + xpr_ = xpr; + if (xpr) { + + } else { + + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.CoerceToDomainValue.xpr) +} +inline ::pg_query::Node* CoerceToDomainValue::release_xpr() { + + ::pg_query::Node* temp = xpr_; + xpr_ = nullptr; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + return temp; +} +inline ::pg_query::Node* CoerceToDomainValue::unsafe_arena_release_xpr() { + // @@protoc_insertion_point(field_release:pg_query.CoerceToDomainValue.xpr) + + ::pg_query::Node* temp = xpr_; + xpr_ = nullptr; + return temp; +} +inline ::pg_query::Node* CoerceToDomainValue::_internal_mutable_xpr() { + + if (xpr_ == nullptr) { + auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); + xpr_ = p; + } + return xpr_; +} +inline ::pg_query::Node* CoerceToDomainValue::mutable_xpr() { + // @@protoc_insertion_point(field_mutable:pg_query.CoerceToDomainValue.xpr) + return _internal_mutable_xpr(); +} +inline void CoerceToDomainValue::set_allocated_xpr(::pg_query::Node* xpr) { + ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); + if (message_arena == nullptr) { + delete xpr_; + } + if (xpr) { + ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = + ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(xpr); + if (message_arena != submessage_arena) { + xpr = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( + message_arena, xpr, submessage_arena); + } + + } else { + + } + xpr_ = xpr; + // @@protoc_insertion_point(field_set_allocated:pg_query.CoerceToDomainValue.xpr) +} + +// uint32 type_id = 2 [json_name = "typeId"]; +inline void CoerceToDomainValue::clear_type_id() { + type_id_ = 0u; +} +inline ::PROTOBUF_NAMESPACE_ID::uint32 CoerceToDomainValue::_internal_type_id() const { + return type_id_; +} +inline ::PROTOBUF_NAMESPACE_ID::uint32 CoerceToDomainValue::type_id() const { + // @@protoc_insertion_point(field_get:pg_query.CoerceToDomainValue.type_id) + return _internal_type_id(); +} +inline void CoerceToDomainValue::_internal_set_type_id(::PROTOBUF_NAMESPACE_ID::uint32 value) { + + type_id_ = value; +} +inline void CoerceToDomainValue::set_type_id(::PROTOBUF_NAMESPACE_ID::uint32 value) { + _internal_set_type_id(value); + // @@protoc_insertion_point(field_set:pg_query.CoerceToDomainValue.type_id) +} + +// int32 type_mod = 3 [json_name = "typeMod"]; +inline void CoerceToDomainValue::clear_type_mod() { + type_mod_ = 0; +} +inline ::PROTOBUF_NAMESPACE_ID::int32 CoerceToDomainValue::_internal_type_mod() const { + return type_mod_; +} +inline ::PROTOBUF_NAMESPACE_ID::int32 CoerceToDomainValue::type_mod() const { + // @@protoc_insertion_point(field_get:pg_query.CoerceToDomainValue.type_mod) + return _internal_type_mod(); +} +inline void CoerceToDomainValue::_internal_set_type_mod(::PROTOBUF_NAMESPACE_ID::int32 value) { + + type_mod_ = value; +} +inline void CoerceToDomainValue::set_type_mod(::PROTOBUF_NAMESPACE_ID::int32 value) { + _internal_set_type_mod(value); + // @@protoc_insertion_point(field_set:pg_query.CoerceToDomainValue.type_mod) +} + +// uint32 collation = 4 [json_name = "collation"]; +inline void CoerceToDomainValue::clear_collation() { + collation_ = 0u; +} +inline ::PROTOBUF_NAMESPACE_ID::uint32 CoerceToDomainValue::_internal_collation() const { + return collation_; +} +inline ::PROTOBUF_NAMESPACE_ID::uint32 CoerceToDomainValue::collation() const { + // @@protoc_insertion_point(field_get:pg_query.CoerceToDomainValue.collation) + return _internal_collation(); +} +inline void CoerceToDomainValue::_internal_set_collation(::PROTOBUF_NAMESPACE_ID::uint32 value) { + + collation_ = value; +} +inline void CoerceToDomainValue::set_collation(::PROTOBUF_NAMESPACE_ID::uint32 value) { + _internal_set_collation(value); + // @@protoc_insertion_point(field_set:pg_query.CoerceToDomainValue.collation) +} + +// int32 location = 5 [json_name = "location"]; +inline void CoerceToDomainValue::clear_location() { + location_ = 0; +} +inline ::PROTOBUF_NAMESPACE_ID::int32 CoerceToDomainValue::_internal_location() const { + return location_; +} +inline ::PROTOBUF_NAMESPACE_ID::int32 CoerceToDomainValue::location() const { + // @@protoc_insertion_point(field_get:pg_query.CoerceToDomainValue.location) + return _internal_location(); +} +inline void CoerceToDomainValue::_internal_set_location(::PROTOBUF_NAMESPACE_ID::int32 value) { + + location_ = value; +} +inline void CoerceToDomainValue::set_location(::PROTOBUF_NAMESPACE_ID::int32 value) { + _internal_set_location(value); + // @@protoc_insertion_point(field_set:pg_query.CoerceToDomainValue.location) +} + +// ------------------------------------------------------------------- + +// SetToDefault + +// .pg_query.Node xpr = 1 [json_name = "xpr"]; +inline bool SetToDefault::_internal_has_xpr() const { + return this != internal_default_instance() && xpr_ != nullptr; +} +inline bool SetToDefault::has_xpr() const { + return _internal_has_xpr(); +} +inline void SetToDefault::clear_xpr() { + if (GetArena() == nullptr && xpr_ != nullptr) { + delete xpr_; + } + xpr_ = nullptr; +} +inline const ::pg_query::Node& SetToDefault::_internal_xpr() const { + const ::pg_query::Node* p = xpr_; + return p != nullptr ? *p : reinterpret_cast( + ::pg_query::_Node_default_instance_); +} +inline const ::pg_query::Node& SetToDefault::xpr() const { + // @@protoc_insertion_point(field_get:pg_query.SetToDefault.xpr) + return _internal_xpr(); +} +inline void SetToDefault::unsafe_arena_set_allocated_xpr( + ::pg_query::Node* xpr) { + if (GetArena() == nullptr) { + delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(xpr_); + } + xpr_ = xpr; + if (xpr) { + + } else { + + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.SetToDefault.xpr) +} +inline ::pg_query::Node* SetToDefault::release_xpr() { + + ::pg_query::Node* temp = xpr_; + xpr_ = nullptr; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + return temp; +} +inline ::pg_query::Node* SetToDefault::unsafe_arena_release_xpr() { + // @@protoc_insertion_point(field_release:pg_query.SetToDefault.xpr) + + ::pg_query::Node* temp = xpr_; + xpr_ = nullptr; + return temp; +} +inline ::pg_query::Node* SetToDefault::_internal_mutable_xpr() { + + if (xpr_ == nullptr) { + auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); + xpr_ = p; + } + return xpr_; +} +inline ::pg_query::Node* SetToDefault::mutable_xpr() { + // @@protoc_insertion_point(field_mutable:pg_query.SetToDefault.xpr) + return _internal_mutable_xpr(); +} +inline void SetToDefault::set_allocated_xpr(::pg_query::Node* xpr) { + ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); + if (message_arena == nullptr) { + delete xpr_; + } + if (xpr) { + ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = + ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(xpr); + if (message_arena != submessage_arena) { + xpr = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( + message_arena, xpr, submessage_arena); + } + + } else { + + } + xpr_ = xpr; + // @@protoc_insertion_point(field_set_allocated:pg_query.SetToDefault.xpr) +} + +// uint32 type_id = 2 [json_name = "typeId"]; +inline void SetToDefault::clear_type_id() { + type_id_ = 0u; +} +inline ::PROTOBUF_NAMESPACE_ID::uint32 SetToDefault::_internal_type_id() const { + return type_id_; +} +inline ::PROTOBUF_NAMESPACE_ID::uint32 SetToDefault::type_id() const { + // @@protoc_insertion_point(field_get:pg_query.SetToDefault.type_id) + return _internal_type_id(); +} +inline void SetToDefault::_internal_set_type_id(::PROTOBUF_NAMESPACE_ID::uint32 value) { + + type_id_ = value; +} +inline void SetToDefault::set_type_id(::PROTOBUF_NAMESPACE_ID::uint32 value) { + _internal_set_type_id(value); + // @@protoc_insertion_point(field_set:pg_query.SetToDefault.type_id) +} + +// int32 type_mod = 3 [json_name = "typeMod"]; +inline void SetToDefault::clear_type_mod() { + type_mod_ = 0; +} +inline ::PROTOBUF_NAMESPACE_ID::int32 SetToDefault::_internal_type_mod() const { + return type_mod_; +} +inline ::PROTOBUF_NAMESPACE_ID::int32 SetToDefault::type_mod() const { + // @@protoc_insertion_point(field_get:pg_query.SetToDefault.type_mod) + return _internal_type_mod(); +} +inline void SetToDefault::_internal_set_type_mod(::PROTOBUF_NAMESPACE_ID::int32 value) { + + type_mod_ = value; +} +inline void SetToDefault::set_type_mod(::PROTOBUF_NAMESPACE_ID::int32 value) { + _internal_set_type_mod(value); + // @@protoc_insertion_point(field_set:pg_query.SetToDefault.type_mod) +} + +// uint32 collation = 4 [json_name = "collation"]; +inline void SetToDefault::clear_collation() { + collation_ = 0u; +} +inline ::PROTOBUF_NAMESPACE_ID::uint32 SetToDefault::_internal_collation() const { + return collation_; +} +inline ::PROTOBUF_NAMESPACE_ID::uint32 SetToDefault::collation() const { + // @@protoc_insertion_point(field_get:pg_query.SetToDefault.collation) + return _internal_collation(); +} +inline void SetToDefault::_internal_set_collation(::PROTOBUF_NAMESPACE_ID::uint32 value) { + + collation_ = value; +} +inline void SetToDefault::set_collation(::PROTOBUF_NAMESPACE_ID::uint32 value) { + _internal_set_collation(value); + // @@protoc_insertion_point(field_set:pg_query.SetToDefault.collation) +} + +// int32 location = 5 [json_name = "location"]; +inline void SetToDefault::clear_location() { + location_ = 0; +} +inline ::PROTOBUF_NAMESPACE_ID::int32 SetToDefault::_internal_location() const { + return location_; +} +inline ::PROTOBUF_NAMESPACE_ID::int32 SetToDefault::location() const { + // @@protoc_insertion_point(field_get:pg_query.SetToDefault.location) + return _internal_location(); +} +inline void SetToDefault::_internal_set_location(::PROTOBUF_NAMESPACE_ID::int32 value) { + + location_ = value; +} +inline void SetToDefault::set_location(::PROTOBUF_NAMESPACE_ID::int32 value) { + _internal_set_location(value); + // @@protoc_insertion_point(field_set:pg_query.SetToDefault.location) +} + +// ------------------------------------------------------------------- + +// CurrentOfExpr + +// .pg_query.Node xpr = 1 [json_name = "xpr"]; +inline bool CurrentOfExpr::_internal_has_xpr() const { + return this != internal_default_instance() && xpr_ != nullptr; +} +inline bool CurrentOfExpr::has_xpr() const { + return _internal_has_xpr(); +} +inline void CurrentOfExpr::clear_xpr() { + if (GetArena() == nullptr && xpr_ != nullptr) { + delete xpr_; + } + xpr_ = nullptr; +} +inline const ::pg_query::Node& CurrentOfExpr::_internal_xpr() const { + const ::pg_query::Node* p = xpr_; + return p != nullptr ? *p : reinterpret_cast( + ::pg_query::_Node_default_instance_); +} +inline const ::pg_query::Node& CurrentOfExpr::xpr() const { + // @@protoc_insertion_point(field_get:pg_query.CurrentOfExpr.xpr) + return _internal_xpr(); +} +inline void CurrentOfExpr::unsafe_arena_set_allocated_xpr( + ::pg_query::Node* xpr) { + if (GetArena() == nullptr) { + delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(xpr_); + } + xpr_ = xpr; + if (xpr) { + + } else { + + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.CurrentOfExpr.xpr) +} +inline ::pg_query::Node* CurrentOfExpr::release_xpr() { + + ::pg_query::Node* temp = xpr_; + xpr_ = nullptr; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + return temp; +} +inline ::pg_query::Node* CurrentOfExpr::unsafe_arena_release_xpr() { + // @@protoc_insertion_point(field_release:pg_query.CurrentOfExpr.xpr) + + ::pg_query::Node* temp = xpr_; + xpr_ = nullptr; + return temp; +} +inline ::pg_query::Node* CurrentOfExpr::_internal_mutable_xpr() { + + if (xpr_ == nullptr) { + auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); + xpr_ = p; + } + return xpr_; +} +inline ::pg_query::Node* CurrentOfExpr::mutable_xpr() { + // @@protoc_insertion_point(field_mutable:pg_query.CurrentOfExpr.xpr) + return _internal_mutable_xpr(); +} +inline void CurrentOfExpr::set_allocated_xpr(::pg_query::Node* xpr) { + ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); + if (message_arena == nullptr) { + delete xpr_; + } + if (xpr) { + ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = + ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(xpr); + if (message_arena != submessage_arena) { + xpr = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( + message_arena, xpr, submessage_arena); + } + + } else { + + } + xpr_ = xpr; + // @@protoc_insertion_point(field_set_allocated:pg_query.CurrentOfExpr.xpr) +} + +// uint32 cvarno = 2 [json_name = "cvarno"]; +inline void CurrentOfExpr::clear_cvarno() { + cvarno_ = 0u; +} +inline ::PROTOBUF_NAMESPACE_ID::uint32 CurrentOfExpr::_internal_cvarno() const { + return cvarno_; +} +inline ::PROTOBUF_NAMESPACE_ID::uint32 CurrentOfExpr::cvarno() const { + // @@protoc_insertion_point(field_get:pg_query.CurrentOfExpr.cvarno) + return _internal_cvarno(); +} +inline void CurrentOfExpr::_internal_set_cvarno(::PROTOBUF_NAMESPACE_ID::uint32 value) { + + cvarno_ = value; +} +inline void CurrentOfExpr::set_cvarno(::PROTOBUF_NAMESPACE_ID::uint32 value) { + _internal_set_cvarno(value); + // @@protoc_insertion_point(field_set:pg_query.CurrentOfExpr.cvarno) +} + +// string cursor_name = 3 [json_name = "cursor_name"]; +inline void CurrentOfExpr::clear_cursor_name() { + cursor_name_.ClearToEmpty(); +} +inline const std::string& CurrentOfExpr::cursor_name() const { + // @@protoc_insertion_point(field_get:pg_query.CurrentOfExpr.cursor_name) + return _internal_cursor_name(); +} +inline void CurrentOfExpr::set_cursor_name(const std::string& value) { + _internal_set_cursor_name(value); + // @@protoc_insertion_point(field_set:pg_query.CurrentOfExpr.cursor_name) +} +inline std::string* CurrentOfExpr::mutable_cursor_name() { + // @@protoc_insertion_point(field_mutable:pg_query.CurrentOfExpr.cursor_name) + return _internal_mutable_cursor_name(); +} +inline const std::string& CurrentOfExpr::_internal_cursor_name() const { + return cursor_name_.Get(); +} +inline void CurrentOfExpr::_internal_set_cursor_name(const std::string& value) { + + cursor_name_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArena()); +} +inline void CurrentOfExpr::set_cursor_name(std::string&& value) { + + cursor_name_.Set( + ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::move(value), GetArena()); + // @@protoc_insertion_point(field_set_rvalue:pg_query.CurrentOfExpr.cursor_name) +} +inline void CurrentOfExpr::set_cursor_name(const char* value) { + GOOGLE_DCHECK(value != nullptr); + + cursor_name_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string(value), GetArena()); + // @@protoc_insertion_point(field_set_char:pg_query.CurrentOfExpr.cursor_name) +} +inline void CurrentOfExpr::set_cursor_name(const char* value, + size_t size) { + + cursor_name_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string( + reinterpret_cast(value), size), GetArena()); + // @@protoc_insertion_point(field_set_pointer:pg_query.CurrentOfExpr.cursor_name) +} +inline std::string* CurrentOfExpr::_internal_mutable_cursor_name() { + + return cursor_name_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArena()); +} +inline std::string* CurrentOfExpr::release_cursor_name() { + // @@protoc_insertion_point(field_release:pg_query.CurrentOfExpr.cursor_name) + return cursor_name_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); +} +inline void CurrentOfExpr::set_allocated_cursor_name(std::string* cursor_name) { + if (cursor_name != nullptr) { + + } else { + + } + cursor_name_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), cursor_name, + GetArena()); + // @@protoc_insertion_point(field_set_allocated:pg_query.CurrentOfExpr.cursor_name) +} + +// int32 cursor_param = 4 [json_name = "cursor_param"]; +inline void CurrentOfExpr::clear_cursor_param() { + cursor_param_ = 0; +} +inline ::PROTOBUF_NAMESPACE_ID::int32 CurrentOfExpr::_internal_cursor_param() const { + return cursor_param_; +} +inline ::PROTOBUF_NAMESPACE_ID::int32 CurrentOfExpr::cursor_param() const { + // @@protoc_insertion_point(field_get:pg_query.CurrentOfExpr.cursor_param) + return _internal_cursor_param(); +} +inline void CurrentOfExpr::_internal_set_cursor_param(::PROTOBUF_NAMESPACE_ID::int32 value) { + + cursor_param_ = value; +} +inline void CurrentOfExpr::set_cursor_param(::PROTOBUF_NAMESPACE_ID::int32 value) { + _internal_set_cursor_param(value); + // @@protoc_insertion_point(field_set:pg_query.CurrentOfExpr.cursor_param) +} + +// ------------------------------------------------------------------- + +// NextValueExpr + +// .pg_query.Node xpr = 1 [json_name = "xpr"]; +inline bool NextValueExpr::_internal_has_xpr() const { + return this != internal_default_instance() && xpr_ != nullptr; +} +inline bool NextValueExpr::has_xpr() const { + return _internal_has_xpr(); +} +inline void NextValueExpr::clear_xpr() { + if (GetArena() == nullptr && xpr_ != nullptr) { + delete xpr_; + } + xpr_ = nullptr; +} +inline const ::pg_query::Node& NextValueExpr::_internal_xpr() const { + const ::pg_query::Node* p = xpr_; + return p != nullptr ? *p : reinterpret_cast( + ::pg_query::_Node_default_instance_); +} +inline const ::pg_query::Node& NextValueExpr::xpr() const { + // @@protoc_insertion_point(field_get:pg_query.NextValueExpr.xpr) + return _internal_xpr(); +} +inline void NextValueExpr::unsafe_arena_set_allocated_xpr( + ::pg_query::Node* xpr) { + if (GetArena() == nullptr) { + delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(xpr_); + } + xpr_ = xpr; + if (xpr) { + + } else { + + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.NextValueExpr.xpr) +} +inline ::pg_query::Node* NextValueExpr::release_xpr() { + + ::pg_query::Node* temp = xpr_; + xpr_ = nullptr; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + return temp; +} +inline ::pg_query::Node* NextValueExpr::unsafe_arena_release_xpr() { + // @@protoc_insertion_point(field_release:pg_query.NextValueExpr.xpr) + + ::pg_query::Node* temp = xpr_; + xpr_ = nullptr; + return temp; +} +inline ::pg_query::Node* NextValueExpr::_internal_mutable_xpr() { + + if (xpr_ == nullptr) { + auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); + xpr_ = p; + } + return xpr_; +} +inline ::pg_query::Node* NextValueExpr::mutable_xpr() { + // @@protoc_insertion_point(field_mutable:pg_query.NextValueExpr.xpr) + return _internal_mutable_xpr(); +} +inline void NextValueExpr::set_allocated_xpr(::pg_query::Node* xpr) { + ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); + if (message_arena == nullptr) { + delete xpr_; + } + if (xpr) { + ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = + ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(xpr); + if (message_arena != submessage_arena) { + xpr = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( + message_arena, xpr, submessage_arena); + } + + } else { + + } + xpr_ = xpr; + // @@protoc_insertion_point(field_set_allocated:pg_query.NextValueExpr.xpr) +} + +// uint32 seqid = 2 [json_name = "seqid"]; +inline void NextValueExpr::clear_seqid() { + seqid_ = 0u; +} +inline ::PROTOBUF_NAMESPACE_ID::uint32 NextValueExpr::_internal_seqid() const { + return seqid_; +} +inline ::PROTOBUF_NAMESPACE_ID::uint32 NextValueExpr::seqid() const { + // @@protoc_insertion_point(field_get:pg_query.NextValueExpr.seqid) + return _internal_seqid(); +} +inline void NextValueExpr::_internal_set_seqid(::PROTOBUF_NAMESPACE_ID::uint32 value) { + + seqid_ = value; +} +inline void NextValueExpr::set_seqid(::PROTOBUF_NAMESPACE_ID::uint32 value) { + _internal_set_seqid(value); + // @@protoc_insertion_point(field_set:pg_query.NextValueExpr.seqid) +} + +// uint32 type_id = 3 [json_name = "typeId"]; +inline void NextValueExpr::clear_type_id() { + type_id_ = 0u; +} +inline ::PROTOBUF_NAMESPACE_ID::uint32 NextValueExpr::_internal_type_id() const { + return type_id_; +} +inline ::PROTOBUF_NAMESPACE_ID::uint32 NextValueExpr::type_id() const { + // @@protoc_insertion_point(field_get:pg_query.NextValueExpr.type_id) + return _internal_type_id(); +} +inline void NextValueExpr::_internal_set_type_id(::PROTOBUF_NAMESPACE_ID::uint32 value) { + + type_id_ = value; +} +inline void NextValueExpr::set_type_id(::PROTOBUF_NAMESPACE_ID::uint32 value) { + _internal_set_type_id(value); + // @@protoc_insertion_point(field_set:pg_query.NextValueExpr.type_id) +} + +// ------------------------------------------------------------------- + +// InferenceElem + +// .pg_query.Node xpr = 1 [json_name = "xpr"]; +inline bool InferenceElem::_internal_has_xpr() const { + return this != internal_default_instance() && xpr_ != nullptr; +} +inline bool InferenceElem::has_xpr() const { + return _internal_has_xpr(); +} +inline void InferenceElem::clear_xpr() { + if (GetArena() == nullptr && xpr_ != nullptr) { + delete xpr_; + } + xpr_ = nullptr; +} +inline const ::pg_query::Node& InferenceElem::_internal_xpr() const { + const ::pg_query::Node* p = xpr_; + return p != nullptr ? *p : reinterpret_cast( + ::pg_query::_Node_default_instance_); +} +inline const ::pg_query::Node& InferenceElem::xpr() const { + // @@protoc_insertion_point(field_get:pg_query.InferenceElem.xpr) + return _internal_xpr(); +} +inline void InferenceElem::unsafe_arena_set_allocated_xpr( + ::pg_query::Node* xpr) { + if (GetArena() == nullptr) { + delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(xpr_); + } + xpr_ = xpr; + if (xpr) { + + } else { + + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.InferenceElem.xpr) +} +inline ::pg_query::Node* InferenceElem::release_xpr() { + + ::pg_query::Node* temp = xpr_; + xpr_ = nullptr; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + return temp; +} +inline ::pg_query::Node* InferenceElem::unsafe_arena_release_xpr() { + // @@protoc_insertion_point(field_release:pg_query.InferenceElem.xpr) + + ::pg_query::Node* temp = xpr_; + xpr_ = nullptr; + return temp; +} +inline ::pg_query::Node* InferenceElem::_internal_mutable_xpr() { + + if (xpr_ == nullptr) { + auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); + xpr_ = p; + } + return xpr_; +} +inline ::pg_query::Node* InferenceElem::mutable_xpr() { + // @@protoc_insertion_point(field_mutable:pg_query.InferenceElem.xpr) + return _internal_mutable_xpr(); +} +inline void InferenceElem::set_allocated_xpr(::pg_query::Node* xpr) { + ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); + if (message_arena == nullptr) { + delete xpr_; + } + if (xpr) { + ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = + ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(xpr); + if (message_arena != submessage_arena) { + xpr = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( + message_arena, xpr, submessage_arena); + } + + } else { + + } + xpr_ = xpr; + // @@protoc_insertion_point(field_set_allocated:pg_query.InferenceElem.xpr) +} + +// .pg_query.Node expr = 2 [json_name = "expr"]; +inline bool InferenceElem::_internal_has_expr() const { + return this != internal_default_instance() && expr_ != nullptr; +} +inline bool InferenceElem::has_expr() const { + return _internal_has_expr(); +} +inline void InferenceElem::clear_expr() { + if (GetArena() == nullptr && expr_ != nullptr) { + delete expr_; + } + expr_ = nullptr; +} +inline const ::pg_query::Node& InferenceElem::_internal_expr() const { + const ::pg_query::Node* p = expr_; + return p != nullptr ? *p : reinterpret_cast( + ::pg_query::_Node_default_instance_); +} +inline const ::pg_query::Node& InferenceElem::expr() const { + // @@protoc_insertion_point(field_get:pg_query.InferenceElem.expr) + return _internal_expr(); +} +inline void InferenceElem::unsafe_arena_set_allocated_expr( + ::pg_query::Node* expr) { + if (GetArena() == nullptr) { + delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(expr_); + } + expr_ = expr; + if (expr) { + + } else { + + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.InferenceElem.expr) +} +inline ::pg_query::Node* InferenceElem::release_expr() { + + ::pg_query::Node* temp = expr_; + expr_ = nullptr; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + return temp; +} +inline ::pg_query::Node* InferenceElem::unsafe_arena_release_expr() { + // @@protoc_insertion_point(field_release:pg_query.InferenceElem.expr) + + ::pg_query::Node* temp = expr_; + expr_ = nullptr; + return temp; +} +inline ::pg_query::Node* InferenceElem::_internal_mutable_expr() { + + if (expr_ == nullptr) { + auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); + expr_ = p; + } + return expr_; +} +inline ::pg_query::Node* InferenceElem::mutable_expr() { + // @@protoc_insertion_point(field_mutable:pg_query.InferenceElem.expr) + return _internal_mutable_expr(); +} +inline void InferenceElem::set_allocated_expr(::pg_query::Node* expr) { + ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); + if (message_arena == nullptr) { + delete expr_; + } + if (expr) { + ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = + ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(expr); + if (message_arena != submessage_arena) { + expr = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( + message_arena, expr, submessage_arena); + } + + } else { + + } + expr_ = expr; + // @@protoc_insertion_point(field_set_allocated:pg_query.InferenceElem.expr) +} + +// uint32 infercollid = 3 [json_name = "infercollid"]; +inline void InferenceElem::clear_infercollid() { + infercollid_ = 0u; +} +inline ::PROTOBUF_NAMESPACE_ID::uint32 InferenceElem::_internal_infercollid() const { + return infercollid_; +} +inline ::PROTOBUF_NAMESPACE_ID::uint32 InferenceElem::infercollid() const { + // @@protoc_insertion_point(field_get:pg_query.InferenceElem.infercollid) + return _internal_infercollid(); +} +inline void InferenceElem::_internal_set_infercollid(::PROTOBUF_NAMESPACE_ID::uint32 value) { + + infercollid_ = value; +} +inline void InferenceElem::set_infercollid(::PROTOBUF_NAMESPACE_ID::uint32 value) { + _internal_set_infercollid(value); + // @@protoc_insertion_point(field_set:pg_query.InferenceElem.infercollid) +} + +// uint32 inferopclass = 4 [json_name = "inferopclass"]; +inline void InferenceElem::clear_inferopclass() { + inferopclass_ = 0u; +} +inline ::PROTOBUF_NAMESPACE_ID::uint32 InferenceElem::_internal_inferopclass() const { + return inferopclass_; +} +inline ::PROTOBUF_NAMESPACE_ID::uint32 InferenceElem::inferopclass() const { + // @@protoc_insertion_point(field_get:pg_query.InferenceElem.inferopclass) + return _internal_inferopclass(); +} +inline void InferenceElem::_internal_set_inferopclass(::PROTOBUF_NAMESPACE_ID::uint32 value) { + + inferopclass_ = value; +} +inline void InferenceElem::set_inferopclass(::PROTOBUF_NAMESPACE_ID::uint32 value) { + _internal_set_inferopclass(value); + // @@protoc_insertion_point(field_set:pg_query.InferenceElem.inferopclass) +} + +// ------------------------------------------------------------------- + +// TargetEntry + +// .pg_query.Node xpr = 1 [json_name = "xpr"]; +inline bool TargetEntry::_internal_has_xpr() const { + return this != internal_default_instance() && xpr_ != nullptr; +} +inline bool TargetEntry::has_xpr() const { + return _internal_has_xpr(); +} +inline void TargetEntry::clear_xpr() { + if (GetArena() == nullptr && xpr_ != nullptr) { + delete xpr_; + } + xpr_ = nullptr; +} +inline const ::pg_query::Node& TargetEntry::_internal_xpr() const { + const ::pg_query::Node* p = xpr_; + return p != nullptr ? *p : reinterpret_cast( + ::pg_query::_Node_default_instance_); +} +inline const ::pg_query::Node& TargetEntry::xpr() const { + // @@protoc_insertion_point(field_get:pg_query.TargetEntry.xpr) + return _internal_xpr(); +} +inline void TargetEntry::unsafe_arena_set_allocated_xpr( + ::pg_query::Node* xpr) { + if (GetArena() == nullptr) { + delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(xpr_); + } + xpr_ = xpr; + if (xpr) { + + } else { + + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.TargetEntry.xpr) +} +inline ::pg_query::Node* TargetEntry::release_xpr() { + + ::pg_query::Node* temp = xpr_; + xpr_ = nullptr; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + return temp; +} +inline ::pg_query::Node* TargetEntry::unsafe_arena_release_xpr() { + // @@protoc_insertion_point(field_release:pg_query.TargetEntry.xpr) + + ::pg_query::Node* temp = xpr_; + xpr_ = nullptr; + return temp; +} +inline ::pg_query::Node* TargetEntry::_internal_mutable_xpr() { + + if (xpr_ == nullptr) { + auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); + xpr_ = p; + } + return xpr_; +} +inline ::pg_query::Node* TargetEntry::mutable_xpr() { + // @@protoc_insertion_point(field_mutable:pg_query.TargetEntry.xpr) + return _internal_mutable_xpr(); +} +inline void TargetEntry::set_allocated_xpr(::pg_query::Node* xpr) { + ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); + if (message_arena == nullptr) { + delete xpr_; + } + if (xpr) { + ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = + ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(xpr); + if (message_arena != submessage_arena) { + xpr = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( + message_arena, xpr, submessage_arena); + } + + } else { + + } + xpr_ = xpr; + // @@protoc_insertion_point(field_set_allocated:pg_query.TargetEntry.xpr) +} + +// .pg_query.Node expr = 2 [json_name = "expr"]; +inline bool TargetEntry::_internal_has_expr() const { + return this != internal_default_instance() && expr_ != nullptr; +} +inline bool TargetEntry::has_expr() const { + return _internal_has_expr(); +} +inline void TargetEntry::clear_expr() { + if (GetArena() == nullptr && expr_ != nullptr) { + delete expr_; + } + expr_ = nullptr; +} +inline const ::pg_query::Node& TargetEntry::_internal_expr() const { + const ::pg_query::Node* p = expr_; + return p != nullptr ? *p : reinterpret_cast( + ::pg_query::_Node_default_instance_); +} +inline const ::pg_query::Node& TargetEntry::expr() const { + // @@protoc_insertion_point(field_get:pg_query.TargetEntry.expr) + return _internal_expr(); +} +inline void TargetEntry::unsafe_arena_set_allocated_expr( + ::pg_query::Node* expr) { + if (GetArena() == nullptr) { + delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(expr_); + } + expr_ = expr; + if (expr) { + + } else { + + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.TargetEntry.expr) +} +inline ::pg_query::Node* TargetEntry::release_expr() { + + ::pg_query::Node* temp = expr_; + expr_ = nullptr; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + return temp; +} +inline ::pg_query::Node* TargetEntry::unsafe_arena_release_expr() { + // @@protoc_insertion_point(field_release:pg_query.TargetEntry.expr) + + ::pg_query::Node* temp = expr_; + expr_ = nullptr; + return temp; +} +inline ::pg_query::Node* TargetEntry::_internal_mutable_expr() { + + if (expr_ == nullptr) { + auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); + expr_ = p; + } + return expr_; +} +inline ::pg_query::Node* TargetEntry::mutable_expr() { + // @@protoc_insertion_point(field_mutable:pg_query.TargetEntry.expr) + return _internal_mutable_expr(); +} +inline void TargetEntry::set_allocated_expr(::pg_query::Node* expr) { + ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); + if (message_arena == nullptr) { + delete expr_; + } + if (expr) { + ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = + ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(expr); + if (message_arena != submessage_arena) { + expr = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( + message_arena, expr, submessage_arena); + } + + } else { + + } + expr_ = expr; + // @@protoc_insertion_point(field_set_allocated:pg_query.TargetEntry.expr) +} + +// int32 resno = 3 [json_name = "resno"]; +inline void TargetEntry::clear_resno() { + resno_ = 0; +} +inline ::PROTOBUF_NAMESPACE_ID::int32 TargetEntry::_internal_resno() const { + return resno_; +} +inline ::PROTOBUF_NAMESPACE_ID::int32 TargetEntry::resno() const { + // @@protoc_insertion_point(field_get:pg_query.TargetEntry.resno) + return _internal_resno(); +} +inline void TargetEntry::_internal_set_resno(::PROTOBUF_NAMESPACE_ID::int32 value) { + + resno_ = value; +} +inline void TargetEntry::set_resno(::PROTOBUF_NAMESPACE_ID::int32 value) { + _internal_set_resno(value); + // @@protoc_insertion_point(field_set:pg_query.TargetEntry.resno) +} + +// string resname = 4 [json_name = "resname"]; +inline void TargetEntry::clear_resname() { + resname_.ClearToEmpty(); +} +inline const std::string& TargetEntry::resname() const { + // @@protoc_insertion_point(field_get:pg_query.TargetEntry.resname) + return _internal_resname(); +} +inline void TargetEntry::set_resname(const std::string& value) { + _internal_set_resname(value); + // @@protoc_insertion_point(field_set:pg_query.TargetEntry.resname) +} +inline std::string* TargetEntry::mutable_resname() { + // @@protoc_insertion_point(field_mutable:pg_query.TargetEntry.resname) + return _internal_mutable_resname(); +} +inline const std::string& TargetEntry::_internal_resname() const { + return resname_.Get(); +} +inline void TargetEntry::_internal_set_resname(const std::string& value) { + + resname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArena()); +} +inline void TargetEntry::set_resname(std::string&& value) { + + resname_.Set( + ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::move(value), GetArena()); + // @@protoc_insertion_point(field_set_rvalue:pg_query.TargetEntry.resname) +} +inline void TargetEntry::set_resname(const char* value) { + GOOGLE_DCHECK(value != nullptr); + + resname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string(value), GetArena()); + // @@protoc_insertion_point(field_set_char:pg_query.TargetEntry.resname) +} +inline void TargetEntry::set_resname(const char* value, + size_t size) { + + resname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string( + reinterpret_cast(value), size), GetArena()); + // @@protoc_insertion_point(field_set_pointer:pg_query.TargetEntry.resname) +} +inline std::string* TargetEntry::_internal_mutable_resname() { + + return resname_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArena()); +} +inline std::string* TargetEntry::release_resname() { + // @@protoc_insertion_point(field_release:pg_query.TargetEntry.resname) + return resname_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); +} +inline void TargetEntry::set_allocated_resname(std::string* resname) { + if (resname != nullptr) { + + } else { + + } + resname_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), resname, + GetArena()); + // @@protoc_insertion_point(field_set_allocated:pg_query.TargetEntry.resname) +} + +// uint32 ressortgroupref = 5 [json_name = "ressortgroupref"]; +inline void TargetEntry::clear_ressortgroupref() { + ressortgroupref_ = 0u; +} +inline ::PROTOBUF_NAMESPACE_ID::uint32 TargetEntry::_internal_ressortgroupref() const { + return ressortgroupref_; +} +inline ::PROTOBUF_NAMESPACE_ID::uint32 TargetEntry::ressortgroupref() const { + // @@protoc_insertion_point(field_get:pg_query.TargetEntry.ressortgroupref) + return _internal_ressortgroupref(); +} +inline void TargetEntry::_internal_set_ressortgroupref(::PROTOBUF_NAMESPACE_ID::uint32 value) { + + ressortgroupref_ = value; +} +inline void TargetEntry::set_ressortgroupref(::PROTOBUF_NAMESPACE_ID::uint32 value) { + _internal_set_ressortgroupref(value); + // @@protoc_insertion_point(field_set:pg_query.TargetEntry.ressortgroupref) +} + +// uint32 resorigtbl = 6 [json_name = "resorigtbl"]; +inline void TargetEntry::clear_resorigtbl() { + resorigtbl_ = 0u; +} +inline ::PROTOBUF_NAMESPACE_ID::uint32 TargetEntry::_internal_resorigtbl() const { + return resorigtbl_; +} +inline ::PROTOBUF_NAMESPACE_ID::uint32 TargetEntry::resorigtbl() const { + // @@protoc_insertion_point(field_get:pg_query.TargetEntry.resorigtbl) + return _internal_resorigtbl(); +} +inline void TargetEntry::_internal_set_resorigtbl(::PROTOBUF_NAMESPACE_ID::uint32 value) { + + resorigtbl_ = value; +} +inline void TargetEntry::set_resorigtbl(::PROTOBUF_NAMESPACE_ID::uint32 value) { + _internal_set_resorigtbl(value); + // @@protoc_insertion_point(field_set:pg_query.TargetEntry.resorigtbl) +} + +// int32 resorigcol = 7 [json_name = "resorigcol"]; +inline void TargetEntry::clear_resorigcol() { + resorigcol_ = 0; +} +inline ::PROTOBUF_NAMESPACE_ID::int32 TargetEntry::_internal_resorigcol() const { + return resorigcol_; +} +inline ::PROTOBUF_NAMESPACE_ID::int32 TargetEntry::resorigcol() const { + // @@protoc_insertion_point(field_get:pg_query.TargetEntry.resorigcol) + return _internal_resorigcol(); +} +inline void TargetEntry::_internal_set_resorigcol(::PROTOBUF_NAMESPACE_ID::int32 value) { + + resorigcol_ = value; +} +inline void TargetEntry::set_resorigcol(::PROTOBUF_NAMESPACE_ID::int32 value) { + _internal_set_resorigcol(value); + // @@protoc_insertion_point(field_set:pg_query.TargetEntry.resorigcol) +} + +// bool resjunk = 8 [json_name = "resjunk"]; +inline void TargetEntry::clear_resjunk() { + resjunk_ = false; +} +inline bool TargetEntry::_internal_resjunk() const { + return resjunk_; +} +inline bool TargetEntry::resjunk() const { + // @@protoc_insertion_point(field_get:pg_query.TargetEntry.resjunk) + return _internal_resjunk(); +} +inline void TargetEntry::_internal_set_resjunk(bool value) { + + resjunk_ = value; +} +inline void TargetEntry::set_resjunk(bool value) { + _internal_set_resjunk(value); + // @@protoc_insertion_point(field_set:pg_query.TargetEntry.resjunk) +} + +// ------------------------------------------------------------------- + +// RangeTblRef + +// int32 rtindex = 1 [json_name = "rtindex"]; +inline void RangeTblRef::clear_rtindex() { + rtindex_ = 0; +} +inline ::PROTOBUF_NAMESPACE_ID::int32 RangeTblRef::_internal_rtindex() const { + return rtindex_; +} +inline ::PROTOBUF_NAMESPACE_ID::int32 RangeTblRef::rtindex() const { + // @@protoc_insertion_point(field_get:pg_query.RangeTblRef.rtindex) + return _internal_rtindex(); +} +inline void RangeTblRef::_internal_set_rtindex(::PROTOBUF_NAMESPACE_ID::int32 value) { + + rtindex_ = value; +} +inline void RangeTblRef::set_rtindex(::PROTOBUF_NAMESPACE_ID::int32 value) { + _internal_set_rtindex(value); + // @@protoc_insertion_point(field_set:pg_query.RangeTblRef.rtindex) +} + +// ------------------------------------------------------------------- + +// JoinExpr + +// .pg_query.JoinType jointype = 1 [json_name = "jointype"]; +inline void JoinExpr::clear_jointype() { + jointype_ = 0; +} +inline ::pg_query::JoinType JoinExpr::_internal_jointype() const { + return static_cast< ::pg_query::JoinType >(jointype_); +} +inline ::pg_query::JoinType JoinExpr::jointype() const { + // @@protoc_insertion_point(field_get:pg_query.JoinExpr.jointype) + return _internal_jointype(); +} +inline void JoinExpr::_internal_set_jointype(::pg_query::JoinType value) { + + jointype_ = value; +} +inline void JoinExpr::set_jointype(::pg_query::JoinType value) { + _internal_set_jointype(value); + // @@protoc_insertion_point(field_set:pg_query.JoinExpr.jointype) +} + +// bool is_natural = 2 [json_name = "isNatural"]; +inline void JoinExpr::clear_is_natural() { + is_natural_ = false; +} +inline bool JoinExpr::_internal_is_natural() const { + return is_natural_; +} +inline bool JoinExpr::is_natural() const { + // @@protoc_insertion_point(field_get:pg_query.JoinExpr.is_natural) + return _internal_is_natural(); +} +inline void JoinExpr::_internal_set_is_natural(bool value) { + + is_natural_ = value; +} +inline void JoinExpr::set_is_natural(bool value) { + _internal_set_is_natural(value); + // @@protoc_insertion_point(field_set:pg_query.JoinExpr.is_natural) +} + +// .pg_query.Node larg = 3 [json_name = "larg"]; +inline bool JoinExpr::_internal_has_larg() const { + return this != internal_default_instance() && larg_ != nullptr; +} +inline bool JoinExpr::has_larg() const { + return _internal_has_larg(); +} +inline void JoinExpr::clear_larg() { + if (GetArena() == nullptr && larg_ != nullptr) { + delete larg_; + } + larg_ = nullptr; +} +inline const ::pg_query::Node& JoinExpr::_internal_larg() const { + const ::pg_query::Node* p = larg_; + return p != nullptr ? *p : reinterpret_cast( + ::pg_query::_Node_default_instance_); +} +inline const ::pg_query::Node& JoinExpr::larg() const { + // @@protoc_insertion_point(field_get:pg_query.JoinExpr.larg) + return _internal_larg(); +} +inline void JoinExpr::unsafe_arena_set_allocated_larg( + ::pg_query::Node* larg) { + if (GetArena() == nullptr) { + delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(larg_); + } + larg_ = larg; + if (larg) { + + } else { + + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.JoinExpr.larg) +} +inline ::pg_query::Node* JoinExpr::release_larg() { + + ::pg_query::Node* temp = larg_; + larg_ = nullptr; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + return temp; +} +inline ::pg_query::Node* JoinExpr::unsafe_arena_release_larg() { + // @@protoc_insertion_point(field_release:pg_query.JoinExpr.larg) + + ::pg_query::Node* temp = larg_; + larg_ = nullptr; + return temp; +} +inline ::pg_query::Node* JoinExpr::_internal_mutable_larg() { + + if (larg_ == nullptr) { + auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); + larg_ = p; + } + return larg_; +} +inline ::pg_query::Node* JoinExpr::mutable_larg() { + // @@protoc_insertion_point(field_mutable:pg_query.JoinExpr.larg) + return _internal_mutable_larg(); +} +inline void JoinExpr::set_allocated_larg(::pg_query::Node* larg) { + ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); + if (message_arena == nullptr) { + delete larg_; + } + if (larg) { + ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = + ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(larg); + if (message_arena != submessage_arena) { + larg = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( + message_arena, larg, submessage_arena); + } + + } else { + + } + larg_ = larg; + // @@protoc_insertion_point(field_set_allocated:pg_query.JoinExpr.larg) +} + +// .pg_query.Node rarg = 4 [json_name = "rarg"]; +inline bool JoinExpr::_internal_has_rarg() const { + return this != internal_default_instance() && rarg_ != nullptr; +} +inline bool JoinExpr::has_rarg() const { + return _internal_has_rarg(); +} +inline void JoinExpr::clear_rarg() { + if (GetArena() == nullptr && rarg_ != nullptr) { + delete rarg_; + } + rarg_ = nullptr; +} +inline const ::pg_query::Node& JoinExpr::_internal_rarg() const { + const ::pg_query::Node* p = rarg_; + return p != nullptr ? *p : reinterpret_cast( + ::pg_query::_Node_default_instance_); +} +inline const ::pg_query::Node& JoinExpr::rarg() const { + // @@protoc_insertion_point(field_get:pg_query.JoinExpr.rarg) + return _internal_rarg(); +} +inline void JoinExpr::unsafe_arena_set_allocated_rarg( + ::pg_query::Node* rarg) { + if (GetArena() == nullptr) { + delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(rarg_); + } + rarg_ = rarg; + if (rarg) { + + } else { + + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.JoinExpr.rarg) +} +inline ::pg_query::Node* JoinExpr::release_rarg() { + + ::pg_query::Node* temp = rarg_; + rarg_ = nullptr; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + return temp; +} +inline ::pg_query::Node* JoinExpr::unsafe_arena_release_rarg() { + // @@protoc_insertion_point(field_release:pg_query.JoinExpr.rarg) + + ::pg_query::Node* temp = rarg_; + rarg_ = nullptr; + return temp; +} +inline ::pg_query::Node* JoinExpr::_internal_mutable_rarg() { + + if (rarg_ == nullptr) { + auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); + rarg_ = p; + } + return rarg_; +} +inline ::pg_query::Node* JoinExpr::mutable_rarg() { + // @@protoc_insertion_point(field_mutable:pg_query.JoinExpr.rarg) + return _internal_mutable_rarg(); +} +inline void JoinExpr::set_allocated_rarg(::pg_query::Node* rarg) { + ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); + if (message_arena == nullptr) { + delete rarg_; + } + if (rarg) { + ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = + ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(rarg); + if (message_arena != submessage_arena) { + rarg = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( + message_arena, rarg, submessage_arena); + } + + } else { + + } + rarg_ = rarg; + // @@protoc_insertion_point(field_set_allocated:pg_query.JoinExpr.rarg) +} + +// repeated .pg_query.Node using_clause = 5 [json_name = "usingClause"]; +inline int JoinExpr::_internal_using_clause_size() const { + return using_clause_.size(); +} +inline int JoinExpr::using_clause_size() const { + return _internal_using_clause_size(); +} +inline void JoinExpr::clear_using_clause() { + using_clause_.Clear(); +} +inline ::pg_query::Node* JoinExpr::mutable_using_clause(int index) { + // @@protoc_insertion_point(field_mutable:pg_query.JoinExpr.using_clause) + return using_clause_.Mutable(index); +} +inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* +JoinExpr::mutable_using_clause() { + // @@protoc_insertion_point(field_mutable_list:pg_query.JoinExpr.using_clause) + return &using_clause_; +} +inline const ::pg_query::Node& JoinExpr::_internal_using_clause(int index) const { + return using_clause_.Get(index); +} +inline const ::pg_query::Node& JoinExpr::using_clause(int index) const { + // @@protoc_insertion_point(field_get:pg_query.JoinExpr.using_clause) + return _internal_using_clause(index); +} +inline ::pg_query::Node* JoinExpr::_internal_add_using_clause() { + return using_clause_.Add(); +} +inline ::pg_query::Node* JoinExpr::add_using_clause() { + // @@protoc_insertion_point(field_add:pg_query.JoinExpr.using_clause) + return _internal_add_using_clause(); +} +inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& +JoinExpr::using_clause() const { + // @@protoc_insertion_point(field_list:pg_query.JoinExpr.using_clause) + return using_clause_; +} + +// .pg_query.Node quals = 6 [json_name = "quals"]; +inline bool JoinExpr::_internal_has_quals() const { + return this != internal_default_instance() && quals_ != nullptr; +} +inline bool JoinExpr::has_quals() const { + return _internal_has_quals(); +} +inline void JoinExpr::clear_quals() { + if (GetArena() == nullptr && quals_ != nullptr) { + delete quals_; + } + quals_ = nullptr; +} +inline const ::pg_query::Node& JoinExpr::_internal_quals() const { + const ::pg_query::Node* p = quals_; + return p != nullptr ? *p : reinterpret_cast( + ::pg_query::_Node_default_instance_); +} +inline const ::pg_query::Node& JoinExpr::quals() const { + // @@protoc_insertion_point(field_get:pg_query.JoinExpr.quals) + return _internal_quals(); +} +inline void JoinExpr::unsafe_arena_set_allocated_quals( + ::pg_query::Node* quals) { + if (GetArena() == nullptr) { + delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(quals_); + } + quals_ = quals; + if (quals) { + + } else { + + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.JoinExpr.quals) +} +inline ::pg_query::Node* JoinExpr::release_quals() { + + ::pg_query::Node* temp = quals_; + quals_ = nullptr; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + return temp; +} +inline ::pg_query::Node* JoinExpr::unsafe_arena_release_quals() { + // @@protoc_insertion_point(field_release:pg_query.JoinExpr.quals) + + ::pg_query::Node* temp = quals_; + quals_ = nullptr; + return temp; +} +inline ::pg_query::Node* JoinExpr::_internal_mutable_quals() { + + if (quals_ == nullptr) { + auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); + quals_ = p; + } + return quals_; +} +inline ::pg_query::Node* JoinExpr::mutable_quals() { + // @@protoc_insertion_point(field_mutable:pg_query.JoinExpr.quals) + return _internal_mutable_quals(); +} +inline void JoinExpr::set_allocated_quals(::pg_query::Node* quals) { + ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); + if (message_arena == nullptr) { + delete quals_; + } + if (quals) { + ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = + ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(quals); + if (message_arena != submessage_arena) { + quals = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( + message_arena, quals, submessage_arena); + } + + } else { + + } + quals_ = quals; + // @@protoc_insertion_point(field_set_allocated:pg_query.JoinExpr.quals) +} + +// .pg_query.Alias alias = 7 [json_name = "alias"]; +inline bool JoinExpr::_internal_has_alias() const { + return this != internal_default_instance() && alias_ != nullptr; +} +inline bool JoinExpr::has_alias() const { + return _internal_has_alias(); +} +inline void JoinExpr::clear_alias() { + if (GetArena() == nullptr && alias_ != nullptr) { + delete alias_; + } + alias_ = nullptr; +} +inline const ::pg_query::Alias& JoinExpr::_internal_alias() const { + const ::pg_query::Alias* p = alias_; + return p != nullptr ? *p : reinterpret_cast( + ::pg_query::_Alias_default_instance_); +} +inline const ::pg_query::Alias& JoinExpr::alias() const { + // @@protoc_insertion_point(field_get:pg_query.JoinExpr.alias) + return _internal_alias(); +} +inline void JoinExpr::unsafe_arena_set_allocated_alias( + ::pg_query::Alias* alias) { + if (GetArena() == nullptr) { + delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(alias_); + } + alias_ = alias; + if (alias) { + + } else { + + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.JoinExpr.alias) +} +inline ::pg_query::Alias* JoinExpr::release_alias() { + + ::pg_query::Alias* temp = alias_; + alias_ = nullptr; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + return temp; +} +inline ::pg_query::Alias* JoinExpr::unsafe_arena_release_alias() { + // @@protoc_insertion_point(field_release:pg_query.JoinExpr.alias) + + ::pg_query::Alias* temp = alias_; + alias_ = nullptr; + return temp; +} +inline ::pg_query::Alias* JoinExpr::_internal_mutable_alias() { + + if (alias_ == nullptr) { + auto* p = CreateMaybeMessage<::pg_query::Alias>(GetArena()); + alias_ = p; + } + return alias_; +} +inline ::pg_query::Alias* JoinExpr::mutable_alias() { + // @@protoc_insertion_point(field_mutable:pg_query.JoinExpr.alias) + return _internal_mutable_alias(); +} +inline void JoinExpr::set_allocated_alias(::pg_query::Alias* alias) { + ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); + if (message_arena == nullptr) { + delete alias_; + } + if (alias) { + ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = + ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(alias); + if (message_arena != submessage_arena) { + alias = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( + message_arena, alias, submessage_arena); + } + + } else { + + } + alias_ = alias; + // @@protoc_insertion_point(field_set_allocated:pg_query.JoinExpr.alias) +} + +// int32 rtindex = 8 [json_name = "rtindex"]; +inline void JoinExpr::clear_rtindex() { + rtindex_ = 0; +} +inline ::PROTOBUF_NAMESPACE_ID::int32 JoinExpr::_internal_rtindex() const { + return rtindex_; +} +inline ::PROTOBUF_NAMESPACE_ID::int32 JoinExpr::rtindex() const { + // @@protoc_insertion_point(field_get:pg_query.JoinExpr.rtindex) + return _internal_rtindex(); +} +inline void JoinExpr::_internal_set_rtindex(::PROTOBUF_NAMESPACE_ID::int32 value) { + + rtindex_ = value; +} +inline void JoinExpr::set_rtindex(::PROTOBUF_NAMESPACE_ID::int32 value) { + _internal_set_rtindex(value); + // @@protoc_insertion_point(field_set:pg_query.JoinExpr.rtindex) +} + +// ------------------------------------------------------------------- + +// FromExpr + +// repeated .pg_query.Node fromlist = 1 [json_name = "fromlist"]; +inline int FromExpr::_internal_fromlist_size() const { + return fromlist_.size(); +} +inline int FromExpr::fromlist_size() const { + return _internal_fromlist_size(); +} +inline void FromExpr::clear_fromlist() { + fromlist_.Clear(); +} +inline ::pg_query::Node* FromExpr::mutable_fromlist(int index) { + // @@protoc_insertion_point(field_mutable:pg_query.FromExpr.fromlist) + return fromlist_.Mutable(index); +} +inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* +FromExpr::mutable_fromlist() { + // @@protoc_insertion_point(field_mutable_list:pg_query.FromExpr.fromlist) + return &fromlist_; +} +inline const ::pg_query::Node& FromExpr::_internal_fromlist(int index) const { + return fromlist_.Get(index); +} +inline const ::pg_query::Node& FromExpr::fromlist(int index) const { + // @@protoc_insertion_point(field_get:pg_query.FromExpr.fromlist) + return _internal_fromlist(index); +} +inline ::pg_query::Node* FromExpr::_internal_add_fromlist() { + return fromlist_.Add(); +} +inline ::pg_query::Node* FromExpr::add_fromlist() { + // @@protoc_insertion_point(field_add:pg_query.FromExpr.fromlist) + return _internal_add_fromlist(); +} +inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& +FromExpr::fromlist() const { + // @@protoc_insertion_point(field_list:pg_query.FromExpr.fromlist) + return fromlist_; +} + +// .pg_query.Node quals = 2 [json_name = "quals"]; +inline bool FromExpr::_internal_has_quals() const { + return this != internal_default_instance() && quals_ != nullptr; +} +inline bool FromExpr::has_quals() const { + return _internal_has_quals(); +} +inline void FromExpr::clear_quals() { + if (GetArena() == nullptr && quals_ != nullptr) { + delete quals_; + } + quals_ = nullptr; +} +inline const ::pg_query::Node& FromExpr::_internal_quals() const { + const ::pg_query::Node* p = quals_; + return p != nullptr ? *p : reinterpret_cast( + ::pg_query::_Node_default_instance_); +} +inline const ::pg_query::Node& FromExpr::quals() const { + // @@protoc_insertion_point(field_get:pg_query.FromExpr.quals) + return _internal_quals(); +} +inline void FromExpr::unsafe_arena_set_allocated_quals( + ::pg_query::Node* quals) { + if (GetArena() == nullptr) { + delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(quals_); + } + quals_ = quals; + if (quals) { + + } else { + + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.FromExpr.quals) +} +inline ::pg_query::Node* FromExpr::release_quals() { + + ::pg_query::Node* temp = quals_; + quals_ = nullptr; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + return temp; +} +inline ::pg_query::Node* FromExpr::unsafe_arena_release_quals() { + // @@protoc_insertion_point(field_release:pg_query.FromExpr.quals) + + ::pg_query::Node* temp = quals_; + quals_ = nullptr; + return temp; +} +inline ::pg_query::Node* FromExpr::_internal_mutable_quals() { + + if (quals_ == nullptr) { + auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); + quals_ = p; + } + return quals_; +} +inline ::pg_query::Node* FromExpr::mutable_quals() { + // @@protoc_insertion_point(field_mutable:pg_query.FromExpr.quals) + return _internal_mutable_quals(); +} +inline void FromExpr::set_allocated_quals(::pg_query::Node* quals) { + ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); + if (message_arena == nullptr) { + delete quals_; + } + if (quals) { + ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = + ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(quals); + if (message_arena != submessage_arena) { + quals = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( + message_arena, quals, submessage_arena); + } + + } else { + + } + quals_ = quals; + // @@protoc_insertion_point(field_set_allocated:pg_query.FromExpr.quals) +} + +// ------------------------------------------------------------------- + +// OnConflictExpr + +// .pg_query.OnConflictAction action = 1 [json_name = "action"]; +inline void OnConflictExpr::clear_action() { + action_ = 0; +} +inline ::pg_query::OnConflictAction OnConflictExpr::_internal_action() const { + return static_cast< ::pg_query::OnConflictAction >(action_); +} +inline ::pg_query::OnConflictAction OnConflictExpr::action() const { + // @@protoc_insertion_point(field_get:pg_query.OnConflictExpr.action) + return _internal_action(); +} +inline void OnConflictExpr::_internal_set_action(::pg_query::OnConflictAction value) { + + action_ = value; +} +inline void OnConflictExpr::set_action(::pg_query::OnConflictAction value) { + _internal_set_action(value); + // @@protoc_insertion_point(field_set:pg_query.OnConflictExpr.action) +} + +// repeated .pg_query.Node arbiter_elems = 2 [json_name = "arbiterElems"]; +inline int OnConflictExpr::_internal_arbiter_elems_size() const { + return arbiter_elems_.size(); +} +inline int OnConflictExpr::arbiter_elems_size() const { + return _internal_arbiter_elems_size(); +} +inline void OnConflictExpr::clear_arbiter_elems() { + arbiter_elems_.Clear(); +} +inline ::pg_query::Node* OnConflictExpr::mutable_arbiter_elems(int index) { + // @@protoc_insertion_point(field_mutable:pg_query.OnConflictExpr.arbiter_elems) + return arbiter_elems_.Mutable(index); +} +inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* +OnConflictExpr::mutable_arbiter_elems() { + // @@protoc_insertion_point(field_mutable_list:pg_query.OnConflictExpr.arbiter_elems) + return &arbiter_elems_; +} +inline const ::pg_query::Node& OnConflictExpr::_internal_arbiter_elems(int index) const { + return arbiter_elems_.Get(index); +} +inline const ::pg_query::Node& OnConflictExpr::arbiter_elems(int index) const { + // @@protoc_insertion_point(field_get:pg_query.OnConflictExpr.arbiter_elems) + return _internal_arbiter_elems(index); +} +inline ::pg_query::Node* OnConflictExpr::_internal_add_arbiter_elems() { + return arbiter_elems_.Add(); +} +inline ::pg_query::Node* OnConflictExpr::add_arbiter_elems() { + // @@protoc_insertion_point(field_add:pg_query.OnConflictExpr.arbiter_elems) + return _internal_add_arbiter_elems(); +} +inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& +OnConflictExpr::arbiter_elems() const { + // @@protoc_insertion_point(field_list:pg_query.OnConflictExpr.arbiter_elems) + return arbiter_elems_; +} + +// .pg_query.Node arbiter_where = 3 [json_name = "arbiterWhere"]; +inline bool OnConflictExpr::_internal_has_arbiter_where() const { + return this != internal_default_instance() && arbiter_where_ != nullptr; +} +inline bool OnConflictExpr::has_arbiter_where() const { + return _internal_has_arbiter_where(); +} +inline void OnConflictExpr::clear_arbiter_where() { + if (GetArena() == nullptr && arbiter_where_ != nullptr) { + delete arbiter_where_; + } + arbiter_where_ = nullptr; +} +inline const ::pg_query::Node& OnConflictExpr::_internal_arbiter_where() const { + const ::pg_query::Node* p = arbiter_where_; + return p != nullptr ? *p : reinterpret_cast( + ::pg_query::_Node_default_instance_); +} +inline const ::pg_query::Node& OnConflictExpr::arbiter_where() const { + // @@protoc_insertion_point(field_get:pg_query.OnConflictExpr.arbiter_where) + return _internal_arbiter_where(); +} +inline void OnConflictExpr::unsafe_arena_set_allocated_arbiter_where( + ::pg_query::Node* arbiter_where) { + if (GetArena() == nullptr) { + delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(arbiter_where_); + } + arbiter_where_ = arbiter_where; + if (arbiter_where) { + + } else { + + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.OnConflictExpr.arbiter_where) +} +inline ::pg_query::Node* OnConflictExpr::release_arbiter_where() { + + ::pg_query::Node* temp = arbiter_where_; + arbiter_where_ = nullptr; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + return temp; +} +inline ::pg_query::Node* OnConflictExpr::unsafe_arena_release_arbiter_where() { + // @@protoc_insertion_point(field_release:pg_query.OnConflictExpr.arbiter_where) + + ::pg_query::Node* temp = arbiter_where_; + arbiter_where_ = nullptr; + return temp; +} +inline ::pg_query::Node* OnConflictExpr::_internal_mutable_arbiter_where() { + + if (arbiter_where_ == nullptr) { + auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); + arbiter_where_ = p; + } + return arbiter_where_; +} +inline ::pg_query::Node* OnConflictExpr::mutable_arbiter_where() { + // @@protoc_insertion_point(field_mutable:pg_query.OnConflictExpr.arbiter_where) + return _internal_mutable_arbiter_where(); +} +inline void OnConflictExpr::set_allocated_arbiter_where(::pg_query::Node* arbiter_where) { + ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); + if (message_arena == nullptr) { + delete arbiter_where_; + } + if (arbiter_where) { + ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = + ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(arbiter_where); + if (message_arena != submessage_arena) { + arbiter_where = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( + message_arena, arbiter_where, submessage_arena); + } + + } else { + + } + arbiter_where_ = arbiter_where; + // @@protoc_insertion_point(field_set_allocated:pg_query.OnConflictExpr.arbiter_where) +} + +// uint32 constraint = 4 [json_name = "constraint"]; +inline void OnConflictExpr::clear_constraint() { + constraint_ = 0u; +} +inline ::PROTOBUF_NAMESPACE_ID::uint32 OnConflictExpr::_internal_constraint() const { + return constraint_; +} +inline ::PROTOBUF_NAMESPACE_ID::uint32 OnConflictExpr::constraint() const { + // @@protoc_insertion_point(field_get:pg_query.OnConflictExpr.constraint) + return _internal_constraint(); +} +inline void OnConflictExpr::_internal_set_constraint(::PROTOBUF_NAMESPACE_ID::uint32 value) { + + constraint_ = value; +} +inline void OnConflictExpr::set_constraint(::PROTOBUF_NAMESPACE_ID::uint32 value) { + _internal_set_constraint(value); + // @@protoc_insertion_point(field_set:pg_query.OnConflictExpr.constraint) +} + +// repeated .pg_query.Node on_conflict_set = 5 [json_name = "onConflictSet"]; +inline int OnConflictExpr::_internal_on_conflict_set_size() const { + return on_conflict_set_.size(); +} +inline int OnConflictExpr::on_conflict_set_size() const { + return _internal_on_conflict_set_size(); +} +inline void OnConflictExpr::clear_on_conflict_set() { + on_conflict_set_.Clear(); +} +inline ::pg_query::Node* OnConflictExpr::mutable_on_conflict_set(int index) { + // @@protoc_insertion_point(field_mutable:pg_query.OnConflictExpr.on_conflict_set) + return on_conflict_set_.Mutable(index); +} +inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* +OnConflictExpr::mutable_on_conflict_set() { + // @@protoc_insertion_point(field_mutable_list:pg_query.OnConflictExpr.on_conflict_set) + return &on_conflict_set_; +} +inline const ::pg_query::Node& OnConflictExpr::_internal_on_conflict_set(int index) const { + return on_conflict_set_.Get(index); +} +inline const ::pg_query::Node& OnConflictExpr::on_conflict_set(int index) const { + // @@protoc_insertion_point(field_get:pg_query.OnConflictExpr.on_conflict_set) + return _internal_on_conflict_set(index); +} +inline ::pg_query::Node* OnConflictExpr::_internal_add_on_conflict_set() { + return on_conflict_set_.Add(); +} +inline ::pg_query::Node* OnConflictExpr::add_on_conflict_set() { + // @@protoc_insertion_point(field_add:pg_query.OnConflictExpr.on_conflict_set) + return _internal_add_on_conflict_set(); +} +inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& +OnConflictExpr::on_conflict_set() const { + // @@protoc_insertion_point(field_list:pg_query.OnConflictExpr.on_conflict_set) + return on_conflict_set_; +} + +// .pg_query.Node on_conflict_where = 6 [json_name = "onConflictWhere"]; +inline bool OnConflictExpr::_internal_has_on_conflict_where() const { + return this != internal_default_instance() && on_conflict_where_ != nullptr; +} +inline bool OnConflictExpr::has_on_conflict_where() const { + return _internal_has_on_conflict_where(); +} +inline void OnConflictExpr::clear_on_conflict_where() { + if (GetArena() == nullptr && on_conflict_where_ != nullptr) { + delete on_conflict_where_; + } + on_conflict_where_ = nullptr; +} +inline const ::pg_query::Node& OnConflictExpr::_internal_on_conflict_where() const { + const ::pg_query::Node* p = on_conflict_where_; + return p != nullptr ? *p : reinterpret_cast( + ::pg_query::_Node_default_instance_); +} +inline const ::pg_query::Node& OnConflictExpr::on_conflict_where() const { + // @@protoc_insertion_point(field_get:pg_query.OnConflictExpr.on_conflict_where) + return _internal_on_conflict_where(); +} +inline void OnConflictExpr::unsafe_arena_set_allocated_on_conflict_where( + ::pg_query::Node* on_conflict_where) { + if (GetArena() == nullptr) { + delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(on_conflict_where_); + } + on_conflict_where_ = on_conflict_where; + if (on_conflict_where) { + + } else { + + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.OnConflictExpr.on_conflict_where) +} +inline ::pg_query::Node* OnConflictExpr::release_on_conflict_where() { + + ::pg_query::Node* temp = on_conflict_where_; + on_conflict_where_ = nullptr; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + return temp; +} +inline ::pg_query::Node* OnConflictExpr::unsafe_arena_release_on_conflict_where() { + // @@protoc_insertion_point(field_release:pg_query.OnConflictExpr.on_conflict_where) + + ::pg_query::Node* temp = on_conflict_where_; + on_conflict_where_ = nullptr; + return temp; +} +inline ::pg_query::Node* OnConflictExpr::_internal_mutable_on_conflict_where() { + + if (on_conflict_where_ == nullptr) { + auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); + on_conflict_where_ = p; + } + return on_conflict_where_; +} +inline ::pg_query::Node* OnConflictExpr::mutable_on_conflict_where() { + // @@protoc_insertion_point(field_mutable:pg_query.OnConflictExpr.on_conflict_where) + return _internal_mutable_on_conflict_where(); +} +inline void OnConflictExpr::set_allocated_on_conflict_where(::pg_query::Node* on_conflict_where) { + ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); + if (message_arena == nullptr) { + delete on_conflict_where_; + } + if (on_conflict_where) { + ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = + ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(on_conflict_where); + if (message_arena != submessage_arena) { + on_conflict_where = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( + message_arena, on_conflict_where, submessage_arena); + } + + } else { + + } + on_conflict_where_ = on_conflict_where; + // @@protoc_insertion_point(field_set_allocated:pg_query.OnConflictExpr.on_conflict_where) +} + +// int32 excl_rel_index = 7 [json_name = "exclRelIndex"]; +inline void OnConflictExpr::clear_excl_rel_index() { + excl_rel_index_ = 0; +} +inline ::PROTOBUF_NAMESPACE_ID::int32 OnConflictExpr::_internal_excl_rel_index() const { + return excl_rel_index_; +} +inline ::PROTOBUF_NAMESPACE_ID::int32 OnConflictExpr::excl_rel_index() const { + // @@protoc_insertion_point(field_get:pg_query.OnConflictExpr.excl_rel_index) + return _internal_excl_rel_index(); +} +inline void OnConflictExpr::_internal_set_excl_rel_index(::PROTOBUF_NAMESPACE_ID::int32 value) { + + excl_rel_index_ = value; +} +inline void OnConflictExpr::set_excl_rel_index(::PROTOBUF_NAMESPACE_ID::int32 value) { + _internal_set_excl_rel_index(value); + // @@protoc_insertion_point(field_set:pg_query.OnConflictExpr.excl_rel_index) +} + +// repeated .pg_query.Node excl_rel_tlist = 8 [json_name = "exclRelTlist"]; +inline int OnConflictExpr::_internal_excl_rel_tlist_size() const { + return excl_rel_tlist_.size(); +} +inline int OnConflictExpr::excl_rel_tlist_size() const { + return _internal_excl_rel_tlist_size(); +} +inline void OnConflictExpr::clear_excl_rel_tlist() { + excl_rel_tlist_.Clear(); +} +inline ::pg_query::Node* OnConflictExpr::mutable_excl_rel_tlist(int index) { + // @@protoc_insertion_point(field_mutable:pg_query.OnConflictExpr.excl_rel_tlist) + return excl_rel_tlist_.Mutable(index); +} +inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* +OnConflictExpr::mutable_excl_rel_tlist() { + // @@protoc_insertion_point(field_mutable_list:pg_query.OnConflictExpr.excl_rel_tlist) + return &excl_rel_tlist_; +} +inline const ::pg_query::Node& OnConflictExpr::_internal_excl_rel_tlist(int index) const { + return excl_rel_tlist_.Get(index); +} +inline const ::pg_query::Node& OnConflictExpr::excl_rel_tlist(int index) const { + // @@protoc_insertion_point(field_get:pg_query.OnConflictExpr.excl_rel_tlist) + return _internal_excl_rel_tlist(index); +} +inline ::pg_query::Node* OnConflictExpr::_internal_add_excl_rel_tlist() { + return excl_rel_tlist_.Add(); +} +inline ::pg_query::Node* OnConflictExpr::add_excl_rel_tlist() { + // @@protoc_insertion_point(field_add:pg_query.OnConflictExpr.excl_rel_tlist) + return _internal_add_excl_rel_tlist(); +} +inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& +OnConflictExpr::excl_rel_tlist() const { + // @@protoc_insertion_point(field_list:pg_query.OnConflictExpr.excl_rel_tlist) + return excl_rel_tlist_; +} + +// ------------------------------------------------------------------- + +// IntoClause + +// .pg_query.RangeVar rel = 1 [json_name = "rel"]; +inline bool IntoClause::_internal_has_rel() const { + return this != internal_default_instance() && rel_ != nullptr; +} +inline bool IntoClause::has_rel() const { + return _internal_has_rel(); +} +inline void IntoClause::clear_rel() { + if (GetArena() == nullptr && rel_ != nullptr) { + delete rel_; + } + rel_ = nullptr; +} +inline const ::pg_query::RangeVar& IntoClause::_internal_rel() const { + const ::pg_query::RangeVar* p = rel_; + return p != nullptr ? *p : reinterpret_cast( + ::pg_query::_RangeVar_default_instance_); +} +inline const ::pg_query::RangeVar& IntoClause::rel() const { + // @@protoc_insertion_point(field_get:pg_query.IntoClause.rel) + return _internal_rel(); +} +inline void IntoClause::unsafe_arena_set_allocated_rel( + ::pg_query::RangeVar* rel) { + if (GetArena() == nullptr) { + delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(rel_); + } + rel_ = rel; + if (rel) { + + } else { + + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.IntoClause.rel) +} +inline ::pg_query::RangeVar* IntoClause::release_rel() { + + ::pg_query::RangeVar* temp = rel_; + rel_ = nullptr; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + return temp; +} +inline ::pg_query::RangeVar* IntoClause::unsafe_arena_release_rel() { + // @@protoc_insertion_point(field_release:pg_query.IntoClause.rel) + + ::pg_query::RangeVar* temp = rel_; + rel_ = nullptr; + return temp; +} +inline ::pg_query::RangeVar* IntoClause::_internal_mutable_rel() { + + if (rel_ == nullptr) { + auto* p = CreateMaybeMessage<::pg_query::RangeVar>(GetArena()); + rel_ = p; + } + return rel_; +} +inline ::pg_query::RangeVar* IntoClause::mutable_rel() { + // @@protoc_insertion_point(field_mutable:pg_query.IntoClause.rel) + return _internal_mutable_rel(); +} +inline void IntoClause::set_allocated_rel(::pg_query::RangeVar* rel) { + ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); + if (message_arena == nullptr) { + delete rel_; + } + if (rel) { + ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = + ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(rel); + if (message_arena != submessage_arena) { + rel = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( + message_arena, rel, submessage_arena); + } + + } else { + + } + rel_ = rel; + // @@protoc_insertion_point(field_set_allocated:pg_query.IntoClause.rel) +} + +// repeated .pg_query.Node col_names = 2 [json_name = "colNames"]; +inline int IntoClause::_internal_col_names_size() const { + return col_names_.size(); +} +inline int IntoClause::col_names_size() const { + return _internal_col_names_size(); +} +inline void IntoClause::clear_col_names() { + col_names_.Clear(); +} +inline ::pg_query::Node* IntoClause::mutable_col_names(int index) { + // @@protoc_insertion_point(field_mutable:pg_query.IntoClause.col_names) + return col_names_.Mutable(index); +} +inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* +IntoClause::mutable_col_names() { + // @@protoc_insertion_point(field_mutable_list:pg_query.IntoClause.col_names) + return &col_names_; +} +inline const ::pg_query::Node& IntoClause::_internal_col_names(int index) const { + return col_names_.Get(index); +} +inline const ::pg_query::Node& IntoClause::col_names(int index) const { + // @@protoc_insertion_point(field_get:pg_query.IntoClause.col_names) + return _internal_col_names(index); +} +inline ::pg_query::Node* IntoClause::_internal_add_col_names() { + return col_names_.Add(); +} +inline ::pg_query::Node* IntoClause::add_col_names() { + // @@protoc_insertion_point(field_add:pg_query.IntoClause.col_names) + return _internal_add_col_names(); +} +inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& +IntoClause::col_names() const { + // @@protoc_insertion_point(field_list:pg_query.IntoClause.col_names) + return col_names_; +} + +// string access_method = 3 [json_name = "accessMethod"]; +inline void IntoClause::clear_access_method() { + access_method_.ClearToEmpty(); +} +inline const std::string& IntoClause::access_method() const { + // @@protoc_insertion_point(field_get:pg_query.IntoClause.access_method) + return _internal_access_method(); +} +inline void IntoClause::set_access_method(const std::string& value) { + _internal_set_access_method(value); + // @@protoc_insertion_point(field_set:pg_query.IntoClause.access_method) +} +inline std::string* IntoClause::mutable_access_method() { + // @@protoc_insertion_point(field_mutable:pg_query.IntoClause.access_method) + return _internal_mutable_access_method(); +} +inline const std::string& IntoClause::_internal_access_method() const { + return access_method_.Get(); +} +inline void IntoClause::_internal_set_access_method(const std::string& value) { + + access_method_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArena()); +} +inline void IntoClause::set_access_method(std::string&& value) { + + access_method_.Set( + ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::move(value), GetArena()); + // @@protoc_insertion_point(field_set_rvalue:pg_query.IntoClause.access_method) +} +inline void IntoClause::set_access_method(const char* value) { + GOOGLE_DCHECK(value != nullptr); + + access_method_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string(value), GetArena()); + // @@protoc_insertion_point(field_set_char:pg_query.IntoClause.access_method) +} +inline void IntoClause::set_access_method(const char* value, + size_t size) { + + access_method_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string( + reinterpret_cast(value), size), GetArena()); + // @@protoc_insertion_point(field_set_pointer:pg_query.IntoClause.access_method) +} +inline std::string* IntoClause::_internal_mutable_access_method() { + + return access_method_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArena()); +} +inline std::string* IntoClause::release_access_method() { + // @@protoc_insertion_point(field_release:pg_query.IntoClause.access_method) + return access_method_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); +} +inline void IntoClause::set_allocated_access_method(std::string* access_method) { + if (access_method != nullptr) { + + } else { + + } + access_method_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), access_method, + GetArena()); + // @@protoc_insertion_point(field_set_allocated:pg_query.IntoClause.access_method) +} + +// repeated .pg_query.Node options = 4 [json_name = "options"]; +inline int IntoClause::_internal_options_size() const { + return options_.size(); +} +inline int IntoClause::options_size() const { + return _internal_options_size(); +} +inline void IntoClause::clear_options() { + options_.Clear(); +} +inline ::pg_query::Node* IntoClause::mutable_options(int index) { + // @@protoc_insertion_point(field_mutable:pg_query.IntoClause.options) + return options_.Mutable(index); +} +inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* +IntoClause::mutable_options() { + // @@protoc_insertion_point(field_mutable_list:pg_query.IntoClause.options) + return &options_; +} +inline const ::pg_query::Node& IntoClause::_internal_options(int index) const { + return options_.Get(index); +} +inline const ::pg_query::Node& IntoClause::options(int index) const { + // @@protoc_insertion_point(field_get:pg_query.IntoClause.options) + return _internal_options(index); +} +inline ::pg_query::Node* IntoClause::_internal_add_options() { + return options_.Add(); +} +inline ::pg_query::Node* IntoClause::add_options() { + // @@protoc_insertion_point(field_add:pg_query.IntoClause.options) + return _internal_add_options(); +} +inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& +IntoClause::options() const { + // @@protoc_insertion_point(field_list:pg_query.IntoClause.options) + return options_; +} + +// .pg_query.OnCommitAction on_commit = 5 [json_name = "onCommit"]; +inline void IntoClause::clear_on_commit() { + on_commit_ = 0; +} +inline ::pg_query::OnCommitAction IntoClause::_internal_on_commit() const { + return static_cast< ::pg_query::OnCommitAction >(on_commit_); +} +inline ::pg_query::OnCommitAction IntoClause::on_commit() const { + // @@protoc_insertion_point(field_get:pg_query.IntoClause.on_commit) + return _internal_on_commit(); +} +inline void IntoClause::_internal_set_on_commit(::pg_query::OnCommitAction value) { + + on_commit_ = value; +} +inline void IntoClause::set_on_commit(::pg_query::OnCommitAction value) { + _internal_set_on_commit(value); + // @@protoc_insertion_point(field_set:pg_query.IntoClause.on_commit) +} + +// string table_space_name = 6 [json_name = "tableSpaceName"]; +inline void IntoClause::clear_table_space_name() { + table_space_name_.ClearToEmpty(); +} +inline const std::string& IntoClause::table_space_name() const { + // @@protoc_insertion_point(field_get:pg_query.IntoClause.table_space_name) + return _internal_table_space_name(); +} +inline void IntoClause::set_table_space_name(const std::string& value) { + _internal_set_table_space_name(value); + // @@protoc_insertion_point(field_set:pg_query.IntoClause.table_space_name) +} +inline std::string* IntoClause::mutable_table_space_name() { + // @@protoc_insertion_point(field_mutable:pg_query.IntoClause.table_space_name) + return _internal_mutable_table_space_name(); +} +inline const std::string& IntoClause::_internal_table_space_name() const { + return table_space_name_.Get(); +} +inline void IntoClause::_internal_set_table_space_name(const std::string& value) { + + table_space_name_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArena()); +} +inline void IntoClause::set_table_space_name(std::string&& value) { + + table_space_name_.Set( + ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::move(value), GetArena()); + // @@protoc_insertion_point(field_set_rvalue:pg_query.IntoClause.table_space_name) +} +inline void IntoClause::set_table_space_name(const char* value) { + GOOGLE_DCHECK(value != nullptr); + + table_space_name_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string(value), GetArena()); + // @@protoc_insertion_point(field_set_char:pg_query.IntoClause.table_space_name) +} +inline void IntoClause::set_table_space_name(const char* value, + size_t size) { + + table_space_name_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string( + reinterpret_cast(value), size), GetArena()); + // @@protoc_insertion_point(field_set_pointer:pg_query.IntoClause.table_space_name) +} +inline std::string* IntoClause::_internal_mutable_table_space_name() { + + return table_space_name_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArena()); +} +inline std::string* IntoClause::release_table_space_name() { + // @@protoc_insertion_point(field_release:pg_query.IntoClause.table_space_name) + return table_space_name_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); +} +inline void IntoClause::set_allocated_table_space_name(std::string* table_space_name) { + if (table_space_name != nullptr) { + + } else { + + } + table_space_name_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), table_space_name, + GetArena()); + // @@protoc_insertion_point(field_set_allocated:pg_query.IntoClause.table_space_name) +} + +// .pg_query.Node view_query = 7 [json_name = "viewQuery"]; +inline bool IntoClause::_internal_has_view_query() const { + return this != internal_default_instance() && view_query_ != nullptr; +} +inline bool IntoClause::has_view_query() const { + return _internal_has_view_query(); +} +inline void IntoClause::clear_view_query() { + if (GetArena() == nullptr && view_query_ != nullptr) { + delete view_query_; + } + view_query_ = nullptr; +} +inline const ::pg_query::Node& IntoClause::_internal_view_query() const { + const ::pg_query::Node* p = view_query_; + return p != nullptr ? *p : reinterpret_cast( + ::pg_query::_Node_default_instance_); +} +inline const ::pg_query::Node& IntoClause::view_query() const { + // @@protoc_insertion_point(field_get:pg_query.IntoClause.view_query) + return _internal_view_query(); +} +inline void IntoClause::unsafe_arena_set_allocated_view_query( + ::pg_query::Node* view_query) { + if (GetArena() == nullptr) { + delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(view_query_); + } + view_query_ = view_query; + if (view_query) { + + } else { + + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.IntoClause.view_query) +} +inline ::pg_query::Node* IntoClause::release_view_query() { + + ::pg_query::Node* temp = view_query_; + view_query_ = nullptr; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + return temp; +} +inline ::pg_query::Node* IntoClause::unsafe_arena_release_view_query() { + // @@protoc_insertion_point(field_release:pg_query.IntoClause.view_query) + + ::pg_query::Node* temp = view_query_; + view_query_ = nullptr; + return temp; +} +inline ::pg_query::Node* IntoClause::_internal_mutable_view_query() { + + if (view_query_ == nullptr) { + auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); + view_query_ = p; + } + return view_query_; +} +inline ::pg_query::Node* IntoClause::mutable_view_query() { + // @@protoc_insertion_point(field_mutable:pg_query.IntoClause.view_query) + return _internal_mutable_view_query(); +} +inline void IntoClause::set_allocated_view_query(::pg_query::Node* view_query) { + ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); + if (message_arena == nullptr) { + delete view_query_; + } + if (view_query) { + ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = + ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(view_query); + if (message_arena != submessage_arena) { + view_query = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( + message_arena, view_query, submessage_arena); + } + + } else { + + } + view_query_ = view_query; + // @@protoc_insertion_point(field_set_allocated:pg_query.IntoClause.view_query) +} + +// bool skip_data = 8 [json_name = "skipData"]; +inline void IntoClause::clear_skip_data() { + skip_data_ = false; +} +inline bool IntoClause::_internal_skip_data() const { + return skip_data_; +} +inline bool IntoClause::skip_data() const { + // @@protoc_insertion_point(field_get:pg_query.IntoClause.skip_data) + return _internal_skip_data(); +} +inline void IntoClause::_internal_set_skip_data(bool value) { + + skip_data_ = value; +} +inline void IntoClause::set_skip_data(bool value) { + _internal_set_skip_data(value); + // @@protoc_insertion_point(field_set:pg_query.IntoClause.skip_data) +} + +// ------------------------------------------------------------------- + +// RawStmt + +// .pg_query.Node stmt = 1 [json_name = "stmt"]; +inline bool RawStmt::_internal_has_stmt() const { + return this != internal_default_instance() && stmt_ != nullptr; +} +inline bool RawStmt::has_stmt() const { + return _internal_has_stmt(); +} +inline void RawStmt::clear_stmt() { + if (GetArena() == nullptr && stmt_ != nullptr) { + delete stmt_; + } + stmt_ = nullptr; +} +inline const ::pg_query::Node& RawStmt::_internal_stmt() const { + const ::pg_query::Node* p = stmt_; + return p != nullptr ? *p : reinterpret_cast( + ::pg_query::_Node_default_instance_); +} +inline const ::pg_query::Node& RawStmt::stmt() const { + // @@protoc_insertion_point(field_get:pg_query.RawStmt.stmt) + return _internal_stmt(); +} +inline void RawStmt::unsafe_arena_set_allocated_stmt( + ::pg_query::Node* stmt) { + if (GetArena() == nullptr) { + delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(stmt_); + } + stmt_ = stmt; + if (stmt) { + + } else { + + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.RawStmt.stmt) +} +inline ::pg_query::Node* RawStmt::release_stmt() { + + ::pg_query::Node* temp = stmt_; + stmt_ = nullptr; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + return temp; +} +inline ::pg_query::Node* RawStmt::unsafe_arena_release_stmt() { + // @@protoc_insertion_point(field_release:pg_query.RawStmt.stmt) + + ::pg_query::Node* temp = stmt_; + stmt_ = nullptr; + return temp; +} +inline ::pg_query::Node* RawStmt::_internal_mutable_stmt() { + + if (stmt_ == nullptr) { + auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); + stmt_ = p; + } + return stmt_; +} +inline ::pg_query::Node* RawStmt::mutable_stmt() { + // @@protoc_insertion_point(field_mutable:pg_query.RawStmt.stmt) + return _internal_mutable_stmt(); +} +inline void RawStmt::set_allocated_stmt(::pg_query::Node* stmt) { + ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); + if (message_arena == nullptr) { + delete stmt_; + } + if (stmt) { + ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = + ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(stmt); + if (message_arena != submessage_arena) { + stmt = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( + message_arena, stmt, submessage_arena); + } + + } else { + + } + stmt_ = stmt; + // @@protoc_insertion_point(field_set_allocated:pg_query.RawStmt.stmt) +} + +// int32 stmt_location = 2 [json_name = "stmt_location"]; +inline void RawStmt::clear_stmt_location() { + stmt_location_ = 0; +} +inline ::PROTOBUF_NAMESPACE_ID::int32 RawStmt::_internal_stmt_location() const { + return stmt_location_; +} +inline ::PROTOBUF_NAMESPACE_ID::int32 RawStmt::stmt_location() const { + // @@protoc_insertion_point(field_get:pg_query.RawStmt.stmt_location) + return _internal_stmt_location(); +} +inline void RawStmt::_internal_set_stmt_location(::PROTOBUF_NAMESPACE_ID::int32 value) { + + stmt_location_ = value; +} +inline void RawStmt::set_stmt_location(::PROTOBUF_NAMESPACE_ID::int32 value) { + _internal_set_stmt_location(value); + // @@protoc_insertion_point(field_set:pg_query.RawStmt.stmt_location) +} + +// int32 stmt_len = 3 [json_name = "stmt_len"]; +inline void RawStmt::clear_stmt_len() { + stmt_len_ = 0; +} +inline ::PROTOBUF_NAMESPACE_ID::int32 RawStmt::_internal_stmt_len() const { + return stmt_len_; +} +inline ::PROTOBUF_NAMESPACE_ID::int32 RawStmt::stmt_len() const { + // @@protoc_insertion_point(field_get:pg_query.RawStmt.stmt_len) + return _internal_stmt_len(); +} +inline void RawStmt::_internal_set_stmt_len(::PROTOBUF_NAMESPACE_ID::int32 value) { + + stmt_len_ = value; +} +inline void RawStmt::set_stmt_len(::PROTOBUF_NAMESPACE_ID::int32 value) { + _internal_set_stmt_len(value); + // @@protoc_insertion_point(field_set:pg_query.RawStmt.stmt_len) +} + +// ------------------------------------------------------------------- + +// Query + +// .pg_query.CmdType command_type = 1 [json_name = "commandType"]; +inline void Query::clear_command_type() { + command_type_ = 0; +} +inline ::pg_query::CmdType Query::_internal_command_type() const { + return static_cast< ::pg_query::CmdType >(command_type_); +} +inline ::pg_query::CmdType Query::command_type() const { + // @@protoc_insertion_point(field_get:pg_query.Query.command_type) + return _internal_command_type(); +} +inline void Query::_internal_set_command_type(::pg_query::CmdType value) { + + command_type_ = value; +} +inline void Query::set_command_type(::pg_query::CmdType value) { + _internal_set_command_type(value); + // @@protoc_insertion_point(field_set:pg_query.Query.command_type) +} + +// .pg_query.QuerySource query_source = 2 [json_name = "querySource"]; +inline void Query::clear_query_source() { + query_source_ = 0; +} +inline ::pg_query::QuerySource Query::_internal_query_source() const { + return static_cast< ::pg_query::QuerySource >(query_source_); +} +inline ::pg_query::QuerySource Query::query_source() const { + // @@protoc_insertion_point(field_get:pg_query.Query.query_source) + return _internal_query_source(); +} +inline void Query::_internal_set_query_source(::pg_query::QuerySource value) { + + query_source_ = value; +} +inline void Query::set_query_source(::pg_query::QuerySource value) { + _internal_set_query_source(value); + // @@protoc_insertion_point(field_set:pg_query.Query.query_source) +} + +// bool can_set_tag = 3 [json_name = "canSetTag"]; +inline void Query::clear_can_set_tag() { + can_set_tag_ = false; +} +inline bool Query::_internal_can_set_tag() const { + return can_set_tag_; +} +inline bool Query::can_set_tag() const { + // @@protoc_insertion_point(field_get:pg_query.Query.can_set_tag) + return _internal_can_set_tag(); +} +inline void Query::_internal_set_can_set_tag(bool value) { + + can_set_tag_ = value; +} +inline void Query::set_can_set_tag(bool value) { + _internal_set_can_set_tag(value); + // @@protoc_insertion_point(field_set:pg_query.Query.can_set_tag) +} + +// .pg_query.Node utility_stmt = 4 [json_name = "utilityStmt"]; +inline bool Query::_internal_has_utility_stmt() const { + return this != internal_default_instance() && utility_stmt_ != nullptr; +} +inline bool Query::has_utility_stmt() const { + return _internal_has_utility_stmt(); +} +inline void Query::clear_utility_stmt() { + if (GetArena() == nullptr && utility_stmt_ != nullptr) { + delete utility_stmt_; + } + utility_stmt_ = nullptr; +} +inline const ::pg_query::Node& Query::_internal_utility_stmt() const { + const ::pg_query::Node* p = utility_stmt_; + return p != nullptr ? *p : reinterpret_cast( + ::pg_query::_Node_default_instance_); +} +inline const ::pg_query::Node& Query::utility_stmt() const { + // @@protoc_insertion_point(field_get:pg_query.Query.utility_stmt) + return _internal_utility_stmt(); +} +inline void Query::unsafe_arena_set_allocated_utility_stmt( + ::pg_query::Node* utility_stmt) { + if (GetArena() == nullptr) { + delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(utility_stmt_); + } + utility_stmt_ = utility_stmt; + if (utility_stmt) { + + } else { + + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Query.utility_stmt) +} +inline ::pg_query::Node* Query::release_utility_stmt() { + + ::pg_query::Node* temp = utility_stmt_; + utility_stmt_ = nullptr; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + return temp; +} +inline ::pg_query::Node* Query::unsafe_arena_release_utility_stmt() { + // @@protoc_insertion_point(field_release:pg_query.Query.utility_stmt) + + ::pg_query::Node* temp = utility_stmt_; + utility_stmt_ = nullptr; + return temp; +} +inline ::pg_query::Node* Query::_internal_mutable_utility_stmt() { + + if (utility_stmt_ == nullptr) { + auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); + utility_stmt_ = p; + } + return utility_stmt_; +} +inline ::pg_query::Node* Query::mutable_utility_stmt() { + // @@protoc_insertion_point(field_mutable:pg_query.Query.utility_stmt) + return _internal_mutable_utility_stmt(); +} +inline void Query::set_allocated_utility_stmt(::pg_query::Node* utility_stmt) { + ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); + if (message_arena == nullptr) { + delete utility_stmt_; + } + if (utility_stmt) { + ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = + ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(utility_stmt); + if (message_arena != submessage_arena) { + utility_stmt = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( + message_arena, utility_stmt, submessage_arena); + } + + } else { + + } + utility_stmt_ = utility_stmt; + // @@protoc_insertion_point(field_set_allocated:pg_query.Query.utility_stmt) +} + +// int32 result_relation = 5 [json_name = "resultRelation"]; +inline void Query::clear_result_relation() { + result_relation_ = 0; +} +inline ::PROTOBUF_NAMESPACE_ID::int32 Query::_internal_result_relation() const { + return result_relation_; +} +inline ::PROTOBUF_NAMESPACE_ID::int32 Query::result_relation() const { + // @@protoc_insertion_point(field_get:pg_query.Query.result_relation) + return _internal_result_relation(); +} +inline void Query::_internal_set_result_relation(::PROTOBUF_NAMESPACE_ID::int32 value) { + + result_relation_ = value; +} +inline void Query::set_result_relation(::PROTOBUF_NAMESPACE_ID::int32 value) { + _internal_set_result_relation(value); + // @@protoc_insertion_point(field_set:pg_query.Query.result_relation) +} + +// bool has_aggs = 6 [json_name = "hasAggs"]; +inline void Query::clear_has_aggs() { + has_aggs_ = false; +} +inline bool Query::_internal_has_aggs() const { + return has_aggs_; +} +inline bool Query::has_aggs() const { + // @@protoc_insertion_point(field_get:pg_query.Query.has_aggs) + return _internal_has_aggs(); +} +inline void Query::_internal_set_has_aggs(bool value) { + + has_aggs_ = value; +} +inline void Query::set_has_aggs(bool value) { + _internal_set_has_aggs(value); + // @@protoc_insertion_point(field_set:pg_query.Query.has_aggs) +} + +// bool has_window_funcs = 7 [json_name = "hasWindowFuncs"]; +inline void Query::clear_has_window_funcs() { + has_window_funcs_ = false; +} +inline bool Query::_internal_has_window_funcs() const { + return has_window_funcs_; +} +inline bool Query::has_window_funcs() const { + // @@protoc_insertion_point(field_get:pg_query.Query.has_window_funcs) + return _internal_has_window_funcs(); +} +inline void Query::_internal_set_has_window_funcs(bool value) { + + has_window_funcs_ = value; +} +inline void Query::set_has_window_funcs(bool value) { + _internal_set_has_window_funcs(value); + // @@protoc_insertion_point(field_set:pg_query.Query.has_window_funcs) +} + +// bool has_target_srfs = 8 [json_name = "hasTargetSRFs"]; +inline void Query::clear_has_target_srfs() { + has_target_srfs_ = false; +} +inline bool Query::_internal_has_target_srfs() const { + return has_target_srfs_; +} +inline bool Query::has_target_srfs() const { + // @@protoc_insertion_point(field_get:pg_query.Query.has_target_srfs) + return _internal_has_target_srfs(); +} +inline void Query::_internal_set_has_target_srfs(bool value) { + + has_target_srfs_ = value; +} +inline void Query::set_has_target_srfs(bool value) { + _internal_set_has_target_srfs(value); + // @@protoc_insertion_point(field_set:pg_query.Query.has_target_srfs) +} + +// bool has_sub_links = 9 [json_name = "hasSubLinks"]; +inline void Query::clear_has_sub_links() { + has_sub_links_ = false; +} +inline bool Query::_internal_has_sub_links() const { + return has_sub_links_; +} +inline bool Query::has_sub_links() const { + // @@protoc_insertion_point(field_get:pg_query.Query.has_sub_links) + return _internal_has_sub_links(); +} +inline void Query::_internal_set_has_sub_links(bool value) { + + has_sub_links_ = value; +} +inline void Query::set_has_sub_links(bool value) { + _internal_set_has_sub_links(value); + // @@protoc_insertion_point(field_set:pg_query.Query.has_sub_links) +} + +// bool has_distinct_on = 10 [json_name = "hasDistinctOn"]; +inline void Query::clear_has_distinct_on() { + has_distinct_on_ = false; +} +inline bool Query::_internal_has_distinct_on() const { + return has_distinct_on_; +} +inline bool Query::has_distinct_on() const { + // @@protoc_insertion_point(field_get:pg_query.Query.has_distinct_on) + return _internal_has_distinct_on(); +} +inline void Query::_internal_set_has_distinct_on(bool value) { + + has_distinct_on_ = value; +} +inline void Query::set_has_distinct_on(bool value) { + _internal_set_has_distinct_on(value); + // @@protoc_insertion_point(field_set:pg_query.Query.has_distinct_on) +} + +// bool has_recursive = 11 [json_name = "hasRecursive"]; +inline void Query::clear_has_recursive() { + has_recursive_ = false; +} +inline bool Query::_internal_has_recursive() const { + return has_recursive_; +} +inline bool Query::has_recursive() const { + // @@protoc_insertion_point(field_get:pg_query.Query.has_recursive) + return _internal_has_recursive(); +} +inline void Query::_internal_set_has_recursive(bool value) { + + has_recursive_ = value; +} +inline void Query::set_has_recursive(bool value) { + _internal_set_has_recursive(value); + // @@protoc_insertion_point(field_set:pg_query.Query.has_recursive) +} + +// bool has_modifying_cte = 12 [json_name = "hasModifyingCTE"]; +inline void Query::clear_has_modifying_cte() { + has_modifying_cte_ = false; +} +inline bool Query::_internal_has_modifying_cte() const { + return has_modifying_cte_; +} +inline bool Query::has_modifying_cte() const { + // @@protoc_insertion_point(field_get:pg_query.Query.has_modifying_cte) + return _internal_has_modifying_cte(); +} +inline void Query::_internal_set_has_modifying_cte(bool value) { + + has_modifying_cte_ = value; +} +inline void Query::set_has_modifying_cte(bool value) { + _internal_set_has_modifying_cte(value); + // @@protoc_insertion_point(field_set:pg_query.Query.has_modifying_cte) +} + +// bool has_for_update = 13 [json_name = "hasForUpdate"]; +inline void Query::clear_has_for_update() { + has_for_update_ = false; +} +inline bool Query::_internal_has_for_update() const { + return has_for_update_; +} +inline bool Query::has_for_update() const { + // @@protoc_insertion_point(field_get:pg_query.Query.has_for_update) + return _internal_has_for_update(); +} +inline void Query::_internal_set_has_for_update(bool value) { + + has_for_update_ = value; +} +inline void Query::set_has_for_update(bool value) { + _internal_set_has_for_update(value); + // @@protoc_insertion_point(field_set:pg_query.Query.has_for_update) +} + +// bool has_row_security = 14 [json_name = "hasRowSecurity"]; +inline void Query::clear_has_row_security() { + has_row_security_ = false; +} +inline bool Query::_internal_has_row_security() const { + return has_row_security_; +} +inline bool Query::has_row_security() const { + // @@protoc_insertion_point(field_get:pg_query.Query.has_row_security) + return _internal_has_row_security(); +} +inline void Query::_internal_set_has_row_security(bool value) { + + has_row_security_ = value; +} +inline void Query::set_has_row_security(bool value) { + _internal_set_has_row_security(value); + // @@protoc_insertion_point(field_set:pg_query.Query.has_row_security) +} + +// repeated .pg_query.Node cte_list = 15 [json_name = "cteList"]; +inline int Query::_internal_cte_list_size() const { + return cte_list_.size(); +} +inline int Query::cte_list_size() const { + return _internal_cte_list_size(); +} +inline void Query::clear_cte_list() { + cte_list_.Clear(); +} +inline ::pg_query::Node* Query::mutable_cte_list(int index) { + // @@protoc_insertion_point(field_mutable:pg_query.Query.cte_list) + return cte_list_.Mutable(index); +} +inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* +Query::mutable_cte_list() { + // @@protoc_insertion_point(field_mutable_list:pg_query.Query.cte_list) + return &cte_list_; +} +inline const ::pg_query::Node& Query::_internal_cte_list(int index) const { + return cte_list_.Get(index); +} +inline const ::pg_query::Node& Query::cte_list(int index) const { + // @@protoc_insertion_point(field_get:pg_query.Query.cte_list) + return _internal_cte_list(index); +} +inline ::pg_query::Node* Query::_internal_add_cte_list() { + return cte_list_.Add(); +} +inline ::pg_query::Node* Query::add_cte_list() { + // @@protoc_insertion_point(field_add:pg_query.Query.cte_list) + return _internal_add_cte_list(); +} +inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& +Query::cte_list() const { + // @@protoc_insertion_point(field_list:pg_query.Query.cte_list) + return cte_list_; +} + +// repeated .pg_query.Node rtable = 16 [json_name = "rtable"]; +inline int Query::_internal_rtable_size() const { + return rtable_.size(); +} +inline int Query::rtable_size() const { + return _internal_rtable_size(); +} +inline void Query::clear_rtable() { + rtable_.Clear(); +} +inline ::pg_query::Node* Query::mutable_rtable(int index) { + // @@protoc_insertion_point(field_mutable:pg_query.Query.rtable) + return rtable_.Mutable(index); +} +inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* +Query::mutable_rtable() { + // @@protoc_insertion_point(field_mutable_list:pg_query.Query.rtable) + return &rtable_; +} +inline const ::pg_query::Node& Query::_internal_rtable(int index) const { + return rtable_.Get(index); +} +inline const ::pg_query::Node& Query::rtable(int index) const { + // @@protoc_insertion_point(field_get:pg_query.Query.rtable) + return _internal_rtable(index); +} +inline ::pg_query::Node* Query::_internal_add_rtable() { + return rtable_.Add(); +} +inline ::pg_query::Node* Query::add_rtable() { + // @@protoc_insertion_point(field_add:pg_query.Query.rtable) + return _internal_add_rtable(); +} +inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& +Query::rtable() const { + // @@protoc_insertion_point(field_list:pg_query.Query.rtable) + return rtable_; +} + +// .pg_query.FromExpr jointree = 17 [json_name = "jointree"]; +inline bool Query::_internal_has_jointree() const { + return this != internal_default_instance() && jointree_ != nullptr; +} +inline bool Query::has_jointree() const { + return _internal_has_jointree(); +} +inline void Query::clear_jointree() { + if (GetArena() == nullptr && jointree_ != nullptr) { + delete jointree_; + } + jointree_ = nullptr; +} +inline const ::pg_query::FromExpr& Query::_internal_jointree() const { + const ::pg_query::FromExpr* p = jointree_; + return p != nullptr ? *p : reinterpret_cast( + ::pg_query::_FromExpr_default_instance_); +} +inline const ::pg_query::FromExpr& Query::jointree() const { + // @@protoc_insertion_point(field_get:pg_query.Query.jointree) + return _internal_jointree(); +} +inline void Query::unsafe_arena_set_allocated_jointree( + ::pg_query::FromExpr* jointree) { + if (GetArena() == nullptr) { + delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(jointree_); + } + jointree_ = jointree; + if (jointree) { + + } else { + + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Query.jointree) +} +inline ::pg_query::FromExpr* Query::release_jointree() { + + ::pg_query::FromExpr* temp = jointree_; + jointree_ = nullptr; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + return temp; +} +inline ::pg_query::FromExpr* Query::unsafe_arena_release_jointree() { + // @@protoc_insertion_point(field_release:pg_query.Query.jointree) + + ::pg_query::FromExpr* temp = jointree_; + jointree_ = nullptr; + return temp; +} +inline ::pg_query::FromExpr* Query::_internal_mutable_jointree() { + + if (jointree_ == nullptr) { + auto* p = CreateMaybeMessage<::pg_query::FromExpr>(GetArena()); + jointree_ = p; + } + return jointree_; +} +inline ::pg_query::FromExpr* Query::mutable_jointree() { + // @@protoc_insertion_point(field_mutable:pg_query.Query.jointree) + return _internal_mutable_jointree(); +} +inline void Query::set_allocated_jointree(::pg_query::FromExpr* jointree) { + ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); + if (message_arena == nullptr) { + delete jointree_; + } + if (jointree) { + ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = + ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(jointree); + if (message_arena != submessage_arena) { + jointree = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( + message_arena, jointree, submessage_arena); + } + + } else { + + } + jointree_ = jointree; + // @@protoc_insertion_point(field_set_allocated:pg_query.Query.jointree) +} + +// repeated .pg_query.Node target_list = 18 [json_name = "targetList"]; +inline int Query::_internal_target_list_size() const { + return target_list_.size(); +} +inline int Query::target_list_size() const { + return _internal_target_list_size(); +} +inline void Query::clear_target_list() { + target_list_.Clear(); +} +inline ::pg_query::Node* Query::mutable_target_list(int index) { + // @@protoc_insertion_point(field_mutable:pg_query.Query.target_list) + return target_list_.Mutable(index); +} +inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* +Query::mutable_target_list() { + // @@protoc_insertion_point(field_mutable_list:pg_query.Query.target_list) + return &target_list_; +} +inline const ::pg_query::Node& Query::_internal_target_list(int index) const { + return target_list_.Get(index); +} +inline const ::pg_query::Node& Query::target_list(int index) const { + // @@protoc_insertion_point(field_get:pg_query.Query.target_list) + return _internal_target_list(index); +} +inline ::pg_query::Node* Query::_internal_add_target_list() { + return target_list_.Add(); +} +inline ::pg_query::Node* Query::add_target_list() { + // @@protoc_insertion_point(field_add:pg_query.Query.target_list) + return _internal_add_target_list(); +} +inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& +Query::target_list() const { + // @@protoc_insertion_point(field_list:pg_query.Query.target_list) + return target_list_; +} + +// .pg_query.OverridingKind override = 19 [json_name = "override"]; +inline void Query::clear_override() { + override_ = 0; +} +inline ::pg_query::OverridingKind Query::_internal_override() const { + return static_cast< ::pg_query::OverridingKind >(override_); +} +inline ::pg_query::OverridingKind Query::override() const { + // @@protoc_insertion_point(field_get:pg_query.Query.override) + return _internal_override(); +} +inline void Query::_internal_set_override(::pg_query::OverridingKind value) { + + override_ = value; +} +inline void Query::set_override(::pg_query::OverridingKind value) { + _internal_set_override(value); + // @@protoc_insertion_point(field_set:pg_query.Query.override) +} + +// .pg_query.OnConflictExpr on_conflict = 20 [json_name = "onConflict"]; +inline bool Query::_internal_has_on_conflict() const { + return this != internal_default_instance() && on_conflict_ != nullptr; +} +inline bool Query::has_on_conflict() const { + return _internal_has_on_conflict(); +} +inline void Query::clear_on_conflict() { + if (GetArena() == nullptr && on_conflict_ != nullptr) { + delete on_conflict_; + } + on_conflict_ = nullptr; +} +inline const ::pg_query::OnConflictExpr& Query::_internal_on_conflict() const { + const ::pg_query::OnConflictExpr* p = on_conflict_; + return p != nullptr ? *p : reinterpret_cast( + ::pg_query::_OnConflictExpr_default_instance_); +} +inline const ::pg_query::OnConflictExpr& Query::on_conflict() const { + // @@protoc_insertion_point(field_get:pg_query.Query.on_conflict) + return _internal_on_conflict(); +} +inline void Query::unsafe_arena_set_allocated_on_conflict( + ::pg_query::OnConflictExpr* on_conflict) { + if (GetArena() == nullptr) { + delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(on_conflict_); + } + on_conflict_ = on_conflict; + if (on_conflict) { + + } else { + + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Query.on_conflict) +} +inline ::pg_query::OnConflictExpr* Query::release_on_conflict() { + + ::pg_query::OnConflictExpr* temp = on_conflict_; + on_conflict_ = nullptr; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + return temp; +} +inline ::pg_query::OnConflictExpr* Query::unsafe_arena_release_on_conflict() { + // @@protoc_insertion_point(field_release:pg_query.Query.on_conflict) + + ::pg_query::OnConflictExpr* temp = on_conflict_; + on_conflict_ = nullptr; + return temp; +} +inline ::pg_query::OnConflictExpr* Query::_internal_mutable_on_conflict() { + + if (on_conflict_ == nullptr) { + auto* p = CreateMaybeMessage<::pg_query::OnConflictExpr>(GetArena()); + on_conflict_ = p; + } + return on_conflict_; +} +inline ::pg_query::OnConflictExpr* Query::mutable_on_conflict() { + // @@protoc_insertion_point(field_mutable:pg_query.Query.on_conflict) + return _internal_mutable_on_conflict(); +} +inline void Query::set_allocated_on_conflict(::pg_query::OnConflictExpr* on_conflict) { + ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); + if (message_arena == nullptr) { + delete on_conflict_; + } + if (on_conflict) { + ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = + ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(on_conflict); + if (message_arena != submessage_arena) { + on_conflict = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( + message_arena, on_conflict, submessage_arena); + } + + } else { + + } + on_conflict_ = on_conflict; + // @@protoc_insertion_point(field_set_allocated:pg_query.Query.on_conflict) +} + +// repeated .pg_query.Node returning_list = 21 [json_name = "returningList"]; +inline int Query::_internal_returning_list_size() const { + return returning_list_.size(); +} +inline int Query::returning_list_size() const { + return _internal_returning_list_size(); +} +inline void Query::clear_returning_list() { + returning_list_.Clear(); +} +inline ::pg_query::Node* Query::mutable_returning_list(int index) { + // @@protoc_insertion_point(field_mutable:pg_query.Query.returning_list) + return returning_list_.Mutable(index); +} +inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* +Query::mutable_returning_list() { + // @@protoc_insertion_point(field_mutable_list:pg_query.Query.returning_list) + return &returning_list_; +} +inline const ::pg_query::Node& Query::_internal_returning_list(int index) const { + return returning_list_.Get(index); +} +inline const ::pg_query::Node& Query::returning_list(int index) const { + // @@protoc_insertion_point(field_get:pg_query.Query.returning_list) + return _internal_returning_list(index); +} +inline ::pg_query::Node* Query::_internal_add_returning_list() { + return returning_list_.Add(); +} +inline ::pg_query::Node* Query::add_returning_list() { + // @@protoc_insertion_point(field_add:pg_query.Query.returning_list) + return _internal_add_returning_list(); +} +inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& +Query::returning_list() const { + // @@protoc_insertion_point(field_list:pg_query.Query.returning_list) + return returning_list_; +} + +// repeated .pg_query.Node group_clause = 22 [json_name = "groupClause"]; +inline int Query::_internal_group_clause_size() const { + return group_clause_.size(); +} +inline int Query::group_clause_size() const { + return _internal_group_clause_size(); +} +inline void Query::clear_group_clause() { + group_clause_.Clear(); +} +inline ::pg_query::Node* Query::mutable_group_clause(int index) { + // @@protoc_insertion_point(field_mutable:pg_query.Query.group_clause) + return group_clause_.Mutable(index); +} +inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* +Query::mutable_group_clause() { + // @@protoc_insertion_point(field_mutable_list:pg_query.Query.group_clause) + return &group_clause_; +} +inline const ::pg_query::Node& Query::_internal_group_clause(int index) const { + return group_clause_.Get(index); +} +inline const ::pg_query::Node& Query::group_clause(int index) const { + // @@protoc_insertion_point(field_get:pg_query.Query.group_clause) + return _internal_group_clause(index); +} +inline ::pg_query::Node* Query::_internal_add_group_clause() { + return group_clause_.Add(); +} +inline ::pg_query::Node* Query::add_group_clause() { + // @@protoc_insertion_point(field_add:pg_query.Query.group_clause) + return _internal_add_group_clause(); +} +inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& +Query::group_clause() const { + // @@protoc_insertion_point(field_list:pg_query.Query.group_clause) + return group_clause_; +} + +// repeated .pg_query.Node grouping_sets = 23 [json_name = "groupingSets"]; +inline int Query::_internal_grouping_sets_size() const { + return grouping_sets_.size(); +} +inline int Query::grouping_sets_size() const { + return _internal_grouping_sets_size(); +} +inline void Query::clear_grouping_sets() { + grouping_sets_.Clear(); +} +inline ::pg_query::Node* Query::mutable_grouping_sets(int index) { + // @@protoc_insertion_point(field_mutable:pg_query.Query.grouping_sets) + return grouping_sets_.Mutable(index); +} +inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* +Query::mutable_grouping_sets() { + // @@protoc_insertion_point(field_mutable_list:pg_query.Query.grouping_sets) + return &grouping_sets_; +} +inline const ::pg_query::Node& Query::_internal_grouping_sets(int index) const { + return grouping_sets_.Get(index); +} +inline const ::pg_query::Node& Query::grouping_sets(int index) const { + // @@protoc_insertion_point(field_get:pg_query.Query.grouping_sets) + return _internal_grouping_sets(index); +} +inline ::pg_query::Node* Query::_internal_add_grouping_sets() { + return grouping_sets_.Add(); +} +inline ::pg_query::Node* Query::add_grouping_sets() { + // @@protoc_insertion_point(field_add:pg_query.Query.grouping_sets) + return _internal_add_grouping_sets(); +} +inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& +Query::grouping_sets() const { + // @@protoc_insertion_point(field_list:pg_query.Query.grouping_sets) + return grouping_sets_; +} + +// .pg_query.Node having_qual = 24 [json_name = "havingQual"]; +inline bool Query::_internal_has_having_qual() const { + return this != internal_default_instance() && having_qual_ != nullptr; +} +inline bool Query::has_having_qual() const { + return _internal_has_having_qual(); +} +inline void Query::clear_having_qual() { + if (GetArena() == nullptr && having_qual_ != nullptr) { + delete having_qual_; + } + having_qual_ = nullptr; +} +inline const ::pg_query::Node& Query::_internal_having_qual() const { + const ::pg_query::Node* p = having_qual_; + return p != nullptr ? *p : reinterpret_cast( + ::pg_query::_Node_default_instance_); +} +inline const ::pg_query::Node& Query::having_qual() const { + // @@protoc_insertion_point(field_get:pg_query.Query.having_qual) + return _internal_having_qual(); +} +inline void Query::unsafe_arena_set_allocated_having_qual( + ::pg_query::Node* having_qual) { + if (GetArena() == nullptr) { + delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(having_qual_); + } + having_qual_ = having_qual; + if (having_qual) { + + } else { + + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Query.having_qual) +} +inline ::pg_query::Node* Query::release_having_qual() { + + ::pg_query::Node* temp = having_qual_; + having_qual_ = nullptr; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + return temp; +} +inline ::pg_query::Node* Query::unsafe_arena_release_having_qual() { + // @@protoc_insertion_point(field_release:pg_query.Query.having_qual) + + ::pg_query::Node* temp = having_qual_; + having_qual_ = nullptr; + return temp; +} +inline ::pg_query::Node* Query::_internal_mutable_having_qual() { + + if (having_qual_ == nullptr) { + auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); + having_qual_ = p; + } + return having_qual_; +} +inline ::pg_query::Node* Query::mutable_having_qual() { + // @@protoc_insertion_point(field_mutable:pg_query.Query.having_qual) + return _internal_mutable_having_qual(); +} +inline void Query::set_allocated_having_qual(::pg_query::Node* having_qual) { + ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); + if (message_arena == nullptr) { + delete having_qual_; + } + if (having_qual) { + ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = + ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(having_qual); + if (message_arena != submessage_arena) { + having_qual = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( + message_arena, having_qual, submessage_arena); + } + + } else { + + } + having_qual_ = having_qual; + // @@protoc_insertion_point(field_set_allocated:pg_query.Query.having_qual) +} + +// repeated .pg_query.Node window_clause = 25 [json_name = "windowClause"]; +inline int Query::_internal_window_clause_size() const { + return window_clause_.size(); +} +inline int Query::window_clause_size() const { + return _internal_window_clause_size(); +} +inline void Query::clear_window_clause() { + window_clause_.Clear(); +} +inline ::pg_query::Node* Query::mutable_window_clause(int index) { + // @@protoc_insertion_point(field_mutable:pg_query.Query.window_clause) + return window_clause_.Mutable(index); +} +inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* +Query::mutable_window_clause() { + // @@protoc_insertion_point(field_mutable_list:pg_query.Query.window_clause) + return &window_clause_; +} +inline const ::pg_query::Node& Query::_internal_window_clause(int index) const { + return window_clause_.Get(index); +} +inline const ::pg_query::Node& Query::window_clause(int index) const { + // @@protoc_insertion_point(field_get:pg_query.Query.window_clause) + return _internal_window_clause(index); +} +inline ::pg_query::Node* Query::_internal_add_window_clause() { + return window_clause_.Add(); +} +inline ::pg_query::Node* Query::add_window_clause() { + // @@protoc_insertion_point(field_add:pg_query.Query.window_clause) + return _internal_add_window_clause(); +} +inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& +Query::window_clause() const { + // @@protoc_insertion_point(field_list:pg_query.Query.window_clause) + return window_clause_; +} + +// repeated .pg_query.Node distinct_clause = 26 [json_name = "distinctClause"]; +inline int Query::_internal_distinct_clause_size() const { + return distinct_clause_.size(); +} +inline int Query::distinct_clause_size() const { + return _internal_distinct_clause_size(); +} +inline void Query::clear_distinct_clause() { + distinct_clause_.Clear(); +} +inline ::pg_query::Node* Query::mutable_distinct_clause(int index) { + // @@protoc_insertion_point(field_mutable:pg_query.Query.distinct_clause) + return distinct_clause_.Mutable(index); +} +inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* +Query::mutable_distinct_clause() { + // @@protoc_insertion_point(field_mutable_list:pg_query.Query.distinct_clause) + return &distinct_clause_; +} +inline const ::pg_query::Node& Query::_internal_distinct_clause(int index) const { + return distinct_clause_.Get(index); +} +inline const ::pg_query::Node& Query::distinct_clause(int index) const { + // @@protoc_insertion_point(field_get:pg_query.Query.distinct_clause) + return _internal_distinct_clause(index); +} +inline ::pg_query::Node* Query::_internal_add_distinct_clause() { + return distinct_clause_.Add(); +} +inline ::pg_query::Node* Query::add_distinct_clause() { + // @@protoc_insertion_point(field_add:pg_query.Query.distinct_clause) + return _internal_add_distinct_clause(); +} +inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& +Query::distinct_clause() const { + // @@protoc_insertion_point(field_list:pg_query.Query.distinct_clause) + return distinct_clause_; +} + +// repeated .pg_query.Node sort_clause = 27 [json_name = "sortClause"]; +inline int Query::_internal_sort_clause_size() const { + return sort_clause_.size(); +} +inline int Query::sort_clause_size() const { + return _internal_sort_clause_size(); +} +inline void Query::clear_sort_clause() { + sort_clause_.Clear(); +} +inline ::pg_query::Node* Query::mutable_sort_clause(int index) { + // @@protoc_insertion_point(field_mutable:pg_query.Query.sort_clause) + return sort_clause_.Mutable(index); +} +inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* +Query::mutable_sort_clause() { + // @@protoc_insertion_point(field_mutable_list:pg_query.Query.sort_clause) + return &sort_clause_; +} +inline const ::pg_query::Node& Query::_internal_sort_clause(int index) const { + return sort_clause_.Get(index); +} +inline const ::pg_query::Node& Query::sort_clause(int index) const { + // @@protoc_insertion_point(field_get:pg_query.Query.sort_clause) + return _internal_sort_clause(index); +} +inline ::pg_query::Node* Query::_internal_add_sort_clause() { + return sort_clause_.Add(); +} +inline ::pg_query::Node* Query::add_sort_clause() { + // @@protoc_insertion_point(field_add:pg_query.Query.sort_clause) + return _internal_add_sort_clause(); +} +inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& +Query::sort_clause() const { + // @@protoc_insertion_point(field_list:pg_query.Query.sort_clause) + return sort_clause_; +} + +// .pg_query.Node limit_offset = 28 [json_name = "limitOffset"]; +inline bool Query::_internal_has_limit_offset() const { + return this != internal_default_instance() && limit_offset_ != nullptr; +} +inline bool Query::has_limit_offset() const { + return _internal_has_limit_offset(); +} +inline void Query::clear_limit_offset() { + if (GetArena() == nullptr && limit_offset_ != nullptr) { + delete limit_offset_; + } + limit_offset_ = nullptr; +} +inline const ::pg_query::Node& Query::_internal_limit_offset() const { + const ::pg_query::Node* p = limit_offset_; + return p != nullptr ? *p : reinterpret_cast( + ::pg_query::_Node_default_instance_); +} +inline const ::pg_query::Node& Query::limit_offset() const { + // @@protoc_insertion_point(field_get:pg_query.Query.limit_offset) + return _internal_limit_offset(); +} +inline void Query::unsafe_arena_set_allocated_limit_offset( + ::pg_query::Node* limit_offset) { + if (GetArena() == nullptr) { + delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(limit_offset_); + } + limit_offset_ = limit_offset; + if (limit_offset) { + + } else { + + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Query.limit_offset) +} +inline ::pg_query::Node* Query::release_limit_offset() { + + ::pg_query::Node* temp = limit_offset_; + limit_offset_ = nullptr; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + return temp; +} +inline ::pg_query::Node* Query::unsafe_arena_release_limit_offset() { + // @@protoc_insertion_point(field_release:pg_query.Query.limit_offset) + + ::pg_query::Node* temp = limit_offset_; + limit_offset_ = nullptr; + return temp; +} +inline ::pg_query::Node* Query::_internal_mutable_limit_offset() { + + if (limit_offset_ == nullptr) { + auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); + limit_offset_ = p; + } + return limit_offset_; +} +inline ::pg_query::Node* Query::mutable_limit_offset() { + // @@protoc_insertion_point(field_mutable:pg_query.Query.limit_offset) + return _internal_mutable_limit_offset(); +} +inline void Query::set_allocated_limit_offset(::pg_query::Node* limit_offset) { + ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); + if (message_arena == nullptr) { + delete limit_offset_; + } + if (limit_offset) { + ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = + ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(limit_offset); + if (message_arena != submessage_arena) { + limit_offset = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( + message_arena, limit_offset, submessage_arena); + } + + } else { + + } + limit_offset_ = limit_offset; + // @@protoc_insertion_point(field_set_allocated:pg_query.Query.limit_offset) +} + +// .pg_query.Node limit_count = 29 [json_name = "limitCount"]; +inline bool Query::_internal_has_limit_count() const { + return this != internal_default_instance() && limit_count_ != nullptr; +} +inline bool Query::has_limit_count() const { + return _internal_has_limit_count(); +} +inline void Query::clear_limit_count() { + if (GetArena() == nullptr && limit_count_ != nullptr) { + delete limit_count_; + } + limit_count_ = nullptr; +} +inline const ::pg_query::Node& Query::_internal_limit_count() const { + const ::pg_query::Node* p = limit_count_; + return p != nullptr ? *p : reinterpret_cast( + ::pg_query::_Node_default_instance_); +} +inline const ::pg_query::Node& Query::limit_count() const { + // @@protoc_insertion_point(field_get:pg_query.Query.limit_count) + return _internal_limit_count(); +} +inline void Query::unsafe_arena_set_allocated_limit_count( + ::pg_query::Node* limit_count) { + if (GetArena() == nullptr) { + delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(limit_count_); + } + limit_count_ = limit_count; + if (limit_count) { + + } else { + + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Query.limit_count) +} +inline ::pg_query::Node* Query::release_limit_count() { + + ::pg_query::Node* temp = limit_count_; + limit_count_ = nullptr; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + return temp; +} +inline ::pg_query::Node* Query::unsafe_arena_release_limit_count() { + // @@protoc_insertion_point(field_release:pg_query.Query.limit_count) + + ::pg_query::Node* temp = limit_count_; + limit_count_ = nullptr; + return temp; +} +inline ::pg_query::Node* Query::_internal_mutable_limit_count() { + + if (limit_count_ == nullptr) { + auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); + limit_count_ = p; + } + return limit_count_; +} +inline ::pg_query::Node* Query::mutable_limit_count() { + // @@protoc_insertion_point(field_mutable:pg_query.Query.limit_count) + return _internal_mutable_limit_count(); +} +inline void Query::set_allocated_limit_count(::pg_query::Node* limit_count) { + ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); + if (message_arena == nullptr) { + delete limit_count_; + } + if (limit_count) { + ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = + ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(limit_count); + if (message_arena != submessage_arena) { + limit_count = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( + message_arena, limit_count, submessage_arena); + } + + } else { + + } + limit_count_ = limit_count; + // @@protoc_insertion_point(field_set_allocated:pg_query.Query.limit_count) +} + +// .pg_query.LimitOption limit_option = 30 [json_name = "limitOption"]; +inline void Query::clear_limit_option() { + limit_option_ = 0; +} +inline ::pg_query::LimitOption Query::_internal_limit_option() const { + return static_cast< ::pg_query::LimitOption >(limit_option_); +} +inline ::pg_query::LimitOption Query::limit_option() const { + // @@protoc_insertion_point(field_get:pg_query.Query.limit_option) + return _internal_limit_option(); +} +inline void Query::_internal_set_limit_option(::pg_query::LimitOption value) { + + limit_option_ = value; +} +inline void Query::set_limit_option(::pg_query::LimitOption value) { + _internal_set_limit_option(value); + // @@protoc_insertion_point(field_set:pg_query.Query.limit_option) +} + +// repeated .pg_query.Node row_marks = 31 [json_name = "rowMarks"]; +inline int Query::_internal_row_marks_size() const { + return row_marks_.size(); +} +inline int Query::row_marks_size() const { + return _internal_row_marks_size(); +} +inline void Query::clear_row_marks() { + row_marks_.Clear(); +} +inline ::pg_query::Node* Query::mutable_row_marks(int index) { + // @@protoc_insertion_point(field_mutable:pg_query.Query.row_marks) + return row_marks_.Mutable(index); +} +inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* +Query::mutable_row_marks() { + // @@protoc_insertion_point(field_mutable_list:pg_query.Query.row_marks) + return &row_marks_; +} +inline const ::pg_query::Node& Query::_internal_row_marks(int index) const { + return row_marks_.Get(index); +} +inline const ::pg_query::Node& Query::row_marks(int index) const { + // @@protoc_insertion_point(field_get:pg_query.Query.row_marks) + return _internal_row_marks(index); +} +inline ::pg_query::Node* Query::_internal_add_row_marks() { + return row_marks_.Add(); +} +inline ::pg_query::Node* Query::add_row_marks() { + // @@protoc_insertion_point(field_add:pg_query.Query.row_marks) + return _internal_add_row_marks(); +} +inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& +Query::row_marks() const { + // @@protoc_insertion_point(field_list:pg_query.Query.row_marks) + return row_marks_; +} + +// .pg_query.Node set_operations = 32 [json_name = "setOperations"]; +inline bool Query::_internal_has_set_operations() const { + return this != internal_default_instance() && set_operations_ != nullptr; +} +inline bool Query::has_set_operations() const { + return _internal_has_set_operations(); +} +inline void Query::clear_set_operations() { + if (GetArena() == nullptr && set_operations_ != nullptr) { + delete set_operations_; + } + set_operations_ = nullptr; +} +inline const ::pg_query::Node& Query::_internal_set_operations() const { + const ::pg_query::Node* p = set_operations_; + return p != nullptr ? *p : reinterpret_cast( + ::pg_query::_Node_default_instance_); +} +inline const ::pg_query::Node& Query::set_operations() const { + // @@protoc_insertion_point(field_get:pg_query.Query.set_operations) + return _internal_set_operations(); +} +inline void Query::unsafe_arena_set_allocated_set_operations( + ::pg_query::Node* set_operations) { + if (GetArena() == nullptr) { + delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(set_operations_); + } + set_operations_ = set_operations; + if (set_operations) { + + } else { + + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Query.set_operations) +} +inline ::pg_query::Node* Query::release_set_operations() { + + ::pg_query::Node* temp = set_operations_; + set_operations_ = nullptr; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + return temp; +} +inline ::pg_query::Node* Query::unsafe_arena_release_set_operations() { + // @@protoc_insertion_point(field_release:pg_query.Query.set_operations) + + ::pg_query::Node* temp = set_operations_; + set_operations_ = nullptr; + return temp; +} +inline ::pg_query::Node* Query::_internal_mutable_set_operations() { + + if (set_operations_ == nullptr) { + auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); + set_operations_ = p; + } + return set_operations_; +} +inline ::pg_query::Node* Query::mutable_set_operations() { + // @@protoc_insertion_point(field_mutable:pg_query.Query.set_operations) + return _internal_mutable_set_operations(); +} +inline void Query::set_allocated_set_operations(::pg_query::Node* set_operations) { + ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); + if (message_arena == nullptr) { + delete set_operations_; + } + if (set_operations) { + ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = + ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(set_operations); + if (message_arena != submessage_arena) { + set_operations = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( + message_arena, set_operations, submessage_arena); + } + + } else { + + } + set_operations_ = set_operations; + // @@protoc_insertion_point(field_set_allocated:pg_query.Query.set_operations) +} + +// repeated .pg_query.Node constraint_deps = 33 [json_name = "constraintDeps"]; +inline int Query::_internal_constraint_deps_size() const { + return constraint_deps_.size(); +} +inline int Query::constraint_deps_size() const { + return _internal_constraint_deps_size(); +} +inline void Query::clear_constraint_deps() { + constraint_deps_.Clear(); +} +inline ::pg_query::Node* Query::mutable_constraint_deps(int index) { + // @@protoc_insertion_point(field_mutable:pg_query.Query.constraint_deps) + return constraint_deps_.Mutable(index); +} +inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* +Query::mutable_constraint_deps() { + // @@protoc_insertion_point(field_mutable_list:pg_query.Query.constraint_deps) + return &constraint_deps_; +} +inline const ::pg_query::Node& Query::_internal_constraint_deps(int index) const { + return constraint_deps_.Get(index); +} +inline const ::pg_query::Node& Query::constraint_deps(int index) const { + // @@protoc_insertion_point(field_get:pg_query.Query.constraint_deps) + return _internal_constraint_deps(index); +} +inline ::pg_query::Node* Query::_internal_add_constraint_deps() { + return constraint_deps_.Add(); +} +inline ::pg_query::Node* Query::add_constraint_deps() { + // @@protoc_insertion_point(field_add:pg_query.Query.constraint_deps) + return _internal_add_constraint_deps(); +} +inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& +Query::constraint_deps() const { + // @@protoc_insertion_point(field_list:pg_query.Query.constraint_deps) + return constraint_deps_; +} + +// repeated .pg_query.Node with_check_options = 34 [json_name = "withCheckOptions"]; +inline int Query::_internal_with_check_options_size() const { + return with_check_options_.size(); +} +inline int Query::with_check_options_size() const { + return _internal_with_check_options_size(); +} +inline void Query::clear_with_check_options() { + with_check_options_.Clear(); +} +inline ::pg_query::Node* Query::mutable_with_check_options(int index) { + // @@protoc_insertion_point(field_mutable:pg_query.Query.with_check_options) + return with_check_options_.Mutable(index); +} +inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* +Query::mutable_with_check_options() { + // @@protoc_insertion_point(field_mutable_list:pg_query.Query.with_check_options) + return &with_check_options_; +} +inline const ::pg_query::Node& Query::_internal_with_check_options(int index) const { + return with_check_options_.Get(index); +} +inline const ::pg_query::Node& Query::with_check_options(int index) const { + // @@protoc_insertion_point(field_get:pg_query.Query.with_check_options) + return _internal_with_check_options(index); +} +inline ::pg_query::Node* Query::_internal_add_with_check_options() { + return with_check_options_.Add(); +} +inline ::pg_query::Node* Query::add_with_check_options() { + // @@protoc_insertion_point(field_add:pg_query.Query.with_check_options) + return _internal_add_with_check_options(); +} +inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& +Query::with_check_options() const { + // @@protoc_insertion_point(field_list:pg_query.Query.with_check_options) + return with_check_options_; +} + +// int32 stmt_location = 35 [json_name = "stmt_location"]; +inline void Query::clear_stmt_location() { + stmt_location_ = 0; +} +inline ::PROTOBUF_NAMESPACE_ID::int32 Query::_internal_stmt_location() const { + return stmt_location_; +} +inline ::PROTOBUF_NAMESPACE_ID::int32 Query::stmt_location() const { + // @@protoc_insertion_point(field_get:pg_query.Query.stmt_location) + return _internal_stmt_location(); +} +inline void Query::_internal_set_stmt_location(::PROTOBUF_NAMESPACE_ID::int32 value) { + + stmt_location_ = value; +} +inline void Query::set_stmt_location(::PROTOBUF_NAMESPACE_ID::int32 value) { + _internal_set_stmt_location(value); + // @@protoc_insertion_point(field_set:pg_query.Query.stmt_location) +} + +// int32 stmt_len = 36 [json_name = "stmt_len"]; +inline void Query::clear_stmt_len() { + stmt_len_ = 0; +} +inline ::PROTOBUF_NAMESPACE_ID::int32 Query::_internal_stmt_len() const { + return stmt_len_; +} +inline ::PROTOBUF_NAMESPACE_ID::int32 Query::stmt_len() const { + // @@protoc_insertion_point(field_get:pg_query.Query.stmt_len) + return _internal_stmt_len(); +} +inline void Query::_internal_set_stmt_len(::PROTOBUF_NAMESPACE_ID::int32 value) { + + stmt_len_ = value; +} +inline void Query::set_stmt_len(::PROTOBUF_NAMESPACE_ID::int32 value) { + _internal_set_stmt_len(value); + // @@protoc_insertion_point(field_set:pg_query.Query.stmt_len) +} + +// ------------------------------------------------------------------- + +// InsertStmt + +// .pg_query.RangeVar relation = 1 [json_name = "relation"]; +inline bool InsertStmt::_internal_has_relation() const { + return this != internal_default_instance() && relation_ != nullptr; +} +inline bool InsertStmt::has_relation() const { + return _internal_has_relation(); +} +inline void InsertStmt::clear_relation() { + if (GetArena() == nullptr && relation_ != nullptr) { + delete relation_; + } + relation_ = nullptr; +} +inline const ::pg_query::RangeVar& InsertStmt::_internal_relation() const { + const ::pg_query::RangeVar* p = relation_; + return p != nullptr ? *p : reinterpret_cast( + ::pg_query::_RangeVar_default_instance_); +} +inline const ::pg_query::RangeVar& InsertStmt::relation() const { + // @@protoc_insertion_point(field_get:pg_query.InsertStmt.relation) + return _internal_relation(); +} +inline void InsertStmt::unsafe_arena_set_allocated_relation( + ::pg_query::RangeVar* relation) { + if (GetArena() == nullptr) { + delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(relation_); + } + relation_ = relation; + if (relation) { + + } else { + + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.InsertStmt.relation) +} +inline ::pg_query::RangeVar* InsertStmt::release_relation() { + + ::pg_query::RangeVar* temp = relation_; + relation_ = nullptr; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + return temp; +} +inline ::pg_query::RangeVar* InsertStmt::unsafe_arena_release_relation() { + // @@protoc_insertion_point(field_release:pg_query.InsertStmt.relation) + + ::pg_query::RangeVar* temp = relation_; + relation_ = nullptr; + return temp; +} +inline ::pg_query::RangeVar* InsertStmt::_internal_mutable_relation() { + + if (relation_ == nullptr) { + auto* p = CreateMaybeMessage<::pg_query::RangeVar>(GetArena()); + relation_ = p; + } + return relation_; +} +inline ::pg_query::RangeVar* InsertStmt::mutable_relation() { + // @@protoc_insertion_point(field_mutable:pg_query.InsertStmt.relation) + return _internal_mutable_relation(); +} +inline void InsertStmt::set_allocated_relation(::pg_query::RangeVar* relation) { + ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); + if (message_arena == nullptr) { + delete relation_; + } + if (relation) { + ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = + ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(relation); + if (message_arena != submessage_arena) { + relation = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( + message_arena, relation, submessage_arena); + } + + } else { + + } + relation_ = relation; + // @@protoc_insertion_point(field_set_allocated:pg_query.InsertStmt.relation) +} + +// repeated .pg_query.Node cols = 2 [json_name = "cols"]; +inline int InsertStmt::_internal_cols_size() const { + return cols_.size(); +} +inline int InsertStmt::cols_size() const { + return _internal_cols_size(); +} +inline void InsertStmt::clear_cols() { + cols_.Clear(); +} +inline ::pg_query::Node* InsertStmt::mutable_cols(int index) { + // @@protoc_insertion_point(field_mutable:pg_query.InsertStmt.cols) + return cols_.Mutable(index); +} +inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* +InsertStmt::mutable_cols() { + // @@protoc_insertion_point(field_mutable_list:pg_query.InsertStmt.cols) + return &cols_; +} +inline const ::pg_query::Node& InsertStmt::_internal_cols(int index) const { + return cols_.Get(index); +} +inline const ::pg_query::Node& InsertStmt::cols(int index) const { + // @@protoc_insertion_point(field_get:pg_query.InsertStmt.cols) + return _internal_cols(index); +} +inline ::pg_query::Node* InsertStmt::_internal_add_cols() { + return cols_.Add(); +} +inline ::pg_query::Node* InsertStmt::add_cols() { + // @@protoc_insertion_point(field_add:pg_query.InsertStmt.cols) + return _internal_add_cols(); +} +inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& +InsertStmt::cols() const { + // @@protoc_insertion_point(field_list:pg_query.InsertStmt.cols) + return cols_; +} + +// .pg_query.Node select_stmt = 3 [json_name = "selectStmt"]; +inline bool InsertStmt::_internal_has_select_stmt() const { + return this != internal_default_instance() && select_stmt_ != nullptr; +} +inline bool InsertStmt::has_select_stmt() const { + return _internal_has_select_stmt(); +} +inline void InsertStmt::clear_select_stmt() { + if (GetArena() == nullptr && select_stmt_ != nullptr) { + delete select_stmt_; + } + select_stmt_ = nullptr; +} +inline const ::pg_query::Node& InsertStmt::_internal_select_stmt() const { + const ::pg_query::Node* p = select_stmt_; + return p != nullptr ? *p : reinterpret_cast( + ::pg_query::_Node_default_instance_); +} +inline const ::pg_query::Node& InsertStmt::select_stmt() const { + // @@protoc_insertion_point(field_get:pg_query.InsertStmt.select_stmt) + return _internal_select_stmt(); +} +inline void InsertStmt::unsafe_arena_set_allocated_select_stmt( + ::pg_query::Node* select_stmt) { + if (GetArena() == nullptr) { + delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(select_stmt_); + } + select_stmt_ = select_stmt; + if (select_stmt) { + + } else { + + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.InsertStmt.select_stmt) +} +inline ::pg_query::Node* InsertStmt::release_select_stmt() { + + ::pg_query::Node* temp = select_stmt_; + select_stmt_ = nullptr; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + return temp; +} +inline ::pg_query::Node* InsertStmt::unsafe_arena_release_select_stmt() { + // @@protoc_insertion_point(field_release:pg_query.InsertStmt.select_stmt) + + ::pg_query::Node* temp = select_stmt_; + select_stmt_ = nullptr; + return temp; +} +inline ::pg_query::Node* InsertStmt::_internal_mutable_select_stmt() { + + if (select_stmt_ == nullptr) { + auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); + select_stmt_ = p; + } + return select_stmt_; +} +inline ::pg_query::Node* InsertStmt::mutable_select_stmt() { + // @@protoc_insertion_point(field_mutable:pg_query.InsertStmt.select_stmt) + return _internal_mutable_select_stmt(); +} +inline void InsertStmt::set_allocated_select_stmt(::pg_query::Node* select_stmt) { + ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); + if (message_arena == nullptr) { + delete select_stmt_; + } + if (select_stmt) { + ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = + ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(select_stmt); + if (message_arena != submessage_arena) { + select_stmt = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( + message_arena, select_stmt, submessage_arena); + } + + } else { + + } + select_stmt_ = select_stmt; + // @@protoc_insertion_point(field_set_allocated:pg_query.InsertStmt.select_stmt) +} + +// .pg_query.OnConflictClause on_conflict_clause = 4 [json_name = "onConflictClause"]; +inline bool InsertStmt::_internal_has_on_conflict_clause() const { + return this != internal_default_instance() && on_conflict_clause_ != nullptr; +} +inline bool InsertStmt::has_on_conflict_clause() const { + return _internal_has_on_conflict_clause(); +} +inline void InsertStmt::clear_on_conflict_clause() { + if (GetArena() == nullptr && on_conflict_clause_ != nullptr) { + delete on_conflict_clause_; + } + on_conflict_clause_ = nullptr; +} +inline const ::pg_query::OnConflictClause& InsertStmt::_internal_on_conflict_clause() const { + const ::pg_query::OnConflictClause* p = on_conflict_clause_; + return p != nullptr ? *p : reinterpret_cast( + ::pg_query::_OnConflictClause_default_instance_); +} +inline const ::pg_query::OnConflictClause& InsertStmt::on_conflict_clause() const { + // @@protoc_insertion_point(field_get:pg_query.InsertStmt.on_conflict_clause) + return _internal_on_conflict_clause(); +} +inline void InsertStmt::unsafe_arena_set_allocated_on_conflict_clause( + ::pg_query::OnConflictClause* on_conflict_clause) { + if (GetArena() == nullptr) { + delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(on_conflict_clause_); + } + on_conflict_clause_ = on_conflict_clause; + if (on_conflict_clause) { + + } else { + + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.InsertStmt.on_conflict_clause) +} +inline ::pg_query::OnConflictClause* InsertStmt::release_on_conflict_clause() { + + ::pg_query::OnConflictClause* temp = on_conflict_clause_; + on_conflict_clause_ = nullptr; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + return temp; +} +inline ::pg_query::OnConflictClause* InsertStmt::unsafe_arena_release_on_conflict_clause() { + // @@protoc_insertion_point(field_release:pg_query.InsertStmt.on_conflict_clause) + + ::pg_query::OnConflictClause* temp = on_conflict_clause_; + on_conflict_clause_ = nullptr; + return temp; +} +inline ::pg_query::OnConflictClause* InsertStmt::_internal_mutable_on_conflict_clause() { + + if (on_conflict_clause_ == nullptr) { + auto* p = CreateMaybeMessage<::pg_query::OnConflictClause>(GetArena()); + on_conflict_clause_ = p; + } + return on_conflict_clause_; +} +inline ::pg_query::OnConflictClause* InsertStmt::mutable_on_conflict_clause() { + // @@protoc_insertion_point(field_mutable:pg_query.InsertStmt.on_conflict_clause) + return _internal_mutable_on_conflict_clause(); +} +inline void InsertStmt::set_allocated_on_conflict_clause(::pg_query::OnConflictClause* on_conflict_clause) { + ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); + if (message_arena == nullptr) { + delete on_conflict_clause_; + } + if (on_conflict_clause) { + ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = + ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(on_conflict_clause); + if (message_arena != submessage_arena) { + on_conflict_clause = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( + message_arena, on_conflict_clause, submessage_arena); + } + + } else { + + } + on_conflict_clause_ = on_conflict_clause; + // @@protoc_insertion_point(field_set_allocated:pg_query.InsertStmt.on_conflict_clause) +} + +// repeated .pg_query.Node returning_list = 5 [json_name = "returningList"]; +inline int InsertStmt::_internal_returning_list_size() const { + return returning_list_.size(); +} +inline int InsertStmt::returning_list_size() const { + return _internal_returning_list_size(); +} +inline void InsertStmt::clear_returning_list() { + returning_list_.Clear(); +} +inline ::pg_query::Node* InsertStmt::mutable_returning_list(int index) { + // @@protoc_insertion_point(field_mutable:pg_query.InsertStmt.returning_list) + return returning_list_.Mutable(index); +} +inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* +InsertStmt::mutable_returning_list() { + // @@protoc_insertion_point(field_mutable_list:pg_query.InsertStmt.returning_list) + return &returning_list_; +} +inline const ::pg_query::Node& InsertStmt::_internal_returning_list(int index) const { + return returning_list_.Get(index); +} +inline const ::pg_query::Node& InsertStmt::returning_list(int index) const { + // @@protoc_insertion_point(field_get:pg_query.InsertStmt.returning_list) + return _internal_returning_list(index); +} +inline ::pg_query::Node* InsertStmt::_internal_add_returning_list() { + return returning_list_.Add(); +} +inline ::pg_query::Node* InsertStmt::add_returning_list() { + // @@protoc_insertion_point(field_add:pg_query.InsertStmt.returning_list) + return _internal_add_returning_list(); +} +inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& +InsertStmt::returning_list() const { + // @@protoc_insertion_point(field_list:pg_query.InsertStmt.returning_list) + return returning_list_; +} + +// .pg_query.WithClause with_clause = 6 [json_name = "withClause"]; +inline bool InsertStmt::_internal_has_with_clause() const { + return this != internal_default_instance() && with_clause_ != nullptr; +} +inline bool InsertStmt::has_with_clause() const { + return _internal_has_with_clause(); +} +inline void InsertStmt::clear_with_clause() { + if (GetArena() == nullptr && with_clause_ != nullptr) { + delete with_clause_; + } + with_clause_ = nullptr; +} +inline const ::pg_query::WithClause& InsertStmt::_internal_with_clause() const { + const ::pg_query::WithClause* p = with_clause_; + return p != nullptr ? *p : reinterpret_cast( + ::pg_query::_WithClause_default_instance_); +} +inline const ::pg_query::WithClause& InsertStmt::with_clause() const { + // @@protoc_insertion_point(field_get:pg_query.InsertStmt.with_clause) + return _internal_with_clause(); +} +inline void InsertStmt::unsafe_arena_set_allocated_with_clause( + ::pg_query::WithClause* with_clause) { + if (GetArena() == nullptr) { + delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(with_clause_); + } + with_clause_ = with_clause; + if (with_clause) { + + } else { + + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.InsertStmt.with_clause) +} +inline ::pg_query::WithClause* InsertStmt::release_with_clause() { + + ::pg_query::WithClause* temp = with_clause_; + with_clause_ = nullptr; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + return temp; +} +inline ::pg_query::WithClause* InsertStmt::unsafe_arena_release_with_clause() { + // @@protoc_insertion_point(field_release:pg_query.InsertStmt.with_clause) + + ::pg_query::WithClause* temp = with_clause_; + with_clause_ = nullptr; + return temp; +} +inline ::pg_query::WithClause* InsertStmt::_internal_mutable_with_clause() { + + if (with_clause_ == nullptr) { + auto* p = CreateMaybeMessage<::pg_query::WithClause>(GetArena()); + with_clause_ = p; + } + return with_clause_; +} +inline ::pg_query::WithClause* InsertStmt::mutable_with_clause() { + // @@protoc_insertion_point(field_mutable:pg_query.InsertStmt.with_clause) + return _internal_mutable_with_clause(); +} +inline void InsertStmt::set_allocated_with_clause(::pg_query::WithClause* with_clause) { + ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); + if (message_arena == nullptr) { + delete with_clause_; + } + if (with_clause) { + ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = + ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(with_clause); + if (message_arena != submessage_arena) { + with_clause = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( + message_arena, with_clause, submessage_arena); + } + + } else { + + } + with_clause_ = with_clause; + // @@protoc_insertion_point(field_set_allocated:pg_query.InsertStmt.with_clause) +} + +// .pg_query.OverridingKind override = 7 [json_name = "override"]; +inline void InsertStmt::clear_override() { + override_ = 0; +} +inline ::pg_query::OverridingKind InsertStmt::_internal_override() const { + return static_cast< ::pg_query::OverridingKind >(override_); +} +inline ::pg_query::OverridingKind InsertStmt::override() const { + // @@protoc_insertion_point(field_get:pg_query.InsertStmt.override) + return _internal_override(); +} +inline void InsertStmt::_internal_set_override(::pg_query::OverridingKind value) { + + override_ = value; +} +inline void InsertStmt::set_override(::pg_query::OverridingKind value) { + _internal_set_override(value); + // @@protoc_insertion_point(field_set:pg_query.InsertStmt.override) +} + +// ------------------------------------------------------------------- + +// DeleteStmt + +// .pg_query.RangeVar relation = 1 [json_name = "relation"]; +inline bool DeleteStmt::_internal_has_relation() const { + return this != internal_default_instance() && relation_ != nullptr; +} +inline bool DeleteStmt::has_relation() const { + return _internal_has_relation(); +} +inline void DeleteStmt::clear_relation() { + if (GetArena() == nullptr && relation_ != nullptr) { + delete relation_; + } + relation_ = nullptr; +} +inline const ::pg_query::RangeVar& DeleteStmt::_internal_relation() const { + const ::pg_query::RangeVar* p = relation_; + return p != nullptr ? *p : reinterpret_cast( + ::pg_query::_RangeVar_default_instance_); +} +inline const ::pg_query::RangeVar& DeleteStmt::relation() const { + // @@protoc_insertion_point(field_get:pg_query.DeleteStmt.relation) + return _internal_relation(); +} +inline void DeleteStmt::unsafe_arena_set_allocated_relation( + ::pg_query::RangeVar* relation) { + if (GetArena() == nullptr) { + delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(relation_); + } + relation_ = relation; + if (relation) { + + } else { + + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.DeleteStmt.relation) +} +inline ::pg_query::RangeVar* DeleteStmt::release_relation() { + + ::pg_query::RangeVar* temp = relation_; + relation_ = nullptr; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + return temp; +} +inline ::pg_query::RangeVar* DeleteStmt::unsafe_arena_release_relation() { + // @@protoc_insertion_point(field_release:pg_query.DeleteStmt.relation) + + ::pg_query::RangeVar* temp = relation_; + relation_ = nullptr; + return temp; +} +inline ::pg_query::RangeVar* DeleteStmt::_internal_mutable_relation() { + + if (relation_ == nullptr) { + auto* p = CreateMaybeMessage<::pg_query::RangeVar>(GetArena()); + relation_ = p; + } + return relation_; +} +inline ::pg_query::RangeVar* DeleteStmt::mutable_relation() { + // @@protoc_insertion_point(field_mutable:pg_query.DeleteStmt.relation) + return _internal_mutable_relation(); +} +inline void DeleteStmt::set_allocated_relation(::pg_query::RangeVar* relation) { + ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); + if (message_arena == nullptr) { + delete relation_; + } + if (relation) { + ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = + ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(relation); + if (message_arena != submessage_arena) { + relation = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( + message_arena, relation, submessage_arena); + } + + } else { + + } + relation_ = relation; + // @@protoc_insertion_point(field_set_allocated:pg_query.DeleteStmt.relation) +} + +// repeated .pg_query.Node using_clause = 2 [json_name = "usingClause"]; +inline int DeleteStmt::_internal_using_clause_size() const { + return using_clause_.size(); +} +inline int DeleteStmt::using_clause_size() const { + return _internal_using_clause_size(); +} +inline void DeleteStmt::clear_using_clause() { + using_clause_.Clear(); +} +inline ::pg_query::Node* DeleteStmt::mutable_using_clause(int index) { + // @@protoc_insertion_point(field_mutable:pg_query.DeleteStmt.using_clause) + return using_clause_.Mutable(index); +} +inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* +DeleteStmt::mutable_using_clause() { + // @@protoc_insertion_point(field_mutable_list:pg_query.DeleteStmt.using_clause) + return &using_clause_; +} +inline const ::pg_query::Node& DeleteStmt::_internal_using_clause(int index) const { + return using_clause_.Get(index); +} +inline const ::pg_query::Node& DeleteStmt::using_clause(int index) const { + // @@protoc_insertion_point(field_get:pg_query.DeleteStmt.using_clause) + return _internal_using_clause(index); +} +inline ::pg_query::Node* DeleteStmt::_internal_add_using_clause() { + return using_clause_.Add(); +} +inline ::pg_query::Node* DeleteStmt::add_using_clause() { + // @@protoc_insertion_point(field_add:pg_query.DeleteStmt.using_clause) + return _internal_add_using_clause(); +} +inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& +DeleteStmt::using_clause() const { + // @@protoc_insertion_point(field_list:pg_query.DeleteStmt.using_clause) + return using_clause_; +} + +// .pg_query.Node where_clause = 3 [json_name = "whereClause"]; +inline bool DeleteStmt::_internal_has_where_clause() const { + return this != internal_default_instance() && where_clause_ != nullptr; +} +inline bool DeleteStmt::has_where_clause() const { + return _internal_has_where_clause(); +} +inline void DeleteStmt::clear_where_clause() { + if (GetArena() == nullptr && where_clause_ != nullptr) { + delete where_clause_; + } + where_clause_ = nullptr; +} +inline const ::pg_query::Node& DeleteStmt::_internal_where_clause() const { + const ::pg_query::Node* p = where_clause_; + return p != nullptr ? *p : reinterpret_cast( + ::pg_query::_Node_default_instance_); +} +inline const ::pg_query::Node& DeleteStmt::where_clause() const { + // @@protoc_insertion_point(field_get:pg_query.DeleteStmt.where_clause) + return _internal_where_clause(); +} +inline void DeleteStmt::unsafe_arena_set_allocated_where_clause( + ::pg_query::Node* where_clause) { + if (GetArena() == nullptr) { + delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(where_clause_); + } + where_clause_ = where_clause; + if (where_clause) { + + } else { + + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.DeleteStmt.where_clause) +} +inline ::pg_query::Node* DeleteStmt::release_where_clause() { + + ::pg_query::Node* temp = where_clause_; + where_clause_ = nullptr; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + return temp; +} +inline ::pg_query::Node* DeleteStmt::unsafe_arena_release_where_clause() { + // @@protoc_insertion_point(field_release:pg_query.DeleteStmt.where_clause) + + ::pg_query::Node* temp = where_clause_; + where_clause_ = nullptr; + return temp; +} +inline ::pg_query::Node* DeleteStmt::_internal_mutable_where_clause() { + + if (where_clause_ == nullptr) { + auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); + where_clause_ = p; + } + return where_clause_; +} +inline ::pg_query::Node* DeleteStmt::mutable_where_clause() { + // @@protoc_insertion_point(field_mutable:pg_query.DeleteStmt.where_clause) + return _internal_mutable_where_clause(); +} +inline void DeleteStmt::set_allocated_where_clause(::pg_query::Node* where_clause) { + ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); + if (message_arena == nullptr) { + delete where_clause_; + } + if (where_clause) { + ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = + ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(where_clause); + if (message_arena != submessage_arena) { + where_clause = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( + message_arena, where_clause, submessage_arena); + } + + } else { + + } + where_clause_ = where_clause; + // @@protoc_insertion_point(field_set_allocated:pg_query.DeleteStmt.where_clause) +} + +// repeated .pg_query.Node returning_list = 4 [json_name = "returningList"]; +inline int DeleteStmt::_internal_returning_list_size() const { + return returning_list_.size(); +} +inline int DeleteStmt::returning_list_size() const { + return _internal_returning_list_size(); +} +inline void DeleteStmt::clear_returning_list() { + returning_list_.Clear(); +} +inline ::pg_query::Node* DeleteStmt::mutable_returning_list(int index) { + // @@protoc_insertion_point(field_mutable:pg_query.DeleteStmt.returning_list) + return returning_list_.Mutable(index); +} +inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* +DeleteStmt::mutable_returning_list() { + // @@protoc_insertion_point(field_mutable_list:pg_query.DeleteStmt.returning_list) + return &returning_list_; +} +inline const ::pg_query::Node& DeleteStmt::_internal_returning_list(int index) const { + return returning_list_.Get(index); +} +inline const ::pg_query::Node& DeleteStmt::returning_list(int index) const { + // @@protoc_insertion_point(field_get:pg_query.DeleteStmt.returning_list) + return _internal_returning_list(index); +} +inline ::pg_query::Node* DeleteStmt::_internal_add_returning_list() { + return returning_list_.Add(); +} +inline ::pg_query::Node* DeleteStmt::add_returning_list() { + // @@protoc_insertion_point(field_add:pg_query.DeleteStmt.returning_list) + return _internal_add_returning_list(); +} +inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& +DeleteStmt::returning_list() const { + // @@protoc_insertion_point(field_list:pg_query.DeleteStmt.returning_list) + return returning_list_; +} + +// .pg_query.WithClause with_clause = 5 [json_name = "withClause"]; +inline bool DeleteStmt::_internal_has_with_clause() const { + return this != internal_default_instance() && with_clause_ != nullptr; +} +inline bool DeleteStmt::has_with_clause() const { + return _internal_has_with_clause(); +} +inline void DeleteStmt::clear_with_clause() { + if (GetArena() == nullptr && with_clause_ != nullptr) { + delete with_clause_; + } + with_clause_ = nullptr; +} +inline const ::pg_query::WithClause& DeleteStmt::_internal_with_clause() const { + const ::pg_query::WithClause* p = with_clause_; + return p != nullptr ? *p : reinterpret_cast( + ::pg_query::_WithClause_default_instance_); +} +inline const ::pg_query::WithClause& DeleteStmt::with_clause() const { + // @@protoc_insertion_point(field_get:pg_query.DeleteStmt.with_clause) + return _internal_with_clause(); +} +inline void DeleteStmt::unsafe_arena_set_allocated_with_clause( + ::pg_query::WithClause* with_clause) { + if (GetArena() == nullptr) { + delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(with_clause_); + } + with_clause_ = with_clause; + if (with_clause) { + + } else { + + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.DeleteStmt.with_clause) +} +inline ::pg_query::WithClause* DeleteStmt::release_with_clause() { + + ::pg_query::WithClause* temp = with_clause_; + with_clause_ = nullptr; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + return temp; +} +inline ::pg_query::WithClause* DeleteStmt::unsafe_arena_release_with_clause() { + // @@protoc_insertion_point(field_release:pg_query.DeleteStmt.with_clause) + + ::pg_query::WithClause* temp = with_clause_; + with_clause_ = nullptr; + return temp; +} +inline ::pg_query::WithClause* DeleteStmt::_internal_mutable_with_clause() { + + if (with_clause_ == nullptr) { + auto* p = CreateMaybeMessage<::pg_query::WithClause>(GetArena()); + with_clause_ = p; + } + return with_clause_; +} +inline ::pg_query::WithClause* DeleteStmt::mutable_with_clause() { + // @@protoc_insertion_point(field_mutable:pg_query.DeleteStmt.with_clause) + return _internal_mutable_with_clause(); +} +inline void DeleteStmt::set_allocated_with_clause(::pg_query::WithClause* with_clause) { + ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); + if (message_arena == nullptr) { + delete with_clause_; + } + if (with_clause) { + ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = + ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(with_clause); + if (message_arena != submessage_arena) { + with_clause = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( + message_arena, with_clause, submessage_arena); + } + + } else { + + } + with_clause_ = with_clause; + // @@protoc_insertion_point(field_set_allocated:pg_query.DeleteStmt.with_clause) +} + +// ------------------------------------------------------------------- + +// UpdateStmt + +// .pg_query.RangeVar relation = 1 [json_name = "relation"]; +inline bool UpdateStmt::_internal_has_relation() const { + return this != internal_default_instance() && relation_ != nullptr; +} +inline bool UpdateStmt::has_relation() const { + return _internal_has_relation(); +} +inline void UpdateStmt::clear_relation() { + if (GetArena() == nullptr && relation_ != nullptr) { + delete relation_; + } + relation_ = nullptr; +} +inline const ::pg_query::RangeVar& UpdateStmt::_internal_relation() const { + const ::pg_query::RangeVar* p = relation_; + return p != nullptr ? *p : reinterpret_cast( + ::pg_query::_RangeVar_default_instance_); +} +inline const ::pg_query::RangeVar& UpdateStmt::relation() const { + // @@protoc_insertion_point(field_get:pg_query.UpdateStmt.relation) + return _internal_relation(); +} +inline void UpdateStmt::unsafe_arena_set_allocated_relation( + ::pg_query::RangeVar* relation) { + if (GetArena() == nullptr) { + delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(relation_); + } + relation_ = relation; + if (relation) { + + } else { + + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.UpdateStmt.relation) +} +inline ::pg_query::RangeVar* UpdateStmt::release_relation() { + + ::pg_query::RangeVar* temp = relation_; + relation_ = nullptr; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + return temp; +} +inline ::pg_query::RangeVar* UpdateStmt::unsafe_arena_release_relation() { + // @@protoc_insertion_point(field_release:pg_query.UpdateStmt.relation) + + ::pg_query::RangeVar* temp = relation_; + relation_ = nullptr; + return temp; +} +inline ::pg_query::RangeVar* UpdateStmt::_internal_mutable_relation() { + + if (relation_ == nullptr) { + auto* p = CreateMaybeMessage<::pg_query::RangeVar>(GetArena()); + relation_ = p; + } + return relation_; +} +inline ::pg_query::RangeVar* UpdateStmt::mutable_relation() { + // @@protoc_insertion_point(field_mutable:pg_query.UpdateStmt.relation) + return _internal_mutable_relation(); +} +inline void UpdateStmt::set_allocated_relation(::pg_query::RangeVar* relation) { + ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); + if (message_arena == nullptr) { + delete relation_; + } + if (relation) { + ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = + ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(relation); + if (message_arena != submessage_arena) { + relation = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( + message_arena, relation, submessage_arena); + } + + } else { + + } + relation_ = relation; + // @@protoc_insertion_point(field_set_allocated:pg_query.UpdateStmt.relation) +} + +// repeated .pg_query.Node target_list = 2 [json_name = "targetList"]; +inline int UpdateStmt::_internal_target_list_size() const { + return target_list_.size(); +} +inline int UpdateStmt::target_list_size() const { + return _internal_target_list_size(); +} +inline void UpdateStmt::clear_target_list() { + target_list_.Clear(); +} +inline ::pg_query::Node* UpdateStmt::mutable_target_list(int index) { + // @@protoc_insertion_point(field_mutable:pg_query.UpdateStmt.target_list) + return target_list_.Mutable(index); +} +inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* +UpdateStmt::mutable_target_list() { + // @@protoc_insertion_point(field_mutable_list:pg_query.UpdateStmt.target_list) + return &target_list_; +} +inline const ::pg_query::Node& UpdateStmt::_internal_target_list(int index) const { + return target_list_.Get(index); +} +inline const ::pg_query::Node& UpdateStmt::target_list(int index) const { + // @@protoc_insertion_point(field_get:pg_query.UpdateStmt.target_list) + return _internal_target_list(index); +} +inline ::pg_query::Node* UpdateStmt::_internal_add_target_list() { + return target_list_.Add(); +} +inline ::pg_query::Node* UpdateStmt::add_target_list() { + // @@protoc_insertion_point(field_add:pg_query.UpdateStmt.target_list) + return _internal_add_target_list(); +} +inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& +UpdateStmt::target_list() const { + // @@protoc_insertion_point(field_list:pg_query.UpdateStmt.target_list) + return target_list_; +} + +// .pg_query.Node where_clause = 3 [json_name = "whereClause"]; +inline bool UpdateStmt::_internal_has_where_clause() const { + return this != internal_default_instance() && where_clause_ != nullptr; +} +inline bool UpdateStmt::has_where_clause() const { + return _internal_has_where_clause(); +} +inline void UpdateStmt::clear_where_clause() { + if (GetArena() == nullptr && where_clause_ != nullptr) { + delete where_clause_; + } + where_clause_ = nullptr; +} +inline const ::pg_query::Node& UpdateStmt::_internal_where_clause() const { + const ::pg_query::Node* p = where_clause_; + return p != nullptr ? *p : reinterpret_cast( + ::pg_query::_Node_default_instance_); +} +inline const ::pg_query::Node& UpdateStmt::where_clause() const { + // @@protoc_insertion_point(field_get:pg_query.UpdateStmt.where_clause) + return _internal_where_clause(); +} +inline void UpdateStmt::unsafe_arena_set_allocated_where_clause( + ::pg_query::Node* where_clause) { + if (GetArena() == nullptr) { + delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(where_clause_); + } + where_clause_ = where_clause; + if (where_clause) { + + } else { + + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.UpdateStmt.where_clause) +} +inline ::pg_query::Node* UpdateStmt::release_where_clause() { + + ::pg_query::Node* temp = where_clause_; + where_clause_ = nullptr; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + return temp; +} +inline ::pg_query::Node* UpdateStmt::unsafe_arena_release_where_clause() { + // @@protoc_insertion_point(field_release:pg_query.UpdateStmt.where_clause) + + ::pg_query::Node* temp = where_clause_; + where_clause_ = nullptr; + return temp; +} +inline ::pg_query::Node* UpdateStmt::_internal_mutable_where_clause() { + + if (where_clause_ == nullptr) { + auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); + where_clause_ = p; + } + return where_clause_; +} +inline ::pg_query::Node* UpdateStmt::mutable_where_clause() { + // @@protoc_insertion_point(field_mutable:pg_query.UpdateStmt.where_clause) + return _internal_mutable_where_clause(); +} +inline void UpdateStmt::set_allocated_where_clause(::pg_query::Node* where_clause) { + ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); + if (message_arena == nullptr) { + delete where_clause_; + } + if (where_clause) { + ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = + ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(where_clause); + if (message_arena != submessage_arena) { + where_clause = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( + message_arena, where_clause, submessage_arena); + } + + } else { + + } + where_clause_ = where_clause; + // @@protoc_insertion_point(field_set_allocated:pg_query.UpdateStmt.where_clause) +} + +// repeated .pg_query.Node from_clause = 4 [json_name = "fromClause"]; +inline int UpdateStmt::_internal_from_clause_size() const { + return from_clause_.size(); +} +inline int UpdateStmt::from_clause_size() const { + return _internal_from_clause_size(); +} +inline void UpdateStmt::clear_from_clause() { + from_clause_.Clear(); +} +inline ::pg_query::Node* UpdateStmt::mutable_from_clause(int index) { + // @@protoc_insertion_point(field_mutable:pg_query.UpdateStmt.from_clause) + return from_clause_.Mutable(index); +} +inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* +UpdateStmt::mutable_from_clause() { + // @@protoc_insertion_point(field_mutable_list:pg_query.UpdateStmt.from_clause) + return &from_clause_; +} +inline const ::pg_query::Node& UpdateStmt::_internal_from_clause(int index) const { + return from_clause_.Get(index); +} +inline const ::pg_query::Node& UpdateStmt::from_clause(int index) const { + // @@protoc_insertion_point(field_get:pg_query.UpdateStmt.from_clause) + return _internal_from_clause(index); +} +inline ::pg_query::Node* UpdateStmt::_internal_add_from_clause() { + return from_clause_.Add(); +} +inline ::pg_query::Node* UpdateStmt::add_from_clause() { + // @@protoc_insertion_point(field_add:pg_query.UpdateStmt.from_clause) + return _internal_add_from_clause(); +} +inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& +UpdateStmt::from_clause() const { + // @@protoc_insertion_point(field_list:pg_query.UpdateStmt.from_clause) + return from_clause_; +} + +// repeated .pg_query.Node returning_list = 5 [json_name = "returningList"]; +inline int UpdateStmt::_internal_returning_list_size() const { + return returning_list_.size(); +} +inline int UpdateStmt::returning_list_size() const { + return _internal_returning_list_size(); +} +inline void UpdateStmt::clear_returning_list() { + returning_list_.Clear(); +} +inline ::pg_query::Node* UpdateStmt::mutable_returning_list(int index) { + // @@protoc_insertion_point(field_mutable:pg_query.UpdateStmt.returning_list) + return returning_list_.Mutable(index); +} +inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* +UpdateStmt::mutable_returning_list() { + // @@protoc_insertion_point(field_mutable_list:pg_query.UpdateStmt.returning_list) + return &returning_list_; +} +inline const ::pg_query::Node& UpdateStmt::_internal_returning_list(int index) const { + return returning_list_.Get(index); +} +inline const ::pg_query::Node& UpdateStmt::returning_list(int index) const { + // @@protoc_insertion_point(field_get:pg_query.UpdateStmt.returning_list) + return _internal_returning_list(index); +} +inline ::pg_query::Node* UpdateStmt::_internal_add_returning_list() { + return returning_list_.Add(); +} +inline ::pg_query::Node* UpdateStmt::add_returning_list() { + // @@protoc_insertion_point(field_add:pg_query.UpdateStmt.returning_list) + return _internal_add_returning_list(); +} +inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& +UpdateStmt::returning_list() const { + // @@protoc_insertion_point(field_list:pg_query.UpdateStmt.returning_list) + return returning_list_; +} + +// .pg_query.WithClause with_clause = 6 [json_name = "withClause"]; +inline bool UpdateStmt::_internal_has_with_clause() const { + return this != internal_default_instance() && with_clause_ != nullptr; +} +inline bool UpdateStmt::has_with_clause() const { + return _internal_has_with_clause(); +} +inline void UpdateStmt::clear_with_clause() { + if (GetArena() == nullptr && with_clause_ != nullptr) { + delete with_clause_; + } + with_clause_ = nullptr; +} +inline const ::pg_query::WithClause& UpdateStmt::_internal_with_clause() const { + const ::pg_query::WithClause* p = with_clause_; + return p != nullptr ? *p : reinterpret_cast( + ::pg_query::_WithClause_default_instance_); +} +inline const ::pg_query::WithClause& UpdateStmt::with_clause() const { + // @@protoc_insertion_point(field_get:pg_query.UpdateStmt.with_clause) + return _internal_with_clause(); +} +inline void UpdateStmt::unsafe_arena_set_allocated_with_clause( + ::pg_query::WithClause* with_clause) { + if (GetArena() == nullptr) { + delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(with_clause_); + } + with_clause_ = with_clause; + if (with_clause) { + + } else { + + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.UpdateStmt.with_clause) +} +inline ::pg_query::WithClause* UpdateStmt::release_with_clause() { + + ::pg_query::WithClause* temp = with_clause_; + with_clause_ = nullptr; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + return temp; +} +inline ::pg_query::WithClause* UpdateStmt::unsafe_arena_release_with_clause() { + // @@protoc_insertion_point(field_release:pg_query.UpdateStmt.with_clause) + + ::pg_query::WithClause* temp = with_clause_; + with_clause_ = nullptr; + return temp; +} +inline ::pg_query::WithClause* UpdateStmt::_internal_mutable_with_clause() { + + if (with_clause_ == nullptr) { + auto* p = CreateMaybeMessage<::pg_query::WithClause>(GetArena()); + with_clause_ = p; + } + return with_clause_; +} +inline ::pg_query::WithClause* UpdateStmt::mutable_with_clause() { + // @@protoc_insertion_point(field_mutable:pg_query.UpdateStmt.with_clause) + return _internal_mutable_with_clause(); +} +inline void UpdateStmt::set_allocated_with_clause(::pg_query::WithClause* with_clause) { + ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); + if (message_arena == nullptr) { + delete with_clause_; + } + if (with_clause) { + ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = + ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(with_clause); + if (message_arena != submessage_arena) { + with_clause = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( + message_arena, with_clause, submessage_arena); + } + + } else { + + } + with_clause_ = with_clause; + // @@protoc_insertion_point(field_set_allocated:pg_query.UpdateStmt.with_clause) +} + +// ------------------------------------------------------------------- + +// SelectStmt + +// repeated .pg_query.Node distinct_clause = 1 [json_name = "distinctClause"]; +inline int SelectStmt::_internal_distinct_clause_size() const { + return distinct_clause_.size(); +} +inline int SelectStmt::distinct_clause_size() const { + return _internal_distinct_clause_size(); +} +inline void SelectStmt::clear_distinct_clause() { + distinct_clause_.Clear(); +} +inline ::pg_query::Node* SelectStmt::mutable_distinct_clause(int index) { + // @@protoc_insertion_point(field_mutable:pg_query.SelectStmt.distinct_clause) + return distinct_clause_.Mutable(index); +} +inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* +SelectStmt::mutable_distinct_clause() { + // @@protoc_insertion_point(field_mutable_list:pg_query.SelectStmt.distinct_clause) + return &distinct_clause_; +} +inline const ::pg_query::Node& SelectStmt::_internal_distinct_clause(int index) const { + return distinct_clause_.Get(index); +} +inline const ::pg_query::Node& SelectStmt::distinct_clause(int index) const { + // @@protoc_insertion_point(field_get:pg_query.SelectStmt.distinct_clause) + return _internal_distinct_clause(index); +} +inline ::pg_query::Node* SelectStmt::_internal_add_distinct_clause() { + return distinct_clause_.Add(); +} +inline ::pg_query::Node* SelectStmt::add_distinct_clause() { + // @@protoc_insertion_point(field_add:pg_query.SelectStmt.distinct_clause) + return _internal_add_distinct_clause(); +} +inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& +SelectStmt::distinct_clause() const { + // @@protoc_insertion_point(field_list:pg_query.SelectStmt.distinct_clause) + return distinct_clause_; +} + +// .pg_query.IntoClause into_clause = 2 [json_name = "intoClause"]; +inline bool SelectStmt::_internal_has_into_clause() const { + return this != internal_default_instance() && into_clause_ != nullptr; +} +inline bool SelectStmt::has_into_clause() const { + return _internal_has_into_clause(); +} +inline void SelectStmt::clear_into_clause() { + if (GetArena() == nullptr && into_clause_ != nullptr) { + delete into_clause_; + } + into_clause_ = nullptr; +} +inline const ::pg_query::IntoClause& SelectStmt::_internal_into_clause() const { + const ::pg_query::IntoClause* p = into_clause_; + return p != nullptr ? *p : reinterpret_cast( + ::pg_query::_IntoClause_default_instance_); +} +inline const ::pg_query::IntoClause& SelectStmt::into_clause() const { + // @@protoc_insertion_point(field_get:pg_query.SelectStmt.into_clause) + return _internal_into_clause(); +} +inline void SelectStmt::unsafe_arena_set_allocated_into_clause( + ::pg_query::IntoClause* into_clause) { + if (GetArena() == nullptr) { + delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(into_clause_); + } + into_clause_ = into_clause; + if (into_clause) { + + } else { + + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.SelectStmt.into_clause) +} +inline ::pg_query::IntoClause* SelectStmt::release_into_clause() { + + ::pg_query::IntoClause* temp = into_clause_; + into_clause_ = nullptr; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + return temp; +} +inline ::pg_query::IntoClause* SelectStmt::unsafe_arena_release_into_clause() { + // @@protoc_insertion_point(field_release:pg_query.SelectStmt.into_clause) + + ::pg_query::IntoClause* temp = into_clause_; + into_clause_ = nullptr; + return temp; +} +inline ::pg_query::IntoClause* SelectStmt::_internal_mutable_into_clause() { + + if (into_clause_ == nullptr) { + auto* p = CreateMaybeMessage<::pg_query::IntoClause>(GetArena()); + into_clause_ = p; + } + return into_clause_; +} +inline ::pg_query::IntoClause* SelectStmt::mutable_into_clause() { + // @@protoc_insertion_point(field_mutable:pg_query.SelectStmt.into_clause) + return _internal_mutable_into_clause(); +} +inline void SelectStmt::set_allocated_into_clause(::pg_query::IntoClause* into_clause) { + ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); + if (message_arena == nullptr) { + delete into_clause_; + } + if (into_clause) { + ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = + ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(into_clause); + if (message_arena != submessage_arena) { + into_clause = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( + message_arena, into_clause, submessage_arena); + } + + } else { + + } + into_clause_ = into_clause; + // @@protoc_insertion_point(field_set_allocated:pg_query.SelectStmt.into_clause) +} + +// repeated .pg_query.Node target_list = 3 [json_name = "targetList"]; +inline int SelectStmt::_internal_target_list_size() const { + return target_list_.size(); +} +inline int SelectStmt::target_list_size() const { + return _internal_target_list_size(); +} +inline void SelectStmt::clear_target_list() { + target_list_.Clear(); +} +inline ::pg_query::Node* SelectStmt::mutable_target_list(int index) { + // @@protoc_insertion_point(field_mutable:pg_query.SelectStmt.target_list) + return target_list_.Mutable(index); +} +inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* +SelectStmt::mutable_target_list() { + // @@protoc_insertion_point(field_mutable_list:pg_query.SelectStmt.target_list) + return &target_list_; +} +inline const ::pg_query::Node& SelectStmt::_internal_target_list(int index) const { + return target_list_.Get(index); +} +inline const ::pg_query::Node& SelectStmt::target_list(int index) const { + // @@protoc_insertion_point(field_get:pg_query.SelectStmt.target_list) + return _internal_target_list(index); +} +inline ::pg_query::Node* SelectStmt::_internal_add_target_list() { + return target_list_.Add(); +} +inline ::pg_query::Node* SelectStmt::add_target_list() { + // @@protoc_insertion_point(field_add:pg_query.SelectStmt.target_list) + return _internal_add_target_list(); +} +inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& +SelectStmt::target_list() const { + // @@protoc_insertion_point(field_list:pg_query.SelectStmt.target_list) + return target_list_; +} + +// repeated .pg_query.Node from_clause = 4 [json_name = "fromClause"]; +inline int SelectStmt::_internal_from_clause_size() const { + return from_clause_.size(); +} +inline int SelectStmt::from_clause_size() const { + return _internal_from_clause_size(); +} +inline void SelectStmt::clear_from_clause() { + from_clause_.Clear(); +} +inline ::pg_query::Node* SelectStmt::mutable_from_clause(int index) { + // @@protoc_insertion_point(field_mutable:pg_query.SelectStmt.from_clause) + return from_clause_.Mutable(index); +} +inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* +SelectStmt::mutable_from_clause() { + // @@protoc_insertion_point(field_mutable_list:pg_query.SelectStmt.from_clause) + return &from_clause_; +} +inline const ::pg_query::Node& SelectStmt::_internal_from_clause(int index) const { + return from_clause_.Get(index); +} +inline const ::pg_query::Node& SelectStmt::from_clause(int index) const { + // @@protoc_insertion_point(field_get:pg_query.SelectStmt.from_clause) + return _internal_from_clause(index); +} +inline ::pg_query::Node* SelectStmt::_internal_add_from_clause() { + return from_clause_.Add(); +} +inline ::pg_query::Node* SelectStmt::add_from_clause() { + // @@protoc_insertion_point(field_add:pg_query.SelectStmt.from_clause) + return _internal_add_from_clause(); +} +inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& +SelectStmt::from_clause() const { + // @@protoc_insertion_point(field_list:pg_query.SelectStmt.from_clause) + return from_clause_; +} + +// .pg_query.Node where_clause = 5 [json_name = "whereClause"]; +inline bool SelectStmt::_internal_has_where_clause() const { + return this != internal_default_instance() && where_clause_ != nullptr; +} +inline bool SelectStmt::has_where_clause() const { + return _internal_has_where_clause(); +} +inline void SelectStmt::clear_where_clause() { + if (GetArena() == nullptr && where_clause_ != nullptr) { + delete where_clause_; + } + where_clause_ = nullptr; +} +inline const ::pg_query::Node& SelectStmt::_internal_where_clause() const { + const ::pg_query::Node* p = where_clause_; + return p != nullptr ? *p : reinterpret_cast( + ::pg_query::_Node_default_instance_); +} +inline const ::pg_query::Node& SelectStmt::where_clause() const { + // @@protoc_insertion_point(field_get:pg_query.SelectStmt.where_clause) + return _internal_where_clause(); +} +inline void SelectStmt::unsafe_arena_set_allocated_where_clause( + ::pg_query::Node* where_clause) { + if (GetArena() == nullptr) { + delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(where_clause_); + } + where_clause_ = where_clause; + if (where_clause) { + + } else { + + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.SelectStmt.where_clause) +} +inline ::pg_query::Node* SelectStmt::release_where_clause() { + + ::pg_query::Node* temp = where_clause_; + where_clause_ = nullptr; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + return temp; +} +inline ::pg_query::Node* SelectStmt::unsafe_arena_release_where_clause() { + // @@protoc_insertion_point(field_release:pg_query.SelectStmt.where_clause) + + ::pg_query::Node* temp = where_clause_; + where_clause_ = nullptr; + return temp; +} +inline ::pg_query::Node* SelectStmt::_internal_mutable_where_clause() { + + if (where_clause_ == nullptr) { + auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); + where_clause_ = p; + } + return where_clause_; +} +inline ::pg_query::Node* SelectStmt::mutable_where_clause() { + // @@protoc_insertion_point(field_mutable:pg_query.SelectStmt.where_clause) + return _internal_mutable_where_clause(); +} +inline void SelectStmt::set_allocated_where_clause(::pg_query::Node* where_clause) { + ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); + if (message_arena == nullptr) { + delete where_clause_; + } + if (where_clause) { + ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = + ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(where_clause); + if (message_arena != submessage_arena) { + where_clause = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( + message_arena, where_clause, submessage_arena); + } + + } else { + + } + where_clause_ = where_clause; + // @@protoc_insertion_point(field_set_allocated:pg_query.SelectStmt.where_clause) +} + +// repeated .pg_query.Node group_clause = 6 [json_name = "groupClause"]; +inline int SelectStmt::_internal_group_clause_size() const { + return group_clause_.size(); +} +inline int SelectStmt::group_clause_size() const { + return _internal_group_clause_size(); +} +inline void SelectStmt::clear_group_clause() { + group_clause_.Clear(); +} +inline ::pg_query::Node* SelectStmt::mutable_group_clause(int index) { + // @@protoc_insertion_point(field_mutable:pg_query.SelectStmt.group_clause) + return group_clause_.Mutable(index); +} +inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* +SelectStmt::mutable_group_clause() { + // @@protoc_insertion_point(field_mutable_list:pg_query.SelectStmt.group_clause) + return &group_clause_; +} +inline const ::pg_query::Node& SelectStmt::_internal_group_clause(int index) const { + return group_clause_.Get(index); +} +inline const ::pg_query::Node& SelectStmt::group_clause(int index) const { + // @@protoc_insertion_point(field_get:pg_query.SelectStmt.group_clause) + return _internal_group_clause(index); +} +inline ::pg_query::Node* SelectStmt::_internal_add_group_clause() { + return group_clause_.Add(); +} +inline ::pg_query::Node* SelectStmt::add_group_clause() { + // @@protoc_insertion_point(field_add:pg_query.SelectStmt.group_clause) + return _internal_add_group_clause(); +} +inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& +SelectStmt::group_clause() const { + // @@protoc_insertion_point(field_list:pg_query.SelectStmt.group_clause) + return group_clause_; +} + +// .pg_query.Node having_clause = 7 [json_name = "havingClause"]; +inline bool SelectStmt::_internal_has_having_clause() const { + return this != internal_default_instance() && having_clause_ != nullptr; +} +inline bool SelectStmt::has_having_clause() const { + return _internal_has_having_clause(); +} +inline void SelectStmt::clear_having_clause() { + if (GetArena() == nullptr && having_clause_ != nullptr) { + delete having_clause_; + } + having_clause_ = nullptr; +} +inline const ::pg_query::Node& SelectStmt::_internal_having_clause() const { + const ::pg_query::Node* p = having_clause_; + return p != nullptr ? *p : reinterpret_cast( + ::pg_query::_Node_default_instance_); +} +inline const ::pg_query::Node& SelectStmt::having_clause() const { + // @@protoc_insertion_point(field_get:pg_query.SelectStmt.having_clause) + return _internal_having_clause(); +} +inline void SelectStmt::unsafe_arena_set_allocated_having_clause( + ::pg_query::Node* having_clause) { + if (GetArena() == nullptr) { + delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(having_clause_); + } + having_clause_ = having_clause; + if (having_clause) { + + } else { + + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.SelectStmt.having_clause) +} +inline ::pg_query::Node* SelectStmt::release_having_clause() { + + ::pg_query::Node* temp = having_clause_; + having_clause_ = nullptr; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + return temp; +} +inline ::pg_query::Node* SelectStmt::unsafe_arena_release_having_clause() { + // @@protoc_insertion_point(field_release:pg_query.SelectStmt.having_clause) + + ::pg_query::Node* temp = having_clause_; + having_clause_ = nullptr; + return temp; +} +inline ::pg_query::Node* SelectStmt::_internal_mutable_having_clause() { + + if (having_clause_ == nullptr) { + auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); + having_clause_ = p; + } + return having_clause_; +} +inline ::pg_query::Node* SelectStmt::mutable_having_clause() { + // @@protoc_insertion_point(field_mutable:pg_query.SelectStmt.having_clause) + return _internal_mutable_having_clause(); +} +inline void SelectStmt::set_allocated_having_clause(::pg_query::Node* having_clause) { + ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); + if (message_arena == nullptr) { + delete having_clause_; + } + if (having_clause) { + ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = + ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(having_clause); + if (message_arena != submessage_arena) { + having_clause = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( + message_arena, having_clause, submessage_arena); + } + + } else { + + } + having_clause_ = having_clause; + // @@protoc_insertion_point(field_set_allocated:pg_query.SelectStmt.having_clause) +} + +// repeated .pg_query.Node window_clause = 8 [json_name = "windowClause"]; +inline int SelectStmt::_internal_window_clause_size() const { + return window_clause_.size(); +} +inline int SelectStmt::window_clause_size() const { + return _internal_window_clause_size(); +} +inline void SelectStmt::clear_window_clause() { + window_clause_.Clear(); +} +inline ::pg_query::Node* SelectStmt::mutable_window_clause(int index) { + // @@protoc_insertion_point(field_mutable:pg_query.SelectStmt.window_clause) + return window_clause_.Mutable(index); +} +inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* +SelectStmt::mutable_window_clause() { + // @@protoc_insertion_point(field_mutable_list:pg_query.SelectStmt.window_clause) + return &window_clause_; +} +inline const ::pg_query::Node& SelectStmt::_internal_window_clause(int index) const { + return window_clause_.Get(index); +} +inline const ::pg_query::Node& SelectStmt::window_clause(int index) const { + // @@protoc_insertion_point(field_get:pg_query.SelectStmt.window_clause) + return _internal_window_clause(index); +} +inline ::pg_query::Node* SelectStmt::_internal_add_window_clause() { + return window_clause_.Add(); +} +inline ::pg_query::Node* SelectStmt::add_window_clause() { + // @@protoc_insertion_point(field_add:pg_query.SelectStmt.window_clause) + return _internal_add_window_clause(); +} +inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& +SelectStmt::window_clause() const { + // @@protoc_insertion_point(field_list:pg_query.SelectStmt.window_clause) + return window_clause_; +} + +// repeated .pg_query.Node values_lists = 9 [json_name = "valuesLists"]; +inline int SelectStmt::_internal_values_lists_size() const { + return values_lists_.size(); +} +inline int SelectStmt::values_lists_size() const { + return _internal_values_lists_size(); +} +inline void SelectStmt::clear_values_lists() { + values_lists_.Clear(); +} +inline ::pg_query::Node* SelectStmt::mutable_values_lists(int index) { + // @@protoc_insertion_point(field_mutable:pg_query.SelectStmt.values_lists) + return values_lists_.Mutable(index); +} +inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* +SelectStmt::mutable_values_lists() { + // @@protoc_insertion_point(field_mutable_list:pg_query.SelectStmt.values_lists) + return &values_lists_; +} +inline const ::pg_query::Node& SelectStmt::_internal_values_lists(int index) const { + return values_lists_.Get(index); +} +inline const ::pg_query::Node& SelectStmt::values_lists(int index) const { + // @@protoc_insertion_point(field_get:pg_query.SelectStmt.values_lists) + return _internal_values_lists(index); +} +inline ::pg_query::Node* SelectStmt::_internal_add_values_lists() { + return values_lists_.Add(); +} +inline ::pg_query::Node* SelectStmt::add_values_lists() { + // @@protoc_insertion_point(field_add:pg_query.SelectStmt.values_lists) + return _internal_add_values_lists(); +} +inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& +SelectStmt::values_lists() const { + // @@protoc_insertion_point(field_list:pg_query.SelectStmt.values_lists) + return values_lists_; +} + +// repeated .pg_query.Node sort_clause = 10 [json_name = "sortClause"]; +inline int SelectStmt::_internal_sort_clause_size() const { + return sort_clause_.size(); +} +inline int SelectStmt::sort_clause_size() const { + return _internal_sort_clause_size(); +} +inline void SelectStmt::clear_sort_clause() { + sort_clause_.Clear(); +} +inline ::pg_query::Node* SelectStmt::mutable_sort_clause(int index) { + // @@protoc_insertion_point(field_mutable:pg_query.SelectStmt.sort_clause) + return sort_clause_.Mutable(index); +} +inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* +SelectStmt::mutable_sort_clause() { + // @@protoc_insertion_point(field_mutable_list:pg_query.SelectStmt.sort_clause) + return &sort_clause_; +} +inline const ::pg_query::Node& SelectStmt::_internal_sort_clause(int index) const { + return sort_clause_.Get(index); +} +inline const ::pg_query::Node& SelectStmt::sort_clause(int index) const { + // @@protoc_insertion_point(field_get:pg_query.SelectStmt.sort_clause) + return _internal_sort_clause(index); +} +inline ::pg_query::Node* SelectStmt::_internal_add_sort_clause() { + return sort_clause_.Add(); +} +inline ::pg_query::Node* SelectStmt::add_sort_clause() { + // @@protoc_insertion_point(field_add:pg_query.SelectStmt.sort_clause) + return _internal_add_sort_clause(); +} +inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& +SelectStmt::sort_clause() const { + // @@protoc_insertion_point(field_list:pg_query.SelectStmt.sort_clause) + return sort_clause_; +} + +// .pg_query.Node limit_offset = 11 [json_name = "limitOffset"]; +inline bool SelectStmt::_internal_has_limit_offset() const { + return this != internal_default_instance() && limit_offset_ != nullptr; +} +inline bool SelectStmt::has_limit_offset() const { + return _internal_has_limit_offset(); +} +inline void SelectStmt::clear_limit_offset() { + if (GetArena() == nullptr && limit_offset_ != nullptr) { + delete limit_offset_; + } + limit_offset_ = nullptr; +} +inline const ::pg_query::Node& SelectStmt::_internal_limit_offset() const { + const ::pg_query::Node* p = limit_offset_; + return p != nullptr ? *p : reinterpret_cast( + ::pg_query::_Node_default_instance_); +} +inline const ::pg_query::Node& SelectStmt::limit_offset() const { + // @@protoc_insertion_point(field_get:pg_query.SelectStmt.limit_offset) + return _internal_limit_offset(); +} +inline void SelectStmt::unsafe_arena_set_allocated_limit_offset( + ::pg_query::Node* limit_offset) { + if (GetArena() == nullptr) { + delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(limit_offset_); + } + limit_offset_ = limit_offset; + if (limit_offset) { + + } else { + + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.SelectStmt.limit_offset) +} +inline ::pg_query::Node* SelectStmt::release_limit_offset() { + + ::pg_query::Node* temp = limit_offset_; + limit_offset_ = nullptr; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + return temp; +} +inline ::pg_query::Node* SelectStmt::unsafe_arena_release_limit_offset() { + // @@protoc_insertion_point(field_release:pg_query.SelectStmt.limit_offset) + + ::pg_query::Node* temp = limit_offset_; + limit_offset_ = nullptr; + return temp; +} +inline ::pg_query::Node* SelectStmt::_internal_mutable_limit_offset() { + + if (limit_offset_ == nullptr) { + auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); + limit_offset_ = p; + } + return limit_offset_; +} +inline ::pg_query::Node* SelectStmt::mutable_limit_offset() { + // @@protoc_insertion_point(field_mutable:pg_query.SelectStmt.limit_offset) + return _internal_mutable_limit_offset(); +} +inline void SelectStmt::set_allocated_limit_offset(::pg_query::Node* limit_offset) { + ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); + if (message_arena == nullptr) { + delete limit_offset_; + } + if (limit_offset) { + ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = + ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(limit_offset); + if (message_arena != submessage_arena) { + limit_offset = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( + message_arena, limit_offset, submessage_arena); + } + + } else { + + } + limit_offset_ = limit_offset; + // @@protoc_insertion_point(field_set_allocated:pg_query.SelectStmt.limit_offset) +} + +// .pg_query.Node limit_count = 12 [json_name = "limitCount"]; +inline bool SelectStmt::_internal_has_limit_count() const { + return this != internal_default_instance() && limit_count_ != nullptr; +} +inline bool SelectStmt::has_limit_count() const { + return _internal_has_limit_count(); +} +inline void SelectStmt::clear_limit_count() { + if (GetArena() == nullptr && limit_count_ != nullptr) { + delete limit_count_; + } + limit_count_ = nullptr; +} +inline const ::pg_query::Node& SelectStmt::_internal_limit_count() const { + const ::pg_query::Node* p = limit_count_; + return p != nullptr ? *p : reinterpret_cast( + ::pg_query::_Node_default_instance_); +} +inline const ::pg_query::Node& SelectStmt::limit_count() const { + // @@protoc_insertion_point(field_get:pg_query.SelectStmt.limit_count) + return _internal_limit_count(); +} +inline void SelectStmt::unsafe_arena_set_allocated_limit_count( + ::pg_query::Node* limit_count) { + if (GetArena() == nullptr) { + delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(limit_count_); + } + limit_count_ = limit_count; + if (limit_count) { + + } else { + + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.SelectStmt.limit_count) +} +inline ::pg_query::Node* SelectStmt::release_limit_count() { + + ::pg_query::Node* temp = limit_count_; + limit_count_ = nullptr; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + return temp; +} +inline ::pg_query::Node* SelectStmt::unsafe_arena_release_limit_count() { + // @@protoc_insertion_point(field_release:pg_query.SelectStmt.limit_count) + + ::pg_query::Node* temp = limit_count_; + limit_count_ = nullptr; + return temp; +} +inline ::pg_query::Node* SelectStmt::_internal_mutable_limit_count() { + + if (limit_count_ == nullptr) { + auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); + limit_count_ = p; + } + return limit_count_; +} +inline ::pg_query::Node* SelectStmt::mutable_limit_count() { + // @@protoc_insertion_point(field_mutable:pg_query.SelectStmt.limit_count) + return _internal_mutable_limit_count(); +} +inline void SelectStmt::set_allocated_limit_count(::pg_query::Node* limit_count) { + ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); + if (message_arena == nullptr) { + delete limit_count_; + } + if (limit_count) { + ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = + ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(limit_count); + if (message_arena != submessage_arena) { + limit_count = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( + message_arena, limit_count, submessage_arena); + } + + } else { + + } + limit_count_ = limit_count; + // @@protoc_insertion_point(field_set_allocated:pg_query.SelectStmt.limit_count) +} + +// .pg_query.LimitOption limit_option = 13 [json_name = "limitOption"]; +inline void SelectStmt::clear_limit_option() { + limit_option_ = 0; +} +inline ::pg_query::LimitOption SelectStmt::_internal_limit_option() const { + return static_cast< ::pg_query::LimitOption >(limit_option_); +} +inline ::pg_query::LimitOption SelectStmt::limit_option() const { + // @@protoc_insertion_point(field_get:pg_query.SelectStmt.limit_option) + return _internal_limit_option(); +} +inline void SelectStmt::_internal_set_limit_option(::pg_query::LimitOption value) { + + limit_option_ = value; +} +inline void SelectStmt::set_limit_option(::pg_query::LimitOption value) { + _internal_set_limit_option(value); + // @@protoc_insertion_point(field_set:pg_query.SelectStmt.limit_option) +} + +// repeated .pg_query.Node locking_clause = 14 [json_name = "lockingClause"]; +inline int SelectStmt::_internal_locking_clause_size() const { + return locking_clause_.size(); +} +inline int SelectStmt::locking_clause_size() const { + return _internal_locking_clause_size(); +} +inline void SelectStmt::clear_locking_clause() { + locking_clause_.Clear(); +} +inline ::pg_query::Node* SelectStmt::mutable_locking_clause(int index) { + // @@protoc_insertion_point(field_mutable:pg_query.SelectStmt.locking_clause) + return locking_clause_.Mutable(index); +} +inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* +SelectStmt::mutable_locking_clause() { + // @@protoc_insertion_point(field_mutable_list:pg_query.SelectStmt.locking_clause) + return &locking_clause_; +} +inline const ::pg_query::Node& SelectStmt::_internal_locking_clause(int index) const { + return locking_clause_.Get(index); +} +inline const ::pg_query::Node& SelectStmt::locking_clause(int index) const { + // @@protoc_insertion_point(field_get:pg_query.SelectStmt.locking_clause) + return _internal_locking_clause(index); +} +inline ::pg_query::Node* SelectStmt::_internal_add_locking_clause() { + return locking_clause_.Add(); +} +inline ::pg_query::Node* SelectStmt::add_locking_clause() { + // @@protoc_insertion_point(field_add:pg_query.SelectStmt.locking_clause) + return _internal_add_locking_clause(); +} +inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& +SelectStmt::locking_clause() const { + // @@protoc_insertion_point(field_list:pg_query.SelectStmt.locking_clause) + return locking_clause_; +} + +// .pg_query.WithClause with_clause = 15 [json_name = "withClause"]; +inline bool SelectStmt::_internal_has_with_clause() const { + return this != internal_default_instance() && with_clause_ != nullptr; +} +inline bool SelectStmt::has_with_clause() const { + return _internal_has_with_clause(); +} +inline void SelectStmt::clear_with_clause() { + if (GetArena() == nullptr && with_clause_ != nullptr) { + delete with_clause_; + } + with_clause_ = nullptr; +} +inline const ::pg_query::WithClause& SelectStmt::_internal_with_clause() const { + const ::pg_query::WithClause* p = with_clause_; + return p != nullptr ? *p : reinterpret_cast( + ::pg_query::_WithClause_default_instance_); +} +inline const ::pg_query::WithClause& SelectStmt::with_clause() const { + // @@protoc_insertion_point(field_get:pg_query.SelectStmt.with_clause) + return _internal_with_clause(); +} +inline void SelectStmt::unsafe_arena_set_allocated_with_clause( + ::pg_query::WithClause* with_clause) { + if (GetArena() == nullptr) { + delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(with_clause_); + } + with_clause_ = with_clause; + if (with_clause) { + + } else { + + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.SelectStmt.with_clause) +} +inline ::pg_query::WithClause* SelectStmt::release_with_clause() { + + ::pg_query::WithClause* temp = with_clause_; + with_clause_ = nullptr; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + return temp; +} +inline ::pg_query::WithClause* SelectStmt::unsafe_arena_release_with_clause() { + // @@protoc_insertion_point(field_release:pg_query.SelectStmt.with_clause) + + ::pg_query::WithClause* temp = with_clause_; + with_clause_ = nullptr; + return temp; +} +inline ::pg_query::WithClause* SelectStmt::_internal_mutable_with_clause() { + + if (with_clause_ == nullptr) { + auto* p = CreateMaybeMessage<::pg_query::WithClause>(GetArena()); + with_clause_ = p; + } + return with_clause_; +} +inline ::pg_query::WithClause* SelectStmt::mutable_with_clause() { + // @@protoc_insertion_point(field_mutable:pg_query.SelectStmt.with_clause) + return _internal_mutable_with_clause(); +} +inline void SelectStmt::set_allocated_with_clause(::pg_query::WithClause* with_clause) { + ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); + if (message_arena == nullptr) { + delete with_clause_; + } + if (with_clause) { + ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = + ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(with_clause); + if (message_arena != submessage_arena) { + with_clause = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( + message_arena, with_clause, submessage_arena); + } + + } else { + + } + with_clause_ = with_clause; + // @@protoc_insertion_point(field_set_allocated:pg_query.SelectStmt.with_clause) +} + +// .pg_query.SetOperation op = 16 [json_name = "op"]; +inline void SelectStmt::clear_op() { + op_ = 0; +} +inline ::pg_query::SetOperation SelectStmt::_internal_op() const { + return static_cast< ::pg_query::SetOperation >(op_); +} +inline ::pg_query::SetOperation SelectStmt::op() const { + // @@protoc_insertion_point(field_get:pg_query.SelectStmt.op) + return _internal_op(); +} +inline void SelectStmt::_internal_set_op(::pg_query::SetOperation value) { + + op_ = value; +} +inline void SelectStmt::set_op(::pg_query::SetOperation value) { + _internal_set_op(value); + // @@protoc_insertion_point(field_set:pg_query.SelectStmt.op) +} + +// bool all = 17 [json_name = "all"]; +inline void SelectStmt::clear_all() { + all_ = false; +} +inline bool SelectStmt::_internal_all() const { + return all_; +} +inline bool SelectStmt::all() const { + // @@protoc_insertion_point(field_get:pg_query.SelectStmt.all) + return _internal_all(); +} +inline void SelectStmt::_internal_set_all(bool value) { + + all_ = value; +} +inline void SelectStmt::set_all(bool value) { + _internal_set_all(value); + // @@protoc_insertion_point(field_set:pg_query.SelectStmt.all) +} + +// .pg_query.SelectStmt larg = 18 [json_name = "larg"]; +inline bool SelectStmt::_internal_has_larg() const { + return this != internal_default_instance() && larg_ != nullptr; +} +inline bool SelectStmt::has_larg() const { + return _internal_has_larg(); +} +inline void SelectStmt::clear_larg() { + if (GetArena() == nullptr && larg_ != nullptr) { + delete larg_; + } + larg_ = nullptr; +} +inline const ::pg_query::SelectStmt& SelectStmt::_internal_larg() const { + const ::pg_query::SelectStmt* p = larg_; + return p != nullptr ? *p : reinterpret_cast( + ::pg_query::_SelectStmt_default_instance_); +} +inline const ::pg_query::SelectStmt& SelectStmt::larg() const { + // @@protoc_insertion_point(field_get:pg_query.SelectStmt.larg) + return _internal_larg(); +} +inline void SelectStmt::unsafe_arena_set_allocated_larg( + ::pg_query::SelectStmt* larg) { + if (GetArena() == nullptr) { + delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(larg_); + } + larg_ = larg; + if (larg) { + + } else { + + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.SelectStmt.larg) +} +inline ::pg_query::SelectStmt* SelectStmt::release_larg() { + + ::pg_query::SelectStmt* temp = larg_; + larg_ = nullptr; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + return temp; +} +inline ::pg_query::SelectStmt* SelectStmt::unsafe_arena_release_larg() { + // @@protoc_insertion_point(field_release:pg_query.SelectStmt.larg) + + ::pg_query::SelectStmt* temp = larg_; + larg_ = nullptr; + return temp; +} +inline ::pg_query::SelectStmt* SelectStmt::_internal_mutable_larg() { + + if (larg_ == nullptr) { + auto* p = CreateMaybeMessage<::pg_query::SelectStmt>(GetArena()); + larg_ = p; + } + return larg_; +} +inline ::pg_query::SelectStmt* SelectStmt::mutable_larg() { + // @@protoc_insertion_point(field_mutable:pg_query.SelectStmt.larg) + return _internal_mutable_larg(); +} +inline void SelectStmt::set_allocated_larg(::pg_query::SelectStmt* larg) { + ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); + if (message_arena == nullptr) { + delete larg_; + } + if (larg) { + ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = + ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(larg); + if (message_arena != submessage_arena) { + larg = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( + message_arena, larg, submessage_arena); + } + + } else { + + } + larg_ = larg; + // @@protoc_insertion_point(field_set_allocated:pg_query.SelectStmt.larg) +} + +// .pg_query.SelectStmt rarg = 19 [json_name = "rarg"]; +inline bool SelectStmt::_internal_has_rarg() const { + return this != internal_default_instance() && rarg_ != nullptr; +} +inline bool SelectStmt::has_rarg() const { + return _internal_has_rarg(); +} +inline void SelectStmt::clear_rarg() { + if (GetArena() == nullptr && rarg_ != nullptr) { + delete rarg_; + } + rarg_ = nullptr; +} +inline const ::pg_query::SelectStmt& SelectStmt::_internal_rarg() const { + const ::pg_query::SelectStmt* p = rarg_; + return p != nullptr ? *p : reinterpret_cast( + ::pg_query::_SelectStmt_default_instance_); +} +inline const ::pg_query::SelectStmt& SelectStmt::rarg() const { + // @@protoc_insertion_point(field_get:pg_query.SelectStmt.rarg) + return _internal_rarg(); +} +inline void SelectStmt::unsafe_arena_set_allocated_rarg( + ::pg_query::SelectStmt* rarg) { + if (GetArena() == nullptr) { + delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(rarg_); + } + rarg_ = rarg; + if (rarg) { + + } else { + + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.SelectStmt.rarg) +} +inline ::pg_query::SelectStmt* SelectStmt::release_rarg() { + + ::pg_query::SelectStmt* temp = rarg_; + rarg_ = nullptr; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + return temp; +} +inline ::pg_query::SelectStmt* SelectStmt::unsafe_arena_release_rarg() { + // @@protoc_insertion_point(field_release:pg_query.SelectStmt.rarg) + + ::pg_query::SelectStmt* temp = rarg_; + rarg_ = nullptr; + return temp; +} +inline ::pg_query::SelectStmt* SelectStmt::_internal_mutable_rarg() { + + if (rarg_ == nullptr) { + auto* p = CreateMaybeMessage<::pg_query::SelectStmt>(GetArena()); + rarg_ = p; + } + return rarg_; +} +inline ::pg_query::SelectStmt* SelectStmt::mutable_rarg() { + // @@protoc_insertion_point(field_mutable:pg_query.SelectStmt.rarg) + return _internal_mutable_rarg(); +} +inline void SelectStmt::set_allocated_rarg(::pg_query::SelectStmt* rarg) { + ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); + if (message_arena == nullptr) { + delete rarg_; + } + if (rarg) { + ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = + ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(rarg); + if (message_arena != submessage_arena) { + rarg = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( + message_arena, rarg, submessage_arena); + } + + } else { + + } + rarg_ = rarg; + // @@protoc_insertion_point(field_set_allocated:pg_query.SelectStmt.rarg) +} + +// ------------------------------------------------------------------- + +// AlterTableStmt + +// .pg_query.RangeVar relation = 1 [json_name = "relation"]; +inline bool AlterTableStmt::_internal_has_relation() const { + return this != internal_default_instance() && relation_ != nullptr; +} +inline bool AlterTableStmt::has_relation() const { + return _internal_has_relation(); +} +inline void AlterTableStmt::clear_relation() { + if (GetArena() == nullptr && relation_ != nullptr) { + delete relation_; + } + relation_ = nullptr; +} +inline const ::pg_query::RangeVar& AlterTableStmt::_internal_relation() const { + const ::pg_query::RangeVar* p = relation_; + return p != nullptr ? *p : reinterpret_cast( + ::pg_query::_RangeVar_default_instance_); +} +inline const ::pg_query::RangeVar& AlterTableStmt::relation() const { + // @@protoc_insertion_point(field_get:pg_query.AlterTableStmt.relation) + return _internal_relation(); +} +inline void AlterTableStmt::unsafe_arena_set_allocated_relation( + ::pg_query::RangeVar* relation) { + if (GetArena() == nullptr) { + delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(relation_); + } + relation_ = relation; + if (relation) { + + } else { + + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.AlterTableStmt.relation) +} +inline ::pg_query::RangeVar* AlterTableStmt::release_relation() { + + ::pg_query::RangeVar* temp = relation_; + relation_ = nullptr; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + return temp; +} +inline ::pg_query::RangeVar* AlterTableStmt::unsafe_arena_release_relation() { + // @@protoc_insertion_point(field_release:pg_query.AlterTableStmt.relation) + + ::pg_query::RangeVar* temp = relation_; + relation_ = nullptr; + return temp; +} +inline ::pg_query::RangeVar* AlterTableStmt::_internal_mutable_relation() { + + if (relation_ == nullptr) { + auto* p = CreateMaybeMessage<::pg_query::RangeVar>(GetArena()); + relation_ = p; + } + return relation_; +} +inline ::pg_query::RangeVar* AlterTableStmt::mutable_relation() { + // @@protoc_insertion_point(field_mutable:pg_query.AlterTableStmt.relation) + return _internal_mutable_relation(); +} +inline void AlterTableStmt::set_allocated_relation(::pg_query::RangeVar* relation) { + ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); + if (message_arena == nullptr) { + delete relation_; + } + if (relation) { + ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = + ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(relation); + if (message_arena != submessage_arena) { + relation = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( + message_arena, relation, submessage_arena); + } + + } else { + + } + relation_ = relation; + // @@protoc_insertion_point(field_set_allocated:pg_query.AlterTableStmt.relation) +} + +// repeated .pg_query.Node cmds = 2 [json_name = "cmds"]; +inline int AlterTableStmt::_internal_cmds_size() const { + return cmds_.size(); +} +inline int AlterTableStmt::cmds_size() const { + return _internal_cmds_size(); +} +inline void AlterTableStmt::clear_cmds() { + cmds_.Clear(); +} +inline ::pg_query::Node* AlterTableStmt::mutable_cmds(int index) { + // @@protoc_insertion_point(field_mutable:pg_query.AlterTableStmt.cmds) + return cmds_.Mutable(index); +} +inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* +AlterTableStmt::mutable_cmds() { + // @@protoc_insertion_point(field_mutable_list:pg_query.AlterTableStmt.cmds) + return &cmds_; +} +inline const ::pg_query::Node& AlterTableStmt::_internal_cmds(int index) const { + return cmds_.Get(index); +} +inline const ::pg_query::Node& AlterTableStmt::cmds(int index) const { + // @@protoc_insertion_point(field_get:pg_query.AlterTableStmt.cmds) + return _internal_cmds(index); +} +inline ::pg_query::Node* AlterTableStmt::_internal_add_cmds() { + return cmds_.Add(); +} +inline ::pg_query::Node* AlterTableStmt::add_cmds() { + // @@protoc_insertion_point(field_add:pg_query.AlterTableStmt.cmds) + return _internal_add_cmds(); +} +inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& +AlterTableStmt::cmds() const { + // @@protoc_insertion_point(field_list:pg_query.AlterTableStmt.cmds) + return cmds_; +} + +// .pg_query.ObjectType relkind = 3 [json_name = "relkind"]; +inline void AlterTableStmt::clear_relkind() { + relkind_ = 0; +} +inline ::pg_query::ObjectType AlterTableStmt::_internal_relkind() const { + return static_cast< ::pg_query::ObjectType >(relkind_); +} +inline ::pg_query::ObjectType AlterTableStmt::relkind() const { + // @@protoc_insertion_point(field_get:pg_query.AlterTableStmt.relkind) + return _internal_relkind(); +} +inline void AlterTableStmt::_internal_set_relkind(::pg_query::ObjectType value) { + + relkind_ = value; +} +inline void AlterTableStmt::set_relkind(::pg_query::ObjectType value) { + _internal_set_relkind(value); + // @@protoc_insertion_point(field_set:pg_query.AlterTableStmt.relkind) +} + +// bool missing_ok = 4 [json_name = "missing_ok"]; +inline void AlterTableStmt::clear_missing_ok() { + missing_ok_ = false; +} +inline bool AlterTableStmt::_internal_missing_ok() const { + return missing_ok_; +} +inline bool AlterTableStmt::missing_ok() const { + // @@protoc_insertion_point(field_get:pg_query.AlterTableStmt.missing_ok) + return _internal_missing_ok(); +} +inline void AlterTableStmt::_internal_set_missing_ok(bool value) { + + missing_ok_ = value; +} +inline void AlterTableStmt::set_missing_ok(bool value) { + _internal_set_missing_ok(value); + // @@protoc_insertion_point(field_set:pg_query.AlterTableStmt.missing_ok) +} + +// ------------------------------------------------------------------- + +// AlterTableCmd + +// .pg_query.AlterTableType subtype = 1 [json_name = "subtype"]; +inline void AlterTableCmd::clear_subtype() { + subtype_ = 0; +} +inline ::pg_query::AlterTableType AlterTableCmd::_internal_subtype() const { + return static_cast< ::pg_query::AlterTableType >(subtype_); +} +inline ::pg_query::AlterTableType AlterTableCmd::subtype() const { + // @@protoc_insertion_point(field_get:pg_query.AlterTableCmd.subtype) + return _internal_subtype(); +} +inline void AlterTableCmd::_internal_set_subtype(::pg_query::AlterTableType value) { + + subtype_ = value; +} +inline void AlterTableCmd::set_subtype(::pg_query::AlterTableType value) { + _internal_set_subtype(value); + // @@protoc_insertion_point(field_set:pg_query.AlterTableCmd.subtype) +} + +// string name = 2 [json_name = "name"]; +inline void AlterTableCmd::clear_name() { + name_.ClearToEmpty(); +} +inline const std::string& AlterTableCmd::name() const { + // @@protoc_insertion_point(field_get:pg_query.AlterTableCmd.name) + return _internal_name(); +} +inline void AlterTableCmd::set_name(const std::string& value) { + _internal_set_name(value); + // @@protoc_insertion_point(field_set:pg_query.AlterTableCmd.name) +} +inline std::string* AlterTableCmd::mutable_name() { + // @@protoc_insertion_point(field_mutable:pg_query.AlterTableCmd.name) + return _internal_mutable_name(); +} +inline const std::string& AlterTableCmd::_internal_name() const { + return name_.Get(); +} +inline void AlterTableCmd::_internal_set_name(const std::string& value) { + + name_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArena()); +} +inline void AlterTableCmd::set_name(std::string&& value) { + + name_.Set( + ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::move(value), GetArena()); + // @@protoc_insertion_point(field_set_rvalue:pg_query.AlterTableCmd.name) +} +inline void AlterTableCmd::set_name(const char* value) { + GOOGLE_DCHECK(value != nullptr); + + name_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string(value), GetArena()); + // @@protoc_insertion_point(field_set_char:pg_query.AlterTableCmd.name) +} +inline void AlterTableCmd::set_name(const char* value, + size_t size) { + + name_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string( + reinterpret_cast(value), size), GetArena()); + // @@protoc_insertion_point(field_set_pointer:pg_query.AlterTableCmd.name) +} +inline std::string* AlterTableCmd::_internal_mutable_name() { + + return name_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArena()); +} +inline std::string* AlterTableCmd::release_name() { + // @@protoc_insertion_point(field_release:pg_query.AlterTableCmd.name) + return name_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); +} +inline void AlterTableCmd::set_allocated_name(std::string* name) { + if (name != nullptr) { + + } else { + + } + name_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), name, + GetArena()); + // @@protoc_insertion_point(field_set_allocated:pg_query.AlterTableCmd.name) +} + +// int32 num = 3 [json_name = "num"]; +inline void AlterTableCmd::clear_num() { + num_ = 0; +} +inline ::PROTOBUF_NAMESPACE_ID::int32 AlterTableCmd::_internal_num() const { + return num_; +} +inline ::PROTOBUF_NAMESPACE_ID::int32 AlterTableCmd::num() const { + // @@protoc_insertion_point(field_get:pg_query.AlterTableCmd.num) + return _internal_num(); +} +inline void AlterTableCmd::_internal_set_num(::PROTOBUF_NAMESPACE_ID::int32 value) { + + num_ = value; +} +inline void AlterTableCmd::set_num(::PROTOBUF_NAMESPACE_ID::int32 value) { + _internal_set_num(value); + // @@protoc_insertion_point(field_set:pg_query.AlterTableCmd.num) +} + +// .pg_query.RoleSpec newowner = 4 [json_name = "newowner"]; +inline bool AlterTableCmd::_internal_has_newowner() const { + return this != internal_default_instance() && newowner_ != nullptr; +} +inline bool AlterTableCmd::has_newowner() const { + return _internal_has_newowner(); +} +inline void AlterTableCmd::clear_newowner() { + if (GetArena() == nullptr && newowner_ != nullptr) { + delete newowner_; + } + newowner_ = nullptr; +} +inline const ::pg_query::RoleSpec& AlterTableCmd::_internal_newowner() const { + const ::pg_query::RoleSpec* p = newowner_; + return p != nullptr ? *p : reinterpret_cast( + ::pg_query::_RoleSpec_default_instance_); +} +inline const ::pg_query::RoleSpec& AlterTableCmd::newowner() const { + // @@protoc_insertion_point(field_get:pg_query.AlterTableCmd.newowner) + return _internal_newowner(); +} +inline void AlterTableCmd::unsafe_arena_set_allocated_newowner( + ::pg_query::RoleSpec* newowner) { + if (GetArena() == nullptr) { + delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(newowner_); + } + newowner_ = newowner; + if (newowner) { + + } else { + + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.AlterTableCmd.newowner) +} +inline ::pg_query::RoleSpec* AlterTableCmd::release_newowner() { + + ::pg_query::RoleSpec* temp = newowner_; + newowner_ = nullptr; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + return temp; +} +inline ::pg_query::RoleSpec* AlterTableCmd::unsafe_arena_release_newowner() { + // @@protoc_insertion_point(field_release:pg_query.AlterTableCmd.newowner) + + ::pg_query::RoleSpec* temp = newowner_; + newowner_ = nullptr; + return temp; +} +inline ::pg_query::RoleSpec* AlterTableCmd::_internal_mutable_newowner() { + + if (newowner_ == nullptr) { + auto* p = CreateMaybeMessage<::pg_query::RoleSpec>(GetArena()); + newowner_ = p; + } + return newowner_; +} +inline ::pg_query::RoleSpec* AlterTableCmd::mutable_newowner() { + // @@protoc_insertion_point(field_mutable:pg_query.AlterTableCmd.newowner) + return _internal_mutable_newowner(); +} +inline void AlterTableCmd::set_allocated_newowner(::pg_query::RoleSpec* newowner) { + ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); + if (message_arena == nullptr) { + delete newowner_; + } + if (newowner) { + ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = + ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(newowner); + if (message_arena != submessage_arena) { + newowner = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( + message_arena, newowner, submessage_arena); + } + + } else { + + } + newowner_ = newowner; + // @@protoc_insertion_point(field_set_allocated:pg_query.AlterTableCmd.newowner) +} + +// .pg_query.Node def = 5 [json_name = "def"]; +inline bool AlterTableCmd::_internal_has_def() const { + return this != internal_default_instance() && def_ != nullptr; +} +inline bool AlterTableCmd::has_def() const { + return _internal_has_def(); +} +inline void AlterTableCmd::clear_def() { + if (GetArena() == nullptr && def_ != nullptr) { + delete def_; + } + def_ = nullptr; +} +inline const ::pg_query::Node& AlterTableCmd::_internal_def() const { + const ::pg_query::Node* p = def_; + return p != nullptr ? *p : reinterpret_cast( + ::pg_query::_Node_default_instance_); +} +inline const ::pg_query::Node& AlterTableCmd::def() const { + // @@protoc_insertion_point(field_get:pg_query.AlterTableCmd.def) + return _internal_def(); +} +inline void AlterTableCmd::unsafe_arena_set_allocated_def( + ::pg_query::Node* def) { + if (GetArena() == nullptr) { + delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(def_); + } + def_ = def; + if (def) { + + } else { + + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.AlterTableCmd.def) +} +inline ::pg_query::Node* AlterTableCmd::release_def() { + + ::pg_query::Node* temp = def_; + def_ = nullptr; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + return temp; +} +inline ::pg_query::Node* AlterTableCmd::unsafe_arena_release_def() { + // @@protoc_insertion_point(field_release:pg_query.AlterTableCmd.def) + + ::pg_query::Node* temp = def_; + def_ = nullptr; + return temp; +} +inline ::pg_query::Node* AlterTableCmd::_internal_mutable_def() { + + if (def_ == nullptr) { + auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); + def_ = p; + } + return def_; +} +inline ::pg_query::Node* AlterTableCmd::mutable_def() { + // @@protoc_insertion_point(field_mutable:pg_query.AlterTableCmd.def) + return _internal_mutable_def(); +} +inline void AlterTableCmd::set_allocated_def(::pg_query::Node* def) { + ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); + if (message_arena == nullptr) { + delete def_; + } + if (def) { + ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = + ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(def); + if (message_arena != submessage_arena) { + def = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( + message_arena, def, submessage_arena); + } + + } else { + + } + def_ = def; + // @@protoc_insertion_point(field_set_allocated:pg_query.AlterTableCmd.def) +} + +// .pg_query.DropBehavior behavior = 6 [json_name = "behavior"]; +inline void AlterTableCmd::clear_behavior() { + behavior_ = 0; +} +inline ::pg_query::DropBehavior AlterTableCmd::_internal_behavior() const { + return static_cast< ::pg_query::DropBehavior >(behavior_); +} +inline ::pg_query::DropBehavior AlterTableCmd::behavior() const { + // @@protoc_insertion_point(field_get:pg_query.AlterTableCmd.behavior) + return _internal_behavior(); +} +inline void AlterTableCmd::_internal_set_behavior(::pg_query::DropBehavior value) { + + behavior_ = value; +} +inline void AlterTableCmd::set_behavior(::pg_query::DropBehavior value) { + _internal_set_behavior(value); + // @@protoc_insertion_point(field_set:pg_query.AlterTableCmd.behavior) +} + +// bool missing_ok = 7 [json_name = "missing_ok"]; +inline void AlterTableCmd::clear_missing_ok() { + missing_ok_ = false; +} +inline bool AlterTableCmd::_internal_missing_ok() const { + return missing_ok_; +} +inline bool AlterTableCmd::missing_ok() const { + // @@protoc_insertion_point(field_get:pg_query.AlterTableCmd.missing_ok) + return _internal_missing_ok(); +} +inline void AlterTableCmd::_internal_set_missing_ok(bool value) { + + missing_ok_ = value; +} +inline void AlterTableCmd::set_missing_ok(bool value) { + _internal_set_missing_ok(value); + // @@protoc_insertion_point(field_set:pg_query.AlterTableCmd.missing_ok) +} + +// ------------------------------------------------------------------- + +// AlterDomainStmt + +// string subtype = 1 [json_name = "subtype"]; +inline void AlterDomainStmt::clear_subtype() { + subtype_.ClearToEmpty(); +} +inline const std::string& AlterDomainStmt::subtype() const { + // @@protoc_insertion_point(field_get:pg_query.AlterDomainStmt.subtype) + return _internal_subtype(); +} +inline void AlterDomainStmt::set_subtype(const std::string& value) { + _internal_set_subtype(value); + // @@protoc_insertion_point(field_set:pg_query.AlterDomainStmt.subtype) +} +inline std::string* AlterDomainStmt::mutable_subtype() { + // @@protoc_insertion_point(field_mutable:pg_query.AlterDomainStmt.subtype) + return _internal_mutable_subtype(); +} +inline const std::string& AlterDomainStmt::_internal_subtype() const { + return subtype_.Get(); +} +inline void AlterDomainStmt::_internal_set_subtype(const std::string& value) { + + subtype_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArena()); +} +inline void AlterDomainStmt::set_subtype(std::string&& value) { + + subtype_.Set( + ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::move(value), GetArena()); + // @@protoc_insertion_point(field_set_rvalue:pg_query.AlterDomainStmt.subtype) +} +inline void AlterDomainStmt::set_subtype(const char* value) { + GOOGLE_DCHECK(value != nullptr); + + subtype_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string(value), GetArena()); + // @@protoc_insertion_point(field_set_char:pg_query.AlterDomainStmt.subtype) +} +inline void AlterDomainStmt::set_subtype(const char* value, + size_t size) { + + subtype_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string( + reinterpret_cast(value), size), GetArena()); + // @@protoc_insertion_point(field_set_pointer:pg_query.AlterDomainStmt.subtype) +} +inline std::string* AlterDomainStmt::_internal_mutable_subtype() { + + return subtype_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArena()); +} +inline std::string* AlterDomainStmt::release_subtype() { + // @@protoc_insertion_point(field_release:pg_query.AlterDomainStmt.subtype) + return subtype_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); +} +inline void AlterDomainStmt::set_allocated_subtype(std::string* subtype) { + if (subtype != nullptr) { + + } else { + + } + subtype_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), subtype, + GetArena()); + // @@protoc_insertion_point(field_set_allocated:pg_query.AlterDomainStmt.subtype) +} + +// repeated .pg_query.Node type_name = 2 [json_name = "typeName"]; +inline int AlterDomainStmt::_internal_type_name_size() const { + return type_name_.size(); +} +inline int AlterDomainStmt::type_name_size() const { + return _internal_type_name_size(); +} +inline void AlterDomainStmt::clear_type_name() { + type_name_.Clear(); +} +inline ::pg_query::Node* AlterDomainStmt::mutable_type_name(int index) { + // @@protoc_insertion_point(field_mutable:pg_query.AlterDomainStmt.type_name) + return type_name_.Mutable(index); +} +inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* +AlterDomainStmt::mutable_type_name() { + // @@protoc_insertion_point(field_mutable_list:pg_query.AlterDomainStmt.type_name) + return &type_name_; +} +inline const ::pg_query::Node& AlterDomainStmt::_internal_type_name(int index) const { + return type_name_.Get(index); +} +inline const ::pg_query::Node& AlterDomainStmt::type_name(int index) const { + // @@protoc_insertion_point(field_get:pg_query.AlterDomainStmt.type_name) + return _internal_type_name(index); +} +inline ::pg_query::Node* AlterDomainStmt::_internal_add_type_name() { + return type_name_.Add(); +} +inline ::pg_query::Node* AlterDomainStmt::add_type_name() { + // @@protoc_insertion_point(field_add:pg_query.AlterDomainStmt.type_name) + return _internal_add_type_name(); +} +inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& +AlterDomainStmt::type_name() const { + // @@protoc_insertion_point(field_list:pg_query.AlterDomainStmt.type_name) + return type_name_; +} + +// string name = 3 [json_name = "name"]; +inline void AlterDomainStmt::clear_name() { + name_.ClearToEmpty(); +} +inline const std::string& AlterDomainStmt::name() const { + // @@protoc_insertion_point(field_get:pg_query.AlterDomainStmt.name) + return _internal_name(); +} +inline void AlterDomainStmt::set_name(const std::string& value) { + _internal_set_name(value); + // @@protoc_insertion_point(field_set:pg_query.AlterDomainStmt.name) +} +inline std::string* AlterDomainStmt::mutable_name() { + // @@protoc_insertion_point(field_mutable:pg_query.AlterDomainStmt.name) + return _internal_mutable_name(); +} +inline const std::string& AlterDomainStmt::_internal_name() const { + return name_.Get(); +} +inline void AlterDomainStmt::_internal_set_name(const std::string& value) { + + name_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArena()); +} +inline void AlterDomainStmt::set_name(std::string&& value) { + + name_.Set( + ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::move(value), GetArena()); + // @@protoc_insertion_point(field_set_rvalue:pg_query.AlterDomainStmt.name) +} +inline void AlterDomainStmt::set_name(const char* value) { + GOOGLE_DCHECK(value != nullptr); + + name_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string(value), GetArena()); + // @@protoc_insertion_point(field_set_char:pg_query.AlterDomainStmt.name) +} +inline void AlterDomainStmt::set_name(const char* value, + size_t size) { + + name_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string( + reinterpret_cast(value), size), GetArena()); + // @@protoc_insertion_point(field_set_pointer:pg_query.AlterDomainStmt.name) +} +inline std::string* AlterDomainStmt::_internal_mutable_name() { + + return name_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArena()); +} +inline std::string* AlterDomainStmt::release_name() { + // @@protoc_insertion_point(field_release:pg_query.AlterDomainStmt.name) + return name_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); +} +inline void AlterDomainStmt::set_allocated_name(std::string* name) { + if (name != nullptr) { + + } else { + + } + name_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), name, + GetArena()); + // @@protoc_insertion_point(field_set_allocated:pg_query.AlterDomainStmt.name) +} + +// .pg_query.Node def = 4 [json_name = "def"]; +inline bool AlterDomainStmt::_internal_has_def() const { + return this != internal_default_instance() && def_ != nullptr; +} +inline bool AlterDomainStmt::has_def() const { + return _internal_has_def(); +} +inline void AlterDomainStmt::clear_def() { + if (GetArena() == nullptr && def_ != nullptr) { + delete def_; + } + def_ = nullptr; +} +inline const ::pg_query::Node& AlterDomainStmt::_internal_def() const { + const ::pg_query::Node* p = def_; + return p != nullptr ? *p : reinterpret_cast( + ::pg_query::_Node_default_instance_); +} +inline const ::pg_query::Node& AlterDomainStmt::def() const { + // @@protoc_insertion_point(field_get:pg_query.AlterDomainStmt.def) + return _internal_def(); +} +inline void AlterDomainStmt::unsafe_arena_set_allocated_def( + ::pg_query::Node* def) { + if (GetArena() == nullptr) { + delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(def_); + } + def_ = def; + if (def) { + + } else { + + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.AlterDomainStmt.def) +} +inline ::pg_query::Node* AlterDomainStmt::release_def() { + + ::pg_query::Node* temp = def_; + def_ = nullptr; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + return temp; +} +inline ::pg_query::Node* AlterDomainStmt::unsafe_arena_release_def() { + // @@protoc_insertion_point(field_release:pg_query.AlterDomainStmt.def) + + ::pg_query::Node* temp = def_; + def_ = nullptr; + return temp; +} +inline ::pg_query::Node* AlterDomainStmt::_internal_mutable_def() { + + if (def_ == nullptr) { + auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); + def_ = p; + } + return def_; +} +inline ::pg_query::Node* AlterDomainStmt::mutable_def() { + // @@protoc_insertion_point(field_mutable:pg_query.AlterDomainStmt.def) + return _internal_mutable_def(); +} +inline void AlterDomainStmt::set_allocated_def(::pg_query::Node* def) { + ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); + if (message_arena == nullptr) { + delete def_; + } + if (def) { + ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = + ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(def); + if (message_arena != submessage_arena) { + def = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( + message_arena, def, submessage_arena); + } + + } else { + + } + def_ = def; + // @@protoc_insertion_point(field_set_allocated:pg_query.AlterDomainStmt.def) +} + +// .pg_query.DropBehavior behavior = 5 [json_name = "behavior"]; +inline void AlterDomainStmt::clear_behavior() { + behavior_ = 0; +} +inline ::pg_query::DropBehavior AlterDomainStmt::_internal_behavior() const { + return static_cast< ::pg_query::DropBehavior >(behavior_); +} +inline ::pg_query::DropBehavior AlterDomainStmt::behavior() const { + // @@protoc_insertion_point(field_get:pg_query.AlterDomainStmt.behavior) + return _internal_behavior(); +} +inline void AlterDomainStmt::_internal_set_behavior(::pg_query::DropBehavior value) { + + behavior_ = value; +} +inline void AlterDomainStmt::set_behavior(::pg_query::DropBehavior value) { + _internal_set_behavior(value); + // @@protoc_insertion_point(field_set:pg_query.AlterDomainStmt.behavior) +} + +// bool missing_ok = 6 [json_name = "missing_ok"]; +inline void AlterDomainStmt::clear_missing_ok() { + missing_ok_ = false; +} +inline bool AlterDomainStmt::_internal_missing_ok() const { + return missing_ok_; +} +inline bool AlterDomainStmt::missing_ok() const { + // @@protoc_insertion_point(field_get:pg_query.AlterDomainStmt.missing_ok) + return _internal_missing_ok(); +} +inline void AlterDomainStmt::_internal_set_missing_ok(bool value) { + + missing_ok_ = value; +} +inline void AlterDomainStmt::set_missing_ok(bool value) { + _internal_set_missing_ok(value); + // @@protoc_insertion_point(field_set:pg_query.AlterDomainStmt.missing_ok) +} + +// ------------------------------------------------------------------- + +// SetOperationStmt + +// .pg_query.SetOperation op = 1 [json_name = "op"]; +inline void SetOperationStmt::clear_op() { + op_ = 0; +} +inline ::pg_query::SetOperation SetOperationStmt::_internal_op() const { + return static_cast< ::pg_query::SetOperation >(op_); +} +inline ::pg_query::SetOperation SetOperationStmt::op() const { + // @@protoc_insertion_point(field_get:pg_query.SetOperationStmt.op) + return _internal_op(); +} +inline void SetOperationStmt::_internal_set_op(::pg_query::SetOperation value) { + + op_ = value; +} +inline void SetOperationStmt::set_op(::pg_query::SetOperation value) { + _internal_set_op(value); + // @@protoc_insertion_point(field_set:pg_query.SetOperationStmt.op) +} + +// bool all = 2 [json_name = "all"]; +inline void SetOperationStmt::clear_all() { + all_ = false; +} +inline bool SetOperationStmt::_internal_all() const { + return all_; +} +inline bool SetOperationStmt::all() const { + // @@protoc_insertion_point(field_get:pg_query.SetOperationStmt.all) + return _internal_all(); +} +inline void SetOperationStmt::_internal_set_all(bool value) { + + all_ = value; +} +inline void SetOperationStmt::set_all(bool value) { + _internal_set_all(value); + // @@protoc_insertion_point(field_set:pg_query.SetOperationStmt.all) +} + +// .pg_query.Node larg = 3 [json_name = "larg"]; +inline bool SetOperationStmt::_internal_has_larg() const { + return this != internal_default_instance() && larg_ != nullptr; +} +inline bool SetOperationStmt::has_larg() const { + return _internal_has_larg(); +} +inline void SetOperationStmt::clear_larg() { + if (GetArena() == nullptr && larg_ != nullptr) { + delete larg_; + } + larg_ = nullptr; +} +inline const ::pg_query::Node& SetOperationStmt::_internal_larg() const { + const ::pg_query::Node* p = larg_; + return p != nullptr ? *p : reinterpret_cast( + ::pg_query::_Node_default_instance_); +} +inline const ::pg_query::Node& SetOperationStmt::larg() const { + // @@protoc_insertion_point(field_get:pg_query.SetOperationStmt.larg) + return _internal_larg(); +} +inline void SetOperationStmt::unsafe_arena_set_allocated_larg( + ::pg_query::Node* larg) { + if (GetArena() == nullptr) { + delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(larg_); + } + larg_ = larg; + if (larg) { + + } else { + + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.SetOperationStmt.larg) +} +inline ::pg_query::Node* SetOperationStmt::release_larg() { + + ::pg_query::Node* temp = larg_; + larg_ = nullptr; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + return temp; +} +inline ::pg_query::Node* SetOperationStmt::unsafe_arena_release_larg() { + // @@protoc_insertion_point(field_release:pg_query.SetOperationStmt.larg) + + ::pg_query::Node* temp = larg_; + larg_ = nullptr; + return temp; +} +inline ::pg_query::Node* SetOperationStmt::_internal_mutable_larg() { + + if (larg_ == nullptr) { + auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); + larg_ = p; + } + return larg_; +} +inline ::pg_query::Node* SetOperationStmt::mutable_larg() { + // @@protoc_insertion_point(field_mutable:pg_query.SetOperationStmt.larg) + return _internal_mutable_larg(); +} +inline void SetOperationStmt::set_allocated_larg(::pg_query::Node* larg) { + ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); + if (message_arena == nullptr) { + delete larg_; + } + if (larg) { + ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = + ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(larg); + if (message_arena != submessage_arena) { + larg = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( + message_arena, larg, submessage_arena); + } + + } else { + + } + larg_ = larg; + // @@protoc_insertion_point(field_set_allocated:pg_query.SetOperationStmt.larg) +} + +// .pg_query.Node rarg = 4 [json_name = "rarg"]; +inline bool SetOperationStmt::_internal_has_rarg() const { + return this != internal_default_instance() && rarg_ != nullptr; +} +inline bool SetOperationStmt::has_rarg() const { + return _internal_has_rarg(); +} +inline void SetOperationStmt::clear_rarg() { + if (GetArena() == nullptr && rarg_ != nullptr) { + delete rarg_; + } + rarg_ = nullptr; +} +inline const ::pg_query::Node& SetOperationStmt::_internal_rarg() const { + const ::pg_query::Node* p = rarg_; + return p != nullptr ? *p : reinterpret_cast( + ::pg_query::_Node_default_instance_); +} +inline const ::pg_query::Node& SetOperationStmt::rarg() const { + // @@protoc_insertion_point(field_get:pg_query.SetOperationStmt.rarg) + return _internal_rarg(); +} +inline void SetOperationStmt::unsafe_arena_set_allocated_rarg( + ::pg_query::Node* rarg) { + if (GetArena() == nullptr) { + delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(rarg_); + } + rarg_ = rarg; + if (rarg) { + + } else { + + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.SetOperationStmt.rarg) +} +inline ::pg_query::Node* SetOperationStmt::release_rarg() { + + ::pg_query::Node* temp = rarg_; + rarg_ = nullptr; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + return temp; +} +inline ::pg_query::Node* SetOperationStmt::unsafe_arena_release_rarg() { + // @@protoc_insertion_point(field_release:pg_query.SetOperationStmt.rarg) + + ::pg_query::Node* temp = rarg_; + rarg_ = nullptr; + return temp; +} +inline ::pg_query::Node* SetOperationStmt::_internal_mutable_rarg() { + + if (rarg_ == nullptr) { + auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); + rarg_ = p; + } + return rarg_; +} +inline ::pg_query::Node* SetOperationStmt::mutable_rarg() { + // @@protoc_insertion_point(field_mutable:pg_query.SetOperationStmt.rarg) + return _internal_mutable_rarg(); +} +inline void SetOperationStmt::set_allocated_rarg(::pg_query::Node* rarg) { + ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); + if (message_arena == nullptr) { + delete rarg_; + } + if (rarg) { + ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = + ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(rarg); + if (message_arena != submessage_arena) { + rarg = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( + message_arena, rarg, submessage_arena); + } + + } else { + + } + rarg_ = rarg; + // @@protoc_insertion_point(field_set_allocated:pg_query.SetOperationStmt.rarg) +} + +// repeated .pg_query.Node col_types = 5 [json_name = "colTypes"]; +inline int SetOperationStmt::_internal_col_types_size() const { + return col_types_.size(); +} +inline int SetOperationStmt::col_types_size() const { + return _internal_col_types_size(); +} +inline void SetOperationStmt::clear_col_types() { + col_types_.Clear(); +} +inline ::pg_query::Node* SetOperationStmt::mutable_col_types(int index) { + // @@protoc_insertion_point(field_mutable:pg_query.SetOperationStmt.col_types) + return col_types_.Mutable(index); +} +inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* +SetOperationStmt::mutable_col_types() { + // @@protoc_insertion_point(field_mutable_list:pg_query.SetOperationStmt.col_types) + return &col_types_; +} +inline const ::pg_query::Node& SetOperationStmt::_internal_col_types(int index) const { + return col_types_.Get(index); +} +inline const ::pg_query::Node& SetOperationStmt::col_types(int index) const { + // @@protoc_insertion_point(field_get:pg_query.SetOperationStmt.col_types) + return _internal_col_types(index); +} +inline ::pg_query::Node* SetOperationStmt::_internal_add_col_types() { + return col_types_.Add(); +} +inline ::pg_query::Node* SetOperationStmt::add_col_types() { + // @@protoc_insertion_point(field_add:pg_query.SetOperationStmt.col_types) + return _internal_add_col_types(); +} +inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& +SetOperationStmt::col_types() const { + // @@protoc_insertion_point(field_list:pg_query.SetOperationStmt.col_types) + return col_types_; +} + +// repeated .pg_query.Node col_typmods = 6 [json_name = "colTypmods"]; +inline int SetOperationStmt::_internal_col_typmods_size() const { + return col_typmods_.size(); +} +inline int SetOperationStmt::col_typmods_size() const { + return _internal_col_typmods_size(); +} +inline void SetOperationStmt::clear_col_typmods() { + col_typmods_.Clear(); +} +inline ::pg_query::Node* SetOperationStmt::mutable_col_typmods(int index) { + // @@protoc_insertion_point(field_mutable:pg_query.SetOperationStmt.col_typmods) + return col_typmods_.Mutable(index); +} +inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* +SetOperationStmt::mutable_col_typmods() { + // @@protoc_insertion_point(field_mutable_list:pg_query.SetOperationStmt.col_typmods) + return &col_typmods_; +} +inline const ::pg_query::Node& SetOperationStmt::_internal_col_typmods(int index) const { + return col_typmods_.Get(index); +} +inline const ::pg_query::Node& SetOperationStmt::col_typmods(int index) const { + // @@protoc_insertion_point(field_get:pg_query.SetOperationStmt.col_typmods) + return _internal_col_typmods(index); +} +inline ::pg_query::Node* SetOperationStmt::_internal_add_col_typmods() { + return col_typmods_.Add(); +} +inline ::pg_query::Node* SetOperationStmt::add_col_typmods() { + // @@protoc_insertion_point(field_add:pg_query.SetOperationStmt.col_typmods) + return _internal_add_col_typmods(); +} +inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& +SetOperationStmt::col_typmods() const { + // @@protoc_insertion_point(field_list:pg_query.SetOperationStmt.col_typmods) + return col_typmods_; +} + +// repeated .pg_query.Node col_collations = 7 [json_name = "colCollations"]; +inline int SetOperationStmt::_internal_col_collations_size() const { + return col_collations_.size(); +} +inline int SetOperationStmt::col_collations_size() const { + return _internal_col_collations_size(); +} +inline void SetOperationStmt::clear_col_collations() { + col_collations_.Clear(); +} +inline ::pg_query::Node* SetOperationStmt::mutable_col_collations(int index) { + // @@protoc_insertion_point(field_mutable:pg_query.SetOperationStmt.col_collations) + return col_collations_.Mutable(index); +} +inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* +SetOperationStmt::mutable_col_collations() { + // @@protoc_insertion_point(field_mutable_list:pg_query.SetOperationStmt.col_collations) + return &col_collations_; +} +inline const ::pg_query::Node& SetOperationStmt::_internal_col_collations(int index) const { + return col_collations_.Get(index); +} +inline const ::pg_query::Node& SetOperationStmt::col_collations(int index) const { + // @@protoc_insertion_point(field_get:pg_query.SetOperationStmt.col_collations) + return _internal_col_collations(index); +} +inline ::pg_query::Node* SetOperationStmt::_internal_add_col_collations() { + return col_collations_.Add(); +} +inline ::pg_query::Node* SetOperationStmt::add_col_collations() { + // @@protoc_insertion_point(field_add:pg_query.SetOperationStmt.col_collations) + return _internal_add_col_collations(); +} +inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& +SetOperationStmt::col_collations() const { + // @@protoc_insertion_point(field_list:pg_query.SetOperationStmt.col_collations) + return col_collations_; +} + +// repeated .pg_query.Node group_clauses = 8 [json_name = "groupClauses"]; +inline int SetOperationStmt::_internal_group_clauses_size() const { + return group_clauses_.size(); +} +inline int SetOperationStmt::group_clauses_size() const { + return _internal_group_clauses_size(); +} +inline void SetOperationStmt::clear_group_clauses() { + group_clauses_.Clear(); +} +inline ::pg_query::Node* SetOperationStmt::mutable_group_clauses(int index) { + // @@protoc_insertion_point(field_mutable:pg_query.SetOperationStmt.group_clauses) + return group_clauses_.Mutable(index); +} +inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* +SetOperationStmt::mutable_group_clauses() { + // @@protoc_insertion_point(field_mutable_list:pg_query.SetOperationStmt.group_clauses) + return &group_clauses_; +} +inline const ::pg_query::Node& SetOperationStmt::_internal_group_clauses(int index) const { + return group_clauses_.Get(index); +} +inline const ::pg_query::Node& SetOperationStmt::group_clauses(int index) const { + // @@protoc_insertion_point(field_get:pg_query.SetOperationStmt.group_clauses) + return _internal_group_clauses(index); +} +inline ::pg_query::Node* SetOperationStmt::_internal_add_group_clauses() { + return group_clauses_.Add(); +} +inline ::pg_query::Node* SetOperationStmt::add_group_clauses() { + // @@protoc_insertion_point(field_add:pg_query.SetOperationStmt.group_clauses) + return _internal_add_group_clauses(); +} +inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& +SetOperationStmt::group_clauses() const { + // @@protoc_insertion_point(field_list:pg_query.SetOperationStmt.group_clauses) + return group_clauses_; +} + +// ------------------------------------------------------------------- + +// GrantStmt + +// bool is_grant = 1 [json_name = "is_grant"]; +inline void GrantStmt::clear_is_grant() { + is_grant_ = false; +} +inline bool GrantStmt::_internal_is_grant() const { + return is_grant_; +} +inline bool GrantStmt::is_grant() const { + // @@protoc_insertion_point(field_get:pg_query.GrantStmt.is_grant) + return _internal_is_grant(); +} +inline void GrantStmt::_internal_set_is_grant(bool value) { + + is_grant_ = value; +} +inline void GrantStmt::set_is_grant(bool value) { + _internal_set_is_grant(value); + // @@protoc_insertion_point(field_set:pg_query.GrantStmt.is_grant) +} + +// .pg_query.GrantTargetType targtype = 2 [json_name = "targtype"]; +inline void GrantStmt::clear_targtype() { + targtype_ = 0; +} +inline ::pg_query::GrantTargetType GrantStmt::_internal_targtype() const { + return static_cast< ::pg_query::GrantTargetType >(targtype_); +} +inline ::pg_query::GrantTargetType GrantStmt::targtype() const { + // @@protoc_insertion_point(field_get:pg_query.GrantStmt.targtype) + return _internal_targtype(); +} +inline void GrantStmt::_internal_set_targtype(::pg_query::GrantTargetType value) { + + targtype_ = value; +} +inline void GrantStmt::set_targtype(::pg_query::GrantTargetType value) { + _internal_set_targtype(value); + // @@protoc_insertion_point(field_set:pg_query.GrantStmt.targtype) +} + +// .pg_query.ObjectType objtype = 3 [json_name = "objtype"]; +inline void GrantStmt::clear_objtype() { + objtype_ = 0; +} +inline ::pg_query::ObjectType GrantStmt::_internal_objtype() const { + return static_cast< ::pg_query::ObjectType >(objtype_); +} +inline ::pg_query::ObjectType GrantStmt::objtype() const { + // @@protoc_insertion_point(field_get:pg_query.GrantStmt.objtype) + return _internal_objtype(); +} +inline void GrantStmt::_internal_set_objtype(::pg_query::ObjectType value) { + + objtype_ = value; +} +inline void GrantStmt::set_objtype(::pg_query::ObjectType value) { + _internal_set_objtype(value); + // @@protoc_insertion_point(field_set:pg_query.GrantStmt.objtype) +} + +// repeated .pg_query.Node objects = 4 [json_name = "objects"]; +inline int GrantStmt::_internal_objects_size() const { + return objects_.size(); +} +inline int GrantStmt::objects_size() const { + return _internal_objects_size(); +} +inline void GrantStmt::clear_objects() { + objects_.Clear(); +} +inline ::pg_query::Node* GrantStmt::mutable_objects(int index) { + // @@protoc_insertion_point(field_mutable:pg_query.GrantStmt.objects) + return objects_.Mutable(index); +} +inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* +GrantStmt::mutable_objects() { + // @@protoc_insertion_point(field_mutable_list:pg_query.GrantStmt.objects) + return &objects_; +} +inline const ::pg_query::Node& GrantStmt::_internal_objects(int index) const { + return objects_.Get(index); +} +inline const ::pg_query::Node& GrantStmt::objects(int index) const { + // @@protoc_insertion_point(field_get:pg_query.GrantStmt.objects) + return _internal_objects(index); +} +inline ::pg_query::Node* GrantStmt::_internal_add_objects() { + return objects_.Add(); +} +inline ::pg_query::Node* GrantStmt::add_objects() { + // @@protoc_insertion_point(field_add:pg_query.GrantStmt.objects) + return _internal_add_objects(); +} +inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& +GrantStmt::objects() const { + // @@protoc_insertion_point(field_list:pg_query.GrantStmt.objects) + return objects_; +} + +// repeated .pg_query.Node privileges = 5 [json_name = "privileges"]; +inline int GrantStmt::_internal_privileges_size() const { + return privileges_.size(); +} +inline int GrantStmt::privileges_size() const { + return _internal_privileges_size(); +} +inline void GrantStmt::clear_privileges() { + privileges_.Clear(); +} +inline ::pg_query::Node* GrantStmt::mutable_privileges(int index) { + // @@protoc_insertion_point(field_mutable:pg_query.GrantStmt.privileges) + return privileges_.Mutable(index); +} +inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* +GrantStmt::mutable_privileges() { + // @@protoc_insertion_point(field_mutable_list:pg_query.GrantStmt.privileges) + return &privileges_; +} +inline const ::pg_query::Node& GrantStmt::_internal_privileges(int index) const { + return privileges_.Get(index); +} +inline const ::pg_query::Node& GrantStmt::privileges(int index) const { + // @@protoc_insertion_point(field_get:pg_query.GrantStmt.privileges) + return _internal_privileges(index); +} +inline ::pg_query::Node* GrantStmt::_internal_add_privileges() { + return privileges_.Add(); +} +inline ::pg_query::Node* GrantStmt::add_privileges() { + // @@protoc_insertion_point(field_add:pg_query.GrantStmt.privileges) + return _internal_add_privileges(); +} +inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& +GrantStmt::privileges() const { + // @@protoc_insertion_point(field_list:pg_query.GrantStmt.privileges) + return privileges_; +} + +// repeated .pg_query.Node grantees = 6 [json_name = "grantees"]; +inline int GrantStmt::_internal_grantees_size() const { + return grantees_.size(); +} +inline int GrantStmt::grantees_size() const { + return _internal_grantees_size(); +} +inline void GrantStmt::clear_grantees() { + grantees_.Clear(); +} +inline ::pg_query::Node* GrantStmt::mutable_grantees(int index) { + // @@protoc_insertion_point(field_mutable:pg_query.GrantStmt.grantees) + return grantees_.Mutable(index); +} +inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* +GrantStmt::mutable_grantees() { + // @@protoc_insertion_point(field_mutable_list:pg_query.GrantStmt.grantees) + return &grantees_; +} +inline const ::pg_query::Node& GrantStmt::_internal_grantees(int index) const { + return grantees_.Get(index); +} +inline const ::pg_query::Node& GrantStmt::grantees(int index) const { + // @@protoc_insertion_point(field_get:pg_query.GrantStmt.grantees) + return _internal_grantees(index); +} +inline ::pg_query::Node* GrantStmt::_internal_add_grantees() { + return grantees_.Add(); +} +inline ::pg_query::Node* GrantStmt::add_grantees() { + // @@protoc_insertion_point(field_add:pg_query.GrantStmt.grantees) + return _internal_add_grantees(); +} +inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& +GrantStmt::grantees() const { + // @@protoc_insertion_point(field_list:pg_query.GrantStmt.grantees) + return grantees_; +} + +// bool grant_option = 7 [json_name = "grant_option"]; +inline void GrantStmt::clear_grant_option() { + grant_option_ = false; +} +inline bool GrantStmt::_internal_grant_option() const { + return grant_option_; +} +inline bool GrantStmt::grant_option() const { + // @@protoc_insertion_point(field_get:pg_query.GrantStmt.grant_option) + return _internal_grant_option(); +} +inline void GrantStmt::_internal_set_grant_option(bool value) { + + grant_option_ = value; +} +inline void GrantStmt::set_grant_option(bool value) { + _internal_set_grant_option(value); + // @@protoc_insertion_point(field_set:pg_query.GrantStmt.grant_option) +} + +// .pg_query.DropBehavior behavior = 8 [json_name = "behavior"]; +inline void GrantStmt::clear_behavior() { + behavior_ = 0; +} +inline ::pg_query::DropBehavior GrantStmt::_internal_behavior() const { + return static_cast< ::pg_query::DropBehavior >(behavior_); +} +inline ::pg_query::DropBehavior GrantStmt::behavior() const { + // @@protoc_insertion_point(field_get:pg_query.GrantStmt.behavior) + return _internal_behavior(); +} +inline void GrantStmt::_internal_set_behavior(::pg_query::DropBehavior value) { + + behavior_ = value; +} +inline void GrantStmt::set_behavior(::pg_query::DropBehavior value) { + _internal_set_behavior(value); + // @@protoc_insertion_point(field_set:pg_query.GrantStmt.behavior) +} + +// ------------------------------------------------------------------- + +// GrantRoleStmt + +// repeated .pg_query.Node granted_roles = 1 [json_name = "granted_roles"]; +inline int GrantRoleStmt::_internal_granted_roles_size() const { + return granted_roles_.size(); +} +inline int GrantRoleStmt::granted_roles_size() const { + return _internal_granted_roles_size(); +} +inline void GrantRoleStmt::clear_granted_roles() { + granted_roles_.Clear(); +} +inline ::pg_query::Node* GrantRoleStmt::mutable_granted_roles(int index) { + // @@protoc_insertion_point(field_mutable:pg_query.GrantRoleStmt.granted_roles) + return granted_roles_.Mutable(index); +} +inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* +GrantRoleStmt::mutable_granted_roles() { + // @@protoc_insertion_point(field_mutable_list:pg_query.GrantRoleStmt.granted_roles) + return &granted_roles_; +} +inline const ::pg_query::Node& GrantRoleStmt::_internal_granted_roles(int index) const { + return granted_roles_.Get(index); +} +inline const ::pg_query::Node& GrantRoleStmt::granted_roles(int index) const { + // @@protoc_insertion_point(field_get:pg_query.GrantRoleStmt.granted_roles) + return _internal_granted_roles(index); +} +inline ::pg_query::Node* GrantRoleStmt::_internal_add_granted_roles() { + return granted_roles_.Add(); +} +inline ::pg_query::Node* GrantRoleStmt::add_granted_roles() { + // @@protoc_insertion_point(field_add:pg_query.GrantRoleStmt.granted_roles) + return _internal_add_granted_roles(); +} +inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& +GrantRoleStmt::granted_roles() const { + // @@protoc_insertion_point(field_list:pg_query.GrantRoleStmt.granted_roles) + return granted_roles_; +} + +// repeated .pg_query.Node grantee_roles = 2 [json_name = "grantee_roles"]; +inline int GrantRoleStmt::_internal_grantee_roles_size() const { + return grantee_roles_.size(); +} +inline int GrantRoleStmt::grantee_roles_size() const { + return _internal_grantee_roles_size(); +} +inline void GrantRoleStmt::clear_grantee_roles() { + grantee_roles_.Clear(); +} +inline ::pg_query::Node* GrantRoleStmt::mutable_grantee_roles(int index) { + // @@protoc_insertion_point(field_mutable:pg_query.GrantRoleStmt.grantee_roles) + return grantee_roles_.Mutable(index); +} +inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* +GrantRoleStmt::mutable_grantee_roles() { + // @@protoc_insertion_point(field_mutable_list:pg_query.GrantRoleStmt.grantee_roles) + return &grantee_roles_; +} +inline const ::pg_query::Node& GrantRoleStmt::_internal_grantee_roles(int index) const { + return grantee_roles_.Get(index); +} +inline const ::pg_query::Node& GrantRoleStmt::grantee_roles(int index) const { + // @@protoc_insertion_point(field_get:pg_query.GrantRoleStmt.grantee_roles) + return _internal_grantee_roles(index); +} +inline ::pg_query::Node* GrantRoleStmt::_internal_add_grantee_roles() { + return grantee_roles_.Add(); +} +inline ::pg_query::Node* GrantRoleStmt::add_grantee_roles() { + // @@protoc_insertion_point(field_add:pg_query.GrantRoleStmt.grantee_roles) + return _internal_add_grantee_roles(); +} +inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& +GrantRoleStmt::grantee_roles() const { + // @@protoc_insertion_point(field_list:pg_query.GrantRoleStmt.grantee_roles) + return grantee_roles_; +} + +// bool is_grant = 3 [json_name = "is_grant"]; +inline void GrantRoleStmt::clear_is_grant() { + is_grant_ = false; +} +inline bool GrantRoleStmt::_internal_is_grant() const { + return is_grant_; +} +inline bool GrantRoleStmt::is_grant() const { + // @@protoc_insertion_point(field_get:pg_query.GrantRoleStmt.is_grant) + return _internal_is_grant(); +} +inline void GrantRoleStmt::_internal_set_is_grant(bool value) { + + is_grant_ = value; +} +inline void GrantRoleStmt::set_is_grant(bool value) { + _internal_set_is_grant(value); + // @@protoc_insertion_point(field_set:pg_query.GrantRoleStmt.is_grant) +} + +// bool admin_opt = 4 [json_name = "admin_opt"]; +inline void GrantRoleStmt::clear_admin_opt() { + admin_opt_ = false; +} +inline bool GrantRoleStmt::_internal_admin_opt() const { + return admin_opt_; +} +inline bool GrantRoleStmt::admin_opt() const { + // @@protoc_insertion_point(field_get:pg_query.GrantRoleStmt.admin_opt) + return _internal_admin_opt(); +} +inline void GrantRoleStmt::_internal_set_admin_opt(bool value) { + + admin_opt_ = value; +} +inline void GrantRoleStmt::set_admin_opt(bool value) { + _internal_set_admin_opt(value); + // @@protoc_insertion_point(field_set:pg_query.GrantRoleStmt.admin_opt) +} + +// .pg_query.RoleSpec grantor = 5 [json_name = "grantor"]; +inline bool GrantRoleStmt::_internal_has_grantor() const { + return this != internal_default_instance() && grantor_ != nullptr; +} +inline bool GrantRoleStmt::has_grantor() const { + return _internal_has_grantor(); +} +inline void GrantRoleStmt::clear_grantor() { + if (GetArena() == nullptr && grantor_ != nullptr) { + delete grantor_; + } + grantor_ = nullptr; +} +inline const ::pg_query::RoleSpec& GrantRoleStmt::_internal_grantor() const { + const ::pg_query::RoleSpec* p = grantor_; + return p != nullptr ? *p : reinterpret_cast( + ::pg_query::_RoleSpec_default_instance_); +} +inline const ::pg_query::RoleSpec& GrantRoleStmt::grantor() const { + // @@protoc_insertion_point(field_get:pg_query.GrantRoleStmt.grantor) + return _internal_grantor(); +} +inline void GrantRoleStmt::unsafe_arena_set_allocated_grantor( + ::pg_query::RoleSpec* grantor) { + if (GetArena() == nullptr) { + delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(grantor_); + } + grantor_ = grantor; + if (grantor) { + + } else { + + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.GrantRoleStmt.grantor) +} +inline ::pg_query::RoleSpec* GrantRoleStmt::release_grantor() { + + ::pg_query::RoleSpec* temp = grantor_; + grantor_ = nullptr; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + return temp; +} +inline ::pg_query::RoleSpec* GrantRoleStmt::unsafe_arena_release_grantor() { + // @@protoc_insertion_point(field_release:pg_query.GrantRoleStmt.grantor) + + ::pg_query::RoleSpec* temp = grantor_; + grantor_ = nullptr; + return temp; +} +inline ::pg_query::RoleSpec* GrantRoleStmt::_internal_mutable_grantor() { + + if (grantor_ == nullptr) { + auto* p = CreateMaybeMessage<::pg_query::RoleSpec>(GetArena()); + grantor_ = p; + } + return grantor_; +} +inline ::pg_query::RoleSpec* GrantRoleStmt::mutable_grantor() { + // @@protoc_insertion_point(field_mutable:pg_query.GrantRoleStmt.grantor) + return _internal_mutable_grantor(); +} +inline void GrantRoleStmt::set_allocated_grantor(::pg_query::RoleSpec* grantor) { + ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); + if (message_arena == nullptr) { + delete grantor_; + } + if (grantor) { + ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = + ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(grantor); + if (message_arena != submessage_arena) { + grantor = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( + message_arena, grantor, submessage_arena); + } + + } else { + + } + grantor_ = grantor; + // @@protoc_insertion_point(field_set_allocated:pg_query.GrantRoleStmt.grantor) +} + +// .pg_query.DropBehavior behavior = 6 [json_name = "behavior"]; +inline void GrantRoleStmt::clear_behavior() { + behavior_ = 0; +} +inline ::pg_query::DropBehavior GrantRoleStmt::_internal_behavior() const { + return static_cast< ::pg_query::DropBehavior >(behavior_); +} +inline ::pg_query::DropBehavior GrantRoleStmt::behavior() const { + // @@protoc_insertion_point(field_get:pg_query.GrantRoleStmt.behavior) + return _internal_behavior(); +} +inline void GrantRoleStmt::_internal_set_behavior(::pg_query::DropBehavior value) { + + behavior_ = value; +} +inline void GrantRoleStmt::set_behavior(::pg_query::DropBehavior value) { + _internal_set_behavior(value); + // @@protoc_insertion_point(field_set:pg_query.GrantRoleStmt.behavior) +} + +// ------------------------------------------------------------------- + +// AlterDefaultPrivilegesStmt + +// repeated .pg_query.Node options = 1 [json_name = "options"]; +inline int AlterDefaultPrivilegesStmt::_internal_options_size() const { + return options_.size(); +} +inline int AlterDefaultPrivilegesStmt::options_size() const { + return _internal_options_size(); +} +inline void AlterDefaultPrivilegesStmt::clear_options() { + options_.Clear(); +} +inline ::pg_query::Node* AlterDefaultPrivilegesStmt::mutable_options(int index) { + // @@protoc_insertion_point(field_mutable:pg_query.AlterDefaultPrivilegesStmt.options) + return options_.Mutable(index); +} +inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* +AlterDefaultPrivilegesStmt::mutable_options() { + // @@protoc_insertion_point(field_mutable_list:pg_query.AlterDefaultPrivilegesStmt.options) + return &options_; +} +inline const ::pg_query::Node& AlterDefaultPrivilegesStmt::_internal_options(int index) const { + return options_.Get(index); +} +inline const ::pg_query::Node& AlterDefaultPrivilegesStmt::options(int index) const { + // @@protoc_insertion_point(field_get:pg_query.AlterDefaultPrivilegesStmt.options) + return _internal_options(index); +} +inline ::pg_query::Node* AlterDefaultPrivilegesStmt::_internal_add_options() { + return options_.Add(); +} +inline ::pg_query::Node* AlterDefaultPrivilegesStmt::add_options() { + // @@protoc_insertion_point(field_add:pg_query.AlterDefaultPrivilegesStmt.options) + return _internal_add_options(); +} +inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& +AlterDefaultPrivilegesStmt::options() const { + // @@protoc_insertion_point(field_list:pg_query.AlterDefaultPrivilegesStmt.options) + return options_; +} + +// .pg_query.GrantStmt action = 2 [json_name = "action"]; +inline bool AlterDefaultPrivilegesStmt::_internal_has_action() const { + return this != internal_default_instance() && action_ != nullptr; +} +inline bool AlterDefaultPrivilegesStmt::has_action() const { + return _internal_has_action(); +} +inline void AlterDefaultPrivilegesStmt::clear_action() { + if (GetArena() == nullptr && action_ != nullptr) { + delete action_; + } + action_ = nullptr; +} +inline const ::pg_query::GrantStmt& AlterDefaultPrivilegesStmt::_internal_action() const { + const ::pg_query::GrantStmt* p = action_; + return p != nullptr ? *p : reinterpret_cast( + ::pg_query::_GrantStmt_default_instance_); +} +inline const ::pg_query::GrantStmt& AlterDefaultPrivilegesStmt::action() const { + // @@protoc_insertion_point(field_get:pg_query.AlterDefaultPrivilegesStmt.action) + return _internal_action(); +} +inline void AlterDefaultPrivilegesStmt::unsafe_arena_set_allocated_action( + ::pg_query::GrantStmt* action) { + if (GetArena() == nullptr) { + delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(action_); + } + action_ = action; + if (action) { + + } else { + + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.AlterDefaultPrivilegesStmt.action) +} +inline ::pg_query::GrantStmt* AlterDefaultPrivilegesStmt::release_action() { + + ::pg_query::GrantStmt* temp = action_; + action_ = nullptr; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + return temp; +} +inline ::pg_query::GrantStmt* AlterDefaultPrivilegesStmt::unsafe_arena_release_action() { + // @@protoc_insertion_point(field_release:pg_query.AlterDefaultPrivilegesStmt.action) + + ::pg_query::GrantStmt* temp = action_; + action_ = nullptr; + return temp; +} +inline ::pg_query::GrantStmt* AlterDefaultPrivilegesStmt::_internal_mutable_action() { + + if (action_ == nullptr) { + auto* p = CreateMaybeMessage<::pg_query::GrantStmt>(GetArena()); + action_ = p; + } + return action_; +} +inline ::pg_query::GrantStmt* AlterDefaultPrivilegesStmt::mutable_action() { + // @@protoc_insertion_point(field_mutable:pg_query.AlterDefaultPrivilegesStmt.action) + return _internal_mutable_action(); +} +inline void AlterDefaultPrivilegesStmt::set_allocated_action(::pg_query::GrantStmt* action) { + ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); + if (message_arena == nullptr) { + delete action_; + } + if (action) { + ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = + ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(action); + if (message_arena != submessage_arena) { + action = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( + message_arena, action, submessage_arena); + } + + } else { + + } + action_ = action; + // @@protoc_insertion_point(field_set_allocated:pg_query.AlterDefaultPrivilegesStmt.action) +} + +// ------------------------------------------------------------------- + +// ClosePortalStmt + +// string portalname = 1 [json_name = "portalname"]; +inline void ClosePortalStmt::clear_portalname() { + portalname_.ClearToEmpty(); +} +inline const std::string& ClosePortalStmt::portalname() const { + // @@protoc_insertion_point(field_get:pg_query.ClosePortalStmt.portalname) + return _internal_portalname(); +} +inline void ClosePortalStmt::set_portalname(const std::string& value) { + _internal_set_portalname(value); + // @@protoc_insertion_point(field_set:pg_query.ClosePortalStmt.portalname) +} +inline std::string* ClosePortalStmt::mutable_portalname() { + // @@protoc_insertion_point(field_mutable:pg_query.ClosePortalStmt.portalname) + return _internal_mutable_portalname(); +} +inline const std::string& ClosePortalStmt::_internal_portalname() const { + return portalname_.Get(); +} +inline void ClosePortalStmt::_internal_set_portalname(const std::string& value) { + + portalname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArena()); +} +inline void ClosePortalStmt::set_portalname(std::string&& value) { + + portalname_.Set( + ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::move(value), GetArena()); + // @@protoc_insertion_point(field_set_rvalue:pg_query.ClosePortalStmt.portalname) +} +inline void ClosePortalStmt::set_portalname(const char* value) { + GOOGLE_DCHECK(value != nullptr); + + portalname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string(value), GetArena()); + // @@protoc_insertion_point(field_set_char:pg_query.ClosePortalStmt.portalname) +} +inline void ClosePortalStmt::set_portalname(const char* value, + size_t size) { + + portalname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string( + reinterpret_cast(value), size), GetArena()); + // @@protoc_insertion_point(field_set_pointer:pg_query.ClosePortalStmt.portalname) +} +inline std::string* ClosePortalStmt::_internal_mutable_portalname() { + + return portalname_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArena()); +} +inline std::string* ClosePortalStmt::release_portalname() { + // @@protoc_insertion_point(field_release:pg_query.ClosePortalStmt.portalname) + return portalname_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); +} +inline void ClosePortalStmt::set_allocated_portalname(std::string* portalname) { + if (portalname != nullptr) { + + } else { + + } + portalname_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), portalname, + GetArena()); + // @@protoc_insertion_point(field_set_allocated:pg_query.ClosePortalStmt.portalname) +} + +// ------------------------------------------------------------------- + +// ClusterStmt + +// .pg_query.RangeVar relation = 1 [json_name = "relation"]; +inline bool ClusterStmt::_internal_has_relation() const { + return this != internal_default_instance() && relation_ != nullptr; +} +inline bool ClusterStmt::has_relation() const { + return _internal_has_relation(); +} +inline void ClusterStmt::clear_relation() { + if (GetArena() == nullptr && relation_ != nullptr) { + delete relation_; + } + relation_ = nullptr; +} +inline const ::pg_query::RangeVar& ClusterStmt::_internal_relation() const { + const ::pg_query::RangeVar* p = relation_; + return p != nullptr ? *p : reinterpret_cast( + ::pg_query::_RangeVar_default_instance_); +} +inline const ::pg_query::RangeVar& ClusterStmt::relation() const { + // @@protoc_insertion_point(field_get:pg_query.ClusterStmt.relation) + return _internal_relation(); +} +inline void ClusterStmt::unsafe_arena_set_allocated_relation( + ::pg_query::RangeVar* relation) { + if (GetArena() == nullptr) { + delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(relation_); + } + relation_ = relation; + if (relation) { + + } else { + + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.ClusterStmt.relation) +} +inline ::pg_query::RangeVar* ClusterStmt::release_relation() { + + ::pg_query::RangeVar* temp = relation_; + relation_ = nullptr; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + return temp; +} +inline ::pg_query::RangeVar* ClusterStmt::unsafe_arena_release_relation() { + // @@protoc_insertion_point(field_release:pg_query.ClusterStmt.relation) + + ::pg_query::RangeVar* temp = relation_; + relation_ = nullptr; + return temp; +} +inline ::pg_query::RangeVar* ClusterStmt::_internal_mutable_relation() { + + if (relation_ == nullptr) { + auto* p = CreateMaybeMessage<::pg_query::RangeVar>(GetArena()); + relation_ = p; + } + return relation_; +} +inline ::pg_query::RangeVar* ClusterStmt::mutable_relation() { + // @@protoc_insertion_point(field_mutable:pg_query.ClusterStmt.relation) + return _internal_mutable_relation(); +} +inline void ClusterStmt::set_allocated_relation(::pg_query::RangeVar* relation) { + ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); + if (message_arena == nullptr) { + delete relation_; + } + if (relation) { + ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = + ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(relation); + if (message_arena != submessage_arena) { + relation = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( + message_arena, relation, submessage_arena); + } + + } else { + + } + relation_ = relation; + // @@protoc_insertion_point(field_set_allocated:pg_query.ClusterStmt.relation) +} + +// string indexname = 2 [json_name = "indexname"]; +inline void ClusterStmt::clear_indexname() { + indexname_.ClearToEmpty(); +} +inline const std::string& ClusterStmt::indexname() const { + // @@protoc_insertion_point(field_get:pg_query.ClusterStmt.indexname) + return _internal_indexname(); +} +inline void ClusterStmt::set_indexname(const std::string& value) { + _internal_set_indexname(value); + // @@protoc_insertion_point(field_set:pg_query.ClusterStmt.indexname) +} +inline std::string* ClusterStmt::mutable_indexname() { + // @@protoc_insertion_point(field_mutable:pg_query.ClusterStmt.indexname) + return _internal_mutable_indexname(); +} +inline const std::string& ClusterStmt::_internal_indexname() const { + return indexname_.Get(); +} +inline void ClusterStmt::_internal_set_indexname(const std::string& value) { + + indexname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArena()); +} +inline void ClusterStmt::set_indexname(std::string&& value) { + + indexname_.Set( + ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::move(value), GetArena()); + // @@protoc_insertion_point(field_set_rvalue:pg_query.ClusterStmt.indexname) +} +inline void ClusterStmt::set_indexname(const char* value) { + GOOGLE_DCHECK(value != nullptr); + + indexname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string(value), GetArena()); + // @@protoc_insertion_point(field_set_char:pg_query.ClusterStmt.indexname) +} +inline void ClusterStmt::set_indexname(const char* value, + size_t size) { + + indexname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string( + reinterpret_cast(value), size), GetArena()); + // @@protoc_insertion_point(field_set_pointer:pg_query.ClusterStmt.indexname) +} +inline std::string* ClusterStmt::_internal_mutable_indexname() { + + return indexname_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArena()); +} +inline std::string* ClusterStmt::release_indexname() { + // @@protoc_insertion_point(field_release:pg_query.ClusterStmt.indexname) + return indexname_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); +} +inline void ClusterStmt::set_allocated_indexname(std::string* indexname) { + if (indexname != nullptr) { + + } else { + + } + indexname_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), indexname, + GetArena()); + // @@protoc_insertion_point(field_set_allocated:pg_query.ClusterStmt.indexname) +} + +// int32 options = 3 [json_name = "options"]; +inline void ClusterStmt::clear_options() { + options_ = 0; +} +inline ::PROTOBUF_NAMESPACE_ID::int32 ClusterStmt::_internal_options() const { + return options_; +} +inline ::PROTOBUF_NAMESPACE_ID::int32 ClusterStmt::options() const { + // @@protoc_insertion_point(field_get:pg_query.ClusterStmt.options) + return _internal_options(); +} +inline void ClusterStmt::_internal_set_options(::PROTOBUF_NAMESPACE_ID::int32 value) { + + options_ = value; +} +inline void ClusterStmt::set_options(::PROTOBUF_NAMESPACE_ID::int32 value) { + _internal_set_options(value); + // @@protoc_insertion_point(field_set:pg_query.ClusterStmt.options) +} + +// ------------------------------------------------------------------- + +// CopyStmt + +// .pg_query.RangeVar relation = 1 [json_name = "relation"]; +inline bool CopyStmt::_internal_has_relation() const { + return this != internal_default_instance() && relation_ != nullptr; +} +inline bool CopyStmt::has_relation() const { + return _internal_has_relation(); +} +inline void CopyStmt::clear_relation() { + if (GetArena() == nullptr && relation_ != nullptr) { + delete relation_; + } + relation_ = nullptr; +} +inline const ::pg_query::RangeVar& CopyStmt::_internal_relation() const { + const ::pg_query::RangeVar* p = relation_; + return p != nullptr ? *p : reinterpret_cast( + ::pg_query::_RangeVar_default_instance_); +} +inline const ::pg_query::RangeVar& CopyStmt::relation() const { + // @@protoc_insertion_point(field_get:pg_query.CopyStmt.relation) + return _internal_relation(); +} +inline void CopyStmt::unsafe_arena_set_allocated_relation( + ::pg_query::RangeVar* relation) { + if (GetArena() == nullptr) { + delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(relation_); + } + relation_ = relation; + if (relation) { + + } else { + + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.CopyStmt.relation) +} +inline ::pg_query::RangeVar* CopyStmt::release_relation() { + + ::pg_query::RangeVar* temp = relation_; + relation_ = nullptr; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + return temp; +} +inline ::pg_query::RangeVar* CopyStmt::unsafe_arena_release_relation() { + // @@protoc_insertion_point(field_release:pg_query.CopyStmt.relation) + + ::pg_query::RangeVar* temp = relation_; + relation_ = nullptr; + return temp; +} +inline ::pg_query::RangeVar* CopyStmt::_internal_mutable_relation() { + + if (relation_ == nullptr) { + auto* p = CreateMaybeMessage<::pg_query::RangeVar>(GetArena()); + relation_ = p; + } + return relation_; +} +inline ::pg_query::RangeVar* CopyStmt::mutable_relation() { + // @@protoc_insertion_point(field_mutable:pg_query.CopyStmt.relation) + return _internal_mutable_relation(); +} +inline void CopyStmt::set_allocated_relation(::pg_query::RangeVar* relation) { + ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); + if (message_arena == nullptr) { + delete relation_; + } + if (relation) { + ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = + ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(relation); + if (message_arena != submessage_arena) { + relation = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( + message_arena, relation, submessage_arena); + } + + } else { + + } + relation_ = relation; + // @@protoc_insertion_point(field_set_allocated:pg_query.CopyStmt.relation) +} + +// .pg_query.Node query = 2 [json_name = "query"]; +inline bool CopyStmt::_internal_has_query() const { + return this != internal_default_instance() && query_ != nullptr; +} +inline bool CopyStmt::has_query() const { + return _internal_has_query(); +} +inline void CopyStmt::clear_query() { + if (GetArena() == nullptr && query_ != nullptr) { + delete query_; + } + query_ = nullptr; +} +inline const ::pg_query::Node& CopyStmt::_internal_query() const { + const ::pg_query::Node* p = query_; + return p != nullptr ? *p : reinterpret_cast( + ::pg_query::_Node_default_instance_); +} +inline const ::pg_query::Node& CopyStmt::query() const { + // @@protoc_insertion_point(field_get:pg_query.CopyStmt.query) + return _internal_query(); +} +inline void CopyStmt::unsafe_arena_set_allocated_query( + ::pg_query::Node* query) { + if (GetArena() == nullptr) { + delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(query_); + } + query_ = query; + if (query) { + + } else { + + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.CopyStmt.query) +} +inline ::pg_query::Node* CopyStmt::release_query() { + + ::pg_query::Node* temp = query_; + query_ = nullptr; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + return temp; +} +inline ::pg_query::Node* CopyStmt::unsafe_arena_release_query() { + // @@protoc_insertion_point(field_release:pg_query.CopyStmt.query) + + ::pg_query::Node* temp = query_; + query_ = nullptr; + return temp; +} +inline ::pg_query::Node* CopyStmt::_internal_mutable_query() { + + if (query_ == nullptr) { + auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); + query_ = p; + } + return query_; +} +inline ::pg_query::Node* CopyStmt::mutable_query() { + // @@protoc_insertion_point(field_mutable:pg_query.CopyStmt.query) + return _internal_mutable_query(); +} +inline void CopyStmt::set_allocated_query(::pg_query::Node* query) { + ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); + if (message_arena == nullptr) { + delete query_; + } + if (query) { + ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = + ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(query); + if (message_arena != submessage_arena) { + query = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( + message_arena, query, submessage_arena); + } + + } else { + + } + query_ = query; + // @@protoc_insertion_point(field_set_allocated:pg_query.CopyStmt.query) +} + +// repeated .pg_query.Node attlist = 3 [json_name = "attlist"]; +inline int CopyStmt::_internal_attlist_size() const { + return attlist_.size(); +} +inline int CopyStmt::attlist_size() const { + return _internal_attlist_size(); +} +inline void CopyStmt::clear_attlist() { + attlist_.Clear(); +} +inline ::pg_query::Node* CopyStmt::mutable_attlist(int index) { + // @@protoc_insertion_point(field_mutable:pg_query.CopyStmt.attlist) + return attlist_.Mutable(index); +} +inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* +CopyStmt::mutable_attlist() { + // @@protoc_insertion_point(field_mutable_list:pg_query.CopyStmt.attlist) + return &attlist_; +} +inline const ::pg_query::Node& CopyStmt::_internal_attlist(int index) const { + return attlist_.Get(index); +} +inline const ::pg_query::Node& CopyStmt::attlist(int index) const { + // @@protoc_insertion_point(field_get:pg_query.CopyStmt.attlist) + return _internal_attlist(index); +} +inline ::pg_query::Node* CopyStmt::_internal_add_attlist() { + return attlist_.Add(); +} +inline ::pg_query::Node* CopyStmt::add_attlist() { + // @@protoc_insertion_point(field_add:pg_query.CopyStmt.attlist) + return _internal_add_attlist(); +} +inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& +CopyStmt::attlist() const { + // @@protoc_insertion_point(field_list:pg_query.CopyStmt.attlist) + return attlist_; +} + +// bool is_from = 4 [json_name = "is_from"]; +inline void CopyStmt::clear_is_from() { + is_from_ = false; +} +inline bool CopyStmt::_internal_is_from() const { + return is_from_; +} +inline bool CopyStmt::is_from() const { + // @@protoc_insertion_point(field_get:pg_query.CopyStmt.is_from) + return _internal_is_from(); +} +inline void CopyStmt::_internal_set_is_from(bool value) { + + is_from_ = value; +} +inline void CopyStmt::set_is_from(bool value) { + _internal_set_is_from(value); + // @@protoc_insertion_point(field_set:pg_query.CopyStmt.is_from) +} + +// bool is_program = 5 [json_name = "is_program"]; +inline void CopyStmt::clear_is_program() { + is_program_ = false; +} +inline bool CopyStmt::_internal_is_program() const { + return is_program_; +} +inline bool CopyStmt::is_program() const { + // @@protoc_insertion_point(field_get:pg_query.CopyStmt.is_program) + return _internal_is_program(); +} +inline void CopyStmt::_internal_set_is_program(bool value) { + + is_program_ = value; +} +inline void CopyStmt::set_is_program(bool value) { + _internal_set_is_program(value); + // @@protoc_insertion_point(field_set:pg_query.CopyStmt.is_program) +} + +// string filename = 6 [json_name = "filename"]; +inline void CopyStmt::clear_filename() { + filename_.ClearToEmpty(); +} +inline const std::string& CopyStmt::filename() const { + // @@protoc_insertion_point(field_get:pg_query.CopyStmt.filename) + return _internal_filename(); +} +inline void CopyStmt::set_filename(const std::string& value) { + _internal_set_filename(value); + // @@protoc_insertion_point(field_set:pg_query.CopyStmt.filename) +} +inline std::string* CopyStmt::mutable_filename() { + // @@protoc_insertion_point(field_mutable:pg_query.CopyStmt.filename) + return _internal_mutable_filename(); +} +inline const std::string& CopyStmt::_internal_filename() const { + return filename_.Get(); +} +inline void CopyStmt::_internal_set_filename(const std::string& value) { + + filename_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArena()); +} +inline void CopyStmt::set_filename(std::string&& value) { + + filename_.Set( + ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::move(value), GetArena()); + // @@protoc_insertion_point(field_set_rvalue:pg_query.CopyStmt.filename) +} +inline void CopyStmt::set_filename(const char* value) { + GOOGLE_DCHECK(value != nullptr); + + filename_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string(value), GetArena()); + // @@protoc_insertion_point(field_set_char:pg_query.CopyStmt.filename) +} +inline void CopyStmt::set_filename(const char* value, + size_t size) { + + filename_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string( + reinterpret_cast(value), size), GetArena()); + // @@protoc_insertion_point(field_set_pointer:pg_query.CopyStmt.filename) +} +inline std::string* CopyStmt::_internal_mutable_filename() { + + return filename_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArena()); +} +inline std::string* CopyStmt::release_filename() { + // @@protoc_insertion_point(field_release:pg_query.CopyStmt.filename) + return filename_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); +} +inline void CopyStmt::set_allocated_filename(std::string* filename) { + if (filename != nullptr) { + + } else { + + } + filename_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), filename, + GetArena()); + // @@protoc_insertion_point(field_set_allocated:pg_query.CopyStmt.filename) +} + +// repeated .pg_query.Node options = 7 [json_name = "options"]; +inline int CopyStmt::_internal_options_size() const { + return options_.size(); +} +inline int CopyStmt::options_size() const { + return _internal_options_size(); +} +inline void CopyStmt::clear_options() { + options_.Clear(); +} +inline ::pg_query::Node* CopyStmt::mutable_options(int index) { + // @@protoc_insertion_point(field_mutable:pg_query.CopyStmt.options) + return options_.Mutable(index); +} +inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* +CopyStmt::mutable_options() { + // @@protoc_insertion_point(field_mutable_list:pg_query.CopyStmt.options) + return &options_; +} +inline const ::pg_query::Node& CopyStmt::_internal_options(int index) const { + return options_.Get(index); +} +inline const ::pg_query::Node& CopyStmt::options(int index) const { + // @@protoc_insertion_point(field_get:pg_query.CopyStmt.options) + return _internal_options(index); +} +inline ::pg_query::Node* CopyStmt::_internal_add_options() { + return options_.Add(); +} +inline ::pg_query::Node* CopyStmt::add_options() { + // @@protoc_insertion_point(field_add:pg_query.CopyStmt.options) + return _internal_add_options(); +} +inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& +CopyStmt::options() const { + // @@protoc_insertion_point(field_list:pg_query.CopyStmt.options) + return options_; +} + +// .pg_query.Node where_clause = 8 [json_name = "whereClause"]; +inline bool CopyStmt::_internal_has_where_clause() const { + return this != internal_default_instance() && where_clause_ != nullptr; +} +inline bool CopyStmt::has_where_clause() const { + return _internal_has_where_clause(); +} +inline void CopyStmt::clear_where_clause() { + if (GetArena() == nullptr && where_clause_ != nullptr) { + delete where_clause_; + } + where_clause_ = nullptr; +} +inline const ::pg_query::Node& CopyStmt::_internal_where_clause() const { + const ::pg_query::Node* p = where_clause_; + return p != nullptr ? *p : reinterpret_cast( + ::pg_query::_Node_default_instance_); +} +inline const ::pg_query::Node& CopyStmt::where_clause() const { + // @@protoc_insertion_point(field_get:pg_query.CopyStmt.where_clause) + return _internal_where_clause(); +} +inline void CopyStmt::unsafe_arena_set_allocated_where_clause( + ::pg_query::Node* where_clause) { + if (GetArena() == nullptr) { + delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(where_clause_); + } + where_clause_ = where_clause; + if (where_clause) { + + } else { + + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.CopyStmt.where_clause) +} +inline ::pg_query::Node* CopyStmt::release_where_clause() { + + ::pg_query::Node* temp = where_clause_; + where_clause_ = nullptr; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + return temp; +} +inline ::pg_query::Node* CopyStmt::unsafe_arena_release_where_clause() { + // @@protoc_insertion_point(field_release:pg_query.CopyStmt.where_clause) + + ::pg_query::Node* temp = where_clause_; + where_clause_ = nullptr; + return temp; +} +inline ::pg_query::Node* CopyStmt::_internal_mutable_where_clause() { + + if (where_clause_ == nullptr) { + auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); + where_clause_ = p; + } + return where_clause_; +} +inline ::pg_query::Node* CopyStmt::mutable_where_clause() { + // @@protoc_insertion_point(field_mutable:pg_query.CopyStmt.where_clause) + return _internal_mutable_where_clause(); +} +inline void CopyStmt::set_allocated_where_clause(::pg_query::Node* where_clause) { + ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); + if (message_arena == nullptr) { + delete where_clause_; + } + if (where_clause) { + ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = + ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(where_clause); + if (message_arena != submessage_arena) { + where_clause = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( + message_arena, where_clause, submessage_arena); + } + + } else { + + } + where_clause_ = where_clause; + // @@protoc_insertion_point(field_set_allocated:pg_query.CopyStmt.where_clause) +} + +// ------------------------------------------------------------------- + +// CreateStmt + +// .pg_query.RangeVar relation = 1 [json_name = "relation"]; +inline bool CreateStmt::_internal_has_relation() const { + return this != internal_default_instance() && relation_ != nullptr; +} +inline bool CreateStmt::has_relation() const { + return _internal_has_relation(); +} +inline void CreateStmt::clear_relation() { + if (GetArena() == nullptr && relation_ != nullptr) { + delete relation_; + } + relation_ = nullptr; +} +inline const ::pg_query::RangeVar& CreateStmt::_internal_relation() const { + const ::pg_query::RangeVar* p = relation_; + return p != nullptr ? *p : reinterpret_cast( + ::pg_query::_RangeVar_default_instance_); +} +inline const ::pg_query::RangeVar& CreateStmt::relation() const { + // @@protoc_insertion_point(field_get:pg_query.CreateStmt.relation) + return _internal_relation(); +} +inline void CreateStmt::unsafe_arena_set_allocated_relation( + ::pg_query::RangeVar* relation) { + if (GetArena() == nullptr) { + delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(relation_); + } + relation_ = relation; + if (relation) { + + } else { + + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.CreateStmt.relation) +} +inline ::pg_query::RangeVar* CreateStmt::release_relation() { + + ::pg_query::RangeVar* temp = relation_; + relation_ = nullptr; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + return temp; +} +inline ::pg_query::RangeVar* CreateStmt::unsafe_arena_release_relation() { + // @@protoc_insertion_point(field_release:pg_query.CreateStmt.relation) + + ::pg_query::RangeVar* temp = relation_; + relation_ = nullptr; + return temp; +} +inline ::pg_query::RangeVar* CreateStmt::_internal_mutable_relation() { + + if (relation_ == nullptr) { + auto* p = CreateMaybeMessage<::pg_query::RangeVar>(GetArena()); + relation_ = p; + } + return relation_; +} +inline ::pg_query::RangeVar* CreateStmt::mutable_relation() { + // @@protoc_insertion_point(field_mutable:pg_query.CreateStmt.relation) + return _internal_mutable_relation(); +} +inline void CreateStmt::set_allocated_relation(::pg_query::RangeVar* relation) { + ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); + if (message_arena == nullptr) { + delete relation_; + } + if (relation) { + ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = + ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(relation); + if (message_arena != submessage_arena) { + relation = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( + message_arena, relation, submessage_arena); + } + + } else { + + } + relation_ = relation; + // @@protoc_insertion_point(field_set_allocated:pg_query.CreateStmt.relation) +} + +// repeated .pg_query.Node table_elts = 2 [json_name = "tableElts"]; +inline int CreateStmt::_internal_table_elts_size() const { + return table_elts_.size(); +} +inline int CreateStmt::table_elts_size() const { + return _internal_table_elts_size(); +} +inline void CreateStmt::clear_table_elts() { + table_elts_.Clear(); +} +inline ::pg_query::Node* CreateStmt::mutable_table_elts(int index) { + // @@protoc_insertion_point(field_mutable:pg_query.CreateStmt.table_elts) + return table_elts_.Mutable(index); +} +inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* +CreateStmt::mutable_table_elts() { + // @@protoc_insertion_point(field_mutable_list:pg_query.CreateStmt.table_elts) + return &table_elts_; +} +inline const ::pg_query::Node& CreateStmt::_internal_table_elts(int index) const { + return table_elts_.Get(index); +} +inline const ::pg_query::Node& CreateStmt::table_elts(int index) const { + // @@protoc_insertion_point(field_get:pg_query.CreateStmt.table_elts) + return _internal_table_elts(index); +} +inline ::pg_query::Node* CreateStmt::_internal_add_table_elts() { + return table_elts_.Add(); +} +inline ::pg_query::Node* CreateStmt::add_table_elts() { + // @@protoc_insertion_point(field_add:pg_query.CreateStmt.table_elts) + return _internal_add_table_elts(); +} +inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& +CreateStmt::table_elts() const { + // @@protoc_insertion_point(field_list:pg_query.CreateStmt.table_elts) + return table_elts_; +} + +// repeated .pg_query.Node inh_relations = 3 [json_name = "inhRelations"]; +inline int CreateStmt::_internal_inh_relations_size() const { + return inh_relations_.size(); +} +inline int CreateStmt::inh_relations_size() const { + return _internal_inh_relations_size(); +} +inline void CreateStmt::clear_inh_relations() { + inh_relations_.Clear(); +} +inline ::pg_query::Node* CreateStmt::mutable_inh_relations(int index) { + // @@protoc_insertion_point(field_mutable:pg_query.CreateStmt.inh_relations) + return inh_relations_.Mutable(index); +} +inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* +CreateStmt::mutable_inh_relations() { + // @@protoc_insertion_point(field_mutable_list:pg_query.CreateStmt.inh_relations) + return &inh_relations_; +} +inline const ::pg_query::Node& CreateStmt::_internal_inh_relations(int index) const { + return inh_relations_.Get(index); +} +inline const ::pg_query::Node& CreateStmt::inh_relations(int index) const { + // @@protoc_insertion_point(field_get:pg_query.CreateStmt.inh_relations) + return _internal_inh_relations(index); +} +inline ::pg_query::Node* CreateStmt::_internal_add_inh_relations() { + return inh_relations_.Add(); +} +inline ::pg_query::Node* CreateStmt::add_inh_relations() { + // @@protoc_insertion_point(field_add:pg_query.CreateStmt.inh_relations) + return _internal_add_inh_relations(); +} +inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& +CreateStmt::inh_relations() const { + // @@protoc_insertion_point(field_list:pg_query.CreateStmt.inh_relations) + return inh_relations_; +} + +// .pg_query.PartitionBoundSpec partbound = 4 [json_name = "partbound"]; +inline bool CreateStmt::_internal_has_partbound() const { + return this != internal_default_instance() && partbound_ != nullptr; +} +inline bool CreateStmt::has_partbound() const { + return _internal_has_partbound(); +} +inline void CreateStmt::clear_partbound() { + if (GetArena() == nullptr && partbound_ != nullptr) { + delete partbound_; + } + partbound_ = nullptr; +} +inline const ::pg_query::PartitionBoundSpec& CreateStmt::_internal_partbound() const { + const ::pg_query::PartitionBoundSpec* p = partbound_; + return p != nullptr ? *p : reinterpret_cast( + ::pg_query::_PartitionBoundSpec_default_instance_); +} +inline const ::pg_query::PartitionBoundSpec& CreateStmt::partbound() const { + // @@protoc_insertion_point(field_get:pg_query.CreateStmt.partbound) + return _internal_partbound(); +} +inline void CreateStmt::unsafe_arena_set_allocated_partbound( + ::pg_query::PartitionBoundSpec* partbound) { + if (GetArena() == nullptr) { + delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(partbound_); + } + partbound_ = partbound; + if (partbound) { + + } else { + + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.CreateStmt.partbound) +} +inline ::pg_query::PartitionBoundSpec* CreateStmt::release_partbound() { + + ::pg_query::PartitionBoundSpec* temp = partbound_; + partbound_ = nullptr; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + return temp; +} +inline ::pg_query::PartitionBoundSpec* CreateStmt::unsafe_arena_release_partbound() { + // @@protoc_insertion_point(field_release:pg_query.CreateStmt.partbound) + + ::pg_query::PartitionBoundSpec* temp = partbound_; + partbound_ = nullptr; + return temp; +} +inline ::pg_query::PartitionBoundSpec* CreateStmt::_internal_mutable_partbound() { + + if (partbound_ == nullptr) { + auto* p = CreateMaybeMessage<::pg_query::PartitionBoundSpec>(GetArena()); + partbound_ = p; + } + return partbound_; +} +inline ::pg_query::PartitionBoundSpec* CreateStmt::mutable_partbound() { + // @@protoc_insertion_point(field_mutable:pg_query.CreateStmt.partbound) + return _internal_mutable_partbound(); +} +inline void CreateStmt::set_allocated_partbound(::pg_query::PartitionBoundSpec* partbound) { + ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); + if (message_arena == nullptr) { + delete partbound_; + } + if (partbound) { + ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = + ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(partbound); + if (message_arena != submessage_arena) { + partbound = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( + message_arena, partbound, submessage_arena); + } + + } else { + + } + partbound_ = partbound; + // @@protoc_insertion_point(field_set_allocated:pg_query.CreateStmt.partbound) +} + +// .pg_query.PartitionSpec partspec = 5 [json_name = "partspec"]; +inline bool CreateStmt::_internal_has_partspec() const { + return this != internal_default_instance() && partspec_ != nullptr; +} +inline bool CreateStmt::has_partspec() const { + return _internal_has_partspec(); +} +inline void CreateStmt::clear_partspec() { + if (GetArena() == nullptr && partspec_ != nullptr) { + delete partspec_; + } + partspec_ = nullptr; +} +inline const ::pg_query::PartitionSpec& CreateStmt::_internal_partspec() const { + const ::pg_query::PartitionSpec* p = partspec_; + return p != nullptr ? *p : reinterpret_cast( + ::pg_query::_PartitionSpec_default_instance_); +} +inline const ::pg_query::PartitionSpec& CreateStmt::partspec() const { + // @@protoc_insertion_point(field_get:pg_query.CreateStmt.partspec) + return _internal_partspec(); +} +inline void CreateStmt::unsafe_arena_set_allocated_partspec( + ::pg_query::PartitionSpec* partspec) { + if (GetArena() == nullptr) { + delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(partspec_); + } + partspec_ = partspec; + if (partspec) { + + } else { + + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.CreateStmt.partspec) +} +inline ::pg_query::PartitionSpec* CreateStmt::release_partspec() { + + ::pg_query::PartitionSpec* temp = partspec_; + partspec_ = nullptr; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + return temp; +} +inline ::pg_query::PartitionSpec* CreateStmt::unsafe_arena_release_partspec() { + // @@protoc_insertion_point(field_release:pg_query.CreateStmt.partspec) + + ::pg_query::PartitionSpec* temp = partspec_; + partspec_ = nullptr; + return temp; +} +inline ::pg_query::PartitionSpec* CreateStmt::_internal_mutable_partspec() { + + if (partspec_ == nullptr) { + auto* p = CreateMaybeMessage<::pg_query::PartitionSpec>(GetArena()); + partspec_ = p; + } + return partspec_; +} +inline ::pg_query::PartitionSpec* CreateStmt::mutable_partspec() { + // @@protoc_insertion_point(field_mutable:pg_query.CreateStmt.partspec) + return _internal_mutable_partspec(); +} +inline void CreateStmt::set_allocated_partspec(::pg_query::PartitionSpec* partspec) { + ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); + if (message_arena == nullptr) { + delete partspec_; + } + if (partspec) { + ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = + ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(partspec); + if (message_arena != submessage_arena) { + partspec = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( + message_arena, partspec, submessage_arena); + } + + } else { + + } + partspec_ = partspec; + // @@protoc_insertion_point(field_set_allocated:pg_query.CreateStmt.partspec) +} + +// .pg_query.TypeName of_typename = 6 [json_name = "ofTypename"]; +inline bool CreateStmt::_internal_has_of_typename() const { + return this != internal_default_instance() && of_typename_ != nullptr; +} +inline bool CreateStmt::has_of_typename() const { + return _internal_has_of_typename(); +} +inline void CreateStmt::clear_of_typename() { + if (GetArena() == nullptr && of_typename_ != nullptr) { + delete of_typename_; + } + of_typename_ = nullptr; +} +inline const ::pg_query::TypeName& CreateStmt::_internal_of_typename() const { + const ::pg_query::TypeName* p = of_typename_; + return p != nullptr ? *p : reinterpret_cast( + ::pg_query::_TypeName_default_instance_); +} +inline const ::pg_query::TypeName& CreateStmt::of_typename() const { + // @@protoc_insertion_point(field_get:pg_query.CreateStmt.of_typename) + return _internal_of_typename(); +} +inline void CreateStmt::unsafe_arena_set_allocated_of_typename( + ::pg_query::TypeName* of_typename) { + if (GetArena() == nullptr) { + delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(of_typename_); + } + of_typename_ = of_typename; + if (of_typename) { + + } else { + + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.CreateStmt.of_typename) +} +inline ::pg_query::TypeName* CreateStmt::release_of_typename() { + + ::pg_query::TypeName* temp = of_typename_; + of_typename_ = nullptr; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + return temp; +} +inline ::pg_query::TypeName* CreateStmt::unsafe_arena_release_of_typename() { + // @@protoc_insertion_point(field_release:pg_query.CreateStmt.of_typename) + + ::pg_query::TypeName* temp = of_typename_; + of_typename_ = nullptr; + return temp; +} +inline ::pg_query::TypeName* CreateStmt::_internal_mutable_of_typename() { + + if (of_typename_ == nullptr) { + auto* p = CreateMaybeMessage<::pg_query::TypeName>(GetArena()); + of_typename_ = p; + } + return of_typename_; +} +inline ::pg_query::TypeName* CreateStmt::mutable_of_typename() { + // @@protoc_insertion_point(field_mutable:pg_query.CreateStmt.of_typename) + return _internal_mutable_of_typename(); +} +inline void CreateStmt::set_allocated_of_typename(::pg_query::TypeName* of_typename) { + ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); + if (message_arena == nullptr) { + delete of_typename_; + } + if (of_typename) { + ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = + ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(of_typename); + if (message_arena != submessage_arena) { + of_typename = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( + message_arena, of_typename, submessage_arena); + } + + } else { + + } + of_typename_ = of_typename; + // @@protoc_insertion_point(field_set_allocated:pg_query.CreateStmt.of_typename) +} + +// repeated .pg_query.Node constraints = 7 [json_name = "constraints"]; +inline int CreateStmt::_internal_constraints_size() const { + return constraints_.size(); +} +inline int CreateStmt::constraints_size() const { + return _internal_constraints_size(); +} +inline void CreateStmt::clear_constraints() { + constraints_.Clear(); +} +inline ::pg_query::Node* CreateStmt::mutable_constraints(int index) { + // @@protoc_insertion_point(field_mutable:pg_query.CreateStmt.constraints) + return constraints_.Mutable(index); +} +inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* +CreateStmt::mutable_constraints() { + // @@protoc_insertion_point(field_mutable_list:pg_query.CreateStmt.constraints) + return &constraints_; +} +inline const ::pg_query::Node& CreateStmt::_internal_constraints(int index) const { + return constraints_.Get(index); +} +inline const ::pg_query::Node& CreateStmt::constraints(int index) const { + // @@protoc_insertion_point(field_get:pg_query.CreateStmt.constraints) + return _internal_constraints(index); +} +inline ::pg_query::Node* CreateStmt::_internal_add_constraints() { + return constraints_.Add(); +} +inline ::pg_query::Node* CreateStmt::add_constraints() { + // @@protoc_insertion_point(field_add:pg_query.CreateStmt.constraints) + return _internal_add_constraints(); +} +inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& +CreateStmt::constraints() const { + // @@protoc_insertion_point(field_list:pg_query.CreateStmt.constraints) + return constraints_; +} + +// repeated .pg_query.Node options = 8 [json_name = "options"]; +inline int CreateStmt::_internal_options_size() const { + return options_.size(); +} +inline int CreateStmt::options_size() const { + return _internal_options_size(); +} +inline void CreateStmt::clear_options() { + options_.Clear(); +} +inline ::pg_query::Node* CreateStmt::mutable_options(int index) { + // @@protoc_insertion_point(field_mutable:pg_query.CreateStmt.options) + return options_.Mutable(index); +} +inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* +CreateStmt::mutable_options() { + // @@protoc_insertion_point(field_mutable_list:pg_query.CreateStmt.options) + return &options_; +} +inline const ::pg_query::Node& CreateStmt::_internal_options(int index) const { + return options_.Get(index); +} +inline const ::pg_query::Node& CreateStmt::options(int index) const { + // @@protoc_insertion_point(field_get:pg_query.CreateStmt.options) + return _internal_options(index); +} +inline ::pg_query::Node* CreateStmt::_internal_add_options() { + return options_.Add(); +} +inline ::pg_query::Node* CreateStmt::add_options() { + // @@protoc_insertion_point(field_add:pg_query.CreateStmt.options) + return _internal_add_options(); +} +inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& +CreateStmt::options() const { + // @@protoc_insertion_point(field_list:pg_query.CreateStmt.options) + return options_; +} + +// .pg_query.OnCommitAction oncommit = 9 [json_name = "oncommit"]; +inline void CreateStmt::clear_oncommit() { + oncommit_ = 0; +} +inline ::pg_query::OnCommitAction CreateStmt::_internal_oncommit() const { + return static_cast< ::pg_query::OnCommitAction >(oncommit_); +} +inline ::pg_query::OnCommitAction CreateStmt::oncommit() const { + // @@protoc_insertion_point(field_get:pg_query.CreateStmt.oncommit) + return _internal_oncommit(); +} +inline void CreateStmt::_internal_set_oncommit(::pg_query::OnCommitAction value) { + + oncommit_ = value; +} +inline void CreateStmt::set_oncommit(::pg_query::OnCommitAction value) { + _internal_set_oncommit(value); + // @@protoc_insertion_point(field_set:pg_query.CreateStmt.oncommit) +} + +// string tablespacename = 10 [json_name = "tablespacename"]; +inline void CreateStmt::clear_tablespacename() { + tablespacename_.ClearToEmpty(); +} +inline const std::string& CreateStmt::tablespacename() const { + // @@protoc_insertion_point(field_get:pg_query.CreateStmt.tablespacename) + return _internal_tablespacename(); +} +inline void CreateStmt::set_tablespacename(const std::string& value) { + _internal_set_tablespacename(value); + // @@protoc_insertion_point(field_set:pg_query.CreateStmt.tablespacename) +} +inline std::string* CreateStmt::mutable_tablespacename() { + // @@protoc_insertion_point(field_mutable:pg_query.CreateStmt.tablespacename) + return _internal_mutable_tablespacename(); +} +inline const std::string& CreateStmt::_internal_tablespacename() const { + return tablespacename_.Get(); +} +inline void CreateStmt::_internal_set_tablespacename(const std::string& value) { + + tablespacename_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArena()); +} +inline void CreateStmt::set_tablespacename(std::string&& value) { + + tablespacename_.Set( + ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::move(value), GetArena()); + // @@protoc_insertion_point(field_set_rvalue:pg_query.CreateStmt.tablespacename) +} +inline void CreateStmt::set_tablespacename(const char* value) { + GOOGLE_DCHECK(value != nullptr); + + tablespacename_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string(value), GetArena()); + // @@protoc_insertion_point(field_set_char:pg_query.CreateStmt.tablespacename) +} +inline void CreateStmt::set_tablespacename(const char* value, + size_t size) { + + tablespacename_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string( + reinterpret_cast(value), size), GetArena()); + // @@protoc_insertion_point(field_set_pointer:pg_query.CreateStmt.tablespacename) +} +inline std::string* CreateStmt::_internal_mutable_tablespacename() { + + return tablespacename_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArena()); +} +inline std::string* CreateStmt::release_tablespacename() { + // @@protoc_insertion_point(field_release:pg_query.CreateStmt.tablespacename) + return tablespacename_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); +} +inline void CreateStmt::set_allocated_tablespacename(std::string* tablespacename) { + if (tablespacename != nullptr) { + + } else { + + } + tablespacename_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), tablespacename, + GetArena()); + // @@protoc_insertion_point(field_set_allocated:pg_query.CreateStmt.tablespacename) +} + +// string access_method = 11 [json_name = "accessMethod"]; +inline void CreateStmt::clear_access_method() { + access_method_.ClearToEmpty(); +} +inline const std::string& CreateStmt::access_method() const { + // @@protoc_insertion_point(field_get:pg_query.CreateStmt.access_method) + return _internal_access_method(); +} +inline void CreateStmt::set_access_method(const std::string& value) { + _internal_set_access_method(value); + // @@protoc_insertion_point(field_set:pg_query.CreateStmt.access_method) +} +inline std::string* CreateStmt::mutable_access_method() { + // @@protoc_insertion_point(field_mutable:pg_query.CreateStmt.access_method) + return _internal_mutable_access_method(); +} +inline const std::string& CreateStmt::_internal_access_method() const { + return access_method_.Get(); +} +inline void CreateStmt::_internal_set_access_method(const std::string& value) { + + access_method_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArena()); +} +inline void CreateStmt::set_access_method(std::string&& value) { + + access_method_.Set( + ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::move(value), GetArena()); + // @@protoc_insertion_point(field_set_rvalue:pg_query.CreateStmt.access_method) +} +inline void CreateStmt::set_access_method(const char* value) { + GOOGLE_DCHECK(value != nullptr); + + access_method_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string(value), GetArena()); + // @@protoc_insertion_point(field_set_char:pg_query.CreateStmt.access_method) +} +inline void CreateStmt::set_access_method(const char* value, + size_t size) { + + access_method_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string( + reinterpret_cast(value), size), GetArena()); + // @@protoc_insertion_point(field_set_pointer:pg_query.CreateStmt.access_method) +} +inline std::string* CreateStmt::_internal_mutable_access_method() { + + return access_method_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArena()); +} +inline std::string* CreateStmt::release_access_method() { + // @@protoc_insertion_point(field_release:pg_query.CreateStmt.access_method) + return access_method_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); +} +inline void CreateStmt::set_allocated_access_method(std::string* access_method) { + if (access_method != nullptr) { + + } else { + + } + access_method_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), access_method, + GetArena()); + // @@protoc_insertion_point(field_set_allocated:pg_query.CreateStmt.access_method) +} + +// bool if_not_exists = 12 [json_name = "if_not_exists"]; +inline void CreateStmt::clear_if_not_exists() { + if_not_exists_ = false; +} +inline bool CreateStmt::_internal_if_not_exists() const { + return if_not_exists_; +} +inline bool CreateStmt::if_not_exists() const { + // @@protoc_insertion_point(field_get:pg_query.CreateStmt.if_not_exists) + return _internal_if_not_exists(); +} +inline void CreateStmt::_internal_set_if_not_exists(bool value) { + + if_not_exists_ = value; +} +inline void CreateStmt::set_if_not_exists(bool value) { + _internal_set_if_not_exists(value); + // @@protoc_insertion_point(field_set:pg_query.CreateStmt.if_not_exists) +} + +// ------------------------------------------------------------------- + +// DefineStmt + +// .pg_query.ObjectType kind = 1 [json_name = "kind"]; +inline void DefineStmt::clear_kind() { + kind_ = 0; +} +inline ::pg_query::ObjectType DefineStmt::_internal_kind() const { + return static_cast< ::pg_query::ObjectType >(kind_); +} +inline ::pg_query::ObjectType DefineStmt::kind() const { + // @@protoc_insertion_point(field_get:pg_query.DefineStmt.kind) + return _internal_kind(); +} +inline void DefineStmt::_internal_set_kind(::pg_query::ObjectType value) { + + kind_ = value; +} +inline void DefineStmt::set_kind(::pg_query::ObjectType value) { + _internal_set_kind(value); + // @@protoc_insertion_point(field_set:pg_query.DefineStmt.kind) +} + +// bool oldstyle = 2 [json_name = "oldstyle"]; +inline void DefineStmt::clear_oldstyle() { + oldstyle_ = false; +} +inline bool DefineStmt::_internal_oldstyle() const { + return oldstyle_; +} +inline bool DefineStmt::oldstyle() const { + // @@protoc_insertion_point(field_get:pg_query.DefineStmt.oldstyle) + return _internal_oldstyle(); +} +inline void DefineStmt::_internal_set_oldstyle(bool value) { + + oldstyle_ = value; +} +inline void DefineStmt::set_oldstyle(bool value) { + _internal_set_oldstyle(value); + // @@protoc_insertion_point(field_set:pg_query.DefineStmt.oldstyle) +} + +// repeated .pg_query.Node defnames = 3 [json_name = "defnames"]; +inline int DefineStmt::_internal_defnames_size() const { + return defnames_.size(); +} +inline int DefineStmt::defnames_size() const { + return _internal_defnames_size(); +} +inline void DefineStmt::clear_defnames() { + defnames_.Clear(); +} +inline ::pg_query::Node* DefineStmt::mutable_defnames(int index) { + // @@protoc_insertion_point(field_mutable:pg_query.DefineStmt.defnames) + return defnames_.Mutable(index); +} +inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* +DefineStmt::mutable_defnames() { + // @@protoc_insertion_point(field_mutable_list:pg_query.DefineStmt.defnames) + return &defnames_; +} +inline const ::pg_query::Node& DefineStmt::_internal_defnames(int index) const { + return defnames_.Get(index); +} +inline const ::pg_query::Node& DefineStmt::defnames(int index) const { + // @@protoc_insertion_point(field_get:pg_query.DefineStmt.defnames) + return _internal_defnames(index); +} +inline ::pg_query::Node* DefineStmt::_internal_add_defnames() { + return defnames_.Add(); +} +inline ::pg_query::Node* DefineStmt::add_defnames() { + // @@protoc_insertion_point(field_add:pg_query.DefineStmt.defnames) + return _internal_add_defnames(); +} +inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& +DefineStmt::defnames() const { + // @@protoc_insertion_point(field_list:pg_query.DefineStmt.defnames) + return defnames_; +} + +// repeated .pg_query.Node args = 4 [json_name = "args"]; +inline int DefineStmt::_internal_args_size() const { + return args_.size(); +} +inline int DefineStmt::args_size() const { + return _internal_args_size(); +} +inline void DefineStmt::clear_args() { + args_.Clear(); +} +inline ::pg_query::Node* DefineStmt::mutable_args(int index) { + // @@protoc_insertion_point(field_mutable:pg_query.DefineStmt.args) + return args_.Mutable(index); +} +inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* +DefineStmt::mutable_args() { + // @@protoc_insertion_point(field_mutable_list:pg_query.DefineStmt.args) + return &args_; +} +inline const ::pg_query::Node& DefineStmt::_internal_args(int index) const { + return args_.Get(index); +} +inline const ::pg_query::Node& DefineStmt::args(int index) const { + // @@protoc_insertion_point(field_get:pg_query.DefineStmt.args) + return _internal_args(index); +} +inline ::pg_query::Node* DefineStmt::_internal_add_args() { + return args_.Add(); +} +inline ::pg_query::Node* DefineStmt::add_args() { + // @@protoc_insertion_point(field_add:pg_query.DefineStmt.args) + return _internal_add_args(); +} +inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& +DefineStmt::args() const { + // @@protoc_insertion_point(field_list:pg_query.DefineStmt.args) + return args_; +} + +// repeated .pg_query.Node definition = 5 [json_name = "definition"]; +inline int DefineStmt::_internal_definition_size() const { + return definition_.size(); +} +inline int DefineStmt::definition_size() const { + return _internal_definition_size(); +} +inline void DefineStmt::clear_definition() { + definition_.Clear(); +} +inline ::pg_query::Node* DefineStmt::mutable_definition(int index) { + // @@protoc_insertion_point(field_mutable:pg_query.DefineStmt.definition) + return definition_.Mutable(index); +} +inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* +DefineStmt::mutable_definition() { + // @@protoc_insertion_point(field_mutable_list:pg_query.DefineStmt.definition) + return &definition_; +} +inline const ::pg_query::Node& DefineStmt::_internal_definition(int index) const { + return definition_.Get(index); +} +inline const ::pg_query::Node& DefineStmt::definition(int index) const { + // @@protoc_insertion_point(field_get:pg_query.DefineStmt.definition) + return _internal_definition(index); +} +inline ::pg_query::Node* DefineStmt::_internal_add_definition() { + return definition_.Add(); +} +inline ::pg_query::Node* DefineStmt::add_definition() { + // @@protoc_insertion_point(field_add:pg_query.DefineStmt.definition) + return _internal_add_definition(); +} +inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& +DefineStmt::definition() const { + // @@protoc_insertion_point(field_list:pg_query.DefineStmt.definition) + return definition_; +} + +// bool if_not_exists = 6 [json_name = "if_not_exists"]; +inline void DefineStmt::clear_if_not_exists() { + if_not_exists_ = false; +} +inline bool DefineStmt::_internal_if_not_exists() const { + return if_not_exists_; +} +inline bool DefineStmt::if_not_exists() const { + // @@protoc_insertion_point(field_get:pg_query.DefineStmt.if_not_exists) + return _internal_if_not_exists(); +} +inline void DefineStmt::_internal_set_if_not_exists(bool value) { + + if_not_exists_ = value; +} +inline void DefineStmt::set_if_not_exists(bool value) { + _internal_set_if_not_exists(value); + // @@protoc_insertion_point(field_set:pg_query.DefineStmt.if_not_exists) +} + +// bool replace = 7 [json_name = "replace"]; +inline void DefineStmt::clear_replace() { + replace_ = false; +} +inline bool DefineStmt::_internal_replace() const { + return replace_; +} +inline bool DefineStmt::replace() const { + // @@protoc_insertion_point(field_get:pg_query.DefineStmt.replace) + return _internal_replace(); +} +inline void DefineStmt::_internal_set_replace(bool value) { + + replace_ = value; +} +inline void DefineStmt::set_replace(bool value) { + _internal_set_replace(value); + // @@protoc_insertion_point(field_set:pg_query.DefineStmt.replace) +} + +// ------------------------------------------------------------------- + +// DropStmt + +// repeated .pg_query.Node objects = 1 [json_name = "objects"]; +inline int DropStmt::_internal_objects_size() const { + return objects_.size(); +} +inline int DropStmt::objects_size() const { + return _internal_objects_size(); +} +inline void DropStmt::clear_objects() { + objects_.Clear(); +} +inline ::pg_query::Node* DropStmt::mutable_objects(int index) { + // @@protoc_insertion_point(field_mutable:pg_query.DropStmt.objects) + return objects_.Mutable(index); +} +inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* +DropStmt::mutable_objects() { + // @@protoc_insertion_point(field_mutable_list:pg_query.DropStmt.objects) + return &objects_; +} +inline const ::pg_query::Node& DropStmt::_internal_objects(int index) const { + return objects_.Get(index); +} +inline const ::pg_query::Node& DropStmt::objects(int index) const { + // @@protoc_insertion_point(field_get:pg_query.DropStmt.objects) + return _internal_objects(index); +} +inline ::pg_query::Node* DropStmt::_internal_add_objects() { + return objects_.Add(); +} +inline ::pg_query::Node* DropStmt::add_objects() { + // @@protoc_insertion_point(field_add:pg_query.DropStmt.objects) + return _internal_add_objects(); +} +inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& +DropStmt::objects() const { + // @@protoc_insertion_point(field_list:pg_query.DropStmt.objects) + return objects_; +} + +// .pg_query.ObjectType remove_type = 2 [json_name = "removeType"]; +inline void DropStmt::clear_remove_type() { + remove_type_ = 0; +} +inline ::pg_query::ObjectType DropStmt::_internal_remove_type() const { + return static_cast< ::pg_query::ObjectType >(remove_type_); +} +inline ::pg_query::ObjectType DropStmt::remove_type() const { + // @@protoc_insertion_point(field_get:pg_query.DropStmt.remove_type) + return _internal_remove_type(); +} +inline void DropStmt::_internal_set_remove_type(::pg_query::ObjectType value) { + + remove_type_ = value; +} +inline void DropStmt::set_remove_type(::pg_query::ObjectType value) { + _internal_set_remove_type(value); + // @@protoc_insertion_point(field_set:pg_query.DropStmt.remove_type) +} + +// .pg_query.DropBehavior behavior = 3 [json_name = "behavior"]; +inline void DropStmt::clear_behavior() { + behavior_ = 0; +} +inline ::pg_query::DropBehavior DropStmt::_internal_behavior() const { + return static_cast< ::pg_query::DropBehavior >(behavior_); +} +inline ::pg_query::DropBehavior DropStmt::behavior() const { + // @@protoc_insertion_point(field_get:pg_query.DropStmt.behavior) + return _internal_behavior(); +} +inline void DropStmt::_internal_set_behavior(::pg_query::DropBehavior value) { + + behavior_ = value; +} +inline void DropStmt::set_behavior(::pg_query::DropBehavior value) { + _internal_set_behavior(value); + // @@protoc_insertion_point(field_set:pg_query.DropStmt.behavior) +} + +// bool missing_ok = 4 [json_name = "missing_ok"]; +inline void DropStmt::clear_missing_ok() { + missing_ok_ = false; +} +inline bool DropStmt::_internal_missing_ok() const { + return missing_ok_; +} +inline bool DropStmt::missing_ok() const { + // @@protoc_insertion_point(field_get:pg_query.DropStmt.missing_ok) + return _internal_missing_ok(); +} +inline void DropStmt::_internal_set_missing_ok(bool value) { + + missing_ok_ = value; +} +inline void DropStmt::set_missing_ok(bool value) { + _internal_set_missing_ok(value); + // @@protoc_insertion_point(field_set:pg_query.DropStmt.missing_ok) +} + +// bool concurrent = 5 [json_name = "concurrent"]; +inline void DropStmt::clear_concurrent() { + concurrent_ = false; +} +inline bool DropStmt::_internal_concurrent() const { + return concurrent_; +} +inline bool DropStmt::concurrent() const { + // @@protoc_insertion_point(field_get:pg_query.DropStmt.concurrent) + return _internal_concurrent(); +} +inline void DropStmt::_internal_set_concurrent(bool value) { + + concurrent_ = value; +} +inline void DropStmt::set_concurrent(bool value) { + _internal_set_concurrent(value); + // @@protoc_insertion_point(field_set:pg_query.DropStmt.concurrent) +} + +// ------------------------------------------------------------------- + +// TruncateStmt + +// repeated .pg_query.Node relations = 1 [json_name = "relations"]; +inline int TruncateStmt::_internal_relations_size() const { + return relations_.size(); +} +inline int TruncateStmt::relations_size() const { + return _internal_relations_size(); +} +inline void TruncateStmt::clear_relations() { + relations_.Clear(); +} +inline ::pg_query::Node* TruncateStmt::mutable_relations(int index) { + // @@protoc_insertion_point(field_mutable:pg_query.TruncateStmt.relations) + return relations_.Mutable(index); +} +inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* +TruncateStmt::mutable_relations() { + // @@protoc_insertion_point(field_mutable_list:pg_query.TruncateStmt.relations) + return &relations_; +} +inline const ::pg_query::Node& TruncateStmt::_internal_relations(int index) const { + return relations_.Get(index); +} +inline const ::pg_query::Node& TruncateStmt::relations(int index) const { + // @@protoc_insertion_point(field_get:pg_query.TruncateStmt.relations) + return _internal_relations(index); +} +inline ::pg_query::Node* TruncateStmt::_internal_add_relations() { + return relations_.Add(); +} +inline ::pg_query::Node* TruncateStmt::add_relations() { + // @@protoc_insertion_point(field_add:pg_query.TruncateStmt.relations) + return _internal_add_relations(); +} +inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& +TruncateStmt::relations() const { + // @@protoc_insertion_point(field_list:pg_query.TruncateStmt.relations) + return relations_; +} + +// bool restart_seqs = 2 [json_name = "restart_seqs"]; +inline void TruncateStmt::clear_restart_seqs() { + restart_seqs_ = false; +} +inline bool TruncateStmt::_internal_restart_seqs() const { + return restart_seqs_; +} +inline bool TruncateStmt::restart_seqs() const { + // @@protoc_insertion_point(field_get:pg_query.TruncateStmt.restart_seqs) + return _internal_restart_seqs(); +} +inline void TruncateStmt::_internal_set_restart_seqs(bool value) { + + restart_seqs_ = value; +} +inline void TruncateStmt::set_restart_seqs(bool value) { + _internal_set_restart_seqs(value); + // @@protoc_insertion_point(field_set:pg_query.TruncateStmt.restart_seqs) +} + +// .pg_query.DropBehavior behavior = 3 [json_name = "behavior"]; +inline void TruncateStmt::clear_behavior() { + behavior_ = 0; +} +inline ::pg_query::DropBehavior TruncateStmt::_internal_behavior() const { + return static_cast< ::pg_query::DropBehavior >(behavior_); +} +inline ::pg_query::DropBehavior TruncateStmt::behavior() const { + // @@protoc_insertion_point(field_get:pg_query.TruncateStmt.behavior) + return _internal_behavior(); +} +inline void TruncateStmt::_internal_set_behavior(::pg_query::DropBehavior value) { + + behavior_ = value; +} +inline void TruncateStmt::set_behavior(::pg_query::DropBehavior value) { + _internal_set_behavior(value); + // @@protoc_insertion_point(field_set:pg_query.TruncateStmt.behavior) +} + +// ------------------------------------------------------------------- + +// CommentStmt + +// .pg_query.ObjectType objtype = 1 [json_name = "objtype"]; +inline void CommentStmt::clear_objtype() { + objtype_ = 0; +} +inline ::pg_query::ObjectType CommentStmt::_internal_objtype() const { + return static_cast< ::pg_query::ObjectType >(objtype_); +} +inline ::pg_query::ObjectType CommentStmt::objtype() const { + // @@protoc_insertion_point(field_get:pg_query.CommentStmt.objtype) + return _internal_objtype(); +} +inline void CommentStmt::_internal_set_objtype(::pg_query::ObjectType value) { + + objtype_ = value; +} +inline void CommentStmt::set_objtype(::pg_query::ObjectType value) { + _internal_set_objtype(value); + // @@protoc_insertion_point(field_set:pg_query.CommentStmt.objtype) +} + +// .pg_query.Node object = 2 [json_name = "object"]; +inline bool CommentStmt::_internal_has_object() const { + return this != internal_default_instance() && object_ != nullptr; +} +inline bool CommentStmt::has_object() const { + return _internal_has_object(); +} +inline void CommentStmt::clear_object() { + if (GetArena() == nullptr && object_ != nullptr) { + delete object_; + } + object_ = nullptr; +} +inline const ::pg_query::Node& CommentStmt::_internal_object() const { + const ::pg_query::Node* p = object_; + return p != nullptr ? *p : reinterpret_cast( + ::pg_query::_Node_default_instance_); +} +inline const ::pg_query::Node& CommentStmt::object() const { + // @@protoc_insertion_point(field_get:pg_query.CommentStmt.object) + return _internal_object(); +} +inline void CommentStmt::unsafe_arena_set_allocated_object( + ::pg_query::Node* object) { + if (GetArena() == nullptr) { + delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(object_); + } + object_ = object; + if (object) { + + } else { + + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.CommentStmt.object) +} +inline ::pg_query::Node* CommentStmt::release_object() { + + ::pg_query::Node* temp = object_; + object_ = nullptr; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + return temp; +} +inline ::pg_query::Node* CommentStmt::unsafe_arena_release_object() { + // @@protoc_insertion_point(field_release:pg_query.CommentStmt.object) + + ::pg_query::Node* temp = object_; + object_ = nullptr; + return temp; +} +inline ::pg_query::Node* CommentStmt::_internal_mutable_object() { + + if (object_ == nullptr) { + auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); + object_ = p; + } + return object_; +} +inline ::pg_query::Node* CommentStmt::mutable_object() { + // @@protoc_insertion_point(field_mutable:pg_query.CommentStmt.object) + return _internal_mutable_object(); +} +inline void CommentStmt::set_allocated_object(::pg_query::Node* object) { + ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); + if (message_arena == nullptr) { + delete object_; + } + if (object) { + ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = + ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(object); + if (message_arena != submessage_arena) { + object = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( + message_arena, object, submessage_arena); + } + + } else { + + } + object_ = object; + // @@protoc_insertion_point(field_set_allocated:pg_query.CommentStmt.object) +} + +// string comment = 3 [json_name = "comment"]; +inline void CommentStmt::clear_comment() { + comment_.ClearToEmpty(); +} +inline const std::string& CommentStmt::comment() const { + // @@protoc_insertion_point(field_get:pg_query.CommentStmt.comment) + return _internal_comment(); +} +inline void CommentStmt::set_comment(const std::string& value) { + _internal_set_comment(value); + // @@protoc_insertion_point(field_set:pg_query.CommentStmt.comment) +} +inline std::string* CommentStmt::mutable_comment() { + // @@protoc_insertion_point(field_mutable:pg_query.CommentStmt.comment) + return _internal_mutable_comment(); +} +inline const std::string& CommentStmt::_internal_comment() const { + return comment_.Get(); +} +inline void CommentStmt::_internal_set_comment(const std::string& value) { + + comment_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArena()); +} +inline void CommentStmt::set_comment(std::string&& value) { + + comment_.Set( + ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::move(value), GetArena()); + // @@protoc_insertion_point(field_set_rvalue:pg_query.CommentStmt.comment) +} +inline void CommentStmt::set_comment(const char* value) { + GOOGLE_DCHECK(value != nullptr); + + comment_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string(value), GetArena()); + // @@protoc_insertion_point(field_set_char:pg_query.CommentStmt.comment) +} +inline void CommentStmt::set_comment(const char* value, + size_t size) { + + comment_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string( + reinterpret_cast(value), size), GetArena()); + // @@protoc_insertion_point(field_set_pointer:pg_query.CommentStmt.comment) +} +inline std::string* CommentStmt::_internal_mutable_comment() { + + return comment_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArena()); +} +inline std::string* CommentStmt::release_comment() { + // @@protoc_insertion_point(field_release:pg_query.CommentStmt.comment) + return comment_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); +} +inline void CommentStmt::set_allocated_comment(std::string* comment) { + if (comment != nullptr) { + + } else { + + } + comment_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), comment, + GetArena()); + // @@protoc_insertion_point(field_set_allocated:pg_query.CommentStmt.comment) +} + +// ------------------------------------------------------------------- + +// FetchStmt + +// .pg_query.FetchDirection direction = 1 [json_name = "direction"]; +inline void FetchStmt::clear_direction() { + direction_ = 0; +} +inline ::pg_query::FetchDirection FetchStmt::_internal_direction() const { + return static_cast< ::pg_query::FetchDirection >(direction_); +} +inline ::pg_query::FetchDirection FetchStmt::direction() const { + // @@protoc_insertion_point(field_get:pg_query.FetchStmt.direction) + return _internal_direction(); +} +inline void FetchStmt::_internal_set_direction(::pg_query::FetchDirection value) { + + direction_ = value; +} +inline void FetchStmt::set_direction(::pg_query::FetchDirection value) { + _internal_set_direction(value); + // @@protoc_insertion_point(field_set:pg_query.FetchStmt.direction) +} + +// int64 how_many = 2 [json_name = "howMany"]; +inline void FetchStmt::clear_how_many() { + how_many_ = PROTOBUF_LONGLONG(0); +} +inline ::PROTOBUF_NAMESPACE_ID::int64 FetchStmt::_internal_how_many() const { + return how_many_; +} +inline ::PROTOBUF_NAMESPACE_ID::int64 FetchStmt::how_many() const { + // @@protoc_insertion_point(field_get:pg_query.FetchStmt.how_many) + return _internal_how_many(); +} +inline void FetchStmt::_internal_set_how_many(::PROTOBUF_NAMESPACE_ID::int64 value) { + + how_many_ = value; +} +inline void FetchStmt::set_how_many(::PROTOBUF_NAMESPACE_ID::int64 value) { + _internal_set_how_many(value); + // @@protoc_insertion_point(field_set:pg_query.FetchStmt.how_many) +} + +// string portalname = 3 [json_name = "portalname"]; +inline void FetchStmt::clear_portalname() { + portalname_.ClearToEmpty(); +} +inline const std::string& FetchStmt::portalname() const { + // @@protoc_insertion_point(field_get:pg_query.FetchStmt.portalname) + return _internal_portalname(); +} +inline void FetchStmt::set_portalname(const std::string& value) { + _internal_set_portalname(value); + // @@protoc_insertion_point(field_set:pg_query.FetchStmt.portalname) +} +inline std::string* FetchStmt::mutable_portalname() { + // @@protoc_insertion_point(field_mutable:pg_query.FetchStmt.portalname) + return _internal_mutable_portalname(); +} +inline const std::string& FetchStmt::_internal_portalname() const { + return portalname_.Get(); +} +inline void FetchStmt::_internal_set_portalname(const std::string& value) { + + portalname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArena()); +} +inline void FetchStmt::set_portalname(std::string&& value) { + + portalname_.Set( + ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::move(value), GetArena()); + // @@protoc_insertion_point(field_set_rvalue:pg_query.FetchStmt.portalname) +} +inline void FetchStmt::set_portalname(const char* value) { + GOOGLE_DCHECK(value != nullptr); + + portalname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string(value), GetArena()); + // @@protoc_insertion_point(field_set_char:pg_query.FetchStmt.portalname) +} +inline void FetchStmt::set_portalname(const char* value, + size_t size) { + + portalname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string( + reinterpret_cast(value), size), GetArena()); + // @@protoc_insertion_point(field_set_pointer:pg_query.FetchStmt.portalname) +} +inline std::string* FetchStmt::_internal_mutable_portalname() { + + return portalname_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArena()); +} +inline std::string* FetchStmt::release_portalname() { + // @@protoc_insertion_point(field_release:pg_query.FetchStmt.portalname) + return portalname_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); +} +inline void FetchStmt::set_allocated_portalname(std::string* portalname) { + if (portalname != nullptr) { + + } else { + + } + portalname_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), portalname, + GetArena()); + // @@protoc_insertion_point(field_set_allocated:pg_query.FetchStmt.portalname) +} + +// bool ismove = 4 [json_name = "ismove"]; +inline void FetchStmt::clear_ismove() { + ismove_ = false; +} +inline bool FetchStmt::_internal_ismove() const { + return ismove_; +} +inline bool FetchStmt::ismove() const { + // @@protoc_insertion_point(field_get:pg_query.FetchStmt.ismove) + return _internal_ismove(); +} +inline void FetchStmt::_internal_set_ismove(bool value) { + + ismove_ = value; +} +inline void FetchStmt::set_ismove(bool value) { + _internal_set_ismove(value); + // @@protoc_insertion_point(field_set:pg_query.FetchStmt.ismove) +} + +// ------------------------------------------------------------------- + +// IndexStmt + +// string idxname = 1 [json_name = "idxname"]; +inline void IndexStmt::clear_idxname() { + idxname_.ClearToEmpty(); +} +inline const std::string& IndexStmt::idxname() const { + // @@protoc_insertion_point(field_get:pg_query.IndexStmt.idxname) + return _internal_idxname(); +} +inline void IndexStmt::set_idxname(const std::string& value) { + _internal_set_idxname(value); + // @@protoc_insertion_point(field_set:pg_query.IndexStmt.idxname) +} +inline std::string* IndexStmt::mutable_idxname() { + // @@protoc_insertion_point(field_mutable:pg_query.IndexStmt.idxname) + return _internal_mutable_idxname(); +} +inline const std::string& IndexStmt::_internal_idxname() const { + return idxname_.Get(); +} +inline void IndexStmt::_internal_set_idxname(const std::string& value) { + + idxname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArena()); +} +inline void IndexStmt::set_idxname(std::string&& value) { + + idxname_.Set( + ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::move(value), GetArena()); + // @@protoc_insertion_point(field_set_rvalue:pg_query.IndexStmt.idxname) +} +inline void IndexStmt::set_idxname(const char* value) { + GOOGLE_DCHECK(value != nullptr); + + idxname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string(value), GetArena()); + // @@protoc_insertion_point(field_set_char:pg_query.IndexStmt.idxname) +} +inline void IndexStmt::set_idxname(const char* value, + size_t size) { + + idxname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string( + reinterpret_cast(value), size), GetArena()); + // @@protoc_insertion_point(field_set_pointer:pg_query.IndexStmt.idxname) +} +inline std::string* IndexStmt::_internal_mutable_idxname() { + + return idxname_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArena()); +} +inline std::string* IndexStmt::release_idxname() { + // @@protoc_insertion_point(field_release:pg_query.IndexStmt.idxname) + return idxname_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); +} +inline void IndexStmt::set_allocated_idxname(std::string* idxname) { + if (idxname != nullptr) { + + } else { + + } + idxname_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), idxname, + GetArena()); + // @@protoc_insertion_point(field_set_allocated:pg_query.IndexStmt.idxname) +} + +// .pg_query.RangeVar relation = 2 [json_name = "relation"]; +inline bool IndexStmt::_internal_has_relation() const { + return this != internal_default_instance() && relation_ != nullptr; +} +inline bool IndexStmt::has_relation() const { + return _internal_has_relation(); +} +inline void IndexStmt::clear_relation() { + if (GetArena() == nullptr && relation_ != nullptr) { + delete relation_; + } + relation_ = nullptr; +} +inline const ::pg_query::RangeVar& IndexStmt::_internal_relation() const { + const ::pg_query::RangeVar* p = relation_; + return p != nullptr ? *p : reinterpret_cast( + ::pg_query::_RangeVar_default_instance_); +} +inline const ::pg_query::RangeVar& IndexStmt::relation() const { + // @@protoc_insertion_point(field_get:pg_query.IndexStmt.relation) + return _internal_relation(); +} +inline void IndexStmt::unsafe_arena_set_allocated_relation( + ::pg_query::RangeVar* relation) { + if (GetArena() == nullptr) { + delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(relation_); + } + relation_ = relation; + if (relation) { + + } else { + + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.IndexStmt.relation) +} +inline ::pg_query::RangeVar* IndexStmt::release_relation() { + + ::pg_query::RangeVar* temp = relation_; + relation_ = nullptr; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + return temp; +} +inline ::pg_query::RangeVar* IndexStmt::unsafe_arena_release_relation() { + // @@protoc_insertion_point(field_release:pg_query.IndexStmt.relation) + + ::pg_query::RangeVar* temp = relation_; + relation_ = nullptr; + return temp; +} +inline ::pg_query::RangeVar* IndexStmt::_internal_mutable_relation() { + + if (relation_ == nullptr) { + auto* p = CreateMaybeMessage<::pg_query::RangeVar>(GetArena()); + relation_ = p; + } + return relation_; +} +inline ::pg_query::RangeVar* IndexStmt::mutable_relation() { + // @@protoc_insertion_point(field_mutable:pg_query.IndexStmt.relation) + return _internal_mutable_relation(); +} +inline void IndexStmt::set_allocated_relation(::pg_query::RangeVar* relation) { + ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); + if (message_arena == nullptr) { + delete relation_; + } + if (relation) { + ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = + ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(relation); + if (message_arena != submessage_arena) { + relation = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( + message_arena, relation, submessage_arena); + } + + } else { + + } + relation_ = relation; + // @@protoc_insertion_point(field_set_allocated:pg_query.IndexStmt.relation) +} + +// string access_method = 3 [json_name = "accessMethod"]; +inline void IndexStmt::clear_access_method() { + access_method_.ClearToEmpty(); +} +inline const std::string& IndexStmt::access_method() const { + // @@protoc_insertion_point(field_get:pg_query.IndexStmt.access_method) + return _internal_access_method(); +} +inline void IndexStmt::set_access_method(const std::string& value) { + _internal_set_access_method(value); + // @@protoc_insertion_point(field_set:pg_query.IndexStmt.access_method) +} +inline std::string* IndexStmt::mutable_access_method() { + // @@protoc_insertion_point(field_mutable:pg_query.IndexStmt.access_method) + return _internal_mutable_access_method(); +} +inline const std::string& IndexStmt::_internal_access_method() const { + return access_method_.Get(); +} +inline void IndexStmt::_internal_set_access_method(const std::string& value) { + + access_method_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArena()); +} +inline void IndexStmt::set_access_method(std::string&& value) { + + access_method_.Set( + ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::move(value), GetArena()); + // @@protoc_insertion_point(field_set_rvalue:pg_query.IndexStmt.access_method) +} +inline void IndexStmt::set_access_method(const char* value) { + GOOGLE_DCHECK(value != nullptr); + + access_method_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string(value), GetArena()); + // @@protoc_insertion_point(field_set_char:pg_query.IndexStmt.access_method) +} +inline void IndexStmt::set_access_method(const char* value, + size_t size) { + + access_method_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string( + reinterpret_cast(value), size), GetArena()); + // @@protoc_insertion_point(field_set_pointer:pg_query.IndexStmt.access_method) +} +inline std::string* IndexStmt::_internal_mutable_access_method() { + + return access_method_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArena()); +} +inline std::string* IndexStmt::release_access_method() { + // @@protoc_insertion_point(field_release:pg_query.IndexStmt.access_method) + return access_method_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); +} +inline void IndexStmt::set_allocated_access_method(std::string* access_method) { + if (access_method != nullptr) { + + } else { + + } + access_method_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), access_method, + GetArena()); + // @@protoc_insertion_point(field_set_allocated:pg_query.IndexStmt.access_method) +} + +// string table_space = 4 [json_name = "tableSpace"]; +inline void IndexStmt::clear_table_space() { + table_space_.ClearToEmpty(); +} +inline const std::string& IndexStmt::table_space() const { + // @@protoc_insertion_point(field_get:pg_query.IndexStmt.table_space) + return _internal_table_space(); +} +inline void IndexStmt::set_table_space(const std::string& value) { + _internal_set_table_space(value); + // @@protoc_insertion_point(field_set:pg_query.IndexStmt.table_space) +} +inline std::string* IndexStmt::mutable_table_space() { + // @@protoc_insertion_point(field_mutable:pg_query.IndexStmt.table_space) + return _internal_mutable_table_space(); +} +inline const std::string& IndexStmt::_internal_table_space() const { + return table_space_.Get(); +} +inline void IndexStmt::_internal_set_table_space(const std::string& value) { + + table_space_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArena()); +} +inline void IndexStmt::set_table_space(std::string&& value) { + + table_space_.Set( + ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::move(value), GetArena()); + // @@protoc_insertion_point(field_set_rvalue:pg_query.IndexStmt.table_space) +} +inline void IndexStmt::set_table_space(const char* value) { + GOOGLE_DCHECK(value != nullptr); + + table_space_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string(value), GetArena()); + // @@protoc_insertion_point(field_set_char:pg_query.IndexStmt.table_space) +} +inline void IndexStmt::set_table_space(const char* value, + size_t size) { + + table_space_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string( + reinterpret_cast(value), size), GetArena()); + // @@protoc_insertion_point(field_set_pointer:pg_query.IndexStmt.table_space) +} +inline std::string* IndexStmt::_internal_mutable_table_space() { + + return table_space_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArena()); +} +inline std::string* IndexStmt::release_table_space() { + // @@protoc_insertion_point(field_release:pg_query.IndexStmt.table_space) + return table_space_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); +} +inline void IndexStmt::set_allocated_table_space(std::string* table_space) { + if (table_space != nullptr) { + + } else { + + } + table_space_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), table_space, + GetArena()); + // @@protoc_insertion_point(field_set_allocated:pg_query.IndexStmt.table_space) +} + +// repeated .pg_query.Node index_params = 5 [json_name = "indexParams"]; +inline int IndexStmt::_internal_index_params_size() const { + return index_params_.size(); +} +inline int IndexStmt::index_params_size() const { + return _internal_index_params_size(); +} +inline void IndexStmt::clear_index_params() { + index_params_.Clear(); +} +inline ::pg_query::Node* IndexStmt::mutable_index_params(int index) { + // @@protoc_insertion_point(field_mutable:pg_query.IndexStmt.index_params) + return index_params_.Mutable(index); +} +inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* +IndexStmt::mutable_index_params() { + // @@protoc_insertion_point(field_mutable_list:pg_query.IndexStmt.index_params) + return &index_params_; +} +inline const ::pg_query::Node& IndexStmt::_internal_index_params(int index) const { + return index_params_.Get(index); +} +inline const ::pg_query::Node& IndexStmt::index_params(int index) const { + // @@protoc_insertion_point(field_get:pg_query.IndexStmt.index_params) + return _internal_index_params(index); +} +inline ::pg_query::Node* IndexStmt::_internal_add_index_params() { + return index_params_.Add(); +} +inline ::pg_query::Node* IndexStmt::add_index_params() { + // @@protoc_insertion_point(field_add:pg_query.IndexStmt.index_params) + return _internal_add_index_params(); +} +inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& +IndexStmt::index_params() const { + // @@protoc_insertion_point(field_list:pg_query.IndexStmt.index_params) + return index_params_; +} + +// repeated .pg_query.Node index_including_params = 6 [json_name = "indexIncludingParams"]; +inline int IndexStmt::_internal_index_including_params_size() const { + return index_including_params_.size(); +} +inline int IndexStmt::index_including_params_size() const { + return _internal_index_including_params_size(); +} +inline void IndexStmt::clear_index_including_params() { + index_including_params_.Clear(); +} +inline ::pg_query::Node* IndexStmt::mutable_index_including_params(int index) { + // @@protoc_insertion_point(field_mutable:pg_query.IndexStmt.index_including_params) + return index_including_params_.Mutable(index); +} +inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* +IndexStmt::mutable_index_including_params() { + // @@protoc_insertion_point(field_mutable_list:pg_query.IndexStmt.index_including_params) + return &index_including_params_; +} +inline const ::pg_query::Node& IndexStmt::_internal_index_including_params(int index) const { + return index_including_params_.Get(index); +} +inline const ::pg_query::Node& IndexStmt::index_including_params(int index) const { + // @@protoc_insertion_point(field_get:pg_query.IndexStmt.index_including_params) + return _internal_index_including_params(index); +} +inline ::pg_query::Node* IndexStmt::_internal_add_index_including_params() { + return index_including_params_.Add(); +} +inline ::pg_query::Node* IndexStmt::add_index_including_params() { + // @@protoc_insertion_point(field_add:pg_query.IndexStmt.index_including_params) + return _internal_add_index_including_params(); +} +inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& +IndexStmt::index_including_params() const { + // @@protoc_insertion_point(field_list:pg_query.IndexStmt.index_including_params) + return index_including_params_; +} + +// repeated .pg_query.Node options = 7 [json_name = "options"]; +inline int IndexStmt::_internal_options_size() const { + return options_.size(); +} +inline int IndexStmt::options_size() const { + return _internal_options_size(); +} +inline void IndexStmt::clear_options() { + options_.Clear(); +} +inline ::pg_query::Node* IndexStmt::mutable_options(int index) { + // @@protoc_insertion_point(field_mutable:pg_query.IndexStmt.options) + return options_.Mutable(index); +} +inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* +IndexStmt::mutable_options() { + // @@protoc_insertion_point(field_mutable_list:pg_query.IndexStmt.options) + return &options_; +} +inline const ::pg_query::Node& IndexStmt::_internal_options(int index) const { + return options_.Get(index); +} +inline const ::pg_query::Node& IndexStmt::options(int index) const { + // @@protoc_insertion_point(field_get:pg_query.IndexStmt.options) + return _internal_options(index); +} +inline ::pg_query::Node* IndexStmt::_internal_add_options() { + return options_.Add(); +} +inline ::pg_query::Node* IndexStmt::add_options() { + // @@protoc_insertion_point(field_add:pg_query.IndexStmt.options) + return _internal_add_options(); +} +inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& +IndexStmt::options() const { + // @@protoc_insertion_point(field_list:pg_query.IndexStmt.options) + return options_; +} + +// .pg_query.Node where_clause = 8 [json_name = "whereClause"]; +inline bool IndexStmt::_internal_has_where_clause() const { + return this != internal_default_instance() && where_clause_ != nullptr; +} +inline bool IndexStmt::has_where_clause() const { + return _internal_has_where_clause(); +} +inline void IndexStmt::clear_where_clause() { + if (GetArena() == nullptr && where_clause_ != nullptr) { + delete where_clause_; + } + where_clause_ = nullptr; +} +inline const ::pg_query::Node& IndexStmt::_internal_where_clause() const { + const ::pg_query::Node* p = where_clause_; + return p != nullptr ? *p : reinterpret_cast( + ::pg_query::_Node_default_instance_); +} +inline const ::pg_query::Node& IndexStmt::where_clause() const { + // @@protoc_insertion_point(field_get:pg_query.IndexStmt.where_clause) + return _internal_where_clause(); +} +inline void IndexStmt::unsafe_arena_set_allocated_where_clause( + ::pg_query::Node* where_clause) { + if (GetArena() == nullptr) { + delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(where_clause_); + } + where_clause_ = where_clause; + if (where_clause) { + + } else { + + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.IndexStmt.where_clause) +} +inline ::pg_query::Node* IndexStmt::release_where_clause() { + + ::pg_query::Node* temp = where_clause_; + where_clause_ = nullptr; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + return temp; +} +inline ::pg_query::Node* IndexStmt::unsafe_arena_release_where_clause() { + // @@protoc_insertion_point(field_release:pg_query.IndexStmt.where_clause) + + ::pg_query::Node* temp = where_clause_; + where_clause_ = nullptr; + return temp; +} +inline ::pg_query::Node* IndexStmt::_internal_mutable_where_clause() { + + if (where_clause_ == nullptr) { + auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); + where_clause_ = p; + } + return where_clause_; +} +inline ::pg_query::Node* IndexStmt::mutable_where_clause() { + // @@protoc_insertion_point(field_mutable:pg_query.IndexStmt.where_clause) + return _internal_mutable_where_clause(); +} +inline void IndexStmt::set_allocated_where_clause(::pg_query::Node* where_clause) { + ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); + if (message_arena == nullptr) { + delete where_clause_; + } + if (where_clause) { + ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = + ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(where_clause); + if (message_arena != submessage_arena) { + where_clause = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( + message_arena, where_clause, submessage_arena); + } + + } else { + + } + where_clause_ = where_clause; + // @@protoc_insertion_point(field_set_allocated:pg_query.IndexStmt.where_clause) +} + +// repeated .pg_query.Node exclude_op_names = 9 [json_name = "excludeOpNames"]; +inline int IndexStmt::_internal_exclude_op_names_size() const { + return exclude_op_names_.size(); +} +inline int IndexStmt::exclude_op_names_size() const { + return _internal_exclude_op_names_size(); +} +inline void IndexStmt::clear_exclude_op_names() { + exclude_op_names_.Clear(); +} +inline ::pg_query::Node* IndexStmt::mutable_exclude_op_names(int index) { + // @@protoc_insertion_point(field_mutable:pg_query.IndexStmt.exclude_op_names) + return exclude_op_names_.Mutable(index); +} +inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* +IndexStmt::mutable_exclude_op_names() { + // @@protoc_insertion_point(field_mutable_list:pg_query.IndexStmt.exclude_op_names) + return &exclude_op_names_; +} +inline const ::pg_query::Node& IndexStmt::_internal_exclude_op_names(int index) const { + return exclude_op_names_.Get(index); +} +inline const ::pg_query::Node& IndexStmt::exclude_op_names(int index) const { + // @@protoc_insertion_point(field_get:pg_query.IndexStmt.exclude_op_names) + return _internal_exclude_op_names(index); +} +inline ::pg_query::Node* IndexStmt::_internal_add_exclude_op_names() { + return exclude_op_names_.Add(); +} +inline ::pg_query::Node* IndexStmt::add_exclude_op_names() { + // @@protoc_insertion_point(field_add:pg_query.IndexStmt.exclude_op_names) + return _internal_add_exclude_op_names(); +} +inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& +IndexStmt::exclude_op_names() const { + // @@protoc_insertion_point(field_list:pg_query.IndexStmt.exclude_op_names) + return exclude_op_names_; +} + +// string idxcomment = 10 [json_name = "idxcomment"]; +inline void IndexStmt::clear_idxcomment() { + idxcomment_.ClearToEmpty(); +} +inline const std::string& IndexStmt::idxcomment() const { + // @@protoc_insertion_point(field_get:pg_query.IndexStmt.idxcomment) + return _internal_idxcomment(); +} +inline void IndexStmt::set_idxcomment(const std::string& value) { + _internal_set_idxcomment(value); + // @@protoc_insertion_point(field_set:pg_query.IndexStmt.idxcomment) +} +inline std::string* IndexStmt::mutable_idxcomment() { + // @@protoc_insertion_point(field_mutable:pg_query.IndexStmt.idxcomment) + return _internal_mutable_idxcomment(); +} +inline const std::string& IndexStmt::_internal_idxcomment() const { + return idxcomment_.Get(); +} +inline void IndexStmt::_internal_set_idxcomment(const std::string& value) { + + idxcomment_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArena()); +} +inline void IndexStmt::set_idxcomment(std::string&& value) { + + idxcomment_.Set( + ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::move(value), GetArena()); + // @@protoc_insertion_point(field_set_rvalue:pg_query.IndexStmt.idxcomment) +} +inline void IndexStmt::set_idxcomment(const char* value) { + GOOGLE_DCHECK(value != nullptr); + + idxcomment_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string(value), GetArena()); + // @@protoc_insertion_point(field_set_char:pg_query.IndexStmt.idxcomment) +} +inline void IndexStmt::set_idxcomment(const char* value, + size_t size) { + + idxcomment_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string( + reinterpret_cast(value), size), GetArena()); + // @@protoc_insertion_point(field_set_pointer:pg_query.IndexStmt.idxcomment) +} +inline std::string* IndexStmt::_internal_mutable_idxcomment() { + + return idxcomment_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArena()); +} +inline std::string* IndexStmt::release_idxcomment() { + // @@protoc_insertion_point(field_release:pg_query.IndexStmt.idxcomment) + return idxcomment_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); +} +inline void IndexStmt::set_allocated_idxcomment(std::string* idxcomment) { + if (idxcomment != nullptr) { + + } else { + + } + idxcomment_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), idxcomment, + GetArena()); + // @@protoc_insertion_point(field_set_allocated:pg_query.IndexStmt.idxcomment) +} + +// uint32 index_oid = 11 [json_name = "indexOid"]; +inline void IndexStmt::clear_index_oid() { + index_oid_ = 0u; +} +inline ::PROTOBUF_NAMESPACE_ID::uint32 IndexStmt::_internal_index_oid() const { + return index_oid_; +} +inline ::PROTOBUF_NAMESPACE_ID::uint32 IndexStmt::index_oid() const { + // @@protoc_insertion_point(field_get:pg_query.IndexStmt.index_oid) + return _internal_index_oid(); +} +inline void IndexStmt::_internal_set_index_oid(::PROTOBUF_NAMESPACE_ID::uint32 value) { + + index_oid_ = value; +} +inline void IndexStmt::set_index_oid(::PROTOBUF_NAMESPACE_ID::uint32 value) { + _internal_set_index_oid(value); + // @@protoc_insertion_point(field_set:pg_query.IndexStmt.index_oid) +} + +// uint32 old_node = 12 [json_name = "oldNode"]; +inline void IndexStmt::clear_old_node() { + old_node_ = 0u; +} +inline ::PROTOBUF_NAMESPACE_ID::uint32 IndexStmt::_internal_old_node() const { + return old_node_; +} +inline ::PROTOBUF_NAMESPACE_ID::uint32 IndexStmt::old_node() const { + // @@protoc_insertion_point(field_get:pg_query.IndexStmt.old_node) + return _internal_old_node(); +} +inline void IndexStmt::_internal_set_old_node(::PROTOBUF_NAMESPACE_ID::uint32 value) { + + old_node_ = value; +} +inline void IndexStmt::set_old_node(::PROTOBUF_NAMESPACE_ID::uint32 value) { + _internal_set_old_node(value); + // @@protoc_insertion_point(field_set:pg_query.IndexStmt.old_node) +} + +// uint32 old_create_subid = 13 [json_name = "oldCreateSubid"]; +inline void IndexStmt::clear_old_create_subid() { + old_create_subid_ = 0u; +} +inline ::PROTOBUF_NAMESPACE_ID::uint32 IndexStmt::_internal_old_create_subid() const { + return old_create_subid_; +} +inline ::PROTOBUF_NAMESPACE_ID::uint32 IndexStmt::old_create_subid() const { + // @@protoc_insertion_point(field_get:pg_query.IndexStmt.old_create_subid) + return _internal_old_create_subid(); +} +inline void IndexStmt::_internal_set_old_create_subid(::PROTOBUF_NAMESPACE_ID::uint32 value) { + + old_create_subid_ = value; +} +inline void IndexStmt::set_old_create_subid(::PROTOBUF_NAMESPACE_ID::uint32 value) { + _internal_set_old_create_subid(value); + // @@protoc_insertion_point(field_set:pg_query.IndexStmt.old_create_subid) +} + +// uint32 old_first_relfilenode_subid = 14 [json_name = "oldFirstRelfilenodeSubid"]; +inline void IndexStmt::clear_old_first_relfilenode_subid() { + old_first_relfilenode_subid_ = 0u; +} +inline ::PROTOBUF_NAMESPACE_ID::uint32 IndexStmt::_internal_old_first_relfilenode_subid() const { + return old_first_relfilenode_subid_; +} +inline ::PROTOBUF_NAMESPACE_ID::uint32 IndexStmt::old_first_relfilenode_subid() const { + // @@protoc_insertion_point(field_get:pg_query.IndexStmt.old_first_relfilenode_subid) + return _internal_old_first_relfilenode_subid(); +} +inline void IndexStmt::_internal_set_old_first_relfilenode_subid(::PROTOBUF_NAMESPACE_ID::uint32 value) { + + old_first_relfilenode_subid_ = value; +} +inline void IndexStmt::set_old_first_relfilenode_subid(::PROTOBUF_NAMESPACE_ID::uint32 value) { + _internal_set_old_first_relfilenode_subid(value); + // @@protoc_insertion_point(field_set:pg_query.IndexStmt.old_first_relfilenode_subid) +} + +// bool unique = 15 [json_name = "unique"]; +inline void IndexStmt::clear_unique() { + unique_ = false; +} +inline bool IndexStmt::_internal_unique() const { + return unique_; +} +inline bool IndexStmt::unique() const { + // @@protoc_insertion_point(field_get:pg_query.IndexStmt.unique) + return _internal_unique(); +} +inline void IndexStmt::_internal_set_unique(bool value) { + + unique_ = value; +} +inline void IndexStmt::set_unique(bool value) { + _internal_set_unique(value); + // @@protoc_insertion_point(field_set:pg_query.IndexStmt.unique) +} + +// bool primary = 16 [json_name = "primary"]; +inline void IndexStmt::clear_primary() { + primary_ = false; +} +inline bool IndexStmt::_internal_primary() const { + return primary_; +} +inline bool IndexStmt::primary() const { + // @@protoc_insertion_point(field_get:pg_query.IndexStmt.primary) + return _internal_primary(); +} +inline void IndexStmt::_internal_set_primary(bool value) { + + primary_ = value; +} +inline void IndexStmt::set_primary(bool value) { + _internal_set_primary(value); + // @@protoc_insertion_point(field_set:pg_query.IndexStmt.primary) +} + +// bool isconstraint = 17 [json_name = "isconstraint"]; +inline void IndexStmt::clear_isconstraint() { + isconstraint_ = false; +} +inline bool IndexStmt::_internal_isconstraint() const { + return isconstraint_; +} +inline bool IndexStmt::isconstraint() const { + // @@protoc_insertion_point(field_get:pg_query.IndexStmt.isconstraint) + return _internal_isconstraint(); +} +inline void IndexStmt::_internal_set_isconstraint(bool value) { + + isconstraint_ = value; +} +inline void IndexStmt::set_isconstraint(bool value) { + _internal_set_isconstraint(value); + // @@protoc_insertion_point(field_set:pg_query.IndexStmt.isconstraint) +} + +// bool deferrable = 18 [json_name = "deferrable"]; +inline void IndexStmt::clear_deferrable() { + deferrable_ = false; +} +inline bool IndexStmt::_internal_deferrable() const { + return deferrable_; +} +inline bool IndexStmt::deferrable() const { + // @@protoc_insertion_point(field_get:pg_query.IndexStmt.deferrable) + return _internal_deferrable(); +} +inline void IndexStmt::_internal_set_deferrable(bool value) { + + deferrable_ = value; +} +inline void IndexStmt::set_deferrable(bool value) { + _internal_set_deferrable(value); + // @@protoc_insertion_point(field_set:pg_query.IndexStmt.deferrable) +} + +// bool initdeferred = 19 [json_name = "initdeferred"]; +inline void IndexStmt::clear_initdeferred() { + initdeferred_ = false; +} +inline bool IndexStmt::_internal_initdeferred() const { + return initdeferred_; +} +inline bool IndexStmt::initdeferred() const { + // @@protoc_insertion_point(field_get:pg_query.IndexStmt.initdeferred) + return _internal_initdeferred(); +} +inline void IndexStmt::_internal_set_initdeferred(bool value) { + + initdeferred_ = value; +} +inline void IndexStmt::set_initdeferred(bool value) { + _internal_set_initdeferred(value); + // @@protoc_insertion_point(field_set:pg_query.IndexStmt.initdeferred) +} + +// bool transformed = 20 [json_name = "transformed"]; +inline void IndexStmt::clear_transformed() { + transformed_ = false; +} +inline bool IndexStmt::_internal_transformed() const { + return transformed_; +} +inline bool IndexStmt::transformed() const { + // @@protoc_insertion_point(field_get:pg_query.IndexStmt.transformed) + return _internal_transformed(); +} +inline void IndexStmt::_internal_set_transformed(bool value) { + + transformed_ = value; +} +inline void IndexStmt::set_transformed(bool value) { + _internal_set_transformed(value); + // @@protoc_insertion_point(field_set:pg_query.IndexStmt.transformed) +} + +// bool concurrent = 21 [json_name = "concurrent"]; +inline void IndexStmt::clear_concurrent() { + concurrent_ = false; +} +inline bool IndexStmt::_internal_concurrent() const { + return concurrent_; +} +inline bool IndexStmt::concurrent() const { + // @@protoc_insertion_point(field_get:pg_query.IndexStmt.concurrent) + return _internal_concurrent(); +} +inline void IndexStmt::_internal_set_concurrent(bool value) { + + concurrent_ = value; +} +inline void IndexStmt::set_concurrent(bool value) { + _internal_set_concurrent(value); + // @@protoc_insertion_point(field_set:pg_query.IndexStmt.concurrent) +} + +// bool if_not_exists = 22 [json_name = "if_not_exists"]; +inline void IndexStmt::clear_if_not_exists() { + if_not_exists_ = false; +} +inline bool IndexStmt::_internal_if_not_exists() const { + return if_not_exists_; +} +inline bool IndexStmt::if_not_exists() const { + // @@protoc_insertion_point(field_get:pg_query.IndexStmt.if_not_exists) + return _internal_if_not_exists(); +} +inline void IndexStmt::_internal_set_if_not_exists(bool value) { + + if_not_exists_ = value; +} +inline void IndexStmt::set_if_not_exists(bool value) { + _internal_set_if_not_exists(value); + // @@protoc_insertion_point(field_set:pg_query.IndexStmt.if_not_exists) +} + +// bool reset_default_tblspc = 23 [json_name = "reset_default_tblspc"]; +inline void IndexStmt::clear_reset_default_tblspc() { + reset_default_tblspc_ = false; +} +inline bool IndexStmt::_internal_reset_default_tblspc() const { + return reset_default_tblspc_; +} +inline bool IndexStmt::reset_default_tblspc() const { + // @@protoc_insertion_point(field_get:pg_query.IndexStmt.reset_default_tblspc) + return _internal_reset_default_tblspc(); +} +inline void IndexStmt::_internal_set_reset_default_tblspc(bool value) { + + reset_default_tblspc_ = value; +} +inline void IndexStmt::set_reset_default_tblspc(bool value) { + _internal_set_reset_default_tblspc(value); + // @@protoc_insertion_point(field_set:pg_query.IndexStmt.reset_default_tblspc) +} + +// ------------------------------------------------------------------- + +// CreateFunctionStmt + +// bool is_procedure = 1 [json_name = "is_procedure"]; +inline void CreateFunctionStmt::clear_is_procedure() { + is_procedure_ = false; +} +inline bool CreateFunctionStmt::_internal_is_procedure() const { + return is_procedure_; +} +inline bool CreateFunctionStmt::is_procedure() const { + // @@protoc_insertion_point(field_get:pg_query.CreateFunctionStmt.is_procedure) + return _internal_is_procedure(); +} +inline void CreateFunctionStmt::_internal_set_is_procedure(bool value) { + + is_procedure_ = value; +} +inline void CreateFunctionStmt::set_is_procedure(bool value) { + _internal_set_is_procedure(value); + // @@protoc_insertion_point(field_set:pg_query.CreateFunctionStmt.is_procedure) +} + +// bool replace = 2 [json_name = "replace"]; +inline void CreateFunctionStmt::clear_replace() { + replace_ = false; +} +inline bool CreateFunctionStmt::_internal_replace() const { + return replace_; +} +inline bool CreateFunctionStmt::replace() const { + // @@protoc_insertion_point(field_get:pg_query.CreateFunctionStmt.replace) + return _internal_replace(); +} +inline void CreateFunctionStmt::_internal_set_replace(bool value) { + + replace_ = value; +} +inline void CreateFunctionStmt::set_replace(bool value) { + _internal_set_replace(value); + // @@protoc_insertion_point(field_set:pg_query.CreateFunctionStmt.replace) +} + +// repeated .pg_query.Node funcname = 3 [json_name = "funcname"]; +inline int CreateFunctionStmt::_internal_funcname_size() const { + return funcname_.size(); +} +inline int CreateFunctionStmt::funcname_size() const { + return _internal_funcname_size(); +} +inline void CreateFunctionStmt::clear_funcname() { + funcname_.Clear(); +} +inline ::pg_query::Node* CreateFunctionStmt::mutable_funcname(int index) { + // @@protoc_insertion_point(field_mutable:pg_query.CreateFunctionStmt.funcname) + return funcname_.Mutable(index); +} +inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* +CreateFunctionStmt::mutable_funcname() { + // @@protoc_insertion_point(field_mutable_list:pg_query.CreateFunctionStmt.funcname) + return &funcname_; +} +inline const ::pg_query::Node& CreateFunctionStmt::_internal_funcname(int index) const { + return funcname_.Get(index); +} +inline const ::pg_query::Node& CreateFunctionStmt::funcname(int index) const { + // @@protoc_insertion_point(field_get:pg_query.CreateFunctionStmt.funcname) + return _internal_funcname(index); +} +inline ::pg_query::Node* CreateFunctionStmt::_internal_add_funcname() { + return funcname_.Add(); +} +inline ::pg_query::Node* CreateFunctionStmt::add_funcname() { + // @@protoc_insertion_point(field_add:pg_query.CreateFunctionStmt.funcname) + return _internal_add_funcname(); +} +inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& +CreateFunctionStmt::funcname() const { + // @@protoc_insertion_point(field_list:pg_query.CreateFunctionStmt.funcname) + return funcname_; +} + +// repeated .pg_query.Node parameters = 4 [json_name = "parameters"]; +inline int CreateFunctionStmt::_internal_parameters_size() const { + return parameters_.size(); +} +inline int CreateFunctionStmt::parameters_size() const { + return _internal_parameters_size(); +} +inline void CreateFunctionStmt::clear_parameters() { + parameters_.Clear(); +} +inline ::pg_query::Node* CreateFunctionStmt::mutable_parameters(int index) { + // @@protoc_insertion_point(field_mutable:pg_query.CreateFunctionStmt.parameters) + return parameters_.Mutable(index); +} +inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* +CreateFunctionStmt::mutable_parameters() { + // @@protoc_insertion_point(field_mutable_list:pg_query.CreateFunctionStmt.parameters) + return ¶meters_; +} +inline const ::pg_query::Node& CreateFunctionStmt::_internal_parameters(int index) const { + return parameters_.Get(index); +} +inline const ::pg_query::Node& CreateFunctionStmt::parameters(int index) const { + // @@protoc_insertion_point(field_get:pg_query.CreateFunctionStmt.parameters) + return _internal_parameters(index); +} +inline ::pg_query::Node* CreateFunctionStmt::_internal_add_parameters() { + return parameters_.Add(); +} +inline ::pg_query::Node* CreateFunctionStmt::add_parameters() { + // @@protoc_insertion_point(field_add:pg_query.CreateFunctionStmt.parameters) + return _internal_add_parameters(); +} +inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& +CreateFunctionStmt::parameters() const { + // @@protoc_insertion_point(field_list:pg_query.CreateFunctionStmt.parameters) + return parameters_; +} + +// .pg_query.TypeName return_type = 5 [json_name = "returnType"]; +inline bool CreateFunctionStmt::_internal_has_return_type() const { + return this != internal_default_instance() && return_type_ != nullptr; +} +inline bool CreateFunctionStmt::has_return_type() const { + return _internal_has_return_type(); +} +inline void CreateFunctionStmt::clear_return_type() { + if (GetArena() == nullptr && return_type_ != nullptr) { + delete return_type_; + } + return_type_ = nullptr; +} +inline const ::pg_query::TypeName& CreateFunctionStmt::_internal_return_type() const { + const ::pg_query::TypeName* p = return_type_; + return p != nullptr ? *p : reinterpret_cast( + ::pg_query::_TypeName_default_instance_); +} +inline const ::pg_query::TypeName& CreateFunctionStmt::return_type() const { + // @@protoc_insertion_point(field_get:pg_query.CreateFunctionStmt.return_type) + return _internal_return_type(); +} +inline void CreateFunctionStmt::unsafe_arena_set_allocated_return_type( + ::pg_query::TypeName* return_type) { + if (GetArena() == nullptr) { + delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(return_type_); + } + return_type_ = return_type; + if (return_type) { + + } else { + + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.CreateFunctionStmt.return_type) +} +inline ::pg_query::TypeName* CreateFunctionStmt::release_return_type() { + + ::pg_query::TypeName* temp = return_type_; + return_type_ = nullptr; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + return temp; +} +inline ::pg_query::TypeName* CreateFunctionStmt::unsafe_arena_release_return_type() { + // @@protoc_insertion_point(field_release:pg_query.CreateFunctionStmt.return_type) + + ::pg_query::TypeName* temp = return_type_; + return_type_ = nullptr; + return temp; +} +inline ::pg_query::TypeName* CreateFunctionStmt::_internal_mutable_return_type() { + + if (return_type_ == nullptr) { + auto* p = CreateMaybeMessage<::pg_query::TypeName>(GetArena()); + return_type_ = p; + } + return return_type_; +} +inline ::pg_query::TypeName* CreateFunctionStmt::mutable_return_type() { + // @@protoc_insertion_point(field_mutable:pg_query.CreateFunctionStmt.return_type) + return _internal_mutable_return_type(); +} +inline void CreateFunctionStmt::set_allocated_return_type(::pg_query::TypeName* return_type) { + ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); + if (message_arena == nullptr) { + delete return_type_; + } + if (return_type) { + ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = + ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(return_type); + if (message_arena != submessage_arena) { + return_type = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( + message_arena, return_type, submessage_arena); + } + + } else { + + } + return_type_ = return_type; + // @@protoc_insertion_point(field_set_allocated:pg_query.CreateFunctionStmt.return_type) +} + +// repeated .pg_query.Node options = 6 [json_name = "options"]; +inline int CreateFunctionStmt::_internal_options_size() const { + return options_.size(); +} +inline int CreateFunctionStmt::options_size() const { + return _internal_options_size(); +} +inline void CreateFunctionStmt::clear_options() { + options_.Clear(); +} +inline ::pg_query::Node* CreateFunctionStmt::mutable_options(int index) { + // @@protoc_insertion_point(field_mutable:pg_query.CreateFunctionStmt.options) + return options_.Mutable(index); +} +inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* +CreateFunctionStmt::mutable_options() { + // @@protoc_insertion_point(field_mutable_list:pg_query.CreateFunctionStmt.options) + return &options_; +} +inline const ::pg_query::Node& CreateFunctionStmt::_internal_options(int index) const { + return options_.Get(index); +} +inline const ::pg_query::Node& CreateFunctionStmt::options(int index) const { + // @@protoc_insertion_point(field_get:pg_query.CreateFunctionStmt.options) + return _internal_options(index); +} +inline ::pg_query::Node* CreateFunctionStmt::_internal_add_options() { + return options_.Add(); +} +inline ::pg_query::Node* CreateFunctionStmt::add_options() { + // @@protoc_insertion_point(field_add:pg_query.CreateFunctionStmt.options) + return _internal_add_options(); +} +inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& +CreateFunctionStmt::options() const { + // @@protoc_insertion_point(field_list:pg_query.CreateFunctionStmt.options) + return options_; +} + +// ------------------------------------------------------------------- + +// AlterFunctionStmt + +// .pg_query.ObjectType objtype = 1 [json_name = "objtype"]; +inline void AlterFunctionStmt::clear_objtype() { + objtype_ = 0; +} +inline ::pg_query::ObjectType AlterFunctionStmt::_internal_objtype() const { + return static_cast< ::pg_query::ObjectType >(objtype_); +} +inline ::pg_query::ObjectType AlterFunctionStmt::objtype() const { + // @@protoc_insertion_point(field_get:pg_query.AlterFunctionStmt.objtype) + return _internal_objtype(); +} +inline void AlterFunctionStmt::_internal_set_objtype(::pg_query::ObjectType value) { + + objtype_ = value; +} +inline void AlterFunctionStmt::set_objtype(::pg_query::ObjectType value) { + _internal_set_objtype(value); + // @@protoc_insertion_point(field_set:pg_query.AlterFunctionStmt.objtype) +} + +// .pg_query.ObjectWithArgs func = 2 [json_name = "func"]; +inline bool AlterFunctionStmt::_internal_has_func() const { + return this != internal_default_instance() && func_ != nullptr; +} +inline bool AlterFunctionStmt::has_func() const { + return _internal_has_func(); +} +inline void AlterFunctionStmt::clear_func() { + if (GetArena() == nullptr && func_ != nullptr) { + delete func_; + } + func_ = nullptr; +} +inline const ::pg_query::ObjectWithArgs& AlterFunctionStmt::_internal_func() const { + const ::pg_query::ObjectWithArgs* p = func_; + return p != nullptr ? *p : reinterpret_cast( + ::pg_query::_ObjectWithArgs_default_instance_); +} +inline const ::pg_query::ObjectWithArgs& AlterFunctionStmt::func() const { + // @@protoc_insertion_point(field_get:pg_query.AlterFunctionStmt.func) + return _internal_func(); +} +inline void AlterFunctionStmt::unsafe_arena_set_allocated_func( + ::pg_query::ObjectWithArgs* func) { + if (GetArena() == nullptr) { + delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(func_); + } + func_ = func; + if (func) { + + } else { + + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.AlterFunctionStmt.func) +} +inline ::pg_query::ObjectWithArgs* AlterFunctionStmt::release_func() { + + ::pg_query::ObjectWithArgs* temp = func_; + func_ = nullptr; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + return temp; +} +inline ::pg_query::ObjectWithArgs* AlterFunctionStmt::unsafe_arena_release_func() { + // @@protoc_insertion_point(field_release:pg_query.AlterFunctionStmt.func) + + ::pg_query::ObjectWithArgs* temp = func_; + func_ = nullptr; + return temp; +} +inline ::pg_query::ObjectWithArgs* AlterFunctionStmt::_internal_mutable_func() { + + if (func_ == nullptr) { + auto* p = CreateMaybeMessage<::pg_query::ObjectWithArgs>(GetArena()); + func_ = p; + } + return func_; +} +inline ::pg_query::ObjectWithArgs* AlterFunctionStmt::mutable_func() { + // @@protoc_insertion_point(field_mutable:pg_query.AlterFunctionStmt.func) + return _internal_mutable_func(); +} +inline void AlterFunctionStmt::set_allocated_func(::pg_query::ObjectWithArgs* func) { + ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); + if (message_arena == nullptr) { + delete func_; + } + if (func) { + ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = + ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(func); + if (message_arena != submessage_arena) { + func = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( + message_arena, func, submessage_arena); + } + + } else { + + } + func_ = func; + // @@protoc_insertion_point(field_set_allocated:pg_query.AlterFunctionStmt.func) +} + +// repeated .pg_query.Node actions = 3 [json_name = "actions"]; +inline int AlterFunctionStmt::_internal_actions_size() const { + return actions_.size(); +} +inline int AlterFunctionStmt::actions_size() const { + return _internal_actions_size(); +} +inline void AlterFunctionStmt::clear_actions() { + actions_.Clear(); +} +inline ::pg_query::Node* AlterFunctionStmt::mutable_actions(int index) { + // @@protoc_insertion_point(field_mutable:pg_query.AlterFunctionStmt.actions) + return actions_.Mutable(index); +} +inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* +AlterFunctionStmt::mutable_actions() { + // @@protoc_insertion_point(field_mutable_list:pg_query.AlterFunctionStmt.actions) + return &actions_; +} +inline const ::pg_query::Node& AlterFunctionStmt::_internal_actions(int index) const { + return actions_.Get(index); +} +inline const ::pg_query::Node& AlterFunctionStmt::actions(int index) const { + // @@protoc_insertion_point(field_get:pg_query.AlterFunctionStmt.actions) + return _internal_actions(index); +} +inline ::pg_query::Node* AlterFunctionStmt::_internal_add_actions() { + return actions_.Add(); +} +inline ::pg_query::Node* AlterFunctionStmt::add_actions() { + // @@protoc_insertion_point(field_add:pg_query.AlterFunctionStmt.actions) + return _internal_add_actions(); +} +inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& +AlterFunctionStmt::actions() const { + // @@protoc_insertion_point(field_list:pg_query.AlterFunctionStmt.actions) + return actions_; +} + +// ------------------------------------------------------------------- + +// DoStmt + +// repeated .pg_query.Node args = 1 [json_name = "args"]; +inline int DoStmt::_internal_args_size() const { + return args_.size(); +} +inline int DoStmt::args_size() const { + return _internal_args_size(); +} +inline void DoStmt::clear_args() { + args_.Clear(); +} +inline ::pg_query::Node* DoStmt::mutable_args(int index) { + // @@protoc_insertion_point(field_mutable:pg_query.DoStmt.args) + return args_.Mutable(index); +} +inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* +DoStmt::mutable_args() { + // @@protoc_insertion_point(field_mutable_list:pg_query.DoStmt.args) + return &args_; +} +inline const ::pg_query::Node& DoStmt::_internal_args(int index) const { + return args_.Get(index); +} +inline const ::pg_query::Node& DoStmt::args(int index) const { + // @@protoc_insertion_point(field_get:pg_query.DoStmt.args) + return _internal_args(index); +} +inline ::pg_query::Node* DoStmt::_internal_add_args() { + return args_.Add(); +} +inline ::pg_query::Node* DoStmt::add_args() { + // @@protoc_insertion_point(field_add:pg_query.DoStmt.args) + return _internal_add_args(); +} +inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& +DoStmt::args() const { + // @@protoc_insertion_point(field_list:pg_query.DoStmt.args) + return args_; +} + +// ------------------------------------------------------------------- + +// RenameStmt + +// .pg_query.ObjectType rename_type = 1 [json_name = "renameType"]; +inline void RenameStmt::clear_rename_type() { + rename_type_ = 0; +} +inline ::pg_query::ObjectType RenameStmt::_internal_rename_type() const { + return static_cast< ::pg_query::ObjectType >(rename_type_); +} +inline ::pg_query::ObjectType RenameStmt::rename_type() const { + // @@protoc_insertion_point(field_get:pg_query.RenameStmt.rename_type) + return _internal_rename_type(); +} +inline void RenameStmt::_internal_set_rename_type(::pg_query::ObjectType value) { + + rename_type_ = value; +} +inline void RenameStmt::set_rename_type(::pg_query::ObjectType value) { + _internal_set_rename_type(value); + // @@protoc_insertion_point(field_set:pg_query.RenameStmt.rename_type) +} + +// .pg_query.ObjectType relation_type = 2 [json_name = "relationType"]; +inline void RenameStmt::clear_relation_type() { + relation_type_ = 0; +} +inline ::pg_query::ObjectType RenameStmt::_internal_relation_type() const { + return static_cast< ::pg_query::ObjectType >(relation_type_); +} +inline ::pg_query::ObjectType RenameStmt::relation_type() const { + // @@protoc_insertion_point(field_get:pg_query.RenameStmt.relation_type) + return _internal_relation_type(); +} +inline void RenameStmt::_internal_set_relation_type(::pg_query::ObjectType value) { + + relation_type_ = value; +} +inline void RenameStmt::set_relation_type(::pg_query::ObjectType value) { + _internal_set_relation_type(value); + // @@protoc_insertion_point(field_set:pg_query.RenameStmt.relation_type) +} + +// .pg_query.RangeVar relation = 3 [json_name = "relation"]; +inline bool RenameStmt::_internal_has_relation() const { + return this != internal_default_instance() && relation_ != nullptr; +} +inline bool RenameStmt::has_relation() const { + return _internal_has_relation(); +} +inline void RenameStmt::clear_relation() { + if (GetArena() == nullptr && relation_ != nullptr) { + delete relation_; + } + relation_ = nullptr; +} +inline const ::pg_query::RangeVar& RenameStmt::_internal_relation() const { + const ::pg_query::RangeVar* p = relation_; + return p != nullptr ? *p : reinterpret_cast( + ::pg_query::_RangeVar_default_instance_); +} +inline const ::pg_query::RangeVar& RenameStmt::relation() const { + // @@protoc_insertion_point(field_get:pg_query.RenameStmt.relation) + return _internal_relation(); +} +inline void RenameStmt::unsafe_arena_set_allocated_relation( + ::pg_query::RangeVar* relation) { + if (GetArena() == nullptr) { + delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(relation_); + } + relation_ = relation; + if (relation) { + + } else { + + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.RenameStmt.relation) +} +inline ::pg_query::RangeVar* RenameStmt::release_relation() { + + ::pg_query::RangeVar* temp = relation_; + relation_ = nullptr; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + return temp; +} +inline ::pg_query::RangeVar* RenameStmt::unsafe_arena_release_relation() { + // @@protoc_insertion_point(field_release:pg_query.RenameStmt.relation) + + ::pg_query::RangeVar* temp = relation_; + relation_ = nullptr; + return temp; +} +inline ::pg_query::RangeVar* RenameStmt::_internal_mutable_relation() { + + if (relation_ == nullptr) { + auto* p = CreateMaybeMessage<::pg_query::RangeVar>(GetArena()); + relation_ = p; + } + return relation_; +} +inline ::pg_query::RangeVar* RenameStmt::mutable_relation() { + // @@protoc_insertion_point(field_mutable:pg_query.RenameStmt.relation) + return _internal_mutable_relation(); +} +inline void RenameStmt::set_allocated_relation(::pg_query::RangeVar* relation) { + ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); + if (message_arena == nullptr) { + delete relation_; + } + if (relation) { + ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = + ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(relation); + if (message_arena != submessage_arena) { + relation = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( + message_arena, relation, submessage_arena); + } + + } else { + + } + relation_ = relation; + // @@protoc_insertion_point(field_set_allocated:pg_query.RenameStmt.relation) +} + +// .pg_query.Node object = 4 [json_name = "object"]; +inline bool RenameStmt::_internal_has_object() const { + return this != internal_default_instance() && object_ != nullptr; +} +inline bool RenameStmt::has_object() const { + return _internal_has_object(); +} +inline void RenameStmt::clear_object() { + if (GetArena() == nullptr && object_ != nullptr) { + delete object_; + } + object_ = nullptr; +} +inline const ::pg_query::Node& RenameStmt::_internal_object() const { + const ::pg_query::Node* p = object_; + return p != nullptr ? *p : reinterpret_cast( + ::pg_query::_Node_default_instance_); +} +inline const ::pg_query::Node& RenameStmt::object() const { + // @@protoc_insertion_point(field_get:pg_query.RenameStmt.object) + return _internal_object(); +} +inline void RenameStmt::unsafe_arena_set_allocated_object( + ::pg_query::Node* object) { + if (GetArena() == nullptr) { + delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(object_); + } + object_ = object; + if (object) { + + } else { + + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.RenameStmt.object) +} +inline ::pg_query::Node* RenameStmt::release_object() { + + ::pg_query::Node* temp = object_; + object_ = nullptr; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + return temp; +} +inline ::pg_query::Node* RenameStmt::unsafe_arena_release_object() { + // @@protoc_insertion_point(field_release:pg_query.RenameStmt.object) + + ::pg_query::Node* temp = object_; + object_ = nullptr; + return temp; +} +inline ::pg_query::Node* RenameStmt::_internal_mutable_object() { + + if (object_ == nullptr) { + auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); + object_ = p; + } + return object_; +} +inline ::pg_query::Node* RenameStmt::mutable_object() { + // @@protoc_insertion_point(field_mutable:pg_query.RenameStmt.object) + return _internal_mutable_object(); +} +inline void RenameStmt::set_allocated_object(::pg_query::Node* object) { + ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); + if (message_arena == nullptr) { + delete object_; + } + if (object) { + ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = + ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(object); + if (message_arena != submessage_arena) { + object = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( + message_arena, object, submessage_arena); + } + + } else { + + } + object_ = object; + // @@protoc_insertion_point(field_set_allocated:pg_query.RenameStmt.object) +} + +// string subname = 5 [json_name = "subname"]; +inline void RenameStmt::clear_subname() { + subname_.ClearToEmpty(); +} +inline const std::string& RenameStmt::subname() const { + // @@protoc_insertion_point(field_get:pg_query.RenameStmt.subname) + return _internal_subname(); +} +inline void RenameStmt::set_subname(const std::string& value) { + _internal_set_subname(value); + // @@protoc_insertion_point(field_set:pg_query.RenameStmt.subname) +} +inline std::string* RenameStmt::mutable_subname() { + // @@protoc_insertion_point(field_mutable:pg_query.RenameStmt.subname) + return _internal_mutable_subname(); +} +inline const std::string& RenameStmt::_internal_subname() const { + return subname_.Get(); +} +inline void RenameStmt::_internal_set_subname(const std::string& value) { + + subname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArena()); +} +inline void RenameStmt::set_subname(std::string&& value) { + + subname_.Set( + ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::move(value), GetArena()); + // @@protoc_insertion_point(field_set_rvalue:pg_query.RenameStmt.subname) +} +inline void RenameStmt::set_subname(const char* value) { + GOOGLE_DCHECK(value != nullptr); + + subname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string(value), GetArena()); + // @@protoc_insertion_point(field_set_char:pg_query.RenameStmt.subname) +} +inline void RenameStmt::set_subname(const char* value, + size_t size) { + + subname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string( + reinterpret_cast(value), size), GetArena()); + // @@protoc_insertion_point(field_set_pointer:pg_query.RenameStmt.subname) +} +inline std::string* RenameStmt::_internal_mutable_subname() { + + return subname_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArena()); +} +inline std::string* RenameStmt::release_subname() { + // @@protoc_insertion_point(field_release:pg_query.RenameStmt.subname) + return subname_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); +} +inline void RenameStmt::set_allocated_subname(std::string* subname) { + if (subname != nullptr) { + + } else { + + } + subname_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), subname, + GetArena()); + // @@protoc_insertion_point(field_set_allocated:pg_query.RenameStmt.subname) +} + +// string newname = 6 [json_name = "newname"]; +inline void RenameStmt::clear_newname() { + newname_.ClearToEmpty(); +} +inline const std::string& RenameStmt::newname() const { + // @@protoc_insertion_point(field_get:pg_query.RenameStmt.newname) + return _internal_newname(); +} +inline void RenameStmt::set_newname(const std::string& value) { + _internal_set_newname(value); + // @@protoc_insertion_point(field_set:pg_query.RenameStmt.newname) +} +inline std::string* RenameStmt::mutable_newname() { + // @@protoc_insertion_point(field_mutable:pg_query.RenameStmt.newname) + return _internal_mutable_newname(); +} +inline const std::string& RenameStmt::_internal_newname() const { + return newname_.Get(); +} +inline void RenameStmt::_internal_set_newname(const std::string& value) { + + newname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArena()); +} +inline void RenameStmt::set_newname(std::string&& value) { + + newname_.Set( + ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::move(value), GetArena()); + // @@protoc_insertion_point(field_set_rvalue:pg_query.RenameStmt.newname) +} +inline void RenameStmt::set_newname(const char* value) { + GOOGLE_DCHECK(value != nullptr); + + newname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string(value), GetArena()); + // @@protoc_insertion_point(field_set_char:pg_query.RenameStmt.newname) +} +inline void RenameStmt::set_newname(const char* value, + size_t size) { + + newname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string( + reinterpret_cast(value), size), GetArena()); + // @@protoc_insertion_point(field_set_pointer:pg_query.RenameStmt.newname) +} +inline std::string* RenameStmt::_internal_mutable_newname() { + + return newname_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArena()); +} +inline std::string* RenameStmt::release_newname() { + // @@protoc_insertion_point(field_release:pg_query.RenameStmt.newname) + return newname_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); +} +inline void RenameStmt::set_allocated_newname(std::string* newname) { + if (newname != nullptr) { + + } else { + + } + newname_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), newname, + GetArena()); + // @@protoc_insertion_point(field_set_allocated:pg_query.RenameStmt.newname) +} + +// .pg_query.DropBehavior behavior = 7 [json_name = "behavior"]; +inline void RenameStmt::clear_behavior() { + behavior_ = 0; +} +inline ::pg_query::DropBehavior RenameStmt::_internal_behavior() const { + return static_cast< ::pg_query::DropBehavior >(behavior_); +} +inline ::pg_query::DropBehavior RenameStmt::behavior() const { + // @@protoc_insertion_point(field_get:pg_query.RenameStmt.behavior) + return _internal_behavior(); +} +inline void RenameStmt::_internal_set_behavior(::pg_query::DropBehavior value) { + + behavior_ = value; +} +inline void RenameStmt::set_behavior(::pg_query::DropBehavior value) { + _internal_set_behavior(value); + // @@protoc_insertion_point(field_set:pg_query.RenameStmt.behavior) +} + +// bool missing_ok = 8 [json_name = "missing_ok"]; +inline void RenameStmt::clear_missing_ok() { + missing_ok_ = false; +} +inline bool RenameStmt::_internal_missing_ok() const { + return missing_ok_; +} +inline bool RenameStmt::missing_ok() const { + // @@protoc_insertion_point(field_get:pg_query.RenameStmt.missing_ok) + return _internal_missing_ok(); +} +inline void RenameStmt::_internal_set_missing_ok(bool value) { + + missing_ok_ = value; +} +inline void RenameStmt::set_missing_ok(bool value) { + _internal_set_missing_ok(value); + // @@protoc_insertion_point(field_set:pg_query.RenameStmt.missing_ok) +} + +// ------------------------------------------------------------------- + +// RuleStmt + +// .pg_query.RangeVar relation = 1 [json_name = "relation"]; +inline bool RuleStmt::_internal_has_relation() const { + return this != internal_default_instance() && relation_ != nullptr; +} +inline bool RuleStmt::has_relation() const { + return _internal_has_relation(); +} +inline void RuleStmt::clear_relation() { + if (GetArena() == nullptr && relation_ != nullptr) { + delete relation_; + } + relation_ = nullptr; +} +inline const ::pg_query::RangeVar& RuleStmt::_internal_relation() const { + const ::pg_query::RangeVar* p = relation_; + return p != nullptr ? *p : reinterpret_cast( + ::pg_query::_RangeVar_default_instance_); +} +inline const ::pg_query::RangeVar& RuleStmt::relation() const { + // @@protoc_insertion_point(field_get:pg_query.RuleStmt.relation) + return _internal_relation(); +} +inline void RuleStmt::unsafe_arena_set_allocated_relation( + ::pg_query::RangeVar* relation) { + if (GetArena() == nullptr) { + delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(relation_); + } + relation_ = relation; + if (relation) { + + } else { + + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.RuleStmt.relation) +} +inline ::pg_query::RangeVar* RuleStmt::release_relation() { + + ::pg_query::RangeVar* temp = relation_; + relation_ = nullptr; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + return temp; +} +inline ::pg_query::RangeVar* RuleStmt::unsafe_arena_release_relation() { + // @@protoc_insertion_point(field_release:pg_query.RuleStmt.relation) + + ::pg_query::RangeVar* temp = relation_; + relation_ = nullptr; + return temp; +} +inline ::pg_query::RangeVar* RuleStmt::_internal_mutable_relation() { + + if (relation_ == nullptr) { + auto* p = CreateMaybeMessage<::pg_query::RangeVar>(GetArena()); + relation_ = p; + } + return relation_; +} +inline ::pg_query::RangeVar* RuleStmt::mutable_relation() { + // @@protoc_insertion_point(field_mutable:pg_query.RuleStmt.relation) + return _internal_mutable_relation(); +} +inline void RuleStmt::set_allocated_relation(::pg_query::RangeVar* relation) { + ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); + if (message_arena == nullptr) { + delete relation_; + } + if (relation) { + ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = + ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(relation); + if (message_arena != submessage_arena) { + relation = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( + message_arena, relation, submessage_arena); + } + + } else { + + } + relation_ = relation; + // @@protoc_insertion_point(field_set_allocated:pg_query.RuleStmt.relation) +} + +// string rulename = 2 [json_name = "rulename"]; +inline void RuleStmt::clear_rulename() { + rulename_.ClearToEmpty(); +} +inline const std::string& RuleStmt::rulename() const { + // @@protoc_insertion_point(field_get:pg_query.RuleStmt.rulename) + return _internal_rulename(); +} +inline void RuleStmt::set_rulename(const std::string& value) { + _internal_set_rulename(value); + // @@protoc_insertion_point(field_set:pg_query.RuleStmt.rulename) +} +inline std::string* RuleStmt::mutable_rulename() { + // @@protoc_insertion_point(field_mutable:pg_query.RuleStmt.rulename) + return _internal_mutable_rulename(); +} +inline const std::string& RuleStmt::_internal_rulename() const { + return rulename_.Get(); +} +inline void RuleStmt::_internal_set_rulename(const std::string& value) { + + rulename_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArena()); +} +inline void RuleStmt::set_rulename(std::string&& value) { + + rulename_.Set( + ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::move(value), GetArena()); + // @@protoc_insertion_point(field_set_rvalue:pg_query.RuleStmt.rulename) +} +inline void RuleStmt::set_rulename(const char* value) { + GOOGLE_DCHECK(value != nullptr); + + rulename_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string(value), GetArena()); + // @@protoc_insertion_point(field_set_char:pg_query.RuleStmt.rulename) +} +inline void RuleStmt::set_rulename(const char* value, + size_t size) { + + rulename_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string( + reinterpret_cast(value), size), GetArena()); + // @@protoc_insertion_point(field_set_pointer:pg_query.RuleStmt.rulename) +} +inline std::string* RuleStmt::_internal_mutable_rulename() { + + return rulename_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArena()); +} +inline std::string* RuleStmt::release_rulename() { + // @@protoc_insertion_point(field_release:pg_query.RuleStmt.rulename) + return rulename_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); +} +inline void RuleStmt::set_allocated_rulename(std::string* rulename) { + if (rulename != nullptr) { + + } else { + + } + rulename_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), rulename, + GetArena()); + // @@protoc_insertion_point(field_set_allocated:pg_query.RuleStmt.rulename) +} + +// .pg_query.Node where_clause = 3 [json_name = "whereClause"]; +inline bool RuleStmt::_internal_has_where_clause() const { + return this != internal_default_instance() && where_clause_ != nullptr; +} +inline bool RuleStmt::has_where_clause() const { + return _internal_has_where_clause(); +} +inline void RuleStmt::clear_where_clause() { + if (GetArena() == nullptr && where_clause_ != nullptr) { + delete where_clause_; + } + where_clause_ = nullptr; +} +inline const ::pg_query::Node& RuleStmt::_internal_where_clause() const { + const ::pg_query::Node* p = where_clause_; + return p != nullptr ? *p : reinterpret_cast( + ::pg_query::_Node_default_instance_); +} +inline const ::pg_query::Node& RuleStmt::where_clause() const { + // @@protoc_insertion_point(field_get:pg_query.RuleStmt.where_clause) + return _internal_where_clause(); +} +inline void RuleStmt::unsafe_arena_set_allocated_where_clause( + ::pg_query::Node* where_clause) { + if (GetArena() == nullptr) { + delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(where_clause_); + } + where_clause_ = where_clause; + if (where_clause) { + + } else { + + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.RuleStmt.where_clause) +} +inline ::pg_query::Node* RuleStmt::release_where_clause() { + + ::pg_query::Node* temp = where_clause_; + where_clause_ = nullptr; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + return temp; +} +inline ::pg_query::Node* RuleStmt::unsafe_arena_release_where_clause() { + // @@protoc_insertion_point(field_release:pg_query.RuleStmt.where_clause) + + ::pg_query::Node* temp = where_clause_; + where_clause_ = nullptr; + return temp; +} +inline ::pg_query::Node* RuleStmt::_internal_mutable_where_clause() { + + if (where_clause_ == nullptr) { + auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); + where_clause_ = p; + } + return where_clause_; +} +inline ::pg_query::Node* RuleStmt::mutable_where_clause() { + // @@protoc_insertion_point(field_mutable:pg_query.RuleStmt.where_clause) + return _internal_mutable_where_clause(); +} +inline void RuleStmt::set_allocated_where_clause(::pg_query::Node* where_clause) { + ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); + if (message_arena == nullptr) { + delete where_clause_; + } + if (where_clause) { + ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = + ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(where_clause); + if (message_arena != submessage_arena) { + where_clause = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( + message_arena, where_clause, submessage_arena); + } + + } else { + + } + where_clause_ = where_clause; + // @@protoc_insertion_point(field_set_allocated:pg_query.RuleStmt.where_clause) +} + +// .pg_query.CmdType event = 4 [json_name = "event"]; +inline void RuleStmt::clear_event() { + event_ = 0; +} +inline ::pg_query::CmdType RuleStmt::_internal_event() const { + return static_cast< ::pg_query::CmdType >(event_); +} +inline ::pg_query::CmdType RuleStmt::event() const { + // @@protoc_insertion_point(field_get:pg_query.RuleStmt.event) + return _internal_event(); +} +inline void RuleStmt::_internal_set_event(::pg_query::CmdType value) { + + event_ = value; +} +inline void RuleStmt::set_event(::pg_query::CmdType value) { + _internal_set_event(value); + // @@protoc_insertion_point(field_set:pg_query.RuleStmt.event) +} + +// bool instead = 5 [json_name = "instead"]; +inline void RuleStmt::clear_instead() { + instead_ = false; +} +inline bool RuleStmt::_internal_instead() const { + return instead_; +} +inline bool RuleStmt::instead() const { + // @@protoc_insertion_point(field_get:pg_query.RuleStmt.instead) + return _internal_instead(); +} +inline void RuleStmt::_internal_set_instead(bool value) { + + instead_ = value; +} +inline void RuleStmt::set_instead(bool value) { + _internal_set_instead(value); + // @@protoc_insertion_point(field_set:pg_query.RuleStmt.instead) +} + +// repeated .pg_query.Node actions = 6 [json_name = "actions"]; +inline int RuleStmt::_internal_actions_size() const { + return actions_.size(); +} +inline int RuleStmt::actions_size() const { + return _internal_actions_size(); +} +inline void RuleStmt::clear_actions() { + actions_.Clear(); +} +inline ::pg_query::Node* RuleStmt::mutable_actions(int index) { + // @@protoc_insertion_point(field_mutable:pg_query.RuleStmt.actions) + return actions_.Mutable(index); +} +inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* +RuleStmt::mutable_actions() { + // @@protoc_insertion_point(field_mutable_list:pg_query.RuleStmt.actions) + return &actions_; +} +inline const ::pg_query::Node& RuleStmt::_internal_actions(int index) const { + return actions_.Get(index); +} +inline const ::pg_query::Node& RuleStmt::actions(int index) const { + // @@protoc_insertion_point(field_get:pg_query.RuleStmt.actions) + return _internal_actions(index); +} +inline ::pg_query::Node* RuleStmt::_internal_add_actions() { + return actions_.Add(); +} +inline ::pg_query::Node* RuleStmt::add_actions() { + // @@protoc_insertion_point(field_add:pg_query.RuleStmt.actions) + return _internal_add_actions(); +} +inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& +RuleStmt::actions() const { + // @@protoc_insertion_point(field_list:pg_query.RuleStmt.actions) + return actions_; +} + +// bool replace = 7 [json_name = "replace"]; +inline void RuleStmt::clear_replace() { + replace_ = false; +} +inline bool RuleStmt::_internal_replace() const { + return replace_; +} +inline bool RuleStmt::replace() const { + // @@protoc_insertion_point(field_get:pg_query.RuleStmt.replace) + return _internal_replace(); +} +inline void RuleStmt::_internal_set_replace(bool value) { + + replace_ = value; +} +inline void RuleStmt::set_replace(bool value) { + _internal_set_replace(value); + // @@protoc_insertion_point(field_set:pg_query.RuleStmt.replace) +} + +// ------------------------------------------------------------------- + +// NotifyStmt + +// string conditionname = 1 [json_name = "conditionname"]; +inline void NotifyStmt::clear_conditionname() { + conditionname_.ClearToEmpty(); +} +inline const std::string& NotifyStmt::conditionname() const { + // @@protoc_insertion_point(field_get:pg_query.NotifyStmt.conditionname) + return _internal_conditionname(); +} +inline void NotifyStmt::set_conditionname(const std::string& value) { + _internal_set_conditionname(value); + // @@protoc_insertion_point(field_set:pg_query.NotifyStmt.conditionname) +} +inline std::string* NotifyStmt::mutable_conditionname() { + // @@protoc_insertion_point(field_mutable:pg_query.NotifyStmt.conditionname) + return _internal_mutable_conditionname(); +} +inline const std::string& NotifyStmt::_internal_conditionname() const { + return conditionname_.Get(); +} +inline void NotifyStmt::_internal_set_conditionname(const std::string& value) { + + conditionname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArena()); +} +inline void NotifyStmt::set_conditionname(std::string&& value) { + + conditionname_.Set( + ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::move(value), GetArena()); + // @@protoc_insertion_point(field_set_rvalue:pg_query.NotifyStmt.conditionname) +} +inline void NotifyStmt::set_conditionname(const char* value) { + GOOGLE_DCHECK(value != nullptr); + + conditionname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string(value), GetArena()); + // @@protoc_insertion_point(field_set_char:pg_query.NotifyStmt.conditionname) +} +inline void NotifyStmt::set_conditionname(const char* value, + size_t size) { + + conditionname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string( + reinterpret_cast(value), size), GetArena()); + // @@protoc_insertion_point(field_set_pointer:pg_query.NotifyStmt.conditionname) +} +inline std::string* NotifyStmt::_internal_mutable_conditionname() { + + return conditionname_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArena()); +} +inline std::string* NotifyStmt::release_conditionname() { + // @@protoc_insertion_point(field_release:pg_query.NotifyStmt.conditionname) + return conditionname_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); +} +inline void NotifyStmt::set_allocated_conditionname(std::string* conditionname) { + if (conditionname != nullptr) { + + } else { + + } + conditionname_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), conditionname, + GetArena()); + // @@protoc_insertion_point(field_set_allocated:pg_query.NotifyStmt.conditionname) +} + +// string payload = 2 [json_name = "payload"]; +inline void NotifyStmt::clear_payload() { + payload_.ClearToEmpty(); +} +inline const std::string& NotifyStmt::payload() const { + // @@protoc_insertion_point(field_get:pg_query.NotifyStmt.payload) + return _internal_payload(); +} +inline void NotifyStmt::set_payload(const std::string& value) { + _internal_set_payload(value); + // @@protoc_insertion_point(field_set:pg_query.NotifyStmt.payload) +} +inline std::string* NotifyStmt::mutable_payload() { + // @@protoc_insertion_point(field_mutable:pg_query.NotifyStmt.payload) + return _internal_mutable_payload(); +} +inline const std::string& NotifyStmt::_internal_payload() const { + return payload_.Get(); +} +inline void NotifyStmt::_internal_set_payload(const std::string& value) { + + payload_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArena()); +} +inline void NotifyStmt::set_payload(std::string&& value) { + + payload_.Set( + ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::move(value), GetArena()); + // @@protoc_insertion_point(field_set_rvalue:pg_query.NotifyStmt.payload) +} +inline void NotifyStmt::set_payload(const char* value) { + GOOGLE_DCHECK(value != nullptr); + + payload_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string(value), GetArena()); + // @@protoc_insertion_point(field_set_char:pg_query.NotifyStmt.payload) +} +inline void NotifyStmt::set_payload(const char* value, + size_t size) { + + payload_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string( + reinterpret_cast(value), size), GetArena()); + // @@protoc_insertion_point(field_set_pointer:pg_query.NotifyStmt.payload) +} +inline std::string* NotifyStmt::_internal_mutable_payload() { + + return payload_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArena()); +} +inline std::string* NotifyStmt::release_payload() { + // @@protoc_insertion_point(field_release:pg_query.NotifyStmt.payload) + return payload_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); +} +inline void NotifyStmt::set_allocated_payload(std::string* payload) { + if (payload != nullptr) { + + } else { + + } + payload_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), payload, + GetArena()); + // @@protoc_insertion_point(field_set_allocated:pg_query.NotifyStmt.payload) +} + +// ------------------------------------------------------------------- + +// ListenStmt + +// string conditionname = 1 [json_name = "conditionname"]; +inline void ListenStmt::clear_conditionname() { + conditionname_.ClearToEmpty(); +} +inline const std::string& ListenStmt::conditionname() const { + // @@protoc_insertion_point(field_get:pg_query.ListenStmt.conditionname) + return _internal_conditionname(); +} +inline void ListenStmt::set_conditionname(const std::string& value) { + _internal_set_conditionname(value); + // @@protoc_insertion_point(field_set:pg_query.ListenStmt.conditionname) +} +inline std::string* ListenStmt::mutable_conditionname() { + // @@protoc_insertion_point(field_mutable:pg_query.ListenStmt.conditionname) + return _internal_mutable_conditionname(); +} +inline const std::string& ListenStmt::_internal_conditionname() const { + return conditionname_.Get(); +} +inline void ListenStmt::_internal_set_conditionname(const std::string& value) { + + conditionname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArena()); +} +inline void ListenStmt::set_conditionname(std::string&& value) { + + conditionname_.Set( + ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::move(value), GetArena()); + // @@protoc_insertion_point(field_set_rvalue:pg_query.ListenStmt.conditionname) +} +inline void ListenStmt::set_conditionname(const char* value) { + GOOGLE_DCHECK(value != nullptr); + + conditionname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string(value), GetArena()); + // @@protoc_insertion_point(field_set_char:pg_query.ListenStmt.conditionname) +} +inline void ListenStmt::set_conditionname(const char* value, + size_t size) { + + conditionname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string( + reinterpret_cast(value), size), GetArena()); + // @@protoc_insertion_point(field_set_pointer:pg_query.ListenStmt.conditionname) +} +inline std::string* ListenStmt::_internal_mutable_conditionname() { + + return conditionname_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArena()); +} +inline std::string* ListenStmt::release_conditionname() { + // @@protoc_insertion_point(field_release:pg_query.ListenStmt.conditionname) + return conditionname_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); +} +inline void ListenStmt::set_allocated_conditionname(std::string* conditionname) { + if (conditionname != nullptr) { + + } else { + + } + conditionname_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), conditionname, + GetArena()); + // @@protoc_insertion_point(field_set_allocated:pg_query.ListenStmt.conditionname) +} + +// ------------------------------------------------------------------- + +// UnlistenStmt + +// string conditionname = 1 [json_name = "conditionname"]; +inline void UnlistenStmt::clear_conditionname() { + conditionname_.ClearToEmpty(); +} +inline const std::string& UnlistenStmt::conditionname() const { + // @@protoc_insertion_point(field_get:pg_query.UnlistenStmt.conditionname) + return _internal_conditionname(); +} +inline void UnlistenStmt::set_conditionname(const std::string& value) { + _internal_set_conditionname(value); + // @@protoc_insertion_point(field_set:pg_query.UnlistenStmt.conditionname) +} +inline std::string* UnlistenStmt::mutable_conditionname() { + // @@protoc_insertion_point(field_mutable:pg_query.UnlistenStmt.conditionname) + return _internal_mutable_conditionname(); +} +inline const std::string& UnlistenStmt::_internal_conditionname() const { + return conditionname_.Get(); +} +inline void UnlistenStmt::_internal_set_conditionname(const std::string& value) { + + conditionname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArena()); +} +inline void UnlistenStmt::set_conditionname(std::string&& value) { + + conditionname_.Set( + ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::move(value), GetArena()); + // @@protoc_insertion_point(field_set_rvalue:pg_query.UnlistenStmt.conditionname) +} +inline void UnlistenStmt::set_conditionname(const char* value) { + GOOGLE_DCHECK(value != nullptr); + + conditionname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string(value), GetArena()); + // @@protoc_insertion_point(field_set_char:pg_query.UnlistenStmt.conditionname) +} +inline void UnlistenStmt::set_conditionname(const char* value, + size_t size) { + + conditionname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string( + reinterpret_cast(value), size), GetArena()); + // @@protoc_insertion_point(field_set_pointer:pg_query.UnlistenStmt.conditionname) +} +inline std::string* UnlistenStmt::_internal_mutable_conditionname() { + + return conditionname_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArena()); +} +inline std::string* UnlistenStmt::release_conditionname() { + // @@protoc_insertion_point(field_release:pg_query.UnlistenStmt.conditionname) + return conditionname_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); +} +inline void UnlistenStmt::set_allocated_conditionname(std::string* conditionname) { + if (conditionname != nullptr) { + + } else { + + } + conditionname_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), conditionname, + GetArena()); + // @@protoc_insertion_point(field_set_allocated:pg_query.UnlistenStmt.conditionname) +} + +// ------------------------------------------------------------------- + +// TransactionStmt + +// .pg_query.TransactionStmtKind kind = 1 [json_name = "kind"]; +inline void TransactionStmt::clear_kind() { + kind_ = 0; +} +inline ::pg_query::TransactionStmtKind TransactionStmt::_internal_kind() const { + return static_cast< ::pg_query::TransactionStmtKind >(kind_); +} +inline ::pg_query::TransactionStmtKind TransactionStmt::kind() const { + // @@protoc_insertion_point(field_get:pg_query.TransactionStmt.kind) + return _internal_kind(); +} +inline void TransactionStmt::_internal_set_kind(::pg_query::TransactionStmtKind value) { + + kind_ = value; +} +inline void TransactionStmt::set_kind(::pg_query::TransactionStmtKind value) { + _internal_set_kind(value); + // @@protoc_insertion_point(field_set:pg_query.TransactionStmt.kind) +} + +// repeated .pg_query.Node options = 2 [json_name = "options"]; +inline int TransactionStmt::_internal_options_size() const { + return options_.size(); +} +inline int TransactionStmt::options_size() const { + return _internal_options_size(); +} +inline void TransactionStmt::clear_options() { + options_.Clear(); +} +inline ::pg_query::Node* TransactionStmt::mutable_options(int index) { + // @@protoc_insertion_point(field_mutable:pg_query.TransactionStmt.options) + return options_.Mutable(index); +} +inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* +TransactionStmt::mutable_options() { + // @@protoc_insertion_point(field_mutable_list:pg_query.TransactionStmt.options) + return &options_; +} +inline const ::pg_query::Node& TransactionStmt::_internal_options(int index) const { + return options_.Get(index); +} +inline const ::pg_query::Node& TransactionStmt::options(int index) const { + // @@protoc_insertion_point(field_get:pg_query.TransactionStmt.options) + return _internal_options(index); +} +inline ::pg_query::Node* TransactionStmt::_internal_add_options() { + return options_.Add(); +} +inline ::pg_query::Node* TransactionStmt::add_options() { + // @@protoc_insertion_point(field_add:pg_query.TransactionStmt.options) + return _internal_add_options(); +} +inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& +TransactionStmt::options() const { + // @@protoc_insertion_point(field_list:pg_query.TransactionStmt.options) + return options_; +} + +// string savepoint_name = 3 [json_name = "savepoint_name"]; +inline void TransactionStmt::clear_savepoint_name() { + savepoint_name_.ClearToEmpty(); +} +inline const std::string& TransactionStmt::savepoint_name() const { + // @@protoc_insertion_point(field_get:pg_query.TransactionStmt.savepoint_name) + return _internal_savepoint_name(); +} +inline void TransactionStmt::set_savepoint_name(const std::string& value) { + _internal_set_savepoint_name(value); + // @@protoc_insertion_point(field_set:pg_query.TransactionStmt.savepoint_name) +} +inline std::string* TransactionStmt::mutable_savepoint_name() { + // @@protoc_insertion_point(field_mutable:pg_query.TransactionStmt.savepoint_name) + return _internal_mutable_savepoint_name(); +} +inline const std::string& TransactionStmt::_internal_savepoint_name() const { + return savepoint_name_.Get(); +} +inline void TransactionStmt::_internal_set_savepoint_name(const std::string& value) { + + savepoint_name_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArena()); +} +inline void TransactionStmt::set_savepoint_name(std::string&& value) { + + savepoint_name_.Set( + ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::move(value), GetArena()); + // @@protoc_insertion_point(field_set_rvalue:pg_query.TransactionStmt.savepoint_name) +} +inline void TransactionStmt::set_savepoint_name(const char* value) { + GOOGLE_DCHECK(value != nullptr); + + savepoint_name_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string(value), GetArena()); + // @@protoc_insertion_point(field_set_char:pg_query.TransactionStmt.savepoint_name) +} +inline void TransactionStmt::set_savepoint_name(const char* value, + size_t size) { + + savepoint_name_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string( + reinterpret_cast(value), size), GetArena()); + // @@protoc_insertion_point(field_set_pointer:pg_query.TransactionStmt.savepoint_name) +} +inline std::string* TransactionStmt::_internal_mutable_savepoint_name() { + + return savepoint_name_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArena()); +} +inline std::string* TransactionStmt::release_savepoint_name() { + // @@protoc_insertion_point(field_release:pg_query.TransactionStmt.savepoint_name) + return savepoint_name_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); +} +inline void TransactionStmt::set_allocated_savepoint_name(std::string* savepoint_name) { + if (savepoint_name != nullptr) { + + } else { + + } + savepoint_name_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), savepoint_name, + GetArena()); + // @@protoc_insertion_point(field_set_allocated:pg_query.TransactionStmt.savepoint_name) +} + +// string gid = 4 [json_name = "gid"]; +inline void TransactionStmt::clear_gid() { + gid_.ClearToEmpty(); +} +inline const std::string& TransactionStmt::gid() const { + // @@protoc_insertion_point(field_get:pg_query.TransactionStmt.gid) + return _internal_gid(); +} +inline void TransactionStmt::set_gid(const std::string& value) { + _internal_set_gid(value); + // @@protoc_insertion_point(field_set:pg_query.TransactionStmt.gid) +} +inline std::string* TransactionStmt::mutable_gid() { + // @@protoc_insertion_point(field_mutable:pg_query.TransactionStmt.gid) + return _internal_mutable_gid(); +} +inline const std::string& TransactionStmt::_internal_gid() const { + return gid_.Get(); +} +inline void TransactionStmt::_internal_set_gid(const std::string& value) { + + gid_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArena()); +} +inline void TransactionStmt::set_gid(std::string&& value) { + + gid_.Set( + ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::move(value), GetArena()); + // @@protoc_insertion_point(field_set_rvalue:pg_query.TransactionStmt.gid) +} +inline void TransactionStmt::set_gid(const char* value) { + GOOGLE_DCHECK(value != nullptr); + + gid_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string(value), GetArena()); + // @@protoc_insertion_point(field_set_char:pg_query.TransactionStmt.gid) +} +inline void TransactionStmt::set_gid(const char* value, + size_t size) { + + gid_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string( + reinterpret_cast(value), size), GetArena()); + // @@protoc_insertion_point(field_set_pointer:pg_query.TransactionStmt.gid) +} +inline std::string* TransactionStmt::_internal_mutable_gid() { + + return gid_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArena()); +} +inline std::string* TransactionStmt::release_gid() { + // @@protoc_insertion_point(field_release:pg_query.TransactionStmt.gid) + return gid_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); +} +inline void TransactionStmt::set_allocated_gid(std::string* gid) { + if (gid != nullptr) { + + } else { + + } + gid_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), gid, + GetArena()); + // @@protoc_insertion_point(field_set_allocated:pg_query.TransactionStmt.gid) +} + +// bool chain = 5 [json_name = "chain"]; +inline void TransactionStmt::clear_chain() { + chain_ = false; +} +inline bool TransactionStmt::_internal_chain() const { + return chain_; +} +inline bool TransactionStmt::chain() const { + // @@protoc_insertion_point(field_get:pg_query.TransactionStmt.chain) + return _internal_chain(); +} +inline void TransactionStmt::_internal_set_chain(bool value) { + + chain_ = value; +} +inline void TransactionStmt::set_chain(bool value) { + _internal_set_chain(value); + // @@protoc_insertion_point(field_set:pg_query.TransactionStmt.chain) +} + +// ------------------------------------------------------------------- + +// ViewStmt + +// .pg_query.RangeVar view = 1 [json_name = "view"]; +inline bool ViewStmt::_internal_has_view() const { + return this != internal_default_instance() && view_ != nullptr; +} +inline bool ViewStmt::has_view() const { + return _internal_has_view(); +} +inline void ViewStmt::clear_view() { + if (GetArena() == nullptr && view_ != nullptr) { + delete view_; + } + view_ = nullptr; +} +inline const ::pg_query::RangeVar& ViewStmt::_internal_view() const { + const ::pg_query::RangeVar* p = view_; + return p != nullptr ? *p : reinterpret_cast( + ::pg_query::_RangeVar_default_instance_); +} +inline const ::pg_query::RangeVar& ViewStmt::view() const { + // @@protoc_insertion_point(field_get:pg_query.ViewStmt.view) + return _internal_view(); +} +inline void ViewStmt::unsafe_arena_set_allocated_view( + ::pg_query::RangeVar* view) { + if (GetArena() == nullptr) { + delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(view_); + } + view_ = view; + if (view) { + + } else { + + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.ViewStmt.view) +} +inline ::pg_query::RangeVar* ViewStmt::release_view() { + + ::pg_query::RangeVar* temp = view_; + view_ = nullptr; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + return temp; +} +inline ::pg_query::RangeVar* ViewStmt::unsafe_arena_release_view() { + // @@protoc_insertion_point(field_release:pg_query.ViewStmt.view) + + ::pg_query::RangeVar* temp = view_; + view_ = nullptr; + return temp; +} +inline ::pg_query::RangeVar* ViewStmt::_internal_mutable_view() { + + if (view_ == nullptr) { + auto* p = CreateMaybeMessage<::pg_query::RangeVar>(GetArena()); + view_ = p; + } + return view_; +} +inline ::pg_query::RangeVar* ViewStmt::mutable_view() { + // @@protoc_insertion_point(field_mutable:pg_query.ViewStmt.view) + return _internal_mutable_view(); +} +inline void ViewStmt::set_allocated_view(::pg_query::RangeVar* view) { + ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); + if (message_arena == nullptr) { + delete view_; + } + if (view) { + ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = + ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(view); + if (message_arena != submessage_arena) { + view = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( + message_arena, view, submessage_arena); + } + + } else { + + } + view_ = view; + // @@protoc_insertion_point(field_set_allocated:pg_query.ViewStmt.view) +} + +// repeated .pg_query.Node aliases = 2 [json_name = "aliases"]; +inline int ViewStmt::_internal_aliases_size() const { + return aliases_.size(); +} +inline int ViewStmt::aliases_size() const { + return _internal_aliases_size(); +} +inline void ViewStmt::clear_aliases() { + aliases_.Clear(); +} +inline ::pg_query::Node* ViewStmt::mutable_aliases(int index) { + // @@protoc_insertion_point(field_mutable:pg_query.ViewStmt.aliases) + return aliases_.Mutable(index); +} +inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* +ViewStmt::mutable_aliases() { + // @@protoc_insertion_point(field_mutable_list:pg_query.ViewStmt.aliases) + return &aliases_; +} +inline const ::pg_query::Node& ViewStmt::_internal_aliases(int index) const { + return aliases_.Get(index); +} +inline const ::pg_query::Node& ViewStmt::aliases(int index) const { + // @@protoc_insertion_point(field_get:pg_query.ViewStmt.aliases) + return _internal_aliases(index); +} +inline ::pg_query::Node* ViewStmt::_internal_add_aliases() { + return aliases_.Add(); +} +inline ::pg_query::Node* ViewStmt::add_aliases() { + // @@protoc_insertion_point(field_add:pg_query.ViewStmt.aliases) + return _internal_add_aliases(); +} +inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& +ViewStmt::aliases() const { + // @@protoc_insertion_point(field_list:pg_query.ViewStmt.aliases) + return aliases_; +} + +// .pg_query.Node query = 3 [json_name = "query"]; +inline bool ViewStmt::_internal_has_query() const { + return this != internal_default_instance() && query_ != nullptr; +} +inline bool ViewStmt::has_query() const { + return _internal_has_query(); +} +inline void ViewStmt::clear_query() { + if (GetArena() == nullptr && query_ != nullptr) { + delete query_; + } + query_ = nullptr; +} +inline const ::pg_query::Node& ViewStmt::_internal_query() const { + const ::pg_query::Node* p = query_; + return p != nullptr ? *p : reinterpret_cast( + ::pg_query::_Node_default_instance_); +} +inline const ::pg_query::Node& ViewStmt::query() const { + // @@protoc_insertion_point(field_get:pg_query.ViewStmt.query) + return _internal_query(); +} +inline void ViewStmt::unsafe_arena_set_allocated_query( + ::pg_query::Node* query) { + if (GetArena() == nullptr) { + delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(query_); + } + query_ = query; + if (query) { + + } else { + + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.ViewStmt.query) +} +inline ::pg_query::Node* ViewStmt::release_query() { + + ::pg_query::Node* temp = query_; + query_ = nullptr; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + return temp; +} +inline ::pg_query::Node* ViewStmt::unsafe_arena_release_query() { + // @@protoc_insertion_point(field_release:pg_query.ViewStmt.query) + + ::pg_query::Node* temp = query_; + query_ = nullptr; + return temp; +} +inline ::pg_query::Node* ViewStmt::_internal_mutable_query() { + + if (query_ == nullptr) { + auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); + query_ = p; + } + return query_; +} +inline ::pg_query::Node* ViewStmt::mutable_query() { + // @@protoc_insertion_point(field_mutable:pg_query.ViewStmt.query) + return _internal_mutable_query(); +} +inline void ViewStmt::set_allocated_query(::pg_query::Node* query) { + ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); + if (message_arena == nullptr) { + delete query_; + } + if (query) { + ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = + ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(query); + if (message_arena != submessage_arena) { + query = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( + message_arena, query, submessage_arena); + } + + } else { + + } + query_ = query; + // @@protoc_insertion_point(field_set_allocated:pg_query.ViewStmt.query) +} + +// bool replace = 4 [json_name = "replace"]; +inline void ViewStmt::clear_replace() { + replace_ = false; +} +inline bool ViewStmt::_internal_replace() const { + return replace_; +} +inline bool ViewStmt::replace() const { + // @@protoc_insertion_point(field_get:pg_query.ViewStmt.replace) + return _internal_replace(); +} +inline void ViewStmt::_internal_set_replace(bool value) { + + replace_ = value; +} +inline void ViewStmt::set_replace(bool value) { + _internal_set_replace(value); + // @@protoc_insertion_point(field_set:pg_query.ViewStmt.replace) +} + +// repeated .pg_query.Node options = 5 [json_name = "options"]; +inline int ViewStmt::_internal_options_size() const { + return options_.size(); +} +inline int ViewStmt::options_size() const { + return _internal_options_size(); +} +inline void ViewStmt::clear_options() { + options_.Clear(); +} +inline ::pg_query::Node* ViewStmt::mutable_options(int index) { + // @@protoc_insertion_point(field_mutable:pg_query.ViewStmt.options) + return options_.Mutable(index); +} +inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* +ViewStmt::mutable_options() { + // @@protoc_insertion_point(field_mutable_list:pg_query.ViewStmt.options) + return &options_; +} +inline const ::pg_query::Node& ViewStmt::_internal_options(int index) const { + return options_.Get(index); +} +inline const ::pg_query::Node& ViewStmt::options(int index) const { + // @@protoc_insertion_point(field_get:pg_query.ViewStmt.options) + return _internal_options(index); +} +inline ::pg_query::Node* ViewStmt::_internal_add_options() { + return options_.Add(); +} +inline ::pg_query::Node* ViewStmt::add_options() { + // @@protoc_insertion_point(field_add:pg_query.ViewStmt.options) + return _internal_add_options(); +} +inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& +ViewStmt::options() const { + // @@protoc_insertion_point(field_list:pg_query.ViewStmt.options) + return options_; +} + +// .pg_query.ViewCheckOption with_check_option = 6 [json_name = "withCheckOption"]; +inline void ViewStmt::clear_with_check_option() { + with_check_option_ = 0; +} +inline ::pg_query::ViewCheckOption ViewStmt::_internal_with_check_option() const { + return static_cast< ::pg_query::ViewCheckOption >(with_check_option_); +} +inline ::pg_query::ViewCheckOption ViewStmt::with_check_option() const { + // @@protoc_insertion_point(field_get:pg_query.ViewStmt.with_check_option) + return _internal_with_check_option(); +} +inline void ViewStmt::_internal_set_with_check_option(::pg_query::ViewCheckOption value) { + + with_check_option_ = value; +} +inline void ViewStmt::set_with_check_option(::pg_query::ViewCheckOption value) { + _internal_set_with_check_option(value); + // @@protoc_insertion_point(field_set:pg_query.ViewStmt.with_check_option) +} + +// ------------------------------------------------------------------- + +// LoadStmt + +// string filename = 1 [json_name = "filename"]; +inline void LoadStmt::clear_filename() { + filename_.ClearToEmpty(); +} +inline const std::string& LoadStmt::filename() const { + // @@protoc_insertion_point(field_get:pg_query.LoadStmt.filename) + return _internal_filename(); +} +inline void LoadStmt::set_filename(const std::string& value) { + _internal_set_filename(value); + // @@protoc_insertion_point(field_set:pg_query.LoadStmt.filename) +} +inline std::string* LoadStmt::mutable_filename() { + // @@protoc_insertion_point(field_mutable:pg_query.LoadStmt.filename) + return _internal_mutable_filename(); +} +inline const std::string& LoadStmt::_internal_filename() const { + return filename_.Get(); +} +inline void LoadStmt::_internal_set_filename(const std::string& value) { + + filename_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArena()); +} +inline void LoadStmt::set_filename(std::string&& value) { + + filename_.Set( + ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::move(value), GetArena()); + // @@protoc_insertion_point(field_set_rvalue:pg_query.LoadStmt.filename) +} +inline void LoadStmt::set_filename(const char* value) { + GOOGLE_DCHECK(value != nullptr); + + filename_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string(value), GetArena()); + // @@protoc_insertion_point(field_set_char:pg_query.LoadStmt.filename) +} +inline void LoadStmt::set_filename(const char* value, + size_t size) { + + filename_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string( + reinterpret_cast(value), size), GetArena()); + // @@protoc_insertion_point(field_set_pointer:pg_query.LoadStmt.filename) +} +inline std::string* LoadStmt::_internal_mutable_filename() { + + return filename_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArena()); +} +inline std::string* LoadStmt::release_filename() { + // @@protoc_insertion_point(field_release:pg_query.LoadStmt.filename) + return filename_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); +} +inline void LoadStmt::set_allocated_filename(std::string* filename) { + if (filename != nullptr) { + + } else { + + } + filename_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), filename, + GetArena()); + // @@protoc_insertion_point(field_set_allocated:pg_query.LoadStmt.filename) +} + +// ------------------------------------------------------------------- + +// CreateDomainStmt + +// repeated .pg_query.Node domainname = 1 [json_name = "domainname"]; +inline int CreateDomainStmt::_internal_domainname_size() const { + return domainname_.size(); +} +inline int CreateDomainStmt::domainname_size() const { + return _internal_domainname_size(); +} +inline void CreateDomainStmt::clear_domainname() { + domainname_.Clear(); +} +inline ::pg_query::Node* CreateDomainStmt::mutable_domainname(int index) { + // @@protoc_insertion_point(field_mutable:pg_query.CreateDomainStmt.domainname) + return domainname_.Mutable(index); +} +inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* +CreateDomainStmt::mutable_domainname() { + // @@protoc_insertion_point(field_mutable_list:pg_query.CreateDomainStmt.domainname) + return &domainname_; +} +inline const ::pg_query::Node& CreateDomainStmt::_internal_domainname(int index) const { + return domainname_.Get(index); +} +inline const ::pg_query::Node& CreateDomainStmt::domainname(int index) const { + // @@protoc_insertion_point(field_get:pg_query.CreateDomainStmt.domainname) + return _internal_domainname(index); +} +inline ::pg_query::Node* CreateDomainStmt::_internal_add_domainname() { + return domainname_.Add(); +} +inline ::pg_query::Node* CreateDomainStmt::add_domainname() { + // @@protoc_insertion_point(field_add:pg_query.CreateDomainStmt.domainname) + return _internal_add_domainname(); +} +inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& +CreateDomainStmt::domainname() const { + // @@protoc_insertion_point(field_list:pg_query.CreateDomainStmt.domainname) + return domainname_; +} + +// .pg_query.TypeName type_name = 2 [json_name = "typeName"]; +inline bool CreateDomainStmt::_internal_has_type_name() const { + return this != internal_default_instance() && type_name_ != nullptr; +} +inline bool CreateDomainStmt::has_type_name() const { + return _internal_has_type_name(); +} +inline void CreateDomainStmt::clear_type_name() { + if (GetArena() == nullptr && type_name_ != nullptr) { + delete type_name_; + } + type_name_ = nullptr; +} +inline const ::pg_query::TypeName& CreateDomainStmt::_internal_type_name() const { + const ::pg_query::TypeName* p = type_name_; + return p != nullptr ? *p : reinterpret_cast( + ::pg_query::_TypeName_default_instance_); +} +inline const ::pg_query::TypeName& CreateDomainStmt::type_name() const { + // @@protoc_insertion_point(field_get:pg_query.CreateDomainStmt.type_name) + return _internal_type_name(); +} +inline void CreateDomainStmt::unsafe_arena_set_allocated_type_name( + ::pg_query::TypeName* type_name) { + if (GetArena() == nullptr) { + delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(type_name_); + } + type_name_ = type_name; + if (type_name) { + + } else { + + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.CreateDomainStmt.type_name) +} +inline ::pg_query::TypeName* CreateDomainStmt::release_type_name() { + + ::pg_query::TypeName* temp = type_name_; + type_name_ = nullptr; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + return temp; +} +inline ::pg_query::TypeName* CreateDomainStmt::unsafe_arena_release_type_name() { + // @@protoc_insertion_point(field_release:pg_query.CreateDomainStmt.type_name) + + ::pg_query::TypeName* temp = type_name_; + type_name_ = nullptr; + return temp; +} +inline ::pg_query::TypeName* CreateDomainStmt::_internal_mutable_type_name() { + + if (type_name_ == nullptr) { + auto* p = CreateMaybeMessage<::pg_query::TypeName>(GetArena()); + type_name_ = p; + } + return type_name_; +} +inline ::pg_query::TypeName* CreateDomainStmt::mutable_type_name() { + // @@protoc_insertion_point(field_mutable:pg_query.CreateDomainStmt.type_name) + return _internal_mutable_type_name(); +} +inline void CreateDomainStmt::set_allocated_type_name(::pg_query::TypeName* type_name) { + ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); + if (message_arena == nullptr) { + delete type_name_; + } + if (type_name) { + ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = + ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(type_name); + if (message_arena != submessage_arena) { + type_name = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( + message_arena, type_name, submessage_arena); + } + + } else { + + } + type_name_ = type_name; + // @@protoc_insertion_point(field_set_allocated:pg_query.CreateDomainStmt.type_name) +} + +// .pg_query.CollateClause coll_clause = 3 [json_name = "collClause"]; +inline bool CreateDomainStmt::_internal_has_coll_clause() const { + return this != internal_default_instance() && coll_clause_ != nullptr; +} +inline bool CreateDomainStmt::has_coll_clause() const { + return _internal_has_coll_clause(); +} +inline void CreateDomainStmt::clear_coll_clause() { + if (GetArena() == nullptr && coll_clause_ != nullptr) { + delete coll_clause_; + } + coll_clause_ = nullptr; +} +inline const ::pg_query::CollateClause& CreateDomainStmt::_internal_coll_clause() const { + const ::pg_query::CollateClause* p = coll_clause_; + return p != nullptr ? *p : reinterpret_cast( + ::pg_query::_CollateClause_default_instance_); +} +inline const ::pg_query::CollateClause& CreateDomainStmt::coll_clause() const { + // @@protoc_insertion_point(field_get:pg_query.CreateDomainStmt.coll_clause) + return _internal_coll_clause(); +} +inline void CreateDomainStmt::unsafe_arena_set_allocated_coll_clause( + ::pg_query::CollateClause* coll_clause) { + if (GetArena() == nullptr) { + delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(coll_clause_); + } + coll_clause_ = coll_clause; + if (coll_clause) { + + } else { + + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.CreateDomainStmt.coll_clause) +} +inline ::pg_query::CollateClause* CreateDomainStmt::release_coll_clause() { + + ::pg_query::CollateClause* temp = coll_clause_; + coll_clause_ = nullptr; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + return temp; +} +inline ::pg_query::CollateClause* CreateDomainStmt::unsafe_arena_release_coll_clause() { + // @@protoc_insertion_point(field_release:pg_query.CreateDomainStmt.coll_clause) + + ::pg_query::CollateClause* temp = coll_clause_; + coll_clause_ = nullptr; + return temp; +} +inline ::pg_query::CollateClause* CreateDomainStmt::_internal_mutable_coll_clause() { + + if (coll_clause_ == nullptr) { + auto* p = CreateMaybeMessage<::pg_query::CollateClause>(GetArena()); + coll_clause_ = p; + } + return coll_clause_; +} +inline ::pg_query::CollateClause* CreateDomainStmt::mutable_coll_clause() { + // @@protoc_insertion_point(field_mutable:pg_query.CreateDomainStmt.coll_clause) + return _internal_mutable_coll_clause(); +} +inline void CreateDomainStmt::set_allocated_coll_clause(::pg_query::CollateClause* coll_clause) { + ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); + if (message_arena == nullptr) { + delete coll_clause_; + } + if (coll_clause) { + ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = + ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(coll_clause); + if (message_arena != submessage_arena) { + coll_clause = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( + message_arena, coll_clause, submessage_arena); + } + + } else { + + } + coll_clause_ = coll_clause; + // @@protoc_insertion_point(field_set_allocated:pg_query.CreateDomainStmt.coll_clause) +} + +// repeated .pg_query.Node constraints = 4 [json_name = "constraints"]; +inline int CreateDomainStmt::_internal_constraints_size() const { + return constraints_.size(); +} +inline int CreateDomainStmt::constraints_size() const { + return _internal_constraints_size(); +} +inline void CreateDomainStmt::clear_constraints() { + constraints_.Clear(); +} +inline ::pg_query::Node* CreateDomainStmt::mutable_constraints(int index) { + // @@protoc_insertion_point(field_mutable:pg_query.CreateDomainStmt.constraints) + return constraints_.Mutable(index); +} +inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* +CreateDomainStmt::mutable_constraints() { + // @@protoc_insertion_point(field_mutable_list:pg_query.CreateDomainStmt.constraints) + return &constraints_; +} +inline const ::pg_query::Node& CreateDomainStmt::_internal_constraints(int index) const { + return constraints_.Get(index); +} +inline const ::pg_query::Node& CreateDomainStmt::constraints(int index) const { + // @@protoc_insertion_point(field_get:pg_query.CreateDomainStmt.constraints) + return _internal_constraints(index); +} +inline ::pg_query::Node* CreateDomainStmt::_internal_add_constraints() { + return constraints_.Add(); +} +inline ::pg_query::Node* CreateDomainStmt::add_constraints() { + // @@protoc_insertion_point(field_add:pg_query.CreateDomainStmt.constraints) + return _internal_add_constraints(); +} +inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& +CreateDomainStmt::constraints() const { + // @@protoc_insertion_point(field_list:pg_query.CreateDomainStmt.constraints) + return constraints_; +} + +// ------------------------------------------------------------------- + +// CreatedbStmt + +// string dbname = 1 [json_name = "dbname"]; +inline void CreatedbStmt::clear_dbname() { + dbname_.ClearToEmpty(); +} +inline const std::string& CreatedbStmt::dbname() const { + // @@protoc_insertion_point(field_get:pg_query.CreatedbStmt.dbname) + return _internal_dbname(); +} +inline void CreatedbStmt::set_dbname(const std::string& value) { + _internal_set_dbname(value); + // @@protoc_insertion_point(field_set:pg_query.CreatedbStmt.dbname) +} +inline std::string* CreatedbStmt::mutable_dbname() { + // @@protoc_insertion_point(field_mutable:pg_query.CreatedbStmt.dbname) + return _internal_mutable_dbname(); +} +inline const std::string& CreatedbStmt::_internal_dbname() const { + return dbname_.Get(); +} +inline void CreatedbStmt::_internal_set_dbname(const std::string& value) { + + dbname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArena()); +} +inline void CreatedbStmt::set_dbname(std::string&& value) { + + dbname_.Set( + ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::move(value), GetArena()); + // @@protoc_insertion_point(field_set_rvalue:pg_query.CreatedbStmt.dbname) +} +inline void CreatedbStmt::set_dbname(const char* value) { + GOOGLE_DCHECK(value != nullptr); + + dbname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string(value), GetArena()); + // @@protoc_insertion_point(field_set_char:pg_query.CreatedbStmt.dbname) +} +inline void CreatedbStmt::set_dbname(const char* value, + size_t size) { + + dbname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string( + reinterpret_cast(value), size), GetArena()); + // @@protoc_insertion_point(field_set_pointer:pg_query.CreatedbStmt.dbname) +} +inline std::string* CreatedbStmt::_internal_mutable_dbname() { + + return dbname_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArena()); +} +inline std::string* CreatedbStmt::release_dbname() { + // @@protoc_insertion_point(field_release:pg_query.CreatedbStmt.dbname) + return dbname_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); +} +inline void CreatedbStmt::set_allocated_dbname(std::string* dbname) { + if (dbname != nullptr) { + + } else { + + } + dbname_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), dbname, + GetArena()); + // @@protoc_insertion_point(field_set_allocated:pg_query.CreatedbStmt.dbname) +} + +// repeated .pg_query.Node options = 2 [json_name = "options"]; +inline int CreatedbStmt::_internal_options_size() const { + return options_.size(); +} +inline int CreatedbStmt::options_size() const { + return _internal_options_size(); +} +inline void CreatedbStmt::clear_options() { + options_.Clear(); +} +inline ::pg_query::Node* CreatedbStmt::mutable_options(int index) { + // @@protoc_insertion_point(field_mutable:pg_query.CreatedbStmt.options) + return options_.Mutable(index); +} +inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* +CreatedbStmt::mutable_options() { + // @@protoc_insertion_point(field_mutable_list:pg_query.CreatedbStmt.options) + return &options_; +} +inline const ::pg_query::Node& CreatedbStmt::_internal_options(int index) const { + return options_.Get(index); +} +inline const ::pg_query::Node& CreatedbStmt::options(int index) const { + // @@protoc_insertion_point(field_get:pg_query.CreatedbStmt.options) + return _internal_options(index); +} +inline ::pg_query::Node* CreatedbStmt::_internal_add_options() { + return options_.Add(); +} +inline ::pg_query::Node* CreatedbStmt::add_options() { + // @@protoc_insertion_point(field_add:pg_query.CreatedbStmt.options) + return _internal_add_options(); +} +inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& +CreatedbStmt::options() const { + // @@protoc_insertion_point(field_list:pg_query.CreatedbStmt.options) + return options_; +} + +// ------------------------------------------------------------------- + +// DropdbStmt + +// string dbname = 1 [json_name = "dbname"]; +inline void DropdbStmt::clear_dbname() { + dbname_.ClearToEmpty(); +} +inline const std::string& DropdbStmt::dbname() const { + // @@protoc_insertion_point(field_get:pg_query.DropdbStmt.dbname) + return _internal_dbname(); +} +inline void DropdbStmt::set_dbname(const std::string& value) { + _internal_set_dbname(value); + // @@protoc_insertion_point(field_set:pg_query.DropdbStmt.dbname) +} +inline std::string* DropdbStmt::mutable_dbname() { + // @@protoc_insertion_point(field_mutable:pg_query.DropdbStmt.dbname) + return _internal_mutable_dbname(); +} +inline const std::string& DropdbStmt::_internal_dbname() const { + return dbname_.Get(); +} +inline void DropdbStmt::_internal_set_dbname(const std::string& value) { + + dbname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArena()); +} +inline void DropdbStmt::set_dbname(std::string&& value) { + + dbname_.Set( + ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::move(value), GetArena()); + // @@protoc_insertion_point(field_set_rvalue:pg_query.DropdbStmt.dbname) +} +inline void DropdbStmt::set_dbname(const char* value) { + GOOGLE_DCHECK(value != nullptr); + + dbname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string(value), GetArena()); + // @@protoc_insertion_point(field_set_char:pg_query.DropdbStmt.dbname) +} +inline void DropdbStmt::set_dbname(const char* value, + size_t size) { + + dbname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string( + reinterpret_cast(value), size), GetArena()); + // @@protoc_insertion_point(field_set_pointer:pg_query.DropdbStmt.dbname) +} +inline std::string* DropdbStmt::_internal_mutable_dbname() { + + return dbname_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArena()); +} +inline std::string* DropdbStmt::release_dbname() { + // @@protoc_insertion_point(field_release:pg_query.DropdbStmt.dbname) + return dbname_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); +} +inline void DropdbStmt::set_allocated_dbname(std::string* dbname) { + if (dbname != nullptr) { + + } else { + + } + dbname_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), dbname, + GetArena()); + // @@protoc_insertion_point(field_set_allocated:pg_query.DropdbStmt.dbname) +} + +// bool missing_ok = 2 [json_name = "missing_ok"]; +inline void DropdbStmt::clear_missing_ok() { + missing_ok_ = false; +} +inline bool DropdbStmt::_internal_missing_ok() const { + return missing_ok_; +} +inline bool DropdbStmt::missing_ok() const { + // @@protoc_insertion_point(field_get:pg_query.DropdbStmt.missing_ok) + return _internal_missing_ok(); +} +inline void DropdbStmt::_internal_set_missing_ok(bool value) { + + missing_ok_ = value; +} +inline void DropdbStmt::set_missing_ok(bool value) { + _internal_set_missing_ok(value); + // @@protoc_insertion_point(field_set:pg_query.DropdbStmt.missing_ok) +} + +// repeated .pg_query.Node options = 3 [json_name = "options"]; +inline int DropdbStmt::_internal_options_size() const { + return options_.size(); +} +inline int DropdbStmt::options_size() const { + return _internal_options_size(); +} +inline void DropdbStmt::clear_options() { + options_.Clear(); +} +inline ::pg_query::Node* DropdbStmt::mutable_options(int index) { + // @@protoc_insertion_point(field_mutable:pg_query.DropdbStmt.options) + return options_.Mutable(index); +} +inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* +DropdbStmt::mutable_options() { + // @@protoc_insertion_point(field_mutable_list:pg_query.DropdbStmt.options) + return &options_; +} +inline const ::pg_query::Node& DropdbStmt::_internal_options(int index) const { + return options_.Get(index); +} +inline const ::pg_query::Node& DropdbStmt::options(int index) const { + // @@protoc_insertion_point(field_get:pg_query.DropdbStmt.options) + return _internal_options(index); +} +inline ::pg_query::Node* DropdbStmt::_internal_add_options() { + return options_.Add(); +} +inline ::pg_query::Node* DropdbStmt::add_options() { + // @@protoc_insertion_point(field_add:pg_query.DropdbStmt.options) + return _internal_add_options(); +} +inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& +DropdbStmt::options() const { + // @@protoc_insertion_point(field_list:pg_query.DropdbStmt.options) + return options_; +} + +// ------------------------------------------------------------------- + +// VacuumStmt + +// repeated .pg_query.Node options = 1 [json_name = "options"]; +inline int VacuumStmt::_internal_options_size() const { + return options_.size(); +} +inline int VacuumStmt::options_size() const { + return _internal_options_size(); +} +inline void VacuumStmt::clear_options() { + options_.Clear(); +} +inline ::pg_query::Node* VacuumStmt::mutable_options(int index) { + // @@protoc_insertion_point(field_mutable:pg_query.VacuumStmt.options) + return options_.Mutable(index); +} +inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* +VacuumStmt::mutable_options() { + // @@protoc_insertion_point(field_mutable_list:pg_query.VacuumStmt.options) + return &options_; +} +inline const ::pg_query::Node& VacuumStmt::_internal_options(int index) const { + return options_.Get(index); +} +inline const ::pg_query::Node& VacuumStmt::options(int index) const { + // @@protoc_insertion_point(field_get:pg_query.VacuumStmt.options) + return _internal_options(index); +} +inline ::pg_query::Node* VacuumStmt::_internal_add_options() { + return options_.Add(); +} +inline ::pg_query::Node* VacuumStmt::add_options() { + // @@protoc_insertion_point(field_add:pg_query.VacuumStmt.options) + return _internal_add_options(); +} +inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& +VacuumStmt::options() const { + // @@protoc_insertion_point(field_list:pg_query.VacuumStmt.options) + return options_; +} + +// repeated .pg_query.Node rels = 2 [json_name = "rels"]; +inline int VacuumStmt::_internal_rels_size() const { + return rels_.size(); +} +inline int VacuumStmt::rels_size() const { + return _internal_rels_size(); +} +inline void VacuumStmt::clear_rels() { + rels_.Clear(); +} +inline ::pg_query::Node* VacuumStmt::mutable_rels(int index) { + // @@protoc_insertion_point(field_mutable:pg_query.VacuumStmt.rels) + return rels_.Mutable(index); +} +inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* +VacuumStmt::mutable_rels() { + // @@protoc_insertion_point(field_mutable_list:pg_query.VacuumStmt.rels) + return &rels_; +} +inline const ::pg_query::Node& VacuumStmt::_internal_rels(int index) const { + return rels_.Get(index); +} +inline const ::pg_query::Node& VacuumStmt::rels(int index) const { + // @@protoc_insertion_point(field_get:pg_query.VacuumStmt.rels) + return _internal_rels(index); +} +inline ::pg_query::Node* VacuumStmt::_internal_add_rels() { + return rels_.Add(); +} +inline ::pg_query::Node* VacuumStmt::add_rels() { + // @@protoc_insertion_point(field_add:pg_query.VacuumStmt.rels) + return _internal_add_rels(); +} +inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& +VacuumStmt::rels() const { + // @@protoc_insertion_point(field_list:pg_query.VacuumStmt.rels) + return rels_; +} + +// bool is_vacuumcmd = 3 [json_name = "is_vacuumcmd"]; +inline void VacuumStmt::clear_is_vacuumcmd() { + is_vacuumcmd_ = false; +} +inline bool VacuumStmt::_internal_is_vacuumcmd() const { + return is_vacuumcmd_; +} +inline bool VacuumStmt::is_vacuumcmd() const { + // @@protoc_insertion_point(field_get:pg_query.VacuumStmt.is_vacuumcmd) + return _internal_is_vacuumcmd(); +} +inline void VacuumStmt::_internal_set_is_vacuumcmd(bool value) { + + is_vacuumcmd_ = value; +} +inline void VacuumStmt::set_is_vacuumcmd(bool value) { + _internal_set_is_vacuumcmd(value); + // @@protoc_insertion_point(field_set:pg_query.VacuumStmt.is_vacuumcmd) +} + +// ------------------------------------------------------------------- + +// ExplainStmt + +// .pg_query.Node query = 1 [json_name = "query"]; +inline bool ExplainStmt::_internal_has_query() const { + return this != internal_default_instance() && query_ != nullptr; +} +inline bool ExplainStmt::has_query() const { + return _internal_has_query(); +} +inline void ExplainStmt::clear_query() { + if (GetArena() == nullptr && query_ != nullptr) { + delete query_; + } + query_ = nullptr; +} +inline const ::pg_query::Node& ExplainStmt::_internal_query() const { + const ::pg_query::Node* p = query_; + return p != nullptr ? *p : reinterpret_cast( + ::pg_query::_Node_default_instance_); +} +inline const ::pg_query::Node& ExplainStmt::query() const { + // @@protoc_insertion_point(field_get:pg_query.ExplainStmt.query) + return _internal_query(); +} +inline void ExplainStmt::unsafe_arena_set_allocated_query( + ::pg_query::Node* query) { + if (GetArena() == nullptr) { + delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(query_); + } + query_ = query; + if (query) { + + } else { + + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.ExplainStmt.query) +} +inline ::pg_query::Node* ExplainStmt::release_query() { + + ::pg_query::Node* temp = query_; + query_ = nullptr; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + return temp; +} +inline ::pg_query::Node* ExplainStmt::unsafe_arena_release_query() { + // @@protoc_insertion_point(field_release:pg_query.ExplainStmt.query) + + ::pg_query::Node* temp = query_; + query_ = nullptr; + return temp; +} +inline ::pg_query::Node* ExplainStmt::_internal_mutable_query() { + + if (query_ == nullptr) { + auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); + query_ = p; + } + return query_; +} +inline ::pg_query::Node* ExplainStmt::mutable_query() { + // @@protoc_insertion_point(field_mutable:pg_query.ExplainStmt.query) + return _internal_mutable_query(); +} +inline void ExplainStmt::set_allocated_query(::pg_query::Node* query) { + ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); + if (message_arena == nullptr) { + delete query_; + } + if (query) { + ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = + ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(query); + if (message_arena != submessage_arena) { + query = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( + message_arena, query, submessage_arena); + } + + } else { + + } + query_ = query; + // @@protoc_insertion_point(field_set_allocated:pg_query.ExplainStmt.query) +} + +// repeated .pg_query.Node options = 2 [json_name = "options"]; +inline int ExplainStmt::_internal_options_size() const { + return options_.size(); +} +inline int ExplainStmt::options_size() const { + return _internal_options_size(); +} +inline void ExplainStmt::clear_options() { + options_.Clear(); +} +inline ::pg_query::Node* ExplainStmt::mutable_options(int index) { + // @@protoc_insertion_point(field_mutable:pg_query.ExplainStmt.options) + return options_.Mutable(index); +} +inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* +ExplainStmt::mutable_options() { + // @@protoc_insertion_point(field_mutable_list:pg_query.ExplainStmt.options) + return &options_; +} +inline const ::pg_query::Node& ExplainStmt::_internal_options(int index) const { + return options_.Get(index); +} +inline const ::pg_query::Node& ExplainStmt::options(int index) const { + // @@protoc_insertion_point(field_get:pg_query.ExplainStmt.options) + return _internal_options(index); +} +inline ::pg_query::Node* ExplainStmt::_internal_add_options() { + return options_.Add(); +} +inline ::pg_query::Node* ExplainStmt::add_options() { + // @@protoc_insertion_point(field_add:pg_query.ExplainStmt.options) + return _internal_add_options(); +} +inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& +ExplainStmt::options() const { + // @@protoc_insertion_point(field_list:pg_query.ExplainStmt.options) + return options_; +} + +// ------------------------------------------------------------------- + +// CreateTableAsStmt + +// .pg_query.Node query = 1 [json_name = "query"]; +inline bool CreateTableAsStmt::_internal_has_query() const { + return this != internal_default_instance() && query_ != nullptr; +} +inline bool CreateTableAsStmt::has_query() const { + return _internal_has_query(); +} +inline void CreateTableAsStmt::clear_query() { + if (GetArena() == nullptr && query_ != nullptr) { + delete query_; + } + query_ = nullptr; +} +inline const ::pg_query::Node& CreateTableAsStmt::_internal_query() const { + const ::pg_query::Node* p = query_; + return p != nullptr ? *p : reinterpret_cast( + ::pg_query::_Node_default_instance_); +} +inline const ::pg_query::Node& CreateTableAsStmt::query() const { + // @@protoc_insertion_point(field_get:pg_query.CreateTableAsStmt.query) + return _internal_query(); +} +inline void CreateTableAsStmt::unsafe_arena_set_allocated_query( + ::pg_query::Node* query) { + if (GetArena() == nullptr) { + delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(query_); + } + query_ = query; + if (query) { + + } else { + + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.CreateTableAsStmt.query) +} +inline ::pg_query::Node* CreateTableAsStmt::release_query() { + + ::pg_query::Node* temp = query_; + query_ = nullptr; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + return temp; +} +inline ::pg_query::Node* CreateTableAsStmt::unsafe_arena_release_query() { + // @@protoc_insertion_point(field_release:pg_query.CreateTableAsStmt.query) + + ::pg_query::Node* temp = query_; + query_ = nullptr; + return temp; +} +inline ::pg_query::Node* CreateTableAsStmt::_internal_mutable_query() { + + if (query_ == nullptr) { + auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); + query_ = p; + } + return query_; +} +inline ::pg_query::Node* CreateTableAsStmt::mutable_query() { + // @@protoc_insertion_point(field_mutable:pg_query.CreateTableAsStmt.query) + return _internal_mutable_query(); +} +inline void CreateTableAsStmt::set_allocated_query(::pg_query::Node* query) { + ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); + if (message_arena == nullptr) { + delete query_; + } + if (query) { + ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = + ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(query); + if (message_arena != submessage_arena) { + query = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( + message_arena, query, submessage_arena); + } + + } else { + + } + query_ = query; + // @@protoc_insertion_point(field_set_allocated:pg_query.CreateTableAsStmt.query) +} + +// .pg_query.IntoClause into = 2 [json_name = "into"]; +inline bool CreateTableAsStmt::_internal_has_into() const { + return this != internal_default_instance() && into_ != nullptr; +} +inline bool CreateTableAsStmt::has_into() const { + return _internal_has_into(); +} +inline void CreateTableAsStmt::clear_into() { + if (GetArena() == nullptr && into_ != nullptr) { + delete into_; + } + into_ = nullptr; +} +inline const ::pg_query::IntoClause& CreateTableAsStmt::_internal_into() const { + const ::pg_query::IntoClause* p = into_; + return p != nullptr ? *p : reinterpret_cast( + ::pg_query::_IntoClause_default_instance_); +} +inline const ::pg_query::IntoClause& CreateTableAsStmt::into() const { + // @@protoc_insertion_point(field_get:pg_query.CreateTableAsStmt.into) + return _internal_into(); +} +inline void CreateTableAsStmt::unsafe_arena_set_allocated_into( + ::pg_query::IntoClause* into) { + if (GetArena() == nullptr) { + delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(into_); + } + into_ = into; + if (into) { + + } else { + + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.CreateTableAsStmt.into) +} +inline ::pg_query::IntoClause* CreateTableAsStmt::release_into() { + + ::pg_query::IntoClause* temp = into_; + into_ = nullptr; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + return temp; +} +inline ::pg_query::IntoClause* CreateTableAsStmt::unsafe_arena_release_into() { + // @@protoc_insertion_point(field_release:pg_query.CreateTableAsStmt.into) + + ::pg_query::IntoClause* temp = into_; + into_ = nullptr; + return temp; +} +inline ::pg_query::IntoClause* CreateTableAsStmt::_internal_mutable_into() { + + if (into_ == nullptr) { + auto* p = CreateMaybeMessage<::pg_query::IntoClause>(GetArena()); + into_ = p; + } + return into_; +} +inline ::pg_query::IntoClause* CreateTableAsStmt::mutable_into() { + // @@protoc_insertion_point(field_mutable:pg_query.CreateTableAsStmt.into) + return _internal_mutable_into(); +} +inline void CreateTableAsStmt::set_allocated_into(::pg_query::IntoClause* into) { + ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); + if (message_arena == nullptr) { + delete into_; + } + if (into) { + ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = + ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(into); + if (message_arena != submessage_arena) { + into = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( + message_arena, into, submessage_arena); + } + + } else { + + } + into_ = into; + // @@protoc_insertion_point(field_set_allocated:pg_query.CreateTableAsStmt.into) +} + +// .pg_query.ObjectType relkind = 3 [json_name = "relkind"]; +inline void CreateTableAsStmt::clear_relkind() { + relkind_ = 0; +} +inline ::pg_query::ObjectType CreateTableAsStmt::_internal_relkind() const { + return static_cast< ::pg_query::ObjectType >(relkind_); +} +inline ::pg_query::ObjectType CreateTableAsStmt::relkind() const { + // @@protoc_insertion_point(field_get:pg_query.CreateTableAsStmt.relkind) + return _internal_relkind(); +} +inline void CreateTableAsStmt::_internal_set_relkind(::pg_query::ObjectType value) { + + relkind_ = value; +} +inline void CreateTableAsStmt::set_relkind(::pg_query::ObjectType value) { + _internal_set_relkind(value); + // @@protoc_insertion_point(field_set:pg_query.CreateTableAsStmt.relkind) +} + +// bool is_select_into = 4 [json_name = "is_select_into"]; +inline void CreateTableAsStmt::clear_is_select_into() { + is_select_into_ = false; +} +inline bool CreateTableAsStmt::_internal_is_select_into() const { + return is_select_into_; +} +inline bool CreateTableAsStmt::is_select_into() const { + // @@protoc_insertion_point(field_get:pg_query.CreateTableAsStmt.is_select_into) + return _internal_is_select_into(); +} +inline void CreateTableAsStmt::_internal_set_is_select_into(bool value) { + + is_select_into_ = value; +} +inline void CreateTableAsStmt::set_is_select_into(bool value) { + _internal_set_is_select_into(value); + // @@protoc_insertion_point(field_set:pg_query.CreateTableAsStmt.is_select_into) +} + +// bool if_not_exists = 5 [json_name = "if_not_exists"]; +inline void CreateTableAsStmt::clear_if_not_exists() { + if_not_exists_ = false; +} +inline bool CreateTableAsStmt::_internal_if_not_exists() const { + return if_not_exists_; +} +inline bool CreateTableAsStmt::if_not_exists() const { + // @@protoc_insertion_point(field_get:pg_query.CreateTableAsStmt.if_not_exists) + return _internal_if_not_exists(); +} +inline void CreateTableAsStmt::_internal_set_if_not_exists(bool value) { + + if_not_exists_ = value; +} +inline void CreateTableAsStmt::set_if_not_exists(bool value) { + _internal_set_if_not_exists(value); + // @@protoc_insertion_point(field_set:pg_query.CreateTableAsStmt.if_not_exists) +} + +// ------------------------------------------------------------------- + +// CreateSeqStmt + +// .pg_query.RangeVar sequence = 1 [json_name = "sequence"]; +inline bool CreateSeqStmt::_internal_has_sequence() const { + return this != internal_default_instance() && sequence_ != nullptr; +} +inline bool CreateSeqStmt::has_sequence() const { + return _internal_has_sequence(); +} +inline void CreateSeqStmt::clear_sequence() { + if (GetArena() == nullptr && sequence_ != nullptr) { + delete sequence_; + } + sequence_ = nullptr; +} +inline const ::pg_query::RangeVar& CreateSeqStmt::_internal_sequence() const { + const ::pg_query::RangeVar* p = sequence_; + return p != nullptr ? *p : reinterpret_cast( + ::pg_query::_RangeVar_default_instance_); +} +inline const ::pg_query::RangeVar& CreateSeqStmt::sequence() const { + // @@protoc_insertion_point(field_get:pg_query.CreateSeqStmt.sequence) + return _internal_sequence(); +} +inline void CreateSeqStmt::unsafe_arena_set_allocated_sequence( + ::pg_query::RangeVar* sequence) { + if (GetArena() == nullptr) { + delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(sequence_); + } + sequence_ = sequence; + if (sequence) { + + } else { + + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.CreateSeqStmt.sequence) +} +inline ::pg_query::RangeVar* CreateSeqStmt::release_sequence() { + + ::pg_query::RangeVar* temp = sequence_; + sequence_ = nullptr; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + return temp; +} +inline ::pg_query::RangeVar* CreateSeqStmt::unsafe_arena_release_sequence() { + // @@protoc_insertion_point(field_release:pg_query.CreateSeqStmt.sequence) + + ::pg_query::RangeVar* temp = sequence_; + sequence_ = nullptr; + return temp; +} +inline ::pg_query::RangeVar* CreateSeqStmt::_internal_mutable_sequence() { + + if (sequence_ == nullptr) { + auto* p = CreateMaybeMessage<::pg_query::RangeVar>(GetArena()); + sequence_ = p; + } + return sequence_; +} +inline ::pg_query::RangeVar* CreateSeqStmt::mutable_sequence() { + // @@protoc_insertion_point(field_mutable:pg_query.CreateSeqStmt.sequence) + return _internal_mutable_sequence(); +} +inline void CreateSeqStmt::set_allocated_sequence(::pg_query::RangeVar* sequence) { + ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); + if (message_arena == nullptr) { + delete sequence_; + } + if (sequence) { + ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = + ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(sequence); + if (message_arena != submessage_arena) { + sequence = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( + message_arena, sequence, submessage_arena); + } + + } else { + + } + sequence_ = sequence; + // @@protoc_insertion_point(field_set_allocated:pg_query.CreateSeqStmt.sequence) +} + +// repeated .pg_query.Node options = 2 [json_name = "options"]; +inline int CreateSeqStmt::_internal_options_size() const { + return options_.size(); +} +inline int CreateSeqStmt::options_size() const { + return _internal_options_size(); +} +inline void CreateSeqStmt::clear_options() { + options_.Clear(); +} +inline ::pg_query::Node* CreateSeqStmt::mutable_options(int index) { + // @@protoc_insertion_point(field_mutable:pg_query.CreateSeqStmt.options) + return options_.Mutable(index); +} +inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* +CreateSeqStmt::mutable_options() { + // @@protoc_insertion_point(field_mutable_list:pg_query.CreateSeqStmt.options) + return &options_; +} +inline const ::pg_query::Node& CreateSeqStmt::_internal_options(int index) const { + return options_.Get(index); +} +inline const ::pg_query::Node& CreateSeqStmt::options(int index) const { + // @@protoc_insertion_point(field_get:pg_query.CreateSeqStmt.options) + return _internal_options(index); +} +inline ::pg_query::Node* CreateSeqStmt::_internal_add_options() { + return options_.Add(); +} +inline ::pg_query::Node* CreateSeqStmt::add_options() { + // @@protoc_insertion_point(field_add:pg_query.CreateSeqStmt.options) + return _internal_add_options(); +} +inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& +CreateSeqStmt::options() const { + // @@protoc_insertion_point(field_list:pg_query.CreateSeqStmt.options) + return options_; +} + +// uint32 owner_id = 3 [json_name = "ownerId"]; +inline void CreateSeqStmt::clear_owner_id() { + owner_id_ = 0u; +} +inline ::PROTOBUF_NAMESPACE_ID::uint32 CreateSeqStmt::_internal_owner_id() const { + return owner_id_; +} +inline ::PROTOBUF_NAMESPACE_ID::uint32 CreateSeqStmt::owner_id() const { + // @@protoc_insertion_point(field_get:pg_query.CreateSeqStmt.owner_id) + return _internal_owner_id(); +} +inline void CreateSeqStmt::_internal_set_owner_id(::PROTOBUF_NAMESPACE_ID::uint32 value) { + + owner_id_ = value; +} +inline void CreateSeqStmt::set_owner_id(::PROTOBUF_NAMESPACE_ID::uint32 value) { + _internal_set_owner_id(value); + // @@protoc_insertion_point(field_set:pg_query.CreateSeqStmt.owner_id) +} + +// bool for_identity = 4 [json_name = "for_identity"]; +inline void CreateSeqStmt::clear_for_identity() { + for_identity_ = false; +} +inline bool CreateSeqStmt::_internal_for_identity() const { + return for_identity_; +} +inline bool CreateSeqStmt::for_identity() const { + // @@protoc_insertion_point(field_get:pg_query.CreateSeqStmt.for_identity) + return _internal_for_identity(); +} +inline void CreateSeqStmt::_internal_set_for_identity(bool value) { + + for_identity_ = value; +} +inline void CreateSeqStmt::set_for_identity(bool value) { + _internal_set_for_identity(value); + // @@protoc_insertion_point(field_set:pg_query.CreateSeqStmt.for_identity) +} + +// bool if_not_exists = 5 [json_name = "if_not_exists"]; +inline void CreateSeqStmt::clear_if_not_exists() { + if_not_exists_ = false; +} +inline bool CreateSeqStmt::_internal_if_not_exists() const { + return if_not_exists_; +} +inline bool CreateSeqStmt::if_not_exists() const { + // @@protoc_insertion_point(field_get:pg_query.CreateSeqStmt.if_not_exists) + return _internal_if_not_exists(); +} +inline void CreateSeqStmt::_internal_set_if_not_exists(bool value) { + + if_not_exists_ = value; +} +inline void CreateSeqStmt::set_if_not_exists(bool value) { + _internal_set_if_not_exists(value); + // @@protoc_insertion_point(field_set:pg_query.CreateSeqStmt.if_not_exists) +} + +// ------------------------------------------------------------------- + +// AlterSeqStmt + +// .pg_query.RangeVar sequence = 1 [json_name = "sequence"]; +inline bool AlterSeqStmt::_internal_has_sequence() const { + return this != internal_default_instance() && sequence_ != nullptr; +} +inline bool AlterSeqStmt::has_sequence() const { + return _internal_has_sequence(); +} +inline void AlterSeqStmt::clear_sequence() { + if (GetArena() == nullptr && sequence_ != nullptr) { + delete sequence_; + } + sequence_ = nullptr; +} +inline const ::pg_query::RangeVar& AlterSeqStmt::_internal_sequence() const { + const ::pg_query::RangeVar* p = sequence_; + return p != nullptr ? *p : reinterpret_cast( + ::pg_query::_RangeVar_default_instance_); +} +inline const ::pg_query::RangeVar& AlterSeqStmt::sequence() const { + // @@protoc_insertion_point(field_get:pg_query.AlterSeqStmt.sequence) + return _internal_sequence(); +} +inline void AlterSeqStmt::unsafe_arena_set_allocated_sequence( + ::pg_query::RangeVar* sequence) { + if (GetArena() == nullptr) { + delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(sequence_); + } + sequence_ = sequence; + if (sequence) { + + } else { + + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.AlterSeqStmt.sequence) +} +inline ::pg_query::RangeVar* AlterSeqStmt::release_sequence() { + + ::pg_query::RangeVar* temp = sequence_; + sequence_ = nullptr; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + return temp; +} +inline ::pg_query::RangeVar* AlterSeqStmt::unsafe_arena_release_sequence() { + // @@protoc_insertion_point(field_release:pg_query.AlterSeqStmt.sequence) + + ::pg_query::RangeVar* temp = sequence_; + sequence_ = nullptr; + return temp; +} +inline ::pg_query::RangeVar* AlterSeqStmt::_internal_mutable_sequence() { + + if (sequence_ == nullptr) { + auto* p = CreateMaybeMessage<::pg_query::RangeVar>(GetArena()); + sequence_ = p; + } + return sequence_; +} +inline ::pg_query::RangeVar* AlterSeqStmt::mutable_sequence() { + // @@protoc_insertion_point(field_mutable:pg_query.AlterSeqStmt.sequence) + return _internal_mutable_sequence(); +} +inline void AlterSeqStmt::set_allocated_sequence(::pg_query::RangeVar* sequence) { + ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); + if (message_arena == nullptr) { + delete sequence_; + } + if (sequence) { + ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = + ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(sequence); + if (message_arena != submessage_arena) { + sequence = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( + message_arena, sequence, submessage_arena); + } + + } else { + + } + sequence_ = sequence; + // @@protoc_insertion_point(field_set_allocated:pg_query.AlterSeqStmt.sequence) +} + +// repeated .pg_query.Node options = 2 [json_name = "options"]; +inline int AlterSeqStmt::_internal_options_size() const { + return options_.size(); +} +inline int AlterSeqStmt::options_size() const { + return _internal_options_size(); +} +inline void AlterSeqStmt::clear_options() { + options_.Clear(); +} +inline ::pg_query::Node* AlterSeqStmt::mutable_options(int index) { + // @@protoc_insertion_point(field_mutable:pg_query.AlterSeqStmt.options) + return options_.Mutable(index); +} +inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* +AlterSeqStmt::mutable_options() { + // @@protoc_insertion_point(field_mutable_list:pg_query.AlterSeqStmt.options) + return &options_; +} +inline const ::pg_query::Node& AlterSeqStmt::_internal_options(int index) const { + return options_.Get(index); +} +inline const ::pg_query::Node& AlterSeqStmt::options(int index) const { + // @@protoc_insertion_point(field_get:pg_query.AlterSeqStmt.options) + return _internal_options(index); +} +inline ::pg_query::Node* AlterSeqStmt::_internal_add_options() { + return options_.Add(); +} +inline ::pg_query::Node* AlterSeqStmt::add_options() { + // @@protoc_insertion_point(field_add:pg_query.AlterSeqStmt.options) + return _internal_add_options(); +} +inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& +AlterSeqStmt::options() const { + // @@protoc_insertion_point(field_list:pg_query.AlterSeqStmt.options) + return options_; +} + +// bool for_identity = 3 [json_name = "for_identity"]; +inline void AlterSeqStmt::clear_for_identity() { + for_identity_ = false; +} +inline bool AlterSeqStmt::_internal_for_identity() const { + return for_identity_; +} +inline bool AlterSeqStmt::for_identity() const { + // @@protoc_insertion_point(field_get:pg_query.AlterSeqStmt.for_identity) + return _internal_for_identity(); +} +inline void AlterSeqStmt::_internal_set_for_identity(bool value) { + + for_identity_ = value; +} +inline void AlterSeqStmt::set_for_identity(bool value) { + _internal_set_for_identity(value); + // @@protoc_insertion_point(field_set:pg_query.AlterSeqStmt.for_identity) +} + +// bool missing_ok = 4 [json_name = "missing_ok"]; +inline void AlterSeqStmt::clear_missing_ok() { + missing_ok_ = false; +} +inline bool AlterSeqStmt::_internal_missing_ok() const { + return missing_ok_; +} +inline bool AlterSeqStmt::missing_ok() const { + // @@protoc_insertion_point(field_get:pg_query.AlterSeqStmt.missing_ok) + return _internal_missing_ok(); +} +inline void AlterSeqStmt::_internal_set_missing_ok(bool value) { + + missing_ok_ = value; +} +inline void AlterSeqStmt::set_missing_ok(bool value) { + _internal_set_missing_ok(value); + // @@protoc_insertion_point(field_set:pg_query.AlterSeqStmt.missing_ok) +} + +// ------------------------------------------------------------------- + +// VariableSetStmt + +// .pg_query.VariableSetKind kind = 1 [json_name = "kind"]; +inline void VariableSetStmt::clear_kind() { + kind_ = 0; +} +inline ::pg_query::VariableSetKind VariableSetStmt::_internal_kind() const { + return static_cast< ::pg_query::VariableSetKind >(kind_); +} +inline ::pg_query::VariableSetKind VariableSetStmt::kind() const { + // @@protoc_insertion_point(field_get:pg_query.VariableSetStmt.kind) + return _internal_kind(); +} +inline void VariableSetStmt::_internal_set_kind(::pg_query::VariableSetKind value) { + + kind_ = value; +} +inline void VariableSetStmt::set_kind(::pg_query::VariableSetKind value) { + _internal_set_kind(value); + // @@protoc_insertion_point(field_set:pg_query.VariableSetStmt.kind) +} + +// string name = 2 [json_name = "name"]; +inline void VariableSetStmt::clear_name() { + name_.ClearToEmpty(); +} +inline const std::string& VariableSetStmt::name() const { + // @@protoc_insertion_point(field_get:pg_query.VariableSetStmt.name) + return _internal_name(); +} +inline void VariableSetStmt::set_name(const std::string& value) { + _internal_set_name(value); + // @@protoc_insertion_point(field_set:pg_query.VariableSetStmt.name) +} +inline std::string* VariableSetStmt::mutable_name() { + // @@protoc_insertion_point(field_mutable:pg_query.VariableSetStmt.name) + return _internal_mutable_name(); +} +inline const std::string& VariableSetStmt::_internal_name() const { + return name_.Get(); +} +inline void VariableSetStmt::_internal_set_name(const std::string& value) { + + name_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArena()); +} +inline void VariableSetStmt::set_name(std::string&& value) { + + name_.Set( + ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::move(value), GetArena()); + // @@protoc_insertion_point(field_set_rvalue:pg_query.VariableSetStmt.name) +} +inline void VariableSetStmt::set_name(const char* value) { + GOOGLE_DCHECK(value != nullptr); + + name_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string(value), GetArena()); + // @@protoc_insertion_point(field_set_char:pg_query.VariableSetStmt.name) +} +inline void VariableSetStmt::set_name(const char* value, + size_t size) { + + name_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string( + reinterpret_cast(value), size), GetArena()); + // @@protoc_insertion_point(field_set_pointer:pg_query.VariableSetStmt.name) +} +inline std::string* VariableSetStmt::_internal_mutable_name() { + + return name_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArena()); +} +inline std::string* VariableSetStmt::release_name() { + // @@protoc_insertion_point(field_release:pg_query.VariableSetStmt.name) + return name_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); +} +inline void VariableSetStmt::set_allocated_name(std::string* name) { + if (name != nullptr) { + + } else { + + } + name_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), name, + GetArena()); + // @@protoc_insertion_point(field_set_allocated:pg_query.VariableSetStmt.name) +} + +// repeated .pg_query.Node args = 3 [json_name = "args"]; +inline int VariableSetStmt::_internal_args_size() const { + return args_.size(); +} +inline int VariableSetStmt::args_size() const { + return _internal_args_size(); +} +inline void VariableSetStmt::clear_args() { + args_.Clear(); +} +inline ::pg_query::Node* VariableSetStmt::mutable_args(int index) { + // @@protoc_insertion_point(field_mutable:pg_query.VariableSetStmt.args) + return args_.Mutable(index); +} +inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* +VariableSetStmt::mutable_args() { + // @@protoc_insertion_point(field_mutable_list:pg_query.VariableSetStmt.args) + return &args_; +} +inline const ::pg_query::Node& VariableSetStmt::_internal_args(int index) const { + return args_.Get(index); +} +inline const ::pg_query::Node& VariableSetStmt::args(int index) const { + // @@protoc_insertion_point(field_get:pg_query.VariableSetStmt.args) + return _internal_args(index); +} +inline ::pg_query::Node* VariableSetStmt::_internal_add_args() { + return args_.Add(); +} +inline ::pg_query::Node* VariableSetStmt::add_args() { + // @@protoc_insertion_point(field_add:pg_query.VariableSetStmt.args) + return _internal_add_args(); +} +inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& +VariableSetStmt::args() const { + // @@protoc_insertion_point(field_list:pg_query.VariableSetStmt.args) + return args_; +} + +// bool is_local = 4 [json_name = "is_local"]; +inline void VariableSetStmt::clear_is_local() { + is_local_ = false; +} +inline bool VariableSetStmt::_internal_is_local() const { + return is_local_; +} +inline bool VariableSetStmt::is_local() const { + // @@protoc_insertion_point(field_get:pg_query.VariableSetStmt.is_local) + return _internal_is_local(); +} +inline void VariableSetStmt::_internal_set_is_local(bool value) { + + is_local_ = value; +} +inline void VariableSetStmt::set_is_local(bool value) { + _internal_set_is_local(value); + // @@protoc_insertion_point(field_set:pg_query.VariableSetStmt.is_local) +} + +// ------------------------------------------------------------------- + +// VariableShowStmt + +// string name = 1 [json_name = "name"]; +inline void VariableShowStmt::clear_name() { + name_.ClearToEmpty(); +} +inline const std::string& VariableShowStmt::name() const { + // @@protoc_insertion_point(field_get:pg_query.VariableShowStmt.name) + return _internal_name(); +} +inline void VariableShowStmt::set_name(const std::string& value) { + _internal_set_name(value); + // @@protoc_insertion_point(field_set:pg_query.VariableShowStmt.name) +} +inline std::string* VariableShowStmt::mutable_name() { + // @@protoc_insertion_point(field_mutable:pg_query.VariableShowStmt.name) + return _internal_mutable_name(); +} +inline const std::string& VariableShowStmt::_internal_name() const { + return name_.Get(); +} +inline void VariableShowStmt::_internal_set_name(const std::string& value) { + + name_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArena()); +} +inline void VariableShowStmt::set_name(std::string&& value) { + + name_.Set( + ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::move(value), GetArena()); + // @@protoc_insertion_point(field_set_rvalue:pg_query.VariableShowStmt.name) +} +inline void VariableShowStmt::set_name(const char* value) { + GOOGLE_DCHECK(value != nullptr); + + name_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string(value), GetArena()); + // @@protoc_insertion_point(field_set_char:pg_query.VariableShowStmt.name) +} +inline void VariableShowStmt::set_name(const char* value, + size_t size) { + + name_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string( + reinterpret_cast(value), size), GetArena()); + // @@protoc_insertion_point(field_set_pointer:pg_query.VariableShowStmt.name) +} +inline std::string* VariableShowStmt::_internal_mutable_name() { + + return name_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArena()); +} +inline std::string* VariableShowStmt::release_name() { + // @@protoc_insertion_point(field_release:pg_query.VariableShowStmt.name) + return name_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); +} +inline void VariableShowStmt::set_allocated_name(std::string* name) { + if (name != nullptr) { + + } else { + + } + name_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), name, + GetArena()); + // @@protoc_insertion_point(field_set_allocated:pg_query.VariableShowStmt.name) +} + +// ------------------------------------------------------------------- + +// DiscardStmt + +// .pg_query.DiscardMode target = 1 [json_name = "target"]; +inline void DiscardStmt::clear_target() { + target_ = 0; +} +inline ::pg_query::DiscardMode DiscardStmt::_internal_target() const { + return static_cast< ::pg_query::DiscardMode >(target_); +} +inline ::pg_query::DiscardMode DiscardStmt::target() const { + // @@protoc_insertion_point(field_get:pg_query.DiscardStmt.target) + return _internal_target(); +} +inline void DiscardStmt::_internal_set_target(::pg_query::DiscardMode value) { + + target_ = value; +} +inline void DiscardStmt::set_target(::pg_query::DiscardMode value) { + _internal_set_target(value); + // @@protoc_insertion_point(field_set:pg_query.DiscardStmt.target) +} + +// ------------------------------------------------------------------- + +// CreateTrigStmt + +// string trigname = 1 [json_name = "trigname"]; +inline void CreateTrigStmt::clear_trigname() { + trigname_.ClearToEmpty(); +} +inline const std::string& CreateTrigStmt::trigname() const { + // @@protoc_insertion_point(field_get:pg_query.CreateTrigStmt.trigname) + return _internal_trigname(); +} +inline void CreateTrigStmt::set_trigname(const std::string& value) { + _internal_set_trigname(value); + // @@protoc_insertion_point(field_set:pg_query.CreateTrigStmt.trigname) +} +inline std::string* CreateTrigStmt::mutable_trigname() { + // @@protoc_insertion_point(field_mutable:pg_query.CreateTrigStmt.trigname) + return _internal_mutable_trigname(); +} +inline const std::string& CreateTrigStmt::_internal_trigname() const { + return trigname_.Get(); +} +inline void CreateTrigStmt::_internal_set_trigname(const std::string& value) { + + trigname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArena()); +} +inline void CreateTrigStmt::set_trigname(std::string&& value) { + + trigname_.Set( + ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::move(value), GetArena()); + // @@protoc_insertion_point(field_set_rvalue:pg_query.CreateTrigStmt.trigname) +} +inline void CreateTrigStmt::set_trigname(const char* value) { + GOOGLE_DCHECK(value != nullptr); + + trigname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string(value), GetArena()); + // @@protoc_insertion_point(field_set_char:pg_query.CreateTrigStmt.trigname) +} +inline void CreateTrigStmt::set_trigname(const char* value, + size_t size) { + + trigname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string( + reinterpret_cast(value), size), GetArena()); + // @@protoc_insertion_point(field_set_pointer:pg_query.CreateTrigStmt.trigname) +} +inline std::string* CreateTrigStmt::_internal_mutable_trigname() { + + return trigname_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArena()); +} +inline std::string* CreateTrigStmt::release_trigname() { + // @@protoc_insertion_point(field_release:pg_query.CreateTrigStmt.trigname) + return trigname_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); +} +inline void CreateTrigStmt::set_allocated_trigname(std::string* trigname) { + if (trigname != nullptr) { + + } else { + + } + trigname_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), trigname, + GetArena()); + // @@protoc_insertion_point(field_set_allocated:pg_query.CreateTrigStmt.trigname) +} + +// .pg_query.RangeVar relation = 2 [json_name = "relation"]; +inline bool CreateTrigStmt::_internal_has_relation() const { + return this != internal_default_instance() && relation_ != nullptr; +} +inline bool CreateTrigStmt::has_relation() const { + return _internal_has_relation(); +} +inline void CreateTrigStmt::clear_relation() { + if (GetArena() == nullptr && relation_ != nullptr) { + delete relation_; + } + relation_ = nullptr; +} +inline const ::pg_query::RangeVar& CreateTrigStmt::_internal_relation() const { + const ::pg_query::RangeVar* p = relation_; + return p != nullptr ? *p : reinterpret_cast( + ::pg_query::_RangeVar_default_instance_); +} +inline const ::pg_query::RangeVar& CreateTrigStmt::relation() const { + // @@protoc_insertion_point(field_get:pg_query.CreateTrigStmt.relation) + return _internal_relation(); +} +inline void CreateTrigStmt::unsafe_arena_set_allocated_relation( + ::pg_query::RangeVar* relation) { + if (GetArena() == nullptr) { + delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(relation_); + } + relation_ = relation; + if (relation) { + + } else { + + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.CreateTrigStmt.relation) +} +inline ::pg_query::RangeVar* CreateTrigStmt::release_relation() { + + ::pg_query::RangeVar* temp = relation_; + relation_ = nullptr; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + return temp; +} +inline ::pg_query::RangeVar* CreateTrigStmt::unsafe_arena_release_relation() { + // @@protoc_insertion_point(field_release:pg_query.CreateTrigStmt.relation) + + ::pg_query::RangeVar* temp = relation_; + relation_ = nullptr; + return temp; +} +inline ::pg_query::RangeVar* CreateTrigStmt::_internal_mutable_relation() { + + if (relation_ == nullptr) { + auto* p = CreateMaybeMessage<::pg_query::RangeVar>(GetArena()); + relation_ = p; + } + return relation_; +} +inline ::pg_query::RangeVar* CreateTrigStmt::mutable_relation() { + // @@protoc_insertion_point(field_mutable:pg_query.CreateTrigStmt.relation) + return _internal_mutable_relation(); +} +inline void CreateTrigStmt::set_allocated_relation(::pg_query::RangeVar* relation) { + ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); + if (message_arena == nullptr) { + delete relation_; + } + if (relation) { + ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = + ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(relation); + if (message_arena != submessage_arena) { + relation = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( + message_arena, relation, submessage_arena); + } + + } else { + + } + relation_ = relation; + // @@protoc_insertion_point(field_set_allocated:pg_query.CreateTrigStmt.relation) +} + +// repeated .pg_query.Node funcname = 3 [json_name = "funcname"]; +inline int CreateTrigStmt::_internal_funcname_size() const { + return funcname_.size(); +} +inline int CreateTrigStmt::funcname_size() const { + return _internal_funcname_size(); +} +inline void CreateTrigStmt::clear_funcname() { + funcname_.Clear(); +} +inline ::pg_query::Node* CreateTrigStmt::mutable_funcname(int index) { + // @@protoc_insertion_point(field_mutable:pg_query.CreateTrigStmt.funcname) + return funcname_.Mutable(index); +} +inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* +CreateTrigStmt::mutable_funcname() { + // @@protoc_insertion_point(field_mutable_list:pg_query.CreateTrigStmt.funcname) + return &funcname_; +} +inline const ::pg_query::Node& CreateTrigStmt::_internal_funcname(int index) const { + return funcname_.Get(index); +} +inline const ::pg_query::Node& CreateTrigStmt::funcname(int index) const { + // @@protoc_insertion_point(field_get:pg_query.CreateTrigStmt.funcname) + return _internal_funcname(index); +} +inline ::pg_query::Node* CreateTrigStmt::_internal_add_funcname() { + return funcname_.Add(); +} +inline ::pg_query::Node* CreateTrigStmt::add_funcname() { + // @@protoc_insertion_point(field_add:pg_query.CreateTrigStmt.funcname) + return _internal_add_funcname(); +} +inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& +CreateTrigStmt::funcname() const { + // @@protoc_insertion_point(field_list:pg_query.CreateTrigStmt.funcname) + return funcname_; +} + +// repeated .pg_query.Node args = 4 [json_name = "args"]; +inline int CreateTrigStmt::_internal_args_size() const { + return args_.size(); +} +inline int CreateTrigStmt::args_size() const { + return _internal_args_size(); +} +inline void CreateTrigStmt::clear_args() { + args_.Clear(); +} +inline ::pg_query::Node* CreateTrigStmt::mutable_args(int index) { + // @@protoc_insertion_point(field_mutable:pg_query.CreateTrigStmt.args) + return args_.Mutable(index); +} +inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* +CreateTrigStmt::mutable_args() { + // @@protoc_insertion_point(field_mutable_list:pg_query.CreateTrigStmt.args) + return &args_; +} +inline const ::pg_query::Node& CreateTrigStmt::_internal_args(int index) const { + return args_.Get(index); +} +inline const ::pg_query::Node& CreateTrigStmt::args(int index) const { + // @@protoc_insertion_point(field_get:pg_query.CreateTrigStmt.args) + return _internal_args(index); +} +inline ::pg_query::Node* CreateTrigStmt::_internal_add_args() { + return args_.Add(); +} +inline ::pg_query::Node* CreateTrigStmt::add_args() { + // @@protoc_insertion_point(field_add:pg_query.CreateTrigStmt.args) + return _internal_add_args(); +} +inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& +CreateTrigStmt::args() const { + // @@protoc_insertion_point(field_list:pg_query.CreateTrigStmt.args) + return args_; +} + +// bool row = 5 [json_name = "row"]; +inline void CreateTrigStmt::clear_row() { + row_ = false; +} +inline bool CreateTrigStmt::_internal_row() const { + return row_; +} +inline bool CreateTrigStmt::row() const { + // @@protoc_insertion_point(field_get:pg_query.CreateTrigStmt.row) + return _internal_row(); +} +inline void CreateTrigStmt::_internal_set_row(bool value) { + + row_ = value; +} +inline void CreateTrigStmt::set_row(bool value) { + _internal_set_row(value); + // @@protoc_insertion_point(field_set:pg_query.CreateTrigStmt.row) +} + +// int32 timing = 6 [json_name = "timing"]; +inline void CreateTrigStmt::clear_timing() { + timing_ = 0; +} +inline ::PROTOBUF_NAMESPACE_ID::int32 CreateTrigStmt::_internal_timing() const { + return timing_; +} +inline ::PROTOBUF_NAMESPACE_ID::int32 CreateTrigStmt::timing() const { + // @@protoc_insertion_point(field_get:pg_query.CreateTrigStmt.timing) + return _internal_timing(); +} +inline void CreateTrigStmt::_internal_set_timing(::PROTOBUF_NAMESPACE_ID::int32 value) { + + timing_ = value; +} +inline void CreateTrigStmt::set_timing(::PROTOBUF_NAMESPACE_ID::int32 value) { + _internal_set_timing(value); + // @@protoc_insertion_point(field_set:pg_query.CreateTrigStmt.timing) +} + +// int32 events = 7 [json_name = "events"]; +inline void CreateTrigStmt::clear_events() { + events_ = 0; +} +inline ::PROTOBUF_NAMESPACE_ID::int32 CreateTrigStmt::_internal_events() const { + return events_; +} +inline ::PROTOBUF_NAMESPACE_ID::int32 CreateTrigStmt::events() const { + // @@protoc_insertion_point(field_get:pg_query.CreateTrigStmt.events) + return _internal_events(); +} +inline void CreateTrigStmt::_internal_set_events(::PROTOBUF_NAMESPACE_ID::int32 value) { + + events_ = value; +} +inline void CreateTrigStmt::set_events(::PROTOBUF_NAMESPACE_ID::int32 value) { + _internal_set_events(value); + // @@protoc_insertion_point(field_set:pg_query.CreateTrigStmt.events) +} + +// repeated .pg_query.Node columns = 8 [json_name = "columns"]; +inline int CreateTrigStmt::_internal_columns_size() const { + return columns_.size(); +} +inline int CreateTrigStmt::columns_size() const { + return _internal_columns_size(); +} +inline void CreateTrigStmt::clear_columns() { + columns_.Clear(); +} +inline ::pg_query::Node* CreateTrigStmt::mutable_columns(int index) { + // @@protoc_insertion_point(field_mutable:pg_query.CreateTrigStmt.columns) + return columns_.Mutable(index); +} +inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* +CreateTrigStmt::mutable_columns() { + // @@protoc_insertion_point(field_mutable_list:pg_query.CreateTrigStmt.columns) + return &columns_; +} +inline const ::pg_query::Node& CreateTrigStmt::_internal_columns(int index) const { + return columns_.Get(index); +} +inline const ::pg_query::Node& CreateTrigStmt::columns(int index) const { + // @@protoc_insertion_point(field_get:pg_query.CreateTrigStmt.columns) + return _internal_columns(index); +} +inline ::pg_query::Node* CreateTrigStmt::_internal_add_columns() { + return columns_.Add(); +} +inline ::pg_query::Node* CreateTrigStmt::add_columns() { + // @@protoc_insertion_point(field_add:pg_query.CreateTrigStmt.columns) + return _internal_add_columns(); +} +inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& +CreateTrigStmt::columns() const { + // @@protoc_insertion_point(field_list:pg_query.CreateTrigStmt.columns) + return columns_; +} + +// .pg_query.Node when_clause = 9 [json_name = "whenClause"]; +inline bool CreateTrigStmt::_internal_has_when_clause() const { + return this != internal_default_instance() && when_clause_ != nullptr; +} +inline bool CreateTrigStmt::has_when_clause() const { + return _internal_has_when_clause(); +} +inline void CreateTrigStmt::clear_when_clause() { + if (GetArena() == nullptr && when_clause_ != nullptr) { + delete when_clause_; + } + when_clause_ = nullptr; +} +inline const ::pg_query::Node& CreateTrigStmt::_internal_when_clause() const { + const ::pg_query::Node* p = when_clause_; + return p != nullptr ? *p : reinterpret_cast( + ::pg_query::_Node_default_instance_); +} +inline const ::pg_query::Node& CreateTrigStmt::when_clause() const { + // @@protoc_insertion_point(field_get:pg_query.CreateTrigStmt.when_clause) + return _internal_when_clause(); +} +inline void CreateTrigStmt::unsafe_arena_set_allocated_when_clause( + ::pg_query::Node* when_clause) { + if (GetArena() == nullptr) { + delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(when_clause_); + } + when_clause_ = when_clause; + if (when_clause) { + + } else { + + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.CreateTrigStmt.when_clause) +} +inline ::pg_query::Node* CreateTrigStmt::release_when_clause() { + + ::pg_query::Node* temp = when_clause_; + when_clause_ = nullptr; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + return temp; +} +inline ::pg_query::Node* CreateTrigStmt::unsafe_arena_release_when_clause() { + // @@protoc_insertion_point(field_release:pg_query.CreateTrigStmt.when_clause) + + ::pg_query::Node* temp = when_clause_; + when_clause_ = nullptr; + return temp; +} +inline ::pg_query::Node* CreateTrigStmt::_internal_mutable_when_clause() { + + if (when_clause_ == nullptr) { + auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); + when_clause_ = p; + } + return when_clause_; +} +inline ::pg_query::Node* CreateTrigStmt::mutable_when_clause() { + // @@protoc_insertion_point(field_mutable:pg_query.CreateTrigStmt.when_clause) + return _internal_mutable_when_clause(); +} +inline void CreateTrigStmt::set_allocated_when_clause(::pg_query::Node* when_clause) { + ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); + if (message_arena == nullptr) { + delete when_clause_; + } + if (when_clause) { + ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = + ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(when_clause); + if (message_arena != submessage_arena) { + when_clause = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( + message_arena, when_clause, submessage_arena); + } + + } else { + + } + when_clause_ = when_clause; + // @@protoc_insertion_point(field_set_allocated:pg_query.CreateTrigStmt.when_clause) +} + +// bool isconstraint = 10 [json_name = "isconstraint"]; +inline void CreateTrigStmt::clear_isconstraint() { + isconstraint_ = false; +} +inline bool CreateTrigStmt::_internal_isconstraint() const { + return isconstraint_; +} +inline bool CreateTrigStmt::isconstraint() const { + // @@protoc_insertion_point(field_get:pg_query.CreateTrigStmt.isconstraint) + return _internal_isconstraint(); +} +inline void CreateTrigStmt::_internal_set_isconstraint(bool value) { + + isconstraint_ = value; +} +inline void CreateTrigStmt::set_isconstraint(bool value) { + _internal_set_isconstraint(value); + // @@protoc_insertion_point(field_set:pg_query.CreateTrigStmt.isconstraint) +} + +// repeated .pg_query.Node transition_rels = 11 [json_name = "transitionRels"]; +inline int CreateTrigStmt::_internal_transition_rels_size() const { + return transition_rels_.size(); +} +inline int CreateTrigStmt::transition_rels_size() const { + return _internal_transition_rels_size(); +} +inline void CreateTrigStmt::clear_transition_rels() { + transition_rels_.Clear(); +} +inline ::pg_query::Node* CreateTrigStmt::mutable_transition_rels(int index) { + // @@protoc_insertion_point(field_mutable:pg_query.CreateTrigStmt.transition_rels) + return transition_rels_.Mutable(index); +} +inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* +CreateTrigStmt::mutable_transition_rels() { + // @@protoc_insertion_point(field_mutable_list:pg_query.CreateTrigStmt.transition_rels) + return &transition_rels_; +} +inline const ::pg_query::Node& CreateTrigStmt::_internal_transition_rels(int index) const { + return transition_rels_.Get(index); +} +inline const ::pg_query::Node& CreateTrigStmt::transition_rels(int index) const { + // @@protoc_insertion_point(field_get:pg_query.CreateTrigStmt.transition_rels) + return _internal_transition_rels(index); +} +inline ::pg_query::Node* CreateTrigStmt::_internal_add_transition_rels() { + return transition_rels_.Add(); +} +inline ::pg_query::Node* CreateTrigStmt::add_transition_rels() { + // @@protoc_insertion_point(field_add:pg_query.CreateTrigStmt.transition_rels) + return _internal_add_transition_rels(); +} +inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& +CreateTrigStmt::transition_rels() const { + // @@protoc_insertion_point(field_list:pg_query.CreateTrigStmt.transition_rels) + return transition_rels_; +} + +// bool deferrable = 12 [json_name = "deferrable"]; +inline void CreateTrigStmt::clear_deferrable() { + deferrable_ = false; +} +inline bool CreateTrigStmt::_internal_deferrable() const { + return deferrable_; +} +inline bool CreateTrigStmt::deferrable() const { + // @@protoc_insertion_point(field_get:pg_query.CreateTrigStmt.deferrable) + return _internal_deferrable(); +} +inline void CreateTrigStmt::_internal_set_deferrable(bool value) { + + deferrable_ = value; +} +inline void CreateTrigStmt::set_deferrable(bool value) { + _internal_set_deferrable(value); + // @@protoc_insertion_point(field_set:pg_query.CreateTrigStmt.deferrable) +} + +// bool initdeferred = 13 [json_name = "initdeferred"]; +inline void CreateTrigStmt::clear_initdeferred() { + initdeferred_ = false; +} +inline bool CreateTrigStmt::_internal_initdeferred() const { + return initdeferred_; +} +inline bool CreateTrigStmt::initdeferred() const { + // @@protoc_insertion_point(field_get:pg_query.CreateTrigStmt.initdeferred) + return _internal_initdeferred(); +} +inline void CreateTrigStmt::_internal_set_initdeferred(bool value) { + + initdeferred_ = value; +} +inline void CreateTrigStmt::set_initdeferred(bool value) { + _internal_set_initdeferred(value); + // @@protoc_insertion_point(field_set:pg_query.CreateTrigStmt.initdeferred) +} + +// .pg_query.RangeVar constrrel = 14 [json_name = "constrrel"]; +inline bool CreateTrigStmt::_internal_has_constrrel() const { + return this != internal_default_instance() && constrrel_ != nullptr; +} +inline bool CreateTrigStmt::has_constrrel() const { + return _internal_has_constrrel(); +} +inline void CreateTrigStmt::clear_constrrel() { + if (GetArena() == nullptr && constrrel_ != nullptr) { + delete constrrel_; + } + constrrel_ = nullptr; +} +inline const ::pg_query::RangeVar& CreateTrigStmt::_internal_constrrel() const { + const ::pg_query::RangeVar* p = constrrel_; + return p != nullptr ? *p : reinterpret_cast( + ::pg_query::_RangeVar_default_instance_); +} +inline const ::pg_query::RangeVar& CreateTrigStmt::constrrel() const { + // @@protoc_insertion_point(field_get:pg_query.CreateTrigStmt.constrrel) + return _internal_constrrel(); +} +inline void CreateTrigStmt::unsafe_arena_set_allocated_constrrel( + ::pg_query::RangeVar* constrrel) { + if (GetArena() == nullptr) { + delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(constrrel_); + } + constrrel_ = constrrel; + if (constrrel) { + + } else { + + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.CreateTrigStmt.constrrel) +} +inline ::pg_query::RangeVar* CreateTrigStmt::release_constrrel() { + + ::pg_query::RangeVar* temp = constrrel_; + constrrel_ = nullptr; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + return temp; +} +inline ::pg_query::RangeVar* CreateTrigStmt::unsafe_arena_release_constrrel() { + // @@protoc_insertion_point(field_release:pg_query.CreateTrigStmt.constrrel) + + ::pg_query::RangeVar* temp = constrrel_; + constrrel_ = nullptr; + return temp; +} +inline ::pg_query::RangeVar* CreateTrigStmt::_internal_mutable_constrrel() { + + if (constrrel_ == nullptr) { + auto* p = CreateMaybeMessage<::pg_query::RangeVar>(GetArena()); + constrrel_ = p; + } + return constrrel_; +} +inline ::pg_query::RangeVar* CreateTrigStmt::mutable_constrrel() { + // @@protoc_insertion_point(field_mutable:pg_query.CreateTrigStmt.constrrel) + return _internal_mutable_constrrel(); +} +inline void CreateTrigStmt::set_allocated_constrrel(::pg_query::RangeVar* constrrel) { + ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); + if (message_arena == nullptr) { + delete constrrel_; + } + if (constrrel) { + ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = + ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(constrrel); + if (message_arena != submessage_arena) { + constrrel = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( + message_arena, constrrel, submessage_arena); + } + + } else { + + } + constrrel_ = constrrel; + // @@protoc_insertion_point(field_set_allocated:pg_query.CreateTrigStmt.constrrel) +} + +// ------------------------------------------------------------------- + +// CreatePLangStmt + +// bool replace = 1 [json_name = "replace"]; +inline void CreatePLangStmt::clear_replace() { + replace_ = false; +} +inline bool CreatePLangStmt::_internal_replace() const { + return replace_; +} +inline bool CreatePLangStmt::replace() const { + // @@protoc_insertion_point(field_get:pg_query.CreatePLangStmt.replace) + return _internal_replace(); +} +inline void CreatePLangStmt::_internal_set_replace(bool value) { + + replace_ = value; +} +inline void CreatePLangStmt::set_replace(bool value) { + _internal_set_replace(value); + // @@protoc_insertion_point(field_set:pg_query.CreatePLangStmt.replace) +} + +// string plname = 2 [json_name = "plname"]; +inline void CreatePLangStmt::clear_plname() { + plname_.ClearToEmpty(); +} +inline const std::string& CreatePLangStmt::plname() const { + // @@protoc_insertion_point(field_get:pg_query.CreatePLangStmt.plname) + return _internal_plname(); +} +inline void CreatePLangStmt::set_plname(const std::string& value) { + _internal_set_plname(value); + // @@protoc_insertion_point(field_set:pg_query.CreatePLangStmt.plname) +} +inline std::string* CreatePLangStmt::mutable_plname() { + // @@protoc_insertion_point(field_mutable:pg_query.CreatePLangStmt.plname) + return _internal_mutable_plname(); +} +inline const std::string& CreatePLangStmt::_internal_plname() const { + return plname_.Get(); +} +inline void CreatePLangStmt::_internal_set_plname(const std::string& value) { + + plname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArena()); +} +inline void CreatePLangStmt::set_plname(std::string&& value) { + + plname_.Set( + ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::move(value), GetArena()); + // @@protoc_insertion_point(field_set_rvalue:pg_query.CreatePLangStmt.plname) +} +inline void CreatePLangStmt::set_plname(const char* value) { + GOOGLE_DCHECK(value != nullptr); + + plname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string(value), GetArena()); + // @@protoc_insertion_point(field_set_char:pg_query.CreatePLangStmt.plname) +} +inline void CreatePLangStmt::set_plname(const char* value, + size_t size) { + + plname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string( + reinterpret_cast(value), size), GetArena()); + // @@protoc_insertion_point(field_set_pointer:pg_query.CreatePLangStmt.plname) +} +inline std::string* CreatePLangStmt::_internal_mutable_plname() { + + return plname_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArena()); +} +inline std::string* CreatePLangStmt::release_plname() { + // @@protoc_insertion_point(field_release:pg_query.CreatePLangStmt.plname) + return plname_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); +} +inline void CreatePLangStmt::set_allocated_plname(std::string* plname) { + if (plname != nullptr) { + + } else { + + } + plname_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), plname, + GetArena()); + // @@protoc_insertion_point(field_set_allocated:pg_query.CreatePLangStmt.plname) +} + +// repeated .pg_query.Node plhandler = 3 [json_name = "plhandler"]; +inline int CreatePLangStmt::_internal_plhandler_size() const { + return plhandler_.size(); +} +inline int CreatePLangStmt::plhandler_size() const { + return _internal_plhandler_size(); +} +inline void CreatePLangStmt::clear_plhandler() { + plhandler_.Clear(); +} +inline ::pg_query::Node* CreatePLangStmt::mutable_plhandler(int index) { + // @@protoc_insertion_point(field_mutable:pg_query.CreatePLangStmt.plhandler) + return plhandler_.Mutable(index); +} +inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* +CreatePLangStmt::mutable_plhandler() { + // @@protoc_insertion_point(field_mutable_list:pg_query.CreatePLangStmt.plhandler) + return &plhandler_; +} +inline const ::pg_query::Node& CreatePLangStmt::_internal_plhandler(int index) const { + return plhandler_.Get(index); +} +inline const ::pg_query::Node& CreatePLangStmt::plhandler(int index) const { + // @@protoc_insertion_point(field_get:pg_query.CreatePLangStmt.plhandler) + return _internal_plhandler(index); +} +inline ::pg_query::Node* CreatePLangStmt::_internal_add_plhandler() { + return plhandler_.Add(); +} +inline ::pg_query::Node* CreatePLangStmt::add_plhandler() { + // @@protoc_insertion_point(field_add:pg_query.CreatePLangStmt.plhandler) + return _internal_add_plhandler(); +} +inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& +CreatePLangStmt::plhandler() const { + // @@protoc_insertion_point(field_list:pg_query.CreatePLangStmt.plhandler) + return plhandler_; +} + +// repeated .pg_query.Node plinline = 4 [json_name = "plinline"]; +inline int CreatePLangStmt::_internal_plinline_size() const { + return plinline_.size(); +} +inline int CreatePLangStmt::plinline_size() const { + return _internal_plinline_size(); +} +inline void CreatePLangStmt::clear_plinline() { + plinline_.Clear(); +} +inline ::pg_query::Node* CreatePLangStmt::mutable_plinline(int index) { + // @@protoc_insertion_point(field_mutable:pg_query.CreatePLangStmt.plinline) + return plinline_.Mutable(index); +} +inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* +CreatePLangStmt::mutable_plinline() { + // @@protoc_insertion_point(field_mutable_list:pg_query.CreatePLangStmt.plinline) + return &plinline_; +} +inline const ::pg_query::Node& CreatePLangStmt::_internal_plinline(int index) const { + return plinline_.Get(index); +} +inline const ::pg_query::Node& CreatePLangStmt::plinline(int index) const { + // @@protoc_insertion_point(field_get:pg_query.CreatePLangStmt.plinline) + return _internal_plinline(index); +} +inline ::pg_query::Node* CreatePLangStmt::_internal_add_plinline() { + return plinline_.Add(); +} +inline ::pg_query::Node* CreatePLangStmt::add_plinline() { + // @@protoc_insertion_point(field_add:pg_query.CreatePLangStmt.plinline) + return _internal_add_plinline(); +} +inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& +CreatePLangStmt::plinline() const { + // @@protoc_insertion_point(field_list:pg_query.CreatePLangStmt.plinline) + return plinline_; +} + +// repeated .pg_query.Node plvalidator = 5 [json_name = "plvalidator"]; +inline int CreatePLangStmt::_internal_plvalidator_size() const { + return plvalidator_.size(); +} +inline int CreatePLangStmt::plvalidator_size() const { + return _internal_plvalidator_size(); +} +inline void CreatePLangStmt::clear_plvalidator() { + plvalidator_.Clear(); +} +inline ::pg_query::Node* CreatePLangStmt::mutable_plvalidator(int index) { + // @@protoc_insertion_point(field_mutable:pg_query.CreatePLangStmt.plvalidator) + return plvalidator_.Mutable(index); +} +inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* +CreatePLangStmt::mutable_plvalidator() { + // @@protoc_insertion_point(field_mutable_list:pg_query.CreatePLangStmt.plvalidator) + return &plvalidator_; +} +inline const ::pg_query::Node& CreatePLangStmt::_internal_plvalidator(int index) const { + return plvalidator_.Get(index); +} +inline const ::pg_query::Node& CreatePLangStmt::plvalidator(int index) const { + // @@protoc_insertion_point(field_get:pg_query.CreatePLangStmt.plvalidator) + return _internal_plvalidator(index); +} +inline ::pg_query::Node* CreatePLangStmt::_internal_add_plvalidator() { + return plvalidator_.Add(); +} +inline ::pg_query::Node* CreatePLangStmt::add_plvalidator() { + // @@protoc_insertion_point(field_add:pg_query.CreatePLangStmt.plvalidator) + return _internal_add_plvalidator(); +} +inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& +CreatePLangStmt::plvalidator() const { + // @@protoc_insertion_point(field_list:pg_query.CreatePLangStmt.plvalidator) + return plvalidator_; +} + +// bool pltrusted = 6 [json_name = "pltrusted"]; +inline void CreatePLangStmt::clear_pltrusted() { + pltrusted_ = false; +} +inline bool CreatePLangStmt::_internal_pltrusted() const { + return pltrusted_; +} +inline bool CreatePLangStmt::pltrusted() const { + // @@protoc_insertion_point(field_get:pg_query.CreatePLangStmt.pltrusted) + return _internal_pltrusted(); +} +inline void CreatePLangStmt::_internal_set_pltrusted(bool value) { + + pltrusted_ = value; +} +inline void CreatePLangStmt::set_pltrusted(bool value) { + _internal_set_pltrusted(value); + // @@protoc_insertion_point(field_set:pg_query.CreatePLangStmt.pltrusted) +} + +// ------------------------------------------------------------------- + +// CreateRoleStmt + +// .pg_query.RoleStmtType stmt_type = 1 [json_name = "stmt_type"]; +inline void CreateRoleStmt::clear_stmt_type() { + stmt_type_ = 0; +} +inline ::pg_query::RoleStmtType CreateRoleStmt::_internal_stmt_type() const { + return static_cast< ::pg_query::RoleStmtType >(stmt_type_); +} +inline ::pg_query::RoleStmtType CreateRoleStmt::stmt_type() const { + // @@protoc_insertion_point(field_get:pg_query.CreateRoleStmt.stmt_type) + return _internal_stmt_type(); +} +inline void CreateRoleStmt::_internal_set_stmt_type(::pg_query::RoleStmtType value) { + + stmt_type_ = value; +} +inline void CreateRoleStmt::set_stmt_type(::pg_query::RoleStmtType value) { + _internal_set_stmt_type(value); + // @@protoc_insertion_point(field_set:pg_query.CreateRoleStmt.stmt_type) +} + +// string role = 2 [json_name = "role"]; +inline void CreateRoleStmt::clear_role() { + role_.ClearToEmpty(); +} +inline const std::string& CreateRoleStmt::role() const { + // @@protoc_insertion_point(field_get:pg_query.CreateRoleStmt.role) + return _internal_role(); +} +inline void CreateRoleStmt::set_role(const std::string& value) { + _internal_set_role(value); + // @@protoc_insertion_point(field_set:pg_query.CreateRoleStmt.role) +} +inline std::string* CreateRoleStmt::mutable_role() { + // @@protoc_insertion_point(field_mutable:pg_query.CreateRoleStmt.role) + return _internal_mutable_role(); +} +inline const std::string& CreateRoleStmt::_internal_role() const { + return role_.Get(); +} +inline void CreateRoleStmt::_internal_set_role(const std::string& value) { + + role_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArena()); +} +inline void CreateRoleStmt::set_role(std::string&& value) { + + role_.Set( + ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::move(value), GetArena()); + // @@protoc_insertion_point(field_set_rvalue:pg_query.CreateRoleStmt.role) +} +inline void CreateRoleStmt::set_role(const char* value) { + GOOGLE_DCHECK(value != nullptr); + + role_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string(value), GetArena()); + // @@protoc_insertion_point(field_set_char:pg_query.CreateRoleStmt.role) +} +inline void CreateRoleStmt::set_role(const char* value, + size_t size) { + + role_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string( + reinterpret_cast(value), size), GetArena()); + // @@protoc_insertion_point(field_set_pointer:pg_query.CreateRoleStmt.role) +} +inline std::string* CreateRoleStmt::_internal_mutable_role() { + + return role_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArena()); +} +inline std::string* CreateRoleStmt::release_role() { + // @@protoc_insertion_point(field_release:pg_query.CreateRoleStmt.role) + return role_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); +} +inline void CreateRoleStmt::set_allocated_role(std::string* role) { + if (role != nullptr) { + + } else { + + } + role_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), role, + GetArena()); + // @@protoc_insertion_point(field_set_allocated:pg_query.CreateRoleStmt.role) +} + +// repeated .pg_query.Node options = 3 [json_name = "options"]; +inline int CreateRoleStmt::_internal_options_size() const { + return options_.size(); +} +inline int CreateRoleStmt::options_size() const { + return _internal_options_size(); +} +inline void CreateRoleStmt::clear_options() { + options_.Clear(); +} +inline ::pg_query::Node* CreateRoleStmt::mutable_options(int index) { + // @@protoc_insertion_point(field_mutable:pg_query.CreateRoleStmt.options) + return options_.Mutable(index); +} +inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* +CreateRoleStmt::mutable_options() { + // @@protoc_insertion_point(field_mutable_list:pg_query.CreateRoleStmt.options) + return &options_; +} +inline const ::pg_query::Node& CreateRoleStmt::_internal_options(int index) const { + return options_.Get(index); +} +inline const ::pg_query::Node& CreateRoleStmt::options(int index) const { + // @@protoc_insertion_point(field_get:pg_query.CreateRoleStmt.options) + return _internal_options(index); +} +inline ::pg_query::Node* CreateRoleStmt::_internal_add_options() { + return options_.Add(); +} +inline ::pg_query::Node* CreateRoleStmt::add_options() { + // @@protoc_insertion_point(field_add:pg_query.CreateRoleStmt.options) + return _internal_add_options(); +} +inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& +CreateRoleStmt::options() const { + // @@protoc_insertion_point(field_list:pg_query.CreateRoleStmt.options) + return options_; +} + +// ------------------------------------------------------------------- + +// AlterRoleStmt + +// .pg_query.RoleSpec role = 1 [json_name = "role"]; +inline bool AlterRoleStmt::_internal_has_role() const { + return this != internal_default_instance() && role_ != nullptr; +} +inline bool AlterRoleStmt::has_role() const { + return _internal_has_role(); +} +inline void AlterRoleStmt::clear_role() { + if (GetArena() == nullptr && role_ != nullptr) { + delete role_; + } + role_ = nullptr; +} +inline const ::pg_query::RoleSpec& AlterRoleStmt::_internal_role() const { + const ::pg_query::RoleSpec* p = role_; + return p != nullptr ? *p : reinterpret_cast( + ::pg_query::_RoleSpec_default_instance_); +} +inline const ::pg_query::RoleSpec& AlterRoleStmt::role() const { + // @@protoc_insertion_point(field_get:pg_query.AlterRoleStmt.role) + return _internal_role(); +} +inline void AlterRoleStmt::unsafe_arena_set_allocated_role( + ::pg_query::RoleSpec* role) { + if (GetArena() == nullptr) { + delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(role_); + } + role_ = role; + if (role) { + + } else { + + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.AlterRoleStmt.role) +} +inline ::pg_query::RoleSpec* AlterRoleStmt::release_role() { + + ::pg_query::RoleSpec* temp = role_; + role_ = nullptr; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + return temp; +} +inline ::pg_query::RoleSpec* AlterRoleStmt::unsafe_arena_release_role() { + // @@protoc_insertion_point(field_release:pg_query.AlterRoleStmt.role) + + ::pg_query::RoleSpec* temp = role_; + role_ = nullptr; + return temp; +} +inline ::pg_query::RoleSpec* AlterRoleStmt::_internal_mutable_role() { + + if (role_ == nullptr) { + auto* p = CreateMaybeMessage<::pg_query::RoleSpec>(GetArena()); + role_ = p; + } + return role_; +} +inline ::pg_query::RoleSpec* AlterRoleStmt::mutable_role() { + // @@protoc_insertion_point(field_mutable:pg_query.AlterRoleStmt.role) + return _internal_mutable_role(); +} +inline void AlterRoleStmt::set_allocated_role(::pg_query::RoleSpec* role) { + ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); + if (message_arena == nullptr) { + delete role_; + } + if (role) { + ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = + ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(role); + if (message_arena != submessage_arena) { + role = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( + message_arena, role, submessage_arena); + } + + } else { + + } + role_ = role; + // @@protoc_insertion_point(field_set_allocated:pg_query.AlterRoleStmt.role) +} + +// repeated .pg_query.Node options = 2 [json_name = "options"]; +inline int AlterRoleStmt::_internal_options_size() const { + return options_.size(); +} +inline int AlterRoleStmt::options_size() const { + return _internal_options_size(); +} +inline void AlterRoleStmt::clear_options() { + options_.Clear(); +} +inline ::pg_query::Node* AlterRoleStmt::mutable_options(int index) { + // @@protoc_insertion_point(field_mutable:pg_query.AlterRoleStmt.options) + return options_.Mutable(index); +} +inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* +AlterRoleStmt::mutable_options() { + // @@protoc_insertion_point(field_mutable_list:pg_query.AlterRoleStmt.options) + return &options_; +} +inline const ::pg_query::Node& AlterRoleStmt::_internal_options(int index) const { + return options_.Get(index); +} +inline const ::pg_query::Node& AlterRoleStmt::options(int index) const { + // @@protoc_insertion_point(field_get:pg_query.AlterRoleStmt.options) + return _internal_options(index); +} +inline ::pg_query::Node* AlterRoleStmt::_internal_add_options() { + return options_.Add(); +} +inline ::pg_query::Node* AlterRoleStmt::add_options() { + // @@protoc_insertion_point(field_add:pg_query.AlterRoleStmt.options) + return _internal_add_options(); +} +inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& +AlterRoleStmt::options() const { + // @@protoc_insertion_point(field_list:pg_query.AlterRoleStmt.options) + return options_; +} + +// int32 action = 3 [json_name = "action"]; +inline void AlterRoleStmt::clear_action() { + action_ = 0; +} +inline ::PROTOBUF_NAMESPACE_ID::int32 AlterRoleStmt::_internal_action() const { + return action_; +} +inline ::PROTOBUF_NAMESPACE_ID::int32 AlterRoleStmt::action() const { + // @@protoc_insertion_point(field_get:pg_query.AlterRoleStmt.action) + return _internal_action(); +} +inline void AlterRoleStmt::_internal_set_action(::PROTOBUF_NAMESPACE_ID::int32 value) { + + action_ = value; +} +inline void AlterRoleStmt::set_action(::PROTOBUF_NAMESPACE_ID::int32 value) { + _internal_set_action(value); + // @@protoc_insertion_point(field_set:pg_query.AlterRoleStmt.action) +} + +// ------------------------------------------------------------------- + +// DropRoleStmt + +// repeated .pg_query.Node roles = 1 [json_name = "roles"]; +inline int DropRoleStmt::_internal_roles_size() const { + return roles_.size(); +} +inline int DropRoleStmt::roles_size() const { + return _internal_roles_size(); +} +inline void DropRoleStmt::clear_roles() { + roles_.Clear(); +} +inline ::pg_query::Node* DropRoleStmt::mutable_roles(int index) { + // @@protoc_insertion_point(field_mutable:pg_query.DropRoleStmt.roles) + return roles_.Mutable(index); +} +inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* +DropRoleStmt::mutable_roles() { + // @@protoc_insertion_point(field_mutable_list:pg_query.DropRoleStmt.roles) + return &roles_; +} +inline const ::pg_query::Node& DropRoleStmt::_internal_roles(int index) const { + return roles_.Get(index); +} +inline const ::pg_query::Node& DropRoleStmt::roles(int index) const { + // @@protoc_insertion_point(field_get:pg_query.DropRoleStmt.roles) + return _internal_roles(index); +} +inline ::pg_query::Node* DropRoleStmt::_internal_add_roles() { + return roles_.Add(); +} +inline ::pg_query::Node* DropRoleStmt::add_roles() { + // @@protoc_insertion_point(field_add:pg_query.DropRoleStmt.roles) + return _internal_add_roles(); +} +inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& +DropRoleStmt::roles() const { + // @@protoc_insertion_point(field_list:pg_query.DropRoleStmt.roles) + return roles_; +} + +// bool missing_ok = 2 [json_name = "missing_ok"]; +inline void DropRoleStmt::clear_missing_ok() { + missing_ok_ = false; +} +inline bool DropRoleStmt::_internal_missing_ok() const { + return missing_ok_; +} +inline bool DropRoleStmt::missing_ok() const { + // @@protoc_insertion_point(field_get:pg_query.DropRoleStmt.missing_ok) + return _internal_missing_ok(); +} +inline void DropRoleStmt::_internal_set_missing_ok(bool value) { + + missing_ok_ = value; +} +inline void DropRoleStmt::set_missing_ok(bool value) { + _internal_set_missing_ok(value); + // @@protoc_insertion_point(field_set:pg_query.DropRoleStmt.missing_ok) +} + +// ------------------------------------------------------------------- + +// LockStmt + +// repeated .pg_query.Node relations = 1 [json_name = "relations"]; +inline int LockStmt::_internal_relations_size() const { + return relations_.size(); +} +inline int LockStmt::relations_size() const { + return _internal_relations_size(); +} +inline void LockStmt::clear_relations() { + relations_.Clear(); +} +inline ::pg_query::Node* LockStmt::mutable_relations(int index) { + // @@protoc_insertion_point(field_mutable:pg_query.LockStmt.relations) + return relations_.Mutable(index); +} +inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* +LockStmt::mutable_relations() { + // @@protoc_insertion_point(field_mutable_list:pg_query.LockStmt.relations) + return &relations_; +} +inline const ::pg_query::Node& LockStmt::_internal_relations(int index) const { + return relations_.Get(index); +} +inline const ::pg_query::Node& LockStmt::relations(int index) const { + // @@protoc_insertion_point(field_get:pg_query.LockStmt.relations) + return _internal_relations(index); +} +inline ::pg_query::Node* LockStmt::_internal_add_relations() { + return relations_.Add(); +} +inline ::pg_query::Node* LockStmt::add_relations() { + // @@protoc_insertion_point(field_add:pg_query.LockStmt.relations) + return _internal_add_relations(); +} +inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& +LockStmt::relations() const { + // @@protoc_insertion_point(field_list:pg_query.LockStmt.relations) + return relations_; +} + +// int32 mode = 2 [json_name = "mode"]; +inline void LockStmt::clear_mode() { + mode_ = 0; +} +inline ::PROTOBUF_NAMESPACE_ID::int32 LockStmt::_internal_mode() const { + return mode_; +} +inline ::PROTOBUF_NAMESPACE_ID::int32 LockStmt::mode() const { + // @@protoc_insertion_point(field_get:pg_query.LockStmt.mode) + return _internal_mode(); +} +inline void LockStmt::_internal_set_mode(::PROTOBUF_NAMESPACE_ID::int32 value) { + + mode_ = value; +} +inline void LockStmt::set_mode(::PROTOBUF_NAMESPACE_ID::int32 value) { + _internal_set_mode(value); + // @@protoc_insertion_point(field_set:pg_query.LockStmt.mode) +} + +// bool nowait = 3 [json_name = "nowait"]; +inline void LockStmt::clear_nowait() { + nowait_ = false; +} +inline bool LockStmt::_internal_nowait() const { + return nowait_; +} +inline bool LockStmt::nowait() const { + // @@protoc_insertion_point(field_get:pg_query.LockStmt.nowait) + return _internal_nowait(); +} +inline void LockStmt::_internal_set_nowait(bool value) { + + nowait_ = value; +} +inline void LockStmt::set_nowait(bool value) { + _internal_set_nowait(value); + // @@protoc_insertion_point(field_set:pg_query.LockStmt.nowait) +} + +// ------------------------------------------------------------------- + +// ConstraintsSetStmt + +// repeated .pg_query.Node constraints = 1 [json_name = "constraints"]; +inline int ConstraintsSetStmt::_internal_constraints_size() const { + return constraints_.size(); +} +inline int ConstraintsSetStmt::constraints_size() const { + return _internal_constraints_size(); +} +inline void ConstraintsSetStmt::clear_constraints() { + constraints_.Clear(); +} +inline ::pg_query::Node* ConstraintsSetStmt::mutable_constraints(int index) { + // @@protoc_insertion_point(field_mutable:pg_query.ConstraintsSetStmt.constraints) + return constraints_.Mutable(index); +} +inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* +ConstraintsSetStmt::mutable_constraints() { + // @@protoc_insertion_point(field_mutable_list:pg_query.ConstraintsSetStmt.constraints) + return &constraints_; +} +inline const ::pg_query::Node& ConstraintsSetStmt::_internal_constraints(int index) const { + return constraints_.Get(index); +} +inline const ::pg_query::Node& ConstraintsSetStmt::constraints(int index) const { + // @@protoc_insertion_point(field_get:pg_query.ConstraintsSetStmt.constraints) + return _internal_constraints(index); +} +inline ::pg_query::Node* ConstraintsSetStmt::_internal_add_constraints() { + return constraints_.Add(); +} +inline ::pg_query::Node* ConstraintsSetStmt::add_constraints() { + // @@protoc_insertion_point(field_add:pg_query.ConstraintsSetStmt.constraints) + return _internal_add_constraints(); +} +inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& +ConstraintsSetStmt::constraints() const { + // @@protoc_insertion_point(field_list:pg_query.ConstraintsSetStmt.constraints) + return constraints_; +} + +// bool deferred = 2 [json_name = "deferred"]; +inline void ConstraintsSetStmt::clear_deferred() { + deferred_ = false; +} +inline bool ConstraintsSetStmt::_internal_deferred() const { + return deferred_; +} +inline bool ConstraintsSetStmt::deferred() const { + // @@protoc_insertion_point(field_get:pg_query.ConstraintsSetStmt.deferred) + return _internal_deferred(); +} +inline void ConstraintsSetStmt::_internal_set_deferred(bool value) { + + deferred_ = value; +} +inline void ConstraintsSetStmt::set_deferred(bool value) { + _internal_set_deferred(value); + // @@protoc_insertion_point(field_set:pg_query.ConstraintsSetStmt.deferred) +} + +// ------------------------------------------------------------------- + +// ReindexStmt + +// .pg_query.ReindexObjectType kind = 1 [json_name = "kind"]; +inline void ReindexStmt::clear_kind() { + kind_ = 0; +} +inline ::pg_query::ReindexObjectType ReindexStmt::_internal_kind() const { + return static_cast< ::pg_query::ReindexObjectType >(kind_); +} +inline ::pg_query::ReindexObjectType ReindexStmt::kind() const { + // @@protoc_insertion_point(field_get:pg_query.ReindexStmt.kind) + return _internal_kind(); +} +inline void ReindexStmt::_internal_set_kind(::pg_query::ReindexObjectType value) { + + kind_ = value; +} +inline void ReindexStmt::set_kind(::pg_query::ReindexObjectType value) { + _internal_set_kind(value); + // @@protoc_insertion_point(field_set:pg_query.ReindexStmt.kind) +} + +// .pg_query.RangeVar relation = 2 [json_name = "relation"]; +inline bool ReindexStmt::_internal_has_relation() const { + return this != internal_default_instance() && relation_ != nullptr; +} +inline bool ReindexStmt::has_relation() const { + return _internal_has_relation(); +} +inline void ReindexStmt::clear_relation() { + if (GetArena() == nullptr && relation_ != nullptr) { + delete relation_; + } + relation_ = nullptr; +} +inline const ::pg_query::RangeVar& ReindexStmt::_internal_relation() const { + const ::pg_query::RangeVar* p = relation_; + return p != nullptr ? *p : reinterpret_cast( + ::pg_query::_RangeVar_default_instance_); +} +inline const ::pg_query::RangeVar& ReindexStmt::relation() const { + // @@protoc_insertion_point(field_get:pg_query.ReindexStmt.relation) + return _internal_relation(); +} +inline void ReindexStmt::unsafe_arena_set_allocated_relation( + ::pg_query::RangeVar* relation) { + if (GetArena() == nullptr) { + delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(relation_); + } + relation_ = relation; + if (relation) { + + } else { + + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.ReindexStmt.relation) +} +inline ::pg_query::RangeVar* ReindexStmt::release_relation() { + + ::pg_query::RangeVar* temp = relation_; + relation_ = nullptr; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + return temp; +} +inline ::pg_query::RangeVar* ReindexStmt::unsafe_arena_release_relation() { + // @@protoc_insertion_point(field_release:pg_query.ReindexStmt.relation) + + ::pg_query::RangeVar* temp = relation_; + relation_ = nullptr; + return temp; +} +inline ::pg_query::RangeVar* ReindexStmt::_internal_mutable_relation() { + + if (relation_ == nullptr) { + auto* p = CreateMaybeMessage<::pg_query::RangeVar>(GetArena()); + relation_ = p; + } + return relation_; +} +inline ::pg_query::RangeVar* ReindexStmt::mutable_relation() { + // @@protoc_insertion_point(field_mutable:pg_query.ReindexStmt.relation) + return _internal_mutable_relation(); +} +inline void ReindexStmt::set_allocated_relation(::pg_query::RangeVar* relation) { + ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); + if (message_arena == nullptr) { + delete relation_; + } + if (relation) { + ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = + ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(relation); + if (message_arena != submessage_arena) { + relation = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( + message_arena, relation, submessage_arena); + } + + } else { + + } + relation_ = relation; + // @@protoc_insertion_point(field_set_allocated:pg_query.ReindexStmt.relation) +} + +// string name = 3 [json_name = "name"]; +inline void ReindexStmt::clear_name() { + name_.ClearToEmpty(); +} +inline const std::string& ReindexStmt::name() const { + // @@protoc_insertion_point(field_get:pg_query.ReindexStmt.name) + return _internal_name(); +} +inline void ReindexStmt::set_name(const std::string& value) { + _internal_set_name(value); + // @@protoc_insertion_point(field_set:pg_query.ReindexStmt.name) +} +inline std::string* ReindexStmt::mutable_name() { + // @@protoc_insertion_point(field_mutable:pg_query.ReindexStmt.name) + return _internal_mutable_name(); +} +inline const std::string& ReindexStmt::_internal_name() const { + return name_.Get(); +} +inline void ReindexStmt::_internal_set_name(const std::string& value) { + + name_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArena()); +} +inline void ReindexStmt::set_name(std::string&& value) { + + name_.Set( + ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::move(value), GetArena()); + // @@protoc_insertion_point(field_set_rvalue:pg_query.ReindexStmt.name) +} +inline void ReindexStmt::set_name(const char* value) { + GOOGLE_DCHECK(value != nullptr); + + name_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string(value), GetArena()); + // @@protoc_insertion_point(field_set_char:pg_query.ReindexStmt.name) +} +inline void ReindexStmt::set_name(const char* value, + size_t size) { + + name_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string( + reinterpret_cast(value), size), GetArena()); + // @@protoc_insertion_point(field_set_pointer:pg_query.ReindexStmt.name) +} +inline std::string* ReindexStmt::_internal_mutable_name() { + + return name_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArena()); +} +inline std::string* ReindexStmt::release_name() { + // @@protoc_insertion_point(field_release:pg_query.ReindexStmt.name) + return name_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); +} +inline void ReindexStmt::set_allocated_name(std::string* name) { + if (name != nullptr) { + + } else { + + } + name_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), name, + GetArena()); + // @@protoc_insertion_point(field_set_allocated:pg_query.ReindexStmt.name) +} + +// int32 options = 4 [json_name = "options"]; +inline void ReindexStmt::clear_options() { + options_ = 0; +} +inline ::PROTOBUF_NAMESPACE_ID::int32 ReindexStmt::_internal_options() const { + return options_; +} +inline ::PROTOBUF_NAMESPACE_ID::int32 ReindexStmt::options() const { + // @@protoc_insertion_point(field_get:pg_query.ReindexStmt.options) + return _internal_options(); +} +inline void ReindexStmt::_internal_set_options(::PROTOBUF_NAMESPACE_ID::int32 value) { + + options_ = value; +} +inline void ReindexStmt::set_options(::PROTOBUF_NAMESPACE_ID::int32 value) { + _internal_set_options(value); + // @@protoc_insertion_point(field_set:pg_query.ReindexStmt.options) +} + +// bool concurrent = 5 [json_name = "concurrent"]; +inline void ReindexStmt::clear_concurrent() { + concurrent_ = false; +} +inline bool ReindexStmt::_internal_concurrent() const { + return concurrent_; +} +inline bool ReindexStmt::concurrent() const { + // @@protoc_insertion_point(field_get:pg_query.ReindexStmt.concurrent) + return _internal_concurrent(); +} +inline void ReindexStmt::_internal_set_concurrent(bool value) { + + concurrent_ = value; +} +inline void ReindexStmt::set_concurrent(bool value) { + _internal_set_concurrent(value); + // @@protoc_insertion_point(field_set:pg_query.ReindexStmt.concurrent) +} + +// ------------------------------------------------------------------- + +// CheckPointStmt + +// ------------------------------------------------------------------- + +// CreateSchemaStmt + +// string schemaname = 1 [json_name = "schemaname"]; +inline void CreateSchemaStmt::clear_schemaname() { + schemaname_.ClearToEmpty(); +} +inline const std::string& CreateSchemaStmt::schemaname() const { + // @@protoc_insertion_point(field_get:pg_query.CreateSchemaStmt.schemaname) + return _internal_schemaname(); +} +inline void CreateSchemaStmt::set_schemaname(const std::string& value) { + _internal_set_schemaname(value); + // @@protoc_insertion_point(field_set:pg_query.CreateSchemaStmt.schemaname) +} +inline std::string* CreateSchemaStmt::mutable_schemaname() { + // @@protoc_insertion_point(field_mutable:pg_query.CreateSchemaStmt.schemaname) + return _internal_mutable_schemaname(); +} +inline const std::string& CreateSchemaStmt::_internal_schemaname() const { + return schemaname_.Get(); +} +inline void CreateSchemaStmt::_internal_set_schemaname(const std::string& value) { + + schemaname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArena()); +} +inline void CreateSchemaStmt::set_schemaname(std::string&& value) { + + schemaname_.Set( + ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::move(value), GetArena()); + // @@protoc_insertion_point(field_set_rvalue:pg_query.CreateSchemaStmt.schemaname) +} +inline void CreateSchemaStmt::set_schemaname(const char* value) { + GOOGLE_DCHECK(value != nullptr); + + schemaname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string(value), GetArena()); + // @@protoc_insertion_point(field_set_char:pg_query.CreateSchemaStmt.schemaname) +} +inline void CreateSchemaStmt::set_schemaname(const char* value, + size_t size) { + + schemaname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string( + reinterpret_cast(value), size), GetArena()); + // @@protoc_insertion_point(field_set_pointer:pg_query.CreateSchemaStmt.schemaname) +} +inline std::string* CreateSchemaStmt::_internal_mutable_schemaname() { + + return schemaname_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArena()); +} +inline std::string* CreateSchemaStmt::release_schemaname() { + // @@protoc_insertion_point(field_release:pg_query.CreateSchemaStmt.schemaname) + return schemaname_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); +} +inline void CreateSchemaStmt::set_allocated_schemaname(std::string* schemaname) { + if (schemaname != nullptr) { + + } else { + + } + schemaname_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), schemaname, + GetArena()); + // @@protoc_insertion_point(field_set_allocated:pg_query.CreateSchemaStmt.schemaname) +} + +// .pg_query.RoleSpec authrole = 2 [json_name = "authrole"]; +inline bool CreateSchemaStmt::_internal_has_authrole() const { + return this != internal_default_instance() && authrole_ != nullptr; +} +inline bool CreateSchemaStmt::has_authrole() const { + return _internal_has_authrole(); +} +inline void CreateSchemaStmt::clear_authrole() { + if (GetArena() == nullptr && authrole_ != nullptr) { + delete authrole_; + } + authrole_ = nullptr; +} +inline const ::pg_query::RoleSpec& CreateSchemaStmt::_internal_authrole() const { + const ::pg_query::RoleSpec* p = authrole_; + return p != nullptr ? *p : reinterpret_cast( + ::pg_query::_RoleSpec_default_instance_); +} +inline const ::pg_query::RoleSpec& CreateSchemaStmt::authrole() const { + // @@protoc_insertion_point(field_get:pg_query.CreateSchemaStmt.authrole) + return _internal_authrole(); +} +inline void CreateSchemaStmt::unsafe_arena_set_allocated_authrole( + ::pg_query::RoleSpec* authrole) { + if (GetArena() == nullptr) { + delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(authrole_); + } + authrole_ = authrole; + if (authrole) { + + } else { + + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.CreateSchemaStmt.authrole) +} +inline ::pg_query::RoleSpec* CreateSchemaStmt::release_authrole() { + + ::pg_query::RoleSpec* temp = authrole_; + authrole_ = nullptr; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + return temp; +} +inline ::pg_query::RoleSpec* CreateSchemaStmt::unsafe_arena_release_authrole() { + // @@protoc_insertion_point(field_release:pg_query.CreateSchemaStmt.authrole) + + ::pg_query::RoleSpec* temp = authrole_; + authrole_ = nullptr; + return temp; +} +inline ::pg_query::RoleSpec* CreateSchemaStmt::_internal_mutable_authrole() { + + if (authrole_ == nullptr) { + auto* p = CreateMaybeMessage<::pg_query::RoleSpec>(GetArena()); + authrole_ = p; + } + return authrole_; +} +inline ::pg_query::RoleSpec* CreateSchemaStmt::mutable_authrole() { + // @@protoc_insertion_point(field_mutable:pg_query.CreateSchemaStmt.authrole) + return _internal_mutable_authrole(); +} +inline void CreateSchemaStmt::set_allocated_authrole(::pg_query::RoleSpec* authrole) { + ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); + if (message_arena == nullptr) { + delete authrole_; + } + if (authrole) { + ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = + ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(authrole); + if (message_arena != submessage_arena) { + authrole = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( + message_arena, authrole, submessage_arena); + } + + } else { + + } + authrole_ = authrole; + // @@protoc_insertion_point(field_set_allocated:pg_query.CreateSchemaStmt.authrole) +} + +// repeated .pg_query.Node schema_elts = 3 [json_name = "schemaElts"]; +inline int CreateSchemaStmt::_internal_schema_elts_size() const { + return schema_elts_.size(); +} +inline int CreateSchemaStmt::schema_elts_size() const { + return _internal_schema_elts_size(); +} +inline void CreateSchemaStmt::clear_schema_elts() { + schema_elts_.Clear(); +} +inline ::pg_query::Node* CreateSchemaStmt::mutable_schema_elts(int index) { + // @@protoc_insertion_point(field_mutable:pg_query.CreateSchemaStmt.schema_elts) + return schema_elts_.Mutable(index); +} +inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* +CreateSchemaStmt::mutable_schema_elts() { + // @@protoc_insertion_point(field_mutable_list:pg_query.CreateSchemaStmt.schema_elts) + return &schema_elts_; +} +inline const ::pg_query::Node& CreateSchemaStmt::_internal_schema_elts(int index) const { + return schema_elts_.Get(index); +} +inline const ::pg_query::Node& CreateSchemaStmt::schema_elts(int index) const { + // @@protoc_insertion_point(field_get:pg_query.CreateSchemaStmt.schema_elts) + return _internal_schema_elts(index); +} +inline ::pg_query::Node* CreateSchemaStmt::_internal_add_schema_elts() { + return schema_elts_.Add(); +} +inline ::pg_query::Node* CreateSchemaStmt::add_schema_elts() { + // @@protoc_insertion_point(field_add:pg_query.CreateSchemaStmt.schema_elts) + return _internal_add_schema_elts(); +} +inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& +CreateSchemaStmt::schema_elts() const { + // @@protoc_insertion_point(field_list:pg_query.CreateSchemaStmt.schema_elts) + return schema_elts_; +} + +// bool if_not_exists = 4 [json_name = "if_not_exists"]; +inline void CreateSchemaStmt::clear_if_not_exists() { + if_not_exists_ = false; +} +inline bool CreateSchemaStmt::_internal_if_not_exists() const { + return if_not_exists_; +} +inline bool CreateSchemaStmt::if_not_exists() const { + // @@protoc_insertion_point(field_get:pg_query.CreateSchemaStmt.if_not_exists) + return _internal_if_not_exists(); +} +inline void CreateSchemaStmt::_internal_set_if_not_exists(bool value) { + + if_not_exists_ = value; +} +inline void CreateSchemaStmt::set_if_not_exists(bool value) { + _internal_set_if_not_exists(value); + // @@protoc_insertion_point(field_set:pg_query.CreateSchemaStmt.if_not_exists) +} + +// ------------------------------------------------------------------- + +// AlterDatabaseStmt + +// string dbname = 1 [json_name = "dbname"]; +inline void AlterDatabaseStmt::clear_dbname() { + dbname_.ClearToEmpty(); +} +inline const std::string& AlterDatabaseStmt::dbname() const { + // @@protoc_insertion_point(field_get:pg_query.AlterDatabaseStmt.dbname) + return _internal_dbname(); +} +inline void AlterDatabaseStmt::set_dbname(const std::string& value) { + _internal_set_dbname(value); + // @@protoc_insertion_point(field_set:pg_query.AlterDatabaseStmt.dbname) +} +inline std::string* AlterDatabaseStmt::mutable_dbname() { + // @@protoc_insertion_point(field_mutable:pg_query.AlterDatabaseStmt.dbname) + return _internal_mutable_dbname(); +} +inline const std::string& AlterDatabaseStmt::_internal_dbname() const { + return dbname_.Get(); +} +inline void AlterDatabaseStmt::_internal_set_dbname(const std::string& value) { + + dbname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArena()); +} +inline void AlterDatabaseStmt::set_dbname(std::string&& value) { + + dbname_.Set( + ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::move(value), GetArena()); + // @@protoc_insertion_point(field_set_rvalue:pg_query.AlterDatabaseStmt.dbname) +} +inline void AlterDatabaseStmt::set_dbname(const char* value) { + GOOGLE_DCHECK(value != nullptr); + + dbname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string(value), GetArena()); + // @@protoc_insertion_point(field_set_char:pg_query.AlterDatabaseStmt.dbname) +} +inline void AlterDatabaseStmt::set_dbname(const char* value, + size_t size) { + + dbname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string( + reinterpret_cast(value), size), GetArena()); + // @@protoc_insertion_point(field_set_pointer:pg_query.AlterDatabaseStmt.dbname) +} +inline std::string* AlterDatabaseStmt::_internal_mutable_dbname() { + + return dbname_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArena()); +} +inline std::string* AlterDatabaseStmt::release_dbname() { + // @@protoc_insertion_point(field_release:pg_query.AlterDatabaseStmt.dbname) + return dbname_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); +} +inline void AlterDatabaseStmt::set_allocated_dbname(std::string* dbname) { + if (dbname != nullptr) { + + } else { + + } + dbname_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), dbname, + GetArena()); + // @@protoc_insertion_point(field_set_allocated:pg_query.AlterDatabaseStmt.dbname) +} + +// repeated .pg_query.Node options = 2 [json_name = "options"]; +inline int AlterDatabaseStmt::_internal_options_size() const { + return options_.size(); +} +inline int AlterDatabaseStmt::options_size() const { + return _internal_options_size(); +} +inline void AlterDatabaseStmt::clear_options() { + options_.Clear(); +} +inline ::pg_query::Node* AlterDatabaseStmt::mutable_options(int index) { + // @@protoc_insertion_point(field_mutable:pg_query.AlterDatabaseStmt.options) + return options_.Mutable(index); +} +inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* +AlterDatabaseStmt::mutable_options() { + // @@protoc_insertion_point(field_mutable_list:pg_query.AlterDatabaseStmt.options) + return &options_; +} +inline const ::pg_query::Node& AlterDatabaseStmt::_internal_options(int index) const { + return options_.Get(index); +} +inline const ::pg_query::Node& AlterDatabaseStmt::options(int index) const { + // @@protoc_insertion_point(field_get:pg_query.AlterDatabaseStmt.options) + return _internal_options(index); +} +inline ::pg_query::Node* AlterDatabaseStmt::_internal_add_options() { + return options_.Add(); +} +inline ::pg_query::Node* AlterDatabaseStmt::add_options() { + // @@protoc_insertion_point(field_add:pg_query.AlterDatabaseStmt.options) + return _internal_add_options(); +} +inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& +AlterDatabaseStmt::options() const { + // @@protoc_insertion_point(field_list:pg_query.AlterDatabaseStmt.options) + return options_; +} + +// ------------------------------------------------------------------- + +// AlterDatabaseSetStmt + +// string dbname = 1 [json_name = "dbname"]; +inline void AlterDatabaseSetStmt::clear_dbname() { + dbname_.ClearToEmpty(); +} +inline const std::string& AlterDatabaseSetStmt::dbname() const { + // @@protoc_insertion_point(field_get:pg_query.AlterDatabaseSetStmt.dbname) + return _internal_dbname(); +} +inline void AlterDatabaseSetStmt::set_dbname(const std::string& value) { + _internal_set_dbname(value); + // @@protoc_insertion_point(field_set:pg_query.AlterDatabaseSetStmt.dbname) +} +inline std::string* AlterDatabaseSetStmt::mutable_dbname() { + // @@protoc_insertion_point(field_mutable:pg_query.AlterDatabaseSetStmt.dbname) + return _internal_mutable_dbname(); +} +inline const std::string& AlterDatabaseSetStmt::_internal_dbname() const { + return dbname_.Get(); +} +inline void AlterDatabaseSetStmt::_internal_set_dbname(const std::string& value) { + + dbname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArena()); +} +inline void AlterDatabaseSetStmt::set_dbname(std::string&& value) { + + dbname_.Set( + ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::move(value), GetArena()); + // @@protoc_insertion_point(field_set_rvalue:pg_query.AlterDatabaseSetStmt.dbname) +} +inline void AlterDatabaseSetStmt::set_dbname(const char* value) { + GOOGLE_DCHECK(value != nullptr); + + dbname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string(value), GetArena()); + // @@protoc_insertion_point(field_set_char:pg_query.AlterDatabaseSetStmt.dbname) +} +inline void AlterDatabaseSetStmt::set_dbname(const char* value, + size_t size) { + + dbname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string( + reinterpret_cast(value), size), GetArena()); + // @@protoc_insertion_point(field_set_pointer:pg_query.AlterDatabaseSetStmt.dbname) +} +inline std::string* AlterDatabaseSetStmt::_internal_mutable_dbname() { + + return dbname_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArena()); +} +inline std::string* AlterDatabaseSetStmt::release_dbname() { + // @@protoc_insertion_point(field_release:pg_query.AlterDatabaseSetStmt.dbname) + return dbname_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); +} +inline void AlterDatabaseSetStmt::set_allocated_dbname(std::string* dbname) { + if (dbname != nullptr) { + + } else { + + } + dbname_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), dbname, + GetArena()); + // @@protoc_insertion_point(field_set_allocated:pg_query.AlterDatabaseSetStmt.dbname) +} + +// .pg_query.VariableSetStmt setstmt = 2 [json_name = "setstmt"]; +inline bool AlterDatabaseSetStmt::_internal_has_setstmt() const { + return this != internal_default_instance() && setstmt_ != nullptr; +} +inline bool AlterDatabaseSetStmt::has_setstmt() const { + return _internal_has_setstmt(); +} +inline void AlterDatabaseSetStmt::clear_setstmt() { + if (GetArena() == nullptr && setstmt_ != nullptr) { + delete setstmt_; + } + setstmt_ = nullptr; +} +inline const ::pg_query::VariableSetStmt& AlterDatabaseSetStmt::_internal_setstmt() const { + const ::pg_query::VariableSetStmt* p = setstmt_; + return p != nullptr ? *p : reinterpret_cast( + ::pg_query::_VariableSetStmt_default_instance_); +} +inline const ::pg_query::VariableSetStmt& AlterDatabaseSetStmt::setstmt() const { + // @@protoc_insertion_point(field_get:pg_query.AlterDatabaseSetStmt.setstmt) + return _internal_setstmt(); +} +inline void AlterDatabaseSetStmt::unsafe_arena_set_allocated_setstmt( + ::pg_query::VariableSetStmt* setstmt) { + if (GetArena() == nullptr) { + delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(setstmt_); + } + setstmt_ = setstmt; + if (setstmt) { + + } else { + + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.AlterDatabaseSetStmt.setstmt) +} +inline ::pg_query::VariableSetStmt* AlterDatabaseSetStmt::release_setstmt() { + + ::pg_query::VariableSetStmt* temp = setstmt_; + setstmt_ = nullptr; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + return temp; +} +inline ::pg_query::VariableSetStmt* AlterDatabaseSetStmt::unsafe_arena_release_setstmt() { + // @@protoc_insertion_point(field_release:pg_query.AlterDatabaseSetStmt.setstmt) + + ::pg_query::VariableSetStmt* temp = setstmt_; + setstmt_ = nullptr; + return temp; +} +inline ::pg_query::VariableSetStmt* AlterDatabaseSetStmt::_internal_mutable_setstmt() { + + if (setstmt_ == nullptr) { + auto* p = CreateMaybeMessage<::pg_query::VariableSetStmt>(GetArena()); + setstmt_ = p; + } + return setstmt_; +} +inline ::pg_query::VariableSetStmt* AlterDatabaseSetStmt::mutable_setstmt() { + // @@protoc_insertion_point(field_mutable:pg_query.AlterDatabaseSetStmt.setstmt) + return _internal_mutable_setstmt(); +} +inline void AlterDatabaseSetStmt::set_allocated_setstmt(::pg_query::VariableSetStmt* setstmt) { + ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); + if (message_arena == nullptr) { + delete setstmt_; + } + if (setstmt) { + ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = + ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(setstmt); + if (message_arena != submessage_arena) { + setstmt = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( + message_arena, setstmt, submessage_arena); + } + + } else { + + } + setstmt_ = setstmt; + // @@protoc_insertion_point(field_set_allocated:pg_query.AlterDatabaseSetStmt.setstmt) +} + +// ------------------------------------------------------------------- + +// AlterRoleSetStmt + +// .pg_query.RoleSpec role = 1 [json_name = "role"]; +inline bool AlterRoleSetStmt::_internal_has_role() const { + return this != internal_default_instance() && role_ != nullptr; +} +inline bool AlterRoleSetStmt::has_role() const { + return _internal_has_role(); +} +inline void AlterRoleSetStmt::clear_role() { + if (GetArena() == nullptr && role_ != nullptr) { + delete role_; + } + role_ = nullptr; +} +inline const ::pg_query::RoleSpec& AlterRoleSetStmt::_internal_role() const { + const ::pg_query::RoleSpec* p = role_; + return p != nullptr ? *p : reinterpret_cast( + ::pg_query::_RoleSpec_default_instance_); +} +inline const ::pg_query::RoleSpec& AlterRoleSetStmt::role() const { + // @@protoc_insertion_point(field_get:pg_query.AlterRoleSetStmt.role) + return _internal_role(); +} +inline void AlterRoleSetStmt::unsafe_arena_set_allocated_role( + ::pg_query::RoleSpec* role) { + if (GetArena() == nullptr) { + delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(role_); + } + role_ = role; + if (role) { + + } else { + + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.AlterRoleSetStmt.role) +} +inline ::pg_query::RoleSpec* AlterRoleSetStmt::release_role() { + + ::pg_query::RoleSpec* temp = role_; + role_ = nullptr; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + return temp; +} +inline ::pg_query::RoleSpec* AlterRoleSetStmt::unsafe_arena_release_role() { + // @@protoc_insertion_point(field_release:pg_query.AlterRoleSetStmt.role) + + ::pg_query::RoleSpec* temp = role_; + role_ = nullptr; + return temp; +} +inline ::pg_query::RoleSpec* AlterRoleSetStmt::_internal_mutable_role() { + + if (role_ == nullptr) { + auto* p = CreateMaybeMessage<::pg_query::RoleSpec>(GetArena()); + role_ = p; + } + return role_; +} +inline ::pg_query::RoleSpec* AlterRoleSetStmt::mutable_role() { + // @@protoc_insertion_point(field_mutable:pg_query.AlterRoleSetStmt.role) + return _internal_mutable_role(); +} +inline void AlterRoleSetStmt::set_allocated_role(::pg_query::RoleSpec* role) { + ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); + if (message_arena == nullptr) { + delete role_; + } + if (role) { + ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = + ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(role); + if (message_arena != submessage_arena) { + role = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( + message_arena, role, submessage_arena); + } + + } else { + + } + role_ = role; + // @@protoc_insertion_point(field_set_allocated:pg_query.AlterRoleSetStmt.role) +} + +// string database = 2 [json_name = "database"]; +inline void AlterRoleSetStmt::clear_database() { + database_.ClearToEmpty(); +} +inline const std::string& AlterRoleSetStmt::database() const { + // @@protoc_insertion_point(field_get:pg_query.AlterRoleSetStmt.database) + return _internal_database(); +} +inline void AlterRoleSetStmt::set_database(const std::string& value) { + _internal_set_database(value); + // @@protoc_insertion_point(field_set:pg_query.AlterRoleSetStmt.database) +} +inline std::string* AlterRoleSetStmt::mutable_database() { + // @@protoc_insertion_point(field_mutable:pg_query.AlterRoleSetStmt.database) + return _internal_mutable_database(); +} +inline const std::string& AlterRoleSetStmt::_internal_database() const { + return database_.Get(); +} +inline void AlterRoleSetStmt::_internal_set_database(const std::string& value) { + + database_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArena()); +} +inline void AlterRoleSetStmt::set_database(std::string&& value) { + + database_.Set( + ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::move(value), GetArena()); + // @@protoc_insertion_point(field_set_rvalue:pg_query.AlterRoleSetStmt.database) +} +inline void AlterRoleSetStmt::set_database(const char* value) { + GOOGLE_DCHECK(value != nullptr); + + database_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string(value), GetArena()); + // @@protoc_insertion_point(field_set_char:pg_query.AlterRoleSetStmt.database) +} +inline void AlterRoleSetStmt::set_database(const char* value, + size_t size) { + + database_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string( + reinterpret_cast(value), size), GetArena()); + // @@protoc_insertion_point(field_set_pointer:pg_query.AlterRoleSetStmt.database) +} +inline std::string* AlterRoleSetStmt::_internal_mutable_database() { + + return database_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArena()); +} +inline std::string* AlterRoleSetStmt::release_database() { + // @@protoc_insertion_point(field_release:pg_query.AlterRoleSetStmt.database) + return database_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); +} +inline void AlterRoleSetStmt::set_allocated_database(std::string* database) { + if (database != nullptr) { + + } else { + + } + database_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), database, + GetArena()); + // @@protoc_insertion_point(field_set_allocated:pg_query.AlterRoleSetStmt.database) +} + +// .pg_query.VariableSetStmt setstmt = 3 [json_name = "setstmt"]; +inline bool AlterRoleSetStmt::_internal_has_setstmt() const { + return this != internal_default_instance() && setstmt_ != nullptr; +} +inline bool AlterRoleSetStmt::has_setstmt() const { + return _internal_has_setstmt(); +} +inline void AlterRoleSetStmt::clear_setstmt() { + if (GetArena() == nullptr && setstmt_ != nullptr) { + delete setstmt_; + } + setstmt_ = nullptr; +} +inline const ::pg_query::VariableSetStmt& AlterRoleSetStmt::_internal_setstmt() const { + const ::pg_query::VariableSetStmt* p = setstmt_; + return p != nullptr ? *p : reinterpret_cast( + ::pg_query::_VariableSetStmt_default_instance_); +} +inline const ::pg_query::VariableSetStmt& AlterRoleSetStmt::setstmt() const { + // @@protoc_insertion_point(field_get:pg_query.AlterRoleSetStmt.setstmt) + return _internal_setstmt(); +} +inline void AlterRoleSetStmt::unsafe_arena_set_allocated_setstmt( + ::pg_query::VariableSetStmt* setstmt) { + if (GetArena() == nullptr) { + delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(setstmt_); + } + setstmt_ = setstmt; + if (setstmt) { + + } else { + + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.AlterRoleSetStmt.setstmt) +} +inline ::pg_query::VariableSetStmt* AlterRoleSetStmt::release_setstmt() { + + ::pg_query::VariableSetStmt* temp = setstmt_; + setstmt_ = nullptr; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + return temp; +} +inline ::pg_query::VariableSetStmt* AlterRoleSetStmt::unsafe_arena_release_setstmt() { + // @@protoc_insertion_point(field_release:pg_query.AlterRoleSetStmt.setstmt) + + ::pg_query::VariableSetStmt* temp = setstmt_; + setstmt_ = nullptr; + return temp; +} +inline ::pg_query::VariableSetStmt* AlterRoleSetStmt::_internal_mutable_setstmt() { + + if (setstmt_ == nullptr) { + auto* p = CreateMaybeMessage<::pg_query::VariableSetStmt>(GetArena()); + setstmt_ = p; + } + return setstmt_; +} +inline ::pg_query::VariableSetStmt* AlterRoleSetStmt::mutable_setstmt() { + // @@protoc_insertion_point(field_mutable:pg_query.AlterRoleSetStmt.setstmt) + return _internal_mutable_setstmt(); +} +inline void AlterRoleSetStmt::set_allocated_setstmt(::pg_query::VariableSetStmt* setstmt) { + ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); + if (message_arena == nullptr) { + delete setstmt_; + } + if (setstmt) { + ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = + ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(setstmt); + if (message_arena != submessage_arena) { + setstmt = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( + message_arena, setstmt, submessage_arena); + } + + } else { + + } + setstmt_ = setstmt; + // @@protoc_insertion_point(field_set_allocated:pg_query.AlterRoleSetStmt.setstmt) +} + +// ------------------------------------------------------------------- + +// CreateConversionStmt + +// repeated .pg_query.Node conversion_name = 1 [json_name = "conversion_name"]; +inline int CreateConversionStmt::_internal_conversion_name_size() const { + return conversion_name_.size(); +} +inline int CreateConversionStmt::conversion_name_size() const { + return _internal_conversion_name_size(); +} +inline void CreateConversionStmt::clear_conversion_name() { + conversion_name_.Clear(); +} +inline ::pg_query::Node* CreateConversionStmt::mutable_conversion_name(int index) { + // @@protoc_insertion_point(field_mutable:pg_query.CreateConversionStmt.conversion_name) + return conversion_name_.Mutable(index); +} +inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* +CreateConversionStmt::mutable_conversion_name() { + // @@protoc_insertion_point(field_mutable_list:pg_query.CreateConversionStmt.conversion_name) + return &conversion_name_; +} +inline const ::pg_query::Node& CreateConversionStmt::_internal_conversion_name(int index) const { + return conversion_name_.Get(index); +} +inline const ::pg_query::Node& CreateConversionStmt::conversion_name(int index) const { + // @@protoc_insertion_point(field_get:pg_query.CreateConversionStmt.conversion_name) + return _internal_conversion_name(index); +} +inline ::pg_query::Node* CreateConversionStmt::_internal_add_conversion_name() { + return conversion_name_.Add(); +} +inline ::pg_query::Node* CreateConversionStmt::add_conversion_name() { + // @@protoc_insertion_point(field_add:pg_query.CreateConversionStmt.conversion_name) + return _internal_add_conversion_name(); +} +inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& +CreateConversionStmt::conversion_name() const { + // @@protoc_insertion_point(field_list:pg_query.CreateConversionStmt.conversion_name) + return conversion_name_; +} + +// string for_encoding_name = 2 [json_name = "for_encoding_name"]; +inline void CreateConversionStmt::clear_for_encoding_name() { + for_encoding_name_.ClearToEmpty(); +} +inline const std::string& CreateConversionStmt::for_encoding_name() const { + // @@protoc_insertion_point(field_get:pg_query.CreateConversionStmt.for_encoding_name) + return _internal_for_encoding_name(); +} +inline void CreateConversionStmt::set_for_encoding_name(const std::string& value) { + _internal_set_for_encoding_name(value); + // @@protoc_insertion_point(field_set:pg_query.CreateConversionStmt.for_encoding_name) +} +inline std::string* CreateConversionStmt::mutable_for_encoding_name() { + // @@protoc_insertion_point(field_mutable:pg_query.CreateConversionStmt.for_encoding_name) + return _internal_mutable_for_encoding_name(); +} +inline const std::string& CreateConversionStmt::_internal_for_encoding_name() const { + return for_encoding_name_.Get(); +} +inline void CreateConversionStmt::_internal_set_for_encoding_name(const std::string& value) { + + for_encoding_name_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArena()); +} +inline void CreateConversionStmt::set_for_encoding_name(std::string&& value) { + + for_encoding_name_.Set( + ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::move(value), GetArena()); + // @@protoc_insertion_point(field_set_rvalue:pg_query.CreateConversionStmt.for_encoding_name) +} +inline void CreateConversionStmt::set_for_encoding_name(const char* value) { + GOOGLE_DCHECK(value != nullptr); + + for_encoding_name_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string(value), GetArena()); + // @@protoc_insertion_point(field_set_char:pg_query.CreateConversionStmt.for_encoding_name) +} +inline void CreateConversionStmt::set_for_encoding_name(const char* value, + size_t size) { + + for_encoding_name_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string( + reinterpret_cast(value), size), GetArena()); + // @@protoc_insertion_point(field_set_pointer:pg_query.CreateConversionStmt.for_encoding_name) +} +inline std::string* CreateConversionStmt::_internal_mutable_for_encoding_name() { + + return for_encoding_name_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArena()); +} +inline std::string* CreateConversionStmt::release_for_encoding_name() { + // @@protoc_insertion_point(field_release:pg_query.CreateConversionStmt.for_encoding_name) + return for_encoding_name_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); +} +inline void CreateConversionStmt::set_allocated_for_encoding_name(std::string* for_encoding_name) { + if (for_encoding_name != nullptr) { + + } else { + + } + for_encoding_name_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), for_encoding_name, + GetArena()); + // @@protoc_insertion_point(field_set_allocated:pg_query.CreateConversionStmt.for_encoding_name) +} + +// string to_encoding_name = 3 [json_name = "to_encoding_name"]; +inline void CreateConversionStmt::clear_to_encoding_name() { + to_encoding_name_.ClearToEmpty(); +} +inline const std::string& CreateConversionStmt::to_encoding_name() const { + // @@protoc_insertion_point(field_get:pg_query.CreateConversionStmt.to_encoding_name) + return _internal_to_encoding_name(); +} +inline void CreateConversionStmt::set_to_encoding_name(const std::string& value) { + _internal_set_to_encoding_name(value); + // @@protoc_insertion_point(field_set:pg_query.CreateConversionStmt.to_encoding_name) +} +inline std::string* CreateConversionStmt::mutable_to_encoding_name() { + // @@protoc_insertion_point(field_mutable:pg_query.CreateConversionStmt.to_encoding_name) + return _internal_mutable_to_encoding_name(); +} +inline const std::string& CreateConversionStmt::_internal_to_encoding_name() const { + return to_encoding_name_.Get(); +} +inline void CreateConversionStmt::_internal_set_to_encoding_name(const std::string& value) { + + to_encoding_name_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArena()); +} +inline void CreateConversionStmt::set_to_encoding_name(std::string&& value) { + + to_encoding_name_.Set( + ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::move(value), GetArena()); + // @@protoc_insertion_point(field_set_rvalue:pg_query.CreateConversionStmt.to_encoding_name) +} +inline void CreateConversionStmt::set_to_encoding_name(const char* value) { + GOOGLE_DCHECK(value != nullptr); + + to_encoding_name_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string(value), GetArena()); + // @@protoc_insertion_point(field_set_char:pg_query.CreateConversionStmt.to_encoding_name) +} +inline void CreateConversionStmt::set_to_encoding_name(const char* value, + size_t size) { + + to_encoding_name_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string( + reinterpret_cast(value), size), GetArena()); + // @@protoc_insertion_point(field_set_pointer:pg_query.CreateConversionStmt.to_encoding_name) +} +inline std::string* CreateConversionStmt::_internal_mutable_to_encoding_name() { + + return to_encoding_name_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArena()); +} +inline std::string* CreateConversionStmt::release_to_encoding_name() { + // @@protoc_insertion_point(field_release:pg_query.CreateConversionStmt.to_encoding_name) + return to_encoding_name_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); +} +inline void CreateConversionStmt::set_allocated_to_encoding_name(std::string* to_encoding_name) { + if (to_encoding_name != nullptr) { + + } else { + + } + to_encoding_name_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), to_encoding_name, + GetArena()); + // @@protoc_insertion_point(field_set_allocated:pg_query.CreateConversionStmt.to_encoding_name) +} + +// repeated .pg_query.Node func_name = 4 [json_name = "func_name"]; +inline int CreateConversionStmt::_internal_func_name_size() const { + return func_name_.size(); +} +inline int CreateConversionStmt::func_name_size() const { + return _internal_func_name_size(); +} +inline void CreateConversionStmt::clear_func_name() { + func_name_.Clear(); +} +inline ::pg_query::Node* CreateConversionStmt::mutable_func_name(int index) { + // @@protoc_insertion_point(field_mutable:pg_query.CreateConversionStmt.func_name) + return func_name_.Mutable(index); +} +inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* +CreateConversionStmt::mutable_func_name() { + // @@protoc_insertion_point(field_mutable_list:pg_query.CreateConversionStmt.func_name) + return &func_name_; +} +inline const ::pg_query::Node& CreateConversionStmt::_internal_func_name(int index) const { + return func_name_.Get(index); +} +inline const ::pg_query::Node& CreateConversionStmt::func_name(int index) const { + // @@protoc_insertion_point(field_get:pg_query.CreateConversionStmt.func_name) + return _internal_func_name(index); +} +inline ::pg_query::Node* CreateConversionStmt::_internal_add_func_name() { + return func_name_.Add(); +} +inline ::pg_query::Node* CreateConversionStmt::add_func_name() { + // @@protoc_insertion_point(field_add:pg_query.CreateConversionStmt.func_name) + return _internal_add_func_name(); +} +inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& +CreateConversionStmt::func_name() const { + // @@protoc_insertion_point(field_list:pg_query.CreateConversionStmt.func_name) + return func_name_; +} + +// bool def = 5 [json_name = "def"]; +inline void CreateConversionStmt::clear_def() { + def_ = false; +} +inline bool CreateConversionStmt::_internal_def() const { + return def_; +} +inline bool CreateConversionStmt::def() const { + // @@protoc_insertion_point(field_get:pg_query.CreateConversionStmt.def) + return _internal_def(); +} +inline void CreateConversionStmt::_internal_set_def(bool value) { + + def_ = value; +} +inline void CreateConversionStmt::set_def(bool value) { + _internal_set_def(value); + // @@protoc_insertion_point(field_set:pg_query.CreateConversionStmt.def) +} + +// ------------------------------------------------------------------- + +// CreateCastStmt + +// .pg_query.TypeName sourcetype = 1 [json_name = "sourcetype"]; +inline bool CreateCastStmt::_internal_has_sourcetype() const { + return this != internal_default_instance() && sourcetype_ != nullptr; +} +inline bool CreateCastStmt::has_sourcetype() const { + return _internal_has_sourcetype(); +} +inline void CreateCastStmt::clear_sourcetype() { + if (GetArena() == nullptr && sourcetype_ != nullptr) { + delete sourcetype_; + } + sourcetype_ = nullptr; +} +inline const ::pg_query::TypeName& CreateCastStmt::_internal_sourcetype() const { + const ::pg_query::TypeName* p = sourcetype_; + return p != nullptr ? *p : reinterpret_cast( + ::pg_query::_TypeName_default_instance_); +} +inline const ::pg_query::TypeName& CreateCastStmt::sourcetype() const { + // @@protoc_insertion_point(field_get:pg_query.CreateCastStmt.sourcetype) + return _internal_sourcetype(); +} +inline void CreateCastStmt::unsafe_arena_set_allocated_sourcetype( + ::pg_query::TypeName* sourcetype) { + if (GetArena() == nullptr) { + delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(sourcetype_); + } + sourcetype_ = sourcetype; + if (sourcetype) { + + } else { + + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.CreateCastStmt.sourcetype) +} +inline ::pg_query::TypeName* CreateCastStmt::release_sourcetype() { + + ::pg_query::TypeName* temp = sourcetype_; + sourcetype_ = nullptr; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + return temp; +} +inline ::pg_query::TypeName* CreateCastStmt::unsafe_arena_release_sourcetype() { + // @@protoc_insertion_point(field_release:pg_query.CreateCastStmt.sourcetype) + + ::pg_query::TypeName* temp = sourcetype_; + sourcetype_ = nullptr; + return temp; +} +inline ::pg_query::TypeName* CreateCastStmt::_internal_mutable_sourcetype() { + + if (sourcetype_ == nullptr) { + auto* p = CreateMaybeMessage<::pg_query::TypeName>(GetArena()); + sourcetype_ = p; + } + return sourcetype_; +} +inline ::pg_query::TypeName* CreateCastStmt::mutable_sourcetype() { + // @@protoc_insertion_point(field_mutable:pg_query.CreateCastStmt.sourcetype) + return _internal_mutable_sourcetype(); +} +inline void CreateCastStmt::set_allocated_sourcetype(::pg_query::TypeName* sourcetype) { + ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); + if (message_arena == nullptr) { + delete sourcetype_; + } + if (sourcetype) { + ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = + ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(sourcetype); + if (message_arena != submessage_arena) { + sourcetype = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( + message_arena, sourcetype, submessage_arena); + } + + } else { + + } + sourcetype_ = sourcetype; + // @@protoc_insertion_point(field_set_allocated:pg_query.CreateCastStmt.sourcetype) +} + +// .pg_query.TypeName targettype = 2 [json_name = "targettype"]; +inline bool CreateCastStmt::_internal_has_targettype() const { + return this != internal_default_instance() && targettype_ != nullptr; +} +inline bool CreateCastStmt::has_targettype() const { + return _internal_has_targettype(); +} +inline void CreateCastStmt::clear_targettype() { + if (GetArena() == nullptr && targettype_ != nullptr) { + delete targettype_; + } + targettype_ = nullptr; +} +inline const ::pg_query::TypeName& CreateCastStmt::_internal_targettype() const { + const ::pg_query::TypeName* p = targettype_; + return p != nullptr ? *p : reinterpret_cast( + ::pg_query::_TypeName_default_instance_); +} +inline const ::pg_query::TypeName& CreateCastStmt::targettype() const { + // @@protoc_insertion_point(field_get:pg_query.CreateCastStmt.targettype) + return _internal_targettype(); +} +inline void CreateCastStmt::unsafe_arena_set_allocated_targettype( + ::pg_query::TypeName* targettype) { + if (GetArena() == nullptr) { + delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(targettype_); + } + targettype_ = targettype; + if (targettype) { + + } else { + + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.CreateCastStmt.targettype) +} +inline ::pg_query::TypeName* CreateCastStmt::release_targettype() { + + ::pg_query::TypeName* temp = targettype_; + targettype_ = nullptr; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + return temp; +} +inline ::pg_query::TypeName* CreateCastStmt::unsafe_arena_release_targettype() { + // @@protoc_insertion_point(field_release:pg_query.CreateCastStmt.targettype) + + ::pg_query::TypeName* temp = targettype_; + targettype_ = nullptr; + return temp; +} +inline ::pg_query::TypeName* CreateCastStmt::_internal_mutable_targettype() { + + if (targettype_ == nullptr) { + auto* p = CreateMaybeMessage<::pg_query::TypeName>(GetArena()); + targettype_ = p; + } + return targettype_; +} +inline ::pg_query::TypeName* CreateCastStmt::mutable_targettype() { + // @@protoc_insertion_point(field_mutable:pg_query.CreateCastStmt.targettype) + return _internal_mutable_targettype(); +} +inline void CreateCastStmt::set_allocated_targettype(::pg_query::TypeName* targettype) { + ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); + if (message_arena == nullptr) { + delete targettype_; + } + if (targettype) { + ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = + ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(targettype); + if (message_arena != submessage_arena) { + targettype = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( + message_arena, targettype, submessage_arena); + } + + } else { + + } + targettype_ = targettype; + // @@protoc_insertion_point(field_set_allocated:pg_query.CreateCastStmt.targettype) +} + +// .pg_query.ObjectWithArgs func = 3 [json_name = "func"]; +inline bool CreateCastStmt::_internal_has_func() const { + return this != internal_default_instance() && func_ != nullptr; +} +inline bool CreateCastStmt::has_func() const { + return _internal_has_func(); +} +inline void CreateCastStmt::clear_func() { + if (GetArena() == nullptr && func_ != nullptr) { + delete func_; + } + func_ = nullptr; +} +inline const ::pg_query::ObjectWithArgs& CreateCastStmt::_internal_func() const { + const ::pg_query::ObjectWithArgs* p = func_; + return p != nullptr ? *p : reinterpret_cast( + ::pg_query::_ObjectWithArgs_default_instance_); +} +inline const ::pg_query::ObjectWithArgs& CreateCastStmt::func() const { + // @@protoc_insertion_point(field_get:pg_query.CreateCastStmt.func) + return _internal_func(); +} +inline void CreateCastStmt::unsafe_arena_set_allocated_func( + ::pg_query::ObjectWithArgs* func) { + if (GetArena() == nullptr) { + delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(func_); + } + func_ = func; + if (func) { + + } else { + + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.CreateCastStmt.func) +} +inline ::pg_query::ObjectWithArgs* CreateCastStmt::release_func() { + + ::pg_query::ObjectWithArgs* temp = func_; + func_ = nullptr; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + return temp; +} +inline ::pg_query::ObjectWithArgs* CreateCastStmt::unsafe_arena_release_func() { + // @@protoc_insertion_point(field_release:pg_query.CreateCastStmt.func) + + ::pg_query::ObjectWithArgs* temp = func_; + func_ = nullptr; + return temp; +} +inline ::pg_query::ObjectWithArgs* CreateCastStmt::_internal_mutable_func() { + + if (func_ == nullptr) { + auto* p = CreateMaybeMessage<::pg_query::ObjectWithArgs>(GetArena()); + func_ = p; + } + return func_; +} +inline ::pg_query::ObjectWithArgs* CreateCastStmt::mutable_func() { + // @@protoc_insertion_point(field_mutable:pg_query.CreateCastStmt.func) + return _internal_mutable_func(); +} +inline void CreateCastStmt::set_allocated_func(::pg_query::ObjectWithArgs* func) { + ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); + if (message_arena == nullptr) { + delete func_; + } + if (func) { + ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = + ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(func); + if (message_arena != submessage_arena) { + func = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( + message_arena, func, submessage_arena); + } + + } else { + + } + func_ = func; + // @@protoc_insertion_point(field_set_allocated:pg_query.CreateCastStmt.func) +} + +// .pg_query.CoercionContext context = 4 [json_name = "context"]; +inline void CreateCastStmt::clear_context() { + context_ = 0; +} +inline ::pg_query::CoercionContext CreateCastStmt::_internal_context() const { + return static_cast< ::pg_query::CoercionContext >(context_); +} +inline ::pg_query::CoercionContext CreateCastStmt::context() const { + // @@protoc_insertion_point(field_get:pg_query.CreateCastStmt.context) + return _internal_context(); +} +inline void CreateCastStmt::_internal_set_context(::pg_query::CoercionContext value) { + + context_ = value; +} +inline void CreateCastStmt::set_context(::pg_query::CoercionContext value) { + _internal_set_context(value); + // @@protoc_insertion_point(field_set:pg_query.CreateCastStmt.context) +} + +// bool inout = 5 [json_name = "inout"]; +inline void CreateCastStmt::clear_inout() { + inout_ = false; +} +inline bool CreateCastStmt::_internal_inout() const { + return inout_; +} +inline bool CreateCastStmt::inout() const { + // @@protoc_insertion_point(field_get:pg_query.CreateCastStmt.inout) + return _internal_inout(); +} +inline void CreateCastStmt::_internal_set_inout(bool value) { + + inout_ = value; +} +inline void CreateCastStmt::set_inout(bool value) { + _internal_set_inout(value); + // @@protoc_insertion_point(field_set:pg_query.CreateCastStmt.inout) +} + +// ------------------------------------------------------------------- + +// CreateOpClassStmt + +// repeated .pg_query.Node opclassname = 1 [json_name = "opclassname"]; +inline int CreateOpClassStmt::_internal_opclassname_size() const { + return opclassname_.size(); +} +inline int CreateOpClassStmt::opclassname_size() const { + return _internal_opclassname_size(); +} +inline void CreateOpClassStmt::clear_opclassname() { + opclassname_.Clear(); +} +inline ::pg_query::Node* CreateOpClassStmt::mutable_opclassname(int index) { + // @@protoc_insertion_point(field_mutable:pg_query.CreateOpClassStmt.opclassname) + return opclassname_.Mutable(index); +} +inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* +CreateOpClassStmt::mutable_opclassname() { + // @@protoc_insertion_point(field_mutable_list:pg_query.CreateOpClassStmt.opclassname) + return &opclassname_; +} +inline const ::pg_query::Node& CreateOpClassStmt::_internal_opclassname(int index) const { + return opclassname_.Get(index); +} +inline const ::pg_query::Node& CreateOpClassStmt::opclassname(int index) const { + // @@protoc_insertion_point(field_get:pg_query.CreateOpClassStmt.opclassname) + return _internal_opclassname(index); +} +inline ::pg_query::Node* CreateOpClassStmt::_internal_add_opclassname() { + return opclassname_.Add(); +} +inline ::pg_query::Node* CreateOpClassStmt::add_opclassname() { + // @@protoc_insertion_point(field_add:pg_query.CreateOpClassStmt.opclassname) + return _internal_add_opclassname(); +} +inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& +CreateOpClassStmt::opclassname() const { + // @@protoc_insertion_point(field_list:pg_query.CreateOpClassStmt.opclassname) + return opclassname_; +} + +// repeated .pg_query.Node opfamilyname = 2 [json_name = "opfamilyname"]; +inline int CreateOpClassStmt::_internal_opfamilyname_size() const { + return opfamilyname_.size(); +} +inline int CreateOpClassStmt::opfamilyname_size() const { + return _internal_opfamilyname_size(); +} +inline void CreateOpClassStmt::clear_opfamilyname() { + opfamilyname_.Clear(); +} +inline ::pg_query::Node* CreateOpClassStmt::mutable_opfamilyname(int index) { + // @@protoc_insertion_point(field_mutable:pg_query.CreateOpClassStmt.opfamilyname) + return opfamilyname_.Mutable(index); +} +inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* +CreateOpClassStmt::mutable_opfamilyname() { + // @@protoc_insertion_point(field_mutable_list:pg_query.CreateOpClassStmt.opfamilyname) + return &opfamilyname_; +} +inline const ::pg_query::Node& CreateOpClassStmt::_internal_opfamilyname(int index) const { + return opfamilyname_.Get(index); +} +inline const ::pg_query::Node& CreateOpClassStmt::opfamilyname(int index) const { + // @@protoc_insertion_point(field_get:pg_query.CreateOpClassStmt.opfamilyname) + return _internal_opfamilyname(index); +} +inline ::pg_query::Node* CreateOpClassStmt::_internal_add_opfamilyname() { + return opfamilyname_.Add(); +} +inline ::pg_query::Node* CreateOpClassStmt::add_opfamilyname() { + // @@protoc_insertion_point(field_add:pg_query.CreateOpClassStmt.opfamilyname) + return _internal_add_opfamilyname(); +} +inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& +CreateOpClassStmt::opfamilyname() const { + // @@protoc_insertion_point(field_list:pg_query.CreateOpClassStmt.opfamilyname) + return opfamilyname_; +} + +// string amname = 3 [json_name = "amname"]; +inline void CreateOpClassStmt::clear_amname() { + amname_.ClearToEmpty(); +} +inline const std::string& CreateOpClassStmt::amname() const { + // @@protoc_insertion_point(field_get:pg_query.CreateOpClassStmt.amname) + return _internal_amname(); +} +inline void CreateOpClassStmt::set_amname(const std::string& value) { + _internal_set_amname(value); + // @@protoc_insertion_point(field_set:pg_query.CreateOpClassStmt.amname) +} +inline std::string* CreateOpClassStmt::mutable_amname() { + // @@protoc_insertion_point(field_mutable:pg_query.CreateOpClassStmt.amname) + return _internal_mutable_amname(); +} +inline const std::string& CreateOpClassStmt::_internal_amname() const { + return amname_.Get(); +} +inline void CreateOpClassStmt::_internal_set_amname(const std::string& value) { + + amname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArena()); +} +inline void CreateOpClassStmt::set_amname(std::string&& value) { + + amname_.Set( + ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::move(value), GetArena()); + // @@protoc_insertion_point(field_set_rvalue:pg_query.CreateOpClassStmt.amname) +} +inline void CreateOpClassStmt::set_amname(const char* value) { + GOOGLE_DCHECK(value != nullptr); + + amname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string(value), GetArena()); + // @@protoc_insertion_point(field_set_char:pg_query.CreateOpClassStmt.amname) +} +inline void CreateOpClassStmt::set_amname(const char* value, + size_t size) { + + amname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string( + reinterpret_cast(value), size), GetArena()); + // @@protoc_insertion_point(field_set_pointer:pg_query.CreateOpClassStmt.amname) +} +inline std::string* CreateOpClassStmt::_internal_mutable_amname() { + + return amname_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArena()); +} +inline std::string* CreateOpClassStmt::release_amname() { + // @@protoc_insertion_point(field_release:pg_query.CreateOpClassStmt.amname) + return amname_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); +} +inline void CreateOpClassStmt::set_allocated_amname(std::string* amname) { + if (amname != nullptr) { + + } else { + + } + amname_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), amname, + GetArena()); + // @@protoc_insertion_point(field_set_allocated:pg_query.CreateOpClassStmt.amname) +} + +// .pg_query.TypeName datatype = 4 [json_name = "datatype"]; +inline bool CreateOpClassStmt::_internal_has_datatype() const { + return this != internal_default_instance() && datatype_ != nullptr; +} +inline bool CreateOpClassStmt::has_datatype() const { + return _internal_has_datatype(); +} +inline void CreateOpClassStmt::clear_datatype() { + if (GetArena() == nullptr && datatype_ != nullptr) { + delete datatype_; + } + datatype_ = nullptr; +} +inline const ::pg_query::TypeName& CreateOpClassStmt::_internal_datatype() const { + const ::pg_query::TypeName* p = datatype_; + return p != nullptr ? *p : reinterpret_cast( + ::pg_query::_TypeName_default_instance_); +} +inline const ::pg_query::TypeName& CreateOpClassStmt::datatype() const { + // @@protoc_insertion_point(field_get:pg_query.CreateOpClassStmt.datatype) + return _internal_datatype(); +} +inline void CreateOpClassStmt::unsafe_arena_set_allocated_datatype( + ::pg_query::TypeName* datatype) { + if (GetArena() == nullptr) { + delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(datatype_); + } + datatype_ = datatype; + if (datatype) { + + } else { + + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.CreateOpClassStmt.datatype) +} +inline ::pg_query::TypeName* CreateOpClassStmt::release_datatype() { + + ::pg_query::TypeName* temp = datatype_; + datatype_ = nullptr; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + return temp; +} +inline ::pg_query::TypeName* CreateOpClassStmt::unsafe_arena_release_datatype() { + // @@protoc_insertion_point(field_release:pg_query.CreateOpClassStmt.datatype) + + ::pg_query::TypeName* temp = datatype_; + datatype_ = nullptr; + return temp; +} +inline ::pg_query::TypeName* CreateOpClassStmt::_internal_mutable_datatype() { + + if (datatype_ == nullptr) { + auto* p = CreateMaybeMessage<::pg_query::TypeName>(GetArena()); + datatype_ = p; + } + return datatype_; +} +inline ::pg_query::TypeName* CreateOpClassStmt::mutable_datatype() { + // @@protoc_insertion_point(field_mutable:pg_query.CreateOpClassStmt.datatype) + return _internal_mutable_datatype(); +} +inline void CreateOpClassStmt::set_allocated_datatype(::pg_query::TypeName* datatype) { + ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); + if (message_arena == nullptr) { + delete datatype_; + } + if (datatype) { + ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = + ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(datatype); + if (message_arena != submessage_arena) { + datatype = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( + message_arena, datatype, submessage_arena); + } + + } else { + + } + datatype_ = datatype; + // @@protoc_insertion_point(field_set_allocated:pg_query.CreateOpClassStmt.datatype) +} + +// repeated .pg_query.Node items = 5 [json_name = "items"]; +inline int CreateOpClassStmt::_internal_items_size() const { + return items_.size(); +} +inline int CreateOpClassStmt::items_size() const { + return _internal_items_size(); +} +inline void CreateOpClassStmt::clear_items() { + items_.Clear(); +} +inline ::pg_query::Node* CreateOpClassStmt::mutable_items(int index) { + // @@protoc_insertion_point(field_mutable:pg_query.CreateOpClassStmt.items) + return items_.Mutable(index); +} +inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* +CreateOpClassStmt::mutable_items() { + // @@protoc_insertion_point(field_mutable_list:pg_query.CreateOpClassStmt.items) + return &items_; +} +inline const ::pg_query::Node& CreateOpClassStmt::_internal_items(int index) const { + return items_.Get(index); +} +inline const ::pg_query::Node& CreateOpClassStmt::items(int index) const { + // @@protoc_insertion_point(field_get:pg_query.CreateOpClassStmt.items) + return _internal_items(index); +} +inline ::pg_query::Node* CreateOpClassStmt::_internal_add_items() { + return items_.Add(); +} +inline ::pg_query::Node* CreateOpClassStmt::add_items() { + // @@protoc_insertion_point(field_add:pg_query.CreateOpClassStmt.items) + return _internal_add_items(); +} +inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& +CreateOpClassStmt::items() const { + // @@protoc_insertion_point(field_list:pg_query.CreateOpClassStmt.items) + return items_; +} + +// bool is_default = 6 [json_name = "isDefault"]; +inline void CreateOpClassStmt::clear_is_default() { + is_default_ = false; +} +inline bool CreateOpClassStmt::_internal_is_default() const { + return is_default_; +} +inline bool CreateOpClassStmt::is_default() const { + // @@protoc_insertion_point(field_get:pg_query.CreateOpClassStmt.is_default) + return _internal_is_default(); +} +inline void CreateOpClassStmt::_internal_set_is_default(bool value) { + + is_default_ = value; +} +inline void CreateOpClassStmt::set_is_default(bool value) { + _internal_set_is_default(value); + // @@protoc_insertion_point(field_set:pg_query.CreateOpClassStmt.is_default) +} + +// ------------------------------------------------------------------- + +// CreateOpFamilyStmt + +// repeated .pg_query.Node opfamilyname = 1 [json_name = "opfamilyname"]; +inline int CreateOpFamilyStmt::_internal_opfamilyname_size() const { + return opfamilyname_.size(); +} +inline int CreateOpFamilyStmt::opfamilyname_size() const { + return _internal_opfamilyname_size(); +} +inline void CreateOpFamilyStmt::clear_opfamilyname() { + opfamilyname_.Clear(); +} +inline ::pg_query::Node* CreateOpFamilyStmt::mutable_opfamilyname(int index) { + // @@protoc_insertion_point(field_mutable:pg_query.CreateOpFamilyStmt.opfamilyname) + return opfamilyname_.Mutable(index); +} +inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* +CreateOpFamilyStmt::mutable_opfamilyname() { + // @@protoc_insertion_point(field_mutable_list:pg_query.CreateOpFamilyStmt.opfamilyname) + return &opfamilyname_; +} +inline const ::pg_query::Node& CreateOpFamilyStmt::_internal_opfamilyname(int index) const { + return opfamilyname_.Get(index); +} +inline const ::pg_query::Node& CreateOpFamilyStmt::opfamilyname(int index) const { + // @@protoc_insertion_point(field_get:pg_query.CreateOpFamilyStmt.opfamilyname) + return _internal_opfamilyname(index); +} +inline ::pg_query::Node* CreateOpFamilyStmt::_internal_add_opfamilyname() { + return opfamilyname_.Add(); +} +inline ::pg_query::Node* CreateOpFamilyStmt::add_opfamilyname() { + // @@protoc_insertion_point(field_add:pg_query.CreateOpFamilyStmt.opfamilyname) + return _internal_add_opfamilyname(); +} +inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& +CreateOpFamilyStmt::opfamilyname() const { + // @@protoc_insertion_point(field_list:pg_query.CreateOpFamilyStmt.opfamilyname) + return opfamilyname_; +} + +// string amname = 2 [json_name = "amname"]; +inline void CreateOpFamilyStmt::clear_amname() { + amname_.ClearToEmpty(); +} +inline const std::string& CreateOpFamilyStmt::amname() const { + // @@protoc_insertion_point(field_get:pg_query.CreateOpFamilyStmt.amname) + return _internal_amname(); +} +inline void CreateOpFamilyStmt::set_amname(const std::string& value) { + _internal_set_amname(value); + // @@protoc_insertion_point(field_set:pg_query.CreateOpFamilyStmt.amname) +} +inline std::string* CreateOpFamilyStmt::mutable_amname() { + // @@protoc_insertion_point(field_mutable:pg_query.CreateOpFamilyStmt.amname) + return _internal_mutable_amname(); +} +inline const std::string& CreateOpFamilyStmt::_internal_amname() const { + return amname_.Get(); +} +inline void CreateOpFamilyStmt::_internal_set_amname(const std::string& value) { + + amname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArena()); +} +inline void CreateOpFamilyStmt::set_amname(std::string&& value) { + + amname_.Set( + ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::move(value), GetArena()); + // @@protoc_insertion_point(field_set_rvalue:pg_query.CreateOpFamilyStmt.amname) +} +inline void CreateOpFamilyStmt::set_amname(const char* value) { + GOOGLE_DCHECK(value != nullptr); + + amname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string(value), GetArena()); + // @@protoc_insertion_point(field_set_char:pg_query.CreateOpFamilyStmt.amname) +} +inline void CreateOpFamilyStmt::set_amname(const char* value, + size_t size) { + + amname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string( + reinterpret_cast(value), size), GetArena()); + // @@protoc_insertion_point(field_set_pointer:pg_query.CreateOpFamilyStmt.amname) +} +inline std::string* CreateOpFamilyStmt::_internal_mutable_amname() { + + return amname_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArena()); +} +inline std::string* CreateOpFamilyStmt::release_amname() { + // @@protoc_insertion_point(field_release:pg_query.CreateOpFamilyStmt.amname) + return amname_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); +} +inline void CreateOpFamilyStmt::set_allocated_amname(std::string* amname) { + if (amname != nullptr) { + + } else { + + } + amname_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), amname, + GetArena()); + // @@protoc_insertion_point(field_set_allocated:pg_query.CreateOpFamilyStmt.amname) +} + +// ------------------------------------------------------------------- + +// AlterOpFamilyStmt + +// repeated .pg_query.Node opfamilyname = 1 [json_name = "opfamilyname"]; +inline int AlterOpFamilyStmt::_internal_opfamilyname_size() const { + return opfamilyname_.size(); +} +inline int AlterOpFamilyStmt::opfamilyname_size() const { + return _internal_opfamilyname_size(); +} +inline void AlterOpFamilyStmt::clear_opfamilyname() { + opfamilyname_.Clear(); +} +inline ::pg_query::Node* AlterOpFamilyStmt::mutable_opfamilyname(int index) { + // @@protoc_insertion_point(field_mutable:pg_query.AlterOpFamilyStmt.opfamilyname) + return opfamilyname_.Mutable(index); +} +inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* +AlterOpFamilyStmt::mutable_opfamilyname() { + // @@protoc_insertion_point(field_mutable_list:pg_query.AlterOpFamilyStmt.opfamilyname) + return &opfamilyname_; +} +inline const ::pg_query::Node& AlterOpFamilyStmt::_internal_opfamilyname(int index) const { + return opfamilyname_.Get(index); +} +inline const ::pg_query::Node& AlterOpFamilyStmt::opfamilyname(int index) const { + // @@protoc_insertion_point(field_get:pg_query.AlterOpFamilyStmt.opfamilyname) + return _internal_opfamilyname(index); +} +inline ::pg_query::Node* AlterOpFamilyStmt::_internal_add_opfamilyname() { + return opfamilyname_.Add(); +} +inline ::pg_query::Node* AlterOpFamilyStmt::add_opfamilyname() { + // @@protoc_insertion_point(field_add:pg_query.AlterOpFamilyStmt.opfamilyname) + return _internal_add_opfamilyname(); +} +inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& +AlterOpFamilyStmt::opfamilyname() const { + // @@protoc_insertion_point(field_list:pg_query.AlterOpFamilyStmt.opfamilyname) + return opfamilyname_; +} + +// string amname = 2 [json_name = "amname"]; +inline void AlterOpFamilyStmt::clear_amname() { + amname_.ClearToEmpty(); +} +inline const std::string& AlterOpFamilyStmt::amname() const { + // @@protoc_insertion_point(field_get:pg_query.AlterOpFamilyStmt.amname) + return _internal_amname(); +} +inline void AlterOpFamilyStmt::set_amname(const std::string& value) { + _internal_set_amname(value); + // @@protoc_insertion_point(field_set:pg_query.AlterOpFamilyStmt.amname) +} +inline std::string* AlterOpFamilyStmt::mutable_amname() { + // @@protoc_insertion_point(field_mutable:pg_query.AlterOpFamilyStmt.amname) + return _internal_mutable_amname(); +} +inline const std::string& AlterOpFamilyStmt::_internal_amname() const { + return amname_.Get(); +} +inline void AlterOpFamilyStmt::_internal_set_amname(const std::string& value) { + + amname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArena()); +} +inline void AlterOpFamilyStmt::set_amname(std::string&& value) { + + amname_.Set( + ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::move(value), GetArena()); + // @@protoc_insertion_point(field_set_rvalue:pg_query.AlterOpFamilyStmt.amname) +} +inline void AlterOpFamilyStmt::set_amname(const char* value) { + GOOGLE_DCHECK(value != nullptr); + + amname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string(value), GetArena()); + // @@protoc_insertion_point(field_set_char:pg_query.AlterOpFamilyStmt.amname) +} +inline void AlterOpFamilyStmt::set_amname(const char* value, + size_t size) { + + amname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string( + reinterpret_cast(value), size), GetArena()); + // @@protoc_insertion_point(field_set_pointer:pg_query.AlterOpFamilyStmt.amname) +} +inline std::string* AlterOpFamilyStmt::_internal_mutable_amname() { + + return amname_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArena()); +} +inline std::string* AlterOpFamilyStmt::release_amname() { + // @@protoc_insertion_point(field_release:pg_query.AlterOpFamilyStmt.amname) + return amname_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); +} +inline void AlterOpFamilyStmt::set_allocated_amname(std::string* amname) { + if (amname != nullptr) { + + } else { + + } + amname_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), amname, + GetArena()); + // @@protoc_insertion_point(field_set_allocated:pg_query.AlterOpFamilyStmt.amname) +} + +// bool is_drop = 3 [json_name = "isDrop"]; +inline void AlterOpFamilyStmt::clear_is_drop() { + is_drop_ = false; +} +inline bool AlterOpFamilyStmt::_internal_is_drop() const { + return is_drop_; +} +inline bool AlterOpFamilyStmt::is_drop() const { + // @@protoc_insertion_point(field_get:pg_query.AlterOpFamilyStmt.is_drop) + return _internal_is_drop(); +} +inline void AlterOpFamilyStmt::_internal_set_is_drop(bool value) { + + is_drop_ = value; +} +inline void AlterOpFamilyStmt::set_is_drop(bool value) { + _internal_set_is_drop(value); + // @@protoc_insertion_point(field_set:pg_query.AlterOpFamilyStmt.is_drop) +} + +// repeated .pg_query.Node items = 4 [json_name = "items"]; +inline int AlterOpFamilyStmt::_internal_items_size() const { + return items_.size(); +} +inline int AlterOpFamilyStmt::items_size() const { + return _internal_items_size(); +} +inline void AlterOpFamilyStmt::clear_items() { + items_.Clear(); +} +inline ::pg_query::Node* AlterOpFamilyStmt::mutable_items(int index) { + // @@protoc_insertion_point(field_mutable:pg_query.AlterOpFamilyStmt.items) + return items_.Mutable(index); +} +inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* +AlterOpFamilyStmt::mutable_items() { + // @@protoc_insertion_point(field_mutable_list:pg_query.AlterOpFamilyStmt.items) + return &items_; +} +inline const ::pg_query::Node& AlterOpFamilyStmt::_internal_items(int index) const { + return items_.Get(index); +} +inline const ::pg_query::Node& AlterOpFamilyStmt::items(int index) const { + // @@protoc_insertion_point(field_get:pg_query.AlterOpFamilyStmt.items) + return _internal_items(index); +} +inline ::pg_query::Node* AlterOpFamilyStmt::_internal_add_items() { + return items_.Add(); +} +inline ::pg_query::Node* AlterOpFamilyStmt::add_items() { + // @@protoc_insertion_point(field_add:pg_query.AlterOpFamilyStmt.items) + return _internal_add_items(); +} +inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& +AlterOpFamilyStmt::items() const { + // @@protoc_insertion_point(field_list:pg_query.AlterOpFamilyStmt.items) + return items_; +} + +// ------------------------------------------------------------------- + +// PrepareStmt + +// string name = 1 [json_name = "name"]; +inline void PrepareStmt::clear_name() { + name_.ClearToEmpty(); +} +inline const std::string& PrepareStmt::name() const { + // @@protoc_insertion_point(field_get:pg_query.PrepareStmt.name) + return _internal_name(); +} +inline void PrepareStmt::set_name(const std::string& value) { + _internal_set_name(value); + // @@protoc_insertion_point(field_set:pg_query.PrepareStmt.name) +} +inline std::string* PrepareStmt::mutable_name() { + // @@protoc_insertion_point(field_mutable:pg_query.PrepareStmt.name) + return _internal_mutable_name(); +} +inline const std::string& PrepareStmt::_internal_name() const { + return name_.Get(); +} +inline void PrepareStmt::_internal_set_name(const std::string& value) { + + name_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArena()); +} +inline void PrepareStmt::set_name(std::string&& value) { + + name_.Set( + ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::move(value), GetArena()); + // @@protoc_insertion_point(field_set_rvalue:pg_query.PrepareStmt.name) +} +inline void PrepareStmt::set_name(const char* value) { + GOOGLE_DCHECK(value != nullptr); + + name_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string(value), GetArena()); + // @@protoc_insertion_point(field_set_char:pg_query.PrepareStmt.name) +} +inline void PrepareStmt::set_name(const char* value, + size_t size) { + + name_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string( + reinterpret_cast(value), size), GetArena()); + // @@protoc_insertion_point(field_set_pointer:pg_query.PrepareStmt.name) +} +inline std::string* PrepareStmt::_internal_mutable_name() { + + return name_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArena()); +} +inline std::string* PrepareStmt::release_name() { + // @@protoc_insertion_point(field_release:pg_query.PrepareStmt.name) + return name_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); +} +inline void PrepareStmt::set_allocated_name(std::string* name) { + if (name != nullptr) { + + } else { + + } + name_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), name, + GetArena()); + // @@protoc_insertion_point(field_set_allocated:pg_query.PrepareStmt.name) +} + +// repeated .pg_query.Node argtypes = 2 [json_name = "argtypes"]; +inline int PrepareStmt::_internal_argtypes_size() const { + return argtypes_.size(); +} +inline int PrepareStmt::argtypes_size() const { + return _internal_argtypes_size(); +} +inline void PrepareStmt::clear_argtypes() { + argtypes_.Clear(); +} +inline ::pg_query::Node* PrepareStmt::mutable_argtypes(int index) { + // @@protoc_insertion_point(field_mutable:pg_query.PrepareStmt.argtypes) + return argtypes_.Mutable(index); +} +inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* +PrepareStmt::mutable_argtypes() { + // @@protoc_insertion_point(field_mutable_list:pg_query.PrepareStmt.argtypes) + return &argtypes_; +} +inline const ::pg_query::Node& PrepareStmt::_internal_argtypes(int index) const { + return argtypes_.Get(index); +} +inline const ::pg_query::Node& PrepareStmt::argtypes(int index) const { + // @@protoc_insertion_point(field_get:pg_query.PrepareStmt.argtypes) + return _internal_argtypes(index); +} +inline ::pg_query::Node* PrepareStmt::_internal_add_argtypes() { + return argtypes_.Add(); +} +inline ::pg_query::Node* PrepareStmt::add_argtypes() { + // @@protoc_insertion_point(field_add:pg_query.PrepareStmt.argtypes) + return _internal_add_argtypes(); +} +inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& +PrepareStmt::argtypes() const { + // @@protoc_insertion_point(field_list:pg_query.PrepareStmt.argtypes) + return argtypes_; +} + +// .pg_query.Node query = 3 [json_name = "query"]; +inline bool PrepareStmt::_internal_has_query() const { + return this != internal_default_instance() && query_ != nullptr; +} +inline bool PrepareStmt::has_query() const { + return _internal_has_query(); +} +inline void PrepareStmt::clear_query() { + if (GetArena() == nullptr && query_ != nullptr) { + delete query_; + } + query_ = nullptr; +} +inline const ::pg_query::Node& PrepareStmt::_internal_query() const { + const ::pg_query::Node* p = query_; + return p != nullptr ? *p : reinterpret_cast( + ::pg_query::_Node_default_instance_); +} +inline const ::pg_query::Node& PrepareStmt::query() const { + // @@protoc_insertion_point(field_get:pg_query.PrepareStmt.query) + return _internal_query(); +} +inline void PrepareStmt::unsafe_arena_set_allocated_query( + ::pg_query::Node* query) { + if (GetArena() == nullptr) { + delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(query_); + } + query_ = query; + if (query) { + + } else { + + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.PrepareStmt.query) +} +inline ::pg_query::Node* PrepareStmt::release_query() { + + ::pg_query::Node* temp = query_; + query_ = nullptr; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + return temp; +} +inline ::pg_query::Node* PrepareStmt::unsafe_arena_release_query() { + // @@protoc_insertion_point(field_release:pg_query.PrepareStmt.query) + + ::pg_query::Node* temp = query_; + query_ = nullptr; + return temp; +} +inline ::pg_query::Node* PrepareStmt::_internal_mutable_query() { + + if (query_ == nullptr) { + auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); + query_ = p; + } + return query_; +} +inline ::pg_query::Node* PrepareStmt::mutable_query() { + // @@protoc_insertion_point(field_mutable:pg_query.PrepareStmt.query) + return _internal_mutable_query(); +} +inline void PrepareStmt::set_allocated_query(::pg_query::Node* query) { + ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); + if (message_arena == nullptr) { + delete query_; + } + if (query) { + ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = + ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(query); + if (message_arena != submessage_arena) { + query = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( + message_arena, query, submessage_arena); + } + + } else { + + } + query_ = query; + // @@protoc_insertion_point(field_set_allocated:pg_query.PrepareStmt.query) +} + +// ------------------------------------------------------------------- + +// ExecuteStmt + +// string name = 1 [json_name = "name"]; +inline void ExecuteStmt::clear_name() { + name_.ClearToEmpty(); +} +inline const std::string& ExecuteStmt::name() const { + // @@protoc_insertion_point(field_get:pg_query.ExecuteStmt.name) + return _internal_name(); +} +inline void ExecuteStmt::set_name(const std::string& value) { + _internal_set_name(value); + // @@protoc_insertion_point(field_set:pg_query.ExecuteStmt.name) +} +inline std::string* ExecuteStmt::mutable_name() { + // @@protoc_insertion_point(field_mutable:pg_query.ExecuteStmt.name) + return _internal_mutable_name(); +} +inline const std::string& ExecuteStmt::_internal_name() const { + return name_.Get(); +} +inline void ExecuteStmt::_internal_set_name(const std::string& value) { + + name_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArena()); +} +inline void ExecuteStmt::set_name(std::string&& value) { + + name_.Set( + ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::move(value), GetArena()); + // @@protoc_insertion_point(field_set_rvalue:pg_query.ExecuteStmt.name) +} +inline void ExecuteStmt::set_name(const char* value) { + GOOGLE_DCHECK(value != nullptr); + + name_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string(value), GetArena()); + // @@protoc_insertion_point(field_set_char:pg_query.ExecuteStmt.name) +} +inline void ExecuteStmt::set_name(const char* value, + size_t size) { + + name_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string( + reinterpret_cast(value), size), GetArena()); + // @@protoc_insertion_point(field_set_pointer:pg_query.ExecuteStmt.name) +} +inline std::string* ExecuteStmt::_internal_mutable_name() { + + return name_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArena()); +} +inline std::string* ExecuteStmt::release_name() { + // @@protoc_insertion_point(field_release:pg_query.ExecuteStmt.name) + return name_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); +} +inline void ExecuteStmt::set_allocated_name(std::string* name) { + if (name != nullptr) { + + } else { + + } + name_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), name, + GetArena()); + // @@protoc_insertion_point(field_set_allocated:pg_query.ExecuteStmt.name) +} + +// repeated .pg_query.Node params = 2 [json_name = "params"]; +inline int ExecuteStmt::_internal_params_size() const { + return params_.size(); +} +inline int ExecuteStmt::params_size() const { + return _internal_params_size(); +} +inline void ExecuteStmt::clear_params() { + params_.Clear(); +} +inline ::pg_query::Node* ExecuteStmt::mutable_params(int index) { + // @@protoc_insertion_point(field_mutable:pg_query.ExecuteStmt.params) + return params_.Mutable(index); +} +inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* +ExecuteStmt::mutable_params() { + // @@protoc_insertion_point(field_mutable_list:pg_query.ExecuteStmt.params) + return ¶ms_; +} +inline const ::pg_query::Node& ExecuteStmt::_internal_params(int index) const { + return params_.Get(index); +} +inline const ::pg_query::Node& ExecuteStmt::params(int index) const { + // @@protoc_insertion_point(field_get:pg_query.ExecuteStmt.params) + return _internal_params(index); +} +inline ::pg_query::Node* ExecuteStmt::_internal_add_params() { + return params_.Add(); +} +inline ::pg_query::Node* ExecuteStmt::add_params() { + // @@protoc_insertion_point(field_add:pg_query.ExecuteStmt.params) + return _internal_add_params(); +} +inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& +ExecuteStmt::params() const { + // @@protoc_insertion_point(field_list:pg_query.ExecuteStmt.params) + return params_; +} + +// ------------------------------------------------------------------- + +// DeallocateStmt + +// string name = 1 [json_name = "name"]; +inline void DeallocateStmt::clear_name() { + name_.ClearToEmpty(); +} +inline const std::string& DeallocateStmt::name() const { + // @@protoc_insertion_point(field_get:pg_query.DeallocateStmt.name) + return _internal_name(); +} +inline void DeallocateStmt::set_name(const std::string& value) { + _internal_set_name(value); + // @@protoc_insertion_point(field_set:pg_query.DeallocateStmt.name) +} +inline std::string* DeallocateStmt::mutable_name() { + // @@protoc_insertion_point(field_mutable:pg_query.DeallocateStmt.name) + return _internal_mutable_name(); +} +inline const std::string& DeallocateStmt::_internal_name() const { + return name_.Get(); +} +inline void DeallocateStmt::_internal_set_name(const std::string& value) { + + name_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArena()); +} +inline void DeallocateStmt::set_name(std::string&& value) { + + name_.Set( + ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::move(value), GetArena()); + // @@protoc_insertion_point(field_set_rvalue:pg_query.DeallocateStmt.name) +} +inline void DeallocateStmt::set_name(const char* value) { + GOOGLE_DCHECK(value != nullptr); + + name_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string(value), GetArena()); + // @@protoc_insertion_point(field_set_char:pg_query.DeallocateStmt.name) +} +inline void DeallocateStmt::set_name(const char* value, + size_t size) { + + name_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string( + reinterpret_cast(value), size), GetArena()); + // @@protoc_insertion_point(field_set_pointer:pg_query.DeallocateStmt.name) +} +inline std::string* DeallocateStmt::_internal_mutable_name() { + + return name_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArena()); +} +inline std::string* DeallocateStmt::release_name() { + // @@protoc_insertion_point(field_release:pg_query.DeallocateStmt.name) + return name_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); +} +inline void DeallocateStmt::set_allocated_name(std::string* name) { + if (name != nullptr) { + + } else { + + } + name_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), name, + GetArena()); + // @@protoc_insertion_point(field_set_allocated:pg_query.DeallocateStmt.name) +} + +// ------------------------------------------------------------------- + +// DeclareCursorStmt + +// string portalname = 1 [json_name = "portalname"]; +inline void DeclareCursorStmt::clear_portalname() { + portalname_.ClearToEmpty(); +} +inline const std::string& DeclareCursorStmt::portalname() const { + // @@protoc_insertion_point(field_get:pg_query.DeclareCursorStmt.portalname) + return _internal_portalname(); +} +inline void DeclareCursorStmt::set_portalname(const std::string& value) { + _internal_set_portalname(value); + // @@protoc_insertion_point(field_set:pg_query.DeclareCursorStmt.portalname) +} +inline std::string* DeclareCursorStmt::mutable_portalname() { + // @@protoc_insertion_point(field_mutable:pg_query.DeclareCursorStmt.portalname) + return _internal_mutable_portalname(); +} +inline const std::string& DeclareCursorStmt::_internal_portalname() const { + return portalname_.Get(); +} +inline void DeclareCursorStmt::_internal_set_portalname(const std::string& value) { + + portalname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArena()); +} +inline void DeclareCursorStmt::set_portalname(std::string&& value) { + + portalname_.Set( + ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::move(value), GetArena()); + // @@protoc_insertion_point(field_set_rvalue:pg_query.DeclareCursorStmt.portalname) +} +inline void DeclareCursorStmt::set_portalname(const char* value) { + GOOGLE_DCHECK(value != nullptr); + + portalname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string(value), GetArena()); + // @@protoc_insertion_point(field_set_char:pg_query.DeclareCursorStmt.portalname) +} +inline void DeclareCursorStmt::set_portalname(const char* value, + size_t size) { + + portalname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string( + reinterpret_cast(value), size), GetArena()); + // @@protoc_insertion_point(field_set_pointer:pg_query.DeclareCursorStmt.portalname) +} +inline std::string* DeclareCursorStmt::_internal_mutable_portalname() { + + return portalname_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArena()); +} +inline std::string* DeclareCursorStmt::release_portalname() { + // @@protoc_insertion_point(field_release:pg_query.DeclareCursorStmt.portalname) + return portalname_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); +} +inline void DeclareCursorStmt::set_allocated_portalname(std::string* portalname) { + if (portalname != nullptr) { + + } else { + + } + portalname_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), portalname, + GetArena()); + // @@protoc_insertion_point(field_set_allocated:pg_query.DeclareCursorStmt.portalname) +} + +// int32 options = 2 [json_name = "options"]; +inline void DeclareCursorStmt::clear_options() { + options_ = 0; +} +inline ::PROTOBUF_NAMESPACE_ID::int32 DeclareCursorStmt::_internal_options() const { + return options_; +} +inline ::PROTOBUF_NAMESPACE_ID::int32 DeclareCursorStmt::options() const { + // @@protoc_insertion_point(field_get:pg_query.DeclareCursorStmt.options) + return _internal_options(); +} +inline void DeclareCursorStmt::_internal_set_options(::PROTOBUF_NAMESPACE_ID::int32 value) { + + options_ = value; +} +inline void DeclareCursorStmt::set_options(::PROTOBUF_NAMESPACE_ID::int32 value) { + _internal_set_options(value); + // @@protoc_insertion_point(field_set:pg_query.DeclareCursorStmt.options) +} + +// .pg_query.Node query = 3 [json_name = "query"]; +inline bool DeclareCursorStmt::_internal_has_query() const { + return this != internal_default_instance() && query_ != nullptr; +} +inline bool DeclareCursorStmt::has_query() const { + return _internal_has_query(); +} +inline void DeclareCursorStmt::clear_query() { + if (GetArena() == nullptr && query_ != nullptr) { + delete query_; + } + query_ = nullptr; +} +inline const ::pg_query::Node& DeclareCursorStmt::_internal_query() const { + const ::pg_query::Node* p = query_; + return p != nullptr ? *p : reinterpret_cast( + ::pg_query::_Node_default_instance_); +} +inline const ::pg_query::Node& DeclareCursorStmt::query() const { + // @@protoc_insertion_point(field_get:pg_query.DeclareCursorStmt.query) + return _internal_query(); +} +inline void DeclareCursorStmt::unsafe_arena_set_allocated_query( + ::pg_query::Node* query) { + if (GetArena() == nullptr) { + delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(query_); + } + query_ = query; + if (query) { + + } else { + + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.DeclareCursorStmt.query) +} +inline ::pg_query::Node* DeclareCursorStmt::release_query() { + + ::pg_query::Node* temp = query_; + query_ = nullptr; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + return temp; +} +inline ::pg_query::Node* DeclareCursorStmt::unsafe_arena_release_query() { + // @@protoc_insertion_point(field_release:pg_query.DeclareCursorStmt.query) + + ::pg_query::Node* temp = query_; + query_ = nullptr; + return temp; +} +inline ::pg_query::Node* DeclareCursorStmt::_internal_mutable_query() { + + if (query_ == nullptr) { + auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); + query_ = p; + } + return query_; +} +inline ::pg_query::Node* DeclareCursorStmt::mutable_query() { + // @@protoc_insertion_point(field_mutable:pg_query.DeclareCursorStmt.query) + return _internal_mutable_query(); +} +inline void DeclareCursorStmt::set_allocated_query(::pg_query::Node* query) { + ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); + if (message_arena == nullptr) { + delete query_; + } + if (query) { + ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = + ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(query); + if (message_arena != submessage_arena) { + query = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( + message_arena, query, submessage_arena); + } + + } else { + + } + query_ = query; + // @@protoc_insertion_point(field_set_allocated:pg_query.DeclareCursorStmt.query) +} + +// ------------------------------------------------------------------- + +// CreateTableSpaceStmt + +// string tablespacename = 1 [json_name = "tablespacename"]; +inline void CreateTableSpaceStmt::clear_tablespacename() { + tablespacename_.ClearToEmpty(); +} +inline const std::string& CreateTableSpaceStmt::tablespacename() const { + // @@protoc_insertion_point(field_get:pg_query.CreateTableSpaceStmt.tablespacename) + return _internal_tablespacename(); +} +inline void CreateTableSpaceStmt::set_tablespacename(const std::string& value) { + _internal_set_tablespacename(value); + // @@protoc_insertion_point(field_set:pg_query.CreateTableSpaceStmt.tablespacename) +} +inline std::string* CreateTableSpaceStmt::mutable_tablespacename() { + // @@protoc_insertion_point(field_mutable:pg_query.CreateTableSpaceStmt.tablespacename) + return _internal_mutable_tablespacename(); +} +inline const std::string& CreateTableSpaceStmt::_internal_tablespacename() const { + return tablespacename_.Get(); +} +inline void CreateTableSpaceStmt::_internal_set_tablespacename(const std::string& value) { + + tablespacename_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArena()); +} +inline void CreateTableSpaceStmt::set_tablespacename(std::string&& value) { + + tablespacename_.Set( + ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::move(value), GetArena()); + // @@protoc_insertion_point(field_set_rvalue:pg_query.CreateTableSpaceStmt.tablespacename) +} +inline void CreateTableSpaceStmt::set_tablespacename(const char* value) { + GOOGLE_DCHECK(value != nullptr); + + tablespacename_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string(value), GetArena()); + // @@protoc_insertion_point(field_set_char:pg_query.CreateTableSpaceStmt.tablespacename) +} +inline void CreateTableSpaceStmt::set_tablespacename(const char* value, + size_t size) { + + tablespacename_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string( + reinterpret_cast(value), size), GetArena()); + // @@protoc_insertion_point(field_set_pointer:pg_query.CreateTableSpaceStmt.tablespacename) +} +inline std::string* CreateTableSpaceStmt::_internal_mutable_tablespacename() { + + return tablespacename_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArena()); +} +inline std::string* CreateTableSpaceStmt::release_tablespacename() { + // @@protoc_insertion_point(field_release:pg_query.CreateTableSpaceStmt.tablespacename) + return tablespacename_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); +} +inline void CreateTableSpaceStmt::set_allocated_tablespacename(std::string* tablespacename) { + if (tablespacename != nullptr) { + + } else { + + } + tablespacename_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), tablespacename, + GetArena()); + // @@protoc_insertion_point(field_set_allocated:pg_query.CreateTableSpaceStmt.tablespacename) +} + +// .pg_query.RoleSpec owner = 2 [json_name = "owner"]; +inline bool CreateTableSpaceStmt::_internal_has_owner() const { + return this != internal_default_instance() && owner_ != nullptr; +} +inline bool CreateTableSpaceStmt::has_owner() const { + return _internal_has_owner(); +} +inline void CreateTableSpaceStmt::clear_owner() { + if (GetArena() == nullptr && owner_ != nullptr) { + delete owner_; + } + owner_ = nullptr; +} +inline const ::pg_query::RoleSpec& CreateTableSpaceStmt::_internal_owner() const { + const ::pg_query::RoleSpec* p = owner_; + return p != nullptr ? *p : reinterpret_cast( + ::pg_query::_RoleSpec_default_instance_); +} +inline const ::pg_query::RoleSpec& CreateTableSpaceStmt::owner() const { + // @@protoc_insertion_point(field_get:pg_query.CreateTableSpaceStmt.owner) + return _internal_owner(); +} +inline void CreateTableSpaceStmt::unsafe_arena_set_allocated_owner( + ::pg_query::RoleSpec* owner) { + if (GetArena() == nullptr) { + delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(owner_); + } + owner_ = owner; + if (owner) { + + } else { + + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.CreateTableSpaceStmt.owner) +} +inline ::pg_query::RoleSpec* CreateTableSpaceStmt::release_owner() { + + ::pg_query::RoleSpec* temp = owner_; + owner_ = nullptr; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + return temp; +} +inline ::pg_query::RoleSpec* CreateTableSpaceStmt::unsafe_arena_release_owner() { + // @@protoc_insertion_point(field_release:pg_query.CreateTableSpaceStmt.owner) + + ::pg_query::RoleSpec* temp = owner_; + owner_ = nullptr; + return temp; +} +inline ::pg_query::RoleSpec* CreateTableSpaceStmt::_internal_mutable_owner() { + + if (owner_ == nullptr) { + auto* p = CreateMaybeMessage<::pg_query::RoleSpec>(GetArena()); + owner_ = p; + } + return owner_; +} +inline ::pg_query::RoleSpec* CreateTableSpaceStmt::mutable_owner() { + // @@protoc_insertion_point(field_mutable:pg_query.CreateTableSpaceStmt.owner) + return _internal_mutable_owner(); +} +inline void CreateTableSpaceStmt::set_allocated_owner(::pg_query::RoleSpec* owner) { + ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); + if (message_arena == nullptr) { + delete owner_; + } + if (owner) { + ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = + ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(owner); + if (message_arena != submessage_arena) { + owner = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( + message_arena, owner, submessage_arena); + } + + } else { + + } + owner_ = owner; + // @@protoc_insertion_point(field_set_allocated:pg_query.CreateTableSpaceStmt.owner) +} + +// string location = 3 [json_name = "location"]; +inline void CreateTableSpaceStmt::clear_location() { + location_.ClearToEmpty(); +} +inline const std::string& CreateTableSpaceStmt::location() const { + // @@protoc_insertion_point(field_get:pg_query.CreateTableSpaceStmt.location) + return _internal_location(); +} +inline void CreateTableSpaceStmt::set_location(const std::string& value) { + _internal_set_location(value); + // @@protoc_insertion_point(field_set:pg_query.CreateTableSpaceStmt.location) +} +inline std::string* CreateTableSpaceStmt::mutable_location() { + // @@protoc_insertion_point(field_mutable:pg_query.CreateTableSpaceStmt.location) + return _internal_mutable_location(); +} +inline const std::string& CreateTableSpaceStmt::_internal_location() const { + return location_.Get(); +} +inline void CreateTableSpaceStmt::_internal_set_location(const std::string& value) { + + location_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArena()); +} +inline void CreateTableSpaceStmt::set_location(std::string&& value) { + + location_.Set( + ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::move(value), GetArena()); + // @@protoc_insertion_point(field_set_rvalue:pg_query.CreateTableSpaceStmt.location) +} +inline void CreateTableSpaceStmt::set_location(const char* value) { + GOOGLE_DCHECK(value != nullptr); + + location_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string(value), GetArena()); + // @@protoc_insertion_point(field_set_char:pg_query.CreateTableSpaceStmt.location) +} +inline void CreateTableSpaceStmt::set_location(const char* value, + size_t size) { + + location_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string( + reinterpret_cast(value), size), GetArena()); + // @@protoc_insertion_point(field_set_pointer:pg_query.CreateTableSpaceStmt.location) +} +inline std::string* CreateTableSpaceStmt::_internal_mutable_location() { + + return location_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArena()); +} +inline std::string* CreateTableSpaceStmt::release_location() { + // @@protoc_insertion_point(field_release:pg_query.CreateTableSpaceStmt.location) + return location_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); +} +inline void CreateTableSpaceStmt::set_allocated_location(std::string* location) { + if (location != nullptr) { + + } else { + + } + location_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), location, + GetArena()); + // @@protoc_insertion_point(field_set_allocated:pg_query.CreateTableSpaceStmt.location) +} + +// repeated .pg_query.Node options = 4 [json_name = "options"]; +inline int CreateTableSpaceStmt::_internal_options_size() const { + return options_.size(); +} +inline int CreateTableSpaceStmt::options_size() const { + return _internal_options_size(); +} +inline void CreateTableSpaceStmt::clear_options() { + options_.Clear(); +} +inline ::pg_query::Node* CreateTableSpaceStmt::mutable_options(int index) { + // @@protoc_insertion_point(field_mutable:pg_query.CreateTableSpaceStmt.options) + return options_.Mutable(index); +} +inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* +CreateTableSpaceStmt::mutable_options() { + // @@protoc_insertion_point(field_mutable_list:pg_query.CreateTableSpaceStmt.options) + return &options_; +} +inline const ::pg_query::Node& CreateTableSpaceStmt::_internal_options(int index) const { + return options_.Get(index); +} +inline const ::pg_query::Node& CreateTableSpaceStmt::options(int index) const { + // @@protoc_insertion_point(field_get:pg_query.CreateTableSpaceStmt.options) + return _internal_options(index); +} +inline ::pg_query::Node* CreateTableSpaceStmt::_internal_add_options() { + return options_.Add(); +} +inline ::pg_query::Node* CreateTableSpaceStmt::add_options() { + // @@protoc_insertion_point(field_add:pg_query.CreateTableSpaceStmt.options) + return _internal_add_options(); +} +inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& +CreateTableSpaceStmt::options() const { + // @@protoc_insertion_point(field_list:pg_query.CreateTableSpaceStmt.options) + return options_; +} + +// ------------------------------------------------------------------- + +// DropTableSpaceStmt + +// string tablespacename = 1 [json_name = "tablespacename"]; +inline void DropTableSpaceStmt::clear_tablespacename() { + tablespacename_.ClearToEmpty(); +} +inline const std::string& DropTableSpaceStmt::tablespacename() const { + // @@protoc_insertion_point(field_get:pg_query.DropTableSpaceStmt.tablespacename) + return _internal_tablespacename(); +} +inline void DropTableSpaceStmt::set_tablespacename(const std::string& value) { + _internal_set_tablespacename(value); + // @@protoc_insertion_point(field_set:pg_query.DropTableSpaceStmt.tablespacename) +} +inline std::string* DropTableSpaceStmt::mutable_tablespacename() { + // @@protoc_insertion_point(field_mutable:pg_query.DropTableSpaceStmt.tablespacename) + return _internal_mutable_tablespacename(); +} +inline const std::string& DropTableSpaceStmt::_internal_tablespacename() const { + return tablespacename_.Get(); +} +inline void DropTableSpaceStmt::_internal_set_tablespacename(const std::string& value) { + + tablespacename_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArena()); +} +inline void DropTableSpaceStmt::set_tablespacename(std::string&& value) { + + tablespacename_.Set( + ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::move(value), GetArena()); + // @@protoc_insertion_point(field_set_rvalue:pg_query.DropTableSpaceStmt.tablespacename) +} +inline void DropTableSpaceStmt::set_tablespacename(const char* value) { + GOOGLE_DCHECK(value != nullptr); + + tablespacename_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string(value), GetArena()); + // @@protoc_insertion_point(field_set_char:pg_query.DropTableSpaceStmt.tablespacename) +} +inline void DropTableSpaceStmt::set_tablespacename(const char* value, + size_t size) { + + tablespacename_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string( + reinterpret_cast(value), size), GetArena()); + // @@protoc_insertion_point(field_set_pointer:pg_query.DropTableSpaceStmt.tablespacename) +} +inline std::string* DropTableSpaceStmt::_internal_mutable_tablespacename() { + + return tablespacename_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArena()); +} +inline std::string* DropTableSpaceStmt::release_tablespacename() { + // @@protoc_insertion_point(field_release:pg_query.DropTableSpaceStmt.tablespacename) + return tablespacename_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); +} +inline void DropTableSpaceStmt::set_allocated_tablespacename(std::string* tablespacename) { + if (tablespacename != nullptr) { + + } else { + + } + tablespacename_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), tablespacename, + GetArena()); + // @@protoc_insertion_point(field_set_allocated:pg_query.DropTableSpaceStmt.tablespacename) +} + +// bool missing_ok = 2 [json_name = "missing_ok"]; +inline void DropTableSpaceStmt::clear_missing_ok() { + missing_ok_ = false; +} +inline bool DropTableSpaceStmt::_internal_missing_ok() const { + return missing_ok_; +} +inline bool DropTableSpaceStmt::missing_ok() const { + // @@protoc_insertion_point(field_get:pg_query.DropTableSpaceStmt.missing_ok) + return _internal_missing_ok(); +} +inline void DropTableSpaceStmt::_internal_set_missing_ok(bool value) { + + missing_ok_ = value; +} +inline void DropTableSpaceStmt::set_missing_ok(bool value) { + _internal_set_missing_ok(value); + // @@protoc_insertion_point(field_set:pg_query.DropTableSpaceStmt.missing_ok) +} + +// ------------------------------------------------------------------- + +// AlterObjectDependsStmt + +// .pg_query.ObjectType object_type = 1 [json_name = "objectType"]; +inline void AlterObjectDependsStmt::clear_object_type() { + object_type_ = 0; +} +inline ::pg_query::ObjectType AlterObjectDependsStmt::_internal_object_type() const { + return static_cast< ::pg_query::ObjectType >(object_type_); +} +inline ::pg_query::ObjectType AlterObjectDependsStmt::object_type() const { + // @@protoc_insertion_point(field_get:pg_query.AlterObjectDependsStmt.object_type) + return _internal_object_type(); +} +inline void AlterObjectDependsStmt::_internal_set_object_type(::pg_query::ObjectType value) { + + object_type_ = value; +} +inline void AlterObjectDependsStmt::set_object_type(::pg_query::ObjectType value) { + _internal_set_object_type(value); + // @@protoc_insertion_point(field_set:pg_query.AlterObjectDependsStmt.object_type) +} + +// .pg_query.RangeVar relation = 2 [json_name = "relation"]; +inline bool AlterObjectDependsStmt::_internal_has_relation() const { + return this != internal_default_instance() && relation_ != nullptr; +} +inline bool AlterObjectDependsStmt::has_relation() const { + return _internal_has_relation(); +} +inline void AlterObjectDependsStmt::clear_relation() { + if (GetArena() == nullptr && relation_ != nullptr) { + delete relation_; + } + relation_ = nullptr; +} +inline const ::pg_query::RangeVar& AlterObjectDependsStmt::_internal_relation() const { + const ::pg_query::RangeVar* p = relation_; + return p != nullptr ? *p : reinterpret_cast( + ::pg_query::_RangeVar_default_instance_); +} +inline const ::pg_query::RangeVar& AlterObjectDependsStmt::relation() const { + // @@protoc_insertion_point(field_get:pg_query.AlterObjectDependsStmt.relation) + return _internal_relation(); +} +inline void AlterObjectDependsStmt::unsafe_arena_set_allocated_relation( + ::pg_query::RangeVar* relation) { + if (GetArena() == nullptr) { + delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(relation_); + } + relation_ = relation; + if (relation) { + + } else { + + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.AlterObjectDependsStmt.relation) +} +inline ::pg_query::RangeVar* AlterObjectDependsStmt::release_relation() { + + ::pg_query::RangeVar* temp = relation_; + relation_ = nullptr; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + return temp; +} +inline ::pg_query::RangeVar* AlterObjectDependsStmt::unsafe_arena_release_relation() { + // @@protoc_insertion_point(field_release:pg_query.AlterObjectDependsStmt.relation) + + ::pg_query::RangeVar* temp = relation_; + relation_ = nullptr; + return temp; +} +inline ::pg_query::RangeVar* AlterObjectDependsStmt::_internal_mutable_relation() { + + if (relation_ == nullptr) { + auto* p = CreateMaybeMessage<::pg_query::RangeVar>(GetArena()); + relation_ = p; + } + return relation_; +} +inline ::pg_query::RangeVar* AlterObjectDependsStmt::mutable_relation() { + // @@protoc_insertion_point(field_mutable:pg_query.AlterObjectDependsStmt.relation) + return _internal_mutable_relation(); +} +inline void AlterObjectDependsStmt::set_allocated_relation(::pg_query::RangeVar* relation) { + ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); + if (message_arena == nullptr) { + delete relation_; + } + if (relation) { + ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = + ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(relation); + if (message_arena != submessage_arena) { + relation = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( + message_arena, relation, submessage_arena); + } + + } else { + + } + relation_ = relation; + // @@protoc_insertion_point(field_set_allocated:pg_query.AlterObjectDependsStmt.relation) +} + +// .pg_query.Node object = 3 [json_name = "object"]; +inline bool AlterObjectDependsStmt::_internal_has_object() const { + return this != internal_default_instance() && object_ != nullptr; +} +inline bool AlterObjectDependsStmt::has_object() const { + return _internal_has_object(); +} +inline void AlterObjectDependsStmt::clear_object() { + if (GetArena() == nullptr && object_ != nullptr) { + delete object_; + } + object_ = nullptr; +} +inline const ::pg_query::Node& AlterObjectDependsStmt::_internal_object() const { + const ::pg_query::Node* p = object_; + return p != nullptr ? *p : reinterpret_cast( + ::pg_query::_Node_default_instance_); +} +inline const ::pg_query::Node& AlterObjectDependsStmt::object() const { + // @@protoc_insertion_point(field_get:pg_query.AlterObjectDependsStmt.object) + return _internal_object(); +} +inline void AlterObjectDependsStmt::unsafe_arena_set_allocated_object( + ::pg_query::Node* object) { + if (GetArena() == nullptr) { + delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(object_); + } + object_ = object; + if (object) { + + } else { + + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.AlterObjectDependsStmt.object) +} +inline ::pg_query::Node* AlterObjectDependsStmt::release_object() { + + ::pg_query::Node* temp = object_; + object_ = nullptr; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + return temp; +} +inline ::pg_query::Node* AlterObjectDependsStmt::unsafe_arena_release_object() { + // @@protoc_insertion_point(field_release:pg_query.AlterObjectDependsStmt.object) + + ::pg_query::Node* temp = object_; + object_ = nullptr; + return temp; +} +inline ::pg_query::Node* AlterObjectDependsStmt::_internal_mutable_object() { + + if (object_ == nullptr) { + auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); + object_ = p; + } + return object_; +} +inline ::pg_query::Node* AlterObjectDependsStmt::mutable_object() { + // @@protoc_insertion_point(field_mutable:pg_query.AlterObjectDependsStmt.object) + return _internal_mutable_object(); +} +inline void AlterObjectDependsStmt::set_allocated_object(::pg_query::Node* object) { + ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); + if (message_arena == nullptr) { + delete object_; + } + if (object) { + ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = + ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(object); + if (message_arena != submessage_arena) { + object = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( + message_arena, object, submessage_arena); + } + + } else { + + } + object_ = object; + // @@protoc_insertion_point(field_set_allocated:pg_query.AlterObjectDependsStmt.object) +} + +// .pg_query.Node extname = 4 [json_name = "extname"]; +inline bool AlterObjectDependsStmt::_internal_has_extname() const { + return this != internal_default_instance() && extname_ != nullptr; +} +inline bool AlterObjectDependsStmt::has_extname() const { + return _internal_has_extname(); +} +inline void AlterObjectDependsStmt::clear_extname() { + if (GetArena() == nullptr && extname_ != nullptr) { + delete extname_; + } + extname_ = nullptr; +} +inline const ::pg_query::Node& AlterObjectDependsStmt::_internal_extname() const { + const ::pg_query::Node* p = extname_; + return p != nullptr ? *p : reinterpret_cast( + ::pg_query::_Node_default_instance_); +} +inline const ::pg_query::Node& AlterObjectDependsStmt::extname() const { + // @@protoc_insertion_point(field_get:pg_query.AlterObjectDependsStmt.extname) + return _internal_extname(); +} +inline void AlterObjectDependsStmt::unsafe_arena_set_allocated_extname( + ::pg_query::Node* extname) { + if (GetArena() == nullptr) { + delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(extname_); + } + extname_ = extname; + if (extname) { + + } else { + + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.AlterObjectDependsStmt.extname) +} +inline ::pg_query::Node* AlterObjectDependsStmt::release_extname() { + + ::pg_query::Node* temp = extname_; + extname_ = nullptr; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + return temp; +} +inline ::pg_query::Node* AlterObjectDependsStmt::unsafe_arena_release_extname() { + // @@protoc_insertion_point(field_release:pg_query.AlterObjectDependsStmt.extname) + + ::pg_query::Node* temp = extname_; + extname_ = nullptr; + return temp; +} +inline ::pg_query::Node* AlterObjectDependsStmt::_internal_mutable_extname() { + + if (extname_ == nullptr) { + auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); + extname_ = p; + } + return extname_; +} +inline ::pg_query::Node* AlterObjectDependsStmt::mutable_extname() { + // @@protoc_insertion_point(field_mutable:pg_query.AlterObjectDependsStmt.extname) + return _internal_mutable_extname(); +} +inline void AlterObjectDependsStmt::set_allocated_extname(::pg_query::Node* extname) { + ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); + if (message_arena == nullptr) { + delete extname_; + } + if (extname) { + ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = + ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(extname); + if (message_arena != submessage_arena) { + extname = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( + message_arena, extname, submessage_arena); + } + + } else { + + } + extname_ = extname; + // @@protoc_insertion_point(field_set_allocated:pg_query.AlterObjectDependsStmt.extname) +} + +// bool remove = 5 [json_name = "remove"]; +inline void AlterObjectDependsStmt::clear_remove() { + remove_ = false; +} +inline bool AlterObjectDependsStmt::_internal_remove() const { + return remove_; +} +inline bool AlterObjectDependsStmt::remove() const { + // @@protoc_insertion_point(field_get:pg_query.AlterObjectDependsStmt.remove) + return _internal_remove(); +} +inline void AlterObjectDependsStmt::_internal_set_remove(bool value) { + + remove_ = value; +} +inline void AlterObjectDependsStmt::set_remove(bool value) { + _internal_set_remove(value); + // @@protoc_insertion_point(field_set:pg_query.AlterObjectDependsStmt.remove) +} + +// ------------------------------------------------------------------- + +// AlterObjectSchemaStmt + +// .pg_query.ObjectType object_type = 1 [json_name = "objectType"]; +inline void AlterObjectSchemaStmt::clear_object_type() { + object_type_ = 0; +} +inline ::pg_query::ObjectType AlterObjectSchemaStmt::_internal_object_type() const { + return static_cast< ::pg_query::ObjectType >(object_type_); +} +inline ::pg_query::ObjectType AlterObjectSchemaStmt::object_type() const { + // @@protoc_insertion_point(field_get:pg_query.AlterObjectSchemaStmt.object_type) + return _internal_object_type(); +} +inline void AlterObjectSchemaStmt::_internal_set_object_type(::pg_query::ObjectType value) { + + object_type_ = value; +} +inline void AlterObjectSchemaStmt::set_object_type(::pg_query::ObjectType value) { + _internal_set_object_type(value); + // @@protoc_insertion_point(field_set:pg_query.AlterObjectSchemaStmt.object_type) +} + +// .pg_query.RangeVar relation = 2 [json_name = "relation"]; +inline bool AlterObjectSchemaStmt::_internal_has_relation() const { + return this != internal_default_instance() && relation_ != nullptr; +} +inline bool AlterObjectSchemaStmt::has_relation() const { + return _internal_has_relation(); +} +inline void AlterObjectSchemaStmt::clear_relation() { + if (GetArena() == nullptr && relation_ != nullptr) { + delete relation_; + } + relation_ = nullptr; +} +inline const ::pg_query::RangeVar& AlterObjectSchemaStmt::_internal_relation() const { + const ::pg_query::RangeVar* p = relation_; + return p != nullptr ? *p : reinterpret_cast( + ::pg_query::_RangeVar_default_instance_); +} +inline const ::pg_query::RangeVar& AlterObjectSchemaStmt::relation() const { + // @@protoc_insertion_point(field_get:pg_query.AlterObjectSchemaStmt.relation) + return _internal_relation(); +} +inline void AlterObjectSchemaStmt::unsafe_arena_set_allocated_relation( + ::pg_query::RangeVar* relation) { + if (GetArena() == nullptr) { + delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(relation_); + } + relation_ = relation; + if (relation) { + + } else { + + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.AlterObjectSchemaStmt.relation) +} +inline ::pg_query::RangeVar* AlterObjectSchemaStmt::release_relation() { + + ::pg_query::RangeVar* temp = relation_; + relation_ = nullptr; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + return temp; +} +inline ::pg_query::RangeVar* AlterObjectSchemaStmt::unsafe_arena_release_relation() { + // @@protoc_insertion_point(field_release:pg_query.AlterObjectSchemaStmt.relation) + + ::pg_query::RangeVar* temp = relation_; + relation_ = nullptr; + return temp; +} +inline ::pg_query::RangeVar* AlterObjectSchemaStmt::_internal_mutable_relation() { + + if (relation_ == nullptr) { + auto* p = CreateMaybeMessage<::pg_query::RangeVar>(GetArena()); + relation_ = p; + } + return relation_; +} +inline ::pg_query::RangeVar* AlterObjectSchemaStmt::mutable_relation() { + // @@protoc_insertion_point(field_mutable:pg_query.AlterObjectSchemaStmt.relation) + return _internal_mutable_relation(); +} +inline void AlterObjectSchemaStmt::set_allocated_relation(::pg_query::RangeVar* relation) { + ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); + if (message_arena == nullptr) { + delete relation_; + } + if (relation) { + ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = + ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(relation); + if (message_arena != submessage_arena) { + relation = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( + message_arena, relation, submessage_arena); + } + + } else { + + } + relation_ = relation; + // @@protoc_insertion_point(field_set_allocated:pg_query.AlterObjectSchemaStmt.relation) +} + +// .pg_query.Node object = 3 [json_name = "object"]; +inline bool AlterObjectSchemaStmt::_internal_has_object() const { + return this != internal_default_instance() && object_ != nullptr; +} +inline bool AlterObjectSchemaStmt::has_object() const { + return _internal_has_object(); +} +inline void AlterObjectSchemaStmt::clear_object() { + if (GetArena() == nullptr && object_ != nullptr) { + delete object_; + } + object_ = nullptr; +} +inline const ::pg_query::Node& AlterObjectSchemaStmt::_internal_object() const { + const ::pg_query::Node* p = object_; + return p != nullptr ? *p : reinterpret_cast( + ::pg_query::_Node_default_instance_); +} +inline const ::pg_query::Node& AlterObjectSchemaStmt::object() const { + // @@protoc_insertion_point(field_get:pg_query.AlterObjectSchemaStmt.object) + return _internal_object(); +} +inline void AlterObjectSchemaStmt::unsafe_arena_set_allocated_object( + ::pg_query::Node* object) { + if (GetArena() == nullptr) { + delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(object_); + } + object_ = object; + if (object) { + + } else { + + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.AlterObjectSchemaStmt.object) +} +inline ::pg_query::Node* AlterObjectSchemaStmt::release_object() { + + ::pg_query::Node* temp = object_; + object_ = nullptr; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + return temp; +} +inline ::pg_query::Node* AlterObjectSchemaStmt::unsafe_arena_release_object() { + // @@protoc_insertion_point(field_release:pg_query.AlterObjectSchemaStmt.object) + + ::pg_query::Node* temp = object_; + object_ = nullptr; + return temp; +} +inline ::pg_query::Node* AlterObjectSchemaStmt::_internal_mutable_object() { + + if (object_ == nullptr) { + auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); + object_ = p; + } + return object_; +} +inline ::pg_query::Node* AlterObjectSchemaStmt::mutable_object() { + // @@protoc_insertion_point(field_mutable:pg_query.AlterObjectSchemaStmt.object) + return _internal_mutable_object(); +} +inline void AlterObjectSchemaStmt::set_allocated_object(::pg_query::Node* object) { + ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); + if (message_arena == nullptr) { + delete object_; + } + if (object) { + ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = + ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(object); + if (message_arena != submessage_arena) { + object = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( + message_arena, object, submessage_arena); + } + + } else { + + } + object_ = object; + // @@protoc_insertion_point(field_set_allocated:pg_query.AlterObjectSchemaStmt.object) +} + +// string newschema = 4 [json_name = "newschema"]; +inline void AlterObjectSchemaStmt::clear_newschema() { + newschema_.ClearToEmpty(); +} +inline const std::string& AlterObjectSchemaStmt::newschema() const { + // @@protoc_insertion_point(field_get:pg_query.AlterObjectSchemaStmt.newschema) + return _internal_newschema(); +} +inline void AlterObjectSchemaStmt::set_newschema(const std::string& value) { + _internal_set_newschema(value); + // @@protoc_insertion_point(field_set:pg_query.AlterObjectSchemaStmt.newschema) +} +inline std::string* AlterObjectSchemaStmt::mutable_newschema() { + // @@protoc_insertion_point(field_mutable:pg_query.AlterObjectSchemaStmt.newschema) + return _internal_mutable_newschema(); +} +inline const std::string& AlterObjectSchemaStmt::_internal_newschema() const { + return newschema_.Get(); +} +inline void AlterObjectSchemaStmt::_internal_set_newschema(const std::string& value) { + + newschema_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArena()); +} +inline void AlterObjectSchemaStmt::set_newschema(std::string&& value) { + + newschema_.Set( + ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::move(value), GetArena()); + // @@protoc_insertion_point(field_set_rvalue:pg_query.AlterObjectSchemaStmt.newschema) +} +inline void AlterObjectSchemaStmt::set_newschema(const char* value) { + GOOGLE_DCHECK(value != nullptr); + + newschema_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string(value), GetArena()); + // @@protoc_insertion_point(field_set_char:pg_query.AlterObjectSchemaStmt.newschema) +} +inline void AlterObjectSchemaStmt::set_newschema(const char* value, + size_t size) { + + newschema_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string( + reinterpret_cast(value), size), GetArena()); + // @@protoc_insertion_point(field_set_pointer:pg_query.AlterObjectSchemaStmt.newschema) +} +inline std::string* AlterObjectSchemaStmt::_internal_mutable_newschema() { + + return newschema_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArena()); +} +inline std::string* AlterObjectSchemaStmt::release_newschema() { + // @@protoc_insertion_point(field_release:pg_query.AlterObjectSchemaStmt.newschema) + return newschema_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); +} +inline void AlterObjectSchemaStmt::set_allocated_newschema(std::string* newschema) { + if (newschema != nullptr) { + + } else { + + } + newschema_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), newschema, + GetArena()); + // @@protoc_insertion_point(field_set_allocated:pg_query.AlterObjectSchemaStmt.newschema) +} + +// bool missing_ok = 5 [json_name = "missing_ok"]; +inline void AlterObjectSchemaStmt::clear_missing_ok() { + missing_ok_ = false; +} +inline bool AlterObjectSchemaStmt::_internal_missing_ok() const { + return missing_ok_; +} +inline bool AlterObjectSchemaStmt::missing_ok() const { + // @@protoc_insertion_point(field_get:pg_query.AlterObjectSchemaStmt.missing_ok) + return _internal_missing_ok(); +} +inline void AlterObjectSchemaStmt::_internal_set_missing_ok(bool value) { + + missing_ok_ = value; +} +inline void AlterObjectSchemaStmt::set_missing_ok(bool value) { + _internal_set_missing_ok(value); + // @@protoc_insertion_point(field_set:pg_query.AlterObjectSchemaStmt.missing_ok) +} + +// ------------------------------------------------------------------- + +// AlterOwnerStmt + +// .pg_query.ObjectType object_type = 1 [json_name = "objectType"]; +inline void AlterOwnerStmt::clear_object_type() { + object_type_ = 0; +} +inline ::pg_query::ObjectType AlterOwnerStmt::_internal_object_type() const { + return static_cast< ::pg_query::ObjectType >(object_type_); +} +inline ::pg_query::ObjectType AlterOwnerStmt::object_type() const { + // @@protoc_insertion_point(field_get:pg_query.AlterOwnerStmt.object_type) + return _internal_object_type(); +} +inline void AlterOwnerStmt::_internal_set_object_type(::pg_query::ObjectType value) { + + object_type_ = value; +} +inline void AlterOwnerStmt::set_object_type(::pg_query::ObjectType value) { + _internal_set_object_type(value); + // @@protoc_insertion_point(field_set:pg_query.AlterOwnerStmt.object_type) +} + +// .pg_query.RangeVar relation = 2 [json_name = "relation"]; +inline bool AlterOwnerStmt::_internal_has_relation() const { + return this != internal_default_instance() && relation_ != nullptr; +} +inline bool AlterOwnerStmt::has_relation() const { + return _internal_has_relation(); +} +inline void AlterOwnerStmt::clear_relation() { + if (GetArena() == nullptr && relation_ != nullptr) { + delete relation_; + } + relation_ = nullptr; +} +inline const ::pg_query::RangeVar& AlterOwnerStmt::_internal_relation() const { + const ::pg_query::RangeVar* p = relation_; + return p != nullptr ? *p : reinterpret_cast( + ::pg_query::_RangeVar_default_instance_); +} +inline const ::pg_query::RangeVar& AlterOwnerStmt::relation() const { + // @@protoc_insertion_point(field_get:pg_query.AlterOwnerStmt.relation) + return _internal_relation(); +} +inline void AlterOwnerStmt::unsafe_arena_set_allocated_relation( + ::pg_query::RangeVar* relation) { + if (GetArena() == nullptr) { + delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(relation_); + } + relation_ = relation; + if (relation) { + + } else { + + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.AlterOwnerStmt.relation) +} +inline ::pg_query::RangeVar* AlterOwnerStmt::release_relation() { + + ::pg_query::RangeVar* temp = relation_; + relation_ = nullptr; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + return temp; +} +inline ::pg_query::RangeVar* AlterOwnerStmt::unsafe_arena_release_relation() { + // @@protoc_insertion_point(field_release:pg_query.AlterOwnerStmt.relation) + + ::pg_query::RangeVar* temp = relation_; + relation_ = nullptr; + return temp; +} +inline ::pg_query::RangeVar* AlterOwnerStmt::_internal_mutable_relation() { + + if (relation_ == nullptr) { + auto* p = CreateMaybeMessage<::pg_query::RangeVar>(GetArena()); + relation_ = p; + } + return relation_; +} +inline ::pg_query::RangeVar* AlterOwnerStmt::mutable_relation() { + // @@protoc_insertion_point(field_mutable:pg_query.AlterOwnerStmt.relation) + return _internal_mutable_relation(); +} +inline void AlterOwnerStmt::set_allocated_relation(::pg_query::RangeVar* relation) { + ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); + if (message_arena == nullptr) { + delete relation_; + } + if (relation) { + ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = + ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(relation); + if (message_arena != submessage_arena) { + relation = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( + message_arena, relation, submessage_arena); + } + + } else { + + } + relation_ = relation; + // @@protoc_insertion_point(field_set_allocated:pg_query.AlterOwnerStmt.relation) +} + +// .pg_query.Node object = 3 [json_name = "object"]; +inline bool AlterOwnerStmt::_internal_has_object() const { + return this != internal_default_instance() && object_ != nullptr; +} +inline bool AlterOwnerStmt::has_object() const { + return _internal_has_object(); +} +inline void AlterOwnerStmt::clear_object() { + if (GetArena() == nullptr && object_ != nullptr) { + delete object_; + } + object_ = nullptr; +} +inline const ::pg_query::Node& AlterOwnerStmt::_internal_object() const { + const ::pg_query::Node* p = object_; + return p != nullptr ? *p : reinterpret_cast( + ::pg_query::_Node_default_instance_); +} +inline const ::pg_query::Node& AlterOwnerStmt::object() const { + // @@protoc_insertion_point(field_get:pg_query.AlterOwnerStmt.object) + return _internal_object(); +} +inline void AlterOwnerStmt::unsafe_arena_set_allocated_object( + ::pg_query::Node* object) { + if (GetArena() == nullptr) { + delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(object_); + } + object_ = object; + if (object) { + + } else { + + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.AlterOwnerStmt.object) +} +inline ::pg_query::Node* AlterOwnerStmt::release_object() { + + ::pg_query::Node* temp = object_; + object_ = nullptr; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + return temp; +} +inline ::pg_query::Node* AlterOwnerStmt::unsafe_arena_release_object() { + // @@protoc_insertion_point(field_release:pg_query.AlterOwnerStmt.object) + + ::pg_query::Node* temp = object_; + object_ = nullptr; + return temp; +} +inline ::pg_query::Node* AlterOwnerStmt::_internal_mutable_object() { + + if (object_ == nullptr) { + auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); + object_ = p; + } + return object_; +} +inline ::pg_query::Node* AlterOwnerStmt::mutable_object() { + // @@protoc_insertion_point(field_mutable:pg_query.AlterOwnerStmt.object) + return _internal_mutable_object(); +} +inline void AlterOwnerStmt::set_allocated_object(::pg_query::Node* object) { + ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); + if (message_arena == nullptr) { + delete object_; + } + if (object) { + ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = + ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(object); + if (message_arena != submessage_arena) { + object = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( + message_arena, object, submessage_arena); + } + + } else { + + } + object_ = object; + // @@protoc_insertion_point(field_set_allocated:pg_query.AlterOwnerStmt.object) +} + +// .pg_query.RoleSpec newowner = 4 [json_name = "newowner"]; +inline bool AlterOwnerStmt::_internal_has_newowner() const { + return this != internal_default_instance() && newowner_ != nullptr; +} +inline bool AlterOwnerStmt::has_newowner() const { + return _internal_has_newowner(); +} +inline void AlterOwnerStmt::clear_newowner() { + if (GetArena() == nullptr && newowner_ != nullptr) { + delete newowner_; + } + newowner_ = nullptr; +} +inline const ::pg_query::RoleSpec& AlterOwnerStmt::_internal_newowner() const { + const ::pg_query::RoleSpec* p = newowner_; + return p != nullptr ? *p : reinterpret_cast( + ::pg_query::_RoleSpec_default_instance_); +} +inline const ::pg_query::RoleSpec& AlterOwnerStmt::newowner() const { + // @@protoc_insertion_point(field_get:pg_query.AlterOwnerStmt.newowner) + return _internal_newowner(); +} +inline void AlterOwnerStmt::unsafe_arena_set_allocated_newowner( + ::pg_query::RoleSpec* newowner) { + if (GetArena() == nullptr) { + delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(newowner_); + } + newowner_ = newowner; + if (newowner) { + + } else { + + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.AlterOwnerStmt.newowner) +} +inline ::pg_query::RoleSpec* AlterOwnerStmt::release_newowner() { + + ::pg_query::RoleSpec* temp = newowner_; + newowner_ = nullptr; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + return temp; +} +inline ::pg_query::RoleSpec* AlterOwnerStmt::unsafe_arena_release_newowner() { + // @@protoc_insertion_point(field_release:pg_query.AlterOwnerStmt.newowner) + + ::pg_query::RoleSpec* temp = newowner_; + newowner_ = nullptr; + return temp; +} +inline ::pg_query::RoleSpec* AlterOwnerStmt::_internal_mutable_newowner() { + + if (newowner_ == nullptr) { + auto* p = CreateMaybeMessage<::pg_query::RoleSpec>(GetArena()); + newowner_ = p; + } + return newowner_; +} +inline ::pg_query::RoleSpec* AlterOwnerStmt::mutable_newowner() { + // @@protoc_insertion_point(field_mutable:pg_query.AlterOwnerStmt.newowner) + return _internal_mutable_newowner(); +} +inline void AlterOwnerStmt::set_allocated_newowner(::pg_query::RoleSpec* newowner) { + ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); + if (message_arena == nullptr) { + delete newowner_; + } + if (newowner) { + ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = + ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(newowner); + if (message_arena != submessage_arena) { + newowner = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( + message_arena, newowner, submessage_arena); + } + + } else { + + } + newowner_ = newowner; + // @@protoc_insertion_point(field_set_allocated:pg_query.AlterOwnerStmt.newowner) +} + +// ------------------------------------------------------------------- + +// AlterOperatorStmt + +// .pg_query.ObjectWithArgs opername = 1 [json_name = "opername"]; +inline bool AlterOperatorStmt::_internal_has_opername() const { + return this != internal_default_instance() && opername_ != nullptr; +} +inline bool AlterOperatorStmt::has_opername() const { + return _internal_has_opername(); +} +inline void AlterOperatorStmt::clear_opername() { + if (GetArena() == nullptr && opername_ != nullptr) { + delete opername_; + } + opername_ = nullptr; +} +inline const ::pg_query::ObjectWithArgs& AlterOperatorStmt::_internal_opername() const { + const ::pg_query::ObjectWithArgs* p = opername_; + return p != nullptr ? *p : reinterpret_cast( + ::pg_query::_ObjectWithArgs_default_instance_); +} +inline const ::pg_query::ObjectWithArgs& AlterOperatorStmt::opername() const { + // @@protoc_insertion_point(field_get:pg_query.AlterOperatorStmt.opername) + return _internal_opername(); +} +inline void AlterOperatorStmt::unsafe_arena_set_allocated_opername( + ::pg_query::ObjectWithArgs* opername) { + if (GetArena() == nullptr) { + delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(opername_); + } + opername_ = opername; + if (opername) { + + } else { + + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.AlterOperatorStmt.opername) +} +inline ::pg_query::ObjectWithArgs* AlterOperatorStmt::release_opername() { + + ::pg_query::ObjectWithArgs* temp = opername_; + opername_ = nullptr; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + return temp; +} +inline ::pg_query::ObjectWithArgs* AlterOperatorStmt::unsafe_arena_release_opername() { + // @@protoc_insertion_point(field_release:pg_query.AlterOperatorStmt.opername) + + ::pg_query::ObjectWithArgs* temp = opername_; + opername_ = nullptr; + return temp; +} +inline ::pg_query::ObjectWithArgs* AlterOperatorStmt::_internal_mutable_opername() { + + if (opername_ == nullptr) { + auto* p = CreateMaybeMessage<::pg_query::ObjectWithArgs>(GetArena()); + opername_ = p; + } + return opername_; +} +inline ::pg_query::ObjectWithArgs* AlterOperatorStmt::mutable_opername() { + // @@protoc_insertion_point(field_mutable:pg_query.AlterOperatorStmt.opername) + return _internal_mutable_opername(); +} +inline void AlterOperatorStmt::set_allocated_opername(::pg_query::ObjectWithArgs* opername) { + ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); + if (message_arena == nullptr) { + delete opername_; + } + if (opername) { + ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = + ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(opername); + if (message_arena != submessage_arena) { + opername = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( + message_arena, opername, submessage_arena); + } + + } else { + + } + opername_ = opername; + // @@protoc_insertion_point(field_set_allocated:pg_query.AlterOperatorStmt.opername) +} + +// repeated .pg_query.Node options = 2 [json_name = "options"]; +inline int AlterOperatorStmt::_internal_options_size() const { + return options_.size(); +} +inline int AlterOperatorStmt::options_size() const { + return _internal_options_size(); +} +inline void AlterOperatorStmt::clear_options() { + options_.Clear(); +} +inline ::pg_query::Node* AlterOperatorStmt::mutable_options(int index) { + // @@protoc_insertion_point(field_mutable:pg_query.AlterOperatorStmt.options) + return options_.Mutable(index); +} +inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* +AlterOperatorStmt::mutable_options() { + // @@protoc_insertion_point(field_mutable_list:pg_query.AlterOperatorStmt.options) + return &options_; +} +inline const ::pg_query::Node& AlterOperatorStmt::_internal_options(int index) const { + return options_.Get(index); +} +inline const ::pg_query::Node& AlterOperatorStmt::options(int index) const { + // @@protoc_insertion_point(field_get:pg_query.AlterOperatorStmt.options) + return _internal_options(index); +} +inline ::pg_query::Node* AlterOperatorStmt::_internal_add_options() { + return options_.Add(); +} +inline ::pg_query::Node* AlterOperatorStmt::add_options() { + // @@protoc_insertion_point(field_add:pg_query.AlterOperatorStmt.options) + return _internal_add_options(); +} +inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& +AlterOperatorStmt::options() const { + // @@protoc_insertion_point(field_list:pg_query.AlterOperatorStmt.options) + return options_; +} + +// ------------------------------------------------------------------- + +// AlterTypeStmt + +// repeated .pg_query.Node type_name = 1 [json_name = "typeName"]; +inline int AlterTypeStmt::_internal_type_name_size() const { + return type_name_.size(); +} +inline int AlterTypeStmt::type_name_size() const { + return _internal_type_name_size(); +} +inline void AlterTypeStmt::clear_type_name() { + type_name_.Clear(); +} +inline ::pg_query::Node* AlterTypeStmt::mutable_type_name(int index) { + // @@protoc_insertion_point(field_mutable:pg_query.AlterTypeStmt.type_name) + return type_name_.Mutable(index); +} +inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* +AlterTypeStmt::mutable_type_name() { + // @@protoc_insertion_point(field_mutable_list:pg_query.AlterTypeStmt.type_name) + return &type_name_; +} +inline const ::pg_query::Node& AlterTypeStmt::_internal_type_name(int index) const { + return type_name_.Get(index); +} +inline const ::pg_query::Node& AlterTypeStmt::type_name(int index) const { + // @@protoc_insertion_point(field_get:pg_query.AlterTypeStmt.type_name) + return _internal_type_name(index); +} +inline ::pg_query::Node* AlterTypeStmt::_internal_add_type_name() { + return type_name_.Add(); +} +inline ::pg_query::Node* AlterTypeStmt::add_type_name() { + // @@protoc_insertion_point(field_add:pg_query.AlterTypeStmt.type_name) + return _internal_add_type_name(); +} +inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& +AlterTypeStmt::type_name() const { + // @@protoc_insertion_point(field_list:pg_query.AlterTypeStmt.type_name) + return type_name_; +} + +// repeated .pg_query.Node options = 2 [json_name = "options"]; +inline int AlterTypeStmt::_internal_options_size() const { + return options_.size(); +} +inline int AlterTypeStmt::options_size() const { + return _internal_options_size(); +} +inline void AlterTypeStmt::clear_options() { + options_.Clear(); +} +inline ::pg_query::Node* AlterTypeStmt::mutable_options(int index) { + // @@protoc_insertion_point(field_mutable:pg_query.AlterTypeStmt.options) + return options_.Mutable(index); +} +inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* +AlterTypeStmt::mutable_options() { + // @@protoc_insertion_point(field_mutable_list:pg_query.AlterTypeStmt.options) + return &options_; +} +inline const ::pg_query::Node& AlterTypeStmt::_internal_options(int index) const { + return options_.Get(index); +} +inline const ::pg_query::Node& AlterTypeStmt::options(int index) const { + // @@protoc_insertion_point(field_get:pg_query.AlterTypeStmt.options) + return _internal_options(index); +} +inline ::pg_query::Node* AlterTypeStmt::_internal_add_options() { + return options_.Add(); +} +inline ::pg_query::Node* AlterTypeStmt::add_options() { + // @@protoc_insertion_point(field_add:pg_query.AlterTypeStmt.options) + return _internal_add_options(); +} +inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& +AlterTypeStmt::options() const { + // @@protoc_insertion_point(field_list:pg_query.AlterTypeStmt.options) + return options_; +} + +// ------------------------------------------------------------------- + +// DropOwnedStmt + +// repeated .pg_query.Node roles = 1 [json_name = "roles"]; +inline int DropOwnedStmt::_internal_roles_size() const { + return roles_.size(); +} +inline int DropOwnedStmt::roles_size() const { + return _internal_roles_size(); +} +inline void DropOwnedStmt::clear_roles() { + roles_.Clear(); +} +inline ::pg_query::Node* DropOwnedStmt::mutable_roles(int index) { + // @@protoc_insertion_point(field_mutable:pg_query.DropOwnedStmt.roles) + return roles_.Mutable(index); +} +inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* +DropOwnedStmt::mutable_roles() { + // @@protoc_insertion_point(field_mutable_list:pg_query.DropOwnedStmt.roles) + return &roles_; +} +inline const ::pg_query::Node& DropOwnedStmt::_internal_roles(int index) const { + return roles_.Get(index); +} +inline const ::pg_query::Node& DropOwnedStmt::roles(int index) const { + // @@protoc_insertion_point(field_get:pg_query.DropOwnedStmt.roles) + return _internal_roles(index); +} +inline ::pg_query::Node* DropOwnedStmt::_internal_add_roles() { + return roles_.Add(); +} +inline ::pg_query::Node* DropOwnedStmt::add_roles() { + // @@protoc_insertion_point(field_add:pg_query.DropOwnedStmt.roles) + return _internal_add_roles(); +} +inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& +DropOwnedStmt::roles() const { + // @@protoc_insertion_point(field_list:pg_query.DropOwnedStmt.roles) + return roles_; +} + +// .pg_query.DropBehavior behavior = 2 [json_name = "behavior"]; +inline void DropOwnedStmt::clear_behavior() { + behavior_ = 0; +} +inline ::pg_query::DropBehavior DropOwnedStmt::_internal_behavior() const { + return static_cast< ::pg_query::DropBehavior >(behavior_); +} +inline ::pg_query::DropBehavior DropOwnedStmt::behavior() const { + // @@protoc_insertion_point(field_get:pg_query.DropOwnedStmt.behavior) + return _internal_behavior(); +} +inline void DropOwnedStmt::_internal_set_behavior(::pg_query::DropBehavior value) { + + behavior_ = value; +} +inline void DropOwnedStmt::set_behavior(::pg_query::DropBehavior value) { + _internal_set_behavior(value); + // @@protoc_insertion_point(field_set:pg_query.DropOwnedStmt.behavior) +} + +// ------------------------------------------------------------------- + +// ReassignOwnedStmt + +// repeated .pg_query.Node roles = 1 [json_name = "roles"]; +inline int ReassignOwnedStmt::_internal_roles_size() const { + return roles_.size(); +} +inline int ReassignOwnedStmt::roles_size() const { + return _internal_roles_size(); +} +inline void ReassignOwnedStmt::clear_roles() { + roles_.Clear(); +} +inline ::pg_query::Node* ReassignOwnedStmt::mutable_roles(int index) { + // @@protoc_insertion_point(field_mutable:pg_query.ReassignOwnedStmt.roles) + return roles_.Mutable(index); +} +inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* +ReassignOwnedStmt::mutable_roles() { + // @@protoc_insertion_point(field_mutable_list:pg_query.ReassignOwnedStmt.roles) + return &roles_; +} +inline const ::pg_query::Node& ReassignOwnedStmt::_internal_roles(int index) const { + return roles_.Get(index); +} +inline const ::pg_query::Node& ReassignOwnedStmt::roles(int index) const { + // @@protoc_insertion_point(field_get:pg_query.ReassignOwnedStmt.roles) + return _internal_roles(index); +} +inline ::pg_query::Node* ReassignOwnedStmt::_internal_add_roles() { + return roles_.Add(); +} +inline ::pg_query::Node* ReassignOwnedStmt::add_roles() { + // @@protoc_insertion_point(field_add:pg_query.ReassignOwnedStmt.roles) + return _internal_add_roles(); +} +inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& +ReassignOwnedStmt::roles() const { + // @@protoc_insertion_point(field_list:pg_query.ReassignOwnedStmt.roles) + return roles_; +} + +// .pg_query.RoleSpec newrole = 2 [json_name = "newrole"]; +inline bool ReassignOwnedStmt::_internal_has_newrole() const { + return this != internal_default_instance() && newrole_ != nullptr; +} +inline bool ReassignOwnedStmt::has_newrole() const { + return _internal_has_newrole(); +} +inline void ReassignOwnedStmt::clear_newrole() { + if (GetArena() == nullptr && newrole_ != nullptr) { + delete newrole_; + } + newrole_ = nullptr; +} +inline const ::pg_query::RoleSpec& ReassignOwnedStmt::_internal_newrole() const { + const ::pg_query::RoleSpec* p = newrole_; + return p != nullptr ? *p : reinterpret_cast( + ::pg_query::_RoleSpec_default_instance_); +} +inline const ::pg_query::RoleSpec& ReassignOwnedStmt::newrole() const { + // @@protoc_insertion_point(field_get:pg_query.ReassignOwnedStmt.newrole) + return _internal_newrole(); +} +inline void ReassignOwnedStmt::unsafe_arena_set_allocated_newrole( + ::pg_query::RoleSpec* newrole) { + if (GetArena() == nullptr) { + delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(newrole_); + } + newrole_ = newrole; + if (newrole) { + + } else { + + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.ReassignOwnedStmt.newrole) +} +inline ::pg_query::RoleSpec* ReassignOwnedStmt::release_newrole() { + + ::pg_query::RoleSpec* temp = newrole_; + newrole_ = nullptr; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + return temp; +} +inline ::pg_query::RoleSpec* ReassignOwnedStmt::unsafe_arena_release_newrole() { + // @@protoc_insertion_point(field_release:pg_query.ReassignOwnedStmt.newrole) + + ::pg_query::RoleSpec* temp = newrole_; + newrole_ = nullptr; + return temp; +} +inline ::pg_query::RoleSpec* ReassignOwnedStmt::_internal_mutable_newrole() { + + if (newrole_ == nullptr) { + auto* p = CreateMaybeMessage<::pg_query::RoleSpec>(GetArena()); + newrole_ = p; + } + return newrole_; +} +inline ::pg_query::RoleSpec* ReassignOwnedStmt::mutable_newrole() { + // @@protoc_insertion_point(field_mutable:pg_query.ReassignOwnedStmt.newrole) + return _internal_mutable_newrole(); +} +inline void ReassignOwnedStmt::set_allocated_newrole(::pg_query::RoleSpec* newrole) { + ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); + if (message_arena == nullptr) { + delete newrole_; + } + if (newrole) { + ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = + ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(newrole); + if (message_arena != submessage_arena) { + newrole = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( + message_arena, newrole, submessage_arena); + } + + } else { + + } + newrole_ = newrole; + // @@protoc_insertion_point(field_set_allocated:pg_query.ReassignOwnedStmt.newrole) +} + +// ------------------------------------------------------------------- + +// CompositeTypeStmt + +// .pg_query.RangeVar typevar = 1 [json_name = "typevar"]; +inline bool CompositeTypeStmt::_internal_has_typevar() const { + return this != internal_default_instance() && typevar_ != nullptr; +} +inline bool CompositeTypeStmt::has_typevar() const { + return _internal_has_typevar(); +} +inline void CompositeTypeStmt::clear_typevar() { + if (GetArena() == nullptr && typevar_ != nullptr) { + delete typevar_; + } + typevar_ = nullptr; +} +inline const ::pg_query::RangeVar& CompositeTypeStmt::_internal_typevar() const { + const ::pg_query::RangeVar* p = typevar_; + return p != nullptr ? *p : reinterpret_cast( + ::pg_query::_RangeVar_default_instance_); +} +inline const ::pg_query::RangeVar& CompositeTypeStmt::typevar() const { + // @@protoc_insertion_point(field_get:pg_query.CompositeTypeStmt.typevar) + return _internal_typevar(); +} +inline void CompositeTypeStmt::unsafe_arena_set_allocated_typevar( + ::pg_query::RangeVar* typevar) { + if (GetArena() == nullptr) { + delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(typevar_); + } + typevar_ = typevar; + if (typevar) { + + } else { + + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.CompositeTypeStmt.typevar) +} +inline ::pg_query::RangeVar* CompositeTypeStmt::release_typevar() { + + ::pg_query::RangeVar* temp = typevar_; + typevar_ = nullptr; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + return temp; +} +inline ::pg_query::RangeVar* CompositeTypeStmt::unsafe_arena_release_typevar() { + // @@protoc_insertion_point(field_release:pg_query.CompositeTypeStmt.typevar) + + ::pg_query::RangeVar* temp = typevar_; + typevar_ = nullptr; + return temp; +} +inline ::pg_query::RangeVar* CompositeTypeStmt::_internal_mutable_typevar() { + + if (typevar_ == nullptr) { + auto* p = CreateMaybeMessage<::pg_query::RangeVar>(GetArena()); + typevar_ = p; + } + return typevar_; +} +inline ::pg_query::RangeVar* CompositeTypeStmt::mutable_typevar() { + // @@protoc_insertion_point(field_mutable:pg_query.CompositeTypeStmt.typevar) + return _internal_mutable_typevar(); +} +inline void CompositeTypeStmt::set_allocated_typevar(::pg_query::RangeVar* typevar) { + ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); + if (message_arena == nullptr) { + delete typevar_; + } + if (typevar) { + ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = + ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(typevar); + if (message_arena != submessage_arena) { + typevar = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( + message_arena, typevar, submessage_arena); + } + + } else { + + } + typevar_ = typevar; + // @@protoc_insertion_point(field_set_allocated:pg_query.CompositeTypeStmt.typevar) +} + +// repeated .pg_query.Node coldeflist = 2 [json_name = "coldeflist"]; +inline int CompositeTypeStmt::_internal_coldeflist_size() const { + return coldeflist_.size(); +} +inline int CompositeTypeStmt::coldeflist_size() const { + return _internal_coldeflist_size(); +} +inline void CompositeTypeStmt::clear_coldeflist() { + coldeflist_.Clear(); +} +inline ::pg_query::Node* CompositeTypeStmt::mutable_coldeflist(int index) { + // @@protoc_insertion_point(field_mutable:pg_query.CompositeTypeStmt.coldeflist) + return coldeflist_.Mutable(index); +} +inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* +CompositeTypeStmt::mutable_coldeflist() { + // @@protoc_insertion_point(field_mutable_list:pg_query.CompositeTypeStmt.coldeflist) + return &coldeflist_; +} +inline const ::pg_query::Node& CompositeTypeStmt::_internal_coldeflist(int index) const { + return coldeflist_.Get(index); +} +inline const ::pg_query::Node& CompositeTypeStmt::coldeflist(int index) const { + // @@protoc_insertion_point(field_get:pg_query.CompositeTypeStmt.coldeflist) + return _internal_coldeflist(index); +} +inline ::pg_query::Node* CompositeTypeStmt::_internal_add_coldeflist() { + return coldeflist_.Add(); +} +inline ::pg_query::Node* CompositeTypeStmt::add_coldeflist() { + // @@protoc_insertion_point(field_add:pg_query.CompositeTypeStmt.coldeflist) + return _internal_add_coldeflist(); +} +inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& +CompositeTypeStmt::coldeflist() const { + // @@protoc_insertion_point(field_list:pg_query.CompositeTypeStmt.coldeflist) + return coldeflist_; +} + +// ------------------------------------------------------------------- + +// CreateEnumStmt + +// repeated .pg_query.Node type_name = 1 [json_name = "typeName"]; +inline int CreateEnumStmt::_internal_type_name_size() const { + return type_name_.size(); +} +inline int CreateEnumStmt::type_name_size() const { + return _internal_type_name_size(); +} +inline void CreateEnumStmt::clear_type_name() { + type_name_.Clear(); +} +inline ::pg_query::Node* CreateEnumStmt::mutable_type_name(int index) { + // @@protoc_insertion_point(field_mutable:pg_query.CreateEnumStmt.type_name) + return type_name_.Mutable(index); +} +inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* +CreateEnumStmt::mutable_type_name() { + // @@protoc_insertion_point(field_mutable_list:pg_query.CreateEnumStmt.type_name) + return &type_name_; +} +inline const ::pg_query::Node& CreateEnumStmt::_internal_type_name(int index) const { + return type_name_.Get(index); +} +inline const ::pg_query::Node& CreateEnumStmt::type_name(int index) const { + // @@protoc_insertion_point(field_get:pg_query.CreateEnumStmt.type_name) + return _internal_type_name(index); +} +inline ::pg_query::Node* CreateEnumStmt::_internal_add_type_name() { + return type_name_.Add(); +} +inline ::pg_query::Node* CreateEnumStmt::add_type_name() { + // @@protoc_insertion_point(field_add:pg_query.CreateEnumStmt.type_name) + return _internal_add_type_name(); +} +inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& +CreateEnumStmt::type_name() const { + // @@protoc_insertion_point(field_list:pg_query.CreateEnumStmt.type_name) + return type_name_; +} + +// repeated .pg_query.Node vals = 2 [json_name = "vals"]; +inline int CreateEnumStmt::_internal_vals_size() const { + return vals_.size(); +} +inline int CreateEnumStmt::vals_size() const { + return _internal_vals_size(); +} +inline void CreateEnumStmt::clear_vals() { + vals_.Clear(); +} +inline ::pg_query::Node* CreateEnumStmt::mutable_vals(int index) { + // @@protoc_insertion_point(field_mutable:pg_query.CreateEnumStmt.vals) + return vals_.Mutable(index); +} +inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* +CreateEnumStmt::mutable_vals() { + // @@protoc_insertion_point(field_mutable_list:pg_query.CreateEnumStmt.vals) + return &vals_; +} +inline const ::pg_query::Node& CreateEnumStmt::_internal_vals(int index) const { + return vals_.Get(index); +} +inline const ::pg_query::Node& CreateEnumStmt::vals(int index) const { + // @@protoc_insertion_point(field_get:pg_query.CreateEnumStmt.vals) + return _internal_vals(index); +} +inline ::pg_query::Node* CreateEnumStmt::_internal_add_vals() { + return vals_.Add(); +} +inline ::pg_query::Node* CreateEnumStmt::add_vals() { + // @@protoc_insertion_point(field_add:pg_query.CreateEnumStmt.vals) + return _internal_add_vals(); +} +inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& +CreateEnumStmt::vals() const { + // @@protoc_insertion_point(field_list:pg_query.CreateEnumStmt.vals) + return vals_; +} + +// ------------------------------------------------------------------- + +// CreateRangeStmt + +// repeated .pg_query.Node type_name = 1 [json_name = "typeName"]; +inline int CreateRangeStmt::_internal_type_name_size() const { + return type_name_.size(); +} +inline int CreateRangeStmt::type_name_size() const { + return _internal_type_name_size(); +} +inline void CreateRangeStmt::clear_type_name() { + type_name_.Clear(); +} +inline ::pg_query::Node* CreateRangeStmt::mutable_type_name(int index) { + // @@protoc_insertion_point(field_mutable:pg_query.CreateRangeStmt.type_name) + return type_name_.Mutable(index); +} +inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* +CreateRangeStmt::mutable_type_name() { + // @@protoc_insertion_point(field_mutable_list:pg_query.CreateRangeStmt.type_name) + return &type_name_; +} +inline const ::pg_query::Node& CreateRangeStmt::_internal_type_name(int index) const { + return type_name_.Get(index); +} +inline const ::pg_query::Node& CreateRangeStmt::type_name(int index) const { + // @@protoc_insertion_point(field_get:pg_query.CreateRangeStmt.type_name) + return _internal_type_name(index); +} +inline ::pg_query::Node* CreateRangeStmt::_internal_add_type_name() { + return type_name_.Add(); +} +inline ::pg_query::Node* CreateRangeStmt::add_type_name() { + // @@protoc_insertion_point(field_add:pg_query.CreateRangeStmt.type_name) + return _internal_add_type_name(); +} +inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& +CreateRangeStmt::type_name() const { + // @@protoc_insertion_point(field_list:pg_query.CreateRangeStmt.type_name) + return type_name_; +} + +// repeated .pg_query.Node params = 2 [json_name = "params"]; +inline int CreateRangeStmt::_internal_params_size() const { + return params_.size(); +} +inline int CreateRangeStmt::params_size() const { + return _internal_params_size(); +} +inline void CreateRangeStmt::clear_params() { + params_.Clear(); +} +inline ::pg_query::Node* CreateRangeStmt::mutable_params(int index) { + // @@protoc_insertion_point(field_mutable:pg_query.CreateRangeStmt.params) + return params_.Mutable(index); +} +inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* +CreateRangeStmt::mutable_params() { + // @@protoc_insertion_point(field_mutable_list:pg_query.CreateRangeStmt.params) + return ¶ms_; +} +inline const ::pg_query::Node& CreateRangeStmt::_internal_params(int index) const { + return params_.Get(index); +} +inline const ::pg_query::Node& CreateRangeStmt::params(int index) const { + // @@protoc_insertion_point(field_get:pg_query.CreateRangeStmt.params) + return _internal_params(index); +} +inline ::pg_query::Node* CreateRangeStmt::_internal_add_params() { + return params_.Add(); +} +inline ::pg_query::Node* CreateRangeStmt::add_params() { + // @@protoc_insertion_point(field_add:pg_query.CreateRangeStmt.params) + return _internal_add_params(); +} +inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& +CreateRangeStmt::params() const { + // @@protoc_insertion_point(field_list:pg_query.CreateRangeStmt.params) + return params_; +} + +// ------------------------------------------------------------------- + +// AlterEnumStmt + +// repeated .pg_query.Node type_name = 1 [json_name = "typeName"]; +inline int AlterEnumStmt::_internal_type_name_size() const { + return type_name_.size(); +} +inline int AlterEnumStmt::type_name_size() const { + return _internal_type_name_size(); +} +inline void AlterEnumStmt::clear_type_name() { + type_name_.Clear(); +} +inline ::pg_query::Node* AlterEnumStmt::mutable_type_name(int index) { + // @@protoc_insertion_point(field_mutable:pg_query.AlterEnumStmt.type_name) + return type_name_.Mutable(index); +} +inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* +AlterEnumStmt::mutable_type_name() { + // @@protoc_insertion_point(field_mutable_list:pg_query.AlterEnumStmt.type_name) + return &type_name_; +} +inline const ::pg_query::Node& AlterEnumStmt::_internal_type_name(int index) const { + return type_name_.Get(index); +} +inline const ::pg_query::Node& AlterEnumStmt::type_name(int index) const { + // @@protoc_insertion_point(field_get:pg_query.AlterEnumStmt.type_name) + return _internal_type_name(index); +} +inline ::pg_query::Node* AlterEnumStmt::_internal_add_type_name() { + return type_name_.Add(); +} +inline ::pg_query::Node* AlterEnumStmt::add_type_name() { + // @@protoc_insertion_point(field_add:pg_query.AlterEnumStmt.type_name) + return _internal_add_type_name(); +} +inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& +AlterEnumStmt::type_name() const { + // @@protoc_insertion_point(field_list:pg_query.AlterEnumStmt.type_name) + return type_name_; +} + +// string old_val = 2 [json_name = "oldVal"]; +inline void AlterEnumStmt::clear_old_val() { + old_val_.ClearToEmpty(); +} +inline const std::string& AlterEnumStmt::old_val() const { + // @@protoc_insertion_point(field_get:pg_query.AlterEnumStmt.old_val) + return _internal_old_val(); +} +inline void AlterEnumStmt::set_old_val(const std::string& value) { + _internal_set_old_val(value); + // @@protoc_insertion_point(field_set:pg_query.AlterEnumStmt.old_val) +} +inline std::string* AlterEnumStmt::mutable_old_val() { + // @@protoc_insertion_point(field_mutable:pg_query.AlterEnumStmt.old_val) + return _internal_mutable_old_val(); +} +inline const std::string& AlterEnumStmt::_internal_old_val() const { + return old_val_.Get(); +} +inline void AlterEnumStmt::_internal_set_old_val(const std::string& value) { + + old_val_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArena()); +} +inline void AlterEnumStmt::set_old_val(std::string&& value) { + + old_val_.Set( + ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::move(value), GetArena()); + // @@protoc_insertion_point(field_set_rvalue:pg_query.AlterEnumStmt.old_val) +} +inline void AlterEnumStmt::set_old_val(const char* value) { + GOOGLE_DCHECK(value != nullptr); + + old_val_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string(value), GetArena()); + // @@protoc_insertion_point(field_set_char:pg_query.AlterEnumStmt.old_val) +} +inline void AlterEnumStmt::set_old_val(const char* value, + size_t size) { + + old_val_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string( + reinterpret_cast(value), size), GetArena()); + // @@protoc_insertion_point(field_set_pointer:pg_query.AlterEnumStmt.old_val) +} +inline std::string* AlterEnumStmt::_internal_mutable_old_val() { + + return old_val_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArena()); +} +inline std::string* AlterEnumStmt::release_old_val() { + // @@protoc_insertion_point(field_release:pg_query.AlterEnumStmt.old_val) + return old_val_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); +} +inline void AlterEnumStmt::set_allocated_old_val(std::string* old_val) { + if (old_val != nullptr) { + + } else { + + } + old_val_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), old_val, + GetArena()); + // @@protoc_insertion_point(field_set_allocated:pg_query.AlterEnumStmt.old_val) +} + +// string new_val = 3 [json_name = "newVal"]; +inline void AlterEnumStmt::clear_new_val() { + new_val_.ClearToEmpty(); +} +inline const std::string& AlterEnumStmt::new_val() const { + // @@protoc_insertion_point(field_get:pg_query.AlterEnumStmt.new_val) + return _internal_new_val(); +} +inline void AlterEnumStmt::set_new_val(const std::string& value) { + _internal_set_new_val(value); + // @@protoc_insertion_point(field_set:pg_query.AlterEnumStmt.new_val) +} +inline std::string* AlterEnumStmt::mutable_new_val() { + // @@protoc_insertion_point(field_mutable:pg_query.AlterEnumStmt.new_val) + return _internal_mutable_new_val(); +} +inline const std::string& AlterEnumStmt::_internal_new_val() const { + return new_val_.Get(); +} +inline void AlterEnumStmt::_internal_set_new_val(const std::string& value) { + + new_val_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArena()); +} +inline void AlterEnumStmt::set_new_val(std::string&& value) { + + new_val_.Set( + ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::move(value), GetArena()); + // @@protoc_insertion_point(field_set_rvalue:pg_query.AlterEnumStmt.new_val) +} +inline void AlterEnumStmt::set_new_val(const char* value) { + GOOGLE_DCHECK(value != nullptr); + + new_val_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string(value), GetArena()); + // @@protoc_insertion_point(field_set_char:pg_query.AlterEnumStmt.new_val) +} +inline void AlterEnumStmt::set_new_val(const char* value, + size_t size) { + + new_val_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string( + reinterpret_cast(value), size), GetArena()); + // @@protoc_insertion_point(field_set_pointer:pg_query.AlterEnumStmt.new_val) +} +inline std::string* AlterEnumStmt::_internal_mutable_new_val() { + + return new_val_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArena()); +} +inline std::string* AlterEnumStmt::release_new_val() { + // @@protoc_insertion_point(field_release:pg_query.AlterEnumStmt.new_val) + return new_val_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); +} +inline void AlterEnumStmt::set_allocated_new_val(std::string* new_val) { + if (new_val != nullptr) { + + } else { + + } + new_val_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), new_val, + GetArena()); + // @@protoc_insertion_point(field_set_allocated:pg_query.AlterEnumStmt.new_val) +} + +// string new_val_neighbor = 4 [json_name = "newValNeighbor"]; +inline void AlterEnumStmt::clear_new_val_neighbor() { + new_val_neighbor_.ClearToEmpty(); +} +inline const std::string& AlterEnumStmt::new_val_neighbor() const { + // @@protoc_insertion_point(field_get:pg_query.AlterEnumStmt.new_val_neighbor) + return _internal_new_val_neighbor(); +} +inline void AlterEnumStmt::set_new_val_neighbor(const std::string& value) { + _internal_set_new_val_neighbor(value); + // @@protoc_insertion_point(field_set:pg_query.AlterEnumStmt.new_val_neighbor) +} +inline std::string* AlterEnumStmt::mutable_new_val_neighbor() { + // @@protoc_insertion_point(field_mutable:pg_query.AlterEnumStmt.new_val_neighbor) + return _internal_mutable_new_val_neighbor(); +} +inline const std::string& AlterEnumStmt::_internal_new_val_neighbor() const { + return new_val_neighbor_.Get(); +} +inline void AlterEnumStmt::_internal_set_new_val_neighbor(const std::string& value) { + + new_val_neighbor_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArena()); +} +inline void AlterEnumStmt::set_new_val_neighbor(std::string&& value) { + + new_val_neighbor_.Set( + ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::move(value), GetArena()); + // @@protoc_insertion_point(field_set_rvalue:pg_query.AlterEnumStmt.new_val_neighbor) +} +inline void AlterEnumStmt::set_new_val_neighbor(const char* value) { + GOOGLE_DCHECK(value != nullptr); + + new_val_neighbor_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string(value), GetArena()); + // @@protoc_insertion_point(field_set_char:pg_query.AlterEnumStmt.new_val_neighbor) +} +inline void AlterEnumStmt::set_new_val_neighbor(const char* value, + size_t size) { + + new_val_neighbor_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string( + reinterpret_cast(value), size), GetArena()); + // @@protoc_insertion_point(field_set_pointer:pg_query.AlterEnumStmt.new_val_neighbor) +} +inline std::string* AlterEnumStmt::_internal_mutable_new_val_neighbor() { + + return new_val_neighbor_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArena()); +} +inline std::string* AlterEnumStmt::release_new_val_neighbor() { + // @@protoc_insertion_point(field_release:pg_query.AlterEnumStmt.new_val_neighbor) + return new_val_neighbor_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); +} +inline void AlterEnumStmt::set_allocated_new_val_neighbor(std::string* new_val_neighbor) { + if (new_val_neighbor != nullptr) { + + } else { + + } + new_val_neighbor_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), new_val_neighbor, + GetArena()); + // @@protoc_insertion_point(field_set_allocated:pg_query.AlterEnumStmt.new_val_neighbor) +} + +// bool new_val_is_after = 5 [json_name = "newValIsAfter"]; +inline void AlterEnumStmt::clear_new_val_is_after() { + new_val_is_after_ = false; +} +inline bool AlterEnumStmt::_internal_new_val_is_after() const { + return new_val_is_after_; +} +inline bool AlterEnumStmt::new_val_is_after() const { + // @@protoc_insertion_point(field_get:pg_query.AlterEnumStmt.new_val_is_after) + return _internal_new_val_is_after(); +} +inline void AlterEnumStmt::_internal_set_new_val_is_after(bool value) { + + new_val_is_after_ = value; +} +inline void AlterEnumStmt::set_new_val_is_after(bool value) { + _internal_set_new_val_is_after(value); + // @@protoc_insertion_point(field_set:pg_query.AlterEnumStmt.new_val_is_after) +} + +// bool skip_if_new_val_exists = 6 [json_name = "skipIfNewValExists"]; +inline void AlterEnumStmt::clear_skip_if_new_val_exists() { + skip_if_new_val_exists_ = false; +} +inline bool AlterEnumStmt::_internal_skip_if_new_val_exists() const { + return skip_if_new_val_exists_; +} +inline bool AlterEnumStmt::skip_if_new_val_exists() const { + // @@protoc_insertion_point(field_get:pg_query.AlterEnumStmt.skip_if_new_val_exists) + return _internal_skip_if_new_val_exists(); +} +inline void AlterEnumStmt::_internal_set_skip_if_new_val_exists(bool value) { + + skip_if_new_val_exists_ = value; +} +inline void AlterEnumStmt::set_skip_if_new_val_exists(bool value) { + _internal_set_skip_if_new_val_exists(value); + // @@protoc_insertion_point(field_set:pg_query.AlterEnumStmt.skip_if_new_val_exists) +} + +// ------------------------------------------------------------------- + +// AlterTSDictionaryStmt + +// repeated .pg_query.Node dictname = 1 [json_name = "dictname"]; +inline int AlterTSDictionaryStmt::_internal_dictname_size() const { + return dictname_.size(); +} +inline int AlterTSDictionaryStmt::dictname_size() const { + return _internal_dictname_size(); +} +inline void AlterTSDictionaryStmt::clear_dictname() { + dictname_.Clear(); +} +inline ::pg_query::Node* AlterTSDictionaryStmt::mutable_dictname(int index) { + // @@protoc_insertion_point(field_mutable:pg_query.AlterTSDictionaryStmt.dictname) + return dictname_.Mutable(index); +} +inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* +AlterTSDictionaryStmt::mutable_dictname() { + // @@protoc_insertion_point(field_mutable_list:pg_query.AlterTSDictionaryStmt.dictname) + return &dictname_; +} +inline const ::pg_query::Node& AlterTSDictionaryStmt::_internal_dictname(int index) const { + return dictname_.Get(index); +} +inline const ::pg_query::Node& AlterTSDictionaryStmt::dictname(int index) const { + // @@protoc_insertion_point(field_get:pg_query.AlterTSDictionaryStmt.dictname) + return _internal_dictname(index); +} +inline ::pg_query::Node* AlterTSDictionaryStmt::_internal_add_dictname() { + return dictname_.Add(); +} +inline ::pg_query::Node* AlterTSDictionaryStmt::add_dictname() { + // @@protoc_insertion_point(field_add:pg_query.AlterTSDictionaryStmt.dictname) + return _internal_add_dictname(); +} +inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& +AlterTSDictionaryStmt::dictname() const { + // @@protoc_insertion_point(field_list:pg_query.AlterTSDictionaryStmt.dictname) + return dictname_; +} + +// repeated .pg_query.Node options = 2 [json_name = "options"]; +inline int AlterTSDictionaryStmt::_internal_options_size() const { + return options_.size(); +} +inline int AlterTSDictionaryStmt::options_size() const { + return _internal_options_size(); +} +inline void AlterTSDictionaryStmt::clear_options() { + options_.Clear(); +} +inline ::pg_query::Node* AlterTSDictionaryStmt::mutable_options(int index) { + // @@protoc_insertion_point(field_mutable:pg_query.AlterTSDictionaryStmt.options) + return options_.Mutable(index); +} +inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* +AlterTSDictionaryStmt::mutable_options() { + // @@protoc_insertion_point(field_mutable_list:pg_query.AlterTSDictionaryStmt.options) + return &options_; +} +inline const ::pg_query::Node& AlterTSDictionaryStmt::_internal_options(int index) const { + return options_.Get(index); +} +inline const ::pg_query::Node& AlterTSDictionaryStmt::options(int index) const { + // @@protoc_insertion_point(field_get:pg_query.AlterTSDictionaryStmt.options) + return _internal_options(index); +} +inline ::pg_query::Node* AlterTSDictionaryStmt::_internal_add_options() { + return options_.Add(); +} +inline ::pg_query::Node* AlterTSDictionaryStmt::add_options() { + // @@protoc_insertion_point(field_add:pg_query.AlterTSDictionaryStmt.options) + return _internal_add_options(); +} +inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& +AlterTSDictionaryStmt::options() const { + // @@protoc_insertion_point(field_list:pg_query.AlterTSDictionaryStmt.options) + return options_; +} + +// ------------------------------------------------------------------- + +// AlterTSConfigurationStmt + +// .pg_query.AlterTSConfigType kind = 1 [json_name = "kind"]; +inline void AlterTSConfigurationStmt::clear_kind() { + kind_ = 0; +} +inline ::pg_query::AlterTSConfigType AlterTSConfigurationStmt::_internal_kind() const { + return static_cast< ::pg_query::AlterTSConfigType >(kind_); +} +inline ::pg_query::AlterTSConfigType AlterTSConfigurationStmt::kind() const { + // @@protoc_insertion_point(field_get:pg_query.AlterTSConfigurationStmt.kind) + return _internal_kind(); +} +inline void AlterTSConfigurationStmt::_internal_set_kind(::pg_query::AlterTSConfigType value) { + + kind_ = value; +} +inline void AlterTSConfigurationStmt::set_kind(::pg_query::AlterTSConfigType value) { + _internal_set_kind(value); + // @@protoc_insertion_point(field_set:pg_query.AlterTSConfigurationStmt.kind) +} + +// repeated .pg_query.Node cfgname = 2 [json_name = "cfgname"]; +inline int AlterTSConfigurationStmt::_internal_cfgname_size() const { + return cfgname_.size(); +} +inline int AlterTSConfigurationStmt::cfgname_size() const { + return _internal_cfgname_size(); +} +inline void AlterTSConfigurationStmt::clear_cfgname() { + cfgname_.Clear(); +} +inline ::pg_query::Node* AlterTSConfigurationStmt::mutable_cfgname(int index) { + // @@protoc_insertion_point(field_mutable:pg_query.AlterTSConfigurationStmt.cfgname) + return cfgname_.Mutable(index); +} +inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* +AlterTSConfigurationStmt::mutable_cfgname() { + // @@protoc_insertion_point(field_mutable_list:pg_query.AlterTSConfigurationStmt.cfgname) + return &cfgname_; +} +inline const ::pg_query::Node& AlterTSConfigurationStmt::_internal_cfgname(int index) const { + return cfgname_.Get(index); +} +inline const ::pg_query::Node& AlterTSConfigurationStmt::cfgname(int index) const { + // @@protoc_insertion_point(field_get:pg_query.AlterTSConfigurationStmt.cfgname) + return _internal_cfgname(index); +} +inline ::pg_query::Node* AlterTSConfigurationStmt::_internal_add_cfgname() { + return cfgname_.Add(); +} +inline ::pg_query::Node* AlterTSConfigurationStmt::add_cfgname() { + // @@protoc_insertion_point(field_add:pg_query.AlterTSConfigurationStmt.cfgname) + return _internal_add_cfgname(); +} +inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& +AlterTSConfigurationStmt::cfgname() const { + // @@protoc_insertion_point(field_list:pg_query.AlterTSConfigurationStmt.cfgname) + return cfgname_; +} + +// repeated .pg_query.Node tokentype = 3 [json_name = "tokentype"]; +inline int AlterTSConfigurationStmt::_internal_tokentype_size() const { + return tokentype_.size(); +} +inline int AlterTSConfigurationStmt::tokentype_size() const { + return _internal_tokentype_size(); +} +inline void AlterTSConfigurationStmt::clear_tokentype() { + tokentype_.Clear(); +} +inline ::pg_query::Node* AlterTSConfigurationStmt::mutable_tokentype(int index) { + // @@protoc_insertion_point(field_mutable:pg_query.AlterTSConfigurationStmt.tokentype) + return tokentype_.Mutable(index); +} +inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* +AlterTSConfigurationStmt::mutable_tokentype() { + // @@protoc_insertion_point(field_mutable_list:pg_query.AlterTSConfigurationStmt.tokentype) + return &tokentype_; +} +inline const ::pg_query::Node& AlterTSConfigurationStmt::_internal_tokentype(int index) const { + return tokentype_.Get(index); +} +inline const ::pg_query::Node& AlterTSConfigurationStmt::tokentype(int index) const { + // @@protoc_insertion_point(field_get:pg_query.AlterTSConfigurationStmt.tokentype) + return _internal_tokentype(index); +} +inline ::pg_query::Node* AlterTSConfigurationStmt::_internal_add_tokentype() { + return tokentype_.Add(); +} +inline ::pg_query::Node* AlterTSConfigurationStmt::add_tokentype() { + // @@protoc_insertion_point(field_add:pg_query.AlterTSConfigurationStmt.tokentype) + return _internal_add_tokentype(); +} +inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& +AlterTSConfigurationStmt::tokentype() const { + // @@protoc_insertion_point(field_list:pg_query.AlterTSConfigurationStmt.tokentype) + return tokentype_; +} + +// repeated .pg_query.Node dicts = 4 [json_name = "dicts"]; +inline int AlterTSConfigurationStmt::_internal_dicts_size() const { + return dicts_.size(); +} +inline int AlterTSConfigurationStmt::dicts_size() const { + return _internal_dicts_size(); +} +inline void AlterTSConfigurationStmt::clear_dicts() { + dicts_.Clear(); +} +inline ::pg_query::Node* AlterTSConfigurationStmt::mutable_dicts(int index) { + // @@protoc_insertion_point(field_mutable:pg_query.AlterTSConfigurationStmt.dicts) + return dicts_.Mutable(index); +} +inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* +AlterTSConfigurationStmt::mutable_dicts() { + // @@protoc_insertion_point(field_mutable_list:pg_query.AlterTSConfigurationStmt.dicts) + return &dicts_; +} +inline const ::pg_query::Node& AlterTSConfigurationStmt::_internal_dicts(int index) const { + return dicts_.Get(index); +} +inline const ::pg_query::Node& AlterTSConfigurationStmt::dicts(int index) const { + // @@protoc_insertion_point(field_get:pg_query.AlterTSConfigurationStmt.dicts) + return _internal_dicts(index); +} +inline ::pg_query::Node* AlterTSConfigurationStmt::_internal_add_dicts() { + return dicts_.Add(); +} +inline ::pg_query::Node* AlterTSConfigurationStmt::add_dicts() { + // @@protoc_insertion_point(field_add:pg_query.AlterTSConfigurationStmt.dicts) + return _internal_add_dicts(); +} +inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& +AlterTSConfigurationStmt::dicts() const { + // @@protoc_insertion_point(field_list:pg_query.AlterTSConfigurationStmt.dicts) + return dicts_; +} + +// bool override = 5 [json_name = "override"]; +inline void AlterTSConfigurationStmt::clear_override() { + override_ = false; +} +inline bool AlterTSConfigurationStmt::_internal_override() const { + return override_; +} +inline bool AlterTSConfigurationStmt::override() const { + // @@protoc_insertion_point(field_get:pg_query.AlterTSConfigurationStmt.override) + return _internal_override(); +} +inline void AlterTSConfigurationStmt::_internal_set_override(bool value) { + + override_ = value; +} +inline void AlterTSConfigurationStmt::set_override(bool value) { + _internal_set_override(value); + // @@protoc_insertion_point(field_set:pg_query.AlterTSConfigurationStmt.override) +} + +// bool replace = 6 [json_name = "replace"]; +inline void AlterTSConfigurationStmt::clear_replace() { + replace_ = false; +} +inline bool AlterTSConfigurationStmt::_internal_replace() const { + return replace_; +} +inline bool AlterTSConfigurationStmt::replace() const { + // @@protoc_insertion_point(field_get:pg_query.AlterTSConfigurationStmt.replace) + return _internal_replace(); +} +inline void AlterTSConfigurationStmt::_internal_set_replace(bool value) { + + replace_ = value; +} +inline void AlterTSConfigurationStmt::set_replace(bool value) { + _internal_set_replace(value); + // @@protoc_insertion_point(field_set:pg_query.AlterTSConfigurationStmt.replace) +} + +// bool missing_ok = 7 [json_name = "missing_ok"]; +inline void AlterTSConfigurationStmt::clear_missing_ok() { + missing_ok_ = false; +} +inline bool AlterTSConfigurationStmt::_internal_missing_ok() const { + return missing_ok_; +} +inline bool AlterTSConfigurationStmt::missing_ok() const { + // @@protoc_insertion_point(field_get:pg_query.AlterTSConfigurationStmt.missing_ok) + return _internal_missing_ok(); +} +inline void AlterTSConfigurationStmt::_internal_set_missing_ok(bool value) { + + missing_ok_ = value; +} +inline void AlterTSConfigurationStmt::set_missing_ok(bool value) { + _internal_set_missing_ok(value); + // @@protoc_insertion_point(field_set:pg_query.AlterTSConfigurationStmt.missing_ok) +} + +// ------------------------------------------------------------------- + +// CreateFdwStmt + +// string fdwname = 1 [json_name = "fdwname"]; +inline void CreateFdwStmt::clear_fdwname() { + fdwname_.ClearToEmpty(); +} +inline const std::string& CreateFdwStmt::fdwname() const { + // @@protoc_insertion_point(field_get:pg_query.CreateFdwStmt.fdwname) + return _internal_fdwname(); +} +inline void CreateFdwStmt::set_fdwname(const std::string& value) { + _internal_set_fdwname(value); + // @@protoc_insertion_point(field_set:pg_query.CreateFdwStmt.fdwname) +} +inline std::string* CreateFdwStmt::mutable_fdwname() { + // @@protoc_insertion_point(field_mutable:pg_query.CreateFdwStmt.fdwname) + return _internal_mutable_fdwname(); +} +inline const std::string& CreateFdwStmt::_internal_fdwname() const { + return fdwname_.Get(); +} +inline void CreateFdwStmt::_internal_set_fdwname(const std::string& value) { + + fdwname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArena()); +} +inline void CreateFdwStmt::set_fdwname(std::string&& value) { + + fdwname_.Set( + ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::move(value), GetArena()); + // @@protoc_insertion_point(field_set_rvalue:pg_query.CreateFdwStmt.fdwname) +} +inline void CreateFdwStmt::set_fdwname(const char* value) { + GOOGLE_DCHECK(value != nullptr); + + fdwname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string(value), GetArena()); + // @@protoc_insertion_point(field_set_char:pg_query.CreateFdwStmt.fdwname) +} +inline void CreateFdwStmt::set_fdwname(const char* value, + size_t size) { + + fdwname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string( + reinterpret_cast(value), size), GetArena()); + // @@protoc_insertion_point(field_set_pointer:pg_query.CreateFdwStmt.fdwname) +} +inline std::string* CreateFdwStmt::_internal_mutable_fdwname() { + + return fdwname_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArena()); +} +inline std::string* CreateFdwStmt::release_fdwname() { + // @@protoc_insertion_point(field_release:pg_query.CreateFdwStmt.fdwname) + return fdwname_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); +} +inline void CreateFdwStmt::set_allocated_fdwname(std::string* fdwname) { + if (fdwname != nullptr) { + + } else { + + } + fdwname_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), fdwname, + GetArena()); + // @@protoc_insertion_point(field_set_allocated:pg_query.CreateFdwStmt.fdwname) +} + +// repeated .pg_query.Node func_options = 2 [json_name = "func_options"]; +inline int CreateFdwStmt::_internal_func_options_size() const { + return func_options_.size(); +} +inline int CreateFdwStmt::func_options_size() const { + return _internal_func_options_size(); +} +inline void CreateFdwStmt::clear_func_options() { + func_options_.Clear(); +} +inline ::pg_query::Node* CreateFdwStmt::mutable_func_options(int index) { + // @@protoc_insertion_point(field_mutable:pg_query.CreateFdwStmt.func_options) + return func_options_.Mutable(index); +} +inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* +CreateFdwStmt::mutable_func_options() { + // @@protoc_insertion_point(field_mutable_list:pg_query.CreateFdwStmt.func_options) + return &func_options_; +} +inline const ::pg_query::Node& CreateFdwStmt::_internal_func_options(int index) const { + return func_options_.Get(index); +} +inline const ::pg_query::Node& CreateFdwStmt::func_options(int index) const { + // @@protoc_insertion_point(field_get:pg_query.CreateFdwStmt.func_options) + return _internal_func_options(index); +} +inline ::pg_query::Node* CreateFdwStmt::_internal_add_func_options() { + return func_options_.Add(); +} +inline ::pg_query::Node* CreateFdwStmt::add_func_options() { + // @@protoc_insertion_point(field_add:pg_query.CreateFdwStmt.func_options) + return _internal_add_func_options(); +} +inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& +CreateFdwStmt::func_options() const { + // @@protoc_insertion_point(field_list:pg_query.CreateFdwStmt.func_options) + return func_options_; +} + +// repeated .pg_query.Node options = 3 [json_name = "options"]; +inline int CreateFdwStmt::_internal_options_size() const { + return options_.size(); +} +inline int CreateFdwStmt::options_size() const { + return _internal_options_size(); +} +inline void CreateFdwStmt::clear_options() { + options_.Clear(); +} +inline ::pg_query::Node* CreateFdwStmt::mutable_options(int index) { + // @@protoc_insertion_point(field_mutable:pg_query.CreateFdwStmt.options) + return options_.Mutable(index); +} +inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* +CreateFdwStmt::mutable_options() { + // @@protoc_insertion_point(field_mutable_list:pg_query.CreateFdwStmt.options) + return &options_; +} +inline const ::pg_query::Node& CreateFdwStmt::_internal_options(int index) const { + return options_.Get(index); +} +inline const ::pg_query::Node& CreateFdwStmt::options(int index) const { + // @@protoc_insertion_point(field_get:pg_query.CreateFdwStmt.options) + return _internal_options(index); +} +inline ::pg_query::Node* CreateFdwStmt::_internal_add_options() { + return options_.Add(); +} +inline ::pg_query::Node* CreateFdwStmt::add_options() { + // @@protoc_insertion_point(field_add:pg_query.CreateFdwStmt.options) + return _internal_add_options(); +} +inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& +CreateFdwStmt::options() const { + // @@protoc_insertion_point(field_list:pg_query.CreateFdwStmt.options) + return options_; +} + +// ------------------------------------------------------------------- + +// AlterFdwStmt + +// string fdwname = 1 [json_name = "fdwname"]; +inline void AlterFdwStmt::clear_fdwname() { + fdwname_.ClearToEmpty(); +} +inline const std::string& AlterFdwStmt::fdwname() const { + // @@protoc_insertion_point(field_get:pg_query.AlterFdwStmt.fdwname) + return _internal_fdwname(); +} +inline void AlterFdwStmt::set_fdwname(const std::string& value) { + _internal_set_fdwname(value); + // @@protoc_insertion_point(field_set:pg_query.AlterFdwStmt.fdwname) +} +inline std::string* AlterFdwStmt::mutable_fdwname() { + // @@protoc_insertion_point(field_mutable:pg_query.AlterFdwStmt.fdwname) + return _internal_mutable_fdwname(); +} +inline const std::string& AlterFdwStmt::_internal_fdwname() const { + return fdwname_.Get(); +} +inline void AlterFdwStmt::_internal_set_fdwname(const std::string& value) { + + fdwname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArena()); +} +inline void AlterFdwStmt::set_fdwname(std::string&& value) { + + fdwname_.Set( + ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::move(value), GetArena()); + // @@protoc_insertion_point(field_set_rvalue:pg_query.AlterFdwStmt.fdwname) +} +inline void AlterFdwStmt::set_fdwname(const char* value) { + GOOGLE_DCHECK(value != nullptr); + + fdwname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string(value), GetArena()); + // @@protoc_insertion_point(field_set_char:pg_query.AlterFdwStmt.fdwname) +} +inline void AlterFdwStmt::set_fdwname(const char* value, + size_t size) { + + fdwname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string( + reinterpret_cast(value), size), GetArena()); + // @@protoc_insertion_point(field_set_pointer:pg_query.AlterFdwStmt.fdwname) +} +inline std::string* AlterFdwStmt::_internal_mutable_fdwname() { + + return fdwname_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArena()); +} +inline std::string* AlterFdwStmt::release_fdwname() { + // @@protoc_insertion_point(field_release:pg_query.AlterFdwStmt.fdwname) + return fdwname_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); +} +inline void AlterFdwStmt::set_allocated_fdwname(std::string* fdwname) { + if (fdwname != nullptr) { + + } else { + + } + fdwname_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), fdwname, + GetArena()); + // @@protoc_insertion_point(field_set_allocated:pg_query.AlterFdwStmt.fdwname) +} + +// repeated .pg_query.Node func_options = 2 [json_name = "func_options"]; +inline int AlterFdwStmt::_internal_func_options_size() const { + return func_options_.size(); +} +inline int AlterFdwStmt::func_options_size() const { + return _internal_func_options_size(); +} +inline void AlterFdwStmt::clear_func_options() { + func_options_.Clear(); +} +inline ::pg_query::Node* AlterFdwStmt::mutable_func_options(int index) { + // @@protoc_insertion_point(field_mutable:pg_query.AlterFdwStmt.func_options) + return func_options_.Mutable(index); +} +inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* +AlterFdwStmt::mutable_func_options() { + // @@protoc_insertion_point(field_mutable_list:pg_query.AlterFdwStmt.func_options) + return &func_options_; +} +inline const ::pg_query::Node& AlterFdwStmt::_internal_func_options(int index) const { + return func_options_.Get(index); +} +inline const ::pg_query::Node& AlterFdwStmt::func_options(int index) const { + // @@protoc_insertion_point(field_get:pg_query.AlterFdwStmt.func_options) + return _internal_func_options(index); +} +inline ::pg_query::Node* AlterFdwStmt::_internal_add_func_options() { + return func_options_.Add(); +} +inline ::pg_query::Node* AlterFdwStmt::add_func_options() { + // @@protoc_insertion_point(field_add:pg_query.AlterFdwStmt.func_options) + return _internal_add_func_options(); +} +inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& +AlterFdwStmt::func_options() const { + // @@protoc_insertion_point(field_list:pg_query.AlterFdwStmt.func_options) + return func_options_; +} + +// repeated .pg_query.Node options = 3 [json_name = "options"]; +inline int AlterFdwStmt::_internal_options_size() const { + return options_.size(); +} +inline int AlterFdwStmt::options_size() const { + return _internal_options_size(); +} +inline void AlterFdwStmt::clear_options() { + options_.Clear(); +} +inline ::pg_query::Node* AlterFdwStmt::mutable_options(int index) { + // @@protoc_insertion_point(field_mutable:pg_query.AlterFdwStmt.options) + return options_.Mutable(index); +} +inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* +AlterFdwStmt::mutable_options() { + // @@protoc_insertion_point(field_mutable_list:pg_query.AlterFdwStmt.options) + return &options_; +} +inline const ::pg_query::Node& AlterFdwStmt::_internal_options(int index) const { + return options_.Get(index); +} +inline const ::pg_query::Node& AlterFdwStmt::options(int index) const { + // @@protoc_insertion_point(field_get:pg_query.AlterFdwStmt.options) + return _internal_options(index); +} +inline ::pg_query::Node* AlterFdwStmt::_internal_add_options() { + return options_.Add(); +} +inline ::pg_query::Node* AlterFdwStmt::add_options() { + // @@protoc_insertion_point(field_add:pg_query.AlterFdwStmt.options) + return _internal_add_options(); +} +inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& +AlterFdwStmt::options() const { + // @@protoc_insertion_point(field_list:pg_query.AlterFdwStmt.options) + return options_; +} + +// ------------------------------------------------------------------- + +// CreateForeignServerStmt + +// string servername = 1 [json_name = "servername"]; +inline void CreateForeignServerStmt::clear_servername() { + servername_.ClearToEmpty(); +} +inline const std::string& CreateForeignServerStmt::servername() const { + // @@protoc_insertion_point(field_get:pg_query.CreateForeignServerStmt.servername) + return _internal_servername(); +} +inline void CreateForeignServerStmt::set_servername(const std::string& value) { + _internal_set_servername(value); + // @@protoc_insertion_point(field_set:pg_query.CreateForeignServerStmt.servername) +} +inline std::string* CreateForeignServerStmt::mutable_servername() { + // @@protoc_insertion_point(field_mutable:pg_query.CreateForeignServerStmt.servername) + return _internal_mutable_servername(); +} +inline const std::string& CreateForeignServerStmt::_internal_servername() const { + return servername_.Get(); +} +inline void CreateForeignServerStmt::_internal_set_servername(const std::string& value) { + + servername_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArena()); +} +inline void CreateForeignServerStmt::set_servername(std::string&& value) { + + servername_.Set( + ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::move(value), GetArena()); + // @@protoc_insertion_point(field_set_rvalue:pg_query.CreateForeignServerStmt.servername) +} +inline void CreateForeignServerStmt::set_servername(const char* value) { + GOOGLE_DCHECK(value != nullptr); + + servername_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string(value), GetArena()); + // @@protoc_insertion_point(field_set_char:pg_query.CreateForeignServerStmt.servername) +} +inline void CreateForeignServerStmt::set_servername(const char* value, + size_t size) { + + servername_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string( + reinterpret_cast(value), size), GetArena()); + // @@protoc_insertion_point(field_set_pointer:pg_query.CreateForeignServerStmt.servername) +} +inline std::string* CreateForeignServerStmt::_internal_mutable_servername() { + + return servername_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArena()); +} +inline std::string* CreateForeignServerStmt::release_servername() { + // @@protoc_insertion_point(field_release:pg_query.CreateForeignServerStmt.servername) + return servername_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); +} +inline void CreateForeignServerStmt::set_allocated_servername(std::string* servername) { + if (servername != nullptr) { + + } else { + + } + servername_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), servername, + GetArena()); + // @@protoc_insertion_point(field_set_allocated:pg_query.CreateForeignServerStmt.servername) +} + +// string servertype = 2 [json_name = "servertype"]; +inline void CreateForeignServerStmt::clear_servertype() { + servertype_.ClearToEmpty(); +} +inline const std::string& CreateForeignServerStmt::servertype() const { + // @@protoc_insertion_point(field_get:pg_query.CreateForeignServerStmt.servertype) + return _internal_servertype(); +} +inline void CreateForeignServerStmt::set_servertype(const std::string& value) { + _internal_set_servertype(value); + // @@protoc_insertion_point(field_set:pg_query.CreateForeignServerStmt.servertype) +} +inline std::string* CreateForeignServerStmt::mutable_servertype() { + // @@protoc_insertion_point(field_mutable:pg_query.CreateForeignServerStmt.servertype) + return _internal_mutable_servertype(); +} +inline const std::string& CreateForeignServerStmt::_internal_servertype() const { + return servertype_.Get(); +} +inline void CreateForeignServerStmt::_internal_set_servertype(const std::string& value) { + + servertype_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArena()); +} +inline void CreateForeignServerStmt::set_servertype(std::string&& value) { + + servertype_.Set( + ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::move(value), GetArena()); + // @@protoc_insertion_point(field_set_rvalue:pg_query.CreateForeignServerStmt.servertype) +} +inline void CreateForeignServerStmt::set_servertype(const char* value) { + GOOGLE_DCHECK(value != nullptr); + + servertype_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string(value), GetArena()); + // @@protoc_insertion_point(field_set_char:pg_query.CreateForeignServerStmt.servertype) +} +inline void CreateForeignServerStmt::set_servertype(const char* value, + size_t size) { + + servertype_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string( + reinterpret_cast(value), size), GetArena()); + // @@protoc_insertion_point(field_set_pointer:pg_query.CreateForeignServerStmt.servertype) +} +inline std::string* CreateForeignServerStmt::_internal_mutable_servertype() { + + return servertype_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArena()); +} +inline std::string* CreateForeignServerStmt::release_servertype() { + // @@protoc_insertion_point(field_release:pg_query.CreateForeignServerStmt.servertype) + return servertype_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); +} +inline void CreateForeignServerStmt::set_allocated_servertype(std::string* servertype) { + if (servertype != nullptr) { + + } else { + + } + servertype_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), servertype, + GetArena()); + // @@protoc_insertion_point(field_set_allocated:pg_query.CreateForeignServerStmt.servertype) +} + +// string version = 3 [json_name = "version"]; +inline void CreateForeignServerStmt::clear_version() { + version_.ClearToEmpty(); +} +inline const std::string& CreateForeignServerStmt::version() const { + // @@protoc_insertion_point(field_get:pg_query.CreateForeignServerStmt.version) + return _internal_version(); +} +inline void CreateForeignServerStmt::set_version(const std::string& value) { + _internal_set_version(value); + // @@protoc_insertion_point(field_set:pg_query.CreateForeignServerStmt.version) +} +inline std::string* CreateForeignServerStmt::mutable_version() { + // @@protoc_insertion_point(field_mutable:pg_query.CreateForeignServerStmt.version) + return _internal_mutable_version(); +} +inline const std::string& CreateForeignServerStmt::_internal_version() const { + return version_.Get(); +} +inline void CreateForeignServerStmt::_internal_set_version(const std::string& value) { + + version_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArena()); +} +inline void CreateForeignServerStmt::set_version(std::string&& value) { + + version_.Set( + ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::move(value), GetArena()); + // @@protoc_insertion_point(field_set_rvalue:pg_query.CreateForeignServerStmt.version) +} +inline void CreateForeignServerStmt::set_version(const char* value) { + GOOGLE_DCHECK(value != nullptr); + + version_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string(value), GetArena()); + // @@protoc_insertion_point(field_set_char:pg_query.CreateForeignServerStmt.version) +} +inline void CreateForeignServerStmt::set_version(const char* value, + size_t size) { + + version_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string( + reinterpret_cast(value), size), GetArena()); + // @@protoc_insertion_point(field_set_pointer:pg_query.CreateForeignServerStmt.version) +} +inline std::string* CreateForeignServerStmt::_internal_mutable_version() { + + return version_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArena()); +} +inline std::string* CreateForeignServerStmt::release_version() { + // @@protoc_insertion_point(field_release:pg_query.CreateForeignServerStmt.version) + return version_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); +} +inline void CreateForeignServerStmt::set_allocated_version(std::string* version) { + if (version != nullptr) { + + } else { + + } + version_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), version, + GetArena()); + // @@protoc_insertion_point(field_set_allocated:pg_query.CreateForeignServerStmt.version) +} + +// string fdwname = 4 [json_name = "fdwname"]; +inline void CreateForeignServerStmt::clear_fdwname() { + fdwname_.ClearToEmpty(); +} +inline const std::string& CreateForeignServerStmt::fdwname() const { + // @@protoc_insertion_point(field_get:pg_query.CreateForeignServerStmt.fdwname) + return _internal_fdwname(); +} +inline void CreateForeignServerStmt::set_fdwname(const std::string& value) { + _internal_set_fdwname(value); + // @@protoc_insertion_point(field_set:pg_query.CreateForeignServerStmt.fdwname) +} +inline std::string* CreateForeignServerStmt::mutable_fdwname() { + // @@protoc_insertion_point(field_mutable:pg_query.CreateForeignServerStmt.fdwname) + return _internal_mutable_fdwname(); +} +inline const std::string& CreateForeignServerStmt::_internal_fdwname() const { + return fdwname_.Get(); +} +inline void CreateForeignServerStmt::_internal_set_fdwname(const std::string& value) { + + fdwname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArena()); +} +inline void CreateForeignServerStmt::set_fdwname(std::string&& value) { + + fdwname_.Set( + ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::move(value), GetArena()); + // @@protoc_insertion_point(field_set_rvalue:pg_query.CreateForeignServerStmt.fdwname) +} +inline void CreateForeignServerStmt::set_fdwname(const char* value) { + GOOGLE_DCHECK(value != nullptr); + + fdwname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string(value), GetArena()); + // @@protoc_insertion_point(field_set_char:pg_query.CreateForeignServerStmt.fdwname) +} +inline void CreateForeignServerStmt::set_fdwname(const char* value, + size_t size) { + + fdwname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string( + reinterpret_cast(value), size), GetArena()); + // @@protoc_insertion_point(field_set_pointer:pg_query.CreateForeignServerStmt.fdwname) +} +inline std::string* CreateForeignServerStmt::_internal_mutable_fdwname() { + + return fdwname_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArena()); +} +inline std::string* CreateForeignServerStmt::release_fdwname() { + // @@protoc_insertion_point(field_release:pg_query.CreateForeignServerStmt.fdwname) + return fdwname_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); +} +inline void CreateForeignServerStmt::set_allocated_fdwname(std::string* fdwname) { + if (fdwname != nullptr) { + + } else { + + } + fdwname_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), fdwname, + GetArena()); + // @@protoc_insertion_point(field_set_allocated:pg_query.CreateForeignServerStmt.fdwname) +} + +// bool if_not_exists = 5 [json_name = "if_not_exists"]; +inline void CreateForeignServerStmt::clear_if_not_exists() { + if_not_exists_ = false; +} +inline bool CreateForeignServerStmt::_internal_if_not_exists() const { + return if_not_exists_; +} +inline bool CreateForeignServerStmt::if_not_exists() const { + // @@protoc_insertion_point(field_get:pg_query.CreateForeignServerStmt.if_not_exists) + return _internal_if_not_exists(); +} +inline void CreateForeignServerStmt::_internal_set_if_not_exists(bool value) { + + if_not_exists_ = value; +} +inline void CreateForeignServerStmt::set_if_not_exists(bool value) { + _internal_set_if_not_exists(value); + // @@protoc_insertion_point(field_set:pg_query.CreateForeignServerStmt.if_not_exists) +} + +// repeated .pg_query.Node options = 6 [json_name = "options"]; +inline int CreateForeignServerStmt::_internal_options_size() const { + return options_.size(); +} +inline int CreateForeignServerStmt::options_size() const { + return _internal_options_size(); +} +inline void CreateForeignServerStmt::clear_options() { + options_.Clear(); +} +inline ::pg_query::Node* CreateForeignServerStmt::mutable_options(int index) { + // @@protoc_insertion_point(field_mutable:pg_query.CreateForeignServerStmt.options) + return options_.Mutable(index); +} +inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* +CreateForeignServerStmt::mutable_options() { + // @@protoc_insertion_point(field_mutable_list:pg_query.CreateForeignServerStmt.options) + return &options_; +} +inline const ::pg_query::Node& CreateForeignServerStmt::_internal_options(int index) const { + return options_.Get(index); +} +inline const ::pg_query::Node& CreateForeignServerStmt::options(int index) const { + // @@protoc_insertion_point(field_get:pg_query.CreateForeignServerStmt.options) + return _internal_options(index); +} +inline ::pg_query::Node* CreateForeignServerStmt::_internal_add_options() { + return options_.Add(); +} +inline ::pg_query::Node* CreateForeignServerStmt::add_options() { + // @@protoc_insertion_point(field_add:pg_query.CreateForeignServerStmt.options) + return _internal_add_options(); +} +inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& +CreateForeignServerStmt::options() const { + // @@protoc_insertion_point(field_list:pg_query.CreateForeignServerStmt.options) + return options_; +} + +// ------------------------------------------------------------------- + +// AlterForeignServerStmt + +// string servername = 1 [json_name = "servername"]; +inline void AlterForeignServerStmt::clear_servername() { + servername_.ClearToEmpty(); +} +inline const std::string& AlterForeignServerStmt::servername() const { + // @@protoc_insertion_point(field_get:pg_query.AlterForeignServerStmt.servername) + return _internal_servername(); +} +inline void AlterForeignServerStmt::set_servername(const std::string& value) { + _internal_set_servername(value); + // @@protoc_insertion_point(field_set:pg_query.AlterForeignServerStmt.servername) +} +inline std::string* AlterForeignServerStmt::mutable_servername() { + // @@protoc_insertion_point(field_mutable:pg_query.AlterForeignServerStmt.servername) + return _internal_mutable_servername(); +} +inline const std::string& AlterForeignServerStmt::_internal_servername() const { + return servername_.Get(); +} +inline void AlterForeignServerStmt::_internal_set_servername(const std::string& value) { + + servername_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArena()); +} +inline void AlterForeignServerStmt::set_servername(std::string&& value) { + + servername_.Set( + ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::move(value), GetArena()); + // @@protoc_insertion_point(field_set_rvalue:pg_query.AlterForeignServerStmt.servername) +} +inline void AlterForeignServerStmt::set_servername(const char* value) { + GOOGLE_DCHECK(value != nullptr); + + servername_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string(value), GetArena()); + // @@protoc_insertion_point(field_set_char:pg_query.AlterForeignServerStmt.servername) +} +inline void AlterForeignServerStmt::set_servername(const char* value, + size_t size) { + + servername_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string( + reinterpret_cast(value), size), GetArena()); + // @@protoc_insertion_point(field_set_pointer:pg_query.AlterForeignServerStmt.servername) +} +inline std::string* AlterForeignServerStmt::_internal_mutable_servername() { + + return servername_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArena()); +} +inline std::string* AlterForeignServerStmt::release_servername() { + // @@protoc_insertion_point(field_release:pg_query.AlterForeignServerStmt.servername) + return servername_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); +} +inline void AlterForeignServerStmt::set_allocated_servername(std::string* servername) { + if (servername != nullptr) { + + } else { + + } + servername_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), servername, + GetArena()); + // @@protoc_insertion_point(field_set_allocated:pg_query.AlterForeignServerStmt.servername) +} + +// string version = 2 [json_name = "version"]; +inline void AlterForeignServerStmt::clear_version() { + version_.ClearToEmpty(); +} +inline const std::string& AlterForeignServerStmt::version() const { + // @@protoc_insertion_point(field_get:pg_query.AlterForeignServerStmt.version) + return _internal_version(); +} +inline void AlterForeignServerStmt::set_version(const std::string& value) { + _internal_set_version(value); + // @@protoc_insertion_point(field_set:pg_query.AlterForeignServerStmt.version) +} +inline std::string* AlterForeignServerStmt::mutable_version() { + // @@protoc_insertion_point(field_mutable:pg_query.AlterForeignServerStmt.version) + return _internal_mutable_version(); +} +inline const std::string& AlterForeignServerStmt::_internal_version() const { + return version_.Get(); +} +inline void AlterForeignServerStmt::_internal_set_version(const std::string& value) { + + version_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArena()); +} +inline void AlterForeignServerStmt::set_version(std::string&& value) { + + version_.Set( + ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::move(value), GetArena()); + // @@protoc_insertion_point(field_set_rvalue:pg_query.AlterForeignServerStmt.version) +} +inline void AlterForeignServerStmt::set_version(const char* value) { + GOOGLE_DCHECK(value != nullptr); + + version_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string(value), GetArena()); + // @@protoc_insertion_point(field_set_char:pg_query.AlterForeignServerStmt.version) +} +inline void AlterForeignServerStmt::set_version(const char* value, + size_t size) { + + version_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string( + reinterpret_cast(value), size), GetArena()); + // @@protoc_insertion_point(field_set_pointer:pg_query.AlterForeignServerStmt.version) +} +inline std::string* AlterForeignServerStmt::_internal_mutable_version() { + + return version_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArena()); +} +inline std::string* AlterForeignServerStmt::release_version() { + // @@protoc_insertion_point(field_release:pg_query.AlterForeignServerStmt.version) + return version_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); +} +inline void AlterForeignServerStmt::set_allocated_version(std::string* version) { + if (version != nullptr) { + + } else { + + } + version_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), version, + GetArena()); + // @@protoc_insertion_point(field_set_allocated:pg_query.AlterForeignServerStmt.version) +} + +// repeated .pg_query.Node options = 3 [json_name = "options"]; +inline int AlterForeignServerStmt::_internal_options_size() const { + return options_.size(); +} +inline int AlterForeignServerStmt::options_size() const { + return _internal_options_size(); +} +inline void AlterForeignServerStmt::clear_options() { + options_.Clear(); +} +inline ::pg_query::Node* AlterForeignServerStmt::mutable_options(int index) { + // @@protoc_insertion_point(field_mutable:pg_query.AlterForeignServerStmt.options) + return options_.Mutable(index); +} +inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* +AlterForeignServerStmt::mutable_options() { + // @@protoc_insertion_point(field_mutable_list:pg_query.AlterForeignServerStmt.options) + return &options_; +} +inline const ::pg_query::Node& AlterForeignServerStmt::_internal_options(int index) const { + return options_.Get(index); +} +inline const ::pg_query::Node& AlterForeignServerStmt::options(int index) const { + // @@protoc_insertion_point(field_get:pg_query.AlterForeignServerStmt.options) + return _internal_options(index); +} +inline ::pg_query::Node* AlterForeignServerStmt::_internal_add_options() { + return options_.Add(); +} +inline ::pg_query::Node* AlterForeignServerStmt::add_options() { + // @@protoc_insertion_point(field_add:pg_query.AlterForeignServerStmt.options) + return _internal_add_options(); +} +inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& +AlterForeignServerStmt::options() const { + // @@protoc_insertion_point(field_list:pg_query.AlterForeignServerStmt.options) + return options_; +} + +// bool has_version = 4 [json_name = "has_version"]; +inline void AlterForeignServerStmt::clear_has_version() { + has_version_ = false; +} +inline bool AlterForeignServerStmt::_internal_has_version() const { + return has_version_; +} +inline bool AlterForeignServerStmt::has_version() const { + // @@protoc_insertion_point(field_get:pg_query.AlterForeignServerStmt.has_version) + return _internal_has_version(); +} +inline void AlterForeignServerStmt::_internal_set_has_version(bool value) { + + has_version_ = value; +} +inline void AlterForeignServerStmt::set_has_version(bool value) { + _internal_set_has_version(value); + // @@protoc_insertion_point(field_set:pg_query.AlterForeignServerStmt.has_version) +} + +// ------------------------------------------------------------------- + +// CreateUserMappingStmt + +// .pg_query.RoleSpec user = 1 [json_name = "user"]; +inline bool CreateUserMappingStmt::_internal_has_user() const { + return this != internal_default_instance() && user_ != nullptr; +} +inline bool CreateUserMappingStmt::has_user() const { + return _internal_has_user(); +} +inline void CreateUserMappingStmt::clear_user() { + if (GetArena() == nullptr && user_ != nullptr) { + delete user_; + } + user_ = nullptr; +} +inline const ::pg_query::RoleSpec& CreateUserMappingStmt::_internal_user() const { + const ::pg_query::RoleSpec* p = user_; + return p != nullptr ? *p : reinterpret_cast( + ::pg_query::_RoleSpec_default_instance_); +} +inline const ::pg_query::RoleSpec& CreateUserMappingStmt::user() const { + // @@protoc_insertion_point(field_get:pg_query.CreateUserMappingStmt.user) + return _internal_user(); +} +inline void CreateUserMappingStmt::unsafe_arena_set_allocated_user( + ::pg_query::RoleSpec* user) { + if (GetArena() == nullptr) { + delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(user_); + } + user_ = user; + if (user) { + + } else { + + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.CreateUserMappingStmt.user) +} +inline ::pg_query::RoleSpec* CreateUserMappingStmt::release_user() { + + ::pg_query::RoleSpec* temp = user_; + user_ = nullptr; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + return temp; +} +inline ::pg_query::RoleSpec* CreateUserMappingStmt::unsafe_arena_release_user() { + // @@protoc_insertion_point(field_release:pg_query.CreateUserMappingStmt.user) + + ::pg_query::RoleSpec* temp = user_; + user_ = nullptr; + return temp; +} +inline ::pg_query::RoleSpec* CreateUserMappingStmt::_internal_mutable_user() { + + if (user_ == nullptr) { + auto* p = CreateMaybeMessage<::pg_query::RoleSpec>(GetArena()); + user_ = p; + } + return user_; +} +inline ::pg_query::RoleSpec* CreateUserMappingStmt::mutable_user() { + // @@protoc_insertion_point(field_mutable:pg_query.CreateUserMappingStmt.user) + return _internal_mutable_user(); +} +inline void CreateUserMappingStmt::set_allocated_user(::pg_query::RoleSpec* user) { + ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); + if (message_arena == nullptr) { + delete user_; + } + if (user) { + ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = + ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(user); + if (message_arena != submessage_arena) { + user = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( + message_arena, user, submessage_arena); + } + + } else { + + } + user_ = user; + // @@protoc_insertion_point(field_set_allocated:pg_query.CreateUserMappingStmt.user) +} + +// string servername = 2 [json_name = "servername"]; +inline void CreateUserMappingStmt::clear_servername() { + servername_.ClearToEmpty(); +} +inline const std::string& CreateUserMappingStmt::servername() const { + // @@protoc_insertion_point(field_get:pg_query.CreateUserMappingStmt.servername) + return _internal_servername(); +} +inline void CreateUserMappingStmt::set_servername(const std::string& value) { + _internal_set_servername(value); + // @@protoc_insertion_point(field_set:pg_query.CreateUserMappingStmt.servername) +} +inline std::string* CreateUserMappingStmt::mutable_servername() { + // @@protoc_insertion_point(field_mutable:pg_query.CreateUserMappingStmt.servername) + return _internal_mutable_servername(); +} +inline const std::string& CreateUserMappingStmt::_internal_servername() const { + return servername_.Get(); +} +inline void CreateUserMappingStmt::_internal_set_servername(const std::string& value) { + + servername_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArena()); +} +inline void CreateUserMappingStmt::set_servername(std::string&& value) { + + servername_.Set( + ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::move(value), GetArena()); + // @@protoc_insertion_point(field_set_rvalue:pg_query.CreateUserMappingStmt.servername) +} +inline void CreateUserMappingStmt::set_servername(const char* value) { + GOOGLE_DCHECK(value != nullptr); + + servername_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string(value), GetArena()); + // @@protoc_insertion_point(field_set_char:pg_query.CreateUserMappingStmt.servername) +} +inline void CreateUserMappingStmt::set_servername(const char* value, + size_t size) { + + servername_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string( + reinterpret_cast(value), size), GetArena()); + // @@protoc_insertion_point(field_set_pointer:pg_query.CreateUserMappingStmt.servername) +} +inline std::string* CreateUserMappingStmt::_internal_mutable_servername() { + + return servername_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArena()); +} +inline std::string* CreateUserMappingStmt::release_servername() { + // @@protoc_insertion_point(field_release:pg_query.CreateUserMappingStmt.servername) + return servername_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); +} +inline void CreateUserMappingStmt::set_allocated_servername(std::string* servername) { + if (servername != nullptr) { + + } else { + + } + servername_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), servername, + GetArena()); + // @@protoc_insertion_point(field_set_allocated:pg_query.CreateUserMappingStmt.servername) +} + +// bool if_not_exists = 3 [json_name = "if_not_exists"]; +inline void CreateUserMappingStmt::clear_if_not_exists() { + if_not_exists_ = false; +} +inline bool CreateUserMappingStmt::_internal_if_not_exists() const { + return if_not_exists_; +} +inline bool CreateUserMappingStmt::if_not_exists() const { + // @@protoc_insertion_point(field_get:pg_query.CreateUserMappingStmt.if_not_exists) + return _internal_if_not_exists(); +} +inline void CreateUserMappingStmt::_internal_set_if_not_exists(bool value) { + + if_not_exists_ = value; +} +inline void CreateUserMappingStmt::set_if_not_exists(bool value) { + _internal_set_if_not_exists(value); + // @@protoc_insertion_point(field_set:pg_query.CreateUserMappingStmt.if_not_exists) +} + +// repeated .pg_query.Node options = 4 [json_name = "options"]; +inline int CreateUserMappingStmt::_internal_options_size() const { + return options_.size(); +} +inline int CreateUserMappingStmt::options_size() const { + return _internal_options_size(); +} +inline void CreateUserMappingStmt::clear_options() { + options_.Clear(); +} +inline ::pg_query::Node* CreateUserMappingStmt::mutable_options(int index) { + // @@protoc_insertion_point(field_mutable:pg_query.CreateUserMappingStmt.options) + return options_.Mutable(index); +} +inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* +CreateUserMappingStmt::mutable_options() { + // @@protoc_insertion_point(field_mutable_list:pg_query.CreateUserMappingStmt.options) + return &options_; +} +inline const ::pg_query::Node& CreateUserMappingStmt::_internal_options(int index) const { + return options_.Get(index); +} +inline const ::pg_query::Node& CreateUserMappingStmt::options(int index) const { + // @@protoc_insertion_point(field_get:pg_query.CreateUserMappingStmt.options) + return _internal_options(index); +} +inline ::pg_query::Node* CreateUserMappingStmt::_internal_add_options() { + return options_.Add(); +} +inline ::pg_query::Node* CreateUserMappingStmt::add_options() { + // @@protoc_insertion_point(field_add:pg_query.CreateUserMappingStmt.options) + return _internal_add_options(); +} +inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& +CreateUserMappingStmt::options() const { + // @@protoc_insertion_point(field_list:pg_query.CreateUserMappingStmt.options) + return options_; +} + +// ------------------------------------------------------------------- + +// AlterUserMappingStmt + +// .pg_query.RoleSpec user = 1 [json_name = "user"]; +inline bool AlterUserMappingStmt::_internal_has_user() const { + return this != internal_default_instance() && user_ != nullptr; +} +inline bool AlterUserMappingStmt::has_user() const { + return _internal_has_user(); +} +inline void AlterUserMappingStmt::clear_user() { + if (GetArena() == nullptr && user_ != nullptr) { + delete user_; + } + user_ = nullptr; +} +inline const ::pg_query::RoleSpec& AlterUserMappingStmt::_internal_user() const { + const ::pg_query::RoleSpec* p = user_; + return p != nullptr ? *p : reinterpret_cast( + ::pg_query::_RoleSpec_default_instance_); +} +inline const ::pg_query::RoleSpec& AlterUserMappingStmt::user() const { + // @@protoc_insertion_point(field_get:pg_query.AlterUserMappingStmt.user) + return _internal_user(); +} +inline void AlterUserMappingStmt::unsafe_arena_set_allocated_user( + ::pg_query::RoleSpec* user) { + if (GetArena() == nullptr) { + delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(user_); + } + user_ = user; + if (user) { + + } else { + + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.AlterUserMappingStmt.user) +} +inline ::pg_query::RoleSpec* AlterUserMappingStmt::release_user() { + + ::pg_query::RoleSpec* temp = user_; + user_ = nullptr; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + return temp; +} +inline ::pg_query::RoleSpec* AlterUserMappingStmt::unsafe_arena_release_user() { + // @@protoc_insertion_point(field_release:pg_query.AlterUserMappingStmt.user) + + ::pg_query::RoleSpec* temp = user_; + user_ = nullptr; + return temp; +} +inline ::pg_query::RoleSpec* AlterUserMappingStmt::_internal_mutable_user() { + + if (user_ == nullptr) { + auto* p = CreateMaybeMessage<::pg_query::RoleSpec>(GetArena()); + user_ = p; + } + return user_; +} +inline ::pg_query::RoleSpec* AlterUserMappingStmt::mutable_user() { + // @@protoc_insertion_point(field_mutable:pg_query.AlterUserMappingStmt.user) + return _internal_mutable_user(); +} +inline void AlterUserMappingStmt::set_allocated_user(::pg_query::RoleSpec* user) { + ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); + if (message_arena == nullptr) { + delete user_; + } + if (user) { + ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = + ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(user); + if (message_arena != submessage_arena) { + user = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( + message_arena, user, submessage_arena); + } + + } else { + + } + user_ = user; + // @@protoc_insertion_point(field_set_allocated:pg_query.AlterUserMappingStmt.user) +} + +// string servername = 2 [json_name = "servername"]; +inline void AlterUserMappingStmt::clear_servername() { + servername_.ClearToEmpty(); +} +inline const std::string& AlterUserMappingStmt::servername() const { + // @@protoc_insertion_point(field_get:pg_query.AlterUserMappingStmt.servername) + return _internal_servername(); +} +inline void AlterUserMappingStmt::set_servername(const std::string& value) { + _internal_set_servername(value); + // @@protoc_insertion_point(field_set:pg_query.AlterUserMappingStmt.servername) +} +inline std::string* AlterUserMappingStmt::mutable_servername() { + // @@protoc_insertion_point(field_mutable:pg_query.AlterUserMappingStmt.servername) + return _internal_mutable_servername(); +} +inline const std::string& AlterUserMappingStmt::_internal_servername() const { + return servername_.Get(); +} +inline void AlterUserMappingStmt::_internal_set_servername(const std::string& value) { + + servername_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArena()); +} +inline void AlterUserMappingStmt::set_servername(std::string&& value) { + + servername_.Set( + ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::move(value), GetArena()); + // @@protoc_insertion_point(field_set_rvalue:pg_query.AlterUserMappingStmt.servername) +} +inline void AlterUserMappingStmt::set_servername(const char* value) { + GOOGLE_DCHECK(value != nullptr); + + servername_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string(value), GetArena()); + // @@protoc_insertion_point(field_set_char:pg_query.AlterUserMappingStmt.servername) +} +inline void AlterUserMappingStmt::set_servername(const char* value, + size_t size) { + + servername_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string( + reinterpret_cast(value), size), GetArena()); + // @@protoc_insertion_point(field_set_pointer:pg_query.AlterUserMappingStmt.servername) +} +inline std::string* AlterUserMappingStmt::_internal_mutable_servername() { + + return servername_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArena()); +} +inline std::string* AlterUserMappingStmt::release_servername() { + // @@protoc_insertion_point(field_release:pg_query.AlterUserMappingStmt.servername) + return servername_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); +} +inline void AlterUserMappingStmt::set_allocated_servername(std::string* servername) { + if (servername != nullptr) { + + } else { + + } + servername_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), servername, + GetArena()); + // @@protoc_insertion_point(field_set_allocated:pg_query.AlterUserMappingStmt.servername) +} + +// repeated .pg_query.Node options = 3 [json_name = "options"]; +inline int AlterUserMappingStmt::_internal_options_size() const { + return options_.size(); +} +inline int AlterUserMappingStmt::options_size() const { + return _internal_options_size(); +} +inline void AlterUserMappingStmt::clear_options() { + options_.Clear(); +} +inline ::pg_query::Node* AlterUserMappingStmt::mutable_options(int index) { + // @@protoc_insertion_point(field_mutable:pg_query.AlterUserMappingStmt.options) + return options_.Mutable(index); +} +inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* +AlterUserMappingStmt::mutable_options() { + // @@protoc_insertion_point(field_mutable_list:pg_query.AlterUserMappingStmt.options) + return &options_; +} +inline const ::pg_query::Node& AlterUserMappingStmt::_internal_options(int index) const { + return options_.Get(index); +} +inline const ::pg_query::Node& AlterUserMappingStmt::options(int index) const { + // @@protoc_insertion_point(field_get:pg_query.AlterUserMappingStmt.options) + return _internal_options(index); +} +inline ::pg_query::Node* AlterUserMappingStmt::_internal_add_options() { + return options_.Add(); +} +inline ::pg_query::Node* AlterUserMappingStmt::add_options() { + // @@protoc_insertion_point(field_add:pg_query.AlterUserMappingStmt.options) + return _internal_add_options(); +} +inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& +AlterUserMappingStmt::options() const { + // @@protoc_insertion_point(field_list:pg_query.AlterUserMappingStmt.options) + return options_; +} + +// ------------------------------------------------------------------- + +// DropUserMappingStmt + +// .pg_query.RoleSpec user = 1 [json_name = "user"]; +inline bool DropUserMappingStmt::_internal_has_user() const { + return this != internal_default_instance() && user_ != nullptr; +} +inline bool DropUserMappingStmt::has_user() const { + return _internal_has_user(); +} +inline void DropUserMappingStmt::clear_user() { + if (GetArena() == nullptr && user_ != nullptr) { + delete user_; + } + user_ = nullptr; +} +inline const ::pg_query::RoleSpec& DropUserMappingStmt::_internal_user() const { + const ::pg_query::RoleSpec* p = user_; + return p != nullptr ? *p : reinterpret_cast( + ::pg_query::_RoleSpec_default_instance_); +} +inline const ::pg_query::RoleSpec& DropUserMappingStmt::user() const { + // @@protoc_insertion_point(field_get:pg_query.DropUserMappingStmt.user) + return _internal_user(); +} +inline void DropUserMappingStmt::unsafe_arena_set_allocated_user( + ::pg_query::RoleSpec* user) { + if (GetArena() == nullptr) { + delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(user_); + } + user_ = user; + if (user) { + + } else { + + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.DropUserMappingStmt.user) +} +inline ::pg_query::RoleSpec* DropUserMappingStmt::release_user() { + + ::pg_query::RoleSpec* temp = user_; + user_ = nullptr; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + return temp; +} +inline ::pg_query::RoleSpec* DropUserMappingStmt::unsafe_arena_release_user() { + // @@protoc_insertion_point(field_release:pg_query.DropUserMappingStmt.user) + + ::pg_query::RoleSpec* temp = user_; + user_ = nullptr; + return temp; +} +inline ::pg_query::RoleSpec* DropUserMappingStmt::_internal_mutable_user() { + + if (user_ == nullptr) { + auto* p = CreateMaybeMessage<::pg_query::RoleSpec>(GetArena()); + user_ = p; + } + return user_; +} +inline ::pg_query::RoleSpec* DropUserMappingStmt::mutable_user() { + // @@protoc_insertion_point(field_mutable:pg_query.DropUserMappingStmt.user) + return _internal_mutable_user(); +} +inline void DropUserMappingStmt::set_allocated_user(::pg_query::RoleSpec* user) { + ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); + if (message_arena == nullptr) { + delete user_; + } + if (user) { + ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = + ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(user); + if (message_arena != submessage_arena) { + user = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( + message_arena, user, submessage_arena); + } + + } else { + + } + user_ = user; + // @@protoc_insertion_point(field_set_allocated:pg_query.DropUserMappingStmt.user) +} + +// string servername = 2 [json_name = "servername"]; +inline void DropUserMappingStmt::clear_servername() { + servername_.ClearToEmpty(); +} +inline const std::string& DropUserMappingStmt::servername() const { + // @@protoc_insertion_point(field_get:pg_query.DropUserMappingStmt.servername) + return _internal_servername(); +} +inline void DropUserMappingStmt::set_servername(const std::string& value) { + _internal_set_servername(value); + // @@protoc_insertion_point(field_set:pg_query.DropUserMappingStmt.servername) +} +inline std::string* DropUserMappingStmt::mutable_servername() { + // @@protoc_insertion_point(field_mutable:pg_query.DropUserMappingStmt.servername) + return _internal_mutable_servername(); +} +inline const std::string& DropUserMappingStmt::_internal_servername() const { + return servername_.Get(); +} +inline void DropUserMappingStmt::_internal_set_servername(const std::string& value) { + + servername_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArena()); +} +inline void DropUserMappingStmt::set_servername(std::string&& value) { + + servername_.Set( + ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::move(value), GetArena()); + // @@protoc_insertion_point(field_set_rvalue:pg_query.DropUserMappingStmt.servername) +} +inline void DropUserMappingStmt::set_servername(const char* value) { + GOOGLE_DCHECK(value != nullptr); + + servername_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string(value), GetArena()); + // @@protoc_insertion_point(field_set_char:pg_query.DropUserMappingStmt.servername) +} +inline void DropUserMappingStmt::set_servername(const char* value, + size_t size) { + + servername_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string( + reinterpret_cast(value), size), GetArena()); + // @@protoc_insertion_point(field_set_pointer:pg_query.DropUserMappingStmt.servername) +} +inline std::string* DropUserMappingStmt::_internal_mutable_servername() { + + return servername_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArena()); +} +inline std::string* DropUserMappingStmt::release_servername() { + // @@protoc_insertion_point(field_release:pg_query.DropUserMappingStmt.servername) + return servername_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); +} +inline void DropUserMappingStmt::set_allocated_servername(std::string* servername) { + if (servername != nullptr) { + + } else { + + } + servername_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), servername, + GetArena()); + // @@protoc_insertion_point(field_set_allocated:pg_query.DropUserMappingStmt.servername) +} + +// bool missing_ok = 3 [json_name = "missing_ok"]; +inline void DropUserMappingStmt::clear_missing_ok() { + missing_ok_ = false; +} +inline bool DropUserMappingStmt::_internal_missing_ok() const { + return missing_ok_; +} +inline bool DropUserMappingStmt::missing_ok() const { + // @@protoc_insertion_point(field_get:pg_query.DropUserMappingStmt.missing_ok) + return _internal_missing_ok(); +} +inline void DropUserMappingStmt::_internal_set_missing_ok(bool value) { + + missing_ok_ = value; +} +inline void DropUserMappingStmt::set_missing_ok(bool value) { + _internal_set_missing_ok(value); + // @@protoc_insertion_point(field_set:pg_query.DropUserMappingStmt.missing_ok) +} + +// ------------------------------------------------------------------- + +// AlterTableSpaceOptionsStmt + +// string tablespacename = 1 [json_name = "tablespacename"]; +inline void AlterTableSpaceOptionsStmt::clear_tablespacename() { + tablespacename_.ClearToEmpty(); +} +inline const std::string& AlterTableSpaceOptionsStmt::tablespacename() const { + // @@protoc_insertion_point(field_get:pg_query.AlterTableSpaceOptionsStmt.tablespacename) + return _internal_tablespacename(); +} +inline void AlterTableSpaceOptionsStmt::set_tablespacename(const std::string& value) { + _internal_set_tablespacename(value); + // @@protoc_insertion_point(field_set:pg_query.AlterTableSpaceOptionsStmt.tablespacename) +} +inline std::string* AlterTableSpaceOptionsStmt::mutable_tablespacename() { + // @@protoc_insertion_point(field_mutable:pg_query.AlterTableSpaceOptionsStmt.tablespacename) + return _internal_mutable_tablespacename(); +} +inline const std::string& AlterTableSpaceOptionsStmt::_internal_tablespacename() const { + return tablespacename_.Get(); +} +inline void AlterTableSpaceOptionsStmt::_internal_set_tablespacename(const std::string& value) { + + tablespacename_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArena()); +} +inline void AlterTableSpaceOptionsStmt::set_tablespacename(std::string&& value) { + + tablespacename_.Set( + ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::move(value), GetArena()); + // @@protoc_insertion_point(field_set_rvalue:pg_query.AlterTableSpaceOptionsStmt.tablespacename) +} +inline void AlterTableSpaceOptionsStmt::set_tablespacename(const char* value) { + GOOGLE_DCHECK(value != nullptr); + + tablespacename_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string(value), GetArena()); + // @@protoc_insertion_point(field_set_char:pg_query.AlterTableSpaceOptionsStmt.tablespacename) +} +inline void AlterTableSpaceOptionsStmt::set_tablespacename(const char* value, + size_t size) { + + tablespacename_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string( + reinterpret_cast(value), size), GetArena()); + // @@protoc_insertion_point(field_set_pointer:pg_query.AlterTableSpaceOptionsStmt.tablespacename) +} +inline std::string* AlterTableSpaceOptionsStmt::_internal_mutable_tablespacename() { + + return tablespacename_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArena()); +} +inline std::string* AlterTableSpaceOptionsStmt::release_tablespacename() { + // @@protoc_insertion_point(field_release:pg_query.AlterTableSpaceOptionsStmt.tablespacename) + return tablespacename_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); +} +inline void AlterTableSpaceOptionsStmt::set_allocated_tablespacename(std::string* tablespacename) { + if (tablespacename != nullptr) { + + } else { + + } + tablespacename_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), tablespacename, + GetArena()); + // @@protoc_insertion_point(field_set_allocated:pg_query.AlterTableSpaceOptionsStmt.tablespacename) +} + +// repeated .pg_query.Node options = 2 [json_name = "options"]; +inline int AlterTableSpaceOptionsStmt::_internal_options_size() const { + return options_.size(); +} +inline int AlterTableSpaceOptionsStmt::options_size() const { + return _internal_options_size(); +} +inline void AlterTableSpaceOptionsStmt::clear_options() { + options_.Clear(); +} +inline ::pg_query::Node* AlterTableSpaceOptionsStmt::mutable_options(int index) { + // @@protoc_insertion_point(field_mutable:pg_query.AlterTableSpaceOptionsStmt.options) + return options_.Mutable(index); +} +inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* +AlterTableSpaceOptionsStmt::mutable_options() { + // @@protoc_insertion_point(field_mutable_list:pg_query.AlterTableSpaceOptionsStmt.options) + return &options_; +} +inline const ::pg_query::Node& AlterTableSpaceOptionsStmt::_internal_options(int index) const { + return options_.Get(index); +} +inline const ::pg_query::Node& AlterTableSpaceOptionsStmt::options(int index) const { + // @@protoc_insertion_point(field_get:pg_query.AlterTableSpaceOptionsStmt.options) + return _internal_options(index); +} +inline ::pg_query::Node* AlterTableSpaceOptionsStmt::_internal_add_options() { + return options_.Add(); +} +inline ::pg_query::Node* AlterTableSpaceOptionsStmt::add_options() { + // @@protoc_insertion_point(field_add:pg_query.AlterTableSpaceOptionsStmt.options) + return _internal_add_options(); +} +inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& +AlterTableSpaceOptionsStmt::options() const { + // @@protoc_insertion_point(field_list:pg_query.AlterTableSpaceOptionsStmt.options) + return options_; +} + +// bool is_reset = 3 [json_name = "isReset"]; +inline void AlterTableSpaceOptionsStmt::clear_is_reset() { + is_reset_ = false; +} +inline bool AlterTableSpaceOptionsStmt::_internal_is_reset() const { + return is_reset_; +} +inline bool AlterTableSpaceOptionsStmt::is_reset() const { + // @@protoc_insertion_point(field_get:pg_query.AlterTableSpaceOptionsStmt.is_reset) + return _internal_is_reset(); +} +inline void AlterTableSpaceOptionsStmt::_internal_set_is_reset(bool value) { + + is_reset_ = value; +} +inline void AlterTableSpaceOptionsStmt::set_is_reset(bool value) { + _internal_set_is_reset(value); + // @@protoc_insertion_point(field_set:pg_query.AlterTableSpaceOptionsStmt.is_reset) +} + +// ------------------------------------------------------------------- + +// AlterTableMoveAllStmt + +// string orig_tablespacename = 1 [json_name = "orig_tablespacename"]; +inline void AlterTableMoveAllStmt::clear_orig_tablespacename() { + orig_tablespacename_.ClearToEmpty(); +} +inline const std::string& AlterTableMoveAllStmt::orig_tablespacename() const { + // @@protoc_insertion_point(field_get:pg_query.AlterTableMoveAllStmt.orig_tablespacename) + return _internal_orig_tablespacename(); +} +inline void AlterTableMoveAllStmt::set_orig_tablespacename(const std::string& value) { + _internal_set_orig_tablespacename(value); + // @@protoc_insertion_point(field_set:pg_query.AlterTableMoveAllStmt.orig_tablespacename) +} +inline std::string* AlterTableMoveAllStmt::mutable_orig_tablespacename() { + // @@protoc_insertion_point(field_mutable:pg_query.AlterTableMoveAllStmt.orig_tablespacename) + return _internal_mutable_orig_tablespacename(); +} +inline const std::string& AlterTableMoveAllStmt::_internal_orig_tablespacename() const { + return orig_tablespacename_.Get(); +} +inline void AlterTableMoveAllStmt::_internal_set_orig_tablespacename(const std::string& value) { + + orig_tablespacename_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArena()); +} +inline void AlterTableMoveAllStmt::set_orig_tablespacename(std::string&& value) { + + orig_tablespacename_.Set( + ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::move(value), GetArena()); + // @@protoc_insertion_point(field_set_rvalue:pg_query.AlterTableMoveAllStmt.orig_tablespacename) +} +inline void AlterTableMoveAllStmt::set_orig_tablespacename(const char* value) { + GOOGLE_DCHECK(value != nullptr); + + orig_tablespacename_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string(value), GetArena()); + // @@protoc_insertion_point(field_set_char:pg_query.AlterTableMoveAllStmt.orig_tablespacename) +} +inline void AlterTableMoveAllStmt::set_orig_tablespacename(const char* value, + size_t size) { + + orig_tablespacename_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string( + reinterpret_cast(value), size), GetArena()); + // @@protoc_insertion_point(field_set_pointer:pg_query.AlterTableMoveAllStmt.orig_tablespacename) +} +inline std::string* AlterTableMoveAllStmt::_internal_mutable_orig_tablespacename() { + + return orig_tablespacename_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArena()); +} +inline std::string* AlterTableMoveAllStmt::release_orig_tablespacename() { + // @@protoc_insertion_point(field_release:pg_query.AlterTableMoveAllStmt.orig_tablespacename) + return orig_tablespacename_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); +} +inline void AlterTableMoveAllStmt::set_allocated_orig_tablespacename(std::string* orig_tablespacename) { + if (orig_tablespacename != nullptr) { + + } else { + + } + orig_tablespacename_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), orig_tablespacename, + GetArena()); + // @@protoc_insertion_point(field_set_allocated:pg_query.AlterTableMoveAllStmt.orig_tablespacename) +} + +// .pg_query.ObjectType objtype = 2 [json_name = "objtype"]; +inline void AlterTableMoveAllStmt::clear_objtype() { + objtype_ = 0; +} +inline ::pg_query::ObjectType AlterTableMoveAllStmt::_internal_objtype() const { + return static_cast< ::pg_query::ObjectType >(objtype_); +} +inline ::pg_query::ObjectType AlterTableMoveAllStmt::objtype() const { + // @@protoc_insertion_point(field_get:pg_query.AlterTableMoveAllStmt.objtype) + return _internal_objtype(); +} +inline void AlterTableMoveAllStmt::_internal_set_objtype(::pg_query::ObjectType value) { + + objtype_ = value; +} +inline void AlterTableMoveAllStmt::set_objtype(::pg_query::ObjectType value) { + _internal_set_objtype(value); + // @@protoc_insertion_point(field_set:pg_query.AlterTableMoveAllStmt.objtype) +} + +// repeated .pg_query.Node roles = 3 [json_name = "roles"]; +inline int AlterTableMoveAllStmt::_internal_roles_size() const { + return roles_.size(); +} +inline int AlterTableMoveAllStmt::roles_size() const { + return _internal_roles_size(); +} +inline void AlterTableMoveAllStmt::clear_roles() { + roles_.Clear(); +} +inline ::pg_query::Node* AlterTableMoveAllStmt::mutable_roles(int index) { + // @@protoc_insertion_point(field_mutable:pg_query.AlterTableMoveAllStmt.roles) + return roles_.Mutable(index); +} +inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* +AlterTableMoveAllStmt::mutable_roles() { + // @@protoc_insertion_point(field_mutable_list:pg_query.AlterTableMoveAllStmt.roles) + return &roles_; +} +inline const ::pg_query::Node& AlterTableMoveAllStmt::_internal_roles(int index) const { + return roles_.Get(index); +} +inline const ::pg_query::Node& AlterTableMoveAllStmt::roles(int index) const { + // @@protoc_insertion_point(field_get:pg_query.AlterTableMoveAllStmt.roles) + return _internal_roles(index); +} +inline ::pg_query::Node* AlterTableMoveAllStmt::_internal_add_roles() { + return roles_.Add(); +} +inline ::pg_query::Node* AlterTableMoveAllStmt::add_roles() { + // @@protoc_insertion_point(field_add:pg_query.AlterTableMoveAllStmt.roles) + return _internal_add_roles(); +} +inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& +AlterTableMoveAllStmt::roles() const { + // @@protoc_insertion_point(field_list:pg_query.AlterTableMoveAllStmt.roles) + return roles_; +} + +// string new_tablespacename = 4 [json_name = "new_tablespacename"]; +inline void AlterTableMoveAllStmt::clear_new_tablespacename() { + new_tablespacename_.ClearToEmpty(); +} +inline const std::string& AlterTableMoveAllStmt::new_tablespacename() const { + // @@protoc_insertion_point(field_get:pg_query.AlterTableMoveAllStmt.new_tablespacename) + return _internal_new_tablespacename(); +} +inline void AlterTableMoveAllStmt::set_new_tablespacename(const std::string& value) { + _internal_set_new_tablespacename(value); + // @@protoc_insertion_point(field_set:pg_query.AlterTableMoveAllStmt.new_tablespacename) +} +inline std::string* AlterTableMoveAllStmt::mutable_new_tablespacename() { + // @@protoc_insertion_point(field_mutable:pg_query.AlterTableMoveAllStmt.new_tablespacename) + return _internal_mutable_new_tablespacename(); +} +inline const std::string& AlterTableMoveAllStmt::_internal_new_tablespacename() const { + return new_tablespacename_.Get(); +} +inline void AlterTableMoveAllStmt::_internal_set_new_tablespacename(const std::string& value) { + + new_tablespacename_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArena()); +} +inline void AlterTableMoveAllStmt::set_new_tablespacename(std::string&& value) { + + new_tablespacename_.Set( + ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::move(value), GetArena()); + // @@protoc_insertion_point(field_set_rvalue:pg_query.AlterTableMoveAllStmt.new_tablespacename) +} +inline void AlterTableMoveAllStmt::set_new_tablespacename(const char* value) { + GOOGLE_DCHECK(value != nullptr); + + new_tablespacename_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string(value), GetArena()); + // @@protoc_insertion_point(field_set_char:pg_query.AlterTableMoveAllStmt.new_tablespacename) +} +inline void AlterTableMoveAllStmt::set_new_tablespacename(const char* value, + size_t size) { + + new_tablespacename_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string( + reinterpret_cast(value), size), GetArena()); + // @@protoc_insertion_point(field_set_pointer:pg_query.AlterTableMoveAllStmt.new_tablespacename) +} +inline std::string* AlterTableMoveAllStmt::_internal_mutable_new_tablespacename() { + + return new_tablespacename_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArena()); +} +inline std::string* AlterTableMoveAllStmt::release_new_tablespacename() { + // @@protoc_insertion_point(field_release:pg_query.AlterTableMoveAllStmt.new_tablespacename) + return new_tablespacename_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); +} +inline void AlterTableMoveAllStmt::set_allocated_new_tablespacename(std::string* new_tablespacename) { + if (new_tablespacename != nullptr) { + + } else { + + } + new_tablespacename_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), new_tablespacename, + GetArena()); + // @@protoc_insertion_point(field_set_allocated:pg_query.AlterTableMoveAllStmt.new_tablespacename) +} + +// bool nowait = 5 [json_name = "nowait"]; +inline void AlterTableMoveAllStmt::clear_nowait() { + nowait_ = false; +} +inline bool AlterTableMoveAllStmt::_internal_nowait() const { + return nowait_; +} +inline bool AlterTableMoveAllStmt::nowait() const { + // @@protoc_insertion_point(field_get:pg_query.AlterTableMoveAllStmt.nowait) + return _internal_nowait(); +} +inline void AlterTableMoveAllStmt::_internal_set_nowait(bool value) { + + nowait_ = value; +} +inline void AlterTableMoveAllStmt::set_nowait(bool value) { + _internal_set_nowait(value); + // @@protoc_insertion_point(field_set:pg_query.AlterTableMoveAllStmt.nowait) +} + +// ------------------------------------------------------------------- + +// SecLabelStmt + +// .pg_query.ObjectType objtype = 1 [json_name = "objtype"]; +inline void SecLabelStmt::clear_objtype() { + objtype_ = 0; +} +inline ::pg_query::ObjectType SecLabelStmt::_internal_objtype() const { + return static_cast< ::pg_query::ObjectType >(objtype_); +} +inline ::pg_query::ObjectType SecLabelStmt::objtype() const { + // @@protoc_insertion_point(field_get:pg_query.SecLabelStmt.objtype) + return _internal_objtype(); +} +inline void SecLabelStmt::_internal_set_objtype(::pg_query::ObjectType value) { + + objtype_ = value; +} +inline void SecLabelStmt::set_objtype(::pg_query::ObjectType value) { + _internal_set_objtype(value); + // @@protoc_insertion_point(field_set:pg_query.SecLabelStmt.objtype) +} + +// .pg_query.Node object = 2 [json_name = "object"]; +inline bool SecLabelStmt::_internal_has_object() const { + return this != internal_default_instance() && object_ != nullptr; +} +inline bool SecLabelStmt::has_object() const { + return _internal_has_object(); +} +inline void SecLabelStmt::clear_object() { + if (GetArena() == nullptr && object_ != nullptr) { + delete object_; + } + object_ = nullptr; +} +inline const ::pg_query::Node& SecLabelStmt::_internal_object() const { + const ::pg_query::Node* p = object_; + return p != nullptr ? *p : reinterpret_cast( + ::pg_query::_Node_default_instance_); +} +inline const ::pg_query::Node& SecLabelStmt::object() const { + // @@protoc_insertion_point(field_get:pg_query.SecLabelStmt.object) + return _internal_object(); +} +inline void SecLabelStmt::unsafe_arena_set_allocated_object( + ::pg_query::Node* object) { + if (GetArena() == nullptr) { + delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(object_); + } + object_ = object; + if (object) { + + } else { + + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.SecLabelStmt.object) +} +inline ::pg_query::Node* SecLabelStmt::release_object() { + + ::pg_query::Node* temp = object_; + object_ = nullptr; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + return temp; +} +inline ::pg_query::Node* SecLabelStmt::unsafe_arena_release_object() { + // @@protoc_insertion_point(field_release:pg_query.SecLabelStmt.object) + + ::pg_query::Node* temp = object_; + object_ = nullptr; + return temp; +} +inline ::pg_query::Node* SecLabelStmt::_internal_mutable_object() { + + if (object_ == nullptr) { + auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); + object_ = p; + } + return object_; +} +inline ::pg_query::Node* SecLabelStmt::mutable_object() { + // @@protoc_insertion_point(field_mutable:pg_query.SecLabelStmt.object) + return _internal_mutable_object(); +} +inline void SecLabelStmt::set_allocated_object(::pg_query::Node* object) { + ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); + if (message_arena == nullptr) { + delete object_; + } + if (object) { + ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = + ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(object); + if (message_arena != submessage_arena) { + object = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( + message_arena, object, submessage_arena); + } + + } else { + + } + object_ = object; + // @@protoc_insertion_point(field_set_allocated:pg_query.SecLabelStmt.object) +} + +// string provider = 3 [json_name = "provider"]; +inline void SecLabelStmt::clear_provider() { + provider_.ClearToEmpty(); +} +inline const std::string& SecLabelStmt::provider() const { + // @@protoc_insertion_point(field_get:pg_query.SecLabelStmt.provider) + return _internal_provider(); +} +inline void SecLabelStmt::set_provider(const std::string& value) { + _internal_set_provider(value); + // @@protoc_insertion_point(field_set:pg_query.SecLabelStmt.provider) +} +inline std::string* SecLabelStmt::mutable_provider() { + // @@protoc_insertion_point(field_mutable:pg_query.SecLabelStmt.provider) + return _internal_mutable_provider(); +} +inline const std::string& SecLabelStmt::_internal_provider() const { + return provider_.Get(); +} +inline void SecLabelStmt::_internal_set_provider(const std::string& value) { + + provider_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArena()); +} +inline void SecLabelStmt::set_provider(std::string&& value) { + + provider_.Set( + ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::move(value), GetArena()); + // @@protoc_insertion_point(field_set_rvalue:pg_query.SecLabelStmt.provider) +} +inline void SecLabelStmt::set_provider(const char* value) { + GOOGLE_DCHECK(value != nullptr); + + provider_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string(value), GetArena()); + // @@protoc_insertion_point(field_set_char:pg_query.SecLabelStmt.provider) +} +inline void SecLabelStmt::set_provider(const char* value, + size_t size) { + + provider_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string( + reinterpret_cast(value), size), GetArena()); + // @@protoc_insertion_point(field_set_pointer:pg_query.SecLabelStmt.provider) +} +inline std::string* SecLabelStmt::_internal_mutable_provider() { + + return provider_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArena()); +} +inline std::string* SecLabelStmt::release_provider() { + // @@protoc_insertion_point(field_release:pg_query.SecLabelStmt.provider) + return provider_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); +} +inline void SecLabelStmt::set_allocated_provider(std::string* provider) { + if (provider != nullptr) { + + } else { + + } + provider_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), provider, + GetArena()); + // @@protoc_insertion_point(field_set_allocated:pg_query.SecLabelStmt.provider) +} + +// string label = 4 [json_name = "label"]; +inline void SecLabelStmt::clear_label() { + label_.ClearToEmpty(); +} +inline const std::string& SecLabelStmt::label() const { + // @@protoc_insertion_point(field_get:pg_query.SecLabelStmt.label) + return _internal_label(); +} +inline void SecLabelStmt::set_label(const std::string& value) { + _internal_set_label(value); + // @@protoc_insertion_point(field_set:pg_query.SecLabelStmt.label) +} +inline std::string* SecLabelStmt::mutable_label() { + // @@protoc_insertion_point(field_mutable:pg_query.SecLabelStmt.label) + return _internal_mutable_label(); +} +inline const std::string& SecLabelStmt::_internal_label() const { + return label_.Get(); +} +inline void SecLabelStmt::_internal_set_label(const std::string& value) { + + label_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArena()); +} +inline void SecLabelStmt::set_label(std::string&& value) { + + label_.Set( + ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::move(value), GetArena()); + // @@protoc_insertion_point(field_set_rvalue:pg_query.SecLabelStmt.label) +} +inline void SecLabelStmt::set_label(const char* value) { + GOOGLE_DCHECK(value != nullptr); + + label_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string(value), GetArena()); + // @@protoc_insertion_point(field_set_char:pg_query.SecLabelStmt.label) +} +inline void SecLabelStmt::set_label(const char* value, + size_t size) { + + label_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string( + reinterpret_cast(value), size), GetArena()); + // @@protoc_insertion_point(field_set_pointer:pg_query.SecLabelStmt.label) +} +inline std::string* SecLabelStmt::_internal_mutable_label() { + + return label_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArena()); +} +inline std::string* SecLabelStmt::release_label() { + // @@protoc_insertion_point(field_release:pg_query.SecLabelStmt.label) + return label_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); +} +inline void SecLabelStmt::set_allocated_label(std::string* label) { + if (label != nullptr) { + + } else { + + } + label_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), label, + GetArena()); + // @@protoc_insertion_point(field_set_allocated:pg_query.SecLabelStmt.label) +} + +// ------------------------------------------------------------------- + +// CreateForeignTableStmt + +// .pg_query.CreateStmt base_stmt = 1 [json_name = "base"]; +inline bool CreateForeignTableStmt::_internal_has_base_stmt() const { + return this != internal_default_instance() && base_stmt_ != nullptr; +} +inline bool CreateForeignTableStmt::has_base_stmt() const { + return _internal_has_base_stmt(); +} +inline void CreateForeignTableStmt::clear_base_stmt() { + if (GetArena() == nullptr && base_stmt_ != nullptr) { + delete base_stmt_; + } + base_stmt_ = nullptr; +} +inline const ::pg_query::CreateStmt& CreateForeignTableStmt::_internal_base_stmt() const { + const ::pg_query::CreateStmt* p = base_stmt_; + return p != nullptr ? *p : reinterpret_cast( + ::pg_query::_CreateStmt_default_instance_); +} +inline const ::pg_query::CreateStmt& CreateForeignTableStmt::base_stmt() const { + // @@protoc_insertion_point(field_get:pg_query.CreateForeignTableStmt.base_stmt) + return _internal_base_stmt(); +} +inline void CreateForeignTableStmt::unsafe_arena_set_allocated_base_stmt( + ::pg_query::CreateStmt* base_stmt) { + if (GetArena() == nullptr) { + delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(base_stmt_); + } + base_stmt_ = base_stmt; + if (base_stmt) { + + } else { + + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.CreateForeignTableStmt.base_stmt) +} +inline ::pg_query::CreateStmt* CreateForeignTableStmt::release_base_stmt() { + + ::pg_query::CreateStmt* temp = base_stmt_; + base_stmt_ = nullptr; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + return temp; +} +inline ::pg_query::CreateStmt* CreateForeignTableStmt::unsafe_arena_release_base_stmt() { + // @@protoc_insertion_point(field_release:pg_query.CreateForeignTableStmt.base_stmt) + + ::pg_query::CreateStmt* temp = base_stmt_; + base_stmt_ = nullptr; + return temp; +} +inline ::pg_query::CreateStmt* CreateForeignTableStmt::_internal_mutable_base_stmt() { + + if (base_stmt_ == nullptr) { + auto* p = CreateMaybeMessage<::pg_query::CreateStmt>(GetArena()); + base_stmt_ = p; + } + return base_stmt_; +} +inline ::pg_query::CreateStmt* CreateForeignTableStmt::mutable_base_stmt() { + // @@protoc_insertion_point(field_mutable:pg_query.CreateForeignTableStmt.base_stmt) + return _internal_mutable_base_stmt(); +} +inline void CreateForeignTableStmt::set_allocated_base_stmt(::pg_query::CreateStmt* base_stmt) { + ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); + if (message_arena == nullptr) { + delete base_stmt_; + } + if (base_stmt) { + ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = + ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(base_stmt); + if (message_arena != submessage_arena) { + base_stmt = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( + message_arena, base_stmt, submessage_arena); + } + + } else { + + } + base_stmt_ = base_stmt; + // @@protoc_insertion_point(field_set_allocated:pg_query.CreateForeignTableStmt.base_stmt) +} + +// string servername = 2 [json_name = "servername"]; +inline void CreateForeignTableStmt::clear_servername() { + servername_.ClearToEmpty(); +} +inline const std::string& CreateForeignTableStmt::servername() const { + // @@protoc_insertion_point(field_get:pg_query.CreateForeignTableStmt.servername) + return _internal_servername(); +} +inline void CreateForeignTableStmt::set_servername(const std::string& value) { + _internal_set_servername(value); + // @@protoc_insertion_point(field_set:pg_query.CreateForeignTableStmt.servername) +} +inline std::string* CreateForeignTableStmt::mutable_servername() { + // @@protoc_insertion_point(field_mutable:pg_query.CreateForeignTableStmt.servername) + return _internal_mutable_servername(); +} +inline const std::string& CreateForeignTableStmt::_internal_servername() const { + return servername_.Get(); +} +inline void CreateForeignTableStmt::_internal_set_servername(const std::string& value) { + + servername_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArena()); +} +inline void CreateForeignTableStmt::set_servername(std::string&& value) { + + servername_.Set( + ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::move(value), GetArena()); + // @@protoc_insertion_point(field_set_rvalue:pg_query.CreateForeignTableStmt.servername) +} +inline void CreateForeignTableStmt::set_servername(const char* value) { + GOOGLE_DCHECK(value != nullptr); + + servername_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string(value), GetArena()); + // @@protoc_insertion_point(field_set_char:pg_query.CreateForeignTableStmt.servername) +} +inline void CreateForeignTableStmt::set_servername(const char* value, + size_t size) { + + servername_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string( + reinterpret_cast(value), size), GetArena()); + // @@protoc_insertion_point(field_set_pointer:pg_query.CreateForeignTableStmt.servername) +} +inline std::string* CreateForeignTableStmt::_internal_mutable_servername() { + + return servername_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArena()); +} +inline std::string* CreateForeignTableStmt::release_servername() { + // @@protoc_insertion_point(field_release:pg_query.CreateForeignTableStmt.servername) + return servername_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); +} +inline void CreateForeignTableStmt::set_allocated_servername(std::string* servername) { + if (servername != nullptr) { + + } else { + + } + servername_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), servername, + GetArena()); + // @@protoc_insertion_point(field_set_allocated:pg_query.CreateForeignTableStmt.servername) +} + +// repeated .pg_query.Node options = 3 [json_name = "options"]; +inline int CreateForeignTableStmt::_internal_options_size() const { + return options_.size(); +} +inline int CreateForeignTableStmt::options_size() const { + return _internal_options_size(); +} +inline void CreateForeignTableStmt::clear_options() { + options_.Clear(); +} +inline ::pg_query::Node* CreateForeignTableStmt::mutable_options(int index) { + // @@protoc_insertion_point(field_mutable:pg_query.CreateForeignTableStmt.options) + return options_.Mutable(index); +} +inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* +CreateForeignTableStmt::mutable_options() { + // @@protoc_insertion_point(field_mutable_list:pg_query.CreateForeignTableStmt.options) + return &options_; +} +inline const ::pg_query::Node& CreateForeignTableStmt::_internal_options(int index) const { + return options_.Get(index); +} +inline const ::pg_query::Node& CreateForeignTableStmt::options(int index) const { + // @@protoc_insertion_point(field_get:pg_query.CreateForeignTableStmt.options) + return _internal_options(index); +} +inline ::pg_query::Node* CreateForeignTableStmt::_internal_add_options() { + return options_.Add(); +} +inline ::pg_query::Node* CreateForeignTableStmt::add_options() { + // @@protoc_insertion_point(field_add:pg_query.CreateForeignTableStmt.options) + return _internal_add_options(); +} +inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& +CreateForeignTableStmt::options() const { + // @@protoc_insertion_point(field_list:pg_query.CreateForeignTableStmt.options) + return options_; +} + +// ------------------------------------------------------------------- + +// ImportForeignSchemaStmt + +// string server_name = 1 [json_name = "server_name"]; +inline void ImportForeignSchemaStmt::clear_server_name() { + server_name_.ClearToEmpty(); +} +inline const std::string& ImportForeignSchemaStmt::server_name() const { + // @@protoc_insertion_point(field_get:pg_query.ImportForeignSchemaStmt.server_name) + return _internal_server_name(); +} +inline void ImportForeignSchemaStmt::set_server_name(const std::string& value) { + _internal_set_server_name(value); + // @@protoc_insertion_point(field_set:pg_query.ImportForeignSchemaStmt.server_name) +} +inline std::string* ImportForeignSchemaStmt::mutable_server_name() { + // @@protoc_insertion_point(field_mutable:pg_query.ImportForeignSchemaStmt.server_name) + return _internal_mutable_server_name(); +} +inline const std::string& ImportForeignSchemaStmt::_internal_server_name() const { + return server_name_.Get(); +} +inline void ImportForeignSchemaStmt::_internal_set_server_name(const std::string& value) { + + server_name_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArena()); +} +inline void ImportForeignSchemaStmt::set_server_name(std::string&& value) { + + server_name_.Set( + ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::move(value), GetArena()); + // @@protoc_insertion_point(field_set_rvalue:pg_query.ImportForeignSchemaStmt.server_name) +} +inline void ImportForeignSchemaStmt::set_server_name(const char* value) { + GOOGLE_DCHECK(value != nullptr); + + server_name_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string(value), GetArena()); + // @@protoc_insertion_point(field_set_char:pg_query.ImportForeignSchemaStmt.server_name) +} +inline void ImportForeignSchemaStmt::set_server_name(const char* value, + size_t size) { + + server_name_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string( + reinterpret_cast(value), size), GetArena()); + // @@protoc_insertion_point(field_set_pointer:pg_query.ImportForeignSchemaStmt.server_name) +} +inline std::string* ImportForeignSchemaStmt::_internal_mutable_server_name() { + + return server_name_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArena()); +} +inline std::string* ImportForeignSchemaStmt::release_server_name() { + // @@protoc_insertion_point(field_release:pg_query.ImportForeignSchemaStmt.server_name) + return server_name_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); +} +inline void ImportForeignSchemaStmt::set_allocated_server_name(std::string* server_name) { + if (server_name != nullptr) { + + } else { + + } + server_name_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), server_name, + GetArena()); + // @@protoc_insertion_point(field_set_allocated:pg_query.ImportForeignSchemaStmt.server_name) +} + +// string remote_schema = 2 [json_name = "remote_schema"]; +inline void ImportForeignSchemaStmt::clear_remote_schema() { + remote_schema_.ClearToEmpty(); +} +inline const std::string& ImportForeignSchemaStmt::remote_schema() const { + // @@protoc_insertion_point(field_get:pg_query.ImportForeignSchemaStmt.remote_schema) + return _internal_remote_schema(); +} +inline void ImportForeignSchemaStmt::set_remote_schema(const std::string& value) { + _internal_set_remote_schema(value); + // @@protoc_insertion_point(field_set:pg_query.ImportForeignSchemaStmt.remote_schema) +} +inline std::string* ImportForeignSchemaStmt::mutable_remote_schema() { + // @@protoc_insertion_point(field_mutable:pg_query.ImportForeignSchemaStmt.remote_schema) + return _internal_mutable_remote_schema(); +} +inline const std::string& ImportForeignSchemaStmt::_internal_remote_schema() const { + return remote_schema_.Get(); +} +inline void ImportForeignSchemaStmt::_internal_set_remote_schema(const std::string& value) { + + remote_schema_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArena()); +} +inline void ImportForeignSchemaStmt::set_remote_schema(std::string&& value) { + + remote_schema_.Set( + ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::move(value), GetArena()); + // @@protoc_insertion_point(field_set_rvalue:pg_query.ImportForeignSchemaStmt.remote_schema) +} +inline void ImportForeignSchemaStmt::set_remote_schema(const char* value) { + GOOGLE_DCHECK(value != nullptr); + + remote_schema_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string(value), GetArena()); + // @@protoc_insertion_point(field_set_char:pg_query.ImportForeignSchemaStmt.remote_schema) +} +inline void ImportForeignSchemaStmt::set_remote_schema(const char* value, + size_t size) { + + remote_schema_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string( + reinterpret_cast(value), size), GetArena()); + // @@protoc_insertion_point(field_set_pointer:pg_query.ImportForeignSchemaStmt.remote_schema) +} +inline std::string* ImportForeignSchemaStmt::_internal_mutable_remote_schema() { + + return remote_schema_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArena()); +} +inline std::string* ImportForeignSchemaStmt::release_remote_schema() { + // @@protoc_insertion_point(field_release:pg_query.ImportForeignSchemaStmt.remote_schema) + return remote_schema_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); +} +inline void ImportForeignSchemaStmt::set_allocated_remote_schema(std::string* remote_schema) { + if (remote_schema != nullptr) { + + } else { + + } + remote_schema_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), remote_schema, + GetArena()); + // @@protoc_insertion_point(field_set_allocated:pg_query.ImportForeignSchemaStmt.remote_schema) +} + +// string local_schema = 3 [json_name = "local_schema"]; +inline void ImportForeignSchemaStmt::clear_local_schema() { + local_schema_.ClearToEmpty(); +} +inline const std::string& ImportForeignSchemaStmt::local_schema() const { + // @@protoc_insertion_point(field_get:pg_query.ImportForeignSchemaStmt.local_schema) + return _internal_local_schema(); +} +inline void ImportForeignSchemaStmt::set_local_schema(const std::string& value) { + _internal_set_local_schema(value); + // @@protoc_insertion_point(field_set:pg_query.ImportForeignSchemaStmt.local_schema) +} +inline std::string* ImportForeignSchemaStmt::mutable_local_schema() { + // @@protoc_insertion_point(field_mutable:pg_query.ImportForeignSchemaStmt.local_schema) + return _internal_mutable_local_schema(); +} +inline const std::string& ImportForeignSchemaStmt::_internal_local_schema() const { + return local_schema_.Get(); +} +inline void ImportForeignSchemaStmt::_internal_set_local_schema(const std::string& value) { + + local_schema_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArena()); +} +inline void ImportForeignSchemaStmt::set_local_schema(std::string&& value) { + + local_schema_.Set( + ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::move(value), GetArena()); + // @@protoc_insertion_point(field_set_rvalue:pg_query.ImportForeignSchemaStmt.local_schema) +} +inline void ImportForeignSchemaStmt::set_local_schema(const char* value) { + GOOGLE_DCHECK(value != nullptr); + + local_schema_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string(value), GetArena()); + // @@protoc_insertion_point(field_set_char:pg_query.ImportForeignSchemaStmt.local_schema) +} +inline void ImportForeignSchemaStmt::set_local_schema(const char* value, + size_t size) { + + local_schema_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string( + reinterpret_cast(value), size), GetArena()); + // @@protoc_insertion_point(field_set_pointer:pg_query.ImportForeignSchemaStmt.local_schema) +} +inline std::string* ImportForeignSchemaStmt::_internal_mutable_local_schema() { + + return local_schema_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArena()); +} +inline std::string* ImportForeignSchemaStmt::release_local_schema() { + // @@protoc_insertion_point(field_release:pg_query.ImportForeignSchemaStmt.local_schema) + return local_schema_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); +} +inline void ImportForeignSchemaStmt::set_allocated_local_schema(std::string* local_schema) { + if (local_schema != nullptr) { + + } else { + + } + local_schema_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), local_schema, + GetArena()); + // @@protoc_insertion_point(field_set_allocated:pg_query.ImportForeignSchemaStmt.local_schema) +} + +// .pg_query.ImportForeignSchemaType list_type = 4 [json_name = "list_type"]; +inline void ImportForeignSchemaStmt::clear_list_type() { + list_type_ = 0; +} +inline ::pg_query::ImportForeignSchemaType ImportForeignSchemaStmt::_internal_list_type() const { + return static_cast< ::pg_query::ImportForeignSchemaType >(list_type_); +} +inline ::pg_query::ImportForeignSchemaType ImportForeignSchemaStmt::list_type() const { + // @@protoc_insertion_point(field_get:pg_query.ImportForeignSchemaStmt.list_type) + return _internal_list_type(); +} +inline void ImportForeignSchemaStmt::_internal_set_list_type(::pg_query::ImportForeignSchemaType value) { + + list_type_ = value; +} +inline void ImportForeignSchemaStmt::set_list_type(::pg_query::ImportForeignSchemaType value) { + _internal_set_list_type(value); + // @@protoc_insertion_point(field_set:pg_query.ImportForeignSchemaStmt.list_type) +} + +// repeated .pg_query.Node table_list = 5 [json_name = "table_list"]; +inline int ImportForeignSchemaStmt::_internal_table_list_size() const { + return table_list_.size(); +} +inline int ImportForeignSchemaStmt::table_list_size() const { + return _internal_table_list_size(); +} +inline void ImportForeignSchemaStmt::clear_table_list() { + table_list_.Clear(); +} +inline ::pg_query::Node* ImportForeignSchemaStmt::mutable_table_list(int index) { + // @@protoc_insertion_point(field_mutable:pg_query.ImportForeignSchemaStmt.table_list) + return table_list_.Mutable(index); +} +inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* +ImportForeignSchemaStmt::mutable_table_list() { + // @@protoc_insertion_point(field_mutable_list:pg_query.ImportForeignSchemaStmt.table_list) + return &table_list_; +} +inline const ::pg_query::Node& ImportForeignSchemaStmt::_internal_table_list(int index) const { + return table_list_.Get(index); +} +inline const ::pg_query::Node& ImportForeignSchemaStmt::table_list(int index) const { + // @@protoc_insertion_point(field_get:pg_query.ImportForeignSchemaStmt.table_list) + return _internal_table_list(index); +} +inline ::pg_query::Node* ImportForeignSchemaStmt::_internal_add_table_list() { + return table_list_.Add(); +} +inline ::pg_query::Node* ImportForeignSchemaStmt::add_table_list() { + // @@protoc_insertion_point(field_add:pg_query.ImportForeignSchemaStmt.table_list) + return _internal_add_table_list(); +} +inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& +ImportForeignSchemaStmt::table_list() const { + // @@protoc_insertion_point(field_list:pg_query.ImportForeignSchemaStmt.table_list) + return table_list_; +} + +// repeated .pg_query.Node options = 6 [json_name = "options"]; +inline int ImportForeignSchemaStmt::_internal_options_size() const { + return options_.size(); +} +inline int ImportForeignSchemaStmt::options_size() const { + return _internal_options_size(); +} +inline void ImportForeignSchemaStmt::clear_options() { + options_.Clear(); +} +inline ::pg_query::Node* ImportForeignSchemaStmt::mutable_options(int index) { + // @@protoc_insertion_point(field_mutable:pg_query.ImportForeignSchemaStmt.options) + return options_.Mutable(index); +} +inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* +ImportForeignSchemaStmt::mutable_options() { + // @@protoc_insertion_point(field_mutable_list:pg_query.ImportForeignSchemaStmt.options) + return &options_; +} +inline const ::pg_query::Node& ImportForeignSchemaStmt::_internal_options(int index) const { + return options_.Get(index); +} +inline const ::pg_query::Node& ImportForeignSchemaStmt::options(int index) const { + // @@protoc_insertion_point(field_get:pg_query.ImportForeignSchemaStmt.options) + return _internal_options(index); +} +inline ::pg_query::Node* ImportForeignSchemaStmt::_internal_add_options() { + return options_.Add(); +} +inline ::pg_query::Node* ImportForeignSchemaStmt::add_options() { + // @@protoc_insertion_point(field_add:pg_query.ImportForeignSchemaStmt.options) + return _internal_add_options(); +} +inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& +ImportForeignSchemaStmt::options() const { + // @@protoc_insertion_point(field_list:pg_query.ImportForeignSchemaStmt.options) + return options_; +} + +// ------------------------------------------------------------------- + +// CreateExtensionStmt + +// string extname = 1 [json_name = "extname"]; +inline void CreateExtensionStmt::clear_extname() { + extname_.ClearToEmpty(); +} +inline const std::string& CreateExtensionStmt::extname() const { + // @@protoc_insertion_point(field_get:pg_query.CreateExtensionStmt.extname) + return _internal_extname(); +} +inline void CreateExtensionStmt::set_extname(const std::string& value) { + _internal_set_extname(value); + // @@protoc_insertion_point(field_set:pg_query.CreateExtensionStmt.extname) +} +inline std::string* CreateExtensionStmt::mutable_extname() { + // @@protoc_insertion_point(field_mutable:pg_query.CreateExtensionStmt.extname) + return _internal_mutable_extname(); +} +inline const std::string& CreateExtensionStmt::_internal_extname() const { + return extname_.Get(); +} +inline void CreateExtensionStmt::_internal_set_extname(const std::string& value) { + + extname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArena()); +} +inline void CreateExtensionStmt::set_extname(std::string&& value) { + + extname_.Set( + ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::move(value), GetArena()); + // @@protoc_insertion_point(field_set_rvalue:pg_query.CreateExtensionStmt.extname) +} +inline void CreateExtensionStmt::set_extname(const char* value) { + GOOGLE_DCHECK(value != nullptr); + + extname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string(value), GetArena()); + // @@protoc_insertion_point(field_set_char:pg_query.CreateExtensionStmt.extname) +} +inline void CreateExtensionStmt::set_extname(const char* value, + size_t size) { + + extname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string( + reinterpret_cast(value), size), GetArena()); + // @@protoc_insertion_point(field_set_pointer:pg_query.CreateExtensionStmt.extname) +} +inline std::string* CreateExtensionStmt::_internal_mutable_extname() { + + return extname_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArena()); +} +inline std::string* CreateExtensionStmt::release_extname() { + // @@protoc_insertion_point(field_release:pg_query.CreateExtensionStmt.extname) + return extname_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); +} +inline void CreateExtensionStmt::set_allocated_extname(std::string* extname) { + if (extname != nullptr) { + + } else { + + } + extname_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), extname, + GetArena()); + // @@protoc_insertion_point(field_set_allocated:pg_query.CreateExtensionStmt.extname) +} + +// bool if_not_exists = 2 [json_name = "if_not_exists"]; +inline void CreateExtensionStmt::clear_if_not_exists() { + if_not_exists_ = false; +} +inline bool CreateExtensionStmt::_internal_if_not_exists() const { + return if_not_exists_; +} +inline bool CreateExtensionStmt::if_not_exists() const { + // @@protoc_insertion_point(field_get:pg_query.CreateExtensionStmt.if_not_exists) + return _internal_if_not_exists(); +} +inline void CreateExtensionStmt::_internal_set_if_not_exists(bool value) { + + if_not_exists_ = value; +} +inline void CreateExtensionStmt::set_if_not_exists(bool value) { + _internal_set_if_not_exists(value); + // @@protoc_insertion_point(field_set:pg_query.CreateExtensionStmt.if_not_exists) +} + +// repeated .pg_query.Node options = 3 [json_name = "options"]; +inline int CreateExtensionStmt::_internal_options_size() const { + return options_.size(); +} +inline int CreateExtensionStmt::options_size() const { + return _internal_options_size(); +} +inline void CreateExtensionStmt::clear_options() { + options_.Clear(); +} +inline ::pg_query::Node* CreateExtensionStmt::mutable_options(int index) { + // @@protoc_insertion_point(field_mutable:pg_query.CreateExtensionStmt.options) + return options_.Mutable(index); +} +inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* +CreateExtensionStmt::mutable_options() { + // @@protoc_insertion_point(field_mutable_list:pg_query.CreateExtensionStmt.options) + return &options_; +} +inline const ::pg_query::Node& CreateExtensionStmt::_internal_options(int index) const { + return options_.Get(index); +} +inline const ::pg_query::Node& CreateExtensionStmt::options(int index) const { + // @@protoc_insertion_point(field_get:pg_query.CreateExtensionStmt.options) + return _internal_options(index); +} +inline ::pg_query::Node* CreateExtensionStmt::_internal_add_options() { + return options_.Add(); +} +inline ::pg_query::Node* CreateExtensionStmt::add_options() { + // @@protoc_insertion_point(field_add:pg_query.CreateExtensionStmt.options) + return _internal_add_options(); +} +inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& +CreateExtensionStmt::options() const { + // @@protoc_insertion_point(field_list:pg_query.CreateExtensionStmt.options) + return options_; +} + +// ------------------------------------------------------------------- + +// AlterExtensionStmt + +// string extname = 1 [json_name = "extname"]; +inline void AlterExtensionStmt::clear_extname() { + extname_.ClearToEmpty(); +} +inline const std::string& AlterExtensionStmt::extname() const { + // @@protoc_insertion_point(field_get:pg_query.AlterExtensionStmt.extname) + return _internal_extname(); +} +inline void AlterExtensionStmt::set_extname(const std::string& value) { + _internal_set_extname(value); + // @@protoc_insertion_point(field_set:pg_query.AlterExtensionStmt.extname) +} +inline std::string* AlterExtensionStmt::mutable_extname() { + // @@protoc_insertion_point(field_mutable:pg_query.AlterExtensionStmt.extname) + return _internal_mutable_extname(); +} +inline const std::string& AlterExtensionStmt::_internal_extname() const { + return extname_.Get(); +} +inline void AlterExtensionStmt::_internal_set_extname(const std::string& value) { + + extname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArena()); +} +inline void AlterExtensionStmt::set_extname(std::string&& value) { + + extname_.Set( + ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::move(value), GetArena()); + // @@protoc_insertion_point(field_set_rvalue:pg_query.AlterExtensionStmt.extname) +} +inline void AlterExtensionStmt::set_extname(const char* value) { + GOOGLE_DCHECK(value != nullptr); + + extname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string(value), GetArena()); + // @@protoc_insertion_point(field_set_char:pg_query.AlterExtensionStmt.extname) +} +inline void AlterExtensionStmt::set_extname(const char* value, + size_t size) { + + extname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string( + reinterpret_cast(value), size), GetArena()); + // @@protoc_insertion_point(field_set_pointer:pg_query.AlterExtensionStmt.extname) +} +inline std::string* AlterExtensionStmt::_internal_mutable_extname() { + + return extname_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArena()); +} +inline std::string* AlterExtensionStmt::release_extname() { + // @@protoc_insertion_point(field_release:pg_query.AlterExtensionStmt.extname) + return extname_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); +} +inline void AlterExtensionStmt::set_allocated_extname(std::string* extname) { + if (extname != nullptr) { + + } else { + + } + extname_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), extname, + GetArena()); + // @@protoc_insertion_point(field_set_allocated:pg_query.AlterExtensionStmt.extname) +} + +// repeated .pg_query.Node options = 2 [json_name = "options"]; +inline int AlterExtensionStmt::_internal_options_size() const { + return options_.size(); +} +inline int AlterExtensionStmt::options_size() const { + return _internal_options_size(); +} +inline void AlterExtensionStmt::clear_options() { + options_.Clear(); +} +inline ::pg_query::Node* AlterExtensionStmt::mutable_options(int index) { + // @@protoc_insertion_point(field_mutable:pg_query.AlterExtensionStmt.options) + return options_.Mutable(index); +} +inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* +AlterExtensionStmt::mutable_options() { + // @@protoc_insertion_point(field_mutable_list:pg_query.AlterExtensionStmt.options) + return &options_; +} +inline const ::pg_query::Node& AlterExtensionStmt::_internal_options(int index) const { + return options_.Get(index); +} +inline const ::pg_query::Node& AlterExtensionStmt::options(int index) const { + // @@protoc_insertion_point(field_get:pg_query.AlterExtensionStmt.options) + return _internal_options(index); +} +inline ::pg_query::Node* AlterExtensionStmt::_internal_add_options() { + return options_.Add(); +} +inline ::pg_query::Node* AlterExtensionStmt::add_options() { + // @@protoc_insertion_point(field_add:pg_query.AlterExtensionStmt.options) + return _internal_add_options(); +} +inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& +AlterExtensionStmt::options() const { + // @@protoc_insertion_point(field_list:pg_query.AlterExtensionStmt.options) + return options_; +} + +// ------------------------------------------------------------------- + +// AlterExtensionContentsStmt + +// string extname = 1 [json_name = "extname"]; +inline void AlterExtensionContentsStmt::clear_extname() { + extname_.ClearToEmpty(); +} +inline const std::string& AlterExtensionContentsStmt::extname() const { + // @@protoc_insertion_point(field_get:pg_query.AlterExtensionContentsStmt.extname) + return _internal_extname(); +} +inline void AlterExtensionContentsStmt::set_extname(const std::string& value) { + _internal_set_extname(value); + // @@protoc_insertion_point(field_set:pg_query.AlterExtensionContentsStmt.extname) +} +inline std::string* AlterExtensionContentsStmt::mutable_extname() { + // @@protoc_insertion_point(field_mutable:pg_query.AlterExtensionContentsStmt.extname) + return _internal_mutable_extname(); +} +inline const std::string& AlterExtensionContentsStmt::_internal_extname() const { + return extname_.Get(); +} +inline void AlterExtensionContentsStmt::_internal_set_extname(const std::string& value) { + + extname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArena()); +} +inline void AlterExtensionContentsStmt::set_extname(std::string&& value) { + + extname_.Set( + ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::move(value), GetArena()); + // @@protoc_insertion_point(field_set_rvalue:pg_query.AlterExtensionContentsStmt.extname) +} +inline void AlterExtensionContentsStmt::set_extname(const char* value) { + GOOGLE_DCHECK(value != nullptr); + + extname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string(value), GetArena()); + // @@protoc_insertion_point(field_set_char:pg_query.AlterExtensionContentsStmt.extname) +} +inline void AlterExtensionContentsStmt::set_extname(const char* value, + size_t size) { + + extname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string( + reinterpret_cast(value), size), GetArena()); + // @@protoc_insertion_point(field_set_pointer:pg_query.AlterExtensionContentsStmt.extname) +} +inline std::string* AlterExtensionContentsStmt::_internal_mutable_extname() { + + return extname_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArena()); +} +inline std::string* AlterExtensionContentsStmt::release_extname() { + // @@protoc_insertion_point(field_release:pg_query.AlterExtensionContentsStmt.extname) + return extname_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); +} +inline void AlterExtensionContentsStmt::set_allocated_extname(std::string* extname) { + if (extname != nullptr) { + + } else { + + } + extname_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), extname, + GetArena()); + // @@protoc_insertion_point(field_set_allocated:pg_query.AlterExtensionContentsStmt.extname) +} + +// int32 action = 2 [json_name = "action"]; +inline void AlterExtensionContentsStmt::clear_action() { + action_ = 0; +} +inline ::PROTOBUF_NAMESPACE_ID::int32 AlterExtensionContentsStmt::_internal_action() const { + return action_; +} +inline ::PROTOBUF_NAMESPACE_ID::int32 AlterExtensionContentsStmt::action() const { + // @@protoc_insertion_point(field_get:pg_query.AlterExtensionContentsStmt.action) + return _internal_action(); +} +inline void AlterExtensionContentsStmt::_internal_set_action(::PROTOBUF_NAMESPACE_ID::int32 value) { + + action_ = value; +} +inline void AlterExtensionContentsStmt::set_action(::PROTOBUF_NAMESPACE_ID::int32 value) { + _internal_set_action(value); + // @@protoc_insertion_point(field_set:pg_query.AlterExtensionContentsStmt.action) +} + +// .pg_query.ObjectType objtype = 3 [json_name = "objtype"]; +inline void AlterExtensionContentsStmt::clear_objtype() { + objtype_ = 0; +} +inline ::pg_query::ObjectType AlterExtensionContentsStmt::_internal_objtype() const { + return static_cast< ::pg_query::ObjectType >(objtype_); +} +inline ::pg_query::ObjectType AlterExtensionContentsStmt::objtype() const { + // @@protoc_insertion_point(field_get:pg_query.AlterExtensionContentsStmt.objtype) + return _internal_objtype(); +} +inline void AlterExtensionContentsStmt::_internal_set_objtype(::pg_query::ObjectType value) { + + objtype_ = value; +} +inline void AlterExtensionContentsStmt::set_objtype(::pg_query::ObjectType value) { + _internal_set_objtype(value); + // @@protoc_insertion_point(field_set:pg_query.AlterExtensionContentsStmt.objtype) +} + +// .pg_query.Node object = 4 [json_name = "object"]; +inline bool AlterExtensionContentsStmt::_internal_has_object() const { + return this != internal_default_instance() && object_ != nullptr; +} +inline bool AlterExtensionContentsStmt::has_object() const { + return _internal_has_object(); +} +inline void AlterExtensionContentsStmt::clear_object() { + if (GetArena() == nullptr && object_ != nullptr) { + delete object_; + } + object_ = nullptr; +} +inline const ::pg_query::Node& AlterExtensionContentsStmt::_internal_object() const { + const ::pg_query::Node* p = object_; + return p != nullptr ? *p : reinterpret_cast( + ::pg_query::_Node_default_instance_); +} +inline const ::pg_query::Node& AlterExtensionContentsStmt::object() const { + // @@protoc_insertion_point(field_get:pg_query.AlterExtensionContentsStmt.object) + return _internal_object(); +} +inline void AlterExtensionContentsStmt::unsafe_arena_set_allocated_object( + ::pg_query::Node* object) { + if (GetArena() == nullptr) { + delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(object_); + } + object_ = object; + if (object) { + + } else { + + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.AlterExtensionContentsStmt.object) +} +inline ::pg_query::Node* AlterExtensionContentsStmt::release_object() { + + ::pg_query::Node* temp = object_; + object_ = nullptr; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + return temp; +} +inline ::pg_query::Node* AlterExtensionContentsStmt::unsafe_arena_release_object() { + // @@protoc_insertion_point(field_release:pg_query.AlterExtensionContentsStmt.object) + + ::pg_query::Node* temp = object_; + object_ = nullptr; + return temp; +} +inline ::pg_query::Node* AlterExtensionContentsStmt::_internal_mutable_object() { + + if (object_ == nullptr) { + auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); + object_ = p; + } + return object_; +} +inline ::pg_query::Node* AlterExtensionContentsStmt::mutable_object() { + // @@protoc_insertion_point(field_mutable:pg_query.AlterExtensionContentsStmt.object) + return _internal_mutable_object(); +} +inline void AlterExtensionContentsStmt::set_allocated_object(::pg_query::Node* object) { + ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); + if (message_arena == nullptr) { + delete object_; + } + if (object) { + ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = + ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(object); + if (message_arena != submessage_arena) { + object = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( + message_arena, object, submessage_arena); + } + + } else { + + } + object_ = object; + // @@protoc_insertion_point(field_set_allocated:pg_query.AlterExtensionContentsStmt.object) +} + +// ------------------------------------------------------------------- + +// CreateEventTrigStmt + +// string trigname = 1 [json_name = "trigname"]; +inline void CreateEventTrigStmt::clear_trigname() { + trigname_.ClearToEmpty(); +} +inline const std::string& CreateEventTrigStmt::trigname() const { + // @@protoc_insertion_point(field_get:pg_query.CreateEventTrigStmt.trigname) + return _internal_trigname(); +} +inline void CreateEventTrigStmt::set_trigname(const std::string& value) { + _internal_set_trigname(value); + // @@protoc_insertion_point(field_set:pg_query.CreateEventTrigStmt.trigname) +} +inline std::string* CreateEventTrigStmt::mutable_trigname() { + // @@protoc_insertion_point(field_mutable:pg_query.CreateEventTrigStmt.trigname) + return _internal_mutable_trigname(); +} +inline const std::string& CreateEventTrigStmt::_internal_trigname() const { + return trigname_.Get(); +} +inline void CreateEventTrigStmt::_internal_set_trigname(const std::string& value) { + + trigname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArena()); +} +inline void CreateEventTrigStmt::set_trigname(std::string&& value) { + + trigname_.Set( + ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::move(value), GetArena()); + // @@protoc_insertion_point(field_set_rvalue:pg_query.CreateEventTrigStmt.trigname) +} +inline void CreateEventTrigStmt::set_trigname(const char* value) { + GOOGLE_DCHECK(value != nullptr); + + trigname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string(value), GetArena()); + // @@protoc_insertion_point(field_set_char:pg_query.CreateEventTrigStmt.trigname) +} +inline void CreateEventTrigStmt::set_trigname(const char* value, + size_t size) { + + trigname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string( + reinterpret_cast(value), size), GetArena()); + // @@protoc_insertion_point(field_set_pointer:pg_query.CreateEventTrigStmt.trigname) +} +inline std::string* CreateEventTrigStmt::_internal_mutable_trigname() { + + return trigname_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArena()); +} +inline std::string* CreateEventTrigStmt::release_trigname() { + // @@protoc_insertion_point(field_release:pg_query.CreateEventTrigStmt.trigname) + return trigname_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); +} +inline void CreateEventTrigStmt::set_allocated_trigname(std::string* trigname) { + if (trigname != nullptr) { + + } else { + + } + trigname_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), trigname, + GetArena()); + // @@protoc_insertion_point(field_set_allocated:pg_query.CreateEventTrigStmt.trigname) +} + +// string eventname = 2 [json_name = "eventname"]; +inline void CreateEventTrigStmt::clear_eventname() { + eventname_.ClearToEmpty(); +} +inline const std::string& CreateEventTrigStmt::eventname() const { + // @@protoc_insertion_point(field_get:pg_query.CreateEventTrigStmt.eventname) + return _internal_eventname(); +} +inline void CreateEventTrigStmt::set_eventname(const std::string& value) { + _internal_set_eventname(value); + // @@protoc_insertion_point(field_set:pg_query.CreateEventTrigStmt.eventname) +} +inline std::string* CreateEventTrigStmt::mutable_eventname() { + // @@protoc_insertion_point(field_mutable:pg_query.CreateEventTrigStmt.eventname) + return _internal_mutable_eventname(); +} +inline const std::string& CreateEventTrigStmt::_internal_eventname() const { + return eventname_.Get(); +} +inline void CreateEventTrigStmt::_internal_set_eventname(const std::string& value) { + + eventname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArena()); +} +inline void CreateEventTrigStmt::set_eventname(std::string&& value) { + + eventname_.Set( + ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::move(value), GetArena()); + // @@protoc_insertion_point(field_set_rvalue:pg_query.CreateEventTrigStmt.eventname) +} +inline void CreateEventTrigStmt::set_eventname(const char* value) { + GOOGLE_DCHECK(value != nullptr); + + eventname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string(value), GetArena()); + // @@protoc_insertion_point(field_set_char:pg_query.CreateEventTrigStmt.eventname) +} +inline void CreateEventTrigStmt::set_eventname(const char* value, + size_t size) { + + eventname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string( + reinterpret_cast(value), size), GetArena()); + // @@protoc_insertion_point(field_set_pointer:pg_query.CreateEventTrigStmt.eventname) +} +inline std::string* CreateEventTrigStmt::_internal_mutable_eventname() { + + return eventname_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArena()); +} +inline std::string* CreateEventTrigStmt::release_eventname() { + // @@protoc_insertion_point(field_release:pg_query.CreateEventTrigStmt.eventname) + return eventname_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); +} +inline void CreateEventTrigStmt::set_allocated_eventname(std::string* eventname) { + if (eventname != nullptr) { + + } else { + + } + eventname_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), eventname, + GetArena()); + // @@protoc_insertion_point(field_set_allocated:pg_query.CreateEventTrigStmt.eventname) +} + +// repeated .pg_query.Node whenclause = 3 [json_name = "whenclause"]; +inline int CreateEventTrigStmt::_internal_whenclause_size() const { + return whenclause_.size(); +} +inline int CreateEventTrigStmt::whenclause_size() const { + return _internal_whenclause_size(); +} +inline void CreateEventTrigStmt::clear_whenclause() { + whenclause_.Clear(); +} +inline ::pg_query::Node* CreateEventTrigStmt::mutable_whenclause(int index) { + // @@protoc_insertion_point(field_mutable:pg_query.CreateEventTrigStmt.whenclause) + return whenclause_.Mutable(index); +} +inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* +CreateEventTrigStmt::mutable_whenclause() { + // @@protoc_insertion_point(field_mutable_list:pg_query.CreateEventTrigStmt.whenclause) + return &whenclause_; +} +inline const ::pg_query::Node& CreateEventTrigStmt::_internal_whenclause(int index) const { + return whenclause_.Get(index); +} +inline const ::pg_query::Node& CreateEventTrigStmt::whenclause(int index) const { + // @@protoc_insertion_point(field_get:pg_query.CreateEventTrigStmt.whenclause) + return _internal_whenclause(index); +} +inline ::pg_query::Node* CreateEventTrigStmt::_internal_add_whenclause() { + return whenclause_.Add(); +} +inline ::pg_query::Node* CreateEventTrigStmt::add_whenclause() { + // @@protoc_insertion_point(field_add:pg_query.CreateEventTrigStmt.whenclause) + return _internal_add_whenclause(); +} +inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& +CreateEventTrigStmt::whenclause() const { + // @@protoc_insertion_point(field_list:pg_query.CreateEventTrigStmt.whenclause) + return whenclause_; +} + +// repeated .pg_query.Node funcname = 4 [json_name = "funcname"]; +inline int CreateEventTrigStmt::_internal_funcname_size() const { + return funcname_.size(); +} +inline int CreateEventTrigStmt::funcname_size() const { + return _internal_funcname_size(); +} +inline void CreateEventTrigStmt::clear_funcname() { + funcname_.Clear(); +} +inline ::pg_query::Node* CreateEventTrigStmt::mutable_funcname(int index) { + // @@protoc_insertion_point(field_mutable:pg_query.CreateEventTrigStmt.funcname) + return funcname_.Mutable(index); +} +inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* +CreateEventTrigStmt::mutable_funcname() { + // @@protoc_insertion_point(field_mutable_list:pg_query.CreateEventTrigStmt.funcname) + return &funcname_; +} +inline const ::pg_query::Node& CreateEventTrigStmt::_internal_funcname(int index) const { + return funcname_.Get(index); +} +inline const ::pg_query::Node& CreateEventTrigStmt::funcname(int index) const { + // @@protoc_insertion_point(field_get:pg_query.CreateEventTrigStmt.funcname) + return _internal_funcname(index); +} +inline ::pg_query::Node* CreateEventTrigStmt::_internal_add_funcname() { + return funcname_.Add(); +} +inline ::pg_query::Node* CreateEventTrigStmt::add_funcname() { + // @@protoc_insertion_point(field_add:pg_query.CreateEventTrigStmt.funcname) + return _internal_add_funcname(); +} +inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& +CreateEventTrigStmt::funcname() const { + // @@protoc_insertion_point(field_list:pg_query.CreateEventTrigStmt.funcname) + return funcname_; +} + +// ------------------------------------------------------------------- + +// AlterEventTrigStmt + +// string trigname = 1 [json_name = "trigname"]; +inline void AlterEventTrigStmt::clear_trigname() { + trigname_.ClearToEmpty(); +} +inline const std::string& AlterEventTrigStmt::trigname() const { + // @@protoc_insertion_point(field_get:pg_query.AlterEventTrigStmt.trigname) + return _internal_trigname(); +} +inline void AlterEventTrigStmt::set_trigname(const std::string& value) { + _internal_set_trigname(value); + // @@protoc_insertion_point(field_set:pg_query.AlterEventTrigStmt.trigname) +} +inline std::string* AlterEventTrigStmt::mutable_trigname() { + // @@protoc_insertion_point(field_mutable:pg_query.AlterEventTrigStmt.trigname) + return _internal_mutable_trigname(); +} +inline const std::string& AlterEventTrigStmt::_internal_trigname() const { + return trigname_.Get(); +} +inline void AlterEventTrigStmt::_internal_set_trigname(const std::string& value) { + + trigname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArena()); +} +inline void AlterEventTrigStmt::set_trigname(std::string&& value) { + + trigname_.Set( + ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::move(value), GetArena()); + // @@protoc_insertion_point(field_set_rvalue:pg_query.AlterEventTrigStmt.trigname) +} +inline void AlterEventTrigStmt::set_trigname(const char* value) { + GOOGLE_DCHECK(value != nullptr); + + trigname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string(value), GetArena()); + // @@protoc_insertion_point(field_set_char:pg_query.AlterEventTrigStmt.trigname) +} +inline void AlterEventTrigStmt::set_trigname(const char* value, + size_t size) { + + trigname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string( + reinterpret_cast(value), size), GetArena()); + // @@protoc_insertion_point(field_set_pointer:pg_query.AlterEventTrigStmt.trigname) +} +inline std::string* AlterEventTrigStmt::_internal_mutable_trigname() { + + return trigname_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArena()); +} +inline std::string* AlterEventTrigStmt::release_trigname() { + // @@protoc_insertion_point(field_release:pg_query.AlterEventTrigStmt.trigname) + return trigname_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); +} +inline void AlterEventTrigStmt::set_allocated_trigname(std::string* trigname) { + if (trigname != nullptr) { + + } else { + + } + trigname_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), trigname, + GetArena()); + // @@protoc_insertion_point(field_set_allocated:pg_query.AlterEventTrigStmt.trigname) +} + +// string tgenabled = 2 [json_name = "tgenabled"]; +inline void AlterEventTrigStmt::clear_tgenabled() { + tgenabled_.ClearToEmpty(); +} +inline const std::string& AlterEventTrigStmt::tgenabled() const { + // @@protoc_insertion_point(field_get:pg_query.AlterEventTrigStmt.tgenabled) + return _internal_tgenabled(); +} +inline void AlterEventTrigStmt::set_tgenabled(const std::string& value) { + _internal_set_tgenabled(value); + // @@protoc_insertion_point(field_set:pg_query.AlterEventTrigStmt.tgenabled) +} +inline std::string* AlterEventTrigStmt::mutable_tgenabled() { + // @@protoc_insertion_point(field_mutable:pg_query.AlterEventTrigStmt.tgenabled) + return _internal_mutable_tgenabled(); +} +inline const std::string& AlterEventTrigStmt::_internal_tgenabled() const { + return tgenabled_.Get(); +} +inline void AlterEventTrigStmt::_internal_set_tgenabled(const std::string& value) { + + tgenabled_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArena()); +} +inline void AlterEventTrigStmt::set_tgenabled(std::string&& value) { + + tgenabled_.Set( + ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::move(value), GetArena()); + // @@protoc_insertion_point(field_set_rvalue:pg_query.AlterEventTrigStmt.tgenabled) +} +inline void AlterEventTrigStmt::set_tgenabled(const char* value) { + GOOGLE_DCHECK(value != nullptr); + + tgenabled_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string(value), GetArena()); + // @@protoc_insertion_point(field_set_char:pg_query.AlterEventTrigStmt.tgenabled) +} +inline void AlterEventTrigStmt::set_tgenabled(const char* value, + size_t size) { + + tgenabled_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string( + reinterpret_cast(value), size), GetArena()); + // @@protoc_insertion_point(field_set_pointer:pg_query.AlterEventTrigStmt.tgenabled) +} +inline std::string* AlterEventTrigStmt::_internal_mutable_tgenabled() { + + return tgenabled_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArena()); +} +inline std::string* AlterEventTrigStmt::release_tgenabled() { + // @@protoc_insertion_point(field_release:pg_query.AlterEventTrigStmt.tgenabled) + return tgenabled_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); +} +inline void AlterEventTrigStmt::set_allocated_tgenabled(std::string* tgenabled) { + if (tgenabled != nullptr) { + + } else { + + } + tgenabled_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), tgenabled, + GetArena()); + // @@protoc_insertion_point(field_set_allocated:pg_query.AlterEventTrigStmt.tgenabled) +} + +// ------------------------------------------------------------------- + +// RefreshMatViewStmt + +// bool concurrent = 1 [json_name = "concurrent"]; +inline void RefreshMatViewStmt::clear_concurrent() { + concurrent_ = false; +} +inline bool RefreshMatViewStmt::_internal_concurrent() const { + return concurrent_; +} +inline bool RefreshMatViewStmt::concurrent() const { + // @@protoc_insertion_point(field_get:pg_query.RefreshMatViewStmt.concurrent) + return _internal_concurrent(); +} +inline void RefreshMatViewStmt::_internal_set_concurrent(bool value) { + + concurrent_ = value; +} +inline void RefreshMatViewStmt::set_concurrent(bool value) { + _internal_set_concurrent(value); + // @@protoc_insertion_point(field_set:pg_query.RefreshMatViewStmt.concurrent) +} + +// bool skip_data = 2 [json_name = "skipData"]; +inline void RefreshMatViewStmt::clear_skip_data() { + skip_data_ = false; +} +inline bool RefreshMatViewStmt::_internal_skip_data() const { + return skip_data_; +} +inline bool RefreshMatViewStmt::skip_data() const { + // @@protoc_insertion_point(field_get:pg_query.RefreshMatViewStmt.skip_data) + return _internal_skip_data(); +} +inline void RefreshMatViewStmt::_internal_set_skip_data(bool value) { + + skip_data_ = value; +} +inline void RefreshMatViewStmt::set_skip_data(bool value) { + _internal_set_skip_data(value); + // @@protoc_insertion_point(field_set:pg_query.RefreshMatViewStmt.skip_data) +} + +// .pg_query.RangeVar relation = 3 [json_name = "relation"]; +inline bool RefreshMatViewStmt::_internal_has_relation() const { + return this != internal_default_instance() && relation_ != nullptr; +} +inline bool RefreshMatViewStmt::has_relation() const { + return _internal_has_relation(); +} +inline void RefreshMatViewStmt::clear_relation() { + if (GetArena() == nullptr && relation_ != nullptr) { + delete relation_; + } + relation_ = nullptr; +} +inline const ::pg_query::RangeVar& RefreshMatViewStmt::_internal_relation() const { + const ::pg_query::RangeVar* p = relation_; + return p != nullptr ? *p : reinterpret_cast( + ::pg_query::_RangeVar_default_instance_); +} +inline const ::pg_query::RangeVar& RefreshMatViewStmt::relation() const { + // @@protoc_insertion_point(field_get:pg_query.RefreshMatViewStmt.relation) + return _internal_relation(); +} +inline void RefreshMatViewStmt::unsafe_arena_set_allocated_relation( + ::pg_query::RangeVar* relation) { + if (GetArena() == nullptr) { + delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(relation_); + } + relation_ = relation; + if (relation) { + + } else { + + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.RefreshMatViewStmt.relation) +} +inline ::pg_query::RangeVar* RefreshMatViewStmt::release_relation() { + + ::pg_query::RangeVar* temp = relation_; + relation_ = nullptr; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + return temp; +} +inline ::pg_query::RangeVar* RefreshMatViewStmt::unsafe_arena_release_relation() { + // @@protoc_insertion_point(field_release:pg_query.RefreshMatViewStmt.relation) + + ::pg_query::RangeVar* temp = relation_; + relation_ = nullptr; + return temp; +} +inline ::pg_query::RangeVar* RefreshMatViewStmt::_internal_mutable_relation() { + + if (relation_ == nullptr) { + auto* p = CreateMaybeMessage<::pg_query::RangeVar>(GetArena()); + relation_ = p; + } + return relation_; +} +inline ::pg_query::RangeVar* RefreshMatViewStmt::mutable_relation() { + // @@protoc_insertion_point(field_mutable:pg_query.RefreshMatViewStmt.relation) + return _internal_mutable_relation(); +} +inline void RefreshMatViewStmt::set_allocated_relation(::pg_query::RangeVar* relation) { + ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); + if (message_arena == nullptr) { + delete relation_; + } + if (relation) { + ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = + ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(relation); + if (message_arena != submessage_arena) { + relation = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( + message_arena, relation, submessage_arena); + } + + } else { + + } + relation_ = relation; + // @@protoc_insertion_point(field_set_allocated:pg_query.RefreshMatViewStmt.relation) +} + +// ------------------------------------------------------------------- + +// ReplicaIdentityStmt + +// string identity_type = 1 [json_name = "identity_type"]; +inline void ReplicaIdentityStmt::clear_identity_type() { + identity_type_.ClearToEmpty(); +} +inline const std::string& ReplicaIdentityStmt::identity_type() const { + // @@protoc_insertion_point(field_get:pg_query.ReplicaIdentityStmt.identity_type) + return _internal_identity_type(); +} +inline void ReplicaIdentityStmt::set_identity_type(const std::string& value) { + _internal_set_identity_type(value); + // @@protoc_insertion_point(field_set:pg_query.ReplicaIdentityStmt.identity_type) +} +inline std::string* ReplicaIdentityStmt::mutable_identity_type() { + // @@protoc_insertion_point(field_mutable:pg_query.ReplicaIdentityStmt.identity_type) + return _internal_mutable_identity_type(); +} +inline const std::string& ReplicaIdentityStmt::_internal_identity_type() const { + return identity_type_.Get(); +} +inline void ReplicaIdentityStmt::_internal_set_identity_type(const std::string& value) { + + identity_type_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArena()); +} +inline void ReplicaIdentityStmt::set_identity_type(std::string&& value) { + + identity_type_.Set( + ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::move(value), GetArena()); + // @@protoc_insertion_point(field_set_rvalue:pg_query.ReplicaIdentityStmt.identity_type) +} +inline void ReplicaIdentityStmt::set_identity_type(const char* value) { + GOOGLE_DCHECK(value != nullptr); + + identity_type_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string(value), GetArena()); + // @@protoc_insertion_point(field_set_char:pg_query.ReplicaIdentityStmt.identity_type) +} +inline void ReplicaIdentityStmt::set_identity_type(const char* value, + size_t size) { + + identity_type_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string( + reinterpret_cast(value), size), GetArena()); + // @@protoc_insertion_point(field_set_pointer:pg_query.ReplicaIdentityStmt.identity_type) +} +inline std::string* ReplicaIdentityStmt::_internal_mutable_identity_type() { + + return identity_type_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArena()); +} +inline std::string* ReplicaIdentityStmt::release_identity_type() { + // @@protoc_insertion_point(field_release:pg_query.ReplicaIdentityStmt.identity_type) + return identity_type_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); +} +inline void ReplicaIdentityStmt::set_allocated_identity_type(std::string* identity_type) { + if (identity_type != nullptr) { + + } else { + + } + identity_type_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), identity_type, + GetArena()); + // @@protoc_insertion_point(field_set_allocated:pg_query.ReplicaIdentityStmt.identity_type) +} + +// string name = 2 [json_name = "name"]; +inline void ReplicaIdentityStmt::clear_name() { + name_.ClearToEmpty(); +} +inline const std::string& ReplicaIdentityStmt::name() const { + // @@protoc_insertion_point(field_get:pg_query.ReplicaIdentityStmt.name) + return _internal_name(); +} +inline void ReplicaIdentityStmt::set_name(const std::string& value) { + _internal_set_name(value); + // @@protoc_insertion_point(field_set:pg_query.ReplicaIdentityStmt.name) +} +inline std::string* ReplicaIdentityStmt::mutable_name() { + // @@protoc_insertion_point(field_mutable:pg_query.ReplicaIdentityStmt.name) + return _internal_mutable_name(); +} +inline const std::string& ReplicaIdentityStmt::_internal_name() const { + return name_.Get(); +} +inline void ReplicaIdentityStmt::_internal_set_name(const std::string& value) { + + name_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArena()); +} +inline void ReplicaIdentityStmt::set_name(std::string&& value) { + + name_.Set( + ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::move(value), GetArena()); + // @@protoc_insertion_point(field_set_rvalue:pg_query.ReplicaIdentityStmt.name) +} +inline void ReplicaIdentityStmt::set_name(const char* value) { + GOOGLE_DCHECK(value != nullptr); + + name_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string(value), GetArena()); + // @@protoc_insertion_point(field_set_char:pg_query.ReplicaIdentityStmt.name) +} +inline void ReplicaIdentityStmt::set_name(const char* value, + size_t size) { + + name_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string( + reinterpret_cast(value), size), GetArena()); + // @@protoc_insertion_point(field_set_pointer:pg_query.ReplicaIdentityStmt.name) +} +inline std::string* ReplicaIdentityStmt::_internal_mutable_name() { + + return name_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArena()); +} +inline std::string* ReplicaIdentityStmt::release_name() { + // @@protoc_insertion_point(field_release:pg_query.ReplicaIdentityStmt.name) + return name_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); +} +inline void ReplicaIdentityStmt::set_allocated_name(std::string* name) { + if (name != nullptr) { + + } else { + + } + name_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), name, + GetArena()); + // @@protoc_insertion_point(field_set_allocated:pg_query.ReplicaIdentityStmt.name) +} + +// ------------------------------------------------------------------- + +// AlterSystemStmt + +// .pg_query.VariableSetStmt setstmt = 1 [json_name = "setstmt"]; +inline bool AlterSystemStmt::_internal_has_setstmt() const { + return this != internal_default_instance() && setstmt_ != nullptr; +} +inline bool AlterSystemStmt::has_setstmt() const { + return _internal_has_setstmt(); +} +inline void AlterSystemStmt::clear_setstmt() { + if (GetArena() == nullptr && setstmt_ != nullptr) { + delete setstmt_; + } + setstmt_ = nullptr; +} +inline const ::pg_query::VariableSetStmt& AlterSystemStmt::_internal_setstmt() const { + const ::pg_query::VariableSetStmt* p = setstmt_; + return p != nullptr ? *p : reinterpret_cast( + ::pg_query::_VariableSetStmt_default_instance_); +} +inline const ::pg_query::VariableSetStmt& AlterSystemStmt::setstmt() const { + // @@protoc_insertion_point(field_get:pg_query.AlterSystemStmt.setstmt) + return _internal_setstmt(); +} +inline void AlterSystemStmt::unsafe_arena_set_allocated_setstmt( + ::pg_query::VariableSetStmt* setstmt) { + if (GetArena() == nullptr) { + delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(setstmt_); + } + setstmt_ = setstmt; + if (setstmt) { + + } else { + + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.AlterSystemStmt.setstmt) +} +inline ::pg_query::VariableSetStmt* AlterSystemStmt::release_setstmt() { + + ::pg_query::VariableSetStmt* temp = setstmt_; + setstmt_ = nullptr; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + return temp; +} +inline ::pg_query::VariableSetStmt* AlterSystemStmt::unsafe_arena_release_setstmt() { + // @@protoc_insertion_point(field_release:pg_query.AlterSystemStmt.setstmt) + + ::pg_query::VariableSetStmt* temp = setstmt_; + setstmt_ = nullptr; + return temp; +} +inline ::pg_query::VariableSetStmt* AlterSystemStmt::_internal_mutable_setstmt() { + + if (setstmt_ == nullptr) { + auto* p = CreateMaybeMessage<::pg_query::VariableSetStmt>(GetArena()); + setstmt_ = p; + } + return setstmt_; +} +inline ::pg_query::VariableSetStmt* AlterSystemStmt::mutable_setstmt() { + // @@protoc_insertion_point(field_mutable:pg_query.AlterSystemStmt.setstmt) + return _internal_mutable_setstmt(); +} +inline void AlterSystemStmt::set_allocated_setstmt(::pg_query::VariableSetStmt* setstmt) { + ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); + if (message_arena == nullptr) { + delete setstmt_; + } + if (setstmt) { + ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = + ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(setstmt); + if (message_arena != submessage_arena) { + setstmt = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( + message_arena, setstmt, submessage_arena); + } + + } else { + + } + setstmt_ = setstmt; + // @@protoc_insertion_point(field_set_allocated:pg_query.AlterSystemStmt.setstmt) +} + +// ------------------------------------------------------------------- + +// CreatePolicyStmt + +// string policy_name = 1 [json_name = "policy_name"]; +inline void CreatePolicyStmt::clear_policy_name() { + policy_name_.ClearToEmpty(); +} +inline const std::string& CreatePolicyStmt::policy_name() const { + // @@protoc_insertion_point(field_get:pg_query.CreatePolicyStmt.policy_name) + return _internal_policy_name(); +} +inline void CreatePolicyStmt::set_policy_name(const std::string& value) { + _internal_set_policy_name(value); + // @@protoc_insertion_point(field_set:pg_query.CreatePolicyStmt.policy_name) +} +inline std::string* CreatePolicyStmt::mutable_policy_name() { + // @@protoc_insertion_point(field_mutable:pg_query.CreatePolicyStmt.policy_name) + return _internal_mutable_policy_name(); +} +inline const std::string& CreatePolicyStmt::_internal_policy_name() const { + return policy_name_.Get(); +} +inline void CreatePolicyStmt::_internal_set_policy_name(const std::string& value) { + + policy_name_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArena()); +} +inline void CreatePolicyStmt::set_policy_name(std::string&& value) { + + policy_name_.Set( + ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::move(value), GetArena()); + // @@protoc_insertion_point(field_set_rvalue:pg_query.CreatePolicyStmt.policy_name) +} +inline void CreatePolicyStmt::set_policy_name(const char* value) { + GOOGLE_DCHECK(value != nullptr); + + policy_name_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string(value), GetArena()); + // @@protoc_insertion_point(field_set_char:pg_query.CreatePolicyStmt.policy_name) +} +inline void CreatePolicyStmt::set_policy_name(const char* value, + size_t size) { + + policy_name_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string( + reinterpret_cast(value), size), GetArena()); + // @@protoc_insertion_point(field_set_pointer:pg_query.CreatePolicyStmt.policy_name) +} +inline std::string* CreatePolicyStmt::_internal_mutable_policy_name() { + + return policy_name_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArena()); +} +inline std::string* CreatePolicyStmt::release_policy_name() { + // @@protoc_insertion_point(field_release:pg_query.CreatePolicyStmt.policy_name) + return policy_name_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); +} +inline void CreatePolicyStmt::set_allocated_policy_name(std::string* policy_name) { + if (policy_name != nullptr) { + + } else { + + } + policy_name_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), policy_name, + GetArena()); + // @@protoc_insertion_point(field_set_allocated:pg_query.CreatePolicyStmt.policy_name) +} + +// .pg_query.RangeVar table = 2 [json_name = "table"]; +inline bool CreatePolicyStmt::_internal_has_table() const { + return this != internal_default_instance() && table_ != nullptr; +} +inline bool CreatePolicyStmt::has_table() const { + return _internal_has_table(); +} +inline void CreatePolicyStmt::clear_table() { + if (GetArena() == nullptr && table_ != nullptr) { + delete table_; + } + table_ = nullptr; +} +inline const ::pg_query::RangeVar& CreatePolicyStmt::_internal_table() const { + const ::pg_query::RangeVar* p = table_; + return p != nullptr ? *p : reinterpret_cast( + ::pg_query::_RangeVar_default_instance_); +} +inline const ::pg_query::RangeVar& CreatePolicyStmt::table() const { + // @@protoc_insertion_point(field_get:pg_query.CreatePolicyStmt.table) + return _internal_table(); +} +inline void CreatePolicyStmt::unsafe_arena_set_allocated_table( + ::pg_query::RangeVar* table) { + if (GetArena() == nullptr) { + delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(table_); + } + table_ = table; + if (table) { + + } else { + + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.CreatePolicyStmt.table) +} +inline ::pg_query::RangeVar* CreatePolicyStmt::release_table() { + + ::pg_query::RangeVar* temp = table_; + table_ = nullptr; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + return temp; +} +inline ::pg_query::RangeVar* CreatePolicyStmt::unsafe_arena_release_table() { + // @@protoc_insertion_point(field_release:pg_query.CreatePolicyStmt.table) + + ::pg_query::RangeVar* temp = table_; + table_ = nullptr; + return temp; +} +inline ::pg_query::RangeVar* CreatePolicyStmt::_internal_mutable_table() { + + if (table_ == nullptr) { + auto* p = CreateMaybeMessage<::pg_query::RangeVar>(GetArena()); + table_ = p; + } + return table_; +} +inline ::pg_query::RangeVar* CreatePolicyStmt::mutable_table() { + // @@protoc_insertion_point(field_mutable:pg_query.CreatePolicyStmt.table) + return _internal_mutable_table(); +} +inline void CreatePolicyStmt::set_allocated_table(::pg_query::RangeVar* table) { + ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); + if (message_arena == nullptr) { + delete table_; + } + if (table) { + ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = + ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(table); + if (message_arena != submessage_arena) { + table = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( + message_arena, table, submessage_arena); + } + + } else { + + } + table_ = table; + // @@protoc_insertion_point(field_set_allocated:pg_query.CreatePolicyStmt.table) +} + +// string cmd_name = 3 [json_name = "cmd_name"]; +inline void CreatePolicyStmt::clear_cmd_name() { + cmd_name_.ClearToEmpty(); +} +inline const std::string& CreatePolicyStmt::cmd_name() const { + // @@protoc_insertion_point(field_get:pg_query.CreatePolicyStmt.cmd_name) + return _internal_cmd_name(); +} +inline void CreatePolicyStmt::set_cmd_name(const std::string& value) { + _internal_set_cmd_name(value); + // @@protoc_insertion_point(field_set:pg_query.CreatePolicyStmt.cmd_name) +} +inline std::string* CreatePolicyStmt::mutable_cmd_name() { + // @@protoc_insertion_point(field_mutable:pg_query.CreatePolicyStmt.cmd_name) + return _internal_mutable_cmd_name(); +} +inline const std::string& CreatePolicyStmt::_internal_cmd_name() const { + return cmd_name_.Get(); +} +inline void CreatePolicyStmt::_internal_set_cmd_name(const std::string& value) { + + cmd_name_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArena()); +} +inline void CreatePolicyStmt::set_cmd_name(std::string&& value) { + + cmd_name_.Set( + ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::move(value), GetArena()); + // @@protoc_insertion_point(field_set_rvalue:pg_query.CreatePolicyStmt.cmd_name) +} +inline void CreatePolicyStmt::set_cmd_name(const char* value) { + GOOGLE_DCHECK(value != nullptr); + + cmd_name_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string(value), GetArena()); + // @@protoc_insertion_point(field_set_char:pg_query.CreatePolicyStmt.cmd_name) +} +inline void CreatePolicyStmt::set_cmd_name(const char* value, + size_t size) { + + cmd_name_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string( + reinterpret_cast(value), size), GetArena()); + // @@protoc_insertion_point(field_set_pointer:pg_query.CreatePolicyStmt.cmd_name) +} +inline std::string* CreatePolicyStmt::_internal_mutable_cmd_name() { + + return cmd_name_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArena()); +} +inline std::string* CreatePolicyStmt::release_cmd_name() { + // @@protoc_insertion_point(field_release:pg_query.CreatePolicyStmt.cmd_name) + return cmd_name_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); +} +inline void CreatePolicyStmt::set_allocated_cmd_name(std::string* cmd_name) { + if (cmd_name != nullptr) { + + } else { + + } + cmd_name_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), cmd_name, + GetArena()); + // @@protoc_insertion_point(field_set_allocated:pg_query.CreatePolicyStmt.cmd_name) +} + +// bool permissive = 4 [json_name = "permissive"]; +inline void CreatePolicyStmt::clear_permissive() { + permissive_ = false; +} +inline bool CreatePolicyStmt::_internal_permissive() const { + return permissive_; +} +inline bool CreatePolicyStmt::permissive() const { + // @@protoc_insertion_point(field_get:pg_query.CreatePolicyStmt.permissive) + return _internal_permissive(); +} +inline void CreatePolicyStmt::_internal_set_permissive(bool value) { + + permissive_ = value; +} +inline void CreatePolicyStmt::set_permissive(bool value) { + _internal_set_permissive(value); + // @@protoc_insertion_point(field_set:pg_query.CreatePolicyStmt.permissive) +} + +// repeated .pg_query.Node roles = 5 [json_name = "roles"]; +inline int CreatePolicyStmt::_internal_roles_size() const { + return roles_.size(); +} +inline int CreatePolicyStmt::roles_size() const { + return _internal_roles_size(); +} +inline void CreatePolicyStmt::clear_roles() { + roles_.Clear(); +} +inline ::pg_query::Node* CreatePolicyStmt::mutable_roles(int index) { + // @@protoc_insertion_point(field_mutable:pg_query.CreatePolicyStmt.roles) + return roles_.Mutable(index); +} +inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* +CreatePolicyStmt::mutable_roles() { + // @@protoc_insertion_point(field_mutable_list:pg_query.CreatePolicyStmt.roles) + return &roles_; +} +inline const ::pg_query::Node& CreatePolicyStmt::_internal_roles(int index) const { + return roles_.Get(index); +} +inline const ::pg_query::Node& CreatePolicyStmt::roles(int index) const { + // @@protoc_insertion_point(field_get:pg_query.CreatePolicyStmt.roles) + return _internal_roles(index); +} +inline ::pg_query::Node* CreatePolicyStmt::_internal_add_roles() { + return roles_.Add(); +} +inline ::pg_query::Node* CreatePolicyStmt::add_roles() { + // @@protoc_insertion_point(field_add:pg_query.CreatePolicyStmt.roles) + return _internal_add_roles(); +} +inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& +CreatePolicyStmt::roles() const { + // @@protoc_insertion_point(field_list:pg_query.CreatePolicyStmt.roles) + return roles_; +} + +// .pg_query.Node qual = 6 [json_name = "qual"]; +inline bool CreatePolicyStmt::_internal_has_qual() const { + return this != internal_default_instance() && qual_ != nullptr; +} +inline bool CreatePolicyStmt::has_qual() const { + return _internal_has_qual(); +} +inline void CreatePolicyStmt::clear_qual() { + if (GetArena() == nullptr && qual_ != nullptr) { + delete qual_; + } + qual_ = nullptr; +} +inline const ::pg_query::Node& CreatePolicyStmt::_internal_qual() const { + const ::pg_query::Node* p = qual_; + return p != nullptr ? *p : reinterpret_cast( + ::pg_query::_Node_default_instance_); +} +inline const ::pg_query::Node& CreatePolicyStmt::qual() const { + // @@protoc_insertion_point(field_get:pg_query.CreatePolicyStmt.qual) + return _internal_qual(); +} +inline void CreatePolicyStmt::unsafe_arena_set_allocated_qual( + ::pg_query::Node* qual) { + if (GetArena() == nullptr) { + delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(qual_); + } + qual_ = qual; + if (qual) { + + } else { + + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.CreatePolicyStmt.qual) +} +inline ::pg_query::Node* CreatePolicyStmt::release_qual() { + + ::pg_query::Node* temp = qual_; + qual_ = nullptr; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + return temp; +} +inline ::pg_query::Node* CreatePolicyStmt::unsafe_arena_release_qual() { + // @@protoc_insertion_point(field_release:pg_query.CreatePolicyStmt.qual) + + ::pg_query::Node* temp = qual_; + qual_ = nullptr; + return temp; +} +inline ::pg_query::Node* CreatePolicyStmt::_internal_mutable_qual() { + + if (qual_ == nullptr) { + auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); + qual_ = p; + } + return qual_; +} +inline ::pg_query::Node* CreatePolicyStmt::mutable_qual() { + // @@protoc_insertion_point(field_mutable:pg_query.CreatePolicyStmt.qual) + return _internal_mutable_qual(); +} +inline void CreatePolicyStmt::set_allocated_qual(::pg_query::Node* qual) { + ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); + if (message_arena == nullptr) { + delete qual_; + } + if (qual) { + ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = + ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(qual); + if (message_arena != submessage_arena) { + qual = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( + message_arena, qual, submessage_arena); + } + + } else { + + } + qual_ = qual; + // @@protoc_insertion_point(field_set_allocated:pg_query.CreatePolicyStmt.qual) +} + +// .pg_query.Node with_check = 7 [json_name = "with_check"]; +inline bool CreatePolicyStmt::_internal_has_with_check() const { + return this != internal_default_instance() && with_check_ != nullptr; +} +inline bool CreatePolicyStmt::has_with_check() const { + return _internal_has_with_check(); +} +inline void CreatePolicyStmt::clear_with_check() { + if (GetArena() == nullptr && with_check_ != nullptr) { + delete with_check_; + } + with_check_ = nullptr; +} +inline const ::pg_query::Node& CreatePolicyStmt::_internal_with_check() const { + const ::pg_query::Node* p = with_check_; + return p != nullptr ? *p : reinterpret_cast( + ::pg_query::_Node_default_instance_); +} +inline const ::pg_query::Node& CreatePolicyStmt::with_check() const { + // @@protoc_insertion_point(field_get:pg_query.CreatePolicyStmt.with_check) + return _internal_with_check(); +} +inline void CreatePolicyStmt::unsafe_arena_set_allocated_with_check( + ::pg_query::Node* with_check) { + if (GetArena() == nullptr) { + delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(with_check_); + } + with_check_ = with_check; + if (with_check) { + + } else { + + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.CreatePolicyStmt.with_check) +} +inline ::pg_query::Node* CreatePolicyStmt::release_with_check() { + + ::pg_query::Node* temp = with_check_; + with_check_ = nullptr; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + return temp; +} +inline ::pg_query::Node* CreatePolicyStmt::unsafe_arena_release_with_check() { + // @@protoc_insertion_point(field_release:pg_query.CreatePolicyStmt.with_check) + + ::pg_query::Node* temp = with_check_; + with_check_ = nullptr; + return temp; +} +inline ::pg_query::Node* CreatePolicyStmt::_internal_mutable_with_check() { + + if (with_check_ == nullptr) { + auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); + with_check_ = p; + } + return with_check_; +} +inline ::pg_query::Node* CreatePolicyStmt::mutable_with_check() { + // @@protoc_insertion_point(field_mutable:pg_query.CreatePolicyStmt.with_check) + return _internal_mutable_with_check(); +} +inline void CreatePolicyStmt::set_allocated_with_check(::pg_query::Node* with_check) { + ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); + if (message_arena == nullptr) { + delete with_check_; + } + if (with_check) { + ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = + ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(with_check); + if (message_arena != submessage_arena) { + with_check = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( + message_arena, with_check, submessage_arena); + } + + } else { + + } + with_check_ = with_check; + // @@protoc_insertion_point(field_set_allocated:pg_query.CreatePolicyStmt.with_check) +} + +// ------------------------------------------------------------------- + +// AlterPolicyStmt + +// string policy_name = 1 [json_name = "policy_name"]; +inline void AlterPolicyStmt::clear_policy_name() { + policy_name_.ClearToEmpty(); +} +inline const std::string& AlterPolicyStmt::policy_name() const { + // @@protoc_insertion_point(field_get:pg_query.AlterPolicyStmt.policy_name) + return _internal_policy_name(); +} +inline void AlterPolicyStmt::set_policy_name(const std::string& value) { + _internal_set_policy_name(value); + // @@protoc_insertion_point(field_set:pg_query.AlterPolicyStmt.policy_name) +} +inline std::string* AlterPolicyStmt::mutable_policy_name() { + // @@protoc_insertion_point(field_mutable:pg_query.AlterPolicyStmt.policy_name) + return _internal_mutable_policy_name(); +} +inline const std::string& AlterPolicyStmt::_internal_policy_name() const { + return policy_name_.Get(); +} +inline void AlterPolicyStmt::_internal_set_policy_name(const std::string& value) { + + policy_name_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArena()); +} +inline void AlterPolicyStmt::set_policy_name(std::string&& value) { + + policy_name_.Set( + ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::move(value), GetArena()); + // @@protoc_insertion_point(field_set_rvalue:pg_query.AlterPolicyStmt.policy_name) +} +inline void AlterPolicyStmt::set_policy_name(const char* value) { + GOOGLE_DCHECK(value != nullptr); + + policy_name_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string(value), GetArena()); + // @@protoc_insertion_point(field_set_char:pg_query.AlterPolicyStmt.policy_name) +} +inline void AlterPolicyStmt::set_policy_name(const char* value, + size_t size) { + + policy_name_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string( + reinterpret_cast(value), size), GetArena()); + // @@protoc_insertion_point(field_set_pointer:pg_query.AlterPolicyStmt.policy_name) +} +inline std::string* AlterPolicyStmt::_internal_mutable_policy_name() { + + return policy_name_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArena()); +} +inline std::string* AlterPolicyStmt::release_policy_name() { + // @@protoc_insertion_point(field_release:pg_query.AlterPolicyStmt.policy_name) + return policy_name_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); +} +inline void AlterPolicyStmt::set_allocated_policy_name(std::string* policy_name) { + if (policy_name != nullptr) { + + } else { + + } + policy_name_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), policy_name, + GetArena()); + // @@protoc_insertion_point(field_set_allocated:pg_query.AlterPolicyStmt.policy_name) +} + +// .pg_query.RangeVar table = 2 [json_name = "table"]; +inline bool AlterPolicyStmt::_internal_has_table() const { + return this != internal_default_instance() && table_ != nullptr; +} +inline bool AlterPolicyStmt::has_table() const { + return _internal_has_table(); +} +inline void AlterPolicyStmt::clear_table() { + if (GetArena() == nullptr && table_ != nullptr) { + delete table_; + } + table_ = nullptr; +} +inline const ::pg_query::RangeVar& AlterPolicyStmt::_internal_table() const { + const ::pg_query::RangeVar* p = table_; + return p != nullptr ? *p : reinterpret_cast( + ::pg_query::_RangeVar_default_instance_); +} +inline const ::pg_query::RangeVar& AlterPolicyStmt::table() const { + // @@protoc_insertion_point(field_get:pg_query.AlterPolicyStmt.table) + return _internal_table(); +} +inline void AlterPolicyStmt::unsafe_arena_set_allocated_table( + ::pg_query::RangeVar* table) { + if (GetArena() == nullptr) { + delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(table_); + } + table_ = table; + if (table) { + + } else { + + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.AlterPolicyStmt.table) +} +inline ::pg_query::RangeVar* AlterPolicyStmt::release_table() { + + ::pg_query::RangeVar* temp = table_; + table_ = nullptr; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + return temp; +} +inline ::pg_query::RangeVar* AlterPolicyStmt::unsafe_arena_release_table() { + // @@protoc_insertion_point(field_release:pg_query.AlterPolicyStmt.table) + + ::pg_query::RangeVar* temp = table_; + table_ = nullptr; + return temp; +} +inline ::pg_query::RangeVar* AlterPolicyStmt::_internal_mutable_table() { + + if (table_ == nullptr) { + auto* p = CreateMaybeMessage<::pg_query::RangeVar>(GetArena()); + table_ = p; + } + return table_; +} +inline ::pg_query::RangeVar* AlterPolicyStmt::mutable_table() { + // @@protoc_insertion_point(field_mutable:pg_query.AlterPolicyStmt.table) + return _internal_mutable_table(); +} +inline void AlterPolicyStmt::set_allocated_table(::pg_query::RangeVar* table) { + ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); + if (message_arena == nullptr) { + delete table_; + } + if (table) { + ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = + ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(table); + if (message_arena != submessage_arena) { + table = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( + message_arena, table, submessage_arena); + } + + } else { + + } + table_ = table; + // @@protoc_insertion_point(field_set_allocated:pg_query.AlterPolicyStmt.table) +} + +// repeated .pg_query.Node roles = 3 [json_name = "roles"]; +inline int AlterPolicyStmt::_internal_roles_size() const { + return roles_.size(); +} +inline int AlterPolicyStmt::roles_size() const { + return _internal_roles_size(); +} +inline void AlterPolicyStmt::clear_roles() { + roles_.Clear(); +} +inline ::pg_query::Node* AlterPolicyStmt::mutable_roles(int index) { + // @@protoc_insertion_point(field_mutable:pg_query.AlterPolicyStmt.roles) + return roles_.Mutable(index); +} +inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* +AlterPolicyStmt::mutable_roles() { + // @@protoc_insertion_point(field_mutable_list:pg_query.AlterPolicyStmt.roles) + return &roles_; +} +inline const ::pg_query::Node& AlterPolicyStmt::_internal_roles(int index) const { + return roles_.Get(index); +} +inline const ::pg_query::Node& AlterPolicyStmt::roles(int index) const { + // @@protoc_insertion_point(field_get:pg_query.AlterPolicyStmt.roles) + return _internal_roles(index); +} +inline ::pg_query::Node* AlterPolicyStmt::_internal_add_roles() { + return roles_.Add(); +} +inline ::pg_query::Node* AlterPolicyStmt::add_roles() { + // @@protoc_insertion_point(field_add:pg_query.AlterPolicyStmt.roles) + return _internal_add_roles(); +} +inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& +AlterPolicyStmt::roles() const { + // @@protoc_insertion_point(field_list:pg_query.AlterPolicyStmt.roles) + return roles_; +} + +// .pg_query.Node qual = 4 [json_name = "qual"]; +inline bool AlterPolicyStmt::_internal_has_qual() const { + return this != internal_default_instance() && qual_ != nullptr; +} +inline bool AlterPolicyStmt::has_qual() const { + return _internal_has_qual(); +} +inline void AlterPolicyStmt::clear_qual() { + if (GetArena() == nullptr && qual_ != nullptr) { + delete qual_; + } + qual_ = nullptr; +} +inline const ::pg_query::Node& AlterPolicyStmt::_internal_qual() const { + const ::pg_query::Node* p = qual_; + return p != nullptr ? *p : reinterpret_cast( + ::pg_query::_Node_default_instance_); +} +inline const ::pg_query::Node& AlterPolicyStmt::qual() const { + // @@protoc_insertion_point(field_get:pg_query.AlterPolicyStmt.qual) + return _internal_qual(); +} +inline void AlterPolicyStmt::unsafe_arena_set_allocated_qual( + ::pg_query::Node* qual) { + if (GetArena() == nullptr) { + delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(qual_); + } + qual_ = qual; + if (qual) { + + } else { + + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.AlterPolicyStmt.qual) +} +inline ::pg_query::Node* AlterPolicyStmt::release_qual() { + + ::pg_query::Node* temp = qual_; + qual_ = nullptr; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + return temp; +} +inline ::pg_query::Node* AlterPolicyStmt::unsafe_arena_release_qual() { + // @@protoc_insertion_point(field_release:pg_query.AlterPolicyStmt.qual) + + ::pg_query::Node* temp = qual_; + qual_ = nullptr; + return temp; +} +inline ::pg_query::Node* AlterPolicyStmt::_internal_mutable_qual() { + + if (qual_ == nullptr) { + auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); + qual_ = p; + } + return qual_; +} +inline ::pg_query::Node* AlterPolicyStmt::mutable_qual() { + // @@protoc_insertion_point(field_mutable:pg_query.AlterPolicyStmt.qual) + return _internal_mutable_qual(); +} +inline void AlterPolicyStmt::set_allocated_qual(::pg_query::Node* qual) { + ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); + if (message_arena == nullptr) { + delete qual_; + } + if (qual) { + ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = + ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(qual); + if (message_arena != submessage_arena) { + qual = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( + message_arena, qual, submessage_arena); + } + + } else { + + } + qual_ = qual; + // @@protoc_insertion_point(field_set_allocated:pg_query.AlterPolicyStmt.qual) +} + +// .pg_query.Node with_check = 5 [json_name = "with_check"]; +inline bool AlterPolicyStmt::_internal_has_with_check() const { + return this != internal_default_instance() && with_check_ != nullptr; +} +inline bool AlterPolicyStmt::has_with_check() const { + return _internal_has_with_check(); +} +inline void AlterPolicyStmt::clear_with_check() { + if (GetArena() == nullptr && with_check_ != nullptr) { + delete with_check_; + } + with_check_ = nullptr; +} +inline const ::pg_query::Node& AlterPolicyStmt::_internal_with_check() const { + const ::pg_query::Node* p = with_check_; + return p != nullptr ? *p : reinterpret_cast( + ::pg_query::_Node_default_instance_); +} +inline const ::pg_query::Node& AlterPolicyStmt::with_check() const { + // @@protoc_insertion_point(field_get:pg_query.AlterPolicyStmt.with_check) + return _internal_with_check(); +} +inline void AlterPolicyStmt::unsafe_arena_set_allocated_with_check( + ::pg_query::Node* with_check) { + if (GetArena() == nullptr) { + delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(with_check_); + } + with_check_ = with_check; + if (with_check) { + + } else { + + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.AlterPolicyStmt.with_check) +} +inline ::pg_query::Node* AlterPolicyStmt::release_with_check() { + + ::pg_query::Node* temp = with_check_; + with_check_ = nullptr; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + return temp; +} +inline ::pg_query::Node* AlterPolicyStmt::unsafe_arena_release_with_check() { + // @@protoc_insertion_point(field_release:pg_query.AlterPolicyStmt.with_check) + + ::pg_query::Node* temp = with_check_; + with_check_ = nullptr; + return temp; +} +inline ::pg_query::Node* AlterPolicyStmt::_internal_mutable_with_check() { + + if (with_check_ == nullptr) { + auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); + with_check_ = p; + } + return with_check_; +} +inline ::pg_query::Node* AlterPolicyStmt::mutable_with_check() { + // @@protoc_insertion_point(field_mutable:pg_query.AlterPolicyStmt.with_check) + return _internal_mutable_with_check(); +} +inline void AlterPolicyStmt::set_allocated_with_check(::pg_query::Node* with_check) { + ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); + if (message_arena == nullptr) { + delete with_check_; + } + if (with_check) { + ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = + ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(with_check); + if (message_arena != submessage_arena) { + with_check = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( + message_arena, with_check, submessage_arena); + } + + } else { + + } + with_check_ = with_check; + // @@protoc_insertion_point(field_set_allocated:pg_query.AlterPolicyStmt.with_check) +} + +// ------------------------------------------------------------------- + +// CreateTransformStmt + +// bool replace = 1 [json_name = "replace"]; +inline void CreateTransformStmt::clear_replace() { + replace_ = false; +} +inline bool CreateTransformStmt::_internal_replace() const { + return replace_; +} +inline bool CreateTransformStmt::replace() const { + // @@protoc_insertion_point(field_get:pg_query.CreateTransformStmt.replace) + return _internal_replace(); +} +inline void CreateTransformStmt::_internal_set_replace(bool value) { + + replace_ = value; +} +inline void CreateTransformStmt::set_replace(bool value) { + _internal_set_replace(value); + // @@protoc_insertion_point(field_set:pg_query.CreateTransformStmt.replace) +} + +// .pg_query.TypeName type_name = 2 [json_name = "type_name"]; +inline bool CreateTransformStmt::_internal_has_type_name() const { + return this != internal_default_instance() && type_name_ != nullptr; +} +inline bool CreateTransformStmt::has_type_name() const { + return _internal_has_type_name(); +} +inline void CreateTransformStmt::clear_type_name() { + if (GetArena() == nullptr && type_name_ != nullptr) { + delete type_name_; + } + type_name_ = nullptr; +} +inline const ::pg_query::TypeName& CreateTransformStmt::_internal_type_name() const { + const ::pg_query::TypeName* p = type_name_; + return p != nullptr ? *p : reinterpret_cast( + ::pg_query::_TypeName_default_instance_); +} +inline const ::pg_query::TypeName& CreateTransformStmt::type_name() const { + // @@protoc_insertion_point(field_get:pg_query.CreateTransformStmt.type_name) + return _internal_type_name(); +} +inline void CreateTransformStmt::unsafe_arena_set_allocated_type_name( + ::pg_query::TypeName* type_name) { + if (GetArena() == nullptr) { + delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(type_name_); + } + type_name_ = type_name; + if (type_name) { + + } else { + + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.CreateTransformStmt.type_name) +} +inline ::pg_query::TypeName* CreateTransformStmt::release_type_name() { + + ::pg_query::TypeName* temp = type_name_; + type_name_ = nullptr; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + return temp; +} +inline ::pg_query::TypeName* CreateTransformStmt::unsafe_arena_release_type_name() { + // @@protoc_insertion_point(field_release:pg_query.CreateTransformStmt.type_name) + + ::pg_query::TypeName* temp = type_name_; + type_name_ = nullptr; + return temp; +} +inline ::pg_query::TypeName* CreateTransformStmt::_internal_mutable_type_name() { + + if (type_name_ == nullptr) { + auto* p = CreateMaybeMessage<::pg_query::TypeName>(GetArena()); + type_name_ = p; + } + return type_name_; +} +inline ::pg_query::TypeName* CreateTransformStmt::mutable_type_name() { + // @@protoc_insertion_point(field_mutable:pg_query.CreateTransformStmt.type_name) + return _internal_mutable_type_name(); +} +inline void CreateTransformStmt::set_allocated_type_name(::pg_query::TypeName* type_name) { + ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); + if (message_arena == nullptr) { + delete type_name_; + } + if (type_name) { + ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = + ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(type_name); + if (message_arena != submessage_arena) { + type_name = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( + message_arena, type_name, submessage_arena); + } + + } else { + + } + type_name_ = type_name; + // @@protoc_insertion_point(field_set_allocated:pg_query.CreateTransformStmt.type_name) +} + +// string lang = 3 [json_name = "lang"]; +inline void CreateTransformStmt::clear_lang() { + lang_.ClearToEmpty(); +} +inline const std::string& CreateTransformStmt::lang() const { + // @@protoc_insertion_point(field_get:pg_query.CreateTransformStmt.lang) + return _internal_lang(); +} +inline void CreateTransformStmt::set_lang(const std::string& value) { + _internal_set_lang(value); + // @@protoc_insertion_point(field_set:pg_query.CreateTransformStmt.lang) +} +inline std::string* CreateTransformStmt::mutable_lang() { + // @@protoc_insertion_point(field_mutable:pg_query.CreateTransformStmt.lang) + return _internal_mutable_lang(); +} +inline const std::string& CreateTransformStmt::_internal_lang() const { + return lang_.Get(); +} +inline void CreateTransformStmt::_internal_set_lang(const std::string& value) { + + lang_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArena()); +} +inline void CreateTransformStmt::set_lang(std::string&& value) { + + lang_.Set( + ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::move(value), GetArena()); + // @@protoc_insertion_point(field_set_rvalue:pg_query.CreateTransformStmt.lang) +} +inline void CreateTransformStmt::set_lang(const char* value) { + GOOGLE_DCHECK(value != nullptr); + + lang_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string(value), GetArena()); + // @@protoc_insertion_point(field_set_char:pg_query.CreateTransformStmt.lang) +} +inline void CreateTransformStmt::set_lang(const char* value, + size_t size) { + + lang_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string( + reinterpret_cast(value), size), GetArena()); + // @@protoc_insertion_point(field_set_pointer:pg_query.CreateTransformStmt.lang) +} +inline std::string* CreateTransformStmt::_internal_mutable_lang() { + + return lang_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArena()); +} +inline std::string* CreateTransformStmt::release_lang() { + // @@protoc_insertion_point(field_release:pg_query.CreateTransformStmt.lang) + return lang_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); +} +inline void CreateTransformStmt::set_allocated_lang(std::string* lang) { + if (lang != nullptr) { + + } else { + + } + lang_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), lang, + GetArena()); + // @@protoc_insertion_point(field_set_allocated:pg_query.CreateTransformStmt.lang) +} + +// .pg_query.ObjectWithArgs fromsql = 4 [json_name = "fromsql"]; +inline bool CreateTransformStmt::_internal_has_fromsql() const { + return this != internal_default_instance() && fromsql_ != nullptr; +} +inline bool CreateTransformStmt::has_fromsql() const { + return _internal_has_fromsql(); +} +inline void CreateTransformStmt::clear_fromsql() { + if (GetArena() == nullptr && fromsql_ != nullptr) { + delete fromsql_; + } + fromsql_ = nullptr; +} +inline const ::pg_query::ObjectWithArgs& CreateTransformStmt::_internal_fromsql() const { + const ::pg_query::ObjectWithArgs* p = fromsql_; + return p != nullptr ? *p : reinterpret_cast( + ::pg_query::_ObjectWithArgs_default_instance_); +} +inline const ::pg_query::ObjectWithArgs& CreateTransformStmt::fromsql() const { + // @@protoc_insertion_point(field_get:pg_query.CreateTransformStmt.fromsql) + return _internal_fromsql(); +} +inline void CreateTransformStmt::unsafe_arena_set_allocated_fromsql( + ::pg_query::ObjectWithArgs* fromsql) { + if (GetArena() == nullptr) { + delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(fromsql_); + } + fromsql_ = fromsql; + if (fromsql) { + + } else { + + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.CreateTransformStmt.fromsql) +} +inline ::pg_query::ObjectWithArgs* CreateTransformStmt::release_fromsql() { + + ::pg_query::ObjectWithArgs* temp = fromsql_; + fromsql_ = nullptr; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + return temp; +} +inline ::pg_query::ObjectWithArgs* CreateTransformStmt::unsafe_arena_release_fromsql() { + // @@protoc_insertion_point(field_release:pg_query.CreateTransformStmt.fromsql) + + ::pg_query::ObjectWithArgs* temp = fromsql_; + fromsql_ = nullptr; + return temp; +} +inline ::pg_query::ObjectWithArgs* CreateTransformStmt::_internal_mutable_fromsql() { + + if (fromsql_ == nullptr) { + auto* p = CreateMaybeMessage<::pg_query::ObjectWithArgs>(GetArena()); + fromsql_ = p; + } + return fromsql_; +} +inline ::pg_query::ObjectWithArgs* CreateTransformStmt::mutable_fromsql() { + // @@protoc_insertion_point(field_mutable:pg_query.CreateTransformStmt.fromsql) + return _internal_mutable_fromsql(); +} +inline void CreateTransformStmt::set_allocated_fromsql(::pg_query::ObjectWithArgs* fromsql) { + ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); + if (message_arena == nullptr) { + delete fromsql_; + } + if (fromsql) { + ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = + ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(fromsql); + if (message_arena != submessage_arena) { + fromsql = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( + message_arena, fromsql, submessage_arena); + } + + } else { + + } + fromsql_ = fromsql; + // @@protoc_insertion_point(field_set_allocated:pg_query.CreateTransformStmt.fromsql) +} + +// .pg_query.ObjectWithArgs tosql = 5 [json_name = "tosql"]; +inline bool CreateTransformStmt::_internal_has_tosql() const { + return this != internal_default_instance() && tosql_ != nullptr; +} +inline bool CreateTransformStmt::has_tosql() const { + return _internal_has_tosql(); +} +inline void CreateTransformStmt::clear_tosql() { + if (GetArena() == nullptr && tosql_ != nullptr) { + delete tosql_; + } + tosql_ = nullptr; +} +inline const ::pg_query::ObjectWithArgs& CreateTransformStmt::_internal_tosql() const { + const ::pg_query::ObjectWithArgs* p = tosql_; + return p != nullptr ? *p : reinterpret_cast( + ::pg_query::_ObjectWithArgs_default_instance_); +} +inline const ::pg_query::ObjectWithArgs& CreateTransformStmt::tosql() const { + // @@protoc_insertion_point(field_get:pg_query.CreateTransformStmt.tosql) + return _internal_tosql(); +} +inline void CreateTransformStmt::unsafe_arena_set_allocated_tosql( + ::pg_query::ObjectWithArgs* tosql) { + if (GetArena() == nullptr) { + delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(tosql_); + } + tosql_ = tosql; + if (tosql) { + + } else { + + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.CreateTransformStmt.tosql) +} +inline ::pg_query::ObjectWithArgs* CreateTransformStmt::release_tosql() { + + ::pg_query::ObjectWithArgs* temp = tosql_; + tosql_ = nullptr; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + return temp; +} +inline ::pg_query::ObjectWithArgs* CreateTransformStmt::unsafe_arena_release_tosql() { + // @@protoc_insertion_point(field_release:pg_query.CreateTransformStmt.tosql) + + ::pg_query::ObjectWithArgs* temp = tosql_; + tosql_ = nullptr; + return temp; +} +inline ::pg_query::ObjectWithArgs* CreateTransformStmt::_internal_mutable_tosql() { + + if (tosql_ == nullptr) { + auto* p = CreateMaybeMessage<::pg_query::ObjectWithArgs>(GetArena()); + tosql_ = p; + } + return tosql_; +} +inline ::pg_query::ObjectWithArgs* CreateTransformStmt::mutable_tosql() { + // @@protoc_insertion_point(field_mutable:pg_query.CreateTransformStmt.tosql) + return _internal_mutable_tosql(); +} +inline void CreateTransformStmt::set_allocated_tosql(::pg_query::ObjectWithArgs* tosql) { + ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); + if (message_arena == nullptr) { + delete tosql_; + } + if (tosql) { + ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = + ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(tosql); + if (message_arena != submessage_arena) { + tosql = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( + message_arena, tosql, submessage_arena); + } + + } else { + + } + tosql_ = tosql; + // @@protoc_insertion_point(field_set_allocated:pg_query.CreateTransformStmt.tosql) +} + +// ------------------------------------------------------------------- + +// CreateAmStmt + +// string amname = 1 [json_name = "amname"]; +inline void CreateAmStmt::clear_amname() { + amname_.ClearToEmpty(); +} +inline const std::string& CreateAmStmt::amname() const { + // @@protoc_insertion_point(field_get:pg_query.CreateAmStmt.amname) + return _internal_amname(); +} +inline void CreateAmStmt::set_amname(const std::string& value) { + _internal_set_amname(value); + // @@protoc_insertion_point(field_set:pg_query.CreateAmStmt.amname) +} +inline std::string* CreateAmStmt::mutable_amname() { + // @@protoc_insertion_point(field_mutable:pg_query.CreateAmStmt.amname) + return _internal_mutable_amname(); +} +inline const std::string& CreateAmStmt::_internal_amname() const { + return amname_.Get(); +} +inline void CreateAmStmt::_internal_set_amname(const std::string& value) { + + amname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArena()); +} +inline void CreateAmStmt::set_amname(std::string&& value) { + + amname_.Set( + ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::move(value), GetArena()); + // @@protoc_insertion_point(field_set_rvalue:pg_query.CreateAmStmt.amname) +} +inline void CreateAmStmt::set_amname(const char* value) { + GOOGLE_DCHECK(value != nullptr); + + amname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string(value), GetArena()); + // @@protoc_insertion_point(field_set_char:pg_query.CreateAmStmt.amname) +} +inline void CreateAmStmt::set_amname(const char* value, + size_t size) { + + amname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string( + reinterpret_cast(value), size), GetArena()); + // @@protoc_insertion_point(field_set_pointer:pg_query.CreateAmStmt.amname) +} +inline std::string* CreateAmStmt::_internal_mutable_amname() { + + return amname_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArena()); +} +inline std::string* CreateAmStmt::release_amname() { + // @@protoc_insertion_point(field_release:pg_query.CreateAmStmt.amname) + return amname_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); +} +inline void CreateAmStmt::set_allocated_amname(std::string* amname) { + if (amname != nullptr) { + + } else { + + } + amname_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), amname, + GetArena()); + // @@protoc_insertion_point(field_set_allocated:pg_query.CreateAmStmt.amname) +} + +// repeated .pg_query.Node handler_name = 2 [json_name = "handler_name"]; +inline int CreateAmStmt::_internal_handler_name_size() const { + return handler_name_.size(); +} +inline int CreateAmStmt::handler_name_size() const { + return _internal_handler_name_size(); +} +inline void CreateAmStmt::clear_handler_name() { + handler_name_.Clear(); +} +inline ::pg_query::Node* CreateAmStmt::mutable_handler_name(int index) { + // @@protoc_insertion_point(field_mutable:pg_query.CreateAmStmt.handler_name) + return handler_name_.Mutable(index); +} +inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* +CreateAmStmt::mutable_handler_name() { + // @@protoc_insertion_point(field_mutable_list:pg_query.CreateAmStmt.handler_name) + return &handler_name_; +} +inline const ::pg_query::Node& CreateAmStmt::_internal_handler_name(int index) const { + return handler_name_.Get(index); +} +inline const ::pg_query::Node& CreateAmStmt::handler_name(int index) const { + // @@protoc_insertion_point(field_get:pg_query.CreateAmStmt.handler_name) + return _internal_handler_name(index); +} +inline ::pg_query::Node* CreateAmStmt::_internal_add_handler_name() { + return handler_name_.Add(); +} +inline ::pg_query::Node* CreateAmStmt::add_handler_name() { + // @@protoc_insertion_point(field_add:pg_query.CreateAmStmt.handler_name) + return _internal_add_handler_name(); +} +inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& +CreateAmStmt::handler_name() const { + // @@protoc_insertion_point(field_list:pg_query.CreateAmStmt.handler_name) + return handler_name_; +} + +// string amtype = 3 [json_name = "amtype"]; +inline void CreateAmStmt::clear_amtype() { + amtype_.ClearToEmpty(); +} +inline const std::string& CreateAmStmt::amtype() const { + // @@protoc_insertion_point(field_get:pg_query.CreateAmStmt.amtype) + return _internal_amtype(); +} +inline void CreateAmStmt::set_amtype(const std::string& value) { + _internal_set_amtype(value); + // @@protoc_insertion_point(field_set:pg_query.CreateAmStmt.amtype) +} +inline std::string* CreateAmStmt::mutable_amtype() { + // @@protoc_insertion_point(field_mutable:pg_query.CreateAmStmt.amtype) + return _internal_mutable_amtype(); +} +inline const std::string& CreateAmStmt::_internal_amtype() const { + return amtype_.Get(); +} +inline void CreateAmStmt::_internal_set_amtype(const std::string& value) { + + amtype_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArena()); +} +inline void CreateAmStmt::set_amtype(std::string&& value) { + + amtype_.Set( + ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::move(value), GetArena()); + // @@protoc_insertion_point(field_set_rvalue:pg_query.CreateAmStmt.amtype) +} +inline void CreateAmStmt::set_amtype(const char* value) { + GOOGLE_DCHECK(value != nullptr); + + amtype_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string(value), GetArena()); + // @@protoc_insertion_point(field_set_char:pg_query.CreateAmStmt.amtype) +} +inline void CreateAmStmt::set_amtype(const char* value, + size_t size) { + + amtype_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string( + reinterpret_cast(value), size), GetArena()); + // @@protoc_insertion_point(field_set_pointer:pg_query.CreateAmStmt.amtype) +} +inline std::string* CreateAmStmt::_internal_mutable_amtype() { + + return amtype_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArena()); +} +inline std::string* CreateAmStmt::release_amtype() { + // @@protoc_insertion_point(field_release:pg_query.CreateAmStmt.amtype) + return amtype_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); +} +inline void CreateAmStmt::set_allocated_amtype(std::string* amtype) { + if (amtype != nullptr) { + + } else { + + } + amtype_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), amtype, + GetArena()); + // @@protoc_insertion_point(field_set_allocated:pg_query.CreateAmStmt.amtype) +} + +// ------------------------------------------------------------------- + +// CreatePublicationStmt + +// string pubname = 1 [json_name = "pubname"]; +inline void CreatePublicationStmt::clear_pubname() { + pubname_.ClearToEmpty(); +} +inline const std::string& CreatePublicationStmt::pubname() const { + // @@protoc_insertion_point(field_get:pg_query.CreatePublicationStmt.pubname) + return _internal_pubname(); +} +inline void CreatePublicationStmt::set_pubname(const std::string& value) { + _internal_set_pubname(value); + // @@protoc_insertion_point(field_set:pg_query.CreatePublicationStmt.pubname) +} +inline std::string* CreatePublicationStmt::mutable_pubname() { + // @@protoc_insertion_point(field_mutable:pg_query.CreatePublicationStmt.pubname) + return _internal_mutable_pubname(); +} +inline const std::string& CreatePublicationStmt::_internal_pubname() const { + return pubname_.Get(); +} +inline void CreatePublicationStmt::_internal_set_pubname(const std::string& value) { + + pubname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArena()); +} +inline void CreatePublicationStmt::set_pubname(std::string&& value) { + + pubname_.Set( + ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::move(value), GetArena()); + // @@protoc_insertion_point(field_set_rvalue:pg_query.CreatePublicationStmt.pubname) +} +inline void CreatePublicationStmt::set_pubname(const char* value) { + GOOGLE_DCHECK(value != nullptr); + + pubname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string(value), GetArena()); + // @@protoc_insertion_point(field_set_char:pg_query.CreatePublicationStmt.pubname) +} +inline void CreatePublicationStmt::set_pubname(const char* value, + size_t size) { + + pubname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string( + reinterpret_cast(value), size), GetArena()); + // @@protoc_insertion_point(field_set_pointer:pg_query.CreatePublicationStmt.pubname) +} +inline std::string* CreatePublicationStmt::_internal_mutable_pubname() { + + return pubname_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArena()); +} +inline std::string* CreatePublicationStmt::release_pubname() { + // @@protoc_insertion_point(field_release:pg_query.CreatePublicationStmt.pubname) + return pubname_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); +} +inline void CreatePublicationStmt::set_allocated_pubname(std::string* pubname) { + if (pubname != nullptr) { + + } else { + + } + pubname_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), pubname, + GetArena()); + // @@protoc_insertion_point(field_set_allocated:pg_query.CreatePublicationStmt.pubname) +} + +// repeated .pg_query.Node options = 2 [json_name = "options"]; +inline int CreatePublicationStmt::_internal_options_size() const { + return options_.size(); +} +inline int CreatePublicationStmt::options_size() const { + return _internal_options_size(); +} +inline void CreatePublicationStmt::clear_options() { + options_.Clear(); +} +inline ::pg_query::Node* CreatePublicationStmt::mutable_options(int index) { + // @@protoc_insertion_point(field_mutable:pg_query.CreatePublicationStmt.options) + return options_.Mutable(index); +} +inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* +CreatePublicationStmt::mutable_options() { + // @@protoc_insertion_point(field_mutable_list:pg_query.CreatePublicationStmt.options) + return &options_; +} +inline const ::pg_query::Node& CreatePublicationStmt::_internal_options(int index) const { + return options_.Get(index); +} +inline const ::pg_query::Node& CreatePublicationStmt::options(int index) const { + // @@protoc_insertion_point(field_get:pg_query.CreatePublicationStmt.options) + return _internal_options(index); +} +inline ::pg_query::Node* CreatePublicationStmt::_internal_add_options() { + return options_.Add(); +} +inline ::pg_query::Node* CreatePublicationStmt::add_options() { + // @@protoc_insertion_point(field_add:pg_query.CreatePublicationStmt.options) + return _internal_add_options(); +} +inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& +CreatePublicationStmt::options() const { + // @@protoc_insertion_point(field_list:pg_query.CreatePublicationStmt.options) + return options_; +} + +// repeated .pg_query.Node tables = 3 [json_name = "tables"]; +inline int CreatePublicationStmt::_internal_tables_size() const { + return tables_.size(); +} +inline int CreatePublicationStmt::tables_size() const { + return _internal_tables_size(); +} +inline void CreatePublicationStmt::clear_tables() { + tables_.Clear(); +} +inline ::pg_query::Node* CreatePublicationStmt::mutable_tables(int index) { + // @@protoc_insertion_point(field_mutable:pg_query.CreatePublicationStmt.tables) + return tables_.Mutable(index); +} +inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* +CreatePublicationStmt::mutable_tables() { + // @@protoc_insertion_point(field_mutable_list:pg_query.CreatePublicationStmt.tables) + return &tables_; +} +inline const ::pg_query::Node& CreatePublicationStmt::_internal_tables(int index) const { + return tables_.Get(index); +} +inline const ::pg_query::Node& CreatePublicationStmt::tables(int index) const { + // @@protoc_insertion_point(field_get:pg_query.CreatePublicationStmt.tables) + return _internal_tables(index); +} +inline ::pg_query::Node* CreatePublicationStmt::_internal_add_tables() { + return tables_.Add(); +} +inline ::pg_query::Node* CreatePublicationStmt::add_tables() { + // @@protoc_insertion_point(field_add:pg_query.CreatePublicationStmt.tables) + return _internal_add_tables(); +} +inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& +CreatePublicationStmt::tables() const { + // @@protoc_insertion_point(field_list:pg_query.CreatePublicationStmt.tables) + return tables_; +} + +// bool for_all_tables = 4 [json_name = "for_all_tables"]; +inline void CreatePublicationStmt::clear_for_all_tables() { + for_all_tables_ = false; +} +inline bool CreatePublicationStmt::_internal_for_all_tables() const { + return for_all_tables_; +} +inline bool CreatePublicationStmt::for_all_tables() const { + // @@protoc_insertion_point(field_get:pg_query.CreatePublicationStmt.for_all_tables) + return _internal_for_all_tables(); +} +inline void CreatePublicationStmt::_internal_set_for_all_tables(bool value) { + + for_all_tables_ = value; +} +inline void CreatePublicationStmt::set_for_all_tables(bool value) { + _internal_set_for_all_tables(value); + // @@protoc_insertion_point(field_set:pg_query.CreatePublicationStmt.for_all_tables) +} + +// ------------------------------------------------------------------- + +// AlterPublicationStmt + +// string pubname = 1 [json_name = "pubname"]; +inline void AlterPublicationStmt::clear_pubname() { + pubname_.ClearToEmpty(); +} +inline const std::string& AlterPublicationStmt::pubname() const { + // @@protoc_insertion_point(field_get:pg_query.AlterPublicationStmt.pubname) + return _internal_pubname(); +} +inline void AlterPublicationStmt::set_pubname(const std::string& value) { + _internal_set_pubname(value); + // @@protoc_insertion_point(field_set:pg_query.AlterPublicationStmt.pubname) +} +inline std::string* AlterPublicationStmt::mutable_pubname() { + // @@protoc_insertion_point(field_mutable:pg_query.AlterPublicationStmt.pubname) + return _internal_mutable_pubname(); +} +inline const std::string& AlterPublicationStmt::_internal_pubname() const { + return pubname_.Get(); +} +inline void AlterPublicationStmt::_internal_set_pubname(const std::string& value) { + + pubname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArena()); +} +inline void AlterPublicationStmt::set_pubname(std::string&& value) { + + pubname_.Set( + ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::move(value), GetArena()); + // @@protoc_insertion_point(field_set_rvalue:pg_query.AlterPublicationStmt.pubname) +} +inline void AlterPublicationStmt::set_pubname(const char* value) { + GOOGLE_DCHECK(value != nullptr); + + pubname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string(value), GetArena()); + // @@protoc_insertion_point(field_set_char:pg_query.AlterPublicationStmt.pubname) +} +inline void AlterPublicationStmt::set_pubname(const char* value, + size_t size) { + + pubname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string( + reinterpret_cast(value), size), GetArena()); + // @@protoc_insertion_point(field_set_pointer:pg_query.AlterPublicationStmt.pubname) +} +inline std::string* AlterPublicationStmt::_internal_mutable_pubname() { + + return pubname_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArena()); +} +inline std::string* AlterPublicationStmt::release_pubname() { + // @@protoc_insertion_point(field_release:pg_query.AlterPublicationStmt.pubname) + return pubname_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); +} +inline void AlterPublicationStmt::set_allocated_pubname(std::string* pubname) { + if (pubname != nullptr) { + + } else { + + } + pubname_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), pubname, + GetArena()); + // @@protoc_insertion_point(field_set_allocated:pg_query.AlterPublicationStmt.pubname) +} + +// repeated .pg_query.Node options = 2 [json_name = "options"]; +inline int AlterPublicationStmt::_internal_options_size() const { + return options_.size(); +} +inline int AlterPublicationStmt::options_size() const { + return _internal_options_size(); +} +inline void AlterPublicationStmt::clear_options() { + options_.Clear(); +} +inline ::pg_query::Node* AlterPublicationStmt::mutable_options(int index) { + // @@protoc_insertion_point(field_mutable:pg_query.AlterPublicationStmt.options) + return options_.Mutable(index); +} +inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* +AlterPublicationStmt::mutable_options() { + // @@protoc_insertion_point(field_mutable_list:pg_query.AlterPublicationStmt.options) + return &options_; +} +inline const ::pg_query::Node& AlterPublicationStmt::_internal_options(int index) const { + return options_.Get(index); +} +inline const ::pg_query::Node& AlterPublicationStmt::options(int index) const { + // @@protoc_insertion_point(field_get:pg_query.AlterPublicationStmt.options) + return _internal_options(index); +} +inline ::pg_query::Node* AlterPublicationStmt::_internal_add_options() { + return options_.Add(); +} +inline ::pg_query::Node* AlterPublicationStmt::add_options() { + // @@protoc_insertion_point(field_add:pg_query.AlterPublicationStmt.options) + return _internal_add_options(); +} +inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& +AlterPublicationStmt::options() const { + // @@protoc_insertion_point(field_list:pg_query.AlterPublicationStmt.options) + return options_; +} + +// repeated .pg_query.Node tables = 3 [json_name = "tables"]; +inline int AlterPublicationStmt::_internal_tables_size() const { + return tables_.size(); +} +inline int AlterPublicationStmt::tables_size() const { + return _internal_tables_size(); +} +inline void AlterPublicationStmt::clear_tables() { + tables_.Clear(); +} +inline ::pg_query::Node* AlterPublicationStmt::mutable_tables(int index) { + // @@protoc_insertion_point(field_mutable:pg_query.AlterPublicationStmt.tables) + return tables_.Mutable(index); +} +inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* +AlterPublicationStmt::mutable_tables() { + // @@protoc_insertion_point(field_mutable_list:pg_query.AlterPublicationStmt.tables) + return &tables_; +} +inline const ::pg_query::Node& AlterPublicationStmt::_internal_tables(int index) const { + return tables_.Get(index); +} +inline const ::pg_query::Node& AlterPublicationStmt::tables(int index) const { + // @@protoc_insertion_point(field_get:pg_query.AlterPublicationStmt.tables) + return _internal_tables(index); +} +inline ::pg_query::Node* AlterPublicationStmt::_internal_add_tables() { + return tables_.Add(); +} +inline ::pg_query::Node* AlterPublicationStmt::add_tables() { + // @@protoc_insertion_point(field_add:pg_query.AlterPublicationStmt.tables) + return _internal_add_tables(); +} +inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& +AlterPublicationStmt::tables() const { + // @@protoc_insertion_point(field_list:pg_query.AlterPublicationStmt.tables) + return tables_; +} + +// bool for_all_tables = 4 [json_name = "for_all_tables"]; +inline void AlterPublicationStmt::clear_for_all_tables() { + for_all_tables_ = false; +} +inline bool AlterPublicationStmt::_internal_for_all_tables() const { + return for_all_tables_; +} +inline bool AlterPublicationStmt::for_all_tables() const { + // @@protoc_insertion_point(field_get:pg_query.AlterPublicationStmt.for_all_tables) + return _internal_for_all_tables(); +} +inline void AlterPublicationStmt::_internal_set_for_all_tables(bool value) { + + for_all_tables_ = value; +} +inline void AlterPublicationStmt::set_for_all_tables(bool value) { + _internal_set_for_all_tables(value); + // @@protoc_insertion_point(field_set:pg_query.AlterPublicationStmt.for_all_tables) +} + +// .pg_query.DefElemAction table_action = 5 [json_name = "tableAction"]; +inline void AlterPublicationStmt::clear_table_action() { + table_action_ = 0; +} +inline ::pg_query::DefElemAction AlterPublicationStmt::_internal_table_action() const { + return static_cast< ::pg_query::DefElemAction >(table_action_); +} +inline ::pg_query::DefElemAction AlterPublicationStmt::table_action() const { + // @@protoc_insertion_point(field_get:pg_query.AlterPublicationStmt.table_action) + return _internal_table_action(); +} +inline void AlterPublicationStmt::_internal_set_table_action(::pg_query::DefElemAction value) { + + table_action_ = value; +} +inline void AlterPublicationStmt::set_table_action(::pg_query::DefElemAction value) { + _internal_set_table_action(value); + // @@protoc_insertion_point(field_set:pg_query.AlterPublicationStmt.table_action) +} + +// ------------------------------------------------------------------- + +// CreateSubscriptionStmt + +// string subname = 1 [json_name = "subname"]; +inline void CreateSubscriptionStmt::clear_subname() { + subname_.ClearToEmpty(); +} +inline const std::string& CreateSubscriptionStmt::subname() const { + // @@protoc_insertion_point(field_get:pg_query.CreateSubscriptionStmt.subname) + return _internal_subname(); +} +inline void CreateSubscriptionStmt::set_subname(const std::string& value) { + _internal_set_subname(value); + // @@protoc_insertion_point(field_set:pg_query.CreateSubscriptionStmt.subname) +} +inline std::string* CreateSubscriptionStmt::mutable_subname() { + // @@protoc_insertion_point(field_mutable:pg_query.CreateSubscriptionStmt.subname) + return _internal_mutable_subname(); +} +inline const std::string& CreateSubscriptionStmt::_internal_subname() const { + return subname_.Get(); +} +inline void CreateSubscriptionStmt::_internal_set_subname(const std::string& value) { + + subname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArena()); +} +inline void CreateSubscriptionStmt::set_subname(std::string&& value) { + + subname_.Set( + ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::move(value), GetArena()); + // @@protoc_insertion_point(field_set_rvalue:pg_query.CreateSubscriptionStmt.subname) +} +inline void CreateSubscriptionStmt::set_subname(const char* value) { + GOOGLE_DCHECK(value != nullptr); + + subname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string(value), GetArena()); + // @@protoc_insertion_point(field_set_char:pg_query.CreateSubscriptionStmt.subname) +} +inline void CreateSubscriptionStmt::set_subname(const char* value, + size_t size) { + + subname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string( + reinterpret_cast(value), size), GetArena()); + // @@protoc_insertion_point(field_set_pointer:pg_query.CreateSubscriptionStmt.subname) +} +inline std::string* CreateSubscriptionStmt::_internal_mutable_subname() { + + return subname_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArena()); +} +inline std::string* CreateSubscriptionStmt::release_subname() { + // @@protoc_insertion_point(field_release:pg_query.CreateSubscriptionStmt.subname) + return subname_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); +} +inline void CreateSubscriptionStmt::set_allocated_subname(std::string* subname) { + if (subname != nullptr) { + + } else { + + } + subname_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), subname, + GetArena()); + // @@protoc_insertion_point(field_set_allocated:pg_query.CreateSubscriptionStmt.subname) +} + +// string conninfo = 2 [json_name = "conninfo"]; +inline void CreateSubscriptionStmt::clear_conninfo() { + conninfo_.ClearToEmpty(); +} +inline const std::string& CreateSubscriptionStmt::conninfo() const { + // @@protoc_insertion_point(field_get:pg_query.CreateSubscriptionStmt.conninfo) + return _internal_conninfo(); +} +inline void CreateSubscriptionStmt::set_conninfo(const std::string& value) { + _internal_set_conninfo(value); + // @@protoc_insertion_point(field_set:pg_query.CreateSubscriptionStmt.conninfo) +} +inline std::string* CreateSubscriptionStmt::mutable_conninfo() { + // @@protoc_insertion_point(field_mutable:pg_query.CreateSubscriptionStmt.conninfo) + return _internal_mutable_conninfo(); +} +inline const std::string& CreateSubscriptionStmt::_internal_conninfo() const { + return conninfo_.Get(); +} +inline void CreateSubscriptionStmt::_internal_set_conninfo(const std::string& value) { + + conninfo_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArena()); +} +inline void CreateSubscriptionStmt::set_conninfo(std::string&& value) { + + conninfo_.Set( + ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::move(value), GetArena()); + // @@protoc_insertion_point(field_set_rvalue:pg_query.CreateSubscriptionStmt.conninfo) +} +inline void CreateSubscriptionStmt::set_conninfo(const char* value) { + GOOGLE_DCHECK(value != nullptr); + + conninfo_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string(value), GetArena()); + // @@protoc_insertion_point(field_set_char:pg_query.CreateSubscriptionStmt.conninfo) +} +inline void CreateSubscriptionStmt::set_conninfo(const char* value, + size_t size) { + + conninfo_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string( + reinterpret_cast(value), size), GetArena()); + // @@protoc_insertion_point(field_set_pointer:pg_query.CreateSubscriptionStmt.conninfo) +} +inline std::string* CreateSubscriptionStmt::_internal_mutable_conninfo() { + + return conninfo_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArena()); +} +inline std::string* CreateSubscriptionStmt::release_conninfo() { + // @@protoc_insertion_point(field_release:pg_query.CreateSubscriptionStmt.conninfo) + return conninfo_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); +} +inline void CreateSubscriptionStmt::set_allocated_conninfo(std::string* conninfo) { + if (conninfo != nullptr) { + + } else { + + } + conninfo_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), conninfo, + GetArena()); + // @@protoc_insertion_point(field_set_allocated:pg_query.CreateSubscriptionStmt.conninfo) +} + +// repeated .pg_query.Node publication = 3 [json_name = "publication"]; +inline int CreateSubscriptionStmt::_internal_publication_size() const { + return publication_.size(); +} +inline int CreateSubscriptionStmt::publication_size() const { + return _internal_publication_size(); +} +inline void CreateSubscriptionStmt::clear_publication() { + publication_.Clear(); +} +inline ::pg_query::Node* CreateSubscriptionStmt::mutable_publication(int index) { + // @@protoc_insertion_point(field_mutable:pg_query.CreateSubscriptionStmt.publication) + return publication_.Mutable(index); +} +inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* +CreateSubscriptionStmt::mutable_publication() { + // @@protoc_insertion_point(field_mutable_list:pg_query.CreateSubscriptionStmt.publication) + return &publication_; +} +inline const ::pg_query::Node& CreateSubscriptionStmt::_internal_publication(int index) const { + return publication_.Get(index); +} +inline const ::pg_query::Node& CreateSubscriptionStmt::publication(int index) const { + // @@protoc_insertion_point(field_get:pg_query.CreateSubscriptionStmt.publication) + return _internal_publication(index); +} +inline ::pg_query::Node* CreateSubscriptionStmt::_internal_add_publication() { + return publication_.Add(); +} +inline ::pg_query::Node* CreateSubscriptionStmt::add_publication() { + // @@protoc_insertion_point(field_add:pg_query.CreateSubscriptionStmt.publication) + return _internal_add_publication(); +} +inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& +CreateSubscriptionStmt::publication() const { + // @@protoc_insertion_point(field_list:pg_query.CreateSubscriptionStmt.publication) + return publication_; +} + +// repeated .pg_query.Node options = 4 [json_name = "options"]; +inline int CreateSubscriptionStmt::_internal_options_size() const { + return options_.size(); +} +inline int CreateSubscriptionStmt::options_size() const { + return _internal_options_size(); +} +inline void CreateSubscriptionStmt::clear_options() { + options_.Clear(); +} +inline ::pg_query::Node* CreateSubscriptionStmt::mutable_options(int index) { + // @@protoc_insertion_point(field_mutable:pg_query.CreateSubscriptionStmt.options) + return options_.Mutable(index); +} +inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* +CreateSubscriptionStmt::mutable_options() { + // @@protoc_insertion_point(field_mutable_list:pg_query.CreateSubscriptionStmt.options) + return &options_; +} +inline const ::pg_query::Node& CreateSubscriptionStmt::_internal_options(int index) const { + return options_.Get(index); +} +inline const ::pg_query::Node& CreateSubscriptionStmt::options(int index) const { + // @@protoc_insertion_point(field_get:pg_query.CreateSubscriptionStmt.options) + return _internal_options(index); +} +inline ::pg_query::Node* CreateSubscriptionStmt::_internal_add_options() { + return options_.Add(); +} +inline ::pg_query::Node* CreateSubscriptionStmt::add_options() { + // @@protoc_insertion_point(field_add:pg_query.CreateSubscriptionStmt.options) + return _internal_add_options(); +} +inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& +CreateSubscriptionStmt::options() const { + // @@protoc_insertion_point(field_list:pg_query.CreateSubscriptionStmt.options) + return options_; +} + +// ------------------------------------------------------------------- + +// AlterSubscriptionStmt + +// .pg_query.AlterSubscriptionType kind = 1 [json_name = "kind"]; +inline void AlterSubscriptionStmt::clear_kind() { + kind_ = 0; +} +inline ::pg_query::AlterSubscriptionType AlterSubscriptionStmt::_internal_kind() const { + return static_cast< ::pg_query::AlterSubscriptionType >(kind_); +} +inline ::pg_query::AlterSubscriptionType AlterSubscriptionStmt::kind() const { + // @@protoc_insertion_point(field_get:pg_query.AlterSubscriptionStmt.kind) + return _internal_kind(); +} +inline void AlterSubscriptionStmt::_internal_set_kind(::pg_query::AlterSubscriptionType value) { + + kind_ = value; +} +inline void AlterSubscriptionStmt::set_kind(::pg_query::AlterSubscriptionType value) { + _internal_set_kind(value); + // @@protoc_insertion_point(field_set:pg_query.AlterSubscriptionStmt.kind) +} + +// string subname = 2 [json_name = "subname"]; +inline void AlterSubscriptionStmt::clear_subname() { + subname_.ClearToEmpty(); +} +inline const std::string& AlterSubscriptionStmt::subname() const { + // @@protoc_insertion_point(field_get:pg_query.AlterSubscriptionStmt.subname) + return _internal_subname(); +} +inline void AlterSubscriptionStmt::set_subname(const std::string& value) { + _internal_set_subname(value); + // @@protoc_insertion_point(field_set:pg_query.AlterSubscriptionStmt.subname) +} +inline std::string* AlterSubscriptionStmt::mutable_subname() { + // @@protoc_insertion_point(field_mutable:pg_query.AlterSubscriptionStmt.subname) + return _internal_mutable_subname(); +} +inline const std::string& AlterSubscriptionStmt::_internal_subname() const { + return subname_.Get(); +} +inline void AlterSubscriptionStmt::_internal_set_subname(const std::string& value) { + + subname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArena()); +} +inline void AlterSubscriptionStmt::set_subname(std::string&& value) { + + subname_.Set( + ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::move(value), GetArena()); + // @@protoc_insertion_point(field_set_rvalue:pg_query.AlterSubscriptionStmt.subname) +} +inline void AlterSubscriptionStmt::set_subname(const char* value) { + GOOGLE_DCHECK(value != nullptr); + + subname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string(value), GetArena()); + // @@protoc_insertion_point(field_set_char:pg_query.AlterSubscriptionStmt.subname) +} +inline void AlterSubscriptionStmt::set_subname(const char* value, + size_t size) { + + subname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string( + reinterpret_cast(value), size), GetArena()); + // @@protoc_insertion_point(field_set_pointer:pg_query.AlterSubscriptionStmt.subname) +} +inline std::string* AlterSubscriptionStmt::_internal_mutable_subname() { + + return subname_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArena()); +} +inline std::string* AlterSubscriptionStmt::release_subname() { + // @@protoc_insertion_point(field_release:pg_query.AlterSubscriptionStmt.subname) + return subname_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); +} +inline void AlterSubscriptionStmt::set_allocated_subname(std::string* subname) { + if (subname != nullptr) { + + } else { + + } + subname_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), subname, + GetArena()); + // @@protoc_insertion_point(field_set_allocated:pg_query.AlterSubscriptionStmt.subname) +} + +// string conninfo = 3 [json_name = "conninfo"]; +inline void AlterSubscriptionStmt::clear_conninfo() { + conninfo_.ClearToEmpty(); +} +inline const std::string& AlterSubscriptionStmt::conninfo() const { + // @@protoc_insertion_point(field_get:pg_query.AlterSubscriptionStmt.conninfo) + return _internal_conninfo(); +} +inline void AlterSubscriptionStmt::set_conninfo(const std::string& value) { + _internal_set_conninfo(value); + // @@protoc_insertion_point(field_set:pg_query.AlterSubscriptionStmt.conninfo) +} +inline std::string* AlterSubscriptionStmt::mutable_conninfo() { + // @@protoc_insertion_point(field_mutable:pg_query.AlterSubscriptionStmt.conninfo) + return _internal_mutable_conninfo(); +} +inline const std::string& AlterSubscriptionStmt::_internal_conninfo() const { + return conninfo_.Get(); +} +inline void AlterSubscriptionStmt::_internal_set_conninfo(const std::string& value) { + + conninfo_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArena()); +} +inline void AlterSubscriptionStmt::set_conninfo(std::string&& value) { + + conninfo_.Set( + ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::move(value), GetArena()); + // @@protoc_insertion_point(field_set_rvalue:pg_query.AlterSubscriptionStmt.conninfo) +} +inline void AlterSubscriptionStmt::set_conninfo(const char* value) { + GOOGLE_DCHECK(value != nullptr); + + conninfo_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string(value), GetArena()); + // @@protoc_insertion_point(field_set_char:pg_query.AlterSubscriptionStmt.conninfo) +} +inline void AlterSubscriptionStmt::set_conninfo(const char* value, + size_t size) { + + conninfo_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string( + reinterpret_cast(value), size), GetArena()); + // @@protoc_insertion_point(field_set_pointer:pg_query.AlterSubscriptionStmt.conninfo) +} +inline std::string* AlterSubscriptionStmt::_internal_mutable_conninfo() { + + return conninfo_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArena()); +} +inline std::string* AlterSubscriptionStmt::release_conninfo() { + // @@protoc_insertion_point(field_release:pg_query.AlterSubscriptionStmt.conninfo) + return conninfo_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); +} +inline void AlterSubscriptionStmt::set_allocated_conninfo(std::string* conninfo) { + if (conninfo != nullptr) { + + } else { + + } + conninfo_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), conninfo, + GetArena()); + // @@protoc_insertion_point(field_set_allocated:pg_query.AlterSubscriptionStmt.conninfo) +} + +// repeated .pg_query.Node publication = 4 [json_name = "publication"]; +inline int AlterSubscriptionStmt::_internal_publication_size() const { + return publication_.size(); +} +inline int AlterSubscriptionStmt::publication_size() const { + return _internal_publication_size(); +} +inline void AlterSubscriptionStmt::clear_publication() { + publication_.Clear(); +} +inline ::pg_query::Node* AlterSubscriptionStmt::mutable_publication(int index) { + // @@protoc_insertion_point(field_mutable:pg_query.AlterSubscriptionStmt.publication) + return publication_.Mutable(index); +} +inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* +AlterSubscriptionStmt::mutable_publication() { + // @@protoc_insertion_point(field_mutable_list:pg_query.AlterSubscriptionStmt.publication) + return &publication_; +} +inline const ::pg_query::Node& AlterSubscriptionStmt::_internal_publication(int index) const { + return publication_.Get(index); +} +inline const ::pg_query::Node& AlterSubscriptionStmt::publication(int index) const { + // @@protoc_insertion_point(field_get:pg_query.AlterSubscriptionStmt.publication) + return _internal_publication(index); +} +inline ::pg_query::Node* AlterSubscriptionStmt::_internal_add_publication() { + return publication_.Add(); +} +inline ::pg_query::Node* AlterSubscriptionStmt::add_publication() { + // @@protoc_insertion_point(field_add:pg_query.AlterSubscriptionStmt.publication) + return _internal_add_publication(); +} +inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& +AlterSubscriptionStmt::publication() const { + // @@protoc_insertion_point(field_list:pg_query.AlterSubscriptionStmt.publication) + return publication_; +} + +// repeated .pg_query.Node options = 5 [json_name = "options"]; +inline int AlterSubscriptionStmt::_internal_options_size() const { + return options_.size(); +} +inline int AlterSubscriptionStmt::options_size() const { + return _internal_options_size(); +} +inline void AlterSubscriptionStmt::clear_options() { + options_.Clear(); +} +inline ::pg_query::Node* AlterSubscriptionStmt::mutable_options(int index) { + // @@protoc_insertion_point(field_mutable:pg_query.AlterSubscriptionStmt.options) + return options_.Mutable(index); +} +inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* +AlterSubscriptionStmt::mutable_options() { + // @@protoc_insertion_point(field_mutable_list:pg_query.AlterSubscriptionStmt.options) + return &options_; +} +inline const ::pg_query::Node& AlterSubscriptionStmt::_internal_options(int index) const { + return options_.Get(index); +} +inline const ::pg_query::Node& AlterSubscriptionStmt::options(int index) const { + // @@protoc_insertion_point(field_get:pg_query.AlterSubscriptionStmt.options) + return _internal_options(index); +} +inline ::pg_query::Node* AlterSubscriptionStmt::_internal_add_options() { + return options_.Add(); +} +inline ::pg_query::Node* AlterSubscriptionStmt::add_options() { + // @@protoc_insertion_point(field_add:pg_query.AlterSubscriptionStmt.options) + return _internal_add_options(); +} +inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& +AlterSubscriptionStmt::options() const { + // @@protoc_insertion_point(field_list:pg_query.AlterSubscriptionStmt.options) + return options_; +} + +// ------------------------------------------------------------------- + +// DropSubscriptionStmt + +// string subname = 1 [json_name = "subname"]; +inline void DropSubscriptionStmt::clear_subname() { + subname_.ClearToEmpty(); +} +inline const std::string& DropSubscriptionStmt::subname() const { + // @@protoc_insertion_point(field_get:pg_query.DropSubscriptionStmt.subname) + return _internal_subname(); +} +inline void DropSubscriptionStmt::set_subname(const std::string& value) { + _internal_set_subname(value); + // @@protoc_insertion_point(field_set:pg_query.DropSubscriptionStmt.subname) +} +inline std::string* DropSubscriptionStmt::mutable_subname() { + // @@protoc_insertion_point(field_mutable:pg_query.DropSubscriptionStmt.subname) + return _internal_mutable_subname(); +} +inline const std::string& DropSubscriptionStmt::_internal_subname() const { + return subname_.Get(); +} +inline void DropSubscriptionStmt::_internal_set_subname(const std::string& value) { + + subname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArena()); +} +inline void DropSubscriptionStmt::set_subname(std::string&& value) { + + subname_.Set( + ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::move(value), GetArena()); + // @@protoc_insertion_point(field_set_rvalue:pg_query.DropSubscriptionStmt.subname) +} +inline void DropSubscriptionStmt::set_subname(const char* value) { + GOOGLE_DCHECK(value != nullptr); + + subname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string(value), GetArena()); + // @@protoc_insertion_point(field_set_char:pg_query.DropSubscriptionStmt.subname) +} +inline void DropSubscriptionStmt::set_subname(const char* value, + size_t size) { + + subname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string( + reinterpret_cast(value), size), GetArena()); + // @@protoc_insertion_point(field_set_pointer:pg_query.DropSubscriptionStmt.subname) +} +inline std::string* DropSubscriptionStmt::_internal_mutable_subname() { + + return subname_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArena()); +} +inline std::string* DropSubscriptionStmt::release_subname() { + // @@protoc_insertion_point(field_release:pg_query.DropSubscriptionStmt.subname) + return subname_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); +} +inline void DropSubscriptionStmt::set_allocated_subname(std::string* subname) { + if (subname != nullptr) { + + } else { + + } + subname_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), subname, + GetArena()); + // @@protoc_insertion_point(field_set_allocated:pg_query.DropSubscriptionStmt.subname) +} + +// bool missing_ok = 2 [json_name = "missing_ok"]; +inline void DropSubscriptionStmt::clear_missing_ok() { + missing_ok_ = false; +} +inline bool DropSubscriptionStmt::_internal_missing_ok() const { + return missing_ok_; +} +inline bool DropSubscriptionStmt::missing_ok() const { + // @@protoc_insertion_point(field_get:pg_query.DropSubscriptionStmt.missing_ok) + return _internal_missing_ok(); +} +inline void DropSubscriptionStmt::_internal_set_missing_ok(bool value) { + + missing_ok_ = value; +} +inline void DropSubscriptionStmt::set_missing_ok(bool value) { + _internal_set_missing_ok(value); + // @@protoc_insertion_point(field_set:pg_query.DropSubscriptionStmt.missing_ok) +} + +// .pg_query.DropBehavior behavior = 3 [json_name = "behavior"]; +inline void DropSubscriptionStmt::clear_behavior() { + behavior_ = 0; +} +inline ::pg_query::DropBehavior DropSubscriptionStmt::_internal_behavior() const { + return static_cast< ::pg_query::DropBehavior >(behavior_); +} +inline ::pg_query::DropBehavior DropSubscriptionStmt::behavior() const { + // @@protoc_insertion_point(field_get:pg_query.DropSubscriptionStmt.behavior) + return _internal_behavior(); +} +inline void DropSubscriptionStmt::_internal_set_behavior(::pg_query::DropBehavior value) { + + behavior_ = value; +} +inline void DropSubscriptionStmt::set_behavior(::pg_query::DropBehavior value) { + _internal_set_behavior(value); + // @@protoc_insertion_point(field_set:pg_query.DropSubscriptionStmt.behavior) +} + +// ------------------------------------------------------------------- + +// CreateStatsStmt + +// repeated .pg_query.Node defnames = 1 [json_name = "defnames"]; +inline int CreateStatsStmt::_internal_defnames_size() const { + return defnames_.size(); +} +inline int CreateStatsStmt::defnames_size() const { + return _internal_defnames_size(); +} +inline void CreateStatsStmt::clear_defnames() { + defnames_.Clear(); +} +inline ::pg_query::Node* CreateStatsStmt::mutable_defnames(int index) { + // @@protoc_insertion_point(field_mutable:pg_query.CreateStatsStmt.defnames) + return defnames_.Mutable(index); +} +inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* +CreateStatsStmt::mutable_defnames() { + // @@protoc_insertion_point(field_mutable_list:pg_query.CreateStatsStmt.defnames) + return &defnames_; +} +inline const ::pg_query::Node& CreateStatsStmt::_internal_defnames(int index) const { + return defnames_.Get(index); +} +inline const ::pg_query::Node& CreateStatsStmt::defnames(int index) const { + // @@protoc_insertion_point(field_get:pg_query.CreateStatsStmt.defnames) + return _internal_defnames(index); +} +inline ::pg_query::Node* CreateStatsStmt::_internal_add_defnames() { + return defnames_.Add(); +} +inline ::pg_query::Node* CreateStatsStmt::add_defnames() { + // @@protoc_insertion_point(field_add:pg_query.CreateStatsStmt.defnames) + return _internal_add_defnames(); +} +inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& +CreateStatsStmt::defnames() const { + // @@protoc_insertion_point(field_list:pg_query.CreateStatsStmt.defnames) + return defnames_; +} + +// repeated .pg_query.Node stat_types = 2 [json_name = "stat_types"]; +inline int CreateStatsStmt::_internal_stat_types_size() const { + return stat_types_.size(); +} +inline int CreateStatsStmt::stat_types_size() const { + return _internal_stat_types_size(); +} +inline void CreateStatsStmt::clear_stat_types() { + stat_types_.Clear(); +} +inline ::pg_query::Node* CreateStatsStmt::mutable_stat_types(int index) { + // @@protoc_insertion_point(field_mutable:pg_query.CreateStatsStmt.stat_types) + return stat_types_.Mutable(index); +} +inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* +CreateStatsStmt::mutable_stat_types() { + // @@protoc_insertion_point(field_mutable_list:pg_query.CreateStatsStmt.stat_types) + return &stat_types_; +} +inline const ::pg_query::Node& CreateStatsStmt::_internal_stat_types(int index) const { + return stat_types_.Get(index); +} +inline const ::pg_query::Node& CreateStatsStmt::stat_types(int index) const { + // @@protoc_insertion_point(field_get:pg_query.CreateStatsStmt.stat_types) + return _internal_stat_types(index); +} +inline ::pg_query::Node* CreateStatsStmt::_internal_add_stat_types() { + return stat_types_.Add(); +} +inline ::pg_query::Node* CreateStatsStmt::add_stat_types() { + // @@protoc_insertion_point(field_add:pg_query.CreateStatsStmt.stat_types) + return _internal_add_stat_types(); +} +inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& +CreateStatsStmt::stat_types() const { + // @@protoc_insertion_point(field_list:pg_query.CreateStatsStmt.stat_types) + return stat_types_; +} + +// repeated .pg_query.Node exprs = 3 [json_name = "exprs"]; +inline int CreateStatsStmt::_internal_exprs_size() const { + return exprs_.size(); +} +inline int CreateStatsStmt::exprs_size() const { + return _internal_exprs_size(); +} +inline void CreateStatsStmt::clear_exprs() { + exprs_.Clear(); +} +inline ::pg_query::Node* CreateStatsStmt::mutable_exprs(int index) { + // @@protoc_insertion_point(field_mutable:pg_query.CreateStatsStmt.exprs) + return exprs_.Mutable(index); +} +inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* +CreateStatsStmt::mutable_exprs() { + // @@protoc_insertion_point(field_mutable_list:pg_query.CreateStatsStmt.exprs) + return &exprs_; +} +inline const ::pg_query::Node& CreateStatsStmt::_internal_exprs(int index) const { + return exprs_.Get(index); +} +inline const ::pg_query::Node& CreateStatsStmt::exprs(int index) const { + // @@protoc_insertion_point(field_get:pg_query.CreateStatsStmt.exprs) + return _internal_exprs(index); +} +inline ::pg_query::Node* CreateStatsStmt::_internal_add_exprs() { + return exprs_.Add(); +} +inline ::pg_query::Node* CreateStatsStmt::add_exprs() { + // @@protoc_insertion_point(field_add:pg_query.CreateStatsStmt.exprs) + return _internal_add_exprs(); +} +inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& +CreateStatsStmt::exprs() const { + // @@protoc_insertion_point(field_list:pg_query.CreateStatsStmt.exprs) + return exprs_; +} + +// repeated .pg_query.Node relations = 4 [json_name = "relations"]; +inline int CreateStatsStmt::_internal_relations_size() const { + return relations_.size(); +} +inline int CreateStatsStmt::relations_size() const { + return _internal_relations_size(); +} +inline void CreateStatsStmt::clear_relations() { + relations_.Clear(); +} +inline ::pg_query::Node* CreateStatsStmt::mutable_relations(int index) { + // @@protoc_insertion_point(field_mutable:pg_query.CreateStatsStmt.relations) + return relations_.Mutable(index); +} +inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* +CreateStatsStmt::mutable_relations() { + // @@protoc_insertion_point(field_mutable_list:pg_query.CreateStatsStmt.relations) + return &relations_; +} +inline const ::pg_query::Node& CreateStatsStmt::_internal_relations(int index) const { + return relations_.Get(index); +} +inline const ::pg_query::Node& CreateStatsStmt::relations(int index) const { + // @@protoc_insertion_point(field_get:pg_query.CreateStatsStmt.relations) + return _internal_relations(index); +} +inline ::pg_query::Node* CreateStatsStmt::_internal_add_relations() { + return relations_.Add(); +} +inline ::pg_query::Node* CreateStatsStmt::add_relations() { + // @@protoc_insertion_point(field_add:pg_query.CreateStatsStmt.relations) + return _internal_add_relations(); +} +inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& +CreateStatsStmt::relations() const { + // @@protoc_insertion_point(field_list:pg_query.CreateStatsStmt.relations) + return relations_; +} + +// string stxcomment = 5 [json_name = "stxcomment"]; +inline void CreateStatsStmt::clear_stxcomment() { + stxcomment_.ClearToEmpty(); +} +inline const std::string& CreateStatsStmt::stxcomment() const { + // @@protoc_insertion_point(field_get:pg_query.CreateStatsStmt.stxcomment) + return _internal_stxcomment(); +} +inline void CreateStatsStmt::set_stxcomment(const std::string& value) { + _internal_set_stxcomment(value); + // @@protoc_insertion_point(field_set:pg_query.CreateStatsStmt.stxcomment) +} +inline std::string* CreateStatsStmt::mutable_stxcomment() { + // @@protoc_insertion_point(field_mutable:pg_query.CreateStatsStmt.stxcomment) + return _internal_mutable_stxcomment(); +} +inline const std::string& CreateStatsStmt::_internal_stxcomment() const { + return stxcomment_.Get(); +} +inline void CreateStatsStmt::_internal_set_stxcomment(const std::string& value) { + + stxcomment_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArena()); +} +inline void CreateStatsStmt::set_stxcomment(std::string&& value) { + + stxcomment_.Set( + ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::move(value), GetArena()); + // @@protoc_insertion_point(field_set_rvalue:pg_query.CreateStatsStmt.stxcomment) +} +inline void CreateStatsStmt::set_stxcomment(const char* value) { + GOOGLE_DCHECK(value != nullptr); + + stxcomment_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string(value), GetArena()); + // @@protoc_insertion_point(field_set_char:pg_query.CreateStatsStmt.stxcomment) +} +inline void CreateStatsStmt::set_stxcomment(const char* value, + size_t size) { + + stxcomment_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string( + reinterpret_cast(value), size), GetArena()); + // @@protoc_insertion_point(field_set_pointer:pg_query.CreateStatsStmt.stxcomment) +} +inline std::string* CreateStatsStmt::_internal_mutable_stxcomment() { + + return stxcomment_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArena()); +} +inline std::string* CreateStatsStmt::release_stxcomment() { + // @@protoc_insertion_point(field_release:pg_query.CreateStatsStmt.stxcomment) + return stxcomment_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); +} +inline void CreateStatsStmt::set_allocated_stxcomment(std::string* stxcomment) { + if (stxcomment != nullptr) { + + } else { + + } + stxcomment_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), stxcomment, + GetArena()); + // @@protoc_insertion_point(field_set_allocated:pg_query.CreateStatsStmt.stxcomment) +} + +// bool if_not_exists = 6 [json_name = "if_not_exists"]; +inline void CreateStatsStmt::clear_if_not_exists() { + if_not_exists_ = false; +} +inline bool CreateStatsStmt::_internal_if_not_exists() const { + return if_not_exists_; +} +inline bool CreateStatsStmt::if_not_exists() const { + // @@protoc_insertion_point(field_get:pg_query.CreateStatsStmt.if_not_exists) + return _internal_if_not_exists(); +} +inline void CreateStatsStmt::_internal_set_if_not_exists(bool value) { + + if_not_exists_ = value; +} +inline void CreateStatsStmt::set_if_not_exists(bool value) { + _internal_set_if_not_exists(value); + // @@protoc_insertion_point(field_set:pg_query.CreateStatsStmt.if_not_exists) +} + +// ------------------------------------------------------------------- + +// AlterCollationStmt + +// repeated .pg_query.Node collname = 1 [json_name = "collname"]; +inline int AlterCollationStmt::_internal_collname_size() const { + return collname_.size(); +} +inline int AlterCollationStmt::collname_size() const { + return _internal_collname_size(); +} +inline void AlterCollationStmt::clear_collname() { + collname_.Clear(); +} +inline ::pg_query::Node* AlterCollationStmt::mutable_collname(int index) { + // @@protoc_insertion_point(field_mutable:pg_query.AlterCollationStmt.collname) + return collname_.Mutable(index); +} +inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* +AlterCollationStmt::mutable_collname() { + // @@protoc_insertion_point(field_mutable_list:pg_query.AlterCollationStmt.collname) + return &collname_; +} +inline const ::pg_query::Node& AlterCollationStmt::_internal_collname(int index) const { + return collname_.Get(index); +} +inline const ::pg_query::Node& AlterCollationStmt::collname(int index) const { + // @@protoc_insertion_point(field_get:pg_query.AlterCollationStmt.collname) + return _internal_collname(index); +} +inline ::pg_query::Node* AlterCollationStmt::_internal_add_collname() { + return collname_.Add(); +} +inline ::pg_query::Node* AlterCollationStmt::add_collname() { + // @@protoc_insertion_point(field_add:pg_query.AlterCollationStmt.collname) + return _internal_add_collname(); +} +inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& +AlterCollationStmt::collname() const { + // @@protoc_insertion_point(field_list:pg_query.AlterCollationStmt.collname) + return collname_; +} + +// ------------------------------------------------------------------- + +// CallStmt + +// .pg_query.FuncCall funccall = 1 [json_name = "funccall"]; +inline bool CallStmt::_internal_has_funccall() const { + return this != internal_default_instance() && funccall_ != nullptr; +} +inline bool CallStmt::has_funccall() const { + return _internal_has_funccall(); +} +inline void CallStmt::clear_funccall() { + if (GetArena() == nullptr && funccall_ != nullptr) { + delete funccall_; + } + funccall_ = nullptr; +} +inline const ::pg_query::FuncCall& CallStmt::_internal_funccall() const { + const ::pg_query::FuncCall* p = funccall_; + return p != nullptr ? *p : reinterpret_cast( + ::pg_query::_FuncCall_default_instance_); +} +inline const ::pg_query::FuncCall& CallStmt::funccall() const { + // @@protoc_insertion_point(field_get:pg_query.CallStmt.funccall) + return _internal_funccall(); +} +inline void CallStmt::unsafe_arena_set_allocated_funccall( + ::pg_query::FuncCall* funccall) { + if (GetArena() == nullptr) { + delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(funccall_); + } + funccall_ = funccall; + if (funccall) { + + } else { + + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.CallStmt.funccall) +} +inline ::pg_query::FuncCall* CallStmt::release_funccall() { + + ::pg_query::FuncCall* temp = funccall_; + funccall_ = nullptr; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + return temp; +} +inline ::pg_query::FuncCall* CallStmt::unsafe_arena_release_funccall() { + // @@protoc_insertion_point(field_release:pg_query.CallStmt.funccall) + + ::pg_query::FuncCall* temp = funccall_; + funccall_ = nullptr; + return temp; +} +inline ::pg_query::FuncCall* CallStmt::_internal_mutable_funccall() { + + if (funccall_ == nullptr) { + auto* p = CreateMaybeMessage<::pg_query::FuncCall>(GetArena()); + funccall_ = p; + } + return funccall_; +} +inline ::pg_query::FuncCall* CallStmt::mutable_funccall() { + // @@protoc_insertion_point(field_mutable:pg_query.CallStmt.funccall) + return _internal_mutable_funccall(); +} +inline void CallStmt::set_allocated_funccall(::pg_query::FuncCall* funccall) { + ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); + if (message_arena == nullptr) { + delete funccall_; + } + if (funccall) { + ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = + ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(funccall); + if (message_arena != submessage_arena) { + funccall = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( + message_arena, funccall, submessage_arena); + } + + } else { + + } + funccall_ = funccall; + // @@protoc_insertion_point(field_set_allocated:pg_query.CallStmt.funccall) +} + +// .pg_query.FuncExpr funcexpr = 2 [json_name = "funcexpr"]; +inline bool CallStmt::_internal_has_funcexpr() const { + return this != internal_default_instance() && funcexpr_ != nullptr; +} +inline bool CallStmt::has_funcexpr() const { + return _internal_has_funcexpr(); +} +inline void CallStmt::clear_funcexpr() { + if (GetArena() == nullptr && funcexpr_ != nullptr) { + delete funcexpr_; + } + funcexpr_ = nullptr; +} +inline const ::pg_query::FuncExpr& CallStmt::_internal_funcexpr() const { + const ::pg_query::FuncExpr* p = funcexpr_; + return p != nullptr ? *p : reinterpret_cast( + ::pg_query::_FuncExpr_default_instance_); +} +inline const ::pg_query::FuncExpr& CallStmt::funcexpr() const { + // @@protoc_insertion_point(field_get:pg_query.CallStmt.funcexpr) + return _internal_funcexpr(); +} +inline void CallStmt::unsafe_arena_set_allocated_funcexpr( + ::pg_query::FuncExpr* funcexpr) { + if (GetArena() == nullptr) { + delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(funcexpr_); + } + funcexpr_ = funcexpr; + if (funcexpr) { + + } else { + + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.CallStmt.funcexpr) +} +inline ::pg_query::FuncExpr* CallStmt::release_funcexpr() { + + ::pg_query::FuncExpr* temp = funcexpr_; + funcexpr_ = nullptr; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + return temp; +} +inline ::pg_query::FuncExpr* CallStmt::unsafe_arena_release_funcexpr() { + // @@protoc_insertion_point(field_release:pg_query.CallStmt.funcexpr) + + ::pg_query::FuncExpr* temp = funcexpr_; + funcexpr_ = nullptr; + return temp; +} +inline ::pg_query::FuncExpr* CallStmt::_internal_mutable_funcexpr() { + + if (funcexpr_ == nullptr) { + auto* p = CreateMaybeMessage<::pg_query::FuncExpr>(GetArena()); + funcexpr_ = p; + } + return funcexpr_; +} +inline ::pg_query::FuncExpr* CallStmt::mutable_funcexpr() { + // @@protoc_insertion_point(field_mutable:pg_query.CallStmt.funcexpr) + return _internal_mutable_funcexpr(); +} +inline void CallStmt::set_allocated_funcexpr(::pg_query::FuncExpr* funcexpr) { + ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); + if (message_arena == nullptr) { + delete funcexpr_; + } + if (funcexpr) { + ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = + ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(funcexpr); + if (message_arena != submessage_arena) { + funcexpr = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( + message_arena, funcexpr, submessage_arena); + } + + } else { + + } + funcexpr_ = funcexpr; + // @@protoc_insertion_point(field_set_allocated:pg_query.CallStmt.funcexpr) +} + +// ------------------------------------------------------------------- + +// AlterStatsStmt + +// repeated .pg_query.Node defnames = 1 [json_name = "defnames"]; +inline int AlterStatsStmt::_internal_defnames_size() const { + return defnames_.size(); +} +inline int AlterStatsStmt::defnames_size() const { + return _internal_defnames_size(); +} +inline void AlterStatsStmt::clear_defnames() { + defnames_.Clear(); +} +inline ::pg_query::Node* AlterStatsStmt::mutable_defnames(int index) { + // @@protoc_insertion_point(field_mutable:pg_query.AlterStatsStmt.defnames) + return defnames_.Mutable(index); +} +inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* +AlterStatsStmt::mutable_defnames() { + // @@protoc_insertion_point(field_mutable_list:pg_query.AlterStatsStmt.defnames) + return &defnames_; +} +inline const ::pg_query::Node& AlterStatsStmt::_internal_defnames(int index) const { + return defnames_.Get(index); +} +inline const ::pg_query::Node& AlterStatsStmt::defnames(int index) const { + // @@protoc_insertion_point(field_get:pg_query.AlterStatsStmt.defnames) + return _internal_defnames(index); +} +inline ::pg_query::Node* AlterStatsStmt::_internal_add_defnames() { + return defnames_.Add(); +} +inline ::pg_query::Node* AlterStatsStmt::add_defnames() { + // @@protoc_insertion_point(field_add:pg_query.AlterStatsStmt.defnames) + return _internal_add_defnames(); +} +inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& +AlterStatsStmt::defnames() const { + // @@protoc_insertion_point(field_list:pg_query.AlterStatsStmt.defnames) + return defnames_; +} + +// int32 stxstattarget = 2 [json_name = "stxstattarget"]; +inline void AlterStatsStmt::clear_stxstattarget() { + stxstattarget_ = 0; +} +inline ::PROTOBUF_NAMESPACE_ID::int32 AlterStatsStmt::_internal_stxstattarget() const { + return stxstattarget_; +} +inline ::PROTOBUF_NAMESPACE_ID::int32 AlterStatsStmt::stxstattarget() const { + // @@protoc_insertion_point(field_get:pg_query.AlterStatsStmt.stxstattarget) + return _internal_stxstattarget(); +} +inline void AlterStatsStmt::_internal_set_stxstattarget(::PROTOBUF_NAMESPACE_ID::int32 value) { + + stxstattarget_ = value; +} +inline void AlterStatsStmt::set_stxstattarget(::PROTOBUF_NAMESPACE_ID::int32 value) { + _internal_set_stxstattarget(value); + // @@protoc_insertion_point(field_set:pg_query.AlterStatsStmt.stxstattarget) +} + +// bool missing_ok = 3 [json_name = "missing_ok"]; +inline void AlterStatsStmt::clear_missing_ok() { + missing_ok_ = false; +} +inline bool AlterStatsStmt::_internal_missing_ok() const { + return missing_ok_; +} +inline bool AlterStatsStmt::missing_ok() const { + // @@protoc_insertion_point(field_get:pg_query.AlterStatsStmt.missing_ok) + return _internal_missing_ok(); +} +inline void AlterStatsStmt::_internal_set_missing_ok(bool value) { + + missing_ok_ = value; +} +inline void AlterStatsStmt::set_missing_ok(bool value) { + _internal_set_missing_ok(value); + // @@protoc_insertion_point(field_set:pg_query.AlterStatsStmt.missing_ok) +} + +// ------------------------------------------------------------------- + +// A_Expr + +// .pg_query.A_Expr_Kind kind = 1 [json_name = "kind"]; +inline void A_Expr::clear_kind() { + kind_ = 0; +} +inline ::pg_query::A_Expr_Kind A_Expr::_internal_kind() const { + return static_cast< ::pg_query::A_Expr_Kind >(kind_); +} +inline ::pg_query::A_Expr_Kind A_Expr::kind() const { + // @@protoc_insertion_point(field_get:pg_query.A_Expr.kind) + return _internal_kind(); +} +inline void A_Expr::_internal_set_kind(::pg_query::A_Expr_Kind value) { + + kind_ = value; +} +inline void A_Expr::set_kind(::pg_query::A_Expr_Kind value) { + _internal_set_kind(value); + // @@protoc_insertion_point(field_set:pg_query.A_Expr.kind) +} + +// repeated .pg_query.Node name = 2 [json_name = "name"]; +inline int A_Expr::_internal_name_size() const { + return name_.size(); +} +inline int A_Expr::name_size() const { + return _internal_name_size(); +} +inline void A_Expr::clear_name() { + name_.Clear(); +} +inline ::pg_query::Node* A_Expr::mutable_name(int index) { + // @@protoc_insertion_point(field_mutable:pg_query.A_Expr.name) + return name_.Mutable(index); +} +inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* +A_Expr::mutable_name() { + // @@protoc_insertion_point(field_mutable_list:pg_query.A_Expr.name) + return &name_; +} +inline const ::pg_query::Node& A_Expr::_internal_name(int index) const { + return name_.Get(index); +} +inline const ::pg_query::Node& A_Expr::name(int index) const { + // @@protoc_insertion_point(field_get:pg_query.A_Expr.name) + return _internal_name(index); +} +inline ::pg_query::Node* A_Expr::_internal_add_name() { + return name_.Add(); +} +inline ::pg_query::Node* A_Expr::add_name() { + // @@protoc_insertion_point(field_add:pg_query.A_Expr.name) + return _internal_add_name(); +} +inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& +A_Expr::name() const { + // @@protoc_insertion_point(field_list:pg_query.A_Expr.name) + return name_; +} + +// .pg_query.Node lexpr = 3 [json_name = "lexpr"]; +inline bool A_Expr::_internal_has_lexpr() const { + return this != internal_default_instance() && lexpr_ != nullptr; +} +inline bool A_Expr::has_lexpr() const { + return _internal_has_lexpr(); +} +inline void A_Expr::clear_lexpr() { + if (GetArena() == nullptr && lexpr_ != nullptr) { + delete lexpr_; + } + lexpr_ = nullptr; +} +inline const ::pg_query::Node& A_Expr::_internal_lexpr() const { + const ::pg_query::Node* p = lexpr_; + return p != nullptr ? *p : reinterpret_cast( + ::pg_query::_Node_default_instance_); +} +inline const ::pg_query::Node& A_Expr::lexpr() const { + // @@protoc_insertion_point(field_get:pg_query.A_Expr.lexpr) + return _internal_lexpr(); +} +inline void A_Expr::unsafe_arena_set_allocated_lexpr( + ::pg_query::Node* lexpr) { + if (GetArena() == nullptr) { + delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(lexpr_); + } + lexpr_ = lexpr; + if (lexpr) { + + } else { + + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.A_Expr.lexpr) +} +inline ::pg_query::Node* A_Expr::release_lexpr() { + + ::pg_query::Node* temp = lexpr_; + lexpr_ = nullptr; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + return temp; +} +inline ::pg_query::Node* A_Expr::unsafe_arena_release_lexpr() { + // @@protoc_insertion_point(field_release:pg_query.A_Expr.lexpr) + + ::pg_query::Node* temp = lexpr_; + lexpr_ = nullptr; + return temp; +} +inline ::pg_query::Node* A_Expr::_internal_mutable_lexpr() { + + if (lexpr_ == nullptr) { + auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); + lexpr_ = p; + } + return lexpr_; +} +inline ::pg_query::Node* A_Expr::mutable_lexpr() { + // @@protoc_insertion_point(field_mutable:pg_query.A_Expr.lexpr) + return _internal_mutable_lexpr(); +} +inline void A_Expr::set_allocated_lexpr(::pg_query::Node* lexpr) { + ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); + if (message_arena == nullptr) { + delete lexpr_; + } + if (lexpr) { + ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = + ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(lexpr); + if (message_arena != submessage_arena) { + lexpr = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( + message_arena, lexpr, submessage_arena); + } + + } else { + + } + lexpr_ = lexpr; + // @@protoc_insertion_point(field_set_allocated:pg_query.A_Expr.lexpr) +} + +// .pg_query.Node rexpr = 4 [json_name = "rexpr"]; +inline bool A_Expr::_internal_has_rexpr() const { + return this != internal_default_instance() && rexpr_ != nullptr; +} +inline bool A_Expr::has_rexpr() const { + return _internal_has_rexpr(); +} +inline void A_Expr::clear_rexpr() { + if (GetArena() == nullptr && rexpr_ != nullptr) { + delete rexpr_; + } + rexpr_ = nullptr; +} +inline const ::pg_query::Node& A_Expr::_internal_rexpr() const { + const ::pg_query::Node* p = rexpr_; + return p != nullptr ? *p : reinterpret_cast( + ::pg_query::_Node_default_instance_); +} +inline const ::pg_query::Node& A_Expr::rexpr() const { + // @@protoc_insertion_point(field_get:pg_query.A_Expr.rexpr) + return _internal_rexpr(); +} +inline void A_Expr::unsafe_arena_set_allocated_rexpr( + ::pg_query::Node* rexpr) { + if (GetArena() == nullptr) { + delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(rexpr_); + } + rexpr_ = rexpr; + if (rexpr) { + + } else { + + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.A_Expr.rexpr) +} +inline ::pg_query::Node* A_Expr::release_rexpr() { + + ::pg_query::Node* temp = rexpr_; + rexpr_ = nullptr; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + return temp; +} +inline ::pg_query::Node* A_Expr::unsafe_arena_release_rexpr() { + // @@protoc_insertion_point(field_release:pg_query.A_Expr.rexpr) + + ::pg_query::Node* temp = rexpr_; + rexpr_ = nullptr; + return temp; +} +inline ::pg_query::Node* A_Expr::_internal_mutable_rexpr() { + + if (rexpr_ == nullptr) { + auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); + rexpr_ = p; + } + return rexpr_; +} +inline ::pg_query::Node* A_Expr::mutable_rexpr() { + // @@protoc_insertion_point(field_mutable:pg_query.A_Expr.rexpr) + return _internal_mutable_rexpr(); +} +inline void A_Expr::set_allocated_rexpr(::pg_query::Node* rexpr) { + ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); + if (message_arena == nullptr) { + delete rexpr_; + } + if (rexpr) { + ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = + ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(rexpr); + if (message_arena != submessage_arena) { + rexpr = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( + message_arena, rexpr, submessage_arena); + } + + } else { + + } + rexpr_ = rexpr; + // @@protoc_insertion_point(field_set_allocated:pg_query.A_Expr.rexpr) +} + +// int32 location = 5 [json_name = "location"]; +inline void A_Expr::clear_location() { + location_ = 0; +} +inline ::PROTOBUF_NAMESPACE_ID::int32 A_Expr::_internal_location() const { + return location_; +} +inline ::PROTOBUF_NAMESPACE_ID::int32 A_Expr::location() const { + // @@protoc_insertion_point(field_get:pg_query.A_Expr.location) + return _internal_location(); +} +inline void A_Expr::_internal_set_location(::PROTOBUF_NAMESPACE_ID::int32 value) { + + location_ = value; +} +inline void A_Expr::set_location(::PROTOBUF_NAMESPACE_ID::int32 value) { + _internal_set_location(value); + // @@protoc_insertion_point(field_set:pg_query.A_Expr.location) +} + +// ------------------------------------------------------------------- + +// ColumnRef + +// repeated .pg_query.Node fields = 1 [json_name = "fields"]; +inline int ColumnRef::_internal_fields_size() const { + return fields_.size(); +} +inline int ColumnRef::fields_size() const { + return _internal_fields_size(); +} +inline void ColumnRef::clear_fields() { + fields_.Clear(); +} +inline ::pg_query::Node* ColumnRef::mutable_fields(int index) { + // @@protoc_insertion_point(field_mutable:pg_query.ColumnRef.fields) + return fields_.Mutable(index); +} +inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* +ColumnRef::mutable_fields() { + // @@protoc_insertion_point(field_mutable_list:pg_query.ColumnRef.fields) + return &fields_; +} +inline const ::pg_query::Node& ColumnRef::_internal_fields(int index) const { + return fields_.Get(index); +} +inline const ::pg_query::Node& ColumnRef::fields(int index) const { + // @@protoc_insertion_point(field_get:pg_query.ColumnRef.fields) + return _internal_fields(index); +} +inline ::pg_query::Node* ColumnRef::_internal_add_fields() { + return fields_.Add(); +} +inline ::pg_query::Node* ColumnRef::add_fields() { + // @@protoc_insertion_point(field_add:pg_query.ColumnRef.fields) + return _internal_add_fields(); +} +inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& +ColumnRef::fields() const { + // @@protoc_insertion_point(field_list:pg_query.ColumnRef.fields) + return fields_; +} + +// int32 location = 2 [json_name = "location"]; +inline void ColumnRef::clear_location() { + location_ = 0; +} +inline ::PROTOBUF_NAMESPACE_ID::int32 ColumnRef::_internal_location() const { + return location_; +} +inline ::PROTOBUF_NAMESPACE_ID::int32 ColumnRef::location() const { + // @@protoc_insertion_point(field_get:pg_query.ColumnRef.location) + return _internal_location(); +} +inline void ColumnRef::_internal_set_location(::PROTOBUF_NAMESPACE_ID::int32 value) { + + location_ = value; +} +inline void ColumnRef::set_location(::PROTOBUF_NAMESPACE_ID::int32 value) { + _internal_set_location(value); + // @@protoc_insertion_point(field_set:pg_query.ColumnRef.location) +} + +// ------------------------------------------------------------------- + +// ParamRef + +// int32 number = 1 [json_name = "number"]; +inline void ParamRef::clear_number() { + number_ = 0; +} +inline ::PROTOBUF_NAMESPACE_ID::int32 ParamRef::_internal_number() const { + return number_; +} +inline ::PROTOBUF_NAMESPACE_ID::int32 ParamRef::number() const { + // @@protoc_insertion_point(field_get:pg_query.ParamRef.number) + return _internal_number(); +} +inline void ParamRef::_internal_set_number(::PROTOBUF_NAMESPACE_ID::int32 value) { + + number_ = value; +} +inline void ParamRef::set_number(::PROTOBUF_NAMESPACE_ID::int32 value) { + _internal_set_number(value); + // @@protoc_insertion_point(field_set:pg_query.ParamRef.number) +} + +// int32 location = 2 [json_name = "location"]; +inline void ParamRef::clear_location() { + location_ = 0; +} +inline ::PROTOBUF_NAMESPACE_ID::int32 ParamRef::_internal_location() const { + return location_; +} +inline ::PROTOBUF_NAMESPACE_ID::int32 ParamRef::location() const { + // @@protoc_insertion_point(field_get:pg_query.ParamRef.location) + return _internal_location(); +} +inline void ParamRef::_internal_set_location(::PROTOBUF_NAMESPACE_ID::int32 value) { + + location_ = value; +} +inline void ParamRef::set_location(::PROTOBUF_NAMESPACE_ID::int32 value) { + _internal_set_location(value); + // @@protoc_insertion_point(field_set:pg_query.ParamRef.location) +} + +// ------------------------------------------------------------------- + +// A_Const + +// .pg_query.Node val = 1 [json_name = "val"]; +inline bool A_Const::_internal_has_val() const { + return this != internal_default_instance() && val_ != nullptr; +} +inline bool A_Const::has_val() const { + return _internal_has_val(); +} +inline void A_Const::clear_val() { + if (GetArena() == nullptr && val_ != nullptr) { + delete val_; + } + val_ = nullptr; +} +inline const ::pg_query::Node& A_Const::_internal_val() const { + const ::pg_query::Node* p = val_; + return p != nullptr ? *p : reinterpret_cast( + ::pg_query::_Node_default_instance_); +} +inline const ::pg_query::Node& A_Const::val() const { + // @@protoc_insertion_point(field_get:pg_query.A_Const.val) + return _internal_val(); +} +inline void A_Const::unsafe_arena_set_allocated_val( + ::pg_query::Node* val) { + if (GetArena() == nullptr) { + delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(val_); + } + val_ = val; + if (val) { + + } else { + + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.A_Const.val) +} +inline ::pg_query::Node* A_Const::release_val() { + + ::pg_query::Node* temp = val_; + val_ = nullptr; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + return temp; +} +inline ::pg_query::Node* A_Const::unsafe_arena_release_val() { + // @@protoc_insertion_point(field_release:pg_query.A_Const.val) + + ::pg_query::Node* temp = val_; + val_ = nullptr; + return temp; +} +inline ::pg_query::Node* A_Const::_internal_mutable_val() { + + if (val_ == nullptr) { + auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); + val_ = p; + } + return val_; +} +inline ::pg_query::Node* A_Const::mutable_val() { + // @@protoc_insertion_point(field_mutable:pg_query.A_Const.val) + return _internal_mutable_val(); +} +inline void A_Const::set_allocated_val(::pg_query::Node* val) { + ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); + if (message_arena == nullptr) { + delete val_; + } + if (val) { + ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = + ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(val); + if (message_arena != submessage_arena) { + val = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( + message_arena, val, submessage_arena); + } + + } else { + + } + val_ = val; + // @@protoc_insertion_point(field_set_allocated:pg_query.A_Const.val) +} + +// int32 location = 2 [json_name = "location"]; +inline void A_Const::clear_location() { + location_ = 0; +} +inline ::PROTOBUF_NAMESPACE_ID::int32 A_Const::_internal_location() const { + return location_; +} +inline ::PROTOBUF_NAMESPACE_ID::int32 A_Const::location() const { + // @@protoc_insertion_point(field_get:pg_query.A_Const.location) + return _internal_location(); +} +inline void A_Const::_internal_set_location(::PROTOBUF_NAMESPACE_ID::int32 value) { + + location_ = value; +} +inline void A_Const::set_location(::PROTOBUF_NAMESPACE_ID::int32 value) { + _internal_set_location(value); + // @@protoc_insertion_point(field_set:pg_query.A_Const.location) +} + +// ------------------------------------------------------------------- + +// FuncCall + +// repeated .pg_query.Node funcname = 1 [json_name = "funcname"]; +inline int FuncCall::_internal_funcname_size() const { + return funcname_.size(); +} +inline int FuncCall::funcname_size() const { + return _internal_funcname_size(); +} +inline void FuncCall::clear_funcname() { + funcname_.Clear(); +} +inline ::pg_query::Node* FuncCall::mutable_funcname(int index) { + // @@protoc_insertion_point(field_mutable:pg_query.FuncCall.funcname) + return funcname_.Mutable(index); +} +inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* +FuncCall::mutable_funcname() { + // @@protoc_insertion_point(field_mutable_list:pg_query.FuncCall.funcname) + return &funcname_; +} +inline const ::pg_query::Node& FuncCall::_internal_funcname(int index) const { + return funcname_.Get(index); +} +inline const ::pg_query::Node& FuncCall::funcname(int index) const { + // @@protoc_insertion_point(field_get:pg_query.FuncCall.funcname) + return _internal_funcname(index); +} +inline ::pg_query::Node* FuncCall::_internal_add_funcname() { + return funcname_.Add(); +} +inline ::pg_query::Node* FuncCall::add_funcname() { + // @@protoc_insertion_point(field_add:pg_query.FuncCall.funcname) + return _internal_add_funcname(); +} +inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& +FuncCall::funcname() const { + // @@protoc_insertion_point(field_list:pg_query.FuncCall.funcname) + return funcname_; +} + +// repeated .pg_query.Node args = 2 [json_name = "args"]; +inline int FuncCall::_internal_args_size() const { + return args_.size(); +} +inline int FuncCall::args_size() const { + return _internal_args_size(); +} +inline void FuncCall::clear_args() { + args_.Clear(); +} +inline ::pg_query::Node* FuncCall::mutable_args(int index) { + // @@protoc_insertion_point(field_mutable:pg_query.FuncCall.args) + return args_.Mutable(index); +} +inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* +FuncCall::mutable_args() { + // @@protoc_insertion_point(field_mutable_list:pg_query.FuncCall.args) + return &args_; +} +inline const ::pg_query::Node& FuncCall::_internal_args(int index) const { + return args_.Get(index); +} +inline const ::pg_query::Node& FuncCall::args(int index) const { + // @@protoc_insertion_point(field_get:pg_query.FuncCall.args) + return _internal_args(index); +} +inline ::pg_query::Node* FuncCall::_internal_add_args() { + return args_.Add(); +} +inline ::pg_query::Node* FuncCall::add_args() { + // @@protoc_insertion_point(field_add:pg_query.FuncCall.args) + return _internal_add_args(); +} +inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& +FuncCall::args() const { + // @@protoc_insertion_point(field_list:pg_query.FuncCall.args) + return args_; +} + +// repeated .pg_query.Node agg_order = 3 [json_name = "agg_order"]; +inline int FuncCall::_internal_agg_order_size() const { + return agg_order_.size(); +} +inline int FuncCall::agg_order_size() const { + return _internal_agg_order_size(); +} +inline void FuncCall::clear_agg_order() { + agg_order_.Clear(); +} +inline ::pg_query::Node* FuncCall::mutable_agg_order(int index) { + // @@protoc_insertion_point(field_mutable:pg_query.FuncCall.agg_order) + return agg_order_.Mutable(index); +} +inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* +FuncCall::mutable_agg_order() { + // @@protoc_insertion_point(field_mutable_list:pg_query.FuncCall.agg_order) + return &agg_order_; +} +inline const ::pg_query::Node& FuncCall::_internal_agg_order(int index) const { + return agg_order_.Get(index); +} +inline const ::pg_query::Node& FuncCall::agg_order(int index) const { + // @@protoc_insertion_point(field_get:pg_query.FuncCall.agg_order) + return _internal_agg_order(index); +} +inline ::pg_query::Node* FuncCall::_internal_add_agg_order() { + return agg_order_.Add(); +} +inline ::pg_query::Node* FuncCall::add_agg_order() { + // @@protoc_insertion_point(field_add:pg_query.FuncCall.agg_order) + return _internal_add_agg_order(); +} +inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& +FuncCall::agg_order() const { + // @@protoc_insertion_point(field_list:pg_query.FuncCall.agg_order) + return agg_order_; +} + +// .pg_query.Node agg_filter = 4 [json_name = "agg_filter"]; +inline bool FuncCall::_internal_has_agg_filter() const { + return this != internal_default_instance() && agg_filter_ != nullptr; +} +inline bool FuncCall::has_agg_filter() const { + return _internal_has_agg_filter(); +} +inline void FuncCall::clear_agg_filter() { + if (GetArena() == nullptr && agg_filter_ != nullptr) { + delete agg_filter_; + } + agg_filter_ = nullptr; +} +inline const ::pg_query::Node& FuncCall::_internal_agg_filter() const { + const ::pg_query::Node* p = agg_filter_; + return p != nullptr ? *p : reinterpret_cast( + ::pg_query::_Node_default_instance_); +} +inline const ::pg_query::Node& FuncCall::agg_filter() const { + // @@protoc_insertion_point(field_get:pg_query.FuncCall.agg_filter) + return _internal_agg_filter(); +} +inline void FuncCall::unsafe_arena_set_allocated_agg_filter( + ::pg_query::Node* agg_filter) { + if (GetArena() == nullptr) { + delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(agg_filter_); + } + agg_filter_ = agg_filter; + if (agg_filter) { + + } else { + + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.FuncCall.agg_filter) +} +inline ::pg_query::Node* FuncCall::release_agg_filter() { + + ::pg_query::Node* temp = agg_filter_; + agg_filter_ = nullptr; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + return temp; +} +inline ::pg_query::Node* FuncCall::unsafe_arena_release_agg_filter() { + // @@protoc_insertion_point(field_release:pg_query.FuncCall.agg_filter) + + ::pg_query::Node* temp = agg_filter_; + agg_filter_ = nullptr; + return temp; +} +inline ::pg_query::Node* FuncCall::_internal_mutable_agg_filter() { + + if (agg_filter_ == nullptr) { + auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); + agg_filter_ = p; + } + return agg_filter_; +} +inline ::pg_query::Node* FuncCall::mutable_agg_filter() { + // @@protoc_insertion_point(field_mutable:pg_query.FuncCall.agg_filter) + return _internal_mutable_agg_filter(); +} +inline void FuncCall::set_allocated_agg_filter(::pg_query::Node* agg_filter) { + ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); + if (message_arena == nullptr) { + delete agg_filter_; + } + if (agg_filter) { + ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = + ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(agg_filter); + if (message_arena != submessage_arena) { + agg_filter = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( + message_arena, agg_filter, submessage_arena); + } + + } else { + + } + agg_filter_ = agg_filter; + // @@protoc_insertion_point(field_set_allocated:pg_query.FuncCall.agg_filter) +} + +// bool agg_within_group = 5 [json_name = "agg_within_group"]; +inline void FuncCall::clear_agg_within_group() { + agg_within_group_ = false; +} +inline bool FuncCall::_internal_agg_within_group() const { + return agg_within_group_; +} +inline bool FuncCall::agg_within_group() const { + // @@protoc_insertion_point(field_get:pg_query.FuncCall.agg_within_group) + return _internal_agg_within_group(); +} +inline void FuncCall::_internal_set_agg_within_group(bool value) { + + agg_within_group_ = value; +} +inline void FuncCall::set_agg_within_group(bool value) { + _internal_set_agg_within_group(value); + // @@protoc_insertion_point(field_set:pg_query.FuncCall.agg_within_group) +} + +// bool agg_star = 6 [json_name = "agg_star"]; +inline void FuncCall::clear_agg_star() { + agg_star_ = false; +} +inline bool FuncCall::_internal_agg_star() const { + return agg_star_; +} +inline bool FuncCall::agg_star() const { + // @@protoc_insertion_point(field_get:pg_query.FuncCall.agg_star) + return _internal_agg_star(); +} +inline void FuncCall::_internal_set_agg_star(bool value) { + + agg_star_ = value; +} +inline void FuncCall::set_agg_star(bool value) { + _internal_set_agg_star(value); + // @@protoc_insertion_point(field_set:pg_query.FuncCall.agg_star) +} + +// bool agg_distinct = 7 [json_name = "agg_distinct"]; +inline void FuncCall::clear_agg_distinct() { + agg_distinct_ = false; +} +inline bool FuncCall::_internal_agg_distinct() const { + return agg_distinct_; +} +inline bool FuncCall::agg_distinct() const { + // @@protoc_insertion_point(field_get:pg_query.FuncCall.agg_distinct) + return _internal_agg_distinct(); +} +inline void FuncCall::_internal_set_agg_distinct(bool value) { + + agg_distinct_ = value; +} +inline void FuncCall::set_agg_distinct(bool value) { + _internal_set_agg_distinct(value); + // @@protoc_insertion_point(field_set:pg_query.FuncCall.agg_distinct) +} + +// bool func_variadic = 8 [json_name = "func_variadic"]; +inline void FuncCall::clear_func_variadic() { + func_variadic_ = false; +} +inline bool FuncCall::_internal_func_variadic() const { + return func_variadic_; +} +inline bool FuncCall::func_variadic() const { + // @@protoc_insertion_point(field_get:pg_query.FuncCall.func_variadic) + return _internal_func_variadic(); +} +inline void FuncCall::_internal_set_func_variadic(bool value) { + + func_variadic_ = value; +} +inline void FuncCall::set_func_variadic(bool value) { + _internal_set_func_variadic(value); + // @@protoc_insertion_point(field_set:pg_query.FuncCall.func_variadic) +} + +// .pg_query.WindowDef over = 9 [json_name = "over"]; +inline bool FuncCall::_internal_has_over() const { + return this != internal_default_instance() && over_ != nullptr; +} +inline bool FuncCall::has_over() const { + return _internal_has_over(); +} +inline void FuncCall::clear_over() { + if (GetArena() == nullptr && over_ != nullptr) { + delete over_; + } + over_ = nullptr; +} +inline const ::pg_query::WindowDef& FuncCall::_internal_over() const { + const ::pg_query::WindowDef* p = over_; + return p != nullptr ? *p : reinterpret_cast( + ::pg_query::_WindowDef_default_instance_); +} +inline const ::pg_query::WindowDef& FuncCall::over() const { + // @@protoc_insertion_point(field_get:pg_query.FuncCall.over) + return _internal_over(); +} +inline void FuncCall::unsafe_arena_set_allocated_over( + ::pg_query::WindowDef* over) { + if (GetArena() == nullptr) { + delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(over_); + } + over_ = over; + if (over) { + + } else { + + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.FuncCall.over) +} +inline ::pg_query::WindowDef* FuncCall::release_over() { + + ::pg_query::WindowDef* temp = over_; + over_ = nullptr; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + return temp; +} +inline ::pg_query::WindowDef* FuncCall::unsafe_arena_release_over() { + // @@protoc_insertion_point(field_release:pg_query.FuncCall.over) + + ::pg_query::WindowDef* temp = over_; + over_ = nullptr; + return temp; +} +inline ::pg_query::WindowDef* FuncCall::_internal_mutable_over() { + + if (over_ == nullptr) { + auto* p = CreateMaybeMessage<::pg_query::WindowDef>(GetArena()); + over_ = p; + } + return over_; +} +inline ::pg_query::WindowDef* FuncCall::mutable_over() { + // @@protoc_insertion_point(field_mutable:pg_query.FuncCall.over) + return _internal_mutable_over(); +} +inline void FuncCall::set_allocated_over(::pg_query::WindowDef* over) { + ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); + if (message_arena == nullptr) { + delete over_; + } + if (over) { + ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = + ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(over); + if (message_arena != submessage_arena) { + over = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( + message_arena, over, submessage_arena); + } + + } else { + + } + over_ = over; + // @@protoc_insertion_point(field_set_allocated:pg_query.FuncCall.over) +} + +// int32 location = 10 [json_name = "location"]; +inline void FuncCall::clear_location() { + location_ = 0; +} +inline ::PROTOBUF_NAMESPACE_ID::int32 FuncCall::_internal_location() const { + return location_; +} +inline ::PROTOBUF_NAMESPACE_ID::int32 FuncCall::location() const { + // @@protoc_insertion_point(field_get:pg_query.FuncCall.location) + return _internal_location(); +} +inline void FuncCall::_internal_set_location(::PROTOBUF_NAMESPACE_ID::int32 value) { + + location_ = value; +} +inline void FuncCall::set_location(::PROTOBUF_NAMESPACE_ID::int32 value) { + _internal_set_location(value); + // @@protoc_insertion_point(field_set:pg_query.FuncCall.location) +} + +// ------------------------------------------------------------------- + +// A_Star + +// ------------------------------------------------------------------- + +// A_Indices + +// bool is_slice = 1 [json_name = "is_slice"]; +inline void A_Indices::clear_is_slice() { + is_slice_ = false; +} +inline bool A_Indices::_internal_is_slice() const { + return is_slice_; +} +inline bool A_Indices::is_slice() const { + // @@protoc_insertion_point(field_get:pg_query.A_Indices.is_slice) + return _internal_is_slice(); +} +inline void A_Indices::_internal_set_is_slice(bool value) { + + is_slice_ = value; +} +inline void A_Indices::set_is_slice(bool value) { + _internal_set_is_slice(value); + // @@protoc_insertion_point(field_set:pg_query.A_Indices.is_slice) +} + +// .pg_query.Node lidx = 2 [json_name = "lidx"]; +inline bool A_Indices::_internal_has_lidx() const { + return this != internal_default_instance() && lidx_ != nullptr; +} +inline bool A_Indices::has_lidx() const { + return _internal_has_lidx(); +} +inline void A_Indices::clear_lidx() { + if (GetArena() == nullptr && lidx_ != nullptr) { + delete lidx_; + } + lidx_ = nullptr; +} +inline const ::pg_query::Node& A_Indices::_internal_lidx() const { + const ::pg_query::Node* p = lidx_; + return p != nullptr ? *p : reinterpret_cast( + ::pg_query::_Node_default_instance_); +} +inline const ::pg_query::Node& A_Indices::lidx() const { + // @@protoc_insertion_point(field_get:pg_query.A_Indices.lidx) + return _internal_lidx(); +} +inline void A_Indices::unsafe_arena_set_allocated_lidx( + ::pg_query::Node* lidx) { + if (GetArena() == nullptr) { + delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(lidx_); + } + lidx_ = lidx; + if (lidx) { + + } else { + + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.A_Indices.lidx) +} +inline ::pg_query::Node* A_Indices::release_lidx() { + + ::pg_query::Node* temp = lidx_; + lidx_ = nullptr; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + return temp; +} +inline ::pg_query::Node* A_Indices::unsafe_arena_release_lidx() { + // @@protoc_insertion_point(field_release:pg_query.A_Indices.lidx) + + ::pg_query::Node* temp = lidx_; + lidx_ = nullptr; + return temp; +} +inline ::pg_query::Node* A_Indices::_internal_mutable_lidx() { + + if (lidx_ == nullptr) { + auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); + lidx_ = p; + } + return lidx_; +} +inline ::pg_query::Node* A_Indices::mutable_lidx() { + // @@protoc_insertion_point(field_mutable:pg_query.A_Indices.lidx) + return _internal_mutable_lidx(); +} +inline void A_Indices::set_allocated_lidx(::pg_query::Node* lidx) { + ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); + if (message_arena == nullptr) { + delete lidx_; + } + if (lidx) { + ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = + ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(lidx); + if (message_arena != submessage_arena) { + lidx = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( + message_arena, lidx, submessage_arena); + } + + } else { + + } + lidx_ = lidx; + // @@protoc_insertion_point(field_set_allocated:pg_query.A_Indices.lidx) +} + +// .pg_query.Node uidx = 3 [json_name = "uidx"]; +inline bool A_Indices::_internal_has_uidx() const { + return this != internal_default_instance() && uidx_ != nullptr; +} +inline bool A_Indices::has_uidx() const { + return _internal_has_uidx(); +} +inline void A_Indices::clear_uidx() { + if (GetArena() == nullptr && uidx_ != nullptr) { + delete uidx_; + } + uidx_ = nullptr; +} +inline const ::pg_query::Node& A_Indices::_internal_uidx() const { + const ::pg_query::Node* p = uidx_; + return p != nullptr ? *p : reinterpret_cast( + ::pg_query::_Node_default_instance_); +} +inline const ::pg_query::Node& A_Indices::uidx() const { + // @@protoc_insertion_point(field_get:pg_query.A_Indices.uidx) + return _internal_uidx(); +} +inline void A_Indices::unsafe_arena_set_allocated_uidx( + ::pg_query::Node* uidx) { + if (GetArena() == nullptr) { + delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(uidx_); + } + uidx_ = uidx; + if (uidx) { + + } else { + + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.A_Indices.uidx) +} +inline ::pg_query::Node* A_Indices::release_uidx() { + + ::pg_query::Node* temp = uidx_; + uidx_ = nullptr; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + return temp; +} +inline ::pg_query::Node* A_Indices::unsafe_arena_release_uidx() { + // @@protoc_insertion_point(field_release:pg_query.A_Indices.uidx) + + ::pg_query::Node* temp = uidx_; + uidx_ = nullptr; + return temp; +} +inline ::pg_query::Node* A_Indices::_internal_mutable_uidx() { + + if (uidx_ == nullptr) { + auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); + uidx_ = p; + } + return uidx_; +} +inline ::pg_query::Node* A_Indices::mutable_uidx() { + // @@protoc_insertion_point(field_mutable:pg_query.A_Indices.uidx) + return _internal_mutable_uidx(); +} +inline void A_Indices::set_allocated_uidx(::pg_query::Node* uidx) { + ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); + if (message_arena == nullptr) { + delete uidx_; + } + if (uidx) { + ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = + ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(uidx); + if (message_arena != submessage_arena) { + uidx = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( + message_arena, uidx, submessage_arena); + } + + } else { + + } + uidx_ = uidx; + // @@protoc_insertion_point(field_set_allocated:pg_query.A_Indices.uidx) +} + +// ------------------------------------------------------------------- + +// A_Indirection + +// .pg_query.Node arg = 1 [json_name = "arg"]; +inline bool A_Indirection::_internal_has_arg() const { + return this != internal_default_instance() && arg_ != nullptr; +} +inline bool A_Indirection::has_arg() const { + return _internal_has_arg(); +} +inline void A_Indirection::clear_arg() { + if (GetArena() == nullptr && arg_ != nullptr) { + delete arg_; + } + arg_ = nullptr; +} +inline const ::pg_query::Node& A_Indirection::_internal_arg() const { + const ::pg_query::Node* p = arg_; + return p != nullptr ? *p : reinterpret_cast( + ::pg_query::_Node_default_instance_); +} +inline const ::pg_query::Node& A_Indirection::arg() const { + // @@protoc_insertion_point(field_get:pg_query.A_Indirection.arg) + return _internal_arg(); +} +inline void A_Indirection::unsafe_arena_set_allocated_arg( + ::pg_query::Node* arg) { + if (GetArena() == nullptr) { + delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(arg_); + } + arg_ = arg; + if (arg) { + + } else { + + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.A_Indirection.arg) +} +inline ::pg_query::Node* A_Indirection::release_arg() { + + ::pg_query::Node* temp = arg_; + arg_ = nullptr; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + return temp; +} +inline ::pg_query::Node* A_Indirection::unsafe_arena_release_arg() { + // @@protoc_insertion_point(field_release:pg_query.A_Indirection.arg) + + ::pg_query::Node* temp = arg_; + arg_ = nullptr; + return temp; +} +inline ::pg_query::Node* A_Indirection::_internal_mutable_arg() { + + if (arg_ == nullptr) { + auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); + arg_ = p; + } + return arg_; +} +inline ::pg_query::Node* A_Indirection::mutable_arg() { + // @@protoc_insertion_point(field_mutable:pg_query.A_Indirection.arg) + return _internal_mutable_arg(); +} +inline void A_Indirection::set_allocated_arg(::pg_query::Node* arg) { + ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); + if (message_arena == nullptr) { + delete arg_; + } + if (arg) { + ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = + ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(arg); + if (message_arena != submessage_arena) { + arg = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( + message_arena, arg, submessage_arena); + } + + } else { + + } + arg_ = arg; + // @@protoc_insertion_point(field_set_allocated:pg_query.A_Indirection.arg) +} + +// repeated .pg_query.Node indirection = 2 [json_name = "indirection"]; +inline int A_Indirection::_internal_indirection_size() const { + return indirection_.size(); +} +inline int A_Indirection::indirection_size() const { + return _internal_indirection_size(); +} +inline void A_Indirection::clear_indirection() { + indirection_.Clear(); +} +inline ::pg_query::Node* A_Indirection::mutable_indirection(int index) { + // @@protoc_insertion_point(field_mutable:pg_query.A_Indirection.indirection) + return indirection_.Mutable(index); +} +inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* +A_Indirection::mutable_indirection() { + // @@protoc_insertion_point(field_mutable_list:pg_query.A_Indirection.indirection) + return &indirection_; +} +inline const ::pg_query::Node& A_Indirection::_internal_indirection(int index) const { + return indirection_.Get(index); +} +inline const ::pg_query::Node& A_Indirection::indirection(int index) const { + // @@protoc_insertion_point(field_get:pg_query.A_Indirection.indirection) + return _internal_indirection(index); +} +inline ::pg_query::Node* A_Indirection::_internal_add_indirection() { + return indirection_.Add(); +} +inline ::pg_query::Node* A_Indirection::add_indirection() { + // @@protoc_insertion_point(field_add:pg_query.A_Indirection.indirection) + return _internal_add_indirection(); +} +inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& +A_Indirection::indirection() const { + // @@protoc_insertion_point(field_list:pg_query.A_Indirection.indirection) + return indirection_; +} + +// ------------------------------------------------------------------- + +// A_ArrayExpr + +// repeated .pg_query.Node elements = 1 [json_name = "elements"]; +inline int A_ArrayExpr::_internal_elements_size() const { + return elements_.size(); +} +inline int A_ArrayExpr::elements_size() const { + return _internal_elements_size(); +} +inline void A_ArrayExpr::clear_elements() { + elements_.Clear(); +} +inline ::pg_query::Node* A_ArrayExpr::mutable_elements(int index) { + // @@protoc_insertion_point(field_mutable:pg_query.A_ArrayExpr.elements) + return elements_.Mutable(index); +} +inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* +A_ArrayExpr::mutable_elements() { + // @@protoc_insertion_point(field_mutable_list:pg_query.A_ArrayExpr.elements) + return &elements_; +} +inline const ::pg_query::Node& A_ArrayExpr::_internal_elements(int index) const { + return elements_.Get(index); +} +inline const ::pg_query::Node& A_ArrayExpr::elements(int index) const { + // @@protoc_insertion_point(field_get:pg_query.A_ArrayExpr.elements) + return _internal_elements(index); +} +inline ::pg_query::Node* A_ArrayExpr::_internal_add_elements() { + return elements_.Add(); +} +inline ::pg_query::Node* A_ArrayExpr::add_elements() { + // @@protoc_insertion_point(field_add:pg_query.A_ArrayExpr.elements) + return _internal_add_elements(); +} +inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& +A_ArrayExpr::elements() const { + // @@protoc_insertion_point(field_list:pg_query.A_ArrayExpr.elements) + return elements_; +} + +// int32 location = 2 [json_name = "location"]; +inline void A_ArrayExpr::clear_location() { + location_ = 0; +} +inline ::PROTOBUF_NAMESPACE_ID::int32 A_ArrayExpr::_internal_location() const { + return location_; +} +inline ::PROTOBUF_NAMESPACE_ID::int32 A_ArrayExpr::location() const { + // @@protoc_insertion_point(field_get:pg_query.A_ArrayExpr.location) + return _internal_location(); +} +inline void A_ArrayExpr::_internal_set_location(::PROTOBUF_NAMESPACE_ID::int32 value) { + + location_ = value; +} +inline void A_ArrayExpr::set_location(::PROTOBUF_NAMESPACE_ID::int32 value) { + _internal_set_location(value); + // @@protoc_insertion_point(field_set:pg_query.A_ArrayExpr.location) +} + +// ------------------------------------------------------------------- + +// ResTarget + +// string name = 1 [json_name = "name"]; +inline void ResTarget::clear_name() { + name_.ClearToEmpty(); +} +inline const std::string& ResTarget::name() const { + // @@protoc_insertion_point(field_get:pg_query.ResTarget.name) + return _internal_name(); +} +inline void ResTarget::set_name(const std::string& value) { + _internal_set_name(value); + // @@protoc_insertion_point(field_set:pg_query.ResTarget.name) +} +inline std::string* ResTarget::mutable_name() { + // @@protoc_insertion_point(field_mutable:pg_query.ResTarget.name) + return _internal_mutable_name(); +} +inline const std::string& ResTarget::_internal_name() const { + return name_.Get(); +} +inline void ResTarget::_internal_set_name(const std::string& value) { + + name_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArena()); +} +inline void ResTarget::set_name(std::string&& value) { + + name_.Set( + ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::move(value), GetArena()); + // @@protoc_insertion_point(field_set_rvalue:pg_query.ResTarget.name) +} +inline void ResTarget::set_name(const char* value) { + GOOGLE_DCHECK(value != nullptr); + + name_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string(value), GetArena()); + // @@protoc_insertion_point(field_set_char:pg_query.ResTarget.name) +} +inline void ResTarget::set_name(const char* value, + size_t size) { + + name_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string( + reinterpret_cast(value), size), GetArena()); + // @@protoc_insertion_point(field_set_pointer:pg_query.ResTarget.name) +} +inline std::string* ResTarget::_internal_mutable_name() { + + return name_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArena()); +} +inline std::string* ResTarget::release_name() { + // @@protoc_insertion_point(field_release:pg_query.ResTarget.name) + return name_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); +} +inline void ResTarget::set_allocated_name(std::string* name) { + if (name != nullptr) { + + } else { + + } + name_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), name, + GetArena()); + // @@protoc_insertion_point(field_set_allocated:pg_query.ResTarget.name) +} + +// repeated .pg_query.Node indirection = 2 [json_name = "indirection"]; +inline int ResTarget::_internal_indirection_size() const { + return indirection_.size(); +} +inline int ResTarget::indirection_size() const { + return _internal_indirection_size(); +} +inline void ResTarget::clear_indirection() { + indirection_.Clear(); +} +inline ::pg_query::Node* ResTarget::mutable_indirection(int index) { + // @@protoc_insertion_point(field_mutable:pg_query.ResTarget.indirection) + return indirection_.Mutable(index); +} +inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* +ResTarget::mutable_indirection() { + // @@protoc_insertion_point(field_mutable_list:pg_query.ResTarget.indirection) + return &indirection_; +} +inline const ::pg_query::Node& ResTarget::_internal_indirection(int index) const { + return indirection_.Get(index); +} +inline const ::pg_query::Node& ResTarget::indirection(int index) const { + // @@protoc_insertion_point(field_get:pg_query.ResTarget.indirection) + return _internal_indirection(index); +} +inline ::pg_query::Node* ResTarget::_internal_add_indirection() { + return indirection_.Add(); +} +inline ::pg_query::Node* ResTarget::add_indirection() { + // @@protoc_insertion_point(field_add:pg_query.ResTarget.indirection) + return _internal_add_indirection(); +} +inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& +ResTarget::indirection() const { + // @@protoc_insertion_point(field_list:pg_query.ResTarget.indirection) + return indirection_; +} + +// .pg_query.Node val = 3 [json_name = "val"]; +inline bool ResTarget::_internal_has_val() const { + return this != internal_default_instance() && val_ != nullptr; +} +inline bool ResTarget::has_val() const { + return _internal_has_val(); +} +inline void ResTarget::clear_val() { + if (GetArena() == nullptr && val_ != nullptr) { + delete val_; + } + val_ = nullptr; +} +inline const ::pg_query::Node& ResTarget::_internal_val() const { + const ::pg_query::Node* p = val_; + return p != nullptr ? *p : reinterpret_cast( + ::pg_query::_Node_default_instance_); +} +inline const ::pg_query::Node& ResTarget::val() const { + // @@protoc_insertion_point(field_get:pg_query.ResTarget.val) + return _internal_val(); +} +inline void ResTarget::unsafe_arena_set_allocated_val( + ::pg_query::Node* val) { + if (GetArena() == nullptr) { + delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(val_); + } + val_ = val; + if (val) { + + } else { + + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.ResTarget.val) +} +inline ::pg_query::Node* ResTarget::release_val() { + + ::pg_query::Node* temp = val_; + val_ = nullptr; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + return temp; +} +inline ::pg_query::Node* ResTarget::unsafe_arena_release_val() { + // @@protoc_insertion_point(field_release:pg_query.ResTarget.val) + + ::pg_query::Node* temp = val_; + val_ = nullptr; + return temp; +} +inline ::pg_query::Node* ResTarget::_internal_mutable_val() { + + if (val_ == nullptr) { + auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); + val_ = p; + } + return val_; +} +inline ::pg_query::Node* ResTarget::mutable_val() { + // @@protoc_insertion_point(field_mutable:pg_query.ResTarget.val) + return _internal_mutable_val(); +} +inline void ResTarget::set_allocated_val(::pg_query::Node* val) { + ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); + if (message_arena == nullptr) { + delete val_; + } + if (val) { + ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = + ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(val); + if (message_arena != submessage_arena) { + val = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( + message_arena, val, submessage_arena); + } + + } else { + + } + val_ = val; + // @@protoc_insertion_point(field_set_allocated:pg_query.ResTarget.val) +} + +// int32 location = 4 [json_name = "location"]; +inline void ResTarget::clear_location() { + location_ = 0; +} +inline ::PROTOBUF_NAMESPACE_ID::int32 ResTarget::_internal_location() const { + return location_; +} +inline ::PROTOBUF_NAMESPACE_ID::int32 ResTarget::location() const { + // @@protoc_insertion_point(field_get:pg_query.ResTarget.location) + return _internal_location(); +} +inline void ResTarget::_internal_set_location(::PROTOBUF_NAMESPACE_ID::int32 value) { + + location_ = value; +} +inline void ResTarget::set_location(::PROTOBUF_NAMESPACE_ID::int32 value) { + _internal_set_location(value); + // @@protoc_insertion_point(field_set:pg_query.ResTarget.location) +} + +// ------------------------------------------------------------------- + +// MultiAssignRef + +// .pg_query.Node source = 1 [json_name = "source"]; +inline bool MultiAssignRef::_internal_has_source() const { + return this != internal_default_instance() && source_ != nullptr; +} +inline bool MultiAssignRef::has_source() const { + return _internal_has_source(); +} +inline void MultiAssignRef::clear_source() { + if (GetArena() == nullptr && source_ != nullptr) { + delete source_; + } + source_ = nullptr; +} +inline const ::pg_query::Node& MultiAssignRef::_internal_source() const { + const ::pg_query::Node* p = source_; + return p != nullptr ? *p : reinterpret_cast( + ::pg_query::_Node_default_instance_); +} +inline const ::pg_query::Node& MultiAssignRef::source() const { + // @@protoc_insertion_point(field_get:pg_query.MultiAssignRef.source) + return _internal_source(); +} +inline void MultiAssignRef::unsafe_arena_set_allocated_source( + ::pg_query::Node* source) { + if (GetArena() == nullptr) { + delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(source_); + } + source_ = source; + if (source) { + + } else { + + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.MultiAssignRef.source) +} +inline ::pg_query::Node* MultiAssignRef::release_source() { + + ::pg_query::Node* temp = source_; + source_ = nullptr; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + return temp; +} +inline ::pg_query::Node* MultiAssignRef::unsafe_arena_release_source() { + // @@protoc_insertion_point(field_release:pg_query.MultiAssignRef.source) + + ::pg_query::Node* temp = source_; + source_ = nullptr; + return temp; +} +inline ::pg_query::Node* MultiAssignRef::_internal_mutable_source() { + + if (source_ == nullptr) { + auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); + source_ = p; + } + return source_; +} +inline ::pg_query::Node* MultiAssignRef::mutable_source() { + // @@protoc_insertion_point(field_mutable:pg_query.MultiAssignRef.source) + return _internal_mutable_source(); +} +inline void MultiAssignRef::set_allocated_source(::pg_query::Node* source) { + ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); + if (message_arena == nullptr) { + delete source_; + } + if (source) { + ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = + ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(source); + if (message_arena != submessage_arena) { + source = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( + message_arena, source, submessage_arena); + } + + } else { + + } + source_ = source; + // @@protoc_insertion_point(field_set_allocated:pg_query.MultiAssignRef.source) +} + +// int32 colno = 2 [json_name = "colno"]; +inline void MultiAssignRef::clear_colno() { + colno_ = 0; +} +inline ::PROTOBUF_NAMESPACE_ID::int32 MultiAssignRef::_internal_colno() const { + return colno_; +} +inline ::PROTOBUF_NAMESPACE_ID::int32 MultiAssignRef::colno() const { + // @@protoc_insertion_point(field_get:pg_query.MultiAssignRef.colno) + return _internal_colno(); +} +inline void MultiAssignRef::_internal_set_colno(::PROTOBUF_NAMESPACE_ID::int32 value) { + + colno_ = value; +} +inline void MultiAssignRef::set_colno(::PROTOBUF_NAMESPACE_ID::int32 value) { + _internal_set_colno(value); + // @@protoc_insertion_point(field_set:pg_query.MultiAssignRef.colno) +} + +// int32 ncolumns = 3 [json_name = "ncolumns"]; +inline void MultiAssignRef::clear_ncolumns() { + ncolumns_ = 0; +} +inline ::PROTOBUF_NAMESPACE_ID::int32 MultiAssignRef::_internal_ncolumns() const { + return ncolumns_; +} +inline ::PROTOBUF_NAMESPACE_ID::int32 MultiAssignRef::ncolumns() const { + // @@protoc_insertion_point(field_get:pg_query.MultiAssignRef.ncolumns) + return _internal_ncolumns(); +} +inline void MultiAssignRef::_internal_set_ncolumns(::PROTOBUF_NAMESPACE_ID::int32 value) { + + ncolumns_ = value; +} +inline void MultiAssignRef::set_ncolumns(::PROTOBUF_NAMESPACE_ID::int32 value) { + _internal_set_ncolumns(value); + // @@protoc_insertion_point(field_set:pg_query.MultiAssignRef.ncolumns) +} + +// ------------------------------------------------------------------- + +// TypeCast + +// .pg_query.Node arg = 1 [json_name = "arg"]; +inline bool TypeCast::_internal_has_arg() const { + return this != internal_default_instance() && arg_ != nullptr; +} +inline bool TypeCast::has_arg() const { + return _internal_has_arg(); +} +inline void TypeCast::clear_arg() { + if (GetArena() == nullptr && arg_ != nullptr) { + delete arg_; + } + arg_ = nullptr; +} +inline const ::pg_query::Node& TypeCast::_internal_arg() const { + const ::pg_query::Node* p = arg_; + return p != nullptr ? *p : reinterpret_cast( + ::pg_query::_Node_default_instance_); +} +inline const ::pg_query::Node& TypeCast::arg() const { + // @@protoc_insertion_point(field_get:pg_query.TypeCast.arg) + return _internal_arg(); +} +inline void TypeCast::unsafe_arena_set_allocated_arg( + ::pg_query::Node* arg) { + if (GetArena() == nullptr) { + delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(arg_); + } + arg_ = arg; + if (arg) { + + } else { + + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.TypeCast.arg) +} +inline ::pg_query::Node* TypeCast::release_arg() { + + ::pg_query::Node* temp = arg_; + arg_ = nullptr; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + return temp; +} +inline ::pg_query::Node* TypeCast::unsafe_arena_release_arg() { + // @@protoc_insertion_point(field_release:pg_query.TypeCast.arg) + + ::pg_query::Node* temp = arg_; + arg_ = nullptr; + return temp; +} +inline ::pg_query::Node* TypeCast::_internal_mutable_arg() { + + if (arg_ == nullptr) { + auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); + arg_ = p; + } + return arg_; +} +inline ::pg_query::Node* TypeCast::mutable_arg() { + // @@protoc_insertion_point(field_mutable:pg_query.TypeCast.arg) + return _internal_mutable_arg(); +} +inline void TypeCast::set_allocated_arg(::pg_query::Node* arg) { + ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); + if (message_arena == nullptr) { + delete arg_; + } + if (arg) { + ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = + ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(arg); + if (message_arena != submessage_arena) { + arg = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( + message_arena, arg, submessage_arena); + } + + } else { + + } + arg_ = arg; + // @@protoc_insertion_point(field_set_allocated:pg_query.TypeCast.arg) +} + +// .pg_query.TypeName type_name = 2 [json_name = "typeName"]; +inline bool TypeCast::_internal_has_type_name() const { + return this != internal_default_instance() && type_name_ != nullptr; +} +inline bool TypeCast::has_type_name() const { + return _internal_has_type_name(); +} +inline void TypeCast::clear_type_name() { + if (GetArena() == nullptr && type_name_ != nullptr) { + delete type_name_; + } + type_name_ = nullptr; +} +inline const ::pg_query::TypeName& TypeCast::_internal_type_name() const { + const ::pg_query::TypeName* p = type_name_; + return p != nullptr ? *p : reinterpret_cast( + ::pg_query::_TypeName_default_instance_); +} +inline const ::pg_query::TypeName& TypeCast::type_name() const { + // @@protoc_insertion_point(field_get:pg_query.TypeCast.type_name) + return _internal_type_name(); +} +inline void TypeCast::unsafe_arena_set_allocated_type_name( + ::pg_query::TypeName* type_name) { + if (GetArena() == nullptr) { + delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(type_name_); + } + type_name_ = type_name; + if (type_name) { + + } else { + + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.TypeCast.type_name) +} +inline ::pg_query::TypeName* TypeCast::release_type_name() { + + ::pg_query::TypeName* temp = type_name_; + type_name_ = nullptr; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + return temp; +} +inline ::pg_query::TypeName* TypeCast::unsafe_arena_release_type_name() { + // @@protoc_insertion_point(field_release:pg_query.TypeCast.type_name) + + ::pg_query::TypeName* temp = type_name_; + type_name_ = nullptr; + return temp; +} +inline ::pg_query::TypeName* TypeCast::_internal_mutable_type_name() { + + if (type_name_ == nullptr) { + auto* p = CreateMaybeMessage<::pg_query::TypeName>(GetArena()); + type_name_ = p; + } + return type_name_; +} +inline ::pg_query::TypeName* TypeCast::mutable_type_name() { + // @@protoc_insertion_point(field_mutable:pg_query.TypeCast.type_name) + return _internal_mutable_type_name(); +} +inline void TypeCast::set_allocated_type_name(::pg_query::TypeName* type_name) { + ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); + if (message_arena == nullptr) { + delete type_name_; + } + if (type_name) { + ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = + ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(type_name); + if (message_arena != submessage_arena) { + type_name = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( + message_arena, type_name, submessage_arena); + } + + } else { + + } + type_name_ = type_name; + // @@protoc_insertion_point(field_set_allocated:pg_query.TypeCast.type_name) +} + +// int32 location = 3 [json_name = "location"]; +inline void TypeCast::clear_location() { + location_ = 0; +} +inline ::PROTOBUF_NAMESPACE_ID::int32 TypeCast::_internal_location() const { + return location_; +} +inline ::PROTOBUF_NAMESPACE_ID::int32 TypeCast::location() const { + // @@protoc_insertion_point(field_get:pg_query.TypeCast.location) + return _internal_location(); +} +inline void TypeCast::_internal_set_location(::PROTOBUF_NAMESPACE_ID::int32 value) { + + location_ = value; +} +inline void TypeCast::set_location(::PROTOBUF_NAMESPACE_ID::int32 value) { + _internal_set_location(value); + // @@protoc_insertion_point(field_set:pg_query.TypeCast.location) +} + +// ------------------------------------------------------------------- + +// CollateClause + +// .pg_query.Node arg = 1 [json_name = "arg"]; +inline bool CollateClause::_internal_has_arg() const { + return this != internal_default_instance() && arg_ != nullptr; +} +inline bool CollateClause::has_arg() const { + return _internal_has_arg(); +} +inline void CollateClause::clear_arg() { + if (GetArena() == nullptr && arg_ != nullptr) { + delete arg_; + } + arg_ = nullptr; +} +inline const ::pg_query::Node& CollateClause::_internal_arg() const { + const ::pg_query::Node* p = arg_; + return p != nullptr ? *p : reinterpret_cast( + ::pg_query::_Node_default_instance_); +} +inline const ::pg_query::Node& CollateClause::arg() const { + // @@protoc_insertion_point(field_get:pg_query.CollateClause.arg) + return _internal_arg(); +} +inline void CollateClause::unsafe_arena_set_allocated_arg( + ::pg_query::Node* arg) { + if (GetArena() == nullptr) { + delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(arg_); + } + arg_ = arg; + if (arg) { + + } else { + + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.CollateClause.arg) +} +inline ::pg_query::Node* CollateClause::release_arg() { + + ::pg_query::Node* temp = arg_; + arg_ = nullptr; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + return temp; +} +inline ::pg_query::Node* CollateClause::unsafe_arena_release_arg() { + // @@protoc_insertion_point(field_release:pg_query.CollateClause.arg) + + ::pg_query::Node* temp = arg_; + arg_ = nullptr; + return temp; +} +inline ::pg_query::Node* CollateClause::_internal_mutable_arg() { + + if (arg_ == nullptr) { + auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); + arg_ = p; + } + return arg_; +} +inline ::pg_query::Node* CollateClause::mutable_arg() { + // @@protoc_insertion_point(field_mutable:pg_query.CollateClause.arg) + return _internal_mutable_arg(); +} +inline void CollateClause::set_allocated_arg(::pg_query::Node* arg) { + ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); + if (message_arena == nullptr) { + delete arg_; + } + if (arg) { + ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = + ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(arg); + if (message_arena != submessage_arena) { + arg = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( + message_arena, arg, submessage_arena); + } + + } else { + + } + arg_ = arg; + // @@protoc_insertion_point(field_set_allocated:pg_query.CollateClause.arg) +} + +// repeated .pg_query.Node collname = 2 [json_name = "collname"]; +inline int CollateClause::_internal_collname_size() const { + return collname_.size(); +} +inline int CollateClause::collname_size() const { + return _internal_collname_size(); +} +inline void CollateClause::clear_collname() { + collname_.Clear(); +} +inline ::pg_query::Node* CollateClause::mutable_collname(int index) { + // @@protoc_insertion_point(field_mutable:pg_query.CollateClause.collname) + return collname_.Mutable(index); +} +inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* +CollateClause::mutable_collname() { + // @@protoc_insertion_point(field_mutable_list:pg_query.CollateClause.collname) + return &collname_; +} +inline const ::pg_query::Node& CollateClause::_internal_collname(int index) const { + return collname_.Get(index); +} +inline const ::pg_query::Node& CollateClause::collname(int index) const { + // @@protoc_insertion_point(field_get:pg_query.CollateClause.collname) + return _internal_collname(index); +} +inline ::pg_query::Node* CollateClause::_internal_add_collname() { + return collname_.Add(); +} +inline ::pg_query::Node* CollateClause::add_collname() { + // @@protoc_insertion_point(field_add:pg_query.CollateClause.collname) + return _internal_add_collname(); +} +inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& +CollateClause::collname() const { + // @@protoc_insertion_point(field_list:pg_query.CollateClause.collname) + return collname_; +} + +// int32 location = 3 [json_name = "location"]; +inline void CollateClause::clear_location() { + location_ = 0; +} +inline ::PROTOBUF_NAMESPACE_ID::int32 CollateClause::_internal_location() const { + return location_; +} +inline ::PROTOBUF_NAMESPACE_ID::int32 CollateClause::location() const { + // @@protoc_insertion_point(field_get:pg_query.CollateClause.location) + return _internal_location(); +} +inline void CollateClause::_internal_set_location(::PROTOBUF_NAMESPACE_ID::int32 value) { + + location_ = value; +} +inline void CollateClause::set_location(::PROTOBUF_NAMESPACE_ID::int32 value) { + _internal_set_location(value); + // @@protoc_insertion_point(field_set:pg_query.CollateClause.location) +} + +// ------------------------------------------------------------------- + +// SortBy + +// .pg_query.Node node = 1 [json_name = "node"]; +inline bool SortBy::_internal_has_node() const { + return this != internal_default_instance() && node_ != nullptr; +} +inline bool SortBy::has_node() const { + return _internal_has_node(); +} +inline void SortBy::clear_node() { + if (GetArena() == nullptr && node_ != nullptr) { + delete node_; + } + node_ = nullptr; +} +inline const ::pg_query::Node& SortBy::_internal_node() const { + const ::pg_query::Node* p = node_; + return p != nullptr ? *p : reinterpret_cast( + ::pg_query::_Node_default_instance_); +} +inline const ::pg_query::Node& SortBy::node() const { + // @@protoc_insertion_point(field_get:pg_query.SortBy.node) + return _internal_node(); +} +inline void SortBy::unsafe_arena_set_allocated_node( + ::pg_query::Node* node) { + if (GetArena() == nullptr) { + delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(node_); + } + node_ = node; + if (node) { + + } else { + + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.SortBy.node) +} +inline ::pg_query::Node* SortBy::release_node() { + + ::pg_query::Node* temp = node_; + node_ = nullptr; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + return temp; +} +inline ::pg_query::Node* SortBy::unsafe_arena_release_node() { + // @@protoc_insertion_point(field_release:pg_query.SortBy.node) + + ::pg_query::Node* temp = node_; + node_ = nullptr; + return temp; +} +inline ::pg_query::Node* SortBy::_internal_mutable_node() { + + if (node_ == nullptr) { + auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); + node_ = p; + } + return node_; +} +inline ::pg_query::Node* SortBy::mutable_node() { + // @@protoc_insertion_point(field_mutable:pg_query.SortBy.node) + return _internal_mutable_node(); +} +inline void SortBy::set_allocated_node(::pg_query::Node* node) { + ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); + if (message_arena == nullptr) { + delete node_; + } + if (node) { + ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = + ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(node); + if (message_arena != submessage_arena) { + node = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( + message_arena, node, submessage_arena); + } + + } else { + + } + node_ = node; + // @@protoc_insertion_point(field_set_allocated:pg_query.SortBy.node) +} + +// .pg_query.SortByDir sortby_dir = 2 [json_name = "sortby_dir"]; +inline void SortBy::clear_sortby_dir() { + sortby_dir_ = 0; +} +inline ::pg_query::SortByDir SortBy::_internal_sortby_dir() const { + return static_cast< ::pg_query::SortByDir >(sortby_dir_); +} +inline ::pg_query::SortByDir SortBy::sortby_dir() const { + // @@protoc_insertion_point(field_get:pg_query.SortBy.sortby_dir) + return _internal_sortby_dir(); +} +inline void SortBy::_internal_set_sortby_dir(::pg_query::SortByDir value) { + + sortby_dir_ = value; +} +inline void SortBy::set_sortby_dir(::pg_query::SortByDir value) { + _internal_set_sortby_dir(value); + // @@protoc_insertion_point(field_set:pg_query.SortBy.sortby_dir) +} + +// .pg_query.SortByNulls sortby_nulls = 3 [json_name = "sortby_nulls"]; +inline void SortBy::clear_sortby_nulls() { + sortby_nulls_ = 0; +} +inline ::pg_query::SortByNulls SortBy::_internal_sortby_nulls() const { + return static_cast< ::pg_query::SortByNulls >(sortby_nulls_); +} +inline ::pg_query::SortByNulls SortBy::sortby_nulls() const { + // @@protoc_insertion_point(field_get:pg_query.SortBy.sortby_nulls) + return _internal_sortby_nulls(); +} +inline void SortBy::_internal_set_sortby_nulls(::pg_query::SortByNulls value) { + + sortby_nulls_ = value; +} +inline void SortBy::set_sortby_nulls(::pg_query::SortByNulls value) { + _internal_set_sortby_nulls(value); + // @@protoc_insertion_point(field_set:pg_query.SortBy.sortby_nulls) +} + +// repeated .pg_query.Node use_op = 4 [json_name = "useOp"]; +inline int SortBy::_internal_use_op_size() const { + return use_op_.size(); +} +inline int SortBy::use_op_size() const { + return _internal_use_op_size(); +} +inline void SortBy::clear_use_op() { + use_op_.Clear(); +} +inline ::pg_query::Node* SortBy::mutable_use_op(int index) { + // @@protoc_insertion_point(field_mutable:pg_query.SortBy.use_op) + return use_op_.Mutable(index); +} +inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* +SortBy::mutable_use_op() { + // @@protoc_insertion_point(field_mutable_list:pg_query.SortBy.use_op) + return &use_op_; +} +inline const ::pg_query::Node& SortBy::_internal_use_op(int index) const { + return use_op_.Get(index); +} +inline const ::pg_query::Node& SortBy::use_op(int index) const { + // @@protoc_insertion_point(field_get:pg_query.SortBy.use_op) + return _internal_use_op(index); +} +inline ::pg_query::Node* SortBy::_internal_add_use_op() { + return use_op_.Add(); +} +inline ::pg_query::Node* SortBy::add_use_op() { + // @@protoc_insertion_point(field_add:pg_query.SortBy.use_op) + return _internal_add_use_op(); +} +inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& +SortBy::use_op() const { + // @@protoc_insertion_point(field_list:pg_query.SortBy.use_op) + return use_op_; +} + +// int32 location = 5 [json_name = "location"]; +inline void SortBy::clear_location() { + location_ = 0; +} +inline ::PROTOBUF_NAMESPACE_ID::int32 SortBy::_internal_location() const { + return location_; +} +inline ::PROTOBUF_NAMESPACE_ID::int32 SortBy::location() const { + // @@protoc_insertion_point(field_get:pg_query.SortBy.location) + return _internal_location(); +} +inline void SortBy::_internal_set_location(::PROTOBUF_NAMESPACE_ID::int32 value) { + + location_ = value; +} +inline void SortBy::set_location(::PROTOBUF_NAMESPACE_ID::int32 value) { + _internal_set_location(value); + // @@protoc_insertion_point(field_set:pg_query.SortBy.location) +} + +// ------------------------------------------------------------------- + +// WindowDef + +// string name = 1 [json_name = "name"]; +inline void WindowDef::clear_name() { + name_.ClearToEmpty(); +} +inline const std::string& WindowDef::name() const { + // @@protoc_insertion_point(field_get:pg_query.WindowDef.name) + return _internal_name(); +} +inline void WindowDef::set_name(const std::string& value) { + _internal_set_name(value); + // @@protoc_insertion_point(field_set:pg_query.WindowDef.name) +} +inline std::string* WindowDef::mutable_name() { + // @@protoc_insertion_point(field_mutable:pg_query.WindowDef.name) + return _internal_mutable_name(); +} +inline const std::string& WindowDef::_internal_name() const { + return name_.Get(); +} +inline void WindowDef::_internal_set_name(const std::string& value) { + + name_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArena()); +} +inline void WindowDef::set_name(std::string&& value) { + + name_.Set( + ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::move(value), GetArena()); + // @@protoc_insertion_point(field_set_rvalue:pg_query.WindowDef.name) +} +inline void WindowDef::set_name(const char* value) { + GOOGLE_DCHECK(value != nullptr); + + name_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string(value), GetArena()); + // @@protoc_insertion_point(field_set_char:pg_query.WindowDef.name) +} +inline void WindowDef::set_name(const char* value, + size_t size) { + + name_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string( + reinterpret_cast(value), size), GetArena()); + // @@protoc_insertion_point(field_set_pointer:pg_query.WindowDef.name) +} +inline std::string* WindowDef::_internal_mutable_name() { + + return name_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArena()); +} +inline std::string* WindowDef::release_name() { + // @@protoc_insertion_point(field_release:pg_query.WindowDef.name) + return name_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); +} +inline void WindowDef::set_allocated_name(std::string* name) { + if (name != nullptr) { + + } else { + + } + name_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), name, + GetArena()); + // @@protoc_insertion_point(field_set_allocated:pg_query.WindowDef.name) +} + +// string refname = 2 [json_name = "refname"]; +inline void WindowDef::clear_refname() { + refname_.ClearToEmpty(); +} +inline const std::string& WindowDef::refname() const { + // @@protoc_insertion_point(field_get:pg_query.WindowDef.refname) + return _internal_refname(); +} +inline void WindowDef::set_refname(const std::string& value) { + _internal_set_refname(value); + // @@protoc_insertion_point(field_set:pg_query.WindowDef.refname) +} +inline std::string* WindowDef::mutable_refname() { + // @@protoc_insertion_point(field_mutable:pg_query.WindowDef.refname) + return _internal_mutable_refname(); +} +inline const std::string& WindowDef::_internal_refname() const { + return refname_.Get(); +} +inline void WindowDef::_internal_set_refname(const std::string& value) { + + refname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArena()); +} +inline void WindowDef::set_refname(std::string&& value) { + + refname_.Set( + ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::move(value), GetArena()); + // @@protoc_insertion_point(field_set_rvalue:pg_query.WindowDef.refname) +} +inline void WindowDef::set_refname(const char* value) { + GOOGLE_DCHECK(value != nullptr); + + refname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string(value), GetArena()); + // @@protoc_insertion_point(field_set_char:pg_query.WindowDef.refname) +} +inline void WindowDef::set_refname(const char* value, + size_t size) { + + refname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string( + reinterpret_cast(value), size), GetArena()); + // @@protoc_insertion_point(field_set_pointer:pg_query.WindowDef.refname) +} +inline std::string* WindowDef::_internal_mutable_refname() { + + return refname_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArena()); +} +inline std::string* WindowDef::release_refname() { + // @@protoc_insertion_point(field_release:pg_query.WindowDef.refname) + return refname_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); +} +inline void WindowDef::set_allocated_refname(std::string* refname) { + if (refname != nullptr) { + + } else { + + } + refname_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), refname, + GetArena()); + // @@protoc_insertion_point(field_set_allocated:pg_query.WindowDef.refname) +} + +// repeated .pg_query.Node partition_clause = 3 [json_name = "partitionClause"]; +inline int WindowDef::_internal_partition_clause_size() const { + return partition_clause_.size(); +} +inline int WindowDef::partition_clause_size() const { + return _internal_partition_clause_size(); +} +inline void WindowDef::clear_partition_clause() { + partition_clause_.Clear(); +} +inline ::pg_query::Node* WindowDef::mutable_partition_clause(int index) { + // @@protoc_insertion_point(field_mutable:pg_query.WindowDef.partition_clause) + return partition_clause_.Mutable(index); +} +inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* +WindowDef::mutable_partition_clause() { + // @@protoc_insertion_point(field_mutable_list:pg_query.WindowDef.partition_clause) + return &partition_clause_; +} +inline const ::pg_query::Node& WindowDef::_internal_partition_clause(int index) const { + return partition_clause_.Get(index); +} +inline const ::pg_query::Node& WindowDef::partition_clause(int index) const { + // @@protoc_insertion_point(field_get:pg_query.WindowDef.partition_clause) + return _internal_partition_clause(index); +} +inline ::pg_query::Node* WindowDef::_internal_add_partition_clause() { + return partition_clause_.Add(); +} +inline ::pg_query::Node* WindowDef::add_partition_clause() { + // @@protoc_insertion_point(field_add:pg_query.WindowDef.partition_clause) + return _internal_add_partition_clause(); +} +inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& +WindowDef::partition_clause() const { + // @@protoc_insertion_point(field_list:pg_query.WindowDef.partition_clause) + return partition_clause_; +} + +// repeated .pg_query.Node order_clause = 4 [json_name = "orderClause"]; +inline int WindowDef::_internal_order_clause_size() const { + return order_clause_.size(); +} +inline int WindowDef::order_clause_size() const { + return _internal_order_clause_size(); +} +inline void WindowDef::clear_order_clause() { + order_clause_.Clear(); +} +inline ::pg_query::Node* WindowDef::mutable_order_clause(int index) { + // @@protoc_insertion_point(field_mutable:pg_query.WindowDef.order_clause) + return order_clause_.Mutable(index); +} +inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* +WindowDef::mutable_order_clause() { + // @@protoc_insertion_point(field_mutable_list:pg_query.WindowDef.order_clause) + return &order_clause_; +} +inline const ::pg_query::Node& WindowDef::_internal_order_clause(int index) const { + return order_clause_.Get(index); +} +inline const ::pg_query::Node& WindowDef::order_clause(int index) const { + // @@protoc_insertion_point(field_get:pg_query.WindowDef.order_clause) + return _internal_order_clause(index); +} +inline ::pg_query::Node* WindowDef::_internal_add_order_clause() { + return order_clause_.Add(); +} +inline ::pg_query::Node* WindowDef::add_order_clause() { + // @@protoc_insertion_point(field_add:pg_query.WindowDef.order_clause) + return _internal_add_order_clause(); +} +inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& +WindowDef::order_clause() const { + // @@protoc_insertion_point(field_list:pg_query.WindowDef.order_clause) + return order_clause_; +} + +// int32 frame_options = 5 [json_name = "frameOptions"]; +inline void WindowDef::clear_frame_options() { + frame_options_ = 0; +} +inline ::PROTOBUF_NAMESPACE_ID::int32 WindowDef::_internal_frame_options() const { + return frame_options_; +} +inline ::PROTOBUF_NAMESPACE_ID::int32 WindowDef::frame_options() const { + // @@protoc_insertion_point(field_get:pg_query.WindowDef.frame_options) + return _internal_frame_options(); +} +inline void WindowDef::_internal_set_frame_options(::PROTOBUF_NAMESPACE_ID::int32 value) { + + frame_options_ = value; +} +inline void WindowDef::set_frame_options(::PROTOBUF_NAMESPACE_ID::int32 value) { + _internal_set_frame_options(value); + // @@protoc_insertion_point(field_set:pg_query.WindowDef.frame_options) +} + +// .pg_query.Node start_offset = 6 [json_name = "startOffset"]; +inline bool WindowDef::_internal_has_start_offset() const { + return this != internal_default_instance() && start_offset_ != nullptr; +} +inline bool WindowDef::has_start_offset() const { + return _internal_has_start_offset(); +} +inline void WindowDef::clear_start_offset() { + if (GetArena() == nullptr && start_offset_ != nullptr) { + delete start_offset_; + } + start_offset_ = nullptr; +} +inline const ::pg_query::Node& WindowDef::_internal_start_offset() const { + const ::pg_query::Node* p = start_offset_; + return p != nullptr ? *p : reinterpret_cast( + ::pg_query::_Node_default_instance_); +} +inline const ::pg_query::Node& WindowDef::start_offset() const { + // @@protoc_insertion_point(field_get:pg_query.WindowDef.start_offset) + return _internal_start_offset(); +} +inline void WindowDef::unsafe_arena_set_allocated_start_offset( + ::pg_query::Node* start_offset) { + if (GetArena() == nullptr) { + delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(start_offset_); + } + start_offset_ = start_offset; + if (start_offset) { + + } else { + + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.WindowDef.start_offset) +} +inline ::pg_query::Node* WindowDef::release_start_offset() { + + ::pg_query::Node* temp = start_offset_; + start_offset_ = nullptr; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + return temp; +} +inline ::pg_query::Node* WindowDef::unsafe_arena_release_start_offset() { + // @@protoc_insertion_point(field_release:pg_query.WindowDef.start_offset) + + ::pg_query::Node* temp = start_offset_; + start_offset_ = nullptr; + return temp; +} +inline ::pg_query::Node* WindowDef::_internal_mutable_start_offset() { + + if (start_offset_ == nullptr) { + auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); + start_offset_ = p; + } + return start_offset_; +} +inline ::pg_query::Node* WindowDef::mutable_start_offset() { + // @@protoc_insertion_point(field_mutable:pg_query.WindowDef.start_offset) + return _internal_mutable_start_offset(); +} +inline void WindowDef::set_allocated_start_offset(::pg_query::Node* start_offset) { + ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); + if (message_arena == nullptr) { + delete start_offset_; + } + if (start_offset) { + ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = + ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(start_offset); + if (message_arena != submessage_arena) { + start_offset = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( + message_arena, start_offset, submessage_arena); + } + + } else { + + } + start_offset_ = start_offset; + // @@protoc_insertion_point(field_set_allocated:pg_query.WindowDef.start_offset) +} + +// .pg_query.Node end_offset = 7 [json_name = "endOffset"]; +inline bool WindowDef::_internal_has_end_offset() const { + return this != internal_default_instance() && end_offset_ != nullptr; +} +inline bool WindowDef::has_end_offset() const { + return _internal_has_end_offset(); +} +inline void WindowDef::clear_end_offset() { + if (GetArena() == nullptr && end_offset_ != nullptr) { + delete end_offset_; + } + end_offset_ = nullptr; +} +inline const ::pg_query::Node& WindowDef::_internal_end_offset() const { + const ::pg_query::Node* p = end_offset_; + return p != nullptr ? *p : reinterpret_cast( + ::pg_query::_Node_default_instance_); +} +inline const ::pg_query::Node& WindowDef::end_offset() const { + // @@protoc_insertion_point(field_get:pg_query.WindowDef.end_offset) + return _internal_end_offset(); +} +inline void WindowDef::unsafe_arena_set_allocated_end_offset( + ::pg_query::Node* end_offset) { + if (GetArena() == nullptr) { + delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(end_offset_); + } + end_offset_ = end_offset; + if (end_offset) { + + } else { + + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.WindowDef.end_offset) +} +inline ::pg_query::Node* WindowDef::release_end_offset() { + + ::pg_query::Node* temp = end_offset_; + end_offset_ = nullptr; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + return temp; +} +inline ::pg_query::Node* WindowDef::unsafe_arena_release_end_offset() { + // @@protoc_insertion_point(field_release:pg_query.WindowDef.end_offset) + + ::pg_query::Node* temp = end_offset_; + end_offset_ = nullptr; + return temp; +} +inline ::pg_query::Node* WindowDef::_internal_mutable_end_offset() { + + if (end_offset_ == nullptr) { + auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); + end_offset_ = p; + } + return end_offset_; +} +inline ::pg_query::Node* WindowDef::mutable_end_offset() { + // @@protoc_insertion_point(field_mutable:pg_query.WindowDef.end_offset) + return _internal_mutable_end_offset(); +} +inline void WindowDef::set_allocated_end_offset(::pg_query::Node* end_offset) { + ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); + if (message_arena == nullptr) { + delete end_offset_; + } + if (end_offset) { + ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = + ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(end_offset); + if (message_arena != submessage_arena) { + end_offset = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( + message_arena, end_offset, submessage_arena); + } + + } else { + + } + end_offset_ = end_offset; + // @@protoc_insertion_point(field_set_allocated:pg_query.WindowDef.end_offset) +} + +// int32 location = 8 [json_name = "location"]; +inline void WindowDef::clear_location() { + location_ = 0; +} +inline ::PROTOBUF_NAMESPACE_ID::int32 WindowDef::_internal_location() const { + return location_; +} +inline ::PROTOBUF_NAMESPACE_ID::int32 WindowDef::location() const { + // @@protoc_insertion_point(field_get:pg_query.WindowDef.location) + return _internal_location(); +} +inline void WindowDef::_internal_set_location(::PROTOBUF_NAMESPACE_ID::int32 value) { + + location_ = value; +} +inline void WindowDef::set_location(::PROTOBUF_NAMESPACE_ID::int32 value) { + _internal_set_location(value); + // @@protoc_insertion_point(field_set:pg_query.WindowDef.location) +} + +// ------------------------------------------------------------------- + +// RangeSubselect + +// bool lateral = 1 [json_name = "lateral"]; +inline void RangeSubselect::clear_lateral() { + lateral_ = false; +} +inline bool RangeSubselect::_internal_lateral() const { + return lateral_; +} +inline bool RangeSubselect::lateral() const { + // @@protoc_insertion_point(field_get:pg_query.RangeSubselect.lateral) + return _internal_lateral(); +} +inline void RangeSubselect::_internal_set_lateral(bool value) { + + lateral_ = value; +} +inline void RangeSubselect::set_lateral(bool value) { + _internal_set_lateral(value); + // @@protoc_insertion_point(field_set:pg_query.RangeSubselect.lateral) +} + +// .pg_query.Node subquery = 2 [json_name = "subquery"]; +inline bool RangeSubselect::_internal_has_subquery() const { + return this != internal_default_instance() && subquery_ != nullptr; +} +inline bool RangeSubselect::has_subquery() const { + return _internal_has_subquery(); +} +inline void RangeSubselect::clear_subquery() { + if (GetArena() == nullptr && subquery_ != nullptr) { + delete subquery_; + } + subquery_ = nullptr; +} +inline const ::pg_query::Node& RangeSubselect::_internal_subquery() const { + const ::pg_query::Node* p = subquery_; + return p != nullptr ? *p : reinterpret_cast( + ::pg_query::_Node_default_instance_); +} +inline const ::pg_query::Node& RangeSubselect::subquery() const { + // @@protoc_insertion_point(field_get:pg_query.RangeSubselect.subquery) + return _internal_subquery(); +} +inline void RangeSubselect::unsafe_arena_set_allocated_subquery( + ::pg_query::Node* subquery) { + if (GetArena() == nullptr) { + delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(subquery_); + } + subquery_ = subquery; + if (subquery) { + + } else { + + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.RangeSubselect.subquery) +} +inline ::pg_query::Node* RangeSubselect::release_subquery() { + + ::pg_query::Node* temp = subquery_; + subquery_ = nullptr; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + return temp; +} +inline ::pg_query::Node* RangeSubselect::unsafe_arena_release_subquery() { + // @@protoc_insertion_point(field_release:pg_query.RangeSubselect.subquery) + + ::pg_query::Node* temp = subquery_; + subquery_ = nullptr; + return temp; +} +inline ::pg_query::Node* RangeSubselect::_internal_mutable_subquery() { + + if (subquery_ == nullptr) { + auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); + subquery_ = p; + } + return subquery_; +} +inline ::pg_query::Node* RangeSubselect::mutable_subquery() { + // @@protoc_insertion_point(field_mutable:pg_query.RangeSubselect.subquery) + return _internal_mutable_subquery(); +} +inline void RangeSubselect::set_allocated_subquery(::pg_query::Node* subquery) { + ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); + if (message_arena == nullptr) { + delete subquery_; + } + if (subquery) { + ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = + ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(subquery); + if (message_arena != submessage_arena) { + subquery = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( + message_arena, subquery, submessage_arena); + } + + } else { + + } + subquery_ = subquery; + // @@protoc_insertion_point(field_set_allocated:pg_query.RangeSubselect.subquery) +} + +// .pg_query.Alias alias = 3 [json_name = "alias"]; +inline bool RangeSubselect::_internal_has_alias() const { + return this != internal_default_instance() && alias_ != nullptr; +} +inline bool RangeSubselect::has_alias() const { + return _internal_has_alias(); +} +inline void RangeSubselect::clear_alias() { + if (GetArena() == nullptr && alias_ != nullptr) { + delete alias_; + } + alias_ = nullptr; +} +inline const ::pg_query::Alias& RangeSubselect::_internal_alias() const { + const ::pg_query::Alias* p = alias_; + return p != nullptr ? *p : reinterpret_cast( + ::pg_query::_Alias_default_instance_); +} +inline const ::pg_query::Alias& RangeSubselect::alias() const { + // @@protoc_insertion_point(field_get:pg_query.RangeSubselect.alias) + return _internal_alias(); +} +inline void RangeSubselect::unsafe_arena_set_allocated_alias( + ::pg_query::Alias* alias) { + if (GetArena() == nullptr) { + delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(alias_); + } + alias_ = alias; + if (alias) { + + } else { + + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.RangeSubselect.alias) +} +inline ::pg_query::Alias* RangeSubselect::release_alias() { + + ::pg_query::Alias* temp = alias_; + alias_ = nullptr; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + return temp; +} +inline ::pg_query::Alias* RangeSubselect::unsafe_arena_release_alias() { + // @@protoc_insertion_point(field_release:pg_query.RangeSubselect.alias) + + ::pg_query::Alias* temp = alias_; + alias_ = nullptr; + return temp; +} +inline ::pg_query::Alias* RangeSubselect::_internal_mutable_alias() { + + if (alias_ == nullptr) { + auto* p = CreateMaybeMessage<::pg_query::Alias>(GetArena()); + alias_ = p; + } + return alias_; +} +inline ::pg_query::Alias* RangeSubselect::mutable_alias() { + // @@protoc_insertion_point(field_mutable:pg_query.RangeSubselect.alias) + return _internal_mutable_alias(); +} +inline void RangeSubselect::set_allocated_alias(::pg_query::Alias* alias) { + ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); + if (message_arena == nullptr) { + delete alias_; + } + if (alias) { + ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = + ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(alias); + if (message_arena != submessage_arena) { + alias = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( + message_arena, alias, submessage_arena); + } + + } else { + + } + alias_ = alias; + // @@protoc_insertion_point(field_set_allocated:pg_query.RangeSubselect.alias) +} + +// ------------------------------------------------------------------- + +// RangeFunction + +// bool lateral = 1 [json_name = "lateral"]; +inline void RangeFunction::clear_lateral() { + lateral_ = false; +} +inline bool RangeFunction::_internal_lateral() const { + return lateral_; +} +inline bool RangeFunction::lateral() const { + // @@protoc_insertion_point(field_get:pg_query.RangeFunction.lateral) + return _internal_lateral(); +} +inline void RangeFunction::_internal_set_lateral(bool value) { + + lateral_ = value; +} +inline void RangeFunction::set_lateral(bool value) { + _internal_set_lateral(value); + // @@protoc_insertion_point(field_set:pg_query.RangeFunction.lateral) +} + +// bool ordinality = 2 [json_name = "ordinality"]; +inline void RangeFunction::clear_ordinality() { + ordinality_ = false; +} +inline bool RangeFunction::_internal_ordinality() const { + return ordinality_; +} +inline bool RangeFunction::ordinality() const { + // @@protoc_insertion_point(field_get:pg_query.RangeFunction.ordinality) + return _internal_ordinality(); +} +inline void RangeFunction::_internal_set_ordinality(bool value) { + + ordinality_ = value; +} +inline void RangeFunction::set_ordinality(bool value) { + _internal_set_ordinality(value); + // @@protoc_insertion_point(field_set:pg_query.RangeFunction.ordinality) +} + +// bool is_rowsfrom = 3 [json_name = "is_rowsfrom"]; +inline void RangeFunction::clear_is_rowsfrom() { + is_rowsfrom_ = false; +} +inline bool RangeFunction::_internal_is_rowsfrom() const { + return is_rowsfrom_; +} +inline bool RangeFunction::is_rowsfrom() const { + // @@protoc_insertion_point(field_get:pg_query.RangeFunction.is_rowsfrom) + return _internal_is_rowsfrom(); +} +inline void RangeFunction::_internal_set_is_rowsfrom(bool value) { + + is_rowsfrom_ = value; +} +inline void RangeFunction::set_is_rowsfrom(bool value) { + _internal_set_is_rowsfrom(value); + // @@protoc_insertion_point(field_set:pg_query.RangeFunction.is_rowsfrom) +} + +// repeated .pg_query.Node functions = 4 [json_name = "functions"]; +inline int RangeFunction::_internal_functions_size() const { + return functions_.size(); +} +inline int RangeFunction::functions_size() const { + return _internal_functions_size(); +} +inline void RangeFunction::clear_functions() { + functions_.Clear(); +} +inline ::pg_query::Node* RangeFunction::mutable_functions(int index) { + // @@protoc_insertion_point(field_mutable:pg_query.RangeFunction.functions) + return functions_.Mutable(index); +} +inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* +RangeFunction::mutable_functions() { + // @@protoc_insertion_point(field_mutable_list:pg_query.RangeFunction.functions) + return &functions_; +} +inline const ::pg_query::Node& RangeFunction::_internal_functions(int index) const { + return functions_.Get(index); +} +inline const ::pg_query::Node& RangeFunction::functions(int index) const { + // @@protoc_insertion_point(field_get:pg_query.RangeFunction.functions) + return _internal_functions(index); +} +inline ::pg_query::Node* RangeFunction::_internal_add_functions() { + return functions_.Add(); +} +inline ::pg_query::Node* RangeFunction::add_functions() { + // @@protoc_insertion_point(field_add:pg_query.RangeFunction.functions) + return _internal_add_functions(); +} +inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& +RangeFunction::functions() const { + // @@protoc_insertion_point(field_list:pg_query.RangeFunction.functions) + return functions_; +} + +// .pg_query.Alias alias = 5 [json_name = "alias"]; +inline bool RangeFunction::_internal_has_alias() const { + return this != internal_default_instance() && alias_ != nullptr; +} +inline bool RangeFunction::has_alias() const { + return _internal_has_alias(); +} +inline void RangeFunction::clear_alias() { + if (GetArena() == nullptr && alias_ != nullptr) { + delete alias_; + } + alias_ = nullptr; +} +inline const ::pg_query::Alias& RangeFunction::_internal_alias() const { + const ::pg_query::Alias* p = alias_; + return p != nullptr ? *p : reinterpret_cast( + ::pg_query::_Alias_default_instance_); +} +inline const ::pg_query::Alias& RangeFunction::alias() const { + // @@protoc_insertion_point(field_get:pg_query.RangeFunction.alias) + return _internal_alias(); +} +inline void RangeFunction::unsafe_arena_set_allocated_alias( + ::pg_query::Alias* alias) { + if (GetArena() == nullptr) { + delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(alias_); + } + alias_ = alias; + if (alias) { + + } else { + + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.RangeFunction.alias) +} +inline ::pg_query::Alias* RangeFunction::release_alias() { + + ::pg_query::Alias* temp = alias_; + alias_ = nullptr; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + return temp; +} +inline ::pg_query::Alias* RangeFunction::unsafe_arena_release_alias() { + // @@protoc_insertion_point(field_release:pg_query.RangeFunction.alias) + + ::pg_query::Alias* temp = alias_; + alias_ = nullptr; + return temp; +} +inline ::pg_query::Alias* RangeFunction::_internal_mutable_alias() { + + if (alias_ == nullptr) { + auto* p = CreateMaybeMessage<::pg_query::Alias>(GetArena()); + alias_ = p; + } + return alias_; +} +inline ::pg_query::Alias* RangeFunction::mutable_alias() { + // @@protoc_insertion_point(field_mutable:pg_query.RangeFunction.alias) + return _internal_mutable_alias(); +} +inline void RangeFunction::set_allocated_alias(::pg_query::Alias* alias) { + ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); + if (message_arena == nullptr) { + delete alias_; + } + if (alias) { + ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = + ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(alias); + if (message_arena != submessage_arena) { + alias = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( + message_arena, alias, submessage_arena); + } + + } else { + + } + alias_ = alias; + // @@protoc_insertion_point(field_set_allocated:pg_query.RangeFunction.alias) +} + +// repeated .pg_query.Node coldeflist = 6 [json_name = "coldeflist"]; +inline int RangeFunction::_internal_coldeflist_size() const { + return coldeflist_.size(); +} +inline int RangeFunction::coldeflist_size() const { + return _internal_coldeflist_size(); +} +inline void RangeFunction::clear_coldeflist() { + coldeflist_.Clear(); +} +inline ::pg_query::Node* RangeFunction::mutable_coldeflist(int index) { + // @@protoc_insertion_point(field_mutable:pg_query.RangeFunction.coldeflist) + return coldeflist_.Mutable(index); +} +inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* +RangeFunction::mutable_coldeflist() { + // @@protoc_insertion_point(field_mutable_list:pg_query.RangeFunction.coldeflist) + return &coldeflist_; +} +inline const ::pg_query::Node& RangeFunction::_internal_coldeflist(int index) const { + return coldeflist_.Get(index); +} +inline const ::pg_query::Node& RangeFunction::coldeflist(int index) const { + // @@protoc_insertion_point(field_get:pg_query.RangeFunction.coldeflist) + return _internal_coldeflist(index); +} +inline ::pg_query::Node* RangeFunction::_internal_add_coldeflist() { + return coldeflist_.Add(); +} +inline ::pg_query::Node* RangeFunction::add_coldeflist() { + // @@protoc_insertion_point(field_add:pg_query.RangeFunction.coldeflist) + return _internal_add_coldeflist(); +} +inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& +RangeFunction::coldeflist() const { + // @@protoc_insertion_point(field_list:pg_query.RangeFunction.coldeflist) + return coldeflist_; +} + +// ------------------------------------------------------------------- + +// RangeTableSample + +// .pg_query.Node relation = 1 [json_name = "relation"]; +inline bool RangeTableSample::_internal_has_relation() const { + return this != internal_default_instance() && relation_ != nullptr; +} +inline bool RangeTableSample::has_relation() const { + return _internal_has_relation(); +} +inline void RangeTableSample::clear_relation() { + if (GetArena() == nullptr && relation_ != nullptr) { + delete relation_; + } + relation_ = nullptr; +} +inline const ::pg_query::Node& RangeTableSample::_internal_relation() const { + const ::pg_query::Node* p = relation_; + return p != nullptr ? *p : reinterpret_cast( + ::pg_query::_Node_default_instance_); +} +inline const ::pg_query::Node& RangeTableSample::relation() const { + // @@protoc_insertion_point(field_get:pg_query.RangeTableSample.relation) + return _internal_relation(); +} +inline void RangeTableSample::unsafe_arena_set_allocated_relation( + ::pg_query::Node* relation) { + if (GetArena() == nullptr) { + delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(relation_); + } + relation_ = relation; + if (relation) { + + } else { + + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.RangeTableSample.relation) +} +inline ::pg_query::Node* RangeTableSample::release_relation() { + + ::pg_query::Node* temp = relation_; + relation_ = nullptr; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + return temp; +} +inline ::pg_query::Node* RangeTableSample::unsafe_arena_release_relation() { + // @@protoc_insertion_point(field_release:pg_query.RangeTableSample.relation) + + ::pg_query::Node* temp = relation_; + relation_ = nullptr; + return temp; +} +inline ::pg_query::Node* RangeTableSample::_internal_mutable_relation() { + + if (relation_ == nullptr) { + auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); + relation_ = p; + } + return relation_; +} +inline ::pg_query::Node* RangeTableSample::mutable_relation() { + // @@protoc_insertion_point(field_mutable:pg_query.RangeTableSample.relation) + return _internal_mutable_relation(); +} +inline void RangeTableSample::set_allocated_relation(::pg_query::Node* relation) { + ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); + if (message_arena == nullptr) { + delete relation_; + } + if (relation) { + ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = + ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(relation); + if (message_arena != submessage_arena) { + relation = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( + message_arena, relation, submessage_arena); + } + + } else { + + } + relation_ = relation; + // @@protoc_insertion_point(field_set_allocated:pg_query.RangeTableSample.relation) +} + +// repeated .pg_query.Node method = 2 [json_name = "method"]; +inline int RangeTableSample::_internal_method_size() const { + return method_.size(); +} +inline int RangeTableSample::method_size() const { + return _internal_method_size(); +} +inline void RangeTableSample::clear_method() { + method_.Clear(); +} +inline ::pg_query::Node* RangeTableSample::mutable_method(int index) { + // @@protoc_insertion_point(field_mutable:pg_query.RangeTableSample.method) + return method_.Mutable(index); +} +inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* +RangeTableSample::mutable_method() { + // @@protoc_insertion_point(field_mutable_list:pg_query.RangeTableSample.method) + return &method_; +} +inline const ::pg_query::Node& RangeTableSample::_internal_method(int index) const { + return method_.Get(index); +} +inline const ::pg_query::Node& RangeTableSample::method(int index) const { + // @@protoc_insertion_point(field_get:pg_query.RangeTableSample.method) + return _internal_method(index); +} +inline ::pg_query::Node* RangeTableSample::_internal_add_method() { + return method_.Add(); +} +inline ::pg_query::Node* RangeTableSample::add_method() { + // @@protoc_insertion_point(field_add:pg_query.RangeTableSample.method) + return _internal_add_method(); +} +inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& +RangeTableSample::method() const { + // @@protoc_insertion_point(field_list:pg_query.RangeTableSample.method) + return method_; +} + +// repeated .pg_query.Node args = 3 [json_name = "args"]; +inline int RangeTableSample::_internal_args_size() const { + return args_.size(); +} +inline int RangeTableSample::args_size() const { + return _internal_args_size(); +} +inline void RangeTableSample::clear_args() { + args_.Clear(); +} +inline ::pg_query::Node* RangeTableSample::mutable_args(int index) { + // @@protoc_insertion_point(field_mutable:pg_query.RangeTableSample.args) + return args_.Mutable(index); +} +inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* +RangeTableSample::mutable_args() { + // @@protoc_insertion_point(field_mutable_list:pg_query.RangeTableSample.args) + return &args_; +} +inline const ::pg_query::Node& RangeTableSample::_internal_args(int index) const { + return args_.Get(index); +} +inline const ::pg_query::Node& RangeTableSample::args(int index) const { + // @@protoc_insertion_point(field_get:pg_query.RangeTableSample.args) + return _internal_args(index); +} +inline ::pg_query::Node* RangeTableSample::_internal_add_args() { + return args_.Add(); +} +inline ::pg_query::Node* RangeTableSample::add_args() { + // @@protoc_insertion_point(field_add:pg_query.RangeTableSample.args) + return _internal_add_args(); +} +inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& +RangeTableSample::args() const { + // @@protoc_insertion_point(field_list:pg_query.RangeTableSample.args) + return args_; +} + +// .pg_query.Node repeatable = 4 [json_name = "repeatable"]; +inline bool RangeTableSample::_internal_has_repeatable() const { + return this != internal_default_instance() && repeatable_ != nullptr; +} +inline bool RangeTableSample::has_repeatable() const { + return _internal_has_repeatable(); +} +inline void RangeTableSample::clear_repeatable() { + if (GetArena() == nullptr && repeatable_ != nullptr) { + delete repeatable_; + } + repeatable_ = nullptr; +} +inline const ::pg_query::Node& RangeTableSample::_internal_repeatable() const { + const ::pg_query::Node* p = repeatable_; + return p != nullptr ? *p : reinterpret_cast( + ::pg_query::_Node_default_instance_); +} +inline const ::pg_query::Node& RangeTableSample::repeatable() const { + // @@protoc_insertion_point(field_get:pg_query.RangeTableSample.repeatable) + return _internal_repeatable(); +} +inline void RangeTableSample::unsafe_arena_set_allocated_repeatable( + ::pg_query::Node* repeatable) { + if (GetArena() == nullptr) { + delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(repeatable_); + } + repeatable_ = repeatable; + if (repeatable) { + + } else { + + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.RangeTableSample.repeatable) +} +inline ::pg_query::Node* RangeTableSample::release_repeatable() { + + ::pg_query::Node* temp = repeatable_; + repeatable_ = nullptr; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + return temp; +} +inline ::pg_query::Node* RangeTableSample::unsafe_arena_release_repeatable() { + // @@protoc_insertion_point(field_release:pg_query.RangeTableSample.repeatable) + + ::pg_query::Node* temp = repeatable_; + repeatable_ = nullptr; + return temp; +} +inline ::pg_query::Node* RangeTableSample::_internal_mutable_repeatable() { + + if (repeatable_ == nullptr) { + auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); + repeatable_ = p; + } + return repeatable_; +} +inline ::pg_query::Node* RangeTableSample::mutable_repeatable() { + // @@protoc_insertion_point(field_mutable:pg_query.RangeTableSample.repeatable) + return _internal_mutable_repeatable(); +} +inline void RangeTableSample::set_allocated_repeatable(::pg_query::Node* repeatable) { + ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); + if (message_arena == nullptr) { + delete repeatable_; + } + if (repeatable) { + ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = + ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(repeatable); + if (message_arena != submessage_arena) { + repeatable = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( + message_arena, repeatable, submessage_arena); + } + + } else { + + } + repeatable_ = repeatable; + // @@protoc_insertion_point(field_set_allocated:pg_query.RangeTableSample.repeatable) +} + +// int32 location = 5 [json_name = "location"]; +inline void RangeTableSample::clear_location() { + location_ = 0; +} +inline ::PROTOBUF_NAMESPACE_ID::int32 RangeTableSample::_internal_location() const { + return location_; +} +inline ::PROTOBUF_NAMESPACE_ID::int32 RangeTableSample::location() const { + // @@protoc_insertion_point(field_get:pg_query.RangeTableSample.location) + return _internal_location(); +} +inline void RangeTableSample::_internal_set_location(::PROTOBUF_NAMESPACE_ID::int32 value) { + + location_ = value; +} +inline void RangeTableSample::set_location(::PROTOBUF_NAMESPACE_ID::int32 value) { + _internal_set_location(value); + // @@protoc_insertion_point(field_set:pg_query.RangeTableSample.location) +} + +// ------------------------------------------------------------------- + +// RangeTableFunc + +// bool lateral = 1 [json_name = "lateral"]; +inline void RangeTableFunc::clear_lateral() { + lateral_ = false; +} +inline bool RangeTableFunc::_internal_lateral() const { + return lateral_; +} +inline bool RangeTableFunc::lateral() const { + // @@protoc_insertion_point(field_get:pg_query.RangeTableFunc.lateral) + return _internal_lateral(); +} +inline void RangeTableFunc::_internal_set_lateral(bool value) { + + lateral_ = value; +} +inline void RangeTableFunc::set_lateral(bool value) { + _internal_set_lateral(value); + // @@protoc_insertion_point(field_set:pg_query.RangeTableFunc.lateral) +} + +// .pg_query.Node docexpr = 2 [json_name = "docexpr"]; +inline bool RangeTableFunc::_internal_has_docexpr() const { + return this != internal_default_instance() && docexpr_ != nullptr; +} +inline bool RangeTableFunc::has_docexpr() const { + return _internal_has_docexpr(); +} +inline void RangeTableFunc::clear_docexpr() { + if (GetArena() == nullptr && docexpr_ != nullptr) { + delete docexpr_; + } + docexpr_ = nullptr; +} +inline const ::pg_query::Node& RangeTableFunc::_internal_docexpr() const { + const ::pg_query::Node* p = docexpr_; + return p != nullptr ? *p : reinterpret_cast( + ::pg_query::_Node_default_instance_); +} +inline const ::pg_query::Node& RangeTableFunc::docexpr() const { + // @@protoc_insertion_point(field_get:pg_query.RangeTableFunc.docexpr) + return _internal_docexpr(); +} +inline void RangeTableFunc::unsafe_arena_set_allocated_docexpr( + ::pg_query::Node* docexpr) { + if (GetArena() == nullptr) { + delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(docexpr_); + } + docexpr_ = docexpr; + if (docexpr) { + + } else { + + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.RangeTableFunc.docexpr) +} +inline ::pg_query::Node* RangeTableFunc::release_docexpr() { + + ::pg_query::Node* temp = docexpr_; + docexpr_ = nullptr; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + return temp; +} +inline ::pg_query::Node* RangeTableFunc::unsafe_arena_release_docexpr() { + // @@protoc_insertion_point(field_release:pg_query.RangeTableFunc.docexpr) + + ::pg_query::Node* temp = docexpr_; + docexpr_ = nullptr; + return temp; +} +inline ::pg_query::Node* RangeTableFunc::_internal_mutable_docexpr() { + + if (docexpr_ == nullptr) { + auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); + docexpr_ = p; + } + return docexpr_; +} +inline ::pg_query::Node* RangeTableFunc::mutable_docexpr() { + // @@protoc_insertion_point(field_mutable:pg_query.RangeTableFunc.docexpr) + return _internal_mutable_docexpr(); +} +inline void RangeTableFunc::set_allocated_docexpr(::pg_query::Node* docexpr) { + ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); + if (message_arena == nullptr) { + delete docexpr_; + } + if (docexpr) { + ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = + ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(docexpr); + if (message_arena != submessage_arena) { + docexpr = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( + message_arena, docexpr, submessage_arena); + } + + } else { + + } + docexpr_ = docexpr; + // @@protoc_insertion_point(field_set_allocated:pg_query.RangeTableFunc.docexpr) +} + +// .pg_query.Node rowexpr = 3 [json_name = "rowexpr"]; +inline bool RangeTableFunc::_internal_has_rowexpr() const { + return this != internal_default_instance() && rowexpr_ != nullptr; +} +inline bool RangeTableFunc::has_rowexpr() const { + return _internal_has_rowexpr(); +} +inline void RangeTableFunc::clear_rowexpr() { + if (GetArena() == nullptr && rowexpr_ != nullptr) { + delete rowexpr_; + } + rowexpr_ = nullptr; +} +inline const ::pg_query::Node& RangeTableFunc::_internal_rowexpr() const { + const ::pg_query::Node* p = rowexpr_; + return p != nullptr ? *p : reinterpret_cast( + ::pg_query::_Node_default_instance_); +} +inline const ::pg_query::Node& RangeTableFunc::rowexpr() const { + // @@protoc_insertion_point(field_get:pg_query.RangeTableFunc.rowexpr) + return _internal_rowexpr(); +} +inline void RangeTableFunc::unsafe_arena_set_allocated_rowexpr( + ::pg_query::Node* rowexpr) { + if (GetArena() == nullptr) { + delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(rowexpr_); + } + rowexpr_ = rowexpr; + if (rowexpr) { + + } else { + + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.RangeTableFunc.rowexpr) +} +inline ::pg_query::Node* RangeTableFunc::release_rowexpr() { + + ::pg_query::Node* temp = rowexpr_; + rowexpr_ = nullptr; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + return temp; +} +inline ::pg_query::Node* RangeTableFunc::unsafe_arena_release_rowexpr() { + // @@protoc_insertion_point(field_release:pg_query.RangeTableFunc.rowexpr) + + ::pg_query::Node* temp = rowexpr_; + rowexpr_ = nullptr; + return temp; +} +inline ::pg_query::Node* RangeTableFunc::_internal_mutable_rowexpr() { + + if (rowexpr_ == nullptr) { + auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); + rowexpr_ = p; + } + return rowexpr_; +} +inline ::pg_query::Node* RangeTableFunc::mutable_rowexpr() { + // @@protoc_insertion_point(field_mutable:pg_query.RangeTableFunc.rowexpr) + return _internal_mutable_rowexpr(); +} +inline void RangeTableFunc::set_allocated_rowexpr(::pg_query::Node* rowexpr) { + ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); + if (message_arena == nullptr) { + delete rowexpr_; + } + if (rowexpr) { + ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = + ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(rowexpr); + if (message_arena != submessage_arena) { + rowexpr = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( + message_arena, rowexpr, submessage_arena); + } + + } else { + + } + rowexpr_ = rowexpr; + // @@protoc_insertion_point(field_set_allocated:pg_query.RangeTableFunc.rowexpr) +} + +// repeated .pg_query.Node namespaces = 4 [json_name = "namespaces"]; +inline int RangeTableFunc::_internal_namespaces_size() const { + return namespaces_.size(); +} +inline int RangeTableFunc::namespaces_size() const { + return _internal_namespaces_size(); +} +inline void RangeTableFunc::clear_namespaces() { + namespaces_.Clear(); +} +inline ::pg_query::Node* RangeTableFunc::mutable_namespaces(int index) { + // @@protoc_insertion_point(field_mutable:pg_query.RangeTableFunc.namespaces) + return namespaces_.Mutable(index); +} +inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* +RangeTableFunc::mutable_namespaces() { + // @@protoc_insertion_point(field_mutable_list:pg_query.RangeTableFunc.namespaces) + return &namespaces_; +} +inline const ::pg_query::Node& RangeTableFunc::_internal_namespaces(int index) const { + return namespaces_.Get(index); +} +inline const ::pg_query::Node& RangeTableFunc::namespaces(int index) const { + // @@protoc_insertion_point(field_get:pg_query.RangeTableFunc.namespaces) + return _internal_namespaces(index); +} +inline ::pg_query::Node* RangeTableFunc::_internal_add_namespaces() { + return namespaces_.Add(); +} +inline ::pg_query::Node* RangeTableFunc::add_namespaces() { + // @@protoc_insertion_point(field_add:pg_query.RangeTableFunc.namespaces) + return _internal_add_namespaces(); +} +inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& +RangeTableFunc::namespaces() const { + // @@protoc_insertion_point(field_list:pg_query.RangeTableFunc.namespaces) + return namespaces_; +} + +// repeated .pg_query.Node columns = 5 [json_name = "columns"]; +inline int RangeTableFunc::_internal_columns_size() const { + return columns_.size(); +} +inline int RangeTableFunc::columns_size() const { + return _internal_columns_size(); +} +inline void RangeTableFunc::clear_columns() { + columns_.Clear(); +} +inline ::pg_query::Node* RangeTableFunc::mutable_columns(int index) { + // @@protoc_insertion_point(field_mutable:pg_query.RangeTableFunc.columns) + return columns_.Mutable(index); +} +inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* +RangeTableFunc::mutable_columns() { + // @@protoc_insertion_point(field_mutable_list:pg_query.RangeTableFunc.columns) + return &columns_; +} +inline const ::pg_query::Node& RangeTableFunc::_internal_columns(int index) const { + return columns_.Get(index); +} +inline const ::pg_query::Node& RangeTableFunc::columns(int index) const { + // @@protoc_insertion_point(field_get:pg_query.RangeTableFunc.columns) + return _internal_columns(index); +} +inline ::pg_query::Node* RangeTableFunc::_internal_add_columns() { + return columns_.Add(); +} +inline ::pg_query::Node* RangeTableFunc::add_columns() { + // @@protoc_insertion_point(field_add:pg_query.RangeTableFunc.columns) + return _internal_add_columns(); +} +inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& +RangeTableFunc::columns() const { + // @@protoc_insertion_point(field_list:pg_query.RangeTableFunc.columns) + return columns_; +} + +// .pg_query.Alias alias = 6 [json_name = "alias"]; +inline bool RangeTableFunc::_internal_has_alias() const { + return this != internal_default_instance() && alias_ != nullptr; +} +inline bool RangeTableFunc::has_alias() const { + return _internal_has_alias(); +} +inline void RangeTableFunc::clear_alias() { + if (GetArena() == nullptr && alias_ != nullptr) { + delete alias_; + } + alias_ = nullptr; +} +inline const ::pg_query::Alias& RangeTableFunc::_internal_alias() const { + const ::pg_query::Alias* p = alias_; + return p != nullptr ? *p : reinterpret_cast( + ::pg_query::_Alias_default_instance_); +} +inline const ::pg_query::Alias& RangeTableFunc::alias() const { + // @@protoc_insertion_point(field_get:pg_query.RangeTableFunc.alias) + return _internal_alias(); +} +inline void RangeTableFunc::unsafe_arena_set_allocated_alias( + ::pg_query::Alias* alias) { + if (GetArena() == nullptr) { + delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(alias_); + } + alias_ = alias; + if (alias) { + + } else { + + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.RangeTableFunc.alias) +} +inline ::pg_query::Alias* RangeTableFunc::release_alias() { + + ::pg_query::Alias* temp = alias_; + alias_ = nullptr; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + return temp; +} +inline ::pg_query::Alias* RangeTableFunc::unsafe_arena_release_alias() { + // @@protoc_insertion_point(field_release:pg_query.RangeTableFunc.alias) + + ::pg_query::Alias* temp = alias_; + alias_ = nullptr; + return temp; +} +inline ::pg_query::Alias* RangeTableFunc::_internal_mutable_alias() { + + if (alias_ == nullptr) { + auto* p = CreateMaybeMessage<::pg_query::Alias>(GetArena()); + alias_ = p; + } + return alias_; +} +inline ::pg_query::Alias* RangeTableFunc::mutable_alias() { + // @@protoc_insertion_point(field_mutable:pg_query.RangeTableFunc.alias) + return _internal_mutable_alias(); +} +inline void RangeTableFunc::set_allocated_alias(::pg_query::Alias* alias) { + ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); + if (message_arena == nullptr) { + delete alias_; + } + if (alias) { + ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = + ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(alias); + if (message_arena != submessage_arena) { + alias = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( + message_arena, alias, submessage_arena); + } + + } else { + + } + alias_ = alias; + // @@protoc_insertion_point(field_set_allocated:pg_query.RangeTableFunc.alias) +} + +// int32 location = 7 [json_name = "location"]; +inline void RangeTableFunc::clear_location() { + location_ = 0; +} +inline ::PROTOBUF_NAMESPACE_ID::int32 RangeTableFunc::_internal_location() const { + return location_; +} +inline ::PROTOBUF_NAMESPACE_ID::int32 RangeTableFunc::location() const { + // @@protoc_insertion_point(field_get:pg_query.RangeTableFunc.location) + return _internal_location(); +} +inline void RangeTableFunc::_internal_set_location(::PROTOBUF_NAMESPACE_ID::int32 value) { + + location_ = value; +} +inline void RangeTableFunc::set_location(::PROTOBUF_NAMESPACE_ID::int32 value) { + _internal_set_location(value); + // @@protoc_insertion_point(field_set:pg_query.RangeTableFunc.location) +} + +// ------------------------------------------------------------------- + +// RangeTableFuncCol + +// string colname = 1 [json_name = "colname"]; +inline void RangeTableFuncCol::clear_colname() { + colname_.ClearToEmpty(); +} +inline const std::string& RangeTableFuncCol::colname() const { + // @@protoc_insertion_point(field_get:pg_query.RangeTableFuncCol.colname) + return _internal_colname(); +} +inline void RangeTableFuncCol::set_colname(const std::string& value) { + _internal_set_colname(value); + // @@protoc_insertion_point(field_set:pg_query.RangeTableFuncCol.colname) +} +inline std::string* RangeTableFuncCol::mutable_colname() { + // @@protoc_insertion_point(field_mutable:pg_query.RangeTableFuncCol.colname) + return _internal_mutable_colname(); +} +inline const std::string& RangeTableFuncCol::_internal_colname() const { + return colname_.Get(); +} +inline void RangeTableFuncCol::_internal_set_colname(const std::string& value) { + + colname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArena()); +} +inline void RangeTableFuncCol::set_colname(std::string&& value) { + + colname_.Set( + ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::move(value), GetArena()); + // @@protoc_insertion_point(field_set_rvalue:pg_query.RangeTableFuncCol.colname) +} +inline void RangeTableFuncCol::set_colname(const char* value) { + GOOGLE_DCHECK(value != nullptr); + + colname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string(value), GetArena()); + // @@protoc_insertion_point(field_set_char:pg_query.RangeTableFuncCol.colname) +} +inline void RangeTableFuncCol::set_colname(const char* value, + size_t size) { + + colname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string( + reinterpret_cast(value), size), GetArena()); + // @@protoc_insertion_point(field_set_pointer:pg_query.RangeTableFuncCol.colname) +} +inline std::string* RangeTableFuncCol::_internal_mutable_colname() { + + return colname_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArena()); +} +inline std::string* RangeTableFuncCol::release_colname() { + // @@protoc_insertion_point(field_release:pg_query.RangeTableFuncCol.colname) + return colname_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); +} +inline void RangeTableFuncCol::set_allocated_colname(std::string* colname) { + if (colname != nullptr) { + + } else { + + } + colname_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), colname, + GetArena()); + // @@protoc_insertion_point(field_set_allocated:pg_query.RangeTableFuncCol.colname) +} + +// .pg_query.TypeName type_name = 2 [json_name = "typeName"]; +inline bool RangeTableFuncCol::_internal_has_type_name() const { + return this != internal_default_instance() && type_name_ != nullptr; +} +inline bool RangeTableFuncCol::has_type_name() const { + return _internal_has_type_name(); +} +inline void RangeTableFuncCol::clear_type_name() { + if (GetArena() == nullptr && type_name_ != nullptr) { + delete type_name_; + } + type_name_ = nullptr; +} +inline const ::pg_query::TypeName& RangeTableFuncCol::_internal_type_name() const { + const ::pg_query::TypeName* p = type_name_; + return p != nullptr ? *p : reinterpret_cast( + ::pg_query::_TypeName_default_instance_); +} +inline const ::pg_query::TypeName& RangeTableFuncCol::type_name() const { + // @@protoc_insertion_point(field_get:pg_query.RangeTableFuncCol.type_name) + return _internal_type_name(); +} +inline void RangeTableFuncCol::unsafe_arena_set_allocated_type_name( + ::pg_query::TypeName* type_name) { + if (GetArena() == nullptr) { + delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(type_name_); + } + type_name_ = type_name; + if (type_name) { + + } else { + + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.RangeTableFuncCol.type_name) +} +inline ::pg_query::TypeName* RangeTableFuncCol::release_type_name() { + + ::pg_query::TypeName* temp = type_name_; + type_name_ = nullptr; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + return temp; +} +inline ::pg_query::TypeName* RangeTableFuncCol::unsafe_arena_release_type_name() { + // @@protoc_insertion_point(field_release:pg_query.RangeTableFuncCol.type_name) + + ::pg_query::TypeName* temp = type_name_; + type_name_ = nullptr; + return temp; +} +inline ::pg_query::TypeName* RangeTableFuncCol::_internal_mutable_type_name() { + + if (type_name_ == nullptr) { + auto* p = CreateMaybeMessage<::pg_query::TypeName>(GetArena()); + type_name_ = p; + } + return type_name_; +} +inline ::pg_query::TypeName* RangeTableFuncCol::mutable_type_name() { + // @@protoc_insertion_point(field_mutable:pg_query.RangeTableFuncCol.type_name) + return _internal_mutable_type_name(); +} +inline void RangeTableFuncCol::set_allocated_type_name(::pg_query::TypeName* type_name) { + ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); + if (message_arena == nullptr) { + delete type_name_; + } + if (type_name) { + ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = + ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(type_name); + if (message_arena != submessage_arena) { + type_name = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( + message_arena, type_name, submessage_arena); + } + + } else { + + } + type_name_ = type_name; + // @@protoc_insertion_point(field_set_allocated:pg_query.RangeTableFuncCol.type_name) +} + +// bool for_ordinality = 3 [json_name = "for_ordinality"]; +inline void RangeTableFuncCol::clear_for_ordinality() { + for_ordinality_ = false; +} +inline bool RangeTableFuncCol::_internal_for_ordinality() const { + return for_ordinality_; +} +inline bool RangeTableFuncCol::for_ordinality() const { + // @@protoc_insertion_point(field_get:pg_query.RangeTableFuncCol.for_ordinality) + return _internal_for_ordinality(); +} +inline void RangeTableFuncCol::_internal_set_for_ordinality(bool value) { + + for_ordinality_ = value; +} +inline void RangeTableFuncCol::set_for_ordinality(bool value) { + _internal_set_for_ordinality(value); + // @@protoc_insertion_point(field_set:pg_query.RangeTableFuncCol.for_ordinality) +} + +// bool is_not_null = 4 [json_name = "is_not_null"]; +inline void RangeTableFuncCol::clear_is_not_null() { + is_not_null_ = false; +} +inline bool RangeTableFuncCol::_internal_is_not_null() const { + return is_not_null_; +} +inline bool RangeTableFuncCol::is_not_null() const { + // @@protoc_insertion_point(field_get:pg_query.RangeTableFuncCol.is_not_null) + return _internal_is_not_null(); +} +inline void RangeTableFuncCol::_internal_set_is_not_null(bool value) { + + is_not_null_ = value; +} +inline void RangeTableFuncCol::set_is_not_null(bool value) { + _internal_set_is_not_null(value); + // @@protoc_insertion_point(field_set:pg_query.RangeTableFuncCol.is_not_null) +} + +// .pg_query.Node colexpr = 5 [json_name = "colexpr"]; +inline bool RangeTableFuncCol::_internal_has_colexpr() const { + return this != internal_default_instance() && colexpr_ != nullptr; +} +inline bool RangeTableFuncCol::has_colexpr() const { + return _internal_has_colexpr(); +} +inline void RangeTableFuncCol::clear_colexpr() { + if (GetArena() == nullptr && colexpr_ != nullptr) { + delete colexpr_; + } + colexpr_ = nullptr; +} +inline const ::pg_query::Node& RangeTableFuncCol::_internal_colexpr() const { + const ::pg_query::Node* p = colexpr_; + return p != nullptr ? *p : reinterpret_cast( + ::pg_query::_Node_default_instance_); +} +inline const ::pg_query::Node& RangeTableFuncCol::colexpr() const { + // @@protoc_insertion_point(field_get:pg_query.RangeTableFuncCol.colexpr) + return _internal_colexpr(); +} +inline void RangeTableFuncCol::unsafe_arena_set_allocated_colexpr( + ::pg_query::Node* colexpr) { + if (GetArena() == nullptr) { + delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(colexpr_); + } + colexpr_ = colexpr; + if (colexpr) { + + } else { + + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.RangeTableFuncCol.colexpr) +} +inline ::pg_query::Node* RangeTableFuncCol::release_colexpr() { + + ::pg_query::Node* temp = colexpr_; + colexpr_ = nullptr; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + return temp; +} +inline ::pg_query::Node* RangeTableFuncCol::unsafe_arena_release_colexpr() { + // @@protoc_insertion_point(field_release:pg_query.RangeTableFuncCol.colexpr) + + ::pg_query::Node* temp = colexpr_; + colexpr_ = nullptr; + return temp; +} +inline ::pg_query::Node* RangeTableFuncCol::_internal_mutable_colexpr() { + + if (colexpr_ == nullptr) { + auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); + colexpr_ = p; + } + return colexpr_; +} +inline ::pg_query::Node* RangeTableFuncCol::mutable_colexpr() { + // @@protoc_insertion_point(field_mutable:pg_query.RangeTableFuncCol.colexpr) + return _internal_mutable_colexpr(); +} +inline void RangeTableFuncCol::set_allocated_colexpr(::pg_query::Node* colexpr) { + ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); + if (message_arena == nullptr) { + delete colexpr_; + } + if (colexpr) { + ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = + ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(colexpr); + if (message_arena != submessage_arena) { + colexpr = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( + message_arena, colexpr, submessage_arena); + } + + } else { + + } + colexpr_ = colexpr; + // @@protoc_insertion_point(field_set_allocated:pg_query.RangeTableFuncCol.colexpr) +} + +// .pg_query.Node coldefexpr = 6 [json_name = "coldefexpr"]; +inline bool RangeTableFuncCol::_internal_has_coldefexpr() const { + return this != internal_default_instance() && coldefexpr_ != nullptr; +} +inline bool RangeTableFuncCol::has_coldefexpr() const { + return _internal_has_coldefexpr(); +} +inline void RangeTableFuncCol::clear_coldefexpr() { + if (GetArena() == nullptr && coldefexpr_ != nullptr) { + delete coldefexpr_; + } + coldefexpr_ = nullptr; +} +inline const ::pg_query::Node& RangeTableFuncCol::_internal_coldefexpr() const { + const ::pg_query::Node* p = coldefexpr_; + return p != nullptr ? *p : reinterpret_cast( + ::pg_query::_Node_default_instance_); +} +inline const ::pg_query::Node& RangeTableFuncCol::coldefexpr() const { + // @@protoc_insertion_point(field_get:pg_query.RangeTableFuncCol.coldefexpr) + return _internal_coldefexpr(); +} +inline void RangeTableFuncCol::unsafe_arena_set_allocated_coldefexpr( + ::pg_query::Node* coldefexpr) { + if (GetArena() == nullptr) { + delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(coldefexpr_); + } + coldefexpr_ = coldefexpr; + if (coldefexpr) { + + } else { + + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.RangeTableFuncCol.coldefexpr) +} +inline ::pg_query::Node* RangeTableFuncCol::release_coldefexpr() { + + ::pg_query::Node* temp = coldefexpr_; + coldefexpr_ = nullptr; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + return temp; +} +inline ::pg_query::Node* RangeTableFuncCol::unsafe_arena_release_coldefexpr() { + // @@protoc_insertion_point(field_release:pg_query.RangeTableFuncCol.coldefexpr) + + ::pg_query::Node* temp = coldefexpr_; + coldefexpr_ = nullptr; + return temp; +} +inline ::pg_query::Node* RangeTableFuncCol::_internal_mutable_coldefexpr() { + + if (coldefexpr_ == nullptr) { + auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); + coldefexpr_ = p; + } + return coldefexpr_; +} +inline ::pg_query::Node* RangeTableFuncCol::mutable_coldefexpr() { + // @@protoc_insertion_point(field_mutable:pg_query.RangeTableFuncCol.coldefexpr) + return _internal_mutable_coldefexpr(); +} +inline void RangeTableFuncCol::set_allocated_coldefexpr(::pg_query::Node* coldefexpr) { + ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); + if (message_arena == nullptr) { + delete coldefexpr_; + } + if (coldefexpr) { + ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = + ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(coldefexpr); + if (message_arena != submessage_arena) { + coldefexpr = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( + message_arena, coldefexpr, submessage_arena); + } + + } else { + + } + coldefexpr_ = coldefexpr; + // @@protoc_insertion_point(field_set_allocated:pg_query.RangeTableFuncCol.coldefexpr) +} + +// int32 location = 7 [json_name = "location"]; +inline void RangeTableFuncCol::clear_location() { + location_ = 0; +} +inline ::PROTOBUF_NAMESPACE_ID::int32 RangeTableFuncCol::_internal_location() const { + return location_; +} +inline ::PROTOBUF_NAMESPACE_ID::int32 RangeTableFuncCol::location() const { + // @@protoc_insertion_point(field_get:pg_query.RangeTableFuncCol.location) + return _internal_location(); +} +inline void RangeTableFuncCol::_internal_set_location(::PROTOBUF_NAMESPACE_ID::int32 value) { + + location_ = value; +} +inline void RangeTableFuncCol::set_location(::PROTOBUF_NAMESPACE_ID::int32 value) { + _internal_set_location(value); + // @@protoc_insertion_point(field_set:pg_query.RangeTableFuncCol.location) +} + +// ------------------------------------------------------------------- + +// TypeName + +// repeated .pg_query.Node names = 1 [json_name = "names"]; +inline int TypeName::_internal_names_size() const { + return names_.size(); +} +inline int TypeName::names_size() const { + return _internal_names_size(); +} +inline void TypeName::clear_names() { + names_.Clear(); +} +inline ::pg_query::Node* TypeName::mutable_names(int index) { + // @@protoc_insertion_point(field_mutable:pg_query.TypeName.names) + return names_.Mutable(index); +} +inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* +TypeName::mutable_names() { + // @@protoc_insertion_point(field_mutable_list:pg_query.TypeName.names) + return &names_; +} +inline const ::pg_query::Node& TypeName::_internal_names(int index) const { + return names_.Get(index); +} +inline const ::pg_query::Node& TypeName::names(int index) const { + // @@protoc_insertion_point(field_get:pg_query.TypeName.names) + return _internal_names(index); +} +inline ::pg_query::Node* TypeName::_internal_add_names() { + return names_.Add(); +} +inline ::pg_query::Node* TypeName::add_names() { + // @@protoc_insertion_point(field_add:pg_query.TypeName.names) + return _internal_add_names(); +} +inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& +TypeName::names() const { + // @@protoc_insertion_point(field_list:pg_query.TypeName.names) + return names_; +} + +// uint32 type_oid = 2 [json_name = "typeOid"]; +inline void TypeName::clear_type_oid() { + type_oid_ = 0u; +} +inline ::PROTOBUF_NAMESPACE_ID::uint32 TypeName::_internal_type_oid() const { + return type_oid_; +} +inline ::PROTOBUF_NAMESPACE_ID::uint32 TypeName::type_oid() const { + // @@protoc_insertion_point(field_get:pg_query.TypeName.type_oid) + return _internal_type_oid(); +} +inline void TypeName::_internal_set_type_oid(::PROTOBUF_NAMESPACE_ID::uint32 value) { + + type_oid_ = value; +} +inline void TypeName::set_type_oid(::PROTOBUF_NAMESPACE_ID::uint32 value) { + _internal_set_type_oid(value); + // @@protoc_insertion_point(field_set:pg_query.TypeName.type_oid) +} + +// bool setof = 3 [json_name = "setof"]; +inline void TypeName::clear_setof() { + setof_ = false; +} +inline bool TypeName::_internal_setof() const { + return setof_; +} +inline bool TypeName::setof() const { + // @@protoc_insertion_point(field_get:pg_query.TypeName.setof) + return _internal_setof(); +} +inline void TypeName::_internal_set_setof(bool value) { + + setof_ = value; +} +inline void TypeName::set_setof(bool value) { + _internal_set_setof(value); + // @@protoc_insertion_point(field_set:pg_query.TypeName.setof) +} + +// bool pct_type = 4 [json_name = "pct_type"]; +inline void TypeName::clear_pct_type() { + pct_type_ = false; +} +inline bool TypeName::_internal_pct_type() const { + return pct_type_; +} +inline bool TypeName::pct_type() const { + // @@protoc_insertion_point(field_get:pg_query.TypeName.pct_type) + return _internal_pct_type(); +} +inline void TypeName::_internal_set_pct_type(bool value) { + + pct_type_ = value; +} +inline void TypeName::set_pct_type(bool value) { + _internal_set_pct_type(value); + // @@protoc_insertion_point(field_set:pg_query.TypeName.pct_type) +} + +// repeated .pg_query.Node typmods = 5 [json_name = "typmods"]; +inline int TypeName::_internal_typmods_size() const { + return typmods_.size(); +} +inline int TypeName::typmods_size() const { + return _internal_typmods_size(); +} +inline void TypeName::clear_typmods() { + typmods_.Clear(); +} +inline ::pg_query::Node* TypeName::mutable_typmods(int index) { + // @@protoc_insertion_point(field_mutable:pg_query.TypeName.typmods) + return typmods_.Mutable(index); +} +inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* +TypeName::mutable_typmods() { + // @@protoc_insertion_point(field_mutable_list:pg_query.TypeName.typmods) + return &typmods_; +} +inline const ::pg_query::Node& TypeName::_internal_typmods(int index) const { + return typmods_.Get(index); +} +inline const ::pg_query::Node& TypeName::typmods(int index) const { + // @@protoc_insertion_point(field_get:pg_query.TypeName.typmods) + return _internal_typmods(index); +} +inline ::pg_query::Node* TypeName::_internal_add_typmods() { + return typmods_.Add(); +} +inline ::pg_query::Node* TypeName::add_typmods() { + // @@protoc_insertion_point(field_add:pg_query.TypeName.typmods) + return _internal_add_typmods(); +} +inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& +TypeName::typmods() const { + // @@protoc_insertion_point(field_list:pg_query.TypeName.typmods) + return typmods_; +} + +// int32 typemod = 6 [json_name = "typemod"]; +inline void TypeName::clear_typemod() { + typemod_ = 0; +} +inline ::PROTOBUF_NAMESPACE_ID::int32 TypeName::_internal_typemod() const { + return typemod_; +} +inline ::PROTOBUF_NAMESPACE_ID::int32 TypeName::typemod() const { + // @@protoc_insertion_point(field_get:pg_query.TypeName.typemod) + return _internal_typemod(); +} +inline void TypeName::_internal_set_typemod(::PROTOBUF_NAMESPACE_ID::int32 value) { + + typemod_ = value; +} +inline void TypeName::set_typemod(::PROTOBUF_NAMESPACE_ID::int32 value) { + _internal_set_typemod(value); + // @@protoc_insertion_point(field_set:pg_query.TypeName.typemod) +} + +// repeated .pg_query.Node array_bounds = 7 [json_name = "arrayBounds"]; +inline int TypeName::_internal_array_bounds_size() const { + return array_bounds_.size(); +} +inline int TypeName::array_bounds_size() const { + return _internal_array_bounds_size(); +} +inline void TypeName::clear_array_bounds() { + array_bounds_.Clear(); +} +inline ::pg_query::Node* TypeName::mutable_array_bounds(int index) { + // @@protoc_insertion_point(field_mutable:pg_query.TypeName.array_bounds) + return array_bounds_.Mutable(index); +} +inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* +TypeName::mutable_array_bounds() { + // @@protoc_insertion_point(field_mutable_list:pg_query.TypeName.array_bounds) + return &array_bounds_; +} +inline const ::pg_query::Node& TypeName::_internal_array_bounds(int index) const { + return array_bounds_.Get(index); +} +inline const ::pg_query::Node& TypeName::array_bounds(int index) const { + // @@protoc_insertion_point(field_get:pg_query.TypeName.array_bounds) + return _internal_array_bounds(index); +} +inline ::pg_query::Node* TypeName::_internal_add_array_bounds() { + return array_bounds_.Add(); +} +inline ::pg_query::Node* TypeName::add_array_bounds() { + // @@protoc_insertion_point(field_add:pg_query.TypeName.array_bounds) + return _internal_add_array_bounds(); +} +inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& +TypeName::array_bounds() const { + // @@protoc_insertion_point(field_list:pg_query.TypeName.array_bounds) + return array_bounds_; +} + +// int32 location = 8 [json_name = "location"]; +inline void TypeName::clear_location() { + location_ = 0; +} +inline ::PROTOBUF_NAMESPACE_ID::int32 TypeName::_internal_location() const { + return location_; +} +inline ::PROTOBUF_NAMESPACE_ID::int32 TypeName::location() const { + // @@protoc_insertion_point(field_get:pg_query.TypeName.location) + return _internal_location(); +} +inline void TypeName::_internal_set_location(::PROTOBUF_NAMESPACE_ID::int32 value) { + + location_ = value; +} +inline void TypeName::set_location(::PROTOBUF_NAMESPACE_ID::int32 value) { + _internal_set_location(value); + // @@protoc_insertion_point(field_set:pg_query.TypeName.location) +} + +// ------------------------------------------------------------------- + +// ColumnDef + +// string colname = 1 [json_name = "colname"]; +inline void ColumnDef::clear_colname() { + colname_.ClearToEmpty(); +} +inline const std::string& ColumnDef::colname() const { + // @@protoc_insertion_point(field_get:pg_query.ColumnDef.colname) + return _internal_colname(); +} +inline void ColumnDef::set_colname(const std::string& value) { + _internal_set_colname(value); + // @@protoc_insertion_point(field_set:pg_query.ColumnDef.colname) +} +inline std::string* ColumnDef::mutable_colname() { + // @@protoc_insertion_point(field_mutable:pg_query.ColumnDef.colname) + return _internal_mutable_colname(); +} +inline const std::string& ColumnDef::_internal_colname() const { + return colname_.Get(); +} +inline void ColumnDef::_internal_set_colname(const std::string& value) { + + colname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArena()); +} +inline void ColumnDef::set_colname(std::string&& value) { + + colname_.Set( + ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::move(value), GetArena()); + // @@protoc_insertion_point(field_set_rvalue:pg_query.ColumnDef.colname) +} +inline void ColumnDef::set_colname(const char* value) { + GOOGLE_DCHECK(value != nullptr); + + colname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string(value), GetArena()); + // @@protoc_insertion_point(field_set_char:pg_query.ColumnDef.colname) +} +inline void ColumnDef::set_colname(const char* value, + size_t size) { + + colname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string( + reinterpret_cast(value), size), GetArena()); + // @@protoc_insertion_point(field_set_pointer:pg_query.ColumnDef.colname) +} +inline std::string* ColumnDef::_internal_mutable_colname() { + + return colname_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArena()); +} +inline std::string* ColumnDef::release_colname() { + // @@protoc_insertion_point(field_release:pg_query.ColumnDef.colname) + return colname_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); +} +inline void ColumnDef::set_allocated_colname(std::string* colname) { + if (colname != nullptr) { + + } else { + + } + colname_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), colname, + GetArena()); + // @@protoc_insertion_point(field_set_allocated:pg_query.ColumnDef.colname) +} + +// .pg_query.TypeName type_name = 2 [json_name = "typeName"]; +inline bool ColumnDef::_internal_has_type_name() const { + return this != internal_default_instance() && type_name_ != nullptr; +} +inline bool ColumnDef::has_type_name() const { + return _internal_has_type_name(); +} +inline void ColumnDef::clear_type_name() { + if (GetArena() == nullptr && type_name_ != nullptr) { + delete type_name_; + } + type_name_ = nullptr; +} +inline const ::pg_query::TypeName& ColumnDef::_internal_type_name() const { + const ::pg_query::TypeName* p = type_name_; + return p != nullptr ? *p : reinterpret_cast( + ::pg_query::_TypeName_default_instance_); +} +inline const ::pg_query::TypeName& ColumnDef::type_name() const { + // @@protoc_insertion_point(field_get:pg_query.ColumnDef.type_name) + return _internal_type_name(); +} +inline void ColumnDef::unsafe_arena_set_allocated_type_name( + ::pg_query::TypeName* type_name) { + if (GetArena() == nullptr) { + delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(type_name_); + } + type_name_ = type_name; + if (type_name) { + + } else { + + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.ColumnDef.type_name) +} +inline ::pg_query::TypeName* ColumnDef::release_type_name() { + + ::pg_query::TypeName* temp = type_name_; + type_name_ = nullptr; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + return temp; +} +inline ::pg_query::TypeName* ColumnDef::unsafe_arena_release_type_name() { + // @@protoc_insertion_point(field_release:pg_query.ColumnDef.type_name) + + ::pg_query::TypeName* temp = type_name_; + type_name_ = nullptr; + return temp; +} +inline ::pg_query::TypeName* ColumnDef::_internal_mutable_type_name() { + + if (type_name_ == nullptr) { + auto* p = CreateMaybeMessage<::pg_query::TypeName>(GetArena()); + type_name_ = p; + } + return type_name_; +} +inline ::pg_query::TypeName* ColumnDef::mutable_type_name() { + // @@protoc_insertion_point(field_mutable:pg_query.ColumnDef.type_name) + return _internal_mutable_type_name(); +} +inline void ColumnDef::set_allocated_type_name(::pg_query::TypeName* type_name) { + ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); + if (message_arena == nullptr) { + delete type_name_; + } + if (type_name) { + ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = + ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(type_name); + if (message_arena != submessage_arena) { + type_name = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( + message_arena, type_name, submessage_arena); + } + + } else { + + } + type_name_ = type_name; + // @@protoc_insertion_point(field_set_allocated:pg_query.ColumnDef.type_name) +} + +// int32 inhcount = 3 [json_name = "inhcount"]; +inline void ColumnDef::clear_inhcount() { + inhcount_ = 0; +} +inline ::PROTOBUF_NAMESPACE_ID::int32 ColumnDef::_internal_inhcount() const { + return inhcount_; +} +inline ::PROTOBUF_NAMESPACE_ID::int32 ColumnDef::inhcount() const { + // @@protoc_insertion_point(field_get:pg_query.ColumnDef.inhcount) + return _internal_inhcount(); +} +inline void ColumnDef::_internal_set_inhcount(::PROTOBUF_NAMESPACE_ID::int32 value) { + + inhcount_ = value; +} +inline void ColumnDef::set_inhcount(::PROTOBUF_NAMESPACE_ID::int32 value) { + _internal_set_inhcount(value); + // @@protoc_insertion_point(field_set:pg_query.ColumnDef.inhcount) +} + +// bool is_local = 4 [json_name = "is_local"]; +inline void ColumnDef::clear_is_local() { + is_local_ = false; +} +inline bool ColumnDef::_internal_is_local() const { + return is_local_; +} +inline bool ColumnDef::is_local() const { + // @@protoc_insertion_point(field_get:pg_query.ColumnDef.is_local) + return _internal_is_local(); +} +inline void ColumnDef::_internal_set_is_local(bool value) { + + is_local_ = value; +} +inline void ColumnDef::set_is_local(bool value) { + _internal_set_is_local(value); + // @@protoc_insertion_point(field_set:pg_query.ColumnDef.is_local) +} + +// bool is_not_null = 5 [json_name = "is_not_null"]; +inline void ColumnDef::clear_is_not_null() { + is_not_null_ = false; +} +inline bool ColumnDef::_internal_is_not_null() const { + return is_not_null_; +} +inline bool ColumnDef::is_not_null() const { + // @@protoc_insertion_point(field_get:pg_query.ColumnDef.is_not_null) + return _internal_is_not_null(); +} +inline void ColumnDef::_internal_set_is_not_null(bool value) { + + is_not_null_ = value; +} +inline void ColumnDef::set_is_not_null(bool value) { + _internal_set_is_not_null(value); + // @@protoc_insertion_point(field_set:pg_query.ColumnDef.is_not_null) +} + +// bool is_from_type = 6 [json_name = "is_from_type"]; +inline void ColumnDef::clear_is_from_type() { + is_from_type_ = false; +} +inline bool ColumnDef::_internal_is_from_type() const { + return is_from_type_; +} +inline bool ColumnDef::is_from_type() const { + // @@protoc_insertion_point(field_get:pg_query.ColumnDef.is_from_type) + return _internal_is_from_type(); +} +inline void ColumnDef::_internal_set_is_from_type(bool value) { + + is_from_type_ = value; +} +inline void ColumnDef::set_is_from_type(bool value) { + _internal_set_is_from_type(value); + // @@protoc_insertion_point(field_set:pg_query.ColumnDef.is_from_type) +} + +// string storage = 7 [json_name = "storage"]; +inline void ColumnDef::clear_storage() { + storage_.ClearToEmpty(); +} +inline const std::string& ColumnDef::storage() const { + // @@protoc_insertion_point(field_get:pg_query.ColumnDef.storage) + return _internal_storage(); +} +inline void ColumnDef::set_storage(const std::string& value) { + _internal_set_storage(value); + // @@protoc_insertion_point(field_set:pg_query.ColumnDef.storage) +} +inline std::string* ColumnDef::mutable_storage() { + // @@protoc_insertion_point(field_mutable:pg_query.ColumnDef.storage) + return _internal_mutable_storage(); +} +inline const std::string& ColumnDef::_internal_storage() const { + return storage_.Get(); +} +inline void ColumnDef::_internal_set_storage(const std::string& value) { + + storage_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArena()); +} +inline void ColumnDef::set_storage(std::string&& value) { + + storage_.Set( + ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::move(value), GetArena()); + // @@protoc_insertion_point(field_set_rvalue:pg_query.ColumnDef.storage) +} +inline void ColumnDef::set_storage(const char* value) { + GOOGLE_DCHECK(value != nullptr); + + storage_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string(value), GetArena()); + // @@protoc_insertion_point(field_set_char:pg_query.ColumnDef.storage) +} +inline void ColumnDef::set_storage(const char* value, + size_t size) { + + storage_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string( + reinterpret_cast(value), size), GetArena()); + // @@protoc_insertion_point(field_set_pointer:pg_query.ColumnDef.storage) +} +inline std::string* ColumnDef::_internal_mutable_storage() { + + return storage_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArena()); +} +inline std::string* ColumnDef::release_storage() { + // @@protoc_insertion_point(field_release:pg_query.ColumnDef.storage) + return storage_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); +} +inline void ColumnDef::set_allocated_storage(std::string* storage) { + if (storage != nullptr) { + + } else { + + } + storage_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), storage, + GetArena()); + // @@protoc_insertion_point(field_set_allocated:pg_query.ColumnDef.storage) +} + +// .pg_query.Node raw_default = 8 [json_name = "raw_default"]; +inline bool ColumnDef::_internal_has_raw_default() const { + return this != internal_default_instance() && raw_default_ != nullptr; +} +inline bool ColumnDef::has_raw_default() const { + return _internal_has_raw_default(); +} +inline void ColumnDef::clear_raw_default() { + if (GetArena() == nullptr && raw_default_ != nullptr) { + delete raw_default_; + } + raw_default_ = nullptr; +} +inline const ::pg_query::Node& ColumnDef::_internal_raw_default() const { + const ::pg_query::Node* p = raw_default_; + return p != nullptr ? *p : reinterpret_cast( + ::pg_query::_Node_default_instance_); +} +inline const ::pg_query::Node& ColumnDef::raw_default() const { + // @@protoc_insertion_point(field_get:pg_query.ColumnDef.raw_default) + return _internal_raw_default(); +} +inline void ColumnDef::unsafe_arena_set_allocated_raw_default( + ::pg_query::Node* raw_default) { + if (GetArena() == nullptr) { + delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(raw_default_); + } + raw_default_ = raw_default; + if (raw_default) { + + } else { + + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.ColumnDef.raw_default) +} +inline ::pg_query::Node* ColumnDef::release_raw_default() { + + ::pg_query::Node* temp = raw_default_; + raw_default_ = nullptr; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + return temp; +} +inline ::pg_query::Node* ColumnDef::unsafe_arena_release_raw_default() { + // @@protoc_insertion_point(field_release:pg_query.ColumnDef.raw_default) + + ::pg_query::Node* temp = raw_default_; + raw_default_ = nullptr; + return temp; +} +inline ::pg_query::Node* ColumnDef::_internal_mutable_raw_default() { + + if (raw_default_ == nullptr) { + auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); + raw_default_ = p; + } + return raw_default_; +} +inline ::pg_query::Node* ColumnDef::mutable_raw_default() { + // @@protoc_insertion_point(field_mutable:pg_query.ColumnDef.raw_default) + return _internal_mutable_raw_default(); +} +inline void ColumnDef::set_allocated_raw_default(::pg_query::Node* raw_default) { + ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); + if (message_arena == nullptr) { + delete raw_default_; + } + if (raw_default) { + ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = + ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(raw_default); + if (message_arena != submessage_arena) { + raw_default = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( + message_arena, raw_default, submessage_arena); + } + + } else { + + } + raw_default_ = raw_default; + // @@protoc_insertion_point(field_set_allocated:pg_query.ColumnDef.raw_default) +} + +// .pg_query.Node cooked_default = 9 [json_name = "cooked_default"]; +inline bool ColumnDef::_internal_has_cooked_default() const { + return this != internal_default_instance() && cooked_default_ != nullptr; +} +inline bool ColumnDef::has_cooked_default() const { + return _internal_has_cooked_default(); +} +inline void ColumnDef::clear_cooked_default() { + if (GetArena() == nullptr && cooked_default_ != nullptr) { + delete cooked_default_; + } + cooked_default_ = nullptr; +} +inline const ::pg_query::Node& ColumnDef::_internal_cooked_default() const { + const ::pg_query::Node* p = cooked_default_; + return p != nullptr ? *p : reinterpret_cast( + ::pg_query::_Node_default_instance_); +} +inline const ::pg_query::Node& ColumnDef::cooked_default() const { + // @@protoc_insertion_point(field_get:pg_query.ColumnDef.cooked_default) + return _internal_cooked_default(); +} +inline void ColumnDef::unsafe_arena_set_allocated_cooked_default( + ::pg_query::Node* cooked_default) { + if (GetArena() == nullptr) { + delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(cooked_default_); + } + cooked_default_ = cooked_default; + if (cooked_default) { + + } else { + + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.ColumnDef.cooked_default) +} +inline ::pg_query::Node* ColumnDef::release_cooked_default() { + + ::pg_query::Node* temp = cooked_default_; + cooked_default_ = nullptr; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + return temp; +} +inline ::pg_query::Node* ColumnDef::unsafe_arena_release_cooked_default() { + // @@protoc_insertion_point(field_release:pg_query.ColumnDef.cooked_default) + + ::pg_query::Node* temp = cooked_default_; + cooked_default_ = nullptr; + return temp; +} +inline ::pg_query::Node* ColumnDef::_internal_mutable_cooked_default() { + + if (cooked_default_ == nullptr) { + auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); + cooked_default_ = p; + } + return cooked_default_; +} +inline ::pg_query::Node* ColumnDef::mutable_cooked_default() { + // @@protoc_insertion_point(field_mutable:pg_query.ColumnDef.cooked_default) + return _internal_mutable_cooked_default(); +} +inline void ColumnDef::set_allocated_cooked_default(::pg_query::Node* cooked_default) { + ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); + if (message_arena == nullptr) { + delete cooked_default_; + } + if (cooked_default) { + ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = + ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(cooked_default); + if (message_arena != submessage_arena) { + cooked_default = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( + message_arena, cooked_default, submessage_arena); + } + + } else { + + } + cooked_default_ = cooked_default; + // @@protoc_insertion_point(field_set_allocated:pg_query.ColumnDef.cooked_default) +} + +// string identity = 10 [json_name = "identity"]; +inline void ColumnDef::clear_identity() { + identity_.ClearToEmpty(); +} +inline const std::string& ColumnDef::identity() const { + // @@protoc_insertion_point(field_get:pg_query.ColumnDef.identity) + return _internal_identity(); +} +inline void ColumnDef::set_identity(const std::string& value) { + _internal_set_identity(value); + // @@protoc_insertion_point(field_set:pg_query.ColumnDef.identity) +} +inline std::string* ColumnDef::mutable_identity() { + // @@protoc_insertion_point(field_mutable:pg_query.ColumnDef.identity) + return _internal_mutable_identity(); +} +inline const std::string& ColumnDef::_internal_identity() const { + return identity_.Get(); +} +inline void ColumnDef::_internal_set_identity(const std::string& value) { + + identity_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArena()); +} +inline void ColumnDef::set_identity(std::string&& value) { + + identity_.Set( + ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::move(value), GetArena()); + // @@protoc_insertion_point(field_set_rvalue:pg_query.ColumnDef.identity) +} +inline void ColumnDef::set_identity(const char* value) { + GOOGLE_DCHECK(value != nullptr); + + identity_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string(value), GetArena()); + // @@protoc_insertion_point(field_set_char:pg_query.ColumnDef.identity) +} +inline void ColumnDef::set_identity(const char* value, + size_t size) { + + identity_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string( + reinterpret_cast(value), size), GetArena()); + // @@protoc_insertion_point(field_set_pointer:pg_query.ColumnDef.identity) +} +inline std::string* ColumnDef::_internal_mutable_identity() { + + return identity_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArena()); +} +inline std::string* ColumnDef::release_identity() { + // @@protoc_insertion_point(field_release:pg_query.ColumnDef.identity) + return identity_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); +} +inline void ColumnDef::set_allocated_identity(std::string* identity) { + if (identity != nullptr) { + + } else { + + } + identity_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), identity, + GetArena()); + // @@protoc_insertion_point(field_set_allocated:pg_query.ColumnDef.identity) +} + +// .pg_query.RangeVar identity_sequence = 11 [json_name = "identitySequence"]; +inline bool ColumnDef::_internal_has_identity_sequence() const { + return this != internal_default_instance() && identity_sequence_ != nullptr; +} +inline bool ColumnDef::has_identity_sequence() const { + return _internal_has_identity_sequence(); +} +inline void ColumnDef::clear_identity_sequence() { + if (GetArena() == nullptr && identity_sequence_ != nullptr) { + delete identity_sequence_; + } + identity_sequence_ = nullptr; +} +inline const ::pg_query::RangeVar& ColumnDef::_internal_identity_sequence() const { + const ::pg_query::RangeVar* p = identity_sequence_; + return p != nullptr ? *p : reinterpret_cast( + ::pg_query::_RangeVar_default_instance_); +} +inline const ::pg_query::RangeVar& ColumnDef::identity_sequence() const { + // @@protoc_insertion_point(field_get:pg_query.ColumnDef.identity_sequence) + return _internal_identity_sequence(); +} +inline void ColumnDef::unsafe_arena_set_allocated_identity_sequence( + ::pg_query::RangeVar* identity_sequence) { + if (GetArena() == nullptr) { + delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(identity_sequence_); + } + identity_sequence_ = identity_sequence; + if (identity_sequence) { + + } else { + + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.ColumnDef.identity_sequence) +} +inline ::pg_query::RangeVar* ColumnDef::release_identity_sequence() { + + ::pg_query::RangeVar* temp = identity_sequence_; + identity_sequence_ = nullptr; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + return temp; +} +inline ::pg_query::RangeVar* ColumnDef::unsafe_arena_release_identity_sequence() { + // @@protoc_insertion_point(field_release:pg_query.ColumnDef.identity_sequence) + + ::pg_query::RangeVar* temp = identity_sequence_; + identity_sequence_ = nullptr; + return temp; +} +inline ::pg_query::RangeVar* ColumnDef::_internal_mutable_identity_sequence() { + + if (identity_sequence_ == nullptr) { + auto* p = CreateMaybeMessage<::pg_query::RangeVar>(GetArena()); + identity_sequence_ = p; + } + return identity_sequence_; +} +inline ::pg_query::RangeVar* ColumnDef::mutable_identity_sequence() { + // @@protoc_insertion_point(field_mutable:pg_query.ColumnDef.identity_sequence) + return _internal_mutable_identity_sequence(); +} +inline void ColumnDef::set_allocated_identity_sequence(::pg_query::RangeVar* identity_sequence) { + ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); + if (message_arena == nullptr) { + delete identity_sequence_; + } + if (identity_sequence) { + ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = + ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(identity_sequence); + if (message_arena != submessage_arena) { + identity_sequence = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( + message_arena, identity_sequence, submessage_arena); + } + + } else { + + } + identity_sequence_ = identity_sequence; + // @@protoc_insertion_point(field_set_allocated:pg_query.ColumnDef.identity_sequence) +} + +// string generated = 12 [json_name = "generated"]; +inline void ColumnDef::clear_generated() { + generated_.ClearToEmpty(); +} +inline const std::string& ColumnDef::generated() const { + // @@protoc_insertion_point(field_get:pg_query.ColumnDef.generated) + return _internal_generated(); +} +inline void ColumnDef::set_generated(const std::string& value) { + _internal_set_generated(value); + // @@protoc_insertion_point(field_set:pg_query.ColumnDef.generated) +} +inline std::string* ColumnDef::mutable_generated() { + // @@protoc_insertion_point(field_mutable:pg_query.ColumnDef.generated) + return _internal_mutable_generated(); +} +inline const std::string& ColumnDef::_internal_generated() const { + return generated_.Get(); +} +inline void ColumnDef::_internal_set_generated(const std::string& value) { + + generated_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArena()); +} +inline void ColumnDef::set_generated(std::string&& value) { + + generated_.Set( + ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::move(value), GetArena()); + // @@protoc_insertion_point(field_set_rvalue:pg_query.ColumnDef.generated) +} +inline void ColumnDef::set_generated(const char* value) { + GOOGLE_DCHECK(value != nullptr); + + generated_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string(value), GetArena()); + // @@protoc_insertion_point(field_set_char:pg_query.ColumnDef.generated) +} +inline void ColumnDef::set_generated(const char* value, + size_t size) { + + generated_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string( + reinterpret_cast(value), size), GetArena()); + // @@protoc_insertion_point(field_set_pointer:pg_query.ColumnDef.generated) +} +inline std::string* ColumnDef::_internal_mutable_generated() { + + return generated_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArena()); +} +inline std::string* ColumnDef::release_generated() { + // @@protoc_insertion_point(field_release:pg_query.ColumnDef.generated) + return generated_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); +} +inline void ColumnDef::set_allocated_generated(std::string* generated) { + if (generated != nullptr) { + + } else { + + } + generated_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), generated, + GetArena()); + // @@protoc_insertion_point(field_set_allocated:pg_query.ColumnDef.generated) +} + +// .pg_query.CollateClause coll_clause = 13 [json_name = "collClause"]; +inline bool ColumnDef::_internal_has_coll_clause() const { + return this != internal_default_instance() && coll_clause_ != nullptr; +} +inline bool ColumnDef::has_coll_clause() const { + return _internal_has_coll_clause(); +} +inline void ColumnDef::clear_coll_clause() { + if (GetArena() == nullptr && coll_clause_ != nullptr) { + delete coll_clause_; + } + coll_clause_ = nullptr; +} +inline const ::pg_query::CollateClause& ColumnDef::_internal_coll_clause() const { + const ::pg_query::CollateClause* p = coll_clause_; + return p != nullptr ? *p : reinterpret_cast( + ::pg_query::_CollateClause_default_instance_); +} +inline const ::pg_query::CollateClause& ColumnDef::coll_clause() const { + // @@protoc_insertion_point(field_get:pg_query.ColumnDef.coll_clause) + return _internal_coll_clause(); +} +inline void ColumnDef::unsafe_arena_set_allocated_coll_clause( + ::pg_query::CollateClause* coll_clause) { + if (GetArena() == nullptr) { + delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(coll_clause_); + } + coll_clause_ = coll_clause; + if (coll_clause) { + + } else { + + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.ColumnDef.coll_clause) +} +inline ::pg_query::CollateClause* ColumnDef::release_coll_clause() { + + ::pg_query::CollateClause* temp = coll_clause_; + coll_clause_ = nullptr; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + return temp; +} +inline ::pg_query::CollateClause* ColumnDef::unsafe_arena_release_coll_clause() { + // @@protoc_insertion_point(field_release:pg_query.ColumnDef.coll_clause) + + ::pg_query::CollateClause* temp = coll_clause_; + coll_clause_ = nullptr; + return temp; +} +inline ::pg_query::CollateClause* ColumnDef::_internal_mutable_coll_clause() { + + if (coll_clause_ == nullptr) { + auto* p = CreateMaybeMessage<::pg_query::CollateClause>(GetArena()); + coll_clause_ = p; + } + return coll_clause_; +} +inline ::pg_query::CollateClause* ColumnDef::mutable_coll_clause() { + // @@protoc_insertion_point(field_mutable:pg_query.ColumnDef.coll_clause) + return _internal_mutable_coll_clause(); +} +inline void ColumnDef::set_allocated_coll_clause(::pg_query::CollateClause* coll_clause) { + ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); + if (message_arena == nullptr) { + delete coll_clause_; + } + if (coll_clause) { + ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = + ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(coll_clause); + if (message_arena != submessage_arena) { + coll_clause = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( + message_arena, coll_clause, submessage_arena); + } + + } else { + + } + coll_clause_ = coll_clause; + // @@protoc_insertion_point(field_set_allocated:pg_query.ColumnDef.coll_clause) +} + +// uint32 coll_oid = 14 [json_name = "collOid"]; +inline void ColumnDef::clear_coll_oid() { + coll_oid_ = 0u; +} +inline ::PROTOBUF_NAMESPACE_ID::uint32 ColumnDef::_internal_coll_oid() const { + return coll_oid_; +} +inline ::PROTOBUF_NAMESPACE_ID::uint32 ColumnDef::coll_oid() const { + // @@protoc_insertion_point(field_get:pg_query.ColumnDef.coll_oid) + return _internal_coll_oid(); +} +inline void ColumnDef::_internal_set_coll_oid(::PROTOBUF_NAMESPACE_ID::uint32 value) { + + coll_oid_ = value; +} +inline void ColumnDef::set_coll_oid(::PROTOBUF_NAMESPACE_ID::uint32 value) { + _internal_set_coll_oid(value); + // @@protoc_insertion_point(field_set:pg_query.ColumnDef.coll_oid) +} + +// repeated .pg_query.Node constraints = 15 [json_name = "constraints"]; +inline int ColumnDef::_internal_constraints_size() const { + return constraints_.size(); +} +inline int ColumnDef::constraints_size() const { + return _internal_constraints_size(); +} +inline void ColumnDef::clear_constraints() { + constraints_.Clear(); +} +inline ::pg_query::Node* ColumnDef::mutable_constraints(int index) { + // @@protoc_insertion_point(field_mutable:pg_query.ColumnDef.constraints) + return constraints_.Mutable(index); +} +inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* +ColumnDef::mutable_constraints() { + // @@protoc_insertion_point(field_mutable_list:pg_query.ColumnDef.constraints) + return &constraints_; +} +inline const ::pg_query::Node& ColumnDef::_internal_constraints(int index) const { + return constraints_.Get(index); +} +inline const ::pg_query::Node& ColumnDef::constraints(int index) const { + // @@protoc_insertion_point(field_get:pg_query.ColumnDef.constraints) + return _internal_constraints(index); +} +inline ::pg_query::Node* ColumnDef::_internal_add_constraints() { + return constraints_.Add(); +} +inline ::pg_query::Node* ColumnDef::add_constraints() { + // @@protoc_insertion_point(field_add:pg_query.ColumnDef.constraints) + return _internal_add_constraints(); +} +inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& +ColumnDef::constraints() const { + // @@protoc_insertion_point(field_list:pg_query.ColumnDef.constraints) + return constraints_; +} + +// repeated .pg_query.Node fdwoptions = 16 [json_name = "fdwoptions"]; +inline int ColumnDef::_internal_fdwoptions_size() const { + return fdwoptions_.size(); +} +inline int ColumnDef::fdwoptions_size() const { + return _internal_fdwoptions_size(); +} +inline void ColumnDef::clear_fdwoptions() { + fdwoptions_.Clear(); +} +inline ::pg_query::Node* ColumnDef::mutable_fdwoptions(int index) { + // @@protoc_insertion_point(field_mutable:pg_query.ColumnDef.fdwoptions) + return fdwoptions_.Mutable(index); +} +inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* +ColumnDef::mutable_fdwoptions() { + // @@protoc_insertion_point(field_mutable_list:pg_query.ColumnDef.fdwoptions) + return &fdwoptions_; +} +inline const ::pg_query::Node& ColumnDef::_internal_fdwoptions(int index) const { + return fdwoptions_.Get(index); +} +inline const ::pg_query::Node& ColumnDef::fdwoptions(int index) const { + // @@protoc_insertion_point(field_get:pg_query.ColumnDef.fdwoptions) + return _internal_fdwoptions(index); +} +inline ::pg_query::Node* ColumnDef::_internal_add_fdwoptions() { + return fdwoptions_.Add(); +} +inline ::pg_query::Node* ColumnDef::add_fdwoptions() { + // @@protoc_insertion_point(field_add:pg_query.ColumnDef.fdwoptions) + return _internal_add_fdwoptions(); +} +inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& +ColumnDef::fdwoptions() const { + // @@protoc_insertion_point(field_list:pg_query.ColumnDef.fdwoptions) + return fdwoptions_; +} + +// int32 location = 17 [json_name = "location"]; +inline void ColumnDef::clear_location() { + location_ = 0; +} +inline ::PROTOBUF_NAMESPACE_ID::int32 ColumnDef::_internal_location() const { + return location_; +} +inline ::PROTOBUF_NAMESPACE_ID::int32 ColumnDef::location() const { + // @@protoc_insertion_point(field_get:pg_query.ColumnDef.location) + return _internal_location(); +} +inline void ColumnDef::_internal_set_location(::PROTOBUF_NAMESPACE_ID::int32 value) { + + location_ = value; +} +inline void ColumnDef::set_location(::PROTOBUF_NAMESPACE_ID::int32 value) { + _internal_set_location(value); + // @@protoc_insertion_point(field_set:pg_query.ColumnDef.location) +} + +// ------------------------------------------------------------------- + +// IndexElem + +// string name = 1 [json_name = "name"]; +inline void IndexElem::clear_name() { + name_.ClearToEmpty(); +} +inline const std::string& IndexElem::name() const { + // @@protoc_insertion_point(field_get:pg_query.IndexElem.name) + return _internal_name(); +} +inline void IndexElem::set_name(const std::string& value) { + _internal_set_name(value); + // @@protoc_insertion_point(field_set:pg_query.IndexElem.name) +} +inline std::string* IndexElem::mutable_name() { + // @@protoc_insertion_point(field_mutable:pg_query.IndexElem.name) + return _internal_mutable_name(); +} +inline const std::string& IndexElem::_internal_name() const { + return name_.Get(); +} +inline void IndexElem::_internal_set_name(const std::string& value) { + + name_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArena()); +} +inline void IndexElem::set_name(std::string&& value) { + + name_.Set( + ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::move(value), GetArena()); + // @@protoc_insertion_point(field_set_rvalue:pg_query.IndexElem.name) +} +inline void IndexElem::set_name(const char* value) { + GOOGLE_DCHECK(value != nullptr); + + name_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string(value), GetArena()); + // @@protoc_insertion_point(field_set_char:pg_query.IndexElem.name) +} +inline void IndexElem::set_name(const char* value, + size_t size) { + + name_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string( + reinterpret_cast(value), size), GetArena()); + // @@protoc_insertion_point(field_set_pointer:pg_query.IndexElem.name) +} +inline std::string* IndexElem::_internal_mutable_name() { + + return name_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArena()); +} +inline std::string* IndexElem::release_name() { + // @@protoc_insertion_point(field_release:pg_query.IndexElem.name) + return name_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); +} +inline void IndexElem::set_allocated_name(std::string* name) { + if (name != nullptr) { + + } else { + + } + name_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), name, + GetArena()); + // @@protoc_insertion_point(field_set_allocated:pg_query.IndexElem.name) +} + +// .pg_query.Node expr = 2 [json_name = "expr"]; +inline bool IndexElem::_internal_has_expr() const { + return this != internal_default_instance() && expr_ != nullptr; +} +inline bool IndexElem::has_expr() const { + return _internal_has_expr(); +} +inline void IndexElem::clear_expr() { + if (GetArena() == nullptr && expr_ != nullptr) { + delete expr_; + } + expr_ = nullptr; +} +inline const ::pg_query::Node& IndexElem::_internal_expr() const { + const ::pg_query::Node* p = expr_; + return p != nullptr ? *p : reinterpret_cast( + ::pg_query::_Node_default_instance_); +} +inline const ::pg_query::Node& IndexElem::expr() const { + // @@protoc_insertion_point(field_get:pg_query.IndexElem.expr) + return _internal_expr(); +} +inline void IndexElem::unsafe_arena_set_allocated_expr( + ::pg_query::Node* expr) { + if (GetArena() == nullptr) { + delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(expr_); + } + expr_ = expr; + if (expr) { + + } else { + + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.IndexElem.expr) +} +inline ::pg_query::Node* IndexElem::release_expr() { + + ::pg_query::Node* temp = expr_; + expr_ = nullptr; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + return temp; +} +inline ::pg_query::Node* IndexElem::unsafe_arena_release_expr() { + // @@protoc_insertion_point(field_release:pg_query.IndexElem.expr) + + ::pg_query::Node* temp = expr_; + expr_ = nullptr; + return temp; +} +inline ::pg_query::Node* IndexElem::_internal_mutable_expr() { + + if (expr_ == nullptr) { + auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); + expr_ = p; + } + return expr_; +} +inline ::pg_query::Node* IndexElem::mutable_expr() { + // @@protoc_insertion_point(field_mutable:pg_query.IndexElem.expr) + return _internal_mutable_expr(); +} +inline void IndexElem::set_allocated_expr(::pg_query::Node* expr) { + ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); + if (message_arena == nullptr) { + delete expr_; + } + if (expr) { + ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = + ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(expr); + if (message_arena != submessage_arena) { + expr = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( + message_arena, expr, submessage_arena); + } + + } else { + + } + expr_ = expr; + // @@protoc_insertion_point(field_set_allocated:pg_query.IndexElem.expr) +} + +// string indexcolname = 3 [json_name = "indexcolname"]; +inline void IndexElem::clear_indexcolname() { + indexcolname_.ClearToEmpty(); +} +inline const std::string& IndexElem::indexcolname() const { + // @@protoc_insertion_point(field_get:pg_query.IndexElem.indexcolname) + return _internal_indexcolname(); +} +inline void IndexElem::set_indexcolname(const std::string& value) { + _internal_set_indexcolname(value); + // @@protoc_insertion_point(field_set:pg_query.IndexElem.indexcolname) +} +inline std::string* IndexElem::mutable_indexcolname() { + // @@protoc_insertion_point(field_mutable:pg_query.IndexElem.indexcolname) + return _internal_mutable_indexcolname(); +} +inline const std::string& IndexElem::_internal_indexcolname() const { + return indexcolname_.Get(); +} +inline void IndexElem::_internal_set_indexcolname(const std::string& value) { + + indexcolname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArena()); +} +inline void IndexElem::set_indexcolname(std::string&& value) { + + indexcolname_.Set( + ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::move(value), GetArena()); + // @@protoc_insertion_point(field_set_rvalue:pg_query.IndexElem.indexcolname) +} +inline void IndexElem::set_indexcolname(const char* value) { + GOOGLE_DCHECK(value != nullptr); + + indexcolname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string(value), GetArena()); + // @@protoc_insertion_point(field_set_char:pg_query.IndexElem.indexcolname) +} +inline void IndexElem::set_indexcolname(const char* value, + size_t size) { + + indexcolname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string( + reinterpret_cast(value), size), GetArena()); + // @@protoc_insertion_point(field_set_pointer:pg_query.IndexElem.indexcolname) +} +inline std::string* IndexElem::_internal_mutable_indexcolname() { + + return indexcolname_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArena()); +} +inline std::string* IndexElem::release_indexcolname() { + // @@protoc_insertion_point(field_release:pg_query.IndexElem.indexcolname) + return indexcolname_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); +} +inline void IndexElem::set_allocated_indexcolname(std::string* indexcolname) { + if (indexcolname != nullptr) { + + } else { + + } + indexcolname_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), indexcolname, + GetArena()); + // @@protoc_insertion_point(field_set_allocated:pg_query.IndexElem.indexcolname) +} + +// repeated .pg_query.Node collation = 4 [json_name = "collation"]; +inline int IndexElem::_internal_collation_size() const { + return collation_.size(); +} +inline int IndexElem::collation_size() const { + return _internal_collation_size(); +} +inline void IndexElem::clear_collation() { + collation_.Clear(); +} +inline ::pg_query::Node* IndexElem::mutable_collation(int index) { + // @@protoc_insertion_point(field_mutable:pg_query.IndexElem.collation) + return collation_.Mutable(index); +} +inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* +IndexElem::mutable_collation() { + // @@protoc_insertion_point(field_mutable_list:pg_query.IndexElem.collation) + return &collation_; +} +inline const ::pg_query::Node& IndexElem::_internal_collation(int index) const { + return collation_.Get(index); +} +inline const ::pg_query::Node& IndexElem::collation(int index) const { + // @@protoc_insertion_point(field_get:pg_query.IndexElem.collation) + return _internal_collation(index); +} +inline ::pg_query::Node* IndexElem::_internal_add_collation() { + return collation_.Add(); +} +inline ::pg_query::Node* IndexElem::add_collation() { + // @@protoc_insertion_point(field_add:pg_query.IndexElem.collation) + return _internal_add_collation(); +} +inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& +IndexElem::collation() const { + // @@protoc_insertion_point(field_list:pg_query.IndexElem.collation) + return collation_; +} + +// repeated .pg_query.Node opclass = 5 [json_name = "opclass"]; +inline int IndexElem::_internal_opclass_size() const { + return opclass_.size(); +} +inline int IndexElem::opclass_size() const { + return _internal_opclass_size(); +} +inline void IndexElem::clear_opclass() { + opclass_.Clear(); +} +inline ::pg_query::Node* IndexElem::mutable_opclass(int index) { + // @@protoc_insertion_point(field_mutable:pg_query.IndexElem.opclass) + return opclass_.Mutable(index); +} +inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* +IndexElem::mutable_opclass() { + // @@protoc_insertion_point(field_mutable_list:pg_query.IndexElem.opclass) + return &opclass_; +} +inline const ::pg_query::Node& IndexElem::_internal_opclass(int index) const { + return opclass_.Get(index); +} +inline const ::pg_query::Node& IndexElem::opclass(int index) const { + // @@protoc_insertion_point(field_get:pg_query.IndexElem.opclass) + return _internal_opclass(index); +} +inline ::pg_query::Node* IndexElem::_internal_add_opclass() { + return opclass_.Add(); +} +inline ::pg_query::Node* IndexElem::add_opclass() { + // @@protoc_insertion_point(field_add:pg_query.IndexElem.opclass) + return _internal_add_opclass(); +} +inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& +IndexElem::opclass() const { + // @@protoc_insertion_point(field_list:pg_query.IndexElem.opclass) + return opclass_; +} + +// repeated .pg_query.Node opclassopts = 6 [json_name = "opclassopts"]; +inline int IndexElem::_internal_opclassopts_size() const { + return opclassopts_.size(); +} +inline int IndexElem::opclassopts_size() const { + return _internal_opclassopts_size(); +} +inline void IndexElem::clear_opclassopts() { + opclassopts_.Clear(); +} +inline ::pg_query::Node* IndexElem::mutable_opclassopts(int index) { + // @@protoc_insertion_point(field_mutable:pg_query.IndexElem.opclassopts) + return opclassopts_.Mutable(index); +} +inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* +IndexElem::mutable_opclassopts() { + // @@protoc_insertion_point(field_mutable_list:pg_query.IndexElem.opclassopts) + return &opclassopts_; +} +inline const ::pg_query::Node& IndexElem::_internal_opclassopts(int index) const { + return opclassopts_.Get(index); +} +inline const ::pg_query::Node& IndexElem::opclassopts(int index) const { + // @@protoc_insertion_point(field_get:pg_query.IndexElem.opclassopts) + return _internal_opclassopts(index); +} +inline ::pg_query::Node* IndexElem::_internal_add_opclassopts() { + return opclassopts_.Add(); +} +inline ::pg_query::Node* IndexElem::add_opclassopts() { + // @@protoc_insertion_point(field_add:pg_query.IndexElem.opclassopts) + return _internal_add_opclassopts(); +} +inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& +IndexElem::opclassopts() const { + // @@protoc_insertion_point(field_list:pg_query.IndexElem.opclassopts) + return opclassopts_; +} + +// .pg_query.SortByDir ordering = 7 [json_name = "ordering"]; +inline void IndexElem::clear_ordering() { + ordering_ = 0; +} +inline ::pg_query::SortByDir IndexElem::_internal_ordering() const { + return static_cast< ::pg_query::SortByDir >(ordering_); +} +inline ::pg_query::SortByDir IndexElem::ordering() const { + // @@protoc_insertion_point(field_get:pg_query.IndexElem.ordering) + return _internal_ordering(); +} +inline void IndexElem::_internal_set_ordering(::pg_query::SortByDir value) { + + ordering_ = value; +} +inline void IndexElem::set_ordering(::pg_query::SortByDir value) { + _internal_set_ordering(value); + // @@protoc_insertion_point(field_set:pg_query.IndexElem.ordering) +} + +// .pg_query.SortByNulls nulls_ordering = 8 [json_name = "nulls_ordering"]; +inline void IndexElem::clear_nulls_ordering() { + nulls_ordering_ = 0; +} +inline ::pg_query::SortByNulls IndexElem::_internal_nulls_ordering() const { + return static_cast< ::pg_query::SortByNulls >(nulls_ordering_); +} +inline ::pg_query::SortByNulls IndexElem::nulls_ordering() const { + // @@protoc_insertion_point(field_get:pg_query.IndexElem.nulls_ordering) + return _internal_nulls_ordering(); +} +inline void IndexElem::_internal_set_nulls_ordering(::pg_query::SortByNulls value) { + + nulls_ordering_ = value; +} +inline void IndexElem::set_nulls_ordering(::pg_query::SortByNulls value) { + _internal_set_nulls_ordering(value); + // @@protoc_insertion_point(field_set:pg_query.IndexElem.nulls_ordering) +} + +// ------------------------------------------------------------------- + +// Constraint + +// .pg_query.ConstrType contype = 1 [json_name = "contype"]; +inline void Constraint::clear_contype() { + contype_ = 0; +} +inline ::pg_query::ConstrType Constraint::_internal_contype() const { + return static_cast< ::pg_query::ConstrType >(contype_); +} +inline ::pg_query::ConstrType Constraint::contype() const { + // @@protoc_insertion_point(field_get:pg_query.Constraint.contype) + return _internal_contype(); +} +inline void Constraint::_internal_set_contype(::pg_query::ConstrType value) { + + contype_ = value; +} +inline void Constraint::set_contype(::pg_query::ConstrType value) { + _internal_set_contype(value); + // @@protoc_insertion_point(field_set:pg_query.Constraint.contype) +} + +// string conname = 2 [json_name = "conname"]; +inline void Constraint::clear_conname() { + conname_.ClearToEmpty(); +} +inline const std::string& Constraint::conname() const { + // @@protoc_insertion_point(field_get:pg_query.Constraint.conname) + return _internal_conname(); +} +inline void Constraint::set_conname(const std::string& value) { + _internal_set_conname(value); + // @@protoc_insertion_point(field_set:pg_query.Constraint.conname) +} +inline std::string* Constraint::mutable_conname() { + // @@protoc_insertion_point(field_mutable:pg_query.Constraint.conname) + return _internal_mutable_conname(); +} +inline const std::string& Constraint::_internal_conname() const { + return conname_.Get(); +} +inline void Constraint::_internal_set_conname(const std::string& value) { + + conname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArena()); +} +inline void Constraint::set_conname(std::string&& value) { + + conname_.Set( + ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::move(value), GetArena()); + // @@protoc_insertion_point(field_set_rvalue:pg_query.Constraint.conname) +} +inline void Constraint::set_conname(const char* value) { + GOOGLE_DCHECK(value != nullptr); + + conname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string(value), GetArena()); + // @@protoc_insertion_point(field_set_char:pg_query.Constraint.conname) +} +inline void Constraint::set_conname(const char* value, + size_t size) { + + conname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string( + reinterpret_cast(value), size), GetArena()); + // @@protoc_insertion_point(field_set_pointer:pg_query.Constraint.conname) +} +inline std::string* Constraint::_internal_mutable_conname() { + + return conname_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArena()); +} +inline std::string* Constraint::release_conname() { + // @@protoc_insertion_point(field_release:pg_query.Constraint.conname) + return conname_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); +} +inline void Constraint::set_allocated_conname(std::string* conname) { + if (conname != nullptr) { + + } else { + + } + conname_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), conname, + GetArena()); + // @@protoc_insertion_point(field_set_allocated:pg_query.Constraint.conname) +} + +// bool deferrable = 3 [json_name = "deferrable"]; +inline void Constraint::clear_deferrable() { + deferrable_ = false; +} +inline bool Constraint::_internal_deferrable() const { + return deferrable_; +} +inline bool Constraint::deferrable() const { + // @@protoc_insertion_point(field_get:pg_query.Constraint.deferrable) + return _internal_deferrable(); +} +inline void Constraint::_internal_set_deferrable(bool value) { + + deferrable_ = value; +} +inline void Constraint::set_deferrable(bool value) { + _internal_set_deferrable(value); + // @@protoc_insertion_point(field_set:pg_query.Constraint.deferrable) +} + +// bool initdeferred = 4 [json_name = "initdeferred"]; +inline void Constraint::clear_initdeferred() { + initdeferred_ = false; +} +inline bool Constraint::_internal_initdeferred() const { + return initdeferred_; +} +inline bool Constraint::initdeferred() const { + // @@protoc_insertion_point(field_get:pg_query.Constraint.initdeferred) + return _internal_initdeferred(); +} +inline void Constraint::_internal_set_initdeferred(bool value) { + + initdeferred_ = value; +} +inline void Constraint::set_initdeferred(bool value) { + _internal_set_initdeferred(value); + // @@protoc_insertion_point(field_set:pg_query.Constraint.initdeferred) +} + +// int32 location = 5 [json_name = "location"]; +inline void Constraint::clear_location() { + location_ = 0; +} +inline ::PROTOBUF_NAMESPACE_ID::int32 Constraint::_internal_location() const { + return location_; +} +inline ::PROTOBUF_NAMESPACE_ID::int32 Constraint::location() const { + // @@protoc_insertion_point(field_get:pg_query.Constraint.location) + return _internal_location(); +} +inline void Constraint::_internal_set_location(::PROTOBUF_NAMESPACE_ID::int32 value) { + + location_ = value; +} +inline void Constraint::set_location(::PROTOBUF_NAMESPACE_ID::int32 value) { + _internal_set_location(value); + // @@protoc_insertion_point(field_set:pg_query.Constraint.location) +} + +// bool is_no_inherit = 6 [json_name = "is_no_inherit"]; +inline void Constraint::clear_is_no_inherit() { + is_no_inherit_ = false; +} +inline bool Constraint::_internal_is_no_inherit() const { + return is_no_inherit_; +} +inline bool Constraint::is_no_inherit() const { + // @@protoc_insertion_point(field_get:pg_query.Constraint.is_no_inherit) + return _internal_is_no_inherit(); +} +inline void Constraint::_internal_set_is_no_inherit(bool value) { + + is_no_inherit_ = value; +} +inline void Constraint::set_is_no_inherit(bool value) { + _internal_set_is_no_inherit(value); + // @@protoc_insertion_point(field_set:pg_query.Constraint.is_no_inherit) +} + +// .pg_query.Node raw_expr = 7 [json_name = "raw_expr"]; +inline bool Constraint::_internal_has_raw_expr() const { + return this != internal_default_instance() && raw_expr_ != nullptr; +} +inline bool Constraint::has_raw_expr() const { + return _internal_has_raw_expr(); +} +inline void Constraint::clear_raw_expr() { + if (GetArena() == nullptr && raw_expr_ != nullptr) { + delete raw_expr_; + } + raw_expr_ = nullptr; +} +inline const ::pg_query::Node& Constraint::_internal_raw_expr() const { + const ::pg_query::Node* p = raw_expr_; + return p != nullptr ? *p : reinterpret_cast( + ::pg_query::_Node_default_instance_); +} +inline const ::pg_query::Node& Constraint::raw_expr() const { + // @@protoc_insertion_point(field_get:pg_query.Constraint.raw_expr) + return _internal_raw_expr(); +} +inline void Constraint::unsafe_arena_set_allocated_raw_expr( + ::pg_query::Node* raw_expr) { + if (GetArena() == nullptr) { + delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(raw_expr_); + } + raw_expr_ = raw_expr; + if (raw_expr) { + + } else { + + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Constraint.raw_expr) +} +inline ::pg_query::Node* Constraint::release_raw_expr() { + + ::pg_query::Node* temp = raw_expr_; + raw_expr_ = nullptr; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + return temp; +} +inline ::pg_query::Node* Constraint::unsafe_arena_release_raw_expr() { + // @@protoc_insertion_point(field_release:pg_query.Constraint.raw_expr) + + ::pg_query::Node* temp = raw_expr_; + raw_expr_ = nullptr; + return temp; +} +inline ::pg_query::Node* Constraint::_internal_mutable_raw_expr() { + + if (raw_expr_ == nullptr) { + auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); + raw_expr_ = p; + } + return raw_expr_; +} +inline ::pg_query::Node* Constraint::mutable_raw_expr() { + // @@protoc_insertion_point(field_mutable:pg_query.Constraint.raw_expr) + return _internal_mutable_raw_expr(); +} +inline void Constraint::set_allocated_raw_expr(::pg_query::Node* raw_expr) { + ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); + if (message_arena == nullptr) { + delete raw_expr_; + } + if (raw_expr) { + ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = + ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(raw_expr); + if (message_arena != submessage_arena) { + raw_expr = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( + message_arena, raw_expr, submessage_arena); + } + + } else { + + } + raw_expr_ = raw_expr; + // @@protoc_insertion_point(field_set_allocated:pg_query.Constraint.raw_expr) +} + +// string cooked_expr = 8 [json_name = "cooked_expr"]; +inline void Constraint::clear_cooked_expr() { + cooked_expr_.ClearToEmpty(); +} +inline const std::string& Constraint::cooked_expr() const { + // @@protoc_insertion_point(field_get:pg_query.Constraint.cooked_expr) + return _internal_cooked_expr(); +} +inline void Constraint::set_cooked_expr(const std::string& value) { + _internal_set_cooked_expr(value); + // @@protoc_insertion_point(field_set:pg_query.Constraint.cooked_expr) +} +inline std::string* Constraint::mutable_cooked_expr() { + // @@protoc_insertion_point(field_mutable:pg_query.Constraint.cooked_expr) + return _internal_mutable_cooked_expr(); +} +inline const std::string& Constraint::_internal_cooked_expr() const { + return cooked_expr_.Get(); +} +inline void Constraint::_internal_set_cooked_expr(const std::string& value) { + + cooked_expr_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArena()); +} +inline void Constraint::set_cooked_expr(std::string&& value) { + + cooked_expr_.Set( + ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::move(value), GetArena()); + // @@protoc_insertion_point(field_set_rvalue:pg_query.Constraint.cooked_expr) +} +inline void Constraint::set_cooked_expr(const char* value) { + GOOGLE_DCHECK(value != nullptr); + + cooked_expr_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string(value), GetArena()); + // @@protoc_insertion_point(field_set_char:pg_query.Constraint.cooked_expr) +} +inline void Constraint::set_cooked_expr(const char* value, + size_t size) { + + cooked_expr_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string( + reinterpret_cast(value), size), GetArena()); + // @@protoc_insertion_point(field_set_pointer:pg_query.Constraint.cooked_expr) +} +inline std::string* Constraint::_internal_mutable_cooked_expr() { + + return cooked_expr_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArena()); +} +inline std::string* Constraint::release_cooked_expr() { + // @@protoc_insertion_point(field_release:pg_query.Constraint.cooked_expr) + return cooked_expr_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); +} +inline void Constraint::set_allocated_cooked_expr(std::string* cooked_expr) { + if (cooked_expr != nullptr) { + + } else { + + } + cooked_expr_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), cooked_expr, + GetArena()); + // @@protoc_insertion_point(field_set_allocated:pg_query.Constraint.cooked_expr) +} + +// string generated_when = 9 [json_name = "generated_when"]; +inline void Constraint::clear_generated_when() { + generated_when_.ClearToEmpty(); +} +inline const std::string& Constraint::generated_when() const { + // @@protoc_insertion_point(field_get:pg_query.Constraint.generated_when) + return _internal_generated_when(); +} +inline void Constraint::set_generated_when(const std::string& value) { + _internal_set_generated_when(value); + // @@protoc_insertion_point(field_set:pg_query.Constraint.generated_when) +} +inline std::string* Constraint::mutable_generated_when() { + // @@protoc_insertion_point(field_mutable:pg_query.Constraint.generated_when) + return _internal_mutable_generated_when(); +} +inline const std::string& Constraint::_internal_generated_when() const { + return generated_when_.Get(); +} +inline void Constraint::_internal_set_generated_when(const std::string& value) { + + generated_when_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArena()); +} +inline void Constraint::set_generated_when(std::string&& value) { + + generated_when_.Set( + ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::move(value), GetArena()); + // @@protoc_insertion_point(field_set_rvalue:pg_query.Constraint.generated_when) +} +inline void Constraint::set_generated_when(const char* value) { + GOOGLE_DCHECK(value != nullptr); + + generated_when_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string(value), GetArena()); + // @@protoc_insertion_point(field_set_char:pg_query.Constraint.generated_when) +} +inline void Constraint::set_generated_when(const char* value, + size_t size) { + + generated_when_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string( + reinterpret_cast(value), size), GetArena()); + // @@protoc_insertion_point(field_set_pointer:pg_query.Constraint.generated_when) +} +inline std::string* Constraint::_internal_mutable_generated_when() { + + return generated_when_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArena()); +} +inline std::string* Constraint::release_generated_when() { + // @@protoc_insertion_point(field_release:pg_query.Constraint.generated_when) + return generated_when_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); +} +inline void Constraint::set_allocated_generated_when(std::string* generated_when) { + if (generated_when != nullptr) { + + } else { + + } + generated_when_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), generated_when, + GetArena()); + // @@protoc_insertion_point(field_set_allocated:pg_query.Constraint.generated_when) +} + +// repeated .pg_query.Node keys = 10 [json_name = "keys"]; +inline int Constraint::_internal_keys_size() const { + return keys_.size(); +} +inline int Constraint::keys_size() const { + return _internal_keys_size(); +} +inline void Constraint::clear_keys() { + keys_.Clear(); +} +inline ::pg_query::Node* Constraint::mutable_keys(int index) { + // @@protoc_insertion_point(field_mutable:pg_query.Constraint.keys) + return keys_.Mutable(index); +} +inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* +Constraint::mutable_keys() { + // @@protoc_insertion_point(field_mutable_list:pg_query.Constraint.keys) + return &keys_; +} +inline const ::pg_query::Node& Constraint::_internal_keys(int index) const { + return keys_.Get(index); +} +inline const ::pg_query::Node& Constraint::keys(int index) const { + // @@protoc_insertion_point(field_get:pg_query.Constraint.keys) + return _internal_keys(index); +} +inline ::pg_query::Node* Constraint::_internal_add_keys() { + return keys_.Add(); +} +inline ::pg_query::Node* Constraint::add_keys() { + // @@protoc_insertion_point(field_add:pg_query.Constraint.keys) + return _internal_add_keys(); +} +inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& +Constraint::keys() const { + // @@protoc_insertion_point(field_list:pg_query.Constraint.keys) + return keys_; +} + +// repeated .pg_query.Node including = 11 [json_name = "including"]; +inline int Constraint::_internal_including_size() const { + return including_.size(); +} +inline int Constraint::including_size() const { + return _internal_including_size(); +} +inline void Constraint::clear_including() { + including_.Clear(); +} +inline ::pg_query::Node* Constraint::mutable_including(int index) { + // @@protoc_insertion_point(field_mutable:pg_query.Constraint.including) + return including_.Mutable(index); +} +inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* +Constraint::mutable_including() { + // @@protoc_insertion_point(field_mutable_list:pg_query.Constraint.including) + return &including_; +} +inline const ::pg_query::Node& Constraint::_internal_including(int index) const { + return including_.Get(index); +} +inline const ::pg_query::Node& Constraint::including(int index) const { + // @@protoc_insertion_point(field_get:pg_query.Constraint.including) + return _internal_including(index); +} +inline ::pg_query::Node* Constraint::_internal_add_including() { + return including_.Add(); +} +inline ::pg_query::Node* Constraint::add_including() { + // @@protoc_insertion_point(field_add:pg_query.Constraint.including) + return _internal_add_including(); +} +inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& +Constraint::including() const { + // @@protoc_insertion_point(field_list:pg_query.Constraint.including) + return including_; +} + +// repeated .pg_query.Node exclusions = 12 [json_name = "exclusions"]; +inline int Constraint::_internal_exclusions_size() const { + return exclusions_.size(); +} +inline int Constraint::exclusions_size() const { + return _internal_exclusions_size(); +} +inline void Constraint::clear_exclusions() { + exclusions_.Clear(); +} +inline ::pg_query::Node* Constraint::mutable_exclusions(int index) { + // @@protoc_insertion_point(field_mutable:pg_query.Constraint.exclusions) + return exclusions_.Mutable(index); +} +inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* +Constraint::mutable_exclusions() { + // @@protoc_insertion_point(field_mutable_list:pg_query.Constraint.exclusions) + return &exclusions_; +} +inline const ::pg_query::Node& Constraint::_internal_exclusions(int index) const { + return exclusions_.Get(index); +} +inline const ::pg_query::Node& Constraint::exclusions(int index) const { + // @@protoc_insertion_point(field_get:pg_query.Constraint.exclusions) + return _internal_exclusions(index); +} +inline ::pg_query::Node* Constraint::_internal_add_exclusions() { + return exclusions_.Add(); +} +inline ::pg_query::Node* Constraint::add_exclusions() { + // @@protoc_insertion_point(field_add:pg_query.Constraint.exclusions) + return _internal_add_exclusions(); +} +inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& +Constraint::exclusions() const { + // @@protoc_insertion_point(field_list:pg_query.Constraint.exclusions) + return exclusions_; +} + +// repeated .pg_query.Node options = 13 [json_name = "options"]; +inline int Constraint::_internal_options_size() const { + return options_.size(); +} +inline int Constraint::options_size() const { + return _internal_options_size(); +} +inline void Constraint::clear_options() { + options_.Clear(); +} +inline ::pg_query::Node* Constraint::mutable_options(int index) { + // @@protoc_insertion_point(field_mutable:pg_query.Constraint.options) + return options_.Mutable(index); +} +inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* +Constraint::mutable_options() { + // @@protoc_insertion_point(field_mutable_list:pg_query.Constraint.options) + return &options_; +} +inline const ::pg_query::Node& Constraint::_internal_options(int index) const { + return options_.Get(index); +} +inline const ::pg_query::Node& Constraint::options(int index) const { + // @@protoc_insertion_point(field_get:pg_query.Constraint.options) + return _internal_options(index); +} +inline ::pg_query::Node* Constraint::_internal_add_options() { + return options_.Add(); +} +inline ::pg_query::Node* Constraint::add_options() { + // @@protoc_insertion_point(field_add:pg_query.Constraint.options) + return _internal_add_options(); +} +inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& +Constraint::options() const { + // @@protoc_insertion_point(field_list:pg_query.Constraint.options) + return options_; +} + +// string indexname = 14 [json_name = "indexname"]; +inline void Constraint::clear_indexname() { + indexname_.ClearToEmpty(); +} +inline const std::string& Constraint::indexname() const { + // @@protoc_insertion_point(field_get:pg_query.Constraint.indexname) + return _internal_indexname(); +} +inline void Constraint::set_indexname(const std::string& value) { + _internal_set_indexname(value); + // @@protoc_insertion_point(field_set:pg_query.Constraint.indexname) +} +inline std::string* Constraint::mutable_indexname() { + // @@protoc_insertion_point(field_mutable:pg_query.Constraint.indexname) + return _internal_mutable_indexname(); +} +inline const std::string& Constraint::_internal_indexname() const { + return indexname_.Get(); +} +inline void Constraint::_internal_set_indexname(const std::string& value) { + + indexname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArena()); +} +inline void Constraint::set_indexname(std::string&& value) { + + indexname_.Set( + ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::move(value), GetArena()); + // @@protoc_insertion_point(field_set_rvalue:pg_query.Constraint.indexname) +} +inline void Constraint::set_indexname(const char* value) { + GOOGLE_DCHECK(value != nullptr); + + indexname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string(value), GetArena()); + // @@protoc_insertion_point(field_set_char:pg_query.Constraint.indexname) +} +inline void Constraint::set_indexname(const char* value, + size_t size) { + + indexname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string( + reinterpret_cast(value), size), GetArena()); + // @@protoc_insertion_point(field_set_pointer:pg_query.Constraint.indexname) +} +inline std::string* Constraint::_internal_mutable_indexname() { + + return indexname_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArena()); +} +inline std::string* Constraint::release_indexname() { + // @@protoc_insertion_point(field_release:pg_query.Constraint.indexname) + return indexname_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); +} +inline void Constraint::set_allocated_indexname(std::string* indexname) { + if (indexname != nullptr) { + + } else { + + } + indexname_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), indexname, + GetArena()); + // @@protoc_insertion_point(field_set_allocated:pg_query.Constraint.indexname) +} + +// string indexspace = 15 [json_name = "indexspace"]; +inline void Constraint::clear_indexspace() { + indexspace_.ClearToEmpty(); +} +inline const std::string& Constraint::indexspace() const { + // @@protoc_insertion_point(field_get:pg_query.Constraint.indexspace) + return _internal_indexspace(); +} +inline void Constraint::set_indexspace(const std::string& value) { + _internal_set_indexspace(value); + // @@protoc_insertion_point(field_set:pg_query.Constraint.indexspace) +} +inline std::string* Constraint::mutable_indexspace() { + // @@protoc_insertion_point(field_mutable:pg_query.Constraint.indexspace) + return _internal_mutable_indexspace(); +} +inline const std::string& Constraint::_internal_indexspace() const { + return indexspace_.Get(); +} +inline void Constraint::_internal_set_indexspace(const std::string& value) { + + indexspace_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArena()); +} +inline void Constraint::set_indexspace(std::string&& value) { + + indexspace_.Set( + ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::move(value), GetArena()); + // @@protoc_insertion_point(field_set_rvalue:pg_query.Constraint.indexspace) +} +inline void Constraint::set_indexspace(const char* value) { + GOOGLE_DCHECK(value != nullptr); + + indexspace_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string(value), GetArena()); + // @@protoc_insertion_point(field_set_char:pg_query.Constraint.indexspace) +} +inline void Constraint::set_indexspace(const char* value, + size_t size) { + + indexspace_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string( + reinterpret_cast(value), size), GetArena()); + // @@protoc_insertion_point(field_set_pointer:pg_query.Constraint.indexspace) +} +inline std::string* Constraint::_internal_mutable_indexspace() { + + return indexspace_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArena()); +} +inline std::string* Constraint::release_indexspace() { + // @@protoc_insertion_point(field_release:pg_query.Constraint.indexspace) + return indexspace_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); +} +inline void Constraint::set_allocated_indexspace(std::string* indexspace) { + if (indexspace != nullptr) { + + } else { + + } + indexspace_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), indexspace, + GetArena()); + // @@protoc_insertion_point(field_set_allocated:pg_query.Constraint.indexspace) +} + +// bool reset_default_tblspc = 16 [json_name = "reset_default_tblspc"]; +inline void Constraint::clear_reset_default_tblspc() { + reset_default_tblspc_ = false; +} +inline bool Constraint::_internal_reset_default_tblspc() const { + return reset_default_tblspc_; +} +inline bool Constraint::reset_default_tblspc() const { + // @@protoc_insertion_point(field_get:pg_query.Constraint.reset_default_tblspc) + return _internal_reset_default_tblspc(); +} +inline void Constraint::_internal_set_reset_default_tblspc(bool value) { + + reset_default_tblspc_ = value; +} +inline void Constraint::set_reset_default_tblspc(bool value) { + _internal_set_reset_default_tblspc(value); + // @@protoc_insertion_point(field_set:pg_query.Constraint.reset_default_tblspc) +} + +// string access_method = 17 [json_name = "access_method"]; +inline void Constraint::clear_access_method() { + access_method_.ClearToEmpty(); +} +inline const std::string& Constraint::access_method() const { + // @@protoc_insertion_point(field_get:pg_query.Constraint.access_method) + return _internal_access_method(); +} +inline void Constraint::set_access_method(const std::string& value) { + _internal_set_access_method(value); + // @@protoc_insertion_point(field_set:pg_query.Constraint.access_method) +} +inline std::string* Constraint::mutable_access_method() { + // @@protoc_insertion_point(field_mutable:pg_query.Constraint.access_method) + return _internal_mutable_access_method(); +} +inline const std::string& Constraint::_internal_access_method() const { + return access_method_.Get(); +} +inline void Constraint::_internal_set_access_method(const std::string& value) { + + access_method_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArena()); +} +inline void Constraint::set_access_method(std::string&& value) { + + access_method_.Set( + ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::move(value), GetArena()); + // @@protoc_insertion_point(field_set_rvalue:pg_query.Constraint.access_method) +} +inline void Constraint::set_access_method(const char* value) { + GOOGLE_DCHECK(value != nullptr); + + access_method_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string(value), GetArena()); + // @@protoc_insertion_point(field_set_char:pg_query.Constraint.access_method) +} +inline void Constraint::set_access_method(const char* value, + size_t size) { + + access_method_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string( + reinterpret_cast(value), size), GetArena()); + // @@protoc_insertion_point(field_set_pointer:pg_query.Constraint.access_method) +} +inline std::string* Constraint::_internal_mutable_access_method() { + + return access_method_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArena()); +} +inline std::string* Constraint::release_access_method() { + // @@protoc_insertion_point(field_release:pg_query.Constraint.access_method) + return access_method_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); +} +inline void Constraint::set_allocated_access_method(std::string* access_method) { + if (access_method != nullptr) { + + } else { + + } + access_method_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), access_method, + GetArena()); + // @@protoc_insertion_point(field_set_allocated:pg_query.Constraint.access_method) +} + +// .pg_query.Node where_clause = 18 [json_name = "where_clause"]; +inline bool Constraint::_internal_has_where_clause() const { + return this != internal_default_instance() && where_clause_ != nullptr; +} +inline bool Constraint::has_where_clause() const { + return _internal_has_where_clause(); +} +inline void Constraint::clear_where_clause() { + if (GetArena() == nullptr && where_clause_ != nullptr) { + delete where_clause_; + } + where_clause_ = nullptr; +} +inline const ::pg_query::Node& Constraint::_internal_where_clause() const { + const ::pg_query::Node* p = where_clause_; + return p != nullptr ? *p : reinterpret_cast( + ::pg_query::_Node_default_instance_); +} +inline const ::pg_query::Node& Constraint::where_clause() const { + // @@protoc_insertion_point(field_get:pg_query.Constraint.where_clause) + return _internal_where_clause(); +} +inline void Constraint::unsafe_arena_set_allocated_where_clause( + ::pg_query::Node* where_clause) { + if (GetArena() == nullptr) { + delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(where_clause_); + } + where_clause_ = where_clause; + if (where_clause) { + + } else { + + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Constraint.where_clause) +} +inline ::pg_query::Node* Constraint::release_where_clause() { + + ::pg_query::Node* temp = where_clause_; + where_clause_ = nullptr; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + return temp; +} +inline ::pg_query::Node* Constraint::unsafe_arena_release_where_clause() { + // @@protoc_insertion_point(field_release:pg_query.Constraint.where_clause) + + ::pg_query::Node* temp = where_clause_; + where_clause_ = nullptr; + return temp; +} +inline ::pg_query::Node* Constraint::_internal_mutable_where_clause() { + + if (where_clause_ == nullptr) { + auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); + where_clause_ = p; + } + return where_clause_; +} +inline ::pg_query::Node* Constraint::mutable_where_clause() { + // @@protoc_insertion_point(field_mutable:pg_query.Constraint.where_clause) + return _internal_mutable_where_clause(); +} +inline void Constraint::set_allocated_where_clause(::pg_query::Node* where_clause) { + ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); + if (message_arena == nullptr) { + delete where_clause_; + } + if (where_clause) { + ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = + ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(where_clause); + if (message_arena != submessage_arena) { + where_clause = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( + message_arena, where_clause, submessage_arena); + } + + } else { + + } + where_clause_ = where_clause; + // @@protoc_insertion_point(field_set_allocated:pg_query.Constraint.where_clause) +} + +// .pg_query.RangeVar pktable = 19 [json_name = "pktable"]; +inline bool Constraint::_internal_has_pktable() const { + return this != internal_default_instance() && pktable_ != nullptr; +} +inline bool Constraint::has_pktable() const { + return _internal_has_pktable(); +} +inline void Constraint::clear_pktable() { + if (GetArena() == nullptr && pktable_ != nullptr) { + delete pktable_; + } + pktable_ = nullptr; +} +inline const ::pg_query::RangeVar& Constraint::_internal_pktable() const { + const ::pg_query::RangeVar* p = pktable_; + return p != nullptr ? *p : reinterpret_cast( + ::pg_query::_RangeVar_default_instance_); +} +inline const ::pg_query::RangeVar& Constraint::pktable() const { + // @@protoc_insertion_point(field_get:pg_query.Constraint.pktable) + return _internal_pktable(); +} +inline void Constraint::unsafe_arena_set_allocated_pktable( + ::pg_query::RangeVar* pktable) { + if (GetArena() == nullptr) { + delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(pktable_); + } + pktable_ = pktable; + if (pktable) { + + } else { + + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Constraint.pktable) +} +inline ::pg_query::RangeVar* Constraint::release_pktable() { + + ::pg_query::RangeVar* temp = pktable_; + pktable_ = nullptr; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + return temp; +} +inline ::pg_query::RangeVar* Constraint::unsafe_arena_release_pktable() { + // @@protoc_insertion_point(field_release:pg_query.Constraint.pktable) + + ::pg_query::RangeVar* temp = pktable_; + pktable_ = nullptr; + return temp; +} +inline ::pg_query::RangeVar* Constraint::_internal_mutable_pktable() { + + if (pktable_ == nullptr) { + auto* p = CreateMaybeMessage<::pg_query::RangeVar>(GetArena()); + pktable_ = p; + } + return pktable_; +} +inline ::pg_query::RangeVar* Constraint::mutable_pktable() { + // @@protoc_insertion_point(field_mutable:pg_query.Constraint.pktable) + return _internal_mutable_pktable(); +} +inline void Constraint::set_allocated_pktable(::pg_query::RangeVar* pktable) { + ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); + if (message_arena == nullptr) { + delete pktable_; + } + if (pktable) { + ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = + ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(pktable); + if (message_arena != submessage_arena) { + pktable = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( + message_arena, pktable, submessage_arena); + } + + } else { + + } + pktable_ = pktable; + // @@protoc_insertion_point(field_set_allocated:pg_query.Constraint.pktable) +} + +// repeated .pg_query.Node fk_attrs = 20 [json_name = "fk_attrs"]; +inline int Constraint::_internal_fk_attrs_size() const { + return fk_attrs_.size(); +} +inline int Constraint::fk_attrs_size() const { + return _internal_fk_attrs_size(); +} +inline void Constraint::clear_fk_attrs() { + fk_attrs_.Clear(); +} +inline ::pg_query::Node* Constraint::mutable_fk_attrs(int index) { + // @@protoc_insertion_point(field_mutable:pg_query.Constraint.fk_attrs) + return fk_attrs_.Mutable(index); +} +inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* +Constraint::mutable_fk_attrs() { + // @@protoc_insertion_point(field_mutable_list:pg_query.Constraint.fk_attrs) + return &fk_attrs_; +} +inline const ::pg_query::Node& Constraint::_internal_fk_attrs(int index) const { + return fk_attrs_.Get(index); +} +inline const ::pg_query::Node& Constraint::fk_attrs(int index) const { + // @@protoc_insertion_point(field_get:pg_query.Constraint.fk_attrs) + return _internal_fk_attrs(index); +} +inline ::pg_query::Node* Constraint::_internal_add_fk_attrs() { + return fk_attrs_.Add(); +} +inline ::pg_query::Node* Constraint::add_fk_attrs() { + // @@protoc_insertion_point(field_add:pg_query.Constraint.fk_attrs) + return _internal_add_fk_attrs(); +} +inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& +Constraint::fk_attrs() const { + // @@protoc_insertion_point(field_list:pg_query.Constraint.fk_attrs) + return fk_attrs_; +} + +// repeated .pg_query.Node pk_attrs = 21 [json_name = "pk_attrs"]; +inline int Constraint::_internal_pk_attrs_size() const { + return pk_attrs_.size(); +} +inline int Constraint::pk_attrs_size() const { + return _internal_pk_attrs_size(); +} +inline void Constraint::clear_pk_attrs() { + pk_attrs_.Clear(); +} +inline ::pg_query::Node* Constraint::mutable_pk_attrs(int index) { + // @@protoc_insertion_point(field_mutable:pg_query.Constraint.pk_attrs) + return pk_attrs_.Mutable(index); +} +inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* +Constraint::mutable_pk_attrs() { + // @@protoc_insertion_point(field_mutable_list:pg_query.Constraint.pk_attrs) + return &pk_attrs_; +} +inline const ::pg_query::Node& Constraint::_internal_pk_attrs(int index) const { + return pk_attrs_.Get(index); +} +inline const ::pg_query::Node& Constraint::pk_attrs(int index) const { + // @@protoc_insertion_point(field_get:pg_query.Constraint.pk_attrs) + return _internal_pk_attrs(index); +} +inline ::pg_query::Node* Constraint::_internal_add_pk_attrs() { + return pk_attrs_.Add(); +} +inline ::pg_query::Node* Constraint::add_pk_attrs() { + // @@protoc_insertion_point(field_add:pg_query.Constraint.pk_attrs) + return _internal_add_pk_attrs(); +} +inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& +Constraint::pk_attrs() const { + // @@protoc_insertion_point(field_list:pg_query.Constraint.pk_attrs) + return pk_attrs_; +} + +// string fk_matchtype = 22 [json_name = "fk_matchtype"]; +inline void Constraint::clear_fk_matchtype() { + fk_matchtype_.ClearToEmpty(); +} +inline const std::string& Constraint::fk_matchtype() const { + // @@protoc_insertion_point(field_get:pg_query.Constraint.fk_matchtype) + return _internal_fk_matchtype(); +} +inline void Constraint::set_fk_matchtype(const std::string& value) { + _internal_set_fk_matchtype(value); + // @@protoc_insertion_point(field_set:pg_query.Constraint.fk_matchtype) +} +inline std::string* Constraint::mutable_fk_matchtype() { + // @@protoc_insertion_point(field_mutable:pg_query.Constraint.fk_matchtype) + return _internal_mutable_fk_matchtype(); +} +inline const std::string& Constraint::_internal_fk_matchtype() const { + return fk_matchtype_.Get(); +} +inline void Constraint::_internal_set_fk_matchtype(const std::string& value) { + + fk_matchtype_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArena()); +} +inline void Constraint::set_fk_matchtype(std::string&& value) { + + fk_matchtype_.Set( + ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::move(value), GetArena()); + // @@protoc_insertion_point(field_set_rvalue:pg_query.Constraint.fk_matchtype) +} +inline void Constraint::set_fk_matchtype(const char* value) { + GOOGLE_DCHECK(value != nullptr); + + fk_matchtype_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string(value), GetArena()); + // @@protoc_insertion_point(field_set_char:pg_query.Constraint.fk_matchtype) +} +inline void Constraint::set_fk_matchtype(const char* value, + size_t size) { + + fk_matchtype_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string( + reinterpret_cast(value), size), GetArena()); + // @@protoc_insertion_point(field_set_pointer:pg_query.Constraint.fk_matchtype) +} +inline std::string* Constraint::_internal_mutable_fk_matchtype() { + + return fk_matchtype_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArena()); +} +inline std::string* Constraint::release_fk_matchtype() { + // @@protoc_insertion_point(field_release:pg_query.Constraint.fk_matchtype) + return fk_matchtype_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); +} +inline void Constraint::set_allocated_fk_matchtype(std::string* fk_matchtype) { + if (fk_matchtype != nullptr) { + + } else { + + } + fk_matchtype_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), fk_matchtype, + GetArena()); + // @@protoc_insertion_point(field_set_allocated:pg_query.Constraint.fk_matchtype) +} + +// string fk_upd_action = 23 [json_name = "fk_upd_action"]; +inline void Constraint::clear_fk_upd_action() { + fk_upd_action_.ClearToEmpty(); +} +inline const std::string& Constraint::fk_upd_action() const { + // @@protoc_insertion_point(field_get:pg_query.Constraint.fk_upd_action) + return _internal_fk_upd_action(); +} +inline void Constraint::set_fk_upd_action(const std::string& value) { + _internal_set_fk_upd_action(value); + // @@protoc_insertion_point(field_set:pg_query.Constraint.fk_upd_action) +} +inline std::string* Constraint::mutable_fk_upd_action() { + // @@protoc_insertion_point(field_mutable:pg_query.Constraint.fk_upd_action) + return _internal_mutable_fk_upd_action(); +} +inline const std::string& Constraint::_internal_fk_upd_action() const { + return fk_upd_action_.Get(); +} +inline void Constraint::_internal_set_fk_upd_action(const std::string& value) { + + fk_upd_action_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArena()); +} +inline void Constraint::set_fk_upd_action(std::string&& value) { + + fk_upd_action_.Set( + ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::move(value), GetArena()); + // @@protoc_insertion_point(field_set_rvalue:pg_query.Constraint.fk_upd_action) +} +inline void Constraint::set_fk_upd_action(const char* value) { + GOOGLE_DCHECK(value != nullptr); + + fk_upd_action_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string(value), GetArena()); + // @@protoc_insertion_point(field_set_char:pg_query.Constraint.fk_upd_action) +} +inline void Constraint::set_fk_upd_action(const char* value, + size_t size) { + + fk_upd_action_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string( + reinterpret_cast(value), size), GetArena()); + // @@protoc_insertion_point(field_set_pointer:pg_query.Constraint.fk_upd_action) +} +inline std::string* Constraint::_internal_mutable_fk_upd_action() { + + return fk_upd_action_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArena()); +} +inline std::string* Constraint::release_fk_upd_action() { + // @@protoc_insertion_point(field_release:pg_query.Constraint.fk_upd_action) + return fk_upd_action_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); +} +inline void Constraint::set_allocated_fk_upd_action(std::string* fk_upd_action) { + if (fk_upd_action != nullptr) { + + } else { + + } + fk_upd_action_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), fk_upd_action, + GetArena()); + // @@protoc_insertion_point(field_set_allocated:pg_query.Constraint.fk_upd_action) +} + +// string fk_del_action = 24 [json_name = "fk_del_action"]; +inline void Constraint::clear_fk_del_action() { + fk_del_action_.ClearToEmpty(); +} +inline const std::string& Constraint::fk_del_action() const { + // @@protoc_insertion_point(field_get:pg_query.Constraint.fk_del_action) + return _internal_fk_del_action(); +} +inline void Constraint::set_fk_del_action(const std::string& value) { + _internal_set_fk_del_action(value); + // @@protoc_insertion_point(field_set:pg_query.Constraint.fk_del_action) +} +inline std::string* Constraint::mutable_fk_del_action() { + // @@protoc_insertion_point(field_mutable:pg_query.Constraint.fk_del_action) + return _internal_mutable_fk_del_action(); +} +inline const std::string& Constraint::_internal_fk_del_action() const { + return fk_del_action_.Get(); +} +inline void Constraint::_internal_set_fk_del_action(const std::string& value) { + + fk_del_action_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArena()); +} +inline void Constraint::set_fk_del_action(std::string&& value) { + + fk_del_action_.Set( + ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::move(value), GetArena()); + // @@protoc_insertion_point(field_set_rvalue:pg_query.Constraint.fk_del_action) +} +inline void Constraint::set_fk_del_action(const char* value) { + GOOGLE_DCHECK(value != nullptr); + + fk_del_action_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string(value), GetArena()); + // @@protoc_insertion_point(field_set_char:pg_query.Constraint.fk_del_action) +} +inline void Constraint::set_fk_del_action(const char* value, + size_t size) { + + fk_del_action_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string( + reinterpret_cast(value), size), GetArena()); + // @@protoc_insertion_point(field_set_pointer:pg_query.Constraint.fk_del_action) +} +inline std::string* Constraint::_internal_mutable_fk_del_action() { + + return fk_del_action_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArena()); +} +inline std::string* Constraint::release_fk_del_action() { + // @@protoc_insertion_point(field_release:pg_query.Constraint.fk_del_action) + return fk_del_action_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); +} +inline void Constraint::set_allocated_fk_del_action(std::string* fk_del_action) { + if (fk_del_action != nullptr) { + + } else { + + } + fk_del_action_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), fk_del_action, + GetArena()); + // @@protoc_insertion_point(field_set_allocated:pg_query.Constraint.fk_del_action) +} + +// repeated .pg_query.Node old_conpfeqop = 25 [json_name = "old_conpfeqop"]; +inline int Constraint::_internal_old_conpfeqop_size() const { + return old_conpfeqop_.size(); +} +inline int Constraint::old_conpfeqop_size() const { + return _internal_old_conpfeqop_size(); +} +inline void Constraint::clear_old_conpfeqop() { + old_conpfeqop_.Clear(); +} +inline ::pg_query::Node* Constraint::mutable_old_conpfeqop(int index) { + // @@protoc_insertion_point(field_mutable:pg_query.Constraint.old_conpfeqop) + return old_conpfeqop_.Mutable(index); +} +inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* +Constraint::mutable_old_conpfeqop() { + // @@protoc_insertion_point(field_mutable_list:pg_query.Constraint.old_conpfeqop) + return &old_conpfeqop_; +} +inline const ::pg_query::Node& Constraint::_internal_old_conpfeqop(int index) const { + return old_conpfeqop_.Get(index); +} +inline const ::pg_query::Node& Constraint::old_conpfeqop(int index) const { + // @@protoc_insertion_point(field_get:pg_query.Constraint.old_conpfeqop) + return _internal_old_conpfeqop(index); +} +inline ::pg_query::Node* Constraint::_internal_add_old_conpfeqop() { + return old_conpfeqop_.Add(); +} +inline ::pg_query::Node* Constraint::add_old_conpfeqop() { + // @@protoc_insertion_point(field_add:pg_query.Constraint.old_conpfeqop) + return _internal_add_old_conpfeqop(); +} +inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& +Constraint::old_conpfeqop() const { + // @@protoc_insertion_point(field_list:pg_query.Constraint.old_conpfeqop) + return old_conpfeqop_; +} + +// uint32 old_pktable_oid = 26 [json_name = "old_pktable_oid"]; +inline void Constraint::clear_old_pktable_oid() { + old_pktable_oid_ = 0u; +} +inline ::PROTOBUF_NAMESPACE_ID::uint32 Constraint::_internal_old_pktable_oid() const { + return old_pktable_oid_; +} +inline ::PROTOBUF_NAMESPACE_ID::uint32 Constraint::old_pktable_oid() const { + // @@protoc_insertion_point(field_get:pg_query.Constraint.old_pktable_oid) + return _internal_old_pktable_oid(); +} +inline void Constraint::_internal_set_old_pktable_oid(::PROTOBUF_NAMESPACE_ID::uint32 value) { + + old_pktable_oid_ = value; +} +inline void Constraint::set_old_pktable_oid(::PROTOBUF_NAMESPACE_ID::uint32 value) { + _internal_set_old_pktable_oid(value); + // @@protoc_insertion_point(field_set:pg_query.Constraint.old_pktable_oid) +} + +// bool skip_validation = 27 [json_name = "skip_validation"]; +inline void Constraint::clear_skip_validation() { + skip_validation_ = false; +} +inline bool Constraint::_internal_skip_validation() const { + return skip_validation_; +} +inline bool Constraint::skip_validation() const { + // @@protoc_insertion_point(field_get:pg_query.Constraint.skip_validation) + return _internal_skip_validation(); +} +inline void Constraint::_internal_set_skip_validation(bool value) { + + skip_validation_ = value; +} +inline void Constraint::set_skip_validation(bool value) { + _internal_set_skip_validation(value); + // @@protoc_insertion_point(field_set:pg_query.Constraint.skip_validation) +} + +// bool initially_valid = 28 [json_name = "initially_valid"]; +inline void Constraint::clear_initially_valid() { + initially_valid_ = false; +} +inline bool Constraint::_internal_initially_valid() const { + return initially_valid_; +} +inline bool Constraint::initially_valid() const { + // @@protoc_insertion_point(field_get:pg_query.Constraint.initially_valid) + return _internal_initially_valid(); +} +inline void Constraint::_internal_set_initially_valid(bool value) { + + initially_valid_ = value; +} +inline void Constraint::set_initially_valid(bool value) { + _internal_set_initially_valid(value); + // @@protoc_insertion_point(field_set:pg_query.Constraint.initially_valid) +} + +// ------------------------------------------------------------------- + +// DefElem + +// string defnamespace = 1 [json_name = "defnamespace"]; +inline void DefElem::clear_defnamespace() { + defnamespace_.ClearToEmpty(); +} +inline const std::string& DefElem::defnamespace() const { + // @@protoc_insertion_point(field_get:pg_query.DefElem.defnamespace) + return _internal_defnamespace(); +} +inline void DefElem::set_defnamespace(const std::string& value) { + _internal_set_defnamespace(value); + // @@protoc_insertion_point(field_set:pg_query.DefElem.defnamespace) +} +inline std::string* DefElem::mutable_defnamespace() { + // @@protoc_insertion_point(field_mutable:pg_query.DefElem.defnamespace) + return _internal_mutable_defnamespace(); +} +inline const std::string& DefElem::_internal_defnamespace() const { + return defnamespace_.Get(); +} +inline void DefElem::_internal_set_defnamespace(const std::string& value) { + + defnamespace_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArena()); +} +inline void DefElem::set_defnamespace(std::string&& value) { + + defnamespace_.Set( + ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::move(value), GetArena()); + // @@protoc_insertion_point(field_set_rvalue:pg_query.DefElem.defnamespace) +} +inline void DefElem::set_defnamespace(const char* value) { + GOOGLE_DCHECK(value != nullptr); + + defnamespace_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string(value), GetArena()); + // @@protoc_insertion_point(field_set_char:pg_query.DefElem.defnamespace) +} +inline void DefElem::set_defnamespace(const char* value, + size_t size) { + + defnamespace_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string( + reinterpret_cast(value), size), GetArena()); + // @@protoc_insertion_point(field_set_pointer:pg_query.DefElem.defnamespace) +} +inline std::string* DefElem::_internal_mutable_defnamespace() { + + return defnamespace_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArena()); +} +inline std::string* DefElem::release_defnamespace() { + // @@protoc_insertion_point(field_release:pg_query.DefElem.defnamespace) + return defnamespace_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); +} +inline void DefElem::set_allocated_defnamespace(std::string* defnamespace) { + if (defnamespace != nullptr) { + + } else { + + } + defnamespace_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), defnamespace, + GetArena()); + // @@protoc_insertion_point(field_set_allocated:pg_query.DefElem.defnamespace) +} + +// string defname = 2 [json_name = "defname"]; +inline void DefElem::clear_defname() { + defname_.ClearToEmpty(); +} +inline const std::string& DefElem::defname() const { + // @@protoc_insertion_point(field_get:pg_query.DefElem.defname) + return _internal_defname(); +} +inline void DefElem::set_defname(const std::string& value) { + _internal_set_defname(value); + // @@protoc_insertion_point(field_set:pg_query.DefElem.defname) +} +inline std::string* DefElem::mutable_defname() { + // @@protoc_insertion_point(field_mutable:pg_query.DefElem.defname) + return _internal_mutable_defname(); +} +inline const std::string& DefElem::_internal_defname() const { + return defname_.Get(); +} +inline void DefElem::_internal_set_defname(const std::string& value) { + + defname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArena()); +} +inline void DefElem::set_defname(std::string&& value) { + + defname_.Set( + ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::move(value), GetArena()); + // @@protoc_insertion_point(field_set_rvalue:pg_query.DefElem.defname) +} +inline void DefElem::set_defname(const char* value) { + GOOGLE_DCHECK(value != nullptr); + + defname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string(value), GetArena()); + // @@protoc_insertion_point(field_set_char:pg_query.DefElem.defname) +} +inline void DefElem::set_defname(const char* value, + size_t size) { + + defname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string( + reinterpret_cast(value), size), GetArena()); + // @@protoc_insertion_point(field_set_pointer:pg_query.DefElem.defname) +} +inline std::string* DefElem::_internal_mutable_defname() { + + return defname_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArena()); +} +inline std::string* DefElem::release_defname() { + // @@protoc_insertion_point(field_release:pg_query.DefElem.defname) + return defname_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); +} +inline void DefElem::set_allocated_defname(std::string* defname) { + if (defname != nullptr) { + + } else { + + } + defname_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), defname, + GetArena()); + // @@protoc_insertion_point(field_set_allocated:pg_query.DefElem.defname) +} + +// .pg_query.Node arg = 3 [json_name = "arg"]; +inline bool DefElem::_internal_has_arg() const { + return this != internal_default_instance() && arg_ != nullptr; +} +inline bool DefElem::has_arg() const { + return _internal_has_arg(); +} +inline void DefElem::clear_arg() { + if (GetArena() == nullptr && arg_ != nullptr) { + delete arg_; + } + arg_ = nullptr; +} +inline const ::pg_query::Node& DefElem::_internal_arg() const { + const ::pg_query::Node* p = arg_; + return p != nullptr ? *p : reinterpret_cast( + ::pg_query::_Node_default_instance_); +} +inline const ::pg_query::Node& DefElem::arg() const { + // @@protoc_insertion_point(field_get:pg_query.DefElem.arg) + return _internal_arg(); +} +inline void DefElem::unsafe_arena_set_allocated_arg( + ::pg_query::Node* arg) { + if (GetArena() == nullptr) { + delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(arg_); + } + arg_ = arg; + if (arg) { + + } else { + + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.DefElem.arg) +} +inline ::pg_query::Node* DefElem::release_arg() { + + ::pg_query::Node* temp = arg_; + arg_ = nullptr; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + return temp; +} +inline ::pg_query::Node* DefElem::unsafe_arena_release_arg() { + // @@protoc_insertion_point(field_release:pg_query.DefElem.arg) + + ::pg_query::Node* temp = arg_; + arg_ = nullptr; + return temp; +} +inline ::pg_query::Node* DefElem::_internal_mutable_arg() { + + if (arg_ == nullptr) { + auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); + arg_ = p; + } + return arg_; +} +inline ::pg_query::Node* DefElem::mutable_arg() { + // @@protoc_insertion_point(field_mutable:pg_query.DefElem.arg) + return _internal_mutable_arg(); +} +inline void DefElem::set_allocated_arg(::pg_query::Node* arg) { + ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); + if (message_arena == nullptr) { + delete arg_; + } + if (arg) { + ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = + ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(arg); + if (message_arena != submessage_arena) { + arg = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( + message_arena, arg, submessage_arena); + } + + } else { + + } + arg_ = arg; + // @@protoc_insertion_point(field_set_allocated:pg_query.DefElem.arg) +} + +// .pg_query.DefElemAction defaction = 4 [json_name = "defaction"]; +inline void DefElem::clear_defaction() { + defaction_ = 0; +} +inline ::pg_query::DefElemAction DefElem::_internal_defaction() const { + return static_cast< ::pg_query::DefElemAction >(defaction_); +} +inline ::pg_query::DefElemAction DefElem::defaction() const { + // @@protoc_insertion_point(field_get:pg_query.DefElem.defaction) + return _internal_defaction(); +} +inline void DefElem::_internal_set_defaction(::pg_query::DefElemAction value) { + + defaction_ = value; +} +inline void DefElem::set_defaction(::pg_query::DefElemAction value) { + _internal_set_defaction(value); + // @@protoc_insertion_point(field_set:pg_query.DefElem.defaction) +} + +// int32 location = 5 [json_name = "location"]; +inline void DefElem::clear_location() { + location_ = 0; +} +inline ::PROTOBUF_NAMESPACE_ID::int32 DefElem::_internal_location() const { + return location_; +} +inline ::PROTOBUF_NAMESPACE_ID::int32 DefElem::location() const { + // @@protoc_insertion_point(field_get:pg_query.DefElem.location) + return _internal_location(); +} +inline void DefElem::_internal_set_location(::PROTOBUF_NAMESPACE_ID::int32 value) { + + location_ = value; +} +inline void DefElem::set_location(::PROTOBUF_NAMESPACE_ID::int32 value) { + _internal_set_location(value); + // @@protoc_insertion_point(field_set:pg_query.DefElem.location) +} + +// ------------------------------------------------------------------- + +// RangeTblEntry + +// .pg_query.RTEKind rtekind = 1 [json_name = "rtekind"]; +inline void RangeTblEntry::clear_rtekind() { + rtekind_ = 0; +} +inline ::pg_query::RTEKind RangeTblEntry::_internal_rtekind() const { + return static_cast< ::pg_query::RTEKind >(rtekind_); +} +inline ::pg_query::RTEKind RangeTblEntry::rtekind() const { + // @@protoc_insertion_point(field_get:pg_query.RangeTblEntry.rtekind) + return _internal_rtekind(); +} +inline void RangeTblEntry::_internal_set_rtekind(::pg_query::RTEKind value) { + + rtekind_ = value; +} +inline void RangeTblEntry::set_rtekind(::pg_query::RTEKind value) { + _internal_set_rtekind(value); + // @@protoc_insertion_point(field_set:pg_query.RangeTblEntry.rtekind) +} + +// uint32 relid = 2 [json_name = "relid"]; +inline void RangeTblEntry::clear_relid() { + relid_ = 0u; +} +inline ::PROTOBUF_NAMESPACE_ID::uint32 RangeTblEntry::_internal_relid() const { + return relid_; +} +inline ::PROTOBUF_NAMESPACE_ID::uint32 RangeTblEntry::relid() const { + // @@protoc_insertion_point(field_get:pg_query.RangeTblEntry.relid) + return _internal_relid(); +} +inline void RangeTblEntry::_internal_set_relid(::PROTOBUF_NAMESPACE_ID::uint32 value) { + + relid_ = value; +} +inline void RangeTblEntry::set_relid(::PROTOBUF_NAMESPACE_ID::uint32 value) { + _internal_set_relid(value); + // @@protoc_insertion_point(field_set:pg_query.RangeTblEntry.relid) +} + +// string relkind = 3 [json_name = "relkind"]; +inline void RangeTblEntry::clear_relkind() { + relkind_.ClearToEmpty(); +} +inline const std::string& RangeTblEntry::relkind() const { + // @@protoc_insertion_point(field_get:pg_query.RangeTblEntry.relkind) + return _internal_relkind(); +} +inline void RangeTblEntry::set_relkind(const std::string& value) { + _internal_set_relkind(value); + // @@protoc_insertion_point(field_set:pg_query.RangeTblEntry.relkind) +} +inline std::string* RangeTblEntry::mutable_relkind() { + // @@protoc_insertion_point(field_mutable:pg_query.RangeTblEntry.relkind) + return _internal_mutable_relkind(); +} +inline const std::string& RangeTblEntry::_internal_relkind() const { + return relkind_.Get(); +} +inline void RangeTblEntry::_internal_set_relkind(const std::string& value) { + + relkind_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArena()); +} +inline void RangeTblEntry::set_relkind(std::string&& value) { + + relkind_.Set( + ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::move(value), GetArena()); + // @@protoc_insertion_point(field_set_rvalue:pg_query.RangeTblEntry.relkind) +} +inline void RangeTblEntry::set_relkind(const char* value) { + GOOGLE_DCHECK(value != nullptr); + + relkind_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string(value), GetArena()); + // @@protoc_insertion_point(field_set_char:pg_query.RangeTblEntry.relkind) +} +inline void RangeTblEntry::set_relkind(const char* value, + size_t size) { + + relkind_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string( + reinterpret_cast(value), size), GetArena()); + // @@protoc_insertion_point(field_set_pointer:pg_query.RangeTblEntry.relkind) +} +inline std::string* RangeTblEntry::_internal_mutable_relkind() { + + return relkind_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArena()); +} +inline std::string* RangeTblEntry::release_relkind() { + // @@protoc_insertion_point(field_release:pg_query.RangeTblEntry.relkind) + return relkind_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); +} +inline void RangeTblEntry::set_allocated_relkind(std::string* relkind) { + if (relkind != nullptr) { + + } else { + + } + relkind_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), relkind, + GetArena()); + // @@protoc_insertion_point(field_set_allocated:pg_query.RangeTblEntry.relkind) +} + +// int32 rellockmode = 4 [json_name = "rellockmode"]; +inline void RangeTblEntry::clear_rellockmode() { + rellockmode_ = 0; +} +inline ::PROTOBUF_NAMESPACE_ID::int32 RangeTblEntry::_internal_rellockmode() const { + return rellockmode_; +} +inline ::PROTOBUF_NAMESPACE_ID::int32 RangeTblEntry::rellockmode() const { + // @@protoc_insertion_point(field_get:pg_query.RangeTblEntry.rellockmode) + return _internal_rellockmode(); +} +inline void RangeTblEntry::_internal_set_rellockmode(::PROTOBUF_NAMESPACE_ID::int32 value) { + + rellockmode_ = value; +} +inline void RangeTblEntry::set_rellockmode(::PROTOBUF_NAMESPACE_ID::int32 value) { + _internal_set_rellockmode(value); + // @@protoc_insertion_point(field_set:pg_query.RangeTblEntry.rellockmode) +} + +// .pg_query.TableSampleClause tablesample = 5 [json_name = "tablesample"]; +inline bool RangeTblEntry::_internal_has_tablesample() const { + return this != internal_default_instance() && tablesample_ != nullptr; +} +inline bool RangeTblEntry::has_tablesample() const { + return _internal_has_tablesample(); +} +inline void RangeTblEntry::clear_tablesample() { + if (GetArena() == nullptr && tablesample_ != nullptr) { + delete tablesample_; + } + tablesample_ = nullptr; +} +inline const ::pg_query::TableSampleClause& RangeTblEntry::_internal_tablesample() const { + const ::pg_query::TableSampleClause* p = tablesample_; + return p != nullptr ? *p : reinterpret_cast( + ::pg_query::_TableSampleClause_default_instance_); +} +inline const ::pg_query::TableSampleClause& RangeTblEntry::tablesample() const { + // @@protoc_insertion_point(field_get:pg_query.RangeTblEntry.tablesample) + return _internal_tablesample(); +} +inline void RangeTblEntry::unsafe_arena_set_allocated_tablesample( + ::pg_query::TableSampleClause* tablesample) { + if (GetArena() == nullptr) { + delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(tablesample_); + } + tablesample_ = tablesample; + if (tablesample) { + + } else { + + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.RangeTblEntry.tablesample) +} +inline ::pg_query::TableSampleClause* RangeTblEntry::release_tablesample() { + + ::pg_query::TableSampleClause* temp = tablesample_; + tablesample_ = nullptr; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + return temp; +} +inline ::pg_query::TableSampleClause* RangeTblEntry::unsafe_arena_release_tablesample() { + // @@protoc_insertion_point(field_release:pg_query.RangeTblEntry.tablesample) + + ::pg_query::TableSampleClause* temp = tablesample_; + tablesample_ = nullptr; + return temp; +} +inline ::pg_query::TableSampleClause* RangeTblEntry::_internal_mutable_tablesample() { + + if (tablesample_ == nullptr) { + auto* p = CreateMaybeMessage<::pg_query::TableSampleClause>(GetArena()); + tablesample_ = p; + } + return tablesample_; +} +inline ::pg_query::TableSampleClause* RangeTblEntry::mutable_tablesample() { + // @@protoc_insertion_point(field_mutable:pg_query.RangeTblEntry.tablesample) + return _internal_mutable_tablesample(); +} +inline void RangeTblEntry::set_allocated_tablesample(::pg_query::TableSampleClause* tablesample) { + ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); + if (message_arena == nullptr) { + delete tablesample_; + } + if (tablesample) { + ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = + ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(tablesample); + if (message_arena != submessage_arena) { + tablesample = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( + message_arena, tablesample, submessage_arena); + } + + } else { + + } + tablesample_ = tablesample; + // @@protoc_insertion_point(field_set_allocated:pg_query.RangeTblEntry.tablesample) +} + +// .pg_query.Query subquery = 6 [json_name = "subquery"]; +inline bool RangeTblEntry::_internal_has_subquery() const { + return this != internal_default_instance() && subquery_ != nullptr; +} +inline bool RangeTblEntry::has_subquery() const { + return _internal_has_subquery(); +} +inline void RangeTblEntry::clear_subquery() { + if (GetArena() == nullptr && subquery_ != nullptr) { + delete subquery_; + } + subquery_ = nullptr; +} +inline const ::pg_query::Query& RangeTblEntry::_internal_subquery() const { + const ::pg_query::Query* p = subquery_; + return p != nullptr ? *p : reinterpret_cast( + ::pg_query::_Query_default_instance_); +} +inline const ::pg_query::Query& RangeTblEntry::subquery() const { + // @@protoc_insertion_point(field_get:pg_query.RangeTblEntry.subquery) + return _internal_subquery(); +} +inline void RangeTblEntry::unsafe_arena_set_allocated_subquery( + ::pg_query::Query* subquery) { + if (GetArena() == nullptr) { + delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(subquery_); + } + subquery_ = subquery; + if (subquery) { + + } else { + + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.RangeTblEntry.subquery) +} +inline ::pg_query::Query* RangeTblEntry::release_subquery() { + + ::pg_query::Query* temp = subquery_; + subquery_ = nullptr; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + return temp; +} +inline ::pg_query::Query* RangeTblEntry::unsafe_arena_release_subquery() { + // @@protoc_insertion_point(field_release:pg_query.RangeTblEntry.subquery) + + ::pg_query::Query* temp = subquery_; + subquery_ = nullptr; + return temp; +} +inline ::pg_query::Query* RangeTblEntry::_internal_mutable_subquery() { + + if (subquery_ == nullptr) { + auto* p = CreateMaybeMessage<::pg_query::Query>(GetArena()); + subquery_ = p; + } + return subquery_; +} +inline ::pg_query::Query* RangeTblEntry::mutable_subquery() { + // @@protoc_insertion_point(field_mutable:pg_query.RangeTblEntry.subquery) + return _internal_mutable_subquery(); +} +inline void RangeTblEntry::set_allocated_subquery(::pg_query::Query* subquery) { + ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); + if (message_arena == nullptr) { + delete subquery_; + } + if (subquery) { + ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = + ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(subquery); + if (message_arena != submessage_arena) { + subquery = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( + message_arena, subquery, submessage_arena); + } + + } else { + + } + subquery_ = subquery; + // @@protoc_insertion_point(field_set_allocated:pg_query.RangeTblEntry.subquery) +} + +// bool security_barrier = 7 [json_name = "security_barrier"]; +inline void RangeTblEntry::clear_security_barrier() { + security_barrier_ = false; +} +inline bool RangeTblEntry::_internal_security_barrier() const { + return security_barrier_; +} +inline bool RangeTblEntry::security_barrier() const { + // @@protoc_insertion_point(field_get:pg_query.RangeTblEntry.security_barrier) + return _internal_security_barrier(); +} +inline void RangeTblEntry::_internal_set_security_barrier(bool value) { + + security_barrier_ = value; +} +inline void RangeTblEntry::set_security_barrier(bool value) { + _internal_set_security_barrier(value); + // @@protoc_insertion_point(field_set:pg_query.RangeTblEntry.security_barrier) +} + +// .pg_query.JoinType jointype = 8 [json_name = "jointype"]; +inline void RangeTblEntry::clear_jointype() { + jointype_ = 0; +} +inline ::pg_query::JoinType RangeTblEntry::_internal_jointype() const { + return static_cast< ::pg_query::JoinType >(jointype_); +} +inline ::pg_query::JoinType RangeTblEntry::jointype() const { + // @@protoc_insertion_point(field_get:pg_query.RangeTblEntry.jointype) + return _internal_jointype(); +} +inline void RangeTblEntry::_internal_set_jointype(::pg_query::JoinType value) { + + jointype_ = value; +} +inline void RangeTblEntry::set_jointype(::pg_query::JoinType value) { + _internal_set_jointype(value); + // @@protoc_insertion_point(field_set:pg_query.RangeTblEntry.jointype) +} + +// int32 joinmergedcols = 9 [json_name = "joinmergedcols"]; +inline void RangeTblEntry::clear_joinmergedcols() { + joinmergedcols_ = 0; +} +inline ::PROTOBUF_NAMESPACE_ID::int32 RangeTblEntry::_internal_joinmergedcols() const { + return joinmergedcols_; +} +inline ::PROTOBUF_NAMESPACE_ID::int32 RangeTblEntry::joinmergedcols() const { + // @@protoc_insertion_point(field_get:pg_query.RangeTblEntry.joinmergedcols) + return _internal_joinmergedcols(); +} +inline void RangeTblEntry::_internal_set_joinmergedcols(::PROTOBUF_NAMESPACE_ID::int32 value) { + + joinmergedcols_ = value; +} +inline void RangeTblEntry::set_joinmergedcols(::PROTOBUF_NAMESPACE_ID::int32 value) { + _internal_set_joinmergedcols(value); + // @@protoc_insertion_point(field_set:pg_query.RangeTblEntry.joinmergedcols) +} + +// repeated .pg_query.Node joinaliasvars = 10 [json_name = "joinaliasvars"]; +inline int RangeTblEntry::_internal_joinaliasvars_size() const { + return joinaliasvars_.size(); +} +inline int RangeTblEntry::joinaliasvars_size() const { + return _internal_joinaliasvars_size(); +} +inline void RangeTblEntry::clear_joinaliasvars() { + joinaliasvars_.Clear(); +} +inline ::pg_query::Node* RangeTblEntry::mutable_joinaliasvars(int index) { + // @@protoc_insertion_point(field_mutable:pg_query.RangeTblEntry.joinaliasvars) + return joinaliasvars_.Mutable(index); +} +inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* +RangeTblEntry::mutable_joinaliasvars() { + // @@protoc_insertion_point(field_mutable_list:pg_query.RangeTblEntry.joinaliasvars) + return &joinaliasvars_; +} +inline const ::pg_query::Node& RangeTblEntry::_internal_joinaliasvars(int index) const { + return joinaliasvars_.Get(index); +} +inline const ::pg_query::Node& RangeTblEntry::joinaliasvars(int index) const { + // @@protoc_insertion_point(field_get:pg_query.RangeTblEntry.joinaliasvars) + return _internal_joinaliasvars(index); +} +inline ::pg_query::Node* RangeTblEntry::_internal_add_joinaliasvars() { + return joinaliasvars_.Add(); +} +inline ::pg_query::Node* RangeTblEntry::add_joinaliasvars() { + // @@protoc_insertion_point(field_add:pg_query.RangeTblEntry.joinaliasvars) + return _internal_add_joinaliasvars(); +} +inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& +RangeTblEntry::joinaliasvars() const { + // @@protoc_insertion_point(field_list:pg_query.RangeTblEntry.joinaliasvars) + return joinaliasvars_; +} + +// repeated .pg_query.Node joinleftcols = 11 [json_name = "joinleftcols"]; +inline int RangeTblEntry::_internal_joinleftcols_size() const { + return joinleftcols_.size(); +} +inline int RangeTblEntry::joinleftcols_size() const { + return _internal_joinleftcols_size(); +} +inline void RangeTblEntry::clear_joinleftcols() { + joinleftcols_.Clear(); +} +inline ::pg_query::Node* RangeTblEntry::mutable_joinleftcols(int index) { + // @@protoc_insertion_point(field_mutable:pg_query.RangeTblEntry.joinleftcols) + return joinleftcols_.Mutable(index); +} +inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* +RangeTblEntry::mutable_joinleftcols() { + // @@protoc_insertion_point(field_mutable_list:pg_query.RangeTblEntry.joinleftcols) + return &joinleftcols_; +} +inline const ::pg_query::Node& RangeTblEntry::_internal_joinleftcols(int index) const { + return joinleftcols_.Get(index); +} +inline const ::pg_query::Node& RangeTblEntry::joinleftcols(int index) const { + // @@protoc_insertion_point(field_get:pg_query.RangeTblEntry.joinleftcols) + return _internal_joinleftcols(index); +} +inline ::pg_query::Node* RangeTblEntry::_internal_add_joinleftcols() { + return joinleftcols_.Add(); +} +inline ::pg_query::Node* RangeTblEntry::add_joinleftcols() { + // @@protoc_insertion_point(field_add:pg_query.RangeTblEntry.joinleftcols) + return _internal_add_joinleftcols(); +} +inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& +RangeTblEntry::joinleftcols() const { + // @@protoc_insertion_point(field_list:pg_query.RangeTblEntry.joinleftcols) + return joinleftcols_; +} + +// repeated .pg_query.Node joinrightcols = 12 [json_name = "joinrightcols"]; +inline int RangeTblEntry::_internal_joinrightcols_size() const { + return joinrightcols_.size(); +} +inline int RangeTblEntry::joinrightcols_size() const { + return _internal_joinrightcols_size(); +} +inline void RangeTblEntry::clear_joinrightcols() { + joinrightcols_.Clear(); +} +inline ::pg_query::Node* RangeTblEntry::mutable_joinrightcols(int index) { + // @@protoc_insertion_point(field_mutable:pg_query.RangeTblEntry.joinrightcols) + return joinrightcols_.Mutable(index); +} +inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* +RangeTblEntry::mutable_joinrightcols() { + // @@protoc_insertion_point(field_mutable_list:pg_query.RangeTblEntry.joinrightcols) + return &joinrightcols_; +} +inline const ::pg_query::Node& RangeTblEntry::_internal_joinrightcols(int index) const { + return joinrightcols_.Get(index); +} +inline const ::pg_query::Node& RangeTblEntry::joinrightcols(int index) const { + // @@protoc_insertion_point(field_get:pg_query.RangeTblEntry.joinrightcols) + return _internal_joinrightcols(index); +} +inline ::pg_query::Node* RangeTblEntry::_internal_add_joinrightcols() { + return joinrightcols_.Add(); +} +inline ::pg_query::Node* RangeTblEntry::add_joinrightcols() { + // @@protoc_insertion_point(field_add:pg_query.RangeTblEntry.joinrightcols) + return _internal_add_joinrightcols(); +} +inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& +RangeTblEntry::joinrightcols() const { + // @@protoc_insertion_point(field_list:pg_query.RangeTblEntry.joinrightcols) + return joinrightcols_; +} + +// repeated .pg_query.Node functions = 13 [json_name = "functions"]; +inline int RangeTblEntry::_internal_functions_size() const { + return functions_.size(); +} +inline int RangeTblEntry::functions_size() const { + return _internal_functions_size(); +} +inline void RangeTblEntry::clear_functions() { + functions_.Clear(); +} +inline ::pg_query::Node* RangeTblEntry::mutable_functions(int index) { + // @@protoc_insertion_point(field_mutable:pg_query.RangeTblEntry.functions) + return functions_.Mutable(index); +} +inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* +RangeTblEntry::mutable_functions() { + // @@protoc_insertion_point(field_mutable_list:pg_query.RangeTblEntry.functions) + return &functions_; +} +inline const ::pg_query::Node& RangeTblEntry::_internal_functions(int index) const { + return functions_.Get(index); +} +inline const ::pg_query::Node& RangeTblEntry::functions(int index) const { + // @@protoc_insertion_point(field_get:pg_query.RangeTblEntry.functions) + return _internal_functions(index); +} +inline ::pg_query::Node* RangeTblEntry::_internal_add_functions() { + return functions_.Add(); +} +inline ::pg_query::Node* RangeTblEntry::add_functions() { + // @@protoc_insertion_point(field_add:pg_query.RangeTblEntry.functions) + return _internal_add_functions(); +} +inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& +RangeTblEntry::functions() const { + // @@protoc_insertion_point(field_list:pg_query.RangeTblEntry.functions) + return functions_; +} + +// bool funcordinality = 14 [json_name = "funcordinality"]; +inline void RangeTblEntry::clear_funcordinality() { + funcordinality_ = false; +} +inline bool RangeTblEntry::_internal_funcordinality() const { + return funcordinality_; +} +inline bool RangeTblEntry::funcordinality() const { + // @@protoc_insertion_point(field_get:pg_query.RangeTblEntry.funcordinality) + return _internal_funcordinality(); +} +inline void RangeTblEntry::_internal_set_funcordinality(bool value) { + + funcordinality_ = value; +} +inline void RangeTblEntry::set_funcordinality(bool value) { + _internal_set_funcordinality(value); + // @@protoc_insertion_point(field_set:pg_query.RangeTblEntry.funcordinality) +} + +// .pg_query.TableFunc tablefunc = 15 [json_name = "tablefunc"]; +inline bool RangeTblEntry::_internal_has_tablefunc() const { + return this != internal_default_instance() && tablefunc_ != nullptr; +} +inline bool RangeTblEntry::has_tablefunc() const { + return _internal_has_tablefunc(); +} +inline void RangeTblEntry::clear_tablefunc() { + if (GetArena() == nullptr && tablefunc_ != nullptr) { + delete tablefunc_; + } + tablefunc_ = nullptr; +} +inline const ::pg_query::TableFunc& RangeTblEntry::_internal_tablefunc() const { + const ::pg_query::TableFunc* p = tablefunc_; + return p != nullptr ? *p : reinterpret_cast( + ::pg_query::_TableFunc_default_instance_); +} +inline const ::pg_query::TableFunc& RangeTblEntry::tablefunc() const { + // @@protoc_insertion_point(field_get:pg_query.RangeTblEntry.tablefunc) + return _internal_tablefunc(); +} +inline void RangeTblEntry::unsafe_arena_set_allocated_tablefunc( + ::pg_query::TableFunc* tablefunc) { + if (GetArena() == nullptr) { + delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(tablefunc_); + } + tablefunc_ = tablefunc; + if (tablefunc) { + + } else { + + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.RangeTblEntry.tablefunc) +} +inline ::pg_query::TableFunc* RangeTblEntry::release_tablefunc() { + + ::pg_query::TableFunc* temp = tablefunc_; + tablefunc_ = nullptr; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + return temp; +} +inline ::pg_query::TableFunc* RangeTblEntry::unsafe_arena_release_tablefunc() { + // @@protoc_insertion_point(field_release:pg_query.RangeTblEntry.tablefunc) + + ::pg_query::TableFunc* temp = tablefunc_; + tablefunc_ = nullptr; + return temp; +} +inline ::pg_query::TableFunc* RangeTblEntry::_internal_mutable_tablefunc() { + + if (tablefunc_ == nullptr) { + auto* p = CreateMaybeMessage<::pg_query::TableFunc>(GetArena()); + tablefunc_ = p; + } + return tablefunc_; +} +inline ::pg_query::TableFunc* RangeTblEntry::mutable_tablefunc() { + // @@protoc_insertion_point(field_mutable:pg_query.RangeTblEntry.tablefunc) + return _internal_mutable_tablefunc(); +} +inline void RangeTblEntry::set_allocated_tablefunc(::pg_query::TableFunc* tablefunc) { + ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); + if (message_arena == nullptr) { + delete tablefunc_; + } + if (tablefunc) { + ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = + ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(tablefunc); + if (message_arena != submessage_arena) { + tablefunc = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( + message_arena, tablefunc, submessage_arena); + } + + } else { + + } + tablefunc_ = tablefunc; + // @@protoc_insertion_point(field_set_allocated:pg_query.RangeTblEntry.tablefunc) +} + +// repeated .pg_query.Node values_lists = 16 [json_name = "values_lists"]; +inline int RangeTblEntry::_internal_values_lists_size() const { + return values_lists_.size(); +} +inline int RangeTblEntry::values_lists_size() const { + return _internal_values_lists_size(); +} +inline void RangeTblEntry::clear_values_lists() { + values_lists_.Clear(); +} +inline ::pg_query::Node* RangeTblEntry::mutable_values_lists(int index) { + // @@protoc_insertion_point(field_mutable:pg_query.RangeTblEntry.values_lists) + return values_lists_.Mutable(index); +} +inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* +RangeTblEntry::mutable_values_lists() { + // @@protoc_insertion_point(field_mutable_list:pg_query.RangeTblEntry.values_lists) + return &values_lists_; +} +inline const ::pg_query::Node& RangeTblEntry::_internal_values_lists(int index) const { + return values_lists_.Get(index); +} +inline const ::pg_query::Node& RangeTblEntry::values_lists(int index) const { + // @@protoc_insertion_point(field_get:pg_query.RangeTblEntry.values_lists) + return _internal_values_lists(index); +} +inline ::pg_query::Node* RangeTblEntry::_internal_add_values_lists() { + return values_lists_.Add(); +} +inline ::pg_query::Node* RangeTblEntry::add_values_lists() { + // @@protoc_insertion_point(field_add:pg_query.RangeTblEntry.values_lists) + return _internal_add_values_lists(); +} +inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& +RangeTblEntry::values_lists() const { + // @@protoc_insertion_point(field_list:pg_query.RangeTblEntry.values_lists) + return values_lists_; +} + +// string ctename = 17 [json_name = "ctename"]; +inline void RangeTblEntry::clear_ctename() { + ctename_.ClearToEmpty(); +} +inline const std::string& RangeTblEntry::ctename() const { + // @@protoc_insertion_point(field_get:pg_query.RangeTblEntry.ctename) + return _internal_ctename(); +} +inline void RangeTblEntry::set_ctename(const std::string& value) { + _internal_set_ctename(value); + // @@protoc_insertion_point(field_set:pg_query.RangeTblEntry.ctename) +} +inline std::string* RangeTblEntry::mutable_ctename() { + // @@protoc_insertion_point(field_mutable:pg_query.RangeTblEntry.ctename) + return _internal_mutable_ctename(); +} +inline const std::string& RangeTblEntry::_internal_ctename() const { + return ctename_.Get(); +} +inline void RangeTblEntry::_internal_set_ctename(const std::string& value) { + + ctename_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArena()); +} +inline void RangeTblEntry::set_ctename(std::string&& value) { + + ctename_.Set( + ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::move(value), GetArena()); + // @@protoc_insertion_point(field_set_rvalue:pg_query.RangeTblEntry.ctename) +} +inline void RangeTblEntry::set_ctename(const char* value) { + GOOGLE_DCHECK(value != nullptr); + + ctename_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string(value), GetArena()); + // @@protoc_insertion_point(field_set_char:pg_query.RangeTblEntry.ctename) +} +inline void RangeTblEntry::set_ctename(const char* value, + size_t size) { + + ctename_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string( + reinterpret_cast(value), size), GetArena()); + // @@protoc_insertion_point(field_set_pointer:pg_query.RangeTblEntry.ctename) +} +inline std::string* RangeTblEntry::_internal_mutable_ctename() { + + return ctename_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArena()); +} +inline std::string* RangeTblEntry::release_ctename() { + // @@protoc_insertion_point(field_release:pg_query.RangeTblEntry.ctename) + return ctename_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); +} +inline void RangeTblEntry::set_allocated_ctename(std::string* ctename) { + if (ctename != nullptr) { + + } else { + + } + ctename_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), ctename, + GetArena()); + // @@protoc_insertion_point(field_set_allocated:pg_query.RangeTblEntry.ctename) +} + +// uint32 ctelevelsup = 18 [json_name = "ctelevelsup"]; +inline void RangeTblEntry::clear_ctelevelsup() { + ctelevelsup_ = 0u; +} +inline ::PROTOBUF_NAMESPACE_ID::uint32 RangeTblEntry::_internal_ctelevelsup() const { + return ctelevelsup_; +} +inline ::PROTOBUF_NAMESPACE_ID::uint32 RangeTblEntry::ctelevelsup() const { + // @@protoc_insertion_point(field_get:pg_query.RangeTblEntry.ctelevelsup) + return _internal_ctelevelsup(); +} +inline void RangeTblEntry::_internal_set_ctelevelsup(::PROTOBUF_NAMESPACE_ID::uint32 value) { + + ctelevelsup_ = value; +} +inline void RangeTblEntry::set_ctelevelsup(::PROTOBUF_NAMESPACE_ID::uint32 value) { + _internal_set_ctelevelsup(value); + // @@protoc_insertion_point(field_set:pg_query.RangeTblEntry.ctelevelsup) +} + +// bool self_reference = 19 [json_name = "self_reference"]; +inline void RangeTblEntry::clear_self_reference() { + self_reference_ = false; +} +inline bool RangeTblEntry::_internal_self_reference() const { + return self_reference_; +} +inline bool RangeTblEntry::self_reference() const { + // @@protoc_insertion_point(field_get:pg_query.RangeTblEntry.self_reference) + return _internal_self_reference(); +} +inline void RangeTblEntry::_internal_set_self_reference(bool value) { + + self_reference_ = value; +} +inline void RangeTblEntry::set_self_reference(bool value) { + _internal_set_self_reference(value); + // @@protoc_insertion_point(field_set:pg_query.RangeTblEntry.self_reference) +} + +// repeated .pg_query.Node coltypes = 20 [json_name = "coltypes"]; +inline int RangeTblEntry::_internal_coltypes_size() const { + return coltypes_.size(); +} +inline int RangeTblEntry::coltypes_size() const { + return _internal_coltypes_size(); +} +inline void RangeTblEntry::clear_coltypes() { + coltypes_.Clear(); +} +inline ::pg_query::Node* RangeTblEntry::mutable_coltypes(int index) { + // @@protoc_insertion_point(field_mutable:pg_query.RangeTblEntry.coltypes) + return coltypes_.Mutable(index); +} +inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* +RangeTblEntry::mutable_coltypes() { + // @@protoc_insertion_point(field_mutable_list:pg_query.RangeTblEntry.coltypes) + return &coltypes_; +} +inline const ::pg_query::Node& RangeTblEntry::_internal_coltypes(int index) const { + return coltypes_.Get(index); +} +inline const ::pg_query::Node& RangeTblEntry::coltypes(int index) const { + // @@protoc_insertion_point(field_get:pg_query.RangeTblEntry.coltypes) + return _internal_coltypes(index); +} +inline ::pg_query::Node* RangeTblEntry::_internal_add_coltypes() { + return coltypes_.Add(); +} +inline ::pg_query::Node* RangeTblEntry::add_coltypes() { + // @@protoc_insertion_point(field_add:pg_query.RangeTblEntry.coltypes) + return _internal_add_coltypes(); +} +inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& +RangeTblEntry::coltypes() const { + // @@protoc_insertion_point(field_list:pg_query.RangeTblEntry.coltypes) + return coltypes_; +} + +// repeated .pg_query.Node coltypmods = 21 [json_name = "coltypmods"]; +inline int RangeTblEntry::_internal_coltypmods_size() const { + return coltypmods_.size(); +} +inline int RangeTblEntry::coltypmods_size() const { + return _internal_coltypmods_size(); +} +inline void RangeTblEntry::clear_coltypmods() { + coltypmods_.Clear(); +} +inline ::pg_query::Node* RangeTblEntry::mutable_coltypmods(int index) { + // @@protoc_insertion_point(field_mutable:pg_query.RangeTblEntry.coltypmods) + return coltypmods_.Mutable(index); +} +inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* +RangeTblEntry::mutable_coltypmods() { + // @@protoc_insertion_point(field_mutable_list:pg_query.RangeTblEntry.coltypmods) + return &coltypmods_; +} +inline const ::pg_query::Node& RangeTblEntry::_internal_coltypmods(int index) const { + return coltypmods_.Get(index); +} +inline const ::pg_query::Node& RangeTblEntry::coltypmods(int index) const { + // @@protoc_insertion_point(field_get:pg_query.RangeTblEntry.coltypmods) + return _internal_coltypmods(index); +} +inline ::pg_query::Node* RangeTblEntry::_internal_add_coltypmods() { + return coltypmods_.Add(); +} +inline ::pg_query::Node* RangeTblEntry::add_coltypmods() { + // @@protoc_insertion_point(field_add:pg_query.RangeTblEntry.coltypmods) + return _internal_add_coltypmods(); +} +inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& +RangeTblEntry::coltypmods() const { + // @@protoc_insertion_point(field_list:pg_query.RangeTblEntry.coltypmods) + return coltypmods_; +} + +// repeated .pg_query.Node colcollations = 22 [json_name = "colcollations"]; +inline int RangeTblEntry::_internal_colcollations_size() const { + return colcollations_.size(); +} +inline int RangeTblEntry::colcollations_size() const { + return _internal_colcollations_size(); +} +inline void RangeTblEntry::clear_colcollations() { + colcollations_.Clear(); +} +inline ::pg_query::Node* RangeTblEntry::mutable_colcollations(int index) { + // @@protoc_insertion_point(field_mutable:pg_query.RangeTblEntry.colcollations) + return colcollations_.Mutable(index); +} +inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* +RangeTblEntry::mutable_colcollations() { + // @@protoc_insertion_point(field_mutable_list:pg_query.RangeTblEntry.colcollations) + return &colcollations_; +} +inline const ::pg_query::Node& RangeTblEntry::_internal_colcollations(int index) const { + return colcollations_.Get(index); +} +inline const ::pg_query::Node& RangeTblEntry::colcollations(int index) const { + // @@protoc_insertion_point(field_get:pg_query.RangeTblEntry.colcollations) + return _internal_colcollations(index); +} +inline ::pg_query::Node* RangeTblEntry::_internal_add_colcollations() { + return colcollations_.Add(); +} +inline ::pg_query::Node* RangeTblEntry::add_colcollations() { + // @@protoc_insertion_point(field_add:pg_query.RangeTblEntry.colcollations) + return _internal_add_colcollations(); +} +inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& +RangeTblEntry::colcollations() const { + // @@protoc_insertion_point(field_list:pg_query.RangeTblEntry.colcollations) + return colcollations_; +} + +// string enrname = 23 [json_name = "enrname"]; +inline void RangeTblEntry::clear_enrname() { + enrname_.ClearToEmpty(); +} +inline const std::string& RangeTblEntry::enrname() const { + // @@protoc_insertion_point(field_get:pg_query.RangeTblEntry.enrname) + return _internal_enrname(); +} +inline void RangeTblEntry::set_enrname(const std::string& value) { + _internal_set_enrname(value); + // @@protoc_insertion_point(field_set:pg_query.RangeTblEntry.enrname) +} +inline std::string* RangeTblEntry::mutable_enrname() { + // @@protoc_insertion_point(field_mutable:pg_query.RangeTblEntry.enrname) + return _internal_mutable_enrname(); +} +inline const std::string& RangeTblEntry::_internal_enrname() const { + return enrname_.Get(); +} +inline void RangeTblEntry::_internal_set_enrname(const std::string& value) { + + enrname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArena()); +} +inline void RangeTblEntry::set_enrname(std::string&& value) { + + enrname_.Set( + ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::move(value), GetArena()); + // @@protoc_insertion_point(field_set_rvalue:pg_query.RangeTblEntry.enrname) +} +inline void RangeTblEntry::set_enrname(const char* value) { + GOOGLE_DCHECK(value != nullptr); + + enrname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string(value), GetArena()); + // @@protoc_insertion_point(field_set_char:pg_query.RangeTblEntry.enrname) +} +inline void RangeTblEntry::set_enrname(const char* value, + size_t size) { + + enrname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string( + reinterpret_cast(value), size), GetArena()); + // @@protoc_insertion_point(field_set_pointer:pg_query.RangeTblEntry.enrname) +} +inline std::string* RangeTblEntry::_internal_mutable_enrname() { + + return enrname_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArena()); +} +inline std::string* RangeTblEntry::release_enrname() { + // @@protoc_insertion_point(field_release:pg_query.RangeTblEntry.enrname) + return enrname_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); +} +inline void RangeTblEntry::set_allocated_enrname(std::string* enrname) { + if (enrname != nullptr) { + + } else { + + } + enrname_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), enrname, + GetArena()); + // @@protoc_insertion_point(field_set_allocated:pg_query.RangeTblEntry.enrname) +} + +// double enrtuples = 24 [json_name = "enrtuples"]; +inline void RangeTblEntry::clear_enrtuples() { + enrtuples_ = 0; +} +inline double RangeTblEntry::_internal_enrtuples() const { + return enrtuples_; +} +inline double RangeTblEntry::enrtuples() const { + // @@protoc_insertion_point(field_get:pg_query.RangeTblEntry.enrtuples) + return _internal_enrtuples(); +} +inline void RangeTblEntry::_internal_set_enrtuples(double value) { + + enrtuples_ = value; +} +inline void RangeTblEntry::set_enrtuples(double value) { + _internal_set_enrtuples(value); + // @@protoc_insertion_point(field_set:pg_query.RangeTblEntry.enrtuples) +} + +// .pg_query.Alias alias = 25 [json_name = "alias"]; +inline bool RangeTblEntry::_internal_has_alias() const { + return this != internal_default_instance() && alias_ != nullptr; +} +inline bool RangeTblEntry::has_alias() const { + return _internal_has_alias(); +} +inline void RangeTblEntry::clear_alias() { + if (GetArena() == nullptr && alias_ != nullptr) { + delete alias_; + } + alias_ = nullptr; +} +inline const ::pg_query::Alias& RangeTblEntry::_internal_alias() const { + const ::pg_query::Alias* p = alias_; + return p != nullptr ? *p : reinterpret_cast( + ::pg_query::_Alias_default_instance_); +} +inline const ::pg_query::Alias& RangeTblEntry::alias() const { + // @@protoc_insertion_point(field_get:pg_query.RangeTblEntry.alias) + return _internal_alias(); +} +inline void RangeTblEntry::unsafe_arena_set_allocated_alias( + ::pg_query::Alias* alias) { + if (GetArena() == nullptr) { + delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(alias_); + } + alias_ = alias; + if (alias) { + + } else { + + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.RangeTblEntry.alias) +} +inline ::pg_query::Alias* RangeTblEntry::release_alias() { + + ::pg_query::Alias* temp = alias_; + alias_ = nullptr; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + return temp; +} +inline ::pg_query::Alias* RangeTblEntry::unsafe_arena_release_alias() { + // @@protoc_insertion_point(field_release:pg_query.RangeTblEntry.alias) + + ::pg_query::Alias* temp = alias_; + alias_ = nullptr; + return temp; +} +inline ::pg_query::Alias* RangeTblEntry::_internal_mutable_alias() { + + if (alias_ == nullptr) { + auto* p = CreateMaybeMessage<::pg_query::Alias>(GetArena()); + alias_ = p; + } + return alias_; +} +inline ::pg_query::Alias* RangeTblEntry::mutable_alias() { + // @@protoc_insertion_point(field_mutable:pg_query.RangeTblEntry.alias) + return _internal_mutable_alias(); +} +inline void RangeTblEntry::set_allocated_alias(::pg_query::Alias* alias) { + ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); + if (message_arena == nullptr) { + delete alias_; + } + if (alias) { + ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = + ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(alias); + if (message_arena != submessage_arena) { + alias = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( + message_arena, alias, submessage_arena); + } + + } else { + + } + alias_ = alias; + // @@protoc_insertion_point(field_set_allocated:pg_query.RangeTblEntry.alias) +} + +// .pg_query.Alias eref = 26 [json_name = "eref"]; +inline bool RangeTblEntry::_internal_has_eref() const { + return this != internal_default_instance() && eref_ != nullptr; +} +inline bool RangeTblEntry::has_eref() const { + return _internal_has_eref(); +} +inline void RangeTblEntry::clear_eref() { + if (GetArena() == nullptr && eref_ != nullptr) { + delete eref_; + } + eref_ = nullptr; +} +inline const ::pg_query::Alias& RangeTblEntry::_internal_eref() const { + const ::pg_query::Alias* p = eref_; + return p != nullptr ? *p : reinterpret_cast( + ::pg_query::_Alias_default_instance_); +} +inline const ::pg_query::Alias& RangeTblEntry::eref() const { + // @@protoc_insertion_point(field_get:pg_query.RangeTblEntry.eref) + return _internal_eref(); +} +inline void RangeTblEntry::unsafe_arena_set_allocated_eref( + ::pg_query::Alias* eref) { + if (GetArena() == nullptr) { + delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(eref_); + } + eref_ = eref; + if (eref) { + + } else { + + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.RangeTblEntry.eref) +} +inline ::pg_query::Alias* RangeTblEntry::release_eref() { + + ::pg_query::Alias* temp = eref_; + eref_ = nullptr; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + return temp; +} +inline ::pg_query::Alias* RangeTblEntry::unsafe_arena_release_eref() { + // @@protoc_insertion_point(field_release:pg_query.RangeTblEntry.eref) + + ::pg_query::Alias* temp = eref_; + eref_ = nullptr; + return temp; +} +inline ::pg_query::Alias* RangeTblEntry::_internal_mutable_eref() { + + if (eref_ == nullptr) { + auto* p = CreateMaybeMessage<::pg_query::Alias>(GetArena()); + eref_ = p; + } + return eref_; +} +inline ::pg_query::Alias* RangeTblEntry::mutable_eref() { + // @@protoc_insertion_point(field_mutable:pg_query.RangeTblEntry.eref) + return _internal_mutable_eref(); +} +inline void RangeTblEntry::set_allocated_eref(::pg_query::Alias* eref) { + ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); + if (message_arena == nullptr) { + delete eref_; + } + if (eref) { + ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = + ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(eref); + if (message_arena != submessage_arena) { + eref = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( + message_arena, eref, submessage_arena); + } + + } else { + + } + eref_ = eref; + // @@protoc_insertion_point(field_set_allocated:pg_query.RangeTblEntry.eref) +} + +// bool lateral = 27 [json_name = "lateral"]; +inline void RangeTblEntry::clear_lateral() { + lateral_ = false; +} +inline bool RangeTblEntry::_internal_lateral() const { + return lateral_; +} +inline bool RangeTblEntry::lateral() const { + // @@protoc_insertion_point(field_get:pg_query.RangeTblEntry.lateral) + return _internal_lateral(); +} +inline void RangeTblEntry::_internal_set_lateral(bool value) { + + lateral_ = value; +} +inline void RangeTblEntry::set_lateral(bool value) { + _internal_set_lateral(value); + // @@protoc_insertion_point(field_set:pg_query.RangeTblEntry.lateral) +} + +// bool inh = 28 [json_name = "inh"]; +inline void RangeTblEntry::clear_inh() { + inh_ = false; +} +inline bool RangeTblEntry::_internal_inh() const { + return inh_; +} +inline bool RangeTblEntry::inh() const { + // @@protoc_insertion_point(field_get:pg_query.RangeTblEntry.inh) + return _internal_inh(); +} +inline void RangeTblEntry::_internal_set_inh(bool value) { + + inh_ = value; +} +inline void RangeTblEntry::set_inh(bool value) { + _internal_set_inh(value); + // @@protoc_insertion_point(field_set:pg_query.RangeTblEntry.inh) +} + +// bool in_from_cl = 29 [json_name = "inFromCl"]; +inline void RangeTblEntry::clear_in_from_cl() { + in_from_cl_ = false; +} +inline bool RangeTblEntry::_internal_in_from_cl() const { + return in_from_cl_; +} +inline bool RangeTblEntry::in_from_cl() const { + // @@protoc_insertion_point(field_get:pg_query.RangeTblEntry.in_from_cl) + return _internal_in_from_cl(); +} +inline void RangeTblEntry::_internal_set_in_from_cl(bool value) { + + in_from_cl_ = value; +} +inline void RangeTblEntry::set_in_from_cl(bool value) { + _internal_set_in_from_cl(value); + // @@protoc_insertion_point(field_set:pg_query.RangeTblEntry.in_from_cl) +} + +// uint32 required_perms = 30 [json_name = "requiredPerms"]; +inline void RangeTblEntry::clear_required_perms() { + required_perms_ = 0u; +} +inline ::PROTOBUF_NAMESPACE_ID::uint32 RangeTblEntry::_internal_required_perms() const { + return required_perms_; +} +inline ::PROTOBUF_NAMESPACE_ID::uint32 RangeTblEntry::required_perms() const { + // @@protoc_insertion_point(field_get:pg_query.RangeTblEntry.required_perms) + return _internal_required_perms(); +} +inline void RangeTblEntry::_internal_set_required_perms(::PROTOBUF_NAMESPACE_ID::uint32 value) { + + required_perms_ = value; +} +inline void RangeTblEntry::set_required_perms(::PROTOBUF_NAMESPACE_ID::uint32 value) { + _internal_set_required_perms(value); + // @@protoc_insertion_point(field_set:pg_query.RangeTblEntry.required_perms) +} + +// uint32 check_as_user = 31 [json_name = "checkAsUser"]; +inline void RangeTblEntry::clear_check_as_user() { + check_as_user_ = 0u; +} +inline ::PROTOBUF_NAMESPACE_ID::uint32 RangeTblEntry::_internal_check_as_user() const { + return check_as_user_; +} +inline ::PROTOBUF_NAMESPACE_ID::uint32 RangeTblEntry::check_as_user() const { + // @@protoc_insertion_point(field_get:pg_query.RangeTblEntry.check_as_user) + return _internal_check_as_user(); +} +inline void RangeTblEntry::_internal_set_check_as_user(::PROTOBUF_NAMESPACE_ID::uint32 value) { + + check_as_user_ = value; +} +inline void RangeTblEntry::set_check_as_user(::PROTOBUF_NAMESPACE_ID::uint32 value) { + _internal_set_check_as_user(value); + // @@protoc_insertion_point(field_set:pg_query.RangeTblEntry.check_as_user) +} + +// repeated .pg_query.Node security_quals = 32 [json_name = "securityQuals"]; +inline int RangeTblEntry::_internal_security_quals_size() const { + return security_quals_.size(); +} +inline int RangeTblEntry::security_quals_size() const { + return _internal_security_quals_size(); +} +inline void RangeTblEntry::clear_security_quals() { + security_quals_.Clear(); +} +inline ::pg_query::Node* RangeTblEntry::mutable_security_quals(int index) { + // @@protoc_insertion_point(field_mutable:pg_query.RangeTblEntry.security_quals) + return security_quals_.Mutable(index); +} +inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* +RangeTblEntry::mutable_security_quals() { + // @@protoc_insertion_point(field_mutable_list:pg_query.RangeTblEntry.security_quals) + return &security_quals_; +} +inline const ::pg_query::Node& RangeTblEntry::_internal_security_quals(int index) const { + return security_quals_.Get(index); +} +inline const ::pg_query::Node& RangeTblEntry::security_quals(int index) const { + // @@protoc_insertion_point(field_get:pg_query.RangeTblEntry.security_quals) + return _internal_security_quals(index); +} +inline ::pg_query::Node* RangeTblEntry::_internal_add_security_quals() { + return security_quals_.Add(); +} +inline ::pg_query::Node* RangeTblEntry::add_security_quals() { + // @@protoc_insertion_point(field_add:pg_query.RangeTblEntry.security_quals) + return _internal_add_security_quals(); +} +inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& +RangeTblEntry::security_quals() const { + // @@protoc_insertion_point(field_list:pg_query.RangeTblEntry.security_quals) + return security_quals_; +} + +// ------------------------------------------------------------------- + +// RangeTblFunction + +// .pg_query.Node funcexpr = 1 [json_name = "funcexpr"]; +inline bool RangeTblFunction::_internal_has_funcexpr() const { + return this != internal_default_instance() && funcexpr_ != nullptr; +} +inline bool RangeTblFunction::has_funcexpr() const { + return _internal_has_funcexpr(); +} +inline void RangeTblFunction::clear_funcexpr() { + if (GetArena() == nullptr && funcexpr_ != nullptr) { + delete funcexpr_; + } + funcexpr_ = nullptr; +} +inline const ::pg_query::Node& RangeTblFunction::_internal_funcexpr() const { + const ::pg_query::Node* p = funcexpr_; + return p != nullptr ? *p : reinterpret_cast( + ::pg_query::_Node_default_instance_); +} +inline const ::pg_query::Node& RangeTblFunction::funcexpr() const { + // @@protoc_insertion_point(field_get:pg_query.RangeTblFunction.funcexpr) + return _internal_funcexpr(); +} +inline void RangeTblFunction::unsafe_arena_set_allocated_funcexpr( + ::pg_query::Node* funcexpr) { + if (GetArena() == nullptr) { + delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(funcexpr_); + } + funcexpr_ = funcexpr; + if (funcexpr) { + + } else { + + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.RangeTblFunction.funcexpr) +} +inline ::pg_query::Node* RangeTblFunction::release_funcexpr() { + + ::pg_query::Node* temp = funcexpr_; + funcexpr_ = nullptr; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + return temp; +} +inline ::pg_query::Node* RangeTblFunction::unsafe_arena_release_funcexpr() { + // @@protoc_insertion_point(field_release:pg_query.RangeTblFunction.funcexpr) + + ::pg_query::Node* temp = funcexpr_; + funcexpr_ = nullptr; + return temp; +} +inline ::pg_query::Node* RangeTblFunction::_internal_mutable_funcexpr() { + + if (funcexpr_ == nullptr) { + auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); + funcexpr_ = p; + } + return funcexpr_; +} +inline ::pg_query::Node* RangeTblFunction::mutable_funcexpr() { + // @@protoc_insertion_point(field_mutable:pg_query.RangeTblFunction.funcexpr) + return _internal_mutable_funcexpr(); +} +inline void RangeTblFunction::set_allocated_funcexpr(::pg_query::Node* funcexpr) { + ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); + if (message_arena == nullptr) { + delete funcexpr_; + } + if (funcexpr) { + ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = + ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(funcexpr); + if (message_arena != submessage_arena) { + funcexpr = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( + message_arena, funcexpr, submessage_arena); + } + + } else { + + } + funcexpr_ = funcexpr; + // @@protoc_insertion_point(field_set_allocated:pg_query.RangeTblFunction.funcexpr) +} + +// int32 funccolcount = 2 [json_name = "funccolcount"]; +inline void RangeTblFunction::clear_funccolcount() { + funccolcount_ = 0; +} +inline ::PROTOBUF_NAMESPACE_ID::int32 RangeTblFunction::_internal_funccolcount() const { + return funccolcount_; +} +inline ::PROTOBUF_NAMESPACE_ID::int32 RangeTblFunction::funccolcount() const { + // @@protoc_insertion_point(field_get:pg_query.RangeTblFunction.funccolcount) + return _internal_funccolcount(); +} +inline void RangeTblFunction::_internal_set_funccolcount(::PROTOBUF_NAMESPACE_ID::int32 value) { + + funccolcount_ = value; +} +inline void RangeTblFunction::set_funccolcount(::PROTOBUF_NAMESPACE_ID::int32 value) { + _internal_set_funccolcount(value); + // @@protoc_insertion_point(field_set:pg_query.RangeTblFunction.funccolcount) +} + +// repeated .pg_query.Node funccolnames = 3 [json_name = "funccolnames"]; +inline int RangeTblFunction::_internal_funccolnames_size() const { + return funccolnames_.size(); +} +inline int RangeTblFunction::funccolnames_size() const { + return _internal_funccolnames_size(); +} +inline void RangeTblFunction::clear_funccolnames() { + funccolnames_.Clear(); +} +inline ::pg_query::Node* RangeTblFunction::mutable_funccolnames(int index) { + // @@protoc_insertion_point(field_mutable:pg_query.RangeTblFunction.funccolnames) + return funccolnames_.Mutable(index); +} +inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* +RangeTblFunction::mutable_funccolnames() { + // @@protoc_insertion_point(field_mutable_list:pg_query.RangeTblFunction.funccolnames) + return &funccolnames_; +} +inline const ::pg_query::Node& RangeTblFunction::_internal_funccolnames(int index) const { + return funccolnames_.Get(index); +} +inline const ::pg_query::Node& RangeTblFunction::funccolnames(int index) const { + // @@protoc_insertion_point(field_get:pg_query.RangeTblFunction.funccolnames) + return _internal_funccolnames(index); +} +inline ::pg_query::Node* RangeTblFunction::_internal_add_funccolnames() { + return funccolnames_.Add(); +} +inline ::pg_query::Node* RangeTblFunction::add_funccolnames() { + // @@protoc_insertion_point(field_add:pg_query.RangeTblFunction.funccolnames) + return _internal_add_funccolnames(); +} +inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& +RangeTblFunction::funccolnames() const { + // @@protoc_insertion_point(field_list:pg_query.RangeTblFunction.funccolnames) + return funccolnames_; +} + +// repeated .pg_query.Node funccoltypes = 4 [json_name = "funccoltypes"]; +inline int RangeTblFunction::_internal_funccoltypes_size() const { + return funccoltypes_.size(); +} +inline int RangeTblFunction::funccoltypes_size() const { + return _internal_funccoltypes_size(); +} +inline void RangeTblFunction::clear_funccoltypes() { + funccoltypes_.Clear(); +} +inline ::pg_query::Node* RangeTblFunction::mutable_funccoltypes(int index) { + // @@protoc_insertion_point(field_mutable:pg_query.RangeTblFunction.funccoltypes) + return funccoltypes_.Mutable(index); +} +inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* +RangeTblFunction::mutable_funccoltypes() { + // @@protoc_insertion_point(field_mutable_list:pg_query.RangeTblFunction.funccoltypes) + return &funccoltypes_; +} +inline const ::pg_query::Node& RangeTblFunction::_internal_funccoltypes(int index) const { + return funccoltypes_.Get(index); +} +inline const ::pg_query::Node& RangeTblFunction::funccoltypes(int index) const { + // @@protoc_insertion_point(field_get:pg_query.RangeTblFunction.funccoltypes) + return _internal_funccoltypes(index); +} +inline ::pg_query::Node* RangeTblFunction::_internal_add_funccoltypes() { + return funccoltypes_.Add(); +} +inline ::pg_query::Node* RangeTblFunction::add_funccoltypes() { + // @@protoc_insertion_point(field_add:pg_query.RangeTblFunction.funccoltypes) + return _internal_add_funccoltypes(); +} +inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& +RangeTblFunction::funccoltypes() const { + // @@protoc_insertion_point(field_list:pg_query.RangeTblFunction.funccoltypes) + return funccoltypes_; +} + +// repeated .pg_query.Node funccoltypmods = 5 [json_name = "funccoltypmods"]; +inline int RangeTblFunction::_internal_funccoltypmods_size() const { + return funccoltypmods_.size(); +} +inline int RangeTblFunction::funccoltypmods_size() const { + return _internal_funccoltypmods_size(); +} +inline void RangeTblFunction::clear_funccoltypmods() { + funccoltypmods_.Clear(); +} +inline ::pg_query::Node* RangeTblFunction::mutable_funccoltypmods(int index) { + // @@protoc_insertion_point(field_mutable:pg_query.RangeTblFunction.funccoltypmods) + return funccoltypmods_.Mutable(index); +} +inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* +RangeTblFunction::mutable_funccoltypmods() { + // @@protoc_insertion_point(field_mutable_list:pg_query.RangeTblFunction.funccoltypmods) + return &funccoltypmods_; +} +inline const ::pg_query::Node& RangeTblFunction::_internal_funccoltypmods(int index) const { + return funccoltypmods_.Get(index); +} +inline const ::pg_query::Node& RangeTblFunction::funccoltypmods(int index) const { + // @@protoc_insertion_point(field_get:pg_query.RangeTblFunction.funccoltypmods) + return _internal_funccoltypmods(index); +} +inline ::pg_query::Node* RangeTblFunction::_internal_add_funccoltypmods() { + return funccoltypmods_.Add(); +} +inline ::pg_query::Node* RangeTblFunction::add_funccoltypmods() { + // @@protoc_insertion_point(field_add:pg_query.RangeTblFunction.funccoltypmods) + return _internal_add_funccoltypmods(); +} +inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& +RangeTblFunction::funccoltypmods() const { + // @@protoc_insertion_point(field_list:pg_query.RangeTblFunction.funccoltypmods) + return funccoltypmods_; +} + +// repeated .pg_query.Node funccolcollations = 6 [json_name = "funccolcollations"]; +inline int RangeTblFunction::_internal_funccolcollations_size() const { + return funccolcollations_.size(); +} +inline int RangeTblFunction::funccolcollations_size() const { + return _internal_funccolcollations_size(); +} +inline void RangeTblFunction::clear_funccolcollations() { + funccolcollations_.Clear(); +} +inline ::pg_query::Node* RangeTblFunction::mutable_funccolcollations(int index) { + // @@protoc_insertion_point(field_mutable:pg_query.RangeTblFunction.funccolcollations) + return funccolcollations_.Mutable(index); +} +inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* +RangeTblFunction::mutable_funccolcollations() { + // @@protoc_insertion_point(field_mutable_list:pg_query.RangeTblFunction.funccolcollations) + return &funccolcollations_; +} +inline const ::pg_query::Node& RangeTblFunction::_internal_funccolcollations(int index) const { + return funccolcollations_.Get(index); +} +inline const ::pg_query::Node& RangeTblFunction::funccolcollations(int index) const { + // @@protoc_insertion_point(field_get:pg_query.RangeTblFunction.funccolcollations) + return _internal_funccolcollations(index); +} +inline ::pg_query::Node* RangeTblFunction::_internal_add_funccolcollations() { + return funccolcollations_.Add(); +} +inline ::pg_query::Node* RangeTblFunction::add_funccolcollations() { + // @@protoc_insertion_point(field_add:pg_query.RangeTblFunction.funccolcollations) + return _internal_add_funccolcollations(); +} +inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& +RangeTblFunction::funccolcollations() const { + // @@protoc_insertion_point(field_list:pg_query.RangeTblFunction.funccolcollations) + return funccolcollations_; +} + +// ------------------------------------------------------------------- + +// TableSampleClause + +// uint32 tsmhandler = 1 [json_name = "tsmhandler"]; +inline void TableSampleClause::clear_tsmhandler() { + tsmhandler_ = 0u; +} +inline ::PROTOBUF_NAMESPACE_ID::uint32 TableSampleClause::_internal_tsmhandler() const { + return tsmhandler_; +} +inline ::PROTOBUF_NAMESPACE_ID::uint32 TableSampleClause::tsmhandler() const { + // @@protoc_insertion_point(field_get:pg_query.TableSampleClause.tsmhandler) + return _internal_tsmhandler(); +} +inline void TableSampleClause::_internal_set_tsmhandler(::PROTOBUF_NAMESPACE_ID::uint32 value) { + + tsmhandler_ = value; +} +inline void TableSampleClause::set_tsmhandler(::PROTOBUF_NAMESPACE_ID::uint32 value) { + _internal_set_tsmhandler(value); + // @@protoc_insertion_point(field_set:pg_query.TableSampleClause.tsmhandler) +} + +// repeated .pg_query.Node args = 2 [json_name = "args"]; +inline int TableSampleClause::_internal_args_size() const { + return args_.size(); +} +inline int TableSampleClause::args_size() const { + return _internal_args_size(); +} +inline void TableSampleClause::clear_args() { + args_.Clear(); +} +inline ::pg_query::Node* TableSampleClause::mutable_args(int index) { + // @@protoc_insertion_point(field_mutable:pg_query.TableSampleClause.args) + return args_.Mutable(index); +} +inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* +TableSampleClause::mutable_args() { + // @@protoc_insertion_point(field_mutable_list:pg_query.TableSampleClause.args) + return &args_; +} +inline const ::pg_query::Node& TableSampleClause::_internal_args(int index) const { + return args_.Get(index); +} +inline const ::pg_query::Node& TableSampleClause::args(int index) const { + // @@protoc_insertion_point(field_get:pg_query.TableSampleClause.args) + return _internal_args(index); +} +inline ::pg_query::Node* TableSampleClause::_internal_add_args() { + return args_.Add(); +} +inline ::pg_query::Node* TableSampleClause::add_args() { + // @@protoc_insertion_point(field_add:pg_query.TableSampleClause.args) + return _internal_add_args(); +} +inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& +TableSampleClause::args() const { + // @@protoc_insertion_point(field_list:pg_query.TableSampleClause.args) + return args_; +} + +// .pg_query.Node repeatable = 3 [json_name = "repeatable"]; +inline bool TableSampleClause::_internal_has_repeatable() const { + return this != internal_default_instance() && repeatable_ != nullptr; +} +inline bool TableSampleClause::has_repeatable() const { + return _internal_has_repeatable(); +} +inline void TableSampleClause::clear_repeatable() { + if (GetArena() == nullptr && repeatable_ != nullptr) { + delete repeatable_; + } + repeatable_ = nullptr; +} +inline const ::pg_query::Node& TableSampleClause::_internal_repeatable() const { + const ::pg_query::Node* p = repeatable_; + return p != nullptr ? *p : reinterpret_cast( + ::pg_query::_Node_default_instance_); +} +inline const ::pg_query::Node& TableSampleClause::repeatable() const { + // @@protoc_insertion_point(field_get:pg_query.TableSampleClause.repeatable) + return _internal_repeatable(); +} +inline void TableSampleClause::unsafe_arena_set_allocated_repeatable( + ::pg_query::Node* repeatable) { + if (GetArena() == nullptr) { + delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(repeatable_); + } + repeatable_ = repeatable; + if (repeatable) { + + } else { + + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.TableSampleClause.repeatable) +} +inline ::pg_query::Node* TableSampleClause::release_repeatable() { + + ::pg_query::Node* temp = repeatable_; + repeatable_ = nullptr; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + return temp; +} +inline ::pg_query::Node* TableSampleClause::unsafe_arena_release_repeatable() { + // @@protoc_insertion_point(field_release:pg_query.TableSampleClause.repeatable) + + ::pg_query::Node* temp = repeatable_; + repeatable_ = nullptr; + return temp; +} +inline ::pg_query::Node* TableSampleClause::_internal_mutable_repeatable() { + + if (repeatable_ == nullptr) { + auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); + repeatable_ = p; + } + return repeatable_; +} +inline ::pg_query::Node* TableSampleClause::mutable_repeatable() { + // @@protoc_insertion_point(field_mutable:pg_query.TableSampleClause.repeatable) + return _internal_mutable_repeatable(); +} +inline void TableSampleClause::set_allocated_repeatable(::pg_query::Node* repeatable) { + ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); + if (message_arena == nullptr) { + delete repeatable_; + } + if (repeatable) { + ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = + ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(repeatable); + if (message_arena != submessage_arena) { + repeatable = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( + message_arena, repeatable, submessage_arena); + } + + } else { + + } + repeatable_ = repeatable; + // @@protoc_insertion_point(field_set_allocated:pg_query.TableSampleClause.repeatable) +} + +// ------------------------------------------------------------------- + +// WithCheckOption + +// .pg_query.WCOKind kind = 1 [json_name = "kind"]; +inline void WithCheckOption::clear_kind() { + kind_ = 0; +} +inline ::pg_query::WCOKind WithCheckOption::_internal_kind() const { + return static_cast< ::pg_query::WCOKind >(kind_); +} +inline ::pg_query::WCOKind WithCheckOption::kind() const { + // @@protoc_insertion_point(field_get:pg_query.WithCheckOption.kind) + return _internal_kind(); +} +inline void WithCheckOption::_internal_set_kind(::pg_query::WCOKind value) { + + kind_ = value; +} +inline void WithCheckOption::set_kind(::pg_query::WCOKind value) { + _internal_set_kind(value); + // @@protoc_insertion_point(field_set:pg_query.WithCheckOption.kind) +} + +// string relname = 2 [json_name = "relname"]; +inline void WithCheckOption::clear_relname() { + relname_.ClearToEmpty(); +} +inline const std::string& WithCheckOption::relname() const { + // @@protoc_insertion_point(field_get:pg_query.WithCheckOption.relname) + return _internal_relname(); +} +inline void WithCheckOption::set_relname(const std::string& value) { + _internal_set_relname(value); + // @@protoc_insertion_point(field_set:pg_query.WithCheckOption.relname) +} +inline std::string* WithCheckOption::mutable_relname() { + // @@protoc_insertion_point(field_mutable:pg_query.WithCheckOption.relname) + return _internal_mutable_relname(); +} +inline const std::string& WithCheckOption::_internal_relname() const { + return relname_.Get(); +} +inline void WithCheckOption::_internal_set_relname(const std::string& value) { + + relname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArena()); +} +inline void WithCheckOption::set_relname(std::string&& value) { + + relname_.Set( + ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::move(value), GetArena()); + // @@protoc_insertion_point(field_set_rvalue:pg_query.WithCheckOption.relname) +} +inline void WithCheckOption::set_relname(const char* value) { + GOOGLE_DCHECK(value != nullptr); + + relname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string(value), GetArena()); + // @@protoc_insertion_point(field_set_char:pg_query.WithCheckOption.relname) +} +inline void WithCheckOption::set_relname(const char* value, + size_t size) { + + relname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string( + reinterpret_cast(value), size), GetArena()); + // @@protoc_insertion_point(field_set_pointer:pg_query.WithCheckOption.relname) +} +inline std::string* WithCheckOption::_internal_mutable_relname() { + + return relname_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArena()); +} +inline std::string* WithCheckOption::release_relname() { + // @@protoc_insertion_point(field_release:pg_query.WithCheckOption.relname) + return relname_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); +} +inline void WithCheckOption::set_allocated_relname(std::string* relname) { + if (relname != nullptr) { + + } else { + + } + relname_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), relname, + GetArena()); + // @@protoc_insertion_point(field_set_allocated:pg_query.WithCheckOption.relname) +} + +// string polname = 3 [json_name = "polname"]; +inline void WithCheckOption::clear_polname() { + polname_.ClearToEmpty(); +} +inline const std::string& WithCheckOption::polname() const { + // @@protoc_insertion_point(field_get:pg_query.WithCheckOption.polname) + return _internal_polname(); +} +inline void WithCheckOption::set_polname(const std::string& value) { + _internal_set_polname(value); + // @@protoc_insertion_point(field_set:pg_query.WithCheckOption.polname) +} +inline std::string* WithCheckOption::mutable_polname() { + // @@protoc_insertion_point(field_mutable:pg_query.WithCheckOption.polname) + return _internal_mutable_polname(); +} +inline const std::string& WithCheckOption::_internal_polname() const { + return polname_.Get(); +} +inline void WithCheckOption::_internal_set_polname(const std::string& value) { + + polname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArena()); +} +inline void WithCheckOption::set_polname(std::string&& value) { + + polname_.Set( + ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::move(value), GetArena()); + // @@protoc_insertion_point(field_set_rvalue:pg_query.WithCheckOption.polname) +} +inline void WithCheckOption::set_polname(const char* value) { + GOOGLE_DCHECK(value != nullptr); + + polname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string(value), GetArena()); + // @@protoc_insertion_point(field_set_char:pg_query.WithCheckOption.polname) +} +inline void WithCheckOption::set_polname(const char* value, + size_t size) { + + polname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string( + reinterpret_cast(value), size), GetArena()); + // @@protoc_insertion_point(field_set_pointer:pg_query.WithCheckOption.polname) +} +inline std::string* WithCheckOption::_internal_mutable_polname() { + + return polname_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArena()); +} +inline std::string* WithCheckOption::release_polname() { + // @@protoc_insertion_point(field_release:pg_query.WithCheckOption.polname) + return polname_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); +} +inline void WithCheckOption::set_allocated_polname(std::string* polname) { + if (polname != nullptr) { + + } else { + + } + polname_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), polname, + GetArena()); + // @@protoc_insertion_point(field_set_allocated:pg_query.WithCheckOption.polname) +} + +// .pg_query.Node qual = 4 [json_name = "qual"]; +inline bool WithCheckOption::_internal_has_qual() const { + return this != internal_default_instance() && qual_ != nullptr; +} +inline bool WithCheckOption::has_qual() const { + return _internal_has_qual(); +} +inline void WithCheckOption::clear_qual() { + if (GetArena() == nullptr && qual_ != nullptr) { + delete qual_; + } + qual_ = nullptr; +} +inline const ::pg_query::Node& WithCheckOption::_internal_qual() const { + const ::pg_query::Node* p = qual_; + return p != nullptr ? *p : reinterpret_cast( + ::pg_query::_Node_default_instance_); +} +inline const ::pg_query::Node& WithCheckOption::qual() const { + // @@protoc_insertion_point(field_get:pg_query.WithCheckOption.qual) + return _internal_qual(); +} +inline void WithCheckOption::unsafe_arena_set_allocated_qual( + ::pg_query::Node* qual) { + if (GetArena() == nullptr) { + delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(qual_); + } + qual_ = qual; + if (qual) { + + } else { + + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.WithCheckOption.qual) +} +inline ::pg_query::Node* WithCheckOption::release_qual() { + + ::pg_query::Node* temp = qual_; + qual_ = nullptr; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + return temp; +} +inline ::pg_query::Node* WithCheckOption::unsafe_arena_release_qual() { + // @@protoc_insertion_point(field_release:pg_query.WithCheckOption.qual) + + ::pg_query::Node* temp = qual_; + qual_ = nullptr; + return temp; +} +inline ::pg_query::Node* WithCheckOption::_internal_mutable_qual() { + + if (qual_ == nullptr) { + auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); + qual_ = p; + } + return qual_; +} +inline ::pg_query::Node* WithCheckOption::mutable_qual() { + // @@protoc_insertion_point(field_mutable:pg_query.WithCheckOption.qual) + return _internal_mutable_qual(); +} +inline void WithCheckOption::set_allocated_qual(::pg_query::Node* qual) { + ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); + if (message_arena == nullptr) { + delete qual_; + } + if (qual) { + ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = + ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(qual); + if (message_arena != submessage_arena) { + qual = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( + message_arena, qual, submessage_arena); + } + + } else { + + } + qual_ = qual; + // @@protoc_insertion_point(field_set_allocated:pg_query.WithCheckOption.qual) +} + +// bool cascaded = 5 [json_name = "cascaded"]; +inline void WithCheckOption::clear_cascaded() { + cascaded_ = false; +} +inline bool WithCheckOption::_internal_cascaded() const { + return cascaded_; +} +inline bool WithCheckOption::cascaded() const { + // @@protoc_insertion_point(field_get:pg_query.WithCheckOption.cascaded) + return _internal_cascaded(); +} +inline void WithCheckOption::_internal_set_cascaded(bool value) { + + cascaded_ = value; +} +inline void WithCheckOption::set_cascaded(bool value) { + _internal_set_cascaded(value); + // @@protoc_insertion_point(field_set:pg_query.WithCheckOption.cascaded) +} + +// ------------------------------------------------------------------- + +// SortGroupClause + +// uint32 tle_sort_group_ref = 1 [json_name = "tleSortGroupRef"]; +inline void SortGroupClause::clear_tle_sort_group_ref() { + tle_sort_group_ref_ = 0u; +} +inline ::PROTOBUF_NAMESPACE_ID::uint32 SortGroupClause::_internal_tle_sort_group_ref() const { + return tle_sort_group_ref_; +} +inline ::PROTOBUF_NAMESPACE_ID::uint32 SortGroupClause::tle_sort_group_ref() const { + // @@protoc_insertion_point(field_get:pg_query.SortGroupClause.tle_sort_group_ref) + return _internal_tle_sort_group_ref(); +} +inline void SortGroupClause::_internal_set_tle_sort_group_ref(::PROTOBUF_NAMESPACE_ID::uint32 value) { + + tle_sort_group_ref_ = value; +} +inline void SortGroupClause::set_tle_sort_group_ref(::PROTOBUF_NAMESPACE_ID::uint32 value) { + _internal_set_tle_sort_group_ref(value); + // @@protoc_insertion_point(field_set:pg_query.SortGroupClause.tle_sort_group_ref) +} + +// uint32 eqop = 2 [json_name = "eqop"]; +inline void SortGroupClause::clear_eqop() { + eqop_ = 0u; +} +inline ::PROTOBUF_NAMESPACE_ID::uint32 SortGroupClause::_internal_eqop() const { + return eqop_; +} +inline ::PROTOBUF_NAMESPACE_ID::uint32 SortGroupClause::eqop() const { + // @@protoc_insertion_point(field_get:pg_query.SortGroupClause.eqop) + return _internal_eqop(); +} +inline void SortGroupClause::_internal_set_eqop(::PROTOBUF_NAMESPACE_ID::uint32 value) { + + eqop_ = value; +} +inline void SortGroupClause::set_eqop(::PROTOBUF_NAMESPACE_ID::uint32 value) { + _internal_set_eqop(value); + // @@protoc_insertion_point(field_set:pg_query.SortGroupClause.eqop) +} + +// uint32 sortop = 3 [json_name = "sortop"]; +inline void SortGroupClause::clear_sortop() { + sortop_ = 0u; +} +inline ::PROTOBUF_NAMESPACE_ID::uint32 SortGroupClause::_internal_sortop() const { + return sortop_; +} +inline ::PROTOBUF_NAMESPACE_ID::uint32 SortGroupClause::sortop() const { + // @@protoc_insertion_point(field_get:pg_query.SortGroupClause.sortop) + return _internal_sortop(); +} +inline void SortGroupClause::_internal_set_sortop(::PROTOBUF_NAMESPACE_ID::uint32 value) { + + sortop_ = value; +} +inline void SortGroupClause::set_sortop(::PROTOBUF_NAMESPACE_ID::uint32 value) { + _internal_set_sortop(value); + // @@protoc_insertion_point(field_set:pg_query.SortGroupClause.sortop) +} + +// bool nulls_first = 4 [json_name = "nulls_first"]; +inline void SortGroupClause::clear_nulls_first() { + nulls_first_ = false; +} +inline bool SortGroupClause::_internal_nulls_first() const { + return nulls_first_; +} +inline bool SortGroupClause::nulls_first() const { + // @@protoc_insertion_point(field_get:pg_query.SortGroupClause.nulls_first) + return _internal_nulls_first(); +} +inline void SortGroupClause::_internal_set_nulls_first(bool value) { + + nulls_first_ = value; +} +inline void SortGroupClause::set_nulls_first(bool value) { + _internal_set_nulls_first(value); + // @@protoc_insertion_point(field_set:pg_query.SortGroupClause.nulls_first) +} + +// bool hashable = 5 [json_name = "hashable"]; +inline void SortGroupClause::clear_hashable() { + hashable_ = false; +} +inline bool SortGroupClause::_internal_hashable() const { + return hashable_; +} +inline bool SortGroupClause::hashable() const { + // @@protoc_insertion_point(field_get:pg_query.SortGroupClause.hashable) + return _internal_hashable(); +} +inline void SortGroupClause::_internal_set_hashable(bool value) { + + hashable_ = value; +} +inline void SortGroupClause::set_hashable(bool value) { + _internal_set_hashable(value); + // @@protoc_insertion_point(field_set:pg_query.SortGroupClause.hashable) +} + +// ------------------------------------------------------------------- + +// GroupingSet + +// .pg_query.GroupingSetKind kind = 1 [json_name = "kind"]; +inline void GroupingSet::clear_kind() { + kind_ = 0; +} +inline ::pg_query::GroupingSetKind GroupingSet::_internal_kind() const { + return static_cast< ::pg_query::GroupingSetKind >(kind_); +} +inline ::pg_query::GroupingSetKind GroupingSet::kind() const { + // @@protoc_insertion_point(field_get:pg_query.GroupingSet.kind) + return _internal_kind(); +} +inline void GroupingSet::_internal_set_kind(::pg_query::GroupingSetKind value) { + + kind_ = value; +} +inline void GroupingSet::set_kind(::pg_query::GroupingSetKind value) { + _internal_set_kind(value); + // @@protoc_insertion_point(field_set:pg_query.GroupingSet.kind) +} + +// repeated .pg_query.Node content = 2 [json_name = "content"]; +inline int GroupingSet::_internal_content_size() const { + return content_.size(); +} +inline int GroupingSet::content_size() const { + return _internal_content_size(); +} +inline void GroupingSet::clear_content() { + content_.Clear(); +} +inline ::pg_query::Node* GroupingSet::mutable_content(int index) { + // @@protoc_insertion_point(field_mutable:pg_query.GroupingSet.content) + return content_.Mutable(index); +} +inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* +GroupingSet::mutable_content() { + // @@protoc_insertion_point(field_mutable_list:pg_query.GroupingSet.content) + return &content_; +} +inline const ::pg_query::Node& GroupingSet::_internal_content(int index) const { + return content_.Get(index); +} +inline const ::pg_query::Node& GroupingSet::content(int index) const { + // @@protoc_insertion_point(field_get:pg_query.GroupingSet.content) + return _internal_content(index); +} +inline ::pg_query::Node* GroupingSet::_internal_add_content() { + return content_.Add(); +} +inline ::pg_query::Node* GroupingSet::add_content() { + // @@protoc_insertion_point(field_add:pg_query.GroupingSet.content) + return _internal_add_content(); +} +inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& +GroupingSet::content() const { + // @@protoc_insertion_point(field_list:pg_query.GroupingSet.content) + return content_; +} + +// int32 location = 3 [json_name = "location"]; +inline void GroupingSet::clear_location() { + location_ = 0; +} +inline ::PROTOBUF_NAMESPACE_ID::int32 GroupingSet::_internal_location() const { + return location_; +} +inline ::PROTOBUF_NAMESPACE_ID::int32 GroupingSet::location() const { + // @@protoc_insertion_point(field_get:pg_query.GroupingSet.location) + return _internal_location(); +} +inline void GroupingSet::_internal_set_location(::PROTOBUF_NAMESPACE_ID::int32 value) { + + location_ = value; +} +inline void GroupingSet::set_location(::PROTOBUF_NAMESPACE_ID::int32 value) { + _internal_set_location(value); + // @@protoc_insertion_point(field_set:pg_query.GroupingSet.location) +} + +// ------------------------------------------------------------------- + +// WindowClause + +// string name = 1 [json_name = "name"]; +inline void WindowClause::clear_name() { + name_.ClearToEmpty(); +} +inline const std::string& WindowClause::name() const { + // @@protoc_insertion_point(field_get:pg_query.WindowClause.name) + return _internal_name(); +} +inline void WindowClause::set_name(const std::string& value) { + _internal_set_name(value); + // @@protoc_insertion_point(field_set:pg_query.WindowClause.name) +} +inline std::string* WindowClause::mutable_name() { + // @@protoc_insertion_point(field_mutable:pg_query.WindowClause.name) + return _internal_mutable_name(); +} +inline const std::string& WindowClause::_internal_name() const { + return name_.Get(); +} +inline void WindowClause::_internal_set_name(const std::string& value) { + + name_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArena()); +} +inline void WindowClause::set_name(std::string&& value) { + + name_.Set( + ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::move(value), GetArena()); + // @@protoc_insertion_point(field_set_rvalue:pg_query.WindowClause.name) +} +inline void WindowClause::set_name(const char* value) { + GOOGLE_DCHECK(value != nullptr); + + name_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string(value), GetArena()); + // @@protoc_insertion_point(field_set_char:pg_query.WindowClause.name) +} +inline void WindowClause::set_name(const char* value, + size_t size) { + + name_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string( + reinterpret_cast(value), size), GetArena()); + // @@protoc_insertion_point(field_set_pointer:pg_query.WindowClause.name) +} +inline std::string* WindowClause::_internal_mutable_name() { + + return name_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArena()); +} +inline std::string* WindowClause::release_name() { + // @@protoc_insertion_point(field_release:pg_query.WindowClause.name) + return name_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); +} +inline void WindowClause::set_allocated_name(std::string* name) { + if (name != nullptr) { + + } else { + + } + name_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), name, + GetArena()); + // @@protoc_insertion_point(field_set_allocated:pg_query.WindowClause.name) +} + +// string refname = 2 [json_name = "refname"]; +inline void WindowClause::clear_refname() { + refname_.ClearToEmpty(); +} +inline const std::string& WindowClause::refname() const { + // @@protoc_insertion_point(field_get:pg_query.WindowClause.refname) + return _internal_refname(); +} +inline void WindowClause::set_refname(const std::string& value) { + _internal_set_refname(value); + // @@protoc_insertion_point(field_set:pg_query.WindowClause.refname) +} +inline std::string* WindowClause::mutable_refname() { + // @@protoc_insertion_point(field_mutable:pg_query.WindowClause.refname) + return _internal_mutable_refname(); +} +inline const std::string& WindowClause::_internal_refname() const { + return refname_.Get(); +} +inline void WindowClause::_internal_set_refname(const std::string& value) { + + refname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArena()); +} +inline void WindowClause::set_refname(std::string&& value) { + + refname_.Set( + ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::move(value), GetArena()); + // @@protoc_insertion_point(field_set_rvalue:pg_query.WindowClause.refname) +} +inline void WindowClause::set_refname(const char* value) { + GOOGLE_DCHECK(value != nullptr); + + refname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string(value), GetArena()); + // @@protoc_insertion_point(field_set_char:pg_query.WindowClause.refname) +} +inline void WindowClause::set_refname(const char* value, + size_t size) { + + refname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string( + reinterpret_cast(value), size), GetArena()); + // @@protoc_insertion_point(field_set_pointer:pg_query.WindowClause.refname) +} +inline std::string* WindowClause::_internal_mutable_refname() { + + return refname_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArena()); +} +inline std::string* WindowClause::release_refname() { + // @@protoc_insertion_point(field_release:pg_query.WindowClause.refname) + return refname_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); +} +inline void WindowClause::set_allocated_refname(std::string* refname) { + if (refname != nullptr) { + + } else { + + } + refname_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), refname, + GetArena()); + // @@protoc_insertion_point(field_set_allocated:pg_query.WindowClause.refname) +} + +// repeated .pg_query.Node partition_clause = 3 [json_name = "partitionClause"]; +inline int WindowClause::_internal_partition_clause_size() const { + return partition_clause_.size(); +} +inline int WindowClause::partition_clause_size() const { + return _internal_partition_clause_size(); +} +inline void WindowClause::clear_partition_clause() { + partition_clause_.Clear(); +} +inline ::pg_query::Node* WindowClause::mutable_partition_clause(int index) { + // @@protoc_insertion_point(field_mutable:pg_query.WindowClause.partition_clause) + return partition_clause_.Mutable(index); +} +inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* +WindowClause::mutable_partition_clause() { + // @@protoc_insertion_point(field_mutable_list:pg_query.WindowClause.partition_clause) + return &partition_clause_; +} +inline const ::pg_query::Node& WindowClause::_internal_partition_clause(int index) const { + return partition_clause_.Get(index); +} +inline const ::pg_query::Node& WindowClause::partition_clause(int index) const { + // @@protoc_insertion_point(field_get:pg_query.WindowClause.partition_clause) + return _internal_partition_clause(index); +} +inline ::pg_query::Node* WindowClause::_internal_add_partition_clause() { + return partition_clause_.Add(); +} +inline ::pg_query::Node* WindowClause::add_partition_clause() { + // @@protoc_insertion_point(field_add:pg_query.WindowClause.partition_clause) + return _internal_add_partition_clause(); +} +inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& +WindowClause::partition_clause() const { + // @@protoc_insertion_point(field_list:pg_query.WindowClause.partition_clause) + return partition_clause_; +} + +// repeated .pg_query.Node order_clause = 4 [json_name = "orderClause"]; +inline int WindowClause::_internal_order_clause_size() const { + return order_clause_.size(); +} +inline int WindowClause::order_clause_size() const { + return _internal_order_clause_size(); +} +inline void WindowClause::clear_order_clause() { + order_clause_.Clear(); +} +inline ::pg_query::Node* WindowClause::mutable_order_clause(int index) { + // @@protoc_insertion_point(field_mutable:pg_query.WindowClause.order_clause) + return order_clause_.Mutable(index); +} +inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* +WindowClause::mutable_order_clause() { + // @@protoc_insertion_point(field_mutable_list:pg_query.WindowClause.order_clause) + return &order_clause_; +} +inline const ::pg_query::Node& WindowClause::_internal_order_clause(int index) const { + return order_clause_.Get(index); +} +inline const ::pg_query::Node& WindowClause::order_clause(int index) const { + // @@protoc_insertion_point(field_get:pg_query.WindowClause.order_clause) + return _internal_order_clause(index); +} +inline ::pg_query::Node* WindowClause::_internal_add_order_clause() { + return order_clause_.Add(); +} +inline ::pg_query::Node* WindowClause::add_order_clause() { + // @@protoc_insertion_point(field_add:pg_query.WindowClause.order_clause) + return _internal_add_order_clause(); +} +inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& +WindowClause::order_clause() const { + // @@protoc_insertion_point(field_list:pg_query.WindowClause.order_clause) + return order_clause_; +} + +// int32 frame_options = 5 [json_name = "frameOptions"]; +inline void WindowClause::clear_frame_options() { + frame_options_ = 0; +} +inline ::PROTOBUF_NAMESPACE_ID::int32 WindowClause::_internal_frame_options() const { + return frame_options_; +} +inline ::PROTOBUF_NAMESPACE_ID::int32 WindowClause::frame_options() const { + // @@protoc_insertion_point(field_get:pg_query.WindowClause.frame_options) + return _internal_frame_options(); +} +inline void WindowClause::_internal_set_frame_options(::PROTOBUF_NAMESPACE_ID::int32 value) { + + frame_options_ = value; +} +inline void WindowClause::set_frame_options(::PROTOBUF_NAMESPACE_ID::int32 value) { + _internal_set_frame_options(value); + // @@protoc_insertion_point(field_set:pg_query.WindowClause.frame_options) +} + +// .pg_query.Node start_offset = 6 [json_name = "startOffset"]; +inline bool WindowClause::_internal_has_start_offset() const { + return this != internal_default_instance() && start_offset_ != nullptr; +} +inline bool WindowClause::has_start_offset() const { + return _internal_has_start_offset(); +} +inline void WindowClause::clear_start_offset() { + if (GetArena() == nullptr && start_offset_ != nullptr) { + delete start_offset_; + } + start_offset_ = nullptr; +} +inline const ::pg_query::Node& WindowClause::_internal_start_offset() const { + const ::pg_query::Node* p = start_offset_; + return p != nullptr ? *p : reinterpret_cast( + ::pg_query::_Node_default_instance_); +} +inline const ::pg_query::Node& WindowClause::start_offset() const { + // @@protoc_insertion_point(field_get:pg_query.WindowClause.start_offset) + return _internal_start_offset(); +} +inline void WindowClause::unsafe_arena_set_allocated_start_offset( + ::pg_query::Node* start_offset) { + if (GetArena() == nullptr) { + delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(start_offset_); + } + start_offset_ = start_offset; + if (start_offset) { + + } else { + + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.WindowClause.start_offset) +} +inline ::pg_query::Node* WindowClause::release_start_offset() { + + ::pg_query::Node* temp = start_offset_; + start_offset_ = nullptr; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + return temp; +} +inline ::pg_query::Node* WindowClause::unsafe_arena_release_start_offset() { + // @@protoc_insertion_point(field_release:pg_query.WindowClause.start_offset) + + ::pg_query::Node* temp = start_offset_; + start_offset_ = nullptr; + return temp; +} +inline ::pg_query::Node* WindowClause::_internal_mutable_start_offset() { + + if (start_offset_ == nullptr) { + auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); + start_offset_ = p; + } + return start_offset_; +} +inline ::pg_query::Node* WindowClause::mutable_start_offset() { + // @@protoc_insertion_point(field_mutable:pg_query.WindowClause.start_offset) + return _internal_mutable_start_offset(); +} +inline void WindowClause::set_allocated_start_offset(::pg_query::Node* start_offset) { + ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); + if (message_arena == nullptr) { + delete start_offset_; + } + if (start_offset) { + ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = + ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(start_offset); + if (message_arena != submessage_arena) { + start_offset = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( + message_arena, start_offset, submessage_arena); + } + + } else { + + } + start_offset_ = start_offset; + // @@protoc_insertion_point(field_set_allocated:pg_query.WindowClause.start_offset) +} + +// .pg_query.Node end_offset = 7 [json_name = "endOffset"]; +inline bool WindowClause::_internal_has_end_offset() const { + return this != internal_default_instance() && end_offset_ != nullptr; +} +inline bool WindowClause::has_end_offset() const { + return _internal_has_end_offset(); +} +inline void WindowClause::clear_end_offset() { + if (GetArena() == nullptr && end_offset_ != nullptr) { + delete end_offset_; + } + end_offset_ = nullptr; +} +inline const ::pg_query::Node& WindowClause::_internal_end_offset() const { + const ::pg_query::Node* p = end_offset_; + return p != nullptr ? *p : reinterpret_cast( + ::pg_query::_Node_default_instance_); +} +inline const ::pg_query::Node& WindowClause::end_offset() const { + // @@protoc_insertion_point(field_get:pg_query.WindowClause.end_offset) + return _internal_end_offset(); +} +inline void WindowClause::unsafe_arena_set_allocated_end_offset( + ::pg_query::Node* end_offset) { + if (GetArena() == nullptr) { + delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(end_offset_); + } + end_offset_ = end_offset; + if (end_offset) { + + } else { + + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.WindowClause.end_offset) +} +inline ::pg_query::Node* WindowClause::release_end_offset() { + + ::pg_query::Node* temp = end_offset_; + end_offset_ = nullptr; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + return temp; +} +inline ::pg_query::Node* WindowClause::unsafe_arena_release_end_offset() { + // @@protoc_insertion_point(field_release:pg_query.WindowClause.end_offset) + + ::pg_query::Node* temp = end_offset_; + end_offset_ = nullptr; + return temp; +} +inline ::pg_query::Node* WindowClause::_internal_mutable_end_offset() { + + if (end_offset_ == nullptr) { + auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); + end_offset_ = p; + } + return end_offset_; +} +inline ::pg_query::Node* WindowClause::mutable_end_offset() { + // @@protoc_insertion_point(field_mutable:pg_query.WindowClause.end_offset) + return _internal_mutable_end_offset(); +} +inline void WindowClause::set_allocated_end_offset(::pg_query::Node* end_offset) { + ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); + if (message_arena == nullptr) { + delete end_offset_; + } + if (end_offset) { + ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = + ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(end_offset); + if (message_arena != submessage_arena) { + end_offset = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( + message_arena, end_offset, submessage_arena); + } + + } else { + + } + end_offset_ = end_offset; + // @@protoc_insertion_point(field_set_allocated:pg_query.WindowClause.end_offset) +} + +// uint32 start_in_range_func = 8 [json_name = "startInRangeFunc"]; +inline void WindowClause::clear_start_in_range_func() { + start_in_range_func_ = 0u; +} +inline ::PROTOBUF_NAMESPACE_ID::uint32 WindowClause::_internal_start_in_range_func() const { + return start_in_range_func_; +} +inline ::PROTOBUF_NAMESPACE_ID::uint32 WindowClause::start_in_range_func() const { + // @@protoc_insertion_point(field_get:pg_query.WindowClause.start_in_range_func) + return _internal_start_in_range_func(); +} +inline void WindowClause::_internal_set_start_in_range_func(::PROTOBUF_NAMESPACE_ID::uint32 value) { + + start_in_range_func_ = value; +} +inline void WindowClause::set_start_in_range_func(::PROTOBUF_NAMESPACE_ID::uint32 value) { + _internal_set_start_in_range_func(value); + // @@protoc_insertion_point(field_set:pg_query.WindowClause.start_in_range_func) +} + +// uint32 end_in_range_func = 9 [json_name = "endInRangeFunc"]; +inline void WindowClause::clear_end_in_range_func() { + end_in_range_func_ = 0u; +} +inline ::PROTOBUF_NAMESPACE_ID::uint32 WindowClause::_internal_end_in_range_func() const { + return end_in_range_func_; +} +inline ::PROTOBUF_NAMESPACE_ID::uint32 WindowClause::end_in_range_func() const { + // @@protoc_insertion_point(field_get:pg_query.WindowClause.end_in_range_func) + return _internal_end_in_range_func(); +} +inline void WindowClause::_internal_set_end_in_range_func(::PROTOBUF_NAMESPACE_ID::uint32 value) { + + end_in_range_func_ = value; +} +inline void WindowClause::set_end_in_range_func(::PROTOBUF_NAMESPACE_ID::uint32 value) { + _internal_set_end_in_range_func(value); + // @@protoc_insertion_point(field_set:pg_query.WindowClause.end_in_range_func) +} + +// uint32 in_range_coll = 10 [json_name = "inRangeColl"]; +inline void WindowClause::clear_in_range_coll() { + in_range_coll_ = 0u; +} +inline ::PROTOBUF_NAMESPACE_ID::uint32 WindowClause::_internal_in_range_coll() const { + return in_range_coll_; +} +inline ::PROTOBUF_NAMESPACE_ID::uint32 WindowClause::in_range_coll() const { + // @@protoc_insertion_point(field_get:pg_query.WindowClause.in_range_coll) + return _internal_in_range_coll(); +} +inline void WindowClause::_internal_set_in_range_coll(::PROTOBUF_NAMESPACE_ID::uint32 value) { + + in_range_coll_ = value; +} +inline void WindowClause::set_in_range_coll(::PROTOBUF_NAMESPACE_ID::uint32 value) { + _internal_set_in_range_coll(value); + // @@protoc_insertion_point(field_set:pg_query.WindowClause.in_range_coll) +} + +// bool in_range_asc = 11 [json_name = "inRangeAsc"]; +inline void WindowClause::clear_in_range_asc() { + in_range_asc_ = false; +} +inline bool WindowClause::_internal_in_range_asc() const { + return in_range_asc_; +} +inline bool WindowClause::in_range_asc() const { + // @@protoc_insertion_point(field_get:pg_query.WindowClause.in_range_asc) + return _internal_in_range_asc(); +} +inline void WindowClause::_internal_set_in_range_asc(bool value) { + + in_range_asc_ = value; +} +inline void WindowClause::set_in_range_asc(bool value) { + _internal_set_in_range_asc(value); + // @@protoc_insertion_point(field_set:pg_query.WindowClause.in_range_asc) +} + +// bool in_range_nulls_first = 12 [json_name = "inRangeNullsFirst"]; +inline void WindowClause::clear_in_range_nulls_first() { + in_range_nulls_first_ = false; +} +inline bool WindowClause::_internal_in_range_nulls_first() const { + return in_range_nulls_first_; +} +inline bool WindowClause::in_range_nulls_first() const { + // @@protoc_insertion_point(field_get:pg_query.WindowClause.in_range_nulls_first) + return _internal_in_range_nulls_first(); +} +inline void WindowClause::_internal_set_in_range_nulls_first(bool value) { + + in_range_nulls_first_ = value; +} +inline void WindowClause::set_in_range_nulls_first(bool value) { + _internal_set_in_range_nulls_first(value); + // @@protoc_insertion_point(field_set:pg_query.WindowClause.in_range_nulls_first) +} + +// uint32 winref = 13 [json_name = "winref"]; +inline void WindowClause::clear_winref() { + winref_ = 0u; +} +inline ::PROTOBUF_NAMESPACE_ID::uint32 WindowClause::_internal_winref() const { + return winref_; +} +inline ::PROTOBUF_NAMESPACE_ID::uint32 WindowClause::winref() const { + // @@protoc_insertion_point(field_get:pg_query.WindowClause.winref) + return _internal_winref(); +} +inline void WindowClause::_internal_set_winref(::PROTOBUF_NAMESPACE_ID::uint32 value) { + + winref_ = value; +} +inline void WindowClause::set_winref(::PROTOBUF_NAMESPACE_ID::uint32 value) { + _internal_set_winref(value); + // @@protoc_insertion_point(field_set:pg_query.WindowClause.winref) +} + +// bool copied_order = 14 [json_name = "copiedOrder"]; +inline void WindowClause::clear_copied_order() { + copied_order_ = false; +} +inline bool WindowClause::_internal_copied_order() const { + return copied_order_; +} +inline bool WindowClause::copied_order() const { + // @@protoc_insertion_point(field_get:pg_query.WindowClause.copied_order) + return _internal_copied_order(); +} +inline void WindowClause::_internal_set_copied_order(bool value) { + + copied_order_ = value; +} +inline void WindowClause::set_copied_order(bool value) { + _internal_set_copied_order(value); + // @@protoc_insertion_point(field_set:pg_query.WindowClause.copied_order) +} + +// ------------------------------------------------------------------- + +// ObjectWithArgs + +// repeated .pg_query.Node objname = 1 [json_name = "objname"]; +inline int ObjectWithArgs::_internal_objname_size() const { + return objname_.size(); +} +inline int ObjectWithArgs::objname_size() const { + return _internal_objname_size(); +} +inline void ObjectWithArgs::clear_objname() { + objname_.Clear(); +} +inline ::pg_query::Node* ObjectWithArgs::mutable_objname(int index) { + // @@protoc_insertion_point(field_mutable:pg_query.ObjectWithArgs.objname) + return objname_.Mutable(index); +} +inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* +ObjectWithArgs::mutable_objname() { + // @@protoc_insertion_point(field_mutable_list:pg_query.ObjectWithArgs.objname) + return &objname_; +} +inline const ::pg_query::Node& ObjectWithArgs::_internal_objname(int index) const { + return objname_.Get(index); +} +inline const ::pg_query::Node& ObjectWithArgs::objname(int index) const { + // @@protoc_insertion_point(field_get:pg_query.ObjectWithArgs.objname) + return _internal_objname(index); +} +inline ::pg_query::Node* ObjectWithArgs::_internal_add_objname() { + return objname_.Add(); +} +inline ::pg_query::Node* ObjectWithArgs::add_objname() { + // @@protoc_insertion_point(field_add:pg_query.ObjectWithArgs.objname) + return _internal_add_objname(); +} +inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& +ObjectWithArgs::objname() const { + // @@protoc_insertion_point(field_list:pg_query.ObjectWithArgs.objname) + return objname_; +} + +// repeated .pg_query.Node objargs = 2 [json_name = "objargs"]; +inline int ObjectWithArgs::_internal_objargs_size() const { + return objargs_.size(); +} +inline int ObjectWithArgs::objargs_size() const { + return _internal_objargs_size(); +} +inline void ObjectWithArgs::clear_objargs() { + objargs_.Clear(); +} +inline ::pg_query::Node* ObjectWithArgs::mutable_objargs(int index) { + // @@protoc_insertion_point(field_mutable:pg_query.ObjectWithArgs.objargs) + return objargs_.Mutable(index); +} +inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* +ObjectWithArgs::mutable_objargs() { + // @@protoc_insertion_point(field_mutable_list:pg_query.ObjectWithArgs.objargs) + return &objargs_; +} +inline const ::pg_query::Node& ObjectWithArgs::_internal_objargs(int index) const { + return objargs_.Get(index); +} +inline const ::pg_query::Node& ObjectWithArgs::objargs(int index) const { + // @@protoc_insertion_point(field_get:pg_query.ObjectWithArgs.objargs) + return _internal_objargs(index); +} +inline ::pg_query::Node* ObjectWithArgs::_internal_add_objargs() { + return objargs_.Add(); +} +inline ::pg_query::Node* ObjectWithArgs::add_objargs() { + // @@protoc_insertion_point(field_add:pg_query.ObjectWithArgs.objargs) + return _internal_add_objargs(); +} +inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& +ObjectWithArgs::objargs() const { + // @@protoc_insertion_point(field_list:pg_query.ObjectWithArgs.objargs) + return objargs_; +} + +// bool args_unspecified = 3 [json_name = "args_unspecified"]; +inline void ObjectWithArgs::clear_args_unspecified() { + args_unspecified_ = false; +} +inline bool ObjectWithArgs::_internal_args_unspecified() const { + return args_unspecified_; +} +inline bool ObjectWithArgs::args_unspecified() const { + // @@protoc_insertion_point(field_get:pg_query.ObjectWithArgs.args_unspecified) + return _internal_args_unspecified(); +} +inline void ObjectWithArgs::_internal_set_args_unspecified(bool value) { + + args_unspecified_ = value; +} +inline void ObjectWithArgs::set_args_unspecified(bool value) { + _internal_set_args_unspecified(value); + // @@protoc_insertion_point(field_set:pg_query.ObjectWithArgs.args_unspecified) +} + +// ------------------------------------------------------------------- + +// AccessPriv + +// string priv_name = 1 [json_name = "priv_name"]; +inline void AccessPriv::clear_priv_name() { + priv_name_.ClearToEmpty(); +} +inline const std::string& AccessPriv::priv_name() const { + // @@protoc_insertion_point(field_get:pg_query.AccessPriv.priv_name) + return _internal_priv_name(); +} +inline void AccessPriv::set_priv_name(const std::string& value) { + _internal_set_priv_name(value); + // @@protoc_insertion_point(field_set:pg_query.AccessPriv.priv_name) +} +inline std::string* AccessPriv::mutable_priv_name() { + // @@protoc_insertion_point(field_mutable:pg_query.AccessPriv.priv_name) + return _internal_mutable_priv_name(); +} +inline const std::string& AccessPriv::_internal_priv_name() const { + return priv_name_.Get(); +} +inline void AccessPriv::_internal_set_priv_name(const std::string& value) { + + priv_name_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArena()); +} +inline void AccessPriv::set_priv_name(std::string&& value) { + + priv_name_.Set( + ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::move(value), GetArena()); + // @@protoc_insertion_point(field_set_rvalue:pg_query.AccessPriv.priv_name) +} +inline void AccessPriv::set_priv_name(const char* value) { + GOOGLE_DCHECK(value != nullptr); + + priv_name_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string(value), GetArena()); + // @@protoc_insertion_point(field_set_char:pg_query.AccessPriv.priv_name) +} +inline void AccessPriv::set_priv_name(const char* value, + size_t size) { + + priv_name_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string( + reinterpret_cast(value), size), GetArena()); + // @@protoc_insertion_point(field_set_pointer:pg_query.AccessPriv.priv_name) +} +inline std::string* AccessPriv::_internal_mutable_priv_name() { + + return priv_name_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArena()); +} +inline std::string* AccessPriv::release_priv_name() { + // @@protoc_insertion_point(field_release:pg_query.AccessPriv.priv_name) + return priv_name_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); +} +inline void AccessPriv::set_allocated_priv_name(std::string* priv_name) { + if (priv_name != nullptr) { + + } else { + + } + priv_name_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), priv_name, + GetArena()); + // @@protoc_insertion_point(field_set_allocated:pg_query.AccessPriv.priv_name) +} + +// repeated .pg_query.Node cols = 2 [json_name = "cols"]; +inline int AccessPriv::_internal_cols_size() const { + return cols_.size(); +} +inline int AccessPriv::cols_size() const { + return _internal_cols_size(); +} +inline void AccessPriv::clear_cols() { + cols_.Clear(); +} +inline ::pg_query::Node* AccessPriv::mutable_cols(int index) { + // @@protoc_insertion_point(field_mutable:pg_query.AccessPriv.cols) + return cols_.Mutable(index); +} +inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* +AccessPriv::mutable_cols() { + // @@protoc_insertion_point(field_mutable_list:pg_query.AccessPriv.cols) + return &cols_; +} +inline const ::pg_query::Node& AccessPriv::_internal_cols(int index) const { + return cols_.Get(index); +} +inline const ::pg_query::Node& AccessPriv::cols(int index) const { + // @@protoc_insertion_point(field_get:pg_query.AccessPriv.cols) + return _internal_cols(index); +} +inline ::pg_query::Node* AccessPriv::_internal_add_cols() { + return cols_.Add(); +} +inline ::pg_query::Node* AccessPriv::add_cols() { + // @@protoc_insertion_point(field_add:pg_query.AccessPriv.cols) + return _internal_add_cols(); +} +inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& +AccessPriv::cols() const { + // @@protoc_insertion_point(field_list:pg_query.AccessPriv.cols) + return cols_; +} + +// ------------------------------------------------------------------- + +// CreateOpClassItem + +// int32 itemtype = 1 [json_name = "itemtype"]; +inline void CreateOpClassItem::clear_itemtype() { + itemtype_ = 0; +} +inline ::PROTOBUF_NAMESPACE_ID::int32 CreateOpClassItem::_internal_itemtype() const { + return itemtype_; +} +inline ::PROTOBUF_NAMESPACE_ID::int32 CreateOpClassItem::itemtype() const { + // @@protoc_insertion_point(field_get:pg_query.CreateOpClassItem.itemtype) + return _internal_itemtype(); +} +inline void CreateOpClassItem::_internal_set_itemtype(::PROTOBUF_NAMESPACE_ID::int32 value) { + + itemtype_ = value; +} +inline void CreateOpClassItem::set_itemtype(::PROTOBUF_NAMESPACE_ID::int32 value) { + _internal_set_itemtype(value); + // @@protoc_insertion_point(field_set:pg_query.CreateOpClassItem.itemtype) +} + +// .pg_query.ObjectWithArgs name = 2 [json_name = "name"]; +inline bool CreateOpClassItem::_internal_has_name() const { + return this != internal_default_instance() && name_ != nullptr; +} +inline bool CreateOpClassItem::has_name() const { + return _internal_has_name(); +} +inline void CreateOpClassItem::clear_name() { + if (GetArena() == nullptr && name_ != nullptr) { + delete name_; + } + name_ = nullptr; +} +inline const ::pg_query::ObjectWithArgs& CreateOpClassItem::_internal_name() const { + const ::pg_query::ObjectWithArgs* p = name_; + return p != nullptr ? *p : reinterpret_cast( + ::pg_query::_ObjectWithArgs_default_instance_); +} +inline const ::pg_query::ObjectWithArgs& CreateOpClassItem::name() const { + // @@protoc_insertion_point(field_get:pg_query.CreateOpClassItem.name) + return _internal_name(); +} +inline void CreateOpClassItem::unsafe_arena_set_allocated_name( + ::pg_query::ObjectWithArgs* name) { + if (GetArena() == nullptr) { + delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(name_); + } + name_ = name; + if (name) { + + } else { + + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.CreateOpClassItem.name) +} +inline ::pg_query::ObjectWithArgs* CreateOpClassItem::release_name() { + + ::pg_query::ObjectWithArgs* temp = name_; + name_ = nullptr; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + return temp; +} +inline ::pg_query::ObjectWithArgs* CreateOpClassItem::unsafe_arena_release_name() { + // @@protoc_insertion_point(field_release:pg_query.CreateOpClassItem.name) + + ::pg_query::ObjectWithArgs* temp = name_; + name_ = nullptr; + return temp; +} +inline ::pg_query::ObjectWithArgs* CreateOpClassItem::_internal_mutable_name() { + + if (name_ == nullptr) { + auto* p = CreateMaybeMessage<::pg_query::ObjectWithArgs>(GetArena()); + name_ = p; + } + return name_; +} +inline ::pg_query::ObjectWithArgs* CreateOpClassItem::mutable_name() { + // @@protoc_insertion_point(field_mutable:pg_query.CreateOpClassItem.name) + return _internal_mutable_name(); +} +inline void CreateOpClassItem::set_allocated_name(::pg_query::ObjectWithArgs* name) { + ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); + if (message_arena == nullptr) { + delete name_; + } + if (name) { + ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = + ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(name); + if (message_arena != submessage_arena) { + name = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( + message_arena, name, submessage_arena); + } + + } else { + + } + name_ = name; + // @@protoc_insertion_point(field_set_allocated:pg_query.CreateOpClassItem.name) +} + +// int32 number = 3 [json_name = "number"]; +inline void CreateOpClassItem::clear_number() { + number_ = 0; +} +inline ::PROTOBUF_NAMESPACE_ID::int32 CreateOpClassItem::_internal_number() const { + return number_; +} +inline ::PROTOBUF_NAMESPACE_ID::int32 CreateOpClassItem::number() const { + // @@protoc_insertion_point(field_get:pg_query.CreateOpClassItem.number) + return _internal_number(); +} +inline void CreateOpClassItem::_internal_set_number(::PROTOBUF_NAMESPACE_ID::int32 value) { + + number_ = value; +} +inline void CreateOpClassItem::set_number(::PROTOBUF_NAMESPACE_ID::int32 value) { + _internal_set_number(value); + // @@protoc_insertion_point(field_set:pg_query.CreateOpClassItem.number) +} + +// repeated .pg_query.Node order_family = 4 [json_name = "order_family"]; +inline int CreateOpClassItem::_internal_order_family_size() const { + return order_family_.size(); +} +inline int CreateOpClassItem::order_family_size() const { + return _internal_order_family_size(); +} +inline void CreateOpClassItem::clear_order_family() { + order_family_.Clear(); +} +inline ::pg_query::Node* CreateOpClassItem::mutable_order_family(int index) { + // @@protoc_insertion_point(field_mutable:pg_query.CreateOpClassItem.order_family) + return order_family_.Mutable(index); +} +inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* +CreateOpClassItem::mutable_order_family() { + // @@protoc_insertion_point(field_mutable_list:pg_query.CreateOpClassItem.order_family) + return &order_family_; +} +inline const ::pg_query::Node& CreateOpClassItem::_internal_order_family(int index) const { + return order_family_.Get(index); +} +inline const ::pg_query::Node& CreateOpClassItem::order_family(int index) const { + // @@protoc_insertion_point(field_get:pg_query.CreateOpClassItem.order_family) + return _internal_order_family(index); +} +inline ::pg_query::Node* CreateOpClassItem::_internal_add_order_family() { + return order_family_.Add(); +} +inline ::pg_query::Node* CreateOpClassItem::add_order_family() { + // @@protoc_insertion_point(field_add:pg_query.CreateOpClassItem.order_family) + return _internal_add_order_family(); +} +inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& +CreateOpClassItem::order_family() const { + // @@protoc_insertion_point(field_list:pg_query.CreateOpClassItem.order_family) + return order_family_; +} + +// repeated .pg_query.Node class_args = 5 [json_name = "class_args"]; +inline int CreateOpClassItem::_internal_class_args_size() const { + return class_args_.size(); +} +inline int CreateOpClassItem::class_args_size() const { + return _internal_class_args_size(); +} +inline void CreateOpClassItem::clear_class_args() { + class_args_.Clear(); +} +inline ::pg_query::Node* CreateOpClassItem::mutable_class_args(int index) { + // @@protoc_insertion_point(field_mutable:pg_query.CreateOpClassItem.class_args) + return class_args_.Mutable(index); +} +inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* +CreateOpClassItem::mutable_class_args() { + // @@protoc_insertion_point(field_mutable_list:pg_query.CreateOpClassItem.class_args) + return &class_args_; +} +inline const ::pg_query::Node& CreateOpClassItem::_internal_class_args(int index) const { + return class_args_.Get(index); +} +inline const ::pg_query::Node& CreateOpClassItem::class_args(int index) const { + // @@protoc_insertion_point(field_get:pg_query.CreateOpClassItem.class_args) + return _internal_class_args(index); +} +inline ::pg_query::Node* CreateOpClassItem::_internal_add_class_args() { + return class_args_.Add(); +} +inline ::pg_query::Node* CreateOpClassItem::add_class_args() { + // @@protoc_insertion_point(field_add:pg_query.CreateOpClassItem.class_args) + return _internal_add_class_args(); +} +inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& +CreateOpClassItem::class_args() const { + // @@protoc_insertion_point(field_list:pg_query.CreateOpClassItem.class_args) + return class_args_; +} + +// .pg_query.TypeName storedtype = 6 [json_name = "storedtype"]; +inline bool CreateOpClassItem::_internal_has_storedtype() const { + return this != internal_default_instance() && storedtype_ != nullptr; +} +inline bool CreateOpClassItem::has_storedtype() const { + return _internal_has_storedtype(); +} +inline void CreateOpClassItem::clear_storedtype() { + if (GetArena() == nullptr && storedtype_ != nullptr) { + delete storedtype_; + } + storedtype_ = nullptr; +} +inline const ::pg_query::TypeName& CreateOpClassItem::_internal_storedtype() const { + const ::pg_query::TypeName* p = storedtype_; + return p != nullptr ? *p : reinterpret_cast( + ::pg_query::_TypeName_default_instance_); +} +inline const ::pg_query::TypeName& CreateOpClassItem::storedtype() const { + // @@protoc_insertion_point(field_get:pg_query.CreateOpClassItem.storedtype) + return _internal_storedtype(); +} +inline void CreateOpClassItem::unsafe_arena_set_allocated_storedtype( + ::pg_query::TypeName* storedtype) { + if (GetArena() == nullptr) { + delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(storedtype_); + } + storedtype_ = storedtype; + if (storedtype) { + + } else { + + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.CreateOpClassItem.storedtype) +} +inline ::pg_query::TypeName* CreateOpClassItem::release_storedtype() { + + ::pg_query::TypeName* temp = storedtype_; + storedtype_ = nullptr; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + return temp; +} +inline ::pg_query::TypeName* CreateOpClassItem::unsafe_arena_release_storedtype() { + // @@protoc_insertion_point(field_release:pg_query.CreateOpClassItem.storedtype) + + ::pg_query::TypeName* temp = storedtype_; + storedtype_ = nullptr; + return temp; +} +inline ::pg_query::TypeName* CreateOpClassItem::_internal_mutable_storedtype() { + + if (storedtype_ == nullptr) { + auto* p = CreateMaybeMessage<::pg_query::TypeName>(GetArena()); + storedtype_ = p; + } + return storedtype_; +} +inline ::pg_query::TypeName* CreateOpClassItem::mutable_storedtype() { + // @@protoc_insertion_point(field_mutable:pg_query.CreateOpClassItem.storedtype) + return _internal_mutable_storedtype(); +} +inline void CreateOpClassItem::set_allocated_storedtype(::pg_query::TypeName* storedtype) { + ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); + if (message_arena == nullptr) { + delete storedtype_; + } + if (storedtype) { + ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = + ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(storedtype); + if (message_arena != submessage_arena) { + storedtype = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( + message_arena, storedtype, submessage_arena); + } + + } else { + + } + storedtype_ = storedtype; + // @@protoc_insertion_point(field_set_allocated:pg_query.CreateOpClassItem.storedtype) +} + +// ------------------------------------------------------------------- + +// TableLikeClause + +// .pg_query.RangeVar relation = 1 [json_name = "relation"]; +inline bool TableLikeClause::_internal_has_relation() const { + return this != internal_default_instance() && relation_ != nullptr; +} +inline bool TableLikeClause::has_relation() const { + return _internal_has_relation(); +} +inline void TableLikeClause::clear_relation() { + if (GetArena() == nullptr && relation_ != nullptr) { + delete relation_; + } + relation_ = nullptr; +} +inline const ::pg_query::RangeVar& TableLikeClause::_internal_relation() const { + const ::pg_query::RangeVar* p = relation_; + return p != nullptr ? *p : reinterpret_cast( + ::pg_query::_RangeVar_default_instance_); +} +inline const ::pg_query::RangeVar& TableLikeClause::relation() const { + // @@protoc_insertion_point(field_get:pg_query.TableLikeClause.relation) + return _internal_relation(); +} +inline void TableLikeClause::unsafe_arena_set_allocated_relation( + ::pg_query::RangeVar* relation) { + if (GetArena() == nullptr) { + delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(relation_); + } + relation_ = relation; + if (relation) { + + } else { + + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.TableLikeClause.relation) +} +inline ::pg_query::RangeVar* TableLikeClause::release_relation() { + + ::pg_query::RangeVar* temp = relation_; + relation_ = nullptr; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + return temp; +} +inline ::pg_query::RangeVar* TableLikeClause::unsafe_arena_release_relation() { + // @@protoc_insertion_point(field_release:pg_query.TableLikeClause.relation) + + ::pg_query::RangeVar* temp = relation_; + relation_ = nullptr; + return temp; +} +inline ::pg_query::RangeVar* TableLikeClause::_internal_mutable_relation() { + + if (relation_ == nullptr) { + auto* p = CreateMaybeMessage<::pg_query::RangeVar>(GetArena()); + relation_ = p; + } + return relation_; +} +inline ::pg_query::RangeVar* TableLikeClause::mutable_relation() { + // @@protoc_insertion_point(field_mutable:pg_query.TableLikeClause.relation) + return _internal_mutable_relation(); +} +inline void TableLikeClause::set_allocated_relation(::pg_query::RangeVar* relation) { + ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); + if (message_arena == nullptr) { + delete relation_; + } + if (relation) { + ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = + ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(relation); + if (message_arena != submessage_arena) { + relation = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( + message_arena, relation, submessage_arena); + } + + } else { + + } + relation_ = relation; + // @@protoc_insertion_point(field_set_allocated:pg_query.TableLikeClause.relation) +} + +// uint32 options = 2 [json_name = "options"]; +inline void TableLikeClause::clear_options() { + options_ = 0u; +} +inline ::PROTOBUF_NAMESPACE_ID::uint32 TableLikeClause::_internal_options() const { + return options_; +} +inline ::PROTOBUF_NAMESPACE_ID::uint32 TableLikeClause::options() const { + // @@protoc_insertion_point(field_get:pg_query.TableLikeClause.options) + return _internal_options(); +} +inline void TableLikeClause::_internal_set_options(::PROTOBUF_NAMESPACE_ID::uint32 value) { + + options_ = value; +} +inline void TableLikeClause::set_options(::PROTOBUF_NAMESPACE_ID::uint32 value) { + _internal_set_options(value); + // @@protoc_insertion_point(field_set:pg_query.TableLikeClause.options) +} + +// ------------------------------------------------------------------- + +// FunctionParameter + +// string name = 1 [json_name = "name"]; +inline void FunctionParameter::clear_name() { + name_.ClearToEmpty(); +} +inline const std::string& FunctionParameter::name() const { + // @@protoc_insertion_point(field_get:pg_query.FunctionParameter.name) + return _internal_name(); +} +inline void FunctionParameter::set_name(const std::string& value) { + _internal_set_name(value); + // @@protoc_insertion_point(field_set:pg_query.FunctionParameter.name) +} +inline std::string* FunctionParameter::mutable_name() { + // @@protoc_insertion_point(field_mutable:pg_query.FunctionParameter.name) + return _internal_mutable_name(); +} +inline const std::string& FunctionParameter::_internal_name() const { + return name_.Get(); +} +inline void FunctionParameter::_internal_set_name(const std::string& value) { + + name_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArena()); +} +inline void FunctionParameter::set_name(std::string&& value) { + + name_.Set( + ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::move(value), GetArena()); + // @@protoc_insertion_point(field_set_rvalue:pg_query.FunctionParameter.name) +} +inline void FunctionParameter::set_name(const char* value) { + GOOGLE_DCHECK(value != nullptr); + + name_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string(value), GetArena()); + // @@protoc_insertion_point(field_set_char:pg_query.FunctionParameter.name) +} +inline void FunctionParameter::set_name(const char* value, + size_t size) { + + name_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string( + reinterpret_cast(value), size), GetArena()); + // @@protoc_insertion_point(field_set_pointer:pg_query.FunctionParameter.name) +} +inline std::string* FunctionParameter::_internal_mutable_name() { + + return name_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArena()); +} +inline std::string* FunctionParameter::release_name() { + // @@protoc_insertion_point(field_release:pg_query.FunctionParameter.name) + return name_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); +} +inline void FunctionParameter::set_allocated_name(std::string* name) { + if (name != nullptr) { + + } else { + + } + name_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), name, + GetArena()); + // @@protoc_insertion_point(field_set_allocated:pg_query.FunctionParameter.name) +} + +// .pg_query.TypeName arg_type = 2 [json_name = "argType"]; +inline bool FunctionParameter::_internal_has_arg_type() const { + return this != internal_default_instance() && arg_type_ != nullptr; +} +inline bool FunctionParameter::has_arg_type() const { + return _internal_has_arg_type(); +} +inline void FunctionParameter::clear_arg_type() { + if (GetArena() == nullptr && arg_type_ != nullptr) { + delete arg_type_; + } + arg_type_ = nullptr; +} +inline const ::pg_query::TypeName& FunctionParameter::_internal_arg_type() const { + const ::pg_query::TypeName* p = arg_type_; + return p != nullptr ? *p : reinterpret_cast( + ::pg_query::_TypeName_default_instance_); +} +inline const ::pg_query::TypeName& FunctionParameter::arg_type() const { + // @@protoc_insertion_point(field_get:pg_query.FunctionParameter.arg_type) + return _internal_arg_type(); +} +inline void FunctionParameter::unsafe_arena_set_allocated_arg_type( + ::pg_query::TypeName* arg_type) { + if (GetArena() == nullptr) { + delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(arg_type_); + } + arg_type_ = arg_type; + if (arg_type) { + + } else { + + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.FunctionParameter.arg_type) +} +inline ::pg_query::TypeName* FunctionParameter::release_arg_type() { + + ::pg_query::TypeName* temp = arg_type_; + arg_type_ = nullptr; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + return temp; +} +inline ::pg_query::TypeName* FunctionParameter::unsafe_arena_release_arg_type() { + // @@protoc_insertion_point(field_release:pg_query.FunctionParameter.arg_type) + + ::pg_query::TypeName* temp = arg_type_; + arg_type_ = nullptr; + return temp; +} +inline ::pg_query::TypeName* FunctionParameter::_internal_mutable_arg_type() { + + if (arg_type_ == nullptr) { + auto* p = CreateMaybeMessage<::pg_query::TypeName>(GetArena()); + arg_type_ = p; + } + return arg_type_; +} +inline ::pg_query::TypeName* FunctionParameter::mutable_arg_type() { + // @@protoc_insertion_point(field_mutable:pg_query.FunctionParameter.arg_type) + return _internal_mutable_arg_type(); +} +inline void FunctionParameter::set_allocated_arg_type(::pg_query::TypeName* arg_type) { + ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); + if (message_arena == nullptr) { + delete arg_type_; + } + if (arg_type) { + ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = + ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(arg_type); + if (message_arena != submessage_arena) { + arg_type = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( + message_arena, arg_type, submessage_arena); + } + + } else { + + } + arg_type_ = arg_type; + // @@protoc_insertion_point(field_set_allocated:pg_query.FunctionParameter.arg_type) +} + +// .pg_query.FunctionParameterMode mode = 3 [json_name = "mode"]; +inline void FunctionParameter::clear_mode() { + mode_ = 0; +} +inline ::pg_query::FunctionParameterMode FunctionParameter::_internal_mode() const { + return static_cast< ::pg_query::FunctionParameterMode >(mode_); +} +inline ::pg_query::FunctionParameterMode FunctionParameter::mode() const { + // @@protoc_insertion_point(field_get:pg_query.FunctionParameter.mode) + return _internal_mode(); +} +inline void FunctionParameter::_internal_set_mode(::pg_query::FunctionParameterMode value) { + + mode_ = value; +} +inline void FunctionParameter::set_mode(::pg_query::FunctionParameterMode value) { + _internal_set_mode(value); + // @@protoc_insertion_point(field_set:pg_query.FunctionParameter.mode) +} + +// .pg_query.Node defexpr = 4 [json_name = "defexpr"]; +inline bool FunctionParameter::_internal_has_defexpr() const { + return this != internal_default_instance() && defexpr_ != nullptr; +} +inline bool FunctionParameter::has_defexpr() const { + return _internal_has_defexpr(); +} +inline void FunctionParameter::clear_defexpr() { + if (GetArena() == nullptr && defexpr_ != nullptr) { + delete defexpr_; + } + defexpr_ = nullptr; +} +inline const ::pg_query::Node& FunctionParameter::_internal_defexpr() const { + const ::pg_query::Node* p = defexpr_; + return p != nullptr ? *p : reinterpret_cast( + ::pg_query::_Node_default_instance_); +} +inline const ::pg_query::Node& FunctionParameter::defexpr() const { + // @@protoc_insertion_point(field_get:pg_query.FunctionParameter.defexpr) + return _internal_defexpr(); +} +inline void FunctionParameter::unsafe_arena_set_allocated_defexpr( + ::pg_query::Node* defexpr) { + if (GetArena() == nullptr) { + delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(defexpr_); + } + defexpr_ = defexpr; + if (defexpr) { + + } else { + + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.FunctionParameter.defexpr) +} +inline ::pg_query::Node* FunctionParameter::release_defexpr() { + + ::pg_query::Node* temp = defexpr_; + defexpr_ = nullptr; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + return temp; +} +inline ::pg_query::Node* FunctionParameter::unsafe_arena_release_defexpr() { + // @@protoc_insertion_point(field_release:pg_query.FunctionParameter.defexpr) + + ::pg_query::Node* temp = defexpr_; + defexpr_ = nullptr; + return temp; +} +inline ::pg_query::Node* FunctionParameter::_internal_mutable_defexpr() { + + if (defexpr_ == nullptr) { + auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); + defexpr_ = p; + } + return defexpr_; +} +inline ::pg_query::Node* FunctionParameter::mutable_defexpr() { + // @@protoc_insertion_point(field_mutable:pg_query.FunctionParameter.defexpr) + return _internal_mutable_defexpr(); +} +inline void FunctionParameter::set_allocated_defexpr(::pg_query::Node* defexpr) { + ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); + if (message_arena == nullptr) { + delete defexpr_; + } + if (defexpr) { + ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = + ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(defexpr); + if (message_arena != submessage_arena) { + defexpr = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( + message_arena, defexpr, submessage_arena); + } + + } else { + + } + defexpr_ = defexpr; + // @@protoc_insertion_point(field_set_allocated:pg_query.FunctionParameter.defexpr) +} + +// ------------------------------------------------------------------- + +// LockingClause + +// repeated .pg_query.Node locked_rels = 1 [json_name = "lockedRels"]; +inline int LockingClause::_internal_locked_rels_size() const { + return locked_rels_.size(); +} +inline int LockingClause::locked_rels_size() const { + return _internal_locked_rels_size(); +} +inline void LockingClause::clear_locked_rels() { + locked_rels_.Clear(); +} +inline ::pg_query::Node* LockingClause::mutable_locked_rels(int index) { + // @@protoc_insertion_point(field_mutable:pg_query.LockingClause.locked_rels) + return locked_rels_.Mutable(index); +} +inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* +LockingClause::mutable_locked_rels() { + // @@protoc_insertion_point(field_mutable_list:pg_query.LockingClause.locked_rels) + return &locked_rels_; +} +inline const ::pg_query::Node& LockingClause::_internal_locked_rels(int index) const { + return locked_rels_.Get(index); +} +inline const ::pg_query::Node& LockingClause::locked_rels(int index) const { + // @@protoc_insertion_point(field_get:pg_query.LockingClause.locked_rels) + return _internal_locked_rels(index); +} +inline ::pg_query::Node* LockingClause::_internal_add_locked_rels() { + return locked_rels_.Add(); +} +inline ::pg_query::Node* LockingClause::add_locked_rels() { + // @@protoc_insertion_point(field_add:pg_query.LockingClause.locked_rels) + return _internal_add_locked_rels(); +} +inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& +LockingClause::locked_rels() const { + // @@protoc_insertion_point(field_list:pg_query.LockingClause.locked_rels) + return locked_rels_; +} + +// .pg_query.LockClauseStrength strength = 2 [json_name = "strength"]; +inline void LockingClause::clear_strength() { + strength_ = 0; +} +inline ::pg_query::LockClauseStrength LockingClause::_internal_strength() const { + return static_cast< ::pg_query::LockClauseStrength >(strength_); +} +inline ::pg_query::LockClauseStrength LockingClause::strength() const { + // @@protoc_insertion_point(field_get:pg_query.LockingClause.strength) + return _internal_strength(); +} +inline void LockingClause::_internal_set_strength(::pg_query::LockClauseStrength value) { + + strength_ = value; +} +inline void LockingClause::set_strength(::pg_query::LockClauseStrength value) { + _internal_set_strength(value); + // @@protoc_insertion_point(field_set:pg_query.LockingClause.strength) +} + +// .pg_query.LockWaitPolicy wait_policy = 3 [json_name = "waitPolicy"]; +inline void LockingClause::clear_wait_policy() { + wait_policy_ = 0; +} +inline ::pg_query::LockWaitPolicy LockingClause::_internal_wait_policy() const { + return static_cast< ::pg_query::LockWaitPolicy >(wait_policy_); +} +inline ::pg_query::LockWaitPolicy LockingClause::wait_policy() const { + // @@protoc_insertion_point(field_get:pg_query.LockingClause.wait_policy) + return _internal_wait_policy(); +} +inline void LockingClause::_internal_set_wait_policy(::pg_query::LockWaitPolicy value) { + + wait_policy_ = value; +} +inline void LockingClause::set_wait_policy(::pg_query::LockWaitPolicy value) { + _internal_set_wait_policy(value); + // @@protoc_insertion_point(field_set:pg_query.LockingClause.wait_policy) +} + +// ------------------------------------------------------------------- + +// RowMarkClause + +// uint32 rti = 1 [json_name = "rti"]; +inline void RowMarkClause::clear_rti() { + rti_ = 0u; +} +inline ::PROTOBUF_NAMESPACE_ID::uint32 RowMarkClause::_internal_rti() const { + return rti_; +} +inline ::PROTOBUF_NAMESPACE_ID::uint32 RowMarkClause::rti() const { + // @@protoc_insertion_point(field_get:pg_query.RowMarkClause.rti) + return _internal_rti(); +} +inline void RowMarkClause::_internal_set_rti(::PROTOBUF_NAMESPACE_ID::uint32 value) { + + rti_ = value; +} +inline void RowMarkClause::set_rti(::PROTOBUF_NAMESPACE_ID::uint32 value) { + _internal_set_rti(value); + // @@protoc_insertion_point(field_set:pg_query.RowMarkClause.rti) +} + +// .pg_query.LockClauseStrength strength = 2 [json_name = "strength"]; +inline void RowMarkClause::clear_strength() { + strength_ = 0; +} +inline ::pg_query::LockClauseStrength RowMarkClause::_internal_strength() const { + return static_cast< ::pg_query::LockClauseStrength >(strength_); +} +inline ::pg_query::LockClauseStrength RowMarkClause::strength() const { + // @@protoc_insertion_point(field_get:pg_query.RowMarkClause.strength) + return _internal_strength(); +} +inline void RowMarkClause::_internal_set_strength(::pg_query::LockClauseStrength value) { + + strength_ = value; +} +inline void RowMarkClause::set_strength(::pg_query::LockClauseStrength value) { + _internal_set_strength(value); + // @@protoc_insertion_point(field_set:pg_query.RowMarkClause.strength) +} + +// .pg_query.LockWaitPolicy wait_policy = 3 [json_name = "waitPolicy"]; +inline void RowMarkClause::clear_wait_policy() { + wait_policy_ = 0; +} +inline ::pg_query::LockWaitPolicy RowMarkClause::_internal_wait_policy() const { + return static_cast< ::pg_query::LockWaitPolicy >(wait_policy_); +} +inline ::pg_query::LockWaitPolicy RowMarkClause::wait_policy() const { + // @@protoc_insertion_point(field_get:pg_query.RowMarkClause.wait_policy) + return _internal_wait_policy(); +} +inline void RowMarkClause::_internal_set_wait_policy(::pg_query::LockWaitPolicy value) { + + wait_policy_ = value; +} +inline void RowMarkClause::set_wait_policy(::pg_query::LockWaitPolicy value) { + _internal_set_wait_policy(value); + // @@protoc_insertion_point(field_set:pg_query.RowMarkClause.wait_policy) +} + +// bool pushed_down = 4 [json_name = "pushedDown"]; +inline void RowMarkClause::clear_pushed_down() { + pushed_down_ = false; +} +inline bool RowMarkClause::_internal_pushed_down() const { + return pushed_down_; +} +inline bool RowMarkClause::pushed_down() const { + // @@protoc_insertion_point(field_get:pg_query.RowMarkClause.pushed_down) + return _internal_pushed_down(); +} +inline void RowMarkClause::_internal_set_pushed_down(bool value) { + + pushed_down_ = value; +} +inline void RowMarkClause::set_pushed_down(bool value) { + _internal_set_pushed_down(value); + // @@protoc_insertion_point(field_set:pg_query.RowMarkClause.pushed_down) +} + +// ------------------------------------------------------------------- + +// XmlSerialize + +// .pg_query.XmlOptionType xmloption = 1 [json_name = "xmloption"]; +inline void XmlSerialize::clear_xmloption() { + xmloption_ = 0; +} +inline ::pg_query::XmlOptionType XmlSerialize::_internal_xmloption() const { + return static_cast< ::pg_query::XmlOptionType >(xmloption_); +} +inline ::pg_query::XmlOptionType XmlSerialize::xmloption() const { + // @@protoc_insertion_point(field_get:pg_query.XmlSerialize.xmloption) + return _internal_xmloption(); +} +inline void XmlSerialize::_internal_set_xmloption(::pg_query::XmlOptionType value) { + + xmloption_ = value; +} +inline void XmlSerialize::set_xmloption(::pg_query::XmlOptionType value) { + _internal_set_xmloption(value); + // @@protoc_insertion_point(field_set:pg_query.XmlSerialize.xmloption) +} + +// .pg_query.Node expr = 2 [json_name = "expr"]; +inline bool XmlSerialize::_internal_has_expr() const { + return this != internal_default_instance() && expr_ != nullptr; +} +inline bool XmlSerialize::has_expr() const { + return _internal_has_expr(); +} +inline void XmlSerialize::clear_expr() { + if (GetArena() == nullptr && expr_ != nullptr) { + delete expr_; + } + expr_ = nullptr; +} +inline const ::pg_query::Node& XmlSerialize::_internal_expr() const { + const ::pg_query::Node* p = expr_; + return p != nullptr ? *p : reinterpret_cast( + ::pg_query::_Node_default_instance_); +} +inline const ::pg_query::Node& XmlSerialize::expr() const { + // @@protoc_insertion_point(field_get:pg_query.XmlSerialize.expr) + return _internal_expr(); +} +inline void XmlSerialize::unsafe_arena_set_allocated_expr( + ::pg_query::Node* expr) { + if (GetArena() == nullptr) { + delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(expr_); + } + expr_ = expr; + if (expr) { + + } else { + + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.XmlSerialize.expr) +} +inline ::pg_query::Node* XmlSerialize::release_expr() { + + ::pg_query::Node* temp = expr_; + expr_ = nullptr; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + return temp; +} +inline ::pg_query::Node* XmlSerialize::unsafe_arena_release_expr() { + // @@protoc_insertion_point(field_release:pg_query.XmlSerialize.expr) + + ::pg_query::Node* temp = expr_; + expr_ = nullptr; + return temp; +} +inline ::pg_query::Node* XmlSerialize::_internal_mutable_expr() { + + if (expr_ == nullptr) { + auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); + expr_ = p; + } + return expr_; +} +inline ::pg_query::Node* XmlSerialize::mutable_expr() { + // @@protoc_insertion_point(field_mutable:pg_query.XmlSerialize.expr) + return _internal_mutable_expr(); +} +inline void XmlSerialize::set_allocated_expr(::pg_query::Node* expr) { + ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); + if (message_arena == nullptr) { + delete expr_; + } + if (expr) { + ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = + ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(expr); + if (message_arena != submessage_arena) { + expr = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( + message_arena, expr, submessage_arena); + } + + } else { + + } + expr_ = expr; + // @@protoc_insertion_point(field_set_allocated:pg_query.XmlSerialize.expr) +} + +// .pg_query.TypeName type_name = 3 [json_name = "typeName"]; +inline bool XmlSerialize::_internal_has_type_name() const { + return this != internal_default_instance() && type_name_ != nullptr; +} +inline bool XmlSerialize::has_type_name() const { + return _internal_has_type_name(); +} +inline void XmlSerialize::clear_type_name() { + if (GetArena() == nullptr && type_name_ != nullptr) { + delete type_name_; + } + type_name_ = nullptr; +} +inline const ::pg_query::TypeName& XmlSerialize::_internal_type_name() const { + const ::pg_query::TypeName* p = type_name_; + return p != nullptr ? *p : reinterpret_cast( + ::pg_query::_TypeName_default_instance_); +} +inline const ::pg_query::TypeName& XmlSerialize::type_name() const { + // @@protoc_insertion_point(field_get:pg_query.XmlSerialize.type_name) + return _internal_type_name(); +} +inline void XmlSerialize::unsafe_arena_set_allocated_type_name( + ::pg_query::TypeName* type_name) { + if (GetArena() == nullptr) { + delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(type_name_); + } + type_name_ = type_name; + if (type_name) { + + } else { + + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.XmlSerialize.type_name) +} +inline ::pg_query::TypeName* XmlSerialize::release_type_name() { + + ::pg_query::TypeName* temp = type_name_; + type_name_ = nullptr; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + return temp; +} +inline ::pg_query::TypeName* XmlSerialize::unsafe_arena_release_type_name() { + // @@protoc_insertion_point(field_release:pg_query.XmlSerialize.type_name) + + ::pg_query::TypeName* temp = type_name_; + type_name_ = nullptr; + return temp; +} +inline ::pg_query::TypeName* XmlSerialize::_internal_mutable_type_name() { + + if (type_name_ == nullptr) { + auto* p = CreateMaybeMessage<::pg_query::TypeName>(GetArena()); + type_name_ = p; + } + return type_name_; +} +inline ::pg_query::TypeName* XmlSerialize::mutable_type_name() { + // @@protoc_insertion_point(field_mutable:pg_query.XmlSerialize.type_name) + return _internal_mutable_type_name(); +} +inline void XmlSerialize::set_allocated_type_name(::pg_query::TypeName* type_name) { + ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); + if (message_arena == nullptr) { + delete type_name_; + } + if (type_name) { + ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = + ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(type_name); + if (message_arena != submessage_arena) { + type_name = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( + message_arena, type_name, submessage_arena); + } + + } else { + + } + type_name_ = type_name; + // @@protoc_insertion_point(field_set_allocated:pg_query.XmlSerialize.type_name) +} + +// int32 location = 4 [json_name = "location"]; +inline void XmlSerialize::clear_location() { + location_ = 0; +} +inline ::PROTOBUF_NAMESPACE_ID::int32 XmlSerialize::_internal_location() const { + return location_; +} +inline ::PROTOBUF_NAMESPACE_ID::int32 XmlSerialize::location() const { + // @@protoc_insertion_point(field_get:pg_query.XmlSerialize.location) + return _internal_location(); +} +inline void XmlSerialize::_internal_set_location(::PROTOBUF_NAMESPACE_ID::int32 value) { + + location_ = value; +} +inline void XmlSerialize::set_location(::PROTOBUF_NAMESPACE_ID::int32 value) { + _internal_set_location(value); + // @@protoc_insertion_point(field_set:pg_query.XmlSerialize.location) +} + +// ------------------------------------------------------------------- + +// WithClause + +// repeated .pg_query.Node ctes = 1 [json_name = "ctes"]; +inline int WithClause::_internal_ctes_size() const { + return ctes_.size(); +} +inline int WithClause::ctes_size() const { + return _internal_ctes_size(); +} +inline void WithClause::clear_ctes() { + ctes_.Clear(); +} +inline ::pg_query::Node* WithClause::mutable_ctes(int index) { + // @@protoc_insertion_point(field_mutable:pg_query.WithClause.ctes) + return ctes_.Mutable(index); +} +inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* +WithClause::mutable_ctes() { + // @@protoc_insertion_point(field_mutable_list:pg_query.WithClause.ctes) + return &ctes_; +} +inline const ::pg_query::Node& WithClause::_internal_ctes(int index) const { + return ctes_.Get(index); +} +inline const ::pg_query::Node& WithClause::ctes(int index) const { + // @@protoc_insertion_point(field_get:pg_query.WithClause.ctes) + return _internal_ctes(index); +} +inline ::pg_query::Node* WithClause::_internal_add_ctes() { + return ctes_.Add(); +} +inline ::pg_query::Node* WithClause::add_ctes() { + // @@protoc_insertion_point(field_add:pg_query.WithClause.ctes) + return _internal_add_ctes(); +} +inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& +WithClause::ctes() const { + // @@protoc_insertion_point(field_list:pg_query.WithClause.ctes) + return ctes_; +} + +// bool recursive = 2 [json_name = "recursive"]; +inline void WithClause::clear_recursive() { + recursive_ = false; +} +inline bool WithClause::_internal_recursive() const { + return recursive_; +} +inline bool WithClause::recursive() const { + // @@protoc_insertion_point(field_get:pg_query.WithClause.recursive) + return _internal_recursive(); +} +inline void WithClause::_internal_set_recursive(bool value) { + + recursive_ = value; +} +inline void WithClause::set_recursive(bool value) { + _internal_set_recursive(value); + // @@protoc_insertion_point(field_set:pg_query.WithClause.recursive) +} + +// int32 location = 3 [json_name = "location"]; +inline void WithClause::clear_location() { + location_ = 0; +} +inline ::PROTOBUF_NAMESPACE_ID::int32 WithClause::_internal_location() const { + return location_; +} +inline ::PROTOBUF_NAMESPACE_ID::int32 WithClause::location() const { + // @@protoc_insertion_point(field_get:pg_query.WithClause.location) + return _internal_location(); +} +inline void WithClause::_internal_set_location(::PROTOBUF_NAMESPACE_ID::int32 value) { + + location_ = value; +} +inline void WithClause::set_location(::PROTOBUF_NAMESPACE_ID::int32 value) { + _internal_set_location(value); + // @@protoc_insertion_point(field_set:pg_query.WithClause.location) +} + +// ------------------------------------------------------------------- + +// InferClause + +// repeated .pg_query.Node index_elems = 1 [json_name = "indexElems"]; +inline int InferClause::_internal_index_elems_size() const { + return index_elems_.size(); +} +inline int InferClause::index_elems_size() const { + return _internal_index_elems_size(); +} +inline void InferClause::clear_index_elems() { + index_elems_.Clear(); +} +inline ::pg_query::Node* InferClause::mutable_index_elems(int index) { + // @@protoc_insertion_point(field_mutable:pg_query.InferClause.index_elems) + return index_elems_.Mutable(index); +} +inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* +InferClause::mutable_index_elems() { + // @@protoc_insertion_point(field_mutable_list:pg_query.InferClause.index_elems) + return &index_elems_; +} +inline const ::pg_query::Node& InferClause::_internal_index_elems(int index) const { + return index_elems_.Get(index); +} +inline const ::pg_query::Node& InferClause::index_elems(int index) const { + // @@protoc_insertion_point(field_get:pg_query.InferClause.index_elems) + return _internal_index_elems(index); +} +inline ::pg_query::Node* InferClause::_internal_add_index_elems() { + return index_elems_.Add(); +} +inline ::pg_query::Node* InferClause::add_index_elems() { + // @@protoc_insertion_point(field_add:pg_query.InferClause.index_elems) + return _internal_add_index_elems(); +} +inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& +InferClause::index_elems() const { + // @@protoc_insertion_point(field_list:pg_query.InferClause.index_elems) + return index_elems_; +} + +// .pg_query.Node where_clause = 2 [json_name = "whereClause"]; +inline bool InferClause::_internal_has_where_clause() const { + return this != internal_default_instance() && where_clause_ != nullptr; +} +inline bool InferClause::has_where_clause() const { + return _internal_has_where_clause(); +} +inline void InferClause::clear_where_clause() { + if (GetArena() == nullptr && where_clause_ != nullptr) { + delete where_clause_; + } + where_clause_ = nullptr; +} +inline const ::pg_query::Node& InferClause::_internal_where_clause() const { + const ::pg_query::Node* p = where_clause_; + return p != nullptr ? *p : reinterpret_cast( + ::pg_query::_Node_default_instance_); +} +inline const ::pg_query::Node& InferClause::where_clause() const { + // @@protoc_insertion_point(field_get:pg_query.InferClause.where_clause) + return _internal_where_clause(); +} +inline void InferClause::unsafe_arena_set_allocated_where_clause( + ::pg_query::Node* where_clause) { + if (GetArena() == nullptr) { + delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(where_clause_); + } + where_clause_ = where_clause; + if (where_clause) { + + } else { + + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.InferClause.where_clause) +} +inline ::pg_query::Node* InferClause::release_where_clause() { + + ::pg_query::Node* temp = where_clause_; + where_clause_ = nullptr; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + return temp; +} +inline ::pg_query::Node* InferClause::unsafe_arena_release_where_clause() { + // @@protoc_insertion_point(field_release:pg_query.InferClause.where_clause) + + ::pg_query::Node* temp = where_clause_; + where_clause_ = nullptr; + return temp; +} +inline ::pg_query::Node* InferClause::_internal_mutable_where_clause() { + + if (where_clause_ == nullptr) { + auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); + where_clause_ = p; + } + return where_clause_; +} +inline ::pg_query::Node* InferClause::mutable_where_clause() { + // @@protoc_insertion_point(field_mutable:pg_query.InferClause.where_clause) + return _internal_mutable_where_clause(); +} +inline void InferClause::set_allocated_where_clause(::pg_query::Node* where_clause) { + ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); + if (message_arena == nullptr) { + delete where_clause_; + } + if (where_clause) { + ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = + ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(where_clause); + if (message_arena != submessage_arena) { + where_clause = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( + message_arena, where_clause, submessage_arena); + } + + } else { + + } + where_clause_ = where_clause; + // @@protoc_insertion_point(field_set_allocated:pg_query.InferClause.where_clause) +} + +// string conname = 3 [json_name = "conname"]; +inline void InferClause::clear_conname() { + conname_.ClearToEmpty(); +} +inline const std::string& InferClause::conname() const { + // @@protoc_insertion_point(field_get:pg_query.InferClause.conname) + return _internal_conname(); +} +inline void InferClause::set_conname(const std::string& value) { + _internal_set_conname(value); + // @@protoc_insertion_point(field_set:pg_query.InferClause.conname) +} +inline std::string* InferClause::mutable_conname() { + // @@protoc_insertion_point(field_mutable:pg_query.InferClause.conname) + return _internal_mutable_conname(); +} +inline const std::string& InferClause::_internal_conname() const { + return conname_.Get(); +} +inline void InferClause::_internal_set_conname(const std::string& value) { + + conname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArena()); +} +inline void InferClause::set_conname(std::string&& value) { + + conname_.Set( + ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::move(value), GetArena()); + // @@protoc_insertion_point(field_set_rvalue:pg_query.InferClause.conname) +} +inline void InferClause::set_conname(const char* value) { + GOOGLE_DCHECK(value != nullptr); + + conname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string(value), GetArena()); + // @@protoc_insertion_point(field_set_char:pg_query.InferClause.conname) +} +inline void InferClause::set_conname(const char* value, + size_t size) { + + conname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string( + reinterpret_cast(value), size), GetArena()); + // @@protoc_insertion_point(field_set_pointer:pg_query.InferClause.conname) +} +inline std::string* InferClause::_internal_mutable_conname() { + + return conname_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArena()); +} +inline std::string* InferClause::release_conname() { + // @@protoc_insertion_point(field_release:pg_query.InferClause.conname) + return conname_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); +} +inline void InferClause::set_allocated_conname(std::string* conname) { + if (conname != nullptr) { + + } else { + + } + conname_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), conname, + GetArena()); + // @@protoc_insertion_point(field_set_allocated:pg_query.InferClause.conname) +} + +// int32 location = 4 [json_name = "location"]; +inline void InferClause::clear_location() { + location_ = 0; +} +inline ::PROTOBUF_NAMESPACE_ID::int32 InferClause::_internal_location() const { + return location_; +} +inline ::PROTOBUF_NAMESPACE_ID::int32 InferClause::location() const { + // @@protoc_insertion_point(field_get:pg_query.InferClause.location) + return _internal_location(); +} +inline void InferClause::_internal_set_location(::PROTOBUF_NAMESPACE_ID::int32 value) { + + location_ = value; +} +inline void InferClause::set_location(::PROTOBUF_NAMESPACE_ID::int32 value) { + _internal_set_location(value); + // @@protoc_insertion_point(field_set:pg_query.InferClause.location) +} + +// ------------------------------------------------------------------- + +// OnConflictClause + +// .pg_query.OnConflictAction action = 1 [json_name = "action"]; +inline void OnConflictClause::clear_action() { + action_ = 0; +} +inline ::pg_query::OnConflictAction OnConflictClause::_internal_action() const { + return static_cast< ::pg_query::OnConflictAction >(action_); +} +inline ::pg_query::OnConflictAction OnConflictClause::action() const { + // @@protoc_insertion_point(field_get:pg_query.OnConflictClause.action) + return _internal_action(); +} +inline void OnConflictClause::_internal_set_action(::pg_query::OnConflictAction value) { + + action_ = value; +} +inline void OnConflictClause::set_action(::pg_query::OnConflictAction value) { + _internal_set_action(value); + // @@protoc_insertion_point(field_set:pg_query.OnConflictClause.action) +} + +// .pg_query.InferClause infer = 2 [json_name = "infer"]; +inline bool OnConflictClause::_internal_has_infer() const { + return this != internal_default_instance() && infer_ != nullptr; +} +inline bool OnConflictClause::has_infer() const { + return _internal_has_infer(); +} +inline void OnConflictClause::clear_infer() { + if (GetArena() == nullptr && infer_ != nullptr) { + delete infer_; + } + infer_ = nullptr; +} +inline const ::pg_query::InferClause& OnConflictClause::_internal_infer() const { + const ::pg_query::InferClause* p = infer_; + return p != nullptr ? *p : reinterpret_cast( + ::pg_query::_InferClause_default_instance_); +} +inline const ::pg_query::InferClause& OnConflictClause::infer() const { + // @@protoc_insertion_point(field_get:pg_query.OnConflictClause.infer) + return _internal_infer(); +} +inline void OnConflictClause::unsafe_arena_set_allocated_infer( + ::pg_query::InferClause* infer) { + if (GetArena() == nullptr) { + delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(infer_); + } + infer_ = infer; + if (infer) { + + } else { + + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.OnConflictClause.infer) +} +inline ::pg_query::InferClause* OnConflictClause::release_infer() { + + ::pg_query::InferClause* temp = infer_; + infer_ = nullptr; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + return temp; +} +inline ::pg_query::InferClause* OnConflictClause::unsafe_arena_release_infer() { + // @@protoc_insertion_point(field_release:pg_query.OnConflictClause.infer) + + ::pg_query::InferClause* temp = infer_; + infer_ = nullptr; + return temp; +} +inline ::pg_query::InferClause* OnConflictClause::_internal_mutable_infer() { + + if (infer_ == nullptr) { + auto* p = CreateMaybeMessage<::pg_query::InferClause>(GetArena()); + infer_ = p; + } + return infer_; +} +inline ::pg_query::InferClause* OnConflictClause::mutable_infer() { + // @@protoc_insertion_point(field_mutable:pg_query.OnConflictClause.infer) + return _internal_mutable_infer(); +} +inline void OnConflictClause::set_allocated_infer(::pg_query::InferClause* infer) { + ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); + if (message_arena == nullptr) { + delete infer_; + } + if (infer) { + ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = + ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(infer); + if (message_arena != submessage_arena) { + infer = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( + message_arena, infer, submessage_arena); + } + + } else { + + } + infer_ = infer; + // @@protoc_insertion_point(field_set_allocated:pg_query.OnConflictClause.infer) +} + +// repeated .pg_query.Node target_list = 3 [json_name = "targetList"]; +inline int OnConflictClause::_internal_target_list_size() const { + return target_list_.size(); +} +inline int OnConflictClause::target_list_size() const { + return _internal_target_list_size(); +} +inline void OnConflictClause::clear_target_list() { + target_list_.Clear(); +} +inline ::pg_query::Node* OnConflictClause::mutable_target_list(int index) { + // @@protoc_insertion_point(field_mutable:pg_query.OnConflictClause.target_list) + return target_list_.Mutable(index); +} +inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* +OnConflictClause::mutable_target_list() { + // @@protoc_insertion_point(field_mutable_list:pg_query.OnConflictClause.target_list) + return &target_list_; +} +inline const ::pg_query::Node& OnConflictClause::_internal_target_list(int index) const { + return target_list_.Get(index); +} +inline const ::pg_query::Node& OnConflictClause::target_list(int index) const { + // @@protoc_insertion_point(field_get:pg_query.OnConflictClause.target_list) + return _internal_target_list(index); +} +inline ::pg_query::Node* OnConflictClause::_internal_add_target_list() { + return target_list_.Add(); +} +inline ::pg_query::Node* OnConflictClause::add_target_list() { + // @@protoc_insertion_point(field_add:pg_query.OnConflictClause.target_list) + return _internal_add_target_list(); +} +inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& +OnConflictClause::target_list() const { + // @@protoc_insertion_point(field_list:pg_query.OnConflictClause.target_list) + return target_list_; +} + +// .pg_query.Node where_clause = 4 [json_name = "whereClause"]; +inline bool OnConflictClause::_internal_has_where_clause() const { + return this != internal_default_instance() && where_clause_ != nullptr; +} +inline bool OnConflictClause::has_where_clause() const { + return _internal_has_where_clause(); +} +inline void OnConflictClause::clear_where_clause() { + if (GetArena() == nullptr && where_clause_ != nullptr) { + delete where_clause_; + } + where_clause_ = nullptr; +} +inline const ::pg_query::Node& OnConflictClause::_internal_where_clause() const { + const ::pg_query::Node* p = where_clause_; + return p != nullptr ? *p : reinterpret_cast( + ::pg_query::_Node_default_instance_); +} +inline const ::pg_query::Node& OnConflictClause::where_clause() const { + // @@protoc_insertion_point(field_get:pg_query.OnConflictClause.where_clause) + return _internal_where_clause(); +} +inline void OnConflictClause::unsafe_arena_set_allocated_where_clause( + ::pg_query::Node* where_clause) { + if (GetArena() == nullptr) { + delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(where_clause_); + } + where_clause_ = where_clause; + if (where_clause) { + + } else { + + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.OnConflictClause.where_clause) +} +inline ::pg_query::Node* OnConflictClause::release_where_clause() { + + ::pg_query::Node* temp = where_clause_; + where_clause_ = nullptr; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + return temp; +} +inline ::pg_query::Node* OnConflictClause::unsafe_arena_release_where_clause() { + // @@protoc_insertion_point(field_release:pg_query.OnConflictClause.where_clause) + + ::pg_query::Node* temp = where_clause_; + where_clause_ = nullptr; + return temp; +} +inline ::pg_query::Node* OnConflictClause::_internal_mutable_where_clause() { + + if (where_clause_ == nullptr) { + auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); + where_clause_ = p; + } + return where_clause_; +} +inline ::pg_query::Node* OnConflictClause::mutable_where_clause() { + // @@protoc_insertion_point(field_mutable:pg_query.OnConflictClause.where_clause) + return _internal_mutable_where_clause(); +} +inline void OnConflictClause::set_allocated_where_clause(::pg_query::Node* where_clause) { + ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); + if (message_arena == nullptr) { + delete where_clause_; + } + if (where_clause) { + ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = + ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(where_clause); + if (message_arena != submessage_arena) { + where_clause = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( + message_arena, where_clause, submessage_arena); + } + + } else { + + } + where_clause_ = where_clause; + // @@protoc_insertion_point(field_set_allocated:pg_query.OnConflictClause.where_clause) +} + +// int32 location = 5 [json_name = "location"]; +inline void OnConflictClause::clear_location() { + location_ = 0; +} +inline ::PROTOBUF_NAMESPACE_ID::int32 OnConflictClause::_internal_location() const { + return location_; +} +inline ::PROTOBUF_NAMESPACE_ID::int32 OnConflictClause::location() const { + // @@protoc_insertion_point(field_get:pg_query.OnConflictClause.location) + return _internal_location(); +} +inline void OnConflictClause::_internal_set_location(::PROTOBUF_NAMESPACE_ID::int32 value) { + + location_ = value; +} +inline void OnConflictClause::set_location(::PROTOBUF_NAMESPACE_ID::int32 value) { + _internal_set_location(value); + // @@protoc_insertion_point(field_set:pg_query.OnConflictClause.location) +} + +// ------------------------------------------------------------------- + +// CommonTableExpr + +// string ctename = 1 [json_name = "ctename"]; +inline void CommonTableExpr::clear_ctename() { + ctename_.ClearToEmpty(); +} +inline const std::string& CommonTableExpr::ctename() const { + // @@protoc_insertion_point(field_get:pg_query.CommonTableExpr.ctename) + return _internal_ctename(); +} +inline void CommonTableExpr::set_ctename(const std::string& value) { + _internal_set_ctename(value); + // @@protoc_insertion_point(field_set:pg_query.CommonTableExpr.ctename) +} +inline std::string* CommonTableExpr::mutable_ctename() { + // @@protoc_insertion_point(field_mutable:pg_query.CommonTableExpr.ctename) + return _internal_mutable_ctename(); +} +inline const std::string& CommonTableExpr::_internal_ctename() const { + return ctename_.Get(); +} +inline void CommonTableExpr::_internal_set_ctename(const std::string& value) { + + ctename_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArena()); +} +inline void CommonTableExpr::set_ctename(std::string&& value) { + + ctename_.Set( + ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::move(value), GetArena()); + // @@protoc_insertion_point(field_set_rvalue:pg_query.CommonTableExpr.ctename) +} +inline void CommonTableExpr::set_ctename(const char* value) { + GOOGLE_DCHECK(value != nullptr); + + ctename_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string(value), GetArena()); + // @@protoc_insertion_point(field_set_char:pg_query.CommonTableExpr.ctename) +} +inline void CommonTableExpr::set_ctename(const char* value, + size_t size) { + + ctename_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string( + reinterpret_cast(value), size), GetArena()); + // @@protoc_insertion_point(field_set_pointer:pg_query.CommonTableExpr.ctename) +} +inline std::string* CommonTableExpr::_internal_mutable_ctename() { + + return ctename_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArena()); +} +inline std::string* CommonTableExpr::release_ctename() { + // @@protoc_insertion_point(field_release:pg_query.CommonTableExpr.ctename) + return ctename_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); +} +inline void CommonTableExpr::set_allocated_ctename(std::string* ctename) { + if (ctename != nullptr) { + + } else { + + } + ctename_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), ctename, + GetArena()); + // @@protoc_insertion_point(field_set_allocated:pg_query.CommonTableExpr.ctename) +} + +// repeated .pg_query.Node aliascolnames = 2 [json_name = "aliascolnames"]; +inline int CommonTableExpr::_internal_aliascolnames_size() const { + return aliascolnames_.size(); +} +inline int CommonTableExpr::aliascolnames_size() const { + return _internal_aliascolnames_size(); +} +inline void CommonTableExpr::clear_aliascolnames() { + aliascolnames_.Clear(); +} +inline ::pg_query::Node* CommonTableExpr::mutable_aliascolnames(int index) { + // @@protoc_insertion_point(field_mutable:pg_query.CommonTableExpr.aliascolnames) + return aliascolnames_.Mutable(index); +} +inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* +CommonTableExpr::mutable_aliascolnames() { + // @@protoc_insertion_point(field_mutable_list:pg_query.CommonTableExpr.aliascolnames) + return &aliascolnames_; +} +inline const ::pg_query::Node& CommonTableExpr::_internal_aliascolnames(int index) const { + return aliascolnames_.Get(index); +} +inline const ::pg_query::Node& CommonTableExpr::aliascolnames(int index) const { + // @@protoc_insertion_point(field_get:pg_query.CommonTableExpr.aliascolnames) + return _internal_aliascolnames(index); +} +inline ::pg_query::Node* CommonTableExpr::_internal_add_aliascolnames() { + return aliascolnames_.Add(); +} +inline ::pg_query::Node* CommonTableExpr::add_aliascolnames() { + // @@protoc_insertion_point(field_add:pg_query.CommonTableExpr.aliascolnames) + return _internal_add_aliascolnames(); +} +inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& +CommonTableExpr::aliascolnames() const { + // @@protoc_insertion_point(field_list:pg_query.CommonTableExpr.aliascolnames) + return aliascolnames_; +} + +// .pg_query.CTEMaterialize ctematerialized = 3 [json_name = "ctematerialized"]; +inline void CommonTableExpr::clear_ctematerialized() { + ctematerialized_ = 0; +} +inline ::pg_query::CTEMaterialize CommonTableExpr::_internal_ctematerialized() const { + return static_cast< ::pg_query::CTEMaterialize >(ctematerialized_); +} +inline ::pg_query::CTEMaterialize CommonTableExpr::ctematerialized() const { + // @@protoc_insertion_point(field_get:pg_query.CommonTableExpr.ctematerialized) + return _internal_ctematerialized(); +} +inline void CommonTableExpr::_internal_set_ctematerialized(::pg_query::CTEMaterialize value) { + + ctematerialized_ = value; +} +inline void CommonTableExpr::set_ctematerialized(::pg_query::CTEMaterialize value) { + _internal_set_ctematerialized(value); + // @@protoc_insertion_point(field_set:pg_query.CommonTableExpr.ctematerialized) +} + +// .pg_query.Node ctequery = 4 [json_name = "ctequery"]; +inline bool CommonTableExpr::_internal_has_ctequery() const { + return this != internal_default_instance() && ctequery_ != nullptr; +} +inline bool CommonTableExpr::has_ctequery() const { + return _internal_has_ctequery(); +} +inline void CommonTableExpr::clear_ctequery() { + if (GetArena() == nullptr && ctequery_ != nullptr) { + delete ctequery_; + } + ctequery_ = nullptr; +} +inline const ::pg_query::Node& CommonTableExpr::_internal_ctequery() const { + const ::pg_query::Node* p = ctequery_; + return p != nullptr ? *p : reinterpret_cast( + ::pg_query::_Node_default_instance_); +} +inline const ::pg_query::Node& CommonTableExpr::ctequery() const { + // @@protoc_insertion_point(field_get:pg_query.CommonTableExpr.ctequery) + return _internal_ctequery(); +} +inline void CommonTableExpr::unsafe_arena_set_allocated_ctequery( + ::pg_query::Node* ctequery) { + if (GetArena() == nullptr) { + delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(ctequery_); + } + ctequery_ = ctequery; + if (ctequery) { + + } else { + + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.CommonTableExpr.ctequery) +} +inline ::pg_query::Node* CommonTableExpr::release_ctequery() { + + ::pg_query::Node* temp = ctequery_; + ctequery_ = nullptr; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + return temp; +} +inline ::pg_query::Node* CommonTableExpr::unsafe_arena_release_ctequery() { + // @@protoc_insertion_point(field_release:pg_query.CommonTableExpr.ctequery) + + ::pg_query::Node* temp = ctequery_; + ctequery_ = nullptr; + return temp; +} +inline ::pg_query::Node* CommonTableExpr::_internal_mutable_ctequery() { + + if (ctequery_ == nullptr) { + auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); + ctequery_ = p; + } + return ctequery_; +} +inline ::pg_query::Node* CommonTableExpr::mutable_ctequery() { + // @@protoc_insertion_point(field_mutable:pg_query.CommonTableExpr.ctequery) + return _internal_mutable_ctequery(); +} +inline void CommonTableExpr::set_allocated_ctequery(::pg_query::Node* ctequery) { + ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); + if (message_arena == nullptr) { + delete ctequery_; + } + if (ctequery) { + ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = + ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(ctequery); + if (message_arena != submessage_arena) { + ctequery = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( + message_arena, ctequery, submessage_arena); + } + + } else { + + } + ctequery_ = ctequery; + // @@protoc_insertion_point(field_set_allocated:pg_query.CommonTableExpr.ctequery) +} + +// int32 location = 5 [json_name = "location"]; +inline void CommonTableExpr::clear_location() { + location_ = 0; +} +inline ::PROTOBUF_NAMESPACE_ID::int32 CommonTableExpr::_internal_location() const { + return location_; +} +inline ::PROTOBUF_NAMESPACE_ID::int32 CommonTableExpr::location() const { + // @@protoc_insertion_point(field_get:pg_query.CommonTableExpr.location) + return _internal_location(); +} +inline void CommonTableExpr::_internal_set_location(::PROTOBUF_NAMESPACE_ID::int32 value) { + + location_ = value; +} +inline void CommonTableExpr::set_location(::PROTOBUF_NAMESPACE_ID::int32 value) { + _internal_set_location(value); + // @@protoc_insertion_point(field_set:pg_query.CommonTableExpr.location) +} + +// bool cterecursive = 6 [json_name = "cterecursive"]; +inline void CommonTableExpr::clear_cterecursive() { + cterecursive_ = false; +} +inline bool CommonTableExpr::_internal_cterecursive() const { + return cterecursive_; +} +inline bool CommonTableExpr::cterecursive() const { + // @@protoc_insertion_point(field_get:pg_query.CommonTableExpr.cterecursive) + return _internal_cterecursive(); +} +inline void CommonTableExpr::_internal_set_cterecursive(bool value) { + + cterecursive_ = value; +} +inline void CommonTableExpr::set_cterecursive(bool value) { + _internal_set_cterecursive(value); + // @@protoc_insertion_point(field_set:pg_query.CommonTableExpr.cterecursive) +} + +// int32 cterefcount = 7 [json_name = "cterefcount"]; +inline void CommonTableExpr::clear_cterefcount() { + cterefcount_ = 0; +} +inline ::PROTOBUF_NAMESPACE_ID::int32 CommonTableExpr::_internal_cterefcount() const { + return cterefcount_; +} +inline ::PROTOBUF_NAMESPACE_ID::int32 CommonTableExpr::cterefcount() const { + // @@protoc_insertion_point(field_get:pg_query.CommonTableExpr.cterefcount) + return _internal_cterefcount(); +} +inline void CommonTableExpr::_internal_set_cterefcount(::PROTOBUF_NAMESPACE_ID::int32 value) { + + cterefcount_ = value; +} +inline void CommonTableExpr::set_cterefcount(::PROTOBUF_NAMESPACE_ID::int32 value) { + _internal_set_cterefcount(value); + // @@protoc_insertion_point(field_set:pg_query.CommonTableExpr.cterefcount) +} + +// repeated .pg_query.Node ctecolnames = 8 [json_name = "ctecolnames"]; +inline int CommonTableExpr::_internal_ctecolnames_size() const { + return ctecolnames_.size(); +} +inline int CommonTableExpr::ctecolnames_size() const { + return _internal_ctecolnames_size(); +} +inline void CommonTableExpr::clear_ctecolnames() { + ctecolnames_.Clear(); +} +inline ::pg_query::Node* CommonTableExpr::mutable_ctecolnames(int index) { + // @@protoc_insertion_point(field_mutable:pg_query.CommonTableExpr.ctecolnames) + return ctecolnames_.Mutable(index); +} +inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* +CommonTableExpr::mutable_ctecolnames() { + // @@protoc_insertion_point(field_mutable_list:pg_query.CommonTableExpr.ctecolnames) + return &ctecolnames_; +} +inline const ::pg_query::Node& CommonTableExpr::_internal_ctecolnames(int index) const { + return ctecolnames_.Get(index); +} +inline const ::pg_query::Node& CommonTableExpr::ctecolnames(int index) const { + // @@protoc_insertion_point(field_get:pg_query.CommonTableExpr.ctecolnames) + return _internal_ctecolnames(index); +} +inline ::pg_query::Node* CommonTableExpr::_internal_add_ctecolnames() { + return ctecolnames_.Add(); +} +inline ::pg_query::Node* CommonTableExpr::add_ctecolnames() { + // @@protoc_insertion_point(field_add:pg_query.CommonTableExpr.ctecolnames) + return _internal_add_ctecolnames(); +} +inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& +CommonTableExpr::ctecolnames() const { + // @@protoc_insertion_point(field_list:pg_query.CommonTableExpr.ctecolnames) + return ctecolnames_; +} + +// repeated .pg_query.Node ctecoltypes = 9 [json_name = "ctecoltypes"]; +inline int CommonTableExpr::_internal_ctecoltypes_size() const { + return ctecoltypes_.size(); +} +inline int CommonTableExpr::ctecoltypes_size() const { + return _internal_ctecoltypes_size(); +} +inline void CommonTableExpr::clear_ctecoltypes() { + ctecoltypes_.Clear(); +} +inline ::pg_query::Node* CommonTableExpr::mutable_ctecoltypes(int index) { + // @@protoc_insertion_point(field_mutable:pg_query.CommonTableExpr.ctecoltypes) + return ctecoltypes_.Mutable(index); +} +inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* +CommonTableExpr::mutable_ctecoltypes() { + // @@protoc_insertion_point(field_mutable_list:pg_query.CommonTableExpr.ctecoltypes) + return &ctecoltypes_; +} +inline const ::pg_query::Node& CommonTableExpr::_internal_ctecoltypes(int index) const { + return ctecoltypes_.Get(index); +} +inline const ::pg_query::Node& CommonTableExpr::ctecoltypes(int index) const { + // @@protoc_insertion_point(field_get:pg_query.CommonTableExpr.ctecoltypes) + return _internal_ctecoltypes(index); +} +inline ::pg_query::Node* CommonTableExpr::_internal_add_ctecoltypes() { + return ctecoltypes_.Add(); +} +inline ::pg_query::Node* CommonTableExpr::add_ctecoltypes() { + // @@protoc_insertion_point(field_add:pg_query.CommonTableExpr.ctecoltypes) + return _internal_add_ctecoltypes(); +} +inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& +CommonTableExpr::ctecoltypes() const { + // @@protoc_insertion_point(field_list:pg_query.CommonTableExpr.ctecoltypes) + return ctecoltypes_; +} + +// repeated .pg_query.Node ctecoltypmods = 10 [json_name = "ctecoltypmods"]; +inline int CommonTableExpr::_internal_ctecoltypmods_size() const { + return ctecoltypmods_.size(); +} +inline int CommonTableExpr::ctecoltypmods_size() const { + return _internal_ctecoltypmods_size(); +} +inline void CommonTableExpr::clear_ctecoltypmods() { + ctecoltypmods_.Clear(); +} +inline ::pg_query::Node* CommonTableExpr::mutable_ctecoltypmods(int index) { + // @@protoc_insertion_point(field_mutable:pg_query.CommonTableExpr.ctecoltypmods) + return ctecoltypmods_.Mutable(index); +} +inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* +CommonTableExpr::mutable_ctecoltypmods() { + // @@protoc_insertion_point(field_mutable_list:pg_query.CommonTableExpr.ctecoltypmods) + return &ctecoltypmods_; +} +inline const ::pg_query::Node& CommonTableExpr::_internal_ctecoltypmods(int index) const { + return ctecoltypmods_.Get(index); +} +inline const ::pg_query::Node& CommonTableExpr::ctecoltypmods(int index) const { + // @@protoc_insertion_point(field_get:pg_query.CommonTableExpr.ctecoltypmods) + return _internal_ctecoltypmods(index); +} +inline ::pg_query::Node* CommonTableExpr::_internal_add_ctecoltypmods() { + return ctecoltypmods_.Add(); +} +inline ::pg_query::Node* CommonTableExpr::add_ctecoltypmods() { + // @@protoc_insertion_point(field_add:pg_query.CommonTableExpr.ctecoltypmods) + return _internal_add_ctecoltypmods(); +} +inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& +CommonTableExpr::ctecoltypmods() const { + // @@protoc_insertion_point(field_list:pg_query.CommonTableExpr.ctecoltypmods) + return ctecoltypmods_; +} + +// repeated .pg_query.Node ctecolcollations = 11 [json_name = "ctecolcollations"]; +inline int CommonTableExpr::_internal_ctecolcollations_size() const { + return ctecolcollations_.size(); +} +inline int CommonTableExpr::ctecolcollations_size() const { + return _internal_ctecolcollations_size(); +} +inline void CommonTableExpr::clear_ctecolcollations() { + ctecolcollations_.Clear(); +} +inline ::pg_query::Node* CommonTableExpr::mutable_ctecolcollations(int index) { + // @@protoc_insertion_point(field_mutable:pg_query.CommonTableExpr.ctecolcollations) + return ctecolcollations_.Mutable(index); +} +inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* +CommonTableExpr::mutable_ctecolcollations() { + // @@protoc_insertion_point(field_mutable_list:pg_query.CommonTableExpr.ctecolcollations) + return &ctecolcollations_; +} +inline const ::pg_query::Node& CommonTableExpr::_internal_ctecolcollations(int index) const { + return ctecolcollations_.Get(index); +} +inline const ::pg_query::Node& CommonTableExpr::ctecolcollations(int index) const { + // @@protoc_insertion_point(field_get:pg_query.CommonTableExpr.ctecolcollations) + return _internal_ctecolcollations(index); +} +inline ::pg_query::Node* CommonTableExpr::_internal_add_ctecolcollations() { + return ctecolcollations_.Add(); +} +inline ::pg_query::Node* CommonTableExpr::add_ctecolcollations() { + // @@protoc_insertion_point(field_add:pg_query.CommonTableExpr.ctecolcollations) + return _internal_add_ctecolcollations(); +} +inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& +CommonTableExpr::ctecolcollations() const { + // @@protoc_insertion_point(field_list:pg_query.CommonTableExpr.ctecolcollations) + return ctecolcollations_; +} + +// ------------------------------------------------------------------- + +// RoleSpec + +// .pg_query.RoleSpecType roletype = 1 [json_name = "roletype"]; +inline void RoleSpec::clear_roletype() { + roletype_ = 0; +} +inline ::pg_query::RoleSpecType RoleSpec::_internal_roletype() const { + return static_cast< ::pg_query::RoleSpecType >(roletype_); +} +inline ::pg_query::RoleSpecType RoleSpec::roletype() const { + // @@protoc_insertion_point(field_get:pg_query.RoleSpec.roletype) + return _internal_roletype(); +} +inline void RoleSpec::_internal_set_roletype(::pg_query::RoleSpecType value) { + + roletype_ = value; +} +inline void RoleSpec::set_roletype(::pg_query::RoleSpecType value) { + _internal_set_roletype(value); + // @@protoc_insertion_point(field_set:pg_query.RoleSpec.roletype) +} + +// string rolename = 2 [json_name = "rolename"]; +inline void RoleSpec::clear_rolename() { + rolename_.ClearToEmpty(); +} +inline const std::string& RoleSpec::rolename() const { + // @@protoc_insertion_point(field_get:pg_query.RoleSpec.rolename) + return _internal_rolename(); +} +inline void RoleSpec::set_rolename(const std::string& value) { + _internal_set_rolename(value); + // @@protoc_insertion_point(field_set:pg_query.RoleSpec.rolename) +} +inline std::string* RoleSpec::mutable_rolename() { + // @@protoc_insertion_point(field_mutable:pg_query.RoleSpec.rolename) + return _internal_mutable_rolename(); +} +inline const std::string& RoleSpec::_internal_rolename() const { + return rolename_.Get(); +} +inline void RoleSpec::_internal_set_rolename(const std::string& value) { + + rolename_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArena()); +} +inline void RoleSpec::set_rolename(std::string&& value) { + + rolename_.Set( + ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::move(value), GetArena()); + // @@protoc_insertion_point(field_set_rvalue:pg_query.RoleSpec.rolename) +} +inline void RoleSpec::set_rolename(const char* value) { + GOOGLE_DCHECK(value != nullptr); + + rolename_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string(value), GetArena()); + // @@protoc_insertion_point(field_set_char:pg_query.RoleSpec.rolename) +} +inline void RoleSpec::set_rolename(const char* value, + size_t size) { + + rolename_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string( + reinterpret_cast(value), size), GetArena()); + // @@protoc_insertion_point(field_set_pointer:pg_query.RoleSpec.rolename) +} +inline std::string* RoleSpec::_internal_mutable_rolename() { + + return rolename_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArena()); +} +inline std::string* RoleSpec::release_rolename() { + // @@protoc_insertion_point(field_release:pg_query.RoleSpec.rolename) + return rolename_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); +} +inline void RoleSpec::set_allocated_rolename(std::string* rolename) { + if (rolename != nullptr) { + + } else { + + } + rolename_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), rolename, + GetArena()); + // @@protoc_insertion_point(field_set_allocated:pg_query.RoleSpec.rolename) +} + +// int32 location = 3 [json_name = "location"]; +inline void RoleSpec::clear_location() { + location_ = 0; +} +inline ::PROTOBUF_NAMESPACE_ID::int32 RoleSpec::_internal_location() const { + return location_; +} +inline ::PROTOBUF_NAMESPACE_ID::int32 RoleSpec::location() const { + // @@protoc_insertion_point(field_get:pg_query.RoleSpec.location) + return _internal_location(); +} +inline void RoleSpec::_internal_set_location(::PROTOBUF_NAMESPACE_ID::int32 value) { + + location_ = value; +} +inline void RoleSpec::set_location(::PROTOBUF_NAMESPACE_ID::int32 value) { + _internal_set_location(value); + // @@protoc_insertion_point(field_set:pg_query.RoleSpec.location) +} + +// ------------------------------------------------------------------- + +// TriggerTransition + +// string name = 1 [json_name = "name"]; +inline void TriggerTransition::clear_name() { + name_.ClearToEmpty(); +} +inline const std::string& TriggerTransition::name() const { + // @@protoc_insertion_point(field_get:pg_query.TriggerTransition.name) + return _internal_name(); +} +inline void TriggerTransition::set_name(const std::string& value) { + _internal_set_name(value); + // @@protoc_insertion_point(field_set:pg_query.TriggerTransition.name) +} +inline std::string* TriggerTransition::mutable_name() { + // @@protoc_insertion_point(field_mutable:pg_query.TriggerTransition.name) + return _internal_mutable_name(); +} +inline const std::string& TriggerTransition::_internal_name() const { + return name_.Get(); +} +inline void TriggerTransition::_internal_set_name(const std::string& value) { + + name_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArena()); +} +inline void TriggerTransition::set_name(std::string&& value) { + + name_.Set( + ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::move(value), GetArena()); + // @@protoc_insertion_point(field_set_rvalue:pg_query.TriggerTransition.name) +} +inline void TriggerTransition::set_name(const char* value) { + GOOGLE_DCHECK(value != nullptr); + + name_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string(value), GetArena()); + // @@protoc_insertion_point(field_set_char:pg_query.TriggerTransition.name) +} +inline void TriggerTransition::set_name(const char* value, + size_t size) { + + name_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string( + reinterpret_cast(value), size), GetArena()); + // @@protoc_insertion_point(field_set_pointer:pg_query.TriggerTransition.name) +} +inline std::string* TriggerTransition::_internal_mutable_name() { + + return name_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArena()); +} +inline std::string* TriggerTransition::release_name() { + // @@protoc_insertion_point(field_release:pg_query.TriggerTransition.name) + return name_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); +} +inline void TriggerTransition::set_allocated_name(std::string* name) { + if (name != nullptr) { + + } else { + + } + name_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), name, + GetArena()); + // @@protoc_insertion_point(field_set_allocated:pg_query.TriggerTransition.name) +} + +// bool is_new = 2 [json_name = "isNew"]; +inline void TriggerTransition::clear_is_new() { + is_new_ = false; +} +inline bool TriggerTransition::_internal_is_new() const { + return is_new_; +} +inline bool TriggerTransition::is_new() const { + // @@protoc_insertion_point(field_get:pg_query.TriggerTransition.is_new) + return _internal_is_new(); +} +inline void TriggerTransition::_internal_set_is_new(bool value) { + + is_new_ = value; +} +inline void TriggerTransition::set_is_new(bool value) { + _internal_set_is_new(value); + // @@protoc_insertion_point(field_set:pg_query.TriggerTransition.is_new) +} + +// bool is_table = 3 [json_name = "isTable"]; +inline void TriggerTransition::clear_is_table() { + is_table_ = false; +} +inline bool TriggerTransition::_internal_is_table() const { + return is_table_; +} +inline bool TriggerTransition::is_table() const { + // @@protoc_insertion_point(field_get:pg_query.TriggerTransition.is_table) + return _internal_is_table(); +} +inline void TriggerTransition::_internal_set_is_table(bool value) { + + is_table_ = value; +} +inline void TriggerTransition::set_is_table(bool value) { + _internal_set_is_table(value); + // @@protoc_insertion_point(field_set:pg_query.TriggerTransition.is_table) +} + +// ------------------------------------------------------------------- + +// PartitionElem + +// string name = 1 [json_name = "name"]; +inline void PartitionElem::clear_name() { + name_.ClearToEmpty(); +} +inline const std::string& PartitionElem::name() const { + // @@protoc_insertion_point(field_get:pg_query.PartitionElem.name) + return _internal_name(); +} +inline void PartitionElem::set_name(const std::string& value) { + _internal_set_name(value); + // @@protoc_insertion_point(field_set:pg_query.PartitionElem.name) +} +inline std::string* PartitionElem::mutable_name() { + // @@protoc_insertion_point(field_mutable:pg_query.PartitionElem.name) + return _internal_mutable_name(); +} +inline const std::string& PartitionElem::_internal_name() const { + return name_.Get(); +} +inline void PartitionElem::_internal_set_name(const std::string& value) { + + name_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArena()); +} +inline void PartitionElem::set_name(std::string&& value) { + + name_.Set( + ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::move(value), GetArena()); + // @@protoc_insertion_point(field_set_rvalue:pg_query.PartitionElem.name) +} +inline void PartitionElem::set_name(const char* value) { + GOOGLE_DCHECK(value != nullptr); + + name_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string(value), GetArena()); + // @@protoc_insertion_point(field_set_char:pg_query.PartitionElem.name) +} +inline void PartitionElem::set_name(const char* value, + size_t size) { + + name_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string( + reinterpret_cast(value), size), GetArena()); + // @@protoc_insertion_point(field_set_pointer:pg_query.PartitionElem.name) +} +inline std::string* PartitionElem::_internal_mutable_name() { + + return name_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArena()); +} +inline std::string* PartitionElem::release_name() { + // @@protoc_insertion_point(field_release:pg_query.PartitionElem.name) + return name_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); +} +inline void PartitionElem::set_allocated_name(std::string* name) { + if (name != nullptr) { + + } else { + + } + name_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), name, + GetArena()); + // @@protoc_insertion_point(field_set_allocated:pg_query.PartitionElem.name) +} + +// .pg_query.Node expr = 2 [json_name = "expr"]; +inline bool PartitionElem::_internal_has_expr() const { + return this != internal_default_instance() && expr_ != nullptr; +} +inline bool PartitionElem::has_expr() const { + return _internal_has_expr(); +} +inline void PartitionElem::clear_expr() { + if (GetArena() == nullptr && expr_ != nullptr) { + delete expr_; + } + expr_ = nullptr; +} +inline const ::pg_query::Node& PartitionElem::_internal_expr() const { + const ::pg_query::Node* p = expr_; + return p != nullptr ? *p : reinterpret_cast( + ::pg_query::_Node_default_instance_); +} +inline const ::pg_query::Node& PartitionElem::expr() const { + // @@protoc_insertion_point(field_get:pg_query.PartitionElem.expr) + return _internal_expr(); +} +inline void PartitionElem::unsafe_arena_set_allocated_expr( + ::pg_query::Node* expr) { + if (GetArena() == nullptr) { + delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(expr_); + } + expr_ = expr; + if (expr) { + + } else { + + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.PartitionElem.expr) +} +inline ::pg_query::Node* PartitionElem::release_expr() { + + ::pg_query::Node* temp = expr_; + expr_ = nullptr; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + return temp; +} +inline ::pg_query::Node* PartitionElem::unsafe_arena_release_expr() { + // @@protoc_insertion_point(field_release:pg_query.PartitionElem.expr) + + ::pg_query::Node* temp = expr_; + expr_ = nullptr; + return temp; +} +inline ::pg_query::Node* PartitionElem::_internal_mutable_expr() { + + if (expr_ == nullptr) { + auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); + expr_ = p; + } + return expr_; +} +inline ::pg_query::Node* PartitionElem::mutable_expr() { + // @@protoc_insertion_point(field_mutable:pg_query.PartitionElem.expr) + return _internal_mutable_expr(); +} +inline void PartitionElem::set_allocated_expr(::pg_query::Node* expr) { + ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); + if (message_arena == nullptr) { + delete expr_; + } + if (expr) { + ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = + ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(expr); + if (message_arena != submessage_arena) { + expr = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( + message_arena, expr, submessage_arena); + } + + } else { + + } + expr_ = expr; + // @@protoc_insertion_point(field_set_allocated:pg_query.PartitionElem.expr) +} + +// repeated .pg_query.Node collation = 3 [json_name = "collation"]; +inline int PartitionElem::_internal_collation_size() const { + return collation_.size(); +} +inline int PartitionElem::collation_size() const { + return _internal_collation_size(); +} +inline void PartitionElem::clear_collation() { + collation_.Clear(); +} +inline ::pg_query::Node* PartitionElem::mutable_collation(int index) { + // @@protoc_insertion_point(field_mutable:pg_query.PartitionElem.collation) + return collation_.Mutable(index); +} +inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* +PartitionElem::mutable_collation() { + // @@protoc_insertion_point(field_mutable_list:pg_query.PartitionElem.collation) + return &collation_; +} +inline const ::pg_query::Node& PartitionElem::_internal_collation(int index) const { + return collation_.Get(index); +} +inline const ::pg_query::Node& PartitionElem::collation(int index) const { + // @@protoc_insertion_point(field_get:pg_query.PartitionElem.collation) + return _internal_collation(index); +} +inline ::pg_query::Node* PartitionElem::_internal_add_collation() { + return collation_.Add(); +} +inline ::pg_query::Node* PartitionElem::add_collation() { + // @@protoc_insertion_point(field_add:pg_query.PartitionElem.collation) + return _internal_add_collation(); +} +inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& +PartitionElem::collation() const { + // @@protoc_insertion_point(field_list:pg_query.PartitionElem.collation) + return collation_; +} + +// repeated .pg_query.Node opclass = 4 [json_name = "opclass"]; +inline int PartitionElem::_internal_opclass_size() const { + return opclass_.size(); +} +inline int PartitionElem::opclass_size() const { + return _internal_opclass_size(); +} +inline void PartitionElem::clear_opclass() { + opclass_.Clear(); +} +inline ::pg_query::Node* PartitionElem::mutable_opclass(int index) { + // @@protoc_insertion_point(field_mutable:pg_query.PartitionElem.opclass) + return opclass_.Mutable(index); +} +inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* +PartitionElem::mutable_opclass() { + // @@protoc_insertion_point(field_mutable_list:pg_query.PartitionElem.opclass) + return &opclass_; +} +inline const ::pg_query::Node& PartitionElem::_internal_opclass(int index) const { + return opclass_.Get(index); +} +inline const ::pg_query::Node& PartitionElem::opclass(int index) const { + // @@protoc_insertion_point(field_get:pg_query.PartitionElem.opclass) + return _internal_opclass(index); +} +inline ::pg_query::Node* PartitionElem::_internal_add_opclass() { + return opclass_.Add(); +} +inline ::pg_query::Node* PartitionElem::add_opclass() { + // @@protoc_insertion_point(field_add:pg_query.PartitionElem.opclass) + return _internal_add_opclass(); +} +inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& +PartitionElem::opclass() const { + // @@protoc_insertion_point(field_list:pg_query.PartitionElem.opclass) + return opclass_; +} + +// int32 location = 5 [json_name = "location"]; +inline void PartitionElem::clear_location() { + location_ = 0; +} +inline ::PROTOBUF_NAMESPACE_ID::int32 PartitionElem::_internal_location() const { + return location_; +} +inline ::PROTOBUF_NAMESPACE_ID::int32 PartitionElem::location() const { + // @@protoc_insertion_point(field_get:pg_query.PartitionElem.location) + return _internal_location(); +} +inline void PartitionElem::_internal_set_location(::PROTOBUF_NAMESPACE_ID::int32 value) { + + location_ = value; +} +inline void PartitionElem::set_location(::PROTOBUF_NAMESPACE_ID::int32 value) { + _internal_set_location(value); + // @@protoc_insertion_point(field_set:pg_query.PartitionElem.location) +} + +// ------------------------------------------------------------------- + +// PartitionSpec + +// string strategy = 1 [json_name = "strategy"]; +inline void PartitionSpec::clear_strategy() { + strategy_.ClearToEmpty(); +} +inline const std::string& PartitionSpec::strategy() const { + // @@protoc_insertion_point(field_get:pg_query.PartitionSpec.strategy) + return _internal_strategy(); +} +inline void PartitionSpec::set_strategy(const std::string& value) { + _internal_set_strategy(value); + // @@protoc_insertion_point(field_set:pg_query.PartitionSpec.strategy) +} +inline std::string* PartitionSpec::mutable_strategy() { + // @@protoc_insertion_point(field_mutable:pg_query.PartitionSpec.strategy) + return _internal_mutable_strategy(); +} +inline const std::string& PartitionSpec::_internal_strategy() const { + return strategy_.Get(); +} +inline void PartitionSpec::_internal_set_strategy(const std::string& value) { + + strategy_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArena()); +} +inline void PartitionSpec::set_strategy(std::string&& value) { + + strategy_.Set( + ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::move(value), GetArena()); + // @@protoc_insertion_point(field_set_rvalue:pg_query.PartitionSpec.strategy) +} +inline void PartitionSpec::set_strategy(const char* value) { + GOOGLE_DCHECK(value != nullptr); + + strategy_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string(value), GetArena()); + // @@protoc_insertion_point(field_set_char:pg_query.PartitionSpec.strategy) +} +inline void PartitionSpec::set_strategy(const char* value, + size_t size) { + + strategy_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string( + reinterpret_cast(value), size), GetArena()); + // @@protoc_insertion_point(field_set_pointer:pg_query.PartitionSpec.strategy) +} +inline std::string* PartitionSpec::_internal_mutable_strategy() { + + return strategy_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArena()); +} +inline std::string* PartitionSpec::release_strategy() { + // @@protoc_insertion_point(field_release:pg_query.PartitionSpec.strategy) + return strategy_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); +} +inline void PartitionSpec::set_allocated_strategy(std::string* strategy) { + if (strategy != nullptr) { + + } else { + + } + strategy_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), strategy, + GetArena()); + // @@protoc_insertion_point(field_set_allocated:pg_query.PartitionSpec.strategy) +} + +// repeated .pg_query.Node part_params = 2 [json_name = "partParams"]; +inline int PartitionSpec::_internal_part_params_size() const { + return part_params_.size(); +} +inline int PartitionSpec::part_params_size() const { + return _internal_part_params_size(); +} +inline void PartitionSpec::clear_part_params() { + part_params_.Clear(); +} +inline ::pg_query::Node* PartitionSpec::mutable_part_params(int index) { + // @@protoc_insertion_point(field_mutable:pg_query.PartitionSpec.part_params) + return part_params_.Mutable(index); +} +inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* +PartitionSpec::mutable_part_params() { + // @@protoc_insertion_point(field_mutable_list:pg_query.PartitionSpec.part_params) + return &part_params_; +} +inline const ::pg_query::Node& PartitionSpec::_internal_part_params(int index) const { + return part_params_.Get(index); +} +inline const ::pg_query::Node& PartitionSpec::part_params(int index) const { + // @@protoc_insertion_point(field_get:pg_query.PartitionSpec.part_params) + return _internal_part_params(index); +} +inline ::pg_query::Node* PartitionSpec::_internal_add_part_params() { + return part_params_.Add(); +} +inline ::pg_query::Node* PartitionSpec::add_part_params() { + // @@protoc_insertion_point(field_add:pg_query.PartitionSpec.part_params) + return _internal_add_part_params(); +} +inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& +PartitionSpec::part_params() const { + // @@protoc_insertion_point(field_list:pg_query.PartitionSpec.part_params) + return part_params_; +} + +// int32 location = 3 [json_name = "location"]; +inline void PartitionSpec::clear_location() { + location_ = 0; +} +inline ::PROTOBUF_NAMESPACE_ID::int32 PartitionSpec::_internal_location() const { + return location_; +} +inline ::PROTOBUF_NAMESPACE_ID::int32 PartitionSpec::location() const { + // @@protoc_insertion_point(field_get:pg_query.PartitionSpec.location) + return _internal_location(); +} +inline void PartitionSpec::_internal_set_location(::PROTOBUF_NAMESPACE_ID::int32 value) { + + location_ = value; +} +inline void PartitionSpec::set_location(::PROTOBUF_NAMESPACE_ID::int32 value) { + _internal_set_location(value); + // @@protoc_insertion_point(field_set:pg_query.PartitionSpec.location) +} + +// ------------------------------------------------------------------- + +// PartitionBoundSpec + +// string strategy = 1 [json_name = "strategy"]; +inline void PartitionBoundSpec::clear_strategy() { + strategy_.ClearToEmpty(); +} +inline const std::string& PartitionBoundSpec::strategy() const { + // @@protoc_insertion_point(field_get:pg_query.PartitionBoundSpec.strategy) + return _internal_strategy(); +} +inline void PartitionBoundSpec::set_strategy(const std::string& value) { + _internal_set_strategy(value); + // @@protoc_insertion_point(field_set:pg_query.PartitionBoundSpec.strategy) +} +inline std::string* PartitionBoundSpec::mutable_strategy() { + // @@protoc_insertion_point(field_mutable:pg_query.PartitionBoundSpec.strategy) + return _internal_mutable_strategy(); +} +inline const std::string& PartitionBoundSpec::_internal_strategy() const { + return strategy_.Get(); +} +inline void PartitionBoundSpec::_internal_set_strategy(const std::string& value) { + + strategy_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArena()); +} +inline void PartitionBoundSpec::set_strategy(std::string&& value) { + + strategy_.Set( + ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::move(value), GetArena()); + // @@protoc_insertion_point(field_set_rvalue:pg_query.PartitionBoundSpec.strategy) +} +inline void PartitionBoundSpec::set_strategy(const char* value) { + GOOGLE_DCHECK(value != nullptr); + + strategy_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string(value), GetArena()); + // @@protoc_insertion_point(field_set_char:pg_query.PartitionBoundSpec.strategy) +} +inline void PartitionBoundSpec::set_strategy(const char* value, + size_t size) { + + strategy_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string( + reinterpret_cast(value), size), GetArena()); + // @@protoc_insertion_point(field_set_pointer:pg_query.PartitionBoundSpec.strategy) +} +inline std::string* PartitionBoundSpec::_internal_mutable_strategy() { + + return strategy_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArena()); +} +inline std::string* PartitionBoundSpec::release_strategy() { + // @@protoc_insertion_point(field_release:pg_query.PartitionBoundSpec.strategy) + return strategy_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); +} +inline void PartitionBoundSpec::set_allocated_strategy(std::string* strategy) { + if (strategy != nullptr) { + + } else { + + } + strategy_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), strategy, + GetArena()); + // @@protoc_insertion_point(field_set_allocated:pg_query.PartitionBoundSpec.strategy) +} + +// bool is_default = 2 [json_name = "is_default"]; +inline void PartitionBoundSpec::clear_is_default() { + is_default_ = false; +} +inline bool PartitionBoundSpec::_internal_is_default() const { + return is_default_; +} +inline bool PartitionBoundSpec::is_default() const { + // @@protoc_insertion_point(field_get:pg_query.PartitionBoundSpec.is_default) + return _internal_is_default(); +} +inline void PartitionBoundSpec::_internal_set_is_default(bool value) { + + is_default_ = value; +} +inline void PartitionBoundSpec::set_is_default(bool value) { + _internal_set_is_default(value); + // @@protoc_insertion_point(field_set:pg_query.PartitionBoundSpec.is_default) +} + +// int32 modulus = 3 [json_name = "modulus"]; +inline void PartitionBoundSpec::clear_modulus() { + modulus_ = 0; +} +inline ::PROTOBUF_NAMESPACE_ID::int32 PartitionBoundSpec::_internal_modulus() const { + return modulus_; +} +inline ::PROTOBUF_NAMESPACE_ID::int32 PartitionBoundSpec::modulus() const { + // @@protoc_insertion_point(field_get:pg_query.PartitionBoundSpec.modulus) + return _internal_modulus(); +} +inline void PartitionBoundSpec::_internal_set_modulus(::PROTOBUF_NAMESPACE_ID::int32 value) { + + modulus_ = value; +} +inline void PartitionBoundSpec::set_modulus(::PROTOBUF_NAMESPACE_ID::int32 value) { + _internal_set_modulus(value); + // @@protoc_insertion_point(field_set:pg_query.PartitionBoundSpec.modulus) +} + +// int32 remainder = 4 [json_name = "remainder"]; +inline void PartitionBoundSpec::clear_remainder() { + remainder_ = 0; +} +inline ::PROTOBUF_NAMESPACE_ID::int32 PartitionBoundSpec::_internal_remainder() const { + return remainder_; +} +inline ::PROTOBUF_NAMESPACE_ID::int32 PartitionBoundSpec::remainder() const { + // @@protoc_insertion_point(field_get:pg_query.PartitionBoundSpec.remainder) + return _internal_remainder(); +} +inline void PartitionBoundSpec::_internal_set_remainder(::PROTOBUF_NAMESPACE_ID::int32 value) { + + remainder_ = value; +} +inline void PartitionBoundSpec::set_remainder(::PROTOBUF_NAMESPACE_ID::int32 value) { + _internal_set_remainder(value); + // @@protoc_insertion_point(field_set:pg_query.PartitionBoundSpec.remainder) +} + +// repeated .pg_query.Node listdatums = 5 [json_name = "listdatums"]; +inline int PartitionBoundSpec::_internal_listdatums_size() const { + return listdatums_.size(); +} +inline int PartitionBoundSpec::listdatums_size() const { + return _internal_listdatums_size(); +} +inline void PartitionBoundSpec::clear_listdatums() { + listdatums_.Clear(); +} +inline ::pg_query::Node* PartitionBoundSpec::mutable_listdatums(int index) { + // @@protoc_insertion_point(field_mutable:pg_query.PartitionBoundSpec.listdatums) + return listdatums_.Mutable(index); +} +inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* +PartitionBoundSpec::mutable_listdatums() { + // @@protoc_insertion_point(field_mutable_list:pg_query.PartitionBoundSpec.listdatums) + return &listdatums_; +} +inline const ::pg_query::Node& PartitionBoundSpec::_internal_listdatums(int index) const { + return listdatums_.Get(index); +} +inline const ::pg_query::Node& PartitionBoundSpec::listdatums(int index) const { + // @@protoc_insertion_point(field_get:pg_query.PartitionBoundSpec.listdatums) + return _internal_listdatums(index); +} +inline ::pg_query::Node* PartitionBoundSpec::_internal_add_listdatums() { + return listdatums_.Add(); +} +inline ::pg_query::Node* PartitionBoundSpec::add_listdatums() { + // @@protoc_insertion_point(field_add:pg_query.PartitionBoundSpec.listdatums) + return _internal_add_listdatums(); +} +inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& +PartitionBoundSpec::listdatums() const { + // @@protoc_insertion_point(field_list:pg_query.PartitionBoundSpec.listdatums) + return listdatums_; +} + +// repeated .pg_query.Node lowerdatums = 6 [json_name = "lowerdatums"]; +inline int PartitionBoundSpec::_internal_lowerdatums_size() const { + return lowerdatums_.size(); +} +inline int PartitionBoundSpec::lowerdatums_size() const { + return _internal_lowerdatums_size(); +} +inline void PartitionBoundSpec::clear_lowerdatums() { + lowerdatums_.Clear(); +} +inline ::pg_query::Node* PartitionBoundSpec::mutable_lowerdatums(int index) { + // @@protoc_insertion_point(field_mutable:pg_query.PartitionBoundSpec.lowerdatums) + return lowerdatums_.Mutable(index); +} +inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* +PartitionBoundSpec::mutable_lowerdatums() { + // @@protoc_insertion_point(field_mutable_list:pg_query.PartitionBoundSpec.lowerdatums) + return &lowerdatums_; +} +inline const ::pg_query::Node& PartitionBoundSpec::_internal_lowerdatums(int index) const { + return lowerdatums_.Get(index); +} +inline const ::pg_query::Node& PartitionBoundSpec::lowerdatums(int index) const { + // @@protoc_insertion_point(field_get:pg_query.PartitionBoundSpec.lowerdatums) + return _internal_lowerdatums(index); +} +inline ::pg_query::Node* PartitionBoundSpec::_internal_add_lowerdatums() { + return lowerdatums_.Add(); +} +inline ::pg_query::Node* PartitionBoundSpec::add_lowerdatums() { + // @@protoc_insertion_point(field_add:pg_query.PartitionBoundSpec.lowerdatums) + return _internal_add_lowerdatums(); +} +inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& +PartitionBoundSpec::lowerdatums() const { + // @@protoc_insertion_point(field_list:pg_query.PartitionBoundSpec.lowerdatums) + return lowerdatums_; +} + +// repeated .pg_query.Node upperdatums = 7 [json_name = "upperdatums"]; +inline int PartitionBoundSpec::_internal_upperdatums_size() const { + return upperdatums_.size(); +} +inline int PartitionBoundSpec::upperdatums_size() const { + return _internal_upperdatums_size(); +} +inline void PartitionBoundSpec::clear_upperdatums() { + upperdatums_.Clear(); +} +inline ::pg_query::Node* PartitionBoundSpec::mutable_upperdatums(int index) { + // @@protoc_insertion_point(field_mutable:pg_query.PartitionBoundSpec.upperdatums) + return upperdatums_.Mutable(index); +} +inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* +PartitionBoundSpec::mutable_upperdatums() { + // @@protoc_insertion_point(field_mutable_list:pg_query.PartitionBoundSpec.upperdatums) + return &upperdatums_; +} +inline const ::pg_query::Node& PartitionBoundSpec::_internal_upperdatums(int index) const { + return upperdatums_.Get(index); +} +inline const ::pg_query::Node& PartitionBoundSpec::upperdatums(int index) const { + // @@protoc_insertion_point(field_get:pg_query.PartitionBoundSpec.upperdatums) + return _internal_upperdatums(index); +} +inline ::pg_query::Node* PartitionBoundSpec::_internal_add_upperdatums() { + return upperdatums_.Add(); +} +inline ::pg_query::Node* PartitionBoundSpec::add_upperdatums() { + // @@protoc_insertion_point(field_add:pg_query.PartitionBoundSpec.upperdatums) + return _internal_add_upperdatums(); +} +inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& +PartitionBoundSpec::upperdatums() const { + // @@protoc_insertion_point(field_list:pg_query.PartitionBoundSpec.upperdatums) + return upperdatums_; +} + +// int32 location = 8 [json_name = "location"]; +inline void PartitionBoundSpec::clear_location() { + location_ = 0; +} +inline ::PROTOBUF_NAMESPACE_ID::int32 PartitionBoundSpec::_internal_location() const { + return location_; +} +inline ::PROTOBUF_NAMESPACE_ID::int32 PartitionBoundSpec::location() const { + // @@protoc_insertion_point(field_get:pg_query.PartitionBoundSpec.location) + return _internal_location(); +} +inline void PartitionBoundSpec::_internal_set_location(::PROTOBUF_NAMESPACE_ID::int32 value) { + + location_ = value; +} +inline void PartitionBoundSpec::set_location(::PROTOBUF_NAMESPACE_ID::int32 value) { + _internal_set_location(value); + // @@protoc_insertion_point(field_set:pg_query.PartitionBoundSpec.location) +} + +// ------------------------------------------------------------------- + +// PartitionRangeDatum + +// .pg_query.PartitionRangeDatumKind kind = 1 [json_name = "kind"]; +inline void PartitionRangeDatum::clear_kind() { + kind_ = 0; +} +inline ::pg_query::PartitionRangeDatumKind PartitionRangeDatum::_internal_kind() const { + return static_cast< ::pg_query::PartitionRangeDatumKind >(kind_); +} +inline ::pg_query::PartitionRangeDatumKind PartitionRangeDatum::kind() const { + // @@protoc_insertion_point(field_get:pg_query.PartitionRangeDatum.kind) + return _internal_kind(); +} +inline void PartitionRangeDatum::_internal_set_kind(::pg_query::PartitionRangeDatumKind value) { + + kind_ = value; +} +inline void PartitionRangeDatum::set_kind(::pg_query::PartitionRangeDatumKind value) { + _internal_set_kind(value); + // @@protoc_insertion_point(field_set:pg_query.PartitionRangeDatum.kind) +} + +// .pg_query.Node value = 2 [json_name = "value"]; +inline bool PartitionRangeDatum::_internal_has_value() const { + return this != internal_default_instance() && value_ != nullptr; +} +inline bool PartitionRangeDatum::has_value() const { + return _internal_has_value(); +} +inline void PartitionRangeDatum::clear_value() { + if (GetArena() == nullptr && value_ != nullptr) { + delete value_; + } + value_ = nullptr; +} +inline const ::pg_query::Node& PartitionRangeDatum::_internal_value() const { + const ::pg_query::Node* p = value_; + return p != nullptr ? *p : reinterpret_cast( + ::pg_query::_Node_default_instance_); +} +inline const ::pg_query::Node& PartitionRangeDatum::value() const { + // @@protoc_insertion_point(field_get:pg_query.PartitionRangeDatum.value) + return _internal_value(); +} +inline void PartitionRangeDatum::unsafe_arena_set_allocated_value( + ::pg_query::Node* value) { + if (GetArena() == nullptr) { + delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(value_); + } + value_ = value; + if (value) { + + } else { + + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.PartitionRangeDatum.value) +} +inline ::pg_query::Node* PartitionRangeDatum::release_value() { + + ::pg_query::Node* temp = value_; + value_ = nullptr; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + return temp; +} +inline ::pg_query::Node* PartitionRangeDatum::unsafe_arena_release_value() { + // @@protoc_insertion_point(field_release:pg_query.PartitionRangeDatum.value) + + ::pg_query::Node* temp = value_; + value_ = nullptr; + return temp; +} +inline ::pg_query::Node* PartitionRangeDatum::_internal_mutable_value() { + + if (value_ == nullptr) { + auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); + value_ = p; + } + return value_; +} +inline ::pg_query::Node* PartitionRangeDatum::mutable_value() { + // @@protoc_insertion_point(field_mutable:pg_query.PartitionRangeDatum.value) + return _internal_mutable_value(); +} +inline void PartitionRangeDatum::set_allocated_value(::pg_query::Node* value) { + ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); + if (message_arena == nullptr) { + delete value_; + } + if (value) { + ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = + ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(value); + if (message_arena != submessage_arena) { + value = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( + message_arena, value, submessage_arena); + } + + } else { + + } + value_ = value; + // @@protoc_insertion_point(field_set_allocated:pg_query.PartitionRangeDatum.value) +} + +// int32 location = 3 [json_name = "location"]; +inline void PartitionRangeDatum::clear_location() { + location_ = 0; +} +inline ::PROTOBUF_NAMESPACE_ID::int32 PartitionRangeDatum::_internal_location() const { + return location_; +} +inline ::PROTOBUF_NAMESPACE_ID::int32 PartitionRangeDatum::location() const { + // @@protoc_insertion_point(field_get:pg_query.PartitionRangeDatum.location) + return _internal_location(); +} +inline void PartitionRangeDatum::_internal_set_location(::PROTOBUF_NAMESPACE_ID::int32 value) { + + location_ = value; +} +inline void PartitionRangeDatum::set_location(::PROTOBUF_NAMESPACE_ID::int32 value) { + _internal_set_location(value); + // @@protoc_insertion_point(field_set:pg_query.PartitionRangeDatum.location) +} + +// ------------------------------------------------------------------- + +// PartitionCmd + +// .pg_query.RangeVar name = 1 [json_name = "name"]; +inline bool PartitionCmd::_internal_has_name() const { + return this != internal_default_instance() && name_ != nullptr; +} +inline bool PartitionCmd::has_name() const { + return _internal_has_name(); +} +inline void PartitionCmd::clear_name() { + if (GetArena() == nullptr && name_ != nullptr) { + delete name_; + } + name_ = nullptr; +} +inline const ::pg_query::RangeVar& PartitionCmd::_internal_name() const { + const ::pg_query::RangeVar* p = name_; + return p != nullptr ? *p : reinterpret_cast( + ::pg_query::_RangeVar_default_instance_); +} +inline const ::pg_query::RangeVar& PartitionCmd::name() const { + // @@protoc_insertion_point(field_get:pg_query.PartitionCmd.name) + return _internal_name(); +} +inline void PartitionCmd::unsafe_arena_set_allocated_name( + ::pg_query::RangeVar* name) { + if (GetArena() == nullptr) { + delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(name_); + } + name_ = name; + if (name) { + + } else { + + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.PartitionCmd.name) +} +inline ::pg_query::RangeVar* PartitionCmd::release_name() { + + ::pg_query::RangeVar* temp = name_; + name_ = nullptr; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + return temp; +} +inline ::pg_query::RangeVar* PartitionCmd::unsafe_arena_release_name() { + // @@protoc_insertion_point(field_release:pg_query.PartitionCmd.name) + + ::pg_query::RangeVar* temp = name_; + name_ = nullptr; + return temp; +} +inline ::pg_query::RangeVar* PartitionCmd::_internal_mutable_name() { + + if (name_ == nullptr) { + auto* p = CreateMaybeMessage<::pg_query::RangeVar>(GetArena()); + name_ = p; + } + return name_; +} +inline ::pg_query::RangeVar* PartitionCmd::mutable_name() { + // @@protoc_insertion_point(field_mutable:pg_query.PartitionCmd.name) + return _internal_mutable_name(); +} +inline void PartitionCmd::set_allocated_name(::pg_query::RangeVar* name) { + ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); + if (message_arena == nullptr) { + delete name_; + } + if (name) { + ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = + ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(name); + if (message_arena != submessage_arena) { + name = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( + message_arena, name, submessage_arena); + } + + } else { + + } + name_ = name; + // @@protoc_insertion_point(field_set_allocated:pg_query.PartitionCmd.name) +} + +// .pg_query.PartitionBoundSpec bound = 2 [json_name = "bound"]; +inline bool PartitionCmd::_internal_has_bound() const { + return this != internal_default_instance() && bound_ != nullptr; +} +inline bool PartitionCmd::has_bound() const { + return _internal_has_bound(); +} +inline void PartitionCmd::clear_bound() { + if (GetArena() == nullptr && bound_ != nullptr) { + delete bound_; + } + bound_ = nullptr; +} +inline const ::pg_query::PartitionBoundSpec& PartitionCmd::_internal_bound() const { + const ::pg_query::PartitionBoundSpec* p = bound_; + return p != nullptr ? *p : reinterpret_cast( + ::pg_query::_PartitionBoundSpec_default_instance_); +} +inline const ::pg_query::PartitionBoundSpec& PartitionCmd::bound() const { + // @@protoc_insertion_point(field_get:pg_query.PartitionCmd.bound) + return _internal_bound(); +} +inline void PartitionCmd::unsafe_arena_set_allocated_bound( + ::pg_query::PartitionBoundSpec* bound) { + if (GetArena() == nullptr) { + delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(bound_); + } + bound_ = bound; + if (bound) { + + } else { + + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.PartitionCmd.bound) +} +inline ::pg_query::PartitionBoundSpec* PartitionCmd::release_bound() { + + ::pg_query::PartitionBoundSpec* temp = bound_; + bound_ = nullptr; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + return temp; +} +inline ::pg_query::PartitionBoundSpec* PartitionCmd::unsafe_arena_release_bound() { + // @@protoc_insertion_point(field_release:pg_query.PartitionCmd.bound) + + ::pg_query::PartitionBoundSpec* temp = bound_; + bound_ = nullptr; + return temp; +} +inline ::pg_query::PartitionBoundSpec* PartitionCmd::_internal_mutable_bound() { + + if (bound_ == nullptr) { + auto* p = CreateMaybeMessage<::pg_query::PartitionBoundSpec>(GetArena()); + bound_ = p; + } + return bound_; +} +inline ::pg_query::PartitionBoundSpec* PartitionCmd::mutable_bound() { + // @@protoc_insertion_point(field_mutable:pg_query.PartitionCmd.bound) + return _internal_mutable_bound(); +} +inline void PartitionCmd::set_allocated_bound(::pg_query::PartitionBoundSpec* bound) { + ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); + if (message_arena == nullptr) { + delete bound_; + } + if (bound) { + ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = + ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(bound); + if (message_arena != submessage_arena) { + bound = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( + message_arena, bound, submessage_arena); + } + + } else { + + } + bound_ = bound; + // @@protoc_insertion_point(field_set_allocated:pg_query.PartitionCmd.bound) +} + +// ------------------------------------------------------------------- + +// VacuumRelation + +// .pg_query.RangeVar relation = 1 [json_name = "relation"]; +inline bool VacuumRelation::_internal_has_relation() const { + return this != internal_default_instance() && relation_ != nullptr; +} +inline bool VacuumRelation::has_relation() const { + return _internal_has_relation(); +} +inline void VacuumRelation::clear_relation() { + if (GetArena() == nullptr && relation_ != nullptr) { + delete relation_; + } + relation_ = nullptr; +} +inline const ::pg_query::RangeVar& VacuumRelation::_internal_relation() const { + const ::pg_query::RangeVar* p = relation_; + return p != nullptr ? *p : reinterpret_cast( + ::pg_query::_RangeVar_default_instance_); +} +inline const ::pg_query::RangeVar& VacuumRelation::relation() const { + // @@protoc_insertion_point(field_get:pg_query.VacuumRelation.relation) + return _internal_relation(); +} +inline void VacuumRelation::unsafe_arena_set_allocated_relation( + ::pg_query::RangeVar* relation) { + if (GetArena() == nullptr) { + delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(relation_); + } + relation_ = relation; + if (relation) { + + } else { + + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.VacuumRelation.relation) +} +inline ::pg_query::RangeVar* VacuumRelation::release_relation() { + + ::pg_query::RangeVar* temp = relation_; + relation_ = nullptr; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + return temp; +} +inline ::pg_query::RangeVar* VacuumRelation::unsafe_arena_release_relation() { + // @@protoc_insertion_point(field_release:pg_query.VacuumRelation.relation) + + ::pg_query::RangeVar* temp = relation_; + relation_ = nullptr; + return temp; +} +inline ::pg_query::RangeVar* VacuumRelation::_internal_mutable_relation() { + + if (relation_ == nullptr) { + auto* p = CreateMaybeMessage<::pg_query::RangeVar>(GetArena()); + relation_ = p; + } + return relation_; +} +inline ::pg_query::RangeVar* VacuumRelation::mutable_relation() { + // @@protoc_insertion_point(field_mutable:pg_query.VacuumRelation.relation) + return _internal_mutable_relation(); +} +inline void VacuumRelation::set_allocated_relation(::pg_query::RangeVar* relation) { + ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); + if (message_arena == nullptr) { + delete relation_; + } + if (relation) { + ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = + ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(relation); + if (message_arena != submessage_arena) { + relation = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( + message_arena, relation, submessage_arena); + } + + } else { + + } + relation_ = relation; + // @@protoc_insertion_point(field_set_allocated:pg_query.VacuumRelation.relation) +} + +// uint32 oid = 2 [json_name = "oid"]; +inline void VacuumRelation::clear_oid() { + oid_ = 0u; +} +inline ::PROTOBUF_NAMESPACE_ID::uint32 VacuumRelation::_internal_oid() const { + return oid_; +} +inline ::PROTOBUF_NAMESPACE_ID::uint32 VacuumRelation::oid() const { + // @@protoc_insertion_point(field_get:pg_query.VacuumRelation.oid) + return _internal_oid(); +} +inline void VacuumRelation::_internal_set_oid(::PROTOBUF_NAMESPACE_ID::uint32 value) { + + oid_ = value; +} +inline void VacuumRelation::set_oid(::PROTOBUF_NAMESPACE_ID::uint32 value) { + _internal_set_oid(value); + // @@protoc_insertion_point(field_set:pg_query.VacuumRelation.oid) +} + +// repeated .pg_query.Node va_cols = 3 [json_name = "va_cols"]; +inline int VacuumRelation::_internal_va_cols_size() const { + return va_cols_.size(); +} +inline int VacuumRelation::va_cols_size() const { + return _internal_va_cols_size(); +} +inline void VacuumRelation::clear_va_cols() { + va_cols_.Clear(); +} +inline ::pg_query::Node* VacuumRelation::mutable_va_cols(int index) { + // @@protoc_insertion_point(field_mutable:pg_query.VacuumRelation.va_cols) + return va_cols_.Mutable(index); +} +inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* +VacuumRelation::mutable_va_cols() { + // @@protoc_insertion_point(field_mutable_list:pg_query.VacuumRelation.va_cols) + return &va_cols_; +} +inline const ::pg_query::Node& VacuumRelation::_internal_va_cols(int index) const { + return va_cols_.Get(index); +} +inline const ::pg_query::Node& VacuumRelation::va_cols(int index) const { + // @@protoc_insertion_point(field_get:pg_query.VacuumRelation.va_cols) + return _internal_va_cols(index); +} +inline ::pg_query::Node* VacuumRelation::_internal_add_va_cols() { + return va_cols_.Add(); +} +inline ::pg_query::Node* VacuumRelation::add_va_cols() { + // @@protoc_insertion_point(field_add:pg_query.VacuumRelation.va_cols) + return _internal_add_va_cols(); +} +inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& +VacuumRelation::va_cols() const { + // @@protoc_insertion_point(field_list:pg_query.VacuumRelation.va_cols) + return va_cols_; +} + +// ------------------------------------------------------------------- + +// InlineCodeBlock + +// string source_text = 1 [json_name = "source_text"]; +inline void InlineCodeBlock::clear_source_text() { + source_text_.ClearToEmpty(); +} +inline const std::string& InlineCodeBlock::source_text() const { + // @@protoc_insertion_point(field_get:pg_query.InlineCodeBlock.source_text) + return _internal_source_text(); +} +inline void InlineCodeBlock::set_source_text(const std::string& value) { + _internal_set_source_text(value); + // @@protoc_insertion_point(field_set:pg_query.InlineCodeBlock.source_text) +} +inline std::string* InlineCodeBlock::mutable_source_text() { + // @@protoc_insertion_point(field_mutable:pg_query.InlineCodeBlock.source_text) + return _internal_mutable_source_text(); +} +inline const std::string& InlineCodeBlock::_internal_source_text() const { + return source_text_.Get(); +} +inline void InlineCodeBlock::_internal_set_source_text(const std::string& value) { + + source_text_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArena()); +} +inline void InlineCodeBlock::set_source_text(std::string&& value) { + + source_text_.Set( + ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::move(value), GetArena()); + // @@protoc_insertion_point(field_set_rvalue:pg_query.InlineCodeBlock.source_text) +} +inline void InlineCodeBlock::set_source_text(const char* value) { + GOOGLE_DCHECK(value != nullptr); + + source_text_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string(value), GetArena()); + // @@protoc_insertion_point(field_set_char:pg_query.InlineCodeBlock.source_text) +} +inline void InlineCodeBlock::set_source_text(const char* value, + size_t size) { + + source_text_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string( + reinterpret_cast(value), size), GetArena()); + // @@protoc_insertion_point(field_set_pointer:pg_query.InlineCodeBlock.source_text) +} +inline std::string* InlineCodeBlock::_internal_mutable_source_text() { + + return source_text_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArena()); +} +inline std::string* InlineCodeBlock::release_source_text() { + // @@protoc_insertion_point(field_release:pg_query.InlineCodeBlock.source_text) + return source_text_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); +} +inline void InlineCodeBlock::set_allocated_source_text(std::string* source_text) { + if (source_text != nullptr) { + + } else { + + } + source_text_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), source_text, + GetArena()); + // @@protoc_insertion_point(field_set_allocated:pg_query.InlineCodeBlock.source_text) +} + +// uint32 lang_oid = 2 [json_name = "langOid"]; +inline void InlineCodeBlock::clear_lang_oid() { + lang_oid_ = 0u; +} +inline ::PROTOBUF_NAMESPACE_ID::uint32 InlineCodeBlock::_internal_lang_oid() const { + return lang_oid_; +} +inline ::PROTOBUF_NAMESPACE_ID::uint32 InlineCodeBlock::lang_oid() const { + // @@protoc_insertion_point(field_get:pg_query.InlineCodeBlock.lang_oid) + return _internal_lang_oid(); +} +inline void InlineCodeBlock::_internal_set_lang_oid(::PROTOBUF_NAMESPACE_ID::uint32 value) { + + lang_oid_ = value; +} +inline void InlineCodeBlock::set_lang_oid(::PROTOBUF_NAMESPACE_ID::uint32 value) { + _internal_set_lang_oid(value); + // @@protoc_insertion_point(field_set:pg_query.InlineCodeBlock.lang_oid) +} + +// bool lang_is_trusted = 3 [json_name = "langIsTrusted"]; +inline void InlineCodeBlock::clear_lang_is_trusted() { + lang_is_trusted_ = false; +} +inline bool InlineCodeBlock::_internal_lang_is_trusted() const { + return lang_is_trusted_; +} +inline bool InlineCodeBlock::lang_is_trusted() const { + // @@protoc_insertion_point(field_get:pg_query.InlineCodeBlock.lang_is_trusted) + return _internal_lang_is_trusted(); +} +inline void InlineCodeBlock::_internal_set_lang_is_trusted(bool value) { + + lang_is_trusted_ = value; +} +inline void InlineCodeBlock::set_lang_is_trusted(bool value) { + _internal_set_lang_is_trusted(value); + // @@protoc_insertion_point(field_set:pg_query.InlineCodeBlock.lang_is_trusted) +} + +// bool atomic = 4 [json_name = "atomic"]; +inline void InlineCodeBlock::clear_atomic() { + atomic_ = false; +} +inline bool InlineCodeBlock::_internal_atomic() const { + return atomic_; +} +inline bool InlineCodeBlock::atomic() const { + // @@protoc_insertion_point(field_get:pg_query.InlineCodeBlock.atomic) + return _internal_atomic(); +} +inline void InlineCodeBlock::_internal_set_atomic(bool value) { + + atomic_ = value; +} +inline void InlineCodeBlock::set_atomic(bool value) { + _internal_set_atomic(value); + // @@protoc_insertion_point(field_set:pg_query.InlineCodeBlock.atomic) +} + +// ------------------------------------------------------------------- + +// CallContext + +// bool atomic = 1 [json_name = "atomic"]; +inline void CallContext::clear_atomic() { + atomic_ = false; +} +inline bool CallContext::_internal_atomic() const { + return atomic_; +} +inline bool CallContext::atomic() const { + // @@protoc_insertion_point(field_get:pg_query.CallContext.atomic) + return _internal_atomic(); +} +inline void CallContext::_internal_set_atomic(bool value) { + + atomic_ = value; +} +inline void CallContext::set_atomic(bool value) { + _internal_set_atomic(value); + // @@protoc_insertion_point(field_set:pg_query.CallContext.atomic) +} + +// ------------------------------------------------------------------- + +// ScanToken + +// int32 start = 1; +inline void ScanToken::clear_start() { + start_ = 0; +} +inline ::PROTOBUF_NAMESPACE_ID::int32 ScanToken::_internal_start() const { + return start_; +} +inline ::PROTOBUF_NAMESPACE_ID::int32 ScanToken::start() const { + // @@protoc_insertion_point(field_get:pg_query.ScanToken.start) + return _internal_start(); +} +inline void ScanToken::_internal_set_start(::PROTOBUF_NAMESPACE_ID::int32 value) { + + start_ = value; +} +inline void ScanToken::set_start(::PROTOBUF_NAMESPACE_ID::int32 value) { + _internal_set_start(value); + // @@protoc_insertion_point(field_set:pg_query.ScanToken.start) +} + +// int32 end = 2; +inline void ScanToken::clear_end() { + end_ = 0; +} +inline ::PROTOBUF_NAMESPACE_ID::int32 ScanToken::_internal_end() const { + return end_; +} +inline ::PROTOBUF_NAMESPACE_ID::int32 ScanToken::end() const { + // @@protoc_insertion_point(field_get:pg_query.ScanToken.end) + return _internal_end(); +} +inline void ScanToken::_internal_set_end(::PROTOBUF_NAMESPACE_ID::int32 value) { + + end_ = value; +} +inline void ScanToken::set_end(::PROTOBUF_NAMESPACE_ID::int32 value) { + _internal_set_end(value); + // @@protoc_insertion_point(field_set:pg_query.ScanToken.end) +} + +// .pg_query.Token token = 4; +inline void ScanToken::clear_token() { + token_ = 0; +} +inline ::pg_query::Token ScanToken::_internal_token() const { + return static_cast< ::pg_query::Token >(token_); +} +inline ::pg_query::Token ScanToken::token() const { + // @@protoc_insertion_point(field_get:pg_query.ScanToken.token) + return _internal_token(); +} +inline void ScanToken::_internal_set_token(::pg_query::Token value) { + + token_ = value; +} +inline void ScanToken::set_token(::pg_query::Token value) { + _internal_set_token(value); + // @@protoc_insertion_point(field_set:pg_query.ScanToken.token) +} + +// .pg_query.KeywordKind keyword_kind = 5; +inline void ScanToken::clear_keyword_kind() { + keyword_kind_ = 0; +} +inline ::pg_query::KeywordKind ScanToken::_internal_keyword_kind() const { + return static_cast< ::pg_query::KeywordKind >(keyword_kind_); +} +inline ::pg_query::KeywordKind ScanToken::keyword_kind() const { + // @@protoc_insertion_point(field_get:pg_query.ScanToken.keyword_kind) + return _internal_keyword_kind(); +} +inline void ScanToken::_internal_set_keyword_kind(::pg_query::KeywordKind value) { + + keyword_kind_ = value; +} +inline void ScanToken::set_keyword_kind(::pg_query::KeywordKind value) { + _internal_set_keyword_kind(value); + // @@protoc_insertion_point(field_set:pg_query.ScanToken.keyword_kind) +} + +#ifdef __GNUC__ + #pragma GCC diagnostic pop +#endif // __GNUC__ +// ------------------------------------------------------------------- + +// ------------------------------------------------------------------- + +// ------------------------------------------------------------------- + +// ------------------------------------------------------------------- + +// ------------------------------------------------------------------- + +// ------------------------------------------------------------------- + +// ------------------------------------------------------------------- + +// ------------------------------------------------------------------- + +// ------------------------------------------------------------------- + +// ------------------------------------------------------------------- + +// ------------------------------------------------------------------- + +// ------------------------------------------------------------------- + +// ------------------------------------------------------------------- + +// ------------------------------------------------------------------- + +// ------------------------------------------------------------------- + +// ------------------------------------------------------------------- + +// ------------------------------------------------------------------- + +// ------------------------------------------------------------------- + +// ------------------------------------------------------------------- + +// ------------------------------------------------------------------- + +// ------------------------------------------------------------------- + +// ------------------------------------------------------------------- + +// ------------------------------------------------------------------- + +// ------------------------------------------------------------------- + +// ------------------------------------------------------------------- + +// ------------------------------------------------------------------- + +// ------------------------------------------------------------------- + +// ------------------------------------------------------------------- + +// ------------------------------------------------------------------- + +// ------------------------------------------------------------------- + +// ------------------------------------------------------------------- + +// ------------------------------------------------------------------- + +// ------------------------------------------------------------------- + +// ------------------------------------------------------------------- + +// ------------------------------------------------------------------- + +// ------------------------------------------------------------------- + +// ------------------------------------------------------------------- + +// ------------------------------------------------------------------- + +// ------------------------------------------------------------------- + +// ------------------------------------------------------------------- + +// ------------------------------------------------------------------- + +// ------------------------------------------------------------------- + +// ------------------------------------------------------------------- + +// ------------------------------------------------------------------- + +// ------------------------------------------------------------------- + +// ------------------------------------------------------------------- + +// ------------------------------------------------------------------- + +// ------------------------------------------------------------------- + +// ------------------------------------------------------------------- + +// ------------------------------------------------------------------- + +// ------------------------------------------------------------------- + +// ------------------------------------------------------------------- + +// ------------------------------------------------------------------- + +// ------------------------------------------------------------------- + +// ------------------------------------------------------------------- + +// ------------------------------------------------------------------- + +// ------------------------------------------------------------------- + +// ------------------------------------------------------------------- + +// ------------------------------------------------------------------- + +// ------------------------------------------------------------------- + +// ------------------------------------------------------------------- + +// ------------------------------------------------------------------- + +// ------------------------------------------------------------------- + +// ------------------------------------------------------------------- + +// ------------------------------------------------------------------- + +// ------------------------------------------------------------------- + +// ------------------------------------------------------------------- + +// ------------------------------------------------------------------- + +// ------------------------------------------------------------------- + +// ------------------------------------------------------------------- + +// ------------------------------------------------------------------- + +// ------------------------------------------------------------------- + +// ------------------------------------------------------------------- + +// ------------------------------------------------------------------- + +// ------------------------------------------------------------------- + +// ------------------------------------------------------------------- + +// ------------------------------------------------------------------- + +// ------------------------------------------------------------------- + +// ------------------------------------------------------------------- + +// ------------------------------------------------------------------- + +// ------------------------------------------------------------------- + +// ------------------------------------------------------------------- + +// ------------------------------------------------------------------- + +// ------------------------------------------------------------------- + +// ------------------------------------------------------------------- + +// ------------------------------------------------------------------- + +// ------------------------------------------------------------------- + +// ------------------------------------------------------------------- + +// ------------------------------------------------------------------- + +// ------------------------------------------------------------------- + +// ------------------------------------------------------------------- + +// ------------------------------------------------------------------- + +// ------------------------------------------------------------------- + +// ------------------------------------------------------------------- + +// ------------------------------------------------------------------- + +// ------------------------------------------------------------------- + +// ------------------------------------------------------------------- + +// ------------------------------------------------------------------- + +// ------------------------------------------------------------------- + +// ------------------------------------------------------------------- + +// ------------------------------------------------------------------- + +// ------------------------------------------------------------------- + +// ------------------------------------------------------------------- + +// ------------------------------------------------------------------- + +// ------------------------------------------------------------------- + +// ------------------------------------------------------------------- + +// ------------------------------------------------------------------- + +// ------------------------------------------------------------------- + +// ------------------------------------------------------------------- + +// ------------------------------------------------------------------- + +// ------------------------------------------------------------------- + +// ------------------------------------------------------------------- + +// ------------------------------------------------------------------- + +// ------------------------------------------------------------------- + +// ------------------------------------------------------------------- + +// ------------------------------------------------------------------- + +// ------------------------------------------------------------------- + +// ------------------------------------------------------------------- + +// ------------------------------------------------------------------- + +// ------------------------------------------------------------------- + +// ------------------------------------------------------------------- + +// ------------------------------------------------------------------- + +// ------------------------------------------------------------------- + +// ------------------------------------------------------------------- + +// ------------------------------------------------------------------- + +// ------------------------------------------------------------------- + +// ------------------------------------------------------------------- + +// ------------------------------------------------------------------- + +// ------------------------------------------------------------------- + +// ------------------------------------------------------------------- + +// ------------------------------------------------------------------- + +// ------------------------------------------------------------------- + +// ------------------------------------------------------------------- + +// ------------------------------------------------------------------- + +// ------------------------------------------------------------------- + +// ------------------------------------------------------------------- + +// ------------------------------------------------------------------- + +// ------------------------------------------------------------------- + +// ------------------------------------------------------------------- + +// ------------------------------------------------------------------- + +// ------------------------------------------------------------------- + +// ------------------------------------------------------------------- + +// ------------------------------------------------------------------- + +// ------------------------------------------------------------------- + +// ------------------------------------------------------------------- + +// ------------------------------------------------------------------- + +// ------------------------------------------------------------------- + +// ------------------------------------------------------------------- + +// ------------------------------------------------------------------- + +// ------------------------------------------------------------------- + +// ------------------------------------------------------------------- + +// ------------------------------------------------------------------- + +// ------------------------------------------------------------------- + +// ------------------------------------------------------------------- + +// ------------------------------------------------------------------- + +// ------------------------------------------------------------------- + +// ------------------------------------------------------------------- + +// ------------------------------------------------------------------- + +// ------------------------------------------------------------------- + +// ------------------------------------------------------------------- + +// ------------------------------------------------------------------- + +// ------------------------------------------------------------------- + +// ------------------------------------------------------------------- + +// ------------------------------------------------------------------- + +// ------------------------------------------------------------------- + +// ------------------------------------------------------------------- + +// ------------------------------------------------------------------- + +// ------------------------------------------------------------------- + +// ------------------------------------------------------------------- + +// ------------------------------------------------------------------- + +// ------------------------------------------------------------------- + +// ------------------------------------------------------------------- + +// ------------------------------------------------------------------- + +// ------------------------------------------------------------------- + +// ------------------------------------------------------------------- + +// ------------------------------------------------------------------- + +// ------------------------------------------------------------------- + +// ------------------------------------------------------------------- + +// ------------------------------------------------------------------- + +// ------------------------------------------------------------------- + +// ------------------------------------------------------------------- + +// ------------------------------------------------------------------- + +// ------------------------------------------------------------------- + +// ------------------------------------------------------------------- + +// ------------------------------------------------------------------- + +// ------------------------------------------------------------------- + +// ------------------------------------------------------------------- + +// ------------------------------------------------------------------- + +// ------------------------------------------------------------------- + +// ------------------------------------------------------------------- + +// ------------------------------------------------------------------- + +// ------------------------------------------------------------------- + +// ------------------------------------------------------------------- + +// ------------------------------------------------------------------- + +// ------------------------------------------------------------------- + +// ------------------------------------------------------------------- + +// ------------------------------------------------------------------- + +// ------------------------------------------------------------------- + +// ------------------------------------------------------------------- + +// ------------------------------------------------------------------- + +// ------------------------------------------------------------------- + +// ------------------------------------------------------------------- + +// ------------------------------------------------------------------- + +// ------------------------------------------------------------------- + +// ------------------------------------------------------------------- + +// ------------------------------------------------------------------- + +// ------------------------------------------------------------------- + +// ------------------------------------------------------------------- + +// ------------------------------------------------------------------- + +// ------------------------------------------------------------------- + +// ------------------------------------------------------------------- + +// ------------------------------------------------------------------- + +// ------------------------------------------------------------------- + +// ------------------------------------------------------------------- + +// ------------------------------------------------------------------- + +// ------------------------------------------------------------------- + +// ------------------------------------------------------------------- + +// ------------------------------------------------------------------- + +// ------------------------------------------------------------------- + +// ------------------------------------------------------------------- + +// ------------------------------------------------------------------- + +// ------------------------------------------------------------------- + +// ------------------------------------------------------------------- + +// ------------------------------------------------------------------- + +// ------------------------------------------------------------------- + +// ------------------------------------------------------------------- + +// ------------------------------------------------------------------- + +// ------------------------------------------------------------------- + +// ------------------------------------------------------------------- + +// ------------------------------------------------------------------- + +// ------------------------------------------------------------------- + +// ------------------------------------------------------------------- + + +// @@protoc_insertion_point(namespace_scope) + +} // namespace pg_query + +PROTOBUF_NAMESPACE_OPEN + +template <> struct is_proto_enum< ::pg_query::OverridingKind> : ::std::true_type {}; +template <> +inline const EnumDescriptor* GetEnumDescriptor< ::pg_query::OverridingKind>() { + return ::pg_query::OverridingKind_descriptor(); +} +template <> struct is_proto_enum< ::pg_query::QuerySource> : ::std::true_type {}; +template <> +inline const EnumDescriptor* GetEnumDescriptor< ::pg_query::QuerySource>() { + return ::pg_query::QuerySource_descriptor(); +} +template <> struct is_proto_enum< ::pg_query::SortByDir> : ::std::true_type {}; +template <> +inline const EnumDescriptor* GetEnumDescriptor< ::pg_query::SortByDir>() { + return ::pg_query::SortByDir_descriptor(); +} +template <> struct is_proto_enum< ::pg_query::SortByNulls> : ::std::true_type {}; +template <> +inline const EnumDescriptor* GetEnumDescriptor< ::pg_query::SortByNulls>() { + return ::pg_query::SortByNulls_descriptor(); +} +template <> struct is_proto_enum< ::pg_query::A_Expr_Kind> : ::std::true_type {}; +template <> +inline const EnumDescriptor* GetEnumDescriptor< ::pg_query::A_Expr_Kind>() { + return ::pg_query::A_Expr_Kind_descriptor(); +} +template <> struct is_proto_enum< ::pg_query::RoleSpecType> : ::std::true_type {}; +template <> +inline const EnumDescriptor* GetEnumDescriptor< ::pg_query::RoleSpecType>() { + return ::pg_query::RoleSpecType_descriptor(); +} +template <> struct is_proto_enum< ::pg_query::TableLikeOption> : ::std::true_type {}; +template <> +inline const EnumDescriptor* GetEnumDescriptor< ::pg_query::TableLikeOption>() { + return ::pg_query::TableLikeOption_descriptor(); +} +template <> struct is_proto_enum< ::pg_query::DefElemAction> : ::std::true_type {}; +template <> +inline const EnumDescriptor* GetEnumDescriptor< ::pg_query::DefElemAction>() { + return ::pg_query::DefElemAction_descriptor(); +} +template <> struct is_proto_enum< ::pg_query::PartitionRangeDatumKind> : ::std::true_type {}; +template <> +inline const EnumDescriptor* GetEnumDescriptor< ::pg_query::PartitionRangeDatumKind>() { + return ::pg_query::PartitionRangeDatumKind_descriptor(); +} +template <> struct is_proto_enum< ::pg_query::RTEKind> : ::std::true_type {}; +template <> +inline const EnumDescriptor* GetEnumDescriptor< ::pg_query::RTEKind>() { + return ::pg_query::RTEKind_descriptor(); +} +template <> struct is_proto_enum< ::pg_query::WCOKind> : ::std::true_type {}; +template <> +inline const EnumDescriptor* GetEnumDescriptor< ::pg_query::WCOKind>() { + return ::pg_query::WCOKind_descriptor(); +} +template <> struct is_proto_enum< ::pg_query::GroupingSetKind> : ::std::true_type {}; +template <> +inline const EnumDescriptor* GetEnumDescriptor< ::pg_query::GroupingSetKind>() { + return ::pg_query::GroupingSetKind_descriptor(); +} +template <> struct is_proto_enum< ::pg_query::CTEMaterialize> : ::std::true_type {}; +template <> +inline const EnumDescriptor* GetEnumDescriptor< ::pg_query::CTEMaterialize>() { + return ::pg_query::CTEMaterialize_descriptor(); +} +template <> struct is_proto_enum< ::pg_query::SetOperation> : ::std::true_type {}; +template <> +inline const EnumDescriptor* GetEnumDescriptor< ::pg_query::SetOperation>() { + return ::pg_query::SetOperation_descriptor(); +} +template <> struct is_proto_enum< ::pg_query::ObjectType> : ::std::true_type {}; +template <> +inline const EnumDescriptor* GetEnumDescriptor< ::pg_query::ObjectType>() { + return ::pg_query::ObjectType_descriptor(); +} +template <> struct is_proto_enum< ::pg_query::DropBehavior> : ::std::true_type {}; +template <> +inline const EnumDescriptor* GetEnumDescriptor< ::pg_query::DropBehavior>() { + return ::pg_query::DropBehavior_descriptor(); +} +template <> struct is_proto_enum< ::pg_query::AlterTableType> : ::std::true_type {}; +template <> +inline const EnumDescriptor* GetEnumDescriptor< ::pg_query::AlterTableType>() { + return ::pg_query::AlterTableType_descriptor(); +} +template <> struct is_proto_enum< ::pg_query::GrantTargetType> : ::std::true_type {}; +template <> +inline const EnumDescriptor* GetEnumDescriptor< ::pg_query::GrantTargetType>() { + return ::pg_query::GrantTargetType_descriptor(); +} +template <> struct is_proto_enum< ::pg_query::VariableSetKind> : ::std::true_type {}; +template <> +inline const EnumDescriptor* GetEnumDescriptor< ::pg_query::VariableSetKind>() { + return ::pg_query::VariableSetKind_descriptor(); +} +template <> struct is_proto_enum< ::pg_query::ConstrType> : ::std::true_type {}; +template <> +inline const EnumDescriptor* GetEnumDescriptor< ::pg_query::ConstrType>() { + return ::pg_query::ConstrType_descriptor(); +} +template <> struct is_proto_enum< ::pg_query::ImportForeignSchemaType> : ::std::true_type {}; +template <> +inline const EnumDescriptor* GetEnumDescriptor< ::pg_query::ImportForeignSchemaType>() { + return ::pg_query::ImportForeignSchemaType_descriptor(); +} +template <> struct is_proto_enum< ::pg_query::RoleStmtType> : ::std::true_type {}; +template <> +inline const EnumDescriptor* GetEnumDescriptor< ::pg_query::RoleStmtType>() { + return ::pg_query::RoleStmtType_descriptor(); +} +template <> struct is_proto_enum< ::pg_query::FetchDirection> : ::std::true_type {}; +template <> +inline const EnumDescriptor* GetEnumDescriptor< ::pg_query::FetchDirection>() { + return ::pg_query::FetchDirection_descriptor(); +} +template <> struct is_proto_enum< ::pg_query::FunctionParameterMode> : ::std::true_type {}; +template <> +inline const EnumDescriptor* GetEnumDescriptor< ::pg_query::FunctionParameterMode>() { + return ::pg_query::FunctionParameterMode_descriptor(); +} +template <> struct is_proto_enum< ::pg_query::TransactionStmtKind> : ::std::true_type {}; +template <> +inline const EnumDescriptor* GetEnumDescriptor< ::pg_query::TransactionStmtKind>() { + return ::pg_query::TransactionStmtKind_descriptor(); +} +template <> struct is_proto_enum< ::pg_query::ViewCheckOption> : ::std::true_type {}; +template <> +inline const EnumDescriptor* GetEnumDescriptor< ::pg_query::ViewCheckOption>() { + return ::pg_query::ViewCheckOption_descriptor(); +} +template <> struct is_proto_enum< ::pg_query::ClusterOption> : ::std::true_type {}; +template <> +inline const EnumDescriptor* GetEnumDescriptor< ::pg_query::ClusterOption>() { + return ::pg_query::ClusterOption_descriptor(); +} +template <> struct is_proto_enum< ::pg_query::DiscardMode> : ::std::true_type {}; +template <> +inline const EnumDescriptor* GetEnumDescriptor< ::pg_query::DiscardMode>() { + return ::pg_query::DiscardMode_descriptor(); +} +template <> struct is_proto_enum< ::pg_query::ReindexObjectType> : ::std::true_type {}; +template <> +inline const EnumDescriptor* GetEnumDescriptor< ::pg_query::ReindexObjectType>() { + return ::pg_query::ReindexObjectType_descriptor(); +} +template <> struct is_proto_enum< ::pg_query::AlterTSConfigType> : ::std::true_type {}; +template <> +inline const EnumDescriptor* GetEnumDescriptor< ::pg_query::AlterTSConfigType>() { + return ::pg_query::AlterTSConfigType_descriptor(); +} +template <> struct is_proto_enum< ::pg_query::AlterSubscriptionType> : ::std::true_type {}; +template <> +inline const EnumDescriptor* GetEnumDescriptor< ::pg_query::AlterSubscriptionType>() { + return ::pg_query::AlterSubscriptionType_descriptor(); +} +template <> struct is_proto_enum< ::pg_query::OnCommitAction> : ::std::true_type {}; +template <> +inline const EnumDescriptor* GetEnumDescriptor< ::pg_query::OnCommitAction>() { + return ::pg_query::OnCommitAction_descriptor(); +} +template <> struct is_proto_enum< ::pg_query::ParamKind> : ::std::true_type {}; +template <> +inline const EnumDescriptor* GetEnumDescriptor< ::pg_query::ParamKind>() { + return ::pg_query::ParamKind_descriptor(); +} +template <> struct is_proto_enum< ::pg_query::CoercionContext> : ::std::true_type {}; +template <> +inline const EnumDescriptor* GetEnumDescriptor< ::pg_query::CoercionContext>() { + return ::pg_query::CoercionContext_descriptor(); +} +template <> struct is_proto_enum< ::pg_query::CoercionForm> : ::std::true_type {}; +template <> +inline const EnumDescriptor* GetEnumDescriptor< ::pg_query::CoercionForm>() { + return ::pg_query::CoercionForm_descriptor(); +} +template <> struct is_proto_enum< ::pg_query::BoolExprType> : ::std::true_type {}; +template <> +inline const EnumDescriptor* GetEnumDescriptor< ::pg_query::BoolExprType>() { + return ::pg_query::BoolExprType_descriptor(); +} +template <> struct is_proto_enum< ::pg_query::SubLinkType> : ::std::true_type {}; +template <> +inline const EnumDescriptor* GetEnumDescriptor< ::pg_query::SubLinkType>() { + return ::pg_query::SubLinkType_descriptor(); +} +template <> struct is_proto_enum< ::pg_query::RowCompareType> : ::std::true_type {}; +template <> +inline const EnumDescriptor* GetEnumDescriptor< ::pg_query::RowCompareType>() { + return ::pg_query::RowCompareType_descriptor(); +} +template <> struct is_proto_enum< ::pg_query::MinMaxOp> : ::std::true_type {}; +template <> +inline const EnumDescriptor* GetEnumDescriptor< ::pg_query::MinMaxOp>() { + return ::pg_query::MinMaxOp_descriptor(); +} +template <> struct is_proto_enum< ::pg_query::SQLValueFunctionOp> : ::std::true_type {}; +template <> +inline const EnumDescriptor* GetEnumDescriptor< ::pg_query::SQLValueFunctionOp>() { + return ::pg_query::SQLValueFunctionOp_descriptor(); +} +template <> struct is_proto_enum< ::pg_query::XmlExprOp> : ::std::true_type {}; +template <> +inline const EnumDescriptor* GetEnumDescriptor< ::pg_query::XmlExprOp>() { + return ::pg_query::XmlExprOp_descriptor(); +} +template <> struct is_proto_enum< ::pg_query::XmlOptionType> : ::std::true_type {}; +template <> +inline const EnumDescriptor* GetEnumDescriptor< ::pg_query::XmlOptionType>() { + return ::pg_query::XmlOptionType_descriptor(); +} +template <> struct is_proto_enum< ::pg_query::NullTestType> : ::std::true_type {}; +template <> +inline const EnumDescriptor* GetEnumDescriptor< ::pg_query::NullTestType>() { + return ::pg_query::NullTestType_descriptor(); +} +template <> struct is_proto_enum< ::pg_query::BoolTestType> : ::std::true_type {}; +template <> +inline const EnumDescriptor* GetEnumDescriptor< ::pg_query::BoolTestType>() { + return ::pg_query::BoolTestType_descriptor(); +} +template <> struct is_proto_enum< ::pg_query::CmdType> : ::std::true_type {}; +template <> +inline const EnumDescriptor* GetEnumDescriptor< ::pg_query::CmdType>() { + return ::pg_query::CmdType_descriptor(); +} +template <> struct is_proto_enum< ::pg_query::JoinType> : ::std::true_type {}; +template <> +inline const EnumDescriptor* GetEnumDescriptor< ::pg_query::JoinType>() { + return ::pg_query::JoinType_descriptor(); +} +template <> struct is_proto_enum< ::pg_query::AggStrategy> : ::std::true_type {}; +template <> +inline const EnumDescriptor* GetEnumDescriptor< ::pg_query::AggStrategy>() { + return ::pg_query::AggStrategy_descriptor(); +} +template <> struct is_proto_enum< ::pg_query::AggSplit> : ::std::true_type {}; +template <> +inline const EnumDescriptor* GetEnumDescriptor< ::pg_query::AggSplit>() { + return ::pg_query::AggSplit_descriptor(); +} +template <> struct is_proto_enum< ::pg_query::SetOpCmd> : ::std::true_type {}; +template <> +inline const EnumDescriptor* GetEnumDescriptor< ::pg_query::SetOpCmd>() { + return ::pg_query::SetOpCmd_descriptor(); +} +template <> struct is_proto_enum< ::pg_query::SetOpStrategy> : ::std::true_type {}; +template <> +inline const EnumDescriptor* GetEnumDescriptor< ::pg_query::SetOpStrategy>() { + return ::pg_query::SetOpStrategy_descriptor(); +} +template <> struct is_proto_enum< ::pg_query::OnConflictAction> : ::std::true_type {}; +template <> +inline const EnumDescriptor* GetEnumDescriptor< ::pg_query::OnConflictAction>() { + return ::pg_query::OnConflictAction_descriptor(); +} +template <> struct is_proto_enum< ::pg_query::LimitOption> : ::std::true_type {}; +template <> +inline const EnumDescriptor* GetEnumDescriptor< ::pg_query::LimitOption>() { + return ::pg_query::LimitOption_descriptor(); +} +template <> struct is_proto_enum< ::pg_query::LockClauseStrength> : ::std::true_type {}; +template <> +inline const EnumDescriptor* GetEnumDescriptor< ::pg_query::LockClauseStrength>() { + return ::pg_query::LockClauseStrength_descriptor(); +} +template <> struct is_proto_enum< ::pg_query::LockWaitPolicy> : ::std::true_type {}; +template <> +inline const EnumDescriptor* GetEnumDescriptor< ::pg_query::LockWaitPolicy>() { + return ::pg_query::LockWaitPolicy_descriptor(); +} +template <> struct is_proto_enum< ::pg_query::LockTupleMode> : ::std::true_type {}; +template <> +inline const EnumDescriptor* GetEnumDescriptor< ::pg_query::LockTupleMode>() { + return ::pg_query::LockTupleMode_descriptor(); +} +template <> struct is_proto_enum< ::pg_query::KeywordKind> : ::std::true_type {}; +template <> +inline const EnumDescriptor* GetEnumDescriptor< ::pg_query::KeywordKind>() { + return ::pg_query::KeywordKind_descriptor(); +} +template <> struct is_proto_enum< ::pg_query::Token> : ::std::true_type {}; +template <> +inline const EnumDescriptor* GetEnumDescriptor< ::pg_query::Token>() { + return ::pg_query::Token_descriptor(); +} + +PROTOBUF_NAMESPACE_CLOSE + +// @@protoc_insertion_point(global_scope) + +#include +#endif // GOOGLE_PROTOBUF_INCLUDED_GOOGLE_PROTOBUF_INCLUDED_protobuf_2fpg_5fquery_2eproto diff --git a/parser/include/regex/regex.h b/parser/include/regex/regex.h index 27fdc090..dc31899a 100644 --- a/parser/include/regex/regex.h +++ b/parser/include/regex/regex.h @@ -167,10 +167,18 @@ typedef struct /* * the prototypes for exported functions */ + +/* regcomp.c */ extern int pg_regcomp(regex_t *, const pg_wchar *, size_t, int, Oid); extern int pg_regexec(regex_t *, const pg_wchar *, size_t, size_t, rm_detail_t *, size_t, regmatch_t[], int); extern int pg_regprefix(regex_t *, pg_wchar **, size_t *); extern void pg_regfree(regex_t *); extern size_t pg_regerror(int, const regex_t *, char *, size_t); +/* regexp.c */ +extern regex_t *RE_compile_and_cache(text *text_re, int cflags, Oid collation); +extern bool RE_compile_and_execute(text *text_re, char *dat, int dat_len, + int cflags, Oid collation, + int nmatch, regmatch_t *pmatch); + #endif /* _REGEX_H_ */ diff --git a/parser/include/replication/logicallauncher.h b/parser/include/replication/logicallauncher.h index 84f6041e..b22e591b 100644 --- a/parser/include/replication/logicallauncher.h +++ b/parser/include/replication/logicallauncher.h @@ -3,7 +3,7 @@ * logicallauncher.h * Exports for logical replication launcher. * - * Portions Copyright (c) 2016-2017, PostgreSQL Global Development Group + * Portions Copyright (c) 2016-2020, PostgreSQL Global Development Group * * src/include/replication/logicallauncher.h * diff --git a/parser/include/replication/logicalproto.h b/parser/include/replication/logicalproto.h index 92891ce9..4860561b 100644 --- a/parser/include/replication/logicalproto.h +++ b/parser/include/replication/logicalproto.h @@ -3,7 +3,7 @@ * logicalproto.h * logical replication protocol * - * Copyright (c) 2015-2017, PostgreSQL Global Development Group + * Copyright (c) 2015-2020, PostgreSQL Global Development Group * * IDENTIFICATION * src/include/replication/logicalproto.h @@ -19,8 +19,8 @@ /* * Protocol capabilities * - * LOGICAL_PROTO_VERSION_NUM is our native protocol and the greatest version - * we can support. PGLOGICAL_PROTO_MIN_VERSION_NUM is the oldest version we + * LOGICALREP_PROTO_VERSION_NUM is our native protocol and the greatest version + * we can support. LOGICALREP_PROTO_MIN_VERSION_NUM is the oldest version we * have backwards compatibility for. The client requests protocol version at * connect time. */ @@ -49,6 +49,7 @@ typedef struct LogicalRepRelation char **attnames; /* column names */ Oid *atttyps; /* column types */ char replident; /* replica identity */ + char relkind; /* remote relation kind */ Bitmapset *attkeys; /* Bitmap of key columns */ } LogicalRepRelation; @@ -77,29 +78,33 @@ typedef struct LogicalRepCommitData extern void logicalrep_write_begin(StringInfo out, ReorderBufferTXN *txn); extern void logicalrep_read_begin(StringInfo in, - LogicalRepBeginData *begin_data); + LogicalRepBeginData *begin_data); extern void logicalrep_write_commit(StringInfo out, ReorderBufferTXN *txn, - XLogRecPtr commit_lsn); + XLogRecPtr commit_lsn); extern void logicalrep_read_commit(StringInfo in, - LogicalRepCommitData *commit_data); + LogicalRepCommitData *commit_data); extern void logicalrep_write_origin(StringInfo out, const char *origin, - XLogRecPtr origin_lsn); + XLogRecPtr origin_lsn); extern char *logicalrep_read_origin(StringInfo in, XLogRecPtr *origin_lsn); extern void logicalrep_write_insert(StringInfo out, Relation rel, - HeapTuple newtuple); + HeapTuple newtuple); extern LogicalRepRelId logicalrep_read_insert(StringInfo in, LogicalRepTupleData *newtup); extern void logicalrep_write_update(StringInfo out, Relation rel, HeapTuple oldtuple, - HeapTuple newtuple); + HeapTuple newtuple); extern LogicalRepRelId logicalrep_read_update(StringInfo in, - bool *has_oldtuple, LogicalRepTupleData *oldtup, - LogicalRepTupleData *newtup); + bool *has_oldtuple, LogicalRepTupleData *oldtup, + LogicalRepTupleData *newtup); extern void logicalrep_write_delete(StringInfo out, Relation rel, - HeapTuple oldtuple); + HeapTuple oldtuple); extern LogicalRepRelId logicalrep_read_delete(StringInfo in, - LogicalRepTupleData *oldtup); + LogicalRepTupleData *oldtup); +extern void logicalrep_write_truncate(StringInfo out, int nrelids, Oid relids[], + bool cascade, bool restart_seqs); +extern List *logicalrep_read_truncate(StringInfo in, + bool *cascade, bool *restart_seqs); extern void logicalrep_write_rel(StringInfo out, Relation rel); extern LogicalRepRelation *logicalrep_read_rel(StringInfo in); extern void logicalrep_write_typ(StringInfo out, Oid typoid); extern void logicalrep_read_typ(StringInfo out, LogicalRepTyp *ltyp); -#endif /* LOGICALREP_PROTO_H */ +#endif /* LOGICAL_PROTO_H */ diff --git a/parser/include/replication/logicalworker.h b/parser/include/replication/logicalworker.h index 2557d5a2..7ea14360 100644 --- a/parser/include/replication/logicalworker.h +++ b/parser/include/replication/logicalworker.h @@ -3,7 +3,7 @@ * logicalworker.h * Exports for logical replication workers. * - * Portions Copyright (c) 2016-2017, PostgreSQL Global Development Group + * Portions Copyright (c) 2016-2020, PostgreSQL Global Development Group * * src/include/replication/logicalworker.h * diff --git a/parser/include/replication/origin.h b/parser/include/replication/origin.h index a9595c3c..7e063750 100644 --- a/parser/include/replication/origin.h +++ b/parser/include/replication/origin.h @@ -2,7 +2,7 @@ * origin.h * Exports from replication/logical/origin.c * - * Copyright (c) 2013-2017, PostgreSQL Global Development Group + * Copyright (c) 2013-2020, PostgreSQL Global Development Group * * src/include/replication/origin.h *------------------------------------------------------------------------- @@ -10,7 +10,6 @@ #ifndef PG_ORIGIN_H #define PG_ORIGIN_H -#include "fmgr.h" #include "access/xlog.h" #include "access/xlogdefs.h" #include "access/xlogreader.h" @@ -43,17 +42,17 @@ extern RepOriginId replorigin_by_name(char *name, bool missing_ok); extern RepOriginId replorigin_create(char *name); extern void replorigin_drop(RepOriginId roident, bool nowait); extern bool replorigin_by_oid(RepOriginId roident, bool missing_ok, - char **roname); + char **roname); /* API for querying & manipulating replication progress tracking */ extern void replorigin_advance(RepOriginId node, - XLogRecPtr remote_commit, - XLogRecPtr local_commit, - bool go_backward, bool wal_log); + XLogRecPtr remote_commit, + XLogRecPtr local_commit, + bool go_backward, bool wal_log); extern XLogRecPtr replorigin_get_progress(RepOriginId node, bool flush); extern void replorigin_session_advance(XLogRecPtr remote_commit, - XLogRecPtr local_commit); + XLogRecPtr local_commit); extern void replorigin_session_setup(RepOriginId node); extern void replorigin_session_reset(void); extern XLogRecPtr replorigin_session_get_progress(bool flush); diff --git a/parser/include/replication/reorderbuffer.h b/parser/include/replication/reorderbuffer.h index 5530c4fd..019bd382 100644 --- a/parser/include/replication/reorderbuffer.h +++ b/parser/include/replication/reorderbuffer.h @@ -2,7 +2,7 @@ * reorderbuffer.h * PostgreSQL logical replay/reorder buffer management. * - * Copyright (c) 2012-2017, PostgreSQL Global Development Group + * Copyright (c) 2012-2020, PostgreSQL Global Development Group * * src/include/replication/reorderbuffer.h */ @@ -17,6 +17,8 @@ #include "utils/snapshot.h" #include "utils/timestamp.h" +extern PGDLLIMPORT int logical_decoding_work_mem; + /* an individual tuple, stored in one chunk of memory */ typedef struct ReorderBufferTupleBuf { @@ -59,9 +61,13 @@ enum ReorderBufferChangeType REORDER_BUFFER_CHANGE_INTERNAL_COMMAND_ID, REORDER_BUFFER_CHANGE_INTERNAL_TUPLECID, REORDER_BUFFER_CHANGE_INTERNAL_SPEC_INSERT, - REORDER_BUFFER_CHANGE_INTERNAL_SPEC_CONFIRM + REORDER_BUFFER_CHANGE_INTERNAL_SPEC_CONFIRM, + REORDER_BUFFER_CHANGE_TRUNCATE }; +/* forward declaration */ +struct ReorderBufferTXN; + /* * a single 'change', can be an insert (with one tuple), an update (old, new), * or a delete (old). @@ -76,6 +82,9 @@ typedef struct ReorderBufferChange /* The type of change. */ enum ReorderBufferChangeType action; + /* Transaction this change belongs to. */ + struct ReorderBufferTXN *txn; + RepOriginId origin_id; /* @@ -99,6 +108,18 @@ typedef struct ReorderBufferChange ReorderBufferTupleBuf *newtuple; } tp; + /* + * Truncate data for REORDER_BUFFER_CHANGE_TRUNCATE representing one + * set of relations to be truncated. + */ + struct + { + Size nrelids; + bool cascade; + bool restart_seqs; + Oid *relids; + } truncate; + /* Message with arbitrary data. */ struct { @@ -137,18 +158,38 @@ typedef struct ReorderBufferChange dlist_node node; } ReorderBufferChange; +/* ReorderBufferTXN txn_flags */ +#define RBTXN_HAS_CATALOG_CHANGES 0x0001 +#define RBTXN_IS_SUBXACT 0x0002 +#define RBTXN_IS_SERIALIZED 0x0004 + +/* Does the transaction have catalog changes? */ +#define rbtxn_has_catalog_changes(txn) \ +( \ + ((txn)->txn_flags & RBTXN_HAS_CATALOG_CHANGES) != 0 \ +) + +/* Is the transaction known as a subxact? */ +#define rbtxn_is_known_subxact(txn) \ +( \ + ((txn)->txn_flags & RBTXN_IS_SUBXACT) != 0 \ +) + +/* Has this transaction been spilled to disk? */ +#define rbtxn_is_serialized(txn) \ +( \ + ((txn)->txn_flags & RBTXN_IS_SERIALIZED) != 0 \ +) + typedef struct ReorderBufferTXN { - /* - * The transactions transaction id, can be a toplevel or sub xid. - */ - TransactionId xid; + /* See above */ + bits32 txn_flags; - /* did the TX have catalog changes */ - bool has_catalog_changes; + /* The transaction's transaction id, can be a toplevel or sub xid. */ + TransactionId xid; - /* Do we know this is a subxact? Xid of top-level txn if so */ - bool is_known_as_subxact; + /* Xid of top-level transaction, if known */ TransactionId toplevel_xid; /* @@ -202,7 +243,7 @@ typedef struct ReorderBufferTXN */ Snapshot base_snapshot; XLogRecPtr base_snapshot_lsn; - dlist_node base_snapshot_node; /* link in txns_by_base_snapshot_lsn */ + dlist_node base_snapshot_node; /* link in txns_by_base_snapshot_lsn */ /* * How many ReorderBufferChange's do we have in this txn. @@ -217,15 +258,6 @@ typedef struct ReorderBufferTXN */ uint64 nentries_mem; - /* - * Has this transaction been spilled to disk? It's not always possible to - * deduce that fact by comparing nentries with nentries_mem, because e.g. - * subtransactions of a large transaction might get serialized together - * with the parent - if they're restored to memory they'd have - * nentries_mem == nentries. - */ - bool serialized; - /* * List of ReorderBufferChange structs, including new Snapshots and new * CommandIds @@ -274,32 +306,39 @@ typedef struct ReorderBufferTXN */ dlist_node node; + /* + * Size of this transaction (changes currently in memory, in bytes). + */ + Size size; } ReorderBufferTXN; /* so we can define the callbacks used inside struct ReorderBuffer itself */ typedef struct ReorderBuffer ReorderBuffer; /* change callback signature */ -typedef void (*ReorderBufferApplyChangeCB) ( - ReorderBuffer *rb, +typedef void (*ReorderBufferApplyChangeCB) (ReorderBuffer *rb, ReorderBufferTXN *txn, Relation relation, ReorderBufferChange *change); +/* truncate callback signature */ +typedef void (*ReorderBufferApplyTruncateCB) (ReorderBuffer *rb, + ReorderBufferTXN *txn, + int nrelations, + Relation relations[], + ReorderBufferChange *change); + /* begin callback signature */ -typedef void (*ReorderBufferBeginCB) ( - ReorderBuffer *rb, +typedef void (*ReorderBufferBeginCB) (ReorderBuffer *rb, ReorderBufferTXN *txn); /* commit callback signature */ -typedef void (*ReorderBufferCommitCB) ( - ReorderBuffer *rb, +typedef void (*ReorderBufferCommitCB) (ReorderBuffer *rb, ReorderBufferTXN *txn, XLogRecPtr commit_lsn); /* message callback signature */ -typedef void (*ReorderBufferMessageCB) ( - ReorderBuffer *rb, +typedef void (*ReorderBufferMessageCB) (ReorderBuffer *rb, ReorderBufferTXN *txn, XLogRecPtr message_lsn, bool transactional, @@ -340,6 +379,7 @@ struct ReorderBuffer */ ReorderBufferBeginCB begin; ReorderBufferApplyChangeCB apply_change; + ReorderBufferApplyTruncateCB apply_truncate; ReorderBufferCommitCB commit; ReorderBufferMessageCB message; @@ -348,6 +388,11 @@ struct ReorderBuffer */ void *private_data; + /* + * Saved output plugin option + */ + bool output_rewrites; + /* * Private memory context. */ @@ -358,26 +403,16 @@ struct ReorderBuffer */ MemoryContext change_context; MemoryContext txn_context; - - /* - * Data structure slab cache. - * - * We allocate/deallocate some structures very frequently, to avoid bigger - * overhead we cache some unused ones here. - * - * The maximum number of cached entries is controlled by const variables - * on top of reorderbuffer.c - */ - - /* cached ReorderBufferTupleBufs */ - slist_head cached_tuplebufs; - Size nr_cached_tuplebufs; + MemoryContext tup_context; XLogRecPtr current_restart_decoding_lsn; /* buffer for disk<->memory conversions */ char *outbuf; Size outbufsize; + + /* memory accounting */ + Size size; }; @@ -389,31 +424,34 @@ void ReorderBufferReturnTupleBuf(ReorderBuffer *, ReorderBufferTupleBuf *tuple) ReorderBufferChange *ReorderBufferGetChange(ReorderBuffer *); void ReorderBufferReturnChange(ReorderBuffer *, ReorderBufferChange *); +Oid *ReorderBufferGetRelids(ReorderBuffer *, int nrelids); +void ReorderBufferReturnRelids(ReorderBuffer *, Oid *relids); + void ReorderBufferQueueChange(ReorderBuffer *, TransactionId, XLogRecPtr lsn, ReorderBufferChange *); -void ReorderBufferQueueMessage(ReorderBuffer *, TransactionId, Snapshot snapshot, XLogRecPtr lsn, - bool transactional, const char *prefix, - Size message_size, const char *message); -void ReorderBufferCommit(ReorderBuffer *, TransactionId, - XLogRecPtr commit_lsn, XLogRecPtr end_lsn, - TimestampTz commit_time, RepOriginId origin_id, XLogRecPtr origin_lsn); +void ReorderBufferQueueMessage(ReorderBuffer *, TransactionId, Snapshot snapshot, XLogRecPtr lsn, + bool transactional, const char *prefix, + Size message_size, const char *message); +void ReorderBufferCommit(ReorderBuffer *, TransactionId, + XLogRecPtr commit_lsn, XLogRecPtr end_lsn, + TimestampTz commit_time, RepOriginId origin_id, XLogRecPtr origin_lsn); void ReorderBufferAssignChild(ReorderBuffer *, TransactionId, TransactionId, XLogRecPtr commit_lsn); -void ReorderBufferCommitChild(ReorderBuffer *, TransactionId, TransactionId, - XLogRecPtr commit_lsn, XLogRecPtr end_lsn); +void ReorderBufferCommitChild(ReorderBuffer *, TransactionId, TransactionId, + XLogRecPtr commit_lsn, XLogRecPtr end_lsn); void ReorderBufferAbort(ReorderBuffer *, TransactionId, XLogRecPtr lsn); void ReorderBufferAbortOld(ReorderBuffer *, TransactionId xid); void ReorderBufferForget(ReorderBuffer *, TransactionId, XLogRecPtr lsn); void ReorderBufferSetBaseSnapshot(ReorderBuffer *, TransactionId, XLogRecPtr lsn, struct SnapshotData *snap); void ReorderBufferAddSnapshot(ReorderBuffer *, TransactionId, XLogRecPtr lsn, struct SnapshotData *snap); -void ReorderBufferAddNewCommandId(ReorderBuffer *, TransactionId, XLogRecPtr lsn, - CommandId cid); -void ReorderBufferAddNewTupleCids(ReorderBuffer *, TransactionId, XLogRecPtr lsn, - RelFileNode node, ItemPointerData pt, - CommandId cmin, CommandId cmax, CommandId combocid); -void ReorderBufferAddInvalidations(ReorderBuffer *, TransactionId, XLogRecPtr lsn, - Size nmsgs, SharedInvalidationMessage *msgs); -void ReorderBufferImmediateInvalidation(ReorderBuffer *, uint32 ninvalidations, - SharedInvalidationMessage *invalidations); +void ReorderBufferAddNewCommandId(ReorderBuffer *, TransactionId, XLogRecPtr lsn, + CommandId cid); +void ReorderBufferAddNewTupleCids(ReorderBuffer *, TransactionId, XLogRecPtr lsn, + RelFileNode node, ItemPointerData pt, + CommandId cmin, CommandId cmax, CommandId combocid); +void ReorderBufferAddInvalidations(ReorderBuffer *, TransactionId, XLogRecPtr lsn, + Size nmsgs, SharedInvalidationMessage *msgs); +void ReorderBufferImmediateInvalidation(ReorderBuffer *, uint32 ninvalidations, + SharedInvalidationMessage *invalidations); void ReorderBufferProcessXid(ReorderBuffer *, TransactionId xid, XLogRecPtr lsn); void ReorderBufferXidSetCatalogChanges(ReorderBuffer *, TransactionId xid, XLogRecPtr lsn); bool ReorderBufferXidHasCatalogChanges(ReorderBuffer *, TransactionId xid); diff --git a/parser/include/replication/slot.h b/parser/include/replication/slot.h index 847c86d6..31362585 100644 --- a/parser/include/replication/slot.h +++ b/parser/include/replication/slot.h @@ -2,14 +2,13 @@ * slot.h * Replication slot management. * - * Copyright (c) 2012-2017, PostgreSQL Global Development Group + * Copyright (c) 2012-2020, PostgreSQL Global Development Group * *------------------------------------------------------------------------- */ #ifndef SLOT_H #define SLOT_H -#include "fmgr.h" #include "access/xlog.h" #include "access/xlogreader.h" #include "storage/condition_variable.h" @@ -37,6 +36,14 @@ typedef enum ReplicationSlotPersistency RS_TEMPORARY } ReplicationSlotPersistency; +/* For ReplicationSlotAcquire, q.v. */ +typedef enum SlotAcquireBehavior +{ + SAB_Error, + SAB_Block, + SAB_Inquire +} SlotAcquireBehavior; + /* * On-Disk data of a replication slot, preserved across restarts. */ @@ -72,6 +79,9 @@ typedef struct ReplicationSlotPersistentData /* oldest LSN that might be required by this replication slot */ XLogRecPtr restart_lsn; + /* restart_lsn is copied here when the slot is invalidated */ + XLogRecPtr invalidated_at; + /* * Oldest LSN that the client has acked receipt for. This is used as the * start_lsn point in case the client doesn't specify one, and also as a @@ -86,6 +96,19 @@ typedef struct ReplicationSlotPersistentData /* * Shared memory state of a single replication slot. + * + * The in-memory data of replication slots follows a locking model based + * on two linked concepts: + * - A replication slot's in_use flag is switched when added or discarded using + * the LWLock ReplicationSlotControlLock, which needs to be hold in exclusive + * mode when updating the flag by the backend owning the slot and doing the + * operation, while readers (concurrent backends not owning the slot) need + * to hold it in shared mode when looking at replication slot data. + * - Individual fields are protected by mutex where only the backend owning + * the slot is authorized to update the fields from its own slot. The + * backend owning the slot does not need to take this lock when reading its + * own fields, while concurrent backends not owning this slot should take the + * lock when reading this slot's data. */ typedef struct ReplicationSlot { @@ -122,7 +145,7 @@ typedef struct ReplicationSlot /* is somebody performing io on this slot? */ LWLock io_in_progress_lock; - /* Condition variable signalled when active_pid changes */ + /* Condition variable signaled when active_pid changes */ ConditionVariable active_cv; /* all the remaining data is only used for logical slots */ @@ -168,11 +191,11 @@ extern void ReplicationSlotsShmemInit(void); /* management of individual slots */ extern void ReplicationSlotCreate(const char *name, bool db_specific, - ReplicationSlotPersistency p); + ReplicationSlotPersistency p); extern void ReplicationSlotPersist(void); extern void ReplicationSlotDrop(const char *name, bool nowait); -extern void ReplicationSlotAcquire(const char *name, bool nowait); +extern int ReplicationSlotAcquire(const char *name, SlotAcquireBehavior behavior); extern void ReplicationSlotRelease(void); extern void ReplicationSlotCleanup(void); extern void ReplicationSlotSave(void); @@ -186,6 +209,7 @@ extern void ReplicationSlotsComputeRequiredLSN(void); extern XLogRecPtr ReplicationSlotsComputeLogicalRestartLSN(void); extern bool ReplicationSlotsCountDBSlots(Oid dboid, int *nslots, int *nactive); extern void ReplicationSlotsDropDBSlots(Oid dboid); +extern void InvalidateObsoleteReplicationSlots(XLogSegNo oldestSegno); extern void StartupReplicationSlots(void); extern void CheckPointReplicationSlots(void); diff --git a/parser/include/replication/syncrep.h b/parser/include/replication/syncrep.h index 9fd9abda..9d286b66 100644 --- a/parser/include/replication/syncrep.h +++ b/parser/include/replication/syncrep.h @@ -3,7 +3,7 @@ * syncrep.h * Exports from replication/syncrep.c. * - * Portions Copyright (c) 2010-2017, PostgreSQL Global Development Group + * Portions Copyright (c) 2010-2020, PostgreSQL Global Development Group * * IDENTIFICATION * src/include/replication/syncrep.h @@ -94,9 +94,6 @@ extern void SyncRepReleaseWaiters(void); /* called by wal sender and user backend */ extern int SyncRepGetCandidateStandbys(SyncRepStandbyData **standbys); -/* obsolete, do not use in new code */ -extern List *SyncRepGetSyncStandbys(bool *am_sync); - /* called by checkpointer */ extern void SyncRepUpdateSyncStandbysDefined(void); diff --git a/parser/include/replication/walreceiver.h b/parser/include/replication/walreceiver.h index bf59c5a1..ac1acbb2 100644 --- a/parser/include/replication/walreceiver.h +++ b/parser/include/replication/walreceiver.h @@ -3,7 +3,7 @@ * walreceiver.h * Exports from replication/walreceiverfuncs.c. * - * Portions Copyright (c) 2010-2017, PostgreSQL Global Development Group + * Portions Copyright (c) 2010-2020, PostgreSQL Global Development Group * * src/include/replication/walreceiver.h * @@ -14,12 +14,13 @@ #include "access/xlog.h" #include "access/xlogdefs.h" -#include "fmgr.h" +#include "getaddrinfo.h" /* for NI_MAXHOST */ +#include "pgtime.h" +#include "port/atomics.h" #include "replication/logicalproto.h" #include "replication/walsender.h" #include "storage/latch.h" #include "storage/spin.h" -#include "pgtime.h" #include "utils/tuplestore.h" /* user-settable parameters */ @@ -73,19 +74,19 @@ typedef struct TimeLineID receiveStartTLI; /* - * receivedUpto-1 is the last byte position that has already been - * received, and receivedTLI is the timeline it came from. At the first - * startup of walreceiver, these are set to receiveStart and - * receiveStartTLI. After that, walreceiver updates these whenever it - * flushes the received WAL to disk. + * flushedUpto-1 is the last byte position that has already been received, + * and receivedTLI is the timeline it came from. At the first startup of + * walreceiver, these are set to receiveStart and receiveStartTLI. After + * that, walreceiver updates these whenever it flushes the received WAL to + * disk. */ - XLogRecPtr receivedUpto; + XLogRecPtr flushedUpto; TimeLineID receivedTLI; /* * latestChunkStart is the starting byte position of the current "batch" * of received WAL. It's actually the same as the previous value of - * receivedUpto before the last flush to disk. Startup process can use + * flushedUpto before the last flush to disk. Startup process can use * this to detect whether it's keeping up or not. */ XLogRecPtr latestChunkStart; @@ -108,23 +109,27 @@ typedef struct */ char conninfo[MAXCONNINFO]; + /* + * Host name (this can be a host name, an IP address, or a directory path) + * and port number of the active replication connection. + */ + char sender_host[NI_MAXHOST]; + int sender_port; + /* * replication slot name; is also used for walreceiver to connect with the * primary */ char slotname[NAMEDATALEN]; - /* set true once conninfo is ready to display (obfuscated pwds etc) */ - bool ready_to_display; - - slock_t mutex; /* locks shared variables shown above */ - /* - * force walreceiver reply? This doesn't need to be locked; memory - * barriers for ordering are sufficient. But we do need atomic fetch and - * store semantics, so use sig_atomic_t. + * If it's a temporary replication slot, it needs to be recreated when + * connecting. */ - sig_atomic_t force_reply; /* used as a bool */ + bool is_temp_slot; + + /* set true once conninfo is ready to display (obfuscated pwds etc) */ + bool ready_to_display; /* * Latch used by startup process to wake up walreceiver after telling it @@ -134,6 +139,23 @@ typedef struct * normally mapped to procLatch when walreceiver is running. */ Latch *latch; + + slock_t mutex; /* locks shared variables shown above */ + + /* + * Like flushedUpto, but advanced after writing and before flushing, + * without the need to acquire the spin lock. Data can be read by another + * process up to this point, but shouldn't be used for data integrity + * purposes. + */ + pg_atomic_uint64 writtenUpto; + + /* + * force walreceiver reply? This doesn't need to be locked; memory + * barriers for ordering are sufficient. But we do need atomic fetch and + * store semantics, so use sig_atomic_t. + */ + sig_atomic_t force_reply; /* used as a bool */ } WalRcvData; extern WalRcvData *WalRcv; @@ -180,7 +202,7 @@ typedef enum } WalRcvExecStatus; /* - * Return value for walrcv_query, returns the status of the execution and + * Return value for walrcv_exec, returns the status of the execution and * tuples if any. */ typedef struct WalRcvExecResult @@ -197,9 +219,12 @@ typedef WalReceiverConn *(*walrcv_connect_fn) (const char *conninfo, bool logica char **err); typedef void (*walrcv_check_conninfo_fn) (const char *conninfo); typedef char *(*walrcv_get_conninfo_fn) (WalReceiverConn *conn); +typedef void (*walrcv_get_senderinfo_fn) (WalReceiverConn *conn, + char **sender_host, + int *sender_port); typedef char *(*walrcv_identify_system_fn) (WalReceiverConn *conn, - TimeLineID *primary_tli, - int *server_version); + TimeLineID *primary_tli); +typedef int (*walrcv_server_version_fn) (WalReceiverConn *conn); typedef void (*walrcv_readtimelinehistoryfile_fn) (WalReceiverConn *conn, TimeLineID tli, char **filename, @@ -216,6 +241,7 @@ typedef char *(*walrcv_create_slot_fn) (WalReceiverConn *conn, const char *slotname, bool temporary, CRSSnapshotAction snapshot_action, XLogRecPtr *lsn); +typedef pid_t (*walrcv_get_backend_pid_fn) (WalReceiverConn *conn); typedef WalRcvExecResult *(*walrcv_exec_fn) (WalReceiverConn *conn, const char *query, const int nRetTypes, @@ -227,13 +253,16 @@ typedef struct WalReceiverFunctionsType walrcv_connect_fn walrcv_connect; walrcv_check_conninfo_fn walrcv_check_conninfo; walrcv_get_conninfo_fn walrcv_get_conninfo; + walrcv_get_senderinfo_fn walrcv_get_senderinfo; walrcv_identify_system_fn walrcv_identify_system; + walrcv_server_version_fn walrcv_server_version; walrcv_readtimelinehistoryfile_fn walrcv_readtimelinehistoryfile; walrcv_startstreaming_fn walrcv_startstreaming; walrcv_endstreaming_fn walrcv_endstreaming; walrcv_receive_fn walrcv_receive; walrcv_send_fn walrcv_send; walrcv_create_slot_fn walrcv_create_slot; + walrcv_get_backend_pid_fn walrcv_get_backend_pid; walrcv_exec_fn walrcv_exec; walrcv_disconnect_fn walrcv_disconnect; } WalReceiverFunctionsType; @@ -246,8 +275,12 @@ extern PGDLLIMPORT WalReceiverFunctionsType *WalReceiverFunctions; WalReceiverFunctions->walrcv_check_conninfo(conninfo) #define walrcv_get_conninfo(conn) \ WalReceiverFunctions->walrcv_get_conninfo(conn) -#define walrcv_identify_system(conn, primary_tli, server_version) \ - WalReceiverFunctions->walrcv_identify_system(conn, primary_tli, server_version) +#define walrcv_get_senderinfo(conn, sender_host, sender_port) \ + WalReceiverFunctions->walrcv_get_senderinfo(conn, sender_host, sender_port) +#define walrcv_identify_system(conn, primary_tli) \ + WalReceiverFunctions->walrcv_identify_system(conn, primary_tli) +#define walrcv_server_version(conn) \ + WalReceiverFunctions->walrcv_server_version(conn) #define walrcv_readtimelinehistoryfile(conn, tli, filename, content, size) \ WalReceiverFunctions->walrcv_readtimelinehistoryfile(conn, tli, filename, content, size) #define walrcv_startstreaming(conn, options) \ @@ -260,6 +293,8 @@ extern PGDLLIMPORT WalReceiverFunctionsType *WalReceiverFunctions; WalReceiverFunctions->walrcv_send(conn, buffer, nbytes) #define walrcv_create_slot(conn, slotname, temporary, snapshot_action, lsn) \ WalReceiverFunctions->walrcv_create_slot(conn, slotname, temporary, snapshot_action, lsn) +#define walrcv_get_backend_pid(conn) \ + WalReceiverFunctions->walrcv_get_backend_pid(conn) #define walrcv_exec(conn, exec, nRetTypes, retTypes) \ WalReceiverFunctions->walrcv_exec(conn, exec, nRetTypes, retTypes) #define walrcv_disconnect(conn) \ @@ -294,8 +329,10 @@ extern void ShutdownWalRcv(void); extern bool WalRcvStreaming(void); extern bool WalRcvRunning(void); extern void RequestXLogStreaming(TimeLineID tli, XLogRecPtr recptr, - const char *conninfo, const char *slotname); -extern XLogRecPtr GetWalRcvWriteRecPtr(XLogRecPtr *latestChunkStart, TimeLineID *receiveTLI); + const char *conninfo, const char *slotname, + bool create_temp_slot); +extern XLogRecPtr GetWalRcvFlushRecPtr(XLogRecPtr *latestChunkStart, TimeLineID *receiveTLI); +extern XLogRecPtr GetWalRcvWriteRecPtr(void); extern int GetReplicationApplyDelay(void); extern int GetReplicationTransferLatency(void); extern void WalRcvForceReply(void); diff --git a/parser/include/replication/walsender.h b/parser/include/replication/walsender.h index 1f20db82..40d81b87 100644 --- a/parser/include/replication/walsender.h +++ b/parser/include/replication/walsender.h @@ -3,7 +3,7 @@ * walsender.h * Exports from replication/walsender.c. * - * Portions Copyright (c) 2010-2017, PostgreSQL Global Development Group + * Portions Copyright (c) 2010-2020, PostgreSQL Global Development Group * * src/include/replication/walsender.h * @@ -14,8 +14,6 @@ #include -#include "fmgr.h" - /* * What to do with a snapshot in create replication slot command. */ @@ -40,6 +38,7 @@ extern bool log_replication_commands; extern void InitWalSender(void); extern bool exec_replication_command(const char *query_string); extern void WalSndErrorCleanup(void); +extern void WalSndResourceCleanup(bool isCommit); extern void WalSndSignals(void); extern Size WalSndShmemSize(void); extern void WalSndShmemInit(void); diff --git a/parser/include/rewrite/prs2lock.h b/parser/include/rewrite/prs2lock.h index 419d140b..84ee6a58 100644 --- a/parser/include/rewrite/prs2lock.h +++ b/parser/include/rewrite/prs2lock.h @@ -3,7 +3,7 @@ * prs2lock.h * data structures for POSTGRES Rule System II (rewrite rules only) * - * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/rewrite/prs2lock.h @@ -43,4 +43,4 @@ typedef struct RuleLock RewriteRule **rules; } RuleLock; -#endif /* REWRITE_H */ +#endif /* PRS2LOCK_H */ diff --git a/parser/include/rewrite/rewriteHandler.h b/parser/include/rewrite/rewriteHandler.h index 7f2fbccb..a18211f4 100644 --- a/parser/include/rewrite/rewriteHandler.h +++ b/parser/include/rewrite/rewriteHandler.h @@ -4,7 +4,7 @@ * External interface to query rewriter. * * - * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/rewrite/rewriteHandler.h @@ -14,24 +14,27 @@ #ifndef REWRITEHANDLER_H #define REWRITEHANDLER_H -#include "utils/relcache.h" #include "nodes/parsenodes.h" +#include "utils/relcache.h" extern List *QueryRewrite(Query *parsetree); extern void AcquireRewriteLocks(Query *parsetree, - bool forExecute, - bool forUpdatePushedDown); + bool forExecute, + bool forUpdatePushedDown); extern Node *build_column_default(Relation rel, int attrno); extern void rewriteTargetListUD(Query *parsetree, RangeTblEntry *target_rte, - Relation target_relation); + Relation target_relation); + +extern void fill_extraUpdatedCols(RangeTblEntry *target_rte, + Relation target_relation); extern Query *get_view_query(Relation view); extern const char *view_query_is_auto_updatable(Query *viewquery, - bool check_cols); -extern int relation_is_updatable(Oid reloid, - List *outer_reloids, - bool include_triggers, - Bitmapset *include_cols); + bool check_cols); +extern int relation_is_updatable(Oid reloid, + List *outer_reloids, + bool include_triggers, + Bitmapset *include_cols); #endif /* REWRITEHANDLER_H */ diff --git a/parser/include/rewrite/rewriteManip.h b/parser/include/rewrite/rewriteManip.h index f0a7a8b2..5ece8161 100644 --- a/parser/include/rewrite/rewriteManip.h +++ b/parser/include/rewrite/rewriteManip.h @@ -4,7 +4,7 @@ * Querytree manipulation subroutines for query rewriter. * * - * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/rewrite/rewriteManip.h @@ -16,6 +16,8 @@ #include "nodes/parsenodes.h" +struct AttrMap; /* avoid including attmap.h here */ + typedef struct replace_rte_variables_context replace_rte_variables_context; @@ -41,14 +43,14 @@ typedef enum ReplaceVarsNoMatchOption extern void OffsetVarNodes(Node *node, int offset, int sublevels_up); extern void ChangeVarNodes(Node *node, int old_varno, int new_varno, - int sublevels_up); + int sublevels_up); extern void IncrementVarSublevelsUp(Node *node, int delta_sublevels_up, - int min_sublevels_up); + int min_sublevels_up); extern void IncrementVarSublevelsUp_rtable(List *rtable, - int delta_sublevels_up, int min_sublevels_up); + int delta_sublevels_up, int min_sublevels_up); extern bool rangeTableEntry_used(Node *node, int rt_index, - int sublevels_up); + int sublevels_up); extern Query *getInsertSelectQuery(Query *parsetree, Query ***subquery_ptr); @@ -62,24 +64,24 @@ extern int locate_windowfunc(Node *node); extern bool checkExprHasSubLink(Node *node); extern Node *replace_rte_variables(Node *node, - int target_varno, int sublevels_up, - replace_rte_variables_callback callback, - void *callback_arg, - bool *outer_hasSubLinks); + int target_varno, int sublevels_up, + replace_rte_variables_callback callback, + void *callback_arg, + bool *outer_hasSubLinks); extern Node *replace_rte_variables_mutator(Node *node, - replace_rte_variables_context *context); + replace_rte_variables_context *context); extern Node *map_variable_attnos(Node *node, - int target_varno, int sublevels_up, - const AttrNumber *attno_map, int map_length, - Oid to_rowtype, bool *found_whole_row); + int target_varno, int sublevels_up, + const struct AttrMap *attno_map, + Oid to_rowtype, bool *found_whole_row); extern Node *ReplaceVarsFromTargetList(Node *node, - int target_varno, int sublevels_up, - RangeTblEntry *target_rte, - List *targetlist, - ReplaceVarsNoMatchOption nomatch_option, - int nomatch_varno, - bool *outer_hasSubLinks); + int target_varno, int sublevels_up, + RangeTblEntry *target_rte, + List *targetlist, + ReplaceVarsNoMatchOption nomatch_option, + int nomatch_varno, + bool *outer_hasSubLinks); #endif /* REWRITEMANIP_H */ diff --git a/parser/include/rewrite/rewriteSupport.h b/parser/include/rewrite/rewriteSupport.h index 60800aae..f58f356c 100644 --- a/parser/include/rewrite/rewriteSupport.h +++ b/parser/include/rewrite/rewriteSupport.h @@ -4,7 +4,7 @@ * * * - * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/rewrite/rewriteSupport.h diff --git a/parser/include/sha1.h b/parser/include/sha1.h deleted file mode 100644 index 4300694a..00000000 --- a/parser/include/sha1.h +++ /dev/null @@ -1,75 +0,0 @@ -/* contrib/pgcrypto/sha1.h */ -/* $KAME: sha1.h,v 1.4 2000/02/22 14:01:18 itojun Exp $ */ - -/* - * Copyright (C) 1995, 1996, 1997, and 1998 WIDE Project. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the project nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - */ -/* - * FIPS pub 180-1: Secure Hash Algorithm (SHA-1) - * based on: http://www.itl.nist.gov/fipspubs/fip180-1.htm - * implemented by Jun-ichiro itojun Itoh - */ - -#ifndef _NETINET6_SHA1_H_ -#define _NETINET6_SHA1_H_ - -struct sha1_ctxt -{ - union - { - uint8 b8[20]; - uint32 b32[5]; - } h; - union - { - uint8 b8[8]; - uint64 b64[1]; - } c; - union - { - uint8 b8[64]; - uint32 b32[16]; - } m; - uint8 count; -}; - -extern void sha1_init(struct sha1_ctxt *); -extern void sha1_pad(struct sha1_ctxt *); -extern void sha1_loop(struct sha1_ctxt *, const uint8 *, size_t); -extern void sha1_result(struct sha1_ctxt *, uint8 *); - -/* compatibility with other SHA1 source codes */ -typedef struct sha1_ctxt SHA1_CTX; - -#define SHA1Init(x) sha1_init((x)) -#define SHA1Update(x, y, z) sha1_loop((x), (y), (z)) -#define SHA1Final(x, y) sha1_result((y), (x)) - -#define SHA1_RESULTLEN (160/8) - -#endif /* _NETINET6_SHA1_H_ */ diff --git a/parser/include/storage/backendid.h b/parser/include/storage/backendid.h index bf31ba4f..0c776a3e 100644 --- a/parser/include/storage/backendid.h +++ b/parser/include/storage/backendid.h @@ -4,7 +4,7 @@ * POSTGRES backend id communication definitions * * - * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/storage/backendid.h diff --git a/parser/include/storage/block.h b/parser/include/storage/block.h index 33840798..d73e3930 100644 --- a/parser/include/storage/block.h +++ b/parser/include/storage/block.h @@ -4,7 +4,7 @@ * POSTGRES disk block definitions. * * - * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/storage/block.h @@ -22,7 +22,7 @@ * contains exactly one disk block). the blocks are numbered * sequentially, 0 to 0xFFFFFFFE. * - * InvalidBlockNumber is the same thing as P_NEW in buf.h. + * InvalidBlockNumber is the same thing as P_NEW in bufmgr.h. * * the access methods, the buffer manager and the storage manager are * more or less the only pieces of code that should be accessing disk diff --git a/parser/include/storage/buf.h b/parser/include/storage/buf.h index 054f482b..dde87f8f 100644 --- a/parser/include/storage/buf.h +++ b/parser/include/storage/buf.h @@ -4,7 +4,7 @@ * Basic buffer manager data types. * * - * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/storage/buf.h diff --git a/parser/include/storage/bufmgr.h b/parser/include/storage/bufmgr.h index 98b63fc5..ee91b8fa 100644 --- a/parser/include/storage/bufmgr.h +++ b/parser/include/storage/bufmgr.h @@ -4,7 +4,7 @@ * POSTGRES buffer manager definitions. * * - * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/storage/bufmgr.h @@ -20,7 +20,6 @@ #include "storage/relfilenode.h" #include "utils/relcache.h" #include "utils/snapmgr.h" -#include "utils/tqual.h" typedef void *Block; @@ -47,9 +46,21 @@ typedef enum * replay; otherwise same as RBM_NORMAL */ } ReadBufferMode; +/* + * Type returned by PrefetchBuffer(). + */ +typedef struct PrefetchBufferResult +{ + Buffer recent_buffer; /* If valid, a hit (recheck needed!) */ + bool initiated_io; /* If true, a miss resulting in async I/O */ +} PrefetchBufferResult; + /* forward declared, to avoid having to expose buf_internals.h here */ struct WritebackContext; +/* forward declared, to avoid including smgr.h here */ +struct SMgrRelationData; + /* in globals.c ... this duplicates miscadmin.h */ extern PGDLLIMPORT int NBuffers; @@ -58,7 +69,8 @@ extern bool zero_damaged_pages; extern int bgwriter_lru_maxpages; extern double bgwriter_lru_multiplier; extern bool track_io_timing; -extern int target_prefetch_pages; +extern int effective_io_concurrency; +extern int maintenance_io_concurrency; extern int checkpoint_flush_after; extern int backend_flush_after; @@ -67,9 +79,6 @@ extern int bgwriter_flush_after; /* in buf_init.c */ extern PGDLLIMPORT char *BufferBlocks; -/* in guc.c */ -extern int effective_io_concurrency; - /* in localbuf.c */ extern PGDLLIMPORT int NLocBuffer; extern PGDLLIMPORT Block *LocalBufferBlockPointers; @@ -162,22 +171,24 @@ extern PGDLLIMPORT int32 *LocalRefCount; /* * prototypes for functions in bufmgr.c */ -extern bool ComputeIoConcurrency(int io_concurrency, double *target); -extern void PrefetchBuffer(Relation reln, ForkNumber forkNum, - BlockNumber blockNum); +extern PrefetchBufferResult PrefetchSharedBuffer(struct SMgrRelationData *smgr_reln, + ForkNumber forkNum, + BlockNumber blockNum); +extern PrefetchBufferResult PrefetchBuffer(Relation reln, ForkNumber forkNum, + BlockNumber blockNum); extern Buffer ReadBuffer(Relation reln, BlockNumber blockNum); extern Buffer ReadBufferExtended(Relation reln, ForkNumber forkNum, - BlockNumber blockNum, ReadBufferMode mode, - BufferAccessStrategy strategy); + BlockNumber blockNum, ReadBufferMode mode, + BufferAccessStrategy strategy); extern Buffer ReadBufferWithoutRelcache(RelFileNode rnode, - ForkNumber forkNum, BlockNumber blockNum, - ReadBufferMode mode, BufferAccessStrategy strategy); + ForkNumber forkNum, BlockNumber blockNum, + ReadBufferMode mode, BufferAccessStrategy strategy); extern void ReleaseBuffer(Buffer buffer); extern void UnlockReleaseBuffer(Buffer buffer); extern void MarkBufferDirty(Buffer buffer); extern void IncrBufferRefCount(Buffer buffer); extern Buffer ReleaseAndReadBuffer(Buffer buffer, Relation relation, - BlockNumber blockNum); + BlockNumber blockNum); extern void InitBufferPool(void); extern void InitBufferPoolAccess(void); @@ -187,12 +198,13 @@ extern void PrintBufferLeakWarning(Buffer buffer); extern void CheckPointBuffers(int flags); extern BlockNumber BufferGetBlockNumber(Buffer buffer); extern BlockNumber RelationGetNumberOfBlocksInFork(Relation relation, - ForkNumber forkNum); + ForkNumber forkNum); extern void FlushOneBuffer(Buffer buffer); extern void FlushRelationBuffers(Relation rel); +extern void FlushRelationsAllBuffers(struct SMgrRelationData **smgrs, int nrels); extern void FlushDatabaseBuffers(Oid dbid); -extern void DropRelFileNodeBuffers(RelFileNodeBackend rnode, - ForkNumber forkNum, BlockNumber firstDelBlock); +extern void DropRelFileNodeBuffers(RelFileNodeBackend rnode, ForkNumber *forkNum, + int nforks, BlockNumber *firstDelBlock); extern void DropRelFileNodesAllBuffers(RelFileNodeBackend *rnodes, int nnodes); extern void DropDatabaseBuffers(Oid dbid); @@ -207,7 +219,7 @@ extern void PrintPinnedBufs(void); #endif extern Size BufferShmemSize(void); extern void BufferGetTag(Buffer buffer, RelFileNode *rnode, - ForkNumber *forknum, BlockNumber *blknum); + ForkNumber *forknum, BlockNumber *blknum); extern void MarkBufferDirtyHint(Buffer buffer, bool buffer_std); @@ -268,8 +280,8 @@ TestForOldSnapshot(Snapshot snapshot, Relation relation, Page page) if (old_snapshot_threshold >= 0 && (snapshot) != NULL - && ((snapshot)->satisfies == HeapTupleSatisfiesMVCC - || (snapshot)->satisfies == HeapTupleSatisfiesToast) + && ((snapshot)->snapshot_type == SNAPSHOT_MVCC + || (snapshot)->snapshot_type == SNAPSHOT_TOAST) && !XLogRecPtrIsInvalid((snapshot)->lsn) && PageGetLSN(page) > (snapshot)->lsn) TestForOldSnapshot_impl(snapshot, relation); diff --git a/parser/include/storage/bufpage.h b/parser/include/storage/bufpage.h index 50c72a3c..4d0ae4b3 100644 --- a/parser/include/storage/bufpage.h +++ b/parser/include/storage/bufpage.h @@ -4,7 +4,7 @@ * Standard POSTGRES buffer page definitions. * * - * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/storage/bufpage.h @@ -53,14 +53,18 @@ * * NOTES: * - * linp1..N form an ItemId array. ItemPointers point into this array - * rather than pointing directly to a tuple. Note that OffsetNumbers + * linp1..N form an ItemId (line pointer) array. ItemPointers point + * to a physical block number and a logical offset (line pointer + * number) within that block/page. Note that OffsetNumbers * conventionally start at 1, not 0. * - * tuple1..N are added "backwards" on the page. because a tuple's - * ItemPointer points to its ItemId entry rather than its actual + * tuple1..N are added "backwards" on the page. Since an ItemPointer + * offset is used to access an ItemId entry rather than an actual * byte-offset position, tuples can be physically shuffled on a page - * whenever the need arises. + * whenever the need arises. This indirection also keeps crash recovery + * relatively simple, because the low-level details of page space + * management can be controlled by standard buffer page code during + * logging, and during recovery. * * AM-generic per-page information is kept in PageHeaderData. * @@ -233,7 +237,7 @@ typedef PageHeaderData *PageHeader; /* * PageGetContents - * To be used in case the page does not contain item pointers. + * To be used in cases where the page does not contain line pointers. * * Note: prior to 8.3 this was not guaranteed to yield a MAXALIGN'd result. * Now it is. Beware of old code that might think the offset to the contents @@ -302,7 +306,7 @@ typedef PageHeaderData *PageHeader; * This is intended to catch use of the pointer before page initialization. * It is implemented as a function due to the limitations of the MSVC * compiler, which choked on doing all these tests within another macro. We - * return true so that MacroAssert() can be used while still getting the + * return true so that AssertMacro() can be used while still getting the * specifics from the macro failure within this function. */ static inline bool @@ -406,18 +410,35 @@ do { \ * extern declarations * ---------------------------------------------------------------- */ + +/* flags for PageAddItemExtended() */ #define PAI_OVERWRITE (1 << 0) #define PAI_IS_HEAP (1 << 1) +/* flags for PageIsVerifiedExtended() */ +#define PIV_LOG_WARNING (1 << 0) +#define PIV_REPORT_STAT (1 << 1) + #define PageAddItem(page, item, size, offsetNumber, overwrite, is_heap) \ PageAddItemExtended(page, item, size, offsetNumber, \ ((overwrite) ? PAI_OVERWRITE : 0) | \ ((is_heap) ? PAI_IS_HEAP : 0)) +/* + * Check that BLCKSZ is a multiple of sizeof(size_t). In + * PageIsVerifiedExtended(), it is much faster to check if a page is + * full of zeroes using the native word size. Note that this assertion + * is kept within a header to make sure that StaticAssertDecl() works + * across various combinations of platforms and compilers. + */ +StaticAssertDecl(BLCKSZ == ((BLCKSZ / sizeof(size_t)) * sizeof(size_t)), + "BLCKSZ has to be a multiple of sizeof(size_t)"); + extern void PageInit(Page page, Size pageSize, Size specialSize); extern bool PageIsVerified(Page page, BlockNumber blkno); +extern bool PageIsVerifiedExtended(Page page, BlockNumber blkno, int flags); extern OffsetNumber PageAddItemExtended(Page page, Item item, Size size, - OffsetNumber offsetNumber, int flags); + OffsetNumber offsetNumber, int flags); extern Page PageGetTempPage(Page page); extern Page PageGetTempPageCopy(Page page); extern Page PageGetTempPageCopySpecial(Page page); @@ -431,7 +452,7 @@ extern void PageIndexTupleDelete(Page page, OffsetNumber offset); extern void PageIndexMultiDelete(Page page, OffsetNumber *itemnos, int nitems); extern void PageIndexTupleDeleteNoCompact(Page page, OffsetNumber offset); extern bool PageIndexTupleOverwrite(Page page, OffsetNumber offnum, - Item newtup, Size newsize); + Item newtup, Size newsize); extern char *PageSetChecksumCopy(Page page, BlockNumber blkno); extern void PageSetChecksumInplace(Page page, BlockNumber blkno); diff --git a/parser/include/storage/condition_variable.h b/parser/include/storage/condition_variable.h index f77c0b22..c2be198f 100644 --- a/parser/include/storage/condition_variable.h +++ b/parser/include/storage/condition_variable.h @@ -9,10 +9,10 @@ * on the condition variable; and (3) broadcast, which wakes up every * process sleeping on the condition variable. In our implementation, * condition variables put a process into an interruptible sleep (so it - * can be cancelled prior to the fulfillment of the condition) and do not + * can be canceled prior to the fulfillment of the condition) and do not * use pointers internally (so that they are safe to use within DSMs). * - * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/storage/condition_variable.h @@ -22,38 +22,41 @@ #ifndef CONDITION_VARIABLE_H #define CONDITION_VARIABLE_H -#include "storage/s_lock.h" #include "storage/proclist_types.h" +#include "storage/s_lock.h" typedef struct { - slock_t mutex; - proclist_head wakeup; + slock_t mutex; /* spinlock protecting the wakeup list */ + proclist_head wakeup; /* list of wake-able processes */ } ConditionVariable; /* Initialize a condition variable. */ -extern void ConditionVariableInit(ConditionVariable *); +extern void ConditionVariableInit(ConditionVariable *cv); /* * To sleep on a condition variable, a process should use a loop which first * checks the condition, exiting the loop if it is met, and then calls * ConditionVariableSleep. Spurious wakeups are possible, but should be - * infrequent. After exiting the loop, ConditionVariableCancelSleep should + * infrequent. After exiting the loop, ConditionVariableCancelSleep must * be called to ensure that the process is no longer in the wait list for * the condition variable. */ -extern void ConditionVariableSleep(ConditionVariable *, uint32 wait_event_info); +extern void ConditionVariableSleep(ConditionVariable *cv, uint32 wait_event_info); +extern bool ConditionVariableTimedSleep(ConditionVariable *cv, long timeout, + uint32 wait_event_info); extern void ConditionVariableCancelSleep(void); /* - * The use of this function is optional and not necessary for correctness; - * for efficiency, it should be called prior entering the loop described above - * if it is thought that the condition is unlikely to hold immediately. + * Optionally, ConditionVariablePrepareToSleep can be called before entering + * the test-and-sleep loop described above. Doing so is more efficient if + * at least one sleep is needed, whereas not doing so is more efficient when + * no sleep is needed because the test condition is true the first time. */ -extern void ConditionVariablePrepareToSleep(ConditionVariable *); +extern void ConditionVariablePrepareToSleep(ConditionVariable *cv); /* Wake up a single waiter (via signal) or all waiters (via broadcast). */ -extern bool ConditionVariableSignal(ConditionVariable *); -extern int ConditionVariableBroadcast(ConditionVariable *); +extern void ConditionVariableSignal(ConditionVariable *cv); +extern void ConditionVariableBroadcast(ConditionVariable *cv); #endif /* CONDITION_VARIABLE_H */ diff --git a/parser/include/storage/dsm.h b/parser/include/storage/dsm.h index 31b1f4da..408c0543 100644 --- a/parser/include/storage/dsm.h +++ b/parser/include/storage/dsm.h @@ -3,7 +3,7 @@ * dsm.h * manage dynamic shared memory segments * - * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/storage/dsm.h @@ -33,11 +33,9 @@ extern void dsm_detach_all(void); extern void dsm_set_control_handle(dsm_handle h); #endif -/* Functions that create, update, or remove mappings. */ +/* Functions that create or remove mappings. */ extern dsm_segment *dsm_create(Size size, int flags); extern dsm_segment *dsm_attach(dsm_handle h); -extern void *dsm_resize(dsm_segment *seg, Size size); -extern void *dsm_remap(dsm_segment *seg); extern void dsm_detach(dsm_segment *seg); /* Resource management functions. */ @@ -55,9 +53,9 @@ extern dsm_handle dsm_segment_handle(dsm_segment *seg); /* Cleanup hooks. */ typedef void (*on_dsm_detach_callback) (dsm_segment *, Datum arg); extern void on_dsm_detach(dsm_segment *seg, - on_dsm_detach_callback function, Datum arg); + on_dsm_detach_callback function, Datum arg); extern void cancel_on_dsm_detach(dsm_segment *seg, - on_dsm_detach_callback function, Datum arg); + on_dsm_detach_callback function, Datum arg); extern void reset_on_dsm_detach(void); #endif /* DSM_H */ diff --git a/parser/include/storage/dsm_impl.h b/parser/include/storage/dsm_impl.h index c2060431..562cb781 100644 --- a/parser/include/storage/dsm_impl.h +++ b/parser/include/storage/dsm_impl.h @@ -3,7 +3,7 @@ * dsm_impl.h * low-level dynamic shared memory primitives * - * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/storage/dsm_impl.h @@ -14,7 +14,6 @@ #define DSM_IMPL_H /* Dynamic shared memory implementations. */ -#define DSM_IMPL_NONE 0 #define DSM_IMPL_POSIX 1 #define DSM_IMPL_SYSV 2 #define DSM_IMPL_WINDOWS 3 @@ -60,21 +59,17 @@ typedef enum DSM_OP_CREATE, DSM_OP_ATTACH, DSM_OP_DETACH, - DSM_OP_RESIZE, DSM_OP_DESTROY } dsm_op; /* Create, attach to, detach from, resize, or destroy a segment. */ extern bool dsm_impl_op(dsm_op op, dsm_handle handle, Size request_size, - void **impl_private, void **mapped_address, Size *mapped_size, - int elevel); - -/* Some implementations cannot resize segments. Can this one? */ -extern bool dsm_impl_can_resize(void); + void **impl_private, void **mapped_address, Size *mapped_size, + int elevel); /* Implementation-dependent actions required to keep segment until shutdown. */ extern void dsm_impl_pin_segment(dsm_handle handle, void *impl_private, - void **impl_private_pm_handle); + void **impl_private_pm_handle); extern void dsm_impl_unpin_segment(dsm_handle handle, void **impl_private); #endif /* DSM_IMPL_H */ diff --git a/parser/include/storage/fd.h b/parser/include/storage/fd.h index 3043af31..8cd125d7 100644 --- a/parser/include/storage/fd.h +++ b/parser/include/storage/fd.h @@ -4,7 +4,7 @@ * Virtual file descriptor definitions. * * - * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/storage/fd.h @@ -15,14 +15,14 @@ /* * calls: * - * File {Close, Read, Write, Seek, Tell, Sync} + * File {Close, Read, Write, Size, Sync} * {Path Name Open, Allocate, Free} File * * These are NOT JUST RENAMINGS OF THE UNIX ROUTINES. * Use them for all file activity... * * File fd; - * fd = PathNameOpenFile("foo", O_RDONLY, 0600); + * fd = PathNameOpenFile("foo", O_RDONLY); * * AllocateFile(); * FreeFile(); @@ -33,8 +33,12 @@ * no way for them to share kernel file descriptors with other files. * * Likewise, use AllocateDir/FreeDir, not opendir/closedir, to allocate - * open directories (DIR*), and OpenTransientFile/CloseTransient File for an + * open directories (DIR*), and OpenTransientFile/CloseTransientFile for an * unbuffered file descriptor. + * + * If you really can't use any of the above, at least call AcquireExternalFD + * or ReserveExternalFD to report any file descriptors that are held for any + * length of time. Failure to do so risks unnecessary EMFILE errors. */ #ifndef FD_H #define FD_H @@ -42,12 +46,6 @@ #include -/* - * FileSeek uses the standard UNIX lseek(2) flags. - */ - -typedef char *FileName; - typedef int File; @@ -60,26 +58,47 @@ extern PGDLLIMPORT bool data_sync_retry; */ extern int max_safe_fds; +/* + * On Windows, we have to interpret EACCES as possibly meaning the same as + * ENOENT, because if a file is unlinked-but-not-yet-gone on that platform, + * that's what you get. Ugh. This code is designed so that we don't + * actually believe these cases are okay without further evidence (namely, + * a pending fsync request getting canceled ... see ProcessSyncRequests). + */ +#ifndef WIN32 +#define FILE_POSSIBLY_DELETED(err) ((err) == ENOENT) +#else +#define FILE_POSSIBLY_DELETED(err) ((err) == ENOENT || (err) == EACCES) +#endif /* * prototypes for functions in fd.c */ /* Operations on virtual Files --- equivalent to Unix kernel file ops */ -extern File PathNameOpenFile(FileName fileName, int fileFlags, int fileMode); +extern File PathNameOpenFile(const char *fileName, int fileFlags); +extern File PathNameOpenFilePerm(const char *fileName, int fileFlags, mode_t fileMode); extern File OpenTemporaryFile(bool interXact); extern void FileClose(File file); extern int FilePrefetch(File file, off_t offset, int amount, uint32 wait_event_info); -extern int FileRead(File file, char *buffer, int amount, uint32 wait_event_info); -extern int FileWrite(File file, char *buffer, int amount, uint32 wait_event_info); +extern int FileRead(File file, char *buffer, int amount, off_t offset, uint32 wait_event_info); +extern int FileWrite(File file, char *buffer, int amount, off_t offset, uint32 wait_event_info); extern int FileSync(File file, uint32 wait_event_info); -extern off_t FileSeek(File file, off_t offset, int whence); +extern off_t FileSize(File file); extern int FileTruncate(File file, off_t offset, uint32 wait_event_info); extern void FileWriteback(File file, off_t offset, off_t nbytes, uint32 wait_event_info); extern char *FilePathName(File file); extern int FileGetRawDesc(File file); extern int FileGetRawFlags(File file); -extern int FileGetRawMode(File file); +extern mode_t FileGetRawMode(File file); + +/* Operations used for sharing named temporary files */ +extern File PathNameCreateTemporaryFile(const char *name, bool error_on_failure); +extern File PathNameOpenTemporaryFile(const char *name); +extern bool PathNameDeleteTemporaryFile(const char *name, bool error_on_failure); +extern void PathNameCreateTemporaryDir(const char *base, const char *name); +extern void PathNameDeleteTemporaryDir(const char *name); +extern void TempTablespacePath(char *path, Oid tablespace); /* Operations that allow use of regular stdio --- USE WITH CAUTION */ extern FILE *AllocateFile(const char *name, const char *mode); @@ -93,15 +112,25 @@ extern int ClosePipeStream(FILE *file); extern DIR *AllocateDir(const char *dirname); extern struct dirent *ReadDir(DIR *dir, const char *dirname); extern struct dirent *ReadDirExtended(DIR *dir, const char *dirname, - int elevel); + int elevel); extern int FreeDir(DIR *dir); /* Operations to allow use of a plain kernel FD, with automatic cleanup */ -extern int OpenTransientFile(FileName fileName, int fileFlags, int fileMode); +extern int OpenTransientFile(const char *fileName, int fileFlags); +extern int OpenTransientFilePerm(const char *fileName, int fileFlags, mode_t fileMode); extern int CloseTransientFile(int fd); /* If you've really really gotta have a plain kernel FD, use this */ -extern int BasicOpenFile(FileName fileName, int fileFlags, int fileMode); +extern int BasicOpenFile(const char *fileName, int fileFlags); +extern int BasicOpenFilePerm(const char *fileName, int fileFlags, mode_t fileMode); + +/* Use these for other cases, and also for long-lived BasicOpenFile FDs */ +extern bool AcquireExternalFD(void); +extern void ReserveExternalFD(void); +extern void ReleaseExternalFD(void); + +/* Make a directory with default permissions */ +extern int MakePGDirectory(const char *directoryName); /* Miscellaneous support routines */ extern void InitFileAccess(void); @@ -109,11 +138,15 @@ extern void set_max_safe_fds(void); extern void closeAllVfds(void); extern void SetTempTablespaces(Oid *tableSpaces, int numSpaces); extern bool TempTablespacesAreSet(void); +extern int GetTempTablespaces(Oid *tableSpaces, int numSpaces); extern Oid GetNextTempTableSpace(void); -extern void AtEOXact_Files(void); +extern void AtEOXact_Files(bool isCommit); extern void AtEOSubXact_Files(bool isCommit, SubTransactionId mySubid, - SubTransactionId parentSubid); + SubTransactionId parentSubid); extern void RemovePgTempFiles(void); +extern void RemovePgTempFilesInDir(const char *tmpdirname, bool missing_ok, + bool unlink_all); +extern bool looks_like_temp_rel_name(const char *name); extern int pg_fsync(int fd); extern int pg_fsync_no_writethrough(int fd); @@ -121,13 +154,14 @@ extern int pg_fsync_writethrough(int fd); extern int pg_fdatasync(int fd); extern void pg_flush_data(int fd, off_t offset, off_t amount); extern void fsync_fname(const char *fname, bool isdir); +extern int fsync_fname_ext(const char *fname, bool isdir, bool ignore_perm, int elevel); extern int durable_rename(const char *oldfile, const char *newfile, int loglevel); extern int durable_unlink(const char *fname, int loglevel); -extern int durable_link_or_rename(const char *oldfile, const char *newfile, int loglevel); +extern int durable_rename_excl(const char *oldfile, const char *newfile, int loglevel); extern void SyncDataDirectory(void); -extern int data_sync_elevel(int elevel); +extern int data_sync_elevel(int elevel); -/* Filename components for OpenTemporaryFile */ +/* Filename components */ #define PG_TEMP_FILES_DIR "pgsql_tmp" #define PG_TEMP_FILE_PREFIX "pgsql_tmp" diff --git a/parser/include/storage/ipc.h b/parser/include/storage/ipc.h index 190e76ac..cdfdbe6b 100644 --- a/parser/include/storage/ipc.h +++ b/parser/include/storage/ipc.h @@ -8,7 +8,7 @@ * exit-time cleanup for either a postmaster or a backend. * * - * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/storage/ipc.h @@ -63,6 +63,7 @@ typedef void (*shmem_startup_hook_type) (void); /* ipc.c */ extern PGDLLIMPORT __thread bool proc_exit_inprogress; +extern PGDLLIMPORT bool shmem_exit_inprogress; extern void proc_exit(int code) pg_attribute_noreturn(); extern void shmem_exit(int code); @@ -75,6 +76,6 @@ extern void on_exit_reset(void); /* ipci.c */ extern PGDLLIMPORT shmem_startup_hook_type shmem_startup_hook; -extern void CreateSharedMemoryAndSemaphores(int port); +extern void CreateSharedMemoryAndSemaphores(void); #endif /* IPC_H */ diff --git a/parser/include/storage/item.h b/parser/include/storage/item.h index 72426a2d..43a47261 100644 --- a/parser/include/storage/item.h +++ b/parser/include/storage/item.h @@ -4,7 +4,7 @@ * POSTGRES disk item definitions. * * - * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/storage/item.h diff --git a/parser/include/storage/itemid.h b/parser/include/storage/itemid.h index 2ec86b57..5b0229b6 100644 --- a/parser/include/storage/itemid.h +++ b/parser/include/storage/itemid.h @@ -1,10 +1,10 @@ /*------------------------------------------------------------------------- * * itemid.h - * Standard POSTGRES buffer page item identifier definitions. + * Standard POSTGRES buffer page item identifier/line pointer definitions. * * - * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/storage/itemid.h @@ -15,16 +15,17 @@ #define ITEMID_H /* - * An item pointer (also called line pointer) on a buffer page + * A line pointer on a buffer page. See buffer page definitions and comments + * for an explanation of how line pointers are used. * - * In some cases an item pointer is "in use" but does not have any associated - * storage on the page. By convention, lp_len == 0 in every item pointer + * In some cases a line pointer is "in use" but does not have any associated + * storage on the page. By convention, lp_len == 0 in every line pointer * that does not have storage, independently of its lp_flags state. */ typedef struct ItemIdData { unsigned lp_off:15, /* offset to tuple (from start of page) */ - lp_flags:2, /* state of item pointer, see below */ + lp_flags:2, /* state of line pointer, see below */ lp_len:15; /* byte length of tuple */ } ItemIdData; @@ -72,7 +73,7 @@ typedef uint16 ItemLength; /* * ItemIdGetRedirect - * In a REDIRECT pointer, lp_off holds the link to the next item pointer + * In a REDIRECT pointer, lp_off holds offset number for next line pointer */ #define ItemIdGetRedirect(itemId) \ ((itemId)->lp_off) diff --git a/parser/include/storage/itemptr.h b/parser/include/storage/itemptr.h index 8f8e2244..944f6fe6 100644 --- a/parser/include/storage/itemptr.h +++ b/parser/include/storage/itemptr.h @@ -4,7 +4,7 @@ * POSTGRES disk item pointer definitions. * * - * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/storage/itemptr.h @@ -22,8 +22,8 @@ * * This is a pointer to an item within a disk page of a known file * (for example, a cross-link from an index to its parent table). - * blkid tells us which block, posid tells us which entry in the linp - * (ItemIdData) array we want. + * ip_blkid tells us which block, ip_posid tells us which entry in + * the linp (ItemIdData) array we want. * * Note: because there is an item pointer in each tuple header and index * tuple header on disk, it's very important not to waste space with @@ -41,13 +41,35 @@ typedef struct ItemPointerData /* If compiler understands packed and aligned pragmas, use those */ #if defined(pg_attribute_packed) && defined(pg_attribute_aligned) -pg_attribute_packed() -pg_attribute_aligned(2) + pg_attribute_packed() + pg_attribute_aligned(2) #endif ItemPointerData; typedef ItemPointerData *ItemPointer; +/* ---------------- + * special values used in heap tuples (t_ctid) + * ---------------- + */ + +/* + * If a heap tuple holds a speculative insertion token rather than a real + * TID, ip_posid is set to SpecTokenOffsetNumber, and the token is stored in + * ip_blkid. SpecTokenOffsetNumber must be higher than MaxOffsetNumber, so + * that it can be distinguished from a valid offset number in a regular item + * pointer. + */ +#define SpecTokenOffsetNumber 0xfffe + +/* + * When a tuple is moved to a different partition by UPDATE, the t_ctid of + * the old tuple version is set to this magic value. + */ +#define MovedPartitionsOffsetNumber 0xfffd +#define MovedPartitionsBlockNumber InvalidBlockNumber + + /* ---------------- * support macros * ---------------- @@ -154,6 +176,25 @@ typedef ItemPointerData *ItemPointer; (pointer)->ip_posid = InvalidOffsetNumber \ ) +/* + * ItemPointerIndicatesMovedPartitions + * True iff the block number indicates the tuple has moved to another + * partition. + */ +#define ItemPointerIndicatesMovedPartitions(pointer) \ +( \ + ItemPointerGetOffsetNumber(pointer) == MovedPartitionsOffsetNumber && \ + ItemPointerGetBlockNumberNoCheck(pointer) == MovedPartitionsBlockNumber \ +) + +/* + * ItemPointerSetMovedPartitions + * Indicate that the item referenced by the itempointer has moved into a + * different partition. + */ +#define ItemPointerSetMovedPartitions(pointer) \ + ItemPointerSet((pointer), MovedPartitionsBlockNumber, MovedPartitionsOffsetNumber) + /* ---------------- * externs * ---------------- diff --git a/parser/include/storage/large_object.h b/parser/include/storage/large_object.h new file mode 100644 index 00000000..2623d1a1 --- /dev/null +++ b/parser/include/storage/large_object.h @@ -0,0 +1,100 @@ +/*------------------------------------------------------------------------- + * + * large_object.h + * Declarations for PostgreSQL large objects. POSTGRES 4.2 supported + * zillions of large objects (internal, external, jaquith, inversion). + * Now we only support inversion. + * + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group + * Portions Copyright (c) 1994, Regents of the University of California + * + * src/include/storage/large_object.h + * + *------------------------------------------------------------------------- + */ +#ifndef LARGE_OBJECT_H +#define LARGE_OBJECT_H + +#include "utils/snapshot.h" + + +/*---------- + * Data about a currently-open large object. + * + * id is the logical OID of the large object + * snapshot is the snapshot to use for read/write operations + * subid is the subtransaction that opened the desc (or currently owns it) + * offset is the current seek offset within the LO + * flags contains some flag bits + * + * NOTE: as of v11, permission checks are made when the large object is + * opened; therefore IFS_RDLOCK/IFS_WRLOCK indicate that read or write mode + * has been requested *and* the corresponding permission has been checked. + * + * NOTE: before 7.1, we also had to store references to the separate table + * and index of a specific large object. Now they all live in pg_largeobject + * and are accessed via a common relation descriptor. + *---------- + */ +typedef struct LargeObjectDesc +{ + Oid id; /* LO's identifier */ + Snapshot snapshot; /* snapshot to use */ + SubTransactionId subid; /* owning subtransaction ID */ + uint64 offset; /* current seek pointer */ + int flags; /* see flag bits below */ + +/* bits in flags: */ +#define IFS_RDLOCK (1 << 0) /* LO was opened for reading */ +#define IFS_WRLOCK (1 << 1) /* LO was opened for writing */ + +} LargeObjectDesc; + + +/* + * Each "page" (tuple) of a large object can hold this much data + * + * We could set this as high as BLCKSZ less some overhead, but it seems + * better to make it a smaller value, so that not as much space is used + * up when a page-tuple is updated. Note that the value is deliberately + * chosen large enough to trigger the tuple toaster, so that we will + * attempt to compress page tuples in-line. (But they won't be moved off + * unless the user creates a toast-table for pg_largeobject...) + * + * Also, it seems to be a smart move to make the page size be a power of 2, + * since clients will often be written to send data in power-of-2 blocks. + * This avoids unnecessary tuple updates caused by partial-page writes. + * + * NB: Changing LOBLKSIZE requires an initdb. + */ +#define LOBLKSIZE (BLCKSZ / 4) + +/* + * Maximum length in bytes for a large object. To make this larger, we'd + * have to widen pg_largeobject.pageno as well as various internal variables. + */ +#define MAX_LARGE_OBJECT_SIZE ((int64) INT_MAX * LOBLKSIZE) + + +/* + * GUC: backwards-compatibility flag to suppress LO permission checks + */ +extern bool lo_compat_privileges; + +/* + * Function definitions... + */ + +/* inversion stuff in inv_api.c */ +extern void close_lo_relation(bool isCommit); +extern Oid inv_create(Oid lobjId); +extern LargeObjectDesc *inv_open(Oid lobjId, int flags, MemoryContext mcxt); +extern void inv_close(LargeObjectDesc *obj_desc); +extern int inv_drop(Oid lobjId); +extern int64 inv_seek(LargeObjectDesc *obj_desc, int64 offset, int whence); +extern int64 inv_tell(LargeObjectDesc *obj_desc); +extern int inv_read(LargeObjectDesc *obj_desc, char *buf, int nbytes); +extern int inv_write(LargeObjectDesc *obj_desc, const char *buf, int nbytes); +extern void inv_truncate(LargeObjectDesc *obj_desc, int64 len); + +#endif /* LARGE_OBJECT_H */ diff --git a/parser/include/storage/latch.h b/parser/include/storage/latch.h index 7e5308df..46ae56ca 100644 --- a/parser/include/storage/latch.h +++ b/parser/include/storage/latch.h @@ -90,7 +90,7 @@ * efficient than using WaitLatch or WaitLatchOrSocket. * * - * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/storage/latch.h @@ -126,8 +126,9 @@ typedef struct Latch #define WL_SOCKET_WRITEABLE (1 << 2) #define WL_TIMEOUT (1 << 3) /* not for WaitEventSetWait() */ #define WL_POSTMASTER_DEATH (1 << 4) +#define WL_EXIT_ON_PM_DEATH (1 << 5) #ifdef WIN32 -#define WL_SOCKET_CONNECTED (1 << 5) +#define WL_SOCKET_CONNECTED (1 << 6) #else /* avoid having to deal with case on platforms not requiring it */ #define WL_SOCKET_CONNECTED WL_SOCKET_WRITEABLE @@ -155,26 +156,26 @@ typedef struct WaitEventSet WaitEventSet; * prototypes for functions in latch.c */ extern void InitializeLatchSupport(void); -extern void InitLatch(volatile Latch *latch); -extern void InitSharedLatch(volatile Latch *latch); -extern void OwnLatch(volatile Latch *latch); -extern void DisownLatch(volatile Latch *latch); -extern void SetLatch(volatile Latch *latch); -extern void ResetLatch(volatile Latch *latch); +extern void InitLatch(Latch *latch); +extern void InitSharedLatch(Latch *latch); +extern void OwnLatch(Latch *latch); +extern void DisownLatch(Latch *latch); +extern void SetLatch(Latch *latch); +extern void ResetLatch(Latch *latch); extern WaitEventSet *CreateWaitEventSet(MemoryContext context, int nevents); extern void FreeWaitEventSet(WaitEventSet *set); -extern int AddWaitEventToSet(WaitEventSet *set, uint32 events, pgsocket fd, - Latch *latch, void *user_data); +extern int AddWaitEventToSet(WaitEventSet *set, uint32 events, pgsocket fd, + Latch *latch, void *user_data); extern void ModifyWaitEvent(WaitEventSet *set, int pos, uint32 events, Latch *latch); -extern int WaitEventSetWait(WaitEventSet *set, long timeout, - WaitEvent *occurred_events, int nevents, - uint32 wait_event_info); -extern int WaitLatch(volatile Latch *latch, int wakeEvents, long timeout, - uint32 wait_event_info); -extern int WaitLatchOrSocket(volatile Latch *latch, int wakeEvents, - pgsocket sock, long timeout, uint32 wait_event_info); +extern int WaitEventSetWait(WaitEventSet *set, long timeout, + WaitEvent *occurred_events, int nevents, + uint32 wait_event_info); +extern int WaitLatch(Latch *latch, int wakeEvents, long timeout, + uint32 wait_event_info); +extern int WaitLatchOrSocket(Latch *latch, int wakeEvents, + pgsocket sock, long timeout, uint32 wait_event_info); /* * Unix implementation uses SIGUSR1 for inter-process signaling. diff --git a/parser/include/storage/lmgr.h b/parser/include/storage/lmgr.h index a3710790..f7cabcbb 100644 --- a/parser/include/storage/lmgr.h +++ b/parser/include/storage/lmgr.h @@ -4,7 +4,7 @@ * POSTGRES lock manager definitions. * * - * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/storage/lmgr.h @@ -45,6 +45,8 @@ extern void UnlockRelationOid(Oid relid, LOCKMODE lockmode); extern void LockRelation(Relation relation, LOCKMODE lockmode); extern bool ConditionalLockRelation(Relation relation, LOCKMODE lockmode); extern void UnlockRelation(Relation relation, LOCKMODE lockmode); +extern bool CheckRelationLockedByMe(Relation relation, LOCKMODE lockmode, + bool orstronger); extern bool LockHasWaitersRelation(Relation relation, LOCKMODE lockmode); extern void LockRelationIdForSession(LockRelId *relid, LOCKMODE lockmode); @@ -54,7 +56,7 @@ extern void UnlockRelationIdForSession(LockRelId *relid, LOCKMODE lockmode); extern void LockRelationForExtension(Relation relation, LOCKMODE lockmode); extern void UnlockRelationForExtension(Relation relation, LOCKMODE lockmode); extern bool ConditionalLockRelationForExtension(Relation relation, - LOCKMODE lockmode); + LOCKMODE lockmode); extern int RelationExtensionLockWaiterCount(Relation relation); /* Lock to recompute pg_database.datfrozenxid in the current database */ @@ -68,19 +70,19 @@ extern void UnlockPage(Relation relation, BlockNumber blkno, LOCKMODE lockmode); /* Lock a tuple (see heap_lock_tuple before assuming you understand this) */ extern void LockTuple(Relation relation, ItemPointer tid, LOCKMODE lockmode); extern bool ConditionalLockTuple(Relation relation, ItemPointer tid, - LOCKMODE lockmode); + LOCKMODE lockmode); extern void UnlockTuple(Relation relation, ItemPointer tid, LOCKMODE lockmode); /* Lock an XID (used to wait for a transaction to finish) */ extern void XactLockTableInsert(TransactionId xid); extern void XactLockTableDelete(TransactionId xid); extern void XactLockTableWait(TransactionId xid, Relation rel, - ItemPointer ctid, XLTW_Oper oper); + ItemPointer ctid, XLTW_Oper oper); extern bool ConditionalXactLockTableWait(TransactionId xid); /* Lock VXIDs, specified by conflicting locktags */ -extern void WaitForLockers(LOCKTAG heaplocktag, LOCKMODE lockmode); -extern void WaitForLockersMultiple(List *locktags, LOCKMODE lockmode); +extern void WaitForLockers(LOCKTAG heaplocktag, LOCKMODE lockmode, bool progress); +extern void WaitForLockersMultiple(List *locktags, LOCKMODE lockmode, bool progress); /* Lock an XID for tuple insertion (used to wait for an insertion to finish) */ extern uint32 SpeculativeInsertionLockAcquire(TransactionId xid); @@ -89,20 +91,20 @@ extern void SpeculativeInsertionWait(TransactionId xid, uint32 token); /* Lock a general object (other than a relation) of the current database */ extern void LockDatabaseObject(Oid classid, Oid objid, uint16 objsubid, - LOCKMODE lockmode); + LOCKMODE lockmode); extern void UnlockDatabaseObject(Oid classid, Oid objid, uint16 objsubid, - LOCKMODE lockmode); + LOCKMODE lockmode); /* Lock a shared-across-databases object (other than a relation) */ extern void LockSharedObject(Oid classid, Oid objid, uint16 objsubid, - LOCKMODE lockmode); + LOCKMODE lockmode); extern void UnlockSharedObject(Oid classid, Oid objid, uint16 objsubid, - LOCKMODE lockmode); + LOCKMODE lockmode); extern void LockSharedObjectForSession(Oid classid, Oid objid, uint16 objsubid, - LOCKMODE lockmode); + LOCKMODE lockmode); extern void UnlockSharedObjectForSession(Oid classid, Oid objid, uint16 objsubid, - LOCKMODE lockmode); + LOCKMODE lockmode); /* Describe a locktag for error messages */ extern void DescribeLockTag(StringInfo buf, const LOCKTAG *tag); diff --git a/parser/include/storage/lock.h b/parser/include/storage/lock.h index 54674155..2987c5e4 100644 --- a/parser/include/storage/lock.h +++ b/parser/include/storage/lock.h @@ -4,7 +4,7 @@ * POSTGRES low-level lock mechanism * * - * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/storage/lock.h @@ -18,12 +18,11 @@ #error "lock.h may not be included from frontend code" #endif -#include "storage/lockdefs.h" #include "storage/backendid.h" +#include "storage/lockdefs.h" #include "storage/lwlock.h" #include "storage/shmem.h" - /* struct PGPROC is declared in proc.h, but must forward-reference it */ typedef struct PGPROC PGPROC; @@ -139,34 +138,19 @@ typedef uint16 LOCKMETHODID; typedef enum LockTagType { LOCKTAG_RELATION, /* whole relation */ - /* ID info for a relation is DB OID + REL OID; DB OID = 0 if shared */ LOCKTAG_RELATION_EXTEND, /* the right to extend a relation */ - /* same ID info as RELATION */ + LOCKTAG_DATABASE_FROZEN_IDS, /* pg_database.datfrozenxid */ LOCKTAG_PAGE, /* one page of a relation */ - /* ID info for a page is RELATION info + BlockNumber */ LOCKTAG_TUPLE, /* one physical tuple */ - /* ID info for a tuple is PAGE info + OffsetNumber */ LOCKTAG_TRANSACTION, /* transaction (for waiting for xact done) */ - /* ID info for a transaction is its TransactionId */ LOCKTAG_VIRTUALTRANSACTION, /* virtual transaction (ditto) */ - /* ID info for a virtual transaction is its VirtualTransactionId */ LOCKTAG_SPECULATIVE_TOKEN, /* speculative insertion Xid and token */ - /* ID info for a transaction is its TransactionId */ LOCKTAG_OBJECT, /* non-relation database object */ - /* ID info for an object is DB OID + CLASS OID + OBJECT OID + SUBID */ - - /* - * Note: object ID has same representation as in pg_depend and - * pg_description, but notice that we are constraining SUBID to 16 bits. - * Also, we use DB OID = 0 for shared objects such as tablespaces. - */ LOCKTAG_USERLOCK, /* reserved for old contrib/userlock code */ - LOCKTAG_ADVISORY, /* advisory user locks */ - LOCKTAG_DATABASE_FROZEN_IDS /* pg_database.datfrozenxid */ - /* ID info for frozen IDs is DB OID */ + LOCKTAG_ADVISORY /* advisory user locks */ } LockTagType; -#define LOCKTAG_LAST_TYPE LOCKTAG_DATABASE_FROZEN_IDS +#define LOCKTAG_LAST_TYPE LOCKTAG_ADVISORY extern const char *const LockTagTypeNames[]; @@ -193,6 +177,8 @@ typedef struct LOCKTAG * the physical fields of LOCKTAG. Use these to set up LOCKTAG values, * rather than accessing the fields directly. Note multiple eval of target! */ + +/* ID info for a relation is DB OID + REL OID; DB OID = 0 if shared */ #define SET_LOCKTAG_RELATION(locktag,dboid,reloid) \ ((locktag).locktag_field1 = (dboid), \ (locktag).locktag_field2 = (reloid), \ @@ -201,6 +187,7 @@ typedef struct LOCKTAG (locktag).locktag_type = LOCKTAG_RELATION, \ (locktag).locktag_lockmethodid = DEFAULT_LOCKMETHOD) +/* same ID info as RELATION */ #define SET_LOCKTAG_RELATION_EXTEND(locktag,dboid,reloid) \ ((locktag).locktag_field1 = (dboid), \ (locktag).locktag_field2 = (reloid), \ @@ -209,6 +196,7 @@ typedef struct LOCKTAG (locktag).locktag_type = LOCKTAG_RELATION_EXTEND, \ (locktag).locktag_lockmethodid = DEFAULT_LOCKMETHOD) +/* ID info for frozen IDs is DB OID */ #define SET_LOCKTAG_DATABASE_FROZEN_IDS(locktag,dboid) \ ((locktag).locktag_field1 = (dboid), \ (locktag).locktag_field2 = 0, \ @@ -217,6 +205,7 @@ typedef struct LOCKTAG (locktag).locktag_type = LOCKTAG_DATABASE_FROZEN_IDS, \ (locktag).locktag_lockmethodid = DEFAULT_LOCKMETHOD) +/* ID info for a page is RELATION info + BlockNumber */ #define SET_LOCKTAG_PAGE(locktag,dboid,reloid,blocknum) \ ((locktag).locktag_field1 = (dboid), \ (locktag).locktag_field2 = (reloid), \ @@ -225,6 +214,7 @@ typedef struct LOCKTAG (locktag).locktag_type = LOCKTAG_PAGE, \ (locktag).locktag_lockmethodid = DEFAULT_LOCKMETHOD) +/* ID info for a tuple is PAGE info + OffsetNumber */ #define SET_LOCKTAG_TUPLE(locktag,dboid,reloid,blocknum,offnum) \ ((locktag).locktag_field1 = (dboid), \ (locktag).locktag_field2 = (reloid), \ @@ -233,6 +223,7 @@ typedef struct LOCKTAG (locktag).locktag_type = LOCKTAG_TUPLE, \ (locktag).locktag_lockmethodid = DEFAULT_LOCKMETHOD) +/* ID info for a transaction is its TransactionId */ #define SET_LOCKTAG_TRANSACTION(locktag,xid) \ ((locktag).locktag_field1 = (xid), \ (locktag).locktag_field2 = 0, \ @@ -241,6 +232,7 @@ typedef struct LOCKTAG (locktag).locktag_type = LOCKTAG_TRANSACTION, \ (locktag).locktag_lockmethodid = DEFAULT_LOCKMETHOD) +/* ID info for a virtual transaction is its VirtualTransactionId */ #define SET_LOCKTAG_VIRTUALTRANSACTION(locktag,vxid) \ ((locktag).locktag_field1 = (vxid).backendId, \ (locktag).locktag_field2 = (vxid).localTransactionId, \ @@ -249,6 +241,10 @@ typedef struct LOCKTAG (locktag).locktag_type = LOCKTAG_VIRTUALTRANSACTION, \ (locktag).locktag_lockmethodid = DEFAULT_LOCKMETHOD) +/* + * ID info for a speculative insert is TRANSACTION info + + * its speculative insert counter. + */ #define SET_LOCKTAG_SPECULATIVE_INSERTION(locktag,xid,token) \ ((locktag).locktag_field1 = (xid), \ (locktag).locktag_field2 = (token), \ @@ -257,6 +253,13 @@ typedef struct LOCKTAG (locktag).locktag_type = LOCKTAG_SPECULATIVE_TOKEN, \ (locktag).locktag_lockmethodid = DEFAULT_LOCKMETHOD) +/* + * ID info for an object is DB OID + CLASS OID + OBJECT OID + SUBID + * + * Note: object ID has same representation as in pg_depend and + * pg_description, but notice that we are constraining SUBID to 16 bits. + * Also, we use DB OID = 0 for shared objects such as tablespaces. + */ #define SET_LOCKTAG_OBJECT(locktag,dboid,classoid,objoid,objsubid) \ ((locktag).locktag_field1 = (dboid), \ (locktag).locktag_field2 = (classoid), \ @@ -309,6 +312,7 @@ typedef struct LOCK } LOCK; #define LOCK_LOCKMETHOD(lock) ((LOCKMETHODID) (lock).tag.locktag_lockmethodid) +#define LOCK_LOCKTAG(lock) ((LockTagType) (lock).tag.locktag_type) /* @@ -415,18 +419,19 @@ typedef struct LOCALLOCK LOCALLOCKTAG tag; /* unique identifier of locallock entry */ /* data */ + uint32 hashcode; /* copy of LOCKTAG's hash value */ LOCK *lock; /* associated LOCK object, if any */ PROCLOCK *proclock; /* associated PROCLOCK object, if any */ - uint32 hashcode; /* copy of LOCKTAG's hash value */ int64 nLocks; /* total number of times lock is held */ int numLockOwners; /* # of relevant ResourceOwners */ int maxLockOwners; /* allocated size of array */ + LOCALLOCKOWNER *lockOwners; /* dynamically resizable array */ bool holdsStrongLockCount; /* bumped FastPathStrongRelationLocks */ bool lockCleared; /* we read all sinval msgs for lock */ - LOCALLOCKOWNER *lockOwners; /* dynamically resizable array */ } LOCALLOCK; #define LOCALLOCK_LOCKMETHOD(llock) ((llock).tag.lock.locktag_lockmethodid) +#define LOCALLOCK_LOCKTAG(llock) ((LockTagType) (llock).tag.lock.locktag_type) /* @@ -534,32 +539,36 @@ extern LockMethod GetLockTagsMethodTable(const LOCKTAG *locktag); extern uint32 LockTagHashCode(const LOCKTAG *locktag); extern bool DoLockModesConflict(LOCKMODE mode1, LOCKMODE mode2); extern LockAcquireResult LockAcquire(const LOCKTAG *locktag, - LOCKMODE lockmode, - bool sessionLock, - bool dontWait); + LOCKMODE lockmode, + bool sessionLock, + bool dontWait); extern LockAcquireResult LockAcquireExtended(const LOCKTAG *locktag, - LOCKMODE lockmode, - bool sessionLock, - bool dontWait, - bool reportMemoryError, - LOCALLOCK **locallockp); + LOCKMODE lockmode, + bool sessionLock, + bool dontWait, + bool reportMemoryError, + LOCALLOCK **locallockp); extern void AbortStrongLockAcquire(void); extern void MarkLockClear(LOCALLOCK *locallock); extern bool LockRelease(const LOCKTAG *locktag, - LOCKMODE lockmode, bool sessionLock); + LOCKMODE lockmode, bool sessionLock); extern void LockReleaseAll(LOCKMETHODID lockmethodid, bool allLocks); extern void LockReleaseSession(LOCKMETHODID lockmethodid); extern void LockReleaseCurrentOwner(LOCALLOCK **locallocks, int nlocks); extern void LockReassignCurrentOwner(LOCALLOCK **locallocks, int nlocks); +extern bool LockHeldByMe(const LOCKTAG *locktag, LOCKMODE lockmode); +#ifdef USE_ASSERT_CHECKING +extern HTAB *GetLockMethodLocalHash(void); +#endif extern bool LockHasWaiters(const LOCKTAG *locktag, - LOCKMODE lockmode, bool sessionLock); + LOCKMODE lockmode, bool sessionLock); extern VirtualTransactionId *GetLockConflicts(const LOCKTAG *locktag, - LOCKMODE lockmode); + LOCKMODE lockmode, int *countp); extern void AtPrepare_Locks(void); extern void PostPrepare_Locks(TransactionId xid); -extern int LockCheckConflicts(LockMethod lockMethodTable, - LOCKMODE lockmode, - LOCK *lock, PROCLOCK *proclock); +extern bool LockCheckConflicts(LockMethod lockMethodTable, + LOCKMODE lockmode, + LOCK *lock, PROCLOCK *proclock); extern void GrantLock(LOCK *lock, PROCLOCK *proclock, LOCKMODE lockmode); extern void GrantAwaitedLock(void); extern void RemoveFromWaitQueue(PGPROC *proc, uint32 hashcode); @@ -571,21 +580,21 @@ extern xl_standby_lock *GetRunningTransactionLocks(int *nlocks); extern const char *GetLockmodeName(LOCKMETHODID lockmethodid, LOCKMODE mode); extern void lock_twophase_recover(TransactionId xid, uint16 info, - void *recdata, uint32 len); + void *recdata, uint32 len); extern void lock_twophase_postcommit(TransactionId xid, uint16 info, - void *recdata, uint32 len); + void *recdata, uint32 len); extern void lock_twophase_postabort(TransactionId xid, uint16 info, - void *recdata, uint32 len); + void *recdata, uint32 len); extern void lock_twophase_standby_recover(TransactionId xid, uint16 info, - void *recdata, uint32 len); + void *recdata, uint32 len); extern DeadLockState DeadLockCheck(PGPROC *proc); extern PGPROC *GetBlockingAutoVacuumPgproc(void); extern void DeadLockReport(void) pg_attribute_noreturn(); extern void RememberSimpleDeadLock(PGPROC *proc1, - LOCKMODE lockmode, - LOCK *lock, - PGPROC *proc2); + LOCKMODE lockmode, + LOCK *lock, + PGPROC *proc2); extern void InitDeadLockChecking(void); extern int LockWaiterCount(const LOCKTAG *locktag); @@ -600,4 +609,4 @@ extern void VirtualXactLockTableInsert(VirtualTransactionId vxid); extern void VirtualXactLockTableCleanup(void); extern bool VirtualXactLock(VirtualTransactionId vxid, bool wait); -#endif /* LOCK_H */ +#endif /* LOCK_H_ */ diff --git a/parser/include/storage/lockdefs.h b/parser/include/storage/lockdefs.h index fe9f7cb3..ef0daf70 100644 --- a/parser/include/storage/lockdefs.h +++ b/parser/include/storage/lockdefs.h @@ -7,7 +7,7 @@ * contains definition that have to (indirectly) be available when included by * FRONTEND code. * - * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/storage/lockdefs.h @@ -45,11 +45,15 @@ typedef int LOCKMODE; #define AccessExclusiveLock 8 /* ALTER TABLE, DROP TABLE, VACUUM FULL, * and unqualified LOCK TABLE */ +#define MaxLockMode 8 + + +/* WAL representation of an AccessExclusiveLock on a table */ typedef struct xl_standby_lock { TransactionId xid; /* xid of holder of AccessExclusiveLock */ - Oid dbOid; - Oid relOid; + Oid dbOid; /* DB containing table */ + Oid relOid; /* OID of table */ } xl_standby_lock; -#endif /* LOCKDEF_H_ */ +#endif /* LOCKDEFS_H_ */ diff --git a/parser/include/storage/lwlock.h b/parser/include/storage/lwlock.h index 3d16132c..c04ae971 100644 --- a/parser/include/storage/lwlock.h +++ b/parser/include/storage/lwlock.h @@ -4,7 +4,7 @@ * Lightweight lock manager * * - * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/storage/lwlock.h @@ -18,9 +18,9 @@ #error "lwlock.h may not be included from frontend code" #endif +#include "port/atomics.h" #include "storage/proclist_types.h" #include "storage/s_lock.h" -#include "port/atomics.h" struct PGPROC; @@ -88,7 +88,6 @@ typedef union LWLockMinimallyPadded } LWLockMinimallyPadded; extern PGDLLIMPORT LWLockPadded *MainLWLockArray; -extern char *MainLWLockNames[]; /* struct for storing named tranche information */ typedef struct NamedLWLockTranche @@ -133,7 +132,7 @@ typedef enum LWLockMode { LW_EXCLUSIVE, LW_SHARED, - LW_WAIT_UNTIL_FREE /* A special mode used in PGPROC->lwlockMode, + LW_WAIT_UNTIL_FREE /* A special mode used in PGPROC->lwWaitMode, * when waiting for lock to become free. Not * to be used as LWLockAcquire argument */ } LWLockMode; @@ -184,7 +183,7 @@ extern LWLockPadded *GetNamedLWLockTranche(const char *tranche_name); * registration in the main shared memory segment wouldn't work for that case. */ extern int LWLockNewTrancheId(void); -extern void LWLockRegisterTranche(int tranche_id, char *tranche_name); +extern void LWLockRegisterTranche(int tranche_id, const char *tranche_name); extern void LWLockInitialize(LWLock *lock, int tranche_id); /* @@ -195,24 +194,31 @@ extern void LWLockInitialize(LWLock *lock, int tranche_id); */ typedef enum BuiltinTrancheIds { - LWTRANCHE_CLOG_BUFFERS = NUM_INDIVIDUAL_LWLOCKS, - LWTRANCHE_COMMITTS_BUFFERS, - LWTRANCHE_SUBTRANS_BUFFERS, - LWTRANCHE_MXACTOFFSET_BUFFERS, - LWTRANCHE_MXACTMEMBER_BUFFERS, - LWTRANCHE_ASYNC_BUFFERS, - LWTRANCHE_OLDSERXID_BUFFERS, + LWTRANCHE_XACT_BUFFER = NUM_INDIVIDUAL_LWLOCKS, + LWTRANCHE_COMMITTS_BUFFER, + LWTRANCHE_SUBTRANS_BUFFER, + LWTRANCHE_MULTIXACTOFFSET_BUFFER, + LWTRANCHE_MULTIXACTMEMBER_BUFFER, + LWTRANCHE_NOTIFY_BUFFER, + LWTRANCHE_SERIAL_BUFFER, LWTRANCHE_WAL_INSERT, LWTRANCHE_BUFFER_CONTENT, - LWTRANCHE_BUFFER_IO_IN_PROGRESS, - LWTRANCHE_REPLICATION_ORIGIN, - LWTRANCHE_REPLICATION_SLOT_IO_IN_PROGRESS, - LWTRANCHE_PROC, + LWTRANCHE_BUFFER_IO, + LWTRANCHE_REPLICATION_ORIGIN_STATE, + LWTRANCHE_REPLICATION_SLOT_IO, + LWTRANCHE_LOCK_FASTPATH, LWTRANCHE_BUFFER_MAPPING, LWTRANCHE_LOCK_MANAGER, LWTRANCHE_PREDICATE_LOCK_MANAGER, + LWTRANCHE_PARALLEL_HASH_JOIN, LWTRANCHE_PARALLEL_QUERY_DSA, - LWTRANCHE_TBM, + LWTRANCHE_PER_SESSION_DSA, + LWTRANCHE_PER_SESSION_RECORD_TYPE, + LWTRANCHE_PER_SESSION_RECORD_TYPMOD, + LWTRANCHE_SHARED_TUPLESTORE, + LWTRANCHE_SHARED_TIDBITMAP, + LWTRANCHE_PARALLEL_APPEND, + LWTRANCHE_PER_XACT_PREDICATE_LIST, LWTRANCHE_FIRST_USER_DEFINED } BuiltinTrancheIds; diff --git a/parser/include/storage/lwlocknames.h b/parser/include/storage/lwlocknames.h index b7b8a0ed..d8b6cdcb 100644 --- a/parser/include/storage/lwlocknames.h +++ b/parser/include/storage/lwlocknames.h @@ -11,11 +11,11 @@ #define WALWriteLock (&MainLWLockArray[8].lock) #define ControlFileLock (&MainLWLockArray[9].lock) #define CheckpointLock (&MainLWLockArray[10].lock) -#define CLogControlLock (&MainLWLockArray[11].lock) -#define SubtransControlLock (&MainLWLockArray[12].lock) +#define XactSLRULock (&MainLWLockArray[11].lock) +#define SubtransSLRULock (&MainLWLockArray[12].lock) #define MultiXactGenLock (&MainLWLockArray[13].lock) -#define MultiXactOffsetControlLock (&MainLWLockArray[14].lock) -#define MultiXactMemberControlLock (&MainLWLockArray[15].lock) +#define MultiXactOffsetSLRULock (&MainLWLockArray[14].lock) +#define MultiXactMemberSLRULock (&MainLWLockArray[15].lock) #define RelCacheInitLock (&MainLWLockArray[16].lock) #define CheckpointerCommLock (&MainLWLockArray[17].lock) #define TwoPhaseStateLock (&MainLWLockArray[18].lock) @@ -26,26 +26,25 @@ #define AutovacuumScheduleLock (&MainLWLockArray[23].lock) #define SyncScanLock (&MainLWLockArray[24].lock) #define RelationMappingLock (&MainLWLockArray[25].lock) -#define AsyncCtlLock (&MainLWLockArray[26].lock) -#define AsyncQueueLock (&MainLWLockArray[27].lock) +#define NotifySLRULock (&MainLWLockArray[26].lock) +#define NotifyQueueLock (&MainLWLockArray[27].lock) #define SerializableXactHashLock (&MainLWLockArray[28].lock) #define SerializableFinishedListLock (&MainLWLockArray[29].lock) -#define SerializablePredicateLockListLock (&MainLWLockArray[30].lock) -#define OldSerXidLock (&MainLWLockArray[31].lock) +#define SerializablePredicateListLock (&MainLWLockArray[30].lock) +#define SerialSLRULock (&MainLWLockArray[31].lock) #define SyncRepLock (&MainLWLockArray[32].lock) #define BackgroundWorkerLock (&MainLWLockArray[33].lock) #define DynamicSharedMemoryControlLock (&MainLWLockArray[34].lock) #define AutoFileLock (&MainLWLockArray[35].lock) #define ReplicationSlotAllocationLock (&MainLWLockArray[36].lock) #define ReplicationSlotControlLock (&MainLWLockArray[37].lock) -#define CommitTsControlLock (&MainLWLockArray[38].lock) +#define CommitTsSLRULock (&MainLWLockArray[38].lock) #define CommitTsLock (&MainLWLockArray[39].lock) #define ReplicationOriginLock (&MainLWLockArray[40].lock) #define MultiXactTruncationLock (&MainLWLockArray[41].lock) #define OldSnapshotTimeMapLock (&MainLWLockArray[42].lock) -#define BackendRandomLock (&MainLWLockArray[43].lock) -#define LogicalRepWorkerLock (&MainLWLockArray[44].lock) -#define CLogTruncationLock (&MainLWLockArray[45].lock) +#define LogicalRepWorkerLock (&MainLWLockArray[43].lock) +#define XactTruncationLock (&MainLWLockArray[44].lock) #define WrapLimitsVacuumLock (&MainLWLockArray[46].lock) #define NotifyQueueTailLock (&MainLWLockArray[47].lock) diff --git a/parser/include/storage/off.h b/parser/include/storage/off.h index 7228808b..9bfdec8c 100644 --- a/parser/include/storage/off.h +++ b/parser/include/storage/off.h @@ -4,7 +4,7 @@ * POSTGRES disk "offset" definitions. * * - * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/storage/off.h @@ -26,7 +26,6 @@ typedef uint16 OffsetNumber; #define InvalidOffsetNumber ((OffsetNumber) 0) #define FirstOffsetNumber ((OffsetNumber) 1) #define MaxOffsetNumber ((OffsetNumber) (BLCKSZ / sizeof(ItemIdData))) -#define OffsetNumberMask (0xffff) /* valid uint16 bits */ /* ---------------- * support macros diff --git a/parser/include/storage/pg_sema.h b/parser/include/storage/pg_sema.h index 65db86f5..ef8a7b48 100644 --- a/parser/include/storage/pg_sema.h +++ b/parser/include/storage/pg_sema.h @@ -10,7 +10,7 @@ * be provided by each port. * * - * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/storage/pg_sema.h @@ -41,7 +41,7 @@ typedef HANDLE PGSemaphore; extern Size PGSemaphoreShmemSize(int maxSemas); /* Module initialization (called during postmaster start or shmem reinit) */ -extern void PGReserveSemaphores(int maxSemas, int port); +extern void PGReserveSemaphores(int maxSemas); /* Allocate a PGSemaphore structure with initial count 1 */ extern PGSemaphore PGSemaphoreCreate(void); diff --git a/parser/include/storage/pg_shmem.h b/parser/include/storage/pg_shmem.h index 1e1d3041..0de26b34 100644 --- a/parser/include/storage/pg_shmem.h +++ b/parser/include/storage/pg_shmem.h @@ -14,7 +14,7 @@ * only one ID number. * * - * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/storage/pg_shmem.h @@ -41,7 +41,8 @@ typedef struct PGShmemHeader /* standard header for all Postgres shmem */ #endif } PGShmemHeader; -/* GUC variable */ +/* GUC variables */ +extern int shared_memory_type; extern int huge_pages; /* Possible values for huge_pages */ @@ -52,6 +53,14 @@ typedef enum HUGE_PAGES_TRY } HugePagesType; +/* Possible values for shared_memory_type */ +typedef enum +{ + SHMEM_TYPE_WINDOWS, + SHMEM_TYPE_SYSV, + SHMEM_TYPE_MMAP +} PGShmemType; + #ifndef WIN32 extern unsigned long UsedShmemSegID; #else @@ -60,13 +69,21 @@ extern void *ShmemProtectiveRegion; #endif extern void *UsedShmemSegAddr; +#if !defined(WIN32) && !defined(EXEC_BACKEND) +#define DEFAULT_SHARED_MEMORY_TYPE SHMEM_TYPE_MMAP +#elif !defined(WIN32) +#define DEFAULT_SHARED_MEMORY_TYPE SHMEM_TYPE_SYSV +#else +#define DEFAULT_SHARED_MEMORY_TYPE SHMEM_TYPE_WINDOWS +#endif + #ifdef EXEC_BACKEND extern void PGSharedMemoryReAttach(void); extern void PGSharedMemoryNoReAttach(void); #endif -extern PGShmemHeader *PGSharedMemoryCreate(Size size, int port, - PGShmemHeader **shim); +extern PGShmemHeader *PGSharedMemoryCreate(Size size, + PGShmemHeader **shim); extern bool PGSharedMemoryIsInUse(unsigned long id1, unsigned long id2); extern void PGSharedMemoryDetach(void); diff --git a/parser/include/storage/pmsignal.h b/parser/include/storage/pmsignal.h index 4b954d76..56c5ec44 100644 --- a/parser/include/storage/pmsignal.h +++ b/parser/include/storage/pmsignal.h @@ -4,7 +4,7 @@ * routines for signaling the postmaster from its child processes * * - * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/storage/pmsignal.h @@ -14,6 +14,16 @@ #ifndef PMSIGNAL_H #define PMSIGNAL_H +#include + +#ifdef HAVE_SYS_PRCTL_H +#include "sys/prctl.h" +#endif + +#ifdef HAVE_SYS_PROCCTL_H +#include "sys/procctl.h" +#endif + /* * Reasons for signaling the postmaster. We can cope with simultaneous * signals for different reasons. If the same reason is signaled multiple @@ -51,6 +61,34 @@ extern bool IsPostmasterChildWalSender(int slot); extern void MarkPostmasterChildActive(void); extern void MarkPostmasterChildInactive(void); extern void MarkPostmasterChildWalSender(void); -extern bool PostmasterIsAlive(void); +extern bool PostmasterIsAliveInternal(void); +extern void PostmasterDeathSignalInit(void); + + +/* + * Do we have a way to ask for a signal on parent death? + * + * If we do, pmsignal.c will set up a signal handler, that sets a flag when + * the parent dies. Checking the flag first makes PostmasterIsAlive() a lot + * cheaper in usual case that the postmaster is alive. + */ +#if (defined(HAVE_SYS_PRCTL_H) && defined(PR_SET_PDEATHSIG)) || \ + (defined(HAVE_SYS_PROCCTL_H) && defined(PROC_PDEATHSIG_CTL)) +#define USE_POSTMASTER_DEATH_SIGNAL +#endif + +#ifdef USE_POSTMASTER_DEATH_SIGNAL +extern volatile sig_atomic_t postmaster_possibly_dead; + +static inline bool +PostmasterIsAlive(void) +{ + if (likely(!postmaster_possibly_dead)) + return true; + return PostmasterIsAliveInternal(); +} +#else +#define PostmasterIsAlive() PostmasterIsAliveInternal() +#endif #endif /* PMSIGNAL_H */ diff --git a/parser/include/storage/predicate.h b/parser/include/storage/predicate.h index 06bcbf24..86e756d5 100644 --- a/parser/include/storage/predicate.h +++ b/parser/include/storage/predicate.h @@ -4,7 +4,7 @@ * POSTGRES public predicate locking definitions. * * - * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/storage/predicate.h @@ -27,9 +27,14 @@ extern int max_predicate_locks_per_relation; extern int max_predicate_locks_per_page; -/* Number of SLRU buffers to use for predicate locking */ -#define NUM_OLDSERXID_BUFFERS 16 +/* Number of SLRU buffers to use for Serial SLRU */ +#define NUM_SERIAL_BUFFERS 16 +/* + * A handle used for sharing SERIALIZABLEXACT objects between the participants + * in a parallel query. + */ +typedef void *SerializableXactHandle; /* * function prototypes @@ -47,21 +52,22 @@ extern bool PageIsPredicateLocked(Relation relation, BlockNumber blkno); /* predicate lock maintenance */ extern Snapshot GetSerializableTransactionSnapshot(Snapshot snapshot); extern void SetSerializableTransactionSnapshot(Snapshot snapshot, - VirtualTransactionId *sourcevxid, - int sourcepid); + VirtualTransactionId *sourcevxid, + int sourcepid); extern void RegisterPredicateLockingXid(TransactionId xid); extern void PredicateLockRelation(Relation relation, Snapshot snapshot); extern void PredicateLockPage(Relation relation, BlockNumber blkno, Snapshot snapshot); -extern void PredicateLockTuple(Relation relation, HeapTuple tuple, Snapshot snapshot); +extern void PredicateLockTID(Relation relation, ItemPointer tid, Snapshot snapshot, + TransactionId insert_xid); extern void PredicateLockPageSplit(Relation relation, BlockNumber oldblkno, BlockNumber newblkno); extern void PredicateLockPageCombine(Relation relation, BlockNumber oldblkno, BlockNumber newblkno); extern void TransferPredicateLocksToHeapRelation(Relation relation); -extern void ReleasePredicateLocks(bool isCommit); +extern void ReleasePredicateLocks(bool isCommit, bool isReadOnlySafe); /* conflict detection (may also trigger rollback) */ -extern void CheckForSerializableConflictOut(bool valid, Relation relation, HeapTuple tuple, - Buffer buffer, Snapshot snapshot); -extern void CheckForSerializableConflictIn(Relation relation, HeapTuple tuple, Buffer buffer); +extern bool CheckForSerializableConflictOutNeeded(Relation relation, Snapshot snapshot); +extern void CheckForSerializableConflictOut(Relation relation, TransactionId xid, Snapshot snapshot); +extern void CheckForSerializableConflictIn(Relation relation, ItemPointer tid, BlockNumber blkno); extern void CheckTableForSerializableConflictIn(Relation relation); /* final rollback checking */ @@ -72,6 +78,10 @@ extern void AtPrepare_PredicateLocks(void); extern void PostPrepare_PredicateLocks(TransactionId xid); extern void PredicateLockTwoPhaseFinish(TransactionId xid, bool isCommit); extern void predicatelock_twophase_recover(TransactionId xid, uint16 info, - void *recdata, uint32 len); + void *recdata, uint32 len); + +/* parallel query support */ +extern SerializableXactHandle ShareSerializableXact(void); +extern void AttachSerializableXact(SerializableXactHandle handle); #endif /* PREDICATE_H */ diff --git a/parser/include/storage/proc.h b/parser/include/storage/proc.h index 947f69d6..1ee9000b 100644 --- a/parser/include/storage/proc.h +++ b/parser/include/storage/proc.h @@ -4,7 +4,7 @@ * per-process shared memory data structures * * - * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/storage/proc.h @@ -14,6 +14,7 @@ #ifndef _PROC_H_ #define _PROC_H_ +#include "access/clog.h" #include "access/xlogdefs.h" #include "lib/ilist.h" #include "storage/latch.h" @@ -62,7 +63,7 @@ struct XidCache (PROC_IN_VACUUM | PROC_IN_ANALYZE | PROC_VACUUM_FOR_WRAPAROUND) /* - * We allow a small number of "weak" relation locks (AccesShareLock, + * We allow a small number of "weak" relation locks (AccessShareLock, * RowShareLock, RowExclusiveLock) to be recorded in the PGPROC structure * rather than the main lock table. This eases contention on the lock * manager LWLocks. See storage/lmgr/README for additional details. @@ -113,6 +114,9 @@ struct PGPROC Oid databaseId; /* OID of database this backend is using */ Oid roleId; /* OID of role using this backend */ + Oid tempNamespaceId; /* OID of temp schema this backend is + * using */ + bool isBackgroundWorker; /* true if background worker. */ /* @@ -138,6 +142,8 @@ struct PGPROC LOCKMASK heldLocks; /* bitmask for lock types already held on this * lock object by this backend */ + bool delayChkpt; /* true if this proc delays checkpoint start */ + /* * Info to allow us to wait for synchronous replication, if needed. * waitLSN is InvalidXLogRecPtr if not waiting; set only by user backend. @@ -171,10 +177,19 @@ struct PGPROC uint32 wait_event_info; /* proc's wait information */ - /* Per-backend LWLock. Protects fields below (but not group fields). */ - LWLock backendLock; + /* Support for group transaction status update. */ + bool clogGroupMember; /* true, if member of clog group */ + pg_atomic_uint32 clogGroupNext; /* next clog group member */ + TransactionId clogGroupMemberXid; /* transaction id of clog group member */ + XidStatus clogGroupMemberXidStatus; /* transaction status of clog + * group member */ + int clogGroupMemberPage; /* clog page corresponding to + * transaction id of clog group member */ + XLogRecPtr clogGroupMemberLsn; /* WAL location of commit record for clog + * group member */ /* Lock manager data, recording fast-path locks taken by this backend. */ + LWLock fpInfoLock; /* protects per-backend fast-path state */ uint64 fpLockBits; /* lock modes held for each fast-path slot */ Oid fpRelId[FP_LOCK_SLOTS_PER_BACKEND]; /* slots for rel oids */ bool fpVXIDLock; /* are we holding a fast-path VXID lock? */ @@ -217,8 +232,6 @@ typedef struct PGXACT uint8 vacuumFlags; /* vacuum-related flags, see above */ bool overflowed; - bool delayChkpt; /* true if this proc delays checkpoint start; - * previously called InCommit */ uint8 nxids; } PGXACT; @@ -240,8 +253,12 @@ typedef struct PROC_HDR PGPROC *autovacFreeProcs; /* Head of list of bgworker free PGPROC structures */ PGPROC *bgworkerFreeProcs; + /* Head of list of walsender free PGPROC structures */ + PGPROC *walsenderFreeProcs; /* First pgproc waiting for group XID clear */ pg_atomic_uint32 procArrayGroupFirst; + /* First pgproc waiting for group transaction status update */ + pg_atomic_uint32 clogGroupFirst; /* WALWriter process's latch */ Latch *walwriterLatch; /* Checkpointer process's latch */ @@ -313,4 +330,4 @@ extern PGPROC *AuxiliaryPidGetProc(int pid); extern void BecomeLockGroupLeader(void); extern bool BecomeLockGroupMember(PGPROC *leader, int pid); -#endif /* PROC_H */ +#endif /* _PROC_H_ */ diff --git a/parser/include/storage/proclist_types.h b/parser/include/storage/proclist_types.h index 716c4498..aba55788 100644 --- a/parser/include/storage/proclist_types.h +++ b/parser/include/storage/proclist_types.h @@ -5,7 +5,7 @@ * * See proclist.h for functions that operate on these types. * - * Portions Copyright (c) 2016-2017, PostgreSQL Global Development Group + * Portions Copyright (c) 2016-2020, PostgreSQL Global Development Group * * IDENTIFICATION * src/include/storage/proclist_types.h @@ -16,7 +16,12 @@ #define PROCLIST_TYPES_H /* - * A node in a list of processes. + * A node in a doubly-linked list of processes. The link fields contain + * the 0-based PGPROC indexes of the next and previous process, or + * INVALID_PGPROCNO in the next-link of the last node and the prev-link + * of the first node. A node that is currently not in any list + * should have next == prev == 0; this is not a possible state for a node + * that is in a list, because we disallow circularity. */ typedef struct proclist_node { @@ -25,7 +30,8 @@ typedef struct proclist_node } proclist_node; /* - * Head of a doubly-linked list of PGPROCs, identified by pgprocno. + * Header of a doubly-linked list of PGPROCs, identified by pgprocno. + * An empty list is represented by head == tail == INVALID_PGPROCNO. */ typedef struct proclist_head { @@ -42,4 +48,4 @@ typedef struct proclist_mutable_iter int next; /* pgprocno of the next PGPROC */ } proclist_mutable_iter; -#endif +#endif /* PROCLIST_TYPES_H */ diff --git a/parser/include/storage/procsignal.h b/parser/include/storage/procsignal.h index 20bb05b1..5cb39697 100644 --- a/parser/include/storage/procsignal.h +++ b/parser/include/storage/procsignal.h @@ -1,10 +1,10 @@ /*------------------------------------------------------------------------- * * procsignal.h - * Routines for interprocess signalling + * Routines for interprocess signaling * * - * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/storage/procsignal.h @@ -18,7 +18,7 @@ /* - * Reasons for signalling a Postgres child process (a backend or an auxiliary + * Reasons for signaling a Postgres child process (a backend or an auxiliary * process, like checkpointer). We can cope with concurrent signals for different * reasons. However, if the same reason is signaled multiple times in quick * succession, the process is likely to observe only one notification of it. @@ -33,6 +33,7 @@ typedef enum PROCSIG_NOTIFY_INTERRUPT, /* listen/notify interrupt */ PROCSIG_PARALLEL_MESSAGE, /* message from cooperating parallel backend */ PROCSIG_WALSND_INIT_STOPPING, /* ask walsenders to prepare for shutdown */ + PROCSIG_BARRIER, /* global barrier interrupt */ /* Recovery conflict reasons */ PROCSIG_RECOVERY_CONFLICT_DATABASE, @@ -45,6 +46,16 @@ typedef enum NUM_PROCSIGNALS /* Must be last! */ } ProcSignalReason; +typedef enum +{ + /* + * XXX. PROCSIGNAL_BARRIER_PLACEHOLDER should be replaced when the first + * real user of the ProcSignalBarrier mechanism is added. It's just here + * for now because we can't have an empty enum. + */ + PROCSIGNAL_BARRIER_PLACEHOLDER = 0 +} ProcSignalBarrierType; + /* * prototypes for functions in procsignal.c */ @@ -52,8 +63,12 @@ extern Size ProcSignalShmemSize(void); extern void ProcSignalShmemInit(void); extern void ProcSignalInit(int pss_idx); -extern int SendProcSignal(pid_t pid, ProcSignalReason reason, - BackendId backendId); +extern int SendProcSignal(pid_t pid, ProcSignalReason reason, + BackendId backendId); + +extern uint64 EmitProcSignalBarrier(ProcSignalBarrierType type); +extern void WaitForProcSignalBarrier(uint64 generation); +extern void ProcessProcSignalBarrier(void); extern void procsignal_sigusr1_handler(SIGNAL_ARGS); diff --git a/parser/include/storage/relfilenode.h b/parser/include/storage/relfilenode.h index fb596e2e..4de9fc1e 100644 --- a/parser/include/storage/relfilenode.h +++ b/parser/include/storage/relfilenode.h @@ -4,7 +4,7 @@ * Physical access information for relations. * * - * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/storage/relfilenode.h diff --git a/parser/include/storage/s_lock.h b/parser/include/storage/s_lock.h index de47041f..31a5ca6f 100644 --- a/parser/include/storage/s_lock.h +++ b/parser/include/storage/s_lock.h @@ -22,7 +22,7 @@ * Unlock a previously acquired lock. * * bool S_LOCK_FREE(slock_t *lock) - * Tests if the lock is free. Returns TRUE if free, FALSE if locked. + * Tests if the lock is free. Returns true if free, false if locked. * This does *not* change the state of the lock. * * void SPIN_DELAY(void) @@ -86,7 +86,7 @@ * when using the SysV semaphore code. * * - * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/storage/s_lock.h @@ -383,7 +383,7 @@ tas(volatile slock_t *lock) register slock_t _res; /* - * See comment in /pg/backend/port/tas/solaris_sparc.s for why this + * See comment in src/backend/port/tas/sunstudio_sparc.s for why this * uses "ldstub", and that file uses "cas". gcc currently generates * sparcv7-targeted binaries, so "cas" use isn't possible. */ @@ -919,7 +919,7 @@ spin_delay(void) /* Blow up if we didn't have any way to do spinlocks */ #ifndef HAS_TEST_AND_SET -#error PostgreSQL does not have native spinlock support on this platform. To continue the compilation, rerun configure using --disable-spinlocks. However, performance will be poor. Please report this to pgsql-bugs@postgresql.org. +#error PostgreSQL does not have native spinlock support on this platform. To continue the compilation, rerun configure using --disable-spinlocks. However, performance will be poor. Please report this to pgsql-bugs@lists.postgresql.org. #endif diff --git a/parser/include/storage/sharedfileset.h b/parser/include/storage/sharedfileset.h new file mode 100644 index 00000000..2d6cf077 --- /dev/null +++ b/parser/include/storage/sharedfileset.h @@ -0,0 +1,45 @@ +/*------------------------------------------------------------------------- + * + * sharedfileset.h + * Shared temporary file management. + * + * + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group + * Portions Copyright (c) 1994, Regents of the University of California + * + * src/include/storage/sharedfileset.h + * + *------------------------------------------------------------------------- + */ + +#ifndef SHAREDFILESET_H +#define SHAREDFILESET_H + +#include "storage/dsm.h" +#include "storage/fd.h" +#include "storage/spin.h" + +/* + * A set of temporary files that can be shared by multiple backends. + */ +typedef struct SharedFileSet +{ + pid_t creator_pid; /* PID of the creating process */ + uint32 number; /* per-PID identifier */ + slock_t mutex; /* mutex protecting the reference count */ + int refcnt; /* number of attached backends */ + int ntablespaces; /* number of tablespaces to use */ + Oid tablespaces[8]; /* OIDs of tablespaces to use. Assumes that + * it's rare that there more than temp + * tablespaces. */ +} SharedFileSet; + +extern void SharedFileSetInit(SharedFileSet *fileset, dsm_segment *seg); +extern void SharedFileSetAttach(SharedFileSet *fileset, dsm_segment *seg); +extern File SharedFileSetCreate(SharedFileSet *fileset, const char *name); +extern File SharedFileSetOpen(SharedFileSet *fileset, const char *name); +extern bool SharedFileSetDelete(SharedFileSet *fileset, const char *name, + bool error_on_failure); +extern void SharedFileSetDeleteAll(SharedFileSet *fileset); + +#endif diff --git a/parser/include/storage/shm_mq.h b/parser/include/storage/shm_mq.h index 7709efcc..5005f2ce 100644 --- a/parser/include/storage/shm_mq.h +++ b/parser/include/storage/shm_mq.h @@ -3,7 +3,7 @@ * shm_mq.h * single-reader, single-writer shared memory message queue * - * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/storage/shm_mq.h @@ -57,7 +57,7 @@ extern PGPROC *shm_mq_get_sender(shm_mq *); /* Set up backend-local queue state. */ extern shm_mq_handle *shm_mq_attach(shm_mq *mq, dsm_segment *seg, - BackgroundWorkerHandle *handle); + BackgroundWorkerHandle *handle); /* Associate worker handle with shm_mq. */ extern void shm_mq_set_handle(shm_mq_handle *, BackgroundWorkerHandle *); @@ -70,11 +70,11 @@ extern shm_mq *shm_mq_get_queue(shm_mq_handle *mqh); /* Send or receive messages. */ extern shm_mq_result shm_mq_send(shm_mq_handle *mqh, - Size nbytes, const void *data, bool nowait); + Size nbytes, const void *data, bool nowait); extern shm_mq_result shm_mq_sendv(shm_mq_handle *mqh, - shm_mq_iovec *iov, int iovcnt, bool nowait); + shm_mq_iovec *iov, int iovcnt, bool nowait); extern shm_mq_result shm_mq_receive(shm_mq_handle *mqh, - Size *nbytesp, void **datap, bool nowait); + Size *nbytesp, void **datap, bool nowait); /* Wait for our counterparty to attach to the queue. */ extern shm_mq_result shm_mq_wait_for_attach(shm_mq_handle *mqh); diff --git a/parser/include/storage/shm_toc.h b/parser/include/storage/shm_toc.h index 8ccd35d9..c3886d53 100644 --- a/parser/include/storage/shm_toc.h +++ b/parser/include/storage/shm_toc.h @@ -12,7 +12,7 @@ * other data structure within the segment and only put the pointer to * the data structure itself in the table of contents. * - * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/storage/shm_toc.h diff --git a/parser/include/storage/shmem.h b/parser/include/storage/shmem.h index c6993387..e9e32ab8 100644 --- a/parser/include/storage/shmem.h +++ b/parser/include/storage/shmem.h @@ -11,7 +11,7 @@ * at the same address. This means shared memory pointers can be passed * around directly between different processes. * - * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/storage/shmem.h @@ -40,7 +40,7 @@ extern void *ShmemAllocUnlocked(Size size); extern bool ShmemAddrIsValid(const void *addr); extern void InitShmemIndex(void); extern HTAB *ShmemInitHash(const char *name, long init_size, long max_size, - HASHCTL *infoP, int hash_flags); + HASHCTL *infoP, int hash_flags); extern void *ShmemInitStruct(const char *name, Size size, bool *foundPtr); extern Size add_size(Size s1, Size s2); extern Size mul_size(Size s1, Size s2); @@ -59,7 +59,8 @@ typedef struct { char key[SHMEM_INDEX_KEYSIZE]; /* string name */ void *location; /* location in shared mem */ - Size size; /* # bytes allocated for the structure */ + Size size; /* # bytes requested for the structure */ + Size allocated_size; /* # bytes actually allocated */ } ShmemIndexEnt; /* @@ -71,9 +72,9 @@ extern void SHMQueueDelete(SHM_QUEUE *queue); extern void SHMQueueInsertBefore(SHM_QUEUE *queue, SHM_QUEUE *elem); extern void SHMQueueInsertAfter(SHM_QUEUE *queue, SHM_QUEUE *elem); extern Pointer SHMQueueNext(const SHM_QUEUE *queue, const SHM_QUEUE *curElem, - Size linkOffset); + Size linkOffset); extern Pointer SHMQueuePrev(const SHM_QUEUE *queue, const SHM_QUEUE *curElem, - Size linkOffset); + Size linkOffset); extern bool SHMQueueEmpty(const SHM_QUEUE *queue); extern bool SHMQueueIsDetached(const SHM_QUEUE *queue); diff --git a/parser/include/storage/sinval.h b/parser/include/storage/sinval.h index 84c0b02d..903818be 100644 --- a/parser/include/storage/sinval.h +++ b/parser/include/storage/sinval.h @@ -4,7 +4,7 @@ * POSTGRES shared cache invalidation communication definitions. * * - * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/storage/sinval.h @@ -128,10 +128,9 @@ extern uint64 SharedInvalidMessageCounter; extern volatile sig_atomic_t catchupInterruptPending; extern void SendSharedInvalidMessages(const SharedInvalidationMessage *msgs, - int n); -extern void ReceiveSharedInvalidMessages( - void (*invalFunction) (SharedInvalidationMessage *msg), - void (*resetFunction) (void)); + int n); +extern void ReceiveSharedInvalidMessages(void (*invalFunction) (SharedInvalidationMessage *msg), + void (*resetFunction) (void)); /* signal handler for catchup events (PROCSIG_CATCHUP_INTERRUPT) */ extern void HandleCatchupInterrupt(void); @@ -143,11 +142,11 @@ extern void HandleCatchupInterrupt(void); */ extern void ProcessCatchupInterrupt(void); -extern int xactGetCommittedInvalidationMessages(SharedInvalidationMessage **msgs, - bool *RelcacheInitFileInval); +extern int xactGetCommittedInvalidationMessages(SharedInvalidationMessage **msgs, + bool *RelcacheInitFileInval); extern void ProcessCommittedInvalidationMessages(SharedInvalidationMessage *msgs, - int nmsgs, bool RelcacheInitFileInval, - Oid dbid, Oid tsid); + int nmsgs, bool RelcacheInitFileInval, + Oid dbid, Oid tsid); extern void LocalExecuteInvalidationMessage(SharedInvalidationMessage *msg); diff --git a/parser/include/storage/sinvaladt.h b/parser/include/storage/sinvaladt.h new file mode 100644 index 00000000..426f5478 --- /dev/null +++ b/parser/include/storage/sinvaladt.h @@ -0,0 +1,43 @@ +/*------------------------------------------------------------------------- + * + * sinvaladt.h + * POSTGRES shared cache invalidation data manager. + * + * The shared cache invalidation manager is responsible for transmitting + * invalidation messages between backends. Any message sent by any backend + * must be delivered to all already-running backends before it can be + * forgotten. (If we run out of space, we instead deliver a "RESET" + * message to backends that have fallen too far behind.) + * + * The struct type SharedInvalidationMessage, defining the contents of + * a single message, is defined in sinval.h. + * + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group + * Portions Copyright (c) 1994, Regents of the University of California + * + * src/include/storage/sinvaladt.h + * + *------------------------------------------------------------------------- + */ +#ifndef SINVALADT_H +#define SINVALADT_H + +#include "storage/lock.h" +#include "storage/sinval.h" + +/* + * prototypes for functions in sinvaladt.c + */ +extern Size SInvalShmemSize(void); +extern void CreateSharedInvalidationState(void); +extern void SharedInvalBackendInit(bool sendOnly); +extern PGPROC *BackendIdGetProc(int backendID); +extern void BackendIdGetTransactionIds(int backendID, TransactionId *xid, TransactionId *xmin); + +extern void SIInsertDataEntries(const SharedInvalidationMessage *data, int n); +extern int SIGetDataEntries(SharedInvalidationMessage *data, int datasize); +extern void SICleanupQueue(bool callerHasWriteLock, int minFree); + +extern LocalTransactionId GetNextLocalTransactionId(void); + +#endif /* SINVALADT_H */ diff --git a/parser/include/storage/smgr.h b/parser/include/storage/smgr.h new file mode 100644 index 00000000..65666595 --- /dev/null +++ b/parser/include/storage/smgr.h @@ -0,0 +1,109 @@ +/*------------------------------------------------------------------------- + * + * smgr.h + * storage manager switch public interface declarations. + * + * + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group + * Portions Copyright (c) 1994, Regents of the University of California + * + * src/include/storage/smgr.h + * + *------------------------------------------------------------------------- + */ +#ifndef SMGR_H +#define SMGR_H + +#include "lib/ilist.h" +#include "storage/block.h" +#include "storage/relfilenode.h" + +/* + * smgr.c maintains a table of SMgrRelation objects, which are essentially + * cached file handles. An SMgrRelation is created (if not already present) + * by smgropen(), and destroyed by smgrclose(). Note that neither of these + * operations imply I/O, they just create or destroy a hashtable entry. + * (But smgrclose() may release associated resources, such as OS-level file + * descriptors.) + * + * An SMgrRelation may have an "owner", which is just a pointer to it from + * somewhere else; smgr.c will clear this pointer if the SMgrRelation is + * closed. We use this to avoid dangling pointers from relcache to smgr + * without having to make the smgr explicitly aware of relcache. There + * can't be more than one "owner" pointer per SMgrRelation, but that's + * all we need. + * + * SMgrRelations that do not have an "owner" are considered to be transient, + * and are deleted at end of transaction. + */ +typedef struct SMgrRelationData +{ + /* rnode is the hashtable lookup key, so it must be first! */ + RelFileNodeBackend smgr_rnode; /* relation physical identifier */ + + /* pointer to owning pointer, or NULL if none */ + struct SMgrRelationData **smgr_owner; + + /* + * These next three fields are not actually used or manipulated by smgr, + * except that they are reset to InvalidBlockNumber upon a cache flush + * event (in particular, upon truncation of the relation). Higher levels + * store cached state here so that it will be reset when truncation + * happens. In all three cases, InvalidBlockNumber means "unknown". + */ + BlockNumber smgr_targblock; /* current insertion target block */ + BlockNumber smgr_fsm_nblocks; /* last known size of fsm fork */ + BlockNumber smgr_vm_nblocks; /* last known size of vm fork */ + + /* additional public fields may someday exist here */ + + /* + * Fields below here are intended to be private to smgr.c and its + * submodules. Do not touch them from elsewhere. + */ + int smgr_which; /* storage manager selector */ + + /* + * for md.c; per-fork arrays of the number of open segments + * (md_num_open_segs) and the segments themselves (md_seg_fds). + */ + int md_num_open_segs[MAX_FORKNUM + 1]; + struct _MdfdVec *md_seg_fds[MAX_FORKNUM + 1]; + + /* if unowned, list link in list of all unowned SMgrRelations */ + dlist_node node; +} SMgrRelationData; + +typedef SMgrRelationData *SMgrRelation; + +#define SmgrIsTemp(smgr) \ + RelFileNodeBackendIsTemp((smgr)->smgr_rnode) + +extern void smgrinit(void); +extern SMgrRelation smgropen(RelFileNode rnode, BackendId backend); +extern bool smgrexists(SMgrRelation reln, ForkNumber forknum); +extern void smgrsetowner(SMgrRelation *owner, SMgrRelation reln); +extern void smgrclearowner(SMgrRelation *owner, SMgrRelation reln); +extern void smgrclose(SMgrRelation reln); +extern void smgrcloseall(void); +extern void smgrclosenode(RelFileNodeBackend rnode); +extern void smgrcreate(SMgrRelation reln, ForkNumber forknum, bool isRedo); +extern void smgrdosyncall(SMgrRelation *rels, int nrels); +extern void smgrdounlinkall(SMgrRelation *rels, int nrels, bool isRedo); +extern void smgrextend(SMgrRelation reln, ForkNumber forknum, + BlockNumber blocknum, char *buffer, bool skipFsync); +extern bool smgrprefetch(SMgrRelation reln, ForkNumber forknum, + BlockNumber blocknum); +extern void smgrread(SMgrRelation reln, ForkNumber forknum, + BlockNumber blocknum, char *buffer); +extern void smgrwrite(SMgrRelation reln, ForkNumber forknum, + BlockNumber blocknum, char *buffer, bool skipFsync); +extern void smgrwriteback(SMgrRelation reln, ForkNumber forknum, + BlockNumber blocknum, BlockNumber nblocks); +extern BlockNumber smgrnblocks(SMgrRelation reln, ForkNumber forknum); +extern void smgrtruncate(SMgrRelation reln, ForkNumber *forknum, + int nforks, BlockNumber *nblocks); +extern void smgrimmedsync(SMgrRelation reln, ForkNumber forknum); +extern void AtEOXact_SMgr(void); + +#endif /* SMGR_H */ diff --git a/parser/include/storage/spin.h b/parser/include/storage/spin.h index 66698645..5ad25d0f 100644 --- a/parser/include/storage/spin.h +++ b/parser/include/storage/spin.h @@ -19,7 +19,7 @@ * Unlock a previously acquired lock. * * bool SpinLockFree(slock_t *lock) - * Tests if the lock is free. Returns TRUE if free, FALSE if locked. + * Tests if the lock is free. Returns true if free, false if locked. * This does *not* change the state of the lock. * * Callers must beware that the macro argument may be evaluated multiple @@ -41,7 +41,7 @@ * be again. * * - * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/storage/spin.h diff --git a/parser/include/storage/standby.h b/parser/include/storage/standby.h index f5404b4c..cfbe426e 100644 --- a/parser/include/storage/standby.h +++ b/parser/include/storage/standby.h @@ -4,7 +4,7 @@ * Definitions for hot standby mode. * * - * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/storage/standby.h @@ -14,10 +14,10 @@ #ifndef STANDBY_H #define STANDBY_H -#include "storage/standbydefs.h" #include "storage/lock.h" #include "storage/procsignal.h" #include "storage/relfilenode.h" +#include "storage/standbydefs.h" /* User-settable GUC parameters */ extern int vacuum_defer_cleanup_age; @@ -28,7 +28,7 @@ extern void InitRecoveryTransactionEnvironment(void); extern void ShutdownRecoveryTransactionEnvironment(void); extern void ResolveRecoveryConflictWithSnapshot(TransactionId latestRemovedXid, - RelFileNode node); + RelFileNode node); extern void ResolveRecoveryConflictWithTablespace(Oid tsid); extern void ResolveRecoveryConflictWithDatabase(Oid dbid); @@ -48,9 +48,9 @@ extern void StandbyLockTimeoutHandler(void); */ extern void StandbyAcquireAccessExclusiveLock(TransactionId xid, Oid dbOid, Oid relOid); extern void StandbyReleaseLockTree(TransactionId xid, - int nsubxids, TransactionId *subxids); + int nsubxids, TransactionId *subxids); extern void StandbyReleaseAllLocks(void); -extern void StandbyReleaseOldLocks(int nxids, TransactionId *xids); +extern void StandbyReleaseOldLocks(TransactionId oldxid); #define MinSizeOfXactRunningXacts offsetof(xl_running_xacts, xids) @@ -72,7 +72,7 @@ typedef struct RunningTransactionsData int xcnt; /* # of xact ids in xids[] */ int subxcnt; /* # of subxact ids in xids[] */ bool subxid_overflow; /* snapshot overflowed, subxids missing */ - TransactionId nextXid; /* copy of ShmemVariableCache->nextXid */ + TransactionId nextXid; /* xid from ShmemVariableCache->nextFullXid */ TransactionId oldestRunningXid; /* *not* oldestXmin */ TransactionId latestCompletedXid; /* so we can set xmax */ @@ -86,6 +86,6 @@ extern void LogAccessExclusiveLockPrepare(void); extern XLogRecPtr LogStandbySnapshot(void); extern void LogStandbyInvalidations(int nmsgs, SharedInvalidationMessage *msgs, - bool relcacheInitFileInval); + bool relcacheInitFileInval); #endif /* STANDBY_H */ diff --git a/parser/include/storage/standbydefs.h b/parser/include/storage/standbydefs.h index ff2ac05d..4876d2ee 100644 --- a/parser/include/storage/standbydefs.h +++ b/parser/include/storage/standbydefs.h @@ -1,10 +1,10 @@ /*------------------------------------------------------------------------- * - * standbydef.h + * standbydefs.h * Frontend exposed definitions for hot standby mode. * * - * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/storage/standbydefs.h @@ -24,9 +24,9 @@ extern void standby_redo(XLogReaderState *record); extern void standby_desc(StringInfo buf, XLogReaderState *record); extern const char *standby_identify(uint8 info); extern void standby_desc_invalidations(StringInfo buf, - int nmsgs, SharedInvalidationMessage *msgs, - Oid dbId, Oid tsId, - bool relcacheInitFileInval); + int nmsgs, SharedInvalidationMessage *msgs, + Oid dbId, Oid tsId, + bool relcacheInitFileInval); /* * XLOG message types @@ -49,7 +49,7 @@ typedef struct xl_running_xacts int xcnt; /* # of xact ids in xids[] */ int subxcnt; /* # of subxact ids in xids[] */ bool subxid_overflow; /* snapshot overflowed, subxids missing */ - TransactionId nextXid; /* copy of ShmemVariableCache->nextXid */ + TransactionId nextXid; /* xid from ShmemVariableCache->nextFullXid */ TransactionId oldestRunningXid; /* *not* oldestXmin */ TransactionId latestCompletedXid; /* so we can set xmax */ diff --git a/parser/include/storage/sync.h b/parser/include/storage/sync.h new file mode 100644 index 00000000..e16ab8e7 --- /dev/null +++ b/parser/include/storage/sync.h @@ -0,0 +1,62 @@ +/*------------------------------------------------------------------------- + * + * sync.h + * File synchronization management code. + * + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group + * Portions Copyright (c) 1994, Regents of the University of California + * + * src/include/storage/sync.h + * + *------------------------------------------------------------------------- + */ +#ifndef SYNC_H +#define SYNC_H + +#include "storage/relfilenode.h" + +/* + * Type of sync request. These are used to manage the set of pending + * requests to call a sync handler's sync or unlink functions at the next + * checkpoint. + */ +typedef enum SyncRequestType +{ + SYNC_REQUEST, /* schedule a call of sync function */ + SYNC_UNLINK_REQUEST, /* schedule a call of unlink function */ + SYNC_FORGET_REQUEST, /* forget all calls for a tag */ + SYNC_FILTER_REQUEST /* forget all calls satisfying match fn */ +} SyncRequestType; + +/* + * Which set of functions to use to handle a given request. The values of + * the enumerators must match the indexes of the function table in sync.c. + */ +typedef enum SyncRequestHandler +{ + SYNC_HANDLER_MD = 0 /* md smgr */ +} SyncRequestHandler; + +/* + * A tag identifying a file. Currently it has the members required for md.c's + * usage, but sync.c has no knowledge of the internal structure, and it is + * liable to change as required by future handlers. + */ +typedef struct FileTag +{ + int16 handler; /* SyncRequestHandler value, saving space */ + int16 forknum; /* ForkNumber, saving space */ + RelFileNode rnode; + uint32 segno; +} FileTag; + +extern void InitSync(void); +extern void SyncPreCheckpoint(void); +extern void SyncPostCheckpoint(void); +extern void ProcessSyncRequests(void); +extern void RememberSyncRequest(const FileTag *ftag, SyncRequestType type); +extern void EnableSyncRequestForwarding(void); +extern bool RegisterSyncRequest(const FileTag *ftag, SyncRequestType type, + bool retryOnError); + +#endif /* SYNC_H */ diff --git a/parser/include/tcop/cmdtag.h b/parser/include/tcop/cmdtag.h new file mode 100644 index 00000000..f75a91e7 --- /dev/null +++ b/parser/include/tcop/cmdtag.h @@ -0,0 +1,58 @@ +/*------------------------------------------------------------------------- + * + * cmdtag.h + * Declarations for commandtag names and enumeration. + * + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group + * Portions Copyright (c) 1994, Regents of the University of California + * + * src/include/tcop/cmdtag.h + * + *------------------------------------------------------------------------- + */ +#ifndef CMDTAG_H +#define CMDTAG_H + + +#define PG_CMDTAG(tag, name, evtrgok, rwrok, rowcnt) \ + tag, + +typedef enum CommandTag +{ +#include "tcop/cmdtaglist.h" + COMMAND_TAG_NEXTTAG +} CommandTag; + +#undef PG_CMDTAG + +typedef struct QueryCompletion +{ + CommandTag commandTag; + uint64 nprocessed; +} QueryCompletion; + + +static inline void +SetQueryCompletion(QueryCompletion *qc, CommandTag commandTag, + uint64 nprocessed) +{ + qc->commandTag = commandTag; + qc->nprocessed = nprocessed; +} + +static inline void +CopyQueryCompletion(QueryCompletion *dst, const QueryCompletion *src) +{ + dst->commandTag = src->commandTag; + dst->nprocessed = src->nprocessed; +} + + +extern void InitializeQueryCompletion(QueryCompletion *qc); +extern const char *GetCommandTagName(CommandTag commandTag); +extern bool command_tag_display_rowcount(CommandTag commandTag); +extern bool command_tag_event_trigger_ok(CommandTag commandTag); +extern bool command_tag_table_rewrite_ok(CommandTag commandTag); +extern CommandTag GetCommandTagEnum(const char *tagname); + +#endif /* CMDTAG_H */ diff --git a/parser/include/tcop/cmdtaglist.h b/parser/include/tcop/cmdtaglist.h new file mode 100644 index 00000000..be94852b --- /dev/null +++ b/parser/include/tcop/cmdtaglist.h @@ -0,0 +1,217 @@ +/*---------------------------------------------------------------------- + * + * cmdtaglist.h + * Command tags + * + * The command tag list is kept in its own source file for possible use + * by automatic tools. The exact representation of a command tag is + * determined by the PG_CMDTAG macro, which is not defined in this file; + * it can be defined by the caller for special purposes. + * + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group + * Portions Copyright (c) 1994, Regents of the University of California + * + * src/include/tcop/cmdtaglist.h + * + *---------------------------------------------------------------------- + */ + +/* there is deliberately not an #ifndef CMDTAGLIST_H here */ + +/* + * List of command tags. The entries must be sorted alphabetically on their + * textual name, so that we can bsearch on it; see GetCommandTagEnum(). + */ + +/* symbol name, textual name, event_trigger_ok, table_rewrite_ok, rowcount */ +PG_CMDTAG(CMDTAG_UNKNOWN, "???", false, false, false) +PG_CMDTAG(CMDTAG_ALTER_ACCESS_METHOD, "ALTER ACCESS METHOD", true, false, false) +PG_CMDTAG(CMDTAG_ALTER_AGGREGATE, "ALTER AGGREGATE", true, false, false) +PG_CMDTAG(CMDTAG_ALTER_CAST, "ALTER CAST", true, false, false) +PG_CMDTAG(CMDTAG_ALTER_COLLATION, "ALTER COLLATION", true, false, false) +PG_CMDTAG(CMDTAG_ALTER_CONSTRAINT, "ALTER CONSTRAINT", true, false, false) +PG_CMDTAG(CMDTAG_ALTER_CONVERSION, "ALTER CONVERSION", true, false, false) +PG_CMDTAG(CMDTAG_ALTER_DATABASE, "ALTER DATABASE", false, false, false) +PG_CMDTAG(CMDTAG_ALTER_DEFAULT_PRIVILEGES, "ALTER DEFAULT PRIVILEGES", true, false, false) +PG_CMDTAG(CMDTAG_ALTER_DOMAIN, "ALTER DOMAIN", true, false, false) +PG_CMDTAG(CMDTAG_ALTER_EVENT_TRIGGER, "ALTER EVENT TRIGGER", false, false, false) +PG_CMDTAG(CMDTAG_ALTER_EXTENSION, "ALTER EXTENSION", true, false, false) +PG_CMDTAG(CMDTAG_ALTER_FOREIGN_DATA_WRAPPER, "ALTER FOREIGN DATA WRAPPER", true, false, false) +PG_CMDTAG(CMDTAG_ALTER_FOREIGN_TABLE, "ALTER FOREIGN TABLE", true, false, false) +PG_CMDTAG(CMDTAG_ALTER_FUNCTION, "ALTER FUNCTION", true, false, false) +PG_CMDTAG(CMDTAG_ALTER_INDEX, "ALTER INDEX", true, false, false) +PG_CMDTAG(CMDTAG_ALTER_LANGUAGE, "ALTER LANGUAGE", true, false, false) +PG_CMDTAG(CMDTAG_ALTER_LARGE_OBJECT, "ALTER LARGE OBJECT", true, false, false) +PG_CMDTAG(CMDTAG_ALTER_MATERIALIZED_VIEW, "ALTER MATERIALIZED VIEW", true, false, false) +PG_CMDTAG(CMDTAG_ALTER_OPERATOR, "ALTER OPERATOR", true, false, false) +PG_CMDTAG(CMDTAG_ALTER_OPERATOR_CLASS, "ALTER OPERATOR CLASS", true, false, false) +PG_CMDTAG(CMDTAG_ALTER_OPERATOR_FAMILY, "ALTER OPERATOR FAMILY", true, false, false) +PG_CMDTAG(CMDTAG_ALTER_POLICY, "ALTER POLICY", true, false, false) +PG_CMDTAG(CMDTAG_ALTER_PROCEDURE, "ALTER PROCEDURE", true, false, false) +PG_CMDTAG(CMDTAG_ALTER_PUBLICATION, "ALTER PUBLICATION", true, false, false) +PG_CMDTAG(CMDTAG_ALTER_ROLE, "ALTER ROLE", false, false, false) +PG_CMDTAG(CMDTAG_ALTER_ROUTINE, "ALTER ROUTINE", true, false, false) +PG_CMDTAG(CMDTAG_ALTER_RULE, "ALTER RULE", true, false, false) +PG_CMDTAG(CMDTAG_ALTER_SCHEMA, "ALTER SCHEMA", true, false, false) +PG_CMDTAG(CMDTAG_ALTER_SEQUENCE, "ALTER SEQUENCE", true, false, false) +PG_CMDTAG(CMDTAG_ALTER_SERVER, "ALTER SERVER", true, false, false) +PG_CMDTAG(CMDTAG_ALTER_STATISTICS, "ALTER STATISTICS", true, false, false) +PG_CMDTAG(CMDTAG_ALTER_SUBSCRIPTION, "ALTER SUBSCRIPTION", true, false, false) +PG_CMDTAG(CMDTAG_ALTER_SYSTEM, "ALTER SYSTEM", false, false, false) +PG_CMDTAG(CMDTAG_ALTER_TABLE, "ALTER TABLE", true, true, false) +PG_CMDTAG(CMDTAG_ALTER_TABLESPACE, "ALTER TABLESPACE", false, false, false) +PG_CMDTAG(CMDTAG_ALTER_TEXT_SEARCH_CONFIGURATION, "ALTER TEXT SEARCH CONFIGURATION", true, false, false) +PG_CMDTAG(CMDTAG_ALTER_TEXT_SEARCH_DICTIONARY, "ALTER TEXT SEARCH DICTIONARY", true, false, false) +PG_CMDTAG(CMDTAG_ALTER_TEXT_SEARCH_PARSER, "ALTER TEXT SEARCH PARSER", true, false, false) +PG_CMDTAG(CMDTAG_ALTER_TEXT_SEARCH_TEMPLATE, "ALTER TEXT SEARCH TEMPLATE", true, false, false) +PG_CMDTAG(CMDTAG_ALTER_TRANSFORM, "ALTER TRANSFORM", true, false, false) +PG_CMDTAG(CMDTAG_ALTER_TRIGGER, "ALTER TRIGGER", true, false, false) +PG_CMDTAG(CMDTAG_ALTER_TYPE, "ALTER TYPE", true, true, false) +PG_CMDTAG(CMDTAG_ALTER_USER_MAPPING, "ALTER USER MAPPING", true, false, false) +PG_CMDTAG(CMDTAG_ALTER_VIEW, "ALTER VIEW", true, false, false) +PG_CMDTAG(CMDTAG_ANALYZE, "ANALYZE", false, false, false) +PG_CMDTAG(CMDTAG_BEGIN, "BEGIN", false, false, false) +PG_CMDTAG(CMDTAG_CALL, "CALL", false, false, false) +PG_CMDTAG(CMDTAG_CHECKPOINT, "CHECKPOINT", false, false, false) +PG_CMDTAG(CMDTAG_CLOSE, "CLOSE", false, false, false) +PG_CMDTAG(CMDTAG_CLOSE_CURSOR, "CLOSE CURSOR", false, false, false) +PG_CMDTAG(CMDTAG_CLOSE_CURSOR_ALL, "CLOSE CURSOR ALL", false, false, false) +PG_CMDTAG(CMDTAG_CLUSTER, "CLUSTER", false, false, false) +PG_CMDTAG(CMDTAG_COMMENT, "COMMENT", true, false, false) +PG_CMDTAG(CMDTAG_COMMIT, "COMMIT", false, false, false) +PG_CMDTAG(CMDTAG_COMMIT_PREPARED, "COMMIT PREPARED", false, false, false) +PG_CMDTAG(CMDTAG_COPY, "COPY", false, false, true) +PG_CMDTAG(CMDTAG_COPY_FROM, "COPY FROM", false, false, false) +PG_CMDTAG(CMDTAG_CREATE_ACCESS_METHOD, "CREATE ACCESS METHOD", true, false, false) +PG_CMDTAG(CMDTAG_CREATE_AGGREGATE, "CREATE AGGREGATE", true, false, false) +PG_CMDTAG(CMDTAG_CREATE_CAST, "CREATE CAST", true, false, false) +PG_CMDTAG(CMDTAG_CREATE_COLLATION, "CREATE COLLATION", true, false, false) +PG_CMDTAG(CMDTAG_CREATE_CONSTRAINT, "CREATE CONSTRAINT", true, false, false) +PG_CMDTAG(CMDTAG_CREATE_CONVERSION, "CREATE CONVERSION", true, false, false) +PG_CMDTAG(CMDTAG_CREATE_DATABASE, "CREATE DATABASE", false, false, false) +PG_CMDTAG(CMDTAG_CREATE_DOMAIN, "CREATE DOMAIN", true, false, false) +PG_CMDTAG(CMDTAG_CREATE_EVENT_TRIGGER, "CREATE EVENT TRIGGER", false, false, false) +PG_CMDTAG(CMDTAG_CREATE_EXTENSION, "CREATE EXTENSION", true, false, false) +PG_CMDTAG(CMDTAG_CREATE_FOREIGN_DATA_WRAPPER, "CREATE FOREIGN DATA WRAPPER", true, false, false) +PG_CMDTAG(CMDTAG_CREATE_FOREIGN_TABLE, "CREATE FOREIGN TABLE", true, false, false) +PG_CMDTAG(CMDTAG_CREATE_FUNCTION, "CREATE FUNCTION", true, false, false) +PG_CMDTAG(CMDTAG_CREATE_INDEX, "CREATE INDEX", true, false, false) +PG_CMDTAG(CMDTAG_CREATE_LANGUAGE, "CREATE LANGUAGE", true, false, false) +PG_CMDTAG(CMDTAG_CREATE_MATERIALIZED_VIEW, "CREATE MATERIALIZED VIEW", true, false, false) +PG_CMDTAG(CMDTAG_CREATE_OPERATOR, "CREATE OPERATOR", true, false, false) +PG_CMDTAG(CMDTAG_CREATE_OPERATOR_CLASS, "CREATE OPERATOR CLASS", true, false, false) +PG_CMDTAG(CMDTAG_CREATE_OPERATOR_FAMILY, "CREATE OPERATOR FAMILY", true, false, false) +PG_CMDTAG(CMDTAG_CREATE_POLICY, "CREATE POLICY", true, false, false) +PG_CMDTAG(CMDTAG_CREATE_PROCEDURE, "CREATE PROCEDURE", true, false, false) +PG_CMDTAG(CMDTAG_CREATE_PUBLICATION, "CREATE PUBLICATION", true, false, false) +PG_CMDTAG(CMDTAG_CREATE_ROLE, "CREATE ROLE", false, false, false) +PG_CMDTAG(CMDTAG_CREATE_ROUTINE, "CREATE ROUTINE", true, false, false) +PG_CMDTAG(CMDTAG_CREATE_RULE, "CREATE RULE", true, false, false) +PG_CMDTAG(CMDTAG_CREATE_SCHEMA, "CREATE SCHEMA", true, false, false) +PG_CMDTAG(CMDTAG_CREATE_SEQUENCE, "CREATE SEQUENCE", true, false, false) +PG_CMDTAG(CMDTAG_CREATE_SERVER, "CREATE SERVER", true, false, false) +PG_CMDTAG(CMDTAG_CREATE_STATISTICS, "CREATE STATISTICS", true, false, false) +PG_CMDTAG(CMDTAG_CREATE_SUBSCRIPTION, "CREATE SUBSCRIPTION", true, false, false) +PG_CMDTAG(CMDTAG_CREATE_TABLE, "CREATE TABLE", true, false, false) +PG_CMDTAG(CMDTAG_CREATE_TABLE_AS, "CREATE TABLE AS", true, false, false) +PG_CMDTAG(CMDTAG_CREATE_TABLESPACE, "CREATE TABLESPACE", false, false, false) +PG_CMDTAG(CMDTAG_CREATE_TEXT_SEARCH_CONFIGURATION, "CREATE TEXT SEARCH CONFIGURATION", true, false, false) +PG_CMDTAG(CMDTAG_CREATE_TEXT_SEARCH_DICTIONARY, "CREATE TEXT SEARCH DICTIONARY", true, false, false) +PG_CMDTAG(CMDTAG_CREATE_TEXT_SEARCH_PARSER, "CREATE TEXT SEARCH PARSER", true, false, false) +PG_CMDTAG(CMDTAG_CREATE_TEXT_SEARCH_TEMPLATE, "CREATE TEXT SEARCH TEMPLATE", true, false, false) +PG_CMDTAG(CMDTAG_CREATE_TRANSFORM, "CREATE TRANSFORM", true, false, false) +PG_CMDTAG(CMDTAG_CREATE_TRIGGER, "CREATE TRIGGER", true, false, false) +PG_CMDTAG(CMDTAG_CREATE_TYPE, "CREATE TYPE", true, false, false) +PG_CMDTAG(CMDTAG_CREATE_USER_MAPPING, "CREATE USER MAPPING", true, false, false) +PG_CMDTAG(CMDTAG_CREATE_VIEW, "CREATE VIEW", true, false, false) +PG_CMDTAG(CMDTAG_DEALLOCATE, "DEALLOCATE", false, false, false) +PG_CMDTAG(CMDTAG_DEALLOCATE_ALL, "DEALLOCATE ALL", false, false, false) +PG_CMDTAG(CMDTAG_DECLARE_CURSOR, "DECLARE CURSOR", false, false, false) +PG_CMDTAG(CMDTAG_DELETE, "DELETE", false, false, true) +PG_CMDTAG(CMDTAG_DISCARD, "DISCARD", false, false, false) +PG_CMDTAG(CMDTAG_DISCARD_ALL, "DISCARD ALL", false, false, false) +PG_CMDTAG(CMDTAG_DISCARD_PLANS, "DISCARD PLANS", false, false, false) +PG_CMDTAG(CMDTAG_DISCARD_SEQUENCES, "DISCARD SEQUENCES", false, false, false) +PG_CMDTAG(CMDTAG_DISCARD_TEMP, "DISCARD TEMP", false, false, false) +PG_CMDTAG(CMDTAG_DO, "DO", false, false, false) +PG_CMDTAG(CMDTAG_DROP_ACCESS_METHOD, "DROP ACCESS METHOD", true, false, false) +PG_CMDTAG(CMDTAG_DROP_AGGREGATE, "DROP AGGREGATE", true, false, false) +PG_CMDTAG(CMDTAG_DROP_CAST, "DROP CAST", true, false, false) +PG_CMDTAG(CMDTAG_DROP_COLLATION, "DROP COLLATION", true, false, false) +PG_CMDTAG(CMDTAG_DROP_CONSTRAINT, "DROP CONSTRAINT", true, false, false) +PG_CMDTAG(CMDTAG_DROP_CONVERSION, "DROP CONVERSION", true, false, false) +PG_CMDTAG(CMDTAG_DROP_DATABASE, "DROP DATABASE", false, false, false) +PG_CMDTAG(CMDTAG_DROP_DOMAIN, "DROP DOMAIN", true, false, false) +PG_CMDTAG(CMDTAG_DROP_EVENT_TRIGGER, "DROP EVENT TRIGGER", false, false, false) +PG_CMDTAG(CMDTAG_DROP_EXTENSION, "DROP EXTENSION", true, false, false) +PG_CMDTAG(CMDTAG_DROP_FOREIGN_DATA_WRAPPER, "DROP FOREIGN DATA WRAPPER", true, false, false) +PG_CMDTAG(CMDTAG_DROP_FOREIGN_TABLE, "DROP FOREIGN TABLE", true, false, false) +PG_CMDTAG(CMDTAG_DROP_FUNCTION, "DROP FUNCTION", true, false, false) +PG_CMDTAG(CMDTAG_DROP_INDEX, "DROP INDEX", true, false, false) +PG_CMDTAG(CMDTAG_DROP_LANGUAGE, "DROP LANGUAGE", true, false, false) +PG_CMDTAG(CMDTAG_DROP_MATERIALIZED_VIEW, "DROP MATERIALIZED VIEW", true, false, false) +PG_CMDTAG(CMDTAG_DROP_OPERATOR, "DROP OPERATOR", true, false, false) +PG_CMDTAG(CMDTAG_DROP_OPERATOR_CLASS, "DROP OPERATOR CLASS", true, false, false) +PG_CMDTAG(CMDTAG_DROP_OPERATOR_FAMILY, "DROP OPERATOR FAMILY", true, false, false) +PG_CMDTAG(CMDTAG_DROP_OWNED, "DROP OWNED", true, false, false) +PG_CMDTAG(CMDTAG_DROP_POLICY, "DROP POLICY", true, false, false) +PG_CMDTAG(CMDTAG_DROP_PROCEDURE, "DROP PROCEDURE", true, false, false) +PG_CMDTAG(CMDTAG_DROP_PUBLICATION, "DROP PUBLICATION", true, false, false) +PG_CMDTAG(CMDTAG_DROP_ROLE, "DROP ROLE", false, false, false) +PG_CMDTAG(CMDTAG_DROP_ROUTINE, "DROP ROUTINE", true, false, false) +PG_CMDTAG(CMDTAG_DROP_RULE, "DROP RULE", true, false, false) +PG_CMDTAG(CMDTAG_DROP_SCHEMA, "DROP SCHEMA", true, false, false) +PG_CMDTAG(CMDTAG_DROP_SEQUENCE, "DROP SEQUENCE", true, false, false) +PG_CMDTAG(CMDTAG_DROP_SERVER, "DROP SERVER", true, false, false) +PG_CMDTAG(CMDTAG_DROP_STATISTICS, "DROP STATISTICS", true, false, false) +PG_CMDTAG(CMDTAG_DROP_SUBSCRIPTION, "DROP SUBSCRIPTION", true, false, false) +PG_CMDTAG(CMDTAG_DROP_TABLE, "DROP TABLE", true, false, false) +PG_CMDTAG(CMDTAG_DROP_TABLESPACE, "DROP TABLESPACE", false, false, false) +PG_CMDTAG(CMDTAG_DROP_TEXT_SEARCH_CONFIGURATION, "DROP TEXT SEARCH CONFIGURATION", true, false, false) +PG_CMDTAG(CMDTAG_DROP_TEXT_SEARCH_DICTIONARY, "DROP TEXT SEARCH DICTIONARY", true, false, false) +PG_CMDTAG(CMDTAG_DROP_TEXT_SEARCH_PARSER, "DROP TEXT SEARCH PARSER", true, false, false) +PG_CMDTAG(CMDTAG_DROP_TEXT_SEARCH_TEMPLATE, "DROP TEXT SEARCH TEMPLATE", true, false, false) +PG_CMDTAG(CMDTAG_DROP_TRANSFORM, "DROP TRANSFORM", true, false, false) +PG_CMDTAG(CMDTAG_DROP_TRIGGER, "DROP TRIGGER", true, false, false) +PG_CMDTAG(CMDTAG_DROP_TYPE, "DROP TYPE", true, false, false) +PG_CMDTAG(CMDTAG_DROP_USER_MAPPING, "DROP USER MAPPING", true, false, false) +PG_CMDTAG(CMDTAG_DROP_VIEW, "DROP VIEW", true, false, false) +PG_CMDTAG(CMDTAG_EXECUTE, "EXECUTE", false, false, false) +PG_CMDTAG(CMDTAG_EXPLAIN, "EXPLAIN", false, false, false) +PG_CMDTAG(CMDTAG_FETCH, "FETCH", false, false, true) +PG_CMDTAG(CMDTAG_GRANT, "GRANT", true, false, false) +PG_CMDTAG(CMDTAG_GRANT_ROLE, "GRANT ROLE", false, false, false) +PG_CMDTAG(CMDTAG_IMPORT_FOREIGN_SCHEMA, "IMPORT FOREIGN SCHEMA", true, false, false) +PG_CMDTAG(CMDTAG_INSERT, "INSERT", false, false, true) +PG_CMDTAG(CMDTAG_LISTEN, "LISTEN", false, false, false) +PG_CMDTAG(CMDTAG_LOAD, "LOAD", false, false, false) +PG_CMDTAG(CMDTAG_LOCK_TABLE, "LOCK TABLE", false, false, false) +PG_CMDTAG(CMDTAG_MOVE, "MOVE", false, false, true) +PG_CMDTAG(CMDTAG_NOTIFY, "NOTIFY", false, false, false) +PG_CMDTAG(CMDTAG_PREPARE, "PREPARE", false, false, false) +PG_CMDTAG(CMDTAG_PREPARE_TRANSACTION, "PREPARE TRANSACTION", false, false, false) +PG_CMDTAG(CMDTAG_REASSIGN_OWNED, "REASSIGN OWNED", false, false, false) +PG_CMDTAG(CMDTAG_REFRESH_MATERIALIZED_VIEW, "REFRESH MATERIALIZED VIEW", true, false, false) +PG_CMDTAG(CMDTAG_REINDEX, "REINDEX", false, false, false) +PG_CMDTAG(CMDTAG_RELEASE, "RELEASE", false, false, false) +PG_CMDTAG(CMDTAG_RESET, "RESET", false, false, false) +PG_CMDTAG(CMDTAG_REVOKE, "REVOKE", true, false, false) +PG_CMDTAG(CMDTAG_REVOKE_ROLE, "REVOKE ROLE", false, false, false) +PG_CMDTAG(CMDTAG_ROLLBACK, "ROLLBACK", false, false, false) +PG_CMDTAG(CMDTAG_ROLLBACK_PREPARED, "ROLLBACK PREPARED", false, false, false) +PG_CMDTAG(CMDTAG_SAVEPOINT, "SAVEPOINT", false, false, false) +PG_CMDTAG(CMDTAG_SECURITY_LABEL, "SECURITY LABEL", true, false, false) +PG_CMDTAG(CMDTAG_SELECT, "SELECT", false, false, true) +PG_CMDTAG(CMDTAG_SELECT_FOR_KEY_SHARE, "SELECT FOR KEY SHARE", false, false, false) +PG_CMDTAG(CMDTAG_SELECT_FOR_NO_KEY_UPDATE, "SELECT FOR NO KEY UPDATE", false, false, false) +PG_CMDTAG(CMDTAG_SELECT_FOR_SHARE, "SELECT FOR SHARE", false, false, false) +PG_CMDTAG(CMDTAG_SELECT_FOR_UPDATE, "SELECT FOR UPDATE", false, false, false) +PG_CMDTAG(CMDTAG_SELECT_INTO, "SELECT INTO", true, false, false) +PG_CMDTAG(CMDTAG_SET, "SET", false, false, false) +PG_CMDTAG(CMDTAG_SET_CONSTRAINTS, "SET CONSTRAINTS", false, false, false) +PG_CMDTAG(CMDTAG_SHOW, "SHOW", false, false, false) +PG_CMDTAG(CMDTAG_START_TRANSACTION, "START TRANSACTION", false, false, false) +PG_CMDTAG(CMDTAG_TRUNCATE_TABLE, "TRUNCATE TABLE", false, false, false) +PG_CMDTAG(CMDTAG_UNLISTEN, "UNLISTEN", false, false, false) +PG_CMDTAG(CMDTAG_UPDATE, "UPDATE", false, false, true) +PG_CMDTAG(CMDTAG_VACUUM, "VACUUM", false, false, false) diff --git a/parser/include/tcop/deparse_utility.h b/parser/include/tcop/deparse_utility.h index e0eeb9f7..10c74ff1 100644 --- a/parser/include/tcop/deparse_utility.h +++ b/parser/include/tcop/deparse_utility.h @@ -2,7 +2,7 @@ * * deparse_utility.h * - * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/tcop/deparse_utility.h @@ -98,11 +98,11 @@ typedef struct CollectedCommand /* ALTER DEFAULT PRIVILEGES */ struct { - GrantObjectType objtype; + ObjectType objtype; } defprivs; } d; - struct CollectedCommand *parent; /* when nested */ + struct CollectedCommand *parent; /* when nested */ } CollectedCommand; #endif /* DEPARSE_UTILITY_H */ diff --git a/parser/include/tcop/dest.h b/parser/include/tcop/dest.h index f31c06a9..2e07f151 100644 --- a/parser/include/tcop/dest.h +++ b/parser/include/tcop/dest.h @@ -57,7 +57,7 @@ * calls in portal and cursor manipulations. * * - * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/tcop/dest.h @@ -68,6 +68,7 @@ #define DEST_H #include "executor/tuptable.h" +#include "tcop/cmdtag.h" /* buffer size to use for command completion tags */ @@ -134,9 +135,11 @@ extern PGDLLIMPORT DestReceiver *None_Receiver; /* permanent receiver for /* The primary destination management functions */ -extern void BeginCommand(const char *commandTag, CommandDest dest); +extern void BeginCommand(CommandTag commandTag, CommandDest dest); extern DestReceiver *CreateDestReceiver(CommandDest dest); -extern void EndCommand(const char *commandTag, CommandDest dest); +extern void EndCommand(const QueryCompletion *qc, CommandDest dest, + bool force_undecorated_output); +extern void EndReplicationCommand(const char *commandTag); /* Additional functions that go with destination management, more or less. */ diff --git a/parser/include/tcop/fastpath.h b/parser/include/tcop/fastpath.h index 4a7c35f1..3bb992c0 100644 --- a/parser/include/tcop/fastpath.h +++ b/parser/include/tcop/fastpath.h @@ -3,7 +3,7 @@ * fastpath.h * * - * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/tcop/fastpath.h diff --git a/parser/include/tcop/pquery.h b/parser/include/tcop/pquery.h index 6abfe7b2..437642cc 100644 --- a/parser/include/tcop/pquery.h +++ b/parser/include/tcop/pquery.h @@ -4,7 +4,7 @@ * prototypes for pquery.c. * * - * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/tcop/pquery.h @@ -28,18 +28,18 @@ extern List *FetchPortalTargetList(Portal portal); extern List *FetchStatementTargetList(Node *stmt); extern void PortalStart(Portal portal, ParamListInfo params, - int eflags, Snapshot snapshot); + int eflags, Snapshot snapshot); extern void PortalSetResultFormat(Portal portal, int nFormats, - int16 *formats); + int16 *formats); extern bool PortalRun(Portal portal, long count, bool isTopLevel, - bool run_once, DestReceiver *dest, DestReceiver *altdest, - char *completionTag); + bool run_once, DestReceiver *dest, DestReceiver *altdest, + QueryCompletion *qc); extern uint64 PortalRunFetch(Portal portal, - FetchDirection fdirection, - long count, - DestReceiver *dest); + FetchDirection fdirection, + long count, + DestReceiver *dest); #endif /* PQUERY_H */ diff --git a/parser/include/tcop/tcopprot.h b/parser/include/tcop/tcopprot.h index f2e1fcd2..dee77ea0 100644 --- a/parser/include/tcop/tcopprot.h +++ b/parser/include/tcop/tcopprot.h @@ -4,16 +4,11 @@ * prototypes for postgres.c. * * - * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/tcop/tcopprot.h * - * OLD COMMENTS - * This file was created so that other c files could get the two - * function prototypes without having to include tcop.h which single - * handedly includes the whole f*cking tree -- mer 5 Nov. 1991 - * *------------------------------------------------------------------------- */ #ifndef TCOPPROT_H @@ -49,18 +44,20 @@ extern PGDLLIMPORT int log_statement; extern List *pg_parse_query(const char *query_string); extern List *pg_analyze_and_rewrite(RawStmt *parsetree, - const char *query_string, - Oid *paramTypes, int numParams, - QueryEnvironment *queryEnv); + const char *query_string, + Oid *paramTypes, int numParams, + QueryEnvironment *queryEnv); extern List *pg_analyze_and_rewrite_params(RawStmt *parsetree, - const char *query_string, - ParserSetupHook parserSetup, - void *parserSetupArg, - QueryEnvironment *queryEnv); -extern PlannedStmt *pg_plan_query(Query *querytree, int cursorOptions, - ParamListInfo boundParams); -extern List *pg_plan_queries(List *querytrees, int cursorOptions, - ParamListInfo boundParams); + const char *query_string, + ParserSetupHook parserSetup, + void *parserSetupArg, + QueryEnvironment *queryEnv); +extern PlannedStmt *pg_plan_query(Query *querytree, const char *query_string, + int cursorOptions, + ParamListInfo boundParams); +extern List *pg_plan_queries(List *querytrees, const char *query_string, + int cursorOptions, + ParamListInfo boundParams); extern bool check_max_stack_depth(int *newval, void **extra, GucSource source); extern void assign_max_stack_depth(int newval, void *extra); @@ -75,18 +72,18 @@ extern void ProcessClientReadInterrupt(bool blocked); extern void ProcessClientWriteInterrupt(bool blocked); extern void process_postgres_switches(int argc, char *argv[], - GucContext ctx, const char **dbname); + GucContext ctx, const char **dbname); extern void PostgresMain(int argc, char *argv[], - const char *dbname, - const char *username) pg_attribute_noreturn(); + const char *dbname, + const char *username) pg_attribute_noreturn(); extern long get_stack_depth_rlimit(void); extern void ResetUsage(void); extern void ShowUsage(const char *title); extern int check_log_duration(char *msec_str, bool was_logged); extern void set_debug_options(int debug_flag, - GucContext context, GucSource source); + GucContext context, GucSource source); extern bool set_plan_disabling_options(const char *arg, - GucContext context, GucSource source); + GucContext context, GucSource source); extern const char *get_stats_option_name(const char *arg); #endif /* TCOPPROT_H */ diff --git a/parser/include/tcop/utility.h b/parser/include/tcop/utility.h index 5bd386dd..4aec19a0 100644 --- a/parser/include/tcop/utility.h +++ b/parser/include/tcop/utility.h @@ -4,7 +4,7 @@ * prototypes for utility.c. * * - * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/tcop/utility.h @@ -14,31 +14,78 @@ #ifndef UTILITY_H #define UTILITY_H +#include "tcop/cmdtag.h" #include "tcop/tcopprot.h" typedef enum { PROCESS_UTILITY_TOPLEVEL, /* toplevel interactive command */ PROCESS_UTILITY_QUERY, /* a complete query, but not toplevel */ + PROCESS_UTILITY_QUERY_NONATOMIC, /* a complete query, nonatomic + * execution context */ PROCESS_UTILITY_SUBCOMMAND /* a portion of a query */ } ProcessUtilityContext; +/* Info needed when recursing from ALTER TABLE */ +typedef struct AlterTableUtilityContext +{ + PlannedStmt *pstmt; /* PlannedStmt for outer ALTER TABLE command */ + const char *queryString; /* its query string */ + Oid relid; /* OID of ALTER's target table */ + ParamListInfo params; /* any parameters available to ALTER TABLE */ + QueryEnvironment *queryEnv; /* execution environment for ALTER TABLE */ +} AlterTableUtilityContext; + +/* + * These constants are used to describe the extent to which a particular + * command is read-only. + * + * COMMAND_OK_IN_READ_ONLY_TXN means that the command is permissible even when + * XactReadOnly is set. This bit should be set for commands that don't change + * the state of the database (data or schema) in a way that would affect the + * output of pg_dump. + * + * COMMAND_OK_IN_PARALLEL_MODE means that the command is permissible even + * when in parallel mode. Writing tuples is forbidden, as is anything that + * might confuse cooperating processes. + * + * COMMAND_OK_IN_RECOVERY means that the command is permissible even when in + * recovery. It can't write WAL, nor can it do things that would imperil + * replay of future WAL received from the master. + */ +#define COMMAND_OK_IN_READ_ONLY_TXN 0x0001 +#define COMMAND_OK_IN_PARALLEL_MODE 0x0002 +#define COMMAND_OK_IN_RECOVERY 0x0004 + +/* + * We say that a command is strictly read-only if it is sufficiently read-only + * for all purposes. For clarity, we also have a constant for commands that are + * in no way read-only. + */ +#define COMMAND_IS_STRICTLY_READ_ONLY \ + (COMMAND_OK_IN_READ_ONLY_TXN | COMMAND_OK_IN_RECOVERY | \ + COMMAND_OK_IN_PARALLEL_MODE) +#define COMMAND_IS_NOT_READ_ONLY 0 + /* Hook for plugins to get control in ProcessUtility() */ typedef void (*ProcessUtility_hook_type) (PlannedStmt *pstmt, const char *queryString, ProcessUtilityContext context, ParamListInfo params, QueryEnvironment *queryEnv, - DestReceiver *dest, char *completionTag); + DestReceiver *dest, QueryCompletion *qc); extern PGDLLIMPORT ProcessUtility_hook_type ProcessUtility_hook; extern void ProcessUtility(PlannedStmt *pstmt, const char *queryString, - ProcessUtilityContext context, ParamListInfo params, - QueryEnvironment *queryEnv, - DestReceiver *dest, char *completionTag); + ProcessUtilityContext context, ParamListInfo params, + QueryEnvironment *queryEnv, + DestReceiver *dest, QueryCompletion *qc); extern void standard_ProcessUtility(PlannedStmt *pstmt, const char *queryString, - ProcessUtilityContext context, ParamListInfo params, - QueryEnvironment *queryEnv, - DestReceiver *dest, char *completionTag); + ProcessUtilityContext context, ParamListInfo params, + QueryEnvironment *queryEnv, + DestReceiver *dest, QueryCompletion *qc); + +extern void ProcessUtilityForAlterTable(Node *stmt, + AlterTableUtilityContext *context); extern bool UtilityReturnsTuples(Node *parsetree); @@ -46,7 +93,13 @@ extern TupleDesc UtilityTupleDescriptor(Node *parsetree); extern Query *UtilityContainsQuery(Node *parsetree); -extern const char *CreateCommandTag(Node *parsetree); +extern CommandTag CreateCommandTag(Node *parsetree); + +static inline const char * +CreateCommandName(Node *parsetree) +{ + return GetCommandTagName(CreateCommandTag(parsetree)); +} extern LogStmtLevel GetCommandLogLevel(Node *parsetree); diff --git a/parser/include/tsearch/ts_cache.h b/parser/include/tsearch/ts_cache.h index abff0fdf..91497964 100644 --- a/parser/include/tsearch/ts_cache.h +++ b/parser/include/tsearch/ts_cache.h @@ -3,7 +3,7 @@ * ts_cache.h * Tsearch related object caches. * - * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/tsearch/ts_cache.h diff --git a/parser/include/utils/acl.h b/parser/include/utils/acl.h index a2af3881..732aa01d 100644 --- a/parser/include/utils/acl.h +++ b/parser/include/utils/acl.h @@ -4,7 +4,7 @@ * Definition of (and support for) access control list data structures. * * - * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/utils/acl.h @@ -35,7 +35,6 @@ #include "access/htup.h" #include "nodes/parsenodes.h" #include "parser/parse_node.h" -#include "utils/array.h" #include "utils/snapshot.h" @@ -104,7 +103,7 @@ typedef struct AclItem /* * Acl a one-dimensional array of AclItem */ -typedef ArrayType Acl; +typedef struct ArrayType Acl; #define ACL_NUM(ACL) (ARR_DIMS(ACL)[0]) #define ACL_DAT(ACL) ((AclItem *) ARR_DATA_PTR(ACL)) @@ -163,7 +162,7 @@ typedef ArrayType Acl; #define ACL_ALL_RIGHTS_FUNCTION (ACL_EXECUTE) #define ACL_ALL_RIGHTS_LANGUAGE (ACL_USAGE) #define ACL_ALL_RIGHTS_LARGEOBJECT (ACL_SELECT|ACL_UPDATE) -#define ACL_ALL_RIGHTS_NAMESPACE (ACL_USAGE|ACL_CREATE) +#define ACL_ALL_RIGHTS_SCHEMA (ACL_USAGE|ACL_CREATE) #define ACL_ALL_RIGHTS_TABLESPACE (ACL_CREATE) #define ACL_ALL_RIGHTS_TYPE (ACL_USAGE) @@ -182,49 +181,18 @@ typedef enum ACLCHECK_NOT_OWNER } AclResult; -/* this enum covers all object types that can have privilege errors */ -/* currently it's only used to tell aclcheck_error what to say */ -typedef enum AclObjectKind -{ - ACL_KIND_COLUMN, /* pg_attribute */ - ACL_KIND_CLASS, /* pg_class */ - ACL_KIND_SEQUENCE, /* pg_sequence */ - ACL_KIND_DATABASE, /* pg_database */ - ACL_KIND_PROC, /* pg_proc */ - ACL_KIND_OPER, /* pg_operator */ - ACL_KIND_TYPE, /* pg_type */ - ACL_KIND_LANGUAGE, /* pg_language */ - ACL_KIND_LARGEOBJECT, /* pg_largeobject */ - ACL_KIND_NAMESPACE, /* pg_namespace */ - ACL_KIND_OPCLASS, /* pg_opclass */ - ACL_KIND_OPFAMILY, /* pg_opfamily */ - ACL_KIND_COLLATION, /* pg_collation */ - ACL_KIND_CONVERSION, /* pg_conversion */ - ACL_KIND_STATISTICS, /* pg_statistic_ext */ - ACL_KIND_TABLESPACE, /* pg_tablespace */ - ACL_KIND_TSDICTIONARY, /* pg_ts_dict */ - ACL_KIND_TSCONFIGURATION, /* pg_ts_config */ - ACL_KIND_FDW, /* pg_foreign_data_wrapper */ - ACL_KIND_FOREIGN_SERVER, /* pg_foreign_server */ - ACL_KIND_EVENT_TRIGGER, /* pg_event_trigger */ - ACL_KIND_EXTENSION, /* pg_extension */ - ACL_KIND_PUBLICATION, /* pg_publication */ - ACL_KIND_SUBSCRIPTION, /* pg_subscription */ - MAX_ACL_KIND /* MUST BE LAST */ -} AclObjectKind; - /* * routines used internally */ -extern Acl *acldefault(GrantObjectType objtype, Oid ownerId); -extern Acl *get_user_default_acl(GrantObjectType objtype, Oid ownerId, - Oid nsp_oid); +extern Acl *acldefault(ObjectType objtype, Oid ownerId); +extern Acl *get_user_default_acl(ObjectType objtype, Oid ownerId, + Oid nsp_oid); extern void recordDependencyOnNewAcl(Oid classId, Oid objectId, int32 objsubId, - Oid ownerId, Acl *acl); + Oid ownerId, Acl *acl); extern Acl *aclupdate(const Acl *old_acl, const AclItem *mod_aip, - int modechg, Oid ownerId, DropBehavior behavior); + int modechg, Oid ownerId, DropBehavior behavior); extern Acl *aclnewowner(const Acl *old_acl, Oid oldOwnerId, Oid newOwnerId); extern Acl *make_empty_acl(void); extern Acl *aclcopy(const Acl *orig_acl); @@ -234,7 +202,7 @@ extern void aclitemsort(Acl *acl); extern bool aclequal(const Acl *left_acl, const Acl *right_acl); extern AclMode aclmask(const Acl *acl, Oid roleid, Oid ownerId, - AclMode mask, AclMaskHow how); + AclMode mask, AclMaskHow how); extern int aclmembers(const Acl *acl, Oid **roleids); extern bool has_privs_of_role(Oid member, Oid role); @@ -250,8 +218,8 @@ extern HeapTuple get_rolespec_tuple(const RoleSpec *role); extern char *get_rolespec_name(const RoleSpec *role); extern void select_best_grantor(Oid roleId, AclMode privileges, - const Acl *acl, Oid ownerId, - Oid *grantorId, AclMode *grantOptions); + const Acl *acl, Oid ownerId, + Oid *grantorId, AclMode *grantOptions); extern void initialize_acl(void); @@ -265,49 +233,49 @@ extern void RemoveRoleFromObjectACL(Oid roleid, Oid classid, Oid objid); extern void RemoveDefaultACLById(Oid defaclOid); extern AclMode pg_attribute_aclmask(Oid table_oid, AttrNumber attnum, - Oid roleid, AclMode mask, AclMaskHow how); + Oid roleid, AclMode mask, AclMaskHow how); extern AclMode pg_class_aclmask(Oid table_oid, Oid roleid, - AclMode mask, AclMaskHow how); + AclMode mask, AclMaskHow how); extern AclMode pg_database_aclmask(Oid db_oid, Oid roleid, - AclMode mask, AclMaskHow how); + AclMode mask, AclMaskHow how); extern AclMode pg_proc_aclmask(Oid proc_oid, Oid roleid, - AclMode mask, AclMaskHow how); + AclMode mask, AclMaskHow how); extern AclMode pg_language_aclmask(Oid lang_oid, Oid roleid, - AclMode mask, AclMaskHow how); + AclMode mask, AclMaskHow how); extern AclMode pg_largeobject_aclmask_snapshot(Oid lobj_oid, Oid roleid, - AclMode mask, AclMaskHow how, Snapshot snapshot); + AclMode mask, AclMaskHow how, Snapshot snapshot); extern AclMode pg_namespace_aclmask(Oid nsp_oid, Oid roleid, - AclMode mask, AclMaskHow how); + AclMode mask, AclMaskHow how); extern AclMode pg_tablespace_aclmask(Oid spc_oid, Oid roleid, - AclMode mask, AclMaskHow how); + AclMode mask, AclMaskHow how); extern AclMode pg_foreign_data_wrapper_aclmask(Oid fdw_oid, Oid roleid, - AclMode mask, AclMaskHow how); + AclMode mask, AclMaskHow how); extern AclMode pg_foreign_server_aclmask(Oid srv_oid, Oid roleid, - AclMode mask, AclMaskHow how); + AclMode mask, AclMaskHow how); extern AclMode pg_type_aclmask(Oid type_oid, Oid roleid, - AclMode mask, AclMaskHow how); + AclMode mask, AclMaskHow how); extern AclResult pg_attribute_aclcheck(Oid table_oid, AttrNumber attnum, - Oid roleid, AclMode mode); + Oid roleid, AclMode mode); extern AclResult pg_attribute_aclcheck_all(Oid table_oid, Oid roleid, - AclMode mode, AclMaskHow how); + AclMode mode, AclMaskHow how); extern AclResult pg_class_aclcheck(Oid table_oid, Oid roleid, AclMode mode); extern AclResult pg_database_aclcheck(Oid db_oid, Oid roleid, AclMode mode); extern AclResult pg_proc_aclcheck(Oid proc_oid, Oid roleid, AclMode mode); extern AclResult pg_language_aclcheck(Oid lang_oid, Oid roleid, AclMode mode); extern AclResult pg_largeobject_aclcheck_snapshot(Oid lang_oid, Oid roleid, - AclMode mode, Snapshot snapshot); + AclMode mode, Snapshot snapshot); extern AclResult pg_namespace_aclcheck(Oid nsp_oid, Oid roleid, AclMode mode); extern AclResult pg_tablespace_aclcheck(Oid spc_oid, Oid roleid, AclMode mode); extern AclResult pg_foreign_data_wrapper_aclcheck(Oid fdw_oid, Oid roleid, AclMode mode); extern AclResult pg_foreign_server_aclcheck(Oid srv_oid, Oid roleid, AclMode mode); extern AclResult pg_type_aclcheck(Oid type_oid, Oid roleid, AclMode mode); -extern void aclcheck_error(AclResult aclerr, AclObjectKind objectkind, - const char *objectname); +extern void aclcheck_error(AclResult aclerr, ObjectType objtype, + const char *objectname); -extern void aclcheck_error_col(AclResult aclerr, AclObjectKind objectkind, - const char *objectname, const char *colname); +extern void aclcheck_error_col(AclResult aclerr, ObjectType objtype, + const char *objectname, const char *colname); extern void aclcheck_error_type(AclResult aclerr, Oid typeOid); diff --git a/parser/include/utils/aclchk_internal.h b/parser/include/utils/aclchk_internal.h index 3374edb6..81ddf935 100644 --- a/parser/include/utils/aclchk_internal.h +++ b/parser/include/utils/aclchk_internal.h @@ -2,7 +2,7 @@ * * aclchk_internal.h * - * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/utils/aclchk_internal.h @@ -26,12 +26,12 @@ * Note: 'all_privs' and 'privileges' represent object-level privileges only. * There might also be column-level privilege specifications, which are * represented in col_privs (this is a list of untransformed AccessPriv nodes). - * Column privileges are only valid for objtype ACL_OBJECT_RELATION. + * Column privileges are only valid for objtype OBJECT_TABLE. */ typedef struct { bool is_grant; - GrantObjectType objtype; + ObjectType objtype; List *objects; bool all_privs; AclMode privileges; diff --git a/parser/include/utils/array.h b/parser/include/utils/array.h index eb02258a..2809dfee 100644 --- a/parser/include/utils/array.h +++ b/parser/include/utils/array.h @@ -51,7 +51,7 @@ * arrays holding the elements. * * - * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/utils/array.h @@ -64,6 +64,10 @@ #include "fmgr.h" #include "utils/expandeddatum.h" +/* avoid including execnodes.h here */ +struct ExprState; +struct ExprContext; + /* * Arrays are varlena objects, so must meet the varlena convention that @@ -73,7 +77,7 @@ * CAUTION: if you change the header for ordinary arrays you will also * need to change the headers for oidvector and int2vector! */ -typedef struct +typedef struct ArrayType { int32 vl_len_; /* varlena header (do not touch directly!) */ int ndim; /* # of dimensions */ @@ -255,7 +259,7 @@ typedef struct ArrayIteratorData *ArrayIterator; #define PG_RETURN_EXPANDED_ARRAY(x) PG_RETURN_DATUM(EOHPGetRWDatum(&(x)->hdr)) /* fmgr macros for AnyArrayType (ie, get either varlena or expanded form) */ -#define PG_GETARG_ANY_ARRAY(n) DatumGetAnyArray(PG_GETARG_DATUM(n)) +#define PG_GETARG_ANY_ARRAY_P(n) DatumGetAnyArrayP(PG_GETARG_DATUM(n)) /* * Access macros for varlena array header fields. @@ -336,91 +340,92 @@ extern bool Array_nulls; * prototypes for functions defined in arrayfuncs.c */ extern void CopyArrayEls(ArrayType *array, - Datum *values, - bool *nulls, - int nitems, - int typlen, - bool typbyval, - char typalign, - bool freedata); + Datum *values, + bool *nulls, + int nitems, + int typlen, + bool typbyval, + char typalign, + bool freedata); extern Datum array_get_element(Datum arraydatum, int nSubscripts, int *indx, - int arraytyplen, int elmlen, bool elmbyval, char elmalign, - bool *isNull); + int arraytyplen, int elmlen, bool elmbyval, char elmalign, + bool *isNull); extern Datum array_set_element(Datum arraydatum, int nSubscripts, int *indx, - Datum dataValue, bool isNull, - int arraytyplen, int elmlen, bool elmbyval, char elmalign); + Datum dataValue, bool isNull, + int arraytyplen, int elmlen, bool elmbyval, char elmalign); extern Datum array_get_slice(Datum arraydatum, int nSubscripts, - int *upperIndx, int *lowerIndx, - bool *upperProvided, bool *lowerProvided, - int arraytyplen, int elmlen, bool elmbyval, char elmalign); + int *upperIndx, int *lowerIndx, + bool *upperProvided, bool *lowerProvided, + int arraytyplen, int elmlen, bool elmbyval, char elmalign); extern Datum array_set_slice(Datum arraydatum, int nSubscripts, - int *upperIndx, int *lowerIndx, - bool *upperProvided, bool *lowerProvided, - Datum srcArrayDatum, bool isNull, - int arraytyplen, int elmlen, bool elmbyval, char elmalign); + int *upperIndx, int *lowerIndx, + bool *upperProvided, bool *lowerProvided, + Datum srcArrayDatum, bool isNull, + int arraytyplen, int elmlen, bool elmbyval, char elmalign); extern Datum array_ref(ArrayType *array, int nSubscripts, int *indx, - int arraytyplen, int elmlen, bool elmbyval, char elmalign, - bool *isNull); + int arraytyplen, int elmlen, bool elmbyval, char elmalign, + bool *isNull); extern ArrayType *array_set(ArrayType *array, int nSubscripts, int *indx, - Datum dataValue, bool isNull, - int arraytyplen, int elmlen, bool elmbyval, char elmalign); + Datum dataValue, bool isNull, + int arraytyplen, int elmlen, bool elmbyval, char elmalign); -extern Datum array_map(FunctionCallInfo fcinfo, Oid retType, - ArrayMapState *amstate); +extern Datum array_map(Datum arrayd, + struct ExprState *exprstate, struct ExprContext *econtext, + Oid retType, ArrayMapState *amstate); extern void array_bitmap_copy(bits8 *destbitmap, int destoffset, - const bits8 *srcbitmap, int srcoffset, - int nitems); + const bits8 *srcbitmap, int srcoffset, + int nitems); extern ArrayType *construct_array(Datum *elems, int nelems, - Oid elmtype, - int elmlen, bool elmbyval, char elmalign); + Oid elmtype, + int elmlen, bool elmbyval, char elmalign); extern ArrayType *construct_md_array(Datum *elems, - bool *nulls, - int ndims, - int *dims, - int *lbs, - Oid elmtype, int elmlen, bool elmbyval, char elmalign); + bool *nulls, + int ndims, + int *dims, + int *lbs, + Oid elmtype, int elmlen, bool elmbyval, char elmalign); extern ArrayType *construct_empty_array(Oid elmtype); extern ExpandedArrayHeader *construct_empty_expanded_array(Oid element_type, - MemoryContext parentcontext, - ArrayMetaState *metacache); + MemoryContext parentcontext, + ArrayMetaState *metacache); extern void deconstruct_array(ArrayType *array, - Oid elmtype, - int elmlen, bool elmbyval, char elmalign, - Datum **elemsp, bool **nullsp, int *nelemsp); + Oid elmtype, + int elmlen, bool elmbyval, char elmalign, + Datum **elemsp, bool **nullsp, int *nelemsp); extern bool array_contains_nulls(ArrayType *array); extern ArrayBuildState *initArrayResult(Oid element_type, - MemoryContext rcontext, bool subcontext); + MemoryContext rcontext, bool subcontext); extern ArrayBuildState *accumArrayResult(ArrayBuildState *astate, - Datum dvalue, bool disnull, - Oid element_type, - MemoryContext rcontext); + Datum dvalue, bool disnull, + Oid element_type, + MemoryContext rcontext); extern Datum makeArrayResult(ArrayBuildState *astate, - MemoryContext rcontext); + MemoryContext rcontext); extern Datum makeMdArrayResult(ArrayBuildState *astate, int ndims, - int *dims, int *lbs, MemoryContext rcontext, bool release); + int *dims, int *lbs, MemoryContext rcontext, bool release); extern ArrayBuildStateArr *initArrayResultArr(Oid array_type, Oid element_type, - MemoryContext rcontext, bool subcontext); + MemoryContext rcontext, bool subcontext); extern ArrayBuildStateArr *accumArrayResultArr(ArrayBuildStateArr *astate, - Datum dvalue, bool disnull, - Oid array_type, - MemoryContext rcontext); + Datum dvalue, bool disnull, + Oid array_type, + MemoryContext rcontext); extern Datum makeArrayResultArr(ArrayBuildStateArr *astate, - MemoryContext rcontext, bool release); + MemoryContext rcontext, bool release); extern ArrayBuildStateAny *initArrayResultAny(Oid input_type, - MemoryContext rcontext, bool subcontext); + MemoryContext rcontext, bool subcontext); extern ArrayBuildStateAny *accumArrayResultAny(ArrayBuildStateAny *astate, - Datum dvalue, bool disnull, - Oid input_type, - MemoryContext rcontext); + Datum dvalue, bool disnull, + Oid input_type, + MemoryContext rcontext); extern Datum makeArrayResultAny(ArrayBuildStateAny *astate, - MemoryContext rcontext, bool release); + MemoryContext rcontext, bool release); extern ArrayIterator array_create_iterator(ArrayType *arr, int slice_ndim, ArrayMetaState *mstate); extern bool array_iterate(ArrayIterator iterator, Datum *value, bool *isnull); @@ -443,11 +448,11 @@ extern int32 *ArrayGetIntegerTypmods(ArrayType *arr, int *n); * prototypes for functions defined in array_expanded.c */ extern Datum expand_array(Datum arraydatum, MemoryContext parentcontext, - ArrayMetaState *metacache); + ArrayMetaState *metacache); extern ExpandedArrayHeader *DatumGetExpandedArray(Datum d); extern ExpandedArrayHeader *DatumGetExpandedArrayX(Datum d, - ArrayMetaState *metacache); -extern AnyArrayType *DatumGetAnyArray(Datum d); + ArrayMetaState *metacache); +extern AnyArrayType *DatumGetAnyArrayP(Datum d); extern void deconstruct_expanded_array(ExpandedArrayHeader *eah); #endif /* ARRAY_H */ diff --git a/parser/include/utils/builtins.h b/parser/include/utils/builtins.h index 5d315039..9519a3fa 100644 --- a/parser/include/utils/builtins.h +++ b/parser/include/utils/builtins.h @@ -4,7 +4,7 @@ * Declarations for operations on built-in types. * * - * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/utils/builtins.h @@ -18,6 +18,8 @@ #include "nodes/nodes.h" #include "utils/fmgrprotos.h" +/* Sign + the most decimal digits an 8-byte number could have */ +#define MAXINT8LEN 20 /* bool.c */ extern bool parse_bool(const char *value, bool *result); @@ -25,45 +27,35 @@ extern bool parse_bool_with_len(const char *value, size_t len, bool *result); /* domains.c */ extern void domain_check(Datum value, bool isnull, Oid domainType, - void **extra, MemoryContext mcxt); + void **extra, MemoryContext mcxt); extern int errdatatype(Oid datatypeOid); extern int errdomainconstraint(Oid datatypeOid, const char *conname); /* encode.c */ -extern unsigned hex_encode(const char *src, unsigned len, char *dst); -extern unsigned hex_decode(const char *src, unsigned len, char *dst); +extern uint64 hex_encode(const char *src, size_t len, char *dst); +extern uint64 hex_decode(const char *src, size_t len, char *dst); /* int.c */ extern int2vector *buildint2vector(const int16 *int2s, int n); /* name.c */ -extern int namecpy(Name n1, Name n2); +extern int namecpy(Name n1, const NameData *n2); extern int namestrcpy(Name name, const char *str); extern int namestrcmp(Name name, const char *str); /* numutils.c */ extern int32 pg_atoi(const char *s, int size, int c); +extern int16 pg_strtoint16(const char *s); +extern int32 pg_strtoint32(const char *s); extern void pg_itoa(int16 i, char *a); +extern int pg_ultoa_n(uint32 l, char *a); +extern int pg_ulltoa_n(uint64 l, char *a); extern void pg_ltoa(int32 l, char *a); extern void pg_lltoa(int64 ll, char *a); -extern char *pg_ltostr_zeropad(char *str, int32 value, int32 minwidth); -extern char *pg_ltostr(char *str, int32 value); +extern char *pg_ultostr_zeropad(char *str, uint32 value, int32 minwidth); +extern char *pg_ultostr(char *str, uint32 value); extern uint64 pg_strtouint64(const char *str, char **endptr, int base); -/* float.c */ -extern PGDLLIMPORT int extra_float_digits; - -extern double get_float8_infinity(void); -extern float get_float4_infinity(void); -extern double get_float8_nan(void); -extern float get_float4_nan(void); -extern int is_infinite(double val); -extern double float8in_internal(char *num, char **endptr_p, - const char *type_name, const char *orig_string); -extern char *float8out_internal(double num); -extern int float4_cmp_internal(float4 a, float4 b); -extern int float8_cmp_internal(float8 a, float8 b); - /* oid.c */ extern oidvector *buildoidvector(const Oid *oids, int n); extern Oid oidparse(Node *node); @@ -71,17 +63,17 @@ extern int oid_cmp(const void *p1, const void *p2); /* regexp.c */ extern char *regexp_fixed_prefix(text *text_re, bool case_insensitive, - Oid collation, bool *exact); + Oid collation, bool *exact); /* ruleutils.c */ extern __thread bool quote_all_identifiers; extern const char *quote_identifier(const char *ident); extern char *quote_qualified_identifier(const char *qualifier, - const char *ident); + const char *ident); extern void generate_operator_clause(fmStringInfo buf, - const char *leftop, Oid leftoptype, - Oid opoid, - const char *rightop, Oid rightoptype); + const char *leftop, Oid leftoptype, + Oid opoid, + const char *rightop, Oid rightoptype); /* varchar.c */ extern int bpchartruelen(char *s, int len); @@ -99,12 +91,12 @@ extern void text_to_cstring_buffer(const text *src, char *dst, size_t dst_len); extern int xidComparator(const void *arg1, const void *arg2); /* inet_cidr_ntop.c */ -extern char *inet_cidr_ntop(int af, const void *src, int bits, - char *dst, size_t size); +extern char *pg_inet_cidr_ntop(int af, const void *src, int bits, + char *dst, size_t size); /* inet_net_pton.c */ -extern int inet_net_pton(int af, const char *src, - void *dst, size_t size); +extern int pg_inet_net_pton(int af, const char *src, + void *dst, size_t size); /* network.c */ extern double convert_network_to_scalar(Datum value, Oid typid, bool *failure); @@ -116,10 +108,17 @@ extern void clean_ipv6_addr(int addr_family, char *addr); extern Datum numeric_float8_no_overflow(PG_FUNCTION_ARGS); /* format_type.c */ + +/* Control flags for format_type_extended */ +#define FORMAT_TYPE_TYPEMOD_GIVEN 0x01 /* typemod defined by caller */ +#define FORMAT_TYPE_ALLOW_INVALID 0x02 /* allow invalid types */ +#define FORMAT_TYPE_FORCE_QUALIFY 0x04 /* force qualification of type */ +extern char *format_type_extended(Oid type_oid, int32 typemod, bits16 flags); + extern char *format_type_be(Oid type_oid); extern char *format_type_be_qualified(Oid type_oid); extern char *format_type_with_typemod(Oid type_oid, int32 typemod); -extern char *format_type_with_typemod_qualified(Oid type_oid, int32 typemod); + extern int32 type_maximum_size(Oid type_oid, int32 typemod); /* quote.c */ diff --git a/parser/include/utils/bytea.h b/parser/include/utils/bytea.h index d7bd3084..d89ba2ba 100644 --- a/parser/include/utils/bytea.h +++ b/parser/include/utils/bytea.h @@ -4,7 +4,7 @@ * Declarations for BYTEA data type support. * * - * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/utils/bytea.h @@ -14,7 +14,6 @@ #ifndef BYTEA_H #define BYTEA_H -#include "fmgr.h" typedef enum diff --git a/parser/include/utils/catcache.h b/parser/include/utils/catcache.h index 200a3022..f4aa3166 100644 --- a/parser/include/utils/catcache.h +++ b/parser/include/utils/catcache.h @@ -10,7 +10,7 @@ * guarantee that there can only be one matching row for a key combination. * * - * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/utils/catcache.h @@ -34,25 +34,33 @@ #define CATCACHE_MAXKEYS 4 + +/* function computing a datum's hash */ +typedef uint32 (*CCHashFN) (Datum datum); + +/* function computing equality of two datums */ +typedef bool (*CCFastEqualFN) (Datum a, Datum b); + typedef struct catcache { int id; /* cache identifier --- see syscache.h */ - slist_node cc_next; /* list link */ + int cc_nbuckets; /* # of hash buckets in this cache */ + TupleDesc cc_tupdesc; /* tuple descriptor (copied from reldesc) */ + dlist_head *cc_bucket; /* hash buckets */ + CCHashFN cc_hashfunc[CATCACHE_MAXKEYS]; /* hash function for each key */ + CCFastEqualFN cc_fastequal[CATCACHE_MAXKEYS]; /* fast equal function for + * each key */ + int cc_keyno[CATCACHE_MAXKEYS]; /* AttrNumber of each key */ + dlist_head cc_lists; /* list of CatCList structs */ + int cc_ntup; /* # of tuples currently in this cache */ + int cc_nkeys; /* # of keys (1..CATCACHE_MAXKEYS) */ const char *cc_relname; /* name of relation the tuples come from */ Oid cc_reloid; /* OID of relation the tuples come from */ Oid cc_indexoid; /* OID of index matching cache keys */ bool cc_relisshared; /* is relation shared across databases? */ - TupleDesc cc_tupdesc; /* tuple descriptor (copied from reldesc) */ - int cc_ntup; /* # of tuples currently in this cache */ - int cc_nbuckets; /* # of hash buckets in this cache */ - int cc_nkeys; /* # of keys (1..CATCACHE_MAXKEYS) */ - int cc_key[CATCACHE_MAXKEYS]; /* AttrNumber of each key */ - PGFunction cc_hashfunc[CATCACHE_MAXKEYS]; /* hash function for each key */ + slist_node cc_next; /* list link */ ScanKeyData cc_skey[CATCACHE_MAXKEYS]; /* precomputed key info for heap * scans */ - bool cc_isname[CATCACHE_MAXKEYS]; /* flag "name" key columns */ - dlist_head cc_lists; /* list of CatCList structs */ - dlist_head *cc_bucket; /* hash buckets */ /* * Keep these at the end, so that compiling catcache.c with CATCACHE_STATS @@ -79,7 +87,14 @@ typedef struct catctup { int ct_magic; /* for identifying CatCTup entries */ #define CT_MAGIC 0x57261502 - CatCache *my_cache; /* link to owning catcache */ + + uint32 hash_value; /* hash value for this tuple's keys */ + + /* + * Lookup keys for the entry. By-reference datums point into the tuple for + * positive cache entries, and are separately allocated for negative ones. + */ + Datum keys[CATCACHE_MAXKEYS]; /* * Each tuple in a cache is a member of a dlist that stores the elements @@ -88,15 +103,6 @@ typedef struct catctup */ dlist_node cache_elem; /* list member of per-bucket list */ - /* - * The tuple may also be a member of at most one CatCList. (If a single - * catcache is list-searched with varying numbers of keys, we may have to - * make multiple entries for the same tuple because of this restriction. - * Currently, that's not expected to be common, so we accept the potential - * inefficiency.) - */ - struct catclist *c_list; /* containing CatCList, or NULL if none */ - /* * A tuple marked "dead" must not be returned by subsequent searches. * However, it won't be physically deleted from the cache until its @@ -112,46 +118,63 @@ typedef struct catctup int refcount; /* number of active references */ bool dead; /* dead but not yet removed? */ bool negative; /* negative cache entry? */ - uint32 hash_value; /* hash value for this tuple's keys */ HeapTupleData tuple; /* tuple management header */ + + /* + * The tuple may also be a member of at most one CatCList. (If a single + * catcache is list-searched with varying numbers of keys, we may have to + * make multiple entries for the same tuple because of this restriction. + * Currently, that's not expected to be common, so we accept the potential + * inefficiency.) + */ + struct catclist *c_list; /* containing CatCList, or NULL if none */ + + CatCache *my_cache; /* link to owning catcache */ + /* properly aligned tuple data follows, unless a negative entry */ } CatCTup; +/* + * A CatCList describes the result of a partial search, ie, a search using + * only the first K key columns of an N-key cache. We store the keys used + * into the keys attribute to represent the stored key set. The CatCList + * object contains links to cache entries for all the table rows satisfying + * the partial key. (Note: none of these will be negative cache entries.) + * + * A CatCList is only a member of a per-cache list; we do not currently + * divide them into hash buckets. + * + * A list marked "dead" must not be returned by subsequent searches. + * However, it won't be physically deleted from the cache until its + * refcount goes to zero. (A list should be marked dead if any of its + * member entries are dead.) + * + * If "ordered" is true then the member tuples appear in the order of the + * cache's underlying index. This will be true in normal operation, but + * might not be true during bootstrap or recovery operations. (namespace.c + * is able to save some cycles when it is true.) + */ typedef struct catclist { int cl_magic; /* for identifying CatCList entries */ #define CL_MAGIC 0x52765103 - CatCache *my_cache; /* link to owning catcache */ + + uint32 hash_value; /* hash value for lookup keys */ + + dlist_node cache_elem; /* list member of per-catcache list */ /* - * A CatCList describes the result of a partial search, ie, a search using - * only the first K key columns of an N-key cache. We form the keys used - * into a tuple (with other attributes NULL) to represent the stored key - * set. The CatCList object contains links to cache entries for all the - * table rows satisfying the partial key. (Note: none of these will be - * negative cache entries.) - * - * A CatCList is only a member of a per-cache list; we do not currently - * divide them into hash buckets. - * - * A list marked "dead" must not be returned by subsequent searches. - * However, it won't be physically deleted from the cache until its - * refcount goes to zero. (A list should be marked dead if any of its - * member entries are dead.) - * - * If "ordered" is true then the member tuples appear in the order of the - * cache's underlying index. This will be true in normal operation, but - * might not be true during bootstrap or recovery operations. (namespace.c - * is able to save some cycles when it is true.) + * Lookup keys for the entry, with the first nkeys elements being valid. + * All by-reference are separately allocated. */ - dlist_node cache_elem; /* list member of per-catcache list */ + Datum keys[CATCACHE_MAXKEYS]; + int refcount; /* number of active references */ bool dead; /* dead but not yet removed? */ bool ordered; /* members listed in index order? */ short nkeys; /* number of lookup keys specified */ - uint32 hash_value; /* hash value for lookup keys */ - HeapTupleData tuple; /* header for tuple holding keys */ int n_members; /* number of member tuples */ + CatCache *my_cache; /* link to owning catcache */ CatCTup *members[FLEXIBLE_ARRAY_MEMBER]; /* members */ } CatCList; @@ -169,31 +192,38 @@ extern PGDLLIMPORT MemoryContext CacheMemoryContext; extern void CreateCacheMemoryContext(void); extern CatCache *InitCatCache(int id, Oid reloid, Oid indexoid, - int nkeys, const int *key, - int nbuckets); + int nkeys, const int *key, + int nbuckets); extern void InitCatCachePhase2(CatCache *cache, bool touch_index); extern HeapTuple SearchCatCache(CatCache *cache, - Datum v1, Datum v2, - Datum v3, Datum v4); + Datum v1, Datum v2, Datum v3, Datum v4); +extern HeapTuple SearchCatCache1(CatCache *cache, + Datum v1); +extern HeapTuple SearchCatCache2(CatCache *cache, + Datum v1, Datum v2); +extern HeapTuple SearchCatCache3(CatCache *cache, + Datum v1, Datum v2, Datum v3); +extern HeapTuple SearchCatCache4(CatCache *cache, + Datum v1, Datum v2, Datum v3, Datum v4); extern void ReleaseCatCache(HeapTuple tuple); extern uint32 GetCatCacheHashValue(CatCache *cache, - Datum v1, Datum v2, - Datum v3, Datum v4); + Datum v1, Datum v2, + Datum v3, Datum v4); extern CatCList *SearchCatCacheList(CatCache *cache, int nkeys, - Datum v1, Datum v2, - Datum v3, Datum v4); + Datum v1, Datum v2, + Datum v3); extern void ReleaseCatCacheList(CatCList *list); extern void ResetCatalogCaches(void); extern void CatalogCacheFlushCatalog(Oid catId); extern void CatCacheInvalidate(CatCache *cache, uint32 hashValue); extern void PrepareToInvalidateCacheTuple(Relation relation, - HeapTuple tuple, - HeapTuple newtuple, - void (*function) (int, uint32, Oid)); + HeapTuple tuple, + HeapTuple newtuple, + void (*function) (int, uint32, Oid)); extern void PrintCatCacheLeakWarning(HeapTuple tuple); extern void PrintCatCacheListLeakWarning(CatCList *list); diff --git a/parser/include/utils/date.h b/parser/include/utils/date.h index 064951be..6fc491e6 100644 --- a/parser/include/utils/date.h +++ b/parser/include/utils/date.h @@ -4,7 +4,7 @@ * Definitions for the SQL "date" and "time" types. * * - * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/utils/date.h @@ -16,8 +16,9 @@ #include -#include "fmgr.h" #include "datatype/timestamp.h" +#include "fmgr.h" +#include "pgtime.h" typedef int32 DateADT; @@ -69,11 +70,21 @@ typedef struct /* date.c */ extern int32 anytime_typmod_check(bool istz, int32 typmod); extern double date2timestamp_no_overflow(DateADT dateVal); +extern Timestamp date2timestamp_opt_overflow(DateADT dateVal, int *overflow); +extern TimestampTz date2timestamptz_opt_overflow(DateADT dateVal, int *overflow); +extern int32 date_cmp_timestamp_internal(DateADT dateVal, Timestamp dt2); +extern int32 date_cmp_timestamptz_internal(DateADT dateVal, TimestampTz dt2); + extern void EncodeSpecialDate(DateADT dt, char *str); extern DateADT GetSQLCurrentDate(void); extern TimeTzADT *GetSQLCurrentTime(int32 typmod); extern TimeADT GetSQLLocalTime(int32 typmod); +extern int time2tm(TimeADT time, struct pg_tm *tm, fsec_t *fsec); +extern int timetz2tm(TimeTzADT *time, struct pg_tm *tm, fsec_t *fsec, int *tzp); +extern int tm2time(struct pg_tm *tm, fsec_t fsec, TimeADT *result); +extern int tm2timetz(struct pg_tm *tm, fsec_t fsec, int tz, TimeTzADT *result); extern bool time_overflows(int hour, int min, int sec, fsec_t fsec); extern bool float_time_overflows(int hour, int min, double sec); +extern void AdjustTimeForTypmod(TimeADT *time, int32 typmod); #endif /* DATE_H */ diff --git a/parser/include/utils/datetime.h b/parser/include/utils/datetime.h index 7968569f..711bd02a 100644 --- a/parser/include/utils/datetime.h +++ b/parser/include/utils/datetime.h @@ -3,10 +3,10 @@ * datetime.h * Definitions for date/time support code. * The support code is shared with other date data types, - * including abstime, reltime, date, and time. + * including date, and time. * * - * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/utils/datetime.h @@ -148,8 +148,6 @@ struct tzEntry; #define DTK_AGO 5 #define DTK_SPECIAL 6 -#define DTK_INVALID 7 -#define DTK_CURRENT 8 #define DTK_EARLY 9 #define DTK_LATE 10 #define DTK_EPOCH 11 @@ -291,28 +289,28 @@ extern void GetCurrentTimeUsec(struct pg_tm *tm, fsec_t *fsec, int *tzp); extern void j2date(int jd, int *year, int *month, int *day); extern int date2j(int year, int month, int day); -extern int ParseDateTime(const char *timestr, char *workbuf, size_t buflen, - char **field, int *ftype, - int maxfields, int *numfields); -extern int DecodeDateTime(char **field, int *ftype, - int nf, int *dtype, - struct pg_tm *tm, fsec_t *fsec, int *tzp); +extern int ParseDateTime(const char *timestr, char *workbuf, size_t buflen, + char **field, int *ftype, + int maxfields, int *numfields); +extern int DecodeDateTime(char **field, int *ftype, + int nf, int *dtype, + struct pg_tm *tm, fsec_t *fsec, int *tzp); extern int DecodeTimezone(char *str, int *tzp); -extern int DecodeTimeOnly(char **field, int *ftype, - int nf, int *dtype, - struct pg_tm *tm, fsec_t *fsec, int *tzp); -extern int DecodeInterval(char **field, int *ftype, int nf, int range, - int *dtype, struct pg_tm *tm, fsec_t *fsec); -extern int DecodeISO8601Interval(char *str, - int *dtype, struct pg_tm *tm, fsec_t *fsec); +extern int DecodeTimeOnly(char **field, int *ftype, + int nf, int *dtype, + struct pg_tm *tm, fsec_t *fsec, int *tzp); +extern int DecodeInterval(char **field, int *ftype, int nf, int range, + int *dtype, struct pg_tm *tm, fsec_t *fsec); +extern int DecodeISO8601Interval(char *str, + int *dtype, struct pg_tm *tm, fsec_t *fsec); extern void DateTimeParseError(int dterr, const char *str, - const char *datatype) pg_attribute_noreturn(); + const char *datatype) pg_attribute_noreturn(); extern int DetermineTimeZoneOffset(struct pg_tm *tm, pg_tz *tzp); extern int DetermineTimeZoneAbbrevOffset(struct pg_tm *tm, const char *abbr, pg_tz *tzp); -extern int DetermineTimeZoneAbbrevOffsetTS(TimestampTz ts, const char *abbr, - pg_tz *tzp, int *isdst); +extern int DetermineTimeZoneAbbrevOffsetTS(TimestampTz ts, const char *abbr, + pg_tz *tzp, int *isdst); extern void EncodeDateOnly(struct pg_tm *tm, int style, char *str); extern void EncodeTimeOnly(struct pg_tm *tm, fsec_t fsec, bool print_tz, int tz, int style, char *str); @@ -320,22 +318,26 @@ extern void EncodeDateTime(struct pg_tm *tm, fsec_t fsec, bool print_tz, int tz, extern void EncodeInterval(struct pg_tm *tm, fsec_t fsec, int style, char *str); extern void EncodeSpecialTimestamp(Timestamp dt, char *str); -extern int ValidateDate(int fmask, bool isjulian, bool is2digits, bool bc, - struct pg_tm *tm); +extern int ValidateDate(int fmask, bool isjulian, bool is2digits, bool bc, + struct pg_tm *tm); -extern int DecodeTimezoneAbbrev(int field, char *lowtoken, - int *offset, pg_tz **tz); +extern int DecodeTimezoneAbbrev(int field, char *lowtoken, + int *offset, pg_tz **tz); extern int DecodeSpecial(int field, char *lowtoken, int *val); extern int DecodeUnits(int field, char *lowtoken, int *val); extern int j2day(int jd); -extern Node *TemporalTransform(int32 max_precis, Node *node); +extern Node *TemporalSimplify(int32 max_precis, Node *node); extern bool CheckDateTokenTables(void); extern TimeZoneAbbrevTable *ConvertTimeZoneAbbrevs(struct tzEntry *abbrevs, - int n); + int n); extern void InstallTimeZoneAbbrevs(TimeZoneAbbrevTable *tbl); +extern void AdjustTimestampForTypmod(Timestamp *time, int32 typmod); +extern bool AdjustTimestampForTypmodError(Timestamp *time, int32 typmod, + bool *error); + #endif /* DATETIME_H */ diff --git a/parser/include/utils/datum.h b/parser/include/utils/datum.h index d2f0f9ed..9118a938 100644 --- a/parser/include/utils/datum.h +++ b/parser/include/utils/datum.h @@ -8,7 +8,7 @@ * of the Datum. (We do it this way because in most situations the caller * can look up the info just once and use it for many per-datum operations.) * - * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/utils/datum.h @@ -44,16 +44,25 @@ extern Datum datumTransfer(Datum value, bool typByVal, int typLen); * XXX : See comments in the code for restrictions! */ extern bool datumIsEqual(Datum value1, Datum value2, - bool typByVal, int typLen); + bool typByVal, int typLen); + +/* + * datum_image_eq + * + * Compares two datums for identical contents, based on byte images. Return + * true if the two datums are equal, false otherwise. + */ +extern bool datum_image_eq(Datum value1, Datum value2, + bool typByVal, int typLen); /* * Serialize and restore datums so that we can transfer them to parallel * workers. */ extern Size datumEstimateSpace(Datum value, bool isnull, bool typByVal, - int typLen); + int typLen); extern void datumSerialize(Datum value, bool isnull, bool typByVal, - int typLen, char **start_address); + int typLen, char **start_address); extern Datum datumRestore(char **start_address, bool *isnull); #endif /* DATUM_H */ diff --git a/parser/include/utils/dsa.h b/parser/include/utils/dsa.h index c38487c7..e07126bc 100644 --- a/parser/include/utils/dsa.h +++ b/parser/include/utils/dsa.h @@ -3,7 +3,7 @@ * dsa.h * Dynamic shared memory areas. * - * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * IDENTIFICATION @@ -99,11 +99,9 @@ typedef pg_atomic_uint64 dsa_pointer_atomic; */ typedef dsm_handle dsa_handle; -extern void dsa_startup(void); - extern dsa_area *dsa_create(int tranche_id); extern dsa_area *dsa_create_in_place(void *place, size_t size, - int tranche_id, dsm_segment *segment); + int tranche_id, dsm_segment *segment); extern dsa_area *dsa_attach(dsa_handle handle); extern dsa_area *dsa_attach_in_place(void *place, dsm_segment *segment); extern void dsa_release_in_place(void *place); diff --git a/parser/include/utils/dynahash.h b/parser/include/utils/dynahash.h index 8e03245a..768b9521 100644 --- a/parser/include/utils/dynahash.h +++ b/parser/include/utils/dynahash.h @@ -4,7 +4,7 @@ * POSTGRES dynahash.h file definitions * * - * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/utils/dynahash.h diff --git a/parser/include/utils/dynamic_loader.h b/parser/include/utils/dynamic_loader.h deleted file mode 100644 index 6c9287b6..00000000 --- a/parser/include/utils/dynamic_loader.h +++ /dev/null @@ -1,25 +0,0 @@ -/*------------------------------------------------------------------------- - * - * dynamic_loader.h - * - * - * - * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group - * Portions Copyright (c) 1994, Regents of the University of California - * - * src/include/utils/dynamic_loader.h - * - *------------------------------------------------------------------------- - */ -#ifndef DYNAMIC_LOADER_H -#define DYNAMIC_LOADER_H - -#include "fmgr.h" - - -extern void *pg_dlopen(char *filename); -extern PGFunction pg_dlsym(void *handle, char *funcname); -extern void pg_dlclose(void *handle); -extern char *pg_dlerror(void); - -#endif /* DYNAMIC_LOADER_H */ diff --git a/parser/include/utils/elog.h b/parser/include/utils/elog.h index 74aebaa9..ae0711f3 100644 --- a/parser/include/utils/elog.h +++ b/parser/include/utils/elog.h @@ -4,7 +4,7 @@ * POSTGRES error reporting/logging definitions. * * - * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/utils/elog.h @@ -63,20 +63,37 @@ (PGSIXBIT(ch1) + (PGSIXBIT(ch2) << 6) + (PGSIXBIT(ch3) << 12) + \ (PGSIXBIT(ch4) << 18) + (PGSIXBIT(ch5) << 24)) -/* These macros depend on the fact that '0' becomes a zero in SIXBIT */ +/* These macros depend on the fact that '0' becomes a zero in PGSIXBIT */ #define ERRCODE_TO_CATEGORY(ec) ((ec) & ((1 << 12) - 1)) #define ERRCODE_IS_CATEGORY(ec) (((ec) & ~((1 << 12) - 1)) == 0) /* SQLSTATE codes for errors are defined in a separate file */ #include "utils/errcodes.h" +/* + * Provide a way to prevent "errno" from being accidentally used inside an + * elog() or ereport() invocation. Since we know that some operating systems + * define errno as something involving a function call, we'll put a local + * variable of the same name as that function in the local scope to force a + * compile error. On platforms that don't define errno in that way, nothing + * happens, so we get no warning ... but we can live with that as long as it + * happens on some popular platforms. + */ +#if defined(errno) && defined(__linux__) +#define pg_prevent_errno_in_scope() int __errno_location pg_attribute_unused() +#elif defined(errno) && (defined(__darwin__) || defined(__freebsd__)) +#define pg_prevent_errno_in_scope() int __error pg_attribute_unused() +#else +#define pg_prevent_errno_in_scope() +#endif + /*---------- * New-style error reporting API: to be used in this way: * ereport(ERROR, - * (errcode(ERRCODE_UNDEFINED_CURSOR), - * errmsg("portal \"%s\" not found", stmt->portalname), - * ... other errxxx() fields as needed ...)); + * errcode(ERRCODE_UNDEFINED_CURSOR), + * errmsg("portal \"%s\" not found", stmt->portalname), + * ... other errxxx() fields as needed ...); * * The error level is required, and so is a primary error message (errmsg * or errmsg_internal). All else is optional. errcode() defaults to @@ -84,6 +101,9 @@ * if elevel is WARNING, or ERRCODE_SUCCESSFUL_COMPLETION if elevel is * NOTICE or below. * + * Before Postgres v12, extra parentheses were required around the + * list of auxiliary function calls; that's now optional. + * * ereport_domain() allows a message domain to be specified, for modules that * wish to use a different message catalog from the backend's. To avoid having * one copy of the default text domain per .o file, we define it as NULL here @@ -101,32 +121,33 @@ *---------- */ #ifdef HAVE__BUILTIN_CONSTANT_P -#define ereport_domain(elevel, domain, rest) \ +#define ereport_domain(elevel, domain, ...) \ do { \ - if (errstart(elevel, __FILE__, __LINE__, PG_FUNCNAME_MACRO, domain)) \ - errfinish rest; \ + pg_prevent_errno_in_scope(); \ + if (errstart(elevel, domain)) \ + __VA_ARGS__, errfinish(__FILE__, __LINE__, PG_FUNCNAME_MACRO); \ if (__builtin_constant_p(elevel) && (elevel) >= ERROR) \ pg_unreachable(); \ } while(0) #else /* !HAVE__BUILTIN_CONSTANT_P */ -#define ereport_domain(elevel, domain, rest) \ +#define ereport_domain(elevel, domain, ...) \ do { \ const int elevel_ = (elevel); \ - if (errstart(elevel_, __FILE__, __LINE__, PG_FUNCNAME_MACRO, domain)) \ - errfinish rest; \ + pg_prevent_errno_in_scope(); \ + if (errstart(elevel_, domain)) \ + __VA_ARGS__, errfinish(__FILE__, __LINE__, PG_FUNCNAME_MACRO); \ if (elevel_ >= ERROR) \ pg_unreachable(); \ } while(0) #endif /* HAVE__BUILTIN_CONSTANT_P */ -#define ereport(elevel, rest) \ - ereport_domain(elevel, TEXTDOMAIN, rest) +#define ereport(elevel, ...) \ + ereport_domain(elevel, TEXTDOMAIN, __VA_ARGS__) #define TEXTDOMAIN NULL -extern bool errstart(int elevel, const char *filename, int lineno, - const char *funcname, const char *domain); -extern void errfinish(int dummy,...); +extern bool errstart(int elevel, const char *domain); +extern void errfinish(const char *filename, int lineno, const char *funcname); extern int errcode(int sqlerrcode); @@ -136,20 +157,20 @@ extern int errcode_for_socket_access(void); extern int errmsg(const char *fmt,...) pg_attribute_printf(1, 2); extern int errmsg_internal(const char *fmt,...) pg_attribute_printf(1, 2); -extern int errmsg_plural(const char *fmt_singular, const char *fmt_plural, - unsigned long n,...) pg_attribute_printf(1, 4) pg_attribute_printf(2, 4); +extern int errmsg_plural(const char *fmt_singular, const char *fmt_plural, + unsigned long n,...) pg_attribute_printf(1, 4) pg_attribute_printf(2, 4); extern int errdetail(const char *fmt,...) pg_attribute_printf(1, 2); extern int errdetail_internal(const char *fmt,...) pg_attribute_printf(1, 2); extern int errdetail_log(const char *fmt,...) pg_attribute_printf(1, 2); -extern int errdetail_log_plural(const char *fmt_singular, - const char *fmt_plural, - unsigned long n,...) pg_attribute_printf(1, 4) pg_attribute_printf(2, 4); +extern int errdetail_log_plural(const char *fmt_singular, + const char *fmt_plural, + unsigned long n,...) pg_attribute_printf(1, 4) pg_attribute_printf(2, 4); -extern int errdetail_plural(const char *fmt_singular, const char *fmt_plural, - unsigned long n,...) pg_attribute_printf(1, 4) pg_attribute_printf(2, 4); +extern int errdetail_plural(const char *fmt_singular, const char *fmt_plural, + unsigned long n,...) pg_attribute_printf(1, 4) pg_attribute_printf(2, 4); extern int errhint(const char *fmt,...) pg_attribute_printf(1, 2); @@ -170,6 +191,8 @@ extern int errcontext_msg(const char *fmt,...) pg_attribute_printf(1, 2); extern int errhidestmt(bool hide_stmt); extern int errhidecontext(bool hide_ctx); +extern int errbacktrace(void); + extern int errfunction(const char *funcname); extern int errposition(int cursorpos); @@ -188,41 +211,8 @@ extern int getinternalerrposition(void); * elog(ERROR, "portal \"%s\" not found", stmt->portalname); *---------- */ -#ifdef HAVE__VA_ARGS -/* - * If we have variadic macros, we can give the compiler a hint about the - * call not returning when elevel >= ERROR. See comments for ereport(). - * Note that historically elog() has called elog_start (which saves errno) - * before evaluating "elevel", so we preserve that behavior here. - */ -#ifdef HAVE__BUILTIN_CONSTANT_P #define elog(elevel, ...) \ - do { \ - elog_start(__FILE__, __LINE__, PG_FUNCNAME_MACRO); \ - elog_finish(elevel, __VA_ARGS__); \ - if (__builtin_constant_p(elevel) && (elevel) >= ERROR) \ - pg_unreachable(); \ - } while(0) -#else /* !HAVE__BUILTIN_CONSTANT_P */ -#define elog(elevel, ...) \ - do { \ - elog_start(__FILE__, __LINE__, PG_FUNCNAME_MACRO); \ - { \ - const int elevel_ = (elevel); \ - elog_finish(elevel_, __VA_ARGS__); \ - if (elevel_ >= ERROR) \ - pg_unreachable(); \ - } \ - } while(0) -#endif /* HAVE__BUILTIN_CONSTANT_P */ -#else /* !HAVE__VA_ARGS */ -#define elog \ - elog_start(__FILE__, __LINE__, PG_FUNCNAME_MACRO), \ - elog_finish -#endif /* HAVE__VA_ARGS */ - -extern void elog_start(const char *filename, int lineno, const char *funcname); -extern void elog_finish(int elevel, const char *fmt,...) pg_attribute_printf(2, 3); + ereport(elevel, errmsg_internal(__VA_ARGS__)) /* Support for constructing error strings separately from ereport() calls */ @@ -257,8 +247,29 @@ extern PGDLLIMPORT __thread ErrorContextCallback *error_context_stack; * PG_END_TRY(); * * (The braces are not actually necessary, but are recommended so that - * pgindent will indent the construct nicely.) The error recovery code - * can optionally do PG_RE_THROW() to propagate the same error outwards. + * pgindent will indent the construct nicely.) The error recovery code + * can either do PG_RE_THROW to propagate the error outwards, or do a + * (sub)transaction abort. Failure to do so may leave the system in an + * inconsistent state for further processing. + * + * For the common case that the error recovery code and the cleanup in the + * normal code path are identical, the following can be used instead: + * + * PG_TRY(); + * { + * ... code that might throw ereport(ERROR) ... + * } + * PG_FINALLY(); + * { + * ... cleanup code ... + * } + * PG_END_TRY(); + * + * The cleanup code will be run in either case, and any error will be rethrown + * afterwards. + * + * You cannot use both PG_CATCH() and PG_FINALLY() in the same + * PG_TRY()/PG_END_TRY() block. * * Note: while the system will correctly propagate any new ereport(ERROR) * occurring in the recovery section, there is a small limit on the number @@ -283,24 +294,35 @@ extern PGDLLIMPORT __thread ErrorContextCallback *error_context_stack; */ #define PG_TRY() \ do { \ - sigjmp_buf *save_exception_stack = PG_exception_stack; \ - ErrorContextCallback *save_context_stack = error_context_stack; \ - sigjmp_buf local_sigjmp_buf; \ - if (sigsetjmp(local_sigjmp_buf, 0) == 0) \ + sigjmp_buf *_save_exception_stack = PG_exception_stack; \ + ErrorContextCallback *_save_context_stack = error_context_stack; \ + sigjmp_buf _local_sigjmp_buf; \ + bool _do_rethrow = false; \ + if (sigsetjmp(_local_sigjmp_buf, 0) == 0) \ { \ - PG_exception_stack = &local_sigjmp_buf + PG_exception_stack = &_local_sigjmp_buf #define PG_CATCH() \ } \ else \ { \ - PG_exception_stack = save_exception_stack; \ - error_context_stack = save_context_stack + PG_exception_stack = _save_exception_stack; \ + error_context_stack = _save_context_stack + +#define PG_FINALLY() \ + } \ + else \ + _do_rethrow = true; \ + { \ + PG_exception_stack = _save_exception_stack; \ + error_context_stack = _save_context_stack #define PG_END_TRY() \ } \ - PG_exception_stack = save_exception_stack; \ - error_context_stack = save_context_stack; \ + if (_do_rethrow) \ + PG_RE_THROW(); \ + PG_exception_stack = _save_exception_stack; \ + error_context_stack = _save_context_stack; \ } while (0) /* @@ -345,6 +367,7 @@ typedef struct ErrorData char *detail_log; /* detail error message for server log only */ char *hint; /* hint message */ char *context; /* context message */ + char *backtrace; /* backtrace */ const char *message_id; /* primary message's id (original string) */ char *schema_name; /* name of schema */ char *table_name; /* name of table */ diff --git a/parser/include/utils/errcodes.h b/parser/include/utils/errcodes.h index 595c58c4..9431e9e4 100644 --- a/parser/include/utils/errcodes.h +++ b/parser/include/utils/errcodes.h @@ -85,6 +85,7 @@ #define ERRCODE_NONSTANDARD_USE_OF_ESCAPE_CHARACTER MAKE_SQLSTATE('2','2','P','0','6') #define ERRCODE_INVALID_INDICATOR_PARAMETER_VALUE MAKE_SQLSTATE('2','2','0','1','0') #define ERRCODE_INVALID_PARAMETER_VALUE MAKE_SQLSTATE('2','2','0','2','3') +#define ERRCODE_INVALID_PRECEDING_OR_FOLLOWING_SIZE MAKE_SQLSTATE('2','2','0','1','3') #define ERRCODE_INVALID_REGULAR_EXPRESSION MAKE_SQLSTATE('2','2','0','1','B') #define ERRCODE_INVALID_ROW_COUNT_IN_LIMIT_CLAUSE MAKE_SQLSTATE('2','2','0','1','W') #define ERRCODE_INVALID_ROW_COUNT_IN_RESULT_OFFSET_CLAUSE MAKE_SQLSTATE('2','2','0','1','X') @@ -113,6 +114,22 @@ #define ERRCODE_INVALID_XML_CONTENT MAKE_SQLSTATE('2','2','0','0','N') #define ERRCODE_INVALID_XML_COMMENT MAKE_SQLSTATE('2','2','0','0','S') #define ERRCODE_INVALID_XML_PROCESSING_INSTRUCTION MAKE_SQLSTATE('2','2','0','0','T') +#define ERRCODE_DUPLICATE_JSON_OBJECT_KEY_VALUE MAKE_SQLSTATE('2','2','0','3','0') +#define ERRCODE_INVALID_ARGUMENT_FOR_SQL_JSON_DATETIME_FUNCTION MAKE_SQLSTATE('2','2','0','3','1') +#define ERRCODE_INVALID_JSON_TEXT MAKE_SQLSTATE('2','2','0','3','2') +#define ERRCODE_INVALID_SQL_JSON_SUBSCRIPT MAKE_SQLSTATE('2','2','0','3','3') +#define ERRCODE_MORE_THAN_ONE_SQL_JSON_ITEM MAKE_SQLSTATE('2','2','0','3','4') +#define ERRCODE_NO_SQL_JSON_ITEM MAKE_SQLSTATE('2','2','0','3','5') +#define ERRCODE_NON_NUMERIC_SQL_JSON_ITEM MAKE_SQLSTATE('2','2','0','3','6') +#define ERRCODE_NON_UNIQUE_KEYS_IN_A_JSON_OBJECT MAKE_SQLSTATE('2','2','0','3','7') +#define ERRCODE_SINGLETON_SQL_JSON_ITEM_REQUIRED MAKE_SQLSTATE('2','2','0','3','8') +#define ERRCODE_SQL_JSON_ARRAY_NOT_FOUND MAKE_SQLSTATE('2','2','0','3','9') +#define ERRCODE_SQL_JSON_MEMBER_NOT_FOUND MAKE_SQLSTATE('2','2','0','3','A') +#define ERRCODE_SQL_JSON_NUMBER_NOT_FOUND MAKE_SQLSTATE('2','2','0','3','B') +#define ERRCODE_SQL_JSON_OBJECT_NOT_FOUND MAKE_SQLSTATE('2','2','0','3','C') +#define ERRCODE_TOO_MANY_JSON_ARRAY_ELEMENTS MAKE_SQLSTATE('2','2','0','3','D') +#define ERRCODE_TOO_MANY_JSON_OBJECT_MEMBERS MAKE_SQLSTATE('2','2','0','3','E') +#define ERRCODE_SQL_JSON_SCALAR_REQUIRED MAKE_SQLSTATE('2','2','0','3','F') /* Class 23 - Integrity Constraint Violation */ #define ERRCODE_INTEGRITY_CONSTRAINT_VIOLATION MAKE_SQLSTATE('2','3','0','0','0') @@ -270,6 +287,7 @@ #define ERRCODE_OBJECT_IN_USE MAKE_SQLSTATE('5','5','0','0','6') #define ERRCODE_CANT_CHANGE_RUNTIME_PARAM MAKE_SQLSTATE('5','5','P','0','2') #define ERRCODE_LOCK_NOT_AVAILABLE MAKE_SQLSTATE('5','5','P','0','3') +#define ERRCODE_UNSAFE_NEW_ENUM_VALUE_USAGE MAKE_SQLSTATE('5','5','P','0','4') /* Class 57 - Operator Intervention */ #define ERRCODE_OPERATOR_INTERVENTION MAKE_SQLSTATE('5','7','0','0','0') diff --git a/parser/include/utils/expandeddatum.h b/parser/include/utils/expandeddatum.h index 2346f2d3..be4970fa 100644 --- a/parser/include/utils/expandeddatum.h +++ b/parser/include/utils/expandeddatum.h @@ -34,7 +34,7 @@ * value if they fail partway through. * * - * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/utils/expandeddatum.h @@ -126,7 +126,7 @@ struct ExpandedObjectHeader */ #define EOH_HEADER_MAGIC (-1) #define VARATT_IS_EXPANDED_HEADER(PTR) \ - (((varattrib_4b *) (PTR))->va_4byte.va_header == EOH_HEADER_MAGIC) + (((varattrib_4b *) (PTR))->va_4byte.va_header == (uint32) EOH_HEADER_MAGIC) /* * Generic support functions for expanded objects. @@ -147,11 +147,11 @@ struct ExpandedObjectHeader extern ExpandedObjectHeader *DatumGetEOHP(Datum d); extern void EOH_init_header(ExpandedObjectHeader *eohptr, - const ExpandedObjectMethods *methods, - MemoryContext obj_context); + const ExpandedObjectMethods *methods, + MemoryContext obj_context); extern Size EOH_get_flat_size(ExpandedObjectHeader *eohptr); extern void EOH_flatten_into(ExpandedObjectHeader *eohptr, - void *result, Size allocated_size); + void *result, Size allocated_size); extern Datum MakeExpandedObjectReadOnlyInternal(Datum d); extern Datum TransferExpandedObject(Datum d, MemoryContext new_parent); extern void DeleteExpandedObject(Datum d); diff --git a/parser/include/utils/expandedrecord.h b/parser/include/utils/expandedrecord.h new file mode 100644 index 00000000..75b57893 --- /dev/null +++ b/parser/include/utils/expandedrecord.h @@ -0,0 +1,231 @@ +/*------------------------------------------------------------------------- + * + * expandedrecord.h + * Declarations for composite expanded objects. + * + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group + * Portions Copyright (c) 1994, Regents of the University of California + * + * src/include/utils/expandedrecord.h + * + *------------------------------------------------------------------------- + */ +#ifndef EXPANDEDRECORD_H +#define EXPANDEDRECORD_H + +#include "access/htup.h" +#include "access/tupdesc.h" +#include "fmgr.h" +#include "utils/expandeddatum.h" + + +/* + * An expanded record is contained within a private memory context (as + * all expanded objects must be) and has a control structure as below. + * + * The expanded record might contain a regular "flat" tuple if that was the + * original input and we've not modified it. Otherwise, the contents are + * represented by Datum/isnull arrays plus type information. We could also + * have both forms, if we've deconstructed the original tuple for access + * purposes but not yet changed it. For pass-by-reference field types, the + * Datums would point into the flat tuple in this situation. Once we start + * modifying tuple fields, new pass-by-ref fields are separately palloc'd + * within the memory context. + * + * It's possible to build an expanded record that references a "flat" tuple + * stored externally, if the caller can guarantee that that tuple will not + * change for the lifetime of the expanded record. (This frammish is mainly + * meant to avoid unnecessary data copying in trigger functions.) + */ +#define ER_MAGIC 1384727874 /* ID for debugging crosschecks */ + +typedef struct ExpandedRecordHeader +{ + /* Standard header for expanded objects */ + ExpandedObjectHeader hdr; + + /* Magic value identifying an expanded record (for debugging only) */ + int er_magic; + + /* Assorted flag bits */ + int flags; +#define ER_FLAG_FVALUE_VALID 0x0001 /* fvalue is up to date? */ +#define ER_FLAG_FVALUE_ALLOCED 0x0002 /* fvalue is local storage? */ +#define ER_FLAG_DVALUES_VALID 0x0004 /* dvalues/dnulls are up to date? */ +#define ER_FLAG_DVALUES_ALLOCED 0x0008 /* any field values local storage? */ +#define ER_FLAG_HAVE_EXTERNAL 0x0010 /* any field values are external? */ +#define ER_FLAG_TUPDESC_ALLOCED 0x0020 /* tupdesc is local storage? */ +#define ER_FLAG_IS_DOMAIN 0x0040 /* er_decltypeid is domain? */ +#define ER_FLAG_IS_DUMMY 0x0080 /* this header is dummy (see below) */ +/* flag bits that are not to be cleared when replacing tuple data: */ +#define ER_FLAGS_NON_DATA \ + (ER_FLAG_TUPDESC_ALLOCED | ER_FLAG_IS_DOMAIN | ER_FLAG_IS_DUMMY) + + /* Declared type of the record variable (could be a domain type) */ + Oid er_decltypeid; + + /* + * Actual composite type/typmod; never a domain (if ER_FLAG_IS_DOMAIN, + * these identify the composite base type). These will match + * er_tupdesc->tdtypeid/tdtypmod, as well as the header fields of + * composite datums made from or stored in this expanded record. + */ + Oid er_typeid; /* type OID of the composite type */ + int32 er_typmod; /* typmod of the composite type */ + + /* + * Tuple descriptor, if we have one, else NULL. This may point to a + * reference-counted tupdesc originally belonging to the typcache, in + * which case we use a memory context reset callback to release the + * refcount. It can also be locally allocated in this object's private + * context (in which case ER_FLAG_TUPDESC_ALLOCED is set). + */ + TupleDesc er_tupdesc; + + /* + * Unique-within-process identifier for the tupdesc (see typcache.h). This + * field will never be equal to INVALID_TUPLEDESC_IDENTIFIER. + */ + uint64 er_tupdesc_id; + + /* + * If we have a Datum-array representation of the record, it's kept here; + * else ER_FLAG_DVALUES_VALID is not set, and dvalues/dnulls may be NULL + * if they've not yet been allocated. If allocated, the dvalues and + * dnulls arrays are palloc'd within the object private context, and are + * of length matching er_tupdesc->natts. For pass-by-ref field types, + * dvalues entries might point either into the fstartptr..fendptr area, or + * to separately palloc'd chunks. + */ + Datum *dvalues; /* array of Datums */ + bool *dnulls; /* array of is-null flags for Datums */ + int nfields; /* length of above arrays */ + + /* + * flat_size is the current space requirement for the flat equivalent of + * the expanded record, if known; otherwise it's 0. We store this to make + * consecutive calls of get_flat_size cheap. If flat_size is not 0, the + * component values data_len, hoff, and hasnull must be valid too. + */ + Size flat_size; + + Size data_len; /* data len within flat_size */ + int hoff; /* header offset */ + bool hasnull; /* null bitmap needed? */ + + /* + * fvalue points to the flat representation if we have one, else it is + * NULL. If the flat representation is valid (up to date) then + * ER_FLAG_FVALUE_VALID is set. Even if we've outdated the flat + * representation due to changes of user fields, it can still be used to + * fetch system column values. If we have a flat representation then + * fstartptr/fendptr point to the start and end+1 of its data area; this + * is so that we can tell which Datum pointers point into the flat + * representation rather than being pointers to separately palloc'd data. + */ + HeapTuple fvalue; /* might or might not be private storage */ + char *fstartptr; /* start of its data area */ + char *fendptr; /* end+1 of its data area */ + + /* Some operations on the expanded record need a short-lived context */ + MemoryContext er_short_term_cxt; /* short-term memory context */ + + /* Working state for domain checking, used if ER_FLAG_IS_DOMAIN is set */ + struct ExpandedRecordHeader *er_dummy_header; /* dummy record header */ + void *er_domaininfo; /* cache space for domain_check() */ + + /* Callback info (it's active if er_mcb.arg is not NULL) */ + MemoryContextCallback er_mcb; +} ExpandedRecordHeader; + +/* fmgr macros for expanded record objects */ +#define PG_GETARG_EXPANDED_RECORD(n) DatumGetExpandedRecord(PG_GETARG_DATUM(n)) +#define ExpandedRecordGetDatum(erh) EOHPGetRWDatum(&(erh)->hdr) +#define ExpandedRecordGetRODatum(erh) EOHPGetRODatum(&(erh)->hdr) +#define PG_RETURN_EXPANDED_RECORD(x) PG_RETURN_DATUM(ExpandedRecordGetDatum(x)) + +/* assorted other macros */ +#define ExpandedRecordIsEmpty(erh) \ + (((erh)->flags & (ER_FLAG_DVALUES_VALID | ER_FLAG_FVALUE_VALID)) == 0) +#define ExpandedRecordIsDomain(erh) \ + (((erh)->flags & ER_FLAG_IS_DOMAIN) != 0) + +/* this can substitute for TransferExpandedObject() when we already have erh */ +#define TransferExpandedRecord(erh, cxt) \ + MemoryContextSetParent((erh)->hdr.eoh_context, cxt) + +/* information returned by expanded_record_lookup_field() */ +typedef struct ExpandedRecordFieldInfo +{ + int fnumber; /* field's attr number in record */ + Oid ftypeid; /* field's type/typmod info */ + int32 ftypmod; + Oid fcollation; /* field's collation if any */ +} ExpandedRecordFieldInfo; + +/* + * prototypes for functions defined in expandedrecord.c + */ +extern ExpandedRecordHeader *make_expanded_record_from_typeid(Oid type_id, int32 typmod, + MemoryContext parentcontext); +extern ExpandedRecordHeader *make_expanded_record_from_tupdesc(TupleDesc tupdesc, + MemoryContext parentcontext); +extern ExpandedRecordHeader *make_expanded_record_from_exprecord(ExpandedRecordHeader *olderh, + MemoryContext parentcontext); +extern void expanded_record_set_tuple(ExpandedRecordHeader *erh, + HeapTuple tuple, bool copy, bool expand_external); +extern Datum make_expanded_record_from_datum(Datum recorddatum, + MemoryContext parentcontext); +extern TupleDesc expanded_record_fetch_tupdesc(ExpandedRecordHeader *erh); +extern HeapTuple expanded_record_get_tuple(ExpandedRecordHeader *erh); +extern ExpandedRecordHeader *DatumGetExpandedRecord(Datum d); +extern void deconstruct_expanded_record(ExpandedRecordHeader *erh); +extern bool expanded_record_lookup_field(ExpandedRecordHeader *erh, + const char *fieldname, + ExpandedRecordFieldInfo *finfo); +extern Datum expanded_record_fetch_field(ExpandedRecordHeader *erh, int fnumber, + bool *isnull); +extern void expanded_record_set_field_internal(ExpandedRecordHeader *erh, + int fnumber, + Datum newValue, bool isnull, + bool expand_external, + bool check_constraints); +extern void expanded_record_set_fields(ExpandedRecordHeader *erh, + const Datum *newValues, const bool *isnulls, + bool expand_external); + +/* outside code should never call expanded_record_set_field_internal as such */ +#define expanded_record_set_field(erh, fnumber, newValue, isnull, expand_external) \ + expanded_record_set_field_internal(erh, fnumber, newValue, isnull, expand_external, true) + +/* + * Inline-able fast cases. The expanded_record_fetch_xxx functions above + * handle the general cases. + */ + +/* Get the tupdesc for the expanded record's actual type */ +static inline TupleDesc +expanded_record_get_tupdesc(ExpandedRecordHeader *erh) +{ + if (likely(erh->er_tupdesc != NULL)) + return erh->er_tupdesc; + else + return expanded_record_fetch_tupdesc(erh); +} + +/* Get value of record field */ +static inline Datum +expanded_record_get_field(ExpandedRecordHeader *erh, int fnumber, + bool *isnull) +{ + if ((erh->flags & ER_FLAG_DVALUES_VALID) && + likely(fnumber > 0 && fnumber <= erh->nfields)) + { + *isnull = erh->dnulls[fnumber - 1]; + return erh->dvalues[fnumber - 1]; + } + else + return expanded_record_fetch_field(erh, fnumber, isnull); +} + +#endif /* EXPANDEDRECORD_H */ diff --git a/parser/include/utils/float.h b/parser/include/utils/float.h new file mode 100644 index 00000000..8d4bbc51 --- /dev/null +++ b/parser/include/utils/float.h @@ -0,0 +1,356 @@ +/*------------------------------------------------------------------------- + * + * float.h + * Definitions for the built-in floating-point types + * + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group + * Portions Copyright (c) 1994, Regents of the University of California + * + * + * IDENTIFICATION + * src/include/utils/float.h + * + *------------------------------------------------------------------------- + */ +#ifndef FLOAT_H +#define FLOAT_H + +#include + +#ifndef M_PI +/* From my RH5.2 gcc math.h file - thomas 2000-04-03 */ +#define M_PI 3.14159265358979323846 +#endif + +/* Radians per degree, a.k.a. PI / 180 */ +#define RADIANS_PER_DEGREE 0.0174532925199432957692 + +/* Visual C++ etc lacks NAN, and won't accept 0.0/0.0. */ +#if defined(WIN32) && !defined(NAN) +static const uint32 nan[2] = {0xffffffff, 0x7fffffff}; + +#define NAN (*(const float8 *) nan) +#endif + +extern PGDLLIMPORT int extra_float_digits; + +/* + * Utility functions in float.c + */ +extern void float_overflow_error(void) pg_attribute_noreturn(); +extern void float_underflow_error(void) pg_attribute_noreturn(); +extern void float_zero_divide_error(void) pg_attribute_noreturn(); +extern int is_infinite(float8 val); +extern float8 float8in_internal(char *num, char **endptr_p, + const char *type_name, const char *orig_string); +extern float8 float8in_internal_opt_error(char *num, char **endptr_p, + const char *type_name, const char *orig_string, + bool *have_error); +extern char *float8out_internal(float8 num); +extern int float4_cmp_internal(float4 a, float4 b); +extern int float8_cmp_internal(float8 a, float8 b); + +/* + * Routines to provide reasonably platform-independent handling of + * infinity and NaN + * + * We assume that isinf() and isnan() are available and work per spec. + * (On some platforms, we have to supply our own; see src/port.) However, + * generating an Infinity or NaN in the first place is less well standardized; + * pre-C99 systems tend not to have C99's INFINITY and NaN macros. We + * centralize our workarounds for this here. + */ + +/* + * The funny placements of the two #pragmas is necessary because of a + * long lived bug in the Microsoft compilers. + * See http://support.microsoft.com/kb/120968/en-us for details + */ +#ifdef _MSC_VER +#pragma warning(disable:4756) +#endif +static inline float4 +get_float4_infinity(void) +{ +#ifdef INFINITY + /* C99 standard way */ + return (float4) INFINITY; +#else +#ifdef _MSC_VER +#pragma warning(default:4756) +#endif + + /* + * On some platforms, HUGE_VAL is an infinity, elsewhere it's just the + * largest normal float8. We assume forcing an overflow will get us a + * true infinity. + */ + return (float4) (HUGE_VAL * HUGE_VAL); +#endif +} + +static inline float8 +get_float8_infinity(void) +{ +#ifdef INFINITY + /* C99 standard way */ + return (float8) INFINITY; +#else + + /* + * On some platforms, HUGE_VAL is an infinity, elsewhere it's just the + * largest normal float8. We assume forcing an overflow will get us a + * true infinity. + */ + return (float8) (HUGE_VAL * HUGE_VAL); +#endif +} + +static inline float4 +get_float4_nan(void) +{ +#ifdef NAN + /* C99 standard way */ + return (float4) NAN; +#else + /* Assume we can get a NAN via zero divide */ + return (float4) (0.0 / 0.0); +#endif +} + +static inline float8 +get_float8_nan(void) +{ + /* (float8) NAN doesn't work on some NetBSD/MIPS releases */ +#if defined(NAN) && !(defined(__NetBSD__) && defined(__mips__)) + /* C99 standard way */ + return (float8) NAN; +#else + /* Assume we can get a NaN via zero divide */ + return (float8) (0.0 / 0.0); +#endif +} + +/* + * Floating-point arithmetic with overflow/underflow reported as errors + * + * There isn't any way to check for underflow of addition/subtraction + * because numbers near the underflow value have already been rounded to + * the point where we can't detect that the two values were originally + * different, e.g. on x86, '1e-45'::float4 == '2e-45'::float4 == + * 1.4013e-45. + */ + +static inline float4 +float4_pl(const float4 val1, const float4 val2) +{ + float4 result; + + result = val1 + val2; + if (unlikely(isinf(result)) && !isinf(val1) && !isinf(val2)) + float_overflow_error(); + + return result; +} + +static inline float8 +float8_pl(const float8 val1, const float8 val2) +{ + float8 result; + + result = val1 + val2; + if (unlikely(isinf(result)) && !isinf(val1) && !isinf(val2)) + float_overflow_error(); + + return result; +} + +static inline float4 +float4_mi(const float4 val1, const float4 val2) +{ + float4 result; + + result = val1 - val2; + if (unlikely(isinf(result)) && !isinf(val1) && !isinf(val2)) + float_overflow_error(); + + return result; +} + +static inline float8 +float8_mi(const float8 val1, const float8 val2) +{ + float8 result; + + result = val1 - val2; + if (unlikely(isinf(result)) && !isinf(val1) && !isinf(val2)) + float_overflow_error(); + + return result; +} + +static inline float4 +float4_mul(const float4 val1, const float4 val2) +{ + float4 result; + + result = val1 * val2; + if (unlikely(isinf(result)) && !isinf(val1) && !isinf(val2)) + float_overflow_error(); + if (unlikely(result == 0.0f) && val1 != 0.0f && val2 != 0.0f) + float_underflow_error(); + + return result; +} + +static inline float8 +float8_mul(const float8 val1, const float8 val2) +{ + float8 result; + + result = val1 * val2; + if (unlikely(isinf(result)) && !isinf(val1) && !isinf(val2)) + float_overflow_error(); + if (unlikely(result == 0.0) && val1 != 0.0 && val2 != 0.0) + float_underflow_error(); + + return result; +} + +static inline float4 +float4_div(const float4 val1, const float4 val2) +{ + float4 result; + + if (unlikely(val2 == 0.0f)) + float_zero_divide_error(); + result = val1 / val2; + if (unlikely(isinf(result)) && !isinf(val1) && !isinf(val2)) + float_overflow_error(); + if (unlikely(result == 0.0f) && val1 != 0.0f) + float_underflow_error(); + + return result; +} + +static inline float8 +float8_div(const float8 val1, const float8 val2) +{ + float8 result; + + if (unlikely(val2 == 0.0)) + float_zero_divide_error(); + result = val1 / val2; + if (unlikely(isinf(result)) && !isinf(val1) && !isinf(val2)) + float_overflow_error(); + if (unlikely(result == 0.0) && val1 != 0.0) + float_underflow_error(); + + return result; +} + +/* + * Routines for NaN-aware comparisons + * + * We consider all NaNs to be equal and larger than any non-NaN. This is + * somewhat arbitrary; the important thing is to have a consistent sort + * order. + */ + +static inline bool +float4_eq(const float4 val1, const float4 val2) +{ + return isnan(val1) ? isnan(val2) : !isnan(val2) && val1 == val2; +} + +static inline bool +float8_eq(const float8 val1, const float8 val2) +{ + return isnan(val1) ? isnan(val2) : !isnan(val2) && val1 == val2; +} + +static inline bool +float4_ne(const float4 val1, const float4 val2) +{ + return isnan(val1) ? !isnan(val2) : isnan(val2) || val1 != val2; +} + +static inline bool +float8_ne(const float8 val1, const float8 val2) +{ + return isnan(val1) ? !isnan(val2) : isnan(val2) || val1 != val2; +} + +static inline bool +float4_lt(const float4 val1, const float4 val2) +{ + return !isnan(val1) && (isnan(val2) || val1 < val2); +} + +static inline bool +float8_lt(const float8 val1, const float8 val2) +{ + return !isnan(val1) && (isnan(val2) || val1 < val2); +} + +static inline bool +float4_le(const float4 val1, const float4 val2) +{ + return isnan(val2) || (!isnan(val1) && val1 <= val2); +} + +static inline bool +float8_le(const float8 val1, const float8 val2) +{ + return isnan(val2) || (!isnan(val1) && val1 <= val2); +} + +static inline bool +float4_gt(const float4 val1, const float4 val2) +{ + return !isnan(val2) && (isnan(val1) || val1 > val2); +} + +static inline bool +float8_gt(const float8 val1, const float8 val2) +{ + return !isnan(val2) && (isnan(val1) || val1 > val2); +} + +static inline bool +float4_ge(const float4 val1, const float4 val2) +{ + return isnan(val1) || (!isnan(val2) && val1 >= val2); +} + +static inline bool +float8_ge(const float8 val1, const float8 val2) +{ + return isnan(val1) || (!isnan(val2) && val1 >= val2); +} + +static inline float4 +float4_min(const float4 val1, const float4 val2) +{ + return float4_lt(val1, val2) ? val1 : val2; +} + +static inline float8 +float8_min(const float8 val1, const float8 val2) +{ + return float8_lt(val1, val2) ? val1 : val2; +} + +static inline float4 +float4_max(const float4 val1, const float4 val2) +{ + return float4_gt(val1, val2) ? val1 : val2; +} + +static inline float8 +float8_max(const float8 val1, const float8 val2) +{ + return float8_gt(val1, val2) ? val1 : val2; +} + +#endif /* FLOAT_H */ diff --git a/parser/include/utils/fmgroids.h b/parser/include/utils/fmgroids.h index be08d09c..9fba69a1 100644 --- a/parser/include/utils/fmgroids.h +++ b/parser/include/utils/fmgroids.h @@ -6,7 +6,7 @@ * These macros can be used to avoid a catalog lookup when a specific * fmgr-callable function needs to be referenced. * - * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * NOTES @@ -14,8 +14,7 @@ * *** DO NOT EDIT THIS FILE! *** * ****************************** * - * It has been GENERATED by Gen_fmgrtab.pl - * from ../../../src/include/catalog/pg_proc.h + * It has been GENERATED by src/backend/utils/Gen_fmgrtab.pl * *------------------------------------------------------------------------- */ @@ -33,6 +32,7 @@ * its equivalent macro will be defined with the lowest OID among those * entries. */ +#define F_HEAP_TABLEAM_HANDLER 3 #define F_BYTEAOUT 31 #define F_CHAROUT 33 #define F_NAMEIN 34 @@ -209,42 +209,25 @@ #define F_DTOI2 237 #define F_FTOI2 238 #define F_LINE_DISTANCE 239 -#define F_ABSTIMEIN 240 -#define F_ABSTIMEOUT 241 -#define F_RELTIMEIN 242 -#define F_RELTIMEOUT 243 -#define F_TIMEPL 244 -#define F_TIMEMI 245 -#define F_TINTERVALIN 246 -#define F_TINTERVALOUT 247 -#define F_INTINTERVAL 248 -#define F_TINTERVALREL 249 -#define F_TIMENOW 250 -#define F_ABSTIMEEQ 251 -#define F_ABSTIMENE 252 -#define F_ABSTIMELT 253 -#define F_ABSTIMEGT 254 -#define F_ABSTIMELE 255 -#define F_ABSTIMEGE 256 -#define F_RELTIMEEQ 257 -#define F_RELTIMENE 258 -#define F_RELTIMELT 259 -#define F_RELTIMEGT 260 -#define F_RELTIMELE 261 -#define F_RELTIMEGE 262 -#define F_TINTERVALSAME 263 -#define F_TINTERVALCT 264 -#define F_TINTERVALOV 265 -#define F_TINTERVALLENEQ 266 -#define F_TINTERVALLENNE 267 -#define F_TINTERVALLENLT 268 -#define F_TINTERVALLENGT 269 -#define F_TINTERVALLENLE 270 -#define F_TINTERVALLENGE 271 -#define F_TINTERVALSTART 272 -#define F_TINTERVALEND 273 +#define F_NAMEEQTEXT 240 +#define F_NAMELTTEXT 241 +#define F_NAMELETEXT 242 +#define F_NAMEGETEXT 243 +#define F_NAMEGTTEXT 244 +#define F_NAMENETEXT 245 +#define F_BTNAMETEXTCMP 246 +#define F_TEXTEQNAME 247 +#define F_TEXTLTNAME 248 +#define F_TEXTLENAME 249 +#define F_TEXTGENAME 250 +#define F_TEXTGTNAME 251 +#define F_TEXTNENAME 252 +#define F_BTTEXTNAMECMP 253 +#define F_NAMECONCATOID 266 +#define F_TABLE_AM_HANDLER_IN 267 +#define F_TABLE_AM_HANDLER_OUT 268 #define F_TIMEOFDAY 274 -#define F_ABSTIME_FINITE 275 +#define F_PG_NEXTOID 275 #define F_FLOAT8_COMBINE 276 #define F_INTER_SL 277 #define F_INTER_LB 278 @@ -284,6 +267,7 @@ #define F_DTOF 312 #define F_I2TOI4 313 #define F_I4TOI2 314 +#define F_PG_JIT_AVAILABLE 315 #define F_I4TOD 316 #define F_DTOI4 317 #define F_I4TOF 318 @@ -303,6 +287,8 @@ #define F_GINHANDLER 333 #define F_SPGHANDLER 334 #define F_BRINHANDLER 335 +#define F_SCALARLESEL 336 +#define F_SCALARGESEL 337 #define F_AMVALIDATE 338 #define F_POLY_SAME 339 #define F_POLY_CONTAIN 340 @@ -319,7 +305,7 @@ #define F_BTFLOAT4CMP 354 #define F_BTFLOAT8CMP 355 #define F_BTOIDCMP 356 -#define F_BTABSTIMECMP 357 +#define F_DIST_BP 357 #define F_BTCHARCMP 358 #define F_BTNAMECMP 359 #define F_BTTEXTCMP 360 @@ -340,11 +326,12 @@ #define F_CASH_CMP 377 #define F_ARRAY_APPEND 378 #define F_ARRAY_PREPEND 379 -#define F_BTRELTIMECMP 380 -#define F_BTTINTERVALCMP 381 +#define F_DIST_SP 380 +#define F_DIST_BS 381 #define F_BTARRAYCMP 382 #define F_ARRAY_CAT 383 #define F_ARRAY_TO_TEXT_NULL 384 +#define F_SCALARLEJOINSEL 386 #define F_ARRAY_NE 390 #define F_ARRAY_LT 391 #define F_ARRAY_GT 392 @@ -352,6 +339,7 @@ #define F_TEXT_TO_ARRAY 394 #define F_ARRAY_TO_TEXT 395 #define F_ARRAY_GE 396 +#define F_SCALARGEJOINSEL 398 #define F_HASHMACADDR 399 #define F_HASHTEXT 400 #define F_RTRIM1 401 @@ -360,12 +348,22 @@ #define F_TEXT_NAME 407 #define F_NAME_BPCHAR 408 #define F_BPCHAR_NAME 409 +#define F_DIST_PATHP 421 #define F_HASHINET 422 +#define F_HASHINT4EXTENDED 425 #define F_HASH_NUMERIC 432 #define F_MACADDR_IN 436 #define F_MACADDR_OUT 437 #define F_PG_NUM_NULLS 438 #define F_PG_NUM_NONNULLS 440 +#define F_HASHINT2EXTENDED 441 +#define F_HASHINT8EXTENDED 442 +#define F_HASHFLOAT4EXTENDED 443 +#define F_HASHFLOAT8EXTENDED 444 +#define F_HASHOIDEXTENDED 445 +#define F_HASHCHAREXTENDED 446 +#define F_HASHNAMEEXTENDED 447 +#define F_HASHTEXTEXTENDED 448 #define F_HASHINT2 449 #define F_HASHINT4 450 #define F_HASHFLOAT4 451 @@ -420,7 +418,7 @@ #define F_NAMENE 659 #define F_BPCHAR 668 #define F_VARCHAR 669 -#define F_MKTINTERVAL 676 +#define F_PG_INDEXAM_PROGRESS_PHASENAME 676 #define F_OIDVECTORLT 677 #define F_OIDVECTORLE 678 #define F_OIDVECTOREQ 679 @@ -431,6 +429,9 @@ #define F_NETWORK_MASKLEN 697 #define F_NETWORK_BROADCAST 698 #define F_NETWORK_HOST 699 +#define F_DIST_LP 702 +#define F_DIST_BL 703 +#define F_DIST_LS 704 #define F_CURRENT_USER 710 #define F_NETWORK_FAMILY 711 #define F_INT82 714 @@ -462,10 +463,6 @@ #define F_BYTEAOVERLAY_NO_LEN 752 #define F_MACADDR_TRUNC 753 #define F_INT28 754 -#define F_SMGRIN 760 -#define F_SMGROUT 761 -#define F_SMGREQ 762 -#define F_SMGRNE 763 #define F_BE_LO_IMPORT 764 #define F_BE_LO_EXPORT 765 #define F_INT4INC 766 @@ -474,12 +471,15 @@ #define F_INT4SMALLER 769 #define F_INT2LARGER 770 #define F_INT2SMALLER 771 -#define F_TINTERVALEQ 784 -#define F_TINTERVALNE 785 -#define F_TINTERVALLT 786 -#define F_TINTERVALGT 787 -#define F_TINTERVALLE 788 -#define F_TINTERVALGE 789 +#define F_HASHVARLENAEXTENDED 772 +#define F_HASHOIDVECTOREXTENDED 776 +#define F_HASH_ACLITEM_EXTENDED 777 +#define F_HASHMACADDREXTENDED 778 +#define F_HASHINETEXTENDED 779 +#define F_HASH_NUMERIC_EXTENDED 780 +#define F_HASHMACADDR8EXTENDED 781 +#define F_HASH_ARRAY_EXTENDED 782 +#define F_DIST_POLYC 785 #define F_PG_CLIENT_ENCODING 810 #define F_CURRENT_QUERY 817 #define F_MACADDR_EQ 830 @@ -581,6 +581,7 @@ #define F_CLOSE_SL 962 #define F_CLOSE_LB 963 #define F_BE_LO_UNLINK 964 +#define F_HASHBPCHAREXTENDED 972 #define F_PATH_INTER 973 #define F_BOX_AREA 975 #define F_BOX_WIDTH 976 @@ -608,6 +609,9 @@ #define F_LSEG_HORIZONTAL 998 #define F_LSEG_EQ 999 #define F_BE_LO_TRUNCATE 1004 +#define F_TEXTLIKE_SUPPORT 1023 +#define F_TEXTICREGEXEQ_SUPPORT 1024 +#define F_TEXTICLIKE_SUPPORT 1025 #define F_TIMESTAMPTZ_IZONE 1026 #define F_GIST_POINT_COMPRESS 1030 #define F_ACLITEMIN 1031 @@ -688,13 +692,13 @@ #define F_INTERVAL_MI 1170 #define F_TIMESTAMPTZ_PART 1171 #define F_INTERVAL_PART 1172 -#define F_ABSTIME_TIMESTAMPTZ 1173 +#define F_NETWORK_SUBSET_SUPPORT 1173 #define F_DATE_TIMESTAMPTZ 1174 #define F_INTERVAL_JUSTIFY_HOURS 1175 -#define F_RELTIME_INTERVAL 1177 +#define F_JSONB_PATH_EXISTS_TZ 1177 #define F_TIMESTAMPTZ_DATE 1178 -#define F_ABSTIME_DATE 1179 -#define F_TIMESTAMPTZ_ABSTIME 1180 +#define F_JSONB_PATH_QUERY_TZ 1179 +#define F_JSONB_PATH_QUERY_ARRAY_TZ 1180 #define F_XID_AGE 1181 #define F_TIMESTAMP_MI 1188 #define F_TIMESTAMPTZ_PL_INTERVAL 1189 @@ -702,7 +706,7 @@ #define F_GENERATE_SUBSCRIPTS 1191 #define F_GENERATE_SUBSCRIPTS_NODIR 1192 #define F_ARRAY_FILL 1193 -#define F_INTERVAL_RELTIME 1194 +#define F_DLOG10 1194 #define F_TIMESTAMP_SMALLER 1195 #define F_TIMESTAMP_LARGER 1196 #define F_INTERVAL_SMALLER 1197 @@ -750,6 +754,7 @@ #define F_INT48DIV 1281 #define F_QUOTE_IDENT 1282 #define F_QUOTE_LITERAL 1283 +#define F_TIMESTAMPTZ_TRUNC_ZONE 1284 #define F_ARRAY_FILL_WITH_LOWER_BOUNDS 1286 #define F_I8TOOID 1287 #define F_OIDTOI8 1288 @@ -774,7 +779,6 @@ #define F_TIMESTAMP_TIME 1316 #define F_BPCHARLEN 1318 #define F_INTERVAL_DIV 1326 -#define F_DLOG10 1339 #define F_OIDVECTORTYPES 1349 #define F_TIMETZ_IN 1350 #define F_TIMETZ_OUT 1351 @@ -786,6 +790,7 @@ #define F_TIMETZ_GT 1357 #define F_TIMETZ_CMP 1358 #define F_NETWORK_HOSTMASK 1362 +#define F_TEXTREGEXEQ_SUPPORT 1364 #define F_MAKEACLITEM 1365 #define F_TIME_INTERVAL 1370 #define F_PG_LOCK_STATUS 1371 @@ -1149,6 +1154,8 @@ #define F_TIMETZ_SCALE 1969 #define F_PG_STAT_GET_TUPLES_HOT_UPDATED 1972 #define F_NUMERIC_DIV_TRUNC 1973 +#define F_SIMILAR_TO_ESCAPE_2 1986 +#define F_SIMILAR_TO_ESCAPE_1 1987 #define F_BYTEALIKE 2005 #define F_BYTEANLIKE 2006 #define F_LIKE_ESCAPE_BYTEA 2009 @@ -1161,13 +1168,13 @@ #define F_TIMESTAMP_TRUNC 2020 #define F_TIMESTAMP_PART 2021 #define F_PG_STAT_GET_ACTIVITY 2022 -#define F_ABSTIME_TIMESTAMP 2023 +#define F_JSONB_PATH_QUERY_FIRST_TZ 2023 #define F_DATE_TIMESTAMP 2024 #define F_PG_BACKEND_PID 2026 #define F_TIMESTAMPTZ_TIMESTAMP 2027 #define F_TIMESTAMP_TIMESTAMPTZ 2028 #define F_TIMESTAMP_DATE 2029 -#define F_TIMESTAMP_ABSTIME 2030 +#define F_JSONB_PATH_MATCH_TZ 2030 #define F_TIMESTAMP_PL_INTERVAL 2032 #define F_TIMESTAMP_MI_INTERVAL 2033 #define F_PG_CONF_LOAD_TIME 2034 @@ -1253,6 +1260,8 @@ #define F_REGTYPEOUT 2221 #define F_PG_STAT_CLEAR_SNAPSHOT 2230 #define F_PG_GET_FUNCTION_IDENTITY_ARGUMENTS 2232 +#define F_HASHTID 2233 +#define F_HASHTIDEXTENDED 2234 #define F_FMGR_INTERNAL_VALIDATOR 2246 #define F_FMGR_C_VALIDATOR 2247 #define F_FMGR_SQL_VALIDATOR 2248 @@ -1302,8 +1311,8 @@ #define F_LANGUAGE_HANDLER_OUT 2303 #define F_INTERNAL_IN 2304 #define F_INTERNAL_OUT 2305 -#define F_OPAQUE_IN 2306 -#define F_OPAQUE_OUT 2307 +#define F_PG_STAT_GET_SLRU 2306 +#define F_PG_STAT_RESET_SLRU 2307 #define F_DCEIL 2308 #define F_DFLOOR 2309 #define F_DSIGN 2310 @@ -1418,12 +1427,12 @@ #define F_VARBIT_SEND 2459 #define F_NUMERIC_RECV 2460 #define F_NUMERIC_SEND 2461 -#define F_ABSTIMERECV 2462 -#define F_ABSTIMESEND 2463 -#define F_RELTIMERECV 2464 -#define F_RELTIMESEND 2465 -#define F_TINTERVALRECV 2466 -#define F_TINTERVALSEND 2467 +#define F_DSINH 2462 +#define F_DCOSH 2463 +#define F_DTANH 2464 +#define F_DASINH 2465 +#define F_DACOSH 2466 +#define F_DATANH 2467 #define F_DATE_RECV 2468 #define F_DATE_SEND 2469 #define F_TIME_RECV 2470 @@ -1502,8 +1511,7 @@ #define F_POLY_OVERABOVE 2568 #define F_POLY_ABOVE 2569 #define F_GIST_BOX_CONSISTENT 2578 -#define F_GIST_BOX_COMPRESS 2579 -#define F_GIST_BOX_DECOMPRESS 2580 +#define F_JSONB_FLOAT8 2580 #define F_GIST_BOX_PENALTY 2581 #define F_GIST_BOX_PICKSPLIT 2582 #define F_GIST_BOX_UNION 2583 @@ -1520,7 +1528,7 @@ #define F_PG_TIMEZONE_ABBREVS 2599 #define F_XMLEXISTS 2614 #define F_PG_RELOAD_CONF 2621 -#define F_PG_ROTATE_LOGFILE 2622 +#define F_PG_ROTATE_LOGFILE_V2 2622 #define F_PG_STAT_FILE_1ARG 2623 #define F_PG_READ_FILE_OFF_LEN 2624 #define F_PG_LS_DIR_1ARG 2625 @@ -1681,16 +1689,16 @@ #define F_DATABASE_TO_XML 2936 #define F_DATABASE_TO_XMLSCHEMA 2937 #define F_DATABASE_TO_XML_AND_XMLSCHEMA 2938 -#define F_TXID_SNAPSHOT_IN 2939 -#define F_TXID_SNAPSHOT_OUT 2940 -#define F_TXID_SNAPSHOT_RECV 2941 -#define F_TXID_SNAPSHOT_SEND 2942 -#define F_TXID_CURRENT 2943 -#define F_TXID_CURRENT_SNAPSHOT 2944 -#define F_TXID_SNAPSHOT_XMIN 2945 -#define F_TXID_SNAPSHOT_XMAX 2946 -#define F_TXID_SNAPSHOT_XIP 2947 -#define F_TXID_VISIBLE_IN_SNAPSHOT 2948 +#define F_PG_SNAPSHOT_IN 2939 +#define F_PG_SNAPSHOT_OUT 2940 +#define F_PG_SNAPSHOT_RECV 2941 +#define F_PG_SNAPSHOT_SEND 2942 +#define F_PG_CURRENT_XACT_ID 2943 +#define F_PG_CURRENT_SNAPSHOT 2944 +#define F_PG_SNAPSHOT_XMIN 2945 +#define F_PG_SNAPSHOT_XMAX 2946 +#define F_PG_SNAPSHOT_XIP 2947 +#define F_PG_VISIBLE_IN_SNAPSHOT 2948 #define F_UUID_IN 2952 #define F_UUID_OUT 2953 #define F_UUID_LT 2954 @@ -1809,7 +1817,7 @@ #define F_PG_ADVISORY_XACT_LOCK_SHARED_INT4 3094 #define F_PG_TRY_ADVISORY_XACT_LOCK_INT4 3095 #define F_PG_TRY_ADVISORY_XACT_LOCK_SHARED_INT4 3096 -#define F_VARCHAR_TRANSFORM 3097 +#define F_VARCHAR_SUPPORT 3097 #define F_PG_CREATE_RESTORE_POINT 3098 #define F_PG_STAT_GET_WAL_SENDERS 3099 #define F_WINDOW_ROW_NUMBER 3100 @@ -1856,8 +1864,8 @@ #define F_ARRAY_TO_JSON_PRETTY 3154 #define F_ROW_TO_JSON 3155 #define F_ROW_TO_JSON_PRETTY 3156 -#define F_NUMERIC_TRANSFORM 3157 -#define F_VARBIT_TRANSFORM 3158 +#define F_NUMERIC_SUPPORT 3157 +#define F_VARBIT_SUPPORT 3158 #define F_PG_GET_VIEWDEF_WRAP 3159 #define F_PG_STAT_GET_CHECKPOINT_WRITE_TIME 3160 #define F_PG_STAT_GET_CHECKPOINT_SYNC_TIME 3161 @@ -1938,13 +1946,13 @@ #define F_ARRAY_POSITION_START 3278 #define F_ARRAY_POSITIONS 3279 #define F_GIST_CIRCLE_DISTANCE 3280 -#define F_GIST_BOX_FETCH 3281 +#define F_NUMERIC_SCALE 3281 #define F_GIST_POINT_FETCH 3282 #define F_NUMERIC_SORTSUPPORT 3283 #define F_GIST_POLY_DISTANCE 3288 #define F_DIST_CPOINT 3290 #define F_DIST_POLYP 3292 -#define F_PG_READ_FILE 3293 +#define F_PG_READ_FILE_V2 3293 #define F_SHOW_CONFIG_BY_NAME_MISSING_OK 3294 #define F_PG_READ_BINARY_FILE 3295 #define F_PG_NOTIFICATION_QUEUE_USAGE 3296 @@ -1993,7 +2001,7 @@ #define F_JSONB_DELETE_ARRAY 3343 #define F_CASH_MUL_INT8 3344 #define F_CASH_DIV_INT8 3345 -#define F_TXID_CURRENT_IF_ASSIGNED 3348 +#define F_PG_CURRENT_XACT_ID_IF_ASSIGNED 3348 #define F_PG_GET_PARTKEYDEF 3352 #define F_PG_LS_LOGDIR 3353 #define F_PG_LS_WALDIR 3354 @@ -2002,7 +2010,7 @@ #define F_PG_NDISTINCT_RECV 3357 #define F_PG_NDISTINCT_SEND 3358 #define F_MACADDR_SORTSUPPORT 3359 -#define F_TXID_STATUS 3360 +#define F_PG_XACT_STATUS 3360 #define F_PG_SAFE_SNAPSHOT_BLOCKING_PIDS 3376 #define F_PG_ISOLATION_TEST_SESSION_IS_BLOCKED 3378 #define F_PG_IDENTIFY_OBJECT_AS_ADDRESS 3382 @@ -2028,7 +2036,31 @@ #define F_PG_DEPENDENCIES_RECV 3406 #define F_PG_DEPENDENCIES_SEND 3407 #define F_PG_GET_PARTITION_CONSTRAINTDEF 3408 +#define F_TIME_HASH_EXTENDED 3409 +#define F_TIMETZ_HASH_EXTENDED 3410 +#define F_TIMESTAMP_HASH_EXTENDED 3411 +#define F_UUID_HASH_EXTENDED 3412 +#define F_PG_LSN_HASH_EXTENDED 3413 +#define F_HASHENUMEXTENDED 3414 #define F_PG_GET_STATISTICSOBJDEF 3415 +#define F_JSONB_HASH_EXTENDED 3416 +#define F_HASH_RANGE_EXTENDED 3417 +#define F_INTERVAL_HASH_EXTENDED 3418 +#define F_SHA224_BYTEA 3419 +#define F_SHA256_BYTEA 3420 +#define F_SHA384_BYTEA 3421 +#define F_SHA512_BYTEA 3422 +#define F_PG_PARTITION_TREE 3423 +#define F_PG_PARTITION_ROOT 3424 +#define F_PG_PARTITION_ANCESTORS 3425 +#define F_PG_STAT_GET_DB_CHECKSUM_FAILURES 3426 +#define F_PG_STATS_EXT_MCVLIST_ITEMS 3427 +#define F_PG_STAT_GET_DB_CHECKSUM_LAST_FAILURE 3428 +#define F_GEN_RANDOM_UUID 3432 +#define F_GTSVECTOR_OPTIONS 3434 +#define F_PG_PROMOTE 3436 +#define F_PREFIXSEL 3437 +#define F_PREFIXJOINSEL 3438 #define F_PG_CONTROL_SYSTEM 3441 #define F_PG_CONTROL_CHECKPOINT 3442 #define F_PG_CONTROL_RECOVERY 3443 @@ -2037,6 +2069,11 @@ #define F_MACADDR8_RECV 3446 #define F_MACADDR8_SEND 3447 #define F_PG_COLLATION_ACTUAL_VERSION 3448 +#define F_JSONB_NUMERIC 3449 +#define F_JSONB_INT2 3450 +#define F_JSONB_INT4 3451 +#define F_JSONB_INT8 3452 +#define F_JSONB_FLOAT4 3453 #define F_PG_FILENODE_RELATION 3454 #define F_BE_LO_FROM_BYTEA 3457 #define F_BE_LO_GET 3458 @@ -2110,7 +2147,7 @@ #define F_INET_GIST_CONSISTENT 3553 #define F_INET_GIST_UNION 3554 #define F_INET_GIST_COMPRESS 3555 -#define F_INET_GIST_DECOMPRESS 3556 +#define F_JSONB_BOOL 3556 #define F_INET_GIST_PENALTY 3557 #define F_INET_GIST_PICKSPLIT 3558 #define F_INET_GIST_SAME 3559 @@ -2196,7 +2233,7 @@ #define F_TSQ_MCONTAINS 3691 #define F_TSQ_MCONTAINED 3692 #define F_GTSQUERY_COMPRESS 3695 -#define F_GTSQUERY_DECOMPRESS 3696 +#define F_TEXT_STARTS_WITH 3696 #define F_GTSQUERY_PICKSPLIT 3697 #define F_GTSQUERY_UNION 3698 #define F_GTSQUERY_SAME 3699 @@ -2351,8 +2388,7 @@ #define F_RANGE_GT 3874 #define F_RANGE_GIST_CONSISTENT 3875 #define F_RANGE_GIST_UNION 3876 -#define F_RANGE_GIST_COMPRESS 3877 -#define F_RANGE_GIST_DECOMPRESS 3878 +#define F_PG_REPLICATION_SLOT_ADVANCE 3878 #define F_RANGE_GIST_PENALTY 3879 #define F_RANGE_GIST_PICKSPLIT 3880 #define F_RANGE_GIST_SAME 3881 @@ -2360,8 +2396,8 @@ #define F_INT4RANGE_CANONICAL 3914 #define F_DATERANGE_CANONICAL 3915 #define F_RANGE_TYPANALYZE 3916 -#define F_TIMESTAMP_TRANSFORM 3917 -#define F_INTERVAL_TRANSFORM 3918 +#define F_TIMESTAMP_SUPPORT 3917 +#define F_INTERVAL_SUPPORT 3918 #define F_GINARRAYTRICONSISTENT 3920 #define F_GIN_TSQUERY_TRICONSISTENT 3921 #define F_INT4RANGE_SUBDIFF 3922 @@ -2376,7 +2412,7 @@ #define F_MXID_AGE 3939 #define F_JSONB_EXTRACT_PATH_TEXT 3940 #define F_ACLDEFAULT_SQL 3943 -#define F_TIME_TRANSFORM 3944 +#define F_TIME_SUPPORT 3944 #define F_JSON_OBJECT_FIELD 3947 #define F_JSON_OBJECT_FIELD_TEXT 3948 #define F_JSON_ARRAY_ELEMENT 3949 @@ -2407,10 +2443,22 @@ #define F_HYPOTHETICAL_PERCENT_RANK_FINAL 3989 #define F_HYPOTHETICAL_CUME_DIST_FINAL 3991 #define F_HYPOTHETICAL_DENSE_RANK_FINAL 3993 -#define F_TIMESTAMP_IZONE_TRANSFORM 3994 -#define F_TIMESTAMP_ZONE_TRANSFORM 3995 -#define F_RANGE_GIST_FETCH 3996 +#define F_GENERATE_SERIES_INT4_SUPPORT 3994 +#define F_GENERATE_SERIES_INT8_SUPPORT 3995 +#define F_ARRAY_UNNEST_SUPPORT 3996 +#define F_GIST_BOX_DISTANCE 3998 #define F_BRIN_SUMMARIZE_RANGE 3999 +#define F_JSONPATH_IN 4001 +#define F_JSONPATH_RECV 4002 +#define F_JSONPATH_OUT 4003 +#define F_JSONPATH_SEND 4004 +#define F_JSONB_PATH_EXISTS 4005 +#define F_JSONB_PATH_QUERY 4006 +#define F_JSONB_PATH_QUERY_ARRAY 4007 +#define F_JSONB_PATH_QUERY_FIRST 4008 +#define F_JSONB_PATH_MATCH 4009 +#define F_JSONB_PATH_EXISTS_OPR 4010 +#define F_JSONB_PATH_MATCH_OPR 4011 #define F_BRIN_DESUMMARIZE_RANGE 4014 #define F_SPG_QUAD_CONFIG 4018 #define F_SPG_QUAD_CHOOSE 4019 @@ -2458,6 +2506,9 @@ #define F_REGROLERECV 4094 #define F_REGROLESEND 4095 #define F_REGROLEIN 4098 +#define F_PG_ROTATE_LOGFILE 4099 +#define F_PG_READ_FILE 4100 +#define F_BINARY_UPGRADE_SET_MISSING_VALUE 4101 #define F_BRIN_INCLUSION_OPCINFO 4105 #define F_BRIN_INCLUSION_ADD_VALUE 4106 #define F_BRIN_INCLUSION_CONSISTENT 4107 @@ -2478,6 +2529,29 @@ #define F_MACADDRTOMACADDR8 4123 #define F_MACADDR8TOMACADDR 4124 #define F_MACADDR8_SET7BIT 4125 +#define F_IN_RANGE_INT8_INT8 4126 +#define F_IN_RANGE_INT4_INT8 4127 +#define F_IN_RANGE_INT4_INT4 4128 +#define F_IN_RANGE_INT4_INT2 4129 +#define F_IN_RANGE_INT2_INT8 4130 +#define F_IN_RANGE_INT2_INT4 4131 +#define F_IN_RANGE_INT2_INT2 4132 +#define F_IN_RANGE_DATE_INTERVAL 4133 +#define F_IN_RANGE_TIMESTAMP_INTERVAL 4134 +#define F_IN_RANGE_TIMESTAMPTZ_INTERVAL 4135 +#define F_IN_RANGE_INTERVAL_INTERVAL 4136 +#define F_IN_RANGE_TIME_INTERVAL 4137 +#define F_IN_RANGE_TIMETZ_INTERVAL 4138 +#define F_IN_RANGE_FLOAT8_FLOAT8 4139 +#define F_IN_RANGE_FLOAT4_FLOAT8 4140 +#define F_IN_RANGE_NUMERIC_NUMERIC 4141 +#define F_PG_LSN_LARGER 4187 +#define F_PG_LSN_SMALLER 4188 +#define F_REGCOLLATIONIN 4193 +#define F_REGCOLLATIONOUT 4194 +#define F_TO_REGCOLLATION 4195 +#define F_REGCOLLATIONRECV 4196 +#define F_REGCOLLATIONSEND 4197 #define F_TS_HEADLINE_JSONB_BYID_OPT 4201 #define F_TS_HEADLINE_JSONB_BYID 4202 #define F_TS_HEADLINE_JSONB_OPT 4203 @@ -2486,10 +2560,21 @@ #define F_TS_HEADLINE_JSON_BYID 4206 #define F_TS_HEADLINE_JSON_OPT 4207 #define F_TS_HEADLINE_JSON 4208 -#define F_JSONB_TO_TSVECTOR 4209 -#define F_JSON_TO_TSVECTOR 4210 -#define F_JSONB_TO_TSVECTOR_BYID 4211 -#define F_JSON_TO_TSVECTOR_BYID 4212 +#define F_JSONB_STRING_TO_TSVECTOR 4209 +#define F_JSON_STRING_TO_TSVECTOR 4210 +#define F_JSONB_STRING_TO_TSVECTOR_BYID 4211 +#define F_JSON_STRING_TO_TSVECTOR_BYID 4212 +#define F_JSONB_TO_TSVECTOR 4213 +#define F_JSONB_TO_TSVECTOR_BYID 4214 +#define F_JSON_TO_TSVECTOR 4215 +#define F_JSON_TO_TSVECTOR_BYID 4216 +#define F_PG_COPY_PHYSICAL_REPLICATION_SLOT_A 4220 +#define F_PG_COPY_PHYSICAL_REPLICATION_SLOT_B 4221 +#define F_PG_COPY_LOGICAL_REPLICATION_SLOT_A 4222 +#define F_PG_COPY_LOGICAL_REPLICATION_SLOT_B 4223 +#define F_PG_COPY_LOGICAL_REPLICATION_SLOT_C 4224 +#define F_UNICODE_NORMALIZE_FUNC 4350 +#define F_UNICODE_IS_NORMALIZED 4351 #define F_PG_EVENT_TRIGGER_TABLE_REWRITE_OID 4566 #define F_PG_EVENT_TRIGGER_TABLE_REWRITE_REASON 4567 #define F_PG_EVENT_TRIGGER_DDL_COMMANDS 4568 @@ -2497,11 +2582,61 @@ #define F_TSQUERY_PHRASE 5003 #define F_TSQUERY_PHRASE_DISTANCE 5004 #define F_PHRASETO_TSQUERY_BYID 5006 +#define F_WEBSEARCH_TO_TSQUERY_BYID 5007 +#define F_WEBSEARCH_TO_TSQUERY 5009 +#define F_SPG_BBOX_QUAD_CONFIG 5010 +#define F_SPG_POLY_QUAD_COMPRESS 5011 #define F_SPG_BOX_QUAD_CONFIG 5012 #define F_SPG_BOX_QUAD_CHOOSE 5013 #define F_SPG_BOX_QUAD_PICKSPLIT 5014 #define F_SPG_BOX_QUAD_INNER_CONSISTENT 5015 #define F_SPG_BOX_QUAD_LEAF_CONSISTENT 5016 +#define F_PG_MCV_LIST_IN 5018 +#define F_PG_MCV_LIST_OUT 5019 +#define F_PG_MCV_LIST_RECV 5020 +#define F_PG_MCV_LIST_SEND 5021 +#define F_SATISFIES_HASH_PARTITION 5028 +#define F_PG_LS_TMPDIR_NOARGS 5029 +#define F_PG_LS_TMPDIR_1ARG 5030 +#define F_PG_LS_ARCHIVE_STATUSDIR 5031 +#define F_NETWORK_SORTSUPPORT 5033 +#define F_XID8LT 5034 +#define F_XID8GT 5035 +#define F_XID8LE 5036 +#define F_XID8GE 5037 +#define F_MATCHINGSEL 5040 +#define F_MATCHINGJOINSEL 5041 +#define F_NUMERIC_MIN_SCALE 5042 +#define F_NUMERIC_TRIM_SCALE 5043 +#define F_INT4GCD 5044 +#define F_INT8GCD 5045 +#define F_INT4LCM 5046 +#define F_INT8LCM 5047 +#define F_NUMERIC_GCD 5048 +#define F_NUMERIC_LCM 5049 +#define F_BTVARSTREQUALIMAGE 5050 +#define F_BTEQUALIMAGE 5051 +#define F_PG_GET_SHMEM_ALLOCATIONS 5052 +#define F_PG_STAT_GET_INS_SINCE_VACUUM 5053 +#define F_JSONB_SET_LAX 5054 +#define F_XID8IN 5070 +#define F_XID8TOXID 5071 +#define F_XID8OUT 5081 +#define F_XID8RECV 5082 +#define F_XID8SEND 5083 +#define F_XID8EQ 5084 +#define F_XID8NE 5085 +#define F_ANYCOMPATIBLE_IN 5086 +#define F_ANYCOMPATIBLE_OUT 5087 +#define F_ANYCOMPATIBLEARRAY_IN 5088 +#define F_ANYCOMPATIBLEARRAY_OUT 5089 +#define F_ANYCOMPATIBLEARRAY_RECV 5090 +#define F_ANYCOMPATIBLEARRAY_SEND 5091 +#define F_ANYCOMPATIBLENONARRAY_IN 5092 +#define F_ANYCOMPATIBLENONARRAY_OUT 5093 +#define F_ANYCOMPATIBLERANGE_IN 5094 +#define F_ANYCOMPATIBLERANGE_OUT 5095 +#define F_XID8CMP 5096 #define F_PG_REPLICATION_ORIGIN_CREATE 6003 #define F_PG_REPLICATION_ORIGIN_DROP 6004 #define F_PG_REPLICATION_ORIGIN_OID 6005 @@ -2518,6 +2653,5 @@ #define F_PG_GET_PUBLICATION_TABLES 6119 #define F_PG_GET_REPLICA_IDENTITY_INDEX 6120 #define F_PG_RELATION_IS_PUBLISHABLE 6121 -#define F_NUMERIC_SCALE 8888 -#endif /* FMGROIDS_H */ +#endif /* FMGROIDS_H */ diff --git a/parser/include/utils/fmgrprotos.h b/parser/include/utils/fmgrprotos.h index 53ed3775..9ca72545 100644 --- a/parser/include/utils/fmgrprotos.h +++ b/parser/include/utils/fmgrprotos.h @@ -3,7 +3,7 @@ * fmgrprotos.h * Prototypes for built-in functions. * - * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * NOTES @@ -11,8 +11,7 @@ * *** DO NOT EDIT THIS FILE! *** * ****************************** * - * It has been GENERATED by Gen_fmgrtab.pl - * from ../../../src/include/catalog/pg_proc.h + * It has been GENERATED by src/backend/utils/Gen_fmgrtab.pl * *------------------------------------------------------------------------- */ @@ -22,6 +21,7 @@ #include "fmgr.h" +extern Datum heap_tableam_handler(PG_FUNCTION_ARGS); extern Datum byteaout(PG_FUNCTION_ARGS); extern Datum charout(PG_FUNCTION_ARGS); extern Datum namein(PG_FUNCTION_ARGS); @@ -198,42 +198,25 @@ extern Datum i2tof(PG_FUNCTION_ARGS); extern Datum dtoi2(PG_FUNCTION_ARGS); extern Datum ftoi2(PG_FUNCTION_ARGS); extern Datum line_distance(PG_FUNCTION_ARGS); -extern Datum abstimein(PG_FUNCTION_ARGS); -extern Datum abstimeout(PG_FUNCTION_ARGS); -extern Datum reltimein(PG_FUNCTION_ARGS); -extern Datum reltimeout(PG_FUNCTION_ARGS); -extern Datum timepl(PG_FUNCTION_ARGS); -extern Datum timemi(PG_FUNCTION_ARGS); -extern Datum tintervalin(PG_FUNCTION_ARGS); -extern Datum tintervalout(PG_FUNCTION_ARGS); -extern Datum intinterval(PG_FUNCTION_ARGS); -extern Datum tintervalrel(PG_FUNCTION_ARGS); -extern Datum timenow(PG_FUNCTION_ARGS); -extern Datum abstimeeq(PG_FUNCTION_ARGS); -extern Datum abstimene(PG_FUNCTION_ARGS); -extern Datum abstimelt(PG_FUNCTION_ARGS); -extern Datum abstimegt(PG_FUNCTION_ARGS); -extern Datum abstimele(PG_FUNCTION_ARGS); -extern Datum abstimege(PG_FUNCTION_ARGS); -extern Datum reltimeeq(PG_FUNCTION_ARGS); -extern Datum reltimene(PG_FUNCTION_ARGS); -extern Datum reltimelt(PG_FUNCTION_ARGS); -extern Datum reltimegt(PG_FUNCTION_ARGS); -extern Datum reltimele(PG_FUNCTION_ARGS); -extern Datum reltimege(PG_FUNCTION_ARGS); -extern Datum tintervalsame(PG_FUNCTION_ARGS); -extern Datum tintervalct(PG_FUNCTION_ARGS); -extern Datum tintervalov(PG_FUNCTION_ARGS); -extern Datum tintervalleneq(PG_FUNCTION_ARGS); -extern Datum tintervallenne(PG_FUNCTION_ARGS); -extern Datum tintervallenlt(PG_FUNCTION_ARGS); -extern Datum tintervallengt(PG_FUNCTION_ARGS); -extern Datum tintervallenle(PG_FUNCTION_ARGS); -extern Datum tintervallenge(PG_FUNCTION_ARGS); -extern Datum tintervalstart(PG_FUNCTION_ARGS); -extern Datum tintervalend(PG_FUNCTION_ARGS); +extern Datum nameeqtext(PG_FUNCTION_ARGS); +extern Datum namelttext(PG_FUNCTION_ARGS); +extern Datum nameletext(PG_FUNCTION_ARGS); +extern Datum namegetext(PG_FUNCTION_ARGS); +extern Datum namegttext(PG_FUNCTION_ARGS); +extern Datum namenetext(PG_FUNCTION_ARGS); +extern Datum btnametextcmp(PG_FUNCTION_ARGS); +extern Datum texteqname(PG_FUNCTION_ARGS); +extern Datum textltname(PG_FUNCTION_ARGS); +extern Datum textlename(PG_FUNCTION_ARGS); +extern Datum textgename(PG_FUNCTION_ARGS); +extern Datum textgtname(PG_FUNCTION_ARGS); +extern Datum textnename(PG_FUNCTION_ARGS); +extern Datum bttextnamecmp(PG_FUNCTION_ARGS); +extern Datum nameconcatoid(PG_FUNCTION_ARGS); +extern Datum table_am_handler_in(PG_FUNCTION_ARGS); +extern Datum table_am_handler_out(PG_FUNCTION_ARGS); extern Datum timeofday(PG_FUNCTION_ARGS); -extern Datum abstime_finite(PG_FUNCTION_ARGS); +extern Datum pg_nextoid(PG_FUNCTION_ARGS); extern Datum float8_combine(PG_FUNCTION_ARGS); extern Datum inter_sl(PG_FUNCTION_ARGS); extern Datum inter_lb(PG_FUNCTION_ARGS); @@ -273,6 +256,7 @@ extern Datum ftod(PG_FUNCTION_ARGS); extern Datum dtof(PG_FUNCTION_ARGS); extern Datum i2toi4(PG_FUNCTION_ARGS); extern Datum i4toi2(PG_FUNCTION_ARGS); +extern Datum pg_jit_available(PG_FUNCTION_ARGS); extern Datum i4tod(PG_FUNCTION_ARGS); extern Datum dtoi4(PG_FUNCTION_ARGS); extern Datum i4tof(PG_FUNCTION_ARGS); @@ -292,6 +276,8 @@ extern Datum gisthandler(PG_FUNCTION_ARGS); extern Datum ginhandler(PG_FUNCTION_ARGS); extern Datum spghandler(PG_FUNCTION_ARGS); extern Datum brinhandler(PG_FUNCTION_ARGS); +extern Datum scalarlesel(PG_FUNCTION_ARGS); +extern Datum scalargesel(PG_FUNCTION_ARGS); extern Datum amvalidate(PG_FUNCTION_ARGS); extern Datum poly_same(PG_FUNCTION_ARGS); extern Datum poly_contain(PG_FUNCTION_ARGS); @@ -308,7 +294,7 @@ extern Datum btint4cmp(PG_FUNCTION_ARGS); extern Datum btfloat4cmp(PG_FUNCTION_ARGS); extern Datum btfloat8cmp(PG_FUNCTION_ARGS); extern Datum btoidcmp(PG_FUNCTION_ARGS); -extern Datum btabstimecmp(PG_FUNCTION_ARGS); +extern Datum dist_bp(PG_FUNCTION_ARGS); extern Datum btcharcmp(PG_FUNCTION_ARGS); extern Datum btnamecmp(PG_FUNCTION_ARGS); extern Datum bttextcmp(PG_FUNCTION_ARGS); @@ -329,11 +315,12 @@ extern Datum text_to_array_null(PG_FUNCTION_ARGS); extern Datum cash_cmp(PG_FUNCTION_ARGS); extern Datum array_append(PG_FUNCTION_ARGS); extern Datum array_prepend(PG_FUNCTION_ARGS); -extern Datum btreltimecmp(PG_FUNCTION_ARGS); -extern Datum bttintervalcmp(PG_FUNCTION_ARGS); +extern Datum dist_sp(PG_FUNCTION_ARGS); +extern Datum dist_bs(PG_FUNCTION_ARGS); extern Datum btarraycmp(PG_FUNCTION_ARGS); extern Datum array_cat(PG_FUNCTION_ARGS); extern Datum array_to_text_null(PG_FUNCTION_ARGS); +extern Datum scalarlejoinsel(PG_FUNCTION_ARGS); extern Datum array_ne(PG_FUNCTION_ARGS); extern Datum array_lt(PG_FUNCTION_ARGS); extern Datum array_gt(PG_FUNCTION_ARGS); @@ -341,6 +328,7 @@ extern Datum array_le(PG_FUNCTION_ARGS); extern Datum text_to_array(PG_FUNCTION_ARGS); extern Datum array_to_text(PG_FUNCTION_ARGS); extern Datum array_ge(PG_FUNCTION_ARGS); +extern Datum scalargejoinsel(PG_FUNCTION_ARGS); extern Datum hashmacaddr(PG_FUNCTION_ARGS); extern Datum hashtext(PG_FUNCTION_ARGS); extern Datum rtrim1(PG_FUNCTION_ARGS); @@ -349,12 +337,22 @@ extern Datum name_text(PG_FUNCTION_ARGS); extern Datum text_name(PG_FUNCTION_ARGS); extern Datum name_bpchar(PG_FUNCTION_ARGS); extern Datum bpchar_name(PG_FUNCTION_ARGS); +extern Datum dist_pathp(PG_FUNCTION_ARGS); extern Datum hashinet(PG_FUNCTION_ARGS); +extern Datum hashint4extended(PG_FUNCTION_ARGS); extern Datum hash_numeric(PG_FUNCTION_ARGS); extern Datum macaddr_in(PG_FUNCTION_ARGS); extern Datum macaddr_out(PG_FUNCTION_ARGS); extern Datum pg_num_nulls(PG_FUNCTION_ARGS); extern Datum pg_num_nonnulls(PG_FUNCTION_ARGS); +extern Datum hashint2extended(PG_FUNCTION_ARGS); +extern Datum hashint8extended(PG_FUNCTION_ARGS); +extern Datum hashfloat4extended(PG_FUNCTION_ARGS); +extern Datum hashfloat8extended(PG_FUNCTION_ARGS); +extern Datum hashoidextended(PG_FUNCTION_ARGS); +extern Datum hashcharextended(PG_FUNCTION_ARGS); +extern Datum hashnameextended(PG_FUNCTION_ARGS); +extern Datum hashtextextended(PG_FUNCTION_ARGS); extern Datum hashint2(PG_FUNCTION_ARGS); extern Datum hashint4(PG_FUNCTION_ARGS); extern Datum hashfloat4(PG_FUNCTION_ARGS); @@ -409,7 +407,7 @@ extern Datum namege(PG_FUNCTION_ARGS); extern Datum namene(PG_FUNCTION_ARGS); extern Datum bpchar(PG_FUNCTION_ARGS); extern Datum varchar(PG_FUNCTION_ARGS); -extern Datum mktinterval(PG_FUNCTION_ARGS); +extern Datum pg_indexam_progress_phasename(PG_FUNCTION_ARGS); extern Datum oidvectorlt(PG_FUNCTION_ARGS); extern Datum oidvectorle(PG_FUNCTION_ARGS); extern Datum oidvectoreq(PG_FUNCTION_ARGS); @@ -420,6 +418,9 @@ extern Datum network_netmask(PG_FUNCTION_ARGS); extern Datum network_masklen(PG_FUNCTION_ARGS); extern Datum network_broadcast(PG_FUNCTION_ARGS); extern Datum network_host(PG_FUNCTION_ARGS); +extern Datum dist_lp(PG_FUNCTION_ARGS); +extern Datum dist_bl(PG_FUNCTION_ARGS); +extern Datum dist_ls(PG_FUNCTION_ARGS); extern Datum current_user(PG_FUNCTION_ARGS); extern Datum network_family(PG_FUNCTION_ARGS); extern Datum int82(PG_FUNCTION_ARGS); @@ -451,10 +452,6 @@ extern Datum array_out(PG_FUNCTION_ARGS); extern Datum byteaoverlay_no_len(PG_FUNCTION_ARGS); extern Datum macaddr_trunc(PG_FUNCTION_ARGS); extern Datum int28(PG_FUNCTION_ARGS); -extern Datum smgrin(PG_FUNCTION_ARGS); -extern Datum smgrout(PG_FUNCTION_ARGS); -extern Datum smgreq(PG_FUNCTION_ARGS); -extern Datum smgrne(PG_FUNCTION_ARGS); extern Datum be_lo_import(PG_FUNCTION_ARGS); extern Datum be_lo_export(PG_FUNCTION_ARGS); extern Datum int4inc(PG_FUNCTION_ARGS); @@ -463,12 +460,15 @@ extern Datum int4larger(PG_FUNCTION_ARGS); extern Datum int4smaller(PG_FUNCTION_ARGS); extern Datum int2larger(PG_FUNCTION_ARGS); extern Datum int2smaller(PG_FUNCTION_ARGS); -extern Datum tintervaleq(PG_FUNCTION_ARGS); -extern Datum tintervalne(PG_FUNCTION_ARGS); -extern Datum tintervallt(PG_FUNCTION_ARGS); -extern Datum tintervalgt(PG_FUNCTION_ARGS); -extern Datum tintervalle(PG_FUNCTION_ARGS); -extern Datum tintervalge(PG_FUNCTION_ARGS); +extern Datum hashvarlenaextended(PG_FUNCTION_ARGS); +extern Datum hashoidvectorextended(PG_FUNCTION_ARGS); +extern Datum hash_aclitem_extended(PG_FUNCTION_ARGS); +extern Datum hashmacaddrextended(PG_FUNCTION_ARGS); +extern Datum hashinetextended(PG_FUNCTION_ARGS); +extern Datum hash_numeric_extended(PG_FUNCTION_ARGS); +extern Datum hashmacaddr8extended(PG_FUNCTION_ARGS); +extern Datum hash_array_extended(PG_FUNCTION_ARGS); +extern Datum dist_polyc(PG_FUNCTION_ARGS); extern Datum pg_client_encoding(PG_FUNCTION_ARGS); extern Datum current_query(PG_FUNCTION_ARGS); extern Datum macaddr_eq(PG_FUNCTION_ARGS); @@ -570,6 +570,7 @@ extern Datum close_pl(PG_FUNCTION_ARGS); extern Datum close_sl(PG_FUNCTION_ARGS); extern Datum close_lb(PG_FUNCTION_ARGS); extern Datum be_lo_unlink(PG_FUNCTION_ARGS); +extern Datum hashbpcharextended(PG_FUNCTION_ARGS); extern Datum path_inter(PG_FUNCTION_ARGS); extern Datum box_area(PG_FUNCTION_ARGS); extern Datum box_width(PG_FUNCTION_ARGS); @@ -597,6 +598,9 @@ extern Datum lseg_vertical(PG_FUNCTION_ARGS); extern Datum lseg_horizontal(PG_FUNCTION_ARGS); extern Datum lseg_eq(PG_FUNCTION_ARGS); extern Datum be_lo_truncate(PG_FUNCTION_ARGS); +extern Datum textlike_support(PG_FUNCTION_ARGS); +extern Datum texticregexeq_support(PG_FUNCTION_ARGS); +extern Datum texticlike_support(PG_FUNCTION_ARGS); extern Datum timestamptz_izone(PG_FUNCTION_ARGS); extern Datum gist_point_compress(PG_FUNCTION_ARGS); extern Datum aclitemin(PG_FUNCTION_ARGS); @@ -677,13 +681,13 @@ extern Datum interval_pl(PG_FUNCTION_ARGS); extern Datum interval_mi(PG_FUNCTION_ARGS); extern Datum timestamptz_part(PG_FUNCTION_ARGS); extern Datum interval_part(PG_FUNCTION_ARGS); -extern Datum abstime_timestamptz(PG_FUNCTION_ARGS); +extern Datum network_subset_support(PG_FUNCTION_ARGS); extern Datum date_timestamptz(PG_FUNCTION_ARGS); extern Datum interval_justify_hours(PG_FUNCTION_ARGS); -extern Datum reltime_interval(PG_FUNCTION_ARGS); +extern Datum jsonb_path_exists_tz(PG_FUNCTION_ARGS); extern Datum timestamptz_date(PG_FUNCTION_ARGS); -extern Datum abstime_date(PG_FUNCTION_ARGS); -extern Datum timestamptz_abstime(PG_FUNCTION_ARGS); +extern Datum jsonb_path_query_tz(PG_FUNCTION_ARGS); +extern Datum jsonb_path_query_array_tz(PG_FUNCTION_ARGS); extern Datum xid_age(PG_FUNCTION_ARGS); extern Datum timestamp_mi(PG_FUNCTION_ARGS); extern Datum timestamptz_pl_interval(PG_FUNCTION_ARGS); @@ -691,7 +695,7 @@ extern Datum timestamptz_mi_interval(PG_FUNCTION_ARGS); extern Datum generate_subscripts(PG_FUNCTION_ARGS); extern Datum generate_subscripts_nodir(PG_FUNCTION_ARGS); extern Datum array_fill(PG_FUNCTION_ARGS); -extern Datum interval_reltime(PG_FUNCTION_ARGS); +extern Datum dlog10(PG_FUNCTION_ARGS); extern Datum timestamp_smaller(PG_FUNCTION_ARGS); extern Datum timestamp_larger(PG_FUNCTION_ARGS); extern Datum interval_smaller(PG_FUNCTION_ARGS); @@ -739,6 +743,7 @@ extern Datum int48mul(PG_FUNCTION_ARGS); extern Datum int48div(PG_FUNCTION_ARGS); extern Datum quote_ident(PG_FUNCTION_ARGS); extern Datum quote_literal(PG_FUNCTION_ARGS); +extern Datum timestamptz_trunc_zone(PG_FUNCTION_ARGS); extern Datum array_fill_with_lower_bounds(PG_FUNCTION_ARGS); extern Datum i8tooid(PG_FUNCTION_ARGS); extern Datum oidtoi8(PG_FUNCTION_ARGS); @@ -763,7 +768,6 @@ extern Datum interval_cmp(PG_FUNCTION_ARGS); extern Datum timestamp_time(PG_FUNCTION_ARGS); extern Datum bpcharlen(PG_FUNCTION_ARGS); extern Datum interval_div(PG_FUNCTION_ARGS); -extern Datum dlog10(PG_FUNCTION_ARGS); extern Datum oidvectortypes(PG_FUNCTION_ARGS); extern Datum timetz_in(PG_FUNCTION_ARGS); extern Datum timetz_out(PG_FUNCTION_ARGS); @@ -775,6 +779,7 @@ extern Datum timetz_ge(PG_FUNCTION_ARGS); extern Datum timetz_gt(PG_FUNCTION_ARGS); extern Datum timetz_cmp(PG_FUNCTION_ARGS); extern Datum network_hostmask(PG_FUNCTION_ARGS); +extern Datum textregexeq_support(PG_FUNCTION_ARGS); extern Datum makeaclitem(PG_FUNCTION_ARGS); extern Datum time_interval(PG_FUNCTION_ARGS); extern Datum pg_lock_status(PG_FUNCTION_ARGS); @@ -1138,6 +1143,8 @@ extern Datum time_scale(PG_FUNCTION_ARGS); extern Datum timetz_scale(PG_FUNCTION_ARGS); extern Datum pg_stat_get_tuples_hot_updated(PG_FUNCTION_ARGS); extern Datum numeric_div_trunc(PG_FUNCTION_ARGS); +extern Datum similar_to_escape_2(PG_FUNCTION_ARGS); +extern Datum similar_to_escape_1(PG_FUNCTION_ARGS); extern Datum bytealike(PG_FUNCTION_ARGS); extern Datum byteanlike(PG_FUNCTION_ARGS); extern Datum like_escape_bytea(PG_FUNCTION_ARGS); @@ -1150,13 +1157,13 @@ extern Datum timestamptz_time(PG_FUNCTION_ARGS); extern Datum timestamp_trunc(PG_FUNCTION_ARGS); extern Datum timestamp_part(PG_FUNCTION_ARGS); extern Datum pg_stat_get_activity(PG_FUNCTION_ARGS); -extern Datum abstime_timestamp(PG_FUNCTION_ARGS); +extern Datum jsonb_path_query_first_tz(PG_FUNCTION_ARGS); extern Datum date_timestamp(PG_FUNCTION_ARGS); extern Datum pg_backend_pid(PG_FUNCTION_ARGS); extern Datum timestamptz_timestamp(PG_FUNCTION_ARGS); extern Datum timestamp_timestamptz(PG_FUNCTION_ARGS); extern Datum timestamp_date(PG_FUNCTION_ARGS); -extern Datum timestamp_abstime(PG_FUNCTION_ARGS); +extern Datum jsonb_path_match_tz(PG_FUNCTION_ARGS); extern Datum timestamp_pl_interval(PG_FUNCTION_ARGS); extern Datum timestamp_mi_interval(PG_FUNCTION_ARGS); extern Datum pg_conf_load_time(PG_FUNCTION_ARGS); @@ -1242,6 +1249,8 @@ extern Datum regtypein(PG_FUNCTION_ARGS); extern Datum regtypeout(PG_FUNCTION_ARGS); extern Datum pg_stat_clear_snapshot(PG_FUNCTION_ARGS); extern Datum pg_get_function_identity_arguments(PG_FUNCTION_ARGS); +extern Datum hashtid(PG_FUNCTION_ARGS); +extern Datum hashtidextended(PG_FUNCTION_ARGS); extern Datum fmgr_internal_validator(PG_FUNCTION_ARGS); extern Datum fmgr_c_validator(PG_FUNCTION_ARGS); extern Datum fmgr_sql_validator(PG_FUNCTION_ARGS); @@ -1291,8 +1300,8 @@ extern Datum language_handler_in(PG_FUNCTION_ARGS); extern Datum language_handler_out(PG_FUNCTION_ARGS); extern Datum internal_in(PG_FUNCTION_ARGS); extern Datum internal_out(PG_FUNCTION_ARGS); -extern Datum opaque_in(PG_FUNCTION_ARGS); -extern Datum opaque_out(PG_FUNCTION_ARGS); +extern Datum pg_stat_get_slru(PG_FUNCTION_ARGS); +extern Datum pg_stat_reset_slru(PG_FUNCTION_ARGS); extern Datum dceil(PG_FUNCTION_ARGS); extern Datum dfloor(PG_FUNCTION_ARGS); extern Datum dsign(PG_FUNCTION_ARGS); @@ -1407,12 +1416,12 @@ extern Datum varbit_recv(PG_FUNCTION_ARGS); extern Datum varbit_send(PG_FUNCTION_ARGS); extern Datum numeric_recv(PG_FUNCTION_ARGS); extern Datum numeric_send(PG_FUNCTION_ARGS); -extern Datum abstimerecv(PG_FUNCTION_ARGS); -extern Datum abstimesend(PG_FUNCTION_ARGS); -extern Datum reltimerecv(PG_FUNCTION_ARGS); -extern Datum reltimesend(PG_FUNCTION_ARGS); -extern Datum tintervalrecv(PG_FUNCTION_ARGS); -extern Datum tintervalsend(PG_FUNCTION_ARGS); +extern Datum dsinh(PG_FUNCTION_ARGS); +extern Datum dcosh(PG_FUNCTION_ARGS); +extern Datum dtanh(PG_FUNCTION_ARGS); +extern Datum dasinh(PG_FUNCTION_ARGS); +extern Datum dacosh(PG_FUNCTION_ARGS); +extern Datum datanh(PG_FUNCTION_ARGS); extern Datum date_recv(PG_FUNCTION_ARGS); extern Datum date_send(PG_FUNCTION_ARGS); extern Datum time_recv(PG_FUNCTION_ARGS); @@ -1491,8 +1500,7 @@ extern Datum poly_overbelow(PG_FUNCTION_ARGS); extern Datum poly_overabove(PG_FUNCTION_ARGS); extern Datum poly_above(PG_FUNCTION_ARGS); extern Datum gist_box_consistent(PG_FUNCTION_ARGS); -extern Datum gist_box_compress(PG_FUNCTION_ARGS); -extern Datum gist_box_decompress(PG_FUNCTION_ARGS); +extern Datum jsonb_float8(PG_FUNCTION_ARGS); extern Datum gist_box_penalty(PG_FUNCTION_ARGS); extern Datum gist_box_picksplit(PG_FUNCTION_ARGS); extern Datum gist_box_union(PG_FUNCTION_ARGS); @@ -1509,7 +1517,7 @@ extern Datum domain_recv(PG_FUNCTION_ARGS); extern Datum pg_timezone_abbrevs(PG_FUNCTION_ARGS); extern Datum xmlexists(PG_FUNCTION_ARGS); extern Datum pg_reload_conf(PG_FUNCTION_ARGS); -extern Datum pg_rotate_logfile(PG_FUNCTION_ARGS); +extern Datum pg_rotate_logfile_v2(PG_FUNCTION_ARGS); extern Datum pg_stat_file_1arg(PG_FUNCTION_ARGS); extern Datum pg_read_file_off_len(PG_FUNCTION_ARGS); extern Datum pg_ls_dir_1arg(PG_FUNCTION_ARGS); @@ -1670,16 +1678,16 @@ extern Datum schema_to_xml_and_xmlschema(PG_FUNCTION_ARGS); extern Datum database_to_xml(PG_FUNCTION_ARGS); extern Datum database_to_xmlschema(PG_FUNCTION_ARGS); extern Datum database_to_xml_and_xmlschema(PG_FUNCTION_ARGS); -extern Datum txid_snapshot_in(PG_FUNCTION_ARGS); -extern Datum txid_snapshot_out(PG_FUNCTION_ARGS); -extern Datum txid_snapshot_recv(PG_FUNCTION_ARGS); -extern Datum txid_snapshot_send(PG_FUNCTION_ARGS); -extern Datum txid_current(PG_FUNCTION_ARGS); -extern Datum txid_current_snapshot(PG_FUNCTION_ARGS); -extern Datum txid_snapshot_xmin(PG_FUNCTION_ARGS); -extern Datum txid_snapshot_xmax(PG_FUNCTION_ARGS); -extern Datum txid_snapshot_xip(PG_FUNCTION_ARGS); -extern Datum txid_visible_in_snapshot(PG_FUNCTION_ARGS); +extern Datum pg_snapshot_in(PG_FUNCTION_ARGS); +extern Datum pg_snapshot_out(PG_FUNCTION_ARGS); +extern Datum pg_snapshot_recv(PG_FUNCTION_ARGS); +extern Datum pg_snapshot_send(PG_FUNCTION_ARGS); +extern Datum pg_current_xact_id(PG_FUNCTION_ARGS); +extern Datum pg_current_snapshot(PG_FUNCTION_ARGS); +extern Datum pg_snapshot_xmin(PG_FUNCTION_ARGS); +extern Datum pg_snapshot_xmax(PG_FUNCTION_ARGS); +extern Datum pg_snapshot_xip(PG_FUNCTION_ARGS); +extern Datum pg_visible_in_snapshot(PG_FUNCTION_ARGS); extern Datum uuid_in(PG_FUNCTION_ARGS); extern Datum uuid_out(PG_FUNCTION_ARGS); extern Datum uuid_lt(PG_FUNCTION_ARGS); @@ -1798,7 +1806,7 @@ extern Datum pg_advisory_xact_lock_int4(PG_FUNCTION_ARGS); extern Datum pg_advisory_xact_lock_shared_int4(PG_FUNCTION_ARGS); extern Datum pg_try_advisory_xact_lock_int4(PG_FUNCTION_ARGS); extern Datum pg_try_advisory_xact_lock_shared_int4(PG_FUNCTION_ARGS); -extern Datum varchar_transform(PG_FUNCTION_ARGS); +extern Datum varchar_support(PG_FUNCTION_ARGS); extern Datum pg_create_restore_point(PG_FUNCTION_ARGS); extern Datum pg_stat_get_wal_senders(PG_FUNCTION_ARGS); extern Datum window_row_number(PG_FUNCTION_ARGS); @@ -1845,8 +1853,8 @@ extern Datum array_to_json(PG_FUNCTION_ARGS); extern Datum array_to_json_pretty(PG_FUNCTION_ARGS); extern Datum row_to_json(PG_FUNCTION_ARGS); extern Datum row_to_json_pretty(PG_FUNCTION_ARGS); -extern Datum numeric_transform(PG_FUNCTION_ARGS); -extern Datum varbit_transform(PG_FUNCTION_ARGS); +extern Datum numeric_support(PG_FUNCTION_ARGS); +extern Datum varbit_support(PG_FUNCTION_ARGS); extern Datum pg_get_viewdef_wrap(PG_FUNCTION_ARGS); extern Datum pg_stat_get_checkpoint_write_time(PG_FUNCTION_ARGS); extern Datum pg_stat_get_checkpoint_sync_time(PG_FUNCTION_ARGS); @@ -1927,13 +1935,13 @@ extern Datum array_position(PG_FUNCTION_ARGS); extern Datum array_position_start(PG_FUNCTION_ARGS); extern Datum array_positions(PG_FUNCTION_ARGS); extern Datum gist_circle_distance(PG_FUNCTION_ARGS); -extern Datum gist_box_fetch(PG_FUNCTION_ARGS); +extern Datum numeric_scale(PG_FUNCTION_ARGS); extern Datum gist_point_fetch(PG_FUNCTION_ARGS); extern Datum numeric_sortsupport(PG_FUNCTION_ARGS); extern Datum gist_poly_distance(PG_FUNCTION_ARGS); extern Datum dist_cpoint(PG_FUNCTION_ARGS); extern Datum dist_polyp(PG_FUNCTION_ARGS); -extern Datum pg_read_file(PG_FUNCTION_ARGS); +extern Datum pg_read_file_v2(PG_FUNCTION_ARGS); extern Datum show_config_by_name_missing_ok(PG_FUNCTION_ARGS); extern Datum pg_read_binary_file(PG_FUNCTION_ARGS); extern Datum pg_notification_queue_usage(PG_FUNCTION_ARGS); @@ -1982,7 +1990,7 @@ extern Datum float8_regr_combine(PG_FUNCTION_ARGS); extern Datum jsonb_delete_array(PG_FUNCTION_ARGS); extern Datum cash_mul_int8(PG_FUNCTION_ARGS); extern Datum cash_div_int8(PG_FUNCTION_ARGS); -extern Datum txid_current_if_assigned(PG_FUNCTION_ARGS); +extern Datum pg_current_xact_id_if_assigned(PG_FUNCTION_ARGS); extern Datum pg_get_partkeydef(PG_FUNCTION_ARGS); extern Datum pg_ls_logdir(PG_FUNCTION_ARGS); extern Datum pg_ls_waldir(PG_FUNCTION_ARGS); @@ -1991,7 +1999,7 @@ extern Datum pg_ndistinct_out(PG_FUNCTION_ARGS); extern Datum pg_ndistinct_recv(PG_FUNCTION_ARGS); extern Datum pg_ndistinct_send(PG_FUNCTION_ARGS); extern Datum macaddr_sortsupport(PG_FUNCTION_ARGS); -extern Datum txid_status(PG_FUNCTION_ARGS); +extern Datum pg_xact_status(PG_FUNCTION_ARGS); extern Datum pg_safe_snapshot_blocking_pids(PG_FUNCTION_ARGS); extern Datum pg_isolation_test_session_is_blocked(PG_FUNCTION_ARGS); extern Datum pg_identify_object_as_address(PG_FUNCTION_ARGS); @@ -2017,7 +2025,31 @@ extern Datum pg_dependencies_out(PG_FUNCTION_ARGS); extern Datum pg_dependencies_recv(PG_FUNCTION_ARGS); extern Datum pg_dependencies_send(PG_FUNCTION_ARGS); extern Datum pg_get_partition_constraintdef(PG_FUNCTION_ARGS); +extern Datum time_hash_extended(PG_FUNCTION_ARGS); +extern Datum timetz_hash_extended(PG_FUNCTION_ARGS); +extern Datum timestamp_hash_extended(PG_FUNCTION_ARGS); +extern Datum uuid_hash_extended(PG_FUNCTION_ARGS); +extern Datum pg_lsn_hash_extended(PG_FUNCTION_ARGS); +extern Datum hashenumextended(PG_FUNCTION_ARGS); extern Datum pg_get_statisticsobjdef(PG_FUNCTION_ARGS); +extern Datum jsonb_hash_extended(PG_FUNCTION_ARGS); +extern Datum hash_range_extended(PG_FUNCTION_ARGS); +extern Datum interval_hash_extended(PG_FUNCTION_ARGS); +extern Datum sha224_bytea(PG_FUNCTION_ARGS); +extern Datum sha256_bytea(PG_FUNCTION_ARGS); +extern Datum sha384_bytea(PG_FUNCTION_ARGS); +extern Datum sha512_bytea(PG_FUNCTION_ARGS); +extern Datum pg_partition_tree(PG_FUNCTION_ARGS); +extern Datum pg_partition_root(PG_FUNCTION_ARGS); +extern Datum pg_partition_ancestors(PG_FUNCTION_ARGS); +extern Datum pg_stat_get_db_checksum_failures(PG_FUNCTION_ARGS); +extern Datum pg_stats_ext_mcvlist_items(PG_FUNCTION_ARGS); +extern Datum pg_stat_get_db_checksum_last_failure(PG_FUNCTION_ARGS); +extern Datum gen_random_uuid(PG_FUNCTION_ARGS); +extern Datum gtsvector_options(PG_FUNCTION_ARGS); +extern Datum pg_promote(PG_FUNCTION_ARGS); +extern Datum prefixsel(PG_FUNCTION_ARGS); +extern Datum prefixjoinsel(PG_FUNCTION_ARGS); extern Datum pg_control_system(PG_FUNCTION_ARGS); extern Datum pg_control_checkpoint(PG_FUNCTION_ARGS); extern Datum pg_control_recovery(PG_FUNCTION_ARGS); @@ -2026,6 +2058,11 @@ extern Datum pg_import_system_collations(PG_FUNCTION_ARGS); extern Datum macaddr8_recv(PG_FUNCTION_ARGS); extern Datum macaddr8_send(PG_FUNCTION_ARGS); extern Datum pg_collation_actual_version(PG_FUNCTION_ARGS); +extern Datum jsonb_numeric(PG_FUNCTION_ARGS); +extern Datum jsonb_int2(PG_FUNCTION_ARGS); +extern Datum jsonb_int4(PG_FUNCTION_ARGS); +extern Datum jsonb_int8(PG_FUNCTION_ARGS); +extern Datum jsonb_float4(PG_FUNCTION_ARGS); extern Datum pg_filenode_relation(PG_FUNCTION_ARGS); extern Datum be_lo_from_bytea(PG_FUNCTION_ARGS); extern Datum be_lo_get(PG_FUNCTION_ARGS); @@ -2099,7 +2136,7 @@ extern Datum network_overlap(PG_FUNCTION_ARGS); extern Datum inet_gist_consistent(PG_FUNCTION_ARGS); extern Datum inet_gist_union(PG_FUNCTION_ARGS); extern Datum inet_gist_compress(PG_FUNCTION_ARGS); -extern Datum inet_gist_decompress(PG_FUNCTION_ARGS); +extern Datum jsonb_bool(PG_FUNCTION_ARGS); extern Datum inet_gist_penalty(PG_FUNCTION_ARGS); extern Datum inet_gist_picksplit(PG_FUNCTION_ARGS); extern Datum inet_gist_same(PG_FUNCTION_ARGS); @@ -2185,7 +2222,7 @@ extern Datum ts_stat2(PG_FUNCTION_ARGS); extern Datum tsq_mcontains(PG_FUNCTION_ARGS); extern Datum tsq_mcontained(PG_FUNCTION_ARGS); extern Datum gtsquery_compress(PG_FUNCTION_ARGS); -extern Datum gtsquery_decompress(PG_FUNCTION_ARGS); +extern Datum text_starts_with(PG_FUNCTION_ARGS); extern Datum gtsquery_picksplit(PG_FUNCTION_ARGS); extern Datum gtsquery_union(PG_FUNCTION_ARGS); extern Datum gtsquery_same(PG_FUNCTION_ARGS); @@ -2340,8 +2377,7 @@ extern Datum range_ge(PG_FUNCTION_ARGS); extern Datum range_gt(PG_FUNCTION_ARGS); extern Datum range_gist_consistent(PG_FUNCTION_ARGS); extern Datum range_gist_union(PG_FUNCTION_ARGS); -extern Datum range_gist_compress(PG_FUNCTION_ARGS); -extern Datum range_gist_decompress(PG_FUNCTION_ARGS); +extern Datum pg_replication_slot_advance(PG_FUNCTION_ARGS); extern Datum range_gist_penalty(PG_FUNCTION_ARGS); extern Datum range_gist_picksplit(PG_FUNCTION_ARGS); extern Datum range_gist_same(PG_FUNCTION_ARGS); @@ -2349,8 +2385,8 @@ extern Datum hash_range(PG_FUNCTION_ARGS); extern Datum int4range_canonical(PG_FUNCTION_ARGS); extern Datum daterange_canonical(PG_FUNCTION_ARGS); extern Datum range_typanalyze(PG_FUNCTION_ARGS); -extern Datum timestamp_transform(PG_FUNCTION_ARGS); -extern Datum interval_transform(PG_FUNCTION_ARGS); +extern Datum timestamp_support(PG_FUNCTION_ARGS); +extern Datum interval_support(PG_FUNCTION_ARGS); extern Datum ginarraytriconsistent(PG_FUNCTION_ARGS); extern Datum gin_tsquery_triconsistent(PG_FUNCTION_ARGS); extern Datum int4range_subdiff(PG_FUNCTION_ARGS); @@ -2365,7 +2401,7 @@ extern Datum jsonb_each_text(PG_FUNCTION_ARGS); extern Datum mxid_age(PG_FUNCTION_ARGS); extern Datum jsonb_extract_path_text(PG_FUNCTION_ARGS); extern Datum acldefault_sql(PG_FUNCTION_ARGS); -extern Datum time_transform(PG_FUNCTION_ARGS); +extern Datum time_support(PG_FUNCTION_ARGS); extern Datum json_object_field(PG_FUNCTION_ARGS); extern Datum json_object_field_text(PG_FUNCTION_ARGS); extern Datum json_array_element(PG_FUNCTION_ARGS); @@ -2396,10 +2432,22 @@ extern Datum hypothetical_rank_final(PG_FUNCTION_ARGS); extern Datum hypothetical_percent_rank_final(PG_FUNCTION_ARGS); extern Datum hypothetical_cume_dist_final(PG_FUNCTION_ARGS); extern Datum hypothetical_dense_rank_final(PG_FUNCTION_ARGS); -extern Datum timestamp_izone_transform(PG_FUNCTION_ARGS); -extern Datum timestamp_zone_transform(PG_FUNCTION_ARGS); -extern Datum range_gist_fetch(PG_FUNCTION_ARGS); +extern Datum generate_series_int4_support(PG_FUNCTION_ARGS); +extern Datum generate_series_int8_support(PG_FUNCTION_ARGS); +extern Datum array_unnest_support(PG_FUNCTION_ARGS); +extern Datum gist_box_distance(PG_FUNCTION_ARGS); extern Datum brin_summarize_range(PG_FUNCTION_ARGS); +extern Datum jsonpath_in(PG_FUNCTION_ARGS); +extern Datum jsonpath_recv(PG_FUNCTION_ARGS); +extern Datum jsonpath_out(PG_FUNCTION_ARGS); +extern Datum jsonpath_send(PG_FUNCTION_ARGS); +extern Datum jsonb_path_exists(PG_FUNCTION_ARGS); +extern Datum jsonb_path_query(PG_FUNCTION_ARGS); +extern Datum jsonb_path_query_array(PG_FUNCTION_ARGS); +extern Datum jsonb_path_query_first(PG_FUNCTION_ARGS); +extern Datum jsonb_path_match(PG_FUNCTION_ARGS); +extern Datum jsonb_path_exists_opr(PG_FUNCTION_ARGS); +extern Datum jsonb_path_match_opr(PG_FUNCTION_ARGS); extern Datum brin_desummarize_range(PG_FUNCTION_ARGS); extern Datum spg_quad_config(PG_FUNCTION_ARGS); extern Datum spg_quad_choose(PG_FUNCTION_ARGS); @@ -2447,6 +2495,9 @@ extern Datum to_regrole(PG_FUNCTION_ARGS); extern Datum regrolerecv(PG_FUNCTION_ARGS); extern Datum regrolesend(PG_FUNCTION_ARGS); extern Datum regrolein(PG_FUNCTION_ARGS); +extern Datum pg_rotate_logfile(PG_FUNCTION_ARGS); +extern Datum pg_read_file(PG_FUNCTION_ARGS); +extern Datum binary_upgrade_set_missing_value(PG_FUNCTION_ARGS); extern Datum brin_inclusion_opcinfo(PG_FUNCTION_ARGS); extern Datum brin_inclusion_add_value(PG_FUNCTION_ARGS); extern Datum brin_inclusion_consistent(PG_FUNCTION_ARGS); @@ -2467,6 +2518,29 @@ extern Datum macaddr8_or(PG_FUNCTION_ARGS); extern Datum macaddrtomacaddr8(PG_FUNCTION_ARGS); extern Datum macaddr8tomacaddr(PG_FUNCTION_ARGS); extern Datum macaddr8_set7bit(PG_FUNCTION_ARGS); +extern Datum in_range_int8_int8(PG_FUNCTION_ARGS); +extern Datum in_range_int4_int8(PG_FUNCTION_ARGS); +extern Datum in_range_int4_int4(PG_FUNCTION_ARGS); +extern Datum in_range_int4_int2(PG_FUNCTION_ARGS); +extern Datum in_range_int2_int8(PG_FUNCTION_ARGS); +extern Datum in_range_int2_int4(PG_FUNCTION_ARGS); +extern Datum in_range_int2_int2(PG_FUNCTION_ARGS); +extern Datum in_range_date_interval(PG_FUNCTION_ARGS); +extern Datum in_range_timestamp_interval(PG_FUNCTION_ARGS); +extern Datum in_range_timestamptz_interval(PG_FUNCTION_ARGS); +extern Datum in_range_interval_interval(PG_FUNCTION_ARGS); +extern Datum in_range_time_interval(PG_FUNCTION_ARGS); +extern Datum in_range_timetz_interval(PG_FUNCTION_ARGS); +extern Datum in_range_float8_float8(PG_FUNCTION_ARGS); +extern Datum in_range_float4_float8(PG_FUNCTION_ARGS); +extern Datum in_range_numeric_numeric(PG_FUNCTION_ARGS); +extern Datum pg_lsn_larger(PG_FUNCTION_ARGS); +extern Datum pg_lsn_smaller(PG_FUNCTION_ARGS); +extern Datum regcollationin(PG_FUNCTION_ARGS); +extern Datum regcollationout(PG_FUNCTION_ARGS); +extern Datum to_regcollation(PG_FUNCTION_ARGS); +extern Datum regcollationrecv(PG_FUNCTION_ARGS); +extern Datum regcollationsend(PG_FUNCTION_ARGS); extern Datum ts_headline_jsonb_byid_opt(PG_FUNCTION_ARGS); extern Datum ts_headline_jsonb_byid(PG_FUNCTION_ARGS); extern Datum ts_headline_jsonb_opt(PG_FUNCTION_ARGS); @@ -2475,10 +2549,21 @@ extern Datum ts_headline_json_byid_opt(PG_FUNCTION_ARGS); extern Datum ts_headline_json_byid(PG_FUNCTION_ARGS); extern Datum ts_headline_json_opt(PG_FUNCTION_ARGS); extern Datum ts_headline_json(PG_FUNCTION_ARGS); +extern Datum jsonb_string_to_tsvector(PG_FUNCTION_ARGS); +extern Datum json_string_to_tsvector(PG_FUNCTION_ARGS); +extern Datum jsonb_string_to_tsvector_byid(PG_FUNCTION_ARGS); +extern Datum json_string_to_tsvector_byid(PG_FUNCTION_ARGS); extern Datum jsonb_to_tsvector(PG_FUNCTION_ARGS); -extern Datum json_to_tsvector(PG_FUNCTION_ARGS); extern Datum jsonb_to_tsvector_byid(PG_FUNCTION_ARGS); +extern Datum json_to_tsvector(PG_FUNCTION_ARGS); extern Datum json_to_tsvector_byid(PG_FUNCTION_ARGS); +extern Datum pg_copy_physical_replication_slot_a(PG_FUNCTION_ARGS); +extern Datum pg_copy_physical_replication_slot_b(PG_FUNCTION_ARGS); +extern Datum pg_copy_logical_replication_slot_a(PG_FUNCTION_ARGS); +extern Datum pg_copy_logical_replication_slot_b(PG_FUNCTION_ARGS); +extern Datum pg_copy_logical_replication_slot_c(PG_FUNCTION_ARGS); +extern Datum unicode_normalize_func(PG_FUNCTION_ARGS); +extern Datum unicode_is_normalized(PG_FUNCTION_ARGS); extern Datum pg_event_trigger_table_rewrite_oid(PG_FUNCTION_ARGS); extern Datum pg_event_trigger_table_rewrite_reason(PG_FUNCTION_ARGS); extern Datum pg_event_trigger_ddl_commands(PG_FUNCTION_ARGS); @@ -2486,11 +2571,61 @@ extern Datum phraseto_tsquery(PG_FUNCTION_ARGS); extern Datum tsquery_phrase(PG_FUNCTION_ARGS); extern Datum tsquery_phrase_distance(PG_FUNCTION_ARGS); extern Datum phraseto_tsquery_byid(PG_FUNCTION_ARGS); +extern Datum websearch_to_tsquery_byid(PG_FUNCTION_ARGS); +extern Datum websearch_to_tsquery(PG_FUNCTION_ARGS); +extern Datum spg_bbox_quad_config(PG_FUNCTION_ARGS); +extern Datum spg_poly_quad_compress(PG_FUNCTION_ARGS); extern Datum spg_box_quad_config(PG_FUNCTION_ARGS); extern Datum spg_box_quad_choose(PG_FUNCTION_ARGS); extern Datum spg_box_quad_picksplit(PG_FUNCTION_ARGS); extern Datum spg_box_quad_inner_consistent(PG_FUNCTION_ARGS); extern Datum spg_box_quad_leaf_consistent(PG_FUNCTION_ARGS); +extern Datum pg_mcv_list_in(PG_FUNCTION_ARGS); +extern Datum pg_mcv_list_out(PG_FUNCTION_ARGS); +extern Datum pg_mcv_list_recv(PG_FUNCTION_ARGS); +extern Datum pg_mcv_list_send(PG_FUNCTION_ARGS); +extern Datum satisfies_hash_partition(PG_FUNCTION_ARGS); +extern Datum pg_ls_tmpdir_noargs(PG_FUNCTION_ARGS); +extern Datum pg_ls_tmpdir_1arg(PG_FUNCTION_ARGS); +extern Datum pg_ls_archive_statusdir(PG_FUNCTION_ARGS); +extern Datum network_sortsupport(PG_FUNCTION_ARGS); +extern Datum xid8lt(PG_FUNCTION_ARGS); +extern Datum xid8gt(PG_FUNCTION_ARGS); +extern Datum xid8le(PG_FUNCTION_ARGS); +extern Datum xid8ge(PG_FUNCTION_ARGS); +extern Datum matchingsel(PG_FUNCTION_ARGS); +extern Datum matchingjoinsel(PG_FUNCTION_ARGS); +extern Datum numeric_min_scale(PG_FUNCTION_ARGS); +extern Datum numeric_trim_scale(PG_FUNCTION_ARGS); +extern Datum int4gcd(PG_FUNCTION_ARGS); +extern Datum int8gcd(PG_FUNCTION_ARGS); +extern Datum int4lcm(PG_FUNCTION_ARGS); +extern Datum int8lcm(PG_FUNCTION_ARGS); +extern Datum numeric_gcd(PG_FUNCTION_ARGS); +extern Datum numeric_lcm(PG_FUNCTION_ARGS); +extern Datum btvarstrequalimage(PG_FUNCTION_ARGS); +extern Datum btequalimage(PG_FUNCTION_ARGS); +extern Datum pg_get_shmem_allocations(PG_FUNCTION_ARGS); +extern Datum pg_stat_get_ins_since_vacuum(PG_FUNCTION_ARGS); +extern Datum jsonb_set_lax(PG_FUNCTION_ARGS); +extern Datum xid8in(PG_FUNCTION_ARGS); +extern Datum xid8toxid(PG_FUNCTION_ARGS); +extern Datum xid8out(PG_FUNCTION_ARGS); +extern Datum xid8recv(PG_FUNCTION_ARGS); +extern Datum xid8send(PG_FUNCTION_ARGS); +extern Datum xid8eq(PG_FUNCTION_ARGS); +extern Datum xid8ne(PG_FUNCTION_ARGS); +extern Datum anycompatible_in(PG_FUNCTION_ARGS); +extern Datum anycompatible_out(PG_FUNCTION_ARGS); +extern Datum anycompatiblearray_in(PG_FUNCTION_ARGS); +extern Datum anycompatiblearray_out(PG_FUNCTION_ARGS); +extern Datum anycompatiblearray_recv(PG_FUNCTION_ARGS); +extern Datum anycompatiblearray_send(PG_FUNCTION_ARGS); +extern Datum anycompatiblenonarray_in(PG_FUNCTION_ARGS); +extern Datum anycompatiblenonarray_out(PG_FUNCTION_ARGS); +extern Datum anycompatiblerange_in(PG_FUNCTION_ARGS); +extern Datum anycompatiblerange_out(PG_FUNCTION_ARGS); +extern Datum xid8cmp(PG_FUNCTION_ARGS); extern Datum pg_replication_origin_create(PG_FUNCTION_ARGS); extern Datum pg_replication_origin_drop(PG_FUNCTION_ARGS); extern Datum pg_replication_origin_oid(PG_FUNCTION_ARGS); @@ -2507,6 +2642,5 @@ extern Datum pg_stat_get_subscription(PG_FUNCTION_ARGS); extern Datum pg_get_publication_tables(PG_FUNCTION_ARGS); extern Datum pg_get_replica_identity_index(PG_FUNCTION_ARGS); extern Datum pg_relation_is_publishable(PG_FUNCTION_ARGS); -extern Datum numeric_scale(PG_FUNCTION_ARGS); -#endif /* FMGRPROTOS_H */ +#endif /* FMGRPROTOS_H */ diff --git a/parser/include/utils/fmgrtab.h b/parser/include/utils/fmgrtab.h new file mode 100644 index 00000000..8e822c41 --- /dev/null +++ b/parser/include/utils/fmgrtab.h @@ -0,0 +1,48 @@ +/*------------------------------------------------------------------------- + * + * fmgrtab.h + * The function manager's table of internal functions. + * + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group + * Portions Copyright (c) 1994, Regents of the University of California + * + * src/include/utils/fmgrtab.h + * + *------------------------------------------------------------------------- + */ +#ifndef FMGRTAB_H +#define FMGRTAB_H + +#include "access/transam.h" +#include "fmgr.h" + + +/* + * This table stores info about all the built-in functions (ie, functions + * that are compiled into the Postgres executable). + */ + +typedef struct +{ + Oid foid; /* OID of the function */ + short nargs; /* 0..FUNC_MAX_ARGS, or -1 if variable count */ + bool strict; /* T if function is "strict" */ + bool retset; /* T if function returns a set */ + const char *funcName; /* C name of the function */ + PGFunction func; /* pointer to compiled function */ +} FmgrBuiltin; + +extern const FmgrBuiltin fmgr_builtins[]; + +extern const int fmgr_nbuiltins; /* number of entries in table */ + +extern const Oid fmgr_last_builtin_oid; /* highest function OID in table */ + +/* + * Mapping from a builtin function's OID to its index in the fmgr_builtins + * array. This is indexed from 0 through fmgr_last_builtin_oid. + */ +#define InvalidOidBuiltinMapping PG_UINT16_MAX +extern const uint16 fmgr_builtin_oid_index[]; + +#endif /* FMGRTAB_H */ diff --git a/parser/include/utils/guc.h b/parser/include/utils/guc.h index ebcf3af0..22d23f4e 100644 --- a/parser/include/utils/guc.h +++ b/parser/include/utils/guc.h @@ -4,7 +4,7 @@ * External declarations pertaining to backend/utils/misc/guc.c and * backend/utils/misc/guc-file.l * - * Copyright (c) 2000-2017, PostgreSQL Global Development Group + * Copyright (c) 2000-2020, PostgreSQL Global Development Group * Written by Peter Eisentraut . * * src/include/utils/guc.h @@ -143,17 +143,17 @@ typedef struct ConfigVariable } ConfigVariable; extern bool ParseConfigFile(const char *config_file, bool strict, - const char *calling_file, int calling_lineno, - int depth, int elevel, - ConfigVariable **head_p, ConfigVariable **tail_p); + const char *calling_file, int calling_lineno, + int depth, int elevel, + ConfigVariable **head_p, ConfigVariable **tail_p); extern bool ParseConfigFp(FILE *fp, const char *config_file, - int depth, int elevel, - ConfigVariable **head_p, ConfigVariable **tail_p); + int depth, int elevel, + ConfigVariable **head_p, ConfigVariable **tail_p); extern bool ParseConfigDirectory(const char *includedir, - const char *calling_file, int calling_lineno, - int depth, int elevel, - ConfigVariable **head_p, - ConfigVariable **tail_p); + const char *calling_file, int calling_lineno, + int depth, int elevel, + ConfigVariable **head_p, + ConfigVariable **tail_p); extern void FreeConfigVariables(ConfigVariable *list); /* @@ -219,6 +219,7 @@ typedef enum #define GUC_UNIT_BLOCKS 0x2000 /* value is in blocks */ #define GUC_UNIT_XBLOCKS 0x3000 /* value is in xlog blocks */ #define GUC_UNIT_MB 0x4000 /* value is in megabytes */ +#define GUC_UNIT_BYTE 0x8000 /* value is in bytes */ #define GUC_UNIT_MEMORY 0xF000 /* mask for size-related units */ #define GUC_UNIT_MS 0x10000 /* value is in milliseconds */ @@ -226,11 +227,12 @@ typedef enum #define GUC_UNIT_MIN 0x30000 /* value is in minutes */ #define GUC_UNIT_TIME 0xF0000 /* mask for time-related units */ +#define GUC_EXPLAIN 0x100000 /* include in explain */ + #define GUC_UNIT (GUC_UNIT_MEMORY | GUC_UNIT_TIME) /* GUC vars that are actually declared in guc.c, rather than elsewhere */ -extern bool log_duration; extern bool Debug_print_plan; extern bool Debug_print_parse; extern bool Debug_print_rewritten; @@ -243,14 +245,21 @@ extern bool log_statement_stats; extern bool log_btree_build_stats; extern PGDLLIMPORT __thread bool check_function_bodies; -extern bool default_with_oids; -extern bool session_auth_is_superuser; +extern bool session_auth_is_superuser; +extern bool log_duration; +extern int log_parameter_max_length; +extern int log_parameter_max_length_on_error; extern int log_min_error_statement; extern PGDLLIMPORT __thread int log_min_messages; extern PGDLLIMPORT __thread int client_min_messages; +extern int log_min_duration_sample; extern int log_min_duration_statement; extern int log_temp_files; +extern double log_statement_sample_rate; +extern double log_xact_sample_rate; +extern __thread char *backtrace_functions; +extern __thread char *backtrace_symbol_list; extern int temp_file_limit; @@ -267,6 +276,7 @@ extern PGDLLIMPORT char *application_name; extern int tcp_keepalives_idle; extern int tcp_keepalives_interval; extern int tcp_keepalives_count; +extern int tcp_user_timeout; #ifdef TRACE_SORT extern bool trace_sort; @@ -276,77 +286,72 @@ extern bool trace_sort; * Functions exported by guc.c */ extern void SetConfigOption(const char *name, const char *value, - GucContext context, GucSource source); - -extern void DefineCustomBoolVariable( - const char *name, - const char *short_desc, - const char *long_desc, - bool *valueAddr, - bool bootValue, - GucContext context, - int flags, - GucBoolCheckHook check_hook, - GucBoolAssignHook assign_hook, - GucShowHook show_hook); - -extern void DefineCustomIntVariable( - const char *name, - const char *short_desc, - const char *long_desc, - int *valueAddr, - int bootValue, - int minValue, - int maxValue, - GucContext context, - int flags, - GucIntCheckHook check_hook, - GucIntAssignHook assign_hook, - GucShowHook show_hook); - -extern void DefineCustomRealVariable( - const char *name, - const char *short_desc, - const char *long_desc, - double *valueAddr, - double bootValue, - double minValue, - double maxValue, - GucContext context, - int flags, - GucRealCheckHook check_hook, - GucRealAssignHook assign_hook, - GucShowHook show_hook); - -extern void DefineCustomStringVariable( - const char *name, - const char *short_desc, - const char *long_desc, - char **valueAddr, - const char *bootValue, - GucContext context, - int flags, - GucStringCheckHook check_hook, - GucStringAssignHook assign_hook, - GucShowHook show_hook); - -extern void DefineCustomEnumVariable( - const char *name, - const char *short_desc, - const char *long_desc, - int *valueAddr, - int bootValue, - const struct config_enum_entry *options, - GucContext context, - int flags, - GucEnumCheckHook check_hook, - GucEnumAssignHook assign_hook, - GucShowHook show_hook); + GucContext context, GucSource source); + +extern void DefineCustomBoolVariable(const char *name, + const char *short_desc, + const char *long_desc, + bool *valueAddr, + bool bootValue, + GucContext context, + int flags, + GucBoolCheckHook check_hook, + GucBoolAssignHook assign_hook, + GucShowHook show_hook); + +extern void DefineCustomIntVariable(const char *name, + const char *short_desc, + const char *long_desc, + int *valueAddr, + int bootValue, + int minValue, + int maxValue, + GucContext context, + int flags, + GucIntCheckHook check_hook, + GucIntAssignHook assign_hook, + GucShowHook show_hook); + +extern void DefineCustomRealVariable(const char *name, + const char *short_desc, + const char *long_desc, + double *valueAddr, + double bootValue, + double minValue, + double maxValue, + GucContext context, + int flags, + GucRealCheckHook check_hook, + GucRealAssignHook assign_hook, + GucShowHook show_hook); + +extern void DefineCustomStringVariable(const char *name, + const char *short_desc, + const char *long_desc, + char **valueAddr, + const char *bootValue, + GucContext context, + int flags, + GucStringCheckHook check_hook, + GucStringAssignHook assign_hook, + GucShowHook show_hook); + +extern void DefineCustomEnumVariable(const char *name, + const char *short_desc, + const char *long_desc, + int *valueAddr, + int bootValue, + const struct config_enum_entry *options, + GucContext context, + int flags, + GucEnumCheckHook check_hook, + GucEnumAssignHook assign_hook, + GucShowHook show_hook); extern void EmitWarningsOnPlaceholders(const char *className); extern const char *GetConfigOption(const char *name, bool missing_ok, - bool restrict_privileged); + bool restrict_privileged); extern const char *GetConfigOptionResetString(const char *name); extern int GetConfigOptionFlags(const char *name, bool missing_ok); extern void ProcessConfigFile(GucContext context); @@ -359,15 +364,16 @@ extern void AtEOXact_GUC(bool isCommit, int nestLevel); extern void BeginReportingGUCOptions(void); extern void ParseLongOption(const char *string, char **name, char **value); extern bool parse_int(const char *value, int *result, int flags, - const char **hintmsg); -extern bool parse_real(const char *value, double *result); -extern int set_config_option(const char *name, const char *value, - GucContext context, GucSource source, - GucAction action, bool changeVal, int elevel, - bool is_reload); -extern void AlterSystemSetConfigFile(AlterSystemStmt *setstmt); + const char **hintmsg); +extern bool parse_real(const char *value, double *result, int flags, + const char **hintmsg); +extern int set_config_option(const char *name, const char *value, + GucContext context, GucSource source, + GucAction action, bool changeVal, int elevel, + bool is_reload); +extern void AlterSystemSetConfigFile(AlterSystemStmt *altersysstmt); extern char *GetConfigOptionByName(const char *name, const char **varname, - bool missing_ok); + bool missing_ok); extern void GetConfigOptionByNum(int varnum, const char **values, bool *noshow); extern int GetNumConfigOptions(void); @@ -379,7 +385,7 @@ extern void ExecSetVariableStmt(VariableSetStmt *stmt, bool isTopLevel); extern char *ExtractSetVariableArgs(VariableSetStmt *stmt); extern void ProcessGUCArray(ArrayType *array, - GucContext context, GucSource source, GucAction action); + GucContext context, GucSource source, GucAction action); extern ArrayType *GUCArrayAdd(ArrayType *array, const char *name, const char *value); extern ArrayType *GUCArrayDelete(ArrayType *array, const char *name); extern ArrayType *GUCArrayReset(ArrayType *array); diff --git a/parser/include/utils/guc_tables.h b/parser/include/utils/guc_tables.h index 042f7a01..454c2df4 100644 --- a/parser/include/utils/guc_tables.h +++ b/parser/include/utils/guc_tables.h @@ -5,7 +5,7 @@ * * See src/backend/utils/misc/README for design notes. * - * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * * src/include/utils/guc_tables.h * @@ -56,7 +56,8 @@ enum config_group FILE_LOCATIONS, CONN_AUTH, CONN_AUTH_SETTINGS, - CONN_AUTH_SECURITY, + CONN_AUTH_AUTH, + CONN_AUTH_SSL, RESOURCES, RESOURCES_MEM, RESOURCES_DISK, @@ -68,6 +69,8 @@ enum config_group WAL_SETTINGS, WAL_CHECKPOINTS, WAL_ARCHIVING, + WAL_ARCHIVE_RECOVERY, + WAL_RECOVERY_TARGET, REPLICATION, REPLICATION_SENDING, REPLICATION_MASTER, @@ -263,6 +266,7 @@ extern void build_guc_variables(void); /* search in enum options */ extern const char *config_enum_lookup_by_value(struct config_enum *record, int val); extern bool config_enum_lookup_by_name(struct config_enum *record, - const char *value, int *retval); + const char *value, int *retval); +extern struct config_generic **get_explain_guc_options(int *num); #endif /* GUC_TABLES_H */ diff --git a/parser/include/utils/hsearch.h b/parser/include/utils/hsearch.h index bc5873ed..f1deb9be 100644 --- a/parser/include/utils/hsearch.h +++ b/parser/include/utils/hsearch.h @@ -4,7 +4,7 @@ * exported definitions for utils/hash/dynahash.c; see notes therein * * - * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/utils/hsearch.h @@ -118,19 +118,23 @@ typedef struct /* * prototypes for functions in dynahash.c + * + * Note: It is deprecated for callers of hash_create to explicitly specify + * string_hash, tag_hash, uint32_hash, or oid_hash. Just set HASH_BLOBS or + * not. Use HASH_FUNCTION only when you want something other than those. */ extern HTAB *hash_create(const char *tabname, long nelem, - HASHCTL *info, int flags); + HASHCTL *info, int flags); extern void hash_destroy(HTAB *hashp); extern void hash_stats(const char *where, HTAB *hashp); extern void *hash_search(HTAB *hashp, const void *keyPtr, HASHACTION action, - bool *foundPtr); + bool *foundPtr); extern uint32 get_hash_value(HTAB *hashp, const void *keyPtr); extern void *hash_search_with_hash_value(HTAB *hashp, const void *keyPtr, - uint32 hashvalue, HASHACTION action, - bool *foundPtr); + uint32 hashvalue, HASHACTION action, + bool *foundPtr); extern bool hash_update_hash_key(HTAB *hashp, void *existingEntry, - const void *newKeyPtr); + const void *newKeyPtr); extern long hash_get_num_entries(HTAB *hashp); extern void hash_seq_init(HASH_SEQ_STATUS *status, HTAB *hashp); extern void *hash_seq_search(HASH_SEQ_STATUS *status); @@ -142,19 +146,4 @@ extern Size hash_get_shared_size(HASHCTL *info, int flags); extern void AtEOXact_HashTables(bool isCommit); extern void AtEOSubXact_HashTables(bool isCommit, int nestDepth); -/* - * prototypes for functions in hashfn.c - * - * Note: It is deprecated for callers of hash_create to explicitly specify - * string_hash, tag_hash, uint32_hash, or oid_hash. Just set HASH_BLOBS or - * not. Use HASH_FUNCTION only when you want something other than those. - */ -extern uint32 string_hash(const void *key, Size keysize); -extern uint32 tag_hash(const void *key, Size keysize); -extern uint32 uint32_hash(const void *key, Size keysize); -extern uint32 bitmap_hash(const void *key, Size keysize); -extern int bitmap_match(const void *key1, const void *key2, Size keysize); - -#define oid_hash uint32_hash /* Remove me eventually */ - #endif /* HSEARCH_H */ diff --git a/parser/include/utils/inval.h b/parser/include/utils/inval.h index 361543f4..bc5081cf 100644 --- a/parser/include/utils/inval.h +++ b/parser/include/utils/inval.h @@ -4,7 +4,7 @@ * POSTGRES cache invalidation dispatcher definitions. * * - * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/utils/inval.h @@ -29,15 +29,13 @@ extern void AtEOXact_Inval(bool isCommit); extern void AtEOSubXact_Inval(bool isCommit); -extern void AtPrepare_Inval(void); - extern void PostPrepare_Inval(void); extern void CommandEndInvalidationMessages(void); extern void CacheInvalidateHeapTuple(Relation relation, - HeapTuple tuple, - HeapTuple newtuple); + HeapTuple tuple, + HeapTuple newtuple); extern void CacheInvalidateCatalog(Oid catalogId); @@ -54,11 +52,11 @@ extern void CacheInvalidateSmgr(RelFileNodeBackend rnode); extern void CacheInvalidateRelmap(Oid databaseId); extern void CacheRegisterSyscacheCallback(int cacheid, - SyscacheCallbackFunction func, - Datum arg); + SyscacheCallbackFunction func, + Datum arg); extern void CacheRegisterRelcacheCallback(RelcacheCallbackFunction func, - Datum arg); + Datum arg); extern void CallSyscacheCallbacks(int cacheid, uint32 hashvalue); diff --git a/parser/include/utils/lsyscache.h b/parser/include/utils/lsyscache.h index 3e545bdb..fecfe1f4 100644 --- a/parser/include/utils/lsyscache.h +++ b/parser/include/utils/lsyscache.h @@ -3,7 +3,7 @@ * lsyscache.h * Convenience routines for common queries in the system catalog cache. * - * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/utils/lsyscache.h @@ -44,6 +44,7 @@ typedef struct AttStatsSlot { /* Always filled: */ Oid staop; /* Actual staop for the found slot */ + Oid stacoll; /* Actual collation for the found slot */ /* Filled if ATTSTATSSLOT_VALUES is specified: */ Oid valuetype; /* Actual datatype of the values */ Datum *values; /* slot's "values" array, or NULL if none */ @@ -65,37 +66,41 @@ extern bool op_in_opfamily(Oid opno, Oid opfamily); extern int get_op_opfamily_strategy(Oid opno, Oid opfamily); extern Oid get_op_opfamily_sortfamily(Oid opno, Oid opfamily); extern void get_op_opfamily_properties(Oid opno, Oid opfamily, bool ordering_op, - int *strategy, - Oid *lefttype, - Oid *righttype); -extern Oid get_opfamily_member(Oid opfamily, Oid lefttype, Oid righttype, - int16 strategy); + int *strategy, + Oid *lefttype, + Oid *righttype); +extern Oid get_opfamily_member(Oid opfamily, Oid lefttype, Oid righttype, + int16 strategy); extern bool get_ordering_op_properties(Oid opno, - Oid *opfamily, Oid *opcintype, int16 *strategy); + Oid *opfamily, Oid *opcintype, int16 *strategy); extern Oid get_equality_op_for_ordering_op(Oid opno, bool *reverse); extern Oid get_ordering_op_for_equality_op(Oid opno, bool use_lhs_type); extern List *get_mergejoin_opfamilies(Oid opno); extern bool get_compatible_hash_operators(Oid opno, - Oid *lhs_opno, Oid *rhs_opno); + Oid *lhs_opno, Oid *rhs_opno); extern bool get_op_hash_functions(Oid opno, - RegProcedure *lhs_procno, RegProcedure *rhs_procno); + RegProcedure *lhs_procno, RegProcedure *rhs_procno); extern List *get_op_btree_interpretation(Oid opno); extern bool equality_ops_are_compatible(Oid opno1, Oid opno2); -extern Oid get_opfamily_proc(Oid opfamily, Oid lefttype, Oid righttype, - int16 procnum); -extern char *get_attname(Oid relid, AttrNumber attnum); -extern char *get_relid_attribute_name(Oid relid, AttrNumber attnum); +extern bool comparison_ops_are_compatible(Oid opno1, Oid opno2); +extern Oid get_opfamily_proc(Oid opfamily, Oid lefttype, Oid righttype, + int16 procnum); +extern char *get_attname(Oid relid, AttrNumber attnum, bool missing_ok); extern AttrNumber get_attnum(Oid relid, const char *attname); -extern char get_attidentity(Oid relid, AttrNumber attnum); +extern char get_attgenerated(Oid relid, AttrNumber attnum); extern Oid get_atttype(Oid relid, AttrNumber attnum); -extern int32 get_atttypmod(Oid relid, AttrNumber attnum); extern void get_atttypetypmodcoll(Oid relid, AttrNumber attnum, - Oid *typid, int32 *typmod, Oid *collid); + Oid *typid, int32 *typmod, Oid *collid); +extern Datum get_attoptions(Oid relid, int16 attnum); +extern Oid get_cast_oid(Oid sourcetypeid, Oid targettypeid, bool missing_ok); extern char *get_collation_name(Oid colloid); +extern bool get_collation_isdeterministic(Oid colloid); extern char *get_constraint_name(Oid conoid); extern char *get_language_name(Oid langoid, bool missing_ok); extern Oid get_opclass_family(Oid opclass); extern Oid get_opclass_input_type(Oid opclass); +extern bool get_opclass_opfamily_and_input_type(Oid opclass, + Oid *opfamily, Oid *opcintype); extern RegProcedure get_opcode(Oid opno); extern char *get_opname(Oid opno); extern Oid get_op_rettype(Oid opno); @@ -118,9 +123,9 @@ extern bool get_func_retset(Oid funcid); extern bool func_strict(Oid funcid); extern char func_volatile(Oid funcid); extern char func_parallel(Oid funcid); +extern char get_func_prokind(Oid funcid); extern bool get_func_leakproof(Oid funcid); -extern float4 get_func_cost(Oid funcid); -extern float4 get_func_rows(Oid funcid); +extern RegProcedure get_func_support(Oid funcid); extern Oid get_relname_relid(const char *relname, Oid relnamespace); extern char *get_rel_name(Oid relid); extern Oid get_rel_namespace(Oid relid); @@ -136,16 +141,16 @@ extern int16 get_typlen(Oid typid); extern bool get_typbyval(Oid typid); extern void get_typlenbyval(Oid typid, int16 *typlen, bool *typbyval); extern void get_typlenbyvalalign(Oid typid, int16 *typlen, bool *typbyval, - char *typalign); + char *typalign); extern Oid getTypeIOParam(HeapTuple typeTuple); extern void get_type_io_data(Oid typid, - IOFuncSelector which_func, - int16 *typlen, - bool *typbyval, - char *typalign, - char *typdelim, - Oid *typioparam, - Oid *func); + IOFuncSelector which_func, + int16 *typlen, + bool *typbyval, + char *typalign, + char *typdelim, + Oid *typioparam, + Oid *func); extern char get_typstorage(Oid typid); extern Node *get_typdefault(Oid typid); extern char get_typtype(Oid typid); @@ -153,8 +158,8 @@ extern bool type_is_rowtype(Oid typid); extern bool type_is_enum(Oid typid); extern bool type_is_range(Oid typid); extern void get_type_category_preferred(Oid typid, - char *typcategory, - bool *typispreferred); + char *typcategory, + bool *typispreferred); extern Oid get_typ_typrelid(Oid typid); extern Oid get_element_type(Oid typid); extern Oid get_array_type(Oid typid); @@ -172,19 +177,21 @@ extern Oid getBaseTypeAndTypmod(Oid typid, int32 *typmod); extern int32 get_typavgwidth(Oid typid, int32 typmod); extern int32 get_attavgwidth(Oid relid, AttrNumber attnum); extern bool get_attstatsslot(AttStatsSlot *sslot, HeapTuple statstuple, - int reqkind, Oid reqop, int flags); + int reqkind, Oid reqop, int flags); extern void free_attstatsslot(AttStatsSlot *sslot); extern char *get_namespace_name(Oid nspid); extern char *get_namespace_name_or_temp(Oid nspid); extern Oid get_range_subtype(Oid rangeOid); extern Oid get_range_collation(Oid rangeOid); -extern bool get_index_isreplident(Oid index_oid); +extern Oid get_index_column_opclass(Oid index_oid, int attno); +extern bool get_index_isreplident(Oid index_oid); +extern bool get_index_isvalid(Oid index_oid); extern bool get_index_isclustered(Oid index_oid); #define type_is_array(typid) (get_element_type(typid) != InvalidOid) /* type_is_array_domain accepts both plain arrays and domains over arrays */ #define type_is_array_domain(typid) (get_base_element_type(typid) != InvalidOid) -#define TypeIsToastable(typid) (get_typstorage(typid) != 'p') +#define TypeIsToastable(typid) (get_typstorage(typid) != TYPSTORAGE_PLAIN) #endif /* LSYSCACHE_H */ diff --git a/parser/include/utils/memdebug.h b/parser/include/utils/memdebug.h index a73d505b..efa190a4 100644 --- a/parser/include/utils/memdebug.h +++ b/parser/include/utils/memdebug.h @@ -7,7 +7,7 @@ * empty definitions for Valgrind client request macros we use. * * - * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/utils/memdebug.h diff --git a/parser/include/utils/memutils.h b/parser/include/utils/memutils.h index 20260fd4..e658dc99 100644 --- a/parser/include/utils/memutils.h +++ b/parser/include/utils/memutils.h @@ -7,7 +7,7 @@ * of the API of the memory management subsystem. * * - * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/utils/memutils.h @@ -76,21 +76,27 @@ extern void MemoryContextDelete(MemoryContext context); extern void MemoryContextResetOnly(MemoryContext context); extern void MemoryContextResetChildren(MemoryContext context); extern void MemoryContextDeleteChildren(MemoryContext context); +extern void MemoryContextSetIdentifier(MemoryContext context, const char *id); extern void MemoryContextSetParent(MemoryContext context, - MemoryContext new_parent); + MemoryContext new_parent); extern Size GetMemoryChunkSpace(void *pointer); extern MemoryContext MemoryContextGetParent(MemoryContext context); extern bool MemoryContextIsEmpty(MemoryContext context); +extern Size MemoryContextMemAllocated(MemoryContext context, bool recurse); extern void MemoryContextStats(MemoryContext context); extern void MemoryContextStatsDetail(MemoryContext context, int max_children); extern void MemoryContextAllowInCriticalSection(MemoryContext context, - bool allow); + bool allow); #ifdef MEMORY_CONTEXT_CHECKING extern void MemoryContextCheck(MemoryContext context); #endif extern bool MemoryContextContains(MemoryContext context, void *pointer); +/* Handy macro for copying and assigning context ID ... but note double eval */ +#define MemoryContextCopyAndSetIdentifier(cxt, id) \ + MemoryContextSetIdentifier(cxt, MemoryContextStrdup(cxt, id)) + /* * GetMemoryChunkContext * Given a currently-allocated chunk, determine the context @@ -132,10 +138,11 @@ GetMemoryChunkContext(void *pointer) * context creation. It's intended to be called from context-type- * specific creation routines, and noplace else. */ -extern MemoryContext MemoryContextCreate(NodeTag tag, Size size, - const MemoryContextMethods *methods, - MemoryContext parent, - const char *name); +extern void MemoryContextCreate(MemoryContext node, + NodeTag tag, + const MemoryContextMethods *methods, + MemoryContext parent, + const char *name); /* @@ -143,17 +150,38 @@ extern MemoryContext MemoryContextCreate(NodeTag tag, Size size, */ /* aset.c */ -extern MemoryContext AllocSetContextCreate(MemoryContext parent, - const char *name, - Size minContextSize, - Size initBlockSize, - Size maxBlockSize); +extern MemoryContext AllocSetContextCreateInternal(MemoryContext parent, + const char *name, + Size minContextSize, + Size initBlockSize, + Size maxBlockSize); +extern void AllocSetDeleteFreeList(MemoryContext context); + +/* + * This wrapper macro exists to check for non-constant strings used as context + * names; that's no longer supported. (Use MemoryContextSetIdentifier if you + * want to provide a variable identifier.) + */ +#ifdef HAVE__BUILTIN_CONSTANT_P +#define AllocSetContextCreate(parent, name, ...) \ + (StaticAssertExpr(__builtin_constant_p(name), \ + "memory context names must be constant strings"), \ + AllocSetContextCreateInternal(parent, name, __VA_ARGS__)) +#else +#define AllocSetContextCreate \ + AllocSetContextCreateInternal +#endif /* slab.c */ extern MemoryContext SlabContextCreate(MemoryContext parent, - const char *name, - Size blockSize, - Size chunkSize); + const char *name, + Size blockSize, + Size chunkSize); + +/* generation.c */ +extern MemoryContext GenerationContextCreate(MemoryContext parent, + const char *name, + Size blockSize); /* * Recommended default alloc parameters, suitable for "ordinary" contexts diff --git a/parser/include/utils/numeric.h b/parser/include/utils/numeric.h index 3aa7fef9..0604cb65 100644 --- a/parser/include/utils/numeric.h +++ b/parser/include/utils/numeric.h @@ -5,7 +5,7 @@ * * Original coding 1998, Jan Wieck. Heavily revised 2003, Tom Lane. * - * Copyright (c) 1998-2017, PostgreSQL Global Development Group + * Copyright (c) 1998-2020, PostgreSQL Global Development Group * * src/include/utils/numeric.h * @@ -61,4 +61,16 @@ int32 numeric_maximum_size(int32 typmod); extern char *numeric_out_sci(Numeric num, int scale); extern char *numeric_normalize(Numeric num); +extern Numeric numeric_add_opt_error(Numeric num1, Numeric num2, + bool *have_error); +extern Numeric numeric_sub_opt_error(Numeric num1, Numeric num2, + bool *have_error); +extern Numeric numeric_mul_opt_error(Numeric num1, Numeric num2, + bool *have_error); +extern Numeric numeric_div_opt_error(Numeric num1, Numeric num2, + bool *have_error); +extern Numeric numeric_mod_opt_error(Numeric num1, Numeric num2, + bool *have_error); +extern int32 numeric_int4_opt_error(Numeric num, bool *error); + #endif /* _PG_NUMERIC_H_ */ diff --git a/parser/include/utils/palloc.h b/parser/include/utils/palloc.h index 39386fba..22826d72 100644 --- a/parser/include/utils/palloc.h +++ b/parser/include/utils/palloc.h @@ -18,7 +18,7 @@ * everything that should be freed. See utils/mmgr/README for more info. * * - * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/utils/palloc.h @@ -72,7 +72,7 @@ extern void *MemoryContextAlloc(MemoryContext context, Size size); extern void *MemoryContextAllocZero(MemoryContext context, Size size); extern void *MemoryContextAllocZeroAligned(MemoryContext context, Size size); extern void *MemoryContextAllocExtended(MemoryContext context, - Size size, int flags); + Size size, int flags); extern void *palloc(Size size); extern void *palloc0(Size size); @@ -117,7 +117,7 @@ MemoryContextSwitchTo(MemoryContext context) /* Registration of memory context reset/delete callbacks */ extern void MemoryContextRegisterResetCallback(MemoryContext context, - MemoryContextCallback *cb); + MemoryContextCallback *cb); /* * These are like standard strdup() except the copied string is diff --git a/parser/include/utils/partcache.h b/parser/include/utils/partcache.h new file mode 100644 index 00000000..19e35fe5 --- /dev/null +++ b/parser/include/utils/partcache.h @@ -0,0 +1,102 @@ +/*------------------------------------------------------------------------- + * + * partcache.h + * + * Copyright (c) 1996-2020, PostgreSQL Global Development Group + * + * src/include/utils/partcache.h + * + *------------------------------------------------------------------------- + */ +#ifndef PARTCACHE_H +#define PARTCACHE_H + +#include "access/attnum.h" +#include "fmgr.h" +#include "nodes/pg_list.h" +#include "nodes/primnodes.h" +#include "partitioning/partdefs.h" +#include "utils/relcache.h" + +/* + * Information about the partition key of a relation + */ +typedef struct PartitionKeyData +{ + char strategy; /* partitioning strategy */ + int16 partnatts; /* number of columns in the partition key */ + AttrNumber *partattrs; /* attribute numbers of columns in the + * partition key or 0 if it's an expr */ + List *partexprs; /* list of expressions in the partitioning + * key, one for each zero-valued partattrs */ + + Oid *partopfamily; /* OIDs of operator families */ + Oid *partopcintype; /* OIDs of opclass declared input data types */ + FmgrInfo *partsupfunc; /* lookup info for support funcs */ + + /* Partitioning collation per attribute */ + Oid *partcollation; + + /* Type information per attribute */ + Oid *parttypid; + int32 *parttypmod; + int16 *parttyplen; + bool *parttypbyval; + char *parttypalign; + Oid *parttypcoll; +} PartitionKeyData; + + +extern PartitionKey RelationGetPartitionKey(Relation rel); +extern List *RelationGetPartitionQual(Relation rel); +extern Expr *get_partition_qual_relid(Oid relid); + +/* + * PartitionKey inquiry functions + */ +static inline int +get_partition_strategy(PartitionKey key) +{ + return key->strategy; +} + +static inline int +get_partition_natts(PartitionKey key) +{ + return key->partnatts; +} + +static inline List * +get_partition_exprs(PartitionKey key) +{ + return key->partexprs; +} + +/* + * PartitionKey inquiry functions - one column + */ +static inline int16 +get_partition_col_attnum(PartitionKey key, int col) +{ + return key->partattrs[col]; +} + +static inline Oid +get_partition_col_typid(PartitionKey key, int col) +{ + return key->parttypid[col]; +} + +static inline int32 +get_partition_col_typmod(PartitionKey key, int col) +{ + return key->parttypmod[col]; +} + +static inline Oid +get_partition_col_collation(PartitionKey key, int col) +{ + return key->partcollation[col]; +} + +#endif /* PARTCACHE_H */ diff --git a/parser/include/utils/pg_locale.h b/parser/include/utils/pg_locale.h index f3e04d4d..9cb7d91d 100644 --- a/parser/include/utils/pg_locale.h +++ b/parser/include/utils/pg_locale.h @@ -4,7 +4,7 @@ * * src/include/utils/pg_locale.h * - * Copyright (c) 2002-2017, PostgreSQL Global Development Group + * Copyright (c) 2002-2020, PostgreSQL Global Development Group * *----------------------------------------------------------------------- */ @@ -82,6 +82,7 @@ extern void cache_locale_time(void); struct pg_locale_struct { char provider; + bool deterministic; union { #ifdef HAVE_LOCALE_T @@ -110,11 +111,9 @@ extern int32_t icu_from_uchar(char **result, const UChar *buff_uchar, int32_t le #endif /* These functions convert from/to libc's wchar_t, *not* pg_wchar_t */ -#ifdef USE_WIDE_UPPER_LOWER extern size_t wchar2char(char *to, const wchar_t *from, size_t tolen, - pg_locale_t locale); + pg_locale_t locale); extern size_t char2wchar(wchar_t *to, size_t tolen, - const char *from, size_t fromlen, pg_locale_t locale); -#endif + const char *from, size_t fromlen, pg_locale_t locale); #endif /* _PG_LOCALE_ */ diff --git a/parser/include/utils/pg_lsn.h b/parser/include/utils/pg_lsn.h new file mode 100644 index 00000000..25d6c5b3 --- /dev/null +++ b/parser/include/utils/pg_lsn.h @@ -0,0 +1,29 @@ +/*------------------------------------------------------------------------- + * + * pg_lsn.h + * Declarations for operations on log sequence numbers (LSNs) of + * PostgreSQL. + * + * + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group + * Portions Copyright (c) 1994, Regents of the University of California + * + * src/include/utils/pg_lsn.h + * + *------------------------------------------------------------------------- + */ +#ifndef PG_LSN_H +#define PG_LSN_H + +#include "access/xlogdefs.h" +#include "fmgr.h" + +#define DatumGetLSN(X) ((XLogRecPtr) DatumGetInt64(X)) +#define LSNGetDatum(X) (Int64GetDatum((int64) (X))) + +#define PG_GETARG_LSN(n) DatumGetLSN(PG_GETARG_DATUM(n)) +#define PG_RETURN_LSN(x) return LSNGetDatum(x) + +extern XLogRecPtr pg_lsn_in_internal(const char *str, bool *have_error); + +#endif /* PG_LSN_H */ diff --git a/parser/include/utils/pidfile.h b/parser/include/utils/pidfile.h index c3db4c46..63fefe5c 100644 --- a/parser/include/utils/pidfile.h +++ b/parser/include/utils/pidfile.h @@ -3,7 +3,7 @@ * pidfile.h * Declarations describing the data directory lock file (postmaster.pid) * - * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/utils/pidfile.h @@ -28,7 +28,8 @@ * * Lines 6 and up are added via AddToDataDirLockFile() after initial file * creation; also, line 5 is initially empty and is changed after the first - * Unix socket is opened. + * Unix socket is opened. Onlookers should not assume that lines 4 and up + * are filled in any particular order. * * Socket lock file(s), if used, have the same contents as lines 1-5, with * line 5 being their own directory. diff --git a/parser/include/utils/plancache.h b/parser/include/utils/plancache.h index 87fab19f..522020d7 100644 --- a/parser/include/utils/plancache.h +++ b/parser/include/utils/plancache.h @@ -5,7 +5,7 @@ * * See plancache.c for comments. * - * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/utils/plancache.h @@ -16,14 +16,30 @@ #define PLANCACHE_H #include "access/tupdesc.h" +#include "lib/ilist.h" #include "nodes/params.h" +#include "tcop/cmdtag.h" #include "utils/queryenvironment.h" +#include "utils/resowner.h" + /* Forward declaration, to avoid including parsenodes.h here */ struct RawStmt; +/* possible values for plan_cache_mode */ +typedef enum +{ + PLAN_CACHE_MODE_AUTO, + PLAN_CACHE_MODE_FORCE_GENERIC_PLAN, + PLAN_CACHE_MODE_FORCE_CUSTOM_PLAN +} PlanCacheMode; + +/* GUC parameter */ +extern int plan_cache_mode; + #define CACHEDPLANSOURCE_MAGIC 195726186 #define CACHEDPLAN_MAGIC 953717834 +#define CACHEDEXPR_MAGIC 838275847 /* * CachedPlanSource (which might better have been called CachedQuery) @@ -82,7 +98,7 @@ typedef struct CachedPlanSource int magic; /* should equal CACHEDPLANSOURCE_MAGIC */ struct RawStmt *raw_parse_tree; /* output of raw_parser(), or NULL */ const char *query_string; /* source text of query */ - const char *commandTag; /* command tag (a constant!), or NULL */ + CommandTag commandTag; /* 'nuff said */ Oid *param_types; /* array of parameter type OIDs, or NULL */ int num_params; /* length of param_types array */ ParserSetupHook parserSetup; /* alternative parameter spec method */ @@ -110,7 +126,7 @@ typedef struct CachedPlanSource bool is_valid; /* is the query_list currently valid? */ int generation; /* increments each time we create a plan */ /* If CachedPlanSource has been saved, it is a member of a global list */ - struct CachedPlanSource *next_saved; /* list link, if so */ + dlist_node node; /* list link, if is_saved */ /* State kept to help decide whether to use custom or generic plans: */ double generic_cost; /* cost of generic plan, or -1 if not known */ double total_custom_cost; /* total cost of custom plans so far */ @@ -143,43 +159,77 @@ typedef struct CachedPlan MemoryContext context; /* context containing this CachedPlan */ } CachedPlan; +/* + * CachedExpression is a low-overhead mechanism for caching the planned form + * of standalone scalar expressions. While such expressions are not usually + * subject to cache invalidation events, that can happen, for example because + * of replacement of a SQL function that was inlined into the expression. + * The plancache takes care of storing the expression tree and marking it + * invalid if a cache invalidation occurs, but the caller must notice the + * !is_valid status and discard the obsolete expression without reusing it. + * We do not store the original parse tree, only the planned expression; + * this is an optimization based on the assumption that we usually will not + * need to replan for the life of the session. + */ +typedef struct CachedExpression +{ + int magic; /* should equal CACHEDEXPR_MAGIC */ + Node *expr; /* planned form of expression */ + bool is_valid; /* is the expression still valid? */ + /* remaining fields should be treated as private to plancache.c: */ + List *relationOids; /* OIDs of relations the expr depends on */ + List *invalItems; /* other dependencies, as PlanInvalItems */ + MemoryContext context; /* context containing this CachedExpression */ + dlist_node node; /* link in global list of CachedExpressions */ +} CachedExpression; + extern void InitPlanCache(void); extern void ResetPlanCache(void); extern CachedPlanSource *CreateCachedPlan(struct RawStmt *raw_parse_tree, - const char *query_string, - const char *commandTag); + const char *query_string, + CommandTag commandTag); extern CachedPlanSource *CreateOneShotCachedPlan(struct RawStmt *raw_parse_tree, - const char *query_string, - const char *commandTag); + const char *query_string, + CommandTag commandTag); extern void CompleteCachedPlan(CachedPlanSource *plansource, - List *querytree_list, - MemoryContext querytree_context, - Oid *param_types, - int num_params, - ParserSetupHook parserSetup, - void *parserSetupArg, - int cursor_options, - bool fixed_result); + List *querytree_list, + MemoryContext querytree_context, + Oid *param_types, + int num_params, + ParserSetupHook parserSetup, + void *parserSetupArg, + int cursor_options, + bool fixed_result); extern void SaveCachedPlan(CachedPlanSource *plansource); extern void DropCachedPlan(CachedPlanSource *plansource); extern void CachedPlanSetParentContext(CachedPlanSource *plansource, - MemoryContext newcontext); + MemoryContext newcontext); extern CachedPlanSource *CopyCachedPlan(CachedPlanSource *plansource); extern bool CachedPlanIsValid(CachedPlanSource *plansource); extern List *CachedPlanGetTargetList(CachedPlanSource *plansource, - QueryEnvironment *queryEnv); + QueryEnvironment *queryEnv); extern CachedPlan *GetCachedPlan(CachedPlanSource *plansource, - ParamListInfo boundParams, - bool useResOwner, - QueryEnvironment *queryEnv); + ParamListInfo boundParams, + bool useResOwner, + QueryEnvironment *queryEnv); extern void ReleaseCachedPlan(CachedPlan *plan, bool useResOwner); +extern bool CachedPlanAllowsSimpleValidityCheck(CachedPlanSource *plansource, + CachedPlan *plan, + ResourceOwner owner); +extern bool CachedPlanIsSimplyValid(CachedPlanSource *plansource, + CachedPlan *plan, + ResourceOwner owner); + +extern CachedExpression *GetCachedExpression(Node *expr); +extern void FreeCachedExpression(CachedExpression *cexpr); + #endif /* PLANCACHE_H */ diff --git a/parser/include/utils/portal.h b/parser/include/utils/portal.h index cb6f0008..d41ff2ef 100644 --- a/parser/include/utils/portal.h +++ b/parser/include/utils/portal.h @@ -36,7 +36,7 @@ * to look like NO SCROLL cursors. * * - * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/utils/portal.h @@ -48,6 +48,7 @@ #include "datatype/timestamp.h" #include "executor/execdesc.h" +#include "tcop/cmdtag.h" #include "utils/plancache.h" #include "utils/resowner.h" @@ -116,7 +117,7 @@ typedef struct PortalData /* Bookkeeping data */ const char *name; /* portal's name */ const char *prepStmtName; /* source prepared statement (NULL if none) */ - MemoryContext heap; /* subsidiary memory for portal */ + MemoryContext portalContext; /* subsidiary memory for portal */ ResourceOwner resowner; /* resources owned by portal */ void (*cleanup) (Portal portal); /* cleanup hook */ @@ -132,7 +133,8 @@ typedef struct PortalData /* The query or queries the portal will execute */ const char *sourceText; /* text of query (as of 8.4, never NULL) */ - const char *commandTag; /* command tag for original query */ + CommandTag commandTag; /* command tag for original query */ + QueryCompletion qc; /* command completion data for executed query */ List *stmts; /* list of PlannedStmts */ CachedPlan *cplan; /* CachedPlan, if stmts are from one */ @@ -147,6 +149,8 @@ typedef struct PortalData /* Status data */ PortalStatus status; /* see above */ bool portalPinned; /* a pinned portal can't be dropped */ + bool autoHeld; /* was automatically converted from pinned to + * held (see HoldPinnedPortals()) */ /* If not NULL, Executor is active; call ExecutorEnd eventually: */ QueryDesc *queryDesc; /* info needed for executor invocation */ @@ -198,25 +202,20 @@ typedef struct PortalData */ #define PortalIsValid(p) PointerIsValid(p) -/* - * Access macros for Portal ... use these in preference to field access. - */ -#define PortalGetQueryDesc(portal) ((portal)->queryDesc) -#define PortalGetHeapMemory(portal) ((portal)->heap) - /* Prototypes for functions in utils/mmgr/portalmem.c */ extern void EnablePortalManager(void); extern bool PreCommit_Portals(bool isPrepare); extern void AtAbort_Portals(void); extern void AtCleanup_Portals(void); +extern void PortalErrorCleanup(void); extern void AtSubCommit_Portals(SubTransactionId mySubid, - SubTransactionId parentSubid, - ResourceOwner parentXactOwner); + SubTransactionId parentSubid, + ResourceOwner parentXactOwner); extern void AtSubAbort_Portals(SubTransactionId mySubid, - SubTransactionId parentSubid, - ResourceOwner myXactOwner, - ResourceOwner parentXactOwner); + SubTransactionId parentSubid, + ResourceOwner myXactOwner, + ResourceOwner parentXactOwner); extern void AtSubCleanup_Portals(SubTransactionId mySubid); extern Portal CreatePortal(const char *name, bool allowDup, bool dupSilent); extern Portal CreateNewPortal(void); @@ -228,14 +227,15 @@ extern void MarkPortalFailed(Portal portal); extern void PortalDrop(Portal portal, bool isTopCommit); extern Portal GetPortalByName(const char *name); extern void PortalDefineQuery(Portal portal, - const char *prepStmtName, - const char *sourceText, - const char *commandTag, - List *stmts, - CachedPlan *cplan); + const char *prepStmtName, + const char *sourceText, + CommandTag commandTag, + List *stmts, + CachedPlan *cplan); extern PlannedStmt *PortalGetPrimaryStmt(Portal portal); extern void PortalCreateHoldStore(Portal portal); extern void PortalHashTableDeleteAll(void); extern bool ThereAreNoReadyPortals(void); +extern void HoldPinnedPortals(void); #endif /* PORTAL_H */ diff --git a/parser/include/utils/probes.h b/parser/include/utils/probes.h index a71f05a9..28072938 100644 --- a/parser/include/utils/probes.h +++ b/parser/include/utils/probes.h @@ -46,7 +46,7 @@ #define TRACE_POSTGRESQL_QUERY_DONE_ENABLED() (0) #define TRACE_POSTGRESQL_STATEMENT_STATUS(INT1) #define TRACE_POSTGRESQL_STATEMENT_STATUS_ENABLED() (0) -#define TRACE_POSTGRESQL_SORT_START(INT1, INT2, INT3, INT4, INT5) +#define TRACE_POSTGRESQL_SORT_START(INT1, INT2, INT3, INT4, INT5, INT6) #define TRACE_POSTGRESQL_SORT_START_ENABLED() (0) #define TRACE_POSTGRESQL_SORT_DONE(INT1, INT2) #define TRACE_POSTGRESQL_SORT_DONE_ENABLED() (0) diff --git a/parser/include/utils/ps_status.h b/parser/include/utils/ps_status.h index 2ba5a0ea..9f43e1fd 100644 --- a/parser/include/utils/ps_status.h +++ b/parser/include/utils/ps_status.h @@ -16,10 +16,9 @@ extern bool update_process_title; extern char **save_ps_display_args(int argc, char **argv); -extern void init_ps_display(const char *username, const char *dbname, - const char *host_info, const char *initial_str); +extern void init_ps_display(const char *fixed_part); -extern void set_ps_display(const char *activity, bool force); +extern void set_ps_display(const char *activity); extern const char *get_ps_display(int *displen); diff --git a/parser/include/utils/queryenvironment.h b/parser/include/utils/queryenvironment.h index 08e6051b..4b8e1964 100644 --- a/parser/include/utils/queryenvironment.h +++ b/parser/include/utils/queryenvironment.h @@ -4,7 +4,7 @@ * Access to functions to mutate the query environment and retrieve the * actual data related to entries (if any). * - * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/utils/queryenvironment.h diff --git a/parser/include/utils/regproc.h b/parser/include/utils/regproc.h index ba46bd7d..383dfe64 100644 --- a/parser/include/utils/regproc.h +++ b/parser/include/utils/regproc.h @@ -3,7 +3,7 @@ * regproc.h * Functions for the built-in types regproc, regclass, regtype, etc. * - * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/utils/regproc.h @@ -19,10 +19,10 @@ extern List *stringToQualifiedNameList(const char *string); extern char *format_procedure(Oid procedure_oid); extern char *format_procedure_qualified(Oid procedure_oid); extern void format_procedure_parts(Oid operator_oid, List **objnames, - List **objargs); + List **objargs); extern char *format_operator(Oid operator_oid); extern char *format_operator_qualified(Oid operator_oid); extern void format_operator_parts(Oid operator_oid, List **objnames, - List **objargs); + List **objargs); #endif diff --git a/parser/include/utils/rel.h b/parser/include/utils/rel.h index 96ba216b..0b5957ba 100644 --- a/parser/include/utils/rel.h +++ b/parser/include/utils/rel.h @@ -4,7 +4,7 @@ * POSTGRES relation descriptor (a/k/a relcache entry) definitions. * * - * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/utils/rel.h @@ -19,8 +19,8 @@ #include "catalog/pg_class.h" #include "catalog/pg_index.h" #include "catalog/pg_publication.h" -#include "fmgr.h" #include "nodes/bitmapset.h" +#include "partitioning/partdefs.h" #include "rewrite/prs2lock.h" #include "storage/block.h" #include "storage/relfilenode.h" @@ -46,36 +46,6 @@ typedef struct LockInfoData typedef LockInfoData *LockInfo; -/* - * Information about the partition key of a relation - */ -typedef struct PartitionKeyData -{ - char strategy; /* partitioning strategy */ - int16 partnatts; /* number of columns in the partition key */ - AttrNumber *partattrs; /* attribute numbers of columns in the - * partition key */ - List *partexprs; /* list of expressions in the partitioning - * key, or NIL */ - - Oid *partopfamily; /* OIDs of operator families */ - Oid *partopcintype; /* OIDs of opclass declared input data types */ - FmgrInfo *partsupfunc; /* lookup info for support funcs */ - - /* Partitioning collation per attribute */ - Oid *partcollation; - - /* Type information per attribute */ - Oid *parttypid; - int32 *parttypmod; - int16 *parttyplen; - bool *parttypbyval; - char *parttypalign; - Oid *parttypcoll; -} PartitionKeyData; - -typedef struct PartitionKeyData *PartitionKey; - /* * Here are the contents of a relation cache entry. */ @@ -90,31 +60,51 @@ typedef struct RelationData bool rd_islocaltemp; /* rel is a temp rel of this session */ bool rd_isnailed; /* rel is nailed in cache */ bool rd_isvalid; /* relcache entry is valid */ - char rd_indexvalid; /* state of rd_indexlist: 0 = not valid, 1 = - * valid, 2 = temporarily forced */ + bool rd_indexvalid; /* is rd_indexlist valid? (also rd_pkindex and + * rd_replidindex) */ bool rd_statvalid; /* is rd_statlist valid? */ /*---------- * rd_createSubid is the ID of the highest subtransaction the rel has - * survived into; or zero if the rel was not created in the current top - * transaction. This can be now be relied on, whereas previously it could - * be "forgotten" in earlier releases. Likewise, rd_newRelfilenodeSubid is - * the ID of the highest subtransaction the relfilenode change has - * survived into, or zero if not changed in the current transaction (or we - * have forgotten changing it). rd_newRelfilenodeSubid can be forgotten - * when a relation has multiple new relfilenodes within a single - * transaction, with one of them occurring in a subsequently aborted - * subtransaction, e.g. + * survived into or zero if the rel or its rd_node was created before the + * current top transaction. (IndexStmt.oldNode leads to the case of a new + * rel with an old rd_node.) rd_firstRelfilenodeSubid is the ID of the + * highest subtransaction an rd_node change has survived into or zero if + * rd_node matches the value it had at the start of the current top + * transaction. (Rolling back the subtransaction that + * rd_firstRelfilenodeSubid denotes would restore rd_node to the value it + * had at the start of the current top transaction. Rolling back any + * lower subtransaction would not.) Their accuracy is critical to + * RelationNeedsWAL(). + * + * rd_newRelfilenodeSubid is the ID of the highest subtransaction the + * most-recent relfilenode change has survived into or zero if not changed + * in the current transaction (or we have forgotten changing it). This + * field is accurate when non-zero, but it can be zero when a relation has + * multiple new relfilenodes within a single transaction, with one of them + * occurring in a subsequently aborted subtransaction, e.g. * BEGIN; * TRUNCATE t; * SAVEPOINT save; * TRUNCATE t; * ROLLBACK TO save; * -- rd_newRelfilenodeSubid is now forgotten + * + * If every rd_*Subid field is zero, they are read-only outside + * relcache.c. Files that trigger rd_node changes by updating + * pg_class.reltablespace and/or pg_class.relfilenode call + * RelationAssumeNewRelfilenode() to update rd_*Subid. + * + * rd_droppedSubid is the ID of the highest subtransaction that a drop of + * the rel has survived into. In entries visible outside relcache.c, this + * is always zero. */ SubTransactionId rd_createSubid; /* rel was created in current xact */ - SubTransactionId rd_newRelfilenodeSubid; /* new relfilenode assigned in - * current xact */ + SubTransactionId rd_newRelfilenodeSubid; /* highest subxact changing + * rd_node to current value */ + SubTransactionId rd_firstRelfilenodeSubid; /* highest subxact changing + * rd_node to any value */ + SubTransactionId rd_droppedSubid; /* dropped with another Subid set */ Form_pg_class rd_rel; /* RELATION tuple */ TupleDesc rd_att; /* tuple descriptor */ @@ -130,15 +120,21 @@ typedef struct RelationData List *rd_fkeylist; /* list of ForeignKeyCacheInfo (see below) */ bool rd_fkeyvalid; /* true if list has been computed */ + /* data managed by RelationGetPartitionKey: */ + PartitionKey rd_partkey; /* partition key, or NULL */ MemoryContext rd_partkeycxt; /* private context for rd_partkey, if any */ - struct PartitionKeyData *rd_partkey; /* partition key, or NULL */ + + /* data managed by RelationGetPartitionDesc: */ + PartitionDesc rd_partdesc; /* partition descriptor, or NULL */ MemoryContext rd_pdcxt; /* private context for rd_partdesc, if any */ - struct PartitionDescData *rd_partdesc; /* partitions, or NULL */ + + /* data managed by RelationGetPartitionQual: */ List *rd_partcheck; /* partition CHECK quals */ + bool rd_partcheckvalid; /* true if list has been computed */ + MemoryContext rd_partcheckcxt; /* private cxt for rd_partcheck, if any */ /* data managed by RelationGetIndexList: */ List *rd_indexlist; /* list of OIDs of indexes on relation */ - Oid rd_oidindex; /* OID of unique index on OID, if any */ Oid rd_pkindex; /* OID of primary key, if any */ Oid rd_replidindex; /* OID of replica identity index, if any */ @@ -160,6 +156,20 @@ typedef struct RelationData */ bytea *rd_options; /* parsed pg_class.reloptions */ + /* + * Oid of the handler for this relation. For an index this is a function + * returning IndexAmRoutine, for table like relations a function returning + * TableAmRoutine. This is stored separately from rd_indam, rd_tableam as + * its lookup requires syscache access, but during relcache bootstrap we + * need to be able to initialize rd_tableam without syscache lookups. + */ + Oid rd_amhandler; /* OID of index AM's handler function */ + + /* + * Table access method. + */ + const struct TableAmRoutine *rd_tableam; + /* These are non-NULL only for an index relation: */ Form_pg_index rd_index; /* pg_index tuple describing this index */ /* use "struct" here to avoid needing to include htup.h: */ @@ -172,30 +182,33 @@ typedef struct RelationData * those with lefttype and righttype equal to the opclass's opcintype. The * arrays are indexed by support function number, which is a sufficient * identifier given that restriction. - * - * Note: rd_amcache is available for index AMs to cache private data about - * an index. This must be just a cache since it may get reset at any time - * (in particular, it will get reset by a relcache inval message for the - * index). If used, it must point to a single memory chunk palloc'd in - * rd_indexcxt. A relcache reset will include freeing that chunk and - * setting rd_amcache = NULL. */ - Oid rd_amhandler; /* OID of index AM's handler function */ MemoryContext rd_indexcxt; /* private memory cxt for this stuff */ /* use "struct" here to avoid needing to include amapi.h: */ - struct IndexAmRoutine *rd_amroutine; /* index AM's API struct */ + struct IndexAmRoutine *rd_indam; /* index AM's API struct */ Oid *rd_opfamily; /* OIDs of op families for each index col */ Oid *rd_opcintype; /* OIDs of opclass declared input data types */ RegProcedure *rd_support; /* OIDs of support procedures */ - FmgrInfo *rd_supportinfo; /* lookup info for support procedures */ + struct FmgrInfo *rd_supportinfo; /* lookup info for support procedures */ int16 *rd_indoption; /* per-column AM-specific flags */ List *rd_indexprs; /* index expression trees, if any */ List *rd_indpred; /* index predicate tree, if any */ Oid *rd_exclops; /* OIDs of exclusion operators, if any */ Oid *rd_exclprocs; /* OIDs of exclusion ops' procs, if any */ uint16 *rd_exclstrats; /* exclusion ops' strategy numbers, if any */ - void *rd_amcache; /* available for use by index AM */ Oid *rd_indcollation; /* OIDs of index collations */ + bytea **rd_opcoptions; /* parsed opclass-specific options */ + + /* + * rd_amcache is available for index and table AMs to cache private data + * about the relation. This must be just a cache since it may get reset + * at any time (in particular, it will get reset by a relcache inval + * message for the relation). If used, it must point to a single memory + * chunk palloc'd in CacheMemoryContext, or in rd_indexcxt for an index + * relation. A relcache reset will include freeing that chunk and setting + * rd_amcache = NULL. + */ + void *rd_amcache; /* available for use by index/table AM */ /* * foreign-table support @@ -221,10 +234,6 @@ typedef struct RelationData /* use "struct" here to avoid needing to include pgstat.h: */ struct PgStat_TableStatus *pgstat_info; /* statistics collection area */ - - /* placed here to avoid ABI break before v12: */ - bool rd_partcheckvalid; /* true if list has been computed */ - MemoryContext rd_partcheckcxt; /* private cxt for rd_partcheck, if any */ } RelationData; @@ -239,12 +248,13 @@ typedef struct RelationData * The per-FK-column arrays can be fixed-size because we allow at most * INDEX_MAX_KEYS columns in a foreign key constraint. * - * Currently, we only cache fields of interest to the planner, but the - * set of fields could be expanded in future. + * Currently, we mostly cache fields of interest to the planner, but the set + * of fields has already grown the constraint OID for other uses. */ typedef struct ForeignKeyCacheInfo { NodeTag type; + Oid conoid; /* oid of the constraint itself */ Oid conrelid; /* relation constrained by the foreign key */ Oid confrelid; /* relation referenced by the foreign key */ int nkeys; /* number of columns in the foreign key */ @@ -257,7 +267,7 @@ typedef struct ForeignKeyCacheInfo /* * StdRdOptions - * Standard contents of rd_options for heaps and generic indexes. + * Standard contents of rd_options for heaps. * * RelationGetFillFactor() and RelationGetTargetPageFreeSpace() can only * be applied to relations that use this format or a superset for @@ -268,8 +278,8 @@ typedef struct AutoVacOpts { bool enabled; int vacuum_threshold; + int vacuum_ins_threshold; int analyze_threshold; - int vacuum_cost_delay; int vacuum_cost_limit; int freeze_min_age; int freeze_max_age; @@ -278,7 +288,9 @@ typedef struct AutoVacOpts int multixact_freeze_max_age; int multixact_freeze_table_age; int log_min_duration; + float8 vacuum_cost_delay; float8 vacuum_scale_factor; + float8 vacuum_ins_scale_factor; float8 analyze_scale_factor; } AutoVacOpts; @@ -286,14 +298,26 @@ typedef struct StdRdOptions { int32 vl_len_; /* varlena header (do not touch directly!) */ int fillfactor; /* page fill factor in percent (0..100) */ + /* fraction of newly inserted tuples prior to trigger index cleanup */ + int toast_tuple_target; /* target for tuple toasting */ AutoVacOpts autovacuum; /* autovacuum-related options */ bool user_catalog_table; /* use as an additional catalog relation */ int parallel_workers; /* max number of parallel workers */ + bool vacuum_index_cleanup; /* enables index vacuuming and cleanup */ + bool vacuum_truncate; /* enables vacuum to truncate a relation */ } StdRdOptions; #define HEAP_MIN_FILLFACTOR 10 #define HEAP_DEFAULT_FILLFACTOR 100 +/* + * RelationGetToastTupleTarget + * Returns the relation's toast_tuple_target. Note multiple eval of argument! + */ +#define RelationGetToastTupleTarget(relation, defaulttarg) \ + ((relation)->rd_options ? \ + ((StdRdOptions *) (relation)->rd_options)->toast_tuple_target : (defaulttarg)) + /* * RelationGetFillFactor * Returns the relation's fillfactor. Note multiple eval of argument! @@ -336,6 +360,13 @@ typedef struct StdRdOptions ((relation)->rd_options ? \ ((StdRdOptions *) (relation)->rd_options)->parallel_workers : (defaultpw)) +/* ViewOptions->check_option values */ +typedef enum ViewOptCheckOption +{ + VIEW_OPTION_CHECK_OPTION_NOT_SET, + VIEW_OPTION_CHECK_OPTION_LOCAL, + VIEW_OPTION_CHECK_OPTION_CASCADED +} ViewOptCheckOption; /* * ViewOptions @@ -345,7 +376,7 @@ typedef struct ViewOptions { int32 vl_len_; /* varlena header (do not touch directly!) */ bool security_barrier; - int check_option_offset; + ViewOptCheckOption check_option; } ViewOptions; /* @@ -353,9 +384,10 @@ typedef struct ViewOptions * Returns whether the relation is security view, or not. Note multiple * eval of argument! */ -#define RelationIsSecurityView(relation) \ - ((relation)->rd_options ? \ - ((ViewOptions *) (relation)->rd_options)->security_barrier : false) +#define RelationIsSecurityView(relation) \ + (AssertMacro(relation->rd_rel->relkind == RELKIND_VIEW), \ + (relation)->rd_options ? \ + ((ViewOptions *) (relation)->rd_options)->security_barrier : false) /* * RelationHasCheckOption @@ -363,8 +395,10 @@ typedef struct ViewOptions * or the cascaded check option. Note multiple eval of argument! */ #define RelationHasCheckOption(relation) \ - ((relation)->rd_options && \ - ((ViewOptions *) (relation)->rd_options)->check_option_offset != 0) + (AssertMacro(relation->rd_rel->relkind == RELKIND_VIEW), \ + (relation)->rd_options && \ + ((ViewOptions *) (relation)->rd_options)->check_option != \ + VIEW_OPTION_CHECK_OPTION_NOT_SET) /* * RelationHasLocalCheckOption @@ -372,11 +406,10 @@ typedef struct ViewOptions * option. Note multiple eval of argument! */ #define RelationHasLocalCheckOption(relation) \ - ((relation)->rd_options && \ - ((ViewOptions *) (relation)->rd_options)->check_option_offset != 0 ? \ - strcmp((char *) (relation)->rd_options + \ - ((ViewOptions *) (relation)->rd_options)->check_option_offset, \ - "local") == 0 : false) + (AssertMacro(relation->rd_rel->relkind == RELKIND_VIEW), \ + (relation)->rd_options && \ + ((ViewOptions *) (relation)->rd_options)->check_option == \ + VIEW_OPTION_CHECK_OPTION_LOCAL) /* * RelationHasCascadedCheckOption @@ -384,12 +417,10 @@ typedef struct ViewOptions * option. Note multiple eval of argument! */ #define RelationHasCascadedCheckOption(relation) \ - ((relation)->rd_options && \ - ((ViewOptions *) (relation)->rd_options)->check_option_offset != 0 ? \ - strcmp((char *) (relation)->rd_options + \ - ((ViewOptions *) (relation)->rd_options)->check_option_offset, \ - "cascaded") == 0 : false) - + (AssertMacro(relation->rd_rel->relkind == RELKIND_VIEW), \ + (relation)->rd_options && \ + ((ViewOptions *) (relation)->rd_options)->check_option == \ + VIEW_OPTION_CHECK_OPTION_CASCADED) /* * RelationIsValid @@ -426,10 +457,24 @@ typedef struct ViewOptions /* * RelationGetNumberOfAttributes - * Returns the number of attributes in a relation. + * Returns the total number of attributes in a relation. */ #define RelationGetNumberOfAttributes(relation) ((relation)->rd_rel->relnatts) +/* + * IndexRelationGetNumberOfAttributes + * Returns the number of attributes in an index. + */ +#define IndexRelationGetNumberOfAttributes(relation) \ + ((relation)->rd_index->indnatts) + +/* + * IndexRelationGetNumberOfKeyAttributes + * Returns the number of key attributes in an index. + */ +#define IndexRelationGetNumberOfKeyAttributes(relation) \ + ((relation)->rd_index->indnkeyatts) + /* * RelationGetDescr * Returns tuple descriptor for a relation. @@ -454,13 +499,12 @@ typedef struct ViewOptions /* * RelationIsMapped - * True if the relation uses the relfilenode map. - * - * NB: this is only meaningful for relkinds that have storage, else it - * will misleadingly say "true". + * True if the relation uses the relfilenode map. Note multiple eval + * of argument! */ #define RelationIsMapped(relation) \ - ((relation)->rd_rel->relfilenode == InvalidOid) + (RELKIND_HAS_STORAGE((relation)->rd_rel->relkind) && \ + ((relation)->rd_rel->relfilenode == InvalidOid)) /* * RelationOpenSmgr @@ -510,9 +554,16 @@ typedef struct ViewOptions /* * RelationNeedsWAL * True if relation needs WAL. + * + * Returns false if wal_level = minimal and this relation is created or + * truncated in the current transaction. See "Skipping WAL for New + * RelFileNode" in src/backend/access/transam/README. */ -#define RelationNeedsWAL(relation) \ - ((relation)->rd_rel->relpersistence == RELPERSISTENCE_PERMANENT) +#define RelationNeedsWAL(relation) \ + ((relation)->rd_rel->relpersistence == RELPERSISTENCE_PERMANENT && \ + (XLogIsNeeded() || \ + (relation->rd_createSubid == InvalidSubTransactionId && \ + relation->rd_firstRelfilenodeSubid == InvalidSubTransactionId))) /* * RelationUsesLocalBuffers @@ -586,63 +637,8 @@ typedef struct ViewOptions RelationNeedsWAL(relation) && \ !IsCatalogRelation(relation)) -/* - * RelationGetPartitionKey - * Returns the PartitionKey of a relation - */ -#define RelationGetPartitionKey(relation) ((relation)->rd_partkey) - -/* - * PartitionKey inquiry functions - */ -static inline int -get_partition_strategy(PartitionKey key) -{ - return key->strategy; -} - -static inline int -get_partition_natts(PartitionKey key) -{ - return key->partnatts; -} - -static inline List * -get_partition_exprs(PartitionKey key) -{ - return key->partexprs; -} - -/* - * PartitionKey inquiry functions - one column - */ -static inline int16 -get_partition_col_attnum(PartitionKey key, int col) -{ - return key->partattrs[col]; -} - -static inline Oid -get_partition_col_typid(PartitionKey key, int col) -{ - return key->parttypid[col]; -} - -static inline int32 -get_partition_col_typmod(PartitionKey key, int col) -{ - return key->parttypmod[col]; -} - -/* - * RelationGetPartitionDesc - * Returns partition descriptor for a relation. - */ -#define RelationGetPartitionDesc(relation) ((relation)->rd_partdesc) - /* routines in utils/cache/relcache.c */ extern void RelationIncrementReferenceCount(Relation rel); extern void RelationDecrementReferenceCount(Relation rel); -extern List *RelationGetRepsetList(Relation rel); #endif /* REL_H */ diff --git a/parser/include/utils/relcache.h b/parser/include/utils/relcache.h index e2207ccd..9a85b7dd 100644 --- a/parser/include/utils/relcache.h +++ b/parser/include/utils/relcache.h @@ -4,7 +4,7 @@ * Relation descriptor cache definitions. * * - * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/utils/relcache.h @@ -14,10 +14,16 @@ #ifndef RELCACHE_H #define RELCACHE_H +#include "postgres.h" #include "access/tupdesc.h" #include "nodes/bitmapset.h" +/* + * Name of relcache init file(s), used to speed up backend startup + */ +#define RELCACHE_INIT_FILENAME "pg_internal.init" + typedef struct RelationData *Relation; /* ---------------- @@ -40,12 +46,13 @@ extern void RelationClose(Relation relation); extern List *RelationGetFKeyList(Relation relation); extern List *RelationGetIndexList(Relation relation); extern List *RelationGetStatExtList(Relation relation); -extern Oid RelationGetOidIndex(Relation relation); extern Oid RelationGetPrimaryKeyIndex(Relation relation); extern Oid RelationGetReplicaIndex(Relation relation); extern List *RelationGetIndexExpressions(Relation relation); extern List *RelationGetDummyIndexExpressions(Relation relation); extern List *RelationGetIndexPredicate(Relation relation); +extern Datum *RelationGetIndexRawAttOptions(Relation relation); +extern bytea **RelationGetIndexAttOptions(Relation relation, bool copy); typedef enum IndexAttrBitmapKind { @@ -56,15 +63,12 @@ typedef enum IndexAttrBitmapKind } IndexAttrBitmapKind; extern Bitmapset *RelationGetIndexAttrBitmap(Relation relation, - IndexAttrBitmapKind keyAttrs); + IndexAttrBitmapKind attrKind); extern void RelationGetExclusionInfo(Relation indexRelation, - Oid **operators, - Oid **procs, - uint16 **strategies); - -extern void RelationSetIndexList(Relation relation, - List *indexIds, Oid oidIndex); + Oid **operators, + Oid **procs, + uint16 **strategies); extern void RelationInitIndexAccessInfo(Relation relation); @@ -72,6 +76,8 @@ extern void RelationInitIndexAccessInfo(Relation relation); struct PublicationActions; extern struct PublicationActions *GetRelationPublicationActions(Relation relation); +extern void RelationInitTableAccessMethod(Relation relation); + /* * Routines to support ereport() reports of relation-related errors */ @@ -91,21 +97,22 @@ extern void RelationCacheInitializePhase3(void); * Routine to create a relcache entry for an about-to-be-created relation */ extern Relation RelationBuildLocalRelation(const char *relname, - Oid relnamespace, - TupleDesc tupDesc, - Oid relid, - Oid relfilenode, - Oid reltablespace, - bool shared_relation, - bool mapped_relation, - char relpersistence, - char relkind); + Oid relnamespace, + TupleDesc tupDesc, + Oid relid, + Oid accessmtd, + Oid relfilenode, + Oid reltablespace, + bool shared_relation, + bool mapped_relation, + char relpersistence, + char relkind); /* - * Routine to manage assignment of new relfilenode to a relation + * Routines to manage assignment of new relfilenode to a relation */ -extern void RelationSetNewRelfilenode(Relation relation, char persistence, - TransactionId freezeXid, MultiXactId minmulti); +extern void RelationSetNewRelfilenode(Relation relation, char persistence); +extern void RelationAssumeNewRelfilenode(Relation relation); /* * Routines for flushing/rebuilding relcache entries in various scenarios @@ -118,9 +125,14 @@ extern void RelationCacheInvalidate(void); extern void RelationCloseSmgrByOid(Oid relationId); +#ifdef USE_ASSERT_CHECKING +extern void AssertPendingSyncs_RelationCache(void); +#else +#define AssertPendingSyncs_RelationCache() do {} while (0) +#endif extern void AtEOXact_RelationCache(bool isCommit); extern void AtEOSubXact_RelationCache(bool isCommit, SubTransactionId mySubid, - SubTransactionId parentSubid); + SubTransactionId parentSubid); /* * Routines to help manage rebuilding of relcache init files diff --git a/parser/include/utils/reltrigger.h b/parser/include/utils/reltrigger.h index 2169b030..b22acb03 100644 --- a/parser/include/utils/reltrigger.h +++ b/parser/include/utils/reltrigger.h @@ -4,7 +4,7 @@ * POSTGRES relation trigger definitions. * * - * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/utils/reltrigger.h @@ -29,6 +29,7 @@ typedef struct Trigger int16 tgtype; char tgenabled; bool tgisinternal; + bool tgisclone; Oid tgconstrrelid; Oid tgconstrindid; Oid tgconstraint; diff --git a/parser/include/utils/resowner.h b/parser/include/utils/resowner.h index 07d30d93..878f39cc 100644 --- a/parser/include/utils/resowner.h +++ b/parser/include/utils/resowner.h @@ -9,7 +9,7 @@ * See utils/resowner/README for more info. * * - * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/utils/resowner.h @@ -33,6 +33,7 @@ typedef struct ResourceOwnerData *ResourceOwner; extern PGDLLIMPORT ResourceOwner CurrentResourceOwner; extern PGDLLIMPORT ResourceOwner CurTransactionResourceOwner; extern PGDLLIMPORT ResourceOwner TopTransactionResourceOwner; +extern PGDLLIMPORT ResourceOwner AuxProcessResourceOwner; /* * Resource releasing is done in three phases: pre-locks, locks, and @@ -65,18 +66,21 @@ typedef void (*ResourceReleaseCallback) (ResourceReleasePhase phase, /* generic routines */ extern ResourceOwner ResourceOwnerCreate(ResourceOwner parent, - const char *name); + const char *name); extern void ResourceOwnerRelease(ResourceOwner owner, - ResourceReleasePhase phase, - bool isCommit, - bool isTopLevel); + ResourceReleasePhase phase, + bool isCommit, + bool isTopLevel); +extern void ResourceOwnerReleaseAllPlanCacheRefs(ResourceOwner owner); extern void ResourceOwnerDelete(ResourceOwner owner); extern ResourceOwner ResourceOwnerGetParent(ResourceOwner owner); extern void ResourceOwnerNewParent(ResourceOwner owner, - ResourceOwner newparent); + ResourceOwner newparent); extern void RegisterResourceReleaseCallback(ResourceReleaseCallback callback, - void *arg); + void *arg); extern void UnregisterResourceReleaseCallback(ResourceReleaseCallback callback, - void *arg); + void *arg); +extern void CreateAuxProcessResourceOwner(void); +extern void ReleaseAuxProcessResources(bool isCommit); #endif /* RESOWNER_H */ diff --git a/parser/include/utils/rls.h b/parser/include/utils/rls.h index f9780ad0..49542f3a 100644 --- a/parser/include/utils/rls.h +++ b/parser/include/utils/rls.h @@ -4,7 +4,7 @@ * Header file for Row Level Security (RLS) utility commands to be used * with the rowsecurity feature. * - * Copyright (c) 2007-2017, PostgreSQL Global Development Group + * Copyright (c) 2007-2020, PostgreSQL Global Development Group * * src/include/utils/rls.h * diff --git a/parser/include/utils/ruleutils.h b/parser/include/utils/ruleutils.h index e9c51938..8306c760 100644 --- a/parser/include/utils/ruleutils.h +++ b/parser/include/utils/ruleutils.h @@ -3,7 +3,7 @@ * ruleutils.h * Declarations for ruleutils.c * - * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/utils/ruleutils.h @@ -17,22 +17,28 @@ #include "nodes/parsenodes.h" #include "nodes/pg_list.h" +struct Plan; /* avoid including plannodes.h here */ +struct PlannedStmt; + extern char *pg_get_indexdef_string(Oid indexrelid); extern char *pg_get_indexdef_columns(Oid indexrelid, bool pretty); extern char *pg_get_partkeydef_columns(Oid relid, bool pretty); +extern char *pg_get_partconstrdef_string(Oid partitionId, char *aliasname); extern char *pg_get_constraintdef_command(Oid constraintId); extern char *deparse_expression(Node *expr, List *dpcontext, - bool forceprefix, bool showimplicit); + bool forceprefix, bool showimplicit); extern List *deparse_context_for(const char *aliasname, Oid relid); -extern List *deparse_context_for_plan_rtable(List *rtable, List *rtable_names); -extern List *set_deparse_context_planstate(List *dpcontext, - Node *planstate, List *ancestors); +extern List *deparse_context_for_plan_tree(struct PlannedStmt *pstmt, + List *rtable_names); +extern List *set_deparse_context_plan(List *dpcontext, + struct Plan *plan, List *ancestors); extern List *select_rtable_names_for_explain(List *rtable, - Bitmapset *rels_used); + Bitmapset *rels_used); extern char *generate_collation_name(Oid collid); +extern char *generate_opclass_name(Oid opclass); extern char *get_range_partbound_string(List *bound_datums); #endif /* RULEUTILS_H */ diff --git a/parser/include/utils/sharedtuplestore.h b/parser/include/utils/sharedtuplestore.h new file mode 100644 index 00000000..9754504c --- /dev/null +++ b/parser/include/utils/sharedtuplestore.h @@ -0,0 +1,61 @@ +/*------------------------------------------------------------------------- + * + * sharedtuplestore.h + * Simple mechanism for sharing tuples between backends. + * + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group + * Portions Copyright (c) 1994, Regents of the University of California + * + * src/include/utils/sharedtuplestore.h + * + *------------------------------------------------------------------------- + */ +#ifndef SHAREDTUPLESTORE_H +#define SHAREDTUPLESTORE_H + +#include "access/htup.h" +#include "storage/fd.h" +#include "storage/sharedfileset.h" + +struct SharedTuplestore; +typedef struct SharedTuplestore SharedTuplestore; + +struct SharedTuplestoreAccessor; +typedef struct SharedTuplestoreAccessor SharedTuplestoreAccessor; + +/* + * A flag indicating that the tuplestore will only be scanned once, so backing + * files can be unlinked early. + */ +#define SHARED_TUPLESTORE_SINGLE_PASS 0x01 + +extern size_t sts_estimate(int participants); + +extern SharedTuplestoreAccessor *sts_initialize(SharedTuplestore *sts, + int participants, + int my_participant_number, + size_t meta_data_size, + int flags, + SharedFileSet *fileset, + const char *name); + +extern SharedTuplestoreAccessor *sts_attach(SharedTuplestore *sts, + int my_participant_number, + SharedFileSet *fileset); + +extern void sts_end_write(SharedTuplestoreAccessor *accessor); + +extern void sts_reinitialize(SharedTuplestoreAccessor *accessor); + +extern void sts_begin_parallel_scan(SharedTuplestoreAccessor *accessor); + +extern void sts_end_parallel_scan(SharedTuplestoreAccessor *accessor); + +extern void sts_puttuple(SharedTuplestoreAccessor *accessor, + void *meta_data, + MinimalTuple tuple); + +extern MinimalTuple sts_parallel_scan_next(SharedTuplestoreAccessor *accessor, + void *meta_data); + +#endif /* SHAREDTUPLESTORE_H */ diff --git a/parser/include/utils/snapmgr.h b/parser/include/utils/snapmgr.h index 7b428fe9..ad7c15dc 100644 --- a/parser/include/utils/snapmgr.h +++ b/parser/include/utils/snapmgr.h @@ -3,7 +3,7 @@ * snapmgr.h * POSTGRES snapshot manager * - * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/utils/snapmgr.h @@ -13,7 +13,7 @@ #ifndef SNAPMGR_H #define SNAPMGR_H -#include "fmgr.h" +#include "access/transam.h" #include "utils/relcache.h" #include "utils/resowner.h" #include "utils/snapshot.h" @@ -37,7 +37,7 @@ */ #define RelationAllowsEarlyPruning(rel) \ ( \ - RelationNeedsWAL(rel) \ + (rel)->rd_rel->relpersistence == RELPERSISTENCE_PERMANENT \ && !IsCatalogRelation(rel) \ && !RelationIsAccessibleInLogicalDecoding(rel) \ ) @@ -60,6 +60,45 @@ extern PGDLLIMPORT TransactionId RecentXmin; extern PGDLLIMPORT TransactionId RecentGlobalXmin; extern PGDLLIMPORT TransactionId RecentGlobalDataXmin; +/* Variables representing various special snapshot semantics */ +extern PGDLLIMPORT SnapshotData SnapshotSelfData; +extern PGDLLIMPORT SnapshotData SnapshotAnyData; +extern PGDLLIMPORT SnapshotData CatalogSnapshotData; + +#define SnapshotSelf (&SnapshotSelfData) +#define SnapshotAny (&SnapshotAnyData) + +/* + * We don't provide a static SnapshotDirty variable because it would be + * non-reentrant. Instead, users of that snapshot type should declare a + * local variable of type SnapshotData, and initialize it with this macro. + */ +#define InitDirtySnapshot(snapshotdata) \ + ((snapshotdata).snapshot_type = SNAPSHOT_DIRTY) + +/* + * Similarly, some initialization is required for a NonVacuumable snapshot. + * The caller must supply the xmin horizon to use (e.g., RecentGlobalXmin). + */ +#define InitNonVacuumableSnapshot(snapshotdata, xmin_horizon) \ + ((snapshotdata).snapshot_type = SNAPSHOT_NON_VACUUMABLE, \ + (snapshotdata).xmin = (xmin_horizon)) + +/* + * Similarly, some initialization is required for SnapshotToast. We need + * to set lsn and whenTaken correctly to support snapshot_too_old. + */ +#define InitToastSnapshot(snapshotdata, l, w) \ + ((snapshotdata).snapshot_type = SNAPSHOT_TOAST, \ + (snapshotdata).lsn = (l), \ + (snapshotdata).whenTaken = (w)) + +/* This macro encodes the knowledge of which snapshots are MVCC-safe */ +#define IsMVCCSnapshot(snapshot) \ + ((snapshot)->snapshot_type == SNAPSHOT_MVCC || \ + (snapshot)->snapshot_type == SNAPSHOT_HISTORIC_MVCC) + + extern Snapshot GetTransactionSnapshot(void); extern Snapshot GetLatestSnapshot(void); extern void SnapshotSetCommandId(CommandId curcid); @@ -82,6 +121,8 @@ extern void UnregisterSnapshot(Snapshot snapshot); extern Snapshot RegisterSnapshotOnOwner(Snapshot snapshot, ResourceOwner owner); extern void UnregisterSnapshotFromOwner(Snapshot snapshot, ResourceOwner owner); +extern FullTransactionId GetFullRecentGlobalXmin(void); + extern void AtSubCommit_Snapshot(int level); extern void AtSubAbort_Snapshot(int level); extern void AtEOXact_Snapshot(bool isCommit, bool resetXmin); @@ -91,12 +132,17 @@ extern bool XactHasExportedSnapshots(void); extern void DeleteAllExportedSnapshotFiles(void); extern bool ThereAreNoPriorRegisteredSnapshots(void); extern TransactionId TransactionIdLimitedForOldSnapshots(TransactionId recentXmin, - Relation relation); + Relation relation); extern void MaintainOldSnapshotTimeMapping(TimestampTz whenTaken, - TransactionId xmin); + TransactionId xmin); extern char *ExportSnapshot(Snapshot snapshot); +/* + * Utility functions for implementing visibility routines in table AMs. + */ +extern bool XidInMVCCSnapshot(TransactionId xid, Snapshot snapshot); + /* Support for catalog timetravel for logical decoding */ struct HTAB; extern struct HTAB *HistoricSnapshotGetTupleCids(void); diff --git a/parser/include/utils/snapshot.h b/parser/include/utils/snapshot.h index 074cc818..4796edb6 100644 --- a/parser/include/utils/snapshot.h +++ b/parser/include/utils/snapshot.h @@ -3,7 +3,7 @@ * snapshot.h * POSTGRES snapshot definition * - * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/utils/snapshot.h @@ -20,19 +20,108 @@ #include "storage/buf.h" +/* + * The different snapshot types. We use SnapshotData structures to represent + * both "regular" (MVCC) snapshots and "special" snapshots that have non-MVCC + * semantics. The specific semantics of a snapshot are encoded by its type. + * + * The behaviour of each type of snapshot should be documented alongside its + * enum value, best in terms that are not specific to an individual table AM. + * + * The reason the snapshot type rather than a callback as it used to be is + * that that allows to use the same snapshot for different table AMs without + * having one callback per AM. + */ +typedef enum SnapshotType +{ + /*------------------------------------------------------------------------- + * A tuple is visible iff the tuple is valid for the given MVCC snapshot. + * + * Here, we consider the effects of: + * - all transactions committed as of the time of the given snapshot + * - previous commands of this transaction + * + * Does _not_ include: + * - transactions shown as in-progress by the snapshot + * - transactions started after the snapshot was taken + * - changes made by the current command + * ------------------------------------------------------------------------- + */ + SNAPSHOT_MVCC = 0, + + /*------------------------------------------------------------------------- + * A tuple is visible iff the tuple is valid "for itself". + * + * Here, we consider the effects of: + * - all committed transactions (as of the current instant) + * - previous commands of this transaction + * - changes made by the current command + * + * Does _not_ include: + * - in-progress transactions (as of the current instant) + * ------------------------------------------------------------------------- + */ + SNAPSHOT_SELF, + + /* + * Any tuple is visible. + */ + SNAPSHOT_ANY, + + /* + * A tuple is visible iff the tuple is valid as a TOAST row. + */ + SNAPSHOT_TOAST, + + /*------------------------------------------------------------------------- + * A tuple is visible iff the tuple is valid including effects of open + * transactions. + * + * Here, we consider the effects of: + * - all committed and in-progress transactions (as of the current instant) + * - previous commands of this transaction + * - changes made by the current command + * + * This is essentially like SNAPSHOT_SELF as far as effects of the current + * transaction and committed/aborted xacts are concerned. However, it + * also includes the effects of other xacts still in progress. + * + * A special hack is that when a snapshot of this type is used to + * determine tuple visibility, the passed-in snapshot struct is used as an + * output argument to return the xids of concurrent xacts that affected + * the tuple. snapshot->xmin is set to the tuple's xmin if that is + * another transaction that's still in progress; or to + * InvalidTransactionId if the tuple's xmin is committed good, committed + * dead, or my own xact. Similarly for snapshot->xmax and the tuple's + * xmax. If the tuple was inserted speculatively, meaning that the + * inserter might still back down on the insertion without aborting the + * whole transaction, the associated token is also returned in + * snapshot->speculativeToken. See also InitDirtySnapshot(). + * ------------------------------------------------------------------------- + */ + SNAPSHOT_DIRTY, + + /* + * A tuple is visible iff it follows the rules of SNAPSHOT_MVCC, but + * supports being called in timetravel context (for decoding catalog + * contents in the context of logical decoding). + */ + SNAPSHOT_HISTORIC_MVCC, + + /* + * A tuple is visible iff the tuple might be visible to some transaction; + * false if it's surely dead to everyone, i.e., vacuumable. + * + * For visibility checks snapshot->min must have been set up with the xmin + * horizon to use. + */ + SNAPSHOT_NON_VACUUMABLE +} SnapshotType; + typedef struct SnapshotData *Snapshot; #define InvalidSnapshot ((Snapshot) NULL) -/* - * We use SnapshotData structures to represent both "regular" (MVCC) - * snapshots and "special" snapshots that have non-MVCC semantics. - * The specific semantics of a snapshot are encoded by the "satisfies" - * function. - */ -typedef bool (*SnapshotSatisfiesFunc) (HeapTuple htup, - Snapshot snapshot, Buffer buffer); - /* * Struct representing all kind of possible snapshots. * @@ -41,6 +130,7 @@ typedef bool (*SnapshotSatisfiesFunc) (HeapTuple htup, * * MVCC snapshots taken during recovery (in Hot-Standby mode) * * Historic MVCC snapshots used during logical decoding * * snapshots passed to HeapTupleSatisfiesDirty() + * * snapshots passed to HeapTupleSatisfiesNonVacuumable() * * snapshots used for SatisfiesAny, Toast, Self where no members are * accessed. * @@ -51,12 +141,13 @@ typedef bool (*SnapshotSatisfiesFunc) (HeapTuple htup, */ typedef struct SnapshotData { - SnapshotSatisfiesFunc satisfies; /* tuple test function */ + SnapshotType snapshot_type; /* type of snapshot */ /* * The remaining fields are used only for MVCC snapshots, and are normally * just zeroes in special snapshots. (But xmin and xmax are used - * specially by HeapTupleSatisfiesDirty.) + * specially by HeapTupleSatisfiesDirty, and xmin is used specially by + * HeapTupleSatisfiesNonVacuumable.) * * An MVCC snapshot can never see the effects of XIDs >= xmax. It can see * the effects of all older XIDs except those listed in the snapshot. xmin @@ -112,18 +203,4 @@ typedef struct SnapshotData XLogRecPtr lsn; /* position in the WAL stream when taken */ } SnapshotData; -/* - * Result codes for HeapTupleSatisfiesUpdate. This should really be in - * tqual.h, but we want to avoid including that file elsewhere. - */ -typedef enum -{ - HeapTupleMayBeUpdated, - HeapTupleInvisible, - HeapTupleSelfUpdated, - HeapTupleUpdated, - HeapTupleBeingUpdated, - HeapTupleWouldBlock /* can be returned by heap_tuple_lock */ -} HTSU_Result; - #endif /* SNAPSHOT_H */ diff --git a/parser/include/utils/sortsupport.h b/parser/include/utils/sortsupport.h index a7cacfa7..264aec82 100644 --- a/parser/include/utils/sortsupport.h +++ b/parser/include/utils/sortsupport.h @@ -42,7 +42,7 @@ * function for such cases, but probably not any other acceleration method. * * - * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/utils/sortsupport.h @@ -184,8 +184,8 @@ typedef struct SortSupportData /* * Full, authoritative comparator for key that an abbreviated * representation was generated for, used when an abbreviated comparison - * was inconclusive (by calling ApplySortComparatorFull()), or used to - * replace "comparator" when core system ultimately decides against + * was inconclusive (by calling ApplySortAbbrevFullComparator()), or used + * to replace "comparator" when core system ultimately decides against * abbreviation. */ int (*abbrev_full_comparator) (Datum x, Datum y, SortSupport ssup); @@ -221,7 +221,7 @@ ApplySortComparator(Datum datum1, bool isNull1, } else { - compare = (*ssup->comparator) (datum1, datum2, ssup); + compare = ssup->comparator(datum1, datum2, ssup); if (ssup->ssup_reverse) INVERT_COMPARE_RESULT(compare); } @@ -259,7 +259,7 @@ ApplySortAbbrevFullComparator(Datum datum1, bool isNull1, } else { - compare = (*ssup->abbrev_full_comparator) (datum1, datum2, ssup); + compare = ssup->abbrev_full_comparator(datum1, datum2, ssup); if (ssup->ssup_reverse) INVERT_COMPARE_RESULT(compare); } @@ -271,6 +271,6 @@ ApplySortAbbrevFullComparator(Datum datum1, bool isNull1, extern void PrepareSortSupportComparisonShim(Oid cmpFunc, SortSupport ssup); extern void PrepareSortSupportFromOrderingOp(Oid orderingOp, SortSupport ssup); extern void PrepareSortSupportFromIndexRel(Relation indexRel, int16 strategy, - SortSupport ssup); + SortSupport ssup); #endif /* SORTSUPPORT_H */ diff --git a/parser/include/utils/syscache.h b/parser/include/utils/syscache.h index 8352b40f..f27b73d7 100644 --- a/parser/include/utils/syscache.h +++ b/parser/include/utils/syscache.h @@ -6,7 +6,7 @@ * See also lsyscache.h, which provides convenience routines for * common cache-lookup operations. * - * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/utils/syscache.h @@ -86,6 +86,7 @@ enum SysCacheIdentifier REPLORIGNAME, RULERELNAME, SEQRELID, + STATEXTDATASTXOID, STATEXTNAMENSP, STATEXTOID, STATRELATTINH, @@ -116,31 +117,48 @@ extern void InitCatalogCache(void); extern void InitCatalogCachePhase2(void); extern HeapTuple SearchSysCache(int cacheId, - Datum key1, Datum key2, Datum key3, Datum key4); + Datum key1, Datum key2, Datum key3, Datum key4); + +/* + * The use of argument specific numbers is encouraged. They're faster, and + * insulates the caller from changes in the maximum number of keys. + */ +extern HeapTuple SearchSysCache1(int cacheId, + Datum key1); +extern HeapTuple SearchSysCache2(int cacheId, + Datum key1, Datum key2); +extern HeapTuple SearchSysCache3(int cacheId, + Datum key1, Datum key2, Datum key3); +extern HeapTuple SearchSysCache4(int cacheId, + Datum key1, Datum key2, Datum key3, Datum key4); + extern void ReleaseSysCache(HeapTuple tuple); /* convenience routines */ extern HeapTuple SearchSysCacheCopy(int cacheId, - Datum key1, Datum key2, Datum key3, Datum key4); + Datum key1, Datum key2, Datum key3, Datum key4); extern bool SearchSysCacheExists(int cacheId, - Datum key1, Datum key2, Datum key3, Datum key4); -extern Oid GetSysCacheOid(int cacheId, - Datum key1, Datum key2, Datum key3, Datum key4); + Datum key1, Datum key2, Datum key3, Datum key4); +extern Oid GetSysCacheOid(int cacheId, AttrNumber oidcol, + Datum key1, Datum key2, Datum key3, Datum key4); extern HeapTuple SearchSysCacheAttName(Oid relid, const char *attname); extern HeapTuple SearchSysCacheCopyAttName(Oid relid, const char *attname); extern bool SearchSysCacheExistsAttName(Oid relid, const char *attname); +extern HeapTuple SearchSysCacheAttNum(Oid relid, int16 attnum); +extern HeapTuple SearchSysCacheCopyAttNum(Oid relid, int16 attnum); + extern Datum SysCacheGetAttr(int cacheId, HeapTuple tup, - AttrNumber attributeNumber, bool *isNull); + AttrNumber attributeNumber, bool *isNull); extern uint32 GetSysCacheHashValue(int cacheId, - Datum key1, Datum key2, Datum key3, Datum key4); + Datum key1, Datum key2, Datum key3, Datum key4); /* list-search interface. Users of this must import catcache.h too */ struct catclist; extern struct catclist *SearchSysCacheList(int cacheId, int nkeys, - Datum key1, Datum key2, Datum key3, Datum key4); + Datum key1, Datum key2, Datum key3); extern void SysCacheInvalidate(int cacheId, uint32 hashValue); @@ -153,15 +171,6 @@ extern bool RelationSupportsSysCache(Oid relid); * functions is encouraged, as it insulates the caller from changes in the * maximum number of keys. */ -#define SearchSysCache1(cacheId, key1) \ - SearchSysCache(cacheId, key1, 0, 0, 0) -#define SearchSysCache2(cacheId, key1, key2) \ - SearchSysCache(cacheId, key1, key2, 0, 0) -#define SearchSysCache3(cacheId, key1, key2, key3) \ - SearchSysCache(cacheId, key1, key2, key3, 0) -#define SearchSysCache4(cacheId, key1, key2, key3, key4) \ - SearchSysCache(cacheId, key1, key2, key3, key4) - #define SearchSysCacheCopy1(cacheId, key1) \ SearchSysCacheCopy(cacheId, key1, 0, 0, 0) #define SearchSysCacheCopy2(cacheId, key1, key2) \ @@ -180,14 +189,14 @@ extern bool RelationSupportsSysCache(Oid relid); #define SearchSysCacheExists4(cacheId, key1, key2, key3, key4) \ SearchSysCacheExists(cacheId, key1, key2, key3, key4) -#define GetSysCacheOid1(cacheId, key1) \ - GetSysCacheOid(cacheId, key1, 0, 0, 0) -#define GetSysCacheOid2(cacheId, key1, key2) \ - GetSysCacheOid(cacheId, key1, key2, 0, 0) -#define GetSysCacheOid3(cacheId, key1, key2, key3) \ - GetSysCacheOid(cacheId, key1, key2, key3, 0) -#define GetSysCacheOid4(cacheId, key1, key2, key3, key4) \ - GetSysCacheOid(cacheId, key1, key2, key3, key4) +#define GetSysCacheOid1(cacheId, oidcol, key1) \ + GetSysCacheOid(cacheId, oidcol, key1, 0, 0, 0) +#define GetSysCacheOid2(cacheId, oidcol, key1, key2) \ + GetSysCacheOid(cacheId, oidcol, key1, key2, 0, 0) +#define GetSysCacheOid3(cacheId, oidcol, key1, key2, key3) \ + GetSysCacheOid(cacheId, oidcol, key1, key2, key3, 0) +#define GetSysCacheOid4(cacheId, oidcol, key1, key2, key3, key4) \ + GetSysCacheOid(cacheId, oidcol, key1, key2, key3, key4) #define GetSysCacheHashValue1(cacheId, key1) \ GetSysCacheHashValue(cacheId, key1, 0, 0, 0) @@ -199,13 +208,11 @@ extern bool RelationSupportsSysCache(Oid relid); GetSysCacheHashValue(cacheId, key1, key2, key3, key4) #define SearchSysCacheList1(cacheId, key1) \ - SearchSysCacheList(cacheId, 1, key1, 0, 0, 0) + SearchSysCacheList(cacheId, 1, key1, 0, 0) #define SearchSysCacheList2(cacheId, key1, key2) \ - SearchSysCacheList(cacheId, 2, key1, key2, 0, 0) + SearchSysCacheList(cacheId, 2, key1, key2, 0) #define SearchSysCacheList3(cacheId, key1, key2, key3) \ - SearchSysCacheList(cacheId, 3, key1, key2, key3, 0) -#define SearchSysCacheList4(cacheId, key1, key2, key3, key4) \ - SearchSysCacheList(cacheId, 4, key1, key2, key3, key4) + SearchSysCacheList(cacheId, 3, key1, key2, key3) #define ReleaseSysCacheList(x) ReleaseCatCacheList(x) diff --git a/parser/include/utils/timeout.h b/parser/include/utils/timeout.h index 5a2efc0d..83a15f67 100644 --- a/parser/include/utils/timeout.h +++ b/parser/include/utils/timeout.h @@ -4,7 +4,7 @@ * Routines to multiplex SIGALRM interrupts for multiple timeout reasons. * * - * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/utils/timeout.h @@ -80,6 +80,7 @@ extern void disable_timeouts(const DisableTimeoutParams *timeouts, int count); extern void disable_all_timeouts(bool keep_indicators); /* accessors */ +extern bool get_timeout_active(TimeoutId id); extern bool get_timeout_indicator(TimeoutId id, bool reset_indicator); extern TimestampTz get_timeout_start_time(TimeoutId id); extern TimestampTz get_timeout_finish_time(TimeoutId id); diff --git a/parser/include/utils/timestamp.h b/parser/include/utils/timestamp.h index 8de4f9dc..d45bf2bb 100644 --- a/parser/include/utils/timestamp.h +++ b/parser/include/utils/timestamp.h @@ -3,7 +3,7 @@ * timestamp.h * Definitions for the SQL "timestamp" and "interval" types. * - * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/utils/timestamp.h @@ -71,12 +71,12 @@ extern TimestampTz GetCurrentTimestamp(void); extern TimestampTz GetSQLCurrentTimestamp(int32 typmod); extern Timestamp GetSQLLocalTimestamp(int32 typmod); extern void TimestampDifference(TimestampTz start_time, TimestampTz stop_time, - long *secs, int *microsecs); + long *secs, int *microsecs); extern long TimestampDifferenceMilliseconds(TimestampTz start_time, TimestampTz stop_time); extern bool TimestampDifferenceExceeds(TimestampTz start_time, - TimestampTz stop_time, - int msec); + TimestampTz stop_time, + int msec); extern TimestampTz time_t_to_timestamptz(pg_time_t tm); extern pg_time_t timestamptz_to_time_t(TimestampTz t); @@ -84,8 +84,8 @@ extern pg_time_t timestamptz_to_time_t(TimestampTz t); extern const char *timestamptz_to_str(TimestampTz t); extern int tm2timestamp(struct pg_tm *tm, fsec_t fsec, int *tzp, Timestamp *dt); -extern int timestamp2tm(Timestamp dt, int *tzp, struct pg_tm *tm, - fsec_t *fsec, const char **tzn, pg_tz *attimezone); +extern int timestamp2tm(Timestamp dt, int *tzp, struct pg_tm *tm, + fsec_t *fsec, const char **tzn, pg_tz *attimezone); extern void dt2time(Timestamp dt, int *hour, int *min, int *sec, fsec_t *fsec); extern int interval2tm(Interval span, struct pg_tm *tm, fsec_t *fsec); @@ -99,6 +99,11 @@ extern int timestamp_cmp_internal(Timestamp dt1, Timestamp dt2); /* timestamp comparison works for timestamptz also */ #define timestamptz_cmp_internal(dt1,dt2) timestamp_cmp_internal(dt1, dt2) +extern TimestampTz timestamp2timestamptz_opt_overflow(Timestamp timestamp, + int *overflow); +extern int32 timestamp_cmp_timestamptz_internal(Timestamp timestampVal, + TimestampTz dt2); + extern int isoweek2j(int year, int week); extern void isoweek2date(int woy, int *year, int *mon, int *mday); extern void isoweekdate2date(int isoweek, int wday, int *year, int *mon, int *mday); @@ -106,4 +111,6 @@ extern int date2isoweek(int year, int mon, int mday); extern int date2isoyear(int year, int mon, int mday); extern int date2isoyearday(int year, int mon, int mday); +extern bool TimestampTimestampTzRequiresRewrite(void); + #endif /* TIMESTAMP_H */ diff --git a/parser/include/utils/tqual.h b/parser/include/utils/tqual.h deleted file mode 100644 index 39607938..00000000 --- a/parser/include/utils/tqual.h +++ /dev/null @@ -1,113 +0,0 @@ -/*------------------------------------------------------------------------- - * - * tqual.h - * POSTGRES "time qualification" definitions, ie, tuple visibility rules. - * - * Should be moved/renamed... - vadim 07/28/98 - * - * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group - * Portions Copyright (c) 1994, Regents of the University of California - * - * src/include/utils/tqual.h - * - *------------------------------------------------------------------------- - */ -#ifndef TQUAL_H -#define TQUAL_H - -#include "utils/snapshot.h" -#include "access/xlogdefs.h" - - -/* Static variables representing various special snapshot semantics */ -extern PGDLLIMPORT SnapshotData SnapshotSelfData; -extern PGDLLIMPORT SnapshotData SnapshotAnyData; -extern PGDLLIMPORT SnapshotData CatalogSnapshotData; - -#define SnapshotSelf (&SnapshotSelfData) -#define SnapshotAny (&SnapshotAnyData) - -/* This macro encodes the knowledge of which snapshots are MVCC-safe */ -#define IsMVCCSnapshot(snapshot) \ - ((snapshot)->satisfies == HeapTupleSatisfiesMVCC || \ - (snapshot)->satisfies == HeapTupleSatisfiesHistoricMVCC) - -/* - * HeapTupleSatisfiesVisibility - * True iff heap tuple satisfies a time qual. - * - * Notes: - * Assumes heap tuple is valid. - * Beware of multiple evaluations of snapshot argument. - * Hint bits in the HeapTuple's t_infomask may be updated as a side effect; - * if so, the indicated buffer is marked dirty. - */ -#define HeapTupleSatisfiesVisibility(tuple, snapshot, buffer) \ - ((*(snapshot)->satisfies) (tuple, snapshot, buffer)) - -/* Result codes for HeapTupleSatisfiesVacuum */ -typedef enum -{ - HEAPTUPLE_DEAD, /* tuple is dead and deletable */ - HEAPTUPLE_LIVE, /* tuple is live (committed, no deleter) */ - HEAPTUPLE_RECENTLY_DEAD, /* tuple is dead, but not deletable yet */ - HEAPTUPLE_INSERT_IN_PROGRESS, /* inserting xact is still in progress */ - HEAPTUPLE_DELETE_IN_PROGRESS /* deleting xact is still in progress */ -} HTSV_Result; - -/* These are the "satisfies" test routines for the various snapshot types */ -extern bool HeapTupleSatisfiesMVCC(HeapTuple htup, - Snapshot snapshot, Buffer buffer); -extern bool HeapTupleSatisfiesSelf(HeapTuple htup, - Snapshot snapshot, Buffer buffer); -extern bool HeapTupleSatisfiesAny(HeapTuple htup, - Snapshot snapshot, Buffer buffer); -extern bool HeapTupleSatisfiesToast(HeapTuple htup, - Snapshot snapshot, Buffer buffer); -extern bool HeapTupleSatisfiesDirty(HeapTuple htup, - Snapshot snapshot, Buffer buffer); -extern bool HeapTupleSatisfiesHistoricMVCC(HeapTuple htup, - Snapshot snapshot, Buffer buffer); - -/* Special "satisfies" routines with different APIs */ -extern HTSU_Result HeapTupleSatisfiesUpdate(HeapTuple htup, - CommandId curcid, Buffer buffer); -extern HTSV_Result HeapTupleSatisfiesVacuum(HeapTuple htup, - TransactionId OldestXmin, Buffer buffer); -extern bool HeapTupleIsSurelyDead(HeapTuple htup, - TransactionId OldestXmin); -extern bool XidInMVCCSnapshot(TransactionId xid, Snapshot snapshot); - -extern void HeapTupleSetHintBits(HeapTupleHeader tuple, Buffer buffer, - uint16 infomask, TransactionId xid); -extern bool HeapTupleHeaderIsOnlyLocked(HeapTupleHeader tuple); - -/* - * To avoid leaking too much knowledge about reorderbuffer implementation - * details this is implemented in reorderbuffer.c not tqual.c. - */ -struct HTAB; -extern bool ResolveCminCmaxDuringDecoding(struct HTAB *tuplecid_data, - Snapshot snapshot, - HeapTuple htup, - Buffer buffer, - CommandId *cmin, CommandId *cmax); - -/* - * We don't provide a static SnapshotDirty variable because it would be - * non-reentrant. Instead, users of that snapshot type should declare a - * local variable of type SnapshotData, and initialize it with this macro. - */ -#define InitDirtySnapshot(snapshotdata) \ - ((snapshotdata).satisfies = HeapTupleSatisfiesDirty) - -/* - * Similarly, some initialization is required for SnapshotToast. We need - * to set lsn and whenTaken correctly to support snapshot_too_old. - */ -#define InitToastSnapshot(snapshotdata, l, w) \ - ((snapshotdata).satisfies = HeapTupleSatisfiesToast, \ - (snapshotdata).lsn = (l), \ - (snapshotdata).whenTaken = (w)) - -#endif /* TQUAL_H */ diff --git a/parser/include/utils/tuplesort.h b/parser/include/utils/tuplesort.h index 28c168a8..9e76666f 100644 --- a/parser/include/utils/tuplesort.h +++ b/parser/include/utils/tuplesort.h @@ -8,9 +8,10 @@ * if necessary). It works efficiently for both small and large amounts * of data. Small amounts are sorted in-memory using qsort(). Large * amounts are sorted using temporary files and a standard external sort - * algorithm. + * algorithm. Parallel sorts use a variant of this external sort + * algorithm, and are typically only used for large amounts of data. * - * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/utils/tuplesort.h @@ -22,14 +23,76 @@ #include "access/itup.h" #include "executor/tuptable.h" -#include "fmgr.h" +#include "storage/dsm.h" #include "utils/relcache.h" -/* Tuplesortstate is an opaque type whose details are not known outside - * tuplesort.c. +/* + * Tuplesortstate and Sharedsort are opaque types whose details are not + * known outside tuplesort.c. */ typedef struct Tuplesortstate Tuplesortstate; +typedef struct Sharedsort Sharedsort; + +/* + * Tuplesort parallel coordination state, allocated by each participant in + * local memory. Participant caller initializes everything. See usage notes + * below. + */ +typedef struct SortCoordinateData +{ + /* Worker process? If not, must be leader. */ + bool isWorker; + + /* + * Leader-process-passed number of participants known launched (workers + * set this to -1). Includes state within leader needed for it to + * participate as a worker, if any. + */ + int nParticipants; + + /* Private opaque state (points to shared memory) */ + Sharedsort *sharedsort; +} SortCoordinateData; + +typedef struct SortCoordinateData *SortCoordinate; + +/* + * Data structures for reporting sort statistics. Note that + * TuplesortInstrumentation can't contain any pointers because we + * sometimes put it in shared memory. + * + * The parallel-sort infrastructure relies on having a zero TuplesortMethod + * to indicate that a worker never did anything, so we assign zero to + * SORT_TYPE_STILL_IN_PROGRESS. The other values of this enum can be + * OR'ed together to represent a situation where different workers used + * different methods, so we need a separate bit for each one. Keep the + * NUM_TUPLESORTMETHODS constant in sync with the number of bits! + */ +typedef enum +{ + SORT_TYPE_STILL_IN_PROGRESS = 0, + SORT_TYPE_TOP_N_HEAPSORT = 1 << 0, + SORT_TYPE_QUICKSORT = 1 << 1, + SORT_TYPE_EXTERNAL_SORT = 1 << 2, + SORT_TYPE_EXTERNAL_MERGE = 1 << 3 +} TuplesortMethod; + +#define NUM_TUPLESORTMETHODS 4 + +typedef enum +{ + SORT_SPACE_TYPE_DISK, + SORT_SPACE_TYPE_MEMORY +} TuplesortSpaceType; + +typedef struct TuplesortInstrumentation +{ + TuplesortMethod sortMethod; /* sort algorithm used */ + TuplesortSpaceType spaceType; /* type of space spaceUsed represents */ + int64 spaceUsed; /* space consumption, in kB */ +} TuplesortInstrumentation; + /* * We provide multiple interfaces to what is essentially the same code, @@ -38,6 +101,8 @@ typedef struct Tuplesortstate Tuplesortstate; * sorting HeapTuples and two more for sorting IndexTuples. Yet another * API supports sorting bare Datums. * + * Serial sort callers should pass NULL for their coordinate argument. + * * The "heap" API actually stores/sorts MinimalTuples, which means it doesn't * preserve the system columns (tuple identity and transaction visibility * info). The sort keys are specified by column numbers within the tuples @@ -56,67 +121,153 @@ typedef struct Tuplesortstate Tuplesortstate; * * The "index_hash" API is similar to index_btree, but the tuples are * actually sorted by their hash codes not the raw data. + * + * Parallel sort callers are required to coordinate multiple tuplesort states + * in a leader process and one or more worker processes. The leader process + * must launch workers, and have each perform an independent "partial" + * tuplesort, typically fed by the parallel heap interface. The leader later + * produces the final output (internally, it merges runs output by workers). + * + * Callers must do the following to perform a sort in parallel using multiple + * worker processes: + * + * 1. Request tuplesort-private shared memory for n workers. Use + * tuplesort_estimate_shared() to get the required size. + * 2. Have leader process initialize allocated shared memory using + * tuplesort_initialize_shared(). Launch workers. + * 3. Initialize a coordinate argument within both the leader process, and + * for each worker process. This has a pointer to the shared + * tuplesort-private structure, as well as some caller-initialized fields. + * Leader's coordinate argument reliably indicates number of workers + * launched (this is unused by workers). + * 4. Begin a tuplesort using some appropriate tuplesort_begin* routine, + * (passing the coordinate argument) within each worker. The workMem + * arguments need not be identical. All other arguments should match + * exactly, though. + * 5. tuplesort_attach_shared() should be called by all workers. Feed tuples + * to each worker, and call tuplesort_performsort() within each when input + * is exhausted. + * 6. Call tuplesort_end() in each worker process. Worker processes can shut + * down once tuplesort_end() returns. + * 7. Begin a tuplesort in the leader using the same tuplesort_begin* + * routine, passing a leader-appropriate coordinate argument (this can + * happen as early as during step 3, actually, since we only need to know + * the number of workers successfully launched). The leader must now wait + * for workers to finish. Caller must use own mechanism for ensuring that + * next step isn't reached until all workers have called and returned from + * tuplesort_performsort(). (Note that it's okay if workers have already + * also called tuplesort_end() by then.) + * 8. Call tuplesort_performsort() in leader. Consume output using the + * appropriate tuplesort_get* routine. Leader can skip this step if + * tuplesort turns out to be unnecessary. + * 9. Call tuplesort_end() in leader. + * + * This division of labor assumes nothing about how input tuples are produced, + * but does require that caller combine the state of multiple tuplesorts for + * any purpose other than producing the final output. For example, callers + * must consider that tuplesort_get_stats() reports on only one worker's role + * in a sort (or the leader's role), and not statistics for the sort as a + * whole. + * + * Note that callers may use the leader process to sort runs as if it was an + * independent worker process (prior to the process performing a leader sort + * to produce the final sorted output). Doing so only requires a second + * "partial" tuplesort within the leader process, initialized like that of a + * worker process. The steps above don't touch on this directly. The only + * difference is that the tuplesort_attach_shared() call is never needed within + * leader process, because the backend as a whole holds the shared fileset + * reference. A worker Tuplesortstate in leader is expected to do exactly the + * same amount of total initial processing work as a worker process + * Tuplesortstate, since the leader process has nothing else to do before + * workers finish. + * + * Note that only a very small amount of memory will be allocated prior to + * the leader state first consuming input, and that workers will free the + * vast majority of their memory upon returning from tuplesort_performsort(). + * Callers can rely on this to arrange for memory to be used in a way that + * respects a workMem-style budget across an entire parallel sort operation. + * + * Callers are responsible for parallel safety in general. However, they + * can at least rely on there being no parallel safety hazards within + * tuplesort, because tuplesort thinks of the sort as several independent + * sorts whose results are combined. Since, in general, the behavior of + * sort operators is immutable, caller need only worry about the parallel + * safety of whatever the process is through which input tuples are + * generated (typically, caller uses a parallel heap scan). */ extern Tuplesortstate *tuplesort_begin_heap(TupleDesc tupDesc, - int nkeys, AttrNumber *attNums, - Oid *sortOperators, Oid *sortCollations, - bool *nullsFirstFlags, - int workMem, bool randomAccess); + int nkeys, AttrNumber *attNums, + Oid *sortOperators, Oid *sortCollations, + bool *nullsFirstFlags, + int workMem, SortCoordinate coordinate, + bool randomAccess); extern Tuplesortstate *tuplesort_begin_cluster(TupleDesc tupDesc, - Relation indexRel, - int workMem, bool randomAccess); + Relation indexRel, int workMem, + SortCoordinate coordinate, bool randomAccess); extern Tuplesortstate *tuplesort_begin_index_btree(Relation heapRel, - Relation indexRel, - bool enforceUnique, - int workMem, bool randomAccess); + Relation indexRel, + bool enforceUnique, + int workMem, SortCoordinate coordinate, + bool randomAccess); extern Tuplesortstate *tuplesort_begin_index_hash(Relation heapRel, - Relation indexRel, - uint32 high_mask, - uint32 low_mask, - uint32 max_buckets, - int workMem, bool randomAccess); + Relation indexRel, + uint32 high_mask, + uint32 low_mask, + uint32 max_buckets, + int workMem, SortCoordinate coordinate, + bool randomAccess); extern Tuplesortstate *tuplesort_begin_datum(Oid datumType, - Oid sortOperator, Oid sortCollation, - bool nullsFirstFlag, - int workMem, bool randomAccess); + Oid sortOperator, Oid sortCollation, + bool nullsFirstFlag, + int workMem, SortCoordinate coordinate, + bool randomAccess); extern void tuplesort_set_bound(Tuplesortstate *state, int64 bound); +extern bool tuplesort_used_bound(Tuplesortstate *state); extern void tuplesort_puttupleslot(Tuplesortstate *state, - TupleTableSlot *slot); + TupleTableSlot *slot); extern void tuplesort_putheaptuple(Tuplesortstate *state, HeapTuple tup); extern void tuplesort_putindextuplevalues(Tuplesortstate *state, - Relation rel, ItemPointer self, - Datum *values, bool *isnull); + Relation rel, ItemPointer self, + Datum *values, bool *isnull); extern void tuplesort_putdatum(Tuplesortstate *state, Datum val, - bool isNull); + bool isNull); extern void tuplesort_performsort(Tuplesortstate *state); extern bool tuplesort_gettupleslot(Tuplesortstate *state, bool forward, - bool copy, TupleTableSlot *slot, Datum *abbrev); + bool copy, TupleTableSlot *slot, Datum *abbrev); extern HeapTuple tuplesort_getheaptuple(Tuplesortstate *state, bool forward); extern IndexTuple tuplesort_getindextuple(Tuplesortstate *state, bool forward); extern bool tuplesort_getdatum(Tuplesortstate *state, bool forward, - Datum *val, bool *isNull, Datum *abbrev); + Datum *val, bool *isNull, Datum *abbrev); extern bool tuplesort_skiptuples(Tuplesortstate *state, int64 ntuples, - bool forward); + bool forward); extern void tuplesort_end(Tuplesortstate *state); +extern void tuplesort_reset(Tuplesortstate *state); + extern void tuplesort_get_stats(Tuplesortstate *state, - const char **sortMethod, - const char **spaceType, - long *spaceUsed); + TuplesortInstrumentation *stats); +extern const char *tuplesort_method_name(TuplesortMethod m); +extern const char *tuplesort_space_type_name(TuplesortSpaceType t); extern int tuplesort_merge_order(int64 allowedMem); +extern Size tuplesort_estimate_shared(int nworkers); +extern void tuplesort_initialize_shared(Sharedsort *shared, int nWorkers, + dsm_segment *seg); +extern void tuplesort_attach_shared(Sharedsort *shared, dsm_segment *seg); + /* * These routines may only be called if randomAccess was specified 'true'. * Likewise, backwards scan in gettuple/getdatum is only allowed if - * randomAccess was specified. + * randomAccess was specified. Note that parallel sorts do not support + * randomAccess. */ extern void tuplesort_rescan(Tuplesortstate *state); diff --git a/parser/include/utils/tuplestore.h b/parser/include/utils/tuplestore.h index 7f4e1e31..2c6403f9 100644 --- a/parser/include/utils/tuplestore.h +++ b/parser/include/utils/tuplestore.h @@ -21,7 +21,7 @@ * Also, we have changed the API to return tuples in TupleTableSlots, * so that there is a check to prevent attempted access to system columns. * - * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/utils/tuplestore.h @@ -45,16 +45,16 @@ typedef struct Tuplestorestate Tuplestorestate; */ extern Tuplestorestate *tuplestore_begin_heap(bool randomAccess, - bool interXact, - int maxKBytes); + bool interXact, + int maxKBytes); extern void tuplestore_set_eflags(Tuplestorestate *state, int eflags); extern void tuplestore_puttupleslot(Tuplestorestate *state, - TupleTableSlot *slot); + TupleTableSlot *slot); extern void tuplestore_puttuple(Tuplestorestate *state, HeapTuple tuple); extern void tuplestore_putvalues(Tuplestorestate *state, TupleDesc tdesc, - Datum *values, bool *isnull); + Datum *values, bool *isnull); /* tuplestore_donestoring() used to be required, but is no longer used */ #define tuplestore_donestoring(state) ((void) 0) @@ -64,19 +64,19 @@ extern int tuplestore_alloc_read_pointer(Tuplestorestate *state, int eflags); extern void tuplestore_select_read_pointer(Tuplestorestate *state, int ptr); extern void tuplestore_copy_read_pointer(Tuplestorestate *state, - int srcptr, int destptr); + int srcptr, int destptr); extern void tuplestore_trim(Tuplestorestate *state); extern bool tuplestore_in_memory(Tuplestorestate *state); extern bool tuplestore_gettupleslot(Tuplestorestate *state, bool forward, - bool copy, TupleTableSlot *slot); + bool copy, TupleTableSlot *slot); extern bool tuplestore_advance(Tuplestorestate *state, bool forward); extern bool tuplestore_skiptuples(Tuplestorestate *state, - int64 ntuples, bool forward); + int64 ntuples, bool forward); extern int64 tuplestore_tuple_count(Tuplestorestate *state); diff --git a/parser/include/utils/typcache.h b/parser/include/utils/typcache.h index c12631da..cdd20e56 100644 --- a/parser/include/utils/typcache.h +++ b/parser/include/utils/typcache.h @@ -6,7 +6,7 @@ * The type cache exists to speed lookup of certain information about data * types that is not directly available from a type's pg_type row. * - * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/utils/typcache.h @@ -18,6 +18,8 @@ #include "access/tupdesc.h" #include "fmgr.h" +#include "storage/dsm.h" +#include "utils/dsa.h" /* DomainConstraintCache is an opaque struct known only within typcache.c */ @@ -31,6 +33,8 @@ typedef struct TypeCacheEntry /* typeId is the hash lookup key and MUST BE FIRST */ Oid type_id; /* OID of the data type */ + uint32 type_id_hash; /* hashed value of the OID */ + /* some subsidiary information copied from the pg_type row */ int16 typlen; bool typbyval; @@ -38,6 +42,8 @@ typedef struct TypeCacheEntry char typstorage; char typtype; Oid typrelid; + Oid typelem; + Oid typcollation; /* * Information obtained from opfamily entries @@ -56,6 +62,7 @@ typedef struct TypeCacheEntry Oid gt_opr; /* the greater-than operator */ Oid cmp_proc; /* the btree comparison function */ Oid hash_proc; /* the hash calculation function */ + Oid hash_extended_proc; /* the extended hash calculation function */ /* * Pre-set-up fmgr call info for the equality operator, the btree @@ -67,13 +74,19 @@ typedef struct TypeCacheEntry FmgrInfo eq_opr_finfo; FmgrInfo cmp_proc_finfo; FmgrInfo hash_proc_finfo; + FmgrInfo hash_extended_proc_finfo; /* * Tuple descriptor if it's a composite type (row type). NULL if not * composite or information hasn't yet been requested. (NOTE: this is a * reference-counted tupledesc.) + * + * To simplify caching dependent info, tupDesc_identifier is an identifier + * for this tupledesc that is unique for the life of the process, and + * changes anytime the tupledesc does. Zero if not yet determined. */ TupleDesc tupDesc; + uint64 tupDesc_identifier; /* * Fields computed when TYPECACHE_RANGE_INFO is requested. Zeroes if not @@ -87,6 +100,13 @@ typedef struct TypeCacheEntry FmgrInfo rng_canonical_finfo; /* canonicalization function, if any */ FmgrInfo rng_subdiff_finfo; /* difference function, if any */ + /* + * Domain's base type and typmod if it's a domain type. Zeroes if not + * domain, or if information hasn't been requested. + */ + Oid domainBaseType; + int32 domainBaseTypmod; + /* * Domain constraint data if it's a domain type. NULL if not domain, or * if domain has no constraints, or if information hasn't been requested. @@ -119,7 +139,13 @@ typedef struct TypeCacheEntry #define TYPECACHE_BTREE_OPFAMILY 0x0200 #define TYPECACHE_HASH_OPFAMILY 0x0400 #define TYPECACHE_RANGE_INFO 0x0800 -#define TYPECACHE_DOMAIN_INFO 0x1000 +#define TYPECACHE_DOMAIN_BASE_INFO 0x1000 +#define TYPECACHE_DOMAIN_CONSTR_INFO 0x2000 +#define TYPECACHE_HASH_EXTENDED_PROC 0x4000 +#define TYPECACHE_HASH_EXTENDED_PROC_FINFO 0x8000 + +/* This value will not equal any valid tupledesc identifier, nor 0 */ +#define INVALID_TUPLEDESC_IDENTIFIER ((uint64) 1) /* * Callers wishing to maintain a long-lived reference to a domain's constraint @@ -139,11 +165,12 @@ typedef struct DomainConstraintRef MemoryContextCallback callback; /* used to release refcount when done */ } DomainConstraintRef; +typedef struct SharedRecordTypmodRegistry SharedRecordTypmodRegistry; extern TypeCacheEntry *lookup_type_cache(Oid type_id, int flags); extern void InitDomainConstraintRef(Oid type_id, DomainConstraintRef *ref, - MemoryContext refctx, bool need_exprstate); + MemoryContext refctx, bool need_exprstate); extern void UpdateDomainConstraintRef(DomainConstraintRef *ref); @@ -152,12 +179,24 @@ extern bool DomainHasConstraints(Oid type_id); extern TupleDesc lookup_rowtype_tupdesc(Oid type_id, int32 typmod); extern TupleDesc lookup_rowtype_tupdesc_noerror(Oid type_id, int32 typmod, - bool noError); + bool noError); extern TupleDesc lookup_rowtype_tupdesc_copy(Oid type_id, int32 typmod); +extern TupleDesc lookup_rowtype_tupdesc_domain(Oid type_id, int32 typmod, + bool noError); + extern void assign_record_type_typmod(TupleDesc tupDesc); +extern uint64 assign_record_type_identifier(Oid type_id, int32 typmod); + extern int compare_values_of_enum(TypeCacheEntry *tcache, Oid arg1, Oid arg2); +extern size_t SharedRecordTypmodRegistryEstimate(void); + +extern void SharedRecordTypmodRegistryInit(SharedRecordTypmodRegistry *, + dsm_segment *segment, dsa_area *area); + +extern void SharedRecordTypmodRegistryAttach(SharedRecordTypmodRegistry *); + #endif /* TYPCACHE_H */ diff --git a/parser/include/utils/tzparser.h b/parser/include/utils/tzparser.h index 1e444e11..8eb602dc 100644 --- a/parser/include/utils/tzparser.h +++ b/parser/include/utils/tzparser.h @@ -3,7 +3,7 @@ * tzparser.h * Timezone offset file parsing definitions. * - * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/utils/tzparser.h diff --git a/parser/include/utils/varlena.h b/parser/include/utils/varlena.h index 852604df..85e838f0 100644 --- a/parser/include/utils/varlena.h +++ b/parser/include/utils/varlena.h @@ -3,7 +3,7 @@ * varlena.h * Functions for the variable-length built-in types. * - * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/utils/varlena.h @@ -16,24 +16,24 @@ #include "nodes/pg_list.h" #include "utils/sortsupport.h" -extern int varstr_cmp(char *arg1, int len1, char *arg2, int len2, Oid collid); -extern void varstr_sortsupport(SortSupport ssup, Oid collid, bool bpchar); -extern int varstr_levenshtein(const char *source, int slen, - const char *target, int tlen, - int ins_c, int del_c, int sub_c, - bool trusted); -extern int varstr_levenshtein_less_equal(const char *source, int slen, - const char *target, int tlen, - int ins_c, int del_c, int sub_c, - int max_d, bool trusted); +extern int varstr_cmp(const char *arg1, int len1, const char *arg2, int len2, Oid collid); +extern void varstr_sortsupport(SortSupport ssup, Oid typid, Oid collid); +extern int varstr_levenshtein(const char *source, int slen, + const char *target, int tlen, + int ins_c, int del_c, int sub_c, + bool trusted); +extern int varstr_levenshtein_less_equal(const char *source, int slen, + const char *target, int tlen, + int ins_c, int del_c, int sub_c, + int max_d, bool trusted); extern List *textToQualifiedNameList(text *textval); extern bool SplitIdentifierString(char *rawstring, char separator, - List **namelist); + List **namelist); extern bool SplitDirectoriesString(char *rawstring, char separator, - List **namelist); + List **namelist); extern bool SplitGUCList(char *rawstring, char separator, - List **namelist); + List **namelist); extern text *replace_text_regexp(text *src_text, void *regexp, - text *replace_text, bool glob); + text *replace_text, bool glob); #endif diff --git a/parser/include/utils/xml.h b/parser/include/utils/xml.h index e6fa0e20..cf0e61fb 100644 --- a/parser/include/utils/xml.h +++ b/parser/include/utils/xml.h @@ -4,7 +4,7 @@ * Declarations for XML data type support. * * - * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/utils/xml.h @@ -15,10 +15,10 @@ #ifndef XML_H #define XML_H +#include "executor/tablefunc.h" #include "fmgr.h" #include "nodes/execnodes.h" #include "nodes/primnodes.h" -#include "executor/tablefunc.h" typedef struct varlena xmltype; @@ -58,21 +58,21 @@ extern PgXmlErrorContext *pg_xml_init(PgXmlStrictness strictness); extern void pg_xml_done(PgXmlErrorContext *errcxt, bool isError); extern bool pg_xml_error_occurred(PgXmlErrorContext *errcxt); extern void xml_ereport(PgXmlErrorContext *errcxt, int level, int sqlcode, - const char *msg); + const char *msg); extern xmltype *xmlconcat(List *args); extern xmltype *xmlelement(XmlExpr *xexpr, - Datum *named_argvalue, bool *named_argnull, - Datum *argvalue, bool *argnull); + Datum *named_argvalue, bool *named_argnull, + Datum *argvalue, bool *argnull); extern xmltype *xmlparse(text *data, XmlOptionType xmloption, bool preserve_whitespace); -extern xmltype *xmlpi(char *target, text *arg, bool arg_is_null, bool *result_is_null); +extern xmltype *xmlpi(const char *target, text *arg, bool arg_is_null, bool *result_is_null); extern xmltype *xmlroot(xmltype *data, text *version, int standalone); extern bool xml_is_document(xmltype *arg); extern text *xmltotext_with_xmloption(xmltype *data, XmlOptionType xmloption_arg); extern char *escape_xml(const char *str); -extern char *map_sql_identifier_to_xml_name(char *ident, bool fully_escaped, bool escape_period); -extern char *map_xml_name_to_sql_identifier(char *name); +extern char *map_sql_identifier_to_xml_name(const char *ident, bool fully_escaped, bool escape_period); +extern char *map_xml_name_to_sql_identifier(const char *name); extern char *map_sql_value_to_xml_value(Datum value, Oid type, bool xml_escape_strings); extern int xmlbinary; /* XmlBinaryType, but int for guc enum */ diff --git a/parser/include/xxhash.h b/parser/include/xxhash.h new file mode 100644 index 00000000..4bdd13aa --- /dev/null +++ b/parser/include/xxhash.h @@ -0,0 +1,5445 @@ +/* + * xxHash - Extremely Fast Hash algorithm + * Header File + * Copyright (C) 2012-2020 Yann Collet + * + * BSD 2-Clause License (https://www.opensource.org/licenses/bsd-license.php) + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following disclaimer + * in the documentation and/or other materials provided with the + * distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * You can contact the author at: + * - xxHash homepage: https://www.xxhash.com + * - xxHash source repository: https://github.com/Cyan4973/xxHash + */ +/*! + * @mainpage xxHash + * + * @file xxhash.h + * xxHash prototypes and implementation + */ +/* TODO: update */ +/* Notice extracted from xxHash homepage: + +xxHash is an extremely fast hash algorithm, running at RAM speed limits. +It also successfully passes all tests from the SMHasher suite. + +Comparison (single thread, Windows Seven 32 bits, using SMHasher on a Core 2 Duo @3GHz) + +Name Speed Q.Score Author +xxHash 5.4 GB/s 10 +CrapWow 3.2 GB/s 2 Andrew +MurmurHash 3a 2.7 GB/s 10 Austin Appleby +SpookyHash 2.0 GB/s 10 Bob Jenkins +SBox 1.4 GB/s 9 Bret Mulvey +Lookup3 1.2 GB/s 9 Bob Jenkins +SuperFastHash 1.2 GB/s 1 Paul Hsieh +CityHash64 1.05 GB/s 10 Pike & Alakuijala +FNV 0.55 GB/s 5 Fowler, Noll, Vo +CRC32 0.43 GB/s 9 +MD5-32 0.33 GB/s 10 Ronald L. Rivest +SHA1-32 0.28 GB/s 10 + +Q.Score is a measure of quality of the hash function. +It depends on successfully passing SMHasher test set. +10 is a perfect score. + +Note: SMHasher's CRC32 implementation is not the fastest one. +Other speed-oriented implementations can be faster, +especially in combination with PCLMUL instruction: +https://fastcompression.blogspot.com/2019/03/presenting-xxh3.html?showComment=1552696407071#c3490092340461170735 + +A 64-bit version, named XXH64, is available since r35. +It offers much better speed, but for 64-bit applications only. +Name Speed on 64 bits Speed on 32 bits +XXH64 13.8 GB/s 1.9 GB/s +XXH32 6.8 GB/s 6.0 GB/s +*/ + +#if defined (__cplusplus) +extern "C" { +#endif + +/* **************************** + * INLINE mode + ******************************/ +/*! + * XXH_INLINE_ALL (and XXH_PRIVATE_API) + * Use these build macros to inline xxhash into the target unit. + * Inlining improves performance on small inputs, especially when the length is + * expressed as a compile-time constant: + * + * https://fastcompression.blogspot.com/2018/03/xxhash-for-small-keys-impressive-power.html + * + * It also keeps xxHash symbols private to the unit, so they are not exported. + * + * Usage: + * #define XXH_INLINE_ALL + * #include "xxhash.h" + * + * Do not compile and link xxhash.o as a separate object, as it is not useful. + */ +#if (defined(XXH_INLINE_ALL) || defined(XXH_PRIVATE_API)) \ + && !defined(XXH_INLINE_ALL_31684351384) + /* this section should be traversed only once */ +# define XXH_INLINE_ALL_31684351384 + /* give access to the advanced API, required to compile implementations */ +# undef XXH_STATIC_LINKING_ONLY /* avoid macro redef */ +# define XXH_STATIC_LINKING_ONLY + /* make all functions private */ +# undef XXH_PUBLIC_API +# if defined(__GNUC__) +# define XXH_PUBLIC_API static __inline __attribute__((unused)) +# elif defined (__cplusplus) || (defined (__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L) /* C99 */) +# define XXH_PUBLIC_API static inline +# elif defined(_MSC_VER) +# define XXH_PUBLIC_API static __inline +# else + /* note: this version may generate warnings for unused static functions */ +# define XXH_PUBLIC_API static +# endif + + /* + * This part deals with the special case where a unit wants to inline xxHash, + * but "xxhash.h" has previously been included without XXH_INLINE_ALL, such + * as part of some previously included *.h header file. + * Without further action, the new include would just be ignored, + * and functions would effectively _not_ be inlined (silent failure). + * The following macros solve this situation by prefixing all inlined names, + * avoiding naming collision with previous inclusions. + */ +# ifdef XXH_NAMESPACE +# error "XXH_INLINE_ALL with XXH_NAMESPACE is not supported" + /* + * Note: Alternative: #undef all symbols (it's a pretty large list). + * Without #error: it compiles, but functions are actually not inlined. + */ +# endif +# define XXH_NAMESPACE XXH_INLINE_ + /* + * Some identifiers (enums, type names) are not symbols, but they must + * still be renamed to avoid redeclaration. + * Alternative solution: do not redeclare them. + * However, this requires some #ifdefs, and is a more dispersed action. + * Meanwhile, renaming can be achieved in a single block + */ +# define XXH_IPREF(Id) XXH_INLINE_ ## Id +# define XXH_OK XXH_IPREF(XXH_OK) +# define XXH_ERROR XXH_IPREF(XXH_ERROR) +# define XXH_errorcode XXH_IPREF(XXH_errorcode) +# define XXH32_canonical_t XXH_IPREF(XXH32_canonical_t) +# define XXH64_canonical_t XXH_IPREF(XXH64_canonical_t) +# define XXH128_canonical_t XXH_IPREF(XXH128_canonical_t) +# define XXH32_state_s XXH_IPREF(XXH32_state_s) +# define XXH32_state_t XXH_IPREF(XXH32_state_t) +# define XXH64_state_s XXH_IPREF(XXH64_state_s) +# define XXH64_state_t XXH_IPREF(XXH64_state_t) +# define XXH3_state_s XXH_IPREF(XXH3_state_s) +# define XXH3_state_t XXH_IPREF(XXH3_state_t) +# define XXH128_hash_t XXH_IPREF(XXH128_hash_t) + /* Ensure the header is parsed again, even if it was previously included */ +# undef XXHASH_H_5627135585666179 +# undef XXHASH_H_STATIC_13879238742 +#endif /* XXH_INLINE_ALL || XXH_PRIVATE_API */ + + + +/* **************************************************************** + * Stable API + *****************************************************************/ +#ifndef XXHASH_H_5627135585666179 +#define XXHASH_H_5627135585666179 1 + + +/*! + * @defgroup public Public API + * Contains details on the public xxHash functions. + * @{ + */ +/* specific declaration modes for Windows */ +#if !defined(XXH_INLINE_ALL) && !defined(XXH_PRIVATE_API) +# if defined(WIN32) && defined(_MSC_VER) && (defined(XXH_IMPORT) || defined(XXH_EXPORT)) +# ifdef XXH_EXPORT +# define XXH_PUBLIC_API __declspec(dllexport) +# elif XXH_IMPORT +# define XXH_PUBLIC_API __declspec(dllimport) +# endif +# else +# define XXH_PUBLIC_API /* do nothing */ +# endif +#endif + +#ifdef XXH_DOXYGEN +/*! + * @brief Emulate a namespace by transparently prefixing all symbols. + * + * If you want to include _and expose_ xxHash functions from within your own + * library, but also want to avoid symbol collisions with other libraries which + * may also include xxHash, you can use XXH_NAMESPACE to automatically prefix + * any public symbol from xxhash library with the value of XXH_NAMESPACE + * (therefore, avoid empty or numeric values). + * + * Note that no change is required within the calling program as long as it + * includes `xxhash.h`: Regular symbol names will be automatically translated + * by this header. + */ +# define XXH_NAMESPACE /* YOUR NAME HERE */ +# undef XXH_NAMESPACE +#endif + +#ifdef XXH_NAMESPACE +# define XXH_CAT(A,B) A##B +# define XXH_NAME2(A,B) XXH_CAT(A,B) +# define XXH_versionNumber XXH_NAME2(XXH_NAMESPACE, XXH_versionNumber) +/* XXH32 */ +# define XXH32 XXH_NAME2(XXH_NAMESPACE, XXH32) +# define XXH32_createState XXH_NAME2(XXH_NAMESPACE, XXH32_createState) +# define XXH32_freeState XXH_NAME2(XXH_NAMESPACE, XXH32_freeState) +# define XXH32_reset XXH_NAME2(XXH_NAMESPACE, XXH32_reset) +# define XXH32_update XXH_NAME2(XXH_NAMESPACE, XXH32_update) +# define XXH32_digest XXH_NAME2(XXH_NAMESPACE, XXH32_digest) +# define XXH32_copyState XXH_NAME2(XXH_NAMESPACE, XXH32_copyState) +# define XXH32_canonicalFromHash XXH_NAME2(XXH_NAMESPACE, XXH32_canonicalFromHash) +# define XXH32_hashFromCanonical XXH_NAME2(XXH_NAMESPACE, XXH32_hashFromCanonical) +/* XXH64 */ +# define XXH64 XXH_NAME2(XXH_NAMESPACE, XXH64) +# define XXH64_createState XXH_NAME2(XXH_NAMESPACE, XXH64_createState) +# define XXH64_freeState XXH_NAME2(XXH_NAMESPACE, XXH64_freeState) +# define XXH64_reset XXH_NAME2(XXH_NAMESPACE, XXH64_reset) +# define XXH64_update XXH_NAME2(XXH_NAMESPACE, XXH64_update) +# define XXH64_digest XXH_NAME2(XXH_NAMESPACE, XXH64_digest) +# define XXH64_copyState XXH_NAME2(XXH_NAMESPACE, XXH64_copyState) +# define XXH64_canonicalFromHash XXH_NAME2(XXH_NAMESPACE, XXH64_canonicalFromHash) +# define XXH64_hashFromCanonical XXH_NAME2(XXH_NAMESPACE, XXH64_hashFromCanonical) +/* XXH3_64bits */ +# define XXH3_64bits XXH_NAME2(XXH_NAMESPACE, XXH3_64bits) +# define XXH3_64bits_withSecret XXH_NAME2(XXH_NAMESPACE, XXH3_64bits_withSecret) +# define XXH3_64bits_withSeed XXH_NAME2(XXH_NAMESPACE, XXH3_64bits_withSeed) +# define XXH3_createState XXH_NAME2(XXH_NAMESPACE, XXH3_createState) +# define XXH3_freeState XXH_NAME2(XXH_NAMESPACE, XXH3_freeState) +# define XXH3_copyState XXH_NAME2(XXH_NAMESPACE, XXH3_copyState) +# define XXH3_64bits_reset XXH_NAME2(XXH_NAMESPACE, XXH3_64bits_reset) +# define XXH3_64bits_reset_withSeed XXH_NAME2(XXH_NAMESPACE, XXH3_64bits_reset_withSeed) +# define XXH3_64bits_reset_withSecret XXH_NAME2(XXH_NAMESPACE, XXH3_64bits_reset_withSecret) +# define XXH3_64bits_update XXH_NAME2(XXH_NAMESPACE, XXH3_64bits_update) +# define XXH3_64bits_digest XXH_NAME2(XXH_NAMESPACE, XXH3_64bits_digest) +# define XXH3_generateSecret XXH_NAME2(XXH_NAMESPACE, XXH3_generateSecret) +/* XXH3_128bits */ +# define XXH128 XXH_NAME2(XXH_NAMESPACE, XXH128) +# define XXH3_128bits XXH_NAME2(XXH_NAMESPACE, XXH3_128bits) +# define XXH3_128bits_withSeed XXH_NAME2(XXH_NAMESPACE, XXH3_128bits_withSeed) +# define XXH3_128bits_withSecret XXH_NAME2(XXH_NAMESPACE, XXH3_128bits_withSecret) +# define XXH3_128bits_reset XXH_NAME2(XXH_NAMESPACE, XXH3_128bits_reset) +# define XXH3_128bits_reset_withSeed XXH_NAME2(XXH_NAMESPACE, XXH3_128bits_reset_withSeed) +# define XXH3_128bits_reset_withSecret XXH_NAME2(XXH_NAMESPACE, XXH3_128bits_reset_withSecret) +# define XXH3_128bits_update XXH_NAME2(XXH_NAMESPACE, XXH3_128bits_update) +# define XXH3_128bits_digest XXH_NAME2(XXH_NAMESPACE, XXH3_128bits_digest) +# define XXH128_isEqual XXH_NAME2(XXH_NAMESPACE, XXH128_isEqual) +# define XXH128_cmp XXH_NAME2(XXH_NAMESPACE, XXH128_cmp) +# define XXH128_canonicalFromHash XXH_NAME2(XXH_NAMESPACE, XXH128_canonicalFromHash) +# define XXH128_hashFromCanonical XXH_NAME2(XXH_NAMESPACE, XXH128_hashFromCanonical) +#endif + + +/* ************************************* +* Version +***************************************/ +#define XXH_VERSION_MAJOR 0 +#define XXH_VERSION_MINOR 8 +#define XXH_VERSION_RELEASE 0 +#define XXH_VERSION_NUMBER (XXH_VERSION_MAJOR *100*100 + XXH_VERSION_MINOR *100 + XXH_VERSION_RELEASE) + +/*! + * @brief Obtains the xxHash version. + * + * This is only useful when xxHash is compiled as a shared library, as it is + * independent of the version defined in the header. + * + * @return `XXH_VERSION_NUMBER` as of when the function was compiled. + */ +XXH_PUBLIC_API unsigned XXH_versionNumber (void); + + +/* **************************** +* Definitions +******************************/ +#include /* size_t */ +typedef enum { XXH_OK=0, XXH_ERROR } XXH_errorcode; + + +/*-********************************************************************** +* 32-bit hash +************************************************************************/ +#if defined(XXH_DOXYGEN) /* Don't show include */ +/*! + * @brief An unsigned 32-bit integer. + * + * Not necessarily defined to `uint32_t` but functionally equivalent. + */ +typedef uint32_t XXH32_hash_t; +#elif !defined (__VMS) \ + && (defined (__cplusplus) \ + || (defined (__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L) /* C99 */) ) +# include + typedef uint32_t XXH32_hash_t; +#else +# include +# if UINT_MAX == 0xFFFFFFFFUL + typedef unsigned int XXH32_hash_t; +# else +# if ULONG_MAX == 0xFFFFFFFFUL + typedef unsigned long XXH32_hash_t; +# else +# error "unsupported platform: need a 32-bit type" +# endif +# endif +#endif + +/*! + * @} + * + * @defgroup xxh32_family XXH32 family + * @ingroup public + * Contains functions used in the classic 32-bit xxHash algorithm. + * + * @note + * XXH32 is considered rather weak by today's standards. + * The @ref xxh3_family provides competitive speed for both 32-bit and 64-bit + * systems, and offers true 64/128 bit hash results. It provides a superior + * level of dispersion, and greatly reduces the risks of collisions. + * + * @see @ref xxh64_family, @ref xxh3_family : Other xxHash families + * @see @ref xxh32_impl for implementation details + * @{ + */ + +/*! + * @brief Calculates the 32-bit hash of @p input using xxHash32. + * + * Speed on Core 2 Duo @ 3 GHz (single thread, SMHasher benchmark): 5.4 GB/s + * + * @param input The block of data to be hashed, at least @p length bytes in size. + * @param length The length of @p input, in bytes. + * @param seed The 32-bit seed to alter the hash's output predictably. + * + * @pre + * The memory between @p input and @p input + @p length must be valid, + * readable, contiguous memory. However, if @p length is `0`, @p input may be + * `NULL`. In C++, this also must be *TriviallyCopyable*. + * + * @return The calculated 32-bit hash value. + * + * @see + * XXH64(), XXH3_64bits_withSeed(), XXH3_128bits_withSeed(), XXH128(): + * Direct equivalents for the other variants of xxHash. + * @see + * XXH32_createState(), XXH32_update(), XXH32_digest(): Streaming version. + */ +XXH_PUBLIC_API XXH32_hash_t XXH32 (const void* input, size_t length, XXH32_hash_t seed); + +/*! + * Streaming functions generate the xxHash value from an incremental input. + * This method is slower than single-call functions, due to state management. + * For small inputs, prefer `XXH32()` and `XXH64()`, which are better optimized. + * + * An XXH state must first be allocated using `XXH*_createState()`. + * + * Start a new hash by initializing the state with a seed using `XXH*_reset()`. + * + * Then, feed the hash state by calling `XXH*_update()` as many times as necessary. + * + * The function returns an error code, with 0 meaning OK, and any other value + * meaning there is an error. + * + * Finally, a hash value can be produced anytime, by using `XXH*_digest()`. + * This function returns the nn-bits hash as an int or long long. + * + * It's still possible to continue inserting input into the hash state after a + * digest, and generate new hash values later on by invoking `XXH*_digest()`. + * + * When done, release the state using `XXH*_freeState()`. + * + * Example code for incrementally hashing a file: + * @code{.c} + * #include + * #include + * #define BUFFER_SIZE 256 + * + * // Note: XXH64 and XXH3 use the same interface. + * XXH32_hash_t + * hashFile(FILE* stream) + * { + * XXH32_state_t* state; + * unsigned char buf[BUFFER_SIZE]; + * size_t amt; + * XXH32_hash_t hash; + * + * state = XXH32_createState(); // Create a state + * assert(state != NULL); // Error check here + * XXH32_reset(state, 0xbaad5eed); // Reset state with our seed + * while ((amt = fread(buf, 1, sizeof(buf), stream)) != 0) { + * XXH32_update(state, buf, amt); // Hash the file in chunks + * } + * hash = XXH32_digest(state); // Finalize the hash + * XXH32_freeState(state); // Clean up + * return hash; + * } + * @endcode + */ + +/*! + * @typedef struct XXH32_state_s XXH32_state_t + * @brief The opaque state struct for the XXH32 streaming API. + * + * @see XXH32_state_s for details. + */ +typedef struct XXH32_state_s XXH32_state_t; + +/*! + * @brief Allocates an @ref XXH32_state_t. + * + * Must be freed with XXH32_freeState(). + * @return An allocated XXH32_state_t on success, `NULL` on failure. + */ +XXH_PUBLIC_API XXH32_state_t* XXH32_createState(void); +/*! + * @brief Frees an @ref XXH32_state_t. + * + * Must be allocated with XXH32_createState(). + * @param statePtr A pointer to an @ref XXH32_state_t allocated with @ref XXH32_createState(). + * @return XXH_OK. + */ +XXH_PUBLIC_API XXH_errorcode XXH32_freeState(XXH32_state_t* statePtr); +/*! + * @brief Copies one @ref XXH32_state_t to another. + * + * @param dst_state The state to copy to. + * @param src_state The state to copy from. + * @pre + * @p dst_state and @p src_state must not be `NULL` and must not overlap. + */ +XXH_PUBLIC_API void XXH32_copyState(XXH32_state_t* dst_state, const XXH32_state_t* src_state); + +/*! + * @brief Resets an @ref XXH32_state_t to begin a new hash. + * + * This function resets and seeds a state. Call it before @ref XXH32_update(). + * + * @param statePtr The state struct to reset. + * @param seed The 32-bit seed to alter the hash result predictably. + * + * @pre + * @p statePtr must not be `NULL`. + * + * @return @ref XXH_OK on success, @ref XXH_ERROR on failure. + */ +XXH_PUBLIC_API XXH_errorcode XXH32_reset (XXH32_state_t* statePtr, XXH32_hash_t seed); + +/*! + * @brief Consumes a block of @p input to an @ref XXH32_state_t. + * + * Call this to incrementally consume blocks of data. + * + * @param statePtr The state struct to update. + * @param input The block of data to be hashed, at least @p length bytes in size. + * @param length The length of @p input, in bytes. + * + * @pre + * @p statePtr must not be `NULL`. + * @pre + * The memory between @p input and @p input + @p length must be valid, + * readable, contiguous memory. However, if @p length is `0`, @p input may be + * `NULL`. In C++, this also must be *TriviallyCopyable*. + * + * @return @ref XXH_OK on success, @ref XXH_ERROR on failure. + */ +XXH_PUBLIC_API XXH_errorcode XXH32_update (XXH32_state_t* statePtr, const void* input, size_t length); + +/*! + * @brief Returns the calculated hash value from an @ref XXH32_state_t. + * + * @note + * Calling XXH32_digest() will not affect @p statePtr, so you can update, + * digest, and update again. + * + * @param statePtr The state struct to calculate the hash from. + * + * @pre + * @p statePtr must not be `NULL`. + * + * @return The calculated xxHash32 value from that state. + */ +XXH_PUBLIC_API XXH32_hash_t XXH32_digest (const XXH32_state_t* statePtr); + +/******* Canonical representation *******/ + +/* + * The default return values from XXH functions are unsigned 32 and 64 bit + * integers. + * This the simplest and fastest format for further post-processing. + * + * However, this leaves open the question of what is the order on the byte level, + * since little and big endian conventions will store the same number differently. + * + * The canonical representation settles this issue by mandating big-endian + * convention, the same convention as human-readable numbers (large digits first). + * + * When writing hash values to storage, sending them over a network, or printing + * them, it's highly recommended to use the canonical representation to ensure + * portability across a wider range of systems, present and future. + * + * The following functions allow transformation of hash values to and from + * canonical format. + */ + +/*! + * @brief Canonical (big endian) representation of @ref XXH32_hash_t. + */ +typedef struct { + unsigned char digest[4]; /*!< Hash bytes, big endian */ +} XXH32_canonical_t; + +/*! + * @brief Converts an @ref XXH32_hash_t to a big endian @ref XXH32_canonical_t. + * + * @param dst The @ref XXH32_canonical_t pointer to be stored to. + * @param hash The @ref XXH32_hash_t to be converted. + * + * @pre + * @p dst must not be `NULL`. + */ +XXH_PUBLIC_API void XXH32_canonicalFromHash(XXH32_canonical_t* dst, XXH32_hash_t hash); + +/*! + * @brief Converts an @ref XXH32_canonical_t to a native @ref XXH32_hash_t. + * + * @param src The @ref XXH32_canonical_t to convert. + * + * @pre + * @p src must not be `NULL`. + * + * @return The converted hash. + */ +XXH_PUBLIC_API XXH32_hash_t XXH32_hashFromCanonical(const XXH32_canonical_t* src); + + +/*! + * @} + * @ingroup public + * @{ + */ + +#ifndef XXH_NO_LONG_LONG +/*-********************************************************************** +* 64-bit hash +************************************************************************/ +#if defined(XXH_DOXYGEN) /* don't include */ +/*! + * @brief An unsigned 64-bit integer. + * + * Not necessarily defined to `uint64_t` but functionally equivalent. + */ +typedef uint64_t XXH64_hash_t; +#elif !defined (__VMS) \ + && (defined (__cplusplus) \ + || (defined (__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L) /* C99 */) ) +# include + typedef uint64_t XXH64_hash_t; +#else +# include +# if defined(__LP64__) && ULONG_MAX == 0xFFFFFFFFFFFFFFFFULL + /* LP64 ABI says uint64_t is unsigned long */ + typedef unsigned long XXH64_hash_t; +# else + /* the following type must have a width of 64-bit */ + typedef unsigned long long XXH64_hash_t; +# endif +#endif + +/*! + * @} + * + * @defgroup xxh64_family XXH64 family + * @ingroup public + * @{ + * Contains functions used in the classic 64-bit xxHash algorithm. + * + * @note + * XXH3 provides competitive speed for both 32-bit and 64-bit systems, + * and offers true 64/128 bit hash results. It provides a superior level of + * dispersion, and greatly reduces the risks of collisions. + */ + + +/*! + * @brief Calculates the 64-bit hash of @p input using xxHash64. + * + * This function usually runs faster on 64-bit systems, but slower on 32-bit + * systems (see benchmark). + * + * @param input The block of data to be hashed, at least @p length bytes in size. + * @param length The length of @p input, in bytes. + * @param seed The 64-bit seed to alter the hash's output predictably. + * + * @pre + * The memory between @p input and @p input + @p length must be valid, + * readable, contiguous memory. However, if @p length is `0`, @p input may be + * `NULL`. In C++, this also must be *TriviallyCopyable*. + * + * @return The calculated 64-bit hash. + * + * @see + * XXH32(), XXH3_64bits_withSeed(), XXH3_128bits_withSeed(), XXH128(): + * Direct equivalents for the other variants of xxHash. + * @see + * XXH64_createState(), XXH64_update(), XXH64_digest(): Streaming version. + */ +XXH_PUBLIC_API XXH64_hash_t XXH64(const void* input, size_t length, XXH64_hash_t seed); + +/******* Streaming *******/ +/*! + * @brief The opaque state struct for the XXH64 streaming API. + * + * @see XXH64_state_s for details. + */ +typedef struct XXH64_state_s XXH64_state_t; /* incomplete type */ +XXH_PUBLIC_API XXH64_state_t* XXH64_createState(void); +XXH_PUBLIC_API XXH_errorcode XXH64_freeState(XXH64_state_t* statePtr); +XXH_PUBLIC_API void XXH64_copyState(XXH64_state_t* dst_state, const XXH64_state_t* src_state); + +XXH_PUBLIC_API XXH_errorcode XXH64_reset (XXH64_state_t* statePtr, XXH64_hash_t seed); +XXH_PUBLIC_API XXH_errorcode XXH64_update (XXH64_state_t* statePtr, const void* input, size_t length); +XXH_PUBLIC_API XXH64_hash_t XXH64_digest (const XXH64_state_t* statePtr); + +/******* Canonical representation *******/ +typedef struct { unsigned char digest[sizeof(XXH64_hash_t)]; } XXH64_canonical_t; +XXH_PUBLIC_API void XXH64_canonicalFromHash(XXH64_canonical_t* dst, XXH64_hash_t hash); +XXH_PUBLIC_API XXH64_hash_t XXH64_hashFromCanonical(const XXH64_canonical_t* src); + +/*! + * @} + * ************************************************************************ + * @defgroup xxh3_family XXH3 family + * @ingroup public + * @{ + * + * XXH3 is a more recent hash algorithm featuring: + * - Improved speed for both small and large inputs + * - True 64-bit and 128-bit outputs + * - SIMD acceleration + * - Improved 32-bit viability + * + * Speed analysis methodology is explained here: + * + * https://fastcompression.blogspot.com/2019/03/presenting-xxh3.html + * + * Compared to XXH64, expect XXH3 to run approximately + * ~2x faster on large inputs and >3x faster on small ones, + * exact differences vary depending on platform. + * + * XXH3's speed benefits greatly from SIMD and 64-bit arithmetic, + * but does not require it. + * Any 32-bit and 64-bit targets that can run XXH32 smoothly + * can run XXH3 at competitive speeds, even without vector support. + * Further details are explained in the implementation. + * + * Optimized implementations are provided for AVX512, AVX2, SSE2, NEON, POWER8, + * ZVector and scalar targets. This can be controlled via the XXH_VECTOR macro. + * + * XXH3 implementation is portable: + * it has a generic C90 formulation that can be compiled on any platform, + * all implementations generage exactly the same hash value on all platforms. + * Starting from v0.8.0, it's also labelled "stable", meaning that + * any future version will also generate the same hash value. + * + * XXH3 offers 2 variants, _64bits and _128bits. + * + * When only 64 bits are needed, prefer invoking the _64bits variant, as it + * reduces the amount of mixing, resulting in faster speed on small inputs. + * It's also generally simpler to manipulate a scalar return type than a struct. + * + * The API supports one-shot hashing, streaming mode, and custom secrets. + */ + +/*-********************************************************************** +* XXH3 64-bit variant +************************************************************************/ + +/* XXH3_64bits(): + * default 64-bit variant, using default secret and default seed of 0. + * It's the fastest variant. */ +XXH_PUBLIC_API XXH64_hash_t XXH3_64bits(const void* data, size_t len); + +/* + * XXH3_64bits_withSeed(): + * This variant generates a custom secret on the fly + * based on default secret altered using the `seed` value. + * While this operation is decently fast, note that it's not completely free. + * Note: seed==0 produces the same results as XXH3_64bits(). + */ +XXH_PUBLIC_API XXH64_hash_t XXH3_64bits_withSeed(const void* data, size_t len, XXH64_hash_t seed); + +/*! + * The bare minimum size for a custom secret. + * + * @see + * XXH3_64bits_withSecret(), XXH3_64bits_reset_withSecret(), + * XXH3_128bits_withSecret(), XXH3_128bits_reset_withSecret(). + */ +#define XXH3_SECRET_SIZE_MIN 136 + +/* + * XXH3_64bits_withSecret(): + * It's possible to provide any blob of bytes as a "secret" to generate the hash. + * This makes it more difficult for an external actor to prepare an intentional collision. + * The main condition is that secretSize *must* be large enough (>= XXH3_SECRET_SIZE_MIN). + * However, the quality of produced hash values depends on secret's entropy. + * Technically, the secret must look like a bunch of random bytes. + * Avoid "trivial" or structured data such as repeated sequences or a text document. + * Whenever unsure about the "randomness" of the blob of bytes, + * consider relabelling it as a "custom seed" instead, + * and employ "XXH3_generateSecret()" (see below) + * to generate a high entropy secret derived from the custom seed. + */ +XXH_PUBLIC_API XXH64_hash_t XXH3_64bits_withSecret(const void* data, size_t len, const void* secret, size_t secretSize); + + +/******* Streaming *******/ +/* + * Streaming requires state maintenance. + * This operation costs memory and CPU. + * As a consequence, streaming is slower than one-shot hashing. + * For better performance, prefer one-shot functions whenever applicable. + */ + +/*! + * @brief The state struct for the XXH3 streaming API. + * + * @see XXH3_state_s for details. + */ +typedef struct XXH3_state_s XXH3_state_t; +XXH_PUBLIC_API XXH3_state_t* XXH3_createState(void); +XXH_PUBLIC_API XXH_errorcode XXH3_freeState(XXH3_state_t* statePtr); +XXH_PUBLIC_API void XXH3_copyState(XXH3_state_t* dst_state, const XXH3_state_t* src_state); + +/* + * XXH3_64bits_reset(): + * Initialize with default parameters. + * digest will be equivalent to `XXH3_64bits()`. + */ +XXH_PUBLIC_API XXH_errorcode XXH3_64bits_reset(XXH3_state_t* statePtr); +/* + * XXH3_64bits_reset_withSeed(): + * Generate a custom secret from `seed`, and store it into `statePtr`. + * digest will be equivalent to `XXH3_64bits_withSeed()`. + */ +XXH_PUBLIC_API XXH_errorcode XXH3_64bits_reset_withSeed(XXH3_state_t* statePtr, XXH64_hash_t seed); +/* + * XXH3_64bits_reset_withSecret(): + * `secret` is referenced, it _must outlive_ the hash streaming session. + * Similar to one-shot API, `secretSize` must be >= `XXH3_SECRET_SIZE_MIN`, + * and the quality of produced hash values depends on secret's entropy + * (secret's content should look like a bunch of random bytes). + * When in doubt about the randomness of a candidate `secret`, + * consider employing `XXH3_generateSecret()` instead (see below). + */ +XXH_PUBLIC_API XXH_errorcode XXH3_64bits_reset_withSecret(XXH3_state_t* statePtr, const void* secret, size_t secretSize); + +XXH_PUBLIC_API XXH_errorcode XXH3_64bits_update (XXH3_state_t* statePtr, const void* input, size_t length); +XXH_PUBLIC_API XXH64_hash_t XXH3_64bits_digest (const XXH3_state_t* statePtr); + +/* note : canonical representation of XXH3 is the same as XXH64 + * since they both produce XXH64_hash_t values */ + + +/*-********************************************************************** +* XXH3 128-bit variant +************************************************************************/ + +/*! + * @brief The return value from 128-bit hashes. + * + * Stored in little endian order, although the fields themselves are in native + * endianness. + */ +typedef struct { + XXH64_hash_t low64; /*!< `value & 0xFFFFFFFFFFFFFFFF` */ + XXH64_hash_t high64; /*!< `value >> 64` */ +} XXH128_hash_t; + +XXH_PUBLIC_API XXH128_hash_t XXH3_128bits(const void* data, size_t len); +XXH_PUBLIC_API XXH128_hash_t XXH3_128bits_withSeed(const void* data, size_t len, XXH64_hash_t seed); +XXH_PUBLIC_API XXH128_hash_t XXH3_128bits_withSecret(const void* data, size_t len, const void* secret, size_t secretSize); + +/******* Streaming *******/ +/* + * Streaming requires state maintenance. + * This operation costs memory and CPU. + * As a consequence, streaming is slower than one-shot hashing. + * For better performance, prefer one-shot functions whenever applicable. + * + * XXH3_128bits uses the same XXH3_state_t as XXH3_64bits(). + * Use already declared XXH3_createState() and XXH3_freeState(). + * + * All reset and streaming functions have same meaning as their 64-bit counterpart. + */ + +XXH_PUBLIC_API XXH_errorcode XXH3_128bits_reset(XXH3_state_t* statePtr); +XXH_PUBLIC_API XXH_errorcode XXH3_128bits_reset_withSeed(XXH3_state_t* statePtr, XXH64_hash_t seed); +XXH_PUBLIC_API XXH_errorcode XXH3_128bits_reset_withSecret(XXH3_state_t* statePtr, const void* secret, size_t secretSize); + +XXH_PUBLIC_API XXH_errorcode XXH3_128bits_update (XXH3_state_t* statePtr, const void* input, size_t length); +XXH_PUBLIC_API XXH128_hash_t XXH3_128bits_digest (const XXH3_state_t* statePtr); + +/* Following helper functions make it possible to compare XXH128_hast_t values. + * Since XXH128_hash_t is a structure, this capability is not offered by the language. + * Note: For better performance, these functions can be inlined using XXH_INLINE_ALL */ + +/*! + * XXH128_isEqual(): + * Return: 1 if `h1` and `h2` are equal, 0 if they are not. + */ +XXH_PUBLIC_API int XXH128_isEqual(XXH128_hash_t h1, XXH128_hash_t h2); + +/*! + * XXH128_cmp(): + * + * This comparator is compatible with stdlib's `qsort()`/`bsearch()`. + * + * return: >0 if *h128_1 > *h128_2 + * =0 if *h128_1 == *h128_2 + * <0 if *h128_1 < *h128_2 + */ +XXH_PUBLIC_API int XXH128_cmp(const void* h128_1, const void* h128_2); + + +/******* Canonical representation *******/ +typedef struct { unsigned char digest[sizeof(XXH128_hash_t)]; } XXH128_canonical_t; +XXH_PUBLIC_API void XXH128_canonicalFromHash(XXH128_canonical_t* dst, XXH128_hash_t hash); +XXH_PUBLIC_API XXH128_hash_t XXH128_hashFromCanonical(const XXH128_canonical_t* src); + + +#endif /* XXH_NO_LONG_LONG */ + +/*! + * @} + */ +#endif /* XXHASH_H_5627135585666179 */ + + + +#if defined(XXH_STATIC_LINKING_ONLY) && !defined(XXHASH_H_STATIC_13879238742) +#define XXHASH_H_STATIC_13879238742 +/* **************************************************************************** + * This section contains declarations which are not guaranteed to remain stable. + * They may change in future versions, becoming incompatible with a different + * version of the library. + * These declarations should only be used with static linking. + * Never use them in association with dynamic linking! + ***************************************************************************** */ + +/* + * These definitions are only present to allow static allocation + * of XXH states, on stack or in a struct, for example. + * Never **ever** access their members directly. + */ + +/*! + * @internal + * @brief Structure for XXH32 streaming API. + * + * @note This is only defined when @ref XXH_STATIC_LINKING_ONLY, + * @ref XXH_INLINE_ALL, or @ref XXH_IMPLEMENTATION is defined. Otherwise it is + * an opaque type. This allows fields to safely be changed. + * + * Typedef'd to @ref XXH32_state_t. + * Do not access the members of this struct directly. + * @see XXH64_state_s, XXH3_state_s + */ +struct XXH32_state_s { + XXH32_hash_t total_len_32; /*!< Total length hashed, modulo 2^32 */ + XXH32_hash_t large_len; /*!< Whether the hash is >= 16 (handles @ref total_len_32 overflow) */ + XXH32_hash_t v1; /*!< First accumulator lane */ + XXH32_hash_t v2; /*!< Second accumulator lane */ + XXH32_hash_t v3; /*!< Third accumulator lane */ + XXH32_hash_t v4; /*!< Fourth accumulator lane */ + XXH32_hash_t mem32[4]; /*!< Internal buffer for partial reads. Treated as unsigned char[16]. */ + XXH32_hash_t memsize; /*!< Amount of data in @ref mem32 */ + XXH32_hash_t reserved; /*!< Reserved field. Do not read or write to it, it may be removed. */ +}; /* typedef'd to XXH32_state_t */ + + +#ifndef XXH_NO_LONG_LONG /* defined when there is no 64-bit support */ + +/*! + * @internal + * @brief Structure for XXH64 streaming API. + * + * @note This is only defined when @ref XXH_STATIC_LINKING_ONLY, + * @ref XXH_INLINE_ALL, or @ref XXH_IMPLEMENTATION is defined. Otherwise it is + * an opaque type. This allows fields to safely be changed. + * + * Typedef'd to @ref XXH64_state_t. + * Do not access the members of this struct directly. + * @see XXH32_state_s, XXH3_state_s + */ +struct XXH64_state_s { + XXH64_hash_t total_len; /*!< Total length hashed. This is always 64-bit. */ + XXH64_hash_t v1; /*!< First accumulator lane */ + XXH64_hash_t v2; /*!< Second accumulator lane */ + XXH64_hash_t v3; /*!< Third accumulator lane */ + XXH64_hash_t v4; /*!< Fourth accumulator lane */ + XXH64_hash_t mem64[4]; /*!< Internal buffer for partial reads. Treated as unsigned char[32]. */ + XXH32_hash_t memsize; /*!< Amount of data in @ref mem64 */ + XXH32_hash_t reserved32; /*!< Reserved field, needed for padding anyways*/ + XXH64_hash_t reserved64; /*!< Reserved field. Do not read or write to it, it may be removed. */ +}; /* typedef'd to XXH64_state_t */ + +#if defined (__STDC_VERSION__) && (__STDC_VERSION__ >= 201112L) /* C11+ */ +# include +# define XXH_ALIGN(n) alignas(n) +#elif defined(__GNUC__) +# define XXH_ALIGN(n) __attribute__ ((aligned(n))) +#elif defined(_MSC_VER) +# define XXH_ALIGN(n) __declspec(align(n)) +#else +# define XXH_ALIGN(n) /* disabled */ +#endif + +/* Old GCC versions only accept the attribute after the type in structures. */ +#if !(defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 201112L)) /* C11+ */ \ + && defined(__GNUC__) +# define XXH_ALIGN_MEMBER(align, type) type XXH_ALIGN(align) +#else +# define XXH_ALIGN_MEMBER(align, type) XXH_ALIGN(align) type +#endif + +/*! + * @brief The size of the internal XXH3 buffer. + * + * This is the optimal update size for incremental hashing. + * + * @see XXH3_64b_update(), XXH3_128b_update(). + */ +#define XXH3_INTERNALBUFFER_SIZE 256 + +/*! + * @brief Default size of the secret buffer (and @ref XXH3_kSecret). + * + * This is the size used in @ref XXH3_kSecret and the seeded functions. + * + * Not to be confused with @ref XXH3_SECRET_SIZE_MIN. + */ +#define XXH3_SECRET_DEFAULT_SIZE 192 + +/*! + * @internal + * @brief Structure for XXH3 streaming API. + * + * @note This is only defined when @ref XXH_STATIC_LINKING_ONLY, + * @ref XXH_INLINE_ALL, or @ref XXH_IMPLEMENTATION is defined. Otherwise it is + * an opaque type. This allows fields to safely be changed. + * + * @note **This structure has a strict alignment requirement of 64 bytes.** Do + * not allocate this with `malloc()` or `new`, it will not be sufficiently + * aligned. Use @ref XXH3_createState() and @ref XXH3_freeState(), or stack + * allocation. + * + * Typedef'd to @ref XXH3_state_t. + * Do not access the members of this struct directly. + * + * @see XXH3_INITSTATE() for stack initialization. + * @see XXH3_createState(), XXH3_freeState(). + * @see XXH32_state_s, XXH64_state_s + */ +struct XXH3_state_s { + XXH_ALIGN_MEMBER(64, XXH64_hash_t acc[8]); + /*!< The 8 accumulators. Similar to `vN` in @ref XXH32_state_s::v1 and @ref XXH64_state_s */ + XXH_ALIGN_MEMBER(64, unsigned char customSecret[XXH3_SECRET_DEFAULT_SIZE]); + /*!< Used to store a custom secret generated from a seed. */ + XXH_ALIGN_MEMBER(64, unsigned char buffer[XXH3_INTERNALBUFFER_SIZE]); + /*!< The internal buffer. @see XXH32_state_s::mem32 */ + XXH32_hash_t bufferedSize; + /*!< The amount of memory in @ref buffer, @see XXH32_state_s::memsize */ + XXH32_hash_t reserved32; + /*!< Reserved field. Needed for padding on 64-bit. */ + size_t nbStripesSoFar; + /*!< Number or stripes processed. */ + XXH64_hash_t totalLen; + /*!< Total length hashed. 64-bit even on 32-bit targets. */ + size_t nbStripesPerBlock; + /*!< Number of stripes per block. */ + size_t secretLimit; + /*!< Size of @ref customSecret or @ref extSecret */ + XXH64_hash_t seed; + /*!< Seed for _withSeed variants. Must be zero otherwise, @see XXH3_INITSTATE() */ + XXH64_hash_t reserved64; + /*!< Reserved field. */ + const unsigned char* extSecret; + /*!< Reference to an external secret for the _withSecret variants, NULL + * for other variants. */ + /* note: there may be some padding at the end due to alignment on 64 bytes */ +}; /* typedef'd to XXH3_state_t */ + +#undef XXH_ALIGN_MEMBER + +/*! + * @brief Initializes a stack-allocated `XXH3_state_s`. + * + * When the @ref XXH3_state_t structure is merely emplaced on stack, + * it should be initialized with XXH3_INITSTATE() or a memset() + * in case its first reset uses XXH3_NNbits_reset_withSeed(). + * This init can be omitted if the first reset uses default or _withSecret mode. + * This operation isn't necessary when the state is created with XXH3_createState(). + * Note that this doesn't prepare the state for a streaming operation, + * it's still necessary to use XXH3_NNbits_reset*() afterwards. + */ +#define XXH3_INITSTATE(XXH3_state_ptr) { (XXH3_state_ptr)->seed = 0; } + + +/* === Experimental API === */ +/* Symbols defined below must be considered tied to a specific library version. */ + +/* + * XXH3_generateSecret(): + * + * Derive a high-entropy secret from any user-defined content, named customSeed. + * The generated secret can be used in combination with `*_withSecret()` functions. + * The `_withSecret()` variants are useful to provide a higher level of protection than 64-bit seed, + * as it becomes much more difficult for an external actor to guess how to impact the calculation logic. + * + * The function accepts as input a custom seed of any length and any content, + * and derives from it a high-entropy secret of length XXH3_SECRET_DEFAULT_SIZE + * into an already allocated buffer secretBuffer. + * The generated secret is _always_ XXH_SECRET_DEFAULT_SIZE bytes long. + * + * The generated secret can then be used with any `*_withSecret()` variant. + * Functions `XXH3_128bits_withSecret()`, `XXH3_64bits_withSecret()`, + * `XXH3_128bits_reset_withSecret()` and `XXH3_64bits_reset_withSecret()` + * are part of this list. They all accept a `secret` parameter + * which must be very long for implementation reasons (>= XXH3_SECRET_SIZE_MIN) + * _and_ feature very high entropy (consist of random-looking bytes). + * These conditions can be a high bar to meet, so + * this function can be used to generate a secret of proper quality. + * + * customSeed can be anything. It can have any size, even small ones, + * and its content can be anything, even stupidly "low entropy" source such as a bunch of zeroes. + * The resulting `secret` will nonetheless provide all expected qualities. + * + * Supplying NULL as the customSeed copies the default secret into `secretBuffer`. + * When customSeedSize > 0, supplying NULL as customSeed is undefined behavior. + */ +XXH_PUBLIC_API void XXH3_generateSecret(void* secretBuffer, const void* customSeed, size_t customSeedSize); + + +/* simple short-cut to pre-selected XXH3_128bits variant */ +XXH_PUBLIC_API XXH128_hash_t XXH128(const void* data, size_t len, XXH64_hash_t seed); + + +#endif /* XXH_NO_LONG_LONG */ +#if defined(XXH_INLINE_ALL) || defined(XXH_PRIVATE_API) +# define XXH_IMPLEMENTATION +#endif + +#endif /* defined(XXH_STATIC_LINKING_ONLY) && !defined(XXHASH_H_STATIC_13879238742) */ + + +/* ======================================================================== */ +/* ======================================================================== */ +/* ======================================================================== */ + + +/*-********************************************************************** + * xxHash implementation + *-********************************************************************** + * xxHash's implementation used to be hosted inside xxhash.c. + * + * However, inlining requires implementation to be visible to the compiler, + * hence be included alongside the header. + * Previously, implementation was hosted inside xxhash.c, + * which was then #included when inlining was activated. + * This construction created issues with a few build and install systems, + * as it required xxhash.c to be stored in /include directory. + * + * xxHash implementation is now directly integrated within xxhash.h. + * As a consequence, xxhash.c is no longer needed in /include. + * + * xxhash.c is still available and is still useful. + * In a "normal" setup, when xxhash is not inlined, + * xxhash.h only exposes the prototypes and public symbols, + * while xxhash.c can be built into an object file xxhash.o + * which can then be linked into the final binary. + ************************************************************************/ + +#if ( defined(XXH_INLINE_ALL) || defined(XXH_PRIVATE_API) \ + || defined(XXH_IMPLEMENTATION) ) && !defined(XXH_IMPLEM_13a8737387) +# define XXH_IMPLEM_13a8737387 + +/* ************************************* +* Tuning parameters +***************************************/ + +/*! + * @defgroup tuning Tuning parameters + * @{ + * + * Various macros to control xxHash's behavior. + */ +#ifdef XXH_DOXYGEN +/*! + * @brief Define this to disable 64-bit code. + * + * Useful if only using the @ref xxh32_family and you have a strict C90 compiler. + */ +# define XXH_NO_LONG_LONG +# undef XXH_NO_LONG_LONG /* don't actually */ +/*! + * @brief Controls how unaligned memory is accessed. + * + * By default, access to unaligned memory is controlled by `memcpy()`, which is + * safe and portable. + * + * Unfortunately, on some target/compiler combinations, the generated assembly + * is sub-optimal. + * + * The below switch allow selection of a different access method + * in the search for improved performance. + * + * @par Possible options: + * + * - `XXH_FORCE_MEMORY_ACCESS=0` (default): `memcpy` + * @par + * Use `memcpy()`. Safe and portable. Note that most modern compilers will + * eliminate the function call and treat it as an unaligned access. + * + * - `XXH_FORCE_MEMORY_ACCESS=1`: `__attribute__((packed))` + * @par + * Depends on compiler extensions and is therefore not portable. + * This method is safe _if_ your compiler supports it, + * and *generally* as fast or faster than `memcpy`. + * + * - `XXH_FORCE_MEMORY_ACCESS=2`: Direct cast + * @par + * Casts directly and dereferences. This method doesn't depend on the + * compiler, but it violates the C standard as it directly dereferences an + * unaligned pointer. It can generate buggy code on targets which do not + * support unaligned memory accesses, but in some circumstances, it's the + * only known way to get the most performance. + * + * - `XXH_FORCE_MEMORY_ACCESS=3`: Byteshift + * @par + * Also portable. This can generate the best code on old compilers which don't + * inline small `memcpy()` calls, and it might also be faster on big-endian + * systems which lack a native byteswap instruction. However, some compilers + * will emit literal byteshifts even if the target supports unaligned access. + * . + * + * @warning + * Methods 1 and 2 rely on implementation-defined behavior. Use these with + * care, as what works on one compiler/platform/optimization level may cause + * another to read garbage data or even crash. + * + * See https://stackoverflow.com/a/32095106/646947 for details. + * + * Prefer these methods in priority order (0 > 3 > 1 > 2) + */ +# define XXH_FORCE_MEMORY_ACCESS 0 +/*! + * @def XXH_ACCEPT_NULL_INPUT_POINTER + * @brief Whether to add explicit `NULL` checks. + * + * If the input pointer is `NULL` and the length is non-zero, xxHash's default + * behavior is to dereference it, triggering a segfault. + * + * When this macro is enabled, xxHash actively checks the input for a null pointer. + * If it is, the result for null input pointers is the same as a zero-length input. + */ +# define XXH_ACCEPT_NULL_INPUT_POINTER 0 +/*! + * @def XXH_FORCE_ALIGN_CHECK + * @brief If defined to non-zero, adds a special path for aligned inputs (XXH32() + * and XXH64() only). + * + * This is an important performance trick for architectures without decent + * unaligned memory access performance. + * + * It checks for input alignment, and when conditions are met, uses a "fast + * path" employing direct 32-bit/64-bit reads, resulting in _dramatically + * faster_ read speed. + * + * The check costs one initial branch per hash, which is generally negligible, + * but not zero. + * + * Moreover, it's not useful to generate an additional code path if memory + * access uses the same instruction for both aligned and unaligned + * addresses (e.g. x86 and aarch64). + * + * In these cases, the alignment check can be removed by setting this macro to 0. + * Then the code will always use unaligned memory access. + * Align check is automatically disabled on x86, x64 & arm64, + * which are platforms known to offer good unaligned memory accesses performance. + * + * This option does not affect XXH3 (only XXH32 and XXH64). + */ +# define XXH_FORCE_ALIGN_CHECK 0 + +/*! + * @def XXH_NO_INLINE_HINTS + * @brief When non-zero, sets all functions to `static`. + * + * By default, xxHash tries to force the compiler to inline almost all internal + * functions. + * + * This can usually improve performance due to reduced jumping and improved + * constant folding, but significantly increases the size of the binary which + * might not be favorable. + * + * Additionally, sometimes the forced inlining can be detrimental to performance, + * depending on the architecture. + * + * XXH_NO_INLINE_HINTS marks all internal functions as static, giving the + * compiler full control on whether to inline or not. + * + * When not optimizing (-O0), optimizing for size (-Os, -Oz), or using + * -fno-inline with GCC or Clang, this will automatically be defined. + */ +# define XXH_NO_INLINE_HINTS 0 + +/*! + * @def XXH_REROLL + * @brief Whether to reroll `XXH32_finalize` and `XXH64_finalize`. + * + * For performance, `XXH32_finalize` and `XXH64_finalize` use an unrolled loop + * in the form of a switch statement. + * + * This is not always desirable, as it generates larger code, and depending on + * the architecture, may even be slower + * + * This is automatically defined with `-Os`/`-Oz` on GCC and Clang. + */ +# define XXH_REROLL 0 + +/*! + * @internal + * @brief Redefines old internal names. + * + * For compatibility with code that uses xxHash's internals before the names + * were changed to improve namespacing. There is no other reason to use this. + */ +# define XXH_OLD_NAMES +# undef XXH_OLD_NAMES /* don't actually use, it is ugly. */ +#endif /* XXH_DOXYGEN */ +/*! + * @} + */ + +#ifndef XXH_FORCE_MEMORY_ACCESS /* can be defined externally, on command line for example */ + /* prefer __packed__ structures (method 1) for gcc on armv7 and armv8 */ +# if !defined(__clang__) && ( \ + (defined(__INTEL_COMPILER) && !defined(_WIN32)) || \ + (defined(__GNUC__) && (defined(__ARM_ARCH) && __ARM_ARCH >= 7)) ) +# define XXH_FORCE_MEMORY_ACCESS 1 +# endif +#endif + +#ifndef XXH_ACCEPT_NULL_INPUT_POINTER /* can be defined externally */ +# define XXH_ACCEPT_NULL_INPUT_POINTER 0 +#endif + +#ifndef XXH_FORCE_ALIGN_CHECK /* can be defined externally */ +# if defined(__i386) || defined(__x86_64__) || defined(__aarch64__) \ + || defined(_M_IX86) || defined(_M_X64) || defined(_M_ARM64) /* visual */ +# define XXH_FORCE_ALIGN_CHECK 0 +# else +# define XXH_FORCE_ALIGN_CHECK 1 +# endif +#endif + +#ifndef XXH_NO_INLINE_HINTS +# if defined(__OPTIMIZE_SIZE__) /* -Os, -Oz */ \ + || defined(__NO_INLINE__) /* -O0, -fno-inline */ +# define XXH_NO_INLINE_HINTS 1 +# else +# define XXH_NO_INLINE_HINTS 0 +# endif +#endif + +#ifndef XXH_REROLL +# if defined(__OPTIMIZE_SIZE__) +# define XXH_REROLL 1 +# else +# define XXH_REROLL 0 +# endif +#endif + +/*! + * @defgroup impl Implementation + * @{ + */ + + +/* ************************************* +* Includes & Memory related functions +***************************************/ +/* + * Modify the local functions below should you wish to use + * different memory routines for malloc() and free() + */ +#include + +/*! + * @internal + * @brief Modify this function to use a different routine than malloc(). + */ +static void* XXH_malloc(size_t s) { return malloc(s); } + +/*! + * @internal + * @brief Modify this function to use a different routine than free(). + */ +static void XXH_free(void* p) { free(p); } + +#include + +/*! + * @internal + * @brief Modify this function to use a different routine than memcpy(). + */ +static void* XXH_memcpy(void* dest, const void* src, size_t size) +{ + return memcpy(dest,src,size); +} + +#include /* ULLONG_MAX */ + + +/* ************************************* +* Compiler Specific Options +***************************************/ +#ifdef _MSC_VER /* Visual Studio warning fix */ +# pragma warning(disable : 4127) /* disable: C4127: conditional expression is constant */ +#endif + +#if XXH_NO_INLINE_HINTS /* disable inlining hints */ +# if defined(__GNUC__) +# define XXH_FORCE_INLINE static __attribute__((unused)) +# else +# define XXH_FORCE_INLINE static +# endif +# define XXH_NO_INLINE static +/* enable inlining hints */ +#elif defined(_MSC_VER) /* Visual Studio */ +# define XXH_FORCE_INLINE static __forceinline +# define XXH_NO_INLINE static __declspec(noinline) +#elif defined(__GNUC__) +# define XXH_FORCE_INLINE static __inline__ __attribute__((always_inline, unused)) +# define XXH_NO_INLINE static __attribute__((noinline)) +#elif defined (__cplusplus) \ + || (defined (__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L)) /* C99 */ +# define XXH_FORCE_INLINE static inline +# define XXH_NO_INLINE static +#else +# define XXH_FORCE_INLINE static +# define XXH_NO_INLINE static +#endif + + + +/* ************************************* +* Debug +***************************************/ +/*! + * @ingroup tuning + * @def XXH_DEBUGLEVEL + * @brief Sets the debugging level. + * + * XXH_DEBUGLEVEL is expected to be defined externally, typically via the + * compiler's command line options. The value must be a number. + */ +#ifndef XXH_DEBUGLEVEL +# ifdef DEBUGLEVEL /* backwards compat */ +# define XXH_DEBUGLEVEL DEBUGLEVEL +# else +# define XXH_DEBUGLEVEL 0 +# endif +#endif + +#if (XXH_DEBUGLEVEL>=1) +# include /* note: can still be disabled with NDEBUG */ +# define XXH_ASSERT(c) assert(c) +#else +# define XXH_ASSERT(c) ((void)0) +#endif + +/* note: use after variable declarations */ +#define XXH_STATIC_ASSERT(c) do { enum { XXH_sa = 1/(int)(!!(c)) }; } while (0) + + +/* ************************************* +* Basic Types +***************************************/ +#if !defined (__VMS) \ + && (defined (__cplusplus) \ + || (defined (__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L) /* C99 */) ) +# include + typedef uint8_t xxh_u8; +#else + typedef unsigned char xxh_u8; +#endif +typedef XXH32_hash_t xxh_u32; + +#ifdef XXH_OLD_NAMES +# define BYTE xxh_u8 +# define U8 xxh_u8 +# define U32 xxh_u32 +#endif + +/* *** Memory access *** */ + +/*! + * @internal + * @fn xxh_u32 XXH_read32(const void* ptr) + * @brief Reads an unaligned 32-bit integer from @p ptr in native endianness. + * + * Affected by @ref XXH_FORCE_MEMORY_ACCESS. + * + * @param ptr The pointer to read from. + * @return The 32-bit native endian integer from the bytes at @p ptr. + */ + +/*! + * @internal + * @fn xxh_u32 XXH_readLE32(const void* ptr) + * @brief Reads an unaligned 32-bit little endian integer from @p ptr. + * + * Affected by @ref XXH_FORCE_MEMORY_ACCESS. + * + * @param ptr The pointer to read from. + * @return The 32-bit little endian integer from the bytes at @p ptr. + */ + +/*! + * @internal + * @fn xxh_u32 XXH_readBE32(const void* ptr) + * @brief Reads an unaligned 32-bit big endian integer from @p ptr. + * + * Affected by @ref XXH_FORCE_MEMORY_ACCESS. + * + * @param ptr The pointer to read from. + * @return The 32-bit big endian integer from the bytes at @p ptr. + */ + +/*! + * @internal + * @fn xxh_u32 XXH_readLE32_align(const void* ptr, XXH_alignment align) + * @brief Like @ref XXH_readLE32(), but has an option for aligned reads. + * + * Affected by @ref XXH_FORCE_MEMORY_ACCESS. + * Note that when @ref XXH_FORCE_ALIGN_CHECK == 0, the @p align parameter is + * always @ref XXH_alignment::XXH_unaligned. + * + * @param ptr The pointer to read from. + * @param align Whether @p ptr is aligned. + * @pre + * If @p align == @ref XXH_alignment::XXH_aligned, @p ptr must be 4 byte + * aligned. + * @return The 32-bit little endian integer from the bytes at @p ptr. + */ + +#if (defined(XXH_FORCE_MEMORY_ACCESS) && (XXH_FORCE_MEMORY_ACCESS==3)) +/* + * Manual byteshift. Best for old compilers which don't inline memcpy. + * We actually directly use XXH_readLE32 and XXH_readBE32. + */ +#elif (defined(XXH_FORCE_MEMORY_ACCESS) && (XXH_FORCE_MEMORY_ACCESS==2)) + +/* + * Force direct memory access. Only works on CPU which support unaligned memory + * access in hardware. + */ +static xxh_u32 XXH_read32(const void* memPtr) { return *(const xxh_u32*) memPtr; } + +#elif (defined(XXH_FORCE_MEMORY_ACCESS) && (XXH_FORCE_MEMORY_ACCESS==1)) + +/* + * __pack instructions are safer but compiler specific, hence potentially + * problematic for some compilers. + * + * Currently only defined for GCC and ICC. + */ +#ifdef XXH_OLD_NAMES +typedef union { xxh_u32 u32; } __attribute__((packed)) unalign; +#endif +static xxh_u32 XXH_read32(const void* ptr) +{ + typedef union { xxh_u32 u32; } __attribute__((packed)) xxh_unalign; + return ((const xxh_unalign*)ptr)->u32; +} + +#else + +/* + * Portable and safe solution. Generally efficient. + * see: https://stackoverflow.com/a/32095106/646947 + */ +static xxh_u32 XXH_read32(const void* memPtr) +{ + xxh_u32 val; + memcpy(&val, memPtr, sizeof(val)); + return val; +} + +#endif /* XXH_FORCE_DIRECT_MEMORY_ACCESS */ + + +/* *** Endianness *** */ +typedef enum { XXH_bigEndian=0, XXH_littleEndian=1 } XXH_endianess; + +/*! + * @ingroup tuning + * @def XXH_CPU_LITTLE_ENDIAN + * @brief Whether the target is little endian. + * + * Defined to 1 if the target is little endian, or 0 if it is big endian. + * It can be defined externally, for example on the compiler command line. + * + * If it is not defined, a runtime check (which is usually constant folded) + * is used instead. + * + * @note + * This is not necessarily defined to an integer constant. + * + * @see XXH_isLittleEndian() for the runtime check. + */ +#ifndef XXH_CPU_LITTLE_ENDIAN +/* + * Try to detect endianness automatically, to avoid the nonstandard behavior + * in `XXH_isLittleEndian()` + */ +# if defined(_WIN32) /* Windows is always little endian */ \ + || defined(__LITTLE_ENDIAN__) \ + || (defined(__BYTE_ORDER__) && __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__) +# define XXH_CPU_LITTLE_ENDIAN 1 +# elif defined(__BIG_ENDIAN__) \ + || (defined(__BYTE_ORDER__) && __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__) +# define XXH_CPU_LITTLE_ENDIAN 0 +# else +/*! + * @internal + * @brief Runtime check for @ref XXH_CPU_LITTLE_ENDIAN. + * + * Most compilers will constant fold this. + */ +static int XXH_isLittleEndian(void) +{ + /* + * Portable and well-defined behavior. + * Don't use static: it is detrimental to performance. + */ + const union { xxh_u32 u; xxh_u8 c[4]; } one = { 1 }; + return one.c[0]; +} +# define XXH_CPU_LITTLE_ENDIAN XXH_isLittleEndian() +# endif +#endif + + + + +/* **************************************** +* Compiler-specific Functions and Macros +******************************************/ +#define XXH_GCC_VERSION (__GNUC__ * 100 + __GNUC_MINOR__) + +#ifdef __has_builtin +# define XXH_HAS_BUILTIN(x) __has_builtin(x) +#else +# define XXH_HAS_BUILTIN(x) 0 +#endif + +/*! + * @internal + * @def XXH_rotl32(x,r) + * @brief 32-bit rotate left. + * + * @param x The 32-bit integer to be rotated. + * @param r The number of bits to rotate. + * @pre + * @p r > 0 && @p r < 32 + * @note + * @p x and @p r may be evaluated multiple times. + * @return The rotated result. + */ +#if !defined(NO_CLANG_BUILTIN) && XXH_HAS_BUILTIN(__builtin_rotateleft32) \ + && XXH_HAS_BUILTIN(__builtin_rotateleft64) +# define XXH_rotl32 __builtin_rotateleft32 +# define XXH_rotl64 __builtin_rotateleft64 +/* Note: although _rotl exists for minGW (GCC under windows), performance seems poor */ +#elif defined(_MSC_VER) +# define XXH_rotl32(x,r) _rotl(x,r) +# define XXH_rotl64(x,r) _rotl64(x,r) +#else +# define XXH_rotl32(x,r) (((x) << (r)) | ((x) >> (32 - (r)))) +# define XXH_rotl64(x,r) (((x) << (r)) | ((x) >> (64 - (r)))) +#endif + +/*! + * @internal + * @fn xxh_u32 XXH_swap32(xxh_u32 x) + * @brief A 32-bit byteswap. + * + * @param x The 32-bit integer to byteswap. + * @return @p x, byteswapped. + */ +#if defined(_MSC_VER) /* Visual Studio */ +# define XXH_swap32 _byteswap_ulong +#elif XXH_GCC_VERSION >= 403 +# define XXH_swap32 __builtin_bswap32 +#else +static xxh_u32 XXH_swap32 (xxh_u32 x) +{ + return ((x << 24) & 0xff000000 ) | + ((x << 8) & 0x00ff0000 ) | + ((x >> 8) & 0x0000ff00 ) | + ((x >> 24) & 0x000000ff ); +} +#endif + + +/* *************************** +* Memory reads +*****************************/ + +/*! + * @internal + * @brief Enum to indicate whether a pointer is aligned. + */ +typedef enum { + XXH_aligned, /*!< Aligned */ + XXH_unaligned /*!< Possibly unaligned */ +} XXH_alignment; + +/* + * XXH_FORCE_MEMORY_ACCESS==3 is an endian-independent byteshift load. + * + * This is ideal for older compilers which don't inline memcpy. + */ +#if (defined(XXH_FORCE_MEMORY_ACCESS) && (XXH_FORCE_MEMORY_ACCESS==3)) + +XXH_FORCE_INLINE xxh_u32 XXH_readLE32(const void* memPtr) +{ + const xxh_u8* bytePtr = (const xxh_u8 *)memPtr; + return bytePtr[0] + | ((xxh_u32)bytePtr[1] << 8) + | ((xxh_u32)bytePtr[2] << 16) + | ((xxh_u32)bytePtr[3] << 24); +} + +XXH_FORCE_INLINE xxh_u32 XXH_readBE32(const void* memPtr) +{ + const xxh_u8* bytePtr = (const xxh_u8 *)memPtr; + return bytePtr[3] + | ((xxh_u32)bytePtr[2] << 8) + | ((xxh_u32)bytePtr[1] << 16) + | ((xxh_u32)bytePtr[0] << 24); +} + +#else +XXH_FORCE_INLINE xxh_u32 XXH_readLE32(const void* ptr) +{ + return XXH_CPU_LITTLE_ENDIAN ? XXH_read32(ptr) : XXH_swap32(XXH_read32(ptr)); +} + +static xxh_u32 XXH_readBE32(const void* ptr) +{ + return XXH_CPU_LITTLE_ENDIAN ? XXH_swap32(XXH_read32(ptr)) : XXH_read32(ptr); +} +#endif + +XXH_FORCE_INLINE xxh_u32 +XXH_readLE32_align(const void* ptr, XXH_alignment align) +{ + if (align==XXH_unaligned) { + return XXH_readLE32(ptr); + } else { + return XXH_CPU_LITTLE_ENDIAN ? *(const xxh_u32*)ptr : XXH_swap32(*(const xxh_u32*)ptr); + } +} + + +/* ************************************* +* Misc +***************************************/ +/*! @ingroup public */ +XXH_PUBLIC_API unsigned XXH_versionNumber (void) { return XXH_VERSION_NUMBER; } + + +/* ******************************************************************* +* 32-bit hash functions +*********************************************************************/ +/*! + * @} + * @defgroup xxh32_impl XXH32 implementation + * @ingroup impl + * @{ + */ +static const xxh_u32 XXH_PRIME32_1 = 0x9E3779B1U; /*!< 0b10011110001101110111100110110001 */ +static const xxh_u32 XXH_PRIME32_2 = 0x85EBCA77U; /*!< 0b10000101111010111100101001110111 */ +static const xxh_u32 XXH_PRIME32_3 = 0xC2B2AE3DU; /*!< 0b11000010101100101010111000111101 */ +static const xxh_u32 XXH_PRIME32_4 = 0x27D4EB2FU; /*!< 0b00100111110101001110101100101111 */ +static const xxh_u32 XXH_PRIME32_5 = 0x165667B1U; /*!< 0b00010110010101100110011110110001 */ + +#ifdef XXH_OLD_NAMES +# define PRIME32_1 XXH_PRIME32_1 +# define PRIME32_2 XXH_PRIME32_2 +# define PRIME32_3 XXH_PRIME32_3 +# define PRIME32_4 XXH_PRIME32_4 +# define PRIME32_5 XXH_PRIME32_5 +#endif + +/*! + * @internal + * @brief Normal stripe processing routine. + * + * This shuffles the bits so that any bit from @p input impacts several bits in + * @p acc. + * + * @param acc The accumulator lane. + * @param input The stripe of input to mix. + * @return The mixed accumulator lane. + */ +static xxh_u32 XXH32_round(xxh_u32 acc, xxh_u32 input) +{ + acc += input * XXH_PRIME32_2; + acc = XXH_rotl32(acc, 13); + acc *= XXH_PRIME32_1; +#if defined(__GNUC__) && defined(__SSE4_1__) && !defined(XXH_ENABLE_AUTOVECTORIZE) + /* + * UGLY HACK: + * This inline assembly hack forces acc into a normal register. This is the + * only thing that prevents GCC and Clang from autovectorizing the XXH32 + * loop (pragmas and attributes don't work for some reason) without globally + * disabling SSE4.1. + * + * The reason we want to avoid vectorization is because despite working on + * 4 integers at a time, there are multiple factors slowing XXH32 down on + * SSE4: + * - There's a ridiculous amount of lag from pmulld (10 cycles of latency on + * newer chips!) making it slightly slower to multiply four integers at + * once compared to four integers independently. Even when pmulld was + * fastest, Sandy/Ivy Bridge, it is still not worth it to go into SSE + * just to multiply unless doing a long operation. + * + * - Four instructions are required to rotate, + * movqda tmp, v // not required with VEX encoding + * pslld tmp, 13 // tmp <<= 13 + * psrld v, 19 // x >>= 19 + * por v, tmp // x |= tmp + * compared to one for scalar: + * roll v, 13 // reliably fast across the board + * shldl v, v, 13 // Sandy Bridge and later prefer this for some reason + * + * - Instruction level parallelism is actually more beneficial here because + * the SIMD actually serializes this operation: While v1 is rotating, v2 + * can load data, while v3 can multiply. SSE forces them to operate + * together. + * + * How this hack works: + * __asm__("" // Declare an assembly block but don't declare any instructions + * : // However, as an Input/Output Operand, + * "+r" // constrain a read/write operand (+) as a general purpose register (r). + * (acc) // and set acc as the operand + * ); + * + * Because of the 'r', the compiler has promised that seed will be in a + * general purpose register and the '+' says that it will be 'read/write', + * so it has to assume it has changed. It is like volatile without all the + * loads and stores. + * + * Since the argument has to be in a normal register (not an SSE register), + * each time XXH32_round is called, it is impossible to vectorize. + */ + __asm__("" : "+r" (acc)); +#endif + return acc; +} + +/*! + * @internal + * @brief Mixes all bits to finalize the hash. + * + * The final mix ensures that all input bits have a chance to impact any bit in + * the output digest, resulting in an unbiased distribution. + * + * @param h32 The hash to avalanche. + * @return The avalanched hash. + */ +static xxh_u32 XXH32_avalanche(xxh_u32 h32) +{ + h32 ^= h32 >> 15; + h32 *= XXH_PRIME32_2; + h32 ^= h32 >> 13; + h32 *= XXH_PRIME32_3; + h32 ^= h32 >> 16; + return(h32); +} + +#define XXH_get32bits(p) XXH_readLE32_align(p, align) + +/*! + * @internal + * @brief Processes the last 0-15 bytes of @p ptr. + * + * There may be up to 15 bytes remaining to consume from the input. + * This final stage will digest them to ensure that all input bytes are present + * in the final mix. + * + * @param h32 The hash to finalize. + * @param ptr The pointer to the remaining input. + * @param len The remaining length, modulo 16. + * @param align Whether @p ptr is aligned. + * @return The finalized hash. + */ +static xxh_u32 +XXH32_finalize(xxh_u32 h32, const xxh_u8* ptr, size_t len, XXH_alignment align) +{ +#define XXH_PROCESS1 do { \ + h32 += (*ptr++) * XXH_PRIME32_5; \ + h32 = XXH_rotl32(h32, 11) * XXH_PRIME32_1; \ +} while (0) + +#define XXH_PROCESS4 do { \ + h32 += XXH_get32bits(ptr) * XXH_PRIME32_3; \ + ptr += 4; \ + h32 = XXH_rotl32(h32, 17) * XXH_PRIME32_4; \ +} while (0) + + /* Compact rerolled version */ + if (XXH_REROLL) { + len &= 15; + while (len >= 4) { + XXH_PROCESS4; + len -= 4; + } + while (len > 0) { + XXH_PROCESS1; + --len; + } + return XXH32_avalanche(h32); + } else { + switch(len&15) /* or switch(bEnd - p) */ { + case 12: XXH_PROCESS4; + /* fallthrough */ + case 8: XXH_PROCESS4; + /* fallthrough */ + case 4: XXH_PROCESS4; + return XXH32_avalanche(h32); + + case 13: XXH_PROCESS4; + /* fallthrough */ + case 9: XXH_PROCESS4; + /* fallthrough */ + case 5: XXH_PROCESS4; + XXH_PROCESS1; + return XXH32_avalanche(h32); + + case 14: XXH_PROCESS4; + /* fallthrough */ + case 10: XXH_PROCESS4; + /* fallthrough */ + case 6: XXH_PROCESS4; + XXH_PROCESS1; + XXH_PROCESS1; + return XXH32_avalanche(h32); + + case 15: XXH_PROCESS4; + /* fallthrough */ + case 11: XXH_PROCESS4; + /* fallthrough */ + case 7: XXH_PROCESS4; + /* fallthrough */ + case 3: XXH_PROCESS1; + /* fallthrough */ + case 2: XXH_PROCESS1; + /* fallthrough */ + case 1: XXH_PROCESS1; + /* fallthrough */ + case 0: return XXH32_avalanche(h32); + } + XXH_ASSERT(0); + return h32; /* reaching this point is deemed impossible */ + } +} + +#ifdef XXH_OLD_NAMES +# define PROCESS1 XXH_PROCESS1 +# define PROCESS4 XXH_PROCESS4 +#else +# undef XXH_PROCESS1 +# undef XXH_PROCESS4 +#endif + +/*! + * @internal + * @brief The implementation for @ref XXH32(). + * + * @param input, len, seed Directly passed from @ref XXH32(). + * @param align Whether @p input is aligned. + * @return The calculated hash. + */ +XXH_FORCE_INLINE xxh_u32 +XXH32_endian_align(const xxh_u8* input, size_t len, xxh_u32 seed, XXH_alignment align) +{ + const xxh_u8* bEnd = input + len; + xxh_u32 h32; + +#if defined(XXH_ACCEPT_NULL_INPUT_POINTER) && (XXH_ACCEPT_NULL_INPUT_POINTER>=1) + if (input==NULL) { + len=0; + bEnd=input=(const xxh_u8*)(size_t)16; + } +#endif + + if (len>=16) { + const xxh_u8* const limit = bEnd - 15; + xxh_u32 v1 = seed + XXH_PRIME32_1 + XXH_PRIME32_2; + xxh_u32 v2 = seed + XXH_PRIME32_2; + xxh_u32 v3 = seed + 0; + xxh_u32 v4 = seed - XXH_PRIME32_1; + + do { + v1 = XXH32_round(v1, XXH_get32bits(input)); input += 4; + v2 = XXH32_round(v2, XXH_get32bits(input)); input += 4; + v3 = XXH32_round(v3, XXH_get32bits(input)); input += 4; + v4 = XXH32_round(v4, XXH_get32bits(input)); input += 4; + } while (input < limit); + + h32 = XXH_rotl32(v1, 1) + XXH_rotl32(v2, 7) + + XXH_rotl32(v3, 12) + XXH_rotl32(v4, 18); + } else { + h32 = seed + XXH_PRIME32_5; + } + + h32 += (xxh_u32)len; + + return XXH32_finalize(h32, input, len&15, align); +} + +/*! @ingroup xxh32_family */ +XXH_PUBLIC_API XXH32_hash_t XXH32 (const void* input, size_t len, XXH32_hash_t seed) +{ +#if 0 + /* Simple version, good for code maintenance, but unfortunately slow for small inputs */ + XXH32_state_t state; + XXH32_reset(&state, seed); + XXH32_update(&state, (const xxh_u8*)input, len); + return XXH32_digest(&state); +#else + if (XXH_FORCE_ALIGN_CHECK) { + if ((((size_t)input) & 3) == 0) { /* Input is 4-bytes aligned, leverage the speed benefit */ + return XXH32_endian_align((const xxh_u8*)input, len, seed, XXH_aligned); + } } + + return XXH32_endian_align((const xxh_u8*)input, len, seed, XXH_unaligned); +#endif +} + + + +/******* Hash streaming *******/ +/*! + * @ingroup xxh32_family + */ +XXH_PUBLIC_API XXH32_state_t* XXH32_createState(void) +{ + return (XXH32_state_t*)XXH_malloc(sizeof(XXH32_state_t)); +} +/*! @ingroup xxh32_family */ +XXH_PUBLIC_API XXH_errorcode XXH32_freeState(XXH32_state_t* statePtr) +{ + XXH_free(statePtr); + return XXH_OK; +} + +/*! @ingroup xxh32_family */ +XXH_PUBLIC_API void XXH32_copyState(XXH32_state_t* dstState, const XXH32_state_t* srcState) +{ + memcpy(dstState, srcState, sizeof(*dstState)); +} + +/*! @ingroup xxh32_family */ +XXH_PUBLIC_API XXH_errorcode XXH32_reset(XXH32_state_t* statePtr, XXH32_hash_t seed) +{ + XXH32_state_t state; /* using a local state to memcpy() in order to avoid strict-aliasing warnings */ + memset(&state, 0, sizeof(state)); + state.v1 = seed + XXH_PRIME32_1 + XXH_PRIME32_2; + state.v2 = seed + XXH_PRIME32_2; + state.v3 = seed + 0; + state.v4 = seed - XXH_PRIME32_1; + /* do not write into reserved, planned to be removed in a future version */ + memcpy(statePtr, &state, sizeof(state) - sizeof(state.reserved)); + return XXH_OK; +} + + +/*! @ingroup xxh32_family */ +XXH_PUBLIC_API XXH_errorcode +XXH32_update(XXH32_state_t* state, const void* input, size_t len) +{ + if (input==NULL) +#if defined(XXH_ACCEPT_NULL_INPUT_POINTER) && (XXH_ACCEPT_NULL_INPUT_POINTER>=1) + return XXH_OK; +#else + return XXH_ERROR; +#endif + + { const xxh_u8* p = (const xxh_u8*)input; + const xxh_u8* const bEnd = p + len; + + state->total_len_32 += (XXH32_hash_t)len; + state->large_len |= (XXH32_hash_t)((len>=16) | (state->total_len_32>=16)); + + if (state->memsize + len < 16) { /* fill in tmp buffer */ + XXH_memcpy((xxh_u8*)(state->mem32) + state->memsize, input, len); + state->memsize += (XXH32_hash_t)len; + return XXH_OK; + } + + if (state->memsize) { /* some data left from previous update */ + XXH_memcpy((xxh_u8*)(state->mem32) + state->memsize, input, 16-state->memsize); + { const xxh_u32* p32 = state->mem32; + state->v1 = XXH32_round(state->v1, XXH_readLE32(p32)); p32++; + state->v2 = XXH32_round(state->v2, XXH_readLE32(p32)); p32++; + state->v3 = XXH32_round(state->v3, XXH_readLE32(p32)); p32++; + state->v4 = XXH32_round(state->v4, XXH_readLE32(p32)); + } + p += 16-state->memsize; + state->memsize = 0; + } + + if (p <= bEnd-16) { + const xxh_u8* const limit = bEnd - 16; + xxh_u32 v1 = state->v1; + xxh_u32 v2 = state->v2; + xxh_u32 v3 = state->v3; + xxh_u32 v4 = state->v4; + + do { + v1 = XXH32_round(v1, XXH_readLE32(p)); p+=4; + v2 = XXH32_round(v2, XXH_readLE32(p)); p+=4; + v3 = XXH32_round(v3, XXH_readLE32(p)); p+=4; + v4 = XXH32_round(v4, XXH_readLE32(p)); p+=4; + } while (p<=limit); + + state->v1 = v1; + state->v2 = v2; + state->v3 = v3; + state->v4 = v4; + } + + if (p < bEnd) { + XXH_memcpy(state->mem32, p, (size_t)(bEnd-p)); + state->memsize = (unsigned)(bEnd-p); + } + } + + return XXH_OK; +} + + +/*! @ingroup xxh32_family */ +XXH_PUBLIC_API XXH32_hash_t XXH32_digest(const XXH32_state_t* state) +{ + xxh_u32 h32; + + if (state->large_len) { + h32 = XXH_rotl32(state->v1, 1) + + XXH_rotl32(state->v2, 7) + + XXH_rotl32(state->v3, 12) + + XXH_rotl32(state->v4, 18); + } else { + h32 = state->v3 /* == seed */ + XXH_PRIME32_5; + } + + h32 += state->total_len_32; + + return XXH32_finalize(h32, (const xxh_u8*)state->mem32, state->memsize, XXH_aligned); +} + + +/******* Canonical representation *******/ + +/*! + * @ingroup xxh32_family + * The default return values from XXH functions are unsigned 32 and 64 bit + * integers. + * + * The canonical representation uses big endian convention, the same convention + * as human-readable numbers (large digits first). + * + * This way, hash values can be written into a file or buffer, remaining + * comparable across different systems. + * + * The following functions allow transformation of hash values to and from their + * canonical format. + */ +XXH_PUBLIC_API void XXH32_canonicalFromHash(XXH32_canonical_t* dst, XXH32_hash_t hash) +{ + XXH_STATIC_ASSERT(sizeof(XXH32_canonical_t) == sizeof(XXH32_hash_t)); + if (XXH_CPU_LITTLE_ENDIAN) hash = XXH_swap32(hash); + memcpy(dst, &hash, sizeof(*dst)); +} +/*! @ingroup xxh32_family */ +XXH_PUBLIC_API XXH32_hash_t XXH32_hashFromCanonical(const XXH32_canonical_t* src) +{ + return XXH_readBE32(src); +} + + +#ifndef XXH_NO_LONG_LONG + +/* ******************************************************************* +* 64-bit hash functions +*********************************************************************/ +/*! + * @} + * @ingroup impl + * @{ + */ +/******* Memory access *******/ + +typedef XXH64_hash_t xxh_u64; + +#ifdef XXH_OLD_NAMES +# define U64 xxh_u64 +#endif + +/*! + * XXH_REROLL_XXH64: + * Whether to reroll the XXH64_finalize() loop. + * + * Just like XXH32, we can unroll the XXH64_finalize() loop. This can be a + * performance gain on 64-bit hosts, as only one jump is required. + * + * However, on 32-bit hosts, because arithmetic needs to be done with two 32-bit + * registers, and 64-bit arithmetic needs to be simulated, it isn't beneficial + * to unroll. The code becomes ridiculously large (the largest function in the + * binary on i386!), and rerolling it saves anywhere from 3kB to 20kB. It is + * also slightly faster because it fits into cache better and is more likely + * to be inlined by the compiler. + * + * If XXH_REROLL is defined, this is ignored and the loop is always rerolled. + */ +#ifndef XXH_REROLL_XXH64 +# if (defined(__ILP32__) || defined(_ILP32)) /* ILP32 is often defined on 32-bit GCC family */ \ + || !(defined(__x86_64__) || defined(_M_X64) || defined(_M_AMD64) /* x86-64 */ \ + || defined(_M_ARM64) || defined(__aarch64__) || defined(__arm64__) /* aarch64 */ \ + || defined(__PPC64__) || defined(__PPC64LE__) || defined(__ppc64__) || defined(__powerpc64__) /* ppc64 */ \ + || defined(__mips64__) || defined(__mips64)) /* mips64 */ \ + || (!defined(SIZE_MAX) || SIZE_MAX < ULLONG_MAX) /* check limits */ +# define XXH_REROLL_XXH64 1 +# else +# define XXH_REROLL_XXH64 0 +# endif +#endif /* !defined(XXH_REROLL_XXH64) */ + +#if (defined(XXH_FORCE_MEMORY_ACCESS) && (XXH_FORCE_MEMORY_ACCESS==3)) +/* + * Manual byteshift. Best for old compilers which don't inline memcpy. + * We actually directly use XXH_readLE64 and XXH_readBE64. + */ +#elif (defined(XXH_FORCE_MEMORY_ACCESS) && (XXH_FORCE_MEMORY_ACCESS==2)) + +/* Force direct memory access. Only works on CPU which support unaligned memory access in hardware */ +static xxh_u64 XXH_read64(const void* memPtr) +{ + return *(const xxh_u64*) memPtr; +} + +#elif (defined(XXH_FORCE_MEMORY_ACCESS) && (XXH_FORCE_MEMORY_ACCESS==1)) + +/* + * __pack instructions are safer, but compiler specific, hence potentially + * problematic for some compilers. + * + * Currently only defined for GCC and ICC. + */ +#ifdef XXH_OLD_NAMES +typedef union { xxh_u32 u32; xxh_u64 u64; } __attribute__((packed)) unalign64; +#endif +static xxh_u64 XXH_read64(const void* ptr) +{ + typedef union { xxh_u32 u32; xxh_u64 u64; } __attribute__((packed)) xxh_unalign64; + return ((const xxh_unalign64*)ptr)->u64; +} + +#else + +/* + * Portable and safe solution. Generally efficient. + * see: https://stackoverflow.com/a/32095106/646947 + */ +static xxh_u64 XXH_read64(const void* memPtr) +{ + xxh_u64 val; + memcpy(&val, memPtr, sizeof(val)); + return val; +} + +#endif /* XXH_FORCE_DIRECT_MEMORY_ACCESS */ + +#if defined(_MSC_VER) /* Visual Studio */ +# define XXH_swap64 _byteswap_uint64 +#elif XXH_GCC_VERSION >= 403 +# define XXH_swap64 __builtin_bswap64 +#else +static xxh_u64 XXH_swap64(xxh_u64 x) +{ + return ((x << 56) & 0xff00000000000000ULL) | + ((x << 40) & 0x00ff000000000000ULL) | + ((x << 24) & 0x0000ff0000000000ULL) | + ((x << 8) & 0x000000ff00000000ULL) | + ((x >> 8) & 0x00000000ff000000ULL) | + ((x >> 24) & 0x0000000000ff0000ULL) | + ((x >> 40) & 0x000000000000ff00ULL) | + ((x >> 56) & 0x00000000000000ffULL); +} +#endif + + +/* XXH_FORCE_MEMORY_ACCESS==3 is an endian-independent byteshift load. */ +#if (defined(XXH_FORCE_MEMORY_ACCESS) && (XXH_FORCE_MEMORY_ACCESS==3)) + +XXH_FORCE_INLINE xxh_u64 XXH_readLE64(const void* memPtr) +{ + const xxh_u8* bytePtr = (const xxh_u8 *)memPtr; + return bytePtr[0] + | ((xxh_u64)bytePtr[1] << 8) + | ((xxh_u64)bytePtr[2] << 16) + | ((xxh_u64)bytePtr[3] << 24) + | ((xxh_u64)bytePtr[4] << 32) + | ((xxh_u64)bytePtr[5] << 40) + | ((xxh_u64)bytePtr[6] << 48) + | ((xxh_u64)bytePtr[7] << 56); +} + +XXH_FORCE_INLINE xxh_u64 XXH_readBE64(const void* memPtr) +{ + const xxh_u8* bytePtr = (const xxh_u8 *)memPtr; + return bytePtr[7] + | ((xxh_u64)bytePtr[6] << 8) + | ((xxh_u64)bytePtr[5] << 16) + | ((xxh_u64)bytePtr[4] << 24) + | ((xxh_u64)bytePtr[3] << 32) + | ((xxh_u64)bytePtr[2] << 40) + | ((xxh_u64)bytePtr[1] << 48) + | ((xxh_u64)bytePtr[0] << 56); +} + +#else +XXH_FORCE_INLINE xxh_u64 XXH_readLE64(const void* ptr) +{ + return XXH_CPU_LITTLE_ENDIAN ? XXH_read64(ptr) : XXH_swap64(XXH_read64(ptr)); +} + +static xxh_u64 XXH_readBE64(const void* ptr) +{ + return XXH_CPU_LITTLE_ENDIAN ? XXH_swap64(XXH_read64(ptr)) : XXH_read64(ptr); +} +#endif + +XXH_FORCE_INLINE xxh_u64 +XXH_readLE64_align(const void* ptr, XXH_alignment align) +{ + if (align==XXH_unaligned) + return XXH_readLE64(ptr); + else + return XXH_CPU_LITTLE_ENDIAN ? *(const xxh_u64*)ptr : XXH_swap64(*(const xxh_u64*)ptr); +} + + +/******* xxh64 *******/ +/*! + * @} + * @defgroup xxh64_impl XXH64 implementation + * @ingroup impl + * @{ + */ +static const xxh_u64 XXH_PRIME64_1 = 0x9E3779B185EBCA87ULL; /*!< 0b1001111000110111011110011011000110000101111010111100101010000111 */ +static const xxh_u64 XXH_PRIME64_2 = 0xC2B2AE3D27D4EB4FULL; /*!< 0b1100001010110010101011100011110100100111110101001110101101001111 */ +static const xxh_u64 XXH_PRIME64_3 = 0x165667B19E3779F9ULL; /*!< 0b0001011001010110011001111011000110011110001101110111100111111001 */ +static const xxh_u64 XXH_PRIME64_4 = 0x85EBCA77C2B2AE63ULL; /*!< 0b1000010111101011110010100111011111000010101100101010111001100011 */ +static const xxh_u64 XXH_PRIME64_5 = 0x27D4EB2F165667C5ULL; /*!< 0b0010011111010100111010110010111100010110010101100110011111000101 */ + +#ifdef XXH_OLD_NAMES +# define PRIME64_1 XXH_PRIME64_1 +# define PRIME64_2 XXH_PRIME64_2 +# define PRIME64_3 XXH_PRIME64_3 +# define PRIME64_4 XXH_PRIME64_4 +# define PRIME64_5 XXH_PRIME64_5 +#endif + +static xxh_u64 XXH64_round(xxh_u64 acc, xxh_u64 input) +{ + acc += input * XXH_PRIME64_2; + acc = XXH_rotl64(acc, 31); + acc *= XXH_PRIME64_1; + return acc; +} + +static xxh_u64 XXH64_mergeRound(xxh_u64 acc, xxh_u64 val) +{ + val = XXH64_round(0, val); + acc ^= val; + acc = acc * XXH_PRIME64_1 + XXH_PRIME64_4; + return acc; +} + +static xxh_u64 XXH64_avalanche(xxh_u64 h64) +{ + h64 ^= h64 >> 33; + h64 *= XXH_PRIME64_2; + h64 ^= h64 >> 29; + h64 *= XXH_PRIME64_3; + h64 ^= h64 >> 32; + return h64; +} + + +#define XXH_get64bits(p) XXH_readLE64_align(p, align) + +static xxh_u64 +XXH64_finalize(xxh_u64 h64, const xxh_u8* ptr, size_t len, XXH_alignment align) +{ +#define XXH_PROCESS1_64 do { \ + h64 ^= (*ptr++) * XXH_PRIME64_5; \ + h64 = XXH_rotl64(h64, 11) * XXH_PRIME64_1; \ +} while (0) + +#define XXH_PROCESS4_64 do { \ + h64 ^= (xxh_u64)(XXH_get32bits(ptr)) * XXH_PRIME64_1; \ + ptr += 4; \ + h64 = XXH_rotl64(h64, 23) * XXH_PRIME64_2 + XXH_PRIME64_3; \ +} while (0) + +#define XXH_PROCESS8_64 do { \ + xxh_u64 const k1 = XXH64_round(0, XXH_get64bits(ptr)); \ + ptr += 8; \ + h64 ^= k1; \ + h64 = XXH_rotl64(h64,27) * XXH_PRIME64_1 + XXH_PRIME64_4; \ +} while (0) + + /* Rerolled version for 32-bit targets is faster and much smaller. */ + if (XXH_REROLL || XXH_REROLL_XXH64) { + len &= 31; + while (len >= 8) { + XXH_PROCESS8_64; + len -= 8; + } + if (len >= 4) { + XXH_PROCESS4_64; + len -= 4; + } + while (len > 0) { + XXH_PROCESS1_64; + --len; + } + return XXH64_avalanche(h64); + } else { + switch(len & 31) { + case 24: XXH_PROCESS8_64; + /* fallthrough */ + case 16: XXH_PROCESS8_64; + /* fallthrough */ + case 8: XXH_PROCESS8_64; + return XXH64_avalanche(h64); + + case 28: XXH_PROCESS8_64; + /* fallthrough */ + case 20: XXH_PROCESS8_64; + /* fallthrough */ + case 12: XXH_PROCESS8_64; + /* fallthrough */ + case 4: XXH_PROCESS4_64; + return XXH64_avalanche(h64); + + case 25: XXH_PROCESS8_64; + /* fallthrough */ + case 17: XXH_PROCESS8_64; + /* fallthrough */ + case 9: XXH_PROCESS8_64; + XXH_PROCESS1_64; + return XXH64_avalanche(h64); + + case 29: XXH_PROCESS8_64; + /* fallthrough */ + case 21: XXH_PROCESS8_64; + /* fallthrough */ + case 13: XXH_PROCESS8_64; + /* fallthrough */ + case 5: XXH_PROCESS4_64; + XXH_PROCESS1_64; + return XXH64_avalanche(h64); + + case 26: XXH_PROCESS8_64; + /* fallthrough */ + case 18: XXH_PROCESS8_64; + /* fallthrough */ + case 10: XXH_PROCESS8_64; + XXH_PROCESS1_64; + XXH_PROCESS1_64; + return XXH64_avalanche(h64); + + case 30: XXH_PROCESS8_64; + /* fallthrough */ + case 22: XXH_PROCESS8_64; + /* fallthrough */ + case 14: XXH_PROCESS8_64; + /* fallthrough */ + case 6: XXH_PROCESS4_64; + XXH_PROCESS1_64; + XXH_PROCESS1_64; + return XXH64_avalanche(h64); + + case 27: XXH_PROCESS8_64; + /* fallthrough */ + case 19: XXH_PROCESS8_64; + /* fallthrough */ + case 11: XXH_PROCESS8_64; + XXH_PROCESS1_64; + XXH_PROCESS1_64; + XXH_PROCESS1_64; + return XXH64_avalanche(h64); + + case 31: XXH_PROCESS8_64; + /* fallthrough */ + case 23: XXH_PROCESS8_64; + /* fallthrough */ + case 15: XXH_PROCESS8_64; + /* fallthrough */ + case 7: XXH_PROCESS4_64; + /* fallthrough */ + case 3: XXH_PROCESS1_64; + /* fallthrough */ + case 2: XXH_PROCESS1_64; + /* fallthrough */ + case 1: XXH_PROCESS1_64; + /* fallthrough */ + case 0: return XXH64_avalanche(h64); + } + } + /* impossible to reach */ + XXH_ASSERT(0); + return 0; /* unreachable, but some compilers complain without it */ +} + +#ifdef XXH_OLD_NAMES +# define PROCESS1_64 XXH_PROCESS1_64 +# define PROCESS4_64 XXH_PROCESS4_64 +# define PROCESS8_64 XXH_PROCESS8_64 +#else +# undef XXH_PROCESS1_64 +# undef XXH_PROCESS4_64 +# undef XXH_PROCESS8_64 +#endif + +XXH_FORCE_INLINE xxh_u64 +XXH64_endian_align(const xxh_u8* input, size_t len, xxh_u64 seed, XXH_alignment align) +{ + const xxh_u8* bEnd = input + len; + xxh_u64 h64; + +#if defined(XXH_ACCEPT_NULL_INPUT_POINTER) && (XXH_ACCEPT_NULL_INPUT_POINTER>=1) + if (input==NULL) { + len=0; + bEnd=input=(const xxh_u8*)(size_t)32; + } +#endif + + if (len>=32) { + const xxh_u8* const limit = bEnd - 32; + xxh_u64 v1 = seed + XXH_PRIME64_1 + XXH_PRIME64_2; + xxh_u64 v2 = seed + XXH_PRIME64_2; + xxh_u64 v3 = seed + 0; + xxh_u64 v4 = seed - XXH_PRIME64_1; + + do { + v1 = XXH64_round(v1, XXH_get64bits(input)); input+=8; + v2 = XXH64_round(v2, XXH_get64bits(input)); input+=8; + v3 = XXH64_round(v3, XXH_get64bits(input)); input+=8; + v4 = XXH64_round(v4, XXH_get64bits(input)); input+=8; + } while (input<=limit); + + h64 = XXH_rotl64(v1, 1) + XXH_rotl64(v2, 7) + XXH_rotl64(v3, 12) + XXH_rotl64(v4, 18); + h64 = XXH64_mergeRound(h64, v1); + h64 = XXH64_mergeRound(h64, v2); + h64 = XXH64_mergeRound(h64, v3); + h64 = XXH64_mergeRound(h64, v4); + + } else { + h64 = seed + XXH_PRIME64_5; + } + + h64 += (xxh_u64) len; + + return XXH64_finalize(h64, input, len, align); +} + + +/*! @ingroup xxh64_family */ +XXH_PUBLIC_API XXH64_hash_t XXH64 (const void* input, size_t len, XXH64_hash_t seed) +{ +#if 0 + /* Simple version, good for code maintenance, but unfortunately slow for small inputs */ + XXH64_state_t state; + XXH64_reset(&state, seed); + XXH64_update(&state, (const xxh_u8*)input, len); + return XXH64_digest(&state); +#else + if (XXH_FORCE_ALIGN_CHECK) { + if ((((size_t)input) & 7)==0) { /* Input is aligned, let's leverage the speed advantage */ + return XXH64_endian_align((const xxh_u8*)input, len, seed, XXH_aligned); + } } + + return XXH64_endian_align((const xxh_u8*)input, len, seed, XXH_unaligned); + +#endif +} + +/******* Hash Streaming *******/ + +/*! @ingroup xxh64_family*/ +XXH_PUBLIC_API XXH64_state_t* XXH64_createState(void) +{ + return (XXH64_state_t*)XXH_malloc(sizeof(XXH64_state_t)); +} +/*! @ingroup xxh64_family */ +XXH_PUBLIC_API XXH_errorcode XXH64_freeState(XXH64_state_t* statePtr) +{ + XXH_free(statePtr); + return XXH_OK; +} + +/*! @ingroup xxh64_family */ +XXH_PUBLIC_API void XXH64_copyState(XXH64_state_t* dstState, const XXH64_state_t* srcState) +{ + memcpy(dstState, srcState, sizeof(*dstState)); +} + +/*! @ingroup xxh64_family */ +XXH_PUBLIC_API XXH_errorcode XXH64_reset(XXH64_state_t* statePtr, XXH64_hash_t seed) +{ + XXH64_state_t state; /* use a local state to memcpy() in order to avoid strict-aliasing warnings */ + memset(&state, 0, sizeof(state)); + state.v1 = seed + XXH_PRIME64_1 + XXH_PRIME64_2; + state.v2 = seed + XXH_PRIME64_2; + state.v3 = seed + 0; + state.v4 = seed - XXH_PRIME64_1; + /* do not write into reserved64, might be removed in a future version */ + memcpy(statePtr, &state, sizeof(state) - sizeof(state.reserved64)); + return XXH_OK; +} + +/*! @ingroup xxh64_family */ +XXH_PUBLIC_API XXH_errorcode +XXH64_update (XXH64_state_t* state, const void* input, size_t len) +{ + if (input==NULL) +#if defined(XXH_ACCEPT_NULL_INPUT_POINTER) && (XXH_ACCEPT_NULL_INPUT_POINTER>=1) + return XXH_OK; +#else + return XXH_ERROR; +#endif + + { const xxh_u8* p = (const xxh_u8*)input; + const xxh_u8* const bEnd = p + len; + + state->total_len += len; + + if (state->memsize + len < 32) { /* fill in tmp buffer */ + XXH_memcpy(((xxh_u8*)state->mem64) + state->memsize, input, len); + state->memsize += (xxh_u32)len; + return XXH_OK; + } + + if (state->memsize) { /* tmp buffer is full */ + XXH_memcpy(((xxh_u8*)state->mem64) + state->memsize, input, 32-state->memsize); + state->v1 = XXH64_round(state->v1, XXH_readLE64(state->mem64+0)); + state->v2 = XXH64_round(state->v2, XXH_readLE64(state->mem64+1)); + state->v3 = XXH64_round(state->v3, XXH_readLE64(state->mem64+2)); + state->v4 = XXH64_round(state->v4, XXH_readLE64(state->mem64+3)); + p += 32 - state->memsize; + state->memsize = 0; + } + + if (p+32 <= bEnd) { + const xxh_u8* const limit = bEnd - 32; + xxh_u64 v1 = state->v1; + xxh_u64 v2 = state->v2; + xxh_u64 v3 = state->v3; + xxh_u64 v4 = state->v4; + + do { + v1 = XXH64_round(v1, XXH_readLE64(p)); p+=8; + v2 = XXH64_round(v2, XXH_readLE64(p)); p+=8; + v3 = XXH64_round(v3, XXH_readLE64(p)); p+=8; + v4 = XXH64_round(v4, XXH_readLE64(p)); p+=8; + } while (p<=limit); + + state->v1 = v1; + state->v2 = v2; + state->v3 = v3; + state->v4 = v4; + } + + if (p < bEnd) { + XXH_memcpy(state->mem64, p, (size_t)(bEnd-p)); + state->memsize = (unsigned)(bEnd-p); + } + } + + return XXH_OK; +} + + +/*! @ingroup xxh64_family */ +XXH_PUBLIC_API XXH64_hash_t XXH64_digest(const XXH64_state_t* state) +{ + xxh_u64 h64; + + if (state->total_len >= 32) { + xxh_u64 const v1 = state->v1; + xxh_u64 const v2 = state->v2; + xxh_u64 const v3 = state->v3; + xxh_u64 const v4 = state->v4; + + h64 = XXH_rotl64(v1, 1) + XXH_rotl64(v2, 7) + XXH_rotl64(v3, 12) + XXH_rotl64(v4, 18); + h64 = XXH64_mergeRound(h64, v1); + h64 = XXH64_mergeRound(h64, v2); + h64 = XXH64_mergeRound(h64, v3); + h64 = XXH64_mergeRound(h64, v4); + } else { + h64 = state->v3 /*seed*/ + XXH_PRIME64_5; + } + + h64 += (xxh_u64) state->total_len; + + return XXH64_finalize(h64, (const xxh_u8*)state->mem64, (size_t)state->total_len, XXH_aligned); +} + + +/******* Canonical representation *******/ + +/*! @ingroup xxh64_family */ +XXH_PUBLIC_API void XXH64_canonicalFromHash(XXH64_canonical_t* dst, XXH64_hash_t hash) +{ + XXH_STATIC_ASSERT(sizeof(XXH64_canonical_t) == sizeof(XXH64_hash_t)); + if (XXH_CPU_LITTLE_ENDIAN) hash = XXH_swap64(hash); + memcpy(dst, &hash, sizeof(*dst)); +} + +/*! @ingroup xxh64_family */ +XXH_PUBLIC_API XXH64_hash_t XXH64_hashFromCanonical(const XXH64_canonical_t* src) +{ + return XXH_readBE64(src); +} + + + +/* ********************************************************************* +* XXH3 +* New generation hash designed for speed on small keys and vectorization +************************************************************************ */ +/*! + * @} + * @defgroup xxh3_impl XXH3 implementation + * @ingroup impl + * @{ + */ + +/* === Compiler specifics === */ + +#if ((defined(sun) || defined(__sun)) && __cplusplus) /* Solaris includes __STDC_VERSION__ with C++. Tested with GCC 5.5 */ +# define XXH_RESTRICT /* disable */ +#elif defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L /* >= C99 */ +# define XXH_RESTRICT restrict +#else +/* Note: it might be useful to define __restrict or __restrict__ for some C++ compilers */ +# define XXH_RESTRICT /* disable */ +#endif + +#if (defined(__GNUC__) && (__GNUC__ >= 3)) \ + || (defined(__INTEL_COMPILER) && (__INTEL_COMPILER >= 800)) \ + || defined(__clang__) +# define XXH_likely(x) __builtin_expect(x, 1) +# define XXH_unlikely(x) __builtin_expect(x, 0) +#else +# define XXH_likely(x) (x) +# define XXH_unlikely(x) (x) +#endif + +#if defined(__GNUC__) +# if defined(__AVX2__) +# include +# elif defined(__SSE2__) +# include +# elif defined(__ARM_NEON__) || defined(__ARM_NEON) +# define inline __inline__ /* circumvent a clang bug */ +# include +# undef inline +# endif +#elif defined(_MSC_VER) +# include +#endif + +/* + * One goal of XXH3 is to make it fast on both 32-bit and 64-bit, while + * remaining a true 64-bit/128-bit hash function. + * + * This is done by prioritizing a subset of 64-bit operations that can be + * emulated without too many steps on the average 32-bit machine. + * + * For example, these two lines seem similar, and run equally fast on 64-bit: + * + * xxh_u64 x; + * x ^= (x >> 47); // good + * x ^= (x >> 13); // bad + * + * However, to a 32-bit machine, there is a major difference. + * + * x ^= (x >> 47) looks like this: + * + * x.lo ^= (x.hi >> (47 - 32)); + * + * while x ^= (x >> 13) looks like this: + * + * // note: funnel shifts are not usually cheap. + * x.lo ^= (x.lo >> 13) | (x.hi << (32 - 13)); + * x.hi ^= (x.hi >> 13); + * + * The first one is significantly faster than the second, simply because the + * shift is larger than 32. This means: + * - All the bits we need are in the upper 32 bits, so we can ignore the lower + * 32 bits in the shift. + * - The shift result will always fit in the lower 32 bits, and therefore, + * we can ignore the upper 32 bits in the xor. + * + * Thanks to this optimization, XXH3 only requires these features to be efficient: + * + * - Usable unaligned access + * - A 32-bit or 64-bit ALU + * - If 32-bit, a decent ADC instruction + * - A 32 or 64-bit multiply with a 64-bit result + * - For the 128-bit variant, a decent byteswap helps short inputs. + * + * The first two are already required by XXH32, and almost all 32-bit and 64-bit + * platforms which can run XXH32 can run XXH3 efficiently. + * + * Thumb-1, the classic 16-bit only subset of ARM's instruction set, is one + * notable exception. + * + * First of all, Thumb-1 lacks support for the UMULL instruction which + * performs the important long multiply. This means numerous __aeabi_lmul + * calls. + * + * Second of all, the 8 functional registers are just not enough. + * Setup for __aeabi_lmul, byteshift loads, pointers, and all arithmetic need + * Lo registers, and this shuffling results in thousands more MOVs than A32. + * + * A32 and T32 don't have this limitation. They can access all 14 registers, + * do a 32->64 multiply with UMULL, and the flexible operand allowing free + * shifts is helpful, too. + * + * Therefore, we do a quick sanity check. + * + * If compiling Thumb-1 for a target which supports ARM instructions, we will + * emit a warning, as it is not a "sane" platform to compile for. + * + * Usually, if this happens, it is because of an accident and you probably need + * to specify -march, as you likely meant to compile for a newer architecture. + * + * Credit: large sections of the vectorial and asm source code paths + * have been contributed by @easyaspi314 + */ +#if defined(__thumb__) && !defined(__thumb2__) && defined(__ARM_ARCH_ISA_ARM) +# warning "XXH3 is highly inefficient without ARM or Thumb-2." +#endif + +/* ========================================== + * Vectorization detection + * ========================================== */ + +#ifdef XXH_DOXYGEN +/*! + * @ingroup tuning + * @brief Overrides the vectorization implementation chosen for XXH3. + * + * Can be defined to 0 to disable SIMD or any of the values mentioned in + * @ref XXH_VECTOR_TYPE. + * + * If this is not defined, it uses predefined macros to determine the best + * implementation. + */ +# define XXH_VECTOR XXH_SCALAR +/*! + * @ingroup tuning + * @brief Possible values for @ref XXH_VECTOR. + * + * Note that these are actually implemented as macros. + * + * If this is not defined, it is detected automatically. + * @ref XXH_X86DISPATCH overrides this. + */ +enum XXH_VECTOR_TYPE /* fake enum */ { + XXH_SCALAR = 0, /*!< Portable scalar version */ + XXH_SSE2 = 1, /*!< + * SSE2 for Pentium 4, Opteron, all x86_64. + * + * @note SSE2 is also guaranteed on Windows 10, macOS, and + * Android x86. + */ + XXH_AVX2 = 2, /*!< AVX2 for Haswell and Bulldozer */ + XXH_AVX512 = 3, /*!< AVX512 for Skylake and Icelake */ + XXH_NEON = 4, /*!< NEON for most ARMv7-A and all AArch64 */ + XXH_VSX = 5, /*!< VSX and ZVector for POWER8/z13 (64-bit) */ +}; +/*! + * @ingroup tuning + * @brief Selects the minimum alignment for XXH3's accumulators. + * + * When using SIMD, this should match the alignment reqired for said vector + * type, so, for example, 32 for AVX2. + * + * Default: Auto detected. + */ +# define XXH_ACC_ALIGN 8 +#endif + +/* Actual definition */ +#ifndef XXH_DOXYGEN +# define XXH_SCALAR 0 +# define XXH_SSE2 1 +# define XXH_AVX2 2 +# define XXH_AVX512 3 +# define XXH_NEON 4 +# define XXH_VSX 5 +#endif + +#ifndef XXH_VECTOR /* can be defined on command line */ +# if defined(__AVX512F__) +# define XXH_VECTOR XXH_AVX512 +# elif defined(__AVX2__) +# define XXH_VECTOR XXH_AVX2 +# elif defined(__SSE2__) || defined(_M_AMD64) || defined(_M_X64) || (defined(_M_IX86_FP) && (_M_IX86_FP == 2)) +# define XXH_VECTOR XXH_SSE2 +# elif defined(__GNUC__) /* msvc support maybe later */ \ + && (defined(__ARM_NEON__) || defined(__ARM_NEON)) \ + && (defined(__LITTLE_ENDIAN__) /* We only support little endian NEON */ \ + || (defined(__BYTE_ORDER__) && __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__)) +# define XXH_VECTOR XXH_NEON +# elif (defined(__PPC64__) && defined(__POWER8_VECTOR__)) \ + || (defined(__s390x__) && defined(__VEC__)) \ + && defined(__GNUC__) /* TODO: IBM XL */ +# define XXH_VECTOR XXH_VSX +# else +# define XXH_VECTOR XXH_SCALAR +# endif +#endif + +/* + * Controls the alignment of the accumulator, + * for compatibility with aligned vector loads, which are usually faster. + */ +#ifndef XXH_ACC_ALIGN +# if defined(XXH_X86DISPATCH) +# define XXH_ACC_ALIGN 64 /* for compatibility with avx512 */ +# elif XXH_VECTOR == XXH_SCALAR /* scalar */ +# define XXH_ACC_ALIGN 8 +# elif XXH_VECTOR == XXH_SSE2 /* sse2 */ +# define XXH_ACC_ALIGN 16 +# elif XXH_VECTOR == XXH_AVX2 /* avx2 */ +# define XXH_ACC_ALIGN 32 +# elif XXH_VECTOR == XXH_NEON /* neon */ +# define XXH_ACC_ALIGN 16 +# elif XXH_VECTOR == XXH_VSX /* vsx */ +# define XXH_ACC_ALIGN 16 +# elif XXH_VECTOR == XXH_AVX512 /* avx512 */ +# define XXH_ACC_ALIGN 64 +# endif +#endif + +#if defined(XXH_X86DISPATCH) || XXH_VECTOR == XXH_SSE2 \ + || XXH_VECTOR == XXH_AVX2 || XXH_VECTOR == XXH_AVX512 +# define XXH_SEC_ALIGN XXH_ACC_ALIGN +#else +# define XXH_SEC_ALIGN 8 +#endif + +/* + * UGLY HACK: + * GCC usually generates the best code with -O3 for xxHash. + * + * However, when targeting AVX2, it is overzealous in its unrolling resulting + * in code roughly 3/4 the speed of Clang. + * + * There are other issues, such as GCC splitting _mm256_loadu_si256 into + * _mm_loadu_si128 + _mm256_inserti128_si256. This is an optimization which + * only applies to Sandy and Ivy Bridge... which don't even support AVX2. + * + * That is why when compiling the AVX2 version, it is recommended to use either + * -O2 -mavx2 -march=haswell + * or + * -O2 -mavx2 -mno-avx256-split-unaligned-load + * for decent performance, or to use Clang instead. + * + * Fortunately, we can control the first one with a pragma that forces GCC into + * -O2, but the other one we can't control without "failed to inline always + * inline function due to target mismatch" warnings. + */ +#if XXH_VECTOR == XXH_AVX2 /* AVX2 */ \ + && defined(__GNUC__) && !defined(__clang__) /* GCC, not Clang */ \ + && defined(__OPTIMIZE__) && !defined(__OPTIMIZE_SIZE__) /* respect -O0 and -Os */ +# pragma GCC push_options +# pragma GCC optimize("-O2") +#endif + + +#if XXH_VECTOR == XXH_NEON +/* + * NEON's setup for vmlal_u32 is a little more complicated than it is on + * SSE2, AVX2, and VSX. + * + * While PMULUDQ and VMULEUW both perform a mask, VMLAL.U32 performs an upcast. + * + * To do the same operation, the 128-bit 'Q' register needs to be split into + * two 64-bit 'D' registers, performing this operation:: + * + * [ a | b ] + * | '---------. .--------' | + * | x | + * | .---------' '--------. | + * [ a & 0xFFFFFFFF | b & 0xFFFFFFFF ],[ a >> 32 | b >> 32 ] + * + * Due to significant changes in aarch64, the fastest method for aarch64 is + * completely different than the fastest method for ARMv7-A. + * + * ARMv7-A treats D registers as unions overlaying Q registers, so modifying + * D11 will modify the high half of Q5. This is similar to how modifying AH + * will only affect bits 8-15 of AX on x86. + * + * VZIP takes two registers, and puts even lanes in one register and odd lanes + * in the other. + * + * On ARMv7-A, this strangely modifies both parameters in place instead of + * taking the usual 3-operand form. + * + * Therefore, if we want to do this, we can simply use a D-form VZIP.32 on the + * lower and upper halves of the Q register to end up with the high and low + * halves where we want - all in one instruction. + * + * vzip.32 d10, d11 @ d10 = { d10[0], d11[0] }; d11 = { d10[1], d11[1] } + * + * Unfortunately we need inline assembly for this: Instructions modifying two + * registers at once is not possible in GCC or Clang's IR, and they have to + * create a copy. + * + * aarch64 requires a different approach. + * + * In order to make it easier to write a decent compiler for aarch64, many + * quirks were removed, such as conditional execution. + * + * NEON was also affected by this. + * + * aarch64 cannot access the high bits of a Q-form register, and writes to a + * D-form register zero the high bits, similar to how writes to W-form scalar + * registers (or DWORD registers on x86_64) work. + * + * The formerly free vget_high intrinsics now require a vext (with a few + * exceptions) + * + * Additionally, VZIP was replaced by ZIP1 and ZIP2, which are the equivalent + * of PUNPCKL* and PUNPCKH* in SSE, respectively, in order to only modify one + * operand. + * + * The equivalent of the VZIP.32 on the lower and upper halves would be this + * mess: + * + * ext v2.4s, v0.4s, v0.4s, #2 // v2 = { v0[2], v0[3], v0[0], v0[1] } + * zip1 v1.2s, v0.2s, v2.2s // v1 = { v0[0], v2[0] } + * zip2 v0.2s, v0.2s, v1.2s // v0 = { v0[1], v2[1] } + * + * Instead, we use a literal downcast, vmovn_u64 (XTN), and vshrn_n_u64 (SHRN): + * + * shrn v1.2s, v0.2d, #32 // v1 = (uint32x2_t)(v0 >> 32); + * xtn v0.2s, v0.2d // v0 = (uint32x2_t)(v0 & 0xFFFFFFFF); + * + * This is available on ARMv7-A, but is less efficient than a single VZIP.32. + */ + +/*! + * Function-like macro: + * void XXH_SPLIT_IN_PLACE(uint64x2_t &in, uint32x2_t &outLo, uint32x2_t &outHi) + * { + * outLo = (uint32x2_t)(in & 0xFFFFFFFF); + * outHi = (uint32x2_t)(in >> 32); + * in = UNDEFINED; + * } + */ +# if !defined(XXH_NO_VZIP_HACK) /* define to disable */ \ + && defined(__GNUC__) \ + && !defined(__aarch64__) && !defined(__arm64__) +# define XXH_SPLIT_IN_PLACE(in, outLo, outHi) \ + do { \ + /* Undocumented GCC/Clang operand modifier: %e0 = lower D half, %f0 = upper D half */ \ + /* https://github.com/gcc-mirror/gcc/blob/38cf91e5/gcc/config/arm/arm.c#L22486 */ \ + /* https://github.com/llvm-mirror/llvm/blob/2c4ca683/lib/Target/ARM/ARMAsmPrinter.cpp#L399 */ \ + __asm__("vzip.32 %e0, %f0" : "+w" (in)); \ + (outLo) = vget_low_u32 (vreinterpretq_u32_u64(in)); \ + (outHi) = vget_high_u32(vreinterpretq_u32_u64(in)); \ + } while (0) +# else +# define XXH_SPLIT_IN_PLACE(in, outLo, outHi) \ + do { \ + (outLo) = vmovn_u64 (in); \ + (outHi) = vshrn_n_u64 ((in), 32); \ + } while (0) +# endif +#endif /* XXH_VECTOR == XXH_NEON */ + +/* + * VSX and Z Vector helpers. + * + * This is very messy, and any pull requests to clean this up are welcome. + * + * There are a lot of problems with supporting VSX and s390x, due to + * inconsistent intrinsics, spotty coverage, and multiple endiannesses. + */ +#if XXH_VECTOR == XXH_VSX +# if defined(__s390x__) +# include +# else +/* gcc's altivec.h can have the unwanted consequence to unconditionally + * #define bool, vector, and pixel keywords, + * with bad consequences for programs already using these keywords for other purposes. + * The paragraph defining these macros is skipped when __APPLE_ALTIVEC__ is defined. + * __APPLE_ALTIVEC__ is _generally_ defined automatically by the compiler, + * but it seems that, in some cases, it isn't. + * Force the build macro to be defined, so that keywords are not altered. + */ +# if defined(__GNUC__) && !defined(__APPLE_ALTIVEC__) +# define __APPLE_ALTIVEC__ +# endif +# include +# endif + +typedef __vector unsigned long long xxh_u64x2; +typedef __vector unsigned char xxh_u8x16; +typedef __vector unsigned xxh_u32x4; + +# ifndef XXH_VSX_BE +# if defined(__BIG_ENDIAN__) \ + || (defined(__BYTE_ORDER__) && __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__) +# define XXH_VSX_BE 1 +# elif defined(__VEC_ELEMENT_REG_ORDER__) && __VEC_ELEMENT_REG_ORDER__ == __ORDER_BIG_ENDIAN__ +# warning "-maltivec=be is not recommended. Please use native endianness." +# define XXH_VSX_BE 1 +# else +# define XXH_VSX_BE 0 +# endif +# endif /* !defined(XXH_VSX_BE) */ + +# if XXH_VSX_BE +# if defined(__POWER9_VECTOR__) || (defined(__clang__) && defined(__s390x__)) +# define XXH_vec_revb vec_revb +# else +/*! + * A polyfill for POWER9's vec_revb(). + */ +XXH_FORCE_INLINE xxh_u64x2 XXH_vec_revb(xxh_u64x2 val) +{ + xxh_u8x16 const vByteSwap = { 0x07, 0x06, 0x05, 0x04, 0x03, 0x02, 0x01, 0x00, + 0x0F, 0x0E, 0x0D, 0x0C, 0x0B, 0x0A, 0x09, 0x08 }; + return vec_perm(val, val, vByteSwap); +} +# endif +# endif /* XXH_VSX_BE */ + +/*! + * Performs an unaligned vector load and byte swaps it on big endian. + */ +XXH_FORCE_INLINE xxh_u64x2 XXH_vec_loadu(const void *ptr) +{ + xxh_u64x2 ret; + memcpy(&ret, ptr, sizeof(xxh_u64x2)); +# if XXH_VSX_BE + ret = XXH_vec_revb(ret); +# endif + return ret; +} + +/* + * vec_mulo and vec_mule are very problematic intrinsics on PowerPC + * + * These intrinsics weren't added until GCC 8, despite existing for a while, + * and they are endian dependent. Also, their meaning swap depending on version. + * */ +# if defined(__s390x__) + /* s390x is always big endian, no issue on this platform */ +# define XXH_vec_mulo vec_mulo +# define XXH_vec_mule vec_mule +# elif defined(__clang__) && XXH_HAS_BUILTIN(__builtin_altivec_vmuleuw) +/* Clang has a better way to control this, we can just use the builtin which doesn't swap. */ +# define XXH_vec_mulo __builtin_altivec_vmulouw +# define XXH_vec_mule __builtin_altivec_vmuleuw +# else +/* gcc needs inline assembly */ +/* Adapted from https://github.com/google/highwayhash/blob/master/highwayhash/hh_vsx.h. */ +XXH_FORCE_INLINE xxh_u64x2 XXH_vec_mulo(xxh_u32x4 a, xxh_u32x4 b) +{ + xxh_u64x2 result; + __asm__("vmulouw %0, %1, %2" : "=v" (result) : "v" (a), "v" (b)); + return result; +} +XXH_FORCE_INLINE xxh_u64x2 XXH_vec_mule(xxh_u32x4 a, xxh_u32x4 b) +{ + xxh_u64x2 result; + __asm__("vmuleuw %0, %1, %2" : "=v" (result) : "v" (a), "v" (b)); + return result; +} +# endif /* XXH_vec_mulo, XXH_vec_mule */ +#endif /* XXH_VECTOR == XXH_VSX */ + + +/* prefetch + * can be disabled, by declaring XXH_NO_PREFETCH build macro */ +#if defined(XXH_NO_PREFETCH) +# define XXH_PREFETCH(ptr) (void)(ptr) /* disabled */ +#else +# if defined(_MSC_VER) && (defined(_M_X64) || defined(_M_IX86)) /* _mm_prefetch() not defined outside of x86/x64 */ +# include /* https://msdn.microsoft.com/fr-fr/library/84szxsww(v=vs.90).aspx */ +# define XXH_PREFETCH(ptr) _mm_prefetch((const char*)(ptr), _MM_HINT_T0) +# elif defined(__GNUC__) && ( (__GNUC__ >= 4) || ( (__GNUC__ == 3) && (__GNUC_MINOR__ >= 1) ) ) +# define XXH_PREFETCH(ptr) __builtin_prefetch((ptr), 0 /* rw==read */, 3 /* locality */) +# else +# define XXH_PREFETCH(ptr) (void)(ptr) /* disabled */ +# endif +#endif /* XXH_NO_PREFETCH */ + + +/* ========================================== + * XXH3 default settings + * ========================================== */ + +#define XXH_SECRET_DEFAULT_SIZE 192 /* minimum XXH3_SECRET_SIZE_MIN */ + +#if (XXH_SECRET_DEFAULT_SIZE < XXH3_SECRET_SIZE_MIN) +# error "default keyset is not large enough" +#endif + +/*! Pseudorandom secret taken directly from FARSH. */ +XXH_ALIGN(64) static const xxh_u8 XXH3_kSecret[XXH_SECRET_DEFAULT_SIZE] = { + 0xb8, 0xfe, 0x6c, 0x39, 0x23, 0xa4, 0x4b, 0xbe, 0x7c, 0x01, 0x81, 0x2c, 0xf7, 0x21, 0xad, 0x1c, + 0xde, 0xd4, 0x6d, 0xe9, 0x83, 0x90, 0x97, 0xdb, 0x72, 0x40, 0xa4, 0xa4, 0xb7, 0xb3, 0x67, 0x1f, + 0xcb, 0x79, 0xe6, 0x4e, 0xcc, 0xc0, 0xe5, 0x78, 0x82, 0x5a, 0xd0, 0x7d, 0xcc, 0xff, 0x72, 0x21, + 0xb8, 0x08, 0x46, 0x74, 0xf7, 0x43, 0x24, 0x8e, 0xe0, 0x35, 0x90, 0xe6, 0x81, 0x3a, 0x26, 0x4c, + 0x3c, 0x28, 0x52, 0xbb, 0x91, 0xc3, 0x00, 0xcb, 0x88, 0xd0, 0x65, 0x8b, 0x1b, 0x53, 0x2e, 0xa3, + 0x71, 0x64, 0x48, 0x97, 0xa2, 0x0d, 0xf9, 0x4e, 0x38, 0x19, 0xef, 0x46, 0xa9, 0xde, 0xac, 0xd8, + 0xa8, 0xfa, 0x76, 0x3f, 0xe3, 0x9c, 0x34, 0x3f, 0xf9, 0xdc, 0xbb, 0xc7, 0xc7, 0x0b, 0x4f, 0x1d, + 0x8a, 0x51, 0xe0, 0x4b, 0xcd, 0xb4, 0x59, 0x31, 0xc8, 0x9f, 0x7e, 0xc9, 0xd9, 0x78, 0x73, 0x64, + 0xea, 0xc5, 0xac, 0x83, 0x34, 0xd3, 0xeb, 0xc3, 0xc5, 0x81, 0xa0, 0xff, 0xfa, 0x13, 0x63, 0xeb, + 0x17, 0x0d, 0xdd, 0x51, 0xb7, 0xf0, 0xda, 0x49, 0xd3, 0x16, 0x55, 0x26, 0x29, 0xd4, 0x68, 0x9e, + 0x2b, 0x16, 0xbe, 0x58, 0x7d, 0x47, 0xa1, 0xfc, 0x8f, 0xf8, 0xb8, 0xd1, 0x7a, 0xd0, 0x31, 0xce, + 0x45, 0xcb, 0x3a, 0x8f, 0x95, 0x16, 0x04, 0x28, 0xaf, 0xd7, 0xfb, 0xca, 0xbb, 0x4b, 0x40, 0x7e, +}; + + +#ifdef XXH_OLD_NAMES +# define kSecret XXH3_kSecret +#endif + +#ifdef XXH_DOXYGEN +/*! + * @brief Calculates a 32-bit to 64-bit long multiply. + * + * Implemented as a macro. + * + * Wraps `__emulu` on MSVC x86 because it tends to call `__allmul` when it doesn't + * need to (but it shouldn't need to anyways, it is about 7 instructions to do + * a 64x64 multiply...). Since we know that this will _always_ emit `MULL`, we + * use that instead of the normal method. + * + * If you are compiling for platforms like Thumb-1 and don't have a better option, + * you may also want to write your own long multiply routine here. + * + * @param x, y Numbers to be multiplied + * @return 64-bit product of the low 32 bits of @p x and @p y. + */ +XXH_FORCE_INLINE xxh_u64 +XXH_mult32to64(xxh_u64 x, xxh_u64 y) +{ + return (x & 0xFFFFFFFF) * (y & 0xFFFFFFFF); +} +#elif defined(_MSC_VER) && defined(_M_IX86) +# include +# define XXH_mult32to64(x, y) __emulu((unsigned)(x), (unsigned)(y)) +#else +/* + * Downcast + upcast is usually better than masking on older compilers like + * GCC 4.2 (especially 32-bit ones), all without affecting newer compilers. + * + * The other method, (x & 0xFFFFFFFF) * (y & 0xFFFFFFFF), will AND both operands + * and perform a full 64x64 multiply -- entirely redundant on 32-bit. + */ +# define XXH_mult32to64(x, y) ((xxh_u64)(xxh_u32)(x) * (xxh_u64)(xxh_u32)(y)) +#endif + +/*! + * @brief Calculates a 64->128-bit long multiply. + * + * Uses `__uint128_t` and `_umul128` if available, otherwise uses a scalar + * version. + * + * @param lhs, rhs The 64-bit integers to be multiplied + * @return The 128-bit result represented in an @ref XXH128_hash_t. + */ +static XXH128_hash_t +XXH_mult64to128(xxh_u64 lhs, xxh_u64 rhs) +{ + /* + * GCC/Clang __uint128_t method. + * + * On most 64-bit targets, GCC and Clang define a __uint128_t type. + * This is usually the best way as it usually uses a native long 64-bit + * multiply, such as MULQ on x86_64 or MUL + UMULH on aarch64. + * + * Usually. + * + * Despite being a 32-bit platform, Clang (and emscripten) define this type + * despite not having the arithmetic for it. This results in a laggy + * compiler builtin call which calculates a full 128-bit multiply. + * In that case it is best to use the portable one. + * https://github.com/Cyan4973/xxHash/issues/211#issuecomment-515575677 + */ +#if defined(__GNUC__) && !defined(__wasm__) \ + && defined(__SIZEOF_INT128__) \ + || (defined(_INTEGRAL_MAX_BITS) && _INTEGRAL_MAX_BITS >= 128) + + __uint128_t const product = (__uint128_t)lhs * (__uint128_t)rhs; + XXH128_hash_t r128; + r128.low64 = (xxh_u64)(product); + r128.high64 = (xxh_u64)(product >> 64); + return r128; + + /* + * MSVC for x64's _umul128 method. + * + * xxh_u64 _umul128(xxh_u64 Multiplier, xxh_u64 Multiplicand, xxh_u64 *HighProduct); + * + * This compiles to single operand MUL on x64. + */ +#elif defined(_M_X64) || defined(_M_IA64) + +#ifndef _MSC_VER +# pragma intrinsic(_umul128) +#endif + xxh_u64 product_high; + xxh_u64 const product_low = _umul128(lhs, rhs, &product_high); + XXH128_hash_t r128; + r128.low64 = product_low; + r128.high64 = product_high; + return r128; + +#else + /* + * Portable scalar method. Optimized for 32-bit and 64-bit ALUs. + * + * This is a fast and simple grade school multiply, which is shown below + * with base 10 arithmetic instead of base 0x100000000. + * + * 9 3 // D2 lhs = 93 + * x 7 5 // D2 rhs = 75 + * ---------- + * 1 5 // D2 lo_lo = (93 % 10) * (75 % 10) = 15 + * 4 5 | // D2 hi_lo = (93 / 10) * (75 % 10) = 45 + * 2 1 | // D2 lo_hi = (93 % 10) * (75 / 10) = 21 + * + 6 3 | | // D2 hi_hi = (93 / 10) * (75 / 10) = 63 + * --------- + * 2 7 | // D2 cross = (15 / 10) + (45 % 10) + 21 = 27 + * + 6 7 | | // D2 upper = (27 / 10) + (45 / 10) + 63 = 67 + * --------- + * 6 9 7 5 // D4 res = (27 * 10) + (15 % 10) + (67 * 100) = 6975 + * + * The reasons for adding the products like this are: + * 1. It avoids manual carry tracking. Just like how + * (9 * 9) + 9 + 9 = 99, the same applies with this for UINT64_MAX. + * This avoids a lot of complexity. + * + * 2. It hints for, and on Clang, compiles to, the powerful UMAAL + * instruction available in ARM's Digital Signal Processing extension + * in 32-bit ARMv6 and later, which is shown below: + * + * void UMAAL(xxh_u32 *RdLo, xxh_u32 *RdHi, xxh_u32 Rn, xxh_u32 Rm) + * { + * xxh_u64 product = (xxh_u64)*RdLo * (xxh_u64)*RdHi + Rn + Rm; + * *RdLo = (xxh_u32)(product & 0xFFFFFFFF); + * *RdHi = (xxh_u32)(product >> 32); + * } + * + * This instruction was designed for efficient long multiplication, and + * allows this to be calculated in only 4 instructions at speeds + * comparable to some 64-bit ALUs. + * + * 3. It isn't terrible on other platforms. Usually this will be a couple + * of 32-bit ADD/ADCs. + */ + + /* First calculate all of the cross products. */ + xxh_u64 const lo_lo = XXH_mult32to64(lhs & 0xFFFFFFFF, rhs & 0xFFFFFFFF); + xxh_u64 const hi_lo = XXH_mult32to64(lhs >> 32, rhs & 0xFFFFFFFF); + xxh_u64 const lo_hi = XXH_mult32to64(lhs & 0xFFFFFFFF, rhs >> 32); + xxh_u64 const hi_hi = XXH_mult32to64(lhs >> 32, rhs >> 32); + + /* Now add the products together. These will never overflow. */ + xxh_u64 const cross = (lo_lo >> 32) + (hi_lo & 0xFFFFFFFF) + lo_hi; + xxh_u64 const upper = (hi_lo >> 32) + (cross >> 32) + hi_hi; + xxh_u64 const lower = (cross << 32) | (lo_lo & 0xFFFFFFFF); + + XXH128_hash_t r128; + r128.low64 = lower; + r128.high64 = upper; + return r128; +#endif +} + +/*! + * @brief Calculates a 64-bit to 128-bit multiply, then XOR folds it. + * + * The reason for the separate function is to prevent passing too many structs + * around by value. This will hopefully inline the multiply, but we don't force it. + * + * @param lhs, rhs The 64-bit integers to multiply + * @return The low 64 bits of the product XOR'd by the high 64 bits. + * @see XXH_mult64to128() + */ +static xxh_u64 +XXH3_mul128_fold64(xxh_u64 lhs, xxh_u64 rhs) +{ + XXH128_hash_t product = XXH_mult64to128(lhs, rhs); + return product.low64 ^ product.high64; +} + +/*! Seems to produce slightly better code on GCC for some reason. */ +XXH_FORCE_INLINE xxh_u64 XXH_xorshift64(xxh_u64 v64, int shift) +{ + XXH_ASSERT(0 <= shift && shift < 64); + return v64 ^ (v64 >> shift); +} + +/* + * This is a fast avalanche stage, + * suitable when input bits are already partially mixed + */ +static XXH64_hash_t XXH3_avalanche(xxh_u64 h64) +{ + h64 = XXH_xorshift64(h64, 37); + h64 *= 0x165667919E3779F9ULL; + h64 = XXH_xorshift64(h64, 32); + return h64; +} + +/* + * This is a stronger avalanche, + * inspired by Pelle Evensen's rrmxmx + * preferable when input has not been previously mixed + */ +static XXH64_hash_t XXH3_rrmxmx(xxh_u64 h64, xxh_u64 len) +{ + /* this mix is inspired by Pelle Evensen's rrmxmx */ + h64 ^= XXH_rotl64(h64, 49) ^ XXH_rotl64(h64, 24); + h64 *= 0x9FB21C651E98DF25ULL; + h64 ^= (h64 >> 35) + len ; + h64 *= 0x9FB21C651E98DF25ULL; + return XXH_xorshift64(h64, 28); +} + + +/* ========================================== + * Short keys + * ========================================== + * One of the shortcomings of XXH32 and XXH64 was that their performance was + * sub-optimal on short lengths. It used an iterative algorithm which strongly + * favored lengths that were a multiple of 4 or 8. + * + * Instead of iterating over individual inputs, we use a set of single shot + * functions which piece together a range of lengths and operate in constant time. + * + * Additionally, the number of multiplies has been significantly reduced. This + * reduces latency, especially when emulating 64-bit multiplies on 32-bit. + * + * Depending on the platform, this may or may not be faster than XXH32, but it + * is almost guaranteed to be faster than XXH64. + */ + +/* + * At very short lengths, there isn't enough input to fully hide secrets, or use + * the entire secret. + * + * There is also only a limited amount of mixing we can do before significantly + * impacting performance. + * + * Therefore, we use different sections of the secret and always mix two secret + * samples with an XOR. This should have no effect on performance on the + * seedless or withSeed variants because everything _should_ be constant folded + * by modern compilers. + * + * The XOR mixing hides individual parts of the secret and increases entropy. + * + * This adds an extra layer of strength for custom secrets. + */ +XXH_FORCE_INLINE XXH64_hash_t +XXH3_len_1to3_64b(const xxh_u8* input, size_t len, const xxh_u8* secret, XXH64_hash_t seed) +{ + XXH_ASSERT(input != NULL); + XXH_ASSERT(1 <= len && len <= 3); + XXH_ASSERT(secret != NULL); + /* + * len = 1: combined = { input[0], 0x01, input[0], input[0] } + * len = 2: combined = { input[1], 0x02, input[0], input[1] } + * len = 3: combined = { input[2], 0x03, input[0], input[1] } + */ + { xxh_u8 const c1 = input[0]; + xxh_u8 const c2 = input[len >> 1]; + xxh_u8 const c3 = input[len - 1]; + xxh_u32 const combined = ((xxh_u32)c1 << 16) | ((xxh_u32)c2 << 24) + | ((xxh_u32)c3 << 0) | ((xxh_u32)len << 8); + xxh_u64 const bitflip = (XXH_readLE32(secret) ^ XXH_readLE32(secret+4)) + seed; + xxh_u64 const keyed = (xxh_u64)combined ^ bitflip; + return XXH64_avalanche(keyed); + } +} + +XXH_FORCE_INLINE XXH64_hash_t +XXH3_len_4to8_64b(const xxh_u8* input, size_t len, const xxh_u8* secret, XXH64_hash_t seed) +{ + XXH_ASSERT(input != NULL); + XXH_ASSERT(secret != NULL); + XXH_ASSERT(4 <= len && len < 8); + seed ^= (xxh_u64)XXH_swap32((xxh_u32)seed) << 32; + { xxh_u32 const input1 = XXH_readLE32(input); + xxh_u32 const input2 = XXH_readLE32(input + len - 4); + xxh_u64 const bitflip = (XXH_readLE64(secret+8) ^ XXH_readLE64(secret+16)) - seed; + xxh_u64 const input64 = input2 + (((xxh_u64)input1) << 32); + xxh_u64 const keyed = input64 ^ bitflip; + return XXH3_rrmxmx(keyed, len); + } +} + +XXH_FORCE_INLINE XXH64_hash_t +XXH3_len_9to16_64b(const xxh_u8* input, size_t len, const xxh_u8* secret, XXH64_hash_t seed) +{ + XXH_ASSERT(input != NULL); + XXH_ASSERT(secret != NULL); + XXH_ASSERT(8 <= len && len <= 16); + { xxh_u64 const bitflip1 = (XXH_readLE64(secret+24) ^ XXH_readLE64(secret+32)) + seed; + xxh_u64 const bitflip2 = (XXH_readLE64(secret+40) ^ XXH_readLE64(secret+48)) - seed; + xxh_u64 const input_lo = XXH_readLE64(input) ^ bitflip1; + xxh_u64 const input_hi = XXH_readLE64(input + len - 8) ^ bitflip2; + xxh_u64 const acc = len + + XXH_swap64(input_lo) + input_hi + + XXH3_mul128_fold64(input_lo, input_hi); + return XXH3_avalanche(acc); + } +} + +XXH_FORCE_INLINE XXH64_hash_t +XXH3_len_0to16_64b(const xxh_u8* input, size_t len, const xxh_u8* secret, XXH64_hash_t seed) +{ + XXH_ASSERT(len <= 16); + { if (XXH_likely(len > 8)) return XXH3_len_9to16_64b(input, len, secret, seed); + if (XXH_likely(len >= 4)) return XXH3_len_4to8_64b(input, len, secret, seed); + if (len) return XXH3_len_1to3_64b(input, len, secret, seed); + return XXH64_avalanche(seed ^ (XXH_readLE64(secret+56) ^ XXH_readLE64(secret+64))); + } +} + +/* + * DISCLAIMER: There are known *seed-dependent* multicollisions here due to + * multiplication by zero, affecting hashes of lengths 17 to 240. + * + * However, they are very unlikely. + * + * Keep this in mind when using the unseeded XXH3_64bits() variant: As with all + * unseeded non-cryptographic hashes, it does not attempt to defend itself + * against specially crafted inputs, only random inputs. + * + * Compared to classic UMAC where a 1 in 2^31 chance of 4 consecutive bytes + * cancelling out the secret is taken an arbitrary number of times (addressed + * in XXH3_accumulate_512), this collision is very unlikely with random inputs + * and/or proper seeding: + * + * This only has a 1 in 2^63 chance of 8 consecutive bytes cancelling out, in a + * function that is only called up to 16 times per hash with up to 240 bytes of + * input. + * + * This is not too bad for a non-cryptographic hash function, especially with + * only 64 bit outputs. + * + * The 128-bit variant (which trades some speed for strength) is NOT affected + * by this, although it is always a good idea to use a proper seed if you care + * about strength. + */ +XXH_FORCE_INLINE xxh_u64 XXH3_mix16B(const xxh_u8* XXH_RESTRICT input, + const xxh_u8* XXH_RESTRICT secret, xxh_u64 seed64) +{ +#if defined(__GNUC__) && !defined(__clang__) /* GCC, not Clang */ \ + && defined(__i386__) && defined(__SSE2__) /* x86 + SSE2 */ \ + && !defined(XXH_ENABLE_AUTOVECTORIZE) /* Define to disable like XXH32 hack */ + /* + * UGLY HACK: + * GCC for x86 tends to autovectorize the 128-bit multiply, resulting in + * slower code. + * + * By forcing seed64 into a register, we disrupt the cost model and + * cause it to scalarize. See `XXH32_round()` + * + * FIXME: Clang's output is still _much_ faster -- On an AMD Ryzen 3600, + * XXH3_64bits @ len=240 runs at 4.6 GB/s with Clang 9, but 3.3 GB/s on + * GCC 9.2, despite both emitting scalar code. + * + * GCC generates much better scalar code than Clang for the rest of XXH3, + * which is why finding a more optimal codepath is an interest. + */ + __asm__ ("" : "+r" (seed64)); +#endif + { xxh_u64 const input_lo = XXH_readLE64(input); + xxh_u64 const input_hi = XXH_readLE64(input+8); + return XXH3_mul128_fold64( + input_lo ^ (XXH_readLE64(secret) + seed64), + input_hi ^ (XXH_readLE64(secret+8) - seed64) + ); + } +} + +/* For mid range keys, XXH3 uses a Mum-hash variant. */ +XXH_FORCE_INLINE XXH64_hash_t +XXH3_len_17to128_64b(const xxh_u8* XXH_RESTRICT input, size_t len, + const xxh_u8* XXH_RESTRICT secret, size_t secretSize, + XXH64_hash_t seed) +{ + XXH_ASSERT(secretSize >= XXH3_SECRET_SIZE_MIN); (void)secretSize; + XXH_ASSERT(16 < len && len <= 128); + + { xxh_u64 acc = len * XXH_PRIME64_1; + if (len > 32) { + if (len > 64) { + if (len > 96) { + acc += XXH3_mix16B(input+48, secret+96, seed); + acc += XXH3_mix16B(input+len-64, secret+112, seed); + } + acc += XXH3_mix16B(input+32, secret+64, seed); + acc += XXH3_mix16B(input+len-48, secret+80, seed); + } + acc += XXH3_mix16B(input+16, secret+32, seed); + acc += XXH3_mix16B(input+len-32, secret+48, seed); + } + acc += XXH3_mix16B(input+0, secret+0, seed); + acc += XXH3_mix16B(input+len-16, secret+16, seed); + + return XXH3_avalanche(acc); + } +} + +#define XXH3_MIDSIZE_MAX 240 + +XXH_NO_INLINE XXH64_hash_t +XXH3_len_129to240_64b(const xxh_u8* XXH_RESTRICT input, size_t len, + const xxh_u8* XXH_RESTRICT secret, size_t secretSize, + XXH64_hash_t seed) +{ + XXH_ASSERT(secretSize >= XXH3_SECRET_SIZE_MIN); (void)secretSize; + XXH_ASSERT(128 < len && len <= XXH3_MIDSIZE_MAX); + + #define XXH3_MIDSIZE_STARTOFFSET 3 + #define XXH3_MIDSIZE_LASTOFFSET 17 + + { xxh_u64 acc = len * XXH_PRIME64_1; + int const nbRounds = (int)len / 16; + int i; + for (i=0; i<8; i++) { + acc += XXH3_mix16B(input+(16*i), secret+(16*i), seed); + } + acc = XXH3_avalanche(acc); + XXH_ASSERT(nbRounds >= 8); +#if defined(__clang__) /* Clang */ \ + && (defined(__ARM_NEON) || defined(__ARM_NEON__)) /* NEON */ \ + && !defined(XXH_ENABLE_AUTOVECTORIZE) /* Define to disable */ + /* + * UGLY HACK: + * Clang for ARMv7-A tries to vectorize this loop, similar to GCC x86. + * In everywhere else, it uses scalar code. + * + * For 64->128-bit multiplies, even if the NEON was 100% optimal, it + * would still be slower than UMAAL (see XXH_mult64to128). + * + * Unfortunately, Clang doesn't handle the long multiplies properly and + * converts them to the nonexistent "vmulq_u64" intrinsic, which is then + * scalarized into an ugly mess of VMOV.32 instructions. + * + * This mess is difficult to avoid without turning autovectorization + * off completely, but they are usually relatively minor and/or not + * worth it to fix. + * + * This loop is the easiest to fix, as unlike XXH32, this pragma + * _actually works_ because it is a loop vectorization instead of an + * SLP vectorization. + */ + #pragma clang loop vectorize(disable) +#endif + for (i=8 ; i < nbRounds; i++) { + acc += XXH3_mix16B(input+(16*i), secret+(16*(i-8)) + XXH3_MIDSIZE_STARTOFFSET, seed); + } + /* last bytes */ + acc += XXH3_mix16B(input + len - 16, secret + XXH3_SECRET_SIZE_MIN - XXH3_MIDSIZE_LASTOFFSET, seed); + return XXH3_avalanche(acc); + } +} + + +/* ======= Long Keys ======= */ + +#define XXH_STRIPE_LEN 64 +#define XXH_SECRET_CONSUME_RATE 8 /* nb of secret bytes consumed at each accumulation */ +#define XXH_ACC_NB (XXH_STRIPE_LEN / sizeof(xxh_u64)) + +#ifdef XXH_OLD_NAMES +# define STRIPE_LEN XXH_STRIPE_LEN +# define ACC_NB XXH_ACC_NB +#endif + +XXH_FORCE_INLINE void XXH_writeLE64(void* dst, xxh_u64 v64) +{ + if (!XXH_CPU_LITTLE_ENDIAN) v64 = XXH_swap64(v64); + memcpy(dst, &v64, sizeof(v64)); +} + +/* Several intrinsic functions below are supposed to accept __int64 as argument, + * as documented in https://software.intel.com/sites/landingpage/IntrinsicsGuide/ . + * However, several environments do not define __int64 type, + * requiring a workaround. + */ +#if !defined (__VMS) \ + && (defined (__cplusplus) \ + || (defined (__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L) /* C99 */) ) + typedef int64_t xxh_i64; +#else + /* the following type must have a width of 64-bit */ + typedef long long xxh_i64; +#endif + +/* + * XXH3_accumulate_512 is the tightest loop for long inputs, and it is the most optimized. + * + * It is a hardened version of UMAC, based off of FARSH's implementation. + * + * This was chosen because it adapts quite well to 32-bit, 64-bit, and SIMD + * implementations, and it is ridiculously fast. + * + * We harden it by mixing the original input to the accumulators as well as the product. + * + * This means that in the (relatively likely) case of a multiply by zero, the + * original input is preserved. + * + * On 128-bit inputs, we swap 64-bit pairs when we add the input to improve + * cross-pollination, as otherwise the upper and lower halves would be + * essentially independent. + * + * This doesn't matter on 64-bit hashes since they all get merged together in + * the end, so we skip the extra step. + * + * Both XXH3_64bits and XXH3_128bits use this subroutine. + */ + +#if (XXH_VECTOR == XXH_AVX512) \ + || (defined(XXH_DISPATCH_AVX512) && XXH_DISPATCH_AVX512 != 0) + +#ifndef XXH_TARGET_AVX512 +# define XXH_TARGET_AVX512 /* disable attribute target */ +#endif + +XXH_FORCE_INLINE XXH_TARGET_AVX512 void +XXH3_accumulate_512_avx512(void* XXH_RESTRICT acc, + const void* XXH_RESTRICT input, + const void* XXH_RESTRICT secret) +{ + XXH_ALIGN(64) __m512i* const xacc = (__m512i *) acc; + XXH_ASSERT((((size_t)acc) & 63) == 0); + XXH_STATIC_ASSERT(XXH_STRIPE_LEN == sizeof(__m512i)); + + { + /* data_vec = input[0]; */ + __m512i const data_vec = _mm512_loadu_si512 (input); + /* key_vec = secret[0]; */ + __m512i const key_vec = _mm512_loadu_si512 (secret); + /* data_key = data_vec ^ key_vec; */ + __m512i const data_key = _mm512_xor_si512 (data_vec, key_vec); + /* data_key_lo = data_key >> 32; */ + __m512i const data_key_lo = _mm512_shuffle_epi32 (data_key, (_MM_PERM_ENUM)_MM_SHUFFLE(0, 3, 0, 1)); + /* product = (data_key & 0xffffffff) * (data_key_lo & 0xffffffff); */ + __m512i const product = _mm512_mul_epu32 (data_key, data_key_lo); + /* xacc[0] += swap(data_vec); */ + __m512i const data_swap = _mm512_shuffle_epi32(data_vec, (_MM_PERM_ENUM)_MM_SHUFFLE(1, 0, 3, 2)); + __m512i const sum = _mm512_add_epi64(*xacc, data_swap); + /* xacc[0] += product; */ + *xacc = _mm512_add_epi64(product, sum); + } +} + +/* + * XXH3_scrambleAcc: Scrambles the accumulators to improve mixing. + * + * Multiplication isn't perfect, as explained by Google in HighwayHash: + * + * // Multiplication mixes/scrambles bytes 0-7 of the 64-bit result to + * // varying degrees. In descending order of goodness, bytes + * // 3 4 2 5 1 6 0 7 have quality 228 224 164 160 100 96 36 32. + * // As expected, the upper and lower bytes are much worse. + * + * Source: https://github.com/google/highwayhash/blob/0aaf66b/highwayhash/hh_avx2.h#L291 + * + * Since our algorithm uses a pseudorandom secret to add some variance into the + * mix, we don't need to (or want to) mix as often or as much as HighwayHash does. + * + * This isn't as tight as XXH3_accumulate, but still written in SIMD to avoid + * extraction. + * + * Both XXH3_64bits and XXH3_128bits use this subroutine. + */ + +XXH_FORCE_INLINE XXH_TARGET_AVX512 void +XXH3_scrambleAcc_avx512(void* XXH_RESTRICT acc, const void* XXH_RESTRICT secret) +{ + XXH_ASSERT((((size_t)acc) & 63) == 0); + XXH_STATIC_ASSERT(XXH_STRIPE_LEN == sizeof(__m512i)); + { XXH_ALIGN(64) __m512i* const xacc = (__m512i*) acc; + const __m512i prime32 = _mm512_set1_epi32((int)XXH_PRIME32_1); + + /* xacc[0] ^= (xacc[0] >> 47) */ + __m512i const acc_vec = *xacc; + __m512i const shifted = _mm512_srli_epi64 (acc_vec, 47); + __m512i const data_vec = _mm512_xor_si512 (acc_vec, shifted); + /* xacc[0] ^= secret; */ + __m512i const key_vec = _mm512_loadu_si512 (secret); + __m512i const data_key = _mm512_xor_si512 (data_vec, key_vec); + + /* xacc[0] *= XXH_PRIME32_1; */ + __m512i const data_key_hi = _mm512_shuffle_epi32 (data_key, (_MM_PERM_ENUM)_MM_SHUFFLE(0, 3, 0, 1)); + __m512i const prod_lo = _mm512_mul_epu32 (data_key, prime32); + __m512i const prod_hi = _mm512_mul_epu32 (data_key_hi, prime32); + *xacc = _mm512_add_epi64(prod_lo, _mm512_slli_epi64(prod_hi, 32)); + } +} + +XXH_FORCE_INLINE XXH_TARGET_AVX512 void +XXH3_initCustomSecret_avx512(void* XXH_RESTRICT customSecret, xxh_u64 seed64) +{ + XXH_STATIC_ASSERT((XXH_SECRET_DEFAULT_SIZE & 63) == 0); + XXH_STATIC_ASSERT(XXH_SEC_ALIGN == 64); + XXH_ASSERT(((size_t)customSecret & 63) == 0); + (void)(&XXH_writeLE64); + { int const nbRounds = XXH_SECRET_DEFAULT_SIZE / sizeof(__m512i); + __m512i const seed = _mm512_mask_set1_epi64(_mm512_set1_epi64((xxh_i64)seed64), 0xAA, -(xxh_i64)seed64); + + XXH_ALIGN(64) const __m512i* const src = (const __m512i*) XXH3_kSecret; + XXH_ALIGN(64) __m512i* const dest = ( __m512i*) customSecret; + int i; + for (i=0; i < nbRounds; ++i) { + /* GCC has a bug, _mm512_stream_load_si512 accepts 'void*', not 'void const*', + * this will warn "discards ‘const’ qualifier". */ + union { + XXH_ALIGN(64) const __m512i* cp; + XXH_ALIGN(64) void* p; + } remote_const_void; + remote_const_void.cp = src + i; + dest[i] = _mm512_add_epi64(_mm512_stream_load_si512(remote_const_void.p), seed); + } } +} + +#endif + +#if (XXH_VECTOR == XXH_AVX2) \ + || (defined(XXH_DISPATCH_AVX2) && XXH_DISPATCH_AVX2 != 0) + +#ifndef XXH_TARGET_AVX2 +# define XXH_TARGET_AVX2 /* disable attribute target */ +#endif + +XXH_FORCE_INLINE XXH_TARGET_AVX2 void +XXH3_accumulate_512_avx2( void* XXH_RESTRICT acc, + const void* XXH_RESTRICT input, + const void* XXH_RESTRICT secret) +{ + XXH_ASSERT((((size_t)acc) & 31) == 0); + { XXH_ALIGN(32) __m256i* const xacc = (__m256i *) acc; + /* Unaligned. This is mainly for pointer arithmetic, and because + * _mm256_loadu_si256 requires a const __m256i * pointer for some reason. */ + const __m256i* const xinput = (const __m256i *) input; + /* Unaligned. This is mainly for pointer arithmetic, and because + * _mm256_loadu_si256 requires a const __m256i * pointer for some reason. */ + const __m256i* const xsecret = (const __m256i *) secret; + + size_t i; + for (i=0; i < XXH_STRIPE_LEN/sizeof(__m256i); i++) { + /* data_vec = xinput[i]; */ + __m256i const data_vec = _mm256_loadu_si256 (xinput+i); + /* key_vec = xsecret[i]; */ + __m256i const key_vec = _mm256_loadu_si256 (xsecret+i); + /* data_key = data_vec ^ key_vec; */ + __m256i const data_key = _mm256_xor_si256 (data_vec, key_vec); + /* data_key_lo = data_key >> 32; */ + __m256i const data_key_lo = _mm256_shuffle_epi32 (data_key, _MM_SHUFFLE(0, 3, 0, 1)); + /* product = (data_key & 0xffffffff) * (data_key_lo & 0xffffffff); */ + __m256i const product = _mm256_mul_epu32 (data_key, data_key_lo); + /* xacc[i] += swap(data_vec); */ + __m256i const data_swap = _mm256_shuffle_epi32(data_vec, _MM_SHUFFLE(1, 0, 3, 2)); + __m256i const sum = _mm256_add_epi64(xacc[i], data_swap); + /* xacc[i] += product; */ + xacc[i] = _mm256_add_epi64(product, sum); + } } +} + +XXH_FORCE_INLINE XXH_TARGET_AVX2 void +XXH3_scrambleAcc_avx2(void* XXH_RESTRICT acc, const void* XXH_RESTRICT secret) +{ + XXH_ASSERT((((size_t)acc) & 31) == 0); + { XXH_ALIGN(32) __m256i* const xacc = (__m256i*) acc; + /* Unaligned. This is mainly for pointer arithmetic, and because + * _mm256_loadu_si256 requires a const __m256i * pointer for some reason. */ + const __m256i* const xsecret = (const __m256i *) secret; + const __m256i prime32 = _mm256_set1_epi32((int)XXH_PRIME32_1); + + size_t i; + for (i=0; i < XXH_STRIPE_LEN/sizeof(__m256i); i++) { + /* xacc[i] ^= (xacc[i] >> 47) */ + __m256i const acc_vec = xacc[i]; + __m256i const shifted = _mm256_srli_epi64 (acc_vec, 47); + __m256i const data_vec = _mm256_xor_si256 (acc_vec, shifted); + /* xacc[i] ^= xsecret; */ + __m256i const key_vec = _mm256_loadu_si256 (xsecret+i); + __m256i const data_key = _mm256_xor_si256 (data_vec, key_vec); + + /* xacc[i] *= XXH_PRIME32_1; */ + __m256i const data_key_hi = _mm256_shuffle_epi32 (data_key, _MM_SHUFFLE(0, 3, 0, 1)); + __m256i const prod_lo = _mm256_mul_epu32 (data_key, prime32); + __m256i const prod_hi = _mm256_mul_epu32 (data_key_hi, prime32); + xacc[i] = _mm256_add_epi64(prod_lo, _mm256_slli_epi64(prod_hi, 32)); + } + } +} + +XXH_FORCE_INLINE XXH_TARGET_AVX2 void XXH3_initCustomSecret_avx2(void* XXH_RESTRICT customSecret, xxh_u64 seed64) +{ + XXH_STATIC_ASSERT((XXH_SECRET_DEFAULT_SIZE & 31) == 0); + XXH_STATIC_ASSERT((XXH_SECRET_DEFAULT_SIZE / sizeof(__m256i)) == 6); + XXH_STATIC_ASSERT(XXH_SEC_ALIGN <= 64); + (void)(&XXH_writeLE64); + XXH_PREFETCH(customSecret); + { __m256i const seed = _mm256_set_epi64x(-(xxh_i64)seed64, (xxh_i64)seed64, -(xxh_i64)seed64, (xxh_i64)seed64); + + XXH_ALIGN(64) const __m256i* const src = (const __m256i*) XXH3_kSecret; + XXH_ALIGN(64) __m256i* dest = ( __m256i*) customSecret; + +# if defined(__GNUC__) || defined(__clang__) + /* + * On GCC & Clang, marking 'dest' as modified will cause the compiler: + * - do not extract the secret from sse registers in the internal loop + * - use less common registers, and avoid pushing these reg into stack + * The asm hack causes Clang to assume that XXH3_kSecretPtr aliases with + * customSecret, and on aarch64, this prevented LDP from merging two + * loads together for free. Putting the loads together before the stores + * properly generates LDP. + */ + __asm__("" : "+r" (dest)); +# endif + + /* GCC -O2 need unroll loop manually */ + dest[0] = _mm256_add_epi64(_mm256_stream_load_si256(src+0), seed); + dest[1] = _mm256_add_epi64(_mm256_stream_load_si256(src+1), seed); + dest[2] = _mm256_add_epi64(_mm256_stream_load_si256(src+2), seed); + dest[3] = _mm256_add_epi64(_mm256_stream_load_si256(src+3), seed); + dest[4] = _mm256_add_epi64(_mm256_stream_load_si256(src+4), seed); + dest[5] = _mm256_add_epi64(_mm256_stream_load_si256(src+5), seed); + } +} + +#endif + +/* x86dispatch always generates SSE2 */ +#if (XXH_VECTOR == XXH_SSE2) || defined(XXH_X86DISPATCH) + +#ifndef XXH_TARGET_SSE2 +# define XXH_TARGET_SSE2 /* disable attribute target */ +#endif + +XXH_FORCE_INLINE XXH_TARGET_SSE2 void +XXH3_accumulate_512_sse2( void* XXH_RESTRICT acc, + const void* XXH_RESTRICT input, + const void* XXH_RESTRICT secret) +{ + /* SSE2 is just a half-scale version of the AVX2 version. */ + XXH_ASSERT((((size_t)acc) & 15) == 0); + { XXH_ALIGN(16) __m128i* const xacc = (__m128i *) acc; + /* Unaligned. This is mainly for pointer arithmetic, and because + * _mm_loadu_si128 requires a const __m128i * pointer for some reason. */ + const __m128i* const xinput = (const __m128i *) input; + /* Unaligned. This is mainly for pointer arithmetic, and because + * _mm_loadu_si128 requires a const __m128i * pointer for some reason. */ + const __m128i* const xsecret = (const __m128i *) secret; + + size_t i; + for (i=0; i < XXH_STRIPE_LEN/sizeof(__m128i); i++) { + /* data_vec = xinput[i]; */ + __m128i const data_vec = _mm_loadu_si128 (xinput+i); + /* key_vec = xsecret[i]; */ + __m128i const key_vec = _mm_loadu_si128 (xsecret+i); + /* data_key = data_vec ^ key_vec; */ + __m128i const data_key = _mm_xor_si128 (data_vec, key_vec); + /* data_key_lo = data_key >> 32; */ + __m128i const data_key_lo = _mm_shuffle_epi32 (data_key, _MM_SHUFFLE(0, 3, 0, 1)); + /* product = (data_key & 0xffffffff) * (data_key_lo & 0xffffffff); */ + __m128i const product = _mm_mul_epu32 (data_key, data_key_lo); + /* xacc[i] += swap(data_vec); */ + __m128i const data_swap = _mm_shuffle_epi32(data_vec, _MM_SHUFFLE(1,0,3,2)); + __m128i const sum = _mm_add_epi64(xacc[i], data_swap); + /* xacc[i] += product; */ + xacc[i] = _mm_add_epi64(product, sum); + } } +} + +XXH_FORCE_INLINE XXH_TARGET_SSE2 void +XXH3_scrambleAcc_sse2(void* XXH_RESTRICT acc, const void* XXH_RESTRICT secret) +{ + XXH_ASSERT((((size_t)acc) & 15) == 0); + { XXH_ALIGN(16) __m128i* const xacc = (__m128i*) acc; + /* Unaligned. This is mainly for pointer arithmetic, and because + * _mm_loadu_si128 requires a const __m128i * pointer for some reason. */ + const __m128i* const xsecret = (const __m128i *) secret; + const __m128i prime32 = _mm_set1_epi32((int)XXH_PRIME32_1); + + size_t i; + for (i=0; i < XXH_STRIPE_LEN/sizeof(__m128i); i++) { + /* xacc[i] ^= (xacc[i] >> 47) */ + __m128i const acc_vec = xacc[i]; + __m128i const shifted = _mm_srli_epi64 (acc_vec, 47); + __m128i const data_vec = _mm_xor_si128 (acc_vec, shifted); + /* xacc[i] ^= xsecret[i]; */ + __m128i const key_vec = _mm_loadu_si128 (xsecret+i); + __m128i const data_key = _mm_xor_si128 (data_vec, key_vec); + + /* xacc[i] *= XXH_PRIME32_1; */ + __m128i const data_key_hi = _mm_shuffle_epi32 (data_key, _MM_SHUFFLE(0, 3, 0, 1)); + __m128i const prod_lo = _mm_mul_epu32 (data_key, prime32); + __m128i const prod_hi = _mm_mul_epu32 (data_key_hi, prime32); + xacc[i] = _mm_add_epi64(prod_lo, _mm_slli_epi64(prod_hi, 32)); + } + } +} + +XXH_FORCE_INLINE XXH_TARGET_SSE2 void XXH3_initCustomSecret_sse2(void* XXH_RESTRICT customSecret, xxh_u64 seed64) +{ + XXH_STATIC_ASSERT((XXH_SECRET_DEFAULT_SIZE & 15) == 0); + (void)(&XXH_writeLE64); + { int const nbRounds = XXH_SECRET_DEFAULT_SIZE / sizeof(__m128i); + +# if defined(_MSC_VER) && defined(_M_IX86) && _MSC_VER < 1900 + // MSVC 32bit mode does not support _mm_set_epi64x before 2015 + XXH_ALIGN(16) const xxh_i64 seed64x2[2] = { (xxh_i64)seed64, -(xxh_i64)seed64 }; + __m128i const seed = _mm_load_si128((__m128i const*)seed64x2); +# else + __m128i const seed = _mm_set_epi64x(-(xxh_i64)seed64, (xxh_i64)seed64); +# endif + int i; + + XXH_ALIGN(64) const float* const src = (float const*) XXH3_kSecret; + XXH_ALIGN(XXH_SEC_ALIGN) __m128i* dest = (__m128i*) customSecret; +# if defined(__GNUC__) || defined(__clang__) + /* + * On GCC & Clang, marking 'dest' as modified will cause the compiler: + * - do not extract the secret from sse registers in the internal loop + * - use less common registers, and avoid pushing these reg into stack + */ + __asm__("" : "+r" (dest)); +# endif + + for (i=0; i < nbRounds; ++i) { + dest[i] = _mm_add_epi64(_mm_castps_si128(_mm_load_ps(src+i*4)), seed); + } } +} + +#endif + +#if (XXH_VECTOR == XXH_NEON) + +XXH_FORCE_INLINE void +XXH3_accumulate_512_neon( void* XXH_RESTRICT acc, + const void* XXH_RESTRICT input, + const void* XXH_RESTRICT secret) +{ + XXH_ASSERT((((size_t)acc) & 15) == 0); + { + XXH_ALIGN(16) uint64x2_t* const xacc = (uint64x2_t *) acc; + /* We don't use a uint32x4_t pointer because it causes bus errors on ARMv7. */ + uint8_t const* const xinput = (const uint8_t *) input; + uint8_t const* const xsecret = (const uint8_t *) secret; + + size_t i; + for (i=0; i < XXH_STRIPE_LEN / sizeof(uint64x2_t); i++) { + /* data_vec = xinput[i]; */ + uint8x16_t data_vec = vld1q_u8(xinput + (i * 16)); + /* key_vec = xsecret[i]; */ + uint8x16_t key_vec = vld1q_u8(xsecret + (i * 16)); + uint64x2_t data_key; + uint32x2_t data_key_lo, data_key_hi; + /* xacc[i] += swap(data_vec); */ + uint64x2_t const data64 = vreinterpretq_u64_u8(data_vec); + uint64x2_t const swapped = vextq_u64(data64, data64, 1); + xacc[i] = vaddq_u64 (xacc[i], swapped); + /* data_key = data_vec ^ key_vec; */ + data_key = vreinterpretq_u64_u8(veorq_u8(data_vec, key_vec)); + /* data_key_lo = (uint32x2_t) (data_key & 0xFFFFFFFF); + * data_key_hi = (uint32x2_t) (data_key >> 32); + * data_key = UNDEFINED; */ + XXH_SPLIT_IN_PLACE(data_key, data_key_lo, data_key_hi); + /* xacc[i] += (uint64x2_t) data_key_lo * (uint64x2_t) data_key_hi; */ + xacc[i] = vmlal_u32 (xacc[i], data_key_lo, data_key_hi); + + } + } +} + +XXH_FORCE_INLINE void +XXH3_scrambleAcc_neon(void* XXH_RESTRICT acc, const void* XXH_RESTRICT secret) +{ + XXH_ASSERT((((size_t)acc) & 15) == 0); + + { uint64x2_t* xacc = (uint64x2_t*) acc; + uint8_t const* xsecret = (uint8_t const*) secret; + uint32x2_t prime = vdup_n_u32 (XXH_PRIME32_1); + + size_t i; + for (i=0; i < XXH_STRIPE_LEN/sizeof(uint64x2_t); i++) { + /* xacc[i] ^= (xacc[i] >> 47); */ + uint64x2_t acc_vec = xacc[i]; + uint64x2_t shifted = vshrq_n_u64 (acc_vec, 47); + uint64x2_t data_vec = veorq_u64 (acc_vec, shifted); + + /* xacc[i] ^= xsecret[i]; */ + uint8x16_t key_vec = vld1q_u8(xsecret + (i * 16)); + uint64x2_t data_key = veorq_u64(data_vec, vreinterpretq_u64_u8(key_vec)); + + /* xacc[i] *= XXH_PRIME32_1 */ + uint32x2_t data_key_lo, data_key_hi; + /* data_key_lo = (uint32x2_t) (xacc[i] & 0xFFFFFFFF); + * data_key_hi = (uint32x2_t) (xacc[i] >> 32); + * xacc[i] = UNDEFINED; */ + XXH_SPLIT_IN_PLACE(data_key, data_key_lo, data_key_hi); + { /* + * prod_hi = (data_key >> 32) * XXH_PRIME32_1; + * + * Avoid vmul_u32 + vshll_n_u32 since Clang 6 and 7 will + * incorrectly "optimize" this: + * tmp = vmul_u32(vmovn_u64(a), vmovn_u64(b)); + * shifted = vshll_n_u32(tmp, 32); + * to this: + * tmp = "vmulq_u64"(a, b); // no such thing! + * shifted = vshlq_n_u64(tmp, 32); + * + * However, unlike SSE, Clang lacks a 64-bit multiply routine + * for NEON, and it scalarizes two 64-bit multiplies instead. + * + * vmull_u32 has the same timing as vmul_u32, and it avoids + * this bug completely. + * See https://bugs.llvm.org/show_bug.cgi?id=39967 + */ + uint64x2_t prod_hi = vmull_u32 (data_key_hi, prime); + /* xacc[i] = prod_hi << 32; */ + xacc[i] = vshlq_n_u64(prod_hi, 32); + /* xacc[i] += (prod_hi & 0xFFFFFFFF) * XXH_PRIME32_1; */ + xacc[i] = vmlal_u32(xacc[i], data_key_lo, prime); + } + } } +} + +#endif + +#if (XXH_VECTOR == XXH_VSX) + +XXH_FORCE_INLINE void +XXH3_accumulate_512_vsx( void* XXH_RESTRICT acc, + const void* XXH_RESTRICT input, + const void* XXH_RESTRICT secret) +{ + xxh_u64x2* const xacc = (xxh_u64x2*) acc; /* presumed aligned */ + xxh_u64x2 const* const xinput = (xxh_u64x2 const*) input; /* no alignment restriction */ + xxh_u64x2 const* const xsecret = (xxh_u64x2 const*) secret; /* no alignment restriction */ + xxh_u64x2 const v32 = { 32, 32 }; + size_t i; + for (i = 0; i < XXH_STRIPE_LEN / sizeof(xxh_u64x2); i++) { + /* data_vec = xinput[i]; */ + xxh_u64x2 const data_vec = XXH_vec_loadu(xinput + i); + /* key_vec = xsecret[i]; */ + xxh_u64x2 const key_vec = XXH_vec_loadu(xsecret + i); + xxh_u64x2 const data_key = data_vec ^ key_vec; + /* shuffled = (data_key << 32) | (data_key >> 32); */ + xxh_u32x4 const shuffled = (xxh_u32x4)vec_rl(data_key, v32); + /* product = ((xxh_u64x2)data_key & 0xFFFFFFFF) * ((xxh_u64x2)shuffled & 0xFFFFFFFF); */ + xxh_u64x2 const product = XXH_vec_mulo((xxh_u32x4)data_key, shuffled); + xacc[i] += product; + + /* swap high and low halves */ +#ifdef __s390x__ + xacc[i] += vec_permi(data_vec, data_vec, 2); +#else + xacc[i] += vec_xxpermdi(data_vec, data_vec, 2); +#endif + } +} + +XXH_FORCE_INLINE void +XXH3_scrambleAcc_vsx(void* XXH_RESTRICT acc, const void* XXH_RESTRICT secret) +{ + XXH_ASSERT((((size_t)acc) & 15) == 0); + + { xxh_u64x2* const xacc = (xxh_u64x2*) acc; + const xxh_u64x2* const xsecret = (const xxh_u64x2*) secret; + /* constants */ + xxh_u64x2 const v32 = { 32, 32 }; + xxh_u64x2 const v47 = { 47, 47 }; + xxh_u32x4 const prime = { XXH_PRIME32_1, XXH_PRIME32_1, XXH_PRIME32_1, XXH_PRIME32_1 }; + size_t i; + for (i = 0; i < XXH_STRIPE_LEN / sizeof(xxh_u64x2); i++) { + /* xacc[i] ^= (xacc[i] >> 47); */ + xxh_u64x2 const acc_vec = xacc[i]; + xxh_u64x2 const data_vec = acc_vec ^ (acc_vec >> v47); + + /* xacc[i] ^= xsecret[i]; */ + xxh_u64x2 const key_vec = XXH_vec_loadu(xsecret + i); + xxh_u64x2 const data_key = data_vec ^ key_vec; + + /* xacc[i] *= XXH_PRIME32_1 */ + /* prod_lo = ((xxh_u64x2)data_key & 0xFFFFFFFF) * ((xxh_u64x2)prime & 0xFFFFFFFF); */ + xxh_u64x2 const prod_even = XXH_vec_mule((xxh_u32x4)data_key, prime); + /* prod_hi = ((xxh_u64x2)data_key >> 32) * ((xxh_u64x2)prime >> 32); */ + xxh_u64x2 const prod_odd = XXH_vec_mulo((xxh_u32x4)data_key, prime); + xacc[i] = prod_odd + (prod_even << v32); + } } +} + +#endif + +/* scalar variants - universal */ + +XXH_FORCE_INLINE void +XXH3_accumulate_512_scalar(void* XXH_RESTRICT acc, + const void* XXH_RESTRICT input, + const void* XXH_RESTRICT secret) +{ + XXH_ALIGN(XXH_ACC_ALIGN) xxh_u64* const xacc = (xxh_u64*) acc; /* presumed aligned */ + const xxh_u8* const xinput = (const xxh_u8*) input; /* no alignment restriction */ + const xxh_u8* const xsecret = (const xxh_u8*) secret; /* no alignment restriction */ + size_t i; + XXH_ASSERT(((size_t)acc & (XXH_ACC_ALIGN-1)) == 0); + for (i=0; i < XXH_ACC_NB; i++) { + xxh_u64 const data_val = XXH_readLE64(xinput + 8*i); + xxh_u64 const data_key = data_val ^ XXH_readLE64(xsecret + i*8); + xacc[i ^ 1] += data_val; /* swap adjacent lanes */ + xacc[i] += XXH_mult32to64(data_key & 0xFFFFFFFF, data_key >> 32); + } +} + +XXH_FORCE_INLINE void +XXH3_scrambleAcc_scalar(void* XXH_RESTRICT acc, const void* XXH_RESTRICT secret) +{ + XXH_ALIGN(XXH_ACC_ALIGN) xxh_u64* const xacc = (xxh_u64*) acc; /* presumed aligned */ + const xxh_u8* const xsecret = (const xxh_u8*) secret; /* no alignment restriction */ + size_t i; + XXH_ASSERT((((size_t)acc) & (XXH_ACC_ALIGN-1)) == 0); + for (i=0; i < XXH_ACC_NB; i++) { + xxh_u64 const key64 = XXH_readLE64(xsecret + 8*i); + xxh_u64 acc64 = xacc[i]; + acc64 = XXH_xorshift64(acc64, 47); + acc64 ^= key64; + acc64 *= XXH_PRIME32_1; + xacc[i] = acc64; + } +} + +XXH_FORCE_INLINE void +XXH3_initCustomSecret_scalar(void* XXH_RESTRICT customSecret, xxh_u64 seed64) +{ + /* + * We need a separate pointer for the hack below, + * which requires a non-const pointer. + * Any decent compiler will optimize this out otherwise. + */ + const xxh_u8* kSecretPtr = XXH3_kSecret; + XXH_STATIC_ASSERT((XXH_SECRET_DEFAULT_SIZE & 15) == 0); + +#if defined(__clang__) && defined(__aarch64__) + /* + * UGLY HACK: + * Clang generates a bunch of MOV/MOVK pairs for aarch64, and they are + * placed sequentially, in order, at the top of the unrolled loop. + * + * While MOVK is great for generating constants (2 cycles for a 64-bit + * constant compared to 4 cycles for LDR), long MOVK chains stall the + * integer pipelines: + * I L S + * MOVK + * MOVK + * MOVK + * MOVK + * ADD + * SUB STR + * STR + * By forcing loads from memory (as the asm line causes Clang to assume + * that XXH3_kSecretPtr has been changed), the pipelines are used more + * efficiently: + * I L S + * LDR + * ADD LDR + * SUB STR + * STR + * XXH3_64bits_withSeed, len == 256, Snapdragon 835 + * without hack: 2654.4 MB/s + * with hack: 3202.9 MB/s + */ + __asm__("" : "+r" (kSecretPtr)); +#endif + /* + * Note: in debug mode, this overrides the asm optimization + * and Clang will emit MOVK chains again. + */ + XXH_ASSERT(kSecretPtr == XXH3_kSecret); + + { int const nbRounds = XXH_SECRET_DEFAULT_SIZE / 16; + int i; + for (i=0; i < nbRounds; i++) { + /* + * The asm hack causes Clang to assume that kSecretPtr aliases with + * customSecret, and on aarch64, this prevented LDP from merging two + * loads together for free. Putting the loads together before the stores + * properly generates LDP. + */ + xxh_u64 lo = XXH_readLE64(kSecretPtr + 16*i) + seed64; + xxh_u64 hi = XXH_readLE64(kSecretPtr + 16*i + 8) - seed64; + XXH_writeLE64((xxh_u8*)customSecret + 16*i, lo); + XXH_writeLE64((xxh_u8*)customSecret + 16*i + 8, hi); + } } +} + + +typedef void (*XXH3_f_accumulate_512)(void* XXH_RESTRICT, const void*, const void*); +typedef void (*XXH3_f_scrambleAcc)(void* XXH_RESTRICT, const void*); +typedef void (*XXH3_f_initCustomSecret)(void* XXH_RESTRICT, xxh_u64); + + +#if (XXH_VECTOR == XXH_AVX512) + +#define XXH3_accumulate_512 XXH3_accumulate_512_avx512 +#define XXH3_scrambleAcc XXH3_scrambleAcc_avx512 +#define XXH3_initCustomSecret XXH3_initCustomSecret_avx512 + +#elif (XXH_VECTOR == XXH_AVX2) + +#define XXH3_accumulate_512 XXH3_accumulate_512_avx2 +#define XXH3_scrambleAcc XXH3_scrambleAcc_avx2 +#define XXH3_initCustomSecret XXH3_initCustomSecret_avx2 + +#elif (XXH_VECTOR == XXH_SSE2) + +#define XXH3_accumulate_512 XXH3_accumulate_512_sse2 +#define XXH3_scrambleAcc XXH3_scrambleAcc_sse2 +#define XXH3_initCustomSecret XXH3_initCustomSecret_sse2 + +#elif (XXH_VECTOR == XXH_NEON) + +#define XXH3_accumulate_512 XXH3_accumulate_512_neon +#define XXH3_scrambleAcc XXH3_scrambleAcc_neon +#define XXH3_initCustomSecret XXH3_initCustomSecret_scalar + +#elif (XXH_VECTOR == XXH_VSX) + +#define XXH3_accumulate_512 XXH3_accumulate_512_vsx +#define XXH3_scrambleAcc XXH3_scrambleAcc_vsx +#define XXH3_initCustomSecret XXH3_initCustomSecret_scalar + +#else /* scalar */ + +#define XXH3_accumulate_512 XXH3_accumulate_512_scalar +#define XXH3_scrambleAcc XXH3_scrambleAcc_scalar +#define XXH3_initCustomSecret XXH3_initCustomSecret_scalar + +#endif + + + +#ifndef XXH_PREFETCH_DIST +# ifdef __clang__ +# define XXH_PREFETCH_DIST 320 +# else +# if (XXH_VECTOR == XXH_AVX512) +# define XXH_PREFETCH_DIST 512 +# else +# define XXH_PREFETCH_DIST 384 +# endif +# endif /* __clang__ */ +#endif /* XXH_PREFETCH_DIST */ + +/* + * XXH3_accumulate() + * Loops over XXH3_accumulate_512(). + * Assumption: nbStripes will not overflow the secret size + */ +XXH_FORCE_INLINE void +XXH3_accumulate( xxh_u64* XXH_RESTRICT acc, + const xxh_u8* XXH_RESTRICT input, + const xxh_u8* XXH_RESTRICT secret, + size_t nbStripes, + XXH3_f_accumulate_512 f_acc512) +{ + size_t n; + for (n = 0; n < nbStripes; n++ ) { + const xxh_u8* const in = input + n*XXH_STRIPE_LEN; + XXH_PREFETCH(in + XXH_PREFETCH_DIST); + f_acc512(acc, + in, + secret + n*XXH_SECRET_CONSUME_RATE); + } +} + +XXH_FORCE_INLINE void +XXH3_hashLong_internal_loop(xxh_u64* XXH_RESTRICT acc, + const xxh_u8* XXH_RESTRICT input, size_t len, + const xxh_u8* XXH_RESTRICT secret, size_t secretSize, + XXH3_f_accumulate_512 f_acc512, + XXH3_f_scrambleAcc f_scramble) +{ + size_t const nbStripesPerBlock = (secretSize - XXH_STRIPE_LEN) / XXH_SECRET_CONSUME_RATE; + size_t const block_len = XXH_STRIPE_LEN * nbStripesPerBlock; + size_t const nb_blocks = (len - 1) / block_len; + + size_t n; + + XXH_ASSERT(secretSize >= XXH3_SECRET_SIZE_MIN); + + for (n = 0; n < nb_blocks; n++) { + XXH3_accumulate(acc, input + n*block_len, secret, nbStripesPerBlock, f_acc512); + f_scramble(acc, secret + secretSize - XXH_STRIPE_LEN); + } + + /* last partial block */ + XXH_ASSERT(len > XXH_STRIPE_LEN); + { size_t const nbStripes = ((len - 1) - (block_len * nb_blocks)) / XXH_STRIPE_LEN; + XXH_ASSERT(nbStripes <= (secretSize / XXH_SECRET_CONSUME_RATE)); + XXH3_accumulate(acc, input + nb_blocks*block_len, secret, nbStripes, f_acc512); + + /* last stripe */ + { const xxh_u8* const p = input + len - XXH_STRIPE_LEN; +#define XXH_SECRET_LASTACC_START 7 /* not aligned on 8, last secret is different from acc & scrambler */ + f_acc512(acc, p, secret + secretSize - XXH_STRIPE_LEN - XXH_SECRET_LASTACC_START); + } } +} + +XXH_FORCE_INLINE xxh_u64 +XXH3_mix2Accs(const xxh_u64* XXH_RESTRICT acc, const xxh_u8* XXH_RESTRICT secret) +{ + return XXH3_mul128_fold64( + acc[0] ^ XXH_readLE64(secret), + acc[1] ^ XXH_readLE64(secret+8) ); +} + +static XXH64_hash_t +XXH3_mergeAccs(const xxh_u64* XXH_RESTRICT acc, const xxh_u8* XXH_RESTRICT secret, xxh_u64 start) +{ + xxh_u64 result64 = start; + size_t i = 0; + + for (i = 0; i < 4; i++) { + result64 += XXH3_mix2Accs(acc+2*i, secret + 16*i); +#if defined(__clang__) /* Clang */ \ + && (defined(__arm__) || defined(__thumb__)) /* ARMv7 */ \ + && (defined(__ARM_NEON) || defined(__ARM_NEON__)) /* NEON */ \ + && !defined(XXH_ENABLE_AUTOVECTORIZE) /* Define to disable */ + /* + * UGLY HACK: + * Prevent autovectorization on Clang ARMv7-a. Exact same problem as + * the one in XXH3_len_129to240_64b. Speeds up shorter keys > 240b. + * XXH3_64bits, len == 256, Snapdragon 835: + * without hack: 2063.7 MB/s + * with hack: 2560.7 MB/s + */ + __asm__("" : "+r" (result64)); +#endif + } + + return XXH3_avalanche(result64); +} + +#define XXH3_INIT_ACC { XXH_PRIME32_3, XXH_PRIME64_1, XXH_PRIME64_2, XXH_PRIME64_3, \ + XXH_PRIME64_4, XXH_PRIME32_2, XXH_PRIME64_5, XXH_PRIME32_1 } + +XXH_FORCE_INLINE XXH64_hash_t +XXH3_hashLong_64b_internal(const void* XXH_RESTRICT input, size_t len, + const void* XXH_RESTRICT secret, size_t secretSize, + XXH3_f_accumulate_512 f_acc512, + XXH3_f_scrambleAcc f_scramble) +{ + XXH_ALIGN(XXH_ACC_ALIGN) xxh_u64 acc[XXH_ACC_NB] = XXH3_INIT_ACC; + + XXH3_hashLong_internal_loop(acc, (const xxh_u8*)input, len, (const xxh_u8*)secret, secretSize, f_acc512, f_scramble); + + /* converge into final hash */ + XXH_STATIC_ASSERT(sizeof(acc) == 64); + /* do not align on 8, so that the secret is different from the accumulator */ +#define XXH_SECRET_MERGEACCS_START 11 + XXH_ASSERT(secretSize >= sizeof(acc) + XXH_SECRET_MERGEACCS_START); + return XXH3_mergeAccs(acc, (const xxh_u8*)secret + XXH_SECRET_MERGEACCS_START, (xxh_u64)len * XXH_PRIME64_1); +} + +/* + * It's important for performance that XXH3_hashLong is not inlined. + */ +XXH_NO_INLINE XXH64_hash_t +XXH3_hashLong_64b_withSecret(const void* XXH_RESTRICT input, size_t len, + XXH64_hash_t seed64, const xxh_u8* XXH_RESTRICT secret, size_t secretLen) +{ + (void)seed64; + return XXH3_hashLong_64b_internal(input, len, secret, secretLen, XXH3_accumulate_512, XXH3_scrambleAcc); +} + +/* + * It's important for performance that XXH3_hashLong is not inlined. + * Since the function is not inlined, the compiler may not be able to understand that, + * in some scenarios, its `secret` argument is actually a compile time constant. + * This variant enforces that the compiler can detect that, + * and uses this opportunity to streamline the generated code for better performance. + */ +XXH_NO_INLINE XXH64_hash_t +XXH3_hashLong_64b_default(const void* XXH_RESTRICT input, size_t len, + XXH64_hash_t seed64, const xxh_u8* XXH_RESTRICT secret, size_t secretLen) +{ + (void)seed64; (void)secret; (void)secretLen; + return XXH3_hashLong_64b_internal(input, len, XXH3_kSecret, sizeof(XXH3_kSecret), XXH3_accumulate_512, XXH3_scrambleAcc); +} + +/* + * XXH3_hashLong_64b_withSeed(): + * Generate a custom key based on alteration of default XXH3_kSecret with the seed, + * and then use this key for long mode hashing. + * + * This operation is decently fast but nonetheless costs a little bit of time. + * Try to avoid it whenever possible (typically when seed==0). + * + * It's important for performance that XXH3_hashLong is not inlined. Not sure + * why (uop cache maybe?), but the difference is large and easily measurable. + */ +XXH_FORCE_INLINE XXH64_hash_t +XXH3_hashLong_64b_withSeed_internal(const void* input, size_t len, + XXH64_hash_t seed, + XXH3_f_accumulate_512 f_acc512, + XXH3_f_scrambleAcc f_scramble, + XXH3_f_initCustomSecret f_initSec) +{ + if (seed == 0) + return XXH3_hashLong_64b_internal(input, len, + XXH3_kSecret, sizeof(XXH3_kSecret), + f_acc512, f_scramble); + { XXH_ALIGN(XXH_SEC_ALIGN) xxh_u8 secret[XXH_SECRET_DEFAULT_SIZE]; + f_initSec(secret, seed); + return XXH3_hashLong_64b_internal(input, len, secret, sizeof(secret), + f_acc512, f_scramble); + } +} + +/* + * It's important for performance that XXH3_hashLong is not inlined. + */ +XXH_NO_INLINE XXH64_hash_t +XXH3_hashLong_64b_withSeed(const void* input, size_t len, + XXH64_hash_t seed, const xxh_u8* secret, size_t secretLen) +{ + (void)secret; (void)secretLen; + return XXH3_hashLong_64b_withSeed_internal(input, len, seed, + XXH3_accumulate_512, XXH3_scrambleAcc, XXH3_initCustomSecret); +} + + +typedef XXH64_hash_t (*XXH3_hashLong64_f)(const void* XXH_RESTRICT, size_t, + XXH64_hash_t, const xxh_u8* XXH_RESTRICT, size_t); + +XXH_FORCE_INLINE XXH64_hash_t +XXH3_64bits_internal(const void* XXH_RESTRICT input, size_t len, + XXH64_hash_t seed64, const void* XXH_RESTRICT secret, size_t secretLen, + XXH3_hashLong64_f f_hashLong) +{ + XXH_ASSERT(secretLen >= XXH3_SECRET_SIZE_MIN); + /* + * If an action is to be taken if `secretLen` condition is not respected, + * it should be done here. + * For now, it's a contract pre-condition. + * Adding a check and a branch here would cost performance at every hash. + * Also, note that function signature doesn't offer room to return an error. + */ + if (len <= 16) + return XXH3_len_0to16_64b((const xxh_u8*)input, len, (const xxh_u8*)secret, seed64); + if (len <= 128) + return XXH3_len_17to128_64b((const xxh_u8*)input, len, (const xxh_u8*)secret, secretLen, seed64); + if (len <= XXH3_MIDSIZE_MAX) + return XXH3_len_129to240_64b((const xxh_u8*)input, len, (const xxh_u8*)secret, secretLen, seed64); + return f_hashLong(input, len, seed64, (const xxh_u8*)secret, secretLen); +} + + +/* === Public entry point === */ + +/*! @ingroup xxh3_family */ +XXH_PUBLIC_API XXH64_hash_t XXH3_64bits(const void* input, size_t len) +{ + return XXH3_64bits_internal(input, len, 0, XXH3_kSecret, sizeof(XXH3_kSecret), XXH3_hashLong_64b_default); +} + +/*! @ingroup xxh3_family */ +XXH_PUBLIC_API XXH64_hash_t +XXH3_64bits_withSecret(const void* input, size_t len, const void* secret, size_t secretSize) +{ + return XXH3_64bits_internal(input, len, 0, secret, secretSize, XXH3_hashLong_64b_withSecret); +} + +/*! @ingroup xxh3_family */ +XXH_PUBLIC_API XXH64_hash_t +XXH3_64bits_withSeed(const void* input, size_t len, XXH64_hash_t seed) +{ + return XXH3_64bits_internal(input, len, seed, XXH3_kSecret, sizeof(XXH3_kSecret), XXH3_hashLong_64b_withSeed); +} + + +/* === XXH3 streaming === */ + +/* + * Malloc's a pointer that is always aligned to align. + * + * This must be freed with `XXH_alignedFree()`. + * + * malloc typically guarantees 16 byte alignment on 64-bit systems and 8 byte + * alignment on 32-bit. This isn't enough for the 32 byte aligned loads in AVX2 + * or on 32-bit, the 16 byte aligned loads in SSE2 and NEON. + * + * This underalignment previously caused a rather obvious crash which went + * completely unnoticed due to XXH3_createState() not actually being tested. + * Credit to RedSpah for noticing this bug. + * + * The alignment is done manually: Functions like posix_memalign or _mm_malloc + * are avoided: To maintain portability, we would have to write a fallback + * like this anyways, and besides, testing for the existence of library + * functions without relying on external build tools is impossible. + * + * The method is simple: Overallocate, manually align, and store the offset + * to the original behind the returned pointer. + * + * Align must be a power of 2 and 8 <= align <= 128. + */ +static void* XXH_alignedMalloc(size_t s, size_t align) +{ + XXH_ASSERT(align <= 128 && align >= 8); /* range check */ + XXH_ASSERT((align & (align-1)) == 0); /* power of 2 */ + XXH_ASSERT(s != 0 && s < (s + align)); /* empty/overflow */ + { /* Overallocate to make room for manual realignment and an offset byte */ + xxh_u8* base = (xxh_u8*)XXH_malloc(s + align); + if (base != NULL) { + /* + * Get the offset needed to align this pointer. + * + * Even if the returned pointer is aligned, there will always be + * at least one byte to store the offset to the original pointer. + */ + size_t offset = align - ((size_t)base & (align - 1)); /* base % align */ + /* Add the offset for the now-aligned pointer */ + xxh_u8* ptr = base + offset; + + XXH_ASSERT((size_t)ptr % align == 0); + + /* Store the offset immediately before the returned pointer. */ + ptr[-1] = (xxh_u8)offset; + return ptr; + } + return NULL; + } +} +/* + * Frees an aligned pointer allocated by XXH_alignedMalloc(). Don't pass + * normal malloc'd pointers, XXH_alignedMalloc has a specific data layout. + */ +static void XXH_alignedFree(void* p) +{ + if (p != NULL) { + xxh_u8* ptr = (xxh_u8*)p; + /* Get the offset byte we added in XXH_malloc. */ + xxh_u8 offset = ptr[-1]; + /* Free the original malloc'd pointer */ + xxh_u8* base = ptr - offset; + XXH_free(base); + } +} +/*! @ingroup xxh3_family */ +XXH_PUBLIC_API XXH3_state_t* XXH3_createState(void) +{ + XXH3_state_t* const state = (XXH3_state_t*)XXH_alignedMalloc(sizeof(XXH3_state_t), 64); + if (state==NULL) return NULL; + XXH3_INITSTATE(state); + return state; +} + +/*! @ingroup xxh3_family */ +XXH_PUBLIC_API XXH_errorcode XXH3_freeState(XXH3_state_t* statePtr) +{ + XXH_alignedFree(statePtr); + return XXH_OK; +} + +/*! @ingroup xxh3_family */ +XXH_PUBLIC_API void +XXH3_copyState(XXH3_state_t* dst_state, const XXH3_state_t* src_state) +{ + memcpy(dst_state, src_state, sizeof(*dst_state)); +} + +static void +XXH3_reset_internal(XXH3_state_t* statePtr, + XXH64_hash_t seed, + const void* secret, size_t secretSize) +{ + size_t const initStart = offsetof(XXH3_state_t, bufferedSize); + size_t const initLength = offsetof(XXH3_state_t, nbStripesPerBlock) - initStart; + XXH_ASSERT(offsetof(XXH3_state_t, nbStripesPerBlock) > initStart); + XXH_ASSERT(statePtr != NULL); + /* set members from bufferedSize to nbStripesPerBlock (excluded) to 0 */ + memset((char*)statePtr + initStart, 0, initLength); + statePtr->acc[0] = XXH_PRIME32_3; + statePtr->acc[1] = XXH_PRIME64_1; + statePtr->acc[2] = XXH_PRIME64_2; + statePtr->acc[3] = XXH_PRIME64_3; + statePtr->acc[4] = XXH_PRIME64_4; + statePtr->acc[5] = XXH_PRIME32_2; + statePtr->acc[6] = XXH_PRIME64_5; + statePtr->acc[7] = XXH_PRIME32_1; + statePtr->seed = seed; + statePtr->extSecret = (const unsigned char*)secret; + XXH_ASSERT(secretSize >= XXH3_SECRET_SIZE_MIN); + statePtr->secretLimit = secretSize - XXH_STRIPE_LEN; + statePtr->nbStripesPerBlock = statePtr->secretLimit / XXH_SECRET_CONSUME_RATE; +} + +/*! @ingroup xxh3_family */ +XXH_PUBLIC_API XXH_errorcode +XXH3_64bits_reset(XXH3_state_t* statePtr) +{ + if (statePtr == NULL) return XXH_ERROR; + XXH3_reset_internal(statePtr, 0, XXH3_kSecret, XXH_SECRET_DEFAULT_SIZE); + return XXH_OK; +} + +/*! @ingroup xxh3_family */ +XXH_PUBLIC_API XXH_errorcode +XXH3_64bits_reset_withSecret(XXH3_state_t* statePtr, const void* secret, size_t secretSize) +{ + if (statePtr == NULL) return XXH_ERROR; + XXH3_reset_internal(statePtr, 0, secret, secretSize); + if (secret == NULL) return XXH_ERROR; + if (secretSize < XXH3_SECRET_SIZE_MIN) return XXH_ERROR; + return XXH_OK; +} + +/*! @ingroup xxh3_family */ +XXH_PUBLIC_API XXH_errorcode +XXH3_64bits_reset_withSeed(XXH3_state_t* statePtr, XXH64_hash_t seed) +{ + if (statePtr == NULL) return XXH_ERROR; + if (seed==0) return XXH3_64bits_reset(statePtr); + if (seed != statePtr->seed) XXH3_initCustomSecret(statePtr->customSecret, seed); + XXH3_reset_internal(statePtr, seed, NULL, XXH_SECRET_DEFAULT_SIZE); + return XXH_OK; +} + +/* Note : when XXH3_consumeStripes() is invoked, + * there must be a guarantee that at least one more byte must be consumed from input + * so that the function can blindly consume all stripes using the "normal" secret segment */ +XXH_FORCE_INLINE void +XXH3_consumeStripes(xxh_u64* XXH_RESTRICT acc, + size_t* XXH_RESTRICT nbStripesSoFarPtr, size_t nbStripesPerBlock, + const xxh_u8* XXH_RESTRICT input, size_t nbStripes, + const xxh_u8* XXH_RESTRICT secret, size_t secretLimit, + XXH3_f_accumulate_512 f_acc512, + XXH3_f_scrambleAcc f_scramble) +{ + XXH_ASSERT(nbStripes <= nbStripesPerBlock); /* can handle max 1 scramble per invocation */ + XXH_ASSERT(*nbStripesSoFarPtr < nbStripesPerBlock); + if (nbStripesPerBlock - *nbStripesSoFarPtr <= nbStripes) { + /* need a scrambling operation */ + size_t const nbStripesToEndofBlock = nbStripesPerBlock - *nbStripesSoFarPtr; + size_t const nbStripesAfterBlock = nbStripes - nbStripesToEndofBlock; + XXH3_accumulate(acc, input, secret + nbStripesSoFarPtr[0] * XXH_SECRET_CONSUME_RATE, nbStripesToEndofBlock, f_acc512); + f_scramble(acc, secret + secretLimit); + XXH3_accumulate(acc, input + nbStripesToEndofBlock * XXH_STRIPE_LEN, secret, nbStripesAfterBlock, f_acc512); + *nbStripesSoFarPtr = nbStripesAfterBlock; + } else { + XXH3_accumulate(acc, input, secret + nbStripesSoFarPtr[0] * XXH_SECRET_CONSUME_RATE, nbStripes, f_acc512); + *nbStripesSoFarPtr += nbStripes; + } +} + +/* + * Both XXH3_64bits_update and XXH3_128bits_update use this routine. + */ +XXH_FORCE_INLINE XXH_errorcode +XXH3_update(XXH3_state_t* state, + const xxh_u8* input, size_t len, + XXH3_f_accumulate_512 f_acc512, + XXH3_f_scrambleAcc f_scramble) +{ + if (input==NULL) +#if defined(XXH_ACCEPT_NULL_INPUT_POINTER) && (XXH_ACCEPT_NULL_INPUT_POINTER>=1) + return XXH_OK; +#else + return XXH_ERROR; +#endif + + { const xxh_u8* const bEnd = input + len; + const unsigned char* const secret = (state->extSecret == NULL) ? state->customSecret : state->extSecret; + + state->totalLen += len; + XXH_ASSERT(state->bufferedSize <= XXH3_INTERNALBUFFER_SIZE); + + if (state->bufferedSize + len <= XXH3_INTERNALBUFFER_SIZE) { /* fill in tmp buffer */ + XXH_memcpy(state->buffer + state->bufferedSize, input, len); + state->bufferedSize += (XXH32_hash_t)len; + return XXH_OK; + } + /* total input is now > XXH3_INTERNALBUFFER_SIZE */ + + #define XXH3_INTERNALBUFFER_STRIPES (XXH3_INTERNALBUFFER_SIZE / XXH_STRIPE_LEN) + XXH_STATIC_ASSERT(XXH3_INTERNALBUFFER_SIZE % XXH_STRIPE_LEN == 0); /* clean multiple */ + + /* + * Internal buffer is partially filled (always, except at beginning) + * Complete it, then consume it. + */ + if (state->bufferedSize) { + size_t const loadSize = XXH3_INTERNALBUFFER_SIZE - state->bufferedSize; + XXH_memcpy(state->buffer + state->bufferedSize, input, loadSize); + input += loadSize; + XXH3_consumeStripes(state->acc, + &state->nbStripesSoFar, state->nbStripesPerBlock, + state->buffer, XXH3_INTERNALBUFFER_STRIPES, + secret, state->secretLimit, + f_acc512, f_scramble); + state->bufferedSize = 0; + } + XXH_ASSERT(input < bEnd); + + /* Consume input by a multiple of internal buffer size */ + if (input+XXH3_INTERNALBUFFER_SIZE < bEnd) { + const xxh_u8* const limit = bEnd - XXH3_INTERNALBUFFER_SIZE; + do { + XXH3_consumeStripes(state->acc, + &state->nbStripesSoFar, state->nbStripesPerBlock, + input, XXH3_INTERNALBUFFER_STRIPES, + secret, state->secretLimit, + f_acc512, f_scramble); + input += XXH3_INTERNALBUFFER_SIZE; + } while (inputbuffer + sizeof(state->buffer) - XXH_STRIPE_LEN, input - XXH_STRIPE_LEN, XXH_STRIPE_LEN); + } + XXH_ASSERT(input < bEnd); + + /* Some remaining input (always) : buffer it */ + XXH_memcpy(state->buffer, input, (size_t)(bEnd-input)); + state->bufferedSize = (XXH32_hash_t)(bEnd-input); + } + + return XXH_OK; +} + +/*! @ingroup xxh3_family */ +XXH_PUBLIC_API XXH_errorcode +XXH3_64bits_update(XXH3_state_t* state, const void* input, size_t len) +{ + return XXH3_update(state, (const xxh_u8*)input, len, + XXH3_accumulate_512, XXH3_scrambleAcc); +} + + +XXH_FORCE_INLINE void +XXH3_digest_long (XXH64_hash_t* acc, + const XXH3_state_t* state, + const unsigned char* secret) +{ + /* + * Digest on a local copy. This way, the state remains unaltered, and it can + * continue ingesting more input afterwards. + */ + memcpy(acc, state->acc, sizeof(state->acc)); + if (state->bufferedSize >= XXH_STRIPE_LEN) { + size_t const nbStripes = (state->bufferedSize - 1) / XXH_STRIPE_LEN; + size_t nbStripesSoFar = state->nbStripesSoFar; + XXH3_consumeStripes(acc, + &nbStripesSoFar, state->nbStripesPerBlock, + state->buffer, nbStripes, + secret, state->secretLimit, + XXH3_accumulate_512, XXH3_scrambleAcc); + /* last stripe */ + XXH3_accumulate_512(acc, + state->buffer + state->bufferedSize - XXH_STRIPE_LEN, + secret + state->secretLimit - XXH_SECRET_LASTACC_START); + } else { /* bufferedSize < XXH_STRIPE_LEN */ + xxh_u8 lastStripe[XXH_STRIPE_LEN]; + size_t const catchupSize = XXH_STRIPE_LEN - state->bufferedSize; + XXH_ASSERT(state->bufferedSize > 0); /* there is always some input buffered */ + memcpy(lastStripe, state->buffer + sizeof(state->buffer) - catchupSize, catchupSize); + memcpy(lastStripe + catchupSize, state->buffer, state->bufferedSize); + XXH3_accumulate_512(acc, + lastStripe, + secret + state->secretLimit - XXH_SECRET_LASTACC_START); + } +} + +/*! @ingroup xxh3_family */ +XXH_PUBLIC_API XXH64_hash_t XXH3_64bits_digest (const XXH3_state_t* state) +{ + const unsigned char* const secret = (state->extSecret == NULL) ? state->customSecret : state->extSecret; + if (state->totalLen > XXH3_MIDSIZE_MAX) { + XXH_ALIGN(XXH_ACC_ALIGN) XXH64_hash_t acc[XXH_ACC_NB]; + XXH3_digest_long(acc, state, secret); + return XXH3_mergeAccs(acc, + secret + XXH_SECRET_MERGEACCS_START, + (xxh_u64)state->totalLen * XXH_PRIME64_1); + } + /* totalLen <= XXH3_MIDSIZE_MAX: digesting a short input */ + if (state->seed) + return XXH3_64bits_withSeed(state->buffer, (size_t)state->totalLen, state->seed); + return XXH3_64bits_withSecret(state->buffer, (size_t)(state->totalLen), + secret, state->secretLimit + XXH_STRIPE_LEN); +} + + +#define XXH_MIN(x, y) (((x) > (y)) ? (y) : (x)) + +/*! @ingroup xxh3_family */ +XXH_PUBLIC_API void +XXH3_generateSecret(void* secretBuffer, const void* customSeed, size_t customSeedSize) +{ + XXH_ASSERT(secretBuffer != NULL); + if (customSeedSize == 0) { + memcpy(secretBuffer, XXH3_kSecret, XXH_SECRET_DEFAULT_SIZE); + return; + } + XXH_ASSERT(customSeed != NULL); + + { size_t const segmentSize = sizeof(XXH128_hash_t); + size_t const nbSegments = XXH_SECRET_DEFAULT_SIZE / segmentSize; + XXH128_canonical_t scrambler; + XXH64_hash_t seeds[12]; + size_t segnb; + XXH_ASSERT(nbSegments == 12); + XXH_ASSERT(segmentSize * nbSegments == XXH_SECRET_DEFAULT_SIZE); /* exact multiple */ + XXH128_canonicalFromHash(&scrambler, XXH128(customSeed, customSeedSize, 0)); + + /* + * Copy customSeed to seeds[], truncating or repeating as necessary. + */ + { size_t toFill = XXH_MIN(customSeedSize, sizeof(seeds)); + size_t filled = toFill; + memcpy(seeds, customSeed, toFill); + while (filled < sizeof(seeds)) { + toFill = XXH_MIN(filled, sizeof(seeds) - filled); + memcpy((char*)seeds + filled, seeds, toFill); + filled += toFill; + } } + + /* generate secret */ + memcpy(secretBuffer, &scrambler, sizeof(scrambler)); + for (segnb=1; segnb < nbSegments; segnb++) { + size_t const segmentStart = segnb * segmentSize; + XXH128_canonical_t segment; + XXH128_canonicalFromHash(&segment, + XXH128(&scrambler, sizeof(scrambler), XXH_readLE64(seeds + segnb) + segnb) ); + memcpy((char*)secretBuffer + segmentStart, &segment, sizeof(segment)); + } } +} + + +/* ========================================== + * XXH3 128 bits (a.k.a XXH128) + * ========================================== + * XXH3's 128-bit variant has better mixing and strength than the 64-bit variant, + * even without counting the significantly larger output size. + * + * For example, extra steps are taken to avoid the seed-dependent collisions + * in 17-240 byte inputs (See XXH3_mix16B and XXH128_mix32B). + * + * This strength naturally comes at the cost of some speed, especially on short + * lengths. Note that longer hashes are about as fast as the 64-bit version + * due to it using only a slight modification of the 64-bit loop. + * + * XXH128 is also more oriented towards 64-bit machines. It is still extremely + * fast for a _128-bit_ hash on 32-bit (it usually clears XXH64). + */ + +XXH_FORCE_INLINE XXH128_hash_t +XXH3_len_1to3_128b(const xxh_u8* input, size_t len, const xxh_u8* secret, XXH64_hash_t seed) +{ + /* A doubled version of 1to3_64b with different constants. */ + XXH_ASSERT(input != NULL); + XXH_ASSERT(1 <= len && len <= 3); + XXH_ASSERT(secret != NULL); + /* + * len = 1: combinedl = { input[0], 0x01, input[0], input[0] } + * len = 2: combinedl = { input[1], 0x02, input[0], input[1] } + * len = 3: combinedl = { input[2], 0x03, input[0], input[1] } + */ + { xxh_u8 const c1 = input[0]; + xxh_u8 const c2 = input[len >> 1]; + xxh_u8 const c3 = input[len - 1]; + xxh_u32 const combinedl = ((xxh_u32)c1 <<16) | ((xxh_u32)c2 << 24) + | ((xxh_u32)c3 << 0) | ((xxh_u32)len << 8); + xxh_u32 const combinedh = XXH_rotl32(XXH_swap32(combinedl), 13); + xxh_u64 const bitflipl = (XXH_readLE32(secret) ^ XXH_readLE32(secret+4)) + seed; + xxh_u64 const bitfliph = (XXH_readLE32(secret+8) ^ XXH_readLE32(secret+12)) - seed; + xxh_u64 const keyed_lo = (xxh_u64)combinedl ^ bitflipl; + xxh_u64 const keyed_hi = (xxh_u64)combinedh ^ bitfliph; + XXH128_hash_t h128; + h128.low64 = XXH64_avalanche(keyed_lo); + h128.high64 = XXH64_avalanche(keyed_hi); + return h128; + } +} + +XXH_FORCE_INLINE XXH128_hash_t +XXH3_len_4to8_128b(const xxh_u8* input, size_t len, const xxh_u8* secret, XXH64_hash_t seed) +{ + XXH_ASSERT(input != NULL); + XXH_ASSERT(secret != NULL); + XXH_ASSERT(4 <= len && len <= 8); + seed ^= (xxh_u64)XXH_swap32((xxh_u32)seed) << 32; + { xxh_u32 const input_lo = XXH_readLE32(input); + xxh_u32 const input_hi = XXH_readLE32(input + len - 4); + xxh_u64 const input_64 = input_lo + ((xxh_u64)input_hi << 32); + xxh_u64 const bitflip = (XXH_readLE64(secret+16) ^ XXH_readLE64(secret+24)) + seed; + xxh_u64 const keyed = input_64 ^ bitflip; + + /* Shift len to the left to ensure it is even, this avoids even multiplies. */ + XXH128_hash_t m128 = XXH_mult64to128(keyed, XXH_PRIME64_1 + (len << 2)); + + m128.high64 += (m128.low64 << 1); + m128.low64 ^= (m128.high64 >> 3); + + m128.low64 = XXH_xorshift64(m128.low64, 35); + m128.low64 *= 0x9FB21C651E98DF25ULL; + m128.low64 = XXH_xorshift64(m128.low64, 28); + m128.high64 = XXH3_avalanche(m128.high64); + return m128; + } +} + +XXH_FORCE_INLINE XXH128_hash_t +XXH3_len_9to16_128b(const xxh_u8* input, size_t len, const xxh_u8* secret, XXH64_hash_t seed) +{ + XXH_ASSERT(input != NULL); + XXH_ASSERT(secret != NULL); + XXH_ASSERT(9 <= len && len <= 16); + { xxh_u64 const bitflipl = (XXH_readLE64(secret+32) ^ XXH_readLE64(secret+40)) - seed; + xxh_u64 const bitfliph = (XXH_readLE64(secret+48) ^ XXH_readLE64(secret+56)) + seed; + xxh_u64 const input_lo = XXH_readLE64(input); + xxh_u64 input_hi = XXH_readLE64(input + len - 8); + XXH128_hash_t m128 = XXH_mult64to128(input_lo ^ input_hi ^ bitflipl, XXH_PRIME64_1); + /* + * Put len in the middle of m128 to ensure that the length gets mixed to + * both the low and high bits in the 128x64 multiply below. + */ + m128.low64 += (xxh_u64)(len - 1) << 54; + input_hi ^= bitfliph; + /* + * Add the high 32 bits of input_hi to the high 32 bits of m128, then + * add the long product of the low 32 bits of input_hi and XXH_PRIME32_2 to + * the high 64 bits of m128. + * + * The best approach to this operation is different on 32-bit and 64-bit. + */ + if (sizeof(void *) < sizeof(xxh_u64)) { /* 32-bit */ + /* + * 32-bit optimized version, which is more readable. + * + * On 32-bit, it removes an ADC and delays a dependency between the two + * halves of m128.high64, but it generates an extra mask on 64-bit. + */ + m128.high64 += (input_hi & 0xFFFFFFFF00000000ULL) + XXH_mult32to64((xxh_u32)input_hi, XXH_PRIME32_2); + } else { + /* + * 64-bit optimized (albeit more confusing) version. + * + * Uses some properties of addition and multiplication to remove the mask: + * + * Let: + * a = input_hi.lo = (input_hi & 0x00000000FFFFFFFF) + * b = input_hi.hi = (input_hi & 0xFFFFFFFF00000000) + * c = XXH_PRIME32_2 + * + * a + (b * c) + * Inverse Property: x + y - x == y + * a + (b * (1 + c - 1)) + * Distributive Property: x * (y + z) == (x * y) + (x * z) + * a + (b * 1) + (b * (c - 1)) + * Identity Property: x * 1 == x + * a + b + (b * (c - 1)) + * + * Substitute a, b, and c: + * input_hi.hi + input_hi.lo + ((xxh_u64)input_hi.lo * (XXH_PRIME32_2 - 1)) + * + * Since input_hi.hi + input_hi.lo == input_hi, we get this: + * input_hi + ((xxh_u64)input_hi.lo * (XXH_PRIME32_2 - 1)) + */ + m128.high64 += input_hi + XXH_mult32to64((xxh_u32)input_hi, XXH_PRIME32_2 - 1); + } + /* m128 ^= XXH_swap64(m128 >> 64); */ + m128.low64 ^= XXH_swap64(m128.high64); + + { /* 128x64 multiply: h128 = m128 * XXH_PRIME64_2; */ + XXH128_hash_t h128 = XXH_mult64to128(m128.low64, XXH_PRIME64_2); + h128.high64 += m128.high64 * XXH_PRIME64_2; + + h128.low64 = XXH3_avalanche(h128.low64); + h128.high64 = XXH3_avalanche(h128.high64); + return h128; + } } +} + +/* + * Assumption: `secret` size is >= XXH3_SECRET_SIZE_MIN + */ +XXH_FORCE_INLINE XXH128_hash_t +XXH3_len_0to16_128b(const xxh_u8* input, size_t len, const xxh_u8* secret, XXH64_hash_t seed) +{ + XXH_ASSERT(len <= 16); + { if (len > 8) return XXH3_len_9to16_128b(input, len, secret, seed); + if (len >= 4) return XXH3_len_4to8_128b(input, len, secret, seed); + if (len) return XXH3_len_1to3_128b(input, len, secret, seed); + { XXH128_hash_t h128; + xxh_u64 const bitflipl = XXH_readLE64(secret+64) ^ XXH_readLE64(secret+72); + xxh_u64 const bitfliph = XXH_readLE64(secret+80) ^ XXH_readLE64(secret+88); + h128.low64 = XXH64_avalanche(seed ^ bitflipl); + h128.high64 = XXH64_avalanche( seed ^ bitfliph); + return h128; + } } +} + +/* + * A bit slower than XXH3_mix16B, but handles multiply by zero better. + */ +XXH_FORCE_INLINE XXH128_hash_t +XXH128_mix32B(XXH128_hash_t acc, const xxh_u8* input_1, const xxh_u8* input_2, + const xxh_u8* secret, XXH64_hash_t seed) +{ + acc.low64 += XXH3_mix16B (input_1, secret+0, seed); + acc.low64 ^= XXH_readLE64(input_2) + XXH_readLE64(input_2 + 8); + acc.high64 += XXH3_mix16B (input_2, secret+16, seed); + acc.high64 ^= XXH_readLE64(input_1) + XXH_readLE64(input_1 + 8); + return acc; +} + + +XXH_FORCE_INLINE XXH128_hash_t +XXH3_len_17to128_128b(const xxh_u8* XXH_RESTRICT input, size_t len, + const xxh_u8* XXH_RESTRICT secret, size_t secretSize, + XXH64_hash_t seed) +{ + XXH_ASSERT(secretSize >= XXH3_SECRET_SIZE_MIN); (void)secretSize; + XXH_ASSERT(16 < len && len <= 128); + + { XXH128_hash_t acc; + acc.low64 = len * XXH_PRIME64_1; + acc.high64 = 0; + if (len > 32) { + if (len > 64) { + if (len > 96) { + acc = XXH128_mix32B(acc, input+48, input+len-64, secret+96, seed); + } + acc = XXH128_mix32B(acc, input+32, input+len-48, secret+64, seed); + } + acc = XXH128_mix32B(acc, input+16, input+len-32, secret+32, seed); + } + acc = XXH128_mix32B(acc, input, input+len-16, secret, seed); + { XXH128_hash_t h128; + h128.low64 = acc.low64 + acc.high64; + h128.high64 = (acc.low64 * XXH_PRIME64_1) + + (acc.high64 * XXH_PRIME64_4) + + ((len - seed) * XXH_PRIME64_2); + h128.low64 = XXH3_avalanche(h128.low64); + h128.high64 = (XXH64_hash_t)0 - XXH3_avalanche(h128.high64); + return h128; + } + } +} + +XXH_NO_INLINE XXH128_hash_t +XXH3_len_129to240_128b(const xxh_u8* XXH_RESTRICT input, size_t len, + const xxh_u8* XXH_RESTRICT secret, size_t secretSize, + XXH64_hash_t seed) +{ + XXH_ASSERT(secretSize >= XXH3_SECRET_SIZE_MIN); (void)secretSize; + XXH_ASSERT(128 < len && len <= XXH3_MIDSIZE_MAX); + + { XXH128_hash_t acc; + int const nbRounds = (int)len / 32; + int i; + acc.low64 = len * XXH_PRIME64_1; + acc.high64 = 0; + for (i=0; i<4; i++) { + acc = XXH128_mix32B(acc, + input + (32 * i), + input + (32 * i) + 16, + secret + (32 * i), + seed); + } + acc.low64 = XXH3_avalanche(acc.low64); + acc.high64 = XXH3_avalanche(acc.high64); + XXH_ASSERT(nbRounds >= 4); + for (i=4 ; i < nbRounds; i++) { + acc = XXH128_mix32B(acc, + input + (32 * i), + input + (32 * i) + 16, + secret + XXH3_MIDSIZE_STARTOFFSET + (32 * (i - 4)), + seed); + } + /* last bytes */ + acc = XXH128_mix32B(acc, + input + len - 16, + input + len - 32, + secret + XXH3_SECRET_SIZE_MIN - XXH3_MIDSIZE_LASTOFFSET - 16, + 0ULL - seed); + + { XXH128_hash_t h128; + h128.low64 = acc.low64 + acc.high64; + h128.high64 = (acc.low64 * XXH_PRIME64_1) + + (acc.high64 * XXH_PRIME64_4) + + ((len - seed) * XXH_PRIME64_2); + h128.low64 = XXH3_avalanche(h128.low64); + h128.high64 = (XXH64_hash_t)0 - XXH3_avalanche(h128.high64); + return h128; + } + } +} + +XXH_FORCE_INLINE XXH128_hash_t +XXH3_hashLong_128b_internal(const void* XXH_RESTRICT input, size_t len, + const xxh_u8* XXH_RESTRICT secret, size_t secretSize, + XXH3_f_accumulate_512 f_acc512, + XXH3_f_scrambleAcc f_scramble) +{ + XXH_ALIGN(XXH_ACC_ALIGN) xxh_u64 acc[XXH_ACC_NB] = XXH3_INIT_ACC; + + XXH3_hashLong_internal_loop(acc, (const xxh_u8*)input, len, secret, secretSize, f_acc512, f_scramble); + + /* converge into final hash */ + XXH_STATIC_ASSERT(sizeof(acc) == 64); + XXH_ASSERT(secretSize >= sizeof(acc) + XXH_SECRET_MERGEACCS_START); + { XXH128_hash_t h128; + h128.low64 = XXH3_mergeAccs(acc, + secret + XXH_SECRET_MERGEACCS_START, + (xxh_u64)len * XXH_PRIME64_1); + h128.high64 = XXH3_mergeAccs(acc, + secret + secretSize + - sizeof(acc) - XXH_SECRET_MERGEACCS_START, + ~((xxh_u64)len * XXH_PRIME64_2)); + return h128; + } +} + +/* + * It's important for performance that XXH3_hashLong is not inlined. + */ +XXH_NO_INLINE XXH128_hash_t +XXH3_hashLong_128b_default(const void* XXH_RESTRICT input, size_t len, + XXH64_hash_t seed64, + const void* XXH_RESTRICT secret, size_t secretLen) +{ + (void)seed64; (void)secret; (void)secretLen; + return XXH3_hashLong_128b_internal(input, len, XXH3_kSecret, sizeof(XXH3_kSecret), + XXH3_accumulate_512, XXH3_scrambleAcc); +} + +/* + * It's important for performance that XXH3_hashLong is not inlined. + */ +XXH_NO_INLINE XXH128_hash_t +XXH3_hashLong_128b_withSecret(const void* XXH_RESTRICT input, size_t len, + XXH64_hash_t seed64, + const void* XXH_RESTRICT secret, size_t secretLen) +{ + (void)seed64; + return XXH3_hashLong_128b_internal(input, len, (const xxh_u8*)secret, secretLen, + XXH3_accumulate_512, XXH3_scrambleAcc); +} + +XXH_FORCE_INLINE XXH128_hash_t +XXH3_hashLong_128b_withSeed_internal(const void* XXH_RESTRICT input, size_t len, + XXH64_hash_t seed64, + XXH3_f_accumulate_512 f_acc512, + XXH3_f_scrambleAcc f_scramble, + XXH3_f_initCustomSecret f_initSec) +{ + if (seed64 == 0) + return XXH3_hashLong_128b_internal(input, len, + XXH3_kSecret, sizeof(XXH3_kSecret), + f_acc512, f_scramble); + { XXH_ALIGN(XXH_SEC_ALIGN) xxh_u8 secret[XXH_SECRET_DEFAULT_SIZE]; + f_initSec(secret, seed64); + return XXH3_hashLong_128b_internal(input, len, (const xxh_u8*)secret, sizeof(secret), + f_acc512, f_scramble); + } +} + +/* + * It's important for performance that XXH3_hashLong is not inlined. + */ +XXH_NO_INLINE XXH128_hash_t +XXH3_hashLong_128b_withSeed(const void* input, size_t len, + XXH64_hash_t seed64, const void* XXH_RESTRICT secret, size_t secretLen) +{ + (void)secret; (void)secretLen; + return XXH3_hashLong_128b_withSeed_internal(input, len, seed64, + XXH3_accumulate_512, XXH3_scrambleAcc, XXH3_initCustomSecret); +} + +typedef XXH128_hash_t (*XXH3_hashLong128_f)(const void* XXH_RESTRICT, size_t, + XXH64_hash_t, const void* XXH_RESTRICT, size_t); + +XXH_FORCE_INLINE XXH128_hash_t +XXH3_128bits_internal(const void* input, size_t len, + XXH64_hash_t seed64, const void* XXH_RESTRICT secret, size_t secretLen, + XXH3_hashLong128_f f_hl128) +{ + XXH_ASSERT(secretLen >= XXH3_SECRET_SIZE_MIN); + /* + * If an action is to be taken if `secret` conditions are not respected, + * it should be done here. + * For now, it's a contract pre-condition. + * Adding a check and a branch here would cost performance at every hash. + */ + if (len <= 16) + return XXH3_len_0to16_128b((const xxh_u8*)input, len, (const xxh_u8*)secret, seed64); + if (len <= 128) + return XXH3_len_17to128_128b((const xxh_u8*)input, len, (const xxh_u8*)secret, secretLen, seed64); + if (len <= XXH3_MIDSIZE_MAX) + return XXH3_len_129to240_128b((const xxh_u8*)input, len, (const xxh_u8*)secret, secretLen, seed64); + return f_hl128(input, len, seed64, secret, secretLen); +} + + +/* === Public XXH128 API === */ + +/*! @ingroup xxh3_family */ +XXH_PUBLIC_API XXH128_hash_t XXH3_128bits(const void* input, size_t len) +{ + return XXH3_128bits_internal(input, len, 0, + XXH3_kSecret, sizeof(XXH3_kSecret), + XXH3_hashLong_128b_default); +} + +/*! @ingroup xxh3_family */ +XXH_PUBLIC_API XXH128_hash_t +XXH3_128bits_withSecret(const void* input, size_t len, const void* secret, size_t secretSize) +{ + return XXH3_128bits_internal(input, len, 0, + (const xxh_u8*)secret, secretSize, + XXH3_hashLong_128b_withSecret); +} + +/*! @ingroup xxh3_family */ +XXH_PUBLIC_API XXH128_hash_t +XXH3_128bits_withSeed(const void* input, size_t len, XXH64_hash_t seed) +{ + return XXH3_128bits_internal(input, len, seed, + XXH3_kSecret, sizeof(XXH3_kSecret), + XXH3_hashLong_128b_withSeed); +} + +/*! @ingroup xxh3_family */ +XXH_PUBLIC_API XXH128_hash_t +XXH128(const void* input, size_t len, XXH64_hash_t seed) +{ + return XXH3_128bits_withSeed(input, len, seed); +} + + +/* === XXH3 128-bit streaming === */ + +/* + * All the functions are actually the same as for 64-bit streaming variant. + * The only difference is the finalization routine. + */ + +/*! @ingroup xxh3_family */ +XXH_PUBLIC_API XXH_errorcode +XXH3_128bits_reset(XXH3_state_t* statePtr) +{ + if (statePtr == NULL) return XXH_ERROR; + XXH3_reset_internal(statePtr, 0, XXH3_kSecret, XXH_SECRET_DEFAULT_SIZE); + return XXH_OK; +} + +/*! @ingroup xxh3_family */ +XXH_PUBLIC_API XXH_errorcode +XXH3_128bits_reset_withSecret(XXH3_state_t* statePtr, const void* secret, size_t secretSize) +{ + if (statePtr == NULL) return XXH_ERROR; + XXH3_reset_internal(statePtr, 0, secret, secretSize); + if (secret == NULL) return XXH_ERROR; + if (secretSize < XXH3_SECRET_SIZE_MIN) return XXH_ERROR; + return XXH_OK; +} + +/*! @ingroup xxh3_family */ +XXH_PUBLIC_API XXH_errorcode +XXH3_128bits_reset_withSeed(XXH3_state_t* statePtr, XXH64_hash_t seed) +{ + if (statePtr == NULL) return XXH_ERROR; + if (seed==0) return XXH3_128bits_reset(statePtr); + if (seed != statePtr->seed) XXH3_initCustomSecret(statePtr->customSecret, seed); + XXH3_reset_internal(statePtr, seed, NULL, XXH_SECRET_DEFAULT_SIZE); + return XXH_OK; +} + +/*! @ingroup xxh3_family */ +XXH_PUBLIC_API XXH_errorcode +XXH3_128bits_update(XXH3_state_t* state, const void* input, size_t len) +{ + return XXH3_update(state, (const xxh_u8*)input, len, + XXH3_accumulate_512, XXH3_scrambleAcc); +} + +/*! @ingroup xxh3_family */ +XXH_PUBLIC_API XXH128_hash_t XXH3_128bits_digest (const XXH3_state_t* state) +{ + const unsigned char* const secret = (state->extSecret == NULL) ? state->customSecret : state->extSecret; + if (state->totalLen > XXH3_MIDSIZE_MAX) { + XXH_ALIGN(XXH_ACC_ALIGN) XXH64_hash_t acc[XXH_ACC_NB]; + XXH3_digest_long(acc, state, secret); + XXH_ASSERT(state->secretLimit + XXH_STRIPE_LEN >= sizeof(acc) + XXH_SECRET_MERGEACCS_START); + { XXH128_hash_t h128; + h128.low64 = XXH3_mergeAccs(acc, + secret + XXH_SECRET_MERGEACCS_START, + (xxh_u64)state->totalLen * XXH_PRIME64_1); + h128.high64 = XXH3_mergeAccs(acc, + secret + state->secretLimit + XXH_STRIPE_LEN + - sizeof(acc) - XXH_SECRET_MERGEACCS_START, + ~((xxh_u64)state->totalLen * XXH_PRIME64_2)); + return h128; + } + } + /* len <= XXH3_MIDSIZE_MAX : short code */ + if (state->seed) + return XXH3_128bits_withSeed(state->buffer, (size_t)state->totalLen, state->seed); + return XXH3_128bits_withSecret(state->buffer, (size_t)(state->totalLen), + secret, state->secretLimit + XXH_STRIPE_LEN); +} + +/* 128-bit utility functions */ + +#include /* memcmp, memcpy */ + +/* return : 1 is equal, 0 if different */ +/*! @ingroup xxh3_family */ +XXH_PUBLIC_API int XXH128_isEqual(XXH128_hash_t h1, XXH128_hash_t h2) +{ + /* note : XXH128_hash_t is compact, it has no padding byte */ + return !(memcmp(&h1, &h2, sizeof(h1))); +} + +/* This prototype is compatible with stdlib's qsort(). + * return : >0 if *h128_1 > *h128_2 + * <0 if *h128_1 < *h128_2 + * =0 if *h128_1 == *h128_2 */ +/*! @ingroup xxh3_family */ +XXH_PUBLIC_API int XXH128_cmp(const void* h128_1, const void* h128_2) +{ + XXH128_hash_t const h1 = *(const XXH128_hash_t*)h128_1; + XXH128_hash_t const h2 = *(const XXH128_hash_t*)h128_2; + int const hcmp = (h1.high64 > h2.high64) - (h2.high64 > h1.high64); + /* note : bets that, in most cases, hash values are different */ + if (hcmp) return hcmp; + return (h1.low64 > h2.low64) - (h2.low64 > h1.low64); +} + + +/*====== Canonical representation ======*/ +/*! @ingroup xxh3_family */ +XXH_PUBLIC_API void +XXH128_canonicalFromHash(XXH128_canonical_t* dst, XXH128_hash_t hash) +{ + XXH_STATIC_ASSERT(sizeof(XXH128_canonical_t) == sizeof(XXH128_hash_t)); + if (XXH_CPU_LITTLE_ENDIAN) { + hash.high64 = XXH_swap64(hash.high64); + hash.low64 = XXH_swap64(hash.low64); + } + memcpy(dst, &hash.high64, sizeof(hash.high64)); + memcpy((char*)dst + sizeof(hash.high64), &hash.low64, sizeof(hash.low64)); +} + +/*! @ingroup xxh3_family */ +XXH_PUBLIC_API XXH128_hash_t +XXH128_hashFromCanonical(const XXH128_canonical_t* src) +{ + XXH128_hash_t h; + h.high64 = XXH_readBE64(src); + h.low64 = XXH_readBE64(src->digest + 8); + return h; +} + +/* Pop our optimization override from above */ +#if XXH_VECTOR == XXH_AVX2 /* AVX2 */ \ + && defined(__GNUC__) && !defined(__clang__) /* GCC, not Clang */ \ + && defined(__OPTIMIZE__) && !defined(__OPTIMIZE_SIZE__) /* respect -O0 and -Os */ +# pragma GCC pop_options +#endif + +#endif /* XXH_NO_LONG_LONG */ + +/*! + * @} + */ +#endif /* XXH_IMPLEMENTATION */ + + +#if defined (__cplusplus) +} +#endif \ No newline at end of file diff --git a/parser/include/xxhash/xxhash.h b/parser/include/xxhash/xxhash.h new file mode 100644 index 00000000..4bdd13aa --- /dev/null +++ b/parser/include/xxhash/xxhash.h @@ -0,0 +1,5445 @@ +/* + * xxHash - Extremely Fast Hash algorithm + * Header File + * Copyright (C) 2012-2020 Yann Collet + * + * BSD 2-Clause License (https://www.opensource.org/licenses/bsd-license.php) + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following disclaimer + * in the documentation and/or other materials provided with the + * distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * You can contact the author at: + * - xxHash homepage: https://www.xxhash.com + * - xxHash source repository: https://github.com/Cyan4973/xxHash + */ +/*! + * @mainpage xxHash + * + * @file xxhash.h + * xxHash prototypes and implementation + */ +/* TODO: update */ +/* Notice extracted from xxHash homepage: + +xxHash is an extremely fast hash algorithm, running at RAM speed limits. +It also successfully passes all tests from the SMHasher suite. + +Comparison (single thread, Windows Seven 32 bits, using SMHasher on a Core 2 Duo @3GHz) + +Name Speed Q.Score Author +xxHash 5.4 GB/s 10 +CrapWow 3.2 GB/s 2 Andrew +MurmurHash 3a 2.7 GB/s 10 Austin Appleby +SpookyHash 2.0 GB/s 10 Bob Jenkins +SBox 1.4 GB/s 9 Bret Mulvey +Lookup3 1.2 GB/s 9 Bob Jenkins +SuperFastHash 1.2 GB/s 1 Paul Hsieh +CityHash64 1.05 GB/s 10 Pike & Alakuijala +FNV 0.55 GB/s 5 Fowler, Noll, Vo +CRC32 0.43 GB/s 9 +MD5-32 0.33 GB/s 10 Ronald L. Rivest +SHA1-32 0.28 GB/s 10 + +Q.Score is a measure of quality of the hash function. +It depends on successfully passing SMHasher test set. +10 is a perfect score. + +Note: SMHasher's CRC32 implementation is not the fastest one. +Other speed-oriented implementations can be faster, +especially in combination with PCLMUL instruction: +https://fastcompression.blogspot.com/2019/03/presenting-xxh3.html?showComment=1552696407071#c3490092340461170735 + +A 64-bit version, named XXH64, is available since r35. +It offers much better speed, but for 64-bit applications only. +Name Speed on 64 bits Speed on 32 bits +XXH64 13.8 GB/s 1.9 GB/s +XXH32 6.8 GB/s 6.0 GB/s +*/ + +#if defined (__cplusplus) +extern "C" { +#endif + +/* **************************** + * INLINE mode + ******************************/ +/*! + * XXH_INLINE_ALL (and XXH_PRIVATE_API) + * Use these build macros to inline xxhash into the target unit. + * Inlining improves performance on small inputs, especially when the length is + * expressed as a compile-time constant: + * + * https://fastcompression.blogspot.com/2018/03/xxhash-for-small-keys-impressive-power.html + * + * It also keeps xxHash symbols private to the unit, so they are not exported. + * + * Usage: + * #define XXH_INLINE_ALL + * #include "xxhash.h" + * + * Do not compile and link xxhash.o as a separate object, as it is not useful. + */ +#if (defined(XXH_INLINE_ALL) || defined(XXH_PRIVATE_API)) \ + && !defined(XXH_INLINE_ALL_31684351384) + /* this section should be traversed only once */ +# define XXH_INLINE_ALL_31684351384 + /* give access to the advanced API, required to compile implementations */ +# undef XXH_STATIC_LINKING_ONLY /* avoid macro redef */ +# define XXH_STATIC_LINKING_ONLY + /* make all functions private */ +# undef XXH_PUBLIC_API +# if defined(__GNUC__) +# define XXH_PUBLIC_API static __inline __attribute__((unused)) +# elif defined (__cplusplus) || (defined (__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L) /* C99 */) +# define XXH_PUBLIC_API static inline +# elif defined(_MSC_VER) +# define XXH_PUBLIC_API static __inline +# else + /* note: this version may generate warnings for unused static functions */ +# define XXH_PUBLIC_API static +# endif + + /* + * This part deals with the special case where a unit wants to inline xxHash, + * but "xxhash.h" has previously been included without XXH_INLINE_ALL, such + * as part of some previously included *.h header file. + * Without further action, the new include would just be ignored, + * and functions would effectively _not_ be inlined (silent failure). + * The following macros solve this situation by prefixing all inlined names, + * avoiding naming collision with previous inclusions. + */ +# ifdef XXH_NAMESPACE +# error "XXH_INLINE_ALL with XXH_NAMESPACE is not supported" + /* + * Note: Alternative: #undef all symbols (it's a pretty large list). + * Without #error: it compiles, but functions are actually not inlined. + */ +# endif +# define XXH_NAMESPACE XXH_INLINE_ + /* + * Some identifiers (enums, type names) are not symbols, but they must + * still be renamed to avoid redeclaration. + * Alternative solution: do not redeclare them. + * However, this requires some #ifdefs, and is a more dispersed action. + * Meanwhile, renaming can be achieved in a single block + */ +# define XXH_IPREF(Id) XXH_INLINE_ ## Id +# define XXH_OK XXH_IPREF(XXH_OK) +# define XXH_ERROR XXH_IPREF(XXH_ERROR) +# define XXH_errorcode XXH_IPREF(XXH_errorcode) +# define XXH32_canonical_t XXH_IPREF(XXH32_canonical_t) +# define XXH64_canonical_t XXH_IPREF(XXH64_canonical_t) +# define XXH128_canonical_t XXH_IPREF(XXH128_canonical_t) +# define XXH32_state_s XXH_IPREF(XXH32_state_s) +# define XXH32_state_t XXH_IPREF(XXH32_state_t) +# define XXH64_state_s XXH_IPREF(XXH64_state_s) +# define XXH64_state_t XXH_IPREF(XXH64_state_t) +# define XXH3_state_s XXH_IPREF(XXH3_state_s) +# define XXH3_state_t XXH_IPREF(XXH3_state_t) +# define XXH128_hash_t XXH_IPREF(XXH128_hash_t) + /* Ensure the header is parsed again, even if it was previously included */ +# undef XXHASH_H_5627135585666179 +# undef XXHASH_H_STATIC_13879238742 +#endif /* XXH_INLINE_ALL || XXH_PRIVATE_API */ + + + +/* **************************************************************** + * Stable API + *****************************************************************/ +#ifndef XXHASH_H_5627135585666179 +#define XXHASH_H_5627135585666179 1 + + +/*! + * @defgroup public Public API + * Contains details on the public xxHash functions. + * @{ + */ +/* specific declaration modes for Windows */ +#if !defined(XXH_INLINE_ALL) && !defined(XXH_PRIVATE_API) +# if defined(WIN32) && defined(_MSC_VER) && (defined(XXH_IMPORT) || defined(XXH_EXPORT)) +# ifdef XXH_EXPORT +# define XXH_PUBLIC_API __declspec(dllexport) +# elif XXH_IMPORT +# define XXH_PUBLIC_API __declspec(dllimport) +# endif +# else +# define XXH_PUBLIC_API /* do nothing */ +# endif +#endif + +#ifdef XXH_DOXYGEN +/*! + * @brief Emulate a namespace by transparently prefixing all symbols. + * + * If you want to include _and expose_ xxHash functions from within your own + * library, but also want to avoid symbol collisions with other libraries which + * may also include xxHash, you can use XXH_NAMESPACE to automatically prefix + * any public symbol from xxhash library with the value of XXH_NAMESPACE + * (therefore, avoid empty or numeric values). + * + * Note that no change is required within the calling program as long as it + * includes `xxhash.h`: Regular symbol names will be automatically translated + * by this header. + */ +# define XXH_NAMESPACE /* YOUR NAME HERE */ +# undef XXH_NAMESPACE +#endif + +#ifdef XXH_NAMESPACE +# define XXH_CAT(A,B) A##B +# define XXH_NAME2(A,B) XXH_CAT(A,B) +# define XXH_versionNumber XXH_NAME2(XXH_NAMESPACE, XXH_versionNumber) +/* XXH32 */ +# define XXH32 XXH_NAME2(XXH_NAMESPACE, XXH32) +# define XXH32_createState XXH_NAME2(XXH_NAMESPACE, XXH32_createState) +# define XXH32_freeState XXH_NAME2(XXH_NAMESPACE, XXH32_freeState) +# define XXH32_reset XXH_NAME2(XXH_NAMESPACE, XXH32_reset) +# define XXH32_update XXH_NAME2(XXH_NAMESPACE, XXH32_update) +# define XXH32_digest XXH_NAME2(XXH_NAMESPACE, XXH32_digest) +# define XXH32_copyState XXH_NAME2(XXH_NAMESPACE, XXH32_copyState) +# define XXH32_canonicalFromHash XXH_NAME2(XXH_NAMESPACE, XXH32_canonicalFromHash) +# define XXH32_hashFromCanonical XXH_NAME2(XXH_NAMESPACE, XXH32_hashFromCanonical) +/* XXH64 */ +# define XXH64 XXH_NAME2(XXH_NAMESPACE, XXH64) +# define XXH64_createState XXH_NAME2(XXH_NAMESPACE, XXH64_createState) +# define XXH64_freeState XXH_NAME2(XXH_NAMESPACE, XXH64_freeState) +# define XXH64_reset XXH_NAME2(XXH_NAMESPACE, XXH64_reset) +# define XXH64_update XXH_NAME2(XXH_NAMESPACE, XXH64_update) +# define XXH64_digest XXH_NAME2(XXH_NAMESPACE, XXH64_digest) +# define XXH64_copyState XXH_NAME2(XXH_NAMESPACE, XXH64_copyState) +# define XXH64_canonicalFromHash XXH_NAME2(XXH_NAMESPACE, XXH64_canonicalFromHash) +# define XXH64_hashFromCanonical XXH_NAME2(XXH_NAMESPACE, XXH64_hashFromCanonical) +/* XXH3_64bits */ +# define XXH3_64bits XXH_NAME2(XXH_NAMESPACE, XXH3_64bits) +# define XXH3_64bits_withSecret XXH_NAME2(XXH_NAMESPACE, XXH3_64bits_withSecret) +# define XXH3_64bits_withSeed XXH_NAME2(XXH_NAMESPACE, XXH3_64bits_withSeed) +# define XXH3_createState XXH_NAME2(XXH_NAMESPACE, XXH3_createState) +# define XXH3_freeState XXH_NAME2(XXH_NAMESPACE, XXH3_freeState) +# define XXH3_copyState XXH_NAME2(XXH_NAMESPACE, XXH3_copyState) +# define XXH3_64bits_reset XXH_NAME2(XXH_NAMESPACE, XXH3_64bits_reset) +# define XXH3_64bits_reset_withSeed XXH_NAME2(XXH_NAMESPACE, XXH3_64bits_reset_withSeed) +# define XXH3_64bits_reset_withSecret XXH_NAME2(XXH_NAMESPACE, XXH3_64bits_reset_withSecret) +# define XXH3_64bits_update XXH_NAME2(XXH_NAMESPACE, XXH3_64bits_update) +# define XXH3_64bits_digest XXH_NAME2(XXH_NAMESPACE, XXH3_64bits_digest) +# define XXH3_generateSecret XXH_NAME2(XXH_NAMESPACE, XXH3_generateSecret) +/* XXH3_128bits */ +# define XXH128 XXH_NAME2(XXH_NAMESPACE, XXH128) +# define XXH3_128bits XXH_NAME2(XXH_NAMESPACE, XXH3_128bits) +# define XXH3_128bits_withSeed XXH_NAME2(XXH_NAMESPACE, XXH3_128bits_withSeed) +# define XXH3_128bits_withSecret XXH_NAME2(XXH_NAMESPACE, XXH3_128bits_withSecret) +# define XXH3_128bits_reset XXH_NAME2(XXH_NAMESPACE, XXH3_128bits_reset) +# define XXH3_128bits_reset_withSeed XXH_NAME2(XXH_NAMESPACE, XXH3_128bits_reset_withSeed) +# define XXH3_128bits_reset_withSecret XXH_NAME2(XXH_NAMESPACE, XXH3_128bits_reset_withSecret) +# define XXH3_128bits_update XXH_NAME2(XXH_NAMESPACE, XXH3_128bits_update) +# define XXH3_128bits_digest XXH_NAME2(XXH_NAMESPACE, XXH3_128bits_digest) +# define XXH128_isEqual XXH_NAME2(XXH_NAMESPACE, XXH128_isEqual) +# define XXH128_cmp XXH_NAME2(XXH_NAMESPACE, XXH128_cmp) +# define XXH128_canonicalFromHash XXH_NAME2(XXH_NAMESPACE, XXH128_canonicalFromHash) +# define XXH128_hashFromCanonical XXH_NAME2(XXH_NAMESPACE, XXH128_hashFromCanonical) +#endif + + +/* ************************************* +* Version +***************************************/ +#define XXH_VERSION_MAJOR 0 +#define XXH_VERSION_MINOR 8 +#define XXH_VERSION_RELEASE 0 +#define XXH_VERSION_NUMBER (XXH_VERSION_MAJOR *100*100 + XXH_VERSION_MINOR *100 + XXH_VERSION_RELEASE) + +/*! + * @brief Obtains the xxHash version. + * + * This is only useful when xxHash is compiled as a shared library, as it is + * independent of the version defined in the header. + * + * @return `XXH_VERSION_NUMBER` as of when the function was compiled. + */ +XXH_PUBLIC_API unsigned XXH_versionNumber (void); + + +/* **************************** +* Definitions +******************************/ +#include /* size_t */ +typedef enum { XXH_OK=0, XXH_ERROR } XXH_errorcode; + + +/*-********************************************************************** +* 32-bit hash +************************************************************************/ +#if defined(XXH_DOXYGEN) /* Don't show include */ +/*! + * @brief An unsigned 32-bit integer. + * + * Not necessarily defined to `uint32_t` but functionally equivalent. + */ +typedef uint32_t XXH32_hash_t; +#elif !defined (__VMS) \ + && (defined (__cplusplus) \ + || (defined (__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L) /* C99 */) ) +# include + typedef uint32_t XXH32_hash_t; +#else +# include +# if UINT_MAX == 0xFFFFFFFFUL + typedef unsigned int XXH32_hash_t; +# else +# if ULONG_MAX == 0xFFFFFFFFUL + typedef unsigned long XXH32_hash_t; +# else +# error "unsupported platform: need a 32-bit type" +# endif +# endif +#endif + +/*! + * @} + * + * @defgroup xxh32_family XXH32 family + * @ingroup public + * Contains functions used in the classic 32-bit xxHash algorithm. + * + * @note + * XXH32 is considered rather weak by today's standards. + * The @ref xxh3_family provides competitive speed for both 32-bit and 64-bit + * systems, and offers true 64/128 bit hash results. It provides a superior + * level of dispersion, and greatly reduces the risks of collisions. + * + * @see @ref xxh64_family, @ref xxh3_family : Other xxHash families + * @see @ref xxh32_impl for implementation details + * @{ + */ + +/*! + * @brief Calculates the 32-bit hash of @p input using xxHash32. + * + * Speed on Core 2 Duo @ 3 GHz (single thread, SMHasher benchmark): 5.4 GB/s + * + * @param input The block of data to be hashed, at least @p length bytes in size. + * @param length The length of @p input, in bytes. + * @param seed The 32-bit seed to alter the hash's output predictably. + * + * @pre + * The memory between @p input and @p input + @p length must be valid, + * readable, contiguous memory. However, if @p length is `0`, @p input may be + * `NULL`. In C++, this also must be *TriviallyCopyable*. + * + * @return The calculated 32-bit hash value. + * + * @see + * XXH64(), XXH3_64bits_withSeed(), XXH3_128bits_withSeed(), XXH128(): + * Direct equivalents for the other variants of xxHash. + * @see + * XXH32_createState(), XXH32_update(), XXH32_digest(): Streaming version. + */ +XXH_PUBLIC_API XXH32_hash_t XXH32 (const void* input, size_t length, XXH32_hash_t seed); + +/*! + * Streaming functions generate the xxHash value from an incremental input. + * This method is slower than single-call functions, due to state management. + * For small inputs, prefer `XXH32()` and `XXH64()`, which are better optimized. + * + * An XXH state must first be allocated using `XXH*_createState()`. + * + * Start a new hash by initializing the state with a seed using `XXH*_reset()`. + * + * Then, feed the hash state by calling `XXH*_update()` as many times as necessary. + * + * The function returns an error code, with 0 meaning OK, and any other value + * meaning there is an error. + * + * Finally, a hash value can be produced anytime, by using `XXH*_digest()`. + * This function returns the nn-bits hash as an int or long long. + * + * It's still possible to continue inserting input into the hash state after a + * digest, and generate new hash values later on by invoking `XXH*_digest()`. + * + * When done, release the state using `XXH*_freeState()`. + * + * Example code for incrementally hashing a file: + * @code{.c} + * #include + * #include + * #define BUFFER_SIZE 256 + * + * // Note: XXH64 and XXH3 use the same interface. + * XXH32_hash_t + * hashFile(FILE* stream) + * { + * XXH32_state_t* state; + * unsigned char buf[BUFFER_SIZE]; + * size_t amt; + * XXH32_hash_t hash; + * + * state = XXH32_createState(); // Create a state + * assert(state != NULL); // Error check here + * XXH32_reset(state, 0xbaad5eed); // Reset state with our seed + * while ((amt = fread(buf, 1, sizeof(buf), stream)) != 0) { + * XXH32_update(state, buf, amt); // Hash the file in chunks + * } + * hash = XXH32_digest(state); // Finalize the hash + * XXH32_freeState(state); // Clean up + * return hash; + * } + * @endcode + */ + +/*! + * @typedef struct XXH32_state_s XXH32_state_t + * @brief The opaque state struct for the XXH32 streaming API. + * + * @see XXH32_state_s for details. + */ +typedef struct XXH32_state_s XXH32_state_t; + +/*! + * @brief Allocates an @ref XXH32_state_t. + * + * Must be freed with XXH32_freeState(). + * @return An allocated XXH32_state_t on success, `NULL` on failure. + */ +XXH_PUBLIC_API XXH32_state_t* XXH32_createState(void); +/*! + * @brief Frees an @ref XXH32_state_t. + * + * Must be allocated with XXH32_createState(). + * @param statePtr A pointer to an @ref XXH32_state_t allocated with @ref XXH32_createState(). + * @return XXH_OK. + */ +XXH_PUBLIC_API XXH_errorcode XXH32_freeState(XXH32_state_t* statePtr); +/*! + * @brief Copies one @ref XXH32_state_t to another. + * + * @param dst_state The state to copy to. + * @param src_state The state to copy from. + * @pre + * @p dst_state and @p src_state must not be `NULL` and must not overlap. + */ +XXH_PUBLIC_API void XXH32_copyState(XXH32_state_t* dst_state, const XXH32_state_t* src_state); + +/*! + * @brief Resets an @ref XXH32_state_t to begin a new hash. + * + * This function resets and seeds a state. Call it before @ref XXH32_update(). + * + * @param statePtr The state struct to reset. + * @param seed The 32-bit seed to alter the hash result predictably. + * + * @pre + * @p statePtr must not be `NULL`. + * + * @return @ref XXH_OK on success, @ref XXH_ERROR on failure. + */ +XXH_PUBLIC_API XXH_errorcode XXH32_reset (XXH32_state_t* statePtr, XXH32_hash_t seed); + +/*! + * @brief Consumes a block of @p input to an @ref XXH32_state_t. + * + * Call this to incrementally consume blocks of data. + * + * @param statePtr The state struct to update. + * @param input The block of data to be hashed, at least @p length bytes in size. + * @param length The length of @p input, in bytes. + * + * @pre + * @p statePtr must not be `NULL`. + * @pre + * The memory between @p input and @p input + @p length must be valid, + * readable, contiguous memory. However, if @p length is `0`, @p input may be + * `NULL`. In C++, this also must be *TriviallyCopyable*. + * + * @return @ref XXH_OK on success, @ref XXH_ERROR on failure. + */ +XXH_PUBLIC_API XXH_errorcode XXH32_update (XXH32_state_t* statePtr, const void* input, size_t length); + +/*! + * @brief Returns the calculated hash value from an @ref XXH32_state_t. + * + * @note + * Calling XXH32_digest() will not affect @p statePtr, so you can update, + * digest, and update again. + * + * @param statePtr The state struct to calculate the hash from. + * + * @pre + * @p statePtr must not be `NULL`. + * + * @return The calculated xxHash32 value from that state. + */ +XXH_PUBLIC_API XXH32_hash_t XXH32_digest (const XXH32_state_t* statePtr); + +/******* Canonical representation *******/ + +/* + * The default return values from XXH functions are unsigned 32 and 64 bit + * integers. + * This the simplest and fastest format for further post-processing. + * + * However, this leaves open the question of what is the order on the byte level, + * since little and big endian conventions will store the same number differently. + * + * The canonical representation settles this issue by mandating big-endian + * convention, the same convention as human-readable numbers (large digits first). + * + * When writing hash values to storage, sending them over a network, or printing + * them, it's highly recommended to use the canonical representation to ensure + * portability across a wider range of systems, present and future. + * + * The following functions allow transformation of hash values to and from + * canonical format. + */ + +/*! + * @brief Canonical (big endian) representation of @ref XXH32_hash_t. + */ +typedef struct { + unsigned char digest[4]; /*!< Hash bytes, big endian */ +} XXH32_canonical_t; + +/*! + * @brief Converts an @ref XXH32_hash_t to a big endian @ref XXH32_canonical_t. + * + * @param dst The @ref XXH32_canonical_t pointer to be stored to. + * @param hash The @ref XXH32_hash_t to be converted. + * + * @pre + * @p dst must not be `NULL`. + */ +XXH_PUBLIC_API void XXH32_canonicalFromHash(XXH32_canonical_t* dst, XXH32_hash_t hash); + +/*! + * @brief Converts an @ref XXH32_canonical_t to a native @ref XXH32_hash_t. + * + * @param src The @ref XXH32_canonical_t to convert. + * + * @pre + * @p src must not be `NULL`. + * + * @return The converted hash. + */ +XXH_PUBLIC_API XXH32_hash_t XXH32_hashFromCanonical(const XXH32_canonical_t* src); + + +/*! + * @} + * @ingroup public + * @{ + */ + +#ifndef XXH_NO_LONG_LONG +/*-********************************************************************** +* 64-bit hash +************************************************************************/ +#if defined(XXH_DOXYGEN) /* don't include */ +/*! + * @brief An unsigned 64-bit integer. + * + * Not necessarily defined to `uint64_t` but functionally equivalent. + */ +typedef uint64_t XXH64_hash_t; +#elif !defined (__VMS) \ + && (defined (__cplusplus) \ + || (defined (__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L) /* C99 */) ) +# include + typedef uint64_t XXH64_hash_t; +#else +# include +# if defined(__LP64__) && ULONG_MAX == 0xFFFFFFFFFFFFFFFFULL + /* LP64 ABI says uint64_t is unsigned long */ + typedef unsigned long XXH64_hash_t; +# else + /* the following type must have a width of 64-bit */ + typedef unsigned long long XXH64_hash_t; +# endif +#endif + +/*! + * @} + * + * @defgroup xxh64_family XXH64 family + * @ingroup public + * @{ + * Contains functions used in the classic 64-bit xxHash algorithm. + * + * @note + * XXH3 provides competitive speed for both 32-bit and 64-bit systems, + * and offers true 64/128 bit hash results. It provides a superior level of + * dispersion, and greatly reduces the risks of collisions. + */ + + +/*! + * @brief Calculates the 64-bit hash of @p input using xxHash64. + * + * This function usually runs faster on 64-bit systems, but slower on 32-bit + * systems (see benchmark). + * + * @param input The block of data to be hashed, at least @p length bytes in size. + * @param length The length of @p input, in bytes. + * @param seed The 64-bit seed to alter the hash's output predictably. + * + * @pre + * The memory between @p input and @p input + @p length must be valid, + * readable, contiguous memory. However, if @p length is `0`, @p input may be + * `NULL`. In C++, this also must be *TriviallyCopyable*. + * + * @return The calculated 64-bit hash. + * + * @see + * XXH32(), XXH3_64bits_withSeed(), XXH3_128bits_withSeed(), XXH128(): + * Direct equivalents for the other variants of xxHash. + * @see + * XXH64_createState(), XXH64_update(), XXH64_digest(): Streaming version. + */ +XXH_PUBLIC_API XXH64_hash_t XXH64(const void* input, size_t length, XXH64_hash_t seed); + +/******* Streaming *******/ +/*! + * @brief The opaque state struct for the XXH64 streaming API. + * + * @see XXH64_state_s for details. + */ +typedef struct XXH64_state_s XXH64_state_t; /* incomplete type */ +XXH_PUBLIC_API XXH64_state_t* XXH64_createState(void); +XXH_PUBLIC_API XXH_errorcode XXH64_freeState(XXH64_state_t* statePtr); +XXH_PUBLIC_API void XXH64_copyState(XXH64_state_t* dst_state, const XXH64_state_t* src_state); + +XXH_PUBLIC_API XXH_errorcode XXH64_reset (XXH64_state_t* statePtr, XXH64_hash_t seed); +XXH_PUBLIC_API XXH_errorcode XXH64_update (XXH64_state_t* statePtr, const void* input, size_t length); +XXH_PUBLIC_API XXH64_hash_t XXH64_digest (const XXH64_state_t* statePtr); + +/******* Canonical representation *******/ +typedef struct { unsigned char digest[sizeof(XXH64_hash_t)]; } XXH64_canonical_t; +XXH_PUBLIC_API void XXH64_canonicalFromHash(XXH64_canonical_t* dst, XXH64_hash_t hash); +XXH_PUBLIC_API XXH64_hash_t XXH64_hashFromCanonical(const XXH64_canonical_t* src); + +/*! + * @} + * ************************************************************************ + * @defgroup xxh3_family XXH3 family + * @ingroup public + * @{ + * + * XXH3 is a more recent hash algorithm featuring: + * - Improved speed for both small and large inputs + * - True 64-bit and 128-bit outputs + * - SIMD acceleration + * - Improved 32-bit viability + * + * Speed analysis methodology is explained here: + * + * https://fastcompression.blogspot.com/2019/03/presenting-xxh3.html + * + * Compared to XXH64, expect XXH3 to run approximately + * ~2x faster on large inputs and >3x faster on small ones, + * exact differences vary depending on platform. + * + * XXH3's speed benefits greatly from SIMD and 64-bit arithmetic, + * but does not require it. + * Any 32-bit and 64-bit targets that can run XXH32 smoothly + * can run XXH3 at competitive speeds, even without vector support. + * Further details are explained in the implementation. + * + * Optimized implementations are provided for AVX512, AVX2, SSE2, NEON, POWER8, + * ZVector and scalar targets. This can be controlled via the XXH_VECTOR macro. + * + * XXH3 implementation is portable: + * it has a generic C90 formulation that can be compiled on any platform, + * all implementations generage exactly the same hash value on all platforms. + * Starting from v0.8.0, it's also labelled "stable", meaning that + * any future version will also generate the same hash value. + * + * XXH3 offers 2 variants, _64bits and _128bits. + * + * When only 64 bits are needed, prefer invoking the _64bits variant, as it + * reduces the amount of mixing, resulting in faster speed on small inputs. + * It's also generally simpler to manipulate a scalar return type than a struct. + * + * The API supports one-shot hashing, streaming mode, and custom secrets. + */ + +/*-********************************************************************** +* XXH3 64-bit variant +************************************************************************/ + +/* XXH3_64bits(): + * default 64-bit variant, using default secret and default seed of 0. + * It's the fastest variant. */ +XXH_PUBLIC_API XXH64_hash_t XXH3_64bits(const void* data, size_t len); + +/* + * XXH3_64bits_withSeed(): + * This variant generates a custom secret on the fly + * based on default secret altered using the `seed` value. + * While this operation is decently fast, note that it's not completely free. + * Note: seed==0 produces the same results as XXH3_64bits(). + */ +XXH_PUBLIC_API XXH64_hash_t XXH3_64bits_withSeed(const void* data, size_t len, XXH64_hash_t seed); + +/*! + * The bare minimum size for a custom secret. + * + * @see + * XXH3_64bits_withSecret(), XXH3_64bits_reset_withSecret(), + * XXH3_128bits_withSecret(), XXH3_128bits_reset_withSecret(). + */ +#define XXH3_SECRET_SIZE_MIN 136 + +/* + * XXH3_64bits_withSecret(): + * It's possible to provide any blob of bytes as a "secret" to generate the hash. + * This makes it more difficult for an external actor to prepare an intentional collision. + * The main condition is that secretSize *must* be large enough (>= XXH3_SECRET_SIZE_MIN). + * However, the quality of produced hash values depends on secret's entropy. + * Technically, the secret must look like a bunch of random bytes. + * Avoid "trivial" or structured data such as repeated sequences or a text document. + * Whenever unsure about the "randomness" of the blob of bytes, + * consider relabelling it as a "custom seed" instead, + * and employ "XXH3_generateSecret()" (see below) + * to generate a high entropy secret derived from the custom seed. + */ +XXH_PUBLIC_API XXH64_hash_t XXH3_64bits_withSecret(const void* data, size_t len, const void* secret, size_t secretSize); + + +/******* Streaming *******/ +/* + * Streaming requires state maintenance. + * This operation costs memory and CPU. + * As a consequence, streaming is slower than one-shot hashing. + * For better performance, prefer one-shot functions whenever applicable. + */ + +/*! + * @brief The state struct for the XXH3 streaming API. + * + * @see XXH3_state_s for details. + */ +typedef struct XXH3_state_s XXH3_state_t; +XXH_PUBLIC_API XXH3_state_t* XXH3_createState(void); +XXH_PUBLIC_API XXH_errorcode XXH3_freeState(XXH3_state_t* statePtr); +XXH_PUBLIC_API void XXH3_copyState(XXH3_state_t* dst_state, const XXH3_state_t* src_state); + +/* + * XXH3_64bits_reset(): + * Initialize with default parameters. + * digest will be equivalent to `XXH3_64bits()`. + */ +XXH_PUBLIC_API XXH_errorcode XXH3_64bits_reset(XXH3_state_t* statePtr); +/* + * XXH3_64bits_reset_withSeed(): + * Generate a custom secret from `seed`, and store it into `statePtr`. + * digest will be equivalent to `XXH3_64bits_withSeed()`. + */ +XXH_PUBLIC_API XXH_errorcode XXH3_64bits_reset_withSeed(XXH3_state_t* statePtr, XXH64_hash_t seed); +/* + * XXH3_64bits_reset_withSecret(): + * `secret` is referenced, it _must outlive_ the hash streaming session. + * Similar to one-shot API, `secretSize` must be >= `XXH3_SECRET_SIZE_MIN`, + * and the quality of produced hash values depends on secret's entropy + * (secret's content should look like a bunch of random bytes). + * When in doubt about the randomness of a candidate `secret`, + * consider employing `XXH3_generateSecret()` instead (see below). + */ +XXH_PUBLIC_API XXH_errorcode XXH3_64bits_reset_withSecret(XXH3_state_t* statePtr, const void* secret, size_t secretSize); + +XXH_PUBLIC_API XXH_errorcode XXH3_64bits_update (XXH3_state_t* statePtr, const void* input, size_t length); +XXH_PUBLIC_API XXH64_hash_t XXH3_64bits_digest (const XXH3_state_t* statePtr); + +/* note : canonical representation of XXH3 is the same as XXH64 + * since they both produce XXH64_hash_t values */ + + +/*-********************************************************************** +* XXH3 128-bit variant +************************************************************************/ + +/*! + * @brief The return value from 128-bit hashes. + * + * Stored in little endian order, although the fields themselves are in native + * endianness. + */ +typedef struct { + XXH64_hash_t low64; /*!< `value & 0xFFFFFFFFFFFFFFFF` */ + XXH64_hash_t high64; /*!< `value >> 64` */ +} XXH128_hash_t; + +XXH_PUBLIC_API XXH128_hash_t XXH3_128bits(const void* data, size_t len); +XXH_PUBLIC_API XXH128_hash_t XXH3_128bits_withSeed(const void* data, size_t len, XXH64_hash_t seed); +XXH_PUBLIC_API XXH128_hash_t XXH3_128bits_withSecret(const void* data, size_t len, const void* secret, size_t secretSize); + +/******* Streaming *******/ +/* + * Streaming requires state maintenance. + * This operation costs memory and CPU. + * As a consequence, streaming is slower than one-shot hashing. + * For better performance, prefer one-shot functions whenever applicable. + * + * XXH3_128bits uses the same XXH3_state_t as XXH3_64bits(). + * Use already declared XXH3_createState() and XXH3_freeState(). + * + * All reset and streaming functions have same meaning as their 64-bit counterpart. + */ + +XXH_PUBLIC_API XXH_errorcode XXH3_128bits_reset(XXH3_state_t* statePtr); +XXH_PUBLIC_API XXH_errorcode XXH3_128bits_reset_withSeed(XXH3_state_t* statePtr, XXH64_hash_t seed); +XXH_PUBLIC_API XXH_errorcode XXH3_128bits_reset_withSecret(XXH3_state_t* statePtr, const void* secret, size_t secretSize); + +XXH_PUBLIC_API XXH_errorcode XXH3_128bits_update (XXH3_state_t* statePtr, const void* input, size_t length); +XXH_PUBLIC_API XXH128_hash_t XXH3_128bits_digest (const XXH3_state_t* statePtr); + +/* Following helper functions make it possible to compare XXH128_hast_t values. + * Since XXH128_hash_t is a structure, this capability is not offered by the language. + * Note: For better performance, these functions can be inlined using XXH_INLINE_ALL */ + +/*! + * XXH128_isEqual(): + * Return: 1 if `h1` and `h2` are equal, 0 if they are not. + */ +XXH_PUBLIC_API int XXH128_isEqual(XXH128_hash_t h1, XXH128_hash_t h2); + +/*! + * XXH128_cmp(): + * + * This comparator is compatible with stdlib's `qsort()`/`bsearch()`. + * + * return: >0 if *h128_1 > *h128_2 + * =0 if *h128_1 == *h128_2 + * <0 if *h128_1 < *h128_2 + */ +XXH_PUBLIC_API int XXH128_cmp(const void* h128_1, const void* h128_2); + + +/******* Canonical representation *******/ +typedef struct { unsigned char digest[sizeof(XXH128_hash_t)]; } XXH128_canonical_t; +XXH_PUBLIC_API void XXH128_canonicalFromHash(XXH128_canonical_t* dst, XXH128_hash_t hash); +XXH_PUBLIC_API XXH128_hash_t XXH128_hashFromCanonical(const XXH128_canonical_t* src); + + +#endif /* XXH_NO_LONG_LONG */ + +/*! + * @} + */ +#endif /* XXHASH_H_5627135585666179 */ + + + +#if defined(XXH_STATIC_LINKING_ONLY) && !defined(XXHASH_H_STATIC_13879238742) +#define XXHASH_H_STATIC_13879238742 +/* **************************************************************************** + * This section contains declarations which are not guaranteed to remain stable. + * They may change in future versions, becoming incompatible with a different + * version of the library. + * These declarations should only be used with static linking. + * Never use them in association with dynamic linking! + ***************************************************************************** */ + +/* + * These definitions are only present to allow static allocation + * of XXH states, on stack or in a struct, for example. + * Never **ever** access their members directly. + */ + +/*! + * @internal + * @brief Structure for XXH32 streaming API. + * + * @note This is only defined when @ref XXH_STATIC_LINKING_ONLY, + * @ref XXH_INLINE_ALL, or @ref XXH_IMPLEMENTATION is defined. Otherwise it is + * an opaque type. This allows fields to safely be changed. + * + * Typedef'd to @ref XXH32_state_t. + * Do not access the members of this struct directly. + * @see XXH64_state_s, XXH3_state_s + */ +struct XXH32_state_s { + XXH32_hash_t total_len_32; /*!< Total length hashed, modulo 2^32 */ + XXH32_hash_t large_len; /*!< Whether the hash is >= 16 (handles @ref total_len_32 overflow) */ + XXH32_hash_t v1; /*!< First accumulator lane */ + XXH32_hash_t v2; /*!< Second accumulator lane */ + XXH32_hash_t v3; /*!< Third accumulator lane */ + XXH32_hash_t v4; /*!< Fourth accumulator lane */ + XXH32_hash_t mem32[4]; /*!< Internal buffer for partial reads. Treated as unsigned char[16]. */ + XXH32_hash_t memsize; /*!< Amount of data in @ref mem32 */ + XXH32_hash_t reserved; /*!< Reserved field. Do not read or write to it, it may be removed. */ +}; /* typedef'd to XXH32_state_t */ + + +#ifndef XXH_NO_LONG_LONG /* defined when there is no 64-bit support */ + +/*! + * @internal + * @brief Structure for XXH64 streaming API. + * + * @note This is only defined when @ref XXH_STATIC_LINKING_ONLY, + * @ref XXH_INLINE_ALL, or @ref XXH_IMPLEMENTATION is defined. Otherwise it is + * an opaque type. This allows fields to safely be changed. + * + * Typedef'd to @ref XXH64_state_t. + * Do not access the members of this struct directly. + * @see XXH32_state_s, XXH3_state_s + */ +struct XXH64_state_s { + XXH64_hash_t total_len; /*!< Total length hashed. This is always 64-bit. */ + XXH64_hash_t v1; /*!< First accumulator lane */ + XXH64_hash_t v2; /*!< Second accumulator lane */ + XXH64_hash_t v3; /*!< Third accumulator lane */ + XXH64_hash_t v4; /*!< Fourth accumulator lane */ + XXH64_hash_t mem64[4]; /*!< Internal buffer for partial reads. Treated as unsigned char[32]. */ + XXH32_hash_t memsize; /*!< Amount of data in @ref mem64 */ + XXH32_hash_t reserved32; /*!< Reserved field, needed for padding anyways*/ + XXH64_hash_t reserved64; /*!< Reserved field. Do not read or write to it, it may be removed. */ +}; /* typedef'd to XXH64_state_t */ + +#if defined (__STDC_VERSION__) && (__STDC_VERSION__ >= 201112L) /* C11+ */ +# include +# define XXH_ALIGN(n) alignas(n) +#elif defined(__GNUC__) +# define XXH_ALIGN(n) __attribute__ ((aligned(n))) +#elif defined(_MSC_VER) +# define XXH_ALIGN(n) __declspec(align(n)) +#else +# define XXH_ALIGN(n) /* disabled */ +#endif + +/* Old GCC versions only accept the attribute after the type in structures. */ +#if !(defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 201112L)) /* C11+ */ \ + && defined(__GNUC__) +# define XXH_ALIGN_MEMBER(align, type) type XXH_ALIGN(align) +#else +# define XXH_ALIGN_MEMBER(align, type) XXH_ALIGN(align) type +#endif + +/*! + * @brief The size of the internal XXH3 buffer. + * + * This is the optimal update size for incremental hashing. + * + * @see XXH3_64b_update(), XXH3_128b_update(). + */ +#define XXH3_INTERNALBUFFER_SIZE 256 + +/*! + * @brief Default size of the secret buffer (and @ref XXH3_kSecret). + * + * This is the size used in @ref XXH3_kSecret and the seeded functions. + * + * Not to be confused with @ref XXH3_SECRET_SIZE_MIN. + */ +#define XXH3_SECRET_DEFAULT_SIZE 192 + +/*! + * @internal + * @brief Structure for XXH3 streaming API. + * + * @note This is only defined when @ref XXH_STATIC_LINKING_ONLY, + * @ref XXH_INLINE_ALL, or @ref XXH_IMPLEMENTATION is defined. Otherwise it is + * an opaque type. This allows fields to safely be changed. + * + * @note **This structure has a strict alignment requirement of 64 bytes.** Do + * not allocate this with `malloc()` or `new`, it will not be sufficiently + * aligned. Use @ref XXH3_createState() and @ref XXH3_freeState(), or stack + * allocation. + * + * Typedef'd to @ref XXH3_state_t. + * Do not access the members of this struct directly. + * + * @see XXH3_INITSTATE() for stack initialization. + * @see XXH3_createState(), XXH3_freeState(). + * @see XXH32_state_s, XXH64_state_s + */ +struct XXH3_state_s { + XXH_ALIGN_MEMBER(64, XXH64_hash_t acc[8]); + /*!< The 8 accumulators. Similar to `vN` in @ref XXH32_state_s::v1 and @ref XXH64_state_s */ + XXH_ALIGN_MEMBER(64, unsigned char customSecret[XXH3_SECRET_DEFAULT_SIZE]); + /*!< Used to store a custom secret generated from a seed. */ + XXH_ALIGN_MEMBER(64, unsigned char buffer[XXH3_INTERNALBUFFER_SIZE]); + /*!< The internal buffer. @see XXH32_state_s::mem32 */ + XXH32_hash_t bufferedSize; + /*!< The amount of memory in @ref buffer, @see XXH32_state_s::memsize */ + XXH32_hash_t reserved32; + /*!< Reserved field. Needed for padding on 64-bit. */ + size_t nbStripesSoFar; + /*!< Number or stripes processed. */ + XXH64_hash_t totalLen; + /*!< Total length hashed. 64-bit even on 32-bit targets. */ + size_t nbStripesPerBlock; + /*!< Number of stripes per block. */ + size_t secretLimit; + /*!< Size of @ref customSecret or @ref extSecret */ + XXH64_hash_t seed; + /*!< Seed for _withSeed variants. Must be zero otherwise, @see XXH3_INITSTATE() */ + XXH64_hash_t reserved64; + /*!< Reserved field. */ + const unsigned char* extSecret; + /*!< Reference to an external secret for the _withSecret variants, NULL + * for other variants. */ + /* note: there may be some padding at the end due to alignment on 64 bytes */ +}; /* typedef'd to XXH3_state_t */ + +#undef XXH_ALIGN_MEMBER + +/*! + * @brief Initializes a stack-allocated `XXH3_state_s`. + * + * When the @ref XXH3_state_t structure is merely emplaced on stack, + * it should be initialized with XXH3_INITSTATE() or a memset() + * in case its first reset uses XXH3_NNbits_reset_withSeed(). + * This init can be omitted if the first reset uses default or _withSecret mode. + * This operation isn't necessary when the state is created with XXH3_createState(). + * Note that this doesn't prepare the state for a streaming operation, + * it's still necessary to use XXH3_NNbits_reset*() afterwards. + */ +#define XXH3_INITSTATE(XXH3_state_ptr) { (XXH3_state_ptr)->seed = 0; } + + +/* === Experimental API === */ +/* Symbols defined below must be considered tied to a specific library version. */ + +/* + * XXH3_generateSecret(): + * + * Derive a high-entropy secret from any user-defined content, named customSeed. + * The generated secret can be used in combination with `*_withSecret()` functions. + * The `_withSecret()` variants are useful to provide a higher level of protection than 64-bit seed, + * as it becomes much more difficult for an external actor to guess how to impact the calculation logic. + * + * The function accepts as input a custom seed of any length and any content, + * and derives from it a high-entropy secret of length XXH3_SECRET_DEFAULT_SIZE + * into an already allocated buffer secretBuffer. + * The generated secret is _always_ XXH_SECRET_DEFAULT_SIZE bytes long. + * + * The generated secret can then be used with any `*_withSecret()` variant. + * Functions `XXH3_128bits_withSecret()`, `XXH3_64bits_withSecret()`, + * `XXH3_128bits_reset_withSecret()` and `XXH3_64bits_reset_withSecret()` + * are part of this list. They all accept a `secret` parameter + * which must be very long for implementation reasons (>= XXH3_SECRET_SIZE_MIN) + * _and_ feature very high entropy (consist of random-looking bytes). + * These conditions can be a high bar to meet, so + * this function can be used to generate a secret of proper quality. + * + * customSeed can be anything. It can have any size, even small ones, + * and its content can be anything, even stupidly "low entropy" source such as a bunch of zeroes. + * The resulting `secret` will nonetheless provide all expected qualities. + * + * Supplying NULL as the customSeed copies the default secret into `secretBuffer`. + * When customSeedSize > 0, supplying NULL as customSeed is undefined behavior. + */ +XXH_PUBLIC_API void XXH3_generateSecret(void* secretBuffer, const void* customSeed, size_t customSeedSize); + + +/* simple short-cut to pre-selected XXH3_128bits variant */ +XXH_PUBLIC_API XXH128_hash_t XXH128(const void* data, size_t len, XXH64_hash_t seed); + + +#endif /* XXH_NO_LONG_LONG */ +#if defined(XXH_INLINE_ALL) || defined(XXH_PRIVATE_API) +# define XXH_IMPLEMENTATION +#endif + +#endif /* defined(XXH_STATIC_LINKING_ONLY) && !defined(XXHASH_H_STATIC_13879238742) */ + + +/* ======================================================================== */ +/* ======================================================================== */ +/* ======================================================================== */ + + +/*-********************************************************************** + * xxHash implementation + *-********************************************************************** + * xxHash's implementation used to be hosted inside xxhash.c. + * + * However, inlining requires implementation to be visible to the compiler, + * hence be included alongside the header. + * Previously, implementation was hosted inside xxhash.c, + * which was then #included when inlining was activated. + * This construction created issues with a few build and install systems, + * as it required xxhash.c to be stored in /include directory. + * + * xxHash implementation is now directly integrated within xxhash.h. + * As a consequence, xxhash.c is no longer needed in /include. + * + * xxhash.c is still available and is still useful. + * In a "normal" setup, when xxhash is not inlined, + * xxhash.h only exposes the prototypes and public symbols, + * while xxhash.c can be built into an object file xxhash.o + * which can then be linked into the final binary. + ************************************************************************/ + +#if ( defined(XXH_INLINE_ALL) || defined(XXH_PRIVATE_API) \ + || defined(XXH_IMPLEMENTATION) ) && !defined(XXH_IMPLEM_13a8737387) +# define XXH_IMPLEM_13a8737387 + +/* ************************************* +* Tuning parameters +***************************************/ + +/*! + * @defgroup tuning Tuning parameters + * @{ + * + * Various macros to control xxHash's behavior. + */ +#ifdef XXH_DOXYGEN +/*! + * @brief Define this to disable 64-bit code. + * + * Useful if only using the @ref xxh32_family and you have a strict C90 compiler. + */ +# define XXH_NO_LONG_LONG +# undef XXH_NO_LONG_LONG /* don't actually */ +/*! + * @brief Controls how unaligned memory is accessed. + * + * By default, access to unaligned memory is controlled by `memcpy()`, which is + * safe and portable. + * + * Unfortunately, on some target/compiler combinations, the generated assembly + * is sub-optimal. + * + * The below switch allow selection of a different access method + * in the search for improved performance. + * + * @par Possible options: + * + * - `XXH_FORCE_MEMORY_ACCESS=0` (default): `memcpy` + * @par + * Use `memcpy()`. Safe and portable. Note that most modern compilers will + * eliminate the function call and treat it as an unaligned access. + * + * - `XXH_FORCE_MEMORY_ACCESS=1`: `__attribute__((packed))` + * @par + * Depends on compiler extensions and is therefore not portable. + * This method is safe _if_ your compiler supports it, + * and *generally* as fast or faster than `memcpy`. + * + * - `XXH_FORCE_MEMORY_ACCESS=2`: Direct cast + * @par + * Casts directly and dereferences. This method doesn't depend on the + * compiler, but it violates the C standard as it directly dereferences an + * unaligned pointer. It can generate buggy code on targets which do not + * support unaligned memory accesses, but in some circumstances, it's the + * only known way to get the most performance. + * + * - `XXH_FORCE_MEMORY_ACCESS=3`: Byteshift + * @par + * Also portable. This can generate the best code on old compilers which don't + * inline small `memcpy()` calls, and it might also be faster on big-endian + * systems which lack a native byteswap instruction. However, some compilers + * will emit literal byteshifts even if the target supports unaligned access. + * . + * + * @warning + * Methods 1 and 2 rely on implementation-defined behavior. Use these with + * care, as what works on one compiler/platform/optimization level may cause + * another to read garbage data or even crash. + * + * See https://stackoverflow.com/a/32095106/646947 for details. + * + * Prefer these methods in priority order (0 > 3 > 1 > 2) + */ +# define XXH_FORCE_MEMORY_ACCESS 0 +/*! + * @def XXH_ACCEPT_NULL_INPUT_POINTER + * @brief Whether to add explicit `NULL` checks. + * + * If the input pointer is `NULL` and the length is non-zero, xxHash's default + * behavior is to dereference it, triggering a segfault. + * + * When this macro is enabled, xxHash actively checks the input for a null pointer. + * If it is, the result for null input pointers is the same as a zero-length input. + */ +# define XXH_ACCEPT_NULL_INPUT_POINTER 0 +/*! + * @def XXH_FORCE_ALIGN_CHECK + * @brief If defined to non-zero, adds a special path for aligned inputs (XXH32() + * and XXH64() only). + * + * This is an important performance trick for architectures without decent + * unaligned memory access performance. + * + * It checks for input alignment, and when conditions are met, uses a "fast + * path" employing direct 32-bit/64-bit reads, resulting in _dramatically + * faster_ read speed. + * + * The check costs one initial branch per hash, which is generally negligible, + * but not zero. + * + * Moreover, it's not useful to generate an additional code path if memory + * access uses the same instruction for both aligned and unaligned + * addresses (e.g. x86 and aarch64). + * + * In these cases, the alignment check can be removed by setting this macro to 0. + * Then the code will always use unaligned memory access. + * Align check is automatically disabled on x86, x64 & arm64, + * which are platforms known to offer good unaligned memory accesses performance. + * + * This option does not affect XXH3 (only XXH32 and XXH64). + */ +# define XXH_FORCE_ALIGN_CHECK 0 + +/*! + * @def XXH_NO_INLINE_HINTS + * @brief When non-zero, sets all functions to `static`. + * + * By default, xxHash tries to force the compiler to inline almost all internal + * functions. + * + * This can usually improve performance due to reduced jumping and improved + * constant folding, but significantly increases the size of the binary which + * might not be favorable. + * + * Additionally, sometimes the forced inlining can be detrimental to performance, + * depending on the architecture. + * + * XXH_NO_INLINE_HINTS marks all internal functions as static, giving the + * compiler full control on whether to inline or not. + * + * When not optimizing (-O0), optimizing for size (-Os, -Oz), or using + * -fno-inline with GCC or Clang, this will automatically be defined. + */ +# define XXH_NO_INLINE_HINTS 0 + +/*! + * @def XXH_REROLL + * @brief Whether to reroll `XXH32_finalize` and `XXH64_finalize`. + * + * For performance, `XXH32_finalize` and `XXH64_finalize` use an unrolled loop + * in the form of a switch statement. + * + * This is not always desirable, as it generates larger code, and depending on + * the architecture, may even be slower + * + * This is automatically defined with `-Os`/`-Oz` on GCC and Clang. + */ +# define XXH_REROLL 0 + +/*! + * @internal + * @brief Redefines old internal names. + * + * For compatibility with code that uses xxHash's internals before the names + * were changed to improve namespacing. There is no other reason to use this. + */ +# define XXH_OLD_NAMES +# undef XXH_OLD_NAMES /* don't actually use, it is ugly. */ +#endif /* XXH_DOXYGEN */ +/*! + * @} + */ + +#ifndef XXH_FORCE_MEMORY_ACCESS /* can be defined externally, on command line for example */ + /* prefer __packed__ structures (method 1) for gcc on armv7 and armv8 */ +# if !defined(__clang__) && ( \ + (defined(__INTEL_COMPILER) && !defined(_WIN32)) || \ + (defined(__GNUC__) && (defined(__ARM_ARCH) && __ARM_ARCH >= 7)) ) +# define XXH_FORCE_MEMORY_ACCESS 1 +# endif +#endif + +#ifndef XXH_ACCEPT_NULL_INPUT_POINTER /* can be defined externally */ +# define XXH_ACCEPT_NULL_INPUT_POINTER 0 +#endif + +#ifndef XXH_FORCE_ALIGN_CHECK /* can be defined externally */ +# if defined(__i386) || defined(__x86_64__) || defined(__aarch64__) \ + || defined(_M_IX86) || defined(_M_X64) || defined(_M_ARM64) /* visual */ +# define XXH_FORCE_ALIGN_CHECK 0 +# else +# define XXH_FORCE_ALIGN_CHECK 1 +# endif +#endif + +#ifndef XXH_NO_INLINE_HINTS +# if defined(__OPTIMIZE_SIZE__) /* -Os, -Oz */ \ + || defined(__NO_INLINE__) /* -O0, -fno-inline */ +# define XXH_NO_INLINE_HINTS 1 +# else +# define XXH_NO_INLINE_HINTS 0 +# endif +#endif + +#ifndef XXH_REROLL +# if defined(__OPTIMIZE_SIZE__) +# define XXH_REROLL 1 +# else +# define XXH_REROLL 0 +# endif +#endif + +/*! + * @defgroup impl Implementation + * @{ + */ + + +/* ************************************* +* Includes & Memory related functions +***************************************/ +/* + * Modify the local functions below should you wish to use + * different memory routines for malloc() and free() + */ +#include + +/*! + * @internal + * @brief Modify this function to use a different routine than malloc(). + */ +static void* XXH_malloc(size_t s) { return malloc(s); } + +/*! + * @internal + * @brief Modify this function to use a different routine than free(). + */ +static void XXH_free(void* p) { free(p); } + +#include + +/*! + * @internal + * @brief Modify this function to use a different routine than memcpy(). + */ +static void* XXH_memcpy(void* dest, const void* src, size_t size) +{ + return memcpy(dest,src,size); +} + +#include /* ULLONG_MAX */ + + +/* ************************************* +* Compiler Specific Options +***************************************/ +#ifdef _MSC_VER /* Visual Studio warning fix */ +# pragma warning(disable : 4127) /* disable: C4127: conditional expression is constant */ +#endif + +#if XXH_NO_INLINE_HINTS /* disable inlining hints */ +# if defined(__GNUC__) +# define XXH_FORCE_INLINE static __attribute__((unused)) +# else +# define XXH_FORCE_INLINE static +# endif +# define XXH_NO_INLINE static +/* enable inlining hints */ +#elif defined(_MSC_VER) /* Visual Studio */ +# define XXH_FORCE_INLINE static __forceinline +# define XXH_NO_INLINE static __declspec(noinline) +#elif defined(__GNUC__) +# define XXH_FORCE_INLINE static __inline__ __attribute__((always_inline, unused)) +# define XXH_NO_INLINE static __attribute__((noinline)) +#elif defined (__cplusplus) \ + || (defined (__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L)) /* C99 */ +# define XXH_FORCE_INLINE static inline +# define XXH_NO_INLINE static +#else +# define XXH_FORCE_INLINE static +# define XXH_NO_INLINE static +#endif + + + +/* ************************************* +* Debug +***************************************/ +/*! + * @ingroup tuning + * @def XXH_DEBUGLEVEL + * @brief Sets the debugging level. + * + * XXH_DEBUGLEVEL is expected to be defined externally, typically via the + * compiler's command line options. The value must be a number. + */ +#ifndef XXH_DEBUGLEVEL +# ifdef DEBUGLEVEL /* backwards compat */ +# define XXH_DEBUGLEVEL DEBUGLEVEL +# else +# define XXH_DEBUGLEVEL 0 +# endif +#endif + +#if (XXH_DEBUGLEVEL>=1) +# include /* note: can still be disabled with NDEBUG */ +# define XXH_ASSERT(c) assert(c) +#else +# define XXH_ASSERT(c) ((void)0) +#endif + +/* note: use after variable declarations */ +#define XXH_STATIC_ASSERT(c) do { enum { XXH_sa = 1/(int)(!!(c)) }; } while (0) + + +/* ************************************* +* Basic Types +***************************************/ +#if !defined (__VMS) \ + && (defined (__cplusplus) \ + || (defined (__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L) /* C99 */) ) +# include + typedef uint8_t xxh_u8; +#else + typedef unsigned char xxh_u8; +#endif +typedef XXH32_hash_t xxh_u32; + +#ifdef XXH_OLD_NAMES +# define BYTE xxh_u8 +# define U8 xxh_u8 +# define U32 xxh_u32 +#endif + +/* *** Memory access *** */ + +/*! + * @internal + * @fn xxh_u32 XXH_read32(const void* ptr) + * @brief Reads an unaligned 32-bit integer from @p ptr in native endianness. + * + * Affected by @ref XXH_FORCE_MEMORY_ACCESS. + * + * @param ptr The pointer to read from. + * @return The 32-bit native endian integer from the bytes at @p ptr. + */ + +/*! + * @internal + * @fn xxh_u32 XXH_readLE32(const void* ptr) + * @brief Reads an unaligned 32-bit little endian integer from @p ptr. + * + * Affected by @ref XXH_FORCE_MEMORY_ACCESS. + * + * @param ptr The pointer to read from. + * @return The 32-bit little endian integer from the bytes at @p ptr. + */ + +/*! + * @internal + * @fn xxh_u32 XXH_readBE32(const void* ptr) + * @brief Reads an unaligned 32-bit big endian integer from @p ptr. + * + * Affected by @ref XXH_FORCE_MEMORY_ACCESS. + * + * @param ptr The pointer to read from. + * @return The 32-bit big endian integer from the bytes at @p ptr. + */ + +/*! + * @internal + * @fn xxh_u32 XXH_readLE32_align(const void* ptr, XXH_alignment align) + * @brief Like @ref XXH_readLE32(), but has an option for aligned reads. + * + * Affected by @ref XXH_FORCE_MEMORY_ACCESS. + * Note that when @ref XXH_FORCE_ALIGN_CHECK == 0, the @p align parameter is + * always @ref XXH_alignment::XXH_unaligned. + * + * @param ptr The pointer to read from. + * @param align Whether @p ptr is aligned. + * @pre + * If @p align == @ref XXH_alignment::XXH_aligned, @p ptr must be 4 byte + * aligned. + * @return The 32-bit little endian integer from the bytes at @p ptr. + */ + +#if (defined(XXH_FORCE_MEMORY_ACCESS) && (XXH_FORCE_MEMORY_ACCESS==3)) +/* + * Manual byteshift. Best for old compilers which don't inline memcpy. + * We actually directly use XXH_readLE32 and XXH_readBE32. + */ +#elif (defined(XXH_FORCE_MEMORY_ACCESS) && (XXH_FORCE_MEMORY_ACCESS==2)) + +/* + * Force direct memory access. Only works on CPU which support unaligned memory + * access in hardware. + */ +static xxh_u32 XXH_read32(const void* memPtr) { return *(const xxh_u32*) memPtr; } + +#elif (defined(XXH_FORCE_MEMORY_ACCESS) && (XXH_FORCE_MEMORY_ACCESS==1)) + +/* + * __pack instructions are safer but compiler specific, hence potentially + * problematic for some compilers. + * + * Currently only defined for GCC and ICC. + */ +#ifdef XXH_OLD_NAMES +typedef union { xxh_u32 u32; } __attribute__((packed)) unalign; +#endif +static xxh_u32 XXH_read32(const void* ptr) +{ + typedef union { xxh_u32 u32; } __attribute__((packed)) xxh_unalign; + return ((const xxh_unalign*)ptr)->u32; +} + +#else + +/* + * Portable and safe solution. Generally efficient. + * see: https://stackoverflow.com/a/32095106/646947 + */ +static xxh_u32 XXH_read32(const void* memPtr) +{ + xxh_u32 val; + memcpy(&val, memPtr, sizeof(val)); + return val; +} + +#endif /* XXH_FORCE_DIRECT_MEMORY_ACCESS */ + + +/* *** Endianness *** */ +typedef enum { XXH_bigEndian=0, XXH_littleEndian=1 } XXH_endianess; + +/*! + * @ingroup tuning + * @def XXH_CPU_LITTLE_ENDIAN + * @brief Whether the target is little endian. + * + * Defined to 1 if the target is little endian, or 0 if it is big endian. + * It can be defined externally, for example on the compiler command line. + * + * If it is not defined, a runtime check (which is usually constant folded) + * is used instead. + * + * @note + * This is not necessarily defined to an integer constant. + * + * @see XXH_isLittleEndian() for the runtime check. + */ +#ifndef XXH_CPU_LITTLE_ENDIAN +/* + * Try to detect endianness automatically, to avoid the nonstandard behavior + * in `XXH_isLittleEndian()` + */ +# if defined(_WIN32) /* Windows is always little endian */ \ + || defined(__LITTLE_ENDIAN__) \ + || (defined(__BYTE_ORDER__) && __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__) +# define XXH_CPU_LITTLE_ENDIAN 1 +# elif defined(__BIG_ENDIAN__) \ + || (defined(__BYTE_ORDER__) && __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__) +# define XXH_CPU_LITTLE_ENDIAN 0 +# else +/*! + * @internal + * @brief Runtime check for @ref XXH_CPU_LITTLE_ENDIAN. + * + * Most compilers will constant fold this. + */ +static int XXH_isLittleEndian(void) +{ + /* + * Portable and well-defined behavior. + * Don't use static: it is detrimental to performance. + */ + const union { xxh_u32 u; xxh_u8 c[4]; } one = { 1 }; + return one.c[0]; +} +# define XXH_CPU_LITTLE_ENDIAN XXH_isLittleEndian() +# endif +#endif + + + + +/* **************************************** +* Compiler-specific Functions and Macros +******************************************/ +#define XXH_GCC_VERSION (__GNUC__ * 100 + __GNUC_MINOR__) + +#ifdef __has_builtin +# define XXH_HAS_BUILTIN(x) __has_builtin(x) +#else +# define XXH_HAS_BUILTIN(x) 0 +#endif + +/*! + * @internal + * @def XXH_rotl32(x,r) + * @brief 32-bit rotate left. + * + * @param x The 32-bit integer to be rotated. + * @param r The number of bits to rotate. + * @pre + * @p r > 0 && @p r < 32 + * @note + * @p x and @p r may be evaluated multiple times. + * @return The rotated result. + */ +#if !defined(NO_CLANG_BUILTIN) && XXH_HAS_BUILTIN(__builtin_rotateleft32) \ + && XXH_HAS_BUILTIN(__builtin_rotateleft64) +# define XXH_rotl32 __builtin_rotateleft32 +# define XXH_rotl64 __builtin_rotateleft64 +/* Note: although _rotl exists for minGW (GCC under windows), performance seems poor */ +#elif defined(_MSC_VER) +# define XXH_rotl32(x,r) _rotl(x,r) +# define XXH_rotl64(x,r) _rotl64(x,r) +#else +# define XXH_rotl32(x,r) (((x) << (r)) | ((x) >> (32 - (r)))) +# define XXH_rotl64(x,r) (((x) << (r)) | ((x) >> (64 - (r)))) +#endif + +/*! + * @internal + * @fn xxh_u32 XXH_swap32(xxh_u32 x) + * @brief A 32-bit byteswap. + * + * @param x The 32-bit integer to byteswap. + * @return @p x, byteswapped. + */ +#if defined(_MSC_VER) /* Visual Studio */ +# define XXH_swap32 _byteswap_ulong +#elif XXH_GCC_VERSION >= 403 +# define XXH_swap32 __builtin_bswap32 +#else +static xxh_u32 XXH_swap32 (xxh_u32 x) +{ + return ((x << 24) & 0xff000000 ) | + ((x << 8) & 0x00ff0000 ) | + ((x >> 8) & 0x0000ff00 ) | + ((x >> 24) & 0x000000ff ); +} +#endif + + +/* *************************** +* Memory reads +*****************************/ + +/*! + * @internal + * @brief Enum to indicate whether a pointer is aligned. + */ +typedef enum { + XXH_aligned, /*!< Aligned */ + XXH_unaligned /*!< Possibly unaligned */ +} XXH_alignment; + +/* + * XXH_FORCE_MEMORY_ACCESS==3 is an endian-independent byteshift load. + * + * This is ideal for older compilers which don't inline memcpy. + */ +#if (defined(XXH_FORCE_MEMORY_ACCESS) && (XXH_FORCE_MEMORY_ACCESS==3)) + +XXH_FORCE_INLINE xxh_u32 XXH_readLE32(const void* memPtr) +{ + const xxh_u8* bytePtr = (const xxh_u8 *)memPtr; + return bytePtr[0] + | ((xxh_u32)bytePtr[1] << 8) + | ((xxh_u32)bytePtr[2] << 16) + | ((xxh_u32)bytePtr[3] << 24); +} + +XXH_FORCE_INLINE xxh_u32 XXH_readBE32(const void* memPtr) +{ + const xxh_u8* bytePtr = (const xxh_u8 *)memPtr; + return bytePtr[3] + | ((xxh_u32)bytePtr[2] << 8) + | ((xxh_u32)bytePtr[1] << 16) + | ((xxh_u32)bytePtr[0] << 24); +} + +#else +XXH_FORCE_INLINE xxh_u32 XXH_readLE32(const void* ptr) +{ + return XXH_CPU_LITTLE_ENDIAN ? XXH_read32(ptr) : XXH_swap32(XXH_read32(ptr)); +} + +static xxh_u32 XXH_readBE32(const void* ptr) +{ + return XXH_CPU_LITTLE_ENDIAN ? XXH_swap32(XXH_read32(ptr)) : XXH_read32(ptr); +} +#endif + +XXH_FORCE_INLINE xxh_u32 +XXH_readLE32_align(const void* ptr, XXH_alignment align) +{ + if (align==XXH_unaligned) { + return XXH_readLE32(ptr); + } else { + return XXH_CPU_LITTLE_ENDIAN ? *(const xxh_u32*)ptr : XXH_swap32(*(const xxh_u32*)ptr); + } +} + + +/* ************************************* +* Misc +***************************************/ +/*! @ingroup public */ +XXH_PUBLIC_API unsigned XXH_versionNumber (void) { return XXH_VERSION_NUMBER; } + + +/* ******************************************************************* +* 32-bit hash functions +*********************************************************************/ +/*! + * @} + * @defgroup xxh32_impl XXH32 implementation + * @ingroup impl + * @{ + */ +static const xxh_u32 XXH_PRIME32_1 = 0x9E3779B1U; /*!< 0b10011110001101110111100110110001 */ +static const xxh_u32 XXH_PRIME32_2 = 0x85EBCA77U; /*!< 0b10000101111010111100101001110111 */ +static const xxh_u32 XXH_PRIME32_3 = 0xC2B2AE3DU; /*!< 0b11000010101100101010111000111101 */ +static const xxh_u32 XXH_PRIME32_4 = 0x27D4EB2FU; /*!< 0b00100111110101001110101100101111 */ +static const xxh_u32 XXH_PRIME32_5 = 0x165667B1U; /*!< 0b00010110010101100110011110110001 */ + +#ifdef XXH_OLD_NAMES +# define PRIME32_1 XXH_PRIME32_1 +# define PRIME32_2 XXH_PRIME32_2 +# define PRIME32_3 XXH_PRIME32_3 +# define PRIME32_4 XXH_PRIME32_4 +# define PRIME32_5 XXH_PRIME32_5 +#endif + +/*! + * @internal + * @brief Normal stripe processing routine. + * + * This shuffles the bits so that any bit from @p input impacts several bits in + * @p acc. + * + * @param acc The accumulator lane. + * @param input The stripe of input to mix. + * @return The mixed accumulator lane. + */ +static xxh_u32 XXH32_round(xxh_u32 acc, xxh_u32 input) +{ + acc += input * XXH_PRIME32_2; + acc = XXH_rotl32(acc, 13); + acc *= XXH_PRIME32_1; +#if defined(__GNUC__) && defined(__SSE4_1__) && !defined(XXH_ENABLE_AUTOVECTORIZE) + /* + * UGLY HACK: + * This inline assembly hack forces acc into a normal register. This is the + * only thing that prevents GCC and Clang from autovectorizing the XXH32 + * loop (pragmas and attributes don't work for some reason) without globally + * disabling SSE4.1. + * + * The reason we want to avoid vectorization is because despite working on + * 4 integers at a time, there are multiple factors slowing XXH32 down on + * SSE4: + * - There's a ridiculous amount of lag from pmulld (10 cycles of latency on + * newer chips!) making it slightly slower to multiply four integers at + * once compared to four integers independently. Even when pmulld was + * fastest, Sandy/Ivy Bridge, it is still not worth it to go into SSE + * just to multiply unless doing a long operation. + * + * - Four instructions are required to rotate, + * movqda tmp, v // not required with VEX encoding + * pslld tmp, 13 // tmp <<= 13 + * psrld v, 19 // x >>= 19 + * por v, tmp // x |= tmp + * compared to one for scalar: + * roll v, 13 // reliably fast across the board + * shldl v, v, 13 // Sandy Bridge and later prefer this for some reason + * + * - Instruction level parallelism is actually more beneficial here because + * the SIMD actually serializes this operation: While v1 is rotating, v2 + * can load data, while v3 can multiply. SSE forces them to operate + * together. + * + * How this hack works: + * __asm__("" // Declare an assembly block but don't declare any instructions + * : // However, as an Input/Output Operand, + * "+r" // constrain a read/write operand (+) as a general purpose register (r). + * (acc) // and set acc as the operand + * ); + * + * Because of the 'r', the compiler has promised that seed will be in a + * general purpose register and the '+' says that it will be 'read/write', + * so it has to assume it has changed. It is like volatile without all the + * loads and stores. + * + * Since the argument has to be in a normal register (not an SSE register), + * each time XXH32_round is called, it is impossible to vectorize. + */ + __asm__("" : "+r" (acc)); +#endif + return acc; +} + +/*! + * @internal + * @brief Mixes all bits to finalize the hash. + * + * The final mix ensures that all input bits have a chance to impact any bit in + * the output digest, resulting in an unbiased distribution. + * + * @param h32 The hash to avalanche. + * @return The avalanched hash. + */ +static xxh_u32 XXH32_avalanche(xxh_u32 h32) +{ + h32 ^= h32 >> 15; + h32 *= XXH_PRIME32_2; + h32 ^= h32 >> 13; + h32 *= XXH_PRIME32_3; + h32 ^= h32 >> 16; + return(h32); +} + +#define XXH_get32bits(p) XXH_readLE32_align(p, align) + +/*! + * @internal + * @brief Processes the last 0-15 bytes of @p ptr. + * + * There may be up to 15 bytes remaining to consume from the input. + * This final stage will digest them to ensure that all input bytes are present + * in the final mix. + * + * @param h32 The hash to finalize. + * @param ptr The pointer to the remaining input. + * @param len The remaining length, modulo 16. + * @param align Whether @p ptr is aligned. + * @return The finalized hash. + */ +static xxh_u32 +XXH32_finalize(xxh_u32 h32, const xxh_u8* ptr, size_t len, XXH_alignment align) +{ +#define XXH_PROCESS1 do { \ + h32 += (*ptr++) * XXH_PRIME32_5; \ + h32 = XXH_rotl32(h32, 11) * XXH_PRIME32_1; \ +} while (0) + +#define XXH_PROCESS4 do { \ + h32 += XXH_get32bits(ptr) * XXH_PRIME32_3; \ + ptr += 4; \ + h32 = XXH_rotl32(h32, 17) * XXH_PRIME32_4; \ +} while (0) + + /* Compact rerolled version */ + if (XXH_REROLL) { + len &= 15; + while (len >= 4) { + XXH_PROCESS4; + len -= 4; + } + while (len > 0) { + XXH_PROCESS1; + --len; + } + return XXH32_avalanche(h32); + } else { + switch(len&15) /* or switch(bEnd - p) */ { + case 12: XXH_PROCESS4; + /* fallthrough */ + case 8: XXH_PROCESS4; + /* fallthrough */ + case 4: XXH_PROCESS4; + return XXH32_avalanche(h32); + + case 13: XXH_PROCESS4; + /* fallthrough */ + case 9: XXH_PROCESS4; + /* fallthrough */ + case 5: XXH_PROCESS4; + XXH_PROCESS1; + return XXH32_avalanche(h32); + + case 14: XXH_PROCESS4; + /* fallthrough */ + case 10: XXH_PROCESS4; + /* fallthrough */ + case 6: XXH_PROCESS4; + XXH_PROCESS1; + XXH_PROCESS1; + return XXH32_avalanche(h32); + + case 15: XXH_PROCESS4; + /* fallthrough */ + case 11: XXH_PROCESS4; + /* fallthrough */ + case 7: XXH_PROCESS4; + /* fallthrough */ + case 3: XXH_PROCESS1; + /* fallthrough */ + case 2: XXH_PROCESS1; + /* fallthrough */ + case 1: XXH_PROCESS1; + /* fallthrough */ + case 0: return XXH32_avalanche(h32); + } + XXH_ASSERT(0); + return h32; /* reaching this point is deemed impossible */ + } +} + +#ifdef XXH_OLD_NAMES +# define PROCESS1 XXH_PROCESS1 +# define PROCESS4 XXH_PROCESS4 +#else +# undef XXH_PROCESS1 +# undef XXH_PROCESS4 +#endif + +/*! + * @internal + * @brief The implementation for @ref XXH32(). + * + * @param input, len, seed Directly passed from @ref XXH32(). + * @param align Whether @p input is aligned. + * @return The calculated hash. + */ +XXH_FORCE_INLINE xxh_u32 +XXH32_endian_align(const xxh_u8* input, size_t len, xxh_u32 seed, XXH_alignment align) +{ + const xxh_u8* bEnd = input + len; + xxh_u32 h32; + +#if defined(XXH_ACCEPT_NULL_INPUT_POINTER) && (XXH_ACCEPT_NULL_INPUT_POINTER>=1) + if (input==NULL) { + len=0; + bEnd=input=(const xxh_u8*)(size_t)16; + } +#endif + + if (len>=16) { + const xxh_u8* const limit = bEnd - 15; + xxh_u32 v1 = seed + XXH_PRIME32_1 + XXH_PRIME32_2; + xxh_u32 v2 = seed + XXH_PRIME32_2; + xxh_u32 v3 = seed + 0; + xxh_u32 v4 = seed - XXH_PRIME32_1; + + do { + v1 = XXH32_round(v1, XXH_get32bits(input)); input += 4; + v2 = XXH32_round(v2, XXH_get32bits(input)); input += 4; + v3 = XXH32_round(v3, XXH_get32bits(input)); input += 4; + v4 = XXH32_round(v4, XXH_get32bits(input)); input += 4; + } while (input < limit); + + h32 = XXH_rotl32(v1, 1) + XXH_rotl32(v2, 7) + + XXH_rotl32(v3, 12) + XXH_rotl32(v4, 18); + } else { + h32 = seed + XXH_PRIME32_5; + } + + h32 += (xxh_u32)len; + + return XXH32_finalize(h32, input, len&15, align); +} + +/*! @ingroup xxh32_family */ +XXH_PUBLIC_API XXH32_hash_t XXH32 (const void* input, size_t len, XXH32_hash_t seed) +{ +#if 0 + /* Simple version, good for code maintenance, but unfortunately slow for small inputs */ + XXH32_state_t state; + XXH32_reset(&state, seed); + XXH32_update(&state, (const xxh_u8*)input, len); + return XXH32_digest(&state); +#else + if (XXH_FORCE_ALIGN_CHECK) { + if ((((size_t)input) & 3) == 0) { /* Input is 4-bytes aligned, leverage the speed benefit */ + return XXH32_endian_align((const xxh_u8*)input, len, seed, XXH_aligned); + } } + + return XXH32_endian_align((const xxh_u8*)input, len, seed, XXH_unaligned); +#endif +} + + + +/******* Hash streaming *******/ +/*! + * @ingroup xxh32_family + */ +XXH_PUBLIC_API XXH32_state_t* XXH32_createState(void) +{ + return (XXH32_state_t*)XXH_malloc(sizeof(XXH32_state_t)); +} +/*! @ingroup xxh32_family */ +XXH_PUBLIC_API XXH_errorcode XXH32_freeState(XXH32_state_t* statePtr) +{ + XXH_free(statePtr); + return XXH_OK; +} + +/*! @ingroup xxh32_family */ +XXH_PUBLIC_API void XXH32_copyState(XXH32_state_t* dstState, const XXH32_state_t* srcState) +{ + memcpy(dstState, srcState, sizeof(*dstState)); +} + +/*! @ingroup xxh32_family */ +XXH_PUBLIC_API XXH_errorcode XXH32_reset(XXH32_state_t* statePtr, XXH32_hash_t seed) +{ + XXH32_state_t state; /* using a local state to memcpy() in order to avoid strict-aliasing warnings */ + memset(&state, 0, sizeof(state)); + state.v1 = seed + XXH_PRIME32_1 + XXH_PRIME32_2; + state.v2 = seed + XXH_PRIME32_2; + state.v3 = seed + 0; + state.v4 = seed - XXH_PRIME32_1; + /* do not write into reserved, planned to be removed in a future version */ + memcpy(statePtr, &state, sizeof(state) - sizeof(state.reserved)); + return XXH_OK; +} + + +/*! @ingroup xxh32_family */ +XXH_PUBLIC_API XXH_errorcode +XXH32_update(XXH32_state_t* state, const void* input, size_t len) +{ + if (input==NULL) +#if defined(XXH_ACCEPT_NULL_INPUT_POINTER) && (XXH_ACCEPT_NULL_INPUT_POINTER>=1) + return XXH_OK; +#else + return XXH_ERROR; +#endif + + { const xxh_u8* p = (const xxh_u8*)input; + const xxh_u8* const bEnd = p + len; + + state->total_len_32 += (XXH32_hash_t)len; + state->large_len |= (XXH32_hash_t)((len>=16) | (state->total_len_32>=16)); + + if (state->memsize + len < 16) { /* fill in tmp buffer */ + XXH_memcpy((xxh_u8*)(state->mem32) + state->memsize, input, len); + state->memsize += (XXH32_hash_t)len; + return XXH_OK; + } + + if (state->memsize) { /* some data left from previous update */ + XXH_memcpy((xxh_u8*)(state->mem32) + state->memsize, input, 16-state->memsize); + { const xxh_u32* p32 = state->mem32; + state->v1 = XXH32_round(state->v1, XXH_readLE32(p32)); p32++; + state->v2 = XXH32_round(state->v2, XXH_readLE32(p32)); p32++; + state->v3 = XXH32_round(state->v3, XXH_readLE32(p32)); p32++; + state->v4 = XXH32_round(state->v4, XXH_readLE32(p32)); + } + p += 16-state->memsize; + state->memsize = 0; + } + + if (p <= bEnd-16) { + const xxh_u8* const limit = bEnd - 16; + xxh_u32 v1 = state->v1; + xxh_u32 v2 = state->v2; + xxh_u32 v3 = state->v3; + xxh_u32 v4 = state->v4; + + do { + v1 = XXH32_round(v1, XXH_readLE32(p)); p+=4; + v2 = XXH32_round(v2, XXH_readLE32(p)); p+=4; + v3 = XXH32_round(v3, XXH_readLE32(p)); p+=4; + v4 = XXH32_round(v4, XXH_readLE32(p)); p+=4; + } while (p<=limit); + + state->v1 = v1; + state->v2 = v2; + state->v3 = v3; + state->v4 = v4; + } + + if (p < bEnd) { + XXH_memcpy(state->mem32, p, (size_t)(bEnd-p)); + state->memsize = (unsigned)(bEnd-p); + } + } + + return XXH_OK; +} + + +/*! @ingroup xxh32_family */ +XXH_PUBLIC_API XXH32_hash_t XXH32_digest(const XXH32_state_t* state) +{ + xxh_u32 h32; + + if (state->large_len) { + h32 = XXH_rotl32(state->v1, 1) + + XXH_rotl32(state->v2, 7) + + XXH_rotl32(state->v3, 12) + + XXH_rotl32(state->v4, 18); + } else { + h32 = state->v3 /* == seed */ + XXH_PRIME32_5; + } + + h32 += state->total_len_32; + + return XXH32_finalize(h32, (const xxh_u8*)state->mem32, state->memsize, XXH_aligned); +} + + +/******* Canonical representation *******/ + +/*! + * @ingroup xxh32_family + * The default return values from XXH functions are unsigned 32 and 64 bit + * integers. + * + * The canonical representation uses big endian convention, the same convention + * as human-readable numbers (large digits first). + * + * This way, hash values can be written into a file or buffer, remaining + * comparable across different systems. + * + * The following functions allow transformation of hash values to and from their + * canonical format. + */ +XXH_PUBLIC_API void XXH32_canonicalFromHash(XXH32_canonical_t* dst, XXH32_hash_t hash) +{ + XXH_STATIC_ASSERT(sizeof(XXH32_canonical_t) == sizeof(XXH32_hash_t)); + if (XXH_CPU_LITTLE_ENDIAN) hash = XXH_swap32(hash); + memcpy(dst, &hash, sizeof(*dst)); +} +/*! @ingroup xxh32_family */ +XXH_PUBLIC_API XXH32_hash_t XXH32_hashFromCanonical(const XXH32_canonical_t* src) +{ + return XXH_readBE32(src); +} + + +#ifndef XXH_NO_LONG_LONG + +/* ******************************************************************* +* 64-bit hash functions +*********************************************************************/ +/*! + * @} + * @ingroup impl + * @{ + */ +/******* Memory access *******/ + +typedef XXH64_hash_t xxh_u64; + +#ifdef XXH_OLD_NAMES +# define U64 xxh_u64 +#endif + +/*! + * XXH_REROLL_XXH64: + * Whether to reroll the XXH64_finalize() loop. + * + * Just like XXH32, we can unroll the XXH64_finalize() loop. This can be a + * performance gain on 64-bit hosts, as only one jump is required. + * + * However, on 32-bit hosts, because arithmetic needs to be done with two 32-bit + * registers, and 64-bit arithmetic needs to be simulated, it isn't beneficial + * to unroll. The code becomes ridiculously large (the largest function in the + * binary on i386!), and rerolling it saves anywhere from 3kB to 20kB. It is + * also slightly faster because it fits into cache better and is more likely + * to be inlined by the compiler. + * + * If XXH_REROLL is defined, this is ignored and the loop is always rerolled. + */ +#ifndef XXH_REROLL_XXH64 +# if (defined(__ILP32__) || defined(_ILP32)) /* ILP32 is often defined on 32-bit GCC family */ \ + || !(defined(__x86_64__) || defined(_M_X64) || defined(_M_AMD64) /* x86-64 */ \ + || defined(_M_ARM64) || defined(__aarch64__) || defined(__arm64__) /* aarch64 */ \ + || defined(__PPC64__) || defined(__PPC64LE__) || defined(__ppc64__) || defined(__powerpc64__) /* ppc64 */ \ + || defined(__mips64__) || defined(__mips64)) /* mips64 */ \ + || (!defined(SIZE_MAX) || SIZE_MAX < ULLONG_MAX) /* check limits */ +# define XXH_REROLL_XXH64 1 +# else +# define XXH_REROLL_XXH64 0 +# endif +#endif /* !defined(XXH_REROLL_XXH64) */ + +#if (defined(XXH_FORCE_MEMORY_ACCESS) && (XXH_FORCE_MEMORY_ACCESS==3)) +/* + * Manual byteshift. Best for old compilers which don't inline memcpy. + * We actually directly use XXH_readLE64 and XXH_readBE64. + */ +#elif (defined(XXH_FORCE_MEMORY_ACCESS) && (XXH_FORCE_MEMORY_ACCESS==2)) + +/* Force direct memory access. Only works on CPU which support unaligned memory access in hardware */ +static xxh_u64 XXH_read64(const void* memPtr) +{ + return *(const xxh_u64*) memPtr; +} + +#elif (defined(XXH_FORCE_MEMORY_ACCESS) && (XXH_FORCE_MEMORY_ACCESS==1)) + +/* + * __pack instructions are safer, but compiler specific, hence potentially + * problematic for some compilers. + * + * Currently only defined for GCC and ICC. + */ +#ifdef XXH_OLD_NAMES +typedef union { xxh_u32 u32; xxh_u64 u64; } __attribute__((packed)) unalign64; +#endif +static xxh_u64 XXH_read64(const void* ptr) +{ + typedef union { xxh_u32 u32; xxh_u64 u64; } __attribute__((packed)) xxh_unalign64; + return ((const xxh_unalign64*)ptr)->u64; +} + +#else + +/* + * Portable and safe solution. Generally efficient. + * see: https://stackoverflow.com/a/32095106/646947 + */ +static xxh_u64 XXH_read64(const void* memPtr) +{ + xxh_u64 val; + memcpy(&val, memPtr, sizeof(val)); + return val; +} + +#endif /* XXH_FORCE_DIRECT_MEMORY_ACCESS */ + +#if defined(_MSC_VER) /* Visual Studio */ +# define XXH_swap64 _byteswap_uint64 +#elif XXH_GCC_VERSION >= 403 +# define XXH_swap64 __builtin_bswap64 +#else +static xxh_u64 XXH_swap64(xxh_u64 x) +{ + return ((x << 56) & 0xff00000000000000ULL) | + ((x << 40) & 0x00ff000000000000ULL) | + ((x << 24) & 0x0000ff0000000000ULL) | + ((x << 8) & 0x000000ff00000000ULL) | + ((x >> 8) & 0x00000000ff000000ULL) | + ((x >> 24) & 0x0000000000ff0000ULL) | + ((x >> 40) & 0x000000000000ff00ULL) | + ((x >> 56) & 0x00000000000000ffULL); +} +#endif + + +/* XXH_FORCE_MEMORY_ACCESS==3 is an endian-independent byteshift load. */ +#if (defined(XXH_FORCE_MEMORY_ACCESS) && (XXH_FORCE_MEMORY_ACCESS==3)) + +XXH_FORCE_INLINE xxh_u64 XXH_readLE64(const void* memPtr) +{ + const xxh_u8* bytePtr = (const xxh_u8 *)memPtr; + return bytePtr[0] + | ((xxh_u64)bytePtr[1] << 8) + | ((xxh_u64)bytePtr[2] << 16) + | ((xxh_u64)bytePtr[3] << 24) + | ((xxh_u64)bytePtr[4] << 32) + | ((xxh_u64)bytePtr[5] << 40) + | ((xxh_u64)bytePtr[6] << 48) + | ((xxh_u64)bytePtr[7] << 56); +} + +XXH_FORCE_INLINE xxh_u64 XXH_readBE64(const void* memPtr) +{ + const xxh_u8* bytePtr = (const xxh_u8 *)memPtr; + return bytePtr[7] + | ((xxh_u64)bytePtr[6] << 8) + | ((xxh_u64)bytePtr[5] << 16) + | ((xxh_u64)bytePtr[4] << 24) + | ((xxh_u64)bytePtr[3] << 32) + | ((xxh_u64)bytePtr[2] << 40) + | ((xxh_u64)bytePtr[1] << 48) + | ((xxh_u64)bytePtr[0] << 56); +} + +#else +XXH_FORCE_INLINE xxh_u64 XXH_readLE64(const void* ptr) +{ + return XXH_CPU_LITTLE_ENDIAN ? XXH_read64(ptr) : XXH_swap64(XXH_read64(ptr)); +} + +static xxh_u64 XXH_readBE64(const void* ptr) +{ + return XXH_CPU_LITTLE_ENDIAN ? XXH_swap64(XXH_read64(ptr)) : XXH_read64(ptr); +} +#endif + +XXH_FORCE_INLINE xxh_u64 +XXH_readLE64_align(const void* ptr, XXH_alignment align) +{ + if (align==XXH_unaligned) + return XXH_readLE64(ptr); + else + return XXH_CPU_LITTLE_ENDIAN ? *(const xxh_u64*)ptr : XXH_swap64(*(const xxh_u64*)ptr); +} + + +/******* xxh64 *******/ +/*! + * @} + * @defgroup xxh64_impl XXH64 implementation + * @ingroup impl + * @{ + */ +static const xxh_u64 XXH_PRIME64_1 = 0x9E3779B185EBCA87ULL; /*!< 0b1001111000110111011110011011000110000101111010111100101010000111 */ +static const xxh_u64 XXH_PRIME64_2 = 0xC2B2AE3D27D4EB4FULL; /*!< 0b1100001010110010101011100011110100100111110101001110101101001111 */ +static const xxh_u64 XXH_PRIME64_3 = 0x165667B19E3779F9ULL; /*!< 0b0001011001010110011001111011000110011110001101110111100111111001 */ +static const xxh_u64 XXH_PRIME64_4 = 0x85EBCA77C2B2AE63ULL; /*!< 0b1000010111101011110010100111011111000010101100101010111001100011 */ +static const xxh_u64 XXH_PRIME64_5 = 0x27D4EB2F165667C5ULL; /*!< 0b0010011111010100111010110010111100010110010101100110011111000101 */ + +#ifdef XXH_OLD_NAMES +# define PRIME64_1 XXH_PRIME64_1 +# define PRIME64_2 XXH_PRIME64_2 +# define PRIME64_3 XXH_PRIME64_3 +# define PRIME64_4 XXH_PRIME64_4 +# define PRIME64_5 XXH_PRIME64_5 +#endif + +static xxh_u64 XXH64_round(xxh_u64 acc, xxh_u64 input) +{ + acc += input * XXH_PRIME64_2; + acc = XXH_rotl64(acc, 31); + acc *= XXH_PRIME64_1; + return acc; +} + +static xxh_u64 XXH64_mergeRound(xxh_u64 acc, xxh_u64 val) +{ + val = XXH64_round(0, val); + acc ^= val; + acc = acc * XXH_PRIME64_1 + XXH_PRIME64_4; + return acc; +} + +static xxh_u64 XXH64_avalanche(xxh_u64 h64) +{ + h64 ^= h64 >> 33; + h64 *= XXH_PRIME64_2; + h64 ^= h64 >> 29; + h64 *= XXH_PRIME64_3; + h64 ^= h64 >> 32; + return h64; +} + + +#define XXH_get64bits(p) XXH_readLE64_align(p, align) + +static xxh_u64 +XXH64_finalize(xxh_u64 h64, const xxh_u8* ptr, size_t len, XXH_alignment align) +{ +#define XXH_PROCESS1_64 do { \ + h64 ^= (*ptr++) * XXH_PRIME64_5; \ + h64 = XXH_rotl64(h64, 11) * XXH_PRIME64_1; \ +} while (0) + +#define XXH_PROCESS4_64 do { \ + h64 ^= (xxh_u64)(XXH_get32bits(ptr)) * XXH_PRIME64_1; \ + ptr += 4; \ + h64 = XXH_rotl64(h64, 23) * XXH_PRIME64_2 + XXH_PRIME64_3; \ +} while (0) + +#define XXH_PROCESS8_64 do { \ + xxh_u64 const k1 = XXH64_round(0, XXH_get64bits(ptr)); \ + ptr += 8; \ + h64 ^= k1; \ + h64 = XXH_rotl64(h64,27) * XXH_PRIME64_1 + XXH_PRIME64_4; \ +} while (0) + + /* Rerolled version for 32-bit targets is faster and much smaller. */ + if (XXH_REROLL || XXH_REROLL_XXH64) { + len &= 31; + while (len >= 8) { + XXH_PROCESS8_64; + len -= 8; + } + if (len >= 4) { + XXH_PROCESS4_64; + len -= 4; + } + while (len > 0) { + XXH_PROCESS1_64; + --len; + } + return XXH64_avalanche(h64); + } else { + switch(len & 31) { + case 24: XXH_PROCESS8_64; + /* fallthrough */ + case 16: XXH_PROCESS8_64; + /* fallthrough */ + case 8: XXH_PROCESS8_64; + return XXH64_avalanche(h64); + + case 28: XXH_PROCESS8_64; + /* fallthrough */ + case 20: XXH_PROCESS8_64; + /* fallthrough */ + case 12: XXH_PROCESS8_64; + /* fallthrough */ + case 4: XXH_PROCESS4_64; + return XXH64_avalanche(h64); + + case 25: XXH_PROCESS8_64; + /* fallthrough */ + case 17: XXH_PROCESS8_64; + /* fallthrough */ + case 9: XXH_PROCESS8_64; + XXH_PROCESS1_64; + return XXH64_avalanche(h64); + + case 29: XXH_PROCESS8_64; + /* fallthrough */ + case 21: XXH_PROCESS8_64; + /* fallthrough */ + case 13: XXH_PROCESS8_64; + /* fallthrough */ + case 5: XXH_PROCESS4_64; + XXH_PROCESS1_64; + return XXH64_avalanche(h64); + + case 26: XXH_PROCESS8_64; + /* fallthrough */ + case 18: XXH_PROCESS8_64; + /* fallthrough */ + case 10: XXH_PROCESS8_64; + XXH_PROCESS1_64; + XXH_PROCESS1_64; + return XXH64_avalanche(h64); + + case 30: XXH_PROCESS8_64; + /* fallthrough */ + case 22: XXH_PROCESS8_64; + /* fallthrough */ + case 14: XXH_PROCESS8_64; + /* fallthrough */ + case 6: XXH_PROCESS4_64; + XXH_PROCESS1_64; + XXH_PROCESS1_64; + return XXH64_avalanche(h64); + + case 27: XXH_PROCESS8_64; + /* fallthrough */ + case 19: XXH_PROCESS8_64; + /* fallthrough */ + case 11: XXH_PROCESS8_64; + XXH_PROCESS1_64; + XXH_PROCESS1_64; + XXH_PROCESS1_64; + return XXH64_avalanche(h64); + + case 31: XXH_PROCESS8_64; + /* fallthrough */ + case 23: XXH_PROCESS8_64; + /* fallthrough */ + case 15: XXH_PROCESS8_64; + /* fallthrough */ + case 7: XXH_PROCESS4_64; + /* fallthrough */ + case 3: XXH_PROCESS1_64; + /* fallthrough */ + case 2: XXH_PROCESS1_64; + /* fallthrough */ + case 1: XXH_PROCESS1_64; + /* fallthrough */ + case 0: return XXH64_avalanche(h64); + } + } + /* impossible to reach */ + XXH_ASSERT(0); + return 0; /* unreachable, but some compilers complain without it */ +} + +#ifdef XXH_OLD_NAMES +# define PROCESS1_64 XXH_PROCESS1_64 +# define PROCESS4_64 XXH_PROCESS4_64 +# define PROCESS8_64 XXH_PROCESS8_64 +#else +# undef XXH_PROCESS1_64 +# undef XXH_PROCESS4_64 +# undef XXH_PROCESS8_64 +#endif + +XXH_FORCE_INLINE xxh_u64 +XXH64_endian_align(const xxh_u8* input, size_t len, xxh_u64 seed, XXH_alignment align) +{ + const xxh_u8* bEnd = input + len; + xxh_u64 h64; + +#if defined(XXH_ACCEPT_NULL_INPUT_POINTER) && (XXH_ACCEPT_NULL_INPUT_POINTER>=1) + if (input==NULL) { + len=0; + bEnd=input=(const xxh_u8*)(size_t)32; + } +#endif + + if (len>=32) { + const xxh_u8* const limit = bEnd - 32; + xxh_u64 v1 = seed + XXH_PRIME64_1 + XXH_PRIME64_2; + xxh_u64 v2 = seed + XXH_PRIME64_2; + xxh_u64 v3 = seed + 0; + xxh_u64 v4 = seed - XXH_PRIME64_1; + + do { + v1 = XXH64_round(v1, XXH_get64bits(input)); input+=8; + v2 = XXH64_round(v2, XXH_get64bits(input)); input+=8; + v3 = XXH64_round(v3, XXH_get64bits(input)); input+=8; + v4 = XXH64_round(v4, XXH_get64bits(input)); input+=8; + } while (input<=limit); + + h64 = XXH_rotl64(v1, 1) + XXH_rotl64(v2, 7) + XXH_rotl64(v3, 12) + XXH_rotl64(v4, 18); + h64 = XXH64_mergeRound(h64, v1); + h64 = XXH64_mergeRound(h64, v2); + h64 = XXH64_mergeRound(h64, v3); + h64 = XXH64_mergeRound(h64, v4); + + } else { + h64 = seed + XXH_PRIME64_5; + } + + h64 += (xxh_u64) len; + + return XXH64_finalize(h64, input, len, align); +} + + +/*! @ingroup xxh64_family */ +XXH_PUBLIC_API XXH64_hash_t XXH64 (const void* input, size_t len, XXH64_hash_t seed) +{ +#if 0 + /* Simple version, good for code maintenance, but unfortunately slow for small inputs */ + XXH64_state_t state; + XXH64_reset(&state, seed); + XXH64_update(&state, (const xxh_u8*)input, len); + return XXH64_digest(&state); +#else + if (XXH_FORCE_ALIGN_CHECK) { + if ((((size_t)input) & 7)==0) { /* Input is aligned, let's leverage the speed advantage */ + return XXH64_endian_align((const xxh_u8*)input, len, seed, XXH_aligned); + } } + + return XXH64_endian_align((const xxh_u8*)input, len, seed, XXH_unaligned); + +#endif +} + +/******* Hash Streaming *******/ + +/*! @ingroup xxh64_family*/ +XXH_PUBLIC_API XXH64_state_t* XXH64_createState(void) +{ + return (XXH64_state_t*)XXH_malloc(sizeof(XXH64_state_t)); +} +/*! @ingroup xxh64_family */ +XXH_PUBLIC_API XXH_errorcode XXH64_freeState(XXH64_state_t* statePtr) +{ + XXH_free(statePtr); + return XXH_OK; +} + +/*! @ingroup xxh64_family */ +XXH_PUBLIC_API void XXH64_copyState(XXH64_state_t* dstState, const XXH64_state_t* srcState) +{ + memcpy(dstState, srcState, sizeof(*dstState)); +} + +/*! @ingroup xxh64_family */ +XXH_PUBLIC_API XXH_errorcode XXH64_reset(XXH64_state_t* statePtr, XXH64_hash_t seed) +{ + XXH64_state_t state; /* use a local state to memcpy() in order to avoid strict-aliasing warnings */ + memset(&state, 0, sizeof(state)); + state.v1 = seed + XXH_PRIME64_1 + XXH_PRIME64_2; + state.v2 = seed + XXH_PRIME64_2; + state.v3 = seed + 0; + state.v4 = seed - XXH_PRIME64_1; + /* do not write into reserved64, might be removed in a future version */ + memcpy(statePtr, &state, sizeof(state) - sizeof(state.reserved64)); + return XXH_OK; +} + +/*! @ingroup xxh64_family */ +XXH_PUBLIC_API XXH_errorcode +XXH64_update (XXH64_state_t* state, const void* input, size_t len) +{ + if (input==NULL) +#if defined(XXH_ACCEPT_NULL_INPUT_POINTER) && (XXH_ACCEPT_NULL_INPUT_POINTER>=1) + return XXH_OK; +#else + return XXH_ERROR; +#endif + + { const xxh_u8* p = (const xxh_u8*)input; + const xxh_u8* const bEnd = p + len; + + state->total_len += len; + + if (state->memsize + len < 32) { /* fill in tmp buffer */ + XXH_memcpy(((xxh_u8*)state->mem64) + state->memsize, input, len); + state->memsize += (xxh_u32)len; + return XXH_OK; + } + + if (state->memsize) { /* tmp buffer is full */ + XXH_memcpy(((xxh_u8*)state->mem64) + state->memsize, input, 32-state->memsize); + state->v1 = XXH64_round(state->v1, XXH_readLE64(state->mem64+0)); + state->v2 = XXH64_round(state->v2, XXH_readLE64(state->mem64+1)); + state->v3 = XXH64_round(state->v3, XXH_readLE64(state->mem64+2)); + state->v4 = XXH64_round(state->v4, XXH_readLE64(state->mem64+3)); + p += 32 - state->memsize; + state->memsize = 0; + } + + if (p+32 <= bEnd) { + const xxh_u8* const limit = bEnd - 32; + xxh_u64 v1 = state->v1; + xxh_u64 v2 = state->v2; + xxh_u64 v3 = state->v3; + xxh_u64 v4 = state->v4; + + do { + v1 = XXH64_round(v1, XXH_readLE64(p)); p+=8; + v2 = XXH64_round(v2, XXH_readLE64(p)); p+=8; + v3 = XXH64_round(v3, XXH_readLE64(p)); p+=8; + v4 = XXH64_round(v4, XXH_readLE64(p)); p+=8; + } while (p<=limit); + + state->v1 = v1; + state->v2 = v2; + state->v3 = v3; + state->v4 = v4; + } + + if (p < bEnd) { + XXH_memcpy(state->mem64, p, (size_t)(bEnd-p)); + state->memsize = (unsigned)(bEnd-p); + } + } + + return XXH_OK; +} + + +/*! @ingroup xxh64_family */ +XXH_PUBLIC_API XXH64_hash_t XXH64_digest(const XXH64_state_t* state) +{ + xxh_u64 h64; + + if (state->total_len >= 32) { + xxh_u64 const v1 = state->v1; + xxh_u64 const v2 = state->v2; + xxh_u64 const v3 = state->v3; + xxh_u64 const v4 = state->v4; + + h64 = XXH_rotl64(v1, 1) + XXH_rotl64(v2, 7) + XXH_rotl64(v3, 12) + XXH_rotl64(v4, 18); + h64 = XXH64_mergeRound(h64, v1); + h64 = XXH64_mergeRound(h64, v2); + h64 = XXH64_mergeRound(h64, v3); + h64 = XXH64_mergeRound(h64, v4); + } else { + h64 = state->v3 /*seed*/ + XXH_PRIME64_5; + } + + h64 += (xxh_u64) state->total_len; + + return XXH64_finalize(h64, (const xxh_u8*)state->mem64, (size_t)state->total_len, XXH_aligned); +} + + +/******* Canonical representation *******/ + +/*! @ingroup xxh64_family */ +XXH_PUBLIC_API void XXH64_canonicalFromHash(XXH64_canonical_t* dst, XXH64_hash_t hash) +{ + XXH_STATIC_ASSERT(sizeof(XXH64_canonical_t) == sizeof(XXH64_hash_t)); + if (XXH_CPU_LITTLE_ENDIAN) hash = XXH_swap64(hash); + memcpy(dst, &hash, sizeof(*dst)); +} + +/*! @ingroup xxh64_family */ +XXH_PUBLIC_API XXH64_hash_t XXH64_hashFromCanonical(const XXH64_canonical_t* src) +{ + return XXH_readBE64(src); +} + + + +/* ********************************************************************* +* XXH3 +* New generation hash designed for speed on small keys and vectorization +************************************************************************ */ +/*! + * @} + * @defgroup xxh3_impl XXH3 implementation + * @ingroup impl + * @{ + */ + +/* === Compiler specifics === */ + +#if ((defined(sun) || defined(__sun)) && __cplusplus) /* Solaris includes __STDC_VERSION__ with C++. Tested with GCC 5.5 */ +# define XXH_RESTRICT /* disable */ +#elif defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L /* >= C99 */ +# define XXH_RESTRICT restrict +#else +/* Note: it might be useful to define __restrict or __restrict__ for some C++ compilers */ +# define XXH_RESTRICT /* disable */ +#endif + +#if (defined(__GNUC__) && (__GNUC__ >= 3)) \ + || (defined(__INTEL_COMPILER) && (__INTEL_COMPILER >= 800)) \ + || defined(__clang__) +# define XXH_likely(x) __builtin_expect(x, 1) +# define XXH_unlikely(x) __builtin_expect(x, 0) +#else +# define XXH_likely(x) (x) +# define XXH_unlikely(x) (x) +#endif + +#if defined(__GNUC__) +# if defined(__AVX2__) +# include +# elif defined(__SSE2__) +# include +# elif defined(__ARM_NEON__) || defined(__ARM_NEON) +# define inline __inline__ /* circumvent a clang bug */ +# include +# undef inline +# endif +#elif defined(_MSC_VER) +# include +#endif + +/* + * One goal of XXH3 is to make it fast on both 32-bit and 64-bit, while + * remaining a true 64-bit/128-bit hash function. + * + * This is done by prioritizing a subset of 64-bit operations that can be + * emulated without too many steps on the average 32-bit machine. + * + * For example, these two lines seem similar, and run equally fast on 64-bit: + * + * xxh_u64 x; + * x ^= (x >> 47); // good + * x ^= (x >> 13); // bad + * + * However, to a 32-bit machine, there is a major difference. + * + * x ^= (x >> 47) looks like this: + * + * x.lo ^= (x.hi >> (47 - 32)); + * + * while x ^= (x >> 13) looks like this: + * + * // note: funnel shifts are not usually cheap. + * x.lo ^= (x.lo >> 13) | (x.hi << (32 - 13)); + * x.hi ^= (x.hi >> 13); + * + * The first one is significantly faster than the second, simply because the + * shift is larger than 32. This means: + * - All the bits we need are in the upper 32 bits, so we can ignore the lower + * 32 bits in the shift. + * - The shift result will always fit in the lower 32 bits, and therefore, + * we can ignore the upper 32 bits in the xor. + * + * Thanks to this optimization, XXH3 only requires these features to be efficient: + * + * - Usable unaligned access + * - A 32-bit or 64-bit ALU + * - If 32-bit, a decent ADC instruction + * - A 32 or 64-bit multiply with a 64-bit result + * - For the 128-bit variant, a decent byteswap helps short inputs. + * + * The first two are already required by XXH32, and almost all 32-bit and 64-bit + * platforms which can run XXH32 can run XXH3 efficiently. + * + * Thumb-1, the classic 16-bit only subset of ARM's instruction set, is one + * notable exception. + * + * First of all, Thumb-1 lacks support for the UMULL instruction which + * performs the important long multiply. This means numerous __aeabi_lmul + * calls. + * + * Second of all, the 8 functional registers are just not enough. + * Setup for __aeabi_lmul, byteshift loads, pointers, and all arithmetic need + * Lo registers, and this shuffling results in thousands more MOVs than A32. + * + * A32 and T32 don't have this limitation. They can access all 14 registers, + * do a 32->64 multiply with UMULL, and the flexible operand allowing free + * shifts is helpful, too. + * + * Therefore, we do a quick sanity check. + * + * If compiling Thumb-1 for a target which supports ARM instructions, we will + * emit a warning, as it is not a "sane" platform to compile for. + * + * Usually, if this happens, it is because of an accident and you probably need + * to specify -march, as you likely meant to compile for a newer architecture. + * + * Credit: large sections of the vectorial and asm source code paths + * have been contributed by @easyaspi314 + */ +#if defined(__thumb__) && !defined(__thumb2__) && defined(__ARM_ARCH_ISA_ARM) +# warning "XXH3 is highly inefficient without ARM or Thumb-2." +#endif + +/* ========================================== + * Vectorization detection + * ========================================== */ + +#ifdef XXH_DOXYGEN +/*! + * @ingroup tuning + * @brief Overrides the vectorization implementation chosen for XXH3. + * + * Can be defined to 0 to disable SIMD or any of the values mentioned in + * @ref XXH_VECTOR_TYPE. + * + * If this is not defined, it uses predefined macros to determine the best + * implementation. + */ +# define XXH_VECTOR XXH_SCALAR +/*! + * @ingroup tuning + * @brief Possible values for @ref XXH_VECTOR. + * + * Note that these are actually implemented as macros. + * + * If this is not defined, it is detected automatically. + * @ref XXH_X86DISPATCH overrides this. + */ +enum XXH_VECTOR_TYPE /* fake enum */ { + XXH_SCALAR = 0, /*!< Portable scalar version */ + XXH_SSE2 = 1, /*!< + * SSE2 for Pentium 4, Opteron, all x86_64. + * + * @note SSE2 is also guaranteed on Windows 10, macOS, and + * Android x86. + */ + XXH_AVX2 = 2, /*!< AVX2 for Haswell and Bulldozer */ + XXH_AVX512 = 3, /*!< AVX512 for Skylake and Icelake */ + XXH_NEON = 4, /*!< NEON for most ARMv7-A and all AArch64 */ + XXH_VSX = 5, /*!< VSX and ZVector for POWER8/z13 (64-bit) */ +}; +/*! + * @ingroup tuning + * @brief Selects the minimum alignment for XXH3's accumulators. + * + * When using SIMD, this should match the alignment reqired for said vector + * type, so, for example, 32 for AVX2. + * + * Default: Auto detected. + */ +# define XXH_ACC_ALIGN 8 +#endif + +/* Actual definition */ +#ifndef XXH_DOXYGEN +# define XXH_SCALAR 0 +# define XXH_SSE2 1 +# define XXH_AVX2 2 +# define XXH_AVX512 3 +# define XXH_NEON 4 +# define XXH_VSX 5 +#endif + +#ifndef XXH_VECTOR /* can be defined on command line */ +# if defined(__AVX512F__) +# define XXH_VECTOR XXH_AVX512 +# elif defined(__AVX2__) +# define XXH_VECTOR XXH_AVX2 +# elif defined(__SSE2__) || defined(_M_AMD64) || defined(_M_X64) || (defined(_M_IX86_FP) && (_M_IX86_FP == 2)) +# define XXH_VECTOR XXH_SSE2 +# elif defined(__GNUC__) /* msvc support maybe later */ \ + && (defined(__ARM_NEON__) || defined(__ARM_NEON)) \ + && (defined(__LITTLE_ENDIAN__) /* We only support little endian NEON */ \ + || (defined(__BYTE_ORDER__) && __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__)) +# define XXH_VECTOR XXH_NEON +# elif (defined(__PPC64__) && defined(__POWER8_VECTOR__)) \ + || (defined(__s390x__) && defined(__VEC__)) \ + && defined(__GNUC__) /* TODO: IBM XL */ +# define XXH_VECTOR XXH_VSX +# else +# define XXH_VECTOR XXH_SCALAR +# endif +#endif + +/* + * Controls the alignment of the accumulator, + * for compatibility with aligned vector loads, which are usually faster. + */ +#ifndef XXH_ACC_ALIGN +# if defined(XXH_X86DISPATCH) +# define XXH_ACC_ALIGN 64 /* for compatibility with avx512 */ +# elif XXH_VECTOR == XXH_SCALAR /* scalar */ +# define XXH_ACC_ALIGN 8 +# elif XXH_VECTOR == XXH_SSE2 /* sse2 */ +# define XXH_ACC_ALIGN 16 +# elif XXH_VECTOR == XXH_AVX2 /* avx2 */ +# define XXH_ACC_ALIGN 32 +# elif XXH_VECTOR == XXH_NEON /* neon */ +# define XXH_ACC_ALIGN 16 +# elif XXH_VECTOR == XXH_VSX /* vsx */ +# define XXH_ACC_ALIGN 16 +# elif XXH_VECTOR == XXH_AVX512 /* avx512 */ +# define XXH_ACC_ALIGN 64 +# endif +#endif + +#if defined(XXH_X86DISPATCH) || XXH_VECTOR == XXH_SSE2 \ + || XXH_VECTOR == XXH_AVX2 || XXH_VECTOR == XXH_AVX512 +# define XXH_SEC_ALIGN XXH_ACC_ALIGN +#else +# define XXH_SEC_ALIGN 8 +#endif + +/* + * UGLY HACK: + * GCC usually generates the best code with -O3 for xxHash. + * + * However, when targeting AVX2, it is overzealous in its unrolling resulting + * in code roughly 3/4 the speed of Clang. + * + * There are other issues, such as GCC splitting _mm256_loadu_si256 into + * _mm_loadu_si128 + _mm256_inserti128_si256. This is an optimization which + * only applies to Sandy and Ivy Bridge... which don't even support AVX2. + * + * That is why when compiling the AVX2 version, it is recommended to use either + * -O2 -mavx2 -march=haswell + * or + * -O2 -mavx2 -mno-avx256-split-unaligned-load + * for decent performance, or to use Clang instead. + * + * Fortunately, we can control the first one with a pragma that forces GCC into + * -O2, but the other one we can't control without "failed to inline always + * inline function due to target mismatch" warnings. + */ +#if XXH_VECTOR == XXH_AVX2 /* AVX2 */ \ + && defined(__GNUC__) && !defined(__clang__) /* GCC, not Clang */ \ + && defined(__OPTIMIZE__) && !defined(__OPTIMIZE_SIZE__) /* respect -O0 and -Os */ +# pragma GCC push_options +# pragma GCC optimize("-O2") +#endif + + +#if XXH_VECTOR == XXH_NEON +/* + * NEON's setup for vmlal_u32 is a little more complicated than it is on + * SSE2, AVX2, and VSX. + * + * While PMULUDQ and VMULEUW both perform a mask, VMLAL.U32 performs an upcast. + * + * To do the same operation, the 128-bit 'Q' register needs to be split into + * two 64-bit 'D' registers, performing this operation:: + * + * [ a | b ] + * | '---------. .--------' | + * | x | + * | .---------' '--------. | + * [ a & 0xFFFFFFFF | b & 0xFFFFFFFF ],[ a >> 32 | b >> 32 ] + * + * Due to significant changes in aarch64, the fastest method for aarch64 is + * completely different than the fastest method for ARMv7-A. + * + * ARMv7-A treats D registers as unions overlaying Q registers, so modifying + * D11 will modify the high half of Q5. This is similar to how modifying AH + * will only affect bits 8-15 of AX on x86. + * + * VZIP takes two registers, and puts even lanes in one register and odd lanes + * in the other. + * + * On ARMv7-A, this strangely modifies both parameters in place instead of + * taking the usual 3-operand form. + * + * Therefore, if we want to do this, we can simply use a D-form VZIP.32 on the + * lower and upper halves of the Q register to end up with the high and low + * halves where we want - all in one instruction. + * + * vzip.32 d10, d11 @ d10 = { d10[0], d11[0] }; d11 = { d10[1], d11[1] } + * + * Unfortunately we need inline assembly for this: Instructions modifying two + * registers at once is not possible in GCC or Clang's IR, and they have to + * create a copy. + * + * aarch64 requires a different approach. + * + * In order to make it easier to write a decent compiler for aarch64, many + * quirks were removed, such as conditional execution. + * + * NEON was also affected by this. + * + * aarch64 cannot access the high bits of a Q-form register, and writes to a + * D-form register zero the high bits, similar to how writes to W-form scalar + * registers (or DWORD registers on x86_64) work. + * + * The formerly free vget_high intrinsics now require a vext (with a few + * exceptions) + * + * Additionally, VZIP was replaced by ZIP1 and ZIP2, which are the equivalent + * of PUNPCKL* and PUNPCKH* in SSE, respectively, in order to only modify one + * operand. + * + * The equivalent of the VZIP.32 on the lower and upper halves would be this + * mess: + * + * ext v2.4s, v0.4s, v0.4s, #2 // v2 = { v0[2], v0[3], v0[0], v0[1] } + * zip1 v1.2s, v0.2s, v2.2s // v1 = { v0[0], v2[0] } + * zip2 v0.2s, v0.2s, v1.2s // v0 = { v0[1], v2[1] } + * + * Instead, we use a literal downcast, vmovn_u64 (XTN), and vshrn_n_u64 (SHRN): + * + * shrn v1.2s, v0.2d, #32 // v1 = (uint32x2_t)(v0 >> 32); + * xtn v0.2s, v0.2d // v0 = (uint32x2_t)(v0 & 0xFFFFFFFF); + * + * This is available on ARMv7-A, but is less efficient than a single VZIP.32. + */ + +/*! + * Function-like macro: + * void XXH_SPLIT_IN_PLACE(uint64x2_t &in, uint32x2_t &outLo, uint32x2_t &outHi) + * { + * outLo = (uint32x2_t)(in & 0xFFFFFFFF); + * outHi = (uint32x2_t)(in >> 32); + * in = UNDEFINED; + * } + */ +# if !defined(XXH_NO_VZIP_HACK) /* define to disable */ \ + && defined(__GNUC__) \ + && !defined(__aarch64__) && !defined(__arm64__) +# define XXH_SPLIT_IN_PLACE(in, outLo, outHi) \ + do { \ + /* Undocumented GCC/Clang operand modifier: %e0 = lower D half, %f0 = upper D half */ \ + /* https://github.com/gcc-mirror/gcc/blob/38cf91e5/gcc/config/arm/arm.c#L22486 */ \ + /* https://github.com/llvm-mirror/llvm/blob/2c4ca683/lib/Target/ARM/ARMAsmPrinter.cpp#L399 */ \ + __asm__("vzip.32 %e0, %f0" : "+w" (in)); \ + (outLo) = vget_low_u32 (vreinterpretq_u32_u64(in)); \ + (outHi) = vget_high_u32(vreinterpretq_u32_u64(in)); \ + } while (0) +# else +# define XXH_SPLIT_IN_PLACE(in, outLo, outHi) \ + do { \ + (outLo) = vmovn_u64 (in); \ + (outHi) = vshrn_n_u64 ((in), 32); \ + } while (0) +# endif +#endif /* XXH_VECTOR == XXH_NEON */ + +/* + * VSX and Z Vector helpers. + * + * This is very messy, and any pull requests to clean this up are welcome. + * + * There are a lot of problems with supporting VSX and s390x, due to + * inconsistent intrinsics, spotty coverage, and multiple endiannesses. + */ +#if XXH_VECTOR == XXH_VSX +# if defined(__s390x__) +# include +# else +/* gcc's altivec.h can have the unwanted consequence to unconditionally + * #define bool, vector, and pixel keywords, + * with bad consequences for programs already using these keywords for other purposes. + * The paragraph defining these macros is skipped when __APPLE_ALTIVEC__ is defined. + * __APPLE_ALTIVEC__ is _generally_ defined automatically by the compiler, + * but it seems that, in some cases, it isn't. + * Force the build macro to be defined, so that keywords are not altered. + */ +# if defined(__GNUC__) && !defined(__APPLE_ALTIVEC__) +# define __APPLE_ALTIVEC__ +# endif +# include +# endif + +typedef __vector unsigned long long xxh_u64x2; +typedef __vector unsigned char xxh_u8x16; +typedef __vector unsigned xxh_u32x4; + +# ifndef XXH_VSX_BE +# if defined(__BIG_ENDIAN__) \ + || (defined(__BYTE_ORDER__) && __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__) +# define XXH_VSX_BE 1 +# elif defined(__VEC_ELEMENT_REG_ORDER__) && __VEC_ELEMENT_REG_ORDER__ == __ORDER_BIG_ENDIAN__ +# warning "-maltivec=be is not recommended. Please use native endianness." +# define XXH_VSX_BE 1 +# else +# define XXH_VSX_BE 0 +# endif +# endif /* !defined(XXH_VSX_BE) */ + +# if XXH_VSX_BE +# if defined(__POWER9_VECTOR__) || (defined(__clang__) && defined(__s390x__)) +# define XXH_vec_revb vec_revb +# else +/*! + * A polyfill for POWER9's vec_revb(). + */ +XXH_FORCE_INLINE xxh_u64x2 XXH_vec_revb(xxh_u64x2 val) +{ + xxh_u8x16 const vByteSwap = { 0x07, 0x06, 0x05, 0x04, 0x03, 0x02, 0x01, 0x00, + 0x0F, 0x0E, 0x0D, 0x0C, 0x0B, 0x0A, 0x09, 0x08 }; + return vec_perm(val, val, vByteSwap); +} +# endif +# endif /* XXH_VSX_BE */ + +/*! + * Performs an unaligned vector load and byte swaps it on big endian. + */ +XXH_FORCE_INLINE xxh_u64x2 XXH_vec_loadu(const void *ptr) +{ + xxh_u64x2 ret; + memcpy(&ret, ptr, sizeof(xxh_u64x2)); +# if XXH_VSX_BE + ret = XXH_vec_revb(ret); +# endif + return ret; +} + +/* + * vec_mulo and vec_mule are very problematic intrinsics on PowerPC + * + * These intrinsics weren't added until GCC 8, despite existing for a while, + * and they are endian dependent. Also, their meaning swap depending on version. + * */ +# if defined(__s390x__) + /* s390x is always big endian, no issue on this platform */ +# define XXH_vec_mulo vec_mulo +# define XXH_vec_mule vec_mule +# elif defined(__clang__) && XXH_HAS_BUILTIN(__builtin_altivec_vmuleuw) +/* Clang has a better way to control this, we can just use the builtin which doesn't swap. */ +# define XXH_vec_mulo __builtin_altivec_vmulouw +# define XXH_vec_mule __builtin_altivec_vmuleuw +# else +/* gcc needs inline assembly */ +/* Adapted from https://github.com/google/highwayhash/blob/master/highwayhash/hh_vsx.h. */ +XXH_FORCE_INLINE xxh_u64x2 XXH_vec_mulo(xxh_u32x4 a, xxh_u32x4 b) +{ + xxh_u64x2 result; + __asm__("vmulouw %0, %1, %2" : "=v" (result) : "v" (a), "v" (b)); + return result; +} +XXH_FORCE_INLINE xxh_u64x2 XXH_vec_mule(xxh_u32x4 a, xxh_u32x4 b) +{ + xxh_u64x2 result; + __asm__("vmuleuw %0, %1, %2" : "=v" (result) : "v" (a), "v" (b)); + return result; +} +# endif /* XXH_vec_mulo, XXH_vec_mule */ +#endif /* XXH_VECTOR == XXH_VSX */ + + +/* prefetch + * can be disabled, by declaring XXH_NO_PREFETCH build macro */ +#if defined(XXH_NO_PREFETCH) +# define XXH_PREFETCH(ptr) (void)(ptr) /* disabled */ +#else +# if defined(_MSC_VER) && (defined(_M_X64) || defined(_M_IX86)) /* _mm_prefetch() not defined outside of x86/x64 */ +# include /* https://msdn.microsoft.com/fr-fr/library/84szxsww(v=vs.90).aspx */ +# define XXH_PREFETCH(ptr) _mm_prefetch((const char*)(ptr), _MM_HINT_T0) +# elif defined(__GNUC__) && ( (__GNUC__ >= 4) || ( (__GNUC__ == 3) && (__GNUC_MINOR__ >= 1) ) ) +# define XXH_PREFETCH(ptr) __builtin_prefetch((ptr), 0 /* rw==read */, 3 /* locality */) +# else +# define XXH_PREFETCH(ptr) (void)(ptr) /* disabled */ +# endif +#endif /* XXH_NO_PREFETCH */ + + +/* ========================================== + * XXH3 default settings + * ========================================== */ + +#define XXH_SECRET_DEFAULT_SIZE 192 /* minimum XXH3_SECRET_SIZE_MIN */ + +#if (XXH_SECRET_DEFAULT_SIZE < XXH3_SECRET_SIZE_MIN) +# error "default keyset is not large enough" +#endif + +/*! Pseudorandom secret taken directly from FARSH. */ +XXH_ALIGN(64) static const xxh_u8 XXH3_kSecret[XXH_SECRET_DEFAULT_SIZE] = { + 0xb8, 0xfe, 0x6c, 0x39, 0x23, 0xa4, 0x4b, 0xbe, 0x7c, 0x01, 0x81, 0x2c, 0xf7, 0x21, 0xad, 0x1c, + 0xde, 0xd4, 0x6d, 0xe9, 0x83, 0x90, 0x97, 0xdb, 0x72, 0x40, 0xa4, 0xa4, 0xb7, 0xb3, 0x67, 0x1f, + 0xcb, 0x79, 0xe6, 0x4e, 0xcc, 0xc0, 0xe5, 0x78, 0x82, 0x5a, 0xd0, 0x7d, 0xcc, 0xff, 0x72, 0x21, + 0xb8, 0x08, 0x46, 0x74, 0xf7, 0x43, 0x24, 0x8e, 0xe0, 0x35, 0x90, 0xe6, 0x81, 0x3a, 0x26, 0x4c, + 0x3c, 0x28, 0x52, 0xbb, 0x91, 0xc3, 0x00, 0xcb, 0x88, 0xd0, 0x65, 0x8b, 0x1b, 0x53, 0x2e, 0xa3, + 0x71, 0x64, 0x48, 0x97, 0xa2, 0x0d, 0xf9, 0x4e, 0x38, 0x19, 0xef, 0x46, 0xa9, 0xde, 0xac, 0xd8, + 0xa8, 0xfa, 0x76, 0x3f, 0xe3, 0x9c, 0x34, 0x3f, 0xf9, 0xdc, 0xbb, 0xc7, 0xc7, 0x0b, 0x4f, 0x1d, + 0x8a, 0x51, 0xe0, 0x4b, 0xcd, 0xb4, 0x59, 0x31, 0xc8, 0x9f, 0x7e, 0xc9, 0xd9, 0x78, 0x73, 0x64, + 0xea, 0xc5, 0xac, 0x83, 0x34, 0xd3, 0xeb, 0xc3, 0xc5, 0x81, 0xa0, 0xff, 0xfa, 0x13, 0x63, 0xeb, + 0x17, 0x0d, 0xdd, 0x51, 0xb7, 0xf0, 0xda, 0x49, 0xd3, 0x16, 0x55, 0x26, 0x29, 0xd4, 0x68, 0x9e, + 0x2b, 0x16, 0xbe, 0x58, 0x7d, 0x47, 0xa1, 0xfc, 0x8f, 0xf8, 0xb8, 0xd1, 0x7a, 0xd0, 0x31, 0xce, + 0x45, 0xcb, 0x3a, 0x8f, 0x95, 0x16, 0x04, 0x28, 0xaf, 0xd7, 0xfb, 0xca, 0xbb, 0x4b, 0x40, 0x7e, +}; + + +#ifdef XXH_OLD_NAMES +# define kSecret XXH3_kSecret +#endif + +#ifdef XXH_DOXYGEN +/*! + * @brief Calculates a 32-bit to 64-bit long multiply. + * + * Implemented as a macro. + * + * Wraps `__emulu` on MSVC x86 because it tends to call `__allmul` when it doesn't + * need to (but it shouldn't need to anyways, it is about 7 instructions to do + * a 64x64 multiply...). Since we know that this will _always_ emit `MULL`, we + * use that instead of the normal method. + * + * If you are compiling for platforms like Thumb-1 and don't have a better option, + * you may also want to write your own long multiply routine here. + * + * @param x, y Numbers to be multiplied + * @return 64-bit product of the low 32 bits of @p x and @p y. + */ +XXH_FORCE_INLINE xxh_u64 +XXH_mult32to64(xxh_u64 x, xxh_u64 y) +{ + return (x & 0xFFFFFFFF) * (y & 0xFFFFFFFF); +} +#elif defined(_MSC_VER) && defined(_M_IX86) +# include +# define XXH_mult32to64(x, y) __emulu((unsigned)(x), (unsigned)(y)) +#else +/* + * Downcast + upcast is usually better than masking on older compilers like + * GCC 4.2 (especially 32-bit ones), all without affecting newer compilers. + * + * The other method, (x & 0xFFFFFFFF) * (y & 0xFFFFFFFF), will AND both operands + * and perform a full 64x64 multiply -- entirely redundant on 32-bit. + */ +# define XXH_mult32to64(x, y) ((xxh_u64)(xxh_u32)(x) * (xxh_u64)(xxh_u32)(y)) +#endif + +/*! + * @brief Calculates a 64->128-bit long multiply. + * + * Uses `__uint128_t` and `_umul128` if available, otherwise uses a scalar + * version. + * + * @param lhs, rhs The 64-bit integers to be multiplied + * @return The 128-bit result represented in an @ref XXH128_hash_t. + */ +static XXH128_hash_t +XXH_mult64to128(xxh_u64 lhs, xxh_u64 rhs) +{ + /* + * GCC/Clang __uint128_t method. + * + * On most 64-bit targets, GCC and Clang define a __uint128_t type. + * This is usually the best way as it usually uses a native long 64-bit + * multiply, such as MULQ on x86_64 or MUL + UMULH on aarch64. + * + * Usually. + * + * Despite being a 32-bit platform, Clang (and emscripten) define this type + * despite not having the arithmetic for it. This results in a laggy + * compiler builtin call which calculates a full 128-bit multiply. + * In that case it is best to use the portable one. + * https://github.com/Cyan4973/xxHash/issues/211#issuecomment-515575677 + */ +#if defined(__GNUC__) && !defined(__wasm__) \ + && defined(__SIZEOF_INT128__) \ + || (defined(_INTEGRAL_MAX_BITS) && _INTEGRAL_MAX_BITS >= 128) + + __uint128_t const product = (__uint128_t)lhs * (__uint128_t)rhs; + XXH128_hash_t r128; + r128.low64 = (xxh_u64)(product); + r128.high64 = (xxh_u64)(product >> 64); + return r128; + + /* + * MSVC for x64's _umul128 method. + * + * xxh_u64 _umul128(xxh_u64 Multiplier, xxh_u64 Multiplicand, xxh_u64 *HighProduct); + * + * This compiles to single operand MUL on x64. + */ +#elif defined(_M_X64) || defined(_M_IA64) + +#ifndef _MSC_VER +# pragma intrinsic(_umul128) +#endif + xxh_u64 product_high; + xxh_u64 const product_low = _umul128(lhs, rhs, &product_high); + XXH128_hash_t r128; + r128.low64 = product_low; + r128.high64 = product_high; + return r128; + +#else + /* + * Portable scalar method. Optimized for 32-bit and 64-bit ALUs. + * + * This is a fast and simple grade school multiply, which is shown below + * with base 10 arithmetic instead of base 0x100000000. + * + * 9 3 // D2 lhs = 93 + * x 7 5 // D2 rhs = 75 + * ---------- + * 1 5 // D2 lo_lo = (93 % 10) * (75 % 10) = 15 + * 4 5 | // D2 hi_lo = (93 / 10) * (75 % 10) = 45 + * 2 1 | // D2 lo_hi = (93 % 10) * (75 / 10) = 21 + * + 6 3 | | // D2 hi_hi = (93 / 10) * (75 / 10) = 63 + * --------- + * 2 7 | // D2 cross = (15 / 10) + (45 % 10) + 21 = 27 + * + 6 7 | | // D2 upper = (27 / 10) + (45 / 10) + 63 = 67 + * --------- + * 6 9 7 5 // D4 res = (27 * 10) + (15 % 10) + (67 * 100) = 6975 + * + * The reasons for adding the products like this are: + * 1. It avoids manual carry tracking. Just like how + * (9 * 9) + 9 + 9 = 99, the same applies with this for UINT64_MAX. + * This avoids a lot of complexity. + * + * 2. It hints for, and on Clang, compiles to, the powerful UMAAL + * instruction available in ARM's Digital Signal Processing extension + * in 32-bit ARMv6 and later, which is shown below: + * + * void UMAAL(xxh_u32 *RdLo, xxh_u32 *RdHi, xxh_u32 Rn, xxh_u32 Rm) + * { + * xxh_u64 product = (xxh_u64)*RdLo * (xxh_u64)*RdHi + Rn + Rm; + * *RdLo = (xxh_u32)(product & 0xFFFFFFFF); + * *RdHi = (xxh_u32)(product >> 32); + * } + * + * This instruction was designed for efficient long multiplication, and + * allows this to be calculated in only 4 instructions at speeds + * comparable to some 64-bit ALUs. + * + * 3. It isn't terrible on other platforms. Usually this will be a couple + * of 32-bit ADD/ADCs. + */ + + /* First calculate all of the cross products. */ + xxh_u64 const lo_lo = XXH_mult32to64(lhs & 0xFFFFFFFF, rhs & 0xFFFFFFFF); + xxh_u64 const hi_lo = XXH_mult32to64(lhs >> 32, rhs & 0xFFFFFFFF); + xxh_u64 const lo_hi = XXH_mult32to64(lhs & 0xFFFFFFFF, rhs >> 32); + xxh_u64 const hi_hi = XXH_mult32to64(lhs >> 32, rhs >> 32); + + /* Now add the products together. These will never overflow. */ + xxh_u64 const cross = (lo_lo >> 32) + (hi_lo & 0xFFFFFFFF) + lo_hi; + xxh_u64 const upper = (hi_lo >> 32) + (cross >> 32) + hi_hi; + xxh_u64 const lower = (cross << 32) | (lo_lo & 0xFFFFFFFF); + + XXH128_hash_t r128; + r128.low64 = lower; + r128.high64 = upper; + return r128; +#endif +} + +/*! + * @brief Calculates a 64-bit to 128-bit multiply, then XOR folds it. + * + * The reason for the separate function is to prevent passing too many structs + * around by value. This will hopefully inline the multiply, but we don't force it. + * + * @param lhs, rhs The 64-bit integers to multiply + * @return The low 64 bits of the product XOR'd by the high 64 bits. + * @see XXH_mult64to128() + */ +static xxh_u64 +XXH3_mul128_fold64(xxh_u64 lhs, xxh_u64 rhs) +{ + XXH128_hash_t product = XXH_mult64to128(lhs, rhs); + return product.low64 ^ product.high64; +} + +/*! Seems to produce slightly better code on GCC for some reason. */ +XXH_FORCE_INLINE xxh_u64 XXH_xorshift64(xxh_u64 v64, int shift) +{ + XXH_ASSERT(0 <= shift && shift < 64); + return v64 ^ (v64 >> shift); +} + +/* + * This is a fast avalanche stage, + * suitable when input bits are already partially mixed + */ +static XXH64_hash_t XXH3_avalanche(xxh_u64 h64) +{ + h64 = XXH_xorshift64(h64, 37); + h64 *= 0x165667919E3779F9ULL; + h64 = XXH_xorshift64(h64, 32); + return h64; +} + +/* + * This is a stronger avalanche, + * inspired by Pelle Evensen's rrmxmx + * preferable when input has not been previously mixed + */ +static XXH64_hash_t XXH3_rrmxmx(xxh_u64 h64, xxh_u64 len) +{ + /* this mix is inspired by Pelle Evensen's rrmxmx */ + h64 ^= XXH_rotl64(h64, 49) ^ XXH_rotl64(h64, 24); + h64 *= 0x9FB21C651E98DF25ULL; + h64 ^= (h64 >> 35) + len ; + h64 *= 0x9FB21C651E98DF25ULL; + return XXH_xorshift64(h64, 28); +} + + +/* ========================================== + * Short keys + * ========================================== + * One of the shortcomings of XXH32 and XXH64 was that their performance was + * sub-optimal on short lengths. It used an iterative algorithm which strongly + * favored lengths that were a multiple of 4 or 8. + * + * Instead of iterating over individual inputs, we use a set of single shot + * functions which piece together a range of lengths and operate in constant time. + * + * Additionally, the number of multiplies has been significantly reduced. This + * reduces latency, especially when emulating 64-bit multiplies on 32-bit. + * + * Depending on the platform, this may or may not be faster than XXH32, but it + * is almost guaranteed to be faster than XXH64. + */ + +/* + * At very short lengths, there isn't enough input to fully hide secrets, or use + * the entire secret. + * + * There is also only a limited amount of mixing we can do before significantly + * impacting performance. + * + * Therefore, we use different sections of the secret and always mix two secret + * samples with an XOR. This should have no effect on performance on the + * seedless or withSeed variants because everything _should_ be constant folded + * by modern compilers. + * + * The XOR mixing hides individual parts of the secret and increases entropy. + * + * This adds an extra layer of strength for custom secrets. + */ +XXH_FORCE_INLINE XXH64_hash_t +XXH3_len_1to3_64b(const xxh_u8* input, size_t len, const xxh_u8* secret, XXH64_hash_t seed) +{ + XXH_ASSERT(input != NULL); + XXH_ASSERT(1 <= len && len <= 3); + XXH_ASSERT(secret != NULL); + /* + * len = 1: combined = { input[0], 0x01, input[0], input[0] } + * len = 2: combined = { input[1], 0x02, input[0], input[1] } + * len = 3: combined = { input[2], 0x03, input[0], input[1] } + */ + { xxh_u8 const c1 = input[0]; + xxh_u8 const c2 = input[len >> 1]; + xxh_u8 const c3 = input[len - 1]; + xxh_u32 const combined = ((xxh_u32)c1 << 16) | ((xxh_u32)c2 << 24) + | ((xxh_u32)c3 << 0) | ((xxh_u32)len << 8); + xxh_u64 const bitflip = (XXH_readLE32(secret) ^ XXH_readLE32(secret+4)) + seed; + xxh_u64 const keyed = (xxh_u64)combined ^ bitflip; + return XXH64_avalanche(keyed); + } +} + +XXH_FORCE_INLINE XXH64_hash_t +XXH3_len_4to8_64b(const xxh_u8* input, size_t len, const xxh_u8* secret, XXH64_hash_t seed) +{ + XXH_ASSERT(input != NULL); + XXH_ASSERT(secret != NULL); + XXH_ASSERT(4 <= len && len < 8); + seed ^= (xxh_u64)XXH_swap32((xxh_u32)seed) << 32; + { xxh_u32 const input1 = XXH_readLE32(input); + xxh_u32 const input2 = XXH_readLE32(input + len - 4); + xxh_u64 const bitflip = (XXH_readLE64(secret+8) ^ XXH_readLE64(secret+16)) - seed; + xxh_u64 const input64 = input2 + (((xxh_u64)input1) << 32); + xxh_u64 const keyed = input64 ^ bitflip; + return XXH3_rrmxmx(keyed, len); + } +} + +XXH_FORCE_INLINE XXH64_hash_t +XXH3_len_9to16_64b(const xxh_u8* input, size_t len, const xxh_u8* secret, XXH64_hash_t seed) +{ + XXH_ASSERT(input != NULL); + XXH_ASSERT(secret != NULL); + XXH_ASSERT(8 <= len && len <= 16); + { xxh_u64 const bitflip1 = (XXH_readLE64(secret+24) ^ XXH_readLE64(secret+32)) + seed; + xxh_u64 const bitflip2 = (XXH_readLE64(secret+40) ^ XXH_readLE64(secret+48)) - seed; + xxh_u64 const input_lo = XXH_readLE64(input) ^ bitflip1; + xxh_u64 const input_hi = XXH_readLE64(input + len - 8) ^ bitflip2; + xxh_u64 const acc = len + + XXH_swap64(input_lo) + input_hi + + XXH3_mul128_fold64(input_lo, input_hi); + return XXH3_avalanche(acc); + } +} + +XXH_FORCE_INLINE XXH64_hash_t +XXH3_len_0to16_64b(const xxh_u8* input, size_t len, const xxh_u8* secret, XXH64_hash_t seed) +{ + XXH_ASSERT(len <= 16); + { if (XXH_likely(len > 8)) return XXH3_len_9to16_64b(input, len, secret, seed); + if (XXH_likely(len >= 4)) return XXH3_len_4to8_64b(input, len, secret, seed); + if (len) return XXH3_len_1to3_64b(input, len, secret, seed); + return XXH64_avalanche(seed ^ (XXH_readLE64(secret+56) ^ XXH_readLE64(secret+64))); + } +} + +/* + * DISCLAIMER: There are known *seed-dependent* multicollisions here due to + * multiplication by zero, affecting hashes of lengths 17 to 240. + * + * However, they are very unlikely. + * + * Keep this in mind when using the unseeded XXH3_64bits() variant: As with all + * unseeded non-cryptographic hashes, it does not attempt to defend itself + * against specially crafted inputs, only random inputs. + * + * Compared to classic UMAC where a 1 in 2^31 chance of 4 consecutive bytes + * cancelling out the secret is taken an arbitrary number of times (addressed + * in XXH3_accumulate_512), this collision is very unlikely with random inputs + * and/or proper seeding: + * + * This only has a 1 in 2^63 chance of 8 consecutive bytes cancelling out, in a + * function that is only called up to 16 times per hash with up to 240 bytes of + * input. + * + * This is not too bad for a non-cryptographic hash function, especially with + * only 64 bit outputs. + * + * The 128-bit variant (which trades some speed for strength) is NOT affected + * by this, although it is always a good idea to use a proper seed if you care + * about strength. + */ +XXH_FORCE_INLINE xxh_u64 XXH3_mix16B(const xxh_u8* XXH_RESTRICT input, + const xxh_u8* XXH_RESTRICT secret, xxh_u64 seed64) +{ +#if defined(__GNUC__) && !defined(__clang__) /* GCC, not Clang */ \ + && defined(__i386__) && defined(__SSE2__) /* x86 + SSE2 */ \ + && !defined(XXH_ENABLE_AUTOVECTORIZE) /* Define to disable like XXH32 hack */ + /* + * UGLY HACK: + * GCC for x86 tends to autovectorize the 128-bit multiply, resulting in + * slower code. + * + * By forcing seed64 into a register, we disrupt the cost model and + * cause it to scalarize. See `XXH32_round()` + * + * FIXME: Clang's output is still _much_ faster -- On an AMD Ryzen 3600, + * XXH3_64bits @ len=240 runs at 4.6 GB/s with Clang 9, but 3.3 GB/s on + * GCC 9.2, despite both emitting scalar code. + * + * GCC generates much better scalar code than Clang for the rest of XXH3, + * which is why finding a more optimal codepath is an interest. + */ + __asm__ ("" : "+r" (seed64)); +#endif + { xxh_u64 const input_lo = XXH_readLE64(input); + xxh_u64 const input_hi = XXH_readLE64(input+8); + return XXH3_mul128_fold64( + input_lo ^ (XXH_readLE64(secret) + seed64), + input_hi ^ (XXH_readLE64(secret+8) - seed64) + ); + } +} + +/* For mid range keys, XXH3 uses a Mum-hash variant. */ +XXH_FORCE_INLINE XXH64_hash_t +XXH3_len_17to128_64b(const xxh_u8* XXH_RESTRICT input, size_t len, + const xxh_u8* XXH_RESTRICT secret, size_t secretSize, + XXH64_hash_t seed) +{ + XXH_ASSERT(secretSize >= XXH3_SECRET_SIZE_MIN); (void)secretSize; + XXH_ASSERT(16 < len && len <= 128); + + { xxh_u64 acc = len * XXH_PRIME64_1; + if (len > 32) { + if (len > 64) { + if (len > 96) { + acc += XXH3_mix16B(input+48, secret+96, seed); + acc += XXH3_mix16B(input+len-64, secret+112, seed); + } + acc += XXH3_mix16B(input+32, secret+64, seed); + acc += XXH3_mix16B(input+len-48, secret+80, seed); + } + acc += XXH3_mix16B(input+16, secret+32, seed); + acc += XXH3_mix16B(input+len-32, secret+48, seed); + } + acc += XXH3_mix16B(input+0, secret+0, seed); + acc += XXH3_mix16B(input+len-16, secret+16, seed); + + return XXH3_avalanche(acc); + } +} + +#define XXH3_MIDSIZE_MAX 240 + +XXH_NO_INLINE XXH64_hash_t +XXH3_len_129to240_64b(const xxh_u8* XXH_RESTRICT input, size_t len, + const xxh_u8* XXH_RESTRICT secret, size_t secretSize, + XXH64_hash_t seed) +{ + XXH_ASSERT(secretSize >= XXH3_SECRET_SIZE_MIN); (void)secretSize; + XXH_ASSERT(128 < len && len <= XXH3_MIDSIZE_MAX); + + #define XXH3_MIDSIZE_STARTOFFSET 3 + #define XXH3_MIDSIZE_LASTOFFSET 17 + + { xxh_u64 acc = len * XXH_PRIME64_1; + int const nbRounds = (int)len / 16; + int i; + for (i=0; i<8; i++) { + acc += XXH3_mix16B(input+(16*i), secret+(16*i), seed); + } + acc = XXH3_avalanche(acc); + XXH_ASSERT(nbRounds >= 8); +#if defined(__clang__) /* Clang */ \ + && (defined(__ARM_NEON) || defined(__ARM_NEON__)) /* NEON */ \ + && !defined(XXH_ENABLE_AUTOVECTORIZE) /* Define to disable */ + /* + * UGLY HACK: + * Clang for ARMv7-A tries to vectorize this loop, similar to GCC x86. + * In everywhere else, it uses scalar code. + * + * For 64->128-bit multiplies, even if the NEON was 100% optimal, it + * would still be slower than UMAAL (see XXH_mult64to128). + * + * Unfortunately, Clang doesn't handle the long multiplies properly and + * converts them to the nonexistent "vmulq_u64" intrinsic, which is then + * scalarized into an ugly mess of VMOV.32 instructions. + * + * This mess is difficult to avoid without turning autovectorization + * off completely, but they are usually relatively minor and/or not + * worth it to fix. + * + * This loop is the easiest to fix, as unlike XXH32, this pragma + * _actually works_ because it is a loop vectorization instead of an + * SLP vectorization. + */ + #pragma clang loop vectorize(disable) +#endif + for (i=8 ; i < nbRounds; i++) { + acc += XXH3_mix16B(input+(16*i), secret+(16*(i-8)) + XXH3_MIDSIZE_STARTOFFSET, seed); + } + /* last bytes */ + acc += XXH3_mix16B(input + len - 16, secret + XXH3_SECRET_SIZE_MIN - XXH3_MIDSIZE_LASTOFFSET, seed); + return XXH3_avalanche(acc); + } +} + + +/* ======= Long Keys ======= */ + +#define XXH_STRIPE_LEN 64 +#define XXH_SECRET_CONSUME_RATE 8 /* nb of secret bytes consumed at each accumulation */ +#define XXH_ACC_NB (XXH_STRIPE_LEN / sizeof(xxh_u64)) + +#ifdef XXH_OLD_NAMES +# define STRIPE_LEN XXH_STRIPE_LEN +# define ACC_NB XXH_ACC_NB +#endif + +XXH_FORCE_INLINE void XXH_writeLE64(void* dst, xxh_u64 v64) +{ + if (!XXH_CPU_LITTLE_ENDIAN) v64 = XXH_swap64(v64); + memcpy(dst, &v64, sizeof(v64)); +} + +/* Several intrinsic functions below are supposed to accept __int64 as argument, + * as documented in https://software.intel.com/sites/landingpage/IntrinsicsGuide/ . + * However, several environments do not define __int64 type, + * requiring a workaround. + */ +#if !defined (__VMS) \ + && (defined (__cplusplus) \ + || (defined (__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L) /* C99 */) ) + typedef int64_t xxh_i64; +#else + /* the following type must have a width of 64-bit */ + typedef long long xxh_i64; +#endif + +/* + * XXH3_accumulate_512 is the tightest loop for long inputs, and it is the most optimized. + * + * It is a hardened version of UMAC, based off of FARSH's implementation. + * + * This was chosen because it adapts quite well to 32-bit, 64-bit, and SIMD + * implementations, and it is ridiculously fast. + * + * We harden it by mixing the original input to the accumulators as well as the product. + * + * This means that in the (relatively likely) case of a multiply by zero, the + * original input is preserved. + * + * On 128-bit inputs, we swap 64-bit pairs when we add the input to improve + * cross-pollination, as otherwise the upper and lower halves would be + * essentially independent. + * + * This doesn't matter on 64-bit hashes since they all get merged together in + * the end, so we skip the extra step. + * + * Both XXH3_64bits and XXH3_128bits use this subroutine. + */ + +#if (XXH_VECTOR == XXH_AVX512) \ + || (defined(XXH_DISPATCH_AVX512) && XXH_DISPATCH_AVX512 != 0) + +#ifndef XXH_TARGET_AVX512 +# define XXH_TARGET_AVX512 /* disable attribute target */ +#endif + +XXH_FORCE_INLINE XXH_TARGET_AVX512 void +XXH3_accumulate_512_avx512(void* XXH_RESTRICT acc, + const void* XXH_RESTRICT input, + const void* XXH_RESTRICT secret) +{ + XXH_ALIGN(64) __m512i* const xacc = (__m512i *) acc; + XXH_ASSERT((((size_t)acc) & 63) == 0); + XXH_STATIC_ASSERT(XXH_STRIPE_LEN == sizeof(__m512i)); + + { + /* data_vec = input[0]; */ + __m512i const data_vec = _mm512_loadu_si512 (input); + /* key_vec = secret[0]; */ + __m512i const key_vec = _mm512_loadu_si512 (secret); + /* data_key = data_vec ^ key_vec; */ + __m512i const data_key = _mm512_xor_si512 (data_vec, key_vec); + /* data_key_lo = data_key >> 32; */ + __m512i const data_key_lo = _mm512_shuffle_epi32 (data_key, (_MM_PERM_ENUM)_MM_SHUFFLE(0, 3, 0, 1)); + /* product = (data_key & 0xffffffff) * (data_key_lo & 0xffffffff); */ + __m512i const product = _mm512_mul_epu32 (data_key, data_key_lo); + /* xacc[0] += swap(data_vec); */ + __m512i const data_swap = _mm512_shuffle_epi32(data_vec, (_MM_PERM_ENUM)_MM_SHUFFLE(1, 0, 3, 2)); + __m512i const sum = _mm512_add_epi64(*xacc, data_swap); + /* xacc[0] += product; */ + *xacc = _mm512_add_epi64(product, sum); + } +} + +/* + * XXH3_scrambleAcc: Scrambles the accumulators to improve mixing. + * + * Multiplication isn't perfect, as explained by Google in HighwayHash: + * + * // Multiplication mixes/scrambles bytes 0-7 of the 64-bit result to + * // varying degrees. In descending order of goodness, bytes + * // 3 4 2 5 1 6 0 7 have quality 228 224 164 160 100 96 36 32. + * // As expected, the upper and lower bytes are much worse. + * + * Source: https://github.com/google/highwayhash/blob/0aaf66b/highwayhash/hh_avx2.h#L291 + * + * Since our algorithm uses a pseudorandom secret to add some variance into the + * mix, we don't need to (or want to) mix as often or as much as HighwayHash does. + * + * This isn't as tight as XXH3_accumulate, but still written in SIMD to avoid + * extraction. + * + * Both XXH3_64bits and XXH3_128bits use this subroutine. + */ + +XXH_FORCE_INLINE XXH_TARGET_AVX512 void +XXH3_scrambleAcc_avx512(void* XXH_RESTRICT acc, const void* XXH_RESTRICT secret) +{ + XXH_ASSERT((((size_t)acc) & 63) == 0); + XXH_STATIC_ASSERT(XXH_STRIPE_LEN == sizeof(__m512i)); + { XXH_ALIGN(64) __m512i* const xacc = (__m512i*) acc; + const __m512i prime32 = _mm512_set1_epi32((int)XXH_PRIME32_1); + + /* xacc[0] ^= (xacc[0] >> 47) */ + __m512i const acc_vec = *xacc; + __m512i const shifted = _mm512_srli_epi64 (acc_vec, 47); + __m512i const data_vec = _mm512_xor_si512 (acc_vec, shifted); + /* xacc[0] ^= secret; */ + __m512i const key_vec = _mm512_loadu_si512 (secret); + __m512i const data_key = _mm512_xor_si512 (data_vec, key_vec); + + /* xacc[0] *= XXH_PRIME32_1; */ + __m512i const data_key_hi = _mm512_shuffle_epi32 (data_key, (_MM_PERM_ENUM)_MM_SHUFFLE(0, 3, 0, 1)); + __m512i const prod_lo = _mm512_mul_epu32 (data_key, prime32); + __m512i const prod_hi = _mm512_mul_epu32 (data_key_hi, prime32); + *xacc = _mm512_add_epi64(prod_lo, _mm512_slli_epi64(prod_hi, 32)); + } +} + +XXH_FORCE_INLINE XXH_TARGET_AVX512 void +XXH3_initCustomSecret_avx512(void* XXH_RESTRICT customSecret, xxh_u64 seed64) +{ + XXH_STATIC_ASSERT((XXH_SECRET_DEFAULT_SIZE & 63) == 0); + XXH_STATIC_ASSERT(XXH_SEC_ALIGN == 64); + XXH_ASSERT(((size_t)customSecret & 63) == 0); + (void)(&XXH_writeLE64); + { int const nbRounds = XXH_SECRET_DEFAULT_SIZE / sizeof(__m512i); + __m512i const seed = _mm512_mask_set1_epi64(_mm512_set1_epi64((xxh_i64)seed64), 0xAA, -(xxh_i64)seed64); + + XXH_ALIGN(64) const __m512i* const src = (const __m512i*) XXH3_kSecret; + XXH_ALIGN(64) __m512i* const dest = ( __m512i*) customSecret; + int i; + for (i=0; i < nbRounds; ++i) { + /* GCC has a bug, _mm512_stream_load_si512 accepts 'void*', not 'void const*', + * this will warn "discards ‘const’ qualifier". */ + union { + XXH_ALIGN(64) const __m512i* cp; + XXH_ALIGN(64) void* p; + } remote_const_void; + remote_const_void.cp = src + i; + dest[i] = _mm512_add_epi64(_mm512_stream_load_si512(remote_const_void.p), seed); + } } +} + +#endif + +#if (XXH_VECTOR == XXH_AVX2) \ + || (defined(XXH_DISPATCH_AVX2) && XXH_DISPATCH_AVX2 != 0) + +#ifndef XXH_TARGET_AVX2 +# define XXH_TARGET_AVX2 /* disable attribute target */ +#endif + +XXH_FORCE_INLINE XXH_TARGET_AVX2 void +XXH3_accumulate_512_avx2( void* XXH_RESTRICT acc, + const void* XXH_RESTRICT input, + const void* XXH_RESTRICT secret) +{ + XXH_ASSERT((((size_t)acc) & 31) == 0); + { XXH_ALIGN(32) __m256i* const xacc = (__m256i *) acc; + /* Unaligned. This is mainly for pointer arithmetic, and because + * _mm256_loadu_si256 requires a const __m256i * pointer for some reason. */ + const __m256i* const xinput = (const __m256i *) input; + /* Unaligned. This is mainly for pointer arithmetic, and because + * _mm256_loadu_si256 requires a const __m256i * pointer for some reason. */ + const __m256i* const xsecret = (const __m256i *) secret; + + size_t i; + for (i=0; i < XXH_STRIPE_LEN/sizeof(__m256i); i++) { + /* data_vec = xinput[i]; */ + __m256i const data_vec = _mm256_loadu_si256 (xinput+i); + /* key_vec = xsecret[i]; */ + __m256i const key_vec = _mm256_loadu_si256 (xsecret+i); + /* data_key = data_vec ^ key_vec; */ + __m256i const data_key = _mm256_xor_si256 (data_vec, key_vec); + /* data_key_lo = data_key >> 32; */ + __m256i const data_key_lo = _mm256_shuffle_epi32 (data_key, _MM_SHUFFLE(0, 3, 0, 1)); + /* product = (data_key & 0xffffffff) * (data_key_lo & 0xffffffff); */ + __m256i const product = _mm256_mul_epu32 (data_key, data_key_lo); + /* xacc[i] += swap(data_vec); */ + __m256i const data_swap = _mm256_shuffle_epi32(data_vec, _MM_SHUFFLE(1, 0, 3, 2)); + __m256i const sum = _mm256_add_epi64(xacc[i], data_swap); + /* xacc[i] += product; */ + xacc[i] = _mm256_add_epi64(product, sum); + } } +} + +XXH_FORCE_INLINE XXH_TARGET_AVX2 void +XXH3_scrambleAcc_avx2(void* XXH_RESTRICT acc, const void* XXH_RESTRICT secret) +{ + XXH_ASSERT((((size_t)acc) & 31) == 0); + { XXH_ALIGN(32) __m256i* const xacc = (__m256i*) acc; + /* Unaligned. This is mainly for pointer arithmetic, and because + * _mm256_loadu_si256 requires a const __m256i * pointer for some reason. */ + const __m256i* const xsecret = (const __m256i *) secret; + const __m256i prime32 = _mm256_set1_epi32((int)XXH_PRIME32_1); + + size_t i; + for (i=0; i < XXH_STRIPE_LEN/sizeof(__m256i); i++) { + /* xacc[i] ^= (xacc[i] >> 47) */ + __m256i const acc_vec = xacc[i]; + __m256i const shifted = _mm256_srli_epi64 (acc_vec, 47); + __m256i const data_vec = _mm256_xor_si256 (acc_vec, shifted); + /* xacc[i] ^= xsecret; */ + __m256i const key_vec = _mm256_loadu_si256 (xsecret+i); + __m256i const data_key = _mm256_xor_si256 (data_vec, key_vec); + + /* xacc[i] *= XXH_PRIME32_1; */ + __m256i const data_key_hi = _mm256_shuffle_epi32 (data_key, _MM_SHUFFLE(0, 3, 0, 1)); + __m256i const prod_lo = _mm256_mul_epu32 (data_key, prime32); + __m256i const prod_hi = _mm256_mul_epu32 (data_key_hi, prime32); + xacc[i] = _mm256_add_epi64(prod_lo, _mm256_slli_epi64(prod_hi, 32)); + } + } +} + +XXH_FORCE_INLINE XXH_TARGET_AVX2 void XXH3_initCustomSecret_avx2(void* XXH_RESTRICT customSecret, xxh_u64 seed64) +{ + XXH_STATIC_ASSERT((XXH_SECRET_DEFAULT_SIZE & 31) == 0); + XXH_STATIC_ASSERT((XXH_SECRET_DEFAULT_SIZE / sizeof(__m256i)) == 6); + XXH_STATIC_ASSERT(XXH_SEC_ALIGN <= 64); + (void)(&XXH_writeLE64); + XXH_PREFETCH(customSecret); + { __m256i const seed = _mm256_set_epi64x(-(xxh_i64)seed64, (xxh_i64)seed64, -(xxh_i64)seed64, (xxh_i64)seed64); + + XXH_ALIGN(64) const __m256i* const src = (const __m256i*) XXH3_kSecret; + XXH_ALIGN(64) __m256i* dest = ( __m256i*) customSecret; + +# if defined(__GNUC__) || defined(__clang__) + /* + * On GCC & Clang, marking 'dest' as modified will cause the compiler: + * - do not extract the secret from sse registers in the internal loop + * - use less common registers, and avoid pushing these reg into stack + * The asm hack causes Clang to assume that XXH3_kSecretPtr aliases with + * customSecret, and on aarch64, this prevented LDP from merging two + * loads together for free. Putting the loads together before the stores + * properly generates LDP. + */ + __asm__("" : "+r" (dest)); +# endif + + /* GCC -O2 need unroll loop manually */ + dest[0] = _mm256_add_epi64(_mm256_stream_load_si256(src+0), seed); + dest[1] = _mm256_add_epi64(_mm256_stream_load_si256(src+1), seed); + dest[2] = _mm256_add_epi64(_mm256_stream_load_si256(src+2), seed); + dest[3] = _mm256_add_epi64(_mm256_stream_load_si256(src+3), seed); + dest[4] = _mm256_add_epi64(_mm256_stream_load_si256(src+4), seed); + dest[5] = _mm256_add_epi64(_mm256_stream_load_si256(src+5), seed); + } +} + +#endif + +/* x86dispatch always generates SSE2 */ +#if (XXH_VECTOR == XXH_SSE2) || defined(XXH_X86DISPATCH) + +#ifndef XXH_TARGET_SSE2 +# define XXH_TARGET_SSE2 /* disable attribute target */ +#endif + +XXH_FORCE_INLINE XXH_TARGET_SSE2 void +XXH3_accumulate_512_sse2( void* XXH_RESTRICT acc, + const void* XXH_RESTRICT input, + const void* XXH_RESTRICT secret) +{ + /* SSE2 is just a half-scale version of the AVX2 version. */ + XXH_ASSERT((((size_t)acc) & 15) == 0); + { XXH_ALIGN(16) __m128i* const xacc = (__m128i *) acc; + /* Unaligned. This is mainly for pointer arithmetic, and because + * _mm_loadu_si128 requires a const __m128i * pointer for some reason. */ + const __m128i* const xinput = (const __m128i *) input; + /* Unaligned. This is mainly for pointer arithmetic, and because + * _mm_loadu_si128 requires a const __m128i * pointer for some reason. */ + const __m128i* const xsecret = (const __m128i *) secret; + + size_t i; + for (i=0; i < XXH_STRIPE_LEN/sizeof(__m128i); i++) { + /* data_vec = xinput[i]; */ + __m128i const data_vec = _mm_loadu_si128 (xinput+i); + /* key_vec = xsecret[i]; */ + __m128i const key_vec = _mm_loadu_si128 (xsecret+i); + /* data_key = data_vec ^ key_vec; */ + __m128i const data_key = _mm_xor_si128 (data_vec, key_vec); + /* data_key_lo = data_key >> 32; */ + __m128i const data_key_lo = _mm_shuffle_epi32 (data_key, _MM_SHUFFLE(0, 3, 0, 1)); + /* product = (data_key & 0xffffffff) * (data_key_lo & 0xffffffff); */ + __m128i const product = _mm_mul_epu32 (data_key, data_key_lo); + /* xacc[i] += swap(data_vec); */ + __m128i const data_swap = _mm_shuffle_epi32(data_vec, _MM_SHUFFLE(1,0,3,2)); + __m128i const sum = _mm_add_epi64(xacc[i], data_swap); + /* xacc[i] += product; */ + xacc[i] = _mm_add_epi64(product, sum); + } } +} + +XXH_FORCE_INLINE XXH_TARGET_SSE2 void +XXH3_scrambleAcc_sse2(void* XXH_RESTRICT acc, const void* XXH_RESTRICT secret) +{ + XXH_ASSERT((((size_t)acc) & 15) == 0); + { XXH_ALIGN(16) __m128i* const xacc = (__m128i*) acc; + /* Unaligned. This is mainly for pointer arithmetic, and because + * _mm_loadu_si128 requires a const __m128i * pointer for some reason. */ + const __m128i* const xsecret = (const __m128i *) secret; + const __m128i prime32 = _mm_set1_epi32((int)XXH_PRIME32_1); + + size_t i; + for (i=0; i < XXH_STRIPE_LEN/sizeof(__m128i); i++) { + /* xacc[i] ^= (xacc[i] >> 47) */ + __m128i const acc_vec = xacc[i]; + __m128i const shifted = _mm_srli_epi64 (acc_vec, 47); + __m128i const data_vec = _mm_xor_si128 (acc_vec, shifted); + /* xacc[i] ^= xsecret[i]; */ + __m128i const key_vec = _mm_loadu_si128 (xsecret+i); + __m128i const data_key = _mm_xor_si128 (data_vec, key_vec); + + /* xacc[i] *= XXH_PRIME32_1; */ + __m128i const data_key_hi = _mm_shuffle_epi32 (data_key, _MM_SHUFFLE(0, 3, 0, 1)); + __m128i const prod_lo = _mm_mul_epu32 (data_key, prime32); + __m128i const prod_hi = _mm_mul_epu32 (data_key_hi, prime32); + xacc[i] = _mm_add_epi64(prod_lo, _mm_slli_epi64(prod_hi, 32)); + } + } +} + +XXH_FORCE_INLINE XXH_TARGET_SSE2 void XXH3_initCustomSecret_sse2(void* XXH_RESTRICT customSecret, xxh_u64 seed64) +{ + XXH_STATIC_ASSERT((XXH_SECRET_DEFAULT_SIZE & 15) == 0); + (void)(&XXH_writeLE64); + { int const nbRounds = XXH_SECRET_DEFAULT_SIZE / sizeof(__m128i); + +# if defined(_MSC_VER) && defined(_M_IX86) && _MSC_VER < 1900 + // MSVC 32bit mode does not support _mm_set_epi64x before 2015 + XXH_ALIGN(16) const xxh_i64 seed64x2[2] = { (xxh_i64)seed64, -(xxh_i64)seed64 }; + __m128i const seed = _mm_load_si128((__m128i const*)seed64x2); +# else + __m128i const seed = _mm_set_epi64x(-(xxh_i64)seed64, (xxh_i64)seed64); +# endif + int i; + + XXH_ALIGN(64) const float* const src = (float const*) XXH3_kSecret; + XXH_ALIGN(XXH_SEC_ALIGN) __m128i* dest = (__m128i*) customSecret; +# if defined(__GNUC__) || defined(__clang__) + /* + * On GCC & Clang, marking 'dest' as modified will cause the compiler: + * - do not extract the secret from sse registers in the internal loop + * - use less common registers, and avoid pushing these reg into stack + */ + __asm__("" : "+r" (dest)); +# endif + + for (i=0; i < nbRounds; ++i) { + dest[i] = _mm_add_epi64(_mm_castps_si128(_mm_load_ps(src+i*4)), seed); + } } +} + +#endif + +#if (XXH_VECTOR == XXH_NEON) + +XXH_FORCE_INLINE void +XXH3_accumulate_512_neon( void* XXH_RESTRICT acc, + const void* XXH_RESTRICT input, + const void* XXH_RESTRICT secret) +{ + XXH_ASSERT((((size_t)acc) & 15) == 0); + { + XXH_ALIGN(16) uint64x2_t* const xacc = (uint64x2_t *) acc; + /* We don't use a uint32x4_t pointer because it causes bus errors on ARMv7. */ + uint8_t const* const xinput = (const uint8_t *) input; + uint8_t const* const xsecret = (const uint8_t *) secret; + + size_t i; + for (i=0; i < XXH_STRIPE_LEN / sizeof(uint64x2_t); i++) { + /* data_vec = xinput[i]; */ + uint8x16_t data_vec = vld1q_u8(xinput + (i * 16)); + /* key_vec = xsecret[i]; */ + uint8x16_t key_vec = vld1q_u8(xsecret + (i * 16)); + uint64x2_t data_key; + uint32x2_t data_key_lo, data_key_hi; + /* xacc[i] += swap(data_vec); */ + uint64x2_t const data64 = vreinterpretq_u64_u8(data_vec); + uint64x2_t const swapped = vextq_u64(data64, data64, 1); + xacc[i] = vaddq_u64 (xacc[i], swapped); + /* data_key = data_vec ^ key_vec; */ + data_key = vreinterpretq_u64_u8(veorq_u8(data_vec, key_vec)); + /* data_key_lo = (uint32x2_t) (data_key & 0xFFFFFFFF); + * data_key_hi = (uint32x2_t) (data_key >> 32); + * data_key = UNDEFINED; */ + XXH_SPLIT_IN_PLACE(data_key, data_key_lo, data_key_hi); + /* xacc[i] += (uint64x2_t) data_key_lo * (uint64x2_t) data_key_hi; */ + xacc[i] = vmlal_u32 (xacc[i], data_key_lo, data_key_hi); + + } + } +} + +XXH_FORCE_INLINE void +XXH3_scrambleAcc_neon(void* XXH_RESTRICT acc, const void* XXH_RESTRICT secret) +{ + XXH_ASSERT((((size_t)acc) & 15) == 0); + + { uint64x2_t* xacc = (uint64x2_t*) acc; + uint8_t const* xsecret = (uint8_t const*) secret; + uint32x2_t prime = vdup_n_u32 (XXH_PRIME32_1); + + size_t i; + for (i=0; i < XXH_STRIPE_LEN/sizeof(uint64x2_t); i++) { + /* xacc[i] ^= (xacc[i] >> 47); */ + uint64x2_t acc_vec = xacc[i]; + uint64x2_t shifted = vshrq_n_u64 (acc_vec, 47); + uint64x2_t data_vec = veorq_u64 (acc_vec, shifted); + + /* xacc[i] ^= xsecret[i]; */ + uint8x16_t key_vec = vld1q_u8(xsecret + (i * 16)); + uint64x2_t data_key = veorq_u64(data_vec, vreinterpretq_u64_u8(key_vec)); + + /* xacc[i] *= XXH_PRIME32_1 */ + uint32x2_t data_key_lo, data_key_hi; + /* data_key_lo = (uint32x2_t) (xacc[i] & 0xFFFFFFFF); + * data_key_hi = (uint32x2_t) (xacc[i] >> 32); + * xacc[i] = UNDEFINED; */ + XXH_SPLIT_IN_PLACE(data_key, data_key_lo, data_key_hi); + { /* + * prod_hi = (data_key >> 32) * XXH_PRIME32_1; + * + * Avoid vmul_u32 + vshll_n_u32 since Clang 6 and 7 will + * incorrectly "optimize" this: + * tmp = vmul_u32(vmovn_u64(a), vmovn_u64(b)); + * shifted = vshll_n_u32(tmp, 32); + * to this: + * tmp = "vmulq_u64"(a, b); // no such thing! + * shifted = vshlq_n_u64(tmp, 32); + * + * However, unlike SSE, Clang lacks a 64-bit multiply routine + * for NEON, and it scalarizes two 64-bit multiplies instead. + * + * vmull_u32 has the same timing as vmul_u32, and it avoids + * this bug completely. + * See https://bugs.llvm.org/show_bug.cgi?id=39967 + */ + uint64x2_t prod_hi = vmull_u32 (data_key_hi, prime); + /* xacc[i] = prod_hi << 32; */ + xacc[i] = vshlq_n_u64(prod_hi, 32); + /* xacc[i] += (prod_hi & 0xFFFFFFFF) * XXH_PRIME32_1; */ + xacc[i] = vmlal_u32(xacc[i], data_key_lo, prime); + } + } } +} + +#endif + +#if (XXH_VECTOR == XXH_VSX) + +XXH_FORCE_INLINE void +XXH3_accumulate_512_vsx( void* XXH_RESTRICT acc, + const void* XXH_RESTRICT input, + const void* XXH_RESTRICT secret) +{ + xxh_u64x2* const xacc = (xxh_u64x2*) acc; /* presumed aligned */ + xxh_u64x2 const* const xinput = (xxh_u64x2 const*) input; /* no alignment restriction */ + xxh_u64x2 const* const xsecret = (xxh_u64x2 const*) secret; /* no alignment restriction */ + xxh_u64x2 const v32 = { 32, 32 }; + size_t i; + for (i = 0; i < XXH_STRIPE_LEN / sizeof(xxh_u64x2); i++) { + /* data_vec = xinput[i]; */ + xxh_u64x2 const data_vec = XXH_vec_loadu(xinput + i); + /* key_vec = xsecret[i]; */ + xxh_u64x2 const key_vec = XXH_vec_loadu(xsecret + i); + xxh_u64x2 const data_key = data_vec ^ key_vec; + /* shuffled = (data_key << 32) | (data_key >> 32); */ + xxh_u32x4 const shuffled = (xxh_u32x4)vec_rl(data_key, v32); + /* product = ((xxh_u64x2)data_key & 0xFFFFFFFF) * ((xxh_u64x2)shuffled & 0xFFFFFFFF); */ + xxh_u64x2 const product = XXH_vec_mulo((xxh_u32x4)data_key, shuffled); + xacc[i] += product; + + /* swap high and low halves */ +#ifdef __s390x__ + xacc[i] += vec_permi(data_vec, data_vec, 2); +#else + xacc[i] += vec_xxpermdi(data_vec, data_vec, 2); +#endif + } +} + +XXH_FORCE_INLINE void +XXH3_scrambleAcc_vsx(void* XXH_RESTRICT acc, const void* XXH_RESTRICT secret) +{ + XXH_ASSERT((((size_t)acc) & 15) == 0); + + { xxh_u64x2* const xacc = (xxh_u64x2*) acc; + const xxh_u64x2* const xsecret = (const xxh_u64x2*) secret; + /* constants */ + xxh_u64x2 const v32 = { 32, 32 }; + xxh_u64x2 const v47 = { 47, 47 }; + xxh_u32x4 const prime = { XXH_PRIME32_1, XXH_PRIME32_1, XXH_PRIME32_1, XXH_PRIME32_1 }; + size_t i; + for (i = 0; i < XXH_STRIPE_LEN / sizeof(xxh_u64x2); i++) { + /* xacc[i] ^= (xacc[i] >> 47); */ + xxh_u64x2 const acc_vec = xacc[i]; + xxh_u64x2 const data_vec = acc_vec ^ (acc_vec >> v47); + + /* xacc[i] ^= xsecret[i]; */ + xxh_u64x2 const key_vec = XXH_vec_loadu(xsecret + i); + xxh_u64x2 const data_key = data_vec ^ key_vec; + + /* xacc[i] *= XXH_PRIME32_1 */ + /* prod_lo = ((xxh_u64x2)data_key & 0xFFFFFFFF) * ((xxh_u64x2)prime & 0xFFFFFFFF); */ + xxh_u64x2 const prod_even = XXH_vec_mule((xxh_u32x4)data_key, prime); + /* prod_hi = ((xxh_u64x2)data_key >> 32) * ((xxh_u64x2)prime >> 32); */ + xxh_u64x2 const prod_odd = XXH_vec_mulo((xxh_u32x4)data_key, prime); + xacc[i] = prod_odd + (prod_even << v32); + } } +} + +#endif + +/* scalar variants - universal */ + +XXH_FORCE_INLINE void +XXH3_accumulate_512_scalar(void* XXH_RESTRICT acc, + const void* XXH_RESTRICT input, + const void* XXH_RESTRICT secret) +{ + XXH_ALIGN(XXH_ACC_ALIGN) xxh_u64* const xacc = (xxh_u64*) acc; /* presumed aligned */ + const xxh_u8* const xinput = (const xxh_u8*) input; /* no alignment restriction */ + const xxh_u8* const xsecret = (const xxh_u8*) secret; /* no alignment restriction */ + size_t i; + XXH_ASSERT(((size_t)acc & (XXH_ACC_ALIGN-1)) == 0); + for (i=0; i < XXH_ACC_NB; i++) { + xxh_u64 const data_val = XXH_readLE64(xinput + 8*i); + xxh_u64 const data_key = data_val ^ XXH_readLE64(xsecret + i*8); + xacc[i ^ 1] += data_val; /* swap adjacent lanes */ + xacc[i] += XXH_mult32to64(data_key & 0xFFFFFFFF, data_key >> 32); + } +} + +XXH_FORCE_INLINE void +XXH3_scrambleAcc_scalar(void* XXH_RESTRICT acc, const void* XXH_RESTRICT secret) +{ + XXH_ALIGN(XXH_ACC_ALIGN) xxh_u64* const xacc = (xxh_u64*) acc; /* presumed aligned */ + const xxh_u8* const xsecret = (const xxh_u8*) secret; /* no alignment restriction */ + size_t i; + XXH_ASSERT((((size_t)acc) & (XXH_ACC_ALIGN-1)) == 0); + for (i=0; i < XXH_ACC_NB; i++) { + xxh_u64 const key64 = XXH_readLE64(xsecret + 8*i); + xxh_u64 acc64 = xacc[i]; + acc64 = XXH_xorshift64(acc64, 47); + acc64 ^= key64; + acc64 *= XXH_PRIME32_1; + xacc[i] = acc64; + } +} + +XXH_FORCE_INLINE void +XXH3_initCustomSecret_scalar(void* XXH_RESTRICT customSecret, xxh_u64 seed64) +{ + /* + * We need a separate pointer for the hack below, + * which requires a non-const pointer. + * Any decent compiler will optimize this out otherwise. + */ + const xxh_u8* kSecretPtr = XXH3_kSecret; + XXH_STATIC_ASSERT((XXH_SECRET_DEFAULT_SIZE & 15) == 0); + +#if defined(__clang__) && defined(__aarch64__) + /* + * UGLY HACK: + * Clang generates a bunch of MOV/MOVK pairs for aarch64, and they are + * placed sequentially, in order, at the top of the unrolled loop. + * + * While MOVK is great for generating constants (2 cycles for a 64-bit + * constant compared to 4 cycles for LDR), long MOVK chains stall the + * integer pipelines: + * I L S + * MOVK + * MOVK + * MOVK + * MOVK + * ADD + * SUB STR + * STR + * By forcing loads from memory (as the asm line causes Clang to assume + * that XXH3_kSecretPtr has been changed), the pipelines are used more + * efficiently: + * I L S + * LDR + * ADD LDR + * SUB STR + * STR + * XXH3_64bits_withSeed, len == 256, Snapdragon 835 + * without hack: 2654.4 MB/s + * with hack: 3202.9 MB/s + */ + __asm__("" : "+r" (kSecretPtr)); +#endif + /* + * Note: in debug mode, this overrides the asm optimization + * and Clang will emit MOVK chains again. + */ + XXH_ASSERT(kSecretPtr == XXH3_kSecret); + + { int const nbRounds = XXH_SECRET_DEFAULT_SIZE / 16; + int i; + for (i=0; i < nbRounds; i++) { + /* + * The asm hack causes Clang to assume that kSecretPtr aliases with + * customSecret, and on aarch64, this prevented LDP from merging two + * loads together for free. Putting the loads together before the stores + * properly generates LDP. + */ + xxh_u64 lo = XXH_readLE64(kSecretPtr + 16*i) + seed64; + xxh_u64 hi = XXH_readLE64(kSecretPtr + 16*i + 8) - seed64; + XXH_writeLE64((xxh_u8*)customSecret + 16*i, lo); + XXH_writeLE64((xxh_u8*)customSecret + 16*i + 8, hi); + } } +} + + +typedef void (*XXH3_f_accumulate_512)(void* XXH_RESTRICT, const void*, const void*); +typedef void (*XXH3_f_scrambleAcc)(void* XXH_RESTRICT, const void*); +typedef void (*XXH3_f_initCustomSecret)(void* XXH_RESTRICT, xxh_u64); + + +#if (XXH_VECTOR == XXH_AVX512) + +#define XXH3_accumulate_512 XXH3_accumulate_512_avx512 +#define XXH3_scrambleAcc XXH3_scrambleAcc_avx512 +#define XXH3_initCustomSecret XXH3_initCustomSecret_avx512 + +#elif (XXH_VECTOR == XXH_AVX2) + +#define XXH3_accumulate_512 XXH3_accumulate_512_avx2 +#define XXH3_scrambleAcc XXH3_scrambleAcc_avx2 +#define XXH3_initCustomSecret XXH3_initCustomSecret_avx2 + +#elif (XXH_VECTOR == XXH_SSE2) + +#define XXH3_accumulate_512 XXH3_accumulate_512_sse2 +#define XXH3_scrambleAcc XXH3_scrambleAcc_sse2 +#define XXH3_initCustomSecret XXH3_initCustomSecret_sse2 + +#elif (XXH_VECTOR == XXH_NEON) + +#define XXH3_accumulate_512 XXH3_accumulate_512_neon +#define XXH3_scrambleAcc XXH3_scrambleAcc_neon +#define XXH3_initCustomSecret XXH3_initCustomSecret_scalar + +#elif (XXH_VECTOR == XXH_VSX) + +#define XXH3_accumulate_512 XXH3_accumulate_512_vsx +#define XXH3_scrambleAcc XXH3_scrambleAcc_vsx +#define XXH3_initCustomSecret XXH3_initCustomSecret_scalar + +#else /* scalar */ + +#define XXH3_accumulate_512 XXH3_accumulate_512_scalar +#define XXH3_scrambleAcc XXH3_scrambleAcc_scalar +#define XXH3_initCustomSecret XXH3_initCustomSecret_scalar + +#endif + + + +#ifndef XXH_PREFETCH_DIST +# ifdef __clang__ +# define XXH_PREFETCH_DIST 320 +# else +# if (XXH_VECTOR == XXH_AVX512) +# define XXH_PREFETCH_DIST 512 +# else +# define XXH_PREFETCH_DIST 384 +# endif +# endif /* __clang__ */ +#endif /* XXH_PREFETCH_DIST */ + +/* + * XXH3_accumulate() + * Loops over XXH3_accumulate_512(). + * Assumption: nbStripes will not overflow the secret size + */ +XXH_FORCE_INLINE void +XXH3_accumulate( xxh_u64* XXH_RESTRICT acc, + const xxh_u8* XXH_RESTRICT input, + const xxh_u8* XXH_RESTRICT secret, + size_t nbStripes, + XXH3_f_accumulate_512 f_acc512) +{ + size_t n; + for (n = 0; n < nbStripes; n++ ) { + const xxh_u8* const in = input + n*XXH_STRIPE_LEN; + XXH_PREFETCH(in + XXH_PREFETCH_DIST); + f_acc512(acc, + in, + secret + n*XXH_SECRET_CONSUME_RATE); + } +} + +XXH_FORCE_INLINE void +XXH3_hashLong_internal_loop(xxh_u64* XXH_RESTRICT acc, + const xxh_u8* XXH_RESTRICT input, size_t len, + const xxh_u8* XXH_RESTRICT secret, size_t secretSize, + XXH3_f_accumulate_512 f_acc512, + XXH3_f_scrambleAcc f_scramble) +{ + size_t const nbStripesPerBlock = (secretSize - XXH_STRIPE_LEN) / XXH_SECRET_CONSUME_RATE; + size_t const block_len = XXH_STRIPE_LEN * nbStripesPerBlock; + size_t const nb_blocks = (len - 1) / block_len; + + size_t n; + + XXH_ASSERT(secretSize >= XXH3_SECRET_SIZE_MIN); + + for (n = 0; n < nb_blocks; n++) { + XXH3_accumulate(acc, input + n*block_len, secret, nbStripesPerBlock, f_acc512); + f_scramble(acc, secret + secretSize - XXH_STRIPE_LEN); + } + + /* last partial block */ + XXH_ASSERT(len > XXH_STRIPE_LEN); + { size_t const nbStripes = ((len - 1) - (block_len * nb_blocks)) / XXH_STRIPE_LEN; + XXH_ASSERT(nbStripes <= (secretSize / XXH_SECRET_CONSUME_RATE)); + XXH3_accumulate(acc, input + nb_blocks*block_len, secret, nbStripes, f_acc512); + + /* last stripe */ + { const xxh_u8* const p = input + len - XXH_STRIPE_LEN; +#define XXH_SECRET_LASTACC_START 7 /* not aligned on 8, last secret is different from acc & scrambler */ + f_acc512(acc, p, secret + secretSize - XXH_STRIPE_LEN - XXH_SECRET_LASTACC_START); + } } +} + +XXH_FORCE_INLINE xxh_u64 +XXH3_mix2Accs(const xxh_u64* XXH_RESTRICT acc, const xxh_u8* XXH_RESTRICT secret) +{ + return XXH3_mul128_fold64( + acc[0] ^ XXH_readLE64(secret), + acc[1] ^ XXH_readLE64(secret+8) ); +} + +static XXH64_hash_t +XXH3_mergeAccs(const xxh_u64* XXH_RESTRICT acc, const xxh_u8* XXH_RESTRICT secret, xxh_u64 start) +{ + xxh_u64 result64 = start; + size_t i = 0; + + for (i = 0; i < 4; i++) { + result64 += XXH3_mix2Accs(acc+2*i, secret + 16*i); +#if defined(__clang__) /* Clang */ \ + && (defined(__arm__) || defined(__thumb__)) /* ARMv7 */ \ + && (defined(__ARM_NEON) || defined(__ARM_NEON__)) /* NEON */ \ + && !defined(XXH_ENABLE_AUTOVECTORIZE) /* Define to disable */ + /* + * UGLY HACK: + * Prevent autovectorization on Clang ARMv7-a. Exact same problem as + * the one in XXH3_len_129to240_64b. Speeds up shorter keys > 240b. + * XXH3_64bits, len == 256, Snapdragon 835: + * without hack: 2063.7 MB/s + * with hack: 2560.7 MB/s + */ + __asm__("" : "+r" (result64)); +#endif + } + + return XXH3_avalanche(result64); +} + +#define XXH3_INIT_ACC { XXH_PRIME32_3, XXH_PRIME64_1, XXH_PRIME64_2, XXH_PRIME64_3, \ + XXH_PRIME64_4, XXH_PRIME32_2, XXH_PRIME64_5, XXH_PRIME32_1 } + +XXH_FORCE_INLINE XXH64_hash_t +XXH3_hashLong_64b_internal(const void* XXH_RESTRICT input, size_t len, + const void* XXH_RESTRICT secret, size_t secretSize, + XXH3_f_accumulate_512 f_acc512, + XXH3_f_scrambleAcc f_scramble) +{ + XXH_ALIGN(XXH_ACC_ALIGN) xxh_u64 acc[XXH_ACC_NB] = XXH3_INIT_ACC; + + XXH3_hashLong_internal_loop(acc, (const xxh_u8*)input, len, (const xxh_u8*)secret, secretSize, f_acc512, f_scramble); + + /* converge into final hash */ + XXH_STATIC_ASSERT(sizeof(acc) == 64); + /* do not align on 8, so that the secret is different from the accumulator */ +#define XXH_SECRET_MERGEACCS_START 11 + XXH_ASSERT(secretSize >= sizeof(acc) + XXH_SECRET_MERGEACCS_START); + return XXH3_mergeAccs(acc, (const xxh_u8*)secret + XXH_SECRET_MERGEACCS_START, (xxh_u64)len * XXH_PRIME64_1); +} + +/* + * It's important for performance that XXH3_hashLong is not inlined. + */ +XXH_NO_INLINE XXH64_hash_t +XXH3_hashLong_64b_withSecret(const void* XXH_RESTRICT input, size_t len, + XXH64_hash_t seed64, const xxh_u8* XXH_RESTRICT secret, size_t secretLen) +{ + (void)seed64; + return XXH3_hashLong_64b_internal(input, len, secret, secretLen, XXH3_accumulate_512, XXH3_scrambleAcc); +} + +/* + * It's important for performance that XXH3_hashLong is not inlined. + * Since the function is not inlined, the compiler may not be able to understand that, + * in some scenarios, its `secret` argument is actually a compile time constant. + * This variant enforces that the compiler can detect that, + * and uses this opportunity to streamline the generated code for better performance. + */ +XXH_NO_INLINE XXH64_hash_t +XXH3_hashLong_64b_default(const void* XXH_RESTRICT input, size_t len, + XXH64_hash_t seed64, const xxh_u8* XXH_RESTRICT secret, size_t secretLen) +{ + (void)seed64; (void)secret; (void)secretLen; + return XXH3_hashLong_64b_internal(input, len, XXH3_kSecret, sizeof(XXH3_kSecret), XXH3_accumulate_512, XXH3_scrambleAcc); +} + +/* + * XXH3_hashLong_64b_withSeed(): + * Generate a custom key based on alteration of default XXH3_kSecret with the seed, + * and then use this key for long mode hashing. + * + * This operation is decently fast but nonetheless costs a little bit of time. + * Try to avoid it whenever possible (typically when seed==0). + * + * It's important for performance that XXH3_hashLong is not inlined. Not sure + * why (uop cache maybe?), but the difference is large and easily measurable. + */ +XXH_FORCE_INLINE XXH64_hash_t +XXH3_hashLong_64b_withSeed_internal(const void* input, size_t len, + XXH64_hash_t seed, + XXH3_f_accumulate_512 f_acc512, + XXH3_f_scrambleAcc f_scramble, + XXH3_f_initCustomSecret f_initSec) +{ + if (seed == 0) + return XXH3_hashLong_64b_internal(input, len, + XXH3_kSecret, sizeof(XXH3_kSecret), + f_acc512, f_scramble); + { XXH_ALIGN(XXH_SEC_ALIGN) xxh_u8 secret[XXH_SECRET_DEFAULT_SIZE]; + f_initSec(secret, seed); + return XXH3_hashLong_64b_internal(input, len, secret, sizeof(secret), + f_acc512, f_scramble); + } +} + +/* + * It's important for performance that XXH3_hashLong is not inlined. + */ +XXH_NO_INLINE XXH64_hash_t +XXH3_hashLong_64b_withSeed(const void* input, size_t len, + XXH64_hash_t seed, const xxh_u8* secret, size_t secretLen) +{ + (void)secret; (void)secretLen; + return XXH3_hashLong_64b_withSeed_internal(input, len, seed, + XXH3_accumulate_512, XXH3_scrambleAcc, XXH3_initCustomSecret); +} + + +typedef XXH64_hash_t (*XXH3_hashLong64_f)(const void* XXH_RESTRICT, size_t, + XXH64_hash_t, const xxh_u8* XXH_RESTRICT, size_t); + +XXH_FORCE_INLINE XXH64_hash_t +XXH3_64bits_internal(const void* XXH_RESTRICT input, size_t len, + XXH64_hash_t seed64, const void* XXH_RESTRICT secret, size_t secretLen, + XXH3_hashLong64_f f_hashLong) +{ + XXH_ASSERT(secretLen >= XXH3_SECRET_SIZE_MIN); + /* + * If an action is to be taken if `secretLen` condition is not respected, + * it should be done here. + * For now, it's a contract pre-condition. + * Adding a check and a branch here would cost performance at every hash. + * Also, note that function signature doesn't offer room to return an error. + */ + if (len <= 16) + return XXH3_len_0to16_64b((const xxh_u8*)input, len, (const xxh_u8*)secret, seed64); + if (len <= 128) + return XXH3_len_17to128_64b((const xxh_u8*)input, len, (const xxh_u8*)secret, secretLen, seed64); + if (len <= XXH3_MIDSIZE_MAX) + return XXH3_len_129to240_64b((const xxh_u8*)input, len, (const xxh_u8*)secret, secretLen, seed64); + return f_hashLong(input, len, seed64, (const xxh_u8*)secret, secretLen); +} + + +/* === Public entry point === */ + +/*! @ingroup xxh3_family */ +XXH_PUBLIC_API XXH64_hash_t XXH3_64bits(const void* input, size_t len) +{ + return XXH3_64bits_internal(input, len, 0, XXH3_kSecret, sizeof(XXH3_kSecret), XXH3_hashLong_64b_default); +} + +/*! @ingroup xxh3_family */ +XXH_PUBLIC_API XXH64_hash_t +XXH3_64bits_withSecret(const void* input, size_t len, const void* secret, size_t secretSize) +{ + return XXH3_64bits_internal(input, len, 0, secret, secretSize, XXH3_hashLong_64b_withSecret); +} + +/*! @ingroup xxh3_family */ +XXH_PUBLIC_API XXH64_hash_t +XXH3_64bits_withSeed(const void* input, size_t len, XXH64_hash_t seed) +{ + return XXH3_64bits_internal(input, len, seed, XXH3_kSecret, sizeof(XXH3_kSecret), XXH3_hashLong_64b_withSeed); +} + + +/* === XXH3 streaming === */ + +/* + * Malloc's a pointer that is always aligned to align. + * + * This must be freed with `XXH_alignedFree()`. + * + * malloc typically guarantees 16 byte alignment on 64-bit systems and 8 byte + * alignment on 32-bit. This isn't enough for the 32 byte aligned loads in AVX2 + * or on 32-bit, the 16 byte aligned loads in SSE2 and NEON. + * + * This underalignment previously caused a rather obvious crash which went + * completely unnoticed due to XXH3_createState() not actually being tested. + * Credit to RedSpah for noticing this bug. + * + * The alignment is done manually: Functions like posix_memalign or _mm_malloc + * are avoided: To maintain portability, we would have to write a fallback + * like this anyways, and besides, testing for the existence of library + * functions without relying on external build tools is impossible. + * + * The method is simple: Overallocate, manually align, and store the offset + * to the original behind the returned pointer. + * + * Align must be a power of 2 and 8 <= align <= 128. + */ +static void* XXH_alignedMalloc(size_t s, size_t align) +{ + XXH_ASSERT(align <= 128 && align >= 8); /* range check */ + XXH_ASSERT((align & (align-1)) == 0); /* power of 2 */ + XXH_ASSERT(s != 0 && s < (s + align)); /* empty/overflow */ + { /* Overallocate to make room for manual realignment and an offset byte */ + xxh_u8* base = (xxh_u8*)XXH_malloc(s + align); + if (base != NULL) { + /* + * Get the offset needed to align this pointer. + * + * Even if the returned pointer is aligned, there will always be + * at least one byte to store the offset to the original pointer. + */ + size_t offset = align - ((size_t)base & (align - 1)); /* base % align */ + /* Add the offset for the now-aligned pointer */ + xxh_u8* ptr = base + offset; + + XXH_ASSERT((size_t)ptr % align == 0); + + /* Store the offset immediately before the returned pointer. */ + ptr[-1] = (xxh_u8)offset; + return ptr; + } + return NULL; + } +} +/* + * Frees an aligned pointer allocated by XXH_alignedMalloc(). Don't pass + * normal malloc'd pointers, XXH_alignedMalloc has a specific data layout. + */ +static void XXH_alignedFree(void* p) +{ + if (p != NULL) { + xxh_u8* ptr = (xxh_u8*)p; + /* Get the offset byte we added in XXH_malloc. */ + xxh_u8 offset = ptr[-1]; + /* Free the original malloc'd pointer */ + xxh_u8* base = ptr - offset; + XXH_free(base); + } +} +/*! @ingroup xxh3_family */ +XXH_PUBLIC_API XXH3_state_t* XXH3_createState(void) +{ + XXH3_state_t* const state = (XXH3_state_t*)XXH_alignedMalloc(sizeof(XXH3_state_t), 64); + if (state==NULL) return NULL; + XXH3_INITSTATE(state); + return state; +} + +/*! @ingroup xxh3_family */ +XXH_PUBLIC_API XXH_errorcode XXH3_freeState(XXH3_state_t* statePtr) +{ + XXH_alignedFree(statePtr); + return XXH_OK; +} + +/*! @ingroup xxh3_family */ +XXH_PUBLIC_API void +XXH3_copyState(XXH3_state_t* dst_state, const XXH3_state_t* src_state) +{ + memcpy(dst_state, src_state, sizeof(*dst_state)); +} + +static void +XXH3_reset_internal(XXH3_state_t* statePtr, + XXH64_hash_t seed, + const void* secret, size_t secretSize) +{ + size_t const initStart = offsetof(XXH3_state_t, bufferedSize); + size_t const initLength = offsetof(XXH3_state_t, nbStripesPerBlock) - initStart; + XXH_ASSERT(offsetof(XXH3_state_t, nbStripesPerBlock) > initStart); + XXH_ASSERT(statePtr != NULL); + /* set members from bufferedSize to nbStripesPerBlock (excluded) to 0 */ + memset((char*)statePtr + initStart, 0, initLength); + statePtr->acc[0] = XXH_PRIME32_3; + statePtr->acc[1] = XXH_PRIME64_1; + statePtr->acc[2] = XXH_PRIME64_2; + statePtr->acc[3] = XXH_PRIME64_3; + statePtr->acc[4] = XXH_PRIME64_4; + statePtr->acc[5] = XXH_PRIME32_2; + statePtr->acc[6] = XXH_PRIME64_5; + statePtr->acc[7] = XXH_PRIME32_1; + statePtr->seed = seed; + statePtr->extSecret = (const unsigned char*)secret; + XXH_ASSERT(secretSize >= XXH3_SECRET_SIZE_MIN); + statePtr->secretLimit = secretSize - XXH_STRIPE_LEN; + statePtr->nbStripesPerBlock = statePtr->secretLimit / XXH_SECRET_CONSUME_RATE; +} + +/*! @ingroup xxh3_family */ +XXH_PUBLIC_API XXH_errorcode +XXH3_64bits_reset(XXH3_state_t* statePtr) +{ + if (statePtr == NULL) return XXH_ERROR; + XXH3_reset_internal(statePtr, 0, XXH3_kSecret, XXH_SECRET_DEFAULT_SIZE); + return XXH_OK; +} + +/*! @ingroup xxh3_family */ +XXH_PUBLIC_API XXH_errorcode +XXH3_64bits_reset_withSecret(XXH3_state_t* statePtr, const void* secret, size_t secretSize) +{ + if (statePtr == NULL) return XXH_ERROR; + XXH3_reset_internal(statePtr, 0, secret, secretSize); + if (secret == NULL) return XXH_ERROR; + if (secretSize < XXH3_SECRET_SIZE_MIN) return XXH_ERROR; + return XXH_OK; +} + +/*! @ingroup xxh3_family */ +XXH_PUBLIC_API XXH_errorcode +XXH3_64bits_reset_withSeed(XXH3_state_t* statePtr, XXH64_hash_t seed) +{ + if (statePtr == NULL) return XXH_ERROR; + if (seed==0) return XXH3_64bits_reset(statePtr); + if (seed != statePtr->seed) XXH3_initCustomSecret(statePtr->customSecret, seed); + XXH3_reset_internal(statePtr, seed, NULL, XXH_SECRET_DEFAULT_SIZE); + return XXH_OK; +} + +/* Note : when XXH3_consumeStripes() is invoked, + * there must be a guarantee that at least one more byte must be consumed from input + * so that the function can blindly consume all stripes using the "normal" secret segment */ +XXH_FORCE_INLINE void +XXH3_consumeStripes(xxh_u64* XXH_RESTRICT acc, + size_t* XXH_RESTRICT nbStripesSoFarPtr, size_t nbStripesPerBlock, + const xxh_u8* XXH_RESTRICT input, size_t nbStripes, + const xxh_u8* XXH_RESTRICT secret, size_t secretLimit, + XXH3_f_accumulate_512 f_acc512, + XXH3_f_scrambleAcc f_scramble) +{ + XXH_ASSERT(nbStripes <= nbStripesPerBlock); /* can handle max 1 scramble per invocation */ + XXH_ASSERT(*nbStripesSoFarPtr < nbStripesPerBlock); + if (nbStripesPerBlock - *nbStripesSoFarPtr <= nbStripes) { + /* need a scrambling operation */ + size_t const nbStripesToEndofBlock = nbStripesPerBlock - *nbStripesSoFarPtr; + size_t const nbStripesAfterBlock = nbStripes - nbStripesToEndofBlock; + XXH3_accumulate(acc, input, secret + nbStripesSoFarPtr[0] * XXH_SECRET_CONSUME_RATE, nbStripesToEndofBlock, f_acc512); + f_scramble(acc, secret + secretLimit); + XXH3_accumulate(acc, input + nbStripesToEndofBlock * XXH_STRIPE_LEN, secret, nbStripesAfterBlock, f_acc512); + *nbStripesSoFarPtr = nbStripesAfterBlock; + } else { + XXH3_accumulate(acc, input, secret + nbStripesSoFarPtr[0] * XXH_SECRET_CONSUME_RATE, nbStripes, f_acc512); + *nbStripesSoFarPtr += nbStripes; + } +} + +/* + * Both XXH3_64bits_update and XXH3_128bits_update use this routine. + */ +XXH_FORCE_INLINE XXH_errorcode +XXH3_update(XXH3_state_t* state, + const xxh_u8* input, size_t len, + XXH3_f_accumulate_512 f_acc512, + XXH3_f_scrambleAcc f_scramble) +{ + if (input==NULL) +#if defined(XXH_ACCEPT_NULL_INPUT_POINTER) && (XXH_ACCEPT_NULL_INPUT_POINTER>=1) + return XXH_OK; +#else + return XXH_ERROR; +#endif + + { const xxh_u8* const bEnd = input + len; + const unsigned char* const secret = (state->extSecret == NULL) ? state->customSecret : state->extSecret; + + state->totalLen += len; + XXH_ASSERT(state->bufferedSize <= XXH3_INTERNALBUFFER_SIZE); + + if (state->bufferedSize + len <= XXH3_INTERNALBUFFER_SIZE) { /* fill in tmp buffer */ + XXH_memcpy(state->buffer + state->bufferedSize, input, len); + state->bufferedSize += (XXH32_hash_t)len; + return XXH_OK; + } + /* total input is now > XXH3_INTERNALBUFFER_SIZE */ + + #define XXH3_INTERNALBUFFER_STRIPES (XXH3_INTERNALBUFFER_SIZE / XXH_STRIPE_LEN) + XXH_STATIC_ASSERT(XXH3_INTERNALBUFFER_SIZE % XXH_STRIPE_LEN == 0); /* clean multiple */ + + /* + * Internal buffer is partially filled (always, except at beginning) + * Complete it, then consume it. + */ + if (state->bufferedSize) { + size_t const loadSize = XXH3_INTERNALBUFFER_SIZE - state->bufferedSize; + XXH_memcpy(state->buffer + state->bufferedSize, input, loadSize); + input += loadSize; + XXH3_consumeStripes(state->acc, + &state->nbStripesSoFar, state->nbStripesPerBlock, + state->buffer, XXH3_INTERNALBUFFER_STRIPES, + secret, state->secretLimit, + f_acc512, f_scramble); + state->bufferedSize = 0; + } + XXH_ASSERT(input < bEnd); + + /* Consume input by a multiple of internal buffer size */ + if (input+XXH3_INTERNALBUFFER_SIZE < bEnd) { + const xxh_u8* const limit = bEnd - XXH3_INTERNALBUFFER_SIZE; + do { + XXH3_consumeStripes(state->acc, + &state->nbStripesSoFar, state->nbStripesPerBlock, + input, XXH3_INTERNALBUFFER_STRIPES, + secret, state->secretLimit, + f_acc512, f_scramble); + input += XXH3_INTERNALBUFFER_SIZE; + } while (inputbuffer + sizeof(state->buffer) - XXH_STRIPE_LEN, input - XXH_STRIPE_LEN, XXH_STRIPE_LEN); + } + XXH_ASSERT(input < bEnd); + + /* Some remaining input (always) : buffer it */ + XXH_memcpy(state->buffer, input, (size_t)(bEnd-input)); + state->bufferedSize = (XXH32_hash_t)(bEnd-input); + } + + return XXH_OK; +} + +/*! @ingroup xxh3_family */ +XXH_PUBLIC_API XXH_errorcode +XXH3_64bits_update(XXH3_state_t* state, const void* input, size_t len) +{ + return XXH3_update(state, (const xxh_u8*)input, len, + XXH3_accumulate_512, XXH3_scrambleAcc); +} + + +XXH_FORCE_INLINE void +XXH3_digest_long (XXH64_hash_t* acc, + const XXH3_state_t* state, + const unsigned char* secret) +{ + /* + * Digest on a local copy. This way, the state remains unaltered, and it can + * continue ingesting more input afterwards. + */ + memcpy(acc, state->acc, sizeof(state->acc)); + if (state->bufferedSize >= XXH_STRIPE_LEN) { + size_t const nbStripes = (state->bufferedSize - 1) / XXH_STRIPE_LEN; + size_t nbStripesSoFar = state->nbStripesSoFar; + XXH3_consumeStripes(acc, + &nbStripesSoFar, state->nbStripesPerBlock, + state->buffer, nbStripes, + secret, state->secretLimit, + XXH3_accumulate_512, XXH3_scrambleAcc); + /* last stripe */ + XXH3_accumulate_512(acc, + state->buffer + state->bufferedSize - XXH_STRIPE_LEN, + secret + state->secretLimit - XXH_SECRET_LASTACC_START); + } else { /* bufferedSize < XXH_STRIPE_LEN */ + xxh_u8 lastStripe[XXH_STRIPE_LEN]; + size_t const catchupSize = XXH_STRIPE_LEN - state->bufferedSize; + XXH_ASSERT(state->bufferedSize > 0); /* there is always some input buffered */ + memcpy(lastStripe, state->buffer + sizeof(state->buffer) - catchupSize, catchupSize); + memcpy(lastStripe + catchupSize, state->buffer, state->bufferedSize); + XXH3_accumulate_512(acc, + lastStripe, + secret + state->secretLimit - XXH_SECRET_LASTACC_START); + } +} + +/*! @ingroup xxh3_family */ +XXH_PUBLIC_API XXH64_hash_t XXH3_64bits_digest (const XXH3_state_t* state) +{ + const unsigned char* const secret = (state->extSecret == NULL) ? state->customSecret : state->extSecret; + if (state->totalLen > XXH3_MIDSIZE_MAX) { + XXH_ALIGN(XXH_ACC_ALIGN) XXH64_hash_t acc[XXH_ACC_NB]; + XXH3_digest_long(acc, state, secret); + return XXH3_mergeAccs(acc, + secret + XXH_SECRET_MERGEACCS_START, + (xxh_u64)state->totalLen * XXH_PRIME64_1); + } + /* totalLen <= XXH3_MIDSIZE_MAX: digesting a short input */ + if (state->seed) + return XXH3_64bits_withSeed(state->buffer, (size_t)state->totalLen, state->seed); + return XXH3_64bits_withSecret(state->buffer, (size_t)(state->totalLen), + secret, state->secretLimit + XXH_STRIPE_LEN); +} + + +#define XXH_MIN(x, y) (((x) > (y)) ? (y) : (x)) + +/*! @ingroup xxh3_family */ +XXH_PUBLIC_API void +XXH3_generateSecret(void* secretBuffer, const void* customSeed, size_t customSeedSize) +{ + XXH_ASSERT(secretBuffer != NULL); + if (customSeedSize == 0) { + memcpy(secretBuffer, XXH3_kSecret, XXH_SECRET_DEFAULT_SIZE); + return; + } + XXH_ASSERT(customSeed != NULL); + + { size_t const segmentSize = sizeof(XXH128_hash_t); + size_t const nbSegments = XXH_SECRET_DEFAULT_SIZE / segmentSize; + XXH128_canonical_t scrambler; + XXH64_hash_t seeds[12]; + size_t segnb; + XXH_ASSERT(nbSegments == 12); + XXH_ASSERT(segmentSize * nbSegments == XXH_SECRET_DEFAULT_SIZE); /* exact multiple */ + XXH128_canonicalFromHash(&scrambler, XXH128(customSeed, customSeedSize, 0)); + + /* + * Copy customSeed to seeds[], truncating or repeating as necessary. + */ + { size_t toFill = XXH_MIN(customSeedSize, sizeof(seeds)); + size_t filled = toFill; + memcpy(seeds, customSeed, toFill); + while (filled < sizeof(seeds)) { + toFill = XXH_MIN(filled, sizeof(seeds) - filled); + memcpy((char*)seeds + filled, seeds, toFill); + filled += toFill; + } } + + /* generate secret */ + memcpy(secretBuffer, &scrambler, sizeof(scrambler)); + for (segnb=1; segnb < nbSegments; segnb++) { + size_t const segmentStart = segnb * segmentSize; + XXH128_canonical_t segment; + XXH128_canonicalFromHash(&segment, + XXH128(&scrambler, sizeof(scrambler), XXH_readLE64(seeds + segnb) + segnb) ); + memcpy((char*)secretBuffer + segmentStart, &segment, sizeof(segment)); + } } +} + + +/* ========================================== + * XXH3 128 bits (a.k.a XXH128) + * ========================================== + * XXH3's 128-bit variant has better mixing and strength than the 64-bit variant, + * even without counting the significantly larger output size. + * + * For example, extra steps are taken to avoid the seed-dependent collisions + * in 17-240 byte inputs (See XXH3_mix16B and XXH128_mix32B). + * + * This strength naturally comes at the cost of some speed, especially on short + * lengths. Note that longer hashes are about as fast as the 64-bit version + * due to it using only a slight modification of the 64-bit loop. + * + * XXH128 is also more oriented towards 64-bit machines. It is still extremely + * fast for a _128-bit_ hash on 32-bit (it usually clears XXH64). + */ + +XXH_FORCE_INLINE XXH128_hash_t +XXH3_len_1to3_128b(const xxh_u8* input, size_t len, const xxh_u8* secret, XXH64_hash_t seed) +{ + /* A doubled version of 1to3_64b with different constants. */ + XXH_ASSERT(input != NULL); + XXH_ASSERT(1 <= len && len <= 3); + XXH_ASSERT(secret != NULL); + /* + * len = 1: combinedl = { input[0], 0x01, input[0], input[0] } + * len = 2: combinedl = { input[1], 0x02, input[0], input[1] } + * len = 3: combinedl = { input[2], 0x03, input[0], input[1] } + */ + { xxh_u8 const c1 = input[0]; + xxh_u8 const c2 = input[len >> 1]; + xxh_u8 const c3 = input[len - 1]; + xxh_u32 const combinedl = ((xxh_u32)c1 <<16) | ((xxh_u32)c2 << 24) + | ((xxh_u32)c3 << 0) | ((xxh_u32)len << 8); + xxh_u32 const combinedh = XXH_rotl32(XXH_swap32(combinedl), 13); + xxh_u64 const bitflipl = (XXH_readLE32(secret) ^ XXH_readLE32(secret+4)) + seed; + xxh_u64 const bitfliph = (XXH_readLE32(secret+8) ^ XXH_readLE32(secret+12)) - seed; + xxh_u64 const keyed_lo = (xxh_u64)combinedl ^ bitflipl; + xxh_u64 const keyed_hi = (xxh_u64)combinedh ^ bitfliph; + XXH128_hash_t h128; + h128.low64 = XXH64_avalanche(keyed_lo); + h128.high64 = XXH64_avalanche(keyed_hi); + return h128; + } +} + +XXH_FORCE_INLINE XXH128_hash_t +XXH3_len_4to8_128b(const xxh_u8* input, size_t len, const xxh_u8* secret, XXH64_hash_t seed) +{ + XXH_ASSERT(input != NULL); + XXH_ASSERT(secret != NULL); + XXH_ASSERT(4 <= len && len <= 8); + seed ^= (xxh_u64)XXH_swap32((xxh_u32)seed) << 32; + { xxh_u32 const input_lo = XXH_readLE32(input); + xxh_u32 const input_hi = XXH_readLE32(input + len - 4); + xxh_u64 const input_64 = input_lo + ((xxh_u64)input_hi << 32); + xxh_u64 const bitflip = (XXH_readLE64(secret+16) ^ XXH_readLE64(secret+24)) + seed; + xxh_u64 const keyed = input_64 ^ bitflip; + + /* Shift len to the left to ensure it is even, this avoids even multiplies. */ + XXH128_hash_t m128 = XXH_mult64to128(keyed, XXH_PRIME64_1 + (len << 2)); + + m128.high64 += (m128.low64 << 1); + m128.low64 ^= (m128.high64 >> 3); + + m128.low64 = XXH_xorshift64(m128.low64, 35); + m128.low64 *= 0x9FB21C651E98DF25ULL; + m128.low64 = XXH_xorshift64(m128.low64, 28); + m128.high64 = XXH3_avalanche(m128.high64); + return m128; + } +} + +XXH_FORCE_INLINE XXH128_hash_t +XXH3_len_9to16_128b(const xxh_u8* input, size_t len, const xxh_u8* secret, XXH64_hash_t seed) +{ + XXH_ASSERT(input != NULL); + XXH_ASSERT(secret != NULL); + XXH_ASSERT(9 <= len && len <= 16); + { xxh_u64 const bitflipl = (XXH_readLE64(secret+32) ^ XXH_readLE64(secret+40)) - seed; + xxh_u64 const bitfliph = (XXH_readLE64(secret+48) ^ XXH_readLE64(secret+56)) + seed; + xxh_u64 const input_lo = XXH_readLE64(input); + xxh_u64 input_hi = XXH_readLE64(input + len - 8); + XXH128_hash_t m128 = XXH_mult64to128(input_lo ^ input_hi ^ bitflipl, XXH_PRIME64_1); + /* + * Put len in the middle of m128 to ensure that the length gets mixed to + * both the low and high bits in the 128x64 multiply below. + */ + m128.low64 += (xxh_u64)(len - 1) << 54; + input_hi ^= bitfliph; + /* + * Add the high 32 bits of input_hi to the high 32 bits of m128, then + * add the long product of the low 32 bits of input_hi and XXH_PRIME32_2 to + * the high 64 bits of m128. + * + * The best approach to this operation is different on 32-bit and 64-bit. + */ + if (sizeof(void *) < sizeof(xxh_u64)) { /* 32-bit */ + /* + * 32-bit optimized version, which is more readable. + * + * On 32-bit, it removes an ADC and delays a dependency between the two + * halves of m128.high64, but it generates an extra mask on 64-bit. + */ + m128.high64 += (input_hi & 0xFFFFFFFF00000000ULL) + XXH_mult32to64((xxh_u32)input_hi, XXH_PRIME32_2); + } else { + /* + * 64-bit optimized (albeit more confusing) version. + * + * Uses some properties of addition and multiplication to remove the mask: + * + * Let: + * a = input_hi.lo = (input_hi & 0x00000000FFFFFFFF) + * b = input_hi.hi = (input_hi & 0xFFFFFFFF00000000) + * c = XXH_PRIME32_2 + * + * a + (b * c) + * Inverse Property: x + y - x == y + * a + (b * (1 + c - 1)) + * Distributive Property: x * (y + z) == (x * y) + (x * z) + * a + (b * 1) + (b * (c - 1)) + * Identity Property: x * 1 == x + * a + b + (b * (c - 1)) + * + * Substitute a, b, and c: + * input_hi.hi + input_hi.lo + ((xxh_u64)input_hi.lo * (XXH_PRIME32_2 - 1)) + * + * Since input_hi.hi + input_hi.lo == input_hi, we get this: + * input_hi + ((xxh_u64)input_hi.lo * (XXH_PRIME32_2 - 1)) + */ + m128.high64 += input_hi + XXH_mult32to64((xxh_u32)input_hi, XXH_PRIME32_2 - 1); + } + /* m128 ^= XXH_swap64(m128 >> 64); */ + m128.low64 ^= XXH_swap64(m128.high64); + + { /* 128x64 multiply: h128 = m128 * XXH_PRIME64_2; */ + XXH128_hash_t h128 = XXH_mult64to128(m128.low64, XXH_PRIME64_2); + h128.high64 += m128.high64 * XXH_PRIME64_2; + + h128.low64 = XXH3_avalanche(h128.low64); + h128.high64 = XXH3_avalanche(h128.high64); + return h128; + } } +} + +/* + * Assumption: `secret` size is >= XXH3_SECRET_SIZE_MIN + */ +XXH_FORCE_INLINE XXH128_hash_t +XXH3_len_0to16_128b(const xxh_u8* input, size_t len, const xxh_u8* secret, XXH64_hash_t seed) +{ + XXH_ASSERT(len <= 16); + { if (len > 8) return XXH3_len_9to16_128b(input, len, secret, seed); + if (len >= 4) return XXH3_len_4to8_128b(input, len, secret, seed); + if (len) return XXH3_len_1to3_128b(input, len, secret, seed); + { XXH128_hash_t h128; + xxh_u64 const bitflipl = XXH_readLE64(secret+64) ^ XXH_readLE64(secret+72); + xxh_u64 const bitfliph = XXH_readLE64(secret+80) ^ XXH_readLE64(secret+88); + h128.low64 = XXH64_avalanche(seed ^ bitflipl); + h128.high64 = XXH64_avalanche( seed ^ bitfliph); + return h128; + } } +} + +/* + * A bit slower than XXH3_mix16B, but handles multiply by zero better. + */ +XXH_FORCE_INLINE XXH128_hash_t +XXH128_mix32B(XXH128_hash_t acc, const xxh_u8* input_1, const xxh_u8* input_2, + const xxh_u8* secret, XXH64_hash_t seed) +{ + acc.low64 += XXH3_mix16B (input_1, secret+0, seed); + acc.low64 ^= XXH_readLE64(input_2) + XXH_readLE64(input_2 + 8); + acc.high64 += XXH3_mix16B (input_2, secret+16, seed); + acc.high64 ^= XXH_readLE64(input_1) + XXH_readLE64(input_1 + 8); + return acc; +} + + +XXH_FORCE_INLINE XXH128_hash_t +XXH3_len_17to128_128b(const xxh_u8* XXH_RESTRICT input, size_t len, + const xxh_u8* XXH_RESTRICT secret, size_t secretSize, + XXH64_hash_t seed) +{ + XXH_ASSERT(secretSize >= XXH3_SECRET_SIZE_MIN); (void)secretSize; + XXH_ASSERT(16 < len && len <= 128); + + { XXH128_hash_t acc; + acc.low64 = len * XXH_PRIME64_1; + acc.high64 = 0; + if (len > 32) { + if (len > 64) { + if (len > 96) { + acc = XXH128_mix32B(acc, input+48, input+len-64, secret+96, seed); + } + acc = XXH128_mix32B(acc, input+32, input+len-48, secret+64, seed); + } + acc = XXH128_mix32B(acc, input+16, input+len-32, secret+32, seed); + } + acc = XXH128_mix32B(acc, input, input+len-16, secret, seed); + { XXH128_hash_t h128; + h128.low64 = acc.low64 + acc.high64; + h128.high64 = (acc.low64 * XXH_PRIME64_1) + + (acc.high64 * XXH_PRIME64_4) + + ((len - seed) * XXH_PRIME64_2); + h128.low64 = XXH3_avalanche(h128.low64); + h128.high64 = (XXH64_hash_t)0 - XXH3_avalanche(h128.high64); + return h128; + } + } +} + +XXH_NO_INLINE XXH128_hash_t +XXH3_len_129to240_128b(const xxh_u8* XXH_RESTRICT input, size_t len, + const xxh_u8* XXH_RESTRICT secret, size_t secretSize, + XXH64_hash_t seed) +{ + XXH_ASSERT(secretSize >= XXH3_SECRET_SIZE_MIN); (void)secretSize; + XXH_ASSERT(128 < len && len <= XXH3_MIDSIZE_MAX); + + { XXH128_hash_t acc; + int const nbRounds = (int)len / 32; + int i; + acc.low64 = len * XXH_PRIME64_1; + acc.high64 = 0; + for (i=0; i<4; i++) { + acc = XXH128_mix32B(acc, + input + (32 * i), + input + (32 * i) + 16, + secret + (32 * i), + seed); + } + acc.low64 = XXH3_avalanche(acc.low64); + acc.high64 = XXH3_avalanche(acc.high64); + XXH_ASSERT(nbRounds >= 4); + for (i=4 ; i < nbRounds; i++) { + acc = XXH128_mix32B(acc, + input + (32 * i), + input + (32 * i) + 16, + secret + XXH3_MIDSIZE_STARTOFFSET + (32 * (i - 4)), + seed); + } + /* last bytes */ + acc = XXH128_mix32B(acc, + input + len - 16, + input + len - 32, + secret + XXH3_SECRET_SIZE_MIN - XXH3_MIDSIZE_LASTOFFSET - 16, + 0ULL - seed); + + { XXH128_hash_t h128; + h128.low64 = acc.low64 + acc.high64; + h128.high64 = (acc.low64 * XXH_PRIME64_1) + + (acc.high64 * XXH_PRIME64_4) + + ((len - seed) * XXH_PRIME64_2); + h128.low64 = XXH3_avalanche(h128.low64); + h128.high64 = (XXH64_hash_t)0 - XXH3_avalanche(h128.high64); + return h128; + } + } +} + +XXH_FORCE_INLINE XXH128_hash_t +XXH3_hashLong_128b_internal(const void* XXH_RESTRICT input, size_t len, + const xxh_u8* XXH_RESTRICT secret, size_t secretSize, + XXH3_f_accumulate_512 f_acc512, + XXH3_f_scrambleAcc f_scramble) +{ + XXH_ALIGN(XXH_ACC_ALIGN) xxh_u64 acc[XXH_ACC_NB] = XXH3_INIT_ACC; + + XXH3_hashLong_internal_loop(acc, (const xxh_u8*)input, len, secret, secretSize, f_acc512, f_scramble); + + /* converge into final hash */ + XXH_STATIC_ASSERT(sizeof(acc) == 64); + XXH_ASSERT(secretSize >= sizeof(acc) + XXH_SECRET_MERGEACCS_START); + { XXH128_hash_t h128; + h128.low64 = XXH3_mergeAccs(acc, + secret + XXH_SECRET_MERGEACCS_START, + (xxh_u64)len * XXH_PRIME64_1); + h128.high64 = XXH3_mergeAccs(acc, + secret + secretSize + - sizeof(acc) - XXH_SECRET_MERGEACCS_START, + ~((xxh_u64)len * XXH_PRIME64_2)); + return h128; + } +} + +/* + * It's important for performance that XXH3_hashLong is not inlined. + */ +XXH_NO_INLINE XXH128_hash_t +XXH3_hashLong_128b_default(const void* XXH_RESTRICT input, size_t len, + XXH64_hash_t seed64, + const void* XXH_RESTRICT secret, size_t secretLen) +{ + (void)seed64; (void)secret; (void)secretLen; + return XXH3_hashLong_128b_internal(input, len, XXH3_kSecret, sizeof(XXH3_kSecret), + XXH3_accumulate_512, XXH3_scrambleAcc); +} + +/* + * It's important for performance that XXH3_hashLong is not inlined. + */ +XXH_NO_INLINE XXH128_hash_t +XXH3_hashLong_128b_withSecret(const void* XXH_RESTRICT input, size_t len, + XXH64_hash_t seed64, + const void* XXH_RESTRICT secret, size_t secretLen) +{ + (void)seed64; + return XXH3_hashLong_128b_internal(input, len, (const xxh_u8*)secret, secretLen, + XXH3_accumulate_512, XXH3_scrambleAcc); +} + +XXH_FORCE_INLINE XXH128_hash_t +XXH3_hashLong_128b_withSeed_internal(const void* XXH_RESTRICT input, size_t len, + XXH64_hash_t seed64, + XXH3_f_accumulate_512 f_acc512, + XXH3_f_scrambleAcc f_scramble, + XXH3_f_initCustomSecret f_initSec) +{ + if (seed64 == 0) + return XXH3_hashLong_128b_internal(input, len, + XXH3_kSecret, sizeof(XXH3_kSecret), + f_acc512, f_scramble); + { XXH_ALIGN(XXH_SEC_ALIGN) xxh_u8 secret[XXH_SECRET_DEFAULT_SIZE]; + f_initSec(secret, seed64); + return XXH3_hashLong_128b_internal(input, len, (const xxh_u8*)secret, sizeof(secret), + f_acc512, f_scramble); + } +} + +/* + * It's important for performance that XXH3_hashLong is not inlined. + */ +XXH_NO_INLINE XXH128_hash_t +XXH3_hashLong_128b_withSeed(const void* input, size_t len, + XXH64_hash_t seed64, const void* XXH_RESTRICT secret, size_t secretLen) +{ + (void)secret; (void)secretLen; + return XXH3_hashLong_128b_withSeed_internal(input, len, seed64, + XXH3_accumulate_512, XXH3_scrambleAcc, XXH3_initCustomSecret); +} + +typedef XXH128_hash_t (*XXH3_hashLong128_f)(const void* XXH_RESTRICT, size_t, + XXH64_hash_t, const void* XXH_RESTRICT, size_t); + +XXH_FORCE_INLINE XXH128_hash_t +XXH3_128bits_internal(const void* input, size_t len, + XXH64_hash_t seed64, const void* XXH_RESTRICT secret, size_t secretLen, + XXH3_hashLong128_f f_hl128) +{ + XXH_ASSERT(secretLen >= XXH3_SECRET_SIZE_MIN); + /* + * If an action is to be taken if `secret` conditions are not respected, + * it should be done here. + * For now, it's a contract pre-condition. + * Adding a check and a branch here would cost performance at every hash. + */ + if (len <= 16) + return XXH3_len_0to16_128b((const xxh_u8*)input, len, (const xxh_u8*)secret, seed64); + if (len <= 128) + return XXH3_len_17to128_128b((const xxh_u8*)input, len, (const xxh_u8*)secret, secretLen, seed64); + if (len <= XXH3_MIDSIZE_MAX) + return XXH3_len_129to240_128b((const xxh_u8*)input, len, (const xxh_u8*)secret, secretLen, seed64); + return f_hl128(input, len, seed64, secret, secretLen); +} + + +/* === Public XXH128 API === */ + +/*! @ingroup xxh3_family */ +XXH_PUBLIC_API XXH128_hash_t XXH3_128bits(const void* input, size_t len) +{ + return XXH3_128bits_internal(input, len, 0, + XXH3_kSecret, sizeof(XXH3_kSecret), + XXH3_hashLong_128b_default); +} + +/*! @ingroup xxh3_family */ +XXH_PUBLIC_API XXH128_hash_t +XXH3_128bits_withSecret(const void* input, size_t len, const void* secret, size_t secretSize) +{ + return XXH3_128bits_internal(input, len, 0, + (const xxh_u8*)secret, secretSize, + XXH3_hashLong_128b_withSecret); +} + +/*! @ingroup xxh3_family */ +XXH_PUBLIC_API XXH128_hash_t +XXH3_128bits_withSeed(const void* input, size_t len, XXH64_hash_t seed) +{ + return XXH3_128bits_internal(input, len, seed, + XXH3_kSecret, sizeof(XXH3_kSecret), + XXH3_hashLong_128b_withSeed); +} + +/*! @ingroup xxh3_family */ +XXH_PUBLIC_API XXH128_hash_t +XXH128(const void* input, size_t len, XXH64_hash_t seed) +{ + return XXH3_128bits_withSeed(input, len, seed); +} + + +/* === XXH3 128-bit streaming === */ + +/* + * All the functions are actually the same as for 64-bit streaming variant. + * The only difference is the finalization routine. + */ + +/*! @ingroup xxh3_family */ +XXH_PUBLIC_API XXH_errorcode +XXH3_128bits_reset(XXH3_state_t* statePtr) +{ + if (statePtr == NULL) return XXH_ERROR; + XXH3_reset_internal(statePtr, 0, XXH3_kSecret, XXH_SECRET_DEFAULT_SIZE); + return XXH_OK; +} + +/*! @ingroup xxh3_family */ +XXH_PUBLIC_API XXH_errorcode +XXH3_128bits_reset_withSecret(XXH3_state_t* statePtr, const void* secret, size_t secretSize) +{ + if (statePtr == NULL) return XXH_ERROR; + XXH3_reset_internal(statePtr, 0, secret, secretSize); + if (secret == NULL) return XXH_ERROR; + if (secretSize < XXH3_SECRET_SIZE_MIN) return XXH_ERROR; + return XXH_OK; +} + +/*! @ingroup xxh3_family */ +XXH_PUBLIC_API XXH_errorcode +XXH3_128bits_reset_withSeed(XXH3_state_t* statePtr, XXH64_hash_t seed) +{ + if (statePtr == NULL) return XXH_ERROR; + if (seed==0) return XXH3_128bits_reset(statePtr); + if (seed != statePtr->seed) XXH3_initCustomSecret(statePtr->customSecret, seed); + XXH3_reset_internal(statePtr, seed, NULL, XXH_SECRET_DEFAULT_SIZE); + return XXH_OK; +} + +/*! @ingroup xxh3_family */ +XXH_PUBLIC_API XXH_errorcode +XXH3_128bits_update(XXH3_state_t* state, const void* input, size_t len) +{ + return XXH3_update(state, (const xxh_u8*)input, len, + XXH3_accumulate_512, XXH3_scrambleAcc); +} + +/*! @ingroup xxh3_family */ +XXH_PUBLIC_API XXH128_hash_t XXH3_128bits_digest (const XXH3_state_t* state) +{ + const unsigned char* const secret = (state->extSecret == NULL) ? state->customSecret : state->extSecret; + if (state->totalLen > XXH3_MIDSIZE_MAX) { + XXH_ALIGN(XXH_ACC_ALIGN) XXH64_hash_t acc[XXH_ACC_NB]; + XXH3_digest_long(acc, state, secret); + XXH_ASSERT(state->secretLimit + XXH_STRIPE_LEN >= sizeof(acc) + XXH_SECRET_MERGEACCS_START); + { XXH128_hash_t h128; + h128.low64 = XXH3_mergeAccs(acc, + secret + XXH_SECRET_MERGEACCS_START, + (xxh_u64)state->totalLen * XXH_PRIME64_1); + h128.high64 = XXH3_mergeAccs(acc, + secret + state->secretLimit + XXH_STRIPE_LEN + - sizeof(acc) - XXH_SECRET_MERGEACCS_START, + ~((xxh_u64)state->totalLen * XXH_PRIME64_2)); + return h128; + } + } + /* len <= XXH3_MIDSIZE_MAX : short code */ + if (state->seed) + return XXH3_128bits_withSeed(state->buffer, (size_t)state->totalLen, state->seed); + return XXH3_128bits_withSecret(state->buffer, (size_t)(state->totalLen), + secret, state->secretLimit + XXH_STRIPE_LEN); +} + +/* 128-bit utility functions */ + +#include /* memcmp, memcpy */ + +/* return : 1 is equal, 0 if different */ +/*! @ingroup xxh3_family */ +XXH_PUBLIC_API int XXH128_isEqual(XXH128_hash_t h1, XXH128_hash_t h2) +{ + /* note : XXH128_hash_t is compact, it has no padding byte */ + return !(memcmp(&h1, &h2, sizeof(h1))); +} + +/* This prototype is compatible with stdlib's qsort(). + * return : >0 if *h128_1 > *h128_2 + * <0 if *h128_1 < *h128_2 + * =0 if *h128_1 == *h128_2 */ +/*! @ingroup xxh3_family */ +XXH_PUBLIC_API int XXH128_cmp(const void* h128_1, const void* h128_2) +{ + XXH128_hash_t const h1 = *(const XXH128_hash_t*)h128_1; + XXH128_hash_t const h2 = *(const XXH128_hash_t*)h128_2; + int const hcmp = (h1.high64 > h2.high64) - (h2.high64 > h1.high64); + /* note : bets that, in most cases, hash values are different */ + if (hcmp) return hcmp; + return (h1.low64 > h2.low64) - (h2.low64 > h1.low64); +} + + +/*====== Canonical representation ======*/ +/*! @ingroup xxh3_family */ +XXH_PUBLIC_API void +XXH128_canonicalFromHash(XXH128_canonical_t* dst, XXH128_hash_t hash) +{ + XXH_STATIC_ASSERT(sizeof(XXH128_canonical_t) == sizeof(XXH128_hash_t)); + if (XXH_CPU_LITTLE_ENDIAN) { + hash.high64 = XXH_swap64(hash.high64); + hash.low64 = XXH_swap64(hash.low64); + } + memcpy(dst, &hash.high64, sizeof(hash.high64)); + memcpy((char*)dst + sizeof(hash.high64), &hash.low64, sizeof(hash.low64)); +} + +/*! @ingroup xxh3_family */ +XXH_PUBLIC_API XXH128_hash_t +XXH128_hashFromCanonical(const XXH128_canonical_t* src) +{ + XXH128_hash_t h; + h.high64 = XXH_readBE64(src); + h.low64 = XXH_readBE64(src->digest + 8); + return h; +} + +/* Pop our optimization override from above */ +#if XXH_VECTOR == XXH_AVX2 /* AVX2 */ \ + && defined(__GNUC__) && !defined(__clang__) /* GCC, not Clang */ \ + && defined(__OPTIMIZE__) && !defined(__OPTIMIZE_SIZE__) /* respect -O0 and -Os */ +# pragma GCC pop_options +#endif + +#endif /* XXH_NO_LONG_LONG */ + +/*! + * @} + */ +#endif /* XXH_IMPLEMENTATION */ + + +#if defined (__cplusplus) +} +#endif \ No newline at end of file diff --git a/parser/parser.go b/parser/parser.go index fb494a8c..cd66073d 100644 --- a/parser/parser.go +++ b/parser/parser.go @@ -37,6 +37,26 @@ func ParseToJSON(input string) (result string, err error) { return } +// ParseToProtobuf - Parses the given SQL statement into an AST (Protobuf format) +func ParseToProtobuf(input string) (result []byte, err error) { + inputC := C.CString(input) + defer C.free(unsafe.Pointer(inputC)) + + resultC := C.pg_query_parse_protobuf(inputC) + + defer C.pg_query_free_protobuf_parse_result(resultC) + + if resultC.error != nil { + errMessage := C.GoString(resultC.error.message) + err = errors.New(errMessage) + return + } + + result = []byte(C.GoStringN(resultC.parse_tree.data, C.int(resultC.parse_tree.len))) + + return +} + // ParsePlPgSqlToJSON - Parses the given PL/pgSQL function statement into an AST (JSON format) func ParsePlPgSqlToJSON(input string) (result string, err error) { inputC := C.CString(input) @@ -90,7 +110,7 @@ func FastFingerprint(input string) (result string, err error) { return } - result = C.GoString(resultC.hexdigest) + result = C.GoString(resultC.fingerprint_str) return } diff --git a/parser/pg_query.c b/parser/pg_query.c index 7f964d2d..e0069e80 100644 --- a/parser/pg_query.c +++ b/parser/pg_query.c @@ -37,10 +37,11 @@ void pg_query_free_top_memory_context(MemoryContext context) */ Assert(TopMemoryContext == CurrentMemoryContext); - AssertArg(MemoryContextIsValid(context)); - MemoryContextDeleteChildren(context); + /* Clean up the aset.c freelist, to leave no unused context behind */ + AllocSetDeleteFreeList(context); + context->methods->delete_context(context); VALGRIND_DESTROY_MEMPOOL(context); diff --git a/parser/pg_query.pb-c.c b/parser/pg_query.pb-c.c new file mode 100644 index 00000000..14fd10cd --- /dev/null +++ b/parser/pg_query.pb-c.c @@ -0,0 +1,37628 @@ +/* Generated by the protocol buffer compiler. DO NOT EDIT! */ +/* Generated from: protobuf/pg_query.proto */ + +/* Do not generate deprecated warnings for self */ +#ifndef PROTOBUF_C__NO_DEPRECATED +#define PROTOBUF_C__NO_DEPRECATED +#endif + +#include "protobuf/pg_query.pb-c.h" +void pg_query__parse_result__init + (PgQuery__ParseResult *message) +{ + static const PgQuery__ParseResult init_value = PG_QUERY__PARSE_RESULT__INIT; + *message = init_value; +} +size_t pg_query__parse_result__get_packed_size + (const PgQuery__ParseResult *message) +{ + assert(message->base.descriptor == &pg_query__parse_result__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t pg_query__parse_result__pack + (const PgQuery__ParseResult *message, + uint8_t *out) +{ + assert(message->base.descriptor == &pg_query__parse_result__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t pg_query__parse_result__pack_to_buffer + (const PgQuery__ParseResult *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &pg_query__parse_result__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +PgQuery__ParseResult * + pg_query__parse_result__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (PgQuery__ParseResult *) + protobuf_c_message_unpack (&pg_query__parse_result__descriptor, + allocator, len, data); +} +void pg_query__parse_result__free_unpacked + (PgQuery__ParseResult *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &pg_query__parse_result__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void pg_query__scan_result__init + (PgQuery__ScanResult *message) +{ + static const PgQuery__ScanResult init_value = PG_QUERY__SCAN_RESULT__INIT; + *message = init_value; +} +size_t pg_query__scan_result__get_packed_size + (const PgQuery__ScanResult *message) +{ + assert(message->base.descriptor == &pg_query__scan_result__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t pg_query__scan_result__pack + (const PgQuery__ScanResult *message, + uint8_t *out) +{ + assert(message->base.descriptor == &pg_query__scan_result__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t pg_query__scan_result__pack_to_buffer + (const PgQuery__ScanResult *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &pg_query__scan_result__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +PgQuery__ScanResult * + pg_query__scan_result__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (PgQuery__ScanResult *) + protobuf_c_message_unpack (&pg_query__scan_result__descriptor, + allocator, len, data); +} +void pg_query__scan_result__free_unpacked + (PgQuery__ScanResult *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &pg_query__scan_result__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void pg_query__node__init + (PgQuery__Node *message) +{ + static const PgQuery__Node init_value = PG_QUERY__NODE__INIT; + *message = init_value; +} +size_t pg_query__node__get_packed_size + (const PgQuery__Node *message) +{ + assert(message->base.descriptor == &pg_query__node__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t pg_query__node__pack + (const PgQuery__Node *message, + uint8_t *out) +{ + assert(message->base.descriptor == &pg_query__node__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t pg_query__node__pack_to_buffer + (const PgQuery__Node *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &pg_query__node__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +PgQuery__Node * + pg_query__node__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (PgQuery__Node *) + protobuf_c_message_unpack (&pg_query__node__descriptor, + allocator, len, data); +} +void pg_query__node__free_unpacked + (PgQuery__Node *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &pg_query__node__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void pg_query__integer__init + (PgQuery__Integer *message) +{ + static const PgQuery__Integer init_value = PG_QUERY__INTEGER__INIT; + *message = init_value; +} +size_t pg_query__integer__get_packed_size + (const PgQuery__Integer *message) +{ + assert(message->base.descriptor == &pg_query__integer__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t pg_query__integer__pack + (const PgQuery__Integer *message, + uint8_t *out) +{ + assert(message->base.descriptor == &pg_query__integer__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t pg_query__integer__pack_to_buffer + (const PgQuery__Integer *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &pg_query__integer__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +PgQuery__Integer * + pg_query__integer__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (PgQuery__Integer *) + protobuf_c_message_unpack (&pg_query__integer__descriptor, + allocator, len, data); +} +void pg_query__integer__free_unpacked + (PgQuery__Integer *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &pg_query__integer__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void pg_query__float__init + (PgQuery__Float *message) +{ + static const PgQuery__Float init_value = PG_QUERY__FLOAT__INIT; + *message = init_value; +} +size_t pg_query__float__get_packed_size + (const PgQuery__Float *message) +{ + assert(message->base.descriptor == &pg_query__float__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t pg_query__float__pack + (const PgQuery__Float *message, + uint8_t *out) +{ + assert(message->base.descriptor == &pg_query__float__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t pg_query__float__pack_to_buffer + (const PgQuery__Float *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &pg_query__float__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +PgQuery__Float * + pg_query__float__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (PgQuery__Float *) + protobuf_c_message_unpack (&pg_query__float__descriptor, + allocator, len, data); +} +void pg_query__float__free_unpacked + (PgQuery__Float *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &pg_query__float__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void pg_query__string__init + (PgQuery__String *message) +{ + static const PgQuery__String init_value = PG_QUERY__STRING__INIT; + *message = init_value; +} +size_t pg_query__string__get_packed_size + (const PgQuery__String *message) +{ + assert(message->base.descriptor == &pg_query__string__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t pg_query__string__pack + (const PgQuery__String *message, + uint8_t *out) +{ + assert(message->base.descriptor == &pg_query__string__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t pg_query__string__pack_to_buffer + (const PgQuery__String *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &pg_query__string__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +PgQuery__String * + pg_query__string__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (PgQuery__String *) + protobuf_c_message_unpack (&pg_query__string__descriptor, + allocator, len, data); +} +void pg_query__string__free_unpacked + (PgQuery__String *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &pg_query__string__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void pg_query__bit_string__init + (PgQuery__BitString *message) +{ + static const PgQuery__BitString init_value = PG_QUERY__BIT_STRING__INIT; + *message = init_value; +} +size_t pg_query__bit_string__get_packed_size + (const PgQuery__BitString *message) +{ + assert(message->base.descriptor == &pg_query__bit_string__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t pg_query__bit_string__pack + (const PgQuery__BitString *message, + uint8_t *out) +{ + assert(message->base.descriptor == &pg_query__bit_string__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t pg_query__bit_string__pack_to_buffer + (const PgQuery__BitString *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &pg_query__bit_string__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +PgQuery__BitString * + pg_query__bit_string__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (PgQuery__BitString *) + protobuf_c_message_unpack (&pg_query__bit_string__descriptor, + allocator, len, data); +} +void pg_query__bit_string__free_unpacked + (PgQuery__BitString *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &pg_query__bit_string__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void pg_query__null__init + (PgQuery__Null *message) +{ + static const PgQuery__Null init_value = PG_QUERY__NULL__INIT; + *message = init_value; +} +size_t pg_query__null__get_packed_size + (const PgQuery__Null *message) +{ + assert(message->base.descriptor == &pg_query__null__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t pg_query__null__pack + (const PgQuery__Null *message, + uint8_t *out) +{ + assert(message->base.descriptor == &pg_query__null__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t pg_query__null__pack_to_buffer + (const PgQuery__Null *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &pg_query__null__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +PgQuery__Null * + pg_query__null__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (PgQuery__Null *) + protobuf_c_message_unpack (&pg_query__null__descriptor, + allocator, len, data); +} +void pg_query__null__free_unpacked + (PgQuery__Null *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &pg_query__null__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void pg_query__list__init + (PgQuery__List *message) +{ + static const PgQuery__List init_value = PG_QUERY__LIST__INIT; + *message = init_value; +} +size_t pg_query__list__get_packed_size + (const PgQuery__List *message) +{ + assert(message->base.descriptor == &pg_query__list__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t pg_query__list__pack + (const PgQuery__List *message, + uint8_t *out) +{ + assert(message->base.descriptor == &pg_query__list__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t pg_query__list__pack_to_buffer + (const PgQuery__List *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &pg_query__list__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +PgQuery__List * + pg_query__list__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (PgQuery__List *) + protobuf_c_message_unpack (&pg_query__list__descriptor, + allocator, len, data); +} +void pg_query__list__free_unpacked + (PgQuery__List *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &pg_query__list__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void pg_query__oid_list__init + (PgQuery__OidList *message) +{ + static const PgQuery__OidList init_value = PG_QUERY__OID_LIST__INIT; + *message = init_value; +} +size_t pg_query__oid_list__get_packed_size + (const PgQuery__OidList *message) +{ + assert(message->base.descriptor == &pg_query__oid_list__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t pg_query__oid_list__pack + (const PgQuery__OidList *message, + uint8_t *out) +{ + assert(message->base.descriptor == &pg_query__oid_list__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t pg_query__oid_list__pack_to_buffer + (const PgQuery__OidList *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &pg_query__oid_list__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +PgQuery__OidList * + pg_query__oid_list__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (PgQuery__OidList *) + protobuf_c_message_unpack (&pg_query__oid_list__descriptor, + allocator, len, data); +} +void pg_query__oid_list__free_unpacked + (PgQuery__OidList *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &pg_query__oid_list__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void pg_query__int_list__init + (PgQuery__IntList *message) +{ + static const PgQuery__IntList init_value = PG_QUERY__INT_LIST__INIT; + *message = init_value; +} +size_t pg_query__int_list__get_packed_size + (const PgQuery__IntList *message) +{ + assert(message->base.descriptor == &pg_query__int_list__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t pg_query__int_list__pack + (const PgQuery__IntList *message, + uint8_t *out) +{ + assert(message->base.descriptor == &pg_query__int_list__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t pg_query__int_list__pack_to_buffer + (const PgQuery__IntList *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &pg_query__int_list__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +PgQuery__IntList * + pg_query__int_list__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (PgQuery__IntList *) + protobuf_c_message_unpack (&pg_query__int_list__descriptor, + allocator, len, data); +} +void pg_query__int_list__free_unpacked + (PgQuery__IntList *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &pg_query__int_list__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void pg_query__alias__init + (PgQuery__Alias *message) +{ + static const PgQuery__Alias init_value = PG_QUERY__ALIAS__INIT; + *message = init_value; +} +size_t pg_query__alias__get_packed_size + (const PgQuery__Alias *message) +{ + assert(message->base.descriptor == &pg_query__alias__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t pg_query__alias__pack + (const PgQuery__Alias *message, + uint8_t *out) +{ + assert(message->base.descriptor == &pg_query__alias__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t pg_query__alias__pack_to_buffer + (const PgQuery__Alias *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &pg_query__alias__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +PgQuery__Alias * + pg_query__alias__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (PgQuery__Alias *) + protobuf_c_message_unpack (&pg_query__alias__descriptor, + allocator, len, data); +} +void pg_query__alias__free_unpacked + (PgQuery__Alias *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &pg_query__alias__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void pg_query__range_var__init + (PgQuery__RangeVar *message) +{ + static const PgQuery__RangeVar init_value = PG_QUERY__RANGE_VAR__INIT; + *message = init_value; +} +size_t pg_query__range_var__get_packed_size + (const PgQuery__RangeVar *message) +{ + assert(message->base.descriptor == &pg_query__range_var__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t pg_query__range_var__pack + (const PgQuery__RangeVar *message, + uint8_t *out) +{ + assert(message->base.descriptor == &pg_query__range_var__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t pg_query__range_var__pack_to_buffer + (const PgQuery__RangeVar *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &pg_query__range_var__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +PgQuery__RangeVar * + pg_query__range_var__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (PgQuery__RangeVar *) + protobuf_c_message_unpack (&pg_query__range_var__descriptor, + allocator, len, data); +} +void pg_query__range_var__free_unpacked + (PgQuery__RangeVar *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &pg_query__range_var__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void pg_query__table_func__init + (PgQuery__TableFunc *message) +{ + static const PgQuery__TableFunc init_value = PG_QUERY__TABLE_FUNC__INIT; + *message = init_value; +} +size_t pg_query__table_func__get_packed_size + (const PgQuery__TableFunc *message) +{ + assert(message->base.descriptor == &pg_query__table_func__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t pg_query__table_func__pack + (const PgQuery__TableFunc *message, + uint8_t *out) +{ + assert(message->base.descriptor == &pg_query__table_func__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t pg_query__table_func__pack_to_buffer + (const PgQuery__TableFunc *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &pg_query__table_func__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +PgQuery__TableFunc * + pg_query__table_func__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (PgQuery__TableFunc *) + protobuf_c_message_unpack (&pg_query__table_func__descriptor, + allocator, len, data); +} +void pg_query__table_func__free_unpacked + (PgQuery__TableFunc *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &pg_query__table_func__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void pg_query__expr__init + (PgQuery__Expr *message) +{ + static const PgQuery__Expr init_value = PG_QUERY__EXPR__INIT; + *message = init_value; +} +size_t pg_query__expr__get_packed_size + (const PgQuery__Expr *message) +{ + assert(message->base.descriptor == &pg_query__expr__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t pg_query__expr__pack + (const PgQuery__Expr *message, + uint8_t *out) +{ + assert(message->base.descriptor == &pg_query__expr__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t pg_query__expr__pack_to_buffer + (const PgQuery__Expr *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &pg_query__expr__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +PgQuery__Expr * + pg_query__expr__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (PgQuery__Expr *) + protobuf_c_message_unpack (&pg_query__expr__descriptor, + allocator, len, data); +} +void pg_query__expr__free_unpacked + (PgQuery__Expr *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &pg_query__expr__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void pg_query__var__init + (PgQuery__Var *message) +{ + static const PgQuery__Var init_value = PG_QUERY__VAR__INIT; + *message = init_value; +} +size_t pg_query__var__get_packed_size + (const PgQuery__Var *message) +{ + assert(message->base.descriptor == &pg_query__var__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t pg_query__var__pack + (const PgQuery__Var *message, + uint8_t *out) +{ + assert(message->base.descriptor == &pg_query__var__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t pg_query__var__pack_to_buffer + (const PgQuery__Var *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &pg_query__var__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +PgQuery__Var * + pg_query__var__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (PgQuery__Var *) + protobuf_c_message_unpack (&pg_query__var__descriptor, + allocator, len, data); +} +void pg_query__var__free_unpacked + (PgQuery__Var *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &pg_query__var__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void pg_query__param__init + (PgQuery__Param *message) +{ + static const PgQuery__Param init_value = PG_QUERY__PARAM__INIT; + *message = init_value; +} +size_t pg_query__param__get_packed_size + (const PgQuery__Param *message) +{ + assert(message->base.descriptor == &pg_query__param__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t pg_query__param__pack + (const PgQuery__Param *message, + uint8_t *out) +{ + assert(message->base.descriptor == &pg_query__param__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t pg_query__param__pack_to_buffer + (const PgQuery__Param *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &pg_query__param__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +PgQuery__Param * + pg_query__param__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (PgQuery__Param *) + protobuf_c_message_unpack (&pg_query__param__descriptor, + allocator, len, data); +} +void pg_query__param__free_unpacked + (PgQuery__Param *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &pg_query__param__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void pg_query__aggref__init + (PgQuery__Aggref *message) +{ + static const PgQuery__Aggref init_value = PG_QUERY__AGGREF__INIT; + *message = init_value; +} +size_t pg_query__aggref__get_packed_size + (const PgQuery__Aggref *message) +{ + assert(message->base.descriptor == &pg_query__aggref__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t pg_query__aggref__pack + (const PgQuery__Aggref *message, + uint8_t *out) +{ + assert(message->base.descriptor == &pg_query__aggref__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t pg_query__aggref__pack_to_buffer + (const PgQuery__Aggref *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &pg_query__aggref__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +PgQuery__Aggref * + pg_query__aggref__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (PgQuery__Aggref *) + protobuf_c_message_unpack (&pg_query__aggref__descriptor, + allocator, len, data); +} +void pg_query__aggref__free_unpacked + (PgQuery__Aggref *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &pg_query__aggref__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void pg_query__grouping_func__init + (PgQuery__GroupingFunc *message) +{ + static const PgQuery__GroupingFunc init_value = PG_QUERY__GROUPING_FUNC__INIT; + *message = init_value; +} +size_t pg_query__grouping_func__get_packed_size + (const PgQuery__GroupingFunc *message) +{ + assert(message->base.descriptor == &pg_query__grouping_func__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t pg_query__grouping_func__pack + (const PgQuery__GroupingFunc *message, + uint8_t *out) +{ + assert(message->base.descriptor == &pg_query__grouping_func__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t pg_query__grouping_func__pack_to_buffer + (const PgQuery__GroupingFunc *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &pg_query__grouping_func__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +PgQuery__GroupingFunc * + pg_query__grouping_func__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (PgQuery__GroupingFunc *) + protobuf_c_message_unpack (&pg_query__grouping_func__descriptor, + allocator, len, data); +} +void pg_query__grouping_func__free_unpacked + (PgQuery__GroupingFunc *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &pg_query__grouping_func__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void pg_query__window_func__init + (PgQuery__WindowFunc *message) +{ + static const PgQuery__WindowFunc init_value = PG_QUERY__WINDOW_FUNC__INIT; + *message = init_value; +} +size_t pg_query__window_func__get_packed_size + (const PgQuery__WindowFunc *message) +{ + assert(message->base.descriptor == &pg_query__window_func__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t pg_query__window_func__pack + (const PgQuery__WindowFunc *message, + uint8_t *out) +{ + assert(message->base.descriptor == &pg_query__window_func__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t pg_query__window_func__pack_to_buffer + (const PgQuery__WindowFunc *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &pg_query__window_func__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +PgQuery__WindowFunc * + pg_query__window_func__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (PgQuery__WindowFunc *) + protobuf_c_message_unpack (&pg_query__window_func__descriptor, + allocator, len, data); +} +void pg_query__window_func__free_unpacked + (PgQuery__WindowFunc *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &pg_query__window_func__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void pg_query__subscripting_ref__init + (PgQuery__SubscriptingRef *message) +{ + static const PgQuery__SubscriptingRef init_value = PG_QUERY__SUBSCRIPTING_REF__INIT; + *message = init_value; +} +size_t pg_query__subscripting_ref__get_packed_size + (const PgQuery__SubscriptingRef *message) +{ + assert(message->base.descriptor == &pg_query__subscripting_ref__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t pg_query__subscripting_ref__pack + (const PgQuery__SubscriptingRef *message, + uint8_t *out) +{ + assert(message->base.descriptor == &pg_query__subscripting_ref__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t pg_query__subscripting_ref__pack_to_buffer + (const PgQuery__SubscriptingRef *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &pg_query__subscripting_ref__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +PgQuery__SubscriptingRef * + pg_query__subscripting_ref__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (PgQuery__SubscriptingRef *) + protobuf_c_message_unpack (&pg_query__subscripting_ref__descriptor, + allocator, len, data); +} +void pg_query__subscripting_ref__free_unpacked + (PgQuery__SubscriptingRef *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &pg_query__subscripting_ref__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void pg_query__func_expr__init + (PgQuery__FuncExpr *message) +{ + static const PgQuery__FuncExpr init_value = PG_QUERY__FUNC_EXPR__INIT; + *message = init_value; +} +size_t pg_query__func_expr__get_packed_size + (const PgQuery__FuncExpr *message) +{ + assert(message->base.descriptor == &pg_query__func_expr__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t pg_query__func_expr__pack + (const PgQuery__FuncExpr *message, + uint8_t *out) +{ + assert(message->base.descriptor == &pg_query__func_expr__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t pg_query__func_expr__pack_to_buffer + (const PgQuery__FuncExpr *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &pg_query__func_expr__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +PgQuery__FuncExpr * + pg_query__func_expr__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (PgQuery__FuncExpr *) + protobuf_c_message_unpack (&pg_query__func_expr__descriptor, + allocator, len, data); +} +void pg_query__func_expr__free_unpacked + (PgQuery__FuncExpr *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &pg_query__func_expr__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void pg_query__named_arg_expr__init + (PgQuery__NamedArgExpr *message) +{ + static const PgQuery__NamedArgExpr init_value = PG_QUERY__NAMED_ARG_EXPR__INIT; + *message = init_value; +} +size_t pg_query__named_arg_expr__get_packed_size + (const PgQuery__NamedArgExpr *message) +{ + assert(message->base.descriptor == &pg_query__named_arg_expr__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t pg_query__named_arg_expr__pack + (const PgQuery__NamedArgExpr *message, + uint8_t *out) +{ + assert(message->base.descriptor == &pg_query__named_arg_expr__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t pg_query__named_arg_expr__pack_to_buffer + (const PgQuery__NamedArgExpr *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &pg_query__named_arg_expr__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +PgQuery__NamedArgExpr * + pg_query__named_arg_expr__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (PgQuery__NamedArgExpr *) + protobuf_c_message_unpack (&pg_query__named_arg_expr__descriptor, + allocator, len, data); +} +void pg_query__named_arg_expr__free_unpacked + (PgQuery__NamedArgExpr *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &pg_query__named_arg_expr__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void pg_query__op_expr__init + (PgQuery__OpExpr *message) +{ + static const PgQuery__OpExpr init_value = PG_QUERY__OP_EXPR__INIT; + *message = init_value; +} +size_t pg_query__op_expr__get_packed_size + (const PgQuery__OpExpr *message) +{ + assert(message->base.descriptor == &pg_query__op_expr__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t pg_query__op_expr__pack + (const PgQuery__OpExpr *message, + uint8_t *out) +{ + assert(message->base.descriptor == &pg_query__op_expr__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t pg_query__op_expr__pack_to_buffer + (const PgQuery__OpExpr *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &pg_query__op_expr__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +PgQuery__OpExpr * + pg_query__op_expr__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (PgQuery__OpExpr *) + protobuf_c_message_unpack (&pg_query__op_expr__descriptor, + allocator, len, data); +} +void pg_query__op_expr__free_unpacked + (PgQuery__OpExpr *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &pg_query__op_expr__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void pg_query__distinct_expr__init + (PgQuery__DistinctExpr *message) +{ + static const PgQuery__DistinctExpr init_value = PG_QUERY__DISTINCT_EXPR__INIT; + *message = init_value; +} +size_t pg_query__distinct_expr__get_packed_size + (const PgQuery__DistinctExpr *message) +{ + assert(message->base.descriptor == &pg_query__distinct_expr__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t pg_query__distinct_expr__pack + (const PgQuery__DistinctExpr *message, + uint8_t *out) +{ + assert(message->base.descriptor == &pg_query__distinct_expr__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t pg_query__distinct_expr__pack_to_buffer + (const PgQuery__DistinctExpr *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &pg_query__distinct_expr__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +PgQuery__DistinctExpr * + pg_query__distinct_expr__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (PgQuery__DistinctExpr *) + protobuf_c_message_unpack (&pg_query__distinct_expr__descriptor, + allocator, len, data); +} +void pg_query__distinct_expr__free_unpacked + (PgQuery__DistinctExpr *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &pg_query__distinct_expr__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void pg_query__null_if_expr__init + (PgQuery__NullIfExpr *message) +{ + static const PgQuery__NullIfExpr init_value = PG_QUERY__NULL_IF_EXPR__INIT; + *message = init_value; +} +size_t pg_query__null_if_expr__get_packed_size + (const PgQuery__NullIfExpr *message) +{ + assert(message->base.descriptor == &pg_query__null_if_expr__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t pg_query__null_if_expr__pack + (const PgQuery__NullIfExpr *message, + uint8_t *out) +{ + assert(message->base.descriptor == &pg_query__null_if_expr__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t pg_query__null_if_expr__pack_to_buffer + (const PgQuery__NullIfExpr *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &pg_query__null_if_expr__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +PgQuery__NullIfExpr * + pg_query__null_if_expr__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (PgQuery__NullIfExpr *) + protobuf_c_message_unpack (&pg_query__null_if_expr__descriptor, + allocator, len, data); +} +void pg_query__null_if_expr__free_unpacked + (PgQuery__NullIfExpr *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &pg_query__null_if_expr__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void pg_query__scalar_array_op_expr__init + (PgQuery__ScalarArrayOpExpr *message) +{ + static const PgQuery__ScalarArrayOpExpr init_value = PG_QUERY__SCALAR_ARRAY_OP_EXPR__INIT; + *message = init_value; +} +size_t pg_query__scalar_array_op_expr__get_packed_size + (const PgQuery__ScalarArrayOpExpr *message) +{ + assert(message->base.descriptor == &pg_query__scalar_array_op_expr__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t pg_query__scalar_array_op_expr__pack + (const PgQuery__ScalarArrayOpExpr *message, + uint8_t *out) +{ + assert(message->base.descriptor == &pg_query__scalar_array_op_expr__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t pg_query__scalar_array_op_expr__pack_to_buffer + (const PgQuery__ScalarArrayOpExpr *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &pg_query__scalar_array_op_expr__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +PgQuery__ScalarArrayOpExpr * + pg_query__scalar_array_op_expr__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (PgQuery__ScalarArrayOpExpr *) + protobuf_c_message_unpack (&pg_query__scalar_array_op_expr__descriptor, + allocator, len, data); +} +void pg_query__scalar_array_op_expr__free_unpacked + (PgQuery__ScalarArrayOpExpr *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &pg_query__scalar_array_op_expr__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void pg_query__bool_expr__init + (PgQuery__BoolExpr *message) +{ + static const PgQuery__BoolExpr init_value = PG_QUERY__BOOL_EXPR__INIT; + *message = init_value; +} +size_t pg_query__bool_expr__get_packed_size + (const PgQuery__BoolExpr *message) +{ + assert(message->base.descriptor == &pg_query__bool_expr__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t pg_query__bool_expr__pack + (const PgQuery__BoolExpr *message, + uint8_t *out) +{ + assert(message->base.descriptor == &pg_query__bool_expr__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t pg_query__bool_expr__pack_to_buffer + (const PgQuery__BoolExpr *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &pg_query__bool_expr__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +PgQuery__BoolExpr * + pg_query__bool_expr__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (PgQuery__BoolExpr *) + protobuf_c_message_unpack (&pg_query__bool_expr__descriptor, + allocator, len, data); +} +void pg_query__bool_expr__free_unpacked + (PgQuery__BoolExpr *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &pg_query__bool_expr__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void pg_query__sub_link__init + (PgQuery__SubLink *message) +{ + static const PgQuery__SubLink init_value = PG_QUERY__SUB_LINK__INIT; + *message = init_value; +} +size_t pg_query__sub_link__get_packed_size + (const PgQuery__SubLink *message) +{ + assert(message->base.descriptor == &pg_query__sub_link__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t pg_query__sub_link__pack + (const PgQuery__SubLink *message, + uint8_t *out) +{ + assert(message->base.descriptor == &pg_query__sub_link__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t pg_query__sub_link__pack_to_buffer + (const PgQuery__SubLink *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &pg_query__sub_link__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +PgQuery__SubLink * + pg_query__sub_link__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (PgQuery__SubLink *) + protobuf_c_message_unpack (&pg_query__sub_link__descriptor, + allocator, len, data); +} +void pg_query__sub_link__free_unpacked + (PgQuery__SubLink *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &pg_query__sub_link__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void pg_query__sub_plan__init + (PgQuery__SubPlan *message) +{ + static const PgQuery__SubPlan init_value = PG_QUERY__SUB_PLAN__INIT; + *message = init_value; +} +size_t pg_query__sub_plan__get_packed_size + (const PgQuery__SubPlan *message) +{ + assert(message->base.descriptor == &pg_query__sub_plan__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t pg_query__sub_plan__pack + (const PgQuery__SubPlan *message, + uint8_t *out) +{ + assert(message->base.descriptor == &pg_query__sub_plan__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t pg_query__sub_plan__pack_to_buffer + (const PgQuery__SubPlan *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &pg_query__sub_plan__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +PgQuery__SubPlan * + pg_query__sub_plan__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (PgQuery__SubPlan *) + protobuf_c_message_unpack (&pg_query__sub_plan__descriptor, + allocator, len, data); +} +void pg_query__sub_plan__free_unpacked + (PgQuery__SubPlan *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &pg_query__sub_plan__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void pg_query__alternative_sub_plan__init + (PgQuery__AlternativeSubPlan *message) +{ + static const PgQuery__AlternativeSubPlan init_value = PG_QUERY__ALTERNATIVE_SUB_PLAN__INIT; + *message = init_value; +} +size_t pg_query__alternative_sub_plan__get_packed_size + (const PgQuery__AlternativeSubPlan *message) +{ + assert(message->base.descriptor == &pg_query__alternative_sub_plan__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t pg_query__alternative_sub_plan__pack + (const PgQuery__AlternativeSubPlan *message, + uint8_t *out) +{ + assert(message->base.descriptor == &pg_query__alternative_sub_plan__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t pg_query__alternative_sub_plan__pack_to_buffer + (const PgQuery__AlternativeSubPlan *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &pg_query__alternative_sub_plan__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +PgQuery__AlternativeSubPlan * + pg_query__alternative_sub_plan__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (PgQuery__AlternativeSubPlan *) + protobuf_c_message_unpack (&pg_query__alternative_sub_plan__descriptor, + allocator, len, data); +} +void pg_query__alternative_sub_plan__free_unpacked + (PgQuery__AlternativeSubPlan *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &pg_query__alternative_sub_plan__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void pg_query__field_select__init + (PgQuery__FieldSelect *message) +{ + static const PgQuery__FieldSelect init_value = PG_QUERY__FIELD_SELECT__INIT; + *message = init_value; +} +size_t pg_query__field_select__get_packed_size + (const PgQuery__FieldSelect *message) +{ + assert(message->base.descriptor == &pg_query__field_select__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t pg_query__field_select__pack + (const PgQuery__FieldSelect *message, + uint8_t *out) +{ + assert(message->base.descriptor == &pg_query__field_select__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t pg_query__field_select__pack_to_buffer + (const PgQuery__FieldSelect *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &pg_query__field_select__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +PgQuery__FieldSelect * + pg_query__field_select__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (PgQuery__FieldSelect *) + protobuf_c_message_unpack (&pg_query__field_select__descriptor, + allocator, len, data); +} +void pg_query__field_select__free_unpacked + (PgQuery__FieldSelect *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &pg_query__field_select__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void pg_query__field_store__init + (PgQuery__FieldStore *message) +{ + static const PgQuery__FieldStore init_value = PG_QUERY__FIELD_STORE__INIT; + *message = init_value; +} +size_t pg_query__field_store__get_packed_size + (const PgQuery__FieldStore *message) +{ + assert(message->base.descriptor == &pg_query__field_store__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t pg_query__field_store__pack + (const PgQuery__FieldStore *message, + uint8_t *out) +{ + assert(message->base.descriptor == &pg_query__field_store__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t pg_query__field_store__pack_to_buffer + (const PgQuery__FieldStore *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &pg_query__field_store__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +PgQuery__FieldStore * + pg_query__field_store__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (PgQuery__FieldStore *) + protobuf_c_message_unpack (&pg_query__field_store__descriptor, + allocator, len, data); +} +void pg_query__field_store__free_unpacked + (PgQuery__FieldStore *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &pg_query__field_store__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void pg_query__relabel_type__init + (PgQuery__RelabelType *message) +{ + static const PgQuery__RelabelType init_value = PG_QUERY__RELABEL_TYPE__INIT; + *message = init_value; +} +size_t pg_query__relabel_type__get_packed_size + (const PgQuery__RelabelType *message) +{ + assert(message->base.descriptor == &pg_query__relabel_type__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t pg_query__relabel_type__pack + (const PgQuery__RelabelType *message, + uint8_t *out) +{ + assert(message->base.descriptor == &pg_query__relabel_type__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t pg_query__relabel_type__pack_to_buffer + (const PgQuery__RelabelType *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &pg_query__relabel_type__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +PgQuery__RelabelType * + pg_query__relabel_type__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (PgQuery__RelabelType *) + protobuf_c_message_unpack (&pg_query__relabel_type__descriptor, + allocator, len, data); +} +void pg_query__relabel_type__free_unpacked + (PgQuery__RelabelType *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &pg_query__relabel_type__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void pg_query__coerce_via_io__init + (PgQuery__CoerceViaIO *message) +{ + static const PgQuery__CoerceViaIO init_value = PG_QUERY__COERCE_VIA_IO__INIT; + *message = init_value; +} +size_t pg_query__coerce_via_io__get_packed_size + (const PgQuery__CoerceViaIO *message) +{ + assert(message->base.descriptor == &pg_query__coerce_via_io__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t pg_query__coerce_via_io__pack + (const PgQuery__CoerceViaIO *message, + uint8_t *out) +{ + assert(message->base.descriptor == &pg_query__coerce_via_io__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t pg_query__coerce_via_io__pack_to_buffer + (const PgQuery__CoerceViaIO *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &pg_query__coerce_via_io__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +PgQuery__CoerceViaIO * + pg_query__coerce_via_io__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (PgQuery__CoerceViaIO *) + protobuf_c_message_unpack (&pg_query__coerce_via_io__descriptor, + allocator, len, data); +} +void pg_query__coerce_via_io__free_unpacked + (PgQuery__CoerceViaIO *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &pg_query__coerce_via_io__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void pg_query__array_coerce_expr__init + (PgQuery__ArrayCoerceExpr *message) +{ + static const PgQuery__ArrayCoerceExpr init_value = PG_QUERY__ARRAY_COERCE_EXPR__INIT; + *message = init_value; +} +size_t pg_query__array_coerce_expr__get_packed_size + (const PgQuery__ArrayCoerceExpr *message) +{ + assert(message->base.descriptor == &pg_query__array_coerce_expr__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t pg_query__array_coerce_expr__pack + (const PgQuery__ArrayCoerceExpr *message, + uint8_t *out) +{ + assert(message->base.descriptor == &pg_query__array_coerce_expr__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t pg_query__array_coerce_expr__pack_to_buffer + (const PgQuery__ArrayCoerceExpr *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &pg_query__array_coerce_expr__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +PgQuery__ArrayCoerceExpr * + pg_query__array_coerce_expr__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (PgQuery__ArrayCoerceExpr *) + protobuf_c_message_unpack (&pg_query__array_coerce_expr__descriptor, + allocator, len, data); +} +void pg_query__array_coerce_expr__free_unpacked + (PgQuery__ArrayCoerceExpr *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &pg_query__array_coerce_expr__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void pg_query__convert_rowtype_expr__init + (PgQuery__ConvertRowtypeExpr *message) +{ + static const PgQuery__ConvertRowtypeExpr init_value = PG_QUERY__CONVERT_ROWTYPE_EXPR__INIT; + *message = init_value; +} +size_t pg_query__convert_rowtype_expr__get_packed_size + (const PgQuery__ConvertRowtypeExpr *message) +{ + assert(message->base.descriptor == &pg_query__convert_rowtype_expr__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t pg_query__convert_rowtype_expr__pack + (const PgQuery__ConvertRowtypeExpr *message, + uint8_t *out) +{ + assert(message->base.descriptor == &pg_query__convert_rowtype_expr__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t pg_query__convert_rowtype_expr__pack_to_buffer + (const PgQuery__ConvertRowtypeExpr *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &pg_query__convert_rowtype_expr__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +PgQuery__ConvertRowtypeExpr * + pg_query__convert_rowtype_expr__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (PgQuery__ConvertRowtypeExpr *) + protobuf_c_message_unpack (&pg_query__convert_rowtype_expr__descriptor, + allocator, len, data); +} +void pg_query__convert_rowtype_expr__free_unpacked + (PgQuery__ConvertRowtypeExpr *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &pg_query__convert_rowtype_expr__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void pg_query__collate_expr__init + (PgQuery__CollateExpr *message) +{ + static const PgQuery__CollateExpr init_value = PG_QUERY__COLLATE_EXPR__INIT; + *message = init_value; +} +size_t pg_query__collate_expr__get_packed_size + (const PgQuery__CollateExpr *message) +{ + assert(message->base.descriptor == &pg_query__collate_expr__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t pg_query__collate_expr__pack + (const PgQuery__CollateExpr *message, + uint8_t *out) +{ + assert(message->base.descriptor == &pg_query__collate_expr__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t pg_query__collate_expr__pack_to_buffer + (const PgQuery__CollateExpr *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &pg_query__collate_expr__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +PgQuery__CollateExpr * + pg_query__collate_expr__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (PgQuery__CollateExpr *) + protobuf_c_message_unpack (&pg_query__collate_expr__descriptor, + allocator, len, data); +} +void pg_query__collate_expr__free_unpacked + (PgQuery__CollateExpr *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &pg_query__collate_expr__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void pg_query__case_expr__init + (PgQuery__CaseExpr *message) +{ + static const PgQuery__CaseExpr init_value = PG_QUERY__CASE_EXPR__INIT; + *message = init_value; +} +size_t pg_query__case_expr__get_packed_size + (const PgQuery__CaseExpr *message) +{ + assert(message->base.descriptor == &pg_query__case_expr__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t pg_query__case_expr__pack + (const PgQuery__CaseExpr *message, + uint8_t *out) +{ + assert(message->base.descriptor == &pg_query__case_expr__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t pg_query__case_expr__pack_to_buffer + (const PgQuery__CaseExpr *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &pg_query__case_expr__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +PgQuery__CaseExpr * + pg_query__case_expr__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (PgQuery__CaseExpr *) + protobuf_c_message_unpack (&pg_query__case_expr__descriptor, + allocator, len, data); +} +void pg_query__case_expr__free_unpacked + (PgQuery__CaseExpr *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &pg_query__case_expr__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void pg_query__case_when__init + (PgQuery__CaseWhen *message) +{ + static const PgQuery__CaseWhen init_value = PG_QUERY__CASE_WHEN__INIT; + *message = init_value; +} +size_t pg_query__case_when__get_packed_size + (const PgQuery__CaseWhen *message) +{ + assert(message->base.descriptor == &pg_query__case_when__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t pg_query__case_when__pack + (const PgQuery__CaseWhen *message, + uint8_t *out) +{ + assert(message->base.descriptor == &pg_query__case_when__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t pg_query__case_when__pack_to_buffer + (const PgQuery__CaseWhen *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &pg_query__case_when__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +PgQuery__CaseWhen * + pg_query__case_when__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (PgQuery__CaseWhen *) + protobuf_c_message_unpack (&pg_query__case_when__descriptor, + allocator, len, data); +} +void pg_query__case_when__free_unpacked + (PgQuery__CaseWhen *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &pg_query__case_when__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void pg_query__case_test_expr__init + (PgQuery__CaseTestExpr *message) +{ + static const PgQuery__CaseTestExpr init_value = PG_QUERY__CASE_TEST_EXPR__INIT; + *message = init_value; +} +size_t pg_query__case_test_expr__get_packed_size + (const PgQuery__CaseTestExpr *message) +{ + assert(message->base.descriptor == &pg_query__case_test_expr__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t pg_query__case_test_expr__pack + (const PgQuery__CaseTestExpr *message, + uint8_t *out) +{ + assert(message->base.descriptor == &pg_query__case_test_expr__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t pg_query__case_test_expr__pack_to_buffer + (const PgQuery__CaseTestExpr *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &pg_query__case_test_expr__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +PgQuery__CaseTestExpr * + pg_query__case_test_expr__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (PgQuery__CaseTestExpr *) + protobuf_c_message_unpack (&pg_query__case_test_expr__descriptor, + allocator, len, data); +} +void pg_query__case_test_expr__free_unpacked + (PgQuery__CaseTestExpr *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &pg_query__case_test_expr__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void pg_query__array_expr__init + (PgQuery__ArrayExpr *message) +{ + static const PgQuery__ArrayExpr init_value = PG_QUERY__ARRAY_EXPR__INIT; + *message = init_value; +} +size_t pg_query__array_expr__get_packed_size + (const PgQuery__ArrayExpr *message) +{ + assert(message->base.descriptor == &pg_query__array_expr__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t pg_query__array_expr__pack + (const PgQuery__ArrayExpr *message, + uint8_t *out) +{ + assert(message->base.descriptor == &pg_query__array_expr__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t pg_query__array_expr__pack_to_buffer + (const PgQuery__ArrayExpr *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &pg_query__array_expr__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +PgQuery__ArrayExpr * + pg_query__array_expr__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (PgQuery__ArrayExpr *) + protobuf_c_message_unpack (&pg_query__array_expr__descriptor, + allocator, len, data); +} +void pg_query__array_expr__free_unpacked + (PgQuery__ArrayExpr *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &pg_query__array_expr__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void pg_query__row_expr__init + (PgQuery__RowExpr *message) +{ + static const PgQuery__RowExpr init_value = PG_QUERY__ROW_EXPR__INIT; + *message = init_value; +} +size_t pg_query__row_expr__get_packed_size + (const PgQuery__RowExpr *message) +{ + assert(message->base.descriptor == &pg_query__row_expr__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t pg_query__row_expr__pack + (const PgQuery__RowExpr *message, + uint8_t *out) +{ + assert(message->base.descriptor == &pg_query__row_expr__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t pg_query__row_expr__pack_to_buffer + (const PgQuery__RowExpr *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &pg_query__row_expr__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +PgQuery__RowExpr * + pg_query__row_expr__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (PgQuery__RowExpr *) + protobuf_c_message_unpack (&pg_query__row_expr__descriptor, + allocator, len, data); +} +void pg_query__row_expr__free_unpacked + (PgQuery__RowExpr *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &pg_query__row_expr__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void pg_query__row_compare_expr__init + (PgQuery__RowCompareExpr *message) +{ + static const PgQuery__RowCompareExpr init_value = PG_QUERY__ROW_COMPARE_EXPR__INIT; + *message = init_value; +} +size_t pg_query__row_compare_expr__get_packed_size + (const PgQuery__RowCompareExpr *message) +{ + assert(message->base.descriptor == &pg_query__row_compare_expr__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t pg_query__row_compare_expr__pack + (const PgQuery__RowCompareExpr *message, + uint8_t *out) +{ + assert(message->base.descriptor == &pg_query__row_compare_expr__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t pg_query__row_compare_expr__pack_to_buffer + (const PgQuery__RowCompareExpr *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &pg_query__row_compare_expr__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +PgQuery__RowCompareExpr * + pg_query__row_compare_expr__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (PgQuery__RowCompareExpr *) + protobuf_c_message_unpack (&pg_query__row_compare_expr__descriptor, + allocator, len, data); +} +void pg_query__row_compare_expr__free_unpacked + (PgQuery__RowCompareExpr *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &pg_query__row_compare_expr__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void pg_query__coalesce_expr__init + (PgQuery__CoalesceExpr *message) +{ + static const PgQuery__CoalesceExpr init_value = PG_QUERY__COALESCE_EXPR__INIT; + *message = init_value; +} +size_t pg_query__coalesce_expr__get_packed_size + (const PgQuery__CoalesceExpr *message) +{ + assert(message->base.descriptor == &pg_query__coalesce_expr__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t pg_query__coalesce_expr__pack + (const PgQuery__CoalesceExpr *message, + uint8_t *out) +{ + assert(message->base.descriptor == &pg_query__coalesce_expr__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t pg_query__coalesce_expr__pack_to_buffer + (const PgQuery__CoalesceExpr *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &pg_query__coalesce_expr__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +PgQuery__CoalesceExpr * + pg_query__coalesce_expr__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (PgQuery__CoalesceExpr *) + protobuf_c_message_unpack (&pg_query__coalesce_expr__descriptor, + allocator, len, data); +} +void pg_query__coalesce_expr__free_unpacked + (PgQuery__CoalesceExpr *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &pg_query__coalesce_expr__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void pg_query__min_max_expr__init + (PgQuery__MinMaxExpr *message) +{ + static const PgQuery__MinMaxExpr init_value = PG_QUERY__MIN_MAX_EXPR__INIT; + *message = init_value; +} +size_t pg_query__min_max_expr__get_packed_size + (const PgQuery__MinMaxExpr *message) +{ + assert(message->base.descriptor == &pg_query__min_max_expr__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t pg_query__min_max_expr__pack + (const PgQuery__MinMaxExpr *message, + uint8_t *out) +{ + assert(message->base.descriptor == &pg_query__min_max_expr__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t pg_query__min_max_expr__pack_to_buffer + (const PgQuery__MinMaxExpr *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &pg_query__min_max_expr__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +PgQuery__MinMaxExpr * + pg_query__min_max_expr__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (PgQuery__MinMaxExpr *) + protobuf_c_message_unpack (&pg_query__min_max_expr__descriptor, + allocator, len, data); +} +void pg_query__min_max_expr__free_unpacked + (PgQuery__MinMaxExpr *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &pg_query__min_max_expr__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void pg_query__sqlvalue_function__init + (PgQuery__SQLValueFunction *message) +{ + static const PgQuery__SQLValueFunction init_value = PG_QUERY__SQLVALUE_FUNCTION__INIT; + *message = init_value; +} +size_t pg_query__sqlvalue_function__get_packed_size + (const PgQuery__SQLValueFunction *message) +{ + assert(message->base.descriptor == &pg_query__sqlvalue_function__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t pg_query__sqlvalue_function__pack + (const PgQuery__SQLValueFunction *message, + uint8_t *out) +{ + assert(message->base.descriptor == &pg_query__sqlvalue_function__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t pg_query__sqlvalue_function__pack_to_buffer + (const PgQuery__SQLValueFunction *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &pg_query__sqlvalue_function__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +PgQuery__SQLValueFunction * + pg_query__sqlvalue_function__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (PgQuery__SQLValueFunction *) + protobuf_c_message_unpack (&pg_query__sqlvalue_function__descriptor, + allocator, len, data); +} +void pg_query__sqlvalue_function__free_unpacked + (PgQuery__SQLValueFunction *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &pg_query__sqlvalue_function__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void pg_query__xml_expr__init + (PgQuery__XmlExpr *message) +{ + static const PgQuery__XmlExpr init_value = PG_QUERY__XML_EXPR__INIT; + *message = init_value; +} +size_t pg_query__xml_expr__get_packed_size + (const PgQuery__XmlExpr *message) +{ + assert(message->base.descriptor == &pg_query__xml_expr__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t pg_query__xml_expr__pack + (const PgQuery__XmlExpr *message, + uint8_t *out) +{ + assert(message->base.descriptor == &pg_query__xml_expr__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t pg_query__xml_expr__pack_to_buffer + (const PgQuery__XmlExpr *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &pg_query__xml_expr__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +PgQuery__XmlExpr * + pg_query__xml_expr__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (PgQuery__XmlExpr *) + protobuf_c_message_unpack (&pg_query__xml_expr__descriptor, + allocator, len, data); +} +void pg_query__xml_expr__free_unpacked + (PgQuery__XmlExpr *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &pg_query__xml_expr__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void pg_query__null_test__init + (PgQuery__NullTest *message) +{ + static const PgQuery__NullTest init_value = PG_QUERY__NULL_TEST__INIT; + *message = init_value; +} +size_t pg_query__null_test__get_packed_size + (const PgQuery__NullTest *message) +{ + assert(message->base.descriptor == &pg_query__null_test__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t pg_query__null_test__pack + (const PgQuery__NullTest *message, + uint8_t *out) +{ + assert(message->base.descriptor == &pg_query__null_test__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t pg_query__null_test__pack_to_buffer + (const PgQuery__NullTest *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &pg_query__null_test__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +PgQuery__NullTest * + pg_query__null_test__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (PgQuery__NullTest *) + protobuf_c_message_unpack (&pg_query__null_test__descriptor, + allocator, len, data); +} +void pg_query__null_test__free_unpacked + (PgQuery__NullTest *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &pg_query__null_test__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void pg_query__boolean_test__init + (PgQuery__BooleanTest *message) +{ + static const PgQuery__BooleanTest init_value = PG_QUERY__BOOLEAN_TEST__INIT; + *message = init_value; +} +size_t pg_query__boolean_test__get_packed_size + (const PgQuery__BooleanTest *message) +{ + assert(message->base.descriptor == &pg_query__boolean_test__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t pg_query__boolean_test__pack + (const PgQuery__BooleanTest *message, + uint8_t *out) +{ + assert(message->base.descriptor == &pg_query__boolean_test__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t pg_query__boolean_test__pack_to_buffer + (const PgQuery__BooleanTest *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &pg_query__boolean_test__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +PgQuery__BooleanTest * + pg_query__boolean_test__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (PgQuery__BooleanTest *) + protobuf_c_message_unpack (&pg_query__boolean_test__descriptor, + allocator, len, data); +} +void pg_query__boolean_test__free_unpacked + (PgQuery__BooleanTest *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &pg_query__boolean_test__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void pg_query__coerce_to_domain__init + (PgQuery__CoerceToDomain *message) +{ + static const PgQuery__CoerceToDomain init_value = PG_QUERY__COERCE_TO_DOMAIN__INIT; + *message = init_value; +} +size_t pg_query__coerce_to_domain__get_packed_size + (const PgQuery__CoerceToDomain *message) +{ + assert(message->base.descriptor == &pg_query__coerce_to_domain__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t pg_query__coerce_to_domain__pack + (const PgQuery__CoerceToDomain *message, + uint8_t *out) +{ + assert(message->base.descriptor == &pg_query__coerce_to_domain__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t pg_query__coerce_to_domain__pack_to_buffer + (const PgQuery__CoerceToDomain *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &pg_query__coerce_to_domain__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +PgQuery__CoerceToDomain * + pg_query__coerce_to_domain__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (PgQuery__CoerceToDomain *) + protobuf_c_message_unpack (&pg_query__coerce_to_domain__descriptor, + allocator, len, data); +} +void pg_query__coerce_to_domain__free_unpacked + (PgQuery__CoerceToDomain *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &pg_query__coerce_to_domain__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void pg_query__coerce_to_domain_value__init + (PgQuery__CoerceToDomainValue *message) +{ + static const PgQuery__CoerceToDomainValue init_value = PG_QUERY__COERCE_TO_DOMAIN_VALUE__INIT; + *message = init_value; +} +size_t pg_query__coerce_to_domain_value__get_packed_size + (const PgQuery__CoerceToDomainValue *message) +{ + assert(message->base.descriptor == &pg_query__coerce_to_domain_value__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t pg_query__coerce_to_domain_value__pack + (const PgQuery__CoerceToDomainValue *message, + uint8_t *out) +{ + assert(message->base.descriptor == &pg_query__coerce_to_domain_value__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t pg_query__coerce_to_domain_value__pack_to_buffer + (const PgQuery__CoerceToDomainValue *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &pg_query__coerce_to_domain_value__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +PgQuery__CoerceToDomainValue * + pg_query__coerce_to_domain_value__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (PgQuery__CoerceToDomainValue *) + protobuf_c_message_unpack (&pg_query__coerce_to_domain_value__descriptor, + allocator, len, data); +} +void pg_query__coerce_to_domain_value__free_unpacked + (PgQuery__CoerceToDomainValue *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &pg_query__coerce_to_domain_value__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void pg_query__set_to_default__init + (PgQuery__SetToDefault *message) +{ + static const PgQuery__SetToDefault init_value = PG_QUERY__SET_TO_DEFAULT__INIT; + *message = init_value; +} +size_t pg_query__set_to_default__get_packed_size + (const PgQuery__SetToDefault *message) +{ + assert(message->base.descriptor == &pg_query__set_to_default__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t pg_query__set_to_default__pack + (const PgQuery__SetToDefault *message, + uint8_t *out) +{ + assert(message->base.descriptor == &pg_query__set_to_default__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t pg_query__set_to_default__pack_to_buffer + (const PgQuery__SetToDefault *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &pg_query__set_to_default__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +PgQuery__SetToDefault * + pg_query__set_to_default__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (PgQuery__SetToDefault *) + protobuf_c_message_unpack (&pg_query__set_to_default__descriptor, + allocator, len, data); +} +void pg_query__set_to_default__free_unpacked + (PgQuery__SetToDefault *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &pg_query__set_to_default__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void pg_query__current_of_expr__init + (PgQuery__CurrentOfExpr *message) +{ + static const PgQuery__CurrentOfExpr init_value = PG_QUERY__CURRENT_OF_EXPR__INIT; + *message = init_value; +} +size_t pg_query__current_of_expr__get_packed_size + (const PgQuery__CurrentOfExpr *message) +{ + assert(message->base.descriptor == &pg_query__current_of_expr__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t pg_query__current_of_expr__pack + (const PgQuery__CurrentOfExpr *message, + uint8_t *out) +{ + assert(message->base.descriptor == &pg_query__current_of_expr__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t pg_query__current_of_expr__pack_to_buffer + (const PgQuery__CurrentOfExpr *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &pg_query__current_of_expr__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +PgQuery__CurrentOfExpr * + pg_query__current_of_expr__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (PgQuery__CurrentOfExpr *) + protobuf_c_message_unpack (&pg_query__current_of_expr__descriptor, + allocator, len, data); +} +void pg_query__current_of_expr__free_unpacked + (PgQuery__CurrentOfExpr *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &pg_query__current_of_expr__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void pg_query__next_value_expr__init + (PgQuery__NextValueExpr *message) +{ + static const PgQuery__NextValueExpr init_value = PG_QUERY__NEXT_VALUE_EXPR__INIT; + *message = init_value; +} +size_t pg_query__next_value_expr__get_packed_size + (const PgQuery__NextValueExpr *message) +{ + assert(message->base.descriptor == &pg_query__next_value_expr__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t pg_query__next_value_expr__pack + (const PgQuery__NextValueExpr *message, + uint8_t *out) +{ + assert(message->base.descriptor == &pg_query__next_value_expr__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t pg_query__next_value_expr__pack_to_buffer + (const PgQuery__NextValueExpr *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &pg_query__next_value_expr__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +PgQuery__NextValueExpr * + pg_query__next_value_expr__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (PgQuery__NextValueExpr *) + protobuf_c_message_unpack (&pg_query__next_value_expr__descriptor, + allocator, len, data); +} +void pg_query__next_value_expr__free_unpacked + (PgQuery__NextValueExpr *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &pg_query__next_value_expr__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void pg_query__inference_elem__init + (PgQuery__InferenceElem *message) +{ + static const PgQuery__InferenceElem init_value = PG_QUERY__INFERENCE_ELEM__INIT; + *message = init_value; +} +size_t pg_query__inference_elem__get_packed_size + (const PgQuery__InferenceElem *message) +{ + assert(message->base.descriptor == &pg_query__inference_elem__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t pg_query__inference_elem__pack + (const PgQuery__InferenceElem *message, + uint8_t *out) +{ + assert(message->base.descriptor == &pg_query__inference_elem__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t pg_query__inference_elem__pack_to_buffer + (const PgQuery__InferenceElem *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &pg_query__inference_elem__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +PgQuery__InferenceElem * + pg_query__inference_elem__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (PgQuery__InferenceElem *) + protobuf_c_message_unpack (&pg_query__inference_elem__descriptor, + allocator, len, data); +} +void pg_query__inference_elem__free_unpacked + (PgQuery__InferenceElem *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &pg_query__inference_elem__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void pg_query__target_entry__init + (PgQuery__TargetEntry *message) +{ + static const PgQuery__TargetEntry init_value = PG_QUERY__TARGET_ENTRY__INIT; + *message = init_value; +} +size_t pg_query__target_entry__get_packed_size + (const PgQuery__TargetEntry *message) +{ + assert(message->base.descriptor == &pg_query__target_entry__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t pg_query__target_entry__pack + (const PgQuery__TargetEntry *message, + uint8_t *out) +{ + assert(message->base.descriptor == &pg_query__target_entry__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t pg_query__target_entry__pack_to_buffer + (const PgQuery__TargetEntry *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &pg_query__target_entry__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +PgQuery__TargetEntry * + pg_query__target_entry__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (PgQuery__TargetEntry *) + protobuf_c_message_unpack (&pg_query__target_entry__descriptor, + allocator, len, data); +} +void pg_query__target_entry__free_unpacked + (PgQuery__TargetEntry *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &pg_query__target_entry__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void pg_query__range_tbl_ref__init + (PgQuery__RangeTblRef *message) +{ + static const PgQuery__RangeTblRef init_value = PG_QUERY__RANGE_TBL_REF__INIT; + *message = init_value; +} +size_t pg_query__range_tbl_ref__get_packed_size + (const PgQuery__RangeTblRef *message) +{ + assert(message->base.descriptor == &pg_query__range_tbl_ref__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t pg_query__range_tbl_ref__pack + (const PgQuery__RangeTblRef *message, + uint8_t *out) +{ + assert(message->base.descriptor == &pg_query__range_tbl_ref__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t pg_query__range_tbl_ref__pack_to_buffer + (const PgQuery__RangeTblRef *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &pg_query__range_tbl_ref__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +PgQuery__RangeTblRef * + pg_query__range_tbl_ref__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (PgQuery__RangeTblRef *) + protobuf_c_message_unpack (&pg_query__range_tbl_ref__descriptor, + allocator, len, data); +} +void pg_query__range_tbl_ref__free_unpacked + (PgQuery__RangeTblRef *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &pg_query__range_tbl_ref__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void pg_query__join_expr__init + (PgQuery__JoinExpr *message) +{ + static const PgQuery__JoinExpr init_value = PG_QUERY__JOIN_EXPR__INIT; + *message = init_value; +} +size_t pg_query__join_expr__get_packed_size + (const PgQuery__JoinExpr *message) +{ + assert(message->base.descriptor == &pg_query__join_expr__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t pg_query__join_expr__pack + (const PgQuery__JoinExpr *message, + uint8_t *out) +{ + assert(message->base.descriptor == &pg_query__join_expr__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t pg_query__join_expr__pack_to_buffer + (const PgQuery__JoinExpr *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &pg_query__join_expr__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +PgQuery__JoinExpr * + pg_query__join_expr__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (PgQuery__JoinExpr *) + protobuf_c_message_unpack (&pg_query__join_expr__descriptor, + allocator, len, data); +} +void pg_query__join_expr__free_unpacked + (PgQuery__JoinExpr *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &pg_query__join_expr__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void pg_query__from_expr__init + (PgQuery__FromExpr *message) +{ + static const PgQuery__FromExpr init_value = PG_QUERY__FROM_EXPR__INIT; + *message = init_value; +} +size_t pg_query__from_expr__get_packed_size + (const PgQuery__FromExpr *message) +{ + assert(message->base.descriptor == &pg_query__from_expr__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t pg_query__from_expr__pack + (const PgQuery__FromExpr *message, + uint8_t *out) +{ + assert(message->base.descriptor == &pg_query__from_expr__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t pg_query__from_expr__pack_to_buffer + (const PgQuery__FromExpr *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &pg_query__from_expr__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +PgQuery__FromExpr * + pg_query__from_expr__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (PgQuery__FromExpr *) + protobuf_c_message_unpack (&pg_query__from_expr__descriptor, + allocator, len, data); +} +void pg_query__from_expr__free_unpacked + (PgQuery__FromExpr *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &pg_query__from_expr__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void pg_query__on_conflict_expr__init + (PgQuery__OnConflictExpr *message) +{ + static const PgQuery__OnConflictExpr init_value = PG_QUERY__ON_CONFLICT_EXPR__INIT; + *message = init_value; +} +size_t pg_query__on_conflict_expr__get_packed_size + (const PgQuery__OnConflictExpr *message) +{ + assert(message->base.descriptor == &pg_query__on_conflict_expr__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t pg_query__on_conflict_expr__pack + (const PgQuery__OnConflictExpr *message, + uint8_t *out) +{ + assert(message->base.descriptor == &pg_query__on_conflict_expr__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t pg_query__on_conflict_expr__pack_to_buffer + (const PgQuery__OnConflictExpr *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &pg_query__on_conflict_expr__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +PgQuery__OnConflictExpr * + pg_query__on_conflict_expr__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (PgQuery__OnConflictExpr *) + protobuf_c_message_unpack (&pg_query__on_conflict_expr__descriptor, + allocator, len, data); +} +void pg_query__on_conflict_expr__free_unpacked + (PgQuery__OnConflictExpr *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &pg_query__on_conflict_expr__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void pg_query__into_clause__init + (PgQuery__IntoClause *message) +{ + static const PgQuery__IntoClause init_value = PG_QUERY__INTO_CLAUSE__INIT; + *message = init_value; +} +size_t pg_query__into_clause__get_packed_size + (const PgQuery__IntoClause *message) +{ + assert(message->base.descriptor == &pg_query__into_clause__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t pg_query__into_clause__pack + (const PgQuery__IntoClause *message, + uint8_t *out) +{ + assert(message->base.descriptor == &pg_query__into_clause__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t pg_query__into_clause__pack_to_buffer + (const PgQuery__IntoClause *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &pg_query__into_clause__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +PgQuery__IntoClause * + pg_query__into_clause__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (PgQuery__IntoClause *) + protobuf_c_message_unpack (&pg_query__into_clause__descriptor, + allocator, len, data); +} +void pg_query__into_clause__free_unpacked + (PgQuery__IntoClause *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &pg_query__into_clause__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void pg_query__raw_stmt__init + (PgQuery__RawStmt *message) +{ + static const PgQuery__RawStmt init_value = PG_QUERY__RAW_STMT__INIT; + *message = init_value; +} +size_t pg_query__raw_stmt__get_packed_size + (const PgQuery__RawStmt *message) +{ + assert(message->base.descriptor == &pg_query__raw_stmt__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t pg_query__raw_stmt__pack + (const PgQuery__RawStmt *message, + uint8_t *out) +{ + assert(message->base.descriptor == &pg_query__raw_stmt__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t pg_query__raw_stmt__pack_to_buffer + (const PgQuery__RawStmt *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &pg_query__raw_stmt__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +PgQuery__RawStmt * + pg_query__raw_stmt__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (PgQuery__RawStmt *) + protobuf_c_message_unpack (&pg_query__raw_stmt__descriptor, + allocator, len, data); +} +void pg_query__raw_stmt__free_unpacked + (PgQuery__RawStmt *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &pg_query__raw_stmt__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void pg_query__query__init + (PgQuery__Query *message) +{ + static const PgQuery__Query init_value = PG_QUERY__QUERY__INIT; + *message = init_value; +} +size_t pg_query__query__get_packed_size + (const PgQuery__Query *message) +{ + assert(message->base.descriptor == &pg_query__query__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t pg_query__query__pack + (const PgQuery__Query *message, + uint8_t *out) +{ + assert(message->base.descriptor == &pg_query__query__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t pg_query__query__pack_to_buffer + (const PgQuery__Query *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &pg_query__query__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +PgQuery__Query * + pg_query__query__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (PgQuery__Query *) + protobuf_c_message_unpack (&pg_query__query__descriptor, + allocator, len, data); +} +void pg_query__query__free_unpacked + (PgQuery__Query *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &pg_query__query__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void pg_query__insert_stmt__init + (PgQuery__InsertStmt *message) +{ + static const PgQuery__InsertStmt init_value = PG_QUERY__INSERT_STMT__INIT; + *message = init_value; +} +size_t pg_query__insert_stmt__get_packed_size + (const PgQuery__InsertStmt *message) +{ + assert(message->base.descriptor == &pg_query__insert_stmt__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t pg_query__insert_stmt__pack + (const PgQuery__InsertStmt *message, + uint8_t *out) +{ + assert(message->base.descriptor == &pg_query__insert_stmt__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t pg_query__insert_stmt__pack_to_buffer + (const PgQuery__InsertStmt *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &pg_query__insert_stmt__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +PgQuery__InsertStmt * + pg_query__insert_stmt__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (PgQuery__InsertStmt *) + protobuf_c_message_unpack (&pg_query__insert_stmt__descriptor, + allocator, len, data); +} +void pg_query__insert_stmt__free_unpacked + (PgQuery__InsertStmt *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &pg_query__insert_stmt__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void pg_query__delete_stmt__init + (PgQuery__DeleteStmt *message) +{ + static const PgQuery__DeleteStmt init_value = PG_QUERY__DELETE_STMT__INIT; + *message = init_value; +} +size_t pg_query__delete_stmt__get_packed_size + (const PgQuery__DeleteStmt *message) +{ + assert(message->base.descriptor == &pg_query__delete_stmt__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t pg_query__delete_stmt__pack + (const PgQuery__DeleteStmt *message, + uint8_t *out) +{ + assert(message->base.descriptor == &pg_query__delete_stmt__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t pg_query__delete_stmt__pack_to_buffer + (const PgQuery__DeleteStmt *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &pg_query__delete_stmt__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +PgQuery__DeleteStmt * + pg_query__delete_stmt__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (PgQuery__DeleteStmt *) + protobuf_c_message_unpack (&pg_query__delete_stmt__descriptor, + allocator, len, data); +} +void pg_query__delete_stmt__free_unpacked + (PgQuery__DeleteStmt *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &pg_query__delete_stmt__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void pg_query__update_stmt__init + (PgQuery__UpdateStmt *message) +{ + static const PgQuery__UpdateStmt init_value = PG_QUERY__UPDATE_STMT__INIT; + *message = init_value; +} +size_t pg_query__update_stmt__get_packed_size + (const PgQuery__UpdateStmt *message) +{ + assert(message->base.descriptor == &pg_query__update_stmt__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t pg_query__update_stmt__pack + (const PgQuery__UpdateStmt *message, + uint8_t *out) +{ + assert(message->base.descriptor == &pg_query__update_stmt__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t pg_query__update_stmt__pack_to_buffer + (const PgQuery__UpdateStmt *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &pg_query__update_stmt__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +PgQuery__UpdateStmt * + pg_query__update_stmt__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (PgQuery__UpdateStmt *) + protobuf_c_message_unpack (&pg_query__update_stmt__descriptor, + allocator, len, data); +} +void pg_query__update_stmt__free_unpacked + (PgQuery__UpdateStmt *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &pg_query__update_stmt__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void pg_query__select_stmt__init + (PgQuery__SelectStmt *message) +{ + static const PgQuery__SelectStmt init_value = PG_QUERY__SELECT_STMT__INIT; + *message = init_value; +} +size_t pg_query__select_stmt__get_packed_size + (const PgQuery__SelectStmt *message) +{ + assert(message->base.descriptor == &pg_query__select_stmt__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t pg_query__select_stmt__pack + (const PgQuery__SelectStmt *message, + uint8_t *out) +{ + assert(message->base.descriptor == &pg_query__select_stmt__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t pg_query__select_stmt__pack_to_buffer + (const PgQuery__SelectStmt *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &pg_query__select_stmt__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +PgQuery__SelectStmt * + pg_query__select_stmt__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (PgQuery__SelectStmt *) + protobuf_c_message_unpack (&pg_query__select_stmt__descriptor, + allocator, len, data); +} +void pg_query__select_stmt__free_unpacked + (PgQuery__SelectStmt *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &pg_query__select_stmt__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void pg_query__alter_table_stmt__init + (PgQuery__AlterTableStmt *message) +{ + static const PgQuery__AlterTableStmt init_value = PG_QUERY__ALTER_TABLE_STMT__INIT; + *message = init_value; +} +size_t pg_query__alter_table_stmt__get_packed_size + (const PgQuery__AlterTableStmt *message) +{ + assert(message->base.descriptor == &pg_query__alter_table_stmt__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t pg_query__alter_table_stmt__pack + (const PgQuery__AlterTableStmt *message, + uint8_t *out) +{ + assert(message->base.descriptor == &pg_query__alter_table_stmt__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t pg_query__alter_table_stmt__pack_to_buffer + (const PgQuery__AlterTableStmt *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &pg_query__alter_table_stmt__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +PgQuery__AlterTableStmt * + pg_query__alter_table_stmt__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (PgQuery__AlterTableStmt *) + protobuf_c_message_unpack (&pg_query__alter_table_stmt__descriptor, + allocator, len, data); +} +void pg_query__alter_table_stmt__free_unpacked + (PgQuery__AlterTableStmt *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &pg_query__alter_table_stmt__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void pg_query__alter_table_cmd__init + (PgQuery__AlterTableCmd *message) +{ + static const PgQuery__AlterTableCmd init_value = PG_QUERY__ALTER_TABLE_CMD__INIT; + *message = init_value; +} +size_t pg_query__alter_table_cmd__get_packed_size + (const PgQuery__AlterTableCmd *message) +{ + assert(message->base.descriptor == &pg_query__alter_table_cmd__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t pg_query__alter_table_cmd__pack + (const PgQuery__AlterTableCmd *message, + uint8_t *out) +{ + assert(message->base.descriptor == &pg_query__alter_table_cmd__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t pg_query__alter_table_cmd__pack_to_buffer + (const PgQuery__AlterTableCmd *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &pg_query__alter_table_cmd__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +PgQuery__AlterTableCmd * + pg_query__alter_table_cmd__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (PgQuery__AlterTableCmd *) + protobuf_c_message_unpack (&pg_query__alter_table_cmd__descriptor, + allocator, len, data); +} +void pg_query__alter_table_cmd__free_unpacked + (PgQuery__AlterTableCmd *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &pg_query__alter_table_cmd__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void pg_query__alter_domain_stmt__init + (PgQuery__AlterDomainStmt *message) +{ + static const PgQuery__AlterDomainStmt init_value = PG_QUERY__ALTER_DOMAIN_STMT__INIT; + *message = init_value; +} +size_t pg_query__alter_domain_stmt__get_packed_size + (const PgQuery__AlterDomainStmt *message) +{ + assert(message->base.descriptor == &pg_query__alter_domain_stmt__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t pg_query__alter_domain_stmt__pack + (const PgQuery__AlterDomainStmt *message, + uint8_t *out) +{ + assert(message->base.descriptor == &pg_query__alter_domain_stmt__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t pg_query__alter_domain_stmt__pack_to_buffer + (const PgQuery__AlterDomainStmt *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &pg_query__alter_domain_stmt__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +PgQuery__AlterDomainStmt * + pg_query__alter_domain_stmt__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (PgQuery__AlterDomainStmt *) + protobuf_c_message_unpack (&pg_query__alter_domain_stmt__descriptor, + allocator, len, data); +} +void pg_query__alter_domain_stmt__free_unpacked + (PgQuery__AlterDomainStmt *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &pg_query__alter_domain_stmt__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void pg_query__set_operation_stmt__init + (PgQuery__SetOperationStmt *message) +{ + static const PgQuery__SetOperationStmt init_value = PG_QUERY__SET_OPERATION_STMT__INIT; + *message = init_value; +} +size_t pg_query__set_operation_stmt__get_packed_size + (const PgQuery__SetOperationStmt *message) +{ + assert(message->base.descriptor == &pg_query__set_operation_stmt__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t pg_query__set_operation_stmt__pack + (const PgQuery__SetOperationStmt *message, + uint8_t *out) +{ + assert(message->base.descriptor == &pg_query__set_operation_stmt__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t pg_query__set_operation_stmt__pack_to_buffer + (const PgQuery__SetOperationStmt *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &pg_query__set_operation_stmt__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +PgQuery__SetOperationStmt * + pg_query__set_operation_stmt__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (PgQuery__SetOperationStmt *) + protobuf_c_message_unpack (&pg_query__set_operation_stmt__descriptor, + allocator, len, data); +} +void pg_query__set_operation_stmt__free_unpacked + (PgQuery__SetOperationStmt *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &pg_query__set_operation_stmt__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void pg_query__grant_stmt__init + (PgQuery__GrantStmt *message) +{ + static const PgQuery__GrantStmt init_value = PG_QUERY__GRANT_STMT__INIT; + *message = init_value; +} +size_t pg_query__grant_stmt__get_packed_size + (const PgQuery__GrantStmt *message) +{ + assert(message->base.descriptor == &pg_query__grant_stmt__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t pg_query__grant_stmt__pack + (const PgQuery__GrantStmt *message, + uint8_t *out) +{ + assert(message->base.descriptor == &pg_query__grant_stmt__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t pg_query__grant_stmt__pack_to_buffer + (const PgQuery__GrantStmt *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &pg_query__grant_stmt__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +PgQuery__GrantStmt * + pg_query__grant_stmt__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (PgQuery__GrantStmt *) + protobuf_c_message_unpack (&pg_query__grant_stmt__descriptor, + allocator, len, data); +} +void pg_query__grant_stmt__free_unpacked + (PgQuery__GrantStmt *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &pg_query__grant_stmt__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void pg_query__grant_role_stmt__init + (PgQuery__GrantRoleStmt *message) +{ + static const PgQuery__GrantRoleStmt init_value = PG_QUERY__GRANT_ROLE_STMT__INIT; + *message = init_value; +} +size_t pg_query__grant_role_stmt__get_packed_size + (const PgQuery__GrantRoleStmt *message) +{ + assert(message->base.descriptor == &pg_query__grant_role_stmt__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t pg_query__grant_role_stmt__pack + (const PgQuery__GrantRoleStmt *message, + uint8_t *out) +{ + assert(message->base.descriptor == &pg_query__grant_role_stmt__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t pg_query__grant_role_stmt__pack_to_buffer + (const PgQuery__GrantRoleStmt *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &pg_query__grant_role_stmt__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +PgQuery__GrantRoleStmt * + pg_query__grant_role_stmt__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (PgQuery__GrantRoleStmt *) + protobuf_c_message_unpack (&pg_query__grant_role_stmt__descriptor, + allocator, len, data); +} +void pg_query__grant_role_stmt__free_unpacked + (PgQuery__GrantRoleStmt *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &pg_query__grant_role_stmt__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void pg_query__alter_default_privileges_stmt__init + (PgQuery__AlterDefaultPrivilegesStmt *message) +{ + static const PgQuery__AlterDefaultPrivilegesStmt init_value = PG_QUERY__ALTER_DEFAULT_PRIVILEGES_STMT__INIT; + *message = init_value; +} +size_t pg_query__alter_default_privileges_stmt__get_packed_size + (const PgQuery__AlterDefaultPrivilegesStmt *message) +{ + assert(message->base.descriptor == &pg_query__alter_default_privileges_stmt__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t pg_query__alter_default_privileges_stmt__pack + (const PgQuery__AlterDefaultPrivilegesStmt *message, + uint8_t *out) +{ + assert(message->base.descriptor == &pg_query__alter_default_privileges_stmt__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t pg_query__alter_default_privileges_stmt__pack_to_buffer + (const PgQuery__AlterDefaultPrivilegesStmt *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &pg_query__alter_default_privileges_stmt__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +PgQuery__AlterDefaultPrivilegesStmt * + pg_query__alter_default_privileges_stmt__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (PgQuery__AlterDefaultPrivilegesStmt *) + protobuf_c_message_unpack (&pg_query__alter_default_privileges_stmt__descriptor, + allocator, len, data); +} +void pg_query__alter_default_privileges_stmt__free_unpacked + (PgQuery__AlterDefaultPrivilegesStmt *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &pg_query__alter_default_privileges_stmt__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void pg_query__close_portal_stmt__init + (PgQuery__ClosePortalStmt *message) +{ + static const PgQuery__ClosePortalStmt init_value = PG_QUERY__CLOSE_PORTAL_STMT__INIT; + *message = init_value; +} +size_t pg_query__close_portal_stmt__get_packed_size + (const PgQuery__ClosePortalStmt *message) +{ + assert(message->base.descriptor == &pg_query__close_portal_stmt__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t pg_query__close_portal_stmt__pack + (const PgQuery__ClosePortalStmt *message, + uint8_t *out) +{ + assert(message->base.descriptor == &pg_query__close_portal_stmt__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t pg_query__close_portal_stmt__pack_to_buffer + (const PgQuery__ClosePortalStmt *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &pg_query__close_portal_stmt__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +PgQuery__ClosePortalStmt * + pg_query__close_portal_stmt__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (PgQuery__ClosePortalStmt *) + protobuf_c_message_unpack (&pg_query__close_portal_stmt__descriptor, + allocator, len, data); +} +void pg_query__close_portal_stmt__free_unpacked + (PgQuery__ClosePortalStmt *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &pg_query__close_portal_stmt__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void pg_query__cluster_stmt__init + (PgQuery__ClusterStmt *message) +{ + static const PgQuery__ClusterStmt init_value = PG_QUERY__CLUSTER_STMT__INIT; + *message = init_value; +} +size_t pg_query__cluster_stmt__get_packed_size + (const PgQuery__ClusterStmt *message) +{ + assert(message->base.descriptor == &pg_query__cluster_stmt__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t pg_query__cluster_stmt__pack + (const PgQuery__ClusterStmt *message, + uint8_t *out) +{ + assert(message->base.descriptor == &pg_query__cluster_stmt__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t pg_query__cluster_stmt__pack_to_buffer + (const PgQuery__ClusterStmt *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &pg_query__cluster_stmt__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +PgQuery__ClusterStmt * + pg_query__cluster_stmt__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (PgQuery__ClusterStmt *) + protobuf_c_message_unpack (&pg_query__cluster_stmt__descriptor, + allocator, len, data); +} +void pg_query__cluster_stmt__free_unpacked + (PgQuery__ClusterStmt *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &pg_query__cluster_stmt__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void pg_query__copy_stmt__init + (PgQuery__CopyStmt *message) +{ + static const PgQuery__CopyStmt init_value = PG_QUERY__COPY_STMT__INIT; + *message = init_value; +} +size_t pg_query__copy_stmt__get_packed_size + (const PgQuery__CopyStmt *message) +{ + assert(message->base.descriptor == &pg_query__copy_stmt__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t pg_query__copy_stmt__pack + (const PgQuery__CopyStmt *message, + uint8_t *out) +{ + assert(message->base.descriptor == &pg_query__copy_stmt__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t pg_query__copy_stmt__pack_to_buffer + (const PgQuery__CopyStmt *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &pg_query__copy_stmt__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +PgQuery__CopyStmt * + pg_query__copy_stmt__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (PgQuery__CopyStmt *) + protobuf_c_message_unpack (&pg_query__copy_stmt__descriptor, + allocator, len, data); +} +void pg_query__copy_stmt__free_unpacked + (PgQuery__CopyStmt *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &pg_query__copy_stmt__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void pg_query__create_stmt__init + (PgQuery__CreateStmt *message) +{ + static const PgQuery__CreateStmt init_value = PG_QUERY__CREATE_STMT__INIT; + *message = init_value; +} +size_t pg_query__create_stmt__get_packed_size + (const PgQuery__CreateStmt *message) +{ + assert(message->base.descriptor == &pg_query__create_stmt__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t pg_query__create_stmt__pack + (const PgQuery__CreateStmt *message, + uint8_t *out) +{ + assert(message->base.descriptor == &pg_query__create_stmt__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t pg_query__create_stmt__pack_to_buffer + (const PgQuery__CreateStmt *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &pg_query__create_stmt__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +PgQuery__CreateStmt * + pg_query__create_stmt__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (PgQuery__CreateStmt *) + protobuf_c_message_unpack (&pg_query__create_stmt__descriptor, + allocator, len, data); +} +void pg_query__create_stmt__free_unpacked + (PgQuery__CreateStmt *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &pg_query__create_stmt__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void pg_query__define_stmt__init + (PgQuery__DefineStmt *message) +{ + static const PgQuery__DefineStmt init_value = PG_QUERY__DEFINE_STMT__INIT; + *message = init_value; +} +size_t pg_query__define_stmt__get_packed_size + (const PgQuery__DefineStmt *message) +{ + assert(message->base.descriptor == &pg_query__define_stmt__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t pg_query__define_stmt__pack + (const PgQuery__DefineStmt *message, + uint8_t *out) +{ + assert(message->base.descriptor == &pg_query__define_stmt__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t pg_query__define_stmt__pack_to_buffer + (const PgQuery__DefineStmt *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &pg_query__define_stmt__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +PgQuery__DefineStmt * + pg_query__define_stmt__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (PgQuery__DefineStmt *) + protobuf_c_message_unpack (&pg_query__define_stmt__descriptor, + allocator, len, data); +} +void pg_query__define_stmt__free_unpacked + (PgQuery__DefineStmt *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &pg_query__define_stmt__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void pg_query__drop_stmt__init + (PgQuery__DropStmt *message) +{ + static const PgQuery__DropStmt init_value = PG_QUERY__DROP_STMT__INIT; + *message = init_value; +} +size_t pg_query__drop_stmt__get_packed_size + (const PgQuery__DropStmt *message) +{ + assert(message->base.descriptor == &pg_query__drop_stmt__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t pg_query__drop_stmt__pack + (const PgQuery__DropStmt *message, + uint8_t *out) +{ + assert(message->base.descriptor == &pg_query__drop_stmt__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t pg_query__drop_stmt__pack_to_buffer + (const PgQuery__DropStmt *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &pg_query__drop_stmt__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +PgQuery__DropStmt * + pg_query__drop_stmt__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (PgQuery__DropStmt *) + protobuf_c_message_unpack (&pg_query__drop_stmt__descriptor, + allocator, len, data); +} +void pg_query__drop_stmt__free_unpacked + (PgQuery__DropStmt *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &pg_query__drop_stmt__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void pg_query__truncate_stmt__init + (PgQuery__TruncateStmt *message) +{ + static const PgQuery__TruncateStmt init_value = PG_QUERY__TRUNCATE_STMT__INIT; + *message = init_value; +} +size_t pg_query__truncate_stmt__get_packed_size + (const PgQuery__TruncateStmt *message) +{ + assert(message->base.descriptor == &pg_query__truncate_stmt__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t pg_query__truncate_stmt__pack + (const PgQuery__TruncateStmt *message, + uint8_t *out) +{ + assert(message->base.descriptor == &pg_query__truncate_stmt__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t pg_query__truncate_stmt__pack_to_buffer + (const PgQuery__TruncateStmt *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &pg_query__truncate_stmt__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +PgQuery__TruncateStmt * + pg_query__truncate_stmt__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (PgQuery__TruncateStmt *) + protobuf_c_message_unpack (&pg_query__truncate_stmt__descriptor, + allocator, len, data); +} +void pg_query__truncate_stmt__free_unpacked + (PgQuery__TruncateStmt *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &pg_query__truncate_stmt__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void pg_query__comment_stmt__init + (PgQuery__CommentStmt *message) +{ + static const PgQuery__CommentStmt init_value = PG_QUERY__COMMENT_STMT__INIT; + *message = init_value; +} +size_t pg_query__comment_stmt__get_packed_size + (const PgQuery__CommentStmt *message) +{ + assert(message->base.descriptor == &pg_query__comment_stmt__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t pg_query__comment_stmt__pack + (const PgQuery__CommentStmt *message, + uint8_t *out) +{ + assert(message->base.descriptor == &pg_query__comment_stmt__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t pg_query__comment_stmt__pack_to_buffer + (const PgQuery__CommentStmt *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &pg_query__comment_stmt__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +PgQuery__CommentStmt * + pg_query__comment_stmt__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (PgQuery__CommentStmt *) + protobuf_c_message_unpack (&pg_query__comment_stmt__descriptor, + allocator, len, data); +} +void pg_query__comment_stmt__free_unpacked + (PgQuery__CommentStmt *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &pg_query__comment_stmt__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void pg_query__fetch_stmt__init + (PgQuery__FetchStmt *message) +{ + static const PgQuery__FetchStmt init_value = PG_QUERY__FETCH_STMT__INIT; + *message = init_value; +} +size_t pg_query__fetch_stmt__get_packed_size + (const PgQuery__FetchStmt *message) +{ + assert(message->base.descriptor == &pg_query__fetch_stmt__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t pg_query__fetch_stmt__pack + (const PgQuery__FetchStmt *message, + uint8_t *out) +{ + assert(message->base.descriptor == &pg_query__fetch_stmt__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t pg_query__fetch_stmt__pack_to_buffer + (const PgQuery__FetchStmt *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &pg_query__fetch_stmt__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +PgQuery__FetchStmt * + pg_query__fetch_stmt__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (PgQuery__FetchStmt *) + protobuf_c_message_unpack (&pg_query__fetch_stmt__descriptor, + allocator, len, data); +} +void pg_query__fetch_stmt__free_unpacked + (PgQuery__FetchStmt *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &pg_query__fetch_stmt__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void pg_query__index_stmt__init + (PgQuery__IndexStmt *message) +{ + static const PgQuery__IndexStmt init_value = PG_QUERY__INDEX_STMT__INIT; + *message = init_value; +} +size_t pg_query__index_stmt__get_packed_size + (const PgQuery__IndexStmt *message) +{ + assert(message->base.descriptor == &pg_query__index_stmt__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t pg_query__index_stmt__pack + (const PgQuery__IndexStmt *message, + uint8_t *out) +{ + assert(message->base.descriptor == &pg_query__index_stmt__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t pg_query__index_stmt__pack_to_buffer + (const PgQuery__IndexStmt *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &pg_query__index_stmt__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +PgQuery__IndexStmt * + pg_query__index_stmt__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (PgQuery__IndexStmt *) + protobuf_c_message_unpack (&pg_query__index_stmt__descriptor, + allocator, len, data); +} +void pg_query__index_stmt__free_unpacked + (PgQuery__IndexStmt *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &pg_query__index_stmt__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void pg_query__create_function_stmt__init + (PgQuery__CreateFunctionStmt *message) +{ + static const PgQuery__CreateFunctionStmt init_value = PG_QUERY__CREATE_FUNCTION_STMT__INIT; + *message = init_value; +} +size_t pg_query__create_function_stmt__get_packed_size + (const PgQuery__CreateFunctionStmt *message) +{ + assert(message->base.descriptor == &pg_query__create_function_stmt__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t pg_query__create_function_stmt__pack + (const PgQuery__CreateFunctionStmt *message, + uint8_t *out) +{ + assert(message->base.descriptor == &pg_query__create_function_stmt__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t pg_query__create_function_stmt__pack_to_buffer + (const PgQuery__CreateFunctionStmt *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &pg_query__create_function_stmt__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +PgQuery__CreateFunctionStmt * + pg_query__create_function_stmt__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (PgQuery__CreateFunctionStmt *) + protobuf_c_message_unpack (&pg_query__create_function_stmt__descriptor, + allocator, len, data); +} +void pg_query__create_function_stmt__free_unpacked + (PgQuery__CreateFunctionStmt *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &pg_query__create_function_stmt__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void pg_query__alter_function_stmt__init + (PgQuery__AlterFunctionStmt *message) +{ + static const PgQuery__AlterFunctionStmt init_value = PG_QUERY__ALTER_FUNCTION_STMT__INIT; + *message = init_value; +} +size_t pg_query__alter_function_stmt__get_packed_size + (const PgQuery__AlterFunctionStmt *message) +{ + assert(message->base.descriptor == &pg_query__alter_function_stmt__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t pg_query__alter_function_stmt__pack + (const PgQuery__AlterFunctionStmt *message, + uint8_t *out) +{ + assert(message->base.descriptor == &pg_query__alter_function_stmt__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t pg_query__alter_function_stmt__pack_to_buffer + (const PgQuery__AlterFunctionStmt *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &pg_query__alter_function_stmt__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +PgQuery__AlterFunctionStmt * + pg_query__alter_function_stmt__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (PgQuery__AlterFunctionStmt *) + protobuf_c_message_unpack (&pg_query__alter_function_stmt__descriptor, + allocator, len, data); +} +void pg_query__alter_function_stmt__free_unpacked + (PgQuery__AlterFunctionStmt *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &pg_query__alter_function_stmt__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void pg_query__do_stmt__init + (PgQuery__DoStmt *message) +{ + static const PgQuery__DoStmt init_value = PG_QUERY__DO_STMT__INIT; + *message = init_value; +} +size_t pg_query__do_stmt__get_packed_size + (const PgQuery__DoStmt *message) +{ + assert(message->base.descriptor == &pg_query__do_stmt__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t pg_query__do_stmt__pack + (const PgQuery__DoStmt *message, + uint8_t *out) +{ + assert(message->base.descriptor == &pg_query__do_stmt__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t pg_query__do_stmt__pack_to_buffer + (const PgQuery__DoStmt *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &pg_query__do_stmt__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +PgQuery__DoStmt * + pg_query__do_stmt__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (PgQuery__DoStmt *) + protobuf_c_message_unpack (&pg_query__do_stmt__descriptor, + allocator, len, data); +} +void pg_query__do_stmt__free_unpacked + (PgQuery__DoStmt *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &pg_query__do_stmt__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void pg_query__rename_stmt__init + (PgQuery__RenameStmt *message) +{ + static const PgQuery__RenameStmt init_value = PG_QUERY__RENAME_STMT__INIT; + *message = init_value; +} +size_t pg_query__rename_stmt__get_packed_size + (const PgQuery__RenameStmt *message) +{ + assert(message->base.descriptor == &pg_query__rename_stmt__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t pg_query__rename_stmt__pack + (const PgQuery__RenameStmt *message, + uint8_t *out) +{ + assert(message->base.descriptor == &pg_query__rename_stmt__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t pg_query__rename_stmt__pack_to_buffer + (const PgQuery__RenameStmt *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &pg_query__rename_stmt__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +PgQuery__RenameStmt * + pg_query__rename_stmt__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (PgQuery__RenameStmt *) + protobuf_c_message_unpack (&pg_query__rename_stmt__descriptor, + allocator, len, data); +} +void pg_query__rename_stmt__free_unpacked + (PgQuery__RenameStmt *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &pg_query__rename_stmt__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void pg_query__rule_stmt__init + (PgQuery__RuleStmt *message) +{ + static const PgQuery__RuleStmt init_value = PG_QUERY__RULE_STMT__INIT; + *message = init_value; +} +size_t pg_query__rule_stmt__get_packed_size + (const PgQuery__RuleStmt *message) +{ + assert(message->base.descriptor == &pg_query__rule_stmt__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t pg_query__rule_stmt__pack + (const PgQuery__RuleStmt *message, + uint8_t *out) +{ + assert(message->base.descriptor == &pg_query__rule_stmt__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t pg_query__rule_stmt__pack_to_buffer + (const PgQuery__RuleStmt *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &pg_query__rule_stmt__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +PgQuery__RuleStmt * + pg_query__rule_stmt__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (PgQuery__RuleStmt *) + protobuf_c_message_unpack (&pg_query__rule_stmt__descriptor, + allocator, len, data); +} +void pg_query__rule_stmt__free_unpacked + (PgQuery__RuleStmt *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &pg_query__rule_stmt__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void pg_query__notify_stmt__init + (PgQuery__NotifyStmt *message) +{ + static const PgQuery__NotifyStmt init_value = PG_QUERY__NOTIFY_STMT__INIT; + *message = init_value; +} +size_t pg_query__notify_stmt__get_packed_size + (const PgQuery__NotifyStmt *message) +{ + assert(message->base.descriptor == &pg_query__notify_stmt__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t pg_query__notify_stmt__pack + (const PgQuery__NotifyStmt *message, + uint8_t *out) +{ + assert(message->base.descriptor == &pg_query__notify_stmt__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t pg_query__notify_stmt__pack_to_buffer + (const PgQuery__NotifyStmt *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &pg_query__notify_stmt__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +PgQuery__NotifyStmt * + pg_query__notify_stmt__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (PgQuery__NotifyStmt *) + protobuf_c_message_unpack (&pg_query__notify_stmt__descriptor, + allocator, len, data); +} +void pg_query__notify_stmt__free_unpacked + (PgQuery__NotifyStmt *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &pg_query__notify_stmt__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void pg_query__listen_stmt__init + (PgQuery__ListenStmt *message) +{ + static const PgQuery__ListenStmt init_value = PG_QUERY__LISTEN_STMT__INIT; + *message = init_value; +} +size_t pg_query__listen_stmt__get_packed_size + (const PgQuery__ListenStmt *message) +{ + assert(message->base.descriptor == &pg_query__listen_stmt__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t pg_query__listen_stmt__pack + (const PgQuery__ListenStmt *message, + uint8_t *out) +{ + assert(message->base.descriptor == &pg_query__listen_stmt__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t pg_query__listen_stmt__pack_to_buffer + (const PgQuery__ListenStmt *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &pg_query__listen_stmt__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +PgQuery__ListenStmt * + pg_query__listen_stmt__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (PgQuery__ListenStmt *) + protobuf_c_message_unpack (&pg_query__listen_stmt__descriptor, + allocator, len, data); +} +void pg_query__listen_stmt__free_unpacked + (PgQuery__ListenStmt *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &pg_query__listen_stmt__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void pg_query__unlisten_stmt__init + (PgQuery__UnlistenStmt *message) +{ + static const PgQuery__UnlistenStmt init_value = PG_QUERY__UNLISTEN_STMT__INIT; + *message = init_value; +} +size_t pg_query__unlisten_stmt__get_packed_size + (const PgQuery__UnlistenStmt *message) +{ + assert(message->base.descriptor == &pg_query__unlisten_stmt__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t pg_query__unlisten_stmt__pack + (const PgQuery__UnlistenStmt *message, + uint8_t *out) +{ + assert(message->base.descriptor == &pg_query__unlisten_stmt__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t pg_query__unlisten_stmt__pack_to_buffer + (const PgQuery__UnlistenStmt *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &pg_query__unlisten_stmt__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +PgQuery__UnlistenStmt * + pg_query__unlisten_stmt__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (PgQuery__UnlistenStmt *) + protobuf_c_message_unpack (&pg_query__unlisten_stmt__descriptor, + allocator, len, data); +} +void pg_query__unlisten_stmt__free_unpacked + (PgQuery__UnlistenStmt *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &pg_query__unlisten_stmt__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void pg_query__transaction_stmt__init + (PgQuery__TransactionStmt *message) +{ + static const PgQuery__TransactionStmt init_value = PG_QUERY__TRANSACTION_STMT__INIT; + *message = init_value; +} +size_t pg_query__transaction_stmt__get_packed_size + (const PgQuery__TransactionStmt *message) +{ + assert(message->base.descriptor == &pg_query__transaction_stmt__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t pg_query__transaction_stmt__pack + (const PgQuery__TransactionStmt *message, + uint8_t *out) +{ + assert(message->base.descriptor == &pg_query__transaction_stmt__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t pg_query__transaction_stmt__pack_to_buffer + (const PgQuery__TransactionStmt *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &pg_query__transaction_stmt__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +PgQuery__TransactionStmt * + pg_query__transaction_stmt__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (PgQuery__TransactionStmt *) + protobuf_c_message_unpack (&pg_query__transaction_stmt__descriptor, + allocator, len, data); +} +void pg_query__transaction_stmt__free_unpacked + (PgQuery__TransactionStmt *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &pg_query__transaction_stmt__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void pg_query__view_stmt__init + (PgQuery__ViewStmt *message) +{ + static const PgQuery__ViewStmt init_value = PG_QUERY__VIEW_STMT__INIT; + *message = init_value; +} +size_t pg_query__view_stmt__get_packed_size + (const PgQuery__ViewStmt *message) +{ + assert(message->base.descriptor == &pg_query__view_stmt__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t pg_query__view_stmt__pack + (const PgQuery__ViewStmt *message, + uint8_t *out) +{ + assert(message->base.descriptor == &pg_query__view_stmt__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t pg_query__view_stmt__pack_to_buffer + (const PgQuery__ViewStmt *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &pg_query__view_stmt__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +PgQuery__ViewStmt * + pg_query__view_stmt__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (PgQuery__ViewStmt *) + protobuf_c_message_unpack (&pg_query__view_stmt__descriptor, + allocator, len, data); +} +void pg_query__view_stmt__free_unpacked + (PgQuery__ViewStmt *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &pg_query__view_stmt__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void pg_query__load_stmt__init + (PgQuery__LoadStmt *message) +{ + static const PgQuery__LoadStmt init_value = PG_QUERY__LOAD_STMT__INIT; + *message = init_value; +} +size_t pg_query__load_stmt__get_packed_size + (const PgQuery__LoadStmt *message) +{ + assert(message->base.descriptor == &pg_query__load_stmt__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t pg_query__load_stmt__pack + (const PgQuery__LoadStmt *message, + uint8_t *out) +{ + assert(message->base.descriptor == &pg_query__load_stmt__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t pg_query__load_stmt__pack_to_buffer + (const PgQuery__LoadStmt *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &pg_query__load_stmt__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +PgQuery__LoadStmt * + pg_query__load_stmt__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (PgQuery__LoadStmt *) + protobuf_c_message_unpack (&pg_query__load_stmt__descriptor, + allocator, len, data); +} +void pg_query__load_stmt__free_unpacked + (PgQuery__LoadStmt *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &pg_query__load_stmt__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void pg_query__create_domain_stmt__init + (PgQuery__CreateDomainStmt *message) +{ + static const PgQuery__CreateDomainStmt init_value = PG_QUERY__CREATE_DOMAIN_STMT__INIT; + *message = init_value; +} +size_t pg_query__create_domain_stmt__get_packed_size + (const PgQuery__CreateDomainStmt *message) +{ + assert(message->base.descriptor == &pg_query__create_domain_stmt__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t pg_query__create_domain_stmt__pack + (const PgQuery__CreateDomainStmt *message, + uint8_t *out) +{ + assert(message->base.descriptor == &pg_query__create_domain_stmt__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t pg_query__create_domain_stmt__pack_to_buffer + (const PgQuery__CreateDomainStmt *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &pg_query__create_domain_stmt__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +PgQuery__CreateDomainStmt * + pg_query__create_domain_stmt__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (PgQuery__CreateDomainStmt *) + protobuf_c_message_unpack (&pg_query__create_domain_stmt__descriptor, + allocator, len, data); +} +void pg_query__create_domain_stmt__free_unpacked + (PgQuery__CreateDomainStmt *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &pg_query__create_domain_stmt__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void pg_query__createdb_stmt__init + (PgQuery__CreatedbStmt *message) +{ + static const PgQuery__CreatedbStmt init_value = PG_QUERY__CREATEDB_STMT__INIT; + *message = init_value; +} +size_t pg_query__createdb_stmt__get_packed_size + (const PgQuery__CreatedbStmt *message) +{ + assert(message->base.descriptor == &pg_query__createdb_stmt__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t pg_query__createdb_stmt__pack + (const PgQuery__CreatedbStmt *message, + uint8_t *out) +{ + assert(message->base.descriptor == &pg_query__createdb_stmt__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t pg_query__createdb_stmt__pack_to_buffer + (const PgQuery__CreatedbStmt *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &pg_query__createdb_stmt__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +PgQuery__CreatedbStmt * + pg_query__createdb_stmt__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (PgQuery__CreatedbStmt *) + protobuf_c_message_unpack (&pg_query__createdb_stmt__descriptor, + allocator, len, data); +} +void pg_query__createdb_stmt__free_unpacked + (PgQuery__CreatedbStmt *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &pg_query__createdb_stmt__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void pg_query__dropdb_stmt__init + (PgQuery__DropdbStmt *message) +{ + static const PgQuery__DropdbStmt init_value = PG_QUERY__DROPDB_STMT__INIT; + *message = init_value; +} +size_t pg_query__dropdb_stmt__get_packed_size + (const PgQuery__DropdbStmt *message) +{ + assert(message->base.descriptor == &pg_query__dropdb_stmt__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t pg_query__dropdb_stmt__pack + (const PgQuery__DropdbStmt *message, + uint8_t *out) +{ + assert(message->base.descriptor == &pg_query__dropdb_stmt__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t pg_query__dropdb_stmt__pack_to_buffer + (const PgQuery__DropdbStmt *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &pg_query__dropdb_stmt__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +PgQuery__DropdbStmt * + pg_query__dropdb_stmt__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (PgQuery__DropdbStmt *) + protobuf_c_message_unpack (&pg_query__dropdb_stmt__descriptor, + allocator, len, data); +} +void pg_query__dropdb_stmt__free_unpacked + (PgQuery__DropdbStmt *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &pg_query__dropdb_stmt__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void pg_query__vacuum_stmt__init + (PgQuery__VacuumStmt *message) +{ + static const PgQuery__VacuumStmt init_value = PG_QUERY__VACUUM_STMT__INIT; + *message = init_value; +} +size_t pg_query__vacuum_stmt__get_packed_size + (const PgQuery__VacuumStmt *message) +{ + assert(message->base.descriptor == &pg_query__vacuum_stmt__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t pg_query__vacuum_stmt__pack + (const PgQuery__VacuumStmt *message, + uint8_t *out) +{ + assert(message->base.descriptor == &pg_query__vacuum_stmt__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t pg_query__vacuum_stmt__pack_to_buffer + (const PgQuery__VacuumStmt *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &pg_query__vacuum_stmt__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +PgQuery__VacuumStmt * + pg_query__vacuum_stmt__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (PgQuery__VacuumStmt *) + protobuf_c_message_unpack (&pg_query__vacuum_stmt__descriptor, + allocator, len, data); +} +void pg_query__vacuum_stmt__free_unpacked + (PgQuery__VacuumStmt *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &pg_query__vacuum_stmt__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void pg_query__explain_stmt__init + (PgQuery__ExplainStmt *message) +{ + static const PgQuery__ExplainStmt init_value = PG_QUERY__EXPLAIN_STMT__INIT; + *message = init_value; +} +size_t pg_query__explain_stmt__get_packed_size + (const PgQuery__ExplainStmt *message) +{ + assert(message->base.descriptor == &pg_query__explain_stmt__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t pg_query__explain_stmt__pack + (const PgQuery__ExplainStmt *message, + uint8_t *out) +{ + assert(message->base.descriptor == &pg_query__explain_stmt__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t pg_query__explain_stmt__pack_to_buffer + (const PgQuery__ExplainStmt *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &pg_query__explain_stmt__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +PgQuery__ExplainStmt * + pg_query__explain_stmt__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (PgQuery__ExplainStmt *) + protobuf_c_message_unpack (&pg_query__explain_stmt__descriptor, + allocator, len, data); +} +void pg_query__explain_stmt__free_unpacked + (PgQuery__ExplainStmt *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &pg_query__explain_stmt__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void pg_query__create_table_as_stmt__init + (PgQuery__CreateTableAsStmt *message) +{ + static const PgQuery__CreateTableAsStmt init_value = PG_QUERY__CREATE_TABLE_AS_STMT__INIT; + *message = init_value; +} +size_t pg_query__create_table_as_stmt__get_packed_size + (const PgQuery__CreateTableAsStmt *message) +{ + assert(message->base.descriptor == &pg_query__create_table_as_stmt__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t pg_query__create_table_as_stmt__pack + (const PgQuery__CreateTableAsStmt *message, + uint8_t *out) +{ + assert(message->base.descriptor == &pg_query__create_table_as_stmt__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t pg_query__create_table_as_stmt__pack_to_buffer + (const PgQuery__CreateTableAsStmt *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &pg_query__create_table_as_stmt__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +PgQuery__CreateTableAsStmt * + pg_query__create_table_as_stmt__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (PgQuery__CreateTableAsStmt *) + protobuf_c_message_unpack (&pg_query__create_table_as_stmt__descriptor, + allocator, len, data); +} +void pg_query__create_table_as_stmt__free_unpacked + (PgQuery__CreateTableAsStmt *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &pg_query__create_table_as_stmt__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void pg_query__create_seq_stmt__init + (PgQuery__CreateSeqStmt *message) +{ + static const PgQuery__CreateSeqStmt init_value = PG_QUERY__CREATE_SEQ_STMT__INIT; + *message = init_value; +} +size_t pg_query__create_seq_stmt__get_packed_size + (const PgQuery__CreateSeqStmt *message) +{ + assert(message->base.descriptor == &pg_query__create_seq_stmt__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t pg_query__create_seq_stmt__pack + (const PgQuery__CreateSeqStmt *message, + uint8_t *out) +{ + assert(message->base.descriptor == &pg_query__create_seq_stmt__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t pg_query__create_seq_stmt__pack_to_buffer + (const PgQuery__CreateSeqStmt *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &pg_query__create_seq_stmt__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +PgQuery__CreateSeqStmt * + pg_query__create_seq_stmt__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (PgQuery__CreateSeqStmt *) + protobuf_c_message_unpack (&pg_query__create_seq_stmt__descriptor, + allocator, len, data); +} +void pg_query__create_seq_stmt__free_unpacked + (PgQuery__CreateSeqStmt *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &pg_query__create_seq_stmt__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void pg_query__alter_seq_stmt__init + (PgQuery__AlterSeqStmt *message) +{ + static const PgQuery__AlterSeqStmt init_value = PG_QUERY__ALTER_SEQ_STMT__INIT; + *message = init_value; +} +size_t pg_query__alter_seq_stmt__get_packed_size + (const PgQuery__AlterSeqStmt *message) +{ + assert(message->base.descriptor == &pg_query__alter_seq_stmt__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t pg_query__alter_seq_stmt__pack + (const PgQuery__AlterSeqStmt *message, + uint8_t *out) +{ + assert(message->base.descriptor == &pg_query__alter_seq_stmt__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t pg_query__alter_seq_stmt__pack_to_buffer + (const PgQuery__AlterSeqStmt *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &pg_query__alter_seq_stmt__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +PgQuery__AlterSeqStmt * + pg_query__alter_seq_stmt__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (PgQuery__AlterSeqStmt *) + protobuf_c_message_unpack (&pg_query__alter_seq_stmt__descriptor, + allocator, len, data); +} +void pg_query__alter_seq_stmt__free_unpacked + (PgQuery__AlterSeqStmt *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &pg_query__alter_seq_stmt__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void pg_query__variable_set_stmt__init + (PgQuery__VariableSetStmt *message) +{ + static const PgQuery__VariableSetStmt init_value = PG_QUERY__VARIABLE_SET_STMT__INIT; + *message = init_value; +} +size_t pg_query__variable_set_stmt__get_packed_size + (const PgQuery__VariableSetStmt *message) +{ + assert(message->base.descriptor == &pg_query__variable_set_stmt__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t pg_query__variable_set_stmt__pack + (const PgQuery__VariableSetStmt *message, + uint8_t *out) +{ + assert(message->base.descriptor == &pg_query__variable_set_stmt__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t pg_query__variable_set_stmt__pack_to_buffer + (const PgQuery__VariableSetStmt *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &pg_query__variable_set_stmt__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +PgQuery__VariableSetStmt * + pg_query__variable_set_stmt__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (PgQuery__VariableSetStmt *) + protobuf_c_message_unpack (&pg_query__variable_set_stmt__descriptor, + allocator, len, data); +} +void pg_query__variable_set_stmt__free_unpacked + (PgQuery__VariableSetStmt *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &pg_query__variable_set_stmt__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void pg_query__variable_show_stmt__init + (PgQuery__VariableShowStmt *message) +{ + static const PgQuery__VariableShowStmt init_value = PG_QUERY__VARIABLE_SHOW_STMT__INIT; + *message = init_value; +} +size_t pg_query__variable_show_stmt__get_packed_size + (const PgQuery__VariableShowStmt *message) +{ + assert(message->base.descriptor == &pg_query__variable_show_stmt__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t pg_query__variable_show_stmt__pack + (const PgQuery__VariableShowStmt *message, + uint8_t *out) +{ + assert(message->base.descriptor == &pg_query__variable_show_stmt__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t pg_query__variable_show_stmt__pack_to_buffer + (const PgQuery__VariableShowStmt *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &pg_query__variable_show_stmt__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +PgQuery__VariableShowStmt * + pg_query__variable_show_stmt__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (PgQuery__VariableShowStmt *) + protobuf_c_message_unpack (&pg_query__variable_show_stmt__descriptor, + allocator, len, data); +} +void pg_query__variable_show_stmt__free_unpacked + (PgQuery__VariableShowStmt *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &pg_query__variable_show_stmt__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void pg_query__discard_stmt__init + (PgQuery__DiscardStmt *message) +{ + static const PgQuery__DiscardStmt init_value = PG_QUERY__DISCARD_STMT__INIT; + *message = init_value; +} +size_t pg_query__discard_stmt__get_packed_size + (const PgQuery__DiscardStmt *message) +{ + assert(message->base.descriptor == &pg_query__discard_stmt__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t pg_query__discard_stmt__pack + (const PgQuery__DiscardStmt *message, + uint8_t *out) +{ + assert(message->base.descriptor == &pg_query__discard_stmt__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t pg_query__discard_stmt__pack_to_buffer + (const PgQuery__DiscardStmt *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &pg_query__discard_stmt__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +PgQuery__DiscardStmt * + pg_query__discard_stmt__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (PgQuery__DiscardStmt *) + protobuf_c_message_unpack (&pg_query__discard_stmt__descriptor, + allocator, len, data); +} +void pg_query__discard_stmt__free_unpacked + (PgQuery__DiscardStmt *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &pg_query__discard_stmt__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void pg_query__create_trig_stmt__init + (PgQuery__CreateTrigStmt *message) +{ + static const PgQuery__CreateTrigStmt init_value = PG_QUERY__CREATE_TRIG_STMT__INIT; + *message = init_value; +} +size_t pg_query__create_trig_stmt__get_packed_size + (const PgQuery__CreateTrigStmt *message) +{ + assert(message->base.descriptor == &pg_query__create_trig_stmt__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t pg_query__create_trig_stmt__pack + (const PgQuery__CreateTrigStmt *message, + uint8_t *out) +{ + assert(message->base.descriptor == &pg_query__create_trig_stmt__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t pg_query__create_trig_stmt__pack_to_buffer + (const PgQuery__CreateTrigStmt *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &pg_query__create_trig_stmt__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +PgQuery__CreateTrigStmt * + pg_query__create_trig_stmt__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (PgQuery__CreateTrigStmt *) + protobuf_c_message_unpack (&pg_query__create_trig_stmt__descriptor, + allocator, len, data); +} +void pg_query__create_trig_stmt__free_unpacked + (PgQuery__CreateTrigStmt *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &pg_query__create_trig_stmt__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void pg_query__create_plang_stmt__init + (PgQuery__CreatePLangStmt *message) +{ + static const PgQuery__CreatePLangStmt init_value = PG_QUERY__CREATE_PLANG_STMT__INIT; + *message = init_value; +} +size_t pg_query__create_plang_stmt__get_packed_size + (const PgQuery__CreatePLangStmt *message) +{ + assert(message->base.descriptor == &pg_query__create_plang_stmt__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t pg_query__create_plang_stmt__pack + (const PgQuery__CreatePLangStmt *message, + uint8_t *out) +{ + assert(message->base.descriptor == &pg_query__create_plang_stmt__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t pg_query__create_plang_stmt__pack_to_buffer + (const PgQuery__CreatePLangStmt *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &pg_query__create_plang_stmt__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +PgQuery__CreatePLangStmt * + pg_query__create_plang_stmt__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (PgQuery__CreatePLangStmt *) + protobuf_c_message_unpack (&pg_query__create_plang_stmt__descriptor, + allocator, len, data); +} +void pg_query__create_plang_stmt__free_unpacked + (PgQuery__CreatePLangStmt *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &pg_query__create_plang_stmt__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void pg_query__create_role_stmt__init + (PgQuery__CreateRoleStmt *message) +{ + static const PgQuery__CreateRoleStmt init_value = PG_QUERY__CREATE_ROLE_STMT__INIT; + *message = init_value; +} +size_t pg_query__create_role_stmt__get_packed_size + (const PgQuery__CreateRoleStmt *message) +{ + assert(message->base.descriptor == &pg_query__create_role_stmt__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t pg_query__create_role_stmt__pack + (const PgQuery__CreateRoleStmt *message, + uint8_t *out) +{ + assert(message->base.descriptor == &pg_query__create_role_stmt__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t pg_query__create_role_stmt__pack_to_buffer + (const PgQuery__CreateRoleStmt *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &pg_query__create_role_stmt__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +PgQuery__CreateRoleStmt * + pg_query__create_role_stmt__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (PgQuery__CreateRoleStmt *) + protobuf_c_message_unpack (&pg_query__create_role_stmt__descriptor, + allocator, len, data); +} +void pg_query__create_role_stmt__free_unpacked + (PgQuery__CreateRoleStmt *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &pg_query__create_role_stmt__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void pg_query__alter_role_stmt__init + (PgQuery__AlterRoleStmt *message) +{ + static const PgQuery__AlterRoleStmt init_value = PG_QUERY__ALTER_ROLE_STMT__INIT; + *message = init_value; +} +size_t pg_query__alter_role_stmt__get_packed_size + (const PgQuery__AlterRoleStmt *message) +{ + assert(message->base.descriptor == &pg_query__alter_role_stmt__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t pg_query__alter_role_stmt__pack + (const PgQuery__AlterRoleStmt *message, + uint8_t *out) +{ + assert(message->base.descriptor == &pg_query__alter_role_stmt__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t pg_query__alter_role_stmt__pack_to_buffer + (const PgQuery__AlterRoleStmt *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &pg_query__alter_role_stmt__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +PgQuery__AlterRoleStmt * + pg_query__alter_role_stmt__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (PgQuery__AlterRoleStmt *) + protobuf_c_message_unpack (&pg_query__alter_role_stmt__descriptor, + allocator, len, data); +} +void pg_query__alter_role_stmt__free_unpacked + (PgQuery__AlterRoleStmt *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &pg_query__alter_role_stmt__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void pg_query__drop_role_stmt__init + (PgQuery__DropRoleStmt *message) +{ + static const PgQuery__DropRoleStmt init_value = PG_QUERY__DROP_ROLE_STMT__INIT; + *message = init_value; +} +size_t pg_query__drop_role_stmt__get_packed_size + (const PgQuery__DropRoleStmt *message) +{ + assert(message->base.descriptor == &pg_query__drop_role_stmt__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t pg_query__drop_role_stmt__pack + (const PgQuery__DropRoleStmt *message, + uint8_t *out) +{ + assert(message->base.descriptor == &pg_query__drop_role_stmt__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t pg_query__drop_role_stmt__pack_to_buffer + (const PgQuery__DropRoleStmt *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &pg_query__drop_role_stmt__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +PgQuery__DropRoleStmt * + pg_query__drop_role_stmt__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (PgQuery__DropRoleStmt *) + protobuf_c_message_unpack (&pg_query__drop_role_stmt__descriptor, + allocator, len, data); +} +void pg_query__drop_role_stmt__free_unpacked + (PgQuery__DropRoleStmt *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &pg_query__drop_role_stmt__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void pg_query__lock_stmt__init + (PgQuery__LockStmt *message) +{ + static const PgQuery__LockStmt init_value = PG_QUERY__LOCK_STMT__INIT; + *message = init_value; +} +size_t pg_query__lock_stmt__get_packed_size + (const PgQuery__LockStmt *message) +{ + assert(message->base.descriptor == &pg_query__lock_stmt__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t pg_query__lock_stmt__pack + (const PgQuery__LockStmt *message, + uint8_t *out) +{ + assert(message->base.descriptor == &pg_query__lock_stmt__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t pg_query__lock_stmt__pack_to_buffer + (const PgQuery__LockStmt *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &pg_query__lock_stmt__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +PgQuery__LockStmt * + pg_query__lock_stmt__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (PgQuery__LockStmt *) + protobuf_c_message_unpack (&pg_query__lock_stmt__descriptor, + allocator, len, data); +} +void pg_query__lock_stmt__free_unpacked + (PgQuery__LockStmt *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &pg_query__lock_stmt__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void pg_query__constraints_set_stmt__init + (PgQuery__ConstraintsSetStmt *message) +{ + static const PgQuery__ConstraintsSetStmt init_value = PG_QUERY__CONSTRAINTS_SET_STMT__INIT; + *message = init_value; +} +size_t pg_query__constraints_set_stmt__get_packed_size + (const PgQuery__ConstraintsSetStmt *message) +{ + assert(message->base.descriptor == &pg_query__constraints_set_stmt__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t pg_query__constraints_set_stmt__pack + (const PgQuery__ConstraintsSetStmt *message, + uint8_t *out) +{ + assert(message->base.descriptor == &pg_query__constraints_set_stmt__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t pg_query__constraints_set_stmt__pack_to_buffer + (const PgQuery__ConstraintsSetStmt *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &pg_query__constraints_set_stmt__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +PgQuery__ConstraintsSetStmt * + pg_query__constraints_set_stmt__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (PgQuery__ConstraintsSetStmt *) + protobuf_c_message_unpack (&pg_query__constraints_set_stmt__descriptor, + allocator, len, data); +} +void pg_query__constraints_set_stmt__free_unpacked + (PgQuery__ConstraintsSetStmt *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &pg_query__constraints_set_stmt__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void pg_query__reindex_stmt__init + (PgQuery__ReindexStmt *message) +{ + static const PgQuery__ReindexStmt init_value = PG_QUERY__REINDEX_STMT__INIT; + *message = init_value; +} +size_t pg_query__reindex_stmt__get_packed_size + (const PgQuery__ReindexStmt *message) +{ + assert(message->base.descriptor == &pg_query__reindex_stmt__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t pg_query__reindex_stmt__pack + (const PgQuery__ReindexStmt *message, + uint8_t *out) +{ + assert(message->base.descriptor == &pg_query__reindex_stmt__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t pg_query__reindex_stmt__pack_to_buffer + (const PgQuery__ReindexStmt *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &pg_query__reindex_stmt__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +PgQuery__ReindexStmt * + pg_query__reindex_stmt__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (PgQuery__ReindexStmt *) + protobuf_c_message_unpack (&pg_query__reindex_stmt__descriptor, + allocator, len, data); +} +void pg_query__reindex_stmt__free_unpacked + (PgQuery__ReindexStmt *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &pg_query__reindex_stmt__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void pg_query__check_point_stmt__init + (PgQuery__CheckPointStmt *message) +{ + static const PgQuery__CheckPointStmt init_value = PG_QUERY__CHECK_POINT_STMT__INIT; + *message = init_value; +} +size_t pg_query__check_point_stmt__get_packed_size + (const PgQuery__CheckPointStmt *message) +{ + assert(message->base.descriptor == &pg_query__check_point_stmt__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t pg_query__check_point_stmt__pack + (const PgQuery__CheckPointStmt *message, + uint8_t *out) +{ + assert(message->base.descriptor == &pg_query__check_point_stmt__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t pg_query__check_point_stmt__pack_to_buffer + (const PgQuery__CheckPointStmt *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &pg_query__check_point_stmt__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +PgQuery__CheckPointStmt * + pg_query__check_point_stmt__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (PgQuery__CheckPointStmt *) + protobuf_c_message_unpack (&pg_query__check_point_stmt__descriptor, + allocator, len, data); +} +void pg_query__check_point_stmt__free_unpacked + (PgQuery__CheckPointStmt *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &pg_query__check_point_stmt__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void pg_query__create_schema_stmt__init + (PgQuery__CreateSchemaStmt *message) +{ + static const PgQuery__CreateSchemaStmt init_value = PG_QUERY__CREATE_SCHEMA_STMT__INIT; + *message = init_value; +} +size_t pg_query__create_schema_stmt__get_packed_size + (const PgQuery__CreateSchemaStmt *message) +{ + assert(message->base.descriptor == &pg_query__create_schema_stmt__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t pg_query__create_schema_stmt__pack + (const PgQuery__CreateSchemaStmt *message, + uint8_t *out) +{ + assert(message->base.descriptor == &pg_query__create_schema_stmt__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t pg_query__create_schema_stmt__pack_to_buffer + (const PgQuery__CreateSchemaStmt *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &pg_query__create_schema_stmt__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +PgQuery__CreateSchemaStmt * + pg_query__create_schema_stmt__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (PgQuery__CreateSchemaStmt *) + protobuf_c_message_unpack (&pg_query__create_schema_stmt__descriptor, + allocator, len, data); +} +void pg_query__create_schema_stmt__free_unpacked + (PgQuery__CreateSchemaStmt *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &pg_query__create_schema_stmt__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void pg_query__alter_database_stmt__init + (PgQuery__AlterDatabaseStmt *message) +{ + static const PgQuery__AlterDatabaseStmt init_value = PG_QUERY__ALTER_DATABASE_STMT__INIT; + *message = init_value; +} +size_t pg_query__alter_database_stmt__get_packed_size + (const PgQuery__AlterDatabaseStmt *message) +{ + assert(message->base.descriptor == &pg_query__alter_database_stmt__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t pg_query__alter_database_stmt__pack + (const PgQuery__AlterDatabaseStmt *message, + uint8_t *out) +{ + assert(message->base.descriptor == &pg_query__alter_database_stmt__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t pg_query__alter_database_stmt__pack_to_buffer + (const PgQuery__AlterDatabaseStmt *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &pg_query__alter_database_stmt__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +PgQuery__AlterDatabaseStmt * + pg_query__alter_database_stmt__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (PgQuery__AlterDatabaseStmt *) + protobuf_c_message_unpack (&pg_query__alter_database_stmt__descriptor, + allocator, len, data); +} +void pg_query__alter_database_stmt__free_unpacked + (PgQuery__AlterDatabaseStmt *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &pg_query__alter_database_stmt__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void pg_query__alter_database_set_stmt__init + (PgQuery__AlterDatabaseSetStmt *message) +{ + static const PgQuery__AlterDatabaseSetStmt init_value = PG_QUERY__ALTER_DATABASE_SET_STMT__INIT; + *message = init_value; +} +size_t pg_query__alter_database_set_stmt__get_packed_size + (const PgQuery__AlterDatabaseSetStmt *message) +{ + assert(message->base.descriptor == &pg_query__alter_database_set_stmt__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t pg_query__alter_database_set_stmt__pack + (const PgQuery__AlterDatabaseSetStmt *message, + uint8_t *out) +{ + assert(message->base.descriptor == &pg_query__alter_database_set_stmt__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t pg_query__alter_database_set_stmt__pack_to_buffer + (const PgQuery__AlterDatabaseSetStmt *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &pg_query__alter_database_set_stmt__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +PgQuery__AlterDatabaseSetStmt * + pg_query__alter_database_set_stmt__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (PgQuery__AlterDatabaseSetStmt *) + protobuf_c_message_unpack (&pg_query__alter_database_set_stmt__descriptor, + allocator, len, data); +} +void pg_query__alter_database_set_stmt__free_unpacked + (PgQuery__AlterDatabaseSetStmt *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &pg_query__alter_database_set_stmt__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void pg_query__alter_role_set_stmt__init + (PgQuery__AlterRoleSetStmt *message) +{ + static const PgQuery__AlterRoleSetStmt init_value = PG_QUERY__ALTER_ROLE_SET_STMT__INIT; + *message = init_value; +} +size_t pg_query__alter_role_set_stmt__get_packed_size + (const PgQuery__AlterRoleSetStmt *message) +{ + assert(message->base.descriptor == &pg_query__alter_role_set_stmt__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t pg_query__alter_role_set_stmt__pack + (const PgQuery__AlterRoleSetStmt *message, + uint8_t *out) +{ + assert(message->base.descriptor == &pg_query__alter_role_set_stmt__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t pg_query__alter_role_set_stmt__pack_to_buffer + (const PgQuery__AlterRoleSetStmt *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &pg_query__alter_role_set_stmt__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +PgQuery__AlterRoleSetStmt * + pg_query__alter_role_set_stmt__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (PgQuery__AlterRoleSetStmt *) + protobuf_c_message_unpack (&pg_query__alter_role_set_stmt__descriptor, + allocator, len, data); +} +void pg_query__alter_role_set_stmt__free_unpacked + (PgQuery__AlterRoleSetStmt *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &pg_query__alter_role_set_stmt__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void pg_query__create_conversion_stmt__init + (PgQuery__CreateConversionStmt *message) +{ + static const PgQuery__CreateConversionStmt init_value = PG_QUERY__CREATE_CONVERSION_STMT__INIT; + *message = init_value; +} +size_t pg_query__create_conversion_stmt__get_packed_size + (const PgQuery__CreateConversionStmt *message) +{ + assert(message->base.descriptor == &pg_query__create_conversion_stmt__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t pg_query__create_conversion_stmt__pack + (const PgQuery__CreateConversionStmt *message, + uint8_t *out) +{ + assert(message->base.descriptor == &pg_query__create_conversion_stmt__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t pg_query__create_conversion_stmt__pack_to_buffer + (const PgQuery__CreateConversionStmt *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &pg_query__create_conversion_stmt__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +PgQuery__CreateConversionStmt * + pg_query__create_conversion_stmt__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (PgQuery__CreateConversionStmt *) + protobuf_c_message_unpack (&pg_query__create_conversion_stmt__descriptor, + allocator, len, data); +} +void pg_query__create_conversion_stmt__free_unpacked + (PgQuery__CreateConversionStmt *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &pg_query__create_conversion_stmt__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void pg_query__create_cast_stmt__init + (PgQuery__CreateCastStmt *message) +{ + static const PgQuery__CreateCastStmt init_value = PG_QUERY__CREATE_CAST_STMT__INIT; + *message = init_value; +} +size_t pg_query__create_cast_stmt__get_packed_size + (const PgQuery__CreateCastStmt *message) +{ + assert(message->base.descriptor == &pg_query__create_cast_stmt__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t pg_query__create_cast_stmt__pack + (const PgQuery__CreateCastStmt *message, + uint8_t *out) +{ + assert(message->base.descriptor == &pg_query__create_cast_stmt__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t pg_query__create_cast_stmt__pack_to_buffer + (const PgQuery__CreateCastStmt *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &pg_query__create_cast_stmt__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +PgQuery__CreateCastStmt * + pg_query__create_cast_stmt__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (PgQuery__CreateCastStmt *) + protobuf_c_message_unpack (&pg_query__create_cast_stmt__descriptor, + allocator, len, data); +} +void pg_query__create_cast_stmt__free_unpacked + (PgQuery__CreateCastStmt *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &pg_query__create_cast_stmt__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void pg_query__create_op_class_stmt__init + (PgQuery__CreateOpClassStmt *message) +{ + static const PgQuery__CreateOpClassStmt init_value = PG_QUERY__CREATE_OP_CLASS_STMT__INIT; + *message = init_value; +} +size_t pg_query__create_op_class_stmt__get_packed_size + (const PgQuery__CreateOpClassStmt *message) +{ + assert(message->base.descriptor == &pg_query__create_op_class_stmt__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t pg_query__create_op_class_stmt__pack + (const PgQuery__CreateOpClassStmt *message, + uint8_t *out) +{ + assert(message->base.descriptor == &pg_query__create_op_class_stmt__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t pg_query__create_op_class_stmt__pack_to_buffer + (const PgQuery__CreateOpClassStmt *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &pg_query__create_op_class_stmt__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +PgQuery__CreateOpClassStmt * + pg_query__create_op_class_stmt__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (PgQuery__CreateOpClassStmt *) + protobuf_c_message_unpack (&pg_query__create_op_class_stmt__descriptor, + allocator, len, data); +} +void pg_query__create_op_class_stmt__free_unpacked + (PgQuery__CreateOpClassStmt *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &pg_query__create_op_class_stmt__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void pg_query__create_op_family_stmt__init + (PgQuery__CreateOpFamilyStmt *message) +{ + static const PgQuery__CreateOpFamilyStmt init_value = PG_QUERY__CREATE_OP_FAMILY_STMT__INIT; + *message = init_value; +} +size_t pg_query__create_op_family_stmt__get_packed_size + (const PgQuery__CreateOpFamilyStmt *message) +{ + assert(message->base.descriptor == &pg_query__create_op_family_stmt__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t pg_query__create_op_family_stmt__pack + (const PgQuery__CreateOpFamilyStmt *message, + uint8_t *out) +{ + assert(message->base.descriptor == &pg_query__create_op_family_stmt__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t pg_query__create_op_family_stmt__pack_to_buffer + (const PgQuery__CreateOpFamilyStmt *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &pg_query__create_op_family_stmt__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +PgQuery__CreateOpFamilyStmt * + pg_query__create_op_family_stmt__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (PgQuery__CreateOpFamilyStmt *) + protobuf_c_message_unpack (&pg_query__create_op_family_stmt__descriptor, + allocator, len, data); +} +void pg_query__create_op_family_stmt__free_unpacked + (PgQuery__CreateOpFamilyStmt *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &pg_query__create_op_family_stmt__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void pg_query__alter_op_family_stmt__init + (PgQuery__AlterOpFamilyStmt *message) +{ + static const PgQuery__AlterOpFamilyStmt init_value = PG_QUERY__ALTER_OP_FAMILY_STMT__INIT; + *message = init_value; +} +size_t pg_query__alter_op_family_stmt__get_packed_size + (const PgQuery__AlterOpFamilyStmt *message) +{ + assert(message->base.descriptor == &pg_query__alter_op_family_stmt__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t pg_query__alter_op_family_stmt__pack + (const PgQuery__AlterOpFamilyStmt *message, + uint8_t *out) +{ + assert(message->base.descriptor == &pg_query__alter_op_family_stmt__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t pg_query__alter_op_family_stmt__pack_to_buffer + (const PgQuery__AlterOpFamilyStmt *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &pg_query__alter_op_family_stmt__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +PgQuery__AlterOpFamilyStmt * + pg_query__alter_op_family_stmt__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (PgQuery__AlterOpFamilyStmt *) + protobuf_c_message_unpack (&pg_query__alter_op_family_stmt__descriptor, + allocator, len, data); +} +void pg_query__alter_op_family_stmt__free_unpacked + (PgQuery__AlterOpFamilyStmt *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &pg_query__alter_op_family_stmt__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void pg_query__prepare_stmt__init + (PgQuery__PrepareStmt *message) +{ + static const PgQuery__PrepareStmt init_value = PG_QUERY__PREPARE_STMT__INIT; + *message = init_value; +} +size_t pg_query__prepare_stmt__get_packed_size + (const PgQuery__PrepareStmt *message) +{ + assert(message->base.descriptor == &pg_query__prepare_stmt__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t pg_query__prepare_stmt__pack + (const PgQuery__PrepareStmt *message, + uint8_t *out) +{ + assert(message->base.descriptor == &pg_query__prepare_stmt__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t pg_query__prepare_stmt__pack_to_buffer + (const PgQuery__PrepareStmt *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &pg_query__prepare_stmt__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +PgQuery__PrepareStmt * + pg_query__prepare_stmt__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (PgQuery__PrepareStmt *) + protobuf_c_message_unpack (&pg_query__prepare_stmt__descriptor, + allocator, len, data); +} +void pg_query__prepare_stmt__free_unpacked + (PgQuery__PrepareStmt *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &pg_query__prepare_stmt__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void pg_query__execute_stmt__init + (PgQuery__ExecuteStmt *message) +{ + static const PgQuery__ExecuteStmt init_value = PG_QUERY__EXECUTE_STMT__INIT; + *message = init_value; +} +size_t pg_query__execute_stmt__get_packed_size + (const PgQuery__ExecuteStmt *message) +{ + assert(message->base.descriptor == &pg_query__execute_stmt__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t pg_query__execute_stmt__pack + (const PgQuery__ExecuteStmt *message, + uint8_t *out) +{ + assert(message->base.descriptor == &pg_query__execute_stmt__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t pg_query__execute_stmt__pack_to_buffer + (const PgQuery__ExecuteStmt *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &pg_query__execute_stmt__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +PgQuery__ExecuteStmt * + pg_query__execute_stmt__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (PgQuery__ExecuteStmt *) + protobuf_c_message_unpack (&pg_query__execute_stmt__descriptor, + allocator, len, data); +} +void pg_query__execute_stmt__free_unpacked + (PgQuery__ExecuteStmt *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &pg_query__execute_stmt__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void pg_query__deallocate_stmt__init + (PgQuery__DeallocateStmt *message) +{ + static const PgQuery__DeallocateStmt init_value = PG_QUERY__DEALLOCATE_STMT__INIT; + *message = init_value; +} +size_t pg_query__deallocate_stmt__get_packed_size + (const PgQuery__DeallocateStmt *message) +{ + assert(message->base.descriptor == &pg_query__deallocate_stmt__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t pg_query__deallocate_stmt__pack + (const PgQuery__DeallocateStmt *message, + uint8_t *out) +{ + assert(message->base.descriptor == &pg_query__deallocate_stmt__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t pg_query__deallocate_stmt__pack_to_buffer + (const PgQuery__DeallocateStmt *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &pg_query__deallocate_stmt__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +PgQuery__DeallocateStmt * + pg_query__deallocate_stmt__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (PgQuery__DeallocateStmt *) + protobuf_c_message_unpack (&pg_query__deallocate_stmt__descriptor, + allocator, len, data); +} +void pg_query__deallocate_stmt__free_unpacked + (PgQuery__DeallocateStmt *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &pg_query__deallocate_stmt__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void pg_query__declare_cursor_stmt__init + (PgQuery__DeclareCursorStmt *message) +{ + static const PgQuery__DeclareCursorStmt init_value = PG_QUERY__DECLARE_CURSOR_STMT__INIT; + *message = init_value; +} +size_t pg_query__declare_cursor_stmt__get_packed_size + (const PgQuery__DeclareCursorStmt *message) +{ + assert(message->base.descriptor == &pg_query__declare_cursor_stmt__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t pg_query__declare_cursor_stmt__pack + (const PgQuery__DeclareCursorStmt *message, + uint8_t *out) +{ + assert(message->base.descriptor == &pg_query__declare_cursor_stmt__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t pg_query__declare_cursor_stmt__pack_to_buffer + (const PgQuery__DeclareCursorStmt *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &pg_query__declare_cursor_stmt__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +PgQuery__DeclareCursorStmt * + pg_query__declare_cursor_stmt__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (PgQuery__DeclareCursorStmt *) + protobuf_c_message_unpack (&pg_query__declare_cursor_stmt__descriptor, + allocator, len, data); +} +void pg_query__declare_cursor_stmt__free_unpacked + (PgQuery__DeclareCursorStmt *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &pg_query__declare_cursor_stmt__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void pg_query__create_table_space_stmt__init + (PgQuery__CreateTableSpaceStmt *message) +{ + static const PgQuery__CreateTableSpaceStmt init_value = PG_QUERY__CREATE_TABLE_SPACE_STMT__INIT; + *message = init_value; +} +size_t pg_query__create_table_space_stmt__get_packed_size + (const PgQuery__CreateTableSpaceStmt *message) +{ + assert(message->base.descriptor == &pg_query__create_table_space_stmt__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t pg_query__create_table_space_stmt__pack + (const PgQuery__CreateTableSpaceStmt *message, + uint8_t *out) +{ + assert(message->base.descriptor == &pg_query__create_table_space_stmt__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t pg_query__create_table_space_stmt__pack_to_buffer + (const PgQuery__CreateTableSpaceStmt *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &pg_query__create_table_space_stmt__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +PgQuery__CreateTableSpaceStmt * + pg_query__create_table_space_stmt__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (PgQuery__CreateTableSpaceStmt *) + protobuf_c_message_unpack (&pg_query__create_table_space_stmt__descriptor, + allocator, len, data); +} +void pg_query__create_table_space_stmt__free_unpacked + (PgQuery__CreateTableSpaceStmt *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &pg_query__create_table_space_stmt__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void pg_query__drop_table_space_stmt__init + (PgQuery__DropTableSpaceStmt *message) +{ + static const PgQuery__DropTableSpaceStmt init_value = PG_QUERY__DROP_TABLE_SPACE_STMT__INIT; + *message = init_value; +} +size_t pg_query__drop_table_space_stmt__get_packed_size + (const PgQuery__DropTableSpaceStmt *message) +{ + assert(message->base.descriptor == &pg_query__drop_table_space_stmt__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t pg_query__drop_table_space_stmt__pack + (const PgQuery__DropTableSpaceStmt *message, + uint8_t *out) +{ + assert(message->base.descriptor == &pg_query__drop_table_space_stmt__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t pg_query__drop_table_space_stmt__pack_to_buffer + (const PgQuery__DropTableSpaceStmt *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &pg_query__drop_table_space_stmt__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +PgQuery__DropTableSpaceStmt * + pg_query__drop_table_space_stmt__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (PgQuery__DropTableSpaceStmt *) + protobuf_c_message_unpack (&pg_query__drop_table_space_stmt__descriptor, + allocator, len, data); +} +void pg_query__drop_table_space_stmt__free_unpacked + (PgQuery__DropTableSpaceStmt *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &pg_query__drop_table_space_stmt__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void pg_query__alter_object_depends_stmt__init + (PgQuery__AlterObjectDependsStmt *message) +{ + static const PgQuery__AlterObjectDependsStmt init_value = PG_QUERY__ALTER_OBJECT_DEPENDS_STMT__INIT; + *message = init_value; +} +size_t pg_query__alter_object_depends_stmt__get_packed_size + (const PgQuery__AlterObjectDependsStmt *message) +{ + assert(message->base.descriptor == &pg_query__alter_object_depends_stmt__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t pg_query__alter_object_depends_stmt__pack + (const PgQuery__AlterObjectDependsStmt *message, + uint8_t *out) +{ + assert(message->base.descriptor == &pg_query__alter_object_depends_stmt__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t pg_query__alter_object_depends_stmt__pack_to_buffer + (const PgQuery__AlterObjectDependsStmt *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &pg_query__alter_object_depends_stmt__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +PgQuery__AlterObjectDependsStmt * + pg_query__alter_object_depends_stmt__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (PgQuery__AlterObjectDependsStmt *) + protobuf_c_message_unpack (&pg_query__alter_object_depends_stmt__descriptor, + allocator, len, data); +} +void pg_query__alter_object_depends_stmt__free_unpacked + (PgQuery__AlterObjectDependsStmt *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &pg_query__alter_object_depends_stmt__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void pg_query__alter_object_schema_stmt__init + (PgQuery__AlterObjectSchemaStmt *message) +{ + static const PgQuery__AlterObjectSchemaStmt init_value = PG_QUERY__ALTER_OBJECT_SCHEMA_STMT__INIT; + *message = init_value; +} +size_t pg_query__alter_object_schema_stmt__get_packed_size + (const PgQuery__AlterObjectSchemaStmt *message) +{ + assert(message->base.descriptor == &pg_query__alter_object_schema_stmt__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t pg_query__alter_object_schema_stmt__pack + (const PgQuery__AlterObjectSchemaStmt *message, + uint8_t *out) +{ + assert(message->base.descriptor == &pg_query__alter_object_schema_stmt__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t pg_query__alter_object_schema_stmt__pack_to_buffer + (const PgQuery__AlterObjectSchemaStmt *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &pg_query__alter_object_schema_stmt__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +PgQuery__AlterObjectSchemaStmt * + pg_query__alter_object_schema_stmt__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (PgQuery__AlterObjectSchemaStmt *) + protobuf_c_message_unpack (&pg_query__alter_object_schema_stmt__descriptor, + allocator, len, data); +} +void pg_query__alter_object_schema_stmt__free_unpacked + (PgQuery__AlterObjectSchemaStmt *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &pg_query__alter_object_schema_stmt__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void pg_query__alter_owner_stmt__init + (PgQuery__AlterOwnerStmt *message) +{ + static const PgQuery__AlterOwnerStmt init_value = PG_QUERY__ALTER_OWNER_STMT__INIT; + *message = init_value; +} +size_t pg_query__alter_owner_stmt__get_packed_size + (const PgQuery__AlterOwnerStmt *message) +{ + assert(message->base.descriptor == &pg_query__alter_owner_stmt__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t pg_query__alter_owner_stmt__pack + (const PgQuery__AlterOwnerStmt *message, + uint8_t *out) +{ + assert(message->base.descriptor == &pg_query__alter_owner_stmt__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t pg_query__alter_owner_stmt__pack_to_buffer + (const PgQuery__AlterOwnerStmt *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &pg_query__alter_owner_stmt__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +PgQuery__AlterOwnerStmt * + pg_query__alter_owner_stmt__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (PgQuery__AlterOwnerStmt *) + protobuf_c_message_unpack (&pg_query__alter_owner_stmt__descriptor, + allocator, len, data); +} +void pg_query__alter_owner_stmt__free_unpacked + (PgQuery__AlterOwnerStmt *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &pg_query__alter_owner_stmt__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void pg_query__alter_operator_stmt__init + (PgQuery__AlterOperatorStmt *message) +{ + static const PgQuery__AlterOperatorStmt init_value = PG_QUERY__ALTER_OPERATOR_STMT__INIT; + *message = init_value; +} +size_t pg_query__alter_operator_stmt__get_packed_size + (const PgQuery__AlterOperatorStmt *message) +{ + assert(message->base.descriptor == &pg_query__alter_operator_stmt__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t pg_query__alter_operator_stmt__pack + (const PgQuery__AlterOperatorStmt *message, + uint8_t *out) +{ + assert(message->base.descriptor == &pg_query__alter_operator_stmt__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t pg_query__alter_operator_stmt__pack_to_buffer + (const PgQuery__AlterOperatorStmt *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &pg_query__alter_operator_stmt__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +PgQuery__AlterOperatorStmt * + pg_query__alter_operator_stmt__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (PgQuery__AlterOperatorStmt *) + protobuf_c_message_unpack (&pg_query__alter_operator_stmt__descriptor, + allocator, len, data); +} +void pg_query__alter_operator_stmt__free_unpacked + (PgQuery__AlterOperatorStmt *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &pg_query__alter_operator_stmt__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void pg_query__alter_type_stmt__init + (PgQuery__AlterTypeStmt *message) +{ + static const PgQuery__AlterTypeStmt init_value = PG_QUERY__ALTER_TYPE_STMT__INIT; + *message = init_value; +} +size_t pg_query__alter_type_stmt__get_packed_size + (const PgQuery__AlterTypeStmt *message) +{ + assert(message->base.descriptor == &pg_query__alter_type_stmt__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t pg_query__alter_type_stmt__pack + (const PgQuery__AlterTypeStmt *message, + uint8_t *out) +{ + assert(message->base.descriptor == &pg_query__alter_type_stmt__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t pg_query__alter_type_stmt__pack_to_buffer + (const PgQuery__AlterTypeStmt *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &pg_query__alter_type_stmt__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +PgQuery__AlterTypeStmt * + pg_query__alter_type_stmt__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (PgQuery__AlterTypeStmt *) + protobuf_c_message_unpack (&pg_query__alter_type_stmt__descriptor, + allocator, len, data); +} +void pg_query__alter_type_stmt__free_unpacked + (PgQuery__AlterTypeStmt *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &pg_query__alter_type_stmt__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void pg_query__drop_owned_stmt__init + (PgQuery__DropOwnedStmt *message) +{ + static const PgQuery__DropOwnedStmt init_value = PG_QUERY__DROP_OWNED_STMT__INIT; + *message = init_value; +} +size_t pg_query__drop_owned_stmt__get_packed_size + (const PgQuery__DropOwnedStmt *message) +{ + assert(message->base.descriptor == &pg_query__drop_owned_stmt__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t pg_query__drop_owned_stmt__pack + (const PgQuery__DropOwnedStmt *message, + uint8_t *out) +{ + assert(message->base.descriptor == &pg_query__drop_owned_stmt__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t pg_query__drop_owned_stmt__pack_to_buffer + (const PgQuery__DropOwnedStmt *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &pg_query__drop_owned_stmt__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +PgQuery__DropOwnedStmt * + pg_query__drop_owned_stmt__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (PgQuery__DropOwnedStmt *) + protobuf_c_message_unpack (&pg_query__drop_owned_stmt__descriptor, + allocator, len, data); +} +void pg_query__drop_owned_stmt__free_unpacked + (PgQuery__DropOwnedStmt *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &pg_query__drop_owned_stmt__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void pg_query__reassign_owned_stmt__init + (PgQuery__ReassignOwnedStmt *message) +{ + static const PgQuery__ReassignOwnedStmt init_value = PG_QUERY__REASSIGN_OWNED_STMT__INIT; + *message = init_value; +} +size_t pg_query__reassign_owned_stmt__get_packed_size + (const PgQuery__ReassignOwnedStmt *message) +{ + assert(message->base.descriptor == &pg_query__reassign_owned_stmt__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t pg_query__reassign_owned_stmt__pack + (const PgQuery__ReassignOwnedStmt *message, + uint8_t *out) +{ + assert(message->base.descriptor == &pg_query__reassign_owned_stmt__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t pg_query__reassign_owned_stmt__pack_to_buffer + (const PgQuery__ReassignOwnedStmt *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &pg_query__reassign_owned_stmt__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +PgQuery__ReassignOwnedStmt * + pg_query__reassign_owned_stmt__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (PgQuery__ReassignOwnedStmt *) + protobuf_c_message_unpack (&pg_query__reassign_owned_stmt__descriptor, + allocator, len, data); +} +void pg_query__reassign_owned_stmt__free_unpacked + (PgQuery__ReassignOwnedStmt *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &pg_query__reassign_owned_stmt__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void pg_query__composite_type_stmt__init + (PgQuery__CompositeTypeStmt *message) +{ + static const PgQuery__CompositeTypeStmt init_value = PG_QUERY__COMPOSITE_TYPE_STMT__INIT; + *message = init_value; +} +size_t pg_query__composite_type_stmt__get_packed_size + (const PgQuery__CompositeTypeStmt *message) +{ + assert(message->base.descriptor == &pg_query__composite_type_stmt__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t pg_query__composite_type_stmt__pack + (const PgQuery__CompositeTypeStmt *message, + uint8_t *out) +{ + assert(message->base.descriptor == &pg_query__composite_type_stmt__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t pg_query__composite_type_stmt__pack_to_buffer + (const PgQuery__CompositeTypeStmt *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &pg_query__composite_type_stmt__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +PgQuery__CompositeTypeStmt * + pg_query__composite_type_stmt__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (PgQuery__CompositeTypeStmt *) + protobuf_c_message_unpack (&pg_query__composite_type_stmt__descriptor, + allocator, len, data); +} +void pg_query__composite_type_stmt__free_unpacked + (PgQuery__CompositeTypeStmt *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &pg_query__composite_type_stmt__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void pg_query__create_enum_stmt__init + (PgQuery__CreateEnumStmt *message) +{ + static const PgQuery__CreateEnumStmt init_value = PG_QUERY__CREATE_ENUM_STMT__INIT; + *message = init_value; +} +size_t pg_query__create_enum_stmt__get_packed_size + (const PgQuery__CreateEnumStmt *message) +{ + assert(message->base.descriptor == &pg_query__create_enum_stmt__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t pg_query__create_enum_stmt__pack + (const PgQuery__CreateEnumStmt *message, + uint8_t *out) +{ + assert(message->base.descriptor == &pg_query__create_enum_stmt__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t pg_query__create_enum_stmt__pack_to_buffer + (const PgQuery__CreateEnumStmt *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &pg_query__create_enum_stmt__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +PgQuery__CreateEnumStmt * + pg_query__create_enum_stmt__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (PgQuery__CreateEnumStmt *) + protobuf_c_message_unpack (&pg_query__create_enum_stmt__descriptor, + allocator, len, data); +} +void pg_query__create_enum_stmt__free_unpacked + (PgQuery__CreateEnumStmt *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &pg_query__create_enum_stmt__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void pg_query__create_range_stmt__init + (PgQuery__CreateRangeStmt *message) +{ + static const PgQuery__CreateRangeStmt init_value = PG_QUERY__CREATE_RANGE_STMT__INIT; + *message = init_value; +} +size_t pg_query__create_range_stmt__get_packed_size + (const PgQuery__CreateRangeStmt *message) +{ + assert(message->base.descriptor == &pg_query__create_range_stmt__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t pg_query__create_range_stmt__pack + (const PgQuery__CreateRangeStmt *message, + uint8_t *out) +{ + assert(message->base.descriptor == &pg_query__create_range_stmt__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t pg_query__create_range_stmt__pack_to_buffer + (const PgQuery__CreateRangeStmt *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &pg_query__create_range_stmt__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +PgQuery__CreateRangeStmt * + pg_query__create_range_stmt__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (PgQuery__CreateRangeStmt *) + protobuf_c_message_unpack (&pg_query__create_range_stmt__descriptor, + allocator, len, data); +} +void pg_query__create_range_stmt__free_unpacked + (PgQuery__CreateRangeStmt *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &pg_query__create_range_stmt__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void pg_query__alter_enum_stmt__init + (PgQuery__AlterEnumStmt *message) +{ + static const PgQuery__AlterEnumStmt init_value = PG_QUERY__ALTER_ENUM_STMT__INIT; + *message = init_value; +} +size_t pg_query__alter_enum_stmt__get_packed_size + (const PgQuery__AlterEnumStmt *message) +{ + assert(message->base.descriptor == &pg_query__alter_enum_stmt__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t pg_query__alter_enum_stmt__pack + (const PgQuery__AlterEnumStmt *message, + uint8_t *out) +{ + assert(message->base.descriptor == &pg_query__alter_enum_stmt__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t pg_query__alter_enum_stmt__pack_to_buffer + (const PgQuery__AlterEnumStmt *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &pg_query__alter_enum_stmt__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +PgQuery__AlterEnumStmt * + pg_query__alter_enum_stmt__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (PgQuery__AlterEnumStmt *) + protobuf_c_message_unpack (&pg_query__alter_enum_stmt__descriptor, + allocator, len, data); +} +void pg_query__alter_enum_stmt__free_unpacked + (PgQuery__AlterEnumStmt *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &pg_query__alter_enum_stmt__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void pg_query__alter_tsdictionary_stmt__init + (PgQuery__AlterTSDictionaryStmt *message) +{ + static const PgQuery__AlterTSDictionaryStmt init_value = PG_QUERY__ALTER_TSDICTIONARY_STMT__INIT; + *message = init_value; +} +size_t pg_query__alter_tsdictionary_stmt__get_packed_size + (const PgQuery__AlterTSDictionaryStmt *message) +{ + assert(message->base.descriptor == &pg_query__alter_tsdictionary_stmt__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t pg_query__alter_tsdictionary_stmt__pack + (const PgQuery__AlterTSDictionaryStmt *message, + uint8_t *out) +{ + assert(message->base.descriptor == &pg_query__alter_tsdictionary_stmt__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t pg_query__alter_tsdictionary_stmt__pack_to_buffer + (const PgQuery__AlterTSDictionaryStmt *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &pg_query__alter_tsdictionary_stmt__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +PgQuery__AlterTSDictionaryStmt * + pg_query__alter_tsdictionary_stmt__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (PgQuery__AlterTSDictionaryStmt *) + protobuf_c_message_unpack (&pg_query__alter_tsdictionary_stmt__descriptor, + allocator, len, data); +} +void pg_query__alter_tsdictionary_stmt__free_unpacked + (PgQuery__AlterTSDictionaryStmt *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &pg_query__alter_tsdictionary_stmt__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void pg_query__alter_tsconfiguration_stmt__init + (PgQuery__AlterTSConfigurationStmt *message) +{ + static const PgQuery__AlterTSConfigurationStmt init_value = PG_QUERY__ALTER_TSCONFIGURATION_STMT__INIT; + *message = init_value; +} +size_t pg_query__alter_tsconfiguration_stmt__get_packed_size + (const PgQuery__AlterTSConfigurationStmt *message) +{ + assert(message->base.descriptor == &pg_query__alter_tsconfiguration_stmt__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t pg_query__alter_tsconfiguration_stmt__pack + (const PgQuery__AlterTSConfigurationStmt *message, + uint8_t *out) +{ + assert(message->base.descriptor == &pg_query__alter_tsconfiguration_stmt__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t pg_query__alter_tsconfiguration_stmt__pack_to_buffer + (const PgQuery__AlterTSConfigurationStmt *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &pg_query__alter_tsconfiguration_stmt__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +PgQuery__AlterTSConfigurationStmt * + pg_query__alter_tsconfiguration_stmt__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (PgQuery__AlterTSConfigurationStmt *) + protobuf_c_message_unpack (&pg_query__alter_tsconfiguration_stmt__descriptor, + allocator, len, data); +} +void pg_query__alter_tsconfiguration_stmt__free_unpacked + (PgQuery__AlterTSConfigurationStmt *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &pg_query__alter_tsconfiguration_stmt__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void pg_query__create_fdw_stmt__init + (PgQuery__CreateFdwStmt *message) +{ + static const PgQuery__CreateFdwStmt init_value = PG_QUERY__CREATE_FDW_STMT__INIT; + *message = init_value; +} +size_t pg_query__create_fdw_stmt__get_packed_size + (const PgQuery__CreateFdwStmt *message) +{ + assert(message->base.descriptor == &pg_query__create_fdw_stmt__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t pg_query__create_fdw_stmt__pack + (const PgQuery__CreateFdwStmt *message, + uint8_t *out) +{ + assert(message->base.descriptor == &pg_query__create_fdw_stmt__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t pg_query__create_fdw_stmt__pack_to_buffer + (const PgQuery__CreateFdwStmt *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &pg_query__create_fdw_stmt__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +PgQuery__CreateFdwStmt * + pg_query__create_fdw_stmt__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (PgQuery__CreateFdwStmt *) + protobuf_c_message_unpack (&pg_query__create_fdw_stmt__descriptor, + allocator, len, data); +} +void pg_query__create_fdw_stmt__free_unpacked + (PgQuery__CreateFdwStmt *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &pg_query__create_fdw_stmt__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void pg_query__alter_fdw_stmt__init + (PgQuery__AlterFdwStmt *message) +{ + static const PgQuery__AlterFdwStmt init_value = PG_QUERY__ALTER_FDW_STMT__INIT; + *message = init_value; +} +size_t pg_query__alter_fdw_stmt__get_packed_size + (const PgQuery__AlterFdwStmt *message) +{ + assert(message->base.descriptor == &pg_query__alter_fdw_stmt__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t pg_query__alter_fdw_stmt__pack + (const PgQuery__AlterFdwStmt *message, + uint8_t *out) +{ + assert(message->base.descriptor == &pg_query__alter_fdw_stmt__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t pg_query__alter_fdw_stmt__pack_to_buffer + (const PgQuery__AlterFdwStmt *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &pg_query__alter_fdw_stmt__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +PgQuery__AlterFdwStmt * + pg_query__alter_fdw_stmt__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (PgQuery__AlterFdwStmt *) + protobuf_c_message_unpack (&pg_query__alter_fdw_stmt__descriptor, + allocator, len, data); +} +void pg_query__alter_fdw_stmt__free_unpacked + (PgQuery__AlterFdwStmt *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &pg_query__alter_fdw_stmt__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void pg_query__create_foreign_server_stmt__init + (PgQuery__CreateForeignServerStmt *message) +{ + static const PgQuery__CreateForeignServerStmt init_value = PG_QUERY__CREATE_FOREIGN_SERVER_STMT__INIT; + *message = init_value; +} +size_t pg_query__create_foreign_server_stmt__get_packed_size + (const PgQuery__CreateForeignServerStmt *message) +{ + assert(message->base.descriptor == &pg_query__create_foreign_server_stmt__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t pg_query__create_foreign_server_stmt__pack + (const PgQuery__CreateForeignServerStmt *message, + uint8_t *out) +{ + assert(message->base.descriptor == &pg_query__create_foreign_server_stmt__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t pg_query__create_foreign_server_stmt__pack_to_buffer + (const PgQuery__CreateForeignServerStmt *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &pg_query__create_foreign_server_stmt__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +PgQuery__CreateForeignServerStmt * + pg_query__create_foreign_server_stmt__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (PgQuery__CreateForeignServerStmt *) + protobuf_c_message_unpack (&pg_query__create_foreign_server_stmt__descriptor, + allocator, len, data); +} +void pg_query__create_foreign_server_stmt__free_unpacked + (PgQuery__CreateForeignServerStmt *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &pg_query__create_foreign_server_stmt__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void pg_query__alter_foreign_server_stmt__init + (PgQuery__AlterForeignServerStmt *message) +{ + static const PgQuery__AlterForeignServerStmt init_value = PG_QUERY__ALTER_FOREIGN_SERVER_STMT__INIT; + *message = init_value; +} +size_t pg_query__alter_foreign_server_stmt__get_packed_size + (const PgQuery__AlterForeignServerStmt *message) +{ + assert(message->base.descriptor == &pg_query__alter_foreign_server_stmt__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t pg_query__alter_foreign_server_stmt__pack + (const PgQuery__AlterForeignServerStmt *message, + uint8_t *out) +{ + assert(message->base.descriptor == &pg_query__alter_foreign_server_stmt__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t pg_query__alter_foreign_server_stmt__pack_to_buffer + (const PgQuery__AlterForeignServerStmt *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &pg_query__alter_foreign_server_stmt__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +PgQuery__AlterForeignServerStmt * + pg_query__alter_foreign_server_stmt__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (PgQuery__AlterForeignServerStmt *) + protobuf_c_message_unpack (&pg_query__alter_foreign_server_stmt__descriptor, + allocator, len, data); +} +void pg_query__alter_foreign_server_stmt__free_unpacked + (PgQuery__AlterForeignServerStmt *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &pg_query__alter_foreign_server_stmt__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void pg_query__create_user_mapping_stmt__init + (PgQuery__CreateUserMappingStmt *message) +{ + static const PgQuery__CreateUserMappingStmt init_value = PG_QUERY__CREATE_USER_MAPPING_STMT__INIT; + *message = init_value; +} +size_t pg_query__create_user_mapping_stmt__get_packed_size + (const PgQuery__CreateUserMappingStmt *message) +{ + assert(message->base.descriptor == &pg_query__create_user_mapping_stmt__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t pg_query__create_user_mapping_stmt__pack + (const PgQuery__CreateUserMappingStmt *message, + uint8_t *out) +{ + assert(message->base.descriptor == &pg_query__create_user_mapping_stmt__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t pg_query__create_user_mapping_stmt__pack_to_buffer + (const PgQuery__CreateUserMappingStmt *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &pg_query__create_user_mapping_stmt__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +PgQuery__CreateUserMappingStmt * + pg_query__create_user_mapping_stmt__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (PgQuery__CreateUserMappingStmt *) + protobuf_c_message_unpack (&pg_query__create_user_mapping_stmt__descriptor, + allocator, len, data); +} +void pg_query__create_user_mapping_stmt__free_unpacked + (PgQuery__CreateUserMappingStmt *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &pg_query__create_user_mapping_stmt__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void pg_query__alter_user_mapping_stmt__init + (PgQuery__AlterUserMappingStmt *message) +{ + static const PgQuery__AlterUserMappingStmt init_value = PG_QUERY__ALTER_USER_MAPPING_STMT__INIT; + *message = init_value; +} +size_t pg_query__alter_user_mapping_stmt__get_packed_size + (const PgQuery__AlterUserMappingStmt *message) +{ + assert(message->base.descriptor == &pg_query__alter_user_mapping_stmt__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t pg_query__alter_user_mapping_stmt__pack + (const PgQuery__AlterUserMappingStmt *message, + uint8_t *out) +{ + assert(message->base.descriptor == &pg_query__alter_user_mapping_stmt__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t pg_query__alter_user_mapping_stmt__pack_to_buffer + (const PgQuery__AlterUserMappingStmt *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &pg_query__alter_user_mapping_stmt__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +PgQuery__AlterUserMappingStmt * + pg_query__alter_user_mapping_stmt__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (PgQuery__AlterUserMappingStmt *) + protobuf_c_message_unpack (&pg_query__alter_user_mapping_stmt__descriptor, + allocator, len, data); +} +void pg_query__alter_user_mapping_stmt__free_unpacked + (PgQuery__AlterUserMappingStmt *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &pg_query__alter_user_mapping_stmt__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void pg_query__drop_user_mapping_stmt__init + (PgQuery__DropUserMappingStmt *message) +{ + static const PgQuery__DropUserMappingStmt init_value = PG_QUERY__DROP_USER_MAPPING_STMT__INIT; + *message = init_value; +} +size_t pg_query__drop_user_mapping_stmt__get_packed_size + (const PgQuery__DropUserMappingStmt *message) +{ + assert(message->base.descriptor == &pg_query__drop_user_mapping_stmt__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t pg_query__drop_user_mapping_stmt__pack + (const PgQuery__DropUserMappingStmt *message, + uint8_t *out) +{ + assert(message->base.descriptor == &pg_query__drop_user_mapping_stmt__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t pg_query__drop_user_mapping_stmt__pack_to_buffer + (const PgQuery__DropUserMappingStmt *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &pg_query__drop_user_mapping_stmt__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +PgQuery__DropUserMappingStmt * + pg_query__drop_user_mapping_stmt__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (PgQuery__DropUserMappingStmt *) + protobuf_c_message_unpack (&pg_query__drop_user_mapping_stmt__descriptor, + allocator, len, data); +} +void pg_query__drop_user_mapping_stmt__free_unpacked + (PgQuery__DropUserMappingStmt *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &pg_query__drop_user_mapping_stmt__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void pg_query__alter_table_space_options_stmt__init + (PgQuery__AlterTableSpaceOptionsStmt *message) +{ + static const PgQuery__AlterTableSpaceOptionsStmt init_value = PG_QUERY__ALTER_TABLE_SPACE_OPTIONS_STMT__INIT; + *message = init_value; +} +size_t pg_query__alter_table_space_options_stmt__get_packed_size + (const PgQuery__AlterTableSpaceOptionsStmt *message) +{ + assert(message->base.descriptor == &pg_query__alter_table_space_options_stmt__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t pg_query__alter_table_space_options_stmt__pack + (const PgQuery__AlterTableSpaceOptionsStmt *message, + uint8_t *out) +{ + assert(message->base.descriptor == &pg_query__alter_table_space_options_stmt__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t pg_query__alter_table_space_options_stmt__pack_to_buffer + (const PgQuery__AlterTableSpaceOptionsStmt *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &pg_query__alter_table_space_options_stmt__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +PgQuery__AlterTableSpaceOptionsStmt * + pg_query__alter_table_space_options_stmt__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (PgQuery__AlterTableSpaceOptionsStmt *) + protobuf_c_message_unpack (&pg_query__alter_table_space_options_stmt__descriptor, + allocator, len, data); +} +void pg_query__alter_table_space_options_stmt__free_unpacked + (PgQuery__AlterTableSpaceOptionsStmt *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &pg_query__alter_table_space_options_stmt__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void pg_query__alter_table_move_all_stmt__init + (PgQuery__AlterTableMoveAllStmt *message) +{ + static const PgQuery__AlterTableMoveAllStmt init_value = PG_QUERY__ALTER_TABLE_MOVE_ALL_STMT__INIT; + *message = init_value; +} +size_t pg_query__alter_table_move_all_stmt__get_packed_size + (const PgQuery__AlterTableMoveAllStmt *message) +{ + assert(message->base.descriptor == &pg_query__alter_table_move_all_stmt__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t pg_query__alter_table_move_all_stmt__pack + (const PgQuery__AlterTableMoveAllStmt *message, + uint8_t *out) +{ + assert(message->base.descriptor == &pg_query__alter_table_move_all_stmt__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t pg_query__alter_table_move_all_stmt__pack_to_buffer + (const PgQuery__AlterTableMoveAllStmt *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &pg_query__alter_table_move_all_stmt__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +PgQuery__AlterTableMoveAllStmt * + pg_query__alter_table_move_all_stmt__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (PgQuery__AlterTableMoveAllStmt *) + protobuf_c_message_unpack (&pg_query__alter_table_move_all_stmt__descriptor, + allocator, len, data); +} +void pg_query__alter_table_move_all_stmt__free_unpacked + (PgQuery__AlterTableMoveAllStmt *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &pg_query__alter_table_move_all_stmt__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void pg_query__sec_label_stmt__init + (PgQuery__SecLabelStmt *message) +{ + static const PgQuery__SecLabelStmt init_value = PG_QUERY__SEC_LABEL_STMT__INIT; + *message = init_value; +} +size_t pg_query__sec_label_stmt__get_packed_size + (const PgQuery__SecLabelStmt *message) +{ + assert(message->base.descriptor == &pg_query__sec_label_stmt__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t pg_query__sec_label_stmt__pack + (const PgQuery__SecLabelStmt *message, + uint8_t *out) +{ + assert(message->base.descriptor == &pg_query__sec_label_stmt__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t pg_query__sec_label_stmt__pack_to_buffer + (const PgQuery__SecLabelStmt *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &pg_query__sec_label_stmt__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +PgQuery__SecLabelStmt * + pg_query__sec_label_stmt__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (PgQuery__SecLabelStmt *) + protobuf_c_message_unpack (&pg_query__sec_label_stmt__descriptor, + allocator, len, data); +} +void pg_query__sec_label_stmt__free_unpacked + (PgQuery__SecLabelStmt *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &pg_query__sec_label_stmt__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void pg_query__create_foreign_table_stmt__init + (PgQuery__CreateForeignTableStmt *message) +{ + static const PgQuery__CreateForeignTableStmt init_value = PG_QUERY__CREATE_FOREIGN_TABLE_STMT__INIT; + *message = init_value; +} +size_t pg_query__create_foreign_table_stmt__get_packed_size + (const PgQuery__CreateForeignTableStmt *message) +{ + assert(message->base.descriptor == &pg_query__create_foreign_table_stmt__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t pg_query__create_foreign_table_stmt__pack + (const PgQuery__CreateForeignTableStmt *message, + uint8_t *out) +{ + assert(message->base.descriptor == &pg_query__create_foreign_table_stmt__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t pg_query__create_foreign_table_stmt__pack_to_buffer + (const PgQuery__CreateForeignTableStmt *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &pg_query__create_foreign_table_stmt__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +PgQuery__CreateForeignTableStmt * + pg_query__create_foreign_table_stmt__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (PgQuery__CreateForeignTableStmt *) + protobuf_c_message_unpack (&pg_query__create_foreign_table_stmt__descriptor, + allocator, len, data); +} +void pg_query__create_foreign_table_stmt__free_unpacked + (PgQuery__CreateForeignTableStmt *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &pg_query__create_foreign_table_stmt__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void pg_query__import_foreign_schema_stmt__init + (PgQuery__ImportForeignSchemaStmt *message) +{ + static const PgQuery__ImportForeignSchemaStmt init_value = PG_QUERY__IMPORT_FOREIGN_SCHEMA_STMT__INIT; + *message = init_value; +} +size_t pg_query__import_foreign_schema_stmt__get_packed_size + (const PgQuery__ImportForeignSchemaStmt *message) +{ + assert(message->base.descriptor == &pg_query__import_foreign_schema_stmt__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t pg_query__import_foreign_schema_stmt__pack + (const PgQuery__ImportForeignSchemaStmt *message, + uint8_t *out) +{ + assert(message->base.descriptor == &pg_query__import_foreign_schema_stmt__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t pg_query__import_foreign_schema_stmt__pack_to_buffer + (const PgQuery__ImportForeignSchemaStmt *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &pg_query__import_foreign_schema_stmt__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +PgQuery__ImportForeignSchemaStmt * + pg_query__import_foreign_schema_stmt__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (PgQuery__ImportForeignSchemaStmt *) + protobuf_c_message_unpack (&pg_query__import_foreign_schema_stmt__descriptor, + allocator, len, data); +} +void pg_query__import_foreign_schema_stmt__free_unpacked + (PgQuery__ImportForeignSchemaStmt *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &pg_query__import_foreign_schema_stmt__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void pg_query__create_extension_stmt__init + (PgQuery__CreateExtensionStmt *message) +{ + static const PgQuery__CreateExtensionStmt init_value = PG_QUERY__CREATE_EXTENSION_STMT__INIT; + *message = init_value; +} +size_t pg_query__create_extension_stmt__get_packed_size + (const PgQuery__CreateExtensionStmt *message) +{ + assert(message->base.descriptor == &pg_query__create_extension_stmt__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t pg_query__create_extension_stmt__pack + (const PgQuery__CreateExtensionStmt *message, + uint8_t *out) +{ + assert(message->base.descriptor == &pg_query__create_extension_stmt__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t pg_query__create_extension_stmt__pack_to_buffer + (const PgQuery__CreateExtensionStmt *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &pg_query__create_extension_stmt__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +PgQuery__CreateExtensionStmt * + pg_query__create_extension_stmt__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (PgQuery__CreateExtensionStmt *) + protobuf_c_message_unpack (&pg_query__create_extension_stmt__descriptor, + allocator, len, data); +} +void pg_query__create_extension_stmt__free_unpacked + (PgQuery__CreateExtensionStmt *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &pg_query__create_extension_stmt__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void pg_query__alter_extension_stmt__init + (PgQuery__AlterExtensionStmt *message) +{ + static const PgQuery__AlterExtensionStmt init_value = PG_QUERY__ALTER_EXTENSION_STMT__INIT; + *message = init_value; +} +size_t pg_query__alter_extension_stmt__get_packed_size + (const PgQuery__AlterExtensionStmt *message) +{ + assert(message->base.descriptor == &pg_query__alter_extension_stmt__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t pg_query__alter_extension_stmt__pack + (const PgQuery__AlterExtensionStmt *message, + uint8_t *out) +{ + assert(message->base.descriptor == &pg_query__alter_extension_stmt__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t pg_query__alter_extension_stmt__pack_to_buffer + (const PgQuery__AlterExtensionStmt *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &pg_query__alter_extension_stmt__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +PgQuery__AlterExtensionStmt * + pg_query__alter_extension_stmt__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (PgQuery__AlterExtensionStmt *) + protobuf_c_message_unpack (&pg_query__alter_extension_stmt__descriptor, + allocator, len, data); +} +void pg_query__alter_extension_stmt__free_unpacked + (PgQuery__AlterExtensionStmt *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &pg_query__alter_extension_stmt__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void pg_query__alter_extension_contents_stmt__init + (PgQuery__AlterExtensionContentsStmt *message) +{ + static const PgQuery__AlterExtensionContentsStmt init_value = PG_QUERY__ALTER_EXTENSION_CONTENTS_STMT__INIT; + *message = init_value; +} +size_t pg_query__alter_extension_contents_stmt__get_packed_size + (const PgQuery__AlterExtensionContentsStmt *message) +{ + assert(message->base.descriptor == &pg_query__alter_extension_contents_stmt__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t pg_query__alter_extension_contents_stmt__pack + (const PgQuery__AlterExtensionContentsStmt *message, + uint8_t *out) +{ + assert(message->base.descriptor == &pg_query__alter_extension_contents_stmt__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t pg_query__alter_extension_contents_stmt__pack_to_buffer + (const PgQuery__AlterExtensionContentsStmt *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &pg_query__alter_extension_contents_stmt__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +PgQuery__AlterExtensionContentsStmt * + pg_query__alter_extension_contents_stmt__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (PgQuery__AlterExtensionContentsStmt *) + protobuf_c_message_unpack (&pg_query__alter_extension_contents_stmt__descriptor, + allocator, len, data); +} +void pg_query__alter_extension_contents_stmt__free_unpacked + (PgQuery__AlterExtensionContentsStmt *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &pg_query__alter_extension_contents_stmt__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void pg_query__create_event_trig_stmt__init + (PgQuery__CreateEventTrigStmt *message) +{ + static const PgQuery__CreateEventTrigStmt init_value = PG_QUERY__CREATE_EVENT_TRIG_STMT__INIT; + *message = init_value; +} +size_t pg_query__create_event_trig_stmt__get_packed_size + (const PgQuery__CreateEventTrigStmt *message) +{ + assert(message->base.descriptor == &pg_query__create_event_trig_stmt__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t pg_query__create_event_trig_stmt__pack + (const PgQuery__CreateEventTrigStmt *message, + uint8_t *out) +{ + assert(message->base.descriptor == &pg_query__create_event_trig_stmt__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t pg_query__create_event_trig_stmt__pack_to_buffer + (const PgQuery__CreateEventTrigStmt *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &pg_query__create_event_trig_stmt__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +PgQuery__CreateEventTrigStmt * + pg_query__create_event_trig_stmt__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (PgQuery__CreateEventTrigStmt *) + protobuf_c_message_unpack (&pg_query__create_event_trig_stmt__descriptor, + allocator, len, data); +} +void pg_query__create_event_trig_stmt__free_unpacked + (PgQuery__CreateEventTrigStmt *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &pg_query__create_event_trig_stmt__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void pg_query__alter_event_trig_stmt__init + (PgQuery__AlterEventTrigStmt *message) +{ + static const PgQuery__AlterEventTrigStmt init_value = PG_QUERY__ALTER_EVENT_TRIG_STMT__INIT; + *message = init_value; +} +size_t pg_query__alter_event_trig_stmt__get_packed_size + (const PgQuery__AlterEventTrigStmt *message) +{ + assert(message->base.descriptor == &pg_query__alter_event_trig_stmt__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t pg_query__alter_event_trig_stmt__pack + (const PgQuery__AlterEventTrigStmt *message, + uint8_t *out) +{ + assert(message->base.descriptor == &pg_query__alter_event_trig_stmt__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t pg_query__alter_event_trig_stmt__pack_to_buffer + (const PgQuery__AlterEventTrigStmt *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &pg_query__alter_event_trig_stmt__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +PgQuery__AlterEventTrigStmt * + pg_query__alter_event_trig_stmt__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (PgQuery__AlterEventTrigStmt *) + protobuf_c_message_unpack (&pg_query__alter_event_trig_stmt__descriptor, + allocator, len, data); +} +void pg_query__alter_event_trig_stmt__free_unpacked + (PgQuery__AlterEventTrigStmt *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &pg_query__alter_event_trig_stmt__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void pg_query__refresh_mat_view_stmt__init + (PgQuery__RefreshMatViewStmt *message) +{ + static const PgQuery__RefreshMatViewStmt init_value = PG_QUERY__REFRESH_MAT_VIEW_STMT__INIT; + *message = init_value; +} +size_t pg_query__refresh_mat_view_stmt__get_packed_size + (const PgQuery__RefreshMatViewStmt *message) +{ + assert(message->base.descriptor == &pg_query__refresh_mat_view_stmt__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t pg_query__refresh_mat_view_stmt__pack + (const PgQuery__RefreshMatViewStmt *message, + uint8_t *out) +{ + assert(message->base.descriptor == &pg_query__refresh_mat_view_stmt__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t pg_query__refresh_mat_view_stmt__pack_to_buffer + (const PgQuery__RefreshMatViewStmt *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &pg_query__refresh_mat_view_stmt__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +PgQuery__RefreshMatViewStmt * + pg_query__refresh_mat_view_stmt__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (PgQuery__RefreshMatViewStmt *) + protobuf_c_message_unpack (&pg_query__refresh_mat_view_stmt__descriptor, + allocator, len, data); +} +void pg_query__refresh_mat_view_stmt__free_unpacked + (PgQuery__RefreshMatViewStmt *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &pg_query__refresh_mat_view_stmt__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void pg_query__replica_identity_stmt__init + (PgQuery__ReplicaIdentityStmt *message) +{ + static const PgQuery__ReplicaIdentityStmt init_value = PG_QUERY__REPLICA_IDENTITY_STMT__INIT; + *message = init_value; +} +size_t pg_query__replica_identity_stmt__get_packed_size + (const PgQuery__ReplicaIdentityStmt *message) +{ + assert(message->base.descriptor == &pg_query__replica_identity_stmt__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t pg_query__replica_identity_stmt__pack + (const PgQuery__ReplicaIdentityStmt *message, + uint8_t *out) +{ + assert(message->base.descriptor == &pg_query__replica_identity_stmt__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t pg_query__replica_identity_stmt__pack_to_buffer + (const PgQuery__ReplicaIdentityStmt *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &pg_query__replica_identity_stmt__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +PgQuery__ReplicaIdentityStmt * + pg_query__replica_identity_stmt__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (PgQuery__ReplicaIdentityStmt *) + protobuf_c_message_unpack (&pg_query__replica_identity_stmt__descriptor, + allocator, len, data); +} +void pg_query__replica_identity_stmt__free_unpacked + (PgQuery__ReplicaIdentityStmt *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &pg_query__replica_identity_stmt__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void pg_query__alter_system_stmt__init + (PgQuery__AlterSystemStmt *message) +{ + static const PgQuery__AlterSystemStmt init_value = PG_QUERY__ALTER_SYSTEM_STMT__INIT; + *message = init_value; +} +size_t pg_query__alter_system_stmt__get_packed_size + (const PgQuery__AlterSystemStmt *message) +{ + assert(message->base.descriptor == &pg_query__alter_system_stmt__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t pg_query__alter_system_stmt__pack + (const PgQuery__AlterSystemStmt *message, + uint8_t *out) +{ + assert(message->base.descriptor == &pg_query__alter_system_stmt__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t pg_query__alter_system_stmt__pack_to_buffer + (const PgQuery__AlterSystemStmt *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &pg_query__alter_system_stmt__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +PgQuery__AlterSystemStmt * + pg_query__alter_system_stmt__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (PgQuery__AlterSystemStmt *) + protobuf_c_message_unpack (&pg_query__alter_system_stmt__descriptor, + allocator, len, data); +} +void pg_query__alter_system_stmt__free_unpacked + (PgQuery__AlterSystemStmt *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &pg_query__alter_system_stmt__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void pg_query__create_policy_stmt__init + (PgQuery__CreatePolicyStmt *message) +{ + static const PgQuery__CreatePolicyStmt init_value = PG_QUERY__CREATE_POLICY_STMT__INIT; + *message = init_value; +} +size_t pg_query__create_policy_stmt__get_packed_size + (const PgQuery__CreatePolicyStmt *message) +{ + assert(message->base.descriptor == &pg_query__create_policy_stmt__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t pg_query__create_policy_stmt__pack + (const PgQuery__CreatePolicyStmt *message, + uint8_t *out) +{ + assert(message->base.descriptor == &pg_query__create_policy_stmt__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t pg_query__create_policy_stmt__pack_to_buffer + (const PgQuery__CreatePolicyStmt *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &pg_query__create_policy_stmt__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +PgQuery__CreatePolicyStmt * + pg_query__create_policy_stmt__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (PgQuery__CreatePolicyStmt *) + protobuf_c_message_unpack (&pg_query__create_policy_stmt__descriptor, + allocator, len, data); +} +void pg_query__create_policy_stmt__free_unpacked + (PgQuery__CreatePolicyStmt *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &pg_query__create_policy_stmt__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void pg_query__alter_policy_stmt__init + (PgQuery__AlterPolicyStmt *message) +{ + static const PgQuery__AlterPolicyStmt init_value = PG_QUERY__ALTER_POLICY_STMT__INIT; + *message = init_value; +} +size_t pg_query__alter_policy_stmt__get_packed_size + (const PgQuery__AlterPolicyStmt *message) +{ + assert(message->base.descriptor == &pg_query__alter_policy_stmt__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t pg_query__alter_policy_stmt__pack + (const PgQuery__AlterPolicyStmt *message, + uint8_t *out) +{ + assert(message->base.descriptor == &pg_query__alter_policy_stmt__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t pg_query__alter_policy_stmt__pack_to_buffer + (const PgQuery__AlterPolicyStmt *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &pg_query__alter_policy_stmt__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +PgQuery__AlterPolicyStmt * + pg_query__alter_policy_stmt__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (PgQuery__AlterPolicyStmt *) + protobuf_c_message_unpack (&pg_query__alter_policy_stmt__descriptor, + allocator, len, data); +} +void pg_query__alter_policy_stmt__free_unpacked + (PgQuery__AlterPolicyStmt *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &pg_query__alter_policy_stmt__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void pg_query__create_transform_stmt__init + (PgQuery__CreateTransformStmt *message) +{ + static const PgQuery__CreateTransformStmt init_value = PG_QUERY__CREATE_TRANSFORM_STMT__INIT; + *message = init_value; +} +size_t pg_query__create_transform_stmt__get_packed_size + (const PgQuery__CreateTransformStmt *message) +{ + assert(message->base.descriptor == &pg_query__create_transform_stmt__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t pg_query__create_transform_stmt__pack + (const PgQuery__CreateTransformStmt *message, + uint8_t *out) +{ + assert(message->base.descriptor == &pg_query__create_transform_stmt__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t pg_query__create_transform_stmt__pack_to_buffer + (const PgQuery__CreateTransformStmt *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &pg_query__create_transform_stmt__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +PgQuery__CreateTransformStmt * + pg_query__create_transform_stmt__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (PgQuery__CreateTransformStmt *) + protobuf_c_message_unpack (&pg_query__create_transform_stmt__descriptor, + allocator, len, data); +} +void pg_query__create_transform_stmt__free_unpacked + (PgQuery__CreateTransformStmt *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &pg_query__create_transform_stmt__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void pg_query__create_am_stmt__init + (PgQuery__CreateAmStmt *message) +{ + static const PgQuery__CreateAmStmt init_value = PG_QUERY__CREATE_AM_STMT__INIT; + *message = init_value; +} +size_t pg_query__create_am_stmt__get_packed_size + (const PgQuery__CreateAmStmt *message) +{ + assert(message->base.descriptor == &pg_query__create_am_stmt__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t pg_query__create_am_stmt__pack + (const PgQuery__CreateAmStmt *message, + uint8_t *out) +{ + assert(message->base.descriptor == &pg_query__create_am_stmt__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t pg_query__create_am_stmt__pack_to_buffer + (const PgQuery__CreateAmStmt *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &pg_query__create_am_stmt__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +PgQuery__CreateAmStmt * + pg_query__create_am_stmt__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (PgQuery__CreateAmStmt *) + protobuf_c_message_unpack (&pg_query__create_am_stmt__descriptor, + allocator, len, data); +} +void pg_query__create_am_stmt__free_unpacked + (PgQuery__CreateAmStmt *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &pg_query__create_am_stmt__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void pg_query__create_publication_stmt__init + (PgQuery__CreatePublicationStmt *message) +{ + static const PgQuery__CreatePublicationStmt init_value = PG_QUERY__CREATE_PUBLICATION_STMT__INIT; + *message = init_value; +} +size_t pg_query__create_publication_stmt__get_packed_size + (const PgQuery__CreatePublicationStmt *message) +{ + assert(message->base.descriptor == &pg_query__create_publication_stmt__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t pg_query__create_publication_stmt__pack + (const PgQuery__CreatePublicationStmt *message, + uint8_t *out) +{ + assert(message->base.descriptor == &pg_query__create_publication_stmt__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t pg_query__create_publication_stmt__pack_to_buffer + (const PgQuery__CreatePublicationStmt *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &pg_query__create_publication_stmt__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +PgQuery__CreatePublicationStmt * + pg_query__create_publication_stmt__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (PgQuery__CreatePublicationStmt *) + protobuf_c_message_unpack (&pg_query__create_publication_stmt__descriptor, + allocator, len, data); +} +void pg_query__create_publication_stmt__free_unpacked + (PgQuery__CreatePublicationStmt *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &pg_query__create_publication_stmt__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void pg_query__alter_publication_stmt__init + (PgQuery__AlterPublicationStmt *message) +{ + static const PgQuery__AlterPublicationStmt init_value = PG_QUERY__ALTER_PUBLICATION_STMT__INIT; + *message = init_value; +} +size_t pg_query__alter_publication_stmt__get_packed_size + (const PgQuery__AlterPublicationStmt *message) +{ + assert(message->base.descriptor == &pg_query__alter_publication_stmt__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t pg_query__alter_publication_stmt__pack + (const PgQuery__AlterPublicationStmt *message, + uint8_t *out) +{ + assert(message->base.descriptor == &pg_query__alter_publication_stmt__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t pg_query__alter_publication_stmt__pack_to_buffer + (const PgQuery__AlterPublicationStmt *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &pg_query__alter_publication_stmt__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +PgQuery__AlterPublicationStmt * + pg_query__alter_publication_stmt__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (PgQuery__AlterPublicationStmt *) + protobuf_c_message_unpack (&pg_query__alter_publication_stmt__descriptor, + allocator, len, data); +} +void pg_query__alter_publication_stmt__free_unpacked + (PgQuery__AlterPublicationStmt *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &pg_query__alter_publication_stmt__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void pg_query__create_subscription_stmt__init + (PgQuery__CreateSubscriptionStmt *message) +{ + static const PgQuery__CreateSubscriptionStmt init_value = PG_QUERY__CREATE_SUBSCRIPTION_STMT__INIT; + *message = init_value; +} +size_t pg_query__create_subscription_stmt__get_packed_size + (const PgQuery__CreateSubscriptionStmt *message) +{ + assert(message->base.descriptor == &pg_query__create_subscription_stmt__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t pg_query__create_subscription_stmt__pack + (const PgQuery__CreateSubscriptionStmt *message, + uint8_t *out) +{ + assert(message->base.descriptor == &pg_query__create_subscription_stmt__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t pg_query__create_subscription_stmt__pack_to_buffer + (const PgQuery__CreateSubscriptionStmt *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &pg_query__create_subscription_stmt__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +PgQuery__CreateSubscriptionStmt * + pg_query__create_subscription_stmt__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (PgQuery__CreateSubscriptionStmt *) + protobuf_c_message_unpack (&pg_query__create_subscription_stmt__descriptor, + allocator, len, data); +} +void pg_query__create_subscription_stmt__free_unpacked + (PgQuery__CreateSubscriptionStmt *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &pg_query__create_subscription_stmt__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void pg_query__alter_subscription_stmt__init + (PgQuery__AlterSubscriptionStmt *message) +{ + static const PgQuery__AlterSubscriptionStmt init_value = PG_QUERY__ALTER_SUBSCRIPTION_STMT__INIT; + *message = init_value; +} +size_t pg_query__alter_subscription_stmt__get_packed_size + (const PgQuery__AlterSubscriptionStmt *message) +{ + assert(message->base.descriptor == &pg_query__alter_subscription_stmt__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t pg_query__alter_subscription_stmt__pack + (const PgQuery__AlterSubscriptionStmt *message, + uint8_t *out) +{ + assert(message->base.descriptor == &pg_query__alter_subscription_stmt__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t pg_query__alter_subscription_stmt__pack_to_buffer + (const PgQuery__AlterSubscriptionStmt *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &pg_query__alter_subscription_stmt__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +PgQuery__AlterSubscriptionStmt * + pg_query__alter_subscription_stmt__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (PgQuery__AlterSubscriptionStmt *) + protobuf_c_message_unpack (&pg_query__alter_subscription_stmt__descriptor, + allocator, len, data); +} +void pg_query__alter_subscription_stmt__free_unpacked + (PgQuery__AlterSubscriptionStmt *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &pg_query__alter_subscription_stmt__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void pg_query__drop_subscription_stmt__init + (PgQuery__DropSubscriptionStmt *message) +{ + static const PgQuery__DropSubscriptionStmt init_value = PG_QUERY__DROP_SUBSCRIPTION_STMT__INIT; + *message = init_value; +} +size_t pg_query__drop_subscription_stmt__get_packed_size + (const PgQuery__DropSubscriptionStmt *message) +{ + assert(message->base.descriptor == &pg_query__drop_subscription_stmt__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t pg_query__drop_subscription_stmt__pack + (const PgQuery__DropSubscriptionStmt *message, + uint8_t *out) +{ + assert(message->base.descriptor == &pg_query__drop_subscription_stmt__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t pg_query__drop_subscription_stmt__pack_to_buffer + (const PgQuery__DropSubscriptionStmt *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &pg_query__drop_subscription_stmt__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +PgQuery__DropSubscriptionStmt * + pg_query__drop_subscription_stmt__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (PgQuery__DropSubscriptionStmt *) + protobuf_c_message_unpack (&pg_query__drop_subscription_stmt__descriptor, + allocator, len, data); +} +void pg_query__drop_subscription_stmt__free_unpacked + (PgQuery__DropSubscriptionStmt *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &pg_query__drop_subscription_stmt__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void pg_query__create_stats_stmt__init + (PgQuery__CreateStatsStmt *message) +{ + static const PgQuery__CreateStatsStmt init_value = PG_QUERY__CREATE_STATS_STMT__INIT; + *message = init_value; +} +size_t pg_query__create_stats_stmt__get_packed_size + (const PgQuery__CreateStatsStmt *message) +{ + assert(message->base.descriptor == &pg_query__create_stats_stmt__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t pg_query__create_stats_stmt__pack + (const PgQuery__CreateStatsStmt *message, + uint8_t *out) +{ + assert(message->base.descriptor == &pg_query__create_stats_stmt__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t pg_query__create_stats_stmt__pack_to_buffer + (const PgQuery__CreateStatsStmt *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &pg_query__create_stats_stmt__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +PgQuery__CreateStatsStmt * + pg_query__create_stats_stmt__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (PgQuery__CreateStatsStmt *) + protobuf_c_message_unpack (&pg_query__create_stats_stmt__descriptor, + allocator, len, data); +} +void pg_query__create_stats_stmt__free_unpacked + (PgQuery__CreateStatsStmt *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &pg_query__create_stats_stmt__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void pg_query__alter_collation_stmt__init + (PgQuery__AlterCollationStmt *message) +{ + static const PgQuery__AlterCollationStmt init_value = PG_QUERY__ALTER_COLLATION_STMT__INIT; + *message = init_value; +} +size_t pg_query__alter_collation_stmt__get_packed_size + (const PgQuery__AlterCollationStmt *message) +{ + assert(message->base.descriptor == &pg_query__alter_collation_stmt__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t pg_query__alter_collation_stmt__pack + (const PgQuery__AlterCollationStmt *message, + uint8_t *out) +{ + assert(message->base.descriptor == &pg_query__alter_collation_stmt__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t pg_query__alter_collation_stmt__pack_to_buffer + (const PgQuery__AlterCollationStmt *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &pg_query__alter_collation_stmt__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +PgQuery__AlterCollationStmt * + pg_query__alter_collation_stmt__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (PgQuery__AlterCollationStmt *) + protobuf_c_message_unpack (&pg_query__alter_collation_stmt__descriptor, + allocator, len, data); +} +void pg_query__alter_collation_stmt__free_unpacked + (PgQuery__AlterCollationStmt *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &pg_query__alter_collation_stmt__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void pg_query__call_stmt__init + (PgQuery__CallStmt *message) +{ + static const PgQuery__CallStmt init_value = PG_QUERY__CALL_STMT__INIT; + *message = init_value; +} +size_t pg_query__call_stmt__get_packed_size + (const PgQuery__CallStmt *message) +{ + assert(message->base.descriptor == &pg_query__call_stmt__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t pg_query__call_stmt__pack + (const PgQuery__CallStmt *message, + uint8_t *out) +{ + assert(message->base.descriptor == &pg_query__call_stmt__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t pg_query__call_stmt__pack_to_buffer + (const PgQuery__CallStmt *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &pg_query__call_stmt__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +PgQuery__CallStmt * + pg_query__call_stmt__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (PgQuery__CallStmt *) + protobuf_c_message_unpack (&pg_query__call_stmt__descriptor, + allocator, len, data); +} +void pg_query__call_stmt__free_unpacked + (PgQuery__CallStmt *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &pg_query__call_stmt__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void pg_query__alter_stats_stmt__init + (PgQuery__AlterStatsStmt *message) +{ + static const PgQuery__AlterStatsStmt init_value = PG_QUERY__ALTER_STATS_STMT__INIT; + *message = init_value; +} +size_t pg_query__alter_stats_stmt__get_packed_size + (const PgQuery__AlterStatsStmt *message) +{ + assert(message->base.descriptor == &pg_query__alter_stats_stmt__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t pg_query__alter_stats_stmt__pack + (const PgQuery__AlterStatsStmt *message, + uint8_t *out) +{ + assert(message->base.descriptor == &pg_query__alter_stats_stmt__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t pg_query__alter_stats_stmt__pack_to_buffer + (const PgQuery__AlterStatsStmt *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &pg_query__alter_stats_stmt__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +PgQuery__AlterStatsStmt * + pg_query__alter_stats_stmt__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (PgQuery__AlterStatsStmt *) + protobuf_c_message_unpack (&pg_query__alter_stats_stmt__descriptor, + allocator, len, data); +} +void pg_query__alter_stats_stmt__free_unpacked + (PgQuery__AlterStatsStmt *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &pg_query__alter_stats_stmt__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void pg_query__a__expr__init + (PgQuery__AExpr *message) +{ + static const PgQuery__AExpr init_value = PG_QUERY__A__EXPR__INIT; + *message = init_value; +} +size_t pg_query__a__expr__get_packed_size + (const PgQuery__AExpr *message) +{ + assert(message->base.descriptor == &pg_query__a__expr__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t pg_query__a__expr__pack + (const PgQuery__AExpr *message, + uint8_t *out) +{ + assert(message->base.descriptor == &pg_query__a__expr__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t pg_query__a__expr__pack_to_buffer + (const PgQuery__AExpr *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &pg_query__a__expr__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +PgQuery__AExpr * + pg_query__a__expr__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (PgQuery__AExpr *) + protobuf_c_message_unpack (&pg_query__a__expr__descriptor, + allocator, len, data); +} +void pg_query__a__expr__free_unpacked + (PgQuery__AExpr *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &pg_query__a__expr__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void pg_query__column_ref__init + (PgQuery__ColumnRef *message) +{ + static const PgQuery__ColumnRef init_value = PG_QUERY__COLUMN_REF__INIT; + *message = init_value; +} +size_t pg_query__column_ref__get_packed_size + (const PgQuery__ColumnRef *message) +{ + assert(message->base.descriptor == &pg_query__column_ref__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t pg_query__column_ref__pack + (const PgQuery__ColumnRef *message, + uint8_t *out) +{ + assert(message->base.descriptor == &pg_query__column_ref__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t pg_query__column_ref__pack_to_buffer + (const PgQuery__ColumnRef *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &pg_query__column_ref__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +PgQuery__ColumnRef * + pg_query__column_ref__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (PgQuery__ColumnRef *) + protobuf_c_message_unpack (&pg_query__column_ref__descriptor, + allocator, len, data); +} +void pg_query__column_ref__free_unpacked + (PgQuery__ColumnRef *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &pg_query__column_ref__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void pg_query__param_ref__init + (PgQuery__ParamRef *message) +{ + static const PgQuery__ParamRef init_value = PG_QUERY__PARAM_REF__INIT; + *message = init_value; +} +size_t pg_query__param_ref__get_packed_size + (const PgQuery__ParamRef *message) +{ + assert(message->base.descriptor == &pg_query__param_ref__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t pg_query__param_ref__pack + (const PgQuery__ParamRef *message, + uint8_t *out) +{ + assert(message->base.descriptor == &pg_query__param_ref__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t pg_query__param_ref__pack_to_buffer + (const PgQuery__ParamRef *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &pg_query__param_ref__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +PgQuery__ParamRef * + pg_query__param_ref__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (PgQuery__ParamRef *) + protobuf_c_message_unpack (&pg_query__param_ref__descriptor, + allocator, len, data); +} +void pg_query__param_ref__free_unpacked + (PgQuery__ParamRef *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &pg_query__param_ref__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void pg_query__a__const__init + (PgQuery__AConst *message) +{ + static const PgQuery__AConst init_value = PG_QUERY__A__CONST__INIT; + *message = init_value; +} +size_t pg_query__a__const__get_packed_size + (const PgQuery__AConst *message) +{ + assert(message->base.descriptor == &pg_query__a__const__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t pg_query__a__const__pack + (const PgQuery__AConst *message, + uint8_t *out) +{ + assert(message->base.descriptor == &pg_query__a__const__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t pg_query__a__const__pack_to_buffer + (const PgQuery__AConst *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &pg_query__a__const__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +PgQuery__AConst * + pg_query__a__const__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (PgQuery__AConst *) + protobuf_c_message_unpack (&pg_query__a__const__descriptor, + allocator, len, data); +} +void pg_query__a__const__free_unpacked + (PgQuery__AConst *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &pg_query__a__const__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void pg_query__func_call__init + (PgQuery__FuncCall *message) +{ + static const PgQuery__FuncCall init_value = PG_QUERY__FUNC_CALL__INIT; + *message = init_value; +} +size_t pg_query__func_call__get_packed_size + (const PgQuery__FuncCall *message) +{ + assert(message->base.descriptor == &pg_query__func_call__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t pg_query__func_call__pack + (const PgQuery__FuncCall *message, + uint8_t *out) +{ + assert(message->base.descriptor == &pg_query__func_call__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t pg_query__func_call__pack_to_buffer + (const PgQuery__FuncCall *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &pg_query__func_call__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +PgQuery__FuncCall * + pg_query__func_call__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (PgQuery__FuncCall *) + protobuf_c_message_unpack (&pg_query__func_call__descriptor, + allocator, len, data); +} +void pg_query__func_call__free_unpacked + (PgQuery__FuncCall *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &pg_query__func_call__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void pg_query__a__star__init + (PgQuery__AStar *message) +{ + static const PgQuery__AStar init_value = PG_QUERY__A__STAR__INIT; + *message = init_value; +} +size_t pg_query__a__star__get_packed_size + (const PgQuery__AStar *message) +{ + assert(message->base.descriptor == &pg_query__a__star__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t pg_query__a__star__pack + (const PgQuery__AStar *message, + uint8_t *out) +{ + assert(message->base.descriptor == &pg_query__a__star__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t pg_query__a__star__pack_to_buffer + (const PgQuery__AStar *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &pg_query__a__star__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +PgQuery__AStar * + pg_query__a__star__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (PgQuery__AStar *) + protobuf_c_message_unpack (&pg_query__a__star__descriptor, + allocator, len, data); +} +void pg_query__a__star__free_unpacked + (PgQuery__AStar *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &pg_query__a__star__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void pg_query__a__indices__init + (PgQuery__AIndices *message) +{ + static const PgQuery__AIndices init_value = PG_QUERY__A__INDICES__INIT; + *message = init_value; +} +size_t pg_query__a__indices__get_packed_size + (const PgQuery__AIndices *message) +{ + assert(message->base.descriptor == &pg_query__a__indices__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t pg_query__a__indices__pack + (const PgQuery__AIndices *message, + uint8_t *out) +{ + assert(message->base.descriptor == &pg_query__a__indices__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t pg_query__a__indices__pack_to_buffer + (const PgQuery__AIndices *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &pg_query__a__indices__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +PgQuery__AIndices * + pg_query__a__indices__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (PgQuery__AIndices *) + protobuf_c_message_unpack (&pg_query__a__indices__descriptor, + allocator, len, data); +} +void pg_query__a__indices__free_unpacked + (PgQuery__AIndices *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &pg_query__a__indices__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void pg_query__a__indirection__init + (PgQuery__AIndirection *message) +{ + static const PgQuery__AIndirection init_value = PG_QUERY__A__INDIRECTION__INIT; + *message = init_value; +} +size_t pg_query__a__indirection__get_packed_size + (const PgQuery__AIndirection *message) +{ + assert(message->base.descriptor == &pg_query__a__indirection__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t pg_query__a__indirection__pack + (const PgQuery__AIndirection *message, + uint8_t *out) +{ + assert(message->base.descriptor == &pg_query__a__indirection__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t pg_query__a__indirection__pack_to_buffer + (const PgQuery__AIndirection *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &pg_query__a__indirection__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +PgQuery__AIndirection * + pg_query__a__indirection__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (PgQuery__AIndirection *) + protobuf_c_message_unpack (&pg_query__a__indirection__descriptor, + allocator, len, data); +} +void pg_query__a__indirection__free_unpacked + (PgQuery__AIndirection *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &pg_query__a__indirection__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void pg_query__a__array_expr__init + (PgQuery__AArrayExpr *message) +{ + static const PgQuery__AArrayExpr init_value = PG_QUERY__A__ARRAY_EXPR__INIT; + *message = init_value; +} +size_t pg_query__a__array_expr__get_packed_size + (const PgQuery__AArrayExpr *message) +{ + assert(message->base.descriptor == &pg_query__a__array_expr__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t pg_query__a__array_expr__pack + (const PgQuery__AArrayExpr *message, + uint8_t *out) +{ + assert(message->base.descriptor == &pg_query__a__array_expr__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t pg_query__a__array_expr__pack_to_buffer + (const PgQuery__AArrayExpr *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &pg_query__a__array_expr__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +PgQuery__AArrayExpr * + pg_query__a__array_expr__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (PgQuery__AArrayExpr *) + protobuf_c_message_unpack (&pg_query__a__array_expr__descriptor, + allocator, len, data); +} +void pg_query__a__array_expr__free_unpacked + (PgQuery__AArrayExpr *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &pg_query__a__array_expr__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void pg_query__res_target__init + (PgQuery__ResTarget *message) +{ + static const PgQuery__ResTarget init_value = PG_QUERY__RES_TARGET__INIT; + *message = init_value; +} +size_t pg_query__res_target__get_packed_size + (const PgQuery__ResTarget *message) +{ + assert(message->base.descriptor == &pg_query__res_target__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t pg_query__res_target__pack + (const PgQuery__ResTarget *message, + uint8_t *out) +{ + assert(message->base.descriptor == &pg_query__res_target__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t pg_query__res_target__pack_to_buffer + (const PgQuery__ResTarget *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &pg_query__res_target__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +PgQuery__ResTarget * + pg_query__res_target__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (PgQuery__ResTarget *) + protobuf_c_message_unpack (&pg_query__res_target__descriptor, + allocator, len, data); +} +void pg_query__res_target__free_unpacked + (PgQuery__ResTarget *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &pg_query__res_target__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void pg_query__multi_assign_ref__init + (PgQuery__MultiAssignRef *message) +{ + static const PgQuery__MultiAssignRef init_value = PG_QUERY__MULTI_ASSIGN_REF__INIT; + *message = init_value; +} +size_t pg_query__multi_assign_ref__get_packed_size + (const PgQuery__MultiAssignRef *message) +{ + assert(message->base.descriptor == &pg_query__multi_assign_ref__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t pg_query__multi_assign_ref__pack + (const PgQuery__MultiAssignRef *message, + uint8_t *out) +{ + assert(message->base.descriptor == &pg_query__multi_assign_ref__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t pg_query__multi_assign_ref__pack_to_buffer + (const PgQuery__MultiAssignRef *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &pg_query__multi_assign_ref__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +PgQuery__MultiAssignRef * + pg_query__multi_assign_ref__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (PgQuery__MultiAssignRef *) + protobuf_c_message_unpack (&pg_query__multi_assign_ref__descriptor, + allocator, len, data); +} +void pg_query__multi_assign_ref__free_unpacked + (PgQuery__MultiAssignRef *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &pg_query__multi_assign_ref__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void pg_query__type_cast__init + (PgQuery__TypeCast *message) +{ + static const PgQuery__TypeCast init_value = PG_QUERY__TYPE_CAST__INIT; + *message = init_value; +} +size_t pg_query__type_cast__get_packed_size + (const PgQuery__TypeCast *message) +{ + assert(message->base.descriptor == &pg_query__type_cast__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t pg_query__type_cast__pack + (const PgQuery__TypeCast *message, + uint8_t *out) +{ + assert(message->base.descriptor == &pg_query__type_cast__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t pg_query__type_cast__pack_to_buffer + (const PgQuery__TypeCast *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &pg_query__type_cast__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +PgQuery__TypeCast * + pg_query__type_cast__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (PgQuery__TypeCast *) + protobuf_c_message_unpack (&pg_query__type_cast__descriptor, + allocator, len, data); +} +void pg_query__type_cast__free_unpacked + (PgQuery__TypeCast *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &pg_query__type_cast__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void pg_query__collate_clause__init + (PgQuery__CollateClause *message) +{ + static const PgQuery__CollateClause init_value = PG_QUERY__COLLATE_CLAUSE__INIT; + *message = init_value; +} +size_t pg_query__collate_clause__get_packed_size + (const PgQuery__CollateClause *message) +{ + assert(message->base.descriptor == &pg_query__collate_clause__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t pg_query__collate_clause__pack + (const PgQuery__CollateClause *message, + uint8_t *out) +{ + assert(message->base.descriptor == &pg_query__collate_clause__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t pg_query__collate_clause__pack_to_buffer + (const PgQuery__CollateClause *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &pg_query__collate_clause__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +PgQuery__CollateClause * + pg_query__collate_clause__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (PgQuery__CollateClause *) + protobuf_c_message_unpack (&pg_query__collate_clause__descriptor, + allocator, len, data); +} +void pg_query__collate_clause__free_unpacked + (PgQuery__CollateClause *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &pg_query__collate_clause__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void pg_query__sort_by__init + (PgQuery__SortBy *message) +{ + static const PgQuery__SortBy init_value = PG_QUERY__SORT_BY__INIT; + *message = init_value; +} +size_t pg_query__sort_by__get_packed_size + (const PgQuery__SortBy *message) +{ + assert(message->base.descriptor == &pg_query__sort_by__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t pg_query__sort_by__pack + (const PgQuery__SortBy *message, + uint8_t *out) +{ + assert(message->base.descriptor == &pg_query__sort_by__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t pg_query__sort_by__pack_to_buffer + (const PgQuery__SortBy *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &pg_query__sort_by__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +PgQuery__SortBy * + pg_query__sort_by__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (PgQuery__SortBy *) + protobuf_c_message_unpack (&pg_query__sort_by__descriptor, + allocator, len, data); +} +void pg_query__sort_by__free_unpacked + (PgQuery__SortBy *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &pg_query__sort_by__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void pg_query__window_def__init + (PgQuery__WindowDef *message) +{ + static const PgQuery__WindowDef init_value = PG_QUERY__WINDOW_DEF__INIT; + *message = init_value; +} +size_t pg_query__window_def__get_packed_size + (const PgQuery__WindowDef *message) +{ + assert(message->base.descriptor == &pg_query__window_def__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t pg_query__window_def__pack + (const PgQuery__WindowDef *message, + uint8_t *out) +{ + assert(message->base.descriptor == &pg_query__window_def__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t pg_query__window_def__pack_to_buffer + (const PgQuery__WindowDef *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &pg_query__window_def__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +PgQuery__WindowDef * + pg_query__window_def__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (PgQuery__WindowDef *) + protobuf_c_message_unpack (&pg_query__window_def__descriptor, + allocator, len, data); +} +void pg_query__window_def__free_unpacked + (PgQuery__WindowDef *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &pg_query__window_def__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void pg_query__range_subselect__init + (PgQuery__RangeSubselect *message) +{ + static const PgQuery__RangeSubselect init_value = PG_QUERY__RANGE_SUBSELECT__INIT; + *message = init_value; +} +size_t pg_query__range_subselect__get_packed_size + (const PgQuery__RangeSubselect *message) +{ + assert(message->base.descriptor == &pg_query__range_subselect__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t pg_query__range_subselect__pack + (const PgQuery__RangeSubselect *message, + uint8_t *out) +{ + assert(message->base.descriptor == &pg_query__range_subselect__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t pg_query__range_subselect__pack_to_buffer + (const PgQuery__RangeSubselect *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &pg_query__range_subselect__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +PgQuery__RangeSubselect * + pg_query__range_subselect__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (PgQuery__RangeSubselect *) + protobuf_c_message_unpack (&pg_query__range_subselect__descriptor, + allocator, len, data); +} +void pg_query__range_subselect__free_unpacked + (PgQuery__RangeSubselect *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &pg_query__range_subselect__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void pg_query__range_function__init + (PgQuery__RangeFunction *message) +{ + static const PgQuery__RangeFunction init_value = PG_QUERY__RANGE_FUNCTION__INIT; + *message = init_value; +} +size_t pg_query__range_function__get_packed_size + (const PgQuery__RangeFunction *message) +{ + assert(message->base.descriptor == &pg_query__range_function__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t pg_query__range_function__pack + (const PgQuery__RangeFunction *message, + uint8_t *out) +{ + assert(message->base.descriptor == &pg_query__range_function__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t pg_query__range_function__pack_to_buffer + (const PgQuery__RangeFunction *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &pg_query__range_function__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +PgQuery__RangeFunction * + pg_query__range_function__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (PgQuery__RangeFunction *) + protobuf_c_message_unpack (&pg_query__range_function__descriptor, + allocator, len, data); +} +void pg_query__range_function__free_unpacked + (PgQuery__RangeFunction *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &pg_query__range_function__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void pg_query__range_table_sample__init + (PgQuery__RangeTableSample *message) +{ + static const PgQuery__RangeTableSample init_value = PG_QUERY__RANGE_TABLE_SAMPLE__INIT; + *message = init_value; +} +size_t pg_query__range_table_sample__get_packed_size + (const PgQuery__RangeTableSample *message) +{ + assert(message->base.descriptor == &pg_query__range_table_sample__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t pg_query__range_table_sample__pack + (const PgQuery__RangeTableSample *message, + uint8_t *out) +{ + assert(message->base.descriptor == &pg_query__range_table_sample__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t pg_query__range_table_sample__pack_to_buffer + (const PgQuery__RangeTableSample *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &pg_query__range_table_sample__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +PgQuery__RangeTableSample * + pg_query__range_table_sample__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (PgQuery__RangeTableSample *) + protobuf_c_message_unpack (&pg_query__range_table_sample__descriptor, + allocator, len, data); +} +void pg_query__range_table_sample__free_unpacked + (PgQuery__RangeTableSample *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &pg_query__range_table_sample__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void pg_query__range_table_func__init + (PgQuery__RangeTableFunc *message) +{ + static const PgQuery__RangeTableFunc init_value = PG_QUERY__RANGE_TABLE_FUNC__INIT; + *message = init_value; +} +size_t pg_query__range_table_func__get_packed_size + (const PgQuery__RangeTableFunc *message) +{ + assert(message->base.descriptor == &pg_query__range_table_func__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t pg_query__range_table_func__pack + (const PgQuery__RangeTableFunc *message, + uint8_t *out) +{ + assert(message->base.descriptor == &pg_query__range_table_func__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t pg_query__range_table_func__pack_to_buffer + (const PgQuery__RangeTableFunc *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &pg_query__range_table_func__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +PgQuery__RangeTableFunc * + pg_query__range_table_func__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (PgQuery__RangeTableFunc *) + protobuf_c_message_unpack (&pg_query__range_table_func__descriptor, + allocator, len, data); +} +void pg_query__range_table_func__free_unpacked + (PgQuery__RangeTableFunc *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &pg_query__range_table_func__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void pg_query__range_table_func_col__init + (PgQuery__RangeTableFuncCol *message) +{ + static const PgQuery__RangeTableFuncCol init_value = PG_QUERY__RANGE_TABLE_FUNC_COL__INIT; + *message = init_value; +} +size_t pg_query__range_table_func_col__get_packed_size + (const PgQuery__RangeTableFuncCol *message) +{ + assert(message->base.descriptor == &pg_query__range_table_func_col__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t pg_query__range_table_func_col__pack + (const PgQuery__RangeTableFuncCol *message, + uint8_t *out) +{ + assert(message->base.descriptor == &pg_query__range_table_func_col__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t pg_query__range_table_func_col__pack_to_buffer + (const PgQuery__RangeTableFuncCol *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &pg_query__range_table_func_col__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +PgQuery__RangeTableFuncCol * + pg_query__range_table_func_col__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (PgQuery__RangeTableFuncCol *) + protobuf_c_message_unpack (&pg_query__range_table_func_col__descriptor, + allocator, len, data); +} +void pg_query__range_table_func_col__free_unpacked + (PgQuery__RangeTableFuncCol *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &pg_query__range_table_func_col__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void pg_query__type_name__init + (PgQuery__TypeName *message) +{ + static const PgQuery__TypeName init_value = PG_QUERY__TYPE_NAME__INIT; + *message = init_value; +} +size_t pg_query__type_name__get_packed_size + (const PgQuery__TypeName *message) +{ + assert(message->base.descriptor == &pg_query__type_name__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t pg_query__type_name__pack + (const PgQuery__TypeName *message, + uint8_t *out) +{ + assert(message->base.descriptor == &pg_query__type_name__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t pg_query__type_name__pack_to_buffer + (const PgQuery__TypeName *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &pg_query__type_name__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +PgQuery__TypeName * + pg_query__type_name__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (PgQuery__TypeName *) + protobuf_c_message_unpack (&pg_query__type_name__descriptor, + allocator, len, data); +} +void pg_query__type_name__free_unpacked + (PgQuery__TypeName *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &pg_query__type_name__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void pg_query__column_def__init + (PgQuery__ColumnDef *message) +{ + static const PgQuery__ColumnDef init_value = PG_QUERY__COLUMN_DEF__INIT; + *message = init_value; +} +size_t pg_query__column_def__get_packed_size + (const PgQuery__ColumnDef *message) +{ + assert(message->base.descriptor == &pg_query__column_def__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t pg_query__column_def__pack + (const PgQuery__ColumnDef *message, + uint8_t *out) +{ + assert(message->base.descriptor == &pg_query__column_def__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t pg_query__column_def__pack_to_buffer + (const PgQuery__ColumnDef *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &pg_query__column_def__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +PgQuery__ColumnDef * + pg_query__column_def__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (PgQuery__ColumnDef *) + protobuf_c_message_unpack (&pg_query__column_def__descriptor, + allocator, len, data); +} +void pg_query__column_def__free_unpacked + (PgQuery__ColumnDef *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &pg_query__column_def__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void pg_query__index_elem__init + (PgQuery__IndexElem *message) +{ + static const PgQuery__IndexElem init_value = PG_QUERY__INDEX_ELEM__INIT; + *message = init_value; +} +size_t pg_query__index_elem__get_packed_size + (const PgQuery__IndexElem *message) +{ + assert(message->base.descriptor == &pg_query__index_elem__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t pg_query__index_elem__pack + (const PgQuery__IndexElem *message, + uint8_t *out) +{ + assert(message->base.descriptor == &pg_query__index_elem__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t pg_query__index_elem__pack_to_buffer + (const PgQuery__IndexElem *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &pg_query__index_elem__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +PgQuery__IndexElem * + pg_query__index_elem__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (PgQuery__IndexElem *) + protobuf_c_message_unpack (&pg_query__index_elem__descriptor, + allocator, len, data); +} +void pg_query__index_elem__free_unpacked + (PgQuery__IndexElem *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &pg_query__index_elem__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void pg_query__constraint__init + (PgQuery__Constraint *message) +{ + static const PgQuery__Constraint init_value = PG_QUERY__CONSTRAINT__INIT; + *message = init_value; +} +size_t pg_query__constraint__get_packed_size + (const PgQuery__Constraint *message) +{ + assert(message->base.descriptor == &pg_query__constraint__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t pg_query__constraint__pack + (const PgQuery__Constraint *message, + uint8_t *out) +{ + assert(message->base.descriptor == &pg_query__constraint__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t pg_query__constraint__pack_to_buffer + (const PgQuery__Constraint *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &pg_query__constraint__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +PgQuery__Constraint * + pg_query__constraint__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (PgQuery__Constraint *) + protobuf_c_message_unpack (&pg_query__constraint__descriptor, + allocator, len, data); +} +void pg_query__constraint__free_unpacked + (PgQuery__Constraint *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &pg_query__constraint__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void pg_query__def_elem__init + (PgQuery__DefElem *message) +{ + static const PgQuery__DefElem init_value = PG_QUERY__DEF_ELEM__INIT; + *message = init_value; +} +size_t pg_query__def_elem__get_packed_size + (const PgQuery__DefElem *message) +{ + assert(message->base.descriptor == &pg_query__def_elem__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t pg_query__def_elem__pack + (const PgQuery__DefElem *message, + uint8_t *out) +{ + assert(message->base.descriptor == &pg_query__def_elem__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t pg_query__def_elem__pack_to_buffer + (const PgQuery__DefElem *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &pg_query__def_elem__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +PgQuery__DefElem * + pg_query__def_elem__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (PgQuery__DefElem *) + protobuf_c_message_unpack (&pg_query__def_elem__descriptor, + allocator, len, data); +} +void pg_query__def_elem__free_unpacked + (PgQuery__DefElem *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &pg_query__def_elem__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void pg_query__range_tbl_entry__init + (PgQuery__RangeTblEntry *message) +{ + static const PgQuery__RangeTblEntry init_value = PG_QUERY__RANGE_TBL_ENTRY__INIT; + *message = init_value; +} +size_t pg_query__range_tbl_entry__get_packed_size + (const PgQuery__RangeTblEntry *message) +{ + assert(message->base.descriptor == &pg_query__range_tbl_entry__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t pg_query__range_tbl_entry__pack + (const PgQuery__RangeTblEntry *message, + uint8_t *out) +{ + assert(message->base.descriptor == &pg_query__range_tbl_entry__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t pg_query__range_tbl_entry__pack_to_buffer + (const PgQuery__RangeTblEntry *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &pg_query__range_tbl_entry__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +PgQuery__RangeTblEntry * + pg_query__range_tbl_entry__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (PgQuery__RangeTblEntry *) + protobuf_c_message_unpack (&pg_query__range_tbl_entry__descriptor, + allocator, len, data); +} +void pg_query__range_tbl_entry__free_unpacked + (PgQuery__RangeTblEntry *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &pg_query__range_tbl_entry__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void pg_query__range_tbl_function__init + (PgQuery__RangeTblFunction *message) +{ + static const PgQuery__RangeTblFunction init_value = PG_QUERY__RANGE_TBL_FUNCTION__INIT; + *message = init_value; +} +size_t pg_query__range_tbl_function__get_packed_size + (const PgQuery__RangeTblFunction *message) +{ + assert(message->base.descriptor == &pg_query__range_tbl_function__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t pg_query__range_tbl_function__pack + (const PgQuery__RangeTblFunction *message, + uint8_t *out) +{ + assert(message->base.descriptor == &pg_query__range_tbl_function__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t pg_query__range_tbl_function__pack_to_buffer + (const PgQuery__RangeTblFunction *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &pg_query__range_tbl_function__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +PgQuery__RangeTblFunction * + pg_query__range_tbl_function__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (PgQuery__RangeTblFunction *) + protobuf_c_message_unpack (&pg_query__range_tbl_function__descriptor, + allocator, len, data); +} +void pg_query__range_tbl_function__free_unpacked + (PgQuery__RangeTblFunction *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &pg_query__range_tbl_function__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void pg_query__table_sample_clause__init + (PgQuery__TableSampleClause *message) +{ + static const PgQuery__TableSampleClause init_value = PG_QUERY__TABLE_SAMPLE_CLAUSE__INIT; + *message = init_value; +} +size_t pg_query__table_sample_clause__get_packed_size + (const PgQuery__TableSampleClause *message) +{ + assert(message->base.descriptor == &pg_query__table_sample_clause__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t pg_query__table_sample_clause__pack + (const PgQuery__TableSampleClause *message, + uint8_t *out) +{ + assert(message->base.descriptor == &pg_query__table_sample_clause__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t pg_query__table_sample_clause__pack_to_buffer + (const PgQuery__TableSampleClause *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &pg_query__table_sample_clause__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +PgQuery__TableSampleClause * + pg_query__table_sample_clause__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (PgQuery__TableSampleClause *) + protobuf_c_message_unpack (&pg_query__table_sample_clause__descriptor, + allocator, len, data); +} +void pg_query__table_sample_clause__free_unpacked + (PgQuery__TableSampleClause *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &pg_query__table_sample_clause__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void pg_query__with_check_option__init + (PgQuery__WithCheckOption *message) +{ + static const PgQuery__WithCheckOption init_value = PG_QUERY__WITH_CHECK_OPTION__INIT; + *message = init_value; +} +size_t pg_query__with_check_option__get_packed_size + (const PgQuery__WithCheckOption *message) +{ + assert(message->base.descriptor == &pg_query__with_check_option__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t pg_query__with_check_option__pack + (const PgQuery__WithCheckOption *message, + uint8_t *out) +{ + assert(message->base.descriptor == &pg_query__with_check_option__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t pg_query__with_check_option__pack_to_buffer + (const PgQuery__WithCheckOption *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &pg_query__with_check_option__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +PgQuery__WithCheckOption * + pg_query__with_check_option__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (PgQuery__WithCheckOption *) + protobuf_c_message_unpack (&pg_query__with_check_option__descriptor, + allocator, len, data); +} +void pg_query__with_check_option__free_unpacked + (PgQuery__WithCheckOption *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &pg_query__with_check_option__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void pg_query__sort_group_clause__init + (PgQuery__SortGroupClause *message) +{ + static const PgQuery__SortGroupClause init_value = PG_QUERY__SORT_GROUP_CLAUSE__INIT; + *message = init_value; +} +size_t pg_query__sort_group_clause__get_packed_size + (const PgQuery__SortGroupClause *message) +{ + assert(message->base.descriptor == &pg_query__sort_group_clause__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t pg_query__sort_group_clause__pack + (const PgQuery__SortGroupClause *message, + uint8_t *out) +{ + assert(message->base.descriptor == &pg_query__sort_group_clause__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t pg_query__sort_group_clause__pack_to_buffer + (const PgQuery__SortGroupClause *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &pg_query__sort_group_clause__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +PgQuery__SortGroupClause * + pg_query__sort_group_clause__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (PgQuery__SortGroupClause *) + protobuf_c_message_unpack (&pg_query__sort_group_clause__descriptor, + allocator, len, data); +} +void pg_query__sort_group_clause__free_unpacked + (PgQuery__SortGroupClause *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &pg_query__sort_group_clause__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void pg_query__grouping_set__init + (PgQuery__GroupingSet *message) +{ + static const PgQuery__GroupingSet init_value = PG_QUERY__GROUPING_SET__INIT; + *message = init_value; +} +size_t pg_query__grouping_set__get_packed_size + (const PgQuery__GroupingSet *message) +{ + assert(message->base.descriptor == &pg_query__grouping_set__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t pg_query__grouping_set__pack + (const PgQuery__GroupingSet *message, + uint8_t *out) +{ + assert(message->base.descriptor == &pg_query__grouping_set__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t pg_query__grouping_set__pack_to_buffer + (const PgQuery__GroupingSet *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &pg_query__grouping_set__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +PgQuery__GroupingSet * + pg_query__grouping_set__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (PgQuery__GroupingSet *) + protobuf_c_message_unpack (&pg_query__grouping_set__descriptor, + allocator, len, data); +} +void pg_query__grouping_set__free_unpacked + (PgQuery__GroupingSet *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &pg_query__grouping_set__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void pg_query__window_clause__init + (PgQuery__WindowClause *message) +{ + static const PgQuery__WindowClause init_value = PG_QUERY__WINDOW_CLAUSE__INIT; + *message = init_value; +} +size_t pg_query__window_clause__get_packed_size + (const PgQuery__WindowClause *message) +{ + assert(message->base.descriptor == &pg_query__window_clause__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t pg_query__window_clause__pack + (const PgQuery__WindowClause *message, + uint8_t *out) +{ + assert(message->base.descriptor == &pg_query__window_clause__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t pg_query__window_clause__pack_to_buffer + (const PgQuery__WindowClause *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &pg_query__window_clause__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +PgQuery__WindowClause * + pg_query__window_clause__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (PgQuery__WindowClause *) + protobuf_c_message_unpack (&pg_query__window_clause__descriptor, + allocator, len, data); +} +void pg_query__window_clause__free_unpacked + (PgQuery__WindowClause *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &pg_query__window_clause__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void pg_query__object_with_args__init + (PgQuery__ObjectWithArgs *message) +{ + static const PgQuery__ObjectWithArgs init_value = PG_QUERY__OBJECT_WITH_ARGS__INIT; + *message = init_value; +} +size_t pg_query__object_with_args__get_packed_size + (const PgQuery__ObjectWithArgs *message) +{ + assert(message->base.descriptor == &pg_query__object_with_args__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t pg_query__object_with_args__pack + (const PgQuery__ObjectWithArgs *message, + uint8_t *out) +{ + assert(message->base.descriptor == &pg_query__object_with_args__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t pg_query__object_with_args__pack_to_buffer + (const PgQuery__ObjectWithArgs *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &pg_query__object_with_args__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +PgQuery__ObjectWithArgs * + pg_query__object_with_args__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (PgQuery__ObjectWithArgs *) + protobuf_c_message_unpack (&pg_query__object_with_args__descriptor, + allocator, len, data); +} +void pg_query__object_with_args__free_unpacked + (PgQuery__ObjectWithArgs *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &pg_query__object_with_args__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void pg_query__access_priv__init + (PgQuery__AccessPriv *message) +{ + static const PgQuery__AccessPriv init_value = PG_QUERY__ACCESS_PRIV__INIT; + *message = init_value; +} +size_t pg_query__access_priv__get_packed_size + (const PgQuery__AccessPriv *message) +{ + assert(message->base.descriptor == &pg_query__access_priv__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t pg_query__access_priv__pack + (const PgQuery__AccessPriv *message, + uint8_t *out) +{ + assert(message->base.descriptor == &pg_query__access_priv__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t pg_query__access_priv__pack_to_buffer + (const PgQuery__AccessPriv *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &pg_query__access_priv__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +PgQuery__AccessPriv * + pg_query__access_priv__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (PgQuery__AccessPriv *) + protobuf_c_message_unpack (&pg_query__access_priv__descriptor, + allocator, len, data); +} +void pg_query__access_priv__free_unpacked + (PgQuery__AccessPriv *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &pg_query__access_priv__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void pg_query__create_op_class_item__init + (PgQuery__CreateOpClassItem *message) +{ + static const PgQuery__CreateOpClassItem init_value = PG_QUERY__CREATE_OP_CLASS_ITEM__INIT; + *message = init_value; +} +size_t pg_query__create_op_class_item__get_packed_size + (const PgQuery__CreateOpClassItem *message) +{ + assert(message->base.descriptor == &pg_query__create_op_class_item__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t pg_query__create_op_class_item__pack + (const PgQuery__CreateOpClassItem *message, + uint8_t *out) +{ + assert(message->base.descriptor == &pg_query__create_op_class_item__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t pg_query__create_op_class_item__pack_to_buffer + (const PgQuery__CreateOpClassItem *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &pg_query__create_op_class_item__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +PgQuery__CreateOpClassItem * + pg_query__create_op_class_item__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (PgQuery__CreateOpClassItem *) + protobuf_c_message_unpack (&pg_query__create_op_class_item__descriptor, + allocator, len, data); +} +void pg_query__create_op_class_item__free_unpacked + (PgQuery__CreateOpClassItem *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &pg_query__create_op_class_item__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void pg_query__table_like_clause__init + (PgQuery__TableLikeClause *message) +{ + static const PgQuery__TableLikeClause init_value = PG_QUERY__TABLE_LIKE_CLAUSE__INIT; + *message = init_value; +} +size_t pg_query__table_like_clause__get_packed_size + (const PgQuery__TableLikeClause *message) +{ + assert(message->base.descriptor == &pg_query__table_like_clause__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t pg_query__table_like_clause__pack + (const PgQuery__TableLikeClause *message, + uint8_t *out) +{ + assert(message->base.descriptor == &pg_query__table_like_clause__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t pg_query__table_like_clause__pack_to_buffer + (const PgQuery__TableLikeClause *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &pg_query__table_like_clause__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +PgQuery__TableLikeClause * + pg_query__table_like_clause__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (PgQuery__TableLikeClause *) + protobuf_c_message_unpack (&pg_query__table_like_clause__descriptor, + allocator, len, data); +} +void pg_query__table_like_clause__free_unpacked + (PgQuery__TableLikeClause *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &pg_query__table_like_clause__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void pg_query__function_parameter__init + (PgQuery__FunctionParameter *message) +{ + static const PgQuery__FunctionParameter init_value = PG_QUERY__FUNCTION_PARAMETER__INIT; + *message = init_value; +} +size_t pg_query__function_parameter__get_packed_size + (const PgQuery__FunctionParameter *message) +{ + assert(message->base.descriptor == &pg_query__function_parameter__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t pg_query__function_parameter__pack + (const PgQuery__FunctionParameter *message, + uint8_t *out) +{ + assert(message->base.descriptor == &pg_query__function_parameter__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t pg_query__function_parameter__pack_to_buffer + (const PgQuery__FunctionParameter *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &pg_query__function_parameter__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +PgQuery__FunctionParameter * + pg_query__function_parameter__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (PgQuery__FunctionParameter *) + protobuf_c_message_unpack (&pg_query__function_parameter__descriptor, + allocator, len, data); +} +void pg_query__function_parameter__free_unpacked + (PgQuery__FunctionParameter *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &pg_query__function_parameter__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void pg_query__locking_clause__init + (PgQuery__LockingClause *message) +{ + static const PgQuery__LockingClause init_value = PG_QUERY__LOCKING_CLAUSE__INIT; + *message = init_value; +} +size_t pg_query__locking_clause__get_packed_size + (const PgQuery__LockingClause *message) +{ + assert(message->base.descriptor == &pg_query__locking_clause__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t pg_query__locking_clause__pack + (const PgQuery__LockingClause *message, + uint8_t *out) +{ + assert(message->base.descriptor == &pg_query__locking_clause__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t pg_query__locking_clause__pack_to_buffer + (const PgQuery__LockingClause *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &pg_query__locking_clause__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +PgQuery__LockingClause * + pg_query__locking_clause__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (PgQuery__LockingClause *) + protobuf_c_message_unpack (&pg_query__locking_clause__descriptor, + allocator, len, data); +} +void pg_query__locking_clause__free_unpacked + (PgQuery__LockingClause *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &pg_query__locking_clause__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void pg_query__row_mark_clause__init + (PgQuery__RowMarkClause *message) +{ + static const PgQuery__RowMarkClause init_value = PG_QUERY__ROW_MARK_CLAUSE__INIT; + *message = init_value; +} +size_t pg_query__row_mark_clause__get_packed_size + (const PgQuery__RowMarkClause *message) +{ + assert(message->base.descriptor == &pg_query__row_mark_clause__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t pg_query__row_mark_clause__pack + (const PgQuery__RowMarkClause *message, + uint8_t *out) +{ + assert(message->base.descriptor == &pg_query__row_mark_clause__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t pg_query__row_mark_clause__pack_to_buffer + (const PgQuery__RowMarkClause *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &pg_query__row_mark_clause__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +PgQuery__RowMarkClause * + pg_query__row_mark_clause__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (PgQuery__RowMarkClause *) + protobuf_c_message_unpack (&pg_query__row_mark_clause__descriptor, + allocator, len, data); +} +void pg_query__row_mark_clause__free_unpacked + (PgQuery__RowMarkClause *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &pg_query__row_mark_clause__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void pg_query__xml_serialize__init + (PgQuery__XmlSerialize *message) +{ + static const PgQuery__XmlSerialize init_value = PG_QUERY__XML_SERIALIZE__INIT; + *message = init_value; +} +size_t pg_query__xml_serialize__get_packed_size + (const PgQuery__XmlSerialize *message) +{ + assert(message->base.descriptor == &pg_query__xml_serialize__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t pg_query__xml_serialize__pack + (const PgQuery__XmlSerialize *message, + uint8_t *out) +{ + assert(message->base.descriptor == &pg_query__xml_serialize__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t pg_query__xml_serialize__pack_to_buffer + (const PgQuery__XmlSerialize *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &pg_query__xml_serialize__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +PgQuery__XmlSerialize * + pg_query__xml_serialize__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (PgQuery__XmlSerialize *) + protobuf_c_message_unpack (&pg_query__xml_serialize__descriptor, + allocator, len, data); +} +void pg_query__xml_serialize__free_unpacked + (PgQuery__XmlSerialize *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &pg_query__xml_serialize__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void pg_query__with_clause__init + (PgQuery__WithClause *message) +{ + static const PgQuery__WithClause init_value = PG_QUERY__WITH_CLAUSE__INIT; + *message = init_value; +} +size_t pg_query__with_clause__get_packed_size + (const PgQuery__WithClause *message) +{ + assert(message->base.descriptor == &pg_query__with_clause__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t pg_query__with_clause__pack + (const PgQuery__WithClause *message, + uint8_t *out) +{ + assert(message->base.descriptor == &pg_query__with_clause__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t pg_query__with_clause__pack_to_buffer + (const PgQuery__WithClause *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &pg_query__with_clause__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +PgQuery__WithClause * + pg_query__with_clause__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (PgQuery__WithClause *) + protobuf_c_message_unpack (&pg_query__with_clause__descriptor, + allocator, len, data); +} +void pg_query__with_clause__free_unpacked + (PgQuery__WithClause *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &pg_query__with_clause__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void pg_query__infer_clause__init + (PgQuery__InferClause *message) +{ + static const PgQuery__InferClause init_value = PG_QUERY__INFER_CLAUSE__INIT; + *message = init_value; +} +size_t pg_query__infer_clause__get_packed_size + (const PgQuery__InferClause *message) +{ + assert(message->base.descriptor == &pg_query__infer_clause__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t pg_query__infer_clause__pack + (const PgQuery__InferClause *message, + uint8_t *out) +{ + assert(message->base.descriptor == &pg_query__infer_clause__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t pg_query__infer_clause__pack_to_buffer + (const PgQuery__InferClause *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &pg_query__infer_clause__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +PgQuery__InferClause * + pg_query__infer_clause__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (PgQuery__InferClause *) + protobuf_c_message_unpack (&pg_query__infer_clause__descriptor, + allocator, len, data); +} +void pg_query__infer_clause__free_unpacked + (PgQuery__InferClause *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &pg_query__infer_clause__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void pg_query__on_conflict_clause__init + (PgQuery__OnConflictClause *message) +{ + static const PgQuery__OnConflictClause init_value = PG_QUERY__ON_CONFLICT_CLAUSE__INIT; + *message = init_value; +} +size_t pg_query__on_conflict_clause__get_packed_size + (const PgQuery__OnConflictClause *message) +{ + assert(message->base.descriptor == &pg_query__on_conflict_clause__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t pg_query__on_conflict_clause__pack + (const PgQuery__OnConflictClause *message, + uint8_t *out) +{ + assert(message->base.descriptor == &pg_query__on_conflict_clause__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t pg_query__on_conflict_clause__pack_to_buffer + (const PgQuery__OnConflictClause *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &pg_query__on_conflict_clause__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +PgQuery__OnConflictClause * + pg_query__on_conflict_clause__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (PgQuery__OnConflictClause *) + protobuf_c_message_unpack (&pg_query__on_conflict_clause__descriptor, + allocator, len, data); +} +void pg_query__on_conflict_clause__free_unpacked + (PgQuery__OnConflictClause *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &pg_query__on_conflict_clause__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void pg_query__common_table_expr__init + (PgQuery__CommonTableExpr *message) +{ + static const PgQuery__CommonTableExpr init_value = PG_QUERY__COMMON_TABLE_EXPR__INIT; + *message = init_value; +} +size_t pg_query__common_table_expr__get_packed_size + (const PgQuery__CommonTableExpr *message) +{ + assert(message->base.descriptor == &pg_query__common_table_expr__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t pg_query__common_table_expr__pack + (const PgQuery__CommonTableExpr *message, + uint8_t *out) +{ + assert(message->base.descriptor == &pg_query__common_table_expr__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t pg_query__common_table_expr__pack_to_buffer + (const PgQuery__CommonTableExpr *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &pg_query__common_table_expr__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +PgQuery__CommonTableExpr * + pg_query__common_table_expr__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (PgQuery__CommonTableExpr *) + protobuf_c_message_unpack (&pg_query__common_table_expr__descriptor, + allocator, len, data); +} +void pg_query__common_table_expr__free_unpacked + (PgQuery__CommonTableExpr *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &pg_query__common_table_expr__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void pg_query__role_spec__init + (PgQuery__RoleSpec *message) +{ + static const PgQuery__RoleSpec init_value = PG_QUERY__ROLE_SPEC__INIT; + *message = init_value; +} +size_t pg_query__role_spec__get_packed_size + (const PgQuery__RoleSpec *message) +{ + assert(message->base.descriptor == &pg_query__role_spec__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t pg_query__role_spec__pack + (const PgQuery__RoleSpec *message, + uint8_t *out) +{ + assert(message->base.descriptor == &pg_query__role_spec__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t pg_query__role_spec__pack_to_buffer + (const PgQuery__RoleSpec *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &pg_query__role_spec__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +PgQuery__RoleSpec * + pg_query__role_spec__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (PgQuery__RoleSpec *) + protobuf_c_message_unpack (&pg_query__role_spec__descriptor, + allocator, len, data); +} +void pg_query__role_spec__free_unpacked + (PgQuery__RoleSpec *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &pg_query__role_spec__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void pg_query__trigger_transition__init + (PgQuery__TriggerTransition *message) +{ + static const PgQuery__TriggerTransition init_value = PG_QUERY__TRIGGER_TRANSITION__INIT; + *message = init_value; +} +size_t pg_query__trigger_transition__get_packed_size + (const PgQuery__TriggerTransition *message) +{ + assert(message->base.descriptor == &pg_query__trigger_transition__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t pg_query__trigger_transition__pack + (const PgQuery__TriggerTransition *message, + uint8_t *out) +{ + assert(message->base.descriptor == &pg_query__trigger_transition__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t pg_query__trigger_transition__pack_to_buffer + (const PgQuery__TriggerTransition *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &pg_query__trigger_transition__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +PgQuery__TriggerTransition * + pg_query__trigger_transition__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (PgQuery__TriggerTransition *) + protobuf_c_message_unpack (&pg_query__trigger_transition__descriptor, + allocator, len, data); +} +void pg_query__trigger_transition__free_unpacked + (PgQuery__TriggerTransition *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &pg_query__trigger_transition__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void pg_query__partition_elem__init + (PgQuery__PartitionElem *message) +{ + static const PgQuery__PartitionElem init_value = PG_QUERY__PARTITION_ELEM__INIT; + *message = init_value; +} +size_t pg_query__partition_elem__get_packed_size + (const PgQuery__PartitionElem *message) +{ + assert(message->base.descriptor == &pg_query__partition_elem__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t pg_query__partition_elem__pack + (const PgQuery__PartitionElem *message, + uint8_t *out) +{ + assert(message->base.descriptor == &pg_query__partition_elem__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t pg_query__partition_elem__pack_to_buffer + (const PgQuery__PartitionElem *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &pg_query__partition_elem__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +PgQuery__PartitionElem * + pg_query__partition_elem__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (PgQuery__PartitionElem *) + protobuf_c_message_unpack (&pg_query__partition_elem__descriptor, + allocator, len, data); +} +void pg_query__partition_elem__free_unpacked + (PgQuery__PartitionElem *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &pg_query__partition_elem__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void pg_query__partition_spec__init + (PgQuery__PartitionSpec *message) +{ + static const PgQuery__PartitionSpec init_value = PG_QUERY__PARTITION_SPEC__INIT; + *message = init_value; +} +size_t pg_query__partition_spec__get_packed_size + (const PgQuery__PartitionSpec *message) +{ + assert(message->base.descriptor == &pg_query__partition_spec__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t pg_query__partition_spec__pack + (const PgQuery__PartitionSpec *message, + uint8_t *out) +{ + assert(message->base.descriptor == &pg_query__partition_spec__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t pg_query__partition_spec__pack_to_buffer + (const PgQuery__PartitionSpec *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &pg_query__partition_spec__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +PgQuery__PartitionSpec * + pg_query__partition_spec__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (PgQuery__PartitionSpec *) + protobuf_c_message_unpack (&pg_query__partition_spec__descriptor, + allocator, len, data); +} +void pg_query__partition_spec__free_unpacked + (PgQuery__PartitionSpec *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &pg_query__partition_spec__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void pg_query__partition_bound_spec__init + (PgQuery__PartitionBoundSpec *message) +{ + static const PgQuery__PartitionBoundSpec init_value = PG_QUERY__PARTITION_BOUND_SPEC__INIT; + *message = init_value; +} +size_t pg_query__partition_bound_spec__get_packed_size + (const PgQuery__PartitionBoundSpec *message) +{ + assert(message->base.descriptor == &pg_query__partition_bound_spec__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t pg_query__partition_bound_spec__pack + (const PgQuery__PartitionBoundSpec *message, + uint8_t *out) +{ + assert(message->base.descriptor == &pg_query__partition_bound_spec__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t pg_query__partition_bound_spec__pack_to_buffer + (const PgQuery__PartitionBoundSpec *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &pg_query__partition_bound_spec__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +PgQuery__PartitionBoundSpec * + pg_query__partition_bound_spec__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (PgQuery__PartitionBoundSpec *) + protobuf_c_message_unpack (&pg_query__partition_bound_spec__descriptor, + allocator, len, data); +} +void pg_query__partition_bound_spec__free_unpacked + (PgQuery__PartitionBoundSpec *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &pg_query__partition_bound_spec__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void pg_query__partition_range_datum__init + (PgQuery__PartitionRangeDatum *message) +{ + static const PgQuery__PartitionRangeDatum init_value = PG_QUERY__PARTITION_RANGE_DATUM__INIT; + *message = init_value; +} +size_t pg_query__partition_range_datum__get_packed_size + (const PgQuery__PartitionRangeDatum *message) +{ + assert(message->base.descriptor == &pg_query__partition_range_datum__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t pg_query__partition_range_datum__pack + (const PgQuery__PartitionRangeDatum *message, + uint8_t *out) +{ + assert(message->base.descriptor == &pg_query__partition_range_datum__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t pg_query__partition_range_datum__pack_to_buffer + (const PgQuery__PartitionRangeDatum *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &pg_query__partition_range_datum__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +PgQuery__PartitionRangeDatum * + pg_query__partition_range_datum__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (PgQuery__PartitionRangeDatum *) + protobuf_c_message_unpack (&pg_query__partition_range_datum__descriptor, + allocator, len, data); +} +void pg_query__partition_range_datum__free_unpacked + (PgQuery__PartitionRangeDatum *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &pg_query__partition_range_datum__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void pg_query__partition_cmd__init + (PgQuery__PartitionCmd *message) +{ + static const PgQuery__PartitionCmd init_value = PG_QUERY__PARTITION_CMD__INIT; + *message = init_value; +} +size_t pg_query__partition_cmd__get_packed_size + (const PgQuery__PartitionCmd *message) +{ + assert(message->base.descriptor == &pg_query__partition_cmd__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t pg_query__partition_cmd__pack + (const PgQuery__PartitionCmd *message, + uint8_t *out) +{ + assert(message->base.descriptor == &pg_query__partition_cmd__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t pg_query__partition_cmd__pack_to_buffer + (const PgQuery__PartitionCmd *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &pg_query__partition_cmd__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +PgQuery__PartitionCmd * + pg_query__partition_cmd__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (PgQuery__PartitionCmd *) + protobuf_c_message_unpack (&pg_query__partition_cmd__descriptor, + allocator, len, data); +} +void pg_query__partition_cmd__free_unpacked + (PgQuery__PartitionCmd *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &pg_query__partition_cmd__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void pg_query__vacuum_relation__init + (PgQuery__VacuumRelation *message) +{ + static const PgQuery__VacuumRelation init_value = PG_QUERY__VACUUM_RELATION__INIT; + *message = init_value; +} +size_t pg_query__vacuum_relation__get_packed_size + (const PgQuery__VacuumRelation *message) +{ + assert(message->base.descriptor == &pg_query__vacuum_relation__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t pg_query__vacuum_relation__pack + (const PgQuery__VacuumRelation *message, + uint8_t *out) +{ + assert(message->base.descriptor == &pg_query__vacuum_relation__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t pg_query__vacuum_relation__pack_to_buffer + (const PgQuery__VacuumRelation *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &pg_query__vacuum_relation__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +PgQuery__VacuumRelation * + pg_query__vacuum_relation__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (PgQuery__VacuumRelation *) + protobuf_c_message_unpack (&pg_query__vacuum_relation__descriptor, + allocator, len, data); +} +void pg_query__vacuum_relation__free_unpacked + (PgQuery__VacuumRelation *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &pg_query__vacuum_relation__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void pg_query__inline_code_block__init + (PgQuery__InlineCodeBlock *message) +{ + static const PgQuery__InlineCodeBlock init_value = PG_QUERY__INLINE_CODE_BLOCK__INIT; + *message = init_value; +} +size_t pg_query__inline_code_block__get_packed_size + (const PgQuery__InlineCodeBlock *message) +{ + assert(message->base.descriptor == &pg_query__inline_code_block__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t pg_query__inline_code_block__pack + (const PgQuery__InlineCodeBlock *message, + uint8_t *out) +{ + assert(message->base.descriptor == &pg_query__inline_code_block__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t pg_query__inline_code_block__pack_to_buffer + (const PgQuery__InlineCodeBlock *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &pg_query__inline_code_block__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +PgQuery__InlineCodeBlock * + pg_query__inline_code_block__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (PgQuery__InlineCodeBlock *) + protobuf_c_message_unpack (&pg_query__inline_code_block__descriptor, + allocator, len, data); +} +void pg_query__inline_code_block__free_unpacked + (PgQuery__InlineCodeBlock *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &pg_query__inline_code_block__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void pg_query__call_context__init + (PgQuery__CallContext *message) +{ + static const PgQuery__CallContext init_value = PG_QUERY__CALL_CONTEXT__INIT; + *message = init_value; +} +size_t pg_query__call_context__get_packed_size + (const PgQuery__CallContext *message) +{ + assert(message->base.descriptor == &pg_query__call_context__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t pg_query__call_context__pack + (const PgQuery__CallContext *message, + uint8_t *out) +{ + assert(message->base.descriptor == &pg_query__call_context__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t pg_query__call_context__pack_to_buffer + (const PgQuery__CallContext *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &pg_query__call_context__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +PgQuery__CallContext * + pg_query__call_context__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (PgQuery__CallContext *) + protobuf_c_message_unpack (&pg_query__call_context__descriptor, + allocator, len, data); +} +void pg_query__call_context__free_unpacked + (PgQuery__CallContext *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &pg_query__call_context__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void pg_query__scan_token__init + (PgQuery__ScanToken *message) +{ + static const PgQuery__ScanToken init_value = PG_QUERY__SCAN_TOKEN__INIT; + *message = init_value; +} +size_t pg_query__scan_token__get_packed_size + (const PgQuery__ScanToken *message) +{ + assert(message->base.descriptor == &pg_query__scan_token__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t pg_query__scan_token__pack + (const PgQuery__ScanToken *message, + uint8_t *out) +{ + assert(message->base.descriptor == &pg_query__scan_token__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t pg_query__scan_token__pack_to_buffer + (const PgQuery__ScanToken *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &pg_query__scan_token__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +PgQuery__ScanToken * + pg_query__scan_token__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (PgQuery__ScanToken *) + protobuf_c_message_unpack (&pg_query__scan_token__descriptor, + allocator, len, data); +} +void pg_query__scan_token__free_unpacked + (PgQuery__ScanToken *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &pg_query__scan_token__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +static const ProtobufCFieldDescriptor pg_query__parse_result__field_descriptors[2] = +{ + { + "version", + 1, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(PgQuery__ParseResult, version), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "stmts", + 2, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__ParseResult, n_stmts), + offsetof(PgQuery__ParseResult, stmts), + &pg_query__raw_stmt__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned pg_query__parse_result__field_indices_by_name[] = { + 1, /* field[1] = stmts */ + 0, /* field[0] = version */ +}; +static const ProtobufCIntRange pg_query__parse_result__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 2 } +}; +const ProtobufCMessageDescriptor pg_query__parse_result__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "pg_query.ParseResult", + "ParseResult", + "PgQuery__ParseResult", + "pg_query", + sizeof(PgQuery__ParseResult), + 2, + pg_query__parse_result__field_descriptors, + pg_query__parse_result__field_indices_by_name, + 1, pg_query__parse_result__number_ranges, + (ProtobufCMessageInit) pg_query__parse_result__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor pg_query__scan_result__field_descriptors[2] = +{ + { + "version", + 1, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(PgQuery__ScanResult, version), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "tokens", + 2, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__ScanResult, n_tokens), + offsetof(PgQuery__ScanResult, tokens), + &pg_query__scan_token__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned pg_query__scan_result__field_indices_by_name[] = { + 1, /* field[1] = tokens */ + 0, /* field[0] = version */ +}; +static const ProtobufCIntRange pg_query__scan_result__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 2 } +}; +const ProtobufCMessageDescriptor pg_query__scan_result__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "pg_query.ScanResult", + "ScanResult", + "PgQuery__ScanResult", + "pg_query", + sizeof(PgQuery__ScanResult), + 2, + pg_query__scan_result__field_descriptors, + pg_query__scan_result__field_indices_by_name, + 1, pg_query__scan_result__number_ranges, + (ProtobufCMessageInit) pg_query__scan_result__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor pg_query__node__field_descriptors[228] = +{ + { + "alias", + 1, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__Node, node_case), + offsetof(PgQuery__Node, alias), + &pg_query__alias__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "range_var", + 2, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__Node, node_case), + offsetof(PgQuery__Node, range_var), + &pg_query__range_var__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "table_func", + 3, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__Node, node_case), + offsetof(PgQuery__Node, table_func), + &pg_query__table_func__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "expr", + 4, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__Node, node_case), + offsetof(PgQuery__Node, expr), + &pg_query__expr__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "var", + 5, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__Node, node_case), + offsetof(PgQuery__Node, var), + &pg_query__var__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "param", + 6, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__Node, node_case), + offsetof(PgQuery__Node, param), + &pg_query__param__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "aggref", + 7, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__Node, node_case), + offsetof(PgQuery__Node, aggref), + &pg_query__aggref__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "grouping_func", + 8, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__Node, node_case), + offsetof(PgQuery__Node, grouping_func), + &pg_query__grouping_func__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "window_func", + 9, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__Node, node_case), + offsetof(PgQuery__Node, window_func), + &pg_query__window_func__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "subscripting_ref", + 10, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__Node, node_case), + offsetof(PgQuery__Node, subscripting_ref), + &pg_query__subscripting_ref__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "func_expr", + 11, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__Node, node_case), + offsetof(PgQuery__Node, func_expr), + &pg_query__func_expr__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "named_arg_expr", + 12, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__Node, node_case), + offsetof(PgQuery__Node, named_arg_expr), + &pg_query__named_arg_expr__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "op_expr", + 13, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__Node, node_case), + offsetof(PgQuery__Node, op_expr), + &pg_query__op_expr__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "distinct_expr", + 14, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__Node, node_case), + offsetof(PgQuery__Node, distinct_expr), + &pg_query__distinct_expr__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "null_if_expr", + 15, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__Node, node_case), + offsetof(PgQuery__Node, null_if_expr), + &pg_query__null_if_expr__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "scalar_array_op_expr", + 16, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__Node, node_case), + offsetof(PgQuery__Node, scalar_array_op_expr), + &pg_query__scalar_array_op_expr__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "bool_expr", + 17, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__Node, node_case), + offsetof(PgQuery__Node, bool_expr), + &pg_query__bool_expr__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "sub_link", + 18, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__Node, node_case), + offsetof(PgQuery__Node, sub_link), + &pg_query__sub_link__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "sub_plan", + 19, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__Node, node_case), + offsetof(PgQuery__Node, sub_plan), + &pg_query__sub_plan__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "alternative_sub_plan", + 20, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__Node, node_case), + offsetof(PgQuery__Node, alternative_sub_plan), + &pg_query__alternative_sub_plan__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "field_select", + 21, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__Node, node_case), + offsetof(PgQuery__Node, field_select), + &pg_query__field_select__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "field_store", + 22, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__Node, node_case), + offsetof(PgQuery__Node, field_store), + &pg_query__field_store__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "relabel_type", + 23, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__Node, node_case), + offsetof(PgQuery__Node, relabel_type), + &pg_query__relabel_type__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "coerce_via_io", + 24, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__Node, node_case), + offsetof(PgQuery__Node, coerce_via_io), + &pg_query__coerce_via_io__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "array_coerce_expr", + 25, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__Node, node_case), + offsetof(PgQuery__Node, array_coerce_expr), + &pg_query__array_coerce_expr__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "convert_rowtype_expr", + 26, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__Node, node_case), + offsetof(PgQuery__Node, convert_rowtype_expr), + &pg_query__convert_rowtype_expr__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "collate_expr", + 27, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__Node, node_case), + offsetof(PgQuery__Node, collate_expr), + &pg_query__collate_expr__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "case_expr", + 28, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__Node, node_case), + offsetof(PgQuery__Node, case_expr), + &pg_query__case_expr__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "case_when", + 29, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__Node, node_case), + offsetof(PgQuery__Node, case_when), + &pg_query__case_when__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "case_test_expr", + 30, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__Node, node_case), + offsetof(PgQuery__Node, case_test_expr), + &pg_query__case_test_expr__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "array_expr", + 31, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__Node, node_case), + offsetof(PgQuery__Node, array_expr), + &pg_query__array_expr__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "row_expr", + 32, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__Node, node_case), + offsetof(PgQuery__Node, row_expr), + &pg_query__row_expr__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "row_compare_expr", + 33, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__Node, node_case), + offsetof(PgQuery__Node, row_compare_expr), + &pg_query__row_compare_expr__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "coalesce_expr", + 34, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__Node, node_case), + offsetof(PgQuery__Node, coalesce_expr), + &pg_query__coalesce_expr__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "min_max_expr", + 35, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__Node, node_case), + offsetof(PgQuery__Node, min_max_expr), + &pg_query__min_max_expr__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "sqlvalue_function", + 36, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__Node, node_case), + offsetof(PgQuery__Node, sqlvalue_function), + &pg_query__sqlvalue_function__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "xml_expr", + 37, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__Node, node_case), + offsetof(PgQuery__Node, xml_expr), + &pg_query__xml_expr__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "null_test", + 38, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__Node, node_case), + offsetof(PgQuery__Node, null_test), + &pg_query__null_test__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "boolean_test", + 39, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__Node, node_case), + offsetof(PgQuery__Node, boolean_test), + &pg_query__boolean_test__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "coerce_to_domain", + 40, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__Node, node_case), + offsetof(PgQuery__Node, coerce_to_domain), + &pg_query__coerce_to_domain__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "coerce_to_domain_value", + 41, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__Node, node_case), + offsetof(PgQuery__Node, coerce_to_domain_value), + &pg_query__coerce_to_domain_value__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "set_to_default", + 42, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__Node, node_case), + offsetof(PgQuery__Node, set_to_default), + &pg_query__set_to_default__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "current_of_expr", + 43, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__Node, node_case), + offsetof(PgQuery__Node, current_of_expr), + &pg_query__current_of_expr__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "next_value_expr", + 44, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__Node, node_case), + offsetof(PgQuery__Node, next_value_expr), + &pg_query__next_value_expr__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "inference_elem", + 45, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__Node, node_case), + offsetof(PgQuery__Node, inference_elem), + &pg_query__inference_elem__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "target_entry", + 46, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__Node, node_case), + offsetof(PgQuery__Node, target_entry), + &pg_query__target_entry__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "range_tbl_ref", + 47, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__Node, node_case), + offsetof(PgQuery__Node, range_tbl_ref), + &pg_query__range_tbl_ref__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "join_expr", + 48, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__Node, node_case), + offsetof(PgQuery__Node, join_expr), + &pg_query__join_expr__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "from_expr", + 49, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__Node, node_case), + offsetof(PgQuery__Node, from_expr), + &pg_query__from_expr__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "on_conflict_expr", + 50, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__Node, node_case), + offsetof(PgQuery__Node, on_conflict_expr), + &pg_query__on_conflict_expr__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "into_clause", + 51, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__Node, node_case), + offsetof(PgQuery__Node, into_clause), + &pg_query__into_clause__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "raw_stmt", + 52, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__Node, node_case), + offsetof(PgQuery__Node, raw_stmt), + &pg_query__raw_stmt__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "query", + 53, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__Node, node_case), + offsetof(PgQuery__Node, query), + &pg_query__query__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "insert_stmt", + 54, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__Node, node_case), + offsetof(PgQuery__Node, insert_stmt), + &pg_query__insert_stmt__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "delete_stmt", + 55, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__Node, node_case), + offsetof(PgQuery__Node, delete_stmt), + &pg_query__delete_stmt__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "update_stmt", + 56, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__Node, node_case), + offsetof(PgQuery__Node, update_stmt), + &pg_query__update_stmt__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "select_stmt", + 57, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__Node, node_case), + offsetof(PgQuery__Node, select_stmt), + &pg_query__select_stmt__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "alter_table_stmt", + 58, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__Node, node_case), + offsetof(PgQuery__Node, alter_table_stmt), + &pg_query__alter_table_stmt__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "alter_table_cmd", + 59, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__Node, node_case), + offsetof(PgQuery__Node, alter_table_cmd), + &pg_query__alter_table_cmd__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "alter_domain_stmt", + 60, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__Node, node_case), + offsetof(PgQuery__Node, alter_domain_stmt), + &pg_query__alter_domain_stmt__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "set_operation_stmt", + 61, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__Node, node_case), + offsetof(PgQuery__Node, set_operation_stmt), + &pg_query__set_operation_stmt__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "grant_stmt", + 62, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__Node, node_case), + offsetof(PgQuery__Node, grant_stmt), + &pg_query__grant_stmt__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "grant_role_stmt", + 63, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__Node, node_case), + offsetof(PgQuery__Node, grant_role_stmt), + &pg_query__grant_role_stmt__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "alter_default_privileges_stmt", + 64, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__Node, node_case), + offsetof(PgQuery__Node, alter_default_privileges_stmt), + &pg_query__alter_default_privileges_stmt__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "close_portal_stmt", + 65, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__Node, node_case), + offsetof(PgQuery__Node, close_portal_stmt), + &pg_query__close_portal_stmt__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "cluster_stmt", + 66, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__Node, node_case), + offsetof(PgQuery__Node, cluster_stmt), + &pg_query__cluster_stmt__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "copy_stmt", + 67, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__Node, node_case), + offsetof(PgQuery__Node, copy_stmt), + &pg_query__copy_stmt__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "create_stmt", + 68, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__Node, node_case), + offsetof(PgQuery__Node, create_stmt), + &pg_query__create_stmt__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "define_stmt", + 69, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__Node, node_case), + offsetof(PgQuery__Node, define_stmt), + &pg_query__define_stmt__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "drop_stmt", + 70, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__Node, node_case), + offsetof(PgQuery__Node, drop_stmt), + &pg_query__drop_stmt__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "truncate_stmt", + 71, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__Node, node_case), + offsetof(PgQuery__Node, truncate_stmt), + &pg_query__truncate_stmt__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "comment_stmt", + 72, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__Node, node_case), + offsetof(PgQuery__Node, comment_stmt), + &pg_query__comment_stmt__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "fetch_stmt", + 73, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__Node, node_case), + offsetof(PgQuery__Node, fetch_stmt), + &pg_query__fetch_stmt__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "index_stmt", + 74, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__Node, node_case), + offsetof(PgQuery__Node, index_stmt), + &pg_query__index_stmt__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "create_function_stmt", + 75, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__Node, node_case), + offsetof(PgQuery__Node, create_function_stmt), + &pg_query__create_function_stmt__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "alter_function_stmt", + 76, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__Node, node_case), + offsetof(PgQuery__Node, alter_function_stmt), + &pg_query__alter_function_stmt__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "do_stmt", + 77, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__Node, node_case), + offsetof(PgQuery__Node, do_stmt), + &pg_query__do_stmt__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "rename_stmt", + 78, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__Node, node_case), + offsetof(PgQuery__Node, rename_stmt), + &pg_query__rename_stmt__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "rule_stmt", + 79, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__Node, node_case), + offsetof(PgQuery__Node, rule_stmt), + &pg_query__rule_stmt__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "notify_stmt", + 80, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__Node, node_case), + offsetof(PgQuery__Node, notify_stmt), + &pg_query__notify_stmt__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "listen_stmt", + 81, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__Node, node_case), + offsetof(PgQuery__Node, listen_stmt), + &pg_query__listen_stmt__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "unlisten_stmt", + 82, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__Node, node_case), + offsetof(PgQuery__Node, unlisten_stmt), + &pg_query__unlisten_stmt__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "transaction_stmt", + 83, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__Node, node_case), + offsetof(PgQuery__Node, transaction_stmt), + &pg_query__transaction_stmt__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "view_stmt", + 84, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__Node, node_case), + offsetof(PgQuery__Node, view_stmt), + &pg_query__view_stmt__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "load_stmt", + 85, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__Node, node_case), + offsetof(PgQuery__Node, load_stmt), + &pg_query__load_stmt__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "create_domain_stmt", + 86, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__Node, node_case), + offsetof(PgQuery__Node, create_domain_stmt), + &pg_query__create_domain_stmt__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "createdb_stmt", + 87, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__Node, node_case), + offsetof(PgQuery__Node, createdb_stmt), + &pg_query__createdb_stmt__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "dropdb_stmt", + 88, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__Node, node_case), + offsetof(PgQuery__Node, dropdb_stmt), + &pg_query__dropdb_stmt__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "vacuum_stmt", + 89, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__Node, node_case), + offsetof(PgQuery__Node, vacuum_stmt), + &pg_query__vacuum_stmt__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "explain_stmt", + 90, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__Node, node_case), + offsetof(PgQuery__Node, explain_stmt), + &pg_query__explain_stmt__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "create_table_as_stmt", + 91, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__Node, node_case), + offsetof(PgQuery__Node, create_table_as_stmt), + &pg_query__create_table_as_stmt__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "create_seq_stmt", + 92, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__Node, node_case), + offsetof(PgQuery__Node, create_seq_stmt), + &pg_query__create_seq_stmt__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "alter_seq_stmt", + 93, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__Node, node_case), + offsetof(PgQuery__Node, alter_seq_stmt), + &pg_query__alter_seq_stmt__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "variable_set_stmt", + 94, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__Node, node_case), + offsetof(PgQuery__Node, variable_set_stmt), + &pg_query__variable_set_stmt__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "variable_show_stmt", + 95, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__Node, node_case), + offsetof(PgQuery__Node, variable_show_stmt), + &pg_query__variable_show_stmt__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "discard_stmt", + 96, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__Node, node_case), + offsetof(PgQuery__Node, discard_stmt), + &pg_query__discard_stmt__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "create_trig_stmt", + 97, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__Node, node_case), + offsetof(PgQuery__Node, create_trig_stmt), + &pg_query__create_trig_stmt__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "create_plang_stmt", + 98, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__Node, node_case), + offsetof(PgQuery__Node, create_plang_stmt), + &pg_query__create_plang_stmt__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "create_role_stmt", + 99, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__Node, node_case), + offsetof(PgQuery__Node, create_role_stmt), + &pg_query__create_role_stmt__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "alter_role_stmt", + 100, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__Node, node_case), + offsetof(PgQuery__Node, alter_role_stmt), + &pg_query__alter_role_stmt__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "drop_role_stmt", + 101, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__Node, node_case), + offsetof(PgQuery__Node, drop_role_stmt), + &pg_query__drop_role_stmt__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "lock_stmt", + 102, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__Node, node_case), + offsetof(PgQuery__Node, lock_stmt), + &pg_query__lock_stmt__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "constraints_set_stmt", + 103, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__Node, node_case), + offsetof(PgQuery__Node, constraints_set_stmt), + &pg_query__constraints_set_stmt__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "reindex_stmt", + 104, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__Node, node_case), + offsetof(PgQuery__Node, reindex_stmt), + &pg_query__reindex_stmt__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "check_point_stmt", + 105, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__Node, node_case), + offsetof(PgQuery__Node, check_point_stmt), + &pg_query__check_point_stmt__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "create_schema_stmt", + 106, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__Node, node_case), + offsetof(PgQuery__Node, create_schema_stmt), + &pg_query__create_schema_stmt__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "alter_database_stmt", + 107, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__Node, node_case), + offsetof(PgQuery__Node, alter_database_stmt), + &pg_query__alter_database_stmt__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "alter_database_set_stmt", + 108, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__Node, node_case), + offsetof(PgQuery__Node, alter_database_set_stmt), + &pg_query__alter_database_set_stmt__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "alter_role_set_stmt", + 109, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__Node, node_case), + offsetof(PgQuery__Node, alter_role_set_stmt), + &pg_query__alter_role_set_stmt__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "create_conversion_stmt", + 110, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__Node, node_case), + offsetof(PgQuery__Node, create_conversion_stmt), + &pg_query__create_conversion_stmt__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "create_cast_stmt", + 111, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__Node, node_case), + offsetof(PgQuery__Node, create_cast_stmt), + &pg_query__create_cast_stmt__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "create_op_class_stmt", + 112, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__Node, node_case), + offsetof(PgQuery__Node, create_op_class_stmt), + &pg_query__create_op_class_stmt__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "create_op_family_stmt", + 113, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__Node, node_case), + offsetof(PgQuery__Node, create_op_family_stmt), + &pg_query__create_op_family_stmt__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "alter_op_family_stmt", + 114, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__Node, node_case), + offsetof(PgQuery__Node, alter_op_family_stmt), + &pg_query__alter_op_family_stmt__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "prepare_stmt", + 115, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__Node, node_case), + offsetof(PgQuery__Node, prepare_stmt), + &pg_query__prepare_stmt__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "execute_stmt", + 116, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__Node, node_case), + offsetof(PgQuery__Node, execute_stmt), + &pg_query__execute_stmt__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "deallocate_stmt", + 117, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__Node, node_case), + offsetof(PgQuery__Node, deallocate_stmt), + &pg_query__deallocate_stmt__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "declare_cursor_stmt", + 118, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__Node, node_case), + offsetof(PgQuery__Node, declare_cursor_stmt), + &pg_query__declare_cursor_stmt__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "create_table_space_stmt", + 119, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__Node, node_case), + offsetof(PgQuery__Node, create_table_space_stmt), + &pg_query__create_table_space_stmt__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "drop_table_space_stmt", + 120, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__Node, node_case), + offsetof(PgQuery__Node, drop_table_space_stmt), + &pg_query__drop_table_space_stmt__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "alter_object_depends_stmt", + 121, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__Node, node_case), + offsetof(PgQuery__Node, alter_object_depends_stmt), + &pg_query__alter_object_depends_stmt__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "alter_object_schema_stmt", + 122, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__Node, node_case), + offsetof(PgQuery__Node, alter_object_schema_stmt), + &pg_query__alter_object_schema_stmt__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "alter_owner_stmt", + 123, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__Node, node_case), + offsetof(PgQuery__Node, alter_owner_stmt), + &pg_query__alter_owner_stmt__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "alter_operator_stmt", + 124, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__Node, node_case), + offsetof(PgQuery__Node, alter_operator_stmt), + &pg_query__alter_operator_stmt__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "alter_type_stmt", + 125, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__Node, node_case), + offsetof(PgQuery__Node, alter_type_stmt), + &pg_query__alter_type_stmt__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "drop_owned_stmt", + 126, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__Node, node_case), + offsetof(PgQuery__Node, drop_owned_stmt), + &pg_query__drop_owned_stmt__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "reassign_owned_stmt", + 127, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__Node, node_case), + offsetof(PgQuery__Node, reassign_owned_stmt), + &pg_query__reassign_owned_stmt__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "composite_type_stmt", + 128, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__Node, node_case), + offsetof(PgQuery__Node, composite_type_stmt), + &pg_query__composite_type_stmt__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "create_enum_stmt", + 129, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__Node, node_case), + offsetof(PgQuery__Node, create_enum_stmt), + &pg_query__create_enum_stmt__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "create_range_stmt", + 130, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__Node, node_case), + offsetof(PgQuery__Node, create_range_stmt), + &pg_query__create_range_stmt__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "alter_enum_stmt", + 131, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__Node, node_case), + offsetof(PgQuery__Node, alter_enum_stmt), + &pg_query__alter_enum_stmt__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "alter_tsdictionary_stmt", + 132, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__Node, node_case), + offsetof(PgQuery__Node, alter_tsdictionary_stmt), + &pg_query__alter_tsdictionary_stmt__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "alter_tsconfiguration_stmt", + 133, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__Node, node_case), + offsetof(PgQuery__Node, alter_tsconfiguration_stmt), + &pg_query__alter_tsconfiguration_stmt__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "create_fdw_stmt", + 134, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__Node, node_case), + offsetof(PgQuery__Node, create_fdw_stmt), + &pg_query__create_fdw_stmt__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "alter_fdw_stmt", + 135, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__Node, node_case), + offsetof(PgQuery__Node, alter_fdw_stmt), + &pg_query__alter_fdw_stmt__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "create_foreign_server_stmt", + 136, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__Node, node_case), + offsetof(PgQuery__Node, create_foreign_server_stmt), + &pg_query__create_foreign_server_stmt__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "alter_foreign_server_stmt", + 137, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__Node, node_case), + offsetof(PgQuery__Node, alter_foreign_server_stmt), + &pg_query__alter_foreign_server_stmt__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "create_user_mapping_stmt", + 138, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__Node, node_case), + offsetof(PgQuery__Node, create_user_mapping_stmt), + &pg_query__create_user_mapping_stmt__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "alter_user_mapping_stmt", + 139, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__Node, node_case), + offsetof(PgQuery__Node, alter_user_mapping_stmt), + &pg_query__alter_user_mapping_stmt__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "drop_user_mapping_stmt", + 140, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__Node, node_case), + offsetof(PgQuery__Node, drop_user_mapping_stmt), + &pg_query__drop_user_mapping_stmt__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "alter_table_space_options_stmt", + 141, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__Node, node_case), + offsetof(PgQuery__Node, alter_table_space_options_stmt), + &pg_query__alter_table_space_options_stmt__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "alter_table_move_all_stmt", + 142, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__Node, node_case), + offsetof(PgQuery__Node, alter_table_move_all_stmt), + &pg_query__alter_table_move_all_stmt__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "sec_label_stmt", + 143, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__Node, node_case), + offsetof(PgQuery__Node, sec_label_stmt), + &pg_query__sec_label_stmt__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "create_foreign_table_stmt", + 144, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__Node, node_case), + offsetof(PgQuery__Node, create_foreign_table_stmt), + &pg_query__create_foreign_table_stmt__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "import_foreign_schema_stmt", + 145, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__Node, node_case), + offsetof(PgQuery__Node, import_foreign_schema_stmt), + &pg_query__import_foreign_schema_stmt__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "create_extension_stmt", + 146, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__Node, node_case), + offsetof(PgQuery__Node, create_extension_stmt), + &pg_query__create_extension_stmt__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "alter_extension_stmt", + 147, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__Node, node_case), + offsetof(PgQuery__Node, alter_extension_stmt), + &pg_query__alter_extension_stmt__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "alter_extension_contents_stmt", + 148, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__Node, node_case), + offsetof(PgQuery__Node, alter_extension_contents_stmt), + &pg_query__alter_extension_contents_stmt__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "create_event_trig_stmt", + 149, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__Node, node_case), + offsetof(PgQuery__Node, create_event_trig_stmt), + &pg_query__create_event_trig_stmt__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "alter_event_trig_stmt", + 150, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__Node, node_case), + offsetof(PgQuery__Node, alter_event_trig_stmt), + &pg_query__alter_event_trig_stmt__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "refresh_mat_view_stmt", + 151, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__Node, node_case), + offsetof(PgQuery__Node, refresh_mat_view_stmt), + &pg_query__refresh_mat_view_stmt__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "replica_identity_stmt", + 152, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__Node, node_case), + offsetof(PgQuery__Node, replica_identity_stmt), + &pg_query__replica_identity_stmt__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "alter_system_stmt", + 153, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__Node, node_case), + offsetof(PgQuery__Node, alter_system_stmt), + &pg_query__alter_system_stmt__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "create_policy_stmt", + 154, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__Node, node_case), + offsetof(PgQuery__Node, create_policy_stmt), + &pg_query__create_policy_stmt__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "alter_policy_stmt", + 155, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__Node, node_case), + offsetof(PgQuery__Node, alter_policy_stmt), + &pg_query__alter_policy_stmt__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "create_transform_stmt", + 156, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__Node, node_case), + offsetof(PgQuery__Node, create_transform_stmt), + &pg_query__create_transform_stmt__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "create_am_stmt", + 157, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__Node, node_case), + offsetof(PgQuery__Node, create_am_stmt), + &pg_query__create_am_stmt__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "create_publication_stmt", + 158, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__Node, node_case), + offsetof(PgQuery__Node, create_publication_stmt), + &pg_query__create_publication_stmt__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "alter_publication_stmt", + 159, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__Node, node_case), + offsetof(PgQuery__Node, alter_publication_stmt), + &pg_query__alter_publication_stmt__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "create_subscription_stmt", + 160, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__Node, node_case), + offsetof(PgQuery__Node, create_subscription_stmt), + &pg_query__create_subscription_stmt__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "alter_subscription_stmt", + 161, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__Node, node_case), + offsetof(PgQuery__Node, alter_subscription_stmt), + &pg_query__alter_subscription_stmt__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "drop_subscription_stmt", + 162, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__Node, node_case), + offsetof(PgQuery__Node, drop_subscription_stmt), + &pg_query__drop_subscription_stmt__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "create_stats_stmt", + 163, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__Node, node_case), + offsetof(PgQuery__Node, create_stats_stmt), + &pg_query__create_stats_stmt__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "alter_collation_stmt", + 164, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__Node, node_case), + offsetof(PgQuery__Node, alter_collation_stmt), + &pg_query__alter_collation_stmt__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "call_stmt", + 165, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__Node, node_case), + offsetof(PgQuery__Node, call_stmt), + &pg_query__call_stmt__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "alter_stats_stmt", + 166, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__Node, node_case), + offsetof(PgQuery__Node, alter_stats_stmt), + &pg_query__alter_stats_stmt__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "a_expr", + 167, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__Node, node_case), + offsetof(PgQuery__Node, a_expr), + &pg_query__a__expr__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "column_ref", + 168, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__Node, node_case), + offsetof(PgQuery__Node, column_ref), + &pg_query__column_ref__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "param_ref", + 169, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__Node, node_case), + offsetof(PgQuery__Node, param_ref), + &pg_query__param_ref__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "a_const", + 170, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__Node, node_case), + offsetof(PgQuery__Node, a_const), + &pg_query__a__const__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "func_call", + 171, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__Node, node_case), + offsetof(PgQuery__Node, func_call), + &pg_query__func_call__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "a_star", + 172, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__Node, node_case), + offsetof(PgQuery__Node, a_star), + &pg_query__a__star__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "a_indices", + 173, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__Node, node_case), + offsetof(PgQuery__Node, a_indices), + &pg_query__a__indices__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "a_indirection", + 174, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__Node, node_case), + offsetof(PgQuery__Node, a_indirection), + &pg_query__a__indirection__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "a_array_expr", + 175, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__Node, node_case), + offsetof(PgQuery__Node, a_array_expr), + &pg_query__a__array_expr__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "res_target", + 176, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__Node, node_case), + offsetof(PgQuery__Node, res_target), + &pg_query__res_target__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "multi_assign_ref", + 177, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__Node, node_case), + offsetof(PgQuery__Node, multi_assign_ref), + &pg_query__multi_assign_ref__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "type_cast", + 178, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__Node, node_case), + offsetof(PgQuery__Node, type_cast), + &pg_query__type_cast__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "collate_clause", + 179, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__Node, node_case), + offsetof(PgQuery__Node, collate_clause), + &pg_query__collate_clause__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "sort_by", + 180, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__Node, node_case), + offsetof(PgQuery__Node, sort_by), + &pg_query__sort_by__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "window_def", + 181, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__Node, node_case), + offsetof(PgQuery__Node, window_def), + &pg_query__window_def__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "range_subselect", + 182, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__Node, node_case), + offsetof(PgQuery__Node, range_subselect), + &pg_query__range_subselect__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "range_function", + 183, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__Node, node_case), + offsetof(PgQuery__Node, range_function), + &pg_query__range_function__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "range_table_sample", + 184, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__Node, node_case), + offsetof(PgQuery__Node, range_table_sample), + &pg_query__range_table_sample__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "range_table_func", + 185, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__Node, node_case), + offsetof(PgQuery__Node, range_table_func), + &pg_query__range_table_func__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "range_table_func_col", + 186, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__Node, node_case), + offsetof(PgQuery__Node, range_table_func_col), + &pg_query__range_table_func_col__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "type_name", + 187, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__Node, node_case), + offsetof(PgQuery__Node, type_name), + &pg_query__type_name__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "column_def", + 188, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__Node, node_case), + offsetof(PgQuery__Node, column_def), + &pg_query__column_def__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "index_elem", + 189, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__Node, node_case), + offsetof(PgQuery__Node, index_elem), + &pg_query__index_elem__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "constraint", + 190, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__Node, node_case), + offsetof(PgQuery__Node, constraint), + &pg_query__constraint__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "def_elem", + 191, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__Node, node_case), + offsetof(PgQuery__Node, def_elem), + &pg_query__def_elem__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "range_tbl_entry", + 192, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__Node, node_case), + offsetof(PgQuery__Node, range_tbl_entry), + &pg_query__range_tbl_entry__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "range_tbl_function", + 193, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__Node, node_case), + offsetof(PgQuery__Node, range_tbl_function), + &pg_query__range_tbl_function__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "table_sample_clause", + 194, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__Node, node_case), + offsetof(PgQuery__Node, table_sample_clause), + &pg_query__table_sample_clause__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "with_check_option", + 195, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__Node, node_case), + offsetof(PgQuery__Node, with_check_option), + &pg_query__with_check_option__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "sort_group_clause", + 196, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__Node, node_case), + offsetof(PgQuery__Node, sort_group_clause), + &pg_query__sort_group_clause__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "grouping_set", + 197, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__Node, node_case), + offsetof(PgQuery__Node, grouping_set), + &pg_query__grouping_set__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "window_clause", + 198, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__Node, node_case), + offsetof(PgQuery__Node, window_clause), + &pg_query__window_clause__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "object_with_args", + 199, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__Node, node_case), + offsetof(PgQuery__Node, object_with_args), + &pg_query__object_with_args__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "access_priv", + 200, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__Node, node_case), + offsetof(PgQuery__Node, access_priv), + &pg_query__access_priv__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "create_op_class_item", + 201, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__Node, node_case), + offsetof(PgQuery__Node, create_op_class_item), + &pg_query__create_op_class_item__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "table_like_clause", + 202, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__Node, node_case), + offsetof(PgQuery__Node, table_like_clause), + &pg_query__table_like_clause__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "function_parameter", + 203, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__Node, node_case), + offsetof(PgQuery__Node, function_parameter), + &pg_query__function_parameter__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "locking_clause", + 204, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__Node, node_case), + offsetof(PgQuery__Node, locking_clause), + &pg_query__locking_clause__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "row_mark_clause", + 205, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__Node, node_case), + offsetof(PgQuery__Node, row_mark_clause), + &pg_query__row_mark_clause__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "xml_serialize", + 206, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__Node, node_case), + offsetof(PgQuery__Node, xml_serialize), + &pg_query__xml_serialize__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "with_clause", + 207, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__Node, node_case), + offsetof(PgQuery__Node, with_clause), + &pg_query__with_clause__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "infer_clause", + 208, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__Node, node_case), + offsetof(PgQuery__Node, infer_clause), + &pg_query__infer_clause__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "on_conflict_clause", + 209, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__Node, node_case), + offsetof(PgQuery__Node, on_conflict_clause), + &pg_query__on_conflict_clause__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "common_table_expr", + 210, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__Node, node_case), + offsetof(PgQuery__Node, common_table_expr), + &pg_query__common_table_expr__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "role_spec", + 211, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__Node, node_case), + offsetof(PgQuery__Node, role_spec), + &pg_query__role_spec__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "trigger_transition", + 212, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__Node, node_case), + offsetof(PgQuery__Node, trigger_transition), + &pg_query__trigger_transition__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "partition_elem", + 213, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__Node, node_case), + offsetof(PgQuery__Node, partition_elem), + &pg_query__partition_elem__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "partition_spec", + 214, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__Node, node_case), + offsetof(PgQuery__Node, partition_spec), + &pg_query__partition_spec__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "partition_bound_spec", + 215, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__Node, node_case), + offsetof(PgQuery__Node, partition_bound_spec), + &pg_query__partition_bound_spec__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "partition_range_datum", + 216, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__Node, node_case), + offsetof(PgQuery__Node, partition_range_datum), + &pg_query__partition_range_datum__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "partition_cmd", + 217, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__Node, node_case), + offsetof(PgQuery__Node, partition_cmd), + &pg_query__partition_cmd__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "vacuum_relation", + 218, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__Node, node_case), + offsetof(PgQuery__Node, vacuum_relation), + &pg_query__vacuum_relation__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "inline_code_block", + 219, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__Node, node_case), + offsetof(PgQuery__Node, inline_code_block), + &pg_query__inline_code_block__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "call_context", + 220, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__Node, node_case), + offsetof(PgQuery__Node, call_context), + &pg_query__call_context__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "integer", + 221, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__Node, node_case), + offsetof(PgQuery__Node, integer), + &pg_query__integer__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "float", + 222, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__Node, node_case), + offsetof(PgQuery__Node, float_), + &pg_query__float__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "string", + 223, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__Node, node_case), + offsetof(PgQuery__Node, string), + &pg_query__string__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "bit_string", + 224, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__Node, node_case), + offsetof(PgQuery__Node, bit_string), + &pg_query__bit_string__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "null", + 225, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__Node, node_case), + offsetof(PgQuery__Node, null), + &pg_query__null__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "list", + 226, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__Node, node_case), + offsetof(PgQuery__Node, list), + &pg_query__list__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "int_list", + 227, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__Node, node_case), + offsetof(PgQuery__Node, int_list), + &pg_query__int_list__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "oid_list", + 228, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__Node, node_case), + offsetof(PgQuery__Node, oid_list), + &pg_query__oid_list__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned pg_query__node__field_indices_by_name[] = { + 174, /* field[174] = a_array_expr */ + 169, /* field[169] = a_const */ + 166, /* field[166] = a_expr */ + 172, /* field[172] = a_indices */ + 173, /* field[173] = a_indirection */ + 171, /* field[171] = a_star */ + 199, /* field[199] = access_priv */ + 6, /* field[6] = aggref */ + 0, /* field[0] = alias */ + 163, /* field[163] = alter_collation_stmt */ + 107, /* field[107] = alter_database_set_stmt */ + 106, /* field[106] = alter_database_stmt */ + 63, /* field[63] = alter_default_privileges_stmt */ + 59, /* field[59] = alter_domain_stmt */ + 130, /* field[130] = alter_enum_stmt */ + 149, /* field[149] = alter_event_trig_stmt */ + 147, /* field[147] = alter_extension_contents_stmt */ + 146, /* field[146] = alter_extension_stmt */ + 134, /* field[134] = alter_fdw_stmt */ + 136, /* field[136] = alter_foreign_server_stmt */ + 75, /* field[75] = alter_function_stmt */ + 120, /* field[120] = alter_object_depends_stmt */ + 121, /* field[121] = alter_object_schema_stmt */ + 113, /* field[113] = alter_op_family_stmt */ + 123, /* field[123] = alter_operator_stmt */ + 122, /* field[122] = alter_owner_stmt */ + 154, /* field[154] = alter_policy_stmt */ + 158, /* field[158] = alter_publication_stmt */ + 108, /* field[108] = alter_role_set_stmt */ + 99, /* field[99] = alter_role_stmt */ + 92, /* field[92] = alter_seq_stmt */ + 165, /* field[165] = alter_stats_stmt */ + 160, /* field[160] = alter_subscription_stmt */ + 152, /* field[152] = alter_system_stmt */ + 58, /* field[58] = alter_table_cmd */ + 141, /* field[141] = alter_table_move_all_stmt */ + 140, /* field[140] = alter_table_space_options_stmt */ + 57, /* field[57] = alter_table_stmt */ + 132, /* field[132] = alter_tsconfiguration_stmt */ + 131, /* field[131] = alter_tsdictionary_stmt */ + 124, /* field[124] = alter_type_stmt */ + 138, /* field[138] = alter_user_mapping_stmt */ + 19, /* field[19] = alternative_sub_plan */ + 24, /* field[24] = array_coerce_expr */ + 30, /* field[30] = array_expr */ + 223, /* field[223] = bit_string */ + 16, /* field[16] = bool_expr */ + 38, /* field[38] = boolean_test */ + 219, /* field[219] = call_context */ + 164, /* field[164] = call_stmt */ + 27, /* field[27] = case_expr */ + 29, /* field[29] = case_test_expr */ + 28, /* field[28] = case_when */ + 104, /* field[104] = check_point_stmt */ + 64, /* field[64] = close_portal_stmt */ + 65, /* field[65] = cluster_stmt */ + 33, /* field[33] = coalesce_expr */ + 39, /* field[39] = coerce_to_domain */ + 40, /* field[40] = coerce_to_domain_value */ + 23, /* field[23] = coerce_via_io */ + 178, /* field[178] = collate_clause */ + 26, /* field[26] = collate_expr */ + 187, /* field[187] = column_def */ + 167, /* field[167] = column_ref */ + 71, /* field[71] = comment_stmt */ + 209, /* field[209] = common_table_expr */ + 127, /* field[127] = composite_type_stmt */ + 189, /* field[189] = constraint */ + 102, /* field[102] = constraints_set_stmt */ + 25, /* field[25] = convert_rowtype_expr */ + 66, /* field[66] = copy_stmt */ + 156, /* field[156] = create_am_stmt */ + 110, /* field[110] = create_cast_stmt */ + 109, /* field[109] = create_conversion_stmt */ + 85, /* field[85] = create_domain_stmt */ + 128, /* field[128] = create_enum_stmt */ + 148, /* field[148] = create_event_trig_stmt */ + 145, /* field[145] = create_extension_stmt */ + 133, /* field[133] = create_fdw_stmt */ + 135, /* field[135] = create_foreign_server_stmt */ + 143, /* field[143] = create_foreign_table_stmt */ + 74, /* field[74] = create_function_stmt */ + 200, /* field[200] = create_op_class_item */ + 111, /* field[111] = create_op_class_stmt */ + 112, /* field[112] = create_op_family_stmt */ + 97, /* field[97] = create_plang_stmt */ + 153, /* field[153] = create_policy_stmt */ + 157, /* field[157] = create_publication_stmt */ + 129, /* field[129] = create_range_stmt */ + 98, /* field[98] = create_role_stmt */ + 105, /* field[105] = create_schema_stmt */ + 91, /* field[91] = create_seq_stmt */ + 162, /* field[162] = create_stats_stmt */ + 67, /* field[67] = create_stmt */ + 159, /* field[159] = create_subscription_stmt */ + 90, /* field[90] = create_table_as_stmt */ + 118, /* field[118] = create_table_space_stmt */ + 155, /* field[155] = create_transform_stmt */ + 96, /* field[96] = create_trig_stmt */ + 137, /* field[137] = create_user_mapping_stmt */ + 86, /* field[86] = createdb_stmt */ + 42, /* field[42] = current_of_expr */ + 116, /* field[116] = deallocate_stmt */ + 117, /* field[117] = declare_cursor_stmt */ + 190, /* field[190] = def_elem */ + 68, /* field[68] = define_stmt */ + 54, /* field[54] = delete_stmt */ + 95, /* field[95] = discard_stmt */ + 13, /* field[13] = distinct_expr */ + 76, /* field[76] = do_stmt */ + 125, /* field[125] = drop_owned_stmt */ + 100, /* field[100] = drop_role_stmt */ + 69, /* field[69] = drop_stmt */ + 161, /* field[161] = drop_subscription_stmt */ + 119, /* field[119] = drop_table_space_stmt */ + 139, /* field[139] = drop_user_mapping_stmt */ + 87, /* field[87] = dropdb_stmt */ + 115, /* field[115] = execute_stmt */ + 89, /* field[89] = explain_stmt */ + 3, /* field[3] = expr */ + 72, /* field[72] = fetch_stmt */ + 20, /* field[20] = field_select */ + 21, /* field[21] = field_store */ + 221, /* field[221] = float */ + 48, /* field[48] = from_expr */ + 170, /* field[170] = func_call */ + 10, /* field[10] = func_expr */ + 202, /* field[202] = function_parameter */ + 62, /* field[62] = grant_role_stmt */ + 61, /* field[61] = grant_stmt */ + 7, /* field[7] = grouping_func */ + 196, /* field[196] = grouping_set */ + 144, /* field[144] = import_foreign_schema_stmt */ + 188, /* field[188] = index_elem */ + 73, /* field[73] = index_stmt */ + 207, /* field[207] = infer_clause */ + 44, /* field[44] = inference_elem */ + 218, /* field[218] = inline_code_block */ + 53, /* field[53] = insert_stmt */ + 226, /* field[226] = int_list */ + 220, /* field[220] = integer */ + 50, /* field[50] = into_clause */ + 47, /* field[47] = join_expr */ + 225, /* field[225] = list */ + 80, /* field[80] = listen_stmt */ + 84, /* field[84] = load_stmt */ + 101, /* field[101] = lock_stmt */ + 203, /* field[203] = locking_clause */ + 34, /* field[34] = min_max_expr */ + 176, /* field[176] = multi_assign_ref */ + 11, /* field[11] = named_arg_expr */ + 43, /* field[43] = next_value_expr */ + 79, /* field[79] = notify_stmt */ + 224, /* field[224] = null */ + 14, /* field[14] = null_if_expr */ + 37, /* field[37] = null_test */ + 198, /* field[198] = object_with_args */ + 227, /* field[227] = oid_list */ + 208, /* field[208] = on_conflict_clause */ + 49, /* field[49] = on_conflict_expr */ + 12, /* field[12] = op_expr */ + 5, /* field[5] = param */ + 168, /* field[168] = param_ref */ + 214, /* field[214] = partition_bound_spec */ + 216, /* field[216] = partition_cmd */ + 212, /* field[212] = partition_elem */ + 215, /* field[215] = partition_range_datum */ + 213, /* field[213] = partition_spec */ + 114, /* field[114] = prepare_stmt */ + 52, /* field[52] = query */ + 182, /* field[182] = range_function */ + 181, /* field[181] = range_subselect */ + 184, /* field[184] = range_table_func */ + 185, /* field[185] = range_table_func_col */ + 183, /* field[183] = range_table_sample */ + 191, /* field[191] = range_tbl_entry */ + 192, /* field[192] = range_tbl_function */ + 46, /* field[46] = range_tbl_ref */ + 1, /* field[1] = range_var */ + 51, /* field[51] = raw_stmt */ + 126, /* field[126] = reassign_owned_stmt */ + 150, /* field[150] = refresh_mat_view_stmt */ + 103, /* field[103] = reindex_stmt */ + 22, /* field[22] = relabel_type */ + 77, /* field[77] = rename_stmt */ + 151, /* field[151] = replica_identity_stmt */ + 175, /* field[175] = res_target */ + 210, /* field[210] = role_spec */ + 32, /* field[32] = row_compare_expr */ + 31, /* field[31] = row_expr */ + 204, /* field[204] = row_mark_clause */ + 78, /* field[78] = rule_stmt */ + 15, /* field[15] = scalar_array_op_expr */ + 142, /* field[142] = sec_label_stmt */ + 56, /* field[56] = select_stmt */ + 60, /* field[60] = set_operation_stmt */ + 41, /* field[41] = set_to_default */ + 179, /* field[179] = sort_by */ + 195, /* field[195] = sort_group_clause */ + 35, /* field[35] = sqlvalue_function */ + 222, /* field[222] = string */ + 17, /* field[17] = sub_link */ + 18, /* field[18] = sub_plan */ + 9, /* field[9] = subscripting_ref */ + 2, /* field[2] = table_func */ + 201, /* field[201] = table_like_clause */ + 193, /* field[193] = table_sample_clause */ + 45, /* field[45] = target_entry */ + 82, /* field[82] = transaction_stmt */ + 211, /* field[211] = trigger_transition */ + 70, /* field[70] = truncate_stmt */ + 177, /* field[177] = type_cast */ + 186, /* field[186] = type_name */ + 81, /* field[81] = unlisten_stmt */ + 55, /* field[55] = update_stmt */ + 217, /* field[217] = vacuum_relation */ + 88, /* field[88] = vacuum_stmt */ + 4, /* field[4] = var */ + 93, /* field[93] = variable_set_stmt */ + 94, /* field[94] = variable_show_stmt */ + 83, /* field[83] = view_stmt */ + 197, /* field[197] = window_clause */ + 180, /* field[180] = window_def */ + 8, /* field[8] = window_func */ + 194, /* field[194] = with_check_option */ + 206, /* field[206] = with_clause */ + 36, /* field[36] = xml_expr */ + 205, /* field[205] = xml_serialize */ +}; +static const ProtobufCIntRange pg_query__node__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 228 } +}; +const ProtobufCMessageDescriptor pg_query__node__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "pg_query.Node", + "Node", + "PgQuery__Node", + "pg_query", + sizeof(PgQuery__Node), + 228, + pg_query__node__field_descriptors, + pg_query__node__field_indices_by_name, + 1, pg_query__node__number_ranges, + (ProtobufCMessageInit) pg_query__node__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor pg_query__integer__field_descriptors[1] = +{ + { + "ival", + 1, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(PgQuery__Integer, ival), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned pg_query__integer__field_indices_by_name[] = { + 0, /* field[0] = ival */ +}; +static const ProtobufCIntRange pg_query__integer__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 1 } +}; +const ProtobufCMessageDescriptor pg_query__integer__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "pg_query.Integer", + "Integer", + "PgQuery__Integer", + "pg_query", + sizeof(PgQuery__Integer), + 1, + pg_query__integer__field_descriptors, + pg_query__integer__field_indices_by_name, + 1, pg_query__integer__number_ranges, + (ProtobufCMessageInit) pg_query__integer__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor pg_query__float__field_descriptors[1] = +{ + { + "str", + 1, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_STRING, + 0, /* quantifier_offset */ + offsetof(PgQuery__Float, str), + NULL, + &protobuf_c_empty_string, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned pg_query__float__field_indices_by_name[] = { + 0, /* field[0] = str */ +}; +static const ProtobufCIntRange pg_query__float__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 1 } +}; +const ProtobufCMessageDescriptor pg_query__float__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "pg_query.Float", + "Float", + "PgQuery__Float", + "pg_query", + sizeof(PgQuery__Float), + 1, + pg_query__float__field_descriptors, + pg_query__float__field_indices_by_name, + 1, pg_query__float__number_ranges, + (ProtobufCMessageInit) pg_query__float__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor pg_query__string__field_descriptors[1] = +{ + { + "str", + 1, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_STRING, + 0, /* quantifier_offset */ + offsetof(PgQuery__String, str), + NULL, + &protobuf_c_empty_string, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned pg_query__string__field_indices_by_name[] = { + 0, /* field[0] = str */ +}; +static const ProtobufCIntRange pg_query__string__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 1 } +}; +const ProtobufCMessageDescriptor pg_query__string__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "pg_query.String", + "String", + "PgQuery__String", + "pg_query", + sizeof(PgQuery__String), + 1, + pg_query__string__field_descriptors, + pg_query__string__field_indices_by_name, + 1, pg_query__string__number_ranges, + (ProtobufCMessageInit) pg_query__string__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor pg_query__bit_string__field_descriptors[1] = +{ + { + "str", + 1, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_STRING, + 0, /* quantifier_offset */ + offsetof(PgQuery__BitString, str), + NULL, + &protobuf_c_empty_string, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned pg_query__bit_string__field_indices_by_name[] = { + 0, /* field[0] = str */ +}; +static const ProtobufCIntRange pg_query__bit_string__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 1 } +}; +const ProtobufCMessageDescriptor pg_query__bit_string__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "pg_query.BitString", + "BitString", + "PgQuery__BitString", + "pg_query", + sizeof(PgQuery__BitString), + 1, + pg_query__bit_string__field_descriptors, + pg_query__bit_string__field_indices_by_name, + 1, pg_query__bit_string__number_ranges, + (ProtobufCMessageInit) pg_query__bit_string__init, + NULL,NULL,NULL /* reserved[123] */ +}; +#define pg_query__null__field_descriptors NULL +#define pg_query__null__field_indices_by_name NULL +#define pg_query__null__number_ranges NULL +const ProtobufCMessageDescriptor pg_query__null__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "pg_query.Null", + "Null", + "PgQuery__Null", + "pg_query", + sizeof(PgQuery__Null), + 0, + pg_query__null__field_descriptors, + pg_query__null__field_indices_by_name, + 0, pg_query__null__number_ranges, + (ProtobufCMessageInit) pg_query__null__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor pg_query__list__field_descriptors[1] = +{ + { + "items", + 1, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__List, n_items), + offsetof(PgQuery__List, items), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned pg_query__list__field_indices_by_name[] = { + 0, /* field[0] = items */ +}; +static const ProtobufCIntRange pg_query__list__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 1 } +}; +const ProtobufCMessageDescriptor pg_query__list__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "pg_query.List", + "List", + "PgQuery__List", + "pg_query", + sizeof(PgQuery__List), + 1, + pg_query__list__field_descriptors, + pg_query__list__field_indices_by_name, + 1, pg_query__list__number_ranges, + (ProtobufCMessageInit) pg_query__list__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor pg_query__oid_list__field_descriptors[1] = +{ + { + "items", + 1, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__OidList, n_items), + offsetof(PgQuery__OidList, items), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned pg_query__oid_list__field_indices_by_name[] = { + 0, /* field[0] = items */ +}; +static const ProtobufCIntRange pg_query__oid_list__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 1 } +}; +const ProtobufCMessageDescriptor pg_query__oid_list__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "pg_query.OidList", + "OidList", + "PgQuery__OidList", + "pg_query", + sizeof(PgQuery__OidList), + 1, + pg_query__oid_list__field_descriptors, + pg_query__oid_list__field_indices_by_name, + 1, pg_query__oid_list__number_ranges, + (ProtobufCMessageInit) pg_query__oid_list__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor pg_query__int_list__field_descriptors[1] = +{ + { + "items", + 1, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__IntList, n_items), + offsetof(PgQuery__IntList, items), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned pg_query__int_list__field_indices_by_name[] = { + 0, /* field[0] = items */ +}; +static const ProtobufCIntRange pg_query__int_list__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 1 } +}; +const ProtobufCMessageDescriptor pg_query__int_list__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "pg_query.IntList", + "IntList", + "PgQuery__IntList", + "pg_query", + sizeof(PgQuery__IntList), + 1, + pg_query__int_list__field_descriptors, + pg_query__int_list__field_indices_by_name, + 1, pg_query__int_list__number_ranges, + (ProtobufCMessageInit) pg_query__int_list__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor pg_query__alias__field_descriptors[2] = +{ + { + "aliasname", + 1, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_STRING, + 0, /* quantifier_offset */ + offsetof(PgQuery__Alias, aliasname), + NULL, + &protobuf_c_empty_string, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "colnames", + 2, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__Alias, n_colnames), + offsetof(PgQuery__Alias, colnames), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned pg_query__alias__field_indices_by_name[] = { + 0, /* field[0] = aliasname */ + 1, /* field[1] = colnames */ +}; +static const ProtobufCIntRange pg_query__alias__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 2 } +}; +const ProtobufCMessageDescriptor pg_query__alias__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "pg_query.Alias", + "Alias", + "PgQuery__Alias", + "pg_query", + sizeof(PgQuery__Alias), + 2, + pg_query__alias__field_descriptors, + pg_query__alias__field_indices_by_name, + 1, pg_query__alias__number_ranges, + (ProtobufCMessageInit) pg_query__alias__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor pg_query__range_var__field_descriptors[7] = +{ + { + "catalogname", + 1, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_STRING, + 0, /* quantifier_offset */ + offsetof(PgQuery__RangeVar, catalogname), + NULL, + &protobuf_c_empty_string, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "schemaname", + 2, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_STRING, + 0, /* quantifier_offset */ + offsetof(PgQuery__RangeVar, schemaname), + NULL, + &protobuf_c_empty_string, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "relname", + 3, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_STRING, + 0, /* quantifier_offset */ + offsetof(PgQuery__RangeVar, relname), + NULL, + &protobuf_c_empty_string, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "inh", + 4, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_BOOL, + 0, /* quantifier_offset */ + offsetof(PgQuery__RangeVar, inh), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "relpersistence", + 5, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_STRING, + 0, /* quantifier_offset */ + offsetof(PgQuery__RangeVar, relpersistence), + NULL, + &protobuf_c_empty_string, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "alias", + 6, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(PgQuery__RangeVar, alias), + &pg_query__alias__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "location", + 7, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(PgQuery__RangeVar, location), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned pg_query__range_var__field_indices_by_name[] = { + 5, /* field[5] = alias */ + 0, /* field[0] = catalogname */ + 3, /* field[3] = inh */ + 6, /* field[6] = location */ + 2, /* field[2] = relname */ + 4, /* field[4] = relpersistence */ + 1, /* field[1] = schemaname */ +}; +static const ProtobufCIntRange pg_query__range_var__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 7 } +}; +const ProtobufCMessageDescriptor pg_query__range_var__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "pg_query.RangeVar", + "RangeVar", + "PgQuery__RangeVar", + "pg_query", + sizeof(PgQuery__RangeVar), + 7, + pg_query__range_var__field_descriptors, + pg_query__range_var__field_indices_by_name, + 1, pg_query__range_var__number_ranges, + (ProtobufCMessageInit) pg_query__range_var__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor pg_query__table_func__field_descriptors[13] = +{ + { + "ns_uris", + 1, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__TableFunc, n_ns_uris), + offsetof(PgQuery__TableFunc, ns_uris), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "ns_names", + 2, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__TableFunc, n_ns_names), + offsetof(PgQuery__TableFunc, ns_names), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "docexpr", + 3, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(PgQuery__TableFunc, docexpr), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "rowexpr", + 4, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(PgQuery__TableFunc, rowexpr), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "colnames", + 5, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__TableFunc, n_colnames), + offsetof(PgQuery__TableFunc, colnames), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "coltypes", + 6, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__TableFunc, n_coltypes), + offsetof(PgQuery__TableFunc, coltypes), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "coltypmods", + 7, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__TableFunc, n_coltypmods), + offsetof(PgQuery__TableFunc, coltypmods), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "colcollations", + 8, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__TableFunc, n_colcollations), + offsetof(PgQuery__TableFunc, colcollations), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "colexprs", + 9, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__TableFunc, n_colexprs), + offsetof(PgQuery__TableFunc, colexprs), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "coldefexprs", + 10, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__TableFunc, n_coldefexprs), + offsetof(PgQuery__TableFunc, coldefexprs), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "notnulls", + 11, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_UINT64, + offsetof(PgQuery__TableFunc, n_notnulls), + offsetof(PgQuery__TableFunc, notnulls), + NULL, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_PACKED, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "ordinalitycol", + 12, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(PgQuery__TableFunc, ordinalitycol), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "location", + 13, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(PgQuery__TableFunc, location), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned pg_query__table_func__field_indices_by_name[] = { + 7, /* field[7] = colcollations */ + 9, /* field[9] = coldefexprs */ + 8, /* field[8] = colexprs */ + 4, /* field[4] = colnames */ + 5, /* field[5] = coltypes */ + 6, /* field[6] = coltypmods */ + 2, /* field[2] = docexpr */ + 12, /* field[12] = location */ + 10, /* field[10] = notnulls */ + 1, /* field[1] = ns_names */ + 0, /* field[0] = ns_uris */ + 11, /* field[11] = ordinalitycol */ + 3, /* field[3] = rowexpr */ +}; +static const ProtobufCIntRange pg_query__table_func__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 13 } +}; +const ProtobufCMessageDescriptor pg_query__table_func__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "pg_query.TableFunc", + "TableFunc", + "PgQuery__TableFunc", + "pg_query", + sizeof(PgQuery__TableFunc), + 13, + pg_query__table_func__field_descriptors, + pg_query__table_func__field_indices_by_name, + 1, pg_query__table_func__number_ranges, + (ProtobufCMessageInit) pg_query__table_func__init, + NULL,NULL,NULL /* reserved[123] */ +}; +#define pg_query__expr__field_descriptors NULL +#define pg_query__expr__field_indices_by_name NULL +#define pg_query__expr__number_ranges NULL +const ProtobufCMessageDescriptor pg_query__expr__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "pg_query.Expr", + "Expr", + "PgQuery__Expr", + "pg_query", + sizeof(PgQuery__Expr), + 0, + pg_query__expr__field_descriptors, + pg_query__expr__field_indices_by_name, + 0, pg_query__expr__number_ranges, + (ProtobufCMessageInit) pg_query__expr__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor pg_query__var__field_descriptors[10] = +{ + { + "xpr", + 1, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(PgQuery__Var, xpr), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "varno", + 2, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT32, + 0, /* quantifier_offset */ + offsetof(PgQuery__Var, varno), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "varattno", + 3, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(PgQuery__Var, varattno), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "vartype", + 4, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT32, + 0, /* quantifier_offset */ + offsetof(PgQuery__Var, vartype), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "vartypmod", + 5, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(PgQuery__Var, vartypmod), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "varcollid", + 6, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT32, + 0, /* quantifier_offset */ + offsetof(PgQuery__Var, varcollid), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "varlevelsup", + 7, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT32, + 0, /* quantifier_offset */ + offsetof(PgQuery__Var, varlevelsup), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "varnosyn", + 8, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT32, + 0, /* quantifier_offset */ + offsetof(PgQuery__Var, varnosyn), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "varattnosyn", + 9, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(PgQuery__Var, varattnosyn), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "location", + 10, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(PgQuery__Var, location), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned pg_query__var__field_indices_by_name[] = { + 9, /* field[9] = location */ + 2, /* field[2] = varattno */ + 8, /* field[8] = varattnosyn */ + 5, /* field[5] = varcollid */ + 6, /* field[6] = varlevelsup */ + 1, /* field[1] = varno */ + 7, /* field[7] = varnosyn */ + 3, /* field[3] = vartype */ + 4, /* field[4] = vartypmod */ + 0, /* field[0] = xpr */ +}; +static const ProtobufCIntRange pg_query__var__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 10 } +}; +const ProtobufCMessageDescriptor pg_query__var__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "pg_query.Var", + "Var", + "PgQuery__Var", + "pg_query", + sizeof(PgQuery__Var), + 10, + pg_query__var__field_descriptors, + pg_query__var__field_indices_by_name, + 1, pg_query__var__number_ranges, + (ProtobufCMessageInit) pg_query__var__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor pg_query__param__field_descriptors[7] = +{ + { + "xpr", + 1, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(PgQuery__Param, xpr), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "paramkind", + 2, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_ENUM, + 0, /* quantifier_offset */ + offsetof(PgQuery__Param, paramkind), + &pg_query__param_kind__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "paramid", + 3, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(PgQuery__Param, paramid), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "paramtype", + 4, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT32, + 0, /* quantifier_offset */ + offsetof(PgQuery__Param, paramtype), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "paramtypmod", + 5, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(PgQuery__Param, paramtypmod), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "paramcollid", + 6, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT32, + 0, /* quantifier_offset */ + offsetof(PgQuery__Param, paramcollid), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "location", + 7, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(PgQuery__Param, location), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned pg_query__param__field_indices_by_name[] = { + 6, /* field[6] = location */ + 5, /* field[5] = paramcollid */ + 2, /* field[2] = paramid */ + 1, /* field[1] = paramkind */ + 3, /* field[3] = paramtype */ + 4, /* field[4] = paramtypmod */ + 0, /* field[0] = xpr */ +}; +static const ProtobufCIntRange pg_query__param__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 7 } +}; +const ProtobufCMessageDescriptor pg_query__param__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "pg_query.Param", + "Param", + "PgQuery__Param", + "pg_query", + sizeof(PgQuery__Param), + 7, + pg_query__param__field_descriptors, + pg_query__param__field_indices_by_name, + 1, pg_query__param__number_ranges, + (ProtobufCMessageInit) pg_query__param__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor pg_query__aggref__field_descriptors[18] = +{ + { + "xpr", + 1, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(PgQuery__Aggref, xpr), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "aggfnoid", + 2, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT32, + 0, /* quantifier_offset */ + offsetof(PgQuery__Aggref, aggfnoid), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "aggtype", + 3, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT32, + 0, /* quantifier_offset */ + offsetof(PgQuery__Aggref, aggtype), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "aggcollid", + 4, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT32, + 0, /* quantifier_offset */ + offsetof(PgQuery__Aggref, aggcollid), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "inputcollid", + 5, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT32, + 0, /* quantifier_offset */ + offsetof(PgQuery__Aggref, inputcollid), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "aggtranstype", + 6, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT32, + 0, /* quantifier_offset */ + offsetof(PgQuery__Aggref, aggtranstype), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "aggargtypes", + 7, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__Aggref, n_aggargtypes), + offsetof(PgQuery__Aggref, aggargtypes), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "aggdirectargs", + 8, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__Aggref, n_aggdirectargs), + offsetof(PgQuery__Aggref, aggdirectargs), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "args", + 9, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__Aggref, n_args), + offsetof(PgQuery__Aggref, args), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "aggorder", + 10, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__Aggref, n_aggorder), + offsetof(PgQuery__Aggref, aggorder), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "aggdistinct", + 11, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__Aggref, n_aggdistinct), + offsetof(PgQuery__Aggref, aggdistinct), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "aggfilter", + 12, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(PgQuery__Aggref, aggfilter), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "aggstar", + 13, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_BOOL, + 0, /* quantifier_offset */ + offsetof(PgQuery__Aggref, aggstar), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "aggvariadic", + 14, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_BOOL, + 0, /* quantifier_offset */ + offsetof(PgQuery__Aggref, aggvariadic), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "aggkind", + 15, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_STRING, + 0, /* quantifier_offset */ + offsetof(PgQuery__Aggref, aggkind), + NULL, + &protobuf_c_empty_string, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "agglevelsup", + 16, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT32, + 0, /* quantifier_offset */ + offsetof(PgQuery__Aggref, agglevelsup), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "aggsplit", + 17, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_ENUM, + 0, /* quantifier_offset */ + offsetof(PgQuery__Aggref, aggsplit), + &pg_query__agg_split__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "location", + 18, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(PgQuery__Aggref, location), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned pg_query__aggref__field_indices_by_name[] = { + 6, /* field[6] = aggargtypes */ + 3, /* field[3] = aggcollid */ + 7, /* field[7] = aggdirectargs */ + 10, /* field[10] = aggdistinct */ + 11, /* field[11] = aggfilter */ + 1, /* field[1] = aggfnoid */ + 14, /* field[14] = aggkind */ + 15, /* field[15] = agglevelsup */ + 9, /* field[9] = aggorder */ + 16, /* field[16] = aggsplit */ + 12, /* field[12] = aggstar */ + 5, /* field[5] = aggtranstype */ + 2, /* field[2] = aggtype */ + 13, /* field[13] = aggvariadic */ + 8, /* field[8] = args */ + 4, /* field[4] = inputcollid */ + 17, /* field[17] = location */ + 0, /* field[0] = xpr */ +}; +static const ProtobufCIntRange pg_query__aggref__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 18 } +}; +const ProtobufCMessageDescriptor pg_query__aggref__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "pg_query.Aggref", + "Aggref", + "PgQuery__Aggref", + "pg_query", + sizeof(PgQuery__Aggref), + 18, + pg_query__aggref__field_descriptors, + pg_query__aggref__field_indices_by_name, + 1, pg_query__aggref__number_ranges, + (ProtobufCMessageInit) pg_query__aggref__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor pg_query__grouping_func__field_descriptors[6] = +{ + { + "xpr", + 1, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(PgQuery__GroupingFunc, xpr), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "args", + 2, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__GroupingFunc, n_args), + offsetof(PgQuery__GroupingFunc, args), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "refs", + 3, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__GroupingFunc, n_refs), + offsetof(PgQuery__GroupingFunc, refs), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "cols", + 4, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__GroupingFunc, n_cols), + offsetof(PgQuery__GroupingFunc, cols), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "agglevelsup", + 5, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT32, + 0, /* quantifier_offset */ + offsetof(PgQuery__GroupingFunc, agglevelsup), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "location", + 6, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(PgQuery__GroupingFunc, location), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned pg_query__grouping_func__field_indices_by_name[] = { + 4, /* field[4] = agglevelsup */ + 1, /* field[1] = args */ + 3, /* field[3] = cols */ + 5, /* field[5] = location */ + 2, /* field[2] = refs */ + 0, /* field[0] = xpr */ +}; +static const ProtobufCIntRange pg_query__grouping_func__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 6 } +}; +const ProtobufCMessageDescriptor pg_query__grouping_func__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "pg_query.GroupingFunc", + "GroupingFunc", + "PgQuery__GroupingFunc", + "pg_query", + sizeof(PgQuery__GroupingFunc), + 6, + pg_query__grouping_func__field_descriptors, + pg_query__grouping_func__field_indices_by_name, + 1, pg_query__grouping_func__number_ranges, + (ProtobufCMessageInit) pg_query__grouping_func__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor pg_query__window_func__field_descriptors[11] = +{ + { + "xpr", + 1, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(PgQuery__WindowFunc, xpr), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "winfnoid", + 2, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT32, + 0, /* quantifier_offset */ + offsetof(PgQuery__WindowFunc, winfnoid), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "wintype", + 3, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT32, + 0, /* quantifier_offset */ + offsetof(PgQuery__WindowFunc, wintype), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "wincollid", + 4, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT32, + 0, /* quantifier_offset */ + offsetof(PgQuery__WindowFunc, wincollid), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "inputcollid", + 5, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT32, + 0, /* quantifier_offset */ + offsetof(PgQuery__WindowFunc, inputcollid), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "args", + 6, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__WindowFunc, n_args), + offsetof(PgQuery__WindowFunc, args), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "aggfilter", + 7, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(PgQuery__WindowFunc, aggfilter), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "winref", + 8, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT32, + 0, /* quantifier_offset */ + offsetof(PgQuery__WindowFunc, winref), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "winstar", + 9, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_BOOL, + 0, /* quantifier_offset */ + offsetof(PgQuery__WindowFunc, winstar), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "winagg", + 10, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_BOOL, + 0, /* quantifier_offset */ + offsetof(PgQuery__WindowFunc, winagg), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "location", + 11, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(PgQuery__WindowFunc, location), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned pg_query__window_func__field_indices_by_name[] = { + 6, /* field[6] = aggfilter */ + 5, /* field[5] = args */ + 4, /* field[4] = inputcollid */ + 10, /* field[10] = location */ + 9, /* field[9] = winagg */ + 3, /* field[3] = wincollid */ + 1, /* field[1] = winfnoid */ + 7, /* field[7] = winref */ + 8, /* field[8] = winstar */ + 2, /* field[2] = wintype */ + 0, /* field[0] = xpr */ +}; +static const ProtobufCIntRange pg_query__window_func__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 11 } +}; +const ProtobufCMessageDescriptor pg_query__window_func__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "pg_query.WindowFunc", + "WindowFunc", + "PgQuery__WindowFunc", + "pg_query", + sizeof(PgQuery__WindowFunc), + 11, + pg_query__window_func__field_descriptors, + pg_query__window_func__field_indices_by_name, + 1, pg_query__window_func__number_ranges, + (ProtobufCMessageInit) pg_query__window_func__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor pg_query__subscripting_ref__field_descriptors[9] = +{ + { + "xpr", + 1, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(PgQuery__SubscriptingRef, xpr), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "refcontainertype", + 2, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT32, + 0, /* quantifier_offset */ + offsetof(PgQuery__SubscriptingRef, refcontainertype), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "refelemtype", + 3, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT32, + 0, /* quantifier_offset */ + offsetof(PgQuery__SubscriptingRef, refelemtype), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "reftypmod", + 4, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(PgQuery__SubscriptingRef, reftypmod), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "refcollid", + 5, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT32, + 0, /* quantifier_offset */ + offsetof(PgQuery__SubscriptingRef, refcollid), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "refupperindexpr", + 6, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__SubscriptingRef, n_refupperindexpr), + offsetof(PgQuery__SubscriptingRef, refupperindexpr), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "reflowerindexpr", + 7, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__SubscriptingRef, n_reflowerindexpr), + offsetof(PgQuery__SubscriptingRef, reflowerindexpr), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "refexpr", + 8, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(PgQuery__SubscriptingRef, refexpr), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "refassgnexpr", + 9, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(PgQuery__SubscriptingRef, refassgnexpr), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned pg_query__subscripting_ref__field_indices_by_name[] = { + 8, /* field[8] = refassgnexpr */ + 4, /* field[4] = refcollid */ + 1, /* field[1] = refcontainertype */ + 2, /* field[2] = refelemtype */ + 7, /* field[7] = refexpr */ + 6, /* field[6] = reflowerindexpr */ + 3, /* field[3] = reftypmod */ + 5, /* field[5] = refupperindexpr */ + 0, /* field[0] = xpr */ +}; +static const ProtobufCIntRange pg_query__subscripting_ref__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 9 } +}; +const ProtobufCMessageDescriptor pg_query__subscripting_ref__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "pg_query.SubscriptingRef", + "SubscriptingRef", + "PgQuery__SubscriptingRef", + "pg_query", + sizeof(PgQuery__SubscriptingRef), + 9, + pg_query__subscripting_ref__field_descriptors, + pg_query__subscripting_ref__field_indices_by_name, + 1, pg_query__subscripting_ref__number_ranges, + (ProtobufCMessageInit) pg_query__subscripting_ref__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor pg_query__func_expr__field_descriptors[10] = +{ + { + "xpr", + 1, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(PgQuery__FuncExpr, xpr), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "funcid", + 2, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT32, + 0, /* quantifier_offset */ + offsetof(PgQuery__FuncExpr, funcid), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "funcresulttype", + 3, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT32, + 0, /* quantifier_offset */ + offsetof(PgQuery__FuncExpr, funcresulttype), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "funcretset", + 4, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_BOOL, + 0, /* quantifier_offset */ + offsetof(PgQuery__FuncExpr, funcretset), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "funcvariadic", + 5, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_BOOL, + 0, /* quantifier_offset */ + offsetof(PgQuery__FuncExpr, funcvariadic), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "funcformat", + 6, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_ENUM, + 0, /* quantifier_offset */ + offsetof(PgQuery__FuncExpr, funcformat), + &pg_query__coercion_form__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "funccollid", + 7, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT32, + 0, /* quantifier_offset */ + offsetof(PgQuery__FuncExpr, funccollid), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "inputcollid", + 8, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT32, + 0, /* quantifier_offset */ + offsetof(PgQuery__FuncExpr, inputcollid), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "args", + 9, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__FuncExpr, n_args), + offsetof(PgQuery__FuncExpr, args), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "location", + 10, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(PgQuery__FuncExpr, location), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned pg_query__func_expr__field_indices_by_name[] = { + 8, /* field[8] = args */ + 6, /* field[6] = funccollid */ + 5, /* field[5] = funcformat */ + 1, /* field[1] = funcid */ + 2, /* field[2] = funcresulttype */ + 3, /* field[3] = funcretset */ + 4, /* field[4] = funcvariadic */ + 7, /* field[7] = inputcollid */ + 9, /* field[9] = location */ + 0, /* field[0] = xpr */ +}; +static const ProtobufCIntRange pg_query__func_expr__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 10 } +}; +const ProtobufCMessageDescriptor pg_query__func_expr__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "pg_query.FuncExpr", + "FuncExpr", + "PgQuery__FuncExpr", + "pg_query", + sizeof(PgQuery__FuncExpr), + 10, + pg_query__func_expr__field_descriptors, + pg_query__func_expr__field_indices_by_name, + 1, pg_query__func_expr__number_ranges, + (ProtobufCMessageInit) pg_query__func_expr__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor pg_query__named_arg_expr__field_descriptors[5] = +{ + { + "xpr", + 1, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(PgQuery__NamedArgExpr, xpr), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "arg", + 2, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(PgQuery__NamedArgExpr, arg), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "name", + 3, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_STRING, + 0, /* quantifier_offset */ + offsetof(PgQuery__NamedArgExpr, name), + NULL, + &protobuf_c_empty_string, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "argnumber", + 4, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(PgQuery__NamedArgExpr, argnumber), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "location", + 5, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(PgQuery__NamedArgExpr, location), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned pg_query__named_arg_expr__field_indices_by_name[] = { + 1, /* field[1] = arg */ + 3, /* field[3] = argnumber */ + 4, /* field[4] = location */ + 2, /* field[2] = name */ + 0, /* field[0] = xpr */ +}; +static const ProtobufCIntRange pg_query__named_arg_expr__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 5 } +}; +const ProtobufCMessageDescriptor pg_query__named_arg_expr__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "pg_query.NamedArgExpr", + "NamedArgExpr", + "PgQuery__NamedArgExpr", + "pg_query", + sizeof(PgQuery__NamedArgExpr), + 5, + pg_query__named_arg_expr__field_descriptors, + pg_query__named_arg_expr__field_indices_by_name, + 1, pg_query__named_arg_expr__number_ranges, + (ProtobufCMessageInit) pg_query__named_arg_expr__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor pg_query__op_expr__field_descriptors[9] = +{ + { + "xpr", + 1, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(PgQuery__OpExpr, xpr), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "opno", + 2, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT32, + 0, /* quantifier_offset */ + offsetof(PgQuery__OpExpr, opno), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "opfuncid", + 3, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT32, + 0, /* quantifier_offset */ + offsetof(PgQuery__OpExpr, opfuncid), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "opresulttype", + 4, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT32, + 0, /* quantifier_offset */ + offsetof(PgQuery__OpExpr, opresulttype), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "opretset", + 5, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_BOOL, + 0, /* quantifier_offset */ + offsetof(PgQuery__OpExpr, opretset), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "opcollid", + 6, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT32, + 0, /* quantifier_offset */ + offsetof(PgQuery__OpExpr, opcollid), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "inputcollid", + 7, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT32, + 0, /* quantifier_offset */ + offsetof(PgQuery__OpExpr, inputcollid), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "args", + 8, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__OpExpr, n_args), + offsetof(PgQuery__OpExpr, args), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "location", + 9, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(PgQuery__OpExpr, location), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned pg_query__op_expr__field_indices_by_name[] = { + 7, /* field[7] = args */ + 6, /* field[6] = inputcollid */ + 8, /* field[8] = location */ + 5, /* field[5] = opcollid */ + 2, /* field[2] = opfuncid */ + 1, /* field[1] = opno */ + 3, /* field[3] = opresulttype */ + 4, /* field[4] = opretset */ + 0, /* field[0] = xpr */ +}; +static const ProtobufCIntRange pg_query__op_expr__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 9 } +}; +const ProtobufCMessageDescriptor pg_query__op_expr__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "pg_query.OpExpr", + "OpExpr", + "PgQuery__OpExpr", + "pg_query", + sizeof(PgQuery__OpExpr), + 9, + pg_query__op_expr__field_descriptors, + pg_query__op_expr__field_indices_by_name, + 1, pg_query__op_expr__number_ranges, + (ProtobufCMessageInit) pg_query__op_expr__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor pg_query__distinct_expr__field_descriptors[9] = +{ + { + "xpr", + 1, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(PgQuery__DistinctExpr, xpr), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "opno", + 2, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT32, + 0, /* quantifier_offset */ + offsetof(PgQuery__DistinctExpr, opno), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "opfuncid", + 3, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT32, + 0, /* quantifier_offset */ + offsetof(PgQuery__DistinctExpr, opfuncid), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "opresulttype", + 4, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT32, + 0, /* quantifier_offset */ + offsetof(PgQuery__DistinctExpr, opresulttype), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "opretset", + 5, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_BOOL, + 0, /* quantifier_offset */ + offsetof(PgQuery__DistinctExpr, opretset), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "opcollid", + 6, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT32, + 0, /* quantifier_offset */ + offsetof(PgQuery__DistinctExpr, opcollid), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "inputcollid", + 7, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT32, + 0, /* quantifier_offset */ + offsetof(PgQuery__DistinctExpr, inputcollid), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "args", + 8, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__DistinctExpr, n_args), + offsetof(PgQuery__DistinctExpr, args), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "location", + 9, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(PgQuery__DistinctExpr, location), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned pg_query__distinct_expr__field_indices_by_name[] = { + 7, /* field[7] = args */ + 6, /* field[6] = inputcollid */ + 8, /* field[8] = location */ + 5, /* field[5] = opcollid */ + 2, /* field[2] = opfuncid */ + 1, /* field[1] = opno */ + 3, /* field[3] = opresulttype */ + 4, /* field[4] = opretset */ + 0, /* field[0] = xpr */ +}; +static const ProtobufCIntRange pg_query__distinct_expr__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 9 } +}; +const ProtobufCMessageDescriptor pg_query__distinct_expr__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "pg_query.DistinctExpr", + "DistinctExpr", + "PgQuery__DistinctExpr", + "pg_query", + sizeof(PgQuery__DistinctExpr), + 9, + pg_query__distinct_expr__field_descriptors, + pg_query__distinct_expr__field_indices_by_name, + 1, pg_query__distinct_expr__number_ranges, + (ProtobufCMessageInit) pg_query__distinct_expr__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor pg_query__null_if_expr__field_descriptors[9] = +{ + { + "xpr", + 1, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(PgQuery__NullIfExpr, xpr), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "opno", + 2, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT32, + 0, /* quantifier_offset */ + offsetof(PgQuery__NullIfExpr, opno), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "opfuncid", + 3, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT32, + 0, /* quantifier_offset */ + offsetof(PgQuery__NullIfExpr, opfuncid), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "opresulttype", + 4, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT32, + 0, /* quantifier_offset */ + offsetof(PgQuery__NullIfExpr, opresulttype), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "opretset", + 5, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_BOOL, + 0, /* quantifier_offset */ + offsetof(PgQuery__NullIfExpr, opretset), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "opcollid", + 6, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT32, + 0, /* quantifier_offset */ + offsetof(PgQuery__NullIfExpr, opcollid), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "inputcollid", + 7, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT32, + 0, /* quantifier_offset */ + offsetof(PgQuery__NullIfExpr, inputcollid), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "args", + 8, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__NullIfExpr, n_args), + offsetof(PgQuery__NullIfExpr, args), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "location", + 9, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(PgQuery__NullIfExpr, location), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned pg_query__null_if_expr__field_indices_by_name[] = { + 7, /* field[7] = args */ + 6, /* field[6] = inputcollid */ + 8, /* field[8] = location */ + 5, /* field[5] = opcollid */ + 2, /* field[2] = opfuncid */ + 1, /* field[1] = opno */ + 3, /* field[3] = opresulttype */ + 4, /* field[4] = opretset */ + 0, /* field[0] = xpr */ +}; +static const ProtobufCIntRange pg_query__null_if_expr__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 9 } +}; +const ProtobufCMessageDescriptor pg_query__null_if_expr__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "pg_query.NullIfExpr", + "NullIfExpr", + "PgQuery__NullIfExpr", + "pg_query", + sizeof(PgQuery__NullIfExpr), + 9, + pg_query__null_if_expr__field_descriptors, + pg_query__null_if_expr__field_indices_by_name, + 1, pg_query__null_if_expr__number_ranges, + (ProtobufCMessageInit) pg_query__null_if_expr__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor pg_query__scalar_array_op_expr__field_descriptors[7] = +{ + { + "xpr", + 1, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(PgQuery__ScalarArrayOpExpr, xpr), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "opno", + 2, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT32, + 0, /* quantifier_offset */ + offsetof(PgQuery__ScalarArrayOpExpr, opno), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "opfuncid", + 3, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT32, + 0, /* quantifier_offset */ + offsetof(PgQuery__ScalarArrayOpExpr, opfuncid), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "use_or", + 4, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_BOOL, + 0, /* quantifier_offset */ + offsetof(PgQuery__ScalarArrayOpExpr, use_or), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "inputcollid", + 5, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT32, + 0, /* quantifier_offset */ + offsetof(PgQuery__ScalarArrayOpExpr, inputcollid), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "args", + 6, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__ScalarArrayOpExpr, n_args), + offsetof(PgQuery__ScalarArrayOpExpr, args), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "location", + 7, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(PgQuery__ScalarArrayOpExpr, location), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned pg_query__scalar_array_op_expr__field_indices_by_name[] = { + 5, /* field[5] = args */ + 4, /* field[4] = inputcollid */ + 6, /* field[6] = location */ + 2, /* field[2] = opfuncid */ + 1, /* field[1] = opno */ + 3, /* field[3] = use_or */ + 0, /* field[0] = xpr */ +}; +static const ProtobufCIntRange pg_query__scalar_array_op_expr__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 7 } +}; +const ProtobufCMessageDescriptor pg_query__scalar_array_op_expr__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "pg_query.ScalarArrayOpExpr", + "ScalarArrayOpExpr", + "PgQuery__ScalarArrayOpExpr", + "pg_query", + sizeof(PgQuery__ScalarArrayOpExpr), + 7, + pg_query__scalar_array_op_expr__field_descriptors, + pg_query__scalar_array_op_expr__field_indices_by_name, + 1, pg_query__scalar_array_op_expr__number_ranges, + (ProtobufCMessageInit) pg_query__scalar_array_op_expr__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor pg_query__bool_expr__field_descriptors[4] = +{ + { + "xpr", + 1, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(PgQuery__BoolExpr, xpr), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "boolop", + 2, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_ENUM, + 0, /* quantifier_offset */ + offsetof(PgQuery__BoolExpr, boolop), + &pg_query__bool_expr_type__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "args", + 3, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__BoolExpr, n_args), + offsetof(PgQuery__BoolExpr, args), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "location", + 4, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(PgQuery__BoolExpr, location), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned pg_query__bool_expr__field_indices_by_name[] = { + 2, /* field[2] = args */ + 1, /* field[1] = boolop */ + 3, /* field[3] = location */ + 0, /* field[0] = xpr */ +}; +static const ProtobufCIntRange pg_query__bool_expr__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 4 } +}; +const ProtobufCMessageDescriptor pg_query__bool_expr__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "pg_query.BoolExpr", + "BoolExpr", + "PgQuery__BoolExpr", + "pg_query", + sizeof(PgQuery__BoolExpr), + 4, + pg_query__bool_expr__field_descriptors, + pg_query__bool_expr__field_indices_by_name, + 1, pg_query__bool_expr__number_ranges, + (ProtobufCMessageInit) pg_query__bool_expr__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor pg_query__sub_link__field_descriptors[7] = +{ + { + "xpr", + 1, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(PgQuery__SubLink, xpr), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "sub_link_type", + 2, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_ENUM, + 0, /* quantifier_offset */ + offsetof(PgQuery__SubLink, sub_link_type), + &pg_query__sub_link_type__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "sub_link_id", + 3, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(PgQuery__SubLink, sub_link_id), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "testexpr", + 4, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(PgQuery__SubLink, testexpr), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "oper_name", + 5, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__SubLink, n_oper_name), + offsetof(PgQuery__SubLink, oper_name), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "subselect", + 6, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(PgQuery__SubLink, subselect), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "location", + 7, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(PgQuery__SubLink, location), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned pg_query__sub_link__field_indices_by_name[] = { + 6, /* field[6] = location */ + 4, /* field[4] = oper_name */ + 2, /* field[2] = sub_link_id */ + 1, /* field[1] = sub_link_type */ + 5, /* field[5] = subselect */ + 3, /* field[3] = testexpr */ + 0, /* field[0] = xpr */ +}; +static const ProtobufCIntRange pg_query__sub_link__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 7 } +}; +const ProtobufCMessageDescriptor pg_query__sub_link__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "pg_query.SubLink", + "SubLink", + "PgQuery__SubLink", + "pg_query", + sizeof(PgQuery__SubLink), + 7, + pg_query__sub_link__field_descriptors, + pg_query__sub_link__field_indices_by_name, + 1, pg_query__sub_link__number_ranges, + (ProtobufCMessageInit) pg_query__sub_link__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor pg_query__sub_plan__field_descriptors[17] = +{ + { + "xpr", + 1, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(PgQuery__SubPlan, xpr), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "sub_link_type", + 2, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_ENUM, + 0, /* quantifier_offset */ + offsetof(PgQuery__SubPlan, sub_link_type), + &pg_query__sub_link_type__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "testexpr", + 3, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(PgQuery__SubPlan, testexpr), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "param_ids", + 4, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__SubPlan, n_param_ids), + offsetof(PgQuery__SubPlan, param_ids), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "plan_id", + 5, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(PgQuery__SubPlan, plan_id), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "plan_name", + 6, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_STRING, + 0, /* quantifier_offset */ + offsetof(PgQuery__SubPlan, plan_name), + NULL, + &protobuf_c_empty_string, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "first_col_type", + 7, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT32, + 0, /* quantifier_offset */ + offsetof(PgQuery__SubPlan, first_col_type), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "first_col_typmod", + 8, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(PgQuery__SubPlan, first_col_typmod), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "first_col_collation", + 9, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT32, + 0, /* quantifier_offset */ + offsetof(PgQuery__SubPlan, first_col_collation), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "use_hash_table", + 10, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_BOOL, + 0, /* quantifier_offset */ + offsetof(PgQuery__SubPlan, use_hash_table), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "unknown_eq_false", + 11, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_BOOL, + 0, /* quantifier_offset */ + offsetof(PgQuery__SubPlan, unknown_eq_false), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "parallel_safe", + 12, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_BOOL, + 0, /* quantifier_offset */ + offsetof(PgQuery__SubPlan, parallel_safe), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "set_param", + 13, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__SubPlan, n_set_param), + offsetof(PgQuery__SubPlan, set_param), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "par_param", + 14, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__SubPlan, n_par_param), + offsetof(PgQuery__SubPlan, par_param), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "args", + 15, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__SubPlan, n_args), + offsetof(PgQuery__SubPlan, args), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "startup_cost", + 16, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_DOUBLE, + 0, /* quantifier_offset */ + offsetof(PgQuery__SubPlan, startup_cost), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "per_call_cost", + 17, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_DOUBLE, + 0, /* quantifier_offset */ + offsetof(PgQuery__SubPlan, per_call_cost), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned pg_query__sub_plan__field_indices_by_name[] = { + 14, /* field[14] = args */ + 8, /* field[8] = first_col_collation */ + 6, /* field[6] = first_col_type */ + 7, /* field[7] = first_col_typmod */ + 13, /* field[13] = par_param */ + 11, /* field[11] = parallel_safe */ + 3, /* field[3] = param_ids */ + 16, /* field[16] = per_call_cost */ + 4, /* field[4] = plan_id */ + 5, /* field[5] = plan_name */ + 12, /* field[12] = set_param */ + 15, /* field[15] = startup_cost */ + 1, /* field[1] = sub_link_type */ + 2, /* field[2] = testexpr */ + 10, /* field[10] = unknown_eq_false */ + 9, /* field[9] = use_hash_table */ + 0, /* field[0] = xpr */ +}; +static const ProtobufCIntRange pg_query__sub_plan__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 17 } +}; +const ProtobufCMessageDescriptor pg_query__sub_plan__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "pg_query.SubPlan", + "SubPlan", + "PgQuery__SubPlan", + "pg_query", + sizeof(PgQuery__SubPlan), + 17, + pg_query__sub_plan__field_descriptors, + pg_query__sub_plan__field_indices_by_name, + 1, pg_query__sub_plan__number_ranges, + (ProtobufCMessageInit) pg_query__sub_plan__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor pg_query__alternative_sub_plan__field_descriptors[2] = +{ + { + "xpr", + 1, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(PgQuery__AlternativeSubPlan, xpr), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "subplans", + 2, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__AlternativeSubPlan, n_subplans), + offsetof(PgQuery__AlternativeSubPlan, subplans), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned pg_query__alternative_sub_plan__field_indices_by_name[] = { + 1, /* field[1] = subplans */ + 0, /* field[0] = xpr */ +}; +static const ProtobufCIntRange pg_query__alternative_sub_plan__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 2 } +}; +const ProtobufCMessageDescriptor pg_query__alternative_sub_plan__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "pg_query.AlternativeSubPlan", + "AlternativeSubPlan", + "PgQuery__AlternativeSubPlan", + "pg_query", + sizeof(PgQuery__AlternativeSubPlan), + 2, + pg_query__alternative_sub_plan__field_descriptors, + pg_query__alternative_sub_plan__field_indices_by_name, + 1, pg_query__alternative_sub_plan__number_ranges, + (ProtobufCMessageInit) pg_query__alternative_sub_plan__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor pg_query__field_select__field_descriptors[6] = +{ + { + "xpr", + 1, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(PgQuery__FieldSelect, xpr), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "arg", + 2, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(PgQuery__FieldSelect, arg), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "fieldnum", + 3, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(PgQuery__FieldSelect, fieldnum), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "resulttype", + 4, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT32, + 0, /* quantifier_offset */ + offsetof(PgQuery__FieldSelect, resulttype), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "resulttypmod", + 5, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(PgQuery__FieldSelect, resulttypmod), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "resultcollid", + 6, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT32, + 0, /* quantifier_offset */ + offsetof(PgQuery__FieldSelect, resultcollid), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned pg_query__field_select__field_indices_by_name[] = { + 1, /* field[1] = arg */ + 2, /* field[2] = fieldnum */ + 5, /* field[5] = resultcollid */ + 3, /* field[3] = resulttype */ + 4, /* field[4] = resulttypmod */ + 0, /* field[0] = xpr */ +}; +static const ProtobufCIntRange pg_query__field_select__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 6 } +}; +const ProtobufCMessageDescriptor pg_query__field_select__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "pg_query.FieldSelect", + "FieldSelect", + "PgQuery__FieldSelect", + "pg_query", + sizeof(PgQuery__FieldSelect), + 6, + pg_query__field_select__field_descriptors, + pg_query__field_select__field_indices_by_name, + 1, pg_query__field_select__number_ranges, + (ProtobufCMessageInit) pg_query__field_select__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor pg_query__field_store__field_descriptors[5] = +{ + { + "xpr", + 1, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(PgQuery__FieldStore, xpr), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "arg", + 2, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(PgQuery__FieldStore, arg), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "newvals", + 3, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__FieldStore, n_newvals), + offsetof(PgQuery__FieldStore, newvals), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "fieldnums", + 4, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__FieldStore, n_fieldnums), + offsetof(PgQuery__FieldStore, fieldnums), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "resulttype", + 5, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT32, + 0, /* quantifier_offset */ + offsetof(PgQuery__FieldStore, resulttype), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned pg_query__field_store__field_indices_by_name[] = { + 1, /* field[1] = arg */ + 3, /* field[3] = fieldnums */ + 2, /* field[2] = newvals */ + 4, /* field[4] = resulttype */ + 0, /* field[0] = xpr */ +}; +static const ProtobufCIntRange pg_query__field_store__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 5 } +}; +const ProtobufCMessageDescriptor pg_query__field_store__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "pg_query.FieldStore", + "FieldStore", + "PgQuery__FieldStore", + "pg_query", + sizeof(PgQuery__FieldStore), + 5, + pg_query__field_store__field_descriptors, + pg_query__field_store__field_indices_by_name, + 1, pg_query__field_store__number_ranges, + (ProtobufCMessageInit) pg_query__field_store__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor pg_query__relabel_type__field_descriptors[7] = +{ + { + "xpr", + 1, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(PgQuery__RelabelType, xpr), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "arg", + 2, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(PgQuery__RelabelType, arg), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "resulttype", + 3, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT32, + 0, /* quantifier_offset */ + offsetof(PgQuery__RelabelType, resulttype), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "resulttypmod", + 4, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(PgQuery__RelabelType, resulttypmod), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "resultcollid", + 5, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT32, + 0, /* quantifier_offset */ + offsetof(PgQuery__RelabelType, resultcollid), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "relabelformat", + 6, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_ENUM, + 0, /* quantifier_offset */ + offsetof(PgQuery__RelabelType, relabelformat), + &pg_query__coercion_form__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "location", + 7, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(PgQuery__RelabelType, location), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned pg_query__relabel_type__field_indices_by_name[] = { + 1, /* field[1] = arg */ + 6, /* field[6] = location */ + 5, /* field[5] = relabelformat */ + 4, /* field[4] = resultcollid */ + 2, /* field[2] = resulttype */ + 3, /* field[3] = resulttypmod */ + 0, /* field[0] = xpr */ +}; +static const ProtobufCIntRange pg_query__relabel_type__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 7 } +}; +const ProtobufCMessageDescriptor pg_query__relabel_type__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "pg_query.RelabelType", + "RelabelType", + "PgQuery__RelabelType", + "pg_query", + sizeof(PgQuery__RelabelType), + 7, + pg_query__relabel_type__field_descriptors, + pg_query__relabel_type__field_indices_by_name, + 1, pg_query__relabel_type__number_ranges, + (ProtobufCMessageInit) pg_query__relabel_type__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor pg_query__coerce_via_io__field_descriptors[6] = +{ + { + "xpr", + 1, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(PgQuery__CoerceViaIO, xpr), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "arg", + 2, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(PgQuery__CoerceViaIO, arg), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "resulttype", + 3, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT32, + 0, /* quantifier_offset */ + offsetof(PgQuery__CoerceViaIO, resulttype), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "resultcollid", + 4, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT32, + 0, /* quantifier_offset */ + offsetof(PgQuery__CoerceViaIO, resultcollid), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "coerceformat", + 5, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_ENUM, + 0, /* quantifier_offset */ + offsetof(PgQuery__CoerceViaIO, coerceformat), + &pg_query__coercion_form__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "location", + 6, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(PgQuery__CoerceViaIO, location), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned pg_query__coerce_via_io__field_indices_by_name[] = { + 1, /* field[1] = arg */ + 4, /* field[4] = coerceformat */ + 5, /* field[5] = location */ + 3, /* field[3] = resultcollid */ + 2, /* field[2] = resulttype */ + 0, /* field[0] = xpr */ +}; +static const ProtobufCIntRange pg_query__coerce_via_io__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 6 } +}; +const ProtobufCMessageDescriptor pg_query__coerce_via_io__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "pg_query.CoerceViaIO", + "CoerceViaIO", + "PgQuery__CoerceViaIO", + "pg_query", + sizeof(PgQuery__CoerceViaIO), + 6, + pg_query__coerce_via_io__field_descriptors, + pg_query__coerce_via_io__field_indices_by_name, + 1, pg_query__coerce_via_io__number_ranges, + (ProtobufCMessageInit) pg_query__coerce_via_io__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor pg_query__array_coerce_expr__field_descriptors[8] = +{ + { + "xpr", + 1, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(PgQuery__ArrayCoerceExpr, xpr), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "arg", + 2, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(PgQuery__ArrayCoerceExpr, arg), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "elemexpr", + 3, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(PgQuery__ArrayCoerceExpr, elemexpr), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "resulttype", + 4, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT32, + 0, /* quantifier_offset */ + offsetof(PgQuery__ArrayCoerceExpr, resulttype), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "resulttypmod", + 5, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(PgQuery__ArrayCoerceExpr, resulttypmod), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "resultcollid", + 6, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT32, + 0, /* quantifier_offset */ + offsetof(PgQuery__ArrayCoerceExpr, resultcollid), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "coerceformat", + 7, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_ENUM, + 0, /* quantifier_offset */ + offsetof(PgQuery__ArrayCoerceExpr, coerceformat), + &pg_query__coercion_form__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "location", + 8, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(PgQuery__ArrayCoerceExpr, location), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned pg_query__array_coerce_expr__field_indices_by_name[] = { + 1, /* field[1] = arg */ + 6, /* field[6] = coerceformat */ + 2, /* field[2] = elemexpr */ + 7, /* field[7] = location */ + 5, /* field[5] = resultcollid */ + 3, /* field[3] = resulttype */ + 4, /* field[4] = resulttypmod */ + 0, /* field[0] = xpr */ +}; +static const ProtobufCIntRange pg_query__array_coerce_expr__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 8 } +}; +const ProtobufCMessageDescriptor pg_query__array_coerce_expr__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "pg_query.ArrayCoerceExpr", + "ArrayCoerceExpr", + "PgQuery__ArrayCoerceExpr", + "pg_query", + sizeof(PgQuery__ArrayCoerceExpr), + 8, + pg_query__array_coerce_expr__field_descriptors, + pg_query__array_coerce_expr__field_indices_by_name, + 1, pg_query__array_coerce_expr__number_ranges, + (ProtobufCMessageInit) pg_query__array_coerce_expr__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor pg_query__convert_rowtype_expr__field_descriptors[5] = +{ + { + "xpr", + 1, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(PgQuery__ConvertRowtypeExpr, xpr), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "arg", + 2, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(PgQuery__ConvertRowtypeExpr, arg), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "resulttype", + 3, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT32, + 0, /* quantifier_offset */ + offsetof(PgQuery__ConvertRowtypeExpr, resulttype), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "convertformat", + 4, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_ENUM, + 0, /* quantifier_offset */ + offsetof(PgQuery__ConvertRowtypeExpr, convertformat), + &pg_query__coercion_form__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "location", + 5, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(PgQuery__ConvertRowtypeExpr, location), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned pg_query__convert_rowtype_expr__field_indices_by_name[] = { + 1, /* field[1] = arg */ + 3, /* field[3] = convertformat */ + 4, /* field[4] = location */ + 2, /* field[2] = resulttype */ + 0, /* field[0] = xpr */ +}; +static const ProtobufCIntRange pg_query__convert_rowtype_expr__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 5 } +}; +const ProtobufCMessageDescriptor pg_query__convert_rowtype_expr__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "pg_query.ConvertRowtypeExpr", + "ConvertRowtypeExpr", + "PgQuery__ConvertRowtypeExpr", + "pg_query", + sizeof(PgQuery__ConvertRowtypeExpr), + 5, + pg_query__convert_rowtype_expr__field_descriptors, + pg_query__convert_rowtype_expr__field_indices_by_name, + 1, pg_query__convert_rowtype_expr__number_ranges, + (ProtobufCMessageInit) pg_query__convert_rowtype_expr__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor pg_query__collate_expr__field_descriptors[4] = +{ + { + "xpr", + 1, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(PgQuery__CollateExpr, xpr), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "arg", + 2, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(PgQuery__CollateExpr, arg), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "coll_oid", + 3, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT32, + 0, /* quantifier_offset */ + offsetof(PgQuery__CollateExpr, coll_oid), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "location", + 4, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(PgQuery__CollateExpr, location), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned pg_query__collate_expr__field_indices_by_name[] = { + 1, /* field[1] = arg */ + 2, /* field[2] = coll_oid */ + 3, /* field[3] = location */ + 0, /* field[0] = xpr */ +}; +static const ProtobufCIntRange pg_query__collate_expr__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 4 } +}; +const ProtobufCMessageDescriptor pg_query__collate_expr__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "pg_query.CollateExpr", + "CollateExpr", + "PgQuery__CollateExpr", + "pg_query", + sizeof(PgQuery__CollateExpr), + 4, + pg_query__collate_expr__field_descriptors, + pg_query__collate_expr__field_indices_by_name, + 1, pg_query__collate_expr__number_ranges, + (ProtobufCMessageInit) pg_query__collate_expr__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor pg_query__case_expr__field_descriptors[7] = +{ + { + "xpr", + 1, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(PgQuery__CaseExpr, xpr), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "casetype", + 2, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT32, + 0, /* quantifier_offset */ + offsetof(PgQuery__CaseExpr, casetype), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "casecollid", + 3, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT32, + 0, /* quantifier_offset */ + offsetof(PgQuery__CaseExpr, casecollid), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "arg", + 4, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(PgQuery__CaseExpr, arg), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "args", + 5, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__CaseExpr, n_args), + offsetof(PgQuery__CaseExpr, args), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "defresult", + 6, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(PgQuery__CaseExpr, defresult), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "location", + 7, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(PgQuery__CaseExpr, location), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned pg_query__case_expr__field_indices_by_name[] = { + 3, /* field[3] = arg */ + 4, /* field[4] = args */ + 2, /* field[2] = casecollid */ + 1, /* field[1] = casetype */ + 5, /* field[5] = defresult */ + 6, /* field[6] = location */ + 0, /* field[0] = xpr */ +}; +static const ProtobufCIntRange pg_query__case_expr__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 7 } +}; +const ProtobufCMessageDescriptor pg_query__case_expr__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "pg_query.CaseExpr", + "CaseExpr", + "PgQuery__CaseExpr", + "pg_query", + sizeof(PgQuery__CaseExpr), + 7, + pg_query__case_expr__field_descriptors, + pg_query__case_expr__field_indices_by_name, + 1, pg_query__case_expr__number_ranges, + (ProtobufCMessageInit) pg_query__case_expr__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor pg_query__case_when__field_descriptors[4] = +{ + { + "xpr", + 1, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(PgQuery__CaseWhen, xpr), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "expr", + 2, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(PgQuery__CaseWhen, expr), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "result", + 3, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(PgQuery__CaseWhen, result), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "location", + 4, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(PgQuery__CaseWhen, location), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned pg_query__case_when__field_indices_by_name[] = { + 1, /* field[1] = expr */ + 3, /* field[3] = location */ + 2, /* field[2] = result */ + 0, /* field[0] = xpr */ +}; +static const ProtobufCIntRange pg_query__case_when__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 4 } +}; +const ProtobufCMessageDescriptor pg_query__case_when__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "pg_query.CaseWhen", + "CaseWhen", + "PgQuery__CaseWhen", + "pg_query", + sizeof(PgQuery__CaseWhen), + 4, + pg_query__case_when__field_descriptors, + pg_query__case_when__field_indices_by_name, + 1, pg_query__case_when__number_ranges, + (ProtobufCMessageInit) pg_query__case_when__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor pg_query__case_test_expr__field_descriptors[4] = +{ + { + "xpr", + 1, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(PgQuery__CaseTestExpr, xpr), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "type_id", + 2, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT32, + 0, /* quantifier_offset */ + offsetof(PgQuery__CaseTestExpr, type_id), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "type_mod", + 3, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(PgQuery__CaseTestExpr, type_mod), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "collation", + 4, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT32, + 0, /* quantifier_offset */ + offsetof(PgQuery__CaseTestExpr, collation), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned pg_query__case_test_expr__field_indices_by_name[] = { + 3, /* field[3] = collation */ + 1, /* field[1] = type_id */ + 2, /* field[2] = type_mod */ + 0, /* field[0] = xpr */ +}; +static const ProtobufCIntRange pg_query__case_test_expr__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 4 } +}; +const ProtobufCMessageDescriptor pg_query__case_test_expr__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "pg_query.CaseTestExpr", + "CaseTestExpr", + "PgQuery__CaseTestExpr", + "pg_query", + sizeof(PgQuery__CaseTestExpr), + 4, + pg_query__case_test_expr__field_descriptors, + pg_query__case_test_expr__field_indices_by_name, + 1, pg_query__case_test_expr__number_ranges, + (ProtobufCMessageInit) pg_query__case_test_expr__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor pg_query__array_expr__field_descriptors[7] = +{ + { + "xpr", + 1, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(PgQuery__ArrayExpr, xpr), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "array_typeid", + 2, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT32, + 0, /* quantifier_offset */ + offsetof(PgQuery__ArrayExpr, array_typeid), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "array_collid", + 3, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT32, + 0, /* quantifier_offset */ + offsetof(PgQuery__ArrayExpr, array_collid), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "element_typeid", + 4, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT32, + 0, /* quantifier_offset */ + offsetof(PgQuery__ArrayExpr, element_typeid), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "elements", + 5, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__ArrayExpr, n_elements), + offsetof(PgQuery__ArrayExpr, elements), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "multidims", + 6, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_BOOL, + 0, /* quantifier_offset */ + offsetof(PgQuery__ArrayExpr, multidims), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "location", + 7, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(PgQuery__ArrayExpr, location), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned pg_query__array_expr__field_indices_by_name[] = { + 2, /* field[2] = array_collid */ + 1, /* field[1] = array_typeid */ + 3, /* field[3] = element_typeid */ + 4, /* field[4] = elements */ + 6, /* field[6] = location */ + 5, /* field[5] = multidims */ + 0, /* field[0] = xpr */ +}; +static const ProtobufCIntRange pg_query__array_expr__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 7 } +}; +const ProtobufCMessageDescriptor pg_query__array_expr__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "pg_query.ArrayExpr", + "ArrayExpr", + "PgQuery__ArrayExpr", + "pg_query", + sizeof(PgQuery__ArrayExpr), + 7, + pg_query__array_expr__field_descriptors, + pg_query__array_expr__field_indices_by_name, + 1, pg_query__array_expr__number_ranges, + (ProtobufCMessageInit) pg_query__array_expr__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor pg_query__row_expr__field_descriptors[6] = +{ + { + "xpr", + 1, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(PgQuery__RowExpr, xpr), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "args", + 2, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__RowExpr, n_args), + offsetof(PgQuery__RowExpr, args), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "row_typeid", + 3, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT32, + 0, /* quantifier_offset */ + offsetof(PgQuery__RowExpr, row_typeid), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "row_format", + 4, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_ENUM, + 0, /* quantifier_offset */ + offsetof(PgQuery__RowExpr, row_format), + &pg_query__coercion_form__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "colnames", + 5, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__RowExpr, n_colnames), + offsetof(PgQuery__RowExpr, colnames), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "location", + 6, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(PgQuery__RowExpr, location), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned pg_query__row_expr__field_indices_by_name[] = { + 1, /* field[1] = args */ + 4, /* field[4] = colnames */ + 5, /* field[5] = location */ + 3, /* field[3] = row_format */ + 2, /* field[2] = row_typeid */ + 0, /* field[0] = xpr */ +}; +static const ProtobufCIntRange pg_query__row_expr__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 6 } +}; +const ProtobufCMessageDescriptor pg_query__row_expr__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "pg_query.RowExpr", + "RowExpr", + "PgQuery__RowExpr", + "pg_query", + sizeof(PgQuery__RowExpr), + 6, + pg_query__row_expr__field_descriptors, + pg_query__row_expr__field_indices_by_name, + 1, pg_query__row_expr__number_ranges, + (ProtobufCMessageInit) pg_query__row_expr__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor pg_query__row_compare_expr__field_descriptors[7] = +{ + { + "xpr", + 1, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(PgQuery__RowCompareExpr, xpr), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "rctype", + 2, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_ENUM, + 0, /* quantifier_offset */ + offsetof(PgQuery__RowCompareExpr, rctype), + &pg_query__row_compare_type__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "opnos", + 3, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__RowCompareExpr, n_opnos), + offsetof(PgQuery__RowCompareExpr, opnos), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "opfamilies", + 4, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__RowCompareExpr, n_opfamilies), + offsetof(PgQuery__RowCompareExpr, opfamilies), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "inputcollids", + 5, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__RowCompareExpr, n_inputcollids), + offsetof(PgQuery__RowCompareExpr, inputcollids), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "largs", + 6, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__RowCompareExpr, n_largs), + offsetof(PgQuery__RowCompareExpr, largs), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "rargs", + 7, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__RowCompareExpr, n_rargs), + offsetof(PgQuery__RowCompareExpr, rargs), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned pg_query__row_compare_expr__field_indices_by_name[] = { + 4, /* field[4] = inputcollids */ + 5, /* field[5] = largs */ + 3, /* field[3] = opfamilies */ + 2, /* field[2] = opnos */ + 6, /* field[6] = rargs */ + 1, /* field[1] = rctype */ + 0, /* field[0] = xpr */ +}; +static const ProtobufCIntRange pg_query__row_compare_expr__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 7 } +}; +const ProtobufCMessageDescriptor pg_query__row_compare_expr__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "pg_query.RowCompareExpr", + "RowCompareExpr", + "PgQuery__RowCompareExpr", + "pg_query", + sizeof(PgQuery__RowCompareExpr), + 7, + pg_query__row_compare_expr__field_descriptors, + pg_query__row_compare_expr__field_indices_by_name, + 1, pg_query__row_compare_expr__number_ranges, + (ProtobufCMessageInit) pg_query__row_compare_expr__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor pg_query__coalesce_expr__field_descriptors[5] = +{ + { + "xpr", + 1, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(PgQuery__CoalesceExpr, xpr), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "coalescetype", + 2, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT32, + 0, /* quantifier_offset */ + offsetof(PgQuery__CoalesceExpr, coalescetype), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "coalescecollid", + 3, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT32, + 0, /* quantifier_offset */ + offsetof(PgQuery__CoalesceExpr, coalescecollid), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "args", + 4, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__CoalesceExpr, n_args), + offsetof(PgQuery__CoalesceExpr, args), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "location", + 5, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(PgQuery__CoalesceExpr, location), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned pg_query__coalesce_expr__field_indices_by_name[] = { + 3, /* field[3] = args */ + 2, /* field[2] = coalescecollid */ + 1, /* field[1] = coalescetype */ + 4, /* field[4] = location */ + 0, /* field[0] = xpr */ +}; +static const ProtobufCIntRange pg_query__coalesce_expr__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 5 } +}; +const ProtobufCMessageDescriptor pg_query__coalesce_expr__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "pg_query.CoalesceExpr", + "CoalesceExpr", + "PgQuery__CoalesceExpr", + "pg_query", + sizeof(PgQuery__CoalesceExpr), + 5, + pg_query__coalesce_expr__field_descriptors, + pg_query__coalesce_expr__field_indices_by_name, + 1, pg_query__coalesce_expr__number_ranges, + (ProtobufCMessageInit) pg_query__coalesce_expr__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor pg_query__min_max_expr__field_descriptors[7] = +{ + { + "xpr", + 1, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(PgQuery__MinMaxExpr, xpr), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "minmaxtype", + 2, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT32, + 0, /* quantifier_offset */ + offsetof(PgQuery__MinMaxExpr, minmaxtype), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "minmaxcollid", + 3, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT32, + 0, /* quantifier_offset */ + offsetof(PgQuery__MinMaxExpr, minmaxcollid), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "inputcollid", + 4, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT32, + 0, /* quantifier_offset */ + offsetof(PgQuery__MinMaxExpr, inputcollid), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "op", + 5, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_ENUM, + 0, /* quantifier_offset */ + offsetof(PgQuery__MinMaxExpr, op), + &pg_query__min_max_op__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "args", + 6, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__MinMaxExpr, n_args), + offsetof(PgQuery__MinMaxExpr, args), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "location", + 7, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(PgQuery__MinMaxExpr, location), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned pg_query__min_max_expr__field_indices_by_name[] = { + 5, /* field[5] = args */ + 3, /* field[3] = inputcollid */ + 6, /* field[6] = location */ + 2, /* field[2] = minmaxcollid */ + 1, /* field[1] = minmaxtype */ + 4, /* field[4] = op */ + 0, /* field[0] = xpr */ +}; +static const ProtobufCIntRange pg_query__min_max_expr__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 7 } +}; +const ProtobufCMessageDescriptor pg_query__min_max_expr__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "pg_query.MinMaxExpr", + "MinMaxExpr", + "PgQuery__MinMaxExpr", + "pg_query", + sizeof(PgQuery__MinMaxExpr), + 7, + pg_query__min_max_expr__field_descriptors, + pg_query__min_max_expr__field_indices_by_name, + 1, pg_query__min_max_expr__number_ranges, + (ProtobufCMessageInit) pg_query__min_max_expr__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor pg_query__sqlvalue_function__field_descriptors[5] = +{ + { + "xpr", + 1, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(PgQuery__SQLValueFunction, xpr), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "op", + 2, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_ENUM, + 0, /* quantifier_offset */ + offsetof(PgQuery__SQLValueFunction, op), + &pg_query__sqlvalue_function_op__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "type", + 3, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT32, + 0, /* quantifier_offset */ + offsetof(PgQuery__SQLValueFunction, type), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "typmod", + 4, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(PgQuery__SQLValueFunction, typmod), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "location", + 5, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(PgQuery__SQLValueFunction, location), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned pg_query__sqlvalue_function__field_indices_by_name[] = { + 4, /* field[4] = location */ + 1, /* field[1] = op */ + 2, /* field[2] = type */ + 3, /* field[3] = typmod */ + 0, /* field[0] = xpr */ +}; +static const ProtobufCIntRange pg_query__sqlvalue_function__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 5 } +}; +const ProtobufCMessageDescriptor pg_query__sqlvalue_function__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "pg_query.SQLValueFunction", + "SQLValueFunction", + "PgQuery__SQLValueFunction", + "pg_query", + sizeof(PgQuery__SQLValueFunction), + 5, + pg_query__sqlvalue_function__field_descriptors, + pg_query__sqlvalue_function__field_indices_by_name, + 1, pg_query__sqlvalue_function__number_ranges, + (ProtobufCMessageInit) pg_query__sqlvalue_function__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor pg_query__xml_expr__field_descriptors[10] = +{ + { + "xpr", + 1, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(PgQuery__XmlExpr, xpr), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "op", + 2, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_ENUM, + 0, /* quantifier_offset */ + offsetof(PgQuery__XmlExpr, op), + &pg_query__xml_expr_op__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "name", + 3, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_STRING, + 0, /* quantifier_offset */ + offsetof(PgQuery__XmlExpr, name), + NULL, + &protobuf_c_empty_string, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "named_args", + 4, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__XmlExpr, n_named_args), + offsetof(PgQuery__XmlExpr, named_args), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "arg_names", + 5, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__XmlExpr, n_arg_names), + offsetof(PgQuery__XmlExpr, arg_names), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "args", + 6, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__XmlExpr, n_args), + offsetof(PgQuery__XmlExpr, args), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "xmloption", + 7, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_ENUM, + 0, /* quantifier_offset */ + offsetof(PgQuery__XmlExpr, xmloption), + &pg_query__xml_option_type__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "type", + 8, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT32, + 0, /* quantifier_offset */ + offsetof(PgQuery__XmlExpr, type), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "typmod", + 9, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(PgQuery__XmlExpr, typmod), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "location", + 10, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(PgQuery__XmlExpr, location), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned pg_query__xml_expr__field_indices_by_name[] = { + 4, /* field[4] = arg_names */ + 5, /* field[5] = args */ + 9, /* field[9] = location */ + 2, /* field[2] = name */ + 3, /* field[3] = named_args */ + 1, /* field[1] = op */ + 7, /* field[7] = type */ + 8, /* field[8] = typmod */ + 6, /* field[6] = xmloption */ + 0, /* field[0] = xpr */ +}; +static const ProtobufCIntRange pg_query__xml_expr__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 10 } +}; +const ProtobufCMessageDescriptor pg_query__xml_expr__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "pg_query.XmlExpr", + "XmlExpr", + "PgQuery__XmlExpr", + "pg_query", + sizeof(PgQuery__XmlExpr), + 10, + pg_query__xml_expr__field_descriptors, + pg_query__xml_expr__field_indices_by_name, + 1, pg_query__xml_expr__number_ranges, + (ProtobufCMessageInit) pg_query__xml_expr__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor pg_query__null_test__field_descriptors[5] = +{ + { + "xpr", + 1, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(PgQuery__NullTest, xpr), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "arg", + 2, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(PgQuery__NullTest, arg), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "nulltesttype", + 3, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_ENUM, + 0, /* quantifier_offset */ + offsetof(PgQuery__NullTest, nulltesttype), + &pg_query__null_test_type__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "argisrow", + 4, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_BOOL, + 0, /* quantifier_offset */ + offsetof(PgQuery__NullTest, argisrow), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "location", + 5, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(PgQuery__NullTest, location), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned pg_query__null_test__field_indices_by_name[] = { + 1, /* field[1] = arg */ + 3, /* field[3] = argisrow */ + 4, /* field[4] = location */ + 2, /* field[2] = nulltesttype */ + 0, /* field[0] = xpr */ +}; +static const ProtobufCIntRange pg_query__null_test__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 5 } +}; +const ProtobufCMessageDescriptor pg_query__null_test__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "pg_query.NullTest", + "NullTest", + "PgQuery__NullTest", + "pg_query", + sizeof(PgQuery__NullTest), + 5, + pg_query__null_test__field_descriptors, + pg_query__null_test__field_indices_by_name, + 1, pg_query__null_test__number_ranges, + (ProtobufCMessageInit) pg_query__null_test__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor pg_query__boolean_test__field_descriptors[4] = +{ + { + "xpr", + 1, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(PgQuery__BooleanTest, xpr), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "arg", + 2, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(PgQuery__BooleanTest, arg), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "booltesttype", + 3, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_ENUM, + 0, /* quantifier_offset */ + offsetof(PgQuery__BooleanTest, booltesttype), + &pg_query__bool_test_type__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "location", + 4, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(PgQuery__BooleanTest, location), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned pg_query__boolean_test__field_indices_by_name[] = { + 1, /* field[1] = arg */ + 2, /* field[2] = booltesttype */ + 3, /* field[3] = location */ + 0, /* field[0] = xpr */ +}; +static const ProtobufCIntRange pg_query__boolean_test__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 4 } +}; +const ProtobufCMessageDescriptor pg_query__boolean_test__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "pg_query.BooleanTest", + "BooleanTest", + "PgQuery__BooleanTest", + "pg_query", + sizeof(PgQuery__BooleanTest), + 4, + pg_query__boolean_test__field_descriptors, + pg_query__boolean_test__field_indices_by_name, + 1, pg_query__boolean_test__number_ranges, + (ProtobufCMessageInit) pg_query__boolean_test__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor pg_query__coerce_to_domain__field_descriptors[7] = +{ + { + "xpr", + 1, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(PgQuery__CoerceToDomain, xpr), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "arg", + 2, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(PgQuery__CoerceToDomain, arg), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "resulttype", + 3, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT32, + 0, /* quantifier_offset */ + offsetof(PgQuery__CoerceToDomain, resulttype), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "resulttypmod", + 4, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(PgQuery__CoerceToDomain, resulttypmod), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "resultcollid", + 5, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT32, + 0, /* quantifier_offset */ + offsetof(PgQuery__CoerceToDomain, resultcollid), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "coercionformat", + 6, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_ENUM, + 0, /* quantifier_offset */ + offsetof(PgQuery__CoerceToDomain, coercionformat), + &pg_query__coercion_form__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "location", + 7, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(PgQuery__CoerceToDomain, location), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned pg_query__coerce_to_domain__field_indices_by_name[] = { + 1, /* field[1] = arg */ + 5, /* field[5] = coercionformat */ + 6, /* field[6] = location */ + 4, /* field[4] = resultcollid */ + 2, /* field[2] = resulttype */ + 3, /* field[3] = resulttypmod */ + 0, /* field[0] = xpr */ +}; +static const ProtobufCIntRange pg_query__coerce_to_domain__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 7 } +}; +const ProtobufCMessageDescriptor pg_query__coerce_to_domain__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "pg_query.CoerceToDomain", + "CoerceToDomain", + "PgQuery__CoerceToDomain", + "pg_query", + sizeof(PgQuery__CoerceToDomain), + 7, + pg_query__coerce_to_domain__field_descriptors, + pg_query__coerce_to_domain__field_indices_by_name, + 1, pg_query__coerce_to_domain__number_ranges, + (ProtobufCMessageInit) pg_query__coerce_to_domain__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor pg_query__coerce_to_domain_value__field_descriptors[5] = +{ + { + "xpr", + 1, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(PgQuery__CoerceToDomainValue, xpr), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "type_id", + 2, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT32, + 0, /* quantifier_offset */ + offsetof(PgQuery__CoerceToDomainValue, type_id), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "type_mod", + 3, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(PgQuery__CoerceToDomainValue, type_mod), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "collation", + 4, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT32, + 0, /* quantifier_offset */ + offsetof(PgQuery__CoerceToDomainValue, collation), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "location", + 5, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(PgQuery__CoerceToDomainValue, location), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned pg_query__coerce_to_domain_value__field_indices_by_name[] = { + 3, /* field[3] = collation */ + 4, /* field[4] = location */ + 1, /* field[1] = type_id */ + 2, /* field[2] = type_mod */ + 0, /* field[0] = xpr */ +}; +static const ProtobufCIntRange pg_query__coerce_to_domain_value__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 5 } +}; +const ProtobufCMessageDescriptor pg_query__coerce_to_domain_value__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "pg_query.CoerceToDomainValue", + "CoerceToDomainValue", + "PgQuery__CoerceToDomainValue", + "pg_query", + sizeof(PgQuery__CoerceToDomainValue), + 5, + pg_query__coerce_to_domain_value__field_descriptors, + pg_query__coerce_to_domain_value__field_indices_by_name, + 1, pg_query__coerce_to_domain_value__number_ranges, + (ProtobufCMessageInit) pg_query__coerce_to_domain_value__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor pg_query__set_to_default__field_descriptors[5] = +{ + { + "xpr", + 1, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(PgQuery__SetToDefault, xpr), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "type_id", + 2, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT32, + 0, /* quantifier_offset */ + offsetof(PgQuery__SetToDefault, type_id), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "type_mod", + 3, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(PgQuery__SetToDefault, type_mod), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "collation", + 4, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT32, + 0, /* quantifier_offset */ + offsetof(PgQuery__SetToDefault, collation), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "location", + 5, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(PgQuery__SetToDefault, location), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned pg_query__set_to_default__field_indices_by_name[] = { + 3, /* field[3] = collation */ + 4, /* field[4] = location */ + 1, /* field[1] = type_id */ + 2, /* field[2] = type_mod */ + 0, /* field[0] = xpr */ +}; +static const ProtobufCIntRange pg_query__set_to_default__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 5 } +}; +const ProtobufCMessageDescriptor pg_query__set_to_default__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "pg_query.SetToDefault", + "SetToDefault", + "PgQuery__SetToDefault", + "pg_query", + sizeof(PgQuery__SetToDefault), + 5, + pg_query__set_to_default__field_descriptors, + pg_query__set_to_default__field_indices_by_name, + 1, pg_query__set_to_default__number_ranges, + (ProtobufCMessageInit) pg_query__set_to_default__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor pg_query__current_of_expr__field_descriptors[4] = +{ + { + "xpr", + 1, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(PgQuery__CurrentOfExpr, xpr), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "cvarno", + 2, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT32, + 0, /* quantifier_offset */ + offsetof(PgQuery__CurrentOfExpr, cvarno), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "cursor_name", + 3, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_STRING, + 0, /* quantifier_offset */ + offsetof(PgQuery__CurrentOfExpr, cursor_name), + NULL, + &protobuf_c_empty_string, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "cursor_param", + 4, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(PgQuery__CurrentOfExpr, cursor_param), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned pg_query__current_of_expr__field_indices_by_name[] = { + 2, /* field[2] = cursor_name */ + 3, /* field[3] = cursor_param */ + 1, /* field[1] = cvarno */ + 0, /* field[0] = xpr */ +}; +static const ProtobufCIntRange pg_query__current_of_expr__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 4 } +}; +const ProtobufCMessageDescriptor pg_query__current_of_expr__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "pg_query.CurrentOfExpr", + "CurrentOfExpr", + "PgQuery__CurrentOfExpr", + "pg_query", + sizeof(PgQuery__CurrentOfExpr), + 4, + pg_query__current_of_expr__field_descriptors, + pg_query__current_of_expr__field_indices_by_name, + 1, pg_query__current_of_expr__number_ranges, + (ProtobufCMessageInit) pg_query__current_of_expr__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor pg_query__next_value_expr__field_descriptors[3] = +{ + { + "xpr", + 1, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(PgQuery__NextValueExpr, xpr), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "seqid", + 2, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT32, + 0, /* quantifier_offset */ + offsetof(PgQuery__NextValueExpr, seqid), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "type_id", + 3, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT32, + 0, /* quantifier_offset */ + offsetof(PgQuery__NextValueExpr, type_id), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned pg_query__next_value_expr__field_indices_by_name[] = { + 1, /* field[1] = seqid */ + 2, /* field[2] = type_id */ + 0, /* field[0] = xpr */ +}; +static const ProtobufCIntRange pg_query__next_value_expr__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 3 } +}; +const ProtobufCMessageDescriptor pg_query__next_value_expr__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "pg_query.NextValueExpr", + "NextValueExpr", + "PgQuery__NextValueExpr", + "pg_query", + sizeof(PgQuery__NextValueExpr), + 3, + pg_query__next_value_expr__field_descriptors, + pg_query__next_value_expr__field_indices_by_name, + 1, pg_query__next_value_expr__number_ranges, + (ProtobufCMessageInit) pg_query__next_value_expr__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor pg_query__inference_elem__field_descriptors[4] = +{ + { + "xpr", + 1, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(PgQuery__InferenceElem, xpr), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "expr", + 2, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(PgQuery__InferenceElem, expr), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "infercollid", + 3, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT32, + 0, /* quantifier_offset */ + offsetof(PgQuery__InferenceElem, infercollid), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "inferopclass", + 4, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT32, + 0, /* quantifier_offset */ + offsetof(PgQuery__InferenceElem, inferopclass), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned pg_query__inference_elem__field_indices_by_name[] = { + 1, /* field[1] = expr */ + 2, /* field[2] = infercollid */ + 3, /* field[3] = inferopclass */ + 0, /* field[0] = xpr */ +}; +static const ProtobufCIntRange pg_query__inference_elem__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 4 } +}; +const ProtobufCMessageDescriptor pg_query__inference_elem__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "pg_query.InferenceElem", + "InferenceElem", + "PgQuery__InferenceElem", + "pg_query", + sizeof(PgQuery__InferenceElem), + 4, + pg_query__inference_elem__field_descriptors, + pg_query__inference_elem__field_indices_by_name, + 1, pg_query__inference_elem__number_ranges, + (ProtobufCMessageInit) pg_query__inference_elem__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor pg_query__target_entry__field_descriptors[8] = +{ + { + "xpr", + 1, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(PgQuery__TargetEntry, xpr), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "expr", + 2, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(PgQuery__TargetEntry, expr), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "resno", + 3, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(PgQuery__TargetEntry, resno), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "resname", + 4, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_STRING, + 0, /* quantifier_offset */ + offsetof(PgQuery__TargetEntry, resname), + NULL, + &protobuf_c_empty_string, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "ressortgroupref", + 5, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT32, + 0, /* quantifier_offset */ + offsetof(PgQuery__TargetEntry, ressortgroupref), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "resorigtbl", + 6, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT32, + 0, /* quantifier_offset */ + offsetof(PgQuery__TargetEntry, resorigtbl), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "resorigcol", + 7, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(PgQuery__TargetEntry, resorigcol), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "resjunk", + 8, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_BOOL, + 0, /* quantifier_offset */ + offsetof(PgQuery__TargetEntry, resjunk), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned pg_query__target_entry__field_indices_by_name[] = { + 1, /* field[1] = expr */ + 7, /* field[7] = resjunk */ + 3, /* field[3] = resname */ + 2, /* field[2] = resno */ + 6, /* field[6] = resorigcol */ + 5, /* field[5] = resorigtbl */ + 4, /* field[4] = ressortgroupref */ + 0, /* field[0] = xpr */ +}; +static const ProtobufCIntRange pg_query__target_entry__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 8 } +}; +const ProtobufCMessageDescriptor pg_query__target_entry__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "pg_query.TargetEntry", + "TargetEntry", + "PgQuery__TargetEntry", + "pg_query", + sizeof(PgQuery__TargetEntry), + 8, + pg_query__target_entry__field_descriptors, + pg_query__target_entry__field_indices_by_name, + 1, pg_query__target_entry__number_ranges, + (ProtobufCMessageInit) pg_query__target_entry__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor pg_query__range_tbl_ref__field_descriptors[1] = +{ + { + "rtindex", + 1, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(PgQuery__RangeTblRef, rtindex), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned pg_query__range_tbl_ref__field_indices_by_name[] = { + 0, /* field[0] = rtindex */ +}; +static const ProtobufCIntRange pg_query__range_tbl_ref__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 1 } +}; +const ProtobufCMessageDescriptor pg_query__range_tbl_ref__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "pg_query.RangeTblRef", + "RangeTblRef", + "PgQuery__RangeTblRef", + "pg_query", + sizeof(PgQuery__RangeTblRef), + 1, + pg_query__range_tbl_ref__field_descriptors, + pg_query__range_tbl_ref__field_indices_by_name, + 1, pg_query__range_tbl_ref__number_ranges, + (ProtobufCMessageInit) pg_query__range_tbl_ref__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor pg_query__join_expr__field_descriptors[8] = +{ + { + "jointype", + 1, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_ENUM, + 0, /* quantifier_offset */ + offsetof(PgQuery__JoinExpr, jointype), + &pg_query__join_type__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "is_natural", + 2, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_BOOL, + 0, /* quantifier_offset */ + offsetof(PgQuery__JoinExpr, is_natural), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "larg", + 3, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(PgQuery__JoinExpr, larg), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "rarg", + 4, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(PgQuery__JoinExpr, rarg), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "using_clause", + 5, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__JoinExpr, n_using_clause), + offsetof(PgQuery__JoinExpr, using_clause), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "quals", + 6, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(PgQuery__JoinExpr, quals), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "alias", + 7, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(PgQuery__JoinExpr, alias), + &pg_query__alias__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "rtindex", + 8, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(PgQuery__JoinExpr, rtindex), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned pg_query__join_expr__field_indices_by_name[] = { + 6, /* field[6] = alias */ + 1, /* field[1] = is_natural */ + 0, /* field[0] = jointype */ + 2, /* field[2] = larg */ + 5, /* field[5] = quals */ + 3, /* field[3] = rarg */ + 7, /* field[7] = rtindex */ + 4, /* field[4] = using_clause */ +}; +static const ProtobufCIntRange pg_query__join_expr__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 8 } +}; +const ProtobufCMessageDescriptor pg_query__join_expr__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "pg_query.JoinExpr", + "JoinExpr", + "PgQuery__JoinExpr", + "pg_query", + sizeof(PgQuery__JoinExpr), + 8, + pg_query__join_expr__field_descriptors, + pg_query__join_expr__field_indices_by_name, + 1, pg_query__join_expr__number_ranges, + (ProtobufCMessageInit) pg_query__join_expr__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor pg_query__from_expr__field_descriptors[2] = +{ + { + "fromlist", + 1, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__FromExpr, n_fromlist), + offsetof(PgQuery__FromExpr, fromlist), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "quals", + 2, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(PgQuery__FromExpr, quals), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned pg_query__from_expr__field_indices_by_name[] = { + 0, /* field[0] = fromlist */ + 1, /* field[1] = quals */ +}; +static const ProtobufCIntRange pg_query__from_expr__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 2 } +}; +const ProtobufCMessageDescriptor pg_query__from_expr__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "pg_query.FromExpr", + "FromExpr", + "PgQuery__FromExpr", + "pg_query", + sizeof(PgQuery__FromExpr), + 2, + pg_query__from_expr__field_descriptors, + pg_query__from_expr__field_indices_by_name, + 1, pg_query__from_expr__number_ranges, + (ProtobufCMessageInit) pg_query__from_expr__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor pg_query__on_conflict_expr__field_descriptors[8] = +{ + { + "action", + 1, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_ENUM, + 0, /* quantifier_offset */ + offsetof(PgQuery__OnConflictExpr, action), + &pg_query__on_conflict_action__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "arbiter_elems", + 2, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__OnConflictExpr, n_arbiter_elems), + offsetof(PgQuery__OnConflictExpr, arbiter_elems), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "arbiter_where", + 3, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(PgQuery__OnConflictExpr, arbiter_where), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "constraint", + 4, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT32, + 0, /* quantifier_offset */ + offsetof(PgQuery__OnConflictExpr, constraint), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "on_conflict_set", + 5, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__OnConflictExpr, n_on_conflict_set), + offsetof(PgQuery__OnConflictExpr, on_conflict_set), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "on_conflict_where", + 6, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(PgQuery__OnConflictExpr, on_conflict_where), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "excl_rel_index", + 7, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(PgQuery__OnConflictExpr, excl_rel_index), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "excl_rel_tlist", + 8, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__OnConflictExpr, n_excl_rel_tlist), + offsetof(PgQuery__OnConflictExpr, excl_rel_tlist), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned pg_query__on_conflict_expr__field_indices_by_name[] = { + 0, /* field[0] = action */ + 1, /* field[1] = arbiter_elems */ + 2, /* field[2] = arbiter_where */ + 3, /* field[3] = constraint */ + 6, /* field[6] = excl_rel_index */ + 7, /* field[7] = excl_rel_tlist */ + 4, /* field[4] = on_conflict_set */ + 5, /* field[5] = on_conflict_where */ +}; +static const ProtobufCIntRange pg_query__on_conflict_expr__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 8 } +}; +const ProtobufCMessageDescriptor pg_query__on_conflict_expr__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "pg_query.OnConflictExpr", + "OnConflictExpr", + "PgQuery__OnConflictExpr", + "pg_query", + sizeof(PgQuery__OnConflictExpr), + 8, + pg_query__on_conflict_expr__field_descriptors, + pg_query__on_conflict_expr__field_indices_by_name, + 1, pg_query__on_conflict_expr__number_ranges, + (ProtobufCMessageInit) pg_query__on_conflict_expr__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor pg_query__into_clause__field_descriptors[8] = +{ + { + "rel", + 1, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(PgQuery__IntoClause, rel), + &pg_query__range_var__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "col_names", + 2, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__IntoClause, n_col_names), + offsetof(PgQuery__IntoClause, col_names), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "access_method", + 3, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_STRING, + 0, /* quantifier_offset */ + offsetof(PgQuery__IntoClause, access_method), + NULL, + &protobuf_c_empty_string, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "options", + 4, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__IntoClause, n_options), + offsetof(PgQuery__IntoClause, options), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "on_commit", + 5, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_ENUM, + 0, /* quantifier_offset */ + offsetof(PgQuery__IntoClause, on_commit), + &pg_query__on_commit_action__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "table_space_name", + 6, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_STRING, + 0, /* quantifier_offset */ + offsetof(PgQuery__IntoClause, table_space_name), + NULL, + &protobuf_c_empty_string, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "view_query", + 7, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(PgQuery__IntoClause, view_query), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "skip_data", + 8, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_BOOL, + 0, /* quantifier_offset */ + offsetof(PgQuery__IntoClause, skip_data), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned pg_query__into_clause__field_indices_by_name[] = { + 2, /* field[2] = access_method */ + 1, /* field[1] = col_names */ + 4, /* field[4] = on_commit */ + 3, /* field[3] = options */ + 0, /* field[0] = rel */ + 7, /* field[7] = skip_data */ + 5, /* field[5] = table_space_name */ + 6, /* field[6] = view_query */ +}; +static const ProtobufCIntRange pg_query__into_clause__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 8 } +}; +const ProtobufCMessageDescriptor pg_query__into_clause__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "pg_query.IntoClause", + "IntoClause", + "PgQuery__IntoClause", + "pg_query", + sizeof(PgQuery__IntoClause), + 8, + pg_query__into_clause__field_descriptors, + pg_query__into_clause__field_indices_by_name, + 1, pg_query__into_clause__number_ranges, + (ProtobufCMessageInit) pg_query__into_clause__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor pg_query__raw_stmt__field_descriptors[3] = +{ + { + "stmt", + 1, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(PgQuery__RawStmt, stmt), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "stmt_location", + 2, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(PgQuery__RawStmt, stmt_location), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "stmt_len", + 3, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(PgQuery__RawStmt, stmt_len), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned pg_query__raw_stmt__field_indices_by_name[] = { + 0, /* field[0] = stmt */ + 2, /* field[2] = stmt_len */ + 1, /* field[1] = stmt_location */ +}; +static const ProtobufCIntRange pg_query__raw_stmt__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 3 } +}; +const ProtobufCMessageDescriptor pg_query__raw_stmt__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "pg_query.RawStmt", + "RawStmt", + "PgQuery__RawStmt", + "pg_query", + sizeof(PgQuery__RawStmt), + 3, + pg_query__raw_stmt__field_descriptors, + pg_query__raw_stmt__field_indices_by_name, + 1, pg_query__raw_stmt__number_ranges, + (ProtobufCMessageInit) pg_query__raw_stmt__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor pg_query__query__field_descriptors[36] = +{ + { + "command_type", + 1, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_ENUM, + 0, /* quantifier_offset */ + offsetof(PgQuery__Query, command_type), + &pg_query__cmd_type__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "query_source", + 2, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_ENUM, + 0, /* quantifier_offset */ + offsetof(PgQuery__Query, query_source), + &pg_query__query_source__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "can_set_tag", + 3, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_BOOL, + 0, /* quantifier_offset */ + offsetof(PgQuery__Query, can_set_tag), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "utility_stmt", + 4, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(PgQuery__Query, utility_stmt), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "result_relation", + 5, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(PgQuery__Query, result_relation), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "has_aggs", + 6, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_BOOL, + 0, /* quantifier_offset */ + offsetof(PgQuery__Query, has_aggs), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "has_window_funcs", + 7, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_BOOL, + 0, /* quantifier_offset */ + offsetof(PgQuery__Query, has_window_funcs), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "has_target_srfs", + 8, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_BOOL, + 0, /* quantifier_offset */ + offsetof(PgQuery__Query, has_target_srfs), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "has_sub_links", + 9, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_BOOL, + 0, /* quantifier_offset */ + offsetof(PgQuery__Query, has_sub_links), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "has_distinct_on", + 10, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_BOOL, + 0, /* quantifier_offset */ + offsetof(PgQuery__Query, has_distinct_on), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "has_recursive", + 11, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_BOOL, + 0, /* quantifier_offset */ + offsetof(PgQuery__Query, has_recursive), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "has_modifying_cte", + 12, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_BOOL, + 0, /* quantifier_offset */ + offsetof(PgQuery__Query, has_modifying_cte), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "has_for_update", + 13, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_BOOL, + 0, /* quantifier_offset */ + offsetof(PgQuery__Query, has_for_update), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "has_row_security", + 14, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_BOOL, + 0, /* quantifier_offset */ + offsetof(PgQuery__Query, has_row_security), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "cte_list", + 15, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__Query, n_cte_list), + offsetof(PgQuery__Query, cte_list), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "rtable", + 16, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__Query, n_rtable), + offsetof(PgQuery__Query, rtable), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "jointree", + 17, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(PgQuery__Query, jointree), + &pg_query__from_expr__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "target_list", + 18, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__Query, n_target_list), + offsetof(PgQuery__Query, target_list), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "override", + 19, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_ENUM, + 0, /* quantifier_offset */ + offsetof(PgQuery__Query, override), + &pg_query__overriding_kind__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "on_conflict", + 20, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(PgQuery__Query, on_conflict), + &pg_query__on_conflict_expr__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "returning_list", + 21, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__Query, n_returning_list), + offsetof(PgQuery__Query, returning_list), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "group_clause", + 22, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__Query, n_group_clause), + offsetof(PgQuery__Query, group_clause), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "grouping_sets", + 23, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__Query, n_grouping_sets), + offsetof(PgQuery__Query, grouping_sets), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "having_qual", + 24, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(PgQuery__Query, having_qual), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "window_clause", + 25, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__Query, n_window_clause), + offsetof(PgQuery__Query, window_clause), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "distinct_clause", + 26, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__Query, n_distinct_clause), + offsetof(PgQuery__Query, distinct_clause), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "sort_clause", + 27, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__Query, n_sort_clause), + offsetof(PgQuery__Query, sort_clause), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "limit_offset", + 28, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(PgQuery__Query, limit_offset), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "limit_count", + 29, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(PgQuery__Query, limit_count), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "limit_option", + 30, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_ENUM, + 0, /* quantifier_offset */ + offsetof(PgQuery__Query, limit_option), + &pg_query__limit_option__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "row_marks", + 31, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__Query, n_row_marks), + offsetof(PgQuery__Query, row_marks), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "set_operations", + 32, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(PgQuery__Query, set_operations), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "constraint_deps", + 33, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__Query, n_constraint_deps), + offsetof(PgQuery__Query, constraint_deps), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "with_check_options", + 34, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__Query, n_with_check_options), + offsetof(PgQuery__Query, with_check_options), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "stmt_location", + 35, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(PgQuery__Query, stmt_location), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "stmt_len", + 36, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(PgQuery__Query, stmt_len), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned pg_query__query__field_indices_by_name[] = { + 2, /* field[2] = can_set_tag */ + 0, /* field[0] = command_type */ + 32, /* field[32] = constraint_deps */ + 14, /* field[14] = cte_list */ + 25, /* field[25] = distinct_clause */ + 21, /* field[21] = group_clause */ + 22, /* field[22] = grouping_sets */ + 5, /* field[5] = has_aggs */ + 9, /* field[9] = has_distinct_on */ + 12, /* field[12] = has_for_update */ + 11, /* field[11] = has_modifying_cte */ + 10, /* field[10] = has_recursive */ + 13, /* field[13] = has_row_security */ + 8, /* field[8] = has_sub_links */ + 7, /* field[7] = has_target_srfs */ + 6, /* field[6] = has_window_funcs */ + 23, /* field[23] = having_qual */ + 16, /* field[16] = jointree */ + 28, /* field[28] = limit_count */ + 27, /* field[27] = limit_offset */ + 29, /* field[29] = limit_option */ + 19, /* field[19] = on_conflict */ + 18, /* field[18] = override */ + 1, /* field[1] = query_source */ + 4, /* field[4] = result_relation */ + 20, /* field[20] = returning_list */ + 30, /* field[30] = row_marks */ + 15, /* field[15] = rtable */ + 31, /* field[31] = set_operations */ + 26, /* field[26] = sort_clause */ + 35, /* field[35] = stmt_len */ + 34, /* field[34] = stmt_location */ + 17, /* field[17] = target_list */ + 3, /* field[3] = utility_stmt */ + 24, /* field[24] = window_clause */ + 33, /* field[33] = with_check_options */ +}; +static const ProtobufCIntRange pg_query__query__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 36 } +}; +const ProtobufCMessageDescriptor pg_query__query__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "pg_query.Query", + "Query", + "PgQuery__Query", + "pg_query", + sizeof(PgQuery__Query), + 36, + pg_query__query__field_descriptors, + pg_query__query__field_indices_by_name, + 1, pg_query__query__number_ranges, + (ProtobufCMessageInit) pg_query__query__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor pg_query__insert_stmt__field_descriptors[7] = +{ + { + "relation", + 1, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(PgQuery__InsertStmt, relation), + &pg_query__range_var__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "cols", + 2, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__InsertStmt, n_cols), + offsetof(PgQuery__InsertStmt, cols), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "select_stmt", + 3, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(PgQuery__InsertStmt, select_stmt), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "on_conflict_clause", + 4, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(PgQuery__InsertStmt, on_conflict_clause), + &pg_query__on_conflict_clause__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "returning_list", + 5, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__InsertStmt, n_returning_list), + offsetof(PgQuery__InsertStmt, returning_list), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "with_clause", + 6, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(PgQuery__InsertStmt, with_clause), + &pg_query__with_clause__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "override", + 7, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_ENUM, + 0, /* quantifier_offset */ + offsetof(PgQuery__InsertStmt, override), + &pg_query__overriding_kind__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned pg_query__insert_stmt__field_indices_by_name[] = { + 1, /* field[1] = cols */ + 3, /* field[3] = on_conflict_clause */ + 6, /* field[6] = override */ + 0, /* field[0] = relation */ + 4, /* field[4] = returning_list */ + 2, /* field[2] = select_stmt */ + 5, /* field[5] = with_clause */ +}; +static const ProtobufCIntRange pg_query__insert_stmt__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 7 } +}; +const ProtobufCMessageDescriptor pg_query__insert_stmt__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "pg_query.InsertStmt", + "InsertStmt", + "PgQuery__InsertStmt", + "pg_query", + sizeof(PgQuery__InsertStmt), + 7, + pg_query__insert_stmt__field_descriptors, + pg_query__insert_stmt__field_indices_by_name, + 1, pg_query__insert_stmt__number_ranges, + (ProtobufCMessageInit) pg_query__insert_stmt__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor pg_query__delete_stmt__field_descriptors[5] = +{ + { + "relation", + 1, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(PgQuery__DeleteStmt, relation), + &pg_query__range_var__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "using_clause", + 2, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__DeleteStmt, n_using_clause), + offsetof(PgQuery__DeleteStmt, using_clause), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "where_clause", + 3, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(PgQuery__DeleteStmt, where_clause), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "returning_list", + 4, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__DeleteStmt, n_returning_list), + offsetof(PgQuery__DeleteStmt, returning_list), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "with_clause", + 5, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(PgQuery__DeleteStmt, with_clause), + &pg_query__with_clause__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned pg_query__delete_stmt__field_indices_by_name[] = { + 0, /* field[0] = relation */ + 3, /* field[3] = returning_list */ + 1, /* field[1] = using_clause */ + 2, /* field[2] = where_clause */ + 4, /* field[4] = with_clause */ +}; +static const ProtobufCIntRange pg_query__delete_stmt__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 5 } +}; +const ProtobufCMessageDescriptor pg_query__delete_stmt__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "pg_query.DeleteStmt", + "DeleteStmt", + "PgQuery__DeleteStmt", + "pg_query", + sizeof(PgQuery__DeleteStmt), + 5, + pg_query__delete_stmt__field_descriptors, + pg_query__delete_stmt__field_indices_by_name, + 1, pg_query__delete_stmt__number_ranges, + (ProtobufCMessageInit) pg_query__delete_stmt__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor pg_query__update_stmt__field_descriptors[6] = +{ + { + "relation", + 1, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(PgQuery__UpdateStmt, relation), + &pg_query__range_var__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "target_list", + 2, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__UpdateStmt, n_target_list), + offsetof(PgQuery__UpdateStmt, target_list), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "where_clause", + 3, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(PgQuery__UpdateStmt, where_clause), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "from_clause", + 4, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__UpdateStmt, n_from_clause), + offsetof(PgQuery__UpdateStmt, from_clause), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "returning_list", + 5, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__UpdateStmt, n_returning_list), + offsetof(PgQuery__UpdateStmt, returning_list), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "with_clause", + 6, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(PgQuery__UpdateStmt, with_clause), + &pg_query__with_clause__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned pg_query__update_stmt__field_indices_by_name[] = { + 3, /* field[3] = from_clause */ + 0, /* field[0] = relation */ + 4, /* field[4] = returning_list */ + 1, /* field[1] = target_list */ + 2, /* field[2] = where_clause */ + 5, /* field[5] = with_clause */ +}; +static const ProtobufCIntRange pg_query__update_stmt__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 6 } +}; +const ProtobufCMessageDescriptor pg_query__update_stmt__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "pg_query.UpdateStmt", + "UpdateStmt", + "PgQuery__UpdateStmt", + "pg_query", + sizeof(PgQuery__UpdateStmt), + 6, + pg_query__update_stmt__field_descriptors, + pg_query__update_stmt__field_indices_by_name, + 1, pg_query__update_stmt__number_ranges, + (ProtobufCMessageInit) pg_query__update_stmt__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor pg_query__select_stmt__field_descriptors[19] = +{ + { + "distinct_clause", + 1, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__SelectStmt, n_distinct_clause), + offsetof(PgQuery__SelectStmt, distinct_clause), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "into_clause", + 2, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(PgQuery__SelectStmt, into_clause), + &pg_query__into_clause__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "target_list", + 3, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__SelectStmt, n_target_list), + offsetof(PgQuery__SelectStmt, target_list), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "from_clause", + 4, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__SelectStmt, n_from_clause), + offsetof(PgQuery__SelectStmt, from_clause), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "where_clause", + 5, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(PgQuery__SelectStmt, where_clause), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "group_clause", + 6, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__SelectStmt, n_group_clause), + offsetof(PgQuery__SelectStmt, group_clause), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "having_clause", + 7, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(PgQuery__SelectStmt, having_clause), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "window_clause", + 8, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__SelectStmt, n_window_clause), + offsetof(PgQuery__SelectStmt, window_clause), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "values_lists", + 9, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__SelectStmt, n_values_lists), + offsetof(PgQuery__SelectStmt, values_lists), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "sort_clause", + 10, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__SelectStmt, n_sort_clause), + offsetof(PgQuery__SelectStmt, sort_clause), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "limit_offset", + 11, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(PgQuery__SelectStmt, limit_offset), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "limit_count", + 12, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(PgQuery__SelectStmt, limit_count), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "limit_option", + 13, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_ENUM, + 0, /* quantifier_offset */ + offsetof(PgQuery__SelectStmt, limit_option), + &pg_query__limit_option__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "locking_clause", + 14, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__SelectStmt, n_locking_clause), + offsetof(PgQuery__SelectStmt, locking_clause), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "with_clause", + 15, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(PgQuery__SelectStmt, with_clause), + &pg_query__with_clause__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "op", + 16, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_ENUM, + 0, /* quantifier_offset */ + offsetof(PgQuery__SelectStmt, op), + &pg_query__set_operation__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "all", + 17, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_BOOL, + 0, /* quantifier_offset */ + offsetof(PgQuery__SelectStmt, all), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "larg", + 18, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(PgQuery__SelectStmt, larg), + &pg_query__select_stmt__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "rarg", + 19, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(PgQuery__SelectStmt, rarg), + &pg_query__select_stmt__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned pg_query__select_stmt__field_indices_by_name[] = { + 16, /* field[16] = all */ + 0, /* field[0] = distinct_clause */ + 3, /* field[3] = from_clause */ + 5, /* field[5] = group_clause */ + 6, /* field[6] = having_clause */ + 1, /* field[1] = into_clause */ + 17, /* field[17] = larg */ + 11, /* field[11] = limit_count */ + 10, /* field[10] = limit_offset */ + 12, /* field[12] = limit_option */ + 13, /* field[13] = locking_clause */ + 15, /* field[15] = op */ + 18, /* field[18] = rarg */ + 9, /* field[9] = sort_clause */ + 2, /* field[2] = target_list */ + 8, /* field[8] = values_lists */ + 4, /* field[4] = where_clause */ + 7, /* field[7] = window_clause */ + 14, /* field[14] = with_clause */ +}; +static const ProtobufCIntRange pg_query__select_stmt__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 19 } +}; +const ProtobufCMessageDescriptor pg_query__select_stmt__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "pg_query.SelectStmt", + "SelectStmt", + "PgQuery__SelectStmt", + "pg_query", + sizeof(PgQuery__SelectStmt), + 19, + pg_query__select_stmt__field_descriptors, + pg_query__select_stmt__field_indices_by_name, + 1, pg_query__select_stmt__number_ranges, + (ProtobufCMessageInit) pg_query__select_stmt__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor pg_query__alter_table_stmt__field_descriptors[4] = +{ + { + "relation", + 1, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(PgQuery__AlterTableStmt, relation), + &pg_query__range_var__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "cmds", + 2, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__AlterTableStmt, n_cmds), + offsetof(PgQuery__AlterTableStmt, cmds), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "relkind", + 3, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_ENUM, + 0, /* quantifier_offset */ + offsetof(PgQuery__AlterTableStmt, relkind), + &pg_query__object_type__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "missing_ok", + 4, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_BOOL, + 0, /* quantifier_offset */ + offsetof(PgQuery__AlterTableStmt, missing_ok), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned pg_query__alter_table_stmt__field_indices_by_name[] = { + 1, /* field[1] = cmds */ + 3, /* field[3] = missing_ok */ + 0, /* field[0] = relation */ + 2, /* field[2] = relkind */ +}; +static const ProtobufCIntRange pg_query__alter_table_stmt__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 4 } +}; +const ProtobufCMessageDescriptor pg_query__alter_table_stmt__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "pg_query.AlterTableStmt", + "AlterTableStmt", + "PgQuery__AlterTableStmt", + "pg_query", + sizeof(PgQuery__AlterTableStmt), + 4, + pg_query__alter_table_stmt__field_descriptors, + pg_query__alter_table_stmt__field_indices_by_name, + 1, pg_query__alter_table_stmt__number_ranges, + (ProtobufCMessageInit) pg_query__alter_table_stmt__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor pg_query__alter_table_cmd__field_descriptors[7] = +{ + { + "subtype", + 1, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_ENUM, + 0, /* quantifier_offset */ + offsetof(PgQuery__AlterTableCmd, subtype), + &pg_query__alter_table_type__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "name", + 2, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_STRING, + 0, /* quantifier_offset */ + offsetof(PgQuery__AlterTableCmd, name), + NULL, + &protobuf_c_empty_string, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "num", + 3, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(PgQuery__AlterTableCmd, num), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "newowner", + 4, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(PgQuery__AlterTableCmd, newowner), + &pg_query__role_spec__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "def", + 5, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(PgQuery__AlterTableCmd, def), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "behavior", + 6, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_ENUM, + 0, /* quantifier_offset */ + offsetof(PgQuery__AlterTableCmd, behavior), + &pg_query__drop_behavior__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "missing_ok", + 7, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_BOOL, + 0, /* quantifier_offset */ + offsetof(PgQuery__AlterTableCmd, missing_ok), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned pg_query__alter_table_cmd__field_indices_by_name[] = { + 5, /* field[5] = behavior */ + 4, /* field[4] = def */ + 6, /* field[6] = missing_ok */ + 1, /* field[1] = name */ + 3, /* field[3] = newowner */ + 2, /* field[2] = num */ + 0, /* field[0] = subtype */ +}; +static const ProtobufCIntRange pg_query__alter_table_cmd__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 7 } +}; +const ProtobufCMessageDescriptor pg_query__alter_table_cmd__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "pg_query.AlterTableCmd", + "AlterTableCmd", + "PgQuery__AlterTableCmd", + "pg_query", + sizeof(PgQuery__AlterTableCmd), + 7, + pg_query__alter_table_cmd__field_descriptors, + pg_query__alter_table_cmd__field_indices_by_name, + 1, pg_query__alter_table_cmd__number_ranges, + (ProtobufCMessageInit) pg_query__alter_table_cmd__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor pg_query__alter_domain_stmt__field_descriptors[6] = +{ + { + "subtype", + 1, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_STRING, + 0, /* quantifier_offset */ + offsetof(PgQuery__AlterDomainStmt, subtype), + NULL, + &protobuf_c_empty_string, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "type_name", + 2, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__AlterDomainStmt, n_type_name), + offsetof(PgQuery__AlterDomainStmt, type_name), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "name", + 3, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_STRING, + 0, /* quantifier_offset */ + offsetof(PgQuery__AlterDomainStmt, name), + NULL, + &protobuf_c_empty_string, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "def", + 4, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(PgQuery__AlterDomainStmt, def), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "behavior", + 5, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_ENUM, + 0, /* quantifier_offset */ + offsetof(PgQuery__AlterDomainStmt, behavior), + &pg_query__drop_behavior__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "missing_ok", + 6, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_BOOL, + 0, /* quantifier_offset */ + offsetof(PgQuery__AlterDomainStmt, missing_ok), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned pg_query__alter_domain_stmt__field_indices_by_name[] = { + 4, /* field[4] = behavior */ + 3, /* field[3] = def */ + 5, /* field[5] = missing_ok */ + 2, /* field[2] = name */ + 0, /* field[0] = subtype */ + 1, /* field[1] = type_name */ +}; +static const ProtobufCIntRange pg_query__alter_domain_stmt__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 6 } +}; +const ProtobufCMessageDescriptor pg_query__alter_domain_stmt__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "pg_query.AlterDomainStmt", + "AlterDomainStmt", + "PgQuery__AlterDomainStmt", + "pg_query", + sizeof(PgQuery__AlterDomainStmt), + 6, + pg_query__alter_domain_stmt__field_descriptors, + pg_query__alter_domain_stmt__field_indices_by_name, + 1, pg_query__alter_domain_stmt__number_ranges, + (ProtobufCMessageInit) pg_query__alter_domain_stmt__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor pg_query__set_operation_stmt__field_descriptors[8] = +{ + { + "op", + 1, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_ENUM, + 0, /* quantifier_offset */ + offsetof(PgQuery__SetOperationStmt, op), + &pg_query__set_operation__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "all", + 2, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_BOOL, + 0, /* quantifier_offset */ + offsetof(PgQuery__SetOperationStmt, all), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "larg", + 3, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(PgQuery__SetOperationStmt, larg), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "rarg", + 4, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(PgQuery__SetOperationStmt, rarg), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "col_types", + 5, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__SetOperationStmt, n_col_types), + offsetof(PgQuery__SetOperationStmt, col_types), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "col_typmods", + 6, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__SetOperationStmt, n_col_typmods), + offsetof(PgQuery__SetOperationStmt, col_typmods), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "col_collations", + 7, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__SetOperationStmt, n_col_collations), + offsetof(PgQuery__SetOperationStmt, col_collations), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "group_clauses", + 8, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__SetOperationStmt, n_group_clauses), + offsetof(PgQuery__SetOperationStmt, group_clauses), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned pg_query__set_operation_stmt__field_indices_by_name[] = { + 1, /* field[1] = all */ + 6, /* field[6] = col_collations */ + 4, /* field[4] = col_types */ + 5, /* field[5] = col_typmods */ + 7, /* field[7] = group_clauses */ + 2, /* field[2] = larg */ + 0, /* field[0] = op */ + 3, /* field[3] = rarg */ +}; +static const ProtobufCIntRange pg_query__set_operation_stmt__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 8 } +}; +const ProtobufCMessageDescriptor pg_query__set_operation_stmt__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "pg_query.SetOperationStmt", + "SetOperationStmt", + "PgQuery__SetOperationStmt", + "pg_query", + sizeof(PgQuery__SetOperationStmt), + 8, + pg_query__set_operation_stmt__field_descriptors, + pg_query__set_operation_stmt__field_indices_by_name, + 1, pg_query__set_operation_stmt__number_ranges, + (ProtobufCMessageInit) pg_query__set_operation_stmt__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor pg_query__grant_stmt__field_descriptors[8] = +{ + { + "is_grant", + 1, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_BOOL, + 0, /* quantifier_offset */ + offsetof(PgQuery__GrantStmt, is_grant), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "targtype", + 2, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_ENUM, + 0, /* quantifier_offset */ + offsetof(PgQuery__GrantStmt, targtype), + &pg_query__grant_target_type__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "objtype", + 3, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_ENUM, + 0, /* quantifier_offset */ + offsetof(PgQuery__GrantStmt, objtype), + &pg_query__object_type__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "objects", + 4, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__GrantStmt, n_objects), + offsetof(PgQuery__GrantStmt, objects), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "privileges", + 5, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__GrantStmt, n_privileges), + offsetof(PgQuery__GrantStmt, privileges), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "grantees", + 6, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__GrantStmt, n_grantees), + offsetof(PgQuery__GrantStmt, grantees), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "grant_option", + 7, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_BOOL, + 0, /* quantifier_offset */ + offsetof(PgQuery__GrantStmt, grant_option), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "behavior", + 8, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_ENUM, + 0, /* quantifier_offset */ + offsetof(PgQuery__GrantStmt, behavior), + &pg_query__drop_behavior__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned pg_query__grant_stmt__field_indices_by_name[] = { + 7, /* field[7] = behavior */ + 6, /* field[6] = grant_option */ + 5, /* field[5] = grantees */ + 0, /* field[0] = is_grant */ + 3, /* field[3] = objects */ + 2, /* field[2] = objtype */ + 4, /* field[4] = privileges */ + 1, /* field[1] = targtype */ +}; +static const ProtobufCIntRange pg_query__grant_stmt__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 8 } +}; +const ProtobufCMessageDescriptor pg_query__grant_stmt__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "pg_query.GrantStmt", + "GrantStmt", + "PgQuery__GrantStmt", + "pg_query", + sizeof(PgQuery__GrantStmt), + 8, + pg_query__grant_stmt__field_descriptors, + pg_query__grant_stmt__field_indices_by_name, + 1, pg_query__grant_stmt__number_ranges, + (ProtobufCMessageInit) pg_query__grant_stmt__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor pg_query__grant_role_stmt__field_descriptors[6] = +{ + { + "granted_roles", + 1, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__GrantRoleStmt, n_granted_roles), + offsetof(PgQuery__GrantRoleStmt, granted_roles), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "grantee_roles", + 2, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__GrantRoleStmt, n_grantee_roles), + offsetof(PgQuery__GrantRoleStmt, grantee_roles), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "is_grant", + 3, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_BOOL, + 0, /* quantifier_offset */ + offsetof(PgQuery__GrantRoleStmt, is_grant), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "admin_opt", + 4, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_BOOL, + 0, /* quantifier_offset */ + offsetof(PgQuery__GrantRoleStmt, admin_opt), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "grantor", + 5, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(PgQuery__GrantRoleStmt, grantor), + &pg_query__role_spec__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "behavior", + 6, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_ENUM, + 0, /* quantifier_offset */ + offsetof(PgQuery__GrantRoleStmt, behavior), + &pg_query__drop_behavior__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned pg_query__grant_role_stmt__field_indices_by_name[] = { + 3, /* field[3] = admin_opt */ + 5, /* field[5] = behavior */ + 0, /* field[0] = granted_roles */ + 1, /* field[1] = grantee_roles */ + 4, /* field[4] = grantor */ + 2, /* field[2] = is_grant */ +}; +static const ProtobufCIntRange pg_query__grant_role_stmt__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 6 } +}; +const ProtobufCMessageDescriptor pg_query__grant_role_stmt__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "pg_query.GrantRoleStmt", + "GrantRoleStmt", + "PgQuery__GrantRoleStmt", + "pg_query", + sizeof(PgQuery__GrantRoleStmt), + 6, + pg_query__grant_role_stmt__field_descriptors, + pg_query__grant_role_stmt__field_indices_by_name, + 1, pg_query__grant_role_stmt__number_ranges, + (ProtobufCMessageInit) pg_query__grant_role_stmt__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor pg_query__alter_default_privileges_stmt__field_descriptors[2] = +{ + { + "options", + 1, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__AlterDefaultPrivilegesStmt, n_options), + offsetof(PgQuery__AlterDefaultPrivilegesStmt, options), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "action", + 2, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(PgQuery__AlterDefaultPrivilegesStmt, action), + &pg_query__grant_stmt__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned pg_query__alter_default_privileges_stmt__field_indices_by_name[] = { + 1, /* field[1] = action */ + 0, /* field[0] = options */ +}; +static const ProtobufCIntRange pg_query__alter_default_privileges_stmt__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 2 } +}; +const ProtobufCMessageDescriptor pg_query__alter_default_privileges_stmt__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "pg_query.AlterDefaultPrivilegesStmt", + "AlterDefaultPrivilegesStmt", + "PgQuery__AlterDefaultPrivilegesStmt", + "pg_query", + sizeof(PgQuery__AlterDefaultPrivilegesStmt), + 2, + pg_query__alter_default_privileges_stmt__field_descriptors, + pg_query__alter_default_privileges_stmt__field_indices_by_name, + 1, pg_query__alter_default_privileges_stmt__number_ranges, + (ProtobufCMessageInit) pg_query__alter_default_privileges_stmt__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor pg_query__close_portal_stmt__field_descriptors[1] = +{ + { + "portalname", + 1, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_STRING, + 0, /* quantifier_offset */ + offsetof(PgQuery__ClosePortalStmt, portalname), + NULL, + &protobuf_c_empty_string, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned pg_query__close_portal_stmt__field_indices_by_name[] = { + 0, /* field[0] = portalname */ +}; +static const ProtobufCIntRange pg_query__close_portal_stmt__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 1 } +}; +const ProtobufCMessageDescriptor pg_query__close_portal_stmt__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "pg_query.ClosePortalStmt", + "ClosePortalStmt", + "PgQuery__ClosePortalStmt", + "pg_query", + sizeof(PgQuery__ClosePortalStmt), + 1, + pg_query__close_portal_stmt__field_descriptors, + pg_query__close_portal_stmt__field_indices_by_name, + 1, pg_query__close_portal_stmt__number_ranges, + (ProtobufCMessageInit) pg_query__close_portal_stmt__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor pg_query__cluster_stmt__field_descriptors[3] = +{ + { + "relation", + 1, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(PgQuery__ClusterStmt, relation), + &pg_query__range_var__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "indexname", + 2, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_STRING, + 0, /* quantifier_offset */ + offsetof(PgQuery__ClusterStmt, indexname), + NULL, + &protobuf_c_empty_string, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "options", + 3, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(PgQuery__ClusterStmt, options), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned pg_query__cluster_stmt__field_indices_by_name[] = { + 1, /* field[1] = indexname */ + 2, /* field[2] = options */ + 0, /* field[0] = relation */ +}; +static const ProtobufCIntRange pg_query__cluster_stmt__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 3 } +}; +const ProtobufCMessageDescriptor pg_query__cluster_stmt__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "pg_query.ClusterStmt", + "ClusterStmt", + "PgQuery__ClusterStmt", + "pg_query", + sizeof(PgQuery__ClusterStmt), + 3, + pg_query__cluster_stmt__field_descriptors, + pg_query__cluster_stmt__field_indices_by_name, + 1, pg_query__cluster_stmt__number_ranges, + (ProtobufCMessageInit) pg_query__cluster_stmt__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor pg_query__copy_stmt__field_descriptors[8] = +{ + { + "relation", + 1, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(PgQuery__CopyStmt, relation), + &pg_query__range_var__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "query", + 2, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(PgQuery__CopyStmt, query), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "attlist", + 3, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__CopyStmt, n_attlist), + offsetof(PgQuery__CopyStmt, attlist), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "is_from", + 4, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_BOOL, + 0, /* quantifier_offset */ + offsetof(PgQuery__CopyStmt, is_from), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "is_program", + 5, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_BOOL, + 0, /* quantifier_offset */ + offsetof(PgQuery__CopyStmt, is_program), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "filename", + 6, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_STRING, + 0, /* quantifier_offset */ + offsetof(PgQuery__CopyStmt, filename), + NULL, + &protobuf_c_empty_string, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "options", + 7, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__CopyStmt, n_options), + offsetof(PgQuery__CopyStmt, options), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "where_clause", + 8, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(PgQuery__CopyStmt, where_clause), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned pg_query__copy_stmt__field_indices_by_name[] = { + 2, /* field[2] = attlist */ + 5, /* field[5] = filename */ + 3, /* field[3] = is_from */ + 4, /* field[4] = is_program */ + 6, /* field[6] = options */ + 1, /* field[1] = query */ + 0, /* field[0] = relation */ + 7, /* field[7] = where_clause */ +}; +static const ProtobufCIntRange pg_query__copy_stmt__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 8 } +}; +const ProtobufCMessageDescriptor pg_query__copy_stmt__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "pg_query.CopyStmt", + "CopyStmt", + "PgQuery__CopyStmt", + "pg_query", + sizeof(PgQuery__CopyStmt), + 8, + pg_query__copy_stmt__field_descriptors, + pg_query__copy_stmt__field_indices_by_name, + 1, pg_query__copy_stmt__number_ranges, + (ProtobufCMessageInit) pg_query__copy_stmt__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor pg_query__create_stmt__field_descriptors[12] = +{ + { + "relation", + 1, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(PgQuery__CreateStmt, relation), + &pg_query__range_var__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "table_elts", + 2, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__CreateStmt, n_table_elts), + offsetof(PgQuery__CreateStmt, table_elts), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "inh_relations", + 3, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__CreateStmt, n_inh_relations), + offsetof(PgQuery__CreateStmt, inh_relations), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "partbound", + 4, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(PgQuery__CreateStmt, partbound), + &pg_query__partition_bound_spec__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "partspec", + 5, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(PgQuery__CreateStmt, partspec), + &pg_query__partition_spec__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "of_typename", + 6, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(PgQuery__CreateStmt, of_typename), + &pg_query__type_name__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "constraints", + 7, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__CreateStmt, n_constraints), + offsetof(PgQuery__CreateStmt, constraints), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "options", + 8, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__CreateStmt, n_options), + offsetof(PgQuery__CreateStmt, options), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "oncommit", + 9, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_ENUM, + 0, /* quantifier_offset */ + offsetof(PgQuery__CreateStmt, oncommit), + &pg_query__on_commit_action__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "tablespacename", + 10, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_STRING, + 0, /* quantifier_offset */ + offsetof(PgQuery__CreateStmt, tablespacename), + NULL, + &protobuf_c_empty_string, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "access_method", + 11, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_STRING, + 0, /* quantifier_offset */ + offsetof(PgQuery__CreateStmt, access_method), + NULL, + &protobuf_c_empty_string, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "if_not_exists", + 12, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_BOOL, + 0, /* quantifier_offset */ + offsetof(PgQuery__CreateStmt, if_not_exists), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned pg_query__create_stmt__field_indices_by_name[] = { + 10, /* field[10] = access_method */ + 6, /* field[6] = constraints */ + 11, /* field[11] = if_not_exists */ + 2, /* field[2] = inh_relations */ + 5, /* field[5] = of_typename */ + 8, /* field[8] = oncommit */ + 7, /* field[7] = options */ + 3, /* field[3] = partbound */ + 4, /* field[4] = partspec */ + 0, /* field[0] = relation */ + 1, /* field[1] = table_elts */ + 9, /* field[9] = tablespacename */ +}; +static const ProtobufCIntRange pg_query__create_stmt__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 12 } +}; +const ProtobufCMessageDescriptor pg_query__create_stmt__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "pg_query.CreateStmt", + "CreateStmt", + "PgQuery__CreateStmt", + "pg_query", + sizeof(PgQuery__CreateStmt), + 12, + pg_query__create_stmt__field_descriptors, + pg_query__create_stmt__field_indices_by_name, + 1, pg_query__create_stmt__number_ranges, + (ProtobufCMessageInit) pg_query__create_stmt__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor pg_query__define_stmt__field_descriptors[7] = +{ + { + "kind", + 1, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_ENUM, + 0, /* quantifier_offset */ + offsetof(PgQuery__DefineStmt, kind), + &pg_query__object_type__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "oldstyle", + 2, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_BOOL, + 0, /* quantifier_offset */ + offsetof(PgQuery__DefineStmt, oldstyle), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "defnames", + 3, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__DefineStmt, n_defnames), + offsetof(PgQuery__DefineStmt, defnames), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "args", + 4, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__DefineStmt, n_args), + offsetof(PgQuery__DefineStmt, args), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "definition", + 5, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__DefineStmt, n_definition), + offsetof(PgQuery__DefineStmt, definition), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "if_not_exists", + 6, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_BOOL, + 0, /* quantifier_offset */ + offsetof(PgQuery__DefineStmt, if_not_exists), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "replace", + 7, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_BOOL, + 0, /* quantifier_offset */ + offsetof(PgQuery__DefineStmt, replace), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned pg_query__define_stmt__field_indices_by_name[] = { + 3, /* field[3] = args */ + 4, /* field[4] = definition */ + 2, /* field[2] = defnames */ + 5, /* field[5] = if_not_exists */ + 0, /* field[0] = kind */ + 1, /* field[1] = oldstyle */ + 6, /* field[6] = replace */ +}; +static const ProtobufCIntRange pg_query__define_stmt__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 7 } +}; +const ProtobufCMessageDescriptor pg_query__define_stmt__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "pg_query.DefineStmt", + "DefineStmt", + "PgQuery__DefineStmt", + "pg_query", + sizeof(PgQuery__DefineStmt), + 7, + pg_query__define_stmt__field_descriptors, + pg_query__define_stmt__field_indices_by_name, + 1, pg_query__define_stmt__number_ranges, + (ProtobufCMessageInit) pg_query__define_stmt__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor pg_query__drop_stmt__field_descriptors[5] = +{ + { + "objects", + 1, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__DropStmt, n_objects), + offsetof(PgQuery__DropStmt, objects), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "remove_type", + 2, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_ENUM, + 0, /* quantifier_offset */ + offsetof(PgQuery__DropStmt, remove_type), + &pg_query__object_type__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "behavior", + 3, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_ENUM, + 0, /* quantifier_offset */ + offsetof(PgQuery__DropStmt, behavior), + &pg_query__drop_behavior__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "missing_ok", + 4, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_BOOL, + 0, /* quantifier_offset */ + offsetof(PgQuery__DropStmt, missing_ok), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "concurrent", + 5, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_BOOL, + 0, /* quantifier_offset */ + offsetof(PgQuery__DropStmt, concurrent), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned pg_query__drop_stmt__field_indices_by_name[] = { + 2, /* field[2] = behavior */ + 4, /* field[4] = concurrent */ + 3, /* field[3] = missing_ok */ + 0, /* field[0] = objects */ + 1, /* field[1] = remove_type */ +}; +static const ProtobufCIntRange pg_query__drop_stmt__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 5 } +}; +const ProtobufCMessageDescriptor pg_query__drop_stmt__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "pg_query.DropStmt", + "DropStmt", + "PgQuery__DropStmt", + "pg_query", + sizeof(PgQuery__DropStmt), + 5, + pg_query__drop_stmt__field_descriptors, + pg_query__drop_stmt__field_indices_by_name, + 1, pg_query__drop_stmt__number_ranges, + (ProtobufCMessageInit) pg_query__drop_stmt__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor pg_query__truncate_stmt__field_descriptors[3] = +{ + { + "relations", + 1, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__TruncateStmt, n_relations), + offsetof(PgQuery__TruncateStmt, relations), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "restart_seqs", + 2, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_BOOL, + 0, /* quantifier_offset */ + offsetof(PgQuery__TruncateStmt, restart_seqs), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "behavior", + 3, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_ENUM, + 0, /* quantifier_offset */ + offsetof(PgQuery__TruncateStmt, behavior), + &pg_query__drop_behavior__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned pg_query__truncate_stmt__field_indices_by_name[] = { + 2, /* field[2] = behavior */ + 0, /* field[0] = relations */ + 1, /* field[1] = restart_seqs */ +}; +static const ProtobufCIntRange pg_query__truncate_stmt__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 3 } +}; +const ProtobufCMessageDescriptor pg_query__truncate_stmt__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "pg_query.TruncateStmt", + "TruncateStmt", + "PgQuery__TruncateStmt", + "pg_query", + sizeof(PgQuery__TruncateStmt), + 3, + pg_query__truncate_stmt__field_descriptors, + pg_query__truncate_stmt__field_indices_by_name, + 1, pg_query__truncate_stmt__number_ranges, + (ProtobufCMessageInit) pg_query__truncate_stmt__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor pg_query__comment_stmt__field_descriptors[3] = +{ + { + "objtype", + 1, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_ENUM, + 0, /* quantifier_offset */ + offsetof(PgQuery__CommentStmt, objtype), + &pg_query__object_type__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "object", + 2, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(PgQuery__CommentStmt, object), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "comment", + 3, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_STRING, + 0, /* quantifier_offset */ + offsetof(PgQuery__CommentStmt, comment), + NULL, + &protobuf_c_empty_string, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned pg_query__comment_stmt__field_indices_by_name[] = { + 2, /* field[2] = comment */ + 1, /* field[1] = object */ + 0, /* field[0] = objtype */ +}; +static const ProtobufCIntRange pg_query__comment_stmt__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 3 } +}; +const ProtobufCMessageDescriptor pg_query__comment_stmt__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "pg_query.CommentStmt", + "CommentStmt", + "PgQuery__CommentStmt", + "pg_query", + sizeof(PgQuery__CommentStmt), + 3, + pg_query__comment_stmt__field_descriptors, + pg_query__comment_stmt__field_indices_by_name, + 1, pg_query__comment_stmt__number_ranges, + (ProtobufCMessageInit) pg_query__comment_stmt__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor pg_query__fetch_stmt__field_descriptors[4] = +{ + { + "direction", + 1, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_ENUM, + 0, /* quantifier_offset */ + offsetof(PgQuery__FetchStmt, direction), + &pg_query__fetch_direction__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "how_many", + 2, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT64, + 0, /* quantifier_offset */ + offsetof(PgQuery__FetchStmt, how_many), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "portalname", + 3, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_STRING, + 0, /* quantifier_offset */ + offsetof(PgQuery__FetchStmt, portalname), + NULL, + &protobuf_c_empty_string, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "ismove", + 4, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_BOOL, + 0, /* quantifier_offset */ + offsetof(PgQuery__FetchStmt, ismove), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned pg_query__fetch_stmt__field_indices_by_name[] = { + 0, /* field[0] = direction */ + 1, /* field[1] = how_many */ + 3, /* field[3] = ismove */ + 2, /* field[2] = portalname */ +}; +static const ProtobufCIntRange pg_query__fetch_stmt__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 4 } +}; +const ProtobufCMessageDescriptor pg_query__fetch_stmt__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "pg_query.FetchStmt", + "FetchStmt", + "PgQuery__FetchStmt", + "pg_query", + sizeof(PgQuery__FetchStmt), + 4, + pg_query__fetch_stmt__field_descriptors, + pg_query__fetch_stmt__field_indices_by_name, + 1, pg_query__fetch_stmt__number_ranges, + (ProtobufCMessageInit) pg_query__fetch_stmt__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor pg_query__index_stmt__field_descriptors[23] = +{ + { + "idxname", + 1, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_STRING, + 0, /* quantifier_offset */ + offsetof(PgQuery__IndexStmt, idxname), + NULL, + &protobuf_c_empty_string, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "relation", + 2, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(PgQuery__IndexStmt, relation), + &pg_query__range_var__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "access_method", + 3, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_STRING, + 0, /* quantifier_offset */ + offsetof(PgQuery__IndexStmt, access_method), + NULL, + &protobuf_c_empty_string, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "table_space", + 4, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_STRING, + 0, /* quantifier_offset */ + offsetof(PgQuery__IndexStmt, table_space), + NULL, + &protobuf_c_empty_string, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "index_params", + 5, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__IndexStmt, n_index_params), + offsetof(PgQuery__IndexStmt, index_params), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "index_including_params", + 6, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__IndexStmt, n_index_including_params), + offsetof(PgQuery__IndexStmt, index_including_params), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "options", + 7, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__IndexStmt, n_options), + offsetof(PgQuery__IndexStmt, options), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "where_clause", + 8, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(PgQuery__IndexStmt, where_clause), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "exclude_op_names", + 9, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__IndexStmt, n_exclude_op_names), + offsetof(PgQuery__IndexStmt, exclude_op_names), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "idxcomment", + 10, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_STRING, + 0, /* quantifier_offset */ + offsetof(PgQuery__IndexStmt, idxcomment), + NULL, + &protobuf_c_empty_string, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "index_oid", + 11, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT32, + 0, /* quantifier_offset */ + offsetof(PgQuery__IndexStmt, index_oid), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "old_node", + 12, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT32, + 0, /* quantifier_offset */ + offsetof(PgQuery__IndexStmt, old_node), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "old_create_subid", + 13, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT32, + 0, /* quantifier_offset */ + offsetof(PgQuery__IndexStmt, old_create_subid), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "old_first_relfilenode_subid", + 14, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT32, + 0, /* quantifier_offset */ + offsetof(PgQuery__IndexStmt, old_first_relfilenode_subid), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "unique", + 15, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_BOOL, + 0, /* quantifier_offset */ + offsetof(PgQuery__IndexStmt, unique), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "primary", + 16, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_BOOL, + 0, /* quantifier_offset */ + offsetof(PgQuery__IndexStmt, primary), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "isconstraint", + 17, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_BOOL, + 0, /* quantifier_offset */ + offsetof(PgQuery__IndexStmt, isconstraint), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "deferrable", + 18, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_BOOL, + 0, /* quantifier_offset */ + offsetof(PgQuery__IndexStmt, deferrable), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "initdeferred", + 19, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_BOOL, + 0, /* quantifier_offset */ + offsetof(PgQuery__IndexStmt, initdeferred), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "transformed", + 20, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_BOOL, + 0, /* quantifier_offset */ + offsetof(PgQuery__IndexStmt, transformed), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "concurrent", + 21, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_BOOL, + 0, /* quantifier_offset */ + offsetof(PgQuery__IndexStmt, concurrent), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "if_not_exists", + 22, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_BOOL, + 0, /* quantifier_offset */ + offsetof(PgQuery__IndexStmt, if_not_exists), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "reset_default_tblspc", + 23, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_BOOL, + 0, /* quantifier_offset */ + offsetof(PgQuery__IndexStmt, reset_default_tblspc), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned pg_query__index_stmt__field_indices_by_name[] = { + 2, /* field[2] = access_method */ + 20, /* field[20] = concurrent */ + 17, /* field[17] = deferrable */ + 8, /* field[8] = exclude_op_names */ + 9, /* field[9] = idxcomment */ + 0, /* field[0] = idxname */ + 21, /* field[21] = if_not_exists */ + 5, /* field[5] = index_including_params */ + 10, /* field[10] = index_oid */ + 4, /* field[4] = index_params */ + 18, /* field[18] = initdeferred */ + 16, /* field[16] = isconstraint */ + 12, /* field[12] = old_create_subid */ + 13, /* field[13] = old_first_relfilenode_subid */ + 11, /* field[11] = old_node */ + 6, /* field[6] = options */ + 15, /* field[15] = primary */ + 1, /* field[1] = relation */ + 22, /* field[22] = reset_default_tblspc */ + 3, /* field[3] = table_space */ + 19, /* field[19] = transformed */ + 14, /* field[14] = unique */ + 7, /* field[7] = where_clause */ +}; +static const ProtobufCIntRange pg_query__index_stmt__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 23 } +}; +const ProtobufCMessageDescriptor pg_query__index_stmt__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "pg_query.IndexStmt", + "IndexStmt", + "PgQuery__IndexStmt", + "pg_query", + sizeof(PgQuery__IndexStmt), + 23, + pg_query__index_stmt__field_descriptors, + pg_query__index_stmt__field_indices_by_name, + 1, pg_query__index_stmt__number_ranges, + (ProtobufCMessageInit) pg_query__index_stmt__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor pg_query__create_function_stmt__field_descriptors[6] = +{ + { + "is_procedure", + 1, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_BOOL, + 0, /* quantifier_offset */ + offsetof(PgQuery__CreateFunctionStmt, is_procedure), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "replace", + 2, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_BOOL, + 0, /* quantifier_offset */ + offsetof(PgQuery__CreateFunctionStmt, replace), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "funcname", + 3, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__CreateFunctionStmt, n_funcname), + offsetof(PgQuery__CreateFunctionStmt, funcname), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "parameters", + 4, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__CreateFunctionStmt, n_parameters), + offsetof(PgQuery__CreateFunctionStmt, parameters), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "return_type", + 5, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(PgQuery__CreateFunctionStmt, return_type), + &pg_query__type_name__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "options", + 6, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__CreateFunctionStmt, n_options), + offsetof(PgQuery__CreateFunctionStmt, options), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned pg_query__create_function_stmt__field_indices_by_name[] = { + 2, /* field[2] = funcname */ + 0, /* field[0] = is_procedure */ + 5, /* field[5] = options */ + 3, /* field[3] = parameters */ + 1, /* field[1] = replace */ + 4, /* field[4] = return_type */ +}; +static const ProtobufCIntRange pg_query__create_function_stmt__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 6 } +}; +const ProtobufCMessageDescriptor pg_query__create_function_stmt__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "pg_query.CreateFunctionStmt", + "CreateFunctionStmt", + "PgQuery__CreateFunctionStmt", + "pg_query", + sizeof(PgQuery__CreateFunctionStmt), + 6, + pg_query__create_function_stmt__field_descriptors, + pg_query__create_function_stmt__field_indices_by_name, + 1, pg_query__create_function_stmt__number_ranges, + (ProtobufCMessageInit) pg_query__create_function_stmt__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor pg_query__alter_function_stmt__field_descriptors[3] = +{ + { + "objtype", + 1, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_ENUM, + 0, /* quantifier_offset */ + offsetof(PgQuery__AlterFunctionStmt, objtype), + &pg_query__object_type__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "func", + 2, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(PgQuery__AlterFunctionStmt, func), + &pg_query__object_with_args__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "actions", + 3, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__AlterFunctionStmt, n_actions), + offsetof(PgQuery__AlterFunctionStmt, actions), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned pg_query__alter_function_stmt__field_indices_by_name[] = { + 2, /* field[2] = actions */ + 1, /* field[1] = func */ + 0, /* field[0] = objtype */ +}; +static const ProtobufCIntRange pg_query__alter_function_stmt__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 3 } +}; +const ProtobufCMessageDescriptor pg_query__alter_function_stmt__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "pg_query.AlterFunctionStmt", + "AlterFunctionStmt", + "PgQuery__AlterFunctionStmt", + "pg_query", + sizeof(PgQuery__AlterFunctionStmt), + 3, + pg_query__alter_function_stmt__field_descriptors, + pg_query__alter_function_stmt__field_indices_by_name, + 1, pg_query__alter_function_stmt__number_ranges, + (ProtobufCMessageInit) pg_query__alter_function_stmt__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor pg_query__do_stmt__field_descriptors[1] = +{ + { + "args", + 1, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__DoStmt, n_args), + offsetof(PgQuery__DoStmt, args), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned pg_query__do_stmt__field_indices_by_name[] = { + 0, /* field[0] = args */ +}; +static const ProtobufCIntRange pg_query__do_stmt__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 1 } +}; +const ProtobufCMessageDescriptor pg_query__do_stmt__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "pg_query.DoStmt", + "DoStmt", + "PgQuery__DoStmt", + "pg_query", + sizeof(PgQuery__DoStmt), + 1, + pg_query__do_stmt__field_descriptors, + pg_query__do_stmt__field_indices_by_name, + 1, pg_query__do_stmt__number_ranges, + (ProtobufCMessageInit) pg_query__do_stmt__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor pg_query__rename_stmt__field_descriptors[8] = +{ + { + "rename_type", + 1, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_ENUM, + 0, /* quantifier_offset */ + offsetof(PgQuery__RenameStmt, rename_type), + &pg_query__object_type__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "relation_type", + 2, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_ENUM, + 0, /* quantifier_offset */ + offsetof(PgQuery__RenameStmt, relation_type), + &pg_query__object_type__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "relation", + 3, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(PgQuery__RenameStmt, relation), + &pg_query__range_var__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "object", + 4, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(PgQuery__RenameStmt, object), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "subname", + 5, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_STRING, + 0, /* quantifier_offset */ + offsetof(PgQuery__RenameStmt, subname), + NULL, + &protobuf_c_empty_string, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "newname", + 6, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_STRING, + 0, /* quantifier_offset */ + offsetof(PgQuery__RenameStmt, newname), + NULL, + &protobuf_c_empty_string, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "behavior", + 7, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_ENUM, + 0, /* quantifier_offset */ + offsetof(PgQuery__RenameStmt, behavior), + &pg_query__drop_behavior__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "missing_ok", + 8, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_BOOL, + 0, /* quantifier_offset */ + offsetof(PgQuery__RenameStmt, missing_ok), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned pg_query__rename_stmt__field_indices_by_name[] = { + 6, /* field[6] = behavior */ + 7, /* field[7] = missing_ok */ + 5, /* field[5] = newname */ + 3, /* field[3] = object */ + 2, /* field[2] = relation */ + 1, /* field[1] = relation_type */ + 0, /* field[0] = rename_type */ + 4, /* field[4] = subname */ +}; +static const ProtobufCIntRange pg_query__rename_stmt__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 8 } +}; +const ProtobufCMessageDescriptor pg_query__rename_stmt__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "pg_query.RenameStmt", + "RenameStmt", + "PgQuery__RenameStmt", + "pg_query", + sizeof(PgQuery__RenameStmt), + 8, + pg_query__rename_stmt__field_descriptors, + pg_query__rename_stmt__field_indices_by_name, + 1, pg_query__rename_stmt__number_ranges, + (ProtobufCMessageInit) pg_query__rename_stmt__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor pg_query__rule_stmt__field_descriptors[7] = +{ + { + "relation", + 1, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(PgQuery__RuleStmt, relation), + &pg_query__range_var__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "rulename", + 2, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_STRING, + 0, /* quantifier_offset */ + offsetof(PgQuery__RuleStmt, rulename), + NULL, + &protobuf_c_empty_string, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "where_clause", + 3, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(PgQuery__RuleStmt, where_clause), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "event", + 4, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_ENUM, + 0, /* quantifier_offset */ + offsetof(PgQuery__RuleStmt, event), + &pg_query__cmd_type__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "instead", + 5, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_BOOL, + 0, /* quantifier_offset */ + offsetof(PgQuery__RuleStmt, instead), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "actions", + 6, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__RuleStmt, n_actions), + offsetof(PgQuery__RuleStmt, actions), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "replace", + 7, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_BOOL, + 0, /* quantifier_offset */ + offsetof(PgQuery__RuleStmt, replace), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned pg_query__rule_stmt__field_indices_by_name[] = { + 5, /* field[5] = actions */ + 3, /* field[3] = event */ + 4, /* field[4] = instead */ + 0, /* field[0] = relation */ + 6, /* field[6] = replace */ + 1, /* field[1] = rulename */ + 2, /* field[2] = where_clause */ +}; +static const ProtobufCIntRange pg_query__rule_stmt__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 7 } +}; +const ProtobufCMessageDescriptor pg_query__rule_stmt__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "pg_query.RuleStmt", + "RuleStmt", + "PgQuery__RuleStmt", + "pg_query", + sizeof(PgQuery__RuleStmt), + 7, + pg_query__rule_stmt__field_descriptors, + pg_query__rule_stmt__field_indices_by_name, + 1, pg_query__rule_stmt__number_ranges, + (ProtobufCMessageInit) pg_query__rule_stmt__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor pg_query__notify_stmt__field_descriptors[2] = +{ + { + "conditionname", + 1, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_STRING, + 0, /* quantifier_offset */ + offsetof(PgQuery__NotifyStmt, conditionname), + NULL, + &protobuf_c_empty_string, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "payload", + 2, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_STRING, + 0, /* quantifier_offset */ + offsetof(PgQuery__NotifyStmt, payload), + NULL, + &protobuf_c_empty_string, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned pg_query__notify_stmt__field_indices_by_name[] = { + 0, /* field[0] = conditionname */ + 1, /* field[1] = payload */ +}; +static const ProtobufCIntRange pg_query__notify_stmt__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 2 } +}; +const ProtobufCMessageDescriptor pg_query__notify_stmt__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "pg_query.NotifyStmt", + "NotifyStmt", + "PgQuery__NotifyStmt", + "pg_query", + sizeof(PgQuery__NotifyStmt), + 2, + pg_query__notify_stmt__field_descriptors, + pg_query__notify_stmt__field_indices_by_name, + 1, pg_query__notify_stmt__number_ranges, + (ProtobufCMessageInit) pg_query__notify_stmt__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor pg_query__listen_stmt__field_descriptors[1] = +{ + { + "conditionname", + 1, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_STRING, + 0, /* quantifier_offset */ + offsetof(PgQuery__ListenStmt, conditionname), + NULL, + &protobuf_c_empty_string, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned pg_query__listen_stmt__field_indices_by_name[] = { + 0, /* field[0] = conditionname */ +}; +static const ProtobufCIntRange pg_query__listen_stmt__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 1 } +}; +const ProtobufCMessageDescriptor pg_query__listen_stmt__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "pg_query.ListenStmt", + "ListenStmt", + "PgQuery__ListenStmt", + "pg_query", + sizeof(PgQuery__ListenStmt), + 1, + pg_query__listen_stmt__field_descriptors, + pg_query__listen_stmt__field_indices_by_name, + 1, pg_query__listen_stmt__number_ranges, + (ProtobufCMessageInit) pg_query__listen_stmt__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor pg_query__unlisten_stmt__field_descriptors[1] = +{ + { + "conditionname", + 1, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_STRING, + 0, /* quantifier_offset */ + offsetof(PgQuery__UnlistenStmt, conditionname), + NULL, + &protobuf_c_empty_string, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned pg_query__unlisten_stmt__field_indices_by_name[] = { + 0, /* field[0] = conditionname */ +}; +static const ProtobufCIntRange pg_query__unlisten_stmt__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 1 } +}; +const ProtobufCMessageDescriptor pg_query__unlisten_stmt__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "pg_query.UnlistenStmt", + "UnlistenStmt", + "PgQuery__UnlistenStmt", + "pg_query", + sizeof(PgQuery__UnlistenStmt), + 1, + pg_query__unlisten_stmt__field_descriptors, + pg_query__unlisten_stmt__field_indices_by_name, + 1, pg_query__unlisten_stmt__number_ranges, + (ProtobufCMessageInit) pg_query__unlisten_stmt__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor pg_query__transaction_stmt__field_descriptors[5] = +{ + { + "kind", + 1, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_ENUM, + 0, /* quantifier_offset */ + offsetof(PgQuery__TransactionStmt, kind), + &pg_query__transaction_stmt_kind__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "options", + 2, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__TransactionStmt, n_options), + offsetof(PgQuery__TransactionStmt, options), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "savepoint_name", + 3, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_STRING, + 0, /* quantifier_offset */ + offsetof(PgQuery__TransactionStmt, savepoint_name), + NULL, + &protobuf_c_empty_string, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "gid", + 4, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_STRING, + 0, /* quantifier_offset */ + offsetof(PgQuery__TransactionStmt, gid), + NULL, + &protobuf_c_empty_string, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "chain", + 5, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_BOOL, + 0, /* quantifier_offset */ + offsetof(PgQuery__TransactionStmt, chain), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned pg_query__transaction_stmt__field_indices_by_name[] = { + 4, /* field[4] = chain */ + 3, /* field[3] = gid */ + 0, /* field[0] = kind */ + 1, /* field[1] = options */ + 2, /* field[2] = savepoint_name */ +}; +static const ProtobufCIntRange pg_query__transaction_stmt__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 5 } +}; +const ProtobufCMessageDescriptor pg_query__transaction_stmt__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "pg_query.TransactionStmt", + "TransactionStmt", + "PgQuery__TransactionStmt", + "pg_query", + sizeof(PgQuery__TransactionStmt), + 5, + pg_query__transaction_stmt__field_descriptors, + pg_query__transaction_stmt__field_indices_by_name, + 1, pg_query__transaction_stmt__number_ranges, + (ProtobufCMessageInit) pg_query__transaction_stmt__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor pg_query__view_stmt__field_descriptors[6] = +{ + { + "view", + 1, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(PgQuery__ViewStmt, view), + &pg_query__range_var__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "aliases", + 2, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__ViewStmt, n_aliases), + offsetof(PgQuery__ViewStmt, aliases), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "query", + 3, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(PgQuery__ViewStmt, query), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "replace", + 4, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_BOOL, + 0, /* quantifier_offset */ + offsetof(PgQuery__ViewStmt, replace), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "options", + 5, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__ViewStmt, n_options), + offsetof(PgQuery__ViewStmt, options), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "with_check_option", + 6, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_ENUM, + 0, /* quantifier_offset */ + offsetof(PgQuery__ViewStmt, with_check_option), + &pg_query__view_check_option__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned pg_query__view_stmt__field_indices_by_name[] = { + 1, /* field[1] = aliases */ + 4, /* field[4] = options */ + 2, /* field[2] = query */ + 3, /* field[3] = replace */ + 0, /* field[0] = view */ + 5, /* field[5] = with_check_option */ +}; +static const ProtobufCIntRange pg_query__view_stmt__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 6 } +}; +const ProtobufCMessageDescriptor pg_query__view_stmt__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "pg_query.ViewStmt", + "ViewStmt", + "PgQuery__ViewStmt", + "pg_query", + sizeof(PgQuery__ViewStmt), + 6, + pg_query__view_stmt__field_descriptors, + pg_query__view_stmt__field_indices_by_name, + 1, pg_query__view_stmt__number_ranges, + (ProtobufCMessageInit) pg_query__view_stmt__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor pg_query__load_stmt__field_descriptors[1] = +{ + { + "filename", + 1, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_STRING, + 0, /* quantifier_offset */ + offsetof(PgQuery__LoadStmt, filename), + NULL, + &protobuf_c_empty_string, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned pg_query__load_stmt__field_indices_by_name[] = { + 0, /* field[0] = filename */ +}; +static const ProtobufCIntRange pg_query__load_stmt__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 1 } +}; +const ProtobufCMessageDescriptor pg_query__load_stmt__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "pg_query.LoadStmt", + "LoadStmt", + "PgQuery__LoadStmt", + "pg_query", + sizeof(PgQuery__LoadStmt), + 1, + pg_query__load_stmt__field_descriptors, + pg_query__load_stmt__field_indices_by_name, + 1, pg_query__load_stmt__number_ranges, + (ProtobufCMessageInit) pg_query__load_stmt__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor pg_query__create_domain_stmt__field_descriptors[4] = +{ + { + "domainname", + 1, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__CreateDomainStmt, n_domainname), + offsetof(PgQuery__CreateDomainStmt, domainname), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "type_name", + 2, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(PgQuery__CreateDomainStmt, type_name), + &pg_query__type_name__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "coll_clause", + 3, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(PgQuery__CreateDomainStmt, coll_clause), + &pg_query__collate_clause__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "constraints", + 4, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__CreateDomainStmt, n_constraints), + offsetof(PgQuery__CreateDomainStmt, constraints), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned pg_query__create_domain_stmt__field_indices_by_name[] = { + 2, /* field[2] = coll_clause */ + 3, /* field[3] = constraints */ + 0, /* field[0] = domainname */ + 1, /* field[1] = type_name */ +}; +static const ProtobufCIntRange pg_query__create_domain_stmt__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 4 } +}; +const ProtobufCMessageDescriptor pg_query__create_domain_stmt__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "pg_query.CreateDomainStmt", + "CreateDomainStmt", + "PgQuery__CreateDomainStmt", + "pg_query", + sizeof(PgQuery__CreateDomainStmt), + 4, + pg_query__create_domain_stmt__field_descriptors, + pg_query__create_domain_stmt__field_indices_by_name, + 1, pg_query__create_domain_stmt__number_ranges, + (ProtobufCMessageInit) pg_query__create_domain_stmt__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor pg_query__createdb_stmt__field_descriptors[2] = +{ + { + "dbname", + 1, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_STRING, + 0, /* quantifier_offset */ + offsetof(PgQuery__CreatedbStmt, dbname), + NULL, + &protobuf_c_empty_string, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "options", + 2, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__CreatedbStmt, n_options), + offsetof(PgQuery__CreatedbStmt, options), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned pg_query__createdb_stmt__field_indices_by_name[] = { + 0, /* field[0] = dbname */ + 1, /* field[1] = options */ +}; +static const ProtobufCIntRange pg_query__createdb_stmt__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 2 } +}; +const ProtobufCMessageDescriptor pg_query__createdb_stmt__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "pg_query.CreatedbStmt", + "CreatedbStmt", + "PgQuery__CreatedbStmt", + "pg_query", + sizeof(PgQuery__CreatedbStmt), + 2, + pg_query__createdb_stmt__field_descriptors, + pg_query__createdb_stmt__field_indices_by_name, + 1, pg_query__createdb_stmt__number_ranges, + (ProtobufCMessageInit) pg_query__createdb_stmt__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor pg_query__dropdb_stmt__field_descriptors[3] = +{ + { + "dbname", + 1, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_STRING, + 0, /* quantifier_offset */ + offsetof(PgQuery__DropdbStmt, dbname), + NULL, + &protobuf_c_empty_string, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "missing_ok", + 2, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_BOOL, + 0, /* quantifier_offset */ + offsetof(PgQuery__DropdbStmt, missing_ok), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "options", + 3, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__DropdbStmt, n_options), + offsetof(PgQuery__DropdbStmt, options), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned pg_query__dropdb_stmt__field_indices_by_name[] = { + 0, /* field[0] = dbname */ + 1, /* field[1] = missing_ok */ + 2, /* field[2] = options */ +}; +static const ProtobufCIntRange pg_query__dropdb_stmt__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 3 } +}; +const ProtobufCMessageDescriptor pg_query__dropdb_stmt__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "pg_query.DropdbStmt", + "DropdbStmt", + "PgQuery__DropdbStmt", + "pg_query", + sizeof(PgQuery__DropdbStmt), + 3, + pg_query__dropdb_stmt__field_descriptors, + pg_query__dropdb_stmt__field_indices_by_name, + 1, pg_query__dropdb_stmt__number_ranges, + (ProtobufCMessageInit) pg_query__dropdb_stmt__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor pg_query__vacuum_stmt__field_descriptors[3] = +{ + { + "options", + 1, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__VacuumStmt, n_options), + offsetof(PgQuery__VacuumStmt, options), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "rels", + 2, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__VacuumStmt, n_rels), + offsetof(PgQuery__VacuumStmt, rels), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "is_vacuumcmd", + 3, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_BOOL, + 0, /* quantifier_offset */ + offsetof(PgQuery__VacuumStmt, is_vacuumcmd), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned pg_query__vacuum_stmt__field_indices_by_name[] = { + 2, /* field[2] = is_vacuumcmd */ + 0, /* field[0] = options */ + 1, /* field[1] = rels */ +}; +static const ProtobufCIntRange pg_query__vacuum_stmt__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 3 } +}; +const ProtobufCMessageDescriptor pg_query__vacuum_stmt__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "pg_query.VacuumStmt", + "VacuumStmt", + "PgQuery__VacuumStmt", + "pg_query", + sizeof(PgQuery__VacuumStmt), + 3, + pg_query__vacuum_stmt__field_descriptors, + pg_query__vacuum_stmt__field_indices_by_name, + 1, pg_query__vacuum_stmt__number_ranges, + (ProtobufCMessageInit) pg_query__vacuum_stmt__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor pg_query__explain_stmt__field_descriptors[2] = +{ + { + "query", + 1, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(PgQuery__ExplainStmt, query), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "options", + 2, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__ExplainStmt, n_options), + offsetof(PgQuery__ExplainStmt, options), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned pg_query__explain_stmt__field_indices_by_name[] = { + 1, /* field[1] = options */ + 0, /* field[0] = query */ +}; +static const ProtobufCIntRange pg_query__explain_stmt__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 2 } +}; +const ProtobufCMessageDescriptor pg_query__explain_stmt__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "pg_query.ExplainStmt", + "ExplainStmt", + "PgQuery__ExplainStmt", + "pg_query", + sizeof(PgQuery__ExplainStmt), + 2, + pg_query__explain_stmt__field_descriptors, + pg_query__explain_stmt__field_indices_by_name, + 1, pg_query__explain_stmt__number_ranges, + (ProtobufCMessageInit) pg_query__explain_stmt__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor pg_query__create_table_as_stmt__field_descriptors[5] = +{ + { + "query", + 1, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(PgQuery__CreateTableAsStmt, query), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "into", + 2, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(PgQuery__CreateTableAsStmt, into), + &pg_query__into_clause__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "relkind", + 3, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_ENUM, + 0, /* quantifier_offset */ + offsetof(PgQuery__CreateTableAsStmt, relkind), + &pg_query__object_type__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "is_select_into", + 4, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_BOOL, + 0, /* quantifier_offset */ + offsetof(PgQuery__CreateTableAsStmt, is_select_into), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "if_not_exists", + 5, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_BOOL, + 0, /* quantifier_offset */ + offsetof(PgQuery__CreateTableAsStmt, if_not_exists), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned pg_query__create_table_as_stmt__field_indices_by_name[] = { + 4, /* field[4] = if_not_exists */ + 1, /* field[1] = into */ + 3, /* field[3] = is_select_into */ + 0, /* field[0] = query */ + 2, /* field[2] = relkind */ +}; +static const ProtobufCIntRange pg_query__create_table_as_stmt__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 5 } +}; +const ProtobufCMessageDescriptor pg_query__create_table_as_stmt__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "pg_query.CreateTableAsStmt", + "CreateTableAsStmt", + "PgQuery__CreateTableAsStmt", + "pg_query", + sizeof(PgQuery__CreateTableAsStmt), + 5, + pg_query__create_table_as_stmt__field_descriptors, + pg_query__create_table_as_stmt__field_indices_by_name, + 1, pg_query__create_table_as_stmt__number_ranges, + (ProtobufCMessageInit) pg_query__create_table_as_stmt__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor pg_query__create_seq_stmt__field_descriptors[5] = +{ + { + "sequence", + 1, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(PgQuery__CreateSeqStmt, sequence), + &pg_query__range_var__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "options", + 2, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__CreateSeqStmt, n_options), + offsetof(PgQuery__CreateSeqStmt, options), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "owner_id", + 3, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT32, + 0, /* quantifier_offset */ + offsetof(PgQuery__CreateSeqStmt, owner_id), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "for_identity", + 4, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_BOOL, + 0, /* quantifier_offset */ + offsetof(PgQuery__CreateSeqStmt, for_identity), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "if_not_exists", + 5, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_BOOL, + 0, /* quantifier_offset */ + offsetof(PgQuery__CreateSeqStmt, if_not_exists), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned pg_query__create_seq_stmt__field_indices_by_name[] = { + 3, /* field[3] = for_identity */ + 4, /* field[4] = if_not_exists */ + 1, /* field[1] = options */ + 2, /* field[2] = owner_id */ + 0, /* field[0] = sequence */ +}; +static const ProtobufCIntRange pg_query__create_seq_stmt__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 5 } +}; +const ProtobufCMessageDescriptor pg_query__create_seq_stmt__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "pg_query.CreateSeqStmt", + "CreateSeqStmt", + "PgQuery__CreateSeqStmt", + "pg_query", + sizeof(PgQuery__CreateSeqStmt), + 5, + pg_query__create_seq_stmt__field_descriptors, + pg_query__create_seq_stmt__field_indices_by_name, + 1, pg_query__create_seq_stmt__number_ranges, + (ProtobufCMessageInit) pg_query__create_seq_stmt__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor pg_query__alter_seq_stmt__field_descriptors[4] = +{ + { + "sequence", + 1, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(PgQuery__AlterSeqStmt, sequence), + &pg_query__range_var__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "options", + 2, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__AlterSeqStmt, n_options), + offsetof(PgQuery__AlterSeqStmt, options), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "for_identity", + 3, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_BOOL, + 0, /* quantifier_offset */ + offsetof(PgQuery__AlterSeqStmt, for_identity), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "missing_ok", + 4, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_BOOL, + 0, /* quantifier_offset */ + offsetof(PgQuery__AlterSeqStmt, missing_ok), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned pg_query__alter_seq_stmt__field_indices_by_name[] = { + 2, /* field[2] = for_identity */ + 3, /* field[3] = missing_ok */ + 1, /* field[1] = options */ + 0, /* field[0] = sequence */ +}; +static const ProtobufCIntRange pg_query__alter_seq_stmt__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 4 } +}; +const ProtobufCMessageDescriptor pg_query__alter_seq_stmt__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "pg_query.AlterSeqStmt", + "AlterSeqStmt", + "PgQuery__AlterSeqStmt", + "pg_query", + sizeof(PgQuery__AlterSeqStmt), + 4, + pg_query__alter_seq_stmt__field_descriptors, + pg_query__alter_seq_stmt__field_indices_by_name, + 1, pg_query__alter_seq_stmt__number_ranges, + (ProtobufCMessageInit) pg_query__alter_seq_stmt__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor pg_query__variable_set_stmt__field_descriptors[4] = +{ + { + "kind", + 1, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_ENUM, + 0, /* quantifier_offset */ + offsetof(PgQuery__VariableSetStmt, kind), + &pg_query__variable_set_kind__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "name", + 2, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_STRING, + 0, /* quantifier_offset */ + offsetof(PgQuery__VariableSetStmt, name), + NULL, + &protobuf_c_empty_string, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "args", + 3, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__VariableSetStmt, n_args), + offsetof(PgQuery__VariableSetStmt, args), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "is_local", + 4, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_BOOL, + 0, /* quantifier_offset */ + offsetof(PgQuery__VariableSetStmt, is_local), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned pg_query__variable_set_stmt__field_indices_by_name[] = { + 2, /* field[2] = args */ + 3, /* field[3] = is_local */ + 0, /* field[0] = kind */ + 1, /* field[1] = name */ +}; +static const ProtobufCIntRange pg_query__variable_set_stmt__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 4 } +}; +const ProtobufCMessageDescriptor pg_query__variable_set_stmt__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "pg_query.VariableSetStmt", + "VariableSetStmt", + "PgQuery__VariableSetStmt", + "pg_query", + sizeof(PgQuery__VariableSetStmt), + 4, + pg_query__variable_set_stmt__field_descriptors, + pg_query__variable_set_stmt__field_indices_by_name, + 1, pg_query__variable_set_stmt__number_ranges, + (ProtobufCMessageInit) pg_query__variable_set_stmt__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor pg_query__variable_show_stmt__field_descriptors[1] = +{ + { + "name", + 1, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_STRING, + 0, /* quantifier_offset */ + offsetof(PgQuery__VariableShowStmt, name), + NULL, + &protobuf_c_empty_string, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned pg_query__variable_show_stmt__field_indices_by_name[] = { + 0, /* field[0] = name */ +}; +static const ProtobufCIntRange pg_query__variable_show_stmt__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 1 } +}; +const ProtobufCMessageDescriptor pg_query__variable_show_stmt__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "pg_query.VariableShowStmt", + "VariableShowStmt", + "PgQuery__VariableShowStmt", + "pg_query", + sizeof(PgQuery__VariableShowStmt), + 1, + pg_query__variable_show_stmt__field_descriptors, + pg_query__variable_show_stmt__field_indices_by_name, + 1, pg_query__variable_show_stmt__number_ranges, + (ProtobufCMessageInit) pg_query__variable_show_stmt__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor pg_query__discard_stmt__field_descriptors[1] = +{ + { + "target", + 1, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_ENUM, + 0, /* quantifier_offset */ + offsetof(PgQuery__DiscardStmt, target), + &pg_query__discard_mode__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned pg_query__discard_stmt__field_indices_by_name[] = { + 0, /* field[0] = target */ +}; +static const ProtobufCIntRange pg_query__discard_stmt__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 1 } +}; +const ProtobufCMessageDescriptor pg_query__discard_stmt__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "pg_query.DiscardStmt", + "DiscardStmt", + "PgQuery__DiscardStmt", + "pg_query", + sizeof(PgQuery__DiscardStmt), + 1, + pg_query__discard_stmt__field_descriptors, + pg_query__discard_stmt__field_indices_by_name, + 1, pg_query__discard_stmt__number_ranges, + (ProtobufCMessageInit) pg_query__discard_stmt__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor pg_query__create_trig_stmt__field_descriptors[14] = +{ + { + "trigname", + 1, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_STRING, + 0, /* quantifier_offset */ + offsetof(PgQuery__CreateTrigStmt, trigname), + NULL, + &protobuf_c_empty_string, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "relation", + 2, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(PgQuery__CreateTrigStmt, relation), + &pg_query__range_var__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "funcname", + 3, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__CreateTrigStmt, n_funcname), + offsetof(PgQuery__CreateTrigStmt, funcname), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "args", + 4, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__CreateTrigStmt, n_args), + offsetof(PgQuery__CreateTrigStmt, args), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "row", + 5, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_BOOL, + 0, /* quantifier_offset */ + offsetof(PgQuery__CreateTrigStmt, row), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "timing", + 6, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(PgQuery__CreateTrigStmt, timing), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "events", + 7, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(PgQuery__CreateTrigStmt, events), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "columns", + 8, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__CreateTrigStmt, n_columns), + offsetof(PgQuery__CreateTrigStmt, columns), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "when_clause", + 9, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(PgQuery__CreateTrigStmt, when_clause), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "isconstraint", + 10, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_BOOL, + 0, /* quantifier_offset */ + offsetof(PgQuery__CreateTrigStmt, isconstraint), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "transition_rels", + 11, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__CreateTrigStmt, n_transition_rels), + offsetof(PgQuery__CreateTrigStmt, transition_rels), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "deferrable", + 12, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_BOOL, + 0, /* quantifier_offset */ + offsetof(PgQuery__CreateTrigStmt, deferrable), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "initdeferred", + 13, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_BOOL, + 0, /* quantifier_offset */ + offsetof(PgQuery__CreateTrigStmt, initdeferred), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "constrrel", + 14, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(PgQuery__CreateTrigStmt, constrrel), + &pg_query__range_var__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned pg_query__create_trig_stmt__field_indices_by_name[] = { + 3, /* field[3] = args */ + 7, /* field[7] = columns */ + 13, /* field[13] = constrrel */ + 11, /* field[11] = deferrable */ + 6, /* field[6] = events */ + 2, /* field[2] = funcname */ + 12, /* field[12] = initdeferred */ + 9, /* field[9] = isconstraint */ + 1, /* field[1] = relation */ + 4, /* field[4] = row */ + 5, /* field[5] = timing */ + 10, /* field[10] = transition_rels */ + 0, /* field[0] = trigname */ + 8, /* field[8] = when_clause */ +}; +static const ProtobufCIntRange pg_query__create_trig_stmt__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 14 } +}; +const ProtobufCMessageDescriptor pg_query__create_trig_stmt__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "pg_query.CreateTrigStmt", + "CreateTrigStmt", + "PgQuery__CreateTrigStmt", + "pg_query", + sizeof(PgQuery__CreateTrigStmt), + 14, + pg_query__create_trig_stmt__field_descriptors, + pg_query__create_trig_stmt__field_indices_by_name, + 1, pg_query__create_trig_stmt__number_ranges, + (ProtobufCMessageInit) pg_query__create_trig_stmt__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor pg_query__create_plang_stmt__field_descriptors[6] = +{ + { + "replace", + 1, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_BOOL, + 0, /* quantifier_offset */ + offsetof(PgQuery__CreatePLangStmt, replace), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "plname", + 2, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_STRING, + 0, /* quantifier_offset */ + offsetof(PgQuery__CreatePLangStmt, plname), + NULL, + &protobuf_c_empty_string, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "plhandler", + 3, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__CreatePLangStmt, n_plhandler), + offsetof(PgQuery__CreatePLangStmt, plhandler), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "plinline", + 4, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__CreatePLangStmt, n_plinline), + offsetof(PgQuery__CreatePLangStmt, plinline), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "plvalidator", + 5, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__CreatePLangStmt, n_plvalidator), + offsetof(PgQuery__CreatePLangStmt, plvalidator), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "pltrusted", + 6, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_BOOL, + 0, /* quantifier_offset */ + offsetof(PgQuery__CreatePLangStmt, pltrusted), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned pg_query__create_plang_stmt__field_indices_by_name[] = { + 2, /* field[2] = plhandler */ + 3, /* field[3] = plinline */ + 1, /* field[1] = plname */ + 5, /* field[5] = pltrusted */ + 4, /* field[4] = plvalidator */ + 0, /* field[0] = replace */ +}; +static const ProtobufCIntRange pg_query__create_plang_stmt__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 6 } +}; +const ProtobufCMessageDescriptor pg_query__create_plang_stmt__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "pg_query.CreatePLangStmt", + "CreatePLangStmt", + "PgQuery__CreatePLangStmt", + "pg_query", + sizeof(PgQuery__CreatePLangStmt), + 6, + pg_query__create_plang_stmt__field_descriptors, + pg_query__create_plang_stmt__field_indices_by_name, + 1, pg_query__create_plang_stmt__number_ranges, + (ProtobufCMessageInit) pg_query__create_plang_stmt__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor pg_query__create_role_stmt__field_descriptors[3] = +{ + { + "stmt_type", + 1, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_ENUM, + 0, /* quantifier_offset */ + offsetof(PgQuery__CreateRoleStmt, stmt_type), + &pg_query__role_stmt_type__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "role", + 2, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_STRING, + 0, /* quantifier_offset */ + offsetof(PgQuery__CreateRoleStmt, role), + NULL, + &protobuf_c_empty_string, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "options", + 3, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__CreateRoleStmt, n_options), + offsetof(PgQuery__CreateRoleStmt, options), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned pg_query__create_role_stmt__field_indices_by_name[] = { + 2, /* field[2] = options */ + 1, /* field[1] = role */ + 0, /* field[0] = stmt_type */ +}; +static const ProtobufCIntRange pg_query__create_role_stmt__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 3 } +}; +const ProtobufCMessageDescriptor pg_query__create_role_stmt__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "pg_query.CreateRoleStmt", + "CreateRoleStmt", + "PgQuery__CreateRoleStmt", + "pg_query", + sizeof(PgQuery__CreateRoleStmt), + 3, + pg_query__create_role_stmt__field_descriptors, + pg_query__create_role_stmt__field_indices_by_name, + 1, pg_query__create_role_stmt__number_ranges, + (ProtobufCMessageInit) pg_query__create_role_stmt__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor pg_query__alter_role_stmt__field_descriptors[3] = +{ + { + "role", + 1, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(PgQuery__AlterRoleStmt, role), + &pg_query__role_spec__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "options", + 2, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__AlterRoleStmt, n_options), + offsetof(PgQuery__AlterRoleStmt, options), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "action", + 3, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(PgQuery__AlterRoleStmt, action), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned pg_query__alter_role_stmt__field_indices_by_name[] = { + 2, /* field[2] = action */ + 1, /* field[1] = options */ + 0, /* field[0] = role */ +}; +static const ProtobufCIntRange pg_query__alter_role_stmt__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 3 } +}; +const ProtobufCMessageDescriptor pg_query__alter_role_stmt__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "pg_query.AlterRoleStmt", + "AlterRoleStmt", + "PgQuery__AlterRoleStmt", + "pg_query", + sizeof(PgQuery__AlterRoleStmt), + 3, + pg_query__alter_role_stmt__field_descriptors, + pg_query__alter_role_stmt__field_indices_by_name, + 1, pg_query__alter_role_stmt__number_ranges, + (ProtobufCMessageInit) pg_query__alter_role_stmt__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor pg_query__drop_role_stmt__field_descriptors[2] = +{ + { + "roles", + 1, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__DropRoleStmt, n_roles), + offsetof(PgQuery__DropRoleStmt, roles), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "missing_ok", + 2, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_BOOL, + 0, /* quantifier_offset */ + offsetof(PgQuery__DropRoleStmt, missing_ok), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned pg_query__drop_role_stmt__field_indices_by_name[] = { + 1, /* field[1] = missing_ok */ + 0, /* field[0] = roles */ +}; +static const ProtobufCIntRange pg_query__drop_role_stmt__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 2 } +}; +const ProtobufCMessageDescriptor pg_query__drop_role_stmt__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "pg_query.DropRoleStmt", + "DropRoleStmt", + "PgQuery__DropRoleStmt", + "pg_query", + sizeof(PgQuery__DropRoleStmt), + 2, + pg_query__drop_role_stmt__field_descriptors, + pg_query__drop_role_stmt__field_indices_by_name, + 1, pg_query__drop_role_stmt__number_ranges, + (ProtobufCMessageInit) pg_query__drop_role_stmt__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor pg_query__lock_stmt__field_descriptors[3] = +{ + { + "relations", + 1, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__LockStmt, n_relations), + offsetof(PgQuery__LockStmt, relations), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "mode", + 2, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(PgQuery__LockStmt, mode), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "nowait", + 3, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_BOOL, + 0, /* quantifier_offset */ + offsetof(PgQuery__LockStmt, nowait), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned pg_query__lock_stmt__field_indices_by_name[] = { + 1, /* field[1] = mode */ + 2, /* field[2] = nowait */ + 0, /* field[0] = relations */ +}; +static const ProtobufCIntRange pg_query__lock_stmt__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 3 } +}; +const ProtobufCMessageDescriptor pg_query__lock_stmt__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "pg_query.LockStmt", + "LockStmt", + "PgQuery__LockStmt", + "pg_query", + sizeof(PgQuery__LockStmt), + 3, + pg_query__lock_stmt__field_descriptors, + pg_query__lock_stmt__field_indices_by_name, + 1, pg_query__lock_stmt__number_ranges, + (ProtobufCMessageInit) pg_query__lock_stmt__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor pg_query__constraints_set_stmt__field_descriptors[2] = +{ + { + "constraints", + 1, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__ConstraintsSetStmt, n_constraints), + offsetof(PgQuery__ConstraintsSetStmt, constraints), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "deferred", + 2, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_BOOL, + 0, /* quantifier_offset */ + offsetof(PgQuery__ConstraintsSetStmt, deferred), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned pg_query__constraints_set_stmt__field_indices_by_name[] = { + 0, /* field[0] = constraints */ + 1, /* field[1] = deferred */ +}; +static const ProtobufCIntRange pg_query__constraints_set_stmt__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 2 } +}; +const ProtobufCMessageDescriptor pg_query__constraints_set_stmt__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "pg_query.ConstraintsSetStmt", + "ConstraintsSetStmt", + "PgQuery__ConstraintsSetStmt", + "pg_query", + sizeof(PgQuery__ConstraintsSetStmt), + 2, + pg_query__constraints_set_stmt__field_descriptors, + pg_query__constraints_set_stmt__field_indices_by_name, + 1, pg_query__constraints_set_stmt__number_ranges, + (ProtobufCMessageInit) pg_query__constraints_set_stmt__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor pg_query__reindex_stmt__field_descriptors[5] = +{ + { + "kind", + 1, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_ENUM, + 0, /* quantifier_offset */ + offsetof(PgQuery__ReindexStmt, kind), + &pg_query__reindex_object_type__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "relation", + 2, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(PgQuery__ReindexStmt, relation), + &pg_query__range_var__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "name", + 3, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_STRING, + 0, /* quantifier_offset */ + offsetof(PgQuery__ReindexStmt, name), + NULL, + &protobuf_c_empty_string, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "options", + 4, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(PgQuery__ReindexStmt, options), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "concurrent", + 5, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_BOOL, + 0, /* quantifier_offset */ + offsetof(PgQuery__ReindexStmt, concurrent), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned pg_query__reindex_stmt__field_indices_by_name[] = { + 4, /* field[4] = concurrent */ + 0, /* field[0] = kind */ + 2, /* field[2] = name */ + 3, /* field[3] = options */ + 1, /* field[1] = relation */ +}; +static const ProtobufCIntRange pg_query__reindex_stmt__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 5 } +}; +const ProtobufCMessageDescriptor pg_query__reindex_stmt__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "pg_query.ReindexStmt", + "ReindexStmt", + "PgQuery__ReindexStmt", + "pg_query", + sizeof(PgQuery__ReindexStmt), + 5, + pg_query__reindex_stmt__field_descriptors, + pg_query__reindex_stmt__field_indices_by_name, + 1, pg_query__reindex_stmt__number_ranges, + (ProtobufCMessageInit) pg_query__reindex_stmt__init, + NULL,NULL,NULL /* reserved[123] */ +}; +#define pg_query__check_point_stmt__field_descriptors NULL +#define pg_query__check_point_stmt__field_indices_by_name NULL +#define pg_query__check_point_stmt__number_ranges NULL +const ProtobufCMessageDescriptor pg_query__check_point_stmt__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "pg_query.CheckPointStmt", + "CheckPointStmt", + "PgQuery__CheckPointStmt", + "pg_query", + sizeof(PgQuery__CheckPointStmt), + 0, + pg_query__check_point_stmt__field_descriptors, + pg_query__check_point_stmt__field_indices_by_name, + 0, pg_query__check_point_stmt__number_ranges, + (ProtobufCMessageInit) pg_query__check_point_stmt__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor pg_query__create_schema_stmt__field_descriptors[4] = +{ + { + "schemaname", + 1, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_STRING, + 0, /* quantifier_offset */ + offsetof(PgQuery__CreateSchemaStmt, schemaname), + NULL, + &protobuf_c_empty_string, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "authrole", + 2, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(PgQuery__CreateSchemaStmt, authrole), + &pg_query__role_spec__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "schema_elts", + 3, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__CreateSchemaStmt, n_schema_elts), + offsetof(PgQuery__CreateSchemaStmt, schema_elts), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "if_not_exists", + 4, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_BOOL, + 0, /* quantifier_offset */ + offsetof(PgQuery__CreateSchemaStmt, if_not_exists), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned pg_query__create_schema_stmt__field_indices_by_name[] = { + 1, /* field[1] = authrole */ + 3, /* field[3] = if_not_exists */ + 2, /* field[2] = schema_elts */ + 0, /* field[0] = schemaname */ +}; +static const ProtobufCIntRange pg_query__create_schema_stmt__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 4 } +}; +const ProtobufCMessageDescriptor pg_query__create_schema_stmt__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "pg_query.CreateSchemaStmt", + "CreateSchemaStmt", + "PgQuery__CreateSchemaStmt", + "pg_query", + sizeof(PgQuery__CreateSchemaStmt), + 4, + pg_query__create_schema_stmt__field_descriptors, + pg_query__create_schema_stmt__field_indices_by_name, + 1, pg_query__create_schema_stmt__number_ranges, + (ProtobufCMessageInit) pg_query__create_schema_stmt__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor pg_query__alter_database_stmt__field_descriptors[2] = +{ + { + "dbname", + 1, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_STRING, + 0, /* quantifier_offset */ + offsetof(PgQuery__AlterDatabaseStmt, dbname), + NULL, + &protobuf_c_empty_string, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "options", + 2, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__AlterDatabaseStmt, n_options), + offsetof(PgQuery__AlterDatabaseStmt, options), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned pg_query__alter_database_stmt__field_indices_by_name[] = { + 0, /* field[0] = dbname */ + 1, /* field[1] = options */ +}; +static const ProtobufCIntRange pg_query__alter_database_stmt__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 2 } +}; +const ProtobufCMessageDescriptor pg_query__alter_database_stmt__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "pg_query.AlterDatabaseStmt", + "AlterDatabaseStmt", + "PgQuery__AlterDatabaseStmt", + "pg_query", + sizeof(PgQuery__AlterDatabaseStmt), + 2, + pg_query__alter_database_stmt__field_descriptors, + pg_query__alter_database_stmt__field_indices_by_name, + 1, pg_query__alter_database_stmt__number_ranges, + (ProtobufCMessageInit) pg_query__alter_database_stmt__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor pg_query__alter_database_set_stmt__field_descriptors[2] = +{ + { + "dbname", + 1, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_STRING, + 0, /* quantifier_offset */ + offsetof(PgQuery__AlterDatabaseSetStmt, dbname), + NULL, + &protobuf_c_empty_string, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "setstmt", + 2, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(PgQuery__AlterDatabaseSetStmt, setstmt), + &pg_query__variable_set_stmt__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned pg_query__alter_database_set_stmt__field_indices_by_name[] = { + 0, /* field[0] = dbname */ + 1, /* field[1] = setstmt */ +}; +static const ProtobufCIntRange pg_query__alter_database_set_stmt__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 2 } +}; +const ProtobufCMessageDescriptor pg_query__alter_database_set_stmt__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "pg_query.AlterDatabaseSetStmt", + "AlterDatabaseSetStmt", + "PgQuery__AlterDatabaseSetStmt", + "pg_query", + sizeof(PgQuery__AlterDatabaseSetStmt), + 2, + pg_query__alter_database_set_stmt__field_descriptors, + pg_query__alter_database_set_stmt__field_indices_by_name, + 1, pg_query__alter_database_set_stmt__number_ranges, + (ProtobufCMessageInit) pg_query__alter_database_set_stmt__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor pg_query__alter_role_set_stmt__field_descriptors[3] = +{ + { + "role", + 1, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(PgQuery__AlterRoleSetStmt, role), + &pg_query__role_spec__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "database", + 2, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_STRING, + 0, /* quantifier_offset */ + offsetof(PgQuery__AlterRoleSetStmt, database), + NULL, + &protobuf_c_empty_string, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "setstmt", + 3, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(PgQuery__AlterRoleSetStmt, setstmt), + &pg_query__variable_set_stmt__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned pg_query__alter_role_set_stmt__field_indices_by_name[] = { + 1, /* field[1] = database */ + 0, /* field[0] = role */ + 2, /* field[2] = setstmt */ +}; +static const ProtobufCIntRange pg_query__alter_role_set_stmt__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 3 } +}; +const ProtobufCMessageDescriptor pg_query__alter_role_set_stmt__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "pg_query.AlterRoleSetStmt", + "AlterRoleSetStmt", + "PgQuery__AlterRoleSetStmt", + "pg_query", + sizeof(PgQuery__AlterRoleSetStmt), + 3, + pg_query__alter_role_set_stmt__field_descriptors, + pg_query__alter_role_set_stmt__field_indices_by_name, + 1, pg_query__alter_role_set_stmt__number_ranges, + (ProtobufCMessageInit) pg_query__alter_role_set_stmt__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor pg_query__create_conversion_stmt__field_descriptors[5] = +{ + { + "conversion_name", + 1, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__CreateConversionStmt, n_conversion_name), + offsetof(PgQuery__CreateConversionStmt, conversion_name), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "for_encoding_name", + 2, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_STRING, + 0, /* quantifier_offset */ + offsetof(PgQuery__CreateConversionStmt, for_encoding_name), + NULL, + &protobuf_c_empty_string, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "to_encoding_name", + 3, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_STRING, + 0, /* quantifier_offset */ + offsetof(PgQuery__CreateConversionStmt, to_encoding_name), + NULL, + &protobuf_c_empty_string, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "func_name", + 4, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__CreateConversionStmt, n_func_name), + offsetof(PgQuery__CreateConversionStmt, func_name), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "def", + 5, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_BOOL, + 0, /* quantifier_offset */ + offsetof(PgQuery__CreateConversionStmt, def), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned pg_query__create_conversion_stmt__field_indices_by_name[] = { + 0, /* field[0] = conversion_name */ + 4, /* field[4] = def */ + 1, /* field[1] = for_encoding_name */ + 3, /* field[3] = func_name */ + 2, /* field[2] = to_encoding_name */ +}; +static const ProtobufCIntRange pg_query__create_conversion_stmt__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 5 } +}; +const ProtobufCMessageDescriptor pg_query__create_conversion_stmt__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "pg_query.CreateConversionStmt", + "CreateConversionStmt", + "PgQuery__CreateConversionStmt", + "pg_query", + sizeof(PgQuery__CreateConversionStmt), + 5, + pg_query__create_conversion_stmt__field_descriptors, + pg_query__create_conversion_stmt__field_indices_by_name, + 1, pg_query__create_conversion_stmt__number_ranges, + (ProtobufCMessageInit) pg_query__create_conversion_stmt__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor pg_query__create_cast_stmt__field_descriptors[5] = +{ + { + "sourcetype", + 1, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(PgQuery__CreateCastStmt, sourcetype), + &pg_query__type_name__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "targettype", + 2, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(PgQuery__CreateCastStmt, targettype), + &pg_query__type_name__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "func", + 3, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(PgQuery__CreateCastStmt, func), + &pg_query__object_with_args__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "context", + 4, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_ENUM, + 0, /* quantifier_offset */ + offsetof(PgQuery__CreateCastStmt, context), + &pg_query__coercion_context__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "inout", + 5, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_BOOL, + 0, /* quantifier_offset */ + offsetof(PgQuery__CreateCastStmt, inout), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned pg_query__create_cast_stmt__field_indices_by_name[] = { + 3, /* field[3] = context */ + 2, /* field[2] = func */ + 4, /* field[4] = inout */ + 0, /* field[0] = sourcetype */ + 1, /* field[1] = targettype */ +}; +static const ProtobufCIntRange pg_query__create_cast_stmt__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 5 } +}; +const ProtobufCMessageDescriptor pg_query__create_cast_stmt__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "pg_query.CreateCastStmt", + "CreateCastStmt", + "PgQuery__CreateCastStmt", + "pg_query", + sizeof(PgQuery__CreateCastStmt), + 5, + pg_query__create_cast_stmt__field_descriptors, + pg_query__create_cast_stmt__field_indices_by_name, + 1, pg_query__create_cast_stmt__number_ranges, + (ProtobufCMessageInit) pg_query__create_cast_stmt__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor pg_query__create_op_class_stmt__field_descriptors[6] = +{ + { + "opclassname", + 1, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__CreateOpClassStmt, n_opclassname), + offsetof(PgQuery__CreateOpClassStmt, opclassname), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "opfamilyname", + 2, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__CreateOpClassStmt, n_opfamilyname), + offsetof(PgQuery__CreateOpClassStmt, opfamilyname), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "amname", + 3, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_STRING, + 0, /* quantifier_offset */ + offsetof(PgQuery__CreateOpClassStmt, amname), + NULL, + &protobuf_c_empty_string, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "datatype", + 4, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(PgQuery__CreateOpClassStmt, datatype), + &pg_query__type_name__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "items", + 5, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__CreateOpClassStmt, n_items), + offsetof(PgQuery__CreateOpClassStmt, items), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "is_default", + 6, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_BOOL, + 0, /* quantifier_offset */ + offsetof(PgQuery__CreateOpClassStmt, is_default), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned pg_query__create_op_class_stmt__field_indices_by_name[] = { + 2, /* field[2] = amname */ + 3, /* field[3] = datatype */ + 5, /* field[5] = is_default */ + 4, /* field[4] = items */ + 0, /* field[0] = opclassname */ + 1, /* field[1] = opfamilyname */ +}; +static const ProtobufCIntRange pg_query__create_op_class_stmt__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 6 } +}; +const ProtobufCMessageDescriptor pg_query__create_op_class_stmt__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "pg_query.CreateOpClassStmt", + "CreateOpClassStmt", + "PgQuery__CreateOpClassStmt", + "pg_query", + sizeof(PgQuery__CreateOpClassStmt), + 6, + pg_query__create_op_class_stmt__field_descriptors, + pg_query__create_op_class_stmt__field_indices_by_name, + 1, pg_query__create_op_class_stmt__number_ranges, + (ProtobufCMessageInit) pg_query__create_op_class_stmt__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor pg_query__create_op_family_stmt__field_descriptors[2] = +{ + { + "opfamilyname", + 1, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__CreateOpFamilyStmt, n_opfamilyname), + offsetof(PgQuery__CreateOpFamilyStmt, opfamilyname), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "amname", + 2, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_STRING, + 0, /* quantifier_offset */ + offsetof(PgQuery__CreateOpFamilyStmt, amname), + NULL, + &protobuf_c_empty_string, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned pg_query__create_op_family_stmt__field_indices_by_name[] = { + 1, /* field[1] = amname */ + 0, /* field[0] = opfamilyname */ +}; +static const ProtobufCIntRange pg_query__create_op_family_stmt__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 2 } +}; +const ProtobufCMessageDescriptor pg_query__create_op_family_stmt__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "pg_query.CreateOpFamilyStmt", + "CreateOpFamilyStmt", + "PgQuery__CreateOpFamilyStmt", + "pg_query", + sizeof(PgQuery__CreateOpFamilyStmt), + 2, + pg_query__create_op_family_stmt__field_descriptors, + pg_query__create_op_family_stmt__field_indices_by_name, + 1, pg_query__create_op_family_stmt__number_ranges, + (ProtobufCMessageInit) pg_query__create_op_family_stmt__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor pg_query__alter_op_family_stmt__field_descriptors[4] = +{ + { + "opfamilyname", + 1, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__AlterOpFamilyStmt, n_opfamilyname), + offsetof(PgQuery__AlterOpFamilyStmt, opfamilyname), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "amname", + 2, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_STRING, + 0, /* quantifier_offset */ + offsetof(PgQuery__AlterOpFamilyStmt, amname), + NULL, + &protobuf_c_empty_string, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "is_drop", + 3, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_BOOL, + 0, /* quantifier_offset */ + offsetof(PgQuery__AlterOpFamilyStmt, is_drop), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "items", + 4, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__AlterOpFamilyStmt, n_items), + offsetof(PgQuery__AlterOpFamilyStmt, items), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned pg_query__alter_op_family_stmt__field_indices_by_name[] = { + 1, /* field[1] = amname */ + 2, /* field[2] = is_drop */ + 3, /* field[3] = items */ + 0, /* field[0] = opfamilyname */ +}; +static const ProtobufCIntRange pg_query__alter_op_family_stmt__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 4 } +}; +const ProtobufCMessageDescriptor pg_query__alter_op_family_stmt__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "pg_query.AlterOpFamilyStmt", + "AlterOpFamilyStmt", + "PgQuery__AlterOpFamilyStmt", + "pg_query", + sizeof(PgQuery__AlterOpFamilyStmt), + 4, + pg_query__alter_op_family_stmt__field_descriptors, + pg_query__alter_op_family_stmt__field_indices_by_name, + 1, pg_query__alter_op_family_stmt__number_ranges, + (ProtobufCMessageInit) pg_query__alter_op_family_stmt__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor pg_query__prepare_stmt__field_descriptors[3] = +{ + { + "name", + 1, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_STRING, + 0, /* quantifier_offset */ + offsetof(PgQuery__PrepareStmt, name), + NULL, + &protobuf_c_empty_string, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "argtypes", + 2, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__PrepareStmt, n_argtypes), + offsetof(PgQuery__PrepareStmt, argtypes), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "query", + 3, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(PgQuery__PrepareStmt, query), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned pg_query__prepare_stmt__field_indices_by_name[] = { + 1, /* field[1] = argtypes */ + 0, /* field[0] = name */ + 2, /* field[2] = query */ +}; +static const ProtobufCIntRange pg_query__prepare_stmt__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 3 } +}; +const ProtobufCMessageDescriptor pg_query__prepare_stmt__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "pg_query.PrepareStmt", + "PrepareStmt", + "PgQuery__PrepareStmt", + "pg_query", + sizeof(PgQuery__PrepareStmt), + 3, + pg_query__prepare_stmt__field_descriptors, + pg_query__prepare_stmt__field_indices_by_name, + 1, pg_query__prepare_stmt__number_ranges, + (ProtobufCMessageInit) pg_query__prepare_stmt__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor pg_query__execute_stmt__field_descriptors[2] = +{ + { + "name", + 1, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_STRING, + 0, /* quantifier_offset */ + offsetof(PgQuery__ExecuteStmt, name), + NULL, + &protobuf_c_empty_string, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "params", + 2, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__ExecuteStmt, n_params), + offsetof(PgQuery__ExecuteStmt, params), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned pg_query__execute_stmt__field_indices_by_name[] = { + 0, /* field[0] = name */ + 1, /* field[1] = params */ +}; +static const ProtobufCIntRange pg_query__execute_stmt__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 2 } +}; +const ProtobufCMessageDescriptor pg_query__execute_stmt__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "pg_query.ExecuteStmt", + "ExecuteStmt", + "PgQuery__ExecuteStmt", + "pg_query", + sizeof(PgQuery__ExecuteStmt), + 2, + pg_query__execute_stmt__field_descriptors, + pg_query__execute_stmt__field_indices_by_name, + 1, pg_query__execute_stmt__number_ranges, + (ProtobufCMessageInit) pg_query__execute_stmt__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor pg_query__deallocate_stmt__field_descriptors[1] = +{ + { + "name", + 1, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_STRING, + 0, /* quantifier_offset */ + offsetof(PgQuery__DeallocateStmt, name), + NULL, + &protobuf_c_empty_string, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned pg_query__deallocate_stmt__field_indices_by_name[] = { + 0, /* field[0] = name */ +}; +static const ProtobufCIntRange pg_query__deallocate_stmt__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 1 } +}; +const ProtobufCMessageDescriptor pg_query__deallocate_stmt__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "pg_query.DeallocateStmt", + "DeallocateStmt", + "PgQuery__DeallocateStmt", + "pg_query", + sizeof(PgQuery__DeallocateStmt), + 1, + pg_query__deallocate_stmt__field_descriptors, + pg_query__deallocate_stmt__field_indices_by_name, + 1, pg_query__deallocate_stmt__number_ranges, + (ProtobufCMessageInit) pg_query__deallocate_stmt__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor pg_query__declare_cursor_stmt__field_descriptors[3] = +{ + { + "portalname", + 1, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_STRING, + 0, /* quantifier_offset */ + offsetof(PgQuery__DeclareCursorStmt, portalname), + NULL, + &protobuf_c_empty_string, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "options", + 2, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(PgQuery__DeclareCursorStmt, options), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "query", + 3, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(PgQuery__DeclareCursorStmt, query), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned pg_query__declare_cursor_stmt__field_indices_by_name[] = { + 1, /* field[1] = options */ + 0, /* field[0] = portalname */ + 2, /* field[2] = query */ +}; +static const ProtobufCIntRange pg_query__declare_cursor_stmt__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 3 } +}; +const ProtobufCMessageDescriptor pg_query__declare_cursor_stmt__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "pg_query.DeclareCursorStmt", + "DeclareCursorStmt", + "PgQuery__DeclareCursorStmt", + "pg_query", + sizeof(PgQuery__DeclareCursorStmt), + 3, + pg_query__declare_cursor_stmt__field_descriptors, + pg_query__declare_cursor_stmt__field_indices_by_name, + 1, pg_query__declare_cursor_stmt__number_ranges, + (ProtobufCMessageInit) pg_query__declare_cursor_stmt__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor pg_query__create_table_space_stmt__field_descriptors[4] = +{ + { + "tablespacename", + 1, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_STRING, + 0, /* quantifier_offset */ + offsetof(PgQuery__CreateTableSpaceStmt, tablespacename), + NULL, + &protobuf_c_empty_string, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "owner", + 2, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(PgQuery__CreateTableSpaceStmt, owner), + &pg_query__role_spec__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "location", + 3, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_STRING, + 0, /* quantifier_offset */ + offsetof(PgQuery__CreateTableSpaceStmt, location), + NULL, + &protobuf_c_empty_string, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "options", + 4, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__CreateTableSpaceStmt, n_options), + offsetof(PgQuery__CreateTableSpaceStmt, options), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned pg_query__create_table_space_stmt__field_indices_by_name[] = { + 2, /* field[2] = location */ + 3, /* field[3] = options */ + 1, /* field[1] = owner */ + 0, /* field[0] = tablespacename */ +}; +static const ProtobufCIntRange pg_query__create_table_space_stmt__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 4 } +}; +const ProtobufCMessageDescriptor pg_query__create_table_space_stmt__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "pg_query.CreateTableSpaceStmt", + "CreateTableSpaceStmt", + "PgQuery__CreateTableSpaceStmt", + "pg_query", + sizeof(PgQuery__CreateTableSpaceStmt), + 4, + pg_query__create_table_space_stmt__field_descriptors, + pg_query__create_table_space_stmt__field_indices_by_name, + 1, pg_query__create_table_space_stmt__number_ranges, + (ProtobufCMessageInit) pg_query__create_table_space_stmt__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor pg_query__drop_table_space_stmt__field_descriptors[2] = +{ + { + "tablespacename", + 1, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_STRING, + 0, /* quantifier_offset */ + offsetof(PgQuery__DropTableSpaceStmt, tablespacename), + NULL, + &protobuf_c_empty_string, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "missing_ok", + 2, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_BOOL, + 0, /* quantifier_offset */ + offsetof(PgQuery__DropTableSpaceStmt, missing_ok), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned pg_query__drop_table_space_stmt__field_indices_by_name[] = { + 1, /* field[1] = missing_ok */ + 0, /* field[0] = tablespacename */ +}; +static const ProtobufCIntRange pg_query__drop_table_space_stmt__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 2 } +}; +const ProtobufCMessageDescriptor pg_query__drop_table_space_stmt__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "pg_query.DropTableSpaceStmt", + "DropTableSpaceStmt", + "PgQuery__DropTableSpaceStmt", + "pg_query", + sizeof(PgQuery__DropTableSpaceStmt), + 2, + pg_query__drop_table_space_stmt__field_descriptors, + pg_query__drop_table_space_stmt__field_indices_by_name, + 1, pg_query__drop_table_space_stmt__number_ranges, + (ProtobufCMessageInit) pg_query__drop_table_space_stmt__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor pg_query__alter_object_depends_stmt__field_descriptors[5] = +{ + { + "object_type", + 1, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_ENUM, + 0, /* quantifier_offset */ + offsetof(PgQuery__AlterObjectDependsStmt, object_type), + &pg_query__object_type__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "relation", + 2, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(PgQuery__AlterObjectDependsStmt, relation), + &pg_query__range_var__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "object", + 3, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(PgQuery__AlterObjectDependsStmt, object), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "extname", + 4, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(PgQuery__AlterObjectDependsStmt, extname), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "remove", + 5, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_BOOL, + 0, /* quantifier_offset */ + offsetof(PgQuery__AlterObjectDependsStmt, remove), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned pg_query__alter_object_depends_stmt__field_indices_by_name[] = { + 3, /* field[3] = extname */ + 2, /* field[2] = object */ + 0, /* field[0] = object_type */ + 1, /* field[1] = relation */ + 4, /* field[4] = remove */ +}; +static const ProtobufCIntRange pg_query__alter_object_depends_stmt__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 5 } +}; +const ProtobufCMessageDescriptor pg_query__alter_object_depends_stmt__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "pg_query.AlterObjectDependsStmt", + "AlterObjectDependsStmt", + "PgQuery__AlterObjectDependsStmt", + "pg_query", + sizeof(PgQuery__AlterObjectDependsStmt), + 5, + pg_query__alter_object_depends_stmt__field_descriptors, + pg_query__alter_object_depends_stmt__field_indices_by_name, + 1, pg_query__alter_object_depends_stmt__number_ranges, + (ProtobufCMessageInit) pg_query__alter_object_depends_stmt__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor pg_query__alter_object_schema_stmt__field_descriptors[5] = +{ + { + "object_type", + 1, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_ENUM, + 0, /* quantifier_offset */ + offsetof(PgQuery__AlterObjectSchemaStmt, object_type), + &pg_query__object_type__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "relation", + 2, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(PgQuery__AlterObjectSchemaStmt, relation), + &pg_query__range_var__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "object", + 3, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(PgQuery__AlterObjectSchemaStmt, object), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "newschema", + 4, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_STRING, + 0, /* quantifier_offset */ + offsetof(PgQuery__AlterObjectSchemaStmt, newschema), + NULL, + &protobuf_c_empty_string, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "missing_ok", + 5, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_BOOL, + 0, /* quantifier_offset */ + offsetof(PgQuery__AlterObjectSchemaStmt, missing_ok), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned pg_query__alter_object_schema_stmt__field_indices_by_name[] = { + 4, /* field[4] = missing_ok */ + 3, /* field[3] = newschema */ + 2, /* field[2] = object */ + 0, /* field[0] = object_type */ + 1, /* field[1] = relation */ +}; +static const ProtobufCIntRange pg_query__alter_object_schema_stmt__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 5 } +}; +const ProtobufCMessageDescriptor pg_query__alter_object_schema_stmt__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "pg_query.AlterObjectSchemaStmt", + "AlterObjectSchemaStmt", + "PgQuery__AlterObjectSchemaStmt", + "pg_query", + sizeof(PgQuery__AlterObjectSchemaStmt), + 5, + pg_query__alter_object_schema_stmt__field_descriptors, + pg_query__alter_object_schema_stmt__field_indices_by_name, + 1, pg_query__alter_object_schema_stmt__number_ranges, + (ProtobufCMessageInit) pg_query__alter_object_schema_stmt__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor pg_query__alter_owner_stmt__field_descriptors[4] = +{ + { + "object_type", + 1, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_ENUM, + 0, /* quantifier_offset */ + offsetof(PgQuery__AlterOwnerStmt, object_type), + &pg_query__object_type__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "relation", + 2, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(PgQuery__AlterOwnerStmt, relation), + &pg_query__range_var__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "object", + 3, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(PgQuery__AlterOwnerStmt, object), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "newowner", + 4, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(PgQuery__AlterOwnerStmt, newowner), + &pg_query__role_spec__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned pg_query__alter_owner_stmt__field_indices_by_name[] = { + 3, /* field[3] = newowner */ + 2, /* field[2] = object */ + 0, /* field[0] = object_type */ + 1, /* field[1] = relation */ +}; +static const ProtobufCIntRange pg_query__alter_owner_stmt__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 4 } +}; +const ProtobufCMessageDescriptor pg_query__alter_owner_stmt__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "pg_query.AlterOwnerStmt", + "AlterOwnerStmt", + "PgQuery__AlterOwnerStmt", + "pg_query", + sizeof(PgQuery__AlterOwnerStmt), + 4, + pg_query__alter_owner_stmt__field_descriptors, + pg_query__alter_owner_stmt__field_indices_by_name, + 1, pg_query__alter_owner_stmt__number_ranges, + (ProtobufCMessageInit) pg_query__alter_owner_stmt__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor pg_query__alter_operator_stmt__field_descriptors[2] = +{ + { + "opername", + 1, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(PgQuery__AlterOperatorStmt, opername), + &pg_query__object_with_args__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "options", + 2, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__AlterOperatorStmt, n_options), + offsetof(PgQuery__AlterOperatorStmt, options), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned pg_query__alter_operator_stmt__field_indices_by_name[] = { + 0, /* field[0] = opername */ + 1, /* field[1] = options */ +}; +static const ProtobufCIntRange pg_query__alter_operator_stmt__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 2 } +}; +const ProtobufCMessageDescriptor pg_query__alter_operator_stmt__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "pg_query.AlterOperatorStmt", + "AlterOperatorStmt", + "PgQuery__AlterOperatorStmt", + "pg_query", + sizeof(PgQuery__AlterOperatorStmt), + 2, + pg_query__alter_operator_stmt__field_descriptors, + pg_query__alter_operator_stmt__field_indices_by_name, + 1, pg_query__alter_operator_stmt__number_ranges, + (ProtobufCMessageInit) pg_query__alter_operator_stmt__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor pg_query__alter_type_stmt__field_descriptors[2] = +{ + { + "type_name", + 1, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__AlterTypeStmt, n_type_name), + offsetof(PgQuery__AlterTypeStmt, type_name), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "options", + 2, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__AlterTypeStmt, n_options), + offsetof(PgQuery__AlterTypeStmt, options), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned pg_query__alter_type_stmt__field_indices_by_name[] = { + 1, /* field[1] = options */ + 0, /* field[0] = type_name */ +}; +static const ProtobufCIntRange pg_query__alter_type_stmt__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 2 } +}; +const ProtobufCMessageDescriptor pg_query__alter_type_stmt__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "pg_query.AlterTypeStmt", + "AlterTypeStmt", + "PgQuery__AlterTypeStmt", + "pg_query", + sizeof(PgQuery__AlterTypeStmt), + 2, + pg_query__alter_type_stmt__field_descriptors, + pg_query__alter_type_stmt__field_indices_by_name, + 1, pg_query__alter_type_stmt__number_ranges, + (ProtobufCMessageInit) pg_query__alter_type_stmt__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor pg_query__drop_owned_stmt__field_descriptors[2] = +{ + { + "roles", + 1, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__DropOwnedStmt, n_roles), + offsetof(PgQuery__DropOwnedStmt, roles), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "behavior", + 2, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_ENUM, + 0, /* quantifier_offset */ + offsetof(PgQuery__DropOwnedStmt, behavior), + &pg_query__drop_behavior__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned pg_query__drop_owned_stmt__field_indices_by_name[] = { + 1, /* field[1] = behavior */ + 0, /* field[0] = roles */ +}; +static const ProtobufCIntRange pg_query__drop_owned_stmt__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 2 } +}; +const ProtobufCMessageDescriptor pg_query__drop_owned_stmt__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "pg_query.DropOwnedStmt", + "DropOwnedStmt", + "PgQuery__DropOwnedStmt", + "pg_query", + sizeof(PgQuery__DropOwnedStmt), + 2, + pg_query__drop_owned_stmt__field_descriptors, + pg_query__drop_owned_stmt__field_indices_by_name, + 1, pg_query__drop_owned_stmt__number_ranges, + (ProtobufCMessageInit) pg_query__drop_owned_stmt__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor pg_query__reassign_owned_stmt__field_descriptors[2] = +{ + { + "roles", + 1, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__ReassignOwnedStmt, n_roles), + offsetof(PgQuery__ReassignOwnedStmt, roles), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "newrole", + 2, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(PgQuery__ReassignOwnedStmt, newrole), + &pg_query__role_spec__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned pg_query__reassign_owned_stmt__field_indices_by_name[] = { + 1, /* field[1] = newrole */ + 0, /* field[0] = roles */ +}; +static const ProtobufCIntRange pg_query__reassign_owned_stmt__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 2 } +}; +const ProtobufCMessageDescriptor pg_query__reassign_owned_stmt__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "pg_query.ReassignOwnedStmt", + "ReassignOwnedStmt", + "PgQuery__ReassignOwnedStmt", + "pg_query", + sizeof(PgQuery__ReassignOwnedStmt), + 2, + pg_query__reassign_owned_stmt__field_descriptors, + pg_query__reassign_owned_stmt__field_indices_by_name, + 1, pg_query__reassign_owned_stmt__number_ranges, + (ProtobufCMessageInit) pg_query__reassign_owned_stmt__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor pg_query__composite_type_stmt__field_descriptors[2] = +{ + { + "typevar", + 1, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(PgQuery__CompositeTypeStmt, typevar), + &pg_query__range_var__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "coldeflist", + 2, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__CompositeTypeStmt, n_coldeflist), + offsetof(PgQuery__CompositeTypeStmt, coldeflist), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned pg_query__composite_type_stmt__field_indices_by_name[] = { + 1, /* field[1] = coldeflist */ + 0, /* field[0] = typevar */ +}; +static const ProtobufCIntRange pg_query__composite_type_stmt__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 2 } +}; +const ProtobufCMessageDescriptor pg_query__composite_type_stmt__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "pg_query.CompositeTypeStmt", + "CompositeTypeStmt", + "PgQuery__CompositeTypeStmt", + "pg_query", + sizeof(PgQuery__CompositeTypeStmt), + 2, + pg_query__composite_type_stmt__field_descriptors, + pg_query__composite_type_stmt__field_indices_by_name, + 1, pg_query__composite_type_stmt__number_ranges, + (ProtobufCMessageInit) pg_query__composite_type_stmt__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor pg_query__create_enum_stmt__field_descriptors[2] = +{ + { + "type_name", + 1, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__CreateEnumStmt, n_type_name), + offsetof(PgQuery__CreateEnumStmt, type_name), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "vals", + 2, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__CreateEnumStmt, n_vals), + offsetof(PgQuery__CreateEnumStmt, vals), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned pg_query__create_enum_stmt__field_indices_by_name[] = { + 0, /* field[0] = type_name */ + 1, /* field[1] = vals */ +}; +static const ProtobufCIntRange pg_query__create_enum_stmt__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 2 } +}; +const ProtobufCMessageDescriptor pg_query__create_enum_stmt__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "pg_query.CreateEnumStmt", + "CreateEnumStmt", + "PgQuery__CreateEnumStmt", + "pg_query", + sizeof(PgQuery__CreateEnumStmt), + 2, + pg_query__create_enum_stmt__field_descriptors, + pg_query__create_enum_stmt__field_indices_by_name, + 1, pg_query__create_enum_stmt__number_ranges, + (ProtobufCMessageInit) pg_query__create_enum_stmt__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor pg_query__create_range_stmt__field_descriptors[2] = +{ + { + "type_name", + 1, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__CreateRangeStmt, n_type_name), + offsetof(PgQuery__CreateRangeStmt, type_name), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "params", + 2, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__CreateRangeStmt, n_params), + offsetof(PgQuery__CreateRangeStmt, params), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned pg_query__create_range_stmt__field_indices_by_name[] = { + 1, /* field[1] = params */ + 0, /* field[0] = type_name */ +}; +static const ProtobufCIntRange pg_query__create_range_stmt__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 2 } +}; +const ProtobufCMessageDescriptor pg_query__create_range_stmt__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "pg_query.CreateRangeStmt", + "CreateRangeStmt", + "PgQuery__CreateRangeStmt", + "pg_query", + sizeof(PgQuery__CreateRangeStmt), + 2, + pg_query__create_range_stmt__field_descriptors, + pg_query__create_range_stmt__field_indices_by_name, + 1, pg_query__create_range_stmt__number_ranges, + (ProtobufCMessageInit) pg_query__create_range_stmt__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor pg_query__alter_enum_stmt__field_descriptors[6] = +{ + { + "type_name", + 1, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__AlterEnumStmt, n_type_name), + offsetof(PgQuery__AlterEnumStmt, type_name), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "old_val", + 2, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_STRING, + 0, /* quantifier_offset */ + offsetof(PgQuery__AlterEnumStmt, old_val), + NULL, + &protobuf_c_empty_string, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "new_val", + 3, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_STRING, + 0, /* quantifier_offset */ + offsetof(PgQuery__AlterEnumStmt, new_val), + NULL, + &protobuf_c_empty_string, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "new_val_neighbor", + 4, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_STRING, + 0, /* quantifier_offset */ + offsetof(PgQuery__AlterEnumStmt, new_val_neighbor), + NULL, + &protobuf_c_empty_string, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "new_val_is_after", + 5, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_BOOL, + 0, /* quantifier_offset */ + offsetof(PgQuery__AlterEnumStmt, new_val_is_after), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "skip_if_new_val_exists", + 6, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_BOOL, + 0, /* quantifier_offset */ + offsetof(PgQuery__AlterEnumStmt, skip_if_new_val_exists), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned pg_query__alter_enum_stmt__field_indices_by_name[] = { + 2, /* field[2] = new_val */ + 4, /* field[4] = new_val_is_after */ + 3, /* field[3] = new_val_neighbor */ + 1, /* field[1] = old_val */ + 5, /* field[5] = skip_if_new_val_exists */ + 0, /* field[0] = type_name */ +}; +static const ProtobufCIntRange pg_query__alter_enum_stmt__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 6 } +}; +const ProtobufCMessageDescriptor pg_query__alter_enum_stmt__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "pg_query.AlterEnumStmt", + "AlterEnumStmt", + "PgQuery__AlterEnumStmt", + "pg_query", + sizeof(PgQuery__AlterEnumStmt), + 6, + pg_query__alter_enum_stmt__field_descriptors, + pg_query__alter_enum_stmt__field_indices_by_name, + 1, pg_query__alter_enum_stmt__number_ranges, + (ProtobufCMessageInit) pg_query__alter_enum_stmt__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor pg_query__alter_tsdictionary_stmt__field_descriptors[2] = +{ + { + "dictname", + 1, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__AlterTSDictionaryStmt, n_dictname), + offsetof(PgQuery__AlterTSDictionaryStmt, dictname), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "options", + 2, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__AlterTSDictionaryStmt, n_options), + offsetof(PgQuery__AlterTSDictionaryStmt, options), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned pg_query__alter_tsdictionary_stmt__field_indices_by_name[] = { + 0, /* field[0] = dictname */ + 1, /* field[1] = options */ +}; +static const ProtobufCIntRange pg_query__alter_tsdictionary_stmt__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 2 } +}; +const ProtobufCMessageDescriptor pg_query__alter_tsdictionary_stmt__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "pg_query.AlterTSDictionaryStmt", + "AlterTSDictionaryStmt", + "PgQuery__AlterTSDictionaryStmt", + "pg_query", + sizeof(PgQuery__AlterTSDictionaryStmt), + 2, + pg_query__alter_tsdictionary_stmt__field_descriptors, + pg_query__alter_tsdictionary_stmt__field_indices_by_name, + 1, pg_query__alter_tsdictionary_stmt__number_ranges, + (ProtobufCMessageInit) pg_query__alter_tsdictionary_stmt__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor pg_query__alter_tsconfiguration_stmt__field_descriptors[7] = +{ + { + "kind", + 1, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_ENUM, + 0, /* quantifier_offset */ + offsetof(PgQuery__AlterTSConfigurationStmt, kind), + &pg_query__alter_tsconfig_type__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "cfgname", + 2, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__AlterTSConfigurationStmt, n_cfgname), + offsetof(PgQuery__AlterTSConfigurationStmt, cfgname), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "tokentype", + 3, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__AlterTSConfigurationStmt, n_tokentype), + offsetof(PgQuery__AlterTSConfigurationStmt, tokentype), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "dicts", + 4, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__AlterTSConfigurationStmt, n_dicts), + offsetof(PgQuery__AlterTSConfigurationStmt, dicts), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "override", + 5, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_BOOL, + 0, /* quantifier_offset */ + offsetof(PgQuery__AlterTSConfigurationStmt, override), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "replace", + 6, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_BOOL, + 0, /* quantifier_offset */ + offsetof(PgQuery__AlterTSConfigurationStmt, replace), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "missing_ok", + 7, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_BOOL, + 0, /* quantifier_offset */ + offsetof(PgQuery__AlterTSConfigurationStmt, missing_ok), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned pg_query__alter_tsconfiguration_stmt__field_indices_by_name[] = { + 1, /* field[1] = cfgname */ + 3, /* field[3] = dicts */ + 0, /* field[0] = kind */ + 6, /* field[6] = missing_ok */ + 4, /* field[4] = override */ + 5, /* field[5] = replace */ + 2, /* field[2] = tokentype */ +}; +static const ProtobufCIntRange pg_query__alter_tsconfiguration_stmt__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 7 } +}; +const ProtobufCMessageDescriptor pg_query__alter_tsconfiguration_stmt__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "pg_query.AlterTSConfigurationStmt", + "AlterTSConfigurationStmt", + "PgQuery__AlterTSConfigurationStmt", + "pg_query", + sizeof(PgQuery__AlterTSConfigurationStmt), + 7, + pg_query__alter_tsconfiguration_stmt__field_descriptors, + pg_query__alter_tsconfiguration_stmt__field_indices_by_name, + 1, pg_query__alter_tsconfiguration_stmt__number_ranges, + (ProtobufCMessageInit) pg_query__alter_tsconfiguration_stmt__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor pg_query__create_fdw_stmt__field_descriptors[3] = +{ + { + "fdwname", + 1, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_STRING, + 0, /* quantifier_offset */ + offsetof(PgQuery__CreateFdwStmt, fdwname), + NULL, + &protobuf_c_empty_string, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "func_options", + 2, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__CreateFdwStmt, n_func_options), + offsetof(PgQuery__CreateFdwStmt, func_options), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "options", + 3, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__CreateFdwStmt, n_options), + offsetof(PgQuery__CreateFdwStmt, options), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned pg_query__create_fdw_stmt__field_indices_by_name[] = { + 0, /* field[0] = fdwname */ + 1, /* field[1] = func_options */ + 2, /* field[2] = options */ +}; +static const ProtobufCIntRange pg_query__create_fdw_stmt__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 3 } +}; +const ProtobufCMessageDescriptor pg_query__create_fdw_stmt__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "pg_query.CreateFdwStmt", + "CreateFdwStmt", + "PgQuery__CreateFdwStmt", + "pg_query", + sizeof(PgQuery__CreateFdwStmt), + 3, + pg_query__create_fdw_stmt__field_descriptors, + pg_query__create_fdw_stmt__field_indices_by_name, + 1, pg_query__create_fdw_stmt__number_ranges, + (ProtobufCMessageInit) pg_query__create_fdw_stmt__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor pg_query__alter_fdw_stmt__field_descriptors[3] = +{ + { + "fdwname", + 1, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_STRING, + 0, /* quantifier_offset */ + offsetof(PgQuery__AlterFdwStmt, fdwname), + NULL, + &protobuf_c_empty_string, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "func_options", + 2, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__AlterFdwStmt, n_func_options), + offsetof(PgQuery__AlterFdwStmt, func_options), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "options", + 3, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__AlterFdwStmt, n_options), + offsetof(PgQuery__AlterFdwStmt, options), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned pg_query__alter_fdw_stmt__field_indices_by_name[] = { + 0, /* field[0] = fdwname */ + 1, /* field[1] = func_options */ + 2, /* field[2] = options */ +}; +static const ProtobufCIntRange pg_query__alter_fdw_stmt__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 3 } +}; +const ProtobufCMessageDescriptor pg_query__alter_fdw_stmt__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "pg_query.AlterFdwStmt", + "AlterFdwStmt", + "PgQuery__AlterFdwStmt", + "pg_query", + sizeof(PgQuery__AlterFdwStmt), + 3, + pg_query__alter_fdw_stmt__field_descriptors, + pg_query__alter_fdw_stmt__field_indices_by_name, + 1, pg_query__alter_fdw_stmt__number_ranges, + (ProtobufCMessageInit) pg_query__alter_fdw_stmt__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor pg_query__create_foreign_server_stmt__field_descriptors[6] = +{ + { + "servername", + 1, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_STRING, + 0, /* quantifier_offset */ + offsetof(PgQuery__CreateForeignServerStmt, servername), + NULL, + &protobuf_c_empty_string, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "servertype", + 2, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_STRING, + 0, /* quantifier_offset */ + offsetof(PgQuery__CreateForeignServerStmt, servertype), + NULL, + &protobuf_c_empty_string, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "version", + 3, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_STRING, + 0, /* quantifier_offset */ + offsetof(PgQuery__CreateForeignServerStmt, version), + NULL, + &protobuf_c_empty_string, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "fdwname", + 4, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_STRING, + 0, /* quantifier_offset */ + offsetof(PgQuery__CreateForeignServerStmt, fdwname), + NULL, + &protobuf_c_empty_string, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "if_not_exists", + 5, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_BOOL, + 0, /* quantifier_offset */ + offsetof(PgQuery__CreateForeignServerStmt, if_not_exists), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "options", + 6, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__CreateForeignServerStmt, n_options), + offsetof(PgQuery__CreateForeignServerStmt, options), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned pg_query__create_foreign_server_stmt__field_indices_by_name[] = { + 3, /* field[3] = fdwname */ + 4, /* field[4] = if_not_exists */ + 5, /* field[5] = options */ + 0, /* field[0] = servername */ + 1, /* field[1] = servertype */ + 2, /* field[2] = version */ +}; +static const ProtobufCIntRange pg_query__create_foreign_server_stmt__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 6 } +}; +const ProtobufCMessageDescriptor pg_query__create_foreign_server_stmt__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "pg_query.CreateForeignServerStmt", + "CreateForeignServerStmt", + "PgQuery__CreateForeignServerStmt", + "pg_query", + sizeof(PgQuery__CreateForeignServerStmt), + 6, + pg_query__create_foreign_server_stmt__field_descriptors, + pg_query__create_foreign_server_stmt__field_indices_by_name, + 1, pg_query__create_foreign_server_stmt__number_ranges, + (ProtobufCMessageInit) pg_query__create_foreign_server_stmt__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor pg_query__alter_foreign_server_stmt__field_descriptors[4] = +{ + { + "servername", + 1, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_STRING, + 0, /* quantifier_offset */ + offsetof(PgQuery__AlterForeignServerStmt, servername), + NULL, + &protobuf_c_empty_string, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "version", + 2, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_STRING, + 0, /* quantifier_offset */ + offsetof(PgQuery__AlterForeignServerStmt, version), + NULL, + &protobuf_c_empty_string, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "options", + 3, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__AlterForeignServerStmt, n_options), + offsetof(PgQuery__AlterForeignServerStmt, options), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "has_version", + 4, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_BOOL, + 0, /* quantifier_offset */ + offsetof(PgQuery__AlterForeignServerStmt, has_version), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned pg_query__alter_foreign_server_stmt__field_indices_by_name[] = { + 3, /* field[3] = has_version */ + 2, /* field[2] = options */ + 0, /* field[0] = servername */ + 1, /* field[1] = version */ +}; +static const ProtobufCIntRange pg_query__alter_foreign_server_stmt__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 4 } +}; +const ProtobufCMessageDescriptor pg_query__alter_foreign_server_stmt__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "pg_query.AlterForeignServerStmt", + "AlterForeignServerStmt", + "PgQuery__AlterForeignServerStmt", + "pg_query", + sizeof(PgQuery__AlterForeignServerStmt), + 4, + pg_query__alter_foreign_server_stmt__field_descriptors, + pg_query__alter_foreign_server_stmt__field_indices_by_name, + 1, pg_query__alter_foreign_server_stmt__number_ranges, + (ProtobufCMessageInit) pg_query__alter_foreign_server_stmt__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor pg_query__create_user_mapping_stmt__field_descriptors[4] = +{ + { + "user", + 1, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(PgQuery__CreateUserMappingStmt, user), + &pg_query__role_spec__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "servername", + 2, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_STRING, + 0, /* quantifier_offset */ + offsetof(PgQuery__CreateUserMappingStmt, servername), + NULL, + &protobuf_c_empty_string, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "if_not_exists", + 3, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_BOOL, + 0, /* quantifier_offset */ + offsetof(PgQuery__CreateUserMappingStmt, if_not_exists), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "options", + 4, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__CreateUserMappingStmt, n_options), + offsetof(PgQuery__CreateUserMappingStmt, options), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned pg_query__create_user_mapping_stmt__field_indices_by_name[] = { + 2, /* field[2] = if_not_exists */ + 3, /* field[3] = options */ + 1, /* field[1] = servername */ + 0, /* field[0] = user */ +}; +static const ProtobufCIntRange pg_query__create_user_mapping_stmt__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 4 } +}; +const ProtobufCMessageDescriptor pg_query__create_user_mapping_stmt__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "pg_query.CreateUserMappingStmt", + "CreateUserMappingStmt", + "PgQuery__CreateUserMappingStmt", + "pg_query", + sizeof(PgQuery__CreateUserMappingStmt), + 4, + pg_query__create_user_mapping_stmt__field_descriptors, + pg_query__create_user_mapping_stmt__field_indices_by_name, + 1, pg_query__create_user_mapping_stmt__number_ranges, + (ProtobufCMessageInit) pg_query__create_user_mapping_stmt__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor pg_query__alter_user_mapping_stmt__field_descriptors[3] = +{ + { + "user", + 1, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(PgQuery__AlterUserMappingStmt, user), + &pg_query__role_spec__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "servername", + 2, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_STRING, + 0, /* quantifier_offset */ + offsetof(PgQuery__AlterUserMappingStmt, servername), + NULL, + &protobuf_c_empty_string, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "options", + 3, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__AlterUserMappingStmt, n_options), + offsetof(PgQuery__AlterUserMappingStmt, options), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned pg_query__alter_user_mapping_stmt__field_indices_by_name[] = { + 2, /* field[2] = options */ + 1, /* field[1] = servername */ + 0, /* field[0] = user */ +}; +static const ProtobufCIntRange pg_query__alter_user_mapping_stmt__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 3 } +}; +const ProtobufCMessageDescriptor pg_query__alter_user_mapping_stmt__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "pg_query.AlterUserMappingStmt", + "AlterUserMappingStmt", + "PgQuery__AlterUserMappingStmt", + "pg_query", + sizeof(PgQuery__AlterUserMappingStmt), + 3, + pg_query__alter_user_mapping_stmt__field_descriptors, + pg_query__alter_user_mapping_stmt__field_indices_by_name, + 1, pg_query__alter_user_mapping_stmt__number_ranges, + (ProtobufCMessageInit) pg_query__alter_user_mapping_stmt__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor pg_query__drop_user_mapping_stmt__field_descriptors[3] = +{ + { + "user", + 1, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(PgQuery__DropUserMappingStmt, user), + &pg_query__role_spec__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "servername", + 2, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_STRING, + 0, /* quantifier_offset */ + offsetof(PgQuery__DropUserMappingStmt, servername), + NULL, + &protobuf_c_empty_string, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "missing_ok", + 3, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_BOOL, + 0, /* quantifier_offset */ + offsetof(PgQuery__DropUserMappingStmt, missing_ok), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned pg_query__drop_user_mapping_stmt__field_indices_by_name[] = { + 2, /* field[2] = missing_ok */ + 1, /* field[1] = servername */ + 0, /* field[0] = user */ +}; +static const ProtobufCIntRange pg_query__drop_user_mapping_stmt__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 3 } +}; +const ProtobufCMessageDescriptor pg_query__drop_user_mapping_stmt__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "pg_query.DropUserMappingStmt", + "DropUserMappingStmt", + "PgQuery__DropUserMappingStmt", + "pg_query", + sizeof(PgQuery__DropUserMappingStmt), + 3, + pg_query__drop_user_mapping_stmt__field_descriptors, + pg_query__drop_user_mapping_stmt__field_indices_by_name, + 1, pg_query__drop_user_mapping_stmt__number_ranges, + (ProtobufCMessageInit) pg_query__drop_user_mapping_stmt__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor pg_query__alter_table_space_options_stmt__field_descriptors[3] = +{ + { + "tablespacename", + 1, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_STRING, + 0, /* quantifier_offset */ + offsetof(PgQuery__AlterTableSpaceOptionsStmt, tablespacename), + NULL, + &protobuf_c_empty_string, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "options", + 2, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__AlterTableSpaceOptionsStmt, n_options), + offsetof(PgQuery__AlterTableSpaceOptionsStmt, options), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "is_reset", + 3, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_BOOL, + 0, /* quantifier_offset */ + offsetof(PgQuery__AlterTableSpaceOptionsStmt, is_reset), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned pg_query__alter_table_space_options_stmt__field_indices_by_name[] = { + 2, /* field[2] = is_reset */ + 1, /* field[1] = options */ + 0, /* field[0] = tablespacename */ +}; +static const ProtobufCIntRange pg_query__alter_table_space_options_stmt__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 3 } +}; +const ProtobufCMessageDescriptor pg_query__alter_table_space_options_stmt__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "pg_query.AlterTableSpaceOptionsStmt", + "AlterTableSpaceOptionsStmt", + "PgQuery__AlterTableSpaceOptionsStmt", + "pg_query", + sizeof(PgQuery__AlterTableSpaceOptionsStmt), + 3, + pg_query__alter_table_space_options_stmt__field_descriptors, + pg_query__alter_table_space_options_stmt__field_indices_by_name, + 1, pg_query__alter_table_space_options_stmt__number_ranges, + (ProtobufCMessageInit) pg_query__alter_table_space_options_stmt__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor pg_query__alter_table_move_all_stmt__field_descriptors[5] = +{ + { + "orig_tablespacename", + 1, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_STRING, + 0, /* quantifier_offset */ + offsetof(PgQuery__AlterTableMoveAllStmt, orig_tablespacename), + NULL, + &protobuf_c_empty_string, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "objtype", + 2, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_ENUM, + 0, /* quantifier_offset */ + offsetof(PgQuery__AlterTableMoveAllStmt, objtype), + &pg_query__object_type__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "roles", + 3, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__AlterTableMoveAllStmt, n_roles), + offsetof(PgQuery__AlterTableMoveAllStmt, roles), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "new_tablespacename", + 4, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_STRING, + 0, /* quantifier_offset */ + offsetof(PgQuery__AlterTableMoveAllStmt, new_tablespacename), + NULL, + &protobuf_c_empty_string, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "nowait", + 5, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_BOOL, + 0, /* quantifier_offset */ + offsetof(PgQuery__AlterTableMoveAllStmt, nowait), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned pg_query__alter_table_move_all_stmt__field_indices_by_name[] = { + 3, /* field[3] = new_tablespacename */ + 4, /* field[4] = nowait */ + 1, /* field[1] = objtype */ + 0, /* field[0] = orig_tablespacename */ + 2, /* field[2] = roles */ +}; +static const ProtobufCIntRange pg_query__alter_table_move_all_stmt__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 5 } +}; +const ProtobufCMessageDescriptor pg_query__alter_table_move_all_stmt__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "pg_query.AlterTableMoveAllStmt", + "AlterTableMoveAllStmt", + "PgQuery__AlterTableMoveAllStmt", + "pg_query", + sizeof(PgQuery__AlterTableMoveAllStmt), + 5, + pg_query__alter_table_move_all_stmt__field_descriptors, + pg_query__alter_table_move_all_stmt__field_indices_by_name, + 1, pg_query__alter_table_move_all_stmt__number_ranges, + (ProtobufCMessageInit) pg_query__alter_table_move_all_stmt__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor pg_query__sec_label_stmt__field_descriptors[4] = +{ + { + "objtype", + 1, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_ENUM, + 0, /* quantifier_offset */ + offsetof(PgQuery__SecLabelStmt, objtype), + &pg_query__object_type__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "object", + 2, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(PgQuery__SecLabelStmt, object), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "provider", + 3, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_STRING, + 0, /* quantifier_offset */ + offsetof(PgQuery__SecLabelStmt, provider), + NULL, + &protobuf_c_empty_string, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "label", + 4, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_STRING, + 0, /* quantifier_offset */ + offsetof(PgQuery__SecLabelStmt, label), + NULL, + &protobuf_c_empty_string, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned pg_query__sec_label_stmt__field_indices_by_name[] = { + 3, /* field[3] = label */ + 1, /* field[1] = object */ + 0, /* field[0] = objtype */ + 2, /* field[2] = provider */ +}; +static const ProtobufCIntRange pg_query__sec_label_stmt__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 4 } +}; +const ProtobufCMessageDescriptor pg_query__sec_label_stmt__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "pg_query.SecLabelStmt", + "SecLabelStmt", + "PgQuery__SecLabelStmt", + "pg_query", + sizeof(PgQuery__SecLabelStmt), + 4, + pg_query__sec_label_stmt__field_descriptors, + pg_query__sec_label_stmt__field_indices_by_name, + 1, pg_query__sec_label_stmt__number_ranges, + (ProtobufCMessageInit) pg_query__sec_label_stmt__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor pg_query__create_foreign_table_stmt__field_descriptors[3] = +{ + { + "base_stmt", + 1, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(PgQuery__CreateForeignTableStmt, base_stmt), + &pg_query__create_stmt__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "servername", + 2, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_STRING, + 0, /* quantifier_offset */ + offsetof(PgQuery__CreateForeignTableStmt, servername), + NULL, + &protobuf_c_empty_string, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "options", + 3, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__CreateForeignTableStmt, n_options), + offsetof(PgQuery__CreateForeignTableStmt, options), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned pg_query__create_foreign_table_stmt__field_indices_by_name[] = { + 0, /* field[0] = base_stmt */ + 2, /* field[2] = options */ + 1, /* field[1] = servername */ +}; +static const ProtobufCIntRange pg_query__create_foreign_table_stmt__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 3 } +}; +const ProtobufCMessageDescriptor pg_query__create_foreign_table_stmt__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "pg_query.CreateForeignTableStmt", + "CreateForeignTableStmt", + "PgQuery__CreateForeignTableStmt", + "pg_query", + sizeof(PgQuery__CreateForeignTableStmt), + 3, + pg_query__create_foreign_table_stmt__field_descriptors, + pg_query__create_foreign_table_stmt__field_indices_by_name, + 1, pg_query__create_foreign_table_stmt__number_ranges, + (ProtobufCMessageInit) pg_query__create_foreign_table_stmt__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor pg_query__import_foreign_schema_stmt__field_descriptors[6] = +{ + { + "server_name", + 1, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_STRING, + 0, /* quantifier_offset */ + offsetof(PgQuery__ImportForeignSchemaStmt, server_name), + NULL, + &protobuf_c_empty_string, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "remote_schema", + 2, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_STRING, + 0, /* quantifier_offset */ + offsetof(PgQuery__ImportForeignSchemaStmt, remote_schema), + NULL, + &protobuf_c_empty_string, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "local_schema", + 3, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_STRING, + 0, /* quantifier_offset */ + offsetof(PgQuery__ImportForeignSchemaStmt, local_schema), + NULL, + &protobuf_c_empty_string, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "list_type", + 4, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_ENUM, + 0, /* quantifier_offset */ + offsetof(PgQuery__ImportForeignSchemaStmt, list_type), + &pg_query__import_foreign_schema_type__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "table_list", + 5, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__ImportForeignSchemaStmt, n_table_list), + offsetof(PgQuery__ImportForeignSchemaStmt, table_list), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "options", + 6, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__ImportForeignSchemaStmt, n_options), + offsetof(PgQuery__ImportForeignSchemaStmt, options), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned pg_query__import_foreign_schema_stmt__field_indices_by_name[] = { + 3, /* field[3] = list_type */ + 2, /* field[2] = local_schema */ + 5, /* field[5] = options */ + 1, /* field[1] = remote_schema */ + 0, /* field[0] = server_name */ + 4, /* field[4] = table_list */ +}; +static const ProtobufCIntRange pg_query__import_foreign_schema_stmt__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 6 } +}; +const ProtobufCMessageDescriptor pg_query__import_foreign_schema_stmt__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "pg_query.ImportForeignSchemaStmt", + "ImportForeignSchemaStmt", + "PgQuery__ImportForeignSchemaStmt", + "pg_query", + sizeof(PgQuery__ImportForeignSchemaStmt), + 6, + pg_query__import_foreign_schema_stmt__field_descriptors, + pg_query__import_foreign_schema_stmt__field_indices_by_name, + 1, pg_query__import_foreign_schema_stmt__number_ranges, + (ProtobufCMessageInit) pg_query__import_foreign_schema_stmt__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor pg_query__create_extension_stmt__field_descriptors[3] = +{ + { + "extname", + 1, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_STRING, + 0, /* quantifier_offset */ + offsetof(PgQuery__CreateExtensionStmt, extname), + NULL, + &protobuf_c_empty_string, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "if_not_exists", + 2, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_BOOL, + 0, /* quantifier_offset */ + offsetof(PgQuery__CreateExtensionStmt, if_not_exists), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "options", + 3, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__CreateExtensionStmt, n_options), + offsetof(PgQuery__CreateExtensionStmt, options), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned pg_query__create_extension_stmt__field_indices_by_name[] = { + 0, /* field[0] = extname */ + 1, /* field[1] = if_not_exists */ + 2, /* field[2] = options */ +}; +static const ProtobufCIntRange pg_query__create_extension_stmt__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 3 } +}; +const ProtobufCMessageDescriptor pg_query__create_extension_stmt__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "pg_query.CreateExtensionStmt", + "CreateExtensionStmt", + "PgQuery__CreateExtensionStmt", + "pg_query", + sizeof(PgQuery__CreateExtensionStmt), + 3, + pg_query__create_extension_stmt__field_descriptors, + pg_query__create_extension_stmt__field_indices_by_name, + 1, pg_query__create_extension_stmt__number_ranges, + (ProtobufCMessageInit) pg_query__create_extension_stmt__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor pg_query__alter_extension_stmt__field_descriptors[2] = +{ + { + "extname", + 1, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_STRING, + 0, /* quantifier_offset */ + offsetof(PgQuery__AlterExtensionStmt, extname), + NULL, + &protobuf_c_empty_string, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "options", + 2, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__AlterExtensionStmt, n_options), + offsetof(PgQuery__AlterExtensionStmt, options), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned pg_query__alter_extension_stmt__field_indices_by_name[] = { + 0, /* field[0] = extname */ + 1, /* field[1] = options */ +}; +static const ProtobufCIntRange pg_query__alter_extension_stmt__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 2 } +}; +const ProtobufCMessageDescriptor pg_query__alter_extension_stmt__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "pg_query.AlterExtensionStmt", + "AlterExtensionStmt", + "PgQuery__AlterExtensionStmt", + "pg_query", + sizeof(PgQuery__AlterExtensionStmt), + 2, + pg_query__alter_extension_stmt__field_descriptors, + pg_query__alter_extension_stmt__field_indices_by_name, + 1, pg_query__alter_extension_stmt__number_ranges, + (ProtobufCMessageInit) pg_query__alter_extension_stmt__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor pg_query__alter_extension_contents_stmt__field_descriptors[4] = +{ + { + "extname", + 1, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_STRING, + 0, /* quantifier_offset */ + offsetof(PgQuery__AlterExtensionContentsStmt, extname), + NULL, + &protobuf_c_empty_string, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "action", + 2, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(PgQuery__AlterExtensionContentsStmt, action), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "objtype", + 3, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_ENUM, + 0, /* quantifier_offset */ + offsetof(PgQuery__AlterExtensionContentsStmt, objtype), + &pg_query__object_type__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "object", + 4, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(PgQuery__AlterExtensionContentsStmt, object), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned pg_query__alter_extension_contents_stmt__field_indices_by_name[] = { + 1, /* field[1] = action */ + 0, /* field[0] = extname */ + 3, /* field[3] = object */ + 2, /* field[2] = objtype */ +}; +static const ProtobufCIntRange pg_query__alter_extension_contents_stmt__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 4 } +}; +const ProtobufCMessageDescriptor pg_query__alter_extension_contents_stmt__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "pg_query.AlterExtensionContentsStmt", + "AlterExtensionContentsStmt", + "PgQuery__AlterExtensionContentsStmt", + "pg_query", + sizeof(PgQuery__AlterExtensionContentsStmt), + 4, + pg_query__alter_extension_contents_stmt__field_descriptors, + pg_query__alter_extension_contents_stmt__field_indices_by_name, + 1, pg_query__alter_extension_contents_stmt__number_ranges, + (ProtobufCMessageInit) pg_query__alter_extension_contents_stmt__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor pg_query__create_event_trig_stmt__field_descriptors[4] = +{ + { + "trigname", + 1, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_STRING, + 0, /* quantifier_offset */ + offsetof(PgQuery__CreateEventTrigStmt, trigname), + NULL, + &protobuf_c_empty_string, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "eventname", + 2, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_STRING, + 0, /* quantifier_offset */ + offsetof(PgQuery__CreateEventTrigStmt, eventname), + NULL, + &protobuf_c_empty_string, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "whenclause", + 3, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__CreateEventTrigStmt, n_whenclause), + offsetof(PgQuery__CreateEventTrigStmt, whenclause), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "funcname", + 4, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__CreateEventTrigStmt, n_funcname), + offsetof(PgQuery__CreateEventTrigStmt, funcname), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned pg_query__create_event_trig_stmt__field_indices_by_name[] = { + 1, /* field[1] = eventname */ + 3, /* field[3] = funcname */ + 0, /* field[0] = trigname */ + 2, /* field[2] = whenclause */ +}; +static const ProtobufCIntRange pg_query__create_event_trig_stmt__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 4 } +}; +const ProtobufCMessageDescriptor pg_query__create_event_trig_stmt__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "pg_query.CreateEventTrigStmt", + "CreateEventTrigStmt", + "PgQuery__CreateEventTrigStmt", + "pg_query", + sizeof(PgQuery__CreateEventTrigStmt), + 4, + pg_query__create_event_trig_stmt__field_descriptors, + pg_query__create_event_trig_stmt__field_indices_by_name, + 1, pg_query__create_event_trig_stmt__number_ranges, + (ProtobufCMessageInit) pg_query__create_event_trig_stmt__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor pg_query__alter_event_trig_stmt__field_descriptors[2] = +{ + { + "trigname", + 1, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_STRING, + 0, /* quantifier_offset */ + offsetof(PgQuery__AlterEventTrigStmt, trigname), + NULL, + &protobuf_c_empty_string, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "tgenabled", + 2, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_STRING, + 0, /* quantifier_offset */ + offsetof(PgQuery__AlterEventTrigStmt, tgenabled), + NULL, + &protobuf_c_empty_string, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned pg_query__alter_event_trig_stmt__field_indices_by_name[] = { + 1, /* field[1] = tgenabled */ + 0, /* field[0] = trigname */ +}; +static const ProtobufCIntRange pg_query__alter_event_trig_stmt__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 2 } +}; +const ProtobufCMessageDescriptor pg_query__alter_event_trig_stmt__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "pg_query.AlterEventTrigStmt", + "AlterEventTrigStmt", + "PgQuery__AlterEventTrigStmt", + "pg_query", + sizeof(PgQuery__AlterEventTrigStmt), + 2, + pg_query__alter_event_trig_stmt__field_descriptors, + pg_query__alter_event_trig_stmt__field_indices_by_name, + 1, pg_query__alter_event_trig_stmt__number_ranges, + (ProtobufCMessageInit) pg_query__alter_event_trig_stmt__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor pg_query__refresh_mat_view_stmt__field_descriptors[3] = +{ + { + "concurrent", + 1, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_BOOL, + 0, /* quantifier_offset */ + offsetof(PgQuery__RefreshMatViewStmt, concurrent), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "skip_data", + 2, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_BOOL, + 0, /* quantifier_offset */ + offsetof(PgQuery__RefreshMatViewStmt, skip_data), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "relation", + 3, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(PgQuery__RefreshMatViewStmt, relation), + &pg_query__range_var__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned pg_query__refresh_mat_view_stmt__field_indices_by_name[] = { + 0, /* field[0] = concurrent */ + 2, /* field[2] = relation */ + 1, /* field[1] = skip_data */ +}; +static const ProtobufCIntRange pg_query__refresh_mat_view_stmt__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 3 } +}; +const ProtobufCMessageDescriptor pg_query__refresh_mat_view_stmt__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "pg_query.RefreshMatViewStmt", + "RefreshMatViewStmt", + "PgQuery__RefreshMatViewStmt", + "pg_query", + sizeof(PgQuery__RefreshMatViewStmt), + 3, + pg_query__refresh_mat_view_stmt__field_descriptors, + pg_query__refresh_mat_view_stmt__field_indices_by_name, + 1, pg_query__refresh_mat_view_stmt__number_ranges, + (ProtobufCMessageInit) pg_query__refresh_mat_view_stmt__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor pg_query__replica_identity_stmt__field_descriptors[2] = +{ + { + "identity_type", + 1, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_STRING, + 0, /* quantifier_offset */ + offsetof(PgQuery__ReplicaIdentityStmt, identity_type), + NULL, + &protobuf_c_empty_string, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "name", + 2, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_STRING, + 0, /* quantifier_offset */ + offsetof(PgQuery__ReplicaIdentityStmt, name), + NULL, + &protobuf_c_empty_string, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned pg_query__replica_identity_stmt__field_indices_by_name[] = { + 0, /* field[0] = identity_type */ + 1, /* field[1] = name */ +}; +static const ProtobufCIntRange pg_query__replica_identity_stmt__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 2 } +}; +const ProtobufCMessageDescriptor pg_query__replica_identity_stmt__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "pg_query.ReplicaIdentityStmt", + "ReplicaIdentityStmt", + "PgQuery__ReplicaIdentityStmt", + "pg_query", + sizeof(PgQuery__ReplicaIdentityStmt), + 2, + pg_query__replica_identity_stmt__field_descriptors, + pg_query__replica_identity_stmt__field_indices_by_name, + 1, pg_query__replica_identity_stmt__number_ranges, + (ProtobufCMessageInit) pg_query__replica_identity_stmt__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor pg_query__alter_system_stmt__field_descriptors[1] = +{ + { + "setstmt", + 1, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(PgQuery__AlterSystemStmt, setstmt), + &pg_query__variable_set_stmt__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned pg_query__alter_system_stmt__field_indices_by_name[] = { + 0, /* field[0] = setstmt */ +}; +static const ProtobufCIntRange pg_query__alter_system_stmt__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 1 } +}; +const ProtobufCMessageDescriptor pg_query__alter_system_stmt__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "pg_query.AlterSystemStmt", + "AlterSystemStmt", + "PgQuery__AlterSystemStmt", + "pg_query", + sizeof(PgQuery__AlterSystemStmt), + 1, + pg_query__alter_system_stmt__field_descriptors, + pg_query__alter_system_stmt__field_indices_by_name, + 1, pg_query__alter_system_stmt__number_ranges, + (ProtobufCMessageInit) pg_query__alter_system_stmt__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor pg_query__create_policy_stmt__field_descriptors[7] = +{ + { + "policy_name", + 1, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_STRING, + 0, /* quantifier_offset */ + offsetof(PgQuery__CreatePolicyStmt, policy_name), + NULL, + &protobuf_c_empty_string, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "table", + 2, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(PgQuery__CreatePolicyStmt, table), + &pg_query__range_var__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "cmd_name", + 3, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_STRING, + 0, /* quantifier_offset */ + offsetof(PgQuery__CreatePolicyStmt, cmd_name), + NULL, + &protobuf_c_empty_string, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "permissive", + 4, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_BOOL, + 0, /* quantifier_offset */ + offsetof(PgQuery__CreatePolicyStmt, permissive), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "roles", + 5, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__CreatePolicyStmt, n_roles), + offsetof(PgQuery__CreatePolicyStmt, roles), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "qual", + 6, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(PgQuery__CreatePolicyStmt, qual), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "with_check", + 7, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(PgQuery__CreatePolicyStmt, with_check), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned pg_query__create_policy_stmt__field_indices_by_name[] = { + 2, /* field[2] = cmd_name */ + 3, /* field[3] = permissive */ + 0, /* field[0] = policy_name */ + 5, /* field[5] = qual */ + 4, /* field[4] = roles */ + 1, /* field[1] = table */ + 6, /* field[6] = with_check */ +}; +static const ProtobufCIntRange pg_query__create_policy_stmt__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 7 } +}; +const ProtobufCMessageDescriptor pg_query__create_policy_stmt__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "pg_query.CreatePolicyStmt", + "CreatePolicyStmt", + "PgQuery__CreatePolicyStmt", + "pg_query", + sizeof(PgQuery__CreatePolicyStmt), + 7, + pg_query__create_policy_stmt__field_descriptors, + pg_query__create_policy_stmt__field_indices_by_name, + 1, pg_query__create_policy_stmt__number_ranges, + (ProtobufCMessageInit) pg_query__create_policy_stmt__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor pg_query__alter_policy_stmt__field_descriptors[5] = +{ + { + "policy_name", + 1, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_STRING, + 0, /* quantifier_offset */ + offsetof(PgQuery__AlterPolicyStmt, policy_name), + NULL, + &protobuf_c_empty_string, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "table", + 2, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(PgQuery__AlterPolicyStmt, table), + &pg_query__range_var__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "roles", + 3, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__AlterPolicyStmt, n_roles), + offsetof(PgQuery__AlterPolicyStmt, roles), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "qual", + 4, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(PgQuery__AlterPolicyStmt, qual), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "with_check", + 5, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(PgQuery__AlterPolicyStmt, with_check), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned pg_query__alter_policy_stmt__field_indices_by_name[] = { + 0, /* field[0] = policy_name */ + 3, /* field[3] = qual */ + 2, /* field[2] = roles */ + 1, /* field[1] = table */ + 4, /* field[4] = with_check */ +}; +static const ProtobufCIntRange pg_query__alter_policy_stmt__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 5 } +}; +const ProtobufCMessageDescriptor pg_query__alter_policy_stmt__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "pg_query.AlterPolicyStmt", + "AlterPolicyStmt", + "PgQuery__AlterPolicyStmt", + "pg_query", + sizeof(PgQuery__AlterPolicyStmt), + 5, + pg_query__alter_policy_stmt__field_descriptors, + pg_query__alter_policy_stmt__field_indices_by_name, + 1, pg_query__alter_policy_stmt__number_ranges, + (ProtobufCMessageInit) pg_query__alter_policy_stmt__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor pg_query__create_transform_stmt__field_descriptors[5] = +{ + { + "replace", + 1, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_BOOL, + 0, /* quantifier_offset */ + offsetof(PgQuery__CreateTransformStmt, replace), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "type_name", + 2, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(PgQuery__CreateTransformStmt, type_name), + &pg_query__type_name__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "lang", + 3, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_STRING, + 0, /* quantifier_offset */ + offsetof(PgQuery__CreateTransformStmt, lang), + NULL, + &protobuf_c_empty_string, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "fromsql", + 4, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(PgQuery__CreateTransformStmt, fromsql), + &pg_query__object_with_args__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "tosql", + 5, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(PgQuery__CreateTransformStmt, tosql), + &pg_query__object_with_args__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned pg_query__create_transform_stmt__field_indices_by_name[] = { + 3, /* field[3] = fromsql */ + 2, /* field[2] = lang */ + 0, /* field[0] = replace */ + 4, /* field[4] = tosql */ + 1, /* field[1] = type_name */ +}; +static const ProtobufCIntRange pg_query__create_transform_stmt__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 5 } +}; +const ProtobufCMessageDescriptor pg_query__create_transform_stmt__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "pg_query.CreateTransformStmt", + "CreateTransformStmt", + "PgQuery__CreateTransformStmt", + "pg_query", + sizeof(PgQuery__CreateTransformStmt), + 5, + pg_query__create_transform_stmt__field_descriptors, + pg_query__create_transform_stmt__field_indices_by_name, + 1, pg_query__create_transform_stmt__number_ranges, + (ProtobufCMessageInit) pg_query__create_transform_stmt__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor pg_query__create_am_stmt__field_descriptors[3] = +{ + { + "amname", + 1, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_STRING, + 0, /* quantifier_offset */ + offsetof(PgQuery__CreateAmStmt, amname), + NULL, + &protobuf_c_empty_string, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "handler_name", + 2, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__CreateAmStmt, n_handler_name), + offsetof(PgQuery__CreateAmStmt, handler_name), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "amtype", + 3, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_STRING, + 0, /* quantifier_offset */ + offsetof(PgQuery__CreateAmStmt, amtype), + NULL, + &protobuf_c_empty_string, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned pg_query__create_am_stmt__field_indices_by_name[] = { + 0, /* field[0] = amname */ + 2, /* field[2] = amtype */ + 1, /* field[1] = handler_name */ +}; +static const ProtobufCIntRange pg_query__create_am_stmt__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 3 } +}; +const ProtobufCMessageDescriptor pg_query__create_am_stmt__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "pg_query.CreateAmStmt", + "CreateAmStmt", + "PgQuery__CreateAmStmt", + "pg_query", + sizeof(PgQuery__CreateAmStmt), + 3, + pg_query__create_am_stmt__field_descriptors, + pg_query__create_am_stmt__field_indices_by_name, + 1, pg_query__create_am_stmt__number_ranges, + (ProtobufCMessageInit) pg_query__create_am_stmt__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor pg_query__create_publication_stmt__field_descriptors[4] = +{ + { + "pubname", + 1, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_STRING, + 0, /* quantifier_offset */ + offsetof(PgQuery__CreatePublicationStmt, pubname), + NULL, + &protobuf_c_empty_string, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "options", + 2, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__CreatePublicationStmt, n_options), + offsetof(PgQuery__CreatePublicationStmt, options), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "tables", + 3, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__CreatePublicationStmt, n_tables), + offsetof(PgQuery__CreatePublicationStmt, tables), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "for_all_tables", + 4, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_BOOL, + 0, /* quantifier_offset */ + offsetof(PgQuery__CreatePublicationStmt, for_all_tables), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned pg_query__create_publication_stmt__field_indices_by_name[] = { + 3, /* field[3] = for_all_tables */ + 1, /* field[1] = options */ + 0, /* field[0] = pubname */ + 2, /* field[2] = tables */ +}; +static const ProtobufCIntRange pg_query__create_publication_stmt__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 4 } +}; +const ProtobufCMessageDescriptor pg_query__create_publication_stmt__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "pg_query.CreatePublicationStmt", + "CreatePublicationStmt", + "PgQuery__CreatePublicationStmt", + "pg_query", + sizeof(PgQuery__CreatePublicationStmt), + 4, + pg_query__create_publication_stmt__field_descriptors, + pg_query__create_publication_stmt__field_indices_by_name, + 1, pg_query__create_publication_stmt__number_ranges, + (ProtobufCMessageInit) pg_query__create_publication_stmt__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor pg_query__alter_publication_stmt__field_descriptors[5] = +{ + { + "pubname", + 1, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_STRING, + 0, /* quantifier_offset */ + offsetof(PgQuery__AlterPublicationStmt, pubname), + NULL, + &protobuf_c_empty_string, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "options", + 2, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__AlterPublicationStmt, n_options), + offsetof(PgQuery__AlterPublicationStmt, options), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "tables", + 3, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__AlterPublicationStmt, n_tables), + offsetof(PgQuery__AlterPublicationStmt, tables), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "for_all_tables", + 4, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_BOOL, + 0, /* quantifier_offset */ + offsetof(PgQuery__AlterPublicationStmt, for_all_tables), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "table_action", + 5, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_ENUM, + 0, /* quantifier_offset */ + offsetof(PgQuery__AlterPublicationStmt, table_action), + &pg_query__def_elem_action__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned pg_query__alter_publication_stmt__field_indices_by_name[] = { + 3, /* field[3] = for_all_tables */ + 1, /* field[1] = options */ + 0, /* field[0] = pubname */ + 4, /* field[4] = table_action */ + 2, /* field[2] = tables */ +}; +static const ProtobufCIntRange pg_query__alter_publication_stmt__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 5 } +}; +const ProtobufCMessageDescriptor pg_query__alter_publication_stmt__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "pg_query.AlterPublicationStmt", + "AlterPublicationStmt", + "PgQuery__AlterPublicationStmt", + "pg_query", + sizeof(PgQuery__AlterPublicationStmt), + 5, + pg_query__alter_publication_stmt__field_descriptors, + pg_query__alter_publication_stmt__field_indices_by_name, + 1, pg_query__alter_publication_stmt__number_ranges, + (ProtobufCMessageInit) pg_query__alter_publication_stmt__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor pg_query__create_subscription_stmt__field_descriptors[4] = +{ + { + "subname", + 1, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_STRING, + 0, /* quantifier_offset */ + offsetof(PgQuery__CreateSubscriptionStmt, subname), + NULL, + &protobuf_c_empty_string, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "conninfo", + 2, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_STRING, + 0, /* quantifier_offset */ + offsetof(PgQuery__CreateSubscriptionStmt, conninfo), + NULL, + &protobuf_c_empty_string, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "publication", + 3, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__CreateSubscriptionStmt, n_publication), + offsetof(PgQuery__CreateSubscriptionStmt, publication), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "options", + 4, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__CreateSubscriptionStmt, n_options), + offsetof(PgQuery__CreateSubscriptionStmt, options), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned pg_query__create_subscription_stmt__field_indices_by_name[] = { + 1, /* field[1] = conninfo */ + 3, /* field[3] = options */ + 2, /* field[2] = publication */ + 0, /* field[0] = subname */ +}; +static const ProtobufCIntRange pg_query__create_subscription_stmt__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 4 } +}; +const ProtobufCMessageDescriptor pg_query__create_subscription_stmt__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "pg_query.CreateSubscriptionStmt", + "CreateSubscriptionStmt", + "PgQuery__CreateSubscriptionStmt", + "pg_query", + sizeof(PgQuery__CreateSubscriptionStmt), + 4, + pg_query__create_subscription_stmt__field_descriptors, + pg_query__create_subscription_stmt__field_indices_by_name, + 1, pg_query__create_subscription_stmt__number_ranges, + (ProtobufCMessageInit) pg_query__create_subscription_stmt__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor pg_query__alter_subscription_stmt__field_descriptors[5] = +{ + { + "kind", + 1, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_ENUM, + 0, /* quantifier_offset */ + offsetof(PgQuery__AlterSubscriptionStmt, kind), + &pg_query__alter_subscription_type__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "subname", + 2, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_STRING, + 0, /* quantifier_offset */ + offsetof(PgQuery__AlterSubscriptionStmt, subname), + NULL, + &protobuf_c_empty_string, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "conninfo", + 3, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_STRING, + 0, /* quantifier_offset */ + offsetof(PgQuery__AlterSubscriptionStmt, conninfo), + NULL, + &protobuf_c_empty_string, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "publication", + 4, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__AlterSubscriptionStmt, n_publication), + offsetof(PgQuery__AlterSubscriptionStmt, publication), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "options", + 5, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__AlterSubscriptionStmt, n_options), + offsetof(PgQuery__AlterSubscriptionStmt, options), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned pg_query__alter_subscription_stmt__field_indices_by_name[] = { + 2, /* field[2] = conninfo */ + 0, /* field[0] = kind */ + 4, /* field[4] = options */ + 3, /* field[3] = publication */ + 1, /* field[1] = subname */ +}; +static const ProtobufCIntRange pg_query__alter_subscription_stmt__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 5 } +}; +const ProtobufCMessageDescriptor pg_query__alter_subscription_stmt__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "pg_query.AlterSubscriptionStmt", + "AlterSubscriptionStmt", + "PgQuery__AlterSubscriptionStmt", + "pg_query", + sizeof(PgQuery__AlterSubscriptionStmt), + 5, + pg_query__alter_subscription_stmt__field_descriptors, + pg_query__alter_subscription_stmt__field_indices_by_name, + 1, pg_query__alter_subscription_stmt__number_ranges, + (ProtobufCMessageInit) pg_query__alter_subscription_stmt__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor pg_query__drop_subscription_stmt__field_descriptors[3] = +{ + { + "subname", + 1, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_STRING, + 0, /* quantifier_offset */ + offsetof(PgQuery__DropSubscriptionStmt, subname), + NULL, + &protobuf_c_empty_string, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "missing_ok", + 2, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_BOOL, + 0, /* quantifier_offset */ + offsetof(PgQuery__DropSubscriptionStmt, missing_ok), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "behavior", + 3, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_ENUM, + 0, /* quantifier_offset */ + offsetof(PgQuery__DropSubscriptionStmt, behavior), + &pg_query__drop_behavior__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned pg_query__drop_subscription_stmt__field_indices_by_name[] = { + 2, /* field[2] = behavior */ + 1, /* field[1] = missing_ok */ + 0, /* field[0] = subname */ +}; +static const ProtobufCIntRange pg_query__drop_subscription_stmt__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 3 } +}; +const ProtobufCMessageDescriptor pg_query__drop_subscription_stmt__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "pg_query.DropSubscriptionStmt", + "DropSubscriptionStmt", + "PgQuery__DropSubscriptionStmt", + "pg_query", + sizeof(PgQuery__DropSubscriptionStmt), + 3, + pg_query__drop_subscription_stmt__field_descriptors, + pg_query__drop_subscription_stmt__field_indices_by_name, + 1, pg_query__drop_subscription_stmt__number_ranges, + (ProtobufCMessageInit) pg_query__drop_subscription_stmt__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor pg_query__create_stats_stmt__field_descriptors[6] = +{ + { + "defnames", + 1, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__CreateStatsStmt, n_defnames), + offsetof(PgQuery__CreateStatsStmt, defnames), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "stat_types", + 2, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__CreateStatsStmt, n_stat_types), + offsetof(PgQuery__CreateStatsStmt, stat_types), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "exprs", + 3, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__CreateStatsStmt, n_exprs), + offsetof(PgQuery__CreateStatsStmt, exprs), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "relations", + 4, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__CreateStatsStmt, n_relations), + offsetof(PgQuery__CreateStatsStmt, relations), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "stxcomment", + 5, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_STRING, + 0, /* quantifier_offset */ + offsetof(PgQuery__CreateStatsStmt, stxcomment), + NULL, + &protobuf_c_empty_string, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "if_not_exists", + 6, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_BOOL, + 0, /* quantifier_offset */ + offsetof(PgQuery__CreateStatsStmt, if_not_exists), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned pg_query__create_stats_stmt__field_indices_by_name[] = { + 0, /* field[0] = defnames */ + 2, /* field[2] = exprs */ + 5, /* field[5] = if_not_exists */ + 3, /* field[3] = relations */ + 1, /* field[1] = stat_types */ + 4, /* field[4] = stxcomment */ +}; +static const ProtobufCIntRange pg_query__create_stats_stmt__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 6 } +}; +const ProtobufCMessageDescriptor pg_query__create_stats_stmt__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "pg_query.CreateStatsStmt", + "CreateStatsStmt", + "PgQuery__CreateStatsStmt", + "pg_query", + sizeof(PgQuery__CreateStatsStmt), + 6, + pg_query__create_stats_stmt__field_descriptors, + pg_query__create_stats_stmt__field_indices_by_name, + 1, pg_query__create_stats_stmt__number_ranges, + (ProtobufCMessageInit) pg_query__create_stats_stmt__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor pg_query__alter_collation_stmt__field_descriptors[1] = +{ + { + "collname", + 1, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__AlterCollationStmt, n_collname), + offsetof(PgQuery__AlterCollationStmt, collname), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned pg_query__alter_collation_stmt__field_indices_by_name[] = { + 0, /* field[0] = collname */ +}; +static const ProtobufCIntRange pg_query__alter_collation_stmt__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 1 } +}; +const ProtobufCMessageDescriptor pg_query__alter_collation_stmt__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "pg_query.AlterCollationStmt", + "AlterCollationStmt", + "PgQuery__AlterCollationStmt", + "pg_query", + sizeof(PgQuery__AlterCollationStmt), + 1, + pg_query__alter_collation_stmt__field_descriptors, + pg_query__alter_collation_stmt__field_indices_by_name, + 1, pg_query__alter_collation_stmt__number_ranges, + (ProtobufCMessageInit) pg_query__alter_collation_stmt__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor pg_query__call_stmt__field_descriptors[2] = +{ + { + "funccall", + 1, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(PgQuery__CallStmt, funccall), + &pg_query__func_call__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "funcexpr", + 2, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(PgQuery__CallStmt, funcexpr), + &pg_query__func_expr__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned pg_query__call_stmt__field_indices_by_name[] = { + 0, /* field[0] = funccall */ + 1, /* field[1] = funcexpr */ +}; +static const ProtobufCIntRange pg_query__call_stmt__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 2 } +}; +const ProtobufCMessageDescriptor pg_query__call_stmt__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "pg_query.CallStmt", + "CallStmt", + "PgQuery__CallStmt", + "pg_query", + sizeof(PgQuery__CallStmt), + 2, + pg_query__call_stmt__field_descriptors, + pg_query__call_stmt__field_indices_by_name, + 1, pg_query__call_stmt__number_ranges, + (ProtobufCMessageInit) pg_query__call_stmt__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor pg_query__alter_stats_stmt__field_descriptors[3] = +{ + { + "defnames", + 1, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__AlterStatsStmt, n_defnames), + offsetof(PgQuery__AlterStatsStmt, defnames), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "stxstattarget", + 2, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(PgQuery__AlterStatsStmt, stxstattarget), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "missing_ok", + 3, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_BOOL, + 0, /* quantifier_offset */ + offsetof(PgQuery__AlterStatsStmt, missing_ok), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned pg_query__alter_stats_stmt__field_indices_by_name[] = { + 0, /* field[0] = defnames */ + 2, /* field[2] = missing_ok */ + 1, /* field[1] = stxstattarget */ +}; +static const ProtobufCIntRange pg_query__alter_stats_stmt__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 3 } +}; +const ProtobufCMessageDescriptor pg_query__alter_stats_stmt__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "pg_query.AlterStatsStmt", + "AlterStatsStmt", + "PgQuery__AlterStatsStmt", + "pg_query", + sizeof(PgQuery__AlterStatsStmt), + 3, + pg_query__alter_stats_stmt__field_descriptors, + pg_query__alter_stats_stmt__field_indices_by_name, + 1, pg_query__alter_stats_stmt__number_ranges, + (ProtobufCMessageInit) pg_query__alter_stats_stmt__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor pg_query__a__expr__field_descriptors[5] = +{ + { + "kind", + 1, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_ENUM, + 0, /* quantifier_offset */ + offsetof(PgQuery__AExpr, kind), + &pg_query__a__expr__kind__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "name", + 2, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__AExpr, n_name), + offsetof(PgQuery__AExpr, name), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "lexpr", + 3, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(PgQuery__AExpr, lexpr), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "rexpr", + 4, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(PgQuery__AExpr, rexpr), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "location", + 5, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(PgQuery__AExpr, location), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned pg_query__a__expr__field_indices_by_name[] = { + 0, /* field[0] = kind */ + 2, /* field[2] = lexpr */ + 4, /* field[4] = location */ + 1, /* field[1] = name */ + 3, /* field[3] = rexpr */ +}; +static const ProtobufCIntRange pg_query__a__expr__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 5 } +}; +const ProtobufCMessageDescriptor pg_query__a__expr__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "pg_query.A_Expr", + "AExpr", + "PgQuery__AExpr", + "pg_query", + sizeof(PgQuery__AExpr), + 5, + pg_query__a__expr__field_descriptors, + pg_query__a__expr__field_indices_by_name, + 1, pg_query__a__expr__number_ranges, + (ProtobufCMessageInit) pg_query__a__expr__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor pg_query__column_ref__field_descriptors[2] = +{ + { + "fields", + 1, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__ColumnRef, n_fields), + offsetof(PgQuery__ColumnRef, fields), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "location", + 2, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(PgQuery__ColumnRef, location), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned pg_query__column_ref__field_indices_by_name[] = { + 0, /* field[0] = fields */ + 1, /* field[1] = location */ +}; +static const ProtobufCIntRange pg_query__column_ref__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 2 } +}; +const ProtobufCMessageDescriptor pg_query__column_ref__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "pg_query.ColumnRef", + "ColumnRef", + "PgQuery__ColumnRef", + "pg_query", + sizeof(PgQuery__ColumnRef), + 2, + pg_query__column_ref__field_descriptors, + pg_query__column_ref__field_indices_by_name, + 1, pg_query__column_ref__number_ranges, + (ProtobufCMessageInit) pg_query__column_ref__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor pg_query__param_ref__field_descriptors[2] = +{ + { + "number", + 1, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(PgQuery__ParamRef, number), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "location", + 2, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(PgQuery__ParamRef, location), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned pg_query__param_ref__field_indices_by_name[] = { + 1, /* field[1] = location */ + 0, /* field[0] = number */ +}; +static const ProtobufCIntRange pg_query__param_ref__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 2 } +}; +const ProtobufCMessageDescriptor pg_query__param_ref__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "pg_query.ParamRef", + "ParamRef", + "PgQuery__ParamRef", + "pg_query", + sizeof(PgQuery__ParamRef), + 2, + pg_query__param_ref__field_descriptors, + pg_query__param_ref__field_indices_by_name, + 1, pg_query__param_ref__number_ranges, + (ProtobufCMessageInit) pg_query__param_ref__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor pg_query__a__const__field_descriptors[2] = +{ + { + "val", + 1, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(PgQuery__AConst, val), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "location", + 2, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(PgQuery__AConst, location), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned pg_query__a__const__field_indices_by_name[] = { + 1, /* field[1] = location */ + 0, /* field[0] = val */ +}; +static const ProtobufCIntRange pg_query__a__const__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 2 } +}; +const ProtobufCMessageDescriptor pg_query__a__const__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "pg_query.A_Const", + "AConst", + "PgQuery__AConst", + "pg_query", + sizeof(PgQuery__AConst), + 2, + pg_query__a__const__field_descriptors, + pg_query__a__const__field_indices_by_name, + 1, pg_query__a__const__number_ranges, + (ProtobufCMessageInit) pg_query__a__const__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor pg_query__func_call__field_descriptors[10] = +{ + { + "funcname", + 1, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__FuncCall, n_funcname), + offsetof(PgQuery__FuncCall, funcname), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "args", + 2, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__FuncCall, n_args), + offsetof(PgQuery__FuncCall, args), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "agg_order", + 3, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__FuncCall, n_agg_order), + offsetof(PgQuery__FuncCall, agg_order), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "agg_filter", + 4, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(PgQuery__FuncCall, agg_filter), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "agg_within_group", + 5, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_BOOL, + 0, /* quantifier_offset */ + offsetof(PgQuery__FuncCall, agg_within_group), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "agg_star", + 6, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_BOOL, + 0, /* quantifier_offset */ + offsetof(PgQuery__FuncCall, agg_star), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "agg_distinct", + 7, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_BOOL, + 0, /* quantifier_offset */ + offsetof(PgQuery__FuncCall, agg_distinct), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "func_variadic", + 8, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_BOOL, + 0, /* quantifier_offset */ + offsetof(PgQuery__FuncCall, func_variadic), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "over", + 9, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(PgQuery__FuncCall, over), + &pg_query__window_def__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "location", + 10, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(PgQuery__FuncCall, location), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned pg_query__func_call__field_indices_by_name[] = { + 6, /* field[6] = agg_distinct */ + 3, /* field[3] = agg_filter */ + 2, /* field[2] = agg_order */ + 5, /* field[5] = agg_star */ + 4, /* field[4] = agg_within_group */ + 1, /* field[1] = args */ + 7, /* field[7] = func_variadic */ + 0, /* field[0] = funcname */ + 9, /* field[9] = location */ + 8, /* field[8] = over */ +}; +static const ProtobufCIntRange pg_query__func_call__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 10 } +}; +const ProtobufCMessageDescriptor pg_query__func_call__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "pg_query.FuncCall", + "FuncCall", + "PgQuery__FuncCall", + "pg_query", + sizeof(PgQuery__FuncCall), + 10, + pg_query__func_call__field_descriptors, + pg_query__func_call__field_indices_by_name, + 1, pg_query__func_call__number_ranges, + (ProtobufCMessageInit) pg_query__func_call__init, + NULL,NULL,NULL /* reserved[123] */ +}; +#define pg_query__a__star__field_descriptors NULL +#define pg_query__a__star__field_indices_by_name NULL +#define pg_query__a__star__number_ranges NULL +const ProtobufCMessageDescriptor pg_query__a__star__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "pg_query.A_Star", + "AStar", + "PgQuery__AStar", + "pg_query", + sizeof(PgQuery__AStar), + 0, + pg_query__a__star__field_descriptors, + pg_query__a__star__field_indices_by_name, + 0, pg_query__a__star__number_ranges, + (ProtobufCMessageInit) pg_query__a__star__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor pg_query__a__indices__field_descriptors[3] = +{ + { + "is_slice", + 1, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_BOOL, + 0, /* quantifier_offset */ + offsetof(PgQuery__AIndices, is_slice), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "lidx", + 2, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(PgQuery__AIndices, lidx), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "uidx", + 3, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(PgQuery__AIndices, uidx), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned pg_query__a__indices__field_indices_by_name[] = { + 0, /* field[0] = is_slice */ + 1, /* field[1] = lidx */ + 2, /* field[2] = uidx */ +}; +static const ProtobufCIntRange pg_query__a__indices__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 3 } +}; +const ProtobufCMessageDescriptor pg_query__a__indices__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "pg_query.A_Indices", + "AIndices", + "PgQuery__AIndices", + "pg_query", + sizeof(PgQuery__AIndices), + 3, + pg_query__a__indices__field_descriptors, + pg_query__a__indices__field_indices_by_name, + 1, pg_query__a__indices__number_ranges, + (ProtobufCMessageInit) pg_query__a__indices__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor pg_query__a__indirection__field_descriptors[2] = +{ + { + "arg", + 1, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(PgQuery__AIndirection, arg), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "indirection", + 2, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__AIndirection, n_indirection), + offsetof(PgQuery__AIndirection, indirection), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned pg_query__a__indirection__field_indices_by_name[] = { + 0, /* field[0] = arg */ + 1, /* field[1] = indirection */ +}; +static const ProtobufCIntRange pg_query__a__indirection__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 2 } +}; +const ProtobufCMessageDescriptor pg_query__a__indirection__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "pg_query.A_Indirection", + "AIndirection", + "PgQuery__AIndirection", + "pg_query", + sizeof(PgQuery__AIndirection), + 2, + pg_query__a__indirection__field_descriptors, + pg_query__a__indirection__field_indices_by_name, + 1, pg_query__a__indirection__number_ranges, + (ProtobufCMessageInit) pg_query__a__indirection__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor pg_query__a__array_expr__field_descriptors[2] = +{ + { + "elements", + 1, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__AArrayExpr, n_elements), + offsetof(PgQuery__AArrayExpr, elements), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "location", + 2, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(PgQuery__AArrayExpr, location), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned pg_query__a__array_expr__field_indices_by_name[] = { + 0, /* field[0] = elements */ + 1, /* field[1] = location */ +}; +static const ProtobufCIntRange pg_query__a__array_expr__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 2 } +}; +const ProtobufCMessageDescriptor pg_query__a__array_expr__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "pg_query.A_ArrayExpr", + "AArrayExpr", + "PgQuery__AArrayExpr", + "pg_query", + sizeof(PgQuery__AArrayExpr), + 2, + pg_query__a__array_expr__field_descriptors, + pg_query__a__array_expr__field_indices_by_name, + 1, pg_query__a__array_expr__number_ranges, + (ProtobufCMessageInit) pg_query__a__array_expr__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor pg_query__res_target__field_descriptors[4] = +{ + { + "name", + 1, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_STRING, + 0, /* quantifier_offset */ + offsetof(PgQuery__ResTarget, name), + NULL, + &protobuf_c_empty_string, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "indirection", + 2, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__ResTarget, n_indirection), + offsetof(PgQuery__ResTarget, indirection), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "val", + 3, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(PgQuery__ResTarget, val), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "location", + 4, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(PgQuery__ResTarget, location), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned pg_query__res_target__field_indices_by_name[] = { + 1, /* field[1] = indirection */ + 3, /* field[3] = location */ + 0, /* field[0] = name */ + 2, /* field[2] = val */ +}; +static const ProtobufCIntRange pg_query__res_target__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 4 } +}; +const ProtobufCMessageDescriptor pg_query__res_target__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "pg_query.ResTarget", + "ResTarget", + "PgQuery__ResTarget", + "pg_query", + sizeof(PgQuery__ResTarget), + 4, + pg_query__res_target__field_descriptors, + pg_query__res_target__field_indices_by_name, + 1, pg_query__res_target__number_ranges, + (ProtobufCMessageInit) pg_query__res_target__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor pg_query__multi_assign_ref__field_descriptors[3] = +{ + { + "source", + 1, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(PgQuery__MultiAssignRef, source), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "colno", + 2, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(PgQuery__MultiAssignRef, colno), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "ncolumns", + 3, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(PgQuery__MultiAssignRef, ncolumns), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned pg_query__multi_assign_ref__field_indices_by_name[] = { + 1, /* field[1] = colno */ + 2, /* field[2] = ncolumns */ + 0, /* field[0] = source */ +}; +static const ProtobufCIntRange pg_query__multi_assign_ref__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 3 } +}; +const ProtobufCMessageDescriptor pg_query__multi_assign_ref__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "pg_query.MultiAssignRef", + "MultiAssignRef", + "PgQuery__MultiAssignRef", + "pg_query", + sizeof(PgQuery__MultiAssignRef), + 3, + pg_query__multi_assign_ref__field_descriptors, + pg_query__multi_assign_ref__field_indices_by_name, + 1, pg_query__multi_assign_ref__number_ranges, + (ProtobufCMessageInit) pg_query__multi_assign_ref__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor pg_query__type_cast__field_descriptors[3] = +{ + { + "arg", + 1, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(PgQuery__TypeCast, arg), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "type_name", + 2, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(PgQuery__TypeCast, type_name), + &pg_query__type_name__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "location", + 3, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(PgQuery__TypeCast, location), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned pg_query__type_cast__field_indices_by_name[] = { + 0, /* field[0] = arg */ + 2, /* field[2] = location */ + 1, /* field[1] = type_name */ +}; +static const ProtobufCIntRange pg_query__type_cast__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 3 } +}; +const ProtobufCMessageDescriptor pg_query__type_cast__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "pg_query.TypeCast", + "TypeCast", + "PgQuery__TypeCast", + "pg_query", + sizeof(PgQuery__TypeCast), + 3, + pg_query__type_cast__field_descriptors, + pg_query__type_cast__field_indices_by_name, + 1, pg_query__type_cast__number_ranges, + (ProtobufCMessageInit) pg_query__type_cast__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor pg_query__collate_clause__field_descriptors[3] = +{ + { + "arg", + 1, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(PgQuery__CollateClause, arg), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "collname", + 2, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__CollateClause, n_collname), + offsetof(PgQuery__CollateClause, collname), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "location", + 3, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(PgQuery__CollateClause, location), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned pg_query__collate_clause__field_indices_by_name[] = { + 0, /* field[0] = arg */ + 1, /* field[1] = collname */ + 2, /* field[2] = location */ +}; +static const ProtobufCIntRange pg_query__collate_clause__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 3 } +}; +const ProtobufCMessageDescriptor pg_query__collate_clause__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "pg_query.CollateClause", + "CollateClause", + "PgQuery__CollateClause", + "pg_query", + sizeof(PgQuery__CollateClause), + 3, + pg_query__collate_clause__field_descriptors, + pg_query__collate_clause__field_indices_by_name, + 1, pg_query__collate_clause__number_ranges, + (ProtobufCMessageInit) pg_query__collate_clause__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor pg_query__sort_by__field_descriptors[5] = +{ + { + "node", + 1, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(PgQuery__SortBy, node), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "sortby_dir", + 2, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_ENUM, + 0, /* quantifier_offset */ + offsetof(PgQuery__SortBy, sortby_dir), + &pg_query__sort_by_dir__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "sortby_nulls", + 3, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_ENUM, + 0, /* quantifier_offset */ + offsetof(PgQuery__SortBy, sortby_nulls), + &pg_query__sort_by_nulls__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "use_op", + 4, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__SortBy, n_use_op), + offsetof(PgQuery__SortBy, use_op), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "location", + 5, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(PgQuery__SortBy, location), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned pg_query__sort_by__field_indices_by_name[] = { + 4, /* field[4] = location */ + 0, /* field[0] = node */ + 1, /* field[1] = sortby_dir */ + 2, /* field[2] = sortby_nulls */ + 3, /* field[3] = use_op */ +}; +static const ProtobufCIntRange pg_query__sort_by__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 5 } +}; +const ProtobufCMessageDescriptor pg_query__sort_by__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "pg_query.SortBy", + "SortBy", + "PgQuery__SortBy", + "pg_query", + sizeof(PgQuery__SortBy), + 5, + pg_query__sort_by__field_descriptors, + pg_query__sort_by__field_indices_by_name, + 1, pg_query__sort_by__number_ranges, + (ProtobufCMessageInit) pg_query__sort_by__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor pg_query__window_def__field_descriptors[8] = +{ + { + "name", + 1, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_STRING, + 0, /* quantifier_offset */ + offsetof(PgQuery__WindowDef, name), + NULL, + &protobuf_c_empty_string, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "refname", + 2, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_STRING, + 0, /* quantifier_offset */ + offsetof(PgQuery__WindowDef, refname), + NULL, + &protobuf_c_empty_string, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "partition_clause", + 3, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__WindowDef, n_partition_clause), + offsetof(PgQuery__WindowDef, partition_clause), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "order_clause", + 4, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__WindowDef, n_order_clause), + offsetof(PgQuery__WindowDef, order_clause), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "frame_options", + 5, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(PgQuery__WindowDef, frame_options), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "start_offset", + 6, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(PgQuery__WindowDef, start_offset), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "end_offset", + 7, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(PgQuery__WindowDef, end_offset), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "location", + 8, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(PgQuery__WindowDef, location), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned pg_query__window_def__field_indices_by_name[] = { + 6, /* field[6] = end_offset */ + 4, /* field[4] = frame_options */ + 7, /* field[7] = location */ + 0, /* field[0] = name */ + 3, /* field[3] = order_clause */ + 2, /* field[2] = partition_clause */ + 1, /* field[1] = refname */ + 5, /* field[5] = start_offset */ +}; +static const ProtobufCIntRange pg_query__window_def__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 8 } +}; +const ProtobufCMessageDescriptor pg_query__window_def__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "pg_query.WindowDef", + "WindowDef", + "PgQuery__WindowDef", + "pg_query", + sizeof(PgQuery__WindowDef), + 8, + pg_query__window_def__field_descriptors, + pg_query__window_def__field_indices_by_name, + 1, pg_query__window_def__number_ranges, + (ProtobufCMessageInit) pg_query__window_def__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor pg_query__range_subselect__field_descriptors[3] = +{ + { + "lateral", + 1, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_BOOL, + 0, /* quantifier_offset */ + offsetof(PgQuery__RangeSubselect, lateral), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "subquery", + 2, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(PgQuery__RangeSubselect, subquery), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "alias", + 3, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(PgQuery__RangeSubselect, alias), + &pg_query__alias__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned pg_query__range_subselect__field_indices_by_name[] = { + 2, /* field[2] = alias */ + 0, /* field[0] = lateral */ + 1, /* field[1] = subquery */ +}; +static const ProtobufCIntRange pg_query__range_subselect__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 3 } +}; +const ProtobufCMessageDescriptor pg_query__range_subselect__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "pg_query.RangeSubselect", + "RangeSubselect", + "PgQuery__RangeSubselect", + "pg_query", + sizeof(PgQuery__RangeSubselect), + 3, + pg_query__range_subselect__field_descriptors, + pg_query__range_subselect__field_indices_by_name, + 1, pg_query__range_subselect__number_ranges, + (ProtobufCMessageInit) pg_query__range_subselect__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor pg_query__range_function__field_descriptors[6] = +{ + { + "lateral", + 1, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_BOOL, + 0, /* quantifier_offset */ + offsetof(PgQuery__RangeFunction, lateral), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "ordinality", + 2, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_BOOL, + 0, /* quantifier_offset */ + offsetof(PgQuery__RangeFunction, ordinality), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "is_rowsfrom", + 3, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_BOOL, + 0, /* quantifier_offset */ + offsetof(PgQuery__RangeFunction, is_rowsfrom), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "functions", + 4, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__RangeFunction, n_functions), + offsetof(PgQuery__RangeFunction, functions), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "alias", + 5, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(PgQuery__RangeFunction, alias), + &pg_query__alias__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "coldeflist", + 6, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__RangeFunction, n_coldeflist), + offsetof(PgQuery__RangeFunction, coldeflist), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned pg_query__range_function__field_indices_by_name[] = { + 4, /* field[4] = alias */ + 5, /* field[5] = coldeflist */ + 3, /* field[3] = functions */ + 2, /* field[2] = is_rowsfrom */ + 0, /* field[0] = lateral */ + 1, /* field[1] = ordinality */ +}; +static const ProtobufCIntRange pg_query__range_function__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 6 } +}; +const ProtobufCMessageDescriptor pg_query__range_function__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "pg_query.RangeFunction", + "RangeFunction", + "PgQuery__RangeFunction", + "pg_query", + sizeof(PgQuery__RangeFunction), + 6, + pg_query__range_function__field_descriptors, + pg_query__range_function__field_indices_by_name, + 1, pg_query__range_function__number_ranges, + (ProtobufCMessageInit) pg_query__range_function__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor pg_query__range_table_sample__field_descriptors[5] = +{ + { + "relation", + 1, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(PgQuery__RangeTableSample, relation), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "method", + 2, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__RangeTableSample, n_method), + offsetof(PgQuery__RangeTableSample, method), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "args", + 3, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__RangeTableSample, n_args), + offsetof(PgQuery__RangeTableSample, args), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "repeatable", + 4, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(PgQuery__RangeTableSample, repeatable), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "location", + 5, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(PgQuery__RangeTableSample, location), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned pg_query__range_table_sample__field_indices_by_name[] = { + 2, /* field[2] = args */ + 4, /* field[4] = location */ + 1, /* field[1] = method */ + 0, /* field[0] = relation */ + 3, /* field[3] = repeatable */ +}; +static const ProtobufCIntRange pg_query__range_table_sample__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 5 } +}; +const ProtobufCMessageDescriptor pg_query__range_table_sample__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "pg_query.RangeTableSample", + "RangeTableSample", + "PgQuery__RangeTableSample", + "pg_query", + sizeof(PgQuery__RangeTableSample), + 5, + pg_query__range_table_sample__field_descriptors, + pg_query__range_table_sample__field_indices_by_name, + 1, pg_query__range_table_sample__number_ranges, + (ProtobufCMessageInit) pg_query__range_table_sample__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor pg_query__range_table_func__field_descriptors[7] = +{ + { + "lateral", + 1, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_BOOL, + 0, /* quantifier_offset */ + offsetof(PgQuery__RangeTableFunc, lateral), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "docexpr", + 2, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(PgQuery__RangeTableFunc, docexpr), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "rowexpr", + 3, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(PgQuery__RangeTableFunc, rowexpr), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "namespaces", + 4, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__RangeTableFunc, n_namespaces), + offsetof(PgQuery__RangeTableFunc, namespaces), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "columns", + 5, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__RangeTableFunc, n_columns), + offsetof(PgQuery__RangeTableFunc, columns), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "alias", + 6, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(PgQuery__RangeTableFunc, alias), + &pg_query__alias__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "location", + 7, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(PgQuery__RangeTableFunc, location), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned pg_query__range_table_func__field_indices_by_name[] = { + 5, /* field[5] = alias */ + 4, /* field[4] = columns */ + 1, /* field[1] = docexpr */ + 0, /* field[0] = lateral */ + 6, /* field[6] = location */ + 3, /* field[3] = namespaces */ + 2, /* field[2] = rowexpr */ +}; +static const ProtobufCIntRange pg_query__range_table_func__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 7 } +}; +const ProtobufCMessageDescriptor pg_query__range_table_func__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "pg_query.RangeTableFunc", + "RangeTableFunc", + "PgQuery__RangeTableFunc", + "pg_query", + sizeof(PgQuery__RangeTableFunc), + 7, + pg_query__range_table_func__field_descriptors, + pg_query__range_table_func__field_indices_by_name, + 1, pg_query__range_table_func__number_ranges, + (ProtobufCMessageInit) pg_query__range_table_func__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor pg_query__range_table_func_col__field_descriptors[7] = +{ + { + "colname", + 1, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_STRING, + 0, /* quantifier_offset */ + offsetof(PgQuery__RangeTableFuncCol, colname), + NULL, + &protobuf_c_empty_string, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "type_name", + 2, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(PgQuery__RangeTableFuncCol, type_name), + &pg_query__type_name__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "for_ordinality", + 3, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_BOOL, + 0, /* quantifier_offset */ + offsetof(PgQuery__RangeTableFuncCol, for_ordinality), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "is_not_null", + 4, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_BOOL, + 0, /* quantifier_offset */ + offsetof(PgQuery__RangeTableFuncCol, is_not_null), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "colexpr", + 5, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(PgQuery__RangeTableFuncCol, colexpr), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "coldefexpr", + 6, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(PgQuery__RangeTableFuncCol, coldefexpr), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "location", + 7, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(PgQuery__RangeTableFuncCol, location), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned pg_query__range_table_func_col__field_indices_by_name[] = { + 5, /* field[5] = coldefexpr */ + 4, /* field[4] = colexpr */ + 0, /* field[0] = colname */ + 2, /* field[2] = for_ordinality */ + 3, /* field[3] = is_not_null */ + 6, /* field[6] = location */ + 1, /* field[1] = type_name */ +}; +static const ProtobufCIntRange pg_query__range_table_func_col__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 7 } +}; +const ProtobufCMessageDescriptor pg_query__range_table_func_col__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "pg_query.RangeTableFuncCol", + "RangeTableFuncCol", + "PgQuery__RangeTableFuncCol", + "pg_query", + sizeof(PgQuery__RangeTableFuncCol), + 7, + pg_query__range_table_func_col__field_descriptors, + pg_query__range_table_func_col__field_indices_by_name, + 1, pg_query__range_table_func_col__number_ranges, + (ProtobufCMessageInit) pg_query__range_table_func_col__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor pg_query__type_name__field_descriptors[8] = +{ + { + "names", + 1, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__TypeName, n_names), + offsetof(PgQuery__TypeName, names), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "type_oid", + 2, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT32, + 0, /* quantifier_offset */ + offsetof(PgQuery__TypeName, type_oid), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "setof", + 3, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_BOOL, + 0, /* quantifier_offset */ + offsetof(PgQuery__TypeName, setof), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "pct_type", + 4, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_BOOL, + 0, /* quantifier_offset */ + offsetof(PgQuery__TypeName, pct_type), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "typmods", + 5, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__TypeName, n_typmods), + offsetof(PgQuery__TypeName, typmods), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "typemod", + 6, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(PgQuery__TypeName, typemod), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "array_bounds", + 7, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__TypeName, n_array_bounds), + offsetof(PgQuery__TypeName, array_bounds), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "location", + 8, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(PgQuery__TypeName, location), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned pg_query__type_name__field_indices_by_name[] = { + 6, /* field[6] = array_bounds */ + 7, /* field[7] = location */ + 0, /* field[0] = names */ + 3, /* field[3] = pct_type */ + 2, /* field[2] = setof */ + 1, /* field[1] = type_oid */ + 5, /* field[5] = typemod */ + 4, /* field[4] = typmods */ +}; +static const ProtobufCIntRange pg_query__type_name__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 8 } +}; +const ProtobufCMessageDescriptor pg_query__type_name__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "pg_query.TypeName", + "TypeName", + "PgQuery__TypeName", + "pg_query", + sizeof(PgQuery__TypeName), + 8, + pg_query__type_name__field_descriptors, + pg_query__type_name__field_indices_by_name, + 1, pg_query__type_name__number_ranges, + (ProtobufCMessageInit) pg_query__type_name__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor pg_query__column_def__field_descriptors[17] = +{ + { + "colname", + 1, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_STRING, + 0, /* quantifier_offset */ + offsetof(PgQuery__ColumnDef, colname), + NULL, + &protobuf_c_empty_string, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "type_name", + 2, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(PgQuery__ColumnDef, type_name), + &pg_query__type_name__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "inhcount", + 3, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(PgQuery__ColumnDef, inhcount), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "is_local", + 4, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_BOOL, + 0, /* quantifier_offset */ + offsetof(PgQuery__ColumnDef, is_local), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "is_not_null", + 5, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_BOOL, + 0, /* quantifier_offset */ + offsetof(PgQuery__ColumnDef, is_not_null), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "is_from_type", + 6, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_BOOL, + 0, /* quantifier_offset */ + offsetof(PgQuery__ColumnDef, is_from_type), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "storage", + 7, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_STRING, + 0, /* quantifier_offset */ + offsetof(PgQuery__ColumnDef, storage), + NULL, + &protobuf_c_empty_string, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "raw_default", + 8, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(PgQuery__ColumnDef, raw_default), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "cooked_default", + 9, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(PgQuery__ColumnDef, cooked_default), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "identity", + 10, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_STRING, + 0, /* quantifier_offset */ + offsetof(PgQuery__ColumnDef, identity), + NULL, + &protobuf_c_empty_string, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "identity_sequence", + 11, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(PgQuery__ColumnDef, identity_sequence), + &pg_query__range_var__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "generated", + 12, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_STRING, + 0, /* quantifier_offset */ + offsetof(PgQuery__ColumnDef, generated), + NULL, + &protobuf_c_empty_string, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "coll_clause", + 13, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(PgQuery__ColumnDef, coll_clause), + &pg_query__collate_clause__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "coll_oid", + 14, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT32, + 0, /* quantifier_offset */ + offsetof(PgQuery__ColumnDef, coll_oid), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "constraints", + 15, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__ColumnDef, n_constraints), + offsetof(PgQuery__ColumnDef, constraints), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "fdwoptions", + 16, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__ColumnDef, n_fdwoptions), + offsetof(PgQuery__ColumnDef, fdwoptions), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "location", + 17, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(PgQuery__ColumnDef, location), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned pg_query__column_def__field_indices_by_name[] = { + 12, /* field[12] = coll_clause */ + 13, /* field[13] = coll_oid */ + 0, /* field[0] = colname */ + 14, /* field[14] = constraints */ + 8, /* field[8] = cooked_default */ + 15, /* field[15] = fdwoptions */ + 11, /* field[11] = generated */ + 9, /* field[9] = identity */ + 10, /* field[10] = identity_sequence */ + 2, /* field[2] = inhcount */ + 5, /* field[5] = is_from_type */ + 3, /* field[3] = is_local */ + 4, /* field[4] = is_not_null */ + 16, /* field[16] = location */ + 7, /* field[7] = raw_default */ + 6, /* field[6] = storage */ + 1, /* field[1] = type_name */ +}; +static const ProtobufCIntRange pg_query__column_def__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 17 } +}; +const ProtobufCMessageDescriptor pg_query__column_def__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "pg_query.ColumnDef", + "ColumnDef", + "PgQuery__ColumnDef", + "pg_query", + sizeof(PgQuery__ColumnDef), + 17, + pg_query__column_def__field_descriptors, + pg_query__column_def__field_indices_by_name, + 1, pg_query__column_def__number_ranges, + (ProtobufCMessageInit) pg_query__column_def__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor pg_query__index_elem__field_descriptors[8] = +{ + { + "name", + 1, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_STRING, + 0, /* quantifier_offset */ + offsetof(PgQuery__IndexElem, name), + NULL, + &protobuf_c_empty_string, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "expr", + 2, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(PgQuery__IndexElem, expr), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "indexcolname", + 3, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_STRING, + 0, /* quantifier_offset */ + offsetof(PgQuery__IndexElem, indexcolname), + NULL, + &protobuf_c_empty_string, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "collation", + 4, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__IndexElem, n_collation), + offsetof(PgQuery__IndexElem, collation), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "opclass", + 5, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__IndexElem, n_opclass), + offsetof(PgQuery__IndexElem, opclass), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "opclassopts", + 6, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__IndexElem, n_opclassopts), + offsetof(PgQuery__IndexElem, opclassopts), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "ordering", + 7, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_ENUM, + 0, /* quantifier_offset */ + offsetof(PgQuery__IndexElem, ordering), + &pg_query__sort_by_dir__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "nulls_ordering", + 8, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_ENUM, + 0, /* quantifier_offset */ + offsetof(PgQuery__IndexElem, nulls_ordering), + &pg_query__sort_by_nulls__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned pg_query__index_elem__field_indices_by_name[] = { + 3, /* field[3] = collation */ + 1, /* field[1] = expr */ + 2, /* field[2] = indexcolname */ + 0, /* field[0] = name */ + 7, /* field[7] = nulls_ordering */ + 4, /* field[4] = opclass */ + 5, /* field[5] = opclassopts */ + 6, /* field[6] = ordering */ +}; +static const ProtobufCIntRange pg_query__index_elem__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 8 } +}; +const ProtobufCMessageDescriptor pg_query__index_elem__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "pg_query.IndexElem", + "IndexElem", + "PgQuery__IndexElem", + "pg_query", + sizeof(PgQuery__IndexElem), + 8, + pg_query__index_elem__field_descriptors, + pg_query__index_elem__field_indices_by_name, + 1, pg_query__index_elem__number_ranges, + (ProtobufCMessageInit) pg_query__index_elem__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor pg_query__constraint__field_descriptors[28] = +{ + { + "contype", + 1, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_ENUM, + 0, /* quantifier_offset */ + offsetof(PgQuery__Constraint, contype), + &pg_query__constr_type__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "conname", + 2, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_STRING, + 0, /* quantifier_offset */ + offsetof(PgQuery__Constraint, conname), + NULL, + &protobuf_c_empty_string, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "deferrable", + 3, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_BOOL, + 0, /* quantifier_offset */ + offsetof(PgQuery__Constraint, deferrable), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "initdeferred", + 4, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_BOOL, + 0, /* quantifier_offset */ + offsetof(PgQuery__Constraint, initdeferred), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "location", + 5, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(PgQuery__Constraint, location), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "is_no_inherit", + 6, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_BOOL, + 0, /* quantifier_offset */ + offsetof(PgQuery__Constraint, is_no_inherit), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "raw_expr", + 7, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(PgQuery__Constraint, raw_expr), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "cooked_expr", + 8, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_STRING, + 0, /* quantifier_offset */ + offsetof(PgQuery__Constraint, cooked_expr), + NULL, + &protobuf_c_empty_string, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "generated_when", + 9, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_STRING, + 0, /* quantifier_offset */ + offsetof(PgQuery__Constraint, generated_when), + NULL, + &protobuf_c_empty_string, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "keys", + 10, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__Constraint, n_keys), + offsetof(PgQuery__Constraint, keys), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "including", + 11, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__Constraint, n_including), + offsetof(PgQuery__Constraint, including), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "exclusions", + 12, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__Constraint, n_exclusions), + offsetof(PgQuery__Constraint, exclusions), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "options", + 13, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__Constraint, n_options), + offsetof(PgQuery__Constraint, options), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "indexname", + 14, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_STRING, + 0, /* quantifier_offset */ + offsetof(PgQuery__Constraint, indexname), + NULL, + &protobuf_c_empty_string, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "indexspace", + 15, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_STRING, + 0, /* quantifier_offset */ + offsetof(PgQuery__Constraint, indexspace), + NULL, + &protobuf_c_empty_string, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "reset_default_tblspc", + 16, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_BOOL, + 0, /* quantifier_offset */ + offsetof(PgQuery__Constraint, reset_default_tblspc), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "access_method", + 17, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_STRING, + 0, /* quantifier_offset */ + offsetof(PgQuery__Constraint, access_method), + NULL, + &protobuf_c_empty_string, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "where_clause", + 18, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(PgQuery__Constraint, where_clause), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "pktable", + 19, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(PgQuery__Constraint, pktable), + &pg_query__range_var__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "fk_attrs", + 20, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__Constraint, n_fk_attrs), + offsetof(PgQuery__Constraint, fk_attrs), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "pk_attrs", + 21, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__Constraint, n_pk_attrs), + offsetof(PgQuery__Constraint, pk_attrs), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "fk_matchtype", + 22, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_STRING, + 0, /* quantifier_offset */ + offsetof(PgQuery__Constraint, fk_matchtype), + NULL, + &protobuf_c_empty_string, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "fk_upd_action", + 23, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_STRING, + 0, /* quantifier_offset */ + offsetof(PgQuery__Constraint, fk_upd_action), + NULL, + &protobuf_c_empty_string, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "fk_del_action", + 24, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_STRING, + 0, /* quantifier_offset */ + offsetof(PgQuery__Constraint, fk_del_action), + NULL, + &protobuf_c_empty_string, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "old_conpfeqop", + 25, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__Constraint, n_old_conpfeqop), + offsetof(PgQuery__Constraint, old_conpfeqop), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "old_pktable_oid", + 26, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT32, + 0, /* quantifier_offset */ + offsetof(PgQuery__Constraint, old_pktable_oid), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "skip_validation", + 27, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_BOOL, + 0, /* quantifier_offset */ + offsetof(PgQuery__Constraint, skip_validation), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "initially_valid", + 28, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_BOOL, + 0, /* quantifier_offset */ + offsetof(PgQuery__Constraint, initially_valid), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned pg_query__constraint__field_indices_by_name[] = { + 16, /* field[16] = access_method */ + 1, /* field[1] = conname */ + 0, /* field[0] = contype */ + 7, /* field[7] = cooked_expr */ + 2, /* field[2] = deferrable */ + 11, /* field[11] = exclusions */ + 19, /* field[19] = fk_attrs */ + 23, /* field[23] = fk_del_action */ + 21, /* field[21] = fk_matchtype */ + 22, /* field[22] = fk_upd_action */ + 8, /* field[8] = generated_when */ + 10, /* field[10] = including */ + 13, /* field[13] = indexname */ + 14, /* field[14] = indexspace */ + 3, /* field[3] = initdeferred */ + 27, /* field[27] = initially_valid */ + 5, /* field[5] = is_no_inherit */ + 9, /* field[9] = keys */ + 4, /* field[4] = location */ + 24, /* field[24] = old_conpfeqop */ + 25, /* field[25] = old_pktable_oid */ + 12, /* field[12] = options */ + 20, /* field[20] = pk_attrs */ + 18, /* field[18] = pktable */ + 6, /* field[6] = raw_expr */ + 15, /* field[15] = reset_default_tblspc */ + 26, /* field[26] = skip_validation */ + 17, /* field[17] = where_clause */ +}; +static const ProtobufCIntRange pg_query__constraint__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 28 } +}; +const ProtobufCMessageDescriptor pg_query__constraint__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "pg_query.Constraint", + "Constraint", + "PgQuery__Constraint", + "pg_query", + sizeof(PgQuery__Constraint), + 28, + pg_query__constraint__field_descriptors, + pg_query__constraint__field_indices_by_name, + 1, pg_query__constraint__number_ranges, + (ProtobufCMessageInit) pg_query__constraint__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor pg_query__def_elem__field_descriptors[5] = +{ + { + "defnamespace", + 1, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_STRING, + 0, /* quantifier_offset */ + offsetof(PgQuery__DefElem, defnamespace), + NULL, + &protobuf_c_empty_string, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "defname", + 2, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_STRING, + 0, /* quantifier_offset */ + offsetof(PgQuery__DefElem, defname), + NULL, + &protobuf_c_empty_string, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "arg", + 3, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(PgQuery__DefElem, arg), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "defaction", + 4, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_ENUM, + 0, /* quantifier_offset */ + offsetof(PgQuery__DefElem, defaction), + &pg_query__def_elem_action__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "location", + 5, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(PgQuery__DefElem, location), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned pg_query__def_elem__field_indices_by_name[] = { + 2, /* field[2] = arg */ + 3, /* field[3] = defaction */ + 1, /* field[1] = defname */ + 0, /* field[0] = defnamespace */ + 4, /* field[4] = location */ +}; +static const ProtobufCIntRange pg_query__def_elem__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 5 } +}; +const ProtobufCMessageDescriptor pg_query__def_elem__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "pg_query.DefElem", + "DefElem", + "PgQuery__DefElem", + "pg_query", + sizeof(PgQuery__DefElem), + 5, + pg_query__def_elem__field_descriptors, + pg_query__def_elem__field_indices_by_name, + 1, pg_query__def_elem__number_ranges, + (ProtobufCMessageInit) pg_query__def_elem__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor pg_query__range_tbl_entry__field_descriptors[36] = +{ + { + "rtekind", + 1, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_ENUM, + 0, /* quantifier_offset */ + offsetof(PgQuery__RangeTblEntry, rtekind), + &pg_query__rtekind__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "relid", + 2, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT32, + 0, /* quantifier_offset */ + offsetof(PgQuery__RangeTblEntry, relid), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "relkind", + 3, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_STRING, + 0, /* quantifier_offset */ + offsetof(PgQuery__RangeTblEntry, relkind), + NULL, + &protobuf_c_empty_string, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "rellockmode", + 4, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(PgQuery__RangeTblEntry, rellockmode), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "tablesample", + 5, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(PgQuery__RangeTblEntry, tablesample), + &pg_query__table_sample_clause__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "subquery", + 6, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(PgQuery__RangeTblEntry, subquery), + &pg_query__query__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "security_barrier", + 7, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_BOOL, + 0, /* quantifier_offset */ + offsetof(PgQuery__RangeTblEntry, security_barrier), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "jointype", + 8, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_ENUM, + 0, /* quantifier_offset */ + offsetof(PgQuery__RangeTblEntry, jointype), + &pg_query__join_type__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "joinmergedcols", + 9, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(PgQuery__RangeTblEntry, joinmergedcols), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "joinaliasvars", + 10, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__RangeTblEntry, n_joinaliasvars), + offsetof(PgQuery__RangeTblEntry, joinaliasvars), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "joinleftcols", + 11, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__RangeTblEntry, n_joinleftcols), + offsetof(PgQuery__RangeTblEntry, joinleftcols), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "joinrightcols", + 12, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__RangeTblEntry, n_joinrightcols), + offsetof(PgQuery__RangeTblEntry, joinrightcols), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "functions", + 13, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__RangeTblEntry, n_functions), + offsetof(PgQuery__RangeTblEntry, functions), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "funcordinality", + 14, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_BOOL, + 0, /* quantifier_offset */ + offsetof(PgQuery__RangeTblEntry, funcordinality), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "tablefunc", + 15, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(PgQuery__RangeTblEntry, tablefunc), + &pg_query__table_func__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "values_lists", + 16, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__RangeTblEntry, n_values_lists), + offsetof(PgQuery__RangeTblEntry, values_lists), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "ctename", + 17, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_STRING, + 0, /* quantifier_offset */ + offsetof(PgQuery__RangeTblEntry, ctename), + NULL, + &protobuf_c_empty_string, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "ctelevelsup", + 18, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT32, + 0, /* quantifier_offset */ + offsetof(PgQuery__RangeTblEntry, ctelevelsup), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "self_reference", + 19, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_BOOL, + 0, /* quantifier_offset */ + offsetof(PgQuery__RangeTblEntry, self_reference), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "coltypes", + 20, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__RangeTblEntry, n_coltypes), + offsetof(PgQuery__RangeTblEntry, coltypes), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "coltypmods", + 21, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__RangeTblEntry, n_coltypmods), + offsetof(PgQuery__RangeTblEntry, coltypmods), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "colcollations", + 22, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__RangeTblEntry, n_colcollations), + offsetof(PgQuery__RangeTblEntry, colcollations), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "enrname", + 23, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_STRING, + 0, /* quantifier_offset */ + offsetof(PgQuery__RangeTblEntry, enrname), + NULL, + &protobuf_c_empty_string, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "enrtuples", + 24, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_DOUBLE, + 0, /* quantifier_offset */ + offsetof(PgQuery__RangeTblEntry, enrtuples), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "alias", + 25, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(PgQuery__RangeTblEntry, alias), + &pg_query__alias__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "eref", + 26, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(PgQuery__RangeTblEntry, eref), + &pg_query__alias__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "lateral", + 27, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_BOOL, + 0, /* quantifier_offset */ + offsetof(PgQuery__RangeTblEntry, lateral), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "inh", + 28, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_BOOL, + 0, /* quantifier_offset */ + offsetof(PgQuery__RangeTblEntry, inh), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "in_from_cl", + 29, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_BOOL, + 0, /* quantifier_offset */ + offsetof(PgQuery__RangeTblEntry, in_from_cl), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "required_perms", + 30, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT32, + 0, /* quantifier_offset */ + offsetof(PgQuery__RangeTblEntry, required_perms), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "check_as_user", + 31, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT32, + 0, /* quantifier_offset */ + offsetof(PgQuery__RangeTblEntry, check_as_user), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "selected_cols", + 32, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_UINT64, + offsetof(PgQuery__RangeTblEntry, n_selected_cols), + offsetof(PgQuery__RangeTblEntry, selected_cols), + NULL, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_PACKED, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "inserted_cols", + 33, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_UINT64, + offsetof(PgQuery__RangeTblEntry, n_inserted_cols), + offsetof(PgQuery__RangeTblEntry, inserted_cols), + NULL, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_PACKED, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "updated_cols", + 34, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_UINT64, + offsetof(PgQuery__RangeTblEntry, n_updated_cols), + offsetof(PgQuery__RangeTblEntry, updated_cols), + NULL, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_PACKED, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "extra_updated_cols", + 35, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_UINT64, + offsetof(PgQuery__RangeTblEntry, n_extra_updated_cols), + offsetof(PgQuery__RangeTblEntry, extra_updated_cols), + NULL, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_PACKED, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "security_quals", + 36, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__RangeTblEntry, n_security_quals), + offsetof(PgQuery__RangeTblEntry, security_quals), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned pg_query__range_tbl_entry__field_indices_by_name[] = { + 24, /* field[24] = alias */ + 30, /* field[30] = check_as_user */ + 21, /* field[21] = colcollations */ + 19, /* field[19] = coltypes */ + 20, /* field[20] = coltypmods */ + 17, /* field[17] = ctelevelsup */ + 16, /* field[16] = ctename */ + 22, /* field[22] = enrname */ + 23, /* field[23] = enrtuples */ + 25, /* field[25] = eref */ + 34, /* field[34] = extra_updated_cols */ + 13, /* field[13] = funcordinality */ + 12, /* field[12] = functions */ + 28, /* field[28] = in_from_cl */ + 27, /* field[27] = inh */ + 32, /* field[32] = inserted_cols */ + 9, /* field[9] = joinaliasvars */ + 10, /* field[10] = joinleftcols */ + 8, /* field[8] = joinmergedcols */ + 11, /* field[11] = joinrightcols */ + 7, /* field[7] = jointype */ + 26, /* field[26] = lateral */ + 1, /* field[1] = relid */ + 2, /* field[2] = relkind */ + 3, /* field[3] = rellockmode */ + 29, /* field[29] = required_perms */ + 0, /* field[0] = rtekind */ + 6, /* field[6] = security_barrier */ + 35, /* field[35] = security_quals */ + 31, /* field[31] = selected_cols */ + 18, /* field[18] = self_reference */ + 5, /* field[5] = subquery */ + 14, /* field[14] = tablefunc */ + 4, /* field[4] = tablesample */ + 33, /* field[33] = updated_cols */ + 15, /* field[15] = values_lists */ +}; +static const ProtobufCIntRange pg_query__range_tbl_entry__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 36 } +}; +const ProtobufCMessageDescriptor pg_query__range_tbl_entry__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "pg_query.RangeTblEntry", + "RangeTblEntry", + "PgQuery__RangeTblEntry", + "pg_query", + sizeof(PgQuery__RangeTblEntry), + 36, + pg_query__range_tbl_entry__field_descriptors, + pg_query__range_tbl_entry__field_indices_by_name, + 1, pg_query__range_tbl_entry__number_ranges, + (ProtobufCMessageInit) pg_query__range_tbl_entry__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor pg_query__range_tbl_function__field_descriptors[7] = +{ + { + "funcexpr", + 1, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(PgQuery__RangeTblFunction, funcexpr), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "funccolcount", + 2, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(PgQuery__RangeTblFunction, funccolcount), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "funccolnames", + 3, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__RangeTblFunction, n_funccolnames), + offsetof(PgQuery__RangeTblFunction, funccolnames), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "funccoltypes", + 4, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__RangeTblFunction, n_funccoltypes), + offsetof(PgQuery__RangeTblFunction, funccoltypes), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "funccoltypmods", + 5, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__RangeTblFunction, n_funccoltypmods), + offsetof(PgQuery__RangeTblFunction, funccoltypmods), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "funccolcollations", + 6, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__RangeTblFunction, n_funccolcollations), + offsetof(PgQuery__RangeTblFunction, funccolcollations), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "funcparams", + 7, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_UINT64, + offsetof(PgQuery__RangeTblFunction, n_funcparams), + offsetof(PgQuery__RangeTblFunction, funcparams), + NULL, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_PACKED, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned pg_query__range_tbl_function__field_indices_by_name[] = { + 5, /* field[5] = funccolcollations */ + 1, /* field[1] = funccolcount */ + 2, /* field[2] = funccolnames */ + 3, /* field[3] = funccoltypes */ + 4, /* field[4] = funccoltypmods */ + 0, /* field[0] = funcexpr */ + 6, /* field[6] = funcparams */ +}; +static const ProtobufCIntRange pg_query__range_tbl_function__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 7 } +}; +const ProtobufCMessageDescriptor pg_query__range_tbl_function__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "pg_query.RangeTblFunction", + "RangeTblFunction", + "PgQuery__RangeTblFunction", + "pg_query", + sizeof(PgQuery__RangeTblFunction), + 7, + pg_query__range_tbl_function__field_descriptors, + pg_query__range_tbl_function__field_indices_by_name, + 1, pg_query__range_tbl_function__number_ranges, + (ProtobufCMessageInit) pg_query__range_tbl_function__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor pg_query__table_sample_clause__field_descriptors[3] = +{ + { + "tsmhandler", + 1, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT32, + 0, /* quantifier_offset */ + offsetof(PgQuery__TableSampleClause, tsmhandler), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "args", + 2, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__TableSampleClause, n_args), + offsetof(PgQuery__TableSampleClause, args), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "repeatable", + 3, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(PgQuery__TableSampleClause, repeatable), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned pg_query__table_sample_clause__field_indices_by_name[] = { + 1, /* field[1] = args */ + 2, /* field[2] = repeatable */ + 0, /* field[0] = tsmhandler */ +}; +static const ProtobufCIntRange pg_query__table_sample_clause__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 3 } +}; +const ProtobufCMessageDescriptor pg_query__table_sample_clause__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "pg_query.TableSampleClause", + "TableSampleClause", + "PgQuery__TableSampleClause", + "pg_query", + sizeof(PgQuery__TableSampleClause), + 3, + pg_query__table_sample_clause__field_descriptors, + pg_query__table_sample_clause__field_indices_by_name, + 1, pg_query__table_sample_clause__number_ranges, + (ProtobufCMessageInit) pg_query__table_sample_clause__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor pg_query__with_check_option__field_descriptors[5] = +{ + { + "kind", + 1, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_ENUM, + 0, /* quantifier_offset */ + offsetof(PgQuery__WithCheckOption, kind), + &pg_query__wcokind__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "relname", + 2, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_STRING, + 0, /* quantifier_offset */ + offsetof(PgQuery__WithCheckOption, relname), + NULL, + &protobuf_c_empty_string, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "polname", + 3, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_STRING, + 0, /* quantifier_offset */ + offsetof(PgQuery__WithCheckOption, polname), + NULL, + &protobuf_c_empty_string, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "qual", + 4, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(PgQuery__WithCheckOption, qual), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "cascaded", + 5, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_BOOL, + 0, /* quantifier_offset */ + offsetof(PgQuery__WithCheckOption, cascaded), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned pg_query__with_check_option__field_indices_by_name[] = { + 4, /* field[4] = cascaded */ + 0, /* field[0] = kind */ + 2, /* field[2] = polname */ + 3, /* field[3] = qual */ + 1, /* field[1] = relname */ +}; +static const ProtobufCIntRange pg_query__with_check_option__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 5 } +}; +const ProtobufCMessageDescriptor pg_query__with_check_option__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "pg_query.WithCheckOption", + "WithCheckOption", + "PgQuery__WithCheckOption", + "pg_query", + sizeof(PgQuery__WithCheckOption), + 5, + pg_query__with_check_option__field_descriptors, + pg_query__with_check_option__field_indices_by_name, + 1, pg_query__with_check_option__number_ranges, + (ProtobufCMessageInit) pg_query__with_check_option__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor pg_query__sort_group_clause__field_descriptors[5] = +{ + { + "tle_sort_group_ref", + 1, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT32, + 0, /* quantifier_offset */ + offsetof(PgQuery__SortGroupClause, tle_sort_group_ref), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "eqop", + 2, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT32, + 0, /* quantifier_offset */ + offsetof(PgQuery__SortGroupClause, eqop), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "sortop", + 3, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT32, + 0, /* quantifier_offset */ + offsetof(PgQuery__SortGroupClause, sortop), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "nulls_first", + 4, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_BOOL, + 0, /* quantifier_offset */ + offsetof(PgQuery__SortGroupClause, nulls_first), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "hashable", + 5, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_BOOL, + 0, /* quantifier_offset */ + offsetof(PgQuery__SortGroupClause, hashable), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned pg_query__sort_group_clause__field_indices_by_name[] = { + 1, /* field[1] = eqop */ + 4, /* field[4] = hashable */ + 3, /* field[3] = nulls_first */ + 2, /* field[2] = sortop */ + 0, /* field[0] = tle_sort_group_ref */ +}; +static const ProtobufCIntRange pg_query__sort_group_clause__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 5 } +}; +const ProtobufCMessageDescriptor pg_query__sort_group_clause__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "pg_query.SortGroupClause", + "SortGroupClause", + "PgQuery__SortGroupClause", + "pg_query", + sizeof(PgQuery__SortGroupClause), + 5, + pg_query__sort_group_clause__field_descriptors, + pg_query__sort_group_clause__field_indices_by_name, + 1, pg_query__sort_group_clause__number_ranges, + (ProtobufCMessageInit) pg_query__sort_group_clause__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor pg_query__grouping_set__field_descriptors[3] = +{ + { + "kind", + 1, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_ENUM, + 0, /* quantifier_offset */ + offsetof(PgQuery__GroupingSet, kind), + &pg_query__grouping_set_kind__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "content", + 2, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__GroupingSet, n_content), + offsetof(PgQuery__GroupingSet, content), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "location", + 3, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(PgQuery__GroupingSet, location), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned pg_query__grouping_set__field_indices_by_name[] = { + 1, /* field[1] = content */ + 0, /* field[0] = kind */ + 2, /* field[2] = location */ +}; +static const ProtobufCIntRange pg_query__grouping_set__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 3 } +}; +const ProtobufCMessageDescriptor pg_query__grouping_set__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "pg_query.GroupingSet", + "GroupingSet", + "PgQuery__GroupingSet", + "pg_query", + sizeof(PgQuery__GroupingSet), + 3, + pg_query__grouping_set__field_descriptors, + pg_query__grouping_set__field_indices_by_name, + 1, pg_query__grouping_set__number_ranges, + (ProtobufCMessageInit) pg_query__grouping_set__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor pg_query__window_clause__field_descriptors[14] = +{ + { + "name", + 1, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_STRING, + 0, /* quantifier_offset */ + offsetof(PgQuery__WindowClause, name), + NULL, + &protobuf_c_empty_string, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "refname", + 2, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_STRING, + 0, /* quantifier_offset */ + offsetof(PgQuery__WindowClause, refname), + NULL, + &protobuf_c_empty_string, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "partition_clause", + 3, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__WindowClause, n_partition_clause), + offsetof(PgQuery__WindowClause, partition_clause), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "order_clause", + 4, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__WindowClause, n_order_clause), + offsetof(PgQuery__WindowClause, order_clause), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "frame_options", + 5, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(PgQuery__WindowClause, frame_options), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "start_offset", + 6, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(PgQuery__WindowClause, start_offset), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "end_offset", + 7, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(PgQuery__WindowClause, end_offset), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "start_in_range_func", + 8, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT32, + 0, /* quantifier_offset */ + offsetof(PgQuery__WindowClause, start_in_range_func), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "end_in_range_func", + 9, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT32, + 0, /* quantifier_offset */ + offsetof(PgQuery__WindowClause, end_in_range_func), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "in_range_coll", + 10, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT32, + 0, /* quantifier_offset */ + offsetof(PgQuery__WindowClause, in_range_coll), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "in_range_asc", + 11, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_BOOL, + 0, /* quantifier_offset */ + offsetof(PgQuery__WindowClause, in_range_asc), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "in_range_nulls_first", + 12, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_BOOL, + 0, /* quantifier_offset */ + offsetof(PgQuery__WindowClause, in_range_nulls_first), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "winref", + 13, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT32, + 0, /* quantifier_offset */ + offsetof(PgQuery__WindowClause, winref), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "copied_order", + 14, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_BOOL, + 0, /* quantifier_offset */ + offsetof(PgQuery__WindowClause, copied_order), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned pg_query__window_clause__field_indices_by_name[] = { + 13, /* field[13] = copied_order */ + 8, /* field[8] = end_in_range_func */ + 6, /* field[6] = end_offset */ + 4, /* field[4] = frame_options */ + 10, /* field[10] = in_range_asc */ + 9, /* field[9] = in_range_coll */ + 11, /* field[11] = in_range_nulls_first */ + 0, /* field[0] = name */ + 3, /* field[3] = order_clause */ + 2, /* field[2] = partition_clause */ + 1, /* field[1] = refname */ + 7, /* field[7] = start_in_range_func */ + 5, /* field[5] = start_offset */ + 12, /* field[12] = winref */ +}; +static const ProtobufCIntRange pg_query__window_clause__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 14 } +}; +const ProtobufCMessageDescriptor pg_query__window_clause__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "pg_query.WindowClause", + "WindowClause", + "PgQuery__WindowClause", + "pg_query", + sizeof(PgQuery__WindowClause), + 14, + pg_query__window_clause__field_descriptors, + pg_query__window_clause__field_indices_by_name, + 1, pg_query__window_clause__number_ranges, + (ProtobufCMessageInit) pg_query__window_clause__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor pg_query__object_with_args__field_descriptors[3] = +{ + { + "objname", + 1, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__ObjectWithArgs, n_objname), + offsetof(PgQuery__ObjectWithArgs, objname), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "objargs", + 2, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__ObjectWithArgs, n_objargs), + offsetof(PgQuery__ObjectWithArgs, objargs), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "args_unspecified", + 3, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_BOOL, + 0, /* quantifier_offset */ + offsetof(PgQuery__ObjectWithArgs, args_unspecified), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned pg_query__object_with_args__field_indices_by_name[] = { + 2, /* field[2] = args_unspecified */ + 1, /* field[1] = objargs */ + 0, /* field[0] = objname */ +}; +static const ProtobufCIntRange pg_query__object_with_args__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 3 } +}; +const ProtobufCMessageDescriptor pg_query__object_with_args__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "pg_query.ObjectWithArgs", + "ObjectWithArgs", + "PgQuery__ObjectWithArgs", + "pg_query", + sizeof(PgQuery__ObjectWithArgs), + 3, + pg_query__object_with_args__field_descriptors, + pg_query__object_with_args__field_indices_by_name, + 1, pg_query__object_with_args__number_ranges, + (ProtobufCMessageInit) pg_query__object_with_args__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor pg_query__access_priv__field_descriptors[2] = +{ + { + "priv_name", + 1, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_STRING, + 0, /* quantifier_offset */ + offsetof(PgQuery__AccessPriv, priv_name), + NULL, + &protobuf_c_empty_string, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "cols", + 2, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__AccessPriv, n_cols), + offsetof(PgQuery__AccessPriv, cols), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned pg_query__access_priv__field_indices_by_name[] = { + 1, /* field[1] = cols */ + 0, /* field[0] = priv_name */ +}; +static const ProtobufCIntRange pg_query__access_priv__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 2 } +}; +const ProtobufCMessageDescriptor pg_query__access_priv__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "pg_query.AccessPriv", + "AccessPriv", + "PgQuery__AccessPriv", + "pg_query", + sizeof(PgQuery__AccessPriv), + 2, + pg_query__access_priv__field_descriptors, + pg_query__access_priv__field_indices_by_name, + 1, pg_query__access_priv__number_ranges, + (ProtobufCMessageInit) pg_query__access_priv__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor pg_query__create_op_class_item__field_descriptors[6] = +{ + { + "itemtype", + 1, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(PgQuery__CreateOpClassItem, itemtype), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "name", + 2, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(PgQuery__CreateOpClassItem, name), + &pg_query__object_with_args__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "number", + 3, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(PgQuery__CreateOpClassItem, number), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "order_family", + 4, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__CreateOpClassItem, n_order_family), + offsetof(PgQuery__CreateOpClassItem, order_family), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "class_args", + 5, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__CreateOpClassItem, n_class_args), + offsetof(PgQuery__CreateOpClassItem, class_args), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "storedtype", + 6, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(PgQuery__CreateOpClassItem, storedtype), + &pg_query__type_name__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned pg_query__create_op_class_item__field_indices_by_name[] = { + 4, /* field[4] = class_args */ + 0, /* field[0] = itemtype */ + 1, /* field[1] = name */ + 2, /* field[2] = number */ + 3, /* field[3] = order_family */ + 5, /* field[5] = storedtype */ +}; +static const ProtobufCIntRange pg_query__create_op_class_item__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 6 } +}; +const ProtobufCMessageDescriptor pg_query__create_op_class_item__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "pg_query.CreateOpClassItem", + "CreateOpClassItem", + "PgQuery__CreateOpClassItem", + "pg_query", + sizeof(PgQuery__CreateOpClassItem), + 6, + pg_query__create_op_class_item__field_descriptors, + pg_query__create_op_class_item__field_indices_by_name, + 1, pg_query__create_op_class_item__number_ranges, + (ProtobufCMessageInit) pg_query__create_op_class_item__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor pg_query__table_like_clause__field_descriptors[2] = +{ + { + "relation", + 1, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(PgQuery__TableLikeClause, relation), + &pg_query__range_var__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "options", + 2, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT32, + 0, /* quantifier_offset */ + offsetof(PgQuery__TableLikeClause, options), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned pg_query__table_like_clause__field_indices_by_name[] = { + 1, /* field[1] = options */ + 0, /* field[0] = relation */ +}; +static const ProtobufCIntRange pg_query__table_like_clause__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 2 } +}; +const ProtobufCMessageDescriptor pg_query__table_like_clause__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "pg_query.TableLikeClause", + "TableLikeClause", + "PgQuery__TableLikeClause", + "pg_query", + sizeof(PgQuery__TableLikeClause), + 2, + pg_query__table_like_clause__field_descriptors, + pg_query__table_like_clause__field_indices_by_name, + 1, pg_query__table_like_clause__number_ranges, + (ProtobufCMessageInit) pg_query__table_like_clause__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor pg_query__function_parameter__field_descriptors[4] = +{ + { + "name", + 1, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_STRING, + 0, /* quantifier_offset */ + offsetof(PgQuery__FunctionParameter, name), + NULL, + &protobuf_c_empty_string, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "arg_type", + 2, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(PgQuery__FunctionParameter, arg_type), + &pg_query__type_name__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "mode", + 3, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_ENUM, + 0, /* quantifier_offset */ + offsetof(PgQuery__FunctionParameter, mode), + &pg_query__function_parameter_mode__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "defexpr", + 4, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(PgQuery__FunctionParameter, defexpr), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned pg_query__function_parameter__field_indices_by_name[] = { + 1, /* field[1] = arg_type */ + 3, /* field[3] = defexpr */ + 2, /* field[2] = mode */ + 0, /* field[0] = name */ +}; +static const ProtobufCIntRange pg_query__function_parameter__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 4 } +}; +const ProtobufCMessageDescriptor pg_query__function_parameter__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "pg_query.FunctionParameter", + "FunctionParameter", + "PgQuery__FunctionParameter", + "pg_query", + sizeof(PgQuery__FunctionParameter), + 4, + pg_query__function_parameter__field_descriptors, + pg_query__function_parameter__field_indices_by_name, + 1, pg_query__function_parameter__number_ranges, + (ProtobufCMessageInit) pg_query__function_parameter__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor pg_query__locking_clause__field_descriptors[3] = +{ + { + "locked_rels", + 1, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__LockingClause, n_locked_rels), + offsetof(PgQuery__LockingClause, locked_rels), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "strength", + 2, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_ENUM, + 0, /* quantifier_offset */ + offsetof(PgQuery__LockingClause, strength), + &pg_query__lock_clause_strength__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "wait_policy", + 3, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_ENUM, + 0, /* quantifier_offset */ + offsetof(PgQuery__LockingClause, wait_policy), + &pg_query__lock_wait_policy__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned pg_query__locking_clause__field_indices_by_name[] = { + 0, /* field[0] = locked_rels */ + 1, /* field[1] = strength */ + 2, /* field[2] = wait_policy */ +}; +static const ProtobufCIntRange pg_query__locking_clause__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 3 } +}; +const ProtobufCMessageDescriptor pg_query__locking_clause__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "pg_query.LockingClause", + "LockingClause", + "PgQuery__LockingClause", + "pg_query", + sizeof(PgQuery__LockingClause), + 3, + pg_query__locking_clause__field_descriptors, + pg_query__locking_clause__field_indices_by_name, + 1, pg_query__locking_clause__number_ranges, + (ProtobufCMessageInit) pg_query__locking_clause__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor pg_query__row_mark_clause__field_descriptors[4] = +{ + { + "rti", + 1, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT32, + 0, /* quantifier_offset */ + offsetof(PgQuery__RowMarkClause, rti), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "strength", + 2, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_ENUM, + 0, /* quantifier_offset */ + offsetof(PgQuery__RowMarkClause, strength), + &pg_query__lock_clause_strength__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "wait_policy", + 3, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_ENUM, + 0, /* quantifier_offset */ + offsetof(PgQuery__RowMarkClause, wait_policy), + &pg_query__lock_wait_policy__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "pushed_down", + 4, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_BOOL, + 0, /* quantifier_offset */ + offsetof(PgQuery__RowMarkClause, pushed_down), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned pg_query__row_mark_clause__field_indices_by_name[] = { + 3, /* field[3] = pushed_down */ + 0, /* field[0] = rti */ + 1, /* field[1] = strength */ + 2, /* field[2] = wait_policy */ +}; +static const ProtobufCIntRange pg_query__row_mark_clause__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 4 } +}; +const ProtobufCMessageDescriptor pg_query__row_mark_clause__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "pg_query.RowMarkClause", + "RowMarkClause", + "PgQuery__RowMarkClause", + "pg_query", + sizeof(PgQuery__RowMarkClause), + 4, + pg_query__row_mark_clause__field_descriptors, + pg_query__row_mark_clause__field_indices_by_name, + 1, pg_query__row_mark_clause__number_ranges, + (ProtobufCMessageInit) pg_query__row_mark_clause__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor pg_query__xml_serialize__field_descriptors[4] = +{ + { + "xmloption", + 1, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_ENUM, + 0, /* quantifier_offset */ + offsetof(PgQuery__XmlSerialize, xmloption), + &pg_query__xml_option_type__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "expr", + 2, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(PgQuery__XmlSerialize, expr), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "type_name", + 3, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(PgQuery__XmlSerialize, type_name), + &pg_query__type_name__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "location", + 4, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(PgQuery__XmlSerialize, location), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned pg_query__xml_serialize__field_indices_by_name[] = { + 1, /* field[1] = expr */ + 3, /* field[3] = location */ + 2, /* field[2] = type_name */ + 0, /* field[0] = xmloption */ +}; +static const ProtobufCIntRange pg_query__xml_serialize__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 4 } +}; +const ProtobufCMessageDescriptor pg_query__xml_serialize__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "pg_query.XmlSerialize", + "XmlSerialize", + "PgQuery__XmlSerialize", + "pg_query", + sizeof(PgQuery__XmlSerialize), + 4, + pg_query__xml_serialize__field_descriptors, + pg_query__xml_serialize__field_indices_by_name, + 1, pg_query__xml_serialize__number_ranges, + (ProtobufCMessageInit) pg_query__xml_serialize__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor pg_query__with_clause__field_descriptors[3] = +{ + { + "ctes", + 1, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__WithClause, n_ctes), + offsetof(PgQuery__WithClause, ctes), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "recursive", + 2, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_BOOL, + 0, /* quantifier_offset */ + offsetof(PgQuery__WithClause, recursive), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "location", + 3, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(PgQuery__WithClause, location), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned pg_query__with_clause__field_indices_by_name[] = { + 0, /* field[0] = ctes */ + 2, /* field[2] = location */ + 1, /* field[1] = recursive */ +}; +static const ProtobufCIntRange pg_query__with_clause__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 3 } +}; +const ProtobufCMessageDescriptor pg_query__with_clause__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "pg_query.WithClause", + "WithClause", + "PgQuery__WithClause", + "pg_query", + sizeof(PgQuery__WithClause), + 3, + pg_query__with_clause__field_descriptors, + pg_query__with_clause__field_indices_by_name, + 1, pg_query__with_clause__number_ranges, + (ProtobufCMessageInit) pg_query__with_clause__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor pg_query__infer_clause__field_descriptors[4] = +{ + { + "index_elems", + 1, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__InferClause, n_index_elems), + offsetof(PgQuery__InferClause, index_elems), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "where_clause", + 2, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(PgQuery__InferClause, where_clause), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "conname", + 3, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_STRING, + 0, /* quantifier_offset */ + offsetof(PgQuery__InferClause, conname), + NULL, + &protobuf_c_empty_string, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "location", + 4, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(PgQuery__InferClause, location), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned pg_query__infer_clause__field_indices_by_name[] = { + 2, /* field[2] = conname */ + 0, /* field[0] = index_elems */ + 3, /* field[3] = location */ + 1, /* field[1] = where_clause */ +}; +static const ProtobufCIntRange pg_query__infer_clause__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 4 } +}; +const ProtobufCMessageDescriptor pg_query__infer_clause__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "pg_query.InferClause", + "InferClause", + "PgQuery__InferClause", + "pg_query", + sizeof(PgQuery__InferClause), + 4, + pg_query__infer_clause__field_descriptors, + pg_query__infer_clause__field_indices_by_name, + 1, pg_query__infer_clause__number_ranges, + (ProtobufCMessageInit) pg_query__infer_clause__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor pg_query__on_conflict_clause__field_descriptors[5] = +{ + { + "action", + 1, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_ENUM, + 0, /* quantifier_offset */ + offsetof(PgQuery__OnConflictClause, action), + &pg_query__on_conflict_action__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "infer", + 2, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(PgQuery__OnConflictClause, infer), + &pg_query__infer_clause__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "target_list", + 3, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__OnConflictClause, n_target_list), + offsetof(PgQuery__OnConflictClause, target_list), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "where_clause", + 4, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(PgQuery__OnConflictClause, where_clause), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "location", + 5, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(PgQuery__OnConflictClause, location), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned pg_query__on_conflict_clause__field_indices_by_name[] = { + 0, /* field[0] = action */ + 1, /* field[1] = infer */ + 4, /* field[4] = location */ + 2, /* field[2] = target_list */ + 3, /* field[3] = where_clause */ +}; +static const ProtobufCIntRange pg_query__on_conflict_clause__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 5 } +}; +const ProtobufCMessageDescriptor pg_query__on_conflict_clause__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "pg_query.OnConflictClause", + "OnConflictClause", + "PgQuery__OnConflictClause", + "pg_query", + sizeof(PgQuery__OnConflictClause), + 5, + pg_query__on_conflict_clause__field_descriptors, + pg_query__on_conflict_clause__field_indices_by_name, + 1, pg_query__on_conflict_clause__number_ranges, + (ProtobufCMessageInit) pg_query__on_conflict_clause__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor pg_query__common_table_expr__field_descriptors[11] = +{ + { + "ctename", + 1, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_STRING, + 0, /* quantifier_offset */ + offsetof(PgQuery__CommonTableExpr, ctename), + NULL, + &protobuf_c_empty_string, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "aliascolnames", + 2, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__CommonTableExpr, n_aliascolnames), + offsetof(PgQuery__CommonTableExpr, aliascolnames), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "ctematerialized", + 3, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_ENUM, + 0, /* quantifier_offset */ + offsetof(PgQuery__CommonTableExpr, ctematerialized), + &pg_query__ctematerialize__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "ctequery", + 4, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(PgQuery__CommonTableExpr, ctequery), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "location", + 5, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(PgQuery__CommonTableExpr, location), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "cterecursive", + 6, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_BOOL, + 0, /* quantifier_offset */ + offsetof(PgQuery__CommonTableExpr, cterecursive), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "cterefcount", + 7, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(PgQuery__CommonTableExpr, cterefcount), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "ctecolnames", + 8, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__CommonTableExpr, n_ctecolnames), + offsetof(PgQuery__CommonTableExpr, ctecolnames), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "ctecoltypes", + 9, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__CommonTableExpr, n_ctecoltypes), + offsetof(PgQuery__CommonTableExpr, ctecoltypes), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "ctecoltypmods", + 10, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__CommonTableExpr, n_ctecoltypmods), + offsetof(PgQuery__CommonTableExpr, ctecoltypmods), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "ctecolcollations", + 11, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__CommonTableExpr, n_ctecolcollations), + offsetof(PgQuery__CommonTableExpr, ctecolcollations), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned pg_query__common_table_expr__field_indices_by_name[] = { + 1, /* field[1] = aliascolnames */ + 10, /* field[10] = ctecolcollations */ + 7, /* field[7] = ctecolnames */ + 8, /* field[8] = ctecoltypes */ + 9, /* field[9] = ctecoltypmods */ + 2, /* field[2] = ctematerialized */ + 0, /* field[0] = ctename */ + 3, /* field[3] = ctequery */ + 5, /* field[5] = cterecursive */ + 6, /* field[6] = cterefcount */ + 4, /* field[4] = location */ +}; +static const ProtobufCIntRange pg_query__common_table_expr__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 11 } +}; +const ProtobufCMessageDescriptor pg_query__common_table_expr__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "pg_query.CommonTableExpr", + "CommonTableExpr", + "PgQuery__CommonTableExpr", + "pg_query", + sizeof(PgQuery__CommonTableExpr), + 11, + pg_query__common_table_expr__field_descriptors, + pg_query__common_table_expr__field_indices_by_name, + 1, pg_query__common_table_expr__number_ranges, + (ProtobufCMessageInit) pg_query__common_table_expr__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor pg_query__role_spec__field_descriptors[3] = +{ + { + "roletype", + 1, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_ENUM, + 0, /* quantifier_offset */ + offsetof(PgQuery__RoleSpec, roletype), + &pg_query__role_spec_type__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "rolename", + 2, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_STRING, + 0, /* quantifier_offset */ + offsetof(PgQuery__RoleSpec, rolename), + NULL, + &protobuf_c_empty_string, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "location", + 3, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(PgQuery__RoleSpec, location), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned pg_query__role_spec__field_indices_by_name[] = { + 2, /* field[2] = location */ + 1, /* field[1] = rolename */ + 0, /* field[0] = roletype */ +}; +static const ProtobufCIntRange pg_query__role_spec__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 3 } +}; +const ProtobufCMessageDescriptor pg_query__role_spec__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "pg_query.RoleSpec", + "RoleSpec", + "PgQuery__RoleSpec", + "pg_query", + sizeof(PgQuery__RoleSpec), + 3, + pg_query__role_spec__field_descriptors, + pg_query__role_spec__field_indices_by_name, + 1, pg_query__role_spec__number_ranges, + (ProtobufCMessageInit) pg_query__role_spec__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor pg_query__trigger_transition__field_descriptors[3] = +{ + { + "name", + 1, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_STRING, + 0, /* quantifier_offset */ + offsetof(PgQuery__TriggerTransition, name), + NULL, + &protobuf_c_empty_string, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "is_new", + 2, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_BOOL, + 0, /* quantifier_offset */ + offsetof(PgQuery__TriggerTransition, is_new), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "is_table", + 3, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_BOOL, + 0, /* quantifier_offset */ + offsetof(PgQuery__TriggerTransition, is_table), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned pg_query__trigger_transition__field_indices_by_name[] = { + 1, /* field[1] = is_new */ + 2, /* field[2] = is_table */ + 0, /* field[0] = name */ +}; +static const ProtobufCIntRange pg_query__trigger_transition__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 3 } +}; +const ProtobufCMessageDescriptor pg_query__trigger_transition__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "pg_query.TriggerTransition", + "TriggerTransition", + "PgQuery__TriggerTransition", + "pg_query", + sizeof(PgQuery__TriggerTransition), + 3, + pg_query__trigger_transition__field_descriptors, + pg_query__trigger_transition__field_indices_by_name, + 1, pg_query__trigger_transition__number_ranges, + (ProtobufCMessageInit) pg_query__trigger_transition__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor pg_query__partition_elem__field_descriptors[5] = +{ + { + "name", + 1, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_STRING, + 0, /* quantifier_offset */ + offsetof(PgQuery__PartitionElem, name), + NULL, + &protobuf_c_empty_string, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "expr", + 2, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(PgQuery__PartitionElem, expr), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "collation", + 3, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__PartitionElem, n_collation), + offsetof(PgQuery__PartitionElem, collation), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "opclass", + 4, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__PartitionElem, n_opclass), + offsetof(PgQuery__PartitionElem, opclass), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "location", + 5, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(PgQuery__PartitionElem, location), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned pg_query__partition_elem__field_indices_by_name[] = { + 2, /* field[2] = collation */ + 1, /* field[1] = expr */ + 4, /* field[4] = location */ + 0, /* field[0] = name */ + 3, /* field[3] = opclass */ +}; +static const ProtobufCIntRange pg_query__partition_elem__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 5 } +}; +const ProtobufCMessageDescriptor pg_query__partition_elem__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "pg_query.PartitionElem", + "PartitionElem", + "PgQuery__PartitionElem", + "pg_query", + sizeof(PgQuery__PartitionElem), + 5, + pg_query__partition_elem__field_descriptors, + pg_query__partition_elem__field_indices_by_name, + 1, pg_query__partition_elem__number_ranges, + (ProtobufCMessageInit) pg_query__partition_elem__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor pg_query__partition_spec__field_descriptors[3] = +{ + { + "strategy", + 1, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_STRING, + 0, /* quantifier_offset */ + offsetof(PgQuery__PartitionSpec, strategy), + NULL, + &protobuf_c_empty_string, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "part_params", + 2, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__PartitionSpec, n_part_params), + offsetof(PgQuery__PartitionSpec, part_params), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "location", + 3, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(PgQuery__PartitionSpec, location), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned pg_query__partition_spec__field_indices_by_name[] = { + 2, /* field[2] = location */ + 1, /* field[1] = part_params */ + 0, /* field[0] = strategy */ +}; +static const ProtobufCIntRange pg_query__partition_spec__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 3 } +}; +const ProtobufCMessageDescriptor pg_query__partition_spec__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "pg_query.PartitionSpec", + "PartitionSpec", + "PgQuery__PartitionSpec", + "pg_query", + sizeof(PgQuery__PartitionSpec), + 3, + pg_query__partition_spec__field_descriptors, + pg_query__partition_spec__field_indices_by_name, + 1, pg_query__partition_spec__number_ranges, + (ProtobufCMessageInit) pg_query__partition_spec__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor pg_query__partition_bound_spec__field_descriptors[8] = +{ + { + "strategy", + 1, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_STRING, + 0, /* quantifier_offset */ + offsetof(PgQuery__PartitionBoundSpec, strategy), + NULL, + &protobuf_c_empty_string, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "is_default", + 2, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_BOOL, + 0, /* quantifier_offset */ + offsetof(PgQuery__PartitionBoundSpec, is_default), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "modulus", + 3, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(PgQuery__PartitionBoundSpec, modulus), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "remainder", + 4, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(PgQuery__PartitionBoundSpec, remainder), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "listdatums", + 5, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__PartitionBoundSpec, n_listdatums), + offsetof(PgQuery__PartitionBoundSpec, listdatums), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "lowerdatums", + 6, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__PartitionBoundSpec, n_lowerdatums), + offsetof(PgQuery__PartitionBoundSpec, lowerdatums), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "upperdatums", + 7, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__PartitionBoundSpec, n_upperdatums), + offsetof(PgQuery__PartitionBoundSpec, upperdatums), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "location", + 8, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(PgQuery__PartitionBoundSpec, location), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned pg_query__partition_bound_spec__field_indices_by_name[] = { + 1, /* field[1] = is_default */ + 4, /* field[4] = listdatums */ + 7, /* field[7] = location */ + 5, /* field[5] = lowerdatums */ + 2, /* field[2] = modulus */ + 3, /* field[3] = remainder */ + 0, /* field[0] = strategy */ + 6, /* field[6] = upperdatums */ +}; +static const ProtobufCIntRange pg_query__partition_bound_spec__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 8 } +}; +const ProtobufCMessageDescriptor pg_query__partition_bound_spec__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "pg_query.PartitionBoundSpec", + "PartitionBoundSpec", + "PgQuery__PartitionBoundSpec", + "pg_query", + sizeof(PgQuery__PartitionBoundSpec), + 8, + pg_query__partition_bound_spec__field_descriptors, + pg_query__partition_bound_spec__field_indices_by_name, + 1, pg_query__partition_bound_spec__number_ranges, + (ProtobufCMessageInit) pg_query__partition_bound_spec__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor pg_query__partition_range_datum__field_descriptors[3] = +{ + { + "kind", + 1, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_ENUM, + 0, /* quantifier_offset */ + offsetof(PgQuery__PartitionRangeDatum, kind), + &pg_query__partition_range_datum_kind__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "value", + 2, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(PgQuery__PartitionRangeDatum, value), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "location", + 3, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(PgQuery__PartitionRangeDatum, location), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned pg_query__partition_range_datum__field_indices_by_name[] = { + 0, /* field[0] = kind */ + 2, /* field[2] = location */ + 1, /* field[1] = value */ +}; +static const ProtobufCIntRange pg_query__partition_range_datum__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 3 } +}; +const ProtobufCMessageDescriptor pg_query__partition_range_datum__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "pg_query.PartitionRangeDatum", + "PartitionRangeDatum", + "PgQuery__PartitionRangeDatum", + "pg_query", + sizeof(PgQuery__PartitionRangeDatum), + 3, + pg_query__partition_range_datum__field_descriptors, + pg_query__partition_range_datum__field_indices_by_name, + 1, pg_query__partition_range_datum__number_ranges, + (ProtobufCMessageInit) pg_query__partition_range_datum__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor pg_query__partition_cmd__field_descriptors[2] = +{ + { + "name", + 1, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(PgQuery__PartitionCmd, name), + &pg_query__range_var__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "bound", + 2, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(PgQuery__PartitionCmd, bound), + &pg_query__partition_bound_spec__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned pg_query__partition_cmd__field_indices_by_name[] = { + 1, /* field[1] = bound */ + 0, /* field[0] = name */ +}; +static const ProtobufCIntRange pg_query__partition_cmd__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 2 } +}; +const ProtobufCMessageDescriptor pg_query__partition_cmd__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "pg_query.PartitionCmd", + "PartitionCmd", + "PgQuery__PartitionCmd", + "pg_query", + sizeof(PgQuery__PartitionCmd), + 2, + pg_query__partition_cmd__field_descriptors, + pg_query__partition_cmd__field_indices_by_name, + 1, pg_query__partition_cmd__number_ranges, + (ProtobufCMessageInit) pg_query__partition_cmd__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor pg_query__vacuum_relation__field_descriptors[3] = +{ + { + "relation", + 1, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(PgQuery__VacuumRelation, relation), + &pg_query__range_var__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "oid", + 2, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT32, + 0, /* quantifier_offset */ + offsetof(PgQuery__VacuumRelation, oid), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "va_cols", + 3, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PgQuery__VacuumRelation, n_va_cols), + offsetof(PgQuery__VacuumRelation, va_cols), + &pg_query__node__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned pg_query__vacuum_relation__field_indices_by_name[] = { + 1, /* field[1] = oid */ + 0, /* field[0] = relation */ + 2, /* field[2] = va_cols */ +}; +static const ProtobufCIntRange pg_query__vacuum_relation__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 3 } +}; +const ProtobufCMessageDescriptor pg_query__vacuum_relation__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "pg_query.VacuumRelation", + "VacuumRelation", + "PgQuery__VacuumRelation", + "pg_query", + sizeof(PgQuery__VacuumRelation), + 3, + pg_query__vacuum_relation__field_descriptors, + pg_query__vacuum_relation__field_indices_by_name, + 1, pg_query__vacuum_relation__number_ranges, + (ProtobufCMessageInit) pg_query__vacuum_relation__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor pg_query__inline_code_block__field_descriptors[4] = +{ + { + "source_text", + 1, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_STRING, + 0, /* quantifier_offset */ + offsetof(PgQuery__InlineCodeBlock, source_text), + NULL, + &protobuf_c_empty_string, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "lang_oid", + 2, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT32, + 0, /* quantifier_offset */ + offsetof(PgQuery__InlineCodeBlock, lang_oid), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "lang_is_trusted", + 3, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_BOOL, + 0, /* quantifier_offset */ + offsetof(PgQuery__InlineCodeBlock, lang_is_trusted), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "atomic", + 4, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_BOOL, + 0, /* quantifier_offset */ + offsetof(PgQuery__InlineCodeBlock, atomic), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned pg_query__inline_code_block__field_indices_by_name[] = { + 3, /* field[3] = atomic */ + 2, /* field[2] = lang_is_trusted */ + 1, /* field[1] = lang_oid */ + 0, /* field[0] = source_text */ +}; +static const ProtobufCIntRange pg_query__inline_code_block__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 4 } +}; +const ProtobufCMessageDescriptor pg_query__inline_code_block__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "pg_query.InlineCodeBlock", + "InlineCodeBlock", + "PgQuery__InlineCodeBlock", + "pg_query", + sizeof(PgQuery__InlineCodeBlock), + 4, + pg_query__inline_code_block__field_descriptors, + pg_query__inline_code_block__field_indices_by_name, + 1, pg_query__inline_code_block__number_ranges, + (ProtobufCMessageInit) pg_query__inline_code_block__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor pg_query__call_context__field_descriptors[1] = +{ + { + "atomic", + 1, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_BOOL, + 0, /* quantifier_offset */ + offsetof(PgQuery__CallContext, atomic), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned pg_query__call_context__field_indices_by_name[] = { + 0, /* field[0] = atomic */ +}; +static const ProtobufCIntRange pg_query__call_context__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 1 } +}; +const ProtobufCMessageDescriptor pg_query__call_context__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "pg_query.CallContext", + "CallContext", + "PgQuery__CallContext", + "pg_query", + sizeof(PgQuery__CallContext), + 1, + pg_query__call_context__field_descriptors, + pg_query__call_context__field_indices_by_name, + 1, pg_query__call_context__number_ranges, + (ProtobufCMessageInit) pg_query__call_context__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor pg_query__scan_token__field_descriptors[4] = +{ + { + "start", + 1, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(PgQuery__ScanToken, start), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "end", + 2, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(PgQuery__ScanToken, end), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "token", + 4, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_ENUM, + 0, /* quantifier_offset */ + offsetof(PgQuery__ScanToken, token), + &pg_query__token__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "keyword_kind", + 5, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_ENUM, + 0, /* quantifier_offset */ + offsetof(PgQuery__ScanToken, keyword_kind), + &pg_query__keyword_kind__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned pg_query__scan_token__field_indices_by_name[] = { + 1, /* field[1] = end */ + 3, /* field[3] = keyword_kind */ + 0, /* field[0] = start */ + 2, /* field[2] = token */ +}; +static const ProtobufCIntRange pg_query__scan_token__number_ranges[2 + 1] = +{ + { 1, 0 }, + { 4, 2 }, + { 0, 4 } +}; +const ProtobufCMessageDescriptor pg_query__scan_token__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "pg_query.ScanToken", + "ScanToken", + "PgQuery__ScanToken", + "pg_query", + sizeof(PgQuery__ScanToken), + 4, + pg_query__scan_token__field_descriptors, + pg_query__scan_token__field_indices_by_name, + 2, pg_query__scan_token__number_ranges, + (ProtobufCMessageInit) pg_query__scan_token__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCEnumValue pg_query__overriding_kind__enum_values_by_number[4] = +{ + { "OVERRIDING_KIND_UNDEFINED", "PG_QUERY__OVERRIDING_KIND__OVERRIDING_KIND_UNDEFINED", 0 }, + { "OVERRIDING_NOT_SET", "PG_QUERY__OVERRIDING_KIND__OVERRIDING_NOT_SET", 1 }, + { "OVERRIDING_USER_VALUE", "PG_QUERY__OVERRIDING_KIND__OVERRIDING_USER_VALUE", 2 }, + { "OVERRIDING_SYSTEM_VALUE", "PG_QUERY__OVERRIDING_KIND__OVERRIDING_SYSTEM_VALUE", 3 }, +}; +static const ProtobufCIntRange pg_query__overriding_kind__value_ranges[] = { +{0, 0},{0, 4} +}; +static const ProtobufCEnumValueIndex pg_query__overriding_kind__enum_values_by_name[4] = +{ + { "OVERRIDING_KIND_UNDEFINED", 0 }, + { "OVERRIDING_NOT_SET", 1 }, + { "OVERRIDING_SYSTEM_VALUE", 3 }, + { "OVERRIDING_USER_VALUE", 2 }, +}; +const ProtobufCEnumDescriptor pg_query__overriding_kind__descriptor = +{ + PROTOBUF_C__ENUM_DESCRIPTOR_MAGIC, + "pg_query.OverridingKind", + "OverridingKind", + "PgQuery__OverridingKind", + "pg_query", + 4, + pg_query__overriding_kind__enum_values_by_number, + 4, + pg_query__overriding_kind__enum_values_by_name, + 1, + pg_query__overriding_kind__value_ranges, + NULL,NULL,NULL,NULL /* reserved[1234] */ +}; +static const ProtobufCEnumValue pg_query__query_source__enum_values_by_number[6] = +{ + { "QUERY_SOURCE_UNDEFINED", "PG_QUERY__QUERY_SOURCE__QUERY_SOURCE_UNDEFINED", 0 }, + { "QSRC_ORIGINAL", "PG_QUERY__QUERY_SOURCE__QSRC_ORIGINAL", 1 }, + { "QSRC_PARSER", "PG_QUERY__QUERY_SOURCE__QSRC_PARSER", 2 }, + { "QSRC_INSTEAD_RULE", "PG_QUERY__QUERY_SOURCE__QSRC_INSTEAD_RULE", 3 }, + { "QSRC_QUAL_INSTEAD_RULE", "PG_QUERY__QUERY_SOURCE__QSRC_QUAL_INSTEAD_RULE", 4 }, + { "QSRC_NON_INSTEAD_RULE", "PG_QUERY__QUERY_SOURCE__QSRC_NON_INSTEAD_RULE", 5 }, +}; +static const ProtobufCIntRange pg_query__query_source__value_ranges[] = { +{0, 0},{0, 6} +}; +static const ProtobufCEnumValueIndex pg_query__query_source__enum_values_by_name[6] = +{ + { "QSRC_INSTEAD_RULE", 3 }, + { "QSRC_NON_INSTEAD_RULE", 5 }, + { "QSRC_ORIGINAL", 1 }, + { "QSRC_PARSER", 2 }, + { "QSRC_QUAL_INSTEAD_RULE", 4 }, + { "QUERY_SOURCE_UNDEFINED", 0 }, +}; +const ProtobufCEnumDescriptor pg_query__query_source__descriptor = +{ + PROTOBUF_C__ENUM_DESCRIPTOR_MAGIC, + "pg_query.QuerySource", + "QuerySource", + "PgQuery__QuerySource", + "pg_query", + 6, + pg_query__query_source__enum_values_by_number, + 6, + pg_query__query_source__enum_values_by_name, + 1, + pg_query__query_source__value_ranges, + NULL,NULL,NULL,NULL /* reserved[1234] */ +}; +static const ProtobufCEnumValue pg_query__sort_by_dir__enum_values_by_number[5] = +{ + { "SORT_BY_DIR_UNDEFINED", "PG_QUERY__SORT_BY_DIR__SORT_BY_DIR_UNDEFINED", 0 }, + { "SORTBY_DEFAULT", "PG_QUERY__SORT_BY_DIR__SORTBY_DEFAULT", 1 }, + { "SORTBY_ASC", "PG_QUERY__SORT_BY_DIR__SORTBY_ASC", 2 }, + { "SORTBY_DESC", "PG_QUERY__SORT_BY_DIR__SORTBY_DESC", 3 }, + { "SORTBY_USING", "PG_QUERY__SORT_BY_DIR__SORTBY_USING", 4 }, +}; +static const ProtobufCIntRange pg_query__sort_by_dir__value_ranges[] = { +{0, 0},{0, 5} +}; +static const ProtobufCEnumValueIndex pg_query__sort_by_dir__enum_values_by_name[5] = +{ + { "SORTBY_ASC", 2 }, + { "SORTBY_DEFAULT", 1 }, + { "SORTBY_DESC", 3 }, + { "SORTBY_USING", 4 }, + { "SORT_BY_DIR_UNDEFINED", 0 }, +}; +const ProtobufCEnumDescriptor pg_query__sort_by_dir__descriptor = +{ + PROTOBUF_C__ENUM_DESCRIPTOR_MAGIC, + "pg_query.SortByDir", + "SortByDir", + "PgQuery__SortByDir", + "pg_query", + 5, + pg_query__sort_by_dir__enum_values_by_number, + 5, + pg_query__sort_by_dir__enum_values_by_name, + 1, + pg_query__sort_by_dir__value_ranges, + NULL,NULL,NULL,NULL /* reserved[1234] */ +}; +static const ProtobufCEnumValue pg_query__sort_by_nulls__enum_values_by_number[4] = +{ + { "SORT_BY_NULLS_UNDEFINED", "PG_QUERY__SORT_BY_NULLS__SORT_BY_NULLS_UNDEFINED", 0 }, + { "SORTBY_NULLS_DEFAULT", "PG_QUERY__SORT_BY_NULLS__SORTBY_NULLS_DEFAULT", 1 }, + { "SORTBY_NULLS_FIRST", "PG_QUERY__SORT_BY_NULLS__SORTBY_NULLS_FIRST", 2 }, + { "SORTBY_NULLS_LAST", "PG_QUERY__SORT_BY_NULLS__SORTBY_NULLS_LAST", 3 }, +}; +static const ProtobufCIntRange pg_query__sort_by_nulls__value_ranges[] = { +{0, 0},{0, 4} +}; +static const ProtobufCEnumValueIndex pg_query__sort_by_nulls__enum_values_by_name[4] = +{ + { "SORTBY_NULLS_DEFAULT", 1 }, + { "SORTBY_NULLS_FIRST", 2 }, + { "SORTBY_NULLS_LAST", 3 }, + { "SORT_BY_NULLS_UNDEFINED", 0 }, +}; +const ProtobufCEnumDescriptor pg_query__sort_by_nulls__descriptor = +{ + PROTOBUF_C__ENUM_DESCRIPTOR_MAGIC, + "pg_query.SortByNulls", + "SortByNulls", + "PgQuery__SortByNulls", + "pg_query", + 4, + pg_query__sort_by_nulls__enum_values_by_number, + 4, + pg_query__sort_by_nulls__enum_values_by_name, + 1, + pg_query__sort_by_nulls__value_ranges, + NULL,NULL,NULL,NULL /* reserved[1234] */ +}; +static const ProtobufCEnumValue pg_query__a__expr__kind__enum_values_by_number[17] = +{ + { "A_EXPR_KIND_UNDEFINED", "PG_QUERY__A__EXPR__KIND__A_EXPR_KIND_UNDEFINED", 0 }, + { "AEXPR_OP", "PG_QUERY__A__EXPR__KIND__AEXPR_OP", 1 }, + { "AEXPR_OP_ANY", "PG_QUERY__A__EXPR__KIND__AEXPR_OP_ANY", 2 }, + { "AEXPR_OP_ALL", "PG_QUERY__A__EXPR__KIND__AEXPR_OP_ALL", 3 }, + { "AEXPR_DISTINCT", "PG_QUERY__A__EXPR__KIND__AEXPR_DISTINCT", 4 }, + { "AEXPR_NOT_DISTINCT", "PG_QUERY__A__EXPR__KIND__AEXPR_NOT_DISTINCT", 5 }, + { "AEXPR_NULLIF", "PG_QUERY__A__EXPR__KIND__AEXPR_NULLIF", 6 }, + { "AEXPR_OF", "PG_QUERY__A__EXPR__KIND__AEXPR_OF", 7 }, + { "AEXPR_IN", "PG_QUERY__A__EXPR__KIND__AEXPR_IN", 8 }, + { "AEXPR_LIKE", "PG_QUERY__A__EXPR__KIND__AEXPR_LIKE", 9 }, + { "AEXPR_ILIKE", "PG_QUERY__A__EXPR__KIND__AEXPR_ILIKE", 10 }, + { "AEXPR_SIMILAR", "PG_QUERY__A__EXPR__KIND__AEXPR_SIMILAR", 11 }, + { "AEXPR_BETWEEN", "PG_QUERY__A__EXPR__KIND__AEXPR_BETWEEN", 12 }, + { "AEXPR_NOT_BETWEEN", "PG_QUERY__A__EXPR__KIND__AEXPR_NOT_BETWEEN", 13 }, + { "AEXPR_BETWEEN_SYM", "PG_QUERY__A__EXPR__KIND__AEXPR_BETWEEN_SYM", 14 }, + { "AEXPR_NOT_BETWEEN_SYM", "PG_QUERY__A__EXPR__KIND__AEXPR_NOT_BETWEEN_SYM", 15 }, + { "AEXPR_PAREN", "PG_QUERY__A__EXPR__KIND__AEXPR_PAREN", 16 }, +}; +static const ProtobufCIntRange pg_query__a__expr__kind__value_ranges[] = { +{0, 0},{0, 17} +}; +static const ProtobufCEnumValueIndex pg_query__a__expr__kind__enum_values_by_name[17] = +{ + { "AEXPR_BETWEEN", 12 }, + { "AEXPR_BETWEEN_SYM", 14 }, + { "AEXPR_DISTINCT", 4 }, + { "AEXPR_ILIKE", 10 }, + { "AEXPR_IN", 8 }, + { "AEXPR_LIKE", 9 }, + { "AEXPR_NOT_BETWEEN", 13 }, + { "AEXPR_NOT_BETWEEN_SYM", 15 }, + { "AEXPR_NOT_DISTINCT", 5 }, + { "AEXPR_NULLIF", 6 }, + { "AEXPR_OF", 7 }, + { "AEXPR_OP", 1 }, + { "AEXPR_OP_ALL", 3 }, + { "AEXPR_OP_ANY", 2 }, + { "AEXPR_PAREN", 16 }, + { "AEXPR_SIMILAR", 11 }, + { "A_EXPR_KIND_UNDEFINED", 0 }, +}; +const ProtobufCEnumDescriptor pg_query__a__expr__kind__descriptor = +{ + PROTOBUF_C__ENUM_DESCRIPTOR_MAGIC, + "pg_query.A_Expr_Kind", + "A_Expr_Kind", + "PgQuery__AExprKind", + "pg_query", + 17, + pg_query__a__expr__kind__enum_values_by_number, + 17, + pg_query__a__expr__kind__enum_values_by_name, + 1, + pg_query__a__expr__kind__value_ranges, + NULL,NULL,NULL,NULL /* reserved[1234] */ +}; +static const ProtobufCEnumValue pg_query__role_spec_type__enum_values_by_number[5] = +{ + { "ROLE_SPEC_TYPE_UNDEFINED", "PG_QUERY__ROLE_SPEC_TYPE__ROLE_SPEC_TYPE_UNDEFINED", 0 }, + { "ROLESPEC_CSTRING", "PG_QUERY__ROLE_SPEC_TYPE__ROLESPEC_CSTRING", 1 }, + { "ROLESPEC_CURRENT_USER", "PG_QUERY__ROLE_SPEC_TYPE__ROLESPEC_CURRENT_USER", 2 }, + { "ROLESPEC_SESSION_USER", "PG_QUERY__ROLE_SPEC_TYPE__ROLESPEC_SESSION_USER", 3 }, + { "ROLESPEC_PUBLIC", "PG_QUERY__ROLE_SPEC_TYPE__ROLESPEC_PUBLIC", 4 }, +}; +static const ProtobufCIntRange pg_query__role_spec_type__value_ranges[] = { +{0, 0},{0, 5} +}; +static const ProtobufCEnumValueIndex pg_query__role_spec_type__enum_values_by_name[5] = +{ + { "ROLESPEC_CSTRING", 1 }, + { "ROLESPEC_CURRENT_USER", 2 }, + { "ROLESPEC_PUBLIC", 4 }, + { "ROLESPEC_SESSION_USER", 3 }, + { "ROLE_SPEC_TYPE_UNDEFINED", 0 }, +}; +const ProtobufCEnumDescriptor pg_query__role_spec_type__descriptor = +{ + PROTOBUF_C__ENUM_DESCRIPTOR_MAGIC, + "pg_query.RoleSpecType", + "RoleSpecType", + "PgQuery__RoleSpecType", + "pg_query", + 5, + pg_query__role_spec_type__enum_values_by_number, + 5, + pg_query__role_spec_type__enum_values_by_name, + 1, + pg_query__role_spec_type__value_ranges, + NULL,NULL,NULL,NULL /* reserved[1234] */ +}; +static const ProtobufCEnumValue pg_query__table_like_option__enum_values_by_number[10] = +{ + { "TABLE_LIKE_OPTION_UNDEFINED", "PG_QUERY__TABLE_LIKE_OPTION__TABLE_LIKE_OPTION_UNDEFINED", 0 }, + { "CREATE_TABLE_LIKE_COMMENTS", "PG_QUERY__TABLE_LIKE_OPTION__CREATE_TABLE_LIKE_COMMENTS", 1 }, + { "CREATE_TABLE_LIKE_CONSTRAINTS", "PG_QUERY__TABLE_LIKE_OPTION__CREATE_TABLE_LIKE_CONSTRAINTS", 2 }, + { "CREATE_TABLE_LIKE_DEFAULTS", "PG_QUERY__TABLE_LIKE_OPTION__CREATE_TABLE_LIKE_DEFAULTS", 3 }, + { "CREATE_TABLE_LIKE_GENERATED", "PG_QUERY__TABLE_LIKE_OPTION__CREATE_TABLE_LIKE_GENERATED", 4 }, + { "CREATE_TABLE_LIKE_IDENTITY", "PG_QUERY__TABLE_LIKE_OPTION__CREATE_TABLE_LIKE_IDENTITY", 5 }, + { "CREATE_TABLE_LIKE_INDEXES", "PG_QUERY__TABLE_LIKE_OPTION__CREATE_TABLE_LIKE_INDEXES", 6 }, + { "CREATE_TABLE_LIKE_STATISTICS", "PG_QUERY__TABLE_LIKE_OPTION__CREATE_TABLE_LIKE_STATISTICS", 7 }, + { "CREATE_TABLE_LIKE_STORAGE", "PG_QUERY__TABLE_LIKE_OPTION__CREATE_TABLE_LIKE_STORAGE", 8 }, + { "CREATE_TABLE_LIKE_ALL", "PG_QUERY__TABLE_LIKE_OPTION__CREATE_TABLE_LIKE_ALL", 9 }, +}; +static const ProtobufCIntRange pg_query__table_like_option__value_ranges[] = { +{0, 0},{0, 10} +}; +static const ProtobufCEnumValueIndex pg_query__table_like_option__enum_values_by_name[10] = +{ + { "CREATE_TABLE_LIKE_ALL", 9 }, + { "CREATE_TABLE_LIKE_COMMENTS", 1 }, + { "CREATE_TABLE_LIKE_CONSTRAINTS", 2 }, + { "CREATE_TABLE_LIKE_DEFAULTS", 3 }, + { "CREATE_TABLE_LIKE_GENERATED", 4 }, + { "CREATE_TABLE_LIKE_IDENTITY", 5 }, + { "CREATE_TABLE_LIKE_INDEXES", 6 }, + { "CREATE_TABLE_LIKE_STATISTICS", 7 }, + { "CREATE_TABLE_LIKE_STORAGE", 8 }, + { "TABLE_LIKE_OPTION_UNDEFINED", 0 }, +}; +const ProtobufCEnumDescriptor pg_query__table_like_option__descriptor = +{ + PROTOBUF_C__ENUM_DESCRIPTOR_MAGIC, + "pg_query.TableLikeOption", + "TableLikeOption", + "PgQuery__TableLikeOption", + "pg_query", + 10, + pg_query__table_like_option__enum_values_by_number, + 10, + pg_query__table_like_option__enum_values_by_name, + 1, + pg_query__table_like_option__value_ranges, + NULL,NULL,NULL,NULL /* reserved[1234] */ +}; +static const ProtobufCEnumValue pg_query__def_elem_action__enum_values_by_number[5] = +{ + { "DEF_ELEM_ACTION_UNDEFINED", "PG_QUERY__DEF_ELEM_ACTION__DEF_ELEM_ACTION_UNDEFINED", 0 }, + { "DEFELEM_UNSPEC", "PG_QUERY__DEF_ELEM_ACTION__DEFELEM_UNSPEC", 1 }, + { "DEFELEM_SET", "PG_QUERY__DEF_ELEM_ACTION__DEFELEM_SET", 2 }, + { "DEFELEM_ADD", "PG_QUERY__DEF_ELEM_ACTION__DEFELEM_ADD", 3 }, + { "DEFELEM_DROP", "PG_QUERY__DEF_ELEM_ACTION__DEFELEM_DROP", 4 }, +}; +static const ProtobufCIntRange pg_query__def_elem_action__value_ranges[] = { +{0, 0},{0, 5} +}; +static const ProtobufCEnumValueIndex pg_query__def_elem_action__enum_values_by_name[5] = +{ + { "DEFELEM_ADD", 3 }, + { "DEFELEM_DROP", 4 }, + { "DEFELEM_SET", 2 }, + { "DEFELEM_UNSPEC", 1 }, + { "DEF_ELEM_ACTION_UNDEFINED", 0 }, +}; +const ProtobufCEnumDescriptor pg_query__def_elem_action__descriptor = +{ + PROTOBUF_C__ENUM_DESCRIPTOR_MAGIC, + "pg_query.DefElemAction", + "DefElemAction", + "PgQuery__DefElemAction", + "pg_query", + 5, + pg_query__def_elem_action__enum_values_by_number, + 5, + pg_query__def_elem_action__enum_values_by_name, + 1, + pg_query__def_elem_action__value_ranges, + NULL,NULL,NULL,NULL /* reserved[1234] */ +}; +static const ProtobufCEnumValue pg_query__partition_range_datum_kind__enum_values_by_number[4] = +{ + { "PARTITION_RANGE_DATUM_KIND_UNDEFINED", "PG_QUERY__PARTITION_RANGE_DATUM_KIND__PARTITION_RANGE_DATUM_KIND_UNDEFINED", 0 }, + { "PARTITION_RANGE_DATUM_MINVALUE", "PG_QUERY__PARTITION_RANGE_DATUM_KIND__PARTITION_RANGE_DATUM_MINVALUE", 1 }, + { "PARTITION_RANGE_DATUM_VALUE", "PG_QUERY__PARTITION_RANGE_DATUM_KIND__PARTITION_RANGE_DATUM_VALUE", 2 }, + { "PARTITION_RANGE_DATUM_MAXVALUE", "PG_QUERY__PARTITION_RANGE_DATUM_KIND__PARTITION_RANGE_DATUM_MAXVALUE", 3 }, +}; +static const ProtobufCIntRange pg_query__partition_range_datum_kind__value_ranges[] = { +{0, 0},{0, 4} +}; +static const ProtobufCEnumValueIndex pg_query__partition_range_datum_kind__enum_values_by_name[4] = +{ + { "PARTITION_RANGE_DATUM_KIND_UNDEFINED", 0 }, + { "PARTITION_RANGE_DATUM_MAXVALUE", 3 }, + { "PARTITION_RANGE_DATUM_MINVALUE", 1 }, + { "PARTITION_RANGE_DATUM_VALUE", 2 }, +}; +const ProtobufCEnumDescriptor pg_query__partition_range_datum_kind__descriptor = +{ + PROTOBUF_C__ENUM_DESCRIPTOR_MAGIC, + "pg_query.PartitionRangeDatumKind", + "PartitionRangeDatumKind", + "PgQuery__PartitionRangeDatumKind", + "pg_query", + 4, + pg_query__partition_range_datum_kind__enum_values_by_number, + 4, + pg_query__partition_range_datum_kind__enum_values_by_name, + 1, + pg_query__partition_range_datum_kind__value_ranges, + NULL,NULL,NULL,NULL /* reserved[1234] */ +}; +static const ProtobufCEnumValue pg_query__rtekind__enum_values_by_number[10] = +{ + { "RTEKIND_UNDEFINED", "PG_QUERY__RTEKIND__RTEKIND_UNDEFINED", 0 }, + { "RTE_RELATION", "PG_QUERY__RTEKIND__RTE_RELATION", 1 }, + { "RTE_SUBQUERY", "PG_QUERY__RTEKIND__RTE_SUBQUERY", 2 }, + { "RTE_JOIN", "PG_QUERY__RTEKIND__RTE_JOIN", 3 }, + { "RTE_FUNCTION", "PG_QUERY__RTEKIND__RTE_FUNCTION", 4 }, + { "RTE_TABLEFUNC", "PG_QUERY__RTEKIND__RTE_TABLEFUNC", 5 }, + { "RTE_VALUES", "PG_QUERY__RTEKIND__RTE_VALUES", 6 }, + { "RTE_CTE", "PG_QUERY__RTEKIND__RTE_CTE", 7 }, + { "RTE_NAMEDTUPLESTORE", "PG_QUERY__RTEKIND__RTE_NAMEDTUPLESTORE", 8 }, + { "RTE_RESULT", "PG_QUERY__RTEKIND__RTE_RESULT", 9 }, +}; +static const ProtobufCIntRange pg_query__rtekind__value_ranges[] = { +{0, 0},{0, 10} +}; +static const ProtobufCEnumValueIndex pg_query__rtekind__enum_values_by_name[10] = +{ + { "RTEKIND_UNDEFINED", 0 }, + { "RTE_CTE", 7 }, + { "RTE_FUNCTION", 4 }, + { "RTE_JOIN", 3 }, + { "RTE_NAMEDTUPLESTORE", 8 }, + { "RTE_RELATION", 1 }, + { "RTE_RESULT", 9 }, + { "RTE_SUBQUERY", 2 }, + { "RTE_TABLEFUNC", 5 }, + { "RTE_VALUES", 6 }, +}; +const ProtobufCEnumDescriptor pg_query__rtekind__descriptor = +{ + PROTOBUF_C__ENUM_DESCRIPTOR_MAGIC, + "pg_query.RTEKind", + "RTEKind", + "PgQuery__RTEKind", + "pg_query", + 10, + pg_query__rtekind__enum_values_by_number, + 10, + pg_query__rtekind__enum_values_by_name, + 1, + pg_query__rtekind__value_ranges, + NULL,NULL,NULL,NULL /* reserved[1234] */ +}; +static const ProtobufCEnumValue pg_query__wcokind__enum_values_by_number[5] = +{ + { "WCOKIND_UNDEFINED", "PG_QUERY__WCOKIND__WCOKIND_UNDEFINED", 0 }, + { "WCO_VIEW_CHECK", "PG_QUERY__WCOKIND__WCO_VIEW_CHECK", 1 }, + { "WCO_RLS_INSERT_CHECK", "PG_QUERY__WCOKIND__WCO_RLS_INSERT_CHECK", 2 }, + { "WCO_RLS_UPDATE_CHECK", "PG_QUERY__WCOKIND__WCO_RLS_UPDATE_CHECK", 3 }, + { "WCO_RLS_CONFLICT_CHECK", "PG_QUERY__WCOKIND__WCO_RLS_CONFLICT_CHECK", 4 }, +}; +static const ProtobufCIntRange pg_query__wcokind__value_ranges[] = { +{0, 0},{0, 5} +}; +static const ProtobufCEnumValueIndex pg_query__wcokind__enum_values_by_name[5] = +{ + { "WCOKIND_UNDEFINED", 0 }, + { "WCO_RLS_CONFLICT_CHECK", 4 }, + { "WCO_RLS_INSERT_CHECK", 2 }, + { "WCO_RLS_UPDATE_CHECK", 3 }, + { "WCO_VIEW_CHECK", 1 }, +}; +const ProtobufCEnumDescriptor pg_query__wcokind__descriptor = +{ + PROTOBUF_C__ENUM_DESCRIPTOR_MAGIC, + "pg_query.WCOKind", + "WCOKind", + "PgQuery__WCOKind", + "pg_query", + 5, + pg_query__wcokind__enum_values_by_number, + 5, + pg_query__wcokind__enum_values_by_name, + 1, + pg_query__wcokind__value_ranges, + NULL,NULL,NULL,NULL /* reserved[1234] */ +}; +static const ProtobufCEnumValue pg_query__grouping_set_kind__enum_values_by_number[6] = +{ + { "GROUPING_SET_KIND_UNDEFINED", "PG_QUERY__GROUPING_SET_KIND__GROUPING_SET_KIND_UNDEFINED", 0 }, + { "GROUPING_SET_EMPTY", "PG_QUERY__GROUPING_SET_KIND__GROUPING_SET_EMPTY", 1 }, + { "GROUPING_SET_SIMPLE", "PG_QUERY__GROUPING_SET_KIND__GROUPING_SET_SIMPLE", 2 }, + { "GROUPING_SET_ROLLUP", "PG_QUERY__GROUPING_SET_KIND__GROUPING_SET_ROLLUP", 3 }, + { "GROUPING_SET_CUBE", "PG_QUERY__GROUPING_SET_KIND__GROUPING_SET_CUBE", 4 }, + { "GROUPING_SET_SETS", "PG_QUERY__GROUPING_SET_KIND__GROUPING_SET_SETS", 5 }, +}; +static const ProtobufCIntRange pg_query__grouping_set_kind__value_ranges[] = { +{0, 0},{0, 6} +}; +static const ProtobufCEnumValueIndex pg_query__grouping_set_kind__enum_values_by_name[6] = +{ + { "GROUPING_SET_CUBE", 4 }, + { "GROUPING_SET_EMPTY", 1 }, + { "GROUPING_SET_KIND_UNDEFINED", 0 }, + { "GROUPING_SET_ROLLUP", 3 }, + { "GROUPING_SET_SETS", 5 }, + { "GROUPING_SET_SIMPLE", 2 }, +}; +const ProtobufCEnumDescriptor pg_query__grouping_set_kind__descriptor = +{ + PROTOBUF_C__ENUM_DESCRIPTOR_MAGIC, + "pg_query.GroupingSetKind", + "GroupingSetKind", + "PgQuery__GroupingSetKind", + "pg_query", + 6, + pg_query__grouping_set_kind__enum_values_by_number, + 6, + pg_query__grouping_set_kind__enum_values_by_name, + 1, + pg_query__grouping_set_kind__value_ranges, + NULL,NULL,NULL,NULL /* reserved[1234] */ +}; +static const ProtobufCEnumValue pg_query__ctematerialize__enum_values_by_number[4] = +{ + { "CTEMATERIALIZE_UNDEFINED", "PG_QUERY__CTEMATERIALIZE__CTEMATERIALIZE_UNDEFINED", 0 }, + { "CTEMaterializeDefault", "PG_QUERY__CTEMATERIALIZE__CTEMaterializeDefault", 1 }, + { "CTEMaterializeAlways", "PG_QUERY__CTEMATERIALIZE__CTEMaterializeAlways", 2 }, + { "CTEMaterializeNever", "PG_QUERY__CTEMATERIALIZE__CTEMaterializeNever", 3 }, +}; +static const ProtobufCIntRange pg_query__ctematerialize__value_ranges[] = { +{0, 0},{0, 4} +}; +static const ProtobufCEnumValueIndex pg_query__ctematerialize__enum_values_by_name[4] = +{ + { "CTEMATERIALIZE_UNDEFINED", 0 }, + { "CTEMaterializeAlways", 2 }, + { "CTEMaterializeDefault", 1 }, + { "CTEMaterializeNever", 3 }, +}; +const ProtobufCEnumDescriptor pg_query__ctematerialize__descriptor = +{ + PROTOBUF_C__ENUM_DESCRIPTOR_MAGIC, + "pg_query.CTEMaterialize", + "CTEMaterialize", + "PgQuery__CTEMaterialize", + "pg_query", + 4, + pg_query__ctematerialize__enum_values_by_number, + 4, + pg_query__ctematerialize__enum_values_by_name, + 1, + pg_query__ctematerialize__value_ranges, + NULL,NULL,NULL,NULL /* reserved[1234] */ +}; +static const ProtobufCEnumValue pg_query__set_operation__enum_values_by_number[5] = +{ + { "SET_OPERATION_UNDEFINED", "PG_QUERY__SET_OPERATION__SET_OPERATION_UNDEFINED", 0 }, + { "SETOP_NONE", "PG_QUERY__SET_OPERATION__SETOP_NONE", 1 }, + { "SETOP_UNION", "PG_QUERY__SET_OPERATION__SETOP_UNION", 2 }, + { "SETOP_INTERSECT", "PG_QUERY__SET_OPERATION__SETOP_INTERSECT", 3 }, + { "SETOP_EXCEPT", "PG_QUERY__SET_OPERATION__SETOP_EXCEPT", 4 }, +}; +static const ProtobufCIntRange pg_query__set_operation__value_ranges[] = { +{0, 0},{0, 5} +}; +static const ProtobufCEnumValueIndex pg_query__set_operation__enum_values_by_name[5] = +{ + { "SETOP_EXCEPT", 4 }, + { "SETOP_INTERSECT", 3 }, + { "SETOP_NONE", 1 }, + { "SETOP_UNION", 2 }, + { "SET_OPERATION_UNDEFINED", 0 }, +}; +const ProtobufCEnumDescriptor pg_query__set_operation__descriptor = +{ + PROTOBUF_C__ENUM_DESCRIPTOR_MAGIC, + "pg_query.SetOperation", + "SetOperation", + "PgQuery__SetOperation", + "pg_query", + 5, + pg_query__set_operation__enum_values_by_number, + 5, + pg_query__set_operation__enum_values_by_name, + 1, + pg_query__set_operation__value_ranges, + NULL,NULL,NULL,NULL /* reserved[1234] */ +}; +static const ProtobufCEnumValue pg_query__object_type__enum_values_by_number[51] = +{ + { "OBJECT_TYPE_UNDEFINED", "PG_QUERY__OBJECT_TYPE__OBJECT_TYPE_UNDEFINED", 0 }, + { "OBJECT_ACCESS_METHOD", "PG_QUERY__OBJECT_TYPE__OBJECT_ACCESS_METHOD", 1 }, + { "OBJECT_AGGREGATE", "PG_QUERY__OBJECT_TYPE__OBJECT_AGGREGATE", 2 }, + { "OBJECT_AMOP", "PG_QUERY__OBJECT_TYPE__OBJECT_AMOP", 3 }, + { "OBJECT_AMPROC", "PG_QUERY__OBJECT_TYPE__OBJECT_AMPROC", 4 }, + { "OBJECT_ATTRIBUTE", "PG_QUERY__OBJECT_TYPE__OBJECT_ATTRIBUTE", 5 }, + { "OBJECT_CAST", "PG_QUERY__OBJECT_TYPE__OBJECT_CAST", 6 }, + { "OBJECT_COLUMN", "PG_QUERY__OBJECT_TYPE__OBJECT_COLUMN", 7 }, + { "OBJECT_COLLATION", "PG_QUERY__OBJECT_TYPE__OBJECT_COLLATION", 8 }, + { "OBJECT_CONVERSION", "PG_QUERY__OBJECT_TYPE__OBJECT_CONVERSION", 9 }, + { "OBJECT_DATABASE", "PG_QUERY__OBJECT_TYPE__OBJECT_DATABASE", 10 }, + { "OBJECT_DEFAULT", "PG_QUERY__OBJECT_TYPE__OBJECT_DEFAULT", 11 }, + { "OBJECT_DEFACL", "PG_QUERY__OBJECT_TYPE__OBJECT_DEFACL", 12 }, + { "OBJECT_DOMAIN", "PG_QUERY__OBJECT_TYPE__OBJECT_DOMAIN", 13 }, + { "OBJECT_DOMCONSTRAINT", "PG_QUERY__OBJECT_TYPE__OBJECT_DOMCONSTRAINT", 14 }, + { "OBJECT_EVENT_TRIGGER", "PG_QUERY__OBJECT_TYPE__OBJECT_EVENT_TRIGGER", 15 }, + { "OBJECT_EXTENSION", "PG_QUERY__OBJECT_TYPE__OBJECT_EXTENSION", 16 }, + { "OBJECT_FDW", "PG_QUERY__OBJECT_TYPE__OBJECT_FDW", 17 }, + { "OBJECT_FOREIGN_SERVER", "PG_QUERY__OBJECT_TYPE__OBJECT_FOREIGN_SERVER", 18 }, + { "OBJECT_FOREIGN_TABLE", "PG_QUERY__OBJECT_TYPE__OBJECT_FOREIGN_TABLE", 19 }, + { "OBJECT_FUNCTION", "PG_QUERY__OBJECT_TYPE__OBJECT_FUNCTION", 20 }, + { "OBJECT_INDEX", "PG_QUERY__OBJECT_TYPE__OBJECT_INDEX", 21 }, + { "OBJECT_LANGUAGE", "PG_QUERY__OBJECT_TYPE__OBJECT_LANGUAGE", 22 }, + { "OBJECT_LARGEOBJECT", "PG_QUERY__OBJECT_TYPE__OBJECT_LARGEOBJECT", 23 }, + { "OBJECT_MATVIEW", "PG_QUERY__OBJECT_TYPE__OBJECT_MATVIEW", 24 }, + { "OBJECT_OPCLASS", "PG_QUERY__OBJECT_TYPE__OBJECT_OPCLASS", 25 }, + { "OBJECT_OPERATOR", "PG_QUERY__OBJECT_TYPE__OBJECT_OPERATOR", 26 }, + { "OBJECT_OPFAMILY", "PG_QUERY__OBJECT_TYPE__OBJECT_OPFAMILY", 27 }, + { "OBJECT_POLICY", "PG_QUERY__OBJECT_TYPE__OBJECT_POLICY", 28 }, + { "OBJECT_PROCEDURE", "PG_QUERY__OBJECT_TYPE__OBJECT_PROCEDURE", 29 }, + { "OBJECT_PUBLICATION", "PG_QUERY__OBJECT_TYPE__OBJECT_PUBLICATION", 30 }, + { "OBJECT_PUBLICATION_REL", "PG_QUERY__OBJECT_TYPE__OBJECT_PUBLICATION_REL", 31 }, + { "OBJECT_ROLE", "PG_QUERY__OBJECT_TYPE__OBJECT_ROLE", 32 }, + { "OBJECT_ROUTINE", "PG_QUERY__OBJECT_TYPE__OBJECT_ROUTINE", 33 }, + { "OBJECT_RULE", "PG_QUERY__OBJECT_TYPE__OBJECT_RULE", 34 }, + { "OBJECT_SCHEMA", "PG_QUERY__OBJECT_TYPE__OBJECT_SCHEMA", 35 }, + { "OBJECT_SEQUENCE", "PG_QUERY__OBJECT_TYPE__OBJECT_SEQUENCE", 36 }, + { "OBJECT_SUBSCRIPTION", "PG_QUERY__OBJECT_TYPE__OBJECT_SUBSCRIPTION", 37 }, + { "OBJECT_STATISTIC_EXT", "PG_QUERY__OBJECT_TYPE__OBJECT_STATISTIC_EXT", 38 }, + { "OBJECT_TABCONSTRAINT", "PG_QUERY__OBJECT_TYPE__OBJECT_TABCONSTRAINT", 39 }, + { "OBJECT_TABLE", "PG_QUERY__OBJECT_TYPE__OBJECT_TABLE", 40 }, + { "OBJECT_TABLESPACE", "PG_QUERY__OBJECT_TYPE__OBJECT_TABLESPACE", 41 }, + { "OBJECT_TRANSFORM", "PG_QUERY__OBJECT_TYPE__OBJECT_TRANSFORM", 42 }, + { "OBJECT_TRIGGER", "PG_QUERY__OBJECT_TYPE__OBJECT_TRIGGER", 43 }, + { "OBJECT_TSCONFIGURATION", "PG_QUERY__OBJECT_TYPE__OBJECT_TSCONFIGURATION", 44 }, + { "OBJECT_TSDICTIONARY", "PG_QUERY__OBJECT_TYPE__OBJECT_TSDICTIONARY", 45 }, + { "OBJECT_TSPARSER", "PG_QUERY__OBJECT_TYPE__OBJECT_TSPARSER", 46 }, + { "OBJECT_TSTEMPLATE", "PG_QUERY__OBJECT_TYPE__OBJECT_TSTEMPLATE", 47 }, + { "OBJECT_TYPE", "PG_QUERY__OBJECT_TYPE__OBJECT_TYPE", 48 }, + { "OBJECT_USER_MAPPING", "PG_QUERY__OBJECT_TYPE__OBJECT_USER_MAPPING", 49 }, + { "OBJECT_VIEW", "PG_QUERY__OBJECT_TYPE__OBJECT_VIEW", 50 }, +}; +static const ProtobufCIntRange pg_query__object_type__value_ranges[] = { +{0, 0},{0, 51} +}; +static const ProtobufCEnumValueIndex pg_query__object_type__enum_values_by_name[51] = +{ + { "OBJECT_ACCESS_METHOD", 1 }, + { "OBJECT_AGGREGATE", 2 }, + { "OBJECT_AMOP", 3 }, + { "OBJECT_AMPROC", 4 }, + { "OBJECT_ATTRIBUTE", 5 }, + { "OBJECT_CAST", 6 }, + { "OBJECT_COLLATION", 8 }, + { "OBJECT_COLUMN", 7 }, + { "OBJECT_CONVERSION", 9 }, + { "OBJECT_DATABASE", 10 }, + { "OBJECT_DEFACL", 12 }, + { "OBJECT_DEFAULT", 11 }, + { "OBJECT_DOMAIN", 13 }, + { "OBJECT_DOMCONSTRAINT", 14 }, + { "OBJECT_EVENT_TRIGGER", 15 }, + { "OBJECT_EXTENSION", 16 }, + { "OBJECT_FDW", 17 }, + { "OBJECT_FOREIGN_SERVER", 18 }, + { "OBJECT_FOREIGN_TABLE", 19 }, + { "OBJECT_FUNCTION", 20 }, + { "OBJECT_INDEX", 21 }, + { "OBJECT_LANGUAGE", 22 }, + { "OBJECT_LARGEOBJECT", 23 }, + { "OBJECT_MATVIEW", 24 }, + { "OBJECT_OPCLASS", 25 }, + { "OBJECT_OPERATOR", 26 }, + { "OBJECT_OPFAMILY", 27 }, + { "OBJECT_POLICY", 28 }, + { "OBJECT_PROCEDURE", 29 }, + { "OBJECT_PUBLICATION", 30 }, + { "OBJECT_PUBLICATION_REL", 31 }, + { "OBJECT_ROLE", 32 }, + { "OBJECT_ROUTINE", 33 }, + { "OBJECT_RULE", 34 }, + { "OBJECT_SCHEMA", 35 }, + { "OBJECT_SEQUENCE", 36 }, + { "OBJECT_STATISTIC_EXT", 38 }, + { "OBJECT_SUBSCRIPTION", 37 }, + { "OBJECT_TABCONSTRAINT", 39 }, + { "OBJECT_TABLE", 40 }, + { "OBJECT_TABLESPACE", 41 }, + { "OBJECT_TRANSFORM", 42 }, + { "OBJECT_TRIGGER", 43 }, + { "OBJECT_TSCONFIGURATION", 44 }, + { "OBJECT_TSDICTIONARY", 45 }, + { "OBJECT_TSPARSER", 46 }, + { "OBJECT_TSTEMPLATE", 47 }, + { "OBJECT_TYPE", 48 }, + { "OBJECT_TYPE_UNDEFINED", 0 }, + { "OBJECT_USER_MAPPING", 49 }, + { "OBJECT_VIEW", 50 }, +}; +const ProtobufCEnumDescriptor pg_query__object_type__descriptor = +{ + PROTOBUF_C__ENUM_DESCRIPTOR_MAGIC, + "pg_query.ObjectType", + "ObjectType", + "PgQuery__ObjectType", + "pg_query", + 51, + pg_query__object_type__enum_values_by_number, + 51, + pg_query__object_type__enum_values_by_name, + 1, + pg_query__object_type__value_ranges, + NULL,NULL,NULL,NULL /* reserved[1234] */ +}; +static const ProtobufCEnumValue pg_query__drop_behavior__enum_values_by_number[3] = +{ + { "DROP_BEHAVIOR_UNDEFINED", "PG_QUERY__DROP_BEHAVIOR__DROP_BEHAVIOR_UNDEFINED", 0 }, + { "DROP_RESTRICT", "PG_QUERY__DROP_BEHAVIOR__DROP_RESTRICT", 1 }, + { "DROP_CASCADE", "PG_QUERY__DROP_BEHAVIOR__DROP_CASCADE", 2 }, +}; +static const ProtobufCIntRange pg_query__drop_behavior__value_ranges[] = { +{0, 0},{0, 3} +}; +static const ProtobufCEnumValueIndex pg_query__drop_behavior__enum_values_by_name[3] = +{ + { "DROP_BEHAVIOR_UNDEFINED", 0 }, + { "DROP_CASCADE", 2 }, + { "DROP_RESTRICT", 1 }, +}; +const ProtobufCEnumDescriptor pg_query__drop_behavior__descriptor = +{ + PROTOBUF_C__ENUM_DESCRIPTOR_MAGIC, + "pg_query.DropBehavior", + "DropBehavior", + "PgQuery__DropBehavior", + "pg_query", + 3, + pg_query__drop_behavior__enum_values_by_number, + 3, + pg_query__drop_behavior__enum_values_by_name, + 1, + pg_query__drop_behavior__value_ranges, + NULL,NULL,NULL,NULL /* reserved[1234] */ +}; +static const ProtobufCEnumValue pg_query__alter_table_type__enum_values_by_number[68] = +{ + { "ALTER_TABLE_TYPE_UNDEFINED", "PG_QUERY__ALTER_TABLE_TYPE__ALTER_TABLE_TYPE_UNDEFINED", 0 }, + { "AT_AddColumn", "PG_QUERY__ALTER_TABLE_TYPE__AT_AddColumn", 1 }, + { "AT_AddColumnRecurse", "PG_QUERY__ALTER_TABLE_TYPE__AT_AddColumnRecurse", 2 }, + { "AT_AddColumnToView", "PG_QUERY__ALTER_TABLE_TYPE__AT_AddColumnToView", 3 }, + { "AT_ColumnDefault", "PG_QUERY__ALTER_TABLE_TYPE__AT_ColumnDefault", 4 }, + { "AT_CookedColumnDefault", "PG_QUERY__ALTER_TABLE_TYPE__AT_CookedColumnDefault", 5 }, + { "AT_DropNotNull", "PG_QUERY__ALTER_TABLE_TYPE__AT_DropNotNull", 6 }, + { "AT_SetNotNull", "PG_QUERY__ALTER_TABLE_TYPE__AT_SetNotNull", 7 }, + { "AT_DropExpression", "PG_QUERY__ALTER_TABLE_TYPE__AT_DropExpression", 8 }, + { "AT_CheckNotNull", "PG_QUERY__ALTER_TABLE_TYPE__AT_CheckNotNull", 9 }, + { "AT_SetStatistics", "PG_QUERY__ALTER_TABLE_TYPE__AT_SetStatistics", 10 }, + { "AT_SetOptions", "PG_QUERY__ALTER_TABLE_TYPE__AT_SetOptions", 11 }, + { "AT_ResetOptions", "PG_QUERY__ALTER_TABLE_TYPE__AT_ResetOptions", 12 }, + { "AT_SetStorage", "PG_QUERY__ALTER_TABLE_TYPE__AT_SetStorage", 13 }, + { "AT_DropColumn", "PG_QUERY__ALTER_TABLE_TYPE__AT_DropColumn", 14 }, + { "AT_DropColumnRecurse", "PG_QUERY__ALTER_TABLE_TYPE__AT_DropColumnRecurse", 15 }, + { "AT_AddIndex", "PG_QUERY__ALTER_TABLE_TYPE__AT_AddIndex", 16 }, + { "AT_ReAddIndex", "PG_QUERY__ALTER_TABLE_TYPE__AT_ReAddIndex", 17 }, + { "AT_AddConstraint", "PG_QUERY__ALTER_TABLE_TYPE__AT_AddConstraint", 18 }, + { "AT_AddConstraintRecurse", "PG_QUERY__ALTER_TABLE_TYPE__AT_AddConstraintRecurse", 19 }, + { "AT_ReAddConstraint", "PG_QUERY__ALTER_TABLE_TYPE__AT_ReAddConstraint", 20 }, + { "AT_ReAddDomainConstraint", "PG_QUERY__ALTER_TABLE_TYPE__AT_ReAddDomainConstraint", 21 }, + { "AT_AlterConstraint", "PG_QUERY__ALTER_TABLE_TYPE__AT_AlterConstraint", 22 }, + { "AT_ValidateConstraint", "PG_QUERY__ALTER_TABLE_TYPE__AT_ValidateConstraint", 23 }, + { "AT_ValidateConstraintRecurse", "PG_QUERY__ALTER_TABLE_TYPE__AT_ValidateConstraintRecurse", 24 }, + { "AT_AddIndexConstraint", "PG_QUERY__ALTER_TABLE_TYPE__AT_AddIndexConstraint", 25 }, + { "AT_DropConstraint", "PG_QUERY__ALTER_TABLE_TYPE__AT_DropConstraint", 26 }, + { "AT_DropConstraintRecurse", "PG_QUERY__ALTER_TABLE_TYPE__AT_DropConstraintRecurse", 27 }, + { "AT_ReAddComment", "PG_QUERY__ALTER_TABLE_TYPE__AT_ReAddComment", 28 }, + { "AT_AlterColumnType", "PG_QUERY__ALTER_TABLE_TYPE__AT_AlterColumnType", 29 }, + { "AT_AlterColumnGenericOptions", "PG_QUERY__ALTER_TABLE_TYPE__AT_AlterColumnGenericOptions", 30 }, + { "AT_ChangeOwner", "PG_QUERY__ALTER_TABLE_TYPE__AT_ChangeOwner", 31 }, + { "AT_ClusterOn", "PG_QUERY__ALTER_TABLE_TYPE__AT_ClusterOn", 32 }, + { "AT_DropCluster", "PG_QUERY__ALTER_TABLE_TYPE__AT_DropCluster", 33 }, + { "AT_SetLogged", "PG_QUERY__ALTER_TABLE_TYPE__AT_SetLogged", 34 }, + { "AT_SetUnLogged", "PG_QUERY__ALTER_TABLE_TYPE__AT_SetUnLogged", 35 }, + { "AT_DropOids", "PG_QUERY__ALTER_TABLE_TYPE__AT_DropOids", 36 }, + { "AT_SetTableSpace", "PG_QUERY__ALTER_TABLE_TYPE__AT_SetTableSpace", 37 }, + { "AT_SetRelOptions", "PG_QUERY__ALTER_TABLE_TYPE__AT_SetRelOptions", 38 }, + { "AT_ResetRelOptions", "PG_QUERY__ALTER_TABLE_TYPE__AT_ResetRelOptions", 39 }, + { "AT_ReplaceRelOptions", "PG_QUERY__ALTER_TABLE_TYPE__AT_ReplaceRelOptions", 40 }, + { "AT_EnableTrig", "PG_QUERY__ALTER_TABLE_TYPE__AT_EnableTrig", 41 }, + { "AT_EnableAlwaysTrig", "PG_QUERY__ALTER_TABLE_TYPE__AT_EnableAlwaysTrig", 42 }, + { "AT_EnableReplicaTrig", "PG_QUERY__ALTER_TABLE_TYPE__AT_EnableReplicaTrig", 43 }, + { "AT_DisableTrig", "PG_QUERY__ALTER_TABLE_TYPE__AT_DisableTrig", 44 }, + { "AT_EnableTrigAll", "PG_QUERY__ALTER_TABLE_TYPE__AT_EnableTrigAll", 45 }, + { "AT_DisableTrigAll", "PG_QUERY__ALTER_TABLE_TYPE__AT_DisableTrigAll", 46 }, + { "AT_EnableTrigUser", "PG_QUERY__ALTER_TABLE_TYPE__AT_EnableTrigUser", 47 }, + { "AT_DisableTrigUser", "PG_QUERY__ALTER_TABLE_TYPE__AT_DisableTrigUser", 48 }, + { "AT_EnableRule", "PG_QUERY__ALTER_TABLE_TYPE__AT_EnableRule", 49 }, + { "AT_EnableAlwaysRule", "PG_QUERY__ALTER_TABLE_TYPE__AT_EnableAlwaysRule", 50 }, + { "AT_EnableReplicaRule", "PG_QUERY__ALTER_TABLE_TYPE__AT_EnableReplicaRule", 51 }, + { "AT_DisableRule", "PG_QUERY__ALTER_TABLE_TYPE__AT_DisableRule", 52 }, + { "AT_AddInherit", "PG_QUERY__ALTER_TABLE_TYPE__AT_AddInherit", 53 }, + { "AT_DropInherit", "PG_QUERY__ALTER_TABLE_TYPE__AT_DropInherit", 54 }, + { "AT_AddOf", "PG_QUERY__ALTER_TABLE_TYPE__AT_AddOf", 55 }, + { "AT_DropOf", "PG_QUERY__ALTER_TABLE_TYPE__AT_DropOf", 56 }, + { "AT_ReplicaIdentity", "PG_QUERY__ALTER_TABLE_TYPE__AT_ReplicaIdentity", 57 }, + { "AT_EnableRowSecurity", "PG_QUERY__ALTER_TABLE_TYPE__AT_EnableRowSecurity", 58 }, + { "AT_DisableRowSecurity", "PG_QUERY__ALTER_TABLE_TYPE__AT_DisableRowSecurity", 59 }, + { "AT_ForceRowSecurity", "PG_QUERY__ALTER_TABLE_TYPE__AT_ForceRowSecurity", 60 }, + { "AT_NoForceRowSecurity", "PG_QUERY__ALTER_TABLE_TYPE__AT_NoForceRowSecurity", 61 }, + { "AT_GenericOptions", "PG_QUERY__ALTER_TABLE_TYPE__AT_GenericOptions", 62 }, + { "AT_AttachPartition", "PG_QUERY__ALTER_TABLE_TYPE__AT_AttachPartition", 63 }, + { "AT_DetachPartition", "PG_QUERY__ALTER_TABLE_TYPE__AT_DetachPartition", 64 }, + { "AT_AddIdentity", "PG_QUERY__ALTER_TABLE_TYPE__AT_AddIdentity", 65 }, + { "AT_SetIdentity", "PG_QUERY__ALTER_TABLE_TYPE__AT_SetIdentity", 66 }, + { "AT_DropIdentity", "PG_QUERY__ALTER_TABLE_TYPE__AT_DropIdentity", 67 }, +}; +static const ProtobufCIntRange pg_query__alter_table_type__value_ranges[] = { +{0, 0},{0, 68} +}; +static const ProtobufCEnumValueIndex pg_query__alter_table_type__enum_values_by_name[68] = +{ + { "ALTER_TABLE_TYPE_UNDEFINED", 0 }, + { "AT_AddColumn", 1 }, + { "AT_AddColumnRecurse", 2 }, + { "AT_AddColumnToView", 3 }, + { "AT_AddConstraint", 18 }, + { "AT_AddConstraintRecurse", 19 }, + { "AT_AddIdentity", 65 }, + { "AT_AddIndex", 16 }, + { "AT_AddIndexConstraint", 25 }, + { "AT_AddInherit", 53 }, + { "AT_AddOf", 55 }, + { "AT_AlterColumnGenericOptions", 30 }, + { "AT_AlterColumnType", 29 }, + { "AT_AlterConstraint", 22 }, + { "AT_AttachPartition", 63 }, + { "AT_ChangeOwner", 31 }, + { "AT_CheckNotNull", 9 }, + { "AT_ClusterOn", 32 }, + { "AT_ColumnDefault", 4 }, + { "AT_CookedColumnDefault", 5 }, + { "AT_DetachPartition", 64 }, + { "AT_DisableRowSecurity", 59 }, + { "AT_DisableRule", 52 }, + { "AT_DisableTrig", 44 }, + { "AT_DisableTrigAll", 46 }, + { "AT_DisableTrigUser", 48 }, + { "AT_DropCluster", 33 }, + { "AT_DropColumn", 14 }, + { "AT_DropColumnRecurse", 15 }, + { "AT_DropConstraint", 26 }, + { "AT_DropConstraintRecurse", 27 }, + { "AT_DropExpression", 8 }, + { "AT_DropIdentity", 67 }, + { "AT_DropInherit", 54 }, + { "AT_DropNotNull", 6 }, + { "AT_DropOf", 56 }, + { "AT_DropOids", 36 }, + { "AT_EnableAlwaysRule", 50 }, + { "AT_EnableAlwaysTrig", 42 }, + { "AT_EnableReplicaRule", 51 }, + { "AT_EnableReplicaTrig", 43 }, + { "AT_EnableRowSecurity", 58 }, + { "AT_EnableRule", 49 }, + { "AT_EnableTrig", 41 }, + { "AT_EnableTrigAll", 45 }, + { "AT_EnableTrigUser", 47 }, + { "AT_ForceRowSecurity", 60 }, + { "AT_GenericOptions", 62 }, + { "AT_NoForceRowSecurity", 61 }, + { "AT_ReAddComment", 28 }, + { "AT_ReAddConstraint", 20 }, + { "AT_ReAddDomainConstraint", 21 }, + { "AT_ReAddIndex", 17 }, + { "AT_ReplaceRelOptions", 40 }, + { "AT_ReplicaIdentity", 57 }, + { "AT_ResetOptions", 12 }, + { "AT_ResetRelOptions", 39 }, + { "AT_SetIdentity", 66 }, + { "AT_SetLogged", 34 }, + { "AT_SetNotNull", 7 }, + { "AT_SetOptions", 11 }, + { "AT_SetRelOptions", 38 }, + { "AT_SetStatistics", 10 }, + { "AT_SetStorage", 13 }, + { "AT_SetTableSpace", 37 }, + { "AT_SetUnLogged", 35 }, + { "AT_ValidateConstraint", 23 }, + { "AT_ValidateConstraintRecurse", 24 }, +}; +const ProtobufCEnumDescriptor pg_query__alter_table_type__descriptor = +{ + PROTOBUF_C__ENUM_DESCRIPTOR_MAGIC, + "pg_query.AlterTableType", + "AlterTableType", + "PgQuery__AlterTableType", + "pg_query", + 68, + pg_query__alter_table_type__enum_values_by_number, + 68, + pg_query__alter_table_type__enum_values_by_name, + 1, + pg_query__alter_table_type__value_ranges, + NULL,NULL,NULL,NULL /* reserved[1234] */ +}; +static const ProtobufCEnumValue pg_query__grant_target_type__enum_values_by_number[4] = +{ + { "GRANT_TARGET_TYPE_UNDEFINED", "PG_QUERY__GRANT_TARGET_TYPE__GRANT_TARGET_TYPE_UNDEFINED", 0 }, + { "ACL_TARGET_OBJECT", "PG_QUERY__GRANT_TARGET_TYPE__ACL_TARGET_OBJECT", 1 }, + { "ACL_TARGET_ALL_IN_SCHEMA", "PG_QUERY__GRANT_TARGET_TYPE__ACL_TARGET_ALL_IN_SCHEMA", 2 }, + { "ACL_TARGET_DEFAULTS", "PG_QUERY__GRANT_TARGET_TYPE__ACL_TARGET_DEFAULTS", 3 }, +}; +static const ProtobufCIntRange pg_query__grant_target_type__value_ranges[] = { +{0, 0},{0, 4} +}; +static const ProtobufCEnumValueIndex pg_query__grant_target_type__enum_values_by_name[4] = +{ + { "ACL_TARGET_ALL_IN_SCHEMA", 2 }, + { "ACL_TARGET_DEFAULTS", 3 }, + { "ACL_TARGET_OBJECT", 1 }, + { "GRANT_TARGET_TYPE_UNDEFINED", 0 }, +}; +const ProtobufCEnumDescriptor pg_query__grant_target_type__descriptor = +{ + PROTOBUF_C__ENUM_DESCRIPTOR_MAGIC, + "pg_query.GrantTargetType", + "GrantTargetType", + "PgQuery__GrantTargetType", + "pg_query", + 4, + pg_query__grant_target_type__enum_values_by_number, + 4, + pg_query__grant_target_type__enum_values_by_name, + 1, + pg_query__grant_target_type__value_ranges, + NULL,NULL,NULL,NULL /* reserved[1234] */ +}; +static const ProtobufCEnumValue pg_query__variable_set_kind__enum_values_by_number[7] = +{ + { "VARIABLE_SET_KIND_UNDEFINED", "PG_QUERY__VARIABLE_SET_KIND__VARIABLE_SET_KIND_UNDEFINED", 0 }, + { "VAR_SET_VALUE", "PG_QUERY__VARIABLE_SET_KIND__VAR_SET_VALUE", 1 }, + { "VAR_SET_DEFAULT", "PG_QUERY__VARIABLE_SET_KIND__VAR_SET_DEFAULT", 2 }, + { "VAR_SET_CURRENT", "PG_QUERY__VARIABLE_SET_KIND__VAR_SET_CURRENT", 3 }, + { "VAR_SET_MULTI", "PG_QUERY__VARIABLE_SET_KIND__VAR_SET_MULTI", 4 }, + { "VAR_RESET", "PG_QUERY__VARIABLE_SET_KIND__VAR_RESET", 5 }, + { "VAR_RESET_ALL", "PG_QUERY__VARIABLE_SET_KIND__VAR_RESET_ALL", 6 }, +}; +static const ProtobufCIntRange pg_query__variable_set_kind__value_ranges[] = { +{0, 0},{0, 7} +}; +static const ProtobufCEnumValueIndex pg_query__variable_set_kind__enum_values_by_name[7] = +{ + { "VARIABLE_SET_KIND_UNDEFINED", 0 }, + { "VAR_RESET", 5 }, + { "VAR_RESET_ALL", 6 }, + { "VAR_SET_CURRENT", 3 }, + { "VAR_SET_DEFAULT", 2 }, + { "VAR_SET_MULTI", 4 }, + { "VAR_SET_VALUE", 1 }, +}; +const ProtobufCEnumDescriptor pg_query__variable_set_kind__descriptor = +{ + PROTOBUF_C__ENUM_DESCRIPTOR_MAGIC, + "pg_query.VariableSetKind", + "VariableSetKind", + "PgQuery__VariableSetKind", + "pg_query", + 7, + pg_query__variable_set_kind__enum_values_by_number, + 7, + pg_query__variable_set_kind__enum_values_by_name, + 1, + pg_query__variable_set_kind__value_ranges, + NULL,NULL,NULL,NULL /* reserved[1234] */ +}; +static const ProtobufCEnumValue pg_query__constr_type__enum_values_by_number[15] = +{ + { "CONSTR_TYPE_UNDEFINED", "PG_QUERY__CONSTR_TYPE__CONSTR_TYPE_UNDEFINED", 0 }, + { "CONSTR_NULL", "PG_QUERY__CONSTR_TYPE__CONSTR_NULL", 1 }, + { "CONSTR_NOTNULL", "PG_QUERY__CONSTR_TYPE__CONSTR_NOTNULL", 2 }, + { "CONSTR_DEFAULT", "PG_QUERY__CONSTR_TYPE__CONSTR_DEFAULT", 3 }, + { "CONSTR_IDENTITY", "PG_QUERY__CONSTR_TYPE__CONSTR_IDENTITY", 4 }, + { "CONSTR_GENERATED", "PG_QUERY__CONSTR_TYPE__CONSTR_GENERATED", 5 }, + { "CONSTR_CHECK", "PG_QUERY__CONSTR_TYPE__CONSTR_CHECK", 6 }, + { "CONSTR_PRIMARY", "PG_QUERY__CONSTR_TYPE__CONSTR_PRIMARY", 7 }, + { "CONSTR_UNIQUE", "PG_QUERY__CONSTR_TYPE__CONSTR_UNIQUE", 8 }, + { "CONSTR_EXCLUSION", "PG_QUERY__CONSTR_TYPE__CONSTR_EXCLUSION", 9 }, + { "CONSTR_FOREIGN", "PG_QUERY__CONSTR_TYPE__CONSTR_FOREIGN", 10 }, + { "CONSTR_ATTR_DEFERRABLE", "PG_QUERY__CONSTR_TYPE__CONSTR_ATTR_DEFERRABLE", 11 }, + { "CONSTR_ATTR_NOT_DEFERRABLE", "PG_QUERY__CONSTR_TYPE__CONSTR_ATTR_NOT_DEFERRABLE", 12 }, + { "CONSTR_ATTR_DEFERRED", "PG_QUERY__CONSTR_TYPE__CONSTR_ATTR_DEFERRED", 13 }, + { "CONSTR_ATTR_IMMEDIATE", "PG_QUERY__CONSTR_TYPE__CONSTR_ATTR_IMMEDIATE", 14 }, +}; +static const ProtobufCIntRange pg_query__constr_type__value_ranges[] = { +{0, 0},{0, 15} +}; +static const ProtobufCEnumValueIndex pg_query__constr_type__enum_values_by_name[15] = +{ + { "CONSTR_ATTR_DEFERRABLE", 11 }, + { "CONSTR_ATTR_DEFERRED", 13 }, + { "CONSTR_ATTR_IMMEDIATE", 14 }, + { "CONSTR_ATTR_NOT_DEFERRABLE", 12 }, + { "CONSTR_CHECK", 6 }, + { "CONSTR_DEFAULT", 3 }, + { "CONSTR_EXCLUSION", 9 }, + { "CONSTR_FOREIGN", 10 }, + { "CONSTR_GENERATED", 5 }, + { "CONSTR_IDENTITY", 4 }, + { "CONSTR_NOTNULL", 2 }, + { "CONSTR_NULL", 1 }, + { "CONSTR_PRIMARY", 7 }, + { "CONSTR_TYPE_UNDEFINED", 0 }, + { "CONSTR_UNIQUE", 8 }, +}; +const ProtobufCEnumDescriptor pg_query__constr_type__descriptor = +{ + PROTOBUF_C__ENUM_DESCRIPTOR_MAGIC, + "pg_query.ConstrType", + "ConstrType", + "PgQuery__ConstrType", + "pg_query", + 15, + pg_query__constr_type__enum_values_by_number, + 15, + pg_query__constr_type__enum_values_by_name, + 1, + pg_query__constr_type__value_ranges, + NULL,NULL,NULL,NULL /* reserved[1234] */ +}; +static const ProtobufCEnumValue pg_query__import_foreign_schema_type__enum_values_by_number[4] = +{ + { "IMPORT_FOREIGN_SCHEMA_TYPE_UNDEFINED", "PG_QUERY__IMPORT_FOREIGN_SCHEMA_TYPE__IMPORT_FOREIGN_SCHEMA_TYPE_UNDEFINED", 0 }, + { "FDW_IMPORT_SCHEMA_ALL", "PG_QUERY__IMPORT_FOREIGN_SCHEMA_TYPE__FDW_IMPORT_SCHEMA_ALL", 1 }, + { "FDW_IMPORT_SCHEMA_LIMIT_TO", "PG_QUERY__IMPORT_FOREIGN_SCHEMA_TYPE__FDW_IMPORT_SCHEMA_LIMIT_TO", 2 }, + { "FDW_IMPORT_SCHEMA_EXCEPT", "PG_QUERY__IMPORT_FOREIGN_SCHEMA_TYPE__FDW_IMPORT_SCHEMA_EXCEPT", 3 }, +}; +static const ProtobufCIntRange pg_query__import_foreign_schema_type__value_ranges[] = { +{0, 0},{0, 4} +}; +static const ProtobufCEnumValueIndex pg_query__import_foreign_schema_type__enum_values_by_name[4] = +{ + { "FDW_IMPORT_SCHEMA_ALL", 1 }, + { "FDW_IMPORT_SCHEMA_EXCEPT", 3 }, + { "FDW_IMPORT_SCHEMA_LIMIT_TO", 2 }, + { "IMPORT_FOREIGN_SCHEMA_TYPE_UNDEFINED", 0 }, +}; +const ProtobufCEnumDescriptor pg_query__import_foreign_schema_type__descriptor = +{ + PROTOBUF_C__ENUM_DESCRIPTOR_MAGIC, + "pg_query.ImportForeignSchemaType", + "ImportForeignSchemaType", + "PgQuery__ImportForeignSchemaType", + "pg_query", + 4, + pg_query__import_foreign_schema_type__enum_values_by_number, + 4, + pg_query__import_foreign_schema_type__enum_values_by_name, + 1, + pg_query__import_foreign_schema_type__value_ranges, + NULL,NULL,NULL,NULL /* reserved[1234] */ +}; +static const ProtobufCEnumValue pg_query__role_stmt_type__enum_values_by_number[4] = +{ + { "ROLE_STMT_TYPE_UNDEFINED", "PG_QUERY__ROLE_STMT_TYPE__ROLE_STMT_TYPE_UNDEFINED", 0 }, + { "ROLESTMT_ROLE", "PG_QUERY__ROLE_STMT_TYPE__ROLESTMT_ROLE", 1 }, + { "ROLESTMT_USER", "PG_QUERY__ROLE_STMT_TYPE__ROLESTMT_USER", 2 }, + { "ROLESTMT_GROUP", "PG_QUERY__ROLE_STMT_TYPE__ROLESTMT_GROUP", 3 }, +}; +static const ProtobufCIntRange pg_query__role_stmt_type__value_ranges[] = { +{0, 0},{0, 4} +}; +static const ProtobufCEnumValueIndex pg_query__role_stmt_type__enum_values_by_name[4] = +{ + { "ROLESTMT_GROUP", 3 }, + { "ROLESTMT_ROLE", 1 }, + { "ROLESTMT_USER", 2 }, + { "ROLE_STMT_TYPE_UNDEFINED", 0 }, +}; +const ProtobufCEnumDescriptor pg_query__role_stmt_type__descriptor = +{ + PROTOBUF_C__ENUM_DESCRIPTOR_MAGIC, + "pg_query.RoleStmtType", + "RoleStmtType", + "PgQuery__RoleStmtType", + "pg_query", + 4, + pg_query__role_stmt_type__enum_values_by_number, + 4, + pg_query__role_stmt_type__enum_values_by_name, + 1, + pg_query__role_stmt_type__value_ranges, + NULL,NULL,NULL,NULL /* reserved[1234] */ +}; +static const ProtobufCEnumValue pg_query__fetch_direction__enum_values_by_number[5] = +{ + { "FETCH_DIRECTION_UNDEFINED", "PG_QUERY__FETCH_DIRECTION__FETCH_DIRECTION_UNDEFINED", 0 }, + { "FETCH_FORWARD", "PG_QUERY__FETCH_DIRECTION__FETCH_FORWARD", 1 }, + { "FETCH_BACKWARD", "PG_QUERY__FETCH_DIRECTION__FETCH_BACKWARD", 2 }, + { "FETCH_ABSOLUTE", "PG_QUERY__FETCH_DIRECTION__FETCH_ABSOLUTE", 3 }, + { "FETCH_RELATIVE", "PG_QUERY__FETCH_DIRECTION__FETCH_RELATIVE", 4 }, +}; +static const ProtobufCIntRange pg_query__fetch_direction__value_ranges[] = { +{0, 0},{0, 5} +}; +static const ProtobufCEnumValueIndex pg_query__fetch_direction__enum_values_by_name[5] = +{ + { "FETCH_ABSOLUTE", 3 }, + { "FETCH_BACKWARD", 2 }, + { "FETCH_DIRECTION_UNDEFINED", 0 }, + { "FETCH_FORWARD", 1 }, + { "FETCH_RELATIVE", 4 }, +}; +const ProtobufCEnumDescriptor pg_query__fetch_direction__descriptor = +{ + PROTOBUF_C__ENUM_DESCRIPTOR_MAGIC, + "pg_query.FetchDirection", + "FetchDirection", + "PgQuery__FetchDirection", + "pg_query", + 5, + pg_query__fetch_direction__enum_values_by_number, + 5, + pg_query__fetch_direction__enum_values_by_name, + 1, + pg_query__fetch_direction__value_ranges, + NULL,NULL,NULL,NULL /* reserved[1234] */ +}; +static const ProtobufCEnumValue pg_query__function_parameter_mode__enum_values_by_number[6] = +{ + { "FUNCTION_PARAMETER_MODE_UNDEFINED", "PG_QUERY__FUNCTION_PARAMETER_MODE__FUNCTION_PARAMETER_MODE_UNDEFINED", 0 }, + { "FUNC_PARAM_IN", "PG_QUERY__FUNCTION_PARAMETER_MODE__FUNC_PARAM_IN", 1 }, + { "FUNC_PARAM_OUT", "PG_QUERY__FUNCTION_PARAMETER_MODE__FUNC_PARAM_OUT", 2 }, + { "FUNC_PARAM_INOUT", "PG_QUERY__FUNCTION_PARAMETER_MODE__FUNC_PARAM_INOUT", 3 }, + { "FUNC_PARAM_VARIADIC", "PG_QUERY__FUNCTION_PARAMETER_MODE__FUNC_PARAM_VARIADIC", 4 }, + { "FUNC_PARAM_TABLE", "PG_QUERY__FUNCTION_PARAMETER_MODE__FUNC_PARAM_TABLE", 5 }, +}; +static const ProtobufCIntRange pg_query__function_parameter_mode__value_ranges[] = { +{0, 0},{0, 6} +}; +static const ProtobufCEnumValueIndex pg_query__function_parameter_mode__enum_values_by_name[6] = +{ + { "FUNCTION_PARAMETER_MODE_UNDEFINED", 0 }, + { "FUNC_PARAM_IN", 1 }, + { "FUNC_PARAM_INOUT", 3 }, + { "FUNC_PARAM_OUT", 2 }, + { "FUNC_PARAM_TABLE", 5 }, + { "FUNC_PARAM_VARIADIC", 4 }, +}; +const ProtobufCEnumDescriptor pg_query__function_parameter_mode__descriptor = +{ + PROTOBUF_C__ENUM_DESCRIPTOR_MAGIC, + "pg_query.FunctionParameterMode", + "FunctionParameterMode", + "PgQuery__FunctionParameterMode", + "pg_query", + 6, + pg_query__function_parameter_mode__enum_values_by_number, + 6, + pg_query__function_parameter_mode__enum_values_by_name, + 1, + pg_query__function_parameter_mode__value_ranges, + NULL,NULL,NULL,NULL /* reserved[1234] */ +}; +static const ProtobufCEnumValue pg_query__transaction_stmt_kind__enum_values_by_number[11] = +{ + { "TRANSACTION_STMT_KIND_UNDEFINED", "PG_QUERY__TRANSACTION_STMT_KIND__TRANSACTION_STMT_KIND_UNDEFINED", 0 }, + { "TRANS_STMT_BEGIN", "PG_QUERY__TRANSACTION_STMT_KIND__TRANS_STMT_BEGIN", 1 }, + { "TRANS_STMT_START", "PG_QUERY__TRANSACTION_STMT_KIND__TRANS_STMT_START", 2 }, + { "TRANS_STMT_COMMIT", "PG_QUERY__TRANSACTION_STMT_KIND__TRANS_STMT_COMMIT", 3 }, + { "TRANS_STMT_ROLLBACK", "PG_QUERY__TRANSACTION_STMT_KIND__TRANS_STMT_ROLLBACK", 4 }, + { "TRANS_STMT_SAVEPOINT", "PG_QUERY__TRANSACTION_STMT_KIND__TRANS_STMT_SAVEPOINT", 5 }, + { "TRANS_STMT_RELEASE", "PG_QUERY__TRANSACTION_STMT_KIND__TRANS_STMT_RELEASE", 6 }, + { "TRANS_STMT_ROLLBACK_TO", "PG_QUERY__TRANSACTION_STMT_KIND__TRANS_STMT_ROLLBACK_TO", 7 }, + { "TRANS_STMT_PREPARE", "PG_QUERY__TRANSACTION_STMT_KIND__TRANS_STMT_PREPARE", 8 }, + { "TRANS_STMT_COMMIT_PREPARED", "PG_QUERY__TRANSACTION_STMT_KIND__TRANS_STMT_COMMIT_PREPARED", 9 }, + { "TRANS_STMT_ROLLBACK_PREPARED", "PG_QUERY__TRANSACTION_STMT_KIND__TRANS_STMT_ROLLBACK_PREPARED", 10 }, +}; +static const ProtobufCIntRange pg_query__transaction_stmt_kind__value_ranges[] = { +{0, 0},{0, 11} +}; +static const ProtobufCEnumValueIndex pg_query__transaction_stmt_kind__enum_values_by_name[11] = +{ + { "TRANSACTION_STMT_KIND_UNDEFINED", 0 }, + { "TRANS_STMT_BEGIN", 1 }, + { "TRANS_STMT_COMMIT", 3 }, + { "TRANS_STMT_COMMIT_PREPARED", 9 }, + { "TRANS_STMT_PREPARE", 8 }, + { "TRANS_STMT_RELEASE", 6 }, + { "TRANS_STMT_ROLLBACK", 4 }, + { "TRANS_STMT_ROLLBACK_PREPARED", 10 }, + { "TRANS_STMT_ROLLBACK_TO", 7 }, + { "TRANS_STMT_SAVEPOINT", 5 }, + { "TRANS_STMT_START", 2 }, +}; +const ProtobufCEnumDescriptor pg_query__transaction_stmt_kind__descriptor = +{ + PROTOBUF_C__ENUM_DESCRIPTOR_MAGIC, + "pg_query.TransactionStmtKind", + "TransactionStmtKind", + "PgQuery__TransactionStmtKind", + "pg_query", + 11, + pg_query__transaction_stmt_kind__enum_values_by_number, + 11, + pg_query__transaction_stmt_kind__enum_values_by_name, + 1, + pg_query__transaction_stmt_kind__value_ranges, + NULL,NULL,NULL,NULL /* reserved[1234] */ +}; +static const ProtobufCEnumValue pg_query__view_check_option__enum_values_by_number[4] = +{ + { "VIEW_CHECK_OPTION_UNDEFINED", "PG_QUERY__VIEW_CHECK_OPTION__VIEW_CHECK_OPTION_UNDEFINED", 0 }, + { "NO_CHECK_OPTION", "PG_QUERY__VIEW_CHECK_OPTION__NO_CHECK_OPTION", 1 }, + { "LOCAL_CHECK_OPTION", "PG_QUERY__VIEW_CHECK_OPTION__LOCAL_CHECK_OPTION", 2 }, + { "CASCADED_CHECK_OPTION", "PG_QUERY__VIEW_CHECK_OPTION__CASCADED_CHECK_OPTION", 3 }, +}; +static const ProtobufCIntRange pg_query__view_check_option__value_ranges[] = { +{0, 0},{0, 4} +}; +static const ProtobufCEnumValueIndex pg_query__view_check_option__enum_values_by_name[4] = +{ + { "CASCADED_CHECK_OPTION", 3 }, + { "LOCAL_CHECK_OPTION", 2 }, + { "NO_CHECK_OPTION", 1 }, + { "VIEW_CHECK_OPTION_UNDEFINED", 0 }, +}; +const ProtobufCEnumDescriptor pg_query__view_check_option__descriptor = +{ + PROTOBUF_C__ENUM_DESCRIPTOR_MAGIC, + "pg_query.ViewCheckOption", + "ViewCheckOption", + "PgQuery__ViewCheckOption", + "pg_query", + 4, + pg_query__view_check_option__enum_values_by_number, + 4, + pg_query__view_check_option__enum_values_by_name, + 1, + pg_query__view_check_option__value_ranges, + NULL,NULL,NULL,NULL /* reserved[1234] */ +}; +static const ProtobufCEnumValue pg_query__cluster_option__enum_values_by_number[3] = +{ + { "CLUSTER_OPTION_UNDEFINED", "PG_QUERY__CLUSTER_OPTION__CLUSTER_OPTION_UNDEFINED", 0 }, + { "CLUOPT_RECHECK", "PG_QUERY__CLUSTER_OPTION__CLUOPT_RECHECK", 1 }, + { "CLUOPT_VERBOSE", "PG_QUERY__CLUSTER_OPTION__CLUOPT_VERBOSE", 2 }, +}; +static const ProtobufCIntRange pg_query__cluster_option__value_ranges[] = { +{0, 0},{0, 3} +}; +static const ProtobufCEnumValueIndex pg_query__cluster_option__enum_values_by_name[3] = +{ + { "CLUOPT_RECHECK", 1 }, + { "CLUOPT_VERBOSE", 2 }, + { "CLUSTER_OPTION_UNDEFINED", 0 }, +}; +const ProtobufCEnumDescriptor pg_query__cluster_option__descriptor = +{ + PROTOBUF_C__ENUM_DESCRIPTOR_MAGIC, + "pg_query.ClusterOption", + "ClusterOption", + "PgQuery__ClusterOption", + "pg_query", + 3, + pg_query__cluster_option__enum_values_by_number, + 3, + pg_query__cluster_option__enum_values_by_name, + 1, + pg_query__cluster_option__value_ranges, + NULL,NULL,NULL,NULL /* reserved[1234] */ +}; +static const ProtobufCEnumValue pg_query__discard_mode__enum_values_by_number[5] = +{ + { "DISCARD_MODE_UNDEFINED", "PG_QUERY__DISCARD_MODE__DISCARD_MODE_UNDEFINED", 0 }, + { "DISCARD_ALL", "PG_QUERY__DISCARD_MODE__DISCARD_ALL", 1 }, + { "DISCARD_PLANS", "PG_QUERY__DISCARD_MODE__DISCARD_PLANS", 2 }, + { "DISCARD_SEQUENCES", "PG_QUERY__DISCARD_MODE__DISCARD_SEQUENCES", 3 }, + { "DISCARD_TEMP", "PG_QUERY__DISCARD_MODE__DISCARD_TEMP", 4 }, +}; +static const ProtobufCIntRange pg_query__discard_mode__value_ranges[] = { +{0, 0},{0, 5} +}; +static const ProtobufCEnumValueIndex pg_query__discard_mode__enum_values_by_name[5] = +{ + { "DISCARD_ALL", 1 }, + { "DISCARD_MODE_UNDEFINED", 0 }, + { "DISCARD_PLANS", 2 }, + { "DISCARD_SEQUENCES", 3 }, + { "DISCARD_TEMP", 4 }, +}; +const ProtobufCEnumDescriptor pg_query__discard_mode__descriptor = +{ + PROTOBUF_C__ENUM_DESCRIPTOR_MAGIC, + "pg_query.DiscardMode", + "DiscardMode", + "PgQuery__DiscardMode", + "pg_query", + 5, + pg_query__discard_mode__enum_values_by_number, + 5, + pg_query__discard_mode__enum_values_by_name, + 1, + pg_query__discard_mode__value_ranges, + NULL,NULL,NULL,NULL /* reserved[1234] */ +}; +static const ProtobufCEnumValue pg_query__reindex_object_type__enum_values_by_number[6] = +{ + { "REINDEX_OBJECT_TYPE_UNDEFINED", "PG_QUERY__REINDEX_OBJECT_TYPE__REINDEX_OBJECT_TYPE_UNDEFINED", 0 }, + { "REINDEX_OBJECT_INDEX", "PG_QUERY__REINDEX_OBJECT_TYPE__REINDEX_OBJECT_INDEX", 1 }, + { "REINDEX_OBJECT_TABLE", "PG_QUERY__REINDEX_OBJECT_TYPE__REINDEX_OBJECT_TABLE", 2 }, + { "REINDEX_OBJECT_SCHEMA", "PG_QUERY__REINDEX_OBJECT_TYPE__REINDEX_OBJECT_SCHEMA", 3 }, + { "REINDEX_OBJECT_SYSTEM", "PG_QUERY__REINDEX_OBJECT_TYPE__REINDEX_OBJECT_SYSTEM", 4 }, + { "REINDEX_OBJECT_DATABASE", "PG_QUERY__REINDEX_OBJECT_TYPE__REINDEX_OBJECT_DATABASE", 5 }, +}; +static const ProtobufCIntRange pg_query__reindex_object_type__value_ranges[] = { +{0, 0},{0, 6} +}; +static const ProtobufCEnumValueIndex pg_query__reindex_object_type__enum_values_by_name[6] = +{ + { "REINDEX_OBJECT_DATABASE", 5 }, + { "REINDEX_OBJECT_INDEX", 1 }, + { "REINDEX_OBJECT_SCHEMA", 3 }, + { "REINDEX_OBJECT_SYSTEM", 4 }, + { "REINDEX_OBJECT_TABLE", 2 }, + { "REINDEX_OBJECT_TYPE_UNDEFINED", 0 }, +}; +const ProtobufCEnumDescriptor pg_query__reindex_object_type__descriptor = +{ + PROTOBUF_C__ENUM_DESCRIPTOR_MAGIC, + "pg_query.ReindexObjectType", + "ReindexObjectType", + "PgQuery__ReindexObjectType", + "pg_query", + 6, + pg_query__reindex_object_type__enum_values_by_number, + 6, + pg_query__reindex_object_type__enum_values_by_name, + 1, + pg_query__reindex_object_type__value_ranges, + NULL,NULL,NULL,NULL /* reserved[1234] */ +}; +static const ProtobufCEnumValue pg_query__alter_tsconfig_type__enum_values_by_number[6] = +{ + { "ALTER_TSCONFIG_TYPE_UNDEFINED", "PG_QUERY__ALTER_TSCONFIG_TYPE__ALTER_TSCONFIG_TYPE_UNDEFINED", 0 }, + { "ALTER_TSCONFIG_ADD_MAPPING", "PG_QUERY__ALTER_TSCONFIG_TYPE__ALTER_TSCONFIG_ADD_MAPPING", 1 }, + { "ALTER_TSCONFIG_ALTER_MAPPING_FOR_TOKEN", "PG_QUERY__ALTER_TSCONFIG_TYPE__ALTER_TSCONFIG_ALTER_MAPPING_FOR_TOKEN", 2 }, + { "ALTER_TSCONFIG_REPLACE_DICT", "PG_QUERY__ALTER_TSCONFIG_TYPE__ALTER_TSCONFIG_REPLACE_DICT", 3 }, + { "ALTER_TSCONFIG_REPLACE_DICT_FOR_TOKEN", "PG_QUERY__ALTER_TSCONFIG_TYPE__ALTER_TSCONFIG_REPLACE_DICT_FOR_TOKEN", 4 }, + { "ALTER_TSCONFIG_DROP_MAPPING", "PG_QUERY__ALTER_TSCONFIG_TYPE__ALTER_TSCONFIG_DROP_MAPPING", 5 }, +}; +static const ProtobufCIntRange pg_query__alter_tsconfig_type__value_ranges[] = { +{0, 0},{0, 6} +}; +static const ProtobufCEnumValueIndex pg_query__alter_tsconfig_type__enum_values_by_name[6] = +{ + { "ALTER_TSCONFIG_ADD_MAPPING", 1 }, + { "ALTER_TSCONFIG_ALTER_MAPPING_FOR_TOKEN", 2 }, + { "ALTER_TSCONFIG_DROP_MAPPING", 5 }, + { "ALTER_TSCONFIG_REPLACE_DICT", 3 }, + { "ALTER_TSCONFIG_REPLACE_DICT_FOR_TOKEN", 4 }, + { "ALTER_TSCONFIG_TYPE_UNDEFINED", 0 }, +}; +const ProtobufCEnumDescriptor pg_query__alter_tsconfig_type__descriptor = +{ + PROTOBUF_C__ENUM_DESCRIPTOR_MAGIC, + "pg_query.AlterTSConfigType", + "AlterTSConfigType", + "PgQuery__AlterTSConfigType", + "pg_query", + 6, + pg_query__alter_tsconfig_type__enum_values_by_number, + 6, + pg_query__alter_tsconfig_type__enum_values_by_name, + 1, + pg_query__alter_tsconfig_type__value_ranges, + NULL,NULL,NULL,NULL /* reserved[1234] */ +}; +static const ProtobufCEnumValue pg_query__alter_subscription_type__enum_values_by_number[6] = +{ + { "ALTER_SUBSCRIPTION_TYPE_UNDEFINED", "PG_QUERY__ALTER_SUBSCRIPTION_TYPE__ALTER_SUBSCRIPTION_TYPE_UNDEFINED", 0 }, + { "ALTER_SUBSCRIPTION_OPTIONS", "PG_QUERY__ALTER_SUBSCRIPTION_TYPE__ALTER_SUBSCRIPTION_OPTIONS", 1 }, + { "ALTER_SUBSCRIPTION_CONNECTION", "PG_QUERY__ALTER_SUBSCRIPTION_TYPE__ALTER_SUBSCRIPTION_CONNECTION", 2 }, + { "ALTER_SUBSCRIPTION_PUBLICATION", "PG_QUERY__ALTER_SUBSCRIPTION_TYPE__ALTER_SUBSCRIPTION_PUBLICATION", 3 }, + { "ALTER_SUBSCRIPTION_REFRESH", "PG_QUERY__ALTER_SUBSCRIPTION_TYPE__ALTER_SUBSCRIPTION_REFRESH", 4 }, + { "ALTER_SUBSCRIPTION_ENABLED", "PG_QUERY__ALTER_SUBSCRIPTION_TYPE__ALTER_SUBSCRIPTION_ENABLED", 5 }, +}; +static const ProtobufCIntRange pg_query__alter_subscription_type__value_ranges[] = { +{0, 0},{0, 6} +}; +static const ProtobufCEnumValueIndex pg_query__alter_subscription_type__enum_values_by_name[6] = +{ + { "ALTER_SUBSCRIPTION_CONNECTION", 2 }, + { "ALTER_SUBSCRIPTION_ENABLED", 5 }, + { "ALTER_SUBSCRIPTION_OPTIONS", 1 }, + { "ALTER_SUBSCRIPTION_PUBLICATION", 3 }, + { "ALTER_SUBSCRIPTION_REFRESH", 4 }, + { "ALTER_SUBSCRIPTION_TYPE_UNDEFINED", 0 }, +}; +const ProtobufCEnumDescriptor pg_query__alter_subscription_type__descriptor = +{ + PROTOBUF_C__ENUM_DESCRIPTOR_MAGIC, + "pg_query.AlterSubscriptionType", + "AlterSubscriptionType", + "PgQuery__AlterSubscriptionType", + "pg_query", + 6, + pg_query__alter_subscription_type__enum_values_by_number, + 6, + pg_query__alter_subscription_type__enum_values_by_name, + 1, + pg_query__alter_subscription_type__value_ranges, + NULL,NULL,NULL,NULL /* reserved[1234] */ +}; +static const ProtobufCEnumValue pg_query__on_commit_action__enum_values_by_number[5] = +{ + { "ON_COMMIT_ACTION_UNDEFINED", "PG_QUERY__ON_COMMIT_ACTION__ON_COMMIT_ACTION_UNDEFINED", 0 }, + { "ONCOMMIT_NOOP", "PG_QUERY__ON_COMMIT_ACTION__ONCOMMIT_NOOP", 1 }, + { "ONCOMMIT_PRESERVE_ROWS", "PG_QUERY__ON_COMMIT_ACTION__ONCOMMIT_PRESERVE_ROWS", 2 }, + { "ONCOMMIT_DELETE_ROWS", "PG_QUERY__ON_COMMIT_ACTION__ONCOMMIT_DELETE_ROWS", 3 }, + { "ONCOMMIT_DROP", "PG_QUERY__ON_COMMIT_ACTION__ONCOMMIT_DROP", 4 }, +}; +static const ProtobufCIntRange pg_query__on_commit_action__value_ranges[] = { +{0, 0},{0, 5} +}; +static const ProtobufCEnumValueIndex pg_query__on_commit_action__enum_values_by_name[5] = +{ + { "ONCOMMIT_DELETE_ROWS", 3 }, + { "ONCOMMIT_DROP", 4 }, + { "ONCOMMIT_NOOP", 1 }, + { "ONCOMMIT_PRESERVE_ROWS", 2 }, + { "ON_COMMIT_ACTION_UNDEFINED", 0 }, +}; +const ProtobufCEnumDescriptor pg_query__on_commit_action__descriptor = +{ + PROTOBUF_C__ENUM_DESCRIPTOR_MAGIC, + "pg_query.OnCommitAction", + "OnCommitAction", + "PgQuery__OnCommitAction", + "pg_query", + 5, + pg_query__on_commit_action__enum_values_by_number, + 5, + pg_query__on_commit_action__enum_values_by_name, + 1, + pg_query__on_commit_action__value_ranges, + NULL,NULL,NULL,NULL /* reserved[1234] */ +}; +static const ProtobufCEnumValue pg_query__param_kind__enum_values_by_number[5] = +{ + { "PARAM_KIND_UNDEFINED", "PG_QUERY__PARAM_KIND__PARAM_KIND_UNDEFINED", 0 }, + { "PARAM_EXTERN", "PG_QUERY__PARAM_KIND__PARAM_EXTERN", 1 }, + { "PARAM_EXEC", "PG_QUERY__PARAM_KIND__PARAM_EXEC", 2 }, + { "PARAM_SUBLINK", "PG_QUERY__PARAM_KIND__PARAM_SUBLINK", 3 }, + { "PARAM_MULTIEXPR", "PG_QUERY__PARAM_KIND__PARAM_MULTIEXPR", 4 }, +}; +static const ProtobufCIntRange pg_query__param_kind__value_ranges[] = { +{0, 0},{0, 5} +}; +static const ProtobufCEnumValueIndex pg_query__param_kind__enum_values_by_name[5] = +{ + { "PARAM_EXEC", 2 }, + { "PARAM_EXTERN", 1 }, + { "PARAM_KIND_UNDEFINED", 0 }, + { "PARAM_MULTIEXPR", 4 }, + { "PARAM_SUBLINK", 3 }, +}; +const ProtobufCEnumDescriptor pg_query__param_kind__descriptor = +{ + PROTOBUF_C__ENUM_DESCRIPTOR_MAGIC, + "pg_query.ParamKind", + "ParamKind", + "PgQuery__ParamKind", + "pg_query", + 5, + pg_query__param_kind__enum_values_by_number, + 5, + pg_query__param_kind__enum_values_by_name, + 1, + pg_query__param_kind__value_ranges, + NULL,NULL,NULL,NULL /* reserved[1234] */ +}; +static const ProtobufCEnumValue pg_query__coercion_context__enum_values_by_number[4] = +{ + { "COERCION_CONTEXT_UNDEFINED", "PG_QUERY__COERCION_CONTEXT__COERCION_CONTEXT_UNDEFINED", 0 }, + { "COERCION_IMPLICIT", "PG_QUERY__COERCION_CONTEXT__COERCION_IMPLICIT", 1 }, + { "COERCION_ASSIGNMENT", "PG_QUERY__COERCION_CONTEXT__COERCION_ASSIGNMENT", 2 }, + { "COERCION_EXPLICIT", "PG_QUERY__COERCION_CONTEXT__COERCION_EXPLICIT", 3 }, +}; +static const ProtobufCIntRange pg_query__coercion_context__value_ranges[] = { +{0, 0},{0, 4} +}; +static const ProtobufCEnumValueIndex pg_query__coercion_context__enum_values_by_name[4] = +{ + { "COERCION_ASSIGNMENT", 2 }, + { "COERCION_CONTEXT_UNDEFINED", 0 }, + { "COERCION_EXPLICIT", 3 }, + { "COERCION_IMPLICIT", 1 }, +}; +const ProtobufCEnumDescriptor pg_query__coercion_context__descriptor = +{ + PROTOBUF_C__ENUM_DESCRIPTOR_MAGIC, + "pg_query.CoercionContext", + "CoercionContext", + "PgQuery__CoercionContext", + "pg_query", + 4, + pg_query__coercion_context__enum_values_by_number, + 4, + pg_query__coercion_context__enum_values_by_name, + 1, + pg_query__coercion_context__value_ranges, + NULL,NULL,NULL,NULL /* reserved[1234] */ +}; +static const ProtobufCEnumValue pg_query__coercion_form__enum_values_by_number[4] = +{ + { "COERCION_FORM_UNDEFINED", "PG_QUERY__COERCION_FORM__COERCION_FORM_UNDEFINED", 0 }, + { "COERCE_EXPLICIT_CALL", "PG_QUERY__COERCION_FORM__COERCE_EXPLICIT_CALL", 1 }, + { "COERCE_EXPLICIT_CAST", "PG_QUERY__COERCION_FORM__COERCE_EXPLICIT_CAST", 2 }, + { "COERCE_IMPLICIT_CAST", "PG_QUERY__COERCION_FORM__COERCE_IMPLICIT_CAST", 3 }, +}; +static const ProtobufCIntRange pg_query__coercion_form__value_ranges[] = { +{0, 0},{0, 4} +}; +static const ProtobufCEnumValueIndex pg_query__coercion_form__enum_values_by_name[4] = +{ + { "COERCE_EXPLICIT_CALL", 1 }, + { "COERCE_EXPLICIT_CAST", 2 }, + { "COERCE_IMPLICIT_CAST", 3 }, + { "COERCION_FORM_UNDEFINED", 0 }, +}; +const ProtobufCEnumDescriptor pg_query__coercion_form__descriptor = +{ + PROTOBUF_C__ENUM_DESCRIPTOR_MAGIC, + "pg_query.CoercionForm", + "CoercionForm", + "PgQuery__CoercionForm", + "pg_query", + 4, + pg_query__coercion_form__enum_values_by_number, + 4, + pg_query__coercion_form__enum_values_by_name, + 1, + pg_query__coercion_form__value_ranges, + NULL,NULL,NULL,NULL /* reserved[1234] */ +}; +static const ProtobufCEnumValue pg_query__bool_expr_type__enum_values_by_number[4] = +{ + { "BOOL_EXPR_TYPE_UNDEFINED", "PG_QUERY__BOOL_EXPR_TYPE__BOOL_EXPR_TYPE_UNDEFINED", 0 }, + { "AND_EXPR", "PG_QUERY__BOOL_EXPR_TYPE__AND_EXPR", 1 }, + { "OR_EXPR", "PG_QUERY__BOOL_EXPR_TYPE__OR_EXPR", 2 }, + { "NOT_EXPR", "PG_QUERY__BOOL_EXPR_TYPE__NOT_EXPR", 3 }, +}; +static const ProtobufCIntRange pg_query__bool_expr_type__value_ranges[] = { +{0, 0},{0, 4} +}; +static const ProtobufCEnumValueIndex pg_query__bool_expr_type__enum_values_by_name[4] = +{ + { "AND_EXPR", 1 }, + { "BOOL_EXPR_TYPE_UNDEFINED", 0 }, + { "NOT_EXPR", 3 }, + { "OR_EXPR", 2 }, +}; +const ProtobufCEnumDescriptor pg_query__bool_expr_type__descriptor = +{ + PROTOBUF_C__ENUM_DESCRIPTOR_MAGIC, + "pg_query.BoolExprType", + "BoolExprType", + "PgQuery__BoolExprType", + "pg_query", + 4, + pg_query__bool_expr_type__enum_values_by_number, + 4, + pg_query__bool_expr_type__enum_values_by_name, + 1, + pg_query__bool_expr_type__value_ranges, + NULL,NULL,NULL,NULL /* reserved[1234] */ +}; +static const ProtobufCEnumValue pg_query__sub_link_type__enum_values_by_number[9] = +{ + { "SUB_LINK_TYPE_UNDEFINED", "PG_QUERY__SUB_LINK_TYPE__SUB_LINK_TYPE_UNDEFINED", 0 }, + { "EXISTS_SUBLINK", "PG_QUERY__SUB_LINK_TYPE__EXISTS_SUBLINK", 1 }, + { "ALL_SUBLINK", "PG_QUERY__SUB_LINK_TYPE__ALL_SUBLINK", 2 }, + { "ANY_SUBLINK", "PG_QUERY__SUB_LINK_TYPE__ANY_SUBLINK", 3 }, + { "ROWCOMPARE_SUBLINK", "PG_QUERY__SUB_LINK_TYPE__ROWCOMPARE_SUBLINK", 4 }, + { "EXPR_SUBLINK", "PG_QUERY__SUB_LINK_TYPE__EXPR_SUBLINK", 5 }, + { "MULTIEXPR_SUBLINK", "PG_QUERY__SUB_LINK_TYPE__MULTIEXPR_SUBLINK", 6 }, + { "ARRAY_SUBLINK", "PG_QUERY__SUB_LINK_TYPE__ARRAY_SUBLINK", 7 }, + { "CTE_SUBLINK", "PG_QUERY__SUB_LINK_TYPE__CTE_SUBLINK", 8 }, +}; +static const ProtobufCIntRange pg_query__sub_link_type__value_ranges[] = { +{0, 0},{0, 9} +}; +static const ProtobufCEnumValueIndex pg_query__sub_link_type__enum_values_by_name[9] = +{ + { "ALL_SUBLINK", 2 }, + { "ANY_SUBLINK", 3 }, + { "ARRAY_SUBLINK", 7 }, + { "CTE_SUBLINK", 8 }, + { "EXISTS_SUBLINK", 1 }, + { "EXPR_SUBLINK", 5 }, + { "MULTIEXPR_SUBLINK", 6 }, + { "ROWCOMPARE_SUBLINK", 4 }, + { "SUB_LINK_TYPE_UNDEFINED", 0 }, +}; +const ProtobufCEnumDescriptor pg_query__sub_link_type__descriptor = +{ + PROTOBUF_C__ENUM_DESCRIPTOR_MAGIC, + "pg_query.SubLinkType", + "SubLinkType", + "PgQuery__SubLinkType", + "pg_query", + 9, + pg_query__sub_link_type__enum_values_by_number, + 9, + pg_query__sub_link_type__enum_values_by_name, + 1, + pg_query__sub_link_type__value_ranges, + NULL,NULL,NULL,NULL /* reserved[1234] */ +}; +static const ProtobufCEnumValue pg_query__row_compare_type__enum_values_by_number[7] = +{ + { "ROW_COMPARE_TYPE_UNDEFINED", "PG_QUERY__ROW_COMPARE_TYPE__ROW_COMPARE_TYPE_UNDEFINED", 0 }, + { "ROWCOMPARE_LT", "PG_QUERY__ROW_COMPARE_TYPE__ROWCOMPARE_LT", 1 }, + { "ROWCOMPARE_LE", "PG_QUERY__ROW_COMPARE_TYPE__ROWCOMPARE_LE", 2 }, + { "ROWCOMPARE_EQ", "PG_QUERY__ROW_COMPARE_TYPE__ROWCOMPARE_EQ", 3 }, + { "ROWCOMPARE_GE", "PG_QUERY__ROW_COMPARE_TYPE__ROWCOMPARE_GE", 4 }, + { "ROWCOMPARE_GT", "PG_QUERY__ROW_COMPARE_TYPE__ROWCOMPARE_GT", 5 }, + { "ROWCOMPARE_NE", "PG_QUERY__ROW_COMPARE_TYPE__ROWCOMPARE_NE", 6 }, +}; +static const ProtobufCIntRange pg_query__row_compare_type__value_ranges[] = { +{0, 0},{0, 7} +}; +static const ProtobufCEnumValueIndex pg_query__row_compare_type__enum_values_by_name[7] = +{ + { "ROWCOMPARE_EQ", 3 }, + { "ROWCOMPARE_GE", 4 }, + { "ROWCOMPARE_GT", 5 }, + { "ROWCOMPARE_LE", 2 }, + { "ROWCOMPARE_LT", 1 }, + { "ROWCOMPARE_NE", 6 }, + { "ROW_COMPARE_TYPE_UNDEFINED", 0 }, +}; +const ProtobufCEnumDescriptor pg_query__row_compare_type__descriptor = +{ + PROTOBUF_C__ENUM_DESCRIPTOR_MAGIC, + "pg_query.RowCompareType", + "RowCompareType", + "PgQuery__RowCompareType", + "pg_query", + 7, + pg_query__row_compare_type__enum_values_by_number, + 7, + pg_query__row_compare_type__enum_values_by_name, + 1, + pg_query__row_compare_type__value_ranges, + NULL,NULL,NULL,NULL /* reserved[1234] */ +}; +static const ProtobufCEnumValue pg_query__min_max_op__enum_values_by_number[3] = +{ + { "MIN_MAX_OP_UNDEFINED", "PG_QUERY__MIN_MAX_OP__MIN_MAX_OP_UNDEFINED", 0 }, + { "IS_GREATEST", "PG_QUERY__MIN_MAX_OP__IS_GREATEST", 1 }, + { "IS_LEAST", "PG_QUERY__MIN_MAX_OP__IS_LEAST", 2 }, +}; +static const ProtobufCIntRange pg_query__min_max_op__value_ranges[] = { +{0, 0},{0, 3} +}; +static const ProtobufCEnumValueIndex pg_query__min_max_op__enum_values_by_name[3] = +{ + { "IS_GREATEST", 1 }, + { "IS_LEAST", 2 }, + { "MIN_MAX_OP_UNDEFINED", 0 }, +}; +const ProtobufCEnumDescriptor pg_query__min_max_op__descriptor = +{ + PROTOBUF_C__ENUM_DESCRIPTOR_MAGIC, + "pg_query.MinMaxOp", + "MinMaxOp", + "PgQuery__MinMaxOp", + "pg_query", + 3, + pg_query__min_max_op__enum_values_by_number, + 3, + pg_query__min_max_op__enum_values_by_name, + 1, + pg_query__min_max_op__value_ranges, + NULL,NULL,NULL,NULL /* reserved[1234] */ +}; +static const ProtobufCEnumValue pg_query__sqlvalue_function_op__enum_values_by_number[16] = +{ + { "SQLVALUE_FUNCTION_OP_UNDEFINED", "PG_QUERY__SQLVALUE_FUNCTION_OP__SQLVALUE_FUNCTION_OP_UNDEFINED", 0 }, + { "SVFOP_CURRENT_DATE", "PG_QUERY__SQLVALUE_FUNCTION_OP__SVFOP_CURRENT_DATE", 1 }, + { "SVFOP_CURRENT_TIME", "PG_QUERY__SQLVALUE_FUNCTION_OP__SVFOP_CURRENT_TIME", 2 }, + { "SVFOP_CURRENT_TIME_N", "PG_QUERY__SQLVALUE_FUNCTION_OP__SVFOP_CURRENT_TIME_N", 3 }, + { "SVFOP_CURRENT_TIMESTAMP", "PG_QUERY__SQLVALUE_FUNCTION_OP__SVFOP_CURRENT_TIMESTAMP", 4 }, + { "SVFOP_CURRENT_TIMESTAMP_N", "PG_QUERY__SQLVALUE_FUNCTION_OP__SVFOP_CURRENT_TIMESTAMP_N", 5 }, + { "SVFOP_LOCALTIME", "PG_QUERY__SQLVALUE_FUNCTION_OP__SVFOP_LOCALTIME", 6 }, + { "SVFOP_LOCALTIME_N", "PG_QUERY__SQLVALUE_FUNCTION_OP__SVFOP_LOCALTIME_N", 7 }, + { "SVFOP_LOCALTIMESTAMP", "PG_QUERY__SQLVALUE_FUNCTION_OP__SVFOP_LOCALTIMESTAMP", 8 }, + { "SVFOP_LOCALTIMESTAMP_N", "PG_QUERY__SQLVALUE_FUNCTION_OP__SVFOP_LOCALTIMESTAMP_N", 9 }, + { "SVFOP_CURRENT_ROLE", "PG_QUERY__SQLVALUE_FUNCTION_OP__SVFOP_CURRENT_ROLE", 10 }, + { "SVFOP_CURRENT_USER", "PG_QUERY__SQLVALUE_FUNCTION_OP__SVFOP_CURRENT_USER", 11 }, + { "SVFOP_USER", "PG_QUERY__SQLVALUE_FUNCTION_OP__SVFOP_USER", 12 }, + { "SVFOP_SESSION_USER", "PG_QUERY__SQLVALUE_FUNCTION_OP__SVFOP_SESSION_USER", 13 }, + { "SVFOP_CURRENT_CATALOG", "PG_QUERY__SQLVALUE_FUNCTION_OP__SVFOP_CURRENT_CATALOG", 14 }, + { "SVFOP_CURRENT_SCHEMA", "PG_QUERY__SQLVALUE_FUNCTION_OP__SVFOP_CURRENT_SCHEMA", 15 }, +}; +static const ProtobufCIntRange pg_query__sqlvalue_function_op__value_ranges[] = { +{0, 0},{0, 16} +}; +static const ProtobufCEnumValueIndex pg_query__sqlvalue_function_op__enum_values_by_name[16] = +{ + { "SQLVALUE_FUNCTION_OP_UNDEFINED", 0 }, + { "SVFOP_CURRENT_CATALOG", 14 }, + { "SVFOP_CURRENT_DATE", 1 }, + { "SVFOP_CURRENT_ROLE", 10 }, + { "SVFOP_CURRENT_SCHEMA", 15 }, + { "SVFOP_CURRENT_TIME", 2 }, + { "SVFOP_CURRENT_TIMESTAMP", 4 }, + { "SVFOP_CURRENT_TIMESTAMP_N", 5 }, + { "SVFOP_CURRENT_TIME_N", 3 }, + { "SVFOP_CURRENT_USER", 11 }, + { "SVFOP_LOCALTIME", 6 }, + { "SVFOP_LOCALTIMESTAMP", 8 }, + { "SVFOP_LOCALTIMESTAMP_N", 9 }, + { "SVFOP_LOCALTIME_N", 7 }, + { "SVFOP_SESSION_USER", 13 }, + { "SVFOP_USER", 12 }, +}; +const ProtobufCEnumDescriptor pg_query__sqlvalue_function_op__descriptor = +{ + PROTOBUF_C__ENUM_DESCRIPTOR_MAGIC, + "pg_query.SQLValueFunctionOp", + "SQLValueFunctionOp", + "PgQuery__SQLValueFunctionOp", + "pg_query", + 16, + pg_query__sqlvalue_function_op__enum_values_by_number, + 16, + pg_query__sqlvalue_function_op__enum_values_by_name, + 1, + pg_query__sqlvalue_function_op__value_ranges, + NULL,NULL,NULL,NULL /* reserved[1234] */ +}; +static const ProtobufCEnumValue pg_query__xml_expr_op__enum_values_by_number[9] = +{ + { "XML_EXPR_OP_UNDEFINED", "PG_QUERY__XML_EXPR_OP__XML_EXPR_OP_UNDEFINED", 0 }, + { "IS_XMLCONCAT", "PG_QUERY__XML_EXPR_OP__IS_XMLCONCAT", 1 }, + { "IS_XMLELEMENT", "PG_QUERY__XML_EXPR_OP__IS_XMLELEMENT", 2 }, + { "IS_XMLFOREST", "PG_QUERY__XML_EXPR_OP__IS_XMLFOREST", 3 }, + { "IS_XMLPARSE", "PG_QUERY__XML_EXPR_OP__IS_XMLPARSE", 4 }, + { "IS_XMLPI", "PG_QUERY__XML_EXPR_OP__IS_XMLPI", 5 }, + { "IS_XMLROOT", "PG_QUERY__XML_EXPR_OP__IS_XMLROOT", 6 }, + { "IS_XMLSERIALIZE", "PG_QUERY__XML_EXPR_OP__IS_XMLSERIALIZE", 7 }, + { "IS_DOCUMENT", "PG_QUERY__XML_EXPR_OP__IS_DOCUMENT", 8 }, +}; +static const ProtobufCIntRange pg_query__xml_expr_op__value_ranges[] = { +{0, 0},{0, 9} +}; +static const ProtobufCEnumValueIndex pg_query__xml_expr_op__enum_values_by_name[9] = +{ + { "IS_DOCUMENT", 8 }, + { "IS_XMLCONCAT", 1 }, + { "IS_XMLELEMENT", 2 }, + { "IS_XMLFOREST", 3 }, + { "IS_XMLPARSE", 4 }, + { "IS_XMLPI", 5 }, + { "IS_XMLROOT", 6 }, + { "IS_XMLSERIALIZE", 7 }, + { "XML_EXPR_OP_UNDEFINED", 0 }, +}; +const ProtobufCEnumDescriptor pg_query__xml_expr_op__descriptor = +{ + PROTOBUF_C__ENUM_DESCRIPTOR_MAGIC, + "pg_query.XmlExprOp", + "XmlExprOp", + "PgQuery__XmlExprOp", + "pg_query", + 9, + pg_query__xml_expr_op__enum_values_by_number, + 9, + pg_query__xml_expr_op__enum_values_by_name, + 1, + pg_query__xml_expr_op__value_ranges, + NULL,NULL,NULL,NULL /* reserved[1234] */ +}; +static const ProtobufCEnumValue pg_query__xml_option_type__enum_values_by_number[3] = +{ + { "XML_OPTION_TYPE_UNDEFINED", "PG_QUERY__XML_OPTION_TYPE__XML_OPTION_TYPE_UNDEFINED", 0 }, + { "XMLOPTION_DOCUMENT", "PG_QUERY__XML_OPTION_TYPE__XMLOPTION_DOCUMENT", 1 }, + { "XMLOPTION_CONTENT", "PG_QUERY__XML_OPTION_TYPE__XMLOPTION_CONTENT", 2 }, +}; +static const ProtobufCIntRange pg_query__xml_option_type__value_ranges[] = { +{0, 0},{0, 3} +}; +static const ProtobufCEnumValueIndex pg_query__xml_option_type__enum_values_by_name[3] = +{ + { "XMLOPTION_CONTENT", 2 }, + { "XMLOPTION_DOCUMENT", 1 }, + { "XML_OPTION_TYPE_UNDEFINED", 0 }, +}; +const ProtobufCEnumDescriptor pg_query__xml_option_type__descriptor = +{ + PROTOBUF_C__ENUM_DESCRIPTOR_MAGIC, + "pg_query.XmlOptionType", + "XmlOptionType", + "PgQuery__XmlOptionType", + "pg_query", + 3, + pg_query__xml_option_type__enum_values_by_number, + 3, + pg_query__xml_option_type__enum_values_by_name, + 1, + pg_query__xml_option_type__value_ranges, + NULL,NULL,NULL,NULL /* reserved[1234] */ +}; +static const ProtobufCEnumValue pg_query__null_test_type__enum_values_by_number[3] = +{ + { "NULL_TEST_TYPE_UNDEFINED", "PG_QUERY__NULL_TEST_TYPE__NULL_TEST_TYPE_UNDEFINED", 0 }, + { "IS_NULL", "PG_QUERY__NULL_TEST_TYPE__IS_NULL", 1 }, + { "IS_NOT_NULL", "PG_QUERY__NULL_TEST_TYPE__IS_NOT_NULL", 2 }, +}; +static const ProtobufCIntRange pg_query__null_test_type__value_ranges[] = { +{0, 0},{0, 3} +}; +static const ProtobufCEnumValueIndex pg_query__null_test_type__enum_values_by_name[3] = +{ + { "IS_NOT_NULL", 2 }, + { "IS_NULL", 1 }, + { "NULL_TEST_TYPE_UNDEFINED", 0 }, +}; +const ProtobufCEnumDescriptor pg_query__null_test_type__descriptor = +{ + PROTOBUF_C__ENUM_DESCRIPTOR_MAGIC, + "pg_query.NullTestType", + "NullTestType", + "PgQuery__NullTestType", + "pg_query", + 3, + pg_query__null_test_type__enum_values_by_number, + 3, + pg_query__null_test_type__enum_values_by_name, + 1, + pg_query__null_test_type__value_ranges, + NULL,NULL,NULL,NULL /* reserved[1234] */ +}; +static const ProtobufCEnumValue pg_query__bool_test_type__enum_values_by_number[7] = +{ + { "BOOL_TEST_TYPE_UNDEFINED", "PG_QUERY__BOOL_TEST_TYPE__BOOL_TEST_TYPE_UNDEFINED", 0 }, + { "IS_TRUE", "PG_QUERY__BOOL_TEST_TYPE__IS_TRUE", 1 }, + { "IS_NOT_TRUE", "PG_QUERY__BOOL_TEST_TYPE__IS_NOT_TRUE", 2 }, + { "IS_FALSE", "PG_QUERY__BOOL_TEST_TYPE__IS_FALSE", 3 }, + { "IS_NOT_FALSE", "PG_QUERY__BOOL_TEST_TYPE__IS_NOT_FALSE", 4 }, + { "IS_UNKNOWN", "PG_QUERY__BOOL_TEST_TYPE__IS_UNKNOWN", 5 }, + { "IS_NOT_UNKNOWN", "PG_QUERY__BOOL_TEST_TYPE__IS_NOT_UNKNOWN", 6 }, +}; +static const ProtobufCIntRange pg_query__bool_test_type__value_ranges[] = { +{0, 0},{0, 7} +}; +static const ProtobufCEnumValueIndex pg_query__bool_test_type__enum_values_by_name[7] = +{ + { "BOOL_TEST_TYPE_UNDEFINED", 0 }, + { "IS_FALSE", 3 }, + { "IS_NOT_FALSE", 4 }, + { "IS_NOT_TRUE", 2 }, + { "IS_NOT_UNKNOWN", 6 }, + { "IS_TRUE", 1 }, + { "IS_UNKNOWN", 5 }, +}; +const ProtobufCEnumDescriptor pg_query__bool_test_type__descriptor = +{ + PROTOBUF_C__ENUM_DESCRIPTOR_MAGIC, + "pg_query.BoolTestType", + "BoolTestType", + "PgQuery__BoolTestType", + "pg_query", + 7, + pg_query__bool_test_type__enum_values_by_number, + 7, + pg_query__bool_test_type__enum_values_by_name, + 1, + pg_query__bool_test_type__value_ranges, + NULL,NULL,NULL,NULL /* reserved[1234] */ +}; +static const ProtobufCEnumValue pg_query__cmd_type__enum_values_by_number[8] = +{ + { "CMD_TYPE_UNDEFINED", "PG_QUERY__CMD_TYPE__CMD_TYPE_UNDEFINED", 0 }, + { "CMD_UNKNOWN", "PG_QUERY__CMD_TYPE__CMD_UNKNOWN", 1 }, + { "CMD_SELECT", "PG_QUERY__CMD_TYPE__CMD_SELECT", 2 }, + { "CMD_UPDATE", "PG_QUERY__CMD_TYPE__CMD_UPDATE", 3 }, + { "CMD_INSERT", "PG_QUERY__CMD_TYPE__CMD_INSERT", 4 }, + { "CMD_DELETE", "PG_QUERY__CMD_TYPE__CMD_DELETE", 5 }, + { "CMD_UTILITY", "PG_QUERY__CMD_TYPE__CMD_UTILITY", 6 }, + { "CMD_NOTHING", "PG_QUERY__CMD_TYPE__CMD_NOTHING", 7 }, +}; +static const ProtobufCIntRange pg_query__cmd_type__value_ranges[] = { +{0, 0},{0, 8} +}; +static const ProtobufCEnumValueIndex pg_query__cmd_type__enum_values_by_name[8] = +{ + { "CMD_DELETE", 5 }, + { "CMD_INSERT", 4 }, + { "CMD_NOTHING", 7 }, + { "CMD_SELECT", 2 }, + { "CMD_TYPE_UNDEFINED", 0 }, + { "CMD_UNKNOWN", 1 }, + { "CMD_UPDATE", 3 }, + { "CMD_UTILITY", 6 }, +}; +const ProtobufCEnumDescriptor pg_query__cmd_type__descriptor = +{ + PROTOBUF_C__ENUM_DESCRIPTOR_MAGIC, + "pg_query.CmdType", + "CmdType", + "PgQuery__CmdType", + "pg_query", + 8, + pg_query__cmd_type__enum_values_by_number, + 8, + pg_query__cmd_type__enum_values_by_name, + 1, + pg_query__cmd_type__value_ranges, + NULL,NULL,NULL,NULL /* reserved[1234] */ +}; +static const ProtobufCEnumValue pg_query__join_type__enum_values_by_number[9] = +{ + { "JOIN_TYPE_UNDEFINED", "PG_QUERY__JOIN_TYPE__JOIN_TYPE_UNDEFINED", 0 }, + { "JOIN_INNER", "PG_QUERY__JOIN_TYPE__JOIN_INNER", 1 }, + { "JOIN_LEFT", "PG_QUERY__JOIN_TYPE__JOIN_LEFT", 2 }, + { "JOIN_FULL", "PG_QUERY__JOIN_TYPE__JOIN_FULL", 3 }, + { "JOIN_RIGHT", "PG_QUERY__JOIN_TYPE__JOIN_RIGHT", 4 }, + { "JOIN_SEMI", "PG_QUERY__JOIN_TYPE__JOIN_SEMI", 5 }, + { "JOIN_ANTI", "PG_QUERY__JOIN_TYPE__JOIN_ANTI", 6 }, + { "JOIN_UNIQUE_OUTER", "PG_QUERY__JOIN_TYPE__JOIN_UNIQUE_OUTER", 7 }, + { "JOIN_UNIQUE_INNER", "PG_QUERY__JOIN_TYPE__JOIN_UNIQUE_INNER", 8 }, +}; +static const ProtobufCIntRange pg_query__join_type__value_ranges[] = { +{0, 0},{0, 9} +}; +static const ProtobufCEnumValueIndex pg_query__join_type__enum_values_by_name[9] = +{ + { "JOIN_ANTI", 6 }, + { "JOIN_FULL", 3 }, + { "JOIN_INNER", 1 }, + { "JOIN_LEFT", 2 }, + { "JOIN_RIGHT", 4 }, + { "JOIN_SEMI", 5 }, + { "JOIN_TYPE_UNDEFINED", 0 }, + { "JOIN_UNIQUE_INNER", 8 }, + { "JOIN_UNIQUE_OUTER", 7 }, +}; +const ProtobufCEnumDescriptor pg_query__join_type__descriptor = +{ + PROTOBUF_C__ENUM_DESCRIPTOR_MAGIC, + "pg_query.JoinType", + "JoinType", + "PgQuery__JoinType", + "pg_query", + 9, + pg_query__join_type__enum_values_by_number, + 9, + pg_query__join_type__enum_values_by_name, + 1, + pg_query__join_type__value_ranges, + NULL,NULL,NULL,NULL /* reserved[1234] */ +}; +static const ProtobufCEnumValue pg_query__agg_strategy__enum_values_by_number[5] = +{ + { "AGG_STRATEGY_UNDEFINED", "PG_QUERY__AGG_STRATEGY__AGG_STRATEGY_UNDEFINED", 0 }, + { "AGG_PLAIN", "PG_QUERY__AGG_STRATEGY__AGG_PLAIN", 1 }, + { "AGG_SORTED", "PG_QUERY__AGG_STRATEGY__AGG_SORTED", 2 }, + { "AGG_HASHED", "PG_QUERY__AGG_STRATEGY__AGG_HASHED", 3 }, + { "AGG_MIXED", "PG_QUERY__AGG_STRATEGY__AGG_MIXED", 4 }, +}; +static const ProtobufCIntRange pg_query__agg_strategy__value_ranges[] = { +{0, 0},{0, 5} +}; +static const ProtobufCEnumValueIndex pg_query__agg_strategy__enum_values_by_name[5] = +{ + { "AGG_HASHED", 3 }, + { "AGG_MIXED", 4 }, + { "AGG_PLAIN", 1 }, + { "AGG_SORTED", 2 }, + { "AGG_STRATEGY_UNDEFINED", 0 }, +}; +const ProtobufCEnumDescriptor pg_query__agg_strategy__descriptor = +{ + PROTOBUF_C__ENUM_DESCRIPTOR_MAGIC, + "pg_query.AggStrategy", + "AggStrategy", + "PgQuery__AggStrategy", + "pg_query", + 5, + pg_query__agg_strategy__enum_values_by_number, + 5, + pg_query__agg_strategy__enum_values_by_name, + 1, + pg_query__agg_strategy__value_ranges, + NULL,NULL,NULL,NULL /* reserved[1234] */ +}; +static const ProtobufCEnumValue pg_query__agg_split__enum_values_by_number[4] = +{ + { "AGG_SPLIT_UNDEFINED", "PG_QUERY__AGG_SPLIT__AGG_SPLIT_UNDEFINED", 0 }, + { "AGGSPLIT_SIMPLE", "PG_QUERY__AGG_SPLIT__AGGSPLIT_SIMPLE", 1 }, + { "AGGSPLIT_INITIAL_SERIAL", "PG_QUERY__AGG_SPLIT__AGGSPLIT_INITIAL_SERIAL", 2 }, + { "AGGSPLIT_FINAL_DESERIAL", "PG_QUERY__AGG_SPLIT__AGGSPLIT_FINAL_DESERIAL", 3 }, +}; +static const ProtobufCIntRange pg_query__agg_split__value_ranges[] = { +{0, 0},{0, 4} +}; +static const ProtobufCEnumValueIndex pg_query__agg_split__enum_values_by_name[4] = +{ + { "AGGSPLIT_FINAL_DESERIAL", 3 }, + { "AGGSPLIT_INITIAL_SERIAL", 2 }, + { "AGGSPLIT_SIMPLE", 1 }, + { "AGG_SPLIT_UNDEFINED", 0 }, +}; +const ProtobufCEnumDescriptor pg_query__agg_split__descriptor = +{ + PROTOBUF_C__ENUM_DESCRIPTOR_MAGIC, + "pg_query.AggSplit", + "AggSplit", + "PgQuery__AggSplit", + "pg_query", + 4, + pg_query__agg_split__enum_values_by_number, + 4, + pg_query__agg_split__enum_values_by_name, + 1, + pg_query__agg_split__value_ranges, + NULL,NULL,NULL,NULL /* reserved[1234] */ +}; +static const ProtobufCEnumValue pg_query__set_op_cmd__enum_values_by_number[5] = +{ + { "SET_OP_CMD_UNDEFINED", "PG_QUERY__SET_OP_CMD__SET_OP_CMD_UNDEFINED", 0 }, + { "SETOPCMD_INTERSECT", "PG_QUERY__SET_OP_CMD__SETOPCMD_INTERSECT", 1 }, + { "SETOPCMD_INTERSECT_ALL", "PG_QUERY__SET_OP_CMD__SETOPCMD_INTERSECT_ALL", 2 }, + { "SETOPCMD_EXCEPT", "PG_QUERY__SET_OP_CMD__SETOPCMD_EXCEPT", 3 }, + { "SETOPCMD_EXCEPT_ALL", "PG_QUERY__SET_OP_CMD__SETOPCMD_EXCEPT_ALL", 4 }, +}; +static const ProtobufCIntRange pg_query__set_op_cmd__value_ranges[] = { +{0, 0},{0, 5} +}; +static const ProtobufCEnumValueIndex pg_query__set_op_cmd__enum_values_by_name[5] = +{ + { "SETOPCMD_EXCEPT", 3 }, + { "SETOPCMD_EXCEPT_ALL", 4 }, + { "SETOPCMD_INTERSECT", 1 }, + { "SETOPCMD_INTERSECT_ALL", 2 }, + { "SET_OP_CMD_UNDEFINED", 0 }, +}; +const ProtobufCEnumDescriptor pg_query__set_op_cmd__descriptor = +{ + PROTOBUF_C__ENUM_DESCRIPTOR_MAGIC, + "pg_query.SetOpCmd", + "SetOpCmd", + "PgQuery__SetOpCmd", + "pg_query", + 5, + pg_query__set_op_cmd__enum_values_by_number, + 5, + pg_query__set_op_cmd__enum_values_by_name, + 1, + pg_query__set_op_cmd__value_ranges, + NULL,NULL,NULL,NULL /* reserved[1234] */ +}; +static const ProtobufCEnumValue pg_query__set_op_strategy__enum_values_by_number[3] = +{ + { "SET_OP_STRATEGY_UNDEFINED", "PG_QUERY__SET_OP_STRATEGY__SET_OP_STRATEGY_UNDEFINED", 0 }, + { "SETOP_SORTED", "PG_QUERY__SET_OP_STRATEGY__SETOP_SORTED", 1 }, + { "SETOP_HASHED", "PG_QUERY__SET_OP_STRATEGY__SETOP_HASHED", 2 }, +}; +static const ProtobufCIntRange pg_query__set_op_strategy__value_ranges[] = { +{0, 0},{0, 3} +}; +static const ProtobufCEnumValueIndex pg_query__set_op_strategy__enum_values_by_name[3] = +{ + { "SETOP_HASHED", 2 }, + { "SETOP_SORTED", 1 }, + { "SET_OP_STRATEGY_UNDEFINED", 0 }, +}; +const ProtobufCEnumDescriptor pg_query__set_op_strategy__descriptor = +{ + PROTOBUF_C__ENUM_DESCRIPTOR_MAGIC, + "pg_query.SetOpStrategy", + "SetOpStrategy", + "PgQuery__SetOpStrategy", + "pg_query", + 3, + pg_query__set_op_strategy__enum_values_by_number, + 3, + pg_query__set_op_strategy__enum_values_by_name, + 1, + pg_query__set_op_strategy__value_ranges, + NULL,NULL,NULL,NULL /* reserved[1234] */ +}; +static const ProtobufCEnumValue pg_query__on_conflict_action__enum_values_by_number[4] = +{ + { "ON_CONFLICT_ACTION_UNDEFINED", "PG_QUERY__ON_CONFLICT_ACTION__ON_CONFLICT_ACTION_UNDEFINED", 0 }, + { "ONCONFLICT_NONE", "PG_QUERY__ON_CONFLICT_ACTION__ONCONFLICT_NONE", 1 }, + { "ONCONFLICT_NOTHING", "PG_QUERY__ON_CONFLICT_ACTION__ONCONFLICT_NOTHING", 2 }, + { "ONCONFLICT_UPDATE", "PG_QUERY__ON_CONFLICT_ACTION__ONCONFLICT_UPDATE", 3 }, +}; +static const ProtobufCIntRange pg_query__on_conflict_action__value_ranges[] = { +{0, 0},{0, 4} +}; +static const ProtobufCEnumValueIndex pg_query__on_conflict_action__enum_values_by_name[4] = +{ + { "ONCONFLICT_NONE", 1 }, + { "ONCONFLICT_NOTHING", 2 }, + { "ONCONFLICT_UPDATE", 3 }, + { "ON_CONFLICT_ACTION_UNDEFINED", 0 }, +}; +const ProtobufCEnumDescriptor pg_query__on_conflict_action__descriptor = +{ + PROTOBUF_C__ENUM_DESCRIPTOR_MAGIC, + "pg_query.OnConflictAction", + "OnConflictAction", + "PgQuery__OnConflictAction", + "pg_query", + 4, + pg_query__on_conflict_action__enum_values_by_number, + 4, + pg_query__on_conflict_action__enum_values_by_name, + 1, + pg_query__on_conflict_action__value_ranges, + NULL,NULL,NULL,NULL /* reserved[1234] */ +}; +static const ProtobufCEnumValue pg_query__limit_option__enum_values_by_number[4] = +{ + { "LIMIT_OPTION_UNDEFINED", "PG_QUERY__LIMIT_OPTION__LIMIT_OPTION_UNDEFINED", 0 }, + { "LIMIT_OPTION_DEFAULT", "PG_QUERY__LIMIT_OPTION__LIMIT_OPTION_DEFAULT", 1 }, + { "LIMIT_OPTION_COUNT", "PG_QUERY__LIMIT_OPTION__LIMIT_OPTION_COUNT", 2 }, + { "LIMIT_OPTION_WITH_TIES", "PG_QUERY__LIMIT_OPTION__LIMIT_OPTION_WITH_TIES", 3 }, +}; +static const ProtobufCIntRange pg_query__limit_option__value_ranges[] = { +{0, 0},{0, 4} +}; +static const ProtobufCEnumValueIndex pg_query__limit_option__enum_values_by_name[4] = +{ + { "LIMIT_OPTION_COUNT", 2 }, + { "LIMIT_OPTION_DEFAULT", 1 }, + { "LIMIT_OPTION_UNDEFINED", 0 }, + { "LIMIT_OPTION_WITH_TIES", 3 }, +}; +const ProtobufCEnumDescriptor pg_query__limit_option__descriptor = +{ + PROTOBUF_C__ENUM_DESCRIPTOR_MAGIC, + "pg_query.LimitOption", + "LimitOption", + "PgQuery__LimitOption", + "pg_query", + 4, + pg_query__limit_option__enum_values_by_number, + 4, + pg_query__limit_option__enum_values_by_name, + 1, + pg_query__limit_option__value_ranges, + NULL,NULL,NULL,NULL /* reserved[1234] */ +}; +static const ProtobufCEnumValue pg_query__lock_clause_strength__enum_values_by_number[6] = +{ + { "LOCK_CLAUSE_STRENGTH_UNDEFINED", "PG_QUERY__LOCK_CLAUSE_STRENGTH__LOCK_CLAUSE_STRENGTH_UNDEFINED", 0 }, + { "LCS_NONE", "PG_QUERY__LOCK_CLAUSE_STRENGTH__LCS_NONE", 1 }, + { "LCS_FORKEYSHARE", "PG_QUERY__LOCK_CLAUSE_STRENGTH__LCS_FORKEYSHARE", 2 }, + { "LCS_FORSHARE", "PG_QUERY__LOCK_CLAUSE_STRENGTH__LCS_FORSHARE", 3 }, + { "LCS_FORNOKEYUPDATE", "PG_QUERY__LOCK_CLAUSE_STRENGTH__LCS_FORNOKEYUPDATE", 4 }, + { "LCS_FORUPDATE", "PG_QUERY__LOCK_CLAUSE_STRENGTH__LCS_FORUPDATE", 5 }, +}; +static const ProtobufCIntRange pg_query__lock_clause_strength__value_ranges[] = { +{0, 0},{0, 6} +}; +static const ProtobufCEnumValueIndex pg_query__lock_clause_strength__enum_values_by_name[6] = +{ + { "LCS_FORKEYSHARE", 2 }, + { "LCS_FORNOKEYUPDATE", 4 }, + { "LCS_FORSHARE", 3 }, + { "LCS_FORUPDATE", 5 }, + { "LCS_NONE", 1 }, + { "LOCK_CLAUSE_STRENGTH_UNDEFINED", 0 }, +}; +const ProtobufCEnumDescriptor pg_query__lock_clause_strength__descriptor = +{ + PROTOBUF_C__ENUM_DESCRIPTOR_MAGIC, + "pg_query.LockClauseStrength", + "LockClauseStrength", + "PgQuery__LockClauseStrength", + "pg_query", + 6, + pg_query__lock_clause_strength__enum_values_by_number, + 6, + pg_query__lock_clause_strength__enum_values_by_name, + 1, + pg_query__lock_clause_strength__value_ranges, + NULL,NULL,NULL,NULL /* reserved[1234] */ +}; +static const ProtobufCEnumValue pg_query__lock_wait_policy__enum_values_by_number[4] = +{ + { "LOCK_WAIT_POLICY_UNDEFINED", "PG_QUERY__LOCK_WAIT_POLICY__LOCK_WAIT_POLICY_UNDEFINED", 0 }, + { "LockWaitBlock", "PG_QUERY__LOCK_WAIT_POLICY__LockWaitBlock", 1 }, + { "LockWaitSkip", "PG_QUERY__LOCK_WAIT_POLICY__LockWaitSkip", 2 }, + { "LockWaitError", "PG_QUERY__LOCK_WAIT_POLICY__LockWaitError", 3 }, +}; +static const ProtobufCIntRange pg_query__lock_wait_policy__value_ranges[] = { +{0, 0},{0, 4} +}; +static const ProtobufCEnumValueIndex pg_query__lock_wait_policy__enum_values_by_name[4] = +{ + { "LOCK_WAIT_POLICY_UNDEFINED", 0 }, + { "LockWaitBlock", 1 }, + { "LockWaitError", 3 }, + { "LockWaitSkip", 2 }, +}; +const ProtobufCEnumDescriptor pg_query__lock_wait_policy__descriptor = +{ + PROTOBUF_C__ENUM_DESCRIPTOR_MAGIC, + "pg_query.LockWaitPolicy", + "LockWaitPolicy", + "PgQuery__LockWaitPolicy", + "pg_query", + 4, + pg_query__lock_wait_policy__enum_values_by_number, + 4, + pg_query__lock_wait_policy__enum_values_by_name, + 1, + pg_query__lock_wait_policy__value_ranges, + NULL,NULL,NULL,NULL /* reserved[1234] */ +}; +static const ProtobufCEnumValue pg_query__lock_tuple_mode__enum_values_by_number[5] = +{ + { "LOCK_TUPLE_MODE_UNDEFINED", "PG_QUERY__LOCK_TUPLE_MODE__LOCK_TUPLE_MODE_UNDEFINED", 0 }, + { "LockTupleKeyShare", "PG_QUERY__LOCK_TUPLE_MODE__LockTupleKeyShare", 1 }, + { "LockTupleShare", "PG_QUERY__LOCK_TUPLE_MODE__LockTupleShare", 2 }, + { "LockTupleNoKeyExclusive", "PG_QUERY__LOCK_TUPLE_MODE__LockTupleNoKeyExclusive", 3 }, + { "LockTupleExclusive", "PG_QUERY__LOCK_TUPLE_MODE__LockTupleExclusive", 4 }, +}; +static const ProtobufCIntRange pg_query__lock_tuple_mode__value_ranges[] = { +{0, 0},{0, 5} +}; +static const ProtobufCEnumValueIndex pg_query__lock_tuple_mode__enum_values_by_name[5] = +{ + { "LOCK_TUPLE_MODE_UNDEFINED", 0 }, + { "LockTupleExclusive", 4 }, + { "LockTupleKeyShare", 1 }, + { "LockTupleNoKeyExclusive", 3 }, + { "LockTupleShare", 2 }, +}; +const ProtobufCEnumDescriptor pg_query__lock_tuple_mode__descriptor = +{ + PROTOBUF_C__ENUM_DESCRIPTOR_MAGIC, + "pg_query.LockTupleMode", + "LockTupleMode", + "PgQuery__LockTupleMode", + "pg_query", + 5, + pg_query__lock_tuple_mode__enum_values_by_number, + 5, + pg_query__lock_tuple_mode__enum_values_by_name, + 1, + pg_query__lock_tuple_mode__value_ranges, + NULL,NULL,NULL,NULL /* reserved[1234] */ +}; +static const ProtobufCEnumValue pg_query__keyword_kind__enum_values_by_number[5] = +{ + { "NO_KEYWORD", "PG_QUERY__KEYWORD_KIND__NO_KEYWORD", 0 }, + { "UNRESERVED_KEYWORD", "PG_QUERY__KEYWORD_KIND__UNRESERVED_KEYWORD", 1 }, + { "COL_NAME_KEYWORD", "PG_QUERY__KEYWORD_KIND__COL_NAME_KEYWORD", 2 }, + { "TYPE_FUNC_NAME_KEYWORD", "PG_QUERY__KEYWORD_KIND__TYPE_FUNC_NAME_KEYWORD", 3 }, + { "RESERVED_KEYWORD", "PG_QUERY__KEYWORD_KIND__RESERVED_KEYWORD", 4 }, +}; +static const ProtobufCIntRange pg_query__keyword_kind__value_ranges[] = { +{0, 0},{0, 5} +}; +static const ProtobufCEnumValueIndex pg_query__keyword_kind__enum_values_by_name[5] = +{ + { "COL_NAME_KEYWORD", 2 }, + { "NO_KEYWORD", 0 }, + { "RESERVED_KEYWORD", 4 }, + { "TYPE_FUNC_NAME_KEYWORD", 3 }, + { "UNRESERVED_KEYWORD", 1 }, +}; +const ProtobufCEnumDescriptor pg_query__keyword_kind__descriptor = +{ + PROTOBUF_C__ENUM_DESCRIPTOR_MAGIC, + "pg_query.KeywordKind", + "KeywordKind", + "PgQuery__KeywordKind", + "pg_query", + 5, + pg_query__keyword_kind__enum_values_by_number, + 5, + pg_query__keyword_kind__enum_values_by_name, + 1, + pg_query__keyword_kind__value_ranges, + NULL,NULL,NULL,NULL /* reserved[1234] */ +}; +static const ProtobufCEnumValue pg_query__token__enum_values_by_number[493] = +{ + { "NUL", "PG_QUERY__TOKEN__NUL", 0 }, + { "ASCII_37", "PG_QUERY__TOKEN__ASCII_37", 37 }, + { "ASCII_40", "PG_QUERY__TOKEN__ASCII_40", 40 }, + { "ASCII_41", "PG_QUERY__TOKEN__ASCII_41", 41 }, + { "ASCII_42", "PG_QUERY__TOKEN__ASCII_42", 42 }, + { "ASCII_43", "PG_QUERY__TOKEN__ASCII_43", 43 }, + { "ASCII_44", "PG_QUERY__TOKEN__ASCII_44", 44 }, + { "ASCII_45", "PG_QUERY__TOKEN__ASCII_45", 45 }, + { "ASCII_46", "PG_QUERY__TOKEN__ASCII_46", 46 }, + { "ASCII_47", "PG_QUERY__TOKEN__ASCII_47", 47 }, + { "ASCII_58", "PG_QUERY__TOKEN__ASCII_58", 58 }, + { "ASCII_59", "PG_QUERY__TOKEN__ASCII_59", 59 }, + { "ASCII_60", "PG_QUERY__TOKEN__ASCII_60", 60 }, + { "ASCII_61", "PG_QUERY__TOKEN__ASCII_61", 61 }, + { "ASCII_62", "PG_QUERY__TOKEN__ASCII_62", 62 }, + { "ASCII_63", "PG_QUERY__TOKEN__ASCII_63", 63 }, + { "ASCII_91", "PG_QUERY__TOKEN__ASCII_91", 91 }, + { "ASCII_93", "PG_QUERY__TOKEN__ASCII_93", 93 }, + { "ASCII_94", "PG_QUERY__TOKEN__ASCII_94", 94 }, + { "IDENT", "PG_QUERY__TOKEN__IDENT", 258 }, + { "UIDENT", "PG_QUERY__TOKEN__UIDENT", 259 }, + { "FCONST", "PG_QUERY__TOKEN__FCONST", 260 }, + { "SCONST", "PG_QUERY__TOKEN__SCONST", 261 }, + { "USCONST", "PG_QUERY__TOKEN__USCONST", 262 }, + { "BCONST", "PG_QUERY__TOKEN__BCONST", 263 }, + { "XCONST", "PG_QUERY__TOKEN__XCONST", 264 }, + { "Op", "PG_QUERY__TOKEN__Op", 265 }, + { "ICONST", "PG_QUERY__TOKEN__ICONST", 266 }, + { "PARAM", "PG_QUERY__TOKEN__PARAM", 267 }, + { "TYPECAST", "PG_QUERY__TOKEN__TYPECAST", 268 }, + { "DOT_DOT", "PG_QUERY__TOKEN__DOT_DOT", 269 }, + { "COLON_EQUALS", "PG_QUERY__TOKEN__COLON_EQUALS", 270 }, + { "EQUALS_GREATER", "PG_QUERY__TOKEN__EQUALS_GREATER", 271 }, + { "LESS_EQUALS", "PG_QUERY__TOKEN__LESS_EQUALS", 272 }, + { "GREATER_EQUALS", "PG_QUERY__TOKEN__GREATER_EQUALS", 273 }, + { "NOT_EQUALS", "PG_QUERY__TOKEN__NOT_EQUALS", 274 }, + { "SQL_COMMENT", "PG_QUERY__TOKEN__SQL_COMMENT", 275 }, + { "C_COMMENT", "PG_QUERY__TOKEN__C_COMMENT", 276 }, + { "ABORT_P", "PG_QUERY__TOKEN__ABORT_P", 277 }, + { "ABSOLUTE_P", "PG_QUERY__TOKEN__ABSOLUTE_P", 278 }, + { "ACCESS", "PG_QUERY__TOKEN__ACCESS", 279 }, + { "ACTION", "PG_QUERY__TOKEN__ACTION", 280 }, + { "ADD_P", "PG_QUERY__TOKEN__ADD_P", 281 }, + { "ADMIN", "PG_QUERY__TOKEN__ADMIN", 282 }, + { "AFTER", "PG_QUERY__TOKEN__AFTER", 283 }, + { "AGGREGATE", "PG_QUERY__TOKEN__AGGREGATE", 284 }, + { "ALL", "PG_QUERY__TOKEN__ALL", 285 }, + { "ALSO", "PG_QUERY__TOKEN__ALSO", 286 }, + { "ALTER", "PG_QUERY__TOKEN__ALTER", 287 }, + { "ALWAYS", "PG_QUERY__TOKEN__ALWAYS", 288 }, + { "ANALYSE", "PG_QUERY__TOKEN__ANALYSE", 289 }, + { "ANALYZE", "PG_QUERY__TOKEN__ANALYZE", 290 }, + { "AND", "PG_QUERY__TOKEN__AND", 291 }, + { "ANY", "PG_QUERY__TOKEN__ANY", 292 }, + { "ARRAY", "PG_QUERY__TOKEN__ARRAY", 293 }, + { "AS", "PG_QUERY__TOKEN__AS", 294 }, + { "ASC", "PG_QUERY__TOKEN__ASC", 295 }, + { "ASSERTION", "PG_QUERY__TOKEN__ASSERTION", 296 }, + { "ASSIGNMENT", "PG_QUERY__TOKEN__ASSIGNMENT", 297 }, + { "ASYMMETRIC", "PG_QUERY__TOKEN__ASYMMETRIC", 298 }, + { "AT", "PG_QUERY__TOKEN__AT", 299 }, + { "ATTACH", "PG_QUERY__TOKEN__ATTACH", 300 }, + { "ATTRIBUTE", "PG_QUERY__TOKEN__ATTRIBUTE", 301 }, + { "AUTHORIZATION", "PG_QUERY__TOKEN__AUTHORIZATION", 302 }, + { "BACKWARD", "PG_QUERY__TOKEN__BACKWARD", 303 }, + { "BEFORE", "PG_QUERY__TOKEN__BEFORE", 304 }, + { "BEGIN_P", "PG_QUERY__TOKEN__BEGIN_P", 305 }, + { "BETWEEN", "PG_QUERY__TOKEN__BETWEEN", 306 }, + { "BIGINT", "PG_QUERY__TOKEN__BIGINT", 307 }, + { "BINARY", "PG_QUERY__TOKEN__BINARY", 308 }, + { "BIT", "PG_QUERY__TOKEN__BIT", 309 }, + { "BOOLEAN_P", "PG_QUERY__TOKEN__BOOLEAN_P", 310 }, + { "BOTH", "PG_QUERY__TOKEN__BOTH", 311 }, + { "BY", "PG_QUERY__TOKEN__BY", 312 }, + { "CACHE", "PG_QUERY__TOKEN__CACHE", 313 }, + { "CALL", "PG_QUERY__TOKEN__CALL", 314 }, + { "CALLED", "PG_QUERY__TOKEN__CALLED", 315 }, + { "CASCADE", "PG_QUERY__TOKEN__CASCADE", 316 }, + { "CASCADED", "PG_QUERY__TOKEN__CASCADED", 317 }, + { "CASE", "PG_QUERY__TOKEN__CASE", 318 }, + { "CAST", "PG_QUERY__TOKEN__CAST", 319 }, + { "CATALOG_P", "PG_QUERY__TOKEN__CATALOG_P", 320 }, + { "CHAIN", "PG_QUERY__TOKEN__CHAIN", 321 }, + { "CHAR_P", "PG_QUERY__TOKEN__CHAR_P", 322 }, + { "CHARACTER", "PG_QUERY__TOKEN__CHARACTER", 323 }, + { "CHARACTERISTICS", "PG_QUERY__TOKEN__CHARACTERISTICS", 324 }, + { "CHECK", "PG_QUERY__TOKEN__CHECK", 325 }, + { "CHECKPOINT", "PG_QUERY__TOKEN__CHECKPOINT", 326 }, + { "CLASS", "PG_QUERY__TOKEN__CLASS", 327 }, + { "CLOSE", "PG_QUERY__TOKEN__CLOSE", 328 }, + { "CLUSTER", "PG_QUERY__TOKEN__CLUSTER", 329 }, + { "COALESCE", "PG_QUERY__TOKEN__COALESCE", 330 }, + { "COLLATE", "PG_QUERY__TOKEN__COLLATE", 331 }, + { "COLLATION", "PG_QUERY__TOKEN__COLLATION", 332 }, + { "COLUMN", "PG_QUERY__TOKEN__COLUMN", 333 }, + { "COLUMNS", "PG_QUERY__TOKEN__COLUMNS", 334 }, + { "COMMENT", "PG_QUERY__TOKEN__COMMENT", 335 }, + { "COMMENTS", "PG_QUERY__TOKEN__COMMENTS", 336 }, + { "COMMIT", "PG_QUERY__TOKEN__COMMIT", 337 }, + { "COMMITTED", "PG_QUERY__TOKEN__COMMITTED", 338 }, + { "CONCURRENTLY", "PG_QUERY__TOKEN__CONCURRENTLY", 339 }, + { "CONFIGURATION", "PG_QUERY__TOKEN__CONFIGURATION", 340 }, + { "CONFLICT", "PG_QUERY__TOKEN__CONFLICT", 341 }, + { "CONNECTION", "PG_QUERY__TOKEN__CONNECTION", 342 }, + { "CONSTRAINT", "PG_QUERY__TOKEN__CONSTRAINT", 343 }, + { "CONSTRAINTS", "PG_QUERY__TOKEN__CONSTRAINTS", 344 }, + { "CONTENT_P", "PG_QUERY__TOKEN__CONTENT_P", 345 }, + { "CONTINUE_P", "PG_QUERY__TOKEN__CONTINUE_P", 346 }, + { "CONVERSION_P", "PG_QUERY__TOKEN__CONVERSION_P", 347 }, + { "COPY", "PG_QUERY__TOKEN__COPY", 348 }, + { "COST", "PG_QUERY__TOKEN__COST", 349 }, + { "CREATE", "PG_QUERY__TOKEN__CREATE", 350 }, + { "CROSS", "PG_QUERY__TOKEN__CROSS", 351 }, + { "CSV", "PG_QUERY__TOKEN__CSV", 352 }, + { "CUBE", "PG_QUERY__TOKEN__CUBE", 353 }, + { "CURRENT_P", "PG_QUERY__TOKEN__CURRENT_P", 354 }, + { "CURRENT_CATALOG", "PG_QUERY__TOKEN__CURRENT_CATALOG", 355 }, + { "CURRENT_DATE", "PG_QUERY__TOKEN__CURRENT_DATE", 356 }, + { "CURRENT_ROLE", "PG_QUERY__TOKEN__CURRENT_ROLE", 357 }, + { "CURRENT_SCHEMA", "PG_QUERY__TOKEN__CURRENT_SCHEMA", 358 }, + { "CURRENT_TIME", "PG_QUERY__TOKEN__CURRENT_TIME", 359 }, + { "CURRENT_TIMESTAMP", "PG_QUERY__TOKEN__CURRENT_TIMESTAMP", 360 }, + { "CURRENT_USER", "PG_QUERY__TOKEN__CURRENT_USER", 361 }, + { "CURSOR", "PG_QUERY__TOKEN__CURSOR", 362 }, + { "CYCLE", "PG_QUERY__TOKEN__CYCLE", 363 }, + { "DATA_P", "PG_QUERY__TOKEN__DATA_P", 364 }, + { "DATABASE", "PG_QUERY__TOKEN__DATABASE", 365 }, + { "DAY_P", "PG_QUERY__TOKEN__DAY_P", 366 }, + { "DEALLOCATE", "PG_QUERY__TOKEN__DEALLOCATE", 367 }, + { "DEC", "PG_QUERY__TOKEN__DEC", 368 }, + { "DECIMAL_P", "PG_QUERY__TOKEN__DECIMAL_P", 369 }, + { "DECLARE", "PG_QUERY__TOKEN__DECLARE", 370 }, + { "DEFAULT", "PG_QUERY__TOKEN__DEFAULT", 371 }, + { "DEFAULTS", "PG_QUERY__TOKEN__DEFAULTS", 372 }, + { "DEFERRABLE", "PG_QUERY__TOKEN__DEFERRABLE", 373 }, + { "DEFERRED", "PG_QUERY__TOKEN__DEFERRED", 374 }, + { "DEFINER", "PG_QUERY__TOKEN__DEFINER", 375 }, + { "DELETE_P", "PG_QUERY__TOKEN__DELETE_P", 376 }, + { "DELIMITER", "PG_QUERY__TOKEN__DELIMITER", 377 }, + { "DELIMITERS", "PG_QUERY__TOKEN__DELIMITERS", 378 }, + { "DEPENDS", "PG_QUERY__TOKEN__DEPENDS", 379 }, + { "DESC", "PG_QUERY__TOKEN__DESC", 380 }, + { "DETACH", "PG_QUERY__TOKEN__DETACH", 381 }, + { "DICTIONARY", "PG_QUERY__TOKEN__DICTIONARY", 382 }, + { "DISABLE_P", "PG_QUERY__TOKEN__DISABLE_P", 383 }, + { "DISCARD", "PG_QUERY__TOKEN__DISCARD", 384 }, + { "DISTINCT", "PG_QUERY__TOKEN__DISTINCT", 385 }, + { "DO", "PG_QUERY__TOKEN__DO", 386 }, + { "DOCUMENT_P", "PG_QUERY__TOKEN__DOCUMENT_P", 387 }, + { "DOMAIN_P", "PG_QUERY__TOKEN__DOMAIN_P", 388 }, + { "DOUBLE_P", "PG_QUERY__TOKEN__DOUBLE_P", 389 }, + { "DROP", "PG_QUERY__TOKEN__DROP", 390 }, + { "EACH", "PG_QUERY__TOKEN__EACH", 391 }, + { "ELSE", "PG_QUERY__TOKEN__ELSE", 392 }, + { "ENABLE_P", "PG_QUERY__TOKEN__ENABLE_P", 393 }, + { "ENCODING", "PG_QUERY__TOKEN__ENCODING", 394 }, + { "ENCRYPTED", "PG_QUERY__TOKEN__ENCRYPTED", 395 }, + { "END_P", "PG_QUERY__TOKEN__END_P", 396 }, + { "ENUM_P", "PG_QUERY__TOKEN__ENUM_P", 397 }, + { "ESCAPE", "PG_QUERY__TOKEN__ESCAPE", 398 }, + { "EVENT", "PG_QUERY__TOKEN__EVENT", 399 }, + { "EXCEPT", "PG_QUERY__TOKEN__EXCEPT", 400 }, + { "EXCLUDE", "PG_QUERY__TOKEN__EXCLUDE", 401 }, + { "EXCLUDING", "PG_QUERY__TOKEN__EXCLUDING", 402 }, + { "EXCLUSIVE", "PG_QUERY__TOKEN__EXCLUSIVE", 403 }, + { "EXECUTE", "PG_QUERY__TOKEN__EXECUTE", 404 }, + { "EXISTS", "PG_QUERY__TOKEN__EXISTS", 405 }, + { "EXPLAIN", "PG_QUERY__TOKEN__EXPLAIN", 406 }, + { "EXPRESSION", "PG_QUERY__TOKEN__EXPRESSION", 407 }, + { "EXTENSION", "PG_QUERY__TOKEN__EXTENSION", 408 }, + { "EXTERNAL", "PG_QUERY__TOKEN__EXTERNAL", 409 }, + { "EXTRACT", "PG_QUERY__TOKEN__EXTRACT", 410 }, + { "FALSE_P", "PG_QUERY__TOKEN__FALSE_P", 411 }, + { "FAMILY", "PG_QUERY__TOKEN__FAMILY", 412 }, + { "FETCH", "PG_QUERY__TOKEN__FETCH", 413 }, + { "FILTER", "PG_QUERY__TOKEN__FILTER", 414 }, + { "FIRST_P", "PG_QUERY__TOKEN__FIRST_P", 415 }, + { "FLOAT_P", "PG_QUERY__TOKEN__FLOAT_P", 416 }, + { "FOLLOWING", "PG_QUERY__TOKEN__FOLLOWING", 417 }, + { "FOR", "PG_QUERY__TOKEN__FOR", 418 }, + { "FORCE", "PG_QUERY__TOKEN__FORCE", 419 }, + { "FOREIGN", "PG_QUERY__TOKEN__FOREIGN", 420 }, + { "FORWARD", "PG_QUERY__TOKEN__FORWARD", 421 }, + { "FREEZE", "PG_QUERY__TOKEN__FREEZE", 422 }, + { "FROM", "PG_QUERY__TOKEN__FROM", 423 }, + { "FULL", "PG_QUERY__TOKEN__FULL", 424 }, + { "FUNCTION", "PG_QUERY__TOKEN__FUNCTION", 425 }, + { "FUNCTIONS", "PG_QUERY__TOKEN__FUNCTIONS", 426 }, + { "GENERATED", "PG_QUERY__TOKEN__GENERATED", 427 }, + { "GLOBAL", "PG_QUERY__TOKEN__GLOBAL", 428 }, + { "GRANT", "PG_QUERY__TOKEN__GRANT", 429 }, + { "GRANTED", "PG_QUERY__TOKEN__GRANTED", 430 }, + { "GREATEST", "PG_QUERY__TOKEN__GREATEST", 431 }, + { "GROUP_P", "PG_QUERY__TOKEN__GROUP_P", 432 }, + { "GROUPING", "PG_QUERY__TOKEN__GROUPING", 433 }, + { "GROUPS", "PG_QUERY__TOKEN__GROUPS", 434 }, + { "HANDLER", "PG_QUERY__TOKEN__HANDLER", 435 }, + { "HAVING", "PG_QUERY__TOKEN__HAVING", 436 }, + { "HEADER_P", "PG_QUERY__TOKEN__HEADER_P", 437 }, + { "HOLD", "PG_QUERY__TOKEN__HOLD", 438 }, + { "HOUR_P", "PG_QUERY__TOKEN__HOUR_P", 439 }, + { "IDENTITY_P", "PG_QUERY__TOKEN__IDENTITY_P", 440 }, + { "IF_P", "PG_QUERY__TOKEN__IF_P", 441 }, + { "ILIKE", "PG_QUERY__TOKEN__ILIKE", 442 }, + { "IMMEDIATE", "PG_QUERY__TOKEN__IMMEDIATE", 443 }, + { "IMMUTABLE", "PG_QUERY__TOKEN__IMMUTABLE", 444 }, + { "IMPLICIT_P", "PG_QUERY__TOKEN__IMPLICIT_P", 445 }, + { "IMPORT_P", "PG_QUERY__TOKEN__IMPORT_P", 446 }, + { "IN_P", "PG_QUERY__TOKEN__IN_P", 447 }, + { "INCLUDE", "PG_QUERY__TOKEN__INCLUDE", 448 }, + { "INCLUDING", "PG_QUERY__TOKEN__INCLUDING", 449 }, + { "INCREMENT", "PG_QUERY__TOKEN__INCREMENT", 450 }, + { "INDEX", "PG_QUERY__TOKEN__INDEX", 451 }, + { "INDEXES", "PG_QUERY__TOKEN__INDEXES", 452 }, + { "INHERIT", "PG_QUERY__TOKEN__INHERIT", 453 }, + { "INHERITS", "PG_QUERY__TOKEN__INHERITS", 454 }, + { "INITIALLY", "PG_QUERY__TOKEN__INITIALLY", 455 }, + { "INLINE_P", "PG_QUERY__TOKEN__INLINE_P", 456 }, + { "INNER_P", "PG_QUERY__TOKEN__INNER_P", 457 }, + { "INOUT", "PG_QUERY__TOKEN__INOUT", 458 }, + { "INPUT_P", "PG_QUERY__TOKEN__INPUT_P", 459 }, + { "INSENSITIVE", "PG_QUERY__TOKEN__INSENSITIVE", 460 }, + { "INSERT", "PG_QUERY__TOKEN__INSERT", 461 }, + { "INSTEAD", "PG_QUERY__TOKEN__INSTEAD", 462 }, + { "INT_P", "PG_QUERY__TOKEN__INT_P", 463 }, + { "INTEGER", "PG_QUERY__TOKEN__INTEGER", 464 }, + { "INTERSECT", "PG_QUERY__TOKEN__INTERSECT", 465 }, + { "INTERVAL", "PG_QUERY__TOKEN__INTERVAL", 466 }, + { "INTO", "PG_QUERY__TOKEN__INTO", 467 }, + { "INVOKER", "PG_QUERY__TOKEN__INVOKER", 468 }, + { "IS", "PG_QUERY__TOKEN__IS", 469 }, + { "ISNULL", "PG_QUERY__TOKEN__ISNULL", 470 }, + { "ISOLATION", "PG_QUERY__TOKEN__ISOLATION", 471 }, + { "JOIN", "PG_QUERY__TOKEN__JOIN", 472 }, + { "KEY", "PG_QUERY__TOKEN__KEY", 473 }, + { "LABEL", "PG_QUERY__TOKEN__LABEL", 474 }, + { "LANGUAGE", "PG_QUERY__TOKEN__LANGUAGE", 475 }, + { "LARGE_P", "PG_QUERY__TOKEN__LARGE_P", 476 }, + { "LAST_P", "PG_QUERY__TOKEN__LAST_P", 477 }, + { "LATERAL_P", "PG_QUERY__TOKEN__LATERAL_P", 478 }, + { "LEADING", "PG_QUERY__TOKEN__LEADING", 479 }, + { "LEAKPROOF", "PG_QUERY__TOKEN__LEAKPROOF", 480 }, + { "LEAST", "PG_QUERY__TOKEN__LEAST", 481 }, + { "LEFT", "PG_QUERY__TOKEN__LEFT", 482 }, + { "LEVEL", "PG_QUERY__TOKEN__LEVEL", 483 }, + { "LIKE", "PG_QUERY__TOKEN__LIKE", 484 }, + { "LIMIT", "PG_QUERY__TOKEN__LIMIT", 485 }, + { "LISTEN", "PG_QUERY__TOKEN__LISTEN", 486 }, + { "LOAD", "PG_QUERY__TOKEN__LOAD", 487 }, + { "LOCAL", "PG_QUERY__TOKEN__LOCAL", 488 }, + { "LOCALTIME", "PG_QUERY__TOKEN__LOCALTIME", 489 }, + { "LOCALTIMESTAMP", "PG_QUERY__TOKEN__LOCALTIMESTAMP", 490 }, + { "LOCATION", "PG_QUERY__TOKEN__LOCATION", 491 }, + { "LOCK_P", "PG_QUERY__TOKEN__LOCK_P", 492 }, + { "LOCKED", "PG_QUERY__TOKEN__LOCKED", 493 }, + { "LOGGED", "PG_QUERY__TOKEN__LOGGED", 494 }, + { "MAPPING", "PG_QUERY__TOKEN__MAPPING", 495 }, + { "MATCH", "PG_QUERY__TOKEN__MATCH", 496 }, + { "MATERIALIZED", "PG_QUERY__TOKEN__MATERIALIZED", 497 }, + { "MAXVALUE", "PG_QUERY__TOKEN__MAXVALUE", 498 }, + { "METHOD", "PG_QUERY__TOKEN__METHOD", 499 }, + { "MINUTE_P", "PG_QUERY__TOKEN__MINUTE_P", 500 }, + { "MINVALUE", "PG_QUERY__TOKEN__MINVALUE", 501 }, + { "MODE", "PG_QUERY__TOKEN__MODE", 502 }, + { "MONTH_P", "PG_QUERY__TOKEN__MONTH_P", 503 }, + { "MOVE", "PG_QUERY__TOKEN__MOVE", 504 }, + { "NAME_P", "PG_QUERY__TOKEN__NAME_P", 505 }, + { "NAMES", "PG_QUERY__TOKEN__NAMES", 506 }, + { "NATIONAL", "PG_QUERY__TOKEN__NATIONAL", 507 }, + { "NATURAL", "PG_QUERY__TOKEN__NATURAL", 508 }, + { "NCHAR", "PG_QUERY__TOKEN__NCHAR", 509 }, + { "NEW", "PG_QUERY__TOKEN__NEW", 510 }, + { "NEXT", "PG_QUERY__TOKEN__NEXT", 511 }, + { "NFC", "PG_QUERY__TOKEN__NFC", 512 }, + { "NFD", "PG_QUERY__TOKEN__NFD", 513 }, + { "NFKC", "PG_QUERY__TOKEN__NFKC", 514 }, + { "NFKD", "PG_QUERY__TOKEN__NFKD", 515 }, + { "NO", "PG_QUERY__TOKEN__NO", 516 }, + { "NONE", "PG_QUERY__TOKEN__NONE", 517 }, + { "NORMALIZE", "PG_QUERY__TOKEN__NORMALIZE", 518 }, + { "NORMALIZED", "PG_QUERY__TOKEN__NORMALIZED", 519 }, + { "NOT", "PG_QUERY__TOKEN__NOT", 520 }, + { "NOTHING", "PG_QUERY__TOKEN__NOTHING", 521 }, + { "NOTIFY", "PG_QUERY__TOKEN__NOTIFY", 522 }, + { "NOTNULL", "PG_QUERY__TOKEN__NOTNULL", 523 }, + { "NOWAIT", "PG_QUERY__TOKEN__NOWAIT", 524 }, + { "NULL_P", "PG_QUERY__TOKEN__NULL_P", 525 }, + { "NULLIF", "PG_QUERY__TOKEN__NULLIF", 526 }, + { "NULLS_P", "PG_QUERY__TOKEN__NULLS_P", 527 }, + { "NUMERIC", "PG_QUERY__TOKEN__NUMERIC", 528 }, + { "OBJECT_P", "PG_QUERY__TOKEN__OBJECT_P", 529 }, + { "OF", "PG_QUERY__TOKEN__OF", 530 }, + { "OFF", "PG_QUERY__TOKEN__OFF", 531 }, + { "OFFSET", "PG_QUERY__TOKEN__OFFSET", 532 }, + { "OIDS", "PG_QUERY__TOKEN__OIDS", 533 }, + { "OLD", "PG_QUERY__TOKEN__OLD", 534 }, + { "ON", "PG_QUERY__TOKEN__ON", 535 }, + { "ONLY", "PG_QUERY__TOKEN__ONLY", 536 }, + { "OPERATOR", "PG_QUERY__TOKEN__OPERATOR", 537 }, + { "OPTION", "PG_QUERY__TOKEN__OPTION", 538 }, + { "OPTIONS", "PG_QUERY__TOKEN__OPTIONS", 539 }, + { "OR", "PG_QUERY__TOKEN__OR", 540 }, + { "ORDER", "PG_QUERY__TOKEN__ORDER", 541 }, + { "ORDINALITY", "PG_QUERY__TOKEN__ORDINALITY", 542 }, + { "OTHERS", "PG_QUERY__TOKEN__OTHERS", 543 }, + { "OUT_P", "PG_QUERY__TOKEN__OUT_P", 544 }, + { "OUTER_P", "PG_QUERY__TOKEN__OUTER_P", 545 }, + { "OVER", "PG_QUERY__TOKEN__OVER", 546 }, + { "OVERLAPS", "PG_QUERY__TOKEN__OVERLAPS", 547 }, + { "OVERLAY", "PG_QUERY__TOKEN__OVERLAY", 548 }, + { "OVERRIDING", "PG_QUERY__TOKEN__OVERRIDING", 549 }, + { "OWNED", "PG_QUERY__TOKEN__OWNED", 550 }, + { "OWNER", "PG_QUERY__TOKEN__OWNER", 551 }, + { "PARALLEL", "PG_QUERY__TOKEN__PARALLEL", 552 }, + { "PARSER", "PG_QUERY__TOKEN__PARSER", 553 }, + { "PARTIAL", "PG_QUERY__TOKEN__PARTIAL", 554 }, + { "PARTITION", "PG_QUERY__TOKEN__PARTITION", 555 }, + { "PASSING", "PG_QUERY__TOKEN__PASSING", 556 }, + { "PASSWORD", "PG_QUERY__TOKEN__PASSWORD", 557 }, + { "PLACING", "PG_QUERY__TOKEN__PLACING", 558 }, + { "PLANS", "PG_QUERY__TOKEN__PLANS", 559 }, + { "POLICY", "PG_QUERY__TOKEN__POLICY", 560 }, + { "POSITION", "PG_QUERY__TOKEN__POSITION", 561 }, + { "PRECEDING", "PG_QUERY__TOKEN__PRECEDING", 562 }, + { "PRECISION", "PG_QUERY__TOKEN__PRECISION", 563 }, + { "PRESERVE", "PG_QUERY__TOKEN__PRESERVE", 564 }, + { "PREPARE", "PG_QUERY__TOKEN__PREPARE", 565 }, + { "PREPARED", "PG_QUERY__TOKEN__PREPARED", 566 }, + { "PRIMARY", "PG_QUERY__TOKEN__PRIMARY", 567 }, + { "PRIOR", "PG_QUERY__TOKEN__PRIOR", 568 }, + { "PRIVILEGES", "PG_QUERY__TOKEN__PRIVILEGES", 569 }, + { "PROCEDURAL", "PG_QUERY__TOKEN__PROCEDURAL", 570 }, + { "PROCEDURE", "PG_QUERY__TOKEN__PROCEDURE", 571 }, + { "PROCEDURES", "PG_QUERY__TOKEN__PROCEDURES", 572 }, + { "PROGRAM", "PG_QUERY__TOKEN__PROGRAM", 573 }, + { "PUBLICATION", "PG_QUERY__TOKEN__PUBLICATION", 574 }, + { "QUOTE", "PG_QUERY__TOKEN__QUOTE", 575 }, + { "RANGE", "PG_QUERY__TOKEN__RANGE", 576 }, + { "READ", "PG_QUERY__TOKEN__READ", 577 }, + { "REAL", "PG_QUERY__TOKEN__REAL", 578 }, + { "REASSIGN", "PG_QUERY__TOKEN__REASSIGN", 579 }, + { "RECHECK", "PG_QUERY__TOKEN__RECHECK", 580 }, + { "RECURSIVE", "PG_QUERY__TOKEN__RECURSIVE", 581 }, + { "REF", "PG_QUERY__TOKEN__REF", 582 }, + { "REFERENCES", "PG_QUERY__TOKEN__REFERENCES", 583 }, + { "REFERENCING", "PG_QUERY__TOKEN__REFERENCING", 584 }, + { "REFRESH", "PG_QUERY__TOKEN__REFRESH", 585 }, + { "REINDEX", "PG_QUERY__TOKEN__REINDEX", 586 }, + { "RELATIVE_P", "PG_QUERY__TOKEN__RELATIVE_P", 587 }, + { "RELEASE", "PG_QUERY__TOKEN__RELEASE", 588 }, + { "RENAME", "PG_QUERY__TOKEN__RENAME", 589 }, + { "REPEATABLE", "PG_QUERY__TOKEN__REPEATABLE", 590 }, + { "REPLACE", "PG_QUERY__TOKEN__REPLACE", 591 }, + { "REPLICA", "PG_QUERY__TOKEN__REPLICA", 592 }, + { "RESET", "PG_QUERY__TOKEN__RESET", 593 }, + { "RESTART", "PG_QUERY__TOKEN__RESTART", 594 }, + { "RESTRICT", "PG_QUERY__TOKEN__RESTRICT", 595 }, + { "RETURNING", "PG_QUERY__TOKEN__RETURNING", 596 }, + { "RETURNS", "PG_QUERY__TOKEN__RETURNS", 597 }, + { "REVOKE", "PG_QUERY__TOKEN__REVOKE", 598 }, + { "RIGHT", "PG_QUERY__TOKEN__RIGHT", 599 }, + { "ROLE", "PG_QUERY__TOKEN__ROLE", 600 }, + { "ROLLBACK", "PG_QUERY__TOKEN__ROLLBACK", 601 }, + { "ROLLUP", "PG_QUERY__TOKEN__ROLLUP", 602 }, + { "ROUTINE", "PG_QUERY__TOKEN__ROUTINE", 603 }, + { "ROUTINES", "PG_QUERY__TOKEN__ROUTINES", 604 }, + { "ROW", "PG_QUERY__TOKEN__ROW", 605 }, + { "ROWS", "PG_QUERY__TOKEN__ROWS", 606 }, + { "RULE", "PG_QUERY__TOKEN__RULE", 607 }, + { "SAVEPOINT", "PG_QUERY__TOKEN__SAVEPOINT", 608 }, + { "SCHEMA", "PG_QUERY__TOKEN__SCHEMA", 609 }, + { "SCHEMAS", "PG_QUERY__TOKEN__SCHEMAS", 610 }, + { "SCROLL", "PG_QUERY__TOKEN__SCROLL", 611 }, + { "SEARCH", "PG_QUERY__TOKEN__SEARCH", 612 }, + { "SECOND_P", "PG_QUERY__TOKEN__SECOND_P", 613 }, + { "SECURITY", "PG_QUERY__TOKEN__SECURITY", 614 }, + { "SELECT", "PG_QUERY__TOKEN__SELECT", 615 }, + { "SEQUENCE", "PG_QUERY__TOKEN__SEQUENCE", 616 }, + { "SEQUENCES", "PG_QUERY__TOKEN__SEQUENCES", 617 }, + { "SERIALIZABLE", "PG_QUERY__TOKEN__SERIALIZABLE", 618 }, + { "SERVER", "PG_QUERY__TOKEN__SERVER", 619 }, + { "SESSION", "PG_QUERY__TOKEN__SESSION", 620 }, + { "SESSION_USER", "PG_QUERY__TOKEN__SESSION_USER", 621 }, + { "SET", "PG_QUERY__TOKEN__SET", 622 }, + { "SETS", "PG_QUERY__TOKEN__SETS", 623 }, + { "SETOF", "PG_QUERY__TOKEN__SETOF", 624 }, + { "SHARE", "PG_QUERY__TOKEN__SHARE", 625 }, + { "SHOW", "PG_QUERY__TOKEN__SHOW", 626 }, + { "SIMILAR", "PG_QUERY__TOKEN__SIMILAR", 627 }, + { "SIMPLE", "PG_QUERY__TOKEN__SIMPLE", 628 }, + { "SKIP", "PG_QUERY__TOKEN__SKIP", 629 }, + { "SMALLINT", "PG_QUERY__TOKEN__SMALLINT", 630 }, + { "SNAPSHOT", "PG_QUERY__TOKEN__SNAPSHOT", 631 }, + { "SOME", "PG_QUERY__TOKEN__SOME", 632 }, + { "SQL_P", "PG_QUERY__TOKEN__SQL_P", 633 }, + { "STABLE", "PG_QUERY__TOKEN__STABLE", 634 }, + { "STANDALONE_P", "PG_QUERY__TOKEN__STANDALONE_P", 635 }, + { "START", "PG_QUERY__TOKEN__START", 636 }, + { "STATEMENT", "PG_QUERY__TOKEN__STATEMENT", 637 }, + { "STATISTICS", "PG_QUERY__TOKEN__STATISTICS", 638 }, + { "STDIN", "PG_QUERY__TOKEN__STDIN", 639 }, + { "STDOUT", "PG_QUERY__TOKEN__STDOUT", 640 }, + { "STORAGE", "PG_QUERY__TOKEN__STORAGE", 641 }, + { "STORED", "PG_QUERY__TOKEN__STORED", 642 }, + { "STRICT_P", "PG_QUERY__TOKEN__STRICT_P", 643 }, + { "STRIP_P", "PG_QUERY__TOKEN__STRIP_P", 644 }, + { "SUBSCRIPTION", "PG_QUERY__TOKEN__SUBSCRIPTION", 645 }, + { "SUBSTRING", "PG_QUERY__TOKEN__SUBSTRING", 646 }, + { "SUPPORT", "PG_QUERY__TOKEN__SUPPORT", 647 }, + { "SYMMETRIC", "PG_QUERY__TOKEN__SYMMETRIC", 648 }, + { "SYSID", "PG_QUERY__TOKEN__SYSID", 649 }, + { "SYSTEM_P", "PG_QUERY__TOKEN__SYSTEM_P", 650 }, + { "TABLE", "PG_QUERY__TOKEN__TABLE", 651 }, + { "TABLES", "PG_QUERY__TOKEN__TABLES", 652 }, + { "TABLESAMPLE", "PG_QUERY__TOKEN__TABLESAMPLE", 653 }, + { "TABLESPACE", "PG_QUERY__TOKEN__TABLESPACE", 654 }, + { "TEMP", "PG_QUERY__TOKEN__TEMP", 655 }, + { "TEMPLATE", "PG_QUERY__TOKEN__TEMPLATE", 656 }, + { "TEMPORARY", "PG_QUERY__TOKEN__TEMPORARY", 657 }, + { "TEXT_P", "PG_QUERY__TOKEN__TEXT_P", 658 }, + { "THEN", "PG_QUERY__TOKEN__THEN", 659 }, + { "TIES", "PG_QUERY__TOKEN__TIES", 660 }, + { "TIME", "PG_QUERY__TOKEN__TIME", 661 }, + { "TIMESTAMP", "PG_QUERY__TOKEN__TIMESTAMP", 662 }, + { "TO", "PG_QUERY__TOKEN__TO", 663 }, + { "TRAILING", "PG_QUERY__TOKEN__TRAILING", 664 }, + { "TRANSACTION", "PG_QUERY__TOKEN__TRANSACTION", 665 }, + { "TRANSFORM", "PG_QUERY__TOKEN__TRANSFORM", 666 }, + { "TREAT", "PG_QUERY__TOKEN__TREAT", 667 }, + { "TRIGGER", "PG_QUERY__TOKEN__TRIGGER", 668 }, + { "TRIM", "PG_QUERY__TOKEN__TRIM", 669 }, + { "TRUE_P", "PG_QUERY__TOKEN__TRUE_P", 670 }, + { "TRUNCATE", "PG_QUERY__TOKEN__TRUNCATE", 671 }, + { "TRUSTED", "PG_QUERY__TOKEN__TRUSTED", 672 }, + { "TYPE_P", "PG_QUERY__TOKEN__TYPE_P", 673 }, + { "TYPES_P", "PG_QUERY__TOKEN__TYPES_P", 674 }, + { "UESCAPE", "PG_QUERY__TOKEN__UESCAPE", 675 }, + { "UNBOUNDED", "PG_QUERY__TOKEN__UNBOUNDED", 676 }, + { "UNCOMMITTED", "PG_QUERY__TOKEN__UNCOMMITTED", 677 }, + { "UNENCRYPTED", "PG_QUERY__TOKEN__UNENCRYPTED", 678 }, + { "UNION", "PG_QUERY__TOKEN__UNION", 679 }, + { "UNIQUE", "PG_QUERY__TOKEN__UNIQUE", 680 }, + { "UNKNOWN", "PG_QUERY__TOKEN__UNKNOWN", 681 }, + { "UNLISTEN", "PG_QUERY__TOKEN__UNLISTEN", 682 }, + { "UNLOGGED", "PG_QUERY__TOKEN__UNLOGGED", 683 }, + { "UNTIL", "PG_QUERY__TOKEN__UNTIL", 684 }, + { "UPDATE", "PG_QUERY__TOKEN__UPDATE", 685 }, + { "USER", "PG_QUERY__TOKEN__USER", 686 }, + { "USING", "PG_QUERY__TOKEN__USING", 687 }, + { "VACUUM", "PG_QUERY__TOKEN__VACUUM", 688 }, + { "VALID", "PG_QUERY__TOKEN__VALID", 689 }, + { "VALIDATE", "PG_QUERY__TOKEN__VALIDATE", 690 }, + { "VALIDATOR", "PG_QUERY__TOKEN__VALIDATOR", 691 }, + { "VALUE_P", "PG_QUERY__TOKEN__VALUE_P", 692 }, + { "VALUES", "PG_QUERY__TOKEN__VALUES", 693 }, + { "VARCHAR", "PG_QUERY__TOKEN__VARCHAR", 694 }, + { "VARIADIC", "PG_QUERY__TOKEN__VARIADIC", 695 }, + { "VARYING", "PG_QUERY__TOKEN__VARYING", 696 }, + { "VERBOSE", "PG_QUERY__TOKEN__VERBOSE", 697 }, + { "VERSION_P", "PG_QUERY__TOKEN__VERSION_P", 698 }, + { "VIEW", "PG_QUERY__TOKEN__VIEW", 699 }, + { "VIEWS", "PG_QUERY__TOKEN__VIEWS", 700 }, + { "VOLATILE", "PG_QUERY__TOKEN__VOLATILE", 701 }, + { "WHEN", "PG_QUERY__TOKEN__WHEN", 702 }, + { "WHERE", "PG_QUERY__TOKEN__WHERE", 703 }, + { "WHITESPACE_P", "PG_QUERY__TOKEN__WHITESPACE_P", 704 }, + { "WINDOW", "PG_QUERY__TOKEN__WINDOW", 705 }, + { "WITH", "PG_QUERY__TOKEN__WITH", 706 }, + { "WITHIN", "PG_QUERY__TOKEN__WITHIN", 707 }, + { "WITHOUT", "PG_QUERY__TOKEN__WITHOUT", 708 }, + { "WORK", "PG_QUERY__TOKEN__WORK", 709 }, + { "WRAPPER", "PG_QUERY__TOKEN__WRAPPER", 710 }, + { "WRITE", "PG_QUERY__TOKEN__WRITE", 711 }, + { "XML_P", "PG_QUERY__TOKEN__XML_P", 712 }, + { "XMLATTRIBUTES", "PG_QUERY__TOKEN__XMLATTRIBUTES", 713 }, + { "XMLCONCAT", "PG_QUERY__TOKEN__XMLCONCAT", 714 }, + { "XMLELEMENT", "PG_QUERY__TOKEN__XMLELEMENT", 715 }, + { "XMLEXISTS", "PG_QUERY__TOKEN__XMLEXISTS", 716 }, + { "XMLFOREST", "PG_QUERY__TOKEN__XMLFOREST", 717 }, + { "XMLNAMESPACES", "PG_QUERY__TOKEN__XMLNAMESPACES", 718 }, + { "XMLPARSE", "PG_QUERY__TOKEN__XMLPARSE", 719 }, + { "XMLPI", "PG_QUERY__TOKEN__XMLPI", 720 }, + { "XMLROOT", "PG_QUERY__TOKEN__XMLROOT", 721 }, + { "XMLSERIALIZE", "PG_QUERY__TOKEN__XMLSERIALIZE", 722 }, + { "XMLTABLE", "PG_QUERY__TOKEN__XMLTABLE", 723 }, + { "YEAR_P", "PG_QUERY__TOKEN__YEAR_P", 724 }, + { "YES_P", "PG_QUERY__TOKEN__YES_P", 725 }, + { "ZONE", "PG_QUERY__TOKEN__ZONE", 726 }, + { "NOT_LA", "PG_QUERY__TOKEN__NOT_LA", 727 }, + { "NULLS_LA", "PG_QUERY__TOKEN__NULLS_LA", 728 }, + { "WITH_LA", "PG_QUERY__TOKEN__WITH_LA", 729 }, + { "POSTFIXOP", "PG_QUERY__TOKEN__POSTFIXOP", 730 }, + { "UMINUS", "PG_QUERY__TOKEN__UMINUS", 731 }, +}; +static const ProtobufCIntRange pg_query__token__value_ranges[] = { +{0, 0},{37, 1},{40, 2},{58, 10},{91, 16},{93, 17},{258, 19},{0, 493} +}; +static const ProtobufCEnumValueIndex pg_query__token__enum_values_by_name[493] = +{ + { "ABORT_P", 38 }, + { "ABSOLUTE_P", 39 }, + { "ACCESS", 40 }, + { "ACTION", 41 }, + { "ADD_P", 42 }, + { "ADMIN", 43 }, + { "AFTER", 44 }, + { "AGGREGATE", 45 }, + { "ALL", 46 }, + { "ALSO", 47 }, + { "ALTER", 48 }, + { "ALWAYS", 49 }, + { "ANALYSE", 50 }, + { "ANALYZE", 51 }, + { "AND", 52 }, + { "ANY", 53 }, + { "ARRAY", 54 }, + { "AS", 55 }, + { "ASC", 56 }, + { "ASCII_37", 1 }, + { "ASCII_40", 2 }, + { "ASCII_41", 3 }, + { "ASCII_42", 4 }, + { "ASCII_43", 5 }, + { "ASCII_44", 6 }, + { "ASCII_45", 7 }, + { "ASCII_46", 8 }, + { "ASCII_47", 9 }, + { "ASCII_58", 10 }, + { "ASCII_59", 11 }, + { "ASCII_60", 12 }, + { "ASCII_61", 13 }, + { "ASCII_62", 14 }, + { "ASCII_63", 15 }, + { "ASCII_91", 16 }, + { "ASCII_93", 17 }, + { "ASCII_94", 18 }, + { "ASSERTION", 57 }, + { "ASSIGNMENT", 58 }, + { "ASYMMETRIC", 59 }, + { "AT", 60 }, + { "ATTACH", 61 }, + { "ATTRIBUTE", 62 }, + { "AUTHORIZATION", 63 }, + { "BACKWARD", 64 }, + { "BCONST", 24 }, + { "BEFORE", 65 }, + { "BEGIN_P", 66 }, + { "BETWEEN", 67 }, + { "BIGINT", 68 }, + { "BINARY", 69 }, + { "BIT", 70 }, + { "BOOLEAN_P", 71 }, + { "BOTH", 72 }, + { "BY", 73 }, + { "CACHE", 74 }, + { "CALL", 75 }, + { "CALLED", 76 }, + { "CASCADE", 77 }, + { "CASCADED", 78 }, + { "CASE", 79 }, + { "CAST", 80 }, + { "CATALOG_P", 81 }, + { "CHAIN", 82 }, + { "CHARACTER", 84 }, + { "CHARACTERISTICS", 85 }, + { "CHAR_P", 83 }, + { "CHECK", 86 }, + { "CHECKPOINT", 87 }, + { "CLASS", 88 }, + { "CLOSE", 89 }, + { "CLUSTER", 90 }, + { "COALESCE", 91 }, + { "COLLATE", 92 }, + { "COLLATION", 93 }, + { "COLON_EQUALS", 31 }, + { "COLUMN", 94 }, + { "COLUMNS", 95 }, + { "COMMENT", 96 }, + { "COMMENTS", 97 }, + { "COMMIT", 98 }, + { "COMMITTED", 99 }, + { "CONCURRENTLY", 100 }, + { "CONFIGURATION", 101 }, + { "CONFLICT", 102 }, + { "CONNECTION", 103 }, + { "CONSTRAINT", 104 }, + { "CONSTRAINTS", 105 }, + { "CONTENT_P", 106 }, + { "CONTINUE_P", 107 }, + { "CONVERSION_P", 108 }, + { "COPY", 109 }, + { "COST", 110 }, + { "CREATE", 111 }, + { "CROSS", 112 }, + { "CSV", 113 }, + { "CUBE", 114 }, + { "CURRENT_CATALOG", 116 }, + { "CURRENT_DATE", 117 }, + { "CURRENT_P", 115 }, + { "CURRENT_ROLE", 118 }, + { "CURRENT_SCHEMA", 119 }, + { "CURRENT_TIME", 120 }, + { "CURRENT_TIMESTAMP", 121 }, + { "CURRENT_USER", 122 }, + { "CURSOR", 123 }, + { "CYCLE", 124 }, + { "C_COMMENT", 37 }, + { "DATABASE", 126 }, + { "DATA_P", 125 }, + { "DAY_P", 127 }, + { "DEALLOCATE", 128 }, + { "DEC", 129 }, + { "DECIMAL_P", 130 }, + { "DECLARE", 131 }, + { "DEFAULT", 132 }, + { "DEFAULTS", 133 }, + { "DEFERRABLE", 134 }, + { "DEFERRED", 135 }, + { "DEFINER", 136 }, + { "DELETE_P", 137 }, + { "DELIMITER", 138 }, + { "DELIMITERS", 139 }, + { "DEPENDS", 140 }, + { "DESC", 141 }, + { "DETACH", 142 }, + { "DICTIONARY", 143 }, + { "DISABLE_P", 144 }, + { "DISCARD", 145 }, + { "DISTINCT", 146 }, + { "DO", 147 }, + { "DOCUMENT_P", 148 }, + { "DOMAIN_P", 149 }, + { "DOT_DOT", 30 }, + { "DOUBLE_P", 150 }, + { "DROP", 151 }, + { "EACH", 152 }, + { "ELSE", 153 }, + { "ENABLE_P", 154 }, + { "ENCODING", 155 }, + { "ENCRYPTED", 156 }, + { "END_P", 157 }, + { "ENUM_P", 158 }, + { "EQUALS_GREATER", 32 }, + { "ESCAPE", 159 }, + { "EVENT", 160 }, + { "EXCEPT", 161 }, + { "EXCLUDE", 162 }, + { "EXCLUDING", 163 }, + { "EXCLUSIVE", 164 }, + { "EXECUTE", 165 }, + { "EXISTS", 166 }, + { "EXPLAIN", 167 }, + { "EXPRESSION", 168 }, + { "EXTENSION", 169 }, + { "EXTERNAL", 170 }, + { "EXTRACT", 171 }, + { "FALSE_P", 172 }, + { "FAMILY", 173 }, + { "FCONST", 21 }, + { "FETCH", 174 }, + { "FILTER", 175 }, + { "FIRST_P", 176 }, + { "FLOAT_P", 177 }, + { "FOLLOWING", 178 }, + { "FOR", 179 }, + { "FORCE", 180 }, + { "FOREIGN", 181 }, + { "FORWARD", 182 }, + { "FREEZE", 183 }, + { "FROM", 184 }, + { "FULL", 185 }, + { "FUNCTION", 186 }, + { "FUNCTIONS", 187 }, + { "GENERATED", 188 }, + { "GLOBAL", 189 }, + { "GRANT", 190 }, + { "GRANTED", 191 }, + { "GREATER_EQUALS", 34 }, + { "GREATEST", 192 }, + { "GROUPING", 194 }, + { "GROUPS", 195 }, + { "GROUP_P", 193 }, + { "HANDLER", 196 }, + { "HAVING", 197 }, + { "HEADER_P", 198 }, + { "HOLD", 199 }, + { "HOUR_P", 200 }, + { "ICONST", 27 }, + { "IDENT", 19 }, + { "IDENTITY_P", 201 }, + { "IF_P", 202 }, + { "ILIKE", 203 }, + { "IMMEDIATE", 204 }, + { "IMMUTABLE", 205 }, + { "IMPLICIT_P", 206 }, + { "IMPORT_P", 207 }, + { "INCLUDE", 209 }, + { "INCLUDING", 210 }, + { "INCREMENT", 211 }, + { "INDEX", 212 }, + { "INDEXES", 213 }, + { "INHERIT", 214 }, + { "INHERITS", 215 }, + { "INITIALLY", 216 }, + { "INLINE_P", 217 }, + { "INNER_P", 218 }, + { "INOUT", 219 }, + { "INPUT_P", 220 }, + { "INSENSITIVE", 221 }, + { "INSERT", 222 }, + { "INSTEAD", 223 }, + { "INTEGER", 225 }, + { "INTERSECT", 226 }, + { "INTERVAL", 227 }, + { "INTO", 228 }, + { "INT_P", 224 }, + { "INVOKER", 229 }, + { "IN_P", 208 }, + { "IS", 230 }, + { "ISNULL", 231 }, + { "ISOLATION", 232 }, + { "JOIN", 233 }, + { "KEY", 234 }, + { "LABEL", 235 }, + { "LANGUAGE", 236 }, + { "LARGE_P", 237 }, + { "LAST_P", 238 }, + { "LATERAL_P", 239 }, + { "LEADING", 240 }, + { "LEAKPROOF", 241 }, + { "LEAST", 242 }, + { "LEFT", 243 }, + { "LESS_EQUALS", 33 }, + { "LEVEL", 244 }, + { "LIKE", 245 }, + { "LIMIT", 246 }, + { "LISTEN", 247 }, + { "LOAD", 248 }, + { "LOCAL", 249 }, + { "LOCALTIME", 250 }, + { "LOCALTIMESTAMP", 251 }, + { "LOCATION", 252 }, + { "LOCKED", 254 }, + { "LOCK_P", 253 }, + { "LOGGED", 255 }, + { "MAPPING", 256 }, + { "MATCH", 257 }, + { "MATERIALIZED", 258 }, + { "MAXVALUE", 259 }, + { "METHOD", 260 }, + { "MINUTE_P", 261 }, + { "MINVALUE", 262 }, + { "MODE", 263 }, + { "MONTH_P", 264 }, + { "MOVE", 265 }, + { "NAMES", 267 }, + { "NAME_P", 266 }, + { "NATIONAL", 268 }, + { "NATURAL", 269 }, + { "NCHAR", 270 }, + { "NEW", 271 }, + { "NEXT", 272 }, + { "NFC", 273 }, + { "NFD", 274 }, + { "NFKC", 275 }, + { "NFKD", 276 }, + { "NO", 277 }, + { "NONE", 278 }, + { "NORMALIZE", 279 }, + { "NORMALIZED", 280 }, + { "NOT", 281 }, + { "NOTHING", 282 }, + { "NOTIFY", 283 }, + { "NOTNULL", 284 }, + { "NOT_EQUALS", 35 }, + { "NOT_LA", 488 }, + { "NOWAIT", 285 }, + { "NUL", 0 }, + { "NULLIF", 287 }, + { "NULLS_LA", 489 }, + { "NULLS_P", 288 }, + { "NULL_P", 286 }, + { "NUMERIC", 289 }, + { "OBJECT_P", 290 }, + { "OF", 291 }, + { "OFF", 292 }, + { "OFFSET", 293 }, + { "OIDS", 294 }, + { "OLD", 295 }, + { "ON", 296 }, + { "ONLY", 297 }, + { "OPERATOR", 298 }, + { "OPTION", 299 }, + { "OPTIONS", 300 }, + { "OR", 301 }, + { "ORDER", 302 }, + { "ORDINALITY", 303 }, + { "OTHERS", 304 }, + { "OUTER_P", 306 }, + { "OUT_P", 305 }, + { "OVER", 307 }, + { "OVERLAPS", 308 }, + { "OVERLAY", 309 }, + { "OVERRIDING", 310 }, + { "OWNED", 311 }, + { "OWNER", 312 }, + { "Op", 26 }, + { "PARALLEL", 313 }, + { "PARAM", 28 }, + { "PARSER", 314 }, + { "PARTIAL", 315 }, + { "PARTITION", 316 }, + { "PASSING", 317 }, + { "PASSWORD", 318 }, + { "PLACING", 319 }, + { "PLANS", 320 }, + { "POLICY", 321 }, + { "POSITION", 322 }, + { "POSTFIXOP", 491 }, + { "PRECEDING", 323 }, + { "PRECISION", 324 }, + { "PREPARE", 326 }, + { "PREPARED", 327 }, + { "PRESERVE", 325 }, + { "PRIMARY", 328 }, + { "PRIOR", 329 }, + { "PRIVILEGES", 330 }, + { "PROCEDURAL", 331 }, + { "PROCEDURE", 332 }, + { "PROCEDURES", 333 }, + { "PROGRAM", 334 }, + { "PUBLICATION", 335 }, + { "QUOTE", 336 }, + { "RANGE", 337 }, + { "READ", 338 }, + { "REAL", 339 }, + { "REASSIGN", 340 }, + { "RECHECK", 341 }, + { "RECURSIVE", 342 }, + { "REF", 343 }, + { "REFERENCES", 344 }, + { "REFERENCING", 345 }, + { "REFRESH", 346 }, + { "REINDEX", 347 }, + { "RELATIVE_P", 348 }, + { "RELEASE", 349 }, + { "RENAME", 350 }, + { "REPEATABLE", 351 }, + { "REPLACE", 352 }, + { "REPLICA", 353 }, + { "RESET", 354 }, + { "RESTART", 355 }, + { "RESTRICT", 356 }, + { "RETURNING", 357 }, + { "RETURNS", 358 }, + { "REVOKE", 359 }, + { "RIGHT", 360 }, + { "ROLE", 361 }, + { "ROLLBACK", 362 }, + { "ROLLUP", 363 }, + { "ROUTINE", 364 }, + { "ROUTINES", 365 }, + { "ROW", 366 }, + { "ROWS", 367 }, + { "RULE", 368 }, + { "SAVEPOINT", 369 }, + { "SCHEMA", 370 }, + { "SCHEMAS", 371 }, + { "SCONST", 22 }, + { "SCROLL", 372 }, + { "SEARCH", 373 }, + { "SECOND_P", 374 }, + { "SECURITY", 375 }, + { "SELECT", 376 }, + { "SEQUENCE", 377 }, + { "SEQUENCES", 378 }, + { "SERIALIZABLE", 379 }, + { "SERVER", 380 }, + { "SESSION", 381 }, + { "SESSION_USER", 382 }, + { "SET", 383 }, + { "SETOF", 385 }, + { "SETS", 384 }, + { "SHARE", 386 }, + { "SHOW", 387 }, + { "SIMILAR", 388 }, + { "SIMPLE", 389 }, + { "SKIP", 390 }, + { "SMALLINT", 391 }, + { "SNAPSHOT", 392 }, + { "SOME", 393 }, + { "SQL_COMMENT", 36 }, + { "SQL_P", 394 }, + { "STABLE", 395 }, + { "STANDALONE_P", 396 }, + { "START", 397 }, + { "STATEMENT", 398 }, + { "STATISTICS", 399 }, + { "STDIN", 400 }, + { "STDOUT", 401 }, + { "STORAGE", 402 }, + { "STORED", 403 }, + { "STRICT_P", 404 }, + { "STRIP_P", 405 }, + { "SUBSCRIPTION", 406 }, + { "SUBSTRING", 407 }, + { "SUPPORT", 408 }, + { "SYMMETRIC", 409 }, + { "SYSID", 410 }, + { "SYSTEM_P", 411 }, + { "TABLE", 412 }, + { "TABLES", 413 }, + { "TABLESAMPLE", 414 }, + { "TABLESPACE", 415 }, + { "TEMP", 416 }, + { "TEMPLATE", 417 }, + { "TEMPORARY", 418 }, + { "TEXT_P", 419 }, + { "THEN", 420 }, + { "TIES", 421 }, + { "TIME", 422 }, + { "TIMESTAMP", 423 }, + { "TO", 424 }, + { "TRAILING", 425 }, + { "TRANSACTION", 426 }, + { "TRANSFORM", 427 }, + { "TREAT", 428 }, + { "TRIGGER", 429 }, + { "TRIM", 430 }, + { "TRUE_P", 431 }, + { "TRUNCATE", 432 }, + { "TRUSTED", 433 }, + { "TYPECAST", 29 }, + { "TYPES_P", 435 }, + { "TYPE_P", 434 }, + { "UESCAPE", 436 }, + { "UIDENT", 20 }, + { "UMINUS", 492 }, + { "UNBOUNDED", 437 }, + { "UNCOMMITTED", 438 }, + { "UNENCRYPTED", 439 }, + { "UNION", 440 }, + { "UNIQUE", 441 }, + { "UNKNOWN", 442 }, + { "UNLISTEN", 443 }, + { "UNLOGGED", 444 }, + { "UNTIL", 445 }, + { "UPDATE", 446 }, + { "USCONST", 23 }, + { "USER", 447 }, + { "USING", 448 }, + { "VACUUM", 449 }, + { "VALID", 450 }, + { "VALIDATE", 451 }, + { "VALIDATOR", 452 }, + { "VALUES", 454 }, + { "VALUE_P", 453 }, + { "VARCHAR", 455 }, + { "VARIADIC", 456 }, + { "VARYING", 457 }, + { "VERBOSE", 458 }, + { "VERSION_P", 459 }, + { "VIEW", 460 }, + { "VIEWS", 461 }, + { "VOLATILE", 462 }, + { "WHEN", 463 }, + { "WHERE", 464 }, + { "WHITESPACE_P", 465 }, + { "WINDOW", 466 }, + { "WITH", 467 }, + { "WITHIN", 468 }, + { "WITHOUT", 469 }, + { "WITH_LA", 490 }, + { "WORK", 470 }, + { "WRAPPER", 471 }, + { "WRITE", 472 }, + { "XCONST", 25 }, + { "XMLATTRIBUTES", 474 }, + { "XMLCONCAT", 475 }, + { "XMLELEMENT", 476 }, + { "XMLEXISTS", 477 }, + { "XMLFOREST", 478 }, + { "XMLNAMESPACES", 479 }, + { "XMLPARSE", 480 }, + { "XMLPI", 481 }, + { "XMLROOT", 482 }, + { "XMLSERIALIZE", 483 }, + { "XMLTABLE", 484 }, + { "XML_P", 473 }, + { "YEAR_P", 485 }, + { "YES_P", 486 }, + { "ZONE", 487 }, +}; +const ProtobufCEnumDescriptor pg_query__token__descriptor = +{ + PROTOBUF_C__ENUM_DESCRIPTOR_MAGIC, + "pg_query.Token", + "Token", + "PgQuery__Token", + "pg_query", + 493, + pg_query__token__enum_values_by_number, + 493, + pg_query__token__enum_values_by_name, + 7, + pg_query__token__value_ranges, + NULL,NULL,NULL,NULL /* reserved[1234] */ +}; diff --git a/parser/pg_query_deparse.c b/parser/pg_query_deparse.c new file mode 100644 index 00000000..8f2b5518 --- /dev/null +++ b/parser/pg_query_deparse.c @@ -0,0 +1,9953 @@ +#include "pg_query.h" +#include "pg_query_internal.h" +#include "pg_query_readfuncs.h" + +#include "catalog/index.h" +#include "catalog/pg_am.h" +#include "catalog/pg_attribute.h" +#include "catalog/pg_class.h" +#include "catalog/pg_trigger.h" +#include "commands/trigger.h" +#include "common/keywords.h" +#include "common/kwlookup.h" +#include "lib/stringinfo.h" +#include "limits.h" +#include "nodes/nodes.h" +#include "nodes/parsenodes.h" +#include "nodes/pg_list.h" +#include "utils/builtins.h" +#include "utils/datetime.h" +#include "utils/timestamp.h" +#include "utils/xml.h" + +typedef enum DeparseNodeContext { + DEPARSE_NODE_CONTEXT_NONE, + // Parent node type (and sometimes field) + DEPARSE_NODE_CONTEXT_INSERT_RELATION, + DEPARSE_NODE_CONTEXT_INSERT_ON_CONFLICT, + DEPARSE_NODE_CONTEXT_UPDATE, + DEPARSE_NODE_CONTEXT_RETURNING, + DEPARSE_NODE_CONTEXT_A_EXPR, + DEPARSE_NODE_CONTEXT_XMLATTRIBUTES, + DEPARSE_NODE_CONTEXT_XMLNAMESPACES, + DEPARSE_NODE_CONTEXT_CREATE_TYPE, + DEPARSE_NODE_CONTEXT_ALTER_TYPE, + // Identifier vs constant context + DEPARSE_NODE_CONTEXT_IDENTIFIER, + DEPARSE_NODE_CONTEXT_CONSTANT +} DeparseNodeContext; + +static void +removeTrailingSpace(StringInfo str) +{ + if (str->len >= 1 && str->data[str->len - 1] == ' ') { + str->len -= 1; + str->data[str->len] = '\0'; + } +} + +/* + * Append a SQL string literal representing "val" to buf. + * + * Copied here from postgres_fdw/deparse.c to avoid adding + * many additional dependencies. + */ +static void +deparseStringLiteral(StringInfo buf, const char *val) +{ + const char *valptr; + + /* + * Rather than making assumptions about the remote server's value of + * standard_conforming_strings, always use E'foo' syntax if there are any + * backslashes. This will fail on remote servers before 8.1, but those + * are long out of support. + */ + if (strchr(val, '\\') != NULL) + appendStringInfoChar(buf, ESCAPE_STRING_SYNTAX); + appendStringInfoChar(buf, '\''); + for (valptr = val; *valptr; valptr++) + { + char ch = *valptr; + + if (SQL_STR_DOUBLE(ch, true)) + appendStringInfoChar(buf, ch); + appendStringInfoChar(buf, ch); + } + appendStringInfoChar(buf, '\''); +} + +// Check whether the value is a reserved keyword, to determine escaping for output +// +// Note that since the parser lowercases all keywords, this does *not* match when the +// value is not all-lowercase and a reserved keyword. +static bool +isReservedKeyword(const char *val) +{ + int kwnum = ScanKeywordLookup(val, &ScanKeywords); + bool all_lower_case = true; + const char *cp; + + for (cp = val; *cp; cp++) + { + if (!( + (*cp >= 'a' && *cp <= 'z') || + (*cp >= '0' && *cp <= '9') || + (*cp == '_'))) + { + all_lower_case = false; + break; + } + } + + return all_lower_case && kwnum >= 0 && ScanKeywordCategories[kwnum] == RESERVED_KEYWORD; +} + +// Returns whether the given value consists only of operator characters +static bool +isOp(const char *val) +{ + const char *cp; + + Assert(strlen(val) > 0); + + for (cp = val; *cp; cp++) + { + if (!( + *cp == '~' || + *cp == '!' || + *cp == '@' || + *cp == '#' || + *cp == '^' || + *cp == '&' || + *cp == '|' || + *cp == '`' || + *cp == '?' || + *cp == '+' || + *cp == '-' || + *cp == '*' || + *cp == '/' || + *cp == '%' || + *cp == '<' || + *cp == '>' || + *cp == '=')) + return false; + } + + return true; +} + +static void deparseSelectStmt(StringInfo str, SelectStmt *stmt); +static void deparseIntoClause(StringInfo str, IntoClause *into_clause); +static void deparseRangeVar(StringInfo str, RangeVar *range_var, DeparseNodeContext context); +static void deparseResTarget(StringInfo str, ResTarget *res_target, DeparseNodeContext context); +static void deparseRawStmt(StringInfo str, RawStmt *raw_stmt); +static void deparseAlias(StringInfo str, Alias *alias); +static void deparseWindowDef(StringInfo str, WindowDef* window_def); +static void deparseColumnRef(StringInfo str, ColumnRef* column_ref); +static void deparseSubLink(StringInfo str, SubLink* sub_link); +static void deparseAExpr(StringInfo str, A_Expr* a_expr, DeparseNodeContext context); +static void deparseBoolExpr(StringInfo str, BoolExpr *bool_expr); +static void deparseAStar(StringInfo str, A_Star* a_star); +static void deparseCollateClause(StringInfo str, CollateClause* collate_clause); +static void deparseSortBy(StringInfo str, SortBy* sort_by); +static void deparseParamRef(StringInfo str, ParamRef* param_ref); +static void deparseSQLValueFunction(StringInfo str, SQLValueFunction* sql_value_function); +static void deparseWithClause(StringInfo str, WithClause *with_clause); +static void deparseJoinExpr(StringInfo str, JoinExpr *join_expr); +static void deparseCommonTableExpr(StringInfo str, CommonTableExpr *cte); +static void deparseRangeSubselect(StringInfo str, RangeSubselect *range_subselect); +static void deparseRangeFunction(StringInfo str, RangeFunction *range_func); +static void deparseAArrayExpr(StringInfo str, A_ArrayExpr * array_expr); +static void deparseRowExpr(StringInfo str, RowExpr *row_expr); +static void deparseTypeCast(StringInfo str, TypeCast *type_cast); +static void deparseTypeName(StringInfo str, TypeName *type_name); +static void deparseNullTest(StringInfo str, NullTest *null_test); +static void deparseCaseExpr(StringInfo str, CaseExpr *case_expr); +static void deparseCaseWhen(StringInfo str, CaseWhen *case_when); +static void deparseAIndirection(StringInfo str, A_Indirection *a_indirection); +static void deparseAIndices(StringInfo str, A_Indices *a_indices); +static void deparseCoalesceExpr(StringInfo str, CoalesceExpr *coalesce_expr); +static void deparseBooleanTest(StringInfo str, BooleanTest *boolean_test); +static void deparseColumnDef(StringInfo str, ColumnDef *column_def); +static void deparseInsertStmt(StringInfo str, InsertStmt *insert_stmt); +static void deparseOnConflictClause(StringInfo str, OnConflictClause *on_conflict_clause); +static void deparseIndexElem(StringInfo str, IndexElem* index_elem); +static void deparseUpdateStmt(StringInfo str, UpdateStmt *update_stmt); +static void deparseDeleteStmt(StringInfo str, DeleteStmt *delete_stmt); +static void deparseLockingClause(StringInfo str, LockingClause *locking_clause); +static void deparseSetToDefault(StringInfo str, SetToDefault *set_to_default); +static void deparseCreateCastStmt(StringInfo str, CreateCastStmt *create_cast_stmt); +static void deparseCreateDomainStmt(StringInfo str, CreateDomainStmt *create_domain_stmt); +static void deparseFunctionParameter(StringInfo str, FunctionParameter *function_parameter); +static void deparseRoleSpec(StringInfo str, RoleSpec *role_spec); +static void deparseViewStmt(StringInfo str, ViewStmt *view_stmt); +static void deparseVariableSetStmt(StringInfo str, VariableSetStmt* variable_set_stmt); +static void deparseReplicaIdentityStmt(StringInfo str, ReplicaIdentityStmt *replica_identity_stmt); +static void deparseRangeTableSample(StringInfo str, RangeTableSample *range_table_sample); +static void deparseRangeTableFunc(StringInfo str, RangeTableFunc* range_table_func); +static void deparseGroupingSet(StringInfo str, GroupingSet *grouping_set); +static void deparseFuncCall(StringInfo str, FuncCall *func_call); +static void deparseMinMaxExpr(StringInfo str, MinMaxExpr *min_max_expr); +static void deparseXmlExpr(StringInfo str, XmlExpr* xml_expr); +static void deparseXmlSerialize(StringInfo str, XmlSerialize *xml_serialize); +static void deparseConstraint(StringInfo str, Constraint *constraint); +static void deparseSchemaStmt(StringInfo str, Node *node); +static void deparseExecuteStmt(StringInfo str, ExecuteStmt *execute_stmt); +static void deparseTriggerTransition(StringInfo str, TriggerTransition *trigger_transition); +static void deparseCreateOpClassItem(StringInfo str, CreateOpClassItem *create_op_class_item); +static void deparseAConst(StringInfo str, A_Const *a_const); +static void deparseCurrentOfExpr(StringInfo str, CurrentOfExpr *current_of_expr); +static void deparseGroupingFunc(StringInfo str, GroupingFunc *grouping_func); + +static void deparsePreparableStmt(StringInfo str, Node *node); +static void deparseRuleActionStmt(StringInfo str, Node *node); +static void deparseExplainableStmt(StringInfo str, Node *node); +static void deparseStmt(StringInfo str, Node *node); +static void deparseValue(StringInfo str, Value *value, DeparseNodeContext context); + +// "any_name" in gram.y +static void deparseAnyName(StringInfo str, List *parts) +{ + ListCell *lc = NULL; + + foreach(lc, parts) + { + Assert(IsA(lfirst(lc), String)); + appendStringInfoString(str, quote_identifier(strVal(lfirst(lc)))); + if (lnext(parts, lc)) + appendStringInfoChar(str, '.'); + } +} +static void deparseAnyNameSkipFirst(StringInfo str, List *parts) +{ + ListCell *lc = NULL; + + for_each_from(lc, parts, 1) + { + Assert(IsA(lfirst(lc), String)); + appendStringInfoString(str, quote_identifier(strVal(lfirst(lc)))); + if (lnext(parts, lc)) + appendStringInfoChar(str, '.'); + } +} +static void deparseAnyNameSkipLast(StringInfo str, List *parts) +{ + ListCell *lc = NULL; + + foreach (lc, parts) + { + if (lnext(parts, lc)) + { + appendStringInfoString(str, quote_identifier(strVal(lfirst(lc)))); + if (foreach_current_index(lc) < list_length(parts) - 2) + appendStringInfoChar(str, '.'); + } + } +} + +// "a_expr" / "b_expr" in gram.y +static void deparseExpr(StringInfo str, Node *node) +{ + switch (nodeTag(node)) + { + case T_FuncCall: + deparseFuncCall(str, castNode(FuncCall, node)); + break; + case T_XmlExpr: + deparseXmlExpr(str, castNode(XmlExpr, node)); + break; + case T_TypeCast: + deparseTypeCast(str, castNode(TypeCast, node)); + break; + case T_A_Const: + deparseAConst(str, castNode(A_Const, node)); + break; + case T_ColumnRef: + deparseColumnRef(str, castNode(ColumnRef, node)); + break; + case T_A_Expr: + deparseAExpr(str, castNode(A_Expr, node), DEPARSE_NODE_CONTEXT_NONE); + break; + case T_CaseExpr: + deparseCaseExpr(str, castNode(CaseExpr, node)); + break; + case T_A_ArrayExpr: + deparseAArrayExpr(str, castNode(A_ArrayExpr, node)); + break; + case T_NullTest: + deparseNullTest(str, castNode(NullTest, node)); + break; + case T_XmlSerialize: + deparseXmlSerialize(str, castNode(XmlSerialize, node)); + break; + case T_ParamRef: + deparseParamRef(str, castNode(ParamRef, node)); + break; + case T_BoolExpr: + deparseBoolExpr(str, castNode(BoolExpr, node)); + break; + case T_SubLink: + deparseSubLink(str, castNode(SubLink, node)); + break; + case T_RowExpr: + deparseRowExpr(str, castNode(RowExpr, node)); + break; + case T_CoalesceExpr: + deparseCoalesceExpr(str, castNode(CoalesceExpr, node)); + break; + case T_SetToDefault: + deparseSetToDefault(str, castNode(SetToDefault, node)); + break; + case T_A_Indirection: + deparseAIndirection(str, castNode(A_Indirection, node)); + break; + case T_CollateClause: + deparseCollateClause(str, castNode(CollateClause, node)); + break; + case T_CurrentOfExpr: + deparseCurrentOfExpr(str, castNode(CurrentOfExpr, node)); + break; + case T_SQLValueFunction: + deparseSQLValueFunction(str, castNode(SQLValueFunction, node)); + break; + case T_MinMaxExpr: + deparseMinMaxExpr(str, castNode(MinMaxExpr, node)); + break; + case T_BooleanTest: + deparseBooleanTest(str, castNode(BooleanTest, node)); + break; + case T_GroupingFunc: + deparseGroupingFunc(str, castNode(GroupingFunc, node)); + break; + default: + Assert(false); + elog(ERROR, "unpermitted node type in a_expr/b_expr: %d", + (int) nodeTag(node)); + break; + } +} + +// "c_expr" in gram.y +static void deparseCExpr(StringInfo str, Node *node) +{ + switch (nodeTag(node)) + { + case T_ColumnRef: + deparseColumnRef(str, castNode(ColumnRef, node)); + break; + case T_A_Const: + deparseAConst(str, castNode(A_Const, node)); + break; + case T_TypeCast: + deparseTypeCast(str, castNode(TypeCast, node)); + break; + case T_A_Expr: + appendStringInfoChar(str, '('); + deparseAExpr(str, castNode(A_Expr, node), DEPARSE_NODE_CONTEXT_NONE); + appendStringInfoChar(str, ')'); + break; + case T_ParamRef: + deparseParamRef(str, castNode(ParamRef, node)); + break; + case T_A_Indirection: + deparseAIndirection(str, castNode(A_Indirection, node)); + break; + case T_CaseExpr: + deparseCaseExpr(str, castNode(CaseExpr, node)); + break; + case T_FuncCall: + deparseFuncCall(str, castNode(FuncCall, node)); + break; + case T_SubLink: + deparseSubLink(str, castNode(SubLink, node)); + break; + case T_A_ArrayExpr: + deparseAArrayExpr(str, castNode(A_ArrayExpr, node)); + break; + case T_RowExpr: + deparseRowExpr(str, castNode(RowExpr, node)); + break; + case T_GroupingFunc: + deparseGroupingFunc(str, castNode(GroupingFunc, node)); + break; + default: + Assert(false); + elog(ERROR, "unpermitted node type in c_expr: %d", + (int) nodeTag(node)); + break; + } +} + +// "expr_list" in gram.y +static void deparseExprList(StringInfo str, List *exprs) +{ + ListCell *lc; + + foreach(lc, exprs) + { + deparseExpr(str, lfirst(lc)); + if (lnext(exprs, lc)) + appendStringInfoString(str, ", "); + } +} + +// "ColId", "name", "database_name", "access_method" and "index_name" in gram.y +static void deparseColId(StringInfo str, char *s) +{ + appendStringInfoString(str, quote_identifier(s)); +} + +// "ColLabel", "attr_name" +// +// Note this is kept separate from ColId in case we ever want to be more +// specific on how to handle keywords here +static void deparseColLabel(StringInfo str, char *s) +{ + appendStringInfoString(str, quote_identifier(s)); +} + +// "SignedIconst" and "Iconst" in gram.y +static void deparseSignedIconst(StringInfo str, Node *node) +{ + appendStringInfo(str, "%d", intVal(node)); +} + +// "indirection" and "opt_indirection" in gram.y +static void deparseOptIndirection(StringInfo str, List *indirection, int N) +{ + ListCell *lc = NULL; + + for_each_from(lc, indirection, N) + { + if (IsA(lfirst(lc), String)) + { + appendStringInfoChar(str, '.'); + deparseColLabel(str, strVal(lfirst(lc))); + } + else if (IsA(lfirst(lc), A_Star)) + { + appendStringInfoString(str, ".*"); + } + else if (IsA(lfirst(lc), A_Indices)) + { + deparseAIndices(str, castNode(A_Indices, lfirst(lc))); + } + else + { + // No other nodes should appear here + Assert(false); + } + } +} + +// "role_list" in gram.y +static void deparseRoleList(StringInfo str, List *roles) +{ + ListCell *lc; + + foreach(lc, roles) + { + RoleSpec *role_spec = castNode(RoleSpec, lfirst(lc)); + deparseRoleSpec(str, role_spec); + if (lnext(roles, lc)) + appendStringInfoString(str, ", "); + } +} + +// "SimpleTypename" in gram.y +static void deparseSimpleTypename(StringInfo str, Node *node) +{ + deparseTypeName(str, castNode(TypeName, node)); +} + +// "NumericOnly" in gram.y +static void deparseNumericOnly(StringInfo str, Value *value) +{ + switch (nodeTag(value)) + { + case T_Integer: + appendStringInfo(str, "%d", value->val.ival); + break; + case T_Float: + appendStringInfoString(str, value->val.str); + break; + default: + Assert(false); + } +} + +// "NumericOnly_list" in gram.y +static void deparseNumericOnlyList(StringInfo str, List *l) +{ + ListCell *lc = NULL; + + foreach(lc, l) + { + deparseNumericOnly(str, (Value *) lfirst(lc)); + if (lnext(l, lc)) + appendStringInfoString(str, ", "); + } +} + +// "SeqOptElem" in gram.y +static void deparseSeqOptElem(StringInfo str, DefElem *def_elem) +{ + ListCell *lc; + + if (strcmp(def_elem->defname, "as") == 0) + { + appendStringInfoString(str, "AS "); + deparseSimpleTypename(str, def_elem->arg); + } + else if (strcmp(def_elem->defname, "cache") == 0) + { + appendStringInfoString(str, "CACHE "); + deparseNumericOnly(str, (Value *) def_elem->arg); + } + else if (strcmp(def_elem->defname, "cycle") == 0 && intVal(def_elem->arg) == 1) + { + appendStringInfoString(str, "CYCLE"); + } + else if (strcmp(def_elem->defname, "cycle") == 0 && intVal(def_elem->arg) == 0) + { + appendStringInfoString(str, "NO CYCLE"); + } + else if (strcmp(def_elem->defname, "increment") == 0) + { + appendStringInfoString(str, "INCREMENT "); + deparseNumericOnly(str, (Value *) def_elem->arg); + } + else if (strcmp(def_elem->defname, "maxvalue") == 0 && def_elem->arg != NULL) + { + appendStringInfoString(str, "MAXVALUE "); + deparseNumericOnly(str, (Value *) def_elem->arg); + } + else if (strcmp(def_elem->defname, "maxvalue") == 0 && def_elem->arg == NULL) + { + appendStringInfoString(str, "NO MAXVALUE"); + } + else if (strcmp(def_elem->defname, "minvalue") == 0 && def_elem->arg != NULL) + { + appendStringInfoString(str, "MINVALUE "); + deparseNumericOnly(str, (Value *) def_elem->arg); + } + else if (strcmp(def_elem->defname, "minvalue") == 0 && def_elem->arg == NULL) + { + appendStringInfoString(str, "NO MINVALUE"); + } + else if (strcmp(def_elem->defname, "owned_by") == 0) + { + appendStringInfoString(str, "OWNED BY "); + deparseAnyName(str, castNode(List, def_elem->arg)); + } + else if (strcmp(def_elem->defname, "sequence_name") == 0) + { + appendStringInfoString(str, "SEQUENCE NAME "); + deparseAnyName(str, castNode(List, def_elem->arg)); + } + else if (strcmp(def_elem->defname, "start") == 0) + { + appendStringInfoString(str, "START "); + deparseNumericOnly(str, (Value *) def_elem->arg); + } + else if (strcmp(def_elem->defname, "restart") == 0 && def_elem->arg == NULL) + { + appendStringInfoString(str, "RESTART"); + } + else if (strcmp(def_elem->defname, "restart") == 0 && def_elem->arg != NULL) + { + appendStringInfoString(str, "RESTART "); + deparseNumericOnly(str, (Value *) def_elem->arg); + } + else + { + Assert(false); + } +} + +// "SeqOptList" in gram.y +static void deparseSeqOptList(StringInfo str, List *options) +{ + ListCell *lc; + Assert(list_length(options) > 0); + foreach (lc, options) + { + deparseSeqOptElem(str, castNode(DefElem, lfirst(lc))); + appendStringInfoChar(str, ' '); + } +} + +// "OptSeqOptList" in gram.y +static void deparseOptSeqOptList(StringInfo str, List *options) +{ + if (list_length(options) > 0) + deparseSeqOptList(str, options); +} + +// "OptParenthesizedSeqOptList" in gram.y +static void deparseOptParenthesizedSeqOptList(StringInfo str, List *options) +{ + if (list_length(options) > 0) + { + appendStringInfoChar(str, '('); + deparseSeqOptList(str, options); + appendStringInfoChar(str, ')'); + } +} + +// "opt_drop_behavior" in gram.y +static void deparseOptDropBehavior(StringInfo str, DropBehavior behavior) +{ + switch (behavior) + { + case DROP_RESTRICT: + // Default + break; + case DROP_CASCADE: + appendStringInfoString(str, "CASCADE "); + break; + } +} + +// "any_operator" in gram.y +static void deparseAnyOperator(StringInfo str, List *op) +{ + Assert(isOp(strVal(llast(op)))); + if (list_length(op) == 2) + { + appendStringInfoString(str, quote_identifier(strVal(linitial(op)))); + appendStringInfoChar(str, '.'); + appendStringInfoString(str, strVal(llast(op))); + } + else if (list_length(op) == 1) + { + appendStringInfoString(str, strVal(llast(op))); + } + else + { + Assert(false); + } +} + +// "qual_Op" and "qual_all_Op" in gram.y +static void deparseQualOp(StringInfo str, List *op) +{ + if (list_length(op) == 1 && isOp(strVal(linitial(op)))) + { + appendStringInfoString(str, strVal(linitial(op))); + } + else + { + appendStringInfoString(str, "OPERATOR("); + deparseAnyOperator(str, op); + appendStringInfoString(str, ")"); + } +} + +// "subquery_Op" in gram.y +static void deparseSubqueryOp(StringInfo str, List *op) +{ + if (list_length(op) == 1 && strcmp(strVal(linitial(op)), "~~") == 0) + { + appendStringInfoString(str, "LIKE"); + } + else if (list_length(op) == 1 && strcmp(strVal(linitial(op)), "!~~") == 0) + { + appendStringInfoString(str, "NOT LIKE"); + } + else if (list_length(op) == 1 && strcmp(strVal(linitial(op)), "~~*") == 0) + { + appendStringInfoString(str, "ILIKE"); + } + else if (list_length(op) == 1 && strcmp(strVal(linitial(op)), "!~~*") == 0) + { + appendStringInfoString(str, "NOT ILIKE"); + } + else if (list_length(op) == 1 && isOp(strVal(linitial(op)))) + { + appendStringInfoString(str, strVal(linitial(op))); + } + else + { + appendStringInfoString(str, "OPERATOR("); + deparseAnyOperator(str, op); + appendStringInfoString(str, ")"); + } +} + +// Not present directly in gram.y (usually matched by ColLabel) +static void deparseGenericDefElemName(StringInfo str, const char *in) +{ + Assert(in != NULL); + char *val = pstrdup(in); + for (unsigned char *p = (unsigned char *) val; *p; p++) + *p = pg_toupper(*p); + appendStringInfoString(str, val); + pfree(val); +} + +// "def_arg" and "operator_def_arg" in gram.y +static void deparseDefArg(StringInfo str, Node *arg, bool is_operator_def_arg) +{ + if (IsA(arg, TypeName)) // func_type + { + deparseTypeName(str, castNode(TypeName, arg)); + } + else if (IsA(arg, List)) // qual_all_Op + { + List *l = castNode(List, arg); + Assert(list_length(l) == 1 || list_length(l) == 2); + + // Schema qualified operator + if (list_length(l) == 2) + { + appendStringInfoString(str, "OPERATOR("); + deparseAnyOperator(str, l); + appendStringInfoChar(str, ')'); + } + else if (list_length(l) == 1) + { + appendStringInfoString(str, strVal(linitial(l))); + } + } + else if (IsA(arg, Float) || IsA(arg, Integer)) // NumericOnly + { + deparseValue(str, (Value *) arg, DEPARSE_NODE_CONTEXT_NONE); + } + else if (IsA(arg, String)) + { + char *s = strVal(arg); + if (!is_operator_def_arg && IsA(arg, String) && strcmp(s, "none") == 0) // NONE + { + appendStringInfoString(str, "NONE"); + } + else if (isReservedKeyword(s)) // reserved_keyword + { + appendStringInfoString(str, s); + } + else // Sconst + { + deparseStringLiteral(str, s); + } + } + else + { + Assert(false); + } +} + +// "definition" in gram.y +static void deparseDefinition(StringInfo str, List *options) +{ + ListCell *lc = NULL; + + appendStringInfoChar(str, '('); + foreach (lc, options) + { + DefElem *def_elem = castNode(DefElem, lfirst(lc)); + appendStringInfoString(str, quote_identifier(def_elem->defname)); + if (def_elem->arg != NULL) { + appendStringInfoString(str, " = "); + deparseDefArg(str, def_elem->arg, false); + } + + if (lnext(options, lc)) + appendStringInfoString(str, ", "); + } + appendStringInfoChar(str, ')'); +} + +// "opt_definition" in gram.y +// +// Note this method adds a trailing space if a value is output +static void deparseOptDefinition(StringInfo str, List *options) +{ + if (list_length(options) > 0) + { + appendStringInfoString(str, "WITH "); + deparseDefinition(str, options); + } +} + +// "create_generic_options" in gram.y +static void deparseCreateGenericOptions(StringInfo str, List *options) +{ + ListCell *lc = NULL; + + if (options == NULL) + return; + + appendStringInfoString(str, "OPTIONS ("); + foreach(lc, options) + { + DefElem *def_elem = castNode(DefElem, lfirst(lc)); + appendStringInfoString(str, quote_identifier(def_elem->defname)); + appendStringInfoChar(str, ' '); + deparseStringLiteral(str, strVal(def_elem->arg)); + if (lnext(options, lc)) + appendStringInfoString(str, ", "); + } + appendStringInfoString(str, ") "); +} + +// "common_func_opt_item" in gram.y +static void deparseCommonFuncOptItem(StringInfo str, DefElem *def_elem) +{ + if (strcmp(def_elem->defname, "strict") == 0 && intVal(def_elem->arg) == 1) + { + appendStringInfoString(str, "RETURNS NULL ON NULL INPUT"); + } + else if (strcmp(def_elem->defname, "strict") == 0 && intVal(def_elem->arg) == 0) + { + appendStringInfoString(str, "CALLED ON NULL INPUT"); + } + else if (strcmp(def_elem->defname, "volatility") == 0 && strcmp(strVal(def_elem->arg), "immutable") == 0) + { + appendStringInfoString(str, "IMMUTABLE"); + } + else if (strcmp(def_elem->defname, "volatility") == 0 && strcmp(strVal(def_elem->arg), "stable") == 0) + { + appendStringInfoString(str, "STABLE"); + } + else if (strcmp(def_elem->defname, "volatility") == 0 && strcmp(strVal(def_elem->arg), "volatile") == 0) + { + appendStringInfoString(str, "VOLATILE"); + } + else if (strcmp(def_elem->defname, "security") == 0 && intVal(def_elem->arg) == 1) + { + appendStringInfoString(str, "SECURITY DEFINER"); + } + else if (strcmp(def_elem->defname, "security") == 0 && intVal(def_elem->arg) == 0) + { + appendStringInfoString(str, "SECURITY INVOKER"); + } + else if (strcmp(def_elem->defname, "leakproof") == 0 && intVal(def_elem->arg) == 1) + { + appendStringInfoString(str, "LEAKPROOF"); + } + else if (strcmp(def_elem->defname, "leakproof") == 0 && intVal(def_elem->arg) == 0) + { + appendStringInfoString(str, "NOT LEAKPROOF"); + } + else if (strcmp(def_elem->defname, "cost") == 0) + { + appendStringInfoString(str, "COST "); + deparseValue(str, (Value *) def_elem->arg, DEPARSE_NODE_CONTEXT_NONE); + } + else if (strcmp(def_elem->defname, "rows") == 0) + { + appendStringInfoString(str, "ROWS "); + deparseValue(str, (Value *) def_elem->arg, DEPARSE_NODE_CONTEXT_NONE); + } + else if (strcmp(def_elem->defname, "support") == 0) + { + appendStringInfoString(str, "SUPPORT "); + deparseAnyName(str, castNode(List, def_elem->arg)); + } + else if (strcmp(def_elem->defname, "set") == 0 && IsA(def_elem->arg, VariableSetStmt)) // FunctionSetResetClause + { + deparseVariableSetStmt(str, castNode(VariableSetStmt, def_elem->arg)); + } + else if (strcmp(def_elem->defname, "parallel") == 0) + { + appendStringInfoString(str, "PARALLEL "); + appendStringInfoString(str, quote_identifier(strVal(def_elem->arg))); + } + else + { + Assert(false); + } +} + +// "NonReservedWord_or_Sconst" in gram.y +// +// Note since both identifiers and string constants are allowed here, we +// currently always return an identifier, except: +// +// 1) when the string is empty (since an empty identifier can't be scanned) +// 2) when the value is equal or larger than NAMEDATALEN (64+ characters) +static void deparseNonReservedWordOrSconst(StringInfo str, const char *val) +{ + if (strlen(val) == 0) + appendStringInfoString(str, "''"); + else if (strlen(val) >= NAMEDATALEN) + deparseStringLiteral(str, val); + else + appendStringInfoString(str, quote_identifier(val)); +} + +// "func_as" in gram.y +static void deparseFuncAs(StringInfo str, List *l) +{ + ListCell *lc = NULL; + + foreach(lc, l) + { + char *strval = strVal(lfirst(lc)); + if (strstr(strval, "$$") == NULL) + { + appendStringInfoString(str, "$$"); + appendStringInfoString(str, strval); + appendStringInfoString(str, "$$"); + } + else + { + deparseStringLiteral(str, strval); + } + + if (lnext(l, lc)) + appendStringInfoString(str, ", "); + } +} + +// "createfunc_opt_item" in gram.y +static void deparseCreateFuncOptItem(StringInfo str, DefElem *def_elem) +{ + ListCell *lc = NULL; + + if (strcmp(def_elem->defname, "as") == 0) + { + appendStringInfoString(str, "AS "); + deparseFuncAs(str, castNode(List, def_elem->arg)); + } + else if (strcmp(def_elem->defname, "language") == 0) + { + appendStringInfoString(str, "LANGUAGE "); + deparseNonReservedWordOrSconst(str, strVal(def_elem->arg)); + } + else if (strcmp(def_elem->defname, "transform") == 0) + { + List *l = castNode(List, def_elem->arg); + appendStringInfoString(str, "TRANSFORM "); + foreach (lc, l) + { + appendStringInfoString(str, "FOR TYPE "); + deparseTypeName(str, castNode(TypeName, lfirst(lc))); + if (lnext(l, lc)) + appendStringInfoString(str, ", "); + } + } + else if (strcmp(def_elem->defname, "window") == 0) + { + appendStringInfoString(str, "WINDOW"); + } + else + { + deparseCommonFuncOptItem(str, def_elem); + } +} + +// "alter_generic_options" in gram.y +static void deparseAlterGenericOptions(StringInfo str, List *options) +{ + ListCell *lc = NULL; + + appendStringInfoString(str, "OPTIONS ("); + foreach(lc, options) + { + DefElem *def_elem = castNode(DefElem, lfirst(lc)); + switch (def_elem->defaction) + { + case DEFELEM_UNSPEC: + appendStringInfoString(str, quote_identifier(def_elem->defname)); + appendStringInfoChar(str, ' '); + deparseStringLiteral(str, strVal(def_elem->arg)); + break; + case DEFELEM_SET: + appendStringInfoString(str, "SET "); + appendStringInfoString(str, quote_identifier(def_elem->defname)); + appendStringInfoChar(str, ' '); + deparseStringLiteral(str, strVal(def_elem->arg)); + break; + case DEFELEM_ADD: + appendStringInfoString(str, "ADD "); + appendStringInfoString(str, quote_identifier(def_elem->defname)); + appendStringInfoChar(str, ' '); + deparseStringLiteral(str, strVal(def_elem->arg)); + break; + case DEFELEM_DROP: + appendStringInfoString(str, "DROP "); + appendStringInfoString(str, quote_identifier(def_elem->defname)); + break; + } + + if (lnext(options, lc)) + appendStringInfoString(str, ", "); + } + appendStringInfoString(str, ") "); +} + +// "func_name" in gram.y +static void deparseFuncName(StringInfo str, List *func_name) +{ + ListCell *lc = NULL; + + foreach(lc, func_name) + { + appendStringInfoString(str, quote_identifier(strVal(lfirst(lc)))); + if (lnext(func_name, lc)) + appendStringInfoChar(str, '.'); + } +} + +// "function_with_argtypes" in gram.y +static void deparseFunctionWithArgtypes(StringInfo str, ObjectWithArgs *object_with_args) +{ + ListCell *lc; + + deparseFuncName(str, object_with_args->objname); + + if (!object_with_args->args_unspecified) + { + appendStringInfoChar(str, '('); + foreach(lc, object_with_args->objargs) + { + if (IsA(lfirst(lc), TypeName)) + deparseTypeName(str, castNode(TypeName, lfirst(lc))); + else + deparseFunctionParameter(str, castNode(FunctionParameter, lfirst(lc))); + if (lnext(object_with_args->objargs, lc)) + appendStringInfoString(str, ", "); + } + appendStringInfoChar(str, ')'); + } +} + +// "function_with_argtypes_list" in gram.y +static void deparseFunctionWithArgtypesList(StringInfo str, List *l) +{ + ListCell *lc; + + foreach(lc, l) + { + deparseFunctionWithArgtypes(str, castNode(ObjectWithArgs, lfirst(lc))); + if (lnext(l, lc)) + appendStringInfoString(str, ", "); + } +} + +// "operator_with_argtypes" in gram.y +static void deparseOperatorWithArgtypes(StringInfo str, ObjectWithArgs *object_with_args) +{ + deparseAnyOperator(str, object_with_args->objname); + + Assert(list_length(object_with_args->objargs) == 2); + appendStringInfoChar(str, '('); + if (linitial(object_with_args->objargs) == NULL) + appendStringInfoString(str, "NONE"); + else + deparseTypeName(str, castNode(TypeName, linitial(object_with_args->objargs))); + appendStringInfoString(str, ", "); + if (lsecond(object_with_args->objargs) == NULL) + appendStringInfoString(str, "NONE"); + else + deparseTypeName(str, castNode(TypeName, lsecond(object_with_args->objargs))); + appendStringInfoChar(str, ')'); +} + +// "aggr_args" in gram.y +static void deparseAggrArgs(StringInfo str, List *aggr_args) +{ + Assert(list_length(aggr_args) == 2); + + ListCell *lc = NULL; + List *args = linitial(aggr_args); + int order_by_pos = intVal(lsecond(aggr_args)); + + appendStringInfoChar(str, '('); + if (args == NULL) + { + appendStringInfoChar(str, '*'); + } + else + { + foreach(lc, args) + { + if (foreach_current_index(lc) == order_by_pos) + { + if (foreach_current_index(lc) > 0) + appendStringInfoChar(str, ' '); + appendStringInfoString(str, "ORDER BY "); + } + else if (foreach_current_index(lc) > 0) + { + appendStringInfoString(str, ", "); + } + + deparseFunctionParameter(str, castNode(FunctionParameter, lfirst(lc))); + } + + // Repeat the last direct arg as a ordered arg to handle the + // simplification done by makeOrderedSetArgs in gram.y + if (order_by_pos == list_length(args)) + { + appendStringInfoString(str, " ORDER BY "); + deparseFunctionParameter(str, castNode(FunctionParameter, llast(args))); + } + } + appendStringInfoChar(str, ')'); +} + +// "aggregate_with_argtypes" in gram.y +static void deparseAggregateWithArgtypes(StringInfo str, ObjectWithArgs *object_with_args) +{ + ListCell *lc = NULL; + + deparseFuncName(str, object_with_args->objname); + + appendStringInfoChar(str, '('); + if (object_with_args->objargs == NULL) + { + appendStringInfoChar(str, '*'); + } + else + { + foreach(lc, object_with_args->objargs) + { + deparseTypeName(str, castNode(TypeName, lfirst(lc))); + if (lnext(object_with_args->objargs, lc)) + appendStringInfoString(str, ", "); + } + } + appendStringInfoChar(str, ')'); +} + +// "columnList" in gram.y +static void deparseColumnList(StringInfo str, List *columns) +{ + ListCell *lc = NULL; + foreach(lc, columns) + { + appendStringInfoString(str, quote_identifier(strVal(lfirst(lc)))); + if (lnext(columns, lc)) + appendStringInfoString(str, ", "); + } +} + +// "OptTemp" in gram.y +// +// Note this method adds a trailing space if a value is output +static void deparseOptTemp(StringInfo str, char relpersistence) +{ + switch (relpersistence) + { + case RELPERSISTENCE_PERMANENT: + // Default + break; + case RELPERSISTENCE_UNLOGGED: + appendStringInfoString(str, "UNLOGGED "); + break; + case RELPERSISTENCE_TEMP: + appendStringInfoString(str, "TEMPORARY "); + break; + default: + Assert(false); + break; + } +} + +// "relation_expr_list" in gram.y +static void deparseRelationExprList(StringInfo str, List *relation_exprs) +{ + ListCell *lc = NULL; + foreach(lc, relation_exprs) + { + deparseRangeVar(str, castNode(RangeVar, lfirst(lc)), DEPARSE_NODE_CONTEXT_NONE); + if (lnext(relation_exprs, lc)) + appendStringInfoString(str, ", "); + } +} + +// "handler_name" in gram.y +static void deparseHandlerName(StringInfo str, List *handler_name) +{ + ListCell *lc = NULL; + + foreach(lc, handler_name) + { + appendStringInfoString(str, quote_identifier(strVal(lfirst(lc)))); + if (lnext(handler_name, lc)) + appendStringInfoChar(str, '.'); + } +} + +// "fdw_options" in gram.y +static void deparseFdwOptions(StringInfo str, List *fdw_options) +{ + ListCell *lc = NULL; + + foreach (lc, fdw_options) + { + DefElem *def_elem = castNode(DefElem, lfirst(lc)); + if (strcmp(def_elem->defname, "handler") == 0 && def_elem->arg != NULL) + { + appendStringInfoString(str, "HANDLER "); + deparseHandlerName(str, castNode(List, def_elem->arg)); + } + else if (strcmp(def_elem->defname, "handler") == 0 && def_elem->arg == NULL) + { + appendStringInfoString(str, "NO HANDLER "); + } + else if (strcmp(def_elem->defname, "validator") == 0 && def_elem->arg != NULL) + { + appendStringInfoString(str, "VALIDATOR "); + deparseHandlerName(str, castNode(List, def_elem->arg)); + } + else if (strcmp(def_elem->defname, "validator") == 0 && def_elem->arg == NULL) + { + appendStringInfoString(str, "NO VALIDATOR "); + } + else + { + Assert(false); + } + + if (lnext(fdw_options, lc)) + appendStringInfoChar(str, ' '); + } +} + +// "type_list" in gram.y +static void deparseTypeList(StringInfo str, List *type_list) +{ + ListCell *lc = NULL; + foreach(lc, type_list) + { + deparseTypeName(str, castNode(TypeName, lfirst(lc))); + if (lnext(type_list, lc)) + appendStringInfoString(str, ", "); + } +} + +// "opt_boolean_or_string" in gram.y +static void deparseOptBooleanOrString(StringInfo str, char *s) +{ + if (s == NULL) + return; // No value set + else if (strcmp(s, "true") == 0) + appendStringInfoString(str, "TRUE"); + else if (strcmp(s, "false") == 0) + appendStringInfoString(str, "FALSE"); + else if (strcmp(s, "on") == 0) + appendStringInfoString(str, "ON"); + else if (strcmp(s, "off") == 0) + appendStringInfoString(str, "OFF"); + else + deparseNonReservedWordOrSconst(str, s); +} + +// "var_name" +// +// Note this is kept separate from ColId in case we want to improve the +// output of namespaced variable names +static void deparseVarName(StringInfo str, char *s) +{ + deparseColId(str, s); +} + +// "var_list" +static void deparseVarList(StringInfo str, List *l) +{ + ListCell *lc = NULL; + + foreach(lc, l) + { + if (IsA(lfirst(lc), ParamRef)) + { + deparseParamRef(str, castNode(ParamRef, lfirst(lc))); + } + else if (IsA(lfirst(lc), A_Const)) + { + A_Const *a_const = castNode(A_Const, lfirst(lc)); + if (IsA(&a_const->val, Integer) || IsA(&a_const->val, Float)) + deparseNumericOnly(str, (Value *) &a_const->val); + else if (IsA(&a_const->val, String)) + deparseOptBooleanOrString(str, strVal(&a_const->val)); + else + Assert(false); + } + else + { + Assert(false); + } + + if (lnext(l, lc)) + appendStringInfoString(str, ", "); + } +} + +// "transaction_mode_list" in gram.y +static void deparseTransactionModeList(StringInfo str, List *l) +{ + ListCell *lc = NULL; + + foreach (lc, l) + { + DefElem *def_elem = castNode(DefElem, lfirst(lc)); + + if (strcmp(def_elem->defname, "transaction_isolation") == 0) + { + char *s = strVal(&castNode(A_Const, def_elem->arg)->val); + appendStringInfoString(str, "ISOLATION LEVEL "); + if (strcmp(s, "read uncommitted") == 0) + appendStringInfoString(str, "READ UNCOMMITTED"); + else if (strcmp(s, "read committed") == 0) + appendStringInfoString(str, "READ COMMITTED"); + else if (strcmp(s, "repeatable read") == 0) + appendStringInfoString(str, "REPEATABLE READ"); + else if (strcmp(s, "serializable") == 0) + appendStringInfoString(str, "SERIALIZABLE"); + else + Assert(false); + } + else if (strcmp(def_elem->defname, "transaction_read_only") == 0 && intVal(&castNode(A_Const, def_elem->arg)->val) == 1) + { + appendStringInfoString(str, "READ ONLY"); + } + else if (strcmp(def_elem->defname, "transaction_read_only") == 0 && intVal(&castNode(A_Const, def_elem->arg)->val) == 0) + { + appendStringInfoString(str, "READ WRITE"); + } + else if (strcmp(def_elem->defname, "transaction_deferrable") == 0 && intVal(&castNode(A_Const, def_elem->arg)->val) == 1) + { + appendStringInfoString(str, "DEFERRABLE"); + } + else if (strcmp(def_elem->defname, "transaction_deferrable") == 0 && intVal(&castNode(A_Const, def_elem->arg)->val) == 0) + { + appendStringInfoString(str, "NOT DEFERRABLE"); + } + else + { + Assert(false); + } + + if (lnext(l, lc)) + appendStringInfoString(str, ", "); + } +} + +// "alter_identity_column_option_list" in gram.y +static void deparseAlterIdentityColumnOptionList(StringInfo str, List *l) +{ + ListCell *lc = NULL; + + foreach (lc, l) + { + DefElem *def_elem = castNode(DefElem, lfirst(lc)); + if (strcmp(def_elem->defname, "restart") == 0 && def_elem->arg == NULL) + { + appendStringInfoString(str, "RESTART"); + } + else if (strcmp(def_elem->defname, "restart") == 0 && def_elem->arg != NULL) + { + appendStringInfoString(str, "RESTART "); + deparseNumericOnly(str, (Value *) def_elem->arg); + } + else if (strcmp(def_elem->defname, "generated") == 0) + { + appendStringInfoString(str, "SET GENERATED "); + if (intVal(def_elem->arg) == ATTRIBUTE_IDENTITY_ALWAYS) + appendStringInfoString(str, "ALWAYS"); + else if (intVal(def_elem->arg) == ATTRIBUTE_IDENTITY_BY_DEFAULT) + appendStringInfoString(str, "BY DEFAULT"); + else + Assert(false); + } + else + { + appendStringInfoString(str, "SET "); + deparseSeqOptElem(str, def_elem); + } + if (lnext(l, lc)) + appendStringInfoChar(str, ' '); + } +} + +// "reloptions" in gram.y +static void deparseRelOptions(StringInfo str, List *l) +{ + ListCell *lc = NULL; + + appendStringInfoChar(str, '('); + foreach(lc, l) + { + DefElem *def_elem = castNode(DefElem, lfirst(lc)); + if (def_elem->defnamespace != NULL) + { + appendStringInfoString(str, quote_identifier(def_elem->defnamespace)); + appendStringInfoChar(str, '.'); + } + if (def_elem->defname != NULL) + appendStringInfoString(str, quote_identifier(def_elem->defname)); + if (def_elem->defname != NULL && def_elem->arg != NULL) + appendStringInfoChar(str, '='); + if (def_elem->arg != NULL) + deparseDefArg(str, def_elem->arg, false); + + if (lnext(l, lc)) + appendStringInfoString(str, ", "); + } + appendStringInfoChar(str, ')'); +} + +// "OptWith" and "opt_reloptions" in gram.y +// +// Note this method adds a trailing space if a value is output +static void deparseOptWith(StringInfo str, List *l) +{ + ListCell *lc = NULL; + + if (list_length(l) > 0) + { + appendStringInfoString(str, "WITH "); + deparseRelOptions(str, l); + appendStringInfoChar(str, ' '); + } +} + +// "target_list" and "opt_target_list" in gram.y +static void deparseTargetList(StringInfo str, List *l) +{ + ListCell *lc = NULL; + + foreach(lc, l) + { + ResTarget *res_target = castNode(ResTarget, lfirst(lc)); + + if (res_target->val == NULL) + elog(ERROR, "deparse error in deparseTargetList: ResTarget without val"); + else if (IsA(res_target->val, ColumnRef)) + deparseColumnRef(str, castNode(ColumnRef, res_target->val)); + else + deparseExpr(str, res_target->val); + + if (res_target->name != NULL) { + appendStringInfoString(str, " AS "); + appendStringInfoString(str, quote_identifier(res_target->name)); + } + + if (lnext(l, lc)) + appendStringInfoString(str, ", "); + } +} + +// "insert_column_list" in gram.y +static void deparseInsertColumnList(StringInfo str, List *l) +{ + ListCell *lc = NULL; + + foreach(lc, l) + { + ResTarget *res_target = castNode(ResTarget, lfirst(lc)); + Assert(res_target->name != NULL); + appendStringInfoString(str, quote_identifier(res_target->name)); + deparseOptIndirection(str, res_target->indirection, 0); + if (lnext(l, lc)) + appendStringInfoString(str, ", "); + } +} + +// "xml_attribute_list" in gram.y +static void deparseXmlAttributeList(StringInfo str, List *l) +{ + ListCell *lc = NULL; + + foreach(lc, l) + { + ResTarget *res_target = castNode(ResTarget, lfirst(lc)); + Assert(res_target->val != NULL); + + deparseExpr(str, res_target->val); + + if (res_target->name != NULL) + { + appendStringInfoString(str, " AS "); + appendStringInfoString(str, quote_identifier(res_target->name)); + } + + if (lnext(l, lc)) + appendStringInfoString(str, ", "); + } +} + +// "xml_namespace_list" in gram.y +static void deparseXmlNamespaceList(StringInfo str, List *l) +{ + ListCell *lc = NULL; + + foreach(lc, l) + { + ResTarget *res_target = castNode(ResTarget, lfirst(lc)); + Assert(res_target->val != NULL); + + if (res_target->name == NULL) + appendStringInfoString(str, "DEFAULT "); + + deparseExpr(str, res_target->val); + + if (res_target->name != NULL) + { + appendStringInfoString(str, " AS "); + appendStringInfoString(str, quote_identifier(res_target->name)); + } + + if (lnext(l, lc)) + appendStringInfoString(str, ", "); + } +} + +// "table_ref" in gram.y +static void deparseTableRef(StringInfo str, Node *node) +{ + switch (nodeTag(node)) + { + case T_RangeVar: + deparseRangeVar(str, castNode(RangeVar, node), DEPARSE_NODE_CONTEXT_NONE); + break; + case T_RangeTableSample: + deparseRangeTableSample(str, castNode(RangeTableSample, node)); + break; + case T_RangeFunction: + deparseRangeFunction(str, castNode(RangeFunction, node)); + break; + case T_RangeTableFunc: + deparseRangeTableFunc(str, castNode(RangeTableFunc, node)); + break; + case T_RangeSubselect: + deparseRangeSubselect(str, castNode(RangeSubselect, node)); + break; + case T_JoinExpr: + deparseJoinExpr(str, castNode(JoinExpr, node)); + break; + default: + Assert(false); + } +} + +// "from_list" in gram.y +static void deparseFromList(StringInfo str, List *l) +{ + ListCell *lc = NULL; + + foreach(lc, l) + { + deparseTableRef(str, lfirst(lc)); + if (lnext(l, lc)) + appendStringInfoString(str, ", "); + } +} + +// "from_clause" in gram.y +// +// Note this method adds a trailing space if a value is output +static void deparseFromClause(StringInfo str, List *l) +{ + if (list_length(l) > 0) + { + appendStringInfoString(str, "FROM "); + deparseFromList(str, l); + appendStringInfoChar(str, ' '); + } +} + +// "where_clause" in gram.y +// +// Note this method adds a trailing space if a value is output +static void deparseWhereClause(StringInfo str, Node *node) +{ + if (node != NULL) + { + appendStringInfoString(str, "WHERE "); + deparseExpr(str, node); + appendStringInfoChar(str, ' '); + } +} + +// "group_by_list" in gram.y +static void deparseGroupByList(StringInfo str, List *l) +{ + ListCell *lc = NULL; + + foreach(lc, l) + { + if (IsA(lfirst(lc), GroupingSet)) + deparseGroupingSet(str, castNode(GroupingSet, lfirst(lc))); + else + deparseExpr(str, lfirst(lc)); + + if (lnext(l, lc)) + appendStringInfoString(str, ", "); + } +} + +// "set_target" in gram.y +static void deparseSetTarget(StringInfo str, ResTarget *res_target) +{ + Assert(res_target->name != NULL); + deparseColId(str, res_target->name); + deparseOptIndirection(str, res_target->indirection, 0); +} + +// "any_name_list" in gram.y +static void deparseAnyNameList(StringInfo str, List *l) +{ + ListCell *lc = NULL; + + foreach(lc, l) + { + deparseAnyName(str, castNode(List, lfirst(lc))); + if (lnext(l, lc)) + appendStringInfoString(str, ", "); + } +} + +// "name_list" in gram.y +static void deparseNameList(StringInfo str, List *l) +{ + ListCell *lc = NULL; + + foreach(lc, l) + { + deparseColId(str, strVal(lfirst(lc))); + if (lnext(l, lc)) + appendStringInfoString(str, ", "); + } +} + +// "opt_sort_clause" in gram.y +// +// Note this method adds a trailing space if a value is output +static void deparseOptSortClause(StringInfo str, List *l) +{ + ListCell *lc = NULL; + + if (list_length(l) > 0) + { + appendStringInfoString(str, "ORDER BY "); + + foreach(lc, l) + { + deparseSortBy(str, castNode(SortBy, lfirst(lc))); + if (lnext(l, lc)) + appendStringInfoString(str, ", "); + } + appendStringInfoChar(str, ' '); + } +} + +// "func_arg_expr" in gram.y +static void deparseFuncArgExpr(StringInfo str, Node *node) +{ + if (IsA(node, NamedArgExpr)) + { + NamedArgExpr *named_arg_expr = castNode(NamedArgExpr, node); + appendStringInfoString(str, named_arg_expr->name); + appendStringInfoString(str, " := "); + deparseExpr(str, (Node *) named_arg_expr->arg); + } + else + { + deparseExpr(str, node); + } +} + +// "set_clause_list" in gram.y +static void deparseSetClauseList(StringInfo str, List *target_list) +{ + ListCell *lc; + ListCell *lc2; + int skip_next_n_elems = 0; + + Assert(list_length(target_list) > 0); + + foreach(lc, target_list) + { + if (skip_next_n_elems > 0) + { + skip_next_n_elems--; + continue; + } + + if (foreach_current_index(lc) != 0) + appendStringInfoString(str, ", "); + + ResTarget *res_target = castNode(ResTarget, lfirst(lc)); + Assert(res_target->val != NULL); + + if (IsA(res_target->val, MultiAssignRef)) + { + MultiAssignRef *r = castNode(MultiAssignRef, res_target->val); + appendStringInfoString(str, "("); + for_each_cell(lc2, target_list, lc) + { + deparseSetTarget(str, castNode(ResTarget, lfirst(lc2))); + if (foreach_current_index(lc2) == r->ncolumns - 1) // Last element in this multi-assign + break; + else if (lnext(target_list, lc2)) + appendStringInfoString(str, ", "); + } + appendStringInfoString(str, ") = "); + deparseExpr(str, r->source); + skip_next_n_elems = r->ncolumns - 1; + } + else + { + deparseSetTarget(str, res_target); + appendStringInfoString(str, " = "); + deparseExpr(str, res_target->val); + } + } +} + +// "func_expr_windowless" in gram.y +static void deparseFuncExprWindowless(StringInfo str, Node* node) +{ + switch (nodeTag(node)) + { + case T_FuncCall: + deparseFuncCall(str, castNode(FuncCall, node)); + break; + case T_SQLValueFunction: + deparseSQLValueFunction(str, castNode(SQLValueFunction, node)); + break; + case T_TypeCast: + deparseTypeCast(str, castNode(TypeCast, node)); + break; + case T_CoalesceExpr: + deparseCoalesceExpr(str, castNode(CoalesceExpr, node)); + break; + case T_MinMaxExpr: + deparseMinMaxExpr(str, castNode(MinMaxExpr, node)); + break; + case T_XmlExpr: + deparseXmlExpr(str, castNode(XmlExpr, node)); + break; + case T_XmlSerialize: + deparseXmlSerialize(str, castNode(XmlSerialize, node)); + break; + default: + Assert(false); + } +} + +// "opt_collate" in gram.y +// +// Note this method adds a trailing space if a value is output +static void deparseOptCollate(StringInfo str, List *l) +{ + if (list_length(l) > 0) + { + appendStringInfoString(str, "COLLATE "); + deparseAnyName(str, l); + appendStringInfoChar(str, ' '); + } +} + +// "index_elem" in gram.y +static void deparseIndexElem(StringInfo str, IndexElem* index_elem) +{ + if (index_elem->name != NULL) + { + deparseColId(str, index_elem->name); + appendStringInfoChar(str, ' '); + } + else if (index_elem->expr != NULL) + { + switch (nodeTag(index_elem->expr)) + { + case T_FuncCall: + case T_SQLValueFunction: + case T_TypeCast: + case T_CoalesceExpr: + case T_MinMaxExpr: + case T_XmlExpr: + case T_XmlSerialize: + deparseFuncExprWindowless(str, index_elem->expr); + break; + default: + appendStringInfoChar(str, '('); + deparseExpr(str, index_elem->expr); + appendStringInfoString(str, ") "); + } + } + else + { + Assert(false); + } + + deparseOptCollate(str, index_elem->collation); + + if (list_length(index_elem->opclass) > 0) + { + deparseAnyName(str, index_elem->opclass); + + if (list_length(index_elem->opclassopts) > 0) + deparseRelOptions(str, index_elem->opclassopts); + + appendStringInfoChar(str, ' '); + } + + switch (index_elem->ordering) + { + case SORTBY_DEFAULT: + // Default + break; + case SORTBY_ASC: + appendStringInfoString(str, "ASC "); + break; + case SORTBY_DESC: + appendStringInfoString(str, "DESC "); + break; + case SORTBY_USING: + // Not allowed in CREATE INDEX + Assert(false); + break; + } + + switch (index_elem->nulls_ordering) + { + case SORTBY_NULLS_DEFAULT: + // Default + break; + case SORTBY_NULLS_FIRST: + appendStringInfoString(str, "NULLS FIRST "); + break; + case SORTBY_NULLS_LAST: + appendStringInfoString(str, "NULLS LAST "); + break; + } + + removeTrailingSpace(str); +} + +// "qualified_name_list" in gram.y +static void deparseQualifiedNameList(StringInfo str, List *l) +{ + ListCell *lc = NULL; + + foreach(lc, l) + { + deparseRangeVar(str, castNode(RangeVar, lfirst(lc)), DEPARSE_NODE_CONTEXT_NONE); + if (lnext(l, lc)) + appendStringInfoString(str, ", "); + } +} + +// "OptInherit" in gram.y +// +// Note this method adds a trailing space if a value is output +static void deparseOptInherit(StringInfo str, List *l) +{ + if (list_length(l) > 0) + { + appendStringInfoString(str, "INHERITS ("); + deparseQualifiedNameList(str, l); + appendStringInfoString(str, ") "); + } +} + +// "privilege_target" in gram.y +static void deparsePrivilegeTarget(StringInfo str, GrantTargetType targtype, ObjectType objtype, List *objs) +{ + switch (targtype) + { + case ACL_TARGET_OBJECT: + switch (objtype) + { + case OBJECT_TABLE: + deparseQualifiedNameList(str, objs); + break; + case OBJECT_SEQUENCE: + appendStringInfoString(str, "SEQUENCE "); + deparseQualifiedNameList(str, objs); + break; + case OBJECT_FDW: + appendStringInfoString(str, "FOREIGN DATA WRAPPER "); + deparseNameList(str, objs); + break; + case OBJECT_FOREIGN_SERVER: + appendStringInfoString(str, "FOREIGN SERVER "); + deparseNameList(str, objs); + break; + case OBJECT_FUNCTION: + appendStringInfoString(str, "FUNCTION "); + deparseFunctionWithArgtypesList(str, objs); + break; + case OBJECT_PROCEDURE: + appendStringInfoString(str, "PROCEDURE "); + deparseFunctionWithArgtypesList(str, objs); + break; + case OBJECT_ROUTINE: + appendStringInfoString(str, "ROUTINE "); + deparseFunctionWithArgtypesList(str, objs); + break; + case OBJECT_DATABASE: + appendStringInfoString(str, "DATABASE "); + deparseNameList(str, objs); + break; + case OBJECT_DOMAIN: + appendStringInfoString(str, "DOMAIN "); + deparseAnyNameList(str, objs); + break; + case OBJECT_LANGUAGE: + appendStringInfoString(str, "LANGUAGE "); + deparseNameList(str, objs); + break; + case OBJECT_LARGEOBJECT: + appendStringInfoString(str, "LARGE OBJECT "); + deparseNumericOnlyList(str, objs); + break; + case OBJECT_SCHEMA: + appendStringInfoString(str, "SCHEMA "); + deparseNameList(str, objs); + break; + case OBJECT_TABLESPACE: + appendStringInfoString(str, "TABLESPACE "); + deparseNameList(str, objs); + break; + case OBJECT_TYPE: + appendStringInfoString(str, "TYPE "); + deparseAnyNameList(str, objs); + break; + default: + // Other types are not supported here + Assert(false); + break; + } + break; + case ACL_TARGET_ALL_IN_SCHEMA: + switch (objtype) + { + case OBJECT_TABLE: + appendStringInfoString(str, "ALL TABLES IN SCHEMA "); + deparseNameList(str, objs); + break; + case OBJECT_SEQUENCE: + appendStringInfoString(str, "ALL SEQUENCES IN SCHEMA "); + deparseNameList(str, objs); + break; + case OBJECT_FUNCTION: + appendStringInfoString(str, "ALL FUNCTIONS IN SCHEMA "); + deparseNameList(str, objs); + break; + case OBJECT_PROCEDURE: + appendStringInfoString(str, "ALL PROCEDURES IN SCHEMA "); + deparseNameList(str, objs); + break; + case OBJECT_ROUTINE: + appendStringInfoString(str, "ALL ROUTINES IN SCHEMA "); + deparseNameList(str, objs); + break; + default: + // Other types are not supported here + Assert(false); + break; + } + break; + case ACL_TARGET_DEFAULTS: // defacl_privilege_target + switch (objtype) + { + case OBJECT_TABLE: + appendStringInfoString(str, "TABLES"); + break; + case OBJECT_FUNCTION: + appendStringInfoString(str, "FUNCTIONS"); + break; + case OBJECT_SEQUENCE: + appendStringInfoString(str, "SEQUENCES"); + break; + case OBJECT_TYPE: + appendStringInfoString(str, "TYPES"); + break; + case OBJECT_SCHEMA: + appendStringInfoString(str, "SCHEMAS"); + break; + default: + // Other types are not supported here + Assert(false); + break; + } + break; + } +} + +// "opclass_item_list" in gram.y +static void deparseOpclassItemList(StringInfo str, List *items) +{ + ListCell *lc = NULL; + + foreach (lc, items) + { + deparseCreateOpClassItem(str, castNode(CreateOpClassItem, lfirst(lc))); + if (lnext(items, lc)) + appendStringInfoString(str, ", "); + } +} + +// "createdb_opt_list" in gram.y +static void deparseCreatedbOptList(StringInfo str, List *l) +{ + ListCell *lc = NULL; + + foreach (lc, l) + { + DefElem *def_elem = castNode(DefElem, lfirst(lc)); + if (strcmp(def_elem->defname, "connection_limit") == 0) + appendStringInfoString(str, "CONNECTION LIMIT"); + else + deparseGenericDefElemName(str, def_elem->defname); + + appendStringInfoChar(str, ' '); + + if (def_elem->arg == NULL) + appendStringInfoString(str, "DEFAULT"); + else if (IsA(def_elem->arg, Integer)) + deparseSignedIconst(str, def_elem->arg); + else if (IsA(def_elem->arg, String)) + deparseOptBooleanOrString(str, strVal(def_elem->arg)); + + if (lnext(l, lc)) + appendStringInfoChar(str, ' '); + } +} + +static void deparseSelectStmt(StringInfo str, SelectStmt *stmt) +{ + const ListCell *lc = NULL; + const ListCell *lc2 = NULL; + + if (stmt->withClause) + { + deparseWithClause(str, stmt->withClause); + appendStringInfoChar(str, ' '); + } + + switch (stmt->op) { + case SETOP_NONE: + if (list_length(stmt->valuesLists) > 0) + { + const ListCell *lc; + appendStringInfoString(str, "VALUES "); + + foreach(lc, stmt->valuesLists) + { + appendStringInfoChar(str, '('); + deparseExprList(str, lfirst(lc)); + appendStringInfoChar(str, ')'); + if (lnext(stmt->valuesLists, lc)) + appendStringInfoString(str, ", "); + } + appendStringInfoChar(str, ' '); + break; + } + + appendStringInfoString(str, "SELECT "); + + if (list_length(stmt->targetList) > 0) + { + if (stmt->distinctClause != NULL) + { + appendStringInfoString(str, "DISTINCT "); + + if (list_length(stmt->distinctClause) > 0 && linitial(stmt->distinctClause) != NULL) + { + appendStringInfoString(str, "ON ("); + deparseExprList(str, stmt->distinctClause); + appendStringInfoString(str, ") "); + } + } + + deparseTargetList(str, stmt->targetList); + appendStringInfoChar(str, ' '); + } + + if (stmt->intoClause != NULL) + { + appendStringInfoString(str, "INTO "); + deparseOptTemp(str, stmt->intoClause->rel->relpersistence); + deparseIntoClause(str, stmt->intoClause); + appendStringInfoChar(str, ' '); + } + + deparseFromClause(str, stmt->fromClause); + deparseWhereClause(str, stmt->whereClause); + + if (list_length(stmt->groupClause) > 0) + { + appendStringInfoString(str, "GROUP BY "); + deparseGroupByList(str, stmt->groupClause); + appendStringInfoChar(str, ' '); + } + + if (stmt->havingClause != NULL) + { + appendStringInfoString(str, "HAVING "); + deparseExpr(str, stmt->havingClause); + appendStringInfoChar(str, ' '); + } + + if (stmt->windowClause != NULL) + { + appendStringInfoString(str, "WINDOW "); + foreach(lc, stmt->windowClause) + { + WindowDef *window_def = castNode(WindowDef, lfirst(lc)); + Assert(window_def->name != NULL); + appendStringInfoString(str, window_def->name); + appendStringInfoString(str, " AS "); + deparseWindowDef(str, window_def); + if (lnext(stmt->windowClause, lc)) + appendStringInfoString(str, ", "); + } + appendStringInfoChar(str, ' '); + } + break; + case SETOP_UNION: + case SETOP_INTERSECT: + case SETOP_EXCEPT: + { + bool need_larg_parens = + list_length(stmt->larg->sortClause) > 0 || + stmt->larg->limitOffset != NULL || + stmt->larg->limitCount != NULL || + list_length(stmt->larg->lockingClause) > 0 || + stmt->larg->withClause != NULL || + stmt->larg->op != SETOP_NONE; + bool need_rarg_parens = + list_length(stmt->rarg->sortClause) > 0 || + stmt->rarg->limitOffset != NULL || + stmt->rarg->limitCount != NULL || + list_length(stmt->rarg->lockingClause) > 0 || + stmt->rarg->withClause != NULL || + stmt->rarg->op != SETOP_NONE; + if (need_larg_parens) + appendStringInfoChar(str, '('); + deparseSelectStmt(str, stmt->larg); + if (need_larg_parens) + appendStringInfoChar(str, ')'); + switch (stmt->op) + { + case SETOP_UNION: + appendStringInfoString(str, " UNION "); + break; + case SETOP_INTERSECT: + appendStringInfoString(str, " INTERSECT "); + break; + case SETOP_EXCEPT: + appendStringInfoString(str, " EXCEPT "); + break; + default: + Assert(false); + } + if (stmt->all) + appendStringInfoString(str, "ALL "); + if (need_rarg_parens) + appendStringInfoChar(str, '('); + deparseSelectStmt(str, stmt->rarg); + if (need_rarg_parens) + appendStringInfoChar(str, ')'); + appendStringInfoChar(str, ' '); + } + break; + } + + deparseOptSortClause(str, stmt->sortClause); + + if (stmt->limitCount != NULL) + { + if (stmt->limitOption == LIMIT_OPTION_COUNT) + appendStringInfoString(str, "LIMIT "); + else if (stmt->limitOption == LIMIT_OPTION_WITH_TIES) + appendStringInfoString(str, "FETCH FIRST "); + + if (IsA(stmt->limitCount, A_Const) && IsA(&castNode(A_Const, stmt->limitCount)->val, Null)) + appendStringInfoString(str, "ALL"); + else + deparseCExpr(str, stmt->limitCount); + + appendStringInfoChar(str, ' '); + + if (stmt->limitOption == LIMIT_OPTION_WITH_TIES) + appendStringInfoString(str, "ROWS WITH TIES "); + } + + if (stmt->limitOffset != NULL) + { + appendStringInfoString(str, "OFFSET "); + deparseExpr(str, stmt->limitOffset); + appendStringInfoChar(str, ' '); + } + + if (list_length(stmt->lockingClause) > 0) + { + foreach(lc, stmt->lockingClause) + { + deparseLockingClause(str, castNode(LockingClause, lfirst(lc))); + if (lnext(stmt->lockingClause, lc)) + appendStringInfoString(str, " "); + } + appendStringInfoChar(str, ' '); + } + + removeTrailingSpace(str); +} + +static void deparseIntoClause(StringInfo str, IntoClause *into_clause) +{ + ListCell *lc; + + deparseRangeVar(str, into_clause->rel, DEPARSE_NODE_CONTEXT_NONE); /* target relation name */ + + if (list_length(into_clause->colNames) > 0) + { + appendStringInfoChar(str, '('); + deparseColumnList(str, into_clause->colNames); + appendStringInfoChar(str, ')'); + } + appendStringInfoChar(str, ' '); + + if (into_clause->accessMethod != NULL) + { + appendStringInfoString(str, "USING "); + appendStringInfoString(str, quote_identifier(into_clause->accessMethod)); + appendStringInfoChar(str, ' '); + } + + deparseOptWith(str, into_clause->options); + + switch (into_clause->onCommit) + { + case ONCOMMIT_NOOP: + // No clause + break; + case ONCOMMIT_PRESERVE_ROWS: + appendStringInfoString(str, "ON COMMIT PRESERVE ROWS "); + break; + case ONCOMMIT_DELETE_ROWS: + appendStringInfoString(str, "ON COMMIT DELETE ROWS "); + break; + case ONCOMMIT_DROP: + appendStringInfoString(str, "ON COMMIT DROP "); + break; + } + + if (into_clause->tableSpaceName != NULL) + { + appendStringInfoString(str, "TABLESPACE "); + appendStringInfoString(str, quote_identifier(into_clause->tableSpaceName)); + appendStringInfoChar(str, ' '); + } + + removeTrailingSpace(str); +} + +static void deparseRangeVar(StringInfo str, RangeVar *range_var, DeparseNodeContext context) +{ + if (!range_var->inh && context != DEPARSE_NODE_CONTEXT_CREATE_TYPE && context != DEPARSE_NODE_CONTEXT_ALTER_TYPE) + appendStringInfoString(str, "ONLY "); + + if (range_var->schemaname != NULL) + { + appendStringInfoString(str, quote_identifier(range_var->schemaname)); + appendStringInfoChar(str, '.'); + } + + Assert(range_var->relname != NULL); + appendStringInfoString(str, quote_identifier(range_var->relname)); + appendStringInfoChar(str, ' '); + + if (range_var->alias != NULL) + { + if (context == DEPARSE_NODE_CONTEXT_INSERT_RELATION) + appendStringInfoString(str, "AS "); + deparseAlias(str, range_var->alias); + appendStringInfoChar(str, ' '); + } + + removeTrailingSpace(str); +} + +static void deparseRawStmt(StringInfo str, RawStmt *raw_stmt) +{ + deparseStmt(str, raw_stmt->stmt); +} + +static void deparseAlias(StringInfo str, Alias *alias) +{ + appendStringInfoString(str, quote_identifier(alias->aliasname)); + + if (list_length(alias->colnames) > 0) + { + const ListCell *lc = NULL; + appendStringInfoChar(str, '('); + deparseNameList(str, alias->colnames); + appendStringInfoChar(str, ')'); + } +} + +static void deparseAConst(StringInfo str, A_Const *a_const) +{ + deparseValue(str, &a_const->val, DEPARSE_NODE_CONTEXT_CONSTANT); +} + +static void deparseFuncCall(StringInfo str, FuncCall *func_call) +{ + const ListCell *lc = NULL; + + Assert(list_length(func_call->funcname) > 0); + + if (list_length(func_call->funcname) == 2 && + strcmp(strVal(linitial(func_call->funcname)), "pg_catalog") == 0 && + strcmp(strVal(lsecond(func_call->funcname)), "overlay") == 0 && + list_length(func_call->args) == 4) + { + /* + * Note that this is a bit odd, but "OVERLAY" is a keyword on its own merit, and only accepts the + * keyword parameter style when its called as a keyword, not as a regular function (i.e. pg_catalog.overlay) + */ + appendStringInfoString(str, "OVERLAY("); + deparseExpr(str, linitial(func_call->args)); + appendStringInfoString(str, " PLACING "); + deparseExpr(str, lsecond(func_call->args)); + appendStringInfoString(str, " FROM "); + deparseExpr(str, lthird(func_call->args)); + appendStringInfoString(str, " FOR "); + deparseExpr(str, lfourth(func_call->args)); + appendStringInfoChar(str, ')'); + return; + } + + deparseFuncName(str, func_call->funcname); + appendStringInfoChar(str, '('); + + if (func_call->agg_distinct) + appendStringInfoString(str, "DISTINCT "); + + if (func_call->agg_star) + { + appendStringInfoChar(str, '*'); + } + else if (list_length(func_call->args) > 0) + { + foreach(lc, func_call->args) + { + if (func_call->func_variadic && !lnext(func_call->args, lc)) + appendStringInfoString(str, "VARIADIC "); + deparseFuncArgExpr(str, lfirst(lc)); + if (lnext(func_call->args, lc)) + appendStringInfoString(str, ", "); + } + } + appendStringInfoChar(str, ' '); + + if (func_call->agg_order != NULL && !func_call->agg_within_group) + { + deparseOptSortClause(str, func_call->agg_order); + } + + removeTrailingSpace(str); + appendStringInfoString(str, ") "); + + if (func_call->agg_order != NULL && func_call->agg_within_group) + { + appendStringInfoString(str, "WITHIN GROUP ("); + deparseOptSortClause(str, func_call->agg_order); + removeTrailingSpace(str); + appendStringInfoString(str, ") "); + } + + if (func_call->agg_filter) + { + appendStringInfoString(str, "FILTER (WHERE "); + deparseExpr(str, func_call->agg_filter); + appendStringInfoString(str, ") "); + } + + if (func_call->over) + { + appendStringInfoString(str, "OVER "); + if (func_call->over->name) + appendStringInfoString(str, func_call->over->name); + else + deparseWindowDef(str, func_call->over); + } + + removeTrailingSpace(str); +} + +static void deparseWindowDef(StringInfo str, WindowDef* window_def) +{ + ListCell *lc; + + // The parent node is responsible for outputting window_def->name + + appendStringInfoChar(str, '('); + + if (window_def->refname != NULL) + { + appendStringInfoString(str, quote_identifier(window_def->refname)); + appendStringInfoChar(str, ' '); + } + + if (list_length(window_def->partitionClause) > 0) + { + appendStringInfoString(str, "PARTITION BY "); + deparseExprList(str, window_def->partitionClause); + appendStringInfoChar(str, ' '); + } + + deparseOptSortClause(str, window_def->orderClause); + + if (window_def->frameOptions & FRAMEOPTION_NONDEFAULT) + { + if (window_def->frameOptions & FRAMEOPTION_RANGE) + appendStringInfoString(str, "RANGE "); + else if (window_def->frameOptions & FRAMEOPTION_ROWS) + appendStringInfoString(str, "ROWS "); + else if (window_def->frameOptions & FRAMEOPTION_GROUPS) + appendStringInfoString(str, "GROUPS "); + + if (window_def->frameOptions & FRAMEOPTION_BETWEEN) + appendStringInfoString(str, "BETWEEN "); + + // frame_start + if (window_def->frameOptions & FRAMEOPTION_START_UNBOUNDED_PRECEDING) + { + appendStringInfoString(str, "UNBOUNDED PRECEDING "); + } + else if (window_def->frameOptions & FRAMEOPTION_START_UNBOUNDED_FOLLOWING) + { + Assert(false); // disallowed + } + else if (window_def->frameOptions & FRAMEOPTION_START_CURRENT_ROW) + { + appendStringInfoString(str, "CURRENT ROW "); + } + else if (window_def->frameOptions & FRAMEOPTION_START_OFFSET_PRECEDING) + { + Assert(window_def->startOffset != NULL); + deparseExpr(str, window_def->startOffset); + appendStringInfoString(str, " PRECEDING "); + } + else if (window_def->frameOptions & FRAMEOPTION_START_OFFSET_FOLLOWING) + { + Assert(window_def->startOffset != NULL); + deparseExpr(str, window_def->startOffset); + appendStringInfoString(str, " FOLLOWING "); + } + + if (window_def->frameOptions & FRAMEOPTION_BETWEEN) + { + appendStringInfoString(str, "AND "); + + // frame_end + if (window_def->frameOptions & FRAMEOPTION_END_UNBOUNDED_PRECEDING) + { + Assert(false); // disallowed + } + else if (window_def->frameOptions & FRAMEOPTION_END_UNBOUNDED_FOLLOWING) + { + appendStringInfoString(str, "UNBOUNDED FOLLOWING "); + } + else if (window_def->frameOptions & FRAMEOPTION_END_CURRENT_ROW) + { + appendStringInfoString(str, "CURRENT ROW "); + } + else if (window_def->frameOptions & FRAMEOPTION_END_OFFSET_PRECEDING) + { + Assert(window_def->endOffset != NULL); + deparseExpr(str, window_def->endOffset); + appendStringInfoString(str, " PRECEDING "); + } + else if (window_def->frameOptions & FRAMEOPTION_END_OFFSET_FOLLOWING) + { + Assert(window_def->endOffset != NULL); + deparseExpr(str, window_def->endOffset); + appendStringInfoString(str, " FOLLOWING "); + } + } + + if (window_def->frameOptions & FRAMEOPTION_EXCLUDE_CURRENT_ROW) + appendStringInfoString(str, "EXCLUDE CURRENT ROW "); + else if (window_def->frameOptions & FRAMEOPTION_EXCLUDE_GROUP) + appendStringInfoString(str, "EXCLUDE GROUP "); + else if (window_def->frameOptions & FRAMEOPTION_EXCLUDE_TIES) + appendStringInfoString(str, "EXCLUDE TIES "); + } + + removeTrailingSpace(str); + appendStringInfoChar(str, ')'); +} + +static void deparseColumnRef(StringInfo str, ColumnRef* column_ref) +{ + Assert(list_length(column_ref->fields) >= 1); + + if (IsA(linitial(column_ref->fields), A_Star)) + deparseAStar(str, castNode(A_Star, linitial(column_ref->fields))); + else if (IsA(linitial(column_ref->fields), String)) + deparseColLabel(str, strVal(linitial(column_ref->fields))); + + deparseOptIndirection(str, column_ref->fields, 1); +} + +static void deparseSubLink(StringInfo str, SubLink* sub_link) +{ + switch (sub_link->subLinkType) { + case EXISTS_SUBLINK: + appendStringInfoString(str, "EXISTS ("); + deparseSelectStmt(str, castNode(SelectStmt, sub_link->subselect)); + appendStringInfoChar(str, ')'); + return; + case ALL_SUBLINK: + deparseExpr(str, sub_link->testexpr); + appendStringInfoChar(str, ' '); + deparseSubqueryOp(str, sub_link->operName); + appendStringInfoString(str, " ALL ("); + deparseSelectStmt(str, castNode(SelectStmt, sub_link->subselect)); + appendStringInfoChar(str, ')'); + return; + case ANY_SUBLINK: + deparseExpr(str, sub_link->testexpr); + if (list_length(sub_link->operName) > 0) + { + appendStringInfoChar(str, ' '); + deparseSubqueryOp(str, sub_link->operName); + appendStringInfoString(str, " ANY "); + } + else + { + appendStringInfoString(str, " IN "); + } + appendStringInfoChar(str, '('); + deparseSelectStmt(str, castNode(SelectStmt, sub_link->subselect)); + appendStringInfoChar(str, ')'); + return; + case ROWCOMPARE_SUBLINK: + // Not present in raw parse trees + Assert(false); + return; + case EXPR_SUBLINK: + appendStringInfoString(str, "("); + deparseSelectStmt(str, castNode(SelectStmt, sub_link->subselect)); + appendStringInfoChar(str, ')'); + return; + case MULTIEXPR_SUBLINK: + // Not present in raw parse trees + Assert(false); + return; + case ARRAY_SUBLINK: + appendStringInfoString(str, "ARRAY("); + deparseSelectStmt(str, castNode(SelectStmt, sub_link->subselect)); + appendStringInfoChar(str, ')'); + return; + case CTE_SUBLINK: /* for SubPlans only */ + // Not present in raw parse trees + Assert(false); + return; + } +} + +static void deparseAExpr(StringInfo str, A_Expr* a_expr, DeparseNodeContext context) +{ + ListCell *lc; + char *name; + + bool need_lexpr_parens = a_expr->lexpr != NULL && (IsA(a_expr->lexpr, BoolExpr) || IsA(a_expr->lexpr, NullTest) || IsA(a_expr->lexpr, A_Expr)); + bool need_rexpr_parens = a_expr->rexpr != NULL && (IsA(a_expr->rexpr, BoolExpr) || IsA(a_expr->rexpr, NullTest) || IsA(a_expr->rexpr, A_Expr)); + + switch (a_expr->kind) { + case AEXPR_OP: /* normal operator */ + { + bool need_outer_parens = context == DEPARSE_NODE_CONTEXT_A_EXPR; + + if (need_outer_parens) + appendStringInfoChar(str, '('); + if (a_expr->lexpr != NULL) + { + if (need_lexpr_parens) + appendStringInfoChar(str, '('); + deparseExpr(str, a_expr->lexpr); + if (need_lexpr_parens) + appendStringInfoChar(str, ')'); + appendStringInfoChar(str, ' '); + } + deparseQualOp(str, a_expr->name); + if (a_expr->rexpr != NULL) + { + appendStringInfoChar(str, ' '); + if (need_rexpr_parens) + appendStringInfoChar(str, '('); + deparseExpr(str, a_expr->rexpr); + if (need_rexpr_parens) + appendStringInfoChar(str, ')'); + } + + if (need_outer_parens) + appendStringInfoChar(str, ')'); + } + return; + case AEXPR_OP_ANY: /* scalar op ANY (array) */ + deparseExpr(str, a_expr->lexpr); + appendStringInfoChar(str, ' '); + deparseSubqueryOp(str, a_expr->name); + appendStringInfoString(str, " ANY("); + deparseExpr(str, a_expr->rexpr); + appendStringInfoChar(str, ')'); + return; + case AEXPR_OP_ALL: /* scalar op ALL (array) */ + deparseExpr(str, a_expr->lexpr); + appendStringInfoChar(str, ' '); + deparseSubqueryOp(str, a_expr->name); + appendStringInfoString(str, " ALL("); + deparseExpr(str, a_expr->rexpr); + appendStringInfoChar(str, ')'); + return; + case AEXPR_DISTINCT: /* IS DISTINCT FROM - name must be "=" */ + Assert(list_length(a_expr->name) == 1); + Assert(IsA(linitial(a_expr->name), String)); + Assert(strcmp(strVal(linitial(a_expr->name)), "=") == 0); + + if (need_lexpr_parens) + appendStringInfoChar(str, '('); + deparseExpr(str, a_expr->lexpr); + if (need_lexpr_parens) + appendStringInfoChar(str, ')'); + appendStringInfoString(str, " IS DISTINCT FROM "); + if (need_rexpr_parens) + appendStringInfoChar(str, '('); + deparseExpr(str, a_expr->rexpr); + if (need_rexpr_parens) + appendStringInfoChar(str, ')'); + return; + case AEXPR_NOT_DISTINCT: /* IS NOT DISTINCT FROM - name must be "=" */ + Assert(list_length(a_expr->name) == 1); + Assert(IsA(linitial(a_expr->name), String)); + Assert(strcmp(strVal(linitial(a_expr->name)), "=") == 0); + + deparseExpr(str, a_expr->lexpr); + appendStringInfoString(str, " IS NOT DISTINCT FROM "); + deparseExpr(str, a_expr->rexpr); + return; + case AEXPR_NULLIF: /* NULLIF - name must be "=" */ + Assert(list_length(a_expr->name) == 1); + Assert(IsA(linitial(a_expr->name), String)); + Assert(strcmp(strVal(linitial(a_expr->name)), "=") == 0); + + appendStringInfoString(str, "NULLIF("); + deparseExpr(str, a_expr->lexpr); + appendStringInfoString(str, ", "); + deparseExpr(str, a_expr->rexpr); + appendStringInfoChar(str, ')'); + return; + case AEXPR_OF: /* IS [NOT] OF - name must be "=" or "<>" */ + Assert(list_length(a_expr->name) == 1); + Assert(IsA(linitial(a_expr->name), String)); + Assert(IsA(a_expr->rexpr, List)); + deparseExpr(str, a_expr->lexpr); + appendStringInfoChar(str, ' '); + name = ((Value *) linitial(a_expr->name))->val.str; + if (strcmp(name, "=") == 0) { + appendStringInfoString(str, "IS OF "); + } else if (strcmp(name, "<>") == 0) { + appendStringInfoString(str, "IS NOT OF "); + } else { + Assert(false); + } + appendStringInfoChar(str, '('); + deparseTypeList(str, castNode(List, a_expr->rexpr)); + appendStringInfoChar(str, ')'); + return; + case AEXPR_IN: /* [NOT] IN - name must be "=" or "<>" */ + Assert(list_length(a_expr->name) == 1); + Assert(IsA(linitial(a_expr->name), String)); + Assert(IsA(a_expr->rexpr, List)); + deparseExpr(str, a_expr->lexpr); + appendStringInfoChar(str, ' '); + name = ((Value *) linitial(a_expr->name))->val.str; + if (strcmp(name, "=") == 0) { + appendStringInfoString(str, "IN "); + } else if (strcmp(name, "<>") == 0) { + appendStringInfoString(str, "NOT IN "); + } else { + Assert(false); + } + appendStringInfoChar(str, '('); + if (IsA(a_expr->rexpr, SubLink)) + deparseSubLink(str, castNode(SubLink, a_expr->rexpr)); + else + deparseExprList(str, castNode(List, a_expr->rexpr)); + appendStringInfoChar(str, ')'); + return; + case AEXPR_LIKE: /* [NOT] LIKE - name must be "~~" or "!~~" */ + Assert(list_length(a_expr->name) == 1); + Assert(IsA(linitial(a_expr->name), String)); + deparseExpr(str, a_expr->lexpr); + appendStringInfoChar(str, ' '); + + name = ((Value *) linitial(a_expr->name))->val.str; + if (strcmp(name, "~~") == 0) { + appendStringInfoString(str, "LIKE "); + } else if (strcmp(name, "!~~") == 0) { + appendStringInfoString(str, "NOT LIKE "); + } else { + Assert(false); + } + + deparseExpr(str, a_expr->rexpr); + return; + case AEXPR_ILIKE: /* [NOT] ILIKE - name must be "~~*" or "!~~*" */ + Assert(list_length(a_expr->name) == 1); + Assert(IsA(linitial(a_expr->name), String)); + deparseExpr(str, a_expr->lexpr); + appendStringInfoChar(str, ' '); + + name = ((Value *) linitial(a_expr->name))->val.str; + if (strcmp(name, "~~*") == 0) { + appendStringInfoString(str, "ILIKE "); + } else if (strcmp(name, "!~~*") == 0) { + appendStringInfoString(str, "NOT ILIKE "); + } else { + Assert(false); + } + + deparseExpr(str, a_expr->rexpr); + return; + case AEXPR_SIMILAR: /* [NOT] SIMILAR - name must be "~" or "!~" */ + Assert(list_length(a_expr->name) == 1); + Assert(IsA(linitial(a_expr->name), String)); + deparseExpr(str, a_expr->lexpr); + appendStringInfoChar(str, ' '); + + name = ((Value *) linitial(a_expr->name))->val.str; + if (strcmp(name, "~") == 0) { + appendStringInfoString(str, "SIMILAR TO "); + } else if (strcmp(name, "!~") == 0) { + appendStringInfoString(str, "NOT SIMILAR TO "); + } else { + Assert(false); + } + + FuncCall *n = castNode(FuncCall, a_expr->rexpr); + Assert(list_length(n->funcname) == 2); + Assert(strcmp(strVal(linitial(n->funcname)), "pg_catalog") == 0); + Assert(strcmp(strVal(lsecond(n->funcname)), "similar_to_escape") == 0); + Assert(list_length(n->args) == 1 || list_length(n->args) == 2); + + deparseExpr(str, linitial(n->args)); + if (list_length(n->args) == 2) + { + appendStringInfoString(str, " ESCAPE "); + deparseExpr(str, lsecond(n->args)); + } + + return; + case AEXPR_BETWEEN: /* name must be "BETWEEN" */ + case AEXPR_NOT_BETWEEN: /* name must be "NOT BETWEEN" */ + case AEXPR_BETWEEN_SYM: /* name must be "BETWEEN SYMMETRIC" */ + case AEXPR_NOT_BETWEEN_SYM: /* name must be "NOT BETWEEN SYMMETRIC" */ + Assert(list_length(a_expr->name) == 1); + Assert(IsA(linitial(a_expr->name), String)); + Assert(IsA(a_expr->rexpr, List)); + + deparseExpr(str, a_expr->lexpr); + appendStringInfoChar(str, ' '); + appendStringInfoString(str, strVal(linitial(a_expr->name))); + appendStringInfoChar(str, ' '); + + foreach(lc, castNode(List, a_expr->rexpr)) { + deparseExpr(str, lfirst(lc)); + if (lnext(castNode(List, a_expr->rexpr), lc)) + appendStringInfoString(str, " AND "); + } + return; + case AEXPR_PAREN: /* nameless dummy node for parentheses */ + // Not present in parse trees when operator_precedence_warning is turned off + Assert(false); + return; + } +} + +static void deparseBoolExpr(StringInfo str, BoolExpr *bool_expr) +{ + const ListCell *lc = NULL; + switch (bool_expr->boolop) + { + case AND_EXPR: + foreach(lc, bool_expr->args) + { + // Put parantheses around AND + OR nodes that are inside + bool need_parens = IsA(lfirst(lc), BoolExpr) && (castNode(BoolExpr, lfirst(lc))->boolop == AND_EXPR || castNode(BoolExpr, lfirst(lc))->boolop == OR_EXPR); + + if (need_parens) + appendStringInfoChar(str, '('); + + deparseExpr(str, lfirst(lc)); + + if (need_parens) + appendStringInfoChar(str, ')'); + + if (lnext(bool_expr->args, lc)) + appendStringInfoString(str, " AND "); + } + return; + case OR_EXPR: + foreach(lc, bool_expr->args) + { + // Put parantheses around AND + OR nodes that are inside + bool need_parens = IsA(lfirst(lc), BoolExpr) && (castNode(BoolExpr, lfirst(lc))->boolop == AND_EXPR || castNode(BoolExpr, lfirst(lc))->boolop == OR_EXPR); + + if (need_parens) + appendStringInfoChar(str, '('); + + deparseExpr(str, lfirst(lc)); + + if (need_parens) + appendStringInfoChar(str, ')'); + + if (lnext(bool_expr->args, lc)) + appendStringInfoString(str, " OR "); + } + return; + case NOT_EXPR: + Assert(list_length(bool_expr->args) == 1); + bool need_parens = IsA(linitial(bool_expr->args), BoolExpr) && (castNode(BoolExpr, linitial(bool_expr->args))->boolop == AND_EXPR || castNode(BoolExpr, linitial(bool_expr->args))->boolop == OR_EXPR); + appendStringInfoString(str, "NOT "); + if (need_parens) + appendStringInfoChar(str, '('); + deparseExpr(str, linitial(bool_expr->args)); + if (need_parens) + appendStringInfoChar(str, ')'); + return; + } +} + +static void deparseAStar(StringInfo str, A_Star *a_star) +{ + appendStringInfoChar(str, '*'); +} + +static void deparseCollateClause(StringInfo str, CollateClause* collate_clause) +{ + ListCell *lc; + if (collate_clause->arg != NULL) + { + bool need_parens = IsA(collate_clause->arg, A_Expr); + if (need_parens) + appendStringInfoChar(str, '('); + deparseExpr(str, collate_clause->arg); + if (need_parens) + appendStringInfoChar(str, ')'); + appendStringInfoChar(str, ' '); + } + appendStringInfoString(str, "COLLATE "); + deparseAnyName(str, collate_clause->collname); +} + +static void deparseSortBy(StringInfo str, SortBy* sort_by) +{ + deparseExpr(str, sort_by->node); + appendStringInfoChar(str, ' '); + + switch (sort_by->sortby_dir) + { + case SORTBY_DEFAULT: + break; + case SORTBY_ASC: + appendStringInfoString(str, "ASC "); + break; + case SORTBY_DESC: + appendStringInfoString(str, "DESC "); + break; + case SORTBY_USING: + appendStringInfoString(str, "USING "); + deparseQualOp(str, sort_by->useOp); + break; + } + + switch (sort_by->sortby_nulls) + { + case SORTBY_NULLS_DEFAULT: + break; + case SORTBY_NULLS_FIRST: + appendStringInfoString(str, "NULLS FIRST "); + break; + case SORTBY_NULLS_LAST: + appendStringInfoString(str, "NULLS LAST "); + break; + } + + removeTrailingSpace(str); +} + +static void deparseParamRef(StringInfo str, ParamRef* param_ref) +{ + if (param_ref->number == 0) { + appendStringInfoChar(str, '?'); + } else { + appendStringInfo(str, "$%d", param_ref->number); + } +} + +static void deparseSQLValueFunction(StringInfo str, SQLValueFunction* sql_value_function) +{ + switch (sql_value_function->op) + { + case SVFOP_CURRENT_DATE: + appendStringInfoString(str, "current_date"); + break; + case SVFOP_CURRENT_TIME: + appendStringInfoString(str, "current_time"); + break; + case SVFOP_CURRENT_TIME_N: + appendStringInfoString(str, "current_time"); // with precision + break; + case SVFOP_CURRENT_TIMESTAMP: + appendStringInfoString(str, "current_timestamp"); + break; + case SVFOP_CURRENT_TIMESTAMP_N: + appendStringInfoString(str, "current_timestamp"); // with precision + break; + case SVFOP_LOCALTIME: + appendStringInfoString(str, "localtime"); + break; + case SVFOP_LOCALTIME_N: + appendStringInfoString(str, "localtime"); // with precision + break; + case SVFOP_LOCALTIMESTAMP: + appendStringInfoString(str, "localtimestamp"); + break; + case SVFOP_LOCALTIMESTAMP_N: + appendStringInfoString(str, "localtimestamp"); // with precision + break; + case SVFOP_CURRENT_ROLE: + appendStringInfoString(str, "current_role"); + break; + case SVFOP_CURRENT_USER: + appendStringInfoString(str, "current_user"); + break; + case SVFOP_USER: + appendStringInfoString(str, "user"); + break; + case SVFOP_SESSION_USER: + appendStringInfoString(str, "session_user"); + break; + case SVFOP_CURRENT_CATALOG: + appendStringInfoString(str, "current_catalog"); + break; + case SVFOP_CURRENT_SCHEMA: + appendStringInfoString(str, "current_schema"); + break; + } + + if (sql_value_function->typmod != -1) + { + appendStringInfo(str, "(%d)", sql_value_function->typmod); + } +} + +static void deparseWithClause(StringInfo str, WithClause *with_clause) +{ + ListCell *lc; + + appendStringInfoString(str, "WITH "); + if (with_clause->recursive) + appendStringInfoString(str, "RECURSIVE "); + + foreach(lc, with_clause->ctes) { + deparseCommonTableExpr(str, castNode(CommonTableExpr, lfirst(lc))); + if (lnext(with_clause->ctes, lc)) + appendStringInfoString(str, ", "); + } + + removeTrailingSpace(str); +} + +static void deparseJoinExpr(StringInfo str, JoinExpr *join_expr) +{ + ListCell *lc; + bool need_alias_parens = join_expr->alias != NULL; + bool need_rarg_parens = IsA(join_expr->rarg, JoinExpr) && castNode(JoinExpr, join_expr->rarg)->alias == NULL; + + if (need_alias_parens) + appendStringInfoChar(str, '('); + + deparseTableRef(str, join_expr->larg); + + appendStringInfoChar(str, ' '); + + if (join_expr->isNatural) + appendStringInfoString(str, "NATURAL "); + + switch (join_expr->jointype) + { + case JOIN_INNER: /* matching tuple pairs only */ + if (!join_expr->isNatural && join_expr->quals == NULL && list_length(join_expr->usingClause) == 0) + appendStringInfoString(str, "CROSS "); + break; + case JOIN_LEFT: /* pairs + unmatched LHS tuples */ + appendStringInfoString(str, "LEFT "); + break; + case JOIN_FULL: /* pairs + unmatched LHS + unmatched RHS */ + appendStringInfoString(str, "FULL "); + break; + case JOIN_RIGHT: /* pairs + unmatched RHS tuples */ + appendStringInfoString(str, "RIGHT "); + break; + case JOIN_SEMI: + case JOIN_ANTI: + case JOIN_UNIQUE_OUTER: + case JOIN_UNIQUE_INNER: + // Only used by the planner/executor, not seen in parser output + Assert(false); + break; + } + + appendStringInfoString(str, "JOIN "); + + if (need_rarg_parens) + appendStringInfoChar(str, '('); + deparseTableRef(str, join_expr->rarg); + if (need_rarg_parens) + appendStringInfoChar(str, ')'); + appendStringInfoChar(str, ' '); + + if (join_expr->quals != NULL) + { + appendStringInfoString(str, "ON "); + deparseExpr(str, join_expr->quals); + appendStringInfoChar(str, ' '); + } + + if (list_length(join_expr->usingClause) > 0) + { + appendStringInfoString(str, "USING ("); + deparseNameList(str, join_expr->usingClause); + appendStringInfoString(str, ") "); + } + + if (need_alias_parens) + appendStringInfoString(str, ") "); + + if (join_expr->alias != NULL) + deparseAlias(str, join_expr->alias); + + removeTrailingSpace(str); +} + +static void deparseCommonTableExpr(StringInfo str, CommonTableExpr *cte) +{ + deparseColId(str, cte->ctename); + + if (list_length(cte->aliascolnames) > 0) + { + appendStringInfoChar(str, '('); + deparseNameList(str, cte->aliascolnames); + appendStringInfoChar(str, ')'); + } + appendStringInfoChar(str, ' '); + + appendStringInfoString(str, "AS "); + switch (cte->ctematerialized) { + case CTEMaterializeDefault: /* no option specified */ + break; + case CTEMaterializeAlways: + appendStringInfoString(str, "MATERIALIZED "); + break; + case CTEMaterializeNever: + appendStringInfoString(str, "NOT MATERIALIZED "); + break; + } + + appendStringInfoChar(str, '('); + deparsePreparableStmt(str, cte->ctequery); + appendStringInfoChar(str, ')'); +} + +static void deparseRangeSubselect(StringInfo str, RangeSubselect *range_subselect) +{ + if (range_subselect->lateral) + appendStringInfoString(str, "LATERAL "); + + appendStringInfoChar(str, '('); + deparseSelectStmt(str, castNode(SelectStmt, range_subselect->subquery)); + appendStringInfoChar(str, ')'); + + if (range_subselect->alias != NULL) + { + appendStringInfoChar(str, ' '); + deparseAlias(str, range_subselect->alias); + } +} + +static void deparseRangeFunction(StringInfo str, RangeFunction *range_func) +{ + ListCell *lc; + ListCell *lc2; + + if (range_func->lateral) + appendStringInfoString(str, "LATERAL "); + + if (range_func->is_rowsfrom) + { + appendStringInfoString(str, "ROWS FROM "); + appendStringInfoChar(str, '('); + foreach(lc, range_func->functions) + { + List *lfunc = castNode(List, lfirst(lc)); + Assert(list_length(lfunc) == 2); + deparseFuncExprWindowless(str, linitial(lfunc)); + appendStringInfoChar(str, ' '); + List *coldeflist = castNode(List, lsecond(lfunc)); + if (list_length(coldeflist) > 0) + { + appendStringInfoString(str, "AS ("); + foreach(lc2, coldeflist) + { + deparseColumnDef(str, castNode(ColumnDef, lfirst(lc2))); + if (lnext(coldeflist, lc2)) + appendStringInfoString(str, ", "); + } + appendStringInfoChar(str, ')'); + } + if (lnext(range_func->functions, lc)) + appendStringInfoString(str, ", "); + } + appendStringInfoChar(str, ')'); + } + else + { + Assert(list_length(linitial(range_func->functions)) == 2); + deparseFuncExprWindowless(str, linitial(linitial(range_func->functions))); + } + appendStringInfoChar(str, ' '); + + if (range_func->ordinality) + appendStringInfoString(str, "WITH ORDINALITY "); + + if (range_func->alias != NULL) + { + deparseAlias(str, range_func->alias); + appendStringInfoChar(str, ' '); + } + + if (list_length(range_func->coldeflist) > 0) + { + if (range_func->alias == NULL) + appendStringInfoString(str, "AS "); + appendStringInfoChar(str, '('); + foreach(lc, range_func->coldeflist) + { + deparseColumnDef(str, castNode(ColumnDef, lfirst(lc))); + if (lnext(range_func->coldeflist, lc)) + appendStringInfoString(str, ", "); + } + appendStringInfoChar(str, ')'); + } + + removeTrailingSpace(str); +} + +static void deparseAArrayExpr(StringInfo str, A_ArrayExpr *array_expr) +{ + ListCell *lc; + + appendStringInfoString(str, "ARRAY["); + deparseExprList(str, array_expr->elements); + appendStringInfoChar(str, ']'); +} + +static void deparseRowExpr(StringInfo str, RowExpr *row_expr) +{ + ListCell *lc; + + switch (row_expr->row_format) + { + case COERCE_EXPLICIT_CALL: + appendStringInfoString(str, "ROW"); + break; + case COERCE_EXPLICIT_CAST: + // Not present in raw parser output + Assert(false); + break; + case COERCE_IMPLICIT_CAST: + // No prefix + break; + } + + appendStringInfoString(str, "("); + deparseExprList(str, row_expr->args); + appendStringInfoChar(str, ')'); +} + +static void deparseTypeCast(StringInfo str, TypeCast *type_cast) +{ + bool need_parens = false; + + Assert(type_cast->typeName != NULL); + + if (IsA(type_cast->arg, A_Expr)) + { + appendStringInfoString(str, "CAST("); + deparseExpr(str, type_cast->arg); + appendStringInfoString(str, " AS "); + deparseTypeName(str, type_cast->typeName); + appendStringInfoChar(str, ')'); + return; + } + + if (IsA(type_cast->arg, A_Const)) + { + A_Const *a_const = castNode(A_Const, type_cast->arg); + + if (list_length(type_cast->typeName->names) == 2 && + strcmp(strVal(linitial(type_cast->typeName->names)), "pg_catalog") == 0) + { + char *typename = strVal(lsecond(type_cast->typeName->names)); + if (strcmp(typename, "bpchar") == 0 && type_cast->typeName->typmods == NULL) + { + appendStringInfoString(str, "char "); + deparseAConst(str, a_const); + return; + } + else if (strcmp(typename, "bool") == 0 && IsA(&a_const->val, String)) + { + /* + * Handle "bool" or "false" in the statement, which is represented as a typecast + * (other boolean casts should be represented as a cast, i.e. don't need special handling) + */ + char *const_val = strVal(&a_const->val); + if (strcmp(const_val, "t") == 0) + { + appendStringInfoString(str, "true"); + return; + } + if (strcmp(const_val, "f") == 0) + { + appendStringInfoString(str, "false"); + return; + } + } + } + + // Ensure negative values have wrapping parentheses + if (IsA(&a_const->val, Float) || (IsA(&a_const->val, Integer) && intVal(&a_const->val) < 0)) + { + need_parens = true; + } + } + + if (need_parens) + appendStringInfoChar(str, '('); + deparseExpr(str, type_cast->arg); + if (need_parens) + appendStringInfoChar(str, ')'); + + appendStringInfoString(str, "::"); + deparseTypeName(str, type_cast->typeName); +} + +static void deparseTypeName(StringInfo str, TypeName *type_name) +{ + ListCell *lc; + bool skip_typmods = false; + + if (type_name->setof) + appendStringInfoString(str, "SETOF "); + + if (list_length(type_name->names) == 2 && strcmp(strVal(linitial(type_name->names)), "pg_catalog") == 0) + { + const char *name = strVal(lsecond(type_name->names)); + if (strcmp(name, "bpchar") == 0) + { + appendStringInfoString(str, "char"); + } + else if (strcmp(name, "varchar") == 0) + { + appendStringInfoString(str, "varchar"); + } + else if (strcmp(name, "numeric") == 0) + { + appendStringInfoString(str, "numeric"); + } + else if (strcmp(name, "bool") == 0) + { + appendStringInfoString(str, "boolean"); + } + else if (strcmp(name, "int2") == 0) + { + appendStringInfoString(str, "smallint"); + } + else if (strcmp(name, "int4") == 0) + { + appendStringInfoString(str, "int"); + } + else if (strcmp(name, "int8") == 0) + { + appendStringInfoString(str, "bigint"); + } + else if (strcmp(name, "real") == 0 || strcmp(name, "float4") == 0) + { + appendStringInfoString(str, "real"); + } + else if (strcmp(name, "float8") == 0) + { + appendStringInfoString(str, "double precision"); + } + else if (strcmp(name, "time") == 0) + { + appendStringInfoString(str, "time"); + } + else if (strcmp(name, "timetz") == 0) + { + appendStringInfoString(str, "time "); + if (list_length(type_name->typmods) > 0) + { + appendStringInfoChar(str, '('); + foreach(lc, type_name->typmods) + { + deparseSignedIconst(str, (Node *) &castNode(A_Const, lfirst(lc))->val); + if (lnext(type_name->typmods, lc)) + appendStringInfoString(str, ", "); + } + appendStringInfoString(str, ") "); + } + appendStringInfoString(str, "with time zone"); + skip_typmods = true; + } + else if (strcmp(name, "timestamp") == 0) + { + appendStringInfoString(str, "timestamp"); + } + else if (strcmp(name, "timestamptz") == 0) + { + appendStringInfoString(str, "timestamp "); + if (list_length(type_name->typmods) > 0) + { + appendStringInfoChar(str, '('); + foreach(lc, type_name->typmods) + { + deparseSignedIconst(str, (Node *) &castNode(A_Const, lfirst(lc))->val); + if (lnext(type_name->typmods, lc)) + appendStringInfoString(str, ", "); + } + appendStringInfoString(str, ") "); + } + appendStringInfoString(str, "with time zone"); + skip_typmods = true; + } + else if (strcmp(name, "interval") == 0 && list_length(type_name->typmods) == 0) + { + appendStringInfoString(str, "interval"); + } + else if (strcmp(name, "interval") == 0 && list_length(type_name->typmods) >= 1) + { + Assert(IsA(linitial(type_name->typmods), A_Const)); + Assert(IsA(&castNode(A_Const, linitial(type_name->typmods))->val, Integer)); + + int fields = intVal(&castNode(A_Const, linitial(type_name->typmods))->val); + + appendStringInfoString(str, "interval"); + + // This logic is based on intervaltypmodout in timestamp.c + switch (fields) + { + case INTERVAL_MASK(YEAR): + appendStringInfoString(str, " year"); + break; + case INTERVAL_MASK(MONTH): + appendStringInfoString(str, " month"); + break; + case INTERVAL_MASK(DAY): + appendStringInfoString(str, " day"); + break; + case INTERVAL_MASK(HOUR): + appendStringInfoString(str, " hour"); + break; + case INTERVAL_MASK(MINUTE): + appendStringInfoString(str, " minute"); + break; + case INTERVAL_MASK(SECOND): + appendStringInfoString(str, " second"); + break; + case INTERVAL_MASK(YEAR) | INTERVAL_MASK(MONTH): + appendStringInfoString(str, " year to month"); + break; + case INTERVAL_MASK(DAY) | INTERVAL_MASK(HOUR): + appendStringInfoString(str, " day to hour"); + break; + case INTERVAL_MASK(DAY) | INTERVAL_MASK(HOUR) | INTERVAL_MASK(MINUTE): + appendStringInfoString(str, " day to minute"); + break; + case INTERVAL_MASK(DAY) | INTERVAL_MASK(HOUR) | INTERVAL_MASK(MINUTE) | INTERVAL_MASK(SECOND): + appendStringInfoString(str, " day to second"); + break; + case INTERVAL_MASK(HOUR) | INTERVAL_MASK(MINUTE): + appendStringInfoString(str, " hour to minute"); + break; + case INTERVAL_MASK(HOUR) | INTERVAL_MASK(MINUTE) | INTERVAL_MASK(SECOND): + appendStringInfoString(str, " hour to second"); + break; + case INTERVAL_MASK(MINUTE) | INTERVAL_MASK(SECOND): + appendStringInfoString(str, " minute to second"); + break; + case INTERVAL_FULL_RANGE: + // Nothing + break; + default: + Assert(false); + break; + } + + if (list_length(type_name->typmods) == 2) + { + int precision = intVal(&castNode(A_Const, lsecond(type_name->typmods))->val); + if (precision != INTERVAL_FULL_PRECISION) + appendStringInfo(str, "(%d)", precision); + } + + skip_typmods = true; + } + else + { + appendStringInfoString(str, "pg_catalog."); + appendStringInfoString(str, name); + } + } + else + { + deparseAnyName(str, type_name->names); + } + + if (list_length(type_name->typmods) > 0 && !skip_typmods) + { + appendStringInfoChar(str, '('); + foreach(lc, type_name->typmods) + { + if (IsA(lfirst(lc), A_Const)) + deparseAConst(str, lfirst(lc)); + else if (IsA(lfirst(lc), ParamRef)) + deparseParamRef(str, lfirst(lc)); + else if (IsA(lfirst(lc), ColumnRef)) + deparseColumnRef(str, lfirst(lc)); + else + Assert(false); + + if (lnext(type_name->typmods, lc)) + appendStringInfoString(str, ", "); + } + appendStringInfoChar(str, ')'); + } + + foreach(lc, type_name->arrayBounds) + { + appendStringInfoChar(str, '['); + if (IsA(lfirst(lc), Integer) && intVal(lfirst(lc)) != -1) + deparseSignedIconst(str, lfirst(lc)); + appendStringInfoChar(str, ']'); + } + + if (type_name->pct_type) + appendStringInfoString(str, "%type"); +} + +static void deparseNullTest(StringInfo str, NullTest *null_test) +{ + // argisrow is always false in raw parser output + Assert(null_test->argisrow == false); + + deparseExpr(str, (Node *) null_test->arg); + switch (null_test->nulltesttype) + { + case IS_NULL: + appendStringInfoString(str, " IS NULL"); + break; + case IS_NOT_NULL: + appendStringInfoString(str, " IS NOT NULL"); + break; + } +} + +static void deparseCaseExpr(StringInfo str, CaseExpr *case_expr) +{ + ListCell *lc; + + appendStringInfoString(str, "CASE "); + + if (case_expr->arg != NULL) + { + deparseExpr(str, (Node *) case_expr->arg); + appendStringInfoChar(str, ' '); + } + + foreach(lc, case_expr->args) + { + deparseCaseWhen(str, castNode(CaseWhen, lfirst(lc))); + appendStringInfoChar(str, ' '); + } + + if (case_expr->defresult != NULL) + { + appendStringInfoString(str, "ELSE "); + deparseExpr(str, (Node *) case_expr->defresult); + appendStringInfoChar(str, ' '); + } + + appendStringInfoString(str, "END"); +} + +static void deparseCaseWhen(StringInfo str, CaseWhen *case_when) +{ + appendStringInfoString(str, "WHEN "); + deparseExpr(str, (Node *) case_when->expr); + appendStringInfoString(str, " THEN "); + deparseExpr(str, (Node *) case_when->result); +} + +static void deparseAIndirection(StringInfo str, A_Indirection *a_indirection) +{ + ListCell *lc; + bool need_parens = + IsA(a_indirection->arg, A_Indirection) || + IsA(a_indirection->arg, FuncCall) || + IsA(a_indirection->arg, A_Expr) || + IsA(a_indirection->arg, TypeCast) || + IsA(a_indirection->arg, RowExpr) || + (IsA(a_indirection->arg, ColumnRef) && !IsA(linitial(a_indirection->indirection), A_Indices)); + + if (need_parens) + appendStringInfoChar(str, '('); + + deparseExpr(str, a_indirection->arg); + + if (need_parens) + appendStringInfoChar(str, ')'); + + deparseOptIndirection(str, a_indirection->indirection, 0); +} + +static void deparseAIndices(StringInfo str, A_Indices *a_indices) +{ + appendStringInfoChar(str, '['); + if (a_indices->lidx != NULL) + deparseExpr(str, a_indices->lidx); + if (a_indices->is_slice) + appendStringInfoChar(str, ':'); + if (a_indices->uidx != NULL) + deparseExpr(str, a_indices->uidx); + appendStringInfoChar(str, ']'); +} + +static void deparseCoalesceExpr(StringInfo str, CoalesceExpr *coalesce_expr) +{ + appendStringInfoString(str, "COALESCE("); + deparseExprList(str, coalesce_expr->args); + appendStringInfoChar(str, ')'); +} + +static void deparseMinMaxExpr(StringInfo str, MinMaxExpr *min_max_expr) +{ + switch (min_max_expr->op) + { + case IS_GREATEST: + appendStringInfoString(str, "GREATEST("); + break; + case IS_LEAST: + appendStringInfoString(str, "LEAST("); + break; + } + deparseExprList(str, min_max_expr->args); + appendStringInfoChar(str, ')'); +} + +static void deparseBooleanTest(StringInfo str, BooleanTest *boolean_test) +{ + deparseExpr(str, (Node *) boolean_test->arg); + switch (boolean_test->booltesttype) + { + case IS_TRUE: + appendStringInfoString(str, " IS TRUE"); + break; + case IS_NOT_TRUE: + appendStringInfoString(str, " IS NOT TRUE"); + break; + case IS_FALSE: + appendStringInfoString(str, " IS FALSE"); + break; + case IS_NOT_FALSE: + appendStringInfoString(str, " IS NOT FALSE"); + break; + case IS_UNKNOWN: + appendStringInfoString(str, " IS UNKNOWN"); + break; + case IS_NOT_UNKNOWN: + appendStringInfoString(str, " IS NOT UNKNOWN"); + break; + default: + Assert(false); + } +} + +static void deparseColumnDef(StringInfo str, ColumnDef *column_def) +{ + ListCell *lc; + + if (column_def->colname != NULL) + { + appendStringInfoString(str, column_def->colname); + appendStringInfoChar(str, ' '); + } + + if (column_def->typeName != NULL) + { + deparseTypeName(str, column_def->typeName); + appendStringInfoChar(str, ' '); + } + + if (column_def->raw_default != NULL) + { + appendStringInfoString(str, "USING "); + deparseExpr(str, column_def->raw_default); + appendStringInfoChar(str, ' '); + } + + if (column_def->fdwoptions != NULL) + { + deparseCreateGenericOptions(str, column_def->fdwoptions); + appendStringInfoChar(str, ' '); + } + + foreach(lc, column_def->constraints) + { + deparseConstraint(str, castNode(Constraint, lfirst(lc))); + appendStringInfoChar(str, ' '); + } + + if (column_def->collClause != NULL) + { + deparseCollateClause(str, column_def->collClause); + } + + removeTrailingSpace(str); +} + +static void deparseInsertStmt(StringInfo str, InsertStmt *insert_stmt) +{ + ListCell *lc; + ListCell *lc2; + + if (insert_stmt->withClause != NULL) + { + deparseWithClause(str, insert_stmt->withClause); + appendStringInfoChar(str, ' '); + } + + appendStringInfoString(str, "INSERT INTO "); + deparseRangeVar(str, insert_stmt->relation, DEPARSE_NODE_CONTEXT_INSERT_RELATION); + appendStringInfoChar(str, ' '); + + if (list_length(insert_stmt->cols) > 0) + { + appendStringInfoChar(str, '('); + deparseInsertColumnList(str, insert_stmt->cols); + appendStringInfoString(str, ") "); + } + + switch (insert_stmt->override) + { + case OVERRIDING_NOT_SET: + // Do nothing + break; + case OVERRIDING_USER_VALUE: + appendStringInfoString(str, "OVERRIDING USER VALUE "); + break; + case OVERRIDING_SYSTEM_VALUE: + appendStringInfoString(str, "OVERRIDING SYSTEM VALUE "); + break; + } + + if (insert_stmt->selectStmt != NULL) + { + deparseSelectStmt(str, castNode(SelectStmt, insert_stmt->selectStmt)); + appendStringInfoChar(str, ' '); + } + else + { + appendStringInfoString(str, "DEFAULT VALUES "); + } + + if (insert_stmt->onConflictClause != NULL) + { + deparseOnConflictClause(str, insert_stmt->onConflictClause); + appendStringInfoChar(str, ' '); + } + + if (list_length(insert_stmt->returningList) > 0) + { + appendStringInfoString(str, "RETURNING "); + deparseTargetList(str, insert_stmt->returningList); + } + + removeTrailingSpace(str); +} + +static void deparseInferClause(StringInfo str, InferClause *infer_clause) +{ + ListCell *lc; + + if (list_length(infer_clause->indexElems) > 0) + { + appendStringInfoChar(str, '('); + foreach(lc, infer_clause->indexElems) + { + deparseIndexElem(str, lfirst(lc)); + if (lnext(infer_clause->indexElems, lc)) + appendStringInfoString(str, ", "); + } + appendStringInfoString(str, ") "); + } + + if (infer_clause->conname != NULL) + { + appendStringInfoString(str, "ON CONSTRAINT "); + appendStringInfoString(str, quote_identifier(infer_clause->conname)); + appendStringInfoChar(str, ' '); + } + + deparseWhereClause(str, infer_clause->whereClause); + + removeTrailingSpace(str); +} + +static void deparseOnConflictClause(StringInfo str, OnConflictClause *on_conflict_clause) +{ + ListCell *lc; + + appendStringInfoString(str, "ON CONFLICT "); + + if (on_conflict_clause->infer != NULL) + { + deparseInferClause(str, on_conflict_clause->infer); + appendStringInfoChar(str, ' '); + } + + switch (on_conflict_clause->action) + { + case ONCONFLICT_NONE: + Assert(false); + break; + case ONCONFLICT_NOTHING: + appendStringInfoString(str, "DO NOTHING "); + break; + case ONCONFLICT_UPDATE: + appendStringInfoString(str, "DO UPDATE "); + break; + } + + if (list_length(on_conflict_clause->targetList) > 0) + { + appendStringInfoString(str, "SET "); + deparseSetClauseList(str, on_conflict_clause->targetList); + appendStringInfoChar(str, ' '); + } + + deparseWhereClause(str, on_conflict_clause->whereClause); + + removeTrailingSpace(str); +} + +static void deparseUpdateStmt(StringInfo str, UpdateStmt *update_stmt) +{ + ListCell* lc; + ListCell* lc2; + ListCell* lc3; + + if (update_stmt->withClause != NULL) + { + deparseWithClause(str, update_stmt->withClause); + appendStringInfoChar(str, ' '); + } + + appendStringInfoString(str, "UPDATE "); + deparseRangeVar(str, update_stmt->relation, DEPARSE_NODE_CONTEXT_NONE); + appendStringInfoChar(str, ' '); + + if (list_length(update_stmt->targetList) > 0) + { + appendStringInfoString(str, "SET "); + deparseSetClauseList(str, update_stmt->targetList); + appendStringInfoChar(str, ' '); + } + + deparseFromClause(str, update_stmt->fromClause); + deparseWhereClause(str, update_stmt->whereClause); + + if (list_length(update_stmt->returningList) > 0) + { + appendStringInfoString(str, "RETURNING "); + deparseTargetList(str, update_stmt->returningList); + } + + removeTrailingSpace(str); +} + +static void deparseDeleteStmt(StringInfo str, DeleteStmt *delete_stmt) +{ + if (delete_stmt->withClause != NULL) + { + deparseWithClause(str, delete_stmt->withClause); + appendStringInfoChar(str, ' '); + } + + appendStringInfoString(str, "DELETE FROM "); + deparseRangeVar(str, delete_stmt->relation, DEPARSE_NODE_CONTEXT_NONE); + appendStringInfoChar(str, ' '); + + if (delete_stmt->usingClause != NULL) + { + appendStringInfoString(str, "USING "); + deparseFromList(str, delete_stmt->usingClause); + appendStringInfoChar(str, ' '); + } + + deparseWhereClause(str, delete_stmt->whereClause); + + if (list_length(delete_stmt->returningList) > 0) + { + appendStringInfoString(str, "RETURNING "); + deparseTargetList(str, delete_stmt->returningList); + } + + removeTrailingSpace(str); +} + +static void deparseLockingClause(StringInfo str, LockingClause *locking_clause) +{ + ListCell *lc; + + switch (locking_clause->strength) + { + case LCS_NONE: + /* no such clause - only used in PlanRowMark */ + Assert(false); + break; + case LCS_FORKEYSHARE: + appendStringInfoString(str, "FOR KEY SHARE "); + break; + case LCS_FORSHARE: + appendStringInfoString(str, "FOR SHARE "); + break; + case LCS_FORNOKEYUPDATE: + appendStringInfoString(str, "FOR NO KEY UPDATE "); + break; + case LCS_FORUPDATE: + appendStringInfoString(str, "FOR UPDATE "); + break; + } + + if (list_length(locking_clause->lockedRels) > 0) + { + appendStringInfoString(str, "OF "); + deparseQualifiedNameList(str, locking_clause->lockedRels); + } + + switch (locking_clause->waitPolicy) + { + case LockWaitError: + appendStringInfoString(str, "NOWAIT"); + break; + case LockWaitSkip: + appendStringInfoString(str, "SKIP LOCKED"); + break; + case LockWaitBlock: + // Default + break; + } + + removeTrailingSpace(str); +} + +static void deparseSetToDefault(StringInfo str, SetToDefault *set_to_default) +{ + appendStringInfoString(str, "DEFAULT"); +} + +static void deparseCreateCastStmt(StringInfo str, CreateCastStmt *create_cast_stmt) +{ + ListCell *lc; + ListCell *lc2; + + appendStringInfoString(str, "CREATE CAST ("); + deparseTypeName(str, create_cast_stmt->sourcetype); + appendStringInfoString(str, " AS "); + deparseTypeName(str, create_cast_stmt->targettype); + appendStringInfoString(str, ") "); + + if (create_cast_stmt->func != NULL) + { + appendStringInfoString(str, "WITH FUNCTION "); + deparseFunctionWithArgtypes(str, create_cast_stmt->func); + appendStringInfoChar(str, ' '); + } + else if (create_cast_stmt->inout) + { + appendStringInfoString(str, "WITH INOUT "); + } + else + { + appendStringInfoString(str, "WITHOUT FUNCTION "); + } + + switch (create_cast_stmt->context) + { + case COERCION_IMPLICIT: + appendStringInfoString(str, "AS IMPLICIT"); + break; + case COERCION_ASSIGNMENT: + appendStringInfoString(str, "AS ASSIGNMENT"); + break; + case COERCION_EXPLICIT: + // Default + break; + } +} + +static void deparseCreateOpClassStmt(StringInfo str, CreateOpClassStmt *create_op_class_stmt) +{ + ListCell *lc = NULL; + + appendStringInfoString(str, "CREATE OPERATOR CLASS "); + + deparseAnyName(str, create_op_class_stmt->opclassname); + appendStringInfoChar(str, ' '); + + if (create_op_class_stmt->isDefault) + appendStringInfoString(str, "DEFAULT "); + + appendStringInfoString(str, "FOR TYPE "); + deparseTypeName(str, create_op_class_stmt->datatype); + appendStringInfoChar(str, ' '); + + appendStringInfoString(str, "USING "); + appendStringInfoString(str, quote_identifier(create_op_class_stmt->amname)); + appendStringInfoChar(str, ' '); + + if (create_op_class_stmt->opfamilyname != NULL) + { + appendStringInfoString(str, "FAMILY "); + deparseAnyName(str, create_op_class_stmt->opfamilyname); + appendStringInfoChar(str, ' '); + } + + appendStringInfoString(str, "AS "); + deparseOpclassItemList(str, create_op_class_stmt->items); +} + +static void deparseCreateOpFamilyStmt(StringInfo str, CreateOpFamilyStmt *create_op_family_stmt) +{ + appendStringInfoString(str, "CREATE OPERATOR FAMILY "); + + deparseAnyName(str, create_op_family_stmt->opfamilyname); + appendStringInfoChar(str, ' '); + + appendStringInfoString(str, "USING "); + appendStringInfoString(str, quote_identifier(create_op_family_stmt->amname)); +} + +static void deparseCreateOpClassItem(StringInfo str, CreateOpClassItem *create_op_class_item) +{ + ListCell *lc = NULL; + + switch (create_op_class_item->itemtype) + { + case OPCLASS_ITEM_OPERATOR: + appendStringInfoString(str, "OPERATOR "); + appendStringInfo(str, "%d ", create_op_class_item->number); + + if (create_op_class_item->name != NULL) + { + if (create_op_class_item->name->objargs != NULL) + deparseOperatorWithArgtypes(str, create_op_class_item->name); + else + deparseAnyOperator(str, create_op_class_item->name->objname); + appendStringInfoChar(str, ' '); + } + + if (create_op_class_item->order_family != NULL) + { + appendStringInfoString(str, "FOR ORDER BY "); + deparseAnyName(str, create_op_class_item->order_family); + } + + if (create_op_class_item->class_args != NULL) + { + appendStringInfoChar(str, '('); + deparseTypeList(str, create_op_class_item->class_args); + appendStringInfoChar(str, ')'); + } + removeTrailingSpace(str); + break; + case OPCLASS_ITEM_FUNCTION: + appendStringInfoString(str, "FUNCTION "); + appendStringInfo(str, "%d ", create_op_class_item->number); + if (create_op_class_item->class_args != NULL) + { + appendStringInfoChar(str, '('); + deparseTypeList(str, create_op_class_item->class_args); + appendStringInfoString(str, ") "); + } + if (create_op_class_item->name != NULL) + deparseFunctionWithArgtypes(str, create_op_class_item->name); + removeTrailingSpace(str); + break; + case OPCLASS_ITEM_STORAGETYPE: + appendStringInfoString(str, "STORAGE "); + deparseTypeName(str, create_op_class_item->storedtype); + break; + default: + Assert(false); + } +} + +static void deparseTableLikeClause(StringInfo str, TableLikeClause *table_like_clause) +{ + appendStringInfoString(str, "LIKE "); + deparseRangeVar(str, table_like_clause->relation, DEPARSE_NODE_CONTEXT_NONE); + appendStringInfoChar(str, ' '); + + if (table_like_clause->options == CREATE_TABLE_LIKE_ALL) + appendStringInfoString(str, "INCLUDING ALL "); + if (table_like_clause->options & CREATE_TABLE_LIKE_COMMENTS) + appendStringInfoString(str, "INCLUDING COMMENTS "); + if (table_like_clause->options & CREATE_TABLE_LIKE_CONSTRAINTS) + appendStringInfoString(str, "INCLUDING CONSTRAINTS "); + if (table_like_clause->options & CREATE_TABLE_LIKE_DEFAULTS) + appendStringInfoString(str, "INCLUDING DEFAULTS "); + if (table_like_clause->options & CREATE_TABLE_LIKE_IDENTITY) + appendStringInfoString(str, "INCLUDING IDENTITY "); + if (table_like_clause->options & CREATE_TABLE_LIKE_GENERATED) + appendStringInfoString(str, "INCLUDING GENERATED "); + if (table_like_clause->options & CREATE_TABLE_LIKE_INDEXES) + appendStringInfoString(str, "INCLUDING INDEXES "); + if (table_like_clause->options & CREATE_TABLE_LIKE_STATISTICS) + appendStringInfoString(str, "INCLUDING STATISTICS "); + if (table_like_clause->options & CREATE_TABLE_LIKE_STORAGE) + appendStringInfoString(str, "INCLUDING STORAGE "); + + removeTrailingSpace(str); +} + +static void deparseCreateDomainStmt(StringInfo str, CreateDomainStmt *create_domain_stmt) +{ + ListCell *lc; + + Assert(create_domain_stmt->typeName != NULL); + + appendStringInfoString(str, "CREATE DOMAIN "); + deparseAnyName(str, create_domain_stmt->domainname); + appendStringInfoString(str, " AS "); + + deparseTypeName(str, create_domain_stmt->typeName); + appendStringInfoChar(str, ' '); + + if (create_domain_stmt->collClause != NULL) + { + deparseCollateClause(str, create_domain_stmt->collClause); + appendStringInfoChar(str, ' '); + } + + foreach(lc, create_domain_stmt->constraints) + { + deparseConstraint(str, castNode(Constraint, lfirst(lc))); + appendStringInfoChar(str, ' '); + } + + removeTrailingSpace(str); +} + +static void deparseCreateExtensionStmt(StringInfo str, CreateExtensionStmt *create_extension_stmt) +{ + ListCell *lc = NULL; + + appendStringInfoString(str, "CREATE EXTENSION "); + + if (create_extension_stmt->if_not_exists) + appendStringInfoString(str, "IF NOT EXISTS "); + + deparseColId(str, create_extension_stmt->extname); + appendStringInfoChar(str, ' '); + + foreach (lc, create_extension_stmt->options) + { + DefElem *def_elem = castNode(DefElem, lfirst(lc)); + + if (strcmp(def_elem->defname, "schema") == 0) + { + appendStringInfoString(str, "SCHEMA "); + deparseColId(str, strVal(def_elem->arg)); + } + else if (strcmp(def_elem->defname, "new_version") == 0) + { + appendStringInfoString(str, "VERSION "); + deparseNonReservedWordOrSconst(str, strVal(def_elem->arg)); + } + else if (strcmp(def_elem->defname, "cascade") == 0) + { + appendStringInfoString(str, "CASCADE"); + } + else + { + Assert(false); + } + + appendStringInfoChar(str, ' '); + } + + removeTrailingSpace(str); +} + +static void deparseConstraint(StringInfo str, Constraint *constraint) +{ + ListCell *lc; + + if (constraint->conname != NULL) + { + appendStringInfoString(str, "CONSTRAINT "); + appendStringInfoString(str, constraint->conname); + appendStringInfoChar(str, ' '); + } + + switch (constraint->contype) { + case CONSTR_NULL: + appendStringInfoString(str, "NULL "); + break; + case CONSTR_NOTNULL: + appendStringInfoString(str, "NOT NULL "); + break; + case CONSTR_DEFAULT: + appendStringInfoString(str, "DEFAULT "); + deparseExpr(str, constraint->raw_expr); + break; + case CONSTR_IDENTITY: + appendStringInfoString(str, "GENERATED "); + switch (constraint->generated_when) + { + case ATTRIBUTE_IDENTITY_ALWAYS: + appendStringInfoString(str, "ALWAYS "); + break; + case ATTRIBUTE_IDENTITY_BY_DEFAULT: + appendStringInfoString(str, "BY DEFAULT "); + break; + default: + Assert(false); + } + appendStringInfoString(str, "AS IDENTITY "); + deparseOptParenthesizedSeqOptList(str, constraint->options); + break; + case CONSTR_GENERATED: + Assert(constraint->generated_when == ATTRIBUTE_IDENTITY_ALWAYS); + appendStringInfoString(str, "GENERATED ALWAYS AS ("); + deparseExpr(str, constraint->raw_expr); + appendStringInfoString(str, ") STORED "); + break; + case CONSTR_CHECK: + appendStringInfoString(str, "CHECK ("); + deparseExpr(str, constraint->raw_expr); + appendStringInfoString(str, ") "); + break; + case CONSTR_PRIMARY: + appendStringInfoString(str, "PRIMARY KEY "); + break; + case CONSTR_UNIQUE: + appendStringInfoString(str, "UNIQUE "); + break; + case CONSTR_EXCLUSION: + appendStringInfoString(str, "EXCLUDE "); + if (strcmp(constraint->access_method, DEFAULT_INDEX_TYPE) != 0) + { + appendStringInfoString(str, "USING "); + appendStringInfoString(str, quote_identifier(constraint->access_method)); + appendStringInfoChar(str, ' '); + } + appendStringInfoChar(str, '('); + foreach(lc, constraint->exclusions) + { + List *exclusion = castNode(List, lfirst(lc)); + Assert(list_length(exclusion) == 2); + deparseIndexElem(str, castNode(IndexElem, linitial(exclusion))); + appendStringInfoString(str, " WITH "); + deparseAnyOperator(str, castNode(List, lsecond(exclusion))); + if (lnext(constraint->exclusions, lc)) + appendStringInfoString(str, ", "); + } + appendStringInfoString(str, ") "); + if (constraint->where_clause != NULL) + { + appendStringInfoString(str, "WHERE ("); + deparseExpr(str, constraint->where_clause); + appendStringInfoString(str, ") "); + } + break; + case CONSTR_FOREIGN: + if (list_length(constraint->fk_attrs) > 0) + appendStringInfoString(str, "FOREIGN KEY "); + break; + case CONSTR_ATTR_DEFERRABLE: + appendStringInfoString(str, "DEFERRABLE "); + break; + case CONSTR_ATTR_NOT_DEFERRABLE: + appendStringInfoString(str, "NOT DEFERRABLE "); + break; + case CONSTR_ATTR_DEFERRED: + appendStringInfoString(str, "INITIALLY DEFERRED "); + break; + case CONSTR_ATTR_IMMEDIATE: + appendStringInfoString(str, "INITIALLY IMMEDIATE "); + break; + } + + if (list_length(constraint->keys) > 0) + { + appendStringInfoChar(str, '('); + deparseColumnList(str, constraint->keys); + appendStringInfoString(str, ") "); + } + + if (list_length(constraint->fk_attrs) > 0) + { + appendStringInfoChar(str, '('); + deparseColumnList(str, constraint->fk_attrs); + appendStringInfoString(str, ") "); + } + + if (constraint->pktable != NULL) + { + appendStringInfoString(str, "REFERENCES "); + deparseRangeVar(str, constraint->pktable, DEPARSE_NODE_CONTEXT_NONE); + appendStringInfoChar(str, ' '); + if (list_length(constraint->pk_attrs) > 0) + { + appendStringInfoChar(str, '('); + deparseColumnList(str, constraint->pk_attrs); + appendStringInfoString(str, ") "); + } + } + + switch (constraint->fk_matchtype) + { + case FKCONSTR_MATCH_SIMPLE: + // Default + break; + case FKCONSTR_MATCH_FULL: + appendStringInfoString(str, "MATCH FULL "); + break; + case FKCONSTR_MATCH_PARTIAL: + // Not implemented in Postgres + Assert(false); + break; + default: + // Not specified + break; + } + + switch (constraint->fk_upd_action) + { + case FKCONSTR_ACTION_NOACTION: + // Default + break; + case FKCONSTR_ACTION_RESTRICT: + appendStringInfoString(str, "ON UPDATE RESTRICT "); + break; + case FKCONSTR_ACTION_CASCADE: + appendStringInfoString(str, "ON UPDATE CASCADE "); + break; + case FKCONSTR_ACTION_SETNULL: + appendStringInfoString(str, "ON UPDATE SET NULL "); + break; + case FKCONSTR_ACTION_SETDEFAULT: + appendStringInfoString(str, "ON UPDATE SET DEFAULT "); + break; + default: + // Not specified + break; + } + + switch (constraint->fk_del_action) + { + case FKCONSTR_ACTION_NOACTION: + // Default + break; + case FKCONSTR_ACTION_RESTRICT: + appendStringInfoString(str, "ON DELETE RESTRICT "); + break; + case FKCONSTR_ACTION_CASCADE: + appendStringInfoString(str, "ON DELETE CASCADE "); + break; + case FKCONSTR_ACTION_SETNULL: + appendStringInfoString(str, "ON DELETE SET NULL "); + break; + case FKCONSTR_ACTION_SETDEFAULT: + appendStringInfoString(str, "ON DELETE SET DEFAULT "); + break; + default: + // Not specified + break; + } + + if (list_length(constraint->including) > 0) + { + appendStringInfoString(str, "INCLUDE ("); + deparseColumnList(str, constraint->including); + appendStringInfoString(str, ") "); + } + + if (constraint->indexname != NULL) + appendStringInfo(str, "USING INDEX %s ", quote_identifier(constraint->indexname)); + + if (constraint->indexspace != NULL) + appendStringInfo(str, "USING INDEX TABLESPACE %s ", quote_identifier(constraint->indexspace)); + + if (constraint->deferrable) + appendStringInfoString(str, "DEFERRABLE "); + + if (constraint->initdeferred) + appendStringInfoString(str, "INITIALLY DEFERRED "); + + if (constraint->is_no_inherit) + appendStringInfoString(str, "NO INHERIT "); + + if (constraint->skip_validation) + appendStringInfoString(str, "NOT VALID "); + + removeTrailingSpace(str); +} + +static void deparseCreateFunctionStmt(StringInfo str, CreateFunctionStmt *create_function_stmt) +{ + ListCell *lc; + bool tableFunc = false; + + appendStringInfoString(str, "CREATE "); + if (create_function_stmt->replace) + appendStringInfoString(str, "OR REPLACE "); + if (create_function_stmt->is_procedure) + appendStringInfoString(str, "PROCEDURE "); + else + appendStringInfoString(str, "FUNCTION "); + + deparseFuncName(str, create_function_stmt->funcname); + + appendStringInfoChar(str, '('); + foreach(lc, create_function_stmt->parameters) + { + FunctionParameter *function_parameter = castNode(FunctionParameter, lfirst(lc)); + if (function_parameter->mode != FUNC_PARAM_TABLE) + { + deparseFunctionParameter(str, function_parameter); + if (lnext(create_function_stmt->parameters, lc) && castNode(FunctionParameter, lfirst(lnext(create_function_stmt->parameters, lc)))->mode != FUNC_PARAM_TABLE) + appendStringInfoString(str, ", "); + } + else + { + tableFunc = true; + } + } + appendStringInfoString(str, ") "); + + if (tableFunc) + { + appendStringInfoString(str, "RETURNS TABLE ("); + foreach(lc, create_function_stmt->parameters) + { + FunctionParameter *function_parameter = castNode(FunctionParameter, lfirst(lc)); + if (function_parameter->mode == FUNC_PARAM_TABLE) + { + deparseFunctionParameter(str, function_parameter); + if (lnext(create_function_stmt->parameters, lc)) + appendStringInfoString(str, ", "); + } + } + appendStringInfoString(str, ") "); + } + else if (create_function_stmt->returnType != NULL) + { + appendStringInfoString(str, "RETURNS "); + deparseTypeName(str, create_function_stmt->returnType); + appendStringInfoChar(str, ' '); + } + + foreach(lc, create_function_stmt->options) + { + deparseCreateFuncOptItem(str, castNode(DefElem, lfirst(lc))); + appendStringInfoChar(str, ' '); + } + + removeTrailingSpace(str); +} + +static void deparseFunctionParameter(StringInfo str, FunctionParameter *function_parameter) +{ + switch (function_parameter->mode) + { + case FUNC_PARAM_IN: /* input only */ + // Default + break; + case FUNC_PARAM_OUT: /* output only */ + appendStringInfoString(str, "OUT "); + break; + case FUNC_PARAM_INOUT: /* both */ + appendStringInfoString(str, "INOUT "); + break; + case FUNC_PARAM_VARIADIC: /* variadic (always input) */ + appendStringInfoString(str, "VARIADIC "); + break; + case FUNC_PARAM_TABLE: /* table function output column */ + // No special annotation, the caller is expected to correctly put + // this into the RETURNS part of the CREATE FUNCTION statement + break; + default: + Assert(false); + break; + } + + if (function_parameter->name != NULL) + { + appendStringInfoString(str, function_parameter->name); + appendStringInfoChar(str, ' '); + } + + deparseTypeName(str, function_parameter->argType); + appendStringInfoChar(str, ' '); + + if (function_parameter->defexpr != NULL) + { + appendStringInfoString(str, "= "); + deparseExpr(str, function_parameter->defexpr); + } + + removeTrailingSpace(str); +} + +static void deparseCheckPointStmt(StringInfo str, CheckPointStmt *check_point_stmt) +{ + appendStringInfoString(str, "CHECKPOINT"); +} + +static void deparseCreateSchemaStmt(StringInfo str, CreateSchemaStmt *create_schema_stmt) +{ + ListCell *lc; + + appendStringInfoString(str, "CREATE SCHEMA "); + + if (create_schema_stmt->if_not_exists) + appendStringInfoString(str, "IF NOT EXISTS "); + + if (create_schema_stmt->schemaname) + { + deparseColId(str, create_schema_stmt->schemaname); + appendStringInfoChar(str, ' '); + } + + if (create_schema_stmt->authrole != NULL) + { + appendStringInfoString(str, "AUTHORIZATION "); + deparseRoleSpec(str, create_schema_stmt->authrole); + appendStringInfoChar(str, ' '); + } + + foreach(lc, create_schema_stmt->schemaElts) + { + deparseSchemaStmt(str, lfirst(lc)); + if (lnext(create_schema_stmt->schemaElts, lc)) + appendStringInfoChar(str, ' '); + } + + removeTrailingSpace(str); +} + +static void deparseAlterRoleSetStmt(StringInfo str, AlterRoleSetStmt *alter_role_set_stmt) +{ + appendStringInfoString(str, "ALTER ROLE "); + + if (alter_role_set_stmt->role == NULL) + appendStringInfoString(str, "ALL"); + else + deparseRoleSpec(str, alter_role_set_stmt->role); + + appendStringInfoChar(str, ' '); + + if (alter_role_set_stmt->database != NULL) + { + appendStringInfoString(str, "IN DATABASE "); + appendStringInfoString(str, quote_identifier(alter_role_set_stmt->database)); + appendStringInfoChar(str, ' '); + } + + deparseVariableSetStmt(str, alter_role_set_stmt->setstmt); +} + +static void deparseCreateConversionStmt(StringInfo str, CreateConversionStmt *create_conversion_stmt) +{ + appendStringInfoString(str, "CREATE "); + if (create_conversion_stmt->def) + appendStringInfoString(str, "DEFAULT "); + + appendStringInfoString(str, "CONVERSION "); + deparseAnyName(str, create_conversion_stmt->conversion_name); + appendStringInfoChar(str, ' '); + + appendStringInfoString(str, "FOR "); + deparseStringLiteral(str, create_conversion_stmt->for_encoding_name); + appendStringInfoString(str, " TO "); + deparseStringLiteral(str, create_conversion_stmt->to_encoding_name); + + appendStringInfoString(str, "FROM "); + deparseAnyName(str, create_conversion_stmt->func_name); +} + +static void deparseRoleSpec(StringInfo str, RoleSpec *role_spec) +{ + switch (role_spec->roletype) + { + case ROLESPEC_CSTRING: + Assert(role_spec->rolename != NULL); + appendStringInfoString(str, quote_identifier(role_spec->rolename)); + break; + case ROLESPEC_CURRENT_USER: + appendStringInfoString(str, "CURRENT_USER"); + break; + case ROLESPEC_SESSION_USER: + appendStringInfoString(str, "SESSION_USER"); + break; + case ROLESPEC_PUBLIC: + appendStringInfoString(str, "public"); + break; + } +} + +// "part_elem" in gram.y +static void deparsePartitionElem(StringInfo str, PartitionElem *partition_elem) +{ + ListCell *lc; + + if (partition_elem->name != NULL) + { + deparseColId(str, partition_elem->name); + appendStringInfoChar(str, ' '); + } + else if (partition_elem->expr != NULL) + { + appendStringInfoChar(str, '('); + deparseExpr(str, partition_elem->expr); + appendStringInfoString(str, ") "); + } + + deparseOptCollate(str, partition_elem->collation); + deparseAnyName(str, partition_elem->opclass); + + removeTrailingSpace(str); +} + +static void deparsePartitionSpec(StringInfo str, PartitionSpec *partition_spec) +{ + ListCell *lc; + + appendStringInfoString(str, "PARTITION BY "); + appendStringInfoString(str, partition_spec->strategy); + + appendStringInfoChar(str, '('); + foreach(lc, partition_spec->partParams) + { + deparsePartitionElem(str, castNode(PartitionElem, lfirst(lc))); + if (lnext(partition_spec->partParams, lc)) + appendStringInfoString(str, ", "); + } + appendStringInfoChar(str, ')'); +} + +static void deparsePartitionBoundSpec(StringInfo str, PartitionBoundSpec *partition_bound_spec) +{ + ListCell *lc; + + if (partition_bound_spec->is_default) + { + appendStringInfoString(str, "DEFAULT"); + return; + } + + appendStringInfoString(str, "FOR VALUES "); + + switch (partition_bound_spec->strategy) + { + case PARTITION_STRATEGY_HASH: + appendStringInfo(str, "WITH (MODULUS %d, REMAINDER %d)", partition_bound_spec->modulus, partition_bound_spec->remainder); + break; + case PARTITION_STRATEGY_LIST: + appendStringInfoString(str, "IN ("); + deparseExprList(str, partition_bound_spec->listdatums); + appendStringInfoChar(str, ')'); + break; + case PARTITION_STRATEGY_RANGE: + appendStringInfoString(str, "FROM ("); + deparseExprList(str, partition_bound_spec->lowerdatums); + appendStringInfoString(str, ") TO ("); + deparseExprList(str, partition_bound_spec->upperdatums); + appendStringInfoChar(str, ')'); + break; + default: + Assert(false); + break; + } +} + +static void deparsePartitionCmd(StringInfo str, PartitionCmd *partition_cmd) +{ + deparseRangeVar(str, partition_cmd->name, DEPARSE_NODE_CONTEXT_NONE); + + if (partition_cmd->bound != NULL) + { + appendStringInfoChar(str, ' '); + deparsePartitionBoundSpec(str, partition_cmd->bound); + } +} + +// "TableElement" in gram.y +static void deparseTableElement(StringInfo str, Node *node) +{ + switch (nodeTag(node)) + { + case T_ColumnDef: + deparseColumnDef(str, castNode(ColumnDef, node)); + break; + case T_TableLikeClause: + deparseTableLikeClause(str, castNode(TableLikeClause, node)); + break; + case T_Constraint: + deparseConstraint(str, castNode(Constraint, node)); + break; + default: + Assert(false); + } +} + +static void deparseCreateStmt(StringInfo str, CreateStmt *create_stmt, bool is_foreign_table) +{ + ListCell *lc; + + appendStringInfoString(str, "CREATE "); + + if (is_foreign_table) + appendStringInfoString(str, "FOREIGN "); + + deparseOptTemp(str, create_stmt->relation->relpersistence); + + appendStringInfoString(str, "TABLE "); + + if (create_stmt->if_not_exists) + appendStringInfoString(str, "IF NOT EXISTS "); + + deparseRangeVar(str, create_stmt->relation, DEPARSE_NODE_CONTEXT_NONE); + appendStringInfoChar(str, ' '); + + if (create_stmt->ofTypename != NULL) + { + appendStringInfoString(str, "OF "); + deparseTypeName(str, create_stmt->ofTypename); + appendStringInfoChar(str, ' '); + } + + if (create_stmt->partbound != NULL) + { + Assert(list_length(create_stmt->inhRelations) == 1); + appendStringInfoString(str, "PARTITION OF "); + deparseRangeVar(str, castNode(RangeVar, linitial(create_stmt->inhRelations)), DEPARSE_NODE_CONTEXT_NONE); + appendStringInfoChar(str, ' '); + } + + if (list_length(create_stmt->tableElts) > 0) + { + // In raw parse output tableElts contains both columns and constraints + // (and the constraints field is NIL) + appendStringInfoChar(str, '('); + foreach(lc, create_stmt->tableElts) + { + deparseTableElement(str, lfirst(lc)); + if (lnext(create_stmt->tableElts, lc)) + appendStringInfoString(str, ", "); + } + appendStringInfoString(str, ") "); + } + else if (create_stmt->partbound == NULL && create_stmt->ofTypename == NULL) + { + appendStringInfoString(str, "() "); + } + + if (create_stmt->partbound != NULL) + { + deparsePartitionBoundSpec(str, create_stmt->partbound); + appendStringInfoChar(str, ' '); + } + else + { + deparseOptInherit(str, create_stmt->inhRelations); + } + + if (create_stmt->partspec != NULL) + { + deparsePartitionSpec(str, create_stmt->partspec); + appendStringInfoChar(str, ' '); + } + + if (create_stmt->accessMethod != NULL) + { + appendStringInfoString(str, "USING "); + appendStringInfoString(str, quote_identifier(create_stmt->accessMethod)); + } + + deparseOptWith(str, create_stmt->options); + + switch (create_stmt->oncommit) + { + case ONCOMMIT_NOOP: + // No ON COMMIT clause + break; + case ONCOMMIT_PRESERVE_ROWS: + appendStringInfoString(str, "ON COMMIT PRESERVE ROWS "); + break; + case ONCOMMIT_DELETE_ROWS: + appendStringInfoString(str, "ON COMMIT DELETE ROWS "); + break; + case ONCOMMIT_DROP: + appendStringInfoString(str, "ON COMMIT DROP "); + break; + } + + if (create_stmt->tablespacename != NULL) + { + appendStringInfoString(str, "TABLESPACE "); + appendStringInfoString(str, quote_identifier(create_stmt->tablespacename)); + } + + removeTrailingSpace(str); +} + +static void deparseCreateFdwStmt(StringInfo str, CreateFdwStmt *create_fdw_stmt) +{ + ListCell *lc; + + appendStringInfoString(str, "CREATE FOREIGN DATA WRAPPER "); + appendStringInfoString(str, quote_identifier(create_fdw_stmt->fdwname)); + appendStringInfoChar(str, ' '); + + if (list_length(create_fdw_stmt->func_options) > 0) + { + deparseFdwOptions(str, create_fdw_stmt->func_options); + appendStringInfoChar(str, ' '); + } + + deparseCreateGenericOptions(str, create_fdw_stmt->options); + + removeTrailingSpace(str); +} + +static void deparseAlterFdwStmt(StringInfo str, AlterFdwStmt *alter_fdw_stmt) +{ + appendStringInfoString(str, "ALTER FOREIGN DATA WRAPPER "); + appendStringInfoString(str, quote_identifier(alter_fdw_stmt->fdwname)); + appendStringInfoChar(str, ' '); + + if (list_length(alter_fdw_stmt->func_options) > 0) + { + deparseFdwOptions(str, alter_fdw_stmt->func_options); + appendStringInfoChar(str, ' '); + } + + if (list_length(alter_fdw_stmt->options) > 0) + deparseAlterGenericOptions(str, alter_fdw_stmt->options); + + removeTrailingSpace(str); +} + +static void deparseCreateForeignServerStmt(StringInfo str, CreateForeignServerStmt *create_foreign_server_stmt) +{ + ListCell *lc; + + appendStringInfoString(str, "CREATE SERVER "); + if (create_foreign_server_stmt->if_not_exists) + appendStringInfoString(str, "IF NOT EXISTS "); + appendStringInfoString(str, quote_identifier(create_foreign_server_stmt->servername)); + appendStringInfoChar(str, ' '); + + if (create_foreign_server_stmt->servertype != NULL) + { + appendStringInfoString(str, "TYPE "); + deparseStringLiteral(str, create_foreign_server_stmt->servertype); + appendStringInfoChar(str, ' '); + } + + if (create_foreign_server_stmt->version != NULL) + { + appendStringInfoString(str, "VERSION "); + deparseStringLiteral(str, create_foreign_server_stmt->version); + appendStringInfoChar(str, ' '); + } + + appendStringInfoString(str, "FOREIGN DATA WRAPPER "); + appendStringInfoString(str, quote_identifier(create_foreign_server_stmt->fdwname)); + appendStringInfoChar(str, ' '); + + deparseCreateGenericOptions(str, create_foreign_server_stmt->options); + + removeTrailingSpace(str); +} + +static void deparseAlterForeignServerStmt(StringInfo str, AlterForeignServerStmt *alter_foreign_server_stmt) +{ + appendStringInfoString(str, "ALTER SERVER "); + + appendStringInfoString(str, quote_identifier(alter_foreign_server_stmt->servername)); + appendStringInfoChar(str, ' '); + + if (alter_foreign_server_stmt->has_version) + { + appendStringInfoString(str, "VERSION "); + if (alter_foreign_server_stmt->version != NULL) + deparseStringLiteral(str, alter_foreign_server_stmt->version); + else + appendStringInfoString(str, "NULL"); + appendStringInfoChar(str, ' '); + } + + if (list_length(alter_foreign_server_stmt->options) > 0) + deparseAlterGenericOptions(str, alter_foreign_server_stmt->options); + + removeTrailingSpace(str); +} + +static void deparseCreateUserMappingStmt(StringInfo str, CreateUserMappingStmt *create_user_mapping_stmt) +{ + appendStringInfoString(str, "CREATE USER MAPPING "); + if (create_user_mapping_stmt->if_not_exists) + appendStringInfoString(str, "IF NOT EXISTS "); + + appendStringInfoString(str, "FOR "); + deparseRoleSpec(str, create_user_mapping_stmt->user); + appendStringInfoChar(str, ' '); + + appendStringInfoString(str, "SERVER "); + appendStringInfoString(str, quote_identifier(create_user_mapping_stmt->servername)); + appendStringInfoChar(str, ' '); + + deparseCreateGenericOptions(str, create_user_mapping_stmt->options); + + removeTrailingSpace(str); +} + +static void deparseCreatedbStmt(StringInfo str, CreatedbStmt *createdb_stmt) +{ + appendStringInfoString(str, "CREATE DATABASE "); + deparseColId(str, createdb_stmt->dbname); + appendStringInfoChar(str, ' '); + deparseCreatedbOptList(str, createdb_stmt->options); + removeTrailingSpace(str); +} + +static void deparseAlterUserMappingStmt(StringInfo str, AlterUserMappingStmt *alter_user_mapping_stmt) +{ + appendStringInfoString(str, "ALTER USER MAPPING FOR "); + deparseRoleSpec(str, alter_user_mapping_stmt->user); + appendStringInfoChar(str, ' '); + + appendStringInfoString(str, "SERVER "); + appendStringInfoString(str, quote_identifier(alter_user_mapping_stmt->servername)); + appendStringInfoChar(str, ' '); + + deparseAlterGenericOptions(str, alter_user_mapping_stmt->options); + + removeTrailingSpace(str); +} + +static void deparseDropUserMappingStmt(StringInfo str, DropUserMappingStmt *drop_user_mapping_stmt) +{ + appendStringInfoString(str, "DROP USER MAPPING "); + + if (drop_user_mapping_stmt->missing_ok) + appendStringInfoString(str, "IF EXISTS "); + + appendStringInfoString(str, "FOR "); + deparseRoleSpec(str, drop_user_mapping_stmt->user); + appendStringInfoChar(str, ' '); + + appendStringInfoString(str, "SERVER "); + appendStringInfoString(str, quote_identifier(drop_user_mapping_stmt->servername)); +} + +static void deparseSecLabelStmt(StringInfo str, SecLabelStmt *sec_label_stmt) +{ + ListCell *lc = NULL; + + appendStringInfoString(str, "SECURITY LABEL "); + + if (sec_label_stmt->provider != NULL) + { + appendStringInfoString(str, "FOR "); + appendStringInfoString(str, quote_identifier(sec_label_stmt->provider)); + appendStringInfoChar(str, ' '); + } + + appendStringInfoString(str, "ON "); + + switch (sec_label_stmt->objtype) + { + case OBJECT_COLUMN: + appendStringInfoString(str, "COLUMN "); + deparseAnyName(str, castNode(List, sec_label_stmt->object)); + break; + case OBJECT_FOREIGN_TABLE: + appendStringInfoString(str, "FOREIGN TABLE "); + deparseAnyName(str, castNode(List, sec_label_stmt->object)); + break; + case OBJECT_SEQUENCE: + appendStringInfoString(str, "SEQUENCE "); + deparseAnyName(str, castNode(List, sec_label_stmt->object)); + break; + case OBJECT_TABLE: + appendStringInfoString(str, "TABLE "); + deparseAnyName(str, castNode(List, sec_label_stmt->object)); + break; + case OBJECT_VIEW: + appendStringInfoString(str, "VIEW "); + deparseAnyName(str, castNode(List, sec_label_stmt->object)); + break; + case OBJECT_MATVIEW: + appendStringInfoString(str, "MATERIALIZED VIEW "); + deparseAnyName(str, castNode(List, sec_label_stmt->object)); + break; + case OBJECT_DATABASE: + appendStringInfoString(str, "DATABASE "); + appendStringInfoString(str, quote_identifier(strVal(sec_label_stmt->object))); + break; + case OBJECT_EVENT_TRIGGER: + appendStringInfoString(str, "EVENT TRIGGER "); + appendStringInfoString(str, quote_identifier(strVal(sec_label_stmt->object))); + break; + case OBJECT_LANGUAGE: + appendStringInfoString(str, "LANGUAGE "); + appendStringInfoString(str, quote_identifier(strVal(sec_label_stmt->object))); + break; + case OBJECT_PUBLICATION: + appendStringInfoString(str, "PUBLICATION "); + appendStringInfoString(str, quote_identifier(strVal(sec_label_stmt->object))); + break; + case OBJECT_ROLE: + appendStringInfoString(str, "ROLE "); + appendStringInfoString(str, quote_identifier(strVal(sec_label_stmt->object))); + break; + case OBJECT_SCHEMA: + appendStringInfoString(str, "SCHEMA "); + appendStringInfoString(str, quote_identifier(strVal(sec_label_stmt->object))); + break; + case OBJECT_SUBSCRIPTION: + appendStringInfoString(str, "SUBSCRIPTION "); + appendStringInfoString(str, quote_identifier(strVal(sec_label_stmt->object))); + break; + case OBJECT_TABLESPACE: + appendStringInfoString(str, "TABLESPACE "); + appendStringInfoString(str, quote_identifier(strVal(sec_label_stmt->object))); + break; + case OBJECT_TYPE: + appendStringInfoString(str, "TYPE "); + deparseTypeName(str, castNode(TypeName, sec_label_stmt->object)); + break; + case OBJECT_DOMAIN: + appendStringInfoString(str, "DOMAIN "); + deparseTypeName(str, castNode(TypeName, sec_label_stmt->object)); + break; + case OBJECT_AGGREGATE: + appendStringInfoString(str, "AGGREGATE "); + deparseAggregateWithArgtypes(str, castNode(ObjectWithArgs, sec_label_stmt->object)); + break; + case OBJECT_FUNCTION: + appendStringInfoString(str, "FUNCTION "); + deparseFunctionWithArgtypes(str, castNode(ObjectWithArgs, sec_label_stmt->object)); + break; + case OBJECT_LARGEOBJECT: + appendStringInfoString(str, "LARGE OBJECT "); + deparseValue(str, (Value *) sec_label_stmt->object, DEPARSE_NODE_CONTEXT_CONSTANT); + break; + case OBJECT_PROCEDURE: + appendStringInfoString(str, "PROCEDURE "); + deparseFunctionWithArgtypes(str, castNode(ObjectWithArgs, sec_label_stmt->object)); + break; + case OBJECT_ROUTINE: + appendStringInfoString(str, "ROUTINE "); + deparseFunctionWithArgtypes(str, castNode(ObjectWithArgs, sec_label_stmt->object)); + break; + default: + // Not supported in the parser + Assert(false); + break; + } + + appendStringInfoString(str, " IS "); + + if (sec_label_stmt->label != NULL) + deparseStringLiteral(str, sec_label_stmt->label); + else + appendStringInfoString(str, "NULL"); +} + +static void deparseCreateForeignTableStmt(StringInfo str, CreateForeignTableStmt *create_foreign_table_stmt) +{ + ListCell *lc; + + deparseCreateStmt(str, &create_foreign_table_stmt->base, true); + + appendStringInfoString(str, " SERVER "); + appendStringInfoString(str, quote_identifier(create_foreign_table_stmt->servername)); + appendStringInfoChar(str, ' '); + + if (list_length(create_foreign_table_stmt->options) > 0) + deparseAlterGenericOptions(str, create_foreign_table_stmt->options); + + removeTrailingSpace(str); +} + +static void deparseImportForeignSchemaStmt(StringInfo str, ImportForeignSchemaStmt *import_foreign_schema_stmt) +{ + appendStringInfoString(str, "IMPORT FOREIGN SCHEMA "); + + appendStringInfoString(str, import_foreign_schema_stmt->remote_schema); + appendStringInfoChar(str, ' '); + + switch (import_foreign_schema_stmt->list_type) + { + case FDW_IMPORT_SCHEMA_ALL: + // Default + break; + case FDW_IMPORT_SCHEMA_LIMIT_TO: + appendStringInfoString(str, "LIMIT TO ("); + deparseRelationExprList(str, import_foreign_schema_stmt->table_list); + appendStringInfoString(str, ") "); + break; + case FDW_IMPORT_SCHEMA_EXCEPT: + appendStringInfoString(str, "EXCEPT ("); + deparseRelationExprList(str, import_foreign_schema_stmt->table_list); + appendStringInfoString(str, ") "); + break; + } + + appendStringInfoString(str, "FROM SERVER "); + appendStringInfoString(str, quote_identifier(import_foreign_schema_stmt->server_name)); + appendStringInfoChar(str, ' '); + + appendStringInfoString(str, "INTO "); + appendStringInfoString(str, quote_identifier(import_foreign_schema_stmt->local_schema)); + appendStringInfoChar(str, ' '); + + deparseCreateGenericOptions(str, import_foreign_schema_stmt->options); + + removeTrailingSpace(str); +} + +static void deparseCreateTableAsStmt(StringInfo str, CreateTableAsStmt *create_table_as_stmt) +{ + ListCell *lc; + appendStringInfoString(str, "CREATE "); + + deparseOptTemp(str, create_table_as_stmt->into->rel->relpersistence); + + switch (create_table_as_stmt->relkind) + { + case OBJECT_TABLE: + appendStringInfoString(str, "TABLE "); + break; + case OBJECT_MATVIEW: + appendStringInfoString(str, "MATERIALIZED VIEW "); + break; + default: + // Not supported here + Assert(false); + break; + } + + if (create_table_as_stmt->if_not_exists) + appendStringInfoString(str, "IF NOT EXISTS "); + + deparseIntoClause(str, create_table_as_stmt->into); + appendStringInfoChar(str, ' '); + + appendStringInfoString(str, "AS "); + if (IsA(create_table_as_stmt->query, ExecuteStmt)) + deparseExecuteStmt(str, castNode(ExecuteStmt, create_table_as_stmt->query)); + else + deparseSelectStmt(str, castNode(SelectStmt, create_table_as_stmt->query)); + appendStringInfoChar(str, ' '); + + if (create_table_as_stmt->into->skipData) + appendStringInfoString(str, "WITH NO DATA "); + + removeTrailingSpace(str); +} + +static void deparseViewStmt(StringInfo str, ViewStmt *view_stmt) +{ + ListCell *lc; + + appendStringInfoString(str, "CREATE "); + + if (view_stmt->replace) + appendStringInfoString(str, "OR REPLACE "); + + deparseOptTemp(str, view_stmt->view->relpersistence); + + appendStringInfoString(str, "VIEW "); + deparseRangeVar(str, view_stmt->view, DEPARSE_NODE_CONTEXT_NONE); + appendStringInfoChar(str, ' '); + + if (list_length(view_stmt->aliases) > 0) + { + appendStringInfoChar(str, '('); + deparseColumnList(str, view_stmt->aliases); + appendStringInfoString(str, ") "); + } + + deparseOptWith(str, view_stmt->options); + + appendStringInfoString(str, "AS "); + deparseSelectStmt(str, castNode(SelectStmt, view_stmt->query)); + appendStringInfoChar(str, ' '); + + switch (view_stmt->withCheckOption) + { + case NO_CHECK_OPTION: + // Default + break; + case LOCAL_CHECK_OPTION: + appendStringInfoString(str, "WITH LOCAL CHECK OPTION "); + break; + case CASCADED_CHECK_OPTION: + appendStringInfoString(str, "WITH CHECK OPTION "); + break; + } + + removeTrailingSpace(str); +} + +static void deparseDropStmt(StringInfo str, DropStmt *drop_stmt) +{ + ListCell *lc; + List *l; + + appendStringInfoString(str, "DROP "); + + switch (drop_stmt->removeType) + { + case OBJECT_ACCESS_METHOD: + appendStringInfoString(str, "ACCESS METHOD "); + break; + case OBJECT_AGGREGATE: + appendStringInfoString(str, "AGGREGATE "); + break; + case OBJECT_CAST: + appendStringInfoString(str, "CAST "); + break; + case OBJECT_COLLATION: + appendStringInfoString(str, "COLLATION "); + break; + case OBJECT_CONVERSION: + appendStringInfoString(str, "CONVERSION "); + break; + case OBJECT_DOMAIN: + appendStringInfoString(str, "DOMAIN "); + break; + case OBJECT_EVENT_TRIGGER: + appendStringInfoString(str, "EVENT TRIGGER "); + break; + case OBJECT_EXTENSION: + appendStringInfoString(str, "EXTENSION "); + break; + case OBJECT_FDW: + appendStringInfoString(str, "FOREIGN DATA WRAPPER "); + break; + case OBJECT_FOREIGN_SERVER: + appendStringInfoString(str, "SERVER "); + break; + case OBJECT_FOREIGN_TABLE: + appendStringInfoString(str, "FOREIGN TABLE "); + break; + case OBJECT_FUNCTION: + appendStringInfoString(str, "FUNCTION "); + break; + case OBJECT_INDEX: + appendStringInfoString(str, "INDEX "); + break; + case OBJECT_LANGUAGE: + appendStringInfoString(str, "LANGUAGE "); + break; + case OBJECT_MATVIEW: + appendStringInfoString(str, "MATERIALIZED VIEW "); + break; + case OBJECT_OPCLASS: + appendStringInfoString(str, "OPERATOR CLASS "); + break; + case OBJECT_OPERATOR: + appendStringInfoString(str, "OPERATOR "); + break; + case OBJECT_OPFAMILY: + appendStringInfoString(str, "OPERATOR FAMILY "); + break; + case OBJECT_POLICY: + appendStringInfoString(str, "POLICY "); + break; + case OBJECT_PROCEDURE: + appendStringInfoString(str, "PROCEDURE "); + break; + case OBJECT_PUBLICATION: + appendStringInfoString(str, "PUBLICATION "); + break; + case OBJECT_ROUTINE: + appendStringInfoString(str, "ROUTINE "); + break; + case OBJECT_RULE: + appendStringInfoString(str, "RULE "); + break; + case OBJECT_SCHEMA: + appendStringInfoString(str, "SCHEMA "); + break; + case OBJECT_SEQUENCE: + appendStringInfoString(str, "SEQUENCE "); + break; + case OBJECT_STATISTIC_EXT: + appendStringInfoString(str, "STATISTICS "); + break; + case OBJECT_TABLE: + appendStringInfoString(str, "TABLE "); + break; + case OBJECT_TRANSFORM: + appendStringInfoString(str, "TRANSFORM "); + break; + case OBJECT_TRIGGER: + appendStringInfoString(str, "TRIGGER "); + break; + case OBJECT_TSCONFIGURATION: + appendStringInfoString(str, "TEXT SEARCH CONFIGURATION "); + break; + case OBJECT_TSDICTIONARY: + appendStringInfoString(str, "TEXT SEARCH DICTIONARY "); + break; + case OBJECT_TSPARSER: + appendStringInfoString(str, "TEXT SEARCH PARSER "); + break; + case OBJECT_TSTEMPLATE: + appendStringInfoString(str, "TEXT SEARCH TEMPLATE "); + break; + case OBJECT_TYPE: + appendStringInfoString(str, "TYPE "); + break; + case OBJECT_VIEW: + appendStringInfoString(str, "VIEW "); + break; + default: + // Other object types are not supported here in the parser + Assert(false); + } + + if (drop_stmt->concurrent) + appendStringInfoString(str, "CONCURRENTLY "); + + if (drop_stmt->missing_ok) + appendStringInfoString(str, "IF EXISTS "); + + switch (drop_stmt->removeType) + { + // drop_type_any_name + case OBJECT_TABLE: + case OBJECT_SEQUENCE: + case OBJECT_VIEW: + case OBJECT_MATVIEW: + case OBJECT_INDEX: + case OBJECT_FOREIGN_TABLE: + case OBJECT_COLLATION: + case OBJECT_CONVERSION: + case OBJECT_STATISTIC_EXT: + case OBJECT_TSPARSER: + case OBJECT_TSDICTIONARY: + case OBJECT_TSTEMPLATE: + case OBJECT_TSCONFIGURATION: + deparseAnyNameList(str, drop_stmt->objects); + appendStringInfoChar(str, ' '); + break; + // drop_type_name + case OBJECT_ACCESS_METHOD: + case OBJECT_EVENT_TRIGGER: + case OBJECT_EXTENSION: + case OBJECT_FDW: + case OBJECT_PUBLICATION: + case OBJECT_SCHEMA: + case OBJECT_FOREIGN_SERVER: + deparseNameList(str, drop_stmt->objects); + appendStringInfoChar(str, ' '); + break; + // drop_type_name_on_any_name + case OBJECT_POLICY: + case OBJECT_RULE: + case OBJECT_TRIGGER: + Assert(list_length(drop_stmt->objects) == 1); + l = linitial(drop_stmt->objects); + deparseColId(str, strVal(llast(l))); + appendStringInfoString(str, " ON "); + deparseAnyNameSkipLast(str, l); + appendStringInfoChar(str, ' '); + break; + case OBJECT_CAST: + Assert(list_length(drop_stmt->objects) == 1); + l = linitial(drop_stmt->objects); + Assert(list_length(l) == 2); + appendStringInfoChar(str, '('); + deparseTypeName(str, castNode(TypeName, linitial(l))); + appendStringInfoString(str, " AS "); + deparseTypeName(str, castNode(TypeName, lsecond(l))); + appendStringInfoChar(str, ')'); + appendStringInfoChar(str, ' '); + break; + case OBJECT_OPFAMILY: + case OBJECT_OPCLASS: + Assert(list_length(drop_stmt->objects) == 1); + l = linitial(drop_stmt->objects); + deparseAnyNameSkipFirst(str, l); + appendStringInfoString(str, " USING "); + deparseColId(str, strVal(linitial(l))); + appendStringInfoChar(str, ' '); + break; + case OBJECT_TRANSFORM: + Assert(list_length(drop_stmt->objects) == 1); + l = linitial(drop_stmt->objects); + appendStringInfoString(str, "FOR "); + deparseTypeName(str, castNode(TypeName, linitial(l))); + appendStringInfoString(str, " LANGUAGE "); + deparseColId(str, strVal(lsecond(l))); + appendStringInfoChar(str, ' '); + break; + case OBJECT_LANGUAGE: + deparseStringLiteral(str, strVal(linitial(drop_stmt->objects))); + appendStringInfoChar(str, ' '); + break; + case OBJECT_TYPE: + case OBJECT_DOMAIN: + foreach(lc, drop_stmt->objects) + { + deparseTypeName(str, castNode(TypeName, lfirst(lc))); + if (lnext(drop_stmt->objects, lc)) + appendStringInfoString(str, ", "); + } + appendStringInfoChar(str, ' '); + break; + case OBJECT_AGGREGATE: + foreach(lc, drop_stmt->objects) + { + deparseAggregateWithArgtypes(str, castNode(ObjectWithArgs, lfirst(lc))); + if (lnext(drop_stmt->objects, lc)) + appendStringInfoString(str, ", "); + } + appendStringInfoChar(str, ' '); + break; + case OBJECT_FUNCTION: + case OBJECT_PROCEDURE: + case OBJECT_ROUTINE: + foreach(lc, drop_stmt->objects) + { + deparseFunctionWithArgtypes(str, castNode(ObjectWithArgs, lfirst(lc))); + if (lnext(drop_stmt->objects, lc)) + appendStringInfoString(str, ", "); + } + appendStringInfoChar(str, ' '); + break; + case OBJECT_OPERATOR: + foreach(lc, drop_stmt->objects) + { + deparseOperatorWithArgtypes(str, castNode(ObjectWithArgs, lfirst(lc))); + if (lnext(drop_stmt->objects, lc)) + appendStringInfoString(str, ", "); + } + appendStringInfoChar(str, ' '); + break; + default: + Assert(false); + } + + deparseOptDropBehavior(str, drop_stmt->behavior); + + removeTrailingSpace(str); +} + +static void deparseGroupingSet(StringInfo str, GroupingSet *grouping_set) +{ + switch(grouping_set->kind) + { + case GROUPING_SET_EMPTY: + appendStringInfoString(str, "()"); + break; + case GROUPING_SET_SIMPLE: + // Not present in raw parse trees + Assert(false); + break; + case GROUPING_SET_ROLLUP: + appendStringInfoString(str, "ROLLUP ("); + deparseExprList(str, grouping_set->content); + appendStringInfoChar(str, ')'); + break; + case GROUPING_SET_CUBE: + appendStringInfoString(str, "CUBE ("); + deparseExprList(str, grouping_set->content); + appendStringInfoChar(str, ')'); + break; + case GROUPING_SET_SETS: + appendStringInfoString(str, "GROUPING SETS ("); + deparseGroupByList(str, grouping_set->content); + appendStringInfoChar(str, ')'); + break; + } +} + +static void deparseDropTableSpaceStmt(StringInfo str, DropTableSpaceStmt *drop_table_space_stmt) +{ + appendStringInfoString(str, "DROP TABLESPACE "); + + if (drop_table_space_stmt->missing_ok) + appendStringInfoString(str, "IF EXISTS "); + + appendStringInfoString(str, drop_table_space_stmt->tablespacename); +} + +static void deparseAlterObjectDependsStmt(StringInfo str, AlterObjectDependsStmt *alter_object_depends_stmt) +{ + appendStringInfoString(str, "ALTER "); + + switch (alter_object_depends_stmt->objectType) + { + case OBJECT_FUNCTION: + appendStringInfoString(str, "FUNCTION "); + deparseFunctionWithArgtypes(str, castNode(ObjectWithArgs, alter_object_depends_stmt->object)); + break; + case OBJECT_PROCEDURE: + appendStringInfoString(str, "PROCEDURE "); + deparseFunctionWithArgtypes(str, castNode(ObjectWithArgs, alter_object_depends_stmt->object)); + break; + case OBJECT_ROUTINE: + appendStringInfoString(str, "ROUTINE "); + deparseFunctionWithArgtypes(str, castNode(ObjectWithArgs, alter_object_depends_stmt->object)); + break; + case OBJECT_TRIGGER: + appendStringInfoString(str, "TRIGGER "); + deparseColId(str, strVal(linitial(castNode(List, alter_object_depends_stmt->object)))); + appendStringInfoString(str, " ON "); + deparseRangeVar(str, alter_object_depends_stmt->relation, DEPARSE_NODE_CONTEXT_NONE); + break; + case OBJECT_MATVIEW: + appendStringInfoString(str, "MATERIALIZED VIEW "); + deparseRangeVar(str, alter_object_depends_stmt->relation, DEPARSE_NODE_CONTEXT_NONE); + break; + case OBJECT_INDEX: + appendStringInfoString(str, "INDEX "); + deparseRangeVar(str, alter_object_depends_stmt->relation, DEPARSE_NODE_CONTEXT_NONE); + break; + default: + // No other object types supported here + Assert(false); + } + appendStringInfoChar(str, ' '); + + if (alter_object_depends_stmt->remove) + appendStringInfoString(str, "NO "); + + appendStringInfoString(str, "DEPENDS ON EXTENSION "); + deparseColId(str, strVal(alter_object_depends_stmt->extname)); +} + +static void deparseAlterObjectSchemaStmt(StringInfo str, AlterObjectSchemaStmt *alter_object_schema_stmt) +{ + List *l = NULL; + ListCell *lc = NULL; + + appendStringInfoString(str, "ALTER "); + + switch (alter_object_schema_stmt->objectType) + { + case OBJECT_AGGREGATE: + appendStringInfoString(str, "AGGREGATE "); + deparseAggregateWithArgtypes(str, castNode(ObjectWithArgs, alter_object_schema_stmt->object)); + break; + case OBJECT_COLLATION: + appendStringInfoString(str, "COLLATION "); + deparseAnyName(str, castNode(List, alter_object_schema_stmt->object)); + break; + case OBJECT_CONVERSION: + appendStringInfoString(str, "CONVERSION "); + deparseAnyName(str, castNode(List, alter_object_schema_stmt->object)); + break; + case OBJECT_DOMAIN: + appendStringInfoString(str, "DOMAIN "); + deparseAnyName(str, castNode(List, alter_object_schema_stmt->object)); + break; + case OBJECT_EXTENSION: + appendStringInfoString(str, "EXTENSION "); + appendStringInfoString(str, quote_identifier(strVal(alter_object_schema_stmt->object))); + break; + case OBJECT_FUNCTION: + appendStringInfoString(str, "FUNCTION "); + deparseFunctionWithArgtypes(str, castNode(ObjectWithArgs, alter_object_schema_stmt->object)); + break; + case OBJECT_OPERATOR: + appendStringInfoString(str, "OPERATOR "); + deparseOperatorWithArgtypes(str, castNode(ObjectWithArgs, alter_object_schema_stmt->object)); + break; + case OBJECT_OPCLASS: + l = castNode(List, alter_object_schema_stmt->object); + appendStringInfoString(str, "OPERATOR CLASS "); + deparseAnyNameSkipFirst(str, l); + appendStringInfoString(str, " USING "); + appendStringInfoString(str, quote_identifier(strVal(linitial(l)))); + break; + case OBJECT_OPFAMILY: + l = castNode(List, alter_object_schema_stmt->object); + appendStringInfoString(str, "OPERATOR FAMILY "); + deparseAnyNameSkipFirst(str, l); + appendStringInfoString(str, " USING "); + appendStringInfoString(str, quote_identifier(strVal(linitial(l)))); + break; + case OBJECT_PROCEDURE: + appendStringInfoString(str, "PROCEDURE "); + deparseFunctionWithArgtypes(str, castNode(ObjectWithArgs, alter_object_schema_stmt->object)); + break; + case OBJECT_ROUTINE: + appendStringInfoString(str, "ROUTINE "); + deparseFunctionWithArgtypes(str, castNode(ObjectWithArgs, alter_object_schema_stmt->object)); + break; + case OBJECT_TABLE: + appendStringInfoString(str, "TABLE "); + if (alter_object_schema_stmt->missing_ok) + appendStringInfoString(str, "IF EXISTS "); + deparseRangeVar(str, alter_object_schema_stmt->relation, DEPARSE_NODE_CONTEXT_NONE); + break; + case OBJECT_STATISTIC_EXT: + appendStringInfoString(str, "STATISTICS "); + deparseAnyName(str, castNode(List, alter_object_schema_stmt->object)); + break; + case OBJECT_TSPARSER: + appendStringInfoString(str, "TEXT SEARCH PARSER "); + deparseAnyName(str, castNode(List, alter_object_schema_stmt->object)); + break; + case OBJECT_TSDICTIONARY: + appendStringInfoString(str, "TEXT SEARCH DICTIONARY "); + deparseAnyName(str, castNode(List, alter_object_schema_stmt->object)); + break; + case OBJECT_TSTEMPLATE: + appendStringInfoString(str, "TEXT SEARCH TEMPLATE "); + deparseAnyName(str, castNode(List, alter_object_schema_stmt->object)); + break; + case OBJECT_TSCONFIGURATION: + appendStringInfoString(str, "TEXT SEARCH CONFIGURATION "); + deparseAnyName(str, castNode(List, alter_object_schema_stmt->object)); + break; + case OBJECT_SEQUENCE: + appendStringInfoString(str, "SEQUENCE "); + if (alter_object_schema_stmt->missing_ok) + appendStringInfoString(str, "IF EXISTS "); + deparseRangeVar(str, alter_object_schema_stmt->relation, DEPARSE_NODE_CONTEXT_NONE); + break; + case OBJECT_VIEW: + appendStringInfoString(str, "VIEW "); + if (alter_object_schema_stmt->missing_ok) + appendStringInfoString(str, "IF EXISTS "); + deparseRangeVar(str, alter_object_schema_stmt->relation, DEPARSE_NODE_CONTEXT_NONE); + break; + case OBJECT_MATVIEW: + appendStringInfoString(str, "MATERIALIZED VIEW "); + if (alter_object_schema_stmt->missing_ok) + appendStringInfoString(str, "IF EXISTS "); + deparseRangeVar(str, alter_object_schema_stmt->relation, DEPARSE_NODE_CONTEXT_NONE); + break; + case OBJECT_FOREIGN_TABLE: + appendStringInfoString(str, "FOREIGN TABLE "); + if (alter_object_schema_stmt->missing_ok) + appendStringInfoString(str, "IF EXISTS "); + deparseRangeVar(str, alter_object_schema_stmt->relation, DEPARSE_NODE_CONTEXT_NONE); + break; + case OBJECT_TYPE: + appendStringInfoString(str, "TYPE "); + deparseAnyName(str, castNode(List, alter_object_schema_stmt->object)); + break; + default: + Assert(false); + break; + } + + appendStringInfoString(str, " SET SCHEMA "); + appendStringInfoString(str, quote_identifier(alter_object_schema_stmt->newschema)); +} + +static void deparseAlterTableCmd(StringInfo str, AlterTableCmd *alter_table_cmd, DeparseNodeContext context) +{ + ListCell *lc = NULL; + const char *options = NULL; + bool trailing_missing_ok = false; + + switch (alter_table_cmd->subtype) + { + case AT_AddColumn: /* add column */ + if (context == DEPARSE_NODE_CONTEXT_ALTER_TYPE) + appendStringInfoString(str, "ADD ATTRIBUTE "); + else + appendStringInfoString(str, "ADD COLUMN "); + break; + case AT_AddColumnRecurse: /* internal to commands/tablecmds.c */ + Assert(false); + break; + case AT_AddColumnToView: /* implicitly via CREATE OR REPLACE VIEW */ + // Not present in raw parser output + Assert(false); + break; + case AT_ColumnDefault: /* alter column default */ + appendStringInfoString(str, "ALTER COLUMN "); + if (alter_table_cmd->def != NULL) + options = "SET DEFAULT"; + else + options = "DROP DEFAULT"; + break; + case AT_CookedColumnDefault: /* add a pre-cooked column default */ + // Not present in raw parser output + Assert(false); + break; + case AT_DropNotNull: /* alter column drop not null */ + appendStringInfoString(str, "ALTER COLUMN "); + options = "DROP NOT NULL"; + break; + case AT_SetNotNull: /* alter column set not null */ + appendStringInfoString(str, "ALTER COLUMN "); + options = "SET NOT NULL"; + break; + case AT_DropExpression: /* alter column drop expression */ + appendStringInfoString(str, "ALTER COLUMN "); + options = "DROP EXPRESSION"; + trailing_missing_ok = true; + break; + case AT_CheckNotNull: /* check column is already marked not null */ + // Not present in raw parser output + Assert(false); + break; + case AT_SetStatistics: /* alter column set statistics */ + appendStringInfoString(str, "ALTER COLUMN "); + options = "SET STATISTICS"; + break; + case AT_SetOptions: /* alter column set ( options ) */ + appendStringInfoString(str, "ALTER COLUMN "); + options = "SET"; + break; + case AT_ResetOptions: /* alter column reset ( options ) */ + appendStringInfoString(str, "ALTER COLUMN "); + options = "RESET"; + break; + case AT_SetStorage: /* alter column set storage */ + appendStringInfoString(str, "ALTER COLUMN "); + options = "SET STORAGE"; + break; + case AT_DropColumn: /* drop column */ + if (context == DEPARSE_NODE_CONTEXT_ALTER_TYPE) + appendStringInfoString(str, "DROP ATTRIBUTE "); + else + appendStringInfoString(str, "DROP "); + break; + case AT_DropColumnRecurse: /* internal to commands/tablecmds.c */ + Assert(false); + break; + case AT_AddIndex: /* add index */ + appendStringInfoString(str, "ADD INDEX "); + break; + case AT_ReAddIndex: /* internal to commands/tablecmds.c */ + Assert(false); + break; + case AT_AddConstraint: /* add constraint */ + appendStringInfoString(str, "ADD "); + break; + case AT_AddConstraintRecurse: /* internal to commands/tablecmds.c */ + Assert(false); + break; + case AT_ReAddConstraint: /* internal to commands/tablecmds.c */ + Assert(false); + break; + case AT_ReAddDomainConstraint: /* internal to commands/tablecmds.c */ + Assert(false); + break; + case AT_AlterConstraint: /* alter constraint */ + appendStringInfoString(str, "ALTER "); // CONSTRAINT keyword gets added by the Constraint itself (when deparsing def) + break; + case AT_ValidateConstraint: /* validate constraint */ + appendStringInfoString(str, "VALIDATE CONSTRAINT "); + break; + case AT_ValidateConstraintRecurse: /* internal to commands/tablecmds.c */ + Assert(false); + break; + case AT_AddIndexConstraint: /* add constraint using existing index */ + // Not present in raw parser output + Assert(false); + break; + case AT_DropConstraint: /* drop constraint */ + appendStringInfoString(str, "DROP CONSTRAINT "); + break; + case AT_DropConstraintRecurse: /* internal to commands/tablecmds.c */ + Assert(false); + break; + case AT_ReAddComment: /* internal to commands/tablecmds.c */ + Assert(false); + break; + case AT_AlterColumnType: /* alter column type */ + if (context == DEPARSE_NODE_CONTEXT_ALTER_TYPE) + appendStringInfoString(str, "ALTER ATTRIBUTE "); + else + appendStringInfoString(str, "ALTER COLUMN "); + options = "TYPE"; + break; + case AT_AlterColumnGenericOptions: /* alter column OPTIONS (...) */ + appendStringInfoString(str, "ALTER COLUMN "); + // Handled via special case in def handling + break; + case AT_ChangeOwner: /* change owner */ + appendStringInfoString(str, "OWNER TO "); + deparseRoleSpec(str, alter_table_cmd->newowner); + break; + case AT_ClusterOn: /* CLUSTER ON */ + appendStringInfoString(str, "CLUSTER ON "); + break; + case AT_DropCluster: /* SET WITHOUT CLUSTER */ + appendStringInfoString(str, "SET WITHOUT CLUSTER "); + break; + case AT_SetLogged: /* SET LOGGED */ + appendStringInfoString(str, "SET LOGGED "); + break; + case AT_SetUnLogged: /* SET UNLOGGED */ + appendStringInfoString(str, "SET UNLOGGED "); + break; + case AT_DropOids: /* SET WITHOUT OIDS */ + appendStringInfoString(str, "SET WITHOUT OIDS "); + break; + case AT_SetTableSpace: /* SET TABLESPACE */ + appendStringInfoString(str, "SET TABLESPACE "); + break; + case AT_SetRelOptions: /* SET (...) -- AM specific parameters */ + appendStringInfoString(str, "SET "); + break; + case AT_ResetRelOptions: /* RESET (...) -- AM specific parameters */ + appendStringInfoString(str, "RESET "); + break; + case AT_ReplaceRelOptions: /* replace reloption list in its entirety */ + // Not present in raw parser output + Assert(false); + break; + case AT_EnableTrig: /* ENABLE TRIGGER name */ + appendStringInfoString(str, "ENABLE TRIGGER "); + break; + case AT_EnableAlwaysTrig: /* ENABLE ALWAYS TRIGGER name */ + appendStringInfoString(str, "ENABLE ALWAYS TRIGGER "); + break; + case AT_EnableReplicaTrig: /* ENABLE REPLICA TRIGGER name */ + appendStringInfoString(str, "ENABLE REPLICA TRIGGER "); + break; + case AT_DisableTrig: /* DISABLE TRIGGER name */ + appendStringInfoString(str, "DISABLE TRIGGER "); + break; + case AT_EnableTrigAll: /* ENABLE TRIGGER ALL */ + appendStringInfoString(str, "ENABLE TRIGGER "); + break; + case AT_DisableTrigAll: /* DISABLE TRIGGER ALL */ + appendStringInfoString(str, "DISABLE TRIGGER ALL "); + break; + case AT_EnableTrigUser: /* ENABLE TRIGGER USER */ + appendStringInfoString(str, "ENABLE TRIGGER USER "); + break; + case AT_DisableTrigUser: /* DISABLE TRIGGER USER */ + appendStringInfoString(str, "DISABLE TRIGGER USER "); + break; + case AT_EnableRule: /* ENABLE RULE name */ + appendStringInfoString(str, "ENABLE RULE "); + break; + case AT_EnableAlwaysRule: /* ENABLE ALWAYS RULE name */ + appendStringInfoString(str, "ENABLE ALWAYS RULE "); + break; + case AT_EnableReplicaRule: /* ENABLE REPLICA RULE name */ + appendStringInfoString(str, "ENABLE REPLICA RULE "); + break; + case AT_DisableRule: /* DISABLE RULE name */ + appendStringInfoString(str, "DISABLE RULE "); + break; + case AT_AddInherit: /* INHERIT parent */ + appendStringInfoString(str, "INHERIT "); + break; + case AT_DropInherit: /* NO INHERIT parent */ + appendStringInfoString(str, "NO INHERIT "); + break; + case AT_AddOf: /* OF */ + appendStringInfoString(str, "OF "); + break; + case AT_DropOf: /* NOT OF */ + appendStringInfoString(str, "NOT OF "); + break; + case AT_ReplicaIdentity: /* REPLICA IDENTITY */ + appendStringInfoString(str, "REPLICA IDENTITY "); + break; + case AT_EnableRowSecurity: /* ENABLE ROW SECURITY */ + appendStringInfoString(str, "ENABLE ROW LEVEL SECURITY "); + break; + case AT_DisableRowSecurity: /* DISABLE ROW SECURITY */ + appendStringInfoString(str, "DISABLE ROW LEVEL SECURITY "); + break; + case AT_ForceRowSecurity: /* FORCE ROW SECURITY */ + appendStringInfoString(str, "FORCE ROW LEVEL SECURITY "); + break; + case AT_NoForceRowSecurity: /* NO FORCE ROW SECURITY */ + appendStringInfoString(str, "NO FORCE ROW LEVEL SECURITY "); + break; + case AT_GenericOptions: /* OPTIONS (...) */ + // Handled in def field handling + break; + case AT_AttachPartition: /* ATTACH PARTITION */ + appendStringInfoString(str, "ATTACH PARTITION "); + break; + case AT_DetachPartition: /* DETACH PARTITION */ + appendStringInfoString(str, "DETACH PARTITION "); + break; + case AT_AddIdentity: /* ADD IDENTITY */ + appendStringInfoString(str, "ALTER "); + options = "ADD"; + // Other details are output via the constraint node (in def field) + break; + case AT_SetIdentity: /* SET identity column options */ + appendStringInfoString(str, "ALTER "); + break; + case AT_DropIdentity: /* DROP IDENTITY */ + appendStringInfoString(str, "ALTER COLUMN "); + options = "DROP IDENTITY"; + trailing_missing_ok = true; + break; + } + + if (alter_table_cmd->missing_ok && !trailing_missing_ok) + { + if (alter_table_cmd->subtype == AT_AddColumn) + appendStringInfoString(str, "IF NOT EXISTS "); + else + appendStringInfoString(str, "IF EXISTS "); + } + + if (alter_table_cmd->name != NULL) + { + appendStringInfoString(str, quote_identifier(alter_table_cmd->name)); + appendStringInfoChar(str, ' '); + } + + if (alter_table_cmd->num > 0) + appendStringInfo(str, "%d ", alter_table_cmd->num); + + if (options != NULL) + { + appendStringInfoString(str, options); + appendStringInfoChar(str, ' '); + } + + if (alter_table_cmd->missing_ok && trailing_missing_ok) + appendStringInfoString(str, "IF EXISTS "); + + switch (alter_table_cmd->subtype) + { + case AT_AttachPartition: + case AT_DetachPartition: + deparsePartitionCmd(str, castNode(PartitionCmd, alter_table_cmd->def)); + appendStringInfoChar(str, ' '); + break; + case AT_AddColumn: + case AT_AlterColumnType: + deparseColumnDef(str, castNode(ColumnDef, alter_table_cmd->def)); + appendStringInfoChar(str, ' '); + break; + case AT_ColumnDefault: + if (alter_table_cmd->def != NULL) + { + deparseExpr(str, alter_table_cmd->def); + appendStringInfoChar(str, ' '); + } + break; + case AT_SetStatistics: + deparseSignedIconst(str, alter_table_cmd->def); + appendStringInfoChar(str, ' '); + break; + case AT_SetOptions: + case AT_ResetOptions: + case AT_SetRelOptions: + case AT_ResetRelOptions: + deparseRelOptions(str, castNode(List, alter_table_cmd->def)); + appendStringInfoChar(str, ' '); + break; + case AT_SetStorage: + deparseColId(str, strVal(alter_table_cmd->def)); + appendStringInfoChar(str, ' '); + break; + case AT_AddIdentity: + case AT_AddConstraint: + case AT_AlterConstraint: + deparseConstraint(str, castNode(Constraint, alter_table_cmd->def)); + appendStringInfoChar(str, ' '); + break; + case AT_SetIdentity: + deparseAlterIdentityColumnOptionList(str, castNode(List, alter_table_cmd->def)); + appendStringInfoChar(str, ' '); + break; + case AT_AlterColumnGenericOptions: + case AT_GenericOptions: + deparseAlterGenericOptions(str, castNode(List, alter_table_cmd->def)); + appendStringInfoChar(str, ' '); + break; + case AT_AddInherit: + case AT_DropInherit: + deparseRangeVar(str, castNode(RangeVar, alter_table_cmd->def), DEPARSE_NODE_CONTEXT_NONE); + appendStringInfoChar(str, ' '); + break; + case AT_AddOf: + deparseTypeName(str, castNode(TypeName, alter_table_cmd->def)); + appendStringInfoChar(str, ' '); + break; + case AT_ReplicaIdentity: + deparseReplicaIdentityStmt(str, castNode(ReplicaIdentityStmt, alter_table_cmd->def)); + appendStringInfoChar(str, ' '); + break; + default: + Assert(alter_table_cmd->def == NULL); + break; + } + + deparseOptDropBehavior(str, alter_table_cmd->behavior); + + removeTrailingSpace(str); +} + +static void deparseAlterTableStmt(StringInfo str, AlterTableStmt *alter_table_stmt) +{ + ListCell *lc; + DeparseNodeContext context = DEPARSE_NODE_CONTEXT_NONE; + + appendStringInfoString(str, "ALTER "); + + switch (alter_table_stmt->relkind) + { + case OBJECT_TABLE: + appendStringInfoString(str, "TABLE "); + break; + case OBJECT_FOREIGN_TABLE: + appendStringInfoString(str, "FOREIGN TABLE "); + break; + case OBJECT_INDEX: + appendStringInfoString(str, "INDEX "); + break; + case OBJECT_SEQUENCE: + appendStringInfoString(str, "SEQUENCE "); + break; + case OBJECT_VIEW: + appendStringInfoString(str, "VIEW "); + break; + case OBJECT_MATVIEW: + appendStringInfoString(str, "MATERIALIZED VIEW "); + break; + case OBJECT_TYPE: + appendStringInfoString(str, "TYPE "); + context = DEPARSE_NODE_CONTEXT_ALTER_TYPE; + break; + default: + Assert(false); + break; + } + + if (alter_table_stmt->missing_ok) + appendStringInfoString(str, "IF EXISTS "); + + deparseRangeVar(str, alter_table_stmt->relation, context); + appendStringInfoChar(str, ' '); + + foreach(lc, alter_table_stmt->cmds) + { + deparseAlterTableCmd(str, castNode(AlterTableCmd, lfirst(lc)), context); + if (lnext(alter_table_stmt->cmds, lc)) + appendStringInfoString(str, ", "); + } +} + +static void deparseAlterTableSpaceOptionsStmt(StringInfo str, AlterTableSpaceOptionsStmt *alter_table_space_options_stmt) +{ + appendStringInfoString(str, "ALTER TABLESPACE "); + deparseColId(str, alter_table_space_options_stmt->tablespacename); + appendStringInfoChar(str, ' '); + + if (alter_table_space_options_stmt->isReset) + appendStringInfoString(str, "RESET "); + else + appendStringInfoString(str, "SET "); + + deparseRelOptions(str, alter_table_space_options_stmt->options); +} + +static void deparseAlterDomainStmt(StringInfo str, AlterDomainStmt *alter_domain_stmt) +{ + appendStringInfoString(str, "ALTER DOMAIN "); + deparseAnyName(str, alter_domain_stmt->typeName); + appendStringInfoChar(str, ' '); + + switch (alter_domain_stmt->subtype) + { + case 'T': + if (alter_domain_stmt->def != NULL) + { + appendStringInfoString(str, "SET DEFAULT "); + deparseExpr(str, alter_domain_stmt->def); + } + else + { + appendStringInfoString(str, "DROP DEFAULT"); + } + break; + case 'N': + appendStringInfoString(str, "DROP NOT NULL"); + break; + case 'O': + appendStringInfoString(str, "SET NOT NULL"); + break; + case 'C': + appendStringInfoString(str, "ADD "); + deparseConstraint(str, castNode(Constraint, alter_domain_stmt->def)); + break; + case 'X': + appendStringInfoString(str, "DROP CONSTRAINT "); + if (alter_domain_stmt->missing_ok) + appendStringInfoString(str, "IF EXISTS "); + appendStringInfoString(str, quote_identifier(alter_domain_stmt->name)); + if (alter_domain_stmt->behavior == DROP_CASCADE) + appendStringInfoString(str, " CASCADE"); + break; + case 'V': + appendStringInfoString(str, "VALIDATE CONSTRAINT "); + appendStringInfoString(str, quote_identifier(alter_domain_stmt->name)); + break; + default: + // No other subtypes supported by the parser + Assert(false); + } +} + +static void deparseRenameStmt(StringInfo str, RenameStmt *rename_stmt) +{ + List *l = NULL; + + appendStringInfoString(str, "ALTER "); + + switch (rename_stmt->renameType) + { + case OBJECT_AGGREGATE: + appendStringInfoString(str, "AGGREGATE "); + break; + case OBJECT_COLLATION: + appendStringInfoString(str, "COLLATION "); + break; + case OBJECT_CONVERSION: + appendStringInfoString(str, "CONVERSION "); + break; + case OBJECT_DATABASE: + appendStringInfoString(str, "DATABASE "); + break; + case OBJECT_DOMAIN: + case OBJECT_DOMCONSTRAINT: + appendStringInfoString(str, "DOMAIN "); + break; + case OBJECT_FDW: + appendStringInfoString(str, "FOREIGN DATA WRAPPER "); + break; + case OBJECT_FUNCTION: + appendStringInfoString(str, "FUNCTION "); + break; + case OBJECT_ROLE: + appendStringInfoString(str, "ROLE "); + break; + case OBJECT_LANGUAGE: + appendStringInfoString(str, "LANGUAGE "); + break; + case OBJECT_OPCLASS: + appendStringInfoString(str, "OPERATOR CLASS "); + break; + case OBJECT_OPFAMILY: + appendStringInfoString(str, "OPERATOR FAMILY "); + break; + case OBJECT_POLICY: + appendStringInfoString(str, "POLICY "); + break; + case OBJECT_PROCEDURE: + appendStringInfoString(str, "PROCEDURE "); + break; + case OBJECT_PUBLICATION: + appendStringInfoString(str, "PUBLICATION "); + break; + case OBJECT_ROUTINE: + appendStringInfoString(str, "ROUTINE "); + break; + case OBJECT_SCHEMA: + appendStringInfoString(str, "SCHEMA "); + break; + case OBJECT_FOREIGN_SERVER: + appendStringInfoString(str, "SERVER "); + break; + case OBJECT_SUBSCRIPTION: + appendStringInfoString(str, "SUBSCRIPTION "); + break; + case OBJECT_TABLE: + case OBJECT_TABCONSTRAINT: + appendStringInfoString(str, "TABLE "); + break; + case OBJECT_COLUMN: + switch (rename_stmt->relationType) + { + case OBJECT_TABLE: + appendStringInfoString(str, "TABLE "); + break; + case OBJECT_FOREIGN_TABLE: + appendStringInfoString(str, "FOREIGN TABLE "); + break; + case OBJECT_VIEW: + appendStringInfoString(str, "VIEW "); + break; + case OBJECT_MATVIEW: + appendStringInfoString(str, "MATERIALIZED VIEW "); + break; + default: + Assert(false); + } + break; + case OBJECT_SEQUENCE: + appendStringInfoString(str, "SEQUENCE "); + break; + case OBJECT_VIEW: + appendStringInfoString(str, "VIEW "); + break; + case OBJECT_MATVIEW: + appendStringInfoString(str, "MATERIALIZED VIEW "); + break; + case OBJECT_INDEX: + appendStringInfoString(str, "INDEX "); + break; + case OBJECT_FOREIGN_TABLE: + appendStringInfoString(str, "FOREIGN TABLE "); + break; + case OBJECT_RULE: + appendStringInfoString(str, "RULE "); + break; + case OBJECT_TRIGGER: + appendStringInfoString(str, "TRIGGER "); + break; + case OBJECT_EVENT_TRIGGER: + appendStringInfoString(str, "EVENT TRIGGER "); + break; + case OBJECT_TABLESPACE: + appendStringInfoString(str, "TABLESPACE "); + break; + case OBJECT_STATISTIC_EXT: + appendStringInfoString(str, "STATISTICS "); + break; + case OBJECT_TSPARSER: + appendStringInfoString(str, "TEXT SEARCH PARSER "); + break; + case OBJECT_TSDICTIONARY: + appendStringInfoString(str, "TEXT SEARCH DICTIONARY "); + break; + case OBJECT_TSTEMPLATE: + appendStringInfoString(str, "TEXT SEARCH TEMPLATE "); + break; + case OBJECT_TSCONFIGURATION: + appendStringInfoString(str, "TEXT SEARCH CONFIGURATION "); + break; + case OBJECT_TYPE: + case OBJECT_ATTRIBUTE: + appendStringInfoString(str, "TYPE "); + break; + default: + Assert(false); + break; + } + + if (rename_stmt->missing_ok) + appendStringInfoString(str, "IF EXISTS "); + + switch (rename_stmt->renameType) + { + case OBJECT_AGGREGATE: + deparseAggregateWithArgtypes(str, castNode(ObjectWithArgs, rename_stmt->object)); + appendStringInfoString(str, " RENAME "); + break; + case OBJECT_DOMCONSTRAINT: + deparseAnyName(str, castNode(List, rename_stmt->object)); + appendStringInfoString(str, " RENAME CONSTRAINT "); + appendStringInfoString(str, quote_identifier(rename_stmt->subname)); + appendStringInfoChar(str, ' '); + break; + case OBJECT_OPCLASS: + case OBJECT_OPFAMILY: + l = castNode(List, rename_stmt->object); + deparseAnyNameSkipFirst(str, l); + appendStringInfoString(str, " USING "); + appendStringInfoString(str, quote_identifier(strVal(linitial(l)))); + appendStringInfoString(str, " RENAME "); + break; + case OBJECT_POLICY: + appendStringInfoString(str, quote_identifier(rename_stmt->subname)); + appendStringInfoString(str, " ON "); + deparseRangeVar(str, rename_stmt->relation, DEPARSE_NODE_CONTEXT_NONE); + appendStringInfoString(str, " RENAME "); + break; + case OBJECT_FUNCTION: + case OBJECT_PROCEDURE: + case OBJECT_ROUTINE: + deparseFunctionWithArgtypes(str, castNode(ObjectWithArgs, rename_stmt->object)); + appendStringInfoString(str, " RENAME "); + break; + case OBJECT_SUBSCRIPTION: + deparseColId(str, strVal(rename_stmt->object)); + appendStringInfoString(str, " RENAME "); + break; + case OBJECT_TABLE: + case OBJECT_SEQUENCE: + case OBJECT_VIEW: + case OBJECT_MATVIEW: + case OBJECT_INDEX: + case OBJECT_FOREIGN_TABLE: + deparseRangeVar(str, rename_stmt->relation, DEPARSE_NODE_CONTEXT_NONE); + appendStringInfoString(str, " RENAME "); + break; + case OBJECT_COLUMN: + deparseRangeVar(str, rename_stmt->relation, DEPARSE_NODE_CONTEXT_NONE); + appendStringInfoString(str, " RENAME COLUMN "); + appendStringInfoString(str, quote_identifier(rename_stmt->subname)); + appendStringInfoChar(str, ' '); + break; + case OBJECT_TABCONSTRAINT: + deparseRangeVar(str, rename_stmt->relation, DEPARSE_NODE_CONTEXT_NONE); + appendStringInfoString(str, " RENAME CONSTRAINT "); + appendStringInfoString(str, quote_identifier(rename_stmt->subname)); + appendStringInfoChar(str, ' '); + break; + case OBJECT_RULE: + case OBJECT_TRIGGER: + appendStringInfoString(str, quote_identifier(rename_stmt->subname)); + appendStringInfoString(str, " ON "); + deparseRangeVar(str, rename_stmt->relation, DEPARSE_NODE_CONTEXT_NONE); + appendStringInfoString(str, " RENAME "); + break; + case OBJECT_FDW: + case OBJECT_LANGUAGE: + case OBJECT_PUBLICATION: + case OBJECT_FOREIGN_SERVER: + case OBJECT_EVENT_TRIGGER: + appendStringInfoString(str, quote_identifier(strVal(rename_stmt->object))); + appendStringInfoString(str, " RENAME "); + break; + case OBJECT_DATABASE: + case OBJECT_ROLE: + case OBJECT_SCHEMA: + case OBJECT_TABLESPACE: + appendStringInfoString(str, quote_identifier(rename_stmt->subname)); + appendStringInfoString(str, " RENAME "); + break; + case OBJECT_COLLATION: + case OBJECT_CONVERSION: + case OBJECT_DOMAIN: + case OBJECT_STATISTIC_EXT: + case OBJECT_TSPARSER: + case OBJECT_TSDICTIONARY: + case OBJECT_TSTEMPLATE: + case OBJECT_TSCONFIGURATION: + case OBJECT_TYPE: + deparseAnyName(str, castNode(List, rename_stmt->object)); + appendStringInfoString(str, " RENAME "); + break; + case OBJECT_ATTRIBUTE: + deparseRangeVar(str, rename_stmt->relation, DEPARSE_NODE_CONTEXT_ALTER_TYPE); + appendStringInfoString(str, " RENAME ATTRIBUTE "); + appendStringInfoString(str, quote_identifier(rename_stmt->subname)); + appendStringInfoChar(str, ' '); + break; + default: + Assert(false); + break; + } + + appendStringInfoString(str, "TO "); + appendStringInfoString(str, quote_identifier(rename_stmt->newname)); + appendStringInfoChar(str, ' '); + + deparseOptDropBehavior(str, rename_stmt->behavior); + + removeTrailingSpace(str); +} + +static void deparseTransactionStmt(StringInfo str, TransactionStmt *transaction_stmt) +{ + ListCell *lc; + switch (transaction_stmt->kind) + { + case TRANS_STMT_BEGIN: + appendStringInfoString(str, "BEGIN "); + deparseTransactionModeList(str, transaction_stmt->options); + break; + case TRANS_STMT_START: + appendStringInfoString(str, "START TRANSACTION "); + deparseTransactionModeList(str, transaction_stmt->options); + break; + case TRANS_STMT_COMMIT: + appendStringInfoString(str, "COMMIT "); + if (transaction_stmt->chain) + appendStringInfoString(str, "AND CHAIN "); + break; + case TRANS_STMT_ROLLBACK: + appendStringInfoString(str, "ROLLBACK "); + if (transaction_stmt->chain) + appendStringInfoString(str, "AND CHAIN "); + break; + case TRANS_STMT_SAVEPOINT: + appendStringInfoString(str, "SAVEPOINT "); + appendStringInfoString(str, quote_identifier(transaction_stmt->savepoint_name)); + break; + case TRANS_STMT_RELEASE: + appendStringInfoString(str, "RELEASE "); + appendStringInfoString(str, quote_identifier(transaction_stmt->savepoint_name)); + break; + case TRANS_STMT_ROLLBACK_TO: + appendStringInfoString(str, "ROLLBACK "); + appendStringInfoString(str, "TO SAVEPOINT "); + appendStringInfoString(str, quote_identifier(transaction_stmt->savepoint_name)); + break; + case TRANS_STMT_PREPARE: + appendStringInfoString(str, "PREPARE TRANSACTION "); + deparseStringLiteral(str, transaction_stmt->gid); + break; + case TRANS_STMT_COMMIT_PREPARED: + appendStringInfoString(str, "COMMIT PREPARED "); + deparseStringLiteral(str, transaction_stmt->gid); + break; + case TRANS_STMT_ROLLBACK_PREPARED: + appendStringInfoString(str, "ROLLBACK PREPARED "); + deparseStringLiteral(str, transaction_stmt->gid); + break; + } + + removeTrailingSpace(str); +} + +static void deparseVariableSetStmt(StringInfo str, VariableSetStmt* variable_set_stmt) +{ + ListCell *lc; + + switch (variable_set_stmt->kind) + { + case VAR_SET_VALUE: /* SET var = value */ + appendStringInfoString(str, "SET "); + if (variable_set_stmt->is_local) + appendStringInfoString(str, "LOCAL "); + deparseVarName(str, variable_set_stmt->name); + appendStringInfoString(str, " TO "); + deparseVarList(str, variable_set_stmt->args); + break; + case VAR_SET_DEFAULT: /* SET var TO DEFAULT */ + appendStringInfoString(str, "SET "); + if (variable_set_stmt->is_local) + appendStringInfoString(str, "LOCAL "); + deparseVarName(str, variable_set_stmt->name); + appendStringInfoString(str, " TO DEFAULT"); + break; + case VAR_SET_CURRENT: /* SET var FROM CURRENT */ + appendStringInfoString(str, "SET "); + if (variable_set_stmt->is_local) + appendStringInfoString(str, "LOCAL "); + deparseVarName(str, variable_set_stmt->name); + appendStringInfoString(str, " FROM CURRENT"); + break; + case VAR_SET_MULTI: /* special case for SET TRANSACTION ... */ + Assert(variable_set_stmt->name != NULL); + appendStringInfoString(str, "SET "); + if (variable_set_stmt->is_local) + appendStringInfoString(str, "LOCAL "); + if (strcmp(variable_set_stmt->name, "TRANSACTION") == 0) + { + appendStringInfoString(str, "TRANSACTION "); + deparseTransactionModeList(str, variable_set_stmt->args); + } + else if (strcmp(variable_set_stmt->name, "SESSION CHARACTERISTICS") == 0) + { + appendStringInfoString(str, "SESSION CHARACTERISTICS AS TRANSACTION "); + deparseTransactionModeList(str, variable_set_stmt->args); + } + else if (strcmp(variable_set_stmt->name, "TRANSACTION SNAPSHOT") == 0) + { + appendStringInfoString(str, "TRANSACTION SNAPSHOT "); + deparseStringLiteral(str, strVal(&castNode(A_Const, linitial(variable_set_stmt->args))->val)); + } + else + { + Assert(false); + } + break; + case VAR_RESET: /* RESET var */ + appendStringInfoString(str, "RESET "); + deparseVarName(str, variable_set_stmt->name); + break; + case VAR_RESET_ALL: /* RESET ALL */ + appendStringInfoString(str, "RESET ALL"); + break; + } +} + +static void deparseDropdbStmt(StringInfo str, DropdbStmt *dropdb_stmt) +{ + ListCell *lc = NULL; + + appendStringInfoString(str, "DROP DATABASE "); + if (dropdb_stmt->missing_ok) + appendStringInfoString(str, "IF EXISTS "); + + appendStringInfoString(str, quote_identifier(dropdb_stmt->dbname)); + appendStringInfoChar(str, ' '); + + if (list_length(dropdb_stmt->options) > 0) + { + appendStringInfoChar(str, '('); + foreach(lc, dropdb_stmt->options) + { + DefElem *def_elem = castNode(DefElem, lfirst(lc)); + if (strcmp(def_elem->defname, "force") == 0) + appendStringInfoString(str, "FORCE"); + else + Assert(false); // Currently there are other supported values + + if (lnext(dropdb_stmt->options, lc)) + appendStringInfoString(str, ", "); + } + appendStringInfoChar(str, ')'); + } + + removeTrailingSpace(str); +} + +static void deparseVacuumStmt(StringInfo str, VacuumStmt *vacuum_stmt) +{ + ListCell *lc = NULL; + ListCell *lc2 = NULL; + + if (vacuum_stmt->is_vacuumcmd) + appendStringInfoString(str, "VACUUM "); + else + appendStringInfoString(str, "ANALYZE "); + + if (list_length(vacuum_stmt->options) > 0) + { + appendStringInfoChar(str, '('); + foreach(lc, vacuum_stmt->options) + { + DefElem *def_elem = castNode(DefElem, lfirst(lc)); + deparseGenericDefElemName(str, def_elem->defname); + if (def_elem->arg != NULL) + { + appendStringInfoChar(str, ' '); + if (IsA(def_elem->arg, Integer) || IsA(def_elem->arg, Float)) + deparseNumericOnly(str, (Value *) def_elem->arg); + else if (IsA(def_elem->arg, String)) + deparseOptBooleanOrString(str, strVal(def_elem->arg)); + else + Assert(false); + } + if (lnext(vacuum_stmt->options, lc)) + appendStringInfoString(str, ", "); + } + appendStringInfoString(str, ") "); + } + + foreach(lc, vacuum_stmt->rels) + { + Assert(IsA(lfirst(lc), VacuumRelation)); + VacuumRelation *rel = castNode(VacuumRelation, lfirst(lc)); + + deparseRangeVar(str, rel->relation, DEPARSE_NODE_CONTEXT_NONE); + if (list_length(rel->va_cols) > 0) + { + appendStringInfoChar(str, '('); + foreach(lc2, rel->va_cols) + { + appendStringInfoString(str, quote_identifier(strVal(lfirst(lc2)))); + if (lnext(rel->va_cols, lc2)) + appendStringInfoString(str, ", "); + } + appendStringInfoChar(str, ')'); + } + + if (lnext(vacuum_stmt->rels, lc)) + appendStringInfoString(str, ", "); + } + + removeTrailingSpace(str); +} + +static void deparseLoadStmt(StringInfo str, LoadStmt *load_stmt) +{ + appendStringInfoString(str, "LOAD "); + deparseStringLiteral(str, load_stmt->filename); +} + +static void deparseLockStmt(StringInfo str, LockStmt *lock_stmt) +{ + ListCell *lc; + + appendStringInfoString(str, "LOCK TABLE "); + + deparseRelationExprList(str, lock_stmt->relations); + appendStringInfoChar(str, ' '); + + if (lock_stmt->mode != AccessExclusiveLock) + { + appendStringInfoString(str, "IN "); + switch (lock_stmt->mode) + { + case AccessShareLock: + appendStringInfoString(str, "ACCESS SHARE "); + break; + case RowShareLock: + appendStringInfoString(str, "ROW SHARE "); + break; + case RowExclusiveLock: + appendStringInfoString(str, "ROW EXCLUSIVE "); + break; + case ShareUpdateExclusiveLock: + appendStringInfoString(str, "SHARE UPDATE EXCLUSIVE "); + break; + case ShareLock: + appendStringInfoString(str, "SHARE "); + break; + case ShareRowExclusiveLock: + appendStringInfoString(str, "SHARE ROW EXCLUSIVE "); + break; + case ExclusiveLock: + appendStringInfoString(str, "EXCLUSIVE "); + break; + case AccessExclusiveLock: + appendStringInfoString(str, "ACCESS EXCLUSIVE "); + break; + default: + Assert(false); + break; + } + appendStringInfoString(str, "MODE "); + } + + if (lock_stmt->nowait) + appendStringInfoString(str, "NOWAIT "); + + removeTrailingSpace(str); +} + +static void deparseConstraintsSetStmt(StringInfo str, ConstraintsSetStmt *constraints_set_stmt) +{ + appendStringInfoString(str, "SET CONSTRAINTS "); + + if (list_length(constraints_set_stmt->constraints) > 0) + { + deparseQualifiedNameList(str, constraints_set_stmt->constraints); + appendStringInfoChar(str, ' '); + } + else + { + appendStringInfoString(str, "ALL "); + } + + if (constraints_set_stmt->deferred) + appendStringInfoString(str, "DEFERRED"); + else + appendStringInfoString(str, "IMMEDIATE"); +} + +static void deparseExplainStmt(StringInfo str, ExplainStmt *explain_stmt) +{ + ListCell *lc = NULL; + char *defname = NULL; + + appendStringInfoString(str, "EXPLAIN "); + + if (list_length(explain_stmt->options) > 0) + { + appendStringInfoChar(str, '('); + + foreach(lc, explain_stmt->options) + { + DefElem *def_elem = castNode(DefElem, lfirst(lc)); + deparseGenericDefElemName(str, def_elem->defname); + + if (def_elem->arg != NULL && IsA(def_elem->arg, String)) + { + appendStringInfoChar(str, ' '); + deparseOptBooleanOrString(str, strVal(def_elem->arg)); + } + else if (def_elem->arg != NULL && (IsA(def_elem->arg, Integer) || IsA(def_elem->arg, Float))) + { + appendStringInfoChar(str, ' '); + deparseNumericOnly(str, (Value *) def_elem->arg); + } + + if (lnext(explain_stmt->options, lc)) + appendStringInfoString(str, ", "); + } + appendStringInfoString(str, ") "); + } + + deparseExplainableStmt(str, explain_stmt->query); +} + +static void deparseCopyStmt(StringInfo str, CopyStmt *copy_stmt) +{ + ListCell *lc = NULL; + ListCell *lc2 = NULL; + + appendStringInfoString(str, "COPY "); + + if (copy_stmt->relation != NULL) + { + deparseRangeVar(str, copy_stmt->relation, DEPARSE_NODE_CONTEXT_NONE); + if (list_length(copy_stmt->attlist) > 0) + { + appendStringInfoChar(str, '('); + deparseColumnList(str, copy_stmt->attlist); + appendStringInfoChar(str, ')'); + } + appendStringInfoChar(str, ' '); + } + + if (copy_stmt->query != NULL) + { + appendStringInfoChar(str, '('); + deparsePreparableStmt(str, copy_stmt->query); + appendStringInfoString(str, ") "); + } + + if (copy_stmt->is_from) + appendStringInfoString(str, "FROM "); + else + appendStringInfoString(str, "TO "); + + if (copy_stmt->is_program) + appendStringInfoString(str, "PROGRAM "); + + if (copy_stmt->filename != NULL) + { + deparseStringLiteral(str, copy_stmt->filename); + appendStringInfoChar(str, ' '); + } + else + { + if (copy_stmt->is_from) + appendStringInfoString(str, "STDIN "); + else + appendStringInfoString(str, "STDOUT "); + } + + if (list_length(copy_stmt->options) > 0) + { + appendStringInfoString(str, "WITH ("); + foreach(lc, copy_stmt->options) + { + DefElem *def_elem = castNode(DefElem, lfirst(lc)); + + if (strcmp(def_elem->defname, "format") == 0) + { + appendStringInfoString(str, "FORMAT "); + + char *format = strVal(def_elem->arg); + if (strcmp(format, "binary") == 0) + appendStringInfoString(str, "BINARY"); + else if (strcmp(format, "csv") == 0) + appendStringInfoString(str, "CSV"); + else + Assert(false); + } + else if (strcmp(def_elem->defname, "freeze") == 0 && intVal(def_elem->arg) == 1) + { + appendStringInfoString(str, "FREEZE 1"); + } + else if (strcmp(def_elem->defname, "delimiter") == 0) + { + appendStringInfoString(str, "DELIMITER "); + deparseStringLiteral(str, strVal(def_elem->arg)); + } + else if (strcmp(def_elem->defname, "null") == 0) + { + appendStringInfoString(str, "NULL "); + deparseStringLiteral(str, strVal(def_elem->arg)); + } + else if (strcmp(def_elem->defname, "header") == 0 && intVal(def_elem->arg) == 1) + { + appendStringInfoString(str, "HEADER 1"); + } + else if (strcmp(def_elem->defname, "quote") == 0) + { + appendStringInfoString(str, "QUOTE "); + deparseStringLiteral(str, strVal(def_elem->arg)); + } + else if (strcmp(def_elem->defname, "escape") == 0) + { + appendStringInfoString(str, "ESCAPE "); + deparseStringLiteral(str, strVal(def_elem->arg)); + } + else if (strcmp(def_elem->defname, "force_quote") == 0) + { + appendStringInfoString(str, "FORCE_QUOTE "); + if (IsA(def_elem->arg, A_Star)) + { + appendStringInfoChar(str, '*'); + } + else if (IsA(def_elem->arg, List)) + { + appendStringInfoChar(str, '('); + deparseColumnList(str, castNode(List, def_elem->arg)); + appendStringInfoChar(str, ')'); + } + else + { + Assert(false); + } + } + else if (strcmp(def_elem->defname, "force_not_null") == 0) + { + appendStringInfoString(str, "FORCE_NOT_NULL ("); + deparseColumnList(str, castNode(List, def_elem->arg)); + appendStringInfoChar(str, ')'); + } + else if (strcmp(def_elem->defname, "force_null") == 0) + { + appendStringInfoString(str, "FORCE_NULL ("); + deparseColumnList(str, castNode(List, def_elem->arg)); + appendStringInfoChar(str, ')'); + } + else if (strcmp(def_elem->defname, "encoding") == 0) + { + appendStringInfoString(str, "ENCODING "); + deparseStringLiteral(str, strVal(def_elem->arg)); + } + else + { + appendStringInfoString(str, quote_identifier(def_elem->defname)); + if (def_elem->arg != NULL) + appendStringInfoChar(str, ' '); + + if (def_elem->arg == NULL) + { + // Nothing + } + else if (IsA(def_elem->arg, String)) + { + deparseOptBooleanOrString(str, strVal(def_elem->arg)); + } + else if (IsA(def_elem->arg, Integer) || IsA(def_elem->arg, Float)) + { + deparseNumericOnly(str, (Value *) def_elem->arg); + } + else if (IsA(def_elem->arg, A_Star)) + { + deparseAStar(str, castNode(A_Star, def_elem->arg)); + } + else if (IsA(def_elem->arg, List)) + { + List *l = castNode(List, def_elem->arg); + appendStringInfoChar(str, '('); + foreach(lc2, l) + { + deparseOptBooleanOrString(str, strVal(lfirst(lc2))); + if (lnext(l, lc2)) + appendStringInfoString(str, ", "); + } + appendStringInfoChar(str, ')'); + } + } + + if (lnext(copy_stmt->options, lc)) + appendStringInfoString(str, ", "); + } + appendStringInfoString(str, ") "); + } + + deparseWhereClause(str, copy_stmt->whereClause); + + removeTrailingSpace(str); +} + +static void deparseDoStmt(StringInfo str, DoStmt *do_stmt) +{ + ListCell *lc; + + appendStringInfoString(str, "DO "); + + foreach (lc, do_stmt->args) + { + DefElem *defel = castNode(DefElem, lfirst(lc)); + if (strcmp(defel->defname, "language") == 0) + { + appendStringInfoString(str, "LANGUAGE "); + appendStringInfoString(str, quote_identifier(strVal(defel->arg))); + appendStringInfoChar(str, ' '); + } + else if (strcmp(defel->defname, "as") == 0) + { + char *strval = strVal(defel->arg); + const char *delim = "$$"; + if (strstr(strval, "$$") != NULL) + delim = "$outer$"; + appendStringInfoString(str, delim); + appendStringInfoString(str, strval); + appendStringInfoString(str, delim); + appendStringInfoChar(str, ' '); + } + } + + removeTrailingSpace(str); +} + +static void deparseDiscardStmt(StringInfo str, DiscardStmt *discard_stmt) +{ + appendStringInfoString(str, "DISCARD "); + switch (discard_stmt->target) + { + case DISCARD_ALL: + appendStringInfoString(str, "ALL"); + break; + case DISCARD_PLANS: + appendStringInfoString(str, "PLANS"); + break; + case DISCARD_SEQUENCES: + appendStringInfoString(str, "SEQUENCES"); + break; + case DISCARD_TEMP: + appendStringInfoString(str, "TEMP"); + break; + } +} + +static void deparseDefineStmt(StringInfo str, DefineStmt *define_stmt) +{ + ListCell *lc; + + appendStringInfoString(str, "CREATE "); + + if (define_stmt->replace) + appendStringInfoString(str, "OR REPLACE "); + + switch (define_stmt->kind) + { + case OBJECT_AGGREGATE: + appendStringInfoString(str, "AGGREGATE "); + break; + case OBJECT_OPERATOR: + appendStringInfoString(str, "OPERATOR "); + break; + case OBJECT_TYPE: + appendStringInfoString(str, "TYPE "); + break; + case OBJECT_TSPARSER: + appendStringInfoString(str, "TEXT SEARCH PARSER "); + break; + case OBJECT_TSDICTIONARY: + appendStringInfoString(str, "TEXT SEARCH DICTIONARY "); + break; + case OBJECT_TSTEMPLATE: + appendStringInfoString(str, "TEXT SEARCH TEMPLATE "); + break; + case OBJECT_TSCONFIGURATION: + appendStringInfoString(str, "TEXT SEARCH CONFIGURATION "); + break; + case OBJECT_COLLATION: + appendStringInfoString(str, "COLLATION "); + break; + default: + // This shouldn't happen + Assert(false); + break; + } + + if (define_stmt->if_not_exists) + appendStringInfoString(str, "IF NOT EXISTS "); + + switch (define_stmt->kind) + { + case OBJECT_AGGREGATE: + deparseFuncName(str, define_stmt->defnames); + break; + case OBJECT_OPERATOR: + deparseAnyOperator(str, define_stmt->defnames); + break; + case OBJECT_TYPE: + case OBJECT_TSPARSER: + case OBJECT_TSDICTIONARY: + case OBJECT_TSTEMPLATE: + case OBJECT_TSCONFIGURATION: + case OBJECT_COLLATION: + deparseAnyName(str, define_stmt->defnames); + break; + default: + Assert(false); + } + appendStringInfoChar(str, ' '); + + if (!define_stmt->oldstyle && define_stmt->kind == OBJECT_AGGREGATE) + { + deparseAggrArgs(str, define_stmt->args); + appendStringInfoChar(str, ' '); + } + + if (define_stmt->kind == OBJECT_COLLATION && + list_length(define_stmt->definition) == 1 && + strcmp(castNode(DefElem, linitial(define_stmt->definition))->defname, "from") == 0) + { + appendStringInfoString(str, "FROM "); + deparseAnyName(str, castNode(List, castNode(DefElem, linitial(define_stmt->definition))->arg)); + } + else if (list_length(define_stmt->definition) > 0) + { + deparseDefinition(str, define_stmt->definition); + } + + removeTrailingSpace(str); +} + +static void deparseCompositeTypeStmt(StringInfo str, CompositeTypeStmt *composite_type_stmt) +{ + ListCell *lc; + RangeVar *typevar; + + appendStringInfoString(str, "CREATE TYPE "); + deparseRangeVar(str, composite_type_stmt->typevar, DEPARSE_NODE_CONTEXT_CREATE_TYPE); + + appendStringInfoString(str, " AS ("); + foreach(lc, composite_type_stmt->coldeflist) + { + deparseColumnDef(str, castNode(ColumnDef, lfirst(lc))); + if (lnext(composite_type_stmt->coldeflist, lc)) + appendStringInfoString(str, ", "); + } + appendStringInfoChar(str, ')'); +} + +static void deparseCreateEnumStmt(StringInfo str, CreateEnumStmt *create_enum_stmt) +{ + ListCell *lc; + appendStringInfoString(str, "CREATE TYPE "); + + deparseAnyName(str, create_enum_stmt->typeName); + appendStringInfoString(str, " AS ENUM ("); + foreach(lc, create_enum_stmt->vals) + { + deparseStringLiteral(str, strVal(lfirst(lc))); + if (lnext(create_enum_stmt->vals, lc)) + appendStringInfoString(str, ", "); + } + appendStringInfoChar(str, ')'); +} + +static void deparseCreateRangeStmt(StringInfo str, CreateRangeStmt *create_range_stmt) +{ + appendStringInfoString(str, "CREATE TYPE "); + deparseAnyName(str, create_range_stmt->typeName); + appendStringInfoString(str, " AS RANGE "); + deparseDefinition(str, create_range_stmt->params); +} + +static void deparseAlterEnumStmt(StringInfo str, AlterEnumStmt *alter_enum_stmt) +{ + appendStringInfoString(str, "ALTER TYPE "); + deparseAnyName(str, alter_enum_stmt->typeName); + appendStringInfoChar(str, ' '); + + if (alter_enum_stmt->oldVal == NULL) + { + appendStringInfoString(str, "ADD VALUE "); + if (alter_enum_stmt->skipIfNewValExists) + appendStringInfoString(str, "IF NOT EXISTS "); + + deparseStringLiteral(str, alter_enum_stmt->newVal); + appendStringInfoChar(str, ' '); + + if (alter_enum_stmt->newValNeighbor) + { + if (alter_enum_stmt->newValIsAfter) + appendStringInfoString(str, "AFTER "); + else + appendStringInfoString(str, "BEFORE "); + deparseStringLiteral(str, alter_enum_stmt->newValNeighbor); + } + } + else + { + appendStringInfoString(str, "RENAME VALUE "); + deparseStringLiteral(str, alter_enum_stmt->oldVal); + appendStringInfoString(str, " TO "); + deparseStringLiteral(str, alter_enum_stmt->newVal); + } + + removeTrailingSpace(str); +} + +static void deparseAlterExtensionStmt(StringInfo str, AlterExtensionStmt *alter_extension_stmt) +{ + ListCell *lc = NULL; + + appendStringInfoString(str, "ALTER EXTENSION "); + deparseColId(str, alter_extension_stmt->extname); + appendStringInfoString(str, " UPDATE "); + foreach (lc, alter_extension_stmt->options) + { + DefElem *def_elem = castNode(DefElem, lfirst(lc)); + if (strcmp(def_elem->defname, "new_version") == 0) + { + appendStringInfoString(str, "TO "); + deparseNonReservedWordOrSconst(str, strVal(def_elem->arg)); + } + else + { + Assert(false); + } + appendStringInfoChar(str, ' '); + } + removeTrailingSpace(str); +} + +static void deparseAlterExtensionContentsStmt(StringInfo str, AlterExtensionContentsStmt *alter_extension_contents_stmt) +{ + List *l = NULL; + + appendStringInfoString(str, "ALTER EXTENSION "); + deparseColId(str, alter_extension_contents_stmt->extname); + appendStringInfoChar(str, ' '); + + if (alter_extension_contents_stmt->action == 1) + appendStringInfoString(str, "ADD "); + else if (alter_extension_contents_stmt->action == -1) + appendStringInfoString(str, "DROP "); + else + Assert(false); + + switch (alter_extension_contents_stmt->objtype) + { + case OBJECT_ACCESS_METHOD: + appendStringInfoString(str, "ACCESS METHOD "); + break; + case OBJECT_AGGREGATE: + appendStringInfoString(str, "AGGREGATE "); + break; + case OBJECT_CAST: + appendStringInfoString(str, "CAST "); + break; + case OBJECT_COLLATION: + appendStringInfoString(str, "COLLATION "); + break; + case OBJECT_CONVERSION: + appendStringInfoString(str, "CONVERSION "); + break; + case OBJECT_DOMAIN: + appendStringInfoString(str, "DOMAIN "); + break; + case OBJECT_FUNCTION: + appendStringInfoString(str, "FUNCTION "); + break; + case OBJECT_LANGUAGE: + appendStringInfoString(str, "LANGUAGE "); + break; + case OBJECT_OPERATOR: + appendStringInfoString(str, "OPERATOR "); + break; + case OBJECT_OPCLASS: + appendStringInfoString(str, "OPERATOR CLASS "); + break; + case OBJECT_OPFAMILY: + appendStringInfoString(str, "OPERATOR FAMILY "); + break; + case OBJECT_PROCEDURE: + appendStringInfoString(str, "PROCEDURE "); + break; + case OBJECT_ROUTINE: + appendStringInfoString(str, "ROUTINE "); + break; + case OBJECT_SCHEMA: + appendStringInfoString(str, "SCHEMA "); + break; + case OBJECT_EVENT_TRIGGER: + appendStringInfoString(str, "EVENT TRIGGER "); + break; + case OBJECT_TABLE: + appendStringInfoString(str, "TABLE "); + break; + case OBJECT_TSPARSER: + appendStringInfoString(str, "TEXT SEARCH PARSER "); + break; + case OBJECT_TSDICTIONARY: + appendStringInfoString(str, "TEXT SEARCH DICTIONARY "); + break; + case OBJECT_TSTEMPLATE: + appendStringInfoString(str, "TEXT SEARCH TEMPLATE "); + break; + case OBJECT_TSCONFIGURATION: + appendStringInfoString(str, "TEXT SEARCH CONFIGURATION "); + break; + case OBJECT_SEQUENCE: + appendStringInfoString(str, "SEQUENCE "); + break; + case OBJECT_VIEW: + appendStringInfoString(str, "VIEW "); + break; + case OBJECT_MATVIEW: + appendStringInfoString(str, "MATERIALIZED VIEW "); + break; + case OBJECT_FOREIGN_TABLE: + appendStringInfoString(str, "FOREIGN TABLE "); + break; + case OBJECT_FDW: + appendStringInfoString(str, "FOREIGN DATA WRAPPER "); + break; + case OBJECT_FOREIGN_SERVER: + appendStringInfoString(str, "SERVER "); + break; + case OBJECT_TRANSFORM: + appendStringInfoString(str, "TRANSFORM "); + break; + case OBJECT_TYPE: + appendStringInfoString(str, "TYPE "); + break; + default: + // No other object types are supported here in the parser + Assert(false); + break; + } + + switch (alter_extension_contents_stmt->objtype) + { + // any_name + case OBJECT_COLLATION: + case OBJECT_CONVERSION: + case OBJECT_TABLE: + case OBJECT_TSPARSER: + case OBJECT_TSDICTIONARY: + case OBJECT_TSTEMPLATE: + case OBJECT_TSCONFIGURATION: + case OBJECT_SEQUENCE: + case OBJECT_VIEW: + case OBJECT_MATVIEW: + case OBJECT_FOREIGN_TABLE: + deparseAnyName(str, castNode(List, alter_extension_contents_stmt->object)); + break; + // name + case OBJECT_ACCESS_METHOD: + case OBJECT_LANGUAGE: + case OBJECT_SCHEMA: + case OBJECT_EVENT_TRIGGER: + case OBJECT_FDW: + case OBJECT_FOREIGN_SERVER: + deparseColId(str, strVal(alter_extension_contents_stmt->object)); + break; + case OBJECT_AGGREGATE: + deparseAggregateWithArgtypes(str, castNode(ObjectWithArgs, alter_extension_contents_stmt->object)); + break; + case OBJECT_CAST: + l = castNode(List, alter_extension_contents_stmt->object); + Assert(list_length(l) == 2); + appendStringInfoChar(str, '('); + deparseTypeName(str, castNode(TypeName, linitial(l))); + appendStringInfoString(str, " AS "); + deparseTypeName(str, castNode(TypeName, lsecond(l))); + appendStringInfoChar(str, ')'); + break; + case OBJECT_DOMAIN: + case OBJECT_TYPE: + deparseTypeName(str, castNode(TypeName, alter_extension_contents_stmt->object)); + break; + case OBJECT_FUNCTION: + case OBJECT_PROCEDURE: + case OBJECT_ROUTINE: + deparseFunctionWithArgtypes(str, castNode(ObjectWithArgs, alter_extension_contents_stmt->object)); + break; + case OBJECT_OPERATOR: + deparseOperatorWithArgtypes(str, castNode(ObjectWithArgs, alter_extension_contents_stmt->object)); + break; + case OBJECT_OPFAMILY: + case OBJECT_OPCLASS: + l = castNode(List, alter_extension_contents_stmt->object); + Assert(list_length(l) == 2); + deparseAnyNameSkipFirst(str, l); + appendStringInfoString(str, " USING "); + deparseColId(str, strVal(linitial(l))); + break; + case OBJECT_TRANSFORM: + l = castNode(List, alter_extension_contents_stmt->object); + appendStringInfoString(str, "FOR "); + deparseTypeName(str, castNode(TypeName, linitial(l))); + appendStringInfoString(str, " LANGUAGE "); + deparseColId(str, strVal(lsecond(l))); + break; + default: + Assert(false); + break; + } +} + +static void deparseAccessPriv(StringInfo str, AccessPriv *access_priv) +{ + ListCell *lc; + + if (access_priv->priv_name != NULL) + { + if (strcmp(access_priv->priv_name, "select") == 0) + appendStringInfoString(str, "select"); + else if (strcmp(access_priv->priv_name, "references") == 0) + appendStringInfoString(str, "references"); + else if (strcmp(access_priv->priv_name, "create") == 0) + appendStringInfoString(str, "create"); + else + appendStringInfoString(str, quote_identifier(access_priv->priv_name)); + } + else + { + appendStringInfoString(str, "ALL"); + } + appendStringInfoChar(str, ' '); + + if (list_length(access_priv->cols) > 0) + { + appendStringInfoChar(str, '('); + deparseColumnList(str, access_priv->cols); + appendStringInfoChar(str, ')'); + } + + removeTrailingSpace(str); +} + +static void deparseGrantStmt(StringInfo str, GrantStmt *grant_stmt) +{ + ListCell *lc; + + if (grant_stmt->is_grant) + appendStringInfoString(str, "GRANT "); + else + appendStringInfoString(str, "REVOKE "); + + if (!grant_stmt->is_grant && grant_stmt->grant_option) + appendStringInfoString(str, "GRANT OPTION FOR "); + + if (list_length(grant_stmt->privileges) > 0) + { + foreach(lc, grant_stmt->privileges) + { + deparseAccessPriv(str, castNode(AccessPriv, lfirst(lc))); + if (lnext(grant_stmt->privileges, lc)) + appendStringInfoString(str, ", "); + } + appendStringInfoChar(str, ' '); + } + else + { + appendStringInfoString(str, "ALL "); + } + + appendStringInfoString(str, "ON "); + + deparsePrivilegeTarget(str, grant_stmt->targtype, grant_stmt->objtype, grant_stmt->objects); + appendStringInfoChar(str, ' '); + + if (grant_stmt->is_grant) + appendStringInfoString(str, "TO "); + else + appendStringInfoString(str, "FROM "); + + foreach(lc, grant_stmt->grantees) + { + deparseRoleSpec(str, castNode(RoleSpec, lfirst(lc))); + if (lnext(grant_stmt->grantees, lc)) + appendStringInfoChar(str, ','); + appendStringInfoChar(str, ' '); + } + + if (grant_stmt->is_grant && grant_stmt->grant_option) + appendStringInfoString(str, "WITH GRANT OPTION "); + + deparseOptDropBehavior(str, grant_stmt->behavior); + + removeTrailingSpace(str); +} + +static void deparseGrantRoleStmt(StringInfo str, GrantRoleStmt *grant_role_stmt) +{ + ListCell *lc; + + if (grant_role_stmt->is_grant) + appendStringInfoString(str, "GRANT "); + else + appendStringInfoString(str, "REVOKE "); + + foreach(lc, grant_role_stmt->granted_roles) + { + deparseAccessPriv(str, castNode(AccessPriv, lfirst(lc))); + if (lnext(grant_role_stmt->granted_roles, lc)) + appendStringInfoChar(str, ','); + appendStringInfoChar(str, ' '); + } + + if (grant_role_stmt->is_grant) + appendStringInfoString(str, "TO "); + else + appendStringInfoString(str, "FROM "); + + deparseRoleList(str, grant_role_stmt->grantee_roles); + appendStringInfoChar(str, ' '); + + if (grant_role_stmt->admin_opt) + appendStringInfoString(str, "WITH ADMIN OPTION "); + + removeTrailingSpace(str); +} + +static void deparseDropRoleStmt(StringInfo str, DropRoleStmt *drop_role_stmt) +{ + ListCell *lc; + + appendStringInfoString(str, "DROP ROLE "); + + if (drop_role_stmt->missing_ok) + appendStringInfoString(str, "IF EXISTS "); + + deparseRoleList(str, drop_role_stmt->roles); +} + +static void deparseIndexStmt(StringInfo str, IndexStmt *index_stmt) +{ + ListCell *lc; + + appendStringInfoString(str, "CREATE "); + + if (index_stmt->unique) + appendStringInfoString(str, "UNIQUE "); + + appendStringInfoString(str, "INDEX "); + + if (index_stmt->concurrent) + appendStringInfoString(str, "CONCURRENTLY "); + + if (index_stmt->if_not_exists) + appendStringInfoString(str, "IF NOT EXISTS "); + + if (index_stmt->idxname != NULL) + { + appendStringInfoString(str, index_stmt->idxname); + appendStringInfoChar(str, ' '); + } + + appendStringInfoString(str, "ON "); + deparseRangeVar(str, index_stmt->relation, DEPARSE_NODE_CONTEXT_NONE); + appendStringInfoChar(str, ' '); + + if (index_stmt->accessMethod != NULL) + { + appendStringInfoString(str, "USING "); + appendStringInfoString(str, quote_identifier(index_stmt->accessMethod)); + appendStringInfoChar(str, ' '); + } + + appendStringInfoChar(str, '('); + foreach (lc, index_stmt->indexParams) + { + deparseIndexElem(str, castNode(IndexElem, lfirst(lc))); + if (lnext(index_stmt->indexParams, lc)) + appendStringInfoString(str, ", "); + } + appendStringInfoString(str, ") "); + + if (list_length(index_stmt->indexIncludingParams) > 0) + { + appendStringInfoString(str, "INCLUDE ("); + foreach (lc, index_stmt->indexIncludingParams) + { + deparseIndexElem(str, castNode(IndexElem, lfirst(lc))); + if (lnext(index_stmt->indexIncludingParams, lc)) + appendStringInfoString(str, ", "); + } + appendStringInfoString(str, ") "); + } + + deparseOptWith(str, index_stmt->options); + + if (index_stmt->tableSpace != NULL) + { + appendStringInfoString(str, "TABLESPACE "); + appendStringInfoString(str, quote_identifier(index_stmt->tableSpace)); + appendStringInfoChar(str, ' '); + } + + deparseWhereClause(str, index_stmt->whereClause); + + removeTrailingSpace(str); +} + +static void deparseAlterOpFamilyStmt(StringInfo str, AlterOpFamilyStmt *alter_op_family_stmt) +{ + appendStringInfoString(str, "ALTER OPERATOR FAMILY "); + deparseAnyName(str, alter_op_family_stmt->opfamilyname); + appendStringInfoChar(str, ' '); + + appendStringInfoString(str, "USING "); + appendStringInfoString(str, quote_identifier(alter_op_family_stmt->amname)); + appendStringInfoChar(str, ' '); + + if (alter_op_family_stmt->isDrop) + appendStringInfoString(str, "DROP "); + else + appendStringInfoString(str, "ADD "); + + deparseOpclassItemList(str, alter_op_family_stmt->items); +} + +static void deparsePrepareStmt(StringInfo str, PrepareStmt *prepare_stmt) +{ + ListCell *lc = NULL; + + appendStringInfoString(str, "PREPARE "); + deparseColId(str, prepare_stmt->name); + if (list_length(prepare_stmt->argtypes) > 0) + { + appendStringInfoChar(str, '('); + deparseTypeList(str, prepare_stmt->argtypes); + appendStringInfoChar(str, ')'); + } + appendStringInfoString(str, " AS "); + deparsePreparableStmt(str, prepare_stmt->query); +} + +static void deparseExecuteStmt(StringInfo str, ExecuteStmt *execute_stmt) +{ + ListCell *lc; + + appendStringInfoString(str, "EXECUTE "); + appendStringInfoString(str, quote_identifier(execute_stmt->name)); + if (list_length(execute_stmt->params) > 0) + { + appendStringInfoChar(str, '('); + deparseExprList(str, execute_stmt->params); + appendStringInfoChar(str, ')'); + } +} + +static void deparseDeallocateStmt(StringInfo str, DeallocateStmt *deallocate_stmt) +{ + appendStringInfoString(str, "DEALLOCATE "); + if (deallocate_stmt->name != NULL) + appendStringInfoString(str, quote_identifier(deallocate_stmt->name)); + else + appendStringInfoString(str, "ALL"); +} + +// "AlterOptRoleElem" in gram.y +static void deparseAlterRoleElem(StringInfo str, DefElem *def_elem) +{ + if (strcmp(def_elem->defname, "password") == 0) + { + appendStringInfoString(str, "PASSWORD "); + if (def_elem->arg == NULL) + { + appendStringInfoString(str, "NULL"); + } + else if (IsA(def_elem->arg, ParamRef)) + { + deparseParamRef(str, castNode(ParamRef, def_elem->arg)); + } + else if (IsA(def_elem->arg, String)) + { + deparseStringLiteral(str, strVal(def_elem->arg)); + } + else + { + Assert(false); + } + } + else if (strcmp(def_elem->defname, "connectionlimit") == 0) + { + appendStringInfo(str, "CONNECTION LIMIT %d", intVal(def_elem->arg)); + } + else if (strcmp(def_elem->defname, "validUntil") == 0) + { + appendStringInfoString(str, "VALID UNTIL "); + deparseStringLiteral(str, strVal(def_elem->arg)); + } + else if (strcmp(def_elem->defname, "superuser") == 0 && intVal(def_elem->arg) == 1) + { + appendStringInfoString(str, "SUPERUSER"); + } + else if (strcmp(def_elem->defname, "superuser") == 0 && intVal(def_elem->arg) == 0) + { + appendStringInfoString(str, "NOSUPERUSER"); + } + else if (strcmp(def_elem->defname, "createrole") == 0 && intVal(def_elem->arg) == 1) + { + appendStringInfoString(str, "CREATEROLE"); + } + else if (strcmp(def_elem->defname, "createrole") == 0 && intVal(def_elem->arg) == 0) + { + appendStringInfoString(str, "NOCREATEROLE"); + } + else if (strcmp(def_elem->defname, "isreplication") == 0 && intVal(def_elem->arg) == 1) + { + appendStringInfoString(str, "REPLICATION"); + } + else if (strcmp(def_elem->defname, "isreplication") == 0 && intVal(def_elem->arg) == 0) + { + appendStringInfoString(str, "NOREPLICATION"); + } + else if (strcmp(def_elem->defname, "createdb") == 0 && intVal(def_elem->arg) == 1) + { + appendStringInfoString(str, "CREATEDB"); + } + else if (strcmp(def_elem->defname, "createdb") == 0 && intVal(def_elem->arg) == 0) + { + appendStringInfoString(str, "NOCREATEDB"); + } + else if (strcmp(def_elem->defname, "canlogin") == 0 && intVal(def_elem->arg) == 1) + { + appendStringInfoString(str, "LOGIN"); + } + else if (strcmp(def_elem->defname, "canlogin") == 0 && intVal(def_elem->arg) == 0) + { + appendStringInfoString(str, "NOLOGIN"); + } + else if (strcmp(def_elem->defname, "bypassrls") == 0 && intVal(def_elem->arg) == 1) + { + appendStringInfoString(str, "BYPASSRLS"); + } + else if (strcmp(def_elem->defname, "bypassrls") == 0 && intVal(def_elem->arg) == 0) + { + appendStringInfoString(str, "NOBYPASSRLS"); + } + else if (strcmp(def_elem->defname, "inherit") == 0 && intVal(def_elem->arg) == 1) + { + appendStringInfoString(str, "INHERIT"); + } + else if (strcmp(def_elem->defname, "inherit") == 0 && intVal(def_elem->arg) == 0) + { + appendStringInfoString(str, "NOINHERIT"); + } + else + { + Assert(false); + } +} + +// "CreateOptRoleElem" in gram.y +static void deparseCreateRoleElem(StringInfo str, DefElem *def_elem) +{ + if (strcmp(def_elem->defname, "sysid") == 0) + { + appendStringInfo(str, "SYSID %d", intVal(def_elem->arg)); + } + else if (strcmp(def_elem->defname, "adminmembers") == 0) + { + appendStringInfoString(str, "ADMIN "); + deparseRoleList(str, castNode(List, def_elem->arg)); + } + else if (strcmp(def_elem->defname, "rolemembers") == 0) + { + appendStringInfoString(str, "ROLE "); + deparseRoleList(str, castNode(List, def_elem->arg)); + } + else if (strcmp(def_elem->defname, "addroleto") == 0) + { + appendStringInfoString(str, "IN ROLE "); + deparseRoleList(str, castNode(List, def_elem->arg)); + } + else + { + deparseAlterRoleElem(str, def_elem); + } +} + +static void deparseCreatePLangStmt(StringInfo str, CreatePLangStmt *create_p_lang_stmt) +{ + appendStringInfoString(str, "CREATE "); + + if (create_p_lang_stmt->replace) + appendStringInfoString(str, "OR REPLACE "); + + if (create_p_lang_stmt->pltrusted) + appendStringInfoString(str, "TRUSTED "); + + appendStringInfoString(str, "LANGUAGE "); + deparseNonReservedWordOrSconst(str, create_p_lang_stmt->plname); + appendStringInfoChar(str, ' '); + + appendStringInfoString(str, "HANDLER "); + deparseHandlerName(str, create_p_lang_stmt->plhandler); + appendStringInfoChar(str, ' '); + + if (create_p_lang_stmt->plinline) + { + appendStringInfoString(str, "INLINE "); + deparseHandlerName(str, create_p_lang_stmt->plinline); + appendStringInfoChar(str, ' '); + } + + if (create_p_lang_stmt->plvalidator) + { + appendStringInfoString(str, "VALIDATOR "); + deparseHandlerName(str, create_p_lang_stmt->plvalidator); + appendStringInfoChar(str, ' '); + } + + removeTrailingSpace(str); +} + +static void deparseCreateRoleStmt(StringInfo str, CreateRoleStmt *create_role_stmt) +{ + ListCell *lc; + + appendStringInfoString(str, "CREATE "); + + switch (create_role_stmt->stmt_type) + { + case ROLESTMT_ROLE: + appendStringInfoString(str, "ROLE "); + break; + case ROLESTMT_USER: + appendStringInfoString(str, "USER "); + break; + case ROLESTMT_GROUP: + appendStringInfoString(str, "GROUP "); + break; + } + + appendStringInfoString(str, quote_identifier(create_role_stmt->role)); + appendStringInfoChar(str, ' '); + + if (create_role_stmt->options != NULL) + { + appendStringInfoString(str, "WITH "); + foreach (lc, create_role_stmt->options) + { + deparseCreateRoleElem(str, castNode(DefElem, lfirst(lc))); + appendStringInfoChar(str, ' '); + } + } + + removeTrailingSpace(str); +} + +static void deparseAlterRoleStmt(StringInfo str, AlterRoleStmt *alter_role_stmt) +{ + ListCell *lc; + + appendStringInfoString(str, "ALTER "); + + if (list_length(alter_role_stmt->options) == 1 && strcmp(castNode(DefElem, linitial(alter_role_stmt->options))->defname, "rolemembers") == 0) + { + appendStringInfoString(str, "GROUP "); + deparseRoleSpec(str, alter_role_stmt->role); + appendStringInfoChar(str, ' '); + + if (alter_role_stmt->action == 1) + { + appendStringInfoString(str, "ADD USER "); + } + else if (alter_role_stmt->action == -1) + { + appendStringInfoString(str, "DROP USER "); + } + else + { + Assert(false); + } + + deparseRoleList(str, castNode(List, castNode(DefElem, linitial(alter_role_stmt->options))->arg)); + } + else + { + appendStringInfoString(str, "ROLE "); + deparseRoleSpec(str, alter_role_stmt->role); + appendStringInfoChar(str, ' '); + + appendStringInfoString(str, "WITH "); + foreach (lc, alter_role_stmt->options) + { + deparseAlterRoleElem(str, castNode(DefElem, lfirst(lc))); + appendStringInfoChar(str, ' '); + } + } + + removeTrailingSpace(str); +} + +static void deparseDeclareCursorStmt(StringInfo str, DeclareCursorStmt *declare_cursor_stmt) +{ + appendStringInfoString(str, "DECLARE "); + appendStringInfoString(str, quote_identifier(declare_cursor_stmt->portalname)); + appendStringInfoChar(str, ' '); + + if (declare_cursor_stmt->options & CURSOR_OPT_BINARY) + appendStringInfoString(str, "BINARY "); + + if (declare_cursor_stmt->options & CURSOR_OPT_SCROLL) + appendStringInfoString(str, "SCROLL "); + + if (declare_cursor_stmt->options & CURSOR_OPT_NO_SCROLL) + appendStringInfoString(str, "NO SCROLL "); + + if (declare_cursor_stmt->options & CURSOR_OPT_INSENSITIVE) + appendStringInfoString(str, "INSENSITIVE "); + + appendStringInfoString(str, "CURSOR "); + + if (declare_cursor_stmt->options & CURSOR_OPT_HOLD) + appendStringInfoString(str, "WITH HOLD "); + + appendStringInfoString(str, "FOR "); + + deparseSelectStmt(str, castNode(SelectStmt, declare_cursor_stmt->query)); +} + +static void deparseFetchStmt(StringInfo str, FetchStmt *fetch_stmt) +{ + if (fetch_stmt->ismove) + appendStringInfoString(str, "MOVE "); + else + appendStringInfoString(str, "FETCH "); + + switch (fetch_stmt->direction) + { + case FETCH_FORWARD: + if (fetch_stmt->howMany == 1) + { + // Default + } + else if (fetch_stmt->howMany == FETCH_ALL) + { + appendStringInfoString(str, "ALL "); + } + else + { + appendStringInfo(str, "FORWARD %ld ", fetch_stmt->howMany); + } + break; + case FETCH_BACKWARD: + if (fetch_stmt->howMany == 1) + { + appendStringInfoString(str, "PRIOR "); + } + else if (fetch_stmt->howMany == FETCH_ALL) + { + appendStringInfoString(str, "BACKWARD ALL "); + } + else + { + appendStringInfo(str, "BACKWARD %ld ", fetch_stmt->howMany); + } + break; + case FETCH_ABSOLUTE: + if (fetch_stmt->howMany == 1) + { + appendStringInfoString(str, "FIRST "); + } + else if (fetch_stmt->howMany == -1) + { + appendStringInfoString(str, "LAST "); + } + else + { + appendStringInfo(str, "ABSOLUTE %ld ", fetch_stmt->howMany); + } + break; + case FETCH_RELATIVE: + appendStringInfo(str, "RELATIVE %ld ", fetch_stmt->howMany); + } + + appendStringInfoString(str, fetch_stmt->portalname); +} + +static void deparseAlterDefaultPrivilegesStmt(StringInfo str, AlterDefaultPrivilegesStmt *alter_default_privileges_stmt) +{ + ListCell *lc; + + appendStringInfoString(str, "ALTER DEFAULT PRIVILEGES "); + + foreach (lc, alter_default_privileges_stmt->options) + { + DefElem *defelem = castNode(DefElem, lfirst(lc)); + if (strcmp(defelem->defname, "schemas") == 0) + { + appendStringInfoString(str, "IN SCHEMA "); + deparseNameList(str, castNode(List, defelem->arg)); + appendStringInfoChar(str, ' '); + } + else if (strcmp(defelem->defname, "roles") == 0) + { + appendStringInfoString(str, "FOR ROLE "); + deparseRoleList(str, castNode(List, defelem->arg)); + appendStringInfoChar(str, ' '); + } + else + { + // No other DefElems are supported + Assert(false); + } + } + + deparseGrantStmt(str, alter_default_privileges_stmt->action); +} + +static void deparseReindexStmt(StringInfo str, ReindexStmt *reindex_stmt) +{ + appendStringInfoString(str, "REINDEX "); + + if (reindex_stmt->options & REINDEXOPT_VERBOSE) + appendStringInfoString(str, "(VERBOSE) "); + + switch (reindex_stmt->kind) + { + case REINDEX_OBJECT_INDEX: + appendStringInfoString(str, "INDEX "); + break; + case REINDEX_OBJECT_TABLE: + appendStringInfoString(str, "TABLE "); + break; + case REINDEX_OBJECT_SCHEMA: + appendStringInfoString(str, "SCHEMA "); + break; + case REINDEX_OBJECT_SYSTEM: + appendStringInfoString(str, "SYSTEM "); + break; + case REINDEX_OBJECT_DATABASE: + appendStringInfoString(str, "DATABASE "); + break; + } + + if (reindex_stmt->concurrent) + appendStringInfoString(str, "CONCURRENTLY "); + + if (reindex_stmt->relation != NULL) + { + deparseRangeVar(str, reindex_stmt->relation, DEPARSE_NODE_CONTEXT_NONE); + } + else if (reindex_stmt->name != NULL) + { + appendStringInfoString(str, quote_identifier(reindex_stmt->name)); + } +} + +static void deparseRuleStmt(StringInfo str, RuleStmt* rule_stmt) +{ + ListCell *lc; + + appendStringInfoString(str, "CREATE "); + + if (rule_stmt->replace) + appendStringInfoString(str, "OR REPLACE "); + + appendStringInfoString(str, "RULE "); + appendStringInfoString(str, quote_identifier(rule_stmt->rulename)); + appendStringInfoString(str, " AS ON "); + + switch (rule_stmt->event) + { + case CMD_UNKNOWN: + case CMD_UTILITY: + case CMD_NOTHING: + // Not supported here + Assert(false); + break; + case CMD_SELECT: + appendStringInfoString(str, "SELECT "); + break; + case CMD_UPDATE: + appendStringInfoString(str, "UPDATE "); + break; + case CMD_INSERT: + appendStringInfoString(str, "INSERT "); + break; + case CMD_DELETE: + appendStringInfoString(str, "DELETE "); + break; + } + + appendStringInfoString(str, "TO "); + deparseRangeVar(str, rule_stmt->relation, DEPARSE_NODE_CONTEXT_NONE); + appendStringInfoChar(str, ' '); + + deparseWhereClause(str, rule_stmt->whereClause); + + appendStringInfoString(str, "DO "); + + if (rule_stmt->instead) + appendStringInfoString(str, "INSTEAD "); + + if (list_length(rule_stmt->actions) == 0) + { + appendStringInfoString(str, "NOTHING"); + } + else if (list_length(rule_stmt->actions) == 1) + { + deparseRuleActionStmt(str, linitial(rule_stmt->actions)); + } + else + { + appendStringInfoChar(str, '('); + foreach (lc, rule_stmt->actions) + { + deparseRuleActionStmt(str, lfirst(lc)); + if (lnext(rule_stmt->actions, lc)) + appendStringInfoString(str, "; "); + } + appendStringInfoChar(str, ')'); + } +} + +static void deparseNotifyStmt(StringInfo str, NotifyStmt *notify_stmt) +{ + appendStringInfoString(str, "NOTIFY "); + appendStringInfoString(str, quote_identifier(notify_stmt->conditionname)); + + if (notify_stmt->payload != NULL) + { + appendStringInfoString(str, ", "); + deparseStringLiteral(str, notify_stmt->payload); + } +} + +static void deparseListenStmt(StringInfo str, ListenStmt *listen_stmt) +{ + appendStringInfoString(str, "LISTEN "); + appendStringInfoString(str, quote_identifier(listen_stmt->conditionname)); +} + +static void deparseUnlistenStmt(StringInfo str, UnlistenStmt *unlisten_stmt) +{ + appendStringInfoString(str, "UNLISTEN "); + if (unlisten_stmt->conditionname == NULL) + appendStringInfoString(str, "*"); + else + appendStringInfoString(str, quote_identifier(unlisten_stmt->conditionname)); +} + +static void deparseCreateSeqStmt(StringInfo str, CreateSeqStmt *create_seq_stmt) +{ + ListCell *lc; + + appendStringInfoString(str, "CREATE "); + + deparseOptTemp(str, create_seq_stmt->sequence->relpersistence); + + appendStringInfoString(str, "SEQUENCE "); + + if (create_seq_stmt->if_not_exists) + appendStringInfoString(str, "IF NOT EXISTS "); + + deparseRangeVar(str, create_seq_stmt->sequence, DEPARSE_NODE_CONTEXT_NONE); + appendStringInfoChar(str, ' '); + + deparseOptSeqOptList(str, create_seq_stmt->options); + + removeTrailingSpace(str); +} + +static void deparseAlterFunctionStmt(StringInfo str, AlterFunctionStmt *alter_function_stmt) +{ + ListCell *lc; + + appendStringInfoString(str, "ALTER "); + + switch (alter_function_stmt->objtype) + { + case OBJECT_FUNCTION: + appendStringInfoString(str, "FUNCTION "); + break; + case OBJECT_PROCEDURE: + appendStringInfoString(str, "PROCEDURE "); + break; + case OBJECT_ROUTINE: + appendStringInfoString(str, "ROUTINE "); + break; + default: + // Not supported here + Assert(false); + break; + } + + deparseFunctionWithArgtypes(str, alter_function_stmt->func); + appendStringInfoChar(str, ' '); + + foreach (lc, alter_function_stmt->actions) + { + deparseCommonFuncOptItem(str, castNode(DefElem, lfirst(lc))); + if (lnext(alter_function_stmt->actions, lc)) + appendStringInfoChar(str, ' '); + } +} + +static void deparseTruncateStmt(StringInfo str, TruncateStmt *truncate_stmt) +{ + appendStringInfoString(str, "TRUNCATE "); + + deparseRelationExprList(str, truncate_stmt->relations); + appendStringInfoChar(str, ' '); + + if (truncate_stmt->restart_seqs) + appendStringInfoString(str, "RESTART IDENTITY "); + + deparseOptDropBehavior(str, truncate_stmt->behavior); + + removeTrailingSpace(str); +} + +static void deparseCreateEventTrigStmt(StringInfo str, CreateEventTrigStmt *create_event_trig_stmt) +{ + ListCell *lc = NULL; + ListCell *lc2 = NULL; + + appendStringInfoString(str, "CREATE EVENT TRIGGER "); + appendStringInfoString(str, quote_identifier(create_event_trig_stmt->trigname)); + appendStringInfoChar(str, ' '); + + appendStringInfoString(str, "ON "); + appendStringInfoString(str, quote_identifier(create_event_trig_stmt->eventname)); + appendStringInfoChar(str, ' '); + + if (create_event_trig_stmt->whenclause) + { + appendStringInfoString(str, "WHEN "); + + foreach (lc, create_event_trig_stmt->whenclause) + { + DefElem *def_elem = castNode(DefElem, lfirst(lc)); + List *l = castNode(List, def_elem->arg); + appendStringInfoString(str, quote_identifier(def_elem->defname)); + appendStringInfoString(str, " IN ("); + foreach (lc2, l) + { + deparseStringLiteral(str, strVal(lfirst(lc2))); + if (lnext(l, lc2)) + appendStringInfoString(str, ", "); + } + appendStringInfoChar(str, ')'); + if (lnext(create_event_trig_stmt->whenclause, lc)) + appendStringInfoString(str, " AND "); + } + + appendStringInfoChar(str, ' '); + } + + appendStringInfoString(str, "EXECUTE FUNCTION "); + deparseFuncName(str, create_event_trig_stmt->funcname); + appendStringInfoString(str, "()"); +} + +static void deparseAlterEventTrigStmt(StringInfo str, AlterEventTrigStmt *alter_event_trig_stmt) +{ + appendStringInfoString(str, "ALTER EVENT TRIGGER "); + appendStringInfoString(str, quote_identifier(alter_event_trig_stmt->trigname)); + appendStringInfoChar(str, ' '); + + switch (alter_event_trig_stmt->tgenabled) + { + case TRIGGER_FIRES_ON_ORIGIN: + appendStringInfoString(str, "ENABLE"); + break; + case TRIGGER_FIRES_ON_REPLICA: + appendStringInfoString(str, "ENABLE REPLICA"); + break; + case TRIGGER_FIRES_ALWAYS: + appendStringInfoString(str, "ENABLE ALWAYS"); + break; + case TRIGGER_DISABLED: + appendStringInfoString(str, "DISABLE"); + break; + } +} + +static void deparseRefreshMatViewStmt(StringInfo str, RefreshMatViewStmt *refresh_mat_view_stmt) +{ + appendStringInfoString(str, "REFRESH MATERIALIZED VIEW "); + + if (refresh_mat_view_stmt->concurrent) + appendStringInfoString(str, "CONCURRENTLY "); + + deparseRangeVar(str, refresh_mat_view_stmt->relation, DEPARSE_NODE_CONTEXT_NONE); + appendStringInfoChar(str, ' '); + + if (refresh_mat_view_stmt->skipData) + appendStringInfoString(str, "WITH NO DATA "); + + removeTrailingSpace(str); +} + +static void deparseReplicaIdentityStmt(StringInfo str, ReplicaIdentityStmt *replica_identity_stmt) +{ + switch (replica_identity_stmt->identity_type) + { + case REPLICA_IDENTITY_NOTHING: + appendStringInfoString(str, "NOTHING "); + break; + case REPLICA_IDENTITY_FULL: + appendStringInfoString(str, "FULL "); + break; + case REPLICA_IDENTITY_DEFAULT: + appendStringInfoString(str, "DEFAULT "); + break; + case REPLICA_IDENTITY_INDEX: + Assert(replica_identity_stmt->name != NULL); + appendStringInfoString(str, "USING INDEX "); + appendStringInfoString(str, quote_identifier(replica_identity_stmt->name)); + break; + } +} + +static void deparseCreatePolicyStmt(StringInfo str, CreatePolicyStmt *create_policy_stmt) +{ + ListCell *lc = NULL; + + appendStringInfoString(str, "CREATE POLICY "); + deparseColId(str, create_policy_stmt->policy_name); + appendStringInfoString(str, " ON "); + deparseRangeVar(str, create_policy_stmt->table, DEPARSE_NODE_CONTEXT_NONE); + appendStringInfoChar(str, ' '); + + if (!create_policy_stmt->permissive) + appendStringInfoString(str, "AS RESTRICTIVE "); + + if (strcmp(create_policy_stmt->cmd_name, "all") == 0) + Assert(true); // Default + else if (strcmp(create_policy_stmt->cmd_name, "select") == 0) + appendStringInfoString(str, "FOR SELECT "); + else if (strcmp(create_policy_stmt->cmd_name, "insert") == 0) + appendStringInfoString(str, "FOR INSERT "); + else if (strcmp(create_policy_stmt->cmd_name, "update") == 0) + appendStringInfoString(str, "FOR UPDATE "); + else if (strcmp(create_policy_stmt->cmd_name, "delete") == 0) + appendStringInfoString(str, "FOR DELETE "); + else + Assert(false); + + appendStringInfoString(str, "TO "); + deparseRoleList(str, create_policy_stmt->roles); + appendStringInfoChar(str, ' '); + + if (create_policy_stmt->qual != NULL) + { + appendStringInfoString(str, "USING ("); + deparseExpr(str, create_policy_stmt->qual); + appendStringInfoString(str, ") "); + } + + if (create_policy_stmt->with_check != NULL) + { + appendStringInfoString(str, "WITH CHECK ("); + deparseExpr(str, create_policy_stmt->with_check); + appendStringInfoString(str, ") "); + } +} + +static void deparseAlterPolicyStmt(StringInfo str, AlterPolicyStmt *alter_policy_stmt) +{ + appendStringInfoString(str, "ALTER POLICY "); + appendStringInfoString(str, quote_identifier(alter_policy_stmt->policy_name)); + appendStringInfoString(str, " ON "); + deparseRangeVar(str, alter_policy_stmt->table, DEPARSE_NODE_CONTEXT_NONE); + appendStringInfoChar(str, ' '); + + if (list_length(alter_policy_stmt->roles) > 0) + { + appendStringInfoString(str, "TO "); + deparseRoleList(str, alter_policy_stmt->roles); + appendStringInfoChar(str, ' '); + } + + if (alter_policy_stmt->qual != NULL) + { + appendStringInfoString(str, "USING ("); + deparseExpr(str, alter_policy_stmt->qual); + appendStringInfoString(str, ") "); + } + + if (alter_policy_stmt->with_check != NULL) + { + appendStringInfoString(str, "WITH CHECK ("); + deparseExpr(str, alter_policy_stmt->with_check); + appendStringInfoString(str, ") "); + } +} + +static void deparseCreateTableSpaceStmt(StringInfo str, CreateTableSpaceStmt *create_table_space_stmt) +{ + appendStringInfoString(str, "CREATE TABLESPACE "); + deparseColId(str, create_table_space_stmt->tablespacename); + appendStringInfoChar(str, ' '); + + if (create_table_space_stmt->owner != NULL) + { + appendStringInfoString(str, "OWNER "); + deparseRoleSpec(str, create_table_space_stmt->owner); + appendStringInfoChar(str, ' '); + } + + appendStringInfoString(str, "LOCATION "); + deparseStringLiteral(str, create_table_space_stmt->location); + appendStringInfoChar(str, ' '); + + deparseOptWith(str, create_table_space_stmt->options); + + removeTrailingSpace(str); +} + +static void deparseCreateTransformStmt(StringInfo str, CreateTransformStmt *create_transform_stmt) +{ + appendStringInfoString(str, "CREATE "); + if (create_transform_stmt->replace) + appendStringInfoString(str, "OR REPLACE "); + + appendStringInfoString(str, "TRANSFORM FOR "); + deparseTypeName(str, create_transform_stmt->type_name); + appendStringInfoChar(str, ' '); + + appendStringInfoString(str, "LANGUAGE "); + appendStringInfoString(str, quote_identifier(create_transform_stmt->lang)); + appendStringInfoChar(str, ' '); + + appendStringInfoChar(str, '('); + + if (create_transform_stmt->fromsql) + { + appendStringInfoString(str, "FROM SQL WITH FUNCTION "); + deparseFunctionWithArgtypes(str, create_transform_stmt->fromsql); + } + + if (create_transform_stmt->fromsql && create_transform_stmt->tosql) + appendStringInfoString(str, ", "); + + if (create_transform_stmt->tosql) + { + appendStringInfoString(str, "TO SQL WITH FUNCTION "); + deparseFunctionWithArgtypes(str, create_transform_stmt->tosql); + } + + appendStringInfoChar(str, ')'); +} + +static void deparseCreateAmStmt(StringInfo str, CreateAmStmt *create_am_stmt) +{ + appendStringInfoString(str, "CREATE ACCESS METHOD "); + appendStringInfoString(str, quote_identifier(create_am_stmt->amname)); + appendStringInfoChar(str, ' '); + + appendStringInfoString(str, "TYPE "); + switch (create_am_stmt->amtype) + { + case AMTYPE_INDEX: + appendStringInfoString(str, "INDEX "); + break; + case AMTYPE_TABLE: + appendStringInfoString(str, "TABLE "); + break; + } + + appendStringInfoString(str, "HANDLER "); + deparseHandlerName(str, create_am_stmt->handler_name); +} + +static void deparseCreatePublicationStmt(StringInfo str, CreatePublicationStmt *create_publication_stmt) +{ + ListCell *lc = NULL; + + appendStringInfoString(str, "CREATE PUBLICATION "); + appendStringInfoString(str, quote_identifier(create_publication_stmt->pubname)); + appendStringInfoChar(str, ' '); + + if (list_length(create_publication_stmt->tables) > 0) + { + appendStringInfoString(str, "FOR TABLE "); + deparseRelationExprList(str, create_publication_stmt->tables); + appendStringInfoChar(str, ' '); + } + else if (create_publication_stmt->for_all_tables) + { + appendStringInfoString(str, "FOR ALL TABLES "); + } + + deparseOptDefinition(str, create_publication_stmt->options); + removeTrailingSpace(str); +} + +static void deparseAlterPublicationStmt(StringInfo str, AlterPublicationStmt *alter_publication_stmt) +{ + appendStringInfoString(str, "ALTER PUBLICATION "); + deparseColId(str, alter_publication_stmt->pubname); + appendStringInfoChar(str, ' '); + + if (list_length(alter_publication_stmt->tables) > 0) + { + switch (alter_publication_stmt->tableAction) + { + case DEFELEM_SET: + appendStringInfoString(str, "SET TABLE "); + break; + case DEFELEM_ADD: + appendStringInfoString(str, "ADD TABLE "); + break; + case DEFELEM_DROP: + appendStringInfoString(str, "DROP TABLE "); + break; + case DEFELEM_UNSPEC: + Assert(false); + break; + } + + deparseRelationExprList(str, alter_publication_stmt->tables); + } + else if (list_length(alter_publication_stmt->options) > 0) + { + appendStringInfoString(str, "SET "); + deparseDefinition(str, alter_publication_stmt->options); + } + else + { + Assert(false); + } +} + +static void deparseAlterSeqStmt(StringInfo str, AlterSeqStmt *alter_seq_stmt) +{ + ListCell *lc; + + appendStringInfoString(str, "ALTER SEQUENCE "); + + if (alter_seq_stmt->missing_ok) + appendStringInfoString(str, "IF EXISTS "); + + deparseRangeVar(str, alter_seq_stmt->sequence, DEPARSE_NODE_CONTEXT_NONE); + appendStringInfoChar(str, ' '); + + deparseSeqOptList(str, alter_seq_stmt->options); + + removeTrailingSpace(str); +} + +static void deparseAlterSystemStmt(StringInfo str, AlterSystemStmt *alter_system_stmt) +{ + appendStringInfoString(str, "ALTER SYSTEM "); + deparseVariableSetStmt(str, alter_system_stmt->setstmt); +} + +static void deparseCommentStmt(StringInfo str, CommentStmt *comment_stmt) +{ + ListCell *lc; + List *l; + + appendStringInfoString(str, "COMMENT ON "); + + switch (comment_stmt->objtype) + { + case OBJECT_COLUMN: + appendStringInfoString(str, "COLUMN "); + break; + case OBJECT_INDEX: + appendStringInfoString(str, "INDEX "); + break; + case OBJECT_SEQUENCE: + appendStringInfoString(str, "SEQUENCE "); + break; + case OBJECT_STATISTIC_EXT: + appendStringInfoString(str, "STATISTICS "); + break; + case OBJECT_TABLE: + appendStringInfoString(str, "TABLE "); + break; + case OBJECT_VIEW: + appendStringInfoString(str, "VIEW "); + break; + case OBJECT_MATVIEW: + appendStringInfoString(str, "MATERIALIZED VIEW "); + break; + case OBJECT_COLLATION: + appendStringInfoString(str, "COLLATION "); + break; + case OBJECT_CONVERSION: + appendStringInfoString(str, "CONVERSION "); + break; + case OBJECT_FOREIGN_TABLE: + appendStringInfoString(str, "FOREIGN TABLE "); + break; + case OBJECT_TSCONFIGURATION: + appendStringInfoString(str, "TEXT SEARCH CONFIGURATION "); + break; + case OBJECT_TSDICTIONARY: + appendStringInfoString(str, "TEXT SEARCH DICTIONARY "); + break; + case OBJECT_TSPARSER: + appendStringInfoString(str, "TEXT SEARCH PARSER "); + break; + case OBJECT_TSTEMPLATE: + appendStringInfoString(str, "TEXT SEARCH TEMPLATE "); + break; + case OBJECT_ACCESS_METHOD: + appendStringInfoString(str, "ACCESS METHOD "); + break; + case OBJECT_DATABASE: + appendStringInfoString(str, "DATABASE "); + break; + case OBJECT_EVENT_TRIGGER: + appendStringInfoString(str, "EVENT TRIGGER "); + break; + case OBJECT_EXTENSION: + appendStringInfoString(str, "EXTENSION "); + break; + case OBJECT_FDW: + appendStringInfoString(str, "FOREIGN DATA WRAPPER "); + break; + case OBJECT_LANGUAGE: + appendStringInfoString(str, "LANGUAGE "); + break; + case OBJECT_PUBLICATION: + appendStringInfoString(str, "PUBLICATION "); + break; + case OBJECT_ROLE: + appendStringInfoString(str, "ROLE "); + break; + case OBJECT_SCHEMA: + appendStringInfoString(str, "SCHEMA "); + break; + case OBJECT_FOREIGN_SERVER: + appendStringInfoString(str, "SERVER "); + break; + case OBJECT_SUBSCRIPTION: + appendStringInfoString(str, "SUBSCRIPTION "); + break; + case OBJECT_TABLESPACE: + appendStringInfoString(str, "TABLESPACE "); + break; + case OBJECT_TYPE: + appendStringInfoString(str, "TYPE "); + break; + case OBJECT_DOMAIN: + appendStringInfoString(str, "DOMAIN "); + break; + case OBJECT_AGGREGATE: + appendStringInfoString(str, "AGGREGATE "); + break; + case OBJECT_FUNCTION: + appendStringInfoString(str, "FUNCTION "); + break; + case OBJECT_OPERATOR: + appendStringInfoString(str, "OPERATOR "); + break; + case OBJECT_TABCONSTRAINT: + appendStringInfoString(str, "CONSTRAINT "); + break; + case OBJECT_DOMCONSTRAINT: + appendStringInfoString(str, "CONSTRAINT "); + break; + case OBJECT_POLICY: + appendStringInfoString(str, "POLICY "); + break; + case OBJECT_PROCEDURE: + appendStringInfoString(str, "PROCEDURE "); + break; + case OBJECT_ROUTINE: + appendStringInfoString(str, "ROUTINE "); + break; + case OBJECT_RULE: + appendStringInfoString(str, "RULE "); + break; + case OBJECT_TRANSFORM: + appendStringInfoString(str, "TRANSFORM "); + break; + case OBJECT_TRIGGER: + appendStringInfoString(str, "TRIGGER "); + break; + case OBJECT_OPCLASS: + appendStringInfoString(str, "OPERATOR CLASS "); + break; + case OBJECT_OPFAMILY: + appendStringInfoString(str, "OPERATOR FAMILY "); + break; + case OBJECT_LARGEOBJECT: + appendStringInfoString(str, "LARGE OBJECT "); + break; + case OBJECT_CAST: + appendStringInfoString(str, "CAST "); + break; + default: + // No other cases are supported in the parser + Assert(false); + break; + } + + switch (comment_stmt->objtype) + { + case OBJECT_COLUMN: + case OBJECT_INDEX: + case OBJECT_SEQUENCE: + case OBJECT_STATISTIC_EXT: + case OBJECT_TABLE: + case OBJECT_VIEW: + case OBJECT_MATVIEW: + case OBJECT_COLLATION: + case OBJECT_CONVERSION: + case OBJECT_FOREIGN_TABLE: + case OBJECT_TSCONFIGURATION: + case OBJECT_TSDICTIONARY: + case OBJECT_TSPARSER: + case OBJECT_TSTEMPLATE: + deparseAnyName(str, castNode(List, comment_stmt->object)); + break; + case OBJECT_ACCESS_METHOD: + case OBJECT_DATABASE: + case OBJECT_EVENT_TRIGGER: + case OBJECT_EXTENSION: + case OBJECT_FDW: + case OBJECT_LANGUAGE: + case OBJECT_PUBLICATION: + case OBJECT_ROLE: + case OBJECT_SCHEMA: + case OBJECT_FOREIGN_SERVER: + case OBJECT_SUBSCRIPTION: + case OBJECT_TABLESPACE: + appendStringInfoString(str, quote_identifier(strVal(comment_stmt->object))); + break; + case OBJECT_TYPE: + case OBJECT_DOMAIN: + deparseTypeName(str, castNode(TypeName, comment_stmt->object)); + break; + case OBJECT_AGGREGATE: + deparseAggregateWithArgtypes(str, castNode(ObjectWithArgs, comment_stmt->object)); + break; + case OBJECT_FUNCTION: + case OBJECT_PROCEDURE: + case OBJECT_ROUTINE: + deparseFunctionWithArgtypes(str, castNode(ObjectWithArgs, comment_stmt->object)); + break; + case OBJECT_OPERATOR: + deparseOperatorWithArgtypes(str, castNode(ObjectWithArgs, comment_stmt->object)); + break; + case OBJECT_TABCONSTRAINT: + case OBJECT_POLICY: + case OBJECT_RULE: + case OBJECT_TRIGGER: + l = castNode(List, comment_stmt->object); + appendStringInfoString(str, quote_identifier(strVal(llast(l)))); + appendStringInfoString(str, " ON "); + deparseAnyNameSkipLast(str, l); + break; + case OBJECT_DOMCONSTRAINT: + l = castNode(List, comment_stmt->object); + appendStringInfoString(str, quote_identifier(strVal(llast(l)))); + appendStringInfoString(str, " ON DOMAIN "); + deparseTypeName(str, linitial(l)); + break; + case OBJECT_TRANSFORM: + l = castNode(List, comment_stmt->object); + appendStringInfoString(str, "FOR "); + deparseTypeName(str, castNode(TypeName, linitial(l))); + appendStringInfoString(str, " LANGUAGE "); + appendStringInfoString(str, quote_identifier(strVal(lsecond(l)))); + break; + case OBJECT_OPCLASS: + case OBJECT_OPFAMILY: + l = castNode(List, comment_stmt->object); + deparseAnyNameSkipFirst(str, l); + appendStringInfoString(str, " USING "); + appendStringInfoString(str, quote_identifier(strVal(linitial(l)))); + break; + case OBJECT_LARGEOBJECT: + deparseValue(str, (Value *) comment_stmt->object, DEPARSE_NODE_CONTEXT_NONE); + break; + case OBJECT_CAST: + l = castNode(List, comment_stmt->object); + appendStringInfoChar(str, '('); + deparseTypeName(str, castNode(TypeName, linitial(l))); + appendStringInfoString(str, " AS "); + deparseTypeName(str, castNode(TypeName, lsecond(l))); + appendStringInfoChar(str, ')'); + break; + default: + // No other cases are supported in the parser + Assert(false); + break; + } + + appendStringInfoString(str, " IS "); + + if (comment_stmt->comment != NULL) + deparseStringLiteral(str, comment_stmt->comment); + else + appendStringInfoString(str, "NULL"); +} + +static void deparseCreateStatsStmt(StringInfo str, CreateStatsStmt *create_stats_stmt) +{ + ListCell *lc; + + appendStringInfoString(str, "CREATE STATISTICS "); + + if (create_stats_stmt->if_not_exists) + appendStringInfoString(str, "IF NOT EXISTS "); + + deparseAnyName(str, create_stats_stmt->defnames); + appendStringInfoChar(str, ' '); + + if (list_length(create_stats_stmt->stat_types) > 0) + { + appendStringInfoChar(str, '('); + deparseNameList(str, create_stats_stmt->stat_types); + appendStringInfoString(str, ") "); + } + + appendStringInfoString(str, "ON "); + deparseExprList(str, create_stats_stmt->exprs); + + appendStringInfoString(str, " FROM "); + deparseFromList(str, create_stats_stmt->relations); +} + +static void deparseAlterCollationStmt(StringInfo str, AlterCollationStmt *alter_collation_stmt) +{ + appendStringInfoString(str, "ALTER COLLATION "); + deparseAnyName(str, alter_collation_stmt->collname); + appendStringInfoString(str, " REFRESH VERSION"); +} + +static void deparseAlterDatabaseStmt(StringInfo str, AlterDatabaseStmt *alter_database_stmt) +{ + appendStringInfoString(str, "ALTER DATABASE "); + deparseColId(str, alter_database_stmt->dbname); + appendStringInfoChar(str, ' '); + deparseCreatedbOptList(str, alter_database_stmt->options); + removeTrailingSpace(str); +} + +static void deparseAlterDatabaseSetStmt(StringInfo str, AlterDatabaseSetStmt *alter_database_set_stmt) +{ + appendStringInfoString(str, "ALTER DATABASE "); + deparseColId(str, alter_database_set_stmt->dbname); + appendStringInfoChar(str, ' '); + deparseVariableSetStmt(str, alter_database_set_stmt->setstmt); +} + +static void deparseAlterStatsStmt(StringInfo str, AlterStatsStmt *alter_stats_stmt) +{ + appendStringInfoString(str, "ALTER STATISTICS "); + + if (alter_stats_stmt->missing_ok) + appendStringInfoString(str, "IF EXISTS "); + + deparseAnyName(str, alter_stats_stmt->defnames); + appendStringInfoChar(str, ' '); + + appendStringInfo(str, "SET STATISTICS %d", alter_stats_stmt->stxstattarget); +} + +static void deparseAlterTSDictionaryStmt(StringInfo str, AlterTSDictionaryStmt *alter_ts_dictionary_stmt) +{ + appendStringInfoString(str, "ALTER TEXT SEARCH DICTIONARY "); + + deparseAnyName(str, alter_ts_dictionary_stmt->dictname); + appendStringInfoChar(str, ' '); + + deparseDefinition(str, alter_ts_dictionary_stmt->options); +} + +static void deparseAlterTSConfigurationStmt(StringInfo str, AlterTSConfigurationStmt *alter_ts_configuration_stmt) +{ + ListCell *lc = NULL; + + appendStringInfoString(str, "ALTER TEXT SEARCH CONFIGURATION "); + deparseAnyName(str, alter_ts_configuration_stmt->cfgname); + appendStringInfoChar(str, ' '); + + switch (alter_ts_configuration_stmt->kind) + { + case ALTER_TSCONFIG_ADD_MAPPING: + appendStringInfoString(str, "ADD MAPPING FOR "); + deparseNameList(str, alter_ts_configuration_stmt->tokentype); + appendStringInfoString(str, " WITH "); + deparseAnyNameList(str, alter_ts_configuration_stmt->dicts); + break; + case ALTER_TSCONFIG_ALTER_MAPPING_FOR_TOKEN: + appendStringInfoString(str, "ALTER MAPPING FOR "); + deparseNameList(str, alter_ts_configuration_stmt->tokentype); + appendStringInfoString(str, " WITH "); + deparseAnyNameList(str, alter_ts_configuration_stmt->dicts); + break; + case ALTER_TSCONFIG_REPLACE_DICT: + appendStringInfoString(str, "ALTER MAPPING REPLACE "); + deparseAnyName(str, linitial(alter_ts_configuration_stmt->dicts)); + appendStringInfoString(str, " WITH "); + deparseAnyName(str, lsecond(alter_ts_configuration_stmt->dicts)); + break; + case ALTER_TSCONFIG_REPLACE_DICT_FOR_TOKEN: + appendStringInfoString(str, "ALTER MAPPING FOR "); + deparseNameList(str, alter_ts_configuration_stmt->tokentype); + appendStringInfoString(str, " REPLACE "); + deparseAnyName(str, linitial(alter_ts_configuration_stmt->dicts)); + appendStringInfoString(str, " WITH "); + deparseAnyName(str, lsecond(alter_ts_configuration_stmt->dicts)); + break; + case ALTER_TSCONFIG_DROP_MAPPING: + appendStringInfoString(str, "DROP MAPPING "); + if (alter_ts_configuration_stmt->missing_ok) + appendStringInfoString(str, "IF EXISTS "); + appendStringInfoString(str, "FOR "); + deparseNameList(str, alter_ts_configuration_stmt->tokentype); + break; + } +} + +static void deparseVariableShowStmt(StringInfo str, VariableShowStmt *variable_show_stmt) +{ + appendStringInfoString(str, "SHOW "); + + if (strcmp(variable_show_stmt->name, "timezone") == 0) + appendStringInfoString(str, "TIME ZONE"); + else if (strcmp(variable_show_stmt->name, "transaction_isolation") == 0) + appendStringInfoString(str, "TRANSACTION ISOLATION LEVEL"); + else if (strcmp(variable_show_stmt->name, "session_authorization") == 0) + appendStringInfoString(str, "SESSION AUTHORIZATION"); + else if (strcmp(variable_show_stmt->name, "all") == 0) + appendStringInfoString(str, "SESSION ALL"); + else + appendStringInfoString(str, variable_show_stmt->name); +} + +static void deparseRangeTableSample(StringInfo str, RangeTableSample *range_table_sample) +{ + deparseRangeVar(str, castNode(RangeVar, range_table_sample->relation), DEPARSE_NODE_CONTEXT_NONE); + + appendStringInfoString(str, " TABLESAMPLE "); + + deparseFuncName(str, range_table_sample->method); + appendStringInfoChar(str, '('); + deparseExprList(str, range_table_sample->args); + appendStringInfoString(str, ") "); + + if (range_table_sample->repeatable != NULL) + { + appendStringInfoString(str, "REPEATABLE ("); + deparseExpr(str, range_table_sample->repeatable); + appendStringInfoString(str, ") "); + } + + removeTrailingSpace(str); +} + +static void deparseCreateSubscriptionStmt(StringInfo str, CreateSubscriptionStmt *create_subscription_stmt) +{ + ListCell *lc; + + appendStringInfoString(str, "CREATE SUBSCRIPTION "); + appendStringInfoString(str, quote_identifier(create_subscription_stmt->subname)); + + appendStringInfoString(str, " CONNECTION "); + if (create_subscription_stmt->conninfo != NULL) + deparseStringLiteral(str, create_subscription_stmt->conninfo); + else + appendStringInfoString(str, "''"); + + appendStringInfoString(str, " PUBLICATION "); + + foreach(lc, create_subscription_stmt->publication) + { + deparseColLabel(str, strVal(lfirst(lc))); + if (lnext(create_subscription_stmt->publication, lc)) + appendStringInfoString(str, ", "); + } + appendStringInfoChar(str, ' '); + + deparseOptDefinition(str, create_subscription_stmt->options); + removeTrailingSpace(str); +} + +static void deparseAlterSubscriptionStmt(StringInfo str, AlterSubscriptionStmt *alter_subscription_stmt) +{ + ListCell *lc; + + appendStringInfoString(str, "ALTER SUBSCRIPTION "); + appendStringInfoString(str, quote_identifier(alter_subscription_stmt->subname)); + appendStringInfoChar(str, ' '); + + switch (alter_subscription_stmt->kind) + { + case ALTER_SUBSCRIPTION_OPTIONS: + appendStringInfoString(str, "SET "); + deparseDefinition(str, alter_subscription_stmt->options); + break; + case ALTER_SUBSCRIPTION_CONNECTION: + appendStringInfoString(str, "CONNECTION "); + deparseStringLiteral(str, alter_subscription_stmt->conninfo); + appendStringInfoChar(str, ' '); + break; + case ALTER_SUBSCRIPTION_REFRESH: + appendStringInfoString(str, "REFRESH PUBLICATION "); + deparseOptDefinition(str, alter_subscription_stmt->options); + break; + case ALTER_SUBSCRIPTION_PUBLICATION: + appendStringInfoString(str, "SET PUBLICATION "); + foreach(lc, alter_subscription_stmt->publication) + { + deparseColLabel(str, strVal(lfirst(lc))); + if (lnext(alter_subscription_stmt->publication, lc)) + appendStringInfoString(str, ", "); + } + appendStringInfoChar(str, ' '); + deparseOptDefinition(str, alter_subscription_stmt->options); + break; + case ALTER_SUBSCRIPTION_ENABLED: + Assert(list_length(alter_subscription_stmt->options) == 1); + DefElem *defelem = castNode(DefElem, linitial(alter_subscription_stmt->options)); + Assert(strcmp(defelem->defname, "enabled") == 0); + if (intVal(defelem->arg) == 1) + { + appendStringInfoString(str, " ENABLE "); + } + else if (intVal(defelem->arg) == 0) + { + appendStringInfoString(str, " DISABLE "); + } + else + { + Assert(false); + } + break; + } + + removeTrailingSpace(str); +} + +static void deparseDropSubscriptionStmt(StringInfo str, DropSubscriptionStmt *drop_subscription_stmt) +{ + appendStringInfoString(str, "DROP SUBSCRIPTION "); + + if (drop_subscription_stmt->missing_ok) + appendStringInfoString(str, "IF EXISTS "); + + appendStringInfoString(str, drop_subscription_stmt->subname); +} + +static void deparseCallStmt(StringInfo str, CallStmt *call_stmt) +{ + appendStringInfoString(str, "CALL "); + deparseFuncCall(str, call_stmt->funccall); +} + +static void deparseAlterOwnerStmt(StringInfo str, AlterOwnerStmt *alter_owner_stmt) +{ + List *l = NULL; + + appendStringInfoString(str, "ALTER "); + + switch (alter_owner_stmt->objectType) + { + case OBJECT_AGGREGATE: + appendStringInfoString(str, "AGGREGATE "); + deparseAggregateWithArgtypes(str, castNode(ObjectWithArgs, alter_owner_stmt->object)); + break; + case OBJECT_COLLATION: + appendStringInfoString(str, "COLLATION "); + deparseAnyName(str, castNode(List, alter_owner_stmt->object)); + break; + case OBJECT_CONVERSION: + appendStringInfoString(str, "CONVERSION "); + deparseAnyName(str, castNode(List, alter_owner_stmt->object)); + break; + case OBJECT_DATABASE: + appendStringInfoString(str, "DATABASE "); + deparseColId(str, strVal(alter_owner_stmt->object)); + break; + case OBJECT_DOMAIN: + appendStringInfoString(str, "DOMAIN "); + deparseAnyName(str, castNode(List, alter_owner_stmt->object)); + break; + case OBJECT_FUNCTION: + appendStringInfoString(str, "FUNCTION "); + deparseFunctionWithArgtypes(str, castNode(ObjectWithArgs, alter_owner_stmt->object)); + break; + case OBJECT_LANGUAGE: + appendStringInfoString(str, "LANGUAGE "); + deparseColId(str, strVal(alter_owner_stmt->object)); + break; + case OBJECT_LARGEOBJECT: + appendStringInfoString(str, "LARGE OBJECT "); + deparseNumericOnly(str, (Value *) alter_owner_stmt->object); + break; + case OBJECT_OPERATOR: + appendStringInfoString(str, "OPERATOR "); + deparseOperatorWithArgtypes(str, castNode(ObjectWithArgs, alter_owner_stmt->object)); + break; + case OBJECT_OPCLASS: + l = castNode(List, alter_owner_stmt->object); + appendStringInfoString(str, "OPERATOR CLASS "); + deparseAnyNameSkipFirst(str, l); + appendStringInfoString(str, " USING "); + deparseColId(str, strVal(linitial(l))); + break; + case OBJECT_OPFAMILY: + l = castNode(List, alter_owner_stmt->object); + appendStringInfoString(str, "OPERATOR FAMILY "); + deparseAnyNameSkipFirst(str, l); + appendStringInfoString(str, " USING "); + deparseColId(str, strVal(linitial(l))); + break; + case OBJECT_PROCEDURE: + appendStringInfoString(str, "PROCEDURE "); + deparseFunctionWithArgtypes(str, castNode(ObjectWithArgs, alter_owner_stmt->object)); + break; + case OBJECT_ROUTINE: + appendStringInfoString(str, "ROUTINE "); + deparseFunctionWithArgtypes(str, castNode(ObjectWithArgs, alter_owner_stmt->object)); + break; + case OBJECT_SCHEMA: + appendStringInfoString(str, "SCHEMA "); + deparseColId(str, strVal(alter_owner_stmt->object)); + break; + case OBJECT_TYPE: + appendStringInfoString(str, "TYPE "); + deparseAnyName(str, castNode(List, alter_owner_stmt->object)); + break; + case OBJECT_TABLESPACE: + appendStringInfoString(str, "TABLESPACE "); + deparseColId(str, strVal(alter_owner_stmt->object)); + break; + case OBJECT_STATISTIC_EXT: + appendStringInfoString(str, "STATISTICS "); + deparseAnyName(str, castNode(List, alter_owner_stmt->object)); + break; + case OBJECT_TSDICTIONARY: + appendStringInfoString(str, "TEXT SEARCH DICTIONARY "); + deparseAnyName(str, castNode(List, alter_owner_stmt->object)); + break; + case OBJECT_TSCONFIGURATION: + appendStringInfoString(str, "TEXT SEARCH CONFIGURATION "); + deparseAnyName(str, castNode(List, alter_owner_stmt->object)); + break; + case OBJECT_FDW: + appendStringInfoString(str, "FOREIGN DATA WRAPPER "); + deparseColId(str, strVal(alter_owner_stmt->object)); + break; + case OBJECT_FOREIGN_SERVER: + appendStringInfoString(str, "SERVER "); + deparseColId(str, strVal(alter_owner_stmt->object)); + break; + case OBJECT_EVENT_TRIGGER: + appendStringInfoString(str, "EVENT TRIGGER "); + deparseColId(str, strVal(alter_owner_stmt->object)); + break; + case OBJECT_PUBLICATION: + appendStringInfoString(str, "PUBLICATION "); + deparseColId(str, strVal(alter_owner_stmt->object)); + break; + case OBJECT_SUBSCRIPTION: + appendStringInfoString(str, "SUBSCRIPTION "); + deparseColId(str, strVal(alter_owner_stmt->object)); + break; + default: + Assert(false); + } + + appendStringInfoString(str, " OWNER TO "); + deparseRoleSpec(str, alter_owner_stmt->newowner); +} + +// "operator_def_list" in gram.y +static void deparseOperatorDefList(StringInfo str, List *defs) +{ + ListCell *lc = NULL; + + foreach (lc, defs) + { + DefElem *def_elem = castNode(DefElem, lfirst(lc)); + appendStringInfoString(str, quote_identifier(def_elem->defname)); + appendStringInfoString(str, " = "); + if (def_elem->arg != NULL) + deparseDefArg(str, def_elem->arg, true); + else + appendStringInfoString(str, "NONE"); + + if (lnext(defs, lc)) + appendStringInfoString(str, ", "); + } +} + +static void deparseAlterOperatorStmt(StringInfo str, AlterOperatorStmt *alter_operator_stmt) +{ + appendStringInfoString(str, "ALTER OPERATOR "); + deparseOperatorWithArgtypes(str, alter_operator_stmt->opername); + appendStringInfoString(str, " SET ("); + deparseOperatorDefList(str, alter_operator_stmt->options); + appendStringInfoChar(str, ')'); +} + +static void deparseAlterTypeStmt(StringInfo str, AlterTypeStmt *alter_type_stmt) +{ + appendStringInfoString(str, "ALTER TYPE "); + deparseAnyName(str, alter_type_stmt->typeName); + appendStringInfoString(str, " SET ("); + deparseOperatorDefList(str, alter_type_stmt->options); + appendStringInfoChar(str, ')'); +} + +static void deparseDropOwnedStmt(StringInfo str, DropOwnedStmt *drop_owned_stmt) +{ + appendStringInfoString(str, "DROP OWNED BY "); + deparseRoleList(str, drop_owned_stmt->roles); + appendStringInfoChar(str, ' '); + deparseOptDropBehavior(str, drop_owned_stmt->behavior); + removeTrailingSpace(str); +} + +static void deparseReassignOwnedStmt(StringInfo str, ReassignOwnedStmt *reassigned_owned_stmt) +{ + appendStringInfoString(str, "REASSIGN OWNED BY "); + + deparseRoleList(str, reassigned_owned_stmt->roles); + appendStringInfoChar(str, ' '); + + appendStringInfoString(str, "TO "); + deparseRoleSpec(str, reassigned_owned_stmt->newrole); +} + +static void deparseClosePortalStmt(StringInfo str, ClosePortalStmt *close_portal_stmt) +{ + appendStringInfoString(str, "CLOSE "); + if (close_portal_stmt->portalname != NULL) + { + appendStringInfoString(str, quote_identifier(close_portal_stmt->portalname)); + } + else + { + appendStringInfoString(str, "ALL"); + } +} + +static void deparseCurrentOfExpr(StringInfo str, CurrentOfExpr *current_of_expr) +{ + appendStringInfoString(str, "CURRENT OF "); + appendStringInfoString(str, quote_identifier(current_of_expr->cursor_name)); +} + +static void deparseCreateTrigStmt(StringInfo str, CreateTrigStmt *create_trig_stmt) +{ + ListCell *lc; + bool skip_events_or = true; + + appendStringInfoString(str, "CREATE "); + if (create_trig_stmt->isconstraint) + appendStringInfoString(str, "CONSTRAINT "); + appendStringInfoString(str, "TRIGGER "); + + appendStringInfoString(str, quote_identifier(create_trig_stmt->trigname)); + appendStringInfoChar(str, ' '); + + switch (create_trig_stmt->timing) + { + case TRIGGER_TYPE_BEFORE: + appendStringInfoString(str, "BEFORE "); + break; + case TRIGGER_TYPE_AFTER: + appendStringInfoString(str, "AFTER "); + break; + case TRIGGER_TYPE_INSTEAD: + appendStringInfoString(str, "INSTEAD OF "); + break; + default: + Assert(false); + } + + if (TRIGGER_FOR_INSERT(create_trig_stmt->events)) + { + appendStringInfoString(str, "INSERT "); + skip_events_or = false; + } + if (TRIGGER_FOR_DELETE(create_trig_stmt->events)) + { + if (!skip_events_or) + appendStringInfoString(str, "OR "); + appendStringInfoString(str, "DELETE "); + skip_events_or = false; + } + if (TRIGGER_FOR_UPDATE(create_trig_stmt->events)) + { + if (!skip_events_or) + appendStringInfoString(str, "OR "); + appendStringInfoString(str, "UPDATE "); + if (list_length(create_trig_stmt->columns) > 0) + { + appendStringInfoString(str, "OF "); + deparseColumnList(str, create_trig_stmt->columns); + appendStringInfoChar(str, ' '); + } + skip_events_or = false; + } + if (TRIGGER_FOR_TRUNCATE(create_trig_stmt->events)) + { + if (!skip_events_or) + appendStringInfoString(str, "OR "); + appendStringInfoString(str, "TRUNCATE "); + } + + appendStringInfoString(str, "ON "); + deparseRangeVar(str, create_trig_stmt->relation, DEPARSE_NODE_CONTEXT_NONE); + appendStringInfoChar(str, ' '); + + if (create_trig_stmt->transitionRels != NULL) + { + appendStringInfoString(str, "REFERENCING "); + foreach(lc, create_trig_stmt->transitionRels) + { + deparseTriggerTransition(str, castNode(TriggerTransition, lfirst(lc))); + appendStringInfoChar(str, ' '); + } + } + + if (create_trig_stmt->constrrel != NULL) + { + appendStringInfoString(str, "FROM "); + deparseRangeVar(str, create_trig_stmt->constrrel, DEPARSE_NODE_CONTEXT_NONE); + appendStringInfoChar(str, ' '); + } + + if (create_trig_stmt->deferrable) + appendStringInfoString(str, "DEFERRABLE "); + + if (create_trig_stmt->initdeferred) + appendStringInfoString(str, "INITIALLY DEFERRED "); + + if (create_trig_stmt->row) + appendStringInfoString(str, "FOR EACH ROW "); + + if (create_trig_stmt->whenClause) + { + appendStringInfoString(str, "WHEN ("); + deparseExpr(str, create_trig_stmt->whenClause); + appendStringInfoString(str, ") "); + } + + appendStringInfoString(str, "EXECUTE FUNCTION "); + deparseFuncName(str, create_trig_stmt->funcname); + appendStringInfoChar(str, '('); + foreach(lc, create_trig_stmt->args) + { + deparseStringLiteral(str, strVal(lfirst(lc))); + if (lnext(create_trig_stmt->args, lc)) + appendStringInfoString(str, ", "); + } + appendStringInfoChar(str, ')'); +} + +static void deparseTriggerTransition(StringInfo str, TriggerTransition *trigger_transition) +{ + if (trigger_transition->isNew) + appendStringInfoString(str, "NEW "); + else + appendStringInfoString(str, "OLD "); + + if (trigger_transition->isTable) + appendStringInfoString(str, "TABLE "); + else + appendStringInfoString(str, "ROW "); + + appendStringInfoString(str, quote_identifier(trigger_transition->name)); +} + +static void deparseXmlExpr(StringInfo str, XmlExpr* xml_expr) +{ + switch (xml_expr->op) + { + case IS_XMLCONCAT: /* XMLCONCAT(args) */ + appendStringInfoString(str, "xmlconcat("); + deparseExprList(str, xml_expr->args); + appendStringInfoChar(str, ')'); + break; + case IS_XMLELEMENT: /* XMLELEMENT(name, xml_attributes, args) */ + appendStringInfoString(str, "xmlelement(name "); + appendStringInfoString(str, quote_identifier(xml_expr->name)); + if (xml_expr->named_args != NULL) + { + appendStringInfoString(str, ", xmlattributes("); + deparseXmlAttributeList(str, xml_expr->named_args); + appendStringInfoString(str, ")"); + } + if (xml_expr->args != NULL) + { + appendStringInfoString(str, ", "); + deparseExprList(str, xml_expr->args); + } + appendStringInfoString(str, ")"); + break; + case IS_XMLFOREST: /* XMLFOREST(xml_attributes) */ + appendStringInfoString(str, "xmlforest("); + deparseXmlAttributeList(str, xml_expr->named_args); + appendStringInfoChar(str, ')'); + break; + case IS_XMLPARSE: /* XMLPARSE(text, is_doc, preserve_ws) */ + Assert(list_length(xml_expr->args) == 2); + appendStringInfoString(str, "xmlparse("); + switch (xml_expr->xmloption) + { + case XMLOPTION_DOCUMENT: + appendStringInfoString(str, "document "); + break; + case XMLOPTION_CONTENT: + appendStringInfoString(str, "content "); + break; + default: + Assert(false); + } + deparseExpr(str, linitial(xml_expr->args)); + if (strcmp(strVal(&castNode(A_Const, castNode(TypeCast, lsecond(xml_expr->args))->arg)->val), "t") == 0) + appendStringInfoString(str, " PRESERVE WHITESPACE"); + appendStringInfoChar(str, ')'); + break; + case IS_XMLPI: /* XMLPI(name [, args]) */ + appendStringInfoString(str, "xmlpi(name "); + appendStringInfoString(str, quote_identifier(xml_expr->name)); + if (xml_expr->args != NULL) + { + appendStringInfoString(str, ", "); + deparseExpr(str, linitial(xml_expr->args)); + } + appendStringInfoChar(str, ')'); + break; + case IS_XMLROOT: /* XMLROOT(xml, version, standalone) */ + appendStringInfoString(str, "xmlroot("); + deparseExpr(str, linitial(xml_expr->args)); + appendStringInfoString(str, ", version "); + if (nodeTag(&castNode(A_Const, lsecond(xml_expr->args))->val) == T_Null) + appendStringInfoString(str, "NO VALUE"); + else + deparseExpr(str, lsecond(xml_expr->args)); + if (intVal(&castNode(A_Const, lthird(xml_expr->args))->val) == XML_STANDALONE_YES) + appendStringInfoString(str, ", STANDALONE YES"); + else if (intVal(&castNode(A_Const, lthird(xml_expr->args))->val) == XML_STANDALONE_NO) + appendStringInfoString(str, ", STANDALONE NO"); + else if (intVal(&castNode(A_Const, lthird(xml_expr->args))->val) == XML_STANDALONE_NO_VALUE) + appendStringInfoString(str, ", STANDALONE NO VALUE"); + appendStringInfoChar(str, ')'); + break; + case IS_XMLSERIALIZE: /* XMLSERIALIZE(is_document, xmlval) */ + // These are represented as XmlSerialize in raw parse trees + Assert(false); + break; + case IS_DOCUMENT: /* xmlval IS DOCUMENT */ + Assert(list_length(xml_expr->args) == 1); + deparseExpr(str, linitial(xml_expr->args)); + appendStringInfoString(str, " IS DOCUMENT"); + break; + } +} + +static void deparseRangeTableFuncCol(StringInfo str, RangeTableFuncCol* range_table_func_col) +{ + appendStringInfoString(str, quote_identifier(range_table_func_col->colname)); + appendStringInfoChar(str, ' '); + + if (range_table_func_col->for_ordinality) + { + appendStringInfoString(str, "FOR ORDINALITY "); + } + else + { + deparseTypeName(str, range_table_func_col->typeName); + appendStringInfoChar(str, ' '); + + if (range_table_func_col->colexpr) + { + appendStringInfoString(str, "PATH "); + deparseExpr(str, range_table_func_col->colexpr); + appendStringInfoChar(str, ' '); + } + + if (range_table_func_col->coldefexpr) + { + appendStringInfoString(str, "DEFAULT "); + deparseExpr(str, range_table_func_col->coldefexpr); + appendStringInfoChar(str, ' '); + } + + if (range_table_func_col->is_not_null) + appendStringInfoString(str, "NOT NULL "); + } + + removeTrailingSpace(str); +} + +static void deparseRangeTableFunc(StringInfo str, RangeTableFunc* range_table_func) +{ + ListCell *lc; + + if (range_table_func->lateral) + appendStringInfoString(str, "LATERAL "); + + appendStringInfoString(str, "xmltable("); + if (range_table_func->namespaces) + { + appendStringInfoString(str, "xmlnamespaces("); + deparseXmlNamespaceList(str, range_table_func->namespaces); + appendStringInfoString(str, "), "); + } + + appendStringInfoChar(str, '('); + deparseExpr(str, range_table_func->rowexpr); + appendStringInfoChar(str, ')'); + + appendStringInfoString(str, " PASSING "); + deparseExpr(str, range_table_func->docexpr); + + appendStringInfoString(str, " COLUMNS "); + foreach(lc, range_table_func->columns) + { + deparseRangeTableFuncCol(str, castNode(RangeTableFuncCol, lfirst(lc))); + if (lnext(range_table_func->columns, lc)) + appendStringInfoString(str, ", "); + } + + appendStringInfoString(str, ") "); + + if (range_table_func->alias) + { + appendStringInfoString(str, "AS "); + deparseAlias(str, range_table_func->alias); + } + + removeTrailingSpace(str); +} + +static void deparseXmlSerialize(StringInfo str, XmlSerialize *xml_serialize) +{ + appendStringInfoString(str, "xmlserialize("); + switch (xml_serialize->xmloption) + { + case XMLOPTION_DOCUMENT: + appendStringInfoString(str, "document "); + break; + case XMLOPTION_CONTENT: + appendStringInfoString(str, "content "); + break; + default: + Assert(false); + } + deparseExpr(str, xml_serialize->expr); + appendStringInfoString(str, " AS "); + deparseTypeName(str, xml_serialize->typeName); + appendStringInfoString(str, ")"); +} + +static void deparseGroupingFunc(StringInfo str, GroupingFunc *grouping_func) +{ + appendStringInfoString(str, "GROUPING("); + deparseExprList(str, grouping_func->args); + appendStringInfoChar(str, ')'); +} + +static void deparseClusterStmt(StringInfo str, ClusterStmt *cluster_stmt) +{ + appendStringInfoString(str, "CLUSTER "); + if (cluster_stmt->options & CLUOPT_VERBOSE) + appendStringInfoString(str, "VERBOSE "); + + if (cluster_stmt->relation != NULL) + { + deparseRangeVar(str, cluster_stmt->relation, DEPARSE_NODE_CONTEXT_NONE); + appendStringInfoChar(str, ' '); + } + + if (cluster_stmt->indexname != NULL) + { + appendStringInfoString(str, "USING "); + appendStringInfoString(str, quote_identifier(cluster_stmt->indexname)); + appendStringInfoChar(str, ' '); + } + + removeTrailingSpace(str); +} + +static void deparseValue(StringInfo str, Value *value, DeparseNodeContext context) +{ + switch (nodeTag(value)) + { + case T_Integer: + case T_Float: + deparseNumericOnly(str, value); + break; + case T_String: + if (context == DEPARSE_NODE_CONTEXT_IDENTIFIER) { + appendStringInfoString(str, quote_identifier(value->val.str)); + } else if (context == DEPARSE_NODE_CONTEXT_CONSTANT) { + deparseStringLiteral(str, value->val.str); + } else { + appendStringInfoString(str, value->val.str); + } + break; + case T_BitString: + if (strlen(value->val.str) >= 1 && value->val.str[0] == 'x') + { + appendStringInfoChar(str, 'x'); + deparseStringLiteral(str, value->val.str + 1); + } + else if (strlen(value->val.str) >= 1 && value->val.str[0] == 'b') + { + appendStringInfoChar(str, 'b'); + deparseStringLiteral(str, value->val.str + 1); + } + else + { + Assert(false); + } + break; + case T_Null: + appendStringInfoString(str, "NULL"); + break; + default: + elog(ERROR, "unrecognized value node type: %d", + (int) nodeTag(value)); + break; + } +} + +// "PrepareableStmt" in gram.y +static void deparsePreparableStmt(StringInfo str, Node *node) +{ + switch (nodeTag(node)) + { + case T_SelectStmt: + deparseSelectStmt(str, castNode(SelectStmt, node)); + break; + case T_InsertStmt: + deparseInsertStmt(str, castNode(InsertStmt, node)); + break; + case T_UpdateStmt: + deparseUpdateStmt(str, castNode(UpdateStmt, node)); + break; + case T_DeleteStmt: + deparseDeleteStmt(str, castNode(DeleteStmt, node)); + break; + default: + Assert(false); + } +} + +// "RuleActionStmt" in gram.y +static void deparseRuleActionStmt(StringInfo str, Node *node) +{ + switch (nodeTag(node)) + { + case T_SelectStmt: + deparseSelectStmt(str, castNode(SelectStmt, node)); + break; + case T_InsertStmt: + deparseInsertStmt(str, castNode(InsertStmt, node)); + break; + case T_UpdateStmt: + deparseUpdateStmt(str, castNode(UpdateStmt, node)); + break; + case T_DeleteStmt: + deparseDeleteStmt(str, castNode(DeleteStmt, node)); + break; + case T_NotifyStmt: + deparseNotifyStmt(str, castNode(NotifyStmt, node)); + break; + default: + Assert(false); + } +} + +// "ExplainableStmt" in gram.y +static void deparseExplainableStmt(StringInfo str, Node *node) +{ + switch (nodeTag(node)) + { + case T_SelectStmt: + deparseSelectStmt(str, castNode(SelectStmt, node)); + break; + case T_InsertStmt: + deparseInsertStmt(str, castNode(InsertStmt, node)); + break; + case T_UpdateStmt: + deparseUpdateStmt(str, castNode(UpdateStmt, node)); + break; + case T_DeleteStmt: + deparseDeleteStmt(str, castNode(DeleteStmt, node)); + break; + case T_DeclareCursorStmt: + deparseDeclareCursorStmt(str, castNode(DeclareCursorStmt, node)); + break; + case T_CreateTableAsStmt: + deparseCreateTableAsStmt(str, castNode(CreateTableAsStmt, node)); + break; + case T_RefreshMatViewStmt: + deparseRefreshMatViewStmt(str, castNode(RefreshMatViewStmt, node)); + break; + case T_ExecuteStmt: + deparseExecuteStmt(str, castNode(ExecuteStmt, node)); + break; + default: + Assert(false); + } +} + +// "schema_stmt" in gram.y +static void deparseSchemaStmt(StringInfo str, Node *node) +{ + switch (nodeTag(node)) + { + case T_CreateStmt: + deparseCreateStmt(str, castNode(CreateStmt, node), false); + break; + case T_IndexStmt: + deparseIndexStmt(str, castNode(IndexStmt, node)); + break; + case T_CreateSeqStmt: + deparseCreateSeqStmt(str, castNode(CreateSeqStmt, node)); + break; + case T_CreateTrigStmt: + deparseCreateTrigStmt(str, castNode(CreateTrigStmt, node)); + break; + case T_GrantStmt: + deparseGrantStmt(str, castNode(GrantStmt, node)); + break; + case T_ViewStmt: + deparseViewStmt(str, castNode(ViewStmt, node)); + break; + default: + Assert(false); + } +} + +// "stmt" in gram.y +static void deparseStmt(StringInfo str, Node *node) +{ + // Note the following grammar names are missing in the list, because they + // get mapped to other node types: + // + // - AlterForeignTableStmt (=> AlterTableStmt) + // - AlterGroupStmt (=> AlterRoleStmt) + // - AlterCompositeTypeStmt (=> AlterTableStmt) + // - AnalyzeStmt (=> VacuumStmt) + // - CreateGroupStmt (=> CreateRoleStmt) + // - CreateMatViewStmt (=> CreateTableAsStmt) + // - CreateUserStmt (=> CreateRoleStmt) + // - DropCastStmt (=> DropStmt) + // - DropOpClassStmt (=> DropStmt) + // - DropOpFamilyStmt (=> DropStmt) + // - DropPLangStmt (=> DropPLangStmt) + // - DropTransformStmt (=> DropStmt) + // - RemoveAggrStmt (=> DropStmt) + // - RemoveFuncStmt (=> DropStmt) + // - RemoveOperStmt (=> DropStmt) + // - RevokeStmt (=> GrantStmt) + // - RevokeRoleStmt (=> GrantRoleStmt) + // - VariableResetStmt (=> VariableSetStmt) + // + // And the following grammar names error out in the parser: + // - CreateAssertionStmt (not supported yet) + switch (nodeTag(node)) + { + case T_AlterEventTrigStmt: + deparseAlterEventTrigStmt(str, castNode(AlterEventTrigStmt, node)); + break; + case T_AlterCollationStmt: + deparseAlterCollationStmt(str, castNode(AlterCollationStmt, node)); + break; + case T_AlterDatabaseStmt: + deparseAlterDatabaseStmt(str, castNode(AlterDatabaseStmt, node)); + break; + case T_AlterDatabaseSetStmt: + deparseAlterDatabaseSetStmt(str, castNode(AlterDatabaseSetStmt, node)); + break; + case T_AlterDefaultPrivilegesStmt: + deparseAlterDefaultPrivilegesStmt(str, castNode(AlterDefaultPrivilegesStmt, node)); + break; + case T_AlterDomainStmt: + deparseAlterDomainStmt(str, castNode(AlterDomainStmt, node)); + break; + case T_AlterEnumStmt: + deparseAlterEnumStmt(str, castNode(AlterEnumStmt, node)); + break; + case T_AlterExtensionStmt: + deparseAlterExtensionStmt(str, castNode(AlterExtensionStmt, node)); + break; + case T_AlterExtensionContentsStmt: + deparseAlterExtensionContentsStmt(str, castNode(AlterExtensionContentsStmt, node)); + break; + case T_AlterFdwStmt: + deparseAlterFdwStmt(str, castNode(AlterFdwStmt, node)); + break; + case T_AlterForeignServerStmt: + deparseAlterForeignServerStmt(str, castNode(AlterForeignServerStmt, node)); + break; + case T_AlterFunctionStmt: + deparseAlterFunctionStmt(str, castNode(AlterFunctionStmt, node)); + break; + case T_AlterObjectDependsStmt: + deparseAlterObjectDependsStmt(str, castNode(AlterObjectDependsStmt, node)); + break; + case T_AlterObjectSchemaStmt: + deparseAlterObjectSchemaStmt(str, castNode(AlterObjectSchemaStmt, node)); + break; + case T_AlterOwnerStmt: + deparseAlterOwnerStmt(str, castNode(AlterOwnerStmt, node)); + break; + case T_AlterOperatorStmt: + deparseAlterOperatorStmt(str, castNode(AlterOperatorStmt, node)); + break; + case T_AlterTypeStmt: + deparseAlterTypeStmt(str, castNode(AlterTypeStmt, node)); + break; + case T_AlterPolicyStmt: + deparseAlterPolicyStmt(str, castNode(AlterPolicyStmt, node)); + break; + case T_AlterSeqStmt: + deparseAlterSeqStmt(str, castNode(AlterSeqStmt, node)); + break; + case T_AlterSystemStmt: + deparseAlterSystemStmt(str, castNode(AlterSystemStmt, node)); + break; + case T_AlterTableStmt: + deparseAlterTableStmt(str, castNode(AlterTableStmt, node)); + break; + case T_AlterTableSpaceOptionsStmt: // "AlterTblSpcStmt" in gram.y + deparseAlterTableSpaceOptionsStmt(str, castNode(AlterTableSpaceOptionsStmt, node)); + break; + case T_AlterPublicationStmt: + deparseAlterPublicationStmt(str, castNode(AlterPublicationStmt, node)); + break; + case T_AlterRoleSetStmt: + deparseAlterRoleSetStmt(str, castNode(AlterRoleSetStmt, node)); + break; + case T_AlterRoleStmt: + deparseAlterRoleStmt(str, castNode(AlterRoleStmt, node)); + break; + case T_AlterSubscriptionStmt: + deparseAlterSubscriptionStmt(str, castNode(AlterSubscriptionStmt, node)); + break; + case T_AlterStatsStmt: + deparseAlterStatsStmt(str, castNode(AlterStatsStmt, node)); + break; + case T_AlterTSConfigurationStmt: + deparseAlterTSConfigurationStmt(str, castNode(AlterTSConfigurationStmt, node)); + break; + case T_AlterTSDictionaryStmt: + deparseAlterTSDictionaryStmt(str, castNode(AlterTSDictionaryStmt, node)); + break; + case T_AlterUserMappingStmt: + deparseAlterUserMappingStmt(str, castNode(AlterUserMappingStmt, node)); + break; + case T_CallStmt: + deparseCallStmt(str, castNode(CallStmt, node)); + break; + case T_CheckPointStmt: + deparseCheckPointStmt(str, castNode(CheckPointStmt, node)); + break; + case T_ClosePortalStmt: + deparseClosePortalStmt(str, castNode(ClosePortalStmt, node)); + break; + case T_ClusterStmt: + deparseClusterStmt(str, castNode(ClusterStmt, node)); + break; + case T_CommentStmt: + deparseCommentStmt(str, castNode(CommentStmt, node)); + break; + case T_ConstraintsSetStmt: + deparseConstraintsSetStmt(str, castNode(ConstraintsSetStmt, node)); + break; + case T_CopyStmt: + deparseCopyStmt(str, castNode(CopyStmt, node)); + break; + case T_CreateAmStmt: + deparseCreateAmStmt(str, castNode(CreateAmStmt, node)); + break; + case T_CreateTableAsStmt: // "CreateAsStmt" in gram.y + deparseCreateTableAsStmt(str, castNode(CreateTableAsStmt, node)); + break; + case T_CreateCastStmt: + deparseCreateCastStmt(str, castNode(CreateCastStmt, node)); + break; + case T_CreateConversionStmt: + deparseCreateConversionStmt(str, castNode(CreateConversionStmt, node)); + break; + case T_CreateDomainStmt: + deparseCreateDomainStmt(str, castNode(CreateDomainStmt, node)); + break; + case T_CreateExtensionStmt: + deparseCreateExtensionStmt(str, castNode(CreateExtensionStmt, node)); + break; + case T_CreateFdwStmt: + deparseCreateFdwStmt(str, castNode(CreateFdwStmt, node)); + break; + case T_CreateForeignServerStmt: + deparseCreateForeignServerStmt(str, castNode(CreateForeignServerStmt, node)); + break; + case T_CreateForeignTableStmt: + deparseCreateForeignTableStmt(str, castNode(CreateForeignTableStmt, node)); + break; + case T_CreateFunctionStmt: + deparseCreateFunctionStmt(str, castNode(CreateFunctionStmt, node)); + break; + case T_CreateOpClassStmt: + deparseCreateOpClassStmt(str, castNode(CreateOpClassStmt, node)); + break; + case T_CreateOpFamilyStmt: + deparseCreateOpFamilyStmt(str, castNode(CreateOpFamilyStmt, node)); + break; + case T_CreatePublicationStmt: + deparseCreatePublicationStmt(str, castNode(CreatePublicationStmt, node)); + break; + case T_AlterOpFamilyStmt: + deparseAlterOpFamilyStmt(str, castNode(AlterOpFamilyStmt, node)); + break; + case T_CreatePolicyStmt: + deparseCreatePolicyStmt(str, castNode(CreatePolicyStmt, node)); + break; + case T_CreatePLangStmt: + deparseCreatePLangStmt(str, castNode(CreatePLangStmt, node)); + break; + case T_CreateSchemaStmt: + deparseCreateSchemaStmt(str, castNode(CreateSchemaStmt, node)); + break; + case T_CreateSeqStmt: + deparseCreateSeqStmt(str, castNode(CreateSeqStmt, node)); + break; + case T_CreateStmt: + deparseCreateStmt(str, castNode(CreateStmt, node), false); + break; + case T_CreateSubscriptionStmt: + deparseCreateSubscriptionStmt(str, castNode(CreateSubscriptionStmt, node)); + break; + case T_CreateStatsStmt: + deparseCreateStatsStmt(str, castNode(CreateStatsStmt, node)); + break; + case T_CreateTableSpaceStmt: + deparseCreateTableSpaceStmt(str, castNode(CreateTableSpaceStmt, node)); + break; + case T_CreateTransformStmt: + deparseCreateTransformStmt(str, castNode(CreateTransformStmt, node)); + break; + case T_CreateTrigStmt: + deparseCreateTrigStmt(str, castNode(CreateTrigStmt, node)); + break; + case T_CreateEventTrigStmt: + deparseCreateEventTrigStmt(str, castNode(CreateEventTrigStmt, node)); + break; + case T_CreateRoleStmt: + deparseCreateRoleStmt(str, castNode(CreateRoleStmt, node)); + break; + case T_CreateUserMappingStmt: + deparseCreateUserMappingStmt(str, castNode(CreateUserMappingStmt, node)); + break; + case T_CreatedbStmt: + deparseCreatedbStmt(str, castNode(CreatedbStmt, node)); + break; + case T_DeallocateStmt: + deparseDeallocateStmt(str, castNode(DeallocateStmt, node)); + break; + case T_DeclareCursorStmt: + deparseDeclareCursorStmt(str, castNode(DeclareCursorStmt, node)); + break; + case T_DefineStmt: + deparseDefineStmt(str, castNode(DefineStmt, node)); + break; + case T_DeleteStmt: + deparseDeleteStmt(str, castNode(DeleteStmt, node)); + break; + case T_DiscardStmt: + deparseDiscardStmt(str, castNode(DiscardStmt, node)); + break; + case T_DoStmt: + deparseDoStmt(str, castNode(DoStmt, node)); + break; + case T_DropOwnedStmt: + deparseDropOwnedStmt(str, castNode(DropOwnedStmt, node)); + break; + case T_DropStmt: + deparseDropStmt(str, castNode(DropStmt, node)); + break; + case T_DropSubscriptionStmt: + deparseDropSubscriptionStmt(str, castNode(DropSubscriptionStmt, node)); + break; + case T_DropTableSpaceStmt: + deparseDropTableSpaceStmt(str, castNode(DropTableSpaceStmt, node)); + break; + case T_DropRoleStmt: + deparseDropRoleStmt(str, castNode(DropRoleStmt, node)); + break; + case T_DropUserMappingStmt: + deparseDropUserMappingStmt(str, castNode(DropUserMappingStmt, node)); + break; + case T_DropdbStmt: + deparseDropdbStmt(str, castNode(DropdbStmt, node)); + break; + case T_ExecuteStmt: + deparseExecuteStmt(str, castNode(ExecuteStmt, node)); + break; + case T_ExplainStmt: + deparseExplainStmt(str, castNode(ExplainStmt, node)); + break; + case T_FetchStmt: + deparseFetchStmt(str, castNode(FetchStmt, node)); + break; + case T_GrantStmt: + deparseGrantStmt(str, castNode(GrantStmt, node)); + break; + case T_GrantRoleStmt: + deparseGrantRoleStmt(str, castNode(GrantRoleStmt, node)); + break; + case T_ImportForeignSchemaStmt: + deparseImportForeignSchemaStmt(str, castNode(ImportForeignSchemaStmt, node)); + break; + case T_IndexStmt: + deparseIndexStmt(str, castNode(IndexStmt, node)); + break; + case T_InsertStmt: + deparseInsertStmt(str, castNode(InsertStmt, node)); + break; + case T_ListenStmt: + deparseListenStmt(str, castNode(ListenStmt, node)); + break; + case T_RefreshMatViewStmt: + deparseRefreshMatViewStmt(str, castNode(RefreshMatViewStmt, node)); + break; + case T_LoadStmt: + deparseLoadStmt(str, castNode(LoadStmt, node)); + break; + case T_LockStmt: + deparseLockStmt(str, castNode(LockStmt, node)); + break; + case T_NotifyStmt: + deparseNotifyStmt(str, castNode(NotifyStmt, node)); + break; + case T_PrepareStmt: + deparsePrepareStmt(str, castNode(PrepareStmt, node)); + break; + case T_ReassignOwnedStmt: + deparseReassignOwnedStmt(str, castNode(ReassignOwnedStmt, node)); + break; + case T_ReindexStmt: + deparseReindexStmt(str, castNode(ReindexStmt, node)); + break; + case T_RenameStmt: + deparseRenameStmt(str, castNode(RenameStmt, node)); + break; + case T_RuleStmt: + deparseRuleStmt(str, castNode(RuleStmt, node)); + break; + case T_SecLabelStmt: + deparseSecLabelStmt(str, castNode(SecLabelStmt, node)); + break; + case T_SelectStmt: + deparseSelectStmt(str, castNode(SelectStmt, node)); + break; + case T_TransactionStmt: + deparseTransactionStmt(str, castNode(TransactionStmt, node)); + break; + case T_TruncateStmt: + deparseTruncateStmt(str, castNode(TruncateStmt, node)); + break; + case T_UnlistenStmt: + deparseUnlistenStmt(str, castNode(UnlistenStmt, node)); + break; + case T_UpdateStmt: + deparseUpdateStmt(str, castNode(UpdateStmt, node)); + break; + case T_VacuumStmt: + deparseVacuumStmt(str, castNode(VacuumStmt, node)); + break; + case T_VariableSetStmt: + deparseVariableSetStmt(str, castNode(VariableSetStmt, node)); + break; + case T_VariableShowStmt: + deparseVariableShowStmt(str, castNode(VariableShowStmt, node)); + break; + case T_ViewStmt: + deparseViewStmt(str, castNode(ViewStmt, node)); + break; + // These node types are created by DefineStmt grammar for CREATE TYPE in some cases + case T_CompositeTypeStmt: + deparseCompositeTypeStmt(str, castNode(CompositeTypeStmt, node)); + break; + case T_CreateEnumStmt: + deparseCreateEnumStmt(str, castNode(CreateEnumStmt, node)); + break; + case T_CreateRangeStmt: + deparseCreateRangeStmt(str, castNode(CreateRangeStmt, node)); + break; + default: + // No other node types are supported at the top-level + Assert(false); + } +} + +PgQueryDeparseResult pg_query_deparse_protobuf(PgQueryProtobuf parse_tree) +{ + PgQueryDeparseResult result = {0}; + StringInfoData str; + MemoryContext ctx; + List *stmts; + ListCell *lc; + + ctx = pg_query_enter_memory_context(); + + PG_TRY(); + { + stmts = pg_query_protobuf_to_nodes(parse_tree); + + initStringInfo(&str); + + foreach(lc, stmts) { + deparseRawStmt(&str, castNode(RawStmt, lfirst(lc))); + if (lnext(stmts, lc)) + appendStringInfoString(&str, "; "); + } + result.query = strdup(str.data); + } + PG_CATCH(); + { + ErrorData* error_data; + PgQueryError* error; + + MemoryContextSwitchTo(ctx); + error_data = CopyErrorData(); + + // Note: This is intentionally malloc so exiting the memory context doesn't free this + error = malloc(sizeof(PgQueryError)); + error->message = strdup(error_data->message); + error->filename = strdup(error_data->filename); + error->funcname = strdup(error_data->funcname); + error->context = NULL; + error->lineno = error_data->lineno; + error->cursorpos = error_data->cursorpos; + + result.error = error; + FlushErrorState(); + } + PG_END_TRY(); + + pg_query_exit_memory_context(ctx); + + return result; +} + +void pg_query_free_deparse_result(PgQueryDeparseResult result) +{ + if (result.error) { + pg_query_free_error(result.error); + } + + free(result.query); +} diff --git a/parser/pg_query_fingerprint.c b/parser/pg_query_fingerprint.c index b672d2b5..175be568 100644 --- a/parser/pg_query_fingerprint.c +++ b/parser/pg_query_fingerprint.c @@ -3,7 +3,7 @@ #include "pg_query_fingerprint.h" #include "postgres.h" -#include "sha1.h" +#include "xxhash/xxhash.h" #include "lib/ilist.h" #include "parser/parser.h" @@ -20,10 +20,18 @@ typedef struct FingerprintContext { + XXH3_state_t *xxh_state; + + bool write_tokens; dlist_head tokens; - SHA1_CTX *sha1; // If this is NULL we write tokens, otherwise we write the sha1sum directly } FingerprintContext; +typedef struct FingerprintListContext +{ + XXH64_hash_t hash; + size_t list_pos; +} FingerprintListContext; + typedef struct FingerprintToken { char *str; @@ -31,19 +39,21 @@ typedef struct FingerprintToken } FingerprintToken; static void _fingerprintNode(FingerprintContext *ctx, const void *obj, const void *parent, char *parent_field_name, unsigned int depth); -static void _fingerprintInitForTokens(FingerprintContext *ctx); -static void _fingerprintCopyTokens(FingerprintContext *source, FingerprintContext *target, char *field_name); +static void _fingerprintInitContext(FingerprintContext *ctx, bool write_tokens); +static void _fingerprintFreeContext(FingerprintContext *ctx); -#define PG_QUERY_FINGERPRINT_VERSION 2 +#define PG_QUERY_FINGERPRINT_VERSION 3 // Implementations static void _fingerprintString(FingerprintContext *ctx, const char *str) { - if (ctx->sha1 != NULL) { - SHA1Update(ctx->sha1, (uint8*) str, strlen(str)); - } else { + if (ctx->xxh_state != NULL) { + XXH3_64bits_update(ctx->xxh_state, str, strlen(str)); + } + + if (ctx->write_tokens) { FingerprintToken *token = palloc0(sizeof(FingerprintToken)); token->str = pstrdup(str); dlist_push_tail(&ctx->tokens, &token->list_node); @@ -57,7 +67,7 @@ _fingerprintInteger(FingerprintContext *ctx, const Value *node) _fingerprintString(ctx, "Integer"); _fingerprintString(ctx, "ival"); char buffer[50]; - sprintf(buffer, "%ld", node->val.ival); + sprintf(buffer, "%d", node->val.ival); _fingerprintString(ctx, buffer); } } @@ -82,76 +92,51 @@ _fingerprintBitString(FingerprintContext *ctx, const Value *node) } } -#define FINGERPRINT_CMP_STRBUF 1024 - -static int compareFingerprintContext(const void *a, const void *b) +static int compareFingerprintListContext(const void *a, const void *b) { - FingerprintContext *ca = *(FingerprintContext**) a; - FingerprintContext *cb = *(FingerprintContext**) b; - - char strBufA[FINGERPRINT_CMP_STRBUF + 1] = {'\0'}; - char strBufB[FINGERPRINT_CMP_STRBUF + 1] = {'\0'}; - - dlist_iter iterA; - dlist_iter iterB; - - dlist_foreach(iterA, &ca->tokens) - { - FingerprintToken *token = dlist_container(FingerprintToken, list_node, iterA.cur); - - strncat(strBufA, token->str, FINGERPRINT_CMP_STRBUF - strlen(strBufA)); - } - - dlist_foreach(iterB, &cb->tokens) - { - FingerprintToken *token = dlist_container(FingerprintToken, list_node, iterB.cur); - - strncat(strBufB, token->str, FINGERPRINT_CMP_STRBUF - strlen(strBufB)); - } - - //printf("COMP %s <=> %s = %d\n", strBufA, strBufB, strcmp(strBufA, strBufB)); - - return strcmp(strBufA, strBufB); + FingerprintListContext *ca = *(FingerprintListContext**) a; + FingerprintListContext *cb = *(FingerprintListContext**) b; + if (ca->hash > cb->hash) + return 1; + else if (ca->hash < cb->hash) + return -1; + return 0; } static void _fingerprintList(FingerprintContext *ctx, const List *node, const void *parent, char *field_name, unsigned int depth) { if (field_name != NULL && (strcmp(field_name, "fromClause") == 0 || strcmp(field_name, "targetList") == 0 || - strcmp(field_name, "cols") == 0 || strcmp(field_name, "rexpr") == 0 || strcmp(field_name, "valuesLists") == 0)) { + strcmp(field_name, "cols") == 0 || strcmp(field_name, "rexpr") == 0 || strcmp(field_name, "valuesLists") == 0 || + strcmp(field_name, "args") == 0)) { - FingerprintContext** subCtxArr = palloc0(node->length * sizeof(FingerprintContext*)); - size_t subCtxCount = 0; - size_t i; + FingerprintListContext** listCtxArr = palloc0(node->length * sizeof(FingerprintListContext*)); + size_t listCtxCount = 0; const ListCell *lc; foreach(lc, node) { - FingerprintContext* subCtx = palloc0(sizeof(FingerprintContext)); - - _fingerprintInitForTokens(subCtx); - _fingerprintNode(subCtx, lfirst(lc), parent, field_name, depth + 1); + FingerprintContext subCtx; + FingerprintListContext* listCtx = palloc0(sizeof(FingerprintListContext)); - bool exists = false; - for (i = 0; i < subCtxCount; i++) { - if (compareFingerprintContext(&subCtxArr[i], &subCtx) == 0) { - exists = true; - break; - } - } - - if (!exists) { - subCtxArr[subCtxCount] = subCtx; - subCtxCount += 1; - } + _fingerprintInitContext(&subCtx, false); + _fingerprintNode(&subCtx, lfirst(lc), parent, field_name, depth + 1); + listCtx->hash = XXH3_64bits_digest(subCtx.xxh_state); + listCtx->list_pos = listCtxCount; + _fingerprintFreeContext(&subCtx); - lnext(lc); + listCtxArr[listCtxCount] = listCtx; + listCtxCount += 1; } - pg_qsort(subCtxArr, subCtxCount, sizeof(FingerprintContext*), compareFingerprintContext); + pg_qsort(listCtxArr, listCtxCount, sizeof(FingerprintListContext*), compareFingerprintListContext); - for (i = 0; i < subCtxCount; i++) { - _fingerprintCopyTokens(subCtxArr[i], ctx, NULL); + for (size_t i = 0; i < listCtxCount; i++) + { + if (i > 0 && listCtxArr[i - 1]->hash == listCtxArr[i]->hash) + continue; // Ignore duplicates + + _fingerprintNode(ctx, lfirst(list_nth_cell(node, listCtxArr[i]->list_pos)), parent, field_name, depth + 1); } } else { const ListCell *lc; @@ -160,35 +145,31 @@ _fingerprintList(FingerprintContext *ctx, const List *node, const void *parent, { _fingerprintNode(ctx, lfirst(lc), parent, field_name, depth + 1); - lnext(lc); + lnext(node, lc); } } } static void -_fingerprintInitForTokens(FingerprintContext *ctx) { - ctx->sha1 = NULL; - dlist_init(&ctx->tokens); +_fingerprintInitContext(FingerprintContext *ctx, bool write_tokens) { + ctx->xxh_state = XXH3_createState(); + if (ctx->xxh_state == NULL) abort(); + if (XXH3_64bits_reset_withSeed(ctx->xxh_state, PG_QUERY_FINGERPRINT_VERSION) == XXH_ERROR) abort(); + + if (write_tokens) { + ctx->write_tokens = true; + dlist_init(&ctx->tokens); + } else { + ctx->write_tokens = false; + } } static void -_fingerprintCopyTokens(FingerprintContext *source, FingerprintContext *target, char *field_name) { - dlist_iter iter; - - if (dlist_is_empty(&source->tokens)) return; - - if (field_name != NULL) { - _fingerprintString(target, field_name); - } - - dlist_foreach(iter, &source->tokens) - { - FingerprintToken *token = dlist_container(FingerprintToken, list_node, iter.cur); - - _fingerprintString(target, token->str); - } +_fingerprintFreeContext(FingerprintContext *ctx) { + XXH3_freeState(ctx->xxh_state); } +#include "pg_query_enum_defs.c" #include "pg_query_fingerprint_defs.c" void @@ -204,37 +185,33 @@ _fingerprintNode(FingerprintContext *ctx, const void *obj, const void *parent, c return; // Ignore } - if (IsA(obj, List)) + switch (nodeTag(obj)) { - _fingerprintList(ctx, obj, parent, field_name, depth); - } - else - { - switch (nodeTag(obj)) - { - case T_Integer: - _fingerprintInteger(ctx, obj); - break; - case T_Float: - _fingerprintFloat(ctx, obj); - break; - case T_String: - _fingerprintString(ctx, "String"); - _fingerprintString(ctx, "str"); - _fingerprintString(ctx, ((Value*) obj)->val.str); - break; - case T_BitString: - _fingerprintBitString(ctx, obj); - break; - - #include "pg_query_fingerprint_conds.c" - - default: - elog(WARNING, "could not fingerprint unrecognized node type: %d", - (int) nodeTag(obj)); - - return; - } + case T_List: + _fingerprintList(ctx, obj, parent, field_name, depth); + break; + case T_Integer: + _fingerprintInteger(ctx, obj); + break; + case T_Float: + _fingerprintFloat(ctx, obj); + break; + case T_String: + _fingerprintString(ctx, "String"); + _fingerprintString(ctx, "str"); + _fingerprintString(ctx, ((Value*) obj)->val.str); + break; + case T_BitString: + _fingerprintBitString(ctx, obj); + break; + + #include "pg_query_fingerprint_conds.c" + + default: + elog(WARNING, "could not fingerprint unrecognized node type: %d", + (int) nodeTag(obj)); + + return; } } @@ -254,45 +231,41 @@ PgQueryFingerprintResult pg_query_fingerprint_with_opts(const char* input, bool if (parsetree_and_error.tree != NULL || result.error == NULL) { FingerprintContext ctx; - int i; - uint8 sha1result[SHA1_RESULTLEN]; + XXH64_canonical_t chash; - ctx.sha1 = palloc0(sizeof(SHA1_CTX)); - SHA1Init(ctx.sha1); + _fingerprintInitContext(&ctx, printTokens); if (parsetree_and_error.tree != NULL) { _fingerprintNode(&ctx, parsetree_and_error.tree, NULL, NULL, 0); } - SHA1Final(sha1result, ctx.sha1); - - // This is intentionally malloc-ed and will survive exiting the memory context - result.hexdigest = calloc((1 + SHA1_RESULTLEN) * 2 + 1, sizeof(char)); - - sprintf(result.hexdigest, "%02x", PG_QUERY_FINGERPRINT_VERSION); - - for (i = 0; i < SHA1_RESULTLEN; i++) { - sprintf(result.hexdigest + (1 + i) * 2, "%02x", sha1result[i]); - } - if (printTokens) { - FingerprintContext debugCtx; dlist_iter iter; - _fingerprintInitForTokens(&debugCtx); - _fingerprintNode(&debugCtx, parsetree_and_error.tree, NULL, NULL, 0); - printf("["); - dlist_foreach(iter, &debugCtx.tokens) + dlist_foreach(iter, &ctx.tokens) { FingerprintToken *token = dlist_container(FingerprintToken, list_node, iter.cur); - printf("%s, ", token->str); + printf("\"%s\", ", token->str); } printf("]\n"); } + + result.fingerprint = XXH3_64bits_digest(ctx.xxh_state); + _fingerprintFreeContext(&ctx); + + XXH64_canonicalFromHash(&chash, result.fingerprint); + int err = asprintf(&result.fingerprint_str, "%02x%02x%02x%02x%02x%02x%02x%02x", + chash.digest[0], chash.digest[1], chash.digest[2], chash.digest[3], + chash.digest[4], chash.digest[5], chash.digest[6], chash.digest[7]); + if (err == -1) { + PgQueryError* error = malloc(sizeof(PgQueryError)); + error->message = strdup("Failed to output fingerprint string due to asprintf failure"); + result.error = error; + } } pg_query_exit_memory_context(ctx); @@ -313,6 +286,6 @@ void pg_query_free_fingerprint_result(PgQueryFingerprintResult result) free(result.error); } - free(result.hexdigest); + free(result.fingerprint_str); free(result.stderr_buffer); } diff --git a/parser/pg_query_json.c b/parser/pg_query_json.c deleted file mode 100644 index 19006e2f..00000000 --- a/parser/pg_query_json.c +++ /dev/null @@ -1,227 +0,0 @@ -#include "pg_query_json.h" - -#include "postgres.h" - -#include - -#include "nodes/plannodes.h" -#include "nodes/relation.h" -#include "utils/datum.h" - -static void _outNode(StringInfo str, const void *obj); - -#include "pg_query_json_helper.c" - -#define WRITE_NODE_FIELD(fldname) \ - if (true) { \ - appendStringInfo(str, "\"" CppAsString(fldname) "\": "); \ - _outNode(str, &node->fldname); \ - appendStringInfo(str, ", "); \ - } - -#define WRITE_NODE_FIELD_WITH_TYPE(fldname, typename) \ - if (true) { \ - appendStringInfo(str, "\"" CppAsString(fldname) "\": {"); \ - _out##typename(str, (const typename *) &node->fldname); \ - removeTrailingDelimiter(str); \ - appendStringInfo(str, "}}, "); \ - } - -#define WRITE_NODE_PTR_FIELD(fldname) \ - if (node->fldname != NULL) { \ - appendStringInfo(str, "\"" CppAsString(fldname) "\": "); \ - _outNode(str, node->fldname); \ - appendStringInfo(str, ", "); \ - } - -#define WRITE_BITMAPSET_FIELD(fldname) \ - (appendStringInfo(str, "\"" CppAsString(fldname) "\": "), \ - _outBitmapset(str, node->fldname), \ - appendStringInfo(str, ", ")) - - -static void -_outList(StringInfo str, const List *node) -{ - const ListCell *lc; - - // Simple lists are frequent structures - we don't make them into full nodes to avoid super-verbose output - appendStringInfoChar(str, '['); - - foreach(lc, node) - { - _outNode(str, lfirst(lc)); - - if (lnext(lc)) - appendStringInfoString(str, ", "); - } - - appendStringInfoChar(str, ']'); -} - -static void -_outIntList(StringInfo str, const List *node) -{ - const ListCell *lc; - - WRITE_NODE_TYPE("IntList"); - appendStringInfo(str, "\"items\": "); - appendStringInfoChar(str, '['); - - foreach(lc, node) - { - appendStringInfo(str, " %d", lfirst_int(lc)); - - if (lnext(lc)) - appendStringInfoString(str, ", "); - } - - appendStringInfoChar(str, ']'); - appendStringInfo(str, ", "); -} - -static void -_outOidList(StringInfo str, const List *node) -{ - const ListCell *lc; - - WRITE_NODE_TYPE("OidList"); - appendStringInfo(str, "\"items\": "); - appendStringInfoChar(str, '['); - - foreach(lc, node) - { - appendStringInfo(str, " %u", lfirst_oid(lc)); - - if (lnext(lc)) - appendStringInfoString(str, ", "); - } - - appendStringInfoChar(str, ']'); - appendStringInfo(str, ", "); -} - -static void -_outBitmapset(StringInfo str, const Bitmapset *bms) -{ - Bitmapset *tmpset; - int x; - - appendStringInfoChar(str, '['); - /*appendStringInfoChar(str, 'b');*/ - tmpset = bms_copy(bms); - while ((x = bms_first_member(tmpset)) >= 0) - appendStringInfo(str, "%d, ", x); - bms_free(tmpset); - removeTrailingDelimiter(str); - appendStringInfoChar(str, ']'); -} - -static void -_outInteger(StringInfo str, const Value *node) -{ - WRITE_NODE_TYPE("Integer"); - appendStringInfo(str, "\"ival\": %ld, ", node->val.ival); -} - -static void -_outFloat(StringInfo str, const Value *node) -{ - WRITE_NODE_TYPE("Float"); - appendStringInfo(str, "\"str\": "); - _outToken(str, node->val.str); - appendStringInfo(str, ", "); -} - -static void -_outString(StringInfo str, const Value *node) -{ - WRITE_NODE_TYPE("String"); - appendStringInfo(str, "\"str\": "); - _outToken(str, node->val.str); - appendStringInfo(str, ", "); -} - -static void -_outBitString(StringInfo str, const Value *node) -{ - WRITE_NODE_TYPE("BitString"); - appendStringInfo(str, "\"str\": "); - _outToken(str, node->val.str); - appendStringInfo(str, ", "); -} - -static void -_outNull(StringInfo str, const Value *node) -{ - WRITE_NODE_TYPE("Null"); -} - -#include "pg_query_json_defs.c" - -static void -_outNode(StringInfo str, const void *obj) -{ - if (obj == NULL) - { - appendStringInfoString(str, "null"); - } - else if (IsA(obj, List)) - { - _outList(str, obj); - } - else - { - appendStringInfoChar(str, '{'); - switch (nodeTag(obj)) - { - case T_Integer: - _outInteger(str, obj); - break; - case T_Float: - _outFloat(str, obj); - break; - case T_String: - _outString(str, obj); - break; - case T_BitString: - _outBitString(str, obj); - break; - case T_Null: - _outNull(str, obj); - break; - case T_IntList: - _outIntList(str, obj); - break; - case T_OidList: - _outOidList(str, obj); - break; - - #include "pg_query_json_conds.c" - - default: - elog(WARNING, "could not dump unrecognized node type: %d", - (int) nodeTag(obj)); - - appendStringInfo(str, "}"); - return; - } - removeTrailingDelimiter(str); - appendStringInfo(str, "}}"); - } -} - -char * -pg_query_nodes_to_json(const void *obj) -{ - StringInfoData str; - - initStringInfo(&str); - - if (obj == NULL) /* Make sure we generate valid JSON for empty queries */ - appendStringInfoString(&str, "[]"); - else - _outNode(&str, obj); - - return str.data; -} diff --git a/parser/pg_query_json.h b/parser/pg_query_json.h deleted file mode 100644 index d9b241a1..00000000 --- a/parser/pg_query_json.h +++ /dev/null @@ -1,6 +0,0 @@ -#ifndef PG_QUERY_JSON_H -#define PG_QUERY_JSON_H - -char *pg_query_nodes_to_json(const void *obj); - -#endif diff --git a/parser/pg_query_json_plpgsql.c b/parser/pg_query_json_plpgsql.c index 43f0d0bd..71aa6f2f 100644 --- a/parser/pg_query_json_plpgsql.c +++ b/parser/pg_query_json_plpgsql.c @@ -3,183 +3,233 @@ #include "pg_query_json_helper.c" +/* Write the label for the node type */ +#define WRITE_NODE_TYPE(nodelabel) \ + appendStringInfoString(out, "\"" nodelabel "\":{") + +/* Write an integer field */ +#define WRITE_INT_FIELD(outname, outname_json, fldname) \ + if (node->fldname != 0) { \ + appendStringInfo(out, "\"" CppAsString(outname_json) "\":%d,", node->fldname); \ + } + +/* Write a long-integer field */ +#define WRITE_LONG_FIELD(outname, outname_json, fldname) \ + if (node->fldname != 0) { \ + appendStringInfo(out, "\"" CppAsString(outname_json) "\":%ld,", node->fldname); \ + } + +/* Write an enumerated-type field as an integer code */ +#define WRITE_ENUM_FIELD(outname, outname_json, fldname) \ + appendStringInfo(out, "\"" CppAsString(outname_json) "\":%d,", \ + (int) node->fldname) + +/* Write a boolean field */ +#define WRITE_BOOL_FIELD(outname, outname_json, fldname) \ + if (node->fldname) { \ + appendStringInfo(out, "\"" CppAsString(outname_json) "\":%s,", \ + booltostr(node->fldname)); \ + } + +/* Write a character-string (possibly NULL) field */ +#define WRITE_STRING_FIELD(outname, outname_json, fldname) \ + if (node->fldname != NULL) { \ + appendStringInfo(out, "\"" CppAsString(outname_json) "\":"); \ + _outToken(out, node->fldname); \ + appendStringInfo(out, ","); \ + } + +#define WRITE_INT_VALUE(fldname, value) \ + if (value != 0) { \ + appendStringInfo(out, "\"" CppAsString(fldname) "\":%d,", value); \ + } + +#define WRITE_STRING_VALUE(fldname, value) \ + if (true) { \ + appendStringInfo(out, "\"" CppAsString(fldname) "\":"); \ + _outToken(out, value); \ + appendStringInfo(out, ","); \ + } + #define WRITE_OBJ_FIELD(fldname, outfunc) \ if (node->fldname != NULL) { \ - appendStringInfo(str, "\"" CppAsString(fldname) "\": {"); \ - outfunc(str, node->fldname); \ - removeTrailingDelimiter(str); \ - appendStringInfo(str, "}}, "); \ + appendStringInfo(out, "\"" CppAsString(fldname) "\":{"); \ + outfunc(out, node->fldname); \ + removeTrailingDelimiter(out); \ + appendStringInfo(out, "}},"); \ } #define WRITE_LIST_FIELD(fldname, fldtype, outfunc) \ if (node->fldname != NULL) { \ ListCell *lc; \ - appendStringInfo(str, "\"" CppAsString(fldname) "\": ["); \ + appendStringInfo(out, "\"" CppAsString(fldname) "\":["); \ foreach(lc, node->fldname) { \ - appendStringInfoString(str, "{"); \ - outfunc(str, (fldtype *) lfirst(lc)); \ - removeTrailingDelimiter(str); \ - appendStringInfoString(str, "}},"); \ + appendStringInfoString(out, "{"); \ + outfunc(out, (fldtype *) lfirst(lc)); \ + removeTrailingDelimiter(out); \ + appendStringInfoString(out, "}},"); \ } \ - removeTrailingDelimiter(str); \ - appendStringInfoString(str, "], "); \ + removeTrailingDelimiter(out); \ + appendStringInfoString(out, "],"); \ } #define WRITE_STATEMENTS_FIELD(fldname) \ - if (node->fldname != NULL) { \ - ListCell *lc; \ - appendStringInfo(str, "\"" CppAsString(fldname) "\": ["); \ - foreach(lc, node->fldname) { \ - dump_stmt(str, (PLpgSQL_stmt *) lfirst(lc)); \ - } \ - removeTrailingDelimiter(str); \ - appendStringInfoString(str, "],"); \ - } + if (node->fldname != NULL) { \ + ListCell *lc; \ + appendStringInfo(out, "\"" CppAsString(fldname) "\":["); \ + foreach(lc, node->fldname) { \ + dump_stmt(out, (PLpgSQL_stmt *) lfirst(lc)); \ + } \ + removeTrailingDelimiter(out); \ + appendStringInfoString(out, "],"); \ + } #define WRITE_EXPR_FIELD(fldname) WRITE_OBJ_FIELD(fldname, dump_expr) #define WRITE_BLOCK_FIELD(fldname) WRITE_OBJ_FIELD(fldname, dump_block) #define WRITE_RECORD_FIELD(fldname) WRITE_OBJ_FIELD(fldname, dump_record) #define WRITE_ROW_FIELD(fldname) WRITE_OBJ_FIELD(fldname, dump_row) #define WRITE_VAR_FIELD(fldname) WRITE_OBJ_FIELD(fldname, dump_var) - -static void dump_record(StringInfo str, PLpgSQL_rec *stmt); -static void dump_row(StringInfo str, PLpgSQL_row *stmt); -static void dump_var(StringInfo str, PLpgSQL_var *stmt); -static void dump_record_field(StringInfo str, PLpgSQL_recfield *node); -static void dump_array_elem(StringInfo str, PLpgSQL_arrayelem *node); -static void dump_stmt(StringInfo str, PLpgSQL_stmt *stmt); -static void dump_block(StringInfo str, PLpgSQL_stmt_block *block); -static void dump_exception_block(StringInfo str, PLpgSQL_exception_block *node); -static void dump_assign(StringInfo str, PLpgSQL_stmt_assign *stmt); -static void dump_if(StringInfo str, PLpgSQL_stmt_if *stmt); -static void dump_if_elsif(StringInfo str, PLpgSQL_if_elsif *node); -static void dump_case(StringInfo str, PLpgSQL_stmt_case *stmt); -static void dump_case_when(StringInfo str, PLpgSQL_case_when *node); -static void dump_loop(StringInfo str, PLpgSQL_stmt_loop *stmt); -static void dump_while(StringInfo str, PLpgSQL_stmt_while *stmt); -static void dump_fori(StringInfo str, PLpgSQL_stmt_fori *stmt); -static void dump_fors(StringInfo str, PLpgSQL_stmt_fors *stmt); -static void dump_forc(StringInfo str, PLpgSQL_stmt_forc *stmt); -static void dump_foreach_a(StringInfo str, PLpgSQL_stmt_foreach_a *stmt); -static void dump_exit(StringInfo str, PLpgSQL_stmt_exit *stmt); -static void dump_return(StringInfo str, PLpgSQL_stmt_return *stmt); -static void dump_return_next(StringInfo str, PLpgSQL_stmt_return_next *stmt); -static void dump_return_query(StringInfo str, PLpgSQL_stmt_return_query *stmt); -static void dump_raise(StringInfo str, PLpgSQL_stmt_raise *stmt); -static void dump_raise_option(StringInfo str, PLpgSQL_raise_option *node); -static void dump_execsql(StringInfo str, PLpgSQL_stmt_execsql *stmt); -static void dump_dynexecute(StringInfo str, PLpgSQL_stmt_dynexecute *stmt); -static void dump_dynfors(StringInfo str, PLpgSQL_stmt_dynfors *stmt); -static void dump_getdiag(StringInfo str, PLpgSQL_stmt_getdiag *stmt); -static void dump_getdiag_item(StringInfo str, PLpgSQL_diag_item *node); -static void dump_open(StringInfo str, PLpgSQL_stmt_open *stmt); -static void dump_fetch(StringInfo str, PLpgSQL_stmt_fetch *stmt); -static void dump_close(StringInfo str, PLpgSQL_stmt_close *stmt); -static void dump_perform(StringInfo str, PLpgSQL_stmt_perform *stmt); -static void dump_expr(StringInfo str, PLpgSQL_expr *expr); -static void dump_function(StringInfo str, PLpgSQL_function *func); -static void dump_exception(StringInfo str, PLpgSQL_exception *node); -static void dump_condition(StringInfo str, PLpgSQL_condition *node); -static void dump_type(StringInfo str, PLpgSQL_type *node); - -static void -dump_stmt(StringInfo str, PLpgSQL_stmt *node) -{ - appendStringInfoChar(str, '{'); +#define WRITE_VARIABLE_FIELD(fldname) WRITE_OBJ_FIELD(fldname, dump_variable); + +static void dump_record(StringInfo out, PLpgSQL_rec *stmt); +static void dump_row(StringInfo out, PLpgSQL_row *stmt); +static void dump_var(StringInfo out, PLpgSQL_var *stmt); +static void dump_variable(StringInfo out, PLpgSQL_variable *stmt); +static void dump_record_field(StringInfo out, PLpgSQL_recfield *node); +static void dump_array_elem(StringInfo out, PLpgSQL_arrayelem *node); +static void dump_stmt(StringInfo out, PLpgSQL_stmt *stmt); +static void dump_block(StringInfo out, PLpgSQL_stmt_block *block); +static void dump_exception_block(StringInfo out, PLpgSQL_exception_block *node); +static void dump_assign(StringInfo out, PLpgSQL_stmt_assign *stmt); +static void dump_if(StringInfo out, PLpgSQL_stmt_if *stmt); +static void dump_if_elsif(StringInfo out, PLpgSQL_if_elsif *node); +static void dump_case(StringInfo out, PLpgSQL_stmt_case *stmt); +static void dump_case_when(StringInfo out, PLpgSQL_case_when *node); +static void dump_loop(StringInfo out, PLpgSQL_stmt_loop *stmt); +static void dump_while(StringInfo out, PLpgSQL_stmt_while *stmt); +static void dump_fori(StringInfo out, PLpgSQL_stmt_fori *stmt); +static void dump_fors(StringInfo out, PLpgSQL_stmt_fors *stmt); +static void dump_forc(StringInfo out, PLpgSQL_stmt_forc *stmt); +static void dump_foreach_a(StringInfo out, PLpgSQL_stmt_foreach_a *stmt); +static void dump_exit(StringInfo out, PLpgSQL_stmt_exit *stmt); +static void dump_return(StringInfo out, PLpgSQL_stmt_return *stmt); +static void dump_return_next(StringInfo out, PLpgSQL_stmt_return_next *stmt); +static void dump_return_query(StringInfo out, PLpgSQL_stmt_return_query *stmt); +static void dump_raise(StringInfo out, PLpgSQL_stmt_raise *stmt); +static void dump_raise_option(StringInfo out, PLpgSQL_raise_option *node); +static void dump_execsql(StringInfo out, PLpgSQL_stmt_execsql *stmt); +static void dump_dynexecute(StringInfo out, PLpgSQL_stmt_dynexecute *stmt); +static void dump_dynfors(StringInfo out, PLpgSQL_stmt_dynfors *stmt); +static void dump_getdiag(StringInfo out, PLpgSQL_stmt_getdiag *stmt); +static void dump_getdiag_item(StringInfo out, PLpgSQL_diag_item *node); +static void dump_open(StringInfo out, PLpgSQL_stmt_open *stmt); +static void dump_fetch(StringInfo out, PLpgSQL_stmt_fetch *stmt); +static void dump_close(StringInfo out, PLpgSQL_stmt_close *stmt); +static void dump_perform(StringInfo out, PLpgSQL_stmt_perform *stmt); +static void dump_expr(StringInfo out, PLpgSQL_expr *expr); +static void dump_function(StringInfo out, PLpgSQL_function *func); +static void dump_exception(StringInfo out, PLpgSQL_exception *node); +static void dump_condition(StringInfo out, PLpgSQL_condition *node); +static void dump_type(StringInfo out, PLpgSQL_type *node); + +static void +dump_stmt(StringInfo out, PLpgSQL_stmt *node) +{ + appendStringInfoChar(out, '{'); switch (node->cmd_type) { case PLPGSQL_STMT_BLOCK: - dump_block(str, (PLpgSQL_stmt_block *) node); + dump_block(out, (PLpgSQL_stmt_block *) node); break; case PLPGSQL_STMT_ASSIGN: - dump_assign(str, (PLpgSQL_stmt_assign *) node); + dump_assign(out, (PLpgSQL_stmt_assign *) node); break; case PLPGSQL_STMT_IF: - dump_if(str, (PLpgSQL_stmt_if *) node); + dump_if(out, (PLpgSQL_stmt_if *) node); break; case PLPGSQL_STMT_CASE: - dump_case(str, (PLpgSQL_stmt_case *) node); + dump_case(out, (PLpgSQL_stmt_case *) node); break; case PLPGSQL_STMT_LOOP: - dump_loop(str, (PLpgSQL_stmt_loop *) node); + dump_loop(out, (PLpgSQL_stmt_loop *) node); break; case PLPGSQL_STMT_WHILE: - dump_while(str, (PLpgSQL_stmt_while *) node); + dump_while(out, (PLpgSQL_stmt_while *) node); break; case PLPGSQL_STMT_FORI: - dump_fori(str, (PLpgSQL_stmt_fori *) node); + dump_fori(out, (PLpgSQL_stmt_fori *) node); break; case PLPGSQL_STMT_FORS: - dump_fors(str, (PLpgSQL_stmt_fors *) node); + dump_fors(out, (PLpgSQL_stmt_fors *) node); break; case PLPGSQL_STMT_FORC: - dump_forc(str, (PLpgSQL_stmt_forc *) node); + dump_forc(out, (PLpgSQL_stmt_forc *) node); break; case PLPGSQL_STMT_FOREACH_A: - dump_foreach_a(str, (PLpgSQL_stmt_foreach_a *) node); + dump_foreach_a(out, (PLpgSQL_stmt_foreach_a *) node); break; case PLPGSQL_STMT_EXIT: - dump_exit(str, (PLpgSQL_stmt_exit *) node); + dump_exit(out, (PLpgSQL_stmt_exit *) node); break; case PLPGSQL_STMT_RETURN: - dump_return(str, (PLpgSQL_stmt_return *) node); + dump_return(out, (PLpgSQL_stmt_return *) node); break; case PLPGSQL_STMT_RETURN_NEXT: - dump_return_next(str, (PLpgSQL_stmt_return_next *) node); + dump_return_next(out, (PLpgSQL_stmt_return_next *) node); break; case PLPGSQL_STMT_RETURN_QUERY: - dump_return_query(str, (PLpgSQL_stmt_return_query *) node); + dump_return_query(out, (PLpgSQL_stmt_return_query *) node); break; case PLPGSQL_STMT_RAISE: - dump_raise(str, (PLpgSQL_stmt_raise *) node); + dump_raise(out, (PLpgSQL_stmt_raise *) node); break; case PLPGSQL_STMT_EXECSQL: - dump_execsql(str, (PLpgSQL_stmt_execsql *) node); + dump_execsql(out, (PLpgSQL_stmt_execsql *) node); break; case PLPGSQL_STMT_DYNEXECUTE: - dump_dynexecute(str, (PLpgSQL_stmt_dynexecute *) node); + dump_dynexecute(out, (PLpgSQL_stmt_dynexecute *) node); break; case PLPGSQL_STMT_DYNFORS: - dump_dynfors(str, (PLpgSQL_stmt_dynfors *) node); + dump_dynfors(out, (PLpgSQL_stmt_dynfors *) node); break; case PLPGSQL_STMT_GETDIAG: - dump_getdiag(str, (PLpgSQL_stmt_getdiag *) node); + dump_getdiag(out, (PLpgSQL_stmt_getdiag *) node); break; case PLPGSQL_STMT_OPEN: - dump_open(str, (PLpgSQL_stmt_open *) node); + dump_open(out, (PLpgSQL_stmt_open *) node); break; case PLPGSQL_STMT_FETCH: - dump_fetch(str, (PLpgSQL_stmt_fetch *) node); + dump_fetch(out, (PLpgSQL_stmt_fetch *) node); break; case PLPGSQL_STMT_CLOSE: - dump_close(str, (PLpgSQL_stmt_close *) node); + dump_close(out, (PLpgSQL_stmt_close *) node); break; case PLPGSQL_STMT_PERFORM: - dump_perform(str, (PLpgSQL_stmt_perform *) node); + dump_perform(out, (PLpgSQL_stmt_perform *) node); break; default: elog(ERROR, "unrecognized cmd_type: %d", node->cmd_type); break; } - removeTrailingDelimiter(str); - appendStringInfoString(str, "}}, "); + removeTrailingDelimiter(out); + appendStringInfoString(out, "}},"); } static void -dump_block(StringInfo str, PLpgSQL_stmt_block *node) +dump_block(StringInfo out, PLpgSQL_stmt_block *node) { WRITE_NODE_TYPE("PLpgSQL_stmt_block"); - WRITE_INT_FIELD(lineno); - WRITE_STRING_FIELD(label); + WRITE_INT_FIELD(lineno, lineno, lineno); + WRITE_STRING_FIELD(label, label, label); WRITE_STATEMENTS_FIELD(body); WRITE_OBJ_FIELD(exceptions, dump_exception_block); - removeTrailingDelimiter(str); + removeTrailingDelimiter(out); } static void -dump_exception_block(StringInfo str, PLpgSQL_exception_block *node) +dump_exception_block(StringInfo out, PLpgSQL_exception_block *node) { WRITE_NODE_TYPE("PLpgSQL_exception_block"); @@ -187,50 +237,50 @@ dump_exception_block(StringInfo str, PLpgSQL_exception_block *node) } static void -dump_exception(StringInfo str, PLpgSQL_exception *node) +dump_exception(StringInfo out, PLpgSQL_exception *node) { PLpgSQL_condition *cond; WRITE_NODE_TYPE("PLpgSQL_exception"); - appendStringInfo(str, "\"conditions\": ["); + appendStringInfo(out, "\"conditions\":["); for (cond = node->conditions; cond; cond = cond->next) { - appendStringInfoString(str, "{"); - dump_condition(str, cond); - removeTrailingDelimiter(str); - appendStringInfoString(str, "}},"); + appendStringInfoString(out, "{"); + dump_condition(out, cond); + removeTrailingDelimiter(out); + appendStringInfoString(out, "}},"); } - removeTrailingDelimiter(str); - appendStringInfoString(str, "], "); + removeTrailingDelimiter(out); + appendStringInfoString(out, "],"); WRITE_STATEMENTS_FIELD(action); } static void -dump_condition(StringInfo str, PLpgSQL_condition *node) +dump_condition(StringInfo out, PLpgSQL_condition *node) { WRITE_NODE_TYPE("PLpgSQL_condition"); - WRITE_STRING_FIELD(condname); + WRITE_STRING_FIELD(condname, condname, condname); } static void -dump_assign(StringInfo str, PLpgSQL_stmt_assign *node) +dump_assign(StringInfo out, PLpgSQL_stmt_assign *node) { WRITE_NODE_TYPE("PLpgSQL_stmt_assign"); - WRITE_INT_FIELD(lineno); - WRITE_INT_FIELD(varno); + WRITE_INT_FIELD(lineno, lineno, lineno); + WRITE_INT_FIELD(varno, varno, varno); WRITE_EXPR_FIELD(expr); } static void -dump_if(StringInfo str, PLpgSQL_stmt_if *node) +dump_if(StringInfo out, PLpgSQL_stmt_if *node) { WRITE_NODE_TYPE("PLpgSQL_stmt_if"); - WRITE_INT_FIELD(lineno); + WRITE_INT_FIELD(lineno, lineno, lineno); WRITE_EXPR_FIELD(cond); WRITE_STATEMENTS_FIELD(then_body); WRITE_LIST_FIELD(elsif_list, PLpgSQL_if_elsif, dump_if_elsif); @@ -238,126 +288,123 @@ dump_if(StringInfo str, PLpgSQL_stmt_if *node) } static void -dump_if_elsif(StringInfo str, PLpgSQL_if_elsif *node) +dump_if_elsif(StringInfo out, PLpgSQL_if_elsif *node) { WRITE_NODE_TYPE("PLpgSQL_if_elsif"); - WRITE_INT_FIELD(lineno); + WRITE_INT_FIELD(lineno, lineno, lineno); WRITE_EXPR_FIELD(cond); WRITE_STATEMENTS_FIELD(stmts); } static void -dump_case(StringInfo str, PLpgSQL_stmt_case *node) +dump_case(StringInfo out, PLpgSQL_stmt_case *node) { ListCell *l; WRITE_NODE_TYPE("PLpgSQL_stmt_case"); - WRITE_INT_FIELD(lineno); + WRITE_INT_FIELD(lineno, lineno, lineno); WRITE_EXPR_FIELD(t_expr); - WRITE_INT_FIELD(t_varno); + WRITE_INT_FIELD(t_varno, t_varno, t_varno); WRITE_LIST_FIELD(case_when_list, PLpgSQL_case_when, dump_case_when); - WRITE_BOOL_FIELD(have_else); + WRITE_BOOL_FIELD(have_else, have_else, have_else); WRITE_STATEMENTS_FIELD(else_stmts); } static void -dump_case_when(StringInfo str, PLpgSQL_case_when *node) +dump_case_when(StringInfo out, PLpgSQL_case_when *node) { WRITE_NODE_TYPE("PLpgSQL_case_when"); - WRITE_INT_FIELD(lineno); + WRITE_INT_FIELD(lineno, lineno, lineno); WRITE_EXPR_FIELD(expr); WRITE_STATEMENTS_FIELD(stmts); } static void -dump_loop(StringInfo str, PLpgSQL_stmt_loop *node) +dump_loop(StringInfo out, PLpgSQL_stmt_loop *node) { WRITE_NODE_TYPE("PLpgSQL_stmt_loop"); - WRITE_INT_FIELD(lineno); - WRITE_STRING_FIELD(label); + WRITE_INT_FIELD(lineno, lineno, lineno); + WRITE_STRING_FIELD(label, label, label); WRITE_STATEMENTS_FIELD(body); } static void -dump_while(StringInfo str, PLpgSQL_stmt_while *node) +dump_while(StringInfo out, PLpgSQL_stmt_while *node) { WRITE_NODE_TYPE("PLpgSQL_stmt_while"); - WRITE_INT_FIELD(lineno); - WRITE_STRING_FIELD(label); + WRITE_INT_FIELD(lineno, lineno, lineno); + WRITE_STRING_FIELD(label, label, label); WRITE_EXPR_FIELD(cond); WRITE_STATEMENTS_FIELD(body); } /* FOR statement with integer loopvar */ static void -dump_fori(StringInfo str, PLpgSQL_stmt_fori *node) +dump_fori(StringInfo out, PLpgSQL_stmt_fori *node) { WRITE_NODE_TYPE("PLpgSQL_stmt_fori"); - WRITE_INT_FIELD(lineno); - WRITE_STRING_FIELD(label); + WRITE_INT_FIELD(lineno, lineno, lineno); + WRITE_STRING_FIELD(label, label, label); WRITE_VAR_FIELD(var); WRITE_EXPR_FIELD(lower); WRITE_EXPR_FIELD(upper); WRITE_EXPR_FIELD(step); - WRITE_BOOL_FIELD(reverse); + WRITE_BOOL_FIELD(reverse, reverse, reverse); WRITE_STATEMENTS_FIELD(body); } static void -dump_fors(StringInfo str, PLpgSQL_stmt_fors *node) +dump_fors(StringInfo out, PLpgSQL_stmt_fors *node) { WRITE_NODE_TYPE("PLpgSQL_stmt_fors"); - WRITE_INT_FIELD(lineno); - WRITE_STRING_FIELD(label); - WRITE_RECORD_FIELD(rec); - WRITE_ROW_FIELD(row); + WRITE_INT_FIELD(lineno, lineno, lineno); + WRITE_STRING_FIELD(label, label, label); + WRITE_VARIABLE_FIELD(var); WRITE_STATEMENTS_FIELD(body); WRITE_EXPR_FIELD(query); } static void -dump_forc(StringInfo str, PLpgSQL_stmt_forc *node) +dump_forc(StringInfo out, PLpgSQL_stmt_forc *node) { WRITE_NODE_TYPE("PLpgSQL_stmt_forc"); - WRITE_INT_FIELD(lineno); - WRITE_STRING_FIELD(label); - WRITE_RECORD_FIELD(rec); - WRITE_ROW_FIELD(row); + WRITE_INT_FIELD(lineno, lineno, lineno); + WRITE_STRING_FIELD(label, label, label); + WRITE_VARIABLE_FIELD(var); WRITE_STATEMENTS_FIELD(body); - WRITE_INT_FIELD(curvar); + WRITE_INT_FIELD(curvar, curvar, curvar); WRITE_EXPR_FIELD(argquery); } static void -dump_foreach_a(StringInfo str, PLpgSQL_stmt_foreach_a *node) +dump_foreach_a(StringInfo out, PLpgSQL_stmt_foreach_a *node) { WRITE_NODE_TYPE("PLpgSQL_stmt_foreach_a"); - WRITE_INT_FIELD(lineno); - WRITE_STRING_FIELD(label); - WRITE_INT_FIELD(varno); - WRITE_INT_FIELD(slice); + WRITE_INT_FIELD(lineno, lineno, lineno); + WRITE_STRING_FIELD(label, label, label); + WRITE_INT_FIELD(varno, varno, varno); + WRITE_INT_FIELD(slice, slice, slice); WRITE_EXPR_FIELD(expr); WRITE_STATEMENTS_FIELD(body); } static void -dump_open(StringInfo str, PLpgSQL_stmt_open *node) +dump_open(StringInfo out, PLpgSQL_stmt_open *node) { WRITE_NODE_TYPE("PLpgSQL_stmt_open"); - WRITE_INT_FIELD(lineno); - WRITE_INT_FIELD(curvar); - WRITE_INT_FIELD(cursor_options); - WRITE_ROW_FIELD(returntype); + WRITE_INT_FIELD(lineno, lineno, lineno); + WRITE_INT_FIELD(curvar, curvar, curvar); + WRITE_INT_FIELD(cursor_options, cursor_options, cursor_options); WRITE_EXPR_FIELD(argquery); WRITE_EXPR_FIELD(query); WRITE_EXPR_FIELD(dynquery); @@ -365,293 +412,312 @@ dump_open(StringInfo str, PLpgSQL_stmt_open *node) } static void -dump_fetch(StringInfo str, PLpgSQL_stmt_fetch *node) +dump_fetch(StringInfo out, PLpgSQL_stmt_fetch *node) { WRITE_NODE_TYPE("PLpgSQL_stmt_fetch"); - WRITE_INT_FIELD(lineno); - WRITE_RECORD_FIELD(rec); - WRITE_ROW_FIELD(row); - WRITE_INT_FIELD(curvar); - WRITE_ENUM_FIELD(direction); - WRITE_LONG_FIELD(how_many); + WRITE_INT_FIELD(lineno, lineno, lineno); + WRITE_VARIABLE_FIELD(target); + WRITE_INT_FIELD(curvar, curvar, curvar); + WRITE_ENUM_FIELD(direction, direction, direction); + WRITE_LONG_FIELD(how_many, how_many, how_many); WRITE_EXPR_FIELD(expr); - WRITE_BOOL_FIELD(is_move); - WRITE_BOOL_FIELD(returns_multiple_rows); + WRITE_BOOL_FIELD(is_move, is_move, is_move); + WRITE_BOOL_FIELD(returns_multiple_rows, returns_multiple_rows, returns_multiple_rows); } static void -dump_close(StringInfo str, PLpgSQL_stmt_close *node) +dump_close(StringInfo out, PLpgSQL_stmt_close *node) { WRITE_NODE_TYPE("PLpgSQL_stmt_close"); - WRITE_INT_FIELD(lineno); - WRITE_INT_FIELD(curvar); + WRITE_INT_FIELD(lineno, lineno, lineno); + WRITE_INT_FIELD(curvar, curvar, curvar); } static void -dump_perform(StringInfo str, PLpgSQL_stmt_perform *node) +dump_perform(StringInfo out, PLpgSQL_stmt_perform *node) { WRITE_NODE_TYPE("PLpgSQL_stmt_perform"); - WRITE_INT_FIELD(lineno); + WRITE_INT_FIELD(lineno, lineno, lineno); WRITE_EXPR_FIELD(expr); } static void -dump_exit(StringInfo str, PLpgSQL_stmt_exit *node) +dump_exit(StringInfo out, PLpgSQL_stmt_exit *node) { WRITE_NODE_TYPE("PLpgSQL_stmt_exit"); - WRITE_INT_FIELD(lineno); - WRITE_BOOL_FIELD(is_exit); - WRITE_STRING_FIELD(label); + WRITE_INT_FIELD(lineno, lineno, lineno); + WRITE_BOOL_FIELD(is_exit, is_exit, is_exit); + WRITE_STRING_FIELD(label, label, label); WRITE_EXPR_FIELD(cond); } static void -dump_return(StringInfo str, PLpgSQL_stmt_return *node) +dump_return(StringInfo out, PLpgSQL_stmt_return *node) { WRITE_NODE_TYPE("PLpgSQL_stmt_return"); - WRITE_INT_FIELD(lineno); + WRITE_INT_FIELD(lineno, lineno, lineno); WRITE_EXPR_FIELD(expr); //WRITE_INT_FIELD(retvarno); } static void -dump_return_next(StringInfo str, PLpgSQL_stmt_return_next *node) +dump_return_next(StringInfo out, PLpgSQL_stmt_return_next *node) { WRITE_NODE_TYPE("PLpgSQL_stmt_return_next"); - WRITE_INT_FIELD(lineno); + WRITE_INT_FIELD(lineno, lineno, lineno); WRITE_EXPR_FIELD(expr); //WRITE_INT_FIELD(retvarno); } static void -dump_return_query(StringInfo str, PLpgSQL_stmt_return_query *node) +dump_return_query(StringInfo out, PLpgSQL_stmt_return_query *node) { WRITE_NODE_TYPE("PLpgSQL_stmt_return_query"); - WRITE_INT_FIELD(lineno); + WRITE_INT_FIELD(lineno, lineno, lineno); WRITE_EXPR_FIELD(query); WRITE_EXPR_FIELD(dynquery); WRITE_LIST_FIELD(params, PLpgSQL_expr, dump_expr); } static void -dump_raise(StringInfo str, PLpgSQL_stmt_raise *node) +dump_raise(StringInfo out, PLpgSQL_stmt_raise *node) { WRITE_NODE_TYPE("PLpgSQL_stmt_raise"); - WRITE_INT_FIELD(lineno); - WRITE_INT_FIELD(elog_level); - WRITE_STRING_FIELD(condname); - WRITE_STRING_FIELD(message); + WRITE_INT_FIELD(lineno, lineno, lineno); + WRITE_INT_FIELD(elog_level, elog_level, elog_level); + WRITE_STRING_FIELD(condname, condname, condname); + WRITE_STRING_FIELD(message, message, message); WRITE_LIST_FIELD(params, PLpgSQL_expr, dump_expr); WRITE_LIST_FIELD(options, PLpgSQL_raise_option, dump_raise_option); } static void -dump_raise_option(StringInfo str, PLpgSQL_raise_option *node) +dump_raise_option(StringInfo out, PLpgSQL_raise_option *node) { WRITE_NODE_TYPE("PLpgSQL_raise_option"); - WRITE_ENUM_FIELD(opt_type); + WRITE_ENUM_FIELD(opt_type, opt_type, opt_type); WRITE_EXPR_FIELD(expr); } static void -dump_execsql(StringInfo str, PLpgSQL_stmt_execsql *node) +dump_execsql(StringInfo out, PLpgSQL_stmt_execsql *node) { WRITE_NODE_TYPE("PLpgSQL_stmt_execsql"); - WRITE_INT_FIELD(lineno); + WRITE_INT_FIELD(lineno, lineno, lineno); WRITE_EXPR_FIELD(sqlstmt); //WRITE_BOOL_FIELD(mod_stmt); // This is only populated when executing the function - WRITE_BOOL_FIELD(into); - WRITE_BOOL_FIELD(strict); - WRITE_RECORD_FIELD(rec); - WRITE_ROW_FIELD(row); + WRITE_BOOL_FIELD(into, into, into); + WRITE_BOOL_FIELD(strict, strict, strict); + WRITE_VARIABLE_FIELD(target); } static void -dump_dynexecute(StringInfo str, PLpgSQL_stmt_dynexecute *node) +dump_dynexecute(StringInfo out, PLpgSQL_stmt_dynexecute *node) { WRITE_NODE_TYPE("PLpgSQL_stmt_dynexecute"); - WRITE_INT_FIELD(lineno); + WRITE_INT_FIELD(lineno, lineno, lineno); WRITE_EXPR_FIELD(query); - WRITE_BOOL_FIELD(into); - WRITE_BOOL_FIELD(strict); - WRITE_RECORD_FIELD(rec); - WRITE_ROW_FIELD(row); + WRITE_BOOL_FIELD(into, into, into); + WRITE_BOOL_FIELD(strict, strict, strict); + WRITE_VARIABLE_FIELD(target); WRITE_LIST_FIELD(params, PLpgSQL_expr, dump_expr); } static void -dump_dynfors(StringInfo str, PLpgSQL_stmt_dynfors *node) +dump_dynfors(StringInfo out, PLpgSQL_stmt_dynfors *node) { WRITE_NODE_TYPE("PLpgSQL_stmt_dynfors"); - WRITE_INT_FIELD(lineno); - WRITE_STRING_FIELD(label); - WRITE_RECORD_FIELD(rec); - WRITE_ROW_FIELD(row); + WRITE_INT_FIELD(lineno, lineno, lineno); + WRITE_STRING_FIELD(label, label, label); + WRITE_VARIABLE_FIELD(var); WRITE_STATEMENTS_FIELD(body); WRITE_EXPR_FIELD(query); WRITE_LIST_FIELD(params, PLpgSQL_expr, dump_expr); } static void -dump_getdiag(StringInfo str, PLpgSQL_stmt_getdiag *node) +dump_getdiag(StringInfo out, PLpgSQL_stmt_getdiag *node) { WRITE_NODE_TYPE("PLpgSQL_stmt_getdiag"); - WRITE_INT_FIELD(lineno); - WRITE_BOOL_FIELD(is_stacked); + WRITE_INT_FIELD(lineno, lineno, lineno); + WRITE_BOOL_FIELD(is_stacked, is_stacked, is_stacked); WRITE_LIST_FIELD(diag_items, PLpgSQL_diag_item, dump_getdiag_item); } static void -dump_getdiag_item(StringInfo str, PLpgSQL_diag_item *node) +dump_getdiag_item(StringInfo out, PLpgSQL_diag_item *node) { WRITE_NODE_TYPE("PLpgSQL_diag_item"); WRITE_STRING_VALUE(kind, plpgsql_getdiag_kindname(node->kind)); - WRITE_INT_FIELD(target); + WRITE_INT_FIELD(target, target, target); } static void -dump_expr(StringInfo str, PLpgSQL_expr *node) +dump_expr(StringInfo out, PLpgSQL_expr *node) { WRITE_NODE_TYPE("PLpgSQL_expr"); - WRITE_STRING_FIELD(query); + WRITE_STRING_FIELD(query, query, query); } static void -dump_function(StringInfo str, PLpgSQL_function *node) +dump_function(StringInfo out, PLpgSQL_function *node) { int i; PLpgSQL_datum *d; WRITE_NODE_TYPE("PLpgSQL_function"); + WRITE_INT_FIELD(new_varno, new_varno, new_varno); + WRITE_INT_FIELD(old_varno, old_varno, old_varno); - appendStringInfoString(str, "\"datums\": "); - appendStringInfoChar(str, '['); + appendStringInfoString(out, "\"datums\":"); + appendStringInfoChar(out, '['); for (i = 0; i < node->ndatums; i++) { - appendStringInfoChar(str, '{'); + appendStringInfoChar(out, '{'); d = node->datums[i]; switch (d->dtype) { case PLPGSQL_DTYPE_VAR: - dump_var(str, (PLpgSQL_var *) d); + dump_var(out, (PLpgSQL_var *) d); break; case PLPGSQL_DTYPE_ROW: - dump_row(str, (PLpgSQL_row *) d); + dump_row(out, (PLpgSQL_row *) d); break; case PLPGSQL_DTYPE_REC: - dump_record(str, (PLpgSQL_rec *) d); + dump_record(out, (PLpgSQL_rec *) d); break; case PLPGSQL_DTYPE_RECFIELD: - dump_record_field(str, (PLpgSQL_recfield *) d); + dump_record_field(out, (PLpgSQL_recfield *) d); break; case PLPGSQL_DTYPE_ARRAYELEM: - dump_array_elem(str, (PLpgSQL_arrayelem *) d); + dump_array_elem(out, (PLpgSQL_arrayelem *) d); break; default: elog(WARNING, "could not dump unrecognized dtype: %d", (int) d->dtype); } - removeTrailingDelimiter(str); - appendStringInfoString(str, "}}, "); + removeTrailingDelimiter(out); + appendStringInfoString(out, "}},"); } - removeTrailingDelimiter(str); - appendStringInfoString(str, "], "); + removeTrailingDelimiter(out); + appendStringInfoString(out, "],"); WRITE_BLOCK_FIELD(action); } static void -dump_var(StringInfo str, PLpgSQL_var *node) +dump_var(StringInfo out, PLpgSQL_var *node) { WRITE_NODE_TYPE("PLpgSQL_var"); - WRITE_STRING_FIELD(refname); - WRITE_INT_FIELD(lineno); + WRITE_STRING_FIELD(refname, refname, refname); + WRITE_INT_FIELD(lineno, lineno, lineno); WRITE_OBJ_FIELD(datatype, dump_type); - WRITE_BOOL_FIELD(isconst); - WRITE_BOOL_FIELD(notnull); + WRITE_BOOL_FIELD(isconst, isconst, isconst); + WRITE_BOOL_FIELD(notnull, notnull, notnull); WRITE_EXPR_FIELD(default_val); WRITE_EXPR_FIELD(cursor_explicit_expr); - WRITE_INT_FIELD(cursor_explicit_argrow); - WRITE_INT_FIELD(cursor_options); + WRITE_INT_FIELD(cursor_explicit_argrow, cursor_explicit_argrow, cursor_explicit_argrow); + WRITE_INT_FIELD(cursor_options, cursor_options, cursor_options); +} + +static void +dump_variable(StringInfo out, PLpgSQL_variable *node) +{ + switch (node->dtype) + { + case PLPGSQL_DTYPE_REC: + dump_record(out, (PLpgSQL_rec *) node); + break; + case PLPGSQL_DTYPE_VAR: + dump_var(out, (PLpgSQL_var *) node); + break; + case PLPGSQL_DTYPE_ROW: + dump_row(out, (PLpgSQL_row *) node); + break; + default: + elog(ERROR, "unrecognized variable type: %d", node->dtype); + break; + } } static void -dump_type(StringInfo str, PLpgSQL_type *node) +dump_type(StringInfo out, PLpgSQL_type *node) { WRITE_NODE_TYPE("PLpgSQL_type"); - WRITE_STRING_FIELD(typname); + WRITE_STRING_FIELD(typname, typname, typname); } static void -dump_row(StringInfo str, PLpgSQL_row *node) +dump_row(StringInfo out, PLpgSQL_row *node) { int i = 0; WRITE_NODE_TYPE("PLpgSQL_row"); - WRITE_STRING_FIELD(refname); - WRITE_INT_FIELD(lineno); + WRITE_STRING_FIELD(refname, refname, refname); + WRITE_INT_FIELD(lineno, lineno, lineno); - appendStringInfoString(str, "\"fields\": "); - appendStringInfoChar(str, '['); + appendStringInfoString(out, "\"fields\":"); + appendStringInfoChar(out, '['); for (i = 0; i < node->nfields; i++) { if (node->fieldnames[i]) { - appendStringInfoChar(str, '{'); + appendStringInfoChar(out, '{'); WRITE_STRING_VALUE(name, node->fieldnames[i]); WRITE_INT_VALUE(varno, node->varnos[i]); - removeTrailingDelimiter(str); - appendStringInfoString(str, "}, "); + removeTrailingDelimiter(out); + appendStringInfoString(out, "},"); } else { - appendStringInfoString(str, "null, "); + appendStringInfoString(out, "null,"); } } - removeTrailingDelimiter(str); + removeTrailingDelimiter(out); - appendStringInfoString(str, "], "); + appendStringInfoString(out, "],"); } static void -dump_record(StringInfo str, PLpgSQL_rec *node) { +dump_record(StringInfo out, PLpgSQL_rec *node) { WRITE_NODE_TYPE("PLpgSQL_rec"); - WRITE_STRING_FIELD(refname); - WRITE_INT_FIELD(lineno); + WRITE_STRING_FIELD(refname, refname, refname); + WRITE_INT_FIELD(dno, dno, dno); + WRITE_INT_FIELD(lineno, lineno, lineno); } static void -dump_record_field(StringInfo str, PLpgSQL_recfield *node) { +dump_record_field(StringInfo out, PLpgSQL_recfield *node) { WRITE_NODE_TYPE("PLpgSQL_recfield"); - WRITE_STRING_FIELD(fieldname); - WRITE_INT_FIELD(recparentno); + WRITE_STRING_FIELD(fieldname, fieldname, fieldname); + WRITE_INT_FIELD(recparentno, recparentno, recparentno); } static void -dump_array_elem(StringInfo str, PLpgSQL_arrayelem *node) { +dump_array_elem(StringInfo out, PLpgSQL_arrayelem *node) { WRITE_NODE_TYPE("PLpgSQL_arrayelem"); WRITE_EXPR_FIELD(subscript); - WRITE_INT_FIELD(arrayparentno); + WRITE_INT_FIELD(arrayparentno, arrayparentno, arrayparentno); } char * diff --git a/parser/pg_query_normalize.c b/parser/pg_query_normalize.c index 3f328a0a..6c187e0b 100644 --- a/parser/pg_query_normalize.c +++ b/parser/pg_query_normalize.c @@ -32,6 +32,10 @@ typedef struct pgssConstLocations /* highest Param id we've seen, in order to start normalization correctly */ int highest_extern_param_id; + + /* query text */ + const char * query; + int query_len; } pgssConstLocations; /* @@ -96,8 +100,8 @@ fill_in_constant_lengths(pgssConstLocations *jstate, const char *query) /* initialize the flex scanner --- should match raw_parser() */ yyscanner = scanner_init(query, &yyextra, - ScanKeywords, - NumScanKeywords); + &ScanKeywords, + ScanKeywordTokens); /* Search for each constant, in sequence */ for (i = 0; i < jstate->clocations_count; i++) @@ -192,10 +196,10 @@ fill_in_constant_lengths(pgssConstLocations *jstate, const char *query) * Returns a palloc'd string. */ static char * -generate_normalized_query(pgssConstLocations *jstate, const char *query, - int query_loc, int *query_len_p, int encoding) +generate_normalized_query(pgssConstLocations *jstate, int query_loc, int* query_len_p, int encoding) { char *norm_query; + const char *query = jstate->query; int query_len = *query_len_p; int i, norm_query_buflen, /* Space allowed for norm_query */ @@ -311,6 +315,13 @@ static bool const_record_walker(Node *node, pgssConstLocations *jstate) } else if (IsA(node, DefElem)) { + DefElem * defElem = (DefElem *) node; + if (defElem->arg != NULL && IsA(defElem->arg, String)) { + for (int i = defElem->location; i < jstate->query_len; i++) { + if (jstate->query[i] == '\'') + RecordConstLocation(jstate, i); + } + } return const_record_walker((Node *) ((DefElem *) node)->arg, jstate); } else if (IsA(node, RawStmt)) @@ -329,6 +340,10 @@ static bool const_record_walker(Node *node, pgssConstLocations *jstate) { return const_record_walker((Node *) ((ExplainStmt *) node)->query, jstate); } + else if (IsA(node, CreateRoleStmt)) + { + return const_record_walker((Node *) ((CreateRoleStmt *) node)->options, jstate); + } else if (IsA(node, AlterRoleStmt)) { return const_record_walker((Node *) ((AlterRoleStmt *) node)->options, jstate); @@ -369,19 +384,22 @@ PgQueryNormalizeResult pg_query_normalize(const char* input) /* Parse query */ tree = raw_parser(input); + query_len = (int) strlen(input); + /* Set up workspace for constant recording */ jstate.clocations_buf_size = 32; jstate.clocations = (pgssLocationLen *) palloc(jstate.clocations_buf_size * sizeof(pgssLocationLen)); jstate.clocations_count = 0; jstate.highest_extern_param_id = 0; + jstate.query = input; + jstate.query_len = query_len; /* Walk tree and record const locations */ const_record_walker((Node *) tree, &jstate); /* Normalize query */ - query_len = (int) strlen(input); - result.normalized_query = strdup(generate_normalized_query(&jstate, input, 0, &query_len, PG_UTF8)); + result.normalized_query = strdup(generate_normalized_query(&jstate, 0, &query_len, PG_UTF8)); } PG_CATCH(); { diff --git a/parser/pg_query_outfuncs.h b/parser/pg_query_outfuncs.h new file mode 100644 index 00000000..d1c61c31 --- /dev/null +++ b/parser/pg_query_outfuncs.h @@ -0,0 +1,10 @@ +#ifndef PG_QUERY_OUTFUNCS_H +#define PG_QUERY_OUTFUNCS_H + +#include "pg_query.h" + +PgQueryProtobuf pg_query_nodes_to_protobuf(const void *obj); + +char *pg_query_nodes_to_json(const void *obj); + +#endif diff --git a/parser/pg_query_outfuncs_json.c b/parser/pg_query_outfuncs_json.c new file mode 100644 index 00000000..9051a7cb --- /dev/null +++ b/parser/pg_query_outfuncs_json.c @@ -0,0 +1,297 @@ +#include "pg_query_outfuncs.h" + +#include "postgres.h" + +#include + +#include "access/relation.h" +#include "nodes/parsenodes.h" +#include "nodes/plannodes.h" +#include "nodes/value.h" +#include "utils/datum.h" + +#include "pg_query_json_helper.c" + +#define OUT_TYPE(typename, typename_c) StringInfo + +#define OUT_NODE(typename, typename_c, typename_underscore, typename_underscore_upcase, typename_cast, fldname) \ + { \ + WRITE_NODE_TYPE(CppAsString(typename)); \ + _out##typename_c(out, (const typename_cast *) obj); \ + } + +/* Write the label for the node type */ +#define WRITE_NODE_TYPE(nodelabel) \ + appendStringInfoString(out, "\"" nodelabel "\":{") + +/* Write an integer field */ +#define WRITE_INT_FIELD(outname, outname_json, fldname) \ + if (node->fldname != 0) { \ + appendStringInfo(out, "\"" CppAsString(outname_json) "\":%d,", node->fldname); \ + } + +/* Write an unsigned integer field */ +#define WRITE_UINT_FIELD(outname, outname_json, fldname) \ + if (node->fldname != 0) { \ + appendStringInfo(out, "\"" CppAsString(outname_json) "\":%u,", node->fldname); \ + } + +/* Write a long-integer field */ +#define WRITE_LONG_FIELD(outname, outname_json, fldname) \ + if (node->fldname != 0) { \ + appendStringInfo(out, "\"" CppAsString(outname_json) "\":%ld,", node->fldname); \ + } + +/* Write a char field (ie, one ascii character) */ +#define WRITE_CHAR_FIELD(outname, outname_json, fldname) \ + if (node->fldname != 0) { \ + appendStringInfo(out, "\"" CppAsString(outname_json) "\":\"%c\",", node->fldname); \ + } + +/* Write an enumerated-type field */ +#define WRITE_ENUM_FIELD(typename, outname, outname_json, fldname) \ + appendStringInfo(out, "\"" CppAsString(outname_json) "\":\"%s\",", \ + _enumToString##typename(node->fldname)); + +/* Write a float field */ +#define WRITE_FLOAT_FIELD(outname, outname_json, fldname) \ + appendStringInfo(out, "\"" CppAsString(outname_json) "\":%f,", node->fldname) + +/* Write a boolean field */ +#define WRITE_BOOL_FIELD(outname, outname_json, fldname) \ + if (node->fldname) { \ + appendStringInfo(out, "\"" CppAsString(outname_json) "\":%s,", \ + booltostr(node->fldname)); \ + } + +/* Write a character-string (possibly NULL) field */ +#define WRITE_STRING_FIELD(outname, outname_json, fldname) \ + if (node->fldname != NULL) { \ + appendStringInfo(out, "\"" CppAsString(outname_json) "\":"); \ + _outToken(out, node->fldname); \ + appendStringInfo(out, ","); \ + } + +#define WRITE_LIST_FIELD(outname, outname_json, fldname) \ + if (node->fldname != NULL) { \ + const ListCell *lc; \ + appendStringInfo(out, "\"" CppAsString(outname_json) "\":"); \ + appendStringInfoChar(out, '['); \ + foreach(lc, node->fldname) { \ + if (lfirst(lc) == NULL) \ + appendStringInfoString(out, "{}"); \ + else \ + _outNode(out, lfirst(lc)); \ + if (lnext(node->fldname, lc)) \ + appendStringInfoString(out, ","); \ + } \ + appendStringInfo(out, "],"); \ + } + +#define WRITE_NODE_FIELD(outname, outname_json, fldname) \ + if (true) { \ + appendStringInfo(out, "\"" CppAsString(outname_json) "\":"); \ + _outNode(out, &node->fldname); \ + appendStringInfo(out, ","); \ + } + +#define WRITE_NODE_PTR_FIELD(outname, outname_json, fldname) \ + if (node->fldname != NULL) { \ + appendStringInfo(out, "\"" CppAsString(outname_json) "\":"); \ + _outNode(out, node->fldname); \ + appendStringInfo(out, ","); \ + } + +#define WRITE_SPECIFIC_NODE_FIELD(typename, typename_underscore, outname, outname_json, fldname) \ + { \ + appendStringInfo(out, "\"" CppAsString(outname_json) "\":{"); \ + _out##typename(out, &node->fldname); \ + removeTrailingDelimiter(out); \ + appendStringInfo(out, "},"); \ + } + +#define WRITE_SPECIFIC_NODE_PTR_FIELD(typename, typename_underscore, outname, outname_json, fldname) \ + if (node->fldname != NULL) { \ + appendStringInfo(out, "\"" CppAsString(outname_json) "\":{"); \ + _out##typename(out, node->fldname); \ + removeTrailingDelimiter(out); \ + appendStringInfo(out, "},"); \ + } + +#define WRITE_BITMAPSET_FIELD(outname, outname_json, fldname) \ + if (!bms_is_empty(node->fldname)) \ + { \ + int x = 0; \ + appendStringInfo(out, "\"" CppAsString(outname_json) "\":["); \ + while ((x = bms_next_member(node->fldname, x)) >= 0) \ + appendStringInfo(out, "%d,", x); \ + removeTrailingDelimiter(out); \ + appendStringInfo(out, "],"); \ + } + +static void _outNode(StringInfo out, const void *obj); + +static void +_outList(StringInfo out, const List *node) +{ + const ListCell *lc; + + appendStringInfo(out, "\"items\":"); + appendStringInfoChar(out, '['); + + foreach(lc, node) + { + if (lfirst(lc) == NULL) + appendStringInfoString(out, "{}"); + else + _outNode(out, lfirst(lc)); + + if (lnext(node, lc)) + appendStringInfoString(out, ","); + } + + appendStringInfoChar(out, ']'); + appendStringInfo(out, ","); +} + +static void +_outIntList(StringInfo out, const List *node) +{ + const ListCell *lc; + + appendStringInfo(out, "\"items\":"); + appendStringInfoChar(out, '['); + + foreach(lc, node) + { + appendStringInfo(out, "%d", lfirst_int(lc)); + + if (lnext(node, lc)) + appendStringInfoString(out, ","); + } + + appendStringInfoChar(out, ']'); + appendStringInfo(out, ","); +} + +static void +_outOidList(StringInfo out, const List *node) +{ + const ListCell *lc; + + appendStringInfo(out, "\"items\":"); + appendStringInfoChar(out, '['); + + foreach(lc, node) + { + appendStringInfo(out, "%u", lfirst_oid(lc)); + + if (lnext(node, lc)) + appendStringInfoString(out, ","); + } + + appendStringInfoChar(out, ']'); + appendStringInfo(out, ","); +} + +static void +_outInteger(StringInfo out, const Value *node) +{ + appendStringInfo(out, "\"ival\":%d,", node->val.ival); +} + +static void +_outFloat(StringInfo out, const Value *node) +{ + appendStringInfo(out, "\"str\":"); + _outToken(out, node->val.str); + appendStringInfo(out, ","); +} + +static void +_outString(StringInfo out, const Value *node) +{ + appendStringInfo(out, "\"str\":"); + _outToken(out, node->val.str); + appendStringInfo(out, ","); +} + +static void +_outBitString(StringInfo out, const Value *node) +{ + appendStringInfo(out, "\"str\":"); + _outToken(out, node->val.str); + appendStringInfo(out, ","); +} + +static void +_outNull(StringInfo out, const Value *node) +{ + // No fields +} + +#include "pg_query_enum_defs.c" +#include "pg_query_outfuncs_defs.c" + +static void +_outNode(StringInfo out, const void *obj) +{ + if (obj == NULL) + { + appendStringInfoString(out, "null"); + } + else + { + appendStringInfoChar(out, '{'); + switch (nodeTag(obj)) + { + #include "pg_query_outfuncs_conds.c" + + default: + elog(WARNING, "could not dump unrecognized node type: %d", + (int) nodeTag(obj)); + + appendStringInfo(out, "}"); + return; + } + removeTrailingDelimiter(out); + appendStringInfo(out, "}}"); + } +} + +char * +pg_query_nodes_to_json(const void *obj) +{ + StringInfoData out; + const ListCell *lc; + + initStringInfo(&out); + + if (obj == NULL) /* Make sure we generate valid JSON for empty queries */ + { + appendStringInfo(&out, "{\"version\":%d,\"stmts\":[]}", PG_VERSION_NUM); + } + else + { + appendStringInfoString(&out, "{"); + appendStringInfo(&out, "\"version\":%d,", PG_VERSION_NUM); + appendStringInfoString(&out, "\"stmts\":"); + appendStringInfoChar(&out, '['); + + foreach(lc, obj) + { + appendStringInfoChar(&out, '{'); + _outRawStmt(&out, lfirst(lc)); + removeTrailingDelimiter(&out); + appendStringInfoChar(&out, '}'); + + if (lnext(obj, lc)) + appendStringInfoString(&out, ","); + } + + appendStringInfoChar(&out, ']'); + appendStringInfoString(&out, "}"); + } + + return out.data; +} diff --git a/parser/pg_query_outfuncs_protobuf.c b/parser/pg_query_outfuncs_protobuf.c new file mode 100644 index 00000000..0046d84b --- /dev/null +++ b/parser/pg_query_outfuncs_protobuf.c @@ -0,0 +1,237 @@ +#include "pg_query_outfuncs.h" + +#include "postgres.h" +#include +#include "access/relation.h" +#include "nodes/parsenodes.h" +#include "nodes/plannodes.h" +#include "nodes/value.h" +#include "utils/datum.h" + +#include "protobuf/pg_query.pb-c.h" + +#define OUT_TYPE(typename, typename_c) PgQuery__##typename_c* + +#define OUT_NODE(typename, typename_c, typename_underscore, typename_underscore_upcase, typename_cast, fldname) \ + { \ + PgQuery__##typename_c *__node = palloc(sizeof(PgQuery__##typename_c)); \ + pg_query__##typename_underscore##__init(__node); \ + _out##typename_c(__node, (const typename_cast *) obj); \ + out->fldname = __node; \ + out->node_case = PG_QUERY__NODE__NODE_##typename_underscore_upcase; \ + } + +#define WRITE_INT_FIELD(outname, outname_json, fldname) out->outname = node->fldname; +#define WRITE_UINT_FIELD(outname, outname_json, fldname) out->outname = node->fldname; +#define WRITE_LONG_FIELD(outname, outname_json, fldname) out->outname = node->fldname; +#define WRITE_FLOAT_FIELD(outname, outname_json, fldname) out->outname = node->fldname; +#define WRITE_BOOL_FIELD(outname, outname_json, fldname) out->outname = node->fldname; + +#define WRITE_CHAR_FIELD(outname, outname_json, fldname) \ + if (node->fldname != 0) { \ + out->outname = palloc(sizeof(char) * 2); \ + out->outname[0] = node->fldname; \ + out->outname[1] = '\0'; \ + } +#define WRITE_STRING_FIELD(outname, outname_json, fldname) \ + if (node->fldname != NULL) { \ + out->outname = pstrdup(node->fldname); \ + } + +#define WRITE_ENUM_FIELD(typename, outname, outname_json, fldname) \ + out->outname = _enumToInt##typename(node->fldname); + +#define WRITE_LIST_FIELD(outname, outname_json, fldname) \ + if (node->fldname != NULL) { \ + out->n_##outname = list_length(node->fldname); \ + out->outname = palloc(sizeof(PgQuery__Node*) * out->n_##outname); \ + for (int i = 0; i < out->n_##outname; i++) \ + { \ + PgQuery__Node *__node = palloc(sizeof(PgQuery__Node)); \ + pg_query__node__init(__node); \ + out->outname[i] = __node; \ + _outNode(out->outname[i], list_nth(node->fldname, i)); \ + } \ + } + +#define WRITE_BITMAPSET_FIELD(outname, outname_json, fldname) \ + if (!bms_is_empty(node->fldname)) \ + { \ + int x = 0; \ + int i = 0; \ + out->n_##outname = bms_num_members(node->fldname); \ + out->outname = palloc(sizeof(PgQuery__Node*) * out->n_##outname); \ + while ((x = bms_first_member(node->fldname)) >= 0) \ + out->outname[i++] = x; \ + } + +#define WRITE_NODE_FIELD(outname, outname_json, fldname) \ + { \ + PgQuery__Node *__node = palloc(sizeof(PgQuery__Node)); \ + pg_query__node__init(__node); \ + out->outname = __node; \ + _outNode(out->outname, &node->fldname); \ + } + +#define WRITE_NODE_PTR_FIELD(outname, outname_json, fldname) \ + if (node->fldname != NULL) { \ + PgQuery__Node *__node = palloc(sizeof(PgQuery__Node)); \ + pg_query__node__init(__node); \ + out->outname = __node; \ + _outNode(out->outname, node->fldname); \ + } + +#define WRITE_SPECIFIC_NODE_FIELD(typename, typename_underscore, outname, outname_json, fldname) \ + { \ + PgQuery__##typename *__node = palloc(sizeof(PgQuery__##typename)); \ + pg_query__##typename_underscore##__init(__node); \ + _out##typename(__node, &node->fldname); \ + out->outname = __node; \ + } + +#define WRITE_SPECIFIC_NODE_PTR_FIELD(typename, typename_underscore, outname, outname_json, fldname) \ + if (node->fldname != NULL) { \ + PgQuery__##typename *__node = palloc(sizeof(PgQuery__##typename)); \ + pg_query__##typename_underscore##__init(__node); \ + _out##typename(__node, node->fldname); \ + out->outname = __node; \ + } + +static void _outNode(PgQuery__Node* out, const void *obj); + +static void +_outList(PgQuery__List* out, const List *node) +{ + const ListCell *lc; + int i = 0; + out->n_items = list_length(node); + out->items = palloc(sizeof(PgQuery__Node*) * out->n_items); + foreach(lc, node) + { + out->items[i] = palloc(sizeof(PgQuery__Node)); + pg_query__node__init(out->items[i]); + _outNode(out->items[i], lfirst(lc)); + i++; + } +} + +static void +_outIntList(PgQuery__IntList* out, const List *node) +{ + const ListCell *lc; + int i = 0; + out->n_items = list_length(node); + out->items = palloc(sizeof(PgQuery__Node*) * out->n_items); + foreach(lc, node) + { + out->items[i] = palloc(sizeof(PgQuery__Node)); + pg_query__node__init(out->items[i]); + _outNode(out->items[i], lfirst(lc)); + i++; + } +} + +static void +_outOidList(PgQuery__OidList* out, const List *node) +{ + const ListCell *lc; + int i = 0; + out->n_items = list_length(node); + out->items = palloc(sizeof(PgQuery__Node*) * out->n_items); + foreach(lc, node) + { + out->items[i] = palloc(sizeof(PgQuery__Node)); + pg_query__node__init(out->items[i]); + _outNode(out->items[i], lfirst(lc)); + i++; + } +} + +// TODO: Add Bitmapset + +static void +_outInteger(PgQuery__Integer* out, const Value *node) +{ + out->ival = node->val.ival; +} + +static void +_outFloat(PgQuery__Float* out, const Value *node) +{ + out->str = node->val.str; +} + +static void +_outString(PgQuery__String* out, const Value *node) +{ + out->str = node->val.str; +} + +static void +_outBitString(PgQuery__BitString* out, const Value *node) +{ + out->str = node->val.str; +} + +static void +_outNull(PgQuery__Null* out, const Value *node) +{ + // Null has no fields +} + +#include "pg_query_enum_defs.c" +#include "pg_query_outfuncs_defs.c" + +static void +_outNode(PgQuery__Node* out, const void *obj) +{ + if (obj == NULL) + return; // Keep out as NULL + + switch (nodeTag(obj)) + { + #include "pg_query_outfuncs_conds.c" + + default: + printf("could not dump unrecognized node type: %d", (int) nodeTag(obj)); + elog(WARNING, "could not dump unrecognized node type: %d", + (int) nodeTag(obj)); + + return; + } +} + +PgQueryProtobuf +pg_query_nodes_to_protobuf(const void *obj) +{ + PgQueryProtobuf protobuf; + const ListCell *lc; + int i = 0; + PgQuery__ParseResult parse_result = PG_QUERY__PARSE_RESULT__INIT; + + parse_result.version = PG_VERSION_NUM; + + if (obj == NULL) { + parse_result.n_stmts = 0; + parse_result.stmts = NULL; + } + else + { + parse_result.n_stmts = list_length(obj); + parse_result.stmts = palloc(sizeof(PgQuery__RawStmt*) * parse_result.n_stmts); + foreach(lc, obj) + { + parse_result.stmts[i] = palloc(sizeof(PgQuery__RawStmt)); + pg_query__raw_stmt__init(parse_result.stmts[i]); + _outRawStmt(parse_result.stmts[i], lfirst(lc)); + i++; + } + } + + protobuf.len = pg_query__parse_result__get_packed_size(&parse_result); + // Note: This is intentionally malloc so exiting the memory context doesn't free this + protobuf.data = malloc(sizeof(char) * protobuf.len); + pg_query__parse_result__pack(&parse_result, (void*) protobuf.data); + + return protobuf; +} diff --git a/parser/pg_query_parse.c b/parser/pg_query_parse.c index fe1348b7..d267eafe 100644 --- a/parser/pg_query_parse.c +++ b/parser/pg_query_parse.c @@ -1,6 +1,6 @@ #include "pg_query.h" #include "pg_query_internal.h" -#include "pg_query_json.h" +#include "pg_query_outfuncs.h" #include "parser/parser.h" #include "parser/scanner.h" @@ -88,6 +88,7 @@ PgQueryParseResult pg_query_parse(const char* input) MemoryContext ctx = NULL; PgQueryInternalParsetreeAndError parsetree_and_error; PgQueryParseResult result = {0}; + char *tree_json = NULL; ctx = pg_query_enter_memory_context(); @@ -97,16 +98,29 @@ PgQueryParseResult pg_query_parse(const char* input) result.stderr_buffer = parsetree_and_error.stderr_buffer; result.error = parsetree_and_error.error; - if (parsetree_and_error.tree != NULL) { - char *tree_json; + tree_json = pg_query_nodes_to_json(parsetree_and_error.tree); + result.parse_tree = strdup(tree_json); + pfree(tree_json); - tree_json = pg_query_nodes_to_json(parsetree_and_error.tree); + pg_query_exit_memory_context(ctx); - result.parse_tree = strdup(tree_json); - pfree(tree_json); - } else { - result.parse_tree = strdup("[]"); - } + return result; +} + +PgQueryProtobufParseResult pg_query_parse_protobuf(const char* input) +{ + MemoryContext ctx = NULL; + PgQueryInternalParsetreeAndError parsetree_and_error; + PgQueryProtobufParseResult result = {}; + + ctx = pg_query_enter_memory_context(); + + parsetree_and_error = pg_query_raw_parse(input); + + // These are all malloc-ed and will survive exiting the memory context, the caller is responsible to free them now + result.stderr_buffer = parsetree_and_error.stderr_buffer; + result.error = parsetree_and_error.error; + result.parse_tree = pg_query_nodes_to_protobuf(parsetree_and_error.tree); pg_query_exit_memory_context(ctx); @@ -115,10 +129,20 @@ PgQueryParseResult pg_query_parse(const char* input) void pg_query_free_parse_result(PgQueryParseResult result) { - if (result.error) { + if (result.error) { pg_query_free_error(result.error); - } + } + + free(result.parse_tree); + free(result.stderr_buffer); +} + +void pg_query_free_protobuf_parse_result(PgQueryProtobufParseResult result) +{ + if (result.error) { + pg_query_free_error(result.error); + } - free(result.parse_tree); - free(result.stderr_buffer); + free(result.parse_tree.data); + free(result.stderr_buffer); } diff --git a/parser/pg_query_parse_plpgsql.c b/parser/pg_query_parse_plpgsql.c index 16f45a28..7e818397 100644 --- a/parser/pg_query_parse_plpgsql.c +++ b/parser/pg_query_parse_plpgsql.c @@ -8,7 +8,8 @@ #include #include -#include +#include +#include #include #include @@ -182,6 +183,8 @@ static PLpgSQL_function *compile_create_function_stmt(CreateFunctionStmt* stmt) function->fn_rettype = VOIDOID; function->fn_retset = is_setof; function->fn_retistuple = false; + function->fn_retisdomain = false; + function->fn_prokind = PROKIND_FUNCTION; /* a bit of hardwired knowledge about type VOID here */ function->fn_retbyval = true; function->fn_rettyplen = sizeof(int32); @@ -198,17 +201,18 @@ static PLpgSQL_function *compile_create_function_stmt(CreateFunctionStmt* stmt) var = plpgsql_build_variable("found", 0, plpgsql_build_datatype(BOOLOID, -1, - InvalidOid), + InvalidOid, + NULL), true); function->found_varno = var->dno; if (is_trigger) { /* Add the record for referencing NEW */ - rec = plpgsql_build_record("new", 0, true); + rec = plpgsql_build_record("new", 0, NULL, RECORDOID, true); function->new_varno = rec->dno; /* Add the record for referencing OLD */ - rec = plpgsql_build_record("old", 0, true); + rec = plpgsql_build_record("old", 0, NULL, RECORDOID, true); function->old_varno = rec->dno; } diff --git a/parser/pg_query_readfuncs.h b/parser/pg_query_readfuncs.h new file mode 100644 index 00000000..aa273c17 --- /dev/null +++ b/parser/pg_query_readfuncs.h @@ -0,0 +1,11 @@ +#ifndef PG_QUERY_READFUNCS_H +#define PG_QUERY_READFUNCS_H + +#include "pg_query.h" + +#include "postgres.h" +#include "nodes/pg_list.h" + +List * pg_query_protobuf_to_nodes(PgQueryProtobuf protobuf); + +#endif diff --git a/parser/pg_query_readfuncs_protobuf.c b/parser/pg_query_readfuncs_protobuf.c new file mode 100644 index 00000000..6ebf41d2 --- /dev/null +++ b/parser/pg_query_readfuncs_protobuf.c @@ -0,0 +1,142 @@ +#include "pg_query_readfuncs.h" + +#include "nodes/nodes.h" +#include "nodes/parsenodes.h" +#include "nodes/pg_list.h" + +#include "protobuf/pg_query.pb-c.h" + +#define OUT_TYPE(typename, typename_c) PgQuery__##typename_c* + +#define READ_COND(typename, typename_c, typename_underscore, typename_underscore_upcase, typename_cast, outname) \ + case PG_QUERY__NODE__NODE_##typename_underscore_upcase: \ + return (Node *) _read##typename_c(msg->outname); + +#define READ_INT_FIELD(outname, outname_json, fldname) node->fldname = msg->outname; +#define READ_UINT_FIELD(outname, outname_json, fldname) node->fldname = msg->outname; +#define READ_LONG_FIELD(outname, outname_json, fldname) node->fldname = msg->outname; +#define READ_FLOAT_FIELD(outname, outname_json, fldname) node->fldname = msg->outname; +#define READ_BOOL_FIELD(outname, outname_json, fldname) node->fldname = msg->outname; + +#define READ_CHAR_FIELD(outname, outname_json, fldname) \ + if (msg->outname != NULL && strlen(msg->outname) > 0) { \ + node->fldname = msg->outname[0]; \ + } + +#define READ_STRING_FIELD(outname, outname_json, fldname) \ + if (msg->outname != NULL && strlen(msg->outname) > 0) { \ + node->fldname = pstrdup(msg->outname); \ + } + +#define READ_ENUM_FIELD(typename, outname, outname_json, fldname) \ + node->fldname = _intToEnum##typename(msg->outname); + +#define READ_LIST_FIELD(outname, outname_json, fldname) \ + { \ + if (msg->n_##outname > 0) \ + node->fldname = list_make1(_readNode(msg->outname[0])); \ + for (int i = 1; i < msg->n_##outname; i++) \ + node->fldname = lappend(node->fldname, _readNode(msg->outname[i])); \ + } + +#define READ_BITMAPSET_FIELD(outname, outname_json, fldname) // FIXME + +#define READ_NODE_FIELD(outname, outname_json, fldname) \ + node->fldname = *_readNode(msg->outname); + +#define READ_NODE_PTR_FIELD(outname, outname_json, fldname) \ + if (msg->outname != NULL) { \ + node->fldname = _readNode(msg->outname); \ + } + +#define READ_EXPR_PTR_FIELD(outname, outname_json, fldname) \ + if (msg->outname != NULL) { \ + node->fldname = (Expr *) _readNode(msg->outname); \ + } + +#define READ_VALUE_FIELD(outname, outname_json, fldname) \ + if (msg->outname != NULL) { \ + node->fldname = *((Value *) _readNode(msg->outname)); \ + } + +#define READ_VALUE_PTR_FIELD(outname, outname_json, fldname) \ + if (msg->outname != NULL) { \ + node->fldname = (Value *) _readNode(msg->outname); \ + } + +#define READ_SPECIFIC_NODE_FIELD(typename, typename_underscore, outname, outname_json, fldname) \ + node->fldname = *_read##typename(msg->outname); + +#define READ_SPECIFIC_NODE_PTR_FIELD(typename, typename_underscore, outname, outname_json, fldname) \ + if (msg->outname != NULL) { \ + node->fldname = _read##typename(msg->outname); \ + } + +static Node * _readNode(PgQuery__Node *msg); + +#include "pg_query_enum_defs.c" +#include "pg_query_readfuncs_defs.c" + +static List * _readList(PgQuery__List *msg) +{ + List *node = NULL; + if (msg->n_items > 0) + node = list_make1(_readNode(msg->items[0])); + for (int i = 1; i < msg->n_items; i++) + node = lappend(node, _readNode(msg->items[i])); + return node; +} + +static Node * _readNode(PgQuery__Node *msg) +{ + switch (msg->node_case) + { + #include "pg_query_readfuncs_conds.c" + + case PG_QUERY__NODE__NODE_INTEGER: + return (Node *) makeInteger(msg->integer->ival); + case PG_QUERY__NODE__NODE_FLOAT: + return (Node *) makeFloat(pstrdup(msg->float_->str)); + case PG_QUERY__NODE__NODE_STRING: + return (Node *) makeString(pstrdup(msg->string->str)); + case PG_QUERY__NODE__NODE_BIT_STRING: + return (Node *) makeBitString(pstrdup(msg->bit_string->str)); + case PG_QUERY__NODE__NODE_NULL: + { + Value *v = makeNode(Value); + v->type = T_Null; + return (Node *) v; + } + case PG_QUERY__NODE__NODE_LIST: + return (Node *) _readList(msg->list); + case PG_QUERY__NODE__NODE__NOT_SET: + return NULL; + default: + elog(ERROR, "unsupported protobuf node type: %d", + (int) msg->node_case); + } +} + +List * pg_query_protobuf_to_nodes(PgQueryProtobuf protobuf) +{ + PgQuery__ParseResult *result = NULL; + List * list = NULL; + size_t i = 0; + + result = pg_query__parse_result__unpack(NULL, protobuf.len, (const uint8_t *) protobuf.data); + + // TODO: Handle this by returning an error instead + Assert(result != NULL); + + // TODO: Handle this by returning an error instead + Assert(result->version == PG_VERSION_NUM); + + if (result->n_stmts > 0) + list = list_make1(_readRawStmt(result->stmts[0])); + for (i = 1; i < result->n_stmts; i++) + list = lappend(list, _readRawStmt(result->stmts[i])); + + pg_query__parse_result__free_unpacked(result, NULL); + + return list; +} diff --git a/parser/pg_query_scan.c b/parser/pg_query_scan.c new file mode 100644 index 00000000..4f816b6d --- /dev/null +++ b/parser/pg_query_scan.c @@ -0,0 +1,173 @@ +#include "pg_query.h" +#include "pg_query_internal.h" + +#include "parser/gramparse.h" +#include "lib/stringinfo.h" + +#include "protobuf/pg_query.pb-c.h" + +#include +#include + +/* This is ugly. We need to access yyleng outside of scan.l, and casting yyscanner + to this internal struct seemed like one way to do it... */ +struct yyguts_t +{ + void *yyextra_r; + FILE *yyin_r, *yyout_r; + size_t yy_buffer_stack_top; /**< index of top of stack. */ + size_t yy_buffer_stack_max; /**< capacity of stack. */ + struct yy_buffer_state *yy_buffer_stack; /**< Stack as an array. */ + char yy_hold_char; + size_t yy_n_chars; + size_t yyleng_r; +}; + +PgQueryScanResult pg_query_scan(const char* input) +{ + MemoryContext ctx = NULL; + PgQueryScanResult result = {0}; + core_yyscan_t yyscanner; + core_yy_extra_type yyextra; + core_YYSTYPE yylval; + YYLTYPE yylloc; + PgQuery__ScanResult scan_result = PG_QUERY__SCAN_RESULT__INIT; + PgQuery__ScanToken **output_tokens; + size_t token_count = 0; + size_t i; + + ctx = pg_query_enter_memory_context(); + + MemoryContext parse_context = CurrentMemoryContext; + + char stderr_buffer[STDERR_BUFFER_LEN + 1] = {0}; +#ifndef DEBUG + int stderr_global; + int stderr_pipe[2]; +#endif + +#ifndef DEBUG + // Setup pipe for stderr redirection + if (pipe(stderr_pipe) != 0) { + PgQueryError* error = malloc(sizeof(PgQueryError)); + + error->message = strdup("Failed to open pipe, too many open file descriptors") + + result.error = error; + + return result; + } + + fcntl(stderr_pipe[0], F_SETFL, fcntl(stderr_pipe[0], F_GETFL) | O_NONBLOCK); + + // Redirect stderr to the pipe + stderr_global = dup(STDERR_FILENO); + dup2(stderr_pipe[1], STDERR_FILENO); + close(stderr_pipe[1]); +#endif + + PG_TRY(); + { + // Really this is stupid, we only run twice so we can pre-allocate the output array correctly + yyscanner = scanner_init(input, &yyextra, &ScanKeywords, ScanKeywordTokens); + for (;; token_count++) + { + if (core_yylex(&yylval, &yylloc, yyscanner) == 0) break; + } + scanner_finish(yyscanner); + + output_tokens = malloc(sizeof(PgQuery__ScanToken *) * token_count); + + /* initialize the flex scanner --- should match raw_parser() */ + yyscanner = scanner_init(input, &yyextra, &ScanKeywords, ScanKeywordTokens); + + /* Lex tokens */ + for (i = 0; ; i++) + { + int tok; + int keyword; + + tok = core_yylex(&yylval, &yylloc, yyscanner); + if (tok == 0) break; + + output_tokens[i] = malloc(sizeof(PgQuery__ScanToken)); + pg_query__scan_token__init(output_tokens[i]); + output_tokens[i]->start = yylloc; + if (tok == SCONST || tok == BCONST || tok == XCONST || tok == IDENT || tok == C_COMMENT) { + output_tokens[i]->end = yyextra.yyllocend; + } else { + output_tokens[i]->end = yylloc + ((struct yyguts_t*) yyscanner)->yyleng_r; + } + output_tokens[i]->token = tok; + + switch (tok) { + #define PG_KEYWORD(a,b,c) case b: output_tokens[i]->keyword_kind = c + 1; break; + #include "parser/kwlist.h" + default: output_tokens[i]->keyword_kind = 0; + } + } + + scanner_finish(yyscanner); + + scan_result.version = PG_VERSION_NUM; + scan_result.n_tokens = token_count; + scan_result.tokens = output_tokens; + result.pbuf.len = pg_query__scan_result__get_packed_size(&scan_result); + result.pbuf.data = malloc(result.pbuf.len); + pg_query__scan_result__pack(&scan_result, (void*) result.pbuf.data); + + for (i = 0; i < token_count; i++) { + free(output_tokens[i]); + } + free(output_tokens); + +#ifndef DEBUG + // Save stderr for result + read(stderr_pipe[0], stderr_buffer, STDERR_BUFFER_LEN); +#endif + + result.stderr_buffer = strdup(stderr_buffer); + } + PG_CATCH(); + { + ErrorData* error_data; + PgQueryError* error; + + MemoryContextSwitchTo(parse_context); + error_data = CopyErrorData(); + + // Note: This is intentionally malloc so exiting the memory context doesn't free this + error = malloc(sizeof(PgQueryError)); + error->message = strdup(error_data->message); + error->filename = strdup(error_data->filename); + error->funcname = strdup(error_data->funcname); + error->context = NULL; + error->lineno = error_data->lineno; + error->cursorpos = error_data->cursorpos; + + result.error = error; + FlushErrorState(); + } + PG_END_TRY(); + +#ifndef DEBUG + // Restore stderr, close pipe + dup2(stderr_global, STDERR_FILENO); + close(stderr_pipe[0]); + close(stderr_global); +#endif + + pg_query_exit_memory_context(ctx); + + return result; +} + +void pg_query_free_scan_result(PgQueryScanResult result) +{ + if (result.error) { + pg_query_free_error(result.error); + } + + free(result.pbuf.data); + free(result.stderr_buffer); +} diff --git a/parser/pg_query_split.c b/parser/pg_query_split.c new file mode 100644 index 00000000..ad4b338f --- /dev/null +++ b/parser/pg_query_split.c @@ -0,0 +1,221 @@ +#include "pg_query.h" +#include "pg_query_internal.h" + +#include "parser/gramparse.h" +#include "lib/stringinfo.h" + +#include +#include + +PgQuerySplitResult pg_query_split_with_scanner(const char* input) +{ + MemoryContext ctx = NULL; + PgQuerySplitResult result = {0}; + core_yyscan_t yyscanner; + core_yy_extra_type yyextra; + core_YYSTYPE yylval; + YYLTYPE yylloc; + size_t curstmt = 0; + bool keyword_before_terminator = false; + int stmtstart = 0; + bool is_keyword = false; + size_t open_parens = 0; + + ctx = pg_query_enter_memory_context(); + + MemoryContext parse_context = CurrentMemoryContext; + + char stderr_buffer[STDERR_BUFFER_LEN + 1] = {0}; +#ifndef DEBUG + int stderr_global; + int stderr_pipe[2]; +#endif + +#ifndef DEBUG + // Setup pipe for stderr redirection + if (pipe(stderr_pipe) != 0) { + PgQueryError* error = malloc(sizeof(PgQueryError)); + + error->message = strdup("Failed to open pipe, too many open file descriptors") + + result.error = error; + + return result; + } + + fcntl(stderr_pipe[0], F_SETFL, fcntl(stderr_pipe[0], F_GETFL) | O_NONBLOCK); + + // Redirect stderr to the pipe + stderr_global = dup(STDERR_FILENO); + dup2(stderr_pipe[1], STDERR_FILENO); + close(stderr_pipe[1]); +#endif + + PG_TRY(); + { + // Really this is stupid, we only run twice so we can pre-allocate the output array correctly + yyscanner = scanner_init(input, &yyextra, &ScanKeywords, ScanKeywordTokens); + while (true) + { + int tok = core_yylex(&yylval, &yylloc, yyscanner); + switch (tok) { + #define PG_KEYWORD(a,b,c) case b: is_keyword = true; break; + #include "parser/kwlist.h" + default: is_keyword = false; + } + if (is_keyword) + keyword_before_terminator = true; + else if (tok == '(') + open_parens++; + else if (tok == ')') + open_parens--; + else if (keyword_before_terminator && open_parens == 0 && (tok == ';' || tok == 0)) + { + result.n_stmts++; + keyword_before_terminator = false; + } + if (tok == 0) break; + } + scanner_finish(yyscanner); + + result.stmts = malloc(sizeof(PgQuerySplitStmt *) * result.n_stmts); + + // Now actually set the output values + keyword_before_terminator = false; + open_parens = 0; + yyscanner = scanner_init(input, &yyextra, &ScanKeywords, ScanKeywordTokens); + while (true) + { + int tok = core_yylex(&yylval, &yylloc, yyscanner); + switch (tok) { + #define PG_KEYWORD(a,b,c) case b: is_keyword = true; break; + #include "parser/kwlist.h" + default: is_keyword = false; + } + if (is_keyword) + keyword_before_terminator = true; + else if (tok == '(') + open_parens++; + else if (tok == ')') + open_parens--; + else if (keyword_before_terminator && open_parens == 0 && (tok == ';' || tok == 0)) + { + // Add statement up to the current position + result.stmts[curstmt] = malloc(sizeof(PgQuerySplitStmt)); + result.stmts[curstmt]->stmt_location = stmtstart; + result.stmts[curstmt]->stmt_len = yylloc - stmtstart; + + stmtstart = yylloc + 1; + keyword_before_terminator = false; + + curstmt++; + } + else if (open_parens == 0 && tok == ';') // Advance statement start in case we skip an empty statement + { + stmtstart = yylloc + 1; + } + + if (tok == 0) break; + } + + scanner_finish(yyscanner); + +#ifndef DEBUG + // Save stderr for result + read(stderr_pipe[0], stderr_buffer, STDERR_BUFFER_LEN); +#endif + + result.stderr_buffer = strdup(stderr_buffer); + } + PG_CATCH(); + { + ErrorData* error_data; + PgQueryError* error; + + MemoryContextSwitchTo(parse_context); + error_data = CopyErrorData(); + + // Note: This is intentionally malloc so exiting the memory context doesn't free this + error = malloc(sizeof(PgQueryError)); + error->message = strdup(error_data->message); + error->filename = strdup(error_data->filename); + error->funcname = strdup(error_data->funcname); + error->context = NULL; + error->lineno = error_data->lineno; + error->cursorpos = error_data->cursorpos; + + result.error = error; + FlushErrorState(); + } + PG_END_TRY(); + +#ifndef DEBUG + // Restore stderr, close pipe + dup2(stderr_global, STDERR_FILENO); + close(stderr_pipe[0]); + close(stderr_global); +#endif + + pg_query_exit_memory_context(ctx); + + return result; +} + +PgQuerySplitResult pg_query_split_with_parser(const char* input) +{ + MemoryContext ctx = NULL; + PgQueryInternalParsetreeAndError parsetree_and_error; + PgQuerySplitResult result = {}; + + ctx = pg_query_enter_memory_context(); + + parsetree_and_error = pg_query_raw_parse(input); + + // These are all malloc-ed and will survive exiting the memory context, the caller is responsible to free them now + result.stderr_buffer = parsetree_and_error.stderr_buffer; + result.error = parsetree_and_error.error; + + if (parsetree_and_error.tree != NULL) + { + ListCell *lc; + + result.n_stmts = list_length(parsetree_and_error.tree); + result.stmts = malloc(sizeof(PgQuerySplitStmt*) * result.n_stmts); + foreach (lc, parsetree_and_error.tree) + { + RawStmt *raw_stmt = castNode(RawStmt, lfirst(lc)); + result.stmts[foreach_current_index(lc)] = malloc(sizeof(PgQuerySplitStmt)); + result.stmts[foreach_current_index(lc)]->stmt_location = raw_stmt->stmt_location; + if (raw_stmt->stmt_len == 0) + result.stmts[foreach_current_index(lc)]->stmt_len = strlen(input) - raw_stmt->stmt_location; + else + result.stmts[foreach_current_index(lc)]->stmt_len = raw_stmt->stmt_len; + } + } + else + { + result.n_stmts = 0; + result.stmts = NULL; + } + + pg_query_exit_memory_context(ctx); + + return result; +} + +void pg_query_free_split_result(PgQuerySplitResult result) +{ + if (result.error) { + pg_query_free_error(result.error); + } + free(result.stderr_buffer); + + if (result.stmts != NULL) + { + for (int i = 0; i < result.n_stmts; ++i) + { + free(result.stmts[i]); + } + free(result.stmts); + } +} diff --git a/parser/protobuf-c.c b/parser/protobuf-c.c new file mode 100644 index 00000000..8976e368 --- /dev/null +++ b/parser/protobuf-c.c @@ -0,0 +1,3660 @@ +/* + * Copyright (c) 2008-2015, Dave Benson and the protobuf-c authors. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following disclaimer + * in the documentation and/or other materials provided with the + * distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +/*! \file + * Support library for `protoc-c` generated code. + * + * This file implements the public API used by the code generated + * by `protoc-c`. + * + * \authors Dave Benson and the protobuf-c authors + * + * \copyright 2008-2014. Licensed under the terms of the [BSD-2-Clause] license. + */ + +/** + * \todo 64-BIT OPTIMIZATION: certain implementations use 32-bit math + * even on 64-bit platforms (uint64_size, uint64_pack, parse_uint64). + * + * \todo Use size_t consistently. + */ + +#include /* for malloc, free */ +#include /* for strcmp, strlen, memcpy, memmove, memset */ + +#include "protobuf-c.h" + +#define TRUE 1 +#define FALSE 0 + +#define PROTOBUF_C__ASSERT_NOT_REACHED() assert(0) + +/* Workaround for Microsoft compilers. */ +#ifdef _MSC_VER +# define inline __inline +#endif + +/** + * \defgroup internal Internal functions and macros + * + * These are not exported by the library but are useful to developers working + * on `libprotobuf-c` itself. + */ + +/** + * \defgroup macros Utility macros for manipulating structures + * + * Macros and constants used to manipulate the base "classes" generated by + * `protobuf-c`. They also define limits and check correctness. + * + * \ingroup internal + * @{ + */ + +/** The maximum length of a 64-bit integer in varint encoding. */ +#define MAX_UINT64_ENCODED_SIZE 10 + +#ifndef PROTOBUF_C_UNPACK_ERROR +# define PROTOBUF_C_UNPACK_ERROR(...) +#endif + +const char protobuf_c_empty_string[] = ""; + +/** + * Internal `ProtobufCMessage` manipulation macro. + * + * Base macro for manipulating a `ProtobufCMessage`. Used by STRUCT_MEMBER() and + * STRUCT_MEMBER_PTR(). + */ +#define STRUCT_MEMBER_P(struct_p, struct_offset) \ + ((void *) ((uint8_t *) (struct_p) + (struct_offset))) + +/** + * Return field in a `ProtobufCMessage` based on offset. + * + * Take a pointer to a `ProtobufCMessage` and find the field at the offset. + * Cast it to the passed type. + */ +#define STRUCT_MEMBER(member_type, struct_p, struct_offset) \ + (*(member_type *) STRUCT_MEMBER_P((struct_p), (struct_offset))) + +/** + * Return field in a `ProtobufCMessage` based on offset. + * + * Take a pointer to a `ProtobufCMessage` and find the field at the offset. Cast + * it to a pointer to the passed type. + */ +#define STRUCT_MEMBER_PTR(member_type, struct_p, struct_offset) \ + ((member_type *) STRUCT_MEMBER_P((struct_p), (struct_offset))) + +/* Assertions for magic numbers. */ + +#define ASSERT_IS_ENUM_DESCRIPTOR(desc) \ + assert((desc)->magic == PROTOBUF_C__ENUM_DESCRIPTOR_MAGIC) + +#define ASSERT_IS_MESSAGE_DESCRIPTOR(desc) \ + assert((desc)->magic == PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC) + +#define ASSERT_IS_MESSAGE(message) \ + ASSERT_IS_MESSAGE_DESCRIPTOR((message)->descriptor) + +#define ASSERT_IS_SERVICE_DESCRIPTOR(desc) \ + assert((desc)->magic == PROTOBUF_C__SERVICE_DESCRIPTOR_MAGIC) + +/**@}*/ + +/* --- version --- */ + +const char * +protobuf_c_version(void) +{ + return PROTOBUF_C_VERSION; +} + +uint32_t +protobuf_c_version_number(void) +{ + return PROTOBUF_C_VERSION_NUMBER; +} + +/* --- allocator --- */ + +static void * +system_alloc(void *allocator_data, size_t size) +{ + return malloc(size); +} + +static void +system_free(void *allocator_data, void *data) +{ + free(data); +} + +static inline void * +do_alloc(ProtobufCAllocator *allocator, size_t size) +{ + return allocator->alloc(allocator->allocator_data, size); +} + +static inline void +do_free(ProtobufCAllocator *allocator, void *data) +{ + if (data != NULL) + allocator->free(allocator->allocator_data, data); +} + +/* + * This allocator uses the system's malloc() and free(). It is the default + * allocator used if NULL is passed as the ProtobufCAllocator to an exported + * function. + */ +static ProtobufCAllocator protobuf_c__allocator = { + .alloc = &system_alloc, + .free = &system_free, + .allocator_data = NULL, +}; + +/* === buffer-simple === */ + +void +protobuf_c_buffer_simple_append(ProtobufCBuffer *buffer, + size_t len, const uint8_t *data) +{ + ProtobufCBufferSimple *simp = (ProtobufCBufferSimple *) buffer; + size_t new_len = simp->len + len; + + if (new_len > simp->alloced) { + ProtobufCAllocator *allocator = simp->allocator; + size_t new_alloced = simp->alloced * 2; + uint8_t *new_data; + + if (allocator == NULL) + allocator = &protobuf_c__allocator; + while (new_alloced < new_len) + new_alloced += new_alloced; + new_data = do_alloc(allocator, new_alloced); + if (!new_data) + return; + memcpy(new_data, simp->data, simp->len); + if (simp->must_free_data) + do_free(allocator, simp->data); + else + simp->must_free_data = TRUE; + simp->data = new_data; + simp->alloced = new_alloced; + } + memcpy(simp->data + simp->len, data, len); + simp->len = new_len; +} + +/** + * \defgroup packedsz protobuf_c_message_get_packed_size() implementation + * + * Routines mainly used by protobuf_c_message_get_packed_size(). + * + * \ingroup internal + * @{ + */ + +/** + * Return the number of bytes required to store the tag for the field. Includes + * 3 bits for the wire-type, and a single bit that denotes the end-of-tag. + * + * \param number + * Field tag to encode. + * \return + * Number of bytes required. + */ +static inline size_t +get_tag_size(uint32_t number) +{ + if (number < (1UL << 4)) { + return 1; + } else if (number < (1UL << 11)) { + return 2; + } else if (number < (1UL << 18)) { + return 3; + } else if (number < (1UL << 25)) { + return 4; + } else { + return 5; + } +} + +/** + * Return the number of bytes required to store a variable-length unsigned + * 32-bit integer in base-128 varint encoding. + * + * \param v + * Value to encode. + * \return + * Number of bytes required. + */ +static inline size_t +uint32_size(uint32_t v) +{ + if (v < (1UL << 7)) { + return 1; + } else if (v < (1UL << 14)) { + return 2; + } else if (v < (1UL << 21)) { + return 3; + } else if (v < (1UL << 28)) { + return 4; + } else { + return 5; + } +} + +/** + * Return the number of bytes required to store a variable-length signed 32-bit + * integer in base-128 varint encoding. + * + * \param v + * Value to encode. + * \return + * Number of bytes required. + */ +static inline size_t +int32_size(int32_t v) +{ + if (v < 0) { + return 10; + } else if (v < (1L << 7)) { + return 1; + } else if (v < (1L << 14)) { + return 2; + } else if (v < (1L << 21)) { + return 3; + } else if (v < (1L << 28)) { + return 4; + } else { + return 5; + } +} + +/** + * Return the ZigZag-encoded 32-bit unsigned integer form of a 32-bit signed + * integer. + * + * \param v + * Value to encode. + * \return + * ZigZag encoded integer. + */ +static inline uint32_t +zigzag32(int32_t v) +{ + // Note: the right-shift must be arithmetic + // Note: left shift must be unsigned because of overflow + return ((uint32_t)(v) << 1) ^ (uint32_t)(v >> 31); +} + +/** + * Return the number of bytes required to store a signed 32-bit integer, + * converted to an unsigned 32-bit integer with ZigZag encoding, using base-128 + * varint encoding. + * + * \param v + * Value to encode. + * \return + * Number of bytes required. + */ +static inline size_t +sint32_size(int32_t v) +{ + return uint32_size(zigzag32(v)); +} + +/** + * Return the number of bytes required to store a 64-bit unsigned integer in + * base-128 varint encoding. + * + * \param v + * Value to encode. + * \return + * Number of bytes required. + */ +static inline size_t +uint64_size(uint64_t v) +{ + uint32_t upper_v = (uint32_t) (v >> 32); + + if (upper_v == 0) { + return uint32_size((uint32_t) v); + } else if (upper_v < (1UL << 3)) { + return 5; + } else if (upper_v < (1UL << 10)) { + return 6; + } else if (upper_v < (1UL << 17)) { + return 7; + } else if (upper_v < (1UL << 24)) { + return 8; + } else if (upper_v < (1UL << 31)) { + return 9; + } else { + return 10; + } +} + +/** + * Return the ZigZag-encoded 64-bit unsigned integer form of a 64-bit signed + * integer. + * + * \param v + * Value to encode. + * \return + * ZigZag encoded integer. + */ +static inline uint64_t +zigzag64(int64_t v) +{ + // Note: the right-shift must be arithmetic + // Note: left shift must be unsigned because of overflow + return ((uint64_t)(v) << 1) ^ (uint64_t)(v >> 63); +} + +/** + * Return the number of bytes required to store a signed 64-bit integer, + * converted to an unsigned 64-bit integer with ZigZag encoding, using base-128 + * varint encoding. + * + * \param v + * Value to encode. + * \return + * Number of bytes required. + */ +static inline size_t +sint64_size(int64_t v) +{ + return uint64_size(zigzag64(v)); +} + +/** + * Calculate the serialized size of a single required message field, including + * the space needed by the preceding tag. + * + * \param field + * Field descriptor for member. + * \param member + * Field to encode. + * \return + * Number of bytes required. + */ +static size_t +required_field_get_packed_size(const ProtobufCFieldDescriptor *field, + const void *member) +{ + size_t rv = get_tag_size(field->id); + + switch (field->type) { + case PROTOBUF_C_TYPE_SINT32: + return rv + sint32_size(*(const int32_t *) member); + case PROTOBUF_C_TYPE_ENUM: + case PROTOBUF_C_TYPE_INT32: + return rv + int32_size(*(const int32_t *) member); + case PROTOBUF_C_TYPE_UINT32: + return rv + uint32_size(*(const uint32_t *) member); + case PROTOBUF_C_TYPE_SINT64: + return rv + sint64_size(*(const int64_t *) member); + case PROTOBUF_C_TYPE_INT64: + case PROTOBUF_C_TYPE_UINT64: + return rv + uint64_size(*(const uint64_t *) member); + case PROTOBUF_C_TYPE_SFIXED32: + case PROTOBUF_C_TYPE_FIXED32: + return rv + 4; + case PROTOBUF_C_TYPE_SFIXED64: + case PROTOBUF_C_TYPE_FIXED64: + return rv + 8; + case PROTOBUF_C_TYPE_BOOL: + return rv + 1; + case PROTOBUF_C_TYPE_FLOAT: + return rv + 4; + case PROTOBUF_C_TYPE_DOUBLE: + return rv + 8; + case PROTOBUF_C_TYPE_STRING: { + const char *str = *(char * const *) member; + size_t len = str ? strlen(str) : 0; + return rv + uint32_size(len) + len; + } + case PROTOBUF_C_TYPE_BYTES: { + size_t len = ((const ProtobufCBinaryData *) member)->len; + return rv + uint32_size(len) + len; + } + case PROTOBUF_C_TYPE_MESSAGE: { + const ProtobufCMessage *msg = *(ProtobufCMessage * const *) member; + size_t subrv = msg ? protobuf_c_message_get_packed_size(msg) : 0; + return rv + uint32_size(subrv) + subrv; + } + } + PROTOBUF_C__ASSERT_NOT_REACHED(); + return 0; +} + +/** + * Calculate the serialized size of a single oneof message field, including + * the space needed by the preceding tag. Returns 0 if the oneof field isn't + * selected or is not set. + * + * \param field + * Field descriptor for member. + * \param oneof_case + * Enum value that selects the field in the oneof. + * \param member + * Field to encode. + * \return + * Number of bytes required. + */ +static size_t +oneof_field_get_packed_size(const ProtobufCFieldDescriptor *field, + uint32_t oneof_case, + const void *member) +{ + if (oneof_case != field->id) { + return 0; + } + if (field->type == PROTOBUF_C_TYPE_MESSAGE || + field->type == PROTOBUF_C_TYPE_STRING) + { + const void *ptr = *(const void * const *) member; + if (ptr == NULL || ptr == field->default_value) + return 0; + } + return required_field_get_packed_size(field, member); +} + +/** + * Calculate the serialized size of a single optional message field, including + * the space needed by the preceding tag. Returns 0 if the optional field isn't + * set. + * + * \param field + * Field descriptor for member. + * \param has + * True if the field exists, false if not. + * \param member + * Field to encode. + * \return + * Number of bytes required. + */ +static size_t +optional_field_get_packed_size(const ProtobufCFieldDescriptor *field, + const protobuf_c_boolean has, + const void *member) +{ + if (field->type == PROTOBUF_C_TYPE_MESSAGE || + field->type == PROTOBUF_C_TYPE_STRING) + { + const void *ptr = *(const void * const *) member; + if (ptr == NULL || ptr == field->default_value) + return 0; + } else { + if (!has) + return 0; + } + return required_field_get_packed_size(field, member); +} + +static protobuf_c_boolean +field_is_zeroish(const ProtobufCFieldDescriptor *field, + const void *member) +{ + protobuf_c_boolean ret = FALSE; + + switch (field->type) { + case PROTOBUF_C_TYPE_BOOL: + ret = (0 == *(const protobuf_c_boolean *) member); + break; + case PROTOBUF_C_TYPE_ENUM: + case PROTOBUF_C_TYPE_SINT32: + case PROTOBUF_C_TYPE_INT32: + case PROTOBUF_C_TYPE_UINT32: + case PROTOBUF_C_TYPE_SFIXED32: + case PROTOBUF_C_TYPE_FIXED32: + ret = (0 == *(const uint32_t *) member); + break; + case PROTOBUF_C_TYPE_SINT64: + case PROTOBUF_C_TYPE_INT64: + case PROTOBUF_C_TYPE_UINT64: + case PROTOBUF_C_TYPE_SFIXED64: + case PROTOBUF_C_TYPE_FIXED64: + ret = (0 == *(const uint64_t *) member); + break; + case PROTOBUF_C_TYPE_FLOAT: + ret = (0 == *(const float *) member); + break; + case PROTOBUF_C_TYPE_DOUBLE: + ret = (0 == *(const double *) member); + break; + case PROTOBUF_C_TYPE_STRING: + ret = (NULL == *(const char * const *) member) || + ('\0' == **(const char * const *) member); + break; + case PROTOBUF_C_TYPE_BYTES: + case PROTOBUF_C_TYPE_MESSAGE: + ret = (NULL == *(const void * const *) member); + break; + default: + ret = TRUE; + break; + } + + return ret; +} + +/** + * Calculate the serialized size of a single unlabeled message field, including + * the space needed by the preceding tag. Returns 0 if the field isn't set or + * if it is set to a "zeroish" value (null pointer or 0 for numerical values). + * Unlabeled fields are supported only in proto3. + * + * \param field + * Field descriptor for member. + * \param member + * Field to encode. + * \return + * Number of bytes required. + */ +static size_t +unlabeled_field_get_packed_size(const ProtobufCFieldDescriptor *field, + const void *member) +{ + if (field_is_zeroish(field, member)) + return 0; + return required_field_get_packed_size(field, member); +} + +/** + * Calculate the serialized size of repeated message fields, which may consist + * of any number of values (including 0). Includes the space needed by the + * preceding tags (as needed). + * + * \param field + * Field descriptor for member. + * \param count + * Number of repeated field members. + * \param member + * Field to encode. + * \return + * Number of bytes required. + */ +static size_t +repeated_field_get_packed_size(const ProtobufCFieldDescriptor *field, + size_t count, const void *member) +{ + size_t header_size; + size_t rv = 0; + unsigned i; + void *array = *(void * const *) member; + + if (count == 0) + return 0; + header_size = get_tag_size(field->id); + if (0 == (field->flags & PROTOBUF_C_FIELD_FLAG_PACKED)) + header_size *= count; + + switch (field->type) { + case PROTOBUF_C_TYPE_SINT32: + for (i = 0; i < count; i++) + rv += sint32_size(((int32_t *) array)[i]); + break; + case PROTOBUF_C_TYPE_ENUM: + case PROTOBUF_C_TYPE_INT32: + for (i = 0; i < count; i++) + rv += int32_size(((int32_t *) array)[i]); + break; + case PROTOBUF_C_TYPE_UINT32: + for (i = 0; i < count; i++) + rv += uint32_size(((uint32_t *) array)[i]); + break; + case PROTOBUF_C_TYPE_SINT64: + for (i = 0; i < count; i++) + rv += sint64_size(((int64_t *) array)[i]); + break; + case PROTOBUF_C_TYPE_INT64: + case PROTOBUF_C_TYPE_UINT64: + for (i = 0; i < count; i++) + rv += uint64_size(((uint64_t *) array)[i]); + break; + case PROTOBUF_C_TYPE_SFIXED32: + case PROTOBUF_C_TYPE_FIXED32: + case PROTOBUF_C_TYPE_FLOAT: + rv += 4 * count; + break; + case PROTOBUF_C_TYPE_SFIXED64: + case PROTOBUF_C_TYPE_FIXED64: + case PROTOBUF_C_TYPE_DOUBLE: + rv += 8 * count; + break; + case PROTOBUF_C_TYPE_BOOL: + rv += count; + break; + case PROTOBUF_C_TYPE_STRING: + for (i = 0; i < count; i++) { + size_t len = strlen(((char **) array)[i]); + rv += uint32_size(len) + len; + } + break; + case PROTOBUF_C_TYPE_BYTES: + for (i = 0; i < count; i++) { + size_t len = ((ProtobufCBinaryData *) array)[i].len; + rv += uint32_size(len) + len; + } + break; + case PROTOBUF_C_TYPE_MESSAGE: + for (i = 0; i < count; i++) { + size_t len = protobuf_c_message_get_packed_size( + ((ProtobufCMessage **) array)[i]); + rv += uint32_size(len) + len; + } + break; + } + + if (0 != (field->flags & PROTOBUF_C_FIELD_FLAG_PACKED)) + header_size += uint32_size(rv); + return header_size + rv; +} + +/** + * Calculate the serialized size of an unknown field, i.e. one that is passed + * through mostly uninterpreted. This is required for forward compatibility if + * new fields are added to the message descriptor. + * + * \param field + * Unknown field type. + * \return + * Number of bytes required. + */ +static inline size_t +unknown_field_get_packed_size(const ProtobufCMessageUnknownField *field) +{ + return get_tag_size(field->tag) + field->len; +} + +/**@}*/ + +/* + * Calculate the serialized size of the message. + */ +size_t protobuf_c_message_get_packed_size(const ProtobufCMessage *message) +{ + unsigned i; + size_t rv = 0; + + ASSERT_IS_MESSAGE(message); + for (i = 0; i < message->descriptor->n_fields; i++) { + const ProtobufCFieldDescriptor *field = + message->descriptor->fields + i; + const void *member = + ((const char *) message) + field->offset; + const void *qmember = + ((const char *) message) + field->quantifier_offset; + + if (field->label == PROTOBUF_C_LABEL_REQUIRED) { + rv += required_field_get_packed_size(field, member); + } else if ((field->label == PROTOBUF_C_LABEL_OPTIONAL || + field->label == PROTOBUF_C_LABEL_NONE) && + (0 != (field->flags & PROTOBUF_C_FIELD_FLAG_ONEOF))) { + rv += oneof_field_get_packed_size( + field, + *(const uint32_t *) qmember, + member + ); + } else if (field->label == PROTOBUF_C_LABEL_OPTIONAL) { + rv += optional_field_get_packed_size( + field, + *(protobuf_c_boolean *) qmember, + member + ); + } else if (field->label == PROTOBUF_C_LABEL_NONE) { + rv += unlabeled_field_get_packed_size( + field, + member + ); + } else { + rv += repeated_field_get_packed_size( + field, + *(const size_t *) qmember, + member + ); + } + } + for (i = 0; i < message->n_unknown_fields; i++) + rv += unknown_field_get_packed_size(&message->unknown_fields[i]); + return rv; +} + +/** + * \defgroup pack protobuf_c_message_pack() implementation + * + * Routines mainly used by protobuf_c_message_pack(). + * + * \ingroup internal + * @{ + */ + +/** + * Pack an unsigned 32-bit integer in base-128 varint encoding and return the + * number of bytes written, which must be 5 or less. + * + * \param value + * Value to encode. + * \param[out] out + * Packed value. + * \return + * Number of bytes written to `out`. + */ +static inline size_t +uint32_pack(uint32_t value, uint8_t *out) +{ + unsigned rv = 0; + + if (value >= 0x80) { + out[rv++] = value | 0x80; + value >>= 7; + if (value >= 0x80) { + out[rv++] = value | 0x80; + value >>= 7; + if (value >= 0x80) { + out[rv++] = value | 0x80; + value >>= 7; + if (value >= 0x80) { + out[rv++] = value | 0x80; + value >>= 7; + } + } + } + } + /* assert: value<128 */ + out[rv++] = value; + return rv; +} + +/** + * Pack a signed 32-bit integer and return the number of bytes written. + * Negative numbers are encoded as two's complement 64-bit integers. + * + * \param value + * Value to encode. + * \param[out] out + * Packed value. + * \return + * Number of bytes written to `out`. + */ +static inline size_t +int32_pack(int32_t value, uint8_t *out) +{ + if (value < 0) { + out[0] = value | 0x80; + out[1] = (value >> 7) | 0x80; + out[2] = (value >> 14) | 0x80; + out[3] = (value >> 21) | 0x80; + out[4] = (value >> 28) | 0x80; + out[5] = out[6] = out[7] = out[8] = 0xff; + out[9] = 0x01; + return 10; + } else { + return uint32_pack(value, out); + } +} + +/** + * Pack a signed 32-bit integer using ZigZag encoding and return the number of + * bytes written. + * + * \param value + * Value to encode. + * \param[out] out + * Packed value. + * \return + * Number of bytes written to `out`. + */ +static inline size_t +sint32_pack(int32_t value, uint8_t *out) +{ + return uint32_pack(zigzag32(value), out); +} + +/** + * Pack a 64-bit unsigned integer using base-128 varint encoding and return the + * number of bytes written. + * + * \param value + * Value to encode. + * \param[out] out + * Packed value. + * \return + * Number of bytes written to `out`. + */ +static size_t +uint64_pack(uint64_t value, uint8_t *out) +{ + uint32_t hi = (uint32_t) (value >> 32); + uint32_t lo = (uint32_t) value; + unsigned rv; + + if (hi == 0) + return uint32_pack((uint32_t) lo, out); + out[0] = (lo) | 0x80; + out[1] = (lo >> 7) | 0x80; + out[2] = (lo >> 14) | 0x80; + out[3] = (lo >> 21) | 0x80; + if (hi < 8) { + out[4] = (hi << 4) | (lo >> 28); + return 5; + } else { + out[4] = ((hi & 7) << 4) | (lo >> 28) | 0x80; + hi >>= 3; + } + rv = 5; + while (hi >= 128) { + out[rv++] = hi | 0x80; + hi >>= 7; + } + out[rv++] = hi; + return rv; +} + +/** + * Pack a 64-bit signed integer in ZigZag encoding and return the number of + * bytes written. + * + * \param value + * Value to encode. + * \param[out] out + * Packed value. + * \return + * Number of bytes written to `out`. + */ +static inline size_t +sint64_pack(int64_t value, uint8_t *out) +{ + return uint64_pack(zigzag64(value), out); +} + +/** + * Pack a 32-bit quantity in little-endian byte order. Used for protobuf wire + * types fixed32, sfixed32, float. Similar to "htole32". + * + * \param value + * Value to encode. + * \param[out] out + * Packed value. + * \return + * Number of bytes written to `out`. + */ +static inline size_t +fixed32_pack(uint32_t value, void *out) +{ +#if !defined(WORDS_BIGENDIAN) + memcpy(out, &value, 4); +#else + uint8_t *buf = out; + + buf[0] = value; + buf[1] = value >> 8; + buf[2] = value >> 16; + buf[3] = value >> 24; +#endif + return 4; +} + +/** + * Pack a 64-bit quantity in little-endian byte order. Used for protobuf wire + * types fixed64, sfixed64, double. Similar to "htole64". + * + * \todo The big-endian impl is really only good for 32-bit machines, a 64-bit + * version would be appreciated, plus a way to decide to use 64-bit math where + * convenient. + * + * \param value + * Value to encode. + * \param[out] out + * Packed value. + * \return + * Number of bytes written to `out`. + */ +static inline size_t +fixed64_pack(uint64_t value, void *out) +{ +#if !defined(WORDS_BIGENDIAN) + memcpy(out, &value, 8); +#else + fixed32_pack(value, out); + fixed32_pack(value >> 32, ((char *) out) + 4); +#endif + return 8; +} + +/** + * Pack a boolean value as an integer and return the number of bytes written. + * + * \todo Perhaps on some platforms *out = !!value would be a better impl, b/c + * that is idiomatic C++ in some STL implementations. + * + * \param value + * Value to encode. + * \param[out] out + * Packed value. + * \return + * Number of bytes written to `out`. + */ +static inline size_t +boolean_pack(protobuf_c_boolean value, uint8_t *out) +{ + *out = value ? TRUE : FALSE; + return 1; +} + +/** + * Pack a NUL-terminated C string and return the number of bytes written. The + * output includes a length delimiter. + * + * The NULL pointer is treated as an empty string. This isn't really necessary, + * but it allows people to leave required strings blank. (See Issue #13 in the + * bug tracker for a little more explanation). + * + * \param str + * String to encode. + * \param[out] out + * Packed value. + * \return + * Number of bytes written to `out`. + */ +static inline size_t +string_pack(const char *str, uint8_t *out) +{ + if (str == NULL) { + out[0] = 0; + return 1; + } else { + size_t len = strlen(str); + size_t rv = uint32_pack(len, out); + memcpy(out + rv, str, len); + return rv + len; + } +} + +/** + * Pack a ProtobufCBinaryData and return the number of bytes written. The output + * includes a length delimiter. + * + * \param bd + * ProtobufCBinaryData to encode. + * \param[out] out + * Packed value. + * \return + * Number of bytes written to `out`. + */ +static inline size_t +binary_data_pack(const ProtobufCBinaryData *bd, uint8_t *out) +{ + size_t len = bd->len; + size_t rv = uint32_pack(len, out); + memcpy(out + rv, bd->data, len); + return rv + len; +} + +/** + * Pack a ProtobufCMessage and return the number of bytes written. The output + * includes a length delimiter. + * + * \param message + * ProtobufCMessage object to pack. + * \param[out] out + * Packed message. + * \return + * Number of bytes written to `out`. + */ +static inline size_t +prefixed_message_pack(const ProtobufCMessage *message, uint8_t *out) +{ + if (message == NULL) { + out[0] = 0; + return 1; + } else { + size_t rv = protobuf_c_message_pack(message, out + 1); + uint32_t rv_packed_size = uint32_size(rv); + if (rv_packed_size != 1) + memmove(out + rv_packed_size, out + 1, rv); + return uint32_pack(rv, out) + rv; + } +} + +/** + * Pack a field tag. + * + * Wire-type will be added in required_field_pack(). + * + * \todo Just call uint64_pack on 64-bit platforms. + * + * \param id + * Tag value to encode. + * \param[out] out + * Packed value. + * \return + * Number of bytes written to `out`. + */ +static size_t +tag_pack(uint32_t id, uint8_t *out) +{ + if (id < (1UL << (32 - 3))) + return uint32_pack(id << 3, out); + else + return uint64_pack(((uint64_t) id) << 3, out); +} + +/** + * Pack a required field and return the number of bytes written. + * + * \param field + * Field descriptor. + * \param member + * The field member. + * \param[out] out + * Packed value. + * \return + * Number of bytes written to `out`. + */ +static size_t +required_field_pack(const ProtobufCFieldDescriptor *field, + const void *member, uint8_t *out) +{ + size_t rv = tag_pack(field->id, out); + + switch (field->type) { + case PROTOBUF_C_TYPE_SINT32: + out[0] |= PROTOBUF_C_WIRE_TYPE_VARINT; + return rv + sint32_pack(*(const int32_t *) member, out + rv); + case PROTOBUF_C_TYPE_ENUM: + case PROTOBUF_C_TYPE_INT32: + out[0] |= PROTOBUF_C_WIRE_TYPE_VARINT; + return rv + int32_pack(*(const int32_t *) member, out + rv); + case PROTOBUF_C_TYPE_UINT32: + out[0] |= PROTOBUF_C_WIRE_TYPE_VARINT; + return rv + uint32_pack(*(const uint32_t *) member, out + rv); + case PROTOBUF_C_TYPE_SINT64: + out[0] |= PROTOBUF_C_WIRE_TYPE_VARINT; + return rv + sint64_pack(*(const int64_t *) member, out + rv); + case PROTOBUF_C_TYPE_INT64: + case PROTOBUF_C_TYPE_UINT64: + out[0] |= PROTOBUF_C_WIRE_TYPE_VARINT; + return rv + uint64_pack(*(const uint64_t *) member, out + rv); + case PROTOBUF_C_TYPE_SFIXED32: + case PROTOBUF_C_TYPE_FIXED32: + case PROTOBUF_C_TYPE_FLOAT: + out[0] |= PROTOBUF_C_WIRE_TYPE_32BIT; + return rv + fixed32_pack(*(const uint32_t *) member, out + rv); + case PROTOBUF_C_TYPE_SFIXED64: + case PROTOBUF_C_TYPE_FIXED64: + case PROTOBUF_C_TYPE_DOUBLE: + out[0] |= PROTOBUF_C_WIRE_TYPE_64BIT; + return rv + fixed64_pack(*(const uint64_t *) member, out + rv); + case PROTOBUF_C_TYPE_BOOL: + out[0] |= PROTOBUF_C_WIRE_TYPE_VARINT; + return rv + boolean_pack(*(const protobuf_c_boolean *) member, out + rv); + case PROTOBUF_C_TYPE_STRING: + out[0] |= PROTOBUF_C_WIRE_TYPE_LENGTH_PREFIXED; + return rv + string_pack(*(char *const *) member, out + rv); + case PROTOBUF_C_TYPE_BYTES: + out[0] |= PROTOBUF_C_WIRE_TYPE_LENGTH_PREFIXED; + return rv + binary_data_pack((const ProtobufCBinaryData *) member, out + rv); + case PROTOBUF_C_TYPE_MESSAGE: + out[0] |= PROTOBUF_C_WIRE_TYPE_LENGTH_PREFIXED; + return rv + prefixed_message_pack(*(ProtobufCMessage * const *) member, out + rv); + } + PROTOBUF_C__ASSERT_NOT_REACHED(); + return 0; +} + +/** + * Pack a oneof field and return the number of bytes written. Only packs the + * field that is selected by the case enum. + * + * \param field + * Field descriptor. + * \param oneof_case + * Enum value that selects the field in the oneof. + * \param member + * The field member. + * \param[out] out + * Packed value. + * \return + * Number of bytes written to `out`. + */ +static size_t +oneof_field_pack(const ProtobufCFieldDescriptor *field, + uint32_t oneof_case, + const void *member, uint8_t *out) +{ + if (oneof_case != field->id) { + return 0; + } + if (field->type == PROTOBUF_C_TYPE_MESSAGE || + field->type == PROTOBUF_C_TYPE_STRING) + { + const void *ptr = *(const void * const *) member; + if (ptr == NULL || ptr == field->default_value) + return 0; + } + return required_field_pack(field, member, out); +} + +/** + * Pack an optional field and return the number of bytes written. + * + * \param field + * Field descriptor. + * \param has + * Whether the field is set. + * \param member + * The field member. + * \param[out] out + * Packed value. + * \return + * Number of bytes written to `out`. + */ +static size_t +optional_field_pack(const ProtobufCFieldDescriptor *field, + const protobuf_c_boolean has, + const void *member, uint8_t *out) +{ + if (field->type == PROTOBUF_C_TYPE_MESSAGE || + field->type == PROTOBUF_C_TYPE_STRING) + { + const void *ptr = *(const void * const *) member; + if (ptr == NULL || ptr == field->default_value) + return 0; + } else { + if (!has) + return 0; + } + return required_field_pack(field, member, out); +} + +/** + * Pack an unlabeled field and return the number of bytes written. + * + * \param field + * Field descriptor. + * \param member + * The field member. + * \param[out] out + * Packed value. + * \return + * Number of bytes written to `out`. + */ +static size_t +unlabeled_field_pack(const ProtobufCFieldDescriptor *field, + const void *member, uint8_t *out) +{ + if (field_is_zeroish(field, member)) + return 0; + return required_field_pack(field, member, out); +} + +/** + * Given a field type, return the in-memory size. + * + * \todo Implement as a table lookup. + * + * \param type + * Field type. + * \return + * Size of the field. + */ +static inline size_t +sizeof_elt_in_repeated_array(ProtobufCType type) +{ + switch (type) { + case PROTOBUF_C_TYPE_SINT32: + case PROTOBUF_C_TYPE_INT32: + case PROTOBUF_C_TYPE_UINT32: + case PROTOBUF_C_TYPE_SFIXED32: + case PROTOBUF_C_TYPE_FIXED32: + case PROTOBUF_C_TYPE_FLOAT: + case PROTOBUF_C_TYPE_ENUM: + return 4; + case PROTOBUF_C_TYPE_SINT64: + case PROTOBUF_C_TYPE_INT64: + case PROTOBUF_C_TYPE_UINT64: + case PROTOBUF_C_TYPE_SFIXED64: + case PROTOBUF_C_TYPE_FIXED64: + case PROTOBUF_C_TYPE_DOUBLE: + return 8; + case PROTOBUF_C_TYPE_BOOL: + return sizeof(protobuf_c_boolean); + case PROTOBUF_C_TYPE_STRING: + case PROTOBUF_C_TYPE_MESSAGE: + return sizeof(void *); + case PROTOBUF_C_TYPE_BYTES: + return sizeof(ProtobufCBinaryData); + } + PROTOBUF_C__ASSERT_NOT_REACHED(); + return 0; +} + +/** + * Pack an array of 32-bit quantities. + * + * \param[out] out + * Destination. + * \param[in] in + * Source. + * \param[in] n + * Number of elements in the source array. + */ +static void +copy_to_little_endian_32(void *out, const void *in, const unsigned n) +{ +#if !defined(WORDS_BIGENDIAN) + memcpy(out, in, n * 4); +#else + unsigned i; + const uint32_t *ini = in; + for (i = 0; i < n; i++) + fixed32_pack(ini[i], (uint32_t *) out + i); +#endif +} + +/** + * Pack an array of 64-bit quantities. + * + * \param[out] out + * Destination. + * \param[in] in + * Source. + * \param[in] n + * Number of elements in the source array. + */ +static void +copy_to_little_endian_64(void *out, const void *in, const unsigned n) +{ +#if !defined(WORDS_BIGENDIAN) + memcpy(out, in, n * 8); +#else + unsigned i; + const uint64_t *ini = in; + for (i = 0; i < n; i++) + fixed64_pack(ini[i], (uint64_t *) out + i); +#endif +} + +/** + * Get the minimum number of bytes required to pack a field value of a + * particular type. + * + * \param type + * Field type. + * \return + * Number of bytes. + */ +static unsigned +get_type_min_size(ProtobufCType type) +{ + if (type == PROTOBUF_C_TYPE_SFIXED32 || + type == PROTOBUF_C_TYPE_FIXED32 || + type == PROTOBUF_C_TYPE_FLOAT) + { + return 4; + } + if (type == PROTOBUF_C_TYPE_SFIXED64 || + type == PROTOBUF_C_TYPE_FIXED64 || + type == PROTOBUF_C_TYPE_DOUBLE) + { + return 8; + } + return 1; +} + +/** + * Packs the elements of a repeated field and returns the serialised field and + * its length. + * + * \param field + * Field descriptor. + * \param count + * Number of elements in the repeated field array. + * \param member + * Pointer to the elements for this repeated field. + * \param[out] out + * Serialised representation of the repeated field. + * \return + * Number of bytes serialised to `out`. + */ +static size_t +repeated_field_pack(const ProtobufCFieldDescriptor *field, + size_t count, const void *member, uint8_t *out) +{ + void *array = *(void * const *) member; + unsigned i; + + if (0 != (field->flags & PROTOBUF_C_FIELD_FLAG_PACKED)) { + unsigned header_len; + unsigned len_start; + unsigned min_length; + unsigned payload_len; + unsigned length_size_min; + unsigned actual_length_size; + uint8_t *payload_at; + + if (count == 0) + return 0; + header_len = tag_pack(field->id, out); + out[0] |= PROTOBUF_C_WIRE_TYPE_LENGTH_PREFIXED; + len_start = header_len; + min_length = get_type_min_size(field->type) * count; + length_size_min = uint32_size(min_length); + header_len += length_size_min; + payload_at = out + header_len; + + switch (field->type) { + case PROTOBUF_C_TYPE_SFIXED32: + case PROTOBUF_C_TYPE_FIXED32: + case PROTOBUF_C_TYPE_FLOAT: + copy_to_little_endian_32(payload_at, array, count); + payload_at += count * 4; + break; + case PROTOBUF_C_TYPE_SFIXED64: + case PROTOBUF_C_TYPE_FIXED64: + case PROTOBUF_C_TYPE_DOUBLE: + copy_to_little_endian_64(payload_at, array, count); + payload_at += count * 8; + break; + case PROTOBUF_C_TYPE_ENUM: + case PROTOBUF_C_TYPE_INT32: { + const int32_t *arr = (const int32_t *) array; + for (i = 0; i < count; i++) + payload_at += int32_pack(arr[i], payload_at); + break; + } + case PROTOBUF_C_TYPE_SINT32: { + const int32_t *arr = (const int32_t *) array; + for (i = 0; i < count; i++) + payload_at += sint32_pack(arr[i], payload_at); + break; + } + case PROTOBUF_C_TYPE_SINT64: { + const int64_t *arr = (const int64_t *) array; + for (i = 0; i < count; i++) + payload_at += sint64_pack(arr[i], payload_at); + break; + } + case PROTOBUF_C_TYPE_UINT32: { + const uint32_t *arr = (const uint32_t *) array; + for (i = 0; i < count; i++) + payload_at += uint32_pack(arr[i], payload_at); + break; + } + case PROTOBUF_C_TYPE_INT64: + case PROTOBUF_C_TYPE_UINT64: { + const uint64_t *arr = (const uint64_t *) array; + for (i = 0; i < count; i++) + payload_at += uint64_pack(arr[i], payload_at); + break; + } + case PROTOBUF_C_TYPE_BOOL: { + const protobuf_c_boolean *arr = (const protobuf_c_boolean *) array; + for (i = 0; i < count; i++) + payload_at += boolean_pack(arr[i], payload_at); + break; + } + default: + PROTOBUF_C__ASSERT_NOT_REACHED(); + } + + payload_len = payload_at - (out + header_len); + actual_length_size = uint32_size(payload_len); + if (length_size_min != actual_length_size) { + assert(actual_length_size == length_size_min + 1); + memmove(out + header_len + 1, out + header_len, + payload_len); + header_len++; + } + uint32_pack(payload_len, out + len_start); + return header_len + payload_len; + } else { + /* not "packed" cased */ + /* CONSIDER: optimize this case a bit (by putting the loop inside the switch) */ + size_t rv = 0; + unsigned siz = sizeof_elt_in_repeated_array(field->type); + + for (i = 0; i < count; i++) { + rv += required_field_pack(field, array, out + rv); + array = (char *)array + siz; + } + return rv; + } +} + +static size_t +unknown_field_pack(const ProtobufCMessageUnknownField *field, uint8_t *out) +{ + size_t rv = tag_pack(field->tag, out); + out[0] |= field->wire_type; + memcpy(out + rv, field->data, field->len); + return rv + field->len; +} + +/**@}*/ + +size_t +protobuf_c_message_pack(const ProtobufCMessage *message, uint8_t *out) +{ + unsigned i; + size_t rv = 0; + + ASSERT_IS_MESSAGE(message); + for (i = 0; i < message->descriptor->n_fields; i++) { + const ProtobufCFieldDescriptor *field = + message->descriptor->fields + i; + const void *member = ((const char *) message) + field->offset; + + /* + * It doesn't hurt to compute qmember (a pointer to the + * quantifier field of the structure), but the pointer is only + * valid if the field is: + * - a repeated field, or + * - a field that is part of a oneof + * - an optional field that isn't a pointer type + * (Meaning: not a message or a string). + */ + const void *qmember = + ((const char *) message) + field->quantifier_offset; + + if (field->label == PROTOBUF_C_LABEL_REQUIRED) { + rv += required_field_pack(field, member, out + rv); + } else if ((field->label == PROTOBUF_C_LABEL_OPTIONAL || + field->label == PROTOBUF_C_LABEL_NONE) && + (0 != (field->flags & PROTOBUF_C_FIELD_FLAG_ONEOF))) { + rv += oneof_field_pack( + field, + *(const uint32_t *) qmember, + member, + out + rv + ); + } else if (field->label == PROTOBUF_C_LABEL_OPTIONAL) { + rv += optional_field_pack( + field, + *(const protobuf_c_boolean *) qmember, + member, + out + rv + ); + } else if (field->label == PROTOBUF_C_LABEL_NONE) { + rv += unlabeled_field_pack(field, member, out + rv); + } else { + rv += repeated_field_pack(field, *(const size_t *) qmember, + member, out + rv); + } + } + for (i = 0; i < message->n_unknown_fields; i++) + rv += unknown_field_pack(&message->unknown_fields[i], out + rv); + return rv; +} + +/** + * \defgroup packbuf protobuf_c_message_pack_to_buffer() implementation + * + * Routines mainly used by protobuf_c_message_pack_to_buffer(). + * + * \ingroup internal + * @{ + */ + +/** + * Pack a required field to a virtual buffer. + * + * \param field + * Field descriptor. + * \param member + * The element to be packed. + * \param[out] buffer + * Virtual buffer to append data to. + * \return + * Number of bytes packed. + */ +static size_t +required_field_pack_to_buffer(const ProtobufCFieldDescriptor *field, + const void *member, ProtobufCBuffer *buffer) +{ + size_t rv; + uint8_t scratch[MAX_UINT64_ENCODED_SIZE * 2]; + + rv = tag_pack(field->id, scratch); + switch (field->type) { + case PROTOBUF_C_TYPE_SINT32: + scratch[0] |= PROTOBUF_C_WIRE_TYPE_VARINT; + rv += sint32_pack(*(const int32_t *) member, scratch + rv); + buffer->append(buffer, rv, scratch); + break; + case PROTOBUF_C_TYPE_ENUM: + case PROTOBUF_C_TYPE_INT32: + scratch[0] |= PROTOBUF_C_WIRE_TYPE_VARINT; + rv += int32_pack(*(const int32_t *) member, scratch + rv); + buffer->append(buffer, rv, scratch); + break; + case PROTOBUF_C_TYPE_UINT32: + scratch[0] |= PROTOBUF_C_WIRE_TYPE_VARINT; + rv += uint32_pack(*(const uint32_t *) member, scratch + rv); + buffer->append(buffer, rv, scratch); + break; + case PROTOBUF_C_TYPE_SINT64: + scratch[0] |= PROTOBUF_C_WIRE_TYPE_VARINT; + rv += sint64_pack(*(const int64_t *) member, scratch + rv); + buffer->append(buffer, rv, scratch); + break; + case PROTOBUF_C_TYPE_INT64: + case PROTOBUF_C_TYPE_UINT64: + scratch[0] |= PROTOBUF_C_WIRE_TYPE_VARINT; + rv += uint64_pack(*(const uint64_t *) member, scratch + rv); + buffer->append(buffer, rv, scratch); + break; + case PROTOBUF_C_TYPE_SFIXED32: + case PROTOBUF_C_TYPE_FIXED32: + case PROTOBUF_C_TYPE_FLOAT: + scratch[0] |= PROTOBUF_C_WIRE_TYPE_32BIT; + rv += fixed32_pack(*(const uint32_t *) member, scratch + rv); + buffer->append(buffer, rv, scratch); + break; + case PROTOBUF_C_TYPE_SFIXED64: + case PROTOBUF_C_TYPE_FIXED64: + case PROTOBUF_C_TYPE_DOUBLE: + scratch[0] |= PROTOBUF_C_WIRE_TYPE_64BIT; + rv += fixed64_pack(*(const uint64_t *) member, scratch + rv); + buffer->append(buffer, rv, scratch); + break; + case PROTOBUF_C_TYPE_BOOL: + scratch[0] |= PROTOBUF_C_WIRE_TYPE_VARINT; + rv += boolean_pack(*(const protobuf_c_boolean *) member, scratch + rv); + buffer->append(buffer, rv, scratch); + break; + case PROTOBUF_C_TYPE_STRING: { + const char *str = *(char *const *) member; + size_t sublen = str ? strlen(str) : 0; + + scratch[0] |= PROTOBUF_C_WIRE_TYPE_LENGTH_PREFIXED; + rv += uint32_pack(sublen, scratch + rv); + buffer->append(buffer, rv, scratch); + buffer->append(buffer, sublen, (const uint8_t *) str); + rv += sublen; + break; + } + case PROTOBUF_C_TYPE_BYTES: { + const ProtobufCBinaryData *bd = ((const ProtobufCBinaryData *) member); + size_t sublen = bd->len; + + scratch[0] |= PROTOBUF_C_WIRE_TYPE_LENGTH_PREFIXED; + rv += uint32_pack(sublen, scratch + rv); + buffer->append(buffer, rv, scratch); + buffer->append(buffer, sublen, bd->data); + rv += sublen; + break; + } + case PROTOBUF_C_TYPE_MESSAGE: { + uint8_t simple_buffer_scratch[256]; + size_t sublen; + const ProtobufCMessage *msg = *(ProtobufCMessage * const *) member; + ProtobufCBufferSimple simple_buffer = + PROTOBUF_C_BUFFER_SIMPLE_INIT(simple_buffer_scratch); + + scratch[0] |= PROTOBUF_C_WIRE_TYPE_LENGTH_PREFIXED; + if (msg == NULL) + sublen = 0; + else + sublen = protobuf_c_message_pack_to_buffer(msg, &simple_buffer.base); + rv += uint32_pack(sublen, scratch + rv); + buffer->append(buffer, rv, scratch); + buffer->append(buffer, sublen, simple_buffer.data); + rv += sublen; + PROTOBUF_C_BUFFER_SIMPLE_CLEAR(&simple_buffer); + break; + } + default: + PROTOBUF_C__ASSERT_NOT_REACHED(); + } + return rv; +} + +/** + * Pack a oneof field to a buffer. Only packs the field that is selected by the case enum. + * + * \param field + * Field descriptor. + * \param oneof_case + * Enum value that selects the field in the oneof. + * \param member + * The element to be packed. + * \param[out] buffer + * Virtual buffer to append data to. + * \return + * Number of bytes serialised to `buffer`. + */ +static size_t +oneof_field_pack_to_buffer(const ProtobufCFieldDescriptor *field, + uint32_t oneof_case, + const void *member, ProtobufCBuffer *buffer) +{ + if (oneof_case != field->id) { + return 0; + } + if (field->type == PROTOBUF_C_TYPE_MESSAGE || + field->type == PROTOBUF_C_TYPE_STRING) + { + const void *ptr = *(const void *const *) member; + if (ptr == NULL || ptr == field->default_value) + return 0; + } + return required_field_pack_to_buffer(field, member, buffer); +} + +/** + * Pack an optional field to a buffer. + * + * \param field + * Field descriptor. + * \param has + * Whether the field is set. + * \param member + * The element to be packed. + * \param[out] buffer + * Virtual buffer to append data to. + * \return + * Number of bytes serialised to `buffer`. + */ +static size_t +optional_field_pack_to_buffer(const ProtobufCFieldDescriptor *field, + const protobuf_c_boolean has, + const void *member, ProtobufCBuffer *buffer) +{ + if (field->type == PROTOBUF_C_TYPE_MESSAGE || + field->type == PROTOBUF_C_TYPE_STRING) + { + const void *ptr = *(const void *const *) member; + if (ptr == NULL || ptr == field->default_value) + return 0; + } else { + if (!has) + return 0; + } + return required_field_pack_to_buffer(field, member, buffer); +} + +/** + * Pack an unlabeled field to a buffer. + * + * \param field + * Field descriptor. + * \param member + * The element to be packed. + * \param[out] buffer + * Virtual buffer to append data to. + * \return + * Number of bytes serialised to `buffer`. + */ +static size_t +unlabeled_field_pack_to_buffer(const ProtobufCFieldDescriptor *field, + const void *member, ProtobufCBuffer *buffer) +{ + if (field_is_zeroish(field, member)) + return 0; + return required_field_pack_to_buffer(field, member, buffer); +} + +/** + * Get the packed size of an array of same field type. + * + * \param field + * Field descriptor. + * \param count + * Number of elements of this type. + * \param array + * The elements to get the size of. + * \return + * Number of bytes required. + */ +static size_t +get_packed_payload_length(const ProtobufCFieldDescriptor *field, + unsigned count, const void *array) +{ + unsigned rv = 0; + unsigned i; + + switch (field->type) { + case PROTOBUF_C_TYPE_SFIXED32: + case PROTOBUF_C_TYPE_FIXED32: + case PROTOBUF_C_TYPE_FLOAT: + return count * 4; + case PROTOBUF_C_TYPE_SFIXED64: + case PROTOBUF_C_TYPE_FIXED64: + case PROTOBUF_C_TYPE_DOUBLE: + return count * 8; + case PROTOBUF_C_TYPE_ENUM: + case PROTOBUF_C_TYPE_INT32: { + const int32_t *arr = (const int32_t *) array; + for (i = 0; i < count; i++) + rv += int32_size(arr[i]); + break; + } + case PROTOBUF_C_TYPE_SINT32: { + const int32_t *arr = (const int32_t *) array; + for (i = 0; i < count; i++) + rv += sint32_size(arr[i]); + break; + } + case PROTOBUF_C_TYPE_UINT32: { + const uint32_t *arr = (const uint32_t *) array; + for (i = 0; i < count; i++) + rv += uint32_size(arr[i]); + break; + } + case PROTOBUF_C_TYPE_SINT64: { + const int64_t *arr = (const int64_t *) array; + for (i = 0; i < count; i++) + rv += sint64_size(arr[i]); + break; + } + case PROTOBUF_C_TYPE_INT64: + case PROTOBUF_C_TYPE_UINT64: { + const uint64_t *arr = (const uint64_t *) array; + for (i = 0; i < count; i++) + rv += uint64_size(arr[i]); + break; + } + case PROTOBUF_C_TYPE_BOOL: + return count; + default: + PROTOBUF_C__ASSERT_NOT_REACHED(); + } + return rv; +} + +/** + * Pack an array of same field type to a virtual buffer. + * + * \param field + * Field descriptor. + * \param count + * Number of elements of this type. + * \param array + * The elements to get the size of. + * \param[out] buffer + * Virtual buffer to append data to. + * \return + * Number of bytes packed. + */ +static size_t +pack_buffer_packed_payload(const ProtobufCFieldDescriptor *field, + unsigned count, const void *array, + ProtobufCBuffer *buffer) +{ + uint8_t scratch[16]; + size_t rv = 0; + unsigned i; + + switch (field->type) { + case PROTOBUF_C_TYPE_SFIXED32: + case PROTOBUF_C_TYPE_FIXED32: + case PROTOBUF_C_TYPE_FLOAT: +#if !defined(WORDS_BIGENDIAN) + rv = count * 4; + goto no_packing_needed; +#else + for (i = 0; i < count; i++) { + unsigned len = fixed32_pack(((uint32_t *) array)[i], scratch); + buffer->append(buffer, len, scratch); + rv += len; + } + break; +#endif + case PROTOBUF_C_TYPE_SFIXED64: + case PROTOBUF_C_TYPE_FIXED64: + case PROTOBUF_C_TYPE_DOUBLE: +#if !defined(WORDS_BIGENDIAN) + rv = count * 8; + goto no_packing_needed; +#else + for (i = 0; i < count; i++) { + unsigned len = fixed64_pack(((uint64_t *) array)[i], scratch); + buffer->append(buffer, len, scratch); + rv += len; + } + break; +#endif + case PROTOBUF_C_TYPE_ENUM: + case PROTOBUF_C_TYPE_INT32: + for (i = 0; i < count; i++) { + unsigned len = int32_pack(((int32_t *) array)[i], scratch); + buffer->append(buffer, len, scratch); + rv += len; + } + break; + case PROTOBUF_C_TYPE_SINT32: + for (i = 0; i < count; i++) { + unsigned len = sint32_pack(((int32_t *) array)[i], scratch); + buffer->append(buffer, len, scratch); + rv += len; + } + break; + case PROTOBUF_C_TYPE_UINT32: + for (i = 0; i < count; i++) { + unsigned len = uint32_pack(((uint32_t *) array)[i], scratch); + buffer->append(buffer, len, scratch); + rv += len; + } + break; + case PROTOBUF_C_TYPE_SINT64: + for (i = 0; i < count; i++) { + unsigned len = sint64_pack(((int64_t *) array)[i], scratch); + buffer->append(buffer, len, scratch); + rv += len; + } + break; + case PROTOBUF_C_TYPE_INT64: + case PROTOBUF_C_TYPE_UINT64: + for (i = 0; i < count; i++) { + unsigned len = uint64_pack(((uint64_t *) array)[i], scratch); + buffer->append(buffer, len, scratch); + rv += len; + } + break; + case PROTOBUF_C_TYPE_BOOL: + for (i = 0; i < count; i++) { + unsigned len = boolean_pack(((protobuf_c_boolean *) array)[i], scratch); + buffer->append(buffer, len, scratch); + rv += len; + } + return count; + default: + PROTOBUF_C__ASSERT_NOT_REACHED(); + } + return rv; + +#if !defined(WORDS_BIGENDIAN) +no_packing_needed: + buffer->append(buffer, rv, array); + return rv; +#endif +} + +static size_t +repeated_field_pack_to_buffer(const ProtobufCFieldDescriptor *field, + unsigned count, const void *member, + ProtobufCBuffer *buffer) +{ + char *array = *(char * const *) member; + + if (count == 0) + return 0; + if (0 != (field->flags & PROTOBUF_C_FIELD_FLAG_PACKED)) { + uint8_t scratch[MAX_UINT64_ENCODED_SIZE * 2]; + size_t rv = tag_pack(field->id, scratch); + size_t payload_len = get_packed_payload_length(field, count, array); + size_t tmp; + + scratch[0] |= PROTOBUF_C_WIRE_TYPE_LENGTH_PREFIXED; + rv += uint32_pack(payload_len, scratch + rv); + buffer->append(buffer, rv, scratch); + tmp = pack_buffer_packed_payload(field, count, array, buffer); + assert(tmp == payload_len); + return rv + payload_len; + } else { + size_t siz; + unsigned i; + /* CONSIDER: optimize this case a bit (by putting the loop inside the switch) */ + unsigned rv = 0; + + siz = sizeof_elt_in_repeated_array(field->type); + for (i = 0; i < count; i++) { + rv += required_field_pack_to_buffer(field, array, buffer); + array += siz; + } + return rv; + } +} + +static size_t +unknown_field_pack_to_buffer(const ProtobufCMessageUnknownField *field, + ProtobufCBuffer *buffer) +{ + uint8_t header[MAX_UINT64_ENCODED_SIZE]; + size_t rv = tag_pack(field->tag, header); + + header[0] |= field->wire_type; + buffer->append(buffer, rv, header); + buffer->append(buffer, field->len, field->data); + return rv + field->len; +} + +/**@}*/ + +size_t +protobuf_c_message_pack_to_buffer(const ProtobufCMessage *message, + ProtobufCBuffer *buffer) +{ + unsigned i; + size_t rv = 0; + + ASSERT_IS_MESSAGE(message); + for (i = 0; i < message->descriptor->n_fields; i++) { + const ProtobufCFieldDescriptor *field = + message->descriptor->fields + i; + const void *member = + ((const char *) message) + field->offset; + const void *qmember = + ((const char *) message) + field->quantifier_offset; + + if (field->label == PROTOBUF_C_LABEL_REQUIRED) { + rv += required_field_pack_to_buffer(field, member, buffer); + } else if ((field->label == PROTOBUF_C_LABEL_OPTIONAL || + field->label == PROTOBUF_C_LABEL_NONE) && + (0 != (field->flags & PROTOBUF_C_FIELD_FLAG_ONEOF))) { + rv += oneof_field_pack_to_buffer( + field, + *(const uint32_t *) qmember, + member, + buffer + ); + } else if (field->label == PROTOBUF_C_LABEL_OPTIONAL) { + rv += optional_field_pack_to_buffer( + field, + *(const protobuf_c_boolean *) qmember, + member, + buffer + ); + } else if (field->label == PROTOBUF_C_LABEL_NONE) { + rv += unlabeled_field_pack_to_buffer( + field, + member, + buffer + ); + } else { + rv += repeated_field_pack_to_buffer( + field, + *(const size_t *) qmember, + member, + buffer + ); + } + } + for (i = 0; i < message->n_unknown_fields; i++) + rv += unknown_field_pack_to_buffer(&message->unknown_fields[i], buffer); + + return rv; +} + +/** + * \defgroup unpack unpacking implementation + * + * Routines mainly used by the unpacking functions. + * + * \ingroup internal + * @{ + */ + +static inline int +int_range_lookup(unsigned n_ranges, const ProtobufCIntRange *ranges, int value) +{ + unsigned n; + unsigned start; + + if (n_ranges == 0) + return -1; + start = 0; + n = n_ranges; + while (n > 1) { + unsigned mid = start + n / 2; + + if (value < ranges[mid].start_value) { + n = mid - start; + } else if (value >= ranges[mid].start_value + + (int) (ranges[mid + 1].orig_index - + ranges[mid].orig_index)) + { + unsigned new_start = mid + 1; + n = start + n - new_start; + start = new_start; + } else + return (value - ranges[mid].start_value) + + ranges[mid].orig_index; + } + if (n > 0) { + unsigned start_orig_index = ranges[start].orig_index; + unsigned range_size = + ranges[start + 1].orig_index - start_orig_index; + + if (ranges[start].start_value <= value && + value < (int) (ranges[start].start_value + range_size)) + { + return (value - ranges[start].start_value) + + start_orig_index; + } + } + return -1; +} + +static size_t +parse_tag_and_wiretype(size_t len, + const uint8_t *data, + uint32_t *tag_out, + ProtobufCWireType *wiretype_out) +{ + unsigned max_rv = len > 5 ? 5 : len; + uint32_t tag = (data[0] & 0x7f) >> 3; + unsigned shift = 4; + unsigned rv; + + /* 0 is not a valid tag value */ + if ((data[0] & 0xf8) == 0) { + return 0; + } + + *wiretype_out = data[0] & 7; + if ((data[0] & 0x80) == 0) { + *tag_out = tag; + return 1; + } + for (rv = 1; rv < max_rv; rv++) { + if (data[rv] & 0x80) { + tag |= (data[rv] & 0x7f) << shift; + shift += 7; + } else { + tag |= data[rv] << shift; + *tag_out = tag; + return rv + 1; + } + } + return 0; /* error: bad header */ +} + +/* sizeof(ScannedMember) must be <= (1UL< INT_MAX) { + // Protobuf messages should always be less than 2 GiB in size. + // We also want to return early here so that hdr_len + val does + // not overflow on 32-bit systems. + PROTOBUF_C_UNPACK_ERROR("length prefix of %lu is too large", val); + return 0; + } + if (hdr_len + val > len) { + PROTOBUF_C_UNPACK_ERROR("data too short after length-prefix of %lu", val); + return 0; + } + return hdr_len + val; +} + +static size_t +max_b128_numbers(size_t len, const uint8_t *data) +{ + size_t rv = 0; + while (len--) + if ((*data++ & 0x80) == 0) + ++rv; + return rv; +} + +/**@}*/ + +/** + * Merge earlier message into a latter message. + * + * For numeric types and strings, if the same value appears multiple + * times, the parser accepts the last value it sees. For embedded + * message fields, the parser merges multiple instances of the same + * field. That is, all singular scalar fields in the latter instance + * replace those in the former, singular embedded messages are merged, + * and repeated fields are concatenated. + * + * The earlier message should be freed after calling this function, as + * some of its fields may have been reused and changed to their default + * values during the merge. + */ +static protobuf_c_boolean +merge_messages(ProtobufCMessage *earlier_msg, + ProtobufCMessage *latter_msg, + ProtobufCAllocator *allocator) +{ + unsigned i; + const ProtobufCFieldDescriptor *fields = + latter_msg->descriptor->fields; + for (i = 0; i < latter_msg->descriptor->n_fields; i++) { + if (fields[i].label == PROTOBUF_C_LABEL_REPEATED) { + size_t *n_earlier = + STRUCT_MEMBER_PTR(size_t, earlier_msg, + fields[i].quantifier_offset); + uint8_t **p_earlier = + STRUCT_MEMBER_PTR(uint8_t *, earlier_msg, + fields[i].offset); + size_t *n_latter = + STRUCT_MEMBER_PTR(size_t, latter_msg, + fields[i].quantifier_offset); + uint8_t **p_latter = + STRUCT_MEMBER_PTR(uint8_t *, latter_msg, + fields[i].offset); + + if (*n_earlier > 0) { + if (*n_latter > 0) { + /* Concatenate the repeated field */ + size_t el_size = + sizeof_elt_in_repeated_array(fields[i].type); + uint8_t *new_field; + + new_field = do_alloc(allocator, + (*n_earlier + *n_latter) * el_size); + if (!new_field) + return FALSE; + + memcpy(new_field, *p_earlier, + *n_earlier * el_size); + memcpy(new_field + + *n_earlier * el_size, + *p_latter, + *n_latter * el_size); + + do_free(allocator, *p_latter); + do_free(allocator, *p_earlier); + *p_latter = new_field; + *n_latter = *n_earlier + *n_latter; + } else { + /* Zero copy the repeated field from the earlier message */ + *n_latter = *n_earlier; + *p_latter = *p_earlier; + } + /* Make sure the field does not get double freed */ + *n_earlier = 0; + *p_earlier = 0; + } + } else if (fields[i].label == PROTOBUF_C_LABEL_OPTIONAL || + fields[i].label == PROTOBUF_C_LABEL_NONE) { + const ProtobufCFieldDescriptor *field; + uint32_t *earlier_case_p = STRUCT_MEMBER_PTR(uint32_t, + earlier_msg, + fields[i]. + quantifier_offset); + uint32_t *latter_case_p = STRUCT_MEMBER_PTR(uint32_t, + latter_msg, + fields[i]. + quantifier_offset); + protobuf_c_boolean need_to_merge = FALSE; + void *earlier_elem; + void *latter_elem; + const void *def_val; + + if (fields[i].flags & PROTOBUF_C_FIELD_FLAG_ONEOF) { + if (*latter_case_p == 0) { + /* lookup correct oneof field */ + int field_index = + int_range_lookup( + latter_msg->descriptor + ->n_field_ranges, + latter_msg->descriptor + ->field_ranges, + *earlier_case_p); + if (field_index < 0) + return FALSE; + field = latter_msg->descriptor->fields + + field_index; + } else { + /* Oneof is present in the latter message, move on */ + continue; + } + } else { + field = &fields[i]; + } + + earlier_elem = STRUCT_MEMBER_P(earlier_msg, field->offset); + latter_elem = STRUCT_MEMBER_P(latter_msg, field->offset); + def_val = field->default_value; + + switch (field->type) { + case PROTOBUF_C_TYPE_MESSAGE: { + ProtobufCMessage *em = *(ProtobufCMessage **) earlier_elem; + ProtobufCMessage *lm = *(ProtobufCMessage **) latter_elem; + if (em != NULL) { + if (lm != NULL) { + if (!merge_messages(em, lm, allocator)) + return FALSE; + /* Already merged */ + need_to_merge = FALSE; + } else { + /* Zero copy the message */ + need_to_merge = TRUE; + } + } + break; + } + case PROTOBUF_C_TYPE_BYTES: { + uint8_t *e_data = + ((ProtobufCBinaryData *) earlier_elem)->data; + uint8_t *l_data = + ((ProtobufCBinaryData *) latter_elem)->data; + const ProtobufCBinaryData *d_bd = + (ProtobufCBinaryData *) def_val; + + need_to_merge = + (e_data != NULL && + (d_bd == NULL || + e_data != d_bd->data)) && + (l_data == NULL || + (d_bd != NULL && + l_data == d_bd->data)); + break; + } + case PROTOBUF_C_TYPE_STRING: { + char *e_str = *(char **) earlier_elem; + char *l_str = *(char **) latter_elem; + const char *d_str = def_val; + + need_to_merge = e_str != d_str && l_str == d_str; + break; + } + default: { + /* Could be has field or case enum, the logic is + * equivalent, since 0 (FALSE) means not set for + * oneof */ + need_to_merge = (*earlier_case_p != 0) && + (*latter_case_p == 0); + break; + } + } + + if (need_to_merge) { + size_t el_size = + sizeof_elt_in_repeated_array(field->type); + memcpy(latter_elem, earlier_elem, el_size); + /* + * Reset the element from the old message to 0 + * to make sure earlier message deallocation + * doesn't corrupt zero-copied data in the new + * message, earlier message will be freed after + * this function is called anyway + */ + memset(earlier_elem, 0, el_size); + + if (field->quantifier_offset != 0) { + /* Set the has field or the case enum, + * if applicable */ + *latter_case_p = *earlier_case_p; + *earlier_case_p = 0; + } + } + } + } + return TRUE; +} + +/** + * Count packed elements. + * + * Given a raw slab of packed-repeated values, determine the number of + * elements. This function detects certain kinds of errors but not + * others; the remaining error checking is done by + * parse_packed_repeated_member(). + */ +static protobuf_c_boolean +count_packed_elements(ProtobufCType type, + size_t len, const uint8_t *data, size_t *count_out) +{ + switch (type) { + case PROTOBUF_C_TYPE_SFIXED32: + case PROTOBUF_C_TYPE_FIXED32: + case PROTOBUF_C_TYPE_FLOAT: + if (len % 4 != 0) { + PROTOBUF_C_UNPACK_ERROR("length must be a multiple of 4 for fixed-length 32-bit types"); + return FALSE; + } + *count_out = len / 4; + return TRUE; + case PROTOBUF_C_TYPE_SFIXED64: + case PROTOBUF_C_TYPE_FIXED64: + case PROTOBUF_C_TYPE_DOUBLE: + if (len % 8 != 0) { + PROTOBUF_C_UNPACK_ERROR("length must be a multiple of 8 for fixed-length 64-bit types"); + return FALSE; + } + *count_out = len / 8; + return TRUE; + case PROTOBUF_C_TYPE_ENUM: + case PROTOBUF_C_TYPE_INT32: + case PROTOBUF_C_TYPE_SINT32: + case PROTOBUF_C_TYPE_UINT32: + case PROTOBUF_C_TYPE_INT64: + case PROTOBUF_C_TYPE_SINT64: + case PROTOBUF_C_TYPE_UINT64: + *count_out = max_b128_numbers(len, data); + return TRUE; + case PROTOBUF_C_TYPE_BOOL: + *count_out = len; + return TRUE; + case PROTOBUF_C_TYPE_STRING: + case PROTOBUF_C_TYPE_BYTES: + case PROTOBUF_C_TYPE_MESSAGE: + default: + PROTOBUF_C_UNPACK_ERROR("bad protobuf-c type %u for packed-repeated", type); + return FALSE; + } +} + +static inline uint32_t +parse_uint32(unsigned len, const uint8_t *data) +{ + uint32_t rv = data[0] & 0x7f; + if (len > 1) { + rv |= ((uint32_t) (data[1] & 0x7f) << 7); + if (len > 2) { + rv |= ((uint32_t) (data[2] & 0x7f) << 14); + if (len > 3) { + rv |= ((uint32_t) (data[3] & 0x7f) << 21); + if (len > 4) + rv |= ((uint32_t) (data[4]) << 28); + } + } + } + return rv; +} + +static inline uint32_t +parse_int32(unsigned len, const uint8_t *data) +{ + return parse_uint32(len, data); +} + +static inline int32_t +unzigzag32(uint32_t v) +{ + // Note: Using unsigned types prevents undefined behavior + return (int32_t)((v >> 1) ^ (~(v & 1) + 1)); +} + +static inline uint32_t +parse_fixed_uint32(const uint8_t *data) +{ +#if !defined(WORDS_BIGENDIAN) + uint32_t t; + memcpy(&t, data, 4); + return t; +#else + return data[0] | + ((uint32_t) (data[1]) << 8) | + ((uint32_t) (data[2]) << 16) | + ((uint32_t) (data[3]) << 24); +#endif +} + +static uint64_t +parse_uint64(unsigned len, const uint8_t *data) +{ + unsigned shift, i; + uint64_t rv; + + if (len < 5) + return parse_uint32(len, data); + rv = ((uint64_t) (data[0] & 0x7f)) | + ((uint64_t) (data[1] & 0x7f) << 7) | + ((uint64_t) (data[2] & 0x7f) << 14) | + ((uint64_t) (data[3] & 0x7f) << 21); + shift = 28; + for (i = 4; i < len; i++) { + rv |= (((uint64_t) (data[i] & 0x7f)) << shift); + shift += 7; + } + return rv; +} + +static inline int64_t +unzigzag64(uint64_t v) +{ + // Note: Using unsigned types prevents undefined behavior + return (int64_t)((v >> 1) ^ (~(v & 1) + 1)); +} + +static inline uint64_t +parse_fixed_uint64(const uint8_t *data) +{ +#if !defined(WORDS_BIGENDIAN) + uint64_t t; + memcpy(&t, data, 8); + return t; +#else + return (uint64_t) parse_fixed_uint32(data) | + (((uint64_t) parse_fixed_uint32(data + 4)) << 32); +#endif +} + +static protobuf_c_boolean +parse_boolean(unsigned len, const uint8_t *data) +{ + unsigned i; + for (i = 0; i < len; i++) + if (data[i] & 0x7f) + return TRUE; + return FALSE; +} + +static protobuf_c_boolean +parse_required_member(ScannedMember *scanned_member, + void *member, + ProtobufCAllocator *allocator, + protobuf_c_boolean maybe_clear) +{ + unsigned len = scanned_member->len; + const uint8_t *data = scanned_member->data; + ProtobufCWireType wire_type = scanned_member->wire_type; + + switch (scanned_member->field->type) { + case PROTOBUF_C_TYPE_ENUM: + case PROTOBUF_C_TYPE_INT32: + if (wire_type != PROTOBUF_C_WIRE_TYPE_VARINT) + return FALSE; + *(int32_t *) member = parse_int32(len, data); + return TRUE; + case PROTOBUF_C_TYPE_UINT32: + if (wire_type != PROTOBUF_C_WIRE_TYPE_VARINT) + return FALSE; + *(uint32_t *) member = parse_uint32(len, data); + return TRUE; + case PROTOBUF_C_TYPE_SINT32: + if (wire_type != PROTOBUF_C_WIRE_TYPE_VARINT) + return FALSE; + *(int32_t *) member = unzigzag32(parse_uint32(len, data)); + return TRUE; + case PROTOBUF_C_TYPE_SFIXED32: + case PROTOBUF_C_TYPE_FIXED32: + case PROTOBUF_C_TYPE_FLOAT: + if (wire_type != PROTOBUF_C_WIRE_TYPE_32BIT) + return FALSE; + *(uint32_t *) member = parse_fixed_uint32(data); + return TRUE; + case PROTOBUF_C_TYPE_INT64: + case PROTOBUF_C_TYPE_UINT64: + if (wire_type != PROTOBUF_C_WIRE_TYPE_VARINT) + return FALSE; + *(uint64_t *) member = parse_uint64(len, data); + return TRUE; + case PROTOBUF_C_TYPE_SINT64: + if (wire_type != PROTOBUF_C_WIRE_TYPE_VARINT) + return FALSE; + *(int64_t *) member = unzigzag64(parse_uint64(len, data)); + return TRUE; + case PROTOBUF_C_TYPE_SFIXED64: + case PROTOBUF_C_TYPE_FIXED64: + case PROTOBUF_C_TYPE_DOUBLE: + if (wire_type != PROTOBUF_C_WIRE_TYPE_64BIT) + return FALSE; + *(uint64_t *) member = parse_fixed_uint64(data); + return TRUE; + case PROTOBUF_C_TYPE_BOOL: + *(protobuf_c_boolean *) member = parse_boolean(len, data); + return TRUE; + case PROTOBUF_C_TYPE_STRING: { + char **pstr = member; + unsigned pref_len = scanned_member->length_prefix_len; + + if (wire_type != PROTOBUF_C_WIRE_TYPE_LENGTH_PREFIXED) + return FALSE; + + if (maybe_clear && *pstr != NULL) { + const char *def = scanned_member->field->default_value; + if (*pstr != NULL && *pstr != def) + do_free(allocator, *pstr); + } + *pstr = do_alloc(allocator, len - pref_len + 1); + if (*pstr == NULL) + return FALSE; + memcpy(*pstr, data + pref_len, len - pref_len); + (*pstr)[len - pref_len] = 0; + return TRUE; + } + case PROTOBUF_C_TYPE_BYTES: { + ProtobufCBinaryData *bd = member; + const ProtobufCBinaryData *def_bd; + unsigned pref_len = scanned_member->length_prefix_len; + + if (wire_type != PROTOBUF_C_WIRE_TYPE_LENGTH_PREFIXED) + return FALSE; + + def_bd = scanned_member->field->default_value; + if (maybe_clear && + bd->data != NULL && + (def_bd == NULL || bd->data != def_bd->data)) + { + do_free(allocator, bd->data); + } + if (len - pref_len > 0) { + bd->data = do_alloc(allocator, len - pref_len); + if (bd->data == NULL) + return FALSE; + memcpy(bd->data, data + pref_len, len - pref_len); + } else { + bd->data = NULL; + } + bd->len = len - pref_len; + return TRUE; + } + case PROTOBUF_C_TYPE_MESSAGE: { + ProtobufCMessage **pmessage = member; + ProtobufCMessage *subm; + const ProtobufCMessage *def_mess; + protobuf_c_boolean merge_successful = TRUE; + unsigned pref_len = scanned_member->length_prefix_len; + + if (wire_type != PROTOBUF_C_WIRE_TYPE_LENGTH_PREFIXED) + return FALSE; + + def_mess = scanned_member->field->default_value; + subm = protobuf_c_message_unpack(scanned_member->field->descriptor, + allocator, + len - pref_len, + data + pref_len); + + if (maybe_clear && + *pmessage != NULL && + *pmessage != def_mess) + { + if (subm != NULL) + merge_successful = merge_messages(*pmessage, subm, allocator); + /* Delete the previous message */ + protobuf_c_message_free_unpacked(*pmessage, allocator); + } + *pmessage = subm; + if (subm == NULL || !merge_successful) + return FALSE; + return TRUE; + } + } + return FALSE; +} + +static protobuf_c_boolean +parse_oneof_member (ScannedMember *scanned_member, + void *member, + ProtobufCMessage *message, + ProtobufCAllocator *allocator) +{ + uint32_t *oneof_case = STRUCT_MEMBER_PTR(uint32_t, message, + scanned_member->field->quantifier_offset); + + /* If we have already parsed a member of this oneof, free it. */ + if (*oneof_case != 0) { + const ProtobufCFieldDescriptor *old_field; + size_t el_size; + /* lookup field */ + int field_index = + int_range_lookup(message->descriptor->n_field_ranges, + message->descriptor->field_ranges, + *oneof_case); + if (field_index < 0) + return FALSE; + old_field = message->descriptor->fields + field_index; + el_size = sizeof_elt_in_repeated_array(old_field->type); + + switch (old_field->type) { + case PROTOBUF_C_TYPE_STRING: { + char **pstr = member; + const char *def = old_field->default_value; + if (*pstr != NULL && *pstr != def) + do_free(allocator, *pstr); + break; + } + case PROTOBUF_C_TYPE_BYTES: { + ProtobufCBinaryData *bd = member; + const ProtobufCBinaryData *def_bd = old_field->default_value; + if (bd->data != NULL && + (def_bd == NULL || bd->data != def_bd->data)) + { + do_free(allocator, bd->data); + } + break; + } + case PROTOBUF_C_TYPE_MESSAGE: { + ProtobufCMessage **pmessage = member; + const ProtobufCMessage *def_mess = old_field->default_value; + if (*pmessage != NULL && *pmessage != def_mess) + protobuf_c_message_free_unpacked(*pmessage, allocator); + break; + } + default: + break; + } + + memset (member, 0, el_size); + } + if (!parse_required_member (scanned_member, member, allocator, TRUE)) + return FALSE; + + *oneof_case = scanned_member->tag; + return TRUE; +} + + +static protobuf_c_boolean +parse_optional_member(ScannedMember *scanned_member, + void *member, + ProtobufCMessage *message, + ProtobufCAllocator *allocator) +{ + if (!parse_required_member(scanned_member, member, allocator, TRUE)) + return FALSE; + if (scanned_member->field->quantifier_offset != 0) + STRUCT_MEMBER(protobuf_c_boolean, + message, + scanned_member->field->quantifier_offset) = TRUE; + return TRUE; +} + +static protobuf_c_boolean +parse_repeated_member(ScannedMember *scanned_member, + void *member, + ProtobufCMessage *message, + ProtobufCAllocator *allocator) +{ + const ProtobufCFieldDescriptor *field = scanned_member->field; + size_t *p_n = STRUCT_MEMBER_PTR(size_t, message, field->quantifier_offset); + size_t siz = sizeof_elt_in_repeated_array(field->type); + char *array = *(char **) member; + + if (!parse_required_member(scanned_member, array + siz * (*p_n), + allocator, FALSE)) + { + return FALSE; + } + *p_n += 1; + return TRUE; +} + +static unsigned +scan_varint(unsigned len, const uint8_t *data) +{ + unsigned i; + if (len > 10) + len = 10; + for (i = 0; i < len; i++) + if ((data[i] & 0x80) == 0) + break; + if (i == len) + return 0; + return i + 1; +} + +static protobuf_c_boolean +parse_packed_repeated_member(ScannedMember *scanned_member, + void *member, + ProtobufCMessage *message) +{ + const ProtobufCFieldDescriptor *field = scanned_member->field; + size_t *p_n = STRUCT_MEMBER_PTR(size_t, message, field->quantifier_offset); + size_t siz = sizeof_elt_in_repeated_array(field->type); + void *array = *(char **) member + siz * (*p_n); + const uint8_t *at = scanned_member->data + scanned_member->length_prefix_len; + size_t rem = scanned_member->len - scanned_member->length_prefix_len; + size_t count = 0; + unsigned i; + + switch (field->type) { + case PROTOBUF_C_TYPE_SFIXED32: + case PROTOBUF_C_TYPE_FIXED32: + case PROTOBUF_C_TYPE_FLOAT: + count = (scanned_member->len - scanned_member->length_prefix_len) / 4; +#if !defined(WORDS_BIGENDIAN) + goto no_unpacking_needed; +#else + for (i = 0; i < count; i++) { + ((uint32_t *) array)[i] = parse_fixed_uint32(at); + at += 4; + } + break; +#endif + case PROTOBUF_C_TYPE_SFIXED64: + case PROTOBUF_C_TYPE_FIXED64: + case PROTOBUF_C_TYPE_DOUBLE: + count = (scanned_member->len - scanned_member->length_prefix_len) / 8; +#if !defined(WORDS_BIGENDIAN) + goto no_unpacking_needed; +#else + for (i = 0; i < count; i++) { + ((uint64_t *) array)[i] = parse_fixed_uint64(at); + at += 8; + } + break; +#endif + case PROTOBUF_C_TYPE_ENUM: + case PROTOBUF_C_TYPE_INT32: + while (rem > 0) { + unsigned s = scan_varint(rem, at); + if (s == 0) { + PROTOBUF_C_UNPACK_ERROR("bad packed-repeated int32 value"); + return FALSE; + } + ((int32_t *) array)[count++] = parse_int32(s, at); + at += s; + rem -= s; + } + break; + case PROTOBUF_C_TYPE_SINT32: + while (rem > 0) { + unsigned s = scan_varint(rem, at); + if (s == 0) { + PROTOBUF_C_UNPACK_ERROR("bad packed-repeated sint32 value"); + return FALSE; + } + ((int32_t *) array)[count++] = unzigzag32(parse_uint32(s, at)); + at += s; + rem -= s; + } + break; + case PROTOBUF_C_TYPE_UINT32: + while (rem > 0) { + unsigned s = scan_varint(rem, at); + if (s == 0) { + PROTOBUF_C_UNPACK_ERROR("bad packed-repeated enum or uint32 value"); + return FALSE; + } + ((uint32_t *) array)[count++] = parse_uint32(s, at); + at += s; + rem -= s; + } + break; + + case PROTOBUF_C_TYPE_SINT64: + while (rem > 0) { + unsigned s = scan_varint(rem, at); + if (s == 0) { + PROTOBUF_C_UNPACK_ERROR("bad packed-repeated sint64 value"); + return FALSE; + } + ((int64_t *) array)[count++] = unzigzag64(parse_uint64(s, at)); + at += s; + rem -= s; + } + break; + case PROTOBUF_C_TYPE_INT64: + case PROTOBUF_C_TYPE_UINT64: + while (rem > 0) { + unsigned s = scan_varint(rem, at); + if (s == 0) { + PROTOBUF_C_UNPACK_ERROR("bad packed-repeated int64/uint64 value"); + return FALSE; + } + ((int64_t *) array)[count++] = parse_uint64(s, at); + at += s; + rem -= s; + } + break; + case PROTOBUF_C_TYPE_BOOL: + count = rem; + for (i = 0; i < count; i++) { + if (at[i] > 1) { + PROTOBUF_C_UNPACK_ERROR("bad packed-repeated boolean value"); + return FALSE; + } + ((protobuf_c_boolean *) array)[i] = at[i]; + } + break; + default: + PROTOBUF_C__ASSERT_NOT_REACHED(); + } + *p_n += count; + return TRUE; + +#if !defined(WORDS_BIGENDIAN) +no_unpacking_needed: + memcpy(array, at, count * siz); + *p_n += count; + return TRUE; +#endif +} + +static protobuf_c_boolean +is_packable_type(ProtobufCType type) +{ + return + type != PROTOBUF_C_TYPE_STRING && + type != PROTOBUF_C_TYPE_BYTES && + type != PROTOBUF_C_TYPE_MESSAGE; +} + +static protobuf_c_boolean +parse_member(ScannedMember *scanned_member, + ProtobufCMessage *message, + ProtobufCAllocator *allocator) +{ + const ProtobufCFieldDescriptor *field = scanned_member->field; + void *member; + + if (field == NULL) { + ProtobufCMessageUnknownField *ufield = + message->unknown_fields + + (message->n_unknown_fields++); + ufield->tag = scanned_member->tag; + ufield->wire_type = scanned_member->wire_type; + ufield->len = scanned_member->len; + ufield->data = do_alloc(allocator, scanned_member->len); + if (ufield->data == NULL) + return FALSE; + memcpy(ufield->data, scanned_member->data, ufield->len); + return TRUE; + } + member = (char *) message + field->offset; + switch (field->label) { + case PROTOBUF_C_LABEL_REQUIRED: + return parse_required_member(scanned_member, member, + allocator, TRUE); + case PROTOBUF_C_LABEL_OPTIONAL: + case PROTOBUF_C_LABEL_NONE: + if (0 != (field->flags & PROTOBUF_C_FIELD_FLAG_ONEOF)) { + return parse_oneof_member(scanned_member, member, + message, allocator); + } else { + return parse_optional_member(scanned_member, member, + message, allocator); + } + case PROTOBUF_C_LABEL_REPEATED: + if (scanned_member->wire_type == + PROTOBUF_C_WIRE_TYPE_LENGTH_PREFIXED && + (0 != (field->flags & PROTOBUF_C_FIELD_FLAG_PACKED) || + is_packable_type(field->type))) + { + return parse_packed_repeated_member(scanned_member, + member, message); + } else { + return parse_repeated_member(scanned_member, + member, message, + allocator); + } + } + PROTOBUF_C__ASSERT_NOT_REACHED(); + return 0; +} + +/** + * Initialise messages generated by old code. + * + * This function is used if desc->message_init == NULL (which occurs + * for old code, and which would be useful to support allocating + * descriptors dynamically). + */ +static void +message_init_generic(const ProtobufCMessageDescriptor *desc, + ProtobufCMessage *message) +{ + unsigned i; + + memset(message, 0, desc->sizeof_message); + message->descriptor = desc; + for (i = 0; i < desc->n_fields; i++) { + if (desc->fields[i].default_value != NULL && + desc->fields[i].label != PROTOBUF_C_LABEL_REPEATED) + { + void *field = + STRUCT_MEMBER_P(message, desc->fields[i].offset); + const void *dv = desc->fields[i].default_value; + + switch (desc->fields[i].type) { + case PROTOBUF_C_TYPE_INT32: + case PROTOBUF_C_TYPE_SINT32: + case PROTOBUF_C_TYPE_SFIXED32: + case PROTOBUF_C_TYPE_UINT32: + case PROTOBUF_C_TYPE_FIXED32: + case PROTOBUF_C_TYPE_FLOAT: + case PROTOBUF_C_TYPE_ENUM: + memcpy(field, dv, 4); + break; + case PROTOBUF_C_TYPE_INT64: + case PROTOBUF_C_TYPE_SINT64: + case PROTOBUF_C_TYPE_SFIXED64: + case PROTOBUF_C_TYPE_UINT64: + case PROTOBUF_C_TYPE_FIXED64: + case PROTOBUF_C_TYPE_DOUBLE: + memcpy(field, dv, 8); + break; + case PROTOBUF_C_TYPE_BOOL: + memcpy(field, dv, sizeof(protobuf_c_boolean)); + break; + case PROTOBUF_C_TYPE_BYTES: + memcpy(field, dv, sizeof(ProtobufCBinaryData)); + break; + + case PROTOBUF_C_TYPE_STRING: + case PROTOBUF_C_TYPE_MESSAGE: + /* + * The next line essentially implements a cast + * from const, which is totally unavoidable. + */ + *(const void **) field = dv; + break; + } + } + } +} + +/**@}*/ + +/* + * ScannedMember slabs (an unpacking implementation detail). Before doing real + * unpacking, we first scan through the elements to see how many there are (for + * repeated fields), and which field to use (for non-repeated fields given + * twice). + * + * In order to avoid allocations for small messages, we keep a stack-allocated + * slab of ScannedMembers of size FIRST_SCANNED_MEMBER_SLAB_SIZE (16). After we + * fill that up, we allocate each slab twice as large as the previous one. + */ +#define FIRST_SCANNED_MEMBER_SLAB_SIZE_LOG2 4 + +/* + * The number of slabs, including the stack-allocated ones; choose the number so + * that we would overflow if we needed a slab larger than provided. + */ +#define MAX_SCANNED_MEMBER_SLAB \ + (sizeof(unsigned int)*8 - 1 \ + - BOUND_SIZEOF_SCANNED_MEMBER_LOG2 \ + - FIRST_SCANNED_MEMBER_SLAB_SIZE_LOG2) + +#define REQUIRED_FIELD_BITMAP_SET(index) \ + (required_fields_bitmap[(index)/8] |= (1UL<<((index)%8))) + +#define REQUIRED_FIELD_BITMAP_IS_SET(index) \ + (required_fields_bitmap[(index)/8] & (1UL<<((index)%8))) + +ProtobufCMessage * +protobuf_c_message_unpack(const ProtobufCMessageDescriptor *desc, + ProtobufCAllocator *allocator, + size_t len, const uint8_t *data) +{ + ProtobufCMessage *rv; + size_t rem = len; + const uint8_t *at = data; + const ProtobufCFieldDescriptor *last_field = desc->fields + 0; + ScannedMember first_member_slab[1UL << + FIRST_SCANNED_MEMBER_SLAB_SIZE_LOG2]; + + /* + * scanned_member_slabs[i] is an array of arrays of ScannedMember. + * The first slab (scanned_member_slabs[0] is just a pointer to + * first_member_slab), above. All subsequent slabs will be allocated + * using the allocator. + */ + ScannedMember *scanned_member_slabs[MAX_SCANNED_MEMBER_SLAB + 1]; + unsigned which_slab = 0; /* the slab we are currently populating */ + unsigned in_slab_index = 0; /* number of members in the slab */ + size_t n_unknown = 0; + unsigned f; + unsigned j; + unsigned i_slab; + unsigned last_field_index = 0; + unsigned required_fields_bitmap_len; + unsigned char required_fields_bitmap_stack[16]; + unsigned char *required_fields_bitmap = required_fields_bitmap_stack; + protobuf_c_boolean required_fields_bitmap_alloced = FALSE; + + ASSERT_IS_MESSAGE_DESCRIPTOR(desc); + + if (allocator == NULL) + allocator = &protobuf_c__allocator; + + rv = do_alloc(allocator, desc->sizeof_message); + if (!rv) + return (NULL); + scanned_member_slabs[0] = first_member_slab; + + required_fields_bitmap_len = (desc->n_fields + 7) / 8; + if (required_fields_bitmap_len > sizeof(required_fields_bitmap_stack)) { + required_fields_bitmap = do_alloc(allocator, required_fields_bitmap_len); + if (!required_fields_bitmap) { + do_free(allocator, rv); + return (NULL); + } + required_fields_bitmap_alloced = TRUE; + } + memset(required_fields_bitmap, 0, required_fields_bitmap_len); + + /* + * Generated code always defines "message_init". However, we provide a + * fallback for (1) users of old protobuf-c generated-code that do not + * provide the function, and (2) descriptors constructed from some other + * source (most likely, direct construction from the .proto file). + */ + if (desc->message_init != NULL) + protobuf_c_message_init(desc, rv); + else + message_init_generic(desc, rv); + + while (rem > 0) { + uint32_t tag; + ProtobufCWireType wire_type; + size_t used = parse_tag_and_wiretype(rem, at, &tag, &wire_type); + const ProtobufCFieldDescriptor *field; + ScannedMember tmp; + + if (used == 0) { + PROTOBUF_C_UNPACK_ERROR("error parsing tag/wiretype at offset %u", + (unsigned) (at - data)); + goto error_cleanup_during_scan; + } + /* + * \todo Consider optimizing for field[1].id == tag, if field[1] + * exists! + */ + if (last_field == NULL || last_field->id != tag) { + /* lookup field */ + int field_index = + int_range_lookup(desc->n_field_ranges, + desc->field_ranges, + tag); + if (field_index < 0) { + field = NULL; + n_unknown++; + } else { + field = desc->fields + field_index; + last_field = field; + last_field_index = field_index; + } + } else { + field = last_field; + } + + if (field != NULL && field->label == PROTOBUF_C_LABEL_REQUIRED) + REQUIRED_FIELD_BITMAP_SET(last_field_index); + + at += used; + rem -= used; + tmp.tag = tag; + tmp.wire_type = wire_type; + tmp.field = field; + tmp.data = at; + tmp.length_prefix_len = 0; + + switch (wire_type) { + case PROTOBUF_C_WIRE_TYPE_VARINT: { + unsigned max_len = rem < 10 ? rem : 10; + unsigned i; + + for (i = 0; i < max_len; i++) + if ((at[i] & 0x80) == 0) + break; + if (i == max_len) { + PROTOBUF_C_UNPACK_ERROR("unterminated varint at offset %u", + (unsigned) (at - data)); + goto error_cleanup_during_scan; + } + tmp.len = i + 1; + break; + } + case PROTOBUF_C_WIRE_TYPE_64BIT: + if (rem < 8) { + PROTOBUF_C_UNPACK_ERROR("too short after 64bit wiretype at offset %u", + (unsigned) (at - data)); + goto error_cleanup_during_scan; + } + tmp.len = 8; + break; + case PROTOBUF_C_WIRE_TYPE_LENGTH_PREFIXED: { + size_t pref_len; + + tmp.len = scan_length_prefixed_data(rem, at, &pref_len); + if (tmp.len == 0) { + /* NOTE: scan_length_prefixed_data calls UNPACK_ERROR */ + goto error_cleanup_during_scan; + } + tmp.length_prefix_len = pref_len; + break; + } + case PROTOBUF_C_WIRE_TYPE_32BIT: + if (rem < 4) { + PROTOBUF_C_UNPACK_ERROR("too short after 32bit wiretype at offset %u", + (unsigned) (at - data)); + goto error_cleanup_during_scan; + } + tmp.len = 4; + break; + default: + PROTOBUF_C_UNPACK_ERROR("unsupported tag %u at offset %u", + wire_type, (unsigned) (at - data)); + goto error_cleanup_during_scan; + } + + if (in_slab_index == (1UL << + (which_slab + FIRST_SCANNED_MEMBER_SLAB_SIZE_LOG2))) + { + size_t size; + + in_slab_index = 0; + if (which_slab == MAX_SCANNED_MEMBER_SLAB) { + PROTOBUF_C_UNPACK_ERROR("too many fields"); + goto error_cleanup_during_scan; + } + which_slab++; + size = sizeof(ScannedMember) + << (which_slab + FIRST_SCANNED_MEMBER_SLAB_SIZE_LOG2); + scanned_member_slabs[which_slab] = do_alloc(allocator, size); + if (scanned_member_slabs[which_slab] == NULL) + goto error_cleanup_during_scan; + } + scanned_member_slabs[which_slab][in_slab_index++] = tmp; + + if (field != NULL && field->label == PROTOBUF_C_LABEL_REPEATED) { + size_t *n = STRUCT_MEMBER_PTR(size_t, rv, + field->quantifier_offset); + if (wire_type == PROTOBUF_C_WIRE_TYPE_LENGTH_PREFIXED && + (0 != (field->flags & PROTOBUF_C_FIELD_FLAG_PACKED) || + is_packable_type(field->type))) + { + size_t count; + if (!count_packed_elements(field->type, + tmp.len - + tmp.length_prefix_len, + tmp.data + + tmp.length_prefix_len, + &count)) + { + PROTOBUF_C_UNPACK_ERROR("counting packed elements"); + goto error_cleanup_during_scan; + } + *n += count; + } else { + *n += 1; + } + } + + at += tmp.len; + rem -= tmp.len; + } + + /* allocate space for repeated fields, also check that all required fields have been set */ + for (f = 0; f < desc->n_fields; f++) { + const ProtobufCFieldDescriptor *field = desc->fields + f; + if (field->label == PROTOBUF_C_LABEL_REPEATED) { + size_t siz = + sizeof_elt_in_repeated_array(field->type); + size_t *n_ptr = + STRUCT_MEMBER_PTR(size_t, rv, + field->quantifier_offset); + if (*n_ptr != 0) { + unsigned n = *n_ptr; + void *a; + *n_ptr = 0; + assert(rv->descriptor != NULL); +#define CLEAR_REMAINING_N_PTRS() \ + for(f++;f < desc->n_fields; f++) \ + { \ + field = desc->fields + f; \ + if (field->label == PROTOBUF_C_LABEL_REPEATED) \ + STRUCT_MEMBER (size_t, rv, field->quantifier_offset) = 0; \ + } + a = do_alloc(allocator, siz * n); + if (!a) { + CLEAR_REMAINING_N_PTRS(); + goto error_cleanup; + } + STRUCT_MEMBER(void *, rv, field->offset) = a; + } + } else if (field->label == PROTOBUF_C_LABEL_REQUIRED) { + if (field->default_value == NULL && + !REQUIRED_FIELD_BITMAP_IS_SET(f)) + { + CLEAR_REMAINING_N_PTRS(); + PROTOBUF_C_UNPACK_ERROR("message '%s': missing required field '%s'", + desc->name, field->name); + goto error_cleanup; + } + } + } +#undef CLEAR_REMAINING_N_PTRS + + /* allocate space for unknown fields */ + if (n_unknown) { + rv->unknown_fields = do_alloc(allocator, + n_unknown * sizeof(ProtobufCMessageUnknownField)); + if (rv->unknown_fields == NULL) + goto error_cleanup; + } + + /* do real parsing */ + for (i_slab = 0; i_slab <= which_slab; i_slab++) { + unsigned max = (i_slab == which_slab) ? + in_slab_index : (1UL << (i_slab + 4)); + ScannedMember *slab = scanned_member_slabs[i_slab]; + + for (j = 0; j < max; j++) { + if (!parse_member(slab + j, rv, allocator)) { + PROTOBUF_C_UNPACK_ERROR("error parsing member %s of %s", + slab->field ? slab->field->name : "*unknown-field*", + desc->name); + goto error_cleanup; + } + } + } + + /* cleanup */ + for (j = 1; j <= which_slab; j++) + do_free(allocator, scanned_member_slabs[j]); + if (required_fields_bitmap_alloced) + do_free(allocator, required_fields_bitmap); + return rv; + +error_cleanup: + protobuf_c_message_free_unpacked(rv, allocator); + for (j = 1; j <= which_slab; j++) + do_free(allocator, scanned_member_slabs[j]); + if (required_fields_bitmap_alloced) + do_free(allocator, required_fields_bitmap); + return NULL; + +error_cleanup_during_scan: + do_free(allocator, rv); + for (j = 1; j <= which_slab; j++) + do_free(allocator, scanned_member_slabs[j]); + if (required_fields_bitmap_alloced) + do_free(allocator, required_fields_bitmap); + return NULL; +} + +void +protobuf_c_message_free_unpacked(ProtobufCMessage *message, + ProtobufCAllocator *allocator) +{ + const ProtobufCMessageDescriptor *desc; + unsigned f; + + if (message == NULL) + return; + + desc = message->descriptor; + + ASSERT_IS_MESSAGE(message); + + if (allocator == NULL) + allocator = &protobuf_c__allocator; + message->descriptor = NULL; + for (f = 0; f < desc->n_fields; f++) { + if (0 != (desc->fields[f].flags & PROTOBUF_C_FIELD_FLAG_ONEOF) && + desc->fields[f].id != + STRUCT_MEMBER(uint32_t, message, desc->fields[f].quantifier_offset)) + { + /* This is not the selected oneof, skip it */ + continue; + } + + if (desc->fields[f].label == PROTOBUF_C_LABEL_REPEATED) { + size_t n = STRUCT_MEMBER(size_t, + message, + desc->fields[f].quantifier_offset); + void *arr = STRUCT_MEMBER(void *, + message, + desc->fields[f].offset); + + if (arr != NULL) { + if (desc->fields[f].type == PROTOBUF_C_TYPE_STRING) { + unsigned i; + for (i = 0; i < n; i++) + do_free(allocator, ((char **) arr)[i]); + } else if (desc->fields[f].type == PROTOBUF_C_TYPE_BYTES) { + unsigned i; + for (i = 0; i < n; i++) + do_free(allocator, ((ProtobufCBinaryData *) arr)[i].data); + } else if (desc->fields[f].type == PROTOBUF_C_TYPE_MESSAGE) { + unsigned i; + for (i = 0; i < n; i++) + protobuf_c_message_free_unpacked( + ((ProtobufCMessage **) arr)[i], + allocator + ); + } + do_free(allocator, arr); + } + } else if (desc->fields[f].type == PROTOBUF_C_TYPE_STRING) { + char *str = STRUCT_MEMBER(char *, message, + desc->fields[f].offset); + + if (str && str != desc->fields[f].default_value) + do_free(allocator, str); + } else if (desc->fields[f].type == PROTOBUF_C_TYPE_BYTES) { + void *data = STRUCT_MEMBER(ProtobufCBinaryData, message, + desc->fields[f].offset).data; + const ProtobufCBinaryData *default_bd; + + default_bd = desc->fields[f].default_value; + if (data != NULL && + (default_bd == NULL || + default_bd->data != data)) + { + do_free(allocator, data); + } + } else if (desc->fields[f].type == PROTOBUF_C_TYPE_MESSAGE) { + ProtobufCMessage *sm; + + sm = STRUCT_MEMBER(ProtobufCMessage *, message, + desc->fields[f].offset); + if (sm && sm != desc->fields[f].default_value) + protobuf_c_message_free_unpacked(sm, allocator); + } + } + + for (f = 0; f < message->n_unknown_fields; f++) + do_free(allocator, message->unknown_fields[f].data); + if (message->unknown_fields != NULL) + do_free(allocator, message->unknown_fields); + + do_free(allocator, message); +} + +void +protobuf_c_message_init(const ProtobufCMessageDescriptor * descriptor, + void *message) +{ + descriptor->message_init((ProtobufCMessage *) (message)); +} + +protobuf_c_boolean +protobuf_c_message_check(const ProtobufCMessage *message) +{ + unsigned i; + + if (!message || + !message->descriptor || + message->descriptor->magic != PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC) + { + return FALSE; + } + + for (i = 0; i < message->descriptor->n_fields; i++) { + const ProtobufCFieldDescriptor *f = message->descriptor->fields + i; + ProtobufCType type = f->type; + ProtobufCLabel label = f->label; + void *field = STRUCT_MEMBER_P (message, f->offset); + + if (f->flags & PROTOBUF_C_FIELD_FLAG_ONEOF) { + const uint32_t *oneof_case = STRUCT_MEMBER_P (message, f->quantifier_offset); + if (f->id != *oneof_case) { + continue; //Do not check if it is an unpopulated oneof member. + } + } + + if (label == PROTOBUF_C_LABEL_REPEATED) { + size_t *quantity = STRUCT_MEMBER_P (message, f->quantifier_offset); + + if (*quantity > 0 && *(void **) field == NULL) { + return FALSE; + } + + if (type == PROTOBUF_C_TYPE_MESSAGE) { + ProtobufCMessage **submessage = *(ProtobufCMessage ***) field; + unsigned j; + for (j = 0; j < *quantity; j++) { + if (!protobuf_c_message_check(submessage[j])) + return FALSE; + } + } else if (type == PROTOBUF_C_TYPE_STRING) { + char **string = *(char ***) field; + unsigned j; + for (j = 0; j < *quantity; j++) { + if (!string[j]) + return FALSE; + } + } else if (type == PROTOBUF_C_TYPE_BYTES) { + ProtobufCBinaryData *bd = *(ProtobufCBinaryData **) field; + unsigned j; + for (j = 0; j < *quantity; j++) { + if (bd[j].len > 0 && bd[j].data == NULL) + return FALSE; + } + } + + } else { /* PROTOBUF_C_LABEL_REQUIRED or PROTOBUF_C_LABEL_OPTIONAL */ + + if (type == PROTOBUF_C_TYPE_MESSAGE) { + ProtobufCMessage *submessage = *(ProtobufCMessage **) field; + if (label == PROTOBUF_C_LABEL_REQUIRED || submessage != NULL) { + if (!protobuf_c_message_check(submessage)) + return FALSE; + } + } else if (type == PROTOBUF_C_TYPE_STRING) { + char *string = *(char **) field; + if (label == PROTOBUF_C_LABEL_REQUIRED && string == NULL) + return FALSE; + } else if (type == PROTOBUF_C_TYPE_BYTES) { + protobuf_c_boolean *has = STRUCT_MEMBER_P (message, f->quantifier_offset); + ProtobufCBinaryData *bd = field; + if (label == PROTOBUF_C_LABEL_REQUIRED || *has == TRUE) { + if (bd->len > 0 && bd->data == NULL) + return FALSE; + } + } + } + } + + return TRUE; +} + +/* === services === */ + +typedef void (*GenericHandler) (void *service, + const ProtobufCMessage *input, + ProtobufCClosure closure, + void *closure_data); +void +protobuf_c_service_invoke_internal(ProtobufCService *service, + unsigned method_index, + const ProtobufCMessage *input, + ProtobufCClosure closure, + void *closure_data) +{ + GenericHandler *handlers; + GenericHandler handler; + + /* + * Verify that method_index is within range. If this fails, you are + * likely invoking a newly added method on an old service. (Although + * other memory corruption bugs can cause this assertion too.) + */ + assert(method_index < service->descriptor->n_methods); + + /* + * Get the array of virtual methods (which are enumerated by the + * generated code). + */ + handlers = (GenericHandler *) (service + 1); + + /* + * Get our method and invoke it. + * \todo Seems like handler == NULL is a situation that needs handling. + */ + handler = handlers[method_index]; + (*handler)(service, input, closure, closure_data); +} + +void +protobuf_c_service_generated_init(ProtobufCService *service, + const ProtobufCServiceDescriptor *descriptor, + ProtobufCServiceDestroy destroy) +{ + ASSERT_IS_SERVICE_DESCRIPTOR(descriptor); + service->descriptor = descriptor; + service->destroy = destroy; + service->invoke = protobuf_c_service_invoke_internal; + memset(service + 1, 0, descriptor->n_methods * sizeof(GenericHandler)); +} + +void protobuf_c_service_destroy(ProtobufCService *service) +{ + service->destroy(service); +} + +/* --- querying the descriptors --- */ + +const ProtobufCEnumValue * +protobuf_c_enum_descriptor_get_value_by_name(const ProtobufCEnumDescriptor *desc, + const char *name) +{ + unsigned start = 0; + unsigned count; + + if (desc == NULL || desc->values_by_name == NULL) + return NULL; + + count = desc->n_value_names; + + while (count > 1) { + unsigned mid = start + count / 2; + int rv = strcmp(desc->values_by_name[mid].name, name); + if (rv == 0) + return desc->values + desc->values_by_name[mid].index; + else if (rv < 0) { + count = start + count - (mid + 1); + start = mid + 1; + } else + count = mid - start; + } + if (count == 0) + return NULL; + if (strcmp(desc->values_by_name[start].name, name) == 0) + return desc->values + desc->values_by_name[start].index; + return NULL; +} + +const ProtobufCEnumValue * +protobuf_c_enum_descriptor_get_value(const ProtobufCEnumDescriptor *desc, + int value) +{ + int rv = int_range_lookup(desc->n_value_ranges, desc->value_ranges, value); + if (rv < 0) + return NULL; + return desc->values + rv; +} + +const ProtobufCFieldDescriptor * +protobuf_c_message_descriptor_get_field_by_name(const ProtobufCMessageDescriptor *desc, + const char *name) +{ + unsigned start = 0; + unsigned count; + const ProtobufCFieldDescriptor *field; + + if (desc == NULL || desc->fields_sorted_by_name == NULL) + return NULL; + + count = desc->n_fields; + + while (count > 1) { + unsigned mid = start + count / 2; + int rv; + field = desc->fields + desc->fields_sorted_by_name[mid]; + rv = strcmp(field->name, name); + if (rv == 0) + return field; + else if (rv < 0) { + count = start + count - (mid + 1); + start = mid + 1; + } else + count = mid - start; + } + if (count == 0) + return NULL; + field = desc->fields + desc->fields_sorted_by_name[start]; + if (strcmp(field->name, name) == 0) + return field; + return NULL; +} + +const ProtobufCFieldDescriptor * +protobuf_c_message_descriptor_get_field(const ProtobufCMessageDescriptor *desc, + unsigned value) +{ + int rv = int_range_lookup(desc->n_field_ranges,desc->field_ranges, value); + if (rv < 0) + return NULL; + return desc->fields + rv; +} + +const ProtobufCMethodDescriptor * +protobuf_c_service_descriptor_get_method_by_name(const ProtobufCServiceDescriptor *desc, + const char *name) +{ + unsigned start = 0; + unsigned count; + + if (desc == NULL || desc->method_indices_by_name == NULL) + return NULL; + + count = desc->n_methods; + + while (count > 1) { + unsigned mid = start + count / 2; + unsigned mid_index = desc->method_indices_by_name[mid]; + const char *mid_name = desc->methods[mid_index].name; + int rv = strcmp(mid_name, name); + + if (rv == 0) + return desc->methods + desc->method_indices_by_name[mid]; + if (rv < 0) { + count = start + count - (mid + 1); + start = mid + 1; + } else { + count = mid - start; + } + } + if (count == 0) + return NULL; + if (strcmp(desc->methods[desc->method_indices_by_name[start]].name, name) == 0) + return desc->methods + desc->method_indices_by_name[start]; + return NULL; +} diff --git a/parser/src_backend_catalog_namespace.c b/parser/src_backend_catalog_namespace.c index 26492753..2841ebf7 100644 --- a/parser/src_backend_catalog_namespace.c +++ b/parser/src_backend_catalog_namespace.c @@ -16,7 +16,7 @@ * and implementing search-path-controlled searches. * * - * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * IDENTIFICATION @@ -35,7 +35,6 @@ #include "catalog/pg_authid.h" #include "catalog/pg_collation.h" #include "catalog/pg_conversion.h" -#include "catalog/pg_conversion_fn.h" #include "catalog/pg_namespace.h" #include "catalog/pg_opclass.h" #include "catalog/pg_operator.h" @@ -55,7 +54,7 @@ #include "parser/parse_func.h" #include "storage/ipc.h" #include "storage/lmgr.h" -#include "storage/sinval.h" +#include "storage/sinvaladt.h" #include "utils/acl.h" #include "utils/builtins.h" #include "utils/catcache.h" @@ -102,7 +101,7 @@ * set up until the first attempt to create something in it. (The reason for * klugery is that we can't create the temp namespace outside a transaction, * but initial GUC processing of search_path happens outside a transaction.) - * activeTempCreationPending is TRUE if "pg_temp" appears first in the string + * activeTempCreationPending is true if "pg_temp" appears first in the string * but is not reflected in activeCreationNamespace because the namespace isn't * set up yet. * @@ -134,6 +133,11 @@ * namespaceUser is the userid the path has been computed for. * * Note: all data pointed to by these List variables is in TopMemoryContext. + * + * activePathGeneration is incremented whenever the effective values of + * activeSearchPath/activeCreationNamespace/activeTempCreationPending change. + * This can be used to quickly detect whether any change has happened since + * a previous examination of the search path state. */ /* These variables define the actually active state: */ @@ -143,7 +147,10 @@ /* default place to create stuff; if InvalidOid, no default */ -/* if TRUE, activeCreationNamespace is wrong, it should be temp namespace */ +/* if true, activeCreationNamespace is wrong, it should be temp namespace */ + + +/* current generation counter; make sure this is never zero */ /* These variables are the values last derived from namespace_search_path: */ @@ -206,18 +213,28 @@ static void RemoveTempRelations(Oid tempNamespaceId); static void RemoveTempRelationsCallback(int code, Datum arg); static void NamespaceCallback(Datum arg, int cacheid, uint32 hashvalue); static bool MatchNamedCall(HeapTuple proctup, int nargs, List *argnames, - int **argnumbers); + int **argnumbers); /* - * RangeVarGetRelid + * RangeVarGetRelidExtended * Given a RangeVar describing an existing relation, * select the proper namespace and look up the relation OID. * - * If the schema or relation is not found, return InvalidOid if missing_ok - * = true, otherwise raise an error. + * If the schema or relation is not found, return InvalidOid if flags contains + * RVR_MISSING_OK, otherwise raise an error. + * + * If flags contains RVR_NOWAIT, throw an error if we'd have to wait for a + * lock. * - * If nowait = true, throw an error if we'd have to wait for a lock. + * If flags contains RVR_SKIP_LOCKED, return InvalidOid if we'd have to wait + * for a lock. + * + * flags cannot contain both RVR_NOWAIT and RVR_SKIP_LOCKED. + * + * Note that if RVR_MISSING_OK and RVR_SKIP_LOCKED are both specified, a + * return value of InvalidOid could either mean the relation is missing or it + * could not be locked. * * Callback allows caller to check permissions or acquire additional locks * prior to grabbing the relation lock. @@ -243,9 +260,9 @@ static bool MatchNamedCall(HeapTuple proctup, int nargs, List *argnames, * permission on the target namespace, this function will instead signal * an ERROR. * - * If non-NULL, *existing_oid is set to the OID of any existing relation with - * the same name which already exists in that namespace, or to InvalidOid if - * no such relation exists. + * If non-NULL, *existing_relation_id is set to the OID of any existing relation + * with the same name which already exists in that namespace, or to InvalidOid + * if no such relation exists. * * If lockmode != NoLock, the specified lock mode is acquired on the existing * relation, if any, provided that the current user owns the target relation. @@ -563,7 +580,7 @@ static bool MatchNamedCall(HeapTuple proctup, int nargs, List *argnames, /* * get_ts_dict_oid - find a TS dictionary by possibly qualified name * - * If not found, returns InvalidOid if failOK, else throws error + * If not found, returns InvalidOid if missing_ok, else throws error */ @@ -764,6 +781,17 @@ NameListToString(List *names) */ +/* + * checkTempNamespaceStatus - is the given namespace owned and actively used + * by a backend? + * + * Note: this can be used while scanning relations in pg_class to detect + * orphaned temporary tables or namespaces with a backend connected to a + * given database. The result may be out of date quickly, so the caller + * must be careful how to handle this information. + */ + + /* * GetTempNamespaceBackendId - if the given namespace is a temporary-table * namespace (either my own, or another backend's), return the BackendId @@ -818,6 +846,11 @@ NameListToString(List *names) /* * OverrideSearchPathMatchesCurrent - does path match current setting? + * + * This is tested over and over in some common code paths, and in the typical + * scenario where the active search path seldom changes, it'll always succeed. + * We make that case fast by keeping a generation counter that is advanced + * whenever the active search path changes. */ @@ -921,9 +954,6 @@ Oid get_collation_oid(List *name, bool missing_ok) { return -1; } /* * Remove all temp tables from the temporary namespace. - * - * If we haven't set up one yet, but one exists from a previous crashed - * backend, clean that one; but only do this once in a session's life. */ diff --git a/parser/src_backend_catalog_pg_proc.c b/parser/src_backend_catalog_pg_proc.c index 335178df..9690ea3c 100644 --- a/parser/src_backend_catalog_pg_proc.c +++ b/parser/src_backend_catalog_pg_proc.c @@ -9,7 +9,7 @@ * pg_proc.c * routines to support manipulation of the pg_proc relation * - * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * @@ -21,14 +21,15 @@ #include "postgres.h" #include "access/htup_details.h" +#include "access/table.h" #include "access/xact.h" +#include "catalog/catalog.h" #include "catalog/dependency.h" #include "catalog/indexing.h" #include "catalog/objectaccess.h" #include "catalog/pg_language.h" #include "catalog/pg_namespace.h" #include "catalog/pg_proc.h" -#include "catalog/pg_proc_fn.h" #include "catalog/pg_transform.h" #include "catalog/pg_type.h" #include "commands/defrem.h" @@ -37,6 +38,7 @@ #include "mb/pg_wchar.h" #include "miscadmin.h" #include "nodes/nodeFuncs.h" +#include "parser/parse_coerce.h" #include "parser/parse_type.h" #include "tcop/pquery.h" #include "tcop/tcopprot.h" @@ -55,10 +57,10 @@ typedef struct } parse_error_callback_arg; static void sql_function_parse_error_callback(void *arg); -static int match_prosrc_to_query(const char *prosrc, const char *queryText, - int cursorpos); +static int match_prosrc_to_query(const char *prosrc, const char *queryText, + int cursorpos); static bool match_prosrc_to_literal(const char *prosrc, const char *literal, - int cursorpos, int *newcursorpos); + int cursorpos, int *newcursorpos); /* ---------------------------------------------------------------- @@ -66,7 +68,7 @@ static bool match_prosrc_to_literal(const char *prosrc, const char *literal, * * Note: allParameterTypes, parameterModes, parameterNames, trftypes, and proconfig * are either arrays of the proper types or NULL. We declare them Datum, - * not "ArrayType *", to avoid importing array.h into pg_proc_fn.h. + * not "ArrayType *", to avoid importing array.h into pg_proc.h. * ---------------------------------------------------------------- */ diff --git a/parser/src_backend_commands_define.c b/parser/src_backend_commands_define.c new file mode 100644 index 00000000..d40c1fd0 --- /dev/null +++ b/parser/src_backend_commands_define.c @@ -0,0 +1,117 @@ +/*-------------------------------------------------------------------- + * Symbols referenced in this file: + * - defGetInt32 + *-------------------------------------------------------------------- + */ + +/*------------------------------------------------------------------------- + * + * define.c + * Support routines for various kinds of object creation. + * + * + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group + * Portions Copyright (c) 1994, Regents of the University of California + * + * + * IDENTIFICATION + * src/backend/commands/define.c + * + * DESCRIPTION + * The "DefineFoo" routines take the parse tree and pick out the + * appropriate arguments/flags, passing the results to the + * corresponding "FooDefine" routines (in src/catalog) that do + * the actual catalog-munging. These routines also verify permission + * of the user to execute the command. + * + * NOTES + * These things must be defined and committed in the following order: + * "create function": + * input/output, recv/send procedures + * "create type": + * type + * "create operator": + * operators + * + * + *------------------------------------------------------------------------- + */ +#include "postgres.h" + +#include +#include + +#include "catalog/namespace.h" +#include "commands/defrem.h" +#include "nodes/makefuncs.h" +#include "parser/parse_type.h" +#include "parser/scansup.h" +#include "utils/builtins.h" + +/* + * Extract a string value (otherwise uninterpreted) from a DefElem. + */ + + +/* + * Extract a numeric value (actually double) from a DefElem. + */ + + +/* + * Extract a boolean value from a DefElem. + */ + + +/* + * Extract an int32 value from a DefElem. + */ +int32 +defGetInt32(DefElem *def) +{ + if (def->arg == NULL) + ereport(ERROR, + (errcode(ERRCODE_SYNTAX_ERROR), + errmsg("%s requires an integer value", + def->defname))); + switch (nodeTag(def->arg)) + { + case T_Integer: + return (int32) intVal(def->arg); + default: + ereport(ERROR, + (errcode(ERRCODE_SYNTAX_ERROR), + errmsg("%s requires an integer value", + def->defname))); + } + return 0; /* keep compiler quiet */ +} + +/* + * Extract an int64 value from a DefElem. + */ + + +/* + * Extract a possibly-qualified name (as a List of Strings) from a DefElem. + */ + + +/* + * Extract a TypeName from a DefElem. + * + * Note: we do not accept a List arg here, because the parser will only + * return a bare List when the name looks like an operator name. + */ + + +/* + * Extract a type length indicator (either absolute bytes, or + * -1 for "variable") from a DefElem. + */ + + +/* + * Extract a list of string values (otherwise uninterpreted) from a DefElem. + */ + diff --git a/parser/src_backend_libpq_pqcomm.c b/parser/src_backend_libpq_pqcomm.c index f94b0183..504bdf96 100644 --- a/parser/src_backend_libpq_pqcomm.c +++ b/parser/src_backend_libpq_pqcomm.c @@ -33,7 +33,7 @@ * the backend's "backend/libpq" is quite separate from "interfaces/libpq". * All that remains is similarities of names to trap the unwary... * - * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/backend/libpq/pqcomm.c @@ -50,8 +50,8 @@ * StreamClose - Close a client/backend connection * TouchSocketFiles - Protect socket files against /tmp cleaners * pq_init - initialize libpq at backend startup - * pq_comm_reset - reset libpq during error recovery - * pq_close - shutdown libpq at backend exit + * socket_comm_reset - reset libpq during error recovery + * socket_close - shutdown libpq at backend exit * * low-level I/O: * pq_getbytes - get a known number of bytes from connection @@ -87,10 +87,7 @@ #ifdef HAVE_NETINET_TCP_H #include #endif -#include -#ifdef HAVE_UTIME_H #include -#endif #ifdef _MSC_VER /* mstcpip.h is missing on mingw */ #include #endif @@ -98,6 +95,7 @@ #include "common/ip.h" #include "libpq/libpq.h" #include "miscadmin.h" +#include "port/pg_bswap.h" #include "storage/ipc.h" #include "utils/guc.h" #include "utils/memutils.h" @@ -172,13 +170,13 @@ static int internal_putbytes(const char *s, size_t len); static int internal_flush(void); #ifdef HAVE_UNIX_SOCKETS -static int Lock_AF_UNIX(char *unixSocketDir, char *unixSocketPath); -static int Setup_AF_UNIX(char *sock_path); +static int Lock_AF_UNIX(const char *unixSocketDir, const char *unixSocketPath); +static int Setup_AF_UNIX(const char *sock_path); #endif /* HAVE_UNIX_SOCKETS */ -PQcommMethods *PqCommMethods = NULL; +const PQcommMethods *PqCommMethods = NULL; @@ -209,10 +207,8 @@ PQcommMethods *PqCommMethods = NULL; * safe to run at any instant. * -------------------------------- */ -#if defined(ENABLE_GSS) || defined(ENABLE_SSPI) #ifdef ENABLE_GSS #endif /* ENABLE_GSS */ -#endif /* ENABLE_GSS || ENABLE_SSPI */ @@ -315,11 +311,7 @@ PQcommMethods *PqCommMethods = NULL; * overenthusiastic /tmp-directory-cleaner daemons. (Another reason we should * never have put the socket file in /tmp...) */ -#ifdef HAVE_UTIME -#else /* !HAVE_UTIME */ -#ifdef HAVE_UTIMES -#endif /* HAVE_UTIMES */ -#endif /* HAVE_UTIME */ + /* * RemoveSocketFiles -- unlink socket files at postmaster shutdown @@ -338,7 +330,7 @@ PQcommMethods *PqCommMethods = NULL; /* -------------------------------- * socket_set_nonblocking - set socket blocking/non-blocking * - * Sets the socket non-blocking if nonblocking is TRUE, or sets it + * Sets the socket non-blocking if nonblocking is true, or sets it * blocking otherwise. * -------------------------------- */ @@ -649,3 +641,11 @@ pq_setkeepaliveswin32(Port *port, int idle, int interval) #ifdef TCP_KEEPCNT #else #endif + +#ifdef TCP_USER_TIMEOUT +#else +#endif + +#ifdef TCP_USER_TIMEOUT +#else +#endif diff --git a/parser/src_backend_nodes_bitmapset.c b/parser/src_backend_nodes_bitmapset.c index 18e695fb..6335ba67 100644 --- a/parser/src_backend_nodes_bitmapset.c +++ b/parser/src_backend_nodes_bitmapset.c @@ -3,11 +3,10 @@ * - bms_copy * - bms_equal * - bms_is_empty - * - bms_add_member - * - bms_make_singleton * - bms_first_member - * - rightmost_one_pos * - bms_free + * - bms_next_member + * - bms_num_members *-------------------------------------------------------------------- */ @@ -24,7 +23,7 @@ * bms_is_empty() in preference to testing for NULL.) * * - * Copyright (c) 2003-2017, PostgreSQL Global Development Group + * Copyright (c) 2003-2020, PostgreSQL Global Development Group * * IDENTIFICATION * src/backend/nodes/bitmapset.c @@ -33,8 +32,10 @@ */ #include "postgres.h" -#include "access/hash.h" +#include "common/hashfn.h" +#include "nodes/bitmapset.h" #include "nodes/pg_list.h" +#include "port/pg_bitutils.h" #define WORDNUM(x) ((x) / BITS_PER_BITMAPWORD) @@ -64,40 +65,18 @@ #define HAS_MULTIPLE_ONES(x) ((bitmapword) RIGHTMOST_ONE(x) != (x)) - -/* - * Lookup tables to avoid need for bit-by-bit groveling - * - * rightmost_one_pos[x] gives the bit number (0-7) of the rightmost one bit - * in a nonzero byte value x. The entry for x=0 is never used. - * - * number_of_ones[x] gives the number of one-bits (0-8) in a byte value x. - * - * We could make these tables larger and reduce the number of iterations - * in the functions that use them, but bytewise shifts and masks are - * especially fast on many machines, so working a byte at a time seems best. - */ - -static const uint8 rightmost_one_pos[256] = { - 0, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, - 4, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, - 5, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, - 4, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, - 6, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, - 4, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, - 5, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, - 4, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, - 7, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, - 4, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, - 5, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, - 4, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, - 6, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, - 4, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, - 5, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, - 4, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0 -}; - - +/* Select appropriate bit-twiddling functions for bitmap word size */ +#if BITS_PER_BITMAPWORD == 32 +#define bmw_leftmost_one_pos(w) pg_leftmost_one_pos32(w) +#define bmw_rightmost_one_pos(w) pg_rightmost_one_pos32(w) +#define bmw_popcount(w) pg_popcount32(w) +#elif BITS_PER_BITMAPWORD == 64 +#define bmw_leftmost_one_pos(w) pg_leftmost_one_pos64(w) +#define bmw_rightmost_one_pos(w) pg_rightmost_one_pos64(w) +#define bmw_popcount(w) pg_popcount64(w) +#else +#error "invalid BITS_PER_BITMAPWORD" +#endif /* @@ -168,25 +147,20 @@ bms_equal(const Bitmapset *a, const Bitmapset *b) return true; } +/* + * bms_compare - qsort-style comparator for bitmapsets + * + * This guarantees to report values as equal iff bms_equal would say they are + * equal. Otherwise, the highest-numbered bit that is set in one value but + * not the other determines the result. (This rule means that, for example, + * {6} is greater than {5}, which seems plausible.) + */ + + /* * bms_make_singleton - build a bitmapset containing a single member */ -Bitmapset * -bms_make_singleton(int x) -{ - Bitmapset *result; - int wordnum, - bitnum; - - if (x < 0) - elog(ERROR, "negative bitmapset member not allowed"); - wordnum = WORDNUM(x); - bitnum = BITNUM(x); - result = (Bitmapset *) palloc0(BITMAPSET_SIZE(wordnum + 1)); - result->nwords = wordnum + 1; - result->words[wordnum] = ((bitmapword) 1 << bitnum); - return result; -} + /* * bms_free - free a bitmapset @@ -239,6 +213,14 @@ bms_free(Bitmapset *a) */ +/* + * bms_member_index + * determine 0-based index of member x in the bitmap + * + * Returns (-1) when x is not a member. + */ + + /* * bms_overlap - do sets overlap (ie, have a nonempty intersection)? */ @@ -265,8 +247,8 @@ bms_free(Bitmapset *a) * bms_get_singleton_member * * Test whether the given set is a singleton. - * If so, set *member to the value of its sole member, and return TRUE. - * If not, return FALSE, without changing *member. + * If so, set *member to the value of its sole member, and return true. + * If not, return false, without changing *member. * * This is more convenient and faster than calling bms_membership() and then * bms_singleton_member(), if we don't care about distinguishing empty sets @@ -277,7 +259,26 @@ bms_free(Bitmapset *a) /* * bms_num_members - count members of set */ +int +bms_num_members(const Bitmapset *a) +{ + int result = 0; + int nwords; + int wordnum; + + if (a == NULL) + return 0; + nwords = a->nwords; + for (wordnum = 0; wordnum < nwords; wordnum++) + { + bitmapword w = a->words[wordnum]; + /* No need to count the bits in a zero word */ + if (w != 0) + result += bmw_popcount(w); + } + return result; +} /* * bms_membership - does a set have zero, one, or multiple members? @@ -326,35 +327,7 @@ bms_is_empty(const Bitmapset *a) * * Input set is modified or recycled! */ -Bitmapset * -bms_add_member(Bitmapset *a, int x) -{ - int wordnum, - bitnum; - - if (x < 0) - elog(ERROR, "negative bitmapset member not allowed"); - if (a == NULL) - return bms_make_singleton(x); - wordnum = WORDNUM(x); - bitnum = BITNUM(x); - /* enlarge the set if necessary */ - if (wordnum >= a->nwords) - { - int oldnwords = a->nwords; - int i; - - a = (Bitmapset *) repalloc(a, BITMAPSET_SIZE(wordnum + 1)); - a->nwords = wordnum + 1; - /* zero out the enlarged portion */ - for (i = oldnwords; i < a->nwords; i++) - a->words[i] = 0; - } - - a->words[wordnum] |= ((bitmapword) 1 << bitnum); - return a; -} /* * bms_del_member - remove a specified member from set @@ -370,6 +343,16 @@ bms_add_member(Bitmapset *a, int x) */ +/* + * bms_add_range + * Add members in the range of 'lower' to 'upper' to the set. + * + * Note this could also be done by calling bms_add_member in a loop, however, + * using this function will be faster when the range is large as we work at + * the bitmapword level rather than at bit level. + */ + + /* * bms_int_members - like bms_intersect, but left input is recycled */ @@ -420,12 +403,7 @@ bms_first_member(Bitmapset *a) a->words[wordnum] &= ~w; result = wordnum * BITS_PER_BITMAPWORD; - while ((w & 255) == 0) - { - w >>= 8; - result += 8; - } - result += rightmost_one_pos[w & 255]; + result += bmw_rightmost_one_pos(w); return result; } } @@ -451,6 +429,65 @@ bms_first_member(Bitmapset *a) * It makes no difference in simple loop usage, but complex iteration logic * might need such an ability. */ +int +bms_next_member(const Bitmapset *a, int prevbit) +{ + int nwords; + int wordnum; + bitmapword mask; + + if (a == NULL) + return -2; + nwords = a->nwords; + prevbit++; + mask = (~(bitmapword) 0) << BITNUM(prevbit); + for (wordnum = WORDNUM(prevbit); wordnum < nwords; wordnum++) + { + bitmapword w = a->words[wordnum]; + + /* ignore bits before prevbit */ + w &= mask; + + if (w != 0) + { + int result; + + result = wordnum * BITS_PER_BITMAPWORD; + result += bmw_rightmost_one_pos(w); + return result; + } + + /* in subsequent words, consider all bits */ + mask = (~(bitmapword) 0); + } + return -2; +} + +/* + * bms_prev_member - find prev member of a set + * + * Returns largest member less than "prevbit", or -2 if there is none. + * "prevbit" must NOT be more than one above the highest possible bit that can + * be set at the Bitmapset at its current size. + * + * To ease finding the highest set bit for the initial loop, the special + * prevbit value of -1 can be passed to have the function find the highest + * valued member in the set. + * + * This is intended as support for iterating through the members of a set in + * reverse. The typical pattern is + * + * x = -1; + * while ((x = bms_prev_member(inputset, x)) >= 0) + * process member x; + * + * Notice that when there are no more members, we return -2, not -1 as you + * might expect. The rationale for that is to allow distinguishing the + * loop-not-started state (x == -1) from the loop-completed state (x == -2). + * It makes no difference in simple loop usage, but complex iteration logic + * might need such an ability. + */ + /* @@ -462,3 +499,15 @@ bms_first_member(Bitmapset *a) * hash_any(). */ + +/* + * bitmap_hash - hash function for keys that are (pointers to) Bitmapsets + * + * Note: don't forget to specify bitmap_match as the match function! + */ + + +/* + * bitmap_match - match function to use with bitmap_hash + */ + diff --git a/parser/src_backend_nodes_copyfuncs.c b/parser/src_backend_nodes_copyfuncs.c index 41a29dde..2a840848 100644 --- a/parser/src_backend_nodes_copyfuncs.c +++ b/parser/src_backend_nodes_copyfuncs.c @@ -39,6 +39,8 @@ * - _copyHashJoin * - _copyMaterial * - _copySort + * - CopySortFields + * - _copyIncrementalSort * - _copyGroup * - _copyAgg * - _copyWindowAgg @@ -49,6 +51,10 @@ * - _copyLimit * - _copyNestLoopParam * - _copyPlanRowMark + * - _copyPartitionPruneInfo + * - _copyPartitionedRelPruneInfo + * - _copyPartitionPruneStepOp + * - _copyPartitionPruneStepCombine * - _copyPlanInvalItem * - _copyAlias * - _copyRangeVar @@ -60,7 +66,7 @@ * - _copyAggref * - _copyGroupingFunc * - _copyWindowFunc - * - _copyArrayRef + * - _copySubscriptingRef * - _copyFuncExpr * - _copyNamedArgExpr * - _copyOpExpr @@ -106,10 +112,8 @@ * - _copyPlaceHolderVar * - _copySpecialJoinInfo * - _copyAppendRelInfo - * - _copyPartitionedChildRelInfo * - _copyPlaceHolderInfo * - _copyValue - * - _copyList * - _copyExtensibleNode * - _copyQuery * - _copyRawStmt @@ -127,6 +131,7 @@ * - _copyAlterDefaultPrivilegesStmt * - _copyDeclareCursorStmt * - _copyClosePortalStmt + * - _copyCallStmt * - _copyClusterStmt * - _copyCopyStmt * - _copyCreateStmt @@ -140,6 +145,7 @@ * - _copyFetchStmt * - _copyIndexStmt * - _copyCreateStatsStmt + * - _copyAlterStatsStmt * - _copyCreateFunctionStmt * - _copyFunctionParameter * - _copyAlterFunctionStmt @@ -149,6 +155,7 @@ * - _copyAlterObjectSchemaStmt * - _copyAlterOwnerStmt * - _copyAlterOperatorStmt + * - _copyAlterTypeStmt * - _copyRuleStmt * - _copyNotifyStmt * - _copyListenStmt @@ -170,6 +177,7 @@ * - _copyAlterDatabaseSetStmt * - _copyDropdbStmt * - _copyVacuumStmt + * - _copyVacuumRelation * - _copyExplainStmt * - _copyCreateTableAsStmt * - _copyRefreshMatViewStmt @@ -291,7 +299,7 @@ * be handled easily in a simple depth-first traversal. * * - * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * IDENTIFICATION @@ -304,8 +312,8 @@ #include "miscadmin.h" #include "nodes/extensible.h" +#include "nodes/pathnodes.h" #include "nodes/plannodes.h" -#include "nodes/relation.h" #include "utils/datum.h" #include "utils/rel.h" @@ -367,20 +375,21 @@ _copyPlannedStmt(const PlannedStmt *from) COPY_SCALAR_FIELD(transientPlan); COPY_SCALAR_FIELD(dependsOnRole); COPY_SCALAR_FIELD(parallelModeNeeded); + COPY_SCALAR_FIELD(jitFlags); COPY_NODE_FIELD(planTree); COPY_NODE_FIELD(rtable); COPY_NODE_FIELD(resultRelations); - COPY_NODE_FIELD(nonleafResultRelations); COPY_NODE_FIELD(rootResultRelations); + COPY_NODE_FIELD(appendRelations); COPY_NODE_FIELD(subplans); COPY_BITMAPSET_FIELD(rewindPlanIDs); COPY_NODE_FIELD(rowMarks); COPY_NODE_FIELD(relationOids); COPY_NODE_FIELD(invalItems); - COPY_SCALAR_FIELD(nParamExec); + COPY_NODE_FIELD(paramExecTypes); COPY_NODE_FIELD(utilityStmt); COPY_LOCATION_FIELD(stmt_location); - COPY_LOCATION_FIELD(stmt_len); + COPY_SCALAR_FIELD(stmt_len); return newnode; } @@ -483,7 +492,8 @@ _copyModifyTable(const ModifyTable *from) COPY_SCALAR_FIELD(operation); COPY_SCALAR_FIELD(canSetTag); COPY_SCALAR_FIELD(nominalRelation); - COPY_NODE_FIELD(partitioned_rels); + COPY_SCALAR_FIELD(rootRelation); + COPY_SCALAR_FIELD(partColsUpdated); COPY_NODE_FIELD(resultRelations); COPY_SCALAR_FIELD(resultRelIndex); COPY_SCALAR_FIELD(rootResultRelIndex); @@ -520,8 +530,10 @@ _copyAppend(const Append *from) /* * copy remainder of node */ - COPY_NODE_FIELD(partitioned_rels); + COPY_BITMAPSET_FIELD(apprelids); COPY_NODE_FIELD(appendplans); + COPY_SCALAR_FIELD(first_partial_plan); + COPY_NODE_FIELD(part_prune_info); return newnode; } @@ -542,13 +554,14 @@ _copyMergeAppend(const MergeAppend *from) /* * copy remainder of node */ - COPY_NODE_FIELD(partitioned_rels); + COPY_BITMAPSET_FIELD(apprelids); COPY_NODE_FIELD(mergeplans); COPY_SCALAR_FIELD(numCols); COPY_POINTER_FIELD(sortColIdx, from->numCols * sizeof(AttrNumber)); COPY_POINTER_FIELD(sortOperators, from->numCols * sizeof(Oid)); COPY_POINTER_FIELD(collations, from->numCols * sizeof(Oid)); COPY_POINTER_FIELD(nullsFirst, from->numCols * sizeof(bool)); + COPY_NODE_FIELD(part_prune_info); return newnode; } @@ -575,6 +588,7 @@ _copyRecursiveUnion(const RecursiveUnion *from) { COPY_POINTER_FIELD(dupColIdx, from->numCols * sizeof(AttrNumber)); COPY_POINTER_FIELD(dupOperators, from->numCols * sizeof(Oid)); + COPY_POINTER_FIELD(dupCollations, from->numCols * sizeof(Oid)); } COPY_SCALAR_FIELD(numGroups); @@ -644,6 +658,7 @@ _copyGather(const Gather *from) COPY_SCALAR_FIELD(rescan_param); COPY_SCALAR_FIELD(single_copy); COPY_SCALAR_FIELD(invisible); + COPY_BITMAPSET_FIELD(initParam); return newnode; } @@ -671,6 +686,7 @@ _copyGatherMerge(const GatherMerge *from) COPY_POINTER_FIELD(sortOperators, from->numCols * sizeof(Oid)); COPY_POINTER_FIELD(collations, from->numCols * sizeof(Oid)); COPY_POINTER_FIELD(nullsFirst, from->numCols * sizeof(bool)); + COPY_BITMAPSET_FIELD(initParam); return newnode; } @@ -1174,6 +1190,9 @@ _copyHashJoin(const HashJoin *from) * copy remainder of node */ COPY_NODE_FIELD(hashclauses); + COPY_NODE_FIELD(hashoperators); + COPY_NODE_FIELD(hashcollations); + COPY_NODE_FIELD(hashkeys); return newnode; } @@ -1196,6 +1215,24 @@ _copyMaterial(const Material *from) } +/* + * CopySortFields + * + * This function copies the fields of the Sort node. It is used by + * all the copy functions for classes which inherit from Sort. + */ +static void +CopySortFields(const Sort *from, Sort *newnode) +{ + CopyPlanFields((const Plan *) from, (Plan *) newnode); + + COPY_SCALAR_FIELD(numCols); + COPY_POINTER_FIELD(sortColIdx, from->numCols * sizeof(AttrNumber)); + COPY_POINTER_FIELD(sortOperators, from->numCols * sizeof(Oid)); + COPY_POINTER_FIELD(collations, from->numCols * sizeof(Oid)); + COPY_POINTER_FIELD(nullsFirst, from->numCols * sizeof(bool)); +} + /* * _copySort */ @@ -1207,13 +1244,29 @@ _copySort(const Sort *from) /* * copy node superclass fields */ - CopyPlanFields((const Plan *) from, (Plan *) newnode); + CopySortFields(from, newnode); - COPY_SCALAR_FIELD(numCols); - COPY_POINTER_FIELD(sortColIdx, from->numCols * sizeof(AttrNumber)); - COPY_POINTER_FIELD(sortOperators, from->numCols * sizeof(Oid)); - COPY_POINTER_FIELD(collations, from->numCols * sizeof(Oid)); - COPY_POINTER_FIELD(nullsFirst, from->numCols * sizeof(bool)); + return newnode; +} + + +/* + * _copyIncrementalSort + */ +static IncrementalSort * +_copyIncrementalSort(const IncrementalSort *from) +{ + IncrementalSort *newnode = makeNode(IncrementalSort); + + /* + * copy node superclass fields + */ + CopySortFields((const Sort *) from, (Sort *) newnode); + + /* + * copy remainder of node + */ + COPY_SCALAR_FIELD(nPresortedCols); return newnode; } @@ -1232,6 +1285,7 @@ _copyGroup(const Group *from) COPY_SCALAR_FIELD(numCols); COPY_POINTER_FIELD(grpColIdx, from->numCols * sizeof(AttrNumber)); COPY_POINTER_FIELD(grpOperators, from->numCols * sizeof(Oid)); + COPY_POINTER_FIELD(grpCollations, from->numCols * sizeof(Oid)); return newnode; } @@ -1253,8 +1307,10 @@ _copyAgg(const Agg *from) { COPY_POINTER_FIELD(grpColIdx, from->numCols * sizeof(AttrNumber)); COPY_POINTER_FIELD(grpOperators, from->numCols * sizeof(Oid)); + COPY_POINTER_FIELD(grpCollations, from->numCols * sizeof(Oid)); } COPY_SCALAR_FIELD(numGroups); + COPY_SCALAR_FIELD(transitionSpace); COPY_BITMAPSET_FIELD(aggParams); COPY_NODE_FIELD(groupingSets); COPY_NODE_FIELD(chain); @@ -1278,16 +1334,23 @@ _copyWindowAgg(const WindowAgg *from) { COPY_POINTER_FIELD(partColIdx, from->partNumCols * sizeof(AttrNumber)); COPY_POINTER_FIELD(partOperators, from->partNumCols * sizeof(Oid)); + COPY_POINTER_FIELD(partCollations, from->partNumCols * sizeof(Oid)); } COPY_SCALAR_FIELD(ordNumCols); if (from->ordNumCols > 0) { COPY_POINTER_FIELD(ordColIdx, from->ordNumCols * sizeof(AttrNumber)); COPY_POINTER_FIELD(ordOperators, from->ordNumCols * sizeof(Oid)); + COPY_POINTER_FIELD(ordCollations, from->ordNumCols * sizeof(Oid)); } COPY_SCALAR_FIELD(frameOptions); COPY_NODE_FIELD(startOffset); COPY_NODE_FIELD(endOffset); + COPY_SCALAR_FIELD(startInRangeFunc); + COPY_SCALAR_FIELD(endInRangeFunc); + COPY_SCALAR_FIELD(inRangeColl); + COPY_SCALAR_FIELD(inRangeAsc); + COPY_SCALAR_FIELD(inRangeNullsFirst); return newnode; } @@ -1311,6 +1374,7 @@ _copyUnique(const Unique *from) COPY_SCALAR_FIELD(numCols); COPY_POINTER_FIELD(uniqColIdx, from->numCols * sizeof(AttrNumber)); COPY_POINTER_FIELD(uniqOperators, from->numCols * sizeof(Oid)); + COPY_POINTER_FIELD(uniqCollations, from->numCols * sizeof(Oid)); return newnode; } @@ -1331,9 +1395,11 @@ _copyHash(const Hash *from) /* * copy remainder of node */ + COPY_NODE_FIELD(hashkeys); COPY_SCALAR_FIELD(skewTable); COPY_SCALAR_FIELD(skewColumn); COPY_SCALAR_FIELD(skewInherit); + COPY_SCALAR_FIELD(rows_total); return newnode; } @@ -1359,6 +1425,7 @@ _copySetOp(const SetOp *from) COPY_SCALAR_FIELD(numCols); COPY_POINTER_FIELD(dupColIdx, from->numCols * sizeof(AttrNumber)); COPY_POINTER_FIELD(dupOperators, from->numCols * sizeof(Oid)); + COPY_POINTER_FIELD(dupCollations, from->numCols * sizeof(Oid)); COPY_SCALAR_FIELD(flagColIdx); COPY_SCALAR_FIELD(firstFlag); COPY_SCALAR_FIELD(numGroups); @@ -1406,6 +1473,11 @@ _copyLimit(const Limit *from) */ COPY_NODE_FIELD(limitOffset); COPY_NODE_FIELD(limitCount); + COPY_SCALAR_FIELD(limitOption); + COPY_SCALAR_FIELD(uniqNumCols); + COPY_POINTER_FIELD(uniqColIdx, from->uniqNumCols * sizeof(AttrNumber)); + COPY_POINTER_FIELD(uniqOperators, from->uniqNumCols * sizeof(Oid)); + COPY_POINTER_FIELD(uniqCollations, from->uniqNumCols * sizeof(Oid)); return newnode; } @@ -1444,6 +1516,67 @@ _copyPlanRowMark(const PlanRowMark *from) return newnode; } +static PartitionPruneInfo * +_copyPartitionPruneInfo(const PartitionPruneInfo *from) +{ + PartitionPruneInfo *newnode = makeNode(PartitionPruneInfo); + + COPY_NODE_FIELD(prune_infos); + COPY_BITMAPSET_FIELD(other_subplans); + + return newnode; +} + +static PartitionedRelPruneInfo * +_copyPartitionedRelPruneInfo(const PartitionedRelPruneInfo *from) +{ + PartitionedRelPruneInfo *newnode = makeNode(PartitionedRelPruneInfo); + + COPY_SCALAR_FIELD(rtindex); + COPY_BITMAPSET_FIELD(present_parts); + COPY_SCALAR_FIELD(nparts); + COPY_POINTER_FIELD(subplan_map, from->nparts * sizeof(int)); + COPY_POINTER_FIELD(subpart_map, from->nparts * sizeof(int)); + COPY_POINTER_FIELD(relid_map, from->nparts * sizeof(Oid)); + COPY_NODE_FIELD(initial_pruning_steps); + COPY_NODE_FIELD(exec_pruning_steps); + COPY_BITMAPSET_FIELD(execparamids); + + return newnode; +} + +/* + * _copyPartitionPruneStepOp + */ +static PartitionPruneStepOp * +_copyPartitionPruneStepOp(const PartitionPruneStepOp *from) +{ + PartitionPruneStepOp *newnode = makeNode(PartitionPruneStepOp); + + COPY_SCALAR_FIELD(step.step_id); + COPY_SCALAR_FIELD(opstrategy); + COPY_NODE_FIELD(exprs); + COPY_NODE_FIELD(cmpfns); + COPY_BITMAPSET_FIELD(nullkeys); + + return newnode; +} + +/* + * _copyPartitionPruneStepCombine + */ +static PartitionPruneStepCombine * +_copyPartitionPruneStepCombine(const PartitionPruneStepCombine *from) +{ + PartitionPruneStepCombine *newnode = makeNode(PartitionPruneStepCombine); + + COPY_SCALAR_FIELD(step.step_id); + COPY_SCALAR_FIELD(combineOp); + COPY_NODE_FIELD(source_stepids); + + return newnode; +} + /* * _copyPlanInvalItem */ @@ -1531,6 +1664,7 @@ _copyIntoClause(const IntoClause *from) COPY_NODE_FIELD(rel); COPY_NODE_FIELD(colNames); + COPY_STRING_FIELD(accessMethod); COPY_NODE_FIELD(options); COPY_SCALAR_FIELD(onCommit); COPY_STRING_FIELD(tableSpaceName); @@ -1561,8 +1695,8 @@ _copyVar(const Var *from) COPY_SCALAR_FIELD(vartypmod); COPY_SCALAR_FIELD(varcollid); COPY_SCALAR_FIELD(varlevelsup); - COPY_SCALAR_FIELD(varnoold); - COPY_SCALAR_FIELD(varoattno); + COPY_SCALAR_FIELD(varnosyn); + COPY_SCALAR_FIELD(varattnosyn); COPY_LOCATION_FIELD(location); return newnode; @@ -1693,14 +1827,14 @@ _copyWindowFunc(const WindowFunc *from) } /* - * _copyArrayRef + * _copySubscriptingRef */ -static ArrayRef * -_copyArrayRef(const ArrayRef *from) +static SubscriptingRef * +_copySubscriptingRef(const SubscriptingRef *from) { - ArrayRef *newnode = makeNode(ArrayRef); + SubscriptingRef *newnode = makeNode(SubscriptingRef); - COPY_SCALAR_FIELD(refarraytype); + COPY_SCALAR_FIELD(refcontainertype); COPY_SCALAR_FIELD(refelemtype); COPY_SCALAR_FIELD(reftypmod); COPY_SCALAR_FIELD(refcollid); @@ -1978,11 +2112,10 @@ _copyArrayCoerceExpr(const ArrayCoerceExpr *from) ArrayCoerceExpr *newnode = makeNode(ArrayCoerceExpr); COPY_NODE_FIELD(arg); - COPY_SCALAR_FIELD(elemfuncid); + COPY_NODE_FIELD(elemexpr); COPY_SCALAR_FIELD(resulttype); COPY_SCALAR_FIELD(resulttypmod); COPY_SCALAR_FIELD(resultcollid); - COPY_SCALAR_FIELD(isExplicit); COPY_SCALAR_FIELD(coerceformat); COPY_LOCATION_FIELD(location); @@ -2404,7 +2537,7 @@ _copyOnConflictExpr(const OnConflictExpr *from) } /* **************************************************************** - * relation.h copy functions + * pathnodes.h copy functions * * We don't support copying RelOptInfo, IndexOptInfo, or Path nodes. * There are some subsidiary structs that are useful to copy, though. @@ -2467,6 +2600,8 @@ _copyRestrictInfo(const RestrictInfo *from) COPY_SCALAR_FIELD(hashjoinoperator); COPY_SCALAR_FIELD(left_bucketsize); COPY_SCALAR_FIELD(right_bucketsize); + COPY_SCALAR_FIELD(left_mcvfreq); + COPY_SCALAR_FIELD(right_mcvfreq); return newnode; } @@ -2523,25 +2658,13 @@ _copyAppendRelInfo(const AppendRelInfo *from) COPY_SCALAR_FIELD(parent_reltype); COPY_SCALAR_FIELD(child_reltype); COPY_NODE_FIELD(translated_vars); + COPY_SCALAR_FIELD(num_child_cols); + COPY_POINTER_FIELD(parent_colnos, from->num_child_cols * sizeof(AttrNumber)); COPY_SCALAR_FIELD(parent_reloid); return newnode; } -/* - * _copyPartitionedChildRelInfo - */ -static PartitionedChildRelInfo * -_copyPartitionedChildRelInfo(const PartitionedChildRelInfo *from) -{ - PartitionedChildRelInfo *newnode = makeNode(PartitionedChildRelInfo); - - COPY_SCALAR_FIELD(parent_relid); - COPY_NODE_FIELD(child_rels); - - return newnode; -} - /* * _copyPlaceHolderInfo */ @@ -2573,11 +2696,15 @@ _copyRangeTblEntry(const RangeTblEntry *from) COPY_SCALAR_FIELD(rtekind); COPY_SCALAR_FIELD(relid); COPY_SCALAR_FIELD(relkind); + COPY_SCALAR_FIELD(rellockmode); COPY_NODE_FIELD(tablesample); COPY_NODE_FIELD(subquery); COPY_SCALAR_FIELD(security_barrier); COPY_SCALAR_FIELD(jointype); + COPY_SCALAR_FIELD(joinmergedcols); COPY_NODE_FIELD(joinaliasvars); + COPY_NODE_FIELD(joinleftcols); + COPY_NODE_FIELD(joinrightcols); COPY_NODE_FIELD(functions); COPY_SCALAR_FIELD(funcordinality); COPY_NODE_FIELD(tablefunc); @@ -2600,6 +2727,7 @@ _copyRangeTblEntry(const RangeTblEntry *from) COPY_BITMAPSET_FIELD(selectedCols); COPY_BITMAPSET_FIELD(insertedCols); COPY_BITMAPSET_FIELD(updatedCols); + COPY_BITMAPSET_FIELD(extraUpdatedCols); COPY_NODE_FIELD(securityQuals); return newnode; @@ -2685,6 +2813,11 @@ _copyWindowClause(const WindowClause *from) COPY_SCALAR_FIELD(frameOptions); COPY_NODE_FIELD(startOffset); COPY_NODE_FIELD(endOffset); + COPY_SCALAR_FIELD(startInRangeFunc); + COPY_SCALAR_FIELD(endInRangeFunc); + COPY_SCALAR_FIELD(inRangeColl); + COPY_SCALAR_FIELD(inRangeAsc); + COPY_SCALAR_FIELD(inRangeNullsFirst); COPY_SCALAR_FIELD(winref); COPY_SCALAR_FIELD(copiedOrder); @@ -2750,6 +2883,7 @@ _copyCommonTableExpr(const CommonTableExpr *from) COPY_STRING_FIELD(ctename); COPY_NODE_FIELD(aliascolnames); + COPY_SCALAR_FIELD(ctematerialized); COPY_NODE_FIELD(ctequery); COPY_LOCATION_FIELD(location); COPY_SCALAR_FIELD(cterecursive); @@ -3070,6 +3204,7 @@ _copyIndexElem(const IndexElem *from) COPY_STRING_FIELD(indexcolname); COPY_NODE_FIELD(collation); COPY_NODE_FIELD(opclass); + COPY_NODE_FIELD(opclassopts); COPY_SCALAR_FIELD(ordering); COPY_SCALAR_FIELD(nulls_ordering); @@ -3087,12 +3222,12 @@ _copyColumnDef(const ColumnDef *from) COPY_SCALAR_FIELD(is_local); COPY_SCALAR_FIELD(is_not_null); COPY_SCALAR_FIELD(is_from_type); - COPY_SCALAR_FIELD(is_from_parent); COPY_SCALAR_FIELD(storage); COPY_NODE_FIELD(raw_default); COPY_NODE_FIELD(cooked_default); COPY_SCALAR_FIELD(identity); COPY_NODE_FIELD(identitySequence); + COPY_SCALAR_FIELD(generated); COPY_NODE_FIELD(collClause); COPY_SCALAR_FIELD(collOid); COPY_NODE_FIELD(constraints); @@ -3117,10 +3252,12 @@ _copyConstraint(const Constraint *from) COPY_STRING_FIELD(cooked_expr); COPY_SCALAR_FIELD(generated_when); COPY_NODE_FIELD(keys); + COPY_NODE_FIELD(including); COPY_NODE_FIELD(exclusions); COPY_NODE_FIELD(options); COPY_STRING_FIELD(indexname); COPY_STRING_FIELD(indexspace); + COPY_SCALAR_FIELD(reset_default_tblspc); COPY_STRING_FIELD(access_method); COPY_NODE_FIELD(where_clause); COPY_NODE_FIELD(pktable); @@ -3235,12 +3372,13 @@ _copyQuery(const Query *from) COPY_NODE_FIELD(sortClause); COPY_NODE_FIELD(limitOffset); COPY_NODE_FIELD(limitCount); + COPY_SCALAR_FIELD(limitOption); COPY_NODE_FIELD(rowMarks); COPY_NODE_FIELD(setOperations); COPY_NODE_FIELD(constraintDeps); COPY_NODE_FIELD(withCheckOptions); COPY_LOCATION_FIELD(stmt_location); - COPY_LOCATION_FIELD(stmt_len); + COPY_SCALAR_FIELD(stmt_len); return newnode; } @@ -3252,7 +3390,7 @@ _copyRawStmt(const RawStmt *from) COPY_NODE_FIELD(stmt); COPY_LOCATION_FIELD(stmt_location); - COPY_LOCATION_FIELD(stmt_len); + COPY_SCALAR_FIELD(stmt_len); return newnode; } @@ -3319,6 +3457,7 @@ _copySelectStmt(const SelectStmt *from) COPY_NODE_FIELD(sortClause); COPY_NODE_FIELD(limitOffset); COPY_NODE_FIELD(limitCount); + COPY_SCALAR_FIELD(limitOption); COPY_NODE_FIELD(lockingClause); COPY_NODE_FIELD(withClause); COPY_SCALAR_FIELD(op); @@ -3366,6 +3505,7 @@ _copyAlterTableCmd(const AlterTableCmd *from) COPY_SCALAR_FIELD(subtype); COPY_STRING_FIELD(name); + COPY_SCALAR_FIELD(num); COPY_NODE_FIELD(newowner); COPY_NODE_FIELD(def); COPY_SCALAR_FIELD(behavior); @@ -3487,6 +3627,17 @@ _copyClosePortalStmt(const ClosePortalStmt *from) return newnode; } +static CallStmt * +_copyCallStmt(const CallStmt *from) +{ + CallStmt *newnode = makeNode(CallStmt); + + COPY_NODE_FIELD(funccall); + COPY_NODE_FIELD(funcexpr); + + return newnode; +} + static ClusterStmt * _copyClusterStmt(const ClusterStmt *from) { @@ -3494,7 +3645,7 @@ _copyClusterStmt(const ClusterStmt *from) COPY_NODE_FIELD(relation); COPY_STRING_FIELD(indexname); - COPY_SCALAR_FIELD(verbose); + COPY_SCALAR_FIELD(options); return newnode; } @@ -3511,6 +3662,7 @@ _copyCopyStmt(const CopyStmt *from) COPY_SCALAR_FIELD(is_program); COPY_STRING_FIELD(filename); COPY_NODE_FIELD(options); + COPY_NODE_FIELD(whereClause); return newnode; } @@ -3534,6 +3686,7 @@ CopyCreateStmtFields(const CreateStmt *from, CreateStmt *newnode) COPY_NODE_FIELD(options); COPY_SCALAR_FIELD(oncommit); COPY_STRING_FIELD(tablespacename); + COPY_STRING_FIELD(accessMethod); COPY_SCALAR_FIELD(if_not_exists); } @@ -3570,6 +3723,7 @@ _copyDefineStmt(const DefineStmt *from) COPY_NODE_FIELD(args); COPY_NODE_FIELD(definition); COPY_SCALAR_FIELD(if_not_exists); + COPY_SCALAR_FIELD(replace); return newnode; } @@ -3648,12 +3802,15 @@ _copyIndexStmt(const IndexStmt *from) COPY_STRING_FIELD(accessMethod); COPY_STRING_FIELD(tableSpace); COPY_NODE_FIELD(indexParams); + COPY_NODE_FIELD(indexIncludingParams); COPY_NODE_FIELD(options); COPY_NODE_FIELD(whereClause); COPY_NODE_FIELD(excludeOpNames); COPY_STRING_FIELD(idxcomment); COPY_SCALAR_FIELD(indexOid); COPY_SCALAR_FIELD(oldNode); + COPY_SCALAR_FIELD(oldCreateSubid); + COPY_SCALAR_FIELD(oldFirstRelfilenodeSubid); COPY_SCALAR_FIELD(unique); COPY_SCALAR_FIELD(primary); COPY_SCALAR_FIELD(isconstraint); @@ -3662,6 +3819,7 @@ _copyIndexStmt(const IndexStmt *from) COPY_SCALAR_FIELD(transformed); COPY_SCALAR_FIELD(concurrent); COPY_SCALAR_FIELD(if_not_exists); + COPY_SCALAR_FIELD(reset_default_tblspc); return newnode; } @@ -3675,22 +3833,35 @@ _copyCreateStatsStmt(const CreateStatsStmt *from) COPY_NODE_FIELD(stat_types); COPY_NODE_FIELD(exprs); COPY_NODE_FIELD(relations); + COPY_STRING_FIELD(stxcomment); COPY_SCALAR_FIELD(if_not_exists); return newnode; } +static AlterStatsStmt * +_copyAlterStatsStmt(const AlterStatsStmt *from) +{ + AlterStatsStmt *newnode = makeNode(AlterStatsStmt); + + COPY_NODE_FIELD(defnames); + COPY_SCALAR_FIELD(stxstattarget); + COPY_SCALAR_FIELD(missing_ok); + + return newnode; +} + static CreateFunctionStmt * _copyCreateFunctionStmt(const CreateFunctionStmt *from) { CreateFunctionStmt *newnode = makeNode(CreateFunctionStmt); + COPY_SCALAR_FIELD(is_procedure); COPY_SCALAR_FIELD(replace); COPY_NODE_FIELD(funcname); COPY_NODE_FIELD(parameters); COPY_NODE_FIELD(returnType); COPY_NODE_FIELD(options); - COPY_NODE_FIELD(withClause); return newnode; } @@ -3713,6 +3884,7 @@ _copyAlterFunctionStmt(const AlterFunctionStmt *from) { AlterFunctionStmt *newnode = makeNode(AlterFunctionStmt); + COPY_SCALAR_FIELD(objtype); COPY_NODE_FIELD(func); COPY_NODE_FIELD(actions); @@ -3755,6 +3927,7 @@ _copyAlterObjectDependsStmt(const AlterObjectDependsStmt *from) COPY_NODE_FIELD(relation); COPY_NODE_FIELD(object); COPY_NODE_FIELD(extname); + COPY_SCALAR_FIELD(remove); return newnode; } @@ -3797,6 +3970,17 @@ _copyAlterOperatorStmt(const AlterOperatorStmt *from) return newnode; } +static AlterTypeStmt * +_copyAlterTypeStmt(const AlterTypeStmt *from) +{ + AlterTypeStmt *newnode = makeNode(AlterTypeStmt); + + COPY_NODE_FIELD(typeName); + COPY_NODE_FIELD(options); + + return newnode; +} + static RuleStmt * _copyRuleStmt(const RuleStmt *from) { @@ -3851,7 +4035,9 @@ _copyTransactionStmt(const TransactionStmt *from) COPY_SCALAR_FIELD(kind); COPY_NODE_FIELD(options); + COPY_STRING_FIELD(savepoint_name); COPY_STRING_FIELD(gid); + COPY_SCALAR_FIELD(chain); return newnode; } @@ -4036,6 +4222,7 @@ _copyDropdbStmt(const DropdbStmt *from) COPY_STRING_FIELD(dbname); COPY_SCALAR_FIELD(missing_ok); + COPY_NODE_FIELD(options); return newnode; } @@ -4045,8 +4232,20 @@ _copyVacuumStmt(const VacuumStmt *from) { VacuumStmt *newnode = makeNode(VacuumStmt); - COPY_SCALAR_FIELD(options); + COPY_NODE_FIELD(options); + COPY_NODE_FIELD(rels); + COPY_SCALAR_FIELD(is_vacuumcmd); + + return newnode; +} + +static VacuumRelation * +_copyVacuumRelation(const VacuumRelation *from) +{ + VacuumRelation *newnode = makeNode(VacuumRelation); + COPY_NODE_FIELD(relation); + COPY_SCALAR_FIELD(oid); COPY_NODE_FIELD(va_cols); return newnode; @@ -4540,6 +4739,7 @@ _copyReindexStmt(const ReindexStmt *from) COPY_NODE_FIELD(relation); COPY_STRING_FIELD(name); COPY_SCALAR_FIELD(options); + COPY_SCALAR_FIELD(concurrent); return newnode; } @@ -4729,6 +4929,9 @@ _copyPartitionBoundSpec(const PartitionBoundSpec *from) PartitionBoundSpec *newnode = makeNode(PartitionBoundSpec); COPY_SCALAR_FIELD(strategy); + COPY_SCALAR_FIELD(is_default); + COPY_SCALAR_FIELD(modulus); + COPY_SCALAR_FIELD(remainder); COPY_NODE_FIELD(listdatums); COPY_NODE_FIELD(lowerdatums); COPY_NODE_FIELD(upperdatums); @@ -4826,48 +5029,6 @@ _copyDropSubscriptionStmt(const DropSubscriptionStmt *from) return newnode; } -/* **************************************************************** - * pg_list.h copy functions - * **************************************************************** - */ - -/* - * Perform a deep copy of the specified list, using copyObject(). The - * list MUST be of type T_List; T_IntList and T_OidList nodes don't - * need deep copies, so they should be copied via list_copy() - */ -#define COPY_NODE_CELL(new, old) \ - (new) = (ListCell *) palloc(sizeof(ListCell)); \ - lfirst(new) = copyObjectImpl(lfirst(old)); - -static List * -_copyList(const List *from) -{ - List *new; - ListCell *curr_old; - ListCell *prev_new; - - Assert(list_length(from) >= 1); - - new = makeNode(List); - new->length = from->length; - - COPY_NODE_CELL(new->head, from->head); - prev_new = new->head; - curr_old = lnext(from->head); - - while (curr_old) - { - COPY_NODE_CELL(prev_new->next, curr_old); - prev_new = prev_new->next; - curr_old = curr_old->next; - } - prev_new->next = NULL; - new->tail = prev_new; - - return new; -} - /* **************************************************************** * extensible.h copy functions * **************************************************************** @@ -4928,6 +5089,7 @@ _copyForeignKeyCacheInfo(const ForeignKeyCacheInfo *from) { ForeignKeyCacheInfo *newnode = makeNode(ForeignKeyCacheInfo); + COPY_SCALAR_FIELD(conoid); COPY_SCALAR_FIELD(conrelid); COPY_SCALAR_FIELD(confrelid); COPY_SCALAR_FIELD(nkeys); @@ -5067,6 +5229,9 @@ copyObjectImpl(const void *from) case T_Sort: retval = _copySort(from); break; + case T_IncrementalSort: + retval = _copyIncrementalSort(from); + break; case T_Group: retval = _copyGroup(from); break; @@ -5097,6 +5262,18 @@ copyObjectImpl(const void *from) case T_PlanRowMark: retval = _copyPlanRowMark(from); break; + case T_PartitionPruneInfo: + retval = _copyPartitionPruneInfo(from); + break; + case T_PartitionedRelPruneInfo: + retval = _copyPartitionedRelPruneInfo(from); + break; + case T_PartitionPruneStepOp: + retval = _copyPartitionPruneStepOp(from); + break; + case T_PartitionPruneStepCombine: + retval = _copyPartitionPruneStepCombine(from); + break; case T_PlanInvalItem: retval = _copyPlanInvalItem(from); break; @@ -5134,8 +5311,8 @@ copyObjectImpl(const void *from) case T_WindowFunc: retval = _copyWindowFunc(from); break; - case T_ArrayRef: - retval = _copyArrayRef(from); + case T_SubscriptingRef: + retval = _copySubscriptingRef(from); break; case T_FuncExpr: retval = _copyFuncExpr(from); @@ -5276,9 +5453,6 @@ copyObjectImpl(const void *from) case T_AppendRelInfo: retval = _copyAppendRelInfo(from); break; - case T_PartitionedChildRelInfo: - retval = _copyPartitionedChildRelInfo(from); - break; case T_PlaceHolderInfo: retval = _copyPlaceHolderInfo(from); break; @@ -5298,7 +5472,7 @@ copyObjectImpl(const void *from) * LIST NODES */ case T_List: - retval = _copyList(from); + retval = list_copy_deep(from); break; /* @@ -5368,6 +5542,9 @@ copyObjectImpl(const void *from) case T_ClosePortalStmt: retval = _copyClosePortalStmt(from); break; + case T_CallStmt: + retval = _copyCallStmt(from); + break; case T_ClusterStmt: retval = _copyClusterStmt(from); break; @@ -5404,6 +5581,9 @@ copyObjectImpl(const void *from) case T_CreateStatsStmt: retval = _copyCreateStatsStmt(from); break; + case T_AlterStatsStmt: + retval = _copyAlterStatsStmt(from); + break; case T_CreateFunctionStmt: retval = _copyCreateFunctionStmt(from); break; @@ -5431,6 +5611,9 @@ copyObjectImpl(const void *from) case T_AlterOperatorStmt: retval = _copyAlterOperatorStmt(from); break; + case T_AlterTypeStmt: + retval = _copyAlterTypeStmt(from); + break; case T_RuleStmt: retval = _copyRuleStmt(from); break; @@ -5494,6 +5677,9 @@ copyObjectImpl(const void *from) case T_VacuumStmt: retval = _copyVacuumStmt(from); break; + case T_VacuumRelation: + retval = _copyVacuumRelation(from); + break; case T_ExplainStmt: retval = _copyExplainStmt(from); break; diff --git a/parser/src_backend_nodes_equalfuncs.c b/parser/src_backend_nodes_equalfuncs.c index 6957522e..504ce290 100644 --- a/parser/src_backend_nodes_equalfuncs.c +++ b/parser/src_backend_nodes_equalfuncs.c @@ -11,7 +11,7 @@ * - _equalAggref * - _equalGroupingFunc * - _equalWindowFunc - * - _equalArrayRef + * - _equalSubscriptingRef * - _equalFuncExpr * - _equalNamedArgExpr * - _equalOpExpr @@ -57,7 +57,6 @@ * - _equalPlaceHolderVar * - _equalSpecialJoinInfo * - _equalAppendRelInfo - * - _equalPartitionedChildRelInfo * - _equalPlaceHolderInfo * - _equalList * - _equalValue @@ -78,6 +77,7 @@ * - _equalAlterDefaultPrivilegesStmt * - _equalDeclareCursorStmt * - _equalClosePortalStmt + * - _equalCallStmt * - _equalClusterStmt * - _equalCopyStmt * - _equalCreateStmt @@ -90,6 +90,7 @@ * - _equalFetchStmt * - _equalIndexStmt * - _equalCreateStatsStmt + * - _equalAlterStatsStmt * - _equalCreateFunctionStmt * - _equalFunctionParameter * - _equalAlterFunctionStmt @@ -99,6 +100,7 @@ * - _equalAlterObjectSchemaStmt * - _equalAlterOwnerStmt * - _equalAlterOperatorStmt + * - _equalAlterTypeStmt * - _equalRuleStmt * - _equalNotifyStmt * - _equalListenStmt @@ -120,6 +122,7 @@ * - _equalAlterDatabaseSetStmt * - _equalDropdbStmt * - _equalVacuumStmt + * - _equalVacuumRelation * - _equalExplainStmt * - _equalCreateTableAsStmt * - _equalRefreshMatViewStmt @@ -247,7 +250,7 @@ * "x" to be considered equal() to another reference to "x" in the query. * * - * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * IDENTIFICATION @@ -260,7 +263,7 @@ #include "miscadmin.h" #include "nodes/extensible.h" -#include "nodes/relation.h" +#include "nodes/pathnodes.h" #include "utils/datum.h" @@ -371,6 +374,7 @@ _equalIntoClause(const IntoClause *a, const IntoClause *b) { COMPARE_NODE_FIELD(rel); COMPARE_NODE_FIELD(colNames); + COMPARE_STRING_FIELD(accessMethod); COMPARE_NODE_FIELD(options); COMPARE_SCALAR_FIELD(onCommit); COMPARE_STRING_FIELD(tableSpaceName); @@ -396,8 +400,12 @@ _equalVar(const Var *a, const Var *b) COMPARE_SCALAR_FIELD(vartypmod); COMPARE_SCALAR_FIELD(varcollid); COMPARE_SCALAR_FIELD(varlevelsup); - COMPARE_SCALAR_FIELD(varnoold); - COMPARE_SCALAR_FIELD(varoattno); + + /* + * varnosyn/varattnosyn are intentionally ignored here, because Vars with + * different syntactic identifiers are semantically the same as long as + * their varno/varattno match. + */ COMPARE_LOCATION_FIELD(location); return true; @@ -494,9 +502,9 @@ _equalWindowFunc(const WindowFunc *a, const WindowFunc *b) } static bool -_equalArrayRef(const ArrayRef *a, const ArrayRef *b) +_equalSubscriptingRef(const SubscriptingRef *a, const SubscriptingRef *b) { - COMPARE_SCALAR_FIELD(refarraytype); + COMPARE_SCALAR_FIELD(refcontainertype); COMPARE_SCALAR_FIELD(refelemtype); COMPARE_SCALAR_FIELD(reftypmod); COMPARE_SCALAR_FIELD(refcollid); @@ -743,11 +751,10 @@ static bool _equalArrayCoerceExpr(const ArrayCoerceExpr *a, const ArrayCoerceExpr *b) { COMPARE_NODE_FIELD(arg); - COMPARE_SCALAR_FIELD(elemfuncid); + COMPARE_NODE_FIELD(elemexpr); COMPARE_SCALAR_FIELD(resulttype); COMPARE_SCALAR_FIELD(resulttypmod); COMPARE_SCALAR_FIELD(resultcollid); - COMPARE_SCALAR_FIELD(isExplicit); COMPARE_COERCIONFORM_FIELD(coerceformat); COMPARE_LOCATION_FIELD(location); @@ -1044,7 +1051,7 @@ _equalOnConflictExpr(const OnConflictExpr *a, const OnConflictExpr *b) } /* - * Stuff from relation.h + * Stuff from pathnodes.h */ static bool @@ -1129,20 +1136,13 @@ _equalAppendRelInfo(const AppendRelInfo *a, const AppendRelInfo *b) COMPARE_SCALAR_FIELD(parent_reltype); COMPARE_SCALAR_FIELD(child_reltype); COMPARE_NODE_FIELD(translated_vars); + COMPARE_SCALAR_FIELD(num_child_cols); + COMPARE_POINTER_FIELD(parent_colnos, a->num_child_cols * sizeof(AttrNumber)); COMPARE_SCALAR_FIELD(parent_reloid); return true; } -static bool -_equalPartitionedChildRelInfo(const PartitionedChildRelInfo *a, const PartitionedChildRelInfo *b) -{ - COMPARE_SCALAR_FIELD(parent_relid); - COMPARE_NODE_FIELD(child_rels); - - return true; -} - static bool _equalPlaceHolderInfo(const PlaceHolderInfo *a, const PlaceHolderInfo *b) { @@ -1213,12 +1213,13 @@ _equalQuery(const Query *a, const Query *b) COMPARE_NODE_FIELD(sortClause); COMPARE_NODE_FIELD(limitOffset); COMPARE_NODE_FIELD(limitCount); + COMPARE_SCALAR_FIELD(limitOption); COMPARE_NODE_FIELD(rowMarks); COMPARE_NODE_FIELD(setOperations); COMPARE_NODE_FIELD(constraintDeps); COMPARE_NODE_FIELD(withCheckOptions); COMPARE_LOCATION_FIELD(stmt_location); - COMPARE_LOCATION_FIELD(stmt_len); + COMPARE_SCALAR_FIELD(stmt_len); return true; } @@ -1228,7 +1229,7 @@ _equalRawStmt(const RawStmt *a, const RawStmt *b) { COMPARE_NODE_FIELD(stmt); COMPARE_LOCATION_FIELD(stmt_location); - COMPARE_LOCATION_FIELD(stmt_len); + COMPARE_SCALAR_FIELD(stmt_len); return true; } @@ -1287,6 +1288,7 @@ _equalSelectStmt(const SelectStmt *a, const SelectStmt *b) COMPARE_NODE_FIELD(sortClause); COMPARE_NODE_FIELD(limitOffset); COMPARE_NODE_FIELD(limitCount); + COMPARE_SCALAR_FIELD(limitOption); COMPARE_NODE_FIELD(lockingClause); COMPARE_NODE_FIELD(withClause); COMPARE_SCALAR_FIELD(op); @@ -1328,6 +1330,7 @@ _equalAlterTableCmd(const AlterTableCmd *a, const AlterTableCmd *b) { COMPARE_SCALAR_FIELD(subtype); COMPARE_STRING_FIELD(name); + COMPARE_SCALAR_FIELD(num); COMPARE_NODE_FIELD(newowner); COMPARE_NODE_FIELD(def); COMPARE_SCALAR_FIELD(behavior); @@ -1431,12 +1434,21 @@ _equalClosePortalStmt(const ClosePortalStmt *a, const ClosePortalStmt *b) return true; } +static bool +_equalCallStmt(const CallStmt *a, const CallStmt *b) +{ + COMPARE_NODE_FIELD(funccall); + COMPARE_NODE_FIELD(funcexpr); + + return true; +} + static bool _equalClusterStmt(const ClusterStmt *a, const ClusterStmt *b) { COMPARE_NODE_FIELD(relation); COMPARE_STRING_FIELD(indexname); - COMPARE_SCALAR_FIELD(verbose); + COMPARE_SCALAR_FIELD(options); return true; } @@ -1451,6 +1463,7 @@ _equalCopyStmt(const CopyStmt *a, const CopyStmt *b) COMPARE_SCALAR_FIELD(is_program); COMPARE_STRING_FIELD(filename); COMPARE_NODE_FIELD(options); + COMPARE_NODE_FIELD(whereClause); return true; } @@ -1468,6 +1481,7 @@ _equalCreateStmt(const CreateStmt *a, const CreateStmt *b) COMPARE_NODE_FIELD(options); COMPARE_SCALAR_FIELD(oncommit); COMPARE_STRING_FIELD(tablespacename); + COMPARE_STRING_FIELD(accessMethod); COMPARE_SCALAR_FIELD(if_not_exists); return true; @@ -1492,6 +1506,7 @@ _equalDefineStmt(const DefineStmt *a, const DefineStmt *b) COMPARE_NODE_FIELD(args); COMPARE_NODE_FIELD(definition); COMPARE_SCALAR_FIELD(if_not_exists); + COMPARE_SCALAR_FIELD(replace); return true; } @@ -1558,12 +1573,15 @@ _equalIndexStmt(const IndexStmt *a, const IndexStmt *b) COMPARE_STRING_FIELD(accessMethod); COMPARE_STRING_FIELD(tableSpace); COMPARE_NODE_FIELD(indexParams); + COMPARE_NODE_FIELD(indexIncludingParams); COMPARE_NODE_FIELD(options); COMPARE_NODE_FIELD(whereClause); COMPARE_NODE_FIELD(excludeOpNames); COMPARE_STRING_FIELD(idxcomment); COMPARE_SCALAR_FIELD(indexOid); COMPARE_SCALAR_FIELD(oldNode); + COMPARE_SCALAR_FIELD(oldCreateSubid); + COMPARE_SCALAR_FIELD(oldFirstRelfilenodeSubid); COMPARE_SCALAR_FIELD(unique); COMPARE_SCALAR_FIELD(primary); COMPARE_SCALAR_FIELD(isconstraint); @@ -1572,6 +1590,7 @@ _equalIndexStmt(const IndexStmt *a, const IndexStmt *b) COMPARE_SCALAR_FIELD(transformed); COMPARE_SCALAR_FIELD(concurrent); COMPARE_SCALAR_FIELD(if_not_exists); + COMPARE_SCALAR_FIELD(reset_default_tblspc); return true; } @@ -1583,20 +1602,31 @@ _equalCreateStatsStmt(const CreateStatsStmt *a, const CreateStatsStmt *b) COMPARE_NODE_FIELD(stat_types); COMPARE_NODE_FIELD(exprs); COMPARE_NODE_FIELD(relations); + COMPARE_STRING_FIELD(stxcomment); COMPARE_SCALAR_FIELD(if_not_exists); return true; } +static bool +_equalAlterStatsStmt(const AlterStatsStmt *a, const AlterStatsStmt *b) +{ + COMPARE_NODE_FIELD(defnames); + COMPARE_SCALAR_FIELD(stxstattarget); + COMPARE_SCALAR_FIELD(missing_ok); + + return true; +} + static bool _equalCreateFunctionStmt(const CreateFunctionStmt *a, const CreateFunctionStmt *b) { + COMPARE_SCALAR_FIELD(is_procedure); COMPARE_SCALAR_FIELD(replace); COMPARE_NODE_FIELD(funcname); COMPARE_NODE_FIELD(parameters); COMPARE_NODE_FIELD(returnType); COMPARE_NODE_FIELD(options); - COMPARE_NODE_FIELD(withClause); return true; } @@ -1615,6 +1645,7 @@ _equalFunctionParameter(const FunctionParameter *a, const FunctionParameter *b) static bool _equalAlterFunctionStmt(const AlterFunctionStmt *a, const AlterFunctionStmt *b) { + COMPARE_SCALAR_FIELD(objtype); COMPARE_NODE_FIELD(func); COMPARE_NODE_FIELD(actions); @@ -1651,6 +1682,7 @@ _equalAlterObjectDependsStmt(const AlterObjectDependsStmt *a, const AlterObjectD COMPARE_NODE_FIELD(relation); COMPARE_NODE_FIELD(object); COMPARE_NODE_FIELD(extname); + COMPARE_SCALAR_FIELD(remove); return true; } @@ -1687,6 +1719,15 @@ _equalAlterOperatorStmt(const AlterOperatorStmt *a, const AlterOperatorStmt *b) return true; } +static bool +_equalAlterTypeStmt(const AlterTypeStmt *a, const AlterTypeStmt *b) +{ + COMPARE_NODE_FIELD(typeName); + COMPARE_NODE_FIELD(options); + + return true; +} + static bool _equalRuleStmt(const RuleStmt *a, const RuleStmt *b) { @@ -1731,7 +1772,9 @@ _equalTransactionStmt(const TransactionStmt *a, const TransactionStmt *b) { COMPARE_SCALAR_FIELD(kind); COMPARE_NODE_FIELD(options); + COMPARE_STRING_FIELD(savepoint_name); COMPARE_STRING_FIELD(gid); + COMPARE_SCALAR_FIELD(chain); return true; } @@ -1886,6 +1929,7 @@ _equalDropdbStmt(const DropdbStmt *a, const DropdbStmt *b) { COMPARE_STRING_FIELD(dbname); COMPARE_SCALAR_FIELD(missing_ok); + COMPARE_NODE_FIELD(options); return true; } @@ -1893,8 +1937,18 @@ _equalDropdbStmt(const DropdbStmt *a, const DropdbStmt *b) static bool _equalVacuumStmt(const VacuumStmt *a, const VacuumStmt *b) { - COMPARE_SCALAR_FIELD(options); + COMPARE_NODE_FIELD(options); + COMPARE_NODE_FIELD(rels); + COMPARE_SCALAR_FIELD(is_vacuumcmd); + + return true; +} + +static bool +_equalVacuumRelation(const VacuumRelation *a, const VacuumRelation *b) +{ COMPARE_NODE_FIELD(relation); + COMPARE_SCALAR_FIELD(oid); COMPARE_NODE_FIELD(va_cols); return true; @@ -2314,6 +2368,7 @@ _equalReindexStmt(const ReindexStmt *a, const ReindexStmt *b) COMPARE_NODE_FIELD(relation); COMPARE_STRING_FIELD(name); COMPARE_SCALAR_FIELD(options); + COMPARE_SCALAR_FIELD(concurrent); return true; } @@ -2755,6 +2810,7 @@ _equalIndexElem(const IndexElem *a, const IndexElem *b) COMPARE_STRING_FIELD(indexcolname); COMPARE_NODE_FIELD(collation); COMPARE_NODE_FIELD(opclass); + COMPARE_NODE_FIELD(opclassopts); COMPARE_SCALAR_FIELD(ordering); COMPARE_SCALAR_FIELD(nulls_ordering); @@ -2775,6 +2831,7 @@ _equalColumnDef(const ColumnDef *a, const ColumnDef *b) COMPARE_NODE_FIELD(cooked_default); COMPARE_SCALAR_FIELD(identity); COMPARE_NODE_FIELD(identitySequence); + COMPARE_SCALAR_FIELD(generated); COMPARE_NODE_FIELD(collClause); COMPARE_SCALAR_FIELD(collOid); COMPARE_NODE_FIELD(constraints); @@ -2797,10 +2854,12 @@ _equalConstraint(const Constraint *a, const Constraint *b) COMPARE_STRING_FIELD(cooked_expr); COMPARE_SCALAR_FIELD(generated_when); COMPARE_NODE_FIELD(keys); + COMPARE_NODE_FIELD(including); COMPARE_NODE_FIELD(exclusions); COMPARE_NODE_FIELD(options); COMPARE_STRING_FIELD(indexname); COMPARE_STRING_FIELD(indexspace); + COMPARE_SCALAR_FIELD(reset_default_tblspc); COMPARE_STRING_FIELD(access_method); COMPARE_NODE_FIELD(where_clause); COMPARE_NODE_FIELD(pktable); @@ -2845,11 +2904,15 @@ _equalRangeTblEntry(const RangeTblEntry *a, const RangeTblEntry *b) COMPARE_SCALAR_FIELD(rtekind); COMPARE_SCALAR_FIELD(relid); COMPARE_SCALAR_FIELD(relkind); + COMPARE_SCALAR_FIELD(rellockmode); COMPARE_NODE_FIELD(tablesample); COMPARE_NODE_FIELD(subquery); COMPARE_SCALAR_FIELD(security_barrier); COMPARE_SCALAR_FIELD(jointype); + COMPARE_SCALAR_FIELD(joinmergedcols); COMPARE_NODE_FIELD(joinaliasvars); + COMPARE_NODE_FIELD(joinleftcols); + COMPARE_NODE_FIELD(joinrightcols); COMPARE_NODE_FIELD(functions); COMPARE_SCALAR_FIELD(funcordinality); COMPARE_NODE_FIELD(tablefunc); @@ -2872,6 +2935,7 @@ _equalRangeTblEntry(const RangeTblEntry *a, const RangeTblEntry *b) COMPARE_BITMAPSET_FIELD(selectedCols); COMPARE_BITMAPSET_FIELD(insertedCols); COMPARE_BITMAPSET_FIELD(updatedCols); + COMPARE_BITMAPSET_FIELD(extraUpdatedCols); COMPARE_NODE_FIELD(securityQuals); return true; @@ -2945,6 +3009,11 @@ _equalWindowClause(const WindowClause *a, const WindowClause *b) COMPARE_SCALAR_FIELD(frameOptions); COMPARE_NODE_FIELD(startOffset); COMPARE_NODE_FIELD(endOffset); + COMPARE_SCALAR_FIELD(startInRangeFunc); + COMPARE_SCALAR_FIELD(endInRangeFunc); + COMPARE_SCALAR_FIELD(inRangeColl); + COMPARE_SCALAR_FIELD(inRangeAsc); + COMPARE_SCALAR_FIELD(inRangeNullsFirst); COMPARE_SCALAR_FIELD(winref); COMPARE_SCALAR_FIELD(copiedOrder); @@ -3000,6 +3069,7 @@ _equalCommonTableExpr(const CommonTableExpr *a, const CommonTableExpr *b) { COMPARE_STRING_FIELD(ctename); COMPARE_NODE_FIELD(aliascolnames); + COMPARE_SCALAR_FIELD(ctematerialized); COMPARE_NODE_FIELD(ctequery); COMPARE_LOCATION_FIELD(location); COMPARE_SCALAR_FIELD(cterecursive); @@ -3069,6 +3139,9 @@ static bool _equalPartitionBoundSpec(const PartitionBoundSpec *a, const PartitionBoundSpec *b) { COMPARE_SCALAR_FIELD(strategy); + COMPARE_SCALAR_FIELD(is_default); + COMPARE_SCALAR_FIELD(modulus); + COMPARE_SCALAR_FIELD(remainder); COMPARE_NODE_FIELD(listdatums); COMPARE_NODE_FIELD(lowerdatums); COMPARE_NODE_FIELD(upperdatums); @@ -3247,8 +3320,8 @@ equal(const void *a, const void *b) case T_WindowFunc: retval = _equalWindowFunc(a, b); break; - case T_ArrayRef: - retval = _equalArrayRef(a, b); + case T_SubscriptingRef: + retval = _equalSubscriptingRef(a, b); break; case T_FuncExpr: retval = _equalFuncExpr(a, b); @@ -3389,9 +3462,6 @@ equal(const void *a, const void *b) case T_AppendRelInfo: retval = _equalAppendRelInfo(a, b); break; - case T_PartitionedChildRelInfo: - retval = _equalPartitionedChildRelInfo(a, b); - break; case T_PlaceHolderInfo: retval = _equalPlaceHolderInfo(a, b); break; @@ -3468,6 +3538,9 @@ equal(const void *a, const void *b) case T_ClosePortalStmt: retval = _equalClosePortalStmt(a, b); break; + case T_CallStmt: + retval = _equalCallStmt(a, b); + break; case T_ClusterStmt: retval = _equalClusterStmt(a, b); break; @@ -3504,6 +3577,9 @@ equal(const void *a, const void *b) case T_CreateStatsStmt: retval = _equalCreateStatsStmt(a, b); break; + case T_AlterStatsStmt: + retval = _equalAlterStatsStmt(a, b); + break; case T_CreateFunctionStmt: retval = _equalCreateFunctionStmt(a, b); break; @@ -3531,6 +3607,9 @@ equal(const void *a, const void *b) case T_AlterOperatorStmt: retval = _equalAlterOperatorStmt(a, b); break; + case T_AlterTypeStmt: + retval = _equalAlterTypeStmt(a, b); + break; case T_RuleStmt: retval = _equalRuleStmt(a, b); break; @@ -3594,6 +3673,9 @@ equal(const void *a, const void *b) case T_VacuumStmt: retval = _equalVacuumStmt(a, b); break; + case T_VacuumRelation: + retval = _equalVacuumRelation(a, b); + break; case T_ExplainStmt: retval = _equalExplainStmt(a, b); break; diff --git a/parser/src_backend_nodes_extensible.c b/parser/src_backend_nodes_extensible.c index 2966f963..a54cddff 100644 --- a/parser/src_backend_nodes_extensible.c +++ b/parser/src_backend_nodes_extensible.c @@ -18,7 +18,7 @@ * and GetExtensibleNodeMethods to get information about a previously * registered type of extensible node. * - * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * IDENTIFICATION diff --git a/parser/src_backend_nodes_list.c b/parser/src_backend_nodes_list.c index 8ea341ec..e787561b 100644 --- a/parser/src_backend_nodes_list.c +++ b/parser/src_backend_nodes_list.c @@ -3,16 +3,21 @@ * - lappend * - new_list * - new_tail_cell + * - enlarge_list * - check_list_invariants + * - list_make1_impl + * - list_make2_impl + * - list_concat + * - list_copy * - lcons * - new_head_cell - * - list_concat - * - list_nth - * - list_nth_cell + * - list_make3_impl + * - list_make4_impl * - list_delete_cell + * - list_delete_nth_cell * - list_free * - list_free_private - * - list_copy + * - list_copy_deep * - list_copy_tail * - list_truncate *-------------------------------------------------------------------- @@ -21,10 +26,12 @@ /*------------------------------------------------------------------------- * * list.c - * implementation for PostgreSQL generic linked list package + * implementation for PostgreSQL generic list package + * + * See comments in pg_list.h. * * - * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * @@ -36,10 +43,37 @@ #include "postgres.h" #include "nodes/pg_list.h" +#include "port/pg_bitutils.h" +#include "utils/memdebug.h" +#include "utils/memutils.h" + + +/* + * The previous List implementation, since it used a separate palloc chunk + * for each cons cell, had the property that adding or deleting list cells + * did not move the storage of other existing cells in the list. Quite a + * bit of existing code depended on that, by retaining ListCell pointers + * across such operations on a list. There is no such guarantee in this + * implementation, so instead we have debugging support that is meant to + * help flush out now-broken assumptions. Defining DEBUG_LIST_MEMORY_USAGE + * while building this file causes the List operations to forcibly move + * all cells in a list whenever a cell is added or deleted. In combination + * with MEMORY_CONTEXT_CHECKING and/or Valgrind, this can usually expose + * broken code. It's a bit expensive though, as there's many more palloc + * cycles and a lot more data-copying than in a default build. + * + * By default, we enable this when building for Valgrind. + */ +#ifdef USE_VALGRIND +#define DEBUG_LIST_MEMORY_USAGE +#endif +/* Overhead for the fixed part of a List header, measured in ListCells */ +#define LIST_HEADER_OVERHEAD \ + ((int) ((offsetof(List, initial_elements) - 1) / sizeof(ListCell) + 1)) /* - * Routines to simplify writing assertions about the type of a list; a + * Macros to simplify writing assertions about the type of a list; a * NIL list is considered to be an empty list of any type. */ #define IsPointerList(l) ((l) == NIL || IsA((l), List)) @@ -57,50 +91,219 @@ check_list_invariants(const List *list) return; Assert(list->length > 0); - Assert(list->head != NULL); - Assert(list->tail != NULL); + Assert(list->length <= list->max_length); + Assert(list->elements != NULL); Assert(list->type == T_List || list->type == T_IntList || list->type == T_OidList); - - if (list->length == 1) - Assert(list->head == list->tail); - if (list->length == 2) - Assert(list->head->next == list->tail); - Assert(list->tail->next == NULL); } #else -#define check_list_invariants(l) +#define check_list_invariants(l) ((void) 0) #endif /* USE_ASSERT_CHECKING */ /* - * Return a freshly allocated List. Since empty non-NIL lists are - * invalid, new_list() also allocates the head cell of the new list: - * the caller should be sure to fill in that cell's data. + * Return a freshly allocated List with room for at least min_size cells. + * + * Since empty non-NIL lists are invalid, new_list() sets the initial length + * to min_size, effectively marking that number of cells as valid; the caller + * is responsible for filling in their data. */ static List * -new_list(NodeTag type) +new_list(NodeTag type, int min_size) { - List *new_list; - ListCell *new_head; + List *newlist; + int max_size; - new_head = (ListCell *) palloc(sizeof(*new_head)); - new_head->next = NULL; - /* new_head->data is left undefined! */ + Assert(min_size > 0); - new_list = (List *) palloc(sizeof(*new_list)); - new_list->type = type; - new_list->length = 1; - new_list->head = new_head; - new_list->tail = new_head; + /* + * We allocate all the requested cells, and possibly some more, as part of + * the same palloc request as the List header. This is a big win for the + * typical case of short fixed-length lists. It can lose if we allocate a + * moderately long list and then it gets extended; we'll be wasting more + * initial_elements[] space than if we'd made the header small. However, + * rounding up the request as we do in the normal code path provides some + * defense against small extensions. + */ + +#ifndef DEBUG_LIST_MEMORY_USAGE + + /* + * Normally, we set up a list with some extra cells, to allow it to grow + * without a repalloc. Prefer cell counts chosen to make the total + * allocation a power-of-2, since palloc would round it up to that anyway. + * (That stops being true for very large allocations, but very long lists + * are infrequent, so it doesn't seem worth special logic for such cases.) + * + * The minimum allocation is 8 ListCell units, providing either 4 or 5 + * available ListCells depending on the machine's word width. Counting + * palloc's overhead, this uses the same amount of space as a one-cell + * list did in the old implementation, and less space for any longer list. + * + * We needn't worry about integer overflow; no caller passes min_size + * that's more than twice the size of an existing list, so the size limits + * within palloc will ensure that we don't overflow here. + */ + max_size = pg_nextpower2_32(Max(8, min_size + LIST_HEADER_OVERHEAD)); + max_size -= LIST_HEADER_OVERHEAD; +#else - return new_list; + /* + * For debugging, don't allow any extra space. This forces any cell + * addition to go through enlarge_list() and thus move the existing data. + */ + max_size = min_size; +#endif + + newlist = (List *) palloc(offsetof(List, initial_elements) + + max_size * sizeof(ListCell)); + newlist->type = type; + newlist->length = min_size; + newlist->max_length = max_size; + newlist->elements = newlist->initial_elements; + + return newlist; } /* - * Allocate a new cell and make it the head of the specified - * list. Assumes the list it is passed is non-NIL. + * Enlarge an existing non-NIL List to have room for at least min_size cells. + * + * This does *not* update list->length, as some callers would find that + * inconvenient. (list->length had better be the correct number of existing + * valid cells, though.) + */ +static void +enlarge_list(List *list, int min_size) +{ + int new_max_len; + + Assert(min_size > list->max_length); /* else we shouldn't be here */ + +#ifndef DEBUG_LIST_MEMORY_USAGE + + /* + * As above, we prefer power-of-two total allocations; but here we need + * not account for list header overhead. + */ + + /* clamp the minimum value to 16, a semi-arbitrary small power of 2 */ + new_max_len = pg_nextpower2_32(Max(16, min_size)); + +#else + /* As above, don't allocate anything extra */ + new_max_len = min_size; +#endif + + if (list->elements == list->initial_elements) + { + /* + * Replace original in-line allocation with a separate palloc block. + * Ensure it is in the same memory context as the List header. (The + * previous List implementation did not offer any guarantees about + * keeping all list cells in the same context, but it seems reasonable + * to create such a guarantee now.) + */ + list->elements = (ListCell *) + MemoryContextAlloc(GetMemoryChunkContext(list), + new_max_len * sizeof(ListCell)); + memcpy(list->elements, list->initial_elements, + list->length * sizeof(ListCell)); + + /* + * We must not move the list header, so it's unsafe to try to reclaim + * the initial_elements[] space via repalloc. In debugging builds, + * however, we can clear that space and/or mark it inaccessible. + * (wipe_mem includes VALGRIND_MAKE_MEM_NOACCESS.) + */ +#ifdef CLOBBER_FREED_MEMORY + wipe_mem(list->initial_elements, + list->max_length * sizeof(ListCell)); +#else + VALGRIND_MAKE_MEM_NOACCESS(list->initial_elements, + list->max_length * sizeof(ListCell)); +#endif + } + else + { +#ifndef DEBUG_LIST_MEMORY_USAGE + /* Normally, let repalloc deal with enlargement */ + list->elements = (ListCell *) repalloc(list->elements, + new_max_len * sizeof(ListCell)); +#else + /* + * repalloc() might enlarge the space in-place, which we don't want + * for debugging purposes, so forcibly move the data somewhere else. + */ + ListCell *newelements; + + newelements = (ListCell *) + MemoryContextAlloc(GetMemoryChunkContext(list), + new_max_len * sizeof(ListCell)); + memcpy(newelements, list->elements, + list->length * sizeof(ListCell)); + pfree(list->elements); + list->elements = newelements; +#endif + } + + list->max_length = new_max_len; +} + +/* + * Convenience functions to construct short Lists from given values. + * (These are normally invoked via the list_makeN macros.) + */ +List * +list_make1_impl(NodeTag t, ListCell datum1) +{ + List *list = new_list(t, 1); + + list->elements[0] = datum1; + check_list_invariants(list); + return list; +} + +List * +list_make2_impl(NodeTag t, ListCell datum1, ListCell datum2) +{ + List *list = new_list(t, 2); + + list->elements[0] = datum1; + list->elements[1] = datum2; + check_list_invariants(list); + return list; +} + +List * +list_make3_impl(NodeTag t, ListCell datum1, ListCell datum2, + ListCell datum3) +{ + List *list = new_list(t, 3); + + list->elements[0] = datum1; + list->elements[1] = datum2; + list->elements[2] = datum3; + check_list_invariants(list); + return list; +} + +List * +list_make4_impl(NodeTag t, ListCell datum1, ListCell datum2, + ListCell datum3, ListCell datum4) +{ + List *list = new_list(t, 4); + + list->elements[0] = datum1; + list->elements[1] = datum2; + list->elements[2] = datum3; + list->elements[3] = datum4; + check_list_invariants(list); + return list; +} + +/* + * Make room for a new head cell in the given (non-NIL) list. * * The data in the new head cell is undefined; the caller should be * sure to fill it in @@ -108,18 +311,17 @@ new_list(NodeTag type) static void new_head_cell(List *list) { - ListCell *new_head; - - new_head = (ListCell *) palloc(sizeof(*new_head)); - new_head->next = list->head; - - list->head = new_head; + /* Enlarge array if necessary */ + if (list->length >= list->max_length) + enlarge_list(list, list->length + 1); + /* Now shove the existing data over */ + memmove(&list->elements[1], &list->elements[0], + list->length * sizeof(ListCell)); list->length++; } /* - * Allocate a new cell and make it the tail of the specified - * list. Assumes the list it is passed is non-NIL. + * Make room for a new tail cell in the given (non-NIL) list. * * The data in the new tail cell is undefined; the caller should be * sure to fill it in @@ -127,13 +329,9 @@ new_head_cell(List *list) static void new_tail_cell(List *list) { - ListCell *new_tail; - - new_tail = (ListCell *) palloc(sizeof(*new_tail)); - new_tail->next = NULL; - - list->tail->next = new_tail; - list->tail = new_tail; + /* Enlarge array if necessary */ + if (list->length >= list->max_length) + enlarge_list(list, list->length + 1); list->length++; } @@ -150,11 +348,11 @@ lappend(List *list, void *datum) Assert(IsPointerList(list)); if (list == NIL) - list = new_list(T_List); + list = new_list(T_List, 1); else new_tail_cell(list); - lfirst(list->tail) = datum; + lfirst(list_tail(list)) = datum; check_list_invariants(list); return list; } @@ -170,18 +368,17 @@ lappend(List *list, void *datum) /* - * Add a new cell to the list, in the position after 'prev_cell'. The - * data in the cell is left undefined, and must be filled in by the - * caller. 'list' is assumed to be non-NIL, and 'prev_cell' is assumed - * to be non-NULL and a member of 'list'. + * Make room for a new cell at position 'pos' (measured from 0). + * The data in the cell is left undefined, and must be filled in by the + * caller. 'list' is assumed to be non-NIL, and 'pos' must be a valid + * list position, ie, 0 <= pos <= list's length. + * Returns address of the new cell. */ /* - * Add a new cell to the specified list (which must be non-NIL); - * it will be placed after the list cell 'prev' (which must be - * non-NULL and a member of 'list'). The data placed in the new cell - * is 'datum'. The newly-constructed cell is returned. + * Insert the given datum at position 'pos' (measured from 0) in the list. + * 'pos' must be valid, ie, 0 <= pos <= list's length. */ @@ -206,11 +403,11 @@ lcons(void *datum, List *list) Assert(IsPointerList(list)); if (list == NIL) - list = new_list(T_List); + list = new_list(T_List, 1); else new_head_cell(list); - lfirst(list->head) = datum; + lfirst(list_head(list)) = datum; check_list_invariants(list); return list; } @@ -226,36 +423,55 @@ lcons(void *datum, List *list) /* - * Concatenate list2 to the end of list1, and return list1. list1 is - * destructively changed. Callers should be sure to use the return - * value as the new pointer to the concatenated list: the 'list1' - * input pointer may or may not be the same as the returned pointer. + * Concatenate list2 to the end of list1, and return list1. + * + * This is equivalent to lappend'ing each element of list2, in order, to list1. + * list1 is destructively changed, list2 is not. (However, in the case of + * pointer lists, list1 and list2 will point to the same structures.) * - * The nodes in list2 are merely appended to the end of list1 in-place - * (i.e. they aren't copied; the two lists will share some of the same - * storage). Therefore, invoking list_free() on list2 will also - * invalidate a portion of list1. + * Callers should be sure to use the return value as the new pointer to the + * concatenated list: the 'list1' input pointer may or may not be the same + * as the returned pointer. */ List * -list_concat(List *list1, List *list2) +list_concat(List *list1, const List *list2) { + int new_len; + if (list1 == NIL) - return list2; + return list_copy(list2); if (list2 == NIL) return list1; - if (list1 == list2) - elog(ERROR, "cannot list_concat() a list to itself"); Assert(list1->type == list2->type); - list1->length += list2->length; - list1->tail->next = list2->head; - list1->tail = list2->tail; + new_len = list1->length + list2->length; + /* Enlarge array if necessary */ + if (new_len > list1->max_length) + enlarge_list(list1, new_len); + + /* Even if list1 == list2, using memcpy should be safe here */ + memcpy(&list1->elements[list1->length], &list2->elements[0], + list2->length * sizeof(ListCell)); + list1->length = new_len; check_list_invariants(list1); return list1; } +/* + * Form a new list by concatenating the elements of list1 and list2. + * + * Neither input list is modified. (However, if they are pointer lists, + * the output list will point to the same structures.) + * + * This is equivalent to, but more efficient than, + * list_concat(list_copy(list1), list2). + * Note that some pre-v13 code might list_copy list2 as well, but that's + * pointless now. + */ + + /* * Truncate 'list' to contain no more than 'new_size' elements. This * modifies the list in-place! Despite this, callers should use the @@ -268,82 +484,26 @@ list_concat(List *list1, List *list2) List * list_truncate(List *list, int new_size) { - ListCell *cell; - int n; - if (new_size <= 0) return NIL; /* truncate to zero length */ /* If asked to effectively extend the list, do nothing */ - if (new_size >= list_length(list)) - return list; + if (new_size < list_length(list)) + list->length = new_size; - n = 1; - foreach(cell, list) - { - if (n == new_size) - { - cell->next = NULL; - list->tail = cell; - list->length = new_size; - check_list_invariants(list); - return list; - } - n++; - } + /* + * Note: unlike the individual-list-cell deletion functions, we don't move + * the list cells to new storage, even in DEBUG_LIST_MEMORY_USAGE mode. + * This is because none of them can move in this operation, so just like + * in the old cons-cell-based implementation, this function doesn't + * invalidate any pointers to cells of the list. This is also the reason + * for not wiping the memory of the deleted cells: the old code didn't + * free them either. Perhaps later we'll tighten this up. + */ - /* keep the compiler quiet; never reached */ - Assert(false); return list; } -/* - * Locate the n'th cell (counting from 0) of the list. It is an assertion - * failure if there is no such cell. - */ -ListCell * -list_nth_cell(const List *list, int n) -{ - ListCell *match; - - Assert(list != NIL); - Assert(n >= 0); - Assert(n < list->length); - check_list_invariants(list); - - /* Does the caller actually mean to fetch the tail? */ - if (n == list->length - 1) - return list->tail; - - for (match = list->head; n-- > 0; match = match->next) - ; - - return match; -} - -/* - * Return the data value contained in the n'th element of the - * specified list. (List elements begin at 0.) - */ -void * -list_nth(const List *list, int n) -{ - Assert(IsPointerList(list)); - return lfirst(list_nth_cell(list, n)); -} - -/* - * Return the integer value contained in the n'th element of the - * specified list. - */ - - -/* - * Return the OID value contained in the n'th element of the specified - * list. - */ - - /* * Return true iff 'datum' is a member of the list. Equality is * determined via equal(), so callers should ensure that they pass a @@ -368,16 +528,16 @@ list_nth(const List *list, int n) /* - * Delete 'cell' from 'list'; 'prev' is the previous element to 'cell' - * in 'list', if any (i.e. prev == NULL iff list->head == cell) + * Delete the n'th cell (counting from 0) in list. * - * The cell is pfree'd, as is the List header if this was the last member. + * The List is pfree'd if this was the last member. */ List * -list_delete_cell(List *list, ListCell *cell, ListCell *prev) +list_delete_nth_cell(List *list, int n) { check_list_invariants(list); - Assert(prev != NULL ? lnext(prev) == cell : list_head(list) == cell); + + Assert(n >= 0 && n < list->length); /* * If we're about to delete the last node from the list, free the whole @@ -391,23 +551,64 @@ list_delete_cell(List *list, ListCell *cell, ListCell *prev) } /* - * Otherwise, adjust the necessary list links, deallocate the particular - * node we have just removed, and return the list we were given. + * Otherwise, we normally just collapse out the removed element. But for + * debugging purposes, move the whole list contents someplace else. + * + * (Note that we *must* keep the contents in the same memory context.) */ +#ifndef DEBUG_LIST_MEMORY_USAGE + memmove(&list->elements[n], &list->elements[n + 1], + (list->length - 1 - n) * sizeof(ListCell)); list->length--; +#else + { + ListCell *newelems; + int newmaxlen = list->length - 1; + + newelems = (ListCell *) + MemoryContextAlloc(GetMemoryChunkContext(list), + newmaxlen * sizeof(ListCell)); + memcpy(newelems, list->elements, n * sizeof(ListCell)); + memcpy(&newelems[n], &list->elements[n + 1], + (list->length - 1 - n) * sizeof(ListCell)); + if (list->elements != list->initial_elements) + pfree(list->elements); + else + { + /* + * As in enlarge_list(), clear the initial_elements[] space and/or + * mark it inaccessible. + */ +#ifdef CLOBBER_FREED_MEMORY + wipe_mem(list->initial_elements, + list->max_length * sizeof(ListCell)); +#else + VALGRIND_MAKE_MEM_NOACCESS(list->initial_elements, + list->max_length * sizeof(ListCell)); +#endif + } + list->elements = newelems; + list->max_length = newmaxlen; + list->length--; + check_list_invariants(list); + } +#endif - if (prev) - prev->next = cell->next; - else - list->head = cell->next; - - if (list->tail == cell) - list->tail = prev; - - pfree(cell); return list; } +/* + * Delete 'cell' from 'list'. + * + * The List is pfree'd if this was the last member. However, we do not + * touch any data the cell might've been pointing to. + */ +List * +list_delete_cell(List *list, ListCell *cell) +{ + return list_delete_nth_cell(list, cell - list->elements); +} + /* * Delete the first cell in list that matches datum, if any. * Equality is determined via equal(). @@ -428,8 +629,16 @@ list_delete_cell(List *list, ListCell *cell, ListCell *prev) * * This is useful to replace the Lisp-y code "list = lnext(list);" in cases * where the intent is to alter the list rather than just traverse it. - * Beware that the removed cell is freed, whereas the lnext() coding leaves - * the original list head intact if there's another pointer to it. + * Beware that the list is modified, whereas the Lisp-y coding leaves + * the original list head intact in case there's another pointer to it. + */ + + +/* + * Delete the last element of the list. + * + * This is the opposite of list_delete_first(), but is noticeably cheaper + * with a long list, since no data need be moved. */ @@ -448,7 +657,7 @@ list_delete_cell(List *list, ListCell *cell, ListCell *prev) * in list1 (so it only performs a "union" if list1 is known unique to * start with). Also, if you are about to write "x = list_union(x, y)" * you probably want to use list_concat_unique() instead to avoid wasting - * the list cells of the old x list. + * the storage of the old x list. * * This function could probably be implemented a lot faster if it is a * performance bottleneck. @@ -549,8 +758,9 @@ list_delete_cell(List *list, ListCell *cell, ListCell *prev) * via equal(). * * This is almost the same functionality as list_union(), but list1 is - * modified in-place rather than being copied. Note also that list2's cells - * are not inserted in list1, so the analogy to list_concat() isn't perfect. + * modified in-place rather than being copied. However, callers of this + * function may have strict ordering expectations -- i.e. that the relative + * order of those list2 elements that are not duplicates is preserved. */ @@ -570,29 +780,33 @@ list_delete_cell(List *list, ListCell *cell, ListCell *prev) */ +/* + * Remove adjacent duplicates in a list of OIDs. + * + * It is caller's responsibility to have sorted the list to bring duplicates + * together, perhaps via list_sort(list, list_oid_cmp). + */ + + /* * Free all storage in a list, and optionally the pointed-to elements */ static void list_free_private(List *list, bool deep) { - ListCell *cell; + if (list == NIL) + return; /* nothing to do */ check_list_invariants(list); - cell = list_head(list); - while (cell != NULL) + if (deep) { - ListCell *tmp = cell; - - cell = lnext(cell); - if (deep) - pfree(lfirst(tmp)); - pfree(tmp); + for (int i = 0; i < list->length; i++) + pfree(lfirst(&list->elements[i])); } - - if (list) - pfree(list); + if (list->elements != list->initial_elements) + pfree(list->elements); + pfree(list); } /* @@ -626,37 +840,13 @@ List * list_copy(const List *oldlist) { List *newlist; - ListCell *newlist_prev; - ListCell *oldlist_cur; if (oldlist == NIL) return NIL; - newlist = new_list(oldlist->type); - newlist->length = oldlist->length; - - /* - * Copy over the data in the first cell; new_list() has already allocated - * the head cell itself - */ - newlist->head->data = oldlist->head->data; - - newlist_prev = newlist->head; - oldlist_cur = oldlist->head->next; - while (oldlist_cur) - { - ListCell *newlist_cur; - - newlist_cur = (ListCell *) palloc(sizeof(*newlist_cur)); - newlist_cur->data = oldlist_cur->data; - newlist_prev->next = newlist_cur; - - newlist_prev = newlist_cur; - oldlist_cur = oldlist_cur->next; - } - - newlist_prev->next = NULL; - newlist->tail = newlist_prev; + newlist = new_list(oldlist->type, oldlist->length); + memcpy(newlist->elements, oldlist->elements, + newlist->length * sizeof(ListCell)); check_list_invariants(newlist); return newlist; @@ -669,8 +859,6 @@ List * list_copy_tail(const List *oldlist, int nskip) { List *newlist; - ListCell *newlist_prev; - ListCell *oldlist_cur; if (nskip < 0) nskip = 0; /* would it be better to elog? */ @@ -678,59 +866,57 @@ list_copy_tail(const List *oldlist, int nskip) if (oldlist == NIL || nskip >= oldlist->length) return NIL; - newlist = new_list(oldlist->type); - newlist->length = oldlist->length - nskip; + newlist = new_list(oldlist->type, oldlist->length - nskip); + memcpy(newlist->elements, &oldlist->elements[nskip], + newlist->length * sizeof(ListCell)); - /* - * Skip over the unwanted elements. - */ - oldlist_cur = oldlist->head; - while (nskip-- > 0) - oldlist_cur = oldlist_cur->next; - - /* - * Copy over the data in the first remaining cell; new_list() has already - * allocated the head cell itself - */ - newlist->head->data = oldlist_cur->data; + check_list_invariants(newlist); + return newlist; +} - newlist_prev = newlist->head; - oldlist_cur = oldlist_cur->next; - while (oldlist_cur) - { - ListCell *newlist_cur; +/* + * Return a deep copy of the specified list. + * + * The list elements are copied via copyObject(), so that this function's + * idea of a "deep" copy is considerably deeper than what list_free_deep() + * means by the same word. + */ +List * +list_copy_deep(const List *oldlist) +{ + List *newlist; - newlist_cur = (ListCell *) palloc(sizeof(*newlist_cur)); - newlist_cur->data = oldlist_cur->data; - newlist_prev->next = newlist_cur; + if (oldlist == NIL) + return NIL; - newlist_prev = newlist_cur; - oldlist_cur = oldlist_cur->next; - } + /* This is only sensible for pointer Lists */ + Assert(IsA(oldlist, List)); - newlist_prev->next = NULL; - newlist->tail = newlist_prev; + newlist = new_list(oldlist->type, oldlist->length); + for (int i = 0; i < newlist->length; i++) + lfirst(&newlist->elements[i]) = + copyObjectImpl(lfirst(&oldlist->elements[i])); check_list_invariants(newlist); return newlist; } /* - * Temporary compatibility functions + * Sort a list according to the specified comparator function. + * + * The list is sorted in-place. + * + * The comparator function is declared to receive arguments of type + * const ListCell *; this allows it to use lfirst() and variants + * without casting its arguments. Otherwise it behaves the same as + * the comparator function for standard qsort(). * - * In order to avoid warnings for these function definitions, we need - * to include a prototype here as well as in pg_list.h. That's because - * we don't enable list API compatibility in list.c, so we - * don't see the prototypes for these functions. + * Like qsort(), this provides no guarantees about sort stability + * for equal keys. */ + /* - * Given a list, return its length. This is merely defined for the - * sake of backward compatibility: we can't afford to define a macro - * called "length", so it must be a function. New code should use the - * list_length() macro in order to avoid the overhead of a function - * call. + * list_sort comparator for sorting a list into ascending OID order. */ -int length(const List *list); - diff --git a/parser/src_backend_nodes_makefuncs.c b/parser/src_backend_nodes_makefuncs.c index 5df812f2..14da6bf0 100644 --- a/parser/src_backend_nodes_makefuncs.c +++ b/parser/src_backend_nodes_makefuncs.c @@ -3,6 +3,7 @@ * - makeDefElem * - makeTypeNameFromNameList * - makeDefElemExtended + * - makeVacuumRelation * - makeAlias * - makeSimpleA_Expr * - makeGroupingSet @@ -17,10 +18,10 @@ /*------------------------------------------------------------------------- * * makefuncs.c - * creator functions for primitive nodes. The functions here are for - * the most frequently created nodes. + * creator functions for various nodes. The functions here are for the + * most frequently created nodes. * - * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * @@ -33,7 +34,6 @@ #include "catalog/pg_class.h" #include "catalog/pg_type.h" -#include "fmgr.h" #include "nodes/makefuncs.h" #include "nodes/nodeFuncs.h" #include "utils/lsyscache.h" @@ -96,8 +96,10 @@ makeSimpleA_Expr(A_Expr_Kind kind, char *name, * table entry, and varattno == 0 to signal that it references the whole * tuple. (Use of zero here is unclean, since it could easily be confused * with error cases, but it's not worth changing now.) The vartype indicates - * a rowtype; either a named composite type, or RECORD. This function - * encapsulates the logic for determining the correct rowtype OID to use. + * a rowtype; either a named composite type, or a domain over a named + * composite type (only possible if the RTE is a function returning that), + * or RECORD. This function encapsulates the logic for determining the + * correct rowtype OID to use. * * If allowScalar is true, then for the case where the RTE is a single function * returning a non-composite result type, we produce a normal Var referencing @@ -324,6 +326,66 @@ makeFuncCall(List *name, List *args, int location) return n; } +/* + * make_opclause + * Creates an operator clause given its operator info, left operand + * and right operand (pass NULL to create single-operand clause), + * and collation info. + */ + + +/* + * make_andclause + * + * Creates an 'and' clause given a list of its subclauses. + */ + + +/* + * make_orclause + * + * Creates an 'or' clause given a list of its subclauses. + */ + + +/* + * make_notclause + * + * Create a 'not' clause given the expression to be negated. + */ + + +/* + * make_and_qual + * + * Variant of make_andclause for ANDing two qual conditions together. + * Qual conditions have the property that a NULL nodetree is interpreted + * as 'true'. + * + * NB: this makes no attempt to preserve AND/OR flatness; so it should not + * be used on a qual that has already been run through prepqual.c. + */ + + +/* + * The planner and executor usually represent qualification expressions + * as lists of boolean expressions with implicit AND semantics. + * + * These functions convert between an AND-semantics expression list and the + * ordinary representation of a boolean expression. + * + * Note that an empty list is considered equivalent to TRUE. + */ + + + + +/* + * makeIndexInfo + * create an IndexInfo node + */ + + /* * makeGroupingSet * @@ -338,3 +400,18 @@ makeGroupingSet(GroupingSetKind kind, List *content, int location) n->location = location; return n; } + +/* + * makeVacuumRelation - + * create a VacuumRelation node + */ +VacuumRelation * +makeVacuumRelation(RangeVar *relation, Oid oid, List *va_cols) +{ + VacuumRelation *v = makeNode(VacuumRelation); + + v->relation = relation; + v->oid = oid; + v->va_cols = va_cols; + return v; +} diff --git a/parser/src_backend_nodes_nodeFuncs.c b/parser/src_backend_nodes_nodeFuncs.c index fddc3499..2cbc38de 100644 --- a/parser/src_backend_nodes_nodeFuncs.c +++ b/parser/src_backend_nodes_nodeFuncs.c @@ -11,7 +11,7 @@ * nodeFuncs.c * Various general-purpose manipulations of Node trees * - * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * @@ -25,21 +25,20 @@ #include "catalog/pg_collation.h" #include "catalog/pg_type.h" #include "miscadmin.h" -#include "nodes/makefuncs.h" #include "nodes/execnodes.h" +#include "nodes/makefuncs.h" #include "nodes/nodeFuncs.h" -#include "nodes/relation.h" +#include "nodes/pathnodes.h" #include "utils/builtins.h" #include "utils/lsyscache.h" - static bool expression_returns_set_walker(Node *node, void *context); static int leftmostLoc(int loc1, int loc2); static bool fix_opfuncids_walker(Node *node, void *context); static bool planstate_walk_subplans(List *plans, bool (*walker) (), void *context); -static bool planstate_walk_members(List *plans, PlanState **planstates, - bool (*walker) (), void *context); +static bool planstate_walk_members(PlanState **planstates, int nplans, + bool (*walker) (), void *context); /* @@ -68,13 +67,25 @@ static bool planstate_walk_members(List *plans, PlanState **planstates, */ +/* + * applyRelabelType + * Add a RelabelType node if needed to make the expression expose + * the specified type, typmod, and collation. + * + * This is primarily intended to be used during planning. Therefore, it must + * maintain the post-eval_const_expressions invariants that there are not + * adjacent RelabelTypes, and that the tree is fully const-folded (hence, + * we mustn't return a RelabelType atop a Const). If we do find a Const, + * we'll modify it in-place if "overwrite_ok" is true; that should only be + * passed as true if caller knows the Const is newly generated. + */ + + /* * relabel_to_typmod * Add a RelabelType node that changes just the typmod of the expression. * - * This is primarily intended to be used during planning. Therefore, it - * strips any existing RelabelType nodes to maintain the planner's invariant - * that there are not adjacent RelabelTypes. + * Convenience function for a common usage of applyRelabelType. */ @@ -94,7 +105,7 @@ static bool planstate_walk_members(List *plans, PlanState **planstates, * Test whether an expression returns a set result. * * Because we use expression_tree_walker(), this can also be applied to - * whole targetlists; it'll produce TRUE if any one of the tlist items + * whole targetlists; it'll produce true if any one of the tlist items * returns a set. */ @@ -208,9 +219,9 @@ exprLocation(const Node *expr) /* function name should always be the first thing */ loc = ((const WindowFunc *) expr)->location; break; - case T_ArrayRef: - /* just use array argument's location */ - loc = exprLocation((Node *) ((const ArrayRef *) expr)->refexpr); + case T_SubscriptingRef: + /* just use container argument's location */ + loc = exprLocation((Node *) ((const SubscriptingRef *) expr)->refexpr); break; case T_FuncExpr: { @@ -594,9 +605,9 @@ leftmostLoc(int loc1, int loc2) * check_functions_in_node - * apply checker() to each function OID contained in given expression node * - * Returns TRUE if the checker() function does; for nodes representing more - * than one function call, returns TRUE if the checker() function does so - * for any of those functions. Returns FALSE if node does not invoke any + * Returns true if the checker() function does; for nodes representing more + * than one function call, returns true if the checker() function does so + * for any of those functions. Returns false if node does not invoke any * SQL-visible function. Caller must not pass node == NULL. * * This function examines only the given node; it does not recurse into any @@ -718,7 +729,7 @@ leftmostLoc(int loc1, int loc2) * Some callers want to suppress visitation of certain items in the sub-Query, * typically because they need to process them specially, or don't actually * want to recurse into subqueries. This is supported by the flags argument, - * which is the bitwise OR of flag values to suppress visitation of + * which is the bitwise OR of flag values to add or suppress visitation of * indicated items. (More flag bits may be added as needed.) */ @@ -730,6 +741,11 @@ leftmostLoc(int loc1, int loc2) */ +/* + * Some callers even want to scan the expressions in individual RTEs. + */ + + /* * expression_tree_mutator() is designed to support routines that make a @@ -1343,8 +1359,5 @@ raw_expression_tree_walker(Node *node, /* * Walk the constituent plans of a ModifyTable, Append, MergeAppend, * BitmapAnd, or BitmapOr node. - * - * Note: we don't actually need to examine the Plan list members, but - * we need the list in order to determine the length of the PlanState array. */ diff --git a/parser/src_backend_nodes_value.c b/parser/src_backend_nodes_value.c index 7d2fc48d..db1b7c62 100644 --- a/parser/src_backend_nodes_value.c +++ b/parser/src_backend_nodes_value.c @@ -1,8 +1,9 @@ /*-------------------------------------------------------------------- * Symbols referenced in this file: - * - makeInteger * - makeString + * - makeInteger * - makeFloat + * - makeBitString *-------------------------------------------------------------------- */ @@ -12,7 +13,7 @@ * implementation of Value nodes * * - * Copyright (c) 2003-2017, PostgreSQL Global Development Group + * Copyright (c) 2003-2020, PostgreSQL Global Development Group * * * IDENTIFICATION @@ -28,7 +29,7 @@ * makeInteger */ Value * -makeInteger(long i) +makeInteger(int i) { Value *v = makeNode(Value); @@ -72,4 +73,12 @@ makeString(char *str) * * Caller is responsible for passing a palloc'd string. */ +Value * +makeBitString(char *str) +{ + Value *v = makeNode(Value); + v->type = T_BitString; + v->val.str = str; + return v; +} diff --git a/parser/src_backend_parser_gram.c b/parser/src_backend_parser_gram.c index c2588431..0b60f0ec 100644 --- a/parser/src_backend_parser_gram.c +++ b/parser/src_backend_parser_gram.c @@ -12,12 +12,12 @@ * - yyr2 * - updateRawStmtEnd * - makeRawStmt + * - makeParamRef * - makeStringConst * - makeAConst * - makeStringConstCast * - makeIntConst * - processCASbits - * - makeNullAConst * - makeRangeVarFromAnyName * - SplitColQualList * - doNegateFloat @@ -32,6 +32,7 @@ * - check_indirection * - insertSelectOptions * - makeSetOp + * - makeNullAConst * - doNegate * - makeFloatConst * - makeTypeCast @@ -40,7 +41,6 @@ * - makeOrExpr * - makeNotExpr * - makeXmlExpr - * - makeParamRef * - makeSQLValueFunction * - makeBoolAConst * - makeAArrayExpr @@ -134,912 +134,956 @@ know about them. */ enum yytokentype { IDENT = 258, - FCONST = 259, - SCONST = 260, - BCONST = 261, - XCONST = 262, - Op = 263, - ICONST = 264, - PARAM = 265, - TYPECAST = 266, - DOT_DOT = 267, - COLON_EQUALS = 268, - EQUALS_GREATER = 269, - LESS_EQUALS = 270, - GREATER_EQUALS = 271, - NOT_EQUALS = 272, - ABORT_P = 273, - ABSOLUTE_P = 274, - ACCESS = 275, - ACTION = 276, - ADD_P = 277, - ADMIN = 278, - AFTER = 279, - AGGREGATE = 280, - ALL = 281, - ALSO = 282, - ALTER = 283, - ALWAYS = 284, - ANALYSE = 285, - ANALYZE = 286, - AND = 287, - ANY = 288, - ARRAY = 289, - AS = 290, - ASC = 291, - ASSERTION = 292, - ASSIGNMENT = 293, - ASYMMETRIC = 294, - AT = 295, - ATTACH = 296, - ATTRIBUTE = 297, - AUTHORIZATION = 298, - BACKWARD = 299, - BEFORE = 300, - BEGIN_P = 301, - BETWEEN = 302, - BIGINT = 303, - BINARY = 304, - BIT = 305, - BOOLEAN_P = 306, - BOTH = 307, - BY = 308, - CACHE = 309, - CALLED = 310, - CASCADE = 311, - CASCADED = 312, - CASE = 313, - CAST = 314, - CATALOG_P = 315, - CHAIN = 316, - CHAR_P = 317, - CHARACTER = 318, - CHARACTERISTICS = 319, - CHECK = 320, - CHECKPOINT = 321, - CLASS = 322, - CLOSE = 323, - CLUSTER = 324, - COALESCE = 325, - COLLATE = 326, - COLLATION = 327, - COLUMN = 328, - COLUMNS = 329, - COMMENT = 330, - COMMENTS = 331, - COMMIT = 332, - COMMITTED = 333, - CONCURRENTLY = 334, - CONFIGURATION = 335, - CONFLICT = 336, - CONNECTION = 337, - CONSTRAINT = 338, - CONSTRAINTS = 339, - CONTENT_P = 340, - CONTINUE_P = 341, - CONVERSION_P = 342, - COPY = 343, - COST = 344, - CREATE = 345, - CROSS = 346, - CSV = 347, - CUBE = 348, - CURRENT_P = 349, - CURRENT_CATALOG = 350, - CURRENT_DATE = 351, - CURRENT_ROLE = 352, - CURRENT_SCHEMA = 353, - CURRENT_TIME = 354, - CURRENT_TIMESTAMP = 355, - CURRENT_USER = 356, - CURSOR = 357, - CYCLE = 358, - DATA_P = 359, - DATABASE = 360, - DAY_P = 361, - DEALLOCATE = 362, - DEC = 363, - DECIMAL_P = 364, - DECLARE = 365, - DEFAULT = 366, - DEFAULTS = 367, - DEFERRABLE = 368, - DEFERRED = 369, - DEFINER = 370, - DELETE_P = 371, - DELIMITER = 372, - DELIMITERS = 373, - DEPENDS = 374, - DESC = 375, - DETACH = 376, - DICTIONARY = 377, - DISABLE_P = 378, - DISCARD = 379, - DISTINCT = 380, - DO = 381, - DOCUMENT_P = 382, - DOMAIN_P = 383, - DOUBLE_P = 384, - DROP = 385, - EACH = 386, - ELSE = 387, - ENABLE_P = 388, - ENCODING = 389, - ENCRYPTED = 390, - END_P = 391, - ENUM_P = 392, - ESCAPE = 393, - EVENT = 394, - EXCEPT = 395, - EXCLUDE = 396, - EXCLUDING = 397, - EXCLUSIVE = 398, - EXECUTE = 399, - EXISTS = 400, - EXPLAIN = 401, - EXTENSION = 402, - EXTERNAL = 403, - EXTRACT = 404, - FALSE_P = 405, - FAMILY = 406, - FETCH = 407, - FILTER = 408, - FIRST_P = 409, - FLOAT_P = 410, - FOLLOWING = 411, - FOR = 412, - FORCE = 413, - FOREIGN = 414, - FORWARD = 415, - FREEZE = 416, - FROM = 417, - FULL = 418, - FUNCTION = 419, - FUNCTIONS = 420, - GENERATED = 421, - GLOBAL = 422, - GRANT = 423, - GRANTED = 424, - GREATEST = 425, - GROUP_P = 426, - GROUPING = 427, - HANDLER = 428, - HAVING = 429, - HEADER_P = 430, - HOLD = 431, - HOUR_P = 432, - IDENTITY_P = 433, - IF_P = 434, - ILIKE = 435, - IMMEDIATE = 436, - IMMUTABLE = 437, - IMPLICIT_P = 438, - IMPORT_P = 439, - IN_P = 440, - INCLUDING = 441, - INCREMENT = 442, - INDEX = 443, - INDEXES = 444, - INHERIT = 445, - INHERITS = 446, - INITIALLY = 447, - INLINE_P = 448, - INNER_P = 449, - INOUT = 450, - INPUT_P = 451, - INSENSITIVE = 452, - INSERT = 453, - INSTEAD = 454, - INT_P = 455, - INTEGER = 456, - INTERSECT = 457, - INTERVAL = 458, - INTO = 459, - INVOKER = 460, - IS = 461, - ISNULL = 462, - ISOLATION = 463, - JOIN = 464, - KEY = 465, - LABEL = 466, - LANGUAGE = 467, - LARGE_P = 468, - LAST_P = 469, - LATERAL_P = 470, - LEADING = 471, - LEAKPROOF = 472, - LEAST = 473, - LEFT = 474, - LEVEL = 475, - LIKE = 476, - LIMIT = 477, - LISTEN = 478, - LOAD = 479, - LOCAL = 480, - LOCALTIME = 481, - LOCALTIMESTAMP = 482, - LOCATION = 483, - LOCK_P = 484, - LOCKED = 485, - LOGGED = 486, - MAPPING = 487, - MATCH = 488, - MATERIALIZED = 489, - MAXVALUE = 490, - METHOD = 491, - MINUTE_P = 492, - MINVALUE = 493, - MODE = 494, - MONTH_P = 495, - MOVE = 496, - NAME_P = 497, - NAMES = 498, - NATIONAL = 499, - NATURAL = 500, - NCHAR = 501, - NEW = 502, - NEXT = 503, - NO = 504, - NONE = 505, - NOT = 506, - NOTHING = 507, - NOTIFY = 508, - NOTNULL = 509, - NOWAIT = 510, - NULL_P = 511, - NULLIF = 512, - NULLS_P = 513, - NUMERIC = 514, - OBJECT_P = 515, - OF = 516, - OFF = 517, - OFFSET = 518, - OIDS = 519, - OLD = 520, - ON = 521, - ONLY = 522, - OPERATOR = 523, - OPTION = 524, - OPTIONS = 525, - OR = 526, - ORDER = 527, - ORDINALITY = 528, - OUT_P = 529, - OUTER_P = 530, - OVER = 531, - OVERLAPS = 532, - OVERLAY = 533, - OVERRIDING = 534, - OWNED = 535, - OWNER = 536, - PARALLEL = 537, - PARSER = 538, - PARTIAL = 539, - PARTITION = 540, - PASSING = 541, - PASSWORD = 542, - PLACING = 543, - PLANS = 544, - POLICY = 545, - POSITION = 546, - PRECEDING = 547, - PRECISION = 548, - PRESERVE = 549, - PREPARE = 550, - PREPARED = 551, - PRIMARY = 552, - PRIOR = 553, - PRIVILEGES = 554, - PROCEDURAL = 555, - PROCEDURE = 556, - PROGRAM = 557, - PUBLICATION = 558, - QUOTE = 559, - RANGE = 560, - READ = 561, - REAL = 562, - REASSIGN = 563, - RECHECK = 564, - RECURSIVE = 565, - REF = 566, - REFERENCES = 567, - REFERENCING = 568, - REFRESH = 569, - REINDEX = 570, - RELATIVE_P = 571, - RELEASE = 572, - RENAME = 573, - REPEATABLE = 574, - REPLACE = 575, - REPLICA = 576, - RESET = 577, - RESTART = 578, - RESTRICT = 579, - RETURNING = 580, - RETURNS = 581, - REVOKE = 582, - RIGHT = 583, - ROLE = 584, - ROLLBACK = 585, - ROLLUP = 586, - ROW = 587, - ROWS = 588, - RULE = 589, - SAVEPOINT = 590, - SCHEMA = 591, - SCHEMAS = 592, - SCROLL = 593, - SEARCH = 594, - SECOND_P = 595, - SECURITY = 596, - SELECT = 597, - SEQUENCE = 598, - SEQUENCES = 599, - SERIALIZABLE = 600, - SERVER = 601, - SESSION = 602, - SESSION_USER = 603, - SET = 604, - SETS = 605, - SETOF = 606, - SHARE = 607, - SHOW = 608, - SIMILAR = 609, - SIMPLE = 610, - SKIP = 611, - SMALLINT = 612, - SNAPSHOT = 613, - SOME = 614, - SQL_P = 615, - STABLE = 616, - STANDALONE_P = 617, - START = 618, - STATEMENT = 619, - STATISTICS = 620, - STDIN = 621, - STDOUT = 622, - STORAGE = 623, - STRICT_P = 624, - STRIP_P = 625, - SUBSCRIPTION = 626, - SUBSTRING = 627, - SYMMETRIC = 628, - SYSID = 629, - SYSTEM_P = 630, - TABLE = 631, - TABLES = 632, - TABLESAMPLE = 633, - TABLESPACE = 634, - TEMP = 635, - TEMPLATE = 636, - TEMPORARY = 637, - TEXT_P = 638, - THEN = 639, - TIME = 640, - TIMESTAMP = 641, - TO = 642, - TRAILING = 643, - TRANSACTION = 644, - TRANSFORM = 645, - TREAT = 646, - TRIGGER = 647, - TRIM = 648, - TRUE_P = 649, - TRUNCATE = 650, - TRUSTED = 651, - TYPE_P = 652, - TYPES_P = 653, - UNBOUNDED = 654, - UNCOMMITTED = 655, - UNENCRYPTED = 656, - UNION = 657, - UNIQUE = 658, - UNKNOWN = 659, - UNLISTEN = 660, - UNLOGGED = 661, - UNTIL = 662, - UPDATE = 663, - USER = 664, - USING = 665, - VACUUM = 666, - VALID = 667, - VALIDATE = 668, - VALIDATOR = 669, - VALUE_P = 670, - VALUES = 671, - VARCHAR = 672, - VARIADIC = 673, - VARYING = 674, - VERBOSE = 675, - VERSION_P = 676, - VIEW = 677, - VIEWS = 678, - VOLATILE = 679, - WHEN = 680, - WHERE = 681, - WHITESPACE_P = 682, - WINDOW = 683, - WITH = 684, - WITHIN = 685, - WITHOUT = 686, - WORK = 687, - WRAPPER = 688, - WRITE = 689, - XML_P = 690, - XMLATTRIBUTES = 691, - XMLCONCAT = 692, - XMLELEMENT = 693, - XMLEXISTS = 694, - XMLFOREST = 695, - XMLNAMESPACES = 696, - XMLPARSE = 697, - XMLPI = 698, - XMLROOT = 699, - XMLSERIALIZE = 700, - XMLTABLE = 701, - YEAR_P = 702, - YES_P = 703, - ZONE = 704, - NOT_LA = 705, - NULLS_LA = 706, - WITH_LA = 707, - POSTFIXOP = 708, - UMINUS = 709 + UIDENT = 259, + FCONST = 260, + SCONST = 261, + USCONST = 262, + BCONST = 263, + XCONST = 264, + Op = 265, + ICONST = 266, + PARAM = 267, + TYPECAST = 268, + DOT_DOT = 269, + COLON_EQUALS = 270, + EQUALS_GREATER = 271, + LESS_EQUALS = 272, + GREATER_EQUALS = 273, + NOT_EQUALS = 274, + SQL_COMMENT = 275, + C_COMMENT = 276, + ABORT_P = 277, + ABSOLUTE_P = 278, + ACCESS = 279, + ACTION = 280, + ADD_P = 281, + ADMIN = 282, + AFTER = 283, + AGGREGATE = 284, + ALL = 285, + ALSO = 286, + ALTER = 287, + ALWAYS = 288, + ANALYSE = 289, + ANALYZE = 290, + AND = 291, + ANY = 292, + ARRAY = 293, + AS = 294, + ASC = 295, + ASSERTION = 296, + ASSIGNMENT = 297, + ASYMMETRIC = 298, + AT = 299, + ATTACH = 300, + ATTRIBUTE = 301, + AUTHORIZATION = 302, + BACKWARD = 303, + BEFORE = 304, + BEGIN_P = 305, + BETWEEN = 306, + BIGINT = 307, + BINARY = 308, + BIT = 309, + BOOLEAN_P = 310, + BOTH = 311, + BY = 312, + CACHE = 313, + CALL = 314, + CALLED = 315, + CASCADE = 316, + CASCADED = 317, + CASE = 318, + CAST = 319, + CATALOG_P = 320, + CHAIN = 321, + CHAR_P = 322, + CHARACTER = 323, + CHARACTERISTICS = 324, + CHECK = 325, + CHECKPOINT = 326, + CLASS = 327, + CLOSE = 328, + CLUSTER = 329, + COALESCE = 330, + COLLATE = 331, + COLLATION = 332, + COLUMN = 333, + COLUMNS = 334, + COMMENT = 335, + COMMENTS = 336, + COMMIT = 337, + COMMITTED = 338, + CONCURRENTLY = 339, + CONFIGURATION = 340, + CONFLICT = 341, + CONNECTION = 342, + CONSTRAINT = 343, + CONSTRAINTS = 344, + CONTENT_P = 345, + CONTINUE_P = 346, + CONVERSION_P = 347, + COPY = 348, + COST = 349, + CREATE = 350, + CROSS = 351, + CSV = 352, + CUBE = 353, + CURRENT_P = 354, + CURRENT_CATALOG = 355, + CURRENT_DATE = 356, + CURRENT_ROLE = 357, + CURRENT_SCHEMA = 358, + CURRENT_TIME = 359, + CURRENT_TIMESTAMP = 360, + CURRENT_USER = 361, + CURSOR = 362, + CYCLE = 363, + DATA_P = 364, + DATABASE = 365, + DAY_P = 366, + DEALLOCATE = 367, + DEC = 368, + DECIMAL_P = 369, + DECLARE = 370, + DEFAULT = 371, + DEFAULTS = 372, + DEFERRABLE = 373, + DEFERRED = 374, + DEFINER = 375, + DELETE_P = 376, + DELIMITER = 377, + DELIMITERS = 378, + DEPENDS = 379, + DESC = 380, + DETACH = 381, + DICTIONARY = 382, + DISABLE_P = 383, + DISCARD = 384, + DISTINCT = 385, + DO = 386, + DOCUMENT_P = 387, + DOMAIN_P = 388, + DOUBLE_P = 389, + DROP = 390, + EACH = 391, + ELSE = 392, + ENABLE_P = 393, + ENCODING = 394, + ENCRYPTED = 395, + END_P = 396, + ENUM_P = 397, + ESCAPE = 398, + EVENT = 399, + EXCEPT = 400, + EXCLUDE = 401, + EXCLUDING = 402, + EXCLUSIVE = 403, + EXECUTE = 404, + EXISTS = 405, + EXPLAIN = 406, + EXPRESSION = 407, + EXTENSION = 408, + EXTERNAL = 409, + EXTRACT = 410, + FALSE_P = 411, + FAMILY = 412, + FETCH = 413, + FILTER = 414, + FIRST_P = 415, + FLOAT_P = 416, + FOLLOWING = 417, + FOR = 418, + FORCE = 419, + FOREIGN = 420, + FORWARD = 421, + FREEZE = 422, + FROM = 423, + FULL = 424, + FUNCTION = 425, + FUNCTIONS = 426, + GENERATED = 427, + GLOBAL = 428, + GRANT = 429, + GRANTED = 430, + GREATEST = 431, + GROUP_P = 432, + GROUPING = 433, + GROUPS = 434, + HANDLER = 435, + HAVING = 436, + HEADER_P = 437, + HOLD = 438, + HOUR_P = 439, + IDENTITY_P = 440, + IF_P = 441, + ILIKE = 442, + IMMEDIATE = 443, + IMMUTABLE = 444, + IMPLICIT_P = 445, + IMPORT_P = 446, + IN_P = 447, + INCLUDE = 448, + INCLUDING = 449, + INCREMENT = 450, + INDEX = 451, + INDEXES = 452, + INHERIT = 453, + INHERITS = 454, + INITIALLY = 455, + INLINE_P = 456, + INNER_P = 457, + INOUT = 458, + INPUT_P = 459, + INSENSITIVE = 460, + INSERT = 461, + INSTEAD = 462, + INT_P = 463, + INTEGER = 464, + INTERSECT = 465, + INTERVAL = 466, + INTO = 467, + INVOKER = 468, + IS = 469, + ISNULL = 470, + ISOLATION = 471, + JOIN = 472, + KEY = 473, + LABEL = 474, + LANGUAGE = 475, + LARGE_P = 476, + LAST_P = 477, + LATERAL_P = 478, + LEADING = 479, + LEAKPROOF = 480, + LEAST = 481, + LEFT = 482, + LEVEL = 483, + LIKE = 484, + LIMIT = 485, + LISTEN = 486, + LOAD = 487, + LOCAL = 488, + LOCALTIME = 489, + LOCALTIMESTAMP = 490, + LOCATION = 491, + LOCK_P = 492, + LOCKED = 493, + LOGGED = 494, + MAPPING = 495, + MATCH = 496, + MATERIALIZED = 497, + MAXVALUE = 498, + METHOD = 499, + MINUTE_P = 500, + MINVALUE = 501, + MODE = 502, + MONTH_P = 503, + MOVE = 504, + NAME_P = 505, + NAMES = 506, + NATIONAL = 507, + NATURAL = 508, + NCHAR = 509, + NEW = 510, + NEXT = 511, + NFC = 512, + NFD = 513, + NFKC = 514, + NFKD = 515, + NO = 516, + NONE = 517, + NORMALIZE = 518, + NORMALIZED = 519, + NOT = 520, + NOTHING = 521, + NOTIFY = 522, + NOTNULL = 523, + NOWAIT = 524, + NULL_P = 525, + NULLIF = 526, + NULLS_P = 527, + NUMERIC = 528, + OBJECT_P = 529, + OF = 530, + OFF = 531, + OFFSET = 532, + OIDS = 533, + OLD = 534, + ON = 535, + ONLY = 536, + OPERATOR = 537, + OPTION = 538, + OPTIONS = 539, + OR = 540, + ORDER = 541, + ORDINALITY = 542, + OTHERS = 543, + OUT_P = 544, + OUTER_P = 545, + OVER = 546, + OVERLAPS = 547, + OVERLAY = 548, + OVERRIDING = 549, + OWNED = 550, + OWNER = 551, + PARALLEL = 552, + PARSER = 553, + PARTIAL = 554, + PARTITION = 555, + PASSING = 556, + PASSWORD = 557, + PLACING = 558, + PLANS = 559, + POLICY = 560, + POSITION = 561, + PRECEDING = 562, + PRECISION = 563, + PRESERVE = 564, + PREPARE = 565, + PREPARED = 566, + PRIMARY = 567, + PRIOR = 568, + PRIVILEGES = 569, + PROCEDURAL = 570, + PROCEDURE = 571, + PROCEDURES = 572, + PROGRAM = 573, + PUBLICATION = 574, + QUOTE = 575, + RANGE = 576, + READ = 577, + REAL = 578, + REASSIGN = 579, + RECHECK = 580, + RECURSIVE = 581, + REF = 582, + REFERENCES = 583, + REFERENCING = 584, + REFRESH = 585, + REINDEX = 586, + RELATIVE_P = 587, + RELEASE = 588, + RENAME = 589, + REPEATABLE = 590, + REPLACE = 591, + REPLICA = 592, + RESET = 593, + RESTART = 594, + RESTRICT = 595, + RETURNING = 596, + RETURNS = 597, + REVOKE = 598, + RIGHT = 599, + ROLE = 600, + ROLLBACK = 601, + ROLLUP = 602, + ROUTINE = 603, + ROUTINES = 604, + ROW = 605, + ROWS = 606, + RULE = 607, + SAVEPOINT = 608, + SCHEMA = 609, + SCHEMAS = 610, + SCROLL = 611, + SEARCH = 612, + SECOND_P = 613, + SECURITY = 614, + SELECT = 615, + SEQUENCE = 616, + SEQUENCES = 617, + SERIALIZABLE = 618, + SERVER = 619, + SESSION = 620, + SESSION_USER = 621, + SET = 622, + SETS = 623, + SETOF = 624, + SHARE = 625, + SHOW = 626, + SIMILAR = 627, + SIMPLE = 628, + SKIP = 629, + SMALLINT = 630, + SNAPSHOT = 631, + SOME = 632, + SQL_P = 633, + STABLE = 634, + STANDALONE_P = 635, + START = 636, + STATEMENT = 637, + STATISTICS = 638, + STDIN = 639, + STDOUT = 640, + STORAGE = 641, + STORED = 642, + STRICT_P = 643, + STRIP_P = 644, + SUBSCRIPTION = 645, + SUBSTRING = 646, + SUPPORT = 647, + SYMMETRIC = 648, + SYSID = 649, + SYSTEM_P = 650, + TABLE = 651, + TABLES = 652, + TABLESAMPLE = 653, + TABLESPACE = 654, + TEMP = 655, + TEMPLATE = 656, + TEMPORARY = 657, + TEXT_P = 658, + THEN = 659, + TIES = 660, + TIME = 661, + TIMESTAMP = 662, + TO = 663, + TRAILING = 664, + TRANSACTION = 665, + TRANSFORM = 666, + TREAT = 667, + TRIGGER = 668, + TRIM = 669, + TRUE_P = 670, + TRUNCATE = 671, + TRUSTED = 672, + TYPE_P = 673, + TYPES_P = 674, + UESCAPE = 675, + UNBOUNDED = 676, + UNCOMMITTED = 677, + UNENCRYPTED = 678, + UNION = 679, + UNIQUE = 680, + UNKNOWN = 681, + UNLISTEN = 682, + UNLOGGED = 683, + UNTIL = 684, + UPDATE = 685, + USER = 686, + USING = 687, + VACUUM = 688, + VALID = 689, + VALIDATE = 690, + VALIDATOR = 691, + VALUE_P = 692, + VALUES = 693, + VARCHAR = 694, + VARIADIC = 695, + VARYING = 696, + VERBOSE = 697, + VERSION_P = 698, + VIEW = 699, + VIEWS = 700, + VOLATILE = 701, + WHEN = 702, + WHERE = 703, + WHITESPACE_P = 704, + WINDOW = 705, + WITH = 706, + WITHIN = 707, + WITHOUT = 708, + WORK = 709, + WRAPPER = 710, + WRITE = 711, + XML_P = 712, + XMLATTRIBUTES = 713, + XMLCONCAT = 714, + XMLELEMENT = 715, + XMLEXISTS = 716, + XMLFOREST = 717, + XMLNAMESPACES = 718, + XMLPARSE = 719, + XMLPI = 720, + XMLROOT = 721, + XMLSERIALIZE = 722, + XMLTABLE = 723, + YEAR_P = 724, + YES_P = 725, + ZONE = 726, + NOT_LA = 727, + NULLS_LA = 728, + WITH_LA = 729, + POSTFIXOP = 730, + UMINUS = 731 }; #endif /* Tokens. */ #define IDENT 258 -#define FCONST 259 -#define SCONST 260 -#define BCONST 261 -#define XCONST 262 -#define Op 263 -#define ICONST 264 -#define PARAM 265 -#define TYPECAST 266 -#define DOT_DOT 267 -#define COLON_EQUALS 268 -#define EQUALS_GREATER 269 -#define LESS_EQUALS 270 -#define GREATER_EQUALS 271 -#define NOT_EQUALS 272 -#define ABORT_P 273 -#define ABSOLUTE_P 274 -#define ACCESS 275 -#define ACTION 276 -#define ADD_P 277 -#define ADMIN 278 -#define AFTER 279 -#define AGGREGATE 280 -#define ALL 281 -#define ALSO 282 -#define ALTER 283 -#define ALWAYS 284 -#define ANALYSE 285 -#define ANALYZE 286 -#define AND 287 -#define ANY 288 -#define ARRAY 289 -#define AS 290 -#define ASC 291 -#define ASSERTION 292 -#define ASSIGNMENT 293 -#define ASYMMETRIC 294 -#define AT 295 -#define ATTACH 296 -#define ATTRIBUTE 297 -#define AUTHORIZATION 298 -#define BACKWARD 299 -#define BEFORE 300 -#define BEGIN_P 301 -#define BETWEEN 302 -#define BIGINT 303 -#define BINARY 304 -#define BIT 305 -#define BOOLEAN_P 306 -#define BOTH 307 -#define BY 308 -#define CACHE 309 -#define CALLED 310 -#define CASCADE 311 -#define CASCADED 312 -#define CASE 313 -#define CAST 314 -#define CATALOG_P 315 -#define CHAIN 316 -#define CHAR_P 317 -#define CHARACTER 318 -#define CHARACTERISTICS 319 -#define CHECK 320 -#define CHECKPOINT 321 -#define CLASS 322 -#define CLOSE 323 -#define CLUSTER 324 -#define COALESCE 325 -#define COLLATE 326 -#define COLLATION 327 -#define COLUMN 328 -#define COLUMNS 329 -#define COMMENT 330 -#define COMMENTS 331 -#define COMMIT 332 -#define COMMITTED 333 -#define CONCURRENTLY 334 -#define CONFIGURATION 335 -#define CONFLICT 336 -#define CONNECTION 337 -#define CONSTRAINT 338 -#define CONSTRAINTS 339 -#define CONTENT_P 340 -#define CONTINUE_P 341 -#define CONVERSION_P 342 -#define COPY 343 -#define COST 344 -#define CREATE 345 -#define CROSS 346 -#define CSV 347 -#define CUBE 348 -#define CURRENT_P 349 -#define CURRENT_CATALOG 350 -#define CURRENT_DATE 351 -#define CURRENT_ROLE 352 -#define CURRENT_SCHEMA 353 -#define CURRENT_TIME 354 -#define CURRENT_TIMESTAMP 355 -#define CURRENT_USER 356 -#define CURSOR 357 -#define CYCLE 358 -#define DATA_P 359 -#define DATABASE 360 -#define DAY_P 361 -#define DEALLOCATE 362 -#define DEC 363 -#define DECIMAL_P 364 -#define DECLARE 365 -#define DEFAULT 366 -#define DEFAULTS 367 -#define DEFERRABLE 368 -#define DEFERRED 369 -#define DEFINER 370 -#define DELETE_P 371 -#define DELIMITER 372 -#define DELIMITERS 373 -#define DEPENDS 374 -#define DESC 375 -#define DETACH 376 -#define DICTIONARY 377 -#define DISABLE_P 378 -#define DISCARD 379 -#define DISTINCT 380 -#define DO 381 -#define DOCUMENT_P 382 -#define DOMAIN_P 383 -#define DOUBLE_P 384 -#define DROP 385 -#define EACH 386 -#define ELSE 387 -#define ENABLE_P 388 -#define ENCODING 389 -#define ENCRYPTED 390 -#define END_P 391 -#define ENUM_P 392 -#define ESCAPE 393 -#define EVENT 394 -#define EXCEPT 395 -#define EXCLUDE 396 -#define EXCLUDING 397 -#define EXCLUSIVE 398 -#define EXECUTE 399 -#define EXISTS 400 -#define EXPLAIN 401 -#define EXTENSION 402 -#define EXTERNAL 403 -#define EXTRACT 404 -#define FALSE_P 405 -#define FAMILY 406 -#define FETCH 407 -#define FILTER 408 -#define FIRST_P 409 -#define FLOAT_P 410 -#define FOLLOWING 411 -#define FOR 412 -#define FORCE 413 -#define FOREIGN 414 -#define FORWARD 415 -#define FREEZE 416 -#define FROM 417 -#define FULL 418 -#define FUNCTION 419 -#define FUNCTIONS 420 -#define GENERATED 421 -#define GLOBAL 422 -#define GRANT 423 -#define GRANTED 424 -#define GREATEST 425 -#define GROUP_P 426 -#define GROUPING 427 -#define HANDLER 428 -#define HAVING 429 -#define HEADER_P 430 -#define HOLD 431 -#define HOUR_P 432 -#define IDENTITY_P 433 -#define IF_P 434 -#define ILIKE 435 -#define IMMEDIATE 436 -#define IMMUTABLE 437 -#define IMPLICIT_P 438 -#define IMPORT_P 439 -#define IN_P 440 -#define INCLUDING 441 -#define INCREMENT 442 -#define INDEX 443 -#define INDEXES 444 -#define INHERIT 445 -#define INHERITS 446 -#define INITIALLY 447 -#define INLINE_P 448 -#define INNER_P 449 -#define INOUT 450 -#define INPUT_P 451 -#define INSENSITIVE 452 -#define INSERT 453 -#define INSTEAD 454 -#define INT_P 455 -#define INTEGER 456 -#define INTERSECT 457 -#define INTERVAL 458 -#define INTO 459 -#define INVOKER 460 -#define IS 461 -#define ISNULL 462 -#define ISOLATION 463 -#define JOIN 464 -#define KEY 465 -#define LABEL 466 -#define LANGUAGE 467 -#define LARGE_P 468 -#define LAST_P 469 -#define LATERAL_P 470 -#define LEADING 471 -#define LEAKPROOF 472 -#define LEAST 473 -#define LEFT 474 -#define LEVEL 475 -#define LIKE 476 -#define LIMIT 477 -#define LISTEN 478 -#define LOAD 479 -#define LOCAL 480 -#define LOCALTIME 481 -#define LOCALTIMESTAMP 482 -#define LOCATION 483 -#define LOCK_P 484 -#define LOCKED 485 -#define LOGGED 486 -#define MAPPING 487 -#define MATCH 488 -#define MATERIALIZED 489 -#define MAXVALUE 490 -#define METHOD 491 -#define MINUTE_P 492 -#define MINVALUE 493 -#define MODE 494 -#define MONTH_P 495 -#define MOVE 496 -#define NAME_P 497 -#define NAMES 498 -#define NATIONAL 499 -#define NATURAL 500 -#define NCHAR 501 -#define NEW 502 -#define NEXT 503 -#define NO 504 -#define NONE 505 -#define NOT 506 -#define NOTHING 507 -#define NOTIFY 508 -#define NOTNULL 509 -#define NOWAIT 510 -#define NULL_P 511 -#define NULLIF 512 -#define NULLS_P 513 -#define NUMERIC 514 -#define OBJECT_P 515 -#define OF 516 -#define OFF 517 -#define OFFSET 518 -#define OIDS 519 -#define OLD 520 -#define ON 521 -#define ONLY 522 -#define OPERATOR 523 -#define OPTION 524 -#define OPTIONS 525 -#define OR 526 -#define ORDER 527 -#define ORDINALITY 528 -#define OUT_P 529 -#define OUTER_P 530 -#define OVER 531 -#define OVERLAPS 532 -#define OVERLAY 533 -#define OVERRIDING 534 -#define OWNED 535 -#define OWNER 536 -#define PARALLEL 537 -#define PARSER 538 -#define PARTIAL 539 -#define PARTITION 540 -#define PASSING 541 -#define PASSWORD 542 -#define PLACING 543 -#define PLANS 544 -#define POLICY 545 -#define POSITION 546 -#define PRECEDING 547 -#define PRECISION 548 -#define PRESERVE 549 -#define PREPARE 550 -#define PREPARED 551 -#define PRIMARY 552 -#define PRIOR 553 -#define PRIVILEGES 554 -#define PROCEDURAL 555 -#define PROCEDURE 556 -#define PROGRAM 557 -#define PUBLICATION 558 -#define QUOTE 559 -#define RANGE 560 -#define READ 561 -#define REAL 562 -#define REASSIGN 563 -#define RECHECK 564 -#define RECURSIVE 565 -#define REF 566 -#define REFERENCES 567 -#define REFERENCING 568 -#define REFRESH 569 -#define REINDEX 570 -#define RELATIVE_P 571 -#define RELEASE 572 -#define RENAME 573 -#define REPEATABLE 574 -#define REPLACE 575 -#define REPLICA 576 -#define RESET 577 -#define RESTART 578 -#define RESTRICT 579 -#define RETURNING 580 -#define RETURNS 581 -#define REVOKE 582 -#define RIGHT 583 -#define ROLE 584 -#define ROLLBACK 585 -#define ROLLUP 586 -#define ROW 587 -#define ROWS 588 -#define RULE 589 -#define SAVEPOINT 590 -#define SCHEMA 591 -#define SCHEMAS 592 -#define SCROLL 593 -#define SEARCH 594 -#define SECOND_P 595 -#define SECURITY 596 -#define SELECT 597 -#define SEQUENCE 598 -#define SEQUENCES 599 -#define SERIALIZABLE 600 -#define SERVER 601 -#define SESSION 602 -#define SESSION_USER 603 -#define SET 604 -#define SETS 605 -#define SETOF 606 -#define SHARE 607 -#define SHOW 608 -#define SIMILAR 609 -#define SIMPLE 610 -#define SKIP 611 -#define SMALLINT 612 -#define SNAPSHOT 613 -#define SOME 614 -#define SQL_P 615 -#define STABLE 616 -#define STANDALONE_P 617 -#define START 618 -#define STATEMENT 619 -#define STATISTICS 620 -#define STDIN 621 -#define STDOUT 622 -#define STORAGE 623 -#define STRICT_P 624 -#define STRIP_P 625 -#define SUBSCRIPTION 626 -#define SUBSTRING 627 -#define SYMMETRIC 628 -#define SYSID 629 -#define SYSTEM_P 630 -#define TABLE 631 -#define TABLES 632 -#define TABLESAMPLE 633 -#define TABLESPACE 634 -#define TEMP 635 -#define TEMPLATE 636 -#define TEMPORARY 637 -#define TEXT_P 638 -#define THEN 639 -#define TIME 640 -#define TIMESTAMP 641 -#define TO 642 -#define TRAILING 643 -#define TRANSACTION 644 -#define TRANSFORM 645 -#define TREAT 646 -#define TRIGGER 647 -#define TRIM 648 -#define TRUE_P 649 -#define TRUNCATE 650 -#define TRUSTED 651 -#define TYPE_P 652 -#define TYPES_P 653 -#define UNBOUNDED 654 -#define UNCOMMITTED 655 -#define UNENCRYPTED 656 -#define UNION 657 -#define UNIQUE 658 -#define UNKNOWN 659 -#define UNLISTEN 660 -#define UNLOGGED 661 -#define UNTIL 662 -#define UPDATE 663 -#define USER 664 -#define USING 665 -#define VACUUM 666 -#define VALID 667 -#define VALIDATE 668 -#define VALIDATOR 669 -#define VALUE_P 670 -#define VALUES 671 -#define VARCHAR 672 -#define VARIADIC 673 -#define VARYING 674 -#define VERBOSE 675 -#define VERSION_P 676 -#define VIEW 677 -#define VIEWS 678 -#define VOLATILE 679 -#define WHEN 680 -#define WHERE 681 -#define WHITESPACE_P 682 -#define WINDOW 683 -#define WITH 684 -#define WITHIN 685 -#define WITHOUT 686 -#define WORK 687 -#define WRAPPER 688 -#define WRITE 689 -#define XML_P 690 -#define XMLATTRIBUTES 691 -#define XMLCONCAT 692 -#define XMLELEMENT 693 -#define XMLEXISTS 694 -#define XMLFOREST 695 -#define XMLNAMESPACES 696 -#define XMLPARSE 697 -#define XMLPI 698 -#define XMLROOT 699 -#define XMLSERIALIZE 700 -#define XMLTABLE 701 -#define YEAR_P 702 -#define YES_P 703 -#define ZONE 704 -#define NOT_LA 705 -#define NULLS_LA 706 -#define WITH_LA 707 -#define POSTFIXOP 708 -#define UMINUS 709 +#define UIDENT 259 +#define FCONST 260 +#define SCONST 261 +#define USCONST 262 +#define BCONST 263 +#define XCONST 264 +#define Op 265 +#define ICONST 266 +#define PARAM 267 +#define TYPECAST 268 +#define DOT_DOT 269 +#define COLON_EQUALS 270 +#define EQUALS_GREATER 271 +#define LESS_EQUALS 272 +#define GREATER_EQUALS 273 +#define NOT_EQUALS 274 +#define SQL_COMMENT 275 +#define C_COMMENT 276 +#define ABORT_P 277 +#define ABSOLUTE_P 278 +#define ACCESS 279 +#define ACTION 280 +#define ADD_P 281 +#define ADMIN 282 +#define AFTER 283 +#define AGGREGATE 284 +#define ALL 285 +#define ALSO 286 +#define ALTER 287 +#define ALWAYS 288 +#define ANALYSE 289 +#define ANALYZE 290 +#define AND 291 +#define ANY 292 +#define ARRAY 293 +#define AS 294 +#define ASC 295 +#define ASSERTION 296 +#define ASSIGNMENT 297 +#define ASYMMETRIC 298 +#define AT 299 +#define ATTACH 300 +#define ATTRIBUTE 301 +#define AUTHORIZATION 302 +#define BACKWARD 303 +#define BEFORE 304 +#define BEGIN_P 305 +#define BETWEEN 306 +#define BIGINT 307 +#define BINARY 308 +#define BIT 309 +#define BOOLEAN_P 310 +#define BOTH 311 +#define BY 312 +#define CACHE 313 +#define CALL 314 +#define CALLED 315 +#define CASCADE 316 +#define CASCADED 317 +#define CASE 318 +#define CAST 319 +#define CATALOG_P 320 +#define CHAIN 321 +#define CHAR_P 322 +#define CHARACTER 323 +#define CHARACTERISTICS 324 +#define CHECK 325 +#define CHECKPOINT 326 +#define CLASS 327 +#define CLOSE 328 +#define CLUSTER 329 +#define COALESCE 330 +#define COLLATE 331 +#define COLLATION 332 +#define COLUMN 333 +#define COLUMNS 334 +#define COMMENT 335 +#define COMMENTS 336 +#define COMMIT 337 +#define COMMITTED 338 +#define CONCURRENTLY 339 +#define CONFIGURATION 340 +#define CONFLICT 341 +#define CONNECTION 342 +#define CONSTRAINT 343 +#define CONSTRAINTS 344 +#define CONTENT_P 345 +#define CONTINUE_P 346 +#define CONVERSION_P 347 +#define COPY 348 +#define COST 349 +#define CREATE 350 +#define CROSS 351 +#define CSV 352 +#define CUBE 353 +#define CURRENT_P 354 +#define CURRENT_CATALOG 355 +#define CURRENT_DATE 356 +#define CURRENT_ROLE 357 +#define CURRENT_SCHEMA 358 +#define CURRENT_TIME 359 +#define CURRENT_TIMESTAMP 360 +#define CURRENT_USER 361 +#define CURSOR 362 +#define CYCLE 363 +#define DATA_P 364 +#define DATABASE 365 +#define DAY_P 366 +#define DEALLOCATE 367 +#define DEC 368 +#define DECIMAL_P 369 +#define DECLARE 370 +#define DEFAULT 371 +#define DEFAULTS 372 +#define DEFERRABLE 373 +#define DEFERRED 374 +#define DEFINER 375 +#define DELETE_P 376 +#define DELIMITER 377 +#define DELIMITERS 378 +#define DEPENDS 379 +#define DESC 380 +#define DETACH 381 +#define DICTIONARY 382 +#define DISABLE_P 383 +#define DISCARD 384 +#define DISTINCT 385 +#define DO 386 +#define DOCUMENT_P 387 +#define DOMAIN_P 388 +#define DOUBLE_P 389 +#define DROP 390 +#define EACH 391 +#define ELSE 392 +#define ENABLE_P 393 +#define ENCODING 394 +#define ENCRYPTED 395 +#define END_P 396 +#define ENUM_P 397 +#define ESCAPE 398 +#define EVENT 399 +#define EXCEPT 400 +#define EXCLUDE 401 +#define EXCLUDING 402 +#define EXCLUSIVE 403 +#define EXECUTE 404 +#define EXISTS 405 +#define EXPLAIN 406 +#define EXPRESSION 407 +#define EXTENSION 408 +#define EXTERNAL 409 +#define EXTRACT 410 +#define FALSE_P 411 +#define FAMILY 412 +#define FETCH 413 +#define FILTER 414 +#define FIRST_P 415 +#define FLOAT_P 416 +#define FOLLOWING 417 +#define FOR 418 +#define FORCE 419 +#define FOREIGN 420 +#define FORWARD 421 +#define FREEZE 422 +#define FROM 423 +#define FULL 424 +#define FUNCTION 425 +#define FUNCTIONS 426 +#define GENERATED 427 +#define GLOBAL 428 +#define GRANT 429 +#define GRANTED 430 +#define GREATEST 431 +#define GROUP_P 432 +#define GROUPING 433 +#define GROUPS 434 +#define HANDLER 435 +#define HAVING 436 +#define HEADER_P 437 +#define HOLD 438 +#define HOUR_P 439 +#define IDENTITY_P 440 +#define IF_P 441 +#define ILIKE 442 +#define IMMEDIATE 443 +#define IMMUTABLE 444 +#define IMPLICIT_P 445 +#define IMPORT_P 446 +#define IN_P 447 +#define INCLUDE 448 +#define INCLUDING 449 +#define INCREMENT 450 +#define INDEX 451 +#define INDEXES 452 +#define INHERIT 453 +#define INHERITS 454 +#define INITIALLY 455 +#define INLINE_P 456 +#define INNER_P 457 +#define INOUT 458 +#define INPUT_P 459 +#define INSENSITIVE 460 +#define INSERT 461 +#define INSTEAD 462 +#define INT_P 463 +#define INTEGER 464 +#define INTERSECT 465 +#define INTERVAL 466 +#define INTO 467 +#define INVOKER 468 +#define IS 469 +#define ISNULL 470 +#define ISOLATION 471 +#define JOIN 472 +#define KEY 473 +#define LABEL 474 +#define LANGUAGE 475 +#define LARGE_P 476 +#define LAST_P 477 +#define LATERAL_P 478 +#define LEADING 479 +#define LEAKPROOF 480 +#define LEAST 481 +#define LEFT 482 +#define LEVEL 483 +#define LIKE 484 +#define LIMIT 485 +#define LISTEN 486 +#define LOAD 487 +#define LOCAL 488 +#define LOCALTIME 489 +#define LOCALTIMESTAMP 490 +#define LOCATION 491 +#define LOCK_P 492 +#define LOCKED 493 +#define LOGGED 494 +#define MAPPING 495 +#define MATCH 496 +#define MATERIALIZED 497 +#define MAXVALUE 498 +#define METHOD 499 +#define MINUTE_P 500 +#define MINVALUE 501 +#define MODE 502 +#define MONTH_P 503 +#define MOVE 504 +#define NAME_P 505 +#define NAMES 506 +#define NATIONAL 507 +#define NATURAL 508 +#define NCHAR 509 +#define NEW 510 +#define NEXT 511 +#define NFC 512 +#define NFD 513 +#define NFKC 514 +#define NFKD 515 +#define NO 516 +#define NONE 517 +#define NORMALIZE 518 +#define NORMALIZED 519 +#define NOT 520 +#define NOTHING 521 +#define NOTIFY 522 +#define NOTNULL 523 +#define NOWAIT 524 +#define NULL_P 525 +#define NULLIF 526 +#define NULLS_P 527 +#define NUMERIC 528 +#define OBJECT_P 529 +#define OF 530 +#define OFF 531 +#define OFFSET 532 +#define OIDS 533 +#define OLD 534 +#define ON 535 +#define ONLY 536 +#define OPERATOR 537 +#define OPTION 538 +#define OPTIONS 539 +#define OR 540 +#define ORDER 541 +#define ORDINALITY 542 +#define OTHERS 543 +#define OUT_P 544 +#define OUTER_P 545 +#define OVER 546 +#define OVERLAPS 547 +#define OVERLAY 548 +#define OVERRIDING 549 +#define OWNED 550 +#define OWNER 551 +#define PARALLEL 552 +#define PARSER 553 +#define PARTIAL 554 +#define PARTITION 555 +#define PASSING 556 +#define PASSWORD 557 +#define PLACING 558 +#define PLANS 559 +#define POLICY 560 +#define POSITION 561 +#define PRECEDING 562 +#define PRECISION 563 +#define PRESERVE 564 +#define PREPARE 565 +#define PREPARED 566 +#define PRIMARY 567 +#define PRIOR 568 +#define PRIVILEGES 569 +#define PROCEDURAL 570 +#define PROCEDURE 571 +#define PROCEDURES 572 +#define PROGRAM 573 +#define PUBLICATION 574 +#define QUOTE 575 +#define RANGE 576 +#define READ 577 +#define REAL 578 +#define REASSIGN 579 +#define RECHECK 580 +#define RECURSIVE 581 +#define REF 582 +#define REFERENCES 583 +#define REFERENCING 584 +#define REFRESH 585 +#define REINDEX 586 +#define RELATIVE_P 587 +#define RELEASE 588 +#define RENAME 589 +#define REPEATABLE 590 +#define REPLACE 591 +#define REPLICA 592 +#define RESET 593 +#define RESTART 594 +#define RESTRICT 595 +#define RETURNING 596 +#define RETURNS 597 +#define REVOKE 598 +#define RIGHT 599 +#define ROLE 600 +#define ROLLBACK 601 +#define ROLLUP 602 +#define ROUTINE 603 +#define ROUTINES 604 +#define ROW 605 +#define ROWS 606 +#define RULE 607 +#define SAVEPOINT 608 +#define SCHEMA 609 +#define SCHEMAS 610 +#define SCROLL 611 +#define SEARCH 612 +#define SECOND_P 613 +#define SECURITY 614 +#define SELECT 615 +#define SEQUENCE 616 +#define SEQUENCES 617 +#define SERIALIZABLE 618 +#define SERVER 619 +#define SESSION 620 +#define SESSION_USER 621 +#define SET 622 +#define SETS 623 +#define SETOF 624 +#define SHARE 625 +#define SHOW 626 +#define SIMILAR 627 +#define SIMPLE 628 +#define SKIP 629 +#define SMALLINT 630 +#define SNAPSHOT 631 +#define SOME 632 +#define SQL_P 633 +#define STABLE 634 +#define STANDALONE_P 635 +#define START 636 +#define STATEMENT 637 +#define STATISTICS 638 +#define STDIN 639 +#define STDOUT 640 +#define STORAGE 641 +#define STORED 642 +#define STRICT_P 643 +#define STRIP_P 644 +#define SUBSCRIPTION 645 +#define SUBSTRING 646 +#define SUPPORT 647 +#define SYMMETRIC 648 +#define SYSID 649 +#define SYSTEM_P 650 +#define TABLE 651 +#define TABLES 652 +#define TABLESAMPLE 653 +#define TABLESPACE 654 +#define TEMP 655 +#define TEMPLATE 656 +#define TEMPORARY 657 +#define TEXT_P 658 +#define THEN 659 +#define TIES 660 +#define TIME 661 +#define TIMESTAMP 662 +#define TO 663 +#define TRAILING 664 +#define TRANSACTION 665 +#define TRANSFORM 666 +#define TREAT 667 +#define TRIGGER 668 +#define TRIM 669 +#define TRUE_P 670 +#define TRUNCATE 671 +#define TRUSTED 672 +#define TYPE_P 673 +#define TYPES_P 674 +#define UESCAPE 675 +#define UNBOUNDED 676 +#define UNCOMMITTED 677 +#define UNENCRYPTED 678 +#define UNION 679 +#define UNIQUE 680 +#define UNKNOWN 681 +#define UNLISTEN 682 +#define UNLOGGED 683 +#define UNTIL 684 +#define UPDATE 685 +#define USER 686 +#define USING 687 +#define VACUUM 688 +#define VALID 689 +#define VALIDATE 690 +#define VALIDATOR 691 +#define VALUE_P 692 +#define VALUES 693 +#define VARCHAR 694 +#define VARIADIC 695 +#define VARYING 696 +#define VERBOSE 697 +#define VERSION_P 698 +#define VIEW 699 +#define VIEWS 700 +#define VOLATILE 701 +#define WHEN 702 +#define WHERE 703 +#define WHITESPACE_P 704 +#define WINDOW 705 +#define WITH 706 +#define WITHIN 707 +#define WITHOUT 708 +#define WORK 709 +#define WRAPPER 710 +#define WRITE 711 +#define XML_P 712 +#define XMLATTRIBUTES 713 +#define XMLCONCAT 714 +#define XMLELEMENT 715 +#define XMLEXISTS 716 +#define XMLFOREST 717 +#define XMLNAMESPACES 718 +#define XMLPARSE 719 +#define XMLPI 720 +#define XMLROOT 721 +#define XMLSERIALIZE 722 +#define XMLTABLE 723 +#define YEAR_P 724 +#define YES_P 725 +#define ZONE 726 +#define NOT_LA 727 +#define NULLS_LA 728 +#define WITH_LA 729 +#define POSTFIXOP 730 +#define UMINUS 731 @@ -1054,7 +1098,7 @@ * gram.y * POSTGRESQL BISON rules/actions * - * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * @@ -1096,6 +1140,7 @@ #include #include +#include "access/tableam.h" #include "catalog/index.h" #include "catalog/namespace.h" #include "catalog/pg_am.h" @@ -1163,7 +1208,7 @@ typedef struct PrivTarget { GrantTargetType targtype; - GrantObjectType objtype; + ObjectType objtype; List *objs; } PrivTarget; @@ -1174,6 +1219,14 @@ typedef struct ImportQual List *table_names; } ImportQual; +/* Private struct for the result of opt_select_limit production */ +typedef struct SelectLimit +{ + Node *limitOffset; + Node *limitCount; + LimitOption limitOption; +} SelectLimit; + /* ConstraintAttributeSpec yields an integer bitmask of these flags: */ #define CAS_NOT_DEFERRABLE 0x01 #define CAS_DEFERRABLE 0x02 @@ -1214,7 +1267,7 @@ static List *makeOrderedSetArgs(List *directargs, List *orderedargs, core_yyscan_t yyscanner); static void insertSelectOptions(SelectStmt *stmt, List *sortClause, List *lockingClause, - Node *limitOffset, Node *limitCount, + SelectLimit *limitClause, WithClause *withClause, core_yyscan_t yyscanner); static Node *makeSetOp(SetOperation op, bool all, Node *larg, Node *rarg); @@ -1261,7 +1314,7 @@ static Node *makeRecursiveViewSelect(char *relname, List *aliases, Node *query); #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED typedef union YYSTYPE -#line 205 "gram.y" +#line 214 "gram.y" { core_YYSTYPE core_yystype; /* these fields must match core_YYSTYPE: */ @@ -1304,9 +1357,10 @@ typedef union YYSTYPE PartitionSpec *partspec; PartitionBoundSpec *partboundspec; RoleSpec *rolespec; + struct SelectLimit *selectlimit; } /* Line 193 of yacc.c. */ -#line 1251 "gram.c" +#line 1305 "gram.c" YYSTYPE; # define yystype YYSTYPE /* obsolescent; will be withdrawn */ # define YYSTYPE_IS_DECLARED 1 @@ -1331,7 +1385,7 @@ typedef struct YYLTYPE /* Line 216 of yacc.c. */ -#line 1276 "gram.c" +#line 1330 "gram.c" #ifdef short # undef short @@ -1546,22 +1600,22 @@ union yyalloc #endif /* YYFINAL -- State number of the termination state. */ -#define YYFINAL 784 +#define YYFINAL 837 /* YYLAST -- Last index in YYTABLE. */ -#define YYLAST 100527 +#define YYLAST 105637 /* YYNTOKENS -- Number of terminals. */ -#define YYNTOKENS 473 +#define YYNTOKENS 495 /* YYNNTS -- Number of nonterminals. */ -#define YYNNTS 657 +#define YYNNTS 673 /* YYNRULES -- Number of rules. */ -#define YYNRULES 2681 +#define YYNRULES 2788 /* YYNRULES -- Number of states. */ -#define YYNSTATES 5349 +#define YYNSTATES 5592 /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */ #define YYUNDEFTOK 2 -#define YYMAXUTOK 709 +#define YYMAXUTOK 731 #define YYTRANSLATE(YYX) \ ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK) @@ -1572,13 +1626,13 @@ static const yytype_uint16 yytranslate[] = 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 461, 2, 2, - 467, 468, 459, 457, 471, 458, 469, 460, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 472, 470, - 453, 455, 454, 463, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 484, 2, 2, + 489, 490, 482, 480, 493, 481, 491, 483, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 494, 492, + 475, 477, 476, 478, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 465, 2, 466, 462, 2, 2, 2, 2, 2, + 2, 487, 2, 488, 485, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, @@ -1639,7 +1693,10 @@ static const yytype_uint16 yytranslate[] = 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, - 445, 446, 447, 448, 449, 450, 451, 452, 456, 464 + 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, + 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, + 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, + 479, 486 }; #if YYDEBUG @@ -1659,1516 +1716,1585 @@ static const yytype_uint16 yyprhs[] = 181, 183, 185, 187, 189, 191, 193, 195, 197, 199, 201, 203, 205, 207, 209, 211, 213, 215, 217, 219, 221, 223, 225, 227, 229, 231, 233, 235, 237, 239, - 241, 243, 245, 247, 249, 251, 253, 255, 257, 258, - 264, 266, 268, 269, 272, 273, 276, 277, 280, 283, - 287, 291, 293, 297, 301, 304, 306, 308, 311, 314, - 317, 321, 325, 331, 337, 343, 344, 348, 354, 360, - 366, 372, 376, 382, 386, 392, 396, 402, 408, 415, - 417, 419, 426, 431, 441, 449, 451, 452, 455, 456, - 458, 460, 462, 464, 466, 468, 471, 475, 479, 482, - 488, 490, 494, 498, 502, 506, 508, 512, 516, 519, - 522, 525, 528, 532, 536, 540, 544, 546, 550, 552, - 556, 558, 560, 562, 565, 568, 571, 573, 575, 577, - 579, 581, 583, 585, 589, 595, 597, 599, 601, 603, - 605, 606, 608, 610, 613, 615, 618, 622, 625, 627, - 629, 632, 634, 637, 639, 642, 646, 651, 655, 658, - 663, 665, 667, 669, 671, 673, 676, 679, 682, 685, - 688, 693, 700, 705, 712, 723, 737, 742, 749, 760, - 774, 779, 786, 791, 798, 804, 812, 824, 839, 841, - 845, 850, 854, 857, 863, 867, 874, 879, 886, 893, - 900, 906, 912, 919, 929, 934, 940, 948, 955, 960, - 969, 974, 977, 982, 986, 993, 998, 1002, 1006, 1010, - 1014, 1017, 1020, 1024, 1029, 1034, 1038, 1042, 1046, 1050, - 1054, 1058, 1063, 1068, 1072, 1075, 1079, 1082, 1085, 1089, - 1093, 1096, 1099, 1103, 1108, 1113, 1118, 1124, 1126, 1130, - 1133, 1135, 1137, 1138, 1141, 1142, 1145, 1146, 1148, 1150, - 1152, 1156, 1160, 1163, 1164, 1166, 1170, 1174, 1176, 1182, - 1186, 1188, 1191, 1193, 1197, 1200, 1204, 1211, 1222, 1224, - 1226, 1228, 1230, 1232, 1234, 1238, 1240, 1244, 1246, 1248, - 1250, 1255, 1257, 1261, 1266, 1273, 1278, 1287, 1290, 1293, - 1305, 1315, 1317, 1319, 1321, 1322, 1324, 1326, 1328, 1330, - 1334, 1337, 1338, 1340, 1342, 1344, 1348, 1352, 1354, 1356, - 1360, 1364, 1368, 1372, 1377, 1381, 1384, 1386, 1387, 1390, - 1391, 1395, 1396, 1398, 1399, 1401, 1405, 1408, 1410, 1412, - 1414, 1418, 1419, 1421, 1425, 1427, 1440, 1456, 1468, 1483, - 1497, 1514, 1516, 1518, 1521, 1524, 1527, 1530, 1532, 1533, - 1535, 1536, 1540, 1541, 1543, 1547, 1549, 1553, 1555, 1557, - 1559, 1561, 1563, 1568, 1571, 1576, 1579, 1580, 1584, 1586, - 1588, 1591, 1594, 1596, 1600, 1605, 1611, 1614, 1620, 1626, - 1628, 1631, 1633, 1636, 1639, 1642, 1646, 1650, 1654, 1655, - 1657, 1659, 1661, 1663, 1665, 1667, 1669, 1671, 1675, 1677, - 1683, 1691, 1695, 1704, 1709, 1719, 1731, 1734, 1735, 1739, - 1740, 1742, 1746, 1748, 1751, 1754, 1757, 1758, 1760, 1764, - 1768, 1775, 1780, 1781, 1783, 1785, 1788, 1791, 1792, 1796, - 1800, 1803, 1805, 1807, 1810, 1813, 1818, 1819, 1821, 1822, - 1829, 1831, 1833, 1835, 1839, 1843, 1847, 1853, 1856, 1859, - 1862, 1863, 1867, 1872, 1877, 1878, 1881, 1882, 1887, 1888, - 1892, 1901, 1913, 1921, 1932, 1938, 1941, 1945, 1946, 1955, - 1967, 1972, 1974, 1975, 1982, 1988, 1997, 2002, 2009, 2011, - 2012, 2016, 2017, 2019, 2022, 2025, 2028, 2030, 2033, 2037, - 2040, 2043, 2046, 2049, 2053, 2057, 2061, 2063, 2067, 2069, - 2070, 2072, 2075, 2078, 2080, 2082, 2086, 2093, 2104, 2106, - 2107, 2109, 2112, 2115, 2116, 2119, 2122, 2124, 2125, 2131, - 2139, 2141, 2142, 2150, 2153, 2154, 2158, 2164, 2170, 2179, - 2182, 2183, 2186, 2189, 2192, 2194, 2200, 2203, 2204, 2207, - 2215, 2222, 2233, 2240, 2247, 2254, 2261, 2269, 2276, 2286, - 2296, 2303, 2311, 2318, 2327, 2336, 2345, 2354, 2361, 2368, - 2376, 2384, 2393, 2400, 2410, 2417, 2425, 2428, 2431, 2434, - 2437, 2439, 2442, 2444, 2445, 2453, 2460, 2465, 2466, 2468, - 2472, 2477, 2479, 2483, 2485, 2488, 2491, 2494, 2497, 2499, - 2501, 2512, 2526, 2529, 2530, 2533, 2536, 2538, 2539, 2545, - 2550, 2555, 2567, 2582, 2595, 2611, 2617, 2625, 2637, 2640, - 2642, 2647, 2648, 2657, 2669, 2671, 2673, 2681, 2691, 2700, - 2711, 2720, 2725, 2726, 2732, 2733, 2736, 2737, 2740, 2741, - 2744, 2745, 2748, 2749, 2751, 2753, 2755, 2757, 2759, 2768, - 2785, 2806, 2808, 2810, 2813, 2815, 2819, 2821, 2823, 2825, - 2829, 2831, 2834, 2835, 2837, 2840, 2845, 2847, 2849, 2851, - 2853, 2855, 2859, 2860, 2862, 2863, 2865, 2867, 2872, 2873, - 2875, 2879, 2880, 2882, 2884, 2886, 2888, 2891, 2892, 2893, - 2896, 2899, 2901, 2904, 2907, 2910, 2913, 2925, 2939, 2941, - 2945, 2951, 2953, 2957, 2963, 2965, 2968, 2971, 2973, 2982, - 2987, 2993, 2998, 3003, 3008, 3012, 3020, 3029, 3036, 3043, - 3050, 3057, 3064, 3069, 3077, 3083, 3092, 3096, 3098, 3102, - 3106, 3108, 3110, 3112, 3114, 3116, 3118, 3120, 3124, 3126, - 3130, 3134, 3136, 3137, 3139, 3143, 3151, 3161, 3171, 3180, - 3184, 3185, 3199, 3201, 3205, 3211, 3217, 3221, 3228, 3231, - 3233, 3234, 3237, 3238, 3241, 3246, 3247, 3249, 3250, 3257, - 3266, 3275, 3277, 3281, 3287, 3293, 3301, 3311, 3319, 3329, - 3335, 3342, 3349, 3354, 3361, 3366, 3373, 3382, 3387, 3394, - 3399, 3406, 3412, 3420, 3422, 3424, 3426, 3429, 3431, 3434, - 3436, 3438, 3440, 3444, 3448, 3452, 3456, 3459, 3462, 3464, - 3468, 3470, 3472, 3474, 3476, 3478, 3480, 3482, 3486, 3488, - 3491, 3494, 3498, 3500, 3504, 3510, 3513, 3516, 3517, 3524, - 3531, 3538, 3545, 3552, 3559, 3566, 3575, 3585, 3594, 3603, - 3613, 3622, 3632, 3642, 3650, 3661, 3663, 3665, 3667, 3669, - 3671, 3673, 3676, 3678, 3680, 3683, 3687, 3691, 3695, 3699, - 3702, 3704, 3707, 3709, 3713, 3716, 3718, 3720, 3722, 3724, - 3726, 3728, 3730, 3732, 3741, 3750, 3759, 3768, 3777, 3786, - 3796, 3799, 3800, 3802, 3805, 3807, 3809, 3811, 3814, 3816, - 3819, 3822, 3824, 3826, 3828, 3830, 3832, 3834, 3836, 3839, - 3842, 3844, 3847, 3851, 3855, 3859, 3863, 3868, 3873, 3877, - 3881, 3885, 3890, 3895, 3899, 3904, 3909, 3911, 3913, 3915, - 3916, 3924, 3932, 3943, 3945, 3947, 3950, 3955, 3961, 3963, - 3967, 3970, 3973, 3976, 3979, 3981, 3984, 3987, 3992, 3996, - 3999, 4002, 4005, 4008, 4012, 4015, 4018, 4021, 4027, 4033, - 4039, 4041, 4045, 4047, 4050, 4054, 4055, 4062, 4069, 4079, - 4083, 4084, 4088, 4089, 4095, 4098, 4099, 4103, 4107, 4111, - 4119, 4127, 4138, 4140, 4142, 4144, 4146, 4148, 4163, 4181, - 4183, 4184, 4186, 4187, 4189, 4190, 4193, 4194, 4196, 4200, - 4206, 4212, 4220, 4223, 4224, 4226, 4227, 4229, 4231, 4232, - 4235, 4238, 4239, 4249, 4262, 4270, 4273, 4274, 4278, 4281, - 4283, 4287, 4289, 4293, 4296, 4298, 4300, 4303, 4307, 4310, - 4312, 4316, 4320, 4324, 4327, 4330, 4332, 4334, 4336, 4338, - 4341, 4343, 4345, 4347, 4349, 4354, 4360, 4362, 4366, 4370, - 4372, 4376, 4380, 4386, 4393, 4395, 4399, 4402, 4404, 4408, - 4410, 4413, 4418, 4424, 4426, 4428, 4430, 4432, 4436, 4440, - 4443, 4446, 4448, 4451, 4454, 4457, 4459, 4462, 4465, 4468, - 4471, 4473, 4475, 4477, 4481, 4485, 4491, 4494, 4495, 4498, - 4500, 4504, 4510, 4512, 4515, 4517, 4518, 4523, 4530, 4535, - 4542, 4547, 4554, 4558, 4564, 4570, 4576, 4578, 4582, 4584, - 4588, 4591, 4594, 4596, 4599, 4601, 4604, 4616, 4627, 4638, - 4641, 4644, 4645, 4655, 4658, 4659, 4670, 4682, 4694, 4700, - 4706, 4715, 4719, 4723, 4730, 4737, 4739, 4741, 4743, 4745, - 4747, 4749, 4753, 4755, 4761, 4767, 4774, 4781, 4788, 4795, - 4802, 4811, 4820, 4827, 4834, 4842, 4852, 4862, 4871, 4882, - 4889, 4896, 4903, 4910, 4917, 4926, 4933, 4942, 4949, 4958, - 4966, 4976, 4983, 4992, 5000, 5010, 5019, 5030, 5040, 5052, - 5061, 5072, 5082, 5094, 5103, 5112, 5120, 5127, 5134, 5141, - 5148, 5157, 5166, 5175, 5184, 5191, 5201, 5203, 5204, 5207, - 5208, 5216, 5226, 5235, 5243, 5250, 5257, 5264, 5271, 5278, - 5285, 5292, 5302, 5312, 5319, 5328, 5335, 5344, 5353, 5362, - 5371, 5378, 5387, 5394, 5403, 5411, 5421, 5429, 5439, 5446, - 5454, 5456, 5460, 5464, 5468, 5470, 5472, 5474, 5476, 5478, - 5485, 5492, 5499, 5506, 5513, 5520, 5528, 5536, 5543, 5553, - 5563, 5570, 5577, 5584, 5591, 5600, 5609, 5618, 5625, 5633, - 5640, 5647, 5653, 5655, 5656, 5660, 5664, 5670, 5677, 5684, - 5691, 5700, 5702, 5706, 5708, 5714, 5720, 5727, 5735, 5740, - 5745, 5750, 5757, 5771, 5773, 5775, 5779, 5783, 5785, 5787, - 5789, 5791, 5793, 5795, 5797, 5798, 5800, 5802, 5804, 5806, - 5808, 5810, 5811, 5815, 5818, 5819, 5822, 5825, 5828, 5831, - 5835, 5839, 5842, 5845, 5848, 5851, 5855, 5858, 5864, 5869, - 5873, 5877, 5881, 5883, 5885, 5886, 5890, 5893, 5896, 5898, - 5901, 5903, 5907, 5910, 5912, 5913, 5923, 5935, 5948, 5963, - 5967, 5972, 5977, 5978, 5981, 5987, 5989, 5990, 5992, 5995, - 5999, 6003, 6007, 6009, 6012, 6014, 6016, 6018, 6020, 6022, - 6024, 6025, 6031, 6036, 6043, 6048, 6052, 6058, 6064, 6069, - 6074, 6081, 6086, 6093, 6100, 6106, 6114, 6124, 6131, 6133, - 6134, 6141, 6153, 6165, 6177, 6191, 6201, 6213, 6215, 6217, - 6228, 6233, 6236, 6242, 6245, 6246, 6251, 6257, 6263, 6268, - 6275, 6277, 6281, 6283, 6285, 6287, 6289, 6291, 6294, 6299, - 6301, 6303, 6305, 6306, 6308, 6309, 6311, 6312, 6316, 6317, - 6320, 6325, 6329, 6335, 6337, 6339, 6341, 6343, 6345, 6347, - 6349, 6351, 6353, 6355, 6359, 6362, 6364, 6366, 6368, 6370, - 6371, 6377, 6381, 6382, 6384, 6386, 6388, 6390, 6394, 6404, - 6417, 6421, 6422, 6425, 6429, 6432, 6436, 6444, 6446, 6450, - 6452, 6457, 6462, 6470, 6473, 6475, 6477, 6479, 6483, 6486, - 6495, 6501, 6502, 6507, 6511, 6512, 6515, 6516, 6524, 6527, - 6528, 6534, 6538, 6539, 6542, 6545, 6548, 6552, 6554, 6558, - 6560, 6563, 6565, 6566, 6568, 6571, 6572, 6581, 6583, 6587, - 6591, 6597, 6600, 6602, 6606, 6614, 6616, 6617, 6621, 6624, - 6627, 6630, 6631, 6634, 6637, 6639, 6641, 6645, 6649, 6651, - 6654, 6659, 6664, 6667, 6671, 6677, 6683, 6685, 6687, 6697, - 6707, 6709, 6712, 6717, 6722, 6727, 6730, 6733, 6737, 6739, - 6743, 6750, 6752, 6753, 6756, 6757, 6761, 6765, 6770, 6775, - 6780, 6785, 6789, 6792, 6794, 6796, 6797, 6799, 6801, 6802, - 6804, 6810, 6812, 6813, 6815, 6816, 6820, 6822, 6826, 6831, - 6835, 6838, 6841, 6843, 6845, 6847, 6848, 6851, 6856, 6862, - 6867, 6870, 6874, 6876, 6878, 6880, 6882, 6885, 6888, 6890, - 6892, 6894, 6896, 6898, 6900, 6904, 6905, 6907, 6911, 6913, - 6915, 6917, 6919, 6921, 6924, 6929, 6934, 6940, 6943, 6944, - 6946, 6950, 6952, 6953, 6955, 6958, 6962, 6965, 6970, 6973, - 6977, 6980, 6981, 6986, 6992, 6995, 6996, 6998, 7002, 7005, - 7009, 7012, 7016, 7019, 7023, 7026, 7030, 7032, 7037, 7041, - 7046, 7052, 7057, 7063, 7068, 7074, 7077, 7082, 7084, 7086, - 7087, 7089, 7094, 7100, 7105, 7106, 7109, 7112, 7115, 7117, - 7119, 7120, 7125, 7128, 7130, 7133, 7136, 7141, 7143, 7147, - 7149, 7152, 7156, 7163, 7168, 7169, 7172, 7179, 7182, 7184, - 7188, 7193, 7194, 7197, 7198, 7201, 7202, 7205, 7210, 7211, - 7213, 7214, 7216, 7220, 7224, 7232, 7245, 7247, 7251, 7254, - 7258, 7262, 7264, 7267, 7270, 7273, 7276, 7278, 7280, 7284, - 7288, 7291, 7294, 7298, 7304, 7311, 7314, 7318, 7322, 7327, - 7328, 7330, 7332, 7334, 7336, 7338, 7341, 7346, 7348, 7350, - 7352, 7354, 7357, 7361, 7365, 7366, 7368, 7370, 7372, 7374, - 7376, 7379, 7382, 7385, 7388, 7391, 7393, 7397, 7398, 7400, - 7402, 7404, 7406, 7412, 7415, 7417, 7419, 7421, 7423, 7428, - 7430, 7433, 7436, 7438, 7442, 7446, 7449, 7451, 7452, 7458, - 7461, 7467, 7470, 7472, 7476, 7480, 7481, 7483, 7485, 7487, - 7489, 7491, 7493, 7497, 7501, 7505, 7509, 7513, 7517, 7521, - 7522, 7524, 7529, 7531, 7535, 7539, 7545, 7548, 7551, 7555, - 7559, 7563, 7567, 7571, 7575, 7579, 7583, 7587, 7591, 7595, - 7599, 7603, 7606, 7610, 7613, 7616, 7620, 7624, 7627, 7630, - 7634, 7640, 7645, 7652, 7656, 7662, 7667, 7674, 7679, 7686, - 7692, 7700, 7704, 7707, 7712, 7715, 7719, 7723, 7728, 7732, - 7737, 7741, 7746, 7752, 7759, 7766, 7774, 7781, 7789, 7796, - 7804, 7808, 7813, 7818, 7825, 7828, 7832, 7837, 7839, 7841, - 7845, 7848, 7851, 7855, 7859, 7863, 7867, 7871, 7875, 7879, - 7883, 7887, 7891, 7895, 7899, 7903, 7906, 7910, 7913, 7916, - 7922, 7929, 7936, 7944, 7948, 7953, 7955, 7957, 7960, 7963, - 7968, 7970, 7972, 7974, 7977, 7980, 7983, 7986, 7988, 7990, - 7995, 7999, 8005, 8012, 8021, 8028, 8035, 8040, 8045, 8047, - 8049, 8051, 8057, 8059, 8061, 8066, 8068, 8073, 8075, 8080, - 8082, 8087, 8089, 8091, 8093, 8095, 8097, 8099, 8106, 8111, - 8116, 8121, 8126, 8133, 8139, 8145, 8151, 8156, 8163, 8168, - 8173, 8178, 8183, 8189, 8197, 8205, 8215, 8221, 8226, 8233, - 8239, 8247, 8255, 8263, 8266, 8270, 8274, 8278, 8283, 8284, - 8289, 8291, 8295, 8299, 8301, 8303, 8305, 8308, 8311, 8312, - 8315, 8320, 8325, 8332, 8338, 8339, 8345, 8346, 8349, 8350, - 8352, 8356, 8360, 8363, 8366, 8367, 8374, 8376, 8377, 8381, - 8382, 8385, 8388, 8389, 8391, 8396, 8399, 8402, 8405, 8408, - 8411, 8416, 8420, 8426, 8431, 8435, 8441, 8443, 8445, 8447, - 8449, 8451, 8453, 8455, 8457, 8459, 8461, 8463, 8465, 8467, - 8469, 8471, 8473, 8475, 8477, 8479, 8484, 8486, 8491, 8493, - 8498, 8500, 8503, 8505, 8508, 8510, 8514, 8516, 8520, 8522, - 8526, 8530, 8532, 8536, 8540, 8544, 8547, 8549, 8553, 8557, - 8561, 8565, 8566, 8568, 8570, 8572, 8574, 8576, 8578, 8580, - 8582, 8587, 8591, 8594, 8598, 8599, 8603, 8607, 8610, 8613, - 8615, 8616, 8619, 8622, 8626, 8629, 8631, 8633, 8637, 8643, - 8645, 8648, 8653, 8656, 8657, 8659, 8660, 8662, 8665, 8668, - 8671, 8675, 8681, 8683, 8684, 8686, 8689, 8690, 8693, 8695, - 8696, 8698, 8699, 8701, 8705, 8709, 8712, 8714, 8716, 8718, - 8722, 8724, 8727, 8729, 8733, 8735, 8737, 8739, 8741, 8743, - 8745, 8747, 8750, 8752, 8754, 8756, 8758, 8760, 8763, 8770, - 8773, 8777, 8783, 8790, 8792, 8794, 8796, 8798, 8800, 8802, - 8805, 8808, 8810, 8812, 8814, 8816, 8818, 8822, 8824, 8826, - 8828, 8830, 8832, 8834, 8836, 8838, 8840, 8842, 8844, 8846, - 8848, 8850, 8852, 8854, 8856, 8858, 8860, 8862, 8864, 8866, - 8868, 8870, 8872, 8874, 8876, 8878, 8880, 8882, 8884, 8886, - 8888, 8890, 8892, 8894, 8896, 8898, 8900, 8902, 8904, 8906, - 8908, 8910, 8912, 8914, 8916, 8918, 8920, 8922, 8924, 8926, - 8928, 8930, 8932, 8934, 8936, 8938, 8940, 8942, 8944, 8946, - 8948, 8950, 8952, 8954, 8956, 8958, 8960, 8962, 8964, 8966, - 8968, 8970, 8972, 8974, 8976, 8978, 8980, 8982, 8984, 8986, - 8988, 8990, 8992, 8994, 8996, 8998, 9000, 9002, 9004, 9006, + 241, 243, 245, 247, 249, 251, 253, 255, 257, 259, + 261, 262, 265, 271, 273, 275, 276, 279, 280, 283, + 284, 287, 290, 293, 296, 300, 304, 308, 312, 314, + 318, 322, 325, 327, 329, 332, 335, 338, 342, 346, + 352, 358, 364, 365, 369, 375, 381, 387, 393, 397, + 403, 407, 413, 417, 423, 429, 436, 438, 440, 447, + 452, 462, 470, 472, 473, 476, 477, 479, 481, 483, + 485, 487, 489, 492, 496, 500, 503, 509, 511, 515, + 519, 523, 527, 529, 533, 537, 540, 543, 546, 549, + 552, 555, 558, 561, 565, 569, 573, 577, 581, 585, + 587, 591, 593, 597, 599, 601, 603, 605, 608, 611, + 614, 616, 618, 620, 622, 624, 626, 628, 630, 632, + 636, 642, 644, 646, 648, 650, 652, 653, 655, 657, + 660, 662, 665, 669, 672, 674, 676, 679, 681, 684, + 686, 689, 693, 698, 702, 705, 710, 712, 714, 716, + 718, 720, 723, 726, 729, 732, 735, 740, 747, 752, + 759, 770, 784, 789, 796, 801, 812, 826, 831, 838, + 843, 850, 856, 864, 876, 891, 893, 897, 902, 906, + 910, 913, 919, 923, 930, 935, 942, 949, 955, 963, + 970, 977, 983, 989, 996, 1006, 1011, 1017, 1025, 1032, + 1037, 1046, 1051, 1054, 1059, 1063, 1070, 1075, 1079, 1083, + 1087, 1090, 1093, 1097, 1102, 1107, 1111, 1115, 1119, 1123, + 1127, 1131, 1136, 1141, 1145, 1148, 1152, 1155, 1158, 1162, + 1166, 1169, 1172, 1176, 1181, 1186, 1191, 1197, 1199, 1203, + 1206, 1208, 1210, 1211, 1214, 1215, 1218, 1219, 1221, 1223, + 1225, 1229, 1233, 1236, 1237, 1239, 1243, 1247, 1249, 1255, + 1259, 1261, 1264, 1266, 1270, 1273, 1277, 1284, 1291, 1302, + 1304, 1307, 1309, 1313, 1318, 1320, 1324, 1329, 1336, 1341, + 1350, 1353, 1356, 1368, 1378, 1380, 1382, 1384, 1385, 1387, + 1389, 1391, 1393, 1397, 1400, 1401, 1403, 1405, 1409, 1413, + 1415, 1417, 1421, 1425, 1429, 1433, 1438, 1442, 1445, 1447, + 1448, 1452, 1453, 1455, 1456, 1458, 1462, 1465, 1467, 1469, + 1471, 1475, 1476, 1478, 1482, 1484, 1498, 1515, 1528, 1544, + 1559, 1577, 1579, 1581, 1584, 1587, 1590, 1593, 1595, 1596, + 1598, 1599, 1603, 1604, 1606, 1610, 1612, 1616, 1618, 1620, + 1622, 1624, 1626, 1631, 1634, 1639, 1642, 1643, 1647, 1649, + 1651, 1654, 1657, 1659, 1663, 1668, 1674, 1677, 1683, 1691, + 1697, 1699, 1702, 1704, 1707, 1710, 1713, 1717, 1721, 1725, + 1726, 1728, 1730, 1732, 1734, 1736, 1738, 1740, 1742, 1744, + 1748, 1750, 1756, 1765, 1769, 1779, 1784, 1795, 1807, 1810, + 1811, 1815, 1816, 1818, 1822, 1824, 1829, 1830, 1833, 1836, + 1839, 1840, 1842, 1846, 1850, 1857, 1862, 1863, 1865, 1867, + 1870, 1873, 1874, 1878, 1882, 1885, 1887, 1889, 1892, 1895, + 1900, 1901, 1903, 1904, 1911, 1913, 1917, 1921, 1925, 1931, + 1934, 1935, 1938, 1941, 1942, 1946, 1951, 1956, 1957, 1960, + 1961, 1966, 1967, 1971, 1980, 1992, 1999, 2008, 2016, 2027, + 2034, 2037, 2041, 2042, 2051, 2063, 2069, 2071, 2072, 2079, + 2085, 2094, 2099, 2106, 2108, 2109, 2113, 2114, 2116, 2119, + 2122, 2125, 2127, 2130, 2134, 2137, 2140, 2143, 2146, 2150, + 2154, 2158, 2160, 2164, 2166, 2167, 2169, 2172, 2175, 2177, + 2179, 2183, 2190, 2201, 2203, 2204, 2206, 2209, 2212, 2213, + 2216, 2219, 2221, 2222, 2228, 2236, 2238, 2239, 2247, 2250, + 2251, 2255, 2261, 2267, 2276, 2279, 2280, 2283, 2286, 2289, + 2291, 2297, 2300, 2301, 2304, 2312, 2319, 2330, 2337, 2344, + 2351, 2358, 2366, 2373, 2383, 2393, 2400, 2407, 2414, 2422, + 2429, 2438, 2447, 2456, 2465, 2472, 2479, 2487, 2495, 2504, + 2511, 2521, 2528, 2536, 2539, 2542, 2545, 2548, 2550, 2553, + 2555, 2556, 2564, 2571, 2576, 2577, 2579, 2583, 2588, 2590, + 2594, 2596, 2599, 2602, 2605, 2608, 2610, 2612, 2623, 2637, + 2640, 2641, 2644, 2647, 2649, 2650, 2656, 2661, 2666, 2678, + 2693, 2706, 2722, 2728, 2736, 2748, 2751, 2753, 2758, 2759, + 2768, 2780, 2782, 2784, 2792, 2802, 2811, 2822, 2831, 2836, + 2837, 2843, 2844, 2847, 2848, 2851, 2852, 2855, 2856, 2859, + 2860, 2862, 2864, 2866, 2868, 2870, 2879, 2881, 2883, 2900, + 2921, 2923, 2925, 2928, 2930, 2934, 2936, 2938, 2940, 2944, + 2946, 2949, 2950, 2952, 2955, 2960, 2962, 2964, 2966, 2968, + 2970, 2974, 2975, 2977, 2978, 2980, 2982, 2987, 2988, 2990, + 2992, 2994, 2998, 2999, 3001, 3003, 3005, 3007, 3010, 3011, + 3012, 3015, 3018, 3020, 3023, 3026, 3029, 3032, 3044, 3058, + 3060, 3064, 3070, 3072, 3076, 3082, 3084, 3087, 3090, 3092, + 3101, 3108, 3114, 3119, 3124, 3128, 3136, 3145, 3152, 3159, + 3166, 3173, 3180, 3185, 3193, 3199, 3208, 3212, 3214, 3218, + 3222, 3224, 3226, 3228, 3230, 3232, 3234, 3236, 3240, 3242, + 3246, 3250, 3252, 3253, 3255, 3259, 3267, 3277, 3287, 3296, + 3300, 3301, 3315, 3317, 3321, 3327, 3333, 3337, 3344, 3347, + 3349, 3350, 3353, 3354, 3357, 3362, 3363, 3365, 3366, 3373, + 3382, 3391, 3393, 3397, 3403, 3409, 3417, 3427, 3435, 3445, + 3451, 3458, 3465, 3470, 3477, 3482, 3489, 3498, 3503, 3510, + 3515, 3522, 3528, 3536, 3538, 3540, 3542, 3545, 3547, 3550, + 3552, 3554, 3556, 3560, 3564, 3568, 3572, 3575, 3578, 3580, + 3584, 3586, 3588, 3590, 3592, 3594, 3596, 3598, 3602, 3604, + 3607, 3610, 3614, 3616, 3620, 3626, 3629, 3632, 3633, 3640, + 3647, 3654, 3661, 3668, 3675, 3682, 3691, 3701, 3710, 3717, + 3724, 3733, 3743, 3752, 3762, 3772, 3780, 3791, 3793, 3795, + 3797, 3799, 3801, 3803, 3806, 3808, 3810, 3813, 3817, 3821, + 3825, 3829, 3832, 3834, 3837, 3839, 3843, 3846, 3848, 3850, + 3852, 3854, 3856, 3858, 3860, 3862, 3871, 3880, 3889, 3898, + 3907, 3916, 3926, 3935, 3944, 3947, 3948, 3950, 3953, 3955, + 3957, 3959, 3962, 3964, 3967, 3970, 3972, 3974, 3976, 3978, + 3980, 3982, 3984, 3987, 3990, 3992, 3995, 3999, 4003, 4007, + 4011, 4016, 4021, 4025, 4029, 4033, 4038, 4043, 4047, 4052, + 4057, 4059, 4061, 4063, 4064, 4072, 4080, 4091, 4093, 4095, + 4098, 4103, 4109, 4111, 4115, 4118, 4121, 4124, 4127, 4129, + 4132, 4135, 4140, 4144, 4147, 4150, 4153, 4156, 4159, 4162, + 4166, 4169, 4172, 4175, 4181, 4187, 4193, 4199, 4205, 4207, + 4211, 4213, 4216, 4220, 4221, 4228, 4235, 4245, 4249, 4250, + 4254, 4255, 4261, 4264, 4265, 4269, 4273, 4277, 4285, 4293, + 4304, 4306, 4308, 4310, 4312, 4314, 4316, 4332, 4351, 4353, + 4354, 4356, 4357, 4359, 4360, 4363, 4364, 4366, 4370, 4375, + 4381, 4384, 4387, 4392, 4397, 4398, 4400, 4404, 4407, 4408, + 4410, 4411, 4413, 4415, 4416, 4419, 4422, 4423, 4432, 4444, + 4451, 4458, 4461, 4462, 4466, 4469, 4471, 4475, 4477, 4481, + 4484, 4486, 4488, 4491, 4495, 4498, 4500, 4504, 4508, 4512, + 4515, 4518, 4520, 4522, 4524, 4526, 4529, 4531, 4533, 4535, + 4537, 4542, 4548, 4550, 4554, 4558, 4560, 4564, 4568, 4574, + 4581, 4583, 4587, 4590, 4592, 4596, 4598, 4601, 4606, 4612, + 4614, 4616, 4618, 4620, 4624, 4628, 4631, 4634, 4636, 4639, + 4642, 4645, 4648, 4650, 4653, 4656, 4659, 4662, 4664, 4666, + 4668, 4672, 4676, 4682, 4685, 4686, 4689, 4691, 4695, 4701, + 4707, 4713, 4715, 4718, 4720, 4721, 4726, 4733, 4738, 4745, + 4750, 4757, 4762, 4769, 4774, 4781, 4785, 4791, 4797, 4803, + 4805, 4809, 4811, 4815, 4818, 4821, 4823, 4826, 4828, 4831, + 4843, 4854, 4865, 4868, 4871, 4872, 4882, 4885, 4886, 4897, + 4909, 4921, 4927, 4933, 4942, 4947, 4952, 4960, 4968, 4970, + 4972, 4974, 4976, 4978, 4980, 4984, 4986, 4992, 4998, 5005, + 5012, 5019, 5026, 5033, 5042, 5051, 5058, 5065, 5073, 5083, + 5093, 5102, 5113, 5120, 5127, 5134, 5141, 5148, 5155, 5162, + 5171, 5178, 5187, 5194, 5203, 5211, 5221, 5228, 5237, 5245, + 5255, 5264, 5275, 5284, 5295, 5305, 5317, 5326, 5337, 5347, + 5359, 5368, 5377, 5385, 5392, 5399, 5406, 5413, 5422, 5431, + 5440, 5449, 5456, 5466, 5468, 5469, 5472, 5473, 5482, 5491, + 5500, 5511, 5521, 5530, 5532, 5533, 5540, 5547, 5554, 5561, + 5568, 5575, 5582, 5592, 5602, 5609, 5616, 5623, 5632, 5639, + 5648, 5657, 5666, 5675, 5682, 5691, 5698, 5707, 5715, 5725, + 5733, 5743, 5750, 5758, 5760, 5764, 5768, 5772, 5774, 5776, + 5778, 5780, 5782, 5790, 5797, 5804, 5811, 5818, 5825, 5832, + 5840, 5848, 5855, 5865, 5875, 5882, 5889, 5896, 5903, 5910, + 5917, 5926, 5935, 5944, 5951, 5959, 5966, 5973, 5979, 5981, + 5982, 5986, 5990, 5996, 6003, 6010, 6017, 6026, 6028, 6032, + 6034, 6040, 6046, 6053, 6061, 6066, 6071, 6076, 6083, 6097, + 6099, 6101, 6105, 6109, 6111, 6113, 6115, 6117, 6119, 6121, + 6123, 6124, 6126, 6128, 6130, 6132, 6134, 6136, 6137, 6141, + 6144, 6145, 6148, 6151, 6154, 6158, 6162, 6166, 6170, 6174, + 6178, 6181, 6185, 6188, 6194, 6199, 6203, 6207, 6211, 6213, + 6215, 6216, 6220, 6223, 6226, 6228, 6231, 6233, 6237, 6240, + 6242, 6243, 6246, 6250, 6251, 6261, 6273, 6286, 6301, 6305, + 6310, 6315, 6316, 6319, 6325, 6327, 6328, 6330, 6333, 6337, + 6341, 6345, 6347, 6350, 6352, 6354, 6356, 6358, 6360, 6362, + 6363, 6369, 6374, 6381, 6386, 6390, 6396, 6404, 6414, 6416, + 6420, 6422, 6428, 6433, 6438, 6445, 6450, 6457, 6464, 6470, + 6478, 6488, 6495, 6497, 6498, 6505, 6517, 6529, 6541, 6555, + 6565, 6577, 6579, 6581, 6592, 6597, 6600, 6606, 6609, 6610, + 6617, 6623, 6627, 6633, 6635, 6639, 6641, 6643, 6646, 6648, + 6650, 6652, 6654, 6655, 6657, 6658, 6660, 6661, 6663, 6664, + 6666, 6667, 6671, 6672, 6675, 6677, 6681, 6683, 6684, 6687, + 6692, 6696, 6702, 6704, 6706, 6708, 6710, 6712, 6714, 6716, + 6718, 6720, 6722, 6726, 6729, 6731, 6733, 6735, 6737, 6738, + 6744, 6748, 6749, 6751, 6753, 6755, 6757, 6761, 6771, 6784, + 6788, 6789, 6792, 6796, 6799, 6803, 6811, 6813, 6817, 6819, + 6824, 6829, 6837, 6840, 6842, 6844, 6846, 6850, 6853, 6862, + 6868, 6869, 6874, 6878, 6879, 6882, 6883, 6891, 6894, 6895, + 6901, 6905, 6906, 6909, 6912, 6915, 6919, 6921, 6925, 6927, + 6930, 6932, 6933, 6935, 6938, 6939, 6948, 6950, 6954, 6958, + 6964, 6967, 6969, 6973, 6981, 6983, 6984, 6988, 6991, 6994, + 6997, 6998, 7001, 7004, 7006, 7008, 7012, 7016, 7018, 7021, + 7026, 7031, 7034, 7038, 7044, 7050, 7052, 7054, 7064, 7074, + 7076, 7079, 7084, 7089, 7094, 7097, 7100, 7104, 7106, 7110, + 7118, 7120, 7123, 7124, 7126, 7127, 7130, 7131, 7135, 7139, + 7144, 7149, 7154, 7159, 7163, 7166, 7168, 7170, 7171, 7173, + 7175, 7176, 7178, 7184, 7186, 7187, 7189, 7190, 7194, 7196, + 7200, 7205, 7209, 7212, 7215, 7217, 7219, 7221, 7222, 7225, + 7230, 7236, 7243, 7248, 7254, 7257, 7261, 7263, 7265, 7267, + 7269, 7272, 7275, 7277, 7279, 7281, 7283, 7285, 7287, 7291, + 7292, 7294, 7298, 7300, 7302, 7304, 7306, 7308, 7311, 7316, + 7321, 7327, 7330, 7331, 7333, 7337, 7339, 7340, 7342, 7345, + 7349, 7352, 7357, 7360, 7364, 7367, 7368, 7373, 7379, 7382, + 7383, 7385, 7389, 7392, 7396, 7399, 7403, 7406, 7410, 7413, + 7417, 7419, 7424, 7428, 7433, 7439, 7444, 7450, 7455, 7461, + 7464, 7469, 7471, 7473, 7474, 7476, 7481, 7487, 7492, 7493, + 7496, 7499, 7502, 7504, 7506, 7507, 7512, 7515, 7517, 7520, + 7523, 7528, 7530, 7534, 7536, 7539, 7543, 7550, 7555, 7556, + 7559, 7566, 7569, 7571, 7575, 7580, 7581, 7584, 7585, 7588, + 7589, 7592, 7597, 7598, 7600, 7601, 7603, 7607, 7611, 7619, + 7632, 7634, 7638, 7641, 7645, 7649, 7651, 7654, 7657, 7660, + 7663, 7665, 7667, 7671, 7675, 7678, 7681, 7685, 7691, 7698, + 7701, 7705, 7709, 7714, 7715, 7717, 7719, 7721, 7723, 7725, + 7728, 7733, 7735, 7737, 7739, 7741, 7744, 7748, 7752, 7753, + 7755, 7757, 7759, 7761, 7763, 7766, 7769, 7772, 7775, 7778, + 7780, 7784, 7785, 7787, 7789, 7791, 7793, 7799, 7802, 7804, + 7806, 7808, 7810, 7815, 7817, 7820, 7823, 7825, 7829, 7833, + 7836, 7838, 7839, 7845, 7848, 7854, 7857, 7859, 7863, 7867, + 7868, 7870, 7872, 7874, 7876, 7878, 7880, 7884, 7888, 7892, + 7896, 7900, 7904, 7908, 7909, 7911, 7916, 7918, 7922, 7926, + 7932, 7935, 7938, 7942, 7946, 7950, 7954, 7958, 7962, 7966, + 7970, 7974, 7978, 7982, 7986, 7990, 7993, 7996, 8000, 8003, + 8007, 8011, 8014, 8017, 8021, 8027, 8032, 8039, 8043, 8049, + 8054, 8061, 8066, 8073, 8079, 8087, 8091, 8094, 8099, 8102, + 8106, 8110, 8115, 8119, 8124, 8128, 8133, 8139, 8146, 8153, + 8161, 8168, 8176, 8183, 8191, 8195, 8200, 8205, 8212, 8215, + 8219, 8224, 8228, 8233, 8238, 8244, 8246, 8248, 8252, 8255, + 8258, 8262, 8266, 8270, 8274, 8278, 8282, 8286, 8290, 8294, + 8298, 8302, 8306, 8310, 8313, 8317, 8320, 8323, 8329, 8336, + 8343, 8351, 8355, 8360, 8362, 8364, 8367, 8370, 8375, 8377, + 8379, 8381, 8384, 8387, 8390, 8393, 8395, 8397, 8402, 8406, + 8412, 8419, 8428, 8435, 8442, 8447, 8452, 8454, 8456, 8458, + 8464, 8466, 8468, 8473, 8475, 8480, 8482, 8487, 8489, 8494, + 8496, 8498, 8500, 8502, 8504, 8506, 8513, 8518, 8523, 8530, + 8535, 8540, 8545, 8552, 8558, 8564, 8570, 8575, 8582, 8587, + 8592, 8597, 8602, 8608, 8616, 8624, 8634, 8640, 8645, 8652, + 8658, 8666, 8674, 8682, 8685, 8689, 8693, 8697, 8702, 8703, + 8708, 8710, 8714, 8718, 8720, 8722, 8724, 8727, 8730, 8731, + 8734, 8738, 8742, 8747, 8750, 8753, 8759, 8760, 8766, 8767, + 8770, 8771, 8773, 8777, 8781, 8784, 8787, 8788, 8795, 8797, + 8798, 8802, 8803, 8807, 8811, 8815, 8816, 8818, 8823, 8826, + 8829, 8832, 8835, 8838, 8842, 8845, 8848, 8852, 8853, 8858, + 8862, 8868, 8873, 8877, 8883, 8885, 8887, 8889, 8891, 8893, + 8895, 8897, 8899, 8901, 8903, 8905, 8907, 8909, 8911, 8913, + 8915, 8917, 8919, 8921, 8926, 8928, 8933, 8935, 8940, 8942, + 8945, 8947, 8950, 8952, 8956, 8958, 8962, 8964, 8968, 8972, + 8974, 8978, 8982, 8986, 8989, 8991, 8995, 8999, 9003, 9007, 9008, 9010, 9012, 9014, 9016, 9018, 9020, 9022, 9024, 9026, - 9028, 9030, 9032, 9034, 9036, 9038, 9040, 9042, 9044, 9046, - 9048, 9050, 9052, 9054, 9056, 9058, 9060, 9062, 9064, 9066, - 9068, 9070, 9072, 9074, 9076, 9078, 9080, 9082, 9084, 9086, - 9088, 9090, 9092, 9094, 9096, 9098, 9100, 9102, 9104, 9106, - 9108, 9110, 9112, 9114, 9116, 9118, 9120, 9122, 9124, 9126, - 9128, 9130, 9132, 9134, 9136, 9138, 9140, 9142, 9144, 9146, - 9148, 9150, 9152, 9154, 9156, 9158, 9160, 9162, 9164, 9166, - 9168, 9170, 9172, 9174, 9176, 9178, 9180, 9182, 9184, 9186, - 9188, 9190, 9192, 9194, 9196, 9198, 9200, 9202, 9204, 9206, - 9208, 9210, 9212, 9214, 9216, 9218, 9220, 9222, 9224, 9226, - 9228, 9230, 9232, 9234, 9236, 9238, 9240, 9242, 9244, 9246, - 9248, 9250, 9252, 9254, 9256, 9258, 9260, 9262, 9264, 9266, - 9268, 9270, 9272, 9274, 9276, 9278, 9280, 9282, 9284, 9286, - 9288, 9290, 9292, 9294, 9296, 9298, 9300, 9302, 9304, 9306, - 9308, 9310, 9312, 9314, 9316, 9318, 9320, 9322, 9324, 9326, - 9328, 9330, 9332, 9334, 9336, 9338, 9340, 9342, 9344, 9346, - 9348, 9350, 9352, 9354, 9356, 9358, 9360, 9362, 9364, 9366, - 9368, 9370, 9372, 9374, 9376, 9378, 9380, 9382, 9384, 9386, - 9388, 9390, 9392, 9394, 9396, 9398, 9400, 9402, 9404, 9406, - 9408, 9410, 9412, 9414, 9416, 9418, 9420, 9422, 9424, 9426, - 9428, 9430, 9432, 9434, 9436, 9438, 9440, 9442, 9444, 9446, - 9448, 9450, 9452, 9454, 9456, 9458, 9460, 9462, 9464, 9466, - 9468, 9470, 9472, 9474, 9476, 9478, 9480, 9482, 9484, 9486, - 9488, 9490, 9492, 9494, 9496, 9498, 9500, 9502, 9504, 9506, - 9508, 9510, 9512, 9514, 9516, 9518, 9520, 9522, 9524, 9526, - 9528, 9530, 9532, 9534, 9536, 9538, 9540, 9542, 9544, 9546, - 9548, 9550, 9552, 9554, 9556, 9558, 9560, 9562, 9564, 9566, - 9568, 9570, 9572, 9574, 9576, 9578, 9580, 9582, 9584, 9586, - 9588, 9590, 9592, 9594, 9596, 9598, 9600, 9602, 9604, 9606, - 9608, 9610, 9612, 9614, 9616, 9618, 9620, 9622, 9624, 9626, - 9628, 9630, 9632, 9634, 9636, 9638, 9640, 9642, 9644, 9646, - 9648, 9650, 9652, 9654, 9656, 9658, 9660, 9662, 9664, 9666, - 9668, 9670, 9672, 9674, 9676, 9678, 9680, 9682, 9684, 9686, - 9688, 9690, 9692, 9694, 9696, 9698, 9700, 9702, 9704, 9706, - 9708, 9710, 9712, 9714, 9716, 9718, 9720, 9722, 9724, 9726, - 9728, 9730 + 9028, 9030, 9032, 9037, 9041, 9044, 9048, 9049, 9053, 9057, + 9060, 9063, 9065, 9066, 9069, 9072, 9076, 9079, 9081, 9083, + 9087, 9093, 9095, 9098, 9103, 9106, 9107, 9109, 9110, 9112, + 9115, 9118, 9121, 9125, 9131, 9133, 9134, 9136, 9139, 9140, + 9143, 9145, 9146, 9148, 9149, 9151, 9155, 9159, 9162, 9164, + 9166, 9168, 9172, 9174, 9177, 9179, 9183, 9185, 9187, 9189, + 9191, 9193, 9195, 9197, 9200, 9202, 9204, 9206, 9208, 9210, + 9213, 9220, 9223, 9230, 9233, 9237, 9243, 9246, 9250, 9256, + 9262, 9264, 9266, 9268, 9270, 9272, 9274, 9277, 9280, 9282, + 9284, 9286, 9288, 9290, 9294, 9296, 9298, 9300, 9302, 9304, + 9306, 9308, 9310, 9312, 9314, 9316, 9318, 9320, 9322, 9324, + 9326, 9328, 9330, 9332, 9334, 9336, 9338, 9340, 9342, 9344, + 9346, 9348, 9350, 9352, 9354, 9356, 9358, 9360, 9362, 9364, + 9366, 9368, 9370, 9372, 9374, 9376, 9378, 9380, 9382, 9384, + 9386, 9388, 9390, 9392, 9394, 9396, 9398, 9400, 9402, 9404, + 9406, 9408, 9410, 9412, 9414, 9416, 9418, 9420, 9422, 9424, + 9426, 9428, 9430, 9432, 9434, 9436, 9438, 9440, 9442, 9444, + 9446, 9448, 9450, 9452, 9454, 9456, 9458, 9460, 9462, 9464, + 9466, 9468, 9470, 9472, 9474, 9476, 9478, 9480, 9482, 9484, + 9486, 9488, 9490, 9492, 9494, 9496, 9498, 9500, 9502, 9504, + 9506, 9508, 9510, 9512, 9514, 9516, 9518, 9520, 9522, 9524, + 9526, 9528, 9530, 9532, 9534, 9536, 9538, 9540, 9542, 9544, + 9546, 9548, 9550, 9552, 9554, 9556, 9558, 9560, 9562, 9564, + 9566, 9568, 9570, 9572, 9574, 9576, 9578, 9580, 9582, 9584, + 9586, 9588, 9590, 9592, 9594, 9596, 9598, 9600, 9602, 9604, + 9606, 9608, 9610, 9612, 9614, 9616, 9618, 9620, 9622, 9624, + 9626, 9628, 9630, 9632, 9634, 9636, 9638, 9640, 9642, 9644, + 9646, 9648, 9650, 9652, 9654, 9656, 9658, 9660, 9662, 9664, + 9666, 9668, 9670, 9672, 9674, 9676, 9678, 9680, 9682, 9684, + 9686, 9688, 9690, 9692, 9694, 9696, 9698, 9700, 9702, 9704, + 9706, 9708, 9710, 9712, 9714, 9716, 9718, 9720, 9722, 9724, + 9726, 9728, 9730, 9732, 9734, 9736, 9738, 9740, 9742, 9744, + 9746, 9748, 9750, 9752, 9754, 9756, 9758, 9760, 9762, 9764, + 9766, 9768, 9770, 9772, 9774, 9776, 9778, 9780, 9782, 9784, + 9786, 9788, 9790, 9792, 9794, 9796, 9798, 9800, 9802, 9804, + 9806, 9808, 9810, 9812, 9814, 9816, 9818, 9820, 9822, 9824, + 9826, 9828, 9830, 9832, 9834, 9836, 9838, 9840, 9842, 9844, + 9846, 9848, 9850, 9852, 9854, 9856, 9858, 9860, 9862, 9864, + 9866, 9868, 9870, 9872, 9874, 9876, 9878, 9880, 9882, 9884, + 9886, 9888, 9890, 9892, 9894, 9896, 9898, 9900, 9902, 9904, + 9906, 9908, 9910, 9912, 9914, 9916, 9918, 9920, 9922, 9924, + 9926, 9928, 9930, 9932, 9934, 9936, 9938, 9940, 9942, 9944, + 9946, 9948, 9950, 9952, 9954, 9956, 9958, 9960, 9962, 9964, + 9966, 9968, 9970, 9972, 9974, 9976, 9978, 9980, 9982, 9984, + 9986, 9988, 9990, 9992, 9994, 9996, 9998, 10000, 10002, 10004, + 10006, 10008, 10010, 10012, 10014, 10016, 10018, 10020, 10022, 10024, + 10026, 10028, 10030, 10032, 10034, 10036, 10038, 10040, 10042, 10044, + 10046, 10048, 10050, 10052, 10054, 10056, 10058, 10060, 10062, 10064, + 10066, 10068, 10070, 10072, 10074, 10076, 10078, 10080, 10082, 10084, + 10086, 10088, 10090, 10092, 10094, 10096, 10098, 10100, 10102, 10104, + 10106, 10108, 10110, 10112, 10114, 10116, 10118, 10120, 10122, 10124, + 10126, 10128, 10130, 10132, 10134, 10136, 10138, 10140, 10142, 10144, + 10146, 10148, 10150, 10152, 10154, 10156, 10158, 10160, 10162, 10164, + 10166, 10168, 10170, 10172, 10174, 10176, 10178, 10180, 10182, 10184, + 10186, 10188, 10190, 10192, 10194, 10196, 10198, 10200, 10202, 10204, + 10206, 10208, 10210, 10212, 10214, 10216, 10218, 10220, 10222 }; /* YYRHS -- A `-1'-separated list of the rules' RHS. */ static const yytype_int16 yyrhs[] = { - 474, 0, -1, 475, -1, 475, 470, 476, -1, 476, - -1, 696, -1, 879, -1, 876, -1, 877, -1, 763, - -1, 882, -1, 710, -1, 632, -1, 635, -1, 640, - -1, 653, -1, 655, -1, 806, -1, 489, -1, 835, - -1, 836, -1, 841, -1, 837, -1, 664, -1, 610, - -1, 880, -1, 518, -1, 831, -1, 538, -1, 845, - -1, 486, -1, 484, -1, 849, -1, 885, -1, 884, - -1, 662, -1, 893, -1, 516, -1, 541, -1, 888, - -1, 737, -1, 513, -1, 542, -1, 672, -1, 602, - -1, 698, -1, 819, -1, 887, -1, 881, -1, 629, - -1, 636, -1, 649, -1, 654, -1, 779, -1, 488, - -1, 605, -1, 712, -1, 719, -1, 842, -1, 720, - -1, 663, -1, 618, -1, 491, -1, 609, -1, 558, - -1, 846, -1, 601, -1, 626, -1, 823, -1, 673, - -1, 692, -1, 477, -1, 483, -1, 659, -1, 870, - -1, 910, -1, 932, -1, 700, -1, 920, -1, 517, - -1, 816, -1, 699, -1, 821, -1, 723, -1, 724, - -1, 725, -1, 624, -1, 727, -1, 850, -1, 628, - -1, 825, -1, 487, -1, 661, -1, 878, -1, 908, - -1, 899, -1, 746, -1, 750, -1, 759, -1, 656, - -1, 768, -1, 911, -1, 860, -1, 608, -1, 869, - -1, 922, -1, 858, -1, 905, -1, 726, -1, 826, - -1, 810, -1, 809, -1, 811, -1, 832, -1, 751, - -1, 760, -1, 851, -1, 741, -1, 936, -1, 862, - -1, 735, -1, 861, -1, 927, -1, 890, -1, 507, - -1, 495, -1, 512, -1, 867, -1, -1, 90, 329, - 1115, 478, 479, -1, 429, -1, 452, -1, -1, 479, - 482, -1, -1, 480, 481, -1, -1, 287, 1120, -1, - 287, 256, -1, 135, 287, 1120, -1, 401, 287, 1113, - -1, 190, -1, 82, 222, 1114, -1, 412, 407, 1113, - -1, 409, 1117, -1, 3, -1, 481, -1, 374, 1112, - -1, 23, 1117, -1, 329, 1117, -1, 185, 329, 1117, - -1, 185, 171, 1117, -1, 90, 409, 1115, 478, 479, - -1, 28, 329, 1116, 478, 480, -1, 28, 409, 1116, - 478, 480, -1, -1, 185, 105, 1105, -1, 28, 329, - 1116, 485, 510, -1, 28, 329, 26, 485, 510, -1, - 28, 409, 1116, 485, 510, -1, 28, 409, 26, 485, - 510, -1, 130, 329, 1117, -1, 130, 329, 179, 145, - 1117, -1, 130, 409, 1117, -1, 130, 409, 179, 145, - 1117, -1, 130, 171, 1117, -1, 130, 171, 179, 145, - 1117, -1, 90, 171, 1115, 478, 479, -1, 28, 171, - 1116, 490, 409, 1117, -1, 22, -1, 130, -1, 90, - 336, 492, 43, 1116, 493, -1, 90, 336, 1122, 493, - -1, 90, 336, 179, 251, 145, 492, 43, 1116, 493, - -1, 90, 336, 179, 251, 145, 1122, 493, -1, 1122, - -1, -1, 493, 494, -1, -1, 558, -1, 768, -1, - 609, -1, 673, -1, 750, -1, 867, -1, 349, 496, - -1, 349, 225, 496, -1, 349, 347, 496, -1, 389, - 865, -1, 347, 64, 35, 389, 865, -1, 498, -1, - 499, 387, 500, -1, 499, 455, 500, -1, 499, 387, - 111, -1, 499, 455, 111, -1, 497, -1, 499, 162, - 94, -1, 385, 449, 504, -1, 60, 1113, -1, 336, - 1119, -1, 243, 505, -1, 329, 1121, -1, 347, 43, - 1121, -1, 347, 43, 111, -1, 435, 269, 1047, -1, - 389, 358, 1113, -1, 1122, -1, 499, 469, 1122, -1, - 501, -1, 500, 471, 501, -1, 503, -1, 616, -1, - 463, -1, 306, 400, -1, 306, 78, -1, 319, 306, - -1, 345, -1, 394, -1, 150, -1, 266, -1, 506, - -1, 1119, -1, 3, -1, 1031, 1113, 1033, -1, 1031, - 467, 1112, 468, 1113, -1, 616, -1, 111, -1, 225, - -1, 1113, -1, 111, -1, -1, 1124, -1, 1113, -1, - 322, 508, -1, 509, -1, 385, 449, -1, 389, 208, - 220, -1, 347, 43, -1, 499, -1, 26, -1, 349, - 496, -1, 507, -1, 349, 498, -1, 507, -1, 353, - 499, -1, 353, 385, 449, -1, 353, 389, 208, 220, - -1, 353, 347, 43, -1, 353, 26, -1, 349, 84, - 514, 515, -1, 26, -1, 1101, -1, 114, -1, 181, - -1, 66, -1, 124, 26, -1, 124, 380, -1, 124, - 382, -1, 124, 289, -1, 124, 344, -1, 28, 376, - 990, 519, -1, 28, 376, 179, 145, 990, 519, -1, - 28, 376, 990, 520, -1, 28, 376, 179, 145, 990, - 520, -1, 28, 376, 26, 185, 379, 1104, 349, 379, - 1104, 925, -1, 28, 376, 26, 185, 379, 1104, 280, - 53, 1117, 349, 379, 1104, 925, -1, 28, 188, 1102, - 519, -1, 28, 188, 179, 145, 1102, 519, -1, 28, - 188, 26, 185, 379, 1104, 349, 379, 1104, 925, -1, - 28, 188, 26, 185, 379, 1104, 280, 53, 1117, 349, - 379, 1104, 925, -1, 28, 343, 1102, 519, -1, 28, - 343, 179, 145, 1102, 519, -1, 28, 422, 1102, 519, - -1, 28, 422, 179, 145, 1102, 519, -1, 28, 234, - 422, 1102, 519, -1, 28, 234, 422, 179, 145, 1102, - 519, -1, 28, 234, 422, 26, 185, 379, 1104, 349, - 379, 1104, 925, -1, 28, 234, 422, 26, 185, 379, - 1104, 280, 53, 1117, 349, 379, 1104, 925, -1, 521, - -1, 519, 471, 521, -1, 41, 285, 1102, 533, -1, - 121, 285, 1102, -1, 22, 566, -1, 22, 179, 251, - 145, 566, -1, 22, 73, 566, -1, 22, 73, 179, - 251, 145, 566, -1, 28, 833, 1122, 522, -1, 28, - 833, 1122, 130, 251, 256, -1, 28, 833, 1122, 349, - 251, 256, -1, 28, 833, 1122, 349, 365, 1114, -1, - 28, 833, 1122, 349, 527, -1, 28, 833, 1122, 322, - 527, -1, 28, 833, 1122, 349, 368, 1122, -1, 28, - 833, 1122, 22, 166, 571, 35, 178, 612, -1, 28, - 833, 1122, 531, -1, 28, 833, 1122, 130, 178, -1, - 28, 833, 1122, 130, 178, 179, 145, -1, 130, 833, - 179, 145, 1122, 523, -1, 130, 833, 1122, 523, -1, - 28, 833, 1122, 834, 397, 1012, 524, 525, -1, 28, - 833, 1122, 643, -1, 22, 576, -1, 28, 83, 1104, - 690, -1, 413, 83, 1104, -1, 130, 83, 179, 145, - 1104, 523, -1, 130, 83, 1104, 523, -1, 349, 429, - 264, -1, 349, 431, 264, -1, 69, 266, 1104, -1, - 349, 431, 69, -1, 349, 231, -1, 349, 406, -1, - 133, 392, 1104, -1, 133, 29, 392, 1104, -1, 133, - 321, 392, 1104, -1, 133, 392, 26, -1, 133, 392, - 409, -1, 123, 392, 1104, -1, 123, 392, 26, -1, - 123, 392, 409, -1, 133, 334, 1104, -1, 133, 29, - 334, 1104, -1, 133, 321, 334, 1104, -1, 123, 334, - 1104, -1, 190, 1102, -1, 249, 190, 1102, -1, 261, - 732, -1, 251, 261, -1, 281, 387, 1116, -1, 349, - 379, 1104, -1, 349, 527, -1, 322, 527, -1, 321, - 178, 526, -1, 133, 332, 220, 341, -1, 123, 332, - 220, 341, -1, 158, 332, 220, 341, -1, 249, 158, - 332, 220, 341, -1, 643, -1, 349, 111, 1035, -1, - 130, 111, -1, 56, -1, 324, -1, -1, 71, 732, - -1, -1, 410, 1035, -1, -1, 252, -1, 163, -1, - 111, -1, 410, 188, 1104, -1, 467, 529, 468, -1, - 429, 527, -1, -1, 530, -1, 529, 471, 530, -1, - 1125, 455, 704, -1, 1125, -1, 1125, 469, 1125, 455, - 704, -1, 1125, 469, 1125, -1, 532, -1, 531, 532, - -1, 323, -1, 323, 478, 616, -1, 349, 614, -1, - 349, 166, 571, -1, 157, 416, 185, 467, 535, 468, - -1, 157, 416, 162, 467, 536, 468, 387, 467, 536, - 468, -1, 1113, -1, 616, -1, 394, -1, 150, -1, - 256, -1, 534, -1, 535, 471, 534, -1, 537, -1, - 536, 471, 537, -1, 238, -1, 235, -1, 534, -1, - 28, 397, 732, 539, -1, 540, -1, 539, 471, 540, - -1, 22, 42, 1004, 523, -1, 130, 42, 179, 145, - 1122, 523, -1, 130, 42, 1122, 523, -1, 28, 42, - 1122, 834, 397, 1012, 524, 523, -1, 68, 933, -1, - 68, 26, -1, 88, 549, 1102, 579, 550, 543, 544, - 545, 551, 478, 546, -1, 88, 467, 907, 468, 387, - 544, 545, 478, 546, -1, 162, -1, 387, -1, 302, - -1, -1, 1113, -1, 366, -1, 367, -1, 547, -1, - 467, 553, 468, -1, 547, 548, -1, -1, 49, -1, - 264, -1, 161, -1, 117, 883, 1113, -1, 256, 883, - 1113, -1, 92, -1, 175, -1, 304, 883, 1113, -1, - 138, 883, 1113, -1, 158, 304, 580, -1, 158, 304, - 459, -1, 158, 251, 256, 580, -1, 158, 256, 580, - -1, 134, 1113, -1, 49, -1, -1, 429, 264, -1, - -1, 552, 118, 1113, -1, -1, 410, -1, -1, 554, - -1, 553, 471, 554, -1, 1125, 555, -1, 503, -1, - 616, -1, 459, -1, 467, 556, 468, -1, -1, 557, - -1, 556, 471, 557, -1, 503, -1, 90, 559, 376, - 1102, 467, 560, 468, 590, 591, 596, 597, 598, -1, - 90, 559, 376, 179, 251, 145, 1102, 467, 560, 468, - 590, 591, 596, 597, 598, -1, 90, 559, 376, 1102, - 261, 732, 561, 591, 596, 597, 598, -1, 90, 559, - 376, 179, 251, 145, 1102, 261, 732, 561, 591, 596, - 597, 598, -1, 90, 559, 376, 1102, 285, 261, 1102, - 561, 533, 591, 596, 597, 598, -1, 90, 559, 376, - 179, 251, 145, 1102, 285, 261, 1102, 561, 533, 591, - 596, 597, 598, -1, 382, -1, 380, -1, 225, 382, - -1, 225, 380, -1, 167, 382, -1, 167, 380, -1, - 406, -1, -1, 562, -1, -1, 467, 563, 468, -1, - -1, 564, -1, 562, 471, 564, -1, 565, -1, 563, - 471, 565, -1, 566, -1, 573, -1, 576, -1, 567, - -1, 576, -1, 1122, 1012, 641, 568, -1, 1122, 568, - -1, 1122, 429, 270, 568, -1, 568, 569, -1, -1, - 83, 1104, 570, -1, 570, -1, 572, -1, 71, 732, - -1, 251, 256, -1, 256, -1, 403, 803, 599, -1, - 297, 210, 803, 599, -1, 65, 467, 1035, 468, 578, - -1, 111, 1036, -1, 166, 571, 35, 178, 612, -1, - 312, 1102, 579, 582, 586, -1, 29, -1, 53, 111, - -1, 113, -1, 251, 113, -1, 192, 114, -1, 192, - 181, -1, 221, 1102, 574, -1, 574, 186, 575, -1, - 574, 142, 575, -1, -1, 76, -1, 84, -1, 112, - -1, 178, -1, 189, -1, 365, -1, 368, -1, 26, - -1, 83, 1104, 577, -1, 577, -1, 65, 467, 1035, - 468, 690, -1, 403, 467, 580, 468, 803, 599, 690, - -1, 403, 600, 690, -1, 297, 210, 467, 580, 468, - 803, 599, 690, -1, 297, 210, 600, 690, -1, 141, - 772, 467, 583, 468, 803, 599, 585, 690, -1, 159, - 210, 467, 580, 468, 312, 1102, 579, 582, 586, 690, - -1, 249, 190, -1, -1, 467, 580, 468, -1, -1, - 581, -1, 580, 471, 581, -1, 1122, -1, 233, 163, - -1, 233, 284, -1, 233, 355, -1, -1, 584, -1, - 583, 471, 584, -1, 774, 429, 813, -1, 774, 429, - 268, 467, 813, 468, -1, 426, 467, 1035, 468, -1, - -1, 587, -1, 588, -1, 587, 588, -1, 588, 587, - -1, -1, 266, 408, 589, -1, 266, 116, 589, -1, - 249, 21, -1, 324, -1, 56, -1, 349, 256, -1, - 349, 111, -1, 191, 467, 1101, 468, -1, -1, 592, - -1, -1, 285, 53, 593, 467, 594, 468, -1, 3, - -1, 1126, -1, 595, -1, 594, 471, 595, -1, 1122, - 775, 776, -1, 1040, 775, 776, -1, 467, 1035, 468, - 775, 776, -1, 429, 527, -1, 429, 264, -1, 431, - 264, -1, -1, 266, 77, 130, -1, 266, 77, 116, - 333, -1, 266, 77, 294, 333, -1, -1, 379, 1104, - -1, -1, 410, 188, 379, 1104, -1, -1, 410, 188, - 1108, -1, 90, 365, 732, 898, 266, 1071, 162, 981, - -1, 90, 365, 179, 251, 145, 732, 898, 266, 1071, - 162, 981, -1, 90, 559, 376, 603, 35, 936, 604, - -1, 90, 559, 376, 179, 251, 145, 603, 35, 936, - 604, -1, 1102, 579, 596, 597, 598, -1, 429, 104, - -1, 429, 249, 104, -1, -1, 90, 607, 234, 422, - 606, 35, 936, 604, -1, 90, 607, 234, 422, 179, - 251, 145, 606, 35, 936, 604, -1, 1102, 579, 528, - 598, -1, 406, -1, -1, 314, 234, 422, 770, 1102, - 604, -1, 90, 559, 343, 1102, 611, -1, 90, 559, - 343, 179, 251, 145, 1102, 611, -1, 28, 343, 1102, - 613, -1, 28, 343, 179, 145, 1102, 613, -1, 613, - -1, -1, 467, 613, 468, -1, -1, 614, -1, 613, - 614, -1, 35, 1014, -1, 54, 616, -1, 103, -1, - 249, 103, -1, 187, 615, 616, -1, 235, 616, -1, - 238, 616, -1, 249, 235, -1, 249, 238, -1, 280, - 53, 732, -1, 343, 242, 732, -1, 363, 478, 616, - -1, 323, -1, 323, 478, 616, -1, 53, -1, -1, - 4, -1, 457, 4, -1, 458, 4, -1, 1114, -1, - 616, -1, 617, 471, 616, -1, 90, 780, 619, 625, - 212, 506, -1, 90, 780, 619, 625, 212, 506, 173, - 620, 621, 623, -1, 396, -1, -1, 1104, -1, 1104, - 733, -1, 193, 620, -1, -1, 414, 620, -1, 249, - 414, -1, 622, -1, -1, 130, 625, 212, 506, 523, - -1, 130, 625, 212, 179, 145, 506, 523, -1, 300, - -1, -1, 90, 379, 1104, 627, 228, 1113, 528, -1, - 281, 1116, -1, -1, 130, 379, 1104, -1, 130, 379, - 179, 145, 1104, -1, 90, 147, 1104, 478, 630, -1, - 90, 147, 179, 251, 145, 1104, 478, 630, -1, 630, - 631, -1, -1, 336, 1104, -1, 421, 506, -1, 162, - 506, -1, 56, -1, 28, 147, 1104, 408, 633, -1, - 633, 634, -1, -1, 387, 506, -1, 28, 147, 1104, - 490, 20, 236, 1104, -1, 28, 147, 1104, 490, 25, - 796, -1, 28, 147, 1104, 490, 59, 467, 1012, 35, - 1012, 468, -1, 28, 147, 1104, 490, 72, 732, -1, - 28, 147, 1104, 490, 87, 732, -1, 28, 147, 1104, - 490, 128, 1012, -1, 28, 147, 1104, 490, 164, 784, - -1, 28, 147, 1104, 490, 625, 212, 1104, -1, 28, - 147, 1104, 490, 268, 815, -1, 28, 147, 1104, 490, - 268, 67, 732, 410, 1106, -1, 28, 147, 1104, 490, - 268, 151, 732, 410, 1106, -1, 28, 147, 1104, 490, - 336, 1104, -1, 28, 147, 1104, 490, 139, 392, 1104, - -1, 28, 147, 1104, 490, 376, 732, -1, 28, 147, - 1104, 490, 383, 339, 283, 732, -1, 28, 147, 1104, - 490, 383, 339, 122, 732, -1, 28, 147, 1104, 490, - 383, 339, 381, 732, -1, 28, 147, 1104, 490, 383, - 339, 80, 732, -1, 28, 147, 1104, 490, 343, 732, - -1, 28, 147, 1104, 490, 422, 732, -1, 28, 147, - 1104, 490, 234, 422, 732, -1, 28, 147, 1104, 490, - 159, 376, 732, -1, 28, 147, 1104, 490, 159, 104, - 433, 1104, -1, 28, 147, 1104, 490, 346, 1104, -1, - 28, 147, 1104, 490, 390, 157, 1012, 212, 1104, -1, - 28, 147, 1104, 490, 397, 1012, -1, 90, 159, 104, - 433, 1104, 639, 641, -1, 173, 620, -1, 249, 173, - -1, 414, 620, -1, 249, 414, -1, 637, -1, 638, - 637, -1, 638, -1, -1, 28, 159, 104, 433, 1104, - 639, 643, -1, 28, 159, 104, 433, 1104, 638, -1, - 270, 467, 642, 468, -1, -1, 646, -1, 642, 471, - 646, -1, 270, 467, 644, 468, -1, 645, -1, 644, - 471, 645, -1, 646, -1, 349, 646, -1, 22, 646, - -1, 130, 647, -1, 647, 648, -1, 1125, -1, 1113, - -1, 90, 346, 1104, 650, 652, 159, 104, 433, 1104, - 641, -1, 90, 346, 179, 251, 145, 1104, 650, 652, - 159, 104, 433, 1104, 641, -1, 397, 1113, -1, -1, - 421, 1113, -1, 421, 256, -1, 651, -1, -1, 28, - 346, 1104, 651, 643, -1, 28, 346, 1104, 651, -1, - 28, 346, 1104, 643, -1, 90, 159, 376, 1102, 467, - 560, 468, 590, 346, 1104, 641, -1, 90, 159, 376, - 179, 251, 145, 1102, 467, 560, 468, 590, 346, 1104, - 641, -1, 90, 159, 376, 1102, 285, 261, 1102, 561, - 533, 346, 1104, 641, -1, 90, 159, 376, 179, 251, - 145, 1102, 285, 261, 1102, 561, 533, 346, 1104, 641, - -1, 28, 159, 376, 990, 519, -1, 28, 159, 376, - 179, 145, 990, 519, -1, 184, 159, 336, 1104, 658, - 162, 346, 1104, 204, 1104, 641, -1, 222, 387, -1, - 140, -1, 657, 467, 991, 468, -1, -1, 90, 409, - 232, 157, 660, 346, 1104, 641, -1, 90, 409, 232, - 179, 251, 145, 157, 660, 346, 1104, 641, -1, 1116, - -1, 409, -1, 130, 409, 232, 157, 660, 346, 1104, - -1, 130, 409, 232, 179, 145, 157, 660, 346, 1104, - -1, 28, 409, 232, 157, 660, 346, 1104, 643, -1, - 90, 290, 1104, 266, 1102, 669, 670, 667, 665, 666, - -1, 28, 290, 1104, 266, 1102, 668, 665, 666, -1, - 410, 467, 1035, 468, -1, -1, 429, 65, 467, 1035, - 468, -1, -1, 387, 1117, -1, -1, 387, 1117, -1, - -1, 35, 3, -1, -1, 157, 671, -1, -1, 26, - -1, 342, -1, 198, -1, 408, -1, 116, -1, 90, - 20, 236, 1104, 397, 188, 173, 620, -1, 90, 392, - 1104, 674, 675, 266, 1102, 677, 683, 686, 144, 301, - 1110, 467, 687, 468, -1, 90, 83, 392, 1104, 24, - 675, 266, 1102, 689, 690, 157, 131, 332, 686, 144, - 301, 1110, 467, 687, 468, -1, 45, -1, 24, -1, - 199, 261, -1, 676, -1, 675, 271, 676, -1, 198, - -1, 116, -1, 408, -1, 408, 261, 580, -1, 395, - -1, 313, 678, -1, -1, 679, -1, 678, 679, -1, - 680, 681, 883, 682, -1, 247, -1, 265, -1, 376, - -1, 332, -1, 1122, -1, 157, 684, 685, -1, -1, - 131, -1, -1, 332, -1, 364, -1, 425, 467, 1035, - 468, -1, -1, 688, -1, 687, 471, 688, -1, -1, - 1112, -1, 4, -1, 1113, -1, 1125, -1, 162, 1102, - -1, -1, -1, 690, 691, -1, 251, 113, -1, 113, - -1, 192, 181, -1, 192, 114, -1, 251, 412, -1, - 249, 190, -1, 90, 139, 392, 1104, 266, 1125, 144, - 301, 1110, 467, 468, -1, 90, 139, 392, 1104, 266, - 1125, 425, 693, 144, 301, 1110, 467, 468, -1, 694, - -1, 693, 32, 694, -1, 1122, 185, 467, 695, 468, - -1, 5, -1, 695, 471, 5, -1, 28, 139, 392, - 1104, 697, -1, 133, -1, 133, 321, -1, 133, 29, - -1, 123, -1, 90, 37, 1104, 65, 467, 1035, 468, - 690, -1, 130, 37, 1104, 523, -1, 90, 25, 1110, - 794, 701, -1, 90, 25, 1110, 705, -1, 90, 268, - 813, 701, -1, 90, 397, 732, 701, -1, 90, 397, - 732, -1, 90, 397, 732, 35, 467, 1002, 468, -1, - 90, 397, 732, 35, 137, 467, 708, 468, -1, 90, - 397, 732, 35, 305, 701, -1, 90, 383, 339, 283, - 732, 701, -1, 90, 383, 339, 122, 732, 701, -1, - 90, 383, 339, 381, 732, 701, -1, 90, 383, 339, - 80, 732, 701, -1, 90, 72, 732, 701, -1, 90, - 72, 179, 251, 145, 732, 701, -1, 90, 72, 732, - 162, 732, -1, 90, 72, 179, 251, 145, 732, 162, - 732, -1, 467, 702, 468, -1, 703, -1, 702, 471, - 703, -1, 1125, 455, 704, -1, 1125, -1, 791, -1, - 1129, -1, 1069, -1, 616, -1, 1113, -1, 250, -1, - 467, 706, 468, -1, 707, -1, 706, 471, 707, -1, - 3, 455, 704, -1, 709, -1, -1, 1113, -1, 709, - 471, 1113, -1, 28, 397, 732, 22, 415, 711, 1113, - -1, 28, 397, 732, 22, 415, 711, 1113, 45, 1113, - -1, 28, 397, 732, 22, 415, 711, 1113, 24, 1113, - -1, 28, 397, 732, 318, 415, 1113, 387, 1113, -1, - 179, 251, 145, -1, -1, 90, 268, 67, 732, 715, - 157, 397, 1012, 410, 1106, 716, 35, 713, -1, 714, - -1, 713, 471, 714, -1, 268, 1112, 813, 717, 718, - -1, 268, 1112, 815, 717, 718, -1, 164, 1112, 784, - -1, 164, 1112, 467, 1074, 468, 784, -1, 368, 1012, - -1, 111, -1, -1, 151, 732, -1, -1, 157, 339, - -1, 157, 272, 53, 732, -1, -1, 309, -1, -1, - 90, 268, 151, 732, 410, 1106, -1, 28, 268, 151, - 732, 410, 1106, 22, 713, -1, 28, 268, 151, 732, - 410, 1106, 130, 721, -1, 722, -1, 721, 471, 722, - -1, 268, 1112, 467, 1074, 468, -1, 164, 1112, 467, - 1074, 468, -1, 130, 268, 67, 732, 410, 1106, 523, - -1, 130, 268, 67, 179, 145, 732, 410, 1106, 523, - -1, 130, 268, 151, 732, 410, 1106, 523, -1, 130, - 268, 151, 179, 145, 732, 410, 1106, 523, -1, 130, - 280, 53, 1117, 523, -1, 308, 280, 53, 1117, 387, - 1116, -1, 130, 728, 179, 145, 731, 523, -1, 130, - 728, 731, 523, -1, 130, 729, 179, 145, 1103, 523, - -1, 130, 729, 1103, 523, -1, 130, 730, 1104, 266, - 732, 523, -1, 130, 730, 179, 145, 1104, 266, 732, - 523, -1, 130, 397, 734, 523, -1, 130, 397, 179, - 145, 734, 523, -1, 130, 128, 734, 523, -1, 130, - 128, 179, 145, 734, 523, -1, 130, 188, 79, 731, - 523, -1, 130, 188, 79, 179, 145, 731, 523, -1, - 376, -1, 343, -1, 422, -1, 234, 422, -1, 188, - -1, 159, 376, -1, 72, -1, 87, -1, 365, -1, - 383, 339, 283, -1, 383, 339, 122, -1, 383, 339, - 381, -1, 383, 339, 80, -1, 20, 236, -1, 139, - 392, -1, 147, -1, 159, 104, 433, -1, 303, -1, - 336, -1, 346, -1, 290, -1, 334, -1, 392, -1, - 732, -1, 731, 471, 732, -1, 1122, -1, 1122, 733, - -1, 469, 1107, -1, 733, 469, 1107, -1, 1012, -1, - 734, 471, 1012, -1, 395, 947, 991, 736, 523, -1, - 86, 178, -1, 323, 178, -1, -1, 75, 266, 738, - 732, 206, 740, -1, 75, 266, 739, 1104, 206, 740, - -1, 75, 266, 397, 1012, 206, 740, -1, 75, 266, - 128, 1012, 206, 740, -1, 75, 266, 25, 796, 206, - 740, -1, 75, 266, 164, 784, 206, 740, -1, 75, - 266, 268, 815, 206, 740, -1, 75, 266, 83, 1104, - 266, 732, 206, 740, -1, 75, 266, 83, 1104, 266, - 128, 732, 206, 740, -1, 75, 266, 290, 1104, 266, - 732, 206, 740, -1, 75, 266, 334, 1104, 266, 732, - 206, 740, -1, 75, 266, 390, 157, 1012, 212, 1104, - 206, 740, -1, 75, 266, 392, 1104, 266, 732, 206, - 740, -1, 75, 266, 268, 67, 732, 410, 1106, 206, - 740, -1, 75, 266, 268, 151, 732, 410, 1106, 206, - 740, -1, 75, 266, 213, 260, 616, 206, 740, -1, - 75, 266, 59, 467, 1012, 35, 1012, 468, 206, 740, - -1, 73, -1, 188, -1, 343, -1, 365, -1, 376, - -1, 422, -1, 234, 422, -1, 72, -1, 87, -1, - 159, 376, -1, 383, 339, 80, -1, 383, 339, 122, - -1, 383, 339, 283, -1, 383, 339, 381, -1, 20, - 236, -1, 105, -1, 139, 392, -1, 147, -1, 159, - 104, 433, -1, 625, 212, -1, 303, -1, 329, -1, - 336, -1, 346, -1, 371, -1, 379, -1, 1113, -1, - 256, -1, 341, 211, 742, 266, 743, 732, 206, 745, - -1, 341, 211, 742, 266, 744, 1104, 206, 745, -1, - 341, 211, 742, 266, 397, 1012, 206, 745, -1, 341, - 211, 742, 266, 128, 1012, 206, 745, -1, 341, 211, - 742, 266, 25, 796, 206, 745, -1, 341, 211, 742, - 266, 164, 784, 206, 745, -1, 341, 211, 742, 266, - 213, 260, 616, 206, 745, -1, 157, 506, -1, -1, - 73, -1, 159, 376, -1, 343, -1, 376, -1, 422, - -1, 234, 422, -1, 105, -1, 139, 392, -1, 625, - 212, -1, 303, -1, 329, -1, 336, -1, 371, -1, - 379, -1, 1113, -1, 256, -1, 152, 747, -1, 241, - 747, -1, 933, -1, 748, 933, -1, 248, 749, 933, - -1, 298, 749, 933, -1, 154, 749, 933, -1, 214, - 749, 933, -1, 19, 1114, 749, 933, -1, 316, 1114, - 749, 933, -1, 1114, 749, 933, -1, 26, 749, 933, - -1, 160, 749, 933, -1, 160, 1114, 749, 933, -1, - 160, 26, 749, 933, -1, 44, 749, 933, -1, 44, - 1114, 749, 933, -1, 44, 26, 749, 933, -1, 162, - -1, 185, -1, 748, -1, -1, 168, 752, 266, 755, - 387, 756, 758, -1, 327, 752, 266, 755, 162, 756, - 523, -1, 327, 168, 269, 157, 752, 266, 755, 162, - 756, 523, -1, 753, -1, 26, -1, 26, 299, -1, - 26, 467, 580, 468, -1, 26, 299, 467, 580, 468, - -1, 754, -1, 753, 471, 754, -1, 342, 579, -1, - 312, 579, -1, 90, 579, -1, 1122, 579, -1, 1101, - -1, 376, 1101, -1, 343, 1101, -1, 159, 104, 433, - 1103, -1, 159, 346, 1103, -1, 164, 783, -1, 105, - 1103, -1, 128, 731, -1, 212, 1103, -1, 213, 260, - 617, -1, 336, 1103, -1, 379, 1103, -1, 397, 731, - -1, 26, 377, 185, 336, 1103, -1, 26, 344, 185, - 336, 1103, -1, 26, 165, 185, 336, 1103, -1, 757, - -1, 756, 471, 757, -1, 1116, -1, 171, 1116, -1, - 429, 168, 269, -1, -1, 168, 753, 387, 1117, 761, - 762, -1, 327, 753, 162, 1117, 762, 523, -1, 327, - 23, 269, 157, 753, 162, 1117, 762, 523, -1, 429, - 23, 269, -1, -1, 169, 53, 1116, -1, -1, 28, - 111, 299, 764, 766, -1, 764, 765, -1, -1, 185, - 336, 1103, -1, 157, 329, 1117, -1, 157, 409, 1117, - -1, 168, 752, 266, 767, 387, 756, 758, -1, 327, - 752, 266, 767, 162, 756, 523, -1, 327, 168, 269, - 157, 752, 266, 767, 162, 756, 523, -1, 377, -1, - 165, -1, 344, -1, 398, -1, 337, -1, 90, 769, - 188, 770, 771, 266, 1102, 772, 467, 773, 468, 528, - 598, 1000, -1, 90, 769, 188, 770, 179, 251, 145, - 1108, 266, 1102, 772, 467, 773, 468, 528, 598, 1000, - -1, 403, -1, -1, 79, -1, -1, 1108, -1, -1, - 410, 1106, -1, -1, 774, -1, 773, 471, 774, -1, - 1122, 775, 776, 777, 778, -1, 1040, 775, 776, 777, - 778, -1, 467, 1035, 468, 775, 776, 777, 778, -1, - 71, 732, -1, -1, 732, -1, -1, 36, -1, 120, - -1, -1, 451, 154, -1, 451, 214, -1, -1, 90, - 780, 164, 1110, 785, 326, 790, 798, 803, -1, 90, - 780, 164, 1110, 785, 326, 376, 467, 805, 468, 798, - 803, -1, 90, 780, 164, 1110, 785, 798, 803, -1, - 271, 320, -1, -1, 467, 782, 468, -1, 467, 468, - -1, 787, -1, 782, 471, 787, -1, 784, -1, 783, - 471, 784, -1, 1110, 781, -1, 1128, -1, 1122, -1, - 1122, 1095, -1, 467, 786, 468, -1, 467, 468, -1, - 792, -1, 786, 471, 792, -1, 788, 789, 791, -1, - 789, 788, 791, -1, 789, 791, -1, 788, 791, -1, - 791, -1, 185, -1, 274, -1, 195, -1, 185, 274, - -1, 418, -1, 1123, -1, 791, -1, 1012, -1, 1123, - 733, 461, 397, -1, 351, 1123, 733, 461, 397, -1, - 787, -1, 787, 111, 1035, -1, 787, 455, 1035, -1, - 787, -1, 467, 459, 468, -1, 467, 795, 468, -1, - 467, 272, 53, 795, 468, -1, 467, 795, 272, 53, - 795, 468, -1, 793, -1, 795, 471, 793, -1, 1110, - 794, -1, 796, -1, 797, 471, 796, -1, 800, -1, - 798, 800, -1, 55, 266, 256, 196, -1, 326, 256, - 266, 256, 196, -1, 369, -1, 182, -1, 361, -1, - 424, -1, 148, 341, 115, -1, 148, 341, 205, -1, - 341, 115, -1, 341, 205, -1, 217, -1, 251, 217, - -1, 89, 616, -1, 333, 616, -1, 511, -1, 282, - 1122, -1, 35, 801, -1, 212, 506, -1, 390, 802, - -1, 428, -1, 799, -1, 1113, -1, 1113, 471, 1113, - -1, 157, 397, 1012, -1, 802, 471, 157, 397, 1012, - -1, 429, 701, -1, -1, 789, 791, -1, 804, -1, - 805, 471, 804, -1, 28, 164, 784, 807, 808, -1, - 799, -1, 807, 799, -1, 324, -1, -1, 130, 164, - 783, 523, -1, 130, 164, 179, 145, 783, 523, -1, - 130, 25, 797, 523, -1, 130, 25, 179, 145, 797, - 523, -1, 130, 268, 814, 523, -1, 130, 268, 179, - 145, 814, 523, -1, 467, 1012, 468, -1, 467, 1012, - 471, 1012, 468, -1, 467, 250, 471, 1012, 468, -1, - 467, 1012, 471, 250, 468, -1, 1066, -1, 1122, 469, - 813, -1, 815, -1, 814, 471, 815, -1, 813, 812, - -1, 126, 817, -1, 818, -1, 817, 818, -1, 1113, - -1, 212, 506, -1, 90, 59, 467, 1012, 35, 1012, - 468, 429, 164, 784, 820, -1, 90, 59, 467, 1012, - 35, 1012, 468, 431, 164, 820, -1, 90, 59, 467, - 1012, 35, 1012, 468, 429, 195, 820, -1, 35, 183, - -1, 35, 38, -1, -1, 130, 59, 822, 467, 1012, - 35, 1012, 468, 523, -1, 179, 145, -1, -1, 90, - 780, 390, 157, 1012, 212, 1104, 467, 824, 468, -1, - 162, 360, 429, 164, 784, 471, 387, 360, 429, 164, - 784, -1, 387, 360, 429, 164, 784, 471, 162, 360, - 429, 164, 784, -1, 162, 360, 429, 164, 784, -1, - 387, 360, 429, 164, 784, -1, 130, 390, 822, 157, - 1012, 212, 1104, 523, -1, 315, 827, 1102, -1, 315, - 828, 1104, -1, 315, 467, 829, 468, 827, 1102, -1, - 315, 467, 829, 468, 828, 1104, -1, 188, -1, 376, - -1, 336, -1, 375, -1, 105, -1, 830, -1, 829, - 471, 830, -1, 420, -1, 28, 379, 1104, 349, 527, - -1, 28, 379, 1104, 322, 527, -1, 28, 25, 796, - 318, 387, 1104, -1, 28, 72, 732, 318, 387, 1104, - -1, 28, 87, 732, 318, 387, 1104, -1, 28, 105, - 1105, 318, 387, 1105, -1, 28, 128, 732, 318, 387, - 1104, -1, 28, 128, 732, 318, 83, 1104, 387, 1104, - -1, 28, 159, 104, 433, 1104, 318, 387, 1104, -1, - 28, 164, 784, 318, 387, 1104, -1, 28, 171, 1115, - 318, 387, 1115, -1, 28, 625, 212, 1104, 318, 387, - 1104, -1, 28, 268, 67, 732, 410, 1106, 318, 387, - 1104, -1, 28, 268, 151, 732, 410, 1106, 318, 387, - 1104, -1, 28, 290, 1104, 266, 1102, 318, 387, 1104, - -1, 28, 290, 179, 145, 1104, 266, 1102, 318, 387, - 1104, -1, 28, 303, 1104, 318, 387, 1104, -1, 28, - 336, 1104, 318, 387, 1104, -1, 28, 346, 1104, 318, - 387, 1104, -1, 28, 371, 1104, 318, 387, 1104, -1, - 28, 376, 990, 318, 387, 1104, -1, 28, 376, 179, - 145, 990, 318, 387, 1104, -1, 28, 343, 1102, 318, - 387, 1104, -1, 28, 343, 179, 145, 1102, 318, 387, - 1104, -1, 28, 422, 1102, 318, 387, 1104, -1, 28, - 422, 179, 145, 1102, 318, 387, 1104, -1, 28, 234, - 422, 1102, 318, 387, 1104, -1, 28, 234, 422, 179, - 145, 1102, 318, 387, 1104, -1, 28, 188, 1102, 318, - 387, 1104, -1, 28, 188, 179, 145, 1102, 318, 387, - 1104, -1, 28, 159, 376, 990, 318, 387, 1104, -1, - 28, 159, 376, 179, 145, 990, 318, 387, 1104, -1, - 28, 376, 990, 318, 833, 1104, 387, 1104, -1, 28, - 376, 179, 145, 990, 318, 833, 1104, 387, 1104, -1, - 28, 234, 422, 1102, 318, 833, 1104, 387, 1104, -1, - 28, 234, 422, 179, 145, 1102, 318, 833, 1104, 387, - 1104, -1, 28, 376, 990, 318, 83, 1104, 387, 1104, - -1, 28, 376, 179, 145, 990, 318, 83, 1104, 387, - 1104, -1, 28, 159, 376, 990, 318, 833, 1104, 387, - 1104, -1, 28, 159, 376, 179, 145, 990, 318, 833, - 1104, 387, 1104, -1, 28, 334, 1104, 266, 1102, 318, - 387, 1104, -1, 28, 392, 1104, 266, 1102, 318, 387, - 1104, -1, 28, 139, 392, 1104, 318, 387, 1104, -1, - 28, 329, 1115, 318, 387, 1115, -1, 28, 409, 1115, - 318, 387, 1115, -1, 28, 379, 1104, 318, 387, 1104, - -1, 28, 365, 732, 318, 387, 1104, -1, 28, 383, - 339, 283, 732, 318, 387, 1104, -1, 28, 383, 339, - 122, 732, 318, 387, 1104, -1, 28, 383, 339, 381, - 732, 318, 387, 1104, -1, 28, 383, 339, 80, 732, - 318, 387, 1104, -1, 28, 397, 732, 318, 387, 1104, - -1, 28, 397, 732, 318, 42, 1104, 387, 1104, 523, - -1, 73, -1, -1, 349, 104, -1, -1, 28, 164, - 784, 119, 266, 147, 1104, -1, 28, 392, 1104, 266, - 1102, 119, 266, 147, 1104, -1, 28, 234, 422, 1102, - 119, 266, 147, 1104, -1, 28, 188, 1102, 119, 266, - 147, 1104, -1, 28, 25, 796, 349, 336, 1104, -1, - 28, 72, 732, 349, 336, 1104, -1, 28, 87, 732, - 349, 336, 1104, -1, 28, 128, 732, 349, 336, 1104, - -1, 28, 147, 1104, 349, 336, 1104, -1, 28, 164, - 784, 349, 336, 1104, -1, 28, 268, 815, 349, 336, - 1104, -1, 28, 268, 67, 732, 410, 1106, 349, 336, - 1104, -1, 28, 268, 151, 732, 410, 1106, 349, 336, - 1104, -1, 28, 376, 990, 349, 336, 1104, -1, 28, - 376, 179, 145, 990, 349, 336, 1104, -1, 28, 365, - 732, 349, 336, 1104, -1, 28, 383, 339, 283, 732, - 349, 336, 1104, -1, 28, 383, 339, 122, 732, 349, - 336, 1104, -1, 28, 383, 339, 381, 732, 349, 336, - 1104, -1, 28, 383, 339, 80, 732, 349, 336, 1104, - -1, 28, 343, 1102, 349, 336, 1104, -1, 28, 343, - 179, 145, 1102, 349, 336, 1104, -1, 28, 422, 1102, - 349, 336, 1104, -1, 28, 422, 179, 145, 1102, 349, - 336, 1104, -1, 28, 234, 422, 1102, 349, 336, 1104, - -1, 28, 234, 422, 179, 145, 1102, 349, 336, 1104, - -1, 28, 159, 376, 990, 349, 336, 1104, -1, 28, - 159, 376, 179, 145, 990, 349, 336, 1104, -1, 28, - 397, 732, 349, 336, 1104, -1, 28, 268, 815, 349, - 467, 838, 468, -1, 839, -1, 838, 471, 839, -1, - 1125, 455, 250, -1, 1125, 455, 840, -1, 791, -1, - 1129, -1, 1069, -1, 616, -1, 1113, -1, 28, 25, - 796, 281, 387, 1116, -1, 28, 72, 732, 281, 387, - 1116, -1, 28, 87, 732, 281, 387, 1116, -1, 28, - 105, 1105, 281, 387, 1116, -1, 28, 128, 732, 281, - 387, 1116, -1, 28, 164, 784, 281, 387, 1116, -1, - 28, 625, 212, 1104, 281, 387, 1116, -1, 28, 213, - 260, 616, 281, 387, 1116, -1, 28, 268, 815, 281, - 387, 1116, -1, 28, 268, 67, 732, 410, 1106, 281, - 387, 1116, -1, 28, 268, 151, 732, 410, 1106, 281, - 387, 1116, -1, 28, 336, 1104, 281, 387, 1116, -1, - 28, 397, 732, 281, 387, 1116, -1, 28, 379, 1104, - 281, 387, 1116, -1, 28, 365, 732, 281, 387, 1116, - -1, 28, 383, 339, 122, 732, 281, 387, 1116, -1, - 28, 383, 339, 80, 732, 281, 387, 1116, -1, 28, - 159, 104, 433, 1104, 281, 387, 1116, -1, 28, 346, - 1104, 281, 387, 1116, -1, 28, 139, 392, 1104, 281, - 387, 1116, -1, 28, 303, 1104, 281, 387, 1116, -1, - 28, 371, 1104, 281, 387, 1116, -1, 90, 303, 1104, - 843, 803, -1, 844, -1, -1, 157, 376, 991, -1, - 157, 26, 377, -1, 28, 303, 1104, 349, 701, -1, - 28, 303, 1104, 22, 376, 991, -1, 28, 303, 1104, - 349, 376, 991, -1, 28, 303, 1104, 130, 376, 991, - -1, 90, 371, 1104, 82, 1113, 303, 847, 803, -1, - 848, -1, 847, 471, 848, -1, 1125, -1, 28, 371, - 1104, 349, 701, -1, 28, 371, 1104, 82, 1113, -1, - 28, 371, 1104, 314, 303, 803, -1, 28, 371, 1104, - 349, 303, 847, 803, -1, 28, 371, 1104, 133, -1, - 28, 371, 1104, 123, -1, 130, 371, 1104, 523, -1, - 130, 371, 179, 145, 1104, 523, -1, 90, 780, 334, - 1104, 35, 266, 856, 387, 1102, 1000, 126, 857, 852, - -1, 252, -1, 854, -1, 467, 853, 468, -1, 853, - 470, 855, -1, 855, -1, 936, -1, 911, -1, 927, - -1, 920, -1, 858, -1, 854, -1, -1, 342, -1, - 408, -1, 116, -1, 198, -1, 199, -1, 27, -1, - -1, 253, 1122, 859, -1, 471, 1113, -1, -1, 223, - 1122, -1, 405, 1122, -1, 405, 459, -1, 18, 863, - -1, 46, 863, 866, -1, 363, 389, 866, -1, 77, - 863, -1, 136, 863, -1, 330, 863, -1, 335, 1122, - -1, 317, 335, 1122, -1, 317, 1122, -1, 330, 863, - 387, 335, 1122, -1, 330, 863, 387, 1122, -1, 295, - 389, 1113, -1, 77, 296, 1113, -1, 330, 296, 1113, - -1, 432, -1, 389, -1, -1, 208, 220, 502, -1, - 306, 267, -1, 306, 434, -1, 113, -1, 251, 113, - -1, 864, -1, 865, 471, 864, -1, 865, 864, -1, - 865, -1, -1, 90, 559, 422, 1102, 579, 528, 35, - 936, 868, -1, 90, 271, 320, 559, 422, 1102, 579, - 528, 35, 936, 868, -1, 90, 559, 310, 422, 1102, - 467, 580, 468, 528, 35, 936, 868, -1, 90, 271, - 320, 559, 310, 422, 1102, 467, 580, 468, 528, 35, - 936, 868, -1, 429, 65, 269, -1, 429, 57, 65, - 269, -1, 429, 225, 65, 269, -1, -1, 224, 1109, - -1, 90, 105, 1105, 478, 871, -1, 872, -1, -1, - 873, -1, 872, 873, -1, 874, 875, 1114, -1, 874, - 875, 503, -1, 874, 875, 111, -1, 3, -1, 82, - 222, -1, 134, -1, 228, -1, 281, -1, 379, -1, - 381, -1, 455, -1, -1, 28, 105, 1105, 429, 871, - -1, 28, 105, 1105, 871, -1, 28, 105, 1105, 349, - 379, 1104, -1, 28, 105, 1105, 510, -1, 130, 105, - 1105, -1, 130, 105, 179, 145, 1105, -1, 28, 72, - 732, 314, 421, -1, 28, 375, 349, 497, -1, 28, - 375, 322, 509, -1, 90, 128, 732, 883, 1012, 568, - -1, 28, 128, 732, 522, -1, 28, 128, 732, 130, - 251, 256, -1, 28, 128, 732, 349, 251, 256, -1, - 28, 128, 732, 22, 576, -1, 28, 128, 732, 130, - 83, 1104, 523, -1, 28, 128, 732, 130, 83, 179, - 145, 1104, 523, -1, 28, 128, 732, 413, 83, 1104, - -1, 35, -1, -1, 28, 383, 339, 122, 732, 701, - -1, 28, 383, 339, 80, 732, 22, 232, 157, 1103, - 886, 731, -1, 28, 383, 339, 80, 732, 28, 232, - 157, 1103, 886, 731, -1, 28, 383, 339, 80, 732, - 28, 232, 320, 732, 886, 732, -1, 28, 383, 339, - 80, 732, 28, 232, 157, 1103, 320, 732, 886, 732, - -1, 28, 383, 339, 80, 732, 130, 232, 157, 1103, - -1, 28, 383, 339, 80, 732, 130, 232, 179, 145, - 157, 1103, -1, 429, -1, 452, -1, 90, 715, 87, - 732, 157, 1113, 387, 1113, 162, 732, -1, 69, 895, - 1102, 889, -1, 69, 895, -1, 69, 895, 1108, 266, - 1102, -1, 410, 1108, -1, -1, 411, 896, 897, 895, - -1, 411, 896, 897, 895, 1102, -1, 411, 896, 897, - 895, 893, -1, 411, 467, 891, 468, -1, 411, 467, - 891, 468, 1102, 898, -1, 892, -1, 891, 471, 892, - -1, 894, -1, 420, -1, 161, -1, 163, -1, 3, - -1, 894, 895, -1, 894, 895, 1102, 898, -1, 31, - -1, 30, -1, 420, -1, -1, 163, -1, -1, 161, - -1, -1, 467, 1103, 468, -1, -1, 146, 900, -1, - 146, 894, 895, 900, -1, 146, 420, 900, -1, 146, - 467, 901, 468, 900, -1, 936, -1, 911, -1, 927, - -1, 920, -1, 932, -1, 602, -1, 605, -1, 608, - -1, 908, -1, 902, -1, 901, 471, 902, -1, 903, - 904, -1, 1124, -1, 894, -1, 503, -1, 616, -1, - -1, 295, 1104, 906, 35, 907, -1, 467, 1074, 468, - -1, -1, 936, -1, 911, -1, 927, -1, 920, -1, - 144, 1104, 909, -1, 90, 559, 376, 603, 35, 144, - 1104, 909, 604, -1, 90, 559, 376, 179, 251, 145, - 603, 35, 144, 1104, 909, 604, -1, 467, 1071, 468, - -1, -1, 107, 1104, -1, 107, 295, 1104, -1, 107, - 26, -1, 107, 295, 26, -1, 944, 198, 204, 912, - 913, 917, 919, -1, 1102, -1, 1102, 35, 1122, -1, - 936, -1, 279, 914, 415, 936, -1, 467, 915, 468, - 936, -1, 467, 915, 468, 279, 914, 415, 936, -1, - 111, 416, -1, 409, -1, 375, -1, 916, -1, 915, - 471, 916, -1, 1122, 1096, -1, 266, 81, 918, 126, - 408, 349, 928, 1000, -1, 266, 81, 918, 126, 252, - -1, -1, 467, 773, 468, 1000, -1, 266, 83, 1104, - -1, -1, 325, 1099, -1, -1, 944, 116, 162, 992, - 921, 1001, 919, -1, 410, 981, -1, -1, 229, 947, - 991, 923, 925, -1, 185, 924, 239, -1, -1, 20, - 352, -1, 332, 352, -1, 332, 143, -1, 352, 408, - 143, -1, 352, -1, 352, 332, 143, -1, 143, -1, - 20, 143, -1, 255, -1, -1, 255, -1, 356, 230, - -1, -1, 944, 408, 992, 349, 928, 980, 1001, 919, - -1, 929, -1, 928, 471, 929, -1, 930, 455, 1035, - -1, 467, 931, 468, 455, 1035, -1, 1122, 1096, -1, - 930, -1, 931, 471, 930, -1, 110, 933, 934, 102, - 935, 157, 936, -1, 1104, -1, -1, 934, 249, 338, - -1, 934, 338, -1, 934, 49, -1, 934, 197, -1, - -1, 429, 176, -1, 431, 176, -1, 938, -1, 937, - -1, 467, 938, 468, -1, 467, 937, 468, -1, 940, - -1, 939, 952, -1, 939, 951, 973, 956, -1, 939, - 951, 955, 974, -1, 941, 939, -1, 941, 939, 952, - -1, 941, 939, 951, 973, 956, -1, 941, 939, 951, - 955, 974, -1, 940, -1, 937, -1, 342, 950, 1098, - 945, 980, 1000, 965, 972, 1052, -1, 342, 949, 1099, - 945, 980, 1000, 965, 972, 1052, -1, 979, -1, 376, - 990, -1, 939, 402, 948, 939, -1, 939, 202, 948, - 939, -1, 939, 140, 948, 939, -1, 429, 942, -1, - 452, 942, -1, 429, 310, 942, -1, 943, -1, 942, - 471, 943, -1, 1104, 898, 35, 467, 907, 468, -1, - 941, -1, -1, 204, 946, -1, -1, 382, 947, 1102, - -1, 380, 947, 1102, -1, 225, 382, 947, 1102, -1, - 225, 380, 947, 1102, -1, 167, 382, 947, 1102, -1, - 167, 380, 947, 1102, -1, 406, 947, 1102, -1, 376, - 1102, -1, 1102, -1, 376, -1, -1, 26, -1, 125, - -1, -1, 125, -1, 125, 266, 467, 1071, 468, -1, - 26, -1, -1, 952, -1, -1, 272, 53, 953, -1, - 954, -1, 953, 471, 954, -1, 1035, 410, 1069, 778, - -1, 1035, 777, 778, -1, 957, 958, -1, 958, 957, - -1, 957, -1, 958, -1, 955, -1, -1, 222, 959, - -1, 222, 959, 471, 960, -1, 152, 964, 961, 963, - 267, -1, 152, 964, 963, 267, -1, 263, 960, -1, - 263, 961, 963, -1, 1035, -1, 26, -1, 1035, -1, - 1037, -1, 457, 962, -1, 458, 962, -1, 1112, -1, - 4, -1, 332, -1, 333, -1, 154, -1, 248, -1, - 171, 53, 966, -1, -1, 967, -1, 966, 471, 967, - -1, 1035, -1, 968, -1, 970, -1, 969, -1, 971, - -1, 467, 468, -1, 331, 467, 1071, 468, -1, 93, - 467, 1071, 468, -1, 172, 350, 467, 966, 468, -1, - 174, 1035, -1, -1, 975, -1, 157, 306, 267, -1, - 973, -1, -1, 976, -1, 975, 976, -1, 977, 978, - 926, -1, 157, 408, -1, 157, 249, 210, 408, -1, - 157, 352, -1, 157, 210, 352, -1, 261, 1101, -1, - -1, 416, 467, 1071, 468, -1, 979, 471, 467, 1071, - 468, -1, 162, 981, -1, -1, 982, -1, 981, 471, - 982, -1, 990, 985, -1, 990, 985, 993, -1, 995, - 986, -1, 215, 995, 986, -1, 1005, 985, -1, 215, - 1005, 985, -1, 937, 985, -1, 215, 937, 985, -1, - 983, -1, 467, 983, 468, 984, -1, 467, 983, 468, - -1, 982, 91, 209, 982, -1, 982, 987, 209, 982, - 989, -1, 982, 209, 982, 989, -1, 982, 245, 987, - 209, 982, -1, 982, 245, 209, 982, -1, 35, 1122, - 467, 1103, 468, -1, 35, 1122, -1, 1122, 467, 1103, - 468, -1, 1122, -1, 984, -1, -1, 984, -1, 35, - 467, 1003, 468, -1, 35, 1122, 467, 1003, 468, -1, - 1122, 467, 1003, 468, -1, -1, 163, 988, -1, 219, - 988, -1, 328, 988, -1, 194, -1, 275, -1, -1, - 410, 467, 1103, 468, -1, 266, 1035, -1, 1102, -1, - 1102, 459, -1, 267, 1102, -1, 267, 467, 1102, 468, - -1, 990, -1, 991, 471, 990, -1, 990, -1, 990, - 1122, -1, 990, 35, 1122, -1, 378, 1110, 467, 1071, - 468, 994, -1, 319, 467, 1035, 468, -1, -1, 1040, - 999, -1, 333, 162, 467, 997, 468, 999, -1, 1040, - 998, -1, 996, -1, 997, 471, 996, -1, 35, 467, - 1003, 468, -1, -1, 452, 273, -1, -1, 426, 1035, - -1, -1, 426, 1035, -1, 426, 94, 261, 933, -1, - -1, 1003, -1, -1, 1004, -1, 1003, 471, 1004, -1, - 1122, 1012, 524, -1, 446, 467, 1037, 1049, 74, 1006, - 468, -1, 446, 467, 441, 467, 1010, 468, 471, 1037, - 1049, 74, 1006, 468, -1, 1007, -1, 1006, 471, 1007, - -1, 1122, 1012, -1, 1122, 1012, 1008, -1, 1122, 157, - 273, -1, 1009, -1, 1008, 1009, -1, 3, 1036, -1, - 111, 1036, -1, 251, 256, -1, 256, -1, 1011, -1, - 1010, 471, 1011, -1, 1036, 35, 1125, -1, 111, 1036, - -1, 1014, 1013, -1, 351, 1014, 1013, -1, 1014, 34, - 465, 1112, 466, -1, 351, 1014, 34, 465, 1112, 466, - -1, 1014, 34, -1, 351, 1014, 34, -1, 1013, 465, - 466, -1, 1013, 465, 1112, 466, -1, -1, 1016, -1, - 1018, -1, 1020, -1, 1024, -1, 1030, -1, 1031, 1033, - -1, 1031, 467, 1112, 468, -1, 1018, -1, 1021, -1, - 1025, -1, 1030, -1, 1123, 1017, -1, 1123, 733, 1017, - -1, 467, 1071, 468, -1, -1, 200, -1, 201, -1, - 357, -1, 48, -1, 307, -1, 155, 1019, -1, 129, - 293, -1, 109, 1017, -1, 108, 1017, -1, 259, 1017, - -1, 51, -1, 467, 1112, 468, -1, -1, 1022, -1, - 1023, -1, 1022, -1, 1023, -1, 50, 1029, 467, 1071, - 468, -1, 50, 1029, -1, 1026, -1, 1027, -1, 1026, - -1, 1027, -1, 1028, 467, 1118, 468, -1, 1028, -1, - 63, 1029, -1, 62, 1029, -1, 417, -1, 244, 63, - 1029, -1, 244, 62, 1029, -1, 246, 1029, -1, 419, - -1, -1, 386, 467, 1112, 468, 1032, -1, 386, 1032, - -1, 385, 467, 1112, 468, 1032, -1, 385, 1032, -1, - 203, -1, 452, 385, 449, -1, 431, 385, 449, -1, - -1, 447, -1, 240, -1, 106, -1, 177, -1, 237, - -1, 1034, -1, 447, 387, 240, -1, 106, 387, 177, - -1, 106, 387, 237, -1, 106, 387, 1034, -1, 177, - 387, 237, -1, 177, 387, 1034, -1, 237, 387, 1034, - -1, -1, 340, -1, 340, 467, 1112, 468, -1, 1037, - -1, 1035, 11, 1012, -1, 1035, 71, 732, -1, 1035, - 40, 385, 449, 1035, -1, 457, 1035, -1, 458, 1035, - -1, 1035, 457, 1035, -1, 1035, 458, 1035, -1, 1035, - 459, 1035, -1, 1035, 460, 1035, -1, 1035, 461, 1035, - -1, 1035, 462, 1035, -1, 1035, 453, 1035, -1, 1035, - 454, 1035, -1, 1035, 455, 1035, -1, 1035, 15, 1035, - -1, 1035, 16, 1035, -1, 1035, 17, 1035, -1, 1035, - 463, 1035, -1, 1035, 463, -1, 1035, 1068, 1035, -1, - 1068, 1035, -1, 1035, 1068, -1, 1035, 32, 1035, -1, - 1035, 271, 1035, -1, 251, 1035, -1, 450, 1035, -1, - 1035, 221, 1035, -1, 1035, 221, 1035, 138, 1035, -1, - 1035, 450, 221, 1035, -1, 1035, 450, 221, 1035, 138, - 1035, -1, 1035, 180, 1035, -1, 1035, 180, 1035, 138, - 1035, -1, 1035, 450, 180, 1035, -1, 1035, 450, 180, - 1035, 138, 1035, -1, 1035, 354, 387, 1035, -1, 1035, - 354, 387, 1035, 138, 1035, -1, 1035, 450, 354, 387, - 1035, -1, 1035, 450, 354, 387, 1035, 138, 1035, -1, - 1035, 206, 256, -1, 1035, 207, -1, 1035, 206, 251, - 256, -1, 1035, 254, -1, 1062, 277, 1062, -1, 1035, - 206, 394, -1, 1035, 206, 251, 394, -1, 1035, 206, - 150, -1, 1035, 206, 251, 150, -1, 1035, 206, 404, - -1, 1035, 206, 251, 404, -1, 1035, 206, 125, 162, - 1035, -1, 1035, 206, 251, 125, 162, 1035, -1, 1035, - 206, 261, 467, 1074, 468, -1, 1035, 206, 251, 261, - 467, 1074, 468, -1, 1035, 47, 1097, 1036, 32, 1035, - -1, 1035, 450, 47, 1097, 1036, 32, 1035, -1, 1035, - 47, 373, 1036, 32, 1035, -1, 1035, 450, 47, 373, - 1036, 32, 1035, -1, 1035, 185, 1086, -1, 1035, 450, - 185, 1086, -1, 1035, 1070, 1065, 937, -1, 1035, 1070, - 1065, 467, 1035, 468, -1, 403, 937, -1, 1035, 206, - 127, -1, 1035, 206, 251, 127, -1, 111, -1, 1037, - -1, 1036, 11, 1012, -1, 457, 1036, -1, 458, 1036, - -1, 1036, 457, 1036, -1, 1036, 458, 1036, -1, 1036, - 459, 1036, -1, 1036, 460, 1036, -1, 1036, 461, 1036, - -1, 1036, 462, 1036, -1, 1036, 453, 1036, -1, 1036, - 454, 1036, -1, 1036, 455, 1036, -1, 1036, 15, 1036, - -1, 1036, 16, 1036, -1, 1036, 17, 1036, -1, 1036, - 463, 1036, -1, 1036, 463, -1, 1036, 1068, 1036, -1, - 1068, 1036, -1, 1036, 1068, -1, 1036, 206, 125, 162, - 1036, -1, 1036, 206, 251, 125, 162, 1036, -1, 1036, - 206, 261, 467, 1074, 468, -1, 1036, 206, 251, 261, - 467, 1074, 468, -1, 1036, 206, 127, -1, 1036, 206, - 251, 127, -1, 1092, -1, 1111, -1, 463, 1096, -1, - 10, 1096, -1, 467, 1035, 468, 1096, -1, 1087, -1, - 1039, -1, 937, -1, 937, 1095, -1, 145, 937, -1, - 34, 937, -1, 34, 1075, -1, 1063, -1, 1064, -1, - 172, 467, 1071, 468, -1, 1110, 467, 468, -1, 1110, - 467, 1072, 951, 468, -1, 1110, 467, 418, 1073, 951, - 468, -1, 1110, 467, 1072, 471, 418, 1073, 951, 468, - -1, 1110, 467, 26, 1072, 951, 468, -1, 1110, 467, - 125, 1072, 951, 468, -1, 1110, 467, 459, 468, -1, - 1038, 1050, 1051, 1055, -1, 1041, -1, 1038, -1, 1041, - -1, 72, 157, 467, 1035, 468, -1, 96, -1, 99, - -1, 99, 467, 1112, 468, -1, 100, -1, 100, 467, - 1112, 468, -1, 226, -1, 226, 467, 1112, 468, -1, - 227, -1, 227, 467, 1112, 468, -1, 97, -1, 101, - -1, 348, -1, 409, -1, 95, -1, 98, -1, 59, - 467, 1035, 35, 1012, 468, -1, 149, 467, 1077, 468, - -1, 278, 467, 1079, 468, -1, 291, 467, 1081, 468, - -1, 372, 467, 1082, 468, -1, 391, 467, 1035, 35, - 1012, 468, -1, 393, 467, 52, 1085, 468, -1, 393, - 467, 216, 1085, 468, -1, 393, 467, 388, 1085, 468, - -1, 393, 467, 1085, 468, -1, 257, 467, 1035, 471, - 1035, 468, -1, 70, 467, 1071, 468, -1, 170, 467, - 1071, 468, -1, 218, 467, 1071, 468, -1, 437, 467, - 1071, 468, -1, 438, 467, 242, 1125, 468, -1, 438, - 467, 242, 1125, 471, 1044, 468, -1, 438, 467, 242, - 1125, 471, 1071, 468, -1, 438, 467, 242, 1125, 471, - 1044, 471, 1071, 468, -1, 439, 467, 1037, 1049, 468, - -1, 440, 467, 1045, 468, -1, 442, 467, 1047, 1035, - 1048, 468, -1, 443, 467, 242, 1125, 468, -1, 443, - 467, 242, 1125, 471, 1035, 468, -1, 444, 467, 1035, - 471, 1042, 1043, 468, -1, 445, 467, 1047, 1035, 35, - 1014, 468, -1, 421, 1035, -1, 421, 249, 415, -1, - 471, 362, 448, -1, 471, 362, 249, -1, 471, 362, - 249, 415, -1, -1, 436, 467, 1045, 468, -1, 1046, - -1, 1045, 471, 1046, -1, 1035, 35, 1125, -1, 1035, - -1, 127, -1, 85, -1, 294, 427, -1, 370, 427, - -1, -1, 286, 1037, -1, 286, 1037, 53, 311, -1, - 286, 53, 311, 1037, -1, 286, 53, 311, 1037, 53, - 311, -1, 430, 171, 467, 952, 468, -1, -1, 153, - 467, 426, 1035, 468, -1, -1, 428, 1053, -1, -1, - 1054, -1, 1053, 471, 1054, -1, 1122, 35, 1056, -1, - 276, 1056, -1, 276, 1122, -1, -1, 467, 1057, 1058, - 951, 1059, 468, -1, 1122, -1, -1, 285, 53, 1071, - -1, -1, 305, 1060, -1, 333, 1060, -1, -1, 1061, - -1, 47, 1061, 32, 1061, -1, 399, 292, -1, 399, - 156, -1, 94, 332, -1, 1035, 292, -1, 1035, 156, - -1, 332, 467, 1071, 468, -1, 332, 467, 468, -1, - 467, 1071, 471, 1035, 468, -1, 332, 467, 1071, 468, - -1, 332, 467, 468, -1, 467, 1071, 471, 1035, 468, - -1, 33, -1, 359, -1, 26, -1, 8, -1, 1067, - -1, 457, -1, 458, -1, 459, -1, 460, -1, 461, - -1, 462, -1, 453, -1, 454, -1, 455, -1, 15, - -1, 16, -1, 17, -1, 463, -1, 8, -1, 268, - 467, 813, 468, -1, 1066, -1, 268, 467, 813, 468, - -1, 1066, -1, 268, 467, 813, 468, -1, 221, -1, - 450, 221, -1, 180, -1, 450, 180, -1, 1035, -1, - 1071, 471, 1035, -1, 1073, -1, 1072, 471, 1073, -1, - 1035, -1, 789, 13, 1035, -1, 789, 14, 1035, -1, - 1012, -1, 1074, 471, 1012, -1, 465, 1071, 466, -1, - 465, 1076, 466, -1, 465, 466, -1, 1075, -1, 1076, - 471, 1075, -1, 1078, 162, 1035, -1, 10, 162, 1035, - -1, 463, 162, 1035, -1, -1, 3, -1, 447, -1, - 240, -1, 106, -1, 177, -1, 237, -1, 340, -1, - 1113, -1, 1035, 1080, 1083, 1084, -1, 1035, 1080, 1083, - -1, 288, 1035, -1, 1036, 185, 1036, -1, -1, 1035, - 1083, 1084, -1, 1035, 1084, 1083, -1, 1035, 1083, -1, - 1035, 1084, -1, 1071, -1, -1, 162, 1035, -1, 157, - 1035, -1, 1035, 162, 1071, -1, 162, 1071, -1, 1071, - -1, 937, -1, 467, 1071, 468, -1, 58, 1091, 1088, - 1090, 136, -1, 1089, -1, 1088, 1089, -1, 425, 1035, - 384, 1035, -1, 132, 1035, -1, -1, 1035, -1, -1, - 1122, -1, 1122, 1095, -1, 469, 1107, -1, 469, 459, - -1, 465, 1035, 466, -1, 465, 1094, 472, 1094, 466, - -1, 1035, -1, -1, 1093, -1, 1095, 1093, -1, -1, - 1096, 1093, -1, 39, -1, -1, 1099, -1, -1, 1100, - -1, 1099, 471, 1100, -1, 1035, 35, 1125, -1, 1035, - 3, -1, 1035, -1, 459, -1, 1102, -1, 1101, 471, - 1102, -1, 1122, -1, 1122, 1095, -1, 1104, -1, 1103, - 471, 1104, -1, 1122, -1, 1122, -1, 1122, -1, 1125, - -1, 1122, -1, 1113, -1, 1123, -1, 1122, 1095, -1, - 1112, -1, 4, -1, 1113, -1, 6, -1, 7, -1, - 1110, 1113, -1, 1110, 467, 1072, 951, 468, 1113, -1, - 1015, 1113, -1, 1031, 1113, 1033, -1, 1031, 467, 1112, - 468, 1113, -1, 1031, 467, 463, 468, 463, 1033, -1, - 394, -1, 150, -1, 256, -1, 9, -1, 5, -1, - 1112, -1, 457, 1112, -1, 458, 1112, -1, 1116, -1, - 1124, -1, 101, -1, 348, -1, 1116, -1, 1117, 471, - 1116, -1, 1112, -1, 463, -1, 1113, -1, 463, -1, - 1113, -1, 463, -1, 506, -1, 463, -1, 3, -1, - 1126, -1, 1127, -1, 3, -1, 1126, -1, 1128, -1, - 3, -1, 1126, -1, 1127, -1, 1128, -1, 3, -1, - 1126, -1, 1127, -1, 1128, -1, 1129, -1, 18, -1, - 19, -1, 20, -1, 21, -1, 22, -1, 23, -1, - 24, -1, 25, -1, 27, -1, 28, -1, 29, -1, - 37, -1, 38, -1, 40, -1, 41, -1, 42, -1, - 44, -1, 45, -1, 46, -1, 53, -1, 54, -1, - 55, -1, 56, -1, 57, -1, 60, -1, 61, -1, - 64, -1, 66, -1, 67, -1, 68, -1, 69, -1, - 74, -1, 75, -1, 76, -1, 77, -1, 78, -1, - 80, -1, 81, -1, 82, -1, 84, -1, 85, -1, - 86, -1, 87, -1, 88, -1, 89, -1, 92, -1, - 93, -1, 94, -1, 102, -1, 103, -1, 104, -1, - 105, -1, 106, -1, 107, -1, 110, -1, 112, -1, - 114, -1, 115, -1, 116, -1, 117, -1, 118, -1, - 119, -1, 121, -1, 122, -1, 123, -1, 124, -1, - 127, -1, 128, -1, 129, -1, 130, -1, 131, -1, - 133, -1, 134, -1, 135, -1, 137, -1, 138, -1, - 139, -1, 141, -1, 142, -1, 143, -1, 144, -1, - 146, -1, 147, -1, 148, -1, 151, -1, 153, -1, - 154, -1, 156, -1, 158, -1, 160, -1, 164, -1, - 165, -1, 166, -1, 167, -1, 169, -1, 173, -1, - 175, -1, 176, -1, 177, -1, 178, -1, 179, -1, - 181, -1, 182, -1, 183, -1, 184, -1, 186, -1, - 187, -1, 188, -1, 189, -1, 190, -1, 191, -1, - 193, -1, 196, -1, 197, -1, 198, -1, 199, -1, - 205, -1, 208, -1, 210, -1, 211, -1, 212, -1, - 213, -1, 214, -1, 217, -1, 220, -1, 223, -1, - 224, -1, 225, -1, 228, -1, 229, -1, 230, -1, - 231, -1, 232, -1, 233, -1, 234, -1, 235, -1, - 236, -1, 237, -1, 238, -1, 239, -1, 240, -1, - 241, -1, 242, -1, 243, -1, 247, -1, 248, -1, - 249, -1, 252, -1, 253, -1, 255, -1, 258, -1, - 260, -1, 261, -1, 262, -1, 264, -1, 265, -1, - 268, -1, 269, -1, 270, -1, 273, -1, 276, -1, - 279, -1, 280, -1, 281, -1, 282, -1, 283, -1, - 284, -1, 285, -1, 286, -1, 287, -1, 289, -1, - 290, -1, 292, -1, 295, -1, 296, -1, 294, -1, - 298, -1, 299, -1, 300, -1, 301, -1, 302, -1, - 303, -1, 304, -1, 305, -1, 306, -1, 308, -1, - 309, -1, 310, -1, 311, -1, 313, -1, 314, -1, + 496, 0, -1, 497, -1, 497, 492, 498, -1, 498, + -1, 721, -1, 911, -1, 906, -1, 907, -1, 787, + -1, 914, -1, 734, -1, 655, -1, 658, -1, 663, + -1, 676, -1, 678, -1, 833, -1, 512, -1, 862, + -1, 864, -1, 870, -1, 865, -1, 869, -1, 687, + -1, 633, -1, 912, -1, 541, -1, 858, -1, 560, + -1, 874, -1, 509, -1, 507, -1, 878, -1, 624, + -1, 917, -1, 916, -1, 685, -1, 923, -1, 499, + -1, 539, -1, 563, -1, 920, -1, 761, -1, 536, + -1, 564, -1, 695, -1, 625, -1, 723, -1, 846, + -1, 919, -1, 913, -1, 652, -1, 659, -1, 672, + -1, 677, -1, 806, -1, 511, -1, 628, -1, 736, + -1, 743, -1, 871, -1, 744, -1, 686, -1, 641, + -1, 514, -1, 632, -1, 579, -1, 875, -1, 623, + -1, 649, -1, 850, -1, 697, -1, 717, -1, 500, + -1, 506, -1, 682, -1, 900, -1, 948, -1, 970, + -1, 724, -1, 958, -1, 540, -1, 843, -1, 848, + -1, 747, -1, 748, -1, 749, -1, 647, -1, 751, + -1, 879, -1, 651, -1, 852, -1, 510, -1, 684, + -1, 908, -1, 946, -1, 937, -1, 770, -1, 774, + -1, 783, -1, 679, -1, 792, -1, 949, -1, 889, + -1, 631, -1, 899, -1, 960, -1, 887, -1, 943, + -1, 750, -1, 853, -1, 837, -1, 836, -1, 838, + -1, 859, -1, 775, -1, 784, -1, 880, -1, 765, + -1, 974, -1, 891, -1, 759, -1, 890, -1, 965, + -1, 922, -1, 530, -1, 518, -1, 535, -1, 897, + -1, -1, 59, 1077, -1, 95, 345, 1157, 501, 502, + -1, 451, -1, 474, -1, -1, 502, 505, -1, -1, + 503, 504, -1, -1, 302, 1155, -1, 302, 12, -1, + 302, 478, -1, 302, 270, -1, 140, 302, 1155, -1, + 140, 302, 12, -1, 140, 302, 478, -1, 423, 302, + 1155, -1, 198, -1, 87, 230, 1156, -1, 434, 429, + 1155, -1, 431, 1159, -1, 3, -1, 504, -1, 394, + 1154, -1, 27, 1159, -1, 345, 1159, -1, 192, 345, + 1159, -1, 192, 177, 1159, -1, 95, 431, 1157, 501, + 502, -1, 32, 345, 1158, 501, 503, -1, 32, 431, + 1158, 501, 503, -1, -1, 192, 110, 1147, -1, 32, + 345, 1158, 508, 533, -1, 32, 345, 30, 508, 533, + -1, 32, 431, 1158, 508, 533, -1, 32, 431, 30, + 508, 533, -1, 135, 345, 1159, -1, 135, 345, 186, + 150, 1159, -1, 135, 431, 1159, -1, 135, 431, 186, + 150, 1159, -1, 135, 177, 1159, -1, 135, 177, 186, + 150, 1159, -1, 95, 177, 1157, 501, 502, -1, 32, + 177, 1158, 513, 431, 1159, -1, 26, -1, 135, -1, + 95, 354, 515, 47, 1158, 516, -1, 95, 354, 1160, + 516, -1, 95, 354, 186, 265, 150, 515, 47, 1158, + 516, -1, 95, 354, 186, 265, 150, 1160, 516, -1, + 1160, -1, -1, 516, 517, -1, -1, 579, -1, 792, + -1, 632, -1, 697, -1, 774, -1, 897, -1, 367, + 519, -1, 367, 233, 519, -1, 367, 365, 519, -1, + 410, 894, -1, 365, 69, 39, 410, 894, -1, 521, + -1, 522, 408, 523, -1, 522, 477, 523, -1, 522, + 408, 116, -1, 522, 477, 116, -1, 520, -1, 522, + 168, 99, -1, 406, 471, 527, -1, 65, 1155, -1, + 354, 1155, -1, 354, 12, -1, 354, 478, -1, 251, + 528, -1, 345, 529, -1, 345, 12, -1, 345, 478, + -1, 365, 47, 529, -1, 365, 47, 12, -1, 365, + 47, 478, -1, 365, 47, 116, -1, 457, 283, 1086, + -1, 410, 376, 1155, -1, 1160, -1, 522, 491, 1160, + -1, 524, -1, 523, 493, 524, -1, 526, -1, 639, + -1, 12, -1, 478, -1, 322, 422, -1, 322, 83, + -1, 335, 322, -1, 363, -1, 415, -1, 156, -1, + 280, -1, 529, -1, 1155, -1, 12, -1, 478, -1, + 3, -1, 1070, 1155, 1072, -1, 1070, 489, 1154, 490, + 1155, -1, 639, -1, 116, -1, 233, -1, 1155, -1, + 116, -1, -1, 1162, -1, 1155, -1, 338, 531, -1, + 532, -1, 406, 471, -1, 410, 216, 228, -1, 365, + 47, -1, 522, -1, 30, -1, 367, 519, -1, 530, + -1, 367, 521, -1, 530, -1, 371, 522, -1, 371, + 406, 471, -1, 371, 410, 216, 228, -1, 371, 365, + 47, -1, 371, 30, -1, 367, 89, 537, 538, -1, + 30, -1, 1143, -1, 119, -1, 188, -1, 71, -1, + 129, 30, -1, 129, 400, -1, 129, 402, -1, 129, + 304, -1, 129, 362, -1, 32, 396, 1029, 542, -1, + 32, 396, 186, 150, 1029, 542, -1, 32, 396, 1029, + 543, -1, 32, 396, 186, 150, 1029, 543, -1, 32, + 396, 30, 192, 399, 1146, 367, 399, 1146, 963, -1, + 32, 396, 30, 192, 399, 1146, 295, 57, 1159, 367, + 399, 1146, 963, -1, 32, 196, 1144, 542, -1, 32, + 196, 186, 150, 1144, 542, -1, 32, 196, 1144, 544, + -1, 32, 196, 30, 192, 399, 1146, 367, 399, 1146, + 963, -1, 32, 196, 30, 192, 399, 1146, 295, 57, + 1159, 367, 399, 1146, 963, -1, 32, 361, 1144, 542, + -1, 32, 361, 186, 150, 1144, 542, -1, 32, 444, + 1144, 542, -1, 32, 444, 186, 150, 1144, 542, -1, + 32, 242, 444, 1144, 542, -1, 32, 242, 444, 186, + 150, 1144, 542, -1, 32, 242, 444, 30, 192, 399, + 1146, 367, 399, 1146, 963, -1, 32, 242, 444, 30, + 192, 399, 1146, 295, 57, 1159, 367, 399, 1146, 963, + -1, 545, -1, 542, 493, 545, -1, 45, 300, 1144, + 557, -1, 126, 300, 1144, -1, 45, 300, 1144, -1, + 26, 587, -1, 26, 186, 265, 150, 587, -1, 26, + 78, 587, -1, 26, 78, 186, 265, 150, 587, -1, + 32, 860, 1160, 546, -1, 32, 860, 1160, 135, 265, + 270, -1, 32, 860, 1160, 367, 265, 270, -1, 32, + 860, 1160, 135, 152, -1, 32, 860, 1160, 135, 152, + 186, 150, -1, 32, 860, 1160, 367, 383, 1156, -1, + 32, 860, 1154, 367, 383, 1156, -1, 32, 860, 1160, + 367, 551, -1, 32, 860, 1160, 338, 551, -1, 32, + 860, 1160, 367, 386, 1160, -1, 32, 860, 1160, 26, + 172, 592, 39, 185, 635, -1, 32, 860, 1160, 555, + -1, 32, 860, 1160, 135, 185, -1, 32, 860, 1160, + 135, 185, 186, 150, -1, 135, 860, 186, 150, 1160, + 547, -1, 135, 860, 1160, 547, -1, 32, 860, 1160, + 861, 418, 1051, 548, 549, -1, 32, 860, 1160, 666, + -1, 26, 597, -1, 32, 88, 1146, 715, -1, 435, + 88, 1146, -1, 135, 88, 186, 150, 1146, 547, -1, + 135, 88, 1146, 547, -1, 367, 453, 278, -1, 74, + 280, 1146, -1, 367, 453, 74, -1, 367, 239, -1, + 367, 428, -1, 138, 413, 1146, -1, 138, 33, 413, + 1146, -1, 138, 337, 413, 1146, -1, 138, 413, 30, + -1, 138, 413, 431, -1, 128, 413, 1146, -1, 128, + 413, 30, -1, 128, 413, 431, -1, 138, 352, 1146, + -1, 138, 33, 352, 1146, -1, 138, 337, 352, 1146, + -1, 128, 352, 1146, -1, 198, 1144, -1, 261, 198, + 1144, -1, 275, 756, -1, 265, 275, -1, 296, 408, + 1158, -1, 367, 399, 1146, -1, 367, 551, -1, 338, + 551, -1, 337, 185, 550, -1, 138, 350, 228, 359, + -1, 128, 350, 228, 359, -1, 164, 350, 228, 359, + -1, 261, 164, 350, 228, 359, -1, 666, -1, 367, + 116, 1074, -1, 135, 116, -1, 61, -1, 340, -1, + -1, 76, 756, -1, -1, 432, 1074, -1, -1, 266, + -1, 169, -1, 116, -1, 432, 196, 1146, -1, 489, + 553, 490, -1, 451, 551, -1, -1, 554, -1, 553, + 493, 554, -1, 1163, 477, 728, -1, 1163, -1, 1163, + 491, 1163, 477, 728, -1, 1163, 491, 1163, -1, 556, + -1, 555, 556, -1, 339, -1, 339, 501, 639, -1, + 367, 637, -1, 367, 172, 592, -1, 163, 438, 451, + 489, 559, 490, -1, 163, 438, 192, 489, 1112, 490, + -1, 163, 438, 168, 489, 1112, 490, 408, 489, 1112, + 490, -1, 116, -1, 1162, 1154, -1, 558, -1, 559, + 493, 558, -1, 32, 418, 756, 561, -1, 562, -1, + 561, 493, 562, -1, 26, 46, 1043, 547, -1, 135, + 46, 186, 150, 1160, 547, -1, 135, 46, 1160, 547, + -1, 32, 46, 1160, 861, 418, 1051, 548, 547, -1, + 73, 971, -1, 73, 30, -1, 93, 571, 1144, 600, + 565, 566, 567, 572, 501, 568, 1039, -1, 93, 489, + 945, 490, 408, 566, 567, 501, 568, -1, 168, -1, + 408, -1, 318, -1, -1, 1155, -1, 384, -1, 385, + -1, 569, -1, 489, 574, 490, -1, 569, 570, -1, + -1, 53, -1, 167, -1, 122, 915, 1155, -1, 270, + 915, 1155, -1, 97, -1, 182, -1, 320, 915, 1155, + -1, 143, 915, 1155, -1, 164, 320, 601, -1, 164, + 320, 482, -1, 164, 265, 270, 601, -1, 164, 270, + 601, -1, 139, 1155, -1, 53, -1, -1, 573, 123, + 1155, -1, -1, 432, -1, -1, 575, -1, 574, 493, + 575, -1, 1163, 576, -1, 526, -1, 639, -1, 482, + -1, 489, 577, 490, -1, -1, 578, -1, 577, 493, + 578, -1, 526, -1, 95, 580, 396, 1144, 489, 581, + 490, 612, 613, 617, 618, 619, 620, -1, 95, 580, + 396, 186, 265, 150, 1144, 489, 581, 490, 612, 613, + 617, 618, 619, 620, -1, 95, 580, 396, 1144, 275, + 756, 582, 613, 617, 618, 619, 620, -1, 95, 580, + 396, 186, 265, 150, 1144, 275, 756, 582, 613, 617, + 618, 619, 620, -1, 95, 580, 396, 1144, 300, 275, + 1144, 582, 557, 613, 617, 618, 619, 620, -1, 95, + 580, 396, 186, 265, 150, 1144, 300, 275, 1144, 582, + 557, 613, 617, 618, 619, 620, -1, 402, -1, 400, + -1, 233, 402, -1, 233, 400, -1, 173, 402, -1, + 173, 400, -1, 428, -1, -1, 583, -1, -1, 489, + 584, 490, -1, -1, 585, -1, 583, 493, 585, -1, + 586, -1, 584, 493, 586, -1, 587, -1, 594, -1, + 597, -1, 588, -1, 597, -1, 1160, 1051, 664, 589, + -1, 1160, 589, -1, 1160, 451, 284, 589, -1, 589, + 590, -1, -1, 88, 1146, 591, -1, 591, -1, 593, + -1, 76, 756, -1, 265, 270, -1, 270, -1, 425, + 830, 621, -1, 312, 218, 830, 621, -1, 70, 489, + 1074, 490, 599, -1, 116, 1075, -1, 172, 592, 39, + 185, 635, -1, 172, 592, 39, 489, 1074, 490, 387, + -1, 328, 1144, 600, 604, 608, -1, 33, -1, 57, + 116, -1, 118, -1, 265, 118, -1, 200, 119, -1, + 200, 188, -1, 229, 1144, 595, -1, 595, 194, 596, + -1, 595, 147, 596, -1, -1, 81, -1, 89, -1, + 117, -1, 185, -1, 172, -1, 197, -1, 383, -1, + 386, -1, 30, -1, 88, 1146, 598, -1, 598, -1, + 70, 489, 1074, 490, 715, -1, 425, 489, 601, 490, + 603, 830, 621, 715, -1, 425, 622, 715, -1, 312, + 218, 489, 601, 490, 603, 830, 621, 715, -1, 312, + 218, 622, 715, -1, 146, 796, 489, 605, 490, 603, + 830, 621, 607, 715, -1, 165, 218, 489, 601, 490, + 328, 1144, 600, 604, 608, 715, -1, 261, 198, -1, + -1, 489, 601, 490, -1, -1, 602, -1, 601, 493, + 602, -1, 1160, -1, 193, 489, 601, 490, -1, -1, + 241, 169, -1, 241, 299, -1, 241, 373, -1, -1, + 606, -1, 605, 493, 606, -1, 799, 451, 840, -1, + 799, 451, 282, 489, 840, 490, -1, 448, 489, 1074, + 490, -1, -1, 609, -1, 610, -1, 609, 610, -1, + 610, 609, -1, -1, 280, 430, 611, -1, 280, 121, + 611, -1, 261, 25, -1, 340, -1, 61, -1, 367, + 270, -1, 367, 116, -1, 199, 489, 1143, 490, -1, + -1, 614, -1, -1, 300, 57, 1160, 489, 615, 490, + -1, 616, -1, 615, 493, 616, -1, 1160, 802, 803, + -1, 1079, 802, 803, -1, 489, 1074, 490, 802, 803, + -1, 432, 1148, -1, -1, 451, 551, -1, 453, 278, + -1, -1, 280, 82, 135, -1, 280, 82, 121, 351, + -1, 280, 82, 309, 351, -1, -1, 399, 1146, -1, + -1, 432, 196, 399, 1146, -1, -1, 432, 196, 1150, + -1, 95, 383, 756, 933, 280, 1112, 168, 1020, -1, + 95, 383, 186, 265, 150, 756, 933, 280, 1112, 168, + 1020, -1, 32, 383, 756, 367, 383, 1156, -1, 32, + 383, 186, 150, 756, 367, 383, 1156, -1, 95, 580, + 396, 626, 39, 974, 627, -1, 95, 580, 396, 186, + 265, 150, 626, 39, 974, 627, -1, 1144, 600, 617, + 618, 619, 620, -1, 451, 109, -1, 451, 261, 109, + -1, -1, 95, 630, 242, 444, 629, 39, 974, 627, + -1, 95, 630, 242, 444, 186, 265, 150, 629, 39, + 974, 627, -1, 1144, 600, 617, 552, 620, -1, 428, + -1, -1, 330, 242, 444, 794, 1144, 627, -1, 95, + 580, 361, 1144, 634, -1, 95, 580, 361, 186, 265, + 150, 1144, 634, -1, 32, 361, 1144, 636, -1, 32, + 361, 186, 150, 1144, 636, -1, 636, -1, -1, 489, + 636, 490, -1, -1, 637, -1, 636, 637, -1, 39, + 1053, -1, 58, 639, -1, 108, -1, 261, 108, -1, + 195, 638, 639, -1, 243, 639, -1, 246, 639, -1, + 261, 243, -1, 261, 246, -1, 295, 57, 756, -1, + 361, 250, 756, -1, 381, 501, 639, -1, 339, -1, + 339, 501, 639, -1, 57, -1, -1, 5, -1, 480, + 5, -1, 481, 5, -1, 1156, -1, 639, -1, 640, + 493, 639, -1, 95, 807, 642, 648, 220, 529, -1, + 95, 807, 642, 648, 220, 529, 180, 643, 644, 646, + -1, 417, -1, -1, 1146, -1, 1146, 757, -1, 201, + 643, -1, -1, 436, 643, -1, 261, 436, -1, 645, + -1, -1, 135, 648, 220, 529, 547, -1, 135, 648, + 220, 186, 150, 529, 547, -1, 315, -1, -1, 95, + 399, 1146, 650, 236, 1155, 552, -1, 296, 1158, -1, + -1, 135, 399, 1146, -1, 135, 399, 186, 150, 1146, + -1, 95, 153, 1146, 501, 653, -1, 95, 153, 186, + 265, 150, 1146, 501, 653, -1, 653, 654, -1, -1, + 354, 1146, -1, 443, 529, -1, 168, 529, -1, 61, + -1, 32, 153, 1146, 430, 656, -1, 656, 657, -1, + -1, 408, 529, -1, 32, 153, 1146, 513, 24, 244, + 1146, -1, 32, 153, 1146, 513, 29, 823, -1, 32, + 153, 1146, 513, 64, 489, 1051, 39, 1051, 490, -1, + 32, 153, 1146, 513, 77, 756, -1, 32, 153, 1146, + 513, 92, 756, -1, 32, 153, 1146, 513, 133, 1051, + -1, 32, 153, 1146, 513, 170, 811, -1, 32, 153, + 1146, 513, 648, 220, 1146, -1, 32, 153, 1146, 513, + 282, 842, -1, 32, 153, 1146, 513, 282, 72, 756, + 432, 1148, -1, 32, 153, 1146, 513, 282, 157, 756, + 432, 1148, -1, 32, 153, 1146, 513, 316, 811, -1, + 32, 153, 1146, 513, 348, 811, -1, 32, 153, 1146, + 513, 354, 1146, -1, 32, 153, 1146, 513, 144, 413, + 1146, -1, 32, 153, 1146, 513, 396, 756, -1, 32, + 153, 1146, 513, 403, 357, 298, 756, -1, 32, 153, + 1146, 513, 403, 357, 127, 756, -1, 32, 153, 1146, + 513, 403, 357, 401, 756, -1, 32, 153, 1146, 513, + 403, 357, 85, 756, -1, 32, 153, 1146, 513, 361, + 756, -1, 32, 153, 1146, 513, 444, 756, -1, 32, + 153, 1146, 513, 242, 444, 756, -1, 32, 153, 1146, + 513, 165, 396, 756, -1, 32, 153, 1146, 513, 165, + 109, 455, 1146, -1, 32, 153, 1146, 513, 364, 1146, + -1, 32, 153, 1146, 513, 411, 163, 1051, 220, 1146, + -1, 32, 153, 1146, 513, 418, 1051, -1, 95, 165, + 109, 455, 1146, 662, 664, -1, 180, 643, -1, 261, + 180, -1, 436, 643, -1, 261, 436, -1, 660, -1, + 661, 660, -1, 661, -1, -1, 32, 165, 109, 455, + 1146, 662, 666, -1, 32, 165, 109, 455, 1146, 661, + -1, 284, 489, 665, 490, -1, -1, 669, -1, 665, + 493, 669, -1, 284, 489, 667, 490, -1, 668, -1, + 667, 493, 668, -1, 669, -1, 367, 669, -1, 26, + 669, -1, 135, 670, -1, 670, 671, -1, 1163, -1, + 1155, -1, 95, 364, 1146, 673, 675, 165, 109, 455, + 1146, 664, -1, 95, 364, 186, 265, 150, 1146, 673, + 675, 165, 109, 455, 1146, 664, -1, 418, 1155, -1, + -1, 443, 1155, -1, 443, 270, -1, 674, -1, -1, + 32, 364, 1146, 674, 666, -1, 32, 364, 1146, 674, + -1, 32, 364, 1146, 666, -1, 95, 165, 396, 1144, + 489, 581, 490, 612, 364, 1146, 664, -1, 95, 165, + 396, 186, 265, 150, 1144, 489, 581, 490, 612, 364, + 1146, 664, -1, 95, 165, 396, 1144, 300, 275, 1144, + 582, 557, 364, 1146, 664, -1, 95, 165, 396, 186, + 265, 150, 1144, 300, 275, 1144, 582, 557, 364, 1146, + 664, -1, 32, 165, 396, 1029, 542, -1, 32, 165, + 396, 186, 150, 1029, 542, -1, 191, 165, 354, 1146, + 681, 168, 364, 1146, 212, 1146, 664, -1, 230, 408, + -1, 145, -1, 680, 489, 1030, 490, -1, -1, 95, + 431, 240, 163, 683, 364, 1146, 664, -1, 95, 431, + 240, 186, 265, 150, 163, 683, 364, 1146, 664, -1, + 1158, -1, 431, -1, 135, 431, 240, 163, 683, 364, + 1146, -1, 135, 431, 240, 186, 150, 163, 683, 364, + 1146, -1, 32, 431, 240, 163, 683, 364, 1146, 666, + -1, 95, 305, 1146, 280, 1144, 692, 693, 690, 688, + 689, -1, 32, 305, 1146, 280, 1144, 691, 688, 689, + -1, 432, 489, 1074, 490, -1, -1, 451, 70, 489, + 1074, 490, -1, -1, 408, 1159, -1, -1, 408, 1159, + -1, -1, 39, 3, -1, -1, 163, 694, -1, -1, + 30, -1, 360, -1, 206, -1, 430, -1, 121, -1, + 95, 24, 244, 1146, 418, 696, 180, 643, -1, 196, + -1, 396, -1, 95, 413, 1146, 698, 699, 280, 1144, + 701, 707, 710, 149, 711, 1152, 489, 712, 490, -1, + 95, 88, 413, 1146, 28, 699, 280, 1144, 714, 715, + 163, 136, 350, 710, 149, 711, 1152, 489, 712, 490, + -1, 49, -1, 28, -1, 207, 275, -1, 700, -1, + 699, 285, 700, -1, 206, -1, 121, -1, 430, -1, + 430, 275, 601, -1, 416, -1, 329, 702, -1, -1, + 703, -1, 702, 703, -1, 704, 705, 915, 706, -1, + 255, -1, 279, -1, 396, -1, 350, -1, 1160, -1, + 163, 708, 709, -1, -1, 136, -1, -1, 350, -1, + 382, -1, 447, 489, 1074, 490, -1, -1, 170, -1, + 316, -1, 713, -1, 712, 493, 713, -1, -1, 1154, + -1, 5, -1, 1155, -1, 1163, -1, 168, 1144, -1, + -1, -1, 715, 716, -1, 265, 118, -1, 118, -1, + 200, 188, -1, 200, 119, -1, 265, 434, -1, 261, + 198, -1, 95, 144, 413, 1146, 280, 1163, 149, 711, + 1152, 489, 490, -1, 95, 144, 413, 1146, 280, 1163, + 447, 718, 149, 711, 1152, 489, 490, -1, 719, -1, + 718, 36, 719, -1, 1160, 192, 489, 720, 490, -1, + 6, -1, 720, 493, 6, -1, 32, 144, 413, 1146, + 722, -1, 138, -1, 138, 337, -1, 138, 33, -1, + 128, -1, 95, 41, 756, 70, 489, 1074, 490, 715, + -1, 95, 807, 29, 1152, 821, 725, -1, 95, 807, + 29, 1152, 729, -1, 95, 282, 840, 725, -1, 95, + 418, 756, 725, -1, 95, 418, 756, -1, 95, 418, + 756, 39, 489, 1041, 490, -1, 95, 418, 756, 39, + 142, 489, 732, 490, -1, 95, 418, 756, 39, 321, + 725, -1, 95, 403, 357, 298, 756, 725, -1, 95, + 403, 357, 127, 756, 725, -1, 95, 403, 357, 401, + 756, 725, -1, 95, 403, 357, 85, 756, 725, -1, + 95, 77, 756, 725, -1, 95, 77, 186, 265, 150, + 756, 725, -1, 95, 77, 756, 168, 756, -1, 95, + 77, 186, 265, 150, 756, 168, 756, -1, 489, 726, + 490, -1, 727, -1, 726, 493, 727, -1, 1163, 477, + 728, -1, 1163, -1, 818, -1, 1167, -1, 1110, -1, + 639, -1, 1155, -1, 262, -1, 489, 730, 490, -1, + 731, -1, 730, 493, 731, -1, 3, 477, 728, -1, + 733, -1, -1, 1155, -1, 733, 493, 1155, -1, 32, + 418, 756, 26, 437, 735, 1155, -1, 32, 418, 756, + 26, 437, 735, 1155, 49, 1155, -1, 32, 418, 756, + 26, 437, 735, 1155, 28, 1155, -1, 32, 418, 756, + 334, 437, 1155, 408, 1155, -1, 186, 265, 150, -1, + -1, 95, 282, 72, 756, 739, 163, 418, 1051, 432, + 1148, 740, 39, 737, -1, 738, -1, 737, 493, 738, + -1, 282, 1154, 840, 741, 742, -1, 282, 1154, 842, + 741, 742, -1, 170, 1154, 811, -1, 170, 1154, 489, + 1115, 490, 811, -1, 386, 1051, -1, 116, -1, -1, + 157, 756, -1, -1, 163, 357, -1, 163, 286, 57, + 756, -1, -1, 325, -1, -1, 95, 282, 157, 756, + 432, 1148, -1, 32, 282, 157, 756, 432, 1148, 26, + 737, -1, 32, 282, 157, 756, 432, 1148, 135, 745, + -1, 746, -1, 745, 493, 746, -1, 282, 1154, 489, + 1115, 490, -1, 170, 1154, 489, 1115, 490, -1, 135, + 282, 72, 756, 432, 1148, 547, -1, 135, 282, 72, + 186, 150, 756, 432, 1148, 547, -1, 135, 282, 157, + 756, 432, 1148, 547, -1, 135, 282, 157, 186, 150, + 756, 432, 1148, 547, -1, 135, 295, 57, 1159, 547, + -1, 324, 295, 57, 1159, 408, 1158, -1, 135, 752, + 186, 150, 755, 547, -1, 135, 752, 755, 547, -1, + 135, 753, 186, 150, 1145, 547, -1, 135, 753, 1145, + 547, -1, 135, 754, 1146, 280, 756, 547, -1, 135, + 754, 186, 150, 1146, 280, 756, 547, -1, 135, 418, + 758, 547, -1, 135, 418, 186, 150, 758, 547, -1, + 135, 133, 758, 547, -1, 135, 133, 186, 150, 758, + 547, -1, 135, 196, 84, 755, 547, -1, 135, 196, + 84, 186, 150, 755, 547, -1, 396, -1, 361, -1, + 444, -1, 242, 444, -1, 196, -1, 165, 396, -1, + 77, -1, 92, -1, 383, -1, 403, 357, 298, -1, + 403, 357, 127, -1, 403, 357, 401, -1, 403, 357, + 85, -1, 24, 244, -1, 144, 413, -1, 153, -1, + 165, 109, 455, -1, 319, -1, 354, -1, 364, -1, + 305, -1, 352, -1, 413, -1, 756, -1, 755, 493, + 756, -1, 1160, -1, 1160, 757, -1, 491, 1149, -1, + 757, 491, 1149, -1, 1051, -1, 758, 493, 1051, -1, + 416, 986, 1030, 760, 547, -1, 91, 185, -1, 339, + 185, -1, -1, 80, 280, 762, 756, 214, 764, -1, + 80, 280, 763, 1146, 214, 764, -1, 80, 280, 418, + 1051, 214, 764, -1, 80, 280, 133, 1051, 214, 764, + -1, 80, 280, 29, 823, 214, 764, -1, 80, 280, + 170, 811, 214, 764, -1, 80, 280, 282, 842, 214, + 764, -1, 80, 280, 88, 1146, 280, 756, 214, 764, + -1, 80, 280, 88, 1146, 280, 133, 756, 214, 764, + -1, 80, 280, 305, 1146, 280, 756, 214, 764, -1, + 80, 280, 316, 811, 214, 764, -1, 80, 280, 348, + 811, 214, 764, -1, 80, 280, 352, 1146, 280, 756, + 214, 764, -1, 80, 280, 411, 163, 1051, 220, 1146, + 214, 764, -1, 80, 280, 413, 1146, 280, 756, 214, + 764, -1, 80, 280, 282, 72, 756, 432, 1148, 214, + 764, -1, 80, 280, 282, 157, 756, 432, 1148, 214, + 764, -1, 80, 280, 221, 274, 639, 214, 764, -1, + 80, 280, 64, 489, 1051, 39, 1051, 490, 214, 764, + -1, 78, -1, 196, -1, 361, -1, 383, -1, 396, + -1, 444, -1, 242, 444, -1, 77, -1, 92, -1, + 165, 396, -1, 403, 357, 85, -1, 403, 357, 127, + -1, 403, 357, 298, -1, 403, 357, 401, -1, 24, + 244, -1, 110, -1, 144, 413, -1, 153, -1, 165, + 109, 455, -1, 648, 220, -1, 319, -1, 345, -1, + 354, -1, 364, -1, 390, -1, 399, -1, 1155, -1, + 270, -1, 359, 219, 766, 280, 767, 756, 214, 769, + -1, 359, 219, 766, 280, 768, 1146, 214, 769, -1, + 359, 219, 766, 280, 418, 1051, 214, 769, -1, 359, + 219, 766, 280, 133, 1051, 214, 769, -1, 359, 219, + 766, 280, 29, 823, 214, 769, -1, 359, 219, 766, + 280, 170, 811, 214, 769, -1, 359, 219, 766, 280, + 221, 274, 639, 214, 769, -1, 359, 219, 766, 280, + 316, 811, 214, 769, -1, 359, 219, 766, 280, 348, + 811, 214, 769, -1, 163, 529, -1, -1, 78, -1, + 165, 396, -1, 361, -1, 396, -1, 444, -1, 242, + 444, -1, 110, -1, 144, 413, -1, 648, 220, -1, + 319, -1, 345, -1, 354, -1, 390, -1, 399, -1, + 1155, -1, 270, -1, 158, 771, -1, 249, 771, -1, + 971, -1, 772, 971, -1, 256, 773, 971, -1, 313, + 773, 971, -1, 160, 773, 971, -1, 222, 773, 971, + -1, 23, 1156, 773, 971, -1, 332, 1156, 773, 971, + -1, 1156, 773, 971, -1, 30, 773, 971, -1, 166, + 773, 971, -1, 166, 1156, 773, 971, -1, 166, 30, + 773, 971, -1, 48, 773, 971, -1, 48, 1156, 773, + 971, -1, 48, 30, 773, 971, -1, 168, -1, 192, + -1, 772, -1, -1, 174, 776, 280, 779, 408, 780, + 782, -1, 343, 776, 280, 779, 168, 780, 547, -1, + 343, 174, 283, 163, 776, 280, 779, 168, 780, 547, + -1, 777, -1, 30, -1, 30, 314, -1, 30, 489, + 601, 490, -1, 30, 314, 489, 601, 490, -1, 778, + -1, 777, 493, 778, -1, 360, 600, -1, 328, 600, + -1, 95, 600, -1, 1160, 600, -1, 1143, -1, 396, + 1143, -1, 361, 1143, -1, 165, 109, 455, 1145, -1, + 165, 364, 1145, -1, 170, 810, -1, 316, 810, -1, + 348, 810, -1, 110, 1145, -1, 133, 755, -1, 220, + 1145, -1, 221, 274, 640, -1, 354, 1145, -1, 399, + 1145, -1, 418, 755, -1, 30, 397, 192, 354, 1145, + -1, 30, 362, 192, 354, 1145, -1, 30, 171, 192, + 354, 1145, -1, 30, 317, 192, 354, 1145, -1, 30, + 349, 192, 354, 1145, -1, 781, -1, 780, 493, 781, + -1, 1158, -1, 177, 1158, -1, 451, 174, 283, -1, + -1, 174, 777, 408, 1159, 785, 786, -1, 343, 777, + 168, 1159, 786, 547, -1, 343, 27, 283, 163, 777, + 168, 1159, 786, 547, -1, 451, 27, 283, -1, -1, + 175, 57, 1158, -1, -1, 32, 116, 314, 788, 790, + -1, 788, 789, -1, -1, 192, 354, 1145, -1, 163, + 345, 1159, -1, 163, 431, 1159, -1, 174, 776, 280, + 791, 408, 780, 782, -1, 343, 776, 280, 791, 168, + 780, 547, -1, 343, 174, 283, 163, 776, 280, 791, + 168, 780, 547, -1, 397, -1, 171, -1, 349, -1, + 362, -1, 419, -1, 355, -1, 95, 793, 196, 794, + 795, 280, 1029, 796, 489, 797, 490, 800, 552, 620, + 1039, -1, 95, 793, 196, 794, 186, 265, 150, 1150, + 280, 1029, 796, 489, 797, 490, 800, 552, 620, 1039, + -1, 425, -1, -1, 84, -1, -1, 1150, -1, -1, + 432, 1148, -1, -1, 799, -1, 797, 493, 799, -1, + 802, 803, 804, 805, -1, 802, 756, 551, 804, 805, + -1, 1160, 798, -1, 1079, 798, -1, 489, 1074, 490, + 798, -1, 193, 489, 801, 490, -1, -1, 799, -1, + 801, 493, 799, -1, 76, 756, -1, -1, 756, -1, + -1, 40, -1, 125, -1, -1, 473, 160, -1, 473, + 222, -1, -1, 95, 807, 170, 1152, 812, 342, 817, + 825, -1, 95, 807, 170, 1152, 812, 342, 396, 489, + 832, 490, 825, -1, 95, 807, 170, 1152, 812, 825, + -1, 95, 807, 316, 1152, 812, 825, -1, 285, 336, + -1, -1, 489, 809, 490, -1, 489, 490, -1, 814, + -1, 809, 493, 814, -1, 811, -1, 810, 493, 811, + -1, 1152, 808, -1, 1166, -1, 1160, -1, 1160, 1137, + -1, 489, 813, 490, -1, 489, 490, -1, 819, -1, + 813, 493, 819, -1, 815, 816, 818, -1, 816, 815, + 818, -1, 816, 818, -1, 815, 818, -1, 818, -1, + 192, -1, 289, -1, 203, -1, 192, 289, -1, 440, + -1, 1161, -1, 818, -1, 1051, -1, 1161, 757, 484, + 418, -1, 369, 1161, 757, 484, 418, -1, 814, -1, + 814, 116, 1074, -1, 814, 477, 1074, -1, 814, -1, + 489, 482, 490, -1, 489, 822, 490, -1, 489, 286, + 57, 822, 490, -1, 489, 822, 286, 57, 822, 490, + -1, 820, -1, 822, 493, 820, -1, 1152, 821, -1, + 823, -1, 824, 493, 823, -1, 827, -1, 825, 827, + -1, 60, 280, 270, 204, -1, 342, 270, 280, 270, + 204, -1, 388, -1, 189, -1, 379, -1, 446, -1, + 154, 359, 120, -1, 154, 359, 213, -1, 359, 120, + -1, 359, 213, -1, 225, -1, 265, 225, -1, 94, + 639, -1, 351, 639, -1, 392, 756, -1, 534, -1, + 297, 1160, -1, 39, 828, -1, 220, 529, -1, 411, + 829, -1, 450, -1, 826, -1, 1155, -1, 1155, 493, + 1155, -1, 163, 418, 1051, -1, 829, 493, 163, 418, + 1051, -1, 451, 725, -1, -1, 816, 818, -1, 831, + -1, 832, 493, 831, -1, 32, 170, 811, 834, 835, + -1, 32, 316, 811, 834, 835, -1, 32, 348, 811, + 834, 835, -1, 826, -1, 834, 826, -1, 340, -1, + -1, 135, 170, 810, 547, -1, 135, 170, 186, 150, + 810, 547, -1, 135, 316, 810, 547, -1, 135, 316, + 186, 150, 810, 547, -1, 135, 348, 810, 547, -1, + 135, 348, 186, 150, 810, 547, -1, 135, 29, 824, + 547, -1, 135, 29, 186, 150, 824, 547, -1, 135, + 282, 841, 547, -1, 135, 282, 186, 150, 841, 547, + -1, 489, 1051, 490, -1, 489, 1051, 493, 1051, 490, + -1, 489, 262, 493, 1051, 490, -1, 489, 1051, 493, + 262, 490, -1, 1107, -1, 1160, 491, 840, -1, 842, + -1, 841, 493, 842, -1, 840, 839, -1, 131, 844, + -1, 845, -1, 844, 845, -1, 1155, -1, 220, 529, + -1, 95, 64, 489, 1051, 39, 1051, 490, 451, 170, + 811, 847, -1, 95, 64, 489, 1051, 39, 1051, 490, + 453, 170, 847, -1, 95, 64, 489, 1051, 39, 1051, + 490, 451, 203, 847, -1, 39, 190, -1, 39, 42, + -1, -1, 135, 64, 849, 489, 1051, 39, 1051, 490, + 547, -1, 186, 150, -1, -1, 95, 807, 411, 163, + 1051, 220, 1146, 489, 851, 490, -1, 168, 378, 451, + 170, 811, 493, 408, 378, 451, 170, 811, -1, 408, + 378, 451, 170, 811, 493, 168, 378, 451, 170, 811, + -1, 168, 378, 451, 170, 811, -1, 408, 378, 451, + 170, 811, -1, 135, 411, 849, 163, 1051, 220, 1146, + 547, -1, 331, 854, 794, 1144, -1, 331, 855, 794, + 1146, -1, 331, 489, 856, 490, 854, 794, 1144, -1, + 331, 489, 856, 490, 855, 794, 1146, -1, 196, -1, + 396, -1, 354, -1, 395, -1, 110, -1, 857, -1, + 856, 493, 857, -1, 442, -1, 32, 399, 1146, 367, + 551, -1, 32, 399, 1146, 338, 551, -1, 32, 29, + 823, 334, 408, 1146, -1, 32, 77, 756, 334, 408, + 1146, -1, 32, 92, 756, 334, 408, 1146, -1, 32, + 110, 1147, 334, 408, 1147, -1, 32, 133, 756, 334, + 408, 1146, -1, 32, 133, 756, 334, 88, 1146, 408, + 1146, -1, 32, 165, 109, 455, 1146, 334, 408, 1146, + -1, 32, 170, 811, 334, 408, 1146, -1, 32, 177, + 1157, 334, 408, 1157, -1, 32, 648, 220, 1146, 334, + 408, 1146, -1, 32, 282, 72, 756, 432, 1148, 334, + 408, 1146, -1, 32, 282, 157, 756, 432, 1148, 334, + 408, 1146, -1, 32, 305, 1146, 280, 1144, 334, 408, + 1146, -1, 32, 305, 186, 150, 1146, 280, 1144, 334, + 408, 1146, -1, 32, 316, 811, 334, 408, 1146, -1, + 32, 319, 1146, 334, 408, 1146, -1, 32, 348, 811, + 334, 408, 1146, -1, 32, 354, 1146, 334, 408, 1146, + -1, 32, 364, 1146, 334, 408, 1146, -1, 32, 390, + 1146, 334, 408, 1146, -1, 32, 396, 1029, 334, 408, + 1146, -1, 32, 396, 186, 150, 1029, 334, 408, 1146, + -1, 32, 361, 1144, 334, 408, 1146, -1, 32, 361, + 186, 150, 1144, 334, 408, 1146, -1, 32, 444, 1144, + 334, 408, 1146, -1, 32, 444, 186, 150, 1144, 334, + 408, 1146, -1, 32, 242, 444, 1144, 334, 408, 1146, + -1, 32, 242, 444, 186, 150, 1144, 334, 408, 1146, + -1, 32, 196, 1144, 334, 408, 1146, -1, 32, 196, + 186, 150, 1144, 334, 408, 1146, -1, 32, 165, 396, + 1029, 334, 408, 1146, -1, 32, 165, 396, 186, 150, + 1029, 334, 408, 1146, -1, 32, 396, 1029, 334, 860, + 1146, 408, 1146, -1, 32, 396, 186, 150, 1029, 334, + 860, 1146, 408, 1146, -1, 32, 444, 1144, 334, 860, + 1146, 408, 1146, -1, 32, 444, 186, 150, 1144, 334, + 860, 1146, 408, 1146, -1, 32, 242, 444, 1144, 334, + 860, 1146, 408, 1146, -1, 32, 242, 444, 186, 150, + 1144, 334, 860, 1146, 408, 1146, -1, 32, 396, 1029, + 334, 88, 1146, 408, 1146, -1, 32, 396, 186, 150, + 1029, 334, 88, 1146, 408, 1146, -1, 32, 165, 396, + 1029, 334, 860, 1146, 408, 1146, -1, 32, 165, 396, + 186, 150, 1029, 334, 860, 1146, 408, 1146, -1, 32, + 352, 1146, 280, 1144, 334, 408, 1146, -1, 32, 413, + 1146, 280, 1144, 334, 408, 1146, -1, 32, 144, 413, + 1146, 334, 408, 1146, -1, 32, 345, 1157, 334, 408, + 1157, -1, 32, 431, 1157, 334, 408, 1157, -1, 32, + 399, 1146, 334, 408, 1146, -1, 32, 383, 756, 334, + 408, 1146, -1, 32, 403, 357, 298, 756, 334, 408, + 1146, -1, 32, 403, 357, 127, 756, 334, 408, 1146, + -1, 32, 403, 357, 401, 756, 334, 408, 1146, -1, + 32, 403, 357, 85, 756, 334, 408, 1146, -1, 32, + 418, 756, 334, 408, 1146, -1, 32, 418, 756, 334, + 46, 1146, 408, 1146, 547, -1, 78, -1, -1, 367, + 109, -1, -1, 32, 170, 811, 863, 124, 280, 153, + 1146, -1, 32, 316, 811, 863, 124, 280, 153, 1146, + -1, 32, 348, 811, 863, 124, 280, 153, 1146, -1, + 32, 413, 1146, 280, 1144, 863, 124, 280, 153, 1146, + -1, 32, 242, 444, 1144, 863, 124, 280, 153, 1146, + -1, 32, 196, 1144, 863, 124, 280, 153, 1146, -1, + 261, -1, -1, 32, 29, 823, 367, 354, 1146, -1, + 32, 77, 756, 367, 354, 1146, -1, 32, 92, 756, + 367, 354, 1146, -1, 32, 133, 756, 367, 354, 1146, + -1, 32, 153, 1146, 367, 354, 1146, -1, 32, 170, + 811, 367, 354, 1146, -1, 32, 282, 842, 367, 354, + 1146, -1, 32, 282, 72, 756, 432, 1148, 367, 354, + 1146, -1, 32, 282, 157, 756, 432, 1148, 367, 354, + 1146, -1, 32, 316, 811, 367, 354, 1146, -1, 32, + 348, 811, 367, 354, 1146, -1, 32, 396, 1029, 367, + 354, 1146, -1, 32, 396, 186, 150, 1029, 367, 354, + 1146, -1, 32, 383, 756, 367, 354, 1146, -1, 32, + 403, 357, 298, 756, 367, 354, 1146, -1, 32, 403, + 357, 127, 756, 367, 354, 1146, -1, 32, 403, 357, + 401, 756, 367, 354, 1146, -1, 32, 403, 357, 85, + 756, 367, 354, 1146, -1, 32, 361, 1144, 367, 354, + 1146, -1, 32, 361, 186, 150, 1144, 367, 354, 1146, + -1, 32, 444, 1144, 367, 354, 1146, -1, 32, 444, + 186, 150, 1144, 367, 354, 1146, -1, 32, 242, 444, + 1144, 367, 354, 1146, -1, 32, 242, 444, 186, 150, + 1144, 367, 354, 1146, -1, 32, 165, 396, 1029, 367, + 354, 1146, -1, 32, 165, 396, 186, 150, 1029, 367, + 354, 1146, -1, 32, 418, 756, 367, 354, 1146, -1, + 32, 282, 842, 367, 489, 866, 490, -1, 867, -1, + 866, 493, 867, -1, 1163, 477, 262, -1, 1163, 477, + 868, -1, 818, -1, 1167, -1, 1110, -1, 639, -1, + 1155, -1, 32, 418, 756, 367, 489, 866, 490, -1, + 32, 29, 823, 296, 408, 1158, -1, 32, 77, 756, + 296, 408, 1158, -1, 32, 92, 756, 296, 408, 1158, + -1, 32, 110, 1147, 296, 408, 1158, -1, 32, 133, + 756, 296, 408, 1158, -1, 32, 170, 811, 296, 408, + 1158, -1, 32, 648, 220, 1146, 296, 408, 1158, -1, + 32, 221, 274, 639, 296, 408, 1158, -1, 32, 282, + 842, 296, 408, 1158, -1, 32, 282, 72, 756, 432, + 1148, 296, 408, 1158, -1, 32, 282, 157, 756, 432, + 1148, 296, 408, 1158, -1, 32, 316, 811, 296, 408, + 1158, -1, 32, 348, 811, 296, 408, 1158, -1, 32, + 354, 1146, 296, 408, 1158, -1, 32, 418, 756, 296, + 408, 1158, -1, 32, 399, 1146, 296, 408, 1158, -1, + 32, 383, 756, 296, 408, 1158, -1, 32, 403, 357, + 127, 756, 296, 408, 1158, -1, 32, 403, 357, 85, + 756, 296, 408, 1158, -1, 32, 165, 109, 455, 1146, + 296, 408, 1158, -1, 32, 364, 1146, 296, 408, 1158, + -1, 32, 144, 413, 1146, 296, 408, 1158, -1, 32, + 319, 1146, 296, 408, 1158, -1, 32, 390, 1146, 296, + 408, 1158, -1, 95, 319, 1146, 872, 830, -1, 873, + -1, -1, 163, 396, 1030, -1, 163, 30, 397, -1, + 32, 319, 1146, 367, 725, -1, 32, 319, 1146, 26, + 396, 1030, -1, 32, 319, 1146, 367, 396, 1030, -1, + 32, 319, 1146, 135, 396, 1030, -1, 95, 390, 1146, + 87, 1155, 319, 876, 830, -1, 877, -1, 876, 493, + 877, -1, 1163, -1, 32, 390, 1146, 367, 725, -1, + 32, 390, 1146, 87, 1155, -1, 32, 390, 1146, 330, + 319, 830, -1, 32, 390, 1146, 367, 319, 876, 830, + -1, 32, 390, 1146, 138, -1, 32, 390, 1146, 128, + -1, 135, 390, 1146, 547, -1, 135, 390, 186, 150, + 1146, 547, -1, 95, 807, 352, 1146, 39, 280, 885, + 408, 1144, 1039, 131, 886, 881, -1, 266, -1, 883, + -1, 489, 882, 490, -1, 882, 492, 884, -1, 884, + -1, 974, -1, 949, -1, 965, -1, 958, -1, 887, + -1, 883, -1, -1, 360, -1, 430, -1, 121, -1, + 206, -1, 207, -1, 31, -1, -1, 267, 1160, 888, + -1, 493, 1155, -1, -1, 231, 1160, -1, 427, 1160, + -1, 427, 482, -1, 22, 892, 896, -1, 50, 892, + 895, -1, 381, 410, 895, -1, 82, 892, 896, -1, + 141, 892, 896, -1, 346, 892, 896, -1, 353, 1160, + -1, 333, 353, 1160, -1, 333, 1160, -1, 346, 892, + 408, 353, 1160, -1, 346, 892, 408, 1160, -1, 310, + 410, 1155, -1, 82, 311, 1155, -1, 346, 311, 1155, + -1, 454, -1, 410, -1, -1, 216, 228, 525, -1, + 322, 281, -1, 322, 456, -1, 118, -1, 265, 118, + -1, 893, -1, 894, 493, 893, -1, 894, 893, -1, + 894, -1, -1, 36, 66, -1, 36, 261, 66, -1, + -1, 95, 580, 444, 1144, 600, 552, 39, 974, 898, + -1, 95, 285, 336, 580, 444, 1144, 600, 552, 39, + 974, 898, -1, 95, 580, 326, 444, 1144, 489, 601, + 490, 552, 39, 974, 898, -1, 95, 285, 336, 580, + 326, 444, 1144, 489, 601, 490, 552, 39, 974, 898, + -1, 451, 70, 283, -1, 451, 62, 70, 283, -1, + 451, 233, 70, 283, -1, -1, 232, 1151, -1, 95, + 110, 1147, 501, 901, -1, 902, -1, -1, 903, -1, + 902, 903, -1, 904, 905, 1156, -1, 904, 905, 526, + -1, 904, 905, 116, -1, 3, -1, 87, 230, -1, + 139, -1, 236, -1, 296, -1, 399, -1, 401, -1, + 477, -1, -1, 32, 110, 1147, 451, 901, -1, 32, + 110, 1147, 901, -1, 32, 110, 1147, 367, 399, 1146, + -1, 32, 110, 1147, 533, -1, 135, 110, 1147, -1, + 135, 110, 186, 150, 1147, -1, 135, 110, 1147, 501, + 489, 909, 490, -1, 135, 110, 186, 150, 1147, 501, + 489, 909, 490, -1, 910, -1, 909, 493, 910, -1, + 164, -1, 32, 77, 756, 330, 443, -1, 32, 395, + 367, 520, -1, 32, 395, 338, 532, -1, 95, 133, + 756, 915, 1051, 589, -1, 32, 133, 756, 546, -1, + 32, 133, 756, 135, 265, 270, -1, 32, 133, 756, + 367, 265, 270, -1, 32, 133, 756, 26, 597, -1, + 32, 133, 756, 135, 88, 1146, 547, -1, 32, 133, + 756, 135, 88, 186, 150, 1146, 547, -1, 32, 133, + 756, 435, 88, 1146, -1, 39, -1, -1, 32, 403, + 357, 127, 756, 725, -1, 32, 403, 357, 85, 756, + 26, 240, 163, 1145, 918, 755, -1, 32, 403, 357, + 85, 756, 32, 240, 163, 1145, 918, 755, -1, 32, + 403, 357, 85, 756, 32, 240, 336, 756, 918, 756, + -1, 32, 403, 357, 85, 756, 32, 240, 163, 1145, + 336, 756, 918, 756, -1, 32, 403, 357, 85, 756, + 135, 240, 163, 1145, -1, 32, 403, 357, 85, 756, + 135, 240, 186, 150, 163, 1145, -1, 451, -1, 474, + -1, 95, 739, 92, 756, 163, 1155, 408, 1155, 168, + 756, -1, 74, 930, 1144, 921, -1, 74, 930, -1, + 74, 930, 1150, 280, 1144, -1, 432, 1150, -1, -1, + 433, 931, 932, 930, 929, 936, -1, 433, 489, 924, + 490, 936, -1, 925, 930, 936, -1, 925, 489, 924, + 490, 936, -1, 926, -1, 924, 493, 926, -1, 35, + -1, 34, -1, 927, 928, -1, 1162, -1, 925, -1, + 526, -1, 639, -1, -1, 925, -1, -1, 442, -1, + -1, 169, -1, -1, 167, -1, -1, 489, 1145, 490, + -1, -1, 1144, 933, -1, 934, -1, 935, 493, 934, + -1, 935, -1, -1, 151, 938, -1, 151, 925, 930, + 938, -1, 151, 442, 938, -1, 151, 489, 939, 490, + 938, -1, 974, -1, 949, -1, 965, -1, 958, -1, + 970, -1, 625, -1, 628, -1, 631, -1, 946, -1, + 940, -1, 939, 493, 940, -1, 941, 942, -1, 1162, + -1, 925, -1, 526, -1, 639, -1, -1, 310, 1146, + 944, 39, 945, -1, 489, 1115, 490, -1, -1, 974, + -1, 949, -1, 965, -1, 958, -1, 149, 1146, 947, + -1, 95, 580, 396, 626, 39, 149, 1146, 947, 627, + -1, 95, 580, 396, 186, 265, 150, 626, 39, 149, + 1146, 947, 627, -1, 489, 1112, 490, -1, -1, 112, + 1146, -1, 112, 310, 1146, -1, 112, 30, -1, 112, + 310, 30, -1, 983, 206, 212, 950, 951, 955, 957, + -1, 1144, -1, 1144, 39, 1160, -1, 974, -1, 294, + 952, 437, 974, -1, 489, 953, 490, 974, -1, 489, + 953, 490, 294, 952, 437, 974, -1, 116, 438, -1, + 431, -1, 395, -1, 954, -1, 953, 493, 954, -1, + 1160, 1138, -1, 280, 86, 956, 131, 430, 367, 966, + 1039, -1, 280, 86, 956, 131, 266, -1, -1, 489, + 797, 490, 1039, -1, 280, 88, 1146, -1, -1, 341, + 1141, -1, -1, 983, 121, 168, 1031, 959, 1040, 957, + -1, 432, 1020, -1, -1, 237, 986, 1030, 961, 963, + -1, 192, 962, 247, -1, -1, 24, 370, -1, 350, + 370, -1, 350, 148, -1, 370, 430, 148, -1, 370, + -1, 370, 350, 148, -1, 148, -1, 24, 148, -1, + 269, -1, -1, 269, -1, 374, 238, -1, -1, 983, + 430, 1031, 367, 966, 1019, 1040, 957, -1, 967, -1, + 966, 493, 967, -1, 968, 477, 1074, -1, 489, 969, + 490, 477, 1074, -1, 1160, 1138, -1, 968, -1, 969, + 493, 968, -1, 115, 971, 972, 107, 973, 163, 974, + -1, 1146, -1, -1, 972, 261, 356, -1, 972, 356, + -1, 972, 53, -1, 972, 205, -1, -1, 451, 183, + -1, 453, 183, -1, 976, -1, 975, -1, 489, 976, + 490, -1, 489, 975, 490, -1, 978, -1, 977, 991, + -1, 977, 990, 1012, 995, -1, 977, 990, 994, 1013, + -1, 979, 977, -1, 979, 977, 991, -1, 979, 977, + 990, 1012, 995, -1, 979, 977, 990, 994, 1013, -1, + 978, -1, 975, -1, 360, 989, 1140, 984, 1019, 1039, + 1004, 1011, 1092, -1, 360, 988, 1141, 984, 1019, 1039, + 1004, 1011, 1092, -1, 1018, -1, 396, 1029, -1, 977, + 424, 987, 977, -1, 977, 210, 987, 977, -1, 977, + 145, 987, 977, -1, 451, 980, -1, 474, 980, -1, + 451, 326, 980, -1, 981, -1, 980, 493, 981, -1, + 1146, 933, 39, 982, 489, 945, 490, -1, 242, -1, + 265, 242, -1, -1, 979, -1, -1, 212, 985, -1, + -1, 402, 986, 1144, -1, 400, 986, 1144, -1, 233, + 402, 986, 1144, -1, 233, 400, 986, 1144, -1, 173, + 402, 986, 1144, -1, 173, 400, 986, 1144, -1, 428, + 986, 1144, -1, 396, 1144, -1, 1144, -1, 396, -1, + -1, 30, -1, 130, -1, -1, 130, -1, 130, 280, + 489, 1112, 490, -1, 30, -1, -1, 991, -1, -1, + 286, 57, 992, -1, 993, -1, 992, 493, 993, -1, + 1074, 432, 1110, 805, -1, 1074, 804, 805, -1, 996, + 997, -1, 997, 996, -1, 996, -1, 997, -1, 994, + -1, -1, 230, 998, -1, 230, 998, 493, 999, -1, + 158, 1003, 1000, 1002, 281, -1, 158, 1003, 1000, 1002, + 451, 405, -1, 158, 1003, 1002, 281, -1, 158, 1003, + 1002, 451, 405, -1, 277, 999, -1, 277, 1000, 1002, + -1, 1074, -1, 30, -1, 1074, -1, 1076, -1, 480, + 1001, -1, 481, 1001, -1, 1154, -1, 5, -1, 350, + -1, 351, -1, 160, -1, 256, -1, 177, 57, 1005, + -1, -1, 1006, -1, 1005, 493, 1006, -1, 1074, -1, + 1007, -1, 1009, -1, 1008, -1, 1010, -1, 489, 490, + -1, 347, 489, 1112, 490, -1, 98, 489, 1112, 490, + -1, 178, 368, 489, 1005, 490, -1, 181, 1074, -1, + -1, 1014, -1, 163, 322, 281, -1, 1012, -1, -1, + 1015, -1, 1014, 1015, -1, 1016, 1017, 964, -1, 163, + 430, -1, 163, 261, 218, 430, -1, 163, 370, -1, + 163, 218, 370, -1, 275, 1143, -1, -1, 438, 489, + 1112, 490, -1, 1018, 493, 489, 1112, 490, -1, 168, + 1020, -1, -1, 1021, -1, 1020, 493, 1021, -1, 1029, + 1024, -1, 1029, 1024, 1032, -1, 1034, 1025, -1, 223, + 1034, 1025, -1, 1044, 1024, -1, 223, 1044, 1024, -1, + 975, 1024, -1, 223, 975, 1024, -1, 1022, -1, 489, + 1022, 490, 1023, -1, 489, 1022, 490, -1, 1021, 96, + 217, 1021, -1, 1021, 1026, 217, 1021, 1028, -1, 1021, + 217, 1021, 1028, -1, 1021, 253, 1026, 217, 1021, -1, + 1021, 253, 217, 1021, -1, 39, 1160, 489, 1145, 490, + -1, 39, 1160, -1, 1160, 489, 1145, 490, -1, 1160, + -1, 1023, -1, -1, 1023, -1, 39, 489, 1042, 490, + -1, 39, 1160, 489, 1042, 490, -1, 1160, 489, 1042, + 490, -1, -1, 169, 1027, -1, 227, 1027, -1, 344, + 1027, -1, 202, -1, 290, -1, -1, 432, 489, 1145, + 490, -1, 280, 1074, -1, 1144, -1, 1144, 482, -1, + 281, 1144, -1, 281, 489, 1144, 490, -1, 1029, -1, + 1030, 493, 1029, -1, 1029, -1, 1029, 1160, -1, 1029, + 39, 1160, -1, 398, 1152, 489, 1112, 490, 1033, -1, + 335, 489, 1074, 490, -1, -1, 1079, 1038, -1, 351, + 168, 489, 1036, 490, 1038, -1, 1079, 1037, -1, 1035, + -1, 1036, 493, 1035, -1, 39, 489, 1042, 490, -1, + -1, 474, 287, -1, -1, 448, 1074, -1, -1, 448, + 1074, -1, 448, 99, 275, 971, -1, -1, 1042, -1, + -1, 1043, -1, 1042, 493, 1043, -1, 1160, 1051, 548, + -1, 468, 489, 1076, 1088, 79, 1045, 490, -1, 468, + 489, 463, 489, 1049, 490, 493, 1076, 1088, 79, 1045, + 490, -1, 1046, -1, 1045, 493, 1046, -1, 1160, 1051, + -1, 1160, 1051, 1047, -1, 1160, 163, 287, -1, 1048, + -1, 1047, 1048, -1, 3, 1075, -1, 116, 1075, -1, + 265, 270, -1, 270, -1, 1050, -1, 1049, 493, 1050, + -1, 1075, 39, 1163, -1, 116, 1075, -1, 1053, 1052, + -1, 369, 1053, 1052, -1, 1053, 38, 487, 1154, 488, + -1, 369, 1053, 38, 487, 1154, 488, -1, 1053, 38, + -1, 369, 1053, 38, -1, 1052, 487, 488, -1, 1052, + 487, 1154, 488, -1, -1, 1055, -1, 1057, -1, 1059, + -1, 1063, -1, 1069, -1, 1070, 1072, -1, 1070, 489, + 1154, 490, -1, 1057, -1, 1060, -1, 1064, -1, 1069, + -1, 1161, 1056, -1, 1161, 757, 1056, -1, 489, 1112, + 490, -1, -1, 208, -1, 209, -1, 375, -1, 52, + -1, 323, -1, 161, 1058, -1, 134, 308, -1, 114, + 1056, -1, 113, 1056, -1, 273, 1056, -1, 55, -1, + 489, 1154, 490, -1, -1, 1061, -1, 1062, -1, 1061, + -1, 1062, -1, 54, 1068, 489, 1112, 490, -1, 54, + 1068, -1, 1065, -1, 1066, -1, 1065, -1, 1066, -1, + 1067, 489, 1154, 490, -1, 1067, -1, 68, 1068, -1, + 67, 1068, -1, 439, -1, 252, 68, 1068, -1, 252, + 67, 1068, -1, 254, 1068, -1, 441, -1, -1, 407, + 489, 1154, 490, 1071, -1, 407, 1071, -1, 406, 489, + 1154, 490, 1071, -1, 406, 1071, -1, 211, -1, 474, + 406, 471, -1, 453, 406, 471, -1, -1, 469, -1, + 248, -1, 111, -1, 184, -1, 245, -1, 1073, -1, + 469, 408, 248, -1, 111, 408, 184, -1, 111, 408, + 245, -1, 111, 408, 1073, -1, 184, 408, 245, -1, + 184, 408, 1073, -1, 245, 408, 1073, -1, -1, 358, + -1, 358, 489, 1154, 490, -1, 1076, -1, 1074, 13, + 1051, -1, 1074, 76, 756, -1, 1074, 44, 406, 471, + 1074, -1, 480, 1074, -1, 481, 1074, -1, 1074, 480, + 1074, -1, 1074, 481, 1074, -1, 1074, 482, 1074, -1, + 1074, 483, 1074, -1, 1074, 484, 1074, -1, 1074, 485, + 1074, -1, 1074, 475, 1074, -1, 1074, 476, 1074, -1, + 1074, 477, 1074, -1, 1074, 17, 1074, -1, 1074, 18, + 1074, -1, 1074, 19, 1074, -1, 1074, 1109, 1074, -1, + 1109, 1074, -1, 1074, 1109, -1, 1074, 478, 1074, -1, + 1074, 478, -1, 1074, 36, 1074, -1, 1074, 285, 1074, + -1, 265, 1074, -1, 472, 1074, -1, 1074, 229, 1074, + -1, 1074, 229, 1074, 143, 1074, -1, 1074, 472, 229, + 1074, -1, 1074, 472, 229, 1074, 143, 1074, -1, 1074, + 187, 1074, -1, 1074, 187, 1074, 143, 1074, -1, 1074, + 472, 187, 1074, -1, 1074, 472, 187, 1074, 143, 1074, + -1, 1074, 372, 408, 1074, -1, 1074, 372, 408, 1074, + 143, 1074, -1, 1074, 472, 372, 408, 1074, -1, 1074, + 472, 372, 408, 1074, 143, 1074, -1, 1074, 214, 270, + -1, 1074, 215, -1, 1074, 214, 265, 270, -1, 1074, + 268, -1, 1103, 292, 1103, -1, 1074, 214, 415, -1, + 1074, 214, 265, 415, -1, 1074, 214, 156, -1, 1074, + 214, 265, 156, -1, 1074, 214, 426, -1, 1074, 214, + 265, 426, -1, 1074, 214, 130, 168, 1074, -1, 1074, + 214, 265, 130, 168, 1074, -1, 1074, 214, 275, 489, + 1115, 490, -1, 1074, 214, 265, 275, 489, 1115, 490, + -1, 1074, 51, 1139, 1075, 36, 1074, -1, 1074, 472, + 51, 1139, 1075, 36, 1074, -1, 1074, 51, 393, 1075, + 36, 1074, -1, 1074, 472, 51, 393, 1075, 36, 1074, + -1, 1074, 192, 1128, -1, 1074, 472, 192, 1128, -1, + 1074, 1111, 1106, 975, -1, 1074, 1111, 1106, 489, 1074, + 490, -1, 425, 975, -1, 1074, 214, 132, -1, 1074, + 214, 265, 132, -1, 1074, 214, 264, -1, 1074, 214, + 1120, 264, -1, 1074, 214, 265, 264, -1, 1074, 214, + 265, 1120, 264, -1, 116, -1, 1076, -1, 1075, 13, + 1051, -1, 480, 1075, -1, 481, 1075, -1, 1075, 480, + 1075, -1, 1075, 481, 1075, -1, 1075, 482, 1075, -1, + 1075, 483, 1075, -1, 1075, 484, 1075, -1, 1075, 485, + 1075, -1, 1075, 475, 1075, -1, 1075, 476, 1075, -1, + 1075, 477, 1075, -1, 1075, 17, 1075, -1, 1075, 18, + 1075, -1, 1075, 19, 1075, -1, 1075, 478, 1075, -1, + 1075, 478, -1, 1075, 1109, 1075, -1, 1109, 1075, -1, + 1075, 1109, -1, 1075, 214, 130, 168, 1075, -1, 1075, + 214, 265, 130, 168, 1075, -1, 1075, 214, 275, 489, + 1115, 490, -1, 1075, 214, 265, 275, 489, 1115, 490, + -1, 1075, 214, 132, -1, 1075, 214, 265, 132, -1, + 1134, -1, 1153, -1, 12, 1138, -1, 478, 1138, -1, + 489, 1074, 490, 1138, -1, 1129, -1, 1078, -1, 975, + -1, 975, 1137, -1, 150, 975, -1, 38, 975, -1, + 38, 1116, -1, 1104, -1, 1105, -1, 178, 489, 1112, + 490, -1, 1152, 489, 490, -1, 1152, 489, 1113, 990, + 490, -1, 1152, 489, 440, 1114, 990, 490, -1, 1152, + 489, 1113, 493, 440, 1114, 990, 490, -1, 1152, 489, + 30, 1113, 990, 490, -1, 1152, 489, 130, 1113, 990, + 490, -1, 1152, 489, 482, 490, -1, 1077, 1090, 1091, + 1095, -1, 1080, -1, 1077, -1, 1080, -1, 77, 163, + 489, 1074, 490, -1, 101, -1, 104, -1, 104, 489, + 1154, 490, -1, 105, -1, 105, 489, 1154, 490, -1, + 234, -1, 234, 489, 1154, 490, -1, 235, -1, 235, + 489, 1154, 490, -1, 102, -1, 106, -1, 366, -1, + 431, -1, 100, -1, 103, -1, 64, 489, 1074, 39, + 1051, 490, -1, 155, 489, 1118, 490, -1, 263, 489, + 1074, 490, -1, 263, 489, 1074, 493, 1120, 490, -1, + 293, 489, 1121, 490, -1, 306, 489, 1123, 490, -1, + 391, 489, 1124, 490, -1, 412, 489, 1074, 39, 1051, + 490, -1, 414, 489, 56, 1127, 490, -1, 414, 489, + 224, 1127, 490, -1, 414, 489, 409, 1127, 490, -1, + 414, 489, 1127, 490, -1, 271, 489, 1074, 493, 1074, + 490, -1, 75, 489, 1112, 490, -1, 176, 489, 1112, + 490, -1, 226, 489, 1112, 490, -1, 459, 489, 1112, + 490, -1, 460, 489, 250, 1163, 490, -1, 460, 489, + 250, 1163, 493, 1083, 490, -1, 460, 489, 250, 1163, + 493, 1112, 490, -1, 460, 489, 250, 1163, 493, 1083, + 493, 1112, 490, -1, 461, 489, 1076, 1088, 490, -1, + 462, 489, 1084, 490, -1, 464, 489, 1086, 1074, 1087, + 490, -1, 465, 489, 250, 1163, 490, -1, 465, 489, + 250, 1163, 493, 1074, 490, -1, 466, 489, 1074, 493, + 1081, 1082, 490, -1, 467, 489, 1086, 1074, 39, 1053, + 490, -1, 443, 1074, -1, 443, 261, 437, -1, 493, + 380, 470, -1, 493, 380, 261, -1, 493, 380, 261, + 437, -1, -1, 458, 489, 1084, 490, -1, 1085, -1, + 1084, 493, 1085, -1, 1074, 39, 1163, -1, 1074, -1, + 132, -1, 90, -1, 309, 449, -1, 389, 449, -1, + -1, 301, 1076, -1, 301, 1076, 1089, -1, 301, 1089, + 1076, -1, 301, 1089, 1076, 1089, -1, 57, 327, -1, + 57, 437, -1, 452, 177, 489, 991, 490, -1, -1, + 159, 489, 448, 1074, 490, -1, -1, 450, 1093, -1, + -1, 1094, -1, 1093, 493, 1094, -1, 1160, 39, 1096, + -1, 291, 1096, -1, 291, 1160, -1, -1, 489, 1097, + 1098, 990, 1099, 490, -1, 1160, -1, -1, 300, 57, + 1112, -1, -1, 321, 1100, 1102, -1, 351, 1100, 1102, + -1, 179, 1100, 1102, -1, -1, 1101, -1, 51, 1101, + 36, 1101, -1, 421, 307, -1, 421, 162, -1, 99, + 350, -1, 1074, 307, -1, 1074, 162, -1, 146, 99, + 350, -1, 146, 177, -1, 146, 405, -1, 146, 261, + 288, -1, -1, 350, 489, 1112, 490, -1, 350, 489, + 490, -1, 489, 1112, 493, 1074, 490, -1, 350, 489, + 1112, 490, -1, 350, 489, 490, -1, 489, 1112, 493, + 1074, 490, -1, 37, -1, 377, -1, 30, -1, 10, + -1, 1108, -1, 480, -1, 481, -1, 482, -1, 483, + -1, 484, -1, 485, -1, 475, -1, 476, -1, 477, + -1, 17, -1, 18, -1, 19, -1, 478, -1, 10, + -1, 282, 489, 840, 490, -1, 1107, -1, 282, 489, + 840, 490, -1, 1107, -1, 282, 489, 840, 490, -1, + 229, -1, 472, 229, -1, 187, -1, 472, 187, -1, + 1074, -1, 1112, 493, 1074, -1, 1114, -1, 1113, 493, + 1114, -1, 1074, -1, 816, 15, 1074, -1, 816, 16, + 1074, -1, 1051, -1, 1115, 493, 1051, -1, 487, 1112, + 488, -1, 487, 1117, 488, -1, 487, 488, -1, 1116, + -1, 1117, 493, 1116, -1, 1119, 168, 1074, -1, 12, + 168, 1074, -1, 478, 168, 1074, -1, -1, 3, -1, + 469, -1, 248, -1, 111, -1, 184, -1, 245, -1, + 358, -1, 1155, -1, 257, -1, 258, -1, 259, -1, + 260, -1, 1074, 1122, 1125, 1126, -1, 1074, 1122, 1125, + -1, 303, 1074, -1, 1075, 192, 1075, -1, -1, 1074, + 1125, 1126, -1, 1074, 1126, 1125, -1, 1074, 1125, -1, + 1074, 1126, -1, 1112, -1, -1, 168, 1074, -1, 163, + 1074, -1, 1074, 168, 1112, -1, 168, 1112, -1, 1112, + -1, 975, -1, 489, 1112, 490, -1, 63, 1133, 1130, + 1132, 141, -1, 1131, -1, 1130, 1131, -1, 447, 1074, + 404, 1074, -1, 137, 1074, -1, -1, 1074, -1, -1, + 1160, -1, 1160, 1137, -1, 491, 1149, -1, 491, 482, + -1, 487, 1074, 488, -1, 487, 1136, 494, 1136, 488, + -1, 1074, -1, -1, 1135, -1, 1137, 1135, -1, -1, + 1138, 1135, -1, 43, -1, -1, 1141, -1, -1, 1142, + -1, 1141, 493, 1142, -1, 1074, 39, 1163, -1, 1074, + 3, -1, 1074, -1, 482, -1, 1144, -1, 1143, 493, + 1144, -1, 1160, -1, 1160, 1137, -1, 1146, -1, 1145, + 493, 1146, -1, 1160, -1, 1160, -1, 1160, -1, 1163, + -1, 1160, -1, 1155, -1, 1161, -1, 1160, 1137, -1, + 1154, -1, 5, -1, 1155, -1, 8, -1, 9, -1, + 1152, 1155, -1, 1152, 489, 1113, 990, 490, 1155, -1, + 1152, 12, -1, 1152, 489, 1113, 990, 490, 12, -1, + 1054, 1155, -1, 1070, 1155, 1072, -1, 1070, 489, 1154, + 490, 1155, -1, 1054, 12, -1, 1070, 12, 1072, -1, + 1070, 489, 1154, 490, 12, -1, 1070, 489, 1154, 490, + 478, -1, 415, -1, 156, -1, 270, -1, 11, -1, + 6, -1, 1154, -1, 480, 1154, -1, 481, 1154, -1, + 1158, -1, 1162, -1, 106, -1, 366, -1, 1158, -1, + 1159, 493, 1158, -1, 3, -1, 1164, -1, 1165, -1, + 3, -1, 1164, -1, 1166, -1, 3, -1, 1164, -1, + 1165, -1, 1166, -1, 3, -1, 1164, -1, 1165, -1, + 1166, -1, 1167, -1, 22, -1, 23, -1, 24, -1, + 25, -1, 26, -1, 27, -1, 28, -1, 29, -1, + 31, -1, 32, -1, 33, -1, 41, -1, 42, -1, + 44, -1, 45, -1, 46, -1, 48, -1, 49, -1, + 50, -1, 57, -1, 58, -1, 59, -1, 60, -1, + 61, -1, 62, -1, 65, -1, 66, -1, 69, -1, + 71, -1, 72, -1, 73, -1, 74, -1, 79, -1, + 80, -1, 81, -1, 82, -1, 83, -1, 85, -1, + 86, -1, 87, -1, 89, -1, 90, -1, 91, -1, + 92, -1, 93, -1, 94, -1, 97, -1, 98, -1, + 99, -1, 107, -1, 108, -1, 109, -1, 110, -1, + 111, -1, 112, -1, 115, -1, 117, -1, 119, -1, + 120, -1, 121, -1, 122, -1, 123, -1, 124, -1, + 126, -1, 127, -1, 128, -1, 129, -1, 132, -1, + 133, -1, 134, -1, 135, -1, 136, -1, 138, -1, + 139, -1, 140, -1, 142, -1, 143, -1, 144, -1, + 146, -1, 147, -1, 148, -1, 149, -1, 151, -1, + 152, -1, 153, -1, 154, -1, 157, -1, 159, -1, + 160, -1, 162, -1, 164, -1, 166, -1, 170, -1, + 171, -1, 172, -1, 173, -1, 175, -1, 179, -1, + 180, -1, 182, -1, 183, -1, 184, -1, 185, -1, + 186, -1, 188, -1, 189, -1, 190, -1, 191, -1, + 193, -1, 194, -1, 195, -1, 196, -1, 197, -1, + 198, -1, 199, -1, 201, -1, 204, -1, 205, -1, + 206, -1, 207, -1, 213, -1, 216, -1, 218, -1, + 219, -1, 220, -1, 221, -1, 222, -1, 225, -1, + 228, -1, 231, -1, 232, -1, 233, -1, 236, -1, + 237, -1, 238, -1, 239, -1, 240, -1, 241, -1, + 242, -1, 243, -1, 244, -1, 245, -1, 246, -1, + 247, -1, 248, -1, 249, -1, 250, -1, 251, -1, + 255, -1, 256, -1, 257, -1, 258, -1, 259, -1, + 260, -1, 261, -1, 264, -1, 266, -1, 267, -1, + 269, -1, 272, -1, 274, -1, 275, -1, 276, -1, + 278, -1, 279, -1, 282, -1, 283, -1, 284, -1, + 287, -1, 288, -1, 291, -1, 294, -1, 295, -1, + 296, -1, 297, -1, 298, -1, 299, -1, 300, -1, + 301, -1, 302, -1, 304, -1, 305, -1, 307, -1, + 310, -1, 311, -1, 309, -1, 313, -1, 314, -1, 315, -1, 316, -1, 317, -1, 318, -1, 319, -1, - 320, -1, 321, -1, 322, -1, 323, -1, 324, -1, + 320, -1, 321, -1, 322, -1, 324, -1, 325, -1, 326, -1, 327, -1, 329, -1, 330, -1, 331, -1, - 333, -1, 334, -1, 335, -1, 336, -1, 337, -1, - 338, -1, 339, -1, 340, -1, 341, -1, 343, -1, - 344, -1, 345, -1, 346, -1, 347, -1, 349, -1, - 350, -1, 352, -1, 353, -1, 355, -1, 356, -1, - 358, -1, 360, -1, 361, -1, 362, -1, 363, -1, - 364, -1, 365, -1, 366, -1, 367, -1, 368, -1, - 369, -1, 370, -1, 371, -1, 374, -1, 375, -1, - 377, -1, 379, -1, 380, -1, 381, -1, 382, -1, - 383, -1, 389, -1, 390, -1, 392, -1, 395, -1, - 396, -1, 397, -1, 398, -1, 399, -1, 400, -1, - 401, -1, 404, -1, 405, -1, 406, -1, 407, -1, - 408, -1, 411, -1, 412, -1, 413, -1, 414, -1, - 415, -1, 419, -1, 421, -1, 422, -1, 423, -1, - 424, -1, 427, -1, 430, -1, 431, -1, 432, -1, - 433, -1, 434, -1, 435, -1, 447, -1, 448, -1, - 449, -1, 47, -1, 48, -1, 50, -1, 51, -1, - 62, -1, 63, -1, 70, -1, 108, -1, 109, -1, - 145, -1, 149, -1, 155, -1, 170, -1, 172, -1, - 195, -1, 200, -1, 201, -1, 203, -1, 218, -1, - 244, -1, 246, -1, 250, -1, 257, -1, 259, -1, - 274, -1, 278, -1, 291, -1, 293, -1, 307, -1, - 332, -1, 351, -1, 357, -1, 372, -1, 385, -1, - 386, -1, 391, -1, 393, -1, 416, -1, 417, -1, - 436, -1, 437, -1, 438, -1, 439, -1, 440, -1, - 441, -1, 442, -1, 443, -1, 444, -1, 445, -1, - 446, -1, 43, -1, 49, -1, 72, -1, 79, -1, - 91, -1, 98, -1, 161, -1, 163, -1, 180, -1, - 194, -1, 206, -1, 207, -1, 209, -1, 219, -1, - 221, -1, 245, -1, 254, -1, 275, -1, 277, -1, - 328, -1, 354, -1, 378, -1, 420, -1, 26, -1, - 30, -1, 31, -1, 32, -1, 33, -1, 34, -1, - 35, -1, 36, -1, 39, -1, 52, -1, 58, -1, - 59, -1, 65, -1, 71, -1, 73, -1, 83, -1, - 90, -1, 95, -1, 96, -1, 97, -1, 99, -1, - 100, -1, 101, -1, 111, -1, 113, -1, 120, -1, - 125, -1, 126, -1, 132, -1, 136, -1, 140, -1, - 150, -1, 152, -1, 157, -1, 159, -1, 162, -1, - 168, -1, 171, -1, 174, -1, 185, -1, 192, -1, - 202, -1, 204, -1, 215, -1, 216, -1, 222, -1, - 226, -1, 227, -1, 251, -1, 256, -1, 263, -1, - 266, -1, 267, -1, 271, -1, 272, -1, 288, -1, - 297, -1, 312, -1, 325, -1, 342, -1, 348, -1, - 359, -1, 373, -1, 376, -1, 384, -1, 387, -1, - 388, -1, 394, -1, 402, -1, 403, -1, 409, -1, - 410, -1, 418, -1, 425, -1, 426, -1, 428, -1, - 429, -1 + 332, -1, 333, -1, 334, -1, 335, -1, 336, -1, + 337, -1, 338, -1, 339, -1, 340, -1, 342, -1, + 343, -1, 345, -1, 346, -1, 347, -1, 348, -1, + 349, -1, 351, -1, 352, -1, 353, -1, 354, -1, + 355, -1, 356, -1, 357, -1, 358, -1, 359, -1, + 361, -1, 362, -1, 363, -1, 364, -1, 365, -1, + 367, -1, 368, -1, 370, -1, 371, -1, 373, -1, + 374, -1, 376, -1, 378, -1, 379, -1, 380, -1, + 381, -1, 382, -1, 383, -1, 384, -1, 385, -1, + 386, -1, 387, -1, 388, -1, 389, -1, 390, -1, + 392, -1, 394, -1, 395, -1, 397, -1, 399, -1, + 400, -1, 401, -1, 402, -1, 403, -1, 405, -1, + 410, -1, 411, -1, 413, -1, 416, -1, 417, -1, + 418, -1, 419, -1, 420, -1, 421, -1, 422, -1, + 423, -1, 426, -1, 427, -1, 428, -1, 429, -1, + 430, -1, 433, -1, 434, -1, 435, -1, 436, -1, + 437, -1, 441, -1, 443, -1, 444, -1, 445, -1, + 446, -1, 449, -1, 452, -1, 453, -1, 454, -1, + 455, -1, 456, -1, 457, -1, 469, -1, 470, -1, + 471, -1, 51, -1, 52, -1, 54, -1, 55, -1, + 67, -1, 68, -1, 75, -1, 113, -1, 114, -1, + 150, -1, 155, -1, 161, -1, 176, -1, 178, -1, + 203, -1, 208, -1, 209, -1, 211, -1, 226, -1, + 252, -1, 254, -1, 262, -1, 263, -1, 271, -1, + 273, -1, 289, -1, 293, -1, 306, -1, 308, -1, + 323, -1, 350, -1, 369, -1, 375, -1, 391, -1, + 406, -1, 407, -1, 412, -1, 414, -1, 438, -1, + 439, -1, 458, -1, 459, -1, 460, -1, 461, -1, + 462, -1, 463, -1, 464, -1, 465, -1, 466, -1, + 467, -1, 468, -1, 47, -1, 53, -1, 77, -1, + 84, -1, 96, -1, 103, -1, 167, -1, 169, -1, + 187, -1, 202, -1, 214, -1, 215, -1, 217, -1, + 227, -1, 229, -1, 253, -1, 268, -1, 290, -1, + 292, -1, 344, -1, 372, -1, 398, -1, 442, -1, + 30, -1, 34, -1, 35, -1, 36, -1, 37, -1, + 38, -1, 39, -1, 40, -1, 43, -1, 56, -1, + 63, -1, 64, -1, 70, -1, 76, -1, 78, -1, + 88, -1, 95, -1, 100, -1, 101, -1, 102, -1, + 104, -1, 105, -1, 106, -1, 116, -1, 118, -1, + 125, -1, 130, -1, 131, -1, 137, -1, 141, -1, + 145, -1, 156, -1, 158, -1, 163, -1, 165, -1, + 168, -1, 174, -1, 177, -1, 181, -1, 192, -1, + 200, -1, 210, -1, 212, -1, 223, -1, 224, -1, + 230, -1, 234, -1, 235, -1, 265, -1, 270, -1, + 277, -1, 280, -1, 281, -1, 285, -1, 286, -1, + 303, -1, 312, -1, 328, -1, 341, -1, 360, -1, + 366, -1, 377, -1, 393, -1, 396, -1, 404, -1, + 408, -1, 409, -1, 415, -1, 424, -1, 425, -1, + 431, -1, 432, -1, 440, -1, 447, -1, 448, -1, + 450, -1, 451, -1 }; /* YYRLINE[YYN] -- source line where rule number YYN was defined. */ static const yytype_uint16 yyrline[] = { - 0, 780, 780, 796, 808, 818, 819, 820, 821, 822, - 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, - 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, - 843, 844, 845, 846, 847, 848, 849, 850, 851, 852, - 853, 854, 855, 856, 857, 858, 859, 860, 861, 862, - 863, 864, 865, 866, 867, 868, 869, 870, 871, 872, - 873, 874, 875, 876, 877, 878, 879, 880, 881, 882, - 883, 884, 885, 886, 887, 888, 889, 890, 891, 892, - 893, 894, 895, 896, 897, 898, 899, 900, 901, 902, - 903, 904, 905, 906, 907, 908, 909, 910, 911, 912, - 913, 914, 915, 916, 917, 918, 919, 920, 921, 922, - 923, 924, 925, 926, 927, 928, 929, 930, 931, 932, - 933, 934, 935, 936, 937, 938, 939, 940, 942, 952, - 963, 964, 965, 974, 975, 979, 980, 984, 988, 992, - 1001, 1009, 1013, 1017, 1022, 1026, 1074, 1076, 1080, 1084, - 1088, 1092, 1106, 1124, 1132, 1143, 1144, 1148, 1156, 1164, - 1172, 1193, 1200, 1207, 1214, 1221, 1228, 1245, 1263, 1274, - 1275, 1286, 1296, 1306, 1321, 1339, 1340, 1344, 1351, 1359, - 1360, 1361, 1362, 1363, 1364, 1378, 1384, 1390, 1399, 1407, - 1415, 1419, 1427, 1435, 1442, 1452, 1453, 1461, 1472, 1480, - 1488, 1499, 1507, 1515, 1522, 1531, 1541, 1542, 1546, 1547, - 1550, 1552, 1554, 1558, 1559, 1560, 1561, 1565, 1566, 1567, - 1573, 1585, 1589, 1593, 1608, 1615, 1616, 1617, 1621, 1622, - 1623, 1627, 1628, 1632, 1636, 1637, 1644, 1651, 1661, 1668, - 1678, 1679, 1684, 1685, 1690, 1696, 1702, 1708, 1714, 1724, - 1734, 1735, 1739, 1740, 1748, 1763, 1769, 1775, 1781, 1787, - 1806, 1815, 1824, 1833, 1842, 1853, 1864, 1873, 1882, 1893, - 1904, 1913, 1922, 1931, 1940, 1949, 1958, 1969, 1983, 1984, - 1989, 2002, 2018, 2027, 2036, 2045, 2054, 2063, 2071, 2079, - 2088, 2097, 2106, 2115, 2132, 2141, 2150, 2159, 2169, 2182, - 2197, 2206, 2214, 2229, 2237, 2247, 2257, 2264, 2271, 2279, - 2287, 2294, 2301, 2309, 2317, 2325, 2332, 2339, 2347, 2354, - 2361, 2369, 2377, 2385, 2393, 2401, 2409, 2419, 2426, 2434, - 2442, 2450, 2458, 2466, 2473, 2480, 2487, 2493, 2503, 2504, - 2508, 2509, 2510, 2514, 2522, 2526, 2527, 2531, 2538, 2545, - 2552, 2562, 2565, 2566, 2570, 2571, 2576, 2580, 2584, 2589, - 2596, 2598, 2603, 2607, 2611, 2622, 2630, 2642, 2656, 2657, - 2658, 2659, 2660, 2664, 2665, 2670, 2671, 2676, 2686, 2696, - 2716, 2729, 2730, 2735, 2744, 2754, 2764, 2790, 2796, 2829, - 2858, 2880, 2881, 2885, 2886, 2895, 2896, 2897, 2900, 2901, - 2906, 2907, 2911, 2915, 2919, 2923, 2927, 2931, 2935, 2939, - 2943, 2947, 2951, 2955, 2959, 2963, 2972, 2976, 2980, 2984, - 2988, 2992, 2996, 2997, 3002, 3006, 3013, 3020, 3021, 3022, - 3023, 3024, 3028, 3032, 3040, 3051, 3068, 3086, 3105, 3124, - 3143, 3175, 3176, 3177, 3178, 3179, 3186, 3193, 3194, 3198, - 3199, 3203, 3204, 3208, 3212, 3219, 3223, 3230, 3231, 3232, - 3236, 3237, 3240, 3261, 3279, 3300, 3301, 3305, 3312, 3313, - 3314, 3345, 3352, 3359, 3370, 3381, 3393, 3402, 3411, 3429, - 3430, 3449, 3456, 3463, 3470, 3481, 3492, 3493, 3494, 3498, - 3499, 3500, 3501, 3502, 3503, 3504, 3505, 3514, 3521, 3525, - 3538, 3553, 3567, 3582, 3596, 3614, 3635, 3636, 3640, 3641, - 3645, 3646, 3649, 3655, 3659, 3667, 3672, 3678, 3679, 3683, - 3688, 3695, 3696, 3706, 3708, 3710, 3712, 3715, 3718, 3721, - 3725, 3726, 3727, 3728, 3729, 3732, 3733, 3737, 3738, 3741, - 3753, 3754, 3757, 3758, 3761, 3772, 3783, 3797, 3798, 3799, - 3800, 3803, 3804, 3805, 3806, 3809, 3810, 3813, 3814, 3817, - 3835, 3846, 3870, 3883, 3899, 3913, 3914, 3915, 3927, 3940, - 3956, 3969, 3970, 3982, 4002, 4012, 4025, 4033, 4044, 4045, - 4048, 4049, 4052, 4053, 4056, 4060, 4064, 4068, 4072, 4076, - 4080, 4084, 4088, 4092, 4096, 4101, 4105, 4109, 4115, 4116, - 4120, 4121, 4122, 4127, 4130, 4131, 4143, 4155, 4170, 4171, - 4179, 4180, 4184, 4185, 4189, 4190, 4194, 4195, 4199, 4209, - 4222, 4223, 4233, 4244, 4245, 4258, 4265, 4282, 4290, 4301, - 4304, 4308, 4312, 4316, 4320, 4332, 4342, 4345, 4349, 4362, - 4371, 4380, 4389, 4398, 4407, 4416, 4425, 4434, 4443, 4452, - 4461, 4470, 4479, 4488, 4497, 4506, 4515, 4524, 4533, 4542, - 4551, 4560, 4569, 4578, 4587, 4605, 4616, 4617, 4618, 4619, - 4623, 4624, 4628, 4629, 4639, 4647, 4659, 4660, 4664, 4668, - 4676, 4680, 4684, 4691, 4695, 4700, 4705, 4712, 4719, 4724, - 4734, 4746, 4761, 4762, 4767, 4768, 4772, 4773, 4783, 4792, - 4800, 4817, 4837, 4857, 4878, 4909, 4918, 4939, 4954, 4955, - 4959, 4967, 4982, 4991, 5003, 5004, 5016, 5024, 5041, 5065, - 5082, 5096, 5097, 5101, 5102, 5106, 5107, 5111, 5112, 5116, - 5130, 5134, 5135, 5139, 5140, 5141, 5142, 5143, 5153, 5171, - 5192, 5218, 5219, 5220, 5224, 5226, 5248, 5250, 5252, 5254, - 5256, 5261, 5262, 5266, 5267, 5271, 5282, 5283, 5287, 5296, - 5300, 5304, 5309, 5319, 5320, 5324, 5325, 5329, 5330, 5334, - 5335, 5336, 5340, 5344, 5345, 5346, 5350, 5351, 5356, 5357, - 5384, 5385, 5386, 5387, 5388, 5389, 5402, 5412, 5426, 5428, - 5433, 5438, 5440, 5445, 5455, 5456, 5457, 5458, 5470, 5490, - 5512, 5522, 5533, 5543, 5553, 5564, 5573, 5580, 5587, 5596, - 5605, 5614, 5623, 5632, 5642, 5651, 5663, 5666, 5667, 5670, - 5674, 5681, 5682, 5683, 5684, 5685, 5686, 5689, 5692, 5693, - 5701, 5708, 5709, 5712, 5714, 5725, 5736, 5747, 5758, 5771, - 5772, 5788, 5803, 5804, 5808, 5820, 5830, 5838, 5847, 5856, - 5857, 5860, 5861, 5864, 5865, 5866, 5869, 5883, 5888, 5898, - 5907, 5919, 5920, 5924, 5932, 5944, 5954, 5967, 5977, 5999, - 6009, 6027, 6037, 6047, 6057, 6067, 6077, 6087, 6097, 6107, - 6117, 6127, 6137, 6151, 6152, 6153, 6154, 6155, 6156, 6157, - 6158, 6159, 6160, 6161, 6162, 6163, 6168, 6169, 6170, 6171, - 6172, 6173, 6174, 6179, 6180, 6181, 6185, 6186, 6189, 6190, - 6193, 6195, 6200, 6201, 6212, 6223, 6224, 6225, 6259, 6267, - 6275, 6283, 6291, 6299, 6307, 6315, 6323, 6336, 6344, 6352, - 6360, 6368, 6376, 6384, 6392, 6404, 6405, 6406, 6407, 6408, - 6409, 6410, 6411, 6412, 6413, 6414, 6415, 6416, 6417, 6422, - 6423, 6424, 6425, 6426, 6427, 6428, 6429, 6430, 6431, 6432, - 6433, 6437, 6438, 6452, 6462, 6472, 6482, 6492, 6502, 6512, - 6524, 6525, 6530, 6531, 6532, 6533, 6534, 6535, 6540, 6541, - 6542, 6543, 6544, 6545, 6546, 6547, 6550, 6551, 6561, 6567, - 6575, 6583, 6591, 6599, 6607, 6615, 6623, 6631, 6639, 6647, - 6655, 6663, 6671, 6679, 6687, 6695, 6705, 6706, 6709, 6710, - 6720, 6736, 6750, 6776, 6778, 6780, 6782, 6789, 6798, 6799, - 6802, 6809, 6816, 6823, 6837, 6845, 6853, 6861, 6869, 6877, - 6885, 6893, 6901, 6909, 6917, 6925, 6933, 6941, 6949, 6957, - 6969, 6970, 6974, 6975, 6980, 6981, 6991, 7004, 7014, 7026, - 7027, 7030, 7031, 7041, 7051, 7052, 7056, 7060, 7064, 7075, - 7088, 7102, 7119, 7120, 7121, 7122, 7123, 7135, 7161, 7190, - 7191, 7195, 7196, 7200, 7201, 7205, 7206, 7209, 7210, 7218, - 7229, 7240, 7253, 7254, 7257, 7258, 7261, 7262, 7263, 7266, - 7267, 7268, 7284, 7296, 7309, 7324, 7325, 7328, 7329, 7333, - 7334, 7338, 7339, 7344, 7356, 7363, 7370, 7385, 7386, 7390, - 7391, 7406, 7415, 7424, 7433, 7442, 7454, 7455, 7456, 7457, - 7458, 7464, 7468, 7483, 7484, 7490, 7500, 7504, 7509, 7517, - 7558, 7562, 7566, 7570, 7578, 7579, 7583, 7593, 7594, 7600, - 7601, 7608, 7612, 7616, 7620, 7624, 7628, 7632, 7636, 7640, - 7644, 7648, 7652, 7656, 7660, 7664, 7669, 7676, 7680, 7684, - 7688, 7692, 7698, 7699, 7706, 7707, 7711, 7712, 7715, 7727, - 7731, 7746, 7757, 7758, 7763, 7764, 7779, 7789, 7802, 7812, - 7825, 7835, 7848, 7856, 7858, 7860, 7865, 7867, 7872, 7873, - 7878, 7896, 7905, 7906, 7910, 7914, 7926, 7937, 7948, 7961, - 7962, 7963, 7967, 7979, 7980, 7990, 8002, 8006, 8010, 8014, - 8021, 8041, 8050, 8059, 8068, 8079, 8080, 8083, 8084, 8085, - 8088, 8089, 8092, 8102, 8111, 8128, 8137, 8146, 8155, 8164, - 8173, 8182, 8191, 8200, 8209, 8218, 8227, 8236, 8246, 8256, - 8265, 8274, 8283, 8292, 8302, 8312, 8322, 8332, 8342, 8352, - 8362, 8372, 8382, 8392, 8402, 8412, 8423, 8434, 8445, 8456, - 8466, 8476, 8487, 8498, 8508, 8518, 8526, 8535, 8544, 8553, - 8562, 8571, 8580, 8589, 8598, 8607, 8621, 8622, 8625, 8626, - 8636, 8644, 8653, 8661, 8678, 8687, 8696, 8705, 8714, 8723, - 8732, 8741, 8750, 8759, 8768, 8777, 8786, 8795, 8804, 8813, - 8822, 8831, 8840, 8849, 8858, 8867, 8876, 8885, 8894, 8912, - 8921, 8922, 8925, 8927, 8933, 8934, 8935, 8936, 8937, 8946, - 8954, 8962, 8970, 8978, 8986, 8994, 9002, 9010, 9018, 9026, - 9034, 9042, 9050, 9058, 9066, 9074, 9082, 9090, 9098, 9106, - 9114, 9132, 9151, 9152, 9156, 9160, 9180, 9187, 9195, 9203, - 9220, 9233, 9237, 9244, 9253, 9262, 9271, 9280, 9290, 9300, - 9318, 9326, 9342, 9359, 9360, 9361, 9366, 9372, 9381, 9382, - 9383, 9384, 9385, 9389, 9390, 9393, 9394, 9395, 9396, 9400, - 9401, 9402, 9414, 9424, 9425, 9428, 9437, 9443, 9462, 9469, - 9476, 9483, 9490, 9497, 9504, 9512, 9520, 9528, 9536, 9544, - 9551, 9558, 9567, 9568, 9569, 9573, 9576, 9579, 9582, 9585, - 9592, 9594, 9596, 9601, 9603, 9615, 9628, 9641, 9659, 9680, - 9681, 9682, 9683, 9693, 9709, 9719, 9720, 9724, 9725, 9729, - 9733, 9737, 9755, 9756, 9757, 9758, 9759, 9760, 9761, 9768, - 9769, 9780, 9787, 9794, 9805, 9822, 9829, 9845, 9862, 9868, - 9884, 9897, 9906, 9914, 9922, 9931, 9942, 9953, 9963, 9964, - 9975, 9985, 9996, 10007, 10018, 10029, 10038, 10050, 10051, 10065, - 10088, 10096, 10105, 10116, 10117, 10129, 10143, 10157, 10169, 10177, - 10190, 10191, 10195, 10196, 10197, 10198, 10199, 10212, 10222, 10235, - 10236, 10240, 10241, 10244, 10245, 10248, 10249, 10253, 10254, 10267, - 10274, 10284, 10291, 10301, 10302, 10303, 10304, 10305, 10306, 10307, - 10308, 10309, 10313, 10317, 10324, 10331, 10332, 10336, 10337, 10338, - 10348, 10358, 10359, 10363, 10364, 10365, 10366, 10376, 10383, 10400, - 10419, 10420, 10430, 10436, 10442, 10448, 10464, 10482, 10486, 10494, - 10500, 10507, 10513, 10520, 10529, 10530, 10534, 10536, 10541, 10552, - 10562, 10572, 10578, 10587, 10596, 10602, 10603, 10614, 10628, 10629, - 10640, 10651, 10652, 10655, 10656, 10657, 10658, 10659, 10660, 10661, - 10662, 10665, 10666, 10670, 10671, 10672, 10683, 10701, 10702, 10706, - 10711, 10735, 10746, 10747, 10757, 10768, 10771, 10772, 10773, 10774, - 10775, 10778, 10779, 10780, 10828, 10829, 10833, 10834, 10849, 10850, - 10857, 10865, 10873, 10881, 10889, 10897, 10908, 10909, 10936, 10950, - 10965, 10966, 10985, 10989, 10993, 11010, 11017, 11024, 11034, 11035, - 11038, 11050, 11051, 11055, 11067, 11075, 11080, 11085, 11090, 11095, - 11103, 11111, 11116, 11121, 11128, 11129, 11133, 11134, 11135, 11142, - 11143, 11147, 11148, 11152, 11153, 11157, 11161, 11162, 11165, 11174, - 11187, 11188, 11189, 11190, 11194, 11195, 11199, 11201, 11217, 11219, - 11224, 11227, 11232, 11233, 11241, 11261, 11262, 11264, 11269, 11270, - 11274, 11275, 11278, 11279, 11304, 11305, 11309, 11310, 11314, 11315, - 11316, 11317, 11318, 11322, 11335, 11342, 11349, 11356, 11357, 11361, - 11362, 11366, 11367, 11371, 11372, 11376, 11387, 11388, 11389, 11390, - 11394, 11395, 11405, 11411, 11429, 11430, 11434, 11435, 11441, 11446, - 11454, 11461, 11469, 11475, 11482, 11517, 11542, 11546, 11572, 11576, - 11588, 11601, 11615, 11626, 11641, 11647, 11652, 11658, 11665, 11666, - 11674, 11678, 11682, 11688, 11695, 11700, 11701, 11702, 11703, 11707, - 11708, 11720, 11721, 11726, 11733, 11740, 11747, 11758, 11759, 11772, - 11776, 11783, 11796, 11809, 11810, 11825, 11835, 11847, 11852, 11853, - 11856, 11857, 11860, 11861, 11866, 11867, 11872, 11873, 11881, 11886, - 11887, 11891, 11895, 11901, 11925, 11935, 11948, 11949, 11953, 11967, - 12024, 12038, 12040, 12045, 12047, 12049, 12051, 12056, 12058, 12063, - 12071, 12091, 12096, 12103, 12108, 12114, 12119, 12128, 12130, 12133, - 12137, 12138, 12139, 12140, 12141, 12142, 12147, 12167, 12168, 12169, - 12170, 12181, 12187, 12195, 12196, 12202, 12207, 12212, 12217, 12222, - 12227, 12232, 12237, 12243, 12249, 12255, 12262, 12284, 12293, 12297, - 12305, 12309, 12317, 12329, 12350, 12354, 12360, 12364, 12377, 12385, - 12395, 12397, 12399, 12401, 12403, 12405, 12410, 12411, 12418, 12427, - 12435, 12444, 12455, 12463, 12464, 12465, 12469, 12471, 12473, 12475, - 12477, 12479, 12481, 12486, 12491, 12497, 12505, 12510, 12517, 12524, - 12528, 12532, 12568, 12569, 12571, 12579, 12594, 12596, 12598, 12600, - 12602, 12604, 12606, 12608, 12610, 12612, 12614, 12616, 12618, 12620, - 12622, 12624, 12627, 12629, 12631, 12634, 12636, 12638, 12640, 12643, - 12648, 12656, 12661, 12669, 12674, 12682, 12687, 12696, 12704, 12712, - 12720, 12738, 12746, 12754, 12762, 12770, 12786, 12794, 12802, 12810, - 12818, 12826, 12834, 12838, 12842, 12846, 12850, 12858, 12866, 12874, - 12882, 12902, 12924, 12935, 12942, 12958, 12963, 12969, 12994, 12996, - 12998, 13000, 13002, 13004, 13006, 13008, 13010, 13012, 13014, 13016, - 13018, 13020, 13022, 13024, 13026, 13028, 13030, 13032, 13034, 13036, - 13040, 13044, 13048, 13052, 13057, 13073, 13074, 13075, 13087, 13102, - 13136, 13138, 13140, 13151, 13175, 13186, 13197, 13204, 13214, 13224, - 13233, 13237, 13243, 13250, 13257, 13267, 13274, 13302, 13337, 13348, - 13349, 13356, 13362, 13366, 13370, 13374, 13378, 13382, 13386, 13390, - 13394, 13398, 13402, 13406, 13410, 13414, 13418, 13422, 13424, 13428, - 13437, 13442, 13449, 13464, 13471, 13475, 13479, 13483, 13487, 13494, - 13502, 13510, 13514, 13518, 13522, 13526, 13530, 13536, 13540, 13549, - 13553, 13557, 13562, 13576, 13578, 13582, 13584, 13586, 13589, 13592, - 13595, 13596, 13599, 13607, 13617, 13618, 13621, 13622, 13623, 13628, - 13632, 13636, 13640, 13651, 13652, 13656, 13657, 13665, 13666, 13670, - 13671, 13676, 13684, 13686, 13700, 13703, 13730, 13731, 13734, 13735, - 13746, 13764, 13771, 13780, 13797, 13842, 13850, 13858, 13866, 13874, - 13895, 13896, 13897, 13900, 13901, 13904, 13907, 13908, 13909, 13912, - 13913, 13916, 13917, 13918, 13919, 13920, 13921, 13922, 13923, 13924, - 13925, 13926, 13927, 13928, 13931, 13933, 13938, 13940, 13945, 13947, - 13949, 13951, 13953, 13955, 13967, 13971, 13978, 13982, 13988, 13992, - 14001, 14012, 14013, 14016, 14020, 14024, 14030, 14031, 14036, 14040, - 14044, 14048, 14055, 14056, 14057, 14058, 14059, 14060, 14061, 14062, - 14072, 14076, 14083, 14090, 14091, 14107, 14111, 14116, 14120, 14135, - 14140, 14144, 14147, 14150, 14151, 14152, 14155, 14162, 14172, 14186, - 14187, 14191, 14202, 14203, 14206, 14207, 14210, 14214, 14221, 14225, - 14229, 14237, 14248, 14249, 14253, 14254, 14258, 14259, 14262, 14263, - 14273, 14274, 14278, 14279, 14282, 14298, 14306, 14314, 14336, 14337, - 14348, 14352, 14379, 14381, 14386, 14389, 14392, 14394, 14396, 14398, - 14408, 14410, 14421, 14425, 14429, 14433, 14437, 14446, 14453, 14485, - 14489, 14495, 14503, 14515, 14519, 14523, 14529, 14530, 14532, 14533, - 14534, 14538, 14568, 14595, 14599, 14605, 14607, 14614, 14615, 14618, - 14619, 14622, 14623, 14626, 14627, 14643, 14644, 14645, 14650, 14651, - 14652, 14657, 14658, 14659, 14660, 14666, 14667, 14668, 14669, 14670, - 14690, 14691, 14692, 14693, 14694, 14695, 14696, 14697, 14698, 14699, - 14700, 14701, 14702, 14703, 14704, 14705, 14706, 14707, 14708, 14709, - 14710, 14711, 14712, 14713, 14714, 14715, 14716, 14717, 14718, 14719, - 14720, 14721, 14722, 14723, 14724, 14725, 14726, 14727, 14728, 14729, - 14730, 14731, 14732, 14733, 14734, 14735, 14736, 14737, 14738, 14739, - 14740, 14741, 14742, 14743, 14744, 14745, 14746, 14747, 14748, 14749, - 14750, 14751, 14752, 14753, 14754, 14755, 14756, 14757, 14758, 14759, - 14760, 14761, 14762, 14763, 14764, 14765, 14766, 14767, 14768, 14769, - 14770, 14771, 14772, 14773, 14774, 14775, 14776, 14777, 14778, 14779, - 14780, 14781, 14782, 14783, 14784, 14785, 14786, 14787, 14788, 14789, - 14790, 14791, 14792, 14793, 14794, 14795, 14796, 14797, 14798, 14799, - 14800, 14801, 14802, 14803, 14804, 14805, 14806, 14807, 14808, 14809, - 14810, 14811, 14812, 14813, 14814, 14815, 14816, 14817, 14818, 14819, - 14820, 14821, 14822, 14823, 14824, 14825, 14826, 14827, 14828, 14829, - 14830, 14831, 14832, 14833, 14834, 14835, 14836, 14837, 14838, 14839, - 14840, 14841, 14842, 14843, 14844, 14845, 14846, 14847, 14848, 14849, - 14850, 14851, 14852, 14853, 14854, 14855, 14856, 14857, 14858, 14859, - 14860, 14861, 14862, 14863, 14864, 14865, 14866, 14867, 14868, 14869, - 14870, 14871, 14872, 14873, 14874, 14875, 14876, 14877, 14878, 14879, - 14880, 14881, 14882, 14883, 14884, 14885, 14886, 14887, 14888, 14889, - 14890, 14891, 14892, 14893, 14894, 14895, 14896, 14897, 14898, 14899, - 14900, 14901, 14902, 14903, 14904, 14905, 14906, 14907, 14908, 14909, - 14910, 14911, 14912, 14913, 14914, 14915, 14916, 14917, 14918, 14919, - 14920, 14921, 14922, 14923, 14924, 14925, 14926, 14927, 14928, 14929, - 14930, 14931, 14932, 14933, 14934, 14935, 14936, 14937, 14938, 14939, - 14940, 14941, 14942, 14943, 14944, 14945, 14946, 14947, 14948, 14949, - 14950, 14951, 14952, 14953, 14954, 14955, 14956, 14957, 14958, 14959, - 14960, 14961, 14962, 14963, 14964, 14965, 14966, 14967, 14968, 14969, - 14970, 14971, 14985, 14986, 14987, 14988, 14989, 14990, 14991, 14992, - 14993, 14994, 14995, 14996, 14997, 14998, 14999, 15000, 15001, 15002, - 15003, 15004, 15005, 15006, 15007, 15008, 15009, 15010, 15011, 15012, - 15013, 15014, 15015, 15016, 15017, 15018, 15019, 15020, 15021, 15022, - 15023, 15024, 15025, 15026, 15027, 15028, 15029, 15030, 15031, 15032, - 15033, 15034, 15048, 15049, 15050, 15051, 15052, 15053, 15054, 15055, - 15056, 15057, 15058, 15059, 15060, 15061, 15062, 15063, 15064, 15065, - 15066, 15067, 15068, 15069, 15070, 15080, 15081, 15082, 15083, 15084, - 15085, 15086, 15087, 15088, 15089, 15090, 15091, 15092, 15093, 15094, - 15095, 15096, 15097, 15098, 15099, 15100, 15101, 15102, 15103, 15104, - 15105, 15106, 15107, 15108, 15109, 15110, 15111, 15112, 15113, 15114, - 15115, 15116, 15117, 15118, 15119, 15120, 15121, 15122, 15123, 15124, - 15125, 15126, 15127, 15128, 15129, 15130, 15131, 15132, 15133, 15134, - 15135, 15136, 15137, 15138, 15139, 15140, 15141, 15142, 15143, 15144, - 15145, 15146, 15147, 15148, 15149, 15150, 15151, 15152, 15153, 15154, - 15155, 15156 + 0, 809, 809, 825, 837, 847, 848, 849, 850, 851, + 852, 853, 854, 855, 856, 857, 858, 859, 860, 861, + 862, 863, 864, 865, 866, 867, 868, 869, 870, 871, + 872, 873, 874, 875, 876, 877, 878, 879, 880, 881, + 882, 883, 884, 885, 886, 887, 888, 889, 890, 891, + 892, 893, 894, 895, 896, 897, 898, 899, 900, 901, + 902, 903, 904, 905, 906, 907, 908, 909, 910, 911, + 912, 913, 914, 915, 916, 917, 918, 919, 920, 921, + 922, 923, 924, 925, 926, 927, 928, 929, 930, 931, + 932, 933, 934, 935, 936, 937, 938, 939, 940, 941, + 942, 943, 944, 945, 946, 947, 948, 949, 950, 951, + 952, 953, 954, 955, 956, 957, 958, 959, 960, 961, + 962, 963, 964, 965, 966, 967, 968, 969, 970, 971, + 973, 982, 997, 1008, 1009, 1010, 1019, 1020, 1024, 1025, + 1029, 1034, 1039, 1044, 1048, 1058, 1068, 1078, 1086, 1090, + 1094, 1099, 1103, 1151, 1153, 1157, 1161, 1165, 1169, 1183, + 1201, 1209, 1220, 1221, 1225, 1233, 1241, 1249, 1270, 1277, + 1284, 1291, 1298, 1305, 1322, 1340, 1351, 1352, 1363, 1373, + 1383, 1398, 1416, 1417, 1421, 1428, 1436, 1437, 1438, 1439, + 1440, 1441, 1455, 1461, 1467, 1476, 1484, 1492, 1496, 1504, + 1512, 1519, 1529, 1530, 1538, 1549, 1557, 1565, 1573, 1581, + 1592, 1600, 1608, 1616, 1624, 1632, 1640, 1647, 1656, 1666, + 1667, 1671, 1672, 1675, 1677, 1679, 1681, 1685, 1686, 1687, + 1688, 1692, 1693, 1694, 1700, 1712, 1716, 1720, 1724, 1728, + 1743, 1750, 1751, 1752, 1756, 1757, 1758, 1762, 1763, 1767, + 1771, 1772, 1779, 1786, 1796, 1803, 1813, 1814, 1819, 1820, + 1825, 1831, 1837, 1843, 1849, 1859, 1869, 1870, 1874, 1875, + 1883, 1898, 1904, 1910, 1916, 1922, 1941, 1950, 1959, 1968, + 1977, 1988, 1999, 2008, 2017, 2026, 2037, 2048, 2057, 2066, + 2075, 2084, 2093, 2102, 2113, 2127, 2128, 2133, 2146, 2162, + 2178, 2187, 2196, 2205, 2214, 2223, 2231, 2239, 2247, 2256, + 2265, 2281, 2290, 2299, 2308, 2325, 2334, 2343, 2352, 2362, + 2375, 2390, 2399, 2407, 2422, 2430, 2440, 2450, 2457, 2465, + 2473, 2480, 2487, 2495, 2503, 2511, 2518, 2525, 2533, 2540, + 2547, 2555, 2563, 2571, 2579, 2587, 2595, 2605, 2612, 2620, + 2628, 2636, 2644, 2652, 2659, 2666, 2673, 2679, 2689, 2690, + 2694, 2695, 2696, 2700, 2708, 2712, 2713, 2717, 2724, 2731, + 2738, 2748, 2751, 2752, 2756, 2757, 2762, 2766, 2770, 2775, + 2782, 2784, 2789, 2793, 2797, 2808, 2816, 2869, 2882, 2896, + 2908, 2915, 2919, 2933, 2946, 2947, 2952, 2961, 2971, 2981, + 3007, 3013, 3046, 3081, 3103, 3104, 3108, 3109, 3118, 3119, + 3120, 3123, 3124, 3129, 3130, 3134, 3138, 3142, 3146, 3150, + 3154, 3158, 3162, 3166, 3170, 3174, 3178, 3182, 3191, 3195, + 3199, 3203, 3207, 3208, 3213, 3217, 3224, 3231, 3232, 3233, + 3234, 3235, 3239, 3243, 3251, 3262, 3281, 3300, 3320, 3340, + 3360, 3393, 3394, 3395, 3396, 3397, 3404, 3411, 3412, 3416, + 3417, 3421, 3422, 3426, 3430, 3437, 3441, 3448, 3449, 3450, + 3454, 3455, 3458, 3479, 3497, 3518, 3519, 3523, 3530, 3531, + 3532, 3563, 3570, 3577, 3588, 3599, 3611, 3620, 3629, 3652, + 3670, 3671, 3690, 3697, 3704, 3711, 3722, 3733, 3734, 3735, + 3739, 3740, 3741, 3742, 3743, 3744, 3745, 3746, 3747, 3756, + 3763, 3767, 3780, 3796, 3811, 3827, 3842, 3861, 3882, 3883, + 3887, 3888, 3892, 3893, 3896, 3902, 3903, 3906, 3910, 3918, + 3923, 3929, 3930, 3934, 3939, 3946, 3947, 3957, 3959, 3961, + 3963, 3966, 3969, 3972, 3976, 3977, 3978, 3979, 3980, 3983, + 3984, 3988, 3989, 3992, 4004, 4005, 4008, 4019, 4030, 4044, + 4045, 4050, 4051, 4052, 4055, 4056, 4057, 4058, 4061, 4062, + 4065, 4066, 4069, 4087, 4099, 4123, 4131, 4152, 4165, 4181, + 4197, 4198, 4199, 4211, 4224, 4240, 4254, 4255, 4267, 4287, + 4297, 4310, 4318, 4329, 4330, 4333, 4334, 4337, 4338, 4341, + 4345, 4349, 4353, 4357, 4361, 4365, 4369, 4373, 4377, 4381, + 4386, 4390, 4394, 4400, 4401, 4405, 4406, 4407, 4412, 4415, + 4416, 4428, 4443, 4458, 4459, 4467, 4468, 4472, 4473, 4477, + 4478, 4482, 4483, 4487, 4497, 4510, 4511, 4521, 4532, 4533, + 4546, 4553, 4570, 4578, 4589, 4592, 4596, 4600, 4604, 4611, + 4623, 4633, 4636, 4640, 4653, 4662, 4671, 4680, 4689, 4698, + 4707, 4716, 4725, 4734, 4743, 4752, 4761, 4770, 4779, 4788, + 4797, 4806, 4815, 4824, 4833, 4842, 4851, 4860, 4869, 4878, + 4887, 4896, 4914, 4925, 4926, 4927, 4928, 4932, 4933, 4937, + 4938, 4948, 4956, 4968, 4969, 4973, 4977, 4985, 4989, 4993, + 5000, 5004, 5009, 5014, 5021, 5028, 5033, 5043, 5055, 5070, + 5071, 5076, 5077, 5081, 5082, 5092, 5101, 5109, 5126, 5146, + 5166, 5187, 5218, 5227, 5248, 5263, 5264, 5268, 5276, 5291, + 5300, 5312, 5313, 5325, 5333, 5350, 5374, 5391, 5405, 5406, + 5410, 5411, 5415, 5416, 5420, 5421, 5425, 5439, 5443, 5444, + 5448, 5449, 5450, 5451, 5452, 5462, 5473, 5474, 5485, 5506, + 5532, 5533, 5534, 5538, 5540, 5562, 5564, 5566, 5568, 5570, + 5575, 5576, 5580, 5581, 5585, 5596, 5597, 5601, 5610, 5614, + 5618, 5623, 5633, 5634, 5638, 5639, 5643, 5644, 5648, 5649, + 5653, 5654, 5655, 5659, 5663, 5664, 5665, 5669, 5670, 5675, + 5676, 5703, 5704, 5705, 5706, 5707, 5708, 5721, 5731, 5745, + 5747, 5752, 5757, 5759, 5764, 5774, 5775, 5776, 5777, 5788, + 5807, 5818, 5830, 5840, 5850, 5861, 5870, 5877, 5884, 5893, + 5902, 5911, 5920, 5929, 5939, 5948, 5960, 5963, 5964, 5967, + 5971, 5978, 5979, 5980, 5981, 5982, 5983, 5986, 5989, 5990, + 5998, 6005, 6006, 6009, 6011, 6022, 6033, 6044, 6055, 6068, + 6069, 6085, 6100, 6101, 6105, 6117, 6127, 6135, 6144, 6153, + 6154, 6157, 6158, 6161, 6162, 6163, 6166, 6180, 6185, 6195, + 6204, 6216, 6217, 6221, 6229, 6241, 6251, 6264, 6274, 6296, + 6306, 6324, 6334, 6344, 6354, 6364, 6374, 6384, 6394, 6404, + 6414, 6424, 6434, 6448, 6449, 6450, 6451, 6452, 6453, 6454, + 6455, 6456, 6457, 6458, 6459, 6460, 6465, 6466, 6467, 6468, + 6469, 6470, 6471, 6476, 6477, 6478, 6482, 6483, 6486, 6487, + 6490, 6492, 6497, 6498, 6509, 6520, 6521, 6522, 6556, 6564, + 6572, 6580, 6588, 6596, 6604, 6612, 6620, 6633, 6641, 6649, + 6657, 6665, 6673, 6681, 6689, 6697, 6705, 6717, 6718, 6719, + 6720, 6721, 6722, 6723, 6724, 6725, 6726, 6727, 6728, 6729, + 6730, 6735, 6736, 6737, 6738, 6739, 6740, 6741, 6742, 6743, + 6744, 6745, 6746, 6750, 6751, 6765, 6775, 6785, 6795, 6805, + 6815, 6825, 6835, 6845, 6857, 6858, 6863, 6864, 6865, 6866, + 6867, 6868, 6873, 6874, 6875, 6876, 6877, 6878, 6879, 6880, + 6883, 6884, 6894, 6900, 6908, 6916, 6924, 6932, 6940, 6948, + 6956, 6964, 6972, 6980, 6988, 6996, 7004, 7012, 7020, 7028, + 7038, 7039, 7042, 7043, 7053, 7069, 7083, 7109, 7111, 7113, + 7115, 7122, 7131, 7132, 7135, 7142, 7149, 7156, 7170, 7178, + 7186, 7194, 7202, 7210, 7218, 7226, 7234, 7242, 7250, 7258, + 7266, 7274, 7282, 7290, 7298, 7306, 7314, 7322, 7334, 7335, + 7339, 7340, 7345, 7346, 7356, 7369, 7379, 7391, 7392, 7395, + 7396, 7406, 7416, 7417, 7421, 7425, 7429, 7440, 7453, 7467, + 7484, 7485, 7486, 7487, 7488, 7489, 7501, 7531, 7564, 7565, + 7569, 7570, 7574, 7575, 7579, 7580, 7583, 7584, 7589, 7601, + 7620, 7625, 7630, 7637, 7638, 7641, 7642, 7645, 7646, 7649, + 7650, 7653, 7654, 7655, 7658, 7659, 7660, 7676, 7688, 7701, + 7713, 7728, 7729, 7732, 7733, 7737, 7738, 7742, 7743, 7748, + 7760, 7767, 7774, 7789, 7790, 7794, 7795, 7810, 7819, 7828, + 7837, 7846, 7858, 7859, 7860, 7861, 7862, 7868, 7872, 7887, + 7888, 7894, 7904, 7908, 7913, 7921, 7962, 7966, 7970, 7974, + 7982, 7983, 7987, 7997, 7998, 8004, 8005, 8012, 8016, 8020, + 8024, 8028, 8032, 8036, 8040, 8044, 8048, 8052, 8056, 8060, + 8064, 8068, 8072, 8077, 8084, 8088, 8092, 8096, 8100, 8106, + 8107, 8114, 8115, 8119, 8120, 8123, 8135, 8139, 8154, 8162, + 8170, 8182, 8183, 8188, 8189, 8206, 8216, 8226, 8236, 8246, + 8256, 8269, 8279, 8292, 8302, 8315, 8323, 8325, 8327, 8332, + 8334, 8339, 8340, 8345, 8363, 8372, 8373, 8377, 8381, 8393, + 8404, 8415, 8428, 8429, 8430, 8434, 8446, 8447, 8457, 8469, + 8473, 8477, 8481, 8488, 8508, 8518, 8528, 8538, 8550, 8551, + 8554, 8555, 8556, 8559, 8560, 8563, 8573, 8582, 8599, 8608, + 8617, 8626, 8635, 8644, 8653, 8662, 8671, 8680, 8689, 8698, + 8707, 8717, 8727, 8736, 8745, 8754, 8763, 8772, 8781, 8791, + 8801, 8811, 8821, 8831, 8841, 8851, 8861, 8871, 8881, 8891, + 8901, 8912, 8923, 8934, 8945, 8956, 8967, 8977, 8987, 8998, + 9009, 9019, 9029, 9037, 9046, 9055, 9064, 9073, 9082, 9091, + 9100, 9109, 9118, 9132, 9133, 9136, 9137, 9147, 9156, 9165, + 9174, 9184, 9193, 9204, 9205, 9215, 9224, 9233, 9242, 9251, + 9260, 9269, 9278, 9287, 9296, 9305, 9314, 9323, 9332, 9341, + 9350, 9359, 9368, 9377, 9386, 9395, 9404, 9413, 9422, 9431, + 9440, 9449, 9467, 9476, 9477, 9480, 9482, 9488, 9489, 9490, + 9491, 9492, 9504, 9519, 9527, 9535, 9543, 9551, 9559, 9567, + 9575, 9583, 9591, 9599, 9607, 9615, 9623, 9631, 9639, 9647, + 9655, 9663, 9671, 9679, 9687, 9695, 9703, 9721, 9740, 9741, + 9745, 9749, 9769, 9776, 9784, 9792, 9809, 9822, 9826, 9833, + 9842, 9851, 9860, 9869, 9879, 9889, 9907, 9915, 9931, 9948, + 9949, 9950, 9955, 9961, 9970, 9971, 9972, 9973, 9974, 9978, + 9979, 9982, 9983, 9984, 9985, 9989, 9990, 9991, 10003, 10013, + 10014, 10017, 10026, 10032, 10051, 10059, 10066, 10073, 10081, 10089, + 10097, 10104, 10111, 10118, 10125, 10132, 10139, 10146, 10155, 10156, + 10157, 10161, 10164, 10167, 10170, 10173, 10180, 10182, 10184, 10189, + 10191, 10195, 10196, 10197, 10209, 10222, 10235, 10253, 10274, 10275, + 10276, 10277, 10287, 10303, 10313, 10314, 10318, 10319, 10323, 10327, + 10331, 10349, 10350, 10351, 10352, 10353, 10354, 10355, 10362, 10363, + 10374, 10381, 10388, 10399, 10416, 10424, 10432, 10440, 10451, 10455, + 10466, 10478, 10495, 10501, 10517, 10530, 10539, 10547, 10555, 10564, + 10575, 10586, 10596, 10597, 10608, 10618, 10629, 10640, 10651, 10662, + 10671, 10683, 10684, 10698, 10721, 10731, 10742, 10755, 10756, 10768, + 10788, 10798, 10809, 10820, 10824, 10831, 10832, 10836, 10843, 10844, + 10848, 10849, 10850, 10854, 10855, 10859, 10860, 10863, 10864, 10867, + 10868, 10872, 10873, 10877, 10884, 10886, 10891, 10892, 10905, 10912, + 10922, 10929, 10939, 10940, 10941, 10942, 10943, 10944, 10945, 10946, + 10947, 10951, 10955, 10962, 10969, 10970, 10974, 10975, 10976, 10986, + 10996, 10997, 11001, 11002, 11003, 11004, 11014, 11021, 11038, 11057, + 11058, 11068, 11074, 11080, 11086, 11102, 11120, 11124, 11132, 11138, + 11145, 11151, 11158, 11167, 11168, 11172, 11174, 11179, 11190, 11200, + 11210, 11216, 11225, 11234, 11240, 11241, 11252, 11266, 11267, 11278, + 11289, 11290, 11293, 11294, 11295, 11296, 11297, 11298, 11299, 11300, + 11303, 11304, 11308, 11309, 11310, 11321, 11339, 11340, 11344, 11349, + 11373, 11384, 11385, 11395, 11406, 11409, 11410, 11411, 11412, 11413, + 11416, 11417, 11418, 11466, 11467, 11471, 11472, 11487, 11488, 11495, + 11503, 11511, 11519, 11527, 11535, 11546, 11547, 11574, 11588, 11603, + 11604, 11623, 11627, 11631, 11648, 11655, 11662, 11672, 11673, 11676, + 11689, 11690, 11691, 11695, 11696, 11700, 11712, 11720, 11725, 11730, + 11735, 11740, 11748, 11756, 11761, 11766, 11773, 11774, 11778, 11779, + 11780, 11787, 11788, 11792, 11793, 11797, 11798, 11802, 11806, 11807, + 11810, 11819, 11832, 11837, 11842, 11846, 11857, 11858, 11862, 11870, + 11886, 11894, 11902, 11910, 11921, 11924, 11929, 11930, 11938, 11958, + 11959, 11961, 11966, 11967, 11971, 11972, 11975, 11976, 12001, 12002, + 12006, 12007, 12011, 12012, 12013, 12014, 12015, 12019, 12032, 12039, + 12046, 12053, 12054, 12058, 12059, 12063, 12064, 12068, 12069, 12073, + 12084, 12085, 12086, 12087, 12091, 12092, 12102, 12108, 12126, 12127, + 12131, 12132, 12138, 12143, 12151, 12158, 12166, 12172, 12179, 12214, + 12239, 12243, 12269, 12273, 12285, 12298, 12312, 12323, 12338, 12344, + 12349, 12355, 12362, 12363, 12371, 12375, 12379, 12385, 12392, 12397, + 12398, 12399, 12400, 12404, 12405, 12417, 12418, 12423, 12430, 12437, + 12444, 12455, 12456, 12469, 12473, 12480, 12493, 12506, 12507, 12522, + 12532, 12544, 12549, 12550, 12553, 12554, 12557, 12558, 12563, 12564, + 12569, 12570, 12578, 12583, 12584, 12588, 12592, 12598, 12622, 12632, + 12645, 12646, 12650, 12664, 12721, 12735, 12737, 12742, 12744, 12746, + 12748, 12753, 12755, 12760, 12768, 12788, 12793, 12800, 12805, 12811, + 12816, 12825, 12827, 12830, 12834, 12835, 12836, 12837, 12838, 12839, + 12844, 12864, 12865, 12866, 12867, 12878, 12884, 12892, 12893, 12899, + 12904, 12909, 12914, 12919, 12924, 12929, 12934, 12940, 12946, 12952, + 12959, 12981, 12990, 12994, 13002, 13006, 13014, 13026, 13047, 13051, + 13057, 13061, 13074, 13082, 13092, 13094, 13096, 13098, 13100, 13102, + 13107, 13108, 13115, 13124, 13132, 13141, 13152, 13160, 13161, 13162, + 13166, 13168, 13170, 13172, 13174, 13176, 13178, 13183, 13188, 13194, + 13202, 13207, 13214, 13221, 13225, 13229, 13265, 13266, 13268, 13276, + 13291, 13293, 13295, 13297, 13299, 13301, 13303, 13305, 13307, 13309, + 13311, 13313, 13315, 13317, 13320, 13322, 13324, 13327, 13329, 13332, + 13334, 13336, 13338, 13341, 13346, 13354, 13359, 13367, 13372, 13380, + 13385, 13394, 13402, 13410, 13418, 13436, 13444, 13452, 13460, 13468, + 13484, 13492, 13500, 13508, 13516, 13524, 13532, 13536, 13540, 13544, + 13548, 13556, 13564, 13572, 13580, 13600, 13622, 13633, 13640, 13656, + 13661, 13667, 13671, 13675, 13679, 13683, 13708, 13710, 13712, 13714, + 13716, 13718, 13720, 13722, 13724, 13726, 13728, 13730, 13732, 13734, + 13736, 13738, 13740, 13742, 13744, 13746, 13748, 13750, 13754, 13758, + 13762, 13766, 13771, 13787, 13788, 13789, 13804, 13819, 13853, 13855, + 13857, 13868, 13892, 13903, 13914, 13921, 13931, 13941, 13950, 13954, + 13960, 13967, 13974, 13984, 13991, 14019, 14054, 14065, 14066, 14073, + 14079, 14083, 14087, 14091, 14095, 14099, 14103, 14107, 14111, 14115, + 14119, 14123, 14127, 14131, 14135, 14139, 14141, 14145, 14149, 14153, + 14162, 14167, 14174, 14189, 14196, 14200, 14204, 14208, 14212, 14219, + 14227, 14235, 14239, 14243, 14247, 14251, 14255, 14261, 14265, 14274, + 14278, 14282, 14287, 14301, 14303, 14307, 14309, 14311, 14314, 14317, + 14320, 14321, 14324, 14332, 14342, 14343, 14346, 14347, 14348, 14353, + 14357, 14361, 14365, 14372, 14373, 14381, 14382, 14386, 14387, 14395, + 14396, 14400, 14401, 14406, 14414, 14416, 14430, 14433, 14460, 14461, + 14464, 14465, 14473, 14480, 14487, 14495, 14504, 14521, 14566, 14574, + 14582, 14590, 14598, 14609, 14610, 14611, 14612, 14613, 14627, 14628, + 14629, 14632, 14633, 14636, 14639, 14640, 14641, 14644, 14645, 14648, + 14649, 14650, 14651, 14652, 14653, 14654, 14655, 14656, 14657, 14658, + 14659, 14660, 14663, 14665, 14670, 14672, 14677, 14679, 14681, 14683, + 14685, 14687, 14699, 14703, 14710, 14714, 14720, 14724, 14733, 14744, + 14745, 14748, 14752, 14756, 14762, 14763, 14768, 14772, 14776, 14780, + 14787, 14788, 14789, 14790, 14791, 14792, 14793, 14794, 14798, 14799, + 14800, 14801, 14811, 14815, 14822, 14829, 14830, 14846, 14850, 14855, + 14859, 14874, 14879, 14883, 14886, 14889, 14890, 14891, 14894, 14901, + 14911, 14925, 14926, 14930, 14941, 14942, 14945, 14946, 14949, 14953, + 14960, 14964, 14968, 14976, 14987, 14988, 14992, 14993, 14997, 14998, + 15001, 15002, 15012, 15013, 15017, 15018, 15021, 15037, 15045, 15053, + 15075, 15076, 15087, 15091, 15118, 15120, 15125, 15128, 15131, 15133, + 15135, 15137, 15147, 15149, 15160, 15164, 15168, 15172, 15176, 15185, + 15192, 15224, 15231, 15263, 15267, 15273, 15280, 15284, 15290, 15298, + 15305, 15309, 15313, 15319, 15320, 15322, 15323, 15324, 15328, 15361, + 15388, 15392, 15398, 15400, 15417, 15418, 15419, 15424, 15425, 15426, + 15431, 15432, 15433, 15434, 15440, 15441, 15442, 15443, 15444, 15464, + 15465, 15466, 15467, 15468, 15469, 15470, 15471, 15472, 15473, 15474, + 15475, 15476, 15477, 15478, 15479, 15480, 15481, 15482, 15483, 15484, + 15485, 15486, 15487, 15488, 15489, 15490, 15491, 15492, 15493, 15494, + 15495, 15496, 15497, 15498, 15499, 15500, 15501, 15502, 15503, 15504, + 15505, 15506, 15507, 15508, 15509, 15510, 15511, 15512, 15513, 15514, + 15515, 15516, 15517, 15518, 15519, 15520, 15521, 15522, 15523, 15524, + 15525, 15526, 15527, 15528, 15529, 15530, 15531, 15532, 15533, 15534, + 15535, 15536, 15537, 15538, 15539, 15540, 15541, 15542, 15543, 15544, + 15545, 15546, 15547, 15548, 15549, 15550, 15551, 15552, 15553, 15554, + 15555, 15556, 15557, 15558, 15559, 15560, 15561, 15562, 15563, 15564, + 15565, 15566, 15567, 15568, 15569, 15570, 15571, 15572, 15573, 15574, + 15575, 15576, 15577, 15578, 15579, 15580, 15581, 15582, 15583, 15584, + 15585, 15586, 15587, 15588, 15589, 15590, 15591, 15592, 15593, 15594, + 15595, 15596, 15597, 15598, 15599, 15600, 15601, 15602, 15603, 15604, + 15605, 15606, 15607, 15608, 15609, 15610, 15611, 15612, 15613, 15614, + 15615, 15616, 15617, 15618, 15619, 15620, 15621, 15622, 15623, 15624, + 15625, 15626, 15627, 15628, 15629, 15630, 15631, 15632, 15633, 15634, + 15635, 15636, 15637, 15638, 15639, 15640, 15641, 15642, 15643, 15644, + 15645, 15646, 15647, 15648, 15649, 15650, 15651, 15652, 15653, 15654, + 15655, 15656, 15657, 15658, 15659, 15660, 15661, 15662, 15663, 15664, + 15665, 15666, 15667, 15668, 15669, 15670, 15671, 15672, 15673, 15674, + 15675, 15676, 15677, 15678, 15679, 15680, 15681, 15682, 15683, 15684, + 15685, 15686, 15687, 15688, 15689, 15690, 15691, 15692, 15693, 15694, + 15695, 15696, 15697, 15698, 15699, 15700, 15701, 15702, 15703, 15704, + 15705, 15706, 15707, 15708, 15709, 15710, 15711, 15712, 15713, 15714, + 15715, 15716, 15717, 15718, 15719, 15720, 15721, 15722, 15723, 15724, + 15725, 15726, 15727, 15728, 15729, 15730, 15731, 15732, 15733, 15734, + 15735, 15736, 15737, 15738, 15739, 15740, 15741, 15742, 15743, 15744, + 15745, 15746, 15747, 15748, 15749, 15750, 15751, 15752, 15753, 15754, + 15755, 15756, 15757, 15758, 15759, 15760, 15761, 15762, 15776, 15777, + 15778, 15779, 15780, 15781, 15782, 15783, 15784, 15785, 15786, 15787, + 15788, 15789, 15790, 15791, 15792, 15793, 15794, 15795, 15796, 15797, + 15798, 15799, 15800, 15801, 15802, 15803, 15804, 15805, 15806, 15807, + 15808, 15809, 15810, 15811, 15812, 15813, 15814, 15815, 15816, 15817, + 15818, 15819, 15820, 15821, 15822, 15823, 15824, 15825, 15826, 15840, + 15841, 15842, 15843, 15844, 15845, 15846, 15847, 15848, 15849, 15850, + 15851, 15852, 15853, 15854, 15855, 15856, 15857, 15858, 15859, 15860, + 15861, 15862, 15872, 15873, 15874, 15875, 15876, 15877, 15878, 15879, + 15880, 15881, 15882, 15883, 15884, 15885, 15886, 15887, 15888, 15889, + 15890, 15891, 15892, 15893, 15894, 15895, 15896, 15897, 15898, 15899, + 15900, 15901, 15902, 15903, 15904, 15905, 15906, 15907, 15908, 15909, + 15910, 15911, 15912, 15913, 15914, 15915, 15916, 15917, 15918, 15919, + 15920, 15921, 15922, 15923, 15924, 15925, 15926, 15927, 15928, 15929, + 15930, 15931, 15932, 15933, 15934, 15935, 15936, 15937, 15938, 15939, + 15940, 15941, 15942, 15943, 15944, 15945, 15946, 15947, 15948 }; #endif @@ -3177,122 +3303,127 @@ static const yytype_uint16 yyrline[] = First, the terminals, then, starting at YYNTOKENS, nonterminals. */ static const char *const yytname[] = { - "$end", "error", "$undefined", "IDENT", "FCONST", "SCONST", "BCONST", - "XCONST", "Op", "ICONST", "PARAM", "TYPECAST", "DOT_DOT", "COLON_EQUALS", - "EQUALS_GREATER", "LESS_EQUALS", "GREATER_EQUALS", "NOT_EQUALS", - "ABORT_P", "ABSOLUTE_P", "ACCESS", "ACTION", "ADD_P", "ADMIN", "AFTER", - "AGGREGATE", "ALL", "ALSO", "ALTER", "ALWAYS", "ANALYSE", "ANALYZE", - "AND", "ANY", "ARRAY", "AS", "ASC", "ASSERTION", "ASSIGNMENT", - "ASYMMETRIC", "AT", "ATTACH", "ATTRIBUTE", "AUTHORIZATION", "BACKWARD", - "BEFORE", "BEGIN_P", "BETWEEN", "BIGINT", "BINARY", "BIT", "BOOLEAN_P", - "BOTH", "BY", "CACHE", "CALLED", "CASCADE", "CASCADED", "CASE", "CAST", - "CATALOG_P", "CHAIN", "CHAR_P", "CHARACTER", "CHARACTERISTICS", "CHECK", - "CHECKPOINT", "CLASS", "CLOSE", "CLUSTER", "COALESCE", "COLLATE", - "COLLATION", "COLUMN", "COLUMNS", "COMMENT", "COMMENTS", "COMMIT", - "COMMITTED", "CONCURRENTLY", "CONFIGURATION", "CONFLICT", "CONNECTION", - "CONSTRAINT", "CONSTRAINTS", "CONTENT_P", "CONTINUE_P", "CONVERSION_P", - "COPY", "COST", "CREATE", "CROSS", "CSV", "CUBE", "CURRENT_P", - "CURRENT_CATALOG", "CURRENT_DATE", "CURRENT_ROLE", "CURRENT_SCHEMA", - "CURRENT_TIME", "CURRENT_TIMESTAMP", "CURRENT_USER", "CURSOR", "CYCLE", - "DATA_P", "DATABASE", "DAY_P", "DEALLOCATE", "DEC", "DECIMAL_P", - "DECLARE", "DEFAULT", "DEFAULTS", "DEFERRABLE", "DEFERRED", "DEFINER", - "DELETE_P", "DELIMITER", "DELIMITERS", "DEPENDS", "DESC", "DETACH", - "DICTIONARY", "DISABLE_P", "DISCARD", "DISTINCT", "DO", "DOCUMENT_P", - "DOMAIN_P", "DOUBLE_P", "DROP", "EACH", "ELSE", "ENABLE_P", "ENCODING", - "ENCRYPTED", "END_P", "ENUM_P", "ESCAPE", "EVENT", "EXCEPT", "EXCLUDE", - "EXCLUDING", "EXCLUSIVE", "EXECUTE", "EXISTS", "EXPLAIN", "EXTENSION", + "$end", "error", "$undefined", "IDENT", "UIDENT", "FCONST", "SCONST", + "USCONST", "BCONST", "XCONST", "Op", "ICONST", "PARAM", "TYPECAST", + "DOT_DOT", "COLON_EQUALS", "EQUALS_GREATER", "LESS_EQUALS", + "GREATER_EQUALS", "NOT_EQUALS", "SQL_COMMENT", "C_COMMENT", "ABORT_P", + "ABSOLUTE_P", "ACCESS", "ACTION", "ADD_P", "ADMIN", "AFTER", "AGGREGATE", + "ALL", "ALSO", "ALTER", "ALWAYS", "ANALYSE", "ANALYZE", "AND", "ANY", + "ARRAY", "AS", "ASC", "ASSERTION", "ASSIGNMENT", "ASYMMETRIC", "AT", + "ATTACH", "ATTRIBUTE", "AUTHORIZATION", "BACKWARD", "BEFORE", "BEGIN_P", + "BETWEEN", "BIGINT", "BINARY", "BIT", "BOOLEAN_P", "BOTH", "BY", "CACHE", + "CALL", "CALLED", "CASCADE", "CASCADED", "CASE", "CAST", "CATALOG_P", + "CHAIN", "CHAR_P", "CHARACTER", "CHARACTERISTICS", "CHECK", "CHECKPOINT", + "CLASS", "CLOSE", "CLUSTER", "COALESCE", "COLLATE", "COLLATION", + "COLUMN", "COLUMNS", "COMMENT", "COMMENTS", "COMMIT", "COMMITTED", + "CONCURRENTLY", "CONFIGURATION", "CONFLICT", "CONNECTION", "CONSTRAINT", + "CONSTRAINTS", "CONTENT_P", "CONTINUE_P", "CONVERSION_P", "COPY", "COST", + "CREATE", "CROSS", "CSV", "CUBE", "CURRENT_P", "CURRENT_CATALOG", + "CURRENT_DATE", "CURRENT_ROLE", "CURRENT_SCHEMA", "CURRENT_TIME", + "CURRENT_TIMESTAMP", "CURRENT_USER", "CURSOR", "CYCLE", "DATA_P", + "DATABASE", "DAY_P", "DEALLOCATE", "DEC", "DECIMAL_P", "DECLARE", + "DEFAULT", "DEFAULTS", "DEFERRABLE", "DEFERRED", "DEFINER", "DELETE_P", + "DELIMITER", "DELIMITERS", "DEPENDS", "DESC", "DETACH", "DICTIONARY", + "DISABLE_P", "DISCARD", "DISTINCT", "DO", "DOCUMENT_P", "DOMAIN_P", + "DOUBLE_P", "DROP", "EACH", "ELSE", "ENABLE_P", "ENCODING", "ENCRYPTED", + "END_P", "ENUM_P", "ESCAPE", "EVENT", "EXCEPT", "EXCLUDE", "EXCLUDING", + "EXCLUSIVE", "EXECUTE", "EXISTS", "EXPLAIN", "EXPRESSION", "EXTENSION", "EXTERNAL", "EXTRACT", "FALSE_P", "FAMILY", "FETCH", "FILTER", "FIRST_P", "FLOAT_P", "FOLLOWING", "FOR", "FORCE", "FOREIGN", "FORWARD", "FREEZE", "FROM", "FULL", "FUNCTION", "FUNCTIONS", "GENERATED", "GLOBAL", "GRANT", - "GRANTED", "GREATEST", "GROUP_P", "GROUPING", "HANDLER", "HAVING", - "HEADER_P", "HOLD", "HOUR_P", "IDENTITY_P", "IF_P", "ILIKE", "IMMEDIATE", - "IMMUTABLE", "IMPLICIT_P", "IMPORT_P", "IN_P", "INCLUDING", "INCREMENT", - "INDEX", "INDEXES", "INHERIT", "INHERITS", "INITIALLY", "INLINE_P", - "INNER_P", "INOUT", "INPUT_P", "INSENSITIVE", "INSERT", "INSTEAD", - "INT_P", "INTEGER", "INTERSECT", "INTERVAL", "INTO", "INVOKER", "IS", - "ISNULL", "ISOLATION", "JOIN", "KEY", "LABEL", "LANGUAGE", "LARGE_P", - "LAST_P", "LATERAL_P", "LEADING", "LEAKPROOF", "LEAST", "LEFT", "LEVEL", - "LIKE", "LIMIT", "LISTEN", "LOAD", "LOCAL", "LOCALTIME", - "LOCALTIMESTAMP", "LOCATION", "LOCK_P", "LOCKED", "LOGGED", "MAPPING", - "MATCH", "MATERIALIZED", "MAXVALUE", "METHOD", "MINUTE_P", "MINVALUE", - "MODE", "MONTH_P", "MOVE", "NAME_P", "NAMES", "NATIONAL", "NATURAL", - "NCHAR", "NEW", "NEXT", "NO", "NONE", "NOT", "NOTHING", "NOTIFY", - "NOTNULL", "NOWAIT", "NULL_P", "NULLIF", "NULLS_P", "NUMERIC", - "OBJECT_P", "OF", "OFF", "OFFSET", "OIDS", "OLD", "ON", "ONLY", - "OPERATOR", "OPTION", "OPTIONS", "OR", "ORDER", "ORDINALITY", "OUT_P", - "OUTER_P", "OVER", "OVERLAPS", "OVERLAY", "OVERRIDING", "OWNED", "OWNER", + "GRANTED", "GREATEST", "GROUP_P", "GROUPING", "GROUPS", "HANDLER", + "HAVING", "HEADER_P", "HOLD", "HOUR_P", "IDENTITY_P", "IF_P", "ILIKE", + "IMMEDIATE", "IMMUTABLE", "IMPLICIT_P", "IMPORT_P", "IN_P", "INCLUDE", + "INCLUDING", "INCREMENT", "INDEX", "INDEXES", "INHERIT", "INHERITS", + "INITIALLY", "INLINE_P", "INNER_P", "INOUT", "INPUT_P", "INSENSITIVE", + "INSERT", "INSTEAD", "INT_P", "INTEGER", "INTERSECT", "INTERVAL", "INTO", + "INVOKER", "IS", "ISNULL", "ISOLATION", "JOIN", "KEY", "LABEL", + "LANGUAGE", "LARGE_P", "LAST_P", "LATERAL_P", "LEADING", "LEAKPROOF", + "LEAST", "LEFT", "LEVEL", "LIKE", "LIMIT", "LISTEN", "LOAD", "LOCAL", + "LOCALTIME", "LOCALTIMESTAMP", "LOCATION", "LOCK_P", "LOCKED", "LOGGED", + "MAPPING", "MATCH", "MATERIALIZED", "MAXVALUE", "METHOD", "MINUTE_P", + "MINVALUE", "MODE", "MONTH_P", "MOVE", "NAME_P", "NAMES", "NATIONAL", + "NATURAL", "NCHAR", "NEW", "NEXT", "NFC", "NFD", "NFKC", "NFKD", "NO", + "NONE", "NORMALIZE", "NORMALIZED", "NOT", "NOTHING", "NOTIFY", "NOTNULL", + "NOWAIT", "NULL_P", "NULLIF", "NULLS_P", "NUMERIC", "OBJECT_P", "OF", + "OFF", "OFFSET", "OIDS", "OLD", "ON", "ONLY", "OPERATOR", "OPTION", + "OPTIONS", "OR", "ORDER", "ORDINALITY", "OTHERS", "OUT_P", "OUTER_P", + "OVER", "OVERLAPS", "OVERLAY", "OVERRIDING", "OWNED", "OWNER", "PARALLEL", "PARSER", "PARTIAL", "PARTITION", "PASSING", "PASSWORD", "PLACING", "PLANS", "POLICY", "POSITION", "PRECEDING", "PRECISION", "PRESERVE", "PREPARE", "PREPARED", "PRIMARY", "PRIOR", "PRIVILEGES", - "PROCEDURAL", "PROCEDURE", "PROGRAM", "PUBLICATION", "QUOTE", "RANGE", - "READ", "REAL", "REASSIGN", "RECHECK", "RECURSIVE", "REF", "REFERENCES", - "REFERENCING", "REFRESH", "REINDEX", "RELATIVE_P", "RELEASE", "RENAME", - "REPEATABLE", "REPLACE", "REPLICA", "RESET", "RESTART", "RESTRICT", - "RETURNING", "RETURNS", "REVOKE", "RIGHT", "ROLE", "ROLLBACK", "ROLLUP", - "ROW", "ROWS", "RULE", "SAVEPOINT", "SCHEMA", "SCHEMAS", "SCROLL", - "SEARCH", "SECOND_P", "SECURITY", "SELECT", "SEQUENCE", "SEQUENCES", - "SERIALIZABLE", "SERVER", "SESSION", "SESSION_USER", "SET", "SETS", - "SETOF", "SHARE", "SHOW", "SIMILAR", "SIMPLE", "SKIP", "SMALLINT", - "SNAPSHOT", "SOME", "SQL_P", "STABLE", "STANDALONE_P", "START", - "STATEMENT", "STATISTICS", "STDIN", "STDOUT", "STORAGE", "STRICT_P", - "STRIP_P", "SUBSCRIPTION", "SUBSTRING", "SYMMETRIC", "SYSID", "SYSTEM_P", - "TABLE", "TABLES", "TABLESAMPLE", "TABLESPACE", "TEMP", "TEMPLATE", - "TEMPORARY", "TEXT_P", "THEN", "TIME", "TIMESTAMP", "TO", "TRAILING", + "PROCEDURAL", "PROCEDURE", "PROCEDURES", "PROGRAM", "PUBLICATION", + "QUOTE", "RANGE", "READ", "REAL", "REASSIGN", "RECHECK", "RECURSIVE", + "REF", "REFERENCES", "REFERENCING", "REFRESH", "REINDEX", "RELATIVE_P", + "RELEASE", "RENAME", "REPEATABLE", "REPLACE", "REPLICA", "RESET", + "RESTART", "RESTRICT", "RETURNING", "RETURNS", "REVOKE", "RIGHT", "ROLE", + "ROLLBACK", "ROLLUP", "ROUTINE", "ROUTINES", "ROW", "ROWS", "RULE", + "SAVEPOINT", "SCHEMA", "SCHEMAS", "SCROLL", "SEARCH", "SECOND_P", + "SECURITY", "SELECT", "SEQUENCE", "SEQUENCES", "SERIALIZABLE", "SERVER", + "SESSION", "SESSION_USER", "SET", "SETS", "SETOF", "SHARE", "SHOW", + "SIMILAR", "SIMPLE", "SKIP", "SMALLINT", "SNAPSHOT", "SOME", "SQL_P", + "STABLE", "STANDALONE_P", "START", "STATEMENT", "STATISTICS", "STDIN", + "STDOUT", "STORAGE", "STORED", "STRICT_P", "STRIP_P", "SUBSCRIPTION", + "SUBSTRING", "SUPPORT", "SYMMETRIC", "SYSID", "SYSTEM_P", "TABLE", + "TABLES", "TABLESAMPLE", "TABLESPACE", "TEMP", "TEMPLATE", "TEMPORARY", + "TEXT_P", "THEN", "TIES", "TIME", "TIMESTAMP", "TO", "TRAILING", "TRANSACTION", "TRANSFORM", "TREAT", "TRIGGER", "TRIM", "TRUE_P", - "TRUNCATE", "TRUSTED", "TYPE_P", "TYPES_P", "UNBOUNDED", "UNCOMMITTED", - "UNENCRYPTED", "UNION", "UNIQUE", "UNKNOWN", "UNLISTEN", "UNLOGGED", - "UNTIL", "UPDATE", "USER", "USING", "VACUUM", "VALID", "VALIDATE", - "VALIDATOR", "VALUE_P", "VALUES", "VARCHAR", "VARIADIC", "VARYING", - "VERBOSE", "VERSION_P", "VIEW", "VIEWS", "VOLATILE", "WHEN", "WHERE", - "WHITESPACE_P", "WINDOW", "WITH", "WITHIN", "WITHOUT", "WORK", "WRAPPER", - "WRITE", "XML_P", "XMLATTRIBUTES", "XMLCONCAT", "XMLELEMENT", + "TRUNCATE", "TRUSTED", "TYPE_P", "TYPES_P", "UESCAPE", "UNBOUNDED", + "UNCOMMITTED", "UNENCRYPTED", "UNION", "UNIQUE", "UNKNOWN", "UNLISTEN", + "UNLOGGED", "UNTIL", "UPDATE", "USER", "USING", "VACUUM", "VALID", + "VALIDATE", "VALIDATOR", "VALUE_P", "VALUES", "VARCHAR", "VARIADIC", + "VARYING", "VERBOSE", "VERSION_P", "VIEW", "VIEWS", "VOLATILE", "WHEN", + "WHERE", "WHITESPACE_P", "WINDOW", "WITH", "WITHIN", "WITHOUT", "WORK", + "WRAPPER", "WRITE", "XML_P", "XMLATTRIBUTES", "XMLCONCAT", "XMLELEMENT", "XMLEXISTS", "XMLFOREST", "XMLNAMESPACES", "XMLPARSE", "XMLPI", "XMLROOT", "XMLSERIALIZE", "XMLTABLE", "YEAR_P", "YES_P", "ZONE", - "NOT_LA", "NULLS_LA", "WITH_LA", "'<'", "'>'", "'='", "POSTFIXOP", "'+'", - "'-'", "'*'", "'/'", "'%'", "'^'", "'?'", "UMINUS", "'['", "']'", "'('", + "NOT_LA", "NULLS_LA", "WITH_LA", "'<'", "'>'", "'='", "'?'", "POSTFIXOP", + "'+'", "'-'", "'*'", "'/'", "'%'", "'^'", "UMINUS", "'['", "']'", "'('", "')'", "'.'", "';'", "','", "':'", "$accept", "stmtblock", "stmtmulti", - "stmt", "CreateRoleStmt", "opt_with", "OptRoleList", "AlterOptRoleList", - "AlterOptRoleElem", "CreateOptRoleElem", "CreateUserStmt", - "AlterRoleStmt", "opt_in_database", "AlterRoleSetStmt", "DropRoleStmt", - "CreateGroupStmt", "AlterGroupStmt", "add_drop", "CreateSchemaStmt", - "OptSchemaName", "OptSchemaEltList", "schema_stmt", "VariableSetStmt", - "set_rest", "generic_set", "set_rest_more", "var_name", "var_list", - "var_value", "iso_level", "opt_boolean_or_string", "zone_value", - "opt_encoding", "NonReservedWord_or_Sconst", "VariableResetStmt", - "reset_rest", "generic_reset", "SetResetClause", - "FunctionSetResetClause", "VariableShowStmt", "ConstraintsSetStmt", - "constraints_set_list", "constraints_set_mode", "CheckPointStmt", - "DiscardStmt", "AlterTableStmt", "alter_table_cmds", "partition_cmd", - "alter_table_cmd", "alter_column_default", "opt_drop_behavior", - "opt_collate_clause", "alter_using", "replica_identity", "reloptions", - "opt_reloptions", "reloption_list", "reloption_elem", - "alter_identity_column_option_list", "alter_identity_column_option", - "ForValues", "partbound_datum", "partbound_datum_list", - "range_datum_list", "PartitionRangeDatum", "AlterCompositeTypeStmt", + "stmt", "CallStmt", "CreateRoleStmt", "opt_with", "OptRoleList", + "AlterOptRoleList", "AlterOptRoleElem", "CreateOptRoleElem", + "CreateUserStmt", "AlterRoleStmt", "opt_in_database", "AlterRoleSetStmt", + "DropRoleStmt", "CreateGroupStmt", "AlterGroupStmt", "add_drop", + "CreateSchemaStmt", "OptSchemaName", "OptSchemaEltList", "schema_stmt", + "VariableSetStmt", "set_rest", "generic_set", "set_rest_more", + "var_name", "var_list", "var_value", "iso_level", + "opt_boolean_or_string", "zone_value", "opt_encoding", + "NonReservedWord_or_Sconst", "VariableResetStmt", "reset_rest", + "generic_reset", "SetResetClause", "FunctionSetResetClause", + "VariableShowStmt", "ConstraintsSetStmt", "constraints_set_list", + "constraints_set_mode", "CheckPointStmt", "DiscardStmt", + "AlterTableStmt", "alter_table_cmds", "partition_cmd", + "index_partition_cmd", "alter_table_cmd", "alter_column_default", + "opt_drop_behavior", "opt_collate_clause", "alter_using", + "replica_identity", "reloptions", "opt_reloptions", "reloption_list", + "reloption_elem", "alter_identity_column_option_list", + "alter_identity_column_option", "PartitionBoundSpec", + "hash_partbound_elem", "hash_partbound", "AlterCompositeTypeStmt", "alter_type_cmds", "alter_type_cmd", "ClosePortalStmt", "CopyStmt", "copy_from", "opt_program", "copy_file_name", "copy_options", - "copy_opt_list", "copy_opt_item", "opt_binary", "opt_oids", - "copy_delimiter", "opt_using", "copy_generic_opt_list", - "copy_generic_opt_elem", "copy_generic_opt_arg", - "copy_generic_opt_arg_list", "copy_generic_opt_arg_list_item", - "CreateStmt", "OptTemp", "OptTableElementList", - "OptTypedTableElementList", "TableElementList", "TypedTableElementList", - "TableElement", "TypedTableElement", "columnDef", "columnOptions", - "ColQualList", "ColConstraint", "ColConstraintElem", "generated_when", - "ConstraintAttr", "TableLikeClause", "TableLikeOptionList", - "TableLikeOption", "TableConstraint", "ConstraintElem", "opt_no_inherit", - "opt_column_list", "columnList", "columnElem", "key_match", + "copy_opt_list", "copy_opt_item", "opt_binary", "copy_delimiter", + "opt_using", "copy_generic_opt_list", "copy_generic_opt_elem", + "copy_generic_opt_arg", "copy_generic_opt_arg_list", + "copy_generic_opt_arg_list_item", "CreateStmt", "OptTemp", + "OptTableElementList", "OptTypedTableElementList", "TableElementList", + "TypedTableElementList", "TableElement", "TypedTableElement", + "columnDef", "columnOptions", "ColQualList", "ColConstraint", + "ColConstraintElem", "generated_when", "ConstraintAttr", + "TableLikeClause", "TableLikeOptionList", "TableLikeOption", + "TableConstraint", "ConstraintElem", "opt_no_inherit", "opt_column_list", + "columnList", "columnElem", "opt_c_include", "key_match", "ExclusionConstraintList", "ExclusionConstraintElem", "ExclusionWhereClause", "key_actions", "key_update", "key_delete", "key_action", "OptInherit", "OptPartitionSpec", "PartitionSpec", - "part_strategy", "part_params", "part_elem", "OptWith", "OnCommitOption", - "OptTableSpace", "OptConsTableSpace", "ExistingIndex", "CreateStatsStmt", - "CreateAsStmt", "create_as_target", "opt_with_data", "CreateMatViewStmt", - "create_mv_target", "OptNoLog", "RefreshMatViewStmt", "CreateSeqStmt", - "AlterSeqStmt", "OptSeqOptList", "OptParenthesizedSeqOptList", - "SeqOptList", "SeqOptElem", "opt_by", "NumericOnly", "NumericOnly_list", - "CreatePLangStmt", "opt_trusted", "handler_name", "opt_inline_handler", - "validator_clause", "opt_validator", "DropPLangStmt", "opt_procedural", + "part_params", "part_elem", "table_access_method_clause", "OptWith", + "OnCommitOption", "OptTableSpace", "OptConsTableSpace", "ExistingIndex", + "CreateStatsStmt", "AlterStatsStmt", "CreateAsStmt", "create_as_target", + "opt_with_data", "CreateMatViewStmt", "create_mv_target", "OptNoLog", + "RefreshMatViewStmt", "CreateSeqStmt", "AlterSeqStmt", "OptSeqOptList", + "OptParenthesizedSeqOptList", "SeqOptList", "SeqOptElem", "opt_by", + "NumericOnly", "NumericOnly_list", "CreatePLangStmt", "opt_trusted", + "handler_name", "opt_inline_handler", "validator_clause", + "opt_validator", "DropPLangStmt", "opt_procedural", "CreateTableSpaceStmt", "OptTableSpaceOwner", "DropTableSpaceStmt", "CreateExtensionStmt", "create_extension_opt_list", "create_extension_opt_item", "AlterExtensionStmt", @@ -3312,38 +3443,40 @@ static const char *const yytname[] = "RowSecurityOptionalWithCheck", "RowSecurityDefaultToRole", "RowSecurityOptionalToRole", "RowSecurityDefaultPermissive", "RowSecurityDefaultForCmd", "row_security_cmd", "CreateAmStmt", - "CreateTrigStmt", "TriggerActionTime", "TriggerEvents", + "am_type", "CreateTrigStmt", "TriggerActionTime", "TriggerEvents", "TriggerOneEvent", "TriggerReferencing", "TriggerTransitions", "TriggerTransition", "TransitionOldOrNew", "TransitionRowOrTable", "TransitionRelName", "TriggerForSpec", "TriggerForOptEach", - "TriggerForType", "TriggerWhen", "TriggerFuncArgs", "TriggerFuncArg", - "OptConstrFromTable", "ConstraintAttributeSpec", - "ConstraintAttributeElem", "CreateEventTrigStmt", - "event_trigger_when_list", "event_trigger_when_item", - "event_trigger_value_list", "AlterEventTrigStmt", "enable_trigger", - "CreateAssertStmt", "DropAssertStmt", "DefineStmt", "definition", - "def_list", "def_elem", "def_arg", "old_aggr_definition", - "old_aggr_list", "old_aggr_elem", "opt_enum_val_list", "enum_val_list", - "AlterEnumStmt", "opt_if_not_exists", "CreateOpClassStmt", - "opclass_item_list", "opclass_item", "opt_default", "opt_opfamily", - "opclass_purpose", "opt_recheck", "CreateOpFamilyStmt", - "AlterOpFamilyStmt", "opclass_drop_list", "opclass_drop", - "DropOpClassStmt", "DropOpFamilyStmt", "DropOwnedStmt", - "ReassignOwnedStmt", "DropStmt", "drop_type_any_name", "drop_type_name", - "drop_type_name_on_any_name", "any_name_list", "any_name", "attrs", - "type_name_list", "TruncateStmt", "opt_restart_seqs", "CommentStmt", - "comment_type_any_name", "comment_type_name", "comment_text", - "SecLabelStmt", "opt_provider", "security_label_type_any_name", - "security_label_type_name", "security_label", "FetchStmt", "fetch_args", - "from_in", "opt_from_in", "GrantStmt", "RevokeStmt", "privileges", - "privilege_list", "privilege", "privilege_target", "grantee_list", - "grantee", "opt_grant_grant_option", "GrantRoleStmt", "RevokeRoleStmt", - "opt_grant_admin_option", "opt_granted_by", "AlterDefaultPrivilegesStmt", - "DefACLOptionList", "DefACLOption", "DefACLAction", - "defacl_privilege_target", "IndexStmt", "opt_unique", "opt_concurrently", - "opt_index_name", "access_method_clause", "index_params", "index_elem", - "opt_collate", "opt_class", "opt_asc_desc", "opt_nulls_order", - "CreateFunctionStmt", "opt_or_replace", "func_args", "func_args_list", + "TriggerForType", "TriggerWhen", "FUNCTION_or_PROCEDURE", + "TriggerFuncArgs", "TriggerFuncArg", "OptConstrFromTable", + "ConstraintAttributeSpec", "ConstraintAttributeElem", + "CreateEventTrigStmt", "event_trigger_when_list", + "event_trigger_when_item", "event_trigger_value_list", + "AlterEventTrigStmt", "enable_trigger", "CreateAssertionStmt", + "DefineStmt", "definition", "def_list", "def_elem", "def_arg", + "old_aggr_definition", "old_aggr_list", "old_aggr_elem", + "opt_enum_val_list", "enum_val_list", "AlterEnumStmt", + "opt_if_not_exists", "CreateOpClassStmt", "opclass_item_list", + "opclass_item", "opt_default", "opt_opfamily", "opclass_purpose", + "opt_recheck", "CreateOpFamilyStmt", "AlterOpFamilyStmt", + "opclass_drop_list", "opclass_drop", "DropOpClassStmt", + "DropOpFamilyStmt", "DropOwnedStmt", "ReassignOwnedStmt", "DropStmt", + "drop_type_any_name", "drop_type_name", "drop_type_name_on_any_name", + "any_name_list", "any_name", "attrs", "type_name_list", "TruncateStmt", + "opt_restart_seqs", "CommentStmt", "comment_type_any_name", + "comment_type_name", "comment_text", "SecLabelStmt", "opt_provider", + "security_label_type_any_name", "security_label_type_name", + "security_label", "FetchStmt", "fetch_args", "from_in", "opt_from_in", + "GrantStmt", "RevokeStmt", "privileges", "privilege_list", "privilege", + "privilege_target", "grantee_list", "grantee", "opt_grant_grant_option", + "GrantRoleStmt", "RevokeRoleStmt", "opt_grant_admin_option", + "opt_granted_by", "AlterDefaultPrivilegesStmt", "DefACLOptionList", + "DefACLOption", "DefACLAction", "defacl_privilege_target", "IndexStmt", + "opt_unique", "opt_concurrently", "opt_index_name", + "access_method_clause", "index_params", "index_elem_options", + "index_elem", "opt_include", "index_including_params", "opt_collate", + "opt_class", "opt_asc_desc", "opt_nulls_order", "CreateFunctionStmt", + "opt_or_replace", "func_args", "func_args_list", "function_with_argtypes_list", "function_with_argtypes", "func_args_with_defaults", "func_args_with_defaults_list", "func_arg", "arg_class", "param_name", "func_return", "func_type", @@ -3360,51 +3493,55 @@ static const char *const yytname[] = "ReindexStmt", "reindex_target_type", "reindex_target_multitable", "reindex_option_list", "reindex_option_elem", "AlterTblSpcStmt", "RenameStmt", "opt_column", "opt_set_data", "AlterObjectDependsStmt", - "AlterObjectSchemaStmt", "AlterOperatorStmt", "operator_def_list", - "operator_def_elem", "operator_def_arg", "AlterOwnerStmt", - "CreatePublicationStmt", "opt_publication_for_tables", - "publication_for_tables", "AlterPublicationStmt", - "CreateSubscriptionStmt", "publication_name_list", - "publication_name_item", "AlterSubscriptionStmt", "DropSubscriptionStmt", - "RuleStmt", "RuleActionList", "RuleActionMulti", "RuleActionStmt", + "opt_no", "AlterObjectSchemaStmt", "AlterOperatorStmt", + "operator_def_list", "operator_def_elem", "operator_def_arg", + "AlterTypeStmt", "AlterOwnerStmt", "CreatePublicationStmt", + "opt_publication_for_tables", "publication_for_tables", + "AlterPublicationStmt", "CreateSubscriptionStmt", + "publication_name_list", "publication_name_item", + "AlterSubscriptionStmt", "DropSubscriptionStmt", "RuleStmt", + "RuleActionList", "RuleActionMulti", "RuleActionStmt", "RuleActionStmtOrEmpty", "event", "opt_instead", "NotifyStmt", "notify_payload", "ListenStmt", "UnlistenStmt", "TransactionStmt", "opt_transaction", "transaction_mode_item", "transaction_mode_list", - "transaction_mode_list_or_empty", "ViewStmt", "opt_check_option", - "LoadStmt", "CreatedbStmt", "createdb_opt_list", "createdb_opt_items", - "createdb_opt_item", "createdb_opt_name", "opt_equal", - "AlterDatabaseStmt", "AlterDatabaseSetStmt", "DropdbStmt", - "AlterCollationStmt", "AlterSystemStmt", "CreateDomainStmt", - "AlterDomainStmt", "opt_as", "AlterTSDictionaryStmt", - "AlterTSConfigurationStmt", "any_with", "CreateConversionStmt", - "ClusterStmt", "cluster_index_specification", "VacuumStmt", - "vacuum_option_list", "vacuum_option_elem", "AnalyzeStmt", - "analyze_keyword", "opt_verbose", "opt_full", "opt_freeze", - "opt_name_list", "ExplainStmt", "ExplainableStmt", "explain_option_list", - "explain_option_elem", "explain_option_name", "explain_option_arg", - "PrepareStmt", "prep_type_clause", "PreparableStmt", "ExecuteStmt", - "execute_param_clause", "DeallocateStmt", "InsertStmt", "insert_target", - "insert_rest", "override_kind", "insert_column_list", - "insert_column_item", "opt_on_conflict", "opt_conf_expr", - "returning_clause", "DeleteStmt", "using_clause", "LockStmt", "opt_lock", - "lock_type", "opt_nowait", "opt_nowait_or_skip", "UpdateStmt", - "set_clause_list", "set_clause", "set_target", "set_target_list", - "DeclareCursorStmt", "cursor_name", "cursor_options", "opt_hold", - "SelectStmt", "select_with_parens", "select_no_parens", "select_clause", - "simple_select", "with_clause", "cte_list", "common_table_expr", - "opt_with_clause", "into_clause", "OptTempTableName", "opt_table", - "all_or_distinct", "distinct_clause", "opt_all_clause", - "opt_sort_clause", "sort_clause", "sortby_list", "sortby", - "select_limit", "opt_select_limit", "limit_clause", "offset_clause", - "select_limit_value", "select_offset_value", "select_fetch_first_value", - "I_or_F_const", "row_or_rows", "first_or_next", "group_clause", - "group_by_list", "group_by_item", "empty_grouping_set", "rollup_clause", - "cube_clause", "grouping_sets_clause", "having_clause", - "for_locking_clause", "opt_for_locking_clause", "for_locking_items", - "for_locking_item", "for_locking_strength", "locked_rels_list", - "values_clause", "from_clause", "from_list", "table_ref", "joined_table", - "alias_clause", "opt_alias_clause", "func_alias_clause", "join_type", - "join_outer", "join_qual", "relation_expr", "relation_expr_list", + "transaction_mode_list_or_empty", "opt_transaction_chain", "ViewStmt", + "opt_check_option", "LoadStmt", "CreatedbStmt", "createdb_opt_list", + "createdb_opt_items", "createdb_opt_item", "createdb_opt_name", + "opt_equal", "AlterDatabaseStmt", "AlterDatabaseSetStmt", "DropdbStmt", + "drop_option_list", "drop_option", "AlterCollationStmt", + "AlterSystemStmt", "CreateDomainStmt", "AlterDomainStmt", "opt_as", + "AlterTSDictionaryStmt", "AlterTSConfigurationStmt", "any_with", + "CreateConversionStmt", "ClusterStmt", "cluster_index_specification", + "VacuumStmt", "AnalyzeStmt", "vac_analyze_option_list", + "analyze_keyword", "vac_analyze_option_elem", "vac_analyze_option_name", + "vac_analyze_option_arg", "opt_analyze", "opt_verbose", "opt_full", + "opt_freeze", "opt_name_list", "vacuum_relation", "vacuum_relation_list", + "opt_vacuum_relation_list", "ExplainStmt", "ExplainableStmt", + "explain_option_list", "explain_option_elem", "explain_option_name", + "explain_option_arg", "PrepareStmt", "prep_type_clause", + "PreparableStmt", "ExecuteStmt", "execute_param_clause", + "DeallocateStmt", "InsertStmt", "insert_target", "insert_rest", + "override_kind", "insert_column_list", "insert_column_item", + "opt_on_conflict", "opt_conf_expr", "returning_clause", "DeleteStmt", + "using_clause", "LockStmt", "opt_lock", "lock_type", "opt_nowait", + "opt_nowait_or_skip", "UpdateStmt", "set_clause_list", "set_clause", + "set_target", "set_target_list", "DeclareCursorStmt", "cursor_name", + "cursor_options", "opt_hold", "SelectStmt", "select_with_parens", + "select_no_parens", "select_clause", "simple_select", "with_clause", + "cte_list", "common_table_expr", "opt_materialized", "opt_with_clause", + "into_clause", "OptTempTableName", "opt_table", "all_or_distinct", + "distinct_clause", "opt_all_clause", "opt_sort_clause", "sort_clause", + "sortby_list", "sortby", "select_limit", "opt_select_limit", + "limit_clause", "offset_clause", "select_limit_value", + "select_offset_value", "select_fetch_first_value", "I_or_F_const", + "row_or_rows", "first_or_next", "group_clause", "group_by_list", + "group_by_item", "empty_grouping_set", "rollup_clause", "cube_clause", + "grouping_sets_clause", "having_clause", "for_locking_clause", + "opt_for_locking_clause", "for_locking_items", "for_locking_item", + "for_locking_strength", "locked_rels_list", "values_clause", + "from_clause", "from_list", "table_ref", "joined_table", "alias_clause", + "opt_alias_clause", "func_alias_clause", "join_type", "join_outer", + "join_qual", "relation_expr", "relation_expr_list", "relation_expr_opt_alias", "tablesample_clause", "opt_repeatable_clause", "func_table", "rowsfrom_item", "rowsfrom_list", "opt_col_def_list", "opt_ordinality", "where_clause", "where_or_current_clause", @@ -3421,14 +3558,15 @@ static const char *const yytname[] = "func_expr_windowless", "func_expr_common_subexpr", "xml_root_version", "opt_xml_root_standalone", "xml_attributes", "xml_attribute_list", "xml_attribute_el", "document_or_content", "xml_whitespace_option", - "xmlexists_argument", "within_group_clause", "filter_clause", - "window_clause", "window_definition_list", "window_definition", - "over_clause", "window_specification", "opt_existing_window_name", - "opt_partition_clause", "opt_frame_clause", "frame_extent", - "frame_bound", "row", "explicit_row", "implicit_row", "sub_type", - "all_Op", "MathOp", "qual_Op", "qual_all_Op", "subquery_Op", "expr_list", - "func_arg_list", "func_arg_expr", "type_list", "array_expr", - "array_expr_list", "extract_list", "extract_arg", "overlay_list", + "xmlexists_argument", "xml_passing_mech", "within_group_clause", + "filter_clause", "window_clause", "window_definition_list", + "window_definition", "over_clause", "window_specification", + "opt_existing_window_name", "opt_partition_clause", "opt_frame_clause", + "frame_extent", "frame_bound", "opt_window_exclusion_clause", "row", + "explicit_row", "implicit_row", "sub_type", "all_Op", "MathOp", + "qual_Op", "qual_all_Op", "subquery_Op", "expr_list", "func_arg_list", + "func_arg_expr", "type_list", "array_expr", "array_expr_list", + "extract_list", "extract_arg", "unicode_normal_form", "overlay_list", "overlay_placing", "position_list", "substr_list", "substr_from", "substr_for", "trim_list", "in_expr", "case_expr", "when_clause_list", "when_clause", "case_default", "case_arg", "columnref", "indirection_el", @@ -3437,8 +3575,6 @@ static const char *const yytname[] = "qualified_name", "name_list", "name", "database_name", "access_method", "attr_name", "index_name", "file_name", "func_name", "AexprConst", "Iconst", "Sconst", "SignedIconst", "RoleId", "RoleSpec", "role_list", - "Iconst_or_Normalized", "Sconst_or_Normalized", - "Flat_Sconst_or_Normalized", "NonReservedWord_or_Sconst_or_Normalized", "ColId", "type_function_name", "NonReservedWord", "ColLabel", "unreserved_keyword", "col_name_keyword", "type_func_name_keyword", "reserved_keyword", 0 @@ -3495,284 +3631,296 @@ static const yytype_uint16 yytoknum[] = 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, - 705, 706, 707, 60, 62, 61, 708, 43, 45, 42, - 47, 37, 94, 63, 709, 91, 93, 40, 41, 46, - 59, 44, 58 + 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, + 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, + 725, 726, 727, 728, 729, 60, 62, 61, 63, 730, + 43, 45, 42, 47, 37, 94, 731, 91, 93, 40, + 41, 46, 59, 44, 58 }; # endif /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ static const yytype_uint16 yyr1[] = { - 0, 473, 474, 475, 475, 476, 476, 476, 476, 476, - 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, - 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, - 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, - 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, - 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, - 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, - 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, - 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, - 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, - 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, - 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, - 476, 476, 476, 476, 476, 476, 476, 476, 476, 477, - 478, 478, 478, 479, 479, 480, 480, 481, 481, 481, - 481, 481, 481, 481, 481, 481, 482, 482, 482, 482, - 482, 482, 483, 484, 484, 485, 485, 486, 486, 486, - 486, 487, 487, 487, 487, 487, 487, 488, 489, 490, - 490, 491, 491, 491, 491, 492, 492, 493, 493, 494, - 494, 494, 494, 494, 494, 495, 495, 495, 496, 496, - 496, 497, 497, 497, 497, 498, 498, 498, 498, 498, - 498, 498, 498, 498, 498, 498, 499, 499, 500, 500, - 501, 501, 501, 502, 502, 502, 502, 503, 503, 503, - 503, 504, 504, 504, 504, 504, 504, 504, 505, 505, - 505, 506, 506, 507, 508, 508, 508, 508, 509, 509, - 510, 510, 511, 511, 512, 512, 512, 512, 512, 513, - 514, 514, 515, 515, 516, 517, 517, 517, 517, 517, - 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, - 518, 518, 518, 518, 518, 518, 518, 518, 519, 519, + 0, 495, 496, 497, 497, 498, 498, 498, 498, 498, + 498, 498, 498, 498, 498, 498, 498, 498, 498, 498, + 498, 498, 498, 498, 498, 498, 498, 498, 498, 498, + 498, 498, 498, 498, 498, 498, 498, 498, 498, 498, + 498, 498, 498, 498, 498, 498, 498, 498, 498, 498, + 498, 498, 498, 498, 498, 498, 498, 498, 498, 498, + 498, 498, 498, 498, 498, 498, 498, 498, 498, 498, + 498, 498, 498, 498, 498, 498, 498, 498, 498, 498, + 498, 498, 498, 498, 498, 498, 498, 498, 498, 498, + 498, 498, 498, 498, 498, 498, 498, 498, 498, 498, + 498, 498, 498, 498, 498, 498, 498, 498, 498, 498, + 498, 498, 498, 498, 498, 498, 498, 498, 498, 498, + 498, 498, 498, 498, 498, 498, 498, 498, 498, 498, + 498, 499, 500, 501, 501, 501, 502, 502, 503, 503, + 504, 504, 504, 504, 504, 504, 504, 504, 504, 504, + 504, 504, 504, 505, 505, 505, 505, 505, 505, 506, + 507, 507, 508, 508, 509, 509, 509, 509, 510, 510, + 510, 510, 510, 510, 511, 512, 513, 513, 514, 514, + 514, 514, 515, 515, 516, 516, 517, 517, 517, 517, + 517, 517, 518, 518, 518, 519, 519, 519, 520, 520, 520, 520, 521, 521, 521, 521, 521, 521, 521, 521, - 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, - 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, - 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, - 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, - 521, 521, 521, 521, 521, 521, 521, 521, 522, 522, - 523, 523, 523, 524, 524, 525, 525, 526, 526, 526, - 526, 527, 528, 528, 529, 529, 530, 530, 530, 530, - 531, 531, 532, 532, 532, 532, 533, 533, 534, 534, - 534, 534, 534, 535, 535, 536, 536, 537, 537, 537, - 538, 539, 539, 540, 540, 540, 540, 541, 541, 542, - 542, 543, 543, 544, 544, 545, 545, 545, 546, 546, - 547, 547, 548, 548, 548, 548, 548, 548, 548, 548, - 548, 548, 548, 548, 548, 548, 549, 549, 550, 550, - 551, 551, 552, 552, 553, 553, 554, 555, 555, 555, - 555, 555, 556, 556, 557, 558, 558, 558, 558, 558, - 558, 559, 559, 559, 559, 559, 559, 559, 559, 560, - 560, 561, 561, 562, 562, 563, 563, 564, 564, 564, - 565, 565, 566, 567, 567, 568, 568, 569, 569, 569, - 569, 570, 570, 570, 570, 570, 570, 570, 570, 571, - 571, 572, 572, 572, 572, 573, 574, 574, 574, 575, - 575, 575, 575, 575, 575, 575, 575, 576, 576, 577, - 577, 577, 577, 577, 577, 577, 578, 578, 579, 579, - 580, 580, 581, 582, 582, 582, 582, 583, 583, 584, - 584, 585, 585, 586, 586, 586, 586, 586, 587, 588, - 589, 589, 589, 589, 589, 590, 590, 591, 591, 592, - 593, 593, 594, 594, 595, 595, 595, 596, 596, 596, - 596, 597, 597, 597, 597, 598, 598, 599, 599, 600, - 601, 601, 602, 602, 603, 604, 604, 604, 605, 605, - 606, 607, 607, 608, 609, 609, 610, 610, 611, 611, - 612, 612, 613, 613, 614, 614, 614, 614, 614, 614, - 614, 614, 614, 614, 614, 614, 614, 614, 615, 615, - 616, 616, 616, 616, 617, 617, 618, 618, 619, 619, - 620, 620, 621, 621, 622, 622, 623, 623, 624, 624, - 625, 625, 626, 627, 627, 628, 628, 629, 629, 630, - 630, 631, 631, 631, 631, 632, 633, 633, 634, 635, - 635, 635, 635, 635, 635, 635, 635, 635, 635, 635, - 635, 635, 635, 635, 635, 635, 635, 635, 635, 635, - 635, 635, 635, 635, 635, 636, 637, 637, 637, 637, - 638, 638, 639, 639, 640, 640, 641, 641, 642, 642, - 643, 644, 644, 645, 645, 645, 645, 646, 647, 648, - 649, 649, 650, 650, 651, 651, 652, 652, 653, 653, - 653, 654, 654, 654, 654, 655, 655, 656, 657, 657, - 658, 658, 659, 659, 660, 660, 661, 661, 662, 663, - 664, 665, 665, 666, 666, 667, 667, 668, 668, 669, - 669, 670, 670, 671, 671, 671, 671, 671, 672, 673, - 673, 674, 674, 674, 675, 675, 676, 676, 676, 676, - 676, 677, 677, 678, 678, 679, 680, 680, 681, 681, - 682, 683, 683, 684, 684, 685, 685, 686, 686, 687, - 687, 687, 688, 688, 688, 688, 689, 689, 690, 690, - 691, 691, 691, 691, 691, 691, 692, 692, 693, 693, - 694, 695, 695, 696, 697, 697, 697, 697, 698, 699, - 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, - 700, 700, 700, 700, 700, 700, 701, 702, 702, 703, - 703, 704, 704, 704, 704, 704, 704, 705, 706, 706, - 707, 708, 708, 709, 709, 710, 710, 710, 710, 711, - 711, 712, 713, 713, 714, 714, 714, 714, 714, 715, - 715, 716, 716, 717, 717, 717, 718, 718, 719, 720, - 720, 721, 721, 722, 722, 723, 723, 724, 724, 725, - 726, 727, 727, 727, 727, 727, 727, 727, 727, 727, - 727, 727, 727, 728, 728, 728, 728, 728, 728, 728, - 728, 728, 728, 728, 728, 728, 729, 729, 729, 729, - 729, 729, 729, 730, 730, 730, 731, 731, 732, 732, - 733, 733, 734, 734, 735, 736, 736, 736, 737, 737, - 737, 737, 737, 737, 737, 737, 737, 737, 737, 737, - 737, 737, 737, 737, 737, 738, 738, 738, 738, 738, - 738, 738, 738, 738, 738, 738, 738, 738, 738, 739, - 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, - 739, 740, 740, 741, 741, 741, 741, 741, 741, 741, - 742, 742, 743, 743, 743, 743, 743, 743, 744, 744, - 744, 744, 744, 744, 744, 744, 745, 745, 746, 746, - 747, 747, 747, 747, 747, 747, 747, 747, 747, 747, - 747, 747, 747, 747, 747, 747, 748, 748, 749, 749, - 750, 751, 751, 752, 752, 752, 752, 752, 753, 753, - 754, 754, 754, 754, 755, 755, 755, 755, 755, 755, - 755, 755, 755, 755, 755, 755, 755, 755, 755, 755, - 756, 756, 757, 757, 758, 758, 759, 760, 760, 761, - 761, 762, 762, 763, 764, 764, 765, 765, 765, 766, - 766, 766, 767, 767, 767, 767, 767, 768, 768, 769, - 769, 770, 770, 771, 771, 772, 772, 773, 773, 774, - 774, 774, 775, 775, 776, 776, 777, 777, 777, 778, - 778, 778, 779, 779, 779, 780, 780, 781, 781, 782, - 782, 783, 783, 784, 784, 784, 784, 785, 785, 786, - 786, 787, 787, 787, 787, 787, 788, 788, 788, 788, - 788, 789, 790, 791, 791, 791, 792, 792, 792, 793, - 794, 794, 794, 794, 795, 795, 796, 797, 797, 798, - 798, 799, 799, 799, 799, 799, 799, 799, 799, 799, - 799, 799, 799, 799, 799, 799, 799, 800, 800, 800, - 800, 800, 801, 801, 802, 802, 803, 803, 804, 805, - 805, 806, 807, 807, 808, 808, 809, 809, 810, 810, - 811, 811, 812, 812, 812, 812, 813, 813, 814, 814, - 815, 816, 817, 817, 818, 818, 819, 819, 819, 820, - 820, 820, 821, 822, 822, 823, 824, 824, 824, 824, - 825, 826, 826, 826, 826, 827, 827, 828, 828, 828, - 829, 829, 830, 831, 831, 832, 832, 832, 832, 832, - 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, - 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, - 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, - 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, - 832, 832, 832, 832, 832, 832, 833, 833, 834, 834, - 835, 835, 835, 835, 836, 836, 836, 836, 836, 836, - 836, 836, 836, 836, 836, 836, 836, 836, 836, 836, - 836, 836, 836, 836, 836, 836, 836, 836, 836, 837, - 838, 838, 839, 839, 840, 840, 840, 840, 840, 841, - 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, - 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, - 841, 842, 843, 843, 844, 844, 845, 845, 845, 845, - 846, 847, 847, 848, 849, 849, 849, 849, 849, 849, - 850, 850, 851, 852, 852, 852, 853, 853, 854, 854, - 854, 854, 854, 855, 855, 856, 856, 856, 856, 857, - 857, 857, 858, 859, 859, 860, 861, 861, 862, 862, - 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, - 862, 862, 863, 863, 863, 864, 864, 864, 864, 864, - 865, 865, 865, 866, 866, 867, 867, 867, 867, 868, - 868, 868, 868, 869, 870, 871, 871, 872, 872, 873, - 873, 873, 874, 874, 874, 874, 874, 874, 874, 875, - 875, 876, 876, 876, 877, 878, 878, 879, 880, 880, - 881, 882, 882, 882, 882, 882, 882, 882, 883, 883, - 884, 885, 885, 885, 885, 885, 885, 886, 886, 887, - 888, 888, 888, 889, 889, 890, 890, 890, 890, 890, - 891, 891, 892, 892, 892, 892, 892, 893, 893, 894, - 894, 895, 895, 896, 896, 897, 897, 898, 898, 899, - 899, 899, 899, 900, 900, 900, 900, 900, 900, 900, - 900, 900, 901, 901, 902, 903, 903, 904, 904, 904, - 905, 906, 906, 907, 907, 907, 907, 908, 908, 908, - 909, 909, 910, 910, 910, 910, 911, 912, 912, 913, - 913, 913, 913, 913, 914, 914, 915, 915, 916, 917, - 917, 917, 918, 918, 918, 919, 919, 920, 921, 921, - 922, 923, 923, 924, 924, 924, 924, 924, 924, 924, - 924, 925, 925, 926, 926, 926, 927, 928, 928, 929, - 929, 930, 931, 931, 932, 933, 934, 934, 934, 934, - 934, 935, 935, 935, 936, 936, 937, 937, 938, 938, - 938, 938, 938, 938, 938, 938, 939, 939, 940, 940, - 940, 940, 940, 940, 940, 941, 941, 941, 942, 942, - 943, 944, 944, 945, 945, 946, 946, 946, 946, 946, - 946, 946, 946, 946, 947, 947, 948, 948, 948, 949, - 949, 950, 950, 951, 951, 952, 953, 953, 954, 954, - 955, 955, 955, 955, 956, 956, 957, 957, 957, 957, - 958, 958, 959, 959, 960, 961, 961, 961, 962, 962, - 963, 963, 964, 964, 965, 965, 966, 966, 967, 967, - 967, 967, 967, 968, 969, 970, 971, 972, 972, 973, - 973, 974, 974, 975, 975, 976, 977, 977, 977, 977, - 978, 978, 979, 979, 980, 980, 981, 981, 982, 982, - 982, 982, 982, 982, 982, 982, 982, 982, 983, 983, - 983, 983, 983, 983, 984, 984, 984, 984, 985, 985, - 986, 986, 986, 986, 986, 987, 987, 987, 987, 988, - 988, 989, 989, 990, 990, 990, 990, 991, 991, 992, - 992, 992, 993, 994, 994, 995, 995, 996, 997, 997, - 998, 998, 999, 999, 1000, 1000, 1001, 1001, 1001, 1002, - 1002, 1003, 1003, 1004, 1005, 1005, 1006, 1006, 1007, 1007, - 1007, 1008, 1008, 1009, 1009, 1009, 1009, 1010, 1010, 1011, - 1011, 1012, 1012, 1012, 1012, 1012, 1012, 1013, 1013, 1013, - 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1015, 1015, 1015, - 1015, 1016, 1016, 1017, 1017, 1018, 1018, 1018, 1018, 1018, - 1018, 1018, 1018, 1018, 1018, 1018, 1019, 1019, 1020, 1020, - 1021, 1021, 1022, 1023, 1024, 1024, 1025, 1025, 1026, 1027, - 1028, 1028, 1028, 1028, 1028, 1028, 1029, 1029, 1030, 1030, - 1030, 1030, 1031, 1032, 1032, 1032, 1033, 1033, 1033, 1033, - 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, - 1034, 1034, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, - 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, - 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, - 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, - 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, - 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, - 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1036, 1036, - 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, - 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, - 1036, 1036, 1036, 1036, 1036, 1037, 1037, 1037, 1037, 1037, - 1037, 1037, 1037, 1037, 1037, 1037, 1037, 1037, 1037, 1037, - 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1039, 1039, 1040, - 1040, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, - 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, - 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, - 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, - 1041, 1041, 1041, 1042, 1042, 1043, 1043, 1043, 1043, 1044, - 1045, 1045, 1046, 1046, 1047, 1047, 1048, 1048, 1048, 1049, - 1049, 1049, 1049, 1050, 1050, 1051, 1051, 1052, 1052, 1053, - 1053, 1054, 1055, 1055, 1055, 1056, 1057, 1057, 1058, 1058, - 1059, 1059, 1059, 1060, 1060, 1061, 1061, 1061, 1061, 1061, - 1062, 1062, 1062, 1063, 1063, 1064, 1065, 1065, 1065, 1066, - 1066, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, - 1067, 1067, 1067, 1067, 1068, 1068, 1069, 1069, 1070, 1070, - 1070, 1070, 1070, 1070, 1071, 1071, 1072, 1072, 1073, 1073, - 1073, 1074, 1074, 1075, 1075, 1075, 1076, 1076, 1077, 1077, - 1077, 1077, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, - 1079, 1079, 1080, 1081, 1081, 1082, 1082, 1082, 1082, 1082, - 1082, 1083, 1084, 1085, 1085, 1085, 1086, 1086, 1087, 1088, - 1088, 1089, 1090, 1090, 1091, 1091, 1092, 1092, 1093, 1093, - 1093, 1093, 1094, 1094, 1095, 1095, 1096, 1096, 1097, 1097, - 1098, 1098, 1099, 1099, 1100, 1100, 1100, 1100, 1101, 1101, - 1102, 1102, 1103, 1103, 1104, 1105, 1106, 1107, 1108, 1109, - 1110, 1110, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, - 1111, 1111, 1111, 1111, 1111, 1111, 1112, 1113, 1114, 1114, - 1114, 1115, 1116, 1116, 1116, 1117, 1117, 1118, 1118, 1119, - 1119, 1120, 1120, 1121, 1121, 1122, 1122, 1122, 1123, 1123, - 1123, 1124, 1124, 1124, 1124, 1125, 1125, 1125, 1125, 1125, - 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, - 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, - 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, - 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, - 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, - 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, - 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, - 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, - 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, - 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, - 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, - 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, - 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, - 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, - 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, - 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, - 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, - 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, - 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, - 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, - 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, - 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, - 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, - 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, - 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, - 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, - 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, - 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, - 1126, 1126, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, - 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, - 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, - 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, - 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, - 1127, 1127, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, - 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, - 1128, 1128, 1128, 1128, 1128, 1129, 1129, 1129, 1129, 1129, - 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, - 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, - 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, - 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, - 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, - 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, - 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, - 1129, 1129 + 521, 521, 521, 521, 521, 521, 521, 521, 521, 522, + 522, 523, 523, 524, 524, 524, 524, 525, 525, 525, + 525, 526, 526, 526, 526, 527, 527, 527, 527, 527, + 527, 527, 527, 527, 528, 528, 528, 529, 529, 530, + 531, 531, 531, 531, 532, 532, 533, 533, 534, 534, + 535, 535, 535, 535, 535, 536, 537, 537, 538, 538, + 539, 540, 540, 540, 540, 540, 541, 541, 541, 541, + 541, 541, 541, 541, 541, 541, 541, 541, 541, 541, + 541, 541, 541, 541, 541, 542, 542, 543, 543, 544, + 545, 545, 545, 545, 545, 545, 545, 545, 545, 545, + 545, 545, 545, 545, 545, 545, 545, 545, 545, 545, + 545, 545, 545, 545, 545, 545, 545, 545, 545, 545, + 545, 545, 545, 545, 545, 545, 545, 545, 545, 545, + 545, 545, 545, 545, 545, 545, 545, 545, 545, 545, + 545, 545, 545, 545, 545, 545, 545, 545, 546, 546, + 547, 547, 547, 548, 548, 549, 549, 550, 550, 550, + 550, 551, 552, 552, 553, 553, 554, 554, 554, 554, + 555, 555, 556, 556, 556, 556, 557, 557, 557, 557, + 558, 559, 559, 560, 561, 561, 562, 562, 562, 562, + 563, 563, 564, 564, 565, 565, 566, 566, 567, 567, + 567, 568, 568, 569, 569, 570, 570, 570, 570, 570, + 570, 570, 570, 570, 570, 570, 570, 570, 571, 571, + 572, 572, 573, 573, 574, 574, 575, 576, 576, 576, + 576, 576, 577, 577, 578, 579, 579, 579, 579, 579, + 579, 580, 580, 580, 580, 580, 580, 580, 580, 581, + 581, 582, 582, 583, 583, 584, 584, 585, 585, 585, + 586, 586, 587, 588, 588, 589, 589, 590, 590, 590, + 590, 591, 591, 591, 591, 591, 591, 591, 591, 591, + 592, 592, 593, 593, 593, 593, 594, 595, 595, 595, + 596, 596, 596, 596, 596, 596, 596, 596, 596, 597, + 597, 598, 598, 598, 598, 598, 598, 598, 599, 599, + 600, 600, 601, 601, 602, 603, 603, 604, 604, 604, + 604, 605, 605, 606, 606, 607, 607, 608, 608, 608, + 608, 608, 609, 610, 611, 611, 611, 611, 611, 612, + 612, 613, 613, 614, 615, 615, 616, 616, 616, 617, + 617, 618, 618, 618, 619, 619, 619, 619, 620, 620, + 621, 621, 622, 623, 623, 624, 624, 625, 625, 626, + 627, 627, 627, 628, 628, 629, 630, 630, 631, 632, + 632, 633, 633, 634, 634, 635, 635, 636, 636, 637, + 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, + 637, 637, 637, 638, 638, 639, 639, 639, 639, 640, + 640, 641, 641, 642, 642, 643, 643, 644, 644, 645, + 645, 646, 646, 647, 647, 648, 648, 649, 650, 650, + 651, 651, 652, 652, 653, 653, 654, 654, 654, 654, + 655, 656, 656, 657, 658, 658, 658, 658, 658, 658, + 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, + 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, + 658, 658, 659, 660, 660, 660, 660, 661, 661, 662, + 662, 663, 663, 664, 664, 665, 665, 666, 667, 667, + 668, 668, 668, 668, 669, 670, 671, 672, 672, 673, + 673, 674, 674, 675, 675, 676, 676, 676, 677, 677, + 677, 677, 678, 678, 679, 680, 680, 681, 681, 682, + 682, 683, 683, 684, 684, 685, 686, 687, 688, 688, + 689, 689, 690, 690, 691, 691, 692, 692, 693, 693, + 694, 694, 694, 694, 694, 695, 696, 696, 697, 697, + 698, 698, 698, 699, 699, 700, 700, 700, 700, 700, + 701, 701, 702, 702, 703, 704, 704, 705, 705, 706, + 707, 707, 708, 708, 709, 709, 710, 710, 711, 711, + 712, 712, 712, 713, 713, 713, 713, 714, 714, 715, + 715, 716, 716, 716, 716, 716, 716, 717, 717, 718, + 718, 719, 720, 720, 721, 722, 722, 722, 722, 723, + 724, 724, 724, 724, 724, 724, 724, 724, 724, 724, + 724, 724, 724, 724, 724, 724, 725, 726, 726, 727, + 727, 728, 728, 728, 728, 728, 728, 729, 730, 730, + 731, 732, 732, 733, 733, 734, 734, 734, 734, 735, + 735, 736, 737, 737, 738, 738, 738, 738, 738, 739, + 739, 740, 740, 741, 741, 741, 742, 742, 743, 744, + 744, 745, 745, 746, 746, 747, 747, 748, 748, 749, + 750, 751, 751, 751, 751, 751, 751, 751, 751, 751, + 751, 751, 751, 752, 752, 752, 752, 752, 752, 752, + 752, 752, 752, 752, 752, 752, 753, 753, 753, 753, + 753, 753, 753, 754, 754, 754, 755, 755, 756, 756, + 757, 757, 758, 758, 759, 760, 760, 760, 761, 761, + 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, + 761, 761, 761, 761, 761, 761, 761, 762, 762, 762, + 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, + 762, 763, 763, 763, 763, 763, 763, 763, 763, 763, + 763, 763, 763, 764, 764, 765, 765, 765, 765, 765, + 765, 765, 765, 765, 766, 766, 767, 767, 767, 767, + 767, 767, 768, 768, 768, 768, 768, 768, 768, 768, + 769, 769, 770, 770, 771, 771, 771, 771, 771, 771, + 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, + 772, 772, 773, 773, 774, 775, 775, 776, 776, 776, + 776, 776, 777, 777, 778, 778, 778, 778, 779, 779, + 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, + 779, 779, 779, 779, 779, 779, 779, 779, 780, 780, + 781, 781, 782, 782, 783, 784, 784, 785, 785, 786, + 786, 787, 788, 788, 789, 789, 789, 790, 790, 790, + 791, 791, 791, 791, 791, 791, 792, 792, 793, 793, + 794, 794, 795, 795, 796, 796, 797, 797, 798, 798, + 799, 799, 799, 800, 800, 801, 801, 802, 802, 803, + 803, 804, 804, 804, 805, 805, 805, 806, 806, 806, + 806, 807, 807, 808, 808, 809, 809, 810, 810, 811, + 811, 811, 811, 812, 812, 813, 813, 814, 814, 814, + 814, 814, 815, 815, 815, 815, 815, 816, 817, 818, + 818, 818, 819, 819, 819, 820, 821, 821, 821, 821, + 822, 822, 823, 824, 824, 825, 825, 826, 826, 826, + 826, 826, 826, 826, 826, 826, 826, 826, 826, 826, + 826, 826, 826, 826, 827, 827, 827, 827, 827, 828, + 828, 829, 829, 830, 830, 831, 832, 832, 833, 833, + 833, 834, 834, 835, 835, 836, 836, 836, 836, 836, + 836, 837, 837, 838, 838, 839, 839, 839, 839, 840, + 840, 841, 841, 842, 843, 844, 844, 845, 845, 846, + 846, 846, 847, 847, 847, 848, 849, 849, 850, 851, + 851, 851, 851, 852, 853, 853, 853, 853, 854, 854, + 855, 855, 855, 856, 856, 857, 858, 858, 859, 859, + 859, 859, 859, 859, 859, 859, 859, 859, 859, 859, + 859, 859, 859, 859, 859, 859, 859, 859, 859, 859, + 859, 859, 859, 859, 859, 859, 859, 859, 859, 859, + 859, 859, 859, 859, 859, 859, 859, 859, 859, 859, + 859, 859, 859, 859, 859, 859, 859, 859, 859, 859, + 859, 859, 859, 860, 860, 861, 861, 862, 862, 862, + 862, 862, 862, 863, 863, 864, 864, 864, 864, 864, + 864, 864, 864, 864, 864, 864, 864, 864, 864, 864, + 864, 864, 864, 864, 864, 864, 864, 864, 864, 864, + 864, 864, 865, 866, 866, 867, 867, 868, 868, 868, + 868, 868, 869, 870, 870, 870, 870, 870, 870, 870, + 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, + 870, 870, 870, 870, 870, 870, 870, 871, 872, 872, + 873, 873, 874, 874, 874, 874, 875, 876, 876, 877, + 878, 878, 878, 878, 878, 878, 879, 879, 880, 881, + 881, 881, 882, 882, 883, 883, 883, 883, 883, 884, + 884, 885, 885, 885, 885, 886, 886, 886, 887, 888, + 888, 889, 890, 890, 891, 891, 891, 891, 891, 891, + 891, 891, 891, 891, 891, 891, 891, 891, 892, 892, + 892, 893, 893, 893, 893, 893, 894, 894, 894, 895, + 895, 896, 896, 896, 897, 897, 897, 897, 898, 898, + 898, 898, 899, 900, 901, 901, 902, 902, 903, 903, + 903, 904, 904, 904, 904, 904, 904, 904, 905, 905, + 906, 906, 906, 907, 908, 908, 908, 908, 909, 909, + 910, 911, 912, 912, 913, 914, 914, 914, 914, 914, + 914, 914, 915, 915, 916, 917, 917, 917, 917, 917, + 917, 918, 918, 919, 920, 920, 920, 921, 921, 922, + 922, 923, 923, 924, 924, 925, 925, 926, 927, 927, + 928, 928, 928, 929, 929, 930, 930, 931, 931, 932, + 932, 933, 933, 934, 935, 935, 936, 936, 937, 937, + 937, 937, 938, 938, 938, 938, 938, 938, 938, 938, + 938, 939, 939, 940, 941, 941, 942, 942, 942, 943, + 944, 944, 945, 945, 945, 945, 946, 946, 946, 947, + 947, 948, 948, 948, 948, 949, 950, 950, 951, 951, + 951, 951, 951, 952, 952, 953, 953, 954, 955, 955, + 955, 956, 956, 956, 957, 957, 958, 959, 959, 960, + 961, 961, 962, 962, 962, 962, 962, 962, 962, 962, + 963, 963, 964, 964, 964, 965, 966, 966, 967, 967, + 968, 969, 969, 970, 971, 972, 972, 972, 972, 972, + 973, 973, 973, 974, 974, 975, 975, 976, 976, 976, + 976, 976, 976, 976, 976, 977, 977, 978, 978, 978, + 978, 978, 978, 978, 979, 979, 979, 980, 980, 981, + 982, 982, 982, 983, 983, 984, 984, 985, 985, 985, + 985, 985, 985, 985, 985, 985, 986, 986, 987, 987, + 987, 988, 988, 989, 989, 990, 990, 991, 992, 992, + 993, 993, 994, 994, 994, 994, 995, 995, 996, 996, + 996, 996, 996, 996, 997, 997, 998, 998, 999, 1000, + 1000, 1000, 1001, 1001, 1002, 1002, 1003, 1003, 1004, 1004, + 1005, 1005, 1006, 1006, 1006, 1006, 1006, 1007, 1008, 1009, + 1010, 1011, 1011, 1012, 1012, 1013, 1013, 1014, 1014, 1015, + 1016, 1016, 1016, 1016, 1017, 1017, 1018, 1018, 1019, 1019, + 1020, 1020, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, + 1021, 1021, 1022, 1022, 1022, 1022, 1022, 1022, 1023, 1023, + 1023, 1023, 1024, 1024, 1025, 1025, 1025, 1025, 1025, 1026, + 1026, 1026, 1026, 1027, 1027, 1028, 1028, 1029, 1029, 1029, + 1029, 1030, 1030, 1031, 1031, 1031, 1032, 1033, 1033, 1034, + 1034, 1035, 1036, 1036, 1037, 1037, 1038, 1038, 1039, 1039, + 1040, 1040, 1040, 1041, 1041, 1042, 1042, 1043, 1044, 1044, + 1045, 1045, 1046, 1046, 1046, 1047, 1047, 1048, 1048, 1048, + 1048, 1049, 1049, 1050, 1050, 1051, 1051, 1051, 1051, 1051, + 1051, 1052, 1052, 1052, 1053, 1053, 1053, 1053, 1053, 1053, + 1053, 1054, 1054, 1054, 1054, 1055, 1055, 1056, 1056, 1057, + 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, + 1058, 1058, 1059, 1059, 1060, 1060, 1061, 1062, 1063, 1063, + 1064, 1064, 1065, 1066, 1067, 1067, 1067, 1067, 1067, 1067, + 1068, 1068, 1069, 1069, 1069, 1069, 1070, 1071, 1071, 1071, + 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, + 1072, 1072, 1072, 1072, 1073, 1073, 1074, 1074, 1074, 1074, + 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, + 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, + 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, + 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, + 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, + 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, + 1074, 1074, 1074, 1074, 1074, 1074, 1075, 1075, 1075, 1075, + 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, + 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, + 1075, 1075, 1075, 1076, 1076, 1076, 1076, 1076, 1076, 1076, + 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1077, 1077, + 1077, 1077, 1077, 1077, 1077, 1078, 1078, 1079, 1079, 1080, + 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, + 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, + 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, + 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, + 1080, 1080, 1080, 1081, 1081, 1082, 1082, 1082, 1082, 1083, + 1084, 1084, 1085, 1085, 1086, 1086, 1087, 1087, 1087, 1088, + 1088, 1088, 1088, 1089, 1089, 1090, 1090, 1091, 1091, 1092, + 1092, 1093, 1093, 1094, 1095, 1095, 1095, 1096, 1097, 1097, + 1098, 1098, 1099, 1099, 1099, 1099, 1100, 1100, 1101, 1101, + 1101, 1101, 1101, 1102, 1102, 1102, 1102, 1102, 1103, 1103, + 1103, 1104, 1104, 1105, 1106, 1106, 1106, 1107, 1107, 1108, + 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, + 1108, 1108, 1109, 1109, 1110, 1110, 1111, 1111, 1111, 1111, + 1111, 1111, 1112, 1112, 1113, 1113, 1114, 1114, 1114, 1115, + 1115, 1116, 1116, 1116, 1117, 1117, 1118, 1118, 1118, 1118, + 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1120, 1120, + 1120, 1120, 1121, 1121, 1122, 1123, 1123, 1124, 1124, 1124, + 1124, 1124, 1124, 1125, 1126, 1127, 1127, 1127, 1128, 1128, + 1129, 1130, 1130, 1131, 1132, 1132, 1133, 1133, 1134, 1134, + 1135, 1135, 1135, 1135, 1136, 1136, 1137, 1137, 1138, 1138, + 1139, 1139, 1140, 1140, 1141, 1141, 1142, 1142, 1142, 1142, + 1143, 1143, 1144, 1144, 1145, 1145, 1146, 1147, 1148, 1149, + 1150, 1151, 1152, 1152, 1153, 1153, 1153, 1153, 1153, 1153, + 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, + 1153, 1153, 1153, 1154, 1155, 1156, 1156, 1156, 1157, 1158, + 1158, 1158, 1159, 1159, 1160, 1160, 1160, 1161, 1161, 1161, + 1162, 1162, 1162, 1162, 1163, 1163, 1163, 1163, 1163, 1164, + 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, + 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, + 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, + 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, + 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, + 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, + 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, + 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, + 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, + 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, + 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, + 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, + 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, + 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, + 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, + 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, + 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, + 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, + 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, + 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, + 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, + 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, + 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, + 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, + 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, + 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, + 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, + 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, + 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, + 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1165, 1165, + 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, + 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, + 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, + 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, + 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1166, + 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, + 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, + 1166, 1166, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, + 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, + 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, + 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, + 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, + 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, + 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, + 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167 }; /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */ @@ -3790,75 +3938,77 @@ static const yytype_uint8 yyr2[] = 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 0, 5, - 1, 1, 0, 2, 0, 2, 0, 2, 2, 3, - 3, 1, 3, 3, 2, 1, 1, 2, 2, 2, - 3, 3, 5, 5, 5, 0, 3, 5, 5, 5, - 5, 3, 5, 3, 5, 3, 5, 5, 6, 1, - 1, 6, 4, 9, 7, 1, 0, 2, 0, 1, - 1, 1, 1, 1, 1, 2, 3, 3, 2, 5, - 1, 3, 3, 3, 3, 1, 3, 3, 2, 2, - 2, 2, 3, 3, 3, 3, 1, 3, 1, 3, - 1, 1, 1, 2, 2, 2, 1, 1, 1, 1, - 1, 1, 1, 3, 5, 1, 1, 1, 1, 1, - 0, 1, 1, 2, 1, 2, 3, 2, 1, 1, - 2, 1, 2, 1, 2, 3, 4, 3, 2, 4, - 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, - 4, 6, 4, 6, 10, 13, 4, 6, 10, 13, - 4, 6, 4, 6, 5, 7, 11, 14, 1, 3, - 4, 3, 2, 5, 3, 6, 4, 6, 6, 6, - 5, 5, 6, 9, 4, 5, 7, 6, 4, 8, - 4, 2, 4, 3, 6, 4, 3, 3, 3, 3, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 0, 2, 5, 1, 1, 0, 2, 0, 2, 0, + 2, 2, 2, 2, 3, 3, 3, 3, 1, 3, + 3, 2, 1, 1, 2, 2, 2, 3, 3, 5, + 5, 5, 0, 3, 5, 5, 5, 5, 3, 5, + 3, 5, 3, 5, 5, 6, 1, 1, 6, 4, + 9, 7, 1, 0, 2, 0, 1, 1, 1, 1, + 1, 1, 2, 3, 3, 2, 5, 1, 3, 3, + 3, 3, 1, 3, 3, 2, 2, 2, 2, 2, + 2, 2, 2, 3, 3, 3, 3, 3, 3, 1, + 3, 1, 3, 1, 1, 1, 1, 2, 2, 2, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, + 5, 1, 1, 1, 1, 1, 0, 1, 1, 2, + 1, 2, 3, 2, 1, 1, 2, 1, 2, 1, + 2, 3, 4, 3, 2, 4, 1, 1, 1, 1, + 1, 2, 2, 2, 2, 2, 4, 6, 4, 6, + 10, 13, 4, 6, 4, 10, 13, 4, 6, 4, + 6, 5, 7, 11, 14, 1, 3, 4, 3, 3, + 2, 5, 3, 6, 4, 6, 6, 5, 7, 6, + 6, 5, 5, 6, 9, 4, 5, 7, 6, 4, + 8, 4, 2, 4, 3, 6, 4, 3, 3, 3, 2, 2, 3, 4, 4, 3, 3, 3, 3, 3, 3, 4, 4, 3, 2, 3, 2, 2, 3, 3, 2, 2, 3, 4, 4, 4, 5, 1, 3, 2, 1, 1, 0, 2, 0, 2, 0, 1, 1, 1, 3, 3, 2, 0, 1, 3, 3, 1, 5, 3, - 1, 2, 1, 3, 2, 3, 6, 10, 1, 1, - 1, 1, 1, 1, 3, 1, 3, 1, 1, 1, - 4, 1, 3, 4, 6, 4, 8, 2, 2, 11, - 9, 1, 1, 1, 0, 1, 1, 1, 1, 3, - 2, 0, 1, 1, 1, 3, 3, 1, 1, 3, - 3, 3, 3, 4, 3, 2, 1, 0, 2, 0, + 1, 2, 1, 3, 2, 3, 6, 6, 10, 1, + 2, 1, 3, 4, 1, 3, 4, 6, 4, 8, + 2, 2, 11, 9, 1, 1, 1, 0, 1, 1, + 1, 1, 3, 2, 0, 1, 1, 3, 3, 1, + 1, 3, 3, 3, 3, 4, 3, 2, 1, 0, 3, 0, 1, 0, 1, 3, 2, 1, 1, 1, - 3, 0, 1, 3, 1, 12, 15, 11, 14, 13, - 16, 1, 1, 2, 2, 2, 2, 1, 0, 1, + 3, 0, 1, 3, 1, 13, 16, 12, 15, 14, + 17, 1, 1, 2, 2, 2, 2, 1, 0, 1, 0, 3, 0, 1, 3, 1, 3, 1, 1, 1, 1, 1, 4, 2, 4, 2, 0, 3, 1, 1, - 2, 2, 1, 3, 4, 5, 2, 5, 5, 1, - 2, 1, 2, 2, 2, 3, 3, 3, 0, 1, - 1, 1, 1, 1, 1, 1, 1, 3, 1, 5, - 7, 3, 8, 4, 9, 11, 2, 0, 3, 0, - 1, 3, 1, 2, 2, 2, 0, 1, 3, 3, - 6, 4, 0, 1, 1, 2, 2, 0, 3, 3, - 2, 1, 1, 2, 2, 4, 0, 1, 0, 6, - 1, 1, 1, 3, 3, 3, 5, 2, 2, 2, - 0, 3, 4, 4, 0, 2, 0, 4, 0, 3, - 8, 11, 7, 10, 5, 2, 3, 0, 8, 11, - 4, 1, 0, 6, 5, 8, 4, 6, 1, 0, - 3, 0, 1, 2, 2, 2, 1, 2, 3, 2, - 2, 2, 2, 3, 3, 3, 1, 3, 1, 0, - 1, 2, 2, 1, 1, 3, 6, 10, 1, 0, - 1, 2, 2, 0, 2, 2, 1, 0, 5, 7, - 1, 0, 7, 2, 0, 3, 5, 5, 8, 2, - 0, 2, 2, 2, 1, 5, 2, 0, 2, 7, - 6, 10, 6, 6, 6, 6, 7, 6, 9, 9, - 6, 7, 6, 8, 8, 8, 8, 6, 6, 7, - 7, 8, 6, 9, 6, 7, 2, 2, 2, 2, - 1, 2, 1, 0, 7, 6, 4, 0, 1, 3, - 4, 1, 3, 1, 2, 2, 2, 2, 1, 1, - 10, 13, 2, 0, 2, 2, 1, 0, 5, 4, - 4, 11, 14, 12, 15, 5, 7, 11, 2, 1, - 4, 0, 8, 11, 1, 1, 7, 9, 8, 10, - 8, 4, 0, 5, 0, 2, 0, 2, 0, 2, - 0, 2, 0, 1, 1, 1, 1, 1, 8, 16, - 20, 1, 1, 2, 1, 3, 1, 1, 1, 3, - 1, 2, 0, 1, 2, 4, 1, 1, 1, 1, - 1, 3, 0, 1, 0, 1, 1, 4, 0, 1, - 3, 0, 1, 1, 1, 1, 2, 0, 0, 2, - 2, 1, 2, 2, 2, 2, 11, 13, 1, 3, - 5, 1, 3, 5, 1, 2, 2, 1, 8, 4, - 5, 4, 4, 4, 3, 7, 8, 6, 6, 6, + 2, 2, 1, 3, 4, 5, 2, 5, 7, 5, + 1, 2, 1, 2, 2, 2, 3, 3, 3, 0, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, + 1, 5, 8, 3, 9, 4, 10, 11, 2, 0, + 3, 0, 1, 3, 1, 4, 0, 2, 2, 2, + 0, 1, 3, 3, 6, 4, 0, 1, 1, 2, + 2, 0, 3, 3, 2, 1, 1, 2, 2, 4, + 0, 1, 0, 6, 1, 3, 3, 3, 5, 2, + 0, 2, 2, 0, 3, 4, 4, 0, 2, 0, + 4, 0, 3, 8, 11, 6, 8, 7, 10, 6, + 2, 3, 0, 8, 11, 5, 1, 0, 6, 5, + 8, 4, 6, 1, 0, 3, 0, 1, 2, 2, + 2, 1, 2, 3, 2, 2, 2, 2, 3, 3, + 3, 1, 3, 1, 0, 1, 2, 2, 1, 1, + 3, 6, 10, 1, 0, 1, 2, 2, 0, 2, + 2, 1, 0, 5, 7, 1, 0, 7, 2, 0, + 3, 5, 5, 8, 2, 0, 2, 2, 2, 1, + 5, 2, 0, 2, 7, 6, 10, 6, 6, 6, + 6, 7, 6, 9, 9, 6, 6, 6, 7, 6, + 8, 8, 8, 8, 6, 6, 7, 7, 8, 6, + 9, 6, 7, 2, 2, 2, 2, 1, 2, 1, + 0, 7, 6, 4, 0, 1, 3, 4, 1, 3, + 1, 2, 2, 2, 2, 1, 1, 10, 13, 2, + 0, 2, 2, 1, 0, 5, 4, 4, 11, 14, + 12, 15, 5, 7, 11, 2, 1, 4, 0, 8, + 11, 1, 1, 7, 9, 8, 10, 8, 4, 0, + 5, 0, 2, 0, 2, 0, 2, 0, 2, 0, + 1, 1, 1, 1, 1, 8, 1, 1, 16, 20, + 1, 1, 2, 1, 3, 1, 1, 1, 3, 1, + 2, 0, 1, 2, 4, 1, 1, 1, 1, 1, + 3, 0, 1, 0, 1, 1, 4, 0, 1, 1, + 1, 3, 0, 1, 1, 1, 1, 2, 0, 0, + 2, 2, 1, 2, 2, 2, 2, 11, 13, 1, + 3, 5, 1, 3, 5, 1, 2, 2, 1, 8, + 6, 5, 4, 4, 3, 7, 8, 6, 6, 6, 6, 6, 4, 7, 5, 8, 3, 1, 3, 3, 1, 1, 1, 1, 1, 1, 1, 3, 1, 3, 3, 1, 0, 1, 3, 7, 9, 9, 8, 3, @@ -3870,138 +4020,145 @@ static const yytype_uint8 yyr2[] = 1, 1, 3, 3, 3, 3, 2, 2, 1, 3, 1, 1, 1, 1, 1, 1, 1, 3, 1, 2, 2, 3, 1, 3, 5, 2, 2, 0, 6, 6, - 6, 6, 6, 6, 6, 8, 9, 8, 8, 9, - 8, 9, 9, 7, 10, 1, 1, 1, 1, 1, - 1, 2, 1, 1, 2, 3, 3, 3, 3, 2, - 1, 2, 1, 3, 2, 1, 1, 1, 1, 1, - 1, 1, 1, 8, 8, 8, 8, 8, 8, 9, - 2, 0, 1, 2, 1, 1, 1, 2, 1, 2, - 2, 1, 1, 1, 1, 1, 1, 1, 2, 2, - 1, 2, 3, 3, 3, 3, 4, 4, 3, 3, - 3, 4, 4, 3, 4, 4, 1, 1, 1, 0, - 7, 7, 10, 1, 1, 2, 4, 5, 1, 3, - 2, 2, 2, 2, 1, 2, 2, 4, 3, 2, - 2, 2, 2, 3, 2, 2, 2, 5, 5, 5, - 1, 3, 1, 2, 3, 0, 6, 6, 9, 3, - 0, 3, 0, 5, 2, 0, 3, 3, 3, 7, - 7, 10, 1, 1, 1, 1, 1, 14, 17, 1, - 0, 1, 0, 1, 0, 2, 0, 1, 3, 5, - 5, 7, 2, 0, 1, 0, 1, 1, 0, 2, - 2, 0, 9, 12, 7, 2, 0, 3, 2, 1, - 3, 1, 3, 2, 1, 1, 2, 3, 2, 1, - 3, 3, 3, 2, 2, 1, 1, 1, 1, 2, - 1, 1, 1, 1, 4, 5, 1, 3, 3, 1, - 3, 3, 5, 6, 1, 3, 2, 1, 3, 1, - 2, 4, 5, 1, 1, 1, 1, 3, 3, 2, - 2, 1, 2, 2, 2, 1, 2, 2, 2, 2, - 1, 1, 1, 3, 3, 5, 2, 0, 2, 1, - 3, 5, 1, 2, 1, 0, 4, 6, 4, 6, - 4, 6, 3, 5, 5, 5, 1, 3, 1, 3, - 2, 2, 1, 2, 1, 2, 11, 10, 10, 2, - 2, 0, 9, 2, 0, 10, 11, 11, 5, 5, - 8, 3, 3, 6, 6, 1, 1, 1, 1, 1, - 1, 3, 1, 5, 5, 6, 6, 6, 6, 6, - 8, 8, 6, 6, 7, 9, 9, 8, 10, 6, - 6, 6, 6, 6, 8, 6, 8, 6, 8, 7, - 9, 6, 8, 7, 9, 8, 10, 9, 11, 8, - 10, 9, 11, 8, 8, 7, 6, 6, 6, 6, - 8, 8, 8, 8, 6, 9, 1, 0, 2, 0, - 7, 9, 8, 7, 6, 6, 6, 6, 6, 6, - 6, 9, 9, 6, 8, 6, 8, 8, 8, 8, - 6, 8, 6, 8, 7, 9, 7, 9, 6, 7, - 1, 3, 3, 3, 1, 1, 1, 1, 1, 6, - 6, 6, 6, 6, 6, 7, 7, 6, 9, 9, - 6, 6, 6, 6, 8, 8, 8, 6, 7, 6, - 6, 5, 1, 0, 3, 3, 5, 6, 6, 6, - 8, 1, 3, 1, 5, 5, 6, 7, 4, 4, - 4, 6, 13, 1, 1, 3, 3, 1, 1, 1, - 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, - 1, 0, 3, 2, 0, 2, 2, 2, 2, 3, - 3, 2, 2, 2, 2, 3, 2, 5, 4, 3, - 3, 3, 1, 1, 0, 3, 2, 2, 1, 2, - 1, 3, 2, 1, 0, 9, 11, 12, 14, 3, - 4, 4, 0, 2, 5, 1, 0, 1, 2, 3, - 3, 3, 1, 2, 1, 1, 1, 1, 1, 1, - 0, 5, 4, 6, 4, 3, 5, 5, 4, 4, - 6, 4, 6, 6, 5, 7, 9, 6, 1, 0, - 6, 11, 11, 11, 13, 9, 11, 1, 1, 10, - 4, 2, 5, 2, 0, 4, 5, 5, 4, 6, - 1, 3, 1, 1, 1, 1, 1, 2, 4, 1, - 1, 1, 0, 1, 0, 1, 0, 3, 0, 2, - 4, 3, 5, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 3, 2, 1, 1, 1, 1, 0, - 5, 3, 0, 1, 1, 1, 1, 3, 9, 12, - 3, 0, 2, 3, 2, 3, 7, 1, 3, 1, - 4, 4, 7, 2, 1, 1, 1, 3, 2, 8, - 5, 0, 4, 3, 0, 2, 0, 7, 2, 0, - 5, 3, 0, 2, 2, 2, 3, 1, 3, 1, - 2, 1, 0, 1, 2, 0, 8, 1, 3, 3, - 5, 2, 1, 3, 7, 1, 0, 3, 2, 2, - 2, 0, 2, 2, 1, 1, 3, 3, 1, 2, - 4, 4, 2, 3, 5, 5, 1, 1, 9, 9, - 1, 2, 4, 4, 4, 2, 2, 3, 1, 3, - 6, 1, 0, 2, 0, 3, 3, 4, 4, 4, - 4, 3, 2, 1, 1, 0, 1, 1, 0, 1, - 5, 1, 0, 1, 0, 3, 1, 3, 4, 3, - 2, 2, 1, 1, 1, 0, 2, 4, 5, 4, - 2, 3, 1, 1, 1, 1, 2, 2, 1, 1, - 1, 1, 1, 1, 3, 0, 1, 3, 1, 1, - 1, 1, 1, 2, 4, 4, 5, 2, 0, 1, - 3, 1, 0, 1, 2, 3, 2, 4, 2, 3, - 2, 0, 4, 5, 2, 0, 1, 3, 2, 3, - 2, 3, 2, 3, 2, 3, 1, 4, 3, 4, - 5, 4, 5, 4, 5, 2, 4, 1, 1, 0, - 1, 4, 5, 4, 0, 2, 2, 2, 1, 1, - 0, 4, 2, 1, 2, 2, 4, 1, 3, 1, - 2, 3, 6, 4, 0, 2, 6, 2, 1, 3, - 4, 0, 2, 0, 2, 0, 2, 4, 0, 1, - 0, 1, 3, 3, 7, 12, 1, 3, 2, 3, - 3, 1, 2, 2, 2, 2, 1, 1, 3, 3, - 2, 2, 3, 5, 6, 2, 3, 3, 4, 0, - 1, 1, 1, 1, 1, 2, 4, 1, 1, 1, - 1, 2, 3, 3, 0, 1, 1, 1, 1, 1, - 2, 2, 2, 2, 2, 1, 3, 0, 1, 1, - 1, 1, 5, 2, 1, 1, 1, 1, 4, 1, - 2, 2, 1, 3, 3, 2, 1, 0, 5, 2, - 5, 2, 1, 3, 3, 0, 1, 1, 1, 1, - 1, 1, 3, 3, 3, 3, 3, 3, 3, 0, - 1, 4, 1, 3, 3, 5, 2, 2, 3, 3, - 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - 3, 2, 3, 2, 2, 3, 3, 2, 2, 3, - 5, 4, 6, 3, 5, 4, 6, 4, 6, 5, - 7, 3, 2, 4, 2, 3, 3, 4, 3, 4, - 3, 4, 5, 6, 6, 7, 6, 7, 6, 7, - 3, 4, 4, 6, 2, 3, 4, 1, 1, 3, + 6, 6, 6, 6, 6, 8, 9, 8, 6, 6, + 8, 9, 8, 9, 9, 7, 10, 1, 1, 1, + 1, 1, 1, 2, 1, 1, 2, 3, 3, 3, + 3, 2, 1, 2, 1, 3, 2, 1, 1, 1, + 1, 1, 1, 1, 1, 8, 8, 8, 8, 8, + 8, 9, 8, 8, 2, 0, 1, 2, 1, 1, + 1, 2, 1, 2, 2, 1, 1, 1, 1, 1, + 1, 1, 2, 2, 1, 2, 3, 3, 3, 3, + 4, 4, 3, 3, 3, 4, 4, 3, 4, 4, + 1, 1, 1, 0, 7, 7, 10, 1, 1, 2, + 4, 5, 1, 3, 2, 2, 2, 2, 1, 2, + 2, 4, 3, 2, 2, 2, 2, 2, 2, 3, + 2, 2, 2, 5, 5, 5, 5, 5, 1, 3, + 1, 2, 3, 0, 6, 6, 9, 3, 0, 3, + 0, 5, 2, 0, 3, 3, 3, 7, 7, 10, + 1, 1, 1, 1, 1, 1, 15, 18, 1, 0, + 1, 0, 1, 0, 2, 0, 1, 3, 4, 5, + 2, 2, 4, 4, 0, 1, 3, 2, 0, 1, + 0, 1, 1, 0, 2, 2, 0, 8, 11, 6, + 6, 2, 0, 3, 2, 1, 3, 1, 3, 2, + 1, 1, 2, 3, 2, 1, 3, 3, 3, 2, + 2, 1, 1, 1, 1, 2, 1, 1, 1, 1, + 4, 5, 1, 3, 3, 1, 3, 3, 5, 6, + 1, 3, 2, 1, 3, 1, 2, 4, 5, 1, + 1, 1, 1, 3, 3, 2, 2, 1, 2, 2, + 2, 2, 1, 2, 2, 2, 2, 1, 1, 1, + 3, 3, 5, 2, 0, 2, 1, 3, 5, 5, + 5, 1, 2, 1, 0, 4, 6, 4, 6, 4, + 6, 4, 6, 4, 6, 3, 5, 5, 5, 1, + 3, 1, 3, 2, 2, 1, 2, 1, 2, 11, + 10, 10, 2, 2, 0, 9, 2, 0, 10, 11, + 11, 5, 5, 8, 4, 4, 7, 7, 1, 1, + 1, 1, 1, 1, 3, 1, 5, 5, 6, 6, + 6, 6, 6, 8, 8, 6, 6, 7, 9, 9, + 8, 10, 6, 6, 6, 6, 6, 6, 6, 8, + 6, 8, 6, 8, 7, 9, 6, 8, 7, 9, + 8, 10, 8, 10, 9, 11, 8, 10, 9, 11, + 8, 8, 7, 6, 6, 6, 6, 8, 8, 8, + 8, 6, 9, 1, 0, 2, 0, 8, 8, 8, + 10, 9, 8, 1, 0, 6, 6, 6, 6, 6, + 6, 6, 9, 9, 6, 6, 6, 8, 6, 8, + 8, 8, 8, 6, 8, 6, 8, 7, 9, 7, + 9, 6, 7, 1, 3, 3, 3, 1, 1, 1, + 1, 1, 7, 6, 6, 6, 6, 6, 6, 7, + 7, 6, 9, 9, 6, 6, 6, 6, 6, 6, + 8, 8, 8, 6, 7, 6, 6, 5, 1, 0, + 3, 3, 5, 6, 6, 6, 8, 1, 3, 1, + 5, 5, 6, 7, 4, 4, 4, 6, 13, 1, + 1, 3, 3, 1, 1, 1, 1, 1, 1, 1, + 0, 1, 1, 1, 1, 1, 1, 0, 3, 2, + 0, 2, 2, 2, 3, 3, 3, 3, 3, 3, + 2, 3, 2, 5, 4, 3, 3, 3, 1, 1, + 0, 3, 2, 2, 1, 2, 1, 3, 2, 1, + 0, 2, 3, 0, 9, 11, 12, 14, 3, 4, + 4, 0, 2, 5, 1, 0, 1, 2, 3, 3, + 3, 1, 2, 1, 1, 1, 1, 1, 1, 0, + 5, 4, 6, 4, 3, 5, 7, 9, 1, 3, + 1, 5, 4, 4, 6, 4, 6, 6, 5, 7, + 9, 6, 1, 0, 6, 11, 11, 11, 13, 9, + 11, 1, 1, 10, 4, 2, 5, 2, 0, 6, + 5, 3, 5, 1, 3, 1, 1, 2, 1, 1, + 1, 1, 0, 1, 0, 1, 0, 1, 0, 1, + 0, 3, 0, 2, 1, 3, 1, 0, 2, 4, + 3, 5, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 3, 2, 1, 1, 1, 1, 0, 5, + 3, 0, 1, 1, 1, 1, 3, 9, 12, 3, + 0, 2, 3, 2, 3, 7, 1, 3, 1, 4, + 4, 7, 2, 1, 1, 1, 3, 2, 8, 5, + 0, 4, 3, 0, 2, 0, 7, 2, 0, 5, + 3, 0, 2, 2, 2, 3, 1, 3, 1, 2, + 1, 0, 1, 2, 0, 8, 1, 3, 3, 5, + 2, 1, 3, 7, 1, 0, 3, 2, 2, 2, + 0, 2, 2, 1, 1, 3, 3, 1, 2, 4, + 4, 2, 3, 5, 5, 1, 1, 9, 9, 1, + 2, 4, 4, 4, 2, 2, 3, 1, 3, 7, + 1, 2, 0, 1, 0, 2, 0, 3, 3, 4, + 4, 4, 4, 3, 2, 1, 1, 0, 1, 1, + 0, 1, 5, 1, 0, 1, 0, 3, 1, 3, + 4, 3, 2, 2, 1, 1, 1, 0, 2, 4, + 5, 6, 4, 5, 2, 3, 1, 1, 1, 1, + 2, 2, 1, 1, 1, 1, 1, 1, 3, 0, + 1, 3, 1, 1, 1, 1, 1, 2, 4, 4, + 5, 2, 0, 1, 3, 1, 0, 1, 2, 3, + 2, 4, 2, 3, 2, 0, 4, 5, 2, 0, + 1, 3, 2, 3, 2, 3, 2, 3, 2, 3, + 1, 4, 3, 4, 5, 4, 5, 4, 5, 2, + 4, 1, 1, 0, 1, 4, 5, 4, 0, 2, + 2, 2, 1, 1, 0, 4, 2, 1, 2, 2, + 4, 1, 3, 1, 2, 3, 6, 4, 0, 2, + 6, 2, 1, 3, 4, 0, 2, 0, 2, 0, + 2, 4, 0, 1, 0, 1, 3, 3, 7, 12, + 1, 3, 2, 3, 3, 1, 2, 2, 2, 2, + 1, 1, 3, 3, 2, 2, 3, 5, 6, 2, + 3, 3, 4, 0, 1, 1, 1, 1, 1, 2, + 4, 1, 1, 1, 1, 2, 3, 3, 0, 1, + 1, 1, 1, 1, 2, 2, 2, 2, 2, 1, + 3, 0, 1, 1, 1, 1, 5, 2, 1, 1, + 1, 1, 4, 1, 2, 2, 1, 3, 3, 2, + 1, 0, 5, 2, 5, 2, 1, 3, 3, 0, + 1, 1, 1, 1, 1, 1, 3, 3, 3, 3, + 3, 3, 3, 0, 1, 4, 1, 3, 3, 5, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, - 3, 3, 3, 3, 3, 2, 3, 2, 2, 5, - 6, 6, 7, 3, 4, 1, 1, 2, 2, 4, - 1, 1, 1, 2, 2, 2, 2, 1, 1, 4, - 3, 5, 6, 8, 6, 6, 4, 4, 1, 1, - 1, 5, 1, 1, 4, 1, 4, 1, 4, 1, - 4, 1, 1, 1, 1, 1, 1, 6, 4, 4, + 3, 3, 3, 3, 3, 2, 2, 3, 2, 3, + 3, 2, 2, 3, 5, 4, 6, 3, 5, 4, + 6, 4, 6, 5, 7, 3, 2, 4, 2, 3, + 3, 4, 3, 4, 3, 4, 5, 6, 6, 7, + 6, 7, 6, 7, 3, 4, 4, 6, 2, 3, + 4, 3, 4, 4, 5, 1, 1, 3, 2, 2, + 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 2, 3, 2, 2, 5, 6, 6, + 7, 3, 4, 1, 1, 2, 2, 4, 1, 1, + 1, 2, 2, 2, 2, 1, 1, 4, 3, 5, + 6, 8, 6, 6, 4, 4, 1, 1, 1, 5, + 1, 1, 4, 1, 4, 1, 4, 1, 4, 1, + 1, 1, 1, 1, 1, 6, 4, 4, 6, 4, 4, 4, 6, 5, 5, 5, 4, 6, 4, 4, 4, 4, 5, 7, 7, 9, 5, 4, 6, 5, 7, 7, 7, 2, 3, 3, 3, 4, 0, 4, 1, 3, 3, 1, 1, 1, 2, 2, 0, 2, - 4, 4, 6, 5, 0, 5, 0, 2, 0, 1, - 3, 3, 2, 2, 0, 6, 1, 0, 3, 0, - 2, 2, 0, 1, 4, 2, 2, 2, 2, 2, - 4, 3, 5, 4, 3, 5, 1, 1, 1, 1, + 3, 3, 4, 2, 2, 5, 0, 5, 0, 2, + 0, 1, 3, 3, 2, 2, 0, 6, 1, 0, + 3, 0, 3, 3, 3, 0, 1, 4, 2, 2, + 2, 2, 2, 3, 2, 2, 3, 0, 4, 3, + 5, 4, 3, 5, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 4, 1, 4, 1, 4, - 1, 2, 1, 2, 1, 3, 1, 3, 1, 3, - 3, 1, 3, 3, 3, 2, 1, 3, 3, 3, - 3, 0, 1, 1, 1, 1, 1, 1, 1, 1, - 4, 3, 2, 3, 0, 3, 3, 2, 2, 1, - 0, 2, 2, 3, 2, 1, 1, 3, 5, 1, - 2, 4, 2, 0, 1, 0, 1, 2, 2, 2, - 3, 5, 1, 0, 1, 2, 0, 2, 1, 0, - 1, 0, 1, 3, 3, 2, 1, 1, 1, 3, - 1, 2, 1, 3, 1, 1, 1, 1, 1, 1, - 1, 2, 1, 1, 1, 1, 1, 2, 6, 2, - 3, 5, 6, 1, 1, 1, 1, 1, 1, 2, - 2, 1, 1, 1, 1, 1, 3, 1, 1, 1, + 1, 1, 1, 4, 1, 4, 1, 4, 1, 2, + 1, 2, 1, 3, 1, 3, 1, 3, 3, 1, + 3, 3, 3, 2, 1, 3, 3, 3, 3, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 4, 3, 2, 3, 0, 3, 3, 2, + 2, 1, 0, 2, 2, 3, 2, 1, 1, 3, + 5, 1, 2, 4, 2, 0, 1, 0, 1, 2, + 2, 2, 3, 5, 1, 0, 1, 2, 0, 2, + 1, 0, 1, 0, 1, 3, 3, 2, 1, 1, + 1, 3, 1, 2, 1, 3, 1, 1, 1, 1, + 1, 1, 1, 2, 1, 1, 1, 1, 1, 2, + 6, 2, 6, 2, 3, 5, 2, 3, 5, 5, + 1, 1, 1, 1, 1, 1, 2, 2, 1, 1, + 1, 1, 1, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, @@ -4046,7 +4203,8 @@ static const yytype_uint8 yyr2[] = 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1 + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1 }; /* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state @@ -4054,3480 +4212,3417 @@ static const yytype_uint8 yyr2[] = means the default is an error. */ static const yytype_uint16 yydefact[] = { - 1622, 1404, 621, 1490, 1489, 1404, 254, 0, 1492, 0, - 1404, 417, 1096, 0, 0, 0, 0, 621, 1404, 0, - 1622, 0, 0, 0, 0, 0, 1635, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 1404, 0, 0, 1642, - 0, 0, 0, 0, 1635, 0, 1494, 0, 0, 0, - 0, 0, 2, 4, 71, 72, 31, 30, 91, 54, - 18, 62, 125, 124, 126, 41, 37, 79, 26, 28, - 38, 42, 64, 66, 44, 55, 103, 63, 24, 61, - 86, 67, 89, 49, 12, 13, 50, 14, 51, 15, - 52, 16, 99, 73, 92, 35, 60, 23, 43, 69, - 70, 5, 45, 81, 77, 11, 56, 57, 59, 83, - 84, 85, 108, 87, 120, 40, 117, 96, 97, 114, - 98, 115, 9, 100, 53, 17, 111, 110, 112, 80, - 46, 82, 68, 90, 109, 27, 113, 19, 20, 22, - 21, 58, 29, 65, 32, 88, 116, 106, 102, 121, - 119, 127, 104, 74, 7, 8, 93, 6, 25, 48, - 10, 34, 33, 47, 39, 123, 36, 1492, 95, 107, - 94, 75, 101, 78, 105, 122, 76, 118, 1595, 1594, - 1644, 1598, 1621, 0, 1610, 1403, 1402, 1388, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 620, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1414, 2235, 2250, 2251, 2252, 2253, 2254, 2255, - 2256, 2257, 388, 2258, 2259, 2260, 2261, 2262, 2263, 2264, - 2265, 2266, 2267, 2268, 2532, 2533, 2534, 2535, 2269, 2270, - 2271, 2272, 2273, 2274, 2275, 2536, 2537, 2276, 2277, 2278, - 2279, 2280, 2538, 2281, 2282, 2283, 2284, 2285, 2286, 2287, - 2288, 2289, 2290, 2291, 2292, 2293, 2294, 2295, 2296, 2297, - 2298, 2299, 2300, 2301, 2302, 2303, 2539, 2540, 2304, 2305, - 2306, 2307, 2308, 2309, 2310, 2311, 2312, 2313, 2314, 2315, - 2316, 2317, 2318, 2319, 2320, 2321, 2322, 2323, 2324, 2325, - 2326, 2327, 2328, 2329, 2330, 2541, 2331, 2332, 2333, 2542, - 2334, 2335, 2336, 2543, 2337, 2338, 2339, 2340, 2341, 2342, - 2343, 2344, 2544, 2545, 2345, 2346, 2347, 2348, 2349, 2350, - 2351, 2352, 2353, 2354, 2355, 2356, 2357, 2358, 2359, 2360, - 2361, 2546, 2362, 2363, 2364, 2365, 2547, 2548, 2549, 2366, - 2367, 2368, 2369, 2370, 2371, 2372, 2373, 2550, 2374, 2375, - 2376, 2377, 2378, 2379, 2380, 2381, 2382, 2383, 2384, 2385, - 2386, 2387, 2388, 2389, 2390, 2391, 2392, 2393, 2551, 2552, - 2394, 2395, 2396, 2553, 2397, 2398, 2399, 2554, 2400, 2555, - 2401, 2402, 2403, 2404, 2405, 2406, 2407, 2408, 2409, 2556, - 2410, 2557, 2411, 2412, 2413, 2414, 2415, 2416, 2417, 2418, - 2419, 2420, 2421, 2558, 2422, 2559, 2425, 2423, 2424, 2426, - 2427, 2428, 2429, 2430, 2431, 2432, 2433, 2434, 2560, 2435, - 2436, 2437, 2438, 2439, 2440, 2441, 2442, 2443, 2444, 2445, - 2446, 2447, 2448, 2449, 2450, 2451, 2452, 2453, 2454, 2455, - 2561, 2456, 2457, 2458, 2459, 2460, 2461, 2462, 2463, 2464, - 2465, 2466, 2467, 2468, 2469, 2470, 2471, 2562, 2472, 2473, - 2474, 2475, 2563, 2476, 2477, 2478, 2479, 2480, 2481, 2482, - 2483, 2484, 2485, 2486, 2487, 2488, 2564, 2489, 2490, 2491, - 2492, 2493, 2494, 2495, 2496, 2565, 2566, 2497, 2498, 2567, - 2499, 2568, 2500, 2501, 2502, 2503, 2504, 2505, 2506, 2507, - 2508, 2509, 2510, 2511, 2512, 2513, 2514, 2515, 2516, 2569, - 2570, 2517, 2518, 2519, 2520, 2521, 2522, 2523, 2524, 2525, - 2526, 2527, 2528, 2571, 2572, 2573, 2574, 2575, 2576, 2577, - 2578, 2579, 2580, 2581, 2529, 2530, 2531, 387, 1585, 2194, - 2236, 2237, 1491, 1471, 621, 0, 1391, 416, 1622, 0, - 0, 0, 0, 0, 0, 0, 0, 849, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 176, 0, 0, 0, 0, 442, 441, 0, 0, 0, - 1069, 447, 0, 0, 0, 0, 0, 609, 1534, 2423, - 1532, 1586, 255, 258, 259, 256, 257, 2217, 0, 1191, - 1192, 1194, 0, 0, 0, 1204, 889, 890, 0, 0, - 0, 898, 0, 0, 0, 887, 0, 0, 0, 903, - 900, 0, 904, 901, 884, 902, 891, 0, 883, 0, - 0, 1204, 905, 0, 0, 885, 0, 0, 0, 0, - 1392, 1531, 448, 1622, 0, 1508, 1509, 1510, 1492, 1499, - 1511, 1504, 1506, 1505, 1507, 1503, 2216, 2251, 1009, 1009, - 1009, 1009, 1006, 1007, 1009, 1009, 1009, 2442, 0, 0, - 988, 0, 990, 2218, 1009, 1014, 509, 509, 509, 0, - 1013, 1018, 509, 0, 1385, 1423, 2199, 1634, 0, 989, - 1384, 2497, 1522, 0, 0, 1219, 1215, 1217, 1218, 1216, - 0, 0, 0, 2458, 1396, 239, 2469, 2565, 2497, 238, - 233, 234, 206, 2255, 0, 0, 1013, 0, 1393, 1394, - 971, 1641, 1639, 0, 2181, 2274, 2289, 2377, 230, 2453, - 2459, 2469, 2565, 2497, 2528, 185, 195, 190, 0, 248, - 2469, 2565, 2497, 244, 1414, 0, 1611, 1743, 2190, 0, - 1387, 1386, 1493, 0, 1496, 0, 2437, 1615, 1618, 1498, - 1616, 1607, 0, 0, 1, 1622, 1487, 1638, 1638, 0, - 1638, 0, 1599, 1607, 1602, 1606, 0, 0, 0, 0, - 2235, 2582, 2583, 2584, 2585, 2586, 2587, 2588, 2589, 2590, - 2591, 2592, 2593, 2594, 2595, 2596, 2597, 2598, 2599, 2600, - 2601, 2602, 2603, 2604, 0, 0, 0, 2200, 2236, 2240, - 0, 908, 0, 1426, 2195, 1055, 0, 0, 0, 0, - 0, 0, 0, 1105, 1104, 2241, 2223, 2224, 0, 2221, - 2222, 2242, 2243, 2244, 0, 2350, 0, 0, 0, 2089, - 2100, 2101, 2102, 2278, 2334, 2097, 2098, 2099, 2091, 2092, - 2093, 2094, 2095, 2096, 2103, 0, 0, 1186, 2090, 0, - 2350, 0, 0, 155, 0, 132, 0, 0, 2350, 0, - 0, 0, 0, 0, 0, 0, 2350, 0, 0, 0, - 0, 0, 155, 2382, 0, 132, 2350, 0, 0, 1408, - 0, 0, 0, 1410, 1413, 1389, 1474, 0, 2190, 0, - 0, 0, 942, 935, 0, 943, 950, 0, 0, 952, - 0, 0, 936, 0, 0, 0, 0, 955, 956, 0, - 957, 937, 958, 938, 959, 939, 960, 0, 0, 0, - 0, 940, 0, 0, 0, 1400, 0, 1524, 1526, 1525, - 1523, 509, 0, 0, 0, 0, 2350, 0, 0, 132, - 1459, 0, 2350, 132, 0, 0, 446, 445, 132, 2221, - 444, 443, 2278, 2334, 0, 1095, 0, 1343, 132, 2350, - 0, 178, 2350, 693, 2350, 1498, 0, 624, 0, 0, - 804, 2382, 132, 0, 0, 0, 0, 0, 0, 1072, - 0, 0, 0, 608, 621, 1535, 1533, 0, 1195, 232, - 231, 1193, 896, 2350, 1137, 342, 342, 0, 0, 2350, - 1445, 2238, 1818, 1847, 1825, 1847, 1847, 1814, 1814, 2318, - 1827, 2350, 1815, 1816, 1852, 0, 1847, 1814, 1819, 0, - 1817, 1855, 1855, 1842, 342, 912, 1799, 1800, 1801, 1802, - 1828, 1829, 1803, 1834, 1835, 1839, 1804, 1869, 1814, 2239, - 897, 0, 888, 2350, 342, 1101, 2350, 2225, 165, 0, - 886, 2278, 2334, 2350, 342, 1188, 0, 2350, 161, 2350, - 342, 2350, 625, 0, 0, 2350, 342, 2350, 2382, 163, - 0, 2350, 342, 906, 2350, 342, 2192, 2350, 0, 0, - 1527, 0, 1501, 2569, 1516, 0, 1512, 1519, 1515, 1622, - 1009, 1008, 0, 1009, 0, 1009, 0, 1009, 0, 1009, - 0, 0, 0, 1009, 2219, 2220, 991, 0, 1015, 0, - 0, 1022, 1021, 1020, 0, 0, 0, 1023, 0, 1747, - 1562, 0, 1382, 1399, 0, 0, 0, 1072, 1222, 0, - 1220, 1211, 1212, 1395, 237, 235, 0, 0, 0, 0, - 0, 0, 1401, 0, 0, 0, 0, 2203, 2205, 2206, - 2104, 2176, 0, 2533, 2534, 2535, 2165, 0, 2536, 2537, - 2538, 2584, 2005, 1992, 2001, 2006, 1993, 1995, 2002, 2539, - 2540, 1937, 2541, 2542, 2214, 2543, 2544, 2545, 2547, 2548, - 2549, 2550, 1997, 1999, 2551, 2552, 0, 2215, 2554, 2555, - 2406, 2557, 2558, 2560, 2561, 2003, 2563, 2564, 2565, 2566, - 2567, 2568, 2213, 0, 2004, 2570, 2572, 2573, 2574, 2575, - 2577, 2578, 2579, 2580, 0, 0, 0, 2187, 2176, 0, - 1972, 0, 1807, 1808, 1830, 1831, 1809, 1836, 1837, 1810, - 0, 2186, 1872, 2054, 1971, 1988, 0, 1977, 1978, 0, - 1970, 1965, 1624, 2182, 0, 1966, 2202, 2204, 2166, 1624, - 2180, 198, 250, 0, 251, 2188, 2469, 186, 229, 200, - 228, 2234, 2233, 201, 2230, 2229, 199, 0, 2276, 187, - 0, 0, 188, 0, 0, 0, 0, 247, 245, 0, - 1390, 0, 1745, 1744, 2173, 0, 2174, 2191, 917, 1486, - 1484, 1485, 1483, 0, 1480, 1482, 1495, 1492, 2114, 0, - 1617, 0, 0, 0, 1597, 1596, 3, 1498, 1636, 1637, - 0, 0, 0, 0, 0, 0, 0, 0, 1692, 1652, - 1653, 1655, 1689, 1693, 1701, 0, 1603, 0, 0, 1749, - 0, 0, 0, 0, 0, 0, 1136, 2201, 0, 0, - 0, 0, 0, 909, 0, 0, 0, 1432, 0, 1434, - 1435, 1436, 0, 0, 1437, 1438, 1426, 241, 1444, 1442, - 1425, 1427, 1440, 0, 0, 0, 0, 0, 0, 0, - 1451, 0, 169, 170, 0, 637, 621, 0, 2350, 0, - 0, 0, 0, 0, 1144, 1151, 0, 0, 0, 0, - 0, 0, 0, 0, 1145, 1143, 1146, 243, 1155, 1172, - 1175, 0, 1103, 1106, 0, 0, 0, 0, 0, 1277, - 0, 0, 0, 1277, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 266, 278, 337, - 600, 0, 0, 0, 603, 0, 2350, 0, 0, 0, - 0, 1190, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 130, 131, 136, 0, 0, - 0, 0, 0, 0, 0, 586, 599, 0, 0, 0, - 0, 0, 596, 0, 0, 132, 270, 576, 582, 0, - 0, 0, 700, 699, 0, 0, 0, 0, 1359, 1358, - 0, 0, 0, 0, 1449, 1448, 0, 0, 0, 0, - 0, 1277, 0, 260, 262, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 380, 381, 0, 0, 0, 136, 0, 0, 0, 0, - 272, 0, 0, 1409, 1406, 1407, 0, 1412, 0, 1470, - 0, 949, 0, 0, 0, 0, 951, 0, 944, 0, - 0, 941, 2278, 2334, 0, 0, 0, 0, 0, 0, - 0, 954, 0, 0, 0, 419, 0, 0, 801, 0, - 0, 0, 0, 0, 0, 812, 0, 1426, 1458, 0, - 0, 0, 630, 0, 2350, 0, 134, 850, 0, 802, - 447, 0, 0, 0, 1167, 1342, 134, 0, 0, 172, - 0, 0, 697, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 742, 741, 0, 0, 0, 803, 0, 0, - 134, 0, 2350, 579, 2350, 0, 509, 509, 0, 0, - 1071, 1074, 0, 0, 0, 0, 1589, 1591, 1590, 0, - 1588, 0, 340, 341, 0, 1178, 799, 1203, 0, 0, - 1846, 1833, 1841, 1840, 0, 1823, 1822, 1821, 0, 1820, - 0, 1847, 1847, 1845, 1824, 1799, 0, 0, 0, 1851, - 0, 1849, 0, 879, 1795, 1791, 0, 1858, 1859, 1860, - 1857, 1870, 1856, 0, 1805, 1861, 1814, 1811, 899, 0, - 0, 1176, 0, 0, 2350, 342, 2350, 0, 2350, 0, - 0, 0, 1180, 342, 0, 0, 1360, 0, 895, 893, - 892, 894, 0, 0, 877, 0, 0, 0, 2350, 342, - 0, 0, 872, 0, 0, 874, 0, 0, 0, 0, - 1622, 0, 218, 219, 217, 1517, 220, 1518, 1514, 1500, - 0, 999, 0, 1003, 0, 994, 0, 1000, 0, 995, - 992, 993, 0, 998, 0, 0, 510, 512, 0, 0, - 2301, 2317, 0, 2340, 2370, 2371, 2459, 2465, 0, 2492, - 2502, 0, 1024, 1050, 1019, 711, 0, 0, 1572, 1383, - 2121, 0, 1622, 0, 0, 0, 0, 236, 207, 0, - 0, 0, 1052, 2458, 1398, 970, 621, 0, 1968, 0, - 1975, 1976, 2164, 0, 0, 0, 0, 0, 0, 1974, - 2131, 0, 0, 0, 0, 0, 1897, 0, 0, 0, - 2144, 0, 2150, 0, 0, 1934, 0, 0, 0, 0, - 0, 0, 0, 0, 1898, 1876, 1877, 1967, 1972, 2114, - 0, 1973, 2209, 0, 1869, 2185, 2104, 0, 2100, 2101, - 2102, 0, 0, 0, 2179, 0, 2112, 0, 0, 1912, - 2110, 1914, 0, 0, 0, 0, 2097, 2098, 2099, 2091, - 2092, 2093, 2094, 2095, 2096, 1891, 2108, 1894, 0, 0, - 2056, 0, 1893, 0, 0, 1705, 0, 2207, 2167, 1705, - 252, 253, 249, 0, 0, 203, 202, 0, 222, 226, - 227, 197, 225, 0, 221, 205, 2045, 2044, 204, 196, - 193, 212, 191, 208, 210, 211, 194, 192, 246, 0, - 2172, 0, 2245, 2605, 2606, 2607, 2608, 2609, 2610, 2611, - 2612, 2613, 2614, 2615, 2616, 2617, 2618, 2619, 2620, 2621, - 2622, 2623, 2624, 2625, 2626, 2627, 2628, 2629, 2630, 2631, - 2632, 2633, 2634, 2635, 2636, 2637, 2638, 2639, 2640, 2641, - 2642, 2643, 2644, 2645, 2646, 2647, 2648, 2649, 2650, 2651, - 2652, 2653, 2654, 2655, 2656, 2657, 2658, 2659, 2660, 2661, - 2662, 2663, 2664, 2665, 2666, 2667, 2668, 2669, 2670, 2671, - 2672, 2673, 2674, 2675, 2676, 2677, 2678, 2679, 2680, 2681, - 2169, 2168, 2197, 2246, 2247, 2248, 2249, 2175, 0, 0, - 342, 1478, 0, 1475, 1702, 0, 1619, 0, 0, 1488, - 1614, 1613, 1645, 1646, 1088, 1612, 1672, 1673, 0, 0, - 0, 0, 1698, 1696, 1663, 1656, 1662, 0, 0, 1660, - 0, 1664, 1872, 1691, 1601, 1650, 1651, 1654, 1600, 0, - 1694, 0, 1575, 1692, 1655, 1559, 0, 1537, 0, 1750, - 0, 0, 0, 0, 0, 1116, 1118, 0, 1117, 0, - 1120, 0, 1129, 0, 0, 1115, 1134, 0, 1123, 1121, - 0, 1447, 0, 0, 910, 0, 0, 0, 0, 1433, - 0, 0, 2492, 240, 1436, 1441, 1428, 1439, 0, 0, - 0, 0, 0, 1054, 1053, 0, 0, 1076, 0, 0, - 0, 1454, 498, 0, 339, 0, 0, 0, 0, 0, - 0, 0, 0, 797, 794, 0, 0, 793, 0, 635, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 673, 0, 1277, 0, 705, 0, 1153, 0, 0, 1152, - 0, 1156, 0, 0, 1154, 1149, 1150, 2459, 2469, 2497, - 242, 1174, 0, 1173, 1171, 1098, 0, 1099, 0, 0, - 0, 0, 0, 2327, 2350, 282, 301, 0, 1276, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 324, 0, 0, 327, 326, 0, - 0, 0, 0, 0, 331, 310, 0, 311, 0, 0, - 330, 0, 0, 601, 602, 0, 0, 0, 0, 1277, - 0, 274, 0, 0, 0, 0, 0, 0, 0, 1187, - 0, 728, 0, 0, 0, 0, 0, 1346, 0, 0, - 158, 0, 153, 157, 0, 0, 0, 0, 584, 585, - 598, 0, 589, 590, 587, 591, 592, 0, 0, 0, - 0, 0, 0, 0, 583, 0, 0, 695, 694, 698, - 0, 0, 0, 1355, 0, 1167, 0, 0, 1354, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1224, - 1223, 0, 0, 0, 0, 0, 0, 840, 0, 0, - 0, 0, 0, 0, 0, 0, 160, 715, 0, 714, - 0, 154, 159, 0, 0, 0, 0, 0, 0, 0, - 216, 1405, 1411, 1473, 2198, 1472, 0, 0, 0, 0, - 953, 0, 0, 0, 0, 0, 0, 0, 945, 946, - 947, 948, 0, 0, 0, 0, 0, 394, 0, 0, - 0, 2238, 0, 828, 800, 0, 0, 0, 814, 0, - 817, 820, 0, 1424, 466, 0, 0, 627, 673, 0, - 0, 450, 167, 0, 0, 0, 0, 730, 0, 0, - 0, 1341, 129, 176, 178, 448, 0, 177, 179, 181, - 182, 183, 180, 184, 0, 692, 696, 0, 0, 0, - 0, 623, 0, 0, 0, 0, 0, 743, 747, 746, - 750, 748, 0, 744, 0, 0, 1770, 0, 0, 152, - 0, 0, 574, 578, 0, 0, 0, 0, 450, 550, - 353, 2350, 0, 509, 0, 2350, 0, 1073, 0, 0, - 0, 0, 0, 0, 0, 0, 1587, 342, 1138, 0, - 1446, 0, 0, 0, 342, 1844, 1843, 1796, 1792, 0, - 0, 0, 0, 913, 0, 0, 2228, 2227, 0, 0, - 0, 0, 0, 0, 0, 1812, 342, 1102, 166, 2226, - 0, 881, 0, 0, 0, 0, 342, 1189, 869, 162, - 342, 626, 0, 342, 164, 0, 0, 0, 618, 342, - 907, 342, 2193, 0, 342, 1530, 2350, 509, 1502, 1513, - 996, 1005, 1004, 1002, 1001, 997, 0, 1016, 0, 508, - 0, 0, 0, 1030, 1031, 0, 0, 1029, 1032, 0, - 1034, 1026, 1025, 1035, 1036, 0, 0, 1052, 709, 0, - 0, 0, 0, 1569, 0, 1567, 0, 1748, 1571, 1560, - 1521, 0, 1520, 0, 567, 0, 0, 1221, 0, 0, - 1013, 0, 0, 342, 1397, 0, 972, 978, 0, 0, - 0, 0, 0, 0, 981, 982, 983, 974, 984, 975, - 985, 0, 976, 0, 0, 0, 0, 2177, 2125, 0, - 2126, 0, 0, 2163, 2159, 0, 0, 0, 0, 0, - 2132, 0, 2135, 2136, 2137, 2134, 2138, 2133, 0, 0, - 0, 2139, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 2561, 0, 0, 0, 0, 1938, 0, 0, 2084, - 0, 2114, 2149, 0, 0, 0, 0, 0, 0, 2114, - 2155, 0, 0, 0, 0, 2043, 0, 2040, 0, 0, - 0, 0, 2176, 0, 0, 0, 2210, 1873, 1887, 1888, - 1889, 1895, 2184, 0, 2178, 0, 0, 1874, 1903, 0, - 2156, 1930, 0, 1935, 1918, 0, 1911, 0, 1916, 1920, - 1899, 0, 1896, 0, 2179, 2113, 0, 2111, 0, 1884, - 1885, 1886, 1878, 1879, 1880, 1881, 1882, 1883, 1890, 1892, - 2088, 2086, 2087, 0, 0, 0, 2064, 0, 0, 1915, - 2343, 2377, 0, 1635, 1635, 1635, 1623, 1633, 2183, 0, - 1765, 0, 0, 0, 0, 1980, 0, 2118, 1644, 2116, - 1121, 1765, 2189, 0, 0, 1869, 0, 1746, 2170, 2173, - 915, 916, 914, 1498, 1481, 1477, 1476, 2115, 1497, 1622, - 0, 1086, 1087, 0, 1091, 2561, 2456, 0, 0, 0, - 0, 1665, 1699, 0, 1690, 0, 2203, 1666, 2202, 1667, - 1670, 1671, 1661, 1700, 1573, 0, 1695, 1605, 1604, 0, - 1768, 0, 0, 0, 1551, 1539, 0, 1751, 0, 1705, - 1577, 0, 2176, 1703, 1319, 1225, 1284, 1119, 0, 1814, - 1130, 0, 1114, 0, 1113, 1814, 0, 1131, 0, 1814, - 1320, 1226, 1285, 911, 1321, 1227, 1286, 1322, 1228, 1443, - 1431, 1430, 1429, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 778, 2350, 342, - 1452, 1323, 0, 1229, 338, 1453, 1287, 1457, 796, 795, - 0, 0, 1288, 0, 636, 0, 640, 0, 642, 643, - 644, 0, 0, 0, 645, 0, 2278, 2334, 647, 650, - 657, 662, 652, 0, 0, 664, 658, 0, 0, 0, - 0, 0, 0, 670, 675, 0, 0, 0, 0, 0, - 0, 0, 1147, 1148, 1324, 1232, 0, 1289, 1097, 0, - 1233, 168, 0, 0, 267, 2350, 284, 0, 677, 778, - 1279, 308, 0, 0, 323, 318, 319, 317, 2350, 342, - 2350, 342, 0, 0, 0, 0, 0, 320, 315, 316, - 312, 0, 0, 325, 2254, 2319, 2470, 0, 681, 683, - 0, 688, 328, 1251, 349, 348, 347, 0, 332, 0, - 354, 357, 329, 306, 309, 307, 303, 279, 0, 0, - 0, 0, 0, 0, 0, 0, 2196, 0, 0, 1182, - 0, 1327, 1290, 0, 1310, 0, 0, 0, 0, 722, - 1347, 1349, 1339, 1239, 1348, 156, 1266, 145, 0, 0, - 141, 0, 0, 0, 0, 135, 0, 1330, 1240, 0, - 0, 271, 577, 588, 593, 1245, 597, 594, 1300, 595, - 1337, 1241, 1333, 1269, 1295, 1340, 1356, 1242, 1167, 1351, - 1353, 0, 1277, 0, 261, 263, 0, 281, 0, 1243, - 0, 1293, 1332, 1268, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1460, 0, 0, 0, 0, 0, 0, - 342, 0, 0, 0, 1279, 2350, 342, 1331, 0, 1274, - 0, 1308, 0, 382, 0, 1267, 0, 0, 273, 1247, - 1302, 0, 0, 214, 213, 215, 962, 922, 961, 0, - 2317, 0, 921, 923, 0, 0, 0, 924, 0, 0, - 0, 0, 920, 918, 919, 393, 0, 418, 391, 392, - 394, 0, 0, 827, 0, 0, 0, 0, 816, 0, - 0, 0, 1450, 0, 132, 634, 0, 0, 0, 629, - 672, 677, 0, 0, 0, 0, 449, 453, 457, 458, - 459, 0, 0, 0, 0, 146, 133, 0, 858, 0, - 509, 0, 732, 1345, 1344, 1166, 0, 178, 171, 0, - 0, 693, 0, 1498, 0, 0, 353, 811, 809, 808, - 810, 0, 0, 0, 832, 807, 0, 1769, 1771, 0, - 0, 0, 0, 0, 0, 567, 452, 0, 0, 512, - 0, 0, 554, 0, 0, 0, 0, 353, 0, 0, - 0, 1108, 0, 1126, 1109, 0, 0, 0, 0, 1160, - 1167, 1161, 1139, 0, 0, 606, 1592, 1593, 0, 1179, - 0, 0, 1813, 1826, 880, 0, 1854, 1853, 1855, 1855, - 0, 1797, 0, 1838, 1863, 1864, 1865, 1866, 1867, 1868, - 0, 1862, 1806, 1177, 342, 0, 342, 0, 342, 1181, - 1361, 0, 878, 0, 0, 342, 871, 873, 0, 875, - 0, 1017, 511, 0, 0, 0, 0, 1028, 604, 1033, - 0, 1045, 1040, 1042, 0, 1046, 708, 0, 0, 1570, - 1563, 1565, 1564, 0, 0, 1561, 2122, 870, 0, 573, - 1213, 1214, 0, 0, 342, 0, 1047, 0, 0, 979, - 973, 0, 0, 977, 0, 980, 0, 0, 1640, 2123, - 2124, 0, 0, 0, 2160, 0, 0, 2018, 0, 1994, - 1996, 0, 0, 2008, 0, 2019, 1979, 2020, 1998, 2000, - 0, 2105, 0, 0, 2009, 0, 1940, 1941, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1955, 1958, 1957, 2010, 2083, - 0, 0, 2147, 2148, 2011, 0, 0, 2154, 0, 0, - 0, 2016, 2021, 0, 0, 0, 0, 2027, 0, 2048, - 0, 0, 0, 1969, 2115, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1936, 1919, 1913, 0, 1917, 1921, - 0, 0, 0, 1907, 0, 0, 1905, 1931, 1901, 0, - 0, 1932, 0, 0, 0, 1987, 0, 0, 1635, 1635, - 1635, 1635, 1632, 0, 0, 0, 0, 2456, 2581, 0, - 1729, 1704, 1706, 1716, 1729, 1734, 1729, 1989, 1763, 1990, - 0, 2190, 0, 1675, 1644, 1644, 1644, 1986, 0, 0, - 0, 0, 1643, 1675, 189, 0, 223, 209, 2172, 0, - 1479, 0, 1647, 0, 2106, 1091, 0, 1649, 1669, 1668, - 0, 1659, 1697, 1657, 1574, 1558, 0, 1556, 1543, 1545, - 1544, 0, 0, 1546, 2176, 0, 1556, 1538, 1582, 0, - 0, 1768, 0, 1581, 0, 1814, 1111, 1112, 0, 1135, - 0, 1057, 1058, 0, 1056, 0, 0, 0, 497, 1075, - 0, 0, 0, 778, 0, 0, 501, 0, 1455, 0, - 1338, 1265, 638, 639, 0, 651, 0, 660, 659, 0, - 0, 0, 0, 0, 0, 0, 646, 666, 610, 667, - 669, 0, 0, 668, 671, 674, 1277, 0, 706, 1253, - 0, 1306, 1141, 1280, 0, 1100, 0, 0, 0, 0, - 0, 0, 466, 302, 0, 0, 0, 362, 0, 286, - 294, 360, 300, 0, 1283, 334, 0, 305, 0, 298, - 321, 313, 322, 314, 333, 335, 0, 685, 686, 684, - 680, 0, 687, 689, 0, 351, 0, 0, 0, 1326, - 0, 1277, 0, 275, 0, 1249, 0, 1304, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1309, - 0, 0, 0, 0, 727, 0, 724, 0, 0, 138, - 2232, 2231, 137, 0, 144, 0, 0, 0, 0, 0, - 1357, 0, 0, 0, 0, 0, 0, 0, 280, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 383, 344, 0, 835, - 0, 0, 0, 385, 0, 0, 0, 0, 0, 1325, - 1234, 0, 0, 0, 933, 0, 0, 0, 0, 0, - 0, 396, 397, 132, 395, 0, 0, 826, 2406, 2091, - 2092, 824, 830, 821, 823, 825, 822, 0, 829, 778, - 0, 0, 813, 818, 819, 0, 0, 0, 0, 0, - 481, 0, 0, 0, 472, 0, 0, 1167, 465, 468, - 469, 0, 0, 630, 633, 631, 632, 665, 0, 452, - 488, 536, 0, 148, 0, 0, 149, 147, 0, 0, - 353, 729, 0, 726, 0, 174, 448, 0, 697, 0, - 0, 0, 1167, 622, 749, 752, 745, 0, 831, 833, - 805, 0, 677, 0, 0, 579, 0, 509, 1531, 562, - 0, 538, 452, 536, 548, 547, 549, 0, 556, 352, - 0, 0, 567, 556, 0, 0, 1076, 1107, 0, 0, - 0, 1157, 1162, 1158, 0, 0, 1122, 0, 1159, 1140, - 1094, 1377, 1378, 1375, 1376, 0, 0, 0, 1584, 0, - 1832, 0, 1850, 1848, 1793, 1798, 1871, 882, 0, 865, - 0, 867, 342, 716, 0, 619, 342, 0, 0, 0, - 0, 1027, 0, 1043, 0, 0, 1010, 1049, 0, 0, - 1568, 1566, 565, 0, 1052, 0, 1011, 1051, 0, 0, - 0, 0, 0, 0, 0, 2127, 0, 2162, 2158, 0, - 1991, 2129, 2130, 2128, 0, 2142, 2141, 2084, 0, 0, - 1939, 1951, 1952, 1953, 2143, 0, 1963, 0, 0, 1948, - 1949, 1950, 1942, 1943, 1944, 1945, 1946, 1947, 1954, 1956, - 2152, 2151, 2145, 2146, 0, 2013, 2014, 2015, 2153, 2022, - 0, 2269, 2049, 2026, 2042, 2041, 0, 0, 0, 2029, - 0, 0, 2038, 0, 2085, 1869, 2211, 1875, 0, 0, - 1904, 2157, 1922, 0, 0, 0, 1900, 2105, 0, 0, - 0, 0, 0, 1909, 0, 0, 0, 2067, 2062, 2063, - 2081, 0, 0, 0, 0, 0, 0, 1626, 1625, 1631, - 1729, 1734, 1729, 0, 0, 1607, 0, 1716, 0, 1728, - 1714, 1727, 0, 0, 1740, 1738, 0, 1740, 0, 1740, - 0, 1708, 0, 1730, 1710, 1727, 1712, 0, 1755, 0, - 2191, 1764, 0, 1688, 0, 0, 0, 0, 2119, 2120, - 0, 2117, 1981, 1688, 0, 2171, 1620, 0, 1648, 1089, - 1090, 1658, 2297, 1766, 0, 1557, 0, 0, 0, 1548, - 1554, 1536, 0, 0, 1578, 1556, 1579, 1132, 0, 0, - 1124, 1063, 1066, 1064, 1062, 1065, 0, 0, 0, 778, - 0, 0, 517, 0, 1083, 1083, 0, 0, 503, 559, - 1167, 781, 0, 0, 0, 779, 342, 1230, 0, 661, - 0, 0, 656, 654, 653, 655, 0, 611, 1336, 1231, - 0, 0, 0, 0, 1142, 0, 0, 1252, 0, 283, - 0, 462, 0, 295, 0, 291, 0, 1278, 0, 0, - 0, 0, 290, 364, 0, 361, 0, 342, 342, 336, - 682, 350, 355, 356, 359, 0, 0, 0, 0, 0, - 1282, 0, 0, 0, 0, 0, 0, 0, 859, 842, - 0, 0, 860, 861, 0, 0, 0, 1184, 1185, 1183, - 1311, 1312, 1317, 1314, 1313, 1316, 1318, 1315, 0, 1237, - 0, 0, 720, 142, 139, 140, 143, 1263, 1246, 1301, - 1352, 0, 0, 0, 1244, 0, 1294, 0, 1259, 1255, - 0, 0, 0, 0, 0, 1335, 1273, 1299, 1334, 1271, - 1297, 1270, 1296, 1272, 1298, 0, 1264, 0, 1773, 839, - 0, 0, 0, 342, 342, 838, 718, 1248, 1303, 0, - 0, 925, 0, 0, 927, 928, 0, 930, 401, 421, - 738, 798, 0, 0, 815, 777, 0, 470, 0, 476, - 479, 0, 0, 483, 484, 482, 471, 1167, 509, 558, - 0, 0, 788, 0, 628, 0, 450, 0, 485, 0, - 0, 454, 151, 150, 0, 0, 0, 733, 737, 735, - 734, 736, 731, 0, 722, 178, 2350, 0, 0, 0, - 0, 560, 1350, 0, 762, 806, 0, 1772, 712, 0, - 353, 575, 0, 0, 0, 450, 567, 0, 455, 460, - 461, 466, 0, 550, 537, 0, 538, 0, 0, 564, - 1422, 0, 568, 570, 0, 0, 0, 1110, 1127, 1128, - 0, 0, 1167, 0, 0, 0, 0, 613, 342, 1794, - 342, 342, 1210, 0, 876, 1039, 1038, 1037, 605, 0, - 1041, 710, 0, 566, 342, 0, 987, 967, 986, 966, - 968, 0, 965, 963, 964, 2161, 2007, 2017, 2140, 2083, - 2115, 0, 0, 1964, 0, 0, 2012, 2571, 0, 0, - 0, 0, 2046, 2047, 2028, 0, 2396, 2033, 0, 0, - 0, 2212, 1928, 1926, 1923, 0, 1924, 1908, 0, 0, - 1906, 1902, 0, 1933, 2053, 0, 2069, 2066, 2080, 2115, - 1630, 1629, 1628, 1627, 1715, 1711, 1713, 0, 2576, 0, - 1718, 1725, 0, 1707, 0, 1739, 1735, 0, 1736, 0, - 0, 1737, 0, 0, 1709, 0, 1725, 0, 1762, 1644, - 0, 0, 2058, 1984, 1985, 1982, 1644, 2208, 2058, 224, - 0, 0, 1555, 1540, 0, 1541, 1547, 0, 0, 0, - 0, 1583, 1576, 1125, 1133, 0, 0, 0, 499, 0, - 1167, 0, 0, 0, 1085, 1085, 0, 1167, 558, 783, - 782, 785, 780, 784, 1456, 0, 648, 649, 663, 1254, - 0, 1307, 1261, 0, 1572, 285, 0, 678, 0, 0, - 287, 363, 365, 288, 289, 292, 344, 304, 297, 0, - 0, 0, 1250, 0, 1305, 1257, 1328, 1235, 1291, 0, - 0, 848, 0, 0, 0, 0, 1329, 1236, 1292, 0, - 0, 0, 0, 1572, 0, 0, 0, 0, 0, 0, - 0, 1465, 0, 1281, 343, 837, 836, 344, 384, 1275, - 0, 926, 931, 932, 929, 0, 390, 398, 422, 132, - 0, 0, 1201, 1201, 0, 778, 0, 0, 467, 480, - 0, 558, 516, 0, 473, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 725, - 724, 173, 0, 450, 0, 677, 0, 756, 757, 751, - 753, 0, 764, 768, 834, 0, 0, 0, 567, 452, - 0, 0, 1528, 451, 0, 0, 463, 0, 554, 538, - 550, 0, 551, 0, 555, 0, 1415, 0, 0, 0, - 0, 1163, 0, 1169, 0, 1121, 1092, 1164, 0, 1765, - 0, 0, 0, 0, 617, 1202, 866, 868, 717, 1044, - 0, 1048, 342, 969, 2085, 1959, 0, 0, 0, 0, - 2023, 0, 2024, 2051, 2050, 2030, 2034, 0, 2031, 2032, - 1925, 1929, 1927, 1910, 2055, 0, 1644, 2082, 1758, 0, - 1761, 0, 0, 1717, 0, 0, 1719, 0, 0, 1721, - 1723, 0, 0, 0, 0, 0, 0, 2194, 0, 2296, - 2545, 2455, 0, 1674, 1676, 1679, 1681, 1680, 1682, 1678, - 1687, 0, 1609, 0, 1608, 2107, 1767, 0, 0, 0, - 1077, 0, 1580, 1045, 0, 342, 1083, 558, 518, 2406, - 519, 1082, 1084, 1088, 1088, 0, 558, 778, 641, 0, - 0, 268, 676, 0, 0, 296, 346, 358, 0, 1572, - 0, 0, 846, 855, 855, 843, 0, 0, 862, 1238, - 721, 0, 0, 264, 1260, 1256, 0, 0, 1467, 1468, - 0, 0, 0, 0, 0, 342, 934, 0, 424, 431, - 402, 407, 1459, 0, 1459, 0, 404, 408, 1459, 403, - 1459, 400, 401, 0, 1201, 0, 1198, 1197, 776, 0, - 507, 581, 474, 0, 527, 0, 0, 789, 0, 0, - 452, 536, 0, 496, 489, 490, 491, 492, 493, 494, - 495, 487, 486, 0, 677, 852, 353, 1422, 719, 0, - 0, 690, 0, 754, 759, 758, 1459, 763, 0, 0, - 0, 677, 0, 1531, 563, 538, 452, 536, 456, 466, - 540, 0, 541, 556, 550, 554, 552, 553, 0, 0, - 0, 567, 1469, 1076, 0, 1168, 0, 0, 0, 0, - 0, 0, 1205, 612, 0, 0, 616, 607, 677, 1012, - 1960, 0, 1961, 0, 0, 0, 2036, 2035, 0, 2072, - 1763, 0, 0, 1757, 0, 0, 1787, 0, 0, 0, - 1726, 1742, 0, 1722, 1720, 0, 1731, 0, 1733, 1981, - 0, 0, 0, 1683, 0, 2057, 2059, 0, 1983, 0, - 1553, 1765, 0, 1550, 0, 1059, 0, 1060, 1085, 522, - 0, 1091, 1091, 509, 778, 500, 1262, 0, 679, 581, - 0, 299, 0, 276, 1258, 0, 0, 857, 857, 0, - 0, 0, 0, 371, 378, 377, 372, 370, 379, 0, - 375, 369, 368, 373, 0, 1461, 0, 1462, 1463, 1466, - 386, 399, 0, 429, 0, 427, 426, 428, 0, 415, - 0, 0, 0, 0, 0, 0, 389, 420, 1196, 1200, - 1199, 0, 0, 475, 0, 477, 513, 514, 515, 0, - 478, 523, 524, 0, 786, 0, 791, 0, 0, 0, - 677, 535, 701, 0, 0, 0, 1416, 0, 0, 561, - 0, 765, 766, 761, 0, 0, 713, 1422, 567, 550, - 0, 538, 464, 0, 437, 554, 556, 0, 1419, 0, - 569, 0, 353, 1167, 1170, 1165, 1381, 0, 0, 615, - 614, 707, 1962, 2039, 2025, 2052, 2037, 2068, 0, 0, - 0, 1756, 1759, 0, 1790, 0, 0, 0, 0, 1776, - 0, 1724, 0, 0, 1732, 0, 0, 0, 1677, 0, - 0, 1542, 1552, 1078, 0, 0, 1088, 0, 778, 0, - 1080, 1079, 516, 502, 1572, 293, 345, 0, 0, 0, - 853, 856, 844, 845, 864, 863, 723, 1572, 0, 0, - 366, 0, 0, 425, 434, 0, 432, 405, 410, 0, - 414, 412, 411, 406, 409, 0, 506, 0, 0, 0, - 0, 525, 0, 526, 557, 0, 790, 0, 0, 0, - 703, 851, 0, 0, 450, 677, 755, 760, 0, 0, - 1417, 1529, 554, 538, 550, 0, 0, 542, 1083, 1083, - 556, 435, 1420, 1421, 0, 556, 1093, 1380, 1379, 1622, - 0, 0, 2532, 2297, 2504, 0, 2070, 2073, 2071, 2065, - 0, 0, 1788, 1789, 1774, 0, 0, 1778, 1741, 1754, - 1685, 0, 1684, 2060, 2061, 1765, 342, 1091, 0, 504, - 520, 527, 269, 1572, 847, 0, 265, 0, 376, 374, - 1464, 430, 0, 413, 768, 580, 532, 0, 531, 0, - 529, 528, 787, 792, 0, 677, 841, 1422, 691, 767, - 0, 556, 550, 554, 0, 539, 0, 1085, 1085, 439, - 0, 1765, 1363, 1622, 1362, 1364, 1372, 1369, 1371, 1370, - 1368, 1208, 1209, 0, 2077, 2076, 2075, 2079, 2078, 1760, - 0, 1777, 1780, 0, 0, 0, 1786, 1779, 1781, 0, - 1752, 1686, 1549, 1061, 1081, 0, 778, 277, 854, 0, - 433, 0, 530, 534, 533, 677, 702, 1418, 771, 438, - 554, 556, 1083, 543, 545, 544, 353, 1067, 0, 1373, - 1367, 1607, 1594, 0, 0, 0, 0, 1783, 1784, 1785, - 1782, 0, 521, 505, 0, 0, 704, 773, 0, 769, - 772, 774, 775, 556, 436, 1085, 556, 1365, 1622, 0, - 0, 2074, 0, 0, 367, 0, 739, 0, 440, 546, - 1765, 1366, 0, 0, 0, 1753, 0, 770, 1068, 0, - 0, 1775, 771, 0, 0, 0, 1206, 1207, 740 + 1694, 1460, 636, 1546, 1545, 1460, 0, 270, 0, 1556, + 0, 1460, 429, 1132, 0, 0, 0, 0, 636, 1460, + 0, 1694, 0, 0, 0, 0, 0, 1707, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1460, 0, 0, + 1714, 0, 0, 0, 0, 1707, 0, 1558, 0, 0, + 0, 0, 0, 2, 4, 39, 74, 75, 32, 31, + 93, 57, 18, 65, 127, 126, 128, 44, 40, 82, + 27, 29, 41, 45, 67, 69, 34, 47, 58, 105, + 66, 25, 64, 88, 70, 91, 52, 12, 13, 53, + 14, 54, 15, 55, 16, 101, 76, 94, 37, 63, + 24, 46, 72, 73, 5, 48, 80, 11, 59, 60, + 62, 85, 86, 87, 110, 89, 122, 43, 119, 98, + 99, 116, 100, 117, 9, 102, 56, 17, 113, 112, + 114, 83, 49, 84, 71, 92, 111, 28, 115, 19, + 20, 22, 23, 21, 61, 30, 68, 33, 90, 118, + 108, 104, 123, 121, 129, 106, 77, 7, 8, 95, + 6, 26, 51, 10, 36, 35, 50, 42, 125, 38, + 1556, 97, 109, 96, 78, 103, 81, 107, 124, 79, + 120, 1664, 1663, 1716, 1667, 1693, 0, 1679, 1459, 1458, + 1473, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 635, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1470, 2324, 2339, + 2340, 2341, 2342, 2343, 2344, 2345, 2346, 2347, 2348, 2349, + 2350, 2351, 2352, 2353, 2354, 2689, 2355, 2356, 2357, 2638, + 2639, 2690, 2640, 2641, 2358, 2359, 2360, 2361, 2362, 2363, + 2364, 2365, 2642, 2643, 2366, 2367, 2368, 2369, 2370, 2644, + 2691, 2371, 2372, 2373, 2374, 2375, 2692, 2376, 2377, 2378, + 2379, 2380, 2381, 2382, 2383, 2384, 2693, 2385, 2386, 2387, + 2694, 2388, 2389, 2390, 2391, 2392, 2393, 2645, 2646, 2394, + 2395, 2396, 2397, 2398, 2399, 2400, 2401, 2402, 2403, 2404, + 2405, 2406, 2407, 2408, 2409, 2410, 2411, 2412, 2413, 2414, + 2415, 2416, 2417, 2418, 2419, 2420, 2647, 2421, 2422, 2423, + 2424, 2648, 2425, 2426, 2427, 2649, 2428, 2429, 2430, 2695, + 2696, 2431, 2432, 2433, 2434, 2435, 2650, 2651, 2436, 2437, + 2438, 2439, 2440, 2441, 2442, 2697, 2443, 2444, 2445, 2446, + 2447, 2448, 2449, 2450, 2451, 2452, 2453, 2454, 2698, 2652, + 2455, 2456, 2457, 2458, 2653, 2654, 2655, 2459, 2699, 2700, + 2460, 2701, 2461, 2462, 2463, 2464, 2465, 2466, 2656, 2702, + 2467, 2703, 2468, 2469, 2470, 2471, 2472, 2473, 2474, 2475, + 2476, 2477, 2478, 2479, 2480, 2481, 2482, 2483, 2484, 2485, + 2486, 2657, 2704, 2658, 2487, 2488, 2489, 2490, 2491, 2492, + 2493, 2659, 2660, 2494, 2495, 2496, 2705, 2497, 2661, 2498, + 2662, 2499, 2500, 2501, 2502, 2503, 2504, 2505, 2506, 2507, + 2508, 2663, 2706, 2509, 2707, 2664, 2510, 2511, 2512, 2513, + 2514, 2515, 2516, 2517, 2518, 2519, 2520, 2665, 2521, 2666, + 2524, 2522, 2523, 2525, 2526, 2527, 2528, 2529, 2530, 2531, + 2532, 2533, 2534, 2667, 2535, 2536, 2537, 2538, 2539, 2540, + 2541, 2542, 2543, 2544, 2545, 2546, 2547, 2548, 2549, 2550, + 2551, 2552, 2708, 2553, 2554, 2555, 2556, 2557, 2668, 2558, + 2559, 2560, 2561, 2562, 2563, 2564, 2565, 2566, 2567, 2568, + 2569, 2570, 2571, 2572, 2573, 2669, 2574, 2575, 2709, 2576, + 2577, 2670, 2578, 2579, 2580, 2581, 2582, 2583, 2584, 2585, + 2586, 2587, 2588, 2589, 2590, 2591, 2671, 2592, 2593, 2594, + 2595, 2710, 2596, 2597, 2598, 2599, 2600, 2601, 2672, 2673, + 2602, 2603, 2674, 2604, 2675, 2605, 2606, 2607, 2608, 2609, + 2610, 2611, 2612, 2613, 2614, 2615, 2616, 2617, 2618, 2619, + 2620, 2621, 2622, 2676, 2677, 2623, 2711, 2624, 2625, 2626, + 2627, 2628, 2629, 2630, 2631, 2632, 2633, 2634, 2678, 2679, + 2680, 2681, 2682, 2683, 2684, 2685, 2686, 2687, 2688, 2635, + 2636, 2637, 131, 0, 0, 2292, 2325, 2326, 2329, 2324, + 401, 400, 1654, 2286, 2325, 1555, 1535, 636, 0, 1473, + 428, 1694, 0, 0, 0, 0, 0, 0, 0, 869, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 183, 0, 0, 0, 0, 452, 451, 0, + 0, 0, 1098, 457, 0, 0, 0, 0, 0, 624, + 1603, 2522, 1601, 1655, 271, 274, 275, 272, 273, 2314, + 0, 1234, 1235, 1237, 0, 0, 1247, 909, 910, 0, + 0, 0, 918, 0, 0, 0, 907, 0, 0, 0, + 923, 0, 920, 0, 0, 924, 921, 904, 922, 911, + 0, 903, 0, 0, 1247, 925, 0, 0, 905, 0, + 0, 0, 0, 1473, 1600, 458, 1694, 0, 1577, 1578, + 1579, 1556, 1568, 1580, 1573, 1575, 1574, 1576, 1572, 2313, + 2340, 1033, 1033, 1033, 1033, 1030, 1031, 1033, 1033, 1033, + 2542, 0, 0, 1012, 0, 1014, 2315, 1033, 1038, 521, + 521, 521, 0, 1037, 1042, 521, 0, 1441, 1482, 2291, + 1706, 0, 1013, 1440, 2602, 1591, 0, 0, 1262, 1258, + 1260, 1261, 1259, 0, 1101, 1101, 2560, 1452, 255, 2571, + 2672, 2602, 254, 249, 250, 219, 2344, 0, 0, 1037, + 0, 1473, 1450, 995, 1713, 1711, 0, 2273, 2364, 2379, + 2470, 246, 2553, 2561, 2571, 2672, 2602, 2634, 192, 202, + 197, 0, 264, 2571, 2672, 2602, 260, 1470, 0, 1680, + 1817, 2282, 0, 1443, 1442, 1557, 0, 1560, 0, 2537, + 1684, 1687, 1562, 1685, 1676, 0, 0, 1, 1694, 0, + 1567, 1710, 1710, 0, 1710, 0, 1668, 1676, 1671, 1675, + 0, 0, 0, 0, 0, 1444, 0, 0, 0, 928, + 0, 1485, 2287, 1083, 0, 0, 0, 0, 0, 1334, + 0, 1141, 1140, 2330, 2320, 2321, 0, 2318, 2319, 2331, + 2332, 2333, 0, 2442, 1334, 0, 0, 2177, 2188, 2189, + 2190, 2368, 2425, 2185, 2186, 2187, 2191, 2179, 2180, 2181, + 2182, 2183, 2184, 0, 0, 1229, 2178, 0, 2442, 0, + 1334, 0, 162, 0, 135, 1334, 0, 0, 2442, 0, + 0, 2442, 0, 0, 0, 0, 0, 2442, 0, 0, + 0, 0, 0, 162, 2475, 0, 135, 2442, 0, 0, + 1464, 0, 0, 0, 1466, 1469, 1445, 0, 2265, 0, + 2266, 2293, 1538, 0, 2282, 0, 0, 0, 964, 957, + 0, 965, 972, 0, 0, 974, 0, 0, 958, 0, + 0, 0, 0, 0, 977, 978, 0, 0, 979, 959, + 980, 960, 981, 961, 982, 0, 0, 0, 0, 962, + 0, 0, 0, 1456, 1447, 0, 1593, 1595, 1594, 1592, + 521, 0, 0, 0, 2442, 0, 0, 135, 1523, 0, + 2442, 135, 0, 0, 456, 455, 135, 2318, 454, 453, + 2368, 2425, 0, 1131, 0, 1399, 135, 2442, 0, 185, + 2442, 710, 2442, 1562, 0, 639, 0, 0, 824, 2475, + 135, 0, 0, 0, 0, 0, 0, 1101, 0, 0, + 0, 0, 0, 623, 636, 1604, 1602, 0, 1238, 248, + 247, 1236, 916, 2442, 1173, 362, 0, 0, 2442, 1504, + 2327, 1892, 1921, 1899, 1921, 1921, 1888, 1888, 2408, 1901, + 2442, 1889, 1890, 1926, 0, 1921, 1888, 1893, 0, 1891, + 1929, 1929, 1916, 362, 932, 1873, 1874, 1875, 1876, 1902, + 1903, 1877, 1908, 1909, 1913, 1878, 1943, 1888, 2328, 917, + 0, 908, 2442, 362, 1137, 2442, 2322, 172, 0, 906, + 2368, 2425, 2442, 362, 1231, 0, 2442, 362, 2442, 168, + 2442, 362, 2442, 362, 2442, 640, 0, 0, 2442, 362, + 2442, 2475, 170, 0, 2442, 362, 926, 2442, 362, 2284, + 2442, 0, 1448, 0, 1596, 0, 1570, 2676, 1585, 0, + 1581, 1588, 1584, 1694, 1033, 1032, 0, 1033, 0, 1033, + 0, 1033, 0, 1033, 0, 0, 0, 1033, 2316, 2317, + 1015, 0, 1039, 0, 0, 1046, 1045, 1044, 0, 0, + 0, 1047, 0, 1821, 1631, 0, 1438, 1455, 0, 0, + 0, 1101, 1265, 0, 1263, 1100, 0, 0, 1451, 253, + 251, 0, 0, 0, 0, 0, 0, 1457, 0, 1449, + 0, 0, 0, 2295, 2297, 2298, 2192, 2268, 0, 2639, + 2640, 2641, 2257, 0, 2642, 2643, 2644, 2691, 2083, 2070, + 2079, 2084, 2071, 2073, 2080, 2645, 2646, 2015, 2647, 2648, + 2311, 2649, 2650, 2651, 2653, 2654, 2655, 2656, 2075, 2077, + 2657, 2658, 2660, 0, 2312, 2661, 2662, 2504, 2664, 2665, + 2667, 2668, 2081, 2670, 2671, 2672, 2673, 2674, 2675, 2310, + 0, 2082, 2677, 2679, 2680, 2681, 2682, 2684, 2685, 2686, + 2687, 0, 2268, 0, 0, 2279, 0, 2050, 0, 1881, + 1882, 1904, 1905, 1883, 1910, 1911, 1884, 0, 2278, 1946, + 2136, 2049, 2066, 0, 2055, 2056, 0, 2048, 2043, 1696, + 2274, 0, 2044, 2294, 2296, 2258, 1696, 2272, 205, 266, + 0, 267, 2280, 2571, 193, 245, 209, 244, 211, 212, + 210, 207, 208, 206, 0, 2366, 194, 0, 0, 195, + 0, 0, 0, 0, 263, 261, 0, 1446, 0, 1819, + 1818, 2283, 937, 0, 1549, 1543, 1552, 1548, 1559, 1556, + 2202, 0, 1686, 0, 0, 0, 1666, 1665, 3, 0, + 1564, 1566, 1541, 1562, 1708, 1709, 0, 0, 0, 0, + 0, 0, 0, 0, 1766, 1724, 1725, 1727, 1763, 1767, + 1775, 0, 1672, 0, 0, 1823, 0, 0, 1471, 0, + 0, 0, 0, 0, 1172, 0, 0, 0, 0, 0, + 929, 0, 0, 0, 1491, 0, 1493, 1494, 1495, 0, + 0, 1496, 1497, 1485, 257, 1503, 1501, 1484, 1486, 1499, + 0, 0, 0, 0, 0, 0, 0, 1515, 0, 176, + 177, 0, 652, 636, 0, 2442, 0, 0, 0, 0, + 1180, 1187, 1333, 0, 0, 0, 0, 0, 0, 0, + 0, 1181, 1179, 0, 1182, 259, 1192, 1211, 1214, 0, + 0, 1139, 1142, 0, 0, 0, 0, 0, 1324, 0, + 0, 0, 1324, 0, 0, 0, 1333, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 282, 284, 295, 357, + 0, 615, 0, 0, 0, 618, 0, 2442, 1334, 0, + 0, 0, 1233, 0, 0, 0, 0, 0, 0, 0, + 0, 1214, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 133, 134, 139, 0, 0, 0, 0, 1214, 0, + 0, 0, 0, 0, 0, 0, 601, 614, 0, 0, + 0, 0, 0, 611, 0, 0, 135, 287, 591, 597, + 0, 0, 0, 717, 716, 0, 0, 0, 0, 0, + 1415, 1414, 0, 0, 0, 0, 1513, 1512, 0, 0, + 0, 0, 0, 0, 1324, 0, 276, 278, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 393, 394, 0, 0, 0, 139, 0, + 0, 1324, 0, 289, 0, 0, 1465, 1462, 1463, 0, + 1468, 0, 0, 0, 0, 2058, 0, 2206, 1716, 2204, + 2292, 2264, 0, 2334, 2712, 2713, 2714, 2715, 2716, 2717, + 2718, 2719, 2720, 2721, 2722, 2723, 2724, 2725, 2726, 2727, + 2728, 2729, 2730, 2731, 2732, 2733, 2734, 2735, 2736, 2737, + 2738, 2739, 2740, 2741, 2742, 2743, 2744, 2745, 2746, 2747, + 2748, 2749, 2750, 2751, 2752, 2753, 2754, 2755, 2756, 2757, + 2758, 2759, 2760, 2761, 2762, 2763, 2764, 2765, 2766, 2767, + 2768, 2769, 2770, 2771, 2772, 2773, 2774, 2775, 2776, 2777, + 2778, 2779, 2780, 2781, 2782, 2783, 2784, 2785, 2786, 2787, + 2788, 2261, 2260, 2289, 2335, 2336, 2337, 2338, 2267, 0, + 1534, 0, 971, 0, 0, 0, 0, 973, 0, 966, + 0, 0, 963, 2368, 2425, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 976, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 832, 0, 1485, 1522, 0, + 0, 0, 645, 0, 2442, 0, 137, 870, 0, 822, + 457, 0, 0, 0, 1204, 1398, 137, 0, 0, 179, + 0, 0, 714, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 761, 760, 0, 0, 0, 823, 0, 0, + 137, 0, 2442, 594, 2442, 0, 521, 521, 0, 0, + 1103, 0, 0, 0, 0, 0, 0, 1658, 1660, 1659, + 0, 1657, 0, 360, 361, 0, 1221, 1246, 0, 0, + 0, 1920, 1907, 1915, 1914, 0, 1897, 1896, 1895, 0, + 1894, 0, 1921, 1921, 1919, 1898, 1873, 0, 0, 0, + 1925, 0, 1923, 0, 899, 1869, 1865, 0, 1932, 1933, + 1934, 1931, 1944, 1930, 0, 1879, 1935, 1888, 1885, 919, + 0, 0, 1215, 0, 0, 2442, 362, 2442, 0, 2442, + 0, 0, 0, 1223, 362, 0, 1217, 0, 0, 1219, + 0, 1416, 0, 915, 913, 912, 914, 0, 0, 897, + 0, 0, 0, 2442, 362, 0, 0, 892, 0, 0, + 894, 0, 0, 0, 0, 1694, 0, 232, 233, 231, + 1586, 234, 1587, 1583, 1569, 0, 1023, 0, 1027, 0, + 1018, 0, 1024, 0, 1019, 1016, 1017, 0, 1022, 0, + 0, 522, 524, 0, 0, 2391, 2407, 0, 2431, 2463, + 2464, 2528, 2556, 2561, 2567, 0, 2596, 2607, 0, 1048, + 1078, 1043, 728, 0, 0, 1641, 1439, 2209, 0, 1694, + 0, 0, 0, 0, 1254, 1255, 252, 220, 0, 0, + 0, 1080, 2560, 1454, 994, 636, 0, 2045, 0, 2053, + 2054, 2256, 0, 0, 0, 0, 0, 0, 2052, 2219, + 0, 0, 0, 0, 0, 0, 1971, 0, 0, 0, + 2236, 0, 2242, 0, 0, 2008, 0, 0, 0, 0, + 0, 0, 0, 0, 1972, 2046, 1950, 1951, 2050, 2202, + 0, 2051, 2306, 2303, 1943, 0, 1943, 2277, 2192, 0, + 2188, 2189, 2190, 0, 0, 0, 2271, 0, 2200, 0, + 0, 1986, 2198, 1988, 0, 0, 0, 0, 2185, 2186, + 2187, 1968, 2179, 2180, 2181, 2182, 2183, 2184, 2196, 1966, + 0, 0, 2138, 0, 1965, 0, 0, 1779, 2301, 0, + 2299, 2259, 1779, 268, 269, 265, 0, 0, 214, 216, + 215, 213, 0, 238, 236, 242, 243, 237, 204, 241, + 0, 235, 218, 2125, 2124, 217, 203, 225, 200, 226, + 198, 221, 223, 224, 201, 199, 262, 0, 0, 0, + 362, 1567, 0, 1550, 1551, 1547, 1554, 1776, 0, 1688, + 0, 1692, 1567, 0, 1563, 1683, 1682, 1717, 1718, 1123, + 1681, 1746, 1747, 0, 0, 0, 0, 1772, 1770, 1737, + 1728, 1736, 0, 0, 1734, 0, 1738, 1946, 1765, 1670, + 1722, 1723, 1726, 1669, 0, 1768, 0, 1644, 1766, 1727, + 1628, 0, 1606, 0, 1824, 0, 0, 1472, 0, 0, + 0, 1152, 1154, 0, 1153, 0, 1156, 0, 1165, 0, + 0, 1151, 1170, 0, 1159, 1157, 0, 1511, 0, 0, + 930, 0, 0, 0, 0, 1492, 0, 0, 2596, 256, + 1495, 1500, 1487, 1498, 0, 0, 0, 0, 0, 1082, + 1081, 0, 0, 1105, 0, 0, 0, 1518, 510, 0, + 359, 0, 0, 0, 0, 0, 0, 0, 0, 818, + 815, 0, 0, 814, 0, 650, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 690, 0, + 1324, 0, 722, 0, 1189, 0, 1188, 0, 1193, 0, + 0, 1190, 1185, 1186, 2561, 2571, 2602, 258, 1191, 1213, + 0, 1212, 1208, 0, 1134, 0, 1135, 0, 0, 0, + 0, 0, 2417, 2442, 300, 322, 0, 1323, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 344, 0, 0, 347, 346, 0, 0, + 0, 0, 0, 351, 330, 0, 331, 0, 350, 0, + 0, 0, 616, 617, 0, 0, 0, 1324, 0, 291, + 0, 0, 0, 0, 0, 0, 0, 0, 1230, 0, + 745, 0, 0, 2561, 1209, 0, 0, 0, 0, 0, + 0, 1402, 0, 0, 165, 0, 160, 164, 0, 0, + 2561, 1210, 0, 0, 0, 0, 0, 599, 600, 613, + 0, 604, 605, 602, 606, 607, 0, 0, 0, 0, + 0, 0, 0, 598, 0, 0, 712, 711, 715, 0, + 0, 0, 0, 0, 1411, 0, 1204, 0, 0, 1410, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1267, 1266, 0, 0, 0, 0, 1334, 0, 860, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 167, 732, + 0, 731, 0, 161, 166, 0, 0, 0, 0, 0, + 0, 0, 0, 230, 1461, 1467, 1716, 1716, 1716, 2064, + 0, 0, 0, 0, 1715, 2262, 2265, 1537, 2290, 1536, + 0, 0, 0, 0, 975, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 967, 968, 969, 970, 0, 0, + 0, 0, 0, 407, 404, 405, 407, 0, 0, 0, + 0, 834, 0, 837, 840, 0, 1483, 476, 0, 0, + 642, 690, 0, 0, 460, 174, 0, 0, 0, 0, + 747, 0, 0, 0, 1397, 132, 183, 185, 458, 0, + 184, 186, 188, 189, 190, 187, 191, 0, 709, 713, + 0, 0, 0, 0, 638, 0, 0, 0, 0, 0, + 762, 766, 765, 769, 767, 0, 763, 0, 0, 1844, + 0, 0, 159, 0, 0, 589, 593, 0, 0, 0, + 0, 460, 560, 373, 2442, 0, 521, 0, 2442, 0, + 1102, 0, 821, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1656, 362, 1174, 0, 1505, 0, 0, + 0, 0, 362, 1918, 1917, 1870, 1866, 0, 0, 0, + 0, 933, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1886, 362, 1138, 173, 2323, 0, 901, 0, 0, + 0, 0, 362, 1232, 889, 362, 169, 362, 362, 641, + 0, 362, 171, 0, 0, 0, 633, 362, 927, 362, + 2285, 0, 362, 1599, 2442, 521, 1571, 1582, 1020, 1029, + 1028, 1026, 1025, 1021, 0, 1040, 0, 520, 0, 0, + 0, 0, 0, 1056, 1057, 0, 0, 1053, 1058, 0, + 1054, 1055, 1060, 1050, 1049, 1061, 1062, 0, 0, 1080, + 726, 0, 0, 0, 0, 1638, 0, 1636, 0, 1822, + 1640, 1629, 1590, 0, 1589, 0, 582, 1101, 1101, 1264, + 0, 0, 1037, 0, 0, 362, 1453, 0, 996, 1002, + 0, 0, 0, 0, 0, 0, 0, 1005, 1006, 0, + 1007, 998, 1008, 999, 1009, 0, 1000, 0, 0, 0, + 0, 2269, 2213, 0, 2214, 0, 0, 2255, 2251, 0, + 0, 0, 0, 0, 2220, 0, 2223, 2224, 2225, 2222, + 2226, 2221, 0, 0, 0, 2227, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 2668, 0, 0, 0, + 0, 2016, 0, 0, 2172, 0, 2202, 2241, 0, 0, + 0, 0, 0, 0, 2202, 2247, 0, 0, 0, 0, + 2123, 0, 2120, 0, 0, 0, 0, 2268, 0, 2307, + 0, 2304, 1947, 1961, 1962, 1963, 1969, 2276, 0, 2270, + 0, 0, 1948, 1977, 0, 2248, 2004, 0, 2009, 1992, + 2228, 2229, 2230, 2231, 2011, 0, 1985, 0, 1990, 1994, + 0, 1973, 0, 1970, 0, 2271, 2201, 0, 2199, 0, + 1958, 1959, 1960, 1967, 1952, 1953, 1954, 1955, 1956, 1957, + 1964, 2176, 2174, 2175, 0, 0, 0, 2146, 0, 0, + 1989, 2434, 2470, 0, 1707, 1707, 1707, 1695, 1705, 2275, + 0, 1839, 1716, 1839, 2281, 0, 0, 1943, 0, 1820, + 935, 936, 934, 1540, 1544, 1553, 1567, 2203, 1561, 1690, + 0, 0, 1542, 1565, 0, 1121, 1122, 0, 1126, 2668, + 2558, 0, 0, 0, 0, 1739, 1773, 0, 1764, 0, + 2295, 1740, 2294, 1741, 1744, 1745, 1735, 1774, 1642, 0, + 1769, 1674, 1673, 0, 1842, 0, 0, 0, 1620, 1608, + 0, 1825, 0, 1779, 1646, 0, 2268, 1777, 1373, 1268, + 1335, 1155, 0, 1888, 1166, 0, 1150, 0, 1149, 1888, + 0, 1167, 0, 1888, 1374, 1269, 1336, 931, 1375, 1270, + 1337, 1376, 1271, 1502, 1490, 1489, 1488, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 799, 2442, 362, 1516, 1377, 0, 1272, 358, 1517, + 1338, 1521, 817, 816, 0, 0, 1339, 0, 651, 0, + 655, 0, 657, 658, 659, 0, 0, 0, 660, 0, + 2368, 2425, 662, 665, 666, 667, 674, 679, 669, 0, + 0, 681, 675, 0, 0, 0, 0, 0, 0, 687, + 692, 0, 0, 0, 0, 0, 0, 1183, 1184, 1378, + 1275, 0, 1340, 0, 1133, 0, 1276, 175, 0, 0, + 283, 2442, 302, 0, 694, 799, 0, 1326, 299, 328, + 0, 343, 338, 339, 337, 2442, 362, 2442, 362, 0, + 0, 0, 0, 0, 340, 335, 336, 332, 0, 0, + 345, 2343, 2409, 2572, 0, 698, 700, 0, 705, 348, + 1296, 369, 368, 367, 0, 352, 0, 374, 377, 349, + 329, 327, 324, 296, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 2288, 0, 0, 1225, 0, 1381, 1341, + 0, 1363, 0, 0, 0, 0, 739, 1384, 1282, 1344, + 0, 1403, 1405, 1395, 1283, 1404, 163, 1313, 152, 0, + 0, 148, 0, 0, 0, 0, 138, 1385, 1284, 1345, + 0, 0, 1386, 1285, 0, 0, 288, 592, 603, 608, + 1290, 612, 609, 1353, 610, 1393, 1286, 0, 1389, 1316, + 1348, 575, 1396, 1412, 1287, 1204, 1407, 1409, 0, 1324, + 0, 277, 279, 0, 298, 0, 1288, 0, 1346, 1388, + 1315, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1524, 0, 0, 0, 0, 0, 0, 362, 0, 0, + 0, 1326, 2442, 362, 1387, 0, 1321, 0, 1361, 0, + 0, 395, 0, 1314, 1324, 0, 290, 1292, 0, 1355, + 0, 0, 228, 227, 229, 0, 0, 0, 0, 2207, + 2208, 0, 2205, 2059, 2264, 0, 984, 942, 983, 0, + 2407, 0, 941, 943, 0, 0, 0, 944, 0, 948, + 949, 0, 0, 0, 940, 938, 939, 406, 0, 0, + 756, 757, 0, 0, 0, 0, 836, 0, 0, 0, + 1514, 0, 135, 649, 0, 0, 0, 644, 689, 694, + 0, 0, 0, 0, 459, 463, 467, 468, 469, 0, + 0, 0, 0, 153, 136, 0, 878, 0, 521, 0, + 749, 1401, 1400, 1203, 0, 185, 178, 0, 0, 710, + 0, 1562, 0, 0, 373, 831, 829, 828, 830, 0, + 0, 0, 852, 827, 0, 1843, 1845, 0, 0, 0, + 0, 0, 0, 582, 462, 0, 0, 524, 0, 563, + 0, 0, 0, 0, 560, 0, 0, 0, 2327, 0, + 848, 820, 1144, 0, 1162, 1145, 0, 0, 0, 0, + 1197, 1129, 1198, 1175, 1130, 0, 0, 621, 1661, 1662, + 0, 1222, 0, 0, 1510, 0, 1508, 0, 1887, 1900, + 900, 0, 1928, 1927, 1929, 1929, 0, 1871, 0, 1912, + 1937, 1938, 1939, 1940, 1941, 1942, 0, 1936, 1880, 1216, + 362, 0, 362, 0, 362, 1224, 1218, 1220, 1417, 0, + 898, 0, 0, 362, 891, 893, 0, 895, 0, 1041, + 523, 0, 0, 0, 0, 0, 0, 1052, 619, 1059, + 0, 1073, 1068, 1070, 0, 1074, 725, 0, 0, 1639, + 1632, 1634, 1633, 0, 0, 1630, 2210, 890, 0, 588, + 0, 0, 0, 0, 362, 0, 1075, 0, 0, 1003, + 997, 0, 0, 1001, 0, 0, 0, 1004, 0, 0, + 1712, 2211, 2212, 0, 0, 0, 2252, 0, 0, 2098, + 0, 2072, 2074, 0, 0, 2086, 0, 2099, 2057, 2100, + 2076, 2078, 2087, 0, 0, 2193, 0, 0, 2089, 0, + 2018, 2019, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 2033, 0, 0, 0, 0, 0, 0, + 2036, 2035, 2090, 2171, 0, 0, 2239, 2240, 2091, 0, + 0, 2246, 0, 0, 0, 2096, 2101, 0, 0, 0, + 0, 2107, 0, 2128, 0, 0, 0, 2047, 2203, 0, + 0, 0, 0, 0, 0, 0, 0, 2010, 1993, 2013, + 1987, 0, 1991, 1995, 0, 0, 2012, 0, 0, 1981, + 0, 0, 1979, 2005, 1975, 0, 0, 2006, 0, 0, + 0, 2065, 0, 0, 1707, 1707, 1707, 1707, 1704, 0, + 0, 0, 0, 2558, 2688, 0, 1803, 1778, 1780, 1790, + 1803, 1808, 1803, 2067, 1837, 2068, 2282, 0, 1749, 0, + 1749, 196, 0, 239, 222, 1539, 1691, 1694, 1719, 0, + 2194, 1126, 0, 1721, 1743, 1742, 0, 1732, 0, 1771, + 1729, 1643, 1627, 0, 1625, 1612, 1614, 1613, 0, 0, + 1615, 2268, 0, 1625, 1607, 1651, 0, 0, 1842, 0, + 1650, 0, 1888, 1147, 1148, 0, 1171, 0, 1085, 1086, + 0, 1084, 0, 0, 0, 509, 1104, 0, 0, 0, + 799, 0, 0, 513, 0, 1519, 0, 1394, 1312, 653, + 654, 0, 668, 0, 677, 676, 0, 0, 0, 0, + 0, 0, 0, 661, 683, 625, 684, 686, 0, 0, + 685, 688, 691, 1324, 0, 723, 1298, 0, 1359, 1177, + 0, 0, 1136, 0, 0, 0, 0, 0, 0, 476, + 323, 0, 0, 0, 0, 382, 0, 304, 315, 380, + 321, 0, 354, 0, 326, 0, 319, 341, 333, 342, + 334, 353, 355, 0, 702, 703, 701, 697, 0, 704, + 706, 0, 371, 0, 0, 0, 0, 1380, 0, 1324, + 0, 292, 1294, 0, 1357, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1362, 0, 0, + 0, 0, 744, 0, 741, 0, 0, 0, 141, 143, + 142, 140, 0, 151, 0, 0, 0, 0, 0, 0, + 0, 1413, 0, 0, 0, 0, 0, 0, 389, 0, + 297, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 396, 364, + 0, 855, 0, 0, 0, 398, 0, 0, 1372, 0, + 0, 0, 0, 0, 1379, 1277, 2062, 2063, 2060, 1716, + 2263, 0, 0, 0, 955, 0, 0, 0, 0, 0, + 0, 409, 410, 135, 408, 431, 0, 799, 0, 0, + 833, 838, 846, 2504, 2179, 2180, 844, 839, 841, 843, + 845, 842, 0, 0, 0, 0, 0, 492, 0, 0, + 0, 482, 0, 0, 1204, 475, 478, 479, 0, 0, + 645, 648, 646, 647, 682, 0, 462, 499, 550, 0, + 155, 0, 0, 156, 154, 0, 0, 373, 746, 0, + 743, 0, 181, 458, 0, 714, 0, 0, 0, 1204, + 637, 768, 771, 764, 0, 851, 853, 825, 0, 694, + 0, 0, 594, 0, 521, 1600, 577, 0, 552, 462, + 550, 559, 0, 0, 567, 372, 0, 0, 582, 373, + 0, 0, 1105, 0, 847, 0, 1143, 0, 0, 0, + 1194, 1199, 1195, 0, 0, 1158, 0, 1196, 1176, 1433, + 1434, 1431, 1432, 0, 0, 0, 1653, 0, 0, 1506, + 0, 1906, 0, 1924, 1922, 1867, 1872, 1945, 902, 0, + 885, 0, 887, 362, 733, 0, 634, 362, 0, 0, + 0, 0, 0, 0, 1051, 0, 1071, 0, 0, 1034, + 1077, 0, 0, 1637, 1635, 580, 0, 1256, 1257, 1080, + 0, 1035, 1079, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 2215, 0, 2254, 2250, 0, 2069, 2217, 2218, + 2216, 0, 0, 2234, 2233, 2172, 0, 0, 2017, 2029, + 2030, 2031, 2235, 0, 2041, 0, 0, 2026, 2027, 2028, + 2032, 2020, 2021, 2022, 2023, 2024, 2025, 2034, 2244, 2243, + 2237, 2238, 0, 2093, 2094, 2095, 2245, 2102, 0, 2358, + 2129, 0, 2106, 2122, 2121, 0, 0, 0, 2109, 0, + 0, 2118, 0, 2173, 2308, 2309, 2305, 1949, 0, 0, + 1978, 2249, 1996, 0, 0, 2014, 0, 1974, 2193, 0, + 0, 0, 0, 0, 1983, 0, 0, 0, 2149, 2144, + 2145, 2169, 0, 0, 0, 0, 0, 0, 1698, 1697, + 1703, 1803, 1808, 1803, 0, 0, 1676, 0, 1790, 0, + 1802, 1788, 1801, 0, 0, 1814, 1812, 0, 1814, 0, + 1814, 0, 1782, 0, 1804, 1784, 1801, 1786, 0, 1829, + 2283, 1838, 0, 1762, 2059, 1762, 0, 0, 0, 1720, + 1124, 1125, 1730, 0, 1733, 2387, 1840, 0, 1626, 0, + 0, 0, 1617, 1623, 1605, 0, 0, 1647, 1625, 1648, + 1168, 0, 0, 1160, 1091, 1092, 1095, 1093, 1090, 1094, + 0, 0, 0, 799, 0, 0, 531, 0, 1118, 1118, + 0, 0, 515, 572, 526, 802, 0, 0, 0, 800, + 362, 1273, 0, 678, 0, 0, 673, 671, 670, 672, + 0, 626, 1392, 1274, 0, 0, 0, 0, 1178, 1327, + 0, 0, 1297, 0, 301, 0, 472, 0, 0, 307, + 316, 0, 312, 0, 1325, 0, 0, 0, 0, 311, + 384, 0, 381, 0, 362, 362, 356, 699, 370, 375, + 376, 379, 1332, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 879, 862, 0, 0, + 880, 881, 0, 0, 0, 1227, 1228, 1226, 1364, 1365, + 1370, 1367, 1366, 1369, 1371, 1368, 0, 1280, 0, 0, + 737, 1328, 149, 145, 146, 144, 147, 150, 1329, 1310, + 1291, 1354, 576, 1408, 0, 0, 0, 1289, 0, 1347, + 0, 1306, 1300, 0, 0, 0, 0, 0, 1391, 1320, + 1352, 1390, 1318, 1350, 1317, 1349, 1319, 1351, 1311, 0, + 0, 1847, 859, 0, 0, 0, 362, 362, 858, 735, + 1293, 0, 1356, 1302, 0, 0, 0, 945, 0, 0, + 947, 950, 0, 952, 414, 432, 135, 0, 755, 819, + 0, 0, 835, 798, 0, 480, 0, 486, 490, 0, + 0, 494, 495, 493, 481, 1204, 521, 571, 788, 789, + 0, 0, 809, 0, 643, 0, 460, 0, 496, 0, + 0, 464, 158, 157, 0, 0, 0, 750, 754, 752, + 751, 753, 748, 0, 739, 185, 2442, 0, 0, 0, + 0, 573, 1406, 0, 781, 826, 0, 1846, 729, 0, + 373, 590, 0, 0, 0, 460, 582, 0, 465, 470, + 471, 476, 0, 560, 551, 0, 552, 561, 562, 0, + 569, 1481, 0, 583, 569, 0, 0, 0, 850, 0, + 849, 1146, 1163, 1164, 0, 0, 1127, 0, 0, 0, + 0, 628, 362, 0, 1509, 1868, 362, 362, 1253, 0, + 896, 1065, 1066, 1067, 1064, 1063, 620, 0, 1069, 727, + 0, 581, 362, 0, 1011, 989, 1010, 988, 990, 0, + 992, 993, 987, 985, 986, 2253, 2085, 2088, 2097, 2232, + 2171, 2203, 0, 0, 2042, 0, 0, 2092, 2678, 0, + 0, 2133, 2134, 0, 2130, 2131, 2126, 2127, 2108, 0, + 2493, 2113, 0, 0, 0, 2002, 2000, 1997, 0, 1998, + 1982, 0, 0, 1980, 1976, 0, 2007, 2135, 0, 2151, + 2148, 2168, 2203, 1702, 1701, 1700, 1699, 1789, 1785, 1787, + 0, 2683, 0, 1792, 1799, 0, 1781, 0, 1813, 1809, + 0, 1810, 0, 0, 1811, 0, 0, 1783, 0, 1799, + 0, 1836, 0, 0, 2140, 2302, 2300, 2140, 240, 1689, + 0, 1731, 0, 1624, 1609, 0, 1610, 1616, 0, 0, + 0, 0, 1652, 1645, 1161, 1169, 0, 0, 0, 511, + 0, 526, 0, 0, 0, 1111, 1120, 1110, 0, 526, + 0, 1204, 804, 803, 806, 801, 805, 1520, 0, 663, + 664, 680, 1299, 0, 1360, 1308, 0, 1641, 303, 0, + 695, 310, 0, 0, 0, 305, 383, 385, 306, 309, + 313, 364, 325, 318, 0, 0, 0, 1295, 0, 1358, + 1304, 1331, 1382, 1278, 1342, 0, 0, 868, 0, 0, + 0, 0, 1383, 1279, 1343, 0, 0, 0, 0, 1641, + 0, 0, 0, 0, 0, 0, 0, 0, 1529, 0, + 0, 363, 857, 856, 364, 397, 1322, 0, 2061, 0, + 946, 953, 954, 951, 0, 403, 411, 414, 0, 0, + 1244, 1244, 0, 799, 0, 0, 477, 491, 0, 571, + 530, 0, 483, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 742, 741, 180, + 0, 460, 0, 694, 0, 775, 776, 770, 772, 0, + 783, 787, 854, 0, 0, 0, 582, 462, 0, 0, + 1597, 461, 0, 0, 473, 0, 563, 552, 560, 0, + 0, 579, 0, 1474, 0, 585, 0, 0, 0, 1200, + 0, 1206, 0, 1157, 1201, 0, 1839, 0, 0, 0, + 0, 632, 1245, 1507, 886, 888, 734, 1072, 0, 1076, + 362, 991, 2173, 2037, 0, 0, 0, 0, 2103, 0, + 2104, 2132, 2110, 2114, 0, 2111, 2112, 1999, 2003, 2001, + 1984, 2137, 0, 1716, 2170, 1832, 0, 1835, 0, 0, + 1791, 0, 0, 1793, 0, 0, 1795, 1797, 0, 0, + 0, 0, 0, 0, 2286, 2386, 2651, 2555, 0, 1748, + 1750, 1753, 1755, 1754, 1756, 1752, 1761, 0, 1678, 1677, + 2195, 1841, 0, 0, 0, 1106, 0, 1649, 1073, 0, + 362, 1118, 1204, 532, 2504, 533, 1117, 1119, 1123, 0, + 1204, 0, 571, 656, 0, 0, 285, 693, 0, 0, + 308, 317, 366, 378, 0, 1641, 0, 0, 866, 875, + 875, 863, 0, 0, 882, 1281, 738, 0, 0, 280, + 1307, 1301, 0, 0, 0, 1531, 1532, 0, 0, 0, + 0, 0, 1330, 362, 1303, 956, 0, 434, 441, 415, + 419, 1523, 0, 1523, 0, 416, 420, 1523, 1523, 413, + 1839, 430, 1244, 0, 1241, 1240, 797, 0, 519, 596, + 0, 484, 0, 541, 0, 0, 810, 0, 0, 462, + 550, 0, 508, 500, 501, 502, 504, 503, 505, 506, + 507, 498, 497, 0, 694, 872, 373, 1481, 736, 0, + 0, 707, 0, 773, 778, 777, 1523, 782, 0, 0, + 0, 694, 0, 1600, 578, 552, 462, 550, 466, 476, + 0, 567, 560, 563, 0, 564, 0, 568, 0, 0, + 0, 582, 1533, 1105, 0, 1205, 0, 0, 0, 0, + 0, 0, 1248, 627, 0, 0, 631, 622, 694, 1036, + 2038, 0, 2039, 0, 0, 2116, 2115, 0, 2155, 1837, + 0, 0, 1831, 0, 0, 1861, 0, 0, 0, 1800, + 1816, 0, 1796, 1794, 0, 1805, 0, 1807, 0, 0, + 0, 1757, 0, 2139, 2141, 0, 0, 1622, 1839, 0, + 1619, 0, 1087, 0, 1088, 1112, 571, 0, 1123, 1126, + 521, 571, 0, 799, 1309, 0, 696, 596, 0, 320, + 0, 293, 1305, 0, 0, 877, 877, 0, 0, 0, + 0, 0, 0, 391, 0, 0, 1525, 0, 1526, 1527, + 1530, 399, 412, 0, 439, 0, 437, 436, 438, 0, + 427, 0, 0, 0, 0, 0, 0, 402, 1239, 1243, + 1242, 0, 0, 485, 0, 487, 0, 527, 528, 529, + 0, 489, 537, 538, 0, 807, 0, 812, 0, 0, + 0, 694, 549, 718, 0, 0, 0, 1475, 0, 0, + 574, 0, 784, 785, 780, 0, 0, 730, 1481, 582, + 560, 0, 552, 474, 0, 569, 563, 567, 565, 566, + 0, 1478, 0, 584, 0, 1114, 1128, 1207, 1202, 1437, + 0, 0, 630, 629, 724, 2040, 2119, 2105, 2117, 2150, + 0, 0, 0, 0, 1830, 1833, 0, 1864, 0, 0, + 0, 0, 1850, 0, 1798, 0, 0, 1806, 0, 0, + 0, 1751, 0, 0, 1611, 1621, 1107, 0, 0, 536, + 0, 1126, 1108, 530, 799, 525, 512, 1641, 314, 365, + 0, 0, 0, 873, 876, 864, 865, 884, 883, 740, + 1641, 0, 387, 386, 0, 390, 0, 435, 444, 0, + 442, 417, 422, 0, 426, 424, 423, 418, 421, 0, + 518, 0, 0, 0, 0, 0, 539, 0, 540, 570, + 0, 811, 0, 0, 0, 720, 871, 0, 0, 460, + 694, 774, 779, 0, 0, 1476, 1598, 563, 552, 560, + 0, 0, 554, 1118, 1118, 447, 567, 569, 1479, 1480, + 0, 0, 373, 1436, 1435, 1694, 0, 0, 2638, 2387, + 2610, 0, 2167, 2156, 2167, 2167, 2147, 0, 0, 1862, + 1863, 1848, 0, 0, 1852, 1815, 1828, 1759, 0, 1758, + 2142, 2143, 1839, 362, 0, 799, 534, 1109, 541, 514, + 286, 1641, 867, 0, 281, 0, 392, 1528, 440, 0, + 425, 787, 595, 488, 546, 0, 545, 0, 543, 542, + 808, 813, 0, 694, 861, 1481, 708, 786, 0, 567, + 560, 563, 0, 553, 0, 1120, 1120, 569, 445, 0, + 0, 569, 1419, 1694, 1418, 1420, 1428, 1425, 1427, 1426, + 1424, 1251, 1252, 0, 2160, 2159, 2158, 2162, 2161, 0, + 2154, 2152, 2153, 1834, 0, 1851, 1854, 0, 0, 0, + 1860, 1853, 1855, 0, 1826, 1760, 1618, 1089, 0, 516, + 799, 294, 874, 0, 443, 0, 544, 548, 547, 694, + 719, 1477, 792, 569, 563, 567, 1118, 555, 1119, 557, + 556, 449, 1114, 1115, 0, 1839, 0, 1429, 1423, 1676, + 1663, 0, 0, 0, 0, 2164, 0, 2165, 0, 1857, + 1858, 1859, 1856, 0, 0, 517, 0, 0, 721, 794, + 0, 790, 793, 795, 796, 448, 567, 569, 1120, 373, + 1113, 0, 1096, 1421, 1694, 0, 0, 2157, 2163, 2166, + 0, 0, 535, 388, 0, 758, 0, 569, 446, 558, + 569, 1116, 1422, 0, 0, 0, 1827, 0, 791, 450, + 1839, 0, 0, 1849, 792, 1097, 0, 0, 0, 1249, + 1250, 759 }; /* YYDEFGOTO[NTERM-NUM]. */ static const yytype_int16 yydefgoto[] = { - -1, 51, 52, 53, 54, 1487, 2412, 2282, 3175, 3176, - 55, 56, 1483, 57, 58, 59, 60, 1406, 61, 990, - 1629, 2427, 62, 2123, 756, 757, 758, 1942, 1943, 2361, - 1944, 1931, 1289, 1766, 1427, 730, 731, 1388, 1428, 64, - 65, 1283, 1922, 66, 67, 68, 1457, 1534, 1458, 1400, - 1675, 4208, 4931, 2988, 2250, 3224, 2989, 2990, 3600, 3601, - 3678, 4948, 4954, 4949, 4950, 69, 1550, 1551, 70, 71, - 3140, 3136, 3723, 4546, 4547, 4781, 569, 2389, 4549, 4550, - 4767, 4768, 4966, 5105, 5106, 2428, 1621, 3218, 3811, 3166, - 4297, 3167, 4298, 3168, 4299, 3152, 3758, 3759, 4242, 3760, - 3169, 4258, 4811, 3170, 2142, 4983, 2469, 1788, 1786, 4794, - 4071, 4072, 5078, 4990, 4991, 4992, 5210, 4260, 4303, 4304, - 4841, 5146, 5147, 3222, 3818, 4309, 4564, 2877, 73, 665, - 1655, 3319, 666, 2472, 604, 667, 2429, 78, 2462, 4985, - 2463, 1508, 2291, 4951, 3299, 79, 1014, 3567, 4634, 4866, - 4867, 80, 221, 81, 1637, 82, 83, 2407, 3159, 84, - 2159, 2894, 85, 86, 2923, 2924, 2925, 87, 3592, 4486, - 1459, 2977, 2978, 2979, 2980, 3622, 88, 1632, 2436, 2437, - 89, 90, 91, 92, 2580, 2581, 93, 2348, 94, 95, - 96, 97, 3656, 4172, 4274, 3019, 3182, 3783, 4272, 98, - 2430, 1645, 2452, 2453, 4284, 4589, 4590, 4591, 4826, 5136, - 4593, 4828, 5013, 4830, 5308, 5309, 4555, 3546, 4085, 100, - 4251, 4252, 4997, 101, 2157, 102, 103, 104, 1605, 2399, - 2400, 3732, 1598, 2392, 2393, 3797, 3798, 105, 3093, 106, - 4148, 4149, 605, 5004, 4937, 5092, 107, 108, 4152, 4153, - 109, 110, 111, 112, 113, 657, 658, 659, 1102, 1103, - 2849, 1054, 114, 2040, 115, 953, 954, 3117, 116, 1175, - 2624, 2625, 4347, 117, 690, 1121, 1122, 2431, 119, 699, - 2600, 701, 1801, 3301, 3302, 3876, 120, 121, 2577, 2603, - 122, 1393, 2133, 2134, 4066, 2432, 606, 1661, 2476, 2872, - 4709, 4710, 4464, 4723, 2794, 3497, 124, 607, 1432, 2206, - 1074, 1075, 2479, 3232, 2102, 2103, 2104, 3835, 2105, 3234, - 2106, 1366, 2107, 1024, 1025, 3240, 3241, 3242, 3831, 3838, - 2421, 4623, 4624, 125, 1430, 2204, 126, 127, 128, 1471, - 875, 1084, 1085, 129, 619, 620, 130, 4786, 131, 1028, - 132, 4632, 133, 134, 721, 722, 1159, 1160, 135, 136, - 2220, 3603, 137, 138, 139, 3013, 3014, 4164, 140, 141, - 1624, 1625, 142, 143, 3058, 3059, 144, 145, 146, 5234, - 5288, 5289, 5290, 3845, 5159, 5236, 1152, 148, 149, 150, - 187, 913, 914, 915, 2433, 4616, 152, 153, 1389, 1390, - 1391, 1392, 2128, 154, 155, 156, 157, 158, 159, 160, - 1609, 161, 162, 4760, 163, 164, 1569, 165, 1323, 1324, - 166, 167, 563, 774, 1327, 1333, 168, 669, 1115, 1116, - 1117, 1768, 169, 1155, 956, 670, 1110, 171, 671, 2086, - 2824, 3511, 3512, 3513, 3516, 4449, 4045, 672, 2820, 174, - 1808, 2586, 2589, 2816, 673, 2829, 2830, 2831, 3519, 674, - 692, 1017, 2485, 675, 1250, 179, 180, 181, 783, 777, - 778, 183, 1915, 2756, 708, 1340, 743, 744, 791, 3482, - 2052, 2053, 2077, 2078, 1349, 1350, 2065, 2069, 2070, 2807, - 2800, 2058, 4023, 4693, 4694, 4695, 4696, 4697, 4698, 4432, - 2073, 2074, 1352, 1353, 1354, 2082, 184, 2760, 3461, 3462, - 3463, 3999, 4000, 4014, 4010, 4416, 4679, 3464, 1150, 1360, - 4424, 5260, 3465, 4668, 4669, 4883, 4018, 3473, 3507, 3206, - 3207, 3208, 3466, 5058, 5059, 5257, 5258, 4885, 4886, 2108, - 1705, 1056, 1251, 1057, 1717, 1252, 1689, 1059, 1253, 1254, - 1255, 1062, 1256, 1257, 1258, 1065, 1681, 1259, 1260, 1699, - 1714, 1715, 1328, 4887, 1262, 1263, 1264, 3468, 1265, 3952, - 4379, 4368, 2686, 2687, 1938, 3948, 3405, 1910, 2746, 4702, - 4905, 4906, 3445, 3978, 4396, 4666, 5050, 5166, 5167, 1266, - 1267, 1268, 2743, 1906, 878, 1269, 3734, 1908, 2680, 2768, - 2769, 1811, 1831, 2631, 2649, 2650, 2660, 3363, 2668, 2673, - 3392, 3393, 2681, 2711, 1270, 2633, 2634, 3345, 1833, 1271, - 1316, 1951, 1367, 1828, 2706, 1279, 1272, 1273, 1802, 767, - 4675, 1106, 833, 3005, 2031, 917, 705, 1274, 1275, 1276, - 1277, 1464, 848, 1077, 1078, 2508, 1296, 3662, 1293, 559, - 827, 850, 2981, 560, 561, 829, 2036 + -1, 52, 53, 54, 55, 56, 1543, 2535, 2386, 3333, + 3334, 57, 58, 1539, 59, 60, 61, 62, 1453, 63, + 1028, 1789, 2550, 64, 2219, 809, 810, 811, 2120, 2121, + 2474, 2122, 2108, 1336, 1931, 1475, 783, 784, 1435, 1476, + 66, 67, 1330, 2095, 68, 69, 70, 1506, 1597, 1507, + 1508, 1447, 1836, 4401, 5149, 3125, 2348, 3381, 3126, 3127, + 3768, 3769, 3850, 5163, 5164, 71, 1613, 1614, 72, 73, + 2516, 3298, 3903, 4765, 4766, 4999, 622, 4426, 4427, 4986, + 4987, 5177, 5319, 5320, 2551, 1781, 3376, 3988, 3324, 4497, + 3325, 4498, 3326, 4499, 3310, 3935, 3936, 4440, 3937, 3327, + 4458, 5031, 3328, 2238, 5193, 2592, 1953, 1951, 4681, 5013, + 4255, 4256, 5405, 5201, 5202, 5203, 5428, 4460, 4503, 4504, + 5361, 5362, 3379, 3994, 4510, 4831, 4782, 3011, 75, 76, + 718, 1815, 3489, 719, 2595, 656, 720, 2552, 81, 2585, + 5195, 2586, 1569, 2400, 3916, 3469, 82, 1054, 3734, 4851, + 5086, 5087, 83, 226, 84, 1797, 85, 86, 2530, 3317, + 87, 2255, 3028, 88, 89, 3059, 3060, 3061, 90, 3759, + 4699, 1509, 3114, 3115, 3116, 3117, 3789, 91, 1792, 2559, + 2560, 92, 93, 94, 95, 2712, 2713, 96, 2460, 97, + 98, 99, 100, 3824, 4360, 4474, 3156, 3340, 3960, 4472, + 101, 3302, 2553, 1805, 2575, 2576, 4484, 4807, 4808, 4809, + 5046, 5351, 4811, 5048, 5224, 5050, 4450, 5540, 5541, 4773, + 3713, 4269, 103, 4451, 4452, 5208, 104, 2253, 105, 106, + 1765, 2522, 2523, 3917, 2602, 3389, 3390, 3974, 3975, 107, + 3240, 108, 4336, 4337, 657, 5215, 5155, 5305, 109, 110, + 4340, 4341, 111, 112, 113, 114, 115, 710, 711, 712, + 1145, 1146, 2983, 1093, 116, 2130, 117, 991, 992, 3277, + 118, 1221, 2758, 2759, 4555, 119, 743, 1165, 1166, 2554, + 121, 752, 2732, 754, 1968, 3471, 3472, 4059, 122, 123, + 2709, 2735, 124, 1440, 2229, 2230, 4250, 2555, 658, 1206, + 2599, 3006, 4924, 4675, 4925, 5372, 5514, 4676, 4938, 2928, + 3663, 126, 659, 1481, 2305, 1113, 1114, 2605, 3393, 2198, + 2199, 2200, 4014, 2201, 3395, 2202, 1414, 2203, 1064, 1065, + 3401, 3402, 3403, 4010, 4017, 2544, 4841, 4842, 127, 1478, + 2302, 128, 129, 130, 1522, 903, 1123, 1124, 131, 671, + 672, 132, 5004, 133, 1067, 134, 4849, 135, 136, 774, + 775, 1203, 1204, 137, 138, 2319, 3771, 139, 1479, 140, + 141, 3150, 3151, 4352, 142, 143, 144, 1784, 1785, 145, + 146, 3205, 3206, 147, 148, 149, 5454, 5516, 5517, 5518, + 4023, 5375, 5456, 1196, 151, 152, 153, 190, 944, 945, + 946, 855, 2556, 4833, 155, 156, 1436, 1437, 1438, 1439, + 2224, 157, 158, 159, 3415, 3416, 160, 161, 162, 163, + 1769, 164, 165, 4977, 166, 167, 1730, 168, 169, 1363, + 1364, 1365, 1366, 2135, 2916, 616, 827, 1369, 1375, 1380, + 1381, 1382, 171, 722, 1159, 1160, 1161, 1933, 172, 1199, + 995, 723, 1154, 174, 724, 2181, 2958, 3678, 3679, 3680, + 3683, 4660, 4228, 725, 2954, 177, 1975, 2718, 2721, 2950, + 726, 2963, 2964, 2965, 3686, 727, 745, 1057, 2612, 728, + 1297, 182, 183, 184, 836, 830, 831, 2921, 186, 2087, + 2897, 761, 1386, 796, 797, 845, 2484, 2147, 2148, 2172, + 2173, 1395, 1396, 2160, 2164, 2165, 2941, 2934, 2153, 4213, + 4909, 4910, 4911, 4912, 4913, 4914, 4644, 2168, 2169, 1398, + 1399, 1400, 2177, 187, 2901, 3637, 3638, 3639, 4190, 4191, + 4205, 4201, 4629, 4896, 3640, 1194, 1406, 4637, 5484, 3641, + 4885, 4886, 5102, 4209, 3648, 3674, 3364, 3365, 3366, 3642, + 5271, 5272, 5481, 5482, 5104, 5105, 2204, 1866, 1095, 1298, + 1096, 1878, 1299, 1850, 1098, 1300, 1301, 1302, 1101, 1303, + 1304, 1305, 1104, 1842, 1306, 1307, 1860, 1875, 1876, 1370, + 5106, 1309, 1310, 1311, 3644, 1312, 4141, 4593, 4579, 2821, + 2822, 2115, 4137, 3579, 4131, 2082, 2887, 4918, 5123, 5124, + 3621, 4169, 4609, 4883, 5263, 5382, 5383, 5470, 1313, 1314, + 1315, 2884, 2078, 906, 1316, 3919, 2080, 2815, 1638, 1639, + 1978, 2000, 2765, 2783, 2784, 2860, 2795, 3537, 2803, 2808, + 3566, 3567, 2816, 2846, 1317, 2767, 2768, 3517, 2002, 1318, + 950, 1642, 951, 1997, 2841, 1326, 1319, 1320, 1969, 820, + 4892, 1149, 861, 3142, 1722, 953, 758, 1321, 1322, 1323, + 1324, 1515, 876, 1116, 1117, 613, 605, 878, 3118, 614, + 607, 608, 1727 }; /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing STATE-NUM. */ -#define YYPACT_NINF -4582 +#define YYPACT_NINF -4998 static const int yypact[] = { - 7528, 839, 14488, -4582, -4582, 839, -4582, 70269, 624, 758, - 58, 181, 15422, 70716, 76974, 851, 320, 6289, 839, 76974, - 1340, 55518, 67140, 1100, 76974, 1308, 992, 55518, 76974, 77421, - 1235, 1151, 172, 77868, 71163, 65799, 1060, 76974, 1406, 389, - 78315, 71610, 1529, 72057, 992, 52864, 388, 1262, 78762, 76974, - 1936, 1767, 1515, -4582, -4582, -4582, -4582, -4582, -4582, -4582, - -4582, -4582, -4582, -4582, -4582, -4582, -4582, -4582, -4582, -4582, - -4582, -4582, -4582, -4582, -4582, -4582, -4582, -4582, -4582, -4582, - -4582, -4582, -4582, -4582, -4582, -4582, -4582, -4582, -4582, -4582, - -4582, -4582, -4582, -4582, -4582, -4582, -4582, -4582, -4582, -4582, - -4582, -4582, -4582, -4582, -4582, -4582, -4582, -4582, -4582, -4582, - -4582, -4582, -4582, -4582, -4582, -4582, -4582, -4582, -4582, -4582, - -4582, -4582, -4582, -4582, -4582, -4582, -4582, -4582, -4582, -4582, - -4582, -4582, -4582, -4582, -4582, -4582, -4582, -4582, -4582, -4582, - -4582, -4582, -4582, -4582, -4582, -4582, -4582, -4582, -4582, -4582, - -4582, -4582, -4582, -4582, -4582, -4582, -4582, -4582, -4582, -4582, - -4582, -4582, -4582, -4582, -4582, -4582, -4582, 624, -4582, -4582, - -4582, -4582, -4582, -4582, -4582, -4582, -4582, -4582, 1586, -4582, - 977, 1933, 1041, 911, 1530, -4582, -4582, -4582, 63564, 76974, - 76974, 76974, 1628, 76974, 1613, 76974, 270, 63564, 59988, 72504, - 1757, 1678, 48757, 79209, -4582, 76974, 58200, 76974, 76974, 79656, - 76974, 76974, 76974, 856, 68481, 76974, 1771, 76974, 76974, 58647, - 80103, 2018, 1644, -4582, -4582, -4582, -4582, -4582, -4582, -4582, - -4582, -4582, -4582, -4582, -4582, -4582, -4582, -4582, -4582, -4582, - -4582, -4582, -4582, -4582, -4582, -4582, -4582, -4582, -4582, -4582, - -4582, -4582, -4582, -4582, -4582, -4582, -4582, -4582, -4582, -4582, - -4582, -4582, -4582, -4582, -4582, -4582, -4582, -4582, -4582, -4582, - -4582, -4582, -4582, -4582, -4582, -4582, -4582, -4582, -4582, -4582, - -4582, -4582, -4582, -4582, -4582, -4582, -4582, -4582, -4582, -4582, - -4582, -4582, -4582, -4582, -4582, -4582, -4582, -4582, -4582, -4582, - -4582, -4582, -4582, -4582, -4582, -4582, -4582, -4582, -4582, -4582, - -4582, -4582, -4582, -4582, -4582, -4582, -4582, -4582, -4582, -4582, - -4582, -4582, -4582, -4582, -4582, -4582, -4582, -4582, -4582, -4582, - -4582, -4582, -4582, -4582, -4582, -4582, -4582, -4582, -4582, -4582, - -4582, -4582, -4582, -4582, -4582, -4582, -4582, -4582, -4582, -4582, - -4582, -4582, -4582, -4582, -4582, -4582, -4582, -4582, -4582, -4582, - -4582, -4582, -4582, -4582, -4582, -4582, -4582, -4582, -4582, -4582, - -4582, -4582, -4582, -4582, -4582, -4582, -4582, -4582, -4582, -4582, - -4582, -4582, -4582, -4582, -4582, -4582, -4582, -4582, -4582, -4582, - -4582, -4582, -4582, -4582, -4582, -4582, -4582, -4582, -4582, -4582, - -4582, -4582, -4582, -4582, -4582, -4582, -4582, -4582, -4582, -4582, - -4582, -4582, -4582, -4582, -4582, -4582, -4582, -4582, -4582, -4582, - -4582, -4582, -4582, -4582, -4582, -4582, -4582, -4582, -4582, -4582, - -4582, -4582, -4582, -4582, -4582, -4582, -4582, -4582, -4582, -4582, - -4582, -4582, -4582, -4582, -4582, -4582, -4582, -4582, -4582, -4582, - -4582, -4582, -4582, -4582, -4582, -4582, -4582, -4582, -4582, -4582, - -4582, -4582, -4582, -4582, -4582, -4582, -4582, -4582, -4582, -4582, - -4582, -4582, -4582, -4582, -4582, -4582, -4582, -4582, -4582, -4582, - -4582, -4582, -4582, -4582, -4582, -4582, -4582, -4582, -4582, -4582, - -4582, -4582, -4582, -4582, -4582, -4582, -4582, -4582, -4582, -4582, - -4582, -4582, -4582, -4582, -4582, -4582, -4582, -4582, -4582, -4582, - -4582, -4582, -4582, -4582, -4582, -4582, -4582, -4582, -4582, -4582, - -4582, -4582, -4582, -4582, -4582, -4582, -4582, -4582, -4582, -4582, - -4582, -4582, -4582, -4582, -4582, -4582, -4582, -4582, -4582, -4582, - -4582, -4582, -4582, -4582, -4582, -4582, -4582, -4582, -4582, -4582, - -4582, -4582, -4582, -4582, -4582, -4582, -4582, -4582, -4582, -4582, - -4582, -4582, -4582, 76974, 13727, 1308, -4582, -4582, 1936, 76974, - 2006, 63564, 76974, 1790, 80550, 1859, 76974, -4582, 76974, 1877, - 80997, 289, 1883, 59988, 1940, 49218, 1944, 76974, 76974, 59988, - 81444, 81891, 82338, 76974, 76974, -4582, -4582, 1974, 76974, 76974, - -4582, 2087, 60435, 1488, 2105, 2258, 2170, 1032, -4582, 72951, - -4582, -4582, -4582, -4582, -4582, -4582, -4582, -4582, 62670, 320, - -4582, -4582, 2113, 64011, 76974, 2183, -4582, -4582, 82785, 97913, - 1999, -4582, 291, 64458, 60882, 2293, 1953, 49679, 2352, -4582, - -4582, 61329, -4582, -4582, -4582, -4582, -4582, 83232, -4582, 83679, - 2071, 2183, -4582, 98346, 61776, -4582, 2199, 84126, 84573, 85020, - -4582, 1932, 1278, 1233, 42459, -4582, -4582, -4582, 624, -4582, - -4582, -4582, -4582, -4582, -4582, -4582, -4582, 362, 1821, 301, - 207, 303, -4582, -4582, 214, 219, 224, 362, 2424, 2424, - -4582, 76974, -4582, -4582, 1821, 36, 1962, 1962, 1962, 2197, - 950, -4582, 1962, 2116, -4582, -4582, -4582, -4582, 72057, -4582, - 1982, 1308, 2011, 2432, 2080, -4582, -4582, -4582, -4582, -4582, - 2073, 76974, 76974, 76974, -4582, -4582, 2475, 2065, 2355, 2102, - -4582, -4582, -4582, 2254, 2306, 2316, 94, 1308, 2202, -4582, - 2442, -4582, 2337, 29124, 29124, 1308, 73398, 85467, 232, 48308, - 208, 73845, 2160, 1523, 2347, -4582, -4582, -4582, 493, -4582, - 2584, 2184, 2433, 2102, 1644, 43809, -4582, 2185, 1139, 72057, - -4582, -4582, -4582, 242, 2473, 30984, 76974, 2188, -4582, 2207, - 2188, 2249, 2250, 1041, -4582, 7528, 76974, 1350, 1350, 2669, - 1350, 1455, 1699, -4582, 2233, -4582, 2562, 2527, 72057, 2269, - 252, -4582, -4582, -4582, -4582, -4582, -4582, -4582, -4582, -4582, - -4582, -4582, -4582, -4582, -4582, -4582, -4582, -4582, -4582, -4582, - -4582, -4582, -4582, -4582, 1142, 2280, 1139, -4582, 255, -4582, - 1842, 2277, 1362, 1354, -4582, -4582, 901, 76974, 245, 2317, - 74292, 7102, 2292, 1139, 2314, -4582, -4582, -4582, 2439, 374, - -4582, -4582, -4582, -4582, 2602, 2643, 7096, 348, 74739, -4582, - -4582, -4582, -4582, 76974, 76974, -4582, -4582, -4582, -4582, -4582, - -4582, -4582, -4582, -4582, -4582, 2341, 1347, -4582, -4582, 2327, - 2659, 2544, 1192, 2628, 2497, 1410, 2557, 1589, 2687, 7306, - 102, 1376, 1631, 75186, 76974, 2653, 2701, 5859, 1560, 823, - 2586, 1006, 2628, 2702, 2536, 1410, 2725, 8186, 76974, -4582, - 2655, 2763, 82, -4582, 336, -4582, 2469, 2614, 1044, 2649, - 63564, 2419, -4582, -4582, 76974, -4582, -4582, 98779, 2499, -4582, - 477, 63564, -4582, 2632, 2476, 50140, 76974, -4582, -4582, 76974, - -4582, -4582, -4582, -4582, -4582, -4582, -4582, 2558, 2742, 76974, - 98779, -4582, 2688, 76974, 76974, -4582, 2436, -4582, -4582, -4582, - -4582, 1962, 76974, 2434, 2840, 98779, 2656, 86, 76974, 1583, - 2871, 76974, 2657, 1583, 2477, 85914, -4582, -4582, 1583, -4582, - -4582, -4582, 76974, 76974, 2444, 1786, 2646, 2752, 1583, 2663, - 2875, 2876, 2665, 2524, 2671, 2207, 2841, 2654, 919, 1283, - 182, 1904, 1583, 2505, 86361, 86808, 76974, 2514, 76974, 2859, - 63564, 76974, 2782, -4582, 2640, -4582, -4582, 1625, -4582, -4582, - -4582, -4582, -4582, 2796, -4582, 305, 309, 2797, 2478, 2801, - -4582, -4582, -4582, 2528, -4582, 2528, 2528, 2481, 2481, 2658, - 2482, 2805, -4582, -4582, -4582, 1980, 2528, 2481, -4582, 99645, - -4582, 14, 1649, -4582, 326, -4582, 2918, -4582, -4582, -4582, - -4582, -4582, -4582, -4582, -4582, 2486, -4582, 957, 1863, -4582, - -4582, 2521, -4582, 2811, 501, -4582, 2812, -4582, 2487, 87255, - -4582, 87702, 88149, 2814, 511, -4582, 59988, 2817, 2487, 2818, - 309, 2821, -4582, 981, 2810, 2823, 326, 2824, 1919, 2487, - 63117, 2825, 512, -4582, 2826, 521, -4582, 2827, 2707, 30984, - -4582, 2598, -4582, 1262, -4582, 1618, -4582, 54624, -4582, 1233, - 1821, -4582, 76974, 1821, 76974, 1821, 76974, 1821, 76974, 1821, - 76974, 76974, 76974, 1821, -4582, -4582, -4582, 76974, 2508, 76974, - 76974, -4582, -4582, -4582, 67587, 59988, 68034, -4582, 76974, -4582, - 659, 1308, -4582, -4582, 98779, 2941, 59988, 2859, -4582, 1656, - -4582, -4582, -4582, -4582, -4582, -4582, 2758, 76974, 2822, 2829, - 67587, 59988, -4582, 88596, 62670, 2714, 2515, -4582, -4582, -4582, - -4582, -4582, 1930, 2976, 226, 2978, 30984, 2517, 226, 226, - 2520, 2831, -4582, -4582, -4582, 280, 2522, 2525, -4582, 233, - 233, -4582, 2529, 2530, -4582, 238, 2532, 2533, 2989, 2990, - 283, 2534, 2535, 2537, 1980, 226, 30984, -4582, 2545, 233, - 2546, 2547, 2549, 2998, 2551, -4582, 3014, 2553, 223, 346, - 2554, 2555, -4582, 2529, -4582, 285, 2556, 2559, 2560, 2563, - 2564, 2566, 2567, 2568, 30984, 30984, 30984, -4582, -4582, 27729, - 1139, 1308, -4582, -4582, -4582, -4582, -4582, -4582, -4582, -4582, - 286, 7781, -4582, 2595, -4582, -4582, 2760, -4582, -4582, 30984, - -4582, -4582, 72, -4582, 290, -4582, -4582, -4582, 1139, 2836, - 2570, -4582, -4582, 287, 2571, -4582, 1736, -4582, -4582, -4582, - -4582, -4582, -4582, -4582, -4582, -4582, -4582, 47861, 3008, -4582, - 359, 1308, 336, 340, 2950, 46520, 46967, -4582, -4582, 2828, - -4582, 76974, -4582, -4582, 30984, 52417, -4582, 1139, 149, -4582, - -4582, -4582, -4582, 1748, -4582, -4582, -4582, 624, 13444, 1778, - 2188, 76974, 76974, 3010, -4582, -4582, -4582, 2207, -4582, -4582, - 1041, 1041, 30984, 1041, 860, 1617, 29589, 31449, 2889, 2784, - 1294, 1277, 2892, -4582, 2790, 1455, 1699, 72057, 76974, 89043, - 2705, 30984, 2670, 2675, 2720, 53758, -4582, 1139, 2676, 2644, - 2677, 2731, 56412, 2600, 2683, 2684, 2737, -4582, 2852, -4582, - -4582, 2695, 2696, 89490, -4582, -4582, 1084, -4582, -4582, -4582, - 1084, -4582, 2629, 853, 196, 1286, 2703, 256, 785, 3005, - -4582, 1225, -4582, -4582, 2753, -4582, 6662, 76974, 2947, 9228, - 2830, 348, 2832, 2754, -4582, -4582, 2880, 2706, 76974, 2713, - 2848, 348, 316, 89937, -4582, -4582, -4582, -4582, -4582, -4582, - 3510, 26863, -4582, 1776, 2719, 2700, 2732, 76974, 64905, 370, - 2844, 2846, 1543, 1985, 967, 2781, 76974, 1556, 2853, 76974, - 2648, 2729, 2730, 2940, 2652, 1565, 3038, 2651, -4582, -4582, - -4582, 437, 2124, 2842, -4582, 2939, 2980, 8487, 2717, 2718, - 96614, -4582, 2743, 30, 50601, 76974, 76974, 2755, 2757, 2748, - 2749, 24, 3024, 1401, 2750, -4582, -4582, -4582, 1401, 76974, - 2751, 2756, 76974, 99645, 348, -4582, 3086, 348, 348, 1520, - 3091, 2759, 414, 2903, 1793, 1583, 2651, 1751, -4582, 2761, - 2762, 859, -4582, 2877, 2766, 2775, 2833, 1308, -4582, -4582, - 2776, 2861, 2778, 640, -4582, -4582, 1170, 2788, 72057, 2883, - 2885, 209, 2088, 2651, -4582, 2785, 2786, 2652, 2652, 76974, - 76974, 76974, 76974, 76974, 213, 3129, 3132, 2793, 191, 2839, - 2710, -4582, 1401, 59094, 2795, -4582, 1401, 76974, 2798, 2145, - 2651, 1701, 1684, -4582, -4582, -4582, 1644, -4582, 76974, -4582, - 76974, -4582, 2971, 98779, 2917, 2981, -4582, 2764, -4582, 2983, - 348, -4582, 76974, 76974, 2984, 2920, 2925, 1105, 98779, 2926, - 2987, -4582, 2988, 2992, 2808, 2767, 2787, 54191, -4582, 2444, - 2733, 3164, 3056, 76974, 56412, -4582, 3178, 1084, -4582, 98779, - 2937, 3059, -4582, 76974, 2954, 48, -4582, 3096, 2799, -4582, - -4582, 70, 76974, 215, 2783, -4582, -4582, 3065, 59988, 1357, - 3066, 1308, 2794, 3069, 2951, 1308, 59988, 2993, 76974, 76974, - 76974, 76974, -4582, -4582, 2955, 986, 121, -4582, 59094, 2967, - -4582, 76974, 2972, 1751, 2973, 3187, 604, 1962, 90384, 3068, - -4582, 90831, 2771, 3191, 98779, 3016, -4582, 1987, -4582, 2891, - -4582, 63564, -4582, -4582, 63564, -4582, -4582, -4582, 98779, 76974, - -4582, 2772, -4582, -4582, 30984, -4582, -4582, -4582, 2424, -4582, - 98779, 2528, 2528, -4582, -4582, 3196, 2857, 2862, 2424, -4582, - 2424, -4582, 98779, -4582, 2791, 2792, 203, 2864, 2865, 2866, - -4582, 2779, 2868, 2424, -4582, -4582, 1958, -4582, -4582, 63564, - 63564, -4582, 59988, 59988, 3103, 512, 3113, 2849, 3115, 2851, - 50601, 50601, -4582, 533, 59988, 76974, -4582, 76974, -4582, -4582, - -4582, -4582, 98779, 98779, -4582, 59988, 59094, 3117, 3118, 309, - 76974, 76974, -4582, 76974, 76974, -4582, 76974, 76974, 1784, 91278, - 1233, 62223, -4582, -4582, -4582, -4582, -4582, -4582, -4582, -4582, - 76974, -4582, 76974, -4582, 76974, -4582, 76974, -4582, 76974, -4582, - -4582, -4582, 76974, -4582, 76974, 1791, -4582, -4582, 1806, 157, - 76974, 76974, 192, 63564, 76974, 3009, 76974, 76974, 76974, 76974, - 76974, 2881, 2571, 1461, -4582, 1304, 989, 72057, 3017, -4582, - -4582, 1808, 1936, 1033, 76974, 1365, 2073, -4582, -4582, 68034, - 67140, 3109, 112, 76974, -4582, -4582, 6333, 30984, 1139, 28659, - -4582, -4582, 13444, 2806, 30984, 30984, 2807, 2424, 2424, -4582, - 318, 30984, 30984, 30984, 2424, 2424, 5132, 30984, 50601, 30984, - 36099, 25029, 30984, 30984, 28194, -4582, 30984, 3031, 37959, 30984, - 340, 3033, 30984, 340, 5132, 3266, 3266, 1139, 1746, 7957, - 2809, 1139, -4582, 253, 809, -4582, 272, 98779, 30984, 30984, - 30984, 30984, 56412, 2893, 193, 76974, 30984, 2815, 1572, -4582, - 30984, -4582, 2835, 30984, 2894, 857, 30984, 30984, 30984, 30984, - 30984, 30984, 30984, 30984, 30984, 37494, -4582, 39309, 273, 3108, - 3131, 646, 471, 75633, 29124, 3123, 24097, -4582, 194, 3123, - -4582, -4582, -4582, 76974, 3008, -4582, -4582, 2899, -4582, -4582, - -4582, -4582, -4582, 302, -4582, -4582, -4582, -4582, -4582, -4582, - -4582, -4582, 2820, -4582, -4582, -4582, -4582, 2820, -4582, 2837, - 10723, 2834, -4582, -4582, -4582, -4582, -4582, -4582, -4582, -4582, - -4582, -4582, -4582, -4582, -4582, -4582, -4582, -4582, -4582, -4582, - -4582, -4582, -4582, -4582, -4582, -4582, -4582, -4582, -4582, -4582, - -4582, -4582, -4582, -4582, -4582, -4582, -4582, -4582, -4582, -4582, - -4582, -4582, -4582, -4582, -4582, -4582, -4582, -4582, -4582, -4582, - -4582, -4582, -4582, -4582, -4582, -4582, -4582, -4582, -4582, -4582, - -4582, -4582, -4582, -4582, -4582, -4582, -4582, -4582, -4582, -4582, - -4582, -4582, -4582, -4582, -4582, -4582, -4582, -4582, -4582, -4582, - -4582, -4582, -4582, -4582, -4582, -4582, -4582, -4582, 3111, 3114, - 309, 76974, 242, 68928, -4582, 30984, -4582, 1813, 2854, -4582, - 3092, -4582, 2838, -4582, 10901, 3092, -4582, -4582, 36564, 2943, - 3083, 3032, -4582, -4582, -4582, 2845, 13444, 31914, 31914, -4582, - 1727, 13444, 1785, -4582, -4582, -4582, -4582, -4582, -4582, 964, - -4582, 76974, 142, 2889, 1277, 2888, 831, 3265, 76974, -4582, - 44259, 1829, 59988, 76974, 76974, 3029, -4582, 3251, -4582, 99645, - -4582, 2843, -4582, 99212, 95301, -4582, -4582, 59, -4582, 1200, - 59988, -4582, 76974, 76974, -4582, 56412, 59988, 76974, 76974, -4582, - 59988, 76974, 76974, -4582, -4582, -4582, -4582, -4582, 55071, 1129, - 67140, 2979, 66246, -4582, -4582, 2855, 76974, 2897, 3098, 3110, - 1051, -4582, -4582, 91725, -4582, 3062, 59988, 76974, 76974, 30984, - 3063, 76974, 76974, -4582, 319, 2938, 2942, -4582, 76974, 2953, - 3088, 63564, 2870, 76974, 76974, 98779, 2952, 817, 63564, 2923, - 51062, 76974, 76974, 76974, 76974, 3011, 3190, 98779, 76974, 3136, - 1202, 72057, 257, 2155, 2651, 3097, -4582, 3207, 893, -4582, - 59988, -4582, 76974, 3089, -4582, -4582, -4582, 51970, 3316, 3002, - -4582, -4582, 92172, -4582, -4582, -4582, 1830, -4582, 59988, 59988, - 76974, 10094, 92619, 1109, 3112, -4582, -4582, 98779, -4582, 76974, - 76974, 76974, 3214, 3142, 76974, 69375, 93066, 93513, 85, 1106, - 3144, 76974, 69822, 3145, -4582, 3037, 76974, -4582, -4582, 56859, - 59988, 76974, 870, 56412, -4582, -4582, 76974, -4582, 3106, 267, - -4582, 76974, 6251, -4582, -4582, 2985, 2995, 76974, 3119, 398, - 2156, 2651, 76974, 76974, 2904, 1858, 59988, 76974, 56412, -4582, - 3120, 1224, 72057, 72057, 59988, 76974, 72057, -4582, 76974, 85467, - -4582, 59988, 836, -4582, 3058, 59988, 76974, 12725, -4582, -4582, - -4582, 348, -4582, -4582, -4582, -4582, -4582, 76974, 76974, 348, - 76974, 76974, 348, 1231, -4582, 59988, 76974, -4582, -4582, -4582, - 59988, 76974, 76974, -4582, 59988, 2783, 76974, 56412, -4582, 76974, - 7745, 76974, 76974, 76974, 76974, 76974, 76974, 59988, 76974, -4582, - -4582, 1370, 1402, 701, 1403, 772, 76974, 3198, 76974, 93960, - 59988, 76974, 76974, 1308, 76974, 429, -4582, -4582, 3034, -4582, - 59988, 836, -4582, 10481, 76974, 76974, 2991, 2996, 211, 3073, - -4582, -4582, -4582, -4582, -4582, -4582, 868, 3349, 94407, 868, - -4582, 868, 3181, 2982, 2986, 868, 76974, 76974, -4582, -4582, - -4582, -4582, 3177, 76974, 868, 868, 868, 3093, 3126, 152, - 3203, 2944, 1860, -4582, -4582, 30984, 98779, 76974, -4582, 1870, - -4582, 2946, 986, -4582, -4582, 56412, 76974, 485, 1118, 3248, - 3137, 65352, 2279, 3240, 76974, 2994, 76974, 3367, 3026, 72057, - 2444, -4582, 2279, 76974, -4582, 1548, 67140, -4582, -4582, -4582, - -4582, -4582, -4582, -4582, 76974, -4582, -4582, 3245, 76974, 30984, - 3102, -4582, 1308, 2444, 2444, 2444, 2444, -4582, -4582, -4582, - -4582, 3146, 1891, -4582, 2948, 2444, 76974, 3060, 3264, 2279, - 2956, 3269, -4582, 1751, 3272, 664, 76974, 3149, 65352, 2014, - 2997, 3168, 3385, 1962, 1308, 3170, 3156, -4582, 27296, 6501, - 3158, 3213, 62670, 3252, 3253, 3270, -4582, 305, -4582, 3395, - -4582, 30984, 1886, 2963, 326, -4582, -4582, 2968, 2792, 2999, - 3000, 2964, 2969, -4582, 2424, 261, -4582, -4582, 2970, 1141, - 733, 3095, 2424, 3200, 2974, -4582, 501, -4582, 2487, -4582, - 76974, -4582, 76974, 76974, 76974, 76974, 511, -4582, -4582, 2487, - 309, -4582, 3224, 326, 2487, 3099, 3284, 62670, -4582, 512, - -4582, 521, -4582, 3184, 309, -4582, 3201, 1962, -4582, -4582, - -4582, -4582, -4582, -4582, -4582, -4582, 1895, -4582, 76974, -4582, - 3262, 3268, 3278, 3001, 3006, 3036, 76974, 3012, 3001, 348, - 3001, 2571, 2571, 3001, 3006, 59541, 3434, 3295, -4582, 3079, - 3004, 3305, 227, -4582, 703, 66, 3242, -4582, -4582, -4582, - -4582, 98779, -4582, 59988, 3050, 76974, 76974, -4582, 146, 3216, - 3013, 59541, 3439, 309, -4582, 63564, -4582, -4582, 98779, 3101, - 3124, 63564, 3235, 3074, -4582, -4582, -4582, -4582, -4582, -4582, - -4582, 98779, -4582, 3296, 76974, 76974, 1896, -4582, -4582, 1714, - -4582, 1735, 30984, 131, -4582, 11537, 1911, 30984, 3041, 3042, - -4582, 3350, -4582, -4582, -4582, -4582, -4582, -4582, 3351, 3043, - 3352, -4582, 1921, 1925, 1941, 3048, 3049, 3341, 3051, 12001, - 3054, 3071, 36099, 36099, 27729, 2471, -4582, 36099, 3072, 3241, - 1952, 11038, 3078, 3076, 12038, 30054, 30984, 30054, 30054, 12372, - 3078, 3077, 1963, 56412, 3250, 12157, 1979, -4582, 30984, 56412, - 5698, 30984, -4582, 30984, 3082, 3085, -4582, -4582, 2873, 2873, - 2873, 5132, -4582, 3090, -4582, 36099, 36099, -4582, 1385, 27729, - -4582, -4582, 3375, -4582, -4582, 1711, -4582, 3075, -4582, -4582, - 2548, 50601, 13141, 30984, 225, 30984, 2815, 30984, 3154, 2873, - 2873, 2873, 514, 514, 339, 339, 339, 307, 471, 471, - -4582, -4582, -4582, 3084, 3087, 3094, 3281, 3100, 30984, -4582, - 2265, 2285, 76974, 4405, 4625, 4904, -4582, -4582, -4582, 40209, - 3133, 30984, 30984, 30984, 3104, -4582, 2278, 13444, 621, -4582, - 308, 3133, -4582, 1644, 2424, 809, 47414, -4582, -4582, 30984, - -4582, -4582, -4582, 2207, -4582, -4582, -4582, 13444, -4582, 1936, - 30984, -4582, -4582, 815, 3125, 50, 3293, 2225, 2225, 1727, - 3297, -4582, -4582, 3155, -4582, 30984, 1844, -4582, 1972, -4582, - -4582, -4582, -4582, 2571, -4582, 3336, -4582, -4582, -4582, 40209, - 3143, 3152, 614, 43359, 3304, -4582, 76974, -4582, 76974, 153, - -4582, 3122, -4582, -4582, -4582, -4582, -4582, -4582, 95301, 1863, - -4582, 99212, -4582, 99212, -4582, 1863, 3521, -4582, 95301, 1702, - -4582, -4582, -4582, -4582, -4582, -4582, -4582, -4582, -4582, -4582, - -4582, -4582, -4582, 59988, 59988, 3312, 76974, 3310, 3314, 30984, - 997, 76974, 3116, 3121, 1458, 3393, 76974, -4582, 3437, 309, - -4582, -4582, 3204, -4582, 13444, -4582, -4582, -4582, -4582, -4582, - 59988, 76974, -4582, 62670, -4582, 76974, -4582, 98779, -4582, -4582, - -4582, 76974, 3157, 76974, -4582, 76974, 76974, 76974, -4582, -4582, - -4582, -4582, -4582, 1143, 98779, -4582, -4582, 76974, 76974, 660, - 3205, 3206, 76974, -4582, 1167, 2877, 11185, 76974, 76974, 76974, - 3389, 76974, -4582, -4582, -4582, -4582, 3331, -4582, -4582, 95301, - -4582, 2487, 1281, 3209, 2651, 3343, -4582, 3452, 3328, -4582, - 902, -4582, 76974, 3259, -4582, -4582, -4582, -4582, 3456, 309, - 3457, 309, 76974, 76974, 76974, 76974, 3263, -4582, -4582, -4582, - -4582, 3267, 3383, -4582, 56412, 56412, 56412, 1983, -4582, -4582, - 1308, -4582, -4582, -4582, -4582, -4582, -4582, 3417, -4582, 1991, - -4582, 570, -4582, -4582, -4582, -4582, -4582, -4582, 59988, 76974, - 12187, 3459, 76974, 76974, 76974, 1679, -4582, 1332, 98779, -4582, - 97047, -4582, -4582, 2002, -4582, 3159, 76974, 3220, 59988, 3208, - 3139, 3139, -4582, -4582, 3139, -4582, -4582, -4582, 3394, 3330, - -4582, 205, 3332, 59988, 3217, -4582, 3228, -4582, -4582, 3233, - 2163, 2651, 1751, -4582, -4582, -4582, -4582, -4582, -4582, -4582, - -4582, -4582, -4582, -4582, -4582, -4582, -4582, -4582, 1552, -4582, - -4582, 1399, 236, 2173, 2651, -4582, 3464, -4582, 3236, -4582, - 3239, -4582, -4582, -4582, 3396, 3397, 3398, 3244, 3246, 3291, - 3256, 3257, 3309, -4582, 3273, 3315, 3274, 3317, 3366, 3275, - 309, 98779, 3399, 1308, 3303, 3501, 309, -4582, 3277, -4582, - 3279, -4582, 3615, -4582, 76974, -4582, 3283, 2342, 2651, -4582, - -4582, 59988, 76974, -4582, -4582, -4582, -4582, -4582, -4582, 98779, - 76974, 3453, -4582, -4582, 868, 76974, 76974, -4582, 3462, 3465, - 76974, 3467, -4582, -4582, -4582, -4582, 241, -4582, -4582, -4582, - 3093, 3502, 45612, -4582, 3671, 8114, 3215, 360, -4582, 56412, - 45612, 1966, 1456, 139, 1583, -4582, 62670, 76974, 62670, -4582, - 1118, 3328, 76974, 76974, 76974, 3218, 3210, -4582, -4582, -4582, - -4582, 59988, 723, 59988, 2424, -4582, -4582, 3285, -4582, 76974, - 1962, 3681, 3528, -4582, 3139, -4582, 3644, 2876, 1357, 3368, - 1598, 2524, 3590, 2207, 343, 56412, 2997, -4582, -4582, -4582, - -4582, 76974, 76974, 986, 1308, -4582, 3238, 3232, -4582, 76974, - 3550, 76974, 76974, 76974, 76974, 3050, 3249, 76974, 3243, 98779, - 584, 3448, 3447, 2652, 3680, 3572, 1936, 2997, 3333, 3573, - 76974, -4582, 2004, 175, -4582, 1308, 62670, 96181, 3564, -4582, - 5367, -4582, -4582, 874, 76974, 3549, -4582, -4582, 1936, -4582, - 98779, 2030, -4582, -4582, -4582, 2424, -4582, -4582, 1448, 1448, - 3260, -4582, 3276, -4582, -4582, -4582, -4582, -4582, -4582, -4582, - 3255, -4582, -4582, -4582, 512, 3318, 309, 3319, 309, -4582, - -4582, 76974, -4582, 76974, 59094, 309, -4582, -4582, 76974, -4582, - 3580, -4582, -4582, 3403, 3404, 3405, 76974, 3001, -4582, 3261, - 59988, 1562, -4582, -4582, 3461, -4582, -4582, 72057, 3387, -4582, - -4582, -4582, -4582, 3588, 3591, -4582, -4582, -4582, 781, -4582, - -4582, -4582, 59988, 67587, 534, 59988, -4582, 3537, 3538, -4582, - -4582, 3539, 348, -4582, 3540, -4582, 3541, 3543, -4582, -4582, - -4582, 3286, 12636, 30984, -4582, 3614, 98779, -4582, 8133, -4582, - -4582, 30984, 30984, -4582, 30984, -4582, -4582, -4582, -4582, -4582, - 30984, -4582, 30984, 3592, -4582, 25495, 3741, 3741, 3282, 98779, - 36099, 36099, 36099, 36099, 1685, 2546, 36099, 36099, 36099, 36099, - 36099, 36099, 36099, 36099, 36099, 37029, 37029, 478, -4582, 3479, - 30984, 30984, 3600, 3592, -4582, 98779, 3292, 3078, 3294, 3298, - 30984, -4582, -4582, 2032, 38409, 3299, 56412, -4582, 30984, 11357, - 2036, 3338, 13092, 1139, 8265, 3300, 1308, 30984, 2697, 3044, - 30984, 2040, 30984, 3602, -4582, -4582, -4582, 3302, -4582, -4582, - 98779, 30984, 3307, 3028, 36099, 36099, 4201, -4582, 5063, 30984, - 27729, -4582, 3493, 3344, 44709, -4582, 25961, 3301, 992, 992, - 992, 992, -4582, 76974, 76974, 76974, 40659, 3611, 3311, 39759, - 76080, 3306, 1988, -4582, 76080, 76527, 76080, -4582, 3327, -4582, - 3313, 1139, 30984, 3612, 629, 629, 3493, -4582, 30984, 30984, - 30519, 3320, -4582, 3612, 336, 3321, -4582, -4582, 13444, 3324, - -4582, 3325, -4582, 3339, -4582, 3125, 1478, -4582, -4582, -4582, - 3515, -4582, -4582, -4582, -4582, 3306, 32379, 3460, -4582, -4582, - -4582, 3369, 2042, -4582, -4582, 3705, 3460, -4582, -4582, 2044, - 44259, 3143, 30984, 1139, 2054, 1733, -4582, -4582, 95301, -4582, - 3390, 2487, 2487, 1528, 3001, 3648, 1528, 8481, -4582, -4582, - 41109, 76974, 76974, -4582, 76974, 2059, 1305, 76974, -4582, 76974, - -4582, -4582, -4582, -4582, 3772, -4582, 76974, -4582, -4582, 3401, - 3409, 76974, 76974, 76974, 76974, 3601, -4582, -4582, 2277, -4582, - -4582, 59988, 76974, -4582, -4582, -4582, 406, 2406, 2651, -4582, - 3427, -4582, -4582, -4582, 3619, -4582, 3767, 3443, 76974, 3678, - 76974, 3357, -4582, 1305, 3659, 262, 2652, 414, 4613, -4582, - 1629, -4582, -4582, 3432, -4582, -4582, 76974, -4582, 76974, -4582, - -4582, -4582, -4582, -4582, -4582, -4582, 3489, -4582, -4582, -4582, - -4582, 56859, -4582, -4582, 76974, -4582, 56412, 45612, 56412, -4582, - 1426, 412, 2420, 2651, 76974, -4582, 3444, -4582, 3454, 3455, - 3499, 711, 1326, 3458, 3463, 3504, 3376, 3378, 3381, -4582, - 56412, 46073, 3542, 76974, 2487, 3388, 3428, 362, 246, -4582, - -4582, -4582, -4582, 1308, 2487, 1308, 76974, 76974, 76974, 56412, - -4582, 3808, 3483, 76974, 76974, 76974, 76974, 3449, -4582, 76974, - 76974, 3706, 230, 1986, 59988, 76974, 76974, 59988, 76974, 76974, - 76974, 76974, 76974, 76974, 3717, 76974, -4582, 3799, 3730, 431, - 3778, 3486, 76974, -4582, 76974, 1308, 2877, 76974, 76974, -4582, - -4582, 3416, 3683, 868, -4582, 3685, 3686, 868, 868, 3690, - 868, -4582, -4582, 1583, -4582, 241, 76974, -4582, 3339, 437, - 2124, -4582, -4582, -4582, -4582, -4582, -4582, 2944, -4582, -4582, - 2152, 76974, -4582, -4582, -4582, 76974, 3419, 76974, 76974, 36099, - -4582, 1867, 1457, 872, -4582, 3677, 76974, 2783, -4582, -4582, - -4582, 3597, 76974, -4582, -4582, -4582, -4582, -4582, 615, 3249, - -4582, 3708, 65352, 2487, 59988, 59988, 2487, -4582, 98779, 3433, - 2997, -4582, 218, 3514, 59988, 1357, 1166, 94854, 2794, 3469, - 3637, 40209, 1552, -4582, 3435, 3594, -4582, 3440, 3438, -4582, - -4582, 76974, 3328, 59094, 2060, 1751, 3870, 774, 1932, -4582, - 66693, 3625, 3249, 3708, -4582, -4582, -4582, 3835, 3534, -4582, - 1936, 76974, 3050, 3534, 1308, 76974, 2897, -4582, 95301, 30984, - 30984, -4582, 3471, -4582, 3466, 6855, -4582, 3517, 3472, -4582, - -4582, -4582, -4582, -4582, -4582, 3532, 3468, 76974, -4582, 3484, - -4582, 3470, -4582, -4582, -4582, -4582, -4582, -4582, 76974, -4582, - 76974, -4582, 309, -4582, 3569, -4582, 309, 76974, 76974, 76974, - 76974, 3001, 348, -4582, 3755, 59541, -4582, -4582, 2061, 76974, - -4582, -4582, -4582, 3821, 112, 3765, -4582, -4582, 871, 871, - 871, 3722, 871, 871, 871, -4582, 30984, 13444, -4582, 3490, - -4582, 13444, 13444, 13444, 8592, 13444, 3600, -4582, 2068, 30984, - -4582, 952, 952, 952, 3070, 3768, -4582, 1217, 3487, 952, - 952, 952, 448, 448, 366, 366, 366, 210, 478, 478, - 13444, 13444, -4582, -4582, 3492, -4582, -4582, -4582, 3078, -4582, - 32844, 3646, 3909, -4582, -4582, -4582, 3544, 3545, 3497, -4582, - 30984, 33309, 3495, 99645, 3696, 809, -4582, 1805, 30984, 30984, - 4451, -4582, 5790, 30984, 98779, 2069, 4451, 396, 30984, 3953, - 5762, 30984, 30984, 5216, 8809, 3506, 30984, 95734, -4582, -4582, - -4582, 2070, 30984, 76974, 76974, 76974, 76974, -4582, -4582, -4582, - 76080, 76527, 76080, 3500, 38859, 26412, 1988, 3511, 76974, -4582, - -4582, 3513, 40209, 3775, 3711, -4582, 40209, 3711, 1571, 3711, - 3779, 3603, 45159, -4582, -4582, 3522, -4582, 3718, -4582, 24097, - 1776, 13444, 3939, 3829, 30984, 3546, 3547, 3551, 13444, 13444, - 30984, -4582, 1308, 3829, 1308, -4582, -4582, 50601, -4582, -4582, - -4582, -4582, 3745, 13444, 29124, -4582, 1936, 2322, 76974, 1139, - 79, -4582, 3552, 76974, -4582, 3460, 13444, -4582, 3620, 2075, - -4582, -4582, -4582, -4582, -4582, -4582, 3634, 67140, 3860, -4582, - 30984, 2076, -4582, 3595, 3952, 156, 2077, 2082, 1305, -4582, - 2783, -4582, 1692, 3836, 189, -4582, 309, -4582, 98779, -4582, - 76974, 76974, -4582, -4582, -4582, -4582, 76974, 2600, -4582, -4582, - 76974, 76974, 76974, 76974, -4582, 59988, 76974, -4582, 76974, -4582, - 56412, 1456, 1867, 3846, 3771, -4582, 348, -4582, 1867, 3773, - 362, 76974, -4582, -4582, 1960, -4582, 98779, 309, 309, -4582, - -4582, -4582, -4582, -4582, 3576, 3975, 3653, 76974, 76974, 76974, - -4582, 76974, 59988, 76974, 76974, 2424, 2424, 98779, 3562, -4582, - 2424, 2424, 3563, -4582, 59988, 76974, 76974, -4582, -4582, -4582, - -4582, -4582, -4582, -4582, -4582, -4582, -4582, -4582, 3649, -4582, - 30984, 3970, -4582, -4582, -4582, -4582, -4582, -4582, -4582, -4582, - -4582, 59988, 76974, 3650, -4582, 3651, -4582, 1872, -4582, -4582, - 76974, 76974, 76974, 76974, 3895, -4582, -4582, -4582, -4582, -4582, - -4582, -4582, -4582, -4582, -4582, 76974, -4582, 76974, -4582, -4582, - 1308, 1308, 98779, 309, 309, -4582, -4582, -4582, -4582, 3837, - 868, -4582, 868, 868, -4582, -4582, 868, -4582, 3574, 394, - -4582, 1305, 1724, 3878, -4582, 3882, 30984, -4582, 1378, 3070, - -4582, 3934, 4012, -4582, -4582, -4582, -4582, 2783, 1962, 3638, - 63564, 1016, -4582, 3864, 485, 3790, 65352, 3464, 1285, 3587, - 3709, -4582, 2487, 2487, 3647, 76974, 4021, -4582, -4582, -4582, - -4582, -4582, -4582, 59988, 3208, -4582, 3807, 915, 3900, 76974, - 30984, 3306, -4582, 1669, 3903, -4582, 1308, -4582, -4582, 3715, - 2997, -4582, 1257, 76974, 3802, 65352, 3050, 2086, -4582, -4582, - -4582, 3639, 4013, 2014, -4582, 3464, 3625, 881, 76974, -4582, - 3640, 4032, -4582, -4582, 3908, 3805, 3605, -4582, 13444, 13444, - 1308,100078, 5367, 98779, 3916, 76974, 158, 3881, 309, -4582, - 309, 309, -4582, 76974, -4582, 3001, 3001, 3001, -4582, 3806, - -4582, -4582, 3872, -4582, 309, 59541, -4582, -4582, -4582, -4582, - -4582, 871, -4582, -4582, -4582, 13444, -4582, -4582, -4582, -4582, - 8881, 36099, 3915, -4582, 3613, 98779, -4582, 3616, 2099, 2109, - 37959, 3774, -4582, -4582, -4582, 8953, 3663, 13444, 3720, 3618, - 3621, -4582, 4451, 4451, 5790, 2129, -4582, 4451, 30984, 30984, - 4451, 4451, 30984, -4582, -4582, 9415, 3803, -4582, -4582, 9452, - -4582, -4582, -4582, -4582, -4582, -4582, -4582, 57306, 3617, 3250, - 76080, 3623, 76974, 1988, 40209, -4582, -4582, 2162, -4582, 40209, - 3883, -4582, 40209, 63564, -4582, 76974, 3624, 76974, -4582, 621, - 33774, 30984, 3667, -4582, -4582, -4582, 3493, -4582, 3667, -4582, - 3629, 76974, 2570, -4582, 614, -4582, -4582, 4004, 41109, 3972, - 30984, -4582, -4582, -4582, -4582, 59541, 3833, 59541, 1305, 9504, - 2783, 41109, 51523, 76974, 76974, 76974, 3788, 2783, 3638, -4582, - -4582, -4582, -4582, -4582, -4582, 3633, -4582, -4582, -4582, -4582, - 3719, -4582, -4582, 35, 3017, -4582, 2139, -4582, 4067, 3959, - -4582, -4582, -4582, -4582, -4582, -4582, 3799, -4582, -4582, 45612, - 59988, 76974, -4582, 3721, -4582, -4582, -4582, -4582, -4582, 42909, - 50601, -4582, 711, 3642, 3643, 1326, -4582, -4582, -4582, 76974, - 9572, 3645, 617, 3017, 76974, 76974, 3658, 3660, 1513, 1382, - 1641, 3001, 3950, -4582, -4582, -4582, -4582, 3799, -4582, -4582, - 868, -4582, -4582, -4582, -4582, 56412, -4582, 2176, -4582, 1583, - 3993, 63564, 4078, 4078, 76974, -4582, 9723, 3861, -4582, -4582, - 3948, 3638, 3897, 3940, -4582, 3664, 76974, 3831, 3666, 76974, - 3668, 3789, 1021, 1021, 76974, 76974, 76974, 2149, 1936, 2487, - 3428, 1357, 3992, 65352, 4035, 3328, 367, -4582, -4582, 1669, - -4582, 1179, 4010, 3723, -4582, 76974, 4108, 76974, 3050, 3249, - 76974, 3676, -4582, -4582, 66693, 3875, 1456, 23482, 3447, 3625, - 2014, 3813, -4582, 3814, -4582, 1338, -4582, 1936, 76974, 76974, - 41109, -4582, 99212, -4582, 2153, -4582, -4582, -4582, 3752, 3133, - 3791, 3792, 3682, 76974, 95, -4582, -4582, -4582, -4582, -4582, - 76974, -4582, 534, -4582, -4582, 4972, 36099, 98779, 2157, 30984, - -4582, 30984, -4582, 4101, -4582, -4582, -4582, 706, -4582, -4582, - -4582, 4451, 4451, 4451, -4582, 4103, 3493, -4582, -4582, 2161, - 4122, 35169, 4084, -4582, 76974, 2171, -4582, 30984, 3693, -4582, - -4582, 40209, 2162, 3694, 2175, 76974, 2181, 98779, 3695, 3699, - 40, 3700, 24563, 3691, -4582, -4582, -4582, -4582, -4582, 13444, - 13444, 76974, -4582, 3701, -4582, -4582, -4582, 3753, 76974, 2186, - -4582, 818, 13444, 1562, 1528, 534, 3952, 3638, -4582, 3703, - -4582, -4582, -4582, 353, 353, 76974, 3638, -4582, -4582, 76974, - 3793, -4582, -4582, 56412, 3995, -4582, 3766, -4582, 996, 3017, - 76974, 98779, -4582, 130, 4018, -4582, 98779, 98779, -4582, -4582, - -4582, 30984, 3798, -4582, -4582, -4582, 337, 430, -4582, -4582, - 76974, 76974, 76974, 76974, 76974, 309, -4582, 2187, -4582, 42009, - -4582, -4582, 2871, 1308, 2871, 1655, -4582, -4582, 2871, -4582, - 2871, -4582, 3574, 1308, 4078, 1007, -4582, -4582, -4582, 1816, - 3930, 3713, -4582, 1079, 3917, 3809, 3714, -4582, 63564, 4176, - 3249, 3708, 76974, -4582, -4582, -4582, -4582, -4582, -4582, -4582, - -4582, -4582, -4582, 2201, 3328, 4033, 2997, 3640, -4582, 76974, - 3756, -4582, 40209, -4582, -4582, -4582, 2871, -4582, 1412, 3724, - 4042, 3328, 1936, 1932, -4582, 3625, 3249, 3708, -4582, -4582, - -4582, 3725, -4582, 3534, 2014, 3447, -4582, -4582, 4125, 3924, - 4131, 3050, -4582, 2897, 2213, -4582, 6855,100078, 98779, 4071, - 3769, 3770, -4582, -4582, 3786, 76974, -4582, -4582, 3328, -4582, - 4972, 2229, -4582, 2231, 2239, 3890, 3787, -4582, 30984, 1293, - 3327, 57306, 3736, -4582, 36099, 2248, -4582, 3661, 76974, 2255, - -4582, 13444, 76974, -4582, -4582, 30984, -4582, 2272, -4582, -4582, - 30984, 3738, 30984, -4582, 33774, 3737, -4582, 4178, -4582, 1936, - -4582, 3133, 41109, -4582, 3862, -4582, 4052, -4582, 76974, 3794, - 50601, 3125, 3125, 1962, -4582, 1305, -4582, 76974, -4582, 3713, - 30984, -4582, 3838, -4582, -4582, 2273, 145, 3906, 3906, 2284, - 2290, 10036, 76974, -4582, -4582, -4582, -4582, -4582, -4582, 2299, - -4582, -4582, -4582, -4582, 2304, 3006, 1641, 3006, -4582, 3001, - -4582, -4582, 56412, -4582, 57753, -4582, -4582, -4582, 1308, -4582, - 1308, 3960, 76974, 53311, 1308, 1308, -4582, -4582, -4582, -4582, - -4582, 4088, 4034, -4582, 1751, -4582, -4582, -4582, -4582, 155, - -4582, 3956, 3957, 76974, -4582, 3758, -4582, 2315, 3464, 3880, - 3328, -4582, -4582, 76974, 4195, 4196, -4582, 1047, 76974, 3306, - 76974, -4582, -4582, -4582, 30984, 3931, -4582, 3640, 3050, 2014, - 3464, 3625, 1456, 41559, -4582, 3447, 3534, 3966, -4582, 3967, - -4582, 3776, 2997, 5367, -4582, -4582, 311, 4073, 4075, -4582, - -4582, -4582, -4582, -4582, -4582, -4582, -4582, 3078, 34239, 34239, - 3781, -4582, -4582, 76974, 3070, 3780, 35169, 56412, 2329, -4582, - 97480, -4582, 2330, 2335, -4582, 2346, 33774, 2351, -4582, 76974, - 3777, -4582, -4582, -4582, 44259, 59541, 353, 3785, -4582, 3795, - -4582, -4582, 3897, 1305, 3017, -4582, 13444, 76974, 63564, 4187, - -4582, -4582, -4582, -4582, -4582, -4582, -4582, 3017, 3855, 337, - -4582, 430, 76974, -4582, -4582, 2356, -4582, -4582, -4582, 76974, - 3435, -4582, 3435, -4582, -4582, 3923, -4582, 963, 1012, 1012, - 4140, -4582, 3839, -4582, -4582, 3796, -4582, 4257, 3920, 76974, - -4582, -4582, 711, 1936, 65352, 3328, -4582, -4582, 10064, 63564, - -4582, -4582, 3447, 3625, 2014, 30984, 2360, -4582, 3952, 156, - 3534, -4582, -4582, -4582, 41109, 3534, -4582, -4582, -4582, 1931, - 63564, 63564, 35634, 3936, 1110, 11385, -4582, -4582, -4582, -4582, - 2368, 37959, -4582, -4582, -4582, 76974, 4000, 277, -4582, 3955, - -4582, 2379, -4582, -4582, -4582, 1400, 534, 3125, 30984, 1305, - -4582, 3917, -4582, 3017, -4582, 76974, -4582, 3810, -4582, -4582, - -4582, -4582, 57753, 3435, 3723, -4582, -4582, 4259, -4582, 1001, - -4582, -4582, -4582, -4582, 76974, 3328, 3562, 3640, -4582, -4582, - 3815, 3534, 2014, 3447, 10361, -4582, 41559, 76974, 76974, -4582, - 2390, 3133, -4582, 2426, -4582, -4582, -4582, -4582, -4582, -4582, - -4582, 3812, 3816, 4249, -4582, -4582, -4582, -4582, -4582, -4582, - 3250, -4582, -4582, 36099, 36099, 4028, -4582, 277, -4582, 3818, - -4582, -4582, -4582, -4582, -4582, 10412, -4582, -4582, -4582, 337, - -4582, 4142, -4582, -4582, -4582, 3328, -4582, -4582, 55965, -4582, - 3447, 3534, 3952, -4582, -4582, -4582, 2997, -4582, 2215, -4582, - -4582, 2222, 2250, 3904, 4128, 34704, 4219, 3070, 3070, -4582, - -4582, 30984, -4582, 1305, 2392, 3994, -4582, -4582, 2396, -4582, - -4582, -4582, -4582, 3534, -4582, 76974, 3534, -4582, 2426, 3937, - 3941, -4582, 76974, 10678, -4582, 63564, -4582, 55965, -4582, -4582, - 3133, -4582, 3865, 3867, 2397, -4582, 3840, -4582, -4582, 4136, - 4138, -4582, 55965, 63564, 63564, 2403, -4582, -4582, -4582 + 10978, 93, 17662, -4998, -4998, 93, 64034, -4998, 72007, 998, + 1252, 103, 188, 17236, 72476, 79511, 263, 357, 18109, 93, + 79511, 3904, 54184, 69193, 1381, 79511, 1644, 1422, 54184, 79511, + 79980, 1551, 1592, 883, 80449, 72945, 67786, 1150, 79511, 1743, + 1413, 80918, 73414, 1555, 73883, 1422, 49969, 123, 1540, 81387, + 79511, 1665, 1911, 1562, -4998, -4998, -4998, -4998, -4998, -4998, + -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, + -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, + -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, + -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, + -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, + -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, + -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, + -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, + -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, + -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, + -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, + 28, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, + -4998, 1539, -4998, 1166, 1690, 2000, 992, 1595, -4998, -4998, + 2079, 64034, 79511, 79511, 79511, 1812, 79511, 1732, 79511, 200, + 64034, 60282, 74352, 1884, 1717, 46217, 81856, -4998, 64034, 79511, + 58406, 64034, 79511, 79511, 82325, 79511, 82794, 79511, 131, 70600, + 79511, 1864, 79511, 79511, 58875, 83263, 1979, 1186, 256, -4998, + -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, + -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, + -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, + -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, + -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, + -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, + -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, + -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, + -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, + -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, + -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, + -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, + -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, + -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, + -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, + -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, + -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, + -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, + -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, + -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, + -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, + -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, + -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, + -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, + -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, + -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, + -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, + -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, + -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, + -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, + -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, + -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, + -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, + -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, + -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, + -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, + -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, + -4998, -4998, -4998, 1719, 541, -4998, 282, -4998, -4998, -4998, + -4998, -4998, -4998, -4998, -4998, -4998, 79511, 18512, 1644, 2079, + -4998, 1665, 79511, 2038, 79511, 1829, 83732, 1920, 79511, -4998, + 79511, 1944, 84201, 818, 1706, 60282, 1995, 46686, 2029, 79511, + 79511, 60282, 84670, 85139, 85608, 79511, 79511, -4998, -4998, 2059, + 79511, 79511, -4998, 2192, 60751, 1647, 2214, 2277, 2271, 907, + -4998, 74821, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, + 63096, 357, -4998, -4998, 2251, 64503, 2291, -4998, -4998, 86077, + 102891, 2091, -4998, 828, 64972, 61220, 2424, 2093, 47155, 2462, + -4998, 65441, -4998, 61689, 65910, -4998, -4998, -4998, -4998, -4998, + 86546, -4998, 87015, 2169, 2291, -4998,103346, 62158, -4998, 2333, + 87484, 87953, 88422, 2079, 2053, 1909, 1390, 41982, -4998, -4998, + -4998, 998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, + 417, 1445, 234, 216, 252, -4998, -4998, 225, 226, 238, + 417, 2559, 2559, -4998, 79511, -4998, -4998, 1445, 641, 2086, + 2086, 2086, 2312, 60, -4998, 2086, 2249, -4998, -4998, -4998, + -4998, 73883, -4998, 2115, 1644, 2128, 2565, 2190, -4998, -4998, + -4998, -4998, -4998, 2230, 2584, 2584, 79511, -4998, -4998, 2631, + 2210, 2471, 2200, -4998, -4998, -4998, 2414, 2421, 2434, 183, + 1644, 231, -4998, 2564, -4998, 2453, 28137, 28137, 1644, 75290, + 88891, 259, 55123, 367, 75759, 2275, 1358, 2472, -4998, -4998, + -4998, 807, -4998, 2692, 2283, 2551, 2200, 1186, 43389, -4998, + 2280, 541, 73883, -4998, -4998, -4998, 62627, 2607, 30065, 79511, + 2294, -4998, 2325, 2294, 2304, 2341, 2000, -4998, 10978, 62627, + 79511, 1501, 1501, 2766, 1501, 1577, 1869, -4998, 2409, -4998, + 2668, 2632, 73883, 2356, 299, -4998, 1431, 2366, 158, 2368, + 1534, 968, -4998, -4998, 948, 79511, 523, 2420, 76228, 9513, + 2390, 541, 2395, -4998, -4998, -4998, 2577, 1037, -4998, -4998, + -4998, -4998, 2707, 2751, 7704, 355, 76697, -4998, -4998, -4998, + -4998, 79511, 79511, -4998, -4998, -4998, -4998, -4998, -4998, -4998, + -4998, -4998, -4998, 2423, 1206, -4998, -4998, 2425, 2771, 2649, + 10285, 938, 2738, 2604, 1301, 10309, 2680, 1326, 2794, 16467, + 1472, 2815, 1565, 1744, 77166, 79511, 2778, 2821, 6462, 1842, + 1015, 2695, 926, 2738, 2813, 2648, 1301, 2836, 5493, 79511, + -4998, 2762, 2873, 835, -4998, 440, -4998, 22885, 30065, 49500, + -4998, 541, 2569, 2716, 72, 2758, 64034, 2521, -4998, -4998, + 79511, -4998, -4998,103801, 2614, -4998, 859, 64034, -4998, 2754, + 2602, 47624, 79511, 64034, -4998, -4998, 64034, 79511, -4998, -4998, + -4998, -4998, -4998, -4998, -4998, 2702, 2889, 79511,103801, -4998, + 2845, 79511, 79511, -4998, -4998, 2576, -4998, -4998, -4998, -4998, + 2086, 79511, 2997,103801, 2806, 220, 79511, 44, 3050, 79511, + 2825, 44, 2639, 89360, -4998, -4998, 44, -4998, -4998, -4998, + 79511, 79511, 2611, 1192, 2834, 2952, 44, 2855, 3074, 3078, + 2866, 2715, 2879, 2325, 3051, 2862, 1025, 373, 203, 2001, + 44, 2721, 89829, 90298, 79511, 2729, 79511, 2584, 64034, 64034, + 64034, 79511, 3016, -4998, 2865, -4998, -4998, 1098, -4998, -4998, + -4998, -4998, -4998, 3010, -4998, 194, 3035, 2708, 3042, 1670, + -4998, -4998, 2763, -4998, 2763, 2763, 2714, 2714, 2897, 2717, + 3057, -4998, -4998, -4998, 1934, 2763, 2714, -4998,104711, -4998, + 1586, 1738, -4998, 230, -4998, 3171, -4998, -4998, -4998, -4998, + -4998, -4998, -4998, -4998, 2723, -4998, 997, 1957, -4998, -4998, + 2755, -4998, 3063, 294, -4998, 3064, -4998, 2722, 90767, -4998, + 91236, 91705, 3066, 322, -4998, 60282, 3068, 294, 3069, 2722, + 3070, 294, 3072, 585, 3073, -4998, 1056, 3061, 3075, 230, + 3076, 2039, 2722, 63565, 3077, 391, -4998, 3080, 400, -4998, + 3082, 2953, -4998, 30065, -4998, 2839, -4998, 1540, -4998, 1851, + -4998, 53242, -4998, 1390, 1445, -4998, 79511, 1445, 79511, 1445, + 79511, 1445, 79511, 1445, 79511, 79511, 79511, 1445, -4998, -4998, + -4998, 79511, 2747, 79511, 79511, -4998, -4998, -4998, 69662, 60282, + 70131, -4998, 79511, -4998, 167, 1644, -4998, -4998,103801, 3199, + 60282, 2584, -4998, 1943, -4998, -4998, 79511, 79511, -4998, -4998, + -4998, 3011, 79511, 3081, 3088, 69662, 60282, -4998, 92174, -4998, + 63096, 2972, 2764, -4998, -4998, -4998, -4998, -4998, 2082, 1637, + 248, 1859, 30065, 2767, 248, 248, 2769, 3091, -4998, -4998, + -4998, 306, 2772, 2773, -4998, 307, 307, -4998, 2780, 2786, + -4998, 324, 2787, 2789, 2188, 2234, 325, 2793, 2795, 2796, + 1934, 248, 2797, 30065, -4998, 2798, 307, 2799, 2801, 2802, + 2316, 2803, -4998, 2319, 2804, 336, 350, 2805, 2807, -4998, + 2780, -4998, 329, 2808, 2809, 2810, 2811, 2812, 2814, 2816, + 2818, 30065, -4998, 30065, 30065, -4998, 26686, 541, 2326, -4998, + -4998, -4998, -4998, -4998, -4998, -4998, -4998, 332, 6591, -4998, + 2831, -4998, -4998, 2963, -4998, -4998, 30065, -4998, -4998, 435, + -4998, 337, -4998, -4998, -4998, 541, 3048, 2817, -4998, -4998, + 935, 2819, -4998, 1808, -4998, -4998, -4998, -4998, -4998, -4998, + -4998, -4998, -4998, -4998, 54654, 3265, -4998, 375, 1644, 440, + 1008, 3209, 51829, 52300, -4998, -4998, 3083, -4998, 79511, -4998, + -4998, 541, 160, 1978, -4998, -4998, 53242, -4998, -4998, 998, + 16639, 1988, 2294, 79511, 79511, 3270, -4998, -4998, -4998, 1998, + -4998, 2820, -4998, 2325, -4998, -4998, 2000, 2000, 30065, 2000, + 296, 1341, 28619, 30547, 3154, 3041, 1297, 1543, 3156, -4998, + 3045, 1577, 1869, 73883, 79511, 92643, 2955, 30065, -4998, 3257, + 2916, 2919, 2975, 50907, -4998, 2922, 2890, 2924, 2980, 56530, + 2846, 2930, 2931, 2986, -4998, 3112, -4998, -4998, 2935, 2936, + 93112, -4998, -4998, 993, -4998, -4998, -4998, 993, -4998, 2868, + 1559, 959, 1293, 2939, 321, 212, 3260, -4998, 1387, -4998, + -4998, 2995, -4998, 5913, 79511, 3200, 5647, 3071, 355, 2993, + -4998, -4998, -4998, 3130, 2954, 79511, 2958, 3097, 355, 330, + 93581, -4998, -4998, 79511, -4998, -4998, -4998, -4998, 7042, 3237, + 25776, -4998, 2009, 2960, 2942, 2971, 79511, 66848, 2205, 3084, + 3095, 1587, 2212, 257, 3026, 79511, 1668, 3102, 79511, 2893, + 2978, 2982, 3198, 2899, 1460, 3303, 2900, -4998, -4998, -4998, + 3268, -4998, 2340, 2361, 3099, -4998, 3206, 3250, 8071, 2969, + 2970,101526, -4998, 2996, 1076, 48093, 79511, 79511, 2998, 2999, + 94050, 7042, 3279, 3009, 3012, 3002, 3003, 50, 3304, 1378, + 3005, -4998, -4998, -4998, 1378, 3007, 3008, 94519, 7042, 3293, + 79511, 3014, 3015, 79511,104711, 355, -4998, 3362, 355, 355, + 1925, 3363, 3020, 268, 3185, 1356, 44, 2900, 2718, -4998, + 3029, 3030, 963, -4998, 3157, 79511, 3036, 3043, 1799, 1644, + -4998, -4998, 3049, 3134, 3052, 106, -4998, -4998, 1345, 3059, + 73883, 3159, 3161, 1668, 394, 1389, 2900, -4998, 3054, 3055, + 2899, 2899, 79511, 79511, 79511, 79511, 79511, 269, 3410, 3418, + 3062, 433, 1087, 2976, -4998, 1378, 59344, 3065, -4998, 1378, + 79511, 180, 1409, 2900, 1676, 1714, -4998, -4998, -4998, 1186, + -4998, 30065, 30065, 30065, 2985, -4998, 1674, 16639, 109, -4998, + 2363, 7184, 2984, -4998, -4998, -4998, -4998, -4998, -4998, -4998, + -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, + -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, + -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, + -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, + -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, + -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, + -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, + -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, 79511, + -4998, 79511, -4998, 3251,103801, 3192, 3262, -4998, 3025, -4998, + 3267, 355, -4998, 79511, 79511, 3272, 3208, 3276, 3277, 3212, + 1059,103801, 3213, 3281, -4998, 3282, 3283, 3090, 179, 3085, + 3013, 3460, 3350, 79511, 56530, -4998, 3479, 993, -4998,103801, + 3228, 3364, -4998, 79511, 3246, 647, -4998, 3397, 3087, -4998, + -4998, 634, 79511, 236, 3086, -4998, -4998, 3365, 60282, 930, + 3366, 1644, 3093, 3371, 3243, 1644, 60282, 3288, 79511, 79511, + 79511, 79511, -4998, -4998, 3252, 845, 290, -4998, 59344, 3261, + -4998, 79511, 3264, 2718, 3269, 3503, 649, 2086, 94988, 3380, + 95457, 3089, 3092, 3092, 3518,103801, 3340, -4998, 2135, -4998, + 3205, -4998, 64034, -4998, -4998, 64034, -4998, -4998,103801, 79511, + 3094, -4998, 3104, -4998, -4998, 30065, -4998, -4998, -4998, 2559, + -4998,103801, 2763, 2763, -4998, -4998, 3524, 3158, 3160, 2559, + -4998, 2559, -4998,103801, -4998, 3101, 3108, 2559, 3162, 3169, + 3172, -4998, 3107, 3174, 2559, -4998, -4998, 2127, -4998, -4998, + 64034, 64034, -4998, 60282, 60282, 3415, 391, 3417, 3137, 3429, + 3165, 48093, 48093, -4998, 412, 64034, -4998, 60282, 64034, -4998, + 79511, -4998, 79511, -4998, -4998, -4998, -4998,103801,103801, -4998, + 60282, 59344, 3441, 3448, 585, 79511, 79511, -4998, 79511, 79511, + -4998, 79511, 79511, 2012, 95926, 1390, 62627, -4998, -4998, -4998, + -4998, -4998, -4998, -4998, -4998, 79511, -4998, 79511, -4998, 79511, + -4998, 79511, -4998, 79511, -4998, -4998, -4998, 79511, -4998, 79511, + 2016, -4998, -4998, 2027, 1461, 79511, 79511, 798, 64034, 79511, + 3326, 64034, 64034, 79511, 79511, 79511, 79511, 79511, 3194, 2819, + 972, -4998, 1308, 882, 73883, 3338, -4998, -4998, 2037, 1665, + 1095, 79511, 1182, 2230, -4998, -4998, -4998, -4998, 70131, 69193, + 3440, 120, 79511, -4998, -4998, 5860, 30065, 541, 27650, -4998, + -4998, 16639, 3164, 30065, 30065, 3128, 2559, 2559, -4998, 409, + 30065, 30065, 30065, 2559, 2559, 30065, 5054, 30065, 48093, 30065, + 35367, 23861, 30065, 30065, 27168, -4998, 30065, 3368, 36807, 30065, + 1008, 3369, 30065, 1008, 5054, 541, 3609, 3609, 2777, 6966, + 3135, 541, -4998, -4998, 1165, 2559, 1165, -4998, 274,103801, + 30065, 30065, 30065, 30065, 56530, 3221, 235, 79511, 30065, 3142, + 2165, -4998, 30065, -4998, 3143, 30065, 3225, 272, 30065, 30065, + 30065, 37278, 30065, 30065, 30065, 30065, 30065, 30065, -4998, 38699, + 408, 3465, 3487, 994, 498, 77635, 28137, 3481, -4998, 22885, + -4998, 293, 3481, -4998, -4998, -4998, 79511, 3265, -4998, -4998, + -4998, -4998, 3240, -4998, -4998, -4998, -4998, -4998, -4998, -4998, + 214, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, + 3163, -4998, -4998, -4998, -4998, 3163, -4998, 3167, 3462, 3466, + 585, 79511, 62627, -4998, -4998, -4998, 2427, -4998, 30065, -4998, + 2048, 1965, 79511, 79511, -4998, 3442, -4998, 3168, -4998, 7244, + 3442, -4998, -4998, 35846, 3284, 3435, 3377, -4998, -4998, -4998, + 3175, 16639, 31029, 31029, -4998, 2122, 16639, 2132, -4998, -4998, + -4998, -4998, -4998, -4998, 205, -4998, 79511, 171, 3154, 1543, + 3232, 130, 3621, 79511, -4998, 43858, 2057, -4998, 60282, 79511, + 79511, 3376, -4998, 3613, -4998,104711, -4998, 3181, -4998,104256, + 100147, -4998, -4998, 702, -4998, 884, 60282, -4998, 79511, 79511, + -4998, 56530, 60282, 79511, 79511, -4998, 60282, 79511, 79511, -4998, + -4998, -4998, -4998, -4998, 53713, 115, 69193, 3318, 68255, -4998, + -4998, 3184, 79511, 3244, 3457, 3461, 1332, -4998, -4998, 96395, + -4998, 3408, 60282, 79511, 79511, 30065, 3412, 79511, 79511, -4998, + 334, 3278, 3286, -4998, 79511, 3287, 3436, 64034, 3195, 79511, + 79511,103801, 3274, 878, 64034, 3245, 48562, 64034, 64034, 79511, + 79511, 79511, 79511, 3335, 3533,103801, 79511, 3477, 1311, 73883, + 242, 1696, 2900, 3428, -4998, 331, -4998, 60282, -4998, 79511, + 3420, -4998, -4998, -4998, 55592, 3657, 3331, -4998, -4998, -4998, + 96864, -4998, -4998, 3431, -4998, 2075, -4998, 60282, 60282, 79511, + 8276, 97333, 1419, 3443, -4998, -4998,103801, -4998, 79511, 78104, + 79511, 79511, 3482, 79511, 71069, 97802, 98271, 1528, 1622, 3485, + 79511, 71538, 3486, -4998, 3359, 79511, -4998, -4998, 56999, 60282, + 79511, 815, 56530, -4998, -4998, 79511, -4998, 942, -4998, 79511, + 3791, 3437, -4998, -4998, 3307, 3317, 79511, 333, 1870, 2900, + 3594, 79511, 79511, 3226, 2088, 60282, 79511, 56530, -4998, 3446, + 133, 60282, 79511, 55592, -4998, 3452, 73883, 73883, 60282, 79511, + 73883, -4998, 79511, 88891, -4998, 60282, 886, -4998, 60282, 79511, + 55592, -4998, 3459, 3406, 60282, 79511, 17960, -4998, -4998, -4998, + 355, -4998, -4998, -4998, -4998, -4998, 79511, 79511, 355, 79511, + 79511, 355, 1258, -4998, 60282, 79511, -4998, -4998, -4998, 3375, + 60282, 79511, 79511, 417, -4998, 60282, 3086, 79511, 56530, -4998, + 79511, 7489, 79511, 79511, 79511, 79511, 79511, 79511, 60282, 79511, + -4998, -4998, 1062, 1173, 1143, 1768, 762, 79511, 3557, 79511, + 98740, 60282, 79511, 79511, 1644, 79511, 56530, 1632, -4998, -4998, + 3381, -4998, 60282, 886, -4998, 8864, 79511, 79511, 79511, 3336, + 3339, 317, 3426, -4998, -4998, -4998, 110, 110, 3463, -4998, + 30065, 30065, 29101, 3273, -4998, -4998, 30065, -4998, -4998, -4998, + 1044, 3711, 99209, 1044, -4998, 1044, 3538, 3322, 3323, 1044, + 79511, 1044, 1044, 79511, -4998, -4998, -4998, -4998, 3537, 79511, + 1044, 1044, 1044, 3444, -4998, -4998, 3444, 195, 30065,103801, + 79511, -4998, 2094, -4998, 3289, 845, -4998, -4998, 56530, 79511, + 186, 872, 3610, 3484, 67317, 3254, 3601, 79511, 3321, 79511, + 3728, 3373, 73883, 2611, -4998, 3254, 79511, -4998, 1694, 69193, + -4998, -4998, -4998, -4998, -4998, -4998, -4998, 79511, -4998, -4998, + 3603, 79511, 30065, 3453, -4998, 1644, 2611, 2611, 2611, 2611, + -4998, -4998, -4998, -4998, 3496, 2019, -4998, 3285, 2611, 79511, + 3409, 3625, 3254, 3291, 3626, -4998, 2718, 3627, 1078, 79511, + 3506, 67317, 3353, 3337, 3517, 3747, 2086, 1644, 3522, 3509, + -4998, 51368, -4998, 2611, 26231, 3667, 6524, 3510, 3571, 63096, + 3611, 3614, 3629, -4998, 194, -4998, 3754, 1670, 3634, 30065, + 2108, 3309, 230, -4998, -4998, 3313, 3108, 3332, 3333, 3312, + 3315, -4998, 2559, 228, 3316, 1115, 808, 3449, 2559, 3560, + 3319, -4998, 294, -4998, 2722, -4998, 79511, -4998, 79511, 79511, + 79511, 79511, 322, -4998, -4998, 294, 2722, 294, 585, -4998, + 3590, 230, 2722, 3447, 3649, 63096, -4998, 391, -4998, 400, + -4998, 3534, 585, -4998, 3548, 2086, -4998, -4998, -4998, -4998, + -4998, -4998, -4998, -4998, 2117, -4998, 79511, -4998, 3623, 3624, + 3628, 3630, 3632, 3325, 3334, 3370, 79511, 3341, 3325, 355, + 3341, 3341, 3325, 2819, 2819, 3325, 3334, 59813, 3792, 3651, + -4998, 3422, 3342, 3664, 192, -4998, 209, 108, 3586, -4998, + -4998, -4998, -4998,103801, -4998, 60282, 3384, 2584, 2584, -4998, + 201, 3567, 3355, 59813, 3794, 585, -4998, 64034, -4998, -4998, + 103801, 3439, 3458, 64034, 3575, 3416, 64034, -4998, -4998, 64034, + -4998, -4998, -4998, -4998, -4998,103801, -4998, 3633, 79511, 79511, + 2119, -4998, -4998, 1900, -4998, 1916, 30065, 468, -4998, 14479, + 2137, 30065, 3374, 3385, -4998, 3691, -4998, -4998, -4998, -4998, + -4998, -4998, 3693, 3398, 3698, -4998, 2139, 2167, 2168, 3400, + 3401, 2949, 5689, 3404, 14578, 3407, 3378, 35367, 35367, 26686, + 2171, -4998, 35367, 3411, 3582, 2174, 13332, 3405, 3419, 14808, + 29583, 30065, 29583, 29583, 15400, 3405, 3427, 2180, 56530, 3598, + 15910, 2199, -4998, 30065, 56530, 5998, 30065, -4998, 30065, -4998, + 3432, -4998, -4998, 2765, 2765, 2765, 5054, -4998, 3454, -4998, + 35367, 35367, -4998, 1319, 26686, -4998, -4998, 3732, -4998, -4998, + -4998, -4998, -4998, -4998, -4998, 2785, -4998, 3413, -4998, -4998, + 3659, 2408, 48093, 4503, 30065, 303, 30065, 3142, 30065, 3516, + 2765, 2765, 2765, 1014, 418, 418, 288, 288, 288, 1904, + 498, -4998, -4998, -4998, 3445, 3451, 3455, 3637, 3456, 30065, + -4998, 2233, 2332, 79511, 4195, 5347, 5655, -4998, -4998, -4998, + 39637, 3483, 109, 3483, -4998, 1186, 2559, 1165, 52771, -4998, + -4998, -4998, -4998, -4998, -4998, -4998, 79511, 16639, -4998, -4998, + 3688, 3464, -4998, -4998, 30065, -4998, -4998, 2225, 3468, 957, + 814, 2362, 2362, 2122, 960, -4998, -4998, 3505, -4998, 30065, + 2198, -4998, 2209, -4998, -4998, -4998, -4998, 2819, -4998, 3704, + -4998, -4998, -4998, 39637, 3498, 3511, 687, 42920, 3668, -4998, + 79511, -4998, 79511, 359, -4998, 3470, -4998, -4998, -4998, -4998, + -4998, -4998,100147, 1957, -4998,104256, -4998,104256, -4998, 1957, + 3893, -4998,100147, 1826, -4998, -4998, -4998, -4998, -4998, -4998, + -4998, -4998, -4998, -4998, -4998, -4998, -4998, 60282, 60282, 3671, + 79511, 3669, 3674, 30065, 343, 79511, 3467, 3471, 1462, 3761, + 79511, -4998, 3809, 585, -4998, -4998, 3553, -4998, 16639, -4998, + -4998, -4998, -4998, -4998, 60282, 79511, -4998, 63096, -4998, 79511, + -4998,103801, -4998, -4998, -4998, 79511, 3508, 79511, -4998, 79511, + 79511, 79511, -4998, -4998, -4998, -4998, -4998, -4998, -4998, 1108, + 103801, -4998, -4998, 79511, 79511, 876, 3558, 3559, 79511, -4998, + 149, 3157, 9012, 79511, 79511, 79511, 3764, -4998, -4998, -4998, + -4998, 3695, -4998, 3816, -4998,100147, -4998, 2722, 1117, 3562, + 2900, 3706, -4998, 3823, 3692, -4998, 3608, 1096, -4998, -4998, + 3618, -4998, -4998, -4998, -4998, 3828, 585, 3829, 585, 79511, + 79511, 79511, 79511, 3631, -4998, -4998, -4998, -4998, 3635, 3756, + -4998, 56530, 56530, 56530, 2203, -4998, -4998, 1644, -4998, -4998, + -4998, -4998, -4998, -4998, 3786, -4998, 2236, -4998, 16, -4998, + -4998, -4998, -4998, -4998, 3832, 60282, 79511, 9287, 79511, 79511, + 79511, 3707, 1611, -4998, 1083,103801, -4998,101981, -4998, -4998, + 2257, -4998, 3515, 79511, 3585, 60282, 3564, -4998, -4998, -4998, + 3844, 3507, 3507, -4998, -4998, 3507, -4998, -4998, -4998, 3771, + 3702, -4998, 327, 3705, 60282, 3577, -4998, -4998, -4998, -4998, + 3855, 3604, -4998, -4998, 3605, 1962, 2900, 2718, -4998, -4998, + -4998, -4998, -4998, -4998, -4998, -4998, -4998, 3639, -4998, -4998, + -4998, -4998, -4998, -4998, -4998, 1432, -4998, -4998, 1271, 424, + 2032, 2900, -4998, 365, -4998, 3606, -4998, 3607, -4998, -4998, + -4998, 3776, 3777, 3783, 3616, 3617, 3675, 3620, 3640, 3677, + -4998, 3641, 3682, 3642, 3684, 3643, 3887, 585,103801, 3774, + 1644, 3678, 3891, 585, -4998, 3650, -4998, 3652, -4998, 2258, + 4001, -4998, 79511, -4998, 338, 2136, 2900, -4998, 3653, -4998, + 60282, 79511, -4998, -4998, -4998, 30065, 3573, 3574, 3578, 16639, + 16639, 30065, -4998, -4998, 16639, 3569, -4998, -4998, -4998,103801, + 79511, 3851, -4998, -4998, 1044, 79511, 79511, -4998, 3853, -4998, + -4998, 3856, 79511, 3858, -4998, -4998, -4998, -4998, 490, 490, + -4998, -4998, 3896, 7909, 3583, 348, -4998, 56530, 45265, 2157, + 2292, 304, 44, -4998, 63096, 79511, 63096, -4998, 872, 3692, + 79511, 79511, 79511, 3591, 3587, -4998, -4998, -4998, -4998, 60282, + 761, 60282, 2559, -4998, -4998, 3665, -4998, 79511, 2086, 4079, + 3921, -4998, 3507, -4998, 4038, 3078, 930, 3750, 1759, 2715, + 3979, 2325, 361, 56530, 3337, -4998, -4998, -4998, -4998, 79511, + 79511, 845, 1644, -4998, 3600, 3599, -4998, 79511, 3934, 79511, + 79511, 79511, 79511, 3384, 3612, 79511, 3615,103801, 79511, 2175, + 2899, 4059, 3952, 1665, 3353, 3696, 3953, 73883, 3638, 2268, + -4998, -4998, -4998, 2273, 191, -4998, 1644, 63096,101071, 3943, + -4998, 6524, -4998, -4998, 6524, 920, 79511, 3927, -4998, -4998, + 1665, -4998,103801, 3619, -4998, 2278, -4998, 2279, -4998, -4998, + -4998, 2559, -4998, -4998, 962, 962, 3622, -4998, 3644, -4998, + -4998, -4998, -4998, -4998, -4998, -4998, 3636, -4998, -4998, -4998, + 391, 3679, 585, 3680, 585, -4998, -4998, -4998, -4998, 79511, + -4998, 79511, 59344, 585, -4998, -4998, 79511, -4998, 3959, -4998, + -4998, 3760, 3762, 3765, 3766, 3782, 79511, 3325, -4998, 3645, + 60282, 1502, -4998, -4998, 3835, -4998, -4998, 73883, 3767, -4998, + -4998, -4998, -4998, 3982, 3992, -4998, -4998, -4998, 1036, -4998, + 79511, 79511, 60282, 69662, 423, 60282, -4998, 3930, 3931, -4998, + -4998, 3935, 355, -4998, 3936, 3938, 3940, -4998, 3941, 3945, + -4998, -4998, -4998, 3654, 15356, 30065, -4998, 4007,103801, -4998, + 8303, -4998, -4998, 30065, 30065, -4998, 30065, -4998, -4998, -4998, + -4998, -4998, -4998, 2265, 30065, -4998, 30065, 3995, -4998, 24349, + 4151, 4151, 3672,103801, 35367, 35367, 35367, 35367, 1649, 2799, + 35367, 35367, 35367, 36328, 35367, 35367, 35367, 35367, 35367, 35367, + 36328, 586, -4998, 3874, 30065, 30065, 4009, 3995, -4998,103801, + 3683, 3405, 3694, 3699, 30065, -4998, -4998, 2295, 37757, 3703, + 56530, -4998, 30065, 13825, 2305, 3731, 15934, 541, 8324, 370, + 30065, 3253, 3361, 30065, 2309, 30065, 4010, -4998, -4998, -4998, + -4998, 3697, -4998, -4998, 3917,103801, -4998, 30065, 3709, 3845, + 35367, 35367, 4562, -4998, 5586, 30065, 26686, -4998, 3463, 3734, + 44327, -4998, 24837, 3701, 1422, 1422, 1422, 1422, -4998, 79511, + 79511, 79511, 40106, 4017, 3712, 39168, 78573, 3710, 2467, -4998, + 78573, 79042, 78573, -4998, 3714, -4998, 541, 30065, 4015, 3716, + 4015, 440, 3717, -4998, -4998, -4998, -4998, 1665, -4998, 3713, + -4998, 3468, 1568, -4998, -4998, -4998, 1075, -4998, 3795, -4998, + -4998, -4998, 3710, 31511, 3863, -4998, -4998, -4998, 3759, 2310, + -4998, -4998, 4122, 3863, -4998, -4998, 2322, 43858, 3498, 30065, + 541, 2328, 1910, -4998, -4998,100147, -4998, 3793, 2722, 2722, + 1755, 3325, 4047, 1755, 8849, -4998, -4998, 40575, 79511, 79511, + -4998, 79511, 2334, 1554, 79511, -4998, 79511, -4998, -4998, -4998, + -4998, 4174, -4998, 79511, -4998, -4998, 3784, 3787, 79511, 79511, + 79511, 79511, 3994, -4998, -4998, 2368, -4998, -4998, 60282, 79511, + -4998, -4998, -4998, 396, 2443, 2900, -4998, 3807, -4998, -4998, + 4014, 79511, -4998, 4163, 3824, 79511, 4072, 79511, 3735, -4998, + 1554, 3846, 4056, 291, 2899, 268, 4979, -4998, 148, -4998, + -4998, 3815, -4998, 79511, -4998, 79511, -4998, -4998, -4998, -4998, + -4998, -4998, -4998, 3876, -4998, -4998, -4998, -4998, 56999, -4998, + -4998, 79511, -4998, 56530, 45265, 56530, 79511, -4998, 1446, 443, + 2520, 2900, -4998, 3830, -4998, 4083, 3833, 3834, 3883, 204, + 266, 3836, 3838, 3886, 3753, 3757, 3763, -4998, 56530, 45748, + 3915, 79511, 2722, 3768, 3799, 79511, 417, 393, -4998, -4998, + -4998, -4998, 1644, 2722, 1644, 79511, 79511, 79511, 79511, 417, + 56530, -4998, 4194, 3859, 79511, 79511, 79511, 79511, -4998, 3817, + -4998, 79511, 79511, 4091, 240, 2102, 60282, 79511, 79511, 60282, + 79511, 79511, 79511, 79511, 79511, 79511, 79511, 3980, -4998, 4183, + 4111, 2085, 4153, 3847, 79511, -4998, 79511, 1644, -4998, 3157, + 79511, 79511, 79511, 79511, -4998, -4998, -4998, -4998, -4998, 3463, + -4998, 3773, 4052, 1044, -4998, 4053, 4060, 1044, 1044, 4068, + 1044, -4998, -4998, 44, -4998, 211, 79511, -4998, 2357, 79511, + -4998, -4998, -4998, 3713, 2340, 2361, -4998, -4998, -4998, -4998, + -4998, -4998, 79511, 3781, 79511, 79511, 35367, -4998, 1816, 1490, + 984, -4998, 4065, 79511, 3086, -4998, -4998, -4998, 933, 79511, + -4998, -4998, -4998, -4998, -4998, 759, 3612, -4998, 4085, 67317, + 2722, 60282, 60282, 2722, -4998,103801, 3797, 3337, -4998, 229, + 3881, 60282, 930, 1216, 99678, 3093, 3837, 4013, 39637, 1432, + -4998, 3801, 3966, -4998, 3806, 3804, -4998, -4998, 79511, 3692, + 59344, 2347, 2718, 4260, 811, 2053, -4998, 68724, 4003, 3612, + 4085, -4998, 2899, 4023, 4024, -4998, 1665, 79511, 3384, 3337, + 1644, 79511, 3244, 45265, -4998, 4302, -4998,100147, 30065, 30065, + -4998, 3813, -4998, 3818, 6524, -4998, 3890, 3819, -4998, -4998, + -4998, -4998, -4998, 3901, 3821, 79511, -4998, 3825, 3634, -4998, + 3634, -4998, 3831, -4998, -4998, -4998, -4998, -4998, -4998, 79511, + -4998, 79511, -4998, 585, -4998, 3947, -4998, 585, 79511, 79511, + 79511, 79511, 79511, 79511, 3325, 355, -4998, 4139, 59813, -4998, + -4998, 2353, 79511, -4998, -4998, -4998, 4207, -4998, -4998, 120, + 4152, -4998, -4998, 1068, 1068, 1068, 4108, 1068, 1068, 1068, + 1068, 1068, -4998, 30065, 16639, -4998, 3842, -4998, 16639, 16639, + 16639, 3843, 9161, 16639, 4009, -4998, 2359, 30065, -4998, 4326, + 4326, 4326, 4575, 4156, -4998, 1275, 3848, 4326, 4326, 4326, + 429, 376, 376, 237, 237, 237, 4151, 586, 16639, 16639, + -4998, -4998, 3860, -4998, -4998, -4998, 3405, -4998, 31993, 1091, + 4277, 36807, -4998, -4998, -4998, 3889, 3892, 3861, -4998, 30065, + 32475, 3864,104711, 4043, -4998, -4998, -4998, 1711, 30065, 30065, + 4637, -4998, 7749, 30065,103801, -4998, 2360, 4637, 500, 30065, + 3430, 4262, 30065, 30065, 5641, 9776, 3866, 30065,100602, -4998, + -4998, -4998, 2364, 30065, 79511, 79511, 79511, 79511, -4998, -4998, + -4998, 78573, 79042, 78573, 3865, 38228, 25307, 2467, 3869, 79511, + -4998, -4998, 3872, 39637, 4131, 4074, -4998, 39637, 4074, 1452, + 4074, 4132, 3964, 44796, -4998, -4998, 3877, -4998, 4078, -4998, + 2009, 16639, 4310, 4187, 2377, 4187, 1644, 3880, 48093, -4998, + -4998, -4998, -4998, 3969, -4998, 4096, 16639, 28137, -4998, 1665, + 2567, 79511, 541, 112, -4998, 3900, 79511, -4998, 3863, 16639, + -4998, 3962, 2373, -4998, -4998, -4998, -4998, -4998, -4998, -4998, + 3973, 69193, 4214, -4998, 30065, 2374, -4998, 3932, 4308, 193, + 2375, 2379, 1554, -4998, 4193, -4998, 1731, 4189, 227, -4998, + 585, -4998,103801, -4998, 79511, 79511, -4998, -4998, -4998, -4998, + 79511, 2846, -4998, -4998, 79511, 79511, 79511, 79511, -4998, -4998, + 60282, 79511, -4998, 79511, -4998, 56530, 2292, 417, 1816, 4202, + 4203, 4120, -4998, 355, -4998, 1816, 4121, 417, 79511, -4998, + -4998, 3360, -4998,103801, 585, 585, -4998, -4998, -4998, -4998, + -4998, 3918, -4998, 4335, 3998, 79511, 79511, 79511, 79511, 79511, + 60282, 79511, 79511, 2559, 2559,103801, 3905, -4998, 2559, 2559, + 3906, -4998, 60282, 79511, 79511, -4998, -4998, -4998, -4998, -4998, + -4998, -4998, -4998, -4998, -4998, -4998, 3993, -4998, 30065, 4330, + -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, + -4998, -4998, -4998, -4998, 60282, 79511, 3996, -4998, 4000, -4998, + 728, -4998, -4998, 79511, 79511, 79511, 79511, 4252, -4998, -4998, + -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, 4250, + 79511, -4998, -4998, 1644, 1644,103801, 585, 585, -4998, -4998, + -4998, 4004, -4998, -4998, 3916, 4197, 1044, -4998, 1044, 1044, + -4998, -4998, 1044, -4998, 3920, -4998, 44, 4290, -4998, 1554, + 1796, 4244, -4998, 4248, 30065, -4998, 2014, 4575, -4998, 4301, + 4380, -4998, -4998, -4998, -4998, 3086, 2086, 3988, -4998, -4998, + 64034, 401, -4998, 4229, 186, 4147, 67317, 365, 328, 3937, + 4063, -4998, 2722, 2722, 3991, 79511, 4385, -4998, -4998, -4998, + -4998, -4998, -4998, 60282, 3564, -4998, 4166, 1046, 4267, 79511, + 30065, 3710, -4998, 1692, 4270, -4998, 1644, -4998, -4998, 4070, + 3337, -4998, 1079, 79511, 4160, 67317, 3384, 2380, -4998, -4998, + -4998, 3985, 4381, 3353, -4998, 365, 4003, -4998, -4998, 4355, + 4040, 3990, 4403, -4998, 4040, 4275, 4165, 3958, -4998, 3638, + -4998, -4998, 16639, 16639, 1644,105166, 6524,103801, 4283, 79511, + 190, 4247, 585, 2388, -4998, -4998, 585, 585, -4998, 79511, + -4998, 3325, 3325, 3325, 3325, 3325, -4998, 4168, -4998, -4998, + 4237, -4998, 585, 59813, -4998, -4998, -4998, -4998, -4998, 1068, + -4998, -4998, -4998, -4998, -4998, 16639, -4998, -4998, -4998, -4998, + -4998, 9823, 35367, 4284, -4998, 3965,103801, -4998, 3967, 2412, + 2413, -4998, -4998, 1091, -4998, 4277, -4998, -4998, -4998, 10009, + 4016, 16639, 4075, 3968, 3970, 4637, 4637, 7749, 2435, -4998, + 4637, 30065, 30065, 4637, 4637, 30065, -4998, -4998, 10132, 4161, + -4998, -4998, 10723, -4998, -4998, -4998, -4998, -4998, -4998, -4998, + 57468, 3974, 3598, 78573, 3976, 79511, 2467, 39637, -4998, -4998, + 2397, -4998, 39637, 4245, -4998, 39637, 64034, -4998, 79511, 3977, + 79511, -4998, 32957, 30065, 4018, -4998, -4998, 4018, -4998, -4998, + 3983, -4998, 79511, 2817, -4998, 687, -4998, -4998, 4379, 40575, + 4338, 30065, -4998, -4998, -4998, -4998, 59813, 4190, 59813, 1554, + 10950, 4193, 40575, 49031, 79511, -4998, 79511, -4998, 4149, 4193, + 3989, 3086, -4998, -4998, -4998, -4998, -4998, -4998, 4002, -4998, + -4998, -4998, -4998, 4071, -4998, -4998, 62, 3338, -4998, 2441, + -4998, -4998, 4441, 4332, 4333, -4998, -4998, -4998, -4998, -4998, + -4998, 4183, -4998, -4998, 45265, 60282, 79511, -4998, 4076, -4998, + -4998, -4998, -4998, -4998, -4998, 42451, 48093, -4998, 204, 3997, + 3999, 266, -4998, -4998, -4998, 79511, 11231, 4008, 636, 3338, + 79511, 79511, 4011, 4012, 4019, 1667, 1255, 1845, 3325, 4322, + 79511, -4998, -4998, -4998, 4183, -4998, -4998, 79511, -4998, 1044, + -4998, -4998, -4998, -4998, 56530, -4998, 3957, 3920, 1644, 64034, + 4451, 4451, 79511, -4998, 11582, 4221, -4998, -4998, 732, 3988, + 4255, 4297, -4998, 4020, 79511, 933, 4021, 79511, 4022, 4134, + 1655, 1655, 79511, 79511, 79511, 2446, 1665, 2722, 3799, 930, + 4352, 67317, 4394, 3692, 386, -4998, -4998, 1692, -4998, 1094, + 4369, 4067, -4998, 79511, 4468, 79511, 3384, 3612, 79511, 4025, + -4998, -4998, 68724, 4233, 2292, 79511, 2175, 4003, 3353, 1321, + 79511, -4998, 924, -4998, 1665, -4998, 79511, 73883, 40575, -4998, + 104256, -4998, 2456, -4998, -4998, 4100, 3483, 4141, 4148, 4035, + 79511, 928, -4998, -4998, -4998, -4998, -4998, -4998, 79511, -4998, + 423, -4998, -4998, 4913, 35367,103801, 2460, 30065, -4998, 30065, + -4998, -4998, -4998, -4998, 669, -4998, -4998, -4998, 4637, 4637, + 4637, -4998, 4470, 3463, -4998, -4998, 2465, 4489, 34403, 4450, + -4998, 79511, 2479, -4998, 30065, 4041, -4998, -4998, 39637, 2397, + 4042, 2490, 79511, 2491,103801, 4044, 721, 4045, 23373, 4048, + -4998, -4998, -4998, -4998, -4998, 16639, 16639, 79511, -4998, -4998, + -4998, -4998, 4098, 79511, 2505, -4998, 809, 16639, 1502, 1755, + 423, 4308, 3086, -4998, 4049, -4998, -4998, 2899, 1517, 79511, + 3086, 79511, 3988, -4998, 79511, 4138, -4998, -4998, 56530, 4357, + -4998, -4998, 4113, -4998, 986, 3338, 79511,103801, -4998, 126, + 4383, -4998,103801,103801, -4998, -4998, -4998, 30065, 4144, -4998, + -4998, -4998, 30065, 30065, 66379, -4998, -4998, 79511, 79511, 79511, + 79511, 79511, -4998, 585, -4998, -4998, 2513, -4998, 41513, -4998, + -4998, 3050, 1644, 3050, 1878, -4998, -4998, 3050, 3050, -4998, + 3483, -4998, 4451, 1018, -4998, -4998, -4998, 2015, 4287, 4061, + 30065, -4998, 1172, 4269, 4154, 4066, -4998, 64034, 4545, 3612, + 4085, 79511, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, + -4998, -4998, -4998, 2518, 3692, 4398, 3337, 3990, -4998, 79511, + 4102, -4998, 39637, -4998, -4998, -4998, 3050, -4998, 737, 4073, + 4410, 3692, 1665, 2053, -4998, 4003, 3612, 4085, -4998, -4998, + 4080, 4024, 3353, 2175, 4209, -4998, 4210, -4998, 4494, 4282, + 4497, 3384, -4998, 3244, 2524, -4998, 6524,105166,103801, 4437, + 4119, 4123, -4998, -4998, 4137, 79511, -4998, -4998, 3692, -4998, + 4913, 2526, -4998, 2530, 2539, 4140, -4998, 30065, 1254, 3714, + 57468, 4087, -4998, 35367, 2546, -4998, 2706, 79511, 2558, -4998, + 16639, 79511, -4998, -4998, 30065, -4998, 2560, -4998, 30065, 4089, + 30065, -4998, 32957, 4088, -4998, 4541, 1665, -4998, 3483, 40575, + -4998, 4215, -4998, 4415, -4998, -4998, 3988, 48093, 1517, 3468, + 2086, 3988, 2568, -4998, -4998, 79511, -4998, 4061, 30065, -4998, + 4188, -4998, -4998, 2583, 1402, 4261, 4261, 2585, 2587, 11709, + 79511, 2592, 2593, -4998, 2594, 2559, 3334, 1845, 3334, -4998, + 3325, -4998, -4998, 56530, -4998, 57937, -4998, -4998, -4998, 1644, + -4998, 1644, 4319, 79511, 50438, 1644, 1644, -4998, -4998, -4998, + -4998, 4454, 4400, -4998, 2718, -4998, 12241, -4998, -4998, -4998, + 451, -4998, 4320, 4321, 79511, -4998, 4114, -4998, 2598, 365, + 4240, 3692, -4998, -4998, 79511, 4566, 4570, -4998, 1093, 79511, + 3710, 79511, -4998, -4998, -4998, 30065, 933, -4998, 3990, 3384, + 3353, 365, 4003, 2292, 41044, 4040, 2175, 4024, -4998, -4998, + 4327, -4998, 4328, -4998, 4126, 4419, 6524, -4998, -4998, 354, + 4446, 4448, -4998, -4998, -4998, -4998, -4998, -4998, -4998, 3405, + 33439, 33439, 33439, 4130, -4998, -4998, 79511, 4575, 4129, 34403, + 56530, 2623, -4998,102436, -4998, 2629, 2636, -4998, 2637, 32957, + 2650, -4998, 79511, 4135, -4998, -4998, -4998, 43858, 59813, 4175, + 4143, 3468, -4998, 4255, -4998, -4998, 1554, 3338, -4998, 16639, + 79511, 64034, 4568, -4998, -4998, -4998, -4998, -4998, -4998, -4998, + 3338, 4223, -4998, -4998, 66379, -4998, 79511, -4998, -4998, 2652, + -4998, -4998, -4998, 79511, 3801, -4998, 3801, -4998, -4998, 4285, + -4998, 2731, 4253, 1197, 1197, 4518, -4998, 4211, -4998, -4998, + 4158, -4998, 4636, 4280, 79511, -4998, -4998, 204, 1665, 67317, + 3692, -4998, -4998, 12486, 64034, -4998, -4998, 2175, 4003, 3353, + 30065, 2656, -4998, 4308, 193, -4998, 4024, 4040, -4998, -4998, + 40575, 4167, 3337, -4998, -4998, 2339, 64034, 64034, 34885, 4299, + 836, 14065, 4506, -4998, 4506, 4506, -4998, 2658, 36807, -4998, + -4998, -4998, 79511, 4370, 1316, -4998, 4323, -4998, 2660, -4998, + -4998, -4998, 30, 423, 4170, -4998, -4998, -4998, 4269, 1554, + -4998, 3338, -4998, 79511, -4998, 4171, -4998, -4998, -4998, 57937, + 3801, 4067, -4998, -4998, -4998, 4638, -4998, 976, -4998, -4998, + -4998, -4998, 79511, 3692, 3905, 3990, -4998, -4998, 4172, 4024, + 3353, 2175, 12826, -4998, 41044, 79511, 79511, 4040, -4998, 2662, + 40575, 4040, -4998, 1767, -4998, -4998, -4998, -4998, -4998, -4998, + -4998, 4169, 4176, 4628, -4998, -4998, -4998, -4998, -4998, 1022, + -4998, -4998, -4998, -4998, 3598, -4998, -4998, 35367, 35367, 4402, + -4998, 1316, -4998, 4184, -4998, -4998, -4998, -4998, 30065, 1554, + -4998, -4998, -4998, 30065, -4998, 4525, -4998, -4998, -4998, 3692, + -4998, -4998, 56061, 4040, 2175, 4024, 4308, -4998, -4998, -4998, + -4998, -4998, 4419, -4998, 2664, 3483, 2289, -4998, -4998, 2405, + 2341, 4268, 4507, 33921, 4329, -4998, 4389, -4998, 4599, 4575, + 4575, -4998, -4998, 30065, 13143, 1554, 2666, 933, -4998, -4998, + 2681, -4998, -4998, -4998, -4998, -4998, 4024, 4040, 79511, 3337, + -4998, 40575, -4998, -4998, 1767, 4305, 4306, -4998, -4998, -4998, + 79511, 13217, -4998, -4998, 64034, -4998, 56061, 4040, -4998, -4998, + 4040, -4998, -4998, 4241, 4242, 2682, -4998, 4191, -4998, -4998, + 3483, 4524, 4526, -4998, 56061, -4998, 64034, 64034, 2703, -4998, + -4998, -4998 }; /* YYPGOTO[NTERM-NUM]. */ static const yytype_int16 yypgoto[] = { - -4582, -4582, -4582, 3518, -4582, -893, 376, 2768, -574, -4582, - -4582, -4582, 1268, -4582, -4582, -4582, -4582, 3473, -4582, 1885, - -2338, -4582, -4582, 151, 3418, -1251, 122, 3015, 1538, -4582, - -1106, -4582, -4582, -560, 114, -4582, 3423, 510, -4582, -4582, - -4582, -4582, -4582, -4582, -4582, -4582, -752, 1998, 2067, 1375, - 5238, -3483, -4582, -4582, -1360, -3099, -4582, 700, -4582, 727, - -4076, -4479, -4582, -941, -770, -4582, -4582, 1989, -4582, -4582, - -4582, 1190, 606, -450, -4582, -4582, -4582, -4582, -4582, -4582, - -4582, -626, -4582, -4582, -865, 161, 51, -2371, -3619, -4582, - -4582, 566, -263, -1397, -4582, -3459, -4582, 105, -2102, -4582, - -4582, -4582, -229, -1364, 1476, -4582, -664, -1104, 1789, -734, - -4582, -111, -4582, -839, -636, -634, -761, -3675, -4131, -4582, - -4582, -4582, -863, -4141, -4412, -3676, -3573, 1487, -4582, 164, - -3016, -3104, 165, 543, -4582, 167, 168, -4582, 560, -562, - -879, -1476, -4582, -806, -4582, -4582, -4582, -2829, -4582, -4582, - -4582, -4582, 71, -4582, -4582, -4582, -4582, 605, -4582, -4582, - -4582, -4582, -4582, -4582, -2624, 1964, 1969, -4582, -3036, -4582, - -837, -4582, 750, -2878, 1404, -4582, -4582, 1183, 3488, 592, - -4582, -4582, -4582, -4582, -4582, -4582, -4582, -1586, -4582, -4582, - -4582, -4582, 109, -196, -4582, -4582, -4582, -4582, -4582, -4582, - 169, -4582, 1990, 1182, -4582, -4582, -202, -4582, -4582, -4582, - -4582, -4582, -4582, -816, -953, -937, -4582, -2860, -4582, -4582, - -4582, -175, -4582, -4582, -4582, -4582, -4582, -4582, -799, -4582, - 1244, -3045, -4582, -4582, 1251, -4582, -4582, -4582, -4582, -4582, - -736, -114, 2800, -4582, -345, -538, -4582, -4582, -4582, -113, - -4582, -4582, -4582, -4582, -4582, -4582, -4582, -4582, -1052, 5724, - -784, -521, -4582, -4582, -4582, -4582, -4582, -2265, -4582, -4582, - -4582, -4582, -3640, -4582, 4374, 2050, -273, 171, -4582, -21, - 68, 3258, -1102, -2542, 528, -304, -4582, -4582, -4582, -2465, - -4582, -4582, -4582, -4582, -3410, 173, -4582, 3280, -4582, -3685, - -4411, -3432, -3962, -4308, -4449, -3393, -4582, -4582, -4582, -4582, - -728, -189, -4582, -4582, -1379, 2319, -1880, -4582, -2031, 593, - 1576, 3475, -2644, -140, 2769, -3686, -646, -3139, -4582, -4582, - -2240, -431, -4582, -4582, -4582, -4582, -4582, -4582, -4582, -4582, - -569, 2699, -195, -4582, -4582, 3811, -4582, -4249, -4582, 3783, - -4582, -4582, -4582, -4582, 2612, 2616, -4582, 2623, -4582, -4582, - -1373, 1348, -4582, -4582, -4582, -4582, 782, -4582, -4582, -4582, - -4582, -4582, -4582, -4582, 1246, 775, -4582, -4582, -4582, -4582, - -4582, -716, -873, -4582, -4582, 174, -4582, -4582, -4582, -4582, - 2131, -870, -682, 3684, 176, -4581, -4582, -4582, -1070, -4582, - 3057, -4582, -4582, -4582, -4582, -4582, -4582, -4582, -4582, -4582, - -4330, -4582, -4582, -4304, -4582, -4582, -4582, -4582, -4582, 2404, - 2407, 64, -31, -4582, -4582, -946, -4582, -524, -4582, 2691, - -4582, -4582, -4582, -4582, -1660, 179, -3662, -4582, 2, -4582, - -4582, 9, -4582, 401, -4582, -4582, -3314, 3, -4582, -4582, - -4582, -4582, -4301, -4582, 5, -620, 935, -2701, -4582, 180, - 15, -4582, -4582, 18, 6, -46, -48, -38, 1, 141, - 3127, -4582, 3182, -4582, 25, 1825, -4582, -4582, -781, -156, - -4582, 1667, -588, 2376, 3128, 3135, -4582, 1658, 2408, -1884, - -1883, -4582, 984, -602, -436, -4582, -4582, -4582, -4582, 438, - -587, 2387, -4582, 3130, -4582, -4582, -4582, -1771, -2738, -3328, - 1013, -3306, -3246, 484, 468, -1306, -205, -6, -714, 3140, - -4582, -4582, 1025, -396, -4582, -4582, -394, -2725, 966, -4582, - -4227, -2237, 1034, -834, -686, -4582, -764, -4582, -557, -513, - 2819, -1010, -4582, -4582, -960, 15715, -4582, -4582, -4582, 15878, - 16468, -4582, -4582, 16918, 16937, -4582, -830, 17958, 14376, -987, - -1791, -321, 14280, -1793, -1332, -2677, -4582, -3405, -2392, -4582, - -4582, -4582, -153, 1092, 480, -4582, -4256, -4582, -4582, 63, - -4582, -567, -4582, -566, -4582, -4582, -4582, -546, -3853, 2594, - -4582, -4582, -4582, -157, -4582, 18813, -2650, -4582, -589, -2632, - -2640, -3308, -1738, -4582, -4582, -4582, -4582, -4582, -4582, -4582, - -2933, -3181, -465, 1780, -4582, -4582, 1874, -4582, -4582, -4582, - -1267, 1730, -726, -1205, 1794, -4582, -727, 2596, -721, 4926, - -635, 6886, -458, -2199, -1190, -1507, -4582, -169, -4582, 4328, - -16, 33, -127, 134, -407, -4582, 3219, 863, 3229, 2097, - 14962, -598, -1248, 10034, 13105, 12864, -3035 + -4998, -4998, -4998, 3868, -4998, -4998, -914, 482, 3079, -1931, + -4998, -4998, -4998, 1259, -4998, -4998, -4998, -4998, 3822, -4998, + 2152, -2451, -4998, -4998, 159, 3778, -1303, 124, 3349, 1801, + -4998, -1148, -4998, -4998, -572, 85, -4998, 3780, 241, -4998, + -4998, -4998, -4998, -4998, -4998, -4998, -4998, -790, 2276, -4998, + 2365, 1625, 7340, -2724, -4998, -4998, -1458, -3274, -4998, 921, + -4998, 953, -4274, -598, -4998, -4998, -4998, 2266, -4998, -4998, + -4998, 2206, 1426, -40, -4998, -4998, -4998, -4998, -4998, -4998, + -447, -4998, -4998, -691, 153, 46, -2467, -3800, -4998, -4998, + 780, -92, -1445, -4998, -3628, -4998, 295, -3801, -4998, -4998, + -4998, -58, -1426, 1730, -4998, -700, -1163, 2049, -2905, -543, + -4998, 79, -4998, -653, -446, -444, -575, -3856, -4356, -4998, + -4998, -684, -3273, -4622, -4833, -4240, -3980, 1753, -4998, -4998, + 161, -3180, -3260, 163, 765, -4998, 168, 170, -4998, 782, + -382, -918, -1547, -4998, -524, -4998, -4998, -4998, -2980, -4998, + -4998, -4998, -4998, 81, -4998, -4998, -4998, -4998, 827, -4998, + -4998, -4998, -4998, -4998, -4998, -2736, 2237, 2239, -4998, -2922, + -4998, -864, -4998, 988, -2994, 1660, -4998, -4998, 1425, 3857, + 817, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -1713, -4998, + -4998, -4998, -4998, 305, -14, -4998, -4998, -4998, -4998, -4998, + -4998, -4998, 172, -4998, 2262, 1429, -4998, -4998, -15, -4998, + -4998, -4998, -4998, -4998, -4998, -627, -4605, -785, -766, -4998, + -3003, -4998, -4998, -4998, 21, -4998, -4998, -4998, -4998, -4998, + -873, -4998, 1506, -3650, -4998, -4998, 810, -4998, -4998, -4998, + -4998, -4998, -530, 90, 3044, -4998, -140, -333, -4998, -4998, + -4998, 91, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, + -1084, 9082, -811, -582, -4998, -4998, -4998, -4998, -4998, -2185, + -4998, -4998, -4998, -4998, -3794, -4998, 4797, 2385, 416, 173, + -4998, -12, 67, 3647, -1141, -2647, 768, -101, -4998, -4998, + -4998, -2601, -4998, -4998, -4998, -4998, -3582, 174, -4998, -670, + -4998, -3879, -4623, -4064, -3607, -679, -4998, -3943, -4997, -3962, + -3560, -4998, -4998, -4998, -4998, -558, -167, 3017, -4998, -1414, + 2628, -931, -4998, -2112, 832, 1852, 3021, -2796, -126, 3018, + -2544, -640, -3286, -4998, -4998, -2317, -242, -4998, -4998, 1535, + 697, -4998, -4998, -4998, -4998, -633, 2956, -194, -4998, -4998, + 4177, -4998, -3842, -4998, 4142, -4998, -4998, -4998, -4998, 2861, + 2863, -4998, 2869, -4998, -4998, -1385, 1608, -4998, -759, -4998, + -4998, 2398, 1033, -4998, -4998, -4998, -4998, -4998, -4998, -4998, + -4998, 1500, 1016, -4998, -4998, -4998, -4998, -4998, -520, -695, + -4998, -4998, 175, -4998, -4998, -4998, -4998, 2244, -902, -736, + 4050, 895, 181, -4794, -4998, -4998, -1127, -4998, 3423, -4998, + -4998, -4998, -4998, -4998, 834, 838, -4998, -4998, -4998, -4998, + -2528, -4998, -4998, -4470, -4998, -4998, -4998, -4998, -4998, 4031, + 116, 2732, -4998, -4998, -4998, -30, -4998, -4998, -964, 2728, + -4998, -1939, -4998, -594, -4998, 2947, -4998, -4998, -4998, -4998, + -1896, 182, -3840, -4998, 6, -4998, -4998, 219, -4998, 645, + -4998, -4998, -3469, 9, -4998, -4998, -4998, -4998, -4490, -4998, + 12, -410, 1191, -2848, -4998, 184, -1, -4998, -4998, 2, + 2226, -43, -53, -44, 5, 119, 3512, -4998, -4998, 3554, + -4998, 13, 2196, -4998, -4998, -821, -173, -4998, 1955, -648, + 2704, 3488, 3491, -4998, 1942, 2734, -1992, -1988, -4998, 1239, + -389, -231, -4998, -4998, -4998, -4998, 678, -644, 2719, -4998, + 3497, -4998, -4998, -4998, -1945, -2877, -3507, 1264, -3489, -3405, + 712, 701, -1368, 4, -41, -765, 3501, -4998, -4998, 1269, + -195, -4998, -4998, -193, -2850, 1219, -4998, -4417, -2368, 1276, + -651, -482, -4998, -569, -4998, -356, 2522, 3058, -1049, -4998, + -4998, -1013, 14010, -4998, -4998, -4998, 14165, 14439, -4998, -4998, + 15771, 15795, -4998, -863, 16303, 13488, -1019, -1886, -334, 12660, + -449, 326, 121, -4998, -3587, -1961, -4998, -4998, -4998, 48, + 1334, -705, -4998, -4465, -3890, -4998, -4998, 270, -4998, -364, + -4998, -363, -4998, -4998, -4998, -2665, -4988, -2722, 2838, -4998, + -4998, -4998, -174, -4998, 17345, -2773, -4998, -345, -1329, -1539, + -3475, -1894, -4998, -4998, -4998, -2676, -4998, -4998, -4998, -4998, + -3057, -3360, -393, 2055, -4998, -4998, 2158, -4998, -4998, -4998, + -904, 2438, -761, -1224, 2062, -4998, -772, 2842, -762, 12023, + -693, 8506, -544, -2281, -1255, -1658, -4998, 1237, -4998, 1163, + 6387, 24, -135, 5495, -616, -6, 12836, -578, -895, 4500, + 11757, 9868, -3202 }; /* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If positive, shift that token. If negative, reduce the rule which number is the opposite. If zero, do what YYDEFACT says. If YYTABLE_NINF, syntax error. */ -#define YYTABLE_NINF -2588 +#define YYTABLE_NINF -2695 static const yytype_int16 yytable[] = { - 621, 182, 172, 173, 782, 175, 178, 876, 841, 706, - 1507, 1765, 1555, 1355, 735, 2072, 984, 1280, 177, 825, - 1020, 182, 557, 1105, 792, 1284, 178, 1725, 842, 611, - 2141, 2304, 1141, 1142, 1143, 1785, 2766, 766, 1147, 1695, - 3165, 2215, 1317, 1867, 1567, 877, 3483, 1373, 824, 1634, - 2037, 1463, 2207, 1512, 694, 1318, 781, 2665, 1018, 3324, - 694, 2363, 2457, 603, 3007, 1701, 1118, 2032, 1821, 769, - 2227, 1302, 2842, 2844, 2216, 3056, 1607, 1685, 1686, 884, - 1612, 3505, 3467, 2696, 668, 1616, 3188, 1694, 656, 3593, - 700, 2630, 904, 3573, 2244, 1626, 3617, 3793, 3619, 3090, - 2037, 3839, 4038, 736, 3122, 3744, 3123, 3736, 4073, 1650, - 3127, 3809, 3305, 4465, 63, 3736, 1055, 1433, 969, 3132, - 3133, 3134, 3965, 3476, 2032, 3767, 4068, 3518, 3823, 3474, - 3475, 3996, 1096, 4111, 794, 4074, 786, 1506, 4306, 1112, - 1055, 4316, 3467, 3495, 795, 1533, 4296, 4313, 2771, 4322, - 4257, 1020, 2592, 4672, 2477, 1560, 729, 4724, 2325, 4013, - 2535, 72, 4608, 763, 74, 75, 2037, 76, 77, 99, - 1030, 118, 2200, 123, 147, 4610, 151, 2329, 2330, 170, - 176, 4571, 2114, 4731, 2809, 1619, 1329, 2812, 793, 1292, - 780, 755, 1317, 4305, 3524, 1429, 4843, 3806, 4684, -2201, - 4686, 1647, 4051, 1348, 1351, 1682, 1683, -2336, 897, 4854, - 617, 3932, 676, 617, -2372, 3178, 1693, 1646, 4011, -2395, - 4016, 3369, 4753, 2841, -2426, 4762, 4763, 4463, -1855, 4609, - 567, -1847, 2704, 2341, 1088, 2038, 5006, 617, -1814, 1685, - 1686, 2418, 1701, -1827, 4267, 1319, 617, 1099, 1603, 4349, - 4350, 617, 4352, 4353, 4354, 2336, 1171, -2238, 2454, 1694, - -2239, 2135, 676, 3343, 2704, -2238, -2238, 1402, -2239, -2239, - 676, 5118, 3, 4, 4921, 4922, 1913, 715, 4953, 2136, - 5253, 2602, 2218, 3761, 1716, -2587, 3829, 4936, -1852, 3113, - -1842, 617, 2323, -2587, -2587, 617, 2565, 1595, -2089, 2740, - 3574, -2266, 4472, -2339, 4787, -2089, 2741, 617, 3322, 2218, - 676, 1767, 676, -2200, 3138, 2759, 2125, -1670, 1877, 3673, - 4630, 2640, 2560, 617, 3276, 617, 3278, 1123, 2641, 1127, - 2218, 2846, 849, 2410, 4268, 1138, 2994, 2137, 5157, 2147, - 885, 1460, 617, 1288, 4864, 4447, 676, 1883, 2888, 1564, - 1877, -1855, 1460, 905, 565, 2138, 2401, 676, 1682, 1683, - 716, 1672, 1928, 1460, 617, 1672, 2267, 3469, 676, 682, - 3309, 676, 1450, 2144, 839, 1403, 682, 3369, 1885, 1883, - 2415, 682, 1672, 1509, 4730, 1693, 682, 4191, 5254, 2791, - 4901, 2049, 683, 974, -2393, 1071, 1402, 2814, 3313, 683, - 2276, 1920, 963, 1320, 683, 1321, 1124, 1126, 1128, 683, - 1885, 1130, 1131, 1132, 1575, 741, 4269, 5089, -132, 2962, - 1510, 1137, -2109, -132, 2642, 1936, 2455, 3469, 877, -2109, - 3906, 2195, 1567, 5026, 1460, 617, 5140, 1590, 4933, 676, - 4113, 2253, 4968, 2218, 4970, 1696, 676, 185, 4974, 909, - 4975, 3102, 1601, 2219, 825, 4210, 978, 1545, 4897, 3369, - 3933, 3659, 988, 682, 842, 682, 1697, 1937, 1921, 4845, - 1929, 2218, 2039, 2792, 3314, 1002, 4211, 2963, 4844, 2218, - 877, 1698, 1877, 2288, 5090, 2218, 683, 4943, 683, 3369, - 186, 1604, 2416, 2139, 1932, 2643, 5010, 2268, 2815, 1945, - 1945, 2561, 1020, 1139, 1403, 3791, 1723, 1842, 717, 4865, - 5158, 1883, -423, 4114, 742, 2411, 1565, 3365, 2666, 1020, - 1758, 2196, 3741, 1511, 1871, 1877, 2684, 2847, 5255, 4822, - 2848, 2995, 618, 5256, 2562, 4978, 3574, 2403, 2566, 3139, - 1749, 3155, 1885, 1914, 910, 4631, 4448, 718, 719, 955, - 4192, 772, 1918, 1604, 1883, 2644, 2632, 1672, 2645, 1546, - 4270, 2627, 1044, 5119, 3762, 1146, 2705, 1672, 1672, 182, - 957, 958, 4944, 959, 178, 4945, 1020, 1672, 2342, 3310, - 4943, 1577, 4133, 1723, 1930, 1885, 960, 911, 2456, 1672, - 1672, 2419, 3736, 4946, 1404, 1769, 2324, 1470, 3434, 2140, - 2627, 4473, 1019, 621, 2037, 2186, 2343, 3721, 3722, 2299, - 5076, 3114, 2302, 5150, 1825, 2194, 4167, 1146, 782, -2393, - 1807, 1314, 5199, 3674, 3520, 1315, 4271, 5187, 2337, 1673, - 3830, -2089, 2742, 1673, 2702, 952, 5277, 1119, 1356, 720, - 2889, 1810, 912, 2148, 2927, 1680, 840, 3156, 568, 1604, - 1673, 2037, 5102, 1405, 1696, 1304, 4385, 2184, 2646, 1314, - 1870, -2201, 1322, 1315, 182, 975, 2506, 1072, 3660, 178, - 781, 1294, 3539, 3385, 4413, 1697, 2309, -2336, 4417, 1733, - 2556, 4266, 2277, 4078, -2372, 4013, 4946, -2393, 2289, -2395, - 1698, 2292, 2293, -1847, -2426, 1153, 2362, 2047, 2539, 1020, - 1684, -2393, 1149, 5025, 5019, 1688, 1136, 1020, 1020, 3660, - 1120, 4643, 1125, 1111, 1129, 2261, 2694, 979, 4312, -2238, - 1133, 1172, -2239, 979, 2318, 4358, 2801, 3261, 1114, 1281, - 5221, 4947, 1290, 1019, 1295, 794, 979, 1292, 1803, 2564, - 1584, 4452, 1579, 5230, 4404, 795, 4406, -2587, 2574, 1813, - -1852, 825, -1842, 1873, 4918, -2109, 2515, 1916, 688, 689, - 688, 689, 842, 1149, 1822, 2647, 4288, 2083, 2084, 2774, - 1905, -2266, 2091, -2339, 2372, -2200, 1674, 1696, 877, 3467, - 1572, 2648, 3467, 5192, 2203, 3002, 182, 172, 173, 793, - 175, 178, 1359, 4100, 1461, 1462, 5196, 1702, 1697, 4137, - 2394, 1904, 1905, 177, 4548, 1461, 1462, 1566, 3214, 2928, - 3526, 5281, 3527, 1700, 2045, 2946, 1461, 1462, 3670, 688, - 689, 3157, 1294, 859, 4947, 1673, 5170, 1604, 3384, 3385, - 860, 861, 862, 3569, 1409, 1673, 1673, 1325, 2045, 3027, - 4031, 1662, 4606, 1485, 1806, 1673, 3311, 1770, 3814, 3785, - 1772, 3806, 1774, 1578, 1776, 773, 1778, 1673, 1673, 3714, - 1782, 2495, 2496, 3467, 617, 2466, 1486, 2032, 5313, 3366, - 3367, -132, -132, 617, 3387, 4145, 617, 612, 5142, 4231, - 1305, 2766, 2766, 2766, 4059, 3882, 3003, 1461, 1462, 2467, - 5144, 3088, 5267, 789, 3774, 4727, 2149, 4230, 1287, 63, - 4255, 789, 1299, 1539, 2724, 2269, 3158, 3381, 3382, 3383, - 3384, 3385, 3418, 3419, 2809, 1707, 3500, 1330, 3028, 5284, - 5285, 2902, 5128, 1394, 3594, 2853, 3715, 3716, 1899, 1900, - 1901, 1902, 1903, 1904, 1905, 3379, 3380, 3381, 3382, 3383, - 3384, 3385, 2821, 2317, 5143, 1540, 72, 1387, 1306, 74, - 75, 2200, 76, 77, 99, 4876, 118, 2265, 123, 147, - 1180, 151, 1167, 3369, 170, 176, 4752, -2588, -2588, -2588, - 3267, 3029, 1720, 1901, 1902, 1903, 1904, 1905, 2747, 4146, - 4835, 2984, 1731, 1751, 3486, 4245, 1708, 2304, 4792, 3509, - 3841, 2516, 1754, 2470, 5296, 2991, 2228, 4611, 1493, 1638, - 3840, 4165, 4670, 5223, 1723, 3875, 39, 5329, 2932, 2582, - 2129, 4612, 5222, 4736, 2056, 729, 1526, 1494, 4327, 3084, - 3015, 2130, 2861, 3510, 564, 3627, 3030, 796, 1544, 4073, - 3883, 1395, 3595, 2985, 1545, 4293, 2150, 2725, 2131, 3628, - 43, 1639, 2726, 4074, 562, 4979, 1709, 4803, 4566, 1710, - 3085, 2243, 3775, 4281, 4765, 3312, 4074, 4648, 3521, 4294, - 2367, 1738, 2135, 1707, 3469, 2567, 1495, 3469, 5206, 3060, - 4913, 2468, 3842, 1711, 3570, 2382, 2571, 2572, 2727, 4147, - 47, 5280, 4256, 3493, 1019, 1665, 4676, 1377, 1723, 1695, - 3089, 4680, 3480, 48, 4682, 2492, 2404, 4804, 2933, 3233, - 4024, 1019, 2448, 1739, 4673, 4805, 1541, 1604, 2057, 797, - 2822, 3733, 5273, 2748, 3467, 2307, 49, 787, 2541, 3733, - 182, 2151, 2986, 3031, 3116, 178, 4999, 4346, 4246, 3491, - 1807, 50, 2583, 4806, 1708, 1809, 1546, 1771, 2137, 1773, - 613, 1775, 1871, 1777, 4919, 1779, 1780, 1781, 3469, 1711, - 1496, 2481, 1783, 4924, 4877, 2563, 2138, 3153, 1019, 2568, - 4567, 2570, 5021, 1118, 2573, 2489, 1378, 5024, 5031, 2494, - 5033, 5018, 1450, 39, 2059, 4613, 2466, 1055, 893, 788, - 2132, 4998, 1396, 3839, 2449, 2378, 5227, 5228, 1830, 2503, - 4980, 4596, 4602, 2903, 1709, 614, 1010, 1710, 1497, 4807, - 2467, 1498, 1640, 782, 1542, 894, 3836, 43, 1839, 4458, - 4808, 2728, 2303, 2060, 1477, 4074, 3843, 5020, 1379, 1397, - 3375, 2490, 2533, 3561, 3596, 3597, 4914, 2379, 185, 2532, - 1055, 615, 4487, 616, -1814, 1872, 2548, 3032, 2626, 1855, - 2629, 4295, 4986, 1500, 1874, 3033, 2636, 47, 3034, 789, - 1398, 3598, 2652, 2653, 2654, 1868, 1712, 5274, 1917, 703, - 48, 5207, 2670, 2672, 1740, 3562, 5245, 2682, 865, 866, - 867, 186, 868, 869, 870, 871, 872, 873, 874, 2658, - 2987, 1019, 3844, 49, 1295, 1935, 1502, 1547, 2229, 1019, - 1019, 2918, 2050, 2051, 2139, 2055, 2043, 1711, 2823, 2230, - 1641, 2231, 795, 795, 4916, 795, 1503, 1642, 4293, 5243, - -2198, -1814, 1380, 617, 1399, 2518, 2062, 877, 3264, 798, - 5315, 2584, 1478, 662, 1548, 3467, 1505, 2529, 1643, 3467, - 2666, 2666, 4294, 582, 2294, 2666, 5208, 1145, 2534, 4871, - 2918, 2585, 4362, 14, 4363, 4932, 793, 793, 2153, 793, - 5151, 1359, 4451, 4893, 3641, 1549, 737, 1377, 2154, 2232, - 2813, 5209, 1741, 4987, 2697, 2124, 1011, 2919, 707, 2143, - 3, 4, 2063, 2666, 2666, 2918, 1338, 19, 3265, 790, - 5022, 2450, 4583, 39, 4031, 714, 4809, 4429, 2380, 4810, - 4436, 584, 3074, 1876, 2451, 4848, 1877, 2144, 3075, 3469, - 2140, 4597, 5246, 4849, 1712, -2588, -2588, -2588, 3042, 3379, - 3380, 3381, 3382, 3383, 3384, 3385, 2919, 43, 4081, 4344, - 2593, 1146, 1012, 1362, 1713, 1883, 3563, 4572, 1013, 1344, - 662, 5205, -2588, 4935, 4988, 3403, 1378, -672, 4939, 4940, - 2964, 3410, 5321, 3746, 2578, 582, 1344, 2425, 4221, 185, - 14, 2919, 4224, 4225, 4737, 4227, 1885, 47, 2863, 2944, - 1363, 2875, 3642, 1384, 3736, 1385, 2295, 1723, 3274, 2296, - 715, 4573, -1814, 1479, 5229, 1339, 4670, 2179, 4364, 5231, - 5073, 1711, 1644, 2920, 19, 3043, 2381, 3413, 1379, 3749, - 4150, 1364, 186, 3046, 4834, 2308, 3049, 4082, 2965, 1346, - 3076, 2313, 825, 584, 1723, 825, 2155, 4074, 50, 1314, - 1480, 4824, -572, 1315, 5134, 713, 1346, 4249, 2876, 2871, - 2921, 3746, 2320, 3420, 3564, 2426, 2579, 3747, 5080, 5081, - 1020, 2517, 2922, 3083, 2488, 3041, 2527, 2145, 2864, 3748, - 1347, 1481, 3017, 2156, 3751, 5279, 595, 31, 596, 4821, - 842, 842, 4282, 716, 4083, 4825, 4084, 1305, 3020, 3021, - 3585, 3586, 3024, 4850, 4287, -2588, 2304, 3749, 3064, 3750, - -2588, 4243, 1620, 877, 877, 39, -1076, 3911, 3912, 3913, - 3914, 2922, 1380, 3919, 3920, 3921, 3922, 3923, 3924, 3925, - 3926, 3927, 3928, 3929, 4151, 1482, 3733, 1387, 5048, 39, - 2766, 3108, 1387, 3895, 1314, 5314, -2588, 1344, 1315, 43, - 3469, 3018, 1345, 3643, 3469, 2435, 2922, 740, 5148, 2440, - 4163, 3185, 3751, 2294, 842, 1306, 5049, 3523, 1472, 4557, - 3587, 575, 4039, 43, 3754, 1381, 909, 5328, 4244, 1167, - 5330, 3969, 3970, 1374, 3197, 3198, 3199, 3200, 3752, 47, - 3644, 3077, 2900, 1892, 31, -1814, 3205, 1514, 595, 4330, - 596, 4331, 48, 2858, 2915, -1814, 1387, 1684, -1814, 1372, - 1387, -1814, 1382, 47, 1666, 3755, 34, 1346, 2235, 3671, - 1375, 3645, 39, 3080, 601, 49, 48, 2349, 3078, 3675, - 3756, 877, 4040, 4061, 1515, 4789, 1473, 2712, 3864, 2713, - 50, 717, 4761, 1383, 2948, 3184, 4135, 3753, 3035, 49, - 2236, 1376, 3754, 1517, 2235, 582, 43, 5005, 1347, 3079, - 3081, 3086, 2714, 34, 50, 1516, -1607, 1667, -2221, 775, - 3467, 910, -155, 1384, 4004, 1385, -1070, 3467, -1607, -2588, - 718, 719, 3467, -1607, 5011, 3467, 2236, 5030, 3672, 4074, - 2279, 3082, 3087, 3755, 1518, 2295, 47, 909, 2296, -155, - 663, 182, 2424, 3298, 1519, 4005, 178, 784, 3756, 48, - 2441, 3467, 3545, 584, 911, 4136, 5012, 3035, 5002, 1297, - 4419, 3757, 2349, 1386, 3467, 2550, 1493, 2551, -1607, 2552, - 4007, 2553, 49, 2554, 5264, 5016, 2245, 2555, 1003, 2599, - 1924, 2587, 2941, 4642, 4863, 1494, 4469, 664, -1607, 3227, - 3915, 4758, 3916, 182, 957, 958, 1877, 959, 178, 3189, - 3025, 5148, 1668, 2715, 2651, 1114, 3472, 2059, 2716, 912, - 960, 1004, 5041, 2717, 4759, -2588, 3423, 3490, 3424, 1485, - 4468, 1535, 1899, 1900, 1901, 1902, 1903, 1904, 1905, -1607, - 3194, -1643, 910, 1754, 1495, 4928, -1643, 2519, -1607, 3757, - 3815, 3425, 1486, 3819, 1005, 4062, 2060, 4925, 2875, 1604, - 1490, 3520, 4063, 4470, 1669, 2223, 1885, 2224, 1536, 1696, - 2349, 1301, 1537, 3146, 1020, 4570, -1607, 2598, 4551, 2515, - 2576, 4476, 4477, 2710, 3839, 911, 4240, 2623, -1607, 4009, - 1697, 2401, 3251, -1607, 4859, 4064, 4971, 1491, 1003, 1538, - 1006, 4972, 1520, 4713, 5141, 4715, 4587, 2775, 764, 4552, - 4241, -1643, 3245, 2061, 4601, 3542, 4065, 835, 595, 4081, - 596, 3297, 1723, 5155, 4588, 2225, 3917, 4581, 1496, 1020, - 598, 1004, 4758, 3467, 2246, 1521, 3918, 3060, -1607, 1522, - 912, 600, 3597, 582, 1620, 4541, 4239, 4542, 4543, 4973, - 3638, 4544, -1643, 1670, 5130, 4759, 2718, 3426, -1607, 2062, - 1945, 2247, 3427, 4981, 3787, 2908, 2719, 3285, 4124, 2904, - 1523, 2420, 2356, 682, 1754, 785, 1497, 3481, -1607, 1498, - 2358, 3874, 825, 2280, 2248, 1493, 2249, 3639, 2283, 842, - 2303, 799, 2422, 2359, 3467, 837, 683, 4561, 4082, -1607, - 4488, 584, 1485, 877, 1494, 3469, 4492, 857, -1607, 2357, - 1006, 2896, 3469, 3669, 2245, 2063, 2459, 3469, 3640, 2360, - 3469, 1500, 2243, 3875, 4526, 1486, 5040, 4079, 2666, 2666, - 2666, 2666, 1691, 1692, 2666, 2666, 2666, 2666, 2666, 2666, - 2666, 2666, 2666, 2666, 2666, 3525, 3469, 4527, 2218, 2810, - 2811, 1648, 2346, 1495, 5083, 4083, 2352, 4084, 2226, 3469, - 4758, 691, 3942, -1606, 1502, 3368, 1746, 691, 3316, 4003, - 1696, 2940, 4626, 1649, 5009, -1606, 1760, 3397, 3575, 1761, - -1606, 3484, 178, 4759, 1503, 3328, -448, 3794, 1747, 5218, - 858, 1697, 2666, 2666, 2825, 3428, 1325, 3804, 3334, 2865, - 899, 2868, 1019, 3602, 1505, 3429, 1700, -1665, -1665, 702, - 3421, 704, 4123, 1368, 1815, 710, 4118, 1816, 2254, 2301, - 724, 732, 702, 676, 739, -1606, 222, 732, 732, 2766, - 768, 566, 771, 4193, 2766, 3467, 2627, 1496, -1607, 660, - 2766, 4004, 3432, 1488, 3026, -1606, 1369, 3202, 3944, 3447, - 1370, 2862, 3203, 3530, 4381, 4194, 595, 738, 596, 1684, - 1552, 2115, 2246, 1556, 3578, 2926, -1669, -1669, 1020, 5276, - 3339, 1295, 4005, 5232, 28, 2045, 5072, 5316, 3266, 3268, - 3269, 1371, 1620, 4109, 4058, 1497, -1606, 4006, 1498, 2247, - 1684, 3340, 2115, 4101, 3467, -1606, 3341, 4007, -448, 2303, - 3396, 1314, 3398, 3399, 1334, 1315, 2041, 4289, 5189, 2042, - 4717, 3885, 2248, 3105, 2249, 4770, 2834, 4726, 3469, 3498, - 908, 3534, 3745, 4008, 676, 3467, 4115, 3203, 4122, 5306, - 1500, 1314, 962, -2201, 2850, 1315, 2044, 3790, 3633, 2045, - 2854, 968, 2545, 4003, 2857, 2045, 2627, 965, 4138, 2557, - 2243, 3763, 2558, 976, 985, 977, 1149, 1149, 4771, 971, - 1149, 3852, 3853, 39, 2559, 4766, 2590, 2558, 39, 2591, - 2881, 2788, 3027, 1502, 1754, 826, 831, 831, 834, 3469, - 831, 3478, 3479, 4772, 843, 1020, 768, 2833, 2938, 879, - 2045, 2939, 3171, 1503, -1668, -1668, 768, 43, 831, 4049, - 4773, 768, 43, 998, 4774, 831, 4009, 768, 4315, 2245, - 980, -571, 981, 1505, 2934, 4004, 3009, 3100, 3143, 3010, - 1684, 3144, 1372, 3552, 4775, -1606, 3731, 4776, 3148, 1007, - 2688, 3149, 979, 2691, 3731, 1008, 3467, 47, 3742, 1022, - 3118, 4777, 47, 3118, 3252, 3118, 4005, 2045, 1009, 3118, - 48, 3028, 1027, 3291, 3338, 48, 2558, 2045, 3118, 3118, - 3118, 4006, 1079, 787, 2982, 1080, 2245, 4815, 2991, 3347, - 4134, 4007, 2045, 49, 3554, -1644, 2245, 2245, 49, 3355, - -1644, 1070, 2045, 3356, 2245, 1829, 2045, 50, 5233, 1109, - 3011, 3565, 3015, 50, 2245, 1086, 5303, 4008, 3022, 3357, - 1093, 1100, 2045, 1149, 3029, 979, 2483, 2666, 2484, 3037, - 3389, 3060, 3331, 2045, 2326, 1684, 3196, 2115, 4677, 1140, - 3469, 3402, 4778, 676, 2045, 788, 825, 4076, 4077, 3050, - 4779, 4622, 842, 3220, 3052, 3221, 4300, 3407, 3055, 3233, - 3408, 3620, 1148, 1151, 3621, -1644, 3531, 3532, 3228, 3625, - 5262, 3072, 3626, 1144, 3172, 3327, 1019, 2246, 3733, 3030, - 3649, 178, 3827, 3650, 3097, 3828, 3190, 3467, 1154, 1180, - 4780, 2355, 3369, 3215, 979, 1156, 3370, 3371, 3372, 3469, - 4009, 2929, 3004, 1158, 2247, 3646, -1644, 3648, 3850, 3668, - 3939, 2045, 1157, 3940, 3949, 789, 5287, 3950, 3961, 3676, - 4047, 2045, 4052, 4048, 1165, 4053, 3780, 2248, 1164, 2249, - 3469, 1019, 4057, 1168, 2246, 2848, 3891, 4080, 4290, 4341, - 2558, 2558, 1807, 5186, 2246, 2246, 4359, 4386, 4398, 2045, - 2591, 2045, 2246, 4454, 4460, 4466, 2848, 4461, 2558, 3467, - 4467, 2247, 2246, 2558, 4603, 2243, 1876, 4604, 1020, 1877, - 1020, 2247, 2247, 1166, 877, 2515, 3031, 4650, 4645, 2247, - 4651, 1167, 4678, 2245, 2248, 1169, 2249, 4652, 3697, 2247, - 2045, 4232, 1170, 4233, 2248, 2248, 2249, 2249, 1883, 1173, - 3470, 4855, 2248, 3878, 2249, -2588, 3764, 4660, 3766, 1174, - 2591, 4444, 2248, 1176, 2249, 5338, 3711, 4732, 3173, 1300, - 4733, 3654, 2243, 1341, 1567, 1343, 1303, 4816, 782, 1885, - 2558, 4856, 2243, 2243, 4857, 4872, 3664, 1307, 2591, 4880, - 2243, 3469, 4881, 1308, 1326, 790, 3494, 2245, 1020, 4890, - 2243, 1309, 1754, 4896, 1313, 3448, 3801, 3449, 4123, 4898, - 3470, 2245, 3801, 3174, 4911, 4961, 3373, 4912, 4962, 1331, - 918, 3871, 4409, 782, 39, 3450, 768, 3451, 826, 5001, - 1868, 831, 1923, 834, 1332, 831, 3833, 3374, 3708, 28, - 3032, 5032, 879, 5317, 4912, 5318, 3431, 991, 3033, 831, - 1334, 3034, -1595, 4025, 4026, 4027, 831, 5042, 43, 5043, - 2591, 4418, 3408, 4421, 4116, 1180, 2948, 5044, 3369, 3303, - 2045, 4485, 3370, 3371, 3372, 1868, 5055, 1334, 1335, 5056, - 826, 2246, 1342, 5061, 1357, 834, 1754, 3317, -2588, 3958, - 843, 1358, 2710, -2588, 879, 3303, 1361, 3849, 47, 3375, - 5064, 5088, 4102, 3801, 2591, 4020, 1372, 1365, 2247, 3441, - 1407, 48, 5094, 2037, 831, 2591, 4139, 1434, 5095, 1431, - 1019, 2591, 3469, 4601, 3773, 3460, 3776, 5098, 39, -2588, - 5099, 2248, 5100, 2249, 49, 5101, 3908, 782, 3453, 3454, - 3455, -2240, 2627, 5126, 4097, 2246, 5127, 1436, 1437, 50, - 182, 957, 958, 5156, 959, 178, 1474, 5174, 5178, 2246, - 5175, 1754, 43, 5179, 1475, 768, 2045, 960, 1470, 2243, - 1476, 3938, 2247, 1482, 5180, 1484, 1892, 2045, 768, 5182, - 1163, 3731, 2045, 1489, 5201, 3460, 2247, 5202, 5225, 781, - 4228, 5226, 1492, 3899, 3469, 2248, 5249, 2249, 1527, 3801, - 1278, 1278, 47, 768, 732, 4162, 1528, 5261, 732, 2248, - 4904, 2249, 1543, 4870, 1554, 48, 3910, 3981, 5286, 1553, - 5324, 4912, 768, 5099, 5326, 5341, 768, 5327, 5175, 4216, - 1557, 5348, 1278, 2243, 5327, 1562, 1563, 1019, 49, 1568, - 1570, 1876, 3934, 768, 1877, 1571, 1573, 2243, -2588, -2588, - -2588, 1576, 1580, 50, -1374, 768, -1374, 1587, 1581, 1588, - 1591, 1597, -2588, 3374, 1594, 1600, 1608, 1602, 1611, 1623, - 1613, 1604, 1622, 1883, 1627, 3884, 1630, 1810, 1628, -175, - 1884, 1631, 1633, 1635, 3376, 3377, 3378, 1651, 3379, 3380, - 3381, 3382, 3383, 3384, 3385, 1636, 1658, 768, 1660, 1664, - 204, 1671, 1677, 4380, 1885, 1678, 1679, 1680, 1684, 1688, - 1690, 1687, 1704, 1706, 1718, 768, 1719, 1722, 1723, 1730, - 831, 831, 1734, 1735, 3623, 3375, 1737, 1742, 1743, 1745, - 1750, 1753, 1756, 1757, 1759, 1784, 1812, 4622, 1817, 1819, - 1826, -1818, 1827, -1825, 1834, 3494, 1820, 1835, 1836, 1837, - 732, 732, 1838, 3494, -1815, -1816, 50, 1840, -2588, 1841, - 1842, 1843, 1844, -1819, 1845, 1899, 1900, 1901, 1902, 1903, - 1904, 1905, 1847, 1848, 1849, 3661, 1850, 826, 1851, -1817, - 1852, 1853, 1854, 1856, 3550, 1909, 1857, 1858, 843, 2666, - 1859, 1860, 879, 1861, 1862, 1863, 1876, 1911, 4653, 1877, - 1913, 1914, 1923, 1927, 1939, 2048, 1345, 1347, 1948, 2079, - 831, 2081, 1180, 1886, 2090, 3369, 2094, 2092, 1887, 3370, - 3371, 3372, 2093, 2110, 2112, 2111, 4338, 2113, 1883, 2115, - 2116, 2117, 768, 2118, 2119, -2588, 3959, 3699, 1180, 831, - 831, 3369, 2120, 2121, 2127, 3370, 3371, 3372, 2152, 2158, - 2146, 5054, 2181, 2190, 1890, 2188, 2185, 2189, 2187, 1885, - 2192, 768, 768, 768, 2193, 831, 2208, 826, 3118, 2209, - 2221, 2210, 2222, 2233, 2237, 2239, 2240, 2241, 2242, 2243, - 3724, 2251, 2252, 2255, 2256, 2257, 3735, 2262, 2263, 2278, - 2266, 2272, 3629, 2273, 3735, 2274, 2275, 2281, 2285, 2290, - 1019, 1892, 1019, 2286, 2297, 2300, 2298, 1450, 2305, 2306, - 3376, 3377, 3378, 2310, 3379, 3380, 3381, 3382, 3383, 3384, - 3385, 4577, 2311, 2314, 2315, 2316, 3968, 2319, 2321, 2312, - 2322, 2338, 2327, 2328, 2339, 2344, 831, 2366, 831, 831, - 2340, 2345, 2350, 2368, 2390, 2354, 2376, 2369, 3799, 2371, - 2375, 2377, 2383, 2384, 2385, 2387, 2388, 2370, 2386, 2396, - 2395, 2397, 2402, 2405, 2406, 2409, 1278, 577, -2588, 2414, - 2423, 2434, 2420, -2588, 2438, 1511, 2447, 2439, 2458, 3832, - 1019, 2442, 2465, 2461, 2464, 2474, 2480, 1894, 2482, 2486, - 2497, 2632, 178, 4335, 4336, 4337, 1787, 1787, 2478, 2491, - 4300, 768, 2499, 702, 3822, 3709, 2512, 2500, 2520, -2588, - 3374, 2509, 2510, 2511, 178, 2513, 2504, 2505, 2522, 2523, - 2524, 2525, 2536, 2537, 1818, 4264, 3848, 768, 2575, 2569, - 1824, 2601, 2588, 2683, 2637, 2689, 3374, 1877, 2703, 2744, - 2693, 2723, 2709, 1278, 2745, 2759, 3975, 3470, 2773, 2780, - 3470, 2776, 2781, 2803, 788, 2802, 1892, 4769, 2819, 2804, - 2826, 1149, 2721, 2837, 2838, 2777, 2779, 2871, 2873, 2790, - 4491, 2840, 3375, 1278, 2666, 2866, 2805, 4442, 2880, 2885, - 2874, 2789, 2869, 1895, 2895, 2890, -2588, -2588, -2588, 2891, - 1899, 1900, 1901, 1902, 1903, 1904, 1905, 2897, 3375, 2666, - 2893, 1278, 1278, 1278, 2901, 2905, 1278, 2914, 2917, 1876, - 2913, 4369, 1877, 2930, 2931, 2936, 1878, 1879, 1880, 1297, - 1301, 2952, 2953, 2947, 2966, 2971, 1278, 4262, 4263, 2972, - 2993, 3470, 2998, 1881, 2999, 3008, 3036, 3092, 3111, 3115, - 3104, 1883, -2588, 3112, 3119, 3001, 3016, 3124, 1884, 3130, - 3137, 3141, 3125, 3162, 782, 3135, 3126, 3177, 3163, 3142, - 3956, 3150, 3181, 3183, 3192, 3195, 3209, 3201, 768, 3210, - 3217, 1278, 1885, 782, 3212, 3204, 3179, 3213, 2349, 3225, - 3226, 3229, 3230, 3211, 3243, 3244, 3223, 3248, 3246, 3247, - 3250, 3253, 3258, 3255, 3873, 1711, 3281, 3259, 3263, 1278, - 3271, 3284, 3272, 1278, 1278, 3283, 1868, 3293, 3256, 3257, - 3288, 1810, 3290, 3294, 768, 768, 2089, 3304, 1278, 3887, - 5297, 5298, 3990, 3295, 2602, 3995, 3306, 3308, 4440, 3296, - 3494, 3307, 1754, 3983, 3984, 3985, 3986, 1751, -2588, 3318, - 732, 3315, 3323, 1720, 1146, 1899, 1900, 1901, 1902, 1903, - 1904, 1905, 3325, 3329, 3494, 3332, 3333, 3376, 3377, 3378, - 3330, 3379, 3380, 3381, 3382, 3383, 3384, 3385, 3335, 3349, - 3350, 3353, 3351, 3352, 3354, 2191, 3358, 3359, -2081, 3361, - 732, 1886, 3364, 3376, 3377, 3378, 1887, 3379, 3380, 3381, - 3382, 3383, 3384, 3385, 768, 2217, 3404, 3422, 3365, 3417, - 3388, 3439, 3430, 768, 3394, 3401, 831, 1888, 1889, 2045, - 3415, 3440, 2666, 3416, 3442, 4528, 4529, 3444, 4531, 3472, - -1671, 3443, 1890, 3502, 3501, 1410, 3504, 3446, 3508, 3506, - 3515, 879, 3477, 768, 3528, 4475, 3496, 3522, 3533, 3535, - 3536, 3544, 3547, 3540, 4562, 3582, 768, 3584, 3541, 768, - 3556, 3549, 3571, 3572, 3589, 1891, 3588, 3590, 3591, 1411, - 3605, 3606, 3608, 3616, 3614, 3624, 3634, 3653, 3615, 1892, - 1807, 3735, 1893, 4496, 3651, 3666, 3657, 3658, 3655, 3663, - 3667, 3677, 3470, 3679, 3665, 768, 3680, 3686, 3681, 3682, - 3683, 3684, 3694, 3685, 4511, 4166, 831, 831, 831, 831, - 768, 2304, 3661, 3687, 3688, 3689, 3702, 4175, 4688, 4176, - 3698, 3691, 3700, 3693, 768, 4703, 4782, 2336, 1413, 3713, - 3690, 3692, 3695, 4965, 3704, 2364, 3705, 768, 3717, 1180, - 3707, 3718, 3369, 3720, 3737, 3726, 3370, 3371, 3372, 831, - 831, 3772, 3778, 3740, 3781, 3782, 3771, 3784, 3786, 4215, - 4173, 4586, 1414, 3731, 3789, 1894, 5057, 3118, 4483, 4537, - 831, 3118, 3118, 3801, 3118, 4098, 3800, 3803, 4955, 3724, - 4957, 3813, 3816, 3817, 4769, 3820, 3810, 3821, 3825, 768, - 3824, 3837, 3847, 3856, 2666, 3867, 3854, 1415, 3858, 3860, - 3877, 3880, 3872, 3879, 3881, 831, 831, 831, 831, 3868, - 3869, 3870, 3855, 3888, 3889, 3890, 3892, 3893, 768, 3894, - 3898, 1829, 3369, 3909, 3391, 768, -2080, 3390, 2364, 3951, - 3935, 1416, 3936, 3955, 3963, 789, 3937, 3943, 826, 3964, - 3976, 826, 3982, 3993, 4522, 3967, 834, 4002, 3994, 4017, - 4019, 1278, 4041, 4022, 4046, 4044, 4050, 4060, 4032, 4034, - 4035, 1895, 1418, 4036, 1896, 1897, 1898, 3460, 1899, 1900, - 1901, 1902, 1903, 1904, 1905, 4067, 4037, 4088, 4314, 5173, - 4627, 4090, 3360, 4096, 4103, 4104, 843, 843, 4195, 4091, - 4105, 4198, 4106, 4108, 4110, 4112, 178, 879, 879, 4126, - 4129, 4141, 34, 3470, 2201, 4144, 1420, 3470, 4310, 5250, - 4156, 4142, 4143, 1421, 4157, 4154, 4158, 831, 831, 4159, - 4155, 1422, 1810, 4813, 831, 4170, 768, 4171, 5104, 2202, - 4168, 4181, 4182, 4190, 4205, 4187, 4579, 3374, 5110, 5112, - 4207, 1424, 4348, 4348, 4348, 4209, 4348, 4348, 4348, 1425, - 877, 1787, 4117, 4212, 4219, 4879, 4236, 4247, 831, 4220, - 843, 4222, 4223, 4720, 768, 768, 4226, 831, 4250, 4259, - 4265, 4273, 4279, 4280, 768, 4292, 2558, 4283, 4285, 4286, - 4302, 768, 4307, 4308, 4323, 4333, 702, 702, 4275, 4325, - 2604, 2666, 2666, 4339, 1278, 4343, 1278, 4345, 4351, 3375, - 4361, 1278, 1278, 4321, 1426, 4326, 4329, 2349, 1278, 1278, - 1278, 4743, 4320, 4324, 1278, 879, 1278, 1278, 1278, 1278, - 1278, 1278, 4328, 1278, 4365, 1278, 1278, 4370, 4356, 1278, - 4366, 1180, 4371, 4967, 3369, 4374, 4378, 4407, 3370, 3371, - 3372, 4372, 4373, -2082, 4394, 1278, 1278, 1278, 1278, 4410, - 4412, 4423, 831, 1278, 4414, 4388, 4415, 1278, 4422, 4427, - 1278, 4428, 4430, 1278, 1278, 1278, 1278, 1278, 1278, 1278, - 1278, 1278, 1278, 4431, 1278, 5203, 4441, 4450, 3460, 3303, - 768, 1278, 3460, 1278, 4433, 4434, 4437, 4453, 4439, 4435, - 768, 4455, 4457, 4463, 4462, 4489, 4471, 4490, 4500, 4493, - 5312, 4499, 4501, 4512, 4515, 4521, 4519, 4524, 4525, 4889, - 4532, 4545, 4553, 4540, 4554, 4559, 4456, 4560, 4563, 4568, - 4889, 4569, 178, 178, 4574, 4575, 4578, 4576, 4582, 4584, - 4592, 4595, 4874, 4600, 4443, 4445, 4607, 4617, 4605, 4615, - 4618, 4619, 4620, 4628, 4633, 4639, 4640, 4646, 4656, 5312, - 4647, 4565, 4657, 4649, 4671, 4654, 4658, 4708, 4665, 4659, - 4674, 4685, 4681, 4738, 5312, 4701, 5104, 4705, 4711, 4714, - 4725, 4728, 4734, 1870, 4735, 5117, 4729, 4764, 4740, 4746, - 4747, 4783, 4751, 4785, 3376, 3377, 3378, 4246, 3379, 3380, - 3381, 3382, 3383, 3384, 3385, 4756, 4791, 4757, 4795, 4959, - 4793, 4796, 4798, 4799, 1810, 4802, 4801, 4819, 768, 4820, - 768, 4827, 1278, 4832, 4837, 4839, 4846, 4847, 4829, 4858, - 4862, 4860, 4861, 4494, 4875, 1278, 4878, 4882, 4888, 3374, - 4892, 4895, 4904, 4899, 1278, 1278, 4900, 4902, 4909, 4908, - 4920, 1020, 4927, 4929, 3697, 4936, 4930, 4942, 768, 4982, - 4984, 4996, 4994, 4989, 5003, 2827, 5015, 2832, 4993, 5008, - 5027, 5014, 5023, 5028, 4535, 4536, 5029, 5036, 5037, 5038, - 5039, 5045, 5046, 5053, 3118, 5066, 3118, 3118, 5069, 1876, - 3118, 5074, 1877, 5070, 5075, 5091, 5109, 5087, 834, 5115, - 5077, 3375, 5120, 5122, 5116, 5125, 5129, 702, 1810, 702, - 5132, 5133, 5139, 1810, 1810, 5152, 5153, 5160, 3470, 5161, - 5195, 1883, 5197, 5154, 3977, 3470, 1278, 5119, -2588, 5169, - 3470, 5171, 5188, 3470, 4683, 5204, 5118, 5062, 826, 5082, - 831, 831, 5213, 5190, 5212, 843, 5214, 879, 5244, 831, - 4594, 831, 1885, 5252, 5259, 831, 4506, 5269, 768, 3470, - 5272, 5295, 5278, 5293, 5299, 5301, 5305, 5294, 4516, 5047, - 5320, 5319, 3470, 5322, 5339, 5325, 5340, 5332, 178, 732, - 5343, 5333, 5344, 1336, 4621, 877, 5063, 5342, 3186, 2217, - 4598, 5065, 1525, 5067, 3487, 4744, 1524, 2950, 3065, 2997, - 4742, 1947, 1435, 2351, 2961, 3599, 4132, 4125, 5304, 5198, - 3725, 4229, 4976, 768, 3103, 4348, 5103, 5270, 4261, 3971, - 842, 4838, 3494, 4558, 4812, 5035, 3538, 3292, 5191, 693, - 4718, 5079, 5266, 877, 768, 693, 5123, 5121, 5211, 3006, - 3006, 3543, 4784, 5283, 4311, 4291, 1020, 5085, 4254, 768, - 768, 4130, 3160, 768, 3788, 834, 732, 3161, 1513, 3618, - 4278, -2588, 842, 4580, 4818, 3796, -2588, 4823, 5271, 5345, - 5337, 4797, 3151, 3743, 831, 3738, 5216, 831, 4745, 4938, - 5093, 709, 4748, 4340, 1804, -2493, 3376, 3377, 3378, 4915, - 3379, 3380, 3381, 3382, 3383, 3384, 3385, 2413, 768, 768, - 3460, 4317, -2588, 2843, 3529, 3460, 5034, 2595, 3460, 2526, - 1021, 2596, 4160, 3091, 1094, 3094, 3096, 1814, 1599, 2597, - 2487, 3792, 3701, 5235, 4180, 5331, 2784, 2126, 1310, 4446, - 2785, 3470, 2549, 4707, 5185, 4054, 4706, 3492, 2046, 1876, - 2818, 1919, 1877, 3503, 5181, 831, 2799, 4033, 5068, 1892, - 2817, 4438, 3997, 831, 831, 4405, 4420, 4894, 2076, 3303, - 831, 3991, 2080, 3735, 2075, 5052, 5051, 4055, 5334, 5251, - 3992, 1883, 1278, 5300, 831, -2493, 4873, 2085, -2588, 5172, - 3945, 4704, 5183, 5168, 5184, 2749, 3437, 3344, 2217, 3489, - 2758, 3006, 3470, 768, 2498, 0, 768, 0, 3435, 1934, - 3187, 4174, 1885, 702, 3118, 0, 1926, 0, 0, 0, - 0, 0, 0, 0, 0, 831, 1278, 0, 0, 0, - 0, 0, 0, 0, 0, -2493, 0, 5177, 0, 0, - 0, 0, 0, 3091, 0, -2588, 0, -2493, 0, 0, - 0, 0, -2493, 831, 0, 3219, 0, -2493, 0, 0, - 0, 0, 0, -2493, 0, 0, -2493, 0, 0, -2493, - 0, 0, 0, 0, 178, 0, 0, 0, 1278, 3303, - 0, 3303, 0, 0, 0, 0, 4817, 0, 0, 0, - 0, 0, 0, 0, 1020, 0, 0, -2493, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 831, 0, 831, - 3006, 831, 3006, 178, 0, -2495, 0, -2493, 0, 4995, - 0, -2588, 0, 0, 0, 4851, -2588, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 782, 0, 1493, 0, - 0, -2588, 0, 3470, 0, 1787, 0, 0, 1899, 1900, - 1901, 1902, 1903, 1904, 1905, 0, 0, 1494, -2493, 0, - 0, -2493, -2588, 0, 0, 0, 0, -2493, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 3460, 0, 0, - 0, 0, 768, 0, 0, 0, 0, 0, 1868, 0, - 0, 0, 826, 0, 0, 0, 0, 0, 843, 0, - 0, 0, 3470, 0, 0, -2495, 1495, 4117, 0, 1892, - 0, 831, 0, 0, 2149, 0, 0, 0, 0, 1278, - -2493, 0, 0, 0, 1278, 0, 0, 0, 0, 0, - 4952, 4952, 0, 3470, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1019, 0, 0, 0, 4969, 0, 1278, - 1278, 1278, 0, 877, 1278, -2495, 0, 4977, 0, 0, - 0, 0, 1278, 1278, 1278, 1278, 0, -2495, 0, 4118, - 0, 707, -2495, 0, 0, 1278, 0, -2495, 1278, 0, - 1278, 0, 0, -2495, 0, 0, -2495, 0, 0, -2495, - 1496, 0, 1278, 1278, 0, -2588, 1278, -2493, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 879, 0, - 1278, 0, 1278, 0, 1278, 0, 0, -2495, 3460, 0, - 0, -2493, 0, -2493, -2493, 0, 0, 0, 178, 0, - 0, 0, 0, 0, 0, 1278, 0, -2495, 1497, 768, - 5017, 1498, 0, 0, 3470, 0, 3471, 0, 1278, 1278, - 1278, 0, 2303, 0, 4119, 0, 0, 0, 0, 0, - -2493, 0, 0, -2493, -2493, -2493, 1278, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 1278, -2495, 0, - 0, -2495, 0, 1500, 0, 0, 0, -2495, 0, 5194, - 0, -2588, 1278, 0, -2509, 0, 0, 0, 1899, 1900, - 1901, 1902, 1903, 1904, 1905, 178, 3471, 0, 0, 842, - 3514, 0, 0, 3517, 0, 2832, 0, 5071, 0, 0, - 0, 0, 0, 0, 0, 0, 1502, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1019, 0, - -2495, 0, 5107, 0, 5108, 0, 1503, 0, 5113, 5114, - 0, 0, 0, 0, 0, 0, 1278, 0, 3006, 0, - 5220, 5241, 5242, 1787, 0, 0, 1505, 0, 4120, 0, - 1180, 4121, 0, 3369, 0, 3470, 0, 3370, 3371, 3372, - 0, 842, 842, 0, -2509, 0, 0, 0, 0, 0, - 831, 707, 831, 831, 831, 693, 0, 693, 0, 693, - 0, 0, 0, 0, 0, 693, 1134, 1135, 0, 0, - 0, 0, 0, 0, 0, 0, 0, -2495, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, -2509, 0, 0, 0, 0, 0, - 0, -2495, 0, -2495, -2495, 0, -2509, 3470, 0, 0, - 0, -2509, 0, 0, 0, 0, -2509, 0, 0, 0, - 0, 1876, -2509, 0, 1877, -2509, 0, 0, -2509, 0, - 2243, 0, 0, 4952, 0, 4952, 0, 0, 0, 0, - -2495, 0, 0, -2495, -2495, -2495, 0, 0, 0, 0, - 0, 0, 0, 1883, 0, 0, -2509, 0, 0, 0, - -2588, 0, 0, 768, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 856, -2509, 0, 0, 0, - 0, 0, 0, 0, 1885, 889, 0, 0, 0, 178, - 1876, 0, 0, 1877, 0, 0, 907, 1878, 1879, 1880, - 0, 5217, 0, 0, 5346, 5347, 5336, 0, 0, 0, - 182, 5237, 5238, 0, 5239, 178, 0, -2509, 0, 0, - -2509, 0, 1883, 0, 842, 842, -2509, 5240, -2588, 1884, - 0, 0, 0, 0, 0, 693, 1019, 5292, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 3972, 0, 1885, 0, 0, 0, 0, 0, 3303, - 0, 0, 0, 0, 0, 0, 0, 831, 0, 0, - 0, 0, 3006, 3006, 1876, 0, 0, 1877, 0, -2509, - 0, 0, 0, 0, 182, 5237, 5238, 0, 5239, 5291, - 3375, 0, 0, -2588, 0, 0, 0, 0, -2588, 0, - 0, 5240, 0, 4952, 0, 0, 1883, 0, 0, 768, - 768, 768, 5311, -2588, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 768, 0, 0, 0, - 707, 0, 0, 0, -2588, 0, 0, 1885, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1787, 768, - 0, 0, 0, 0, 0, 0, -2509, 0, 1787, 768, - 768, 5311, 1886, 0, 768, 0, 0, 1887, 0, 182, - 5237, 5238, 0, 5239, 178, 0, 5311, 768, 0, 0, - -2509, 1892, -2509, -2509, 0, 0, 5240, 0, 1888, 1889, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1890, 4392, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, -2509, - 0, 0, -2509, -2509, -2509, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 831, 1891, 0, 0, 0, - 0, 0, 0, 0, 0, 0, -2588, 0, 0, 0, - 1892, -2588, 3235, 0, 768, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, -2588, 0, 0, - 768, 0, 1410, 0, 0, 3376, 3377, 3378, 0, 3379, - 3380, 3381, 3382, 3383, 3384, 3385, 0, -2588, 0, 0, - 1278, 0, 0, 0, 0, 693, 0, 0, 1278, 1278, - 0, 1278, 0, 0, 0, 0, 1411, 1278, 0, 1278, - 0, 0, 1278, 0, 0, 0, 0, 1278, 1278, 1278, - 1278, 0, 0, 1278, 1278, 1278, 1278, 1278, 1278, 1278, - 1278, 1278, 1278, 1278, 1892, 0, 1894, 1278, 1278, 916, - 0, 0, 0, 0, 0, 961, 0, 1278, 0, 0, - 0, 1278, 0, 0, 0, 1278, 0, 0, 0, 0, - 0, 0, 0, -2588, 1278, 1413, 0, 1278, 0, 1278, - 1899, 1900, 1901, 1902, 1903, 1904, 1905, 0, 1278, 0, - 0, 1278, 1278, 0, 0, 0, 1278, 1278, 0, 0, - 0, 3979, 0, 1278, 0, 0, 0, 0, 0, 1414, - 768, 768, 768, 826, 0, 0, 3471, 4001, 0, 0, - 0, 4001, 4015, 4001, 0, 0, 0, 0, 0, 1278, - -2588, 0, 0, 0, 0, 1278, 1278, 1278, 0, 3236, - 0, 0, 1895, 0, 1415, 1896, 1897, 1898, 0, 1899, - 1900, 1901, 1902, 1903, 1904, 1905, 0, 0, 0, 0, - 0, 0, 0, 1278, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 2832, 1416, 1278, - 0, 0, 0, 0, 0, 0, 0, 0, 693, 0, - 0, 0, 0, 693, 693, 0, 0, 4075, 1787, 1787, - 0, 2364, 0, 0, 0, 0, 0, 1161, 0, 1418, - 0, 0, 0, 0, 0, 0, 0, 0, 831, 831, - 831, 831, 0, 0, 0, 0, -2588, 0, 0, 0, - 0, 0, 1285, 1899, 1900, 1901, 1902, 1903, 1904, 1905, - 0, 0, 0, 0, 0, 0, 0, 2217, 0, 34, - 0, 1312, 0, 1420, 0, 0, 0, 0, 0, 0, - 1421, 0, 0, 0, 0, 4128, 1876, 0, 1422, 1877, - 0, 0, 1337, 1878, 1879, 1880, 2202, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1424, 0, - 1881, 0, 0, 0, 0, 0, 1425, 0, 1883, 693, - 0, 0, 0, 0, 0, 1884, 0, 0, 0, 693, - 0, 0, 0, 0, 0, 0, 0, 3238, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1885, - 1180, 0, 0, 3369, 0, 0, 0, 3370, 3371, 3372, - 0, 0, 0, 0, 1467, 0, 0, 0, 0, 1134, - 1135, 1426, 0, 0, 4389, 3239, 2420, 0, 1876, 4213, - 0, 1877, 0, 0, 0, 1878, 1879, 1880, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 693, 0, 0, 693, 693, 0, 0, 0, - 1883, 0, 0, 0, 0, 0, 0, 1884, 831, 0, - 0, 0, 768, 0, 831, 0, 1278, 0, 0, 0, - 0, 0, 0, 768, 0, 0, 0, 0, 0, 4253, - 0, 1885, 0, 0, 0, 0, 0, 0, 0, 2217, - 0, 0, 0, 0, 0, 0, 0, 0, 1886, 0, - 0, 1438, 0, 1887, 768, 0, 0, 1439, 3471, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 3091, 0, - 1529, 1615, 0, 0, 1888, 1889, 0, 4301, 693, 0, - 0, 0, 0, 830, 832, 0, 0, 836, 768, 1890, - 0, 0, 2364, 0, 0, 0, 1278, 1278, 1440, 0, - 1653, 1656, 1657, 0, 0, 891, 0, 0, 0, 0, - 0, 0, 901, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1891, 0, 0, 3006, 0, 3006, 0, 0, - 0, 0, 0, 0, 768, 0, 1892, 0, 3374, 1893, - 1886, 0, 0, 0, 0, 1887, 0, 0, 0, 0, - 1530, 0, 1442, 0, 0, 0, 0, 0, 0, 1443, - 0, 0, 1444, 1278, 0, 0, -2588, -2588, 0, 0, - 0, 0, 0, 0, 0, 0, 1278, 0, 0, 0, - 0, 1890, 0, 0, 0, 0, 2493, 1445, 0, 0, - 0, 0, 0, 0, 0, 0, 2501, 0, 2502, 0, - 3375, 0, 0, 0, 2507, 0, 0, 1278, 0, 0, - 0, 2514, 0, 0, -2588, 0, 0, 1278, 1278, 1446, - 0, 0, 1894, 0, 0, 1278, 1278, 0, 1892, 0, - 1278, 0, 0, 0, 0, 1278, 0, 0, 1278, 1278, - 1285, 0, 0, 1278, 4397, 0, 0, 0, 0, 1278, - 768, 768, 768, 768, 0, 0, 0, 4001, 4015, 4001, - 0, 1278, 4001, 0, 0, 4411, 1285, 0, 0, 3471, - 0, 0, 0, 3471, 0, 0, 0, 0, 1447, 4426, - 1448, 0, 0, 0, 0, 0, 1278, 0, 0, 0, - 1449, 1278, 0, 0, 0, 0, 0, 1278, 0, 1450, - 0, 0, 0, 0, 879, 0, 0, 0, 0, 0, - 1451, 1278, 0, 0, 1894, 3514, 0, 0, 1895, 0, - 2832, 1896, 1897, 1898, 0, 1899, 1900, 1901, 1902, 1903, - 1904, 1905, 0, 0, 702, 2638, 2639, 1278, 0, 3411, - 0, 0, 2655, 2656, 0, 0, 0, 1531, 0, 0, - 1453, 1454, 0, 0, 0, 0, 0, 3006, 3006, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 2695, 0, 0, 0, 2217, 0, 0, 1532, 0, - 0, 0, 0, 0, 0, 3376, 3377, 3378, 4495, 3379, - 3380, 3381, 3382, 3383, 3384, 3385, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 1949, 0, 0, - 1895, 0, 0, 1896, 1897, 1898, 0, 1899, 1900, 1901, - 1902, 1903, 1904, 1905, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1676, 0, 0, 1278, 0, 0, - 0, 0, 1456, 1438, 0, 0, 0, 0, 0, 1439, - 0, 0, 0, 0, 2087, 0, 0, 0, 0, 831, - 0, 0, 1703, 0, 0, 0, 0, 0, 967, 0, - 0, 0, 970, 0, 831, 0, 0, 0, 0, 622, - 0, 0, 1721, 0, 623, 0, 995, 0, 0, 0, - 1440, 0, 1732, 1000, 0, 0, 624, 0, 1736, 0, - 0, 0, 0, 1278, 1744, 0, 0, 0, 0, 0, - 1752, 0, 0, 1755, 0, 0, 0, 826, 625, 0, - 0, 0, 0, 2217, 0, 0, 0, 0, 2605, 0, - 0, 626, 1787, 2211, 0, 0, 0, 0, 0, 0, - 0, 0, 2234, 0, 1442, 0, 627, 1278, 0, 0, - 0, 1443, 0, 0, 1444, 0, 0, 0, 0, 0, - 831, 0, 3219, 0, 628, 2808, 2808, 0, 0, 0, - 0, 0, 2271, 0, 0, 0, 2606, 0, 0, 1445, - 0, 0, 0, 0, 0, 2284, 0, 629, 2287, 0, - 0, 0, 768, 0, 0, 0, 0, 0, 630, 0, - 0, 0, 0, 0, 0, 0, 631, 0, 2607, 0, - 0, 1446, 0, 0, 0, 0, 0, 0, 632, 0, - 0, 0, 0, 633, 0, 0, 693, 0, 1278, 0, - 634, 2608, 0, 0, 0, 0, 0, 1278, 0, 2335, - 0, 0, 2609, 0, 0, 0, 0, 635, 0, 0, - 0, 0, 0, 2353, 0, 1278, 1278, 0, 0, 1278, - 0, 0, 2610, 0, 0, 0, 2365, 2611, 0, 0, - 1447, 0, 1448, 0, 826, 0, 0, 4001, 0, 0, - 0, 3471, 1449, 0, 0, 0, 3471, 0, 0, 3471, - 826, 1450, 3091, 636, 4687, 0, 0, 1278, 1278, 0, - 0, 0, 1451, 0, 0, 0, 3235, 0, 0, 0, - 0, 0, 0, 0, 0, 4075, 2612, 1278, 2417, 0, - 0, 0, 0, 0, 0, 0, 1410, 637, 4075, 879, - 831, 831, 831, 0, 0, 0, 0, 2613, 0, 638, - 0, 0, 1453, 1454, 0, 0, 0, 2460, 0, 639, - 0, 0, 0, 0, 2473, 0, 0, 1468, 1469, 204, - 1411, 0, 640, 0, 0, 0, 0, 0, 0, 0, - 1455, 0, 0, 0, 0, 0, 843, 879, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 641, 693, - 0, 0, 0, 642, 0, 643, 0, 693, 0, 0, - 693, 0, 644, 204, 0, 645, 2614, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 843, 1413, - 0, 768, 0, 0, 646, 0, 0, 0, 0, 0, - 647, 0, 2615, 4253, 1456, 648, 768, 0, 649, 2616, - 0, 768, 650, 3006, 0, 0, 2617, 1592, 0, 651, - 2217, 652, 2160, 1414, 0, 2547, 653, 2161, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 768, 654, 0, - 0, 4301, 0, 0, 2618, 0, 1617, 1618, 0, 2619, - 0, 655, 2620, 3236, 0, 831, 768, 4075, 1415, 0, - 0, 2162, 0, 1285, 1285, 0, 0, 0, 0, 0, - 2621, 0, 1659, 0, 2163, 0, 0, 0, 0, 0, - 2594, 0, 0, 1278, 0, 0, 1278, 0, 1278, 2164, - 0, 0, 1416, 0, 0, 2622, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1278, 0, - 0, 0, 0, 0, 1278, 0, 0, 0, 3471, 0, - 0, 0, 4687, 1418, 0, 0, 0, 0, 0, 1278, - 2165, 0, 0, 0, 0, 0, 0, 0, 4907, 0, - 0, 2166, 0, 0, 0, 1727, 1729, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 2167, 768, 34, 0, 0, 2168, 3237, 0, 0, - 0, 0, 3260, 3262, 1421, 0, 0, 0, 0, 2757, - 3270, 0, 1422, 0, 0, 0, 0, 0, 1278, 2772, - 2202, 0, 0, 0, 0, 0, 0, 831, 831, 831, - 831, 0, 1424, 0, 0, 0, 0, 0, 0, 0, - 1425, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 3235, 3238, 0, 558, 0, 826, 2169, 693, 0, 610, - 558, 0, 0, 0, 0, 661, 0, 558, 0, 0, - 1410, 0, 0, 558, 0, 712, 768, 0, 0, 3471, - 0, 0, 0, 0, 0, 1426, 0, 0, 0, 3239, - 2170, 0, 0, 0, 779, 779, 0, 0, 0, 0, - 0, 0, 0, 0, 1411, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 204, 2521, 0, 0, 0, 2783, 0, 2786, - 0, 2528, 0, 0, 0, 1278, 0, 0, 826, 0, - 0, 1278, 0, 0, 0, 5060, 0, 2538, 0, 0, - 0, 0, 1278, 0, 0, 0, 0, 1278, 2171, 1278, - 0, 1278, 0, 1413, 0, 2172, 0, 1285, 2173, 4075, - 0, 0, 0, 0, 0, 831, 0, 879, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 1278, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 1414, 2174, 0, - 0, 0, 0, 0, 0, 2175, 0, 0, 0, 0, - 0, 0, 2176, 0, 0, 0, 0, 0, 0, 2177, - 0, 0, 0, 0, 0, 0, 0, 3236, 0, 1787, - 1787, 0, 1415, 0, 0, 0, 0, 0, 0, 0, - 0, 838, 0, 0, 2178, 0, 0, 0, 0, 881, - 0, 882, 0, 886, 887, 0, 890, 0, 892, 0, - 831, 898, 3485, 900, 693, 0, 1416, 5137, 0, 0, - 0, 1278, 0, 0, 0, 0, 0, 0, 1438, 0, - 5149, 0, 0, 0, 1439, 3499, 3499, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 1418, 0, 0, - 0, 0, 0, 0, 0, 1278, 1278, 0, 0, 0, - 3091, 0, 0, 1278, 0, 0, 0, 1410, 0, 0, - 0, 0, 2973, 1278, 0, 1440, 4907, 0, 0, 0, - 0, 2832, 0, 2238, 0, 0, 0, 34, 0, 0, - 0, 1420, 0, 3000, 0, 843, 0, 0, 1421, 0, - 0, 1411, 0, 0, 0, 0, 1422, 0, 0, 831, - 0, 0, 0, 0, 2202, 0, 1787, 0, 0, 0, - 0, 0, 0, 0, 0, 1441, 1424, 0, 0, 1442, - 0, 1412, 0, 0, 1425, 0, 1443, 0, 0, 1444, - 0, 2217, 0, 0, 0, 0, 826, 0, 0, 0, - 0, 0, 1278, 0, 0, 3238, 0, 3066, 3067, 0, - 1413, 4075, 0, 0, 1445, 0, 0, 843, 843, 1278, - 0, 0, 0, 2331, 2332, 2333, 2334, 0, 1278, 0, - 0, 0, 5060, 0, 0, 0, 0, 0, 2782, 1426, - 0, 0, 0, 3239, 1414, 1278, 1446, 0, 0, 0, - 0, 0, 831, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 2373, 2374, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1415, - 0, 0, 0, 5149, 831, 831, 0, 2398, 1438, 0, - 0, 0, 0, 0, 1439, 0, 0, 0, 0, 0, - 0, 1493, 3180, 0, 0, 1447, 0, 1448, 0, 0, - 1278, 1278, 0, 1416, 0, 0, 0, 1449, 0, 0, - 1494, 0, 2443, 2444, 2445, 2446, 1450, 0, 0, 0, - 0, 0, 0, 0, 0, 1440, 0, 1451, 0, 0, - 0, 0, 0, 1417, 1418, 0, 0, 0, 0, 0, - 0, 0, 1278, 0, 0, 0, 0, 0, 1278, 0, + 604, 1568, 180, 819, 1022, 185, 175, 611, 835, 176, + 846, 904, 178, 1930, 663, 2237, 1636, 755, 1148, 757, + 1950, 2413, 1618, 763, 788, 1327, 185, 1401, 777, 785, + 755, 905, 792, 869, 1886, 785, 785, 1331, 821, 1856, + 824, 910, 2314, 1630, 915, 2343, 747, 1728, 1420, 1185, + 1186, 1187, 747, 3650, 1723, 1191, 1573, 1362, 822, 655, + 1361, 2315, 3404, 1846, 1847, 856, 2306, 3323, 2035, 1794, + 1349, 2487, 1862, 1855, 1990, 913, 3672, 1129, 3740, 3237, + 3970, 3144, 3760, 2724, 1007, 65, 3494, 2976, 2978, 935, + 753, 1142, 1060, 1767, 2478, 2580, 3346, 1772, 1058, 709, + 4257, 4219, 1776, 789, 2764, 1207, 3921, 2326, 3475, 3203, + 1482, 3999, 1786, 3986, 3685, 4018, 170, 3784, 4018, 3786, + 4258, 4252, 1156, 4517, 1139, 1510, 1810, 602, 4187, 1567, + 4156, 4296, 848, 1127, 4506, 1069, 1131, 721, 1596, 1162, + 840, 849, 2440, 2441, 4320, 4496, 4457, 2903, 1623, 1779, + 4828, 1532, 4204, 74, 3661, 1840, 1549, 4889, 2829, 782, + 2831, 77, 2600, 78, 2210, 1807, 816, 2297, 79, 833, + 80, 2943, 102, 120, 125, 150, 3691, 2946, 928, 3604, + 5017, 154, 173, 4789, 179, 604, 859, 859, 862, 4505, + 859, 3983, 2913, 1361, 871, 4677, 821, 1394, 2663, 907, + 808, 1397, 871, 2922, 5061, 871, 4120, 4946, 821, 2436, + 859, 1843, 1844, 821, 4234, 5074, -2427, 859, 2133, 821, + 669, 4901, 1854, 4903, 1060, -2465, -2488, 2297, 5235, 1477, + 1340, 4827, 1846, 1847, -2355, 4202, 2467, 4207, -2525, 729, + 4584, 620, 1806, 5217, 2297, 729, 2955, 3313, 1367, 4969, + 3543, 2128, -2430, 1855, -1921, 1833, 3336, 1862, 2317, 4467, + -1921, 1367, -2327, 729, 1167, 669, 2541, 854, -2327, 4674, + 1477, -2327, -2327, -135, 4835, 1477, 4979, 4980, 2839, -135, + 4557, 4558, 1171, 4560, 4561, 4562, 4563, 4564, -2328, 5154, + 2327, 1833, 825, 664, -2328, 2734, 1877, -2328, -2328, -2293, + 1758, 2049, 2476, 2477, -2177, -2293, 2221, 4008, 3282, 867, + 3283, -2177, -2694, -1888, 3287, 2447, 3289, 3290, -2694, -1888, + 2317, -2694, -2694, 2865, 3741, 3294, 3295, 3296, 2245, 3054, + -1901, -1926, 2055, 669, -433, -1916, -1901, -1926, 669, 3828, + 3479, -1916, -1929, 669, 2044, 4685, 2839, 2514, -1929, 2088, + 4468, 1216, -2290, 4518, 3314, 1833, -1929, 3481, 4847, 1973, + 1511, 1514, -1929, 669, 2057, 1408, 729, 3022, 3442, 3492, + 3444, 1843, 1844, 669, 4333, 1335, 669, 1820, 2103, 1341, + 1511, 669, 4144, 1833, 735, 5373, 729, 2104, 1763, 3543, + 5463, 3300, 4658, 735, 735, 843, 843, 3944, 1854, 669, + 3262, 1802, 735, 4384, 5367, 4363, 735, 2240, 736, 2243, + 3055, 2317, 2774, 2231, 618, 669, 2317, 736, 736, 2144, + 735, 2775, 1803, 2154, 2956, 2428, 736, -2486, 729, 4945, + 736, 2049, 2577, -689, 5355, 4469, 4338, 4784, 2881, 1226, + 2948, 5237, 3543, 4299, 736, 2882, 2380, 1630, 5509, 5510, + 2292, 3067, 1833, 3938, 1415, 3176, 2151, 1728, 3483, 2866, + 2997, 1833, 2055, 905, 2867, 5151, 2155, 3154, 1189, 924, + 615, 5062, 2317, 1833, 2317, 4790, 4300, 2246, 3647, 2452, + 4094, 3848, 2434, 1371, 1833, 5116, 4334, 3765, 1416, 2233, + 40, 2105, 1417, 3794, 2057, 1541, 669, 4702, 925, 2129, + 1016, 2868, 2317, 188, 4707, 2397, 1026, 3795, 2234, 1894, + 4121, 2049, 3844, 188, 905, 4311, 3909, 839, 1542, 1040, + 2776, 2317, 4791, 3687, 1723, 1418, 44, 2900, 3849, 3968, + -2197, 1981, 3176, 5447, 1834, 5557, 2041, -2197, 3484, 1764, + 3315, 3155, 2055, 2293, 3068, 2949, 2998, 189, 4339, 1449, + 4785, 5569, 2152, 1190, 5042, 1884, 4301, 189, 940, 948, + 1409, 5374, 3480, 949, 2091, 1060, 2247, 665, 48, 1934, + 1834, 1914, 5333, 1970, 2057, 2157, 4385, 670, 1728, 3482, + 1804, 49, 3741, 1060, 1980, 3058, 1083, 2515, 2466, 4470, + 4335, 3301, 3921, 2777, 2328, 1764, 868, 3829, 4848, 3543, + 1991, 4659, 2482, 3265, 50, 3515, 5503, 2329, 2106, 2330, + 954, 2578, 826, 1884, 5366, 1521, 821, 4355, 859, 2957, + 859, 5354, 862, 999, 859, 666, 185, 996, 2840, 3316, + 997, 907, 2542, 998, 1834, 2158, 1029, 1932, 859, 1218, + 2526, 5501, 1060, 4425, 2869, 859, 1833, 2085, 1994, 2408, + 3063, -2177, 2411, 1974, 2778, 2235, 941, 2779, 1450, 4471, + 1974, 4686, 1834, 667, 2381, 668, 2282, -2486, 4009, 604, + 2331, 3023, 5547, 862, 835, 1402, 1190, 621, 871, 4598, + 948, 2140, 907, 4466, 949, 871, 4626, 1835, 871, 1841, + 4630, 1163, 1764, 4204, 1190, 4871, 3610, 5316, 990, 5230, + 1636, 1636, 1636, 2906, 859, 942, 2448, 4262, -2427, 1764, + 2418, 3549, 2429, 5567, 741, 742, 3427, -2465, -2488, 1541, + 1193, 185, 3559, 1863, 3706, 4514, -2355, 2475, 2359, 2244, + -2525, 1834, 741, 742, 4569, 5439, -2486, -1921, 4513, 3263, + 1834, 3138, 1542, 1180, -2430, -2327, 3880, 5449, -135, -135, + -2486, 3939, 1834, 2178, 1164, 821, 1169, 2179, 1173, 2360, + 2902, 1155, 943, 1834, 1177, 4861, 1060, 2780, 2236, 4663, + 1208, -2328, 2101, 2077, 1060, 1060, 4617, 1745, 4619, 2579, + 948, 1193, -2293, 848, 949, 2883, 2684, 1881, 1060, 1857, + 1325, 1325, 849, 821, 785, -2694, 1845, 905, 785, 5011, + 1740, 3921, 2435, 1857, 4284, 3830, 1747, 5410, 1923, 1748, + 1858, 1405, 821, 1849, -1926, 1892, 821, 2483, -1916, 5505, + 5414, 2045, 1325, 2109, 1858, 1859, 2089, 1456, 2123, 2123, + 1733, 2667, 3845, 1158, 821, 1512, 1513, 1764, 2301, 1861, + 180, 2453, 2134, 185, 175, 1342, 821, 176, 4145, 5387, + 178, 4325, 3687, 2107, 2138, 1512, 1513, 4091, 3556, 3557, + 3558, 3559, 821, 3693, 2641, 3694, 3082, 5135, 3983, 2524, + 2454, 4364, 2694, 4824, 3901, 3902, 5359, -2197, 2781, 2138, + 821, 5334, 5546, 2706, 1916, 859, 859, 2782, 3841, 3168, + 1451, 2301, 2368, 1919, 3962, 3064, 4742, 741, 742, 4242, + 2074, 2075, 2076, 2077, 4429, 1884, 2714, 2695, 2301, 3554, + 3555, 3556, 3557, 3558, 3559, 2766, 4058, 5009, 785, 785, + 4743, 5491, -1888, 65, 2589, 1834, 4428, 1012, 2086, 5005, + 5095, 3121, 5564, 1629, 2284, 5343, 1048, 1110, 3951, 3645, + 2943, 1325, 1325, 3272, 2291, 3666, 1434, 2533, 1372, 2590, + 604, 2040, 1607, 1452, 170, 1182, 2987, 5358, 1608, 1334, + 2538, 871, 5143, 1346, 1533, 907, 2571, 871, 1738, 669, + 871, 1424, 3139, 3169, 1441, 1351, 5139, 3655, 2072, 2073, + 2074, 2075, 2076, 2077, 3122, 859, 5068, 3036, 2980, 2623, + 2624, 74, 3645, 768, 5069, 5365, 1424, 2297, 5465, 77, + -1888, 78, 5440, 4968, 3895, 3896, 79, 821, 80, 5528, + 102, 120, 125, 150, 859, 859, 3130, 5055, 3688, 154, + 173, 3653, 179, 1462, 2048, 2548, 3170, 2049, 948, 2231, + 2715, 2398, 949, 4887, 2401, 2402, 821, 821, 821, 2413, + 859, 4019, 604, 604, 604, 4531, 4353, 2232, 782, 1588, + 669, 2572, 3054, 3433, 2093, 1425, 3736, 4488, 2055, 4455, + 5189, 1609, 2186, 1449, 4953, 4257, 3554, 3555, 3556, 3557, + 3558, 3559, 4258, 1534, 669, 5130, 2995, 1049, 2539, 769, + 1425, 3123, 3676, 1442, 3171, 4258, 4493, 5222, 3221, 5119, + 2057, 4481, 5497, 2761, 3222, -1745, 3235, 3991, 2113, 3894, + 1602, 4866, 4443, 4448, 2549, 2233, 3952, 1426, 1868, 3809, + 1798, 4494, 859, 850, 859, 859, 1627, 2593, 3677, 5223, + 4893, 5524, 3762, 2094, 2234, 4897, 4020, 5448, 4899, 1884, + 1183, 2761, 1426, 3055, 4890, 1826, 2534, 1728, 2591, 5096, + 2114, 1903, 1603, 5466, 2504, 4065, 1856, 1325, 1168, 1170, + 1172, 1827, 1799, 1174, 1175, 1176, 5289, 5070, 1636, 2837, + 5188, 5294, 2696, 1181, 5210, 1936, 1872, 1938, 185, 1940, + -1888, 1942, 1450, 1944, 1945, 1946, 5291, 1952, 1952, 4744, + 1948, 1869, 821, 1904, 755, 746, 2505, 1728, 3172, 5084, + 3394, 746, 2981, 3728, 5244, 2982, 3918, 3223, 851, 5525, + 821, 5232, 2703, 2704, 1427, 1828, 1987, 5511, 5190, 821, + 2011, 5515, 1993, 5229, 1013, 1352, 4814, 2496, 3810, 5209, + 3131, 5010, 1610, 1050, 1111, 2669, 1325, 3372, 4815, 1427, + 4826, 3763, 2716, 2416, 1535, 3729, 4820, 770, -1744, 5131, + 4018, 3667, 1870, 603, 1443, 1871, 5498, 3124, 4456, 4449, + 4669, 4258, 2717, 835, 4444, 1739, 5231, 1325, 5424, 1051, + 1611, 2573, 2693, 5545, 1428, -1745, 2698, 2644, 2975, 2622, + 2702, 2235, 1536, 2705, 3037, 2574, 1868, 2041, 771, 772, + 4021, 2656, 1444, 5526, 1353, 1325, 4015, 1325, 1325, 2220, + 1325, 1628, 768, 1612, 2662, 2617, 2064, 4066, 1212, 3430, + 4495, 4700, 1429, 1829, 940, 1537, 35, 5568, 3058, 3173, + 1325, 841, 3737, 1604, 3276, 1445, 1723, 3174, 1052, 5477, + 3175, 2589, 2642, 1800, 1053, 2823, 2661, 5579, 2826, 2048, + 5580, 2676, 2049, 2145, 2146, 1430, 2150, 2655, 4554, 2136, + 2657, 5197, 849, 849, 2888, 849, 2590, 5133, 1162, 1869, + 4022, 905, 821, 5150, 1905, 1872, 4222, 2506, 3224, 1830, + 3431, -1888, 1405, 2055, 5085, 634, 2403, 1431, 4493, 1432, + -2695, -1888, 773, 1845, -1888, 1419, 842, -1888, 769, 3811, + 1499, 2239, 1325, 1446, 2236, 2793, 1325, 1325, 4662, 634, + 5091, 5112, 1431, 4494, 1432, 2057, 3225, 821, 821, 2184, + 2697, 1325, 941, 2700, 2701, 4573, 3730, 4574, -1744, 2240, + 1870, 3668, 3753, 1871, 2947, 1857, 1605, 3812, 4581, 1433, + 5445, 5446, 852, 2708, 785, 636, 1801, 5527, 857, 3226, + 2366, 5233, 5478, 5260, 3764, 3765, 1858, 870, 40, 40, + 615, 2455, 5064, 794, 5044, 870, 3539, 3128, 870, 636, + 3813, 942, 843, 2710, 1831, 1390, 5065, 1906, 5425, 2288, + 2507, 790, 3593, 3766, 785, 1884, 1873, 859, 4552, 3227, + 4526, 5198, 3152, 1872, 44, 44, 940, 3231, 3187, 1884, + 821, 2316, 5153, 2889, 3754, 715, 1874, 5157, 5158, 821, + 5045, 3054, 859, 1538, 2072, 2073, 2074, 2075, 2076, 2077, + 2620, 2404, 1523, 2725, 2405, 15, -2695, 3228, 943, 3731, + 3232, -2695, 3921, 4887, 994, 2249, 48, 48, -458, 907, + 3080, 821, 5286, 1872, 785, 2250, 4223, 1392, 4582, 49, + 49, 1384, 617, 3207, 2277, 4801, 770, 5426, 2711, 20, + 3229, 785, 4258, 795, 821, 5199, 756, 821, -2695, 2431, + 4575, 1636, 50, 50, 1367, 5063, 5054, 2925, 2241, 2154, + 188, 3152, 3440, 5548, 5427, 2367, 3842, 51, 51, 859, + 3230, 2800, 3055, 1524, 941, 5261, 2456, 771, 772, 5292, + 1935, 5479, 5349, 1937, 821, 1939, 5480, 1941, 1884, 1943, + 844, 4978, 647, 1947, 648, 2344, 859, 859, 859, 859, + 821, 2064, 2155, 3587, 189, 5262, 3186, 3056, 1152, 4441, + 4487, 3161, 3162, 735, 821, 3165, 647, 4447, 648, 4082, + 1780, 4195, 1551, 942, 1434, 1325, 1325, 1325, 2344, 1434, + 5066, 1385, 2688, 3311, 1873, -2318, -458, 736, 3843, -162, + 2413, 3211, 2926, -1892, 1780, 3057, 1060, 5363, 2344, -1892, + 669, 2760, 4482, 2763, 4196, 3266, 3267, 3268, 3250, 2770, + 1552, 3752, 1764, 2156, 1608, 2786, 2787, 2788, -162, 4632, + 3343, 3645, 4265, 2992, 3645, 3256, 2805, 2807, 4442, 4198, + 943, 2817, 3918, 2251, -1676, 5022, 1219, 3236, 5302, 2480, + 2481, -2695, 3077, 3355, 3356, 3357, 3358, -1676, 2653, 2344, + 1434, 1390, -1676, 3413, 1434, 3363, 4975, 4351, 4417, 2615, + 2410, 2157, 4420, 4421, 2643, 4423, 35, 905, 905, 2167, + 32, 2252, 2225, 2488, 2049, 821, 3272, 1410, 4220, 4976, + 3391, 5407, 3889, 2226, 1348, 1390, 5023, 859, 859, 4045, + 1391, 4323, 3690, 2437, 5024, 2383, 3645, 3058, 1919, -1676, + 40, 2227, 1541, 1352, 4266, 2345, 1499, 859, 4536, 5303, + 4537, 4217, 5216, 2468, 3009, 1411, 4932, 1609, 1570, -1676, + 5007, 2158, 5025, 1392, 4940, 1542, 821, 3342, 2689, 4103, + 2384, 4104, 627, 4258, 2346, 2387, 44, 2057, 2345, 5236, + 4221, -2695, 859, 859, 859, 859, 4200, 2071, 1412, 2072, + 2073, 2074, 2075, 2076, 2077, 821, 1571, 1392, 2345, 2347, + 2690, 5243, 821, 4324, 2488, 4267, -1676, 2346, 760, 4268, + 1393, 3010, 1353, 2691, 3846, -1676, 604, 5026, 48, 604, + 1421, 1579, 2334, 862, 767, -1675, 1212, 2346, 3166, 1325, + 5027, 49, 2347, 5513, 905, 2342, 766, 3712, -1675, 4438, + 4682, 3005, 5028, -1675, 1393, 1344, 2458, 5363, 2692, 2345, + 2464, 1576, 2347, 4258, 50, -1899, 2335, 634, 1422, 3881, + 5083, -1899, 1580, 4439, 871, 871, 3188, 2097, 2342, 51, + 3099, 5041, 1581, 2543, 3191, 907, 907, 3194, 2346, 871, + -1099, 3918, 871, 746, 3009, 746, 3384, 746, 2342, 1577, + -1675, 1423, 2228, 746, 1178, 1179, 4860, 3806, -1105, 859, + 859, 837, 857, 2347, 4105, 1572, 859, 2049, 821, 4683, + -1675, 870, 3995, 3577, 4106, 3840, 4244, 636, 870, 3584, + 185, 870, 1578, 2719, 2678, 2344, 2679, 2322, 2680, 2323, + 2681, 3100, 2682, 1952, 5571, 3807, 2683, 4805, 2055, 2342, + 859, 3709, 871, 4057, 5146, 871, 871, 5357, 821, 821, + 4018, 859, 793, -1676, 4258, 817, 4769, -1675, 821, 5356, + 2641, 4806, 2469, 1041, 3101, 821, -1675, 2731, 3808, 3347, + 2057, 999, 755, 755, 185, 996, 2736, 4952, 997, 4788, + 1325, 998, 1325, 4689, 4690, 4058, 5079, 1325, 1325, 4770, + 2324, 1852, 1853, 3467, 1325, 1325, 1325, 3645, 1042, 1325, + 2470, 1325, 907, 1325, 1325, 1325, 1325, 1325, 1325, 4928, + 1325, 4930, 1325, 1325, 4799, 40, 1325, -1715, 4819, 828, + 4983, 1060, -1715, 2403, 29, 3102, 2471, 3407, 5029, 1857, + 1582, 5030, 1158, 1043, 1325, 1325, 1325, 1325, 746, 2472, + 3065, 859, 1325, 4263, 838, 2730, 1325, 3490, 3491, 1325, + 1858, 44, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, + 1325, 1325, 3042, 1325, 1583, 1859, 2757, 2473, 1584, 821, + 1325, 3649, 634, 1325, 3923, 1041, 5441, 1060, 853, 2334, + 821, 1044, 905, 3453, 647, 2345, 648, 3038, 5451, -1715, + 3043, 3044, 3233, 48, 4245, 5253, 1014, 650, 1015, 2344, + 4246, 1585, 5213, 4403, -1675, 854, 49, 4247, 4975, 652, + 1042, 1541, 1780, 2335, 2346, 821, 863, 40, 4779, 5227, + 3926, 3030, 1325, 4265, 4404, 3234, 821, 821, 1598, 50, + 5296, 4976, 636, 5182, 1542, 865, -1715, 1325, 5183, 2347, + 5187, -587, 4248, 2422, 51, 3964, 1325, 1325, 885, -135, + 1919, 886, 3692, 44, 1808, 5220, 5254, 5504, 2404, 3651, + 821, 2405, 3076, 1544, 4249, 3468, 1599, 2961, 5191, 2966, + 1600, 1226, 2423, 2959, 3543, 2342, 3928, 1809, 3544, 3545, + 3546, 1857, 1615, 857, -1889, 1619, 3971, 3742, 5184, 939, + -1889, 2344, 1911, 1044, 870, 48, 3981, 2919, 947, 1601, + 870, 862, 1858, 870, 2999, 4266, 3002, 3352, 49, 4310, + 755, 930, 755, 3770, 3140, 1912, 181, 1861, 2374, 3608, + 2920, 4760, 3645, 4761, 4762, 887, 3645, 4763, 3062, 1325, + -1890, 50, 888, 889, 890, 2391, -1890, 181, 2996, 227, + 3167, 604, 2915, 859, 859, 619, 51, -1430, 871, -1430, + 907, 871, 871, 713, 859, 4386, 859, 4489, 2545, 2345, + 859, 2344, 3745, 821, 3417, 5570, 4267, 834, 5285, 4775, + 4268, 791, 1001, 2317, 3931, 1821, 1822, 1823, 4387, 5345, + 2317, 5409, 2582, 2318, 785, 2847, 4975, 2848, 2346, 3360, + 2325, 3432, 3434, 3435, 3361, 2316, 4302, 3701, 4309, 647, + 3697, 648, 4294, 3087, 821, 1845, 3838, 2211, 1003, 4976, + 3098, 2849, -1893, 2347, 746, -1891, 3932, 3253, -1893, 821, + 1060, -1891, 669, 1006, 1636, 1193, 1193, 653, 2042, 1193, + 1636, 1925, 3933, 4516, 1926, 2352, 2801, 3801, 3540, 3541, + 821, 729, 4070, 3561, 2819, 3143, 3143, 1009, 4285, 2342, + 40, 2345, 3923, 3547, 4942, 1023, 2353, 3664, 3924, 1046, + 821, 821, 729, 729, 821, 2344, 862, 785, -1157, -1157, + 3925, 3698, 3699, 669, 2123, 3548, 3847, 3967, 3511, 4645, + 2346, 3591, 3592, 2138, 4241, 1018, 44, 1019, 3940, 1845, + 859, 2211, 5489, 859, 3512, 4033, 4034, 744, 3926, 3513, + 3927, 847, 2524, 744, 4326, 2347, 1036, 3570, 2048, 3572, + 3573, 2049, 2850, 2851, 2852, 2853, 821, 821, 5436, 2854, + 2855, 2345, 3910, 1982, -586, 2856, 1983, 3922, 48, 3934, + 2857, 3238, 3361, 3241, 3243, 1531, 1845, 3201, 1419, 1060, + 1548, 2342, 2055, 3549, 3542, 3719, 1045, 4232, 3207, -2695, + 2346, 3, 4, 5179, 3928, 5181, 3571, 1047, 2131, 5185, + 5186, 2132, 2944, 2945, 1325, 1325, 1325, 1066, 2137, 2935, + 1325, 2138, -1739, -1739, 2057, 2347, 859, 5535, 2142, 51, + 3882, 2132, 3929, 4194, 859, 1062, 948, 859, -2293, 3594, + 949, 1193, 2673, 859, 1109, 2138, 2685, 3659, 1118, 2686, + 746, 5500, 1325, 5035, 859, 746, 746, 2687, 5221, 1125, + 2686, 2342, 2850, 2851, 2852, 2853, 1136, 2722, 2316, 746, + 2723, 3143, 5246, 821, 4507, 2345, 821, 1119, 2918, 3822, + 3345, 1919, 1153, 755, 3623, 4260, 4261, 2967, -1743, -1743, + 2138, 3607, 5486, 1143, 841, 859, 1325, 3930, 3833, -1742, + -1742, 4500, 3931, 4194, 2346, 3074, 4195, -1716, 3075, 1998, + 729, 51, -1716, 3238, 4985, 1184, 3501, 5538, 3146, 3504, + 2858, 3147, 3505, 859, 3306, 3377, 2610, 3307, 2611, 2347, + 3373, 2859, 1188, 3394, 3348, -2695, 5384, 5385, 3418, 4196, + -2695, 2138, 3918, 1192, 3932, 5452, 29, 3459, 1195, 3510, + 2686, 3497, 2138, 1325, 4197, 5136, 1845, 1198, 2211, 842, + 3933, 746, 1200, 5141, 4198, 2342, 3992, 3519, 3993, 3527, + 2138, 746, 2138, 3624, 1201, 3625, 4195, -2695, 3957, -1716, + 859, 5403, 859, 3143, 859, 3143, 3550, 3551, 3552, 3553, + 4199, 3554, 3555, 3556, 3557, 3558, 3559, 3528, 3529, 3645, + 2138, 2138, 5471, 5472, 3563, 5552, 3645, 2138, 1205, 4196, + 3576, 3645, 1202, 2138, 3645, 1178, 1179, 4894, 1209, 2641, + 1952, 1210, 2344, 2761, 4197, 4133, -1716, 1211, 905, 3581, + 2064, 1212, 3582, 3787, 4198, 843, 3788, 1213, 3645, 40, + 893, 894, 895, 896, 1214, 897, 898, 899, 900, 901, + 902, 3645, 4061, 3950, 1215, 3953, 1226, 3934, 746, 3543, + 4199, 746, 746, 3544, 3545, 3546, 3792, 1220, 5075, 3793, + 5585, 604, 3626, 1222, 3627, 44, 1060, 871, 1060, 1354, + 871, 4200, 3941, 871, 3943, 5270, 1347, 3817, 3878, 1630, + 3818, 3818, 859, 3660, 1355, 1350, 835, 1554, 4004, 2344, + 1325, 4005, 1360, 4006, 4310, 1325, 4007, 1356, 4029, 4031, + 1554, 4030, 2138, 4054, 1368, 2048, 1555, 48, 2049, 5553, + -2695, 5554, -2695, -2695, -2695, 4127, 2761, 1373, 4128, 1555, + 49, 1325, 1325, 1325, 1376, 4138, 1325, 4286, 4139, 4151, + 4230, 835, 2138, 4231, 1325, 1325, 1325, 1325, 4430, 2055, + 4431, 4200, 4235, 50, 1374, 4236, 2056, 1325, 4240, 1060, + 1325, 2982, 1325, 1388, 4264, 4012, 1556, 2686, 5453, 4895, + 4631, 1377, 4634, 844, 1325, 1325, 1403, 4490, 1325, 1556, + 2686, 2057, 2345, 4549, 1404, 1407, 1974, 181, 4698, 4570, + 4599, 4303, 2138, 2723, 4611, 1413, 907, 2138, 1325, 1419, + 1325, 4655, 1325, 4665, 4671, 4678, 2982, 4672, 2686, 4679, + 4821, 2346, 2686, 4822, 4327, 1454, 4069, 3645, 4853, 1480, + -2695, 4030, 4819, 1325, -2329, 4210, 2071, 821, 2072, 2073, + 2074, 2075, 2076, 2077, 3646, 1376, 2347, -1664, 3128, 1485, + 4321, 1486, 4868, 4870, 746, 4869, 2138, 3629, 3630, 3631, + 821, 1483, 1521, 1557, 835, 3596, 1525, 3597, 1325, 2345, + 3548, 1526, -1676, 3152, 4281, 4877, 1557, 40, 2723, 1527, + 1538, 4947, 2342, 1325, 4948, -1676, 5036, 3645, 1540, 2686, + -1676, 3598, 181, 834, 1553, 3207, 5076, 3646, 2346, 5077, + 5092, 3681, 2058, 2723, 3684, 5099, 2966, 2059, 5100, 2048, + 1550, 1558, 2049, 44, 1559, 1575, 2050, 2051, 2052, 5109, + 1589, 1590, 1919, 2347, 1558, 1606, 1616, 1559, 4076, 2412, + 5115, 5117, 1617, 3978, 3978, 2053, 1620, -1676, 3549, 4424, + 1625, 1626, 2412, 2055, 2062, 5128, 1731, 1325, 5129, 3143, + 2056, 1729, 1732, 5172, 1952, 48, 5173, -1676, 5212, 2342, + 1734, 2096, 2621, 1561, 5245, 4409, 5255, 5129, 49, 2723, + 5256, 3643, 2629, 3582, 2630, 2057, 1561, 1737, 1741, 5257, + 2634, 859, 2138, 859, 859, 859, 5268, 2640, 1387, 5269, + 1389, 50, 2850, 2851, 2852, 2853, 1742, 2064, 5274, 3599, + 5277, 1919, 1751, 3978, -1676, 3600, 51, 1563, 5295, 1750, + 3601, 2686, 847, -1676, 181, 1754, 1757, 1760, 4414, 857, + 1563, 1762, 857, 5301, 3643, 5307, 2723, 5308, 2723, 1564, + 2723, 3645, 5311, 5312, 5313, 2138, 2138, 5314, 5341, 1768, + 1771, 5342, 1564, 4594, 1773, 4099, 4100, 4101, 4102, 1566, + 1764, 4107, 4108, 4109, 4110, 4111, 4112, 4113, 4114, 4115, + 4116, 4117, 1566, 5391, 1782, 1783, 5392, 870, 870, 5395, + 1787, 1788, 1919, 2801, 2801, -182, 5396, 5397, 2801, 2138, + 2138, 1790, 870, 1791, 3660, 870, 2058, 2066, 1795, 3645, + 5399, 2059, 5418, 2138, 1793, 5419, 5443, 821, 5473, 5444, + 5485, 3978, 5512, 5122, 5550, 5129, 5563, 5551, 1796, 2138, + 1832, 4160, 4161, 2060, 2061, 1811, 2801, 2801, 3645, 2772, + 2773, 5565, 5583, 1818, 5566, 5392, 2789, 2790, 2062, 1825, + 207, 3550, 3551, 3552, 3553, 1837, 3554, 3555, 3556, 3557, + 3558, 3559, 1839, 5591, 4096, 870, 5566, 1838, 870, 870, + 3602, -1676, 1094, 1845, 1841, 1848, 1849, 1851, 2830, 1865, + 1879, 3603, 1867, 1880, 1883, 1884, 1891, 2063, 1895, 1897, + 1898, 5422, 1900, 1902, 1907, 1908, 1910, 1915, 1094, 4126, + 1918, 2064, 1921, 1922, 2065, 1924, 1949, 2067, 1979, 1986, + -2695, -2695, -2695, 2071, 1988, 2072, 2073, 2074, 2075, 2076, + 2077, 1989, 1995, 1996, 2005, 2083, 2003, 3168, 2004, 1325, + 2085, 2006, 2007, 1226, 948, 1325, 3543, 1376, 949, 51, + 3544, 3545, 3546, 3645, 859, 2009, 2010, 4172, 2011, 3143, + 3143, 3329, 2012, 2081, 2013, 2014, 2015, 2017, 2018, 4148, + 2019, 2020, 2021, 2022, 2023, 4350, 2024, 2026, 2027, 2028, + 2029, 2030, 4795, 2031, 2102, 2032, 1728, 2033, 2116, 2141, + 2086, 2126, 2096, 2143, 821, 821, 821, 1391, 1393, 2174, + 2176, 2066, 2185, 2187, 2188, 2942, 2942, 2189, 2761, 2190, + 2206, 821, 2208, 2207, 2209, 4462, 4463, 2211, 2212, 2213, + 2214, 3169, 2215, 2216, 2217, 2223, 4002, 2242, 2248, 2254, + 2279, 2283, 2285, 1952, 821, 2286, 4541, 4542, 4543, 4544, + 4545, 2303, 2287, 1952, 821, 821, 2289, 2290, 2307, 821, + 2309, 1226, 3143, 2308, 3543, 2321, 2332, 2336, 3544, 3545, + 3546, 821, 2338, 2341, 2320, 3998, 2339, 746, 2342, 181, + 2340, 2349, 2351, 2350, 3170, 2354, 4500, 4149, 2355, 1554, + 2356, 2361, 2362, 2375, 2365, 2376, 2371, 2372, 2377, 3645, + 2378, 2379, 4026, 2385, 2382, 2388, 2389, 2392, 1555, 2399, + 2406, 2067, 2394, 2395, 2068, 2069, 2070, 2071, 2407, 2072, + 2073, 2074, 2075, 2076, 2077, 2409, 1193, 2414, 2415, 3532, + 1226, 1499, 3533, 3543, 2420, 4166, 3330, 3544, 3545, 3546, + 859, 2421, 3171, 2426, 1999, 4653, 2449, 2425, 2430, 2432, + 2427, 2433, 2438, 2439, 2450, 2490, 4601, 3548, 1556, 2457, + 2451, 821, 2492, 2462, 2008, 2479, 2493, 4437, 2486, 5138, + 2494, 2495, 3086, 3645, 821, 1736, 2499, 821, 2500, 3645, + 2501, 2502, 2503, 2509, 857, 2510, 2511, 2512, 2513, 2519, + 2520, 870, 2518, 2517, 870, 870, 2025, 2525, 2528, 1325, + 1753, 2532, 4767, 629, 2529, 2546, 2557, 1325, 1325, 2537, + 1325, 2561, 2038, 2562, 2565, 1761, 2581, 2570, 1325, 2584, + 1325, 4546, 4305, 1325, 2587, 3549, 1572, 2543, 1325, 1325, + 1325, 1325, 2588, 2597, 1325, 1325, 1325, 1325, 1325, 1325, + 1325, 1325, 1325, 1325, 1325, 1557, 3172, 2607, 1325, 1325, + 2609, 2613, 2625, 746, 2627, 2646, 2628, 2648, 1325, 2649, + 2635, 746, 1325, 835, 746, 3548, 1325, 2636, 2601, 2650, + 2637, 2604, 2639, 2618, 1325, 4650, 746, 1325, 2632, 1325, + 3645, 2664, 835, 2619, 4840, 2633, 2638, 2651, 2665, 3331, + 2699, 1325, 2707, 1558, 1325, 1325, 1559, 2720, 2733, 1325, + 1325, 2766, 847, 847, 4170, 847, 1325, 2771, 2818, 2824, + 3660, 2412, 2049, 821, 821, 821, 604, 2838, 2828, 3646, + 4192, 2844, 2862, 2864, 4192, 4206, 4192, 4174, 4175, 4176, + 4177, 1325, 2885, 3549, 3548, 3660, 2886, 2910, 3332, 2900, + 2905, 2911, 842, 2937, 2936, 1561, 2908, 2909, 2938, 999, + 2960, 2924, 185, 996, 2953, 2971, 997, 1325, 2939, 998, + 2972, 2974, 3000, 3003, 4696, 3007, 3005, 3173, 3014, 3008, + 3029, 2966, 3019, 1325, 3031, 3174, 3024, 3035, 3175, 3039, + 4745, 4746, 3049, 4748, 3025, 3027, 3050, 3053, 3066, 1563, + 3071, 4259, 1952, 1952, 1344, 2488, 3396, 1348, 3083, 3109, + 3090, 3073, 3549, 3103, 3108, 3135, 3136, 3134, 3141, 3145, + 1977, 1564, 859, 859, 859, 859, 3153, 1457, 3550, 3551, + 3552, 3553, 3160, 3554, 3555, 3556, 3557, 3558, 3559, 3180, + 3181, 1566, 3197, 3239, 3260, 3252, 4780, 3261, 3264, 843, + 3279, 2316, 3284, 3643, 3285, 3286, 3643, 3292, 4738, 3321, + 3320, 1458, 3297, 3273, 3335, 3337, 3308, 3339, 3350, 4315, + 3341, 3359, 3353, 3367, 3362, 3368, 3370, 3371, 5142, 4706, + 3369, 3375, 3382, 4580, 2413, 3378, 3383, 3386, 3380, 3387, + 3405, 3406, 3410, 3412, 3408, 3426, 3428, 3409, 3414, 3419, + 3421, 3436, 3424, 3422, 3423, 3425, 3429, 1872, 3437, 3438, + 3449, 3451, 3452, 3458, 3456, 3461, 3462, 1487, 1919, 3474, + 3463, 1459, 3464, 1488, 3465, 3466, 2734, 1916, 3643, 3660, + 3476, 3477, 3478, 3485, 1881, 3488, 3550, 3551, 3552, 3553, + 5176, 3554, 3555, 3556, 3557, 3558, 3559, 3493, 1190, 3502, + 4362, 3495, 3499, 3507, 3500, 2048, 1460, 4797, 2049, 3523, + 3503, 3524, 746, 4372, 3521, 1490, 3526, 3539, 4406, 4988, + 2801, 2801, 2801, 2801, -2169, 3522, 2801, 2801, 2801, 2801, + 2801, 2801, 2801, 2801, 2801, 2801, 2801, 3397, 3525, 2055, + 3530, 3531, 1461, 5166, 3535, 5168, -2695, 3538, 2138, 3578, + 3595, 3562, 3605, 859, 4130, 3550, 3551, 3552, 3553, 3568, + 3554, 3555, 3556, 3557, 3558, 3559, 821, 3575, 859, 1491, + 1325, 2057, 3589, 3606, 3615, 3590, 1492, 821, 3620, 1493, + 3656, 3647, 1463, 4453, 3616, 3669, 2801, 2801, 3, 4, + 3618, 3662, 3671, 2316, 3619, 3622, 3673, 3689, 3682, 3675, + 3695, 3700, 3702, 3657, 3703, 1494, 3707, 3711, 821, 3714, + 3708, 3716, 3646, 3723, 1465, 3750, 3738, 3739, 3749, 3751, + 3755, 3756, 3238, 3757, 857, 3761, 3758, 3772, 3773, 3775, + 870, 4501, 3791, 870, 3783, 3796, 870, 3805, 4159, 1495, + 3781, 821, 3819, 3821, 3782, 2488, 3823, 3825, 4511, 715, + 1974, 3826, 1325, 1325, 3827, 35, 3834, 3832, 3835, 3398, + 4989, 3867, 3836, 3837, 3851, 3852, 3853, 3854, 1468, 15, + 5324, 5326, 3839, 3855, 3856, 3857, 1469, 5318, 3859, 3858, + 5033, 3861, -2695, 3143, 2300, 3143, 3863, -2695, 3865, 3870, + 4935, 3874, 821, 2364, 905, 3872, 1471, 2447, 3860, 3862, + 3864, 3866, 1593, 20, 4990, 1472, 1497, 3890, 3876, 1473, + 3877, 3883, 5098, 3886, 3887, 3893, 1498, 3897, 3888, 3652, + 3898, 746, 3900, 3908, -2695, 1499, 3906, 1325, 3399, 4991, + 3949, 3948, 3958, 3955, 3959, 3961, 3963, 1500, 3966, 3643, + 3977, 1325, 3978, 4959, 3665, 3665, 4992, 3980, 3996, 4954, + 4993, 3987, 3997, 4001, 4000, 3990, 4016, 4025, 4028, 4048, + 4035, 4039, 4041, 1474, 4049, 4003, 4050, 3400, 4060, 4051, + 4052, 4994, 1325, 4863, 4995, 1325, 4037, 2064, 1502, 1503, + 4063, 4062, 4036, 1325, 1325, 4804, 4053, 603, 4055, 4996, + 4064, 1998, 1325, 1325, 4073, 4074, 4840, 1325, 4085, 4075, + 4077, 181, 4078, 1325, 4079, 4080, 1325, 1325, 1504, 4081, + 5420, 1325, 4610, 3565, 3543, 4097, -2168, 1325, 821, 821, + 821, 821, 3564, 4123, 4140, 4192, 4206, 4192, 4153, 1325, + 4192, 4155, 4167, 4624, 4124, 4184, 4154, 3646, 4208, 4125, + 603, 3646, 4212, 4132, 4173, -2597, 4229, 4639, 5108, 4158, + 4224, 4185, 4218, 4193, 4227, 181, 4214, 4216, 4233, 5108, + 4251, 4243, 907, 4272, 4280, 4287, 4274, -2695, 4288, 4275, + 4290, 1325, 4293, 4291, 4295, 3681, 1505, 4997, 4298, 4297, + 2966, 4654, 4656, 4313, 32, 4316, 4329, 4332, 4328, 4667, + 4344, 4330, 4331, 4345, 4342, 755, 4343, 4346, 1325, 4356, + 4359, 4374, 2801, 4347, 4383, 4380, 2491, 4358, 4375, 4400, + 4399, 4402, 4304, 4415, 40, 4405, 4416, 4418, 3143, 3143, + 4434, 5318, 1226, 2508, 4419, 3543, 5331, 4998, 4988, 3544, + 3545, 3546, 4422, 4445, 4459, 2845, 4465, 2316, 5170, 4473, + -2597, 2527, 4479, 4480, 2686, 4483, 4485, 4486, 4602, 4492, + 44, 4508, 4710, 4502, 4509, 4519, 4524, 4525, 4527, 4529, + 4530, 4539, 4528, 4547, 3643, 4532, 4551, -2695, 3643, 4535, + 4553, 4701, 4559, 2071, 4572, 2072, 2073, 2074, 2075, 2076, + 2077, 4709, 4566, 4567, 4583, -2170, 1226, 4576, 4586, 3543, + -2597, 4587, 48, -2695, -2695, -2695, 716, 2608, 4627, 4635, + 4577, 4588, 1325, -2597, 4620, 49, 4607, 4592, -2597, 4623, + 2616, 4625, 4636, -2597, 4628, 4641, 4640, 4642, 4643, -2597, + 4649, 4652, -2597, 1094, 4651, 5390, -2597, 4661, 50, 859, + 4664, 4666, 4668, 4673, 4674, 2631, 4680, 4684, 4703, 4704, + 4705, 4708, 4715, 717, 859, 4714, 5165, 4716, 4728, 4731, + 4737, 4735, 4749, 4750, 4740, -2597, 4758, 181, 4741, 4764, + 1060, 4759, 4757, 4768, 4771, 5090, 4772, 4777, 5275, 4778, + 4781, 4786, 4787, 4794, 4796, -2597, 4792, 4793, 1325, 2660, + 1094, 4800, 4802, 4810, 4813, 4818, 4823, 4829, 4825, 4830, + 5293, 4832, 4834, 4836, 604, 4837, 4845, 4838, 4850, 4858, + 2316, 4857, 4864, 4873, 4865, 4874, 4867, 4585, 4875, 1952, + 4876, 4882, 4898, 4888, 5178, 4891, 4902, 4923, 4917, 4926, + 4929, 746, -2597, 4920, 1325, -2597, 3548, 4939, 4941, 4944, + 4949, -2597, 4950, 4951, 4956, 4981, 4962, 859, 4963, 3377, + 5003, 4444, 4943, 5014, 4816, 3954, 5012, 4967, 5021, 905, + 4972, 4973, 5039, 5040, 5290, 5047, 606, 5052, 4974, 5015, + 5018, 4622, 5020, 2048, 5049, 5057, 2049, 5059, 5078, 5080, + 2050, 2051, 2052, 821, 5094, 5082, 5081, 5097, 5101, 5107, + 5111, 5114, 4960, 5118, 5120, 5126, -2597, 5145, 5137, 2053, + 3660, 5122, 5147, 5160, 3549, 5148, 5154, 2055, 5192, 5200, + 5194, 5207, 905, 5204, 2056, 5214, 5205, 5219, 4958, 5226, + 5238, 5239, 5225, 2040, 5240, 5241, 1325, 5242, 5249, 5234, + 5250, 2832, 2048, 5252, 5251, 2049, 5266, 5258, 5279, 2057, + 5283, 5282, 5287, 5288, 4032, 1226, 5304, 5300, 3543, 5323, + 5329, 760, 3544, 3545, 3546, 1325, 1325, 1060, 5330, 1325, + 5335, 5337, 5002, 5340, 5344, 5347, 2055, 5544, 3549, 5348, + 5368, 5369, 5371, -2695, 604, 5370, 5376, 4192, 5377, -2597, + 5386, 3646, 5388, 5404, 4168, 5413, 3646, 5161, 5162, 3646, + 604, 5415, 3238, 5406, 4904, 5421, 1325, 1325, 2057, 5333, + 5423, 5334, 5431, -2597, 5432, -2597, -2597, 2048, 5430, 5464, + 2049, 4921, 5469, 4259, 5267, 1325, 5450, 5476, 5483, 5488, + 5493, 5502, 5521, 5496, 5523, 746, 4259, 907, 859, 5522, + 859, 5544, 5531, 5533, 5537, 5556, 5555, 5559, 5560, 5558, + 5584, 2055, -2597, 5573, 5574, -2597, -2597, -2597, -2695, 5544, + 2058, 606, 5581, 5582, 5586, 2059, 5587, 2463, 3344, 1484, + 606, 879, 2125, 1587, 1586, 4162, 1378, 3212, 606, 3654, + 879, 606, 3767, 2057, 4319, 3133, 5416, 2060, 2061, 871, + 907, 4312, 3299, 3251, 879, 3905, 5317, 5000, 5494, 4461, + 5058, 4776, 2062, 5032, 3705, 3460, 5165, 3550, 3551, 3552, + 3553, 3643, 3554, 3555, 3556, 3557, 3558, 3559, 3643, -2695, + 5408, 4933, 5259, 3643, -2695, 5490, 3643, 5338, 5336, 5429, + 5507, 3710, 4512, 871, 4491, 5298, 821, 4454, 3318, 5276, + 3319, 2063, 3785, 5278, 3965, 5280, 4317, 1574, 4453, 4798, + 3643, 821, 4478, 3034, 5038, 2064, 821, 3309, 3143, 3548, + 3973, -2695, 5043, 3643, 5495, 2316, 5073, 3051, 5037, 5588, + 5578, -2695, -2695, -2695, 3553, 5016, 3554, 3555, 3556, 3557, + 3558, 3559, 821, 3911, 181, 4520, 4501, 5434, 4961, 5060, + 5156, 2536, 4964, 5306, -2695, 762, 4548, 5132, 2977, -2695, + 859, 821, 4259, 5549, 3696, 5247, 5071, 1971, 3084, 4521, + 2606, 1060, 2603, 2727, 2064, 2728, 1137, 2652, 1061, 3873, + 2614, 4348, 2729, 3969, 3249, 5455, 4373, 3549, 1325, 5572, + 2222, 1325, 4533, 1325, 2914, 835, -2695, 1357, 4534, 603, + 1379, 2923, 603, 2677, 4922, 2066, 4657, 5402, 4237, 3658, + 2092, 3670, 1325, 2952, 2171, 2139, 2170, 2933, 1325, 4215, + 5398, 5281, 3646, 4647, 4618, 2175, 4904, 2951, 2801, 4188, + 4633, 4182, 1325, 5113, 2180, 5265, 5264, 4238, 4183, 5575, + 5475, 5125, 5532, 5389, 2626, 5093, 4134, 4919, 5400, 2064, + 5401, 2890, 3613, 1226, 3275, 3516, 3543, 3611, 2899, 0, + 3544, 3545, 3546, 821, -2695, 1952, 0, 0, 0, 0, + 0, 0, 0, 0, 603, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 746, 0, 3643, + 0, 1325, 0, 905, 0, 0, 1325, 1325, 0, 0, + 0, 859, 859, 859, 859, 2067, 0, 0, 2068, 2069, + 2070, 2071, 746, 2072, 2073, 2074, 2075, 2076, 2077, 746, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 746, 0, 1325, 0, 0, 0, 0, -2695, + 0, 604, 0, 0, 0, 0, 0, 0, 1554, 3643, + 0, 0, 0, 0, 0, 2038, 0, 0, 5529, 5530, + 0, 0, 0, 821, -2695, 0, 3646, 1555, 0, 0, + 2071, 3304, 2072, 2073, 2074, 2075, 2076, 2077, 0, 0, + 3550, 3551, 3552, 3553, 5228, 3554, 3555, 3556, 3557, 3558, + 3559, 0, 0, 0, 2048, 0, 0, 2049, 0, 0, + 2038, 2050, 2051, 2052, 0, 0, 0, 1178, 1179, 0, + 0, 0, 0, 0, 0, 0, 0, 1556, 4304, 0, + 0, 1325, 0, 2845, 604, 2245, 0, 1325, 2055, 0, + 0, 5273, 0, 0, 0, 2056, 0, 0, 1325, -2695, + 3617, 0, 1325, 0, 1325, 2071, 1325, 2072, 2073, 2074, + 2075, 2076, 2077, 4259, 0, 0, 3636, -2695, 5284, 0, + 2057, 907, 0, 0, 5412, 879, 0, 0, 0, 0, + 0, 879, 1325, 0, 0, 0, 0, 0, 5536, 0, + 0, 4305, 0, 0, 879, 0, 0, 0, 0, 0, + 0, 0, 0, 3643, 0, 0, 746, 0, 0, 0, + 879, 0, 0, 0, 1557, 606, 0, 1952, 1952, 3636, + 1108, 0, 0, 834, 606, 879, 0, 0, 0, 0, + 2801, 606, 0, 879, 606, 3549, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 603, 1108, 879, 859, 5461, + 5462, 0, 0, 0, 2801, 5352, 0, 879, 746, 1325, + 0, 3643, 1558, 0, 0, 1559, 0, 0, 5364, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 2412, 2058, 0, 0, 4306, 3486, 2059, 0, 0, 0, + 3643, 0, 0, 0, 1325, 1325, 1325, 0, 0, 0, + 3238, 0, 3498, 1325, 0, 0, 0, 0, 2060, 2061, + 0, 0, 0, 1325, 1561, 0, 5125, 3506, 0, 0, + 0, 2966, 0, 2062, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 871, 606, 606, 0, 0, + 0, 0, 879, 0, 0, 0, 0, 0, 0, 0, + 859, 0, 0, 0, 0, 0, 0, 1952, 1563, 0, + 0, 0, 2063, 0, 0, 0, 879, 0, 606, 0, + 0, 0, 0, 0, 0, 0, 2064, 0, 0, 879, + 1564, 0, 0, 2316, 0, 0, 0, -2599, 604, 0, + 5435, 0, 0, 0, 1325, 3643, 0, 0, 0, 0, + 1566, 0, 4307, 0, 4259, 4308, 0, 0, 0, 0, + 871, 871, 1325, 0, 0, 0, 0, 5460, 0, 0, + 185, 5457, 1325, 0, 5458, 0, 5273, 5459, 3550, 3551, + 3552, 3553, 0, 3554, 3555, 3556, 3557, 3558, 3559, 0, + 0, 0, 0, 0, 0, 0, 0, 859, 0, 0, + 5520, 0, 0, 0, 0, 0, 0, 0, 0, 5589, + 5590, 0, 0, 0, 0, 0, 2066, 0, 0, 2801, + 603, 0, 0, 0, 603, 0, 0, 0, 5364, 859, + 859, 0, -2599, 0, 4259, 0, 0, 606, 606, 1724, + 0, 0, 0, 0, 0, 5460, 606, 0, 185, 5457, + 746, 0, 5458, 1108, 0, 5459, 746, 606, 2342, 0, + 746, 1325, 1325, 606, 0, 0, 606, 0, 0, 0, + 0, 0, 1325, 0, 0, 0, 0, 1325, 1108, 0, + 0, 3643, -2599, 0, 0, 0, 4725, 4726, 0, 0, + 0, 4729, 4730, 1108, 0, -2599, 0, 0, 0, 0, + -2599, 0, 0, 0, 0, -2599, 0, 1325, 0, 1487, + 0, -2599, 0, 0, -2599, 1488, 2067, 1325, -2599, 2068, + 2069, 2070, 2071, 0, 2072, 2073, 2074, 2075, 2076, 2077, + 0, 0, 859, 0, 0, 4259, 0, 0, 606, 606, + 606, 0, 0, 3721, 5273, 0, 5460, -2599, 604, 185, + 5457, 0, 0, 5458, 0, 3643, 5459, 1490, 0, 0, + 0, 3643, 3732, 0, 0, 0, 0, -2599, 0, 0, + 871, 871, 0, 0, 0, 0, 0, 0, 1108, 0, + 0, 0, 0, 0, 0, 2801, 2048, 0, 0, 2049, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 181, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1491, 0, 0, -2599, 879, 0, -2599, 1492, 0, + 2055, 1493, 0, -2599, 0, 0, 181, -2695, 0, 0, + 0, 0, 0, 879, 0, 0, 0, 0, 0, 0, + 0, 2048, 0, 606, 2049, -2615, 0, 1494, 0, 0, + 0, 879, 2057, 0, 0, 0, 0, 3814, 0, 3816, + 0, 0, 3643, 1487, 0, 0, 0, 0, 0, 1488, + 0, 0, 0, 0, 0, 2055, 0, 4783, -2599, 879, + 0, 1495, -2695, 0, 0, 0, 877, 0, 1108, 2048, + 879, 0, 2049, 0, 0, 914, 2050, 2051, 2052, 0, + 0, 0, 0, 0, 5474, 0, 879, 2057, 0, 936, + 879, 1490, 0, 0, 0, 2053, 0, 0, 0, 4163, + 0, 0, 606, 2055, 0, 0, 0, 0, 0, 0, + 2056, 0, 0, 760, 0, 0, 0, 0, 0, 0, + -2615, 0, 0, 0, 1593, 0, 0, 0, 1497, 0, + 3869, 0, 0, 606, 0, 2057, 0, 0, 1498, 0, + 0, -2599, 0, -2695, 0, 1491, 0, 1499, -2695, 0, + 0, 0, 1492, 0, 4605, 1493, 0, 0, 0, 1500, + 0, 606, 0, 606, 606, -2599, 606, -2599, -2599, 0, + -2615, 3891, 0, 2801, 2801, 0, 0, 0, 0, 0, + 0, 1494, 0, -2615, 0, -2695, 606, 0, -2615, 0, + 0, 0, 0, -2615, 0, 0, 0, 1621, -2695, -2615, + 1502, 1503, -2615, -2695, -2599, 0, -2615, -2599, -2599, -2599, + 0, 0, 2038, 0, 879, 1495, 0, 0, 0, 0, + 0, 0, 879, 879, 0, 0, 0, 603, 4181, 0, + 1622, 4186, 0, 0, 603, -2615, 879, 0, 2064, 603, + -2695, 0, 603, 4900, 0, 0, 2058, 746, 0, 0, + 0, 2059, 0, 181, 0, -2615, 0, 0, 606, 2737, + 0, 0, 606, 606, 0, 0, 603, 0, 0, 3084, + 0, 0, 0, 2060, 2061, 0, 0, 606, 1593, 603, + 0, 0, 1497, 1108, 0, 0, 0, 0, 2062, 1724, + 0, 0, 1498, 2064, 0, 0, 0, 0, 1505, 0, + 0, 1499, -2615, 0, 4027, -2615, 0, 2256, 2738, 0, + 0, -2615, 2257, 1500, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 2063, -2695, 0, + 0, 0, 870, 0, 0, 0, 0, 0, 0, 0, + 2739, 2064, 0, 0, 2065, 0, 0, 2258, 0, 0, + 1108, 2280, 0, 0, 1502, 1503, 0, 0, 0, 0, + 2259, 0, 0, 2740, 0, 0, -2615, 0, 0, 0, + 0, 0, 0, 0, 2741, 2260, 870, 0, 2048, 0, + 0, 2049, 0, -2695, 2281, 2050, 2051, 2052, 0, 0, + 0, 1108, 0, 0, 0, 2742, 0, 0, 0, 0, + 2743, 0, 0, 0, 2053, 0, 0, 0, 0, 0, + 4086, 0, 2055, 0, 0, 0, 2261, 0, 0, 2056, + 0, 760, 0, 0, 1108, 0, 0, 2262, -2695, 0, + 0, 2066, 0, 0, 2071, 4098, 2072, 2073, 2074, 2075, + 2076, 2077, 0, 0, 2057, 603, 0, 0, 2263, -2615, + 0, 2744, 1505, 2264, 0, 0, 0, 0, 0, 0, + 0, 4122, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 2745, -2615, 0, -2615, -2615, 0, 0, 0, + 0, 0, 0, -2695, 0, 0, 879, 0, 0, 2071, + 0, 2072, 2073, 2074, 2075, 2076, 2077, 1977, 0, 0, + 1017, 606, 606, 606, 0, 603, 1017, 0, 0, 0, + 0, 0, -2615, 0, 0, -2615, -2615, -2615, 0, 1017, + 0, 746, 0, 0, 0, 2265, 0, 0, 0, 0, + 0, 2067, 0, 0, 2068, 2069, 2070, 2071, 0, 2072, + 2073, 2074, 2075, 2076, 2077, 207, 2746, 0, 0, 2747, + 0, 0, 3534, 0, 0, 2058, 0, 0, 0, 0, + 2059, 0, 0, 0, 3636, 2266, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 2748, 0, 0, 2749, 0, + 0, 0, 2060, 2061, 2750, 0, 0, 0, 0, 0, + 0, 2751, 181, 0, 0, 0, 0, 2062, 207, 2267, + 0, 0, 0, 0, 1108, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 2752, 1108, 0, 0, 5206, 0, 2753, 0, 0, 2754, + 0, 2268, 0, 0, 1724, 0, 2063, 2269, 0, 1108, + 0, 0, 0, 0, 2270, 0, 0, 2271, 2755, 603, + 2064, 0, 0, 2065, 0, 0, 0, 0, 879, 0, + 0, 0, 0, 0, 0, 0, 879, 0, 0, 0, + 0, 0, 0, 0, 2756, 0, 0, 0, 879, 2272, + 0, 0, 0, 0, 0, 0, 2273, 0, 0, 0, + 0, 0, 0, 0, 2274, 1108, 0, 0, 5315, 0, + 0, 2275, 606, 0, 0, 606, 0, 603, 1108, 0, + 0, 0, 0, 0, 0, 606, 0, 0, 0, 0, + 0, 1108, 0, 0, 0, 0, 0, 2276, 0, 0, + 0, 0, 0, 1108, 0, 0, 603, 0, 0, 0, + 2066, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 606, 606, 0, 879, 879, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 606, 0, 879, 606, 0, + 0, 0, 0, 0, 673, 0, 0, 1108, 1108, 0, + 879, 879, 0, 759, 0, 0, 0, 0, 0, 3636, + 0, 0, 0, 3636, 0, 0, 879, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 181, 181, 0, 606, 0, + 0, 606, 606, 0, 0, 0, 0, 0, 0, 0, + 2067, 603, 0, 2068, 2069, 2070, 2071, 4464, 2072, 2073, + 2074, 2075, 2076, 2077, 0, 0, 0, 0, 1487, 0, + 0, 3585, 0, 0, 1488, 0, 606, 0, 606, 0, + 0, 0, 0, 606, 606, 0, 0, 1591, 0, 0, + 606, 606, 606, 0, 0, 606, 0, 606, 0, 606, + 606, 606, 606, 606, 606, 0, 606, 0, 606, 606, + 0, 0, 606, 0, 0, 0, 1490, 0, 870, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1108, + 606, 606, 606, 606, 1724, 0, 0, 0, 606, 0, + 0, 0, 606, 3396, 0, 606, 0, 0, 606, 606, + 606, 606, 606, 606, 606, 606, 606, 606, 0, 606, + 0, 0, 0, 0, 1457, 0, 606, 0, 1592, 606, + 1491, 5438, 0, 0, 2047, 0, 0, 1492, 0, 0, + 1493, 2048, 0, 0, 2049, 0, 0, 603, 2050, 2051, + 2052, 0, 0, 870, 870, 0, 0, 0, 1458, 0, + 0, 0, 0, 0, 0, 0, 1494, 2053, 0, 0, + 2054, 0, 879, 0, 0, 2055, 0, 0, 606, 0, + 0, 0, 2056, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 606, 0, 0, 0, 0, 0, 0, + 1495, 0, 606, 606, 0, 5542, 0, 2057, 0, 0, + 0, 0, 0, 0, 0, 0, 1977, 0, 1459, 0, + 0, 603, 0, 0, 0, 0, 0, 603, 879, 0, + 0, 0, 0, 0, 0, 1108, 0, 0, 0, 1108, + 1108, 0, 0, 0, 0, 0, 879, 0, 0, 0, + 0, 1724, 879, 1460, 0, 0, 879, 0, 181, 0, + 0, 0, 0, 1593, 879, 0, 0, 1497, 0, 5542, + 0, 0, 0, 0, 0, 0, 0, 1498, 0, 0, + 0, 0, 879, 0, 3397, 606, 1499, 5542, 0, 1461, + 0, 0, 0, 0, 0, 0, 0, 606, 1500, 0, + 0, 1108, 0, 0, 606, 0, 0, 606, 606, 0, + 0, 0, 0, 0, 0, 1108, 0, 0, 2058, 0, + 0, 0, 0, 2059, 0, 0, 0, 879, 603, 1463, + 0, 0, 0, 0, 4688, 0, 1594, 0, 0, 1502, + 1503, 5577, 0, 0, 0, 2060, 2061, 879, 879, 0, + 0, 0, 0, 0, 0, 0, 1108, 0, 0, 0, + 2062, 1465, 0, 870, 870, 0, 0, 0, 0, 1595, + 0, 0, 0, 0, 0, 4711, 0, 0, 1724, 879, + 0, 0, 1724, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 3636, 0, 0, 0, 4727, 3636, 2063, + 0, 3636, 35, 0, 0, 879, 1467, 1724, 0, 0, + 0, 879, 0, 2064, 0, 1468, 2065, 0, 879, 0, + 0, 0, 0, 1469, 0, 879, 0, 0, 879, 0, + 0, 2300, 0, 0, 879, 0, 0, 1505, 0, 0, + 0, 0, 0, 1471, 0, 0, 0, 0, 0, 0, + 0, 0, 1472, 0, 879, 0, 1473, 0, 0, 0, + 879, 0, 0, 0, 0, 879, 0, 4754, 1724, 0, + 0, 0, 0, 0, 0, 3399, 0, 0, 879, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 879, 0, 0, 0, 0, 1724, 0, 0, 0, + 0, 0, 879, 2066, 0, 0, 0, 0, 0, 0, + 1474, 0, 0, 0, 3400, 0, 2048, 0, 0, 2049, + 606, 606, 606, 2050, 2051, 2052, 606, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 2053, 0, 0, 993, 0, 0, 0, 0, + 2055, 0, 0, 0, 0, 0, 0, 2056, 606, 1108, + 0, 0, 181, 0, 0, 0, 0, 0, 1724, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 2057, 0, 0, 0, 0, 0, 0, 4844, + 0, 0, 0, 0, 0, 0, 0, 1059, 673, 0, + 181, 0, 606, 2067, 0, 0, 2068, 2069, 2070, 2071, + 0, 2072, 2073, 2074, 2075, 2076, 2077, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1977, 0, + 0, 1108, 1457, 0, 1108, 0, 0, 0, 0, 879, + 0, 2461, 0, 0, 0, 0, 0, 0, 0, 606, + 0, 0, 0, 0, 3636, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 2038, 0, 1458, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1197, 0, 2058, 0, 0, 0, 0, 2059, 0, + 0, 0, 0, 0, 0, 879, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1217, 0, 0, + 2060, 2061, 0, 0, 0, 1328, 0, 0, 1337, 1059, + 1343, 0, 0, 0, 2048, 2062, 1459, 2049, 0, 0, + 0, 2050, 2051, 2052, 0, 0, 0, 879, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 2053, 0, 0, 1108, 0, 879, 0, 0, 2055, 0, + 0, 1460, 0, 879, 2063, 2056, 0, 606, 0, 0, + 1108, 0, 0, 606, 0, 0, 606, 0, 2064, 606, + 0, 2065, 0, 0, 2048, 1108, 0, 2049, 0, 0, + 2057, 2050, 2051, 2052, 0, 0, 606, 1461, 3636, 0, + 0, 606, 0, 0, 0, 0, 0, 0, 181, 0, + 2053, 0, 0, 2547, 2925, 0, 0, 0, 2055, 0, + 0, 2564, 0, 0, 0, 2056, 0, 606, 606, 606, + 0, 0, 606, 2461, 0, 0, 0, 1463, 0, 0, + 606, 606, 606, 606, 0, 0, 0, 0, 1724, 0, + 2057, 0, 0, 606, 1724, 0, 606, 0, 606, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 2066, 1465, + 606, 606, 0, 0, 606, 0, 0, 0, 0, 0, + 0, 0, 181, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 606, 0, 606, 0, 606, 2926, + 0, 2058, 0, 0, 0, 0, 2059, 0, 0, 2645, + 35, 0, 2299, 0, 1467, 0, 0, 1977, 0, 606, + 0, 0, 0, 1468, 0, 0, 0, 0, 2060, 2061, + 606, 1469, 0, 0, 0, 0, 2461, 0, 879, 2300, + 0, 0, 0, 2062, 0, 0, 0, 0, 0, 0, + 0, 1471, 0, 0, 606, 0, 3869, 0, 0, 0, + 1472, 2058, 0, 0, 1473, 0, 2059, 0, 2067, 606, + 0, 2068, 2069, 2070, 2071, 0, 2072, 2073, 2074, 2075, + 2076, 2077, 2063, 606, 0, 0, 2827, 0, 2060, 2061, + 0, 0, 0, 0, 0, 0, 2064, 0, 0, 2065, + 0, 0, 1108, 2062, 0, 1108, 0, 1108, 0, 1977, + 0, 0, 1108, 0, 1977, 1977, 0, 0, 1474, 0, + 0, 0, 0, 0, 0, 0, 0, 879, 879, 0, + 0, 0, 0, 606, 0, 0, 0, 0, 0, 0, + 0, 0, 2063, 0, 0, 1487, 0, 0, 0, 0, + 0, 1488, 0, 0, 879, 0, 2064, 879, 0, 2065, + 1059, 1108, 0, 0, 1591, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1059, 0, + 1108, 0, 0, 0, 0, 0, 2066, 0, 0, 0, + 0, 0, 0, 1490, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 181, 1108, 0, 0, 0, 0, + 0, 0, 1976, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 5248, 181, 0, 0, 0, 0, 0, 1059, 0, 0, + 0, 1724, 1724, 1724, 0, 1592, 2066, 1491, 0, 0, + 0, 0, 0, 0, 1492, 0, 0, 1493, 0, 0, + 0, 0, 0, 0, 0, 879, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1108, 0, 1108, 0, 0, + 0, 0, 0, 1494, 0, 879, 2067, 0, 0, 2068, + 2069, 2070, 2071, 0, 2072, 2073, 2074, 2075, 2076, 2077, + 0, 0, 2485, 0, 879, 0, 2927, 0, 0, 5519, + 0, 0, 0, 2968, 0, 2043, 0, 1495, 0, 0, + 0, 0, 0, 0, 2046, 0, 0, 0, 0, 0, + 0, 2984, 0, 0, 0, 0, 0, 2988, 2090, 0, + 0, 2991, 0, 0, 0, 0, 2067, 0, 0, 2068, + 2069, 2070, 2071, 0, 2072, 2073, 2074, 2075, 2076, 2077, + 1487, 1059, 0, 0, 2111, 2112, 1488, 3015, 1108, 1059, + 1059, 0, 0, 0, 0, 0, 0, 0, 0, 1489, + 1593, 0, 0, 1059, 1497, 0, 0, 0, 0, 2048, + 879, 0, 2049, 0, 1498, 606, 2050, 2051, 2052, 0, + 0, 606, 0, 1499, 0, 0, 0, 0, 1490, 1108, + 181, 0, 3069, 0, 0, 1500, 0, 0, 0, 0, + 0, 0, 0, 2055, 0, 5394, 0, 0, 0, 0, + 2056, 0, 1017, 0, 0, 0, 0, 1724, 1108, 0, + 0, 0, 0, 0, 879, 0, 879, 0, 0, 0, + 0, 0, 0, 3209, 0, 2057, 1502, 1503, 0, 879, + 0, 879, 1491, 0, 3119, 0, 0, 0, 0, 1492, + 0, 0, 1493, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1724, 0, 0, 3210, 0, 0, 0, + 3148, 0, 0, 0, 0, 0, 3157, 0, 1494, 0, + 0, 0, 0, 3163, 0, 0, 0, 1108, 0, 0, + 1017, 0, 0, 3177, 0, 0, 0, 0, 0, 3182, + 0, 0, 0, 0, 0, 0, 0, 879, 1108, 0, + 0, 0, 1495, 0, 0, 0, 0, 0, 0, 3195, + 0, 0, 1108, 0, 0, 3198, 0, 0, 0, 2048, + 3202, 0, 2049, 0, 1505, 0, 2050, 2051, 2052, 0, + 0, 0, 0, 3219, 0, 0, 2058, 0, 0, 0, + 0, 2059, 0, 0, 0, 2053, 3244, 0, 0, 0, + 0, 0, 879, 2055, 0, 0, 0, 1017, 0, 2417, + 2056, 0, 0, -2695, -2695, 1496, 2424, 0, 0, 1497, + 879, 0, 0, 0, 0, 0, 0, 0, 2062, 1498, + 0, 0, 0, 0, 0, 2057, 0, 0, 1499, 0, + 0, 0, 879, 0, 0, 879, 0, 0, 0, 0, + 1500, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 606, 0, -2695, 1108, 0, + 0, 0, 0, 606, 606, 0, 606, 0, 0, 0, + 0, 2064, 0, 0, 606, 0, 606, 0, 1501, 606, + 0, 1502, 1503, 1108, 606, 606, 606, 606, 0, 0, + 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, + 606, 0, 0, 0, 606, 606, 0, 0, 0, 1108, + 0, 1504, 0, 0, 606, 0, 0, 0, 606, 0, + 1724, 0, 606, 0, 0, 0, 0, 0, 0, 0, + 606, 0, 0, 606, 0, 606, 2058, 1487, 0, 0, + 0, 2059, 0, 1488, 0, 1108, 0, 606, 0, 0, + 606, 606, 0, 0, 0, 606, 606, 0, 0, 0, + 0, 2066, 606, 2060, 2061, 0, 0, 0, 0, 0, + 0, 0, 606, 0, 0, 606, 0, 0, 2062, 1505, + 0, 0, 0, 0, 0, 1490, 0, 606, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 606, 0, 0, 0, 2063, 2558, 0, + 0, 0, 2563, 0, 0, 0, 0, 0, 0, 606, + 0, 2064, 0, 0, 2065, 1108, 0, 0, 0, 1491, + 0, 0, 3473, 0, 0, 0, 1492, 606, 0, 1493, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 3487, 2067, 0, 0, 2068, 2069, 2070, 2071, 3473, 2072, + 2073, 2074, 2075, 2076, 2077, 1494, 0, 0, 879, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1495, - 0, 0, 831, 0, 1452, 0, 0, 1453, 1454, 5060, - 1419, 0, 826, 0, 34, 0, 0, 0, 1420, 1442, - 0, 0, 0, 0, 0, 1421, 1443, 0, 0, 1444, - 843, 843, 0, 1422, 0, 1455, 0, 0, 0, 0, - 0, 1423, 0, 0, 0, 0, 0, 0, 964, 0, - 0, 0, 0, 1424, 1445, 0, 973, 0, 0, 0, - 693, 1425, 0, 986, 987, 2540, 0, 993, 693, 996, - 997, 2544, 0, 0, 999, 0, 0, 0, 0, 0, - 0, 0, 0, 1496, 0, 1016, 1446, 0, 0, 0, - 0, 0, 3777, 0, 0, 0, 0, 0, 0, 1456, - 1026, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 3320, 0, 0, 0, 0, 1426, 0, -128, 0, - 0, 0, 0, 1090, 0, 1092, 0, 0, 0, 0, - 0, 1497, 0, 0, 1498, 1108, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 1499, 2, 1448, 3, 4, - 0, 0, 0, 0, 0, 0, 0, 1449, 0, 0, - 0, 0, 0, 0, 5, 0, 1450, 558, 0, 0, - 0, 0, 0, 3851, 0, 0, 1500, 1451, 0, 0, - 0, 0, 0, 0, 6, 0, 7, 8, 0, 0, - 0, 0, 0, 9, 0, 10, 0, 0, 1162, 2707, - 0, 0, 0, 0, 0, 0, 11, 0, 12, 0, - 0, 0, 0, 0, 1501, 0, 0, 1453, 1454, 1502, - 0, 0, 0, 0, 0, 13, 0, 0, 14, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1503, - 0, 0, 15, 0, 16, 1504, 0, 0, 17, 0, - 693, 0, 779, 0, 18, 0, 0, 0, 0, 1505, - 0, 0, 19, 0, 20, 0, 0, 0, 3452, 0, - 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 22, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 23, 0, 0, 0, 0, 0, 0, 1456, - 0, 0, 0, 1401, 0, 3249, 0, 0, 0, 0, - 0, 0, 3254, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 24, 25, 0, 3273, 0, 0, 26, 0, 0, - 0, 0, 0, 0, 3279, 0, 0, 1438, 3280, 27, - 0, 3282, 0, 1439, 0, 0, 0, 3286, 0, 3287, - 0, 28, 3289, 0, 1875, 0, 1529, 0, 0, 1876, - 0, 0, 1877, 0, 1561, 0, 1878, 1879, 1880, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1574, 0, 0, 1881, 1440, 0, 1882, 0, 0, 0, - 0, 1883, 1585, 29, 0, 1586, 0, 0, 1884, 0, - 0, 0, 0, 0, 0, 1589, 30, 0, 0, 0, - 1593, 3326, 31, 32, 0, 33, 0, 0, 1596, 0, - 34, 0, 1885, 0, 1606, 35, 0, 1610, 36, 0, - 0, 0, 0, 37, 0, 0, 1530, 0, 1442, 38, - 39, 0, 0, 0, 0, 1443, 0, 40, 1444, 0, - 0, 41, 0, 0, 0, 0, 0, 2898, 2899, 0, - 0, 42, 0, 0, 0, 0, 2910, 1663, 2912, 0, - 0, 0, 2916, 1445, 43, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 44, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 45, 0, 1446, 0, 0, 0, 46, - 0, 0, 3652, 0, 47, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 693, 0, 48, 0, 0, - 0, 1886, 0, 0, 0, 1876, 1887, 0, 1877, 0, - 0, 0, 1878, 1879, 1880, 0, 0, 0, 0, 693, - 49, 0, 0, 0, 0, 693, 0, 1888, 1889, 1881, - 0, 0, 0, 0, 1447, 50, 1448, 1883, -128, 0, - 0, 0, 1890, 0, 1884, 0, 1449, 0, 558, 0, - 558, 0, 558, 0, 558, 1450, 558, 558, 558, 0, - 0, 3044, 0, 558, 3047, 0, 1451, 0, 1885, 0, - 0, 0, 0, 0, 1805, 1891, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1892, - 0, 0, 1893, 0, 0, 0, 0, 1134, 1135, 0, - 0, 0, 0, 3062, 0, 0, 1453, 1454, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 3768, 3769, - 3770, 0, 3121, 0, 3063, 0, 0, 0, 0, 0, - 3128, 3129, 0, 0, 0, 3779, 0, 3131, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 3548, 0, 0, - 0, 3147, 1876, 0, 0, 1877, 0, 0, 3795, 1878, - 1879, 1880, 0, 0, 0, 1894, 0, 1886, 3805, 3807, - 0, 1876, 1887, 3812, 1877, 0, 1881, 0, 1878, 1879, - 1880, 0, 0, 0, 1883, 0, 3826, 0, 1456, 0, - 0, 1884, 3193, 1888, 1889, 1881, 0, 0, 0, 0, - 0, 0, 0, 1883, 0, 0, 0, 0, 1890, 0, - 1884, 0, 0, 0, 0, 1885, 0, 0, 0, 0, - 3216, 0, 0, 0, 0, 0, 0, 3607, 0, 3609, - 693, 0, 0, 0, 1885, 0, 0, 0, 1438, 0, - 0, 1891, 0, 0, 1439, 0, 0, 779, 0, 0, - 0, 0, 0, 0, 0, 1892, 0, 0, 1893, 0, - 0, 1895, 0, 0, 1896, 1897, 1898, 0, 1899, 1900, - 1901, 1902, 1903, 1904, 1905, 0, 3275, 0, 3277, 1285, - 0, 0, 0, 0, 0, 1440, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1876, 0, 0, 1877, 0, 0, 0, - 1878, 1879, 1880, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 2180, 1886, 0, 0, 1881, 0, 1887, - 0, 0, 0, 0, 0, 1883, 0, 0, 0, 1442, - 0, 1894, 1884, 1886, 0, 0, 1443, 0, 1887, 1444, - 1888, 1889, 0, 0, 0, 0, 0, 0, 3696, 0, - 0, 0, 0, 0, 3703, 1890, 1885, 0, 0, 1888, - 1889, 0, 0, 0, 1445, 0, 0, 0, 3336, 0, - 0, 0, 0, 0, 1890, 0, 0, 0, 0, 0, - 0, 2270, 0, 0, 0, 0, 0, 0, 1891, 0, - 0, 0, 0, 0, 0, 0, 1446, 0, 0, 3987, - 3988, 3989, 1892, 0, 0, 1893, 0, 1891, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1892, 0, 0, 1893, 0, 0, 1895, 0, 0, - 1896, 1897, 1898, 0, 1899, 1900, 1901, 1902, 1903, 1904, - 1905, 0, 0, 0, 0, 2692, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1447, 0, 1448, 0, 0, - 0, 0, 0, 0, 693, 1886, 0, 1449, 693, 0, - 1887, 0, 0, 0, 0, 0, 1450, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 1451, 1894, 0, - 0, 1888, 1889, 4509, 4510, 0, 0, 0, 4513, 4514, - 0, 0, 0, 0, 0, 0, 1890, 1894, 0, 1876, - 0, 0, 1877, 0, 0, 0, 1878, 1879, 1880, 2408, - 0, 0, 0, 0, 1558, 0, 0, 1453, 1454, 1438, - 0, 0, 3857, 1881, 3859, 1439, 3861, 0, 0, 1891, - 0, 1883, 0, 3865, 0, 0, 0, 0, 1884, 0, - 0, 0, 0, 1892, 0, 1559, 1893, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1885, 0, 0, 0, 1440, 0, 0, 0, - 0, 0, 3886, 0, 1895, 0, 0, 1896, 1897, 1898, - 0, 1899, 1900, 1901, 1902, 1903, 1904, 1905, 0, 0, - 0, 0, 3739, 1895, 0, 0, 1896, 1897, 1898, 0, - 1899, 1900, 1901, 1902, 1903, 1904, 1905, 0, 0, 1456, - 1876, 3900, 0, 1877, 0, 0, 2258, 1878, 1879, 1880, - 1442, 0, 0, 0, 0, 0, 0, 1443, 0, 1894, - 1444, 2530, 0, 2531, 1881, 0, 0, 3557, 0, 3558, - 3559, 3560, 1883, 0, 0, 0, 0, 0, 0, 1884, - 2542, 0, 2543, 0, 0, 1445, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 558, 0, 558, 0, - 558, 1886, 558, 1885, 558, 0, 1887, 0, 558, 0, - 0, 4235, 0, 0, 0, 0, 0, 1446, 0, 0, - 0, 0, 4248, 0, 0, 0, 0, 1888, 1889, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1890, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 4277, 0, 1895, 0, 0, 1896, 1897, - 1898, 0, 1899, 1900, 1901, 1902, 1903, 1904, 1905, 0, - 0, 0, 0, 3954, 0, 1891, 1447, 0, 1448, 0, - 0, 0, 0, 0, 0, 0, 0, 2473, 1449, 1892, - 0, 0, 1893, 0, 0, 0, 0, 1450, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1451, 0, - 0, 0, 1886, 0, 0, 0, 0, 1887, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 2547, 0, 0, 0, 0, 1888, 1889, - 0, 0, 0, 0, 0, 2259, 0, 0, 1453, 1454, - 0, 0, 0, 1890, 0, 0, 0, 1876, 0, 0, - 1877, 0, 0, 0, 1878, 1879, 1880, 693, 0, 0, - 0, 0, 0, 0, 0, 1894, 2260, 0, 0, 0, - 0, 1881, 0, 0, 3712, 0, 1891, 0, 0, 1883, - 0, 0, 0, 0, 0, 0, 1884, 0, 0, 0, - 1892, 0, 0, 1893, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1885, 0, 0, 0, 0, 0, 0, 0, 0, 1876, - 0, 0, 1877, 0, 0, 0, 1878, 1879, 1880, 0, - 1456, 0, 0, 0, 0, 0, 0, 0, 0, 4400, - 4401, 4402, 4403, 1881, 0, 0, 0, 0, 0, 0, - 0, 1883, 0, 0, 0, 0, 0, 0, 1884, 0, - 0, 1895, 0, 0, 1896, 1897, 1898, 0, 1899, 1900, - 1901, 1902, 1903, 1904, 1905, 0, 1894, 0, 0, 4069, - 0, 0, 1885, 0, 0, 0, 0, 0, 0, 0, - 0, 1876, 0, 0, 1877, 0, 0, 0, 1878, 1879, - 1880, 0, 0, 0, 0, 0, 0, 0, 0, 2835, - 2836, 0, 0, 0, 0, 1881, 0, 0, 0, 1886, - 0, 0, 0, 1883, 1887, 0, 0, 0, 2851, 2852, - 1884, 0, 0, 2855, 2856, 0, 0, 0, 2859, 0, - 0, 0, 3866, 0, 0, 1888, 1889, 0, 0, 0, - 0, 0, 2870, 0, 1885, 0, 0, 0, 0, 2879, - 1890, 0, 0, 2882, 2883, 0, 0, 2886, 2887, 0, - 0, 0, 1895, 0, 2892, 1896, 1897, 1898, 0, 1899, - 1900, 1901, 1902, 1903, 1904, 1905, 0, 2909, 0, 2911, - 4357, 1886, 0, 1891, 0, 0, 1887, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 1892, 2935, 0, - 1893, 0, 0, 2937, 693, 693, 0, 1888, 1889, 0, - 0, 0, 0, 0, 0, 0, 2942, 693, 0, 0, - 4332, 0, 1890, 0, 4334, 2949, 0, 2951, 0, 0, - 2954, 2957, 2959, 0, 0, 0, 0, 2967, 2970, 0, - 0, 0, 0, 0, 0, 0, 0, 2983, 0, 0, - 0, 0, 2992, 1886, 0, 1891, 0, 2996, 1887, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1892, - 0, 0, 1893, 3012, 0, 0, 0, 0, 0, 1888, - 1889, 3023, 0, 1894, 0, 0, 0, 0, 0, 0, - 0, 0, 3038, 0, 1890, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 3045, 0, 0, 3048, 0, 0, - 0, 0, 3051, 0, 0, 0, 0, 3053, 3054, 0, - 0, 0, 3057, 0, 0, 3061, 0, 1891, 0, 3068, - 3069, 3070, 3071, 0, 3073, 0, 0, 0, 0, 0, - 0, 1892, 0, 0, 1893, 0, 0, 3098, 3099, 0, - 3101, 0, 0, 0, 0, 1894, 0, 0, 0, 0, - 3109, 3110, 0, 0, 0, 0, 0, 0, 0, 0, - 1438, 4629, 0, 0, 0, 0, 1439, 0, 0, 1895, - 0, 0, 1896, 1897, 1898, 0, 1899, 1900, 1901, 1902, - 1903, 1904, 1905, 0, 0, 0, 0, 4393, 0, 0, - 0, 0, 0, 0, 0, 4092, 4093, 4094, 4095, 0, - 0, 0, 3154, 0, 0, 0, 0, 1440, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 1894, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 3191, 0, 0, 0, 4474, 0, 0, 0, 0, 0, - 0, 1895, 0, 0, 1896, 1897, 1898, 0, 1899, 1900, - 1901, 1902, 1903, 1904, 1905, 0, 0, 0, 0, 4644, - 0, 1442, 0, 0, 0, 0, 0, 0, 1443, 0, - 0, 1444, 0, 0, 0, 4497, 4498, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 1445, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1895, 0, 0, 1896, 1897, 1898, 0, - 1899, 1900, 1901, 1902, 1903, 1904, 1905, 0, 1446, 0, - 0, 4655, 0, 1876, 0, 0, 1877, 693, 0, 693, - 1878, 1879, 1880, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 1881, 0, 0, - 0, 4538, 4539, 0, 0, 1883, 0, 0, 0, 0, - 1876, 0, 1884, 1877, 0, 4234, 0, 1878, 1879, 1880, - 0, 4237, 0, 0, 0, 0, 0, 1447, 0, 1448, - 4788, 0, 3321, 0, 1881, 0, 1885, 0, 0, 1449, - 0, 0, 1883, 0, 0, 4800, 0, 0, 1450, 1884, - 1285, 0, 0, 0, 0, 0, 0, 0, 0, 1451, - 0, 3337, 1876, 0, 0, 1877, 0, 0, 0, 1878, - 1879, 1880, 0, 1885, 0, 0, 4836, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 1881, 0, 0, 0, - 0, 0, 0, 0, 1883, 4853, 2182, 0, 0, 1453, - 1454, 1884, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 4635, 0, 4636, 4637, - 0, 0, 0, 0, 0, 1885, 0, 2183, 0, 0, - 1876, 0, 4641, 1877, 0, 0, 0, 1878, 1879, 1880, - 0, 0, 0, 0, 0, 1886, 0, 693, 0, 0, - 1887, 0, 0, 0, 1881, 0, 5310, 0, 0, 0, - 0, 0, 1883, 0, 0, 0, 0, 0, 0, 1884, - 0, 1888, 1889, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1886, 0, 0, 0, 1890, 1887, 0, 0, - 0, 1456, 0, 1885, 0, 0, 0, 0, 0, 0, - 0, 4923, 0, 0, 0, 5310, 0, 0, 1888, 1889, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1891, - 5310, 0, 0, 1890, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1892, 1886, 0, 1893, 0, 0, 1887, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 1891, 0, 0, 0, - 1888, 1889, 0, 0, 0, 0, 0, 0, 0, 0, - 1892, 0, 0, 1893, 0, 1890, 0, 0, 0, 0, - 0, 1876, 0, 0, 1877, 0, 0, 0, 1878, 1879, - 1880, 0, 0, 0, 0, 5007, 0, 0, 0, 0, - 0, 0, 1886, 0, 0, 1881, 0, 1887, 1891, 0, - 0, 0, 0, 1883, 0, 0, 0, 0, 0, 1894, - 1884, 0, 1892, 0, 0, 1893, 0, 3551, 1888, 1889, - 0, 3553, 0, 0, 0, 0, 0, 3555, 0, 0, - 0, 0, 0, 1890, 1885, 0, 0, 0, 0, 0, - 0, 0, 0, 3566, 3568, 0, 1894, 0, 3568, 0, - 0, 0, 0, 3579, 3580, 3581, 0, 3583, 0, 0, - 0, 0, 0, 0, 0, 0, 1891, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 3604, 0, - 1892, 0, 0, 1893, 0, 0, 0, 0, 3610, 3611, - 3612, 3613, 0, 0, 0, 0, 0, 0, 1894, 0, - 0, 0, 0, 0, 0, 1895, 0, 0, 1896, 1897, - 1898, 0, 1899, 1900, 1901, 1902, 1903, 1904, 1905, 0, - 4869, 0, 0, 4664, 0, 3630, 0, 0, 3635, 3636, - 3637, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1895, 1886, 0, 1896, 1897, 1898, 1887, 1899, - 1900, 1901, 1902, 1903, 1904, 1905, 4530, 0, 0, 0, - 4667, 0, 0, 0, 0, 0, 1894, 0, 0, 1888, - 1889, 4534, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1890, 0, 0, 0, 0, 0, - 0, 0, 0, 4917, 1895, 0, 0, 1896, 1897, 1898, - 0, 1899, 1900, 1901, 1902, 1903, 1904, 1905, 0, 0, - 0, 0, 4716, 0, 0, 0, 0, 1891, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 3706, 1892, 0, 0, 1893, 0, 0, 0, 3710, 0, - 0, 0, 0, 4960, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 3719, 4599, 0, 0, - 0, 0, 1895, 0, 0, 1896, 1897, 1898, 0, 1899, - 1900, 1901, 1902, 1903, 1904, 1905, 0, 0, 0, 0, - 4750, 0, 0, 3765, 1876, 0, 0, 1877, 0, 0, - 0, 1878, 1879, 1880, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1881, 0, - 0, 0, 1876, 0, 0, 1877, 1883, 1894, 0, 1878, - 1879, 1880, 0, 1884, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 3802, 1881, 0, 0, 0, - 3808, 0, 0, 0, 1883, 0, 0, 1885, 0, 0, - 0, 1884, 0, 0, 0, 0, 1438, 0, 0, 0, - 0, 0, 1439, 0, 0, 0, 0, 0, 0, 0, - 3846, 0, 0, 0, 0, 1885, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1440, 0, 0, 0, 3862, 0, 3863, - 0, 0, 0, 1895, 0, 0, 1896, 1897, 1898, 0, - 1899, 1900, 1901, 1902, 1903, 1904, 1905, 4721, 4722, 4722, - 0, 4790, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 1886, 1442, 0, 0, - 0, 1887, 828, 0, 1443, 0, 0, 1444, 0, 0, - 0, 828, 851, 0, 0, 0, 0, 0, 0, 0, - 851, 0, 1888, 1889, 1886, 0, 0, 0, 0, 1887, - 0, 0, 1445, 851, 0, 0, 0, 1890, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1888, 1889, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1446, 1890, 0, 0, 0, 0, - 1891, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1892, 0, 0, 1893, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1891, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1892, 0, 0, 1893, 0, 0, 0, 0, - 0, 0, 4852, 1447, 0, 1448, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1449, 0, 0, 0, 0, - 0, 0, 0, 0, 1450, 0, 0, 0, 0, 1876, - 0, 0, 1877, 0, 0, 1451, 1878, 1879, 1880, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1894, 0, 0, 1881, 0, 0, 0, 0, 0, 0, - 0, 1883, 0, 0, 0, 0, 0, 0, 1884, 0, - 0, 0, 2943, 0, 0, 1453, 1454, 0, 1894, 0, - 1876, 0, 0, 1877, 5263, 0, 0, 1878, 1879, 1880, - 0, 0, 1885, 4086, 0, 4087, 0, 0, 0, 0, - 0, 0, 4089, 1455, 1881, 0, 0, 0, 0, 0, - 0, 0, 1883, 0, 0, 0, 0, 0, 4099, 1884, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 4107, 0, 0, 0, 0, 0, - 0, 0, 0, 1885, 0, 4956, 1895, 4958, 0, 1896, - 1897, 1898, 4127, 1899, 1900, 1901, 1902, 1903, 1904, 1905, - 0, 0, 0, 1438, 5096, 0, 0, 1456, 0, 1439, - 4131, 0, 0, 0, 1895, 0, 0, 1896, 1897, 1898, - 4140, 1899, 1900, 1901, 1902, 1903, 1904, 1905, 0, 0, - 0, 0, 5219, 0, 0, 0, 0, 0, 0, 4169, - 0, 1886, 0, 0, 0, 0, 1887, 0, 0, 0, - 1440, 0, 4177, 4178, 4179, 0, 0, 0, 0, 4183, - 4184, 4185, 4186, 0, 0, 4188, 4189, 1888, 1889, 0, - 0, 4196, 4197, 0, 4199, 4200, 4201, 4202, 4203, 4204, - 0, 4206, 1890, 0, 0, 0, 0, 0, 0, 0, - 4214, 0, 1886, 4217, 4218, 0, 0, 1887, 0, 0, - 0, 0, 0, 0, 1442, 828, 0, 0, 0, 0, - 0, 1443, 3568, 0, 1444, 1891, 0, 851, 1888, 1889, - 0, 0, 0, 851, 0, 0, 0, 0, 0, 1892, - 0, 0, 1893, 1890, 4238, 0, 851, 0, 0, 1445, - 0, 0, 4722, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 851, 0, 0, 0, 0, 828, 0, 0, - 0, 0, 0, 1069, 0, 0, 1891, 828, 851, 0, - 0, 1446, 0, 0, 0, 851, 0, 0, 0, 0, - 1892, 0, 0, 1893, 0, 0, 1876, 1069, 851, 1877, - 0, 0, 0, 1878, 1879, 1880, 0, 0, 851, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1881, 0, 0, 0, 0, 1894, 0, 0, 1883, 0, - 0, 0, 0, 0, 0, 1884, 0, 5131, 0, 0, - 1447, 1876, 1448, 3568, 1877, 0, 0, 0, 1878, 1879, - 1880, 0, 1449, 0, 0, 0, 0, 0, 0, 1885, - 0, 1450, 0, 0, 0, 1881, 0, 0, 0, 0, - 0, 0, 1451, 1883, 0, 4342, 1894, 0, 0, 0, - 1884, 0, 0, 0, 0, 0, 0, 828, 828, 0, - 0, 0, 0, 851, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1885, 0, 0, 0, 0, 3106, - 0, 0, 1453, 1454, 0, 0, 0, 0, 0, 828, - 0, 1895, 0, 0, 1896, 1897, 1898, 0, 1899, 1900, - 1901, 1902, 1903, 1904, 1905, 0, 5200, 0, 0, 5282, - 3107, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1886, 0, - 0, 0, 1895, 1887, 0, 1896, 1897, 1898, 0, 1899, - 1900, 1901, 1902, 1903, 1904, 1905, 0, 0, 0, 0, - 5302, 0, 0, 0, 1888, 1889, 0, 0, 0, 0, - 0, 0, 0, 0, 1456, 0, 0, 0, 0, 1890, - 0, 0, 0, 1886, 0, 0, 0, 0, 1887, 1876, - 0, 0, 1877, 0, 0, 0, 1878, 1879, 1880, 5268, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1888, - 1889, 0, 1891, 1881, 0, 0, 0, 2791, 0, 0, - 0, 1883, 0, 0, 1890, 0, 1892, 0, 1884, 1893, - 0, 4722, 4722, 0, 828, 0, 0, 0, 0, 0, - 0, 1069, 0, 0, 0, 828, 0, 0, 0, 0, - 0, 0, 1885, 0, 0, 0, 0, 1891, 0, 0, - 0, 0, 4478, 0, 1069, 0, 4479, 4480, 4481, 4482, - 0, 1892, 4484, 0, 1893, 0, 0, 0, 0, 1069, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 2792, 0, 4502, 4503, 4504, 0, 4505, 0, 4507, - 4508, 0, 1894, 0, 0, 0, 0, 0, 0, 4722, - 0, 4517, 4518, 0, 828, 0, 1876, 0, 0, 1877, - 0, 0, 0, 1878, 1879, 1880, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 4523, 0, - 1881, 0, 0, 0, 0, 0, 0, 1894, 1883, 0, - 0, 1886, 0, 1069, 0, 1884, 1887, 0, 0, 0, - 0, 4533, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 1888, 1889, 1885, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 851, 0, 1890, 0, 0, 0, 0, 0, 1895, 0, - 0, 1896, 1897, 1898, 851, 1899, 1900, 1901, 1902, 1903, - 1904, 1905, 0, 828, 0, 0, 5335, 0, 0, 0, - 0, 851, 0, 0, 0, 1891, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 4585, 0, 0, 0, 1892, - 0, 0, 1893, 1895, 0, 0, 1896, 1897, 1898, 851, - 1899, 1900, 1901, 1902, 1903, 1904, 1905, 0, 1069, 2778, - 851, 0, 0, 0, 4614, 3390, 0, 0, 0, 0, - 3391, 0, 0, 0, 0, 851, 0, 1438, 851, 0, - 0, 0, 0, 1439, 0, 0, 0, 0, 1886, 4638, - 828, 0, 0, 1887, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1888, 1889, 0, 0, 0, 0, - 828, 0, 0, 0, 1440, 1894, 0, 0, 0, 1890, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 828, 828, - 828, 0, 0, 828, 0, 0, 0, 0, 0, 0, - 0, 0, 1891, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 828, 0, 0, 1892, 0, 1442, 1893, - 0, 2793, 0, 0, 0, 1443, 0, 0, 1444, 0, - 0, 0, 0, 0, 0, 0, 0, 558, 0, 0, - 0, 851, 0, 0, 0, 0, 0, 0, 0, 851, - 851, 0, 0, 1445, 0, 0, 0, 0, 828, 2033, - 0, 1895, 0, 0, 1896, 1897, 1898, 0, 1899, 1900, - 1901, 1902, 1903, 1904, 1905, 1876, 0, 0, 1877, 0, - 0, 0, 1878, 1879, 1880, 1446, 828, 0, 0, 0, - 828, 828, 0, 0, 0, 0, 0, 4739, 0, 1881, - 0, 0, 1894, 1876, 0, 828, 1877, 1883, 0, 1069, - 1878, 1879, 1880, 0, 1884, 4749, 2033, 0, 0, 0, - 4754, 4755, 0, 0, 0, 0, 0, 1881, 0, 0, - 0, 0, 0, 0, 0, 1883, 0, 0, 1885, 0, - 0, 0, 1884, 0, 1447, 0, 1448, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 1449, 0, 0, 0, - 0, 0, 0, 0, 0, 1450, 1885, 0, 0, 0, - 0, 4814, 0, 0, 0, 1069, 1451, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 4831, 0, 4833, 0, 0, 0, 0, 1895, 0, - 0, 1896, 1897, 1898, 0, 1899, 1900, 1901, 1902, 1903, - 1904, 1905, 0, 3576, 1069, 0, 1453, 1454, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 3568, - 0, 0, 0, 0, 0, 0, 4868, 1069, 0, 0, - 0, 0, 0, 0, 3577, 0, 0, 1886, 0, 0, - 0, 5247, 1887, 0, 0, 1876, 0, 0, 1877, 0, - 0, 0, 1878, 1879, 1880, 0, 0, 0, 0, 0, - 0, 0, 0, 1888, 1889, 1886, 0, 0, 0, 1881, - 1887, 0, 3346, 0, 0, 0, 0, 1883, 1890, 0, - 0, 0, 0, 0, 1884, 0, 0, 851, 0, 0, - 0, 1888, 1889, 0, 4910, 0, 0, 0, 1456, 0, - 0, 0, 0, 0, 0, 0, 1890, 1069, 1885, 0, - 0, 1891, 0, 0, 0, 4926, 0, 0, 0, 0, - 0, 0, 1069, 0, 0, 1892, 4934, 0, 1893, 0, - 0, 1069, 0, 0, 0, 0, 0, 0, 2033, 1891, - 0, 0, 0, 1069, 0, 0, 0, 0, 0, 0, - 0, 3946, 0, 1892, 0, 0, 1893, 0, 0, 0, - 0, 0, 851, 0, 0, 0, 0, 0, 0, 0, - 851, 0, 0, 0, 0, 0, 0, 5248, 0, 0, - 0, 0, 851, 0, 0, 0, 0, 0, 5000, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1069, 0, - 0, 0, 0, 0, 0, 828, 0, 0, 828, 0, - 0, 1894, 1069, 0, 0, 0, 0, 1886, 828, 0, - 0, 0, 1887, 0, 1069, 0, 0, 3947, 0, 0, - 0, 0, 0, 0, 0, 0, 1069, 0, 0, 1894, - 0, 0, 0, 1888, 1889, 0, 0, 0, 0, 0, - 0, 3568, 0, 828, 828, 0, 851, 851, 1890, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 851, 0, - 0, 0, 0, 0, 0, 0, 1069, 1069, 0, 851, - 851, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1891, 0, 0, 0, 851, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1892, 0, 1895, 1893, 0, - 1896, 1897, 1898, 5084, 1899, 1900, 1901, 1902, 1903, 1904, - 1905, 0, 0, 0, 0, 0, 0, 828, 5097, 0, - 0, 0, 0, 0, 0, 1895, 0, 0, 1896, 1897, - 1898, 0, 1899, 1900, 1901, 1902, 1903, 1904, 1905, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 828, 0, 828, 0, 0, 0, 0, 828, 828, - 0, 0, 0, 0, 0, 828, 828, 828, 0, 5124, - 0, 828, 0, 828, 828, 828, 828, 828, 828, 0, - 828, 1894, 828, 828, 5135, 0, 828, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1069, 828, 828, 828, 828, 2033, 0, 0, 0, - 828, 0, 0, 0, 828, 0, 0, 828, 0, 0, - 828, 828, 828, 828, 828, 828, 828, 828, 828, 828, - 0, 828, 0, 0, 0, 0, 0, 0, 828, 0, - 828, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 5193, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 1895, 0, 0, - 1896, 1897, 1898, 0, 1899, 1900, 1901, 1902, 1903, 1904, - 1905, 0, 0, 0, 0, 0, 0, 0, 0, 1876, - 0, 0, 1877, 0, 0, 5215, 1878, 1879, 1880, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1881, 0, 0, 0, 0, 0, 0, - 0, 1883, 0, 0, 0, 0, 1876, 0, 1884, 1877, - 0, 0, 0, 1878, 1879, 1880, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1881, 0, 1885, 3395, 0, 0, 0, 0, 1883, 828, - 0, 0, 0, 0, 0, 1884, 0, 0, 0, 0, - 0, 0, 828, 0, 0, 0, 0, 0, 0, 0, - 5275, 828, 828, 0, 0, 0, 0, 0, 0, 1885, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 851, 0, 0, 0, - 0, 0, 0, 1069, 0, 0, 0, 1069, 1069, 0, - 0, 0, 0, 0, 851, 0, 0, 0, 0, 2033, - 851, 0, 0, 0, 851, 0, 0, 0, 0, 0, - 0, 0, 851, 0, 0, 1876, 0, 0, 1877, 0, - 0, 0, 1878, 1879, 1880, 0, 0, 0, 0, 0, - 851, 1886, 0, 828, 0, 0, 1887, 0, 0, 1881, - 0, 0, 3406, 0, 0, 828, 0, 1883, 0, 1069, - 0, 0, 828, 0, 1884, 0, 0, 1888, 1889, 1438, - 0, 1069, 0, 0, 0, 1439, 0, 0, 1886, 0, - 0, 0, 1890, 1887, 851, 0, 0, 0, 1885, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 851, 851, 1888, 1889, 0, 0, 0, 0, - 0, 1069, 0, 0, 0, 1891, 1440, 0, 0, 1890, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1892, - 0, 0, 1893, 2033, 851, 0, 0, 2033, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 3362, - 0, 0, 1891, 0, 0, 0, 0, 0, 0, 0, - 851, 0, 2033, 0, 0, 0, 1892, 0, 851, 1893, - 1442, 0, 0, 0, 0, 851, 0, 1443, 0, 851, - 1444, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 1886, 0, 851, - 0, 0, 1887, 0, 851, 1445, 0, 0, 851, 0, - 0, 2033, 0, 0, 0, 1894, 0, 0, 0, 0, - 0, 851, 0, 1888, 1889, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 851, 0, 0, 1446, 1890, 0, - 1876, 0, 0, 1877, 851, 0, 0, 1878, 1879, 1880, - 0, 0, 1894, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1881, 0, 0, 0, 0, 0, - 0, 1891, 1883, 0, 0, 0, 0, 0, 0, 1884, - 0, 0, 0, 0, 0, 1892, 0, 0, 1893, 828, - 1069, 0, 0, 0, 0, 0, 1447, 0, 1448, 2033, - 0, 0, 0, 1885, 0, 0, 0, 0, 1449, 0, - 0, 1895, 0, 0, 1896, 1897, 1898, 1450, 1899, 1900, - 1901, 1902, 1903, 1904, 1905, 0, 0, 0, 1451, 0, - 0, 0, 0, 828, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1895, 0, - 0, 1896, 1897, 1898, 0, 1899, 1900, 1901, 1902, 1903, - 1904, 1905, 0, 0, 0, 3631, 0, 0, 1453, 1454, - 0, 1894, 1069, 0, 0, 0, 851, 0, 0, 0, - 0, 0, 0, 0, 0, 828, 0, 0, 0, 0, - 0, 0, 0, 0, 3400, 0, 3632, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1886, 0, 0, 0, 0, 1887, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 851, 0, 0, 0, 0, 0, 0, 1888, 1889, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1890, 0, 0, 0, 0, 0, 0, - 1456, 0, 0, 0, 0, 0, 0, 1895, 0, 851, - 1896, 1897, 1898, 0, 1899, 1900, 1901, 1902, 1903, 1904, - 1905, 0, 0, 0, 0, 1069, 1891, 851, 0, 0, - 0, 0, 0, 0, 0, 851, 0, 0, 0, 828, - 1892, 0, 1069, 1893, 1876, 828, 0, 1877, 0, 0, - 0, 1878, 1879, 1880, 0, 1069, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 828, 0, 1881, 0, - 0, 828, 0, 0, 0, 0, 1883, 0, 0, 0, - 0, 0, 0, 1884, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 828, 828, 828, 0, - 0, 828, 0, 0, 0, 0, 0, 1885, 0, 828, - 828, 828, 828, 0, 0, 0, 0, 2033, 0, 0, - 0, 0, 828, 2033, 0, 828, 1894, 828, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 828, - 828, 0, 0, 828, 0, 0, 0, 1438, 0, 0, - 0, 0, 0, 1439, 0, 0, 0, 828, 0, 828, - 1493, 828, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1494, - 0, 0, 828, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 828, 1440, 828, 828, 828, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 851, 0, 0, 828, 0, 0, 1886, 0, 0, 0, - 0, 1887, 1895, 0, 828, 1896, 1897, 1898, 1495, 1899, - 1900, 1901, 1902, 1903, 1904, 1905, 0, 0, 0, 828, - 0, 0, 1888, 1889, 0, 0, 0, 0, 1442, 0, - 0, 0, 0, 828, 0, 1443, 0, 1890, 1444, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1069, 0, 0, 1069, 0, 1069, 0, 0, - 0, 0, 1069, 1445, 0, 0, 0, 0, 0, 0, - 1891, 0, 0, 0, 0, 0, 0, 851, 851, 0, - 0, 0, 0, 828, 1892, 0, 0, 1893, 0, 0, - 0, 0, 1496, 0, 0, 1446, 0, 0, 0, 0, - 0, 0, 0, 0, 851, 0, 0, 851, 0, 0, - 0, 1069, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1069, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1497, 0, 0, 1498, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1069, 1499, 0, 1448, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 1449, 0, 0, 0, - 1894, 0, 0, 0, 0, 1450, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1500, 1451, 0, 2033, 2033, - 2033, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 3896, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 851, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1069, 3039, 1069, 0, 1453, 1454, 1502, 0, - 0, 0, 851, 0, 0, 0, 0, 0, 0, 0, - 0, 844, 853, 0, 0, 0, 0, 851, 1503, 0, - 853, 0, 0, 0, 3040, 0, 0, 0, 0, 0, - 0, 0, 0, 853, 0, 0, 1895, 0, 1505, 1896, - 1897, 1898, 0, 1899, 1900, 1901, 1902, 1903, 1904, 1905, - 1876, 0, 0, 1877, 0, 0, 0, 1878, 1879, 1880, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1881, 1069, 0, 3953, 0, 0, - 0, 0, 1883, 0, 0, 0, 0, 0, 1456, 1884, - 0, 0, 0, 0, 0, 851, 0, 0, 0, 1876, - 0, 0, 1877, 1069, 0, 0, 1878, 1879, 1880, 0, - 0, 0, 0, 1885, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1881, 0, 0, 1069, 0, 0, 0, - 0, 1883, 0, 2033, 1069, 0, 0, 0, 1884, 0, - 851, 0, 851, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 851, 0, 851, 0, 0, - 0, 0, 1885, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 2033, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1069, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 851, 1069, 1886, 0, 0, 0, 0, 1887, 0, 0, - 0, 0, 0, 0, 1069, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1888, 1889, - 0, 0, 0, 852, 0, 0, 0, 0, 0, 0, - 0, 852, 0, 1890, 0, 0, 0, 0, 851, 0, - 0, 1886, 0, 0, 852, 0, 1887, 0, 0, 0, - 0, 0, 0, 0, 851, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 1891, 1888, 1889, 0, - 0, 0, 0, 0, 0, 0, 851, 0, 0, 851, - 1892, 0, 1890, 1893, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 828, 0, 0, - 1069, 0, 0, 0, 0, 828, 828, 0, 828, 0, - 0, 0, 0, 0, 828, 1891, 828, 0, 0, 828, - 0, 0, 0, 1069, 828, 828, 828, 828, 0, 1892, - 828, 828, 828, 828, 828, 828, 828, 828, 828, 828, - 828, 0, 0, 0, 828, 828, 0, 0, 0, 1069, - 0, 0, 0, 0, 828, 0, 0, 0, 828, 0, - 2033, 0, 828, 0, 0, 0, 1894, 853, 0, 0, - 0, 828, 1876, 853, 828, 1877, 828, 0, 0, 1878, - 1879, 1880, 0, 0, 1069, 828, 853, 0, 828, 828, - 0, 0, 0, 828, 828, 0, 1881, 0, 0, 0, - 828, 0, 853, 0, 1883, 0, 0, 0, 0, 0, - 828, 1884, 0, 828, 0, 1894, 0, 844, 853, 0, - 0, 0, 0, 0, 0, 853, 828, 0, 0, 0, - 0, 0, 828, 828, 828, 1885, 0, 0, 853, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 853, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 828, 0, 1895, 0, 0, 1896, 1897, 1898, 0, 1899, - 1900, 1901, 1902, 1903, 1904, 1905, 828, 0, 0, 0, - 0, 0, 1069, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 828, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1895, 0, 0, 1896, 1897, 1898, 0, 1899, 1900, - 1901, 1902, 1903, 1904, 1905, 851, 0, 0, 0, 0, - 0, 0, 0, 853, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1886, 0, 0, 0, 0, 1887, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1888, 1889, 0, 0, 0, 2033, 0, 0, 0, 0, - 2033, 1069, 2033, 0, 0, 1890, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 2033, 1069, 0, 0, 852, 0, - 0, 0, 0, 0, 852, 0, 0, 0, 1891, 0, - 0, 0, 0, 2033, 0, 0, 0, 852, 0, 0, - 0, 0, 1892, 0, 0, 1893, 0, 0, 851, 0, - 0, 851, 0, 852, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 852, - 0, 0, 0, 0, 0, 0, 852, 919, 0, 0, - 0, 0, 920, 0, 0, 0, 0, 0, 0, 852, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 852, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 828, 0, 0, 921, 0, 0, 0, - 0, 0, 0, 0, 0, 844, 0, 0, 1894, 922, - 923, 0, 0, 0, 0, 0, 0, 0, 851, 851, - 924, 0, 1069, 0, 925, 0, 0, 0, 851, 0, - 0, 0, 0, 0, 0, 828, 0, 0, 0, 0, - 0, 0, 926, 0, 0, 0, 0, 851, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 852, 927, 0, 0, 0, 0, - 0, 0, 1069, 828, 828, 0, 928, 0, 0, 0, - 0, 0, 0, 0, 929, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 930, 0, 0, 0, - 0, 931, 0, 0, 1895, 0, 0, 1896, 1897, 1898, - 0, 1899, 1900, 1901, 1902, 1903, 1904, 1905, 0, 851, - 0, 0, 0, 0, 0, 932, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 828, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 933, 0, 0, 828, 0, 0, 0, 0, 0, 0, - 853, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 934, 0, 0, 853, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 828, 0, 0, 0, 0, 0, - 0, 853, 0, 0, 828, 828, 0, 1069, 0, 0, - 0, 0, 828, 828, 0, 935, 0, 828, 1069, 0, - 0, 0, 828, 0, 0, 828, 828, 0, 0, 853, - 828, 0, 0, 0, 0, 0, 828, 936, 0, 0, - 853, 0, 0, 0, 0, 0, 0, 204, 828, 0, - 937, 0, 0, 0, 0, 853, 828, 0, 853, 0, - 828, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 828, 0, 0, 938, 0, 828, 0, - 0, 939, 0, 940, 828, 0, 0, 0, 0, 0, - 941, 0, 0, 942, 0, 0, 0, 0, 828, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 943, 0, 0, 0, 0, 0, 944, 0, - 0, 0, 0, 945, 828, 0, 946, 0, 0, 0, - 947, 0, 0, 0, 0, 0, 0, 948, 0, 949, - 0, 0, 1069, 0, 950, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 851, - 0, 0, 0, 0, 2033, 0, 0, 0, 0, 951, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1069, 853, 0, 0, 0, 0, 0, 0, 0, 853, - 853, 0, 0, 0, 0, 0, 851, 0, 0, 2035, - 0, 1069, 0, 0, 0, 0, 0, 0, 851, 0, - 0, 852, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 828, 852, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 851, 0, 0, 0, 0, - 0, 0, 852, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 2035, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 1069, 0, 0, 0, - 852, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 852, 0, 0, 0, 0, 0, 0, 0, 0, - 828, 0, 0, 0, 0, 0, 852, 0, 0, 852, - 0, 0, 0, 0, 828, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 851, 0, 0, - 0, 0, 0, 0, 828, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1069, 0, 1069, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 851, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 828, 0, 0, 0, 1069, - 0, 0, 852, 0, 828, 0, 0, 0, 0, 0, - 852, 852, 0, 0, 0, 0, 0, 853, 0, 0, - 2034, 0, 828, 828, 0, 0, 828, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 828, 0, 0, 0, 0, 0, 0, 828, 0, - 0, 0, 0, 828, 0, 0, 828, 828, 0, 0, - 0, 0, 0, 0, 828, 828, 0, 0, 2035, 0, - 0, 0, 0, 0, 0, 0, 0, 2034, 0, 0, - 0, 0, 828, 0, 828, 0, 0, 0, 0, 851, - 0, 851, 853, 0, 0, 828, 0, 0, 0, 0, - 853, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 853, 188, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1069, 851, 0, 0, 0, 0, 0, - 0, 0, 0, 828, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 189, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 190, 0, 0, 0, 2033, - 0, 0, 0, 844, 844, 828, 853, 853, 0, 0, - 0, 0, 0, 191, 0, 0, 0, 0, 853, 192, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 853, - 853, 0, 0, 0, 0, 0, 193, 0, 0, 0, - 0, 0, 0, 0, 0, 853, 0, 194, 0, 0, - 0, 0, 0, 0, 0, 195, 0, 0, 0, 0, - 0, 4842, 0, 0, 0, 0, 0, 196, 0, 0, - 0, 0, 197, 0, 828, 0, 1069, 844, 852, 198, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 199, 0, 0, 0, - 828, 1069, 0, 828, 0, 828, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 200, 0, 0, 0, 828, 0, 0, 0, 2034, - 0, 828, 0, 0, 0, 828, 0, 0, 0, 0, - 0, 1069, 201, 0, 0, 0, 828, 0, 0, 0, - 0, 0, 0, 852, 0, 0, 0, 0, 0, 0, - 0, 852, 0, 0, 0, 0, 2035, 0, 0, 0, - 0, 0, 0, 852, 0, 0, 202, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 2033, 0, 0, - 0, 0, 0, 0, 0, 1069, 0, 0, 203, 0, - 1069, 1069, 0, 0, 0, 828, 0, 0, 204, 0, - 0, 205, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 851, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 206, 0, 0, - 0, 0, 207, 0, 208, 0, 0, 852, 852, 0, - 0, 209, 828, 0, 210, 0, 0, 0, 0, 852, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 852, 852, 0, 211, 0, 0, 828, 0, 0, 212, - 0, 0, 0, 213, 214, 0, 852, 215, 0, 0, - 0, 216, 0, 0, 0, 0, 0, 0, 0, 0, - 217, 0, 0, 0, 0, 218, 0, 0, 0, 0, - 0, 1069, 1069, 0, 0, 0, 0, 219, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 220, 0, 828, 0, 0, 828, 0, 0, 828, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 828, - 0, 0, 0, 0, 828, 0, 828, 0, 828, 0, - 0, 0, 0, 0, 0, 0, 828, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 853, 0, 0, 0, - 0, 0, 0, 0, 828, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 853, 0, 0, 0, 0, 2035, - 853, 0, 0, 0, 853, 0, 0, 2034, 0, 0, - 0, 0, 853, 0, 0, 0, 2033, 0, 851, 0, - 0, 0, 0, 0, 0, 1067, 0, 0, 0, 0, - 853, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1261, 1261, 0, 0, 0, 0, 1067, - 0, 0, 844, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 828, 0, - 0, 0, 0, 0, 853, 0, 0, 828, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 853, 853, 0, 0, 0, 0, 0, 0, - 0, 0, 828, 828, 0, 0, 0, 0, 0, 0, - 828, 2033, 0, 0, 1069, 0, 0, 0, 0, 0, - 828, 0, 0, 2035, 853, 0, 0, 2035, 0, 851, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 828, 0, 0, 0, 0, 0, 0, 0, - 853, 0, 2035, 0, 0, 0, 0, 0, 853, 0, - 0, 0, 0, 0, 0, 853, 0, 0, 0, 853, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 853, - 0, 0, 0, 828, 853, 0, 0, 0, 853, 828, - 0, 2035, 0, 0, 0, 0, 0, 0, 828, 0, - 0, 853, 0, 0, 828, 828, 828, 852, 0, 0, - 0, 0, 0, 0, 853, 828, 0, 0, 0, 0, - 0, 0, 0, 0, 853, 852, 0, 0, 0, 0, - 2034, 852, 828, 0, 0, 852, 0, 0, 0, 0, - 0, 0, 0, 852, 0, 0, 851, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 852, 0, 0, 0, 0, 0, 0, 0, 0, - 828, 0, 0, 0, 0, 0, 0, 0, 0, 2035, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 828, 828, 0, - 0, 0, 0, 0, 0, 852, 0, 0, 0, 0, - 0, 0, 0, 1067, 0, 0, 0, 0, 0, 0, - 0, 0, 2033, 852, 852, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 1067, 0, 0, 828, - 0, 0, 0, 0, 0, 828, 0, 0, 0, 0, - 0, 1067, 0, 0, 2034, 852, 853, 0, 2034, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 828, - 0, 2033, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 852, 0, 2034, 0, 0, 2033, 828, 828, 852, - 0, 0, 0, 0, 0, 0, 852, 0, 0, 0, - 852, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 853, 0, 0, 0, 0, 0, 0, 0, 0, - 852, 0, 0, 0, 0, 852, 0, 0, 0, 852, - 0, 0, 2034, 0, 0, 1067, 0, 0, 0, 0, - 0, 0, 852, 0, 0, 0, 0, 0, 0, 853, - 0, 0, 570, 0, 0, 852, 0, 571, 0, 0, - 0, 0, 0, 0, 0, 852, 0, 853, 0, 572, - 0, 0, 0, 0, 0, 853, 1832, 0, 0, 0, - 0, 0, 0, 0, 0, 844, 0, 0, 0, 0, - 0, 573, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 574, 0, 1846, 0, 0, 0, - 0, 0, 0, 0, 0, 575, 0, 0, 0, -850, - 2034, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1864, 1865, 1866, 576, 0, 1869, - 1067, 0, 0, 577, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 2035, 0, 1912, - 578, 0, 0, 2035, 0, 0, 0, 0, 0, 0, - 0, 579, 0, 0, 0, 0, 0, 0, 0, 580, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 581, 0, 0, 0, 0, 0, 852, 0, 582, - 0, 1068, 0, 583, 1950, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - -1070, 0, 0, 0, 0, 1068, 0, 0, 0, 0, - 0, 0, 2054, 0, 0, 0, 2066, 2071, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 853, 0, 852, 0, 0, 0, 0, 584, 0, 0, - 0, 0, 0, 0, 0, 0, -572, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 1933, 0, 0, 0, - 852, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 585, 0, 0, 586, 0, 0, 0, 0, 852, 0, - 0, 0, 0, 0, 0, 0, 852, 0, 0, 0, - 0, 0, 587, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 588, 0, 853, 853, 0, - 0, 0, -448, 0, 0, 0, 0, 0, 0, 0, - 0, 1067, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 589, 0, 0, 853, 0, 0, 853, 590, 0, - 0, 0, 0, 0, 0, -448, 0, 0, 591, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 592, 2034, 0, - 0, 0, 0, 593, 2034, 0, 0, 0, -448, 0, - 0, 594, 595, 0, 596, 597, 0, 1067, 0, 0, - 0, 0, 0, 0, 598, 0, 0, 0, 0, 599, - 0, 0, 0, 0, 0, 600, 0, 0, 601, 0, - 0, 602, 0, 0, 0, 0, 0, 0, 2035, 2035, - 2035, 0, 0, 0, -448, 0, 1067, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 853, 0, 0, 0, 0, 0, 0, 1067, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 852, 853, 0, 0, 0, 0, 0, 0, 1068, - 0, 0, 0, 0, 0, 0, 0, 853, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1068, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 1068, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1067, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1067, 0, 0, 0, 852, 852, - 0, 0, 0, 1067, 0, 853, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1067, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 852, 0, 0, 852, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1068, 0, 2035, 0, 0, 0, 0, 0, 0, - 853, 0, 853, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 853, 0, 853, 0, 0, - 1067, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1067, 0, 0, 0, 0, 2035, - 0, 0, 0, 0, 0, 0, 1067, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1067, 2034, - 2034, 2034, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 853, 0, 0, 852, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 2635, 0, 1068, 0, 1067, 1067, - 0, 0, 0, 852, 0, 0, 0, 2657, 0, 2659, - 0, 0, 2671, 2674, 2679, 0, 0, 0, 852, 2685, - 0, 0, 2690, 0, 0, 0, 0, 0, 853, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 2698, 2699, - 2700, 2701, 0, 0, 853, 0, 2708, 0, 0, 0, - 2720, 0, 0, 2722, 0, 0, 2729, 2730, 2731, 2732, - 2733, 2734, 2735, 2736, 2737, 2738, 853, 2739, 0, 853, - 0, 0, 0, 0, 1261, 0, 2767, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 852, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1067, 2034, 0, 0, 0, 0, 0, - 0, 852, 0, 852, 0, 0, 0, 0, 0, 0, - 2035, 0, 0, 0, 0, 0, 852, 0, 852, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 2034, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 2787, 0, 2109, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 852, 0, 0, 1058, 0, 0, 1865, 1866, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1058, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 852, - 0, 0, 0, 2109, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 852, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 852, 0, 2884, - 852, 0, 1068, 0, 0, 853, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1068, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1067, 0, 0, 0, 1067, - 1067, 0, 0, 0, 0, 2035, 0, 0, 0, 0, - 2035, 0, 2035, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 1060, 0, 0, - 0, 2034, 0, 0, 2035, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1060, 0, 2035, 0, 1068, 0, 0, 0, 0, - 0, 1067, 0, 0, 0, 0, 0, 0, 853, 0, - 1068, 853, 0, 1067, 0, 0, 0, 0, 0, 2109, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1068, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1067, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 1068, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 853, 853, - 1068, 0, 1058, 0, 0, 0, 0, 0, 853, 0, - 0, 0, 1068, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1068, 1058, 0, 853, 0, 0, - 0, 0, 0, 0, 0, 3145, 852, 0, 0, 0, - 1058, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1068, 1068, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 2034, 0, 0, 0, - 0, 2034, 0, 2034, 0, 0, 0, 0, 0, 853, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 2034, 0, 0, 0, 0, - 0, 0, 0, 0, 1058, 0, 0, 0, 0, 0, - 0, 0, 1067, 0, 2034, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 852, - 0, 0, 852, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1060, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1060, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1068, - 0, 0, 0, 1060, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1067, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1058, - 0, 0, 0, 0, 0, 0, 0, 0, 2770, 852, - 852, 0, 0, 0, 0, 0, 0, 0, 0, 852, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 852, 0, - 0, 0, 3342, 0, 0, 0, 0, 3348, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 1060, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1869, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 2679, 0, 2679, 2679, 0, - 0, 0, 0, 0, 0, 0, 0, 1067, 3409, 853, - 0, 3412, 0, 3414, 2035, 0, 0, 0, 0, 0, - 852, 0, 0, 0, 1067, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 1067, 0, 0, - 0, 0, 0, 3433, 0, 3436, 853, 3438, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 853, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1060, 0, 0, 0, 0, 0, 0, 0, - 0, 2767, 2767, 2767, 0, 853, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 3488, - 0, 2839, 0, 0, 0, 2109, 2845, 0, 0, 0, - 2054, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1058, 0, 0, 0, 0, 2071, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 1061, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1061, 0, 0, 0, 0, 0, 1068, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 853, 0, 1068, - 0, 0, 0, 0, 0, 0, 1058, 0, 0, 3537, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1068, - 0, 0, 0, 0, 0, 1058, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1058, 853, - 852, 0, 0, 0, 1067, 2034, 0, 1067, 0, 1067, - 0, 0, 0, 0, 1067, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1060, 0, 0, 0, 852, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 852, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1067, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 852, 0, 1058, 0, - 1067, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1058, 0, 0, 0, 0, 0, 1060, - 0, 0, 1058, 0, 0, 1067, 0, 0, 0, 853, - 0, 853, 0, 0, 1058, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1060, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1068, 0, - 0, 0, 0, 0, 853, 0, 0, 0, 0, 0, - 0, 1060, 0, 844, 0, 0, 0, 0, 852, 1058, - 0, 0, 0, 0, 1067, 0, 1067, 0, 0, 0, - 0, 0, 0, 1058, 0, 1061, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1058, 0, 0, 0, 2035, - 0, 0, 0, 0, 0, 844, 0, 1058, 1061, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1061, 0, 0, 0, 0, 0, 0, - 2109, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 852, 1060, 0, 0, 0, 0, 0, 1058, 1058, 0, - 0, 0, 0, 0, 0, 0, 1060, 1067, 0, 0, - 0, 0, 0, 0, 0, 1060, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 1060, 0, 0, - 0, 0, 0, 0, 0, 1067, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 1061, 1067, 0, - 0, 0, 0, 0, 0, 0, 1067, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1060, 0, 0, 0, 0, 1063, 0, 0, - 0, 0, 0, 1068, 0, 0, 1060, 0, 0, 0, - 852, 0, 852, 0, 0, 0, 1064, 0, 1060, 0, - 1068, 1063, 0, 0, 0, 0, 0, 0, 0, 0, - 1060, 0, 0, 1068, 0, 0, 0, 0, 0, 0, - 1064, 0, 1058, 0, 0, 1067, 0, 2035, 0, 0, - 0, 0, 0, 0, 0, 852, 0, 0, 0, 0, - 0, 0, 0, 1067, 0, 0, 0, 0, 0, 0, - 1060, 1060, 1061, 3897, 0, 0, 1067, 0, 0, 0, - 0, 3901, 3902, 853, 3903, 0, 0, 0, 0, 0, - 3904, 0, 3905, 0, 0, 0, 0, 0, 0, 0, - 2034, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 3930, 3931, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 2685, 0, - 0, 0, 0, 0, 0, 0, 0, 3957, 0, 0, - 3960, 0, 3962, 0, 0, 0, 0, 0, 0, 0, - 0, 3966, 0, 0, 0, 0, 0, 0, 0, 3973, - 3974, 0, 1067, 2770, 2770, 2770, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1067, 0, 0, 0, 0, - 0, 0, 4021, 0, 0, 1060, 0, 0, 4028, 4029, - 2767, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1067, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 4043, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 2109, 0, 4056, 2845, 0, 2845, 1067, 0, 0, 0, - 2109, 0, 0, 0, 1058, 0, 0, 0, 1058, 1058, - 0, 0, 0, 0, 0, 0, 2035, 0, 853, 0, - 0, 0, 0, 1061, 0, 0, 0, 0, 2034, 0, - 0, 0, 0, 0, 0, 1063, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1068, - 0, 0, 0, 0, 1064, 0, 0, 0, 1063, 0, - 0, 0, 0, 0, 852, 0, 1068, 0, 0, 0, - 1058, 0, 0, 1063, 0, 0, 0, 1064, 0, 0, - 0, 0, 1058, 0, 0, 0, 0, 0, 0, 1061, - 0, 2109, 1064, 0, 1067, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 2035, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1058, 0, 0, 0, 0, 0, 1061, 853, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 844, 0, 0, 0, 0, 0, 0, 0, - 0, 1061, 0, 0, 0, 0, 0, 1063, 0, 0, - 1068, 0, 1068, 0, 0, 0, 0, 1060, 0, 0, - 0, 1060, 1060, 0, 0, 0, 1064, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1067, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 844, 844, 0, 1067, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1061, 0, 1060, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1068, 0, 1060, 1061, 0, 0, 0, - 0, 0, 0, 0, 0, 1061, 853, 2034, 0, 852, - 0, 0, 1063, 0, 0, 0, 0, 1061, 0, 0, - 0, 1068, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1064, 0, 0, 0, 1060, 0, 0, 0, 0, - 0, 0, 0, 0, 2845, 0, 0, 0, 0, 4318, - 4319, 1058, 2845, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1061, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 2035, 0, 0, 0, 1061, 0, 0, 0, - 0, 0, 0, 0, 1067, 0, 0, 0, 1061, 0, - 0, 0, 2034, 0, 0, 0, 0, 0, 0, 0, - 1061, 0, 0, 0, 0, 0, 4355, 0, 0, 0, - 852, 1068, 0, 0, 0, 0, 0, 0, 0, 4360, - 0, 2035, 0, 1058, 0, 0, 0, 0, 0, 2845, - 0, 0, 0, 0, 1067, 0, 2035, 844, 844, 0, - 1061, 1061, 1068, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 4375, 4377, 0, 0, 0, 0, 0, 0, 4382, 4383, - 0, 0, 0, 4384, 0, 0, 0, 0, 4387, 0, - 0, 4390, 4391, 0, 0, 0, 4395, 0, 0, 0, - 0, 0, 4399, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1060, 0, 0, 0, 0, 0, - 0, 0, 0, 1063, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 2767, - 0, 0, 1064, 0, 2767, 0, 1058, 852, 1068, 0, - 2767, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1058, 1261, 0, 0, 0, 0, 1067, - 0, 1068, 0, 0, 0, 0, 1058, 0, 0, 0, - 1067, 0, 0, 0, 0, 1061, 0, 0, 0, 1063, - 4459, 0, 0, 0, 0, 0, 1060, 1068, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1064, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 2034, 0, 0, 0, 0, 1063, 0, - 0, 0, 1068, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 1064, 0, 0, - 0, 1063, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1064, 0, 2034, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 2770, 0, 0, 0, 0, 2034, 0, 0, - 4520, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1067, 0, 0, 0, 0, 1060, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 1060, 0, 0, 0, - 2109, 1063, 0, 0, 0, 0, 0, 0, 0, 1060, - 0, 0, 1067, 0, 0, 0, 1063, 0, 0, 0, - 1064, 0, 0, 0, 0, 1063, 4556, 0, 0, 0, - 0, 0, 0, 1067, 0, 1064, 0, 1063, 0, 0, - 0, 0, 0, 0, 1064, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 1064, 0, 0, 0, - 0, 0, 0, 1058, 0, 0, 1058, 0, 1058, 0, - 0, 0, 0, 1058, 0, 0, 0, 1061, 0, 0, - 0, 1061, 1061, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1063, 0, 0, 0, 0, 1066, 1067, 2845, - 0, 0, 0, 0, 0, 0, 1063, 0, 0, 0, - 0, 1064, 0, 0, 0, 0, 0, 0, 1063, 0, - 0, 1066, 1058, 2845, 0, 1064, 0, 0, 0, 0, - 1063, 0, 0, 0, 0, 0, 0, 1064, 0, 1058, - 0, 0, 0, 1061, 0, 0, 0, 0, 0, 1064, - 0, 0, 0, 0, 0, 1061, 0, 0, 0, 0, - 0, 0, 0, 0, 1058, 0, 0, 0, 0, 0, - 1063, 1063, 0, 0, 0, 0, 0, 0, 4661, 4662, - 0, 0, 4663, 0, 0, 0, 0, 0, 0, 1064, - 1064, 0, 0, 0, 0, 1061, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1067, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 4699, 4700, 0, 0, 0, 0, 1060, 0, 0, 1060, - 0, 1060, 0, 1058, 0, 1058, 1060, 0, 0, 0, - 4712, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1068, 1067, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1060, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 2109, 0, 1060, 0, 0, 1063, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 1058, 0, 0, 0, - 0, 0, 0, 0, 1064, 0, 0, 1060, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1058, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 1058, 0, 0, - 0, 0, 0, 0, 1061, 1058, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1067, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1066, 1060, 0, 1060, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1066, 0, - 0, 0, 0, 0, 0, 1068, 0, 0, 0, 0, - 0, 0, 0, 1066, 0, 0, 1068, 0, 0, 2685, - 0, 0, 0, 0, 1058, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 1061, 0, 0, 0, - 0, 0, 1058, 0, 0, 0, 0, 4891, 0, 0, - 0, 0, 0, 0, 0, 1058, 0, 0, 0, 1060, - 0, 0, 1869, 0, 0, 0, 0, 0, 0, 0, - 0, 2770, 0, 0, 0, 0, 2770, 0, 0, 0, - 0, 0, 2770, 0, 0, 0, 0, 1060, 1067, 0, - 0, 0, 0, 0, 0, 0, 0, 1066, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 1063, 0, 0, - 1060, 1063, 1063, 1067, 0, 0, 0, 0, 1060, 0, - 0, 4941, 0, 0, 0, 0, 1064, 0, 0, 0, - 1064, 1064, 0, 0, 0, 0, 0, 0, 0, 0, - 1068, 0, 0, 0, 0, 0, 0, 0, 0, 1061, - 0, 1058, 0, 1067, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 1061, 0, 0, 0, - 0, 0, 0, 1063, 1058, 0, 0, 0, 1068, 1061, - 0, 0, 0, 0, 0, 1063, 0, 1060, 0, 0, - 0, 0, 1064, 0, 0, 0, 0, 0, 0, 1068, - 1058, 0, 1066, 0, 1064, 1060, 0, 1067, 0, 0, - 0, 0, 1067, 1067, 0, 0, 0, 0, 1060, 0, - 0, 0, 0, 0, 0, 1063, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1058, 0, 0, 0, 0, - 0, 0, 0, 0, 1064, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1068, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 4699, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 5086, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1060, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1067, 0, 0, 0, 0, 0, - 0, 0, 0, 1058, 0, 0, 0, 1060, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1060, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 4625, 0, 1068, 0, 0, 0, 0, - 0, 0, 0, 0, 5138, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 1061, 0, 1060, 1061, - 0, 1061, 0, 0, 1063, 0, 1061, 0, 0, 0, - 0, 0, 0, 1066, 0, 0, 0, 1068, 5165, 5165, - 0, 0, 0, 1064, 0, 0, 0, 0, 0, 0, - 0, 0, 1058, 0, 0, 0, 4699, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1061, 1058, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1061, 0, 0, 0, 0, 0, 0, 1066, - 0, 0, 0, 0, 0, 0, 1063, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 1060, 1061, 0, 0, - 0, 0, 0, 0, 0, 1064, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 5224, 0, 0, 1066, 0, - 0, 0, 0, 0, 0, 0, 1067, 0, 0, 0, - 0, 0, 5165, 0, 0, 0, 0, 0, 0, 0, - 0, 1066, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 2845, 0, 0, 0, 0, 0, 0, 5265, 0, - 0, 0, 0, 0, 0, 0, 1061, 0, 1061, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1058, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1060, 0, 0, 0, 1063, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 1063, 0, 1064, 1060, - 0, 1066, 0, 0, 0, 0, 0, 0, 0, 1063, - 0, 0, 0, 1058, 0, 1064, 1066, 0, 0, 0, - 0, 0, 0, 0, 0, 1066, 0, 0, 1064, 1061, - 0, 0, 0, 0, 0, 0, 0, 1066, 0, 0, - 0, 0, 0, 0, 0, 5165, 0, 0, 0, 0, - 0, 5323, 0, 0, 2845, 0, 0, 1061, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1068, - 1061, 0, 0, 0, 0, 0, 0, 0, 1061, 0, - 0, 0, 1066, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 1066, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1066, 1068, - 0, 0, 0, 0, 0, 0, 1060, 0, 0, 0, - 1066, 0, 0, 0, 0, 0, 0, 0, 1058, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1058, - 0, 0, 0, 0, 0, 0, 0, 1061, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1066, 1066, 0, 1068, 0, 1061, 1060, 0, 1068, 1068, - 0, 0, 0, 0, 0, 0, 0, 0, 1061, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 1063, 0, 0, 1063, - 0, 1063, 0, 0, 0, 0, 1063, 0, 0, 0, - 0, 0, 0, 0, 0, 1064, 0, 0, 1064, 0, - 1064, 0, 0, 0, 0, 1064, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1058, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1061, 1063, 0, 0, 0, 4625, - 1068, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1060, 1063, 0, 1064, 1066, 0, 1061, 0, 0, - 0, 1058, 1060, 0, 0, 0, 0, 0, 0, 0, - 0, 1064, 0, 0, 0, 0, 0, 1063, 0, 0, - 0, 0, 1058, 1061, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 1064, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1061, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 1063, 1058, 1063, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1064, 0, 1064, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 1060, 0, 0, 0, + 0, 2066, 0, 0, 0, 0, 0, 0, 1724, 0, + 0, 0, 0, 1724, 1108, 1724, 0, 0, 0, 0, + 0, 0, 1487, 0, 0, 0, 0, 0, 1488, 0, + 0, 0, 0, 2048, 0, 0, 2049, 0, 1724, 1108, + 2050, 2051, 2052, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1496, 0, 2048, 0, 1497, 2049, 0, 2053, + 1724, 2050, 2051, 2052, 0, 0, 1498, 2055, 0, 0, + 1490, 0, 0, 0, 2056, 1499, 879, 0, 0, 879, + 2053, 0, 0, 0, 0, 0, 0, 1500, 2055, 0, + 0, 0, 0, 0, 0, 2056, 0, 0, 0, 2057, + 0, 2067, 0, 0, 2068, 2069, 2070, 2071, 0, 2072, + 2073, 2074, 2075, 2076, 2077, 0, 2785, 0, 0, 3907, + 2057, 0, 0, 0, 1491, 2357, 0, 0, 1502, 1503, + 0, 1492, 0, 0, 1493, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 606, 0, 0, 0, + 0, 0, 0, 1864, 0, 0, 0, 0, 2358, 0, + 1494, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 879, 879, 1882, 0, 1108, 0, 0, 0, 0, + 0, 879, 0, 1893, 0, 0, 0, 1896, 606, 0, + 0, 1899, 0, 1901, 1495, 0, 0, 0, 0, 1909, + 879, 0, 0, 0, 0, 1917, 0, 0, 1920, 0, + 2058, 0, 0, 0, 0, 2059, 0, 2907, 0, 0, + 0, 0, 0, 1108, 0, 0, 1505, 1108, 606, 606, + 0, 2058, 0, 0, 612, 0, 2059, 2060, 2061, 3717, + 662, 612, 0, 0, 0, 0, 714, 0, 612, 0, + 0, 0, 2062, 0, 612, 0, 765, 1593, 2060, 2061, + 0, 1497, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1498, 0, 2062, 0, 832, 832, 0, 879, 0, + 1499, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 2063, 1500, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 606, 0, 2064, 0, 0, 2065, 0, + 0, 0, 2063, 0, 0, 0, 0, 606, 0, 0, + 0, 0, 0, 0, 0, 0, 2064, 0, 0, 2065, + 3079, 1059, 0, 1502, 1503, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 606, 0, + 3797, 606, 0, 0, 0, 0, 0, 0, 0, 606, + 606, 0, 1108, 1504, 0, 0, 0, 0, 606, 606, + 0, 0, 0, 606, 1108, 0, 0, 0, 0, 606, + 0, 0, 606, 606, 0, 0, 0, 606, 0, 0, + 0, 0, 0, 606, 0, 2066, 0, 0, 0, 0, + 0, 1343, 0, 0, 0, 606, 0, 0, 0, 0, + 0, 0, 0, 606, 0, 0, 2066, 606, 0, 0, + 0, 0, 0, 0, 866, 0, 0, 0, 0, 0, + 0, 1505, 909, 0, 0, 911, 0, 0, 916, 917, + 0, 920, 0, 923, 0, 0, 929, 606, 931, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 606, 3884, 0, 0, 0, 0, + 1343, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1108, 0, 0, 2067, 0, 1343, 2068, 2069, + 2070, 2071, 0, 2072, 2073, 2074, 2075, 2076, 2077, 0, + 879, 0, 0, 4087, 0, 1724, 2067, 0, 0, 2068, + 2069, 2070, 2071, 0, 2072, 2073, 2074, 2075, 2076, 2077, + 0, 0, 0, 1108, 4143, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 879, 0, 0, 0, 0, 1108, 0, 0, 0, 0, + 0, 3247, 879, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 606, 2048, + 0, 0, 2049, 0, 0, 0, 2050, 2051, 2052, 0, + 0, 0, 0, 0, 879, 0, 0, 3278, 0, 0, + 3278, 0, 3278, 0, 0, 2053, 3278, 0, 3278, 3278, + 1487, 0, 0, 2055, 0, 0, 1488, 3278, 3278, 3278, + 2056, 0, 0, 0, 0, 1108, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 2057, 0, 0, 0, 0, + 0, 0, 0, 0, 606, 0, 0, 0, 1490, 0, + 0, 0, 0, 0, 0, 0, 0, 2461, 0, 0, + 606, 0, 3354, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 4056, 0, 0, 0, 0, + 0, 0, 0, 879, 0, 0, 0, 0, 0, 0, + 606, 0, 0, 0, 3385, 0, 0, 0, 0, 0, + 4072, 0, 1491, 0, 0, 0, 1059, 0, 0, 1492, + 0, 0, 1493, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1108, 0, 1108, 1494, 0, + 0, 0, 0, 0, 0, 0, 2058, 0, 1487, 0, + 0, 2059, 0, 0, 1488, 0, 0, 0, 0, 0, + 0, 0, 1059, 879, 0, 0, 0, 0, 0, 0, + 0, 0, 1495, 2060, 2061, 0, 0, 0, 0, 0, + 0, 0, 606, 0, 0, 0, 1108, 0, 2062, 0, + 0, 0, 0, 0, 0, 0, 1490, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 606, 606, 0, 0, 606, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 2063, 0, 0, + 606, 0, 0, 0, 0, 1593, 0, 606, 0, 1497, + 0, 2064, 606, 0, 2065, 606, 606, 0, 1011, 1498, + 1491, 0, 606, 606, 0, 1024, 1025, 1492, 1499, 1031, + 1493, 1034, 1035, 0, 0, 0, 1037, 0, 0, 606, + 1500, 606, 0, 0, 0, 0, 879, 1056, 879, 0, + 0, 2048, 606, 0, 2049, 0, 1494, 0, 2050, 2051, + 2052, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 2053, 3254, 0, + 0, 1502, 1503, 0, 0, 2055, 1133, 0, 1135, 0, + 1495, 0, 2056, 0, 1108, 879, 0, 0, 1151, 0, + 0, 2066, 0, 0, 0, 606, 2647, 0, 0, 0, + 0, 3255, 0, 4282, 2654, 0, 0, 2057, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 612, 0, 0, 0, 2666, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1724, 0, 0, 0, 0, 606, + 0, 0, 0, 1593, 858, 860, 0, 1497, 864, 0, + 0, 0, 0, 0, 0, 0, 0, 1498, 0, 0, + 0, 0, 0, 0, 0, 1059, 1499, 0, 922, 1505, + 0, 0, 0, 0, 0, 932, 0, 0, 1500, 0, + 0, 0, 0, 1487, 0, 0, 0, 0, 0, 1488, + 0, 2067, 0, 0, 2068, 2069, 2070, 2071, 0, 2072, + 2073, 2074, 2075, 2076, 2077, 832, 0, 0, 606, 4253, + 1108, 0, 0, 0, 0, 0, 3743, 0, 2058, 1502, + 1503, 4388, 0, 2059, 4391, 0, 0, 0, 0, 0, + 0, 1490, 0, 0, 606, 1108, 0, 606, 0, 606, + 0, 1448, 0, 0, 0, 2060, 2061, 0, 0, 3744, + 0, 0, 0, 0, 0, 0, 0, 0, 606, 0, + 2062, 0, 0, 0, 606, 0, 0, 0, 606, 0, + 0, 0, 0, 0, 1108, 0, 0, 0, 606, 0, + 0, 0, 0, 0, 1059, 1491, 0, 0, 0, 0, + 0, 0, 1492, 0, 0, 1493, 0, 0, 0, 2063, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 2064, 0, 1624, 2065, 1505, 1724, 0, + 0, 1494, 0, 0, 0, 0, 4475, 1108, 0, 0, + 0, 0, 1108, 1108, 0, 0, 1735, 606, 0, 0, + 2912, 0, 606, 606, 879, 2461, 0, 0, 1746, 0, + 0, 0, 0, 1749, 0, 1495, 0, 0, 879, 0, + 0, 0, 0, 1752, 0, 0, 0, 0, 1756, 0, + 0, 0, 0, 0, 3790, 0, 0, 1759, 0, 0, + 606, 0, 1766, 0, 0, 1770, 0, 606, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 2066, 0, 0, 0, 0, 0, 0, + 0, 0, 606, 0, 0, 0, 0, 0, 1593, 0, + 0, 0, 1497, 3473, 0, 0, 0, 1824, 0, 3831, + 0, 0, 1498, 0, 0, 0, 0, 0, 0, 0, + 0, 1499, 0, 1457, 0, 0, 0, 1108, 1108, 0, + 0, 0, 0, 1500, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 606, 0, 0, + 606, 0, 0, 606, 0, 0, 0, 1458, 0, 0, + 0, 0, 0, 0, 606, 0, 0, 0, 606, 0, + 606, 3799, 606, 0, 1502, 1503, 0, 3871, 0, 606, + 0, 0, 0, 2067, 0, 0, 2068, 2069, 2070, 2071, + 0, 2072, 2073, 2074, 2075, 2076, 2077, 0, 606, 0, + 0, 4568, 0, 0, 3800, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1459, 0, 0, + 0, 3278, 612, 1724, 612, 879, 612, 0, 612, 0, + 612, 612, 612, 0, 0, 3904, 3904, 612, 0, 0, + 0, 0, 0, 0, 0, 3920, 0, 0, 1972, 0, + 0, 1059, 1460, 1059, 0, 0, 1002, 0, 1005, 0, + 0, 0, 1008, 1985, 0, 0, 0, 0, 0, 0, + 0, 0, 1505, 0, 0, 606, 1033, 0, 0, 0, + 0, 0, 0, 1038, 606, 0, 0, 0, 1461, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 3976, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 606, 606, 606, 0, 0, 0, 0, 0, 0, 606, + 1724, 0, 0, 1108, 1462, 0, 0, 0, 1463, 606, + 0, 0, 0, 4011, 1059, 0, 2048, 0, 879, 2049, + 0, 0, 0, 2050, 2051, 2052, 0, 0, 0, 0, + 0, 606, 0, 0, 0, 0, 0, 0, 0, 1464, + 1465, 0, 2053, 0, 879, 0, 0, 0, 0, 0, + 2055, 0, 0, 0, 0, 4722, 0, 2056, 0, 0, + 0, 0, 0, 2048, 0, 0, 2049, 4732, 0, 0, + 2050, 2051, 2052, 0, 0, 0, 0, 1466, 0, 0, + 0, 35, 2057, 0, 606, 1467, 0, 0, 0, 2053, + 606, 0, 0, 0, 1468, 0, 0, 2055, 0, 0, + 606, 0, 1469, 0, 2056, 0, 606, 606, 606, 832, + 1470, 0, 0, 0, 0, 0, 0, 0, 606, 0, + 0, 0, 1471, 0, 0, 0, 0, 0, 0, 2057, + 0, 1472, 0, 0, 0, 1473, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 879, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 606, 0, 0, 0, 0, 0, + 606, 0, 0, 0, 3411, 0, 0, 0, 0, 1474, + 2278, 0, 3420, 2058, 0, 0, 0, 0, 2059, 0, + 0, 0, 0, 1519, 1520, 0, 4146, 606, 606, 0, + 0, 0, 3439, 0, 0, 0, 0, 0, 606, 0, + 2060, 2061, 3445, 606, 0, 3446, 0, 3447, 3448, 0, + 0, 3450, 1724, 0, 0, 2062, 0, 3454, 0, 3455, + 2058, 0, 3457, 0, 0, 2059, 0, 0, 0, 2048, + 0, 0, 2049, 606, 0, 0, 2050, 2051, 2052, 0, + 0, 0, 2369, 606, 0, 0, 0, 2060, 2061, 0, + 0, 0, 0, 0, 2063, 2053, 0, 0, 3473, 0, + 0, 606, 2062, 2055, 0, 0, 0, 0, 2064, 0, + 2056, 2065, 0, 0, 606, 0, 1724, 0, 872, 881, + 0, 0, 0, 1755, 0, 3496, 872, 0, 881, 872, + 0, 0, 0, 0, 1724, 2057, 606, 606, 0, 0, + 0, 2063, 881, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1777, 1778, 0, 2064, 0, 0, 2065, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1819, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 2048, 0, 0, 2049, 0, 0, 2066, 2050, + 2051, 2052, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 3473, 0, 3473, 0, 0, 0, 0, 2053, 0, + 0, 0, 0, 0, 0, 0, 2055, 0, 0, 0, + 0, 3920, 0, 2056, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 2066, 2058, 0, 0, 0, + 0, 2059, 1888, 1890, 0, 0, 4354, 0, 2057, 0, + 0, 0, 0, 0, 4365, 0, 0, 0, 0, 4366, + 0, 4367, 0, 2060, 2061, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 2062, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 2067, 0, + 0, 2068, 2069, 2070, 2071, 0, 2072, 2073, 2074, 2075, + 2076, 2077, 0, 0, 4408, 0, 4606, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 2063, 0, 2531, + 3278, 0, 0, 0, 3278, 3278, 0, 3278, 0, 0, + 0, 2064, 0, 0, 2065, 2067, 0, 0, 2068, 2069, + 2070, 2071, 0, 2072, 2073, 2074, 2075, 2076, 2077, 0, + 0, 0, 0, 4862, 0, 0, 0, 0, 0, 2058, + 0, 0, 0, 0, 2059, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1457, 2060, 2061, 0, 0, + 0, 0, 0, 3715, 0, 0, 0, 0, 0, 0, + 0, 2062, 0, 0, 0, 0, 0, 0, 0, 1457, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1458, + 0, 2066, 0, 0, 0, 0, 0, 4515, 0, 0, + 3920, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 2063, 0, 0, 1458, 0, 0, 2658, 0, 2659, 0, + 0, 0, 0, 0, 2064, 0, 0, 2065, 0, 0, + 0, 0, 0, 0, 0, 2670, 0, 2671, 0, 0, + 0, 0, 0, 0, 0, 0, 3774, 0, 3776, 1459, + 0, 612, 0, 612, 0, 612, 0, 612, 0, 612, + 0, 0, 0, 612, 0, 0, 0, 0, 0, 0, + 4556, 4556, 4556, 1459, 4556, 4556, 4556, 4556, 4556, 0, + 0, 0, 0, 0, 1460, 0, 0, 0, 0, 0, + 0, 2067, 0, 0, 2068, 2069, 2070, 2071, 0, 2072, + 2073, 2074, 2075, 2076, 2077, 0, 0, 0, 1460, 4872, + 0, 0, 0, 881, 2066, 0, 0, 0, 0, 881, + 1461, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 881, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1461, 0, 0, 0, 881, 0, + 0, 0, 0, 0, 0, 0, 1462, 0, 0, 0, + 1463, 0, 872, 881, 0, 2298, 0, 0, 0, 872, + 0, 881, 872, 0, 0, 0, 0, 0, 0, 0, + 1462, 0, 0, 0, 1463, 881, 0, 3868, 0, 0, + 2337, 1528, 1465, 3875, 0, 881, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 4646, 0, 4648, 2067, 1545, 1465, 2068, 2069, 2070, + 2071, 0, 2072, 2073, 2074, 2075, 2076, 2077, 0, 1529, + 0, 0, 4881, 35, 0, 0, 0, 1467, 0, 0, + 0, 0, 0, 0, 0, 0, 1468, 0, 0, 0, + 0, 0, 0, 1546, 1469, 0, 0, 35, 0, 0, + 0, 1467, 1530, 0, 0, 0, 0, 2419, 0, 0, + 1468, 0, 0, 0, 1471, 0, 0, 0, 1469, 0, + 881, 0, 0, 1472, 0, 0, 1547, 1473, 0, 0, + 0, 0, 0, 0, 2442, 2443, 2444, 2445, 1471, 0, + 0, 0, 0, 0, 881, 2969, 2970, 1472, 0, 0, + 0, 1473, 0, 0, 0, 0, 0, 881, 0, 0, + 0, 0, 0, 0, 2985, 2986, 0, 0, 0, 2989, + 2990, 0, 0, 0, 2993, 0, 0, 0, 0, 0, + 0, 1474, 0, 2048, 0, 0, 2049, 0, 3004, 0, + 2050, 2051, 2052, 0, 0, 3013, 0, 0, 0, 3016, + 3017, 0, 0, 3020, 3021, 1474, 0, 0, 0, 2053, + 3026, 0, 0, 0, 0, 0, 0, 2055, 0, 0, + 0, 0, 0, 0, 2056, 3045, 0, 3047, 0, 0, + 4038, 0, 4040, 3473, 4042, 0, 0, 0, 0, 0, + 4752, 4753, 0, 4046, 0, 3070, 0, 0, 0, 2057, + 3072, 0, 0, 3278, 0, 3278, 3278, 0, 0, 3278, + 0, 0, 0, 0, 0, 3078, 0, 1726, 0, 0, + 0, 0, 0, 0, 3085, 2497, 2498, 3089, 0, 3091, + 3094, 3096, 0, 0, 4071, 872, 3104, 3107, 0, 0, + 0, 872, 0, 0, 872, 2521, 3120, 0, 0, 0, + 0, 3129, 0, 0, 0, 3132, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 3149, 4812, 0, 0, 0, 0, 3158, 3159, + 2566, 2567, 2568, 2569, 0, 3164, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 3178, 3179, 0, 0, 0, + 0, 3183, 0, 0, 0, 0, 0, 0, 0, 0, + 2058, 4839, 0, 3190, 0, 2059, 3193, 0, 0, 0, + 0, 3196, 0, 0, 0, 0, 0, 3199, 3200, 0, + 0, 0, 0, 3204, 0, 0, 3208, 2060, 2061, 0, + 3215, 3216, 3217, 3218, 0, 3220, 4556, 0, 0, 0, + 0, 0, 2062, 0, 0, 0, 0, 0, 3245, 3246, + 2048, 3248, 0, 2049, 0, 0, 0, 2050, 2051, 2052, + 0, 0, 3257, 3258, 3259, 0, 0, 0, -130, 0, + 0, 0, 0, 0, 0, 0, 2053, 0, 0, 0, + 0, 2063, 0, 881, 2055, 0, 0, 0, 2668, 0, + 1, 2056, 0, 0, 2672, 2064, 0, 0, 2065, 0, + 2, 881, 3, 4, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 2057, 0, 5, 881, + 0, 0, 0, 0, 0, 3312, 0, 6, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, + 0, 8, 9, 0, 0, 0, 0, 881, 10, 0, + 11, 0, 0, 3349, 0, 0, 0, 0, 881, 0, + 0, 12, 0, 13, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 881, 0, 0, 0, 881, 0, + 14, 0, 0, 15, 0, 2066, 0, 0, 0, 0, + 0, 3920, 0, 0, 0, 0, 0, 16, 0, 17, + 0, 0, 0, 18, 0, 0, 0, 0, 0, 19, + 0, 0, 0, 0, 0, 0, 0, 20, 0, 21, + 0, 0, 0, 0, 0, 0, 22, 2058, 0, 2842, + 0, 0, 2059, 0, 0, 0, 3278, 0, 0, 0, + 0, 0, 23, 0, 0, 5001, 0, 0, 0, 0, + 0, 0, 0, 0, 2060, 2061, 0, 0, 0, 24, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 2062, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 2067, 0, 0, 2068, 2069, + 2070, 2071, 0, 2072, 2073, 2074, 2075, 2076, 2077, 25, + 26, 0, 881, 4884, 0, 27, 0, 0, 2063, 0, + 881, 881, 0, 0, 0, 0, 0, 28, 0, 0, + 0, 0, 2064, 0, 881, 2065, 0, 0, 0, 0, + 0, 2048, 0, 0, 2049, 29, 0, 0, 2050, 2051, + 2052, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 3509, 0, 2053, 0, 0, + 0, 0, 0, 0, 0, 2055, 0, 0, 0, 0, + 0, 0, 2056, 0, 0, 0, 0, 1726, 30, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 31, 0, 0, 0, 0, 2057, 32, 33, + 0, 34, 0, 0, 0, 0, 35, 0, 0, 0, + 0, 36, 2066, 0, 37, 0, 0, 0, 0, 0, + 0, 38, 0, 0, 0, 0, 0, 39, 40, 0, + 0, 3032, 3033, 0, 0, 41, 0, 0, 0, 42, + 0, 0, 3046, 0, 3048, 0, 0, 0, 3052, 43, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 44, 1059, 0, 0, 0, 5180, + 0, 0, 0, 4538, 0, 0, 0, 4540, 0, 0, + 0, 0, 0, 0, 45, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 46, 0, 0, 0, 0, + 0, 47, 0, 0, 0, 0, 48, 0, 2058, 0, + 0, 0, 2067, 2059, 0, 2068, 2069, 2070, 2071, 49, + 2072, 2073, 2074, 2075, 2076, 2077, 0, 0, 0, 0, + 4931, 0, 0, 0, 0, 2060, 2061, 0, 0, 0, + 0, 0, 50, 0, 0, 0, 0, 0, 0, 0, + 2062, 0, 0, 0, 0, 0, 0, 51, 0, 0, + -130, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 881, 0, 0, 0, 3189, 0, + 0, 3192, 0, 0, 0, 0, 0, 0, 0, 2063, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 2064, 0, 0, 2065, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 3718, 0, 0, 0, 3720, 0, 0, 0, 0, + 0, 3722, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 3733, + 3735, 0, 1059, 0, 3735, 0, 5321, 0, 5322, 3746, + 3747, 3748, 5327, 5328, 3281, 0, 0, 0, 0, 0, + 0, 0, 3288, 0, 0, 3291, 0, 0, 0, 0, + 0, 3293, 2048, 0, 0, 2049, 0, 0, 0, 2050, + 2051, 2052, 3305, 2066, 0, 3777, 3778, 3779, 3780, 0, + 4687, 0, 0, 0, 0, 0, 0, 0, 2053, 0, + 0, 0, 0, 0, 0, 0, 2055, 0, 0, 0, + 0, 0, 1726, 2056, 0, 0, 0, 0, 0, 0, + 0, 0, 3798, 3351, 3802, 3803, 3804, 0, 0, 0, + 0, 0, 0, 0, 4712, 4713, 881, 0, 2057, 0, + 0, 0, 0, 0, 881, 0, 0, 0, 0, 0, + 0, 3374, 0, 0, 0, 0, 881, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 2067, 0, 0, 2068, 2069, 2070, 2071, + 0, 2072, 2073, 2074, 2075, 2076, 2077, 0, 0, 2048, + 0, 4966, 2049, 0, 0, 0, 2050, 2051, 2052, 0, + 3441, 0, 3443, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 2053, 4755, 4756, 872, 872, + 0, 881, 881, 2055, 0, 0, 0, 0, 3879, 0, + 2056, 0, 0, 872, 0, 881, 872, 3885, 0, 2058, + 0, 0, 0, 0, 2059, 0, 0, 0, 881, 881, + 0, 0, 0, 0, 0, 2057, 0, 0, 0, 0, + 0, 0, 0, 0, 881, 0, 2060, 2061, 3899, 0, + 0, 0, 0, 0, 0, 0, 1059, 0, 0, 0, + 0, 2062, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 3942, 0, 0, 0, 0, 872, 0, 0, 872, + 872, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 3508, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 2063, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 2064, 0, 0, 2065, 0, 0, + 0, 0, 4852, 3979, 0, 0, 4854, 4855, 3985, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 5543, + 0, 0, 4859, 0, 0, 0, 2058, 0, 0, 0, + 0, 2059, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 4024, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1726, 2060, 2061, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 2062, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 5543, 2066, 4043, 0, 4044, 880, 0, + 0, 0, 0, 0, 0, 0, 0, 880, 0, 0, + 0, 5543, 0, 0, 0, 0, 0, 2063, 0, 0, + 0, 880, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 2064, 0, 0, 2065, 0, 0, 4068, 0, 0, + 881, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 2067, 0, 881, 2068, 2069, 2070, + 2071, 0, 2072, 2073, 2074, 2075, 2076, 2077, 0, 0, + 0, 0, 5008, 0, 881, 0, 0, 0, 0, 1726, + 881, 2066, 0, 0, 881, 0, 0, 0, 0, 0, + 0, 0, 881, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 881, 0, 0, 0, 0, 0, 0, 0, 0, 3724, + 0, 3725, 3726, 3727, 0, 0, 0, 0, 0, 0, + 0, 0, 872, 0, 0, 872, 872, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 881, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 881, 881, 0, 0, 0, + 0, 2067, 0, 0, 2068, 2069, 2070, 2071, 0, 2072, + 2073, 2074, 2075, 2076, 2077, 0, 0, 0, 0, 5309, + 5089, 0, 0, 0, 0, 0, 1726, 881, 0, 0, + 1726, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 4270, 0, 4271, 0, 0, 884, 0, 0, 0, 4273, + 0, 0, 0, 881, 0, 1726, 0, 919, 0, 881, + 0, 0, 0, 0, 0, 4283, 881, 0, 938, 0, + 0, 2048, 0, 881, 2049, 0, 881, 4289, 2050, 2051, + 2052, 4292, 881, 0, 0, 0, 0, 0, 0, 0, + 5134, 0, 0, 0, 0, 0, 0, 2053, 0, 4314, + 0, 0, 881, 0, 0, 2055, 0, 0, 881, 0, + 0, 0, 2056, 881, 0, 0, 1726, 4318, 0, 0, + 0, 0, 4322, 0, 0, 0, 881, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 2057, 0, 881, + 0, 0, 0, 5171, 1726, 0, 0, 4357, 0, 0, + 881, 4361, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 4368, 4369, 4370, 4371, 0, 0, 0, 0, 0, + 4376, 4377, 4378, 4379, 0, 0, 0, 4381, 4382, 0, + 0, 0, 3892, 4389, 4390, 0, 4392, 4393, 4394, 4395, + 4396, 4397, 4398, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 4407, 0, 0, 0, 4410, 4411, 4412, 4413, + 0, 0, 880, 0, 0, 0, 1726, 0, 880, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 880, 3735, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 880, 2058, 0, + 0, 4436, 0, 2059, 0, 0, 0, 0, 0, 0, + 0, 0, 880, 0, 0, 0, 0, 0, 0, 0, + 880, 0, 0, 0, 0, 2060, 2061, 0, 0, 0, + 0, 0, 0, 0, 880, 0, 0, 0, 0, 0, + 2062, 0, 0, 0, 880, 0, 0, 881, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 2048, 0, 0, 2049, + 0, 0, 0, 2050, 2051, 2052, 0, 0, 0, 2063, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 2053, 2064, 0, 0, 2065, 0, 0, 0, + 2055, 3735, 0, 881, 0, 0, 0, 2056, 4047, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 880, + 0, 0, 2057, 0, 0, 0, 0, 0, 4550, 0, + 0, 0, 0, 0, 0, 881, 0, 0, 0, 0, + 0, 0, 0, 880, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 881, 0, 0, 880, 0, 0, 0, + 0, 881, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 872, 0, 2066, 872, 0, 0, 872, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 952, + 0, 0, 0, 0, 0, 1000, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 2058, 0, 0, 0, 0, 2059, 0, + 0, 0, 0, 0, 0, 0, 1726, 0, 0, 0, + 0, 0, 1726, 0, 0, 0, 0, 0, 0, 0, + 2060, 2061, 0, 0, 0, 0, 1725, 0, 0, 0, + 0, 0, 0, 2067, 0, 2062, 2068, 2069, 2070, 2071, + 0, 2072, 2073, 2074, 2075, 2076, 2077, 0, 0, 0, + 0, 5332, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 5487, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 2063, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 2064, 0, + 0, 2065, 0, 0, 0, 0, 881, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 4691, 0, 0, 0, + 4692, 4693, 4694, 4695, 0, 0, 0, 4697, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 4276, 4277, 4278, 4279, 0, 0, 0, 0, 0, 0, + 0, 0, 1332, 0, 0, 0, 0, 0, 0, 0, + 0, 4717, 4718, 4719, 4720, 4721, 2048, 4723, 4724, 2049, + 0, 1359, 0, 2050, 2051, 2052, 0, 0, 0, 4733, + 4734, 0, 0, 0, 0, 0, 0, 0, 2066, 0, + 0, 0, 2053, 1383, 0, 881, 881, 0, 0, 0, + 2055, 0, 0, 0, 0, 0, 0, 2056, 0, 0, + 0, 4739, 880, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 881, 0, 0, 881, 0, 0, 0, 0, + 880, 0, 2057, 0, 0, 0, 0, 0, 0, 1518, + 0, 0, 0, 0, 0, 0, 0, 0, 880, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 880, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 880, 2067, 0, + 0, 2068, 2069, 2070, 2071, 0, 2072, 2073, 2074, 2075, + 2076, 2077, 0, 880, 0, 0, 5437, 880, 0, 1726, + 1726, 1726, 0, 0, 0, 4803, 0, 0, 0, 0, + 0, 4432, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 881, 0, 0, 4435, 0, 0, 0, + 0, 0, 0, 2058, 0, 0, 0, 0, 2059, 0, + 0, 0, 0, 881, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1775, 0, 0, 0, + 2060, 2061, 881, 0, 0, 4856, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 2062, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1813, 1816, 1817, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 2063, 0, 0, 0, 0, 0, + 0, 880, 0, 0, 0, 0, 0, 0, 2064, 880, + 880, 2065, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 880, 0, 0, 0, 0, 881, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 2048, 0, 0, 2049, 0, 612, 0, + 2050, 2051, 2052, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1726, 1725, 0, 0, 2053, + 0, 0, 881, 0, 881, 0, 0, 2055, 0, 0, + 0, 0, 0, 0, 2056, 0, 0, 881, 2066, 881, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1332, 0, 0, 0, 0, 0, 0, 0, 2057, + 0, 1726, 4955, 0, 0, 0, 0, 2048, 0, 1984, + 2049, 0, 0, 0, 2050, 2051, 2052, 0, 1332, 0, + 0, 4965, 0, 0, 0, 0, 4970, 4971, 0, 0, + 0, 0, 0, 2053, 0, 0, 4982, 0, 0, 0, + 0, 2055, 0, 4984, 0, 881, 0, 0, 2056, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 2057, 0, 0, 0, 0, 2067, 5034, + 0, 2068, 2069, 2070, 2071, 0, 2072, 2073, 2074, 2075, + 2076, 2077, 0, 0, 0, 0, 5506, 0, 0, 5051, + 881, 5053, 0, 0, 0, 0, 0, 0, 0, 0, + 2058, 0, 0, 0, 0, 2059, 5067, 0, 881, 0, + 0, 0, 2048, 0, 0, 2049, 0, 0, 0, 2050, + 2051, 2052, 0, 0, 0, 0, 3735, 2060, 2061, 0, + 881, 0, 0, 881, 5088, 0, 0, 0, 2053, 0, + 0, 0, 2062, 880, 0, 0, 2055, 0, 0, 0, + 0, 2127, 0, 2056, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 2058, 0, 0, 0, 2057, 2059, + 0, 2063, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 2064, 0, 2182, 2065, 5127, + 0, 2060, 2061, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 2062, 0, 1726, 0, + 5144, 0, 0, 0, 0, 0, 1308, 1308, 0, 0, + 0, 0, 5152, 0, 0, 0, 0, 4747, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 4751, 0, 0, 2063, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 3564, 0, 0, 0, 2064, + 3565, 0, 2065, 0, 0, 0, 0, 0, 0, 2310, + 0, 0, 0, 0, 0, 2066, 1107, 0, 2333, 2058, + 0, 1725, 0, 0, 2059, 0, 0, 5211, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1107, 0, 0, 880, 2060, 2061, 0, 0, + 2370, 0, 0, 880, 0, 0, 0, 0, 0, 0, + 0, 2062, 0, 0, 0, 880, 0, 0, 0, 0, + 0, 0, 0, 2393, 0, 4817, 2396, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 2066, + 0, 3735, 0, 0, 0, 0, 0, 0, 0, 0, + 2063, 0, 0, 0, 0, 0, 881, 1637, 1641, 0, + 0, 0, 0, 0, 2064, 2067, 0, 2065, 2068, 2069, + 2070, 2071, 0, 2072, 2073, 2074, 2075, 2076, 2077, 2446, + 0, 0, 0, 5562, 0, 0, 0, 0, 0, 0, + 880, 880, 0, 2465, 0, 0, 0, 0, 0, 0, + 0, 5297, 0, 0, 880, 0, 1726, 0, 0, 0, + 0, 1726, 0, 1726, 0, 0, 5310, 880, 880, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 880, 0, 0, 1726, 0, 0, 2067, + 0, 0, 2068, 2069, 2070, 2071, 0, 2072, 2073, 2074, + 2075, 2076, 2077, 0, 2066, 0, 0, 5576, 1726, 0, + 5339, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 881, 5350, 0, 881, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 2489, 0, 4936, 0, 4937, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1640, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1107, + 0, 0, 0, 0, 2067, 2540, 5411, 2068, 2069, 2070, + 2071, 1725, 2072, 2073, 2074, 2075, 2076, 2077, 0, 881, + 881, 0, 0, 0, 1107, 0, 0, 0, 0, 881, + 0, 0, 0, 0, 2583, 2048, 0, 0, 2049, 1107, + 0, 2596, 2050, 2051, 2052, 0, 0, 0, 881, 0, + 5433, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 2053, 0, 0, 0, 0, 0, 0, 0, 2055, + 0, 0, 0, 0, 0, 0, 2056, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 880, + 0, 0, 2001, 0, 0, 0, 0, 0, 0, 0, + 0, 2057, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 5072, 0, + 0, 0, 0, 2016, 1107, 0, 881, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 5499, 0, + 0, 0, 0, 0, 0, 880, 0, 2675, 0, 0, + 0, 2034, 0, 2036, 2037, 0, 2039, 0, 0, 0, + 0, 0, 0, 880, 0, 0, 0, 0, 1725, 880, + 0, 0, 0, 880, 0, 0, 2084, 0, 0, 0, + 0, 880, 0, 0, 0, 0, 0, 1332, 1332, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 880, + 0, 0, 0, 0, 2726, 0, 0, 0, 0, 0, + 0, 0, 2058, 0, 0, 0, 0, 2059, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1107, 0, 0, 0, 0, 2060, + 2061, 0, 0, 0, 880, 0, 0, 0, 2149, 0, + 0, 0, 2161, 2166, 2062, 0, 0, 0, 0, 0, + 5167, 0, 5169, 0, 880, 880, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 2048, 0, 0, 2049, 0, + 0, 0, 2050, 2051, 2052, 0, 0, 0, 0, 0, + 0, 0, 0, 2063, 0, 1725, 880, 0, 0, 1725, + 0, 2053, 0, 0, 0, 0, 0, 2064, 2898, 2055, + 2065, 0, 0, 0, 0, 0, 2056, 0, 0, 2904, + 0, 0, 880, 0, 1725, 0, 0, 0, 880, 0, + 0, 0, 0, 0, 4135, 880, 0, 0, 0, 0, + 0, 2057, 880, 0, 0, 880, 0, 0, 0, 0, + 0, 880, 0, 0, 1383, 0, 0, 0, 881, 0, + 0, 0, 0, 1726, 0, 1383, 1383, 0, 1106, 0, + 0, 880, 0, 0, 0, 0, 0, 880, 0, 0, + 0, 0, 880, 0, 0, 1725, 0, 0, 0, 0, + 0, 0, 0, 0, 1106, 880, 0, 2066, 881, 1332, + 0, 0, 0, 0, 0, 0, 0, 0, 880, 0, + 881, 0, 0, 1725, 4136, 0, 0, 0, 0, 880, + 0, 0, 0, 0, 0, 0, 0, 5467, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 881, 0, 0, 0, 0, 0, 0, 2205, + 0, 0, 2058, 0, 0, 0, 0, 2059, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 2060, + 2061, 0, 0, 0, 0, 1725, 0, 0, 0, 0, + 0, 1637, 1637, 1637, 2062, 0, 5346, 2067, 0, 0, + 2068, 2069, 2070, 2071, 0, 2072, 2073, 2074, 2075, 2076, + 2077, 0, 0, 0, 0, 0, 2205, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 2063, 0, 0, 0, 0, 0, 0, + 0, 881, 0, 3088, 0, 0, 0, 2064, 0, 0, + 2065, 0, 0, 0, 0, 0, 0, 1107, 3110, 0, + 0, 0, 0, 0, 0, 0, 880, 0, 0, 0, + 0, 0, 5468, 0, 0, 0, 0, 0, 0, 3137, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1107, 0, 0, 0, 0, 0, 0, 0, 5417, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 881, 880, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 2066, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1106, 0, 0, 0, 3213, 3214, 0, 0, 0, + 0, 0, 0, 0, 880, 0, 0, 1640, 1640, 1640, + 0, 0, 0, 0, 0, 0, 1106, 0, 0, 0, + 0, 0, 880, 0, 0, 0, 0, 0, 0, 2048, + 880, 1106, 2049, 0, 0, 5492, 2050, 2051, 2052, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 2053, 0, 0, 3518, 0, + 0, 0, 0, 2055, 0, 0, 0, 5508, 5508, 0, + 2056, 0, 0, 0, 881, 0, 881, 2067, 0, 0, + 2068, 2069, 2070, 2071, 0, 2072, 2073, 2074, 2075, 2076, + 2077, 0, 0, 0, 0, 2057, 0, 0, 0, 0, + 0, 0, 3338, 0, 0, 0, 0, 0, 0, 0, + 1107, 0, 0, 0, 0, 1725, 1106, 0, 0, 0, + 0, 1725, 0, 881, 0, 0, 0, 1107, 2048, 0, + 0, 2049, 0, 872, 0, 2050, 2051, 2052, 0, 0, + 0, 0, 0, 0, 0, 1107, 0, 0, 0, 0, + 0, 0, 0, 0, 2053, 0, 0, 0, 0, 0, + 0, 0, 2055, 0, 0, 0, 0, 0, 0, 2056, + 5508, 0, 1726, 0, 0, 0, 0, 872, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 2057, 0, 0, 0, 0, 0, + 0, 1107, 0, 2769, 0, 880, 2058, 0, 0, 0, + 0, 2059, 0, 0, 1107, 2791, 0, 2792, 0, 2794, + 0, 0, 2806, 2809, 2814, 0, 1106, 1107, 0, 2820, + 1097, 0, 2825, 2060, 2061, 0, 0, 0, 0, 1107, + 0, 0, 0, 0, 0, 0, 0, 0, 2062, 0, + 2833, 2834, 2835, 2836, 0, 0, 1097, 0, 2843, 0, + 0, 0, 2861, 0, 0, 2863, 0, 0, 2870, 2871, + 2872, 2873, 2874, 2875, 2876, 2877, 2878, 2879, 0, 2880, + 0, 0, 0, 1107, 1107, 0, 1308, 2063, 0, 1637, + 0, 0, 0, 0, 880, 880, 0, 0, 0, 0, + 0, 2064, 0, 0, 2065, 2058, 0, 0, 0, 0, + 2059, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 880, 0, 0, 880, 0, 0, 0, 0, 0, + 0, 0, 2060, 2061, 0, 0, 0, 0, 2917, 0, + 0, 0, 0, 0, 0, 0, 0, 2062, 0, 0, + 0, 0, 0, 0, 0, 0, 1726, 0, 2048, 0, + 0, 2049, 2036, 2037, 0, 2050, 2051, 2052, 0, 0, + 0, 0, 0, 0, 0, 2110, 0, 0, 0, 0, + 0, 0, 881, 0, 2053, 1099, 2063, 3569, 0, 0, + 0, 2066, 2055, 0, 0, 0, 881, 0, 0, 2056, + 2064, 0, 0, 2065, 0, 0, 0, 0, 1725, 1725, + 1725, 1099, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 3536, 0, 0, 2057, 1107, 0, 0, 0, 0, + 0, 0, 880, 0, 0, 0, 0, 0, 0, 0, + 0, 1106, 0, 0, 0, 3018, 0, 0, 0, 0, + 0, 0, 880, 0, 0, 0, 3628, 0, 0, 0, + 0, 0, 0, 0, 0, 1640, 0, 0, 0, 0, + 0, 880, 0, 0, 0, 0, 0, 0, 0, 1383, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 2066, 2067, 0, 0, 2068, 2069, 2070, 2071, 0, 2072, + 2073, 2074, 2075, 2076, 2077, 0, 0, 0, 1106, 0, + 0, 0, 0, 1097, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 2058, 0, 0, 1097, 0, + 2059, 0, 0, 0, 0, 0, 0, 0, 0, 1106, + 0, 0, 0, 1097, 0, 0, 0, 880, 0, 0, + 0, 0, 2060, 2061, 0, 0, 0, 0, 0, 0, + 0, 2973, 0, 0, 0, 2205, 2979, 2062, 0, 0, + 0, 1726, 1106, 881, 0, 0, 0, 0, 0, 0, + 2067, 0, 0, 2068, 2069, 2070, 2071, 0, 2072, 2073, + 2074, 2075, 2076, 2077, 1725, 0, 0, 0, 0, 0, + 0, 880, 0, 880, 0, 0, 2063, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 880, 0, 880, 0, + 2064, 0, 0, 2065, 0, 0, 0, 1107, 1097, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1725, 1107, 0, 0, 0, 0, 0, 0, 0, 1100, + 0, 0, 0, 0, 0, 0, 0, 0, 1099, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1726, 0, + 3269, 3270, 1637, 0, 0, 1100, 3274, 0, 0, 0, + 0, 0, 1107, 1099, 880, 0, 881, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1099, 872, + 0, 0, 0, 0, 0, 0, 3820, 0, 3303, 0, + 2066, 0, 881, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1097, 880, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1106, 0, 0, 0, 0, 880, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1106, + 0, 0, 0, 0, 872, 872, 0, 0, 0, 880, + 0, 0, 880, 1099, 0, 0, 0, 1106, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 2067, 0, 0, 2068, 2069, 2070, 2071, 881, 2072, 2073, + 2074, 2075, 2076, 2077, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1106, 0, 0, 0, 0, 1640, 0, + 0, 0, 0, 0, 0, 0, 1106, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1725, 0, 1106, + 0, 0, 0, 3945, 3946, 3947, 0, 0, 0, 0, + 0, 1106, 0, 0, 0, 1107, 0, 0, 0, 0, + 3956, 0, 0, 1099, 0, 0, 2048, 0, 0, 2049, + 1726, 0, 0, 2050, 2051, 2052, 0, 0, 0, 0, + 0, 0, 0, 3972, 0, 0, 0, 0, 0, 0, + 0, 0, 2053, 3982, 3984, 1106, 1106, 0, 3989, 0, + 2055, 0, 1100, 0, 0, 0, 0, 2056, 0, 0, + 2048, 0, 0, 2049, 0, 0, 0, 2050, 2051, 2052, + 0, 0, 0, 1097, 0, 0, 3514, 1100, 0, 0, + 0, 3520, 2057, 0, 1726, 0, 2053, 2205, 0, 0, + 2205, 0, 1100, 0, 2055, 0, 0, 0, 0, 0, + 0, 2056, 1726, 0, 872, 872, 0, 0, 0, 2039, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 2814, 0, 2814, 2814, 0, 0, 2057, 0, 0, 0, + 0, 0, 0, 3583, 0, 0, 3586, 0, 3588, 0, + 1097, 0, 0, 0, 0, 880, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 4067, 0, 0, 1332, 0, 0, 0, + 0, 0, 0, 0, 3609, 0, 3612, 1100, 3614, 0, + 0, 1097, 0, 0, 0, 0, 0, 1106, 0, 0, + 0, 0, 0, 2058, 0, 1725, 0, 0, 2059, 0, + 1725, 0, 1725, 0, 0, 0, 0, 0, 0, 1107, + 0, 0, 0, 0, 1097, 0, 0, 0, 3574, 0, + 2060, 2061, 0, 0, 0, 1725, 1107, 0, 1099, 0, + 0, 0, 0, 0, 2149, 2062, 0, 2058, 0, 0, + 0, 1107, 2059, 0, 0, 0, 0, 1725, 0, 2166, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 880, 2060, 2061, 880, 0, 0, 0, + 0, 0, 0, 0, 2063, 0, 0, 0, 0, 2062, + 0, 0, 0, 0, 0, 0, 0, 1100, 2064, 0, + 0, 2065, 0, 0, 0, 1099, 0, 0, 0, 0, + 0, 0, 4178, 4179, 4180, 0, 0, 0, 0, 0, + 0, 0, 0, 3704, 0, 0, 0, 0, 2063, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 2064, 1106, 0, 2065, 1099, 1106, 1106, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 880, 880, + 0, 0, 0, 0, 0, 0, 0, 0, 880, 1099, + 0, 0, 0, 0, 0, 0, 0, 0, 2066, 0, + 0, 0, 0, 0, 0, 0, 0, 880, 0, 0, + 0, 0, 0, 0, 1097, 0, 0, 0, 0, 1106, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 4083, 1097, 0, 1106, 0, 0, 0, 0, 0, 0, + 0, 0, 2066, 0, 0, 0, 0, 0, 0, 1097, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1106, 0, 0, 0, 2205, 0, + 0, 2979, 0, 2979, 0, 880, 0, 0, 2205, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 2067, 0, + 0, 2068, 2069, 2070, 2071, 1097, 2072, 2073, 2074, 2075, + 2076, 2077, 0, 0, 0, 0, 0, 0, 1097, 0, + 0, 0, 1100, 0, 0, 0, 0, 0, 0, 0, + 0, 1097, 0, 0, 0, 0, 0, 1107, 0, 0, + 0, 0, 2067, 1097, 0, 2068, 2069, 2070, 2071, 0, + 2072, 2073, 2074, 2075, 2076, 2077, 1107, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1099, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 2205, 0, 0, 0, 0, 1099, 1097, 1097, 1100, + 2048, 0, 0, 2049, 0, 1637, 0, 2050, 2051, 2052, + 0, 1637, 0, 0, 1099, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 2048, 4433, 2053, 2049, 0, 3580, + 0, 2050, 2051, 2052, 2055, 0, 4446, 0, 0, 0, + 1100, 2056, 0, 0, 0, 0, 0, 0, 0, 0, + 2053, 0, 0, 4142, 0, 0, 0, 0, 2055, 0, + 0, 1107, 0, 1107, 0, 2056, 2057, 4477, 0, 0, + 1099, 0, 0, 1100, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1099, 0, 0, 0, 1106, 0, 0, + 2057, 0, 0, 0, 0, 0, 1099, 0, 0, 0, + 2596, 0, 0, 0, 0, 0, 0, 0, 1099, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 880, 0, 0, + 0, 0, 1725, 0, 0, 0, 0, 0, 0, 1097, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 2675, 1099, 1099, 1107, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 880, 0, 1106, + 0, 0, 1106, 0, 0, 0, 0, 2058, 0, 880, + 0, 1640, 2059, 0, 0, 0, 0, 1640, 0, 0, + 0, 0, 0, 0, 0, 1107, 0, 0, 0, 0, + 0, 2058, 0, 0, 2060, 2061, 2059, 0, 0, 0, + 0, 880, 0, 0, 0, 0, 0, 0, 0, 2062, + 0, 0, 0, 0, 2979, 0, 0, 0, 2060, 2061, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 2062, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1100, 0, 4084, 0, 0, 2063, 0, + 0, 0, 0, 4088, 4089, 0, 4090, 0, 0, 0, + 1100, 0, 2064, 0, 4092, 2065, 4093, 4613, 4614, 4615, + 4616, 0, 2063, 0, 0, 1097, 0, 0, 1100, 1097, + 1097, 1106, 0, 1107, 1099, 0, 2064, 0, 0, 2065, + 0, 0, 0, 0, 4118, 4119, 0, 0, 1106, 0, + 880, 0, 0, 0, 2979, 0, 0, 0, 0, 0, + 0, 0, 2820, 1106, 0, 0, 0, 0, 1107, 0, + 4147, 0, 0, 4150, 0, 4152, 0, 0, 0, 0, + 0, 0, 0, 0, 1100, 0, 0, 4157, 0, 0, + 0, 1097, 0, 0, 0, 4164, 4165, 1100, 0, 0, + 0, 0, 2066, 0, 0, 1097, 0, 0, 0, 0, + 1100, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1100, 0, 0, 0, 2066, 4211, 0, 0, + 880, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1097, 0, 0, 0, + 0, 0, 0, 4226, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1100, 1100, 0, 4239, + 0, 0, 0, 0, 1107, 0, 0, 0, 0, 0, + 1099, 0, 0, 0, 1099, 1099, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1107, + 0, 0, 2067, 0, 0, 2068, 2069, 2070, 2071, 0, + 2072, 2073, 2074, 2075, 2076, 2077, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1107, 2067, 0, 0, 2068, + 2069, 2070, 2071, 0, 2072, 2073, 2074, 2075, 2076, 2077, + 0, 0, 0, 880, 0, 880, 1099, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1099, 1107, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1102, 0, 0, 0, 0, 0, 0, 0, 0, + 1106, 0, 0, 1106, 0, 1106, 0, 0, 0, 0, + 1106, 0, 880, 0, 0, 1103, 0, 1102, 0, 0, + 0, 1099, 0, 0, 0, 0, 0, 0, 1100, 0, + 0, 0, 0, 1487, 0, 0, 0, 0, 0, 1488, + 0, 1103, 0, 0, 0, 0, 1554, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1106, + 0, 1725, 0, 0, 0, 1555, 0, 0, 0, 1097, + 0, 2205, 0, 0, 0, 0, 0, 0, 1106, 0, + 0, 1490, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 4846, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1106, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1556, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1491, 0, 0, 0, 0, + 0, 0, 1492, 0, 0, 1493, 0, 0, 0, 0, + 0, 1097, 0, 0, 1097, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 2979, 1494, 0, 1106, 1100, 1106, 0, 0, 1100, 1100, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 2048, + 0, 0, 2049, 0, 0, 2979, 2050, 2051, 2052, 0, + 0, 0, 1557, 0, 0, 1495, 0, 0, 4522, 4523, + 0, 0, 0, 0, 0, 2053, 0, 0, 0, 0, + 0, 0, 0, 2055, 1099, 0, 0, 0, 0, 0, + 2056, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1100, 0, 0, 0, 0, 1725, 0, 0, 0, 0, + 1558, 0, 0, 1559, 1100, 2057, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1106, 0, 1560, 0, + 0, 880, 1497, 1097, 1102, 0, 0, 0, 0, 0, + 0, 0, 1498, 4565, 0, 880, 0, 0, 0, 0, + 1097, 1499, 0, 0, 0, 1100, 0, 4571, 1103, 1102, + 0, 0, 1561, 1500, 0, 1097, 1099, 1106, 0, 1099, + 0, 0, 0, 0, 1102, 0, 0, 0, 0, 0, + 0, 0, 0, 1103, 0, 0, 0, 0, 0, 0, + 0, 1107, 0, 0, 0, 5006, 1106, 0, 1103, 4589, + 4591, 1562, 0, 0, 1502, 1503, 1563, 0, 4595, 4596, + 5019, 0, 0, 4597, 0, 1332, 0, 0, 0, 4600, + 0, 0, 4603, 4604, 0, 0, 2058, 4608, 1564, 0, + 0, 2059, 0, 4612, 1565, 0, 0, 0, 0, 2979, + 0, 5056, 0, 2205, 0, 0, 0, 0, 1566, 0, + 0, 0, 0, 2060, 2061, 0, 0, 0, 0, 1102, + 0, 0, 0, 0, 0, 1106, 0, 0, 2062, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1103, 0, 0, 1106, 1308, 1099, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1106, 0, 1505, 0, 0, 1099, 0, 2063, 0, 0, + 0, 0, 0, 0, 4670, 0, 0, 0, 0, 0, + 1099, 2064, 0, 0, 2065, 0, 0, 0, 0, 0, + 1725, 0, 880, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1100, 0, + 0, 0, 5140, 0, 0, 0, 0, 0, 0, 1102, + 0, 0, 0, 0, 0, 0, 0, 0, 1107, 0, + 0, 0, 1097, 1105, 0, 1097, 0, 1097, 0, 0, + 1107, 0, 1097, 1103, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1106, 0, 0, 1105, + 0, 2066, 0, 0, 0, 0, 0, 0, 4736, 0, + 0, 0, 0, 0, 0, 0, 0, 1725, 0, 0, + 0, 1106, 0, 0, 0, 0, 0, 0, 0, 0, + 1100, 1097, 0, 1100, 0, 880, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1106, 0, 0, + 1097, 0, 5218, 0, 0, 0, 0, 0, 0, 0, + 0, 880, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1097, 0, 0, 0, 0, + 0, 0, 0, 1106, 4774, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1107, 0, + 0, 2067, 0, 0, 2068, 2069, 2070, 2071, 0, 2072, + 2073, 2074, 2075, 2076, 2077, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1099, 0, 0, + 1099, 0, 1099, 0, 0, 0, 0, 1099, 0, 1107, + 0, 0, 0, 0, 0, 1097, 0, 1097, 0, 0, + 0, 0, 1100, 0, 0, 0, 0, 0, 0, 0, + 0, 1107, 0, 0, 0, 0, 880, 0, 0, 1100, + 0, 0, 0, 1106, 1102, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1100, 0, 1099, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1103, 0, + 0, 0, 0, 0, 0, 1099, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1099, 1107, 0, 0, 0, 0, 0, 0, 1097, 0, + 0, 1102, 0, 0, 0, 0, 0, 0, 0, 1725, + 623, 4878, 4879, 0, 0, 4880, 1105, 0, 0, 0, + 0, 0, 0, 0, 0, 1103, 0, 624, 0, 0, + 0, 0, 1106, 0, 0, 0, 0, 0, 0, 1097, + 0, 1105, 1102, 0, 0, 0, 0, 0, 0, 0, + 625, 0, 4915, 4916, 0, 0, 1105, 1106, 0, 0, + 1099, 0, 1099, 626, 0, 0, 1103, 0, 1097, 0, + 0, 4927, 0, 1725, 627, 1102, 0, 0, -870, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1725, 0, 0, 0, 0, 628, 0, 0, 1103, + 0, 0, 629, 0, 0, 0, 0, 0, 0, 0, + 0, 4843, 0, 1107, 0, 0, 0, 0, 0, 630, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 631, 0, 0, 0, 0, 0, 0, 1097, 0, 632, + 0, 1105, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 633, 0, 1099, 0, 0, 0, 0, 1097, 634, + 0, 1100, 1107, 635, 1100, 0, 1100, 0, 0, 0, + 0, 1100, 1097, 0, 0, 0, 0, 0, 0, 0, + 0, 0, -1099, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1106, 1099, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 636, + 1100, 0, 0, 1099, 0, 0, 0, 0, -587, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1100, + 0, 1106, 0, 0, 0, 1106, 0, 0, 0, 0, + 0, 1105, 0, 0, 0, 1102, 0, 0, 0, 0, + 0, 0, 0, 0, 1100, 0, 0, 0, 637, 0, + 0, 638, 1102, 0, 0, 0, 0, 2820, 1097, 1103, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1102, 639, 1099, 0, 0, 0, 1103, 0, 0, 0, + 2979, 0, 0, 1097, 5110, 640, 0, 0, 0, 0, + 0, 0, -458, 1099, 1103, 0, 0, 0, 2039, 0, + 0, 0, 0, 0, 0, 0, 0, 1099, 0, 1097, + 0, 641, 0, 0, 1100, 0, 1100, 0, 0, 0, + 642, 0, 0, 0, 0, 0, 1102, -458, 0, 0, + 643, 0, 0, 0, 0, 0, 0, 0, 0, 1102, + 0, 0, 0, 0, 0, 1097, 0, 0, 0, 644, + 1103, 0, 1102, 0, 0, 0, 645, 5159, 0, 0, + 1106, 0, -458, 1103, 1102, 646, 647, 0, 648, 649, + 0, 0, 1106, 0, 0, 0, 1103, 0, 0, 650, + 0, 0, 0, 0, 651, 0, 0, 0, 1103, 0, + 0, 652, 0, 0, 653, 0, 0, 654, 0, 0, + 5196, 0, 0, 0, 0, 0, 2979, 1100, 1102, 1102, + -458, 0, 0, 1099, 0, 0, 0, 0, 0, 0, + 0, 191, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1107, 1103, 1103, 0, 1097, 0, 0, 1099, 0, + 0, 0, 0, 0, 0, 0, 1105, 0, 1100, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1099, 0, 0, 0, 0, 192, + 1107, 0, 0, 0, 0, 0, 0, 1100, 0, 0, + 0, 0, 0, 0, 193, 0, 0, 0, 0, 0, + 1106, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1099, 0, 194, 0, 0, 0, 0, 0, 195, 0, + 0, 0, 4915, 1105, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1107, 0, 196, 0, 0, 1107, 1107, + 0, 1106, 0, 0, 1097, 0, 197, 0, 5299, 0, + 0, 0, 0, 0, 0, 198, 1100, 0, 0, 0, + 1102, 0, 0, 1106, 1105, 0, 0, 199, 0, 1097, + 0, 0, 200, 0, 0, 0, 0, 1100, 0, 201, + 0, 0, 0, 0, 1103, 0, 0, 0, 0, 0, + 0, 1100, 0, 0, 0, 0, 0, 1105, 202, 0, + 1099, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 203, 0, 5353, 0, 0, 0, 0, + 0, 0, 0, 1106, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 204, 0, 0, 0, 0, 0, + 0, 0, 0, 4843, 1107, 0, 0, 0, 0, 0, + 5381, 5381, 5381, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 4915, + 0, 0, 0, 0, 205, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1100, 0, 1099, + 0, 0, 0, 0, 0, 1097, 1102, 206, 0, 0, + 1102, 1102, 0, 0, 0, 0, 0, 207, 208, 0, + 0, 209, 1100, 0, 1099, 0, 1487, 0, 0, 0, + 1103, 0, 1488, 0, 1103, 1103, 0, 0, 0, 1554, + 0, 0, 0, 0, 0, 0, 0, 210, 1100, 0, + 211, 0, 0, 1097, 212, 1106, 213, 1097, 1555, 0, + 5442, 0, 0, 214, 0, 0, 215, 0, 0, 0, + 0, 0, 1102, 0, 1490, 0, 0, 1105, 5381, 0, + 0, 0, 0, 0, 1100, 216, 1102, 0, 0, 0, + 0, 0, 217, 0, 1105, 0, 1103, 218, 219, 0, + 0, 220, 0, 0, 1106, 221, 0, 0, 1556, 0, + 1103, 0, 1105, 0, 0, 222, 0, 0, 0, 0, + 223, 0, 0, 0, 0, 0, 0, 1102, 1491, 0, + 0, 0, 0, 224, 0, 1492, 0, 0, 1493, 0, + 0, 0, 0, 0, 0, 0, 225, 0, 0, 1107, + 0, 1103, 0, 0, 0, 0, 0, 0, 0, 0, + 1099, 0, 0, 0, 1494, 0, 0, 0, 1105, 0, + 0, 0, 0, 674, 1100, 0, 0, 0, 675, 0, + 0, 1105, 0, 0, 0, 0, 0, 0, 5534, 0, + 0, 0, 1097, 0, 1105, 1557, 0, 0, 1495, 0, + 0, 0, 0, 0, 1097, 0, 1105, 0, 1099, 0, + 0, 0, 1099, 676, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 5381, 0, 0, 677, 0, 0, 0, + 0, 0, 0, 5561, 0, 0, 0, 0, 0, 0, + 0, 678, 1106, 1558, 0, 0, 1559, 0, 0, 0, + 1105, 1105, 0, 0, 0, 0, 0, 0, 0, 679, + 0, 1560, 0, 0, 0, 1497, 0, 0, 0, 0, + 0, 0, 0, 1100, 0, 1498, 0, 0, 0, 0, + 0, 0, 680, 0, 1499, 0, 0, 0, 0, 0, + 0, 0, 0, 681, 0, 1561, 1500, 0, 1100, 0, + 0, 0, 682, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 683, 0, 0, 0, 0, 684, + 0, 0, 1097, 0, 0, 0, 685, 0, 0, 0, + 1102, 0, 0, 0, 3184, 0, 0, 1502, 1503, 1563, + 0, 0, 0, 0, 0, 686, 0, 1099, 0, 0, + 0, 0, 0, 0, 1103, 0, 0, 0, 0, 1099, + 0, 1564, 0, 1097, 0, 0, 0, 3185, 1106, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1566, 0, 0, 0, 1097, 0, 0, 0, 0, + 0, 687, 1105, 1106, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1102, 0, 0, 1102, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 688, 1106, 0, 1100, 1505, 1103, 0, 0, 1103, + 0, 0, 0, 0, 689, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 690, 1097, 0, 0, 0, 0, + 0, 0, 0, 0, 207, 691, 0, 0, 692, 0, + 0, 0, 0, 0, 0, 0, 0, 1099, 0, 0, + 0, 0, 1100, 0, 0, 1106, 1100, 0, 0, 0, + 1106, 1106, 0, 0, 693, 0, 0, 694, 0, 0, + 0, 695, 0, 696, 0, 0, 0, 0, 0, 0, + 697, 0, 0, 698, 0, 0, 0, 0, 1099, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 699, 0, 1102, 0, 0, 0, 1105, 700, + 1099, 0, 1105, 1105, 0, 701, 0, 0, 702, 0, + 0, 1102, 703, 0, 0, 0, 0, 0, 1103, 0, + 704, 0, 705, 0, 0, 0, 1102, 706, 0, 0, + 0, 0, 0, 0, 0, 1103, 955, 1097, 0, 0, + 707, 956, 0, 0, 0, 0, 0, 0, 0, 0, + 1103, 0, 0, 708, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1105, 0, 1106, 0, 0, 0, + 1099, 0, 0, 0, 0, 0, 957, 0, 1105, 0, + 0, 1100, 0, 0, 0, 0, 1097, 0, 0, 958, + 959, 0, 0, 1100, 0, 0, 0, 0, 0, 0, + 960, 0, 0, 0, 961, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1105, + 0, 0, 962, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 963, 0, 0, 0, 0, + 0, 0, 0, 2079, 0, 0, 964, 0, 0, 0, + 0, 0, 0, 0, 0, 965, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 966, 0, 0, + 0, 0, 967, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1099, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 968, 0, + 0, 1100, 0, 0, 0, 2079, 0, 0, 0, 0, + 0, 0, 0, 0, 1097, 0, 0, 0, 0, 0, + 0, 0, 0, 969, 0, 0, 0, 0, 0, 0, + 0, 1099, 0, 1102, 0, 0, 1102, 0, 1102, 0, + 0, 0, 1100, 1102, 970, 0, 0, 0, 0, 0, + 0, 1106, 0, 0, 0, 0, 0, 1103, 0, 0, + 1103, 0, 1103, 0, 1100, 0, 0, 1103, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 971, 0, 0, 0, 0, 0, + 0, 0, 1102, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 972, 0, 0, + 0, 1102, 1105, 0, 0, 0, 1103, 207, 973, 0, + 0, 974, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1100, 1103, 1102, 0, 0, 0, + 1097, 0, 0, 0, 0, 0, 0, 975, 0, 0, + 976, 0, 0, 0, 977, 0, 978, 0, 0, 0, + 1103, 0, 0, 979, 0, 1097, 980, 0, 0, 1099, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 981, 0, 0, 0, 0, + 0, 0, 982, 0, 1105, 0, 0, 1105, 983, 0, + 0, 984, 0, 0, 1097, 985, 1102, 0, 1102, 0, + 0, 0, 0, 986, 0, 987, 0, 0, 0, 0, + 988, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1103, 0, 1103, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 989, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1100, 1097, 0, 0, + 0, 0, 1097, 1097, 0, 0, 0, 0, 0, 0, + 0, 0, 2079, 0, 0, 0, 2079, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1099, 0, 0, 0, 1102, + 0, 0, 0, 0, 0, 1100, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1105, 0, 0, 0, + 1099, 0, 0, 1103, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1105, 0, 0, 0, 0, 0, 0, + 1102, 0, 0, 0, 0, 0, 0, 0, 1105, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1099, + 0, 0, 0, 0, 1103, 0, 0, 0, 0, 1102, + 0, 0, 0, 0, 0, 0, 0, 0, 1097, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 1061, 0, 0, 0, - 0, 0, 0, 0, 1060, 0, 0, 0, 0, 1063, + 0, 0, 1099, 0, 0, 0, 0, 1099, 1099, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1068, 0, 0, 1060, 0, 0, 1064, 0, - 0, 0, 0, 0, 0, 0, 0, 1063, 1058, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1102, 0, + 0, 0, 0, 1100, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1102, + 0, 0, 1103, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1102, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1103, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 1064, 1066, 0, 0, - 1063, 1066, 1066, 0, 0, 0, 0, 0, 1063, 0, - 0, 0, 0, 0, 1907, 0, 0, 0, 0, 1064, - 1058, 0, 0, 0, 0, 0, 0, 1064, 0, 0, - 1060, 0, 0, 0, 0, 1061, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1061, - 0, 0, 0, 1066, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1066, 0, 1063, 0, 0, - 0, 1907, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1063, 1064, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1063, 0, - 0, 0, 0, 0, 1064, 1066, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 1064, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1060, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1058, 0, 0, 0, 0, 0, + 0, 0, 0, 1099, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1060, 0, 0, 1061, 0, 0, 0, + 0, 0, 0, 0, 0, 1105, 0, 0, 1105, 1100, + 1105, 0, 0, 1097, 0, 1105, 0, 0, 0, 1102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1063, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1100, 0, 0, 0, 0, 0, + 0, 0, 0, 1103, 1102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1064, 0, 0, 0, 1063, 0, 0, - 0, 0, 0, 0, 0, 0, 1061, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 1064, 0, 0, 0, - 0, 0, 0, 1063, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1105, 0, 0, 0, 1103, 0, + 1102, 0, 0, 1100, 0, 0, 2079, 0, 0, 0, + 0, 0, 0, 1105, 0, 0, 0, 0, 0, 0, + 0, 2079, 0, 0, 1103, 2802, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1102, 0, 1105, 2079, + 0, 2079, 2079, 0, 2079, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1100, 0, 0, 0, + 1103, 1100, 1100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1064, 0, 0, 0, 0, 1058, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1063, 0, - 0, 0, 0, 0, 1066, 0, 0, 0, 0, 0, - 0, 0, 1058, 0, 0, 0, 0, 1064, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 1060, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 2079, + 0, 0, 0, 0, 0, 0, 0, 0, 1099, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1105, 0, + 1105, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1058, 0, 0, 0, 0, 0, 0, 0, + 1103, 0, 0, 0, 2079, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 2079, 0, 0, 0, + 0, 2079, 0, 0, 0, 0, 0, 1100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1061, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1061, 0, 0, 0, 1066, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 1063, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 1058, 0, 0, 0, - 0, 1058, 1058, 0, 0, 1064, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1060, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1105, 0, 0, 0, 0, 0, 0, 1103, + 1102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1060, 0, 0, 0, 0, + 0, 1105, 0, 0, 1103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1063, 0, 0, 0, 1066, - 0, 0, 0, 0, 0, 0, 1061, 0, 0, 0, - 0, 0, 0, 0, 1064, 1060, 1066, 0, 0, 1063, - 0, 0, 0, 1058, 0, 0, 0, 0, 0, 1066, - 0, 0, 0, 0, 0, 0, 0, 0, 1064, 0, - 0, 0, 0, 0, 1061, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1061, 0, 0, 0, 1060, - 0, 0, 0, 0, 1060, 1060, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1907, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1907, - 0, 0, 0, 2667, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 1907, 1907, 1907, - 1061, 0, 1907, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 1063, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1064, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1907, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 1060, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 1063, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1907, 0, 1064, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1058, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1061, 0, 0, 0, 0, 1066, 0, 0, 1066, - 0, 1066, 0, 0, 0, 0, 1066, 0, 0, 0, + 1105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1105, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1100, 0, 0, 1105, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1061, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1066, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 1907, 0, 0, - 0, 1063, 1066, 0, 0, 0, 0, 0, 0, 1907, - 0, 0, 1063, 0, 1907, 0, 0, 0, 0, 0, - 1064, 0, 0, 0, 0, 0, 0, 1066, 0, 0, - 0, 1064, 0, 0, 0, 0, 0, 0, 0, 0, + 1103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1102, 0, 0, 0, 1102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1060, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1103, 0, + 0, 0, 1103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 1066, 1061, 1066, 0, + 0, 0, 0, 0, 0, 0, 1105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 1063, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1064, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1105, 0, + 0, 0, 0, 1102, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1102, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1103, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1063, 0, 0, 0, 0, 1066, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1064, 0, 1063, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 1066, 0, 0, - 0, 0, 0, 0, 1064, 0, 0, 0, 0, 0, - 1061, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1066, 0, 0, 0, 0, 0, 0, 0, 1066, 0, - 0, 0, 0, 0, 0, 1061, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1063, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1064, - 0, 0, 0, 0, 0, 1061, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 1066, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1066, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1066, 1061, - 0, 0, 0, 0, 1061, 1061, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1063, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1064, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1063, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1064, 0, 1066, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1102, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1105, 0, 0, + 0, 0, 0, 0, 0, 0, 1102, 0, 1103, 0, + 0, 0, 0, 0, 2079, 0, 0, 0, 0, 0, + 0, 0, 1105, 0, 0, 0, 0, 0, 0, 0, + 1103, 0, 0, 0, 0, 0, 2079, 2079, 0, 2079, + 0, 0, 2802, 2802, 0, 3560, 0, 2802, 0, 0, + 0, 2079, 0, 0, 2079, 0, 0, 0, 0, 2079, + 0, 0, 0, 0, 0, 2079, 0, 0, 0, 0, + 2079, 0, 0, 0, 0, 0, 1102, 0, 2079, 2079, + 2079, 2079, 0, 0, 0, 2802, 2802, 0, 2079, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 1061, 1066, 0, 0, + 1103, 0, 0, 0, 0, 0, 2079, 0, 2079, 0, + 0, 0, 0, 0, 0, 2079, 2079, 2079, 2079, 2079, + 2079, 2079, 2079, 2079, 2079, 2079, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1066, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1105, 0, + 0, 0, 2079, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1066, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1102, 0, + 0, 0, 0, 0, 0, 0, 1105, 0, 0, 0, + 1105, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 1063, 0, 0, + 0, 0, 0, 2079, 0, 0, 0, 0, 0, 0, + 0, 1103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 1064, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1907, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1907, 0, 1907, 0, 0, 2667, 2667, 0, 3386, 0, - 2667, 0, 0, 0, 1907, 0, 1066, 1907, 0, 0, - 0, 0, 1907, 0, 0, 0, 0, 0, 1907, 0, - 0, 0, 0, 1907, 0, 0, 0, 0, 0, 0, - 0, 1907, 1907, 1907, 1907, 0, 0, 0, 2667, 2667, - 0, 1907, 0, 0, 0, 0, 0, 0, 1061, 0, - 0, 0, 0, 1907, 0, 1907, 0, 0, 0, 0, - 1063, 0, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, - 1907, 1907, 1907, 0, 0, 0, 0, 0, 0, 1064, - 0, 0, 0, 0, 0, 1063, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1907, 0, 0, 0, 1064, 1066, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1907, 0, 0, 0, 0, 1063, 0, 0, 0, 1066, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1064, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1105, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1063, - 0, 0, 0, 0, 1063, 1063, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1064, 0, - 0, 0, 0, 1064, 1064, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 1907, 0, 0, + 0, 0, 0, 0, 0, 1102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 1066, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 1063, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 1066, 0, 0, 0, - 0, 0, 0, 0, 0, 1064, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1102, 0, 0, 2079, 2079, 1105, 0, 0, 2079, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1103, 1102, 0, 1105, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 2079, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1103, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1103, + 0, 0, 0, 0, 0, 0, 0, 0, 1105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1102, 0, + 0, 0, 0, 1102, 1102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1103, 0, 0, 0, 0, 1103, 1103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1066, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1066, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1907, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1063, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 1064, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1105, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1102, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 2079, + 0, 0, 0, 0, 0, 2079, 0, 0, 0, 0, + 0, 0, 0, 1103, 0, 0, 0, 0, 0, 1105, + 0, 0, 0, 0, 0, 3560, 3560, 0, 0, 2802, + 2802, 2802, 2802, 0, 0, 2802, 2802, 2802, 2802, 2802, + 2802, 2802, 2802, 2802, 2802, 2802, 3560, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 2079, 0, + 0, 2079, 0, 2079, 0, 0, 3560, 3560, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 2079, 2802, 2802, 2079, 0, 2079, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 1066, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1066, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1066, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1102, 0, 0, 0, 0, 2079, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1907, 0, 0, 0, 0, - 0, 1907, 0, 0, 0, 0, 0, 0, 0, 0, - 1066, 0, 0, 0, 0, 0, 0, 0, 0, 3386, - 3386, 0, 0, 2667, 2667, 2667, 2667, 0, 0, 2667, - 2667, 2667, 2667, 2667, 2667, 2667, 2667, 2667, 2667, 2667, - 3386, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1907, 0, 0, 1907, 0, 1907, 0, 0, - 0, 3386, 3386, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 1907, 2667, 2667, 1907, - 0, 1907, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1066, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1907, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1066, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1907, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1105, 0, 0, 0, 0, 1105, 1105, 0, 0, 0, + 0, 2802, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 1066, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -7537,38 +7632,33 @@ static const yytype_int16 yytable[] = 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 2667, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1066, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1066, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 2079, + 0, 0, 0, 2079, 2079, 2079, 0, 2079, 2079, 0, + 0, 0, 0, 0, 3560, 3560, 3560, 3560, 0, 0, + 0, 0, 3560, 3560, 3560, 3560, 3560, 3560, 3560, 3560, + 3560, 3560, 3560, 2079, 2079, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 2079, 0, 0, 2079, 0, 2079, 0, 0, + 0, 0, 2079, 0, 0, 3560, 3560, 0, 0, 2079, + 2079, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1066, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 2079, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 2079, 0, 0, 0, 0, 1105, 0, 0, 0, + 0, 0, 0, 0, 2079, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1066, - 0, 0, 0, 0, 1066, 1066, 0, 0, 0, 0, - 1907, 0, 0, 0, 1907, 1907, 1907, 1907, 1907, 0, - 0, 0, 0, 0, 3386, 3386, 3386, 3386, 0, 0, - 0, 0, 3386, 3386, 3386, 3386, 3386, 3386, 3386, 3386, - 3386, 3386, 3386, 1907, 1907, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1907, 0, 0, 1907, 0, 1907, 0, 0, 0, 1907, - 0, 0, 3386, 3386, 0, 0, 1907, 1907, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 1066, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1907, 0, 0, 0, 0, 0, - 0, 1907, 1907, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 1907, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1907, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -7582,43 +7672,40 @@ static const yytype_int16 yytable[] = 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 3560, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1066, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 3386, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 2079, 2079, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1907, 1907, 0, 0, 0, 0, 0, 0, 0, + 2079, 0, 0, 0, 0, 0, 2079, 2802, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 2079, 0, 2079, 0, 0, 0, + 2079, 2079, 2079, 0, 0, 2079, 0, 0, 2079, 2079, + 0, 0, 0, 2079, 0, 0, 0, 2079, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1907, 0, - 0, 0, 0, 1907, 2667, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1907, 0, - 1907, 0, 0, 0, 0, 1907, 1907, 1907, 0, 0, - 1907, 0, 0, 1907, 1907, 0, 0, 0, 1907, 0, - 0, 0, 1907, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 2079, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1907, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1907, 0, 0, 0, 0, 0, 0, + 0, 2079, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1907, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 2079, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -7627,9954 +7714,10523 @@ static const yytype_int16 yytable[] = 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 3386, 2667, + 0, 0, 0, 0, 0, 0, 0, 0, 3560, 2802, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1907, 1907, 1907, 0, 0, 0, - 0, 0, 0, 0, 2667, 4840, 0, 0, 0, 0, + 0, 0, 0, 2079, 2079, 2079, 0, 0, 0, 0, + 0, 0, 0, 2802, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 224, 225, 226, 227, 228, 229, 230, 231, 0, 233, - 234, 235, 1907, 1907, 0, 0, 0, 0, 0, 236, - 237, 0, 238, 239, 240, 1907, 241, 242, 243, 0, - 0, 0, 0, 0, 0, 248, 249, 250, 251, 252, - 0, 0, 253, 254, 0, 0, 257, 0, 258, 259, - 260, 261, 0, 0, 0, 0, 263, 264, 265, 266, - 267, 0, 268, 269, 270, 0, 271, 272, 273, 274, - 275, 276, 0, 0, 277, 278, 279, 0, 0, 0, - 0, 0, 0, 0, 280, 281, 282, 283, 284, 285, - 0, 0, 288, 0, 289, 0, 290, 291, 292, 293, - 294, 295, 0, 296, 297, 298, 299, 0, 0, 300, - 301, 302, 303, 304, 0, 305, 306, 307, 0, 308, - 309, 310, 0, 311, 312, 313, 314, 0, 316, 317, - 318, 0, 0, 320, 0, 321, 322, 0, 324, 0, - 325, 0, 326, 0, 0, 0, 327, 328, 329, 330, - 0, 331, 0, 0, 0, 334, 0, 335, 336, 337, - 338, 339, 0, 340, 341, 342, 343, 0, 344, 345, - 346, 347, 348, 349, 0, 350, 0, 0, 352, 353, - 354, 355, 0, 3386, 0, 0, 0, 359, 0, 0, - 360, 0, 361, 362, 363, 364, 365, 2667, 0, 366, - 3386, 0, 368, 0, 1907, 369, 370, 371, 0, 0, - 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, - 382, 383, 384, 385, 386, 387, 0, 0, 0, 390, - 391, 392, 0, 0, 394, 395, 0, 396, 0, 0, - 398, 0, 400, 401, 402, 0, 403, 404, 0, 0, - 405, 406, 407, 0, 1907, 408, 0, 0, 410, 0, - 0, 412, 413, 414, 415, 416, 417, 418, 419, 420, - 0, 421, 422, 0, 424, 0, 426, 427, 428, 0, - 429, 430, 431, 432, 433, 434, 435, 436, 437, 0, - 439, 440, 441, 442, 0, 443, 444, 445, 446, 447, - 448, 449, 450, 451, 452, 453, 454, 0, 455, 456, - 0, 457, 458, 459, 0, 461, 462, 463, 464, 465, - 466, 467, 468, 469, 0, 470, 471, 472, 473, 474, - 0, 475, 476, 0, 478, 479, 0, 480, 481, 0, - 483, 0, 484, 485, 486, 487, 488, 489, 490, 491, - 492, 493, 494, 495, 0, 0, 497, 498, 0, 499, - 0, 500, 501, 502, 503, 504, 0, 3386, 0, 2667, - 0, 507, 508, 0, 510, 0, 0, 512, 513, 514, - 515, 516, 517, 518, 0, 0, 519, 520, 521, 522, - 523, 0, 0, 524, 525, 526, 527, 528, 0, 1907, - 0, 531, 0, 532, 533, 534, 535, 0, 0, 536, - 0, 0, 537, 538, 539, 540, 541, 542, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 554, - 555, 556, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1907, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1907, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 1907, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 2667, 2667, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1907, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 800, 1177, 617, 1178, 1179, 1180, 676, 1181, 0, 0, - 3386, 3386, 0, 0, 0, 224, 225, 226, 227, 228, - 229, 230, 231, 2761, 233, 234, 235, 0, 0, 0, - 0, 1182, 0, 0, 236, 237, 1907, 238, 239, 240, - 801, 241, 242, 243, 244, 1183, 802, 1184, 1185, 0, - 248, 249, 250, 251, 252, 1186, 1187, 253, 254, 1188, - 1189, 257, 0, 258, 259, 260, 261, 1190, 0, 1191, - 0, 263, 264, 265, 266, 267, 804, 268, 269, 270, - 0, 271, 272, 273, 274, 275, 276, 0, 805, 277, - 278, 279, 1192, 1193, 1194, 1195, 1196, 1197, 1198, 280, - 281, 282, 283, 284, 285, 1199, 1200, 288, 1201, 289, - 0, 290, 291, 292, 293, 294, 295, 0, 296, 297, - 298, 299, 2762, 0, 300, 301, 1039, 303, 304, 0, - 305, 306, 307, 0, 308, 309, 310, 0, 311, 312, - 313, 314, 1202, 316, 317, 318, 1203, 1204, 320, 0, - 321, 322, 1205, 324, 0, 325, 0, 326, 807, 0, - 808, 327, 328, 329, 330, 0, 331, 1206, 0, 1207, - 334, 0, 335, 336, 337, 338, 339, 809, 340, 341, - 342, 343, 0, 344, 345, 346, 347, 348, 349, 0, - 350, 810, 351, 352, 353, 354, 355, 1208, 1209, 0, - 1210, 0, 359, 811, 812, 360, 813, 361, 362, 363, - 364, 365, 0, 0, 366, 1211, 814, 368, 815, 0, - 369, 370, 371, 1212, 1213, 372, 373, 374, 375, 376, - 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, - 387, 1214, 816, 1215, 390, 391, 392, 393, 1216, 394, - 395, 817, 396, 1217, 1218, 398, 1219, 400, 401, 402, - 0, 403, 404, 0, 0, 1220, 406, 407, 0, 0, - 408, 409, 818, 410, 819, 1221, 412, 413, 414, 415, - 416, 417, 418, 419, 420, 0, 421, 422, 1222, 424, - 425, 426, 427, 428, 0, 429, 430, 431, 432, 433, - 434, 435, 436, 437, 1223, 439, 440, 441, 442, 0, - 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, - 453, 454, 0, 455, 456, 820, 457, 458, 459, 1224, - 461, 462, 463, 464, 465, 466, 467, 468, 469, 0, - 470, 471, 472, 473, 474, 1225, 475, 476, 477, 478, - 479, 821, 480, 481, 1226, 483, 0, 484, 485, 486, - 487, 488, 489, 490, 491, 492, 493, 494, 495, 1227, - 0, 497, 498, 0, 499, 822, 500, 501, 502, 503, - 504, 0, 1228, 1229, 0, 0, 507, 508, 1230, 510, - 1231, 1232, 512, 513, 514, 515, 516, 517, 518, 0, - 1233, 519, 520, 521, 522, 523, 1234, 0, 524, 525, - 526, 527, 528, 529, 1235, 2763, 531, 823, 532, 533, - 534, 535, 0, 0, 536, 0, 0, 537, 538, 539, - 540, 541, 542, 543, 1236, 1237, 1238, 1239, 548, 1240, - 1241, 1242, 1243, 553, 554, 555, 556, 1244, 0, 0, - 0, 0, 0, 0, 1245, 1246, 2764, 0, 0, 0, - 1248, 0, 0, 0, 1249, 2765, 800, 1177, 617, 1178, - 1179, 1180, 676, 1181, 0, 0, 0, 0, 0, 0, - 0, 224, 225, 226, 227, 228, 229, 230, 231, 0, - 233, 234, 235, 0, 0, 0, 0, 1182, 0, 0, - 236, 237, 0, 238, 239, 240, 801, 241, 242, 243, - 244, 1183, 802, 1184, 1185, 0, 248, 249, 250, 251, - 252, 1186, 1187, 253, 254, 1188, 1189, 257, 0, 258, - 259, 260, 261, 1190, 0, 1191, 0, 263, 264, 265, - 266, 267, 804, 268, 269, 270, 0, 271, 272, 273, - 274, 275, 276, 0, 805, 277, 278, 279, 1192, 1193, - 1194, 1195, 1196, 1197, 1198, 280, 281, 282, 283, 284, - 285, 1199, 1200, 288, 1201, 289, 0, 290, 291, 292, - 293, 294, 295, 0, 296, 297, 298, 299, 0, 0, - 300, 301, 1039, 303, 304, 0, 305, 306, 307, 0, - 308, 309, 310, 0, 311, 312, 313, 314, 1202, 316, - 317, 318, 1203, 1204, 320, 0, 321, 322, 1205, 324, - 0, 325, 0, 326, 807, 0, 808, 327, 328, 329, - 330, 0, 331, 1206, 0, 1207, 334, 0, 335, 336, - 337, 338, 339, 809, 340, 341, 342, 343, 0, 344, - 345, 346, 347, 348, 349, 0, 350, 810, 351, 352, - 353, 354, 355, 1208, 1209, 0, 1210, 0, 359, 811, - 812, 360, 813, 361, 362, 363, 364, 365, 0, 0, - 366, 1211, 814, 368, 815, 0, 369, 370, 371, 1212, - 1213, 372, 373, 374, 375, 376, 377, 378, 379, 380, - 381, 382, 383, 384, 385, 386, 387, 1214, 816, 1215, - 390, 391, 392, 393, 1216, 394, 395, 817, 396, 1217, - 1218, 398, 1219, 400, 401, 402, 0, 403, 404, 0, - 0, 1220, 406, 407, 0, 0, 408, 409, 818, 410, - 819, 1221, 412, 413, 414, 415, 416, 417, 418, 419, - 420, 0, 421, 422, 1222, 424, 425, 426, 427, 428, - 0, 429, 430, 431, 432, 433, 434, 435, 436, 437, - 1223, 439, 440, 441, 442, 0, 443, 444, 445, 446, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 2079, 2079, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 2079, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 3560, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 2802, 0, + 0, 3560, 0, 0, 0, 2079, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 2079, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 2079, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 3560, 0, 2802, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 2079, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 2079, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 2079, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 2079, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 2802, 2802, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 3560, 3560, 0, 0, 0, 2079, + 0, 0, 0, 0, 0, 0, 0, 0, 228, 0, + 1223, 669, 0, 1224, 1225, 1226, 729, 1227, 0, 0, + 0, 0, 0, 0, 0, 0, 2079, 229, 230, 231, + 232, 233, 234, 235, 236, 1631, 237, 238, 239, 0, + 0, 0, 0, 1228, 0, 0, 240, 241, 0, 242, + 243, 244, 245, 246, 247, 248, 249, 1229, 251, 1230, + 1231, 0, 254, 255, 256, 257, 258, 259, 1232, 1233, + 260, 261, 1234, 1235, 264, 0, 265, 266, 267, 268, + 1236, 0, 1237, 0, 271, 272, 273, 274, 275, 276, + 277, 278, 279, 0, 280, 281, 282, 283, 284, 285, + 0, 286, 287, 288, 289, 1238, 1239, 1240, 1241, 1242, + 1243, 1244, 291, 292, 293, 294, 295, 296, 1245, 1246, + 299, 1247, 300, 0, 301, 302, 303, 304, 305, 306, + 0, 307, 308, 309, 310, 1632, 0, 311, 312, 1078, + 314, 315, 0, 316, 317, 318, 0, 319, 320, 321, + 0, 322, 323, 324, 325, 1248, 327, 328, 329, 330, + 1249, 1250, 332, 0, 333, 334, 1251, 336, 0, 337, + 0, 338, 339, 0, 340, 341, 342, 343, 344, 0, + 345, 1252, 0, 1253, 348, 349, 0, 350, 351, 352, + 353, 354, 355, 356, 357, 358, 359, 0, 360, 361, + 362, 363, 364, 365, 366, 0, 367, 368, 369, 370, + 371, 372, 373, 1254, 1255, 0, 1256, 0, 377, 378, + 379, 380, 381, 382, 383, 384, 385, 386, 0, 0, + 387, 1257, 389, 390, 391, 0, 392, 393, 394, 1258, + 1259, 395, 396, 397, 398, 399, 400, 401, 402, 403, + 404, 405, 406, 407, 408, 409, 410, 1260, 412, 1261, + 414, 415, 416, 417, 418, 419, 420, 421, 1262, 423, + 1263, 424, 425, 426, 427, 1264, 1265, 429, 1266, 431, + 432, 433, 0, 434, 435, 0, 0, 1267, 437, 438, + 0, 0, 439, 440, 441, 442, 443, 444, 1268, 446, 447, 448, 449, 450, 451, 452, 453, 454, 0, 455, - 456, 820, 457, 458, 459, 1224, 461, 462, 463, 464, - 465, 466, 467, 468, 469, 39, 470, 471, 472, 473, - 474, 1225, 475, 476, 477, 478, 479, 821, 480, 481, - 1226, 483, 0, 484, 485, 486, 487, 488, 489, 490, - 491, 492, 493, 494, 495, 1227, 0, 497, 498, 43, - 499, 822, 500, 501, 502, 503, 504, 0, 1228, 1229, - 0, 0, 507, 508, 1230, 510, 1231, 1232, 512, 513, - 514, 515, 516, 517, 518, 0, 1233, 519, 520, 521, - 522, 523, 1234, 0, 524, 525, 526, 527, 528, 1113, - 1235, 0, 531, 823, 532, 533, 534, 535, 0, 0, - 536, 0, 48, 537, 538, 539, 540, 541, 542, 543, - 1236, 1237, 1238, 1239, 548, 1240, 1241, 1242, 1243, 553, - 554, 555, 556, 1244, 0, 49, 0, 0, 0, 0, - 1245, 1246, 0, 0, 0, 0, 1248, 0, 0, 0, - 1249, 4903, 800, 1177, 617, 1178, 1179, 1180, 676, 1181, - 0, 0, 0, 0, 0, 0, 0, 224, 225, 226, - 227, 228, 229, 230, 231, 0, 233, 234, 235, 0, - 0, 0, 0, 1182, 0, 0, 236, 237, 0, 238, - 239, 240, 801, 241, 242, 243, 244, 1183, 802, 1184, - 1185, 0, 248, 249, 250, 251, 252, 1186, 1187, 253, - 254, 1188, 1189, 257, 0, 258, 259, 260, 261, 1190, - 0, 1191, 0, 263, 264, 265, 266, 267, 804, 268, - 269, 270, 0, 271, 272, 273, 274, 275, 276, 0, - 805, 277, 278, 279, 1192, 1193, 1194, 1195, 1196, 1197, - 1198, 280, 281, 282, 283, 284, 285, 1199, 1200, 288, - 1201, 289, 0, 290, 291, 292, 293, 294, 295, 0, - 296, 297, 298, 299, 0, 0, 300, 301, 1039, 303, - 304, 0, 305, 306, 307, 0, 308, 309, 310, 0, - 311, 312, 313, 314, 1202, 316, 317, 318, 1203, 1204, - 320, 0, 321, 322, 1205, 324, 0, 325, 0, 326, - 807, 0, 808, 327, 328, 329, 330, 0, 331, 1206, - 0, 1207, 334, 0, 335, 336, 337, 338, 339, 809, - 340, 341, 342, 343, 0, 344, 345, 346, 347, 348, - 349, 0, 350, 810, 351, 352, 353, 354, 355, 1208, - 1209, 0, 1210, 0, 359, 811, 812, 360, 813, 361, - 362, 363, 364, 365, 0, 0, 366, 1211, 814, 368, - 815, 0, 369, 370, 371, 1212, 1213, 372, 373, 374, - 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, - 385, 386, 387, 1214, 816, 1215, 390, 391, 392, 393, - 1216, 394, 395, 817, 396, 1217, 1218, 398, 1219, 400, - 401, 402, 0, 403, 404, 0, 0, 1220, 406, 407, - 0, 0, 408, 409, 818, 410, 819, 1221, 412, 413, - 414, 415, 416, 417, 418, 419, 420, 0, 421, 422, - 1222, 424, 425, 426, 427, 428, 0, 429, 430, 431, - 432, 433, 434, 435, 436, 437, 1223, 439, 440, 441, - 442, 0, 443, 444, 445, 446, 447, 448, 449, 450, - 451, 452, 453, 454, 0, 455, 456, 820, 457, 458, - 459, 1224, 461, 462, 463, 464, 465, 466, 467, 468, - 469, 0, 470, 471, 472, 473, 474, 1225, 475, 476, - 477, 478, 479, 821, 480, 481, 1226, 483, 0, 484, - 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, - 495, 1227, 0, 497, 498, 0, 499, 822, 500, 501, - 502, 503, 504, 0, 1228, 1229, 0, 0, 507, 508, - 1230, 510, 1231, 1232, 512, 513, 514, 515, 516, 517, - 518, 0, 1233, 519, 520, 521, 522, 523, 1234, 0, - 524, 525, 526, 527, 528, 529, 1235, 0, 531, 823, - 532, 533, 534, 535, 0, 0, 536, 0, 0, 537, - 538, 539, 540, 541, 542, 543, 1236, 1237, 1238, 1239, - 548, 1240, 1241, 1242, 1243, 553, 554, 555, 556, 1244, - 0, 0, 0, 0, 0, 0, 1245, 1246, 0, 0, - 0, 0, 1248, 0, 0, 0, 1249, 2669, 800, 1177, - 617, 1178, 1179, 1180, 676, 1181, 0, 0, 0, 0, - 0, 0, 0, 224, 225, 226, 227, 228, 229, 230, - 231, 0, 233, 234, 235, 0, 0, 0, 0, 1182, - 0, 0, 236, 237, 0, 238, 239, 240, 801, 241, - 242, 243, 244, 1183, 802, 1184, 1185, 0, 248, 249, - 250, 251, 252, 1186, 1187, 253, 254, 1188, 1189, 257, - 0, 258, 259, 260, 261, 1190, 0, 1191, 0, 263, - 264, 265, 266, 267, 804, 268, 269, 270, 0, 271, - 272, 273, 274, 275, 276, 0, 805, 277, 278, 279, - 1192, 1193, 1194, 1195, 1196, 1197, 1198, 280, 281, 282, - 283, 284, 285, 1199, 1200, 288, 1201, 289, 0, 290, - 291, 292, 293, 294, 295, 0, 296, 297, 298, 299, - 0, 0, 300, 301, 1039, 303, 304, 0, 305, 306, - 307, 0, 308, 309, 310, 0, 311, 312, 313, 314, - 1202, 316, 317, 318, 1203, 1204, 320, 0, 321, 322, - 1205, 324, 0, 325, 0, 326, 807, 0, 808, 327, - 328, 329, 330, 0, 331, 1206, 0, 1207, 334, 0, - 335, 336, 337, 338, 339, 809, 340, 341, 342, 343, - 0, 344, 345, 346, 347, 348, 349, 0, 350, 810, - 351, 352, 353, 354, 355, 1208, 1209, 0, 1210, 0, - 359, 811, 812, 360, 813, 361, 362, 363, 364, 365, - 0, 0, 366, 1211, 814, 368, 815, 0, 369, 370, - 371, 1212, 1213, 372, 373, 374, 375, 376, 377, 378, - 379, 380, 381, 382, 383, 384, 385, 386, 387, 1214, - 816, 1215, 390, 391, 392, 393, 1216, 394, 395, 817, - 396, 1217, 1218, 398, 1219, 400, 401, 402, 0, 403, - 404, 0, 0, 1220, 406, 407, 0, 0, 408, 409, - 818, 410, 819, 1221, 412, 413, 414, 415, 416, 417, - 418, 419, 420, 0, 421, 422, 1222, 424, 425, 426, - 427, 428, 0, 429, 430, 431, 432, 433, 434, 435, - 436, 437, 1223, 439, 440, 441, 442, 0, 443, 444, + 456, 1269, 458, 459, 460, 461, 462, 0, 463, 464, + 465, 466, 467, 468, 469, 470, 471, 472, 1270, 474, + 475, 476, 477, 0, 478, 479, 480, 481, 482, 483, + 484, 485, 486, 487, 488, 489, 0, 490, 491, 492, + 493, 494, 495, 496, 497, 1271, 499, 500, 501, 502, + 503, 504, 505, 506, 507, 0, 508, 509, 510, 511, + 512, 1272, 513, 514, 515, 516, 517, 518, 519, 520, + 1273, 522, 0, 523, 524, 525, 526, 527, 528, 529, + 530, 531, 532, 533, 534, 535, 1274, 537, 0, 538, + 539, 0, 540, 541, 542, 543, 544, 545, 546, 0, + 547, 1275, 1276, 0, 0, 550, 551, 1277, 553, 1278, + 1279, 555, 556, 557, 558, 559, 560, 561, 562, 0, + 1280, 563, 564, 565, 566, 567, 1281, 0, 568, 569, + 570, 571, 572, 573, 1282, 1633, 575, 576, 577, 578, + 579, 580, 0, 0, 581, 0, 0, 582, 583, 584, + 585, 586, 587, 588, 1283, 1284, 1285, 1286, 593, 1287, + 1288, 1289, 1290, 598, 599, 600, 601, 1291, 0, 0, + 0, 0, 0, 1292, 0, 1293, 1294, 1634, 0, 0, + 0, 0, 0, 0, 1296, 1635, 228, 0, 1223, 669, + 0, 1224, 1225, 1226, 729, 1227, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 229, 230, 231, 232, 233, + 234, 235, 236, 0, 237, 238, 239, 0, 0, 0, + 0, 1228, 0, 0, 240, 241, 0, 242, 243, 244, + 245, 246, 247, 248, 249, 1229, 251, 1230, 1231, 0, + 254, 255, 256, 257, 258, 259, 1232, 1233, 260, 261, + 1234, 1235, 264, 0, 265, 266, 267, 268, 1236, 0, + 1237, 0, 271, 272, 273, 274, 275, 276, 277, 278, + 279, 0, 280, 281, 282, 283, 284, 285, 0, 286, + 287, 288, 289, 1238, 1239, 1240, 1241, 1242, 1243, 1244, + 291, 292, 293, 294, 295, 296, 1245, 1246, 299, 1247, + 300, 0, 301, 302, 303, 304, 305, 306, 0, 307, + 308, 309, 310, 0, 0, 311, 312, 1078, 314, 315, + 0, 316, 317, 318, 0, 319, 320, 321, 0, 322, + 323, 324, 325, 1248, 327, 328, 329, 330, 1249, 1250, + 332, 0, 333, 334, 1251, 336, 0, 337, 0, 338, + 339, 0, 340, 341, 342, 343, 344, 0, 345, 1252, + 0, 1253, 348, 349, 0, 350, 351, 352, 353, 354, + 355, 356, 357, 358, 359, 0, 360, 361, 362, 363, + 364, 365, 366, 0, 367, 368, 369, 370, 371, 372, + 373, 1254, 1255, 0, 1256, 0, 377, 378, 379, 380, + 381, 382, 383, 384, 385, 386, 0, 0, 387, 1257, + 389, 390, 391, 0, 392, 393, 394, 1258, 1259, 395, + 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, + 406, 407, 408, 409, 410, 1260, 412, 1261, 414, 415, + 416, 417, 418, 419, 420, 421, 1262, 423, 1263, 424, + 425, 426, 427, 1264, 1265, 429, 1266, 431, 432, 433, + 0, 434, 435, 0, 0, 1267, 437, 438, 0, 0, + 439, 440, 441, 442, 443, 444, 1268, 446, 447, 448, + 449, 450, 451, 452, 453, 454, 0, 455, 456, 1269, + 458, 459, 460, 461, 462, 0, 463, 464, 465, 466, + 467, 468, 469, 470, 471, 472, 1270, 474, 475, 476, + 477, 0, 478, 479, 480, 481, 482, 483, 484, 485, + 486, 487, 488, 489, 0, 490, 491, 492, 493, 494, + 495, 496, 497, 1271, 499, 500, 501, 502, 503, 504, + 505, 506, 507, 40, 508, 509, 510, 511, 512, 1272, + 513, 514, 515, 516, 517, 518, 519, 520, 1273, 522, + 0, 523, 524, 525, 526, 527, 528, 529, 530, 531, + 532, 533, 534, 535, 1274, 537, 0, 538, 539, 44, + 540, 541, 542, 543, 544, 545, 546, 0, 547, 1275, + 1276, 0, 0, 550, 551, 1277, 553, 1278, 1279, 555, + 556, 557, 558, 559, 560, 561, 562, 0, 1280, 563, + 564, 565, 566, 567, 1281, 0, 568, 569, 570, 571, + 572, 1157, 1282, 0, 575, 576, 577, 578, 579, 580, + 0, 0, 581, 0, 49, 582, 583, 584, 585, 586, + 587, 588, 1283, 1284, 1285, 1286, 593, 1287, 1288, 1289, + 1290, 598, 599, 600, 601, 1291, 0, 50, 0, 0, + 0, 1292, 0, 1293, 1294, 0, 0, 0, 0, 0, + 0, 0, 1296, 5121, 228, 0, 1223, 669, 0, 1224, + 1225, 1226, 729, 1227, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 229, 230, 231, 232, 233, 234, 235, + 236, 0, 237, 238, 239, 0, 0, 0, 0, 1228, + 0, 0, 240, 241, 0, 242, 243, 244, 245, 246, + 247, 248, 249, 1229, 251, 1230, 1231, 0, 254, 255, + 256, 257, 258, 259, 1232, 1233, 260, 261, 1234, 1235, + 264, 0, 265, 266, 267, 268, 1236, 0, 1237, 0, + 271, 272, 273, 274, 275, 276, 277, 278, 279, 0, + 280, 281, 282, 283, 284, 285, 0, 286, 287, 288, + 289, 1238, 1239, 1240, 1241, 1242, 1243, 1244, 291, 292, + 293, 294, 295, 296, 1245, 1246, 299, 1247, 300, 0, + 301, 302, 303, 304, 305, 306, 0, 307, 308, 309, + 310, 0, 0, 311, 312, 1078, 314, 315, 0, 316, + 317, 318, 0, 319, 320, 321, 0, 322, 323, 324, + 325, 1248, 327, 328, 329, 330, 1249, 1250, 332, 0, + 333, 334, 1251, 336, 0, 337, 0, 338, 339, 0, + 340, 341, 342, 343, 344, 0, 345, 1252, 0, 1253, + 348, 349, 0, 350, 351, 352, 353, 354, 355, 356, + 357, 358, 359, 0, 360, 361, 362, 363, 364, 365, + 366, 0, 367, 368, 369, 370, 371, 372, 373, 1254, + 1255, 0, 1256, 0, 377, 378, 379, 380, 381, 382, + 383, 384, 385, 386, 0, 0, 387, 1257, 389, 390, + 391, 0, 392, 393, 394, 1258, 1259, 395, 396, 397, + 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, + 408, 409, 410, 1260, 412, 1261, 414, 415, 416, 417, + 418, 419, 420, 421, 1262, 423, 1263, 424, 425, 426, + 427, 1264, 1265, 429, 1266, 431, 432, 433, 0, 434, + 435, 0, 0, 1267, 437, 438, 0, 0, 439, 440, + 441, 442, 443, 444, 1268, 446, 447, 448, 449, 450, + 451, 452, 453, 454, 0, 455, 456, 1269, 458, 459, + 460, 461, 462, 0, 463, 464, 465, 466, 467, 468, + 469, 470, 471, 472, 1270, 474, 475, 476, 477, 0, + 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, + 488, 489, 0, 490, 491, 492, 493, 494, 495, 496, + 497, 1271, 499, 500, 501, 502, 503, 504, 505, 506, + 507, 0, 508, 509, 510, 511, 512, 1272, 513, 514, + 515, 516, 517, 518, 519, 520, 1273, 522, 0, 523, + 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, + 534, 535, 1274, 537, 0, 538, 539, 0, 540, 541, + 542, 543, 544, 545, 546, 0, 547, 1275, 1276, 0, + 0, 550, 551, 1277, 553, 1278, 1279, 555, 556, 557, + 558, 559, 560, 561, 562, 0, 1280, 563, 564, 565, + 566, 567, 1281, 0, 568, 569, 570, 571, 572, 573, + 1282, 0, 575, 576, 577, 578, 579, 580, 0, 0, + 581, 0, 0, 582, 583, 584, 585, 586, 587, 588, + 1283, 1284, 1285, 1286, 593, 1287, 1288, 1289, 1290, 598, + 599, 600, 601, 1291, 0, 0, 0, 0, 0, 1292, + 0, 1293, 1294, 0, 0, 0, 0, 0, 0, 0, + 1296, 2804, 228, 0, 1223, 669, 0, 1224, 1225, 1226, + 729, 1227, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 229, 230, 231, 232, 233, 234, 235, 236, 0, + 237, 238, 239, 0, 0, 0, 0, 1228, 0, 0, + 240, 241, 0, 242, 243, 244, 245, 246, 247, 248, + 249, 1229, 251, 1230, 1231, 0, 254, 255, 256, 257, + 258, 259, 1232, 1233, 260, 261, 1234, 1235, 264, 0, + 265, 266, 267, 268, 1236, 0, 1237, 0, 271, 272, + 273, 274, 275, 276, 277, 278, 279, 0, 280, 281, + 282, 283, 284, 285, 0, 286, 287, 288, 289, 1238, + 1239, 1240, 1241, 1242, 1243, 1244, 291, 292, 293, 294, + 295, 296, 1245, 1246, 299, 1247, 300, 0, 301, 302, + 303, 304, 305, 306, 0, 307, 308, 309, 310, 0, + 0, 311, 312, 1078, 314, 315, 0, 316, 317, 318, + 0, 319, 320, 321, 0, 322, 323, 324, 325, 1248, + 327, 328, 329, 330, 1249, 1250, 332, 0, 333, 334, + 1251, 336, 0, 337, 0, 338, 339, 0, 340, 341, + 342, 343, 344, 0, 345, 1252, 0, 1253, 348, 349, + 0, 350, 351, 352, 353, 354, 355, 356, 357, 358, + 359, 0, 360, 361, 362, 363, 364, 365, 366, 0, + 367, 368, 369, 370, 371, 372, 373, 1254, 1255, 0, + 1256, 0, 377, 378, 379, 380, 381, 382, 383, 384, + 385, 386, 0, 0, 387, 1257, 389, 390, 391, 0, + 392, 393, 394, 1258, 1259, 395, 396, 397, 398, 399, + 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, + 410, 1260, 412, 1261, 414, 415, 416, 417, 418, 419, + 420, 421, 1262, 423, 1263, 424, 425, 426, 427, 1264, + 1265, 429, 1266, 431, 432, 433, 0, 434, 435, 0, + 0, 1267, 437, 438, 0, 0, 439, 440, 441, 442, + 443, 444, 1268, 446, 447, 448, 449, 450, 451, 452, + 453, 454, 0, 455, 456, 1269, 458, 459, 460, 461, + 462, 0, 463, 464, 465, 466, 467, 468, 469, 470, + 471, 472, 1270, 474, 475, 476, 477, 0, 478, 479, + 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, + 0, 490, 491, 492, 493, 494, 495, 496, 497, 1271, + 499, 500, 501, 502, 503, 504, 505, 506, 507, 0, + 508, 509, 510, 511, 512, 1272, 513, 514, 515, 516, + 517, 518, 519, 520, 1273, 522, 0, 523, 524, 525, + 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, + 1274, 537, 0, 538, 539, 0, 540, 541, 542, 543, + 544, 545, 546, 0, 547, 1275, 1276, 0, 0, 550, + 551, 1277, 553, 1278, 1279, 555, 556, 557, 558, 559, + 560, 561, 562, 0, 1280, 563, 564, 565, 566, 567, + 1281, 0, 568, 569, 570, 571, 572, 573, 1282, 0, + 575, 576, 577, 578, 579, 580, 0, 0, 581, 0, + 0, 582, 583, 584, 585, 586, 587, 588, 1283, 1284, + 1285, 1286, 593, 1287, 1288, 1289, 1290, 598, 599, 600, + 601, 1291, 0, 0, 0, 0, 0, 1292, 0, 1293, + 1294, 0, 0, 0, 0, 0, 0, 0, 1296, 4095, + 228, 0, 1223, 669, 0, 1224, 1225, 1226, 729, 1227, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 229, + 230, 231, 232, 233, 234, 235, 236, 0, 237, 238, + 239, 0, 0, 0, 0, 1228, 0, 0, 240, 241, + 0, 242, 243, 244, 245, 246, 247, 248, 249, 1229, + 251, 1230, 1231, 0, 254, 255, 256, 257, 258, 259, + 1232, 1233, 260, 261, 1234, 1235, 264, 0, 265, 266, + 267, 268, 1236, 0, 1237, 0, 271, 272, 273, 274, + 275, 276, 277, 278, 279, 0, 280, 281, 282, 283, + 284, 285, 0, 286, 287, 288, 289, 1238, 1239, 1240, + 1241, 1242, 1243, 1244, 291, 292, 293, 294, 295, 296, + 1245, 1246, 299, 1247, 300, 0, 301, 302, 303, 304, + 305, 306, 0, 307, 308, 309, 310, 0, 0, 311, + 312, 1078, 314, 315, 0, 316, 317, 318, 0, 319, + 320, 321, 0, 322, 323, 324, 325, 1248, 327, 328, + 329, 330, 1249, 1250, 332, 0, 333, 334, 1251, 336, + 0, 337, 0, 338, 339, 0, 340, 341, 342, 343, + 344, 0, 345, 1252, 0, 1253, 348, 349, 0, 350, + 351, 352, 353, 354, 355, 356, 357, 358, 359, 0, + 360, 361, 362, 363, 364, 365, 366, 0, 367, 368, + 369, 370, 371, 372, 373, 1254, 1255, 0, 1256, 0, + 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, + 0, 0, 387, 1257, 389, 390, 391, 0, 392, 393, + 394, 1258, 1259, 395, 396, 397, 398, 399, 400, 401, + 402, 403, 404, 405, 406, 407, 408, 409, 410, 1260, + 412, 1261, 414, 415, 416, 417, 418, 419, 420, 421, + 1262, 423, 1263, 424, 425, 426, 427, 1264, 1265, 429, + 1266, 431, 432, 433, 0, 434, 435, 0, 0, 1267, + 437, 438, 0, 0, 439, 440, 441, 442, 443, 444, + 1268, 446, 447, 448, 449, 450, 451, 452, 453, 454, + 0, 455, 456, 1269, 458, 459, 460, 461, 462, 0, + 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, + 1270, 474, 475, 476, 477, 0, 478, 479, 480, 481, + 482, 483, 484, 485, 486, 487, 488, 489, 0, 490, + 491, 492, 493, 494, 495, 496, 497, 1271, 499, 500, + 501, 502, 503, 504, 505, 506, 507, 0, 508, 509, + 510, 511, 512, 1272, 513, 514, 515, 516, 517, 518, + 519, 520, 1273, 522, 0, 523, 524, 525, 526, 527, + 528, 529, 530, 531, 532, 533, 534, 535, 1274, 537, + 0, 538, 539, 0, 540, 541, 542, 543, 544, 545, + 546, 0, 547, 1275, 1276, 0, 0, 550, 551, 1277, + 553, 1278, 1279, 555, 556, 557, 558, 559, 560, 561, + 562, 0, 1280, 563, 564, 565, 566, 567, 1281, 0, + 568, 569, 570, 571, 572, 573, 1282, 0, 575, 576, + 577, 578, 579, 580, 0, 0, 581, 0, 0, 582, + 583, 584, 585, 586, 587, 588, 1283, 1284, 1285, 1286, + 593, 1287, 1288, 1289, 1290, 598, 599, 600, 601, 1291, + 609, 0, 0, 0, 0, 1292, 0, 1293, 1294, 0, + 0, 0, 0, 0, 0, 0, 1296, 4171, 0, 229, + 230, 231, 232, 233, 234, 235, 236, 0, 237, 238, + 239, 0, 0, 0, 0, 0, 4189, 0, 240, 241, + 0, 242, 243, 244, 0, 246, 247, 248, 249, 250, + 0, 252, 253, 0, 254, 255, 256, 257, 258, 259, + 0, 0, 260, 261, 262, 263, 264, 0, 265, 266, + 267, 268, 269, 0, 0, 0, 271, 272, 273, 274, + 275, 0, 277, 278, 279, 0, 280, 281, 282, 283, + 284, 285, 0, -1803, 287, 288, 289, 0, 0, 0, + 0, 0, 0, 0, 291, 292, 293, 294, 295, 296, + 297, 298, 299, 0, 300, 0, 301, 302, 303, 304, + 305, 306, 0, 307, 308, 309, 310, 0, 0, 311, + 312, 313, 314, 315, 0, 316, 317, 318, 0, 319, + 320, 321, 0, 322, 323, 324, 325, 326, 327, 328, + 329, 330, 331, 0, 332, 0, 333, 334, 335, 336, + 0, 337, 0, 338, 0, 0, -1803, 341, 342, 343, + 344, 0, 345, 346, 0, 347, 348, 349, 0, 350, + 351, 352, 353, 354, 0, 356, 357, 358, 359, 0, + 360, 361, 362, 363, 364, 365, 366, 0, 367, -1803, + 369, 370, 371, 372, 373, 374, 375, 0, 376, 0, + 377, 0, 0, 380, -1803, 382, 383, 384, 385, 386, + 0, 0, 387, 388, -1803, 390, 0, 0, 392, 393, + 394, 0, 0, 395, 396, 397, 398, 399, 400, 401, + 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, + -1803, 413, 414, 415, 416, 417, 418, 419, 420, 421, + 422, 423, 0, 424, 425, 0, 427, 0, 428, 429, + 430, 431, 432, 433, 0, 434, 435, 0, 0, 436, + 437, 438, 0, 0, 439, 440, 441, 0, 443, 0, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, - 0, 455, 456, 820, 457, 458, 459, 1224, 461, 462, - 463, 464, 465, 466, 467, 468, 469, 0, 470, 471, - 472, 473, 474, 1225, 475, 476, 477, 478, 479, 821, - 480, 481, 1226, 483, 0, 484, 485, 486, 487, 488, - 489, 490, 491, 492, 493, 494, 495, 1227, 0, 497, - 498, 0, 499, 822, 500, 501, 502, 503, 504, 0, - 1228, 1229, 0, 0, 507, 508, 1230, 510, 1231, 1232, - 512, 513, 514, 515, 516, 517, 518, 0, 1233, 519, - 520, 521, 522, 523, 1234, 0, 524, 525, 526, 527, - 528, 529, 1235, 0, 531, 823, 532, 533, 534, 535, - 0, 0, 536, 0, 0, 537, 538, 539, 540, 541, - 542, 543, 1236, 1237, 1238, 1239, 548, 1240, 1241, 1242, - 1243, 553, 554, 555, 556, 1244, 0, 0, 0, 0, - 0, 0, 1245, 1246, 0, 0, 0, 0, 1248, 0, - 0, 0, 1249, 3907, 800, 1177, 617, 1178, 1179, 1180, - 676, 1181, 0, 0, 0, 0, 0, 0, 0, 224, - 225, 226, 227, 228, 229, 230, 231, 0, 233, 234, - 235, 0, 0, 0, 0, 1182, 0, 0, 236, 237, - 0, 238, 239, 240, 801, 241, 242, 243, 244, 1183, - 802, 1184, 1185, 0, 248, 249, 250, 251, 252, 1186, - 1187, 253, 254, 1188, 1189, 257, 0, 258, 259, 260, - 261, 1190, 0, 1191, 0, 263, 264, 265, 266, 267, - 804, 268, 269, 270, 0, 271, 272, 273, 274, 275, - 276, 0, 805, 277, 278, 279, 1192, 1193, 1194, 1195, - 1196, 1197, 1198, 280, 281, 282, 283, 284, 285, 1199, - 1200, 288, 1201, 289, 0, 290, 291, 292, 293, 294, - 295, 0, 296, 297, 298, 299, 0, 0, 300, 301, - 1039, 303, 304, 0, 305, 306, 307, 0, 308, 309, - 310, 0, 311, 312, 313, 314, 1202, 316, 317, 318, - 1203, 1204, 320, 0, 321, 322, 1205, 324, 0, 325, - 0, 326, 807, 0, 808, 327, 328, 329, 330, 0, - 331, 1206, 0, 1207, 334, 0, 335, 336, 337, 338, - 339, 809, 340, 341, 342, 343, 0, 344, 345, 346, - 347, 348, 349, 0, 350, 810, 351, 352, 353, 354, - 355, 1208, 1209, 0, 1210, 0, 359, 811, 812, 360, - 813, 361, 362, 363, 364, 365, 0, 0, 366, 1211, - 814, 368, 815, 0, 369, 370, 371, 1212, 1213, 372, - 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, - 383, 384, 385, 386, 387, 1214, 816, 1215, 390, 391, - 392, 393, 1216, 394, 395, 817, 396, 1217, 1218, 398, - 1219, 400, 401, 402, 0, 403, 404, 0, 0, 1220, - 406, 407, 0, 0, 408, 409, 818, 410, 819, 1221, - 412, 413, 414, 415, 416, 417, 418, 419, 420, 0, - 421, 422, 1222, 424, 425, 426, 427, 428, 0, 429, - 430, 431, 432, 433, 434, 435, 436, 437, 1223, 439, - 440, 441, 442, 0, 443, 444, 445, 446, 447, 448, - 449, 450, 451, 452, 453, 454, 0, 455, 456, 820, - 457, 458, 459, 1224, 461, 462, 463, 464, 465, 466, - 467, 468, 469, 0, 470, 471, 472, 473, 474, 1225, - 475, 476, 477, 478, 479, 821, 480, 481, 1226, 483, - 0, 484, 485, 486, 487, 488, 489, 490, 491, 492, - 493, 494, 495, 1227, 0, 497, 498, 0, 499, 822, - 500, 501, 502, 503, 504, 0, 1228, 1229, 0, 0, - 507, 508, 1230, 510, 1231, 1232, 512, 513, 514, 515, - 516, 517, 518, 0, 1233, 519, 520, 521, 522, 523, - 1234, 0, 524, 525, 526, 527, 528, 529, 1235, 0, - 531, 823, 532, 533, 534, 535, 0, 0, 536, 0, - 0, 537, 538, 539, 540, 541, 542, 543, 1236, 1237, - 1238, 1239, 548, 1240, 1241, 1242, 1243, 553, 554, 555, - 556, 1244, 0, 0, 0, 223, 0, 0, 1245, 1246, - 0, 0, 0, 0, 1248, 0, 0, 0, 1249, 3980, - 224, 225, 226, 227, 228, 229, 230, 231, 0, 233, - 234, 235, 0, 0, 0, 0, 0, 3998, 0, 236, - 237, 0, 238, 239, 240, 0, 241, 242, 243, 244, - 245, 0, 246, 247, 0, 248, 249, 250, 251, 252, - 0, 0, 253, 254, 255, 256, 257, 0, 258, 259, - 260, 261, 262, 0, 0, 0, 263, 264, 265, 266, - 267, 0, 268, 269, 270, 0, 271, 272, 273, 274, - 275, 276, 0, -1729, 277, 278, 279, 0, 0, 0, - 0, 0, 0, 0, 280, 281, 282, 283, 284, 285, - 286, 287, 288, 0, 289, 0, 290, 291, 292, 293, - 294, 295, 0, 296, 297, 298, 299, 0, 0, 300, - 301, 302, 303, 304, 0, 305, 306, 307, 0, 308, - 309, 310, 0, 311, 312, 313, 314, 315, 316, 317, - 318, 319, 0, 320, 0, 321, 322, 323, 324, 0, - 325, 0, 326, 0, 0, -1729, 327, 328, 329, 330, - 0, 331, 332, 0, 333, 334, 0, 335, 336, 337, - 338, 339, 0, 340, 341, 342, 343, 0, 344, 345, - 346, 347, 348, 349, 0, 350, -1729, 351, 352, 353, - 354, 355, 356, 357, 0, 358, 0, 359, 0, 0, - 360, -1729, 361, 362, 363, 364, 365, 0, 0, 366, - 367, -1729, 368, 0, 0, 369, 370, 371, 0, 0, - 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, - 382, 383, 384, 385, 386, 387, 388, -1729, 389, 390, - 391, 392, 393, 0, 394, 395, 0, 396, 0, 397, - 398, 399, 400, 401, 402, 0, 403, 404, 0, 0, - 405, 406, 407, 0, 0, 408, 409, 0, 410, 0, - 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, - 0, 421, 422, 423, 424, 425, 426, 427, 428, 0, - 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, - 439, 440, 441, 442, 0, 443, 444, 445, 446, 447, - 448, 449, 450, 451, 452, 453, 454, 0, 455, 456, - -1729, 457, 458, 459, 460, 461, 462, 463, 464, 465, - 466, 467, 468, 469, 0, 470, 471, 472, 473, 474, - 0, 475, 476, 477, 478, 479, 0, 480, 481, 482, - 483, 0, 484, 485, 486, 487, 488, 489, 490, 491, - 492, 493, 494, 495, 496, 0, 497, 498, 0, 499, - 0, 500, 501, 502, 503, 504, 0, 505, 506, 0, - 0, 507, 508, 509, 510, 511, 0, 512, 513, 514, - 515, 516, 517, 518, 0, 0, 519, 520, 521, 522, - 523, 0, 0, 524, 525, 526, 527, 528, 529, 530, - 0, 531, 0, 532, 533, 534, 535, 0, 0, 536, - 0, 0, 537, 538, 539, 540, 541, 542, 543, 544, - 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, - 555, 556, 0, 0, 0, 0, 1031, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1334, 224, 225, 226, 227, 228, 229, 230, 231, 0, - 233, 234, 235, 0, 0, 0, 0, 0, 0, 0, - 236, 237, 0, 238, 239, 240, 801, 241, 242, 243, - 0, 1032, 802, 1033, 1034, 0, 248, 249, 250, 251, - 252, 0, 0, 253, 254, 1035, 1036, 257, 0, 258, - 259, 260, 261, 0, 0, 803, 0, 263, 264, 265, - 266, 267, 804, 268, 269, 270, 0, 271, 272, 273, - 274, 275, 276, 0, 805, 277, 278, 279, 0, 0, - 0, 806, 0, 0, 0, 280, 281, 282, 283, 284, - 285, 1037, 1038, 288, 0, 289, 0, 290, 291, 292, - 293, 294, 295, 0, 296, 297, 298, 299, 0, 0, - 300, 301, 1039, 303, 304, 0, 305, 306, 307, 0, - 308, 309, 310, 0, 311, 312, 313, 314, 0, 316, - 317, 318, 0, 0, 320, 0, 321, 322, 1040, 324, - 0, 325, 0, 326, 807, 0, 808, 327, 328, 329, - 330, 0, 331, 0, 0, 0, 334, 0, 335, 336, - 337, 338, 339, 809, 340, 341, 342, 343, 2095, 344, - 345, 346, 347, 348, 349, 0, 350, 810, 2096, 352, - 353, 354, 355, 1042, 1043, 0, 1044, 0, 359, 811, - 812, 360, 813, 361, 362, 363, 364, 365, 0, 0, - 366, 0, 814, 368, 815, 0, 369, 370, 371, 0, - 0, 372, 373, 374, 375, 376, 377, 378, 379, 380, - 381, 382, 383, 384, 385, 386, 387, 1045, 816, 1046, - 390, 391, 392, 0, 0, 394, 395, 817, 396, 0, - 0, 398, 1047, 400, 401, 402, 0, 403, 404, 0, - 0, 405, 406, 407, 0, 0, 408, 2098, 818, 410, - 819, 0, 412, 413, 414, 415, 416, 417, 418, 419, - 420, 0, 421, 422, 0, 424, 0, 426, 427, 428, - 0, 429, 430, 431, 432, 433, 434, 435, 436, 437, - 1048, 439, 440, 441, 442, 0, 443, 444, 445, 446, - 447, 448, 449, 450, 451, 452, 453, 454, 0, 455, - 456, 820, 457, 458, 459, 0, 461, 462, 463, 464, - 465, 466, 467, 468, 469, 0, 470, 471, 472, 473, - 474, 0, 475, 476, 2099, 478, 479, 821, 480, 481, - 1050, 483, 0, 484, 485, 486, 487, 488, 489, 490, - 491, 492, 493, 494, 495, 0, 0, 497, 498, 0, - 499, 822, 500, 501, 502, 503, 504, 0, 1051, 1052, - 0, 0, 507, 508, 0, 510, 0, 0, 512, 513, - 514, 515, 516, 517, 518, 0, 0, 519, 520, 521, - 522, 523, 0, 0, 524, 525, 526, 527, 528, 0, - 1053, 2100, 531, 823, 532, 533, 534, 535, 0, 0, - 536, 0, 0, 537, 538, 539, 540, 541, 542, 1031, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 554, 555, 556, 0, 224, 225, 226, 227, 228, 229, - 230, 231, 0, 233, 234, 235, 0, 0, 0, 0, - 0, 2205, 0, 236, 237, 0, 238, 239, 240, 801, - 241, 242, 243, 0, 1032, 802, 1033, 1034, 0, 248, - 249, 250, 251, 252, 0, 0, 253, 254, 1035, 1036, - 257, 0, 258, 259, 260, 261, 0, 0, 803, 0, - 263, 264, 265, 266, 267, 804, 268, 269, 270, 0, - 271, 272, 273, 274, 275, 276, 0, 805, 277, 278, - 279, 0, 0, 0, 806, 0, 0, 0, 280, 281, - 282, 283, 284, 285, 1037, 1038, 288, 0, 289, 0, - 290, 291, 292, 293, 294, 295, 0, 296, 297, 298, - 299, 0, 0, 300, 301, 1039, 303, 304, 0, 305, - 306, 307, 0, 308, 309, 310, 0, 311, 312, 313, - 314, 0, 316, 317, 318, 0, 0, 320, 0, 321, - 322, 1040, 324, 0, 325, 0, 326, 807, 0, 808, - 327, 328, 329, 330, 0, 331, 0, 0, 0, 334, - 0, 335, 336, 337, 338, 339, 809, 340, 341, 342, - 343, 2095, 344, 345, 346, 347, 348, 349, 0, 350, - 810, 2096, 352, 353, 354, 355, 1042, 1043, 0, 1044, - 0, 359, 811, 812, 360, 813, 361, 362, 363, 364, - 365, 0, 0, 366, 0, 814, 368, 815, 0, 369, - 370, 371, 0, 0, 372, 373, 374, 375, 376, 377, - 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, - 1045, 816, 1046, 390, 391, 392, 0, 0, 394, 395, - 817, 396, 0, 0, 398, 1047, 400, 401, 402, 0, - 403, 404, 0, 0, 405, 406, 407, 0, 0, 408, - 2098, 818, 410, 819, 0, 412, 413, 414, 415, 416, - 417, 418, 419, 420, 0, 421, 422, 0, 424, 0, - 426, 427, 428, 0, 429, 430, 431, 432, 433, 434, - 435, 436, 437, 1048, 439, 440, 441, 442, 0, 443, - 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, - 454, 0, 455, 456, 820, 457, 458, 459, 0, 461, - 462, 463, 464, 465, 466, 467, 468, 469, 0, 470, - 471, 472, 473, 474, 0, 475, 476, 2099, 478, 479, - 821, 480, 481, 1050, 483, 0, 484, 485, 486, 487, - 488, 489, 490, 491, 492, 493, 494, 495, 0, 0, - 497, 498, 0, 499, 822, 500, 501, 502, 503, 504, - 0, 1051, 1052, 0, 0, 507, 508, 0, 510, 0, - 0, 512, 513, 514, 515, 516, 517, 518, 0, 0, - 519, 520, 521, 522, 523, 0, 0, 524, 525, 526, - 527, 528, 0, 1053, 2100, 531, 823, 532, 533, 534, - 535, 0, 0, 536, 0, 0, 537, 538, 539, 540, - 541, 542, 800, 1177, 617, 1178, 1179, 1180, 676, 1181, - 0, 0, 0, 554, 555, 556, 0, 224, 225, 226, - 227, 228, 229, 230, 231, 0, 233, 234, 235, 0, - 0, 0, 0, 1182, 3231, 0, 236, 237, 0, 238, - 239, 240, 801, 241, 242, 243, 244, 1183, 802, 1184, - 1185, 0, 248, 249, 250, 251, 252, 1186, 1187, 253, - 254, 1188, 1189, 257, 0, 258, 259, 260, 261, 1190, - 0, 1191, 0, 263, 264, 265, 266, 267, 804, 268, - 269, 270, 0, 271, 272, 273, 274, 275, 276, 0, - 805, 277, 278, 279, 1192, 1193, 1194, 1195, 1196, 1197, - 1198, 280, 281, 282, 283, 284, 285, 1199, 1200, 288, - 1201, 289, 0, 290, 291, 292, 293, 294, 295, 0, - 296, 297, 298, 299, 0, 0, 300, 301, 1039, 303, - 304, 0, 305, 306, 307, 0, 308, 309, 310, 0, - 311, 312, 313, 314, 1202, 316, 317, 318, 1203, 1204, - 320, 0, 321, 322, 1205, 324, 0, 325, 0, 326, - 807, 0, 808, 327, 328, 329, 330, 0, 331, 1206, - 0, 1207, 334, 0, 335, 336, 337, 338, 339, 809, - 340, 341, 342, 343, 0, 344, 345, 346, 347, 348, - 349, 0, 350, 810, 351, 352, 353, 354, 355, 1208, - 1209, 0, 1210, 0, 359, 811, 812, 360, 813, 361, - 362, 363, 364, 365, 0, 0, 366, 1211, 814, 368, - 815, 0, 369, 370, 371, 1212, 1213, 372, 373, 374, - 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, - 385, 386, 387, 1214, 816, 1215, 390, 391, 392, 393, - 1216, 394, 395, 817, 396, 1217, 1218, 398, 1219, 400, - 401, 402, 0, 403, 404, 0, 0, 1220, 406, 407, - 0, 0, 408, 409, 818, 410, 819, 1221, 412, 413, - 414, 415, 416, 417, 418, 419, 420, 0, 421, 422, - 1222, 424, 425, 426, 427, 428, 0, 429, 430, 431, - 432, 433, 434, 435, 436, 437, 1223, 439, 440, 441, - 442, 0, 443, 444, 445, 446, 447, 448, 449, 450, - 451, 452, 453, 454, 0, 455, 456, 820, 457, 458, - 459, 1224, 461, 462, 463, 464, 465, 466, 467, 468, - 469, 39, 470, 471, 472, 473, 474, 1225, 475, 476, - 477, 478, 479, 821, 480, 481, 1226, 483, 0, 484, - 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, - 495, 1227, 0, 497, 498, 43, 499, 822, 500, 501, - 502, 503, 504, 0, 1228, 1229, 0, 0, 507, 508, - 1230, 510, 1231, 1232, 512, 513, 514, 515, 516, 517, - 518, 0, 1233, 519, 520, 521, 522, 523, 1234, 0, - 524, 525, 526, 527, 528, 1113, 1235, 0, 531, 823, - 532, 533, 534, 535, 0, 0, 536, 0, 48, 537, - 538, 539, 540, 541, 542, 543, 1236, 1237, 1238, 1239, - 548, 1240, 1241, 1242, 1243, 553, 554, 555, 556, 1244, - 0, 49, 0, 0, 0, 0, 1245, 1246, 0, 0, - 0, 0, 1248, 0, 0, 0, 1249, 800, 1177, 617, - 1178, 1179, 1180, 676, 1181, 0, 0, 0, 0, 0, - 0, 0, 224, 225, 226, 227, 228, 229, 230, 231, - 0, 233, 234, 235, 0, 0, 0, 0, 1182, 0, - 0, 236, 237, 0, 238, 239, 240, 801, 241, 242, - 243, 244, 1183, 802, 1184, 1185, 2675, 248, 249, 250, - 251, 252, 1186, 1187, 253, 254, 1188, 1189, 257, 0, - 258, 259, 260, 261, 1190, 0, 1191, 0, 263, 264, - 265, 266, 267, 804, 268, 269, 270, 0, 271, 272, - 273, 274, 275, 276, 0, 805, 277, 278, 279, 1192, - 1193, 1194, 1195, 1196, 1197, 1198, 280, 281, 282, 283, - 284, 285, 1199, 1200, 288, 1201, 289, 0, 290, 291, - 292, 293, 294, 295, 0, 296, 297, 298, 299, 0, - 0, 300, 301, 1039, 303, 304, 0, 305, 306, 307, - 0, 308, 309, 310, 0, 311, 312, 313, 314, 1202, - 316, 317, 318, 1203, 1204, 320, 0, 321, 322, 1205, - 324, 0, 325, 0, 326, 807, 2676, 808, 327, 328, - 329, 330, 0, 331, 1206, 0, 1207, 334, 0, 335, - 336, 337, 338, 339, 809, 340, 341, 342, 343, 0, - 344, 345, 346, 347, 348, 349, 0, 350, 810, 351, - 352, 353, 354, 355, 1208, 1209, 0, 1210, 0, 359, - 811, 812, 360, 813, 361, 362, 363, 364, 365, 0, - 2677, 366, 1211, 814, 368, 815, 0, 369, 370, 371, - 1212, 1213, 372, 373, 374, 375, 376, 377, 378, 379, - 380, 381, 382, 383, 384, 385, 386, 387, 1214, 816, - 1215, 390, 391, 392, 393, 1216, 394, 395, 817, 396, - 1217, 1218, 398, 1219, 400, 401, 402, 0, 403, 404, - 0, 0, 1220, 406, 407, 0, 0, 408, 409, 818, - 410, 819, 1221, 412, 413, 414, 415, 416, 417, 418, - 419, 420, 0, 421, 422, 1222, 424, 425, 426, 427, - 428, 0, 429, 430, 431, 432, 433, 434, 435, 436, - 437, 1223, 439, 440, 441, 442, 0, 443, 444, 445, - 446, 447, 448, 449, 450, 451, 452, 453, 454, 0, - 455, 456, 820, 457, 458, 459, 1224, 461, 462, 463, - 464, 465, 466, 467, 468, 469, 0, 470, 471, 472, - 473, 474, 1225, 475, 476, 477, 478, 479, 821, 480, - 481, 1226, 483, 0, 484, 485, 486, 487, 488, 489, - 490, 491, 492, 493, 494, 495, 1227, 0, 497, 498, - 0, 499, 822, 500, 501, 502, 503, 504, 0, 1228, - 1229, 0, 2678, 507, 508, 1230, 510, 1231, 1232, 512, - 513, 514, 515, 516, 517, 518, 0, 1233, 519, 520, - 521, 522, 523, 1234, 0, 524, 525, 526, 527, 528, - 529, 1235, 0, 531, 823, 532, 533, 534, 535, 0, - 0, 536, 0, 0, 537, 538, 539, 540, 541, 542, - 543, 1236, 1237, 1238, 1239, 548, 1240, 1241, 1242, 1243, - 553, 554, 555, 556, 1244, 0, 0, 0, 0, 0, - 0, 1245, 1246, 0, 0, 0, 0, 1248, 0, 0, - 0, 1249, 800, 1177, 617, 1178, 1179, 1180, 676, 1181, - 0, 0, 0, 0, 0, 0, 0, 224, 225, 226, - 227, 228, 229, 230, 231, 0, 233, 234, 235, 0, - 0, 0, 0, 1182, 0, 0, 236, 237, 0, 238, - 239, 240, 801, 241, 242, 243, 244, 1183, 802, 1184, - 1185, 0, 248, 249, 250, 251, 252, 1186, 1187, 253, - 254, 1188, 1189, 257, 0, 258, 259, 260, 261, 1190, - 0, 1191, 0, 263, 264, 265, 266, 267, 804, 268, - 269, 270, 0, 271, 272, 273, 274, 275, 276, 0, - 805, 277, 278, 279, 1192, 1193, 1194, 1195, 1196, 1197, - 1198, 280, 281, 282, 283, 284, 285, 1199, 1200, 288, - 1201, 289, 0, 290, 291, 292, 293, 294, 295, 0, - 296, 297, 298, 299, 0, 0, 300, 301, 1039, 303, - 304, 0, 305, 306, 307, 0, 308, 309, 310, 0, - 311, 312, 313, 314, 1202, 316, 317, 318, 1203, 1204, - 320, 0, 321, 322, 1205, 324, 0, 325, 0, 326, - 807, 0, 808, 327, 328, 329, 330, 0, 331, 1206, - 0, 1207, 334, 0, 335, 336, 337, 338, 339, 809, - 340, 341, 342, 343, 0, 344, 345, 346, 347, 348, - 349, 0, 350, 810, 351, 352, 353, 354, 355, 1208, - 1209, 0, 1210, 0, 359, 811, 812, 360, 813, 361, - 362, 363, 364, 365, 0, 0, 366, 1211, 814, 368, - 815, 0, 369, 370, 371, 1212, 1213, 372, 373, 374, - 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, - 385, 386, 387, 1214, 816, 1215, 390, 391, 392, 393, - 1216, 394, 395, 817, 396, 1217, 1218, 398, 1219, 400, - 401, 402, 0, 403, 404, 0, 0, 1220, 406, 407, - 0, 0, 408, 409, 818, 410, 819, 1221, 412, 413, - 414, 415, 416, 417, 418, 419, 420, 0, 421, 422, - 1222, 424, 425, 426, 427, 428, 0, 429, 430, 431, - 432, 433, 434, 435, 436, 437, 1223, 439, 440, 441, - 442, 0, 443, 444, 445, 446, 447, 448, 449, 450, - 451, 452, 453, 454, 0, 455, 456, 820, 457, 458, - 459, 1224, 461, 462, 463, 464, 465, 466, 467, 468, - 469, 0, 470, 471, 472, 473, 474, 1225, 475, 476, - 477, 478, 479, 821, 480, 481, 1226, 483, 0, 484, - 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, - 495, 1227, 0, 497, 498, 0, 499, 822, 500, 501, - 502, 503, 504, 0, 1228, 1229, 0, 0, 507, 508, - 1230, 510, 1231, 1232, 512, 513, 514, 515, 516, 517, - 518, 0, 1233, 519, 520, 521, 522, 523, 1234, 0, - 524, 525, 526, 527, 528, 529, 1235, 0, 531, 823, - 532, 533, 534, 535, 0, 0, 536, 0, 0, 537, - 538, 539, 540, 541, 542, 543, 1236, 1237, 1238, 1239, - 548, 1240, 1241, 1242, 1243, 553, 554, 555, 556, 1244, - 0, 0, 0, 0, 0, 0, 1245, 1246, 0, 0, - 0, 0, 1248, 0, 1829, 2628, 1249, 800, 1177, 617, - 1178, 1179, 1180, 676, 1181, 0, 0, 0, 0, 0, - 0, 0, 224, 225, 226, 227, 228, 229, 230, 231, - 0, 233, 234, 235, 0, 0, 0, 0, 1182, 0, - 0, 236, 237, 0, 238, 239, 240, 801, 241, 242, - 243, 244, 1183, 802, 1184, 1185, 0, 248, 249, 250, - 251, 252, 1186, 1187, 253, 254, 1188, 1189, 257, 0, - 258, 259, 260, 261, 1190, 0, 1191, 0, 263, 264, - 265, 266, 267, 804, 268, 269, 270, 0, 271, 272, - 273, 274, 275, 276, 0, 805, 277, 278, 279, 1192, - 1193, 1194, 1195, 1196, 1197, 1198, 280, 281, 282, 283, - 284, 285, 1199, 1200, 288, 1201, 289, 0, 290, 291, - 292, 293, 294, 295, 0, 296, 297, 298, 299, 0, - 0, 300, 301, 1039, 303, 304, 0, 305, 306, 307, - 0, 308, 309, 310, 0, 311, 312, 313, 314, 1202, - 316, 317, 318, 1203, 1204, 320, 0, 321, 322, 1205, - 324, 0, 325, 0, 326, 807, 0, 808, 327, 328, - 329, 330, 0, 331, 1206, 0, 1207, 334, 0, 335, - 336, 337, 338, 339, 809, 340, 341, 342, 343, 0, - 344, 345, 346, 347, 348, 349, 0, 350, 810, 351, - 352, 353, 354, 355, 1208, 1209, 0, 1210, 0, 359, - 811, 812, 360, 813, 361, 362, 363, 364, 365, 0, - 0, 366, 1211, 814, 368, 815, 0, 369, 370, 371, - 1212, 1213, 372, 373, 374, 375, 376, 377, 378, 379, - 380, 381, 382, 383, 384, 385, 386, 387, 1214, 816, - 1215, 390, 391, 392, 393, 1216, 394, 395, 817, 396, - 1217, 1218, 398, 1219, 400, 401, 402, 0, 403, 404, - 0, 0, 1220, 406, 407, 0, 0, 408, 409, 818, - 410, 819, 1221, 412, 413, 414, 415, 416, 417, 418, - 419, 420, 0, 421, 422, 1222, 424, 425, 426, 427, - 428, 0, 429, 430, 431, 432, 433, 434, 435, 436, - 437, 1223, 439, 440, 441, 442, 0, 443, 444, 445, - 446, 447, 448, 449, 450, 451, 452, 453, 454, 0, - 455, 456, 820, 457, 458, 459, 1224, 461, 462, 463, - 464, 465, 466, 467, 468, 469, 0, 470, 471, 472, - 473, 474, 1225, 475, 476, 477, 478, 479, 821, 480, - 481, 1226, 483, 0, 484, 485, 486, 487, 488, 489, - 490, 491, 492, 493, 494, 495, 1227, 0, 497, 498, - 0, 499, 822, 500, 501, 502, 503, 504, 0, 1228, - 1229, 0, 0, 507, 508, 1230, 510, 1231, 1232, 512, - 513, 514, 515, 516, 517, 518, 0, 1233, 519, 520, - 521, 522, 523, 1234, 0, 524, 525, 526, 527, 528, - 529, 1235, 0, 531, 823, 532, 533, 534, 535, 0, - 0, 536, 0, 0, 537, 538, 539, 540, 541, 542, - 543, 1236, 1237, 1238, 1239, 548, 1240, 1241, 1242, 1243, - 553, 554, 555, 556, 1244, 0, 0, 0, 0, 0, - 0, 1245, 1246, 1247, 0, 0, 0, 1248, 0, 0, - 0, 1249, 800, 1177, 617, 1178, 1179, 1180, 676, 1181, - 0, 0, 0, 0, 0, 0, 0, 224, 225, 226, - 227, 228, 229, 230, 231, 2064, 233, 234, 235, 0, - 0, 0, 0, 1182, 0, 0, 236, 237, 0, 238, - 239, 240, 801, 241, 242, 243, 244, 1183, 802, 1184, - 1185, 0, 248, 249, 250, 251, 252, 1186, 1187, 253, - 254, 1188, 1189, 257, 0, 258, 259, 260, 261, 1190, - 0, 1191, 0, 263, 264, 265, 266, 267, 804, 268, - 269, 270, 0, 271, 272, 273, 274, 275, 276, 0, - 805, 277, 278, 279, 1192, 1193, 1194, 1195, 1196, 1197, - 1198, 280, 281, 282, 283, 284, 285, 1199, 1200, 288, - 1201, 289, 0, 290, 291, 292, 293, 294, 295, 0, - 296, 297, 298, 299, 0, 0, 300, 301, 1039, 303, - 304, 0, 305, 306, 307, 0, 308, 309, 310, 0, - 311, 312, 313, 314, 1202, 316, 317, 318, 1203, 1204, - 320, 0, 321, 322, 1205, 324, 0, 325, 0, 326, - 807, 0, 808, 327, 328, 329, 330, 0, 331, 1206, - 0, 1207, 334, 0, 335, 336, 337, 338, 339, 809, - 340, 341, 342, 343, 0, 344, 345, 346, 347, 348, - 349, 0, 350, 810, 351, 352, 353, 354, 355, 1208, - 1209, 0, 1210, 0, 359, 811, 812, 360, 813, 361, - 362, 363, 364, 365, 0, 0, 366, 1211, 814, 368, - 815, 0, 369, 370, 371, 1212, 1213, 372, 373, 374, - 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, - 385, 386, 387, 1214, 816, 1215, 390, 391, 392, 393, - 1216, 394, 395, 817, 396, 1217, 1218, 398, 1219, 400, - 401, 402, 0, 403, 404, 0, 0, 1220, 406, 407, - 0, 0, 408, 409, 818, 410, 819, 1221, 412, 413, - 414, 415, 416, 417, 418, 419, 420, 0, 421, 422, - 1222, 424, 425, 426, 427, 428, 0, 429, 430, 431, - 432, 433, 434, 435, 436, 437, 1223, 439, 440, 441, - 442, 0, 443, 444, 445, 446, 447, 448, 449, 450, - 451, 452, 453, 454, 0, 455, 456, 820, 457, 458, - 459, 1224, 461, 462, 463, 464, 465, 466, 467, 468, - 469, 0, 470, 471, 472, 473, 474, 1225, 475, 476, - 477, 478, 479, 821, 480, 481, 1226, 483, 0, 484, - 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, - 495, 1227, 0, 497, 498, 0, 499, 822, 500, 501, - 502, 503, 504, 0, 1228, 1229, 0, 0, 507, 508, - 1230, 510, 1231, 1232, 512, 513, 514, 515, 516, 517, - 518, 0, 1233, 519, 520, 521, 522, 523, 1234, 0, - 524, 525, 526, 527, 528, 529, 1235, 0, 531, 823, - 532, 533, 534, 535, 0, 0, 536, 0, 0, 537, - 538, 539, 540, 541, 542, 543, 1236, 1237, 1238, 1239, - 548, 1240, 1241, 1242, 1243, 553, 554, 555, 556, 1244, - 0, 0, 0, 0, 0, 0, 1245, 1246, 0, 0, - 0, 0, 1248, 0, 0, 0, 1249, 800, 1177, 617, - 1178, 1179, 1180, 676, 1181, 0, 0, 0, 0, 0, - 0, 0, 224, 225, 226, 227, 228, 229, 230, 231, - 0, 233, 234, 235, 0, 0, 0, 0, 1182, 0, - 0, 236, 237, 0, 238, 239, 240, 801, 241, 242, - 243, 244, 1183, 802, 1184, 1185, 0, 248, 249, 250, - 251, 252, 1186, 1187, 253, 254, 1188, 1189, 257, 0, - 258, 259, 260, 261, 1190, 0, 1191, 0, 263, 264, - 265, 266, 267, 804, 268, 269, 270, 0, 271, 272, - 273, 274, 275, 276, 0, 805, 277, 278, 279, 1192, - 1193, 1194, 1195, 1196, 1197, 1198, 280, 281, 282, 283, - 284, 285, 1199, 1200, 288, 1201, 289, 0, 290, 291, - 292, 293, 294, 295, 0, 296, 297, 298, 299, 0, - 0, 300, 301, 1039, 303, 304, 0, 305, 306, 307, - 0, 308, 309, 310, 0, 311, 312, 313, 314, 1202, - 316, 317, 318, 1203, 1204, 320, 0, 321, 322, 1205, - 324, 0, 325, 0, 326, 807, 2676, 808, 327, 328, - 329, 330, 0, 331, 1206, 0, 1207, 334, 0, 335, - 336, 337, 338, 339, 809, 340, 341, 342, 343, 0, - 344, 345, 346, 347, 348, 349, 0, 350, 810, 351, - 352, 353, 354, 355, 1208, 1209, 0, 1210, 0, 359, - 811, 812, 360, 813, 361, 362, 363, 364, 365, 0, - 0, 366, 1211, 814, 368, 815, 0, 369, 370, 371, - 1212, 1213, 372, 373, 374, 375, 376, 377, 378, 379, - 380, 381, 382, 383, 384, 385, 386, 387, 1214, 816, - 1215, 390, 391, 392, 393, 1216, 394, 395, 817, 396, - 1217, 1218, 398, 1219, 400, 401, 402, 0, 403, 404, - 0, 0, 1220, 406, 407, 0, 0, 408, 409, 818, - 410, 819, 1221, 412, 413, 414, 415, 416, 417, 418, - 419, 420, 0, 421, 422, 1222, 424, 425, 426, 427, - 428, 0, 429, 430, 431, 432, 433, 434, 435, 436, - 437, 1223, 439, 440, 441, 442, 0, 443, 444, 445, - 446, 447, 448, 449, 450, 451, 452, 453, 454, 0, - 455, 456, 820, 457, 458, 459, 1224, 461, 462, 463, - 464, 465, 466, 467, 468, 469, 0, 470, 471, 472, - 473, 474, 1225, 475, 476, 477, 478, 479, 821, 480, - 481, 1226, 483, 0, 484, 485, 486, 487, 488, 489, - 490, 491, 492, 493, 494, 495, 1227, 0, 497, 498, - 0, 499, 822, 500, 501, 502, 503, 504, 0, 1228, - 1229, 0, 0, 507, 508, 1230, 510, 1231, 1232, 512, - 513, 514, 515, 516, 517, 518, 0, 1233, 519, 520, - 521, 522, 523, 1234, 0, 524, 525, 526, 527, 528, - 529, 1235, 0, 531, 823, 532, 533, 534, 535, 0, - 0, 536, 0, 0, 537, 538, 539, 540, 541, 542, - 543, 1236, 1237, 1238, 1239, 548, 1240, 1241, 1242, 1243, - 553, 554, 555, 556, 1244, 0, 0, 0, 0, 0, - 0, 1245, 1246, 0, 0, 0, 0, 1248, 0, 0, - 0, 1249, 800, 1177, 617, 1178, 1179, 1180, 676, 1181, - 0, 0, 0, 0, 0, 0, 0, 224, 225, 226, - 227, 228, 229, 230, 231, 0, 233, 234, 235, 0, - 0, 0, 0, 1182, 0, 0, 236, 237, 0, 238, - 239, 240, 801, 241, 242, 243, 244, 1183, 802, 1184, - 1185, 0, 248, 249, 250, 251, 252, 1186, 1187, 253, - 254, 1188, 1189, 257, 0, 258, 259, 260, 261, 1190, - 0, 1191, 0, 263, 264, 265, 266, 267, 804, 268, - 269, 270, 0, 271, 272, 273, 274, 275, 276, 0, - 805, 277, 278, 279, 1192, 1193, 1194, 1195, 1196, 1197, - 1198, 280, 281, 282, 283, 284, 285, 1199, 1200, 288, - 1201, 289, 0, 290, 291, 292, 293, 294, 295, 0, - 296, 297, 298, 299, 0, 0, 300, 301, 1039, 303, - 304, 0, 305, 306, 307, 0, 308, 309, 310, 0, - 311, 312, 313, 314, 1202, 316, 317, 318, 1203, 1204, - 320, 0, 321, 322, 1205, 324, 0, 325, 0, 326, - 807, 0, 808, 327, 328, 329, 330, 0, 331, 1206, - 0, 1207, 334, 0, 335, 336, 337, 338, 339, 809, - 340, 341, 342, 343, 0, 344, 345, 346, 347, 348, - 349, 0, 350, 810, 351, 352, 353, 354, 355, 1208, - 1209, 0, 1210, 0, 359, 811, 812, 360, 813, 361, - 362, 363, 364, 365, 0, 0, 366, 1211, 814, 368, - 815, 0, 369, 370, 371, 1212, 1213, 372, 373, 374, - 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, - 385, 386, 387, 1214, 816, 1215, 390, 391, 392, 393, - 1216, 394, 395, 817, 396, 1217, 1218, 398, 1219, 400, - 401, 402, 0, 403, 404, 0, 0, 1220, 406, 407, - 0, 0, 408, 409, 818, 410, 819, 1221, 412, 413, - 414, 415, 416, 417, 418, 419, 420, 0, 421, 422, - 1222, 424, 425, 426, 427, 428, 0, 429, 430, 431, - 432, 433, 434, 435, 436, 437, 1223, 439, 440, 441, - 442, 0, 443, 444, 445, 446, 447, 448, 449, 450, - 451, 452, 453, 454, 0, 455, 456, 820, 457, 458, - 459, 1224, 461, 462, 463, 464, 465, 466, 467, 468, - 469, 0, 470, 471, 472, 473, 474, 1225, 475, 476, - 477, 478, 479, 821, 480, 481, 1226, 483, 0, 484, - 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, - 495, 1227, 0, 497, 498, 0, 499, 822, 500, 501, - 502, 503, 504, 0, 1228, 1229, 0, 0, 507, 508, - 1230, 510, 1231, 1232, 512, 513, 514, 515, 516, 517, - 518, 0, 1233, 519, 520, 521, 522, 523, 1234, 0, - 524, 525, 526, 527, 528, 529, 1235, 4030, 531, 823, - 532, 533, 534, 535, 0, 0, 536, 0, 0, 537, - 538, 539, 540, 541, 542, 543, 1236, 1237, 1238, 1239, - 548, 1240, 1241, 1242, 1243, 553, 554, 555, 556, 1244, - 0, 0, 0, 0, 0, 0, 1245, 1246, 0, 0, - 0, 0, 1248, 0, 0, 0, 1249, 800, 1177, 617, - 1178, 1179, 1180, 676, 1181, 0, 0, 0, 0, 0, - 0, 0, 224, 225, 226, 227, 228, 229, 230, 231, - 0, 233, 234, 235, 0, 0, 0, 0, 1182, 0, - 0, 236, 237, 0, 238, 239, 240, 801, 241, 242, - 243, 244, 1183, 802, 1184, 1185, 0, 248, 249, 250, - 251, 252, 1186, 1187, 253, 254, 1188, 1189, 257, 0, - 258, 259, 260, 261, 1190, 0, 1191, 0, 263, 264, - 265, 266, 267, 804, 268, 269, 270, 0, 271, 272, - 273, 274, 275, 276, 0, 805, 277, 278, 279, 1192, - 1193, 1194, 1195, 1196, 1197, 1198, 280, 281, 282, 283, - 284, 285, 1199, 1200, 288, 1201, 289, 0, 290, 291, - 292, 293, 294, 295, 0, 296, 297, 298, 299, 0, - 0, 300, 301, 1039, 303, 304, 0, 305, 306, 307, - 0, 308, 309, 310, 0, 311, 312, 313, 314, 1202, - 316, 317, 318, 1203, 1204, 320, 0, 321, 322, 1205, - 324, 0, 325, 0, 326, 807, 0, 808, 327, 328, - 329, 330, 0, 331, 1206, 0, 1207, 334, 0, 335, - 336, 337, 338, 339, 809, 340, 341, 342, 343, 0, - 344, 345, 346, 347, 348, 349, 0, 350, 810, 351, - 352, 353, 354, 355, 1208, 1209, 0, 1210, 0, 359, - 811, 812, 360, 813, 361, 362, 363, 364, 365, 0, - 0, 366, 1211, 814, 368, 815, 0, 369, 370, 371, - 1212, 1213, 372, 373, 374, 375, 376, 377, 378, 379, - 380, 381, 382, 383, 384, 385, 386, 387, 1214, 816, - 1215, 390, 391, 392, 393, 1216, 394, 395, 817, 396, - 1217, 1218, 398, 1219, 400, 401, 402, 0, 403, 404, - 0, 0, 1220, 406, 407, 0, 0, 408, 409, 818, - 410, 819, 1221, 412, 413, 414, 415, 416, 417, 418, - 419, 420, 0, 421, 422, 1222, 424, 425, 426, 427, - 428, 0, 429, 430, 431, 432, 433, 434, 435, 436, - 437, 1223, 439, 440, 441, 442, 0, 443, 444, 445, - 446, 447, 448, 449, 450, 451, 452, 453, 454, 0, - 455, 456, 820, 457, 458, 459, 1224, 461, 462, 463, - 464, 465, 466, 467, 468, 469, 0, 470, 471, 472, - 473, 474, 1225, 475, 476, 477, 478, 479, 821, 480, - 481, 1226, 483, 0, 484, 485, 486, 487, 488, 489, - 490, 491, 492, 493, 494, 495, 1227, 0, 497, 498, - 0, 499, 822, 500, 501, 502, 503, 504, 0, 1228, - 1229, 0, 0, 507, 508, 1230, 510, 1231, 1232, 512, - 513, 514, 515, 516, 517, 518, 0, 1233, 519, 520, - 521, 522, 523, 1234, 0, 524, 525, 526, 527, 528, - 529, 1235, 0, 531, 823, 532, 533, 534, 535, 0, - 0, 536, 0, 0, 537, 538, 539, 540, 541, 542, - 543, 1236, 1237, 1238, 1239, 548, 1240, 1241, 1242, 1243, - 553, 554, 555, 556, 1244, 0, 0, 0, 0, 0, - 0, 1245, 1246, 0, 0, 0, 0, 1248, 0, 0, - 0, 1249, 800, 1177, 617, 1178, 1179, 1180, 676, 1181, - 0, 0, 0, 0, 0, 0, 0, 224, 225, 226, - 227, 228, 229, 230, 231, 0, 233, 234, 235, 0, - 0, 0, 0, 1182, 0, 0, 236, 237, 0, 238, - 239, 240, 801, 241, 242, 243, 244, 1183, 802, 1184, - 1185, 0, 248, 249, 250, 251, 252, 1186, 1187, 253, - 254, 1188, 1189, 257, 0, 258, 259, 260, 261, 1190, - 0, 1191, 0, 263, 264, 265, 266, 267, 804, 268, - 269, 270, 0, 271, 272, 273, 274, 275, 276, 0, - 805, 277, 278, 279, 1192, 1193, 1194, 1195, 1196, 1197, - 1198, 280, 281, 282, 283, 284, 285, 1199, 1200, 288, - 1201, 289, 0, 290, 291, 292, 293, 294, 295, 0, - 296, 297, 298, 299, 0, 0, 300, 301, 1039, 303, - 304, 0, 305, 306, 307, 0, 308, 309, 310, 0, - 311, 312, 313, 314, 1202, 316, 317, 318, 1203, 1204, - 320, 0, 321, 322, 1205, 324, 0, 325, 0, 326, - 807, 0, 808, 327, 328, 329, 330, 0, 331, 1206, - 0, 1207, 334, 0, 335, 336, 337, 338, 339, 809, - 340, 341, 342, 343, 0, 344, 345, 346, 347, 348, - 349, 0, 350, 810, 351, 352, 353, 354, 355, 1208, - 1209, 0, 1210, 0, 359, 811, 812, 360, 813, 361, - 362, 363, 364, 365, 0, 0, 366, 1211, 814, 368, - 815, 0, 369, 370, 371, 1212, 1213, 372, 373, 374, - 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, - 385, 386, 387, 1214, 816, 1215, 390, 391, 392, 393, - 1216, 394, 395, 817, 396, 1217, 1218, 398, 1219, 400, - 401, 402, 0, 403, 404, 0, 0, 1220, 406, 407, - 0, 0, 408, 409, 818, 410, 819, 1221, 412, 413, - 414, 415, 416, 417, 418, 419, 420, 0, 421, 422, - 1222, 424, 425, 426, 427, 428, 0, 429, 430, 431, - 432, 433, 434, 435, 436, 437, 1223, 439, 440, 441, - 442, 0, 443, 444, 445, 446, 447, 448, 449, 450, - 451, 452, 453, 454, 0, 455, 456, 820, 457, 458, - 459, 1224, 461, 462, 463, 464, 465, 466, 467, 468, - 469, 0, 470, 471, 472, 473, 474, 1225, 475, 476, - 477, 478, 479, 821, 480, 481, 1226, 483, 0, 484, - 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, - 495, 1227, 0, 497, 498, 0, 499, 822, 500, 501, - 502, 503, 504, 0, 1228, 1229, 0, 0, 507, 508, - 1230, 510, 1231, 1232, 512, 513, 514, 515, 516, 517, - 518, 0, 1233, 519, 520, 521, 522, 523, 1234, 0, - 524, 525, 526, 527, 528, 529, 1235, 0, 531, 823, - 532, 533, 534, 535, 0, 0, 536, 0, 0, 537, - 538, 539, 540, 541, 542, 543, 1236, 1237, 1238, 1239, - 548, 1240, 1241, 1242, 1243, 553, 554, 555, 556, 1244, - 0, 0, 0, 0, 0, 0, 2067, 2068, 0, 0, - 0, 0, 1248, 0, 0, 0, 1249, 800, 2806, 617, - 1178, 1179, 1180, 676, 1181, 0, 0, 0, 0, 0, - 0, 0, 224, 225, 226, 227, 228, 229, 230, 231, - 0, 233, 234, 235, 0, 0, 0, 0, 1182, 0, - 0, 236, 237, 0, 238, 239, 240, 801, 241, 242, - 243, 244, 1183, 802, 1184, 1185, 0, 248, 249, 250, - 251, 252, 1186, 1187, 253, 254, 1188, 1189, 257, 0, - 258, 259, 260, 261, 1190, 0, 1191, 0, 263, 264, - 265, 266, 267, 804, 268, 269, 270, 0, 271, 272, - 273, 274, 275, 276, 0, 805, 277, 278, 279, 1192, - 1193, 1194, 1195, 1196, 1197, 1198, 280, 281, 282, 283, - 284, 285, 1199, 1200, 288, 1201, 289, 0, 290, 291, - 292, 293, 294, 295, 0, 296, 297, 298, 299, 0, - 0, 300, 301, 1039, 303, 304, 0, 305, 306, 307, - 0, 308, 309, 310, 0, 311, 312, 313, 314, 1202, - 316, 317, 318, 1203, 1204, 320, 0, 321, 322, 1205, - 324, 0, 325, 0, 326, 807, 0, 808, 327, 328, - 329, 330, 0, 331, 1206, 0, 1207, 334, 0, 335, - 336, 337, 338, 339, 809, 340, 341, 342, 343, 0, - 344, 345, 346, 347, 348, 349, 0, 350, 810, 351, - 352, 353, 354, 355, 1208, 1209, 0, 1210, 0, 359, - 811, 812, 360, 813, 361, 362, 363, 364, 365, 0, - 0, 366, 1211, 814, 368, 815, 0, 369, 370, 371, - 1212, 1213, 372, 373, 374, 375, 376, 377, 378, 379, - 380, 381, 382, 383, 384, 385, 386, 387, 1214, 816, - 1215, 390, 391, 392, 393, 1216, 394, 395, 817, 396, - 1217, 1218, 398, 1219, 400, 401, 402, 0, 403, 404, - 0, 0, 1220, 406, 407, 0, 0, 408, 409, 818, - 410, 819, 1221, 412, 413, 414, 415, 416, 417, 418, - 419, 420, 0, 421, 422, 1222, 424, 425, 426, 427, - 428, 0, 429, 430, 431, 432, 433, 434, 435, 436, - 437, 1223, 439, 440, 441, 442, 0, 443, 444, 445, - 446, 447, 448, 449, 450, 451, 452, 453, 454, 0, - 455, 456, 820, 457, 458, 459, 1224, 461, 462, 463, - 464, 465, 466, 467, 468, 469, 0, 470, 471, 472, - 473, 474, 1225, 475, 476, 477, 478, 479, 821, 480, - 481, 1226, 483, 0, 484, 485, 486, 487, 488, 489, - 490, 491, 492, 493, 494, 495, 1227, 0, 497, 498, - 0, 499, 822, 500, 501, 502, 503, 504, 0, 1228, - 1229, 0, 0, 507, 508, 1230, 510, 1231, 1232, 512, - 513, 514, 515, 516, 517, 518, 0, 1233, 519, 520, - 521, 522, 523, 1234, 0, 524, 525, 526, 527, 528, - 529, 1235, 0, 531, 823, 532, 533, 534, 535, 0, - 0, 536, 0, 0, 537, 538, 539, 540, 541, 542, - 543, 1236, 1237, 1238, 1239, 548, 1240, 1241, 1242, 1243, - 553, 554, 555, 556, 1244, 0, 0, 0, 0, 0, - 0, 1245, 1246, 0, 0, 0, 0, 1248, 0, 0, - 0, 1249, 800, 1177, 617, 1178, 1179, 1180, 676, 1181, - 0, 0, 0, 0, 0, 0, 0, 224, 225, 226, - 227, 228, 229, 230, 231, 0, 233, 234, 235, 0, - 0, 0, 0, 1182, 0, 0, 236, 237, 0, 238, - 239, 240, 801, 241, 242, 243, 244, 1183, 802, 1184, - 1185, 0, 248, 249, 250, 251, 252, 1186, 1187, 253, - 254, 1188, 1189, 257, 0, 258, 259, 260, 261, 1190, - 0, 1191, 0, 263, 264, 265, 266, 267, 804, 268, - 269, 270, 0, 271, 272, 273, 274, 275, 276, 0, - 805, 277, 278, 4042, 1192, 1193, 1194, 1195, 1196, 1197, - 1198, 280, 281, 282, 283, 284, 285, 1199, 1200, 288, - 1201, 289, 0, 290, 291, 292, 293, 294, 295, 0, - 296, 297, 298, 299, 0, 0, 300, 301, 1039, 303, - 304, 0, 305, 306, 307, 0, 308, 309, 310, 0, - 311, 312, 313, 314, 1202, 316, 317, 318, 1203, 1204, - 320, 0, 321, 322, 1205, 324, 0, 325, 0, 326, - 807, 0, 808, 327, 328, 329, 330, 0, 331, 1206, - 0, 1207, 334, 0, 335, 336, 337, 338, 339, 809, - 340, 341, 342, 343, 0, 344, 345, 346, 347, 348, - 349, 0, 350, 810, 351, 352, 353, 354, 355, 1208, - 1209, 0, 1210, 0, 359, 811, 812, 360, 813, 361, - 362, 363, 364, 365, 0, 0, 366, 1211, 814, 368, - 815, 0, 369, 370, 371, 1212, 1213, 372, 373, 374, - 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, - 385, 386, 387, 1214, 816, 1215, 390, 391, 392, 393, - 1216, 394, 395, 817, 396, 1217, 1218, 398, 1219, 400, - 401, 402, 0, 403, 404, 0, 0, 1220, 406, 407, - 0, 0, 408, 409, 818, 410, 819, 1221, 412, 413, - 414, 415, 416, 417, 418, 419, 420, 0, 421, 422, - 1222, 424, 425, 426, 427, 428, 0, 429, 430, 431, - 432, 433, 434, 435, 436, 437, 1223, 439, 440, 441, - 442, 0, 443, 444, 445, 446, 447, 448, 449, 450, - 451, 452, 453, 454, 0, 455, 456, 820, 457, 458, - 459, 1224, 461, 462, 463, 464, 465, 466, 467, 468, - 469, 0, 470, 471, 472, 473, 474, 1225, 475, 476, - 477, 478, 479, 821, 480, 481, 1226, 483, 0, 484, - 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, - 495, 1227, 0, 497, 498, 0, 499, 822, 500, 501, - 502, 503, 504, 0, 1228, 1229, 0, 0, 507, 508, - 1230, 510, 1231, 1232, 512, 513, 514, 515, 516, 517, - 518, 0, 1233, 519, 520, 521, 522, 523, 1234, 0, - 524, 525, 526, 527, 528, 529, 1235, 0, 531, 823, - 532, 533, 534, 535, 0, 0, 536, 0, 0, 537, - 538, 539, 540, 541, 542, 543, 1236, 1237, 1238, 1239, - 548, 1240, 1241, 1242, 1243, 553, 554, 555, 556, 1244, - 0, 0, 0, 0, 0, 0, 1245, 1246, 0, 0, - 0, 0, 1248, 0, 0, 0, 1249, 800, 1177, 617, - 1178, 1179, 1180, 676, 1181, 0, 0, 0, 0, 0, - 0, 0, 224, 225, 226, 227, 228, 229, 230, 231, - 0, 233, 234, 235, 0, 0, 0, 0, 1182, 0, - 0, 236, 237, 0, 238, 239, 240, 801, 241, 242, - 243, 244, 1183, 802, 1184, 1185, 0, 248, 249, 250, - 251, 252, 1186, 1187, 253, 254, 1188, 1189, 257, 0, - 258, 259, 260, 261, 1190, 0, 1191, 0, 263, 264, - 265, 266, 267, 804, 268, 269, 270, 0, 271, 272, - 273, 274, 275, 276, 0, 805, 277, 278, 279, 1192, - 1193, 1194, 1195, 1196, 1197, 1198, 280, 281, 282, 283, - 284, 285, 1199, 1200, 288, 1201, 289, 0, 290, 291, - 292, 293, 294, 295, 0, 296, 297, 298, 299, 0, - 0, 300, 301, 1039, 303, 304, 0, 305, 306, 307, - 0, 308, 309, 310, 0, 311, 312, 313, 314, 1202, - 316, 317, 318, 1203, 1204, 320, 0, 321, 322, 1205, - 324, 0, 325, 0, 326, 807, 0, 808, 327, 328, - 329, 330, 0, 331, 1206, 0, 1207, 334, 0, 335, - 336, 337, 338, 339, 809, 340, 341, 342, 343, 0, - 344, 345, 346, 347, 348, 349, 0, 350, 810, 351, - 352, 353, 354, 355, 1208, 1209, 0, 1210, 0, 359, - 811, 812, 360, 813, 361, 362, 363, 364, 365, 0, - 0, 366, 1211, 814, 368, 815, 0, 369, 370, 371, - 1212, 1213, 372, 373, 374, 375, 376, 377, 378, 379, - 380, 381, 382, 383, 384, 385, 386, 387, 1214, 816, - 1215, 390, 391, 392, 393, 1216, 394, 395, 817, 396, - 1217, 1218, 398, 1219, 400, 401, 402, 0, 403, 404, - 0, 0, 1220, 406, 407, 0, 0, 408, 409, 818, - 410, 819, 1221, 412, 413, 414, 415, 416, 417, 418, - 419, 420, 0, 421, 422, 1222, 424, 425, 426, 427, - 428, 0, 429, 430, 431, 432, 433, 434, 435, 436, - 437, 1223, 439, 440, 441, 442, 0, 443, 444, 445, - 446, 447, 448, 449, 450, 451, 452, 453, 454, 0, - 455, 456, 820, 457, 458, 459, 1224, 461, 462, 463, - 464, 465, 466, 467, 468, 469, 0, 470, 471, 472, - 473, 474, 1225, 475, 476, 477, 478, 479, 821, 480, - 481, 1226, 483, 0, 484, 485, 486, 487, 488, 489, - 490, 491, 492, 493, 494, 495, 1227, 0, 497, 498, - 0, 499, 822, 500, 501, 502, 503, 504, 0, 1228, - 1229, 0, 0, 507, 508, 1230, 510, 1231, 1232, 512, - 513, 514, 515, 516, 517, 518, 0, 1233, 519, 520, - 521, 522, 523, 1234, 0, 524, 525, 526, 527, 528, - 529, 1235, 0, 531, 823, 532, 533, 534, 535, 0, - 0, 536, 0, 0, 537, 538, 539, 540, 541, 542, - 4367, 1236, 1237, 1238, 1239, 548, 1240, 1241, 1242, 1243, - 553, 554, 555, 556, 1244, 0, 0, 0, 0, 0, - 0, 1245, 1246, 0, 0, 0, 0, 1248, 0, 0, - 0, 1249, 800, 1177, 617, 1178, 1179, 1180, 676, 1181, - 0, 0, 0, 0, 0, 0, 0, 224, 225, 226, - 227, 228, 229, 230, 231, 0, 233, 234, 235, 0, - 0, 0, 0, 1182, 0, 0, 236, 237, 0, 238, - 239, 240, 801, 241, 242, 243, 244, 1183, 802, 1184, - 1185, 0, 248, 249, 250, 251, 252, 1186, 1187, 253, - 254, 1188, 1189, 257, 0, 258, 259, 260, 261, 1190, - 0, 1191, 0, 263, 264, 265, 266, 267, 804, 268, - 269, 270, 0, 271, 272, 273, 274, 275, 276, 0, - 805, 277, 278, 279, 1192, 1193, 1194, 1195, 1196, 1197, - 1198, 280, 281, 282, 283, 284, 285, 1199, 1200, 288, - 1201, 289, 0, 290, 291, 292, 293, 294, 295, 0, - 296, 297, 298, 299, 0, 0, 300, 301, 1039, 303, - 304, 0, 305, 306, 307, 0, 308, 309, 310, 0, - 311, 312, 313, 314, 1202, 316, 317, 318, 1203, 1204, - 320, 0, 321, 322, 1205, 324, 0, 325, 0, 326, - 807, 0, 808, 327, 328, 329, 330, 0, 331, 1206, - 0, 1207, 334, 0, 335, 336, 337, 338, 339, 809, - 340, 341, 342, 343, 0, 344, 345, 346, 347, 348, - 349, 0, 350, 810, 351, 352, 353, 354, 355, 1208, - 1209, 0, 1210, 0, 359, 811, 812, 360, 813, 361, - 362, 363, 364, 365, 0, 0, 366, 1211, 814, 368, - 815, 0, 369, 370, 371, 1212, 1213, 372, 373, 374, - 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, - 385, 386, 387, 1214, 816, 1215, 390, 391, 4376, 393, - 1216, 394, 395, 817, 396, 1217, 1218, 398, 1219, 400, - 401, 402, 0, 403, 404, 0, 0, 1220, 406, 407, - 0, 0, 408, 409, 818, 410, 819, 1221, 412, 413, - 414, 415, 416, 417, 418, 419, 420, 0, 421, 422, - 1222, 424, 425, 426, 427, 428, 0, 429, 430, 431, - 432, 433, 434, 435, 436, 437, 1223, 439, 440, 441, - 442, 0, 443, 444, 445, 446, 447, 448, 449, 450, - 451, 452, 453, 454, 0, 455, 456, 820, 457, 458, - 459, 1224, 461, 462, 463, 464, 465, 466, 467, 468, - 469, 0, 470, 471, 472, 473, 474, 1225, 475, 476, - 477, 478, 479, 821, 480, 481, 1226, 483, 0, 484, - 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, - 495, 1227, 0, 497, 498, 0, 499, 822, 500, 501, - 502, 503, 504, 0, 1228, 1229, 0, 0, 507, 508, - 1230, 510, 1231, 1232, 512, 513, 514, 515, 516, 517, - 518, 0, 1233, 519, 520, 521, 522, 523, 1234, 0, - 524, 525, 526, 527, 528, 529, 1235, 0, 531, 823, - 532, 533, 534, 535, 0, 0, 536, 0, 0, 537, - 538, 539, 540, 541, 542, 543, 1236, 1237, 1238, 1239, - 548, 1240, 1241, 1242, 1243, 553, 554, 555, 556, 1244, - 0, 0, 0, 0, 0, 0, 1245, 1246, 0, 0, - 0, 0, 1248, 0, 0, 0, 1249, 800, 1177, 617, - 1178, 1179, 1180, 676, 1181, 0, 0, 0, 0, 0, - 0, 0, 224, 225, 226, 227, 228, 229, 230, 231, - 0, 233, 234, 235, 0, 0, 0, 0, 1182, 0, - 0, 236, 237, 0, 238, 239, 240, 801, 241, 242, - 243, 244, 1183, 802, 1184, 1185, 0, 248, 249, 250, - 251, 252, 1186, 1187, 253, 254, 1188, 1189, 257, 0, - 258, 259, 260, 261, 1190, 0, 1191, 0, 263, 264, - 265, 266, 267, 804, 268, 269, 270, 0, 271, 272, - 273, 274, 275, 276, 0, 805, 277, 4689, 279, 1192, - 1193, 1194, 1195, 1196, 1197, 1198, 280, 281, 282, 283, - 284, 285, 1199, 1200, 288, 1201, 289, 0, 290, 291, - 292, 293, 294, 295, 0, 296, 297, 298, 299, 0, - 0, 300, 301, 1039, 303, 304, 0, 305, 306, 307, - 0, 308, 309, 310, 0, 311, 312, 313, 314, 1202, - 316, 317, 318, 1203, 1204, 320, 0, 321, 322, 1205, - 324, 0, 325, 0, 326, 807, 0, 808, 327, 328, - 329, 330, 0, 331, 1206, 0, 4690, 334, 0, 335, - 336, 337, 338, 339, 809, 340, 341, 342, 343, 0, - 344, 345, 346, 347, 348, 349, 0, 350, 810, 351, - 352, 353, 354, 355, 1208, 1209, 0, 1210, 0, 359, - 811, 812, 360, 813, 361, 362, 363, 364, 365, 0, - 0, 366, 1211, 814, 368, 815, 0, 369, 370, 371, - 1212, 1213, 372, 373, 374, 375, 376, 377, 378, 379, - 380, 381, 382, 383, 384, 385, 386, 387, 1214, 816, - 1215, 390, 391, 392, 393, 1216, 394, 395, 817, 396, - 1217, 1218, 398, 1219, 400, 401, 402, 0, 403, 404, - 0, 0, 1220, 406, 407, 0, 0, 408, 409, 818, - 410, 819, 1221, 412, 413, 414, 415, 416, 417, 418, - 419, 420, 0, 421, 422, 1222, 424, 425, 426, 427, - 428, 0, 429, 430, 431, 432, 433, 434, 435, 436, - 437, 1223, 439, 440, 441, 442, 0, 443, 444, 445, - 446, 447, 448, 449, 450, 451, 452, 453, 454, 0, - 455, 456, 820, 457, 458, 4691, 1224, 461, 462, 463, - 464, 465, 466, 467, 468, 469, 0, 470, 471, 472, - 473, 474, 1225, 475, 476, 477, 478, 479, 821, 480, - 481, 1226, 483, 0, 484, 485, 486, 487, 488, 489, - 490, 491, 492, 493, 494, 495, 1227, 0, 497, 498, - 0, 499, 822, 500, 501, 502, 503, 504, 0, 1228, - 1229, 0, 0, 507, 508, 1230, 510, 1231, 1232, 512, - 513, 514, 515, 516, 517, 518, 0, 1233, 519, 520, - 521, 522, 523, 1234, 0, 524, 525, 526, 527, 528, - 529, 1235, 0, 531, 823, 532, 533, 534, 535, 0, - 0, 536, 0, 0, 537, 538, 539, 540, 541, 542, - 543, 1236, 1237, 1238, 1239, 548, 1240, 1241, 1242, 1243, - 553, 554, 555, 556, 1244, 0, 0, 0, 0, 0, - 0, 1245, 1246, 0, 0, 0, 0, 1248, 0, 0, - 0, 4692, 800, 1177, 617, 1178, 1179, 1180, 676, 1181, - 0, 0, 0, 0, 0, 0, 0, 224, 225, 226, - 227, 228, 229, 230, 231, 0, 233, 234, 235, 0, - 0, 0, 0, 1182, 0, 0, 236, 237, 0, 238, - 239, 240, 801, 241, 242, 243, 5162, 1183, 802, 1184, - 1185, 0, 248, 249, 250, 251, 252, 1186, 1187, 253, - 254, 1188, 1189, 257, 0, 258, 259, 260, 261, 1190, - 0, 1191, 0, 263, 264, 265, 266, 267, 804, 268, - 269, 270, 0, 271, 272, 273, 274, 275, 276, 0, - 805, 277, 278, 5163, 1192, 1193, 1194, 1195, 1196, 1197, - 1198, 280, 281, 282, 283, 284, 285, 1199, 1200, 288, - 1201, 289, 0, 290, 291, 292, 293, 294, 295, 0, - 296, 297, 298, 299, 0, 0, 300, 301, 1039, 303, - 304, 0, 305, 306, 307, 0, 308, 309, 310, 0, - 311, 312, 313, 314, 1202, 316, 317, 318, 1203, 1204, - 320, 0, 321, 322, 1205, 324, 0, 325, 0, 326, - 807, 0, 808, 327, 328, 329, 330, 0, 331, 1206, - 0, 1207, 334, 0, 335, 336, 337, 338, 339, 809, - 340, 341, 342, 343, 0, 344, 345, 346, 347, 348, - 349, 0, 350, 810, 351, 352, 353, 354, 355, 1208, - 1209, 0, 1210, 0, 359, 811, 812, 360, 813, 361, - 362, 363, 364, 365, 0, 0, 366, 1211, 814, 368, - 815, 0, 369, 370, 371, 1212, 1213, 372, 373, 374, - 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, - 385, 386, 387, 1214, 816, 1215, 390, 391, 392, 393, - 1216, 394, 395, 817, 396, 1217, 1218, 398, 1219, 400, - 401, 402, 0, 403, 404, 0, 0, 1220, 406, 407, - 0, 0, 408, 409, 818, 410, 819, 1221, 412, 413, - 414, 415, 416, 417, 418, 419, 420, 0, 421, 422, - 1222, 424, 425, 426, 427, 428, 0, 429, 430, 431, - 432, 433, 434, 435, 436, 437, 1223, 439, 440, 441, - 442, 0, 443, 444, 445, 446, 447, 448, 449, 450, - 451, 452, 453, 454, 0, 455, 456, 820, 457, 458, - 459, 1224, 461, 462, 463, 464, 465, 466, 467, 468, - 469, 0, 470, 471, 472, 473, 474, 1225, 475, 476, - 477, 478, 479, 821, 480, 481, 1226, 483, 0, 484, - 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, - 495, 1227, 0, 497, 498, 0, 499, 822, 500, 501, - 502, 503, 504, 0, 1228, 1229, 0, 0, 507, 508, - 1230, 510, 1231, 1232, 512, 513, 514, 515, 5164, 517, - 518, 0, 1233, 519, 520, 521, 522, 523, 1234, 0, - 524, 525, 526, 527, 528, 529, 1235, 0, 531, 823, - 532, 533, 534, 535, 0, 0, 536, 0, 0, 537, - 538, 539, 540, 541, 542, 543, 1236, 1237, 1238, 1239, - 548, 1240, 1241, 1242, 1243, 553, 554, 555, 556, 1244, - 0, 0, 0, 0, 0, 0, 1245, 1246, 0, 0, - 0, 0, 1248, 0, 0, 0, 1249, 800, 1177, 617, - 1178, 1179, 1180, 676, 1181, 0, 0, 0, 0, 0, - 0, 0, 224, 225, 226, 227, 228, 229, 230, 231, - 0, 233, 234, 235, 0, 0, 0, 0, 1182, 0, - 0, 236, 237, 0, 238, 239, 240, 801, 241, 242, - 243, 244, 1183, 802, 1184, 1185, 0, 248, 249, 250, - 251, 252, 1186, 1187, 253, 254, 1188, 1189, 257, 0, - 258, 259, 260, 261, 1190, 0, 1191, 0, 263, 264, - 265, 266, 267, 804, 268, 269, 270, 0, 271, 272, - 273, 274, 275, 276, 0, 805, 277, 278, 5163, 1192, - 1193, 1194, 1195, 1196, 1197, 1198, 280, 281, 282, 283, - 284, 285, 1199, 1200, 288, 1201, 289, 0, 290, 291, - 292, 293, 294, 295, 0, 296, 297, 298, 299, 0, - 0, 300, 301, 1039, 303, 304, 0, 305, 306, 307, - 0, 308, 309, 310, 0, 311, 312, 313, 314, 1202, - 316, 317, 318, 1203, 1204, 320, 0, 321, 322, 1205, - 324, 0, 325, 0, 326, 807, 0, 808, 327, 328, - 329, 330, 0, 331, 1206, 0, 1207, 334, 0, 335, - 336, 337, 338, 339, 809, 340, 341, 342, 343, 0, - 344, 345, 346, 347, 348, 349, 0, 350, 810, 351, - 352, 353, 354, 355, 1208, 1209, 0, 1210, 0, 359, - 811, 812, 360, 813, 361, 362, 363, 364, 365, 0, - 0, 366, 1211, 814, 368, 815, 0, 369, 370, 371, - 1212, 1213, 372, 373, 374, 375, 376, 377, 378, 379, - 380, 381, 382, 383, 384, 385, 386, 387, 1214, 816, - 1215, 390, 391, 392, 393, 1216, 394, 395, 817, 396, - 1217, 1218, 398, 1219, 400, 401, 402, 0, 403, 404, - 0, 0, 1220, 406, 407, 0, 0, 408, 409, 818, - 410, 819, 1221, 412, 413, 414, 415, 416, 417, 418, - 419, 420, 0, 421, 422, 1222, 424, 425, 426, 427, - 428, 0, 429, 430, 431, 432, 433, 434, 435, 436, - 437, 1223, 439, 440, 441, 442, 0, 443, 444, 445, - 446, 447, 448, 449, 450, 451, 452, 453, 454, 0, - 455, 456, 820, 457, 458, 459, 1224, 461, 462, 463, - 464, 465, 466, 467, 468, 469, 0, 470, 471, 472, - 473, 474, 1225, 475, 476, 477, 478, 479, 821, 480, - 481, 1226, 483, 0, 484, 485, 486, 487, 488, 489, - 490, 491, 492, 493, 494, 495, 1227, 0, 497, 498, - 0, 499, 822, 500, 501, 502, 503, 504, 0, 1228, - 1229, 0, 0, 507, 508, 1230, 510, 1231, 1232, 512, - 513, 514, 515, 5164, 517, 518, 0, 1233, 519, 520, - 521, 522, 523, 1234, 0, 524, 525, 526, 527, 528, - 529, 1235, 0, 531, 823, 532, 533, 534, 535, 0, - 0, 536, 0, 0, 537, 538, 539, 540, 541, 542, - 543, 1236, 1237, 1238, 1239, 548, 1240, 1241, 1242, 1243, - 553, 554, 555, 556, 1244, 0, 0, 0, 0, 0, - 0, 1245, 1246, 0, 0, 0, 0, 1248, 0, 0, - 0, 1249, 800, 1177, 617, 1178, 1179, 1180, 676, 1181, - 0, 0, 0, 0, 0, 0, 0, 224, 225, 226, - 227, 228, 229, 230, 231, 0, 233, 234, 235, 0, - 0, 0, 0, 1182, 0, 0, 236, 237, 0, 238, - 239, 240, 801, 241, 242, 243, 244, 1183, 802, 1184, - 1185, 0, 248, 249, 250, 251, 252, 1186, 1187, 253, - 254, 1188, 1189, 257, 0, 258, 259, 260, 261, 1190, - 0, 1191, 0, 263, 264, 265, 266, 267, 804, 268, - 269, 270, 0, 271, 272, 273, 274, 275, 276, 0, - 805, 277, 278, 279, 1192, 1193, 1194, 1195, 1196, 1197, - 1198, 280, 281, 282, 283, 284, 285, 1199, 1200, 288, - 4884, 289, 0, 290, 291, 292, 293, 294, 295, 0, - 296, 297, 298, 299, 0, 0, 300, 301, 1039, 303, - 304, 0, 305, 306, 307, 0, 308, 309, 310, 0, - 311, 312, 313, 314, 1202, 316, 317, 318, 1203, 1204, - 320, 0, 321, 322, 1205, 324, 0, 325, 0, 326, - 807, 0, 808, 327, 328, 329, 330, 0, 331, 1206, - 0, 1207, 334, 0, 335, 336, 337, 338, 339, 809, - 340, 341, 342, 343, 0, 344, 345, 346, 347, 348, - 349, 0, 350, 810, 351, 352, 353, 354, 355, 1208, - 1209, 0, 1210, 0, 359, 811, 812, 360, 813, 361, - 362, 363, 364, 365, 0, 0, 366, 1211, 814, 368, - 815, 0, 369, 370, 371, 1212, 1213, 372, 373, 374, - 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, - 385, 386, 387, 1214, 816, 1215, 390, 391, 392, 393, - 0, 394, 395, 817, 396, 1217, 1218, 398, 1219, 400, - 401, 402, 0, 403, 404, 0, 0, 1220, 406, 407, - 0, 0, 408, 409, 818, 410, 819, 1221, 412, 413, - 414, 415, 416, 417, 418, 419, 420, 0, 421, 422, - 1222, 424, 425, 426, 427, 428, 0, 429, 430, 431, - 432, 433, 434, 435, 436, 437, 1223, 439, 440, 441, - 442, 0, 443, 444, 445, 446, 447, 448, 449, 450, - 451, 452, 453, 454, 0, 455, 456, 820, 457, 458, - 459, 2661, 461, 462, 463, 464, 465, 466, 467, 468, - 469, 0, 470, 471, 472, 473, 474, 1225, 475, 476, - 477, 478, 479, 821, 480, 481, 1226, 483, 0, 484, - 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, - 495, 1227, 0, 497, 498, 0, 499, 822, 500, 501, - 502, 503, 504, 0, 1228, 1229, 0, 0, 507, 508, - 1230, 510, 1231, 1232, 512, 513, 514, 515, 516, 517, - 518, 0, 0, 519, 520, 521, 522, 523, 1234, 0, - 524, 525, 526, 527, 528, 529, 1235, 0, 531, 823, - 532, 533, 534, 535, 0, 0, 536, 0, 0, 537, - 538, 539, 540, 541, 542, 543, 1236, 1237, 1238, 1239, - 548, 1240, 1241, 1242, 1243, 553, 554, 555, 556, 0, - 0, 0, 0, 0, 0, 0, 2662, 2663, 0, 0, - 0, 0, 1248, 0, 0, 0, 2664, 800, 1177, 617, - 1178, 1179, 1180, 676, 1181, 0, 0, 0, 0, 0, - 0, 0, 224, 225, 226, 227, 228, 229, 230, 231, - 0, 233, 234, 235, 0, 0, 0, 0, 1182, 0, - 0, 236, 237, 0, 238, 239, 240, 801, 241, 242, - 243, -2588, 1183, 802, 1184, 1185, 0, 248, 249, 250, - 251, 252, 1186, 1187, 253, 254, 1188, 1189, 257, 0, - 258, 259, 260, 261, 1190, 0, 1191, 0, 263, 264, - 265, 266, 267, 804, 268, 269, 270, 0, 271, 272, - 273, 274, 275, 276, 0, 805, 277, 278, 5163, 1192, - 1193, 1194, 1195, 1196, 1197, 1198, 280, 281, 282, 283, - 284, 285, 1199, 1200, 288, 1201, 289, 0, 290, 291, - 292, 293, 294, 295, 0, 296, 297, 298, 299, 0, - 0, 300, 301, 1039, 303, 304, 0, 305, 306, 307, - 0, 308, 309, 310, 0, 311, 312, 313, 314, 1202, - 316, 317, 318, 1203, 1204, 320, 0, 321, 322, 1205, - 324, 0, 325, 0, 326, 807, 0, 808, 327, 328, - 329, 330, 0, 331, 1206, 0, 1207, 334, 0, 335, - 336, 337, 338, 339, -2588, 340, 341, 342, 343, 0, - 344, 345, 346, 347, 348, 349, 0, 350, 810, 351, - 352, 353, 354, 355, 1208, 1209, 0, 1210, 0, 359, - 0, 0, 360, 813, 361, 362, 363, 364, 365, 0, - 0, 366, 1211, 814, 368, -2588, 0, 369, 370, 371, - 1212, 1213, 372, 373, 374, 375, 376, 377, 378, 379, - 380, 381, 382, 383, 384, 385, 386, 387, 1214, 816, - 1215, 390, 391, 392, 393, 1216, 394, 395, 0, 396, - 1217, 1218, 398, 1219, 400, 401, 402, 0, 403, 404, - 0, 0, 1220, 406, 407, 0, 0, 408, 409, 818, - 410, 819, 1221, 412, 413, 414, 415, 416, 417, 418, - 419, 420, 0, 421, 422, 1222, 424, 425, 426, 427, - 428, 0, 429, 430, 431, 432, 433, 434, 435, 436, - 437, 1223, 439, 440, 441, 442, 0, 443, 444, 445, - 446, 447, 448, 449, 450, 451, 452, 453, 454, 0, - 455, 456, 820, 457, 458, 459, 1224, 461, 462, 463, - 464, 465, 466, 467, 468, 469, 0, 470, 471, 472, - 473, 474, 1225, 475, 476, 477, 478, 479, -2588, 480, - 481, 1226, 483, 0, 484, 485, 486, 487, 488, 489, - 490, 491, 492, 493, 494, 495, 1227, 0, 497, 498, - 0, 499, 822, 500, 501, 502, 503, 504, 0, 1228, - 1229, 0, 0, 507, 508, 1230, 510, 1231, 1232, 512, - 513, 514, 515, 5164, 517, 518, 0, 1233, 519, 520, - 521, 522, 523, 1234, 0, 524, 525, 526, 527, 528, - 529, 1235, 0, 531, 823, 532, 533, 534, 535, 0, - 0, 536, 0, 0, 537, 538, 539, 540, 541, 542, - 543, 1236, 1237, 1238, 1239, 548, 1240, 1241, 1242, 1243, - 553, 554, 555, 556, -2588, 0, 0, 0, 0, 0, - 0, 1245, 1246, 0, 0, 0, 0, 1248, 0, 0, - 0, 1249, 800, 1177, 617, 1178, 1179, 1180, 676, 1181, - 0, 0, 0, 0, 0, 0, 0, 224, 225, 226, - 227, 228, 229, 230, 231, 0, 233, 234, 235, 0, - 0, 0, 0, 1182, 0, 0, 236, 237, 0, 238, - 239, 240, 801, 241, 242, 243, 244, 1183, 802, 1184, - 1185, 0, 248, 249, 250, 251, 252, 1186, 1187, 253, - 254, 1188, 1189, 257, 0, 258, 259, 260, 261, 1190, - 0, 1191, 0, 263, 264, 265, 266, 267, 804, 268, - 269, 270, 0, 271, 272, 273, 274, 275, 276, 0, - 805, 277, 278, 279, 1192, 1193, 1194, 1195, 1196, 1197, - 1198, 280, 281, 282, 283, 284, 285, 1199, 1200, 288, - 0, 289, 0, 290, 291, 292, 293, 294, 295, 0, - 296, 297, 298, 299, 0, 0, 300, 301, 1039, 303, - 304, 0, 305, 306, 307, 0, 308, 309, 310, 0, - 311, 312, 313, 314, 1202, 316, 317, 318, 1203, 1204, - 320, 0, 321, 322, 1205, 324, 0, 325, 0, 326, - 807, 0, 808, 327, 328, 329, 330, 0, 331, 1206, - 0, 1207, 334, 0, 335, 336, 337, 338, 339, 809, - 340, 341, 342, 343, 0, 344, 345, 346, 347, 348, - 349, 0, 350, 810, 351, 352, 353, 354, 355, 1208, - 1209, 0, 1210, 0, 359, 811, 812, 360, 813, 361, - 362, 363, 364, 365, 0, 0, 366, 1211, 814, 368, - 815, 0, 369, 370, 371, 1212, 1213, 372, 373, 374, - 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, - 385, 386, 387, 1214, 816, 1215, 390, 391, 392, 393, - 0, 394, 395, 817, 396, 1217, 1218, 398, 1219, 400, - 401, 402, 0, 403, 404, 0, 0, 1220, 406, 407, - 0, 0, 408, 409, 818, 410, 819, 1221, 412, 413, - 414, 415, 416, 417, 418, 419, 420, 0, 421, 422, - 1222, 424, 425, 426, 427, 428, 0, 429, 430, 431, - 432, 433, 434, 435, 436, 437, 1223, 439, 440, 441, - 442, 0, 443, 444, 445, 446, 447, 448, 449, 450, - 451, 452, 453, 454, 0, 455, 456, 820, 457, 458, - 459, 2661, 461, 462, 463, 464, 465, 466, 467, 468, - 469, 0, 470, 471, 472, 473, 474, 1225, 475, 476, - 477, 478, 479, 821, 480, 481, 1226, 483, 0, 484, - 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, - 495, 1227, 0, 497, 498, 0, 499, 822, 500, 501, - 502, 503, 504, 0, 1228, 1229, 0, 0, 507, 508, - 1230, 510, 1231, 1232, 512, 513, 514, 515, 516, 517, - 518, 0, 0, 519, 520, 521, 522, 523, 1234, 0, - 524, 525, 526, 527, 528, 529, 1235, 0, 531, 823, - 532, 533, 534, 535, 0, 0, 536, 0, 0, 537, - 538, 539, 540, 541, 542, 543, 1236, 1237, 1238, 1239, - 548, 1240, 1241, 1242, 1243, 553, 554, 555, 556, 0, - 0, 0, 0, 0, 0, 0, 2662, 2663, 0, 0, - 0, 0, 1248, 0, 0, 0, 2664, 800, 1177, 617, - 1178, 1179, 0, 676, 1181, 0, 0, 0, 0, 0, - 0, 0, 224, 225, 226, 227, 228, 229, 230, 231, - 0, 233, 234, 235, 0, 0, 0, 0, 1182, 0, - 0, 236, 237, 0, 238, 239, 240, 801, 241, 242, - 243, 244, 1183, 802, 1184, 1185, 0, 248, 249, 250, - 251, 252, 1186, 1187, 253, 254, 1188, 1189, 257, 0, - 258, 259, 260, 261, 1190, 0, 1191, 0, 263, 264, - 265, 266, 267, 804, 268, 269, 270, 0, 271, 272, - 273, 274, 275, 276, 0, 805, 277, 278, 279, 1192, - 1193, 1194, 1195, 1196, 1197, 1198, 280, 281, 282, 283, - 284, 285, 1199, 1200, 288, 0, 289, 0, 290, 291, - 292, 293, 294, 295, 0, 296, 297, 298, 299, 0, - 0, 300, 301, 1039, 303, 304, 0, 305, 306, 307, - 0, 308, 309, 310, 0, 311, 312, 313, 314, 1202, - 316, 317, 318, 1203, 1204, 320, 0, 321, 322, 1205, - 324, 0, 325, 0, 326, 807, 0, 808, 327, 328, - 329, 330, 0, 331, 1206, 0, 1207, 334, 0, 335, - 336, 337, 338, 339, 809, 340, 341, 342, 343, 0, - 344, 345, 346, 347, 348, 349, 0, 350, 810, 351, - 352, 353, 354, 355, 1208, 1209, 0, 1210, 0, 359, - 811, 812, 360, 813, 361, 362, 363, 364, 365, 0, - 0, 366, 1211, 814, 368, 815, 0, 369, 370, 371, - 1212, 1213, 372, 373, 374, 375, 376, 377, 378, 379, - 380, 381, 382, 383, 384, 385, 386, 387, 1214, 816, - 1215, 390, 391, 392, 393, 0, 394, 395, 817, 396, - 1217, 1218, 398, 1219, 400, 401, 402, 0, 403, 404, - 0, 0, 405, 406, 407, 0, 0, 408, 409, 818, - 410, 819, 1221, 412, 413, 414, 415, 416, 417, 418, - 419, 420, 0, 421, 422, 1222, 424, 425, 426, 427, - 428, 0, 429, 430, 431, 432, 433, 434, 435, 436, - 437, 1223, 439, 440, 441, 442, 0, 443, 444, 445, - 446, 447, 448, 449, 450, 451, 452, 453, 454, 0, - 455, 456, 820, 457, 458, 459, 2795, 2796, 462, 463, - 464, 465, 466, 467, 468, 469, 0, 470, 471, 472, - 473, 474, 1225, 475, 476, 477, 478, 479, 821, 480, - 481, 1226, 483, 0, 484, 485, 486, 487, 488, 489, - 490, 491, 492, 493, 494, 495, 1227, 0, 497, 498, - 0, 499, 822, 500, 501, 502, 503, 504, 0, 1228, - 1229, 0, 0, 507, 508, 1230, 510, 1231, 1232, 512, - 513, 514, 515, 516, 517, 518, 0, 0, 519, 520, - 521, 522, 523, 1234, 0, 524, 525, 526, 527, 528, - 529, 1235, 0, 531, 823, 532, 533, 534, 535, 0, - 0, 536, 0, 0, 537, 538, 539, 540, 541, 542, - 543, 1236, 1237, 1238, 1239, 548, 1240, 1241, 1242, 1243, - 553, 554, 555, 556, 0, 0, 0, 0, 0, 0, - 0, 2797, 2798, 0, 0, 0, 0, 1248, 0, 0, - 0, 2664, 800, 1177, 617, 1178, 1179, 1180, 676, 1181, - 0, 0, 0, 0, 0, 0, 0, 224, 225, 226, - 227, 228, 229, 230, 231, 0, 233, 234, 235, 0, - 0, 0, 0, 1182, 0, 0, 236, 237, 0, 238, - 239, 240, 801, 241, 242, 243, 244, 1183, 802, 1184, - 1185, 0, 248, 249, 250, 251, 252, 1186, 1187, 253, - 254, 1188, 1189, 257, 0, 258, 259, 260, 261, 1190, - 0, 1191, 0, 263, 264, 265, 266, 267, 804, 268, - 269, 270, 0, 271, 272, 273, 274, 275, 276, 0, - 805, 277, 278, 279, 1192, 1193, 1194, 1195, 1196, 1197, - 1198, 280, 281, 282, 283, 284, 285, 1199, 1200, 288, - 0, 289, 0, 290, 291, 292, 293, 294, 295, 0, - 296, 297, 298, 299, 0, 0, 300, 301, 1039, 303, - 304, 0, 305, 306, 307, 0, 308, 309, 310, 0, - 311, 312, 313, 314, 1202, 316, 317, 318, 1203, 1204, - 320, 0, 321, 322, 1205, 324, 0, 325, 0, 326, - 807, 0, 808, 327, 328, 329, 330, 0, 331, 1206, - 0, 1207, 334, 0, 335, 336, 337, 338, 339, 809, - 340, 341, 342, 343, 0, 344, 345, 346, 347, 348, - 349, 0, 350, 810, 351, 352, 353, 354, 355, 1208, - 1209, 0, 1210, 0, 359, 0, 812, 360, 813, 361, - 362, 363, 364, 365, 0, 0, 366, 1211, 814, 368, - 815, 0, 369, 370, 371, 1212, 1213, 372, 373, 374, - 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, - 385, 386, 387, 1214, 816, 1215, 390, 391, 392, 393, - 0, 394, 395, 817, 396, 1217, 1218, 398, 1219, 400, - 401, 402, 0, 403, 404, 0, 0, 1220, 406, 407, - 0, 0, 408, 409, 818, 410, 819, 1221, 412, 413, - 414, 415, 416, 417, 418, 419, 420, 0, 421, 422, - 1222, 424, 425, 426, 427, 428, 0, 429, 430, 431, - 432, 433, 434, 435, 436, 437, 1223, 439, 440, 441, - 442, 0, 443, 444, 445, 446, 447, 448, 449, 450, - 451, 452, 453, 454, 0, 455, 456, 820, 457, 458, - 459, 2661, 461, 462, 463, 464, 465, 466, 467, 468, - 469, 0, 470, 471, 472, 473, 474, 1225, 475, 476, - 477, 478, 479, 821, 480, 481, 1226, 483, 0, 484, - 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, - 495, 1227, 0, 497, 498, 0, 499, 822, 500, 501, - 502, 503, 504, 0, 1228, 1229, 0, 0, 507, 508, - 1230, 510, 1231, 1232, 512, 513, 514, 515, 516, 517, - 518, 0, 0, 519, 520, 521, 522, 523, 1234, 0, - 524, 525, 526, 527, 528, 529, 1235, 0, 531, 823, - 532, 533, 534, 535, 0, 0, 536, 0, 0, 537, - 538, 539, 540, 541, 542, 543, 1236, 1237, 1238, 1239, - 548, 1240, 1241, 1242, 1243, 553, 554, 555, 556, 0, - 0, 0, 0, 0, 0, 0, 2662, 2663, 0, 0, - 0, 0, 1248, 0, 0, 0, 2664, 800, 1177, 617, - 1178, 1179, 1180, 676, 1181, 0, 0, 0, 0, 0, - 0, 0, 224, 225, 226, 227, 228, 229, 230, 231, - -2103, 233, 234, 235, 0, 0, 0, -2103, 1182, 0, - 0, 236, 237, 0, 238, 239, 240, 801, 241, 242, - 243, 0, 1183, 802, 1184, 1185, 0, 248, 249, 250, - 251, 252, 1186, 1187, 253, 254, 1188, 1189, 257, 0, - 258, 259, 260, 261, 1190, 0, 1191, 0, 263, 264, - 265, 266, 267, 804, 268, 269, 270, 0, 271, 272, - 273, 274, 275, 276, 0, 805, 277, 278, 279, 1192, - 1193, 1194, 1195, 1196, 1197, 1198, 280, 281, 282, 283, - 284, 285, 1199, 1200, 288, 1201, 289, 0, 290, 291, - 292, 293, 294, 295, 0, 296, 297, 298, 299, 0, - 0, 300, 301, 1039, 303, 304, 0, 305, 306, 307, - 0, 308, 0, 310, 0, 311, 312, 313, 314, 1202, - 316, 317, 318, 1203, 1204, 320, 0, 321, 322, 1205, - 324, 0, 325, 0, 326, 807, 0, 808, 327, 328, - 329, 330, 0, 331, 1206, 0, 1207, 334, 0, 335, - 336, 337, 338, 339, 0, 340, 341, 342, 343, 0, - 344, 345, 346, 347, 348, 349, 0, 350, 810, 351, - 352, 353, 354, 355, 1208, 1209, 0, 1210, 0, 359, - 0, 0, 360, 813, 361, 362, 363, 364, 365, 0, - 0, 366, 1211, 814, 368, 0, 0, 369, 370, 371, - 1212, 1213, 372, 373, 374, 375, 376, 377, 378, 379, - 380, 381, 382, 383, 384, 385, 386, 387, 1214, 816, - 1215, 390, 391, 392, 393, 1216, 394, 395, 0, 396, - 1217, 1218, 398, 1219, 400, 401, 402, 0, 403, 404, - 0, 0, 1220, 406, 407, 0, 0, 408, 409, 818, - 410, 819, 1221, 412, 413, 414, 415, 416, 417, 418, - 419, 420, 0, 421, 422, 1222, 424, 425, 426, 427, - 428, 0, 429, 430, 431, 432, 433, 434, 435, 436, - 437, 1223, 439, 440, 441, 442, 0, 443, 444, 445, + 0, 455, 456, 457, 458, 459, 460, 461, 462, 0, + 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, + 473, 474, 475, 476, 477, 0, 478, 479, 480, 481, + 482, 483, 484, 485, 486, 487, 488, 489, 0, 490, + 491, -1803, 493, 494, 495, 496, 497, 498, 499, 500, + 501, 502, 503, 504, 505, 506, 507, 0, 508, 509, + 510, 511, 512, 0, 513, 514, 515, 516, 517, 0, + 519, 520, 521, 522, 0, 523, 524, 525, 526, 527, + 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, + 0, 538, 539, 0, 540, 0, 542, 543, 544, 545, + 546, 0, 547, 548, 549, 0, 0, 550, 551, 552, + 553, 554, 0, 555, 556, 557, 558, 559, 560, 561, + 562, 0, 0, 563, 564, 565, 566, 567, 0, 0, + 568, 569, 570, 571, 572, 573, 574, 0, 575, 0, + 577, 578, 579, 580, 0, 0, 581, 0, 0, 582, + 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, + 593, 594, 595, 596, 597, 598, 599, 600, 601, 1070, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1376, 229, 230, + 231, 232, 233, 234, 235, 236, 0, 237, 238, 239, + 0, 0, 0, 0, 0, 0, 0, 240, 241, 0, + 242, 243, 244, 245, 246, 247, 248, 0, 1071, 251, + 1072, 1073, 0, 254, 255, 256, 257, 258, 259, 0, + 0, 260, 261, 1074, 1075, 264, 0, 265, 266, 267, + 268, 0, 0, 270, 0, 271, 272, 273, 274, 275, + 276, 277, 278, 279, 0, 280, 281, 282, 283, 284, + 285, 0, 286, 287, 288, 289, 0, 0, 0, 290, + 0, 0, 0, 291, 292, 293, 294, 295, 296, 1076, + 1077, 299, 0, 300, 0, 301, 302, 303, 304, 305, + 306, 0, 307, 308, 309, 310, 0, 0, 311, 312, + 1078, 314, 315, 0, 316, 317, 318, 0, 319, 320, + 321, 0, 322, 323, 324, 325, 0, 327, 328, 329, + 330, 0, 0, 332, 0, 333, 334, 1079, 336, 0, + 337, 0, 338, 339, 0, 340, 341, 342, 343, 344, + 0, 345, 0, 0, 0, 348, 349, 0, 350, 351, + 352, 353, 354, 355, 356, 357, 358, 359, 2191, 360, + 361, 362, 363, 364, 365, 366, 0, 367, 368, 2192, + 370, 371, 372, 373, 1081, 1082, 0, 1083, 0, 377, + 378, 379, 380, 381, 382, 383, 384, 385, 386, 0, + 0, 387, 0, 389, 390, 391, 0, 392, 393, 394, + 0, 0, 395, 396, 397, 398, 399, 400, 401, 402, + 403, 404, 405, 406, 407, 408, 409, 410, 1084, 412, + 1085, 414, 415, 416, 417, 418, 419, 420, 0, 0, + 423, 0, 424, 425, 426, 427, 0, 0, 429, 1086, + 431, 432, 433, 0, 434, 435, 0, 0, 436, 437, + 438, 0, 0, 439, 440, 2194, 442, 443, 444, 0, 446, 447, 448, 449, 450, 451, 452, 453, 454, 0, - 455, 456, 820, 457, 458, 459, 1224, 461, 462, 463, - 464, 465, 466, 467, 468, 469, 0, 470, 471, 472, - 473, 474, 1225, 475, 476, 477, 478, 479, 0, 480, - 481, 1226, 483, -2103, 484, 485, 486, 487, 488, 489, - 490, 491, 492, 493, 494, 495, 1227, 0, 497, 498, - 0, 499, 822, 500, 501, 502, 503, 504, 0, 1228, - 1229, 0, 0, 507, 508, 1230, 510, 1231, 1232, 512, - 513, 514, 515, 516, 517, 518, 0, 1233, 519, 520, - 521, 522, 523, 1234, 0, 524, 525, 526, 527, 528, - 529, 1235, 0, 531, 823, 532, 533, 534, 535, 0, - 0, 536, 0, 0, 537, 538, 539, 540, 541, 542, - 543, 1236, 1237, 1238, 1239, 548, 1240, 1241, 1242, 1243, - 553, 554, 555, 556, 0, 0, 0, 0, 0, 0, - 0, 1245, 1246, 0, 0, 0, 0, 1248, 0, 0, - 0, 1249, 800, 1177, 617, 1178, 1179, 0, 676, 1181, - 0, 0, 0, 0, 0, 0, 0, 224, 225, 226, - 227, 228, 229, 230, 231, 0, 233, 234, 235, 0, - 0, 0, 0, 1182, 0, 0, 236, 237, 0, 238, - 239, 240, 801, 241, 242, 243, 244, 1183, 802, 1184, - 1185, 0, 248, 249, 250, 251, 252, 1186, 1187, 253, - 254, 1188, 1189, 257, 0, 258, 259, 260, 261, 1190, - 0, 1191, 0, 263, 264, 265, 266, 267, 804, 268, - 269, 270, 0, 271, 272, 273, 274, 275, 276, 0, - 805, 277, 278, 279, 1192, 1193, 1194, 1195, 1196, 1197, - 1198, 280, 281, 282, 283, 284, 285, 1199, 1200, 288, - 0, 289, 0, 290, 291, 292, 293, 294, 295, 0, - 296, 297, 298, 299, 0, 0, 300, 301, 1039, 303, - 304, 0, 305, 306, 307, 0, 308, 309, 310, 0, - 311, 312, 313, 314, 1202, 316, 317, 318, 1203, 1204, - 320, 0, 321, 322, 1205, 324, 0, 325, 0, 326, - 807, 0, 808, 327, 328, 329, 330, 0, 331, 1206, - 0, 1207, 334, 0, 335, 336, 337, 338, 339, 809, - 340, 341, 342, 343, 0, 344, 345, 346, 347, 348, - 349, 0, 350, 810, 351, 352, 353, 354, 355, 1208, - 1209, 0, 1210, 0, 359, 811, 812, 360, 813, 361, - 362, 363, 364, 365, 0, 0, 366, 1211, 814, 368, - 815, 0, 369, 370, 371, 1212, 1213, 372, 373, 374, - 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, - 385, 386, 387, 1214, 816, 1215, 390, 391, 392, 393, - 0, 394, 395, 817, 396, 1217, 1218, 398, 1219, 400, - 401, 402, 0, 403, 404, 0, 0, 405, 406, 407, - 0, 0, 408, 409, 818, 410, 819, 1221, 412, 413, - 414, 415, 416, 417, 418, 419, 420, 0, 421, 422, - 1222, 424, 425, 426, 427, 428, 0, 429, 430, 431, - 432, 433, 434, 435, 436, 437, 1223, 439, 440, 441, - 442, 0, 443, 444, 445, 446, 447, 448, 449, 450, - 451, 452, 453, 454, 0, 455, 456, 820, 457, 458, - 459, 2661, 461, 462, 463, 464, 465, 466, 467, 468, - 469, 0, 470, 471, 472, 473, 474, 1225, 475, 476, - 477, 478, 479, 821, 480, 481, 1226, 483, 0, 484, - 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, - 495, 1227, 0, 497, 498, 0, 499, 822, 500, 501, - 502, 503, 504, 0, 1228, 1229, 0, 0, 507, 508, - 1230, 510, 1231, 1232, 512, 513, 514, 515, 516, 517, - 518, 0, 0, 519, 520, 521, 522, 523, 1234, 0, - 524, 525, 526, 527, 528, 529, 1235, 0, 531, 823, - 532, 533, 534, 535, 0, 0, 536, 0, 0, 537, - 538, 539, 540, 541, 542, 543, 1236, 1237, 1238, 1239, - 548, 1240, 1241, 1242, 1243, 553, 554, 555, 556, 0, - 0, 0, 800, 1177, 617, 1178, 1179, 0, 676, 1181, - 0, 0, 1248, 0, 0, 0, 2664, 224, 225, 226, - 227, 228, 229, 230, 231, 0, 233, 234, 235, 0, - 0, 0, 0, 1182, 0, 0, 236, 237, 0, 238, - 239, 240, 801, 241, 242, 243, 244, 1183, 802, 1184, - 1185, 0, 3941, 249, 250, 251, 252, 1186, 1187, 253, - 254, 1188, 1189, 257, 0, 258, 259, 260, 261, 1190, - 0, 1191, 0, 263, 264, 265, 266, 267, 804, 268, - 269, 270, 0, 271, 272, 273, 274, 275, 276, 0, - 805, 277, 278, 279, 1192, 1193, 1194, 1195, 1196, 1197, - 1198, 280, 281, 282, 283, 284, 285, 1199, 1200, 288, - 0, 289, 0, 290, 291, 292, 293, 294, 295, 0, - 296, 297, 298, 299, 0, 0, 300, 301, 1039, 303, - 304, 0, 305, 306, 307, 0, 308, 309, 310, 0, - 311, 312, 313, 314, 1202, 316, 317, 318, 1203, 1204, - 320, 0, 321, 322, 1205, 324, 0, 325, 0, 326, - 807, 0, 808, 327, 328, 329, 330, 0, 331, 1206, - 0, 1207, 334, 0, 335, 336, 337, 338, 339, 809, - 340, 341, 342, 343, 0, 344, 345, 346, 347, 348, - 349, 0, 350, 810, 351, 352, 353, 354, 355, 1208, - 1209, 0, 1210, 0, 359, 811, 812, 360, 813, 361, - 362, 363, 364, 365, 0, 0, 366, 1211, 814, 368, - 815, 0, 369, 370, 371, 1212, 1213, 372, 373, 374, - 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, - 385, 386, 387, 1214, 816, 1215, 390, 391, 392, 393, - 0, 394, 395, 817, 396, 1217, 1218, 398, 1219, 400, - 401, 402, 0, 403, 404, 0, 0, 405, 406, 407, - 0, 0, 408, 409, 818, 410, 819, 1221, 412, 413, - 414, 415, 416, 417, 418, 419, 420, 0, 421, 422, - 1222, 424, 425, 426, 427, 428, 0, 429, 430, 431, - 432, 433, 434, 435, 436, 437, 1223, 439, 440, 441, - 442, 0, 443, 444, 445, 446, 447, 448, 449, 450, - 451, 452, 453, 454, 0, 455, 456, 820, 457, 458, - 459, 2661, 461, 462, 463, 464, 465, 466, 467, 468, - 469, 0, 470, 471, 472, 473, 474, 1225, 475, 476, - 477, 478, 479, 821, 480, 481, 1226, 483, 0, 484, - 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, - 495, 1227, 0, 497, 498, 0, 499, 822, 500, 501, - 502, 503, 504, 0, 1228, 1229, 0, 0, 507, 508, - 1230, 510, 1231, 1232, 512, 513, 514, 515, 516, 517, - 518, 0, 0, 519, 520, 521, 522, 523, 1234, 0, - 524, 525, 526, 527, 528, 529, 1235, 0, 531, 823, - 532, 533, 534, 535, 0, 0, 536, 0, 0, 537, - 538, 539, 540, 541, 542, 543, 1236, 1237, 1238, 1239, - 548, 1240, 1241, 1242, 1243, 553, 554, 555, 556, 0, - 0, 0, 800, 1177, 617, 1178, 1179, 0, 676, 1181, - 0, 0, 1248, 0, 0, 0, 2664, 224, 225, 226, - 227, 228, 229, 230, 231, 0, 233, 234, 235, 0, - 0, 0, 0, 1182, 0, 0, 236, 237, 0, 238, - 239, 240, 801, 241, 242, 243, 244, 1183, 802, 1184, - 1185, 0, 248, 249, 250, 251, 252, 1186, 1187, 253, - 254, 1188, 1189, 257, 0, 258, 259, 260, 261, 1190, - 0, 1191, 0, 263, 264, 265, 266, 267, 804, 268, - 269, 270, 0, 271, 272, 273, 274, 275, 276, 0, - 805, 277, 278, 279, 1192, 1193, 1194, 1195, 1196, 1197, - 1198, 280, 281, 282, 283, 284, 285, 1199, 1200, 288, - 0, 289, 0, 290, 291, 292, 293, 294, 295, 0, - 296, 297, 298, 299, 0, 0, 300, 301, 1039, 303, - 304, 0, 305, 306, 307, 0, 308, 309, 310, 0, - 311, 312, 313, 314, 1202, 316, 317, 318, 1203, 1204, - 320, 0, 321, 322, 1205, 324, 0, 325, 0, 326, - 807, 0, 808, 327, 328, 329, 330, 0, 331, 1206, - 0, 1207, 334, 0, 335, 336, 337, 338, 339, 809, - 340, 341, 342, 343, 0, 344, 345, 346, 347, 348, - 349, 0, 350, 810, 351, 352, 353, 354, 355, 1208, - 1209, 0, 1210, 0, 359, 811, 812, 360, 813, 361, - 362, 363, 364, 365, 0, 0, 366, 1211, 814, 368, - 815, 0, 369, 370, 371, 1212, 1213, 372, 373, 374, - 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, - 385, 386, 387, 1214, 816, 1215, 390, 391, 392, 393, - 0, 394, 395, 817, 396, 1217, 1218, 398, 1219, 400, - 401, 402, 0, 403, 404, 0, 0, 405, 406, 407, - 0, 0, 408, 409, 818, 410, 819, 1221, 412, 413, - 414, 415, 416, 417, 418, 419, 420, 0, 421, 422, - 1222, 424, 425, 426, 427, 428, 0, 429, 430, 431, - 432, 433, 434, 435, 436, 437, 1223, 439, 440, 441, - 442, 0, 443, 444, 445, 446, 447, 448, 449, 450, - 451, 452, 453, 454, 0, 455, 456, 820, 457, 458, - 459, 2661, 461, 462, 463, 464, 465, 466, 467, 468, - 469, 0, 470, 471, 472, 473, 474, 1225, 475, 476, - 477, 478, 479, 821, 480, 481, 1226, 483, 0, 484, - 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, - 495, 1227, 0, 497, 498, 0, 499, 822, 500, 501, - 502, 503, 504, 0, 1228, 1229, 0, 0, 507, 508, - 1230, 510, 1231, 1232, 512, 513, 514, 515, 516, 517, - 518, 0, 0, 519, 520, 521, 522, 523, 1234, 0, - 524, 525, 526, 527, 528, 529, 1235, 0, 531, 823, - 532, 533, 534, 535, 0, 0, 536, 0, 0, 537, - 538, 539, 540, 541, 542, 543, 1236, 1237, 1238, 1239, - 4408, 1240, 1241, 1242, 1243, 553, 554, 555, 556, 0, - 0, 0, 800, 1177, 617, 1178, 1179, 1180, 676, 1181, - 0, 0, 1248, 0, 0, 0, 2664, 224, 225, 226, - 227, 228, 229, 230, 231, 0, 233, 234, 235, 0, - 0, 0, 0, 1182, 0, 0, 236, 237, 0, 238, - 239, 240, 801, 241, 242, 243, 0, 1183, 802, 1184, - 1185, 0, 248, 249, 250, 251, 252, 1186, 1187, 253, - 254, 1188, 1189, 257, 0, 258, 259, 260, 261, 1190, - 0, 1191, 0, 263, 264, 265, 266, 267, 804, 268, - 269, 270, 0, 271, 272, 273, 274, 275, 276, 0, - 805, 277, 278, 279, 1192, 1193, 1194, 1195, 1196, 1197, - 1198, 280, 281, 282, 283, 284, 285, 1199, 1200, 288, - 1201, 289, 0, 290, 291, 292, 293, 294, 295, 0, - 296, 297, 298, 299, 0, 0, 300, 301, 1039, 303, - 304, 0, 305, 306, 307, 0, 308, 0, 310, 0, - 311, 312, 313, 314, 1202, 316, 317, 318, 1203, 1204, - 320, 0, 321, 322, 1205, 324, 0, 325, 0, 326, - 807, 0, 808, 327, 328, 329, 330, 0, 331, 1206, - 0, 1207, 334, 0, 335, 336, 337, 338, 339, 0, - 340, 341, 342, 343, 0, 344, 345, 346, 347, 348, - 349, 0, 350, 810, 351, 352, 353, 354, 355, 1208, - 1209, 0, 1210, 0, 359, 0, 0, 360, 813, 361, - 362, 363, 364, 365, 0, 0, 366, 1211, 814, 368, - 0, 0, 369, 370, 371, 1212, 1213, 372, 373, 374, - 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, - 385, 386, 387, 1214, 816, 1215, 390, 391, 392, 393, - 1216, 394, 395, 0, 396, 1217, 1218, 398, 1219, 400, - 401, 402, 0, 403, 404, 0, 0, 1220, 406, 407, - 0, 0, 408, 409, 818, 410, 819, 1221, 412, 413, - 414, 415, 416, 417, 418, 419, 420, 0, 421, 422, - 1222, 424, 425, 426, 427, 428, 0, 429, 430, 431, - 432, 433, 434, 435, 436, 437, 1223, 439, 440, 441, - 442, 0, 443, 444, 445, 446, 447, 448, 449, 450, - 451, 452, 453, 454, 0, 455, 456, 820, 457, 458, - 459, 1224, 461, 462, 463, 464, 465, 466, 467, 468, - 469, 0, 470, 471, 472, 473, 474, 1225, 475, 476, - 477, 478, 479, 0, 480, 481, 1226, 483, 0, 484, - 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, - 495, 1227, 0, 497, 498, 0, 499, 822, 500, 501, - 502, 503, 504, 0, 1228, 1229, 0, 0, 507, 508, - 1230, 510, 1231, 1232, 512, 513, 514, 515, 516, 517, - 518, 0, 1233, 519, 520, 521, 522, 523, 1234, 0, - 524, 525, 526, 527, 528, 529, 1235, 0, 531, 823, - 532, 533, 534, 535, 0, 0, 536, 0, 0, 537, - 538, 539, 540, 541, 542, 543, 1236, 1237, 1238, 1239, - 548, 1240, 1241, 1242, 1243, 553, 554, 555, 556, 0, - 0, 0, 800, 0, 0, 0, 1245, 1246, 0, 0, - 0, 0, 1248, 0, 0, 0, 1249, 224, 225, 226, - 227, 228, 229, 230, 231, 0, 233, 234, 235, 0, - 0, 0, 0, 0, 0, 0, 236, 237, 0, 238, - 239, 240, 801, 241, 242, 243, 244, 245, 802, 246, - 247, 0, 248, 249, 250, 251, 252, 0, 1187, 253, - 254, 255, 256, 257, 0, 258, 259, 260, 261, 1190, - 0, 1191, 0, 263, 264, 265, 266, 267, 804, 268, - 269, 270, 0, 271, 272, 273, 274, 275, 276, 0, - 805, 277, 278, 279, 1192, 1193, 1194, 1195, 1196, 1197, - 1198, 280, 281, 282, 283, 284, 285, 286, 287, 288, - 0, 289, 0, 290, 291, 292, 293, 294, 295, 0, - 296, 297, 298, 299, 0, 0, 300, 301, 302, 303, - 304, 0, 305, 306, 307, 0, 308, 309, 310, 0, - 311, 312, 313, 314, 315, 316, 317, 318, 1203, 0, - 320, 0, 321, 322, 323, 324, 0, 325, 0, 326, - 807, 0, 808, 327, 328, 329, 330, 0, 331, 1206, - 0, 333, 334, 0, 335, 336, 337, 338, 339, 809, - 340, 341, 342, 343, 0, 344, 345, 346, 347, 348, - 349, 0, 350, 810, 351, 352, 353, 354, 355, 356, - 357, 0, 358, 0, 359, 811, 812, 360, 813, 361, - 362, 363, 364, 365, 3456, 0, 366, 1211, 814, 368, - 815, 0, 369, 370, 371, 1212, 1213, 372, 373, 374, - 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, - 385, 386, 387, 388, 816, 389, 390, 391, 392, 393, - 0, 394, 395, 817, 396, 0, 1218, 398, 399, 400, - 401, 402, 0, 403, 404, 0, 765, 405, 406, 407, - 0, 0, 408, 409, 818, 410, 819, 1221, 412, 413, - 414, 415, 416, 417, 418, 419, 420, 0, 421, 422, - 1222, 424, 425, 426, 427, 428, 0, 429, 430, 431, - 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, - 442, 0, 443, 444, 445, 446, 447, 448, 449, 450, - 451, 452, 453, 454, 0, 455, 456, 820, 457, 458, - 459, 460, 3457, 462, 463, 464, 465, 466, 467, 468, - 469, 39, 470, 471, 472, 473, 474, 1225, 475, 476, - 477, 478, 479, 821, 480, 481, 482, 483, 0, 484, - 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, - 495, 1227, 0, 497, 498, 43, 499, 822, 500, 501, - 502, 503, 504, 0, 505, 506, 0, 0, 507, 508, - 1230, 510, 1231, 0, 512, 513, 514, 515, 516, 517, - 518, 0, 0, 519, 520, 521, 522, 523, 1234, 0, - 524, 525, 526, 527, 528, 1113, 530, 0, 531, 823, - 532, 533, 534, 535, 0, 0, 536, 0, 48, 537, - 538, 539, 540, 541, 542, 543, 1236, 1237, 1238, 1239, - 548, 1240, 1241, 1242, 1243, 3458, 554, 555, 556, 0, - 0, 49, 800, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 3459, 224, 225, 226, - 227, 228, 229, 230, 231, 0, 233, 234, 235, 0, - 0, 0, 0, 0, 0, 0, 236, 237, 0, 238, - 239, 240, 801, 241, 242, 243, 244, 245, 802, 246, - 247, 0, 248, 249, 250, 251, 252, 0, 1187, 253, - 254, 255, 256, 257, 0, 258, 259, 260, 261, 1190, - 0, 1191, 0, 263, 264, 265, 266, 267, 804, 268, - 269, 270, 0, 271, 272, 273, 274, 275, 276, 0, - 805, 277, 278, 279, 1192, 1193, 1194, 1195, 1196, 1197, - 1198, 280, 281, 282, 283, 284, 285, 286, 287, 288, - 0, 289, 0, 290, 291, 292, 293, 294, 295, 0, - 296, 297, 298, 299, 0, 0, 300, 301, 302, 303, - 304, 0, 305, 306, 307, 0, 308, 309, 310, 0, - 311, 312, 313, 314, 315, 316, 317, 318, 1203, 0, - 320, 0, 321, 322, 323, 324, 0, 325, 0, 326, - 807, 0, 808, 327, 328, 329, 330, 0, 331, 1206, - 0, 333, 334, 0, 335, 336, 337, 338, 339, 809, - 340, 341, 342, 343, 0, 344, 345, 346, 347, 348, - 349, 0, 350, 810, 351, 352, 353, 354, 355, 356, - 357, 0, 358, 0, 359, 811, 812, 360, 813, 361, - 362, 363, 364, 365, 3456, 0, 366, 1211, 814, 368, - 815, 0, 369, 370, 371, 1212, 1213, 372, 373, 374, - 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, - 385, 386, 387, 388, 816, 389, 390, 391, 392, 393, - 0, 394, 395, 817, 396, 0, 1218, 398, 399, 400, - 401, 402, 0, 403, 404, 0, 765, 405, 406, 407, - 0, 0, 408, 409, 818, 410, 819, 1221, 412, 413, - 414, 415, 416, 417, 418, 419, 420, 0, 421, 422, - 1222, 424, 425, 426, 427, 428, 0, 429, 430, 431, - 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, - 442, 0, 443, 444, 445, 446, 447, 448, 449, 450, - 451, 452, 453, 454, 0, 455, 456, 820, 457, 458, - 459, 460, 3457, 462, 463, 464, 465, 466, 467, 468, - 469, 0, 470, 471, 472, 473, 474, 1225, 475, 476, - 477, 478, 479, 821, 480, 481, 482, 483, 0, 484, - 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, - 495, 1227, 0, 497, 498, 0, 499, 822, 500, 501, - 502, 503, 504, 0, 505, 506, 0, 0, 507, 508, - 1230, 510, 1231, 0, 512, 513, 514, 515, 516, 517, - 518, 0, 0, 519, 520, 521, 522, 523, 1234, 0, - 524, 525, 526, 527, 528, 529, 530, 0, 531, 823, - 532, 533, 534, 535, 0, 0, 536, 0, 0, 537, - 538, 539, 540, 541, 542, 543, 1236, 1237, 1238, 1239, - 548, 1240, 1241, 1242, 1243, 3458, 554, 555, 556, 0, - 0, 0, 800, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 3459, 224, 225, 226, - 227, 228, 229, 230, 231, 0, 233, 234, 235, 0, - 0, 0, 0, 0, 0, 0, 236, 237, 0, 238, - 239, 240, 801, 241, 242, 243, 244, 245, 802, 246, - 247, 0, 248, 249, 250, 251, 252, 0, 1187, 253, - 254, 255, 256, 257, 0, 258, 259, 260, 261, 1190, - 0, 1191, 0, 263, 264, 265, 266, 267, 804, 268, - 269, 270, 0, 271, 272, 273, 274, 275, 276, 0, - 805, 277, 278, 279, 1192, 1193, 1194, 1195, 1196, 1197, - 1198, 280, 281, 282, 283, 284, 285, 286, 287, 288, - 0, 289, 0, 290, 291, 292, 293, 294, 295, 0, - 296, 297, 298, 299, 0, 0, 300, 301, 302, 303, - 304, 0, 305, 306, 307, 0, 308, 309, 310, 0, - 311, 312, 313, 314, 315, 316, 317, 318, 1203, 0, - 320, 0, 321, 322, 323, 324, 0, 325, 0, 326, - 807, 0, 808, 327, 328, 329, 330, 0, 331, 1206, - 0, 333, 334, 0, 335, 336, 337, 338, 339, 809, - 340, 341, 342, 343, 0, 344, 345, 346, 347, 348, - 349, 0, 350, 810, 351, 352, 353, 354, 355, 356, - 357, 0, 358, 0, 359, 811, 812, 360, 813, 361, - 362, 363, 364, 365, 0, 0, 366, 1211, 814, 368, - 815, 0, 369, 370, 371, 1212, 1213, 372, 373, 374, - 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, - 385, 386, 387, 388, 816, 389, 390, 391, 392, 393, - 0, 394, 395, 817, 396, 0, 1218, 398, 399, 400, - 401, 402, 0, 403, 404, 0, 0, 405, 406, 407, - 0, 0, 408, 409, 818, 410, 819, 1221, 412, 413, - 414, 415, 416, 417, 418, 419, 420, 0, 421, 422, - 1222, 424, 425, 426, 427, 428, 0, 429, 430, 431, - 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, - 442, 0, 443, 444, 445, 446, 447, 448, 449, 450, - 451, 452, 453, 454, 0, 455, 456, 820, 457, 458, - 459, 460, 3457, 462, 463, 464, 465, 466, 467, 468, - 469, 0, 470, 471, 472, 473, 474, 1225, 475, 476, - 477, 478, 479, 821, 480, 481, 482, 483, 0, 484, - 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, - 495, 1227, 0, 497, 498, 0, 499, 822, 500, 501, - 502, 503, 504, 0, 505, 506, 0, 0, 507, 508, - 1230, 510, 1231, 0, 512, 513, 514, 515, 516, 517, - 518, 0, 0, 519, 520, 521, 522, 523, 1234, 0, - 524, 525, 526, 527, 528, 529, 530, 0, 531, 823, - 532, 533, 534, 535, 0, 0, 536, 0, 0, 537, - 538, 539, 540, 541, 542, 543, 1236, 1237, 1238, 1239, - 548, 1240, 1241, 1242, 1243, 3458, 554, 555, 556, 0, - 0, 0, 800, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 50, 224, 225, 226, - 227, 228, 229, 230, 231, 0, 233, 234, 235, 0, - 0, 0, 0, 0, 0, 0, 236, 237, 0, 238, - 239, 240, 801, 241, 242, 243, 244, 245, 802, 246, - 247, 0, 248, 249, 250, 251, 252, 0, 1187, 253, - 254, 255, 256, 257, 0, 258, 259, 260, 261, 1190, - 0, 1191, 0, 263, 264, 265, 266, 267, 804, 268, - 269, 270, 0, 271, 272, 273, 274, 275, 276, 0, - 805, 277, 278, 279, 1192, 1193, 1194, 1195, 1196, 1197, - 1198, 280, 281, 282, 283, 284, 285, 286, 287, 288, - 0, 289, 0, 290, 291, 292, 293, 294, 295, 0, - 296, 297, 298, 299, 0, 0, 300, 301, 302, 303, - 304, 0, 305, 306, 307, 0, 308, 309, 310, 0, - 311, 312, 313, 314, 315, 316, 317, 318, 1203, 0, - 320, 0, 321, 322, 323, 324, 0, 325, 0, 326, - 807, 0, 808, 327, 328, 329, 330, 0, 331, 1206, - 0, 333, 334, 0, 335, 336, 337, 338, 339, 809, - 340, 341, 342, 343, 0, 344, 345, 346, 347, 348, - 349, 0, 350, 810, 351, 352, 353, 354, 355, 356, - 357, 0, 358, 0, 359, 811, 812, 360, 813, 361, - 362, 363, 364, 365, 0, 0, 366, 1211, 814, 368, - 815, 0, 369, 370, 371, 1212, 1213, 372, 373, 374, - 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, - 385, 386, 387, 388, 816, 389, 390, 391, 392, 393, - 0, 394, 395, 817, 396, 0, 1218, 398, 399, 400, - 401, 402, 0, 403, 404, 0, 0, 405, 406, 407, - 0, 0, 408, 409, 818, 410, 819, 1221, 412, 413, - 414, 415, 416, 417, 418, 419, 420, 0, 421, 422, - 1222, 424, 425, 426, 427, 428, 0, 429, 430, 431, - 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, - 442, 0, 443, 444, 445, 446, 447, 448, 449, 450, - 451, 452, 453, 454, 0, 455, 456, 820, 457, 458, - 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, - 469, 0, 470, 471, 472, 473, 474, 1225, 475, 476, - 477, 478, 479, 821, 480, 481, 482, 483, 0, 484, - 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, - 495, 1227, 0, 497, 498, 0, 499, 822, 500, 501, - 502, 503, 504, 0, 505, 506, 0, 0, 507, 508, - 1230, 510, 1231, 0, 512, 513, 514, 515, 516, 517, - 518, 0, 0, 519, 520, 521, 522, 523, 1234, 0, - 524, 525, 526, 527, 528, 529, 530, 0, 531, 823, - 532, 533, 534, 535, 0, 0, 536, 0, 0, 537, - 538, 539, 540, 541, 542, 543, 1236, 1237, 1238, 1239, - 548, 1240, 1241, 1242, 1243, 553, 554, 555, 556, 0, - 0, 0, 800, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 4070, 224, 225, 226, - 227, 228, 229, 230, 231, 0, 233, 234, 235, 0, - 0, 0, 0, 0, 0, 0, 236, 237, 0, 238, - 239, 240, 801, 241, 242, 243, 244, 245, 802, 246, - 247, 0, 248, 249, 250, 251, 252, 0, 1187, 253, - 254, 255, 256, 257, 0, 258, 259, 260, 261, 1190, - 0, 1191, 0, 263, 264, 265, 266, 267, 804, 268, - 269, 270, 0, 271, 272, 273, 274, 275, 276, 0, - 805, 277, 278, 279, 1192, 1193, 1194, 1195, 1196, 1197, - 1198, 280, 281, 282, 283, 284, 285, 286, 287, 288, - 0, 289, 0, 290, 291, 292, 293, 294, 295, 0, - 296, 297, 298, 299, 0, 0, 300, 301, 302, 303, - 304, 0, 305, 306, 307, 0, 308, 309, 310, 0, - 311, 312, 313, 314, 315, 316, 317, 318, 1203, 0, - 320, 0, 321, 322, 323, 324, 0, 325, 0, 326, - 807, 0, 808, 327, 328, 329, 330, 0, 331, 1206, - 0, 333, 334, 0, 335, 336, 337, 338, 339, 809, - 340, 341, 342, 343, 0, 344, 345, 346, 347, 348, - 349, 0, 350, 810, 351, 352, 353, 354, 355, 356, - 357, 0, 358, 0, 359, 811, 812, 360, 813, 361, - 362, 363, 364, 365, 0, 0, 366, 1211, 814, 368, - 815, 0, 369, 370, 371, 1212, 1213, 372, 373, 374, - 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, - 385, 386, 387, 388, 816, 389, 390, 391, 392, 393, - 0, 394, 395, 817, 396, 0, 1218, 398, 399, 400, - 401, 402, 0, 403, 404, 0, 0, 405, 406, 407, - 0, 0, 408, 409, 818, 410, 819, 1221, 412, 413, - 414, 415, 416, 417, 418, 419, 420, 0, 421, 422, - 1222, 424, 425, 426, 427, 428, 0, 429, 430, 431, - 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, - 442, 0, 443, 444, 445, 446, 447, 448, 449, 450, - 451, 452, 453, 454, 0, 455, 456, 820, 457, 458, - 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, - 469, 0, 470, 471, 472, 473, 474, 1225, 475, 476, - 477, 478, 479, 821, 480, 481, 482, 483, 0, 484, - 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, - 495, 1227, 0, 497, 498, 0, 499, 822, 500, 501, - 502, 503, 504, 0, 505, 506, 0, 0, 507, 508, - 1230, 510, 1231, 0, 512, 513, 514, 515, 516, 517, - 518, 0, 0, 519, 520, 521, 522, 523, 1234, 0, - 524, 525, 526, 527, 528, 529, 530, 0, 531, 823, - 532, 533, 534, 535, 0, 0, 536, 0, 0, 537, - 538, 539, 540, 541, 542, 543, 1236, 1237, 1238, 1239, - 548, 1240, 1241, 1242, 1243, 553, 554, 555, 556, 0, - 0, 0, 845, 1460, 617, 0, 0, 0, 676, 0, - 0, 0, 0, 0, 0, 0, 5145, 224, 225, 226, - 227, 228, 229, 230, 231, 0, 233, 234, 235, 0, - 0, 0, 0, 0, 0, 0, 236, 237, 0, 238, - 239, 240, 801, 241, 242, 243, 244, 245, 802, 246, - 247, 0, 248, 249, 250, 251, 252, 0, 0, 253, - 254, 255, 256, 257, 0, 258, 259, 260, 261, 262, - 0, 803, 0, 263, 264, 265, 266, 267, 804, 268, - 269, 270, 0, 271, 272, 273, 274, 275, 276, 0, - 805, 277, 278, 279, 0, 0, 0, 806, 0, 0, - 0, 280, 281, 282, 283, 284, 285, 286, 287, 288, - 0, 289, 0, 290, 291, 292, 293, 294, 295, 0, - 296, 297, 298, 299, 0, 0, 300, 301, 302, 303, - 304, 0, 305, 306, 307, 0, 308, 309, 310, 0, - 311, 312, 313, 314, 315, 316, 317, 318, 319, 1762, - 320, 0, 321, 322, 323, 324, 0, 325, 0, 326, - 807, 0, 808, 327, 328, 329, 330, 0, 331, 332, - 0, 333, 334, 0, 335, 336, 337, 338, 339, 809, - 340, 341, 342, 343, 0, 344, 345, 346, 347, 348, - 349, 0, 350, 810, 351, 352, 353, 354, 355, 356, - 357, 0, 358, 0, 359, 811, 812, 360, 813, 361, - 362, 363, 364, 365, 0, 0, 366, 367, 814, 368, - 815, 0, 369, 370, 371, 0, 0, 372, 373, 374, - 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, - 385, 386, 387, 388, 816, 389, 390, 391, 392, 393, - 0, 394, 395, 817, 396, 0, 397, 398, 399, 400, - 401, 402, 0, 403, 404, 1763, 0, 405, 406, 407, - 0, 0, 408, 409, 818, 410, 819, 411, 412, 413, - 414, 415, 416, 417, 418, 419, 420, 0, 421, 422, - 423, 424, 425, 426, 427, 428, 0, 429, 430, 431, - 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, - 442, 0, 443, 444, 445, 446, 447, 448, 449, 450, - 451, 452, 453, 454, 0, 455, 456, 820, 457, 458, - 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, - 469, 0, 470, 471, 472, 473, 474, 0, 475, 476, - 477, 478, 479, 821, 480, 481, 482, 483, 0, 484, - 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, - 495, 496, 0, 497, 498, 0, 499, 822, 500, 501, - 502, 503, 504, 0, 505, 506, 0, 0, 507, 508, - 509, 510, 511, 1764, 512, 513, 514, 515, 516, 517, - 518, 0, 0, 519, 520, 521, 522, 523, 0, 0, - 524, 525, 526, 527, 528, 529, 530, 0, 531, 823, - 532, 533, 534, 535, 0, 0, 536, 0, 0, 537, - 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, - 548, 549, 550, 551, 552, 553, 554, 555, 556, 0, - 0, 0, 845, 0, 0, 0, 1461, 1462, 4963, 0, - 0, 0, 0, 0, 0, 0, 4964, 224, 225, 226, - 227, 228, 229, 230, 231, 0, 233, 234, 235, 3, - 4, 0, 0, 0, 0, 0, 236, 237, 0, 238, - 239, 240, 801, 241, 242, 243, 244, 245, 802, 246, - 247, 0, 248, 249, 250, 251, 252, 0, 0, 253, - 254, 255, 256, 257, 0, 258, 259, 260, 261, 262, - 0, 803, 0, 263, 264, 265, 266, 267, 804, 268, - 269, 270, 0, 271, 272, 273, 274, 275, 276, 0, - 805, 277, 278, 279, 0, 0, 0, 806, 0, 0, - 0, 280, 281, 282, 283, 284, 285, 286, 287, 288, - 0, 289, 0, 290, 291, 292, 293, 294, 295, 0, - 296, 297, 298, 299, 0, 0, 300, 301, 302, 303, - 304, 0, 305, 306, 307, 0, 308, 309, 310, 0, - 311, 312, 313, 314, 315, 316, 317, 318, 319, 0, - 320, 0, 321, 322, 323, 324, 0, 325, 0, 326, - 807, 0, 808, 327, 328, 329, 330, 0, 331, 332, - 0, 333, 334, 0, 335, 336, 337, 338, 339, 809, - 340, 341, 342, 343, 0, 344, 345, 346, 347, 348, - 349, 0, 350, 810, 351, 352, 353, 354, 355, 356, - 357, 0, 358, 0, 359, 811, 812, 360, 813, 361, - 362, 363, 364, 365, 0, 0, 366, 367, 814, 368, - 815, 0, 369, 370, 371, 0, 0, 372, 373, 374, - 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, - 385, 386, 387, 388, 816, 389, 390, 391, 392, 393, - 0, 394, 395, 817, 396, 0, 397, 398, 399, 400, - 401, 402, 0, 403, 404, 0, 0, 405, 406, 407, - 0, 0, 408, 409, 818, 410, 819, 411, 412, 413, - 414, 415, 416, 417, 418, 419, 420, 0, 421, 422, - 423, 424, 425, 426, 427, 428, 0, 429, 430, 431, - 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, - 442, 0, 443, 444, 445, 446, 447, 448, 449, 450, - 451, 452, 453, 454, 0, 455, 456, 820, 457, 458, - 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, - 469, 39, 470, 471, 472, 473, 474, 0, 475, 476, - 477, 478, 479, 821, 480, 481, 482, 483, 0, 484, - 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, - 495, 496, 0, 497, 498, 43, 499, 822, 500, 501, - 502, 503, 504, 0, 505, 506, 0, 0, 507, 508, - 509, 510, 511, 0, 512, 513, 514, 515, 516, 517, - 518, 0, 0, 519, 520, 521, 522, 523, 0, 0, - 524, 525, 526, 527, 528, 1113, 530, 0, 531, 823, - 532, 533, 534, 535, 0, 0, 536, 0, 48, 537, - 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, - 548, 549, 550, 551, 552, 553, 554, 555, 556, 0, - 0, 49, 800, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 50, 224, 225, 226, - 227, 228, 229, 230, 231, 0, 233, 234, 235, 0, - 0, 0, 0, 0, 0, 0, 236, 237, 0, 238, - 239, 240, 801, 241, 242, 243, 244, 245, 802, 246, - 247, 0, 248, 249, 250, 251, 252, 0, 0, 253, - 254, 255, 256, 257, 0, 258, 259, 260, 261, 262, - 0, 803, 0, 263, 264, 265, 266, 267, 804, 268, - 269, 270, 0, 271, 272, 273, 274, 275, 276, 0, - 805, 277, 278, 279, 0, 0, 0, 806, 0, 0, - 0, 280, 281, 282, 283, 284, 285, 286, 287, 288, - 0, 289, 0, 290, 291, 292, 293, 294, 295, 0, - 296, 297, 298, 299, 0, 0, 300, 301, 302, 303, - 304, 0, 305, 306, 307, 0, 308, 309, 310, 0, - 311, 312, 313, 314, 315, 316, 317, 318, 319, 0, - 320, 0, 321, 322, 323, 324, 0, 325, 0, 326, - 807, 0, 808, 327, 328, 329, 330, 0, 331, 332, - 0, 333, 334, 0, 335, 336, 337, 338, 339, 809, - 340, 341, 342, 343, 0, 344, 345, 346, 347, 348, - 349, 0, 350, 810, 351, 352, 353, 354, 355, 356, - 357, 0, 358, 0, 359, 811, 812, 360, 813, 361, - 362, 363, 364, 365, 0, 0, 366, 367, 814, 368, - 815, 0, 369, 370, 371, 0, 0, 372, 373, 374, - 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, - 385, 386, 387, 388, 816, 389, 390, 391, 392, 393, - 0, 394, 395, 817, 396, 0, 397, 398, 399, 400, - 401, 402, 0, 403, 404, 0, 0, 405, 406, 407, - 0, 0, 408, 409, 818, 410, 819, 411, 412, 413, - 414, 415, 416, 417, 418, 419, 420, 0, 421, 422, - 423, 424, 425, 426, 427, 428, 0, 429, 430, 431, - 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, - 442, 0, 443, 444, 445, 446, 447, 448, 449, 450, - 451, 452, 453, 454, 0, 455, 456, 820, 457, 458, - 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, - 469, 0, 470, 471, 472, 473, 474, 0, 475, 476, - 477, 478, 479, 821, 480, 481, 482, 483, 0, 484, - 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, - 495, 496, 0, 497, 498, 0, 499, 822, 500, 501, - 502, 503, 504, 0, 505, 506, 0, 0, 507, 508, - 509, 510, 511, 0, 512, 513, 514, 515, 516, 517, - 518, 0, 0, 519, 520, 521, 522, 523, 0, 0, - 524, 525, 526, 527, 528, 529, 530, 0, 531, 823, - 532, 533, 534, 535, 0, 0, 536, 0, 0, 537, - 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, - 548, 549, 550, 551, 552, 553, 554, 555, 556, 0, - 0, 0, 223, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 4741, 224, 225, 226, - 227, 228, 229, 230, 231, 0, 233, 234, 235, 0, - 0, 0, 0, 0, 0, 0, 236, 237, 0, 238, - 239, 240, 0, 241, 242, 243, 244, 245, 0, 246, - 247, 0, 248, 249, 250, 251, 252, 0, 0, 253, - 254, 255, 256, 257, 0, 258, 259, 260, 261, 262, - 0, 0, 0, 263, 264, 265, 266, 267, 0, 268, - 269, 270, 0, 271, 272, 273, 274, 275, 276, 0, - 0, 277, 278, 279, 0, 0, 0, 0, 0, 0, - 0, 280, 281, 282, 283, 284, 285, 286, 287, 288, - 0, 289, 0, 290, 291, 292, 293, 294, 295, 0, - 296, 297, 298, 299, 0, 0, 300, 301, 302, 303, - 304, 0, 305, 306, 307, 0, 308, 309, 310, 0, - 311, 312, 313, 314, 315, 316, 317, 318, 319, 0, - 320, 0, 321, 322, 323, 324, 0, 325, 0, 326, - 0, 0, 0, 327, 328, 329, 330, 0, 331, 332, - 0, 333, 334, 0, 335, 336, 337, 338, 339, 0, - 340, 341, 342, 343, 0, 344, 345, 346, 347, 348, - 349, 0, 350, 0, 351, 352, 353, 354, 355, 356, - 357, 0, 358, 0, 359, 0, 0, 360, 0, 361, - 362, 363, 364, 365, 0, 0, 366, 367, 0, 368, - 0, 0, 369, 370, 371, 0, 0, 372, 373, 374, - 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, - 385, 386, 387, 388, 0, 389, 390, 391, 392, 393, - 0, 394, 395, 0, 396, 0, 397, 398, 399, 400, - 401, 402, 0, 403, 404, 0, 0, 405, 406, 407, - 0, 0, 408, 409, 0, 410, 0, 411, 412, 413, - 414, 415, 416, 417, 418, 419, 420, 0, 421, 422, - 423, 424, 425, 426, 427, 428, 0, 429, 430, 431, - 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, - 442, 0, 443, 444, 445, 446, 447, 448, 449, 450, - 451, 452, 453, 454, 0, 455, 456, 0, 457, 458, - 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, - 469, 39, 470, 471, 472, 473, 474, 0, 475, 476, - 477, 478, 479, 0, 480, 481, 482, 483, 0, 484, - 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, - 495, 496, 0, 497, 498, 43, 499, 0, 500, 501, - 502, 503, 504, 0, 505, 506, 0, 0, 507, 508, - 509, 510, 511, 0, 512, 513, 514, 515, 516, 517, - 518, 0, 0, 519, 520, 521, 522, 523, 0, 0, - 524, 525, 526, 527, 528, 1113, 530, 0, 531, 0, - 532, 533, 534, 535, 0, 0, 536, 0, 48, 537, - 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, - 548, 549, 550, 551, 552, 553, 554, 555, 556, 0, - 0, 49, 223, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 50, 224, 225, 226, - 227, 228, 229, 230, 231, 0, 233, 234, 235, 0, - 0, 0, 0, 0, 0, 0, 236, 237, 0, 238, - 239, 240, 0, 241, 242, 243, 244, 245, 0, 246, - 247, 0, 248, 249, 250, 251, 252, 0, 0, 253, - 254, 255, 256, 257, 0, 258, 259, 260, 261, 262, - 0, 0, 0, 263, 264, 265, 266, 267, 0, 268, - 269, 270, 0, 271, 272, 273, 274, 275, 276, 0, - 0, 277, 278, 279, 0, 0, 0, 0, 0, 0, - 0, 280, 281, 282, 283, 284, 285, 286, 287, 288, - 0, 289, 0, 290, 291, 292, 293, 294, 295, 0, - 296, 297, 298, 299, 0, 0, 300, 301, 302, 303, - 304, 0, 305, 306, 307, 0, 308, 309, 310, 0, - 311, 312, 313, 314, 315, 316, 317, 318, 319, 0, - 320, 0, 321, 322, 323, 324, 0, 325, 0, 326, - 0, 0, 0, 327, 328, 329, 330, 0, 331, 332, - 0, 333, 334, 0, 335, 336, 337, 338, 339, 0, - 340, 341, 342, 343, 0, 344, 345, 346, 347, 348, - 349, 0, 350, 0, 351, 352, 353, 354, 355, 356, - 357, 0, 358, 0, 359, 0, 0, 360, 0, 361, - 362, 363, 364, 365, 0, 0, 366, 367, 0, 368, - 0, 0, 369, 370, 371, 0, 0, 372, 373, 374, - 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, - 385, 386, 387, 388, 0, 389, 390, 391, 392, 393, - 0, 394, 395, 0, 396, 0, 397, 398, 399, 400, - 401, 402, 0, 403, 404, 0, 0, 405, 406, 407, - 0, 0, 408, 409, 0, 410, 0, 411, 412, 413, - 414, 415, 416, 417, 418, 419, 420, 0, 421, 422, - 423, 424, 425, 426, 427, 428, 0, 429, 430, 431, - 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, - 442, 0, 443, 444, 445, 446, 447, 448, 449, 450, - 451, 452, 453, 454, 0, 455, 456, 0, 457, 458, - 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, - 469, 0, 470, 471, 472, 473, 474, 0, 475, 476, - 477, 478, 479, 0, 480, 481, 482, 483, 0, 484, - 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, - 495, 496, 0, 497, 498, 0, 499, 0, 500, 501, - 502, 503, 504, 0, 505, 506, 0, 0, 507, 508, - 509, 510, 511, 0, 512, 513, 514, 515, 516, 517, - 518, 0, 0, 519, 520, 521, 522, 523, 0, 0, - 524, 525, 526, 527, 528, 529, 530, 0, 531, 0, - 532, 533, 534, 535, 0, 0, 536, 0, 0, 537, - 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, - 548, 549, 550, 551, 552, 553, 554, 555, 556, 0, - 0, 0, 223, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 1311, 224, 225, 226, - 227, 228, 229, 230, 231, 0, 233, 234, 235, 0, - 0, 0, 0, 0, 0, 0, 236, 237, 0, 238, - 239, 240, 0, 241, 242, 243, 244, 245, 0, 246, - 247, 0, 248, 249, 250, 251, 252, 0, 0, 253, - 254, 255, 256, 257, 0, 258, 259, 260, 261, 262, - 0, 0, 0, 263, 264, 265, 266, 267, 0, 268, - 269, 270, 0, 271, 272, 273, 274, 275, 276, 0, - 0, 277, 278, 279, 0, 0, 0, 0, 0, 0, - 0, 280, 281, 282, 283, 284, 285, 286, 287, 288, - 0, 289, 0, 290, 291, 292, 293, 294, 295, 0, - 296, 297, 298, 299, 0, 0, 300, 301, 302, 303, - 304, 0, 305, 306, 307, 0, 308, 309, 310, 0, - 311, 312, 313, 314, 315, 316, 317, 318, 319, 0, - 320, 0, 321, 322, 323, 324, 0, 325, 0, 326, - 0, 0, 0, 327, 328, 329, 330, 0, 331, 332, - 0, 333, 334, 0, 335, 336, 337, 338, 339, 0, - 340, 341, 342, 343, 0, 344, 345, 346, 347, 348, - 349, 0, 350, 0, 351, 352, 353, 354, 355, 356, - 357, 0, 358, 0, 359, 0, 0, 360, 0, 361, - 362, 363, 364, 365, 0, 0, 366, 367, 0, 368, - 0, 0, 369, 370, 371, 0, 0, 372, 373, 374, - 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, - 385, 386, 387, 388, 0, 389, 390, 391, 392, 393, - 0, 394, 395, 0, 396, 0, 397, 398, 399, 400, - 401, 402, 0, 403, 404, 0, 0, 405, 406, 407, - 0, 0, 408, 409, 0, 410, 0, 411, 412, 413, - 414, 415, 416, 417, 418, 419, 420, 0, 421, 422, - 423, 424, 425, 426, 427, 428, 0, 429, 430, 431, - 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, - 442, 0, 443, 444, 445, 446, 447, 448, 449, 450, - 451, 452, 453, 454, 0, 455, 456, 0, 457, 458, - 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, - 469, 0, 470, 471, 472, 473, 474, 0, 475, 476, - 477, 478, 479, 0, 480, 481, 482, 483, 0, 484, - 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, - 495, 496, 0, 497, 498, 0, 499, 0, 500, 501, - 502, 503, 504, 0, 505, 506, 0, 0, 507, 508, - 509, 510, 511, 0, 512, 513, 514, 515, 516, 517, - 518, 0, 0, 519, 520, 521, 522, 523, 0, 0, - 524, 525, 526, 527, 528, 529, 530, 0, 531, 0, - 532, 533, 534, 535, 0, 0, 536, 0, 0, 537, - 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, - 548, 549, 550, 551, 552, 553, 554, 555, 556, 0, - 0, 0, 223, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 2828, 224, 225, 226, - 227, 228, 229, 230, 231, 0, 233, 234, 235, 0, - 0, 0, 0, 0, 0, 0, 236, 237, 0, 238, - 239, 240, 0, 241, 242, 243, 244, 245, 0, 246, - 247, 0, 248, 249, 250, 251, 252, 0, 0, 253, - 254, 255, 256, 257, 0, 258, 259, 260, 261, 262, - 0, 0, 0, 263, 264, 265, 266, 267, 0, 268, - 269, 270, 0, 271, 272, 273, 274, 275, 276, 0, - 0, 277, 278, 279, 0, 0, 0, 0, 0, 0, - 0, 280, 281, 282, 283, 284, 285, 286, 287, 288, - 0, 289, 0, 290, 291, 292, 293, 294, 295, 0, - 296, 297, 298, 299, 0, 0, 300, 301, 302, 303, - 304, 0, 305, 306, 307, 0, 308, 309, 310, 0, - 311, 312, 313, 314, 315, 316, 317, 318, 319, 0, - 320, 0, 321, 322, 323, 324, 0, 325, 0, 326, - 0, 0, 0, 327, 328, 329, 330, 0, 331, 332, - 0, 333, 334, 0, 335, 336, 337, 338, 339, 0, - 340, 341, 342, 343, 0, 344, 345, 346, 347, 348, - 349, 0, 350, 0, 351, 352, 353, 354, 355, 356, - 357, 0, 358, 0, 359, 0, 0, 360, 0, 361, - 362, 363, 364, 365, 0, 0, 366, 367, 0, 368, - 0, 0, 369, 370, 371, 0, 0, 372, 373, 374, - 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, - 385, 386, 387, 388, 0, 389, 390, 391, 392, 393, - 0, 394, 395, 0, 396, 0, 397, 398, 399, 400, - 401, 402, 0, 403, 404, 0, 0, 405, 406, 407, - 0, 0, 408, 409, 0, 410, 0, 411, 412, 413, - 414, 415, 416, 417, 418, 419, 420, 0, 421, 422, - 423, 424, 425, 426, 427, 428, 0, 429, 430, 431, - 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, - 442, 0, 443, 444, 445, 446, 447, 448, 449, 450, - 451, 452, 453, 454, 0, 455, 456, 0, 457, 458, - 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, - 469, 0, 470, 471, 472, 473, 474, 0, 475, 476, - 477, 478, 479, 0, 480, 481, 482, 483, 0, 484, - 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, - 495, 496, 0, 497, 498, 0, 499, 0, 500, 501, - 502, 503, 504, 0, 505, 506, 0, 0, 507, 508, - 509, 510, 511, 0, 512, 513, 514, 515, 516, 517, - 518, 0, 0, 519, 520, 521, 522, 523, 0, 0, - 524, 525, 526, 527, 528, 529, 530, 0, 531, 0, - 532, 533, 534, 535, 0, 0, 536, 0, 0, 537, - 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, - 548, 549, 550, 551, 552, 553, 554, 555, 556, 0, - 0, 0, 223, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 3977, 224, 225, 226, - 227, 228, 229, 230, 231, 0, 233, 234, 235, 0, - 0, 0, 0, 0, 0, 0, 236, 237, 0, 238, - 239, 240, 0, 241, 242, 243, 244, 245, 0, 246, - 247, 0, 248, 249, 250, 251, 252, 0, 0, 253, - 254, 255, 256, 257, 0, 258, 259, 260, 261, 262, - 0, 0, 0, 263, 264, 265, 266, 267, 0, 268, - 269, 270, 0, 271, 272, 273, 274, 275, 276, 0, - 0, 277, 278, 279, 0, 0, 0, 0, 0, 0, - 0, 280, 281, 282, 283, 284, 285, 286, 287, 288, - 0, 289, 0, 290, 291, 292, 293, 294, 295, 0, - 296, 297, 298, 299, 0, 0, 300, 301, 302, 303, - 304, 0, 305, 306, 307, 0, 308, 309, 310, 0, - 311, 312, 313, 314, 315, 316, 317, 318, 319, 0, - 320, 0, 321, 322, 323, 324, 0, 325, 0, 326, - 0, 0, 0, 327, 328, 329, 330, 0, 331, 332, - 0, 333, 334, 0, 335, 336, 337, 338, 339, 0, - 340, 341, 342, 343, 0, 344, 345, 346, 347, 348, - 349, 0, 350, 0, 351, 352, 353, 354, 355, 356, - 357, 0, 358, 0, 359, 0, 0, 360, 0, 361, - 362, 363, 364, 365, 0, 0, 366, 367, 0, 368, - 0, 0, 369, 370, 371, 0, 0, 372, 373, 374, - 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, - 385, 386, 387, 388, 0, 389, 390, 391, 392, 393, - 0, 394, 395, 0, 396, 0, 397, 398, 399, 400, - 401, 402, 0, 403, 404, 0, 0, 405, 406, 407, - 0, 0, 408, 409, 0, 410, 0, 411, 412, 413, - 414, 415, 416, 417, 418, 419, 420, 0, 421, 422, - 423, 424, 425, 426, 427, 428, 0, 429, 430, 431, - 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, - 442, 0, 443, 444, 445, 446, 447, 448, 449, 450, - 451, 452, 453, 454, 0, 455, 456, 0, 457, 458, - 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, - 469, 0, 470, 471, 472, 473, 474, 0, 475, 476, - 477, 478, 479, 0, 480, 481, 482, 483, 0, 484, - 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, - 495, 496, 0, 497, 498, 0, 499, 0, 500, 501, - 502, 503, 504, 0, 505, 506, 0, 0, 507, 508, - 509, 510, 511, 0, 512, 513, 514, 515, 516, 517, - 518, 0, 0, 519, 520, 521, 522, 523, 0, 0, - 524, 525, 526, 527, 528, 529, 530, 0, 531, 0, - 532, 533, 534, 535, 0, 0, 536, 0, 0, 537, - 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, - 548, 549, 550, 551, 552, 553, 554, 555, 556, 0, - 0, 0, 0, 0, 0, 1031, 1460, 617, 0, 0, - 859, 676, 0, 0, 0, 0, 4425, 860, 861, 862, - 224, 225, 226, 227, 228, 229, 230, 231, 1953, 233, - 234, 235, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 236, - 237, 1961, 238, 239, 240, 801, 241, 242, 243, 0, - 1032, 802, 1033, 1034, 1962, 248, 249, 250, 251, 252, - 1963, 1964, 253, 254, 1035, 1036, 257, 1965, 258, 259, - 260, 261, 0, 1966, 803, 1967, 263, 264, 265, 266, - 267, 804, 268, 269, 270, 1968, 271, 272, 273, 274, - 275, 276, 1969, 805, 277, 278, 279, 1970, 1971, 1972, - 806, 1973, 1974, 1975, 280, 281, 282, 283, 284, 285, - 1037, 1038, 288, 1976, 289, 1977, 290, 291, 292, 293, - 294, 295, 1978, 296, 297, 298, 299, 1979, 1980, 300, - 301, 1039, 303, 304, 1981, 305, 306, 307, 1982, 308, - 309, 310, 1983, 311, 312, 313, 314, 0, 316, 317, - 318, 0, 1984, 320, 1985, 321, 322, 1040, 324, 1986, - 325, 1987, 326, 807, 1988, 808, 327, 328, 329, 330, - 1989, 331, 0, 1990, 0, 334, 1991, 335, 336, 337, - 338, 339, 809, 340, 341, 342, 343, 1992, 344, 345, - 346, 347, 348, 349, 1993, 350, 810, 0, 352, 353, - 354, 355, 1042, 1043, 1994, 1044, 1995, 359, 811, 812, - 360, 813, 361, 362, 363, 364, 365, 1996, 1997, 366, - 0, 814, 368, 815, 1998, 369, 370, 371, 1999, 2000, - 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, - 382, 383, 384, 385, 386, 387, 1045, 816, 1046, 390, - 391, 392, 3727, 2001, 394, 395, 817, 396, 2002, 0, - 398, 1047, 400, 401, 402, 2003, 403, 404, 2004, 2005, - 3728, 406, 407, 2006, 2007, 408, 0, 818, 410, 819, - 0, 412, 413, 414, 415, 416, 417, 418, 419, 420, - 2008, 421, 422, 0, 424, 0, 426, 427, 428, 2009, - 429, 430, 431, 432, 433, 434, 435, 436, 437, 1048, - 439, 440, 441, 442, 2010, 443, 444, 445, 446, 447, - 448, 449, 450, 451, 452, 453, 454, 2011, 455, 456, - 820, 457, 458, 459, 0, 461, 462, 463, 464, 465, - 466, 467, 468, 469, 2012, 470, 471, 472, 473, 474, - 2013, 475, 476, 2099, 478, 479, 821, 480, 481, 1050, - 483, 2014, 484, 485, 486, 487, 488, 489, 490, 491, - 492, 493, 494, 495, 0, 2015, 497, 498, 2016, 499, - 822, 500, 501, 502, 503, 504, 2017, 1051, 1052, 2018, - 2019, 507, 508, 0, 510, 0, 2020, 512, 513, 514, - 515, 516, 517, 518, 2021, 2022, 519, 520, 521, 522, - 523, 2023, 2024, 524, 525, 526, 527, 528, 0, 1053, - 2025, 531, 823, 532, 533, 534, 535, 2026, 2027, 536, - 2028, 2029, 537, 538, 539, 540, 541, 542, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 554, - 555, 556, 0, 0, 0, 865, 866, 867, 0, 3729, - 3730, 870, 871, 872, 873, 874, 1031, 1460, 617, 0, - 0, 859, 676, 0, 0, 0, 0, 0, 860, 861, - 862, 224, 225, 226, 227, 228, 229, 230, 231, 1953, - 233, 234, 235, 1954, 1955, 1956, 1957, 1958, 1959, 1960, - 236, 237, 1961, 238, 239, 240, 801, 241, 242, 243, - 0, 1032, 802, 1033, 1034, 1962, 248, 249, 250, 251, - 252, 1963, 1964, 253, 254, 1035, 1036, 257, 1965, 258, - 259, 260, 261, 0, 1966, 803, 1967, 263, 264, 265, - 266, 267, 804, 268, 269, 270, 1968, 271, 272, 273, - 274, 275, 276, 1969, 805, 277, 278, 279, 1970, 1971, - 1972, 806, 1973, 1974, 1975, 280, 281, 282, 283, 284, - 285, 1037, 1038, 288, 1976, 289, 1977, 290, 291, 292, - 293, 294, 295, 1978, 296, 297, 298, 299, 1979, 1980, - 300, 301, 1039, 303, 304, 1981, 305, 306, 307, 1982, - 308, 309, 310, 1983, 311, 312, 313, 314, 0, 316, - 317, 318, 0, 1984, 320, 1985, 321, 322, 1040, 324, - 1986, 325, 1987, 326, 807, 1988, 808, 327, 328, 329, - 330, 1989, 331, 0, 1990, 0, 334, 1991, 335, 336, - 337, 338, 339, 809, 340, 341, 342, 343, 1992, 344, - 345, 346, 347, 348, 349, 1993, 350, 810, 0, 352, - 353, 354, 355, 1042, 1043, 1994, 1044, 1995, 359, 811, - 812, 360, 813, 361, 362, 363, 364, 365, 1996, 1997, - 366, 0, 814, 368, 815, 1998, 369, 370, 371, 1999, - 2000, 372, 373, 374, 375, 376, 377, 378, 379, 380, - 381, 382, 383, 384, 385, 386, 387, 1045, 816, 1046, - 390, 391, 392, 4161, 2001, 394, 395, 817, 396, 2002, - 0, 398, 1047, 400, 401, 402, 2003, 403, 404, 2004, - 2005, 3728, 406, 407, 2006, 2007, 408, 0, 818, 410, - 819, 0, 412, 413, 414, 415, 416, 417, 418, 419, - 420, 2008, 421, 422, 0, 424, 0, 426, 427, 428, - 2009, 429, 430, 431, 432, 433, 434, 435, 436, 437, - 1048, 439, 440, 441, 442, 2010, 443, 444, 445, 446, - 447, 448, 449, 450, 451, 452, 453, 454, 2011, 455, - 456, 820, 457, 458, 459, 0, 461, 462, 463, 464, - 465, 466, 467, 468, 469, 2012, 470, 471, 472, 473, - 474, 2013, 475, 476, 2099, 478, 479, 821, 480, 481, - 1050, 483, 2014, 484, 485, 486, 487, 488, 489, 490, - 491, 492, 493, 494, 495, 0, 2015, 497, 498, 2016, - 499, 822, 500, 501, 502, 503, 504, 2017, 1051, 1052, - 2018, 2019, 507, 508, 0, 510, 0, 2020, 512, 513, - 514, 515, 516, 517, 518, 2021, 2022, 519, 520, 521, - 522, 523, 2023, 2024, 524, 525, 526, 527, 528, 0, - 1053, 2025, 531, 823, 532, 533, 534, 535, 2026, 2027, - 536, 2028, 2029, 537, 538, 539, 540, 541, 542, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 554, 555, 556, 845, 1460, 617, 865, 866, 867, 676, - 3729, 3730, 870, 871, 872, 873, 874, 0, 224, 225, - 226, 227, 228, 229, 230, 231, 0, 233, 234, 235, - 0, 0, 0, 0, 0, 0, 0, 236, 237, 0, - 238, 239, 240, 801, 241, 242, 243, 244, 245, 802, - 246, 247, 0, 248, 249, 250, 251, 252, 0, 0, - 253, 254, 255, 256, 257, 0, 258, 259, 260, 261, - 262, 0, 803, 0, 263, 264, 265, 266, 267, 804, - 268, 269, 270, 0, 271, 272, 273, 274, 275, 276, - 0, 805, 277, 278, 279, 0, 0, 0, 806, 0, - 0, 0, 280, 281, 282, 283, 284, 285, 286, 287, - 288, 1940, 289, 0, 290, 291, 292, 293, 294, 295, - 0, 296, 297, 298, 299, 0, 0, 300, 301, 302, - 303, 304, 0, 305, 306, 307, 0, 308, 309, 310, - 0, 311, 312, 313, 314, 315, 316, 317, 318, 319, - 1762, 320, 0, 321, 322, 323, 324, 0, 325, 0, - 326, 807, 0, 808, 327, 328, 329, 330, 0, 331, - 332, 0, 333, 334, 0, 335, 336, 337, 338, 339, - 809, 340, 341, 342, 343, 0, 344, 345, 346, 347, - 348, 349, 0, 350, 810, 351, 352, 353, 354, 355, - 356, 357, 0, 358, 0, 359, 811, 812, 360, 813, - 361, 362, 363, 364, 365, 0, 0, 366, 367, 814, - 368, 815, 0, 369, 370, 371, 0, 0, 372, 373, - 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, - 384, 385, 386, 387, 388, 816, 389, 390, 391, 392, - 393, 0, 394, 395, 817, 396, 0, 397, 398, 399, - 400, 401, 402, 0, 403, 404, 1763, 0, 405, 406, - 407, 0, 0, 408, 409, 818, 410, 819, 411, 412, - 413, 414, 415, 416, 417, 418, 419, 420, 0, 421, - 422, 423, 424, 425, 426, 427, 428, 0, 429, 430, - 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, - 441, 442, 0, 443, 444, 445, 446, 447, 448, 449, - 450, 451, 452, 453, 454, 0, 455, 456, 820, 457, - 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, - 468, 469, 0, 470, 471, 472, 473, 474, 0, 475, - 476, 477, 478, 479, 821, 480, 481, 482, 483, 0, - 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, - 494, 495, 496, 0, 497, 498, 0, 499, 822, 500, - 501, 502, 503, 504, 0, 505, 506, 0, 0, 507, - 508, 509, 510, 511, 1764, 512, 513, 514, 515, 516, - 517, 518, 0, 0, 519, 520, 521, 522, 523, 0, - 0, 524, 525, 526, 527, 528, 529, 530, 0, 531, - 823, 532, 533, 534, 535, 0, 0, 536, 0, 0, - 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, - 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, - 845, 1460, 617, 0, 0, 0, 676, 1461, 1462, 0, - 0, 0, 0, 1941, 0, 224, 225, 226, 227, 228, - 229, 230, 231, 0, 233, 234, 235, 0, 0, 0, - 0, 0, 0, 0, 236, 237, 0, 238, 239, 240, - 801, 241, 242, 243, 244, 245, 802, 246, 247, 0, - 248, 249, 250, 251, 252, 0, 0, 253, 254, 255, - 256, 257, 0, 258, 259, 260, 261, 262, 0, 803, - 0, 263, 264, 265, 266, 267, 804, 268, 269, 270, - 0, 271, 272, 273, 274, 275, 276, 0, 805, 277, - 278, 279, 0, 0, 0, 806, 0, 0, 0, 280, - 281, 282, 283, 284, 285, 286, 287, 288, 1946, 289, - 0, 290, 291, 292, 293, 294, 295, 0, 296, 297, - 298, 299, 0, 0, 300, 301, 302, 303, 304, 0, - 305, 306, 307, 0, 308, 309, 310, 0, 311, 312, - 313, 314, 315, 316, 317, 318, 319, 1762, 320, 0, - 321, 322, 323, 324, 0, 325, 0, 326, 807, 0, - 808, 327, 328, 329, 330, 0, 331, 332, 0, 333, - 334, 0, 335, 336, 337, 338, 339, 809, 340, 341, - 342, 343, 0, 344, 345, 346, 347, 348, 349, 0, - 350, 810, 351, 352, 353, 354, 355, 356, 357, 0, - 358, 0, 359, 811, 812, 360, 813, 361, 362, 363, - 364, 365, 0, 0, 366, 367, 814, 368, 815, 0, - 369, 370, 371, 0, 0, 372, 373, 374, 375, 376, - 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, - 387, 388, 816, 389, 390, 391, 392, 393, 0, 394, - 395, 817, 396, 0, 397, 398, 399, 400, 401, 402, - 0, 403, 404, 1763, 0, 405, 406, 407, 0, 0, - 408, 409, 818, 410, 819, 411, 412, 413, 414, 415, - 416, 417, 418, 419, 420, 0, 421, 422, 423, 424, - 425, 426, 427, 428, 0, 429, 430, 431, 432, 433, - 434, 435, 436, 437, 438, 439, 440, 441, 442, 0, - 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, - 453, 454, 0, 455, 456, 820, 457, 458, 459, 460, - 461, 462, 463, 464, 465, 466, 467, 468, 469, 0, - 470, 471, 472, 473, 474, 0, 475, 476, 477, 478, - 479, 821, 480, 481, 482, 483, 0, 484, 485, 486, - 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, - 0, 497, 498, 0, 499, 822, 500, 501, 502, 503, - 504, 0, 505, 506, 0, 0, 507, 508, 509, 510, - 511, 1764, 512, 513, 514, 515, 516, 517, 518, 0, - 0, 519, 520, 521, 522, 523, 0, 0, 524, 525, - 526, 527, 528, 529, 530, 0, 531, 823, 532, 533, - 534, 535, 0, 0, 536, 0, 0, 537, 538, 539, - 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, - 550, 551, 552, 553, 554, 555, 556, 845, 1460, 617, - 0, 0, 0, 676, 1461, 1462, 0, 0, 0, 0, - 1941, 0, 224, 225, 226, 227, 228, 229, 230, 231, - 0, 233, 234, 235, 0, 0, 0, 0, 0, 0, - 0, 236, 237, 0, 238, 239, 240, 801, 241, 242, - 243, 244, 245, 802, 246, 247, 0, 248, 249, 250, - 251, 252, 0, 0, 253, 254, 255, 256, 257, 0, - 258, 259, 260, 261, 262, 0, 803, 0, 263, 264, - 265, 266, 267, 804, 268, 269, 270, 0, 271, 272, - 273, 274, 275, 276, 0, 805, 277, 278, 279, 0, - 0, 0, 806, 0, 0, 0, 280, 281, 282, 283, - 284, 285, 286, 287, 288, 0, 289, 0, 290, 291, - 292, 293, 294, 295, 0, 296, 297, 298, 299, 0, - 0, 300, 301, 302, 303, 304, 0, 305, 306, 307, - 0, 308, 309, 310, 0, 311, 312, 313, 314, 315, - 316, 317, 318, 319, 1762, 320, 0, 321, 322, 323, - 324, 0, 325, 0, 326, 807, 0, 808, 327, 328, - 329, 330, 0, 331, 332, 0, 333, 334, 0, 335, - 336, 337, 338, 339, 809, 340, 341, 342, 343, 0, - 344, 345, 346, 347, 348, 349, 0, 350, 810, 351, - 352, 353, 354, 355, 356, 357, 0, 358, 0, 359, - 811, 812, 360, 813, 361, 362, 363, 364, 365, 0, - 0, 366, 367, 814, 368, 815, 0, 369, 370, 371, - 0, 0, 372, 373, 374, 375, 376, 377, 378, 379, - 380, 381, 382, 383, 384, 385, 386, 387, 388, 816, - 389, 390, 391, 392, 393, 0, 394, 395, 817, 396, - 0, 397, 398, 399, 400, 401, 402, 0, 403, 404, - 1763, 0, 405, 406, 407, 0, 0, 408, 409, 818, - 410, 819, 411, 412, 413, 414, 415, 416, 417, 418, - 419, 420, 0, 421, 422, 423, 424, 425, 426, 427, - 428, 0, 429, 430, 431, 432, 433, 434, 435, 436, - 437, 438, 439, 440, 441, 442, 0, 443, 444, 445, + 455, 456, 0, 458, 0, 460, 461, 462, 0, 463, + 464, 465, 466, 467, 468, 469, 470, 471, 472, 1087, + 474, 475, 476, 477, 0, 478, 479, 480, 481, 482, + 483, 484, 485, 486, 487, 488, 489, 0, 490, 491, + 492, 493, 494, 495, 496, 497, 0, 499, 500, 501, + 502, 503, 504, 505, 506, 507, 0, 508, 509, 510, + 511, 512, 0, 513, 514, 2195, 516, 517, 518, 519, + 520, 1089, 522, 0, 523, 524, 525, 526, 527, 528, + 529, 530, 531, 532, 533, 534, 535, 0, 537, 0, + 538, 539, 0, 540, 541, 542, 543, 544, 545, 546, + 0, 547, 1090, 1091, 0, 0, 550, 551, 0, 553, + 0, 0, 555, 556, 557, 558, 559, 560, 561, 562, + 0, 0, 563, 564, 565, 566, 567, 0, 0, 568, + 569, 570, 571, 572, 0, 1092, 2196, 575, 576, 577, + 578, 579, 580, 0, 0, 581, 0, 0, 582, 583, + 584, 585, 586, 587, 1070, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 599, 600, 601, 0, 0, + 0, 0, 0, 229, 230, 231, 232, 233, 234, 235, + 236, 0, 237, 238, 239, 0, 2304, 0, 0, 0, + 0, 0, 240, 241, 0, 242, 243, 244, 245, 246, + 247, 248, 0, 1071, 251, 1072, 1073, 0, 254, 255, + 256, 257, 258, 259, 0, 0, 260, 261, 1074, 1075, + 264, 0, 265, 266, 267, 268, 0, 0, 270, 0, + 271, 272, 273, 274, 275, 276, 277, 278, 279, 0, + 280, 281, 282, 283, 284, 285, 0, 286, 287, 288, + 289, 0, 0, 0, 290, 0, 0, 0, 291, 292, + 293, 294, 295, 296, 1076, 1077, 299, 0, 300, 0, + 301, 302, 303, 304, 305, 306, 0, 307, 308, 309, + 310, 0, 0, 311, 312, 1078, 314, 315, 0, 316, + 317, 318, 0, 319, 320, 321, 0, 322, 323, 324, + 325, 0, 327, 328, 329, 330, 0, 0, 332, 0, + 333, 334, 1079, 336, 0, 337, 0, 338, 339, 0, + 340, 341, 342, 343, 344, 0, 345, 0, 0, 0, + 348, 349, 0, 350, 351, 352, 353, 354, 355, 356, + 357, 358, 359, 2191, 360, 361, 362, 363, 364, 365, + 366, 0, 367, 368, 2192, 370, 371, 372, 373, 1081, + 1082, 0, 1083, 0, 377, 378, 379, 380, 381, 382, + 383, 384, 385, 386, 0, 0, 387, 0, 389, 390, + 391, 0, 392, 393, 394, 0, 0, 395, 396, 397, + 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, + 408, 409, 410, 1084, 412, 1085, 414, 415, 416, 417, + 418, 419, 420, 0, 0, 423, 0, 424, 425, 426, + 427, 0, 0, 429, 1086, 431, 432, 433, 0, 434, + 435, 0, 0, 436, 437, 438, 0, 0, 439, 440, + 2194, 442, 443, 444, 0, 446, 447, 448, 449, 450, + 451, 452, 453, 454, 0, 455, 456, 0, 458, 0, + 460, 461, 462, 0, 463, 464, 465, 466, 467, 468, + 469, 470, 471, 472, 1087, 474, 475, 476, 477, 0, + 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, + 488, 489, 0, 490, 491, 492, 493, 494, 495, 496, + 497, 0, 499, 500, 501, 502, 503, 504, 505, 506, + 507, 0, 508, 509, 510, 511, 512, 0, 513, 514, + 2195, 516, 517, 518, 519, 520, 1089, 522, 0, 523, + 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, + 534, 535, 0, 537, 0, 538, 539, 0, 540, 541, + 542, 543, 544, 545, 546, 0, 547, 1090, 1091, 0, + 0, 550, 551, 0, 553, 0, 0, 555, 556, 557, + 558, 559, 560, 561, 562, 0, 0, 563, 564, 565, + 566, 567, 0, 0, 568, 569, 570, 571, 572, 0, + 1092, 2196, 575, 576, 577, 578, 579, 580, 0, 0, + 581, 0, 0, 582, 583, 584, 585, 586, 587, 228, + 0, 1223, 669, 0, 1224, 1225, 1226, 729, 1227, 0, + 599, 600, 601, 0, 0, 0, 0, 0, 229, 230, + 231, 232, 233, 234, 235, 236, 0, 237, 238, 239, + 0, 3392, 0, 0, 1228, 0, 0, 240, 241, 0, + 242, 243, 244, 245, 246, 247, 248, 249, 1229, 251, + 1230, 1231, 0, 254, 255, 256, 257, 258, 259, 1232, + 1233, 260, 261, 1234, 1235, 264, 0, 265, 266, 267, + 268, 1236, 0, 1237, 0, 271, 272, 273, 274, 275, + 276, 277, 278, 279, 0, 280, 281, 282, 283, 284, + 285, 0, 286, 287, 288, 289, 1238, 1239, 1240, 1241, + 1242, 1243, 1244, 291, 292, 293, 294, 295, 296, 1245, + 1246, 299, 1247, 300, 0, 301, 302, 303, 304, 305, + 306, 0, 307, 308, 309, 310, 0, 0, 311, 312, + 1078, 314, 315, 0, 316, 317, 318, 0, 319, 320, + 321, 0, 322, 323, 324, 325, 1248, 327, 328, 329, + 330, 1249, 1250, 332, 0, 333, 334, 1251, 336, 0, + 337, 0, 338, 339, 0, 340, 341, 342, 343, 344, + 0, 345, 1252, 0, 1253, 348, 349, 0, 350, 351, + 352, 353, 354, 355, 356, 357, 358, 359, 0, 360, + 361, 362, 363, 364, 365, 366, 0, 367, 368, 369, + 370, 371, 372, 373, 1254, 1255, 0, 1256, 0, 377, + 378, 379, 380, 381, 382, 383, 384, 385, 386, 0, + 0, 387, 1257, 389, 390, 391, 0, 392, 393, 394, + 1258, 1259, 395, 396, 397, 398, 399, 400, 401, 402, + 403, 404, 405, 406, 407, 408, 409, 410, 1260, 412, + 1261, 414, 415, 416, 417, 418, 419, 420, 421, 1262, + 423, 1263, 424, 425, 426, 427, 1264, 1265, 429, 1266, + 431, 432, 433, 0, 434, 435, 0, 0, 1267, 437, + 438, 0, 0, 439, 440, 441, 442, 443, 444, 1268, 446, 447, 448, 449, 450, 451, 452, 453, 454, 0, - 455, 456, 820, 457, 458, 459, 460, 461, 462, 463, - 464, 465, 466, 467, 468, 469, 0, 470, 471, 472, - 473, 474, 0, 475, 476, 477, 478, 479, 821, 480, - 481, 482, 483, 0, 484, 485, 486, 487, 488, 489, - 490, 491, 492, 493, 494, 495, 496, 0, 497, 498, - 0, 499, 822, 500, 501, 502, 503, 504, 0, 505, - 506, 0, 0, 507, 508, 509, 510, 511, 1764, 512, - 513, 514, 515, 516, 517, 518, 0, 0, 519, 520, - 521, 522, 523, 0, 0, 524, 525, 526, 527, 528, - 529, 530, 0, 531, 823, 532, 533, 534, 535, 0, - 0, 536, 0, 0, 537, 538, 539, 540, 541, 542, - 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, - 553, 554, 555, 556, 845, 0, 617, 0, 0, 0, - 0, 1461, 1462, 0, 0, 0, 0, 1941, 0, 224, - 225, 226, 227, 228, 229, 230, 231, 0, 233, 234, - 235, 0, 0, 0, 0, 0, 0, 0, 236, 237, - 0, 238, 239, 240, 801, 241, 242, 243, 244, 245, - 802, 246, 247, 0, 248, 249, 250, 251, 252, 0, - 0, 253, 254, 255, 256, 257, 0, 258, 259, 260, - 261, 262, 0, 803, 0, 263, 264, 265, 266, 267, - 804, 268, 269, 270, 0, 271, 272, 273, 274, 275, - 276, 0, 805, 277, 278, 279, 0, 0, 0, 806, - 0, 0, 0, 280, 281, 282, 283, 284, 285, 286, - 287, 288, 1925, 289, 0, 290, 291, 292, 293, 294, - 295, 0, 296, 297, 298, 299, 0, 0, 300, 301, - 302, 303, 304, 0, 305, 306, 307, 0, 308, 309, - 310, 0, 311, 312, 313, 314, 315, 316, 317, 318, - 319, 0, 320, 0, 321, 322, 323, 324, 0, 325, - 0, 326, 807, 0, 808, 327, 328, 329, 330, 0, - 331, 332, 0, 333, 334, 0, 335, 336, 337, 338, - 339, 809, 340, 341, 342, 343, 0, 344, 345, 346, - 347, 348, 349, 0, 350, 810, 351, 352, 353, 354, - 355, 356, 357, 0, 358, 0, 359, 811, 812, 360, - 813, 361, 362, 363, 364, 365, 0, 0, 366, 367, - 814, 368, 815, 0, 369, 370, 371, 0, 0, 372, - 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, - 383, 384, 385, 386, 387, 388, 816, 389, 390, 391, - 392, 393, 0, 394, 395, 817, 396, 0, 397, 398, - 399, 400, 401, 402, 0, 403, 404, 0, 0, 405, - 406, 407, 0, 0, 408, 409, 818, 410, 819, 411, - 412, 413, 414, 415, 416, 417, 418, 419, 420, 0, - 421, 422, 423, 424, 425, 426, 427, 428, 0, 429, - 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, - 440, 441, 442, 0, 443, 444, 445, 446, 447, 448, - 449, 450, 451, 452, 453, 454, 0, 455, 456, 820, - 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, - 467, 468, 469, 0, 470, 471, 472, 473, 474, 0, - 475, 476, 477, 478, 479, 821, 480, 481, 482, 483, - 0, 484, 485, 486, 487, 488, 489, 490, 491, 492, - 493, 494, 495, 496, 0, 497, 498, 0, 499, 822, - 500, 501, 502, 503, 504, 0, 505, 506, 0, 0, - 507, 508, 509, 510, 511, 0, 512, 513, 514, 515, - 516, 517, 518, 0, 0, 519, 520, 521, 522, 523, - 0, 0, 524, 525, 526, 527, 528, 529, 530, 0, - 531, 823, 532, 533, 534, 535, 0, 0, 536, 0, - 0, 537, 538, 539, 540, 541, 542, 543, 544, 545, - 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, - 556, 845, 0, 617, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1291, 0, 224, 225, 226, 227, - 228, 229, 230, 231, 0, 233, 234, 235, 0, 0, - 0, 0, 0, 0, 0, 236, 237, 0, 238, 239, - 240, 801, 241, 242, 243, 244, 245, 802, 246, 247, - 0, 248, 249, 250, 251, 252, 0, 0, 253, 254, - 255, 256, 257, 0, 258, 259, 260, 261, 262, 0, - 803, 0, 263, 264, 265, 266, 267, 804, 268, 269, - 270, 0, 271, 272, 273, 274, 275, 276, 0, 805, - 277, 278, 279, 0, 0, 0, 806, 0, 0, 0, - 280, 281, 282, 283, 284, 285, 286, 287, 288, 0, - 289, 0, 290, 291, 292, 293, 294, 295, 0, 296, - 297, 298, 299, 0, 0, 300, 301, 302, 303, 304, - 0, 305, 306, 307, 0, 308, 309, 310, 0, 311, - 312, 313, 314, 315, 316, 317, 318, 319, 0, 320, - 0, 321, 322, 323, 324, 0, 325, 0, 326, 807, - 0, 808, 327, 328, 329, 330, 0, 331, 332, 0, - 333, 334, 0, 335, 336, 337, 338, 339, 809, 340, - 341, 342, 343, 0, 344, 345, 346, 347, 348, 349, - 0, 350, 810, 351, 352, 353, 354, 355, 356, 357, - 0, 358, 0, 359, 811, 812, 360, 813, 361, 362, - 363, 364, 365, 0, 0, 366, 367, 814, 368, 815, - 0, 369, 370, 371, 0, 0, 372, 373, 374, 375, - 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, - 386, 387, 388, 816, 389, 390, 391, 392, 393, 0, - 394, 395, 817, 396, 0, 397, 398, 399, 400, 401, - 402, 0, 403, 404, 0, 0, 405, 406, 407, 0, - 0, 408, 409, 818, 410, 819, 411, 412, 413, 414, - 415, 416, 417, 418, 419, 420, 0, 421, 422, 423, - 424, 425, 426, 427, 428, 0, 429, 430, 431, 432, - 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, - 0, 443, 444, 445, 446, 447, 448, 449, 450, 451, - 452, 453, 454, 0, 455, 456, 820, 457, 458, 459, - 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, - 0, 470, 471, 472, 473, 474, 0, 475, 476, 477, - 478, 479, 821, 480, 481, 482, 483, 0, 484, 485, - 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, - 496, 0, 497, 498, 0, 499, 822, 500, 501, 502, - 503, 504, 0, 505, 506, 0, 0, 507, 508, 509, - 510, 511, 0, 512, 513, 514, 515, 516, 517, 518, - 0, 0, 519, 520, 521, 522, 523, 0, 0, 524, - 525, 526, 527, 528, 529, 530, 0, 531, 823, 532, - 533, 534, 535, 0, 0, 536, 0, 0, 537, 538, - 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, - 549, 550, 551, 552, 553, 554, 555, 556, 0, 0, - 223, 0, 0, 0, 0, 859, 0, 0, 0, 0, - 0, 1291, 860, 861, 862, 224, 225, 226, 227, 228, - 229, 230, 231, 0, 233, 234, 235, 0, 0, 0, - 0, 0, 0, 0, 236, 237, 0, 238, 239, 240, - 0, 241, 242, 243, 244, 245, 0, 246, 247, 0, - 248, 249, 250, 251, 252, 0, 0, 253, 254, 255, - 256, 257, 0, 258, 863, 260, 261, 262, 0, 0, - 0, 263, 264, 265, 266, 267, 0, 268, 269, 270, - 0, 271, 272, 273, 274, 275, 276, 0, 0, 277, - 278, 279, 0, 0, 0, 0, 0, 0, 0, 280, - 281, 282, 283, 284, 285, 286, 287, 288, 0, 289, - 0, 290, 291, 292, 293, 294, 295, 0, 296, 297, - 298, 299, 0, 0, 300, 301, 302, 303, 304, 0, - 305, 306, 307, 0, 308, 309, 310, 0, 311, 312, - 313, 314, 315, 316, 317, 318, 319, 0, 864, 0, - 321, 322, 323, 324, 0, 325, 0, 326, 0, 0, - 0, 327, 328, 329, 330, 0, 331, 332, 0, 333, - 334, 0, 335, 336, 337, 338, 339, 0, 340, 341, - 342, 343, 0, 344, 345, 346, 347, 348, 349, 0, - 350, 0, 351, 352, 353, 354, 355, 356, 357, 0, - 358, 0, 359, 0, 0, 360, 0, 361, 362, 363, - 364, 365, 0, 0, 366, 367, 0, 368, 0, 0, - 369, 370, 371, 0, 0, 372, 373, 374, 375, 376, + 455, 456, 1269, 458, 459, 460, 461, 462, 0, 463, + 464, 465, 466, 467, 468, 469, 470, 471, 472, 1270, + 474, 475, 476, 477, 0, 478, 479, 480, 481, 482, + 483, 484, 485, 486, 487, 488, 489, 0, 490, 491, + 492, 493, 494, 495, 496, 497, 1271, 499, 500, 501, + 502, 503, 504, 505, 506, 507, 40, 508, 509, 510, + 511, 512, 1272, 513, 514, 515, 516, 517, 518, 519, + 520, 1273, 522, 0, 523, 524, 525, 526, 527, 528, + 529, 530, 531, 532, 533, 534, 535, 1274, 537, 0, + 538, 539, 44, 540, 541, 542, 543, 544, 545, 546, + 0, 547, 1275, 1276, 0, 0, 550, 551, 1277, 553, + 1278, 1279, 555, 556, 557, 558, 559, 560, 561, 562, + 0, 1280, 563, 564, 565, 566, 567, 1281, 0, 568, + 569, 570, 571, 572, 1157, 1282, 0, 575, 576, 577, + 578, 579, 580, 0, 0, 581, 0, 49, 582, 583, + 584, 585, 586, 587, 588, 1283, 1284, 1285, 1286, 593, + 1287, 1288, 1289, 1290, 598, 599, 600, 601, 1291, 0, + 50, 0, 0, 0, 1292, 0, 1293, 1294, 0, 0, + 0, 228, 0, 1223, 669, 1296, 1224, 1225, 1226, 729, + 1227, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 229, 230, 231, 232, 233, 234, 235, 236, 0, 237, + 238, 239, 0, 0, 0, 0, 1228, 0, 0, 240, + 241, 0, 242, 243, 244, 245, 246, 247, 248, 249, + 1229, 251, 1230, 1231, 2810, 254, 255, 256, 257, 258, + 259, 1232, 1233, 260, 261, 1234, 1235, 264, 0, 265, + 266, 267, 268, 1236, 0, 1237, 0, 271, 272, 273, + 274, 275, 276, 277, 278, 279, 0, 280, 281, 282, + 283, 284, 285, 0, 286, 287, 288, 289, 1238, 1239, + 1240, 1241, 1242, 1243, 1244, 291, 292, 293, 294, 295, + 296, 1245, 1246, 299, 1247, 300, 0, 301, 302, 303, + 304, 305, 306, 0, 307, 308, 309, 310, 0, 0, + 311, 312, 1078, 314, 315, 0, 316, 317, 318, 0, + 319, 320, 321, 0, 322, 323, 324, 325, 1248, 327, + 328, 329, 330, 1249, 1250, 332, 0, 333, 334, 1251, + 336, 0, 337, 0, 338, 339, 2811, 340, 341, 342, + 343, 344, 0, 345, 1252, 0, 1253, 348, 349, 0, + 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, + 0, 360, 361, 362, 363, 364, 365, 366, 0, 367, + 368, 369, 370, 371, 372, 373, 1254, 1255, 0, 1256, + 0, 377, 378, 379, 380, 381, 382, 383, 384, 385, + 386, 0, 2812, 387, 1257, 389, 390, 391, 0, 392, + 393, 394, 1258, 1259, 395, 396, 397, 398, 399, 400, + 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, + 1260, 412, 1261, 414, 415, 416, 417, 418, 419, 420, + 421, 1262, 423, 1263, 424, 425, 426, 427, 1264, 1265, + 429, 1266, 431, 432, 433, 0, 434, 435, 0, 0, + 1267, 437, 438, 0, 0, 439, 440, 441, 442, 443, + 444, 1268, 446, 447, 448, 449, 450, 451, 452, 453, + 454, 0, 455, 456, 1269, 458, 459, 460, 461, 462, + 0, 463, 464, 465, 466, 467, 468, 469, 470, 471, + 472, 1270, 474, 475, 476, 477, 0, 478, 479, 480, + 481, 482, 483, 484, 485, 486, 487, 488, 489, 0, + 490, 491, 492, 493, 494, 495, 496, 497, 1271, 499, + 500, 501, 502, 503, 504, 505, 506, 507, 0, 508, + 509, 510, 511, 512, 1272, 513, 514, 515, 516, 517, + 518, 519, 520, 1273, 522, 0, 523, 524, 525, 526, + 527, 528, 529, 530, 531, 532, 533, 534, 535, 1274, + 537, 0, 538, 539, 0, 540, 541, 542, 543, 544, + 545, 546, 0, 547, 1275, 1276, 0, 2813, 550, 551, + 1277, 553, 1278, 1279, 555, 556, 557, 558, 559, 560, + 561, 562, 0, 1280, 563, 564, 565, 566, 567, 1281, + 0, 568, 569, 570, 571, 572, 573, 1282, 0, 575, + 576, 577, 578, 579, 580, 0, 0, 581, 0, 0, + 582, 583, 584, 585, 586, 587, 588, 1283, 1284, 1285, + 1286, 593, 1287, 1288, 1289, 1290, 598, 599, 600, 601, + 1291, 0, 0, 0, 0, 0, 1292, 0, 1293, 1294, + 0, 0, 0, 228, 0, 1223, 669, 1296, 1224, 1225, + 1226, 729, 1227, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 229, 230, 231, 232, 233, 234, 235, 236, + 0, 237, 238, 239, 0, 0, 0, 0, 1228, 0, + 0, 240, 241, 0, 242, 243, 244, 245, 246, 247, + 248, 249, 1229, 251, 1230, 1231, 0, 254, 255, 256, + 257, 258, 259, 1232, 1233, 260, 261, 1234, 1235, 264, + 0, 265, 266, 267, 268, 1236, 0, 1237, 0, 271, + 272, 273, 274, 275, 276, 277, 278, 279, 0, 280, + 281, 282, 283, 284, 285, 0, 286, 287, 288, 289, + 1238, 1239, 1240, 1241, 1242, 1243, 1244, 291, 292, 293, + 294, 295, 296, 1245, 1246, 299, 1247, 300, 0, 301, + 302, 303, 304, 305, 306, 0, 307, 308, 309, 310, + 0, 0, 311, 312, 1078, 314, 315, 0, 316, 317, + 318, 0, 319, 320, 321, 0, 322, 323, 324, 325, + 1248, 327, 328, 329, 330, 1249, 1250, 332, 0, 333, + 334, 1251, 336, 0, 337, 0, 338, 339, 0, 340, + 341, 342, 343, 344, 0, 345, 1252, 0, 1253, 348, + 349, 0, 350, 351, 352, 353, 354, 355, 356, 357, + 358, 359, 0, 360, 361, 362, 363, 364, 365, 366, + 0, 367, 368, 369, 370, 371, 372, 373, 1254, 1255, + 0, 1256, 0, 377, 378, 379, 380, 381, 382, 383, + 384, 385, 386, 0, 0, 387, 1257, 389, 390, 391, + 0, 392, 393, 394, 1258, 1259, 395, 396, 397, 398, + 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, + 409, 410, 1260, 412, 1261, 414, 415, 416, 417, 418, + 419, 420, 421, 1262, 423, 1263, 424, 425, 426, 427, + 1264, 1265, 429, 1266, 431, 432, 433, 0, 434, 435, + 0, 0, 1267, 437, 438, 0, 0, 439, 440, 441, + 442, 443, 444, 1268, 446, 447, 448, 449, 450, 451, + 452, 453, 454, 0, 455, 456, 1269, 458, 459, 460, + 461, 462, 0, 463, 464, 465, 466, 467, 468, 469, + 470, 471, 472, 1270, 474, 475, 476, 477, 0, 478, + 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, + 489, 0, 490, 491, 492, 493, 494, 495, 496, 497, + 1271, 499, 500, 501, 502, 503, 504, 505, 506, 507, + 0, 508, 509, 510, 511, 512, 1272, 513, 514, 515, + 516, 517, 518, 519, 520, 1273, 522, 0, 523, 524, + 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, + 535, 1274, 537, 0, 538, 539, 0, 540, 541, 542, + 543, 544, 545, 546, 0, 547, 1275, 1276, 0, 0, + 550, 551, 1277, 553, 1278, 1279, 555, 556, 557, 558, + 559, 560, 561, 562, 0, 1280, 563, 564, 565, 566, + 567, 1281, 0, 568, 569, 570, 571, 572, 573, 1282, + 0, 575, 576, 577, 578, 579, 580, 0, 0, 581, + 0, 0, 582, 583, 584, 585, 586, 587, 588, 1283, + 1284, 1285, 1286, 593, 1287, 1288, 1289, 1290, 598, 599, + 600, 601, 1291, 0, 0, 0, 0, 0, 1292, 0, + 1293, 1294, 0, 0, 0, 0, 0, 1998, 2762, 1296, + 228, 0, 1223, 669, 0, 1224, 1225, 1226, 729, 1227, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 229, + 230, 231, 232, 233, 234, 235, 236, 0, 237, 238, + 239, 0, 0, 0, 0, 1228, 0, 0, 240, 241, + 0, 242, 243, 244, 245, 246, 247, 248, 249, 1229, + 251, 1230, 1231, 0, 254, 255, 256, 257, 258, 259, + 1232, 1233, 260, 261, 1234, 1235, 264, 0, 265, 266, + 267, 268, 1236, 0, 1237, 0, 271, 272, 273, 274, + 275, 276, 277, 278, 279, 0, 280, 281, 282, 283, + 284, 285, 0, 286, 287, 288, 289, 1238, 1239, 1240, + 1241, 1242, 1243, 1244, 291, 292, 293, 294, 295, 296, + 1245, 1246, 299, 1247, 300, 0, 301, 302, 303, 304, + 305, 306, 0, 307, 308, 309, 310, 0, 0, 311, + 312, 1078, 314, 315, 0, 316, 317, 318, 0, 319, + 320, 321, 0, 322, 323, 324, 325, 1248, 327, 328, + 329, 330, 1249, 1250, 332, 0, 333, 334, 1251, 336, + 0, 337, 0, 338, 339, 0, 340, 341, 342, 343, + 344, 0, 345, 1252, 0, 1253, 348, 349, 0, 350, + 351, 352, 353, 354, 355, 356, 357, 358, 359, 0, + 360, 361, 362, 363, 364, 365, 366, 0, 367, 368, + 369, 370, 371, 372, 373, 1254, 1255, 0, 1256, 0, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, - 387, 388, 0, 389, 390, 391, 392, 393, 0, 394, - 395, 0, 396, 0, 397, 398, 399, 400, 401, 402, - 0, 403, 404, 0, 0, 405, 406, 407, 0, 0, - 408, 409, 0, 410, 0, 411, 412, 413, 414, 415, - 416, 417, 418, 419, 420, 0, 421, 422, 423, 424, - 425, 426, 427, 428, 0, 429, 430, 431, 432, 433, - 434, 435, 436, 437, 438, 439, 440, 441, 442, 0, - 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, - 453, 454, 0, 455, 456, 0, 457, 458, 459, 460, - 461, 462, 463, 464, 465, 466, 467, 468, 469, 0, - 470, 471, 472, 473, 474, 0, 475, 476, 477, 478, - 479, 0, 480, 481, 482, 483, 0, 484, 485, 486, - 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, - 0, 497, 498, 0, 499, 0, 500, 501, 502, 503, - 504, 0, 505, 506, 0, 0, 507, 508, 509, 510, - 511, 0, 512, 513, 514, 515, 516, 517, 518, 0, - 0, 519, 520, 521, 522, 523, 0, 0, 524, 525, - 526, 527, 528, 529, 530, 0, 531, 0, 532, 533, - 534, 535, 0, 0, 536, 0, 0, 537, 538, 539, - 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, - 550, 551, 552, 553, 554, 555, 556, 0, 0, 0, - 865, 866, 867, 0, 868, 869, 870, 871, 872, 873, - 874, 223, 0, 0, 0, 0, 859, 0, 0, 0, - 0, 0, 0, 860, 861, 862, 224, 225, 226, 227, - 228, 229, 230, 231, 0, 233, 234, 235, 0, 0, - 0, 0, 0, 0, 0, 236, 237, 0, 238, 239, - 240, 0, 241, 242, 243, 244, 245, 0, 246, 247, - 0, 248, 249, 250, 251, 252, 0, 0, 253, 254, - 255, 256, 257, 0, 258, 982, 260, 261, 262, 0, - 0, 0, 263, 264, 265, 266, 267, 0, 268, 269, - 270, 0, 271, 272, 273, 274, 275, 276, 0, 0, - 277, 278, 279, 0, 0, 0, 0, 0, 0, 0, - 280, 281, 282, 283, 284, 285, 286, 287, 288, 0, - 289, 0, 290, 291, 292, 293, 294, 295, 0, 296, - 297, 298, 299, 0, 0, 300, 301, 302, 303, 304, - 0, 305, 306, 307, 0, 308, 309, 310, 0, 311, - 312, 313, 314, 315, 316, 317, 318, 319, 0, 983, - 0, 321, 322, 323, 324, 0, 325, 0, 326, 0, - 0, 0, 327, 328, 329, 330, 0, 331, 332, 0, - 333, 334, 0, 335, 336, 337, 338, 339, 0, 340, - 341, 342, 343, 0, 344, 345, 346, 347, 348, 349, - 0, 350, 0, 351, 352, 353, 354, 355, 356, 357, - 0, 358, 0, 359, 0, 0, 360, 0, 361, 362, - 363, 364, 365, 0, 0, 366, 367, 0, 368, 0, - 0, 369, 370, 371, 0, 0, 372, 373, 374, 375, - 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, - 386, 387, 388, 0, 389, 390, 391, 392, 393, 0, - 394, 395, 0, 396, 0, 397, 398, 399, 400, 401, - 402, 0, 403, 404, 0, 0, 405, 406, 407, 0, - 0, 408, 409, 0, 410, 0, 411, 412, 413, 414, - 415, 416, 417, 418, 419, 420, 0, 421, 422, 423, - 424, 425, 426, 427, 428, 0, 429, 430, 431, 432, - 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, - 0, 443, 444, 445, 446, 447, 448, 449, 450, 451, - 452, 453, 454, 0, 455, 456, 0, 457, 458, 459, - 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, - 0, 470, 471, 472, 473, 474, 0, 475, 476, 477, - 478, 479, 0, 480, 481, 482, 483, 0, 484, 485, - 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, - 496, 0, 497, 498, 0, 499, 0, 500, 501, 502, - 503, 504, 0, 505, 506, 0, 0, 507, 508, 509, - 510, 511, 0, 512, 513, 514, 515, 516, 517, 518, - 0, 0, 519, 520, 521, 522, 523, 0, 0, 524, - 525, 526, 527, 528, 529, 530, 0, 531, 0, 532, - 533, 534, 535, 0, 0, 536, 0, 0, 537, 538, - 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, - 549, 550, 551, 552, 553, 554, 555, 556, 0, 0, - 0, 865, 866, 867, 0, 868, 869, 870, 871, 872, - 873, 874, 223, 0, 0, 0, 0, 859, 0, 0, - 0, 0, 0, 0, 860, 861, 862, 224, 225, 226, - 227, 228, 229, 230, 231, 0, 233, 234, 235, 0, - 0, 0, 0, 0, 0, 0, 236, 237, 0, 238, - 239, 240, 0, 241, 242, 243, 244, 245, 0, 246, - 247, 0, 248, 249, 250, 251, 252, 0, 0, 253, - 254, 255, 256, 257, 0, 258, 1081, 260, 261, 262, - 0, 0, 0, 263, 264, 265, 266, 267, 0, 268, - 269, 270, 0, 271, 272, 273, 274, 275, 276, 0, - 0, 277, 278, 279, 0, 0, 0, 0, 0, 0, - 0, 280, 281, 282, 283, 284, 285, 286, 287, 288, - 0, 289, 0, 290, 291, 292, 293, 294, 295, 0, - 296, 297, 298, 299, 0, 0, 300, 301, 302, 303, - 304, 0, 305, 306, 307, 0, 308, 309, 310, 0, - 311, 312, 313, 314, 315, 316, 317, 318, 319, 0, - 1082, 0, 321, 322, 323, 324, 0, 325, 0, 326, - 0, 0, 0, 327, 328, 329, 330, 0, 331, 332, - 0, 333, 334, 0, 335, 336, 337, 338, 1083, 0, - 340, 341, 342, 343, 0, 344, 345, 346, 347, 348, - 349, 0, 350, 0, 351, 352, 353, 354, 355, 356, - 357, 0, 358, 0, 359, 0, 0, 360, 0, 361, - 362, 363, 364, 365, 0, 0, 366, 367, 0, 368, - 0, 0, 369, 370, 371, 0, 0, 372, 373, 374, - 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, - 385, 386, 387, 388, 0, 389, 390, 391, 392, 393, - 0, 394, 395, 0, 396, 0, 397, 398, 399, 400, - 401, 402, 0, 403, 404, 0, 0, 405, 406, 407, - 0, 0, 408, 409, 0, 410, 0, 411, 412, 413, - 414, 415, 416, 417, 418, 419, 420, 0, 421, 422, - 423, 424, 425, 426, 427, 428, 0, 429, 430, 431, - 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, - 442, 0, 443, 444, 445, 446, 447, 448, 449, 450, - 451, 452, 453, 454, 0, 455, 456, 0, 457, 458, - 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, - 469, 0, 470, 471, 472, 473, 474, 0, 475, 476, - 477, 478, 479, 0, 480, 481, 482, 483, 0, 484, - 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, - 495, 496, 0, 497, 498, 0, 499, 0, 500, 501, - 502, 503, 504, 0, 505, 506, 0, 0, 507, 508, - 509, 510, 511, 0, 512, 513, 514, 515, 516, 517, - 518, 0, 0, 519, 520, 521, 522, 523, 0, 0, - 524, 525, 526, 527, 528, 529, 530, 0, 531, 0, - 532, 533, 534, 535, 0, 0, 536, 0, 0, 537, - 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, - 548, 549, 550, 551, 552, 553, 554, 555, 556, 0, - 0, 0, 865, 866, 867, 0, 868, 869, 870, 871, - 872, 873, 874, 223, 0, 0, 0, 0, 859, 0, - 0, 0, 0, 0, 0, 860, 861, 862, 224, 225, - 226, 227, 228, 229, 230, 231, 0, 233, 234, 235, - 0, 0, 0, 0, 0, 0, 0, 236, 237, 0, - 238, 239, 240, 0, 241, 242, 243, 244, 245, 0, - 246, 247, 0, 248, 249, 250, 251, 252, 0, 0, - 253, 254, 255, 256, 257, 0, 258, 1582, 260, 261, - 262, 0, 0, 0, 263, 264, 265, 266, 267, 0, - 268, 269, 270, 0, 271, 272, 273, 274, 275, 276, - 0, 0, 277, 278, 279, 0, 0, 0, 0, 0, - 0, 0, 280, 281, 282, 283, 284, 285, 286, 287, - 288, 0, 289, 0, 290, 291, 292, 293, 294, 295, - 0, 296, 297, 298, 299, 0, 0, 300, 301, 302, - 303, 304, 0, 305, 306, 307, 0, 308, 309, 310, - 0, 311, 312, 313, 314, 315, 316, 317, 318, 319, - 0, 1583, 0, 321, 322, 323, 324, 0, 325, 0, - 326, 0, 0, 0, 327, 328, 329, 330, 0, 331, - 332, 0, 333, 334, 0, 335, 336, 337, 338, 339, - 0, 340, 341, 342, 343, 0, 344, 345, 346, 347, - 348, 349, 0, 350, 0, 351, 352, 353, 354, 355, - 356, 357, 0, 358, 0, 359, 0, 0, 360, 0, - 361, 362, 363, 364, 365, 0, 0, 366, 367, 0, - 368, 0, 0, 369, 370, 371, 0, 0, 372, 373, - 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, - 384, 385, 386, 387, 388, 0, 389, 390, 391, 392, - 393, 0, 394, 395, 0, 396, 0, 397, 398, 399, - 400, 401, 402, 0, 403, 404, 0, 0, 405, 406, - 407, 0, 0, 408, 409, 0, 410, 0, 411, 412, - 413, 414, 415, 416, 417, 418, 419, 420, 0, 421, - 422, 423, 424, 425, 426, 427, 428, 0, 429, 430, - 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, - 441, 442, 0, 443, 444, 445, 446, 447, 448, 449, - 450, 451, 452, 453, 454, 0, 455, 456, 0, 457, - 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, - 468, 469, 0, 470, 471, 472, 473, 474, 0, 475, - 476, 477, 478, 479, 0, 480, 481, 482, 483, 0, - 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, - 494, 495, 496, 0, 497, 498, 0, 499, 0, 500, - 501, 502, 503, 504, 0, 505, 506, 0, 0, 507, - 508, 509, 510, 511, 0, 512, 513, 514, 515, 516, - 517, 518, 0, 0, 519, 520, 521, 522, 523, 0, - 0, 524, 525, 526, 527, 528, 529, 530, 0, 531, - 0, 532, 533, 534, 535, 0, 0, 536, 0, 0, - 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, - 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, - 0, 0, 0, 865, 866, 867, 0, 868, 869, 870, - 871, 872, 873, 874, 223, 0, 0, 0, 0, 859, - 0, 0, 0, 0, 0, 0, 860, 861, 862, 224, - 225, 226, 227, 228, 229, 230, 231, 0, 233, 234, - 235, 0, 0, 0, 0, 0, 0, 0, 236, 237, - 0, 238, 239, 240, 0, 241, 242, 243, 244, 245, - 0, 246, 247, 0, 248, 249, 250, 251, 252, 0, - 0, 253, 254, 255, 256, 257, 0, 258, 259, 260, - 261, 262, 0, 0, 0, 263, 264, 265, 266, 267, - 0, 268, 269, 270, 0, 271, 272, 273, 274, 275, - 276, 0, 0, 277, 278, 279, 0, 0, 0, 0, - 0, 0, 0, 280, 281, 282, 283, 284, 285, 286, - 287, 288, 0, 289, 0, 290, 291, 292, 293, 294, - 295, 0, 296, 297, 298, 299, 0, 0, 300, 301, - 302, 303, 304, 0, 305, 306, 307, 0, 308, 309, - 310, 0, 311, 312, 313, 314, 315, 316, 317, 318, - 319, 0, 320, 0, 321, 322, 323, 324, 0, 325, - 0, 326, 0, 0, 0, 327, 328, 329, 330, 0, - 331, 332, 0, 333, 334, 0, 335, 336, 337, 338, - 339, 0, 340, 341, 342, 343, 0, 344, 345, 346, - 347, 348, 349, 0, 350, 0, 351, 352, 353, 354, - 355, 356, 357, 0, 358, 0, 359, 0, 0, 360, - 0, 361, 362, 363, 364, 365, 0, 0, 366, 367, - 0, 368, 0, 0, 369, 370, 371, 0, 0, 372, - 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, - 383, 384, 385, 386, 387, 388, 0, 389, 390, 391, - 392, 393, 0, 394, 395, 0, 396, 0, 397, 398, - 399, 400, 401, 402, 0, 403, 404, 0, 0, 405, - 406, 407, 0, 0, 408, 409, 0, 410, 0, 411, - 412, 413, 414, 415, 416, 417, 418, 419, 420, 0, - 421, 422, 423, 424, 425, 426, 427, 428, 0, 429, - 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, - 440, 441, 442, 0, 443, 444, 445, 446, 447, 448, - 449, 450, 451, 452, 453, 454, 0, 455, 456, 0, - 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, - 467, 468, 469, 0, 470, 471, 472, 473, 474, 0, - 475, 476, 477, 478, 479, 0, 480, 481, 482, 483, - 0, 484, 485, 486, 487, 488, 489, 490, 491, 492, - 493, 494, 495, 496, 0, 497, 498, 0, 499, 0, - 500, 501, 502, 503, 504, 0, 505, 506, 0, 0, - 507, 508, 509, 510, 511, 0, 512, 513, 514, 515, - 516, 517, 518, 0, 0, 519, 520, 521, 522, 523, - 0, 0, 524, 525, 526, 527, 528, 529, 530, 0, - 531, 0, 532, 533, 534, 535, 0, 0, 536, 0, - 0, 537, 538, 539, 540, 541, 542, 543, 544, 545, - 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, - 556, 0, 0, 0, 865, 866, 867, 0, 868, 869, - 870, 871, 872, 873, 874, 223, 0, 0, 0, 0, - 859, 0, 0, 0, 0, 0, 0, 860, 861, 862, - 224, 225, 226, 227, 228, 229, 230, 231, 0, 233, - 234, 235, 0, 0, 0, 0, 0, 0, 0, 236, - 237, 0, 238, 239, 240, 0, 241, 242, 243, 244, - 245, 0, 246, 247, 0, 248, 249, 250, 251, 252, - 0, 0, 253, 254, 255, 256, 257, 0, 258, 2906, - 260, 261, 262, 0, 0, 0, 263, 264, 265, 266, - 267, 0, 268, 269, 270, 0, 271, 272, 273, 274, - 275, 276, 0, 0, 277, 278, 279, 0, 0, 0, - 0, 0, 0, 0, 280, 281, 282, 283, 284, 285, - 286, 287, 288, 0, 289, 0, 290, 291, 292, 293, - 294, 295, 0, 296, 297, 298, 299, 0, 0, 300, - 301, 302, 303, 304, 0, 305, 306, 307, 0, 308, - 309, 310, 0, 311, 312, 313, 314, 315, 316, 317, - 318, 319, 0, 2907, 0, 321, 322, 323, 324, 0, - 325, 0, 326, 0, 0, 0, 327, 328, 329, 330, - 0, 331, 332, 0, 333, 334, 0, 335, 336, 337, - 338, 339, 0, 340, 341, 342, 343, 0, 344, 345, - 346, 347, 348, 349, 0, 350, 0, 351, 352, 353, - 354, 355, 356, 357, 0, 358, 0, 359, 0, 0, - 360, 0, 361, 362, 363, 364, 365, 0, 0, 366, - 367, 0, 368, 0, 0, 369, 370, 371, 0, 0, - 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, - 382, 383, 384, 385, 386, 387, 388, 0, 389, 390, - 391, 392, 393, 0, 394, 395, 0, 396, 0, 397, - 398, 399, 400, 401, 402, 0, 403, 404, 0, 0, - 405, 406, 407, 0, 0, 408, 409, 0, 410, 0, - 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, - 0, 421, 422, 423, 424, 425, 426, 427, 428, 0, - 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, - 439, 440, 441, 442, 0, 443, 444, 445, 446, 447, - 448, 449, 450, 451, 452, 453, 454, 0, 455, 456, - 0, 457, 458, 459, 460, 461, 462, 463, 464, 465, - 466, 467, 468, 469, 0, 470, 471, 472, 473, 474, - 0, 475, 476, 477, 478, 479, 0, 480, 481, 482, - 483, 0, 484, 485, 486, 487, 488, 489, 490, 491, - 492, 493, 494, 495, 496, 0, 497, 498, 0, 499, - 0, 500, 501, 502, 503, 504, 0, 505, 506, 0, - 0, 507, 508, 509, 510, 511, 0, 512, 513, 514, - 515, 516, 517, 518, 0, 0, 519, 520, 521, 522, - 523, 0, 0, 524, 525, 526, 527, 528, 529, 530, - 0, 531, 0, 532, 533, 534, 535, 0, 0, 536, - 0, 0, 537, 538, 539, 540, 541, 542, 543, 544, - 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, - 555, 556, 0, 0, 0, 865, 866, 867, 0, 868, - 869, 870, 871, 872, 873, 874, 223, 0, 0, 0, - 0, 859, 0, 0, 0, 0, 0, 0, 860, 861, - 862, 224, 225, 226, 227, 228, 229, 230, 231, 0, - 233, 234, 235, 0, 0, 0, 0, 0, 0, 0, - 236, 237, 0, 238, 239, 240, 0, 241, 242, 243, - 244, 245, 0, 246, 247, 0, 248, 249, 250, 251, - 252, 0, 0, 253, 254, 255, 256, 257, 0, 258, - 259, 260, 261, 262, 0, 0, 0, 263, 264, 265, - 266, 267, 0, 268, 269, 270, 0, 271, 272, 273, - 274, 275, 276, 0, 0, 277, 278, 279, 0, 0, - 0, 0, 0, 0, 0, 280, 281, 282, 283, 284, - 285, 286, 287, 288, 0, 289, 0, 290, 291, 292, - 293, 294, 295, 0, 296, 297, 298, 299, 0, 0, - 300, 301, 302, 303, 304, 0, 305, 306, 307, 0, - 308, 309, 310, 0, 311, 312, 313, 314, 315, 316, - 317, 318, 319, 0, 320, 0, 321, 322, 323, 324, - 0, 325, 0, 326, 0, 0, 0, 327, 328, 329, - 330, 0, 331, 332, 0, 333, 334, 0, 335, 336, - 337, 338, 339, 0, 340, 341, 342, 343, 0, 344, - 345, 346, 347, 348, 349, 0, 350, 0, 351, 352, - 353, 354, 355, 356, 357, 0, 358, 0, 359, 0, - 0, 360, 0, 361, 362, 363, 364, 365, 0, 0, - 366, 367, 0, 368, 0, 0, 369, 370, 371, 0, - 0, 372, 373, 374, 375, 376, 377, 378, 379, 380, - 381, 382, 383, 384, 385, 386, 387, 388, 0, 389, - 390, 391, 392, 393, 0, 394, 395, 0, 396, 0, - 397, 398, 399, 400, 401, 402, 0, 403, 404, 0, - 0, 4719, 406, 407, 0, 0, 408, 409, 0, 410, - 0, 411, 412, 413, 414, 415, 416, 417, 418, 419, - 420, 0, 421, 422, 423, 424, 425, 426, 427, 428, - 0, 429, 430, 431, 432, 433, 434, 435, 436, 437, - 438, 439, 440, 441, 442, 0, 443, 444, 445, 446, + 0, 0, 387, 1257, 389, 390, 391, 0, 392, 393, + 394, 1258, 1259, 395, 396, 397, 398, 399, 400, 401, + 402, 403, 404, 405, 406, 407, 408, 409, 410, 1260, + 412, 1261, 414, 415, 416, 417, 418, 419, 420, 421, + 1262, 423, 1263, 424, 425, 426, 427, 1264, 1265, 429, + 1266, 431, 432, 433, 0, 434, 435, 0, 0, 1267, + 437, 438, 0, 0, 439, 440, 441, 442, 443, 444, + 1268, 446, 447, 448, 449, 450, 451, 452, 453, 454, + 0, 455, 456, 1269, 458, 459, 460, 461, 462, 0, + 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, + 1270, 474, 475, 476, 477, 0, 478, 479, 480, 481, + 482, 483, 484, 485, 486, 487, 488, 489, 0, 490, + 491, 492, 493, 494, 495, 496, 497, 1271, 499, 500, + 501, 502, 503, 504, 505, 506, 507, 0, 508, 509, + 510, 511, 512, 1272, 513, 514, 515, 516, 517, 518, + 519, 520, 1273, 522, 0, 523, 524, 525, 526, 527, + 528, 529, 530, 531, 532, 533, 534, 535, 1274, 537, + 0, 538, 539, 0, 540, 541, 542, 543, 544, 545, + 546, 0, 547, 1275, 1276, 0, 0, 550, 551, 1277, + 553, 1278, 1279, 555, 556, 557, 558, 559, 560, 561, + 562, 0, 1280, 563, 564, 565, 566, 567, 1281, 0, + 568, 569, 570, 571, 572, 573, 1282, 0, 575, 576, + 577, 578, 579, 580, 0, 0, 581, 0, 0, 582, + 583, 584, 585, 586, 587, 588, 1283, 1284, 1285, 1286, + 593, 1287, 1288, 1289, 1290, 598, 599, 600, 601, 1291, + 0, 0, 0, 0, 0, 1292, 0, 1293, 1294, 1295, + 0, 0, 228, 0, 1223, 669, 1296, 1224, 1225, 1226, + 729, 1227, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 229, 230, 231, 232, 233, 234, 235, 236, 2159, + 237, 238, 239, 0, 0, 0, 0, 1228, 0, 0, + 240, 241, 0, 242, 243, 244, 245, 246, 247, 248, + 249, 1229, 251, 1230, 1231, 0, 254, 255, 256, 257, + 258, 259, 1232, 1233, 260, 261, 1234, 1235, 264, 0, + 265, 266, 267, 268, 1236, 0, 1237, 0, 271, 272, + 273, 274, 275, 276, 277, 278, 279, 0, 280, 281, + 282, 283, 284, 285, 0, 286, 287, 288, 289, 1238, + 1239, 1240, 1241, 1242, 1243, 1244, 291, 292, 293, 294, + 295, 296, 1245, 1246, 299, 1247, 300, 0, 301, 302, + 303, 304, 305, 306, 0, 307, 308, 309, 310, 0, + 0, 311, 312, 1078, 314, 315, 0, 316, 317, 318, + 0, 319, 320, 321, 0, 322, 323, 324, 325, 1248, + 327, 328, 329, 330, 1249, 1250, 332, 0, 333, 334, + 1251, 336, 0, 337, 0, 338, 339, 0, 340, 341, + 342, 343, 344, 0, 345, 1252, 0, 1253, 348, 349, + 0, 350, 351, 352, 353, 354, 355, 356, 357, 358, + 359, 0, 360, 361, 362, 363, 364, 365, 366, 0, + 367, 368, 369, 370, 371, 372, 373, 1254, 1255, 0, + 1256, 0, 377, 378, 379, 380, 381, 382, 383, 384, + 385, 386, 0, 0, 387, 1257, 389, 390, 391, 0, + 392, 393, 394, 1258, 1259, 395, 396, 397, 398, 399, + 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, + 410, 1260, 412, 1261, 414, 415, 416, 417, 418, 419, + 420, 421, 1262, 423, 1263, 424, 425, 426, 427, 1264, + 1265, 429, 1266, 431, 432, 433, 0, 434, 435, 0, + 0, 1267, 437, 438, 0, 0, 439, 440, 441, 442, + 443, 444, 1268, 446, 447, 448, 449, 450, 451, 452, + 453, 454, 0, 455, 456, 1269, 458, 459, 460, 461, + 462, 0, 463, 464, 465, 466, 467, 468, 469, 470, + 471, 472, 1270, 474, 475, 476, 477, 0, 478, 479, + 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, + 0, 490, 491, 492, 493, 494, 495, 496, 497, 1271, + 499, 500, 501, 502, 503, 504, 505, 506, 507, 0, + 508, 509, 510, 511, 512, 1272, 513, 514, 515, 516, + 517, 518, 519, 520, 1273, 522, 0, 523, 524, 525, + 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, + 1274, 537, 0, 538, 539, 0, 540, 541, 542, 543, + 544, 545, 546, 0, 547, 1275, 1276, 0, 0, 550, + 551, 1277, 553, 1278, 1279, 555, 556, 557, 558, 559, + 560, 561, 562, 0, 1280, 563, 564, 565, 566, 567, + 1281, 0, 568, 569, 570, 571, 572, 573, 1282, 0, + 575, 576, 577, 578, 579, 580, 0, 0, 581, 0, + 0, 582, 583, 584, 585, 586, 587, 588, 1283, 1284, + 1285, 1286, 593, 1287, 1288, 1289, 1290, 598, 599, 600, + 601, 1291, 0, 0, 0, 0, 0, 1292, 0, 1293, + 1294, 0, 0, 0, 228, 0, 1223, 669, 1296, 1224, + 1225, 1226, 729, 1227, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 229, 230, 231, 232, 233, 234, 235, + 236, 0, 237, 238, 239, 0, 0, 0, 0, 1228, + 0, 0, 240, 241, 0, 242, 243, 244, 245, 246, + 247, 248, 249, 1229, 251, 1230, 1231, 0, 254, 255, + 256, 257, 258, 259, 1232, 1233, 260, 261, 1234, 1235, + 264, 0, 265, 266, 267, 268, 1236, 0, 1237, 0, + 271, 272, 273, 274, 275, 276, 277, 278, 279, 0, + 280, 281, 282, 283, 284, 285, 0, 286, 287, 288, + 289, 1238, 1239, 1240, 1241, 1242, 1243, 1244, 291, 292, + 293, 294, 295, 296, 1245, 1246, 299, 1247, 300, 0, + 301, 302, 303, 304, 305, 306, 0, 307, 308, 309, + 310, 0, 0, 311, 312, 1078, 314, 315, 0, 316, + 317, 318, 0, 319, 320, 321, 0, 322, 323, 324, + 325, 1248, 327, 328, 329, 330, 1249, 1250, 332, 0, + 333, 334, 1251, 336, 0, 337, 0, 338, 339, 0, + 340, 341, 342, 343, 344, 0, 345, 1252, 0, 1253, + 348, 349, 0, 350, 351, 352, 353, 354, 355, 356, + 357, 358, 359, 0, 360, 361, 362, 363, 364, 365, + 366, 0, 367, 368, 369, 370, 371, 372, 373, 1254, + 1255, 0, 1256, 0, 377, 378, 379, 380, 381, 382, + 383, 384, 385, 386, 0, 0, 387, 1257, 389, 390, + 391, 0, 392, 393, 394, 1258, 1259, 395, 396, 397, + 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, + 408, 409, 410, 1260, 412, 1261, 414, 415, 416, 417, + 418, 419, 420, 421, 1262, 423, 1263, 424, 425, 426, + 427, 1264, 1265, 429, 1266, 431, 432, 433, 0, 434, + 435, 0, 0, 1267, 437, 438, 0, 0, 439, 440, + 441, 442, 443, 444, 1268, 446, 447, 448, 449, 450, + 451, 452, 453, 454, 0, 455, 456, 1269, 458, 459, + 460, 461, 462, 0, 463, 464, 465, 466, 467, 468, + 469, 470, 471, 472, 1270, 474, 475, 476, 477, 0, + 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, + 488, 489, 0, 490, 491, 492, 493, 494, 495, 496, + 497, 1271, 499, 500, 501, 502, 503, 504, 505, 506, + 507, 0, 508, 509, 510, 511, 512, 1272, 513, 514, + 515, 516, 517, 518, 519, 520, 1273, 522, 0, 523, + 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, + 534, 535, 1274, 537, 0, 538, 539, 0, 540, 541, + 542, 543, 544, 545, 546, 0, 547, 1275, 1276, 0, + 0, 550, 551, 1277, 553, 1278, 1279, 555, 556, 557, + 558, 559, 560, 561, 562, 0, 1280, 563, 564, 565, + 566, 567, 1281, 0, 568, 569, 570, 571, 572, 573, + 1282, 3271, 575, 576, 577, 578, 579, 580, 0, 0, + 581, 0, 0, 582, 583, 584, 585, 586, 587, 588, + 1283, 1284, 1285, 1286, 593, 1287, 1288, 1289, 1290, 598, + 599, 600, 601, 1291, 0, 0, 0, 0, 0, 1292, + 0, 1293, 1294, 0, 0, 0, 228, 0, 1223, 669, + 1296, 1224, 1225, 1226, 729, 1227, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 229, 230, 231, 232, 233, + 234, 235, 236, 0, 237, 238, 239, 0, 0, 0, + 0, 1228, 0, 0, 240, 241, 0, 242, 243, 244, + 245, 246, 247, 248, 249, 1229, 251, 1230, 1231, 0, + 254, 255, 256, 257, 258, 259, 1232, 1233, 260, 261, + 1234, 1235, 264, 0, 265, 266, 267, 268, 1236, 0, + 1237, 0, 271, 272, 273, 274, 275, 276, 277, 278, + 279, 0, 280, 281, 282, 283, 284, 285, 0, 286, + 287, 288, 289, 1238, 1239, 1240, 1241, 1242, 1243, 1244, + 291, 292, 293, 294, 295, 296, 1245, 1246, 299, 1247, + 300, 0, 301, 302, 303, 304, 305, 306, 0, 307, + 308, 309, 310, 0, 0, 311, 312, 1078, 314, 315, + 0, 316, 317, 318, 0, 319, 320, 321, 0, 322, + 323, 324, 325, 1248, 327, 328, 329, 330, 1249, 1250, + 332, 0, 333, 334, 1251, 336, 0, 337, 0, 338, + 339, 2811, 340, 341, 342, 343, 344, 0, 345, 1252, + 0, 1253, 348, 349, 0, 350, 351, 352, 353, 354, + 355, 356, 357, 358, 359, 0, 360, 361, 362, 363, + 364, 365, 366, 0, 367, 368, 369, 370, 371, 372, + 373, 1254, 1255, 0, 1256, 0, 377, 378, 379, 380, + 381, 382, 383, 384, 385, 386, 0, 0, 387, 1257, + 389, 390, 391, 0, 392, 393, 394, 1258, 1259, 395, + 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, + 406, 407, 408, 409, 410, 1260, 412, 1261, 414, 415, + 416, 417, 418, 419, 420, 421, 1262, 423, 1263, 424, + 425, 426, 427, 1264, 1265, 429, 1266, 431, 432, 433, + 0, 434, 435, 0, 0, 1267, 437, 438, 0, 0, + 439, 440, 441, 442, 443, 444, 1268, 446, 447, 448, + 449, 450, 451, 452, 453, 454, 0, 455, 456, 1269, + 458, 459, 460, 461, 462, 0, 463, 464, 465, 466, + 467, 468, 469, 470, 471, 472, 1270, 474, 475, 476, + 477, 0, 478, 479, 480, 481, 482, 483, 484, 485, + 486, 487, 488, 489, 0, 490, 491, 492, 493, 494, + 495, 496, 497, 1271, 499, 500, 501, 502, 503, 504, + 505, 506, 507, 0, 508, 509, 510, 511, 512, 1272, + 513, 514, 515, 516, 517, 518, 519, 520, 1273, 522, + 0, 523, 524, 525, 526, 527, 528, 529, 530, 531, + 532, 533, 534, 535, 1274, 537, 0, 538, 539, 0, + 540, 541, 542, 543, 544, 545, 546, 0, 547, 1275, + 1276, 0, 0, 550, 551, 1277, 553, 1278, 1279, 555, + 556, 557, 558, 559, 560, 561, 562, 0, 1280, 563, + 564, 565, 566, 567, 1281, 0, 568, 569, 570, 571, + 572, 573, 1282, 0, 575, 576, 577, 578, 579, 580, + 0, 0, 581, 0, 0, 582, 583, 584, 585, 586, + 587, 588, 1283, 1284, 1285, 1286, 593, 1287, 1288, 1289, + 1290, 598, 599, 600, 601, 1291, 0, 0, 0, 0, + 0, 1292, 0, 1293, 1294, 0, 0, 0, 228, 0, + 1223, 669, 1296, 1224, 1225, 1226, 729, 1227, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 229, 230, 231, + 232, 233, 234, 235, 236, 0, 237, 238, 239, 0, + 0, 0, 0, 1228, 0, 0, 240, 241, 0, 242, + 243, 244, 245, 246, 247, 248, 249, 1229, 251, 1230, + 1231, 0, 254, 255, 256, 257, 258, 259, 1232, 1233, + 260, 261, 1234, 1235, 264, 0, 265, 266, 267, 268, + 1236, 0, 1237, 0, 271, 272, 273, 274, 275, 276, + 277, 278, 279, 0, 280, 281, 282, 283, 284, 285, + 0, 286, 287, 288, 289, 1238, 1239, 1240, 1241, 1242, + 1243, 1244, 291, 292, 293, 294, 295, 296, 1245, 1246, + 299, 1247, 300, 0, 301, 302, 303, 304, 305, 306, + 0, 307, 308, 309, 310, 0, 0, 311, 312, 1078, + 314, 315, 0, 316, 317, 318, 0, 319, 320, 321, + 0, 322, 323, 324, 325, 1248, 327, 328, 329, 330, + 1249, 1250, 332, 0, 333, 334, 1251, 336, 0, 337, + 0, 338, 339, 0, 340, 341, 342, 343, 344, 0, + 345, 1252, 0, 1253, 348, 349, 0, 350, 351, 352, + 353, 354, 355, 356, 357, 358, 359, 0, 360, 361, + 362, 363, 364, 365, 366, 0, 367, 368, 369, 370, + 371, 372, 373, 1254, 1255, 0, 1256, 0, 377, 378, + 379, 380, 381, 382, 383, 384, 385, 386, 0, 0, + 387, 1257, 389, 390, 391, 0, 392, 393, 394, 1258, + 1259, 395, 396, 397, 398, 399, 400, 401, 402, 403, + 404, 405, 406, 407, 408, 409, 410, 1260, 412, 1261, + 414, 415, 416, 417, 418, 419, 420, 421, 1262, 423, + 1263, 424, 425, 426, 427, 1264, 1265, 429, 1266, 431, + 432, 433, 0, 434, 435, 0, 0, 1267, 437, 438, + 0, 0, 439, 440, 441, 442, 443, 444, 1268, 446, 447, 448, 449, 450, 451, 452, 453, 454, 0, 455, - 456, 0, 457, 458, 459, 460, 461, 462, 463, 464, - 465, 466, 467, 468, 469, 0, 470, 471, 472, 473, - 474, 0, 475, 476, 477, 478, 479, 0, 480, 481, - 482, 483, 0, 484, 485, 486, 487, 488, 489, 490, - 491, 492, 493, 494, 495, 496, 0, 497, 498, 0, - 499, 0, 500, 501, 502, 503, 504, 0, 505, 506, - 0, 0, 507, 508, 509, 510, 511, 0, 512, 513, - 514, 515, 516, 517, 518, 0, 0, 519, 520, 521, - 522, 523, 0, 0, 524, 525, 526, 527, 528, 529, - 530, 0, 531, 0, 532, 533, 534, 535, 0, 0, - 536, 0, 0, 537, 538, 539, 540, 541, 542, 543, - 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, - 554, 555, 556, 223, 0, 617, 865, 866, 867, 0, - 868, 869, 870, 871, 872, 873, 874, 0, 224, 225, - 226, 227, 228, 229, 230, 231, 0, 233, 234, 235, - 0, 0, 0, 0, 0, 0, 0, 236, 237, 0, - 238, 239, 240, 0, 241, 242, 243, 244, 245, 0, - 246, 247, 0, 248, 249, 250, 251, 252, 0, 0, - 253, 254, 255, 256, 257, 0, 258, 259, 260, 261, - 262, 0, 0, 0, 263, 264, 265, 266, 267, 0, - 268, 269, 270, 0, 271, 272, 273, 274, 275, 276, - 0, 0, 277, 278, 279, 0, 0, 0, 0, 0, - 0, 0, 280, 281, 282, 283, 284, 285, 286, 287, - 288, 0, 289, 0, 290, 291, 292, 293, 294, 295, - 0, 296, 297, 298, 299, 0, 0, 300, 301, 302, - 303, 304, 0, 305, 306, 307, 0, 308, 309, 310, - 0, 311, 312, 313, 314, 315, 316, 317, 318, 319, - 0, 320, 0, 321, 322, 323, 324, 0, 325, 0, - 326, 0, 0, 0, 327, 328, 329, 330, 0, 331, - 332, 0, 333, 334, 0, 335, 336, 337, 338, 339, - 0, 340, 341, 342, 343, 0, 344, 345, 346, 347, - 348, 349, 0, 350, 0, 351, 352, 353, 354, 355, - 356, 357, 0, 358, 0, 359, 0, 0, 360, 0, - 361, 362, 363, 364, 365, 0, 0, 366, 367, 0, - 368, 0, 0, 369, 370, 371, 0, 0, 372, 373, - 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, - 384, 385, 386, 387, 388, 0, 389, 390, 391, 392, - 393, 0, 394, 395, 0, 396, 0, 397, 398, 399, - 400, 401, 402, 0, 403, 404, 0, 0, 405, 406, - 407, 0, 0, 408, 409, 0, 410, 0, 411, 412, - 413, 414, 415, 416, 417, 418, 419, 420, 0, 421, - 422, 423, 424, 425, 426, 427, 428, 0, 429, 430, - 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, - 441, 442, 0, 443, 444, 445, 446, 447, 448, 449, - 450, 451, 452, 453, 454, 0, 455, 456, 0, 457, - 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, - 468, 469, 0, 470, 471, 472, 473, 474, 0, 475, - 476, 477, 478, 479, 0, 480, 481, 482, 483, 0, - 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, - 494, 495, 496, 0, 497, 498, 0, 499, 0, 500, - 501, 502, 503, 504, 0, 505, 506, 0, 0, 507, - 508, 509, 510, 511, 0, 512, 513, 514, 515, 516, - 517, 518, 0, 0, 519, 520, 521, 522, 523, 0, - 0, 524, 525, 526, 527, 528, 529, 530, 0, 531, - 0, 532, 533, 534, 535, 0, 0, 536, 0, 0, - 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, - 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, - 1952, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1294, 0, 224, 225, 226, 227, 228, - 229, 230, 231, 1953, 233, 234, 235, 1954, 1955, 1956, - 1957, 1958, 1959, 1960, 236, 237, 1961, 238, 239, 240, - 801, 241, 242, 243, 244, 245, 802, 246, 247, 1962, - 248, 249, 250, 251, 252, 1963, 1964, 253, 254, 255, - 256, 257, 1965, 258, 259, 260, 261, 262, 1966, 803, - 1967, 263, 264, 265, 266, 267, 804, 268, 269, 270, - 1968, 271, 272, 273, 274, 275, 276, 1969, 805, 277, - 278, 279, 1970, 1971, 1972, 806, 1973, 1974, 1975, 280, - 281, 282, 283, 284, 285, 286, 287, 288, 1976, 289, - 1977, 290, 291, 292, 293, 294, 295, 1978, 296, 297, - 298, 299, 1979, 1980, 300, 301, 302, 303, 304, 1981, - 305, 306, 307, 1982, 308, 309, 310, 1983, 311, 312, - 313, 314, 315, 316, 317, 318, 319, 1984, 320, 1985, - 321, 322, 323, 324, 1986, 325, 1987, 326, 807, 1988, - 808, 327, 328, 329, 330, 1989, 331, 332, 1990, 333, - 334, 1991, 335, 336, 337, 338, 339, 809, 340, 341, - 342, 343, 1992, 344, 345, 346, 347, 348, 349, 1993, - 350, 810, 351, 352, 353, 354, 355, 356, 357, 1994, - 358, 1995, 359, 811, 812, 360, 813, 361, 362, 363, - 364, 365, 1996, 1997, 366, 367, 814, 368, 815, 1998, - 369, 370, 371, 1999, 2000, 372, 373, 374, 375, 376, + 456, 1269, 458, 459, 460, 461, 462, 0, 463, 464, + 465, 466, 467, 468, 469, 470, 471, 472, 1270, 474, + 475, 476, 477, 0, 478, 479, 480, 481, 482, 483, + 484, 485, 486, 487, 488, 489, 0, 490, 491, 492, + 493, 494, 495, 496, 497, 1271, 499, 500, 501, 502, + 503, 504, 505, 506, 507, 0, 508, 509, 510, 511, + 512, 1272, 513, 514, 515, 516, 517, 518, 519, 520, + 1273, 522, 0, 523, 524, 525, 526, 527, 528, 529, + 530, 531, 532, 533, 534, 535, 1274, 537, 0, 538, + 539, 0, 540, 541, 542, 543, 544, 545, 546, 0, + 547, 1275, 1276, 0, 0, 550, 551, 1277, 553, 1278, + 1279, 555, 556, 557, 558, 559, 560, 561, 562, 0, + 1280, 563, 564, 565, 566, 567, 1281, 0, 568, 569, + 570, 571, 572, 573, 1282, 0, 575, 576, 577, 578, + 579, 580, 0, 0, 581, 0, 0, 582, 583, 584, + 585, 586, 587, 588, 1283, 1284, 1285, 1286, 593, 1287, + 1288, 1289, 1290, 598, 599, 600, 601, 1291, 0, 0, + 0, 0, 0, 1292, 0, 1293, 1294, 0, 0, 0, + 228, 0, 1223, 669, 1296, 1224, 1225, 1226, 729, 1227, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 229, + 230, 231, 232, 233, 234, 235, 236, 0, 237, 238, + 239, 0, 0, 0, 0, 1228, 0, 0, 240, 241, + 0, 242, 243, 244, 245, 246, 247, 248, 249, 1229, + 251, 1230, 1231, 0, 254, 255, 256, 257, 258, 259, + 1232, 1233, 260, 261, 1234, 1235, 264, 0, 265, 266, + 267, 268, 1236, 0, 1237, 0, 271, 272, 273, 274, + 275, 276, 277, 278, 279, 0, 280, 281, 282, 283, + 284, 285, 0, 286, 287, 288, 289, 1238, 1239, 1240, + 1241, 1242, 1243, 1244, 291, 292, 293, 294, 295, 296, + 1245, 1246, 299, 1247, 300, 0, 301, 302, 303, 304, + 305, 306, 0, 307, 308, 309, 310, 0, 0, 311, + 312, 1078, 314, 315, 0, 316, 317, 318, 0, 319, + 320, 321, 0, 322, 323, 324, 325, 1248, 327, 328, + 329, 330, 1249, 1250, 332, 0, 333, 334, 1251, 336, + 0, 337, 0, 338, 339, 0, 340, 341, 342, 343, + 344, 0, 345, 1252, 0, 1253, 348, 349, 0, 350, + 351, 352, 353, 354, 355, 356, 357, 358, 359, 0, + 360, 361, 362, 363, 364, 365, 366, 0, 367, 368, + 369, 370, 371, 372, 373, 1254, 1255, 0, 1256, 0, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, - 387, 388, 816, 389, 390, 391, 392, 393, 2001, 394, - 395, 817, 396, 2002, 397, 398, 399, 400, 401, 402, - 2003, 403, 404, 2004, 2005, 405, 406, 407, 2006, 2007, - 408, 409, 818, 410, 819, 411, 412, 413, 414, 415, - 416, 417, 418, 419, 420, 2008, 421, 422, 423, 424, - 425, 426, 427, 428, 2009, 429, 430, 431, 432, 433, - 434, 435, 436, 437, 438, 439, 440, 441, 442, 2010, - 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, - 453, 454, 2011, 455, 456, 820, 457, 458, 459, 460, - 461, 462, 463, 464, 465, 466, 467, 468, 469, 2012, - 470, 471, 472, 473, 474, 2013, 475, 476, 477, 478, - 479, 821, 480, 481, 482, 483, 2014, 484, 485, 486, - 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, - 2015, 497, 498, 2016, 499, 822, 500, 501, 502, 503, - 504, 2017, 505, 506, 2018, 2019, 507, 508, 509, 510, - 511, 2020, 512, 513, 514, 515, 516, 517, 518, 2021, - 2022, 519, 520, 521, 522, 523, 2023, 2024, 524, 525, - 526, 527, 528, 529, 530, 2025, 531, 823, 532, 533, - 534, 535, 2026, 2027, 536, 2028, 2029, 537, 538, 539, - 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, - 550, 551, 552, 553, 554, 555, 556, 223, 0, 0, - 0, 0, 0, 0, 0, 0, 2030, 0, 0, 0, - 0, 0, 224, 225, 226, 227, 228, 229, 230, 231, - 0, 233, 234, 235, 0, 0, 0, 0, 0, 0, - 0, 236, 237, 0, 238, 239, 240, 0, 241, 242, - 243, 244, 245, 0, 246, 247, 0, 248, 249, 250, - 251, 252, 0, 0, 253, 254, 255, 256, 257, 0, - 258, 259, 260, 261, 262, 0, 0, 0, 263, 264, - 265, 266, 267, 0, 268, 269, 270, 0, 271, 272, - 273, 274, 275, 276, 0, 0, 277, 278, 279, 0, - 0, 0, 0, 0, 0, 0, 280, 281, 282, 283, - 284, 285, 286, 287, 288, 0, 289, 0, 290, 291, - 292, 293, 294, 295, 0, 296, 297, 298, 299, 0, - 0, 300, 301, 302, 303, 304, 0, 305, 306, 307, - 0, 308, 309, 310, 0, 311, 312, 313, 314, 315, - 316, 317, 318, 319, 0, 320, 0, 321, 322, 323, - 324, 0, 325, 0, 326, 0, 0, 0, 327, 328, - 329, 330, 0, 331, 332, 0, 333, 334, 0, 335, - 336, 337, 338, 339, 0, 340, 341, 342, 343, 0, - 344, 345, 346, 347, 348, 349, 0, 350, 0, 351, - 352, 353, 354, 355, 356, 357, 0, 358, 0, 359, - 0, 0, 360, 0, 361, 362, 363, 364, 365, 0, - 0, 366, 367, 0, 368, 0, 0, 369, 370, 371, - 0, 0, 372, 373, 374, 375, 376, 377, 378, 379, - 380, 381, 382, 383, 384, 385, 386, 387, 388, 0, - 389, 390, 391, 392, 393, 0, 394, 395, 0, 396, - 0, 397, 398, 399, 400, 401, 402, 0, 403, 404, - 0, 0, 405, 406, 407, 0, 0, 408, 409, 0, - 410, 0, 411, 412, 413, 414, 415, 416, 417, 418, - 419, 420, 0, 421, 422, 423, 424, 425, 426, 427, - 428, 0, 429, 430, 431, 432, 433, 434, 435, 436, - 437, 438, 439, 440, 441, 442, 0, 443, 444, 445, - 446, 447, 448, 449, 450, 451, 452, 453, 454, 0, - 455, 456, 0, 457, 458, 459, 460, 461, 462, 463, - 464, 465, 466, 467, 468, 469, 0, 470, 471, 472, - 473, 474, 0, 475, 476, 477, 478, 479, 0, 480, - 481, 482, 483, 0, 484, 485, 486, 487, 488, 489, - 490, 491, 492, 493, 494, 495, 496, 0, 497, 498, - 0, 499, 0, 500, 501, 502, 503, 504, 0, 505, - 506, 0, 0, 507, 508, 509, 510, 511, 0, 512, - 513, 514, 515, 516, 517, 518, 0, 0, 519, 520, - 521, 522, 523, 0, 0, 524, 525, 526, 527, 528, - 529, 530, 0, 531, 0, 532, 533, 534, 535, 0, - 0, 536, 0, 0, 537, 538, 539, 540, 541, 542, - 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, - 553, 554, 555, 556, 223, 0, 0, 0, 0, 0, - 0, 0, 0, 770, 0, 0, 0, 0, 0, 224, - 225, 226, 227, 228, 229, 230, 231, 0, 233, 234, - 235, 0, 0, 0, 0, 0, 0, 0, 236, 237, - 0, 238, 239, 240, 0, 241, 242, 243, 244, 245, - 0, 246, 247, 0, 248, 249, 250, 251, 252, 0, - 0, 253, 254, 255, 256, 257, 0, 258, 259, 260, - 261, 262, 0, 0, 0, 263, 264, 265, 266, 267, - 0, 268, 269, 270, 0, 271, 272, 273, 274, 275, - 276, 0, 0, 277, 278, 279, 0, 0, 0, 0, - 0, 0, 0, 280, 281, 282, 283, 284, 285, 286, - 287, 288, 0, 289, 0, 290, 291, 292, 293, 294, - 295, 0, 296, 297, 298, 299, 0, 0, 300, 301, - 302, 303, 304, 0, 305, 306, 307, 0, 308, 309, - 310, 0, 311, 312, 313, 314, 315, 316, 317, 318, - 319, 0, 320, 0, 321, 322, 323, 324, 0, 325, - 0, 326, 0, 0, 0, 327, 328, 329, 330, 0, - 331, 332, 0, 333, 334, 0, 335, 336, 337, 338, - 339, 0, 340, 341, 342, 343, 0, 344, 345, 346, - 347, 348, 349, 0, 350, 0, 351, 352, 353, 354, - 355, 356, 357, 0, 358, 0, 359, 0, 0, 360, - 0, 361, 362, 363, 364, 365, 0, 0, 366, 367, - 0, 368, 0, 0, 369, 370, 371, 0, 0, 372, - 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, - 383, 384, 385, 386, 387, 388, 0, 389, 390, 391, - 392, 393, 0, 394, 395, 0, 396, 0, 397, 398, - 399, 400, 401, 402, 0, 403, 404, 0, 0, 405, - 406, 407, 0, 0, 408, 409, 0, 410, 0, 411, - 412, 413, 414, 415, 416, 417, 418, 419, 420, 0, - 421, 422, 423, 424, 425, 426, 427, 428, 0, 429, - 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, - 440, 441, 442, 0, 443, 444, 445, 446, 447, 448, - 449, 450, 451, 452, 453, 454, 0, 455, 456, 0, - 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, - 467, 468, 469, 0, 470, 471, 472, 473, 474, 0, - 475, 476, 477, 478, 479, 0, 480, 481, 482, 483, - 0, 484, 485, 486, 487, 488, 489, 490, 491, 492, - 493, 494, 495, 496, 0, 497, 498, 0, 499, 0, - 500, 501, 502, 503, 504, 0, 505, 506, 0, 0, - 507, 508, 509, 510, 511, 0, 512, 513, 514, 515, - 516, 517, 518, 0, 0, 519, 520, 521, 522, 523, - 0, 0, 524, 525, 526, 527, 528, 529, 530, 0, - 531, 0, 532, 533, 534, 535, 0, 0, 536, 0, - 0, 537, 538, 539, 540, 541, 542, 543, 544, 545, - 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, - 556, 1031, 0, 0, 0, 0, 0, 0, 0, 0, - 5111, 0, 0, 0, 0, 0, 224, 225, 226, 227, - 228, 229, 230, 231, 0, 233, 234, 235, 0, 0, - 0, 0, 0, 0, 0, 236, 237, 0, 238, 239, - 240, 801, 241, 242, 243, 0, 1032, 802, 1033, 1034, - 0, 248, 249, 250, 251, 252, 0, 0, 253, 254, - 1035, 1036, 257, 0, 258, 259, 260, 261, 0, 0, - 803, 0, 263, 264, 265, 266, 267, 804, 268, 269, - 270, 0, 271, 272, 273, 274, 275, 276, 0, 805, - 277, 278, 279, 0, 0, 0, 806, 0, 0, 0, - 280, 281, 282, 283, 284, 285, 1037, 1038, 288, 0, - 289, 0, 290, 291, 292, 293, 294, 295, 0, 296, - 297, 298, 299, 0, 0, 300, 301, 1039, 303, 304, - 0, 305, 306, 307, 0, 308, 309, 310, 0, 311, - 312, 313, 314, 0, 316, 317, 318, 0, 0, 320, - 0, 321, 322, 1040, 324, 0, 325, 0, 326, 807, - 0, 808, 327, 328, 329, 330, 0, 331, 0, 0, - 0, 334, 0, 335, 336, 337, 338, 339, 809, 340, - 341, 342, 343, 2095, 344, 345, 346, 347, 348, 349, - 0, 350, 810, 2096, 352, 353, 354, 355, 1042, 1043, - 0, 1044, 0, 359, 811, 812, 360, 813, 361, 362, - 363, 364, 365, 0, 0, 366, 0, 814, 368, 815, - 0, 369, 370, 371, 0, 0, 372, 373, 374, 375, - 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, - 386, 387, 1045, 816, 1046, 390, 391, 392, 0, 0, - 394, 395, 817, 396, 0, 0, 398, 1047, 400, 401, - 402, 0, 403, 404, 0, 0, 405, 406, 407, 0, - 2097, 408, 2098, 818, 410, 819, 0, 412, 413, 414, - 415, 416, 417, 418, 419, 420, 0, 421, 422, 0, - 424, 0, 426, 427, 428, 0, 429, 430, 431, 432, - 433, 434, 435, 436, 437, 1048, 439, 440, 441, 442, - 0, 443, 444, 445, 446, 447, 448, 449, 450, 451, - 452, 453, 454, 0, 455, 456, 820, 457, 458, 459, - 0, 461, 462, 463, 464, 465, 466, 467, 468, 469, - 0, 470, 471, 472, 473, 474, 0, 475, 476, 2099, - 478, 479, 821, 480, 481, 1050, 483, 0, 484, 485, - 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, - 0, 0, 497, 498, 0, 499, 822, 500, 501, 502, - 503, 504, 0, 1051, 1052, 0, 0, 507, 508, 0, - 510, 0, 0, 512, 513, 514, 515, 516, 517, 518, - 0, 0, 519, 520, 521, 522, 523, 0, 0, 524, - 525, 526, 527, 528, 0, 1053, 2100, 531, 823, 532, - 533, 534, 535, 0, 0, 536, 0, 0, 537, 538, - 539, 540, 541, 542, 2391, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 554, 555, 556, 0, 224, - 225, 226, 227, 228, 229, 230, 231, 2101, 233, 234, - 235, 0, 0, 0, 0, 0, 0, 0, 236, 237, - 0, 238, 239, 240, 801, 241, 242, 243, 0, 1032, - 802, 1033, 1034, 0, 248, 249, 250, 251, 252, 0, - 0, 253, 254, 1035, 1036, 257, 0, 258, 259, 260, - 261, 0, 0, 803, 0, 263, 264, 265, 266, 267, - 804, 268, 269, 270, 0, 271, 272, 273, 274, 275, - 276, 0, 805, 277, 278, 279, 0, 0, 0, 806, - 0, 0, 0, 280, 281, 282, 283, 284, 285, 1037, - 1038, 288, 0, 289, 0, 290, 291, 292, 293, 294, - 295, 0, 296, 297, 298, 299, 0, 0, 300, 301, - 1039, 303, 304, 0, 305, 306, 307, 0, 308, 309, - 310, 0, 311, 312, 313, 314, 0, 316, 317, 318, - 0, 0, 320, 0, 321, 322, 1040, 324, 0, 325, - 0, 326, 807, 0, 808, 327, 328, 329, 330, 0, - 331, 0, 0, 0, 334, 0, 335, 336, 337, 338, - 339, 809, 340, 341, 342, 343, 2095, 344, 345, 346, - 347, 348, 349, 0, 350, 810, 2096, 352, 353, 354, - 355, 1042, 1043, 0, 1044, 0, 359, 811, 812, 360, - 813, 361, 362, 363, 364, 365, 0, 0, 366, 0, - 814, 368, 815, 0, 369, 370, 371, 0, 0, 372, - 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, - 383, 384, 385, 386, 387, 1045, 816, 1046, 390, 391, - 392, 0, 0, 394, 395, 817, 396, 0, 0, 398, - 1047, 400, 401, 402, 0, 403, 404, 0, 0, 405, - 406, 407, 0, 2097, 408, 2098, 818, 410, 819, 0, - 412, 413, 414, 415, 416, 417, 418, 419, 420, 0, - 421, 422, 0, 424, 0, 426, 427, 428, 0, 429, - 430, 431, 432, 433, 434, 435, 436, 437, 1048, 439, - 440, 441, 442, 0, 443, 444, 445, 446, 447, 448, - 449, 450, 451, 452, 453, 454, 0, 455, 456, 820, - 457, 458, 459, 0, 461, 462, 463, 464, 465, 466, - 467, 468, 469, 0, 470, 471, 472, 473, 474, 0, - 475, 476, 2099, 478, 479, 821, 480, 481, 1050, 483, - 0, 484, 485, 486, 487, 488, 489, 490, 491, 492, - 493, 494, 495, 0, 0, 497, 498, 0, 499, 822, - 500, 501, 502, 503, 504, 0, 1051, 1052, 0, 0, - 507, 508, 0, 510, 0, 0, 512, 513, 514, 515, - 516, 517, 518, 0, 0, 519, 520, 521, 522, 523, - 0, 0, 524, 525, 526, 527, 528, 0, 1053, 2100, - 531, 823, 532, 533, 534, 535, 0, 0, 536, 0, - 0, 537, 538, 539, 540, 541, 542, 845, 1460, 617, - 0, 0, 0, 676, 0, 0, 0, 0, 554, 555, - 556, 0, 224, 225, 226, 227, 228, 229, 230, 231, - 2101, 233, 234, 235, 0, 0, 0, 0, 0, 0, - 0, 236, 237, 0, 238, 239, 240, 801, 241, 242, - 243, 244, 245, 802, 246, 247, 0, 248, 249, 250, - 251, 252, 0, 0, 253, 254, 255, 256, 257, 0, - 258, 259, 260, 261, 262, 0, 803, 0, 263, 264, - 265, 266, 267, 804, 268, 269, 270, 0, 271, 272, - 273, 274, 275, 276, 0, 805, 277, 278, 279, 0, - 0, 0, 806, 0, 0, 0, 280, 281, 282, 283, - 284, 285, 286, 287, 288, 0, 289, 0, 290, 291, - 292, 293, 294, 295, 0, 296, 297, 298, 299, 0, - 0, 300, 301, 302, 303, 304, 0, 305, 306, 307, - 0, 308, 309, 310, 0, 311, 312, 313, 314, 315, - 316, 317, 318, 319, 1762, 320, 0, 321, 322, 323, - 324, 0, 325, 0, 326, 807, 0, 808, 327, 328, - 329, 330, 0, 331, 332, 0, 333, 334, 0, 335, - 336, 337, 338, 339, 809, 340, 341, 342, 343, 0, - 344, 345, 346, 347, 348, 349, 0, 350, 810, 351, - 352, 353, 354, 355, 356, 357, 0, 358, 0, 359, - 811, 812, 360, 813, 361, 362, 363, 364, 365, 0, - 0, 366, 367, 814, 368, 815, 0, 369, 370, 371, - 0, 0, 372, 373, 374, 375, 376, 377, 378, 379, - 380, 381, 382, 383, 384, 385, 386, 387, 388, 816, - 389, 390, 391, 392, 393, 0, 394, 395, 817, 396, - 0, 397, 398, 399, 400, 401, 402, 0, 403, 404, - 1763, 0, 405, 406, 407, 0, 0, 408, 409, 818, - 410, 819, 411, 412, 413, 414, 415, 416, 417, 418, - 419, 420, 0, 421, 422, 423, 424, 425, 426, 427, - 428, 0, 429, 430, 431, 432, 433, 434, 435, 436, - 437, 438, 439, 440, 441, 442, 0, 443, 444, 445, - 446, 447, 448, 449, 450, 451, 452, 453, 454, 0, - 455, 456, 820, 457, 458, 459, 460, 461, 462, 463, - 464, 465, 466, 467, 468, 469, 0, 470, 471, 472, - 473, 474, 0, 475, 476, 477, 478, 479, 821, 480, - 481, 482, 483, 0, 484, 485, 486, 487, 488, 489, - 490, 491, 492, 493, 494, 495, 496, 0, 497, 498, - 0, 499, 822, 500, 501, 502, 503, 504, 0, 505, - 506, 0, 0, 507, 508, 509, 510, 511, 1764, 512, - 513, 514, 515, 516, 517, 518, 0, 0, 519, 520, - 521, 522, 523, 0, 0, 524, 525, 526, 527, 528, - 529, 530, 0, 531, 823, 532, 533, 534, 535, 0, - 0, 536, 0, 0, 537, 538, 539, 540, 541, 542, - 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, - 553, 554, 555, 556, 845, 0, 617, 0, 0, 0, - 676, 1461, 1462, 0, 0, 0, 0, 0, 0, 224, - 225, 226, 227, 228, 229, 230, 231, 0, 233, 234, - 235, 0, 0, 0, 0, 0, 0, 0, 236, 237, - 0, 238, 239, 240, 801, 241, 242, 243, 244, 245, - 802, 246, 247, 0, 248, 249, 250, 251, 252, 0, - 0, 253, 254, 255, 256, 257, 0, 258, 259, 260, - 261, 262, 0, 803, 0, 263, 264, 265, 266, 267, - 804, 268, 269, 270, 0, 271, 272, 273, 274, 275, - 276, 0, 805, 277, 278, 279, 0, 0, 0, 806, - 0, 0, 0, 280, 281, 282, 283, 284, 285, 286, - 287, 288, 2860, 289, 0, 290, 291, 292, 293, 294, - 295, 0, 296, 297, 298, 299, 0, 0, 300, 301, - 302, 303, 304, 0, 305, 306, 307, 0, 308, 309, - 310, 0, 311, 312, 313, 314, 315, 316, 317, 318, - 319, 1762, 320, 0, 321, 322, 323, 324, 0, 325, - 0, 326, 807, 0, 808, 327, 328, 329, 330, 0, - 331, 332, 0, 333, 334, 0, 335, 336, 337, 338, - 339, 809, 340, 341, 342, 343, 0, 344, 345, 346, - 347, 348, 349, 0, 350, 810, 351, 352, 353, 354, - 355, 356, 357, 0, 358, 0, 359, 811, 812, 360, - 813, 361, 362, 363, 364, 365, 0, 0, 366, 367, - 814, 368, 815, 0, 369, 370, 371, 0, 0, 372, - 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, - 383, 384, 385, 386, 387, 388, 816, 389, 390, 391, - 392, 393, 0, 394, 395, 817, 396, 0, 397, 398, - 399, 400, 401, 402, 0, 403, 404, 1763, 0, 405, - 406, 407, 0, 0, 408, 409, 818, 410, 819, 411, - 412, 413, 414, 415, 416, 417, 418, 419, 420, 0, - 421, 422, 423, 424, 425, 426, 427, 428, 0, 429, - 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, - 440, 441, 442, 0, 443, 444, 445, 446, 447, 448, - 449, 450, 451, 452, 453, 454, 0, 455, 456, 820, - 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, - 467, 468, 469, 0, 470, 471, 472, 473, 474, 0, - 475, 476, 477, 478, 479, 821, 480, 481, 482, 483, - 0, 484, 485, 486, 487, 488, 489, 490, 491, 492, - 493, 494, 495, 496, 0, 497, 498, 0, 499, 822, - 500, 501, 502, 503, 504, 0, 505, 506, 0, 0, - 507, 508, 509, 510, 511, 1764, 512, 513, 514, 515, - 516, 517, 518, 0, 0, 519, 520, 521, 522, 523, - 0, 0, 524, 525, 526, 527, 528, 529, 530, 0, - 531, 823, 532, 533, 534, 535, 0, 0, 536, 0, - 0, 537, 538, 539, 540, 541, 542, 543, 544, 545, - 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, - 556, 223, 0, 0, 0, 0, 0, 676, 688, 689, - 0, 0, 0, 0, 0, 0, 224, 677, 226, 227, - 228, 229, 230, 231, 678, 233, 234, 235, 0, 0, - 0, 0, 0, 0, 0, 236, 237, 0, 238, 239, - 240, 0, 679, 242, 243, 244, 245, 0, 246, 247, - 0, 248, 249, 250, 251, 252, 0, 0, 253, 254, - 255, 256, 257, 0, 258, 259, 260, 261, 262, 0, - 0, 0, 263, 264, 265, 266, 267, 0, 268, 269, - 270, 0, 271, 272, 273, 274, 275, 276, 0, 0, - 277, 278, 279, 0, 0, 0, 0, 0, 0, 0, - 280, 281, 282, 283, 284, 285, 286, 287, 288, 0, - 289, 0, 290, 291, 292, 293, 294, 295, 0, 296, - 297, 298, 299, 0, 0, 300, 301, 302, 303, 304, - 0, 305, 306, 307, 0, 308, 309, 310, 0, 311, - 312, 313, 314, 315, 316, 317, 318, 319, 0, 320, - 0, 321, 680, 323, 324, 0, 325, 0, 681, 0, - 682, 0, 327, 328, 329, 330, 0, 331, 332, 0, - 333, 334, 0, 335, 336, 337, 338, 339, 0, 340, - 341, 342, 343, 683, 344, 345, 346, 347, 348, 349, - 0, 350, 0, 351, 352, 353, 354, 355, 356, 357, - 0, 358, 0, 359, 0, 0, 360, 0, 361, 362, - 363, 364, 684, 0, 0, 366, 367, 0, 368, 0, - 0, 369, 370, 371, 0, 0, 372, 373, 374, 375, - 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, - 386, 387, 388, 0, 389, 390, 685, 392, 393, 0, - 394, 395, 0, 396, 0, 397, 398, 399, 400, 401, - 402, 0, 403, 404, 0, 0, 405, 406, 407, 0, - 0, 408, 409, 0, 410, 0, 411, 412, 413, 414, - 415, 416, 417, 418, 419, 420, 0, 421, 422, 423, - 424, 425, 426, 427, 428, 0, 686, 430, 431, 432, - 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, - 0, 443, 444, 445, 687, 447, 448, 449, 450, 451, - 452, 453, 454, 0, 455, 456, 0, 457, 458, 459, - 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, - 0, 470, 471, 472, 473, 474, 0, 475, 476, 477, - 478, 479, 0, 480, 481, 482, 483, 0, 484, 485, - 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, - 496, 0, 497, 498, 0, 499, 0, 500, 501, 502, - 503, 504, 0, 505, 506, 0, 0, 507, 508, 509, - 510, 511, 0, 512, 513, 514, 515, 516, 517, 518, - 0, 0, 519, 520, 521, 522, 523, 0, 0, 524, - 525, 526, 527, 528, 529, 530, 0, 531, 0, 532, - 533, 534, 535, 0, 0, 536, 0, 0, 537, 538, - 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, - 549, 550, 551, 552, 553, 554, 555, 556, 1952, 5307, - 617, 0, 0, 0, 676, 688, 689, 0, 0, 0, - 0, 0, 0, 224, 225, 226, 227, 228, 229, 230, - 231, 1953, 233, 234, 235, 1954, 1955, 1956, 1957, 1958, - 1959, 1960, 236, 237, 1961, 238, 239, 240, 801, 241, - 242, 243, 244, 245, 802, 246, 247, 1962, 248, 249, - 250, 251, 252, 1963, 1964, 253, 254, 255, 256, 257, - 1965, 258, 259, 260, 261, 262, 1966, 803, 1967, 263, - 264, 265, 266, 267, 804, 268, 269, 270, 1968, 271, - 272, 273, 274, 275, 276, 1969, 805, 277, 278, 279, - 1970, 1971, 1972, 806, 1973, 1974, 1975, 280, 281, 282, - 283, 284, 285, 286, 287, 288, 1976, 289, 1977, 290, - 291, 292, 293, 294, 295, 1978, 296, 297, 298, 299, - 1979, 1980, 300, 301, 302, 303, 304, 1981, 305, 306, - 307, 1982, 308, 309, 310, 1983, 311, 312, 313, 314, - 315, 316, 317, 318, 319, 1984, 320, 1985, 321, 322, - 323, 324, 1986, 325, 1987, 326, 807, 1988, 808, 327, - 328, 329, 330, 1989, 331, 332, 1990, 333, 334, 1991, - 335, 336, 337, 338, 339, 809, 340, 341, 342, 343, - 1992, 344, 345, 346, 347, 348, 349, 1993, 350, 810, - 351, 352, 353, 354, 355, 356, 357, 1994, 358, 1995, - 359, 811, 812, 360, 813, 361, 362, 363, 364, 365, - 1996, 1997, 366, 367, 814, 368, 815, 1998, 369, 370, - 371, 1999, 2000, 372, 373, 374, 375, 376, 377, 378, - 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, - 816, 389, 390, 391, 392, 393, 2001, 394, 395, 817, - 396, 2002, 397, 398, 399, 400, 401, 402, 2003, 403, - 404, 2004, 2005, 405, 406, 407, 2006, 2007, 408, 409, - 818, 410, 819, 411, 412, 413, 414, 415, 416, 417, - 418, 419, 420, 2008, 421, 422, 423, 424, 425, 426, - 427, 428, 2009, 429, 430, 431, 432, 433, 434, 435, - 436, 437, 438, 439, 440, 441, 442, 2010, 443, 444, - 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, - 2011, 455, 456, 820, 457, 458, 459, 460, 461, 462, - 463, 464, 465, 466, 467, 468, 469, 2012, 470, 471, - 472, 473, 474, 2013, 475, 476, 477, 478, 479, 821, - 480, 481, 482, 483, 2014, 484, 485, 486, 487, 488, - 489, 490, 491, 492, 493, 494, 495, 496, 2015, 497, - 498, 2016, 499, 822, 500, 501, 502, 503, 504, 2017, - 505, 506, 2018, 2019, 507, 508, 509, 510, 511, 2020, - 512, 513, 514, 515, 516, 517, 518, 2021, 2022, 519, - 520, 521, 522, 523, 2023, 2024, 524, 525, 526, 527, - 528, 529, 530, 2025, 531, 823, 532, 533, 534, 535, - 2026, 2027, 536, 2028, 2029, 537, 538, 539, 540, 541, - 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, - 552, 553, 554, 555, 556, 1952, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 224, 225, 226, 227, 228, 229, 230, 231, 1953, 233, - 234, 235, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 236, - 237, 1961, 238, 239, 240, 801, 241, 242, 243, 244, - 245, 802, 246, 247, 1962, 248, 249, 250, 251, 252, - 1963, 1964, 253, 254, 255, 256, 257, 1965, 258, 259, - 260, 261, 262, 1966, 803, 1967, 263, 264, 265, 266, - 267, 804, 268, 269, 270, 1968, 271, 272, 273, 274, - 275, 276, 1969, 805, 277, 278, 279, 1970, 1971, 1972, - 806, 1973, 1974, 1975, 280, 281, 282, 283, 284, 285, - 286, 287, 288, 1976, 289, 1977, 290, 291, 292, 293, - 294, 295, 1978, 296, 297, 298, 299, 1979, 1980, 300, - 301, 302, 303, 304, 1981, 305, 306, 307, 1982, 308, - 309, 310, 1983, 311, 312, 313, 314, 315, 316, 317, - 318, 319, 1984, 320, 1985, 321, 322, 323, 324, 1986, - 325, 1987, 326, 807, 1988, 808, 327, 328, 329, 330, - 1989, 331, 332, 1990, 333, 334, 1991, 335, 336, 337, - 338, 339, 809, 340, 341, 342, 343, 1992, 344, 345, - 346, 347, 348, 349, 1993, 350, 810, 351, 352, 353, - 354, 355, 356, 357, 1994, 358, 1995, 359, 811, 812, - 360, 813, 361, 362, 363, 364, 365, 1996, 1997, 366, - 367, 814, 368, 815, 1998, 369, 370, 371, 1999, 2000, - 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, - 382, 383, 384, 385, 386, 387, 388, 816, 389, 390, - 391, 392, 393, 2001, 394, 395, 817, 396, 2002, 397, - 398, 399, 400, 401, 402, 2003, 403, 404, 2004, 2005, - 405, 406, 407, 2006, 2007, 408, 409, 818, 410, 819, - 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, - 2008, 421, 422, 423, 424, 425, 426, 427, 428, 2009, - 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, - 439, 440, 441, 442, 2010, 443, 444, 445, 446, 447, - 448, 449, 450, 451, 452, 453, 454, 2011, 455, 456, - 820, 457, 458, 459, 460, 461, 462, 463, 464, 465, - 466, 467, 468, 469, 2012, 470, 471, 472, 473, 474, - 2013, 475, 476, 477, 478, 479, 821, 480, 481, 482, - 483, 2014, 484, 485, 486, 487, 488, 489, 490, 491, - 492, 493, 494, 495, 496, 2015, 497, 498, 2016, 499, - 822, 500, 501, 502, 503, 504, 2017, 505, 506, 2018, - 2019, 507, 508, 509, 510, 511, 2020, 512, 513, 514, - 515, 516, 517, 518, 2021, 2022, 519, 520, 521, 522, - 523, 2023, 2024, 524, 525, 526, 527, 528, 529, 530, - 2025, 531, 823, 532, 533, 534, 535, 2026, 2027, 536, - 2028, 2029, 537, 538, 539, 540, 541, 542, 543, 544, - 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, - 555, 556, 1952, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 224, 225, 226, - 227, 2974, 229, 230, 231, 1953, 233, 234, 235, 1954, - 1955, 1956, 1957, 1958, 1959, 1960, 236, 237, 1961, 238, - 239, 240, 801, 241, 242, 243, 244, 245, 802, 246, - 247, 1962, 248, 249, 250, 251, 252, 1963, 1964, 253, - 254, 255, 256, 257, 1965, 258, 259, 260, 261, 262, - 1966, 803, 1967, 263, 264, 265, 266, 267, 804, 268, - 269, 270, 1968, 271, 272, 273, 274, 275, 276, 1969, - 805, 277, 278, 279, 1970, 1971, 1972, 806, 1973, 1974, - 1975, 280, 281, 282, 283, 284, 285, 286, 287, 288, - 1976, 289, 1977, 290, 291, 292, 293, 294, 295, 1978, - 296, 297, 298, 299, 1979, 1980, 300, 301, 302, 2975, - 304, 1981, 305, 306, 307, 1982, 308, 309, 310, 1983, - 311, 312, 313, 314, 315, 316, 317, 318, 319, 1984, - 320, 1985, 321, 322, 323, 324, 1986, 325, 1987, 326, - 807, 1988, 808, 327, 328, 329, 330, 1989, 331, 332, - 1990, 333, 334, 1991, 335, 336, 337, 338, 339, 809, - 340, 341, 342, 343, 1992, 344, 345, 346, 347, 348, - 349, 1993, 350, 810, 351, 352, 353, 354, 355, 356, - 357, 1994, 358, 1995, 359, 811, 812, 360, 813, 361, - 362, 363, 364, 365, 1996, 1997, 366, 367, 814, 368, - 815, 1998, 369, 370, 371, 1999, 2000, 372, 373, 374, - 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, - 385, 386, 387, 388, 816, 389, 390, 391, 392, 393, - 2001, 394, 395, 817, 396, 2002, 397, 398, 399, 400, - 401, 402, 2003, 403, 404, 2004, 2005, 405, 406, 407, - 2006, 2007, 408, 409, 818, 410, 819, 411, 412, 413, - 414, 415, 416, 417, 418, 419, 420, 2008, 421, 422, - 423, 424, 425, 426, 427, 428, 2009, 429, 430, 431, - 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, - 442, 2010, 443, 444, 445, 446, 447, 448, 449, 450, - 451, 452, 453, 454, 2011, 455, 456, 820, 457, 458, - 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, - 469, 2012, 470, 471, 472, 473, 474, 2013, 2976, 476, - 477, 478, 479, 821, 480, 481, 482, 483, 2014, 484, - 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, - 495, 496, 2015, 497, 498, 2016, 499, 822, 500, 501, - 502, 503, 504, 2017, 505, 506, 2018, 2019, 507, 508, - 509, 510, 511, 2020, 512, 513, 514, 515, 516, 517, - 518, 2021, 2022, 519, 520, 521, 522, 523, 2023, 2024, - 524, 525, 526, 527, 528, 529, 530, 2025, 531, 823, - 532, 533, 534, 535, 2026, 2027, 536, 2028, 2029, 537, - 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, - 548, 549, 550, 551, 552, 553, 554, 555, 556, 800, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 224, 225, 226, 227, 228, 229, - 230, 231, 0, 233, 234, 235, 0, 0, 0, 0, - 0, 0, 0, 236, 237, 0, 238, 239, 240, 801, - 241, 242, 243, 244, 245, 802, 246, 247, 0, 248, - 249, 250, 251, 252, 0, 1187, 253, 254, 255, 256, - 257, 0, 258, 259, 260, 261, 1190, 0, 1191, 0, - 263, 264, 265, 266, 267, 804, 268, 269, 270, 0, - 271, 272, 273, 274, 275, 276, 0, 805, 277, 278, - 279, 1192, 1193, 1194, 1195, 1196, 1197, 1198, 280, 281, - 282, 283, 284, 285, 286, 287, 288, 0, 289, 0, - 290, 291, 292, 293, 294, 295, 0, 296, 297, 298, - 299, 0, 0, 300, 301, 302, 303, 304, 0, 305, - 306, 307, 0, 308, 309, 310, 0, 311, 312, 313, - 314, 315, 316, 317, 318, 1203, 0, 320, 0, 321, - 322, 323, 324, 0, 325, 0, 326, 807, 0, 808, - 327, 328, 329, 330, 0, 331, 1206, 0, 333, 334, - 0, 335, 336, 337, 338, 339, 809, 340, 341, 342, - 343, 0, 344, 345, 346, 347, 348, 349, 0, 350, - 810, 351, 352, 353, 354, 355, 356, 357, 0, 358, - 0, 359, 811, 812, 360, 813, 361, 362, 363, 364, - 365, 0, 0, 366, 1211, 814, 368, 815, 0, 369, - 370, 371, 1212, 1213, 372, 373, 374, 375, 376, 377, - 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, - 388, 816, 389, 390, 391, 392, 393, 0, 394, 395, - 817, 396, 0, 1218, 398, 399, 400, 401, 402, 0, - 403, 404, 0, 0, 405, 406, 407, 0, 0, 408, - 409, 818, 410, 819, 1221, 412, 413, 414, 415, 416, - 417, 418, 419, 420, 0, 421, 422, 1222, 424, 425, - 426, 427, 428, 0, 429, 430, 431, 432, 433, 434, - 435, 436, 437, 438, 439, 440, 441, 442, 0, 443, - 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, - 454, 0, 455, 456, 820, 457, 458, 459, 460, 461, - 462, 463, 464, 465, 466, 467, 468, 469, 0, 470, - 471, 472, 473, 474, 1225, 475, 476, 477, 478, 479, - 821, 480, 481, 482, 483, 0, 484, 485, 486, 487, - 488, 489, 490, 491, 492, 493, 494, 495, 1227, 0, - 497, 498, 0, 499, 822, 500, 501, 502, 503, 504, - 0, 505, 506, 0, 0, 507, 508, 1230, 510, 1231, - 0, 512, 513, 514, 515, 516, 517, 518, 0, 0, - 519, 520, 521, 522, 523, 1234, 0, 524, 525, 526, - 527, 528, 529, 530, 0, 531, 823, 532, 533, 534, - 535, 0, 0, 536, 0, 0, 537, 538, 539, 540, - 541, 542, 543, 1236, 1237, 1238, 1239, 548, 1240, 1241, - 1242, 1243, 553, 554, 555, 556, 845, 0, 617, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 224, 225, 226, 227, 228, 229, 230, 231, 0, - 233, 234, 235, 0, 0, 0, 0, 0, 0, 0, - 236, 237, 0, 238, 239, 240, 801, 241, 242, 243, - 244, 245, 802, 246, 247, 0, 248, 249, 250, 251, - 252, 0, 0, 253, 254, 255, 256, 257, 0, 258, - 259, 260, 261, 262, 0, 803, 0, 263, 264, 265, - 266, 267, 804, 268, 269, 270, 0, 271, 272, 273, - 274, 275, 276, 0, 805, 277, 278, 279, 0, 0, - 0, 806, 0, 0, 0, 280, 281, 282, 283, 284, - 285, 286, 287, 288, 0, 289, 0, 290, 291, 292, - 293, 294, 295, 0, 296, 297, 298, 299, 0, 0, - 300, 301, 302, 303, 304, 0, 305, 306, 307, 0, - 308, 309, 310, 0, 311, 312, 313, 314, 315, 316, - 317, 318, 319, 1762, 320, 0, 321, 322, 323, 324, - 0, 325, 0, 326, 807, 0, 808, 327, 328, 329, - 330, 0, 331, 332, 0, 333, 334, 0, 335, 336, - 337, 338, 339, 809, 340, 341, 342, 343, 0, 344, - 345, 346, 347, 348, 349, 0, 350, 810, 351, 352, - 353, 354, 355, 356, 357, 0, 358, 0, 359, 811, - 812, 360, 813, 361, 362, 363, 364, 365, 0, 0, - 366, 367, 814, 368, 815, 0, 369, 370, 371, 0, - 0, 372, 373, 374, 375, 376, 377, 378, 379, 380, - 381, 382, 383, 384, 385, 386, 387, 388, 816, 389, - 390, 391, 392, 393, 0, 394, 395, 817, 396, 0, - 397, 398, 399, 400, 401, 402, 0, 403, 404, 1763, - 0, 405, 406, 407, 0, 0, 408, 409, 818, 410, - 819, 411, 412, 413, 414, 415, 416, 417, 418, 419, - 420, 0, 421, 422, 423, 424, 425, 426, 427, 428, - 0, 429, 430, 431, 432, 433, 434, 435, 436, 437, - 438, 439, 440, 441, 442, 0, 443, 444, 445, 446, + 0, 0, 387, 1257, 389, 390, 391, 0, 392, 393, + 394, 1258, 1259, 395, 396, 397, 398, 399, 400, 401, + 402, 403, 404, 405, 406, 407, 408, 409, 410, 1260, + 412, 1261, 414, 415, 416, 417, 418, 419, 420, 421, + 1262, 423, 1263, 424, 425, 426, 427, 1264, 1265, 429, + 1266, 431, 432, 433, 0, 434, 435, 0, 0, 1267, + 437, 438, 0, 0, 439, 440, 441, 442, 443, 444, + 1268, 446, 447, 448, 449, 450, 451, 452, 453, 454, + 0, 455, 456, 1269, 458, 459, 460, 461, 462, 0, + 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, + 1270, 474, 475, 476, 477, 0, 478, 479, 480, 481, + 482, 483, 484, 485, 486, 487, 488, 489, 0, 490, + 491, 492, 493, 494, 495, 496, 497, 1271, 499, 500, + 501, 502, 503, 504, 505, 506, 507, 0, 508, 509, + 510, 511, 512, 1272, 513, 514, 515, 516, 517, 518, + 519, 520, 1273, 522, 0, 523, 524, 525, 526, 527, + 528, 529, 530, 531, 532, 533, 534, 535, 1274, 537, + 0, 538, 539, 0, 540, 541, 542, 543, 544, 545, + 546, 0, 547, 1275, 1276, 0, 0, 550, 551, 1277, + 553, 1278, 1279, 555, 556, 557, 558, 559, 560, 561, + 562, 0, 1280, 563, 564, 565, 566, 567, 1281, 0, + 568, 569, 570, 571, 572, 573, 1282, 0, 575, 576, + 577, 578, 579, 580, 0, 0, 581, 0, 0, 582, + 583, 584, 585, 586, 587, 588, 1283, 1284, 1285, 1286, + 593, 1287, 1288, 1289, 1290, 598, 599, 600, 601, 1291, + 0, 0, 0, 0, 0, 1292, 0, 2162, 2163, 0, + 0, 0, 228, 0, 2940, 669, 1296, 1224, 1225, 1226, + 729, 1227, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 229, 230, 231, 232, 233, 234, 235, 236, 0, + 237, 238, 239, 0, 0, 0, 0, 1228, 0, 0, + 240, 241, 0, 242, 243, 244, 245, 246, 247, 248, + 249, 1229, 251, 1230, 1231, 0, 254, 255, 256, 257, + 258, 259, 1232, 1233, 260, 261, 1234, 1235, 264, 0, + 265, 266, 267, 268, 1236, 0, 1237, 0, 271, 272, + 273, 274, 275, 276, 277, 278, 279, 0, 280, 281, + 282, 283, 284, 285, 0, 286, 287, 288, 289, 1238, + 1239, 1240, 1241, 1242, 1243, 1244, 291, 292, 293, 294, + 295, 296, 1245, 1246, 299, 1247, 300, 0, 301, 302, + 303, 304, 305, 306, 0, 307, 308, 309, 310, 0, + 0, 311, 312, 1078, 314, 315, 0, 316, 317, 318, + 0, 319, 320, 321, 0, 322, 323, 324, 325, 1248, + 327, 328, 329, 330, 1249, 1250, 332, 0, 333, 334, + 1251, 336, 0, 337, 0, 338, 339, 0, 340, 341, + 342, 343, 344, 0, 345, 1252, 0, 1253, 348, 349, + 0, 350, 351, 352, 353, 354, 355, 356, 357, 358, + 359, 0, 360, 361, 362, 363, 364, 365, 366, 0, + 367, 368, 369, 370, 371, 372, 373, 1254, 1255, 0, + 1256, 0, 377, 378, 379, 380, 381, 382, 383, 384, + 385, 386, 0, 0, 387, 1257, 389, 390, 391, 0, + 392, 393, 394, 1258, 1259, 395, 396, 397, 398, 399, + 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, + 410, 1260, 412, 1261, 414, 415, 416, 417, 418, 419, + 420, 421, 1262, 423, 1263, 424, 425, 426, 427, 1264, + 1265, 429, 1266, 431, 432, 433, 0, 434, 435, 0, + 0, 1267, 437, 438, 0, 0, 439, 440, 441, 442, + 443, 444, 1268, 446, 447, 448, 449, 450, 451, 452, + 453, 454, 0, 455, 456, 1269, 458, 459, 460, 461, + 462, 0, 463, 464, 465, 466, 467, 468, 469, 470, + 471, 472, 1270, 474, 475, 476, 477, 0, 478, 479, + 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, + 0, 490, 491, 492, 493, 494, 495, 496, 497, 1271, + 499, 500, 501, 502, 503, 504, 505, 506, 507, 0, + 508, 509, 510, 511, 512, 1272, 513, 514, 515, 516, + 517, 518, 519, 520, 1273, 522, 0, 523, 524, 525, + 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, + 1274, 537, 0, 538, 539, 0, 540, 541, 542, 543, + 544, 545, 546, 0, 547, 1275, 1276, 0, 0, 550, + 551, 1277, 553, 1278, 1279, 555, 556, 557, 558, 559, + 560, 561, 562, 0, 1280, 563, 564, 565, 566, 567, + 1281, 0, 568, 569, 570, 571, 572, 573, 1282, 0, + 575, 576, 577, 578, 579, 580, 0, 0, 581, 0, + 0, 582, 583, 584, 585, 586, 587, 588, 1283, 1284, + 1285, 1286, 593, 1287, 1288, 1289, 1290, 598, 599, 600, + 601, 1291, 0, 0, 0, 0, 0, 1292, 0, 1293, + 1294, 0, 0, 0, 228, 0, 1223, 669, 1296, 1224, + 1225, 1226, 729, 1227, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 229, 230, 231, 232, 233, 234, 235, + 236, 0, 237, 238, 239, 0, 0, 0, 0, 1228, + 0, 0, 240, 241, 0, 242, 243, 244, 245, 246, + 247, 248, 249, 1229, 251, 1230, 1231, 0, 254, 255, + 256, 257, 258, 259, 1232, 1233, 260, 261, 1234, 1235, + 264, 0, 265, 266, 267, 268, 1236, 0, 1237, 0, + 271, 272, 273, 274, 275, 276, 277, 278, 279, 0, + 280, 281, 282, 283, 284, 285, 0, 286, 287, 288, + 4225, 1238, 1239, 1240, 1241, 1242, 1243, 1244, 291, 292, + 293, 294, 295, 296, 1245, 1246, 299, 1247, 300, 0, + 301, 302, 303, 304, 305, 306, 0, 307, 308, 309, + 310, 0, 0, 311, 312, 1078, 314, 315, 0, 316, + 317, 318, 0, 319, 320, 321, 0, 322, 323, 324, + 325, 1248, 327, 328, 329, 330, 1249, 1250, 332, 0, + 333, 334, 1251, 336, 0, 337, 0, 338, 339, 0, + 340, 341, 342, 343, 344, 0, 345, 1252, 0, 1253, + 348, 349, 0, 350, 351, 352, 353, 354, 355, 356, + 357, 358, 359, 0, 360, 361, 362, 363, 364, 365, + 366, 0, 367, 368, 369, 370, 371, 372, 373, 1254, + 1255, 0, 1256, 0, 377, 378, 379, 380, 381, 382, + 383, 384, 385, 386, 0, 0, 387, 1257, 389, 390, + 391, 0, 392, 393, 394, 1258, 1259, 395, 396, 397, + 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, + 408, 409, 410, 1260, 412, 1261, 414, 415, 416, 417, + 418, 419, 420, 421, 1262, 423, 1263, 424, 425, 426, + 427, 1264, 1265, 429, 1266, 431, 432, 433, 0, 434, + 435, 0, 0, 1267, 437, 438, 0, 0, 439, 440, + 441, 442, 443, 444, 1268, 446, 447, 448, 449, 450, + 451, 452, 453, 454, 0, 455, 456, 1269, 458, 459, + 460, 461, 462, 0, 463, 464, 465, 466, 467, 468, + 469, 470, 471, 472, 1270, 474, 475, 476, 477, 0, + 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, + 488, 489, 0, 490, 491, 492, 493, 494, 495, 496, + 497, 1271, 499, 500, 501, 502, 503, 504, 505, 506, + 507, 0, 508, 509, 510, 511, 512, 1272, 513, 514, + 515, 516, 517, 518, 519, 520, 1273, 522, 0, 523, + 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, + 534, 535, 1274, 537, 0, 538, 539, 0, 540, 541, + 542, 543, 544, 545, 546, 0, 547, 1275, 1276, 0, + 0, 550, 551, 1277, 553, 1278, 1279, 555, 556, 557, + 558, 559, 560, 561, 562, 0, 1280, 563, 564, 565, + 566, 567, 1281, 0, 568, 569, 570, 571, 572, 573, + 1282, 0, 575, 576, 577, 578, 579, 580, 0, 0, + 581, 0, 0, 582, 583, 584, 585, 586, 587, 588, + 1283, 1284, 1285, 1286, 593, 1287, 1288, 1289, 1290, 598, + 599, 600, 601, 1291, 0, 0, 0, 0, 0, 1292, + 0, 1293, 1294, 0, 0, 0, 228, 0, 1223, 669, + 1296, 1224, 1225, 1226, 729, 1227, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 229, 230, 231, 232, 233, + 234, 235, 236, 0, 237, 238, 239, 0, 0, 0, + 0, 1228, 0, 0, 240, 241, 0, 242, 243, 244, + 245, 246, 247, 248, 249, 1229, 251, 1230, 1231, 0, + 254, 255, 256, 257, 258, 259, 1232, 1233, 260, 261, + 1234, 1235, 264, 0, 265, 266, 267, 268, 1236, 0, + 1237, 0, 271, 272, 273, 274, 275, 276, 277, 278, + 279, 0, 280, 281, 282, 283, 284, 285, 0, 286, + 287, 288, 289, 1238, 1239, 1240, 1241, 1242, 1243, 1244, + 291, 292, 293, 294, 295, 296, 1245, 1246, 299, 1247, + 300, 0, 301, 302, 303, 304, 305, 306, 0, 307, + 308, 309, 310, 0, 0, 311, 312, 1078, 314, 315, + 0, 316, 317, 318, 0, 319, 320, 321, 0, 322, + 323, 324, 325, 1248, 327, 328, 329, 330, 1249, 1250, + 332, 0, 333, 334, 1251, 336, 0, 337, 0, 338, + 339, 0, 340, 341, 342, 343, 344, 0, 345, 1252, + 0, 1253, 348, 349, 0, 350, 351, 352, 353, 354, + 355, 356, 357, 358, 359, 0, 360, 361, 362, 363, + 364, 365, 366, 0, 367, 368, 369, 370, 371, 372, + 373, 1254, 1255, 0, 1256, 0, 377, 378, 379, 380, + 381, 382, 383, 384, 385, 386, 0, 0, 387, 1257, + 389, 390, 391, 0, 392, 393, 394, 1258, 1259, 395, + 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, + 406, 407, 408, 409, 410, 1260, 412, 1261, 414, 415, + 416, 417, 418, 419, 420, 421, 1262, 423, 1263, 424, + 425, 426, 427, 1264, 1265, 429, 1266, 431, 432, 433, + 0, 434, 435, 0, 0, 1267, 437, 438, 0, 0, + 439, 440, 441, 442, 443, 444, 1268, 446, 447, 448, + 449, 450, 451, 452, 453, 454, 0, 455, 456, 1269, + 458, 459, 460, 461, 462, 0, 463, 464, 465, 466, + 467, 468, 469, 470, 471, 472, 1270, 474, 475, 476, + 477, 0, 478, 479, 480, 481, 482, 483, 484, 485, + 486, 487, 488, 489, 0, 490, 491, 492, 493, 494, + 495, 496, 497, 1271, 499, 500, 501, 502, 503, 504, + 505, 506, 507, 0, 508, 509, 510, 511, 512, 1272, + 513, 514, 515, 516, 517, 518, 519, 520, 1273, 522, + 0, 523, 524, 525, 526, 527, 528, 529, 530, 531, + 532, 533, 534, 535, 1274, 537, 0, 538, 539, 0, + 540, 541, 542, 543, 544, 545, 546, 0, 547, 1275, + 1276, 0, 0, 550, 551, 1277, 553, 1278, 1279, 555, + 556, 557, 558, 559, 560, 561, 562, 0, 1280, 563, + 564, 565, 566, 567, 1281, 0, 568, 569, 570, 571, + 572, 573, 1282, 0, 575, 576, 577, 578, 579, 580, + 0, 0, 581, 0, 0, 582, 583, 584, 585, 586, + 587, 4578, 1283, 1284, 1285, 1286, 593, 1287, 1288, 1289, + 1290, 598, 599, 600, 601, 1291, 0, 0, 0, 0, + 0, 1292, 0, 1293, 1294, 0, 0, 0, 228, 0, + 1223, 669, 1296, 1224, 1225, 1226, 729, 1227, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 229, 230, 231, + 232, 233, 234, 235, 236, 0, 237, 238, 239, 0, + 0, 0, 0, 1228, 0, 0, 240, 241, 0, 242, + 243, 244, 245, 246, 247, 248, 249, 1229, 251, 1230, + 1231, 0, 254, 255, 256, 257, 258, 259, 1232, 1233, + 260, 261, 1234, 1235, 264, 0, 265, 266, 267, 268, + 1236, 0, 1237, 0, 271, 272, 273, 274, 275, 276, + 277, 278, 279, 0, 280, 281, 282, 283, 284, 285, + 0, 286, 287, 288, 289, 1238, 1239, 1240, 1241, 1242, + 1243, 1244, 291, 292, 293, 294, 295, 296, 1245, 1246, + 299, 1247, 300, 0, 301, 302, 303, 304, 305, 306, + 0, 307, 308, 309, 310, 0, 0, 311, 312, 1078, + 314, 315, 0, 316, 317, 318, 0, 319, 320, 321, + 0, 322, 323, 324, 325, 1248, 327, 328, 329, 330, + 1249, 1250, 332, 0, 333, 334, 1251, 336, 0, 337, + 0, 338, 339, 0, 340, 341, 342, 343, 344, 0, + 345, 1252, 0, 1253, 348, 349, 0, 350, 351, 352, + 353, 354, 355, 356, 357, 358, 359, 0, 360, 361, + 362, 363, 364, 365, 366, 0, 367, 368, 369, 370, + 371, 372, 373, 1254, 1255, 0, 1256, 0, 377, 378, + 379, 380, 381, 382, 383, 384, 385, 386, 0, 0, + 387, 1257, 389, 390, 391, 0, 392, 393, 394, 1258, + 1259, 395, 396, 397, 398, 399, 400, 401, 402, 403, + 404, 405, 406, 407, 408, 409, 410, 1260, 412, 1261, + 414, 415, 416, 417, 418, 419, 4590, 421, 1262, 423, + 1263, 424, 425, 426, 427, 1264, 1265, 429, 1266, 431, + 432, 433, 0, 434, 435, 0, 0, 1267, 437, 438, + 0, 0, 439, 440, 441, 442, 443, 444, 1268, 446, 447, 448, 449, 450, 451, 452, 453, 454, 0, 455, - 456, 820, 457, 458, 459, 460, 461, 462, 463, 464, - 465, 466, 467, 468, 469, 0, 470, 471, 472, 473, - 474, 0, 475, 476, 477, 478, 479, 821, 480, 481, - 482, 483, 0, 484, 485, 486, 487, 488, 489, 490, - 491, 492, 493, 494, 495, 496, 0, 497, 498, 0, - 499, 822, 500, 501, 502, 503, 504, 0, 505, 506, - 0, 0, 507, 508, 509, 510, 511, 1764, 512, 513, - 514, 515, 516, 517, 518, 0, 0, 519, 520, 521, - 522, 523, 0, 0, 524, 525, 526, 527, 528, 529, - 530, 0, 531, 823, 532, 533, 534, 535, 0, 0, - 536, 0, 0, 537, 538, 539, 540, 541, 542, 543, - 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, - 554, 555, 556, 845, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 224, 225, - 226, 227, 228, 229, 230, 231, 883, 233, 234, 235, - 0, 0, 0, 0, 0, 0, 0, 236, 237, 0, - 238, 239, 240, 801, 241, 242, 243, 244, 245, 802, - 246, 247, 0, 248, 249, 250, 251, 252, 0, 0, - 253, 254, 255, 256, 257, 0, 258, 259, 260, 261, - 262, 0, 803, 0, 263, 264, 265, 266, 267, 804, - 268, 269, 270, 0, 271, 272, 273, 274, 275, 276, - 0, 805, 277, 278, 279, 0, 0, 0, 806, 0, - 0, 846, 280, 281, 282, 283, 284, 285, 286, 287, - 288, 0, 289, 0, 290, 291, 292, 293, 294, 295, - 0, 296, 297, 298, 299, 0, 0, 300, 301, 302, - 303, 304, 0, 305, 306, 307, 0, 308, 309, 310, - 0, 311, 312, 313, 314, 315, 316, 317, 318, 319, - 0, 320, 0, 321, 322, 323, 324, 0, 325, 0, - 326, 807, 0, 808, 327, 328, 329, 330, 0, 331, - 332, 0, 333, 334, 0, 335, 336, 337, 338, 339, - 809, 340, 341, 342, 343, 0, 344, 345, 346, 347, - 348, 349, 0, 350, 810, 351, 352, 353, 354, 355, - 356, 357, 0, 358, 0, 359, 811, 812, 360, 813, - 361, 362, 363, 364, 365, 0, 0, 366, 367, 814, - 368, 815, 0, 369, 370, 371, 0, 0, 372, 373, - 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, - 384, 385, 386, 387, 388, 816, 389, 390, 391, 392, - 393, 0, 394, 395, 817, 396, 0, 397, 398, 399, - 400, 401, 402, 0, 403, 404, 0, 0, 405, 406, - 407, 0, 0, 408, 409, 818, 410, 819, 411, 412, - 413, 414, 415, 416, 417, 418, 419, 420, 0, 421, - 422, 423, 424, 425, 426, 427, 428, 0, 429, 430, - 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, - 441, 442, 0, 443, 444, 445, 446, 447, 448, 449, - 450, 451, 452, 453, 454, 0, 455, 456, 820, 457, - 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, - 468, 469, 0, 470, 471, 472, 473, 474, 847, 475, - 476, 477, 478, 479, 821, 480, 481, 482, 483, 0, - 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, - 494, 495, 496, 0, 497, 498, 0, 499, 822, 500, - 501, 502, 503, 504, 0, 505, 506, 0, 0, 507, - 508, 509, 510, 511, 0, 512, 513, 514, 515, 516, - 517, 518, 0, 0, 519, 520, 521, 522, 523, 0, - 0, 524, 525, 526, 527, 528, 529, 530, 0, 531, - 823, 532, 533, 534, 535, 0, 0, 536, 0, 0, - 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, - 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, - 845, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 224, 225, 226, 227, 228, - 229, 230, 231, 902, 233, 234, 235, 0, 0, 0, - 0, 0, 0, 0, 236, 237, 0, 238, 239, 240, - 801, 241, 242, 243, 244, 245, 802, 246, 247, 0, - 248, 249, 250, 251, 252, 0, 0, 253, 254, 255, - 256, 257, 0, 258, 259, 260, 261, 262, 0, 803, - 0, 263, 264, 265, 266, 267, 804, 268, 269, 270, - 0, 271, 272, 273, 274, 275, 276, 0, 805, 277, - 278, 279, 0, 0, 0, 806, 0, 0, 846, 280, - 281, 282, 283, 284, 285, 286, 287, 288, 0, 289, - 0, 290, 291, 292, 293, 294, 295, 0, 296, 297, - 298, 299, 0, 0, 300, 301, 302, 303, 304, 0, - 305, 306, 307, 0, 308, 309, 310, 0, 311, 312, - 313, 314, 315, 316, 317, 318, 319, 0, 320, 0, - 321, 322, 323, 324, 0, 325, 0, 326, 807, 0, - 808, 327, 328, 329, 330, 0, 331, 332, 0, 333, - 334, 0, 335, 336, 337, 338, 339, 809, 340, 341, - 342, 343, 0, 344, 345, 346, 347, 348, 349, 0, - 350, 810, 351, 352, 353, 354, 355, 356, 357, 0, - 358, 0, 359, 811, 812, 360, 813, 361, 362, 363, - 364, 365, 0, 0, 366, 367, 814, 368, 815, 0, - 369, 370, 371, 0, 0, 372, 373, 374, 375, 903, + 456, 1269, 458, 459, 460, 461, 462, 0, 463, 464, + 465, 466, 467, 468, 469, 470, 471, 472, 1270, 474, + 475, 476, 477, 0, 478, 479, 480, 481, 482, 483, + 484, 485, 486, 487, 488, 489, 0, 490, 491, 492, + 493, 494, 495, 496, 497, 1271, 499, 500, 501, 502, + 503, 504, 505, 506, 507, 0, 508, 509, 510, 511, + 512, 1272, 513, 514, 515, 516, 517, 518, 519, 520, + 1273, 522, 0, 523, 524, 525, 526, 527, 528, 529, + 530, 531, 532, 533, 534, 535, 1274, 537, 0, 538, + 539, 0, 540, 541, 542, 543, 544, 545, 546, 0, + 547, 1275, 1276, 0, 0, 550, 551, 1277, 553, 1278, + 1279, 555, 556, 557, 558, 559, 560, 561, 562, 0, + 1280, 563, 564, 565, 566, 567, 1281, 0, 568, 569, + 570, 571, 572, 573, 1282, 0, 575, 576, 577, 578, + 579, 580, 0, 0, 581, 0, 0, 582, 583, 584, + 585, 586, 587, 588, 1283, 1284, 1285, 1286, 593, 1287, + 1288, 1289, 1290, 598, 599, 600, 601, 1291, 0, 0, + 0, 0, 0, 1292, 0, 1293, 1294, 0, 0, 0, + 228, 0, 1223, 669, 1296, 1224, 1225, 1226, 729, 1227, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 229, + 230, 231, 232, 233, 234, 235, 236, 0, 237, 238, + 239, 0, 0, 0, 0, 1228, 0, 0, 240, 241, + 0, 242, 243, 244, 245, 246, 247, 248, 249, 1229, + 251, 1230, 1231, 0, 254, 255, 256, 257, 258, 259, + 1232, 1233, 260, 261, 1234, 1235, 264, 0, 265, 266, + 267, 268, 1236, 0, 1237, 0, 271, 272, 273, 274, + 275, 276, 277, 278, 279, 0, 280, 281, 282, 283, + 284, 285, 0, 286, 287, 4905, 289, 1238, 1239, 1240, + 1241, 1242, 1243, 1244, 291, 292, 293, 294, 295, 296, + 1245, 1246, 299, 1247, 300, 0, 301, 302, 303, 304, + 305, 306, 0, 307, 308, 309, 310, 0, 0, 311, + 312, 1078, 314, 315, 0, 316, 317, 318, 0, 319, + 320, 321, 0, 322, 323, 324, 325, 1248, 327, 328, + 329, 330, 1249, 1250, 332, 0, 333, 334, 1251, 336, + 0, 337, 0, 338, 339, 0, 340, 341, 342, 343, + 344, 0, 345, 1252, 0, 4906, 348, 349, 0, 350, + 351, 352, 353, 354, 355, 356, 357, 358, 359, 0, + 360, 361, 362, 363, 364, 365, 366, 0, 367, 368, + 369, 370, 371, 372, 373, 1254, 1255, 0, 1256, 0, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, - 387, 388, 816, 389, 390, 391, 392, 393, 0, 394, - 395, 817, 396, 0, 397, 398, 399, 400, 401, 402, - 0, 403, 404, 0, 0, 405, 406, 407, 0, 0, - 408, 409, 818, 410, 819, 411, 412, 413, 414, 415, - 416, 417, 418, 419, 420, 0, 421, 422, 423, 424, - 425, 426, 427, 428, 0, 429, 430, 431, 432, 433, - 434, 435, 436, 437, 438, 439, 440, 441, 442, 0, - 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, - 453, 454, 0, 455, 456, 820, 457, 458, 459, 460, - 461, 462, 463, 464, 465, 466, 467, 468, 469, 0, - 470, 471, 472, 473, 474, 847, 475, 476, 477, 478, - 479, 821, 480, 481, 482, 483, 0, 484, 485, 486, - 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, - 0, 497, 498, 0, 499, 822, 500, 501, 502, 503, - 504, 0, 505, 506, 0, 0, 507, 508, 509, 510, - 511, 0, 512, 513, 514, 515, 516, 517, 518, 0, - 0, 519, 520, 521, 522, 523, 0, 0, 524, 525, - 526, 527, 528, 529, 530, 0, 531, 823, 532, 533, - 534, 535, 0, 0, 536, 0, 0, 537, 538, 539, - 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, - 550, 551, 552, 553, 554, 555, 556, 845, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 224, 225, 226, 227, 228, 229, 230, 231, - 0, 233, 234, 235, 0, 0, 0, 0, 0, 0, - 0, 236, 237, 0, 238, 239, 240, 801, 241, 242, - 243, 244, 245, 802, 246, 247, 0, 248, 249, 250, - 251, 252, 0, 0, 253, 254, 255, 256, 257, 0, - 258, 259, 260, 261, 262, 0, 803, 0, 263, 264, - 265, 266, 267, 804, 268, 269, 270, 0, 271, 272, - 273, 274, 275, 276, 0, 805, 277, 278, 279, 0, - 0, 0, 806, 0, 0, 846, 280, 281, 282, 283, - 284, 285, 286, 287, 288, 0, 289, 0, 290, 291, - 292, 293, 294, 295, 0, 296, 297, 298, 299, 0, - 0, 300, 301, 302, 303, 304, 0, 305, 306, 307, - 0, 308, 309, 310, 0, 311, 312, 313, 314, 315, - 316, 317, 318, 319, 0, 320, 0, 321, 322, 323, - 324, 0, 325, 0, 326, 807, 0, 808, 327, 328, - 329, 330, 0, 331, 332, 0, 333, 334, 0, 335, - 336, 337, 338, 339, 809, 340, 341, 342, 343, 0, - 344, 345, 346, 347, 348, 349, 0, 350, 810, 351, - 352, 353, 354, 355, 356, 357, 0, 358, 0, 359, - 811, 812, 360, 813, 361, 362, 363, 364, 365, 0, - 0, 366, 367, 814, 368, 815, 0, 369, 370, 371, - 0, 0, 372, 373, 374, 375, 376, 377, 378, 379, - 380, 381, 382, 383, 384, 385, 386, 387, 388, 816, - 389, 390, 391, 392, 393, 0, 394, 395, 817, 396, - 0, 397, 398, 399, 400, 401, 402, 0, 403, 404, - 0, 0, 405, 406, 407, 0, 0, 408, 409, 818, - 410, 819, 411, 412, 413, 414, 415, 416, 417, 418, - 419, 420, 0, 421, 422, 423, 424, 425, 426, 427, - 428, 0, 429, 430, 431, 432, 433, 434, 435, 436, - 437, 438, 439, 440, 441, 442, 0, 443, 444, 445, - 446, 447, 448, 449, 450, 451, 452, 453, 454, 0, - 455, 456, 820, 457, 458, 459, 460, 461, 462, 463, - 464, 465, 466, 467, 468, 469, 0, 470, 471, 472, - 473, 474, 847, 475, 476, 477, 478, 479, 821, 480, - 481, 482, 483, 0, 484, 485, 486, 487, 488, 489, - 490, 491, 492, 493, 494, 495, 496, 0, 497, 498, - 0, 499, 822, 500, 501, 502, 503, 504, 0, 505, - 506, 0, 0, 507, 508, 509, 510, 511, 0, 512, - 513, 514, 515, 516, 517, 518, 0, 0, 519, 520, - 521, 522, 523, 2347, 0, 524, 525, 526, 527, 528, - 529, 530, 0, 531, 823, 532, 533, 534, 535, 0, - 0, 536, 0, 0, 537, 538, 539, 540, 541, 542, - 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, - 553, 554, 555, 556, 845, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, - 225, 226, 227, 228, 229, 230, 231, 0, 233, 234, - 235, 0, 0, 0, 0, 0, 0, 0, 236, 237, - 0, 238, 239, 240, 801, 241, 242, 243, 244, 245, - 802, 246, 247, 0, 248, 249, 250, 251, 252, 0, - 0, 253, 254, 255, 256, 257, 0, 258, 259, 260, - 261, 262, 0, 803, 0, 263, 264, 265, 266, 267, - 804, 268, 269, 270, 0, 271, 272, 273, 274, 275, - 276, 0, 805, 277, 278, 279, 0, 0, 0, 806, - 0, 0, 846, 280, 281, 282, 283, 284, 285, 286, - 287, 288, 0, 289, 0, 290, 291, 292, 293, 294, - 295, 0, 296, 297, 298, 299, 0, 0, 300, 301, - 302, 303, 304, 0, 305, 306, 307, 0, 308, 309, - 310, 0, 311, 312, 313, 314, 315, 316, 317, 318, - 319, 0, 320, 0, 321, 322, 323, 324, 0, 325, - 0, 326, 807, 0, 808, 327, 328, 329, 330, 0, - 331, 332, 3300, 333, 334, 0, 335, 336, 337, 338, - 339, 809, 340, 341, 342, 343, 0, 344, 345, 346, - 347, 348, 349, 0, 350, 810, 351, 352, 353, 354, - 355, 356, 357, 0, 358, 0, 359, 811, 812, 360, - 813, 361, 362, 363, 364, 365, 0, 0, 366, 367, - 814, 368, 815, 0, 369, 370, 371, 0, 0, 372, - 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, - 383, 384, 385, 386, 387, 388, 816, 389, 390, 391, - 392, 393, 0, 394, 395, 817, 396, 0, 397, 398, - 399, 400, 401, 402, 0, 403, 404, 0, 0, 405, - 406, 407, 0, 0, 408, 409, 818, 410, 819, 411, - 412, 413, 414, 415, 416, 417, 418, 419, 420, 0, - 421, 422, 423, 424, 425, 426, 427, 428, 0, 429, - 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, - 440, 441, 442, 0, 443, 444, 445, 446, 447, 448, - 449, 450, 451, 452, 453, 454, 0, 455, 456, 820, - 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, - 467, 468, 469, 0, 470, 471, 472, 473, 474, 847, - 475, 476, 477, 478, 479, 821, 480, 481, 482, 483, - 0, 484, 485, 486, 487, 488, 489, 490, 491, 492, - 493, 494, 495, 496, 0, 497, 498, 0, 499, 822, - 500, 501, 502, 503, 504, 0, 505, 506, 0, 0, - 507, 508, 509, 510, 511, 0, 512, 513, 514, 515, - 516, 517, 518, 0, 0, 519, 520, 521, 522, 523, - 0, 0, 524, 525, 526, 527, 528, 529, 530, 0, - 531, 823, 532, 533, 534, 535, 0, 0, 536, 0, - 0, 537, 538, 539, 540, 541, 542, 543, 544, 545, - 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, - 556, 845, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 224, 225, 226, 227, - 228, 229, 230, 231, 0, 233, 234, 235, 0, 0, - 0, 0, 0, 0, 0, 236, 237, 0, 238, 239, - 240, 801, 241, 242, 243, 244, 245, 802, 246, 247, - 0, 248, 249, 250, 251, 252, 0, 0, 253, 254, - 255, 256, 257, 0, 258, 259, 260, 261, 262, 0, - 803, 0, 263, 264, 265, 266, 267, 804, 268, 269, - 270, 0, 271, 272, 273, 274, 275, 276, 0, 805, - 277, 278, 279, 0, 0, 0, 806, 0, 0, 846, - 280, 281, 282, 283, 284, 285, 286, 287, 288, 0, - 289, 0, 290, 291, 292, 293, 294, 295, 0, 296, - 297, 298, 299, 0, 0, 300, 301, 302, 303, 304, - 0, 305, 306, 307, 0, 308, 309, 310, 0, 311, - 312, 313, 314, 315, 316, 317, 318, 319, 0, 320, - 0, 321, 322, 323, 324, 0, 325, 0, 326, 807, - 0, 808, 327, 328, 329, 330, 0, 331, 332, 0, - 333, 334, 0, 335, 336, 337, 338, 339, 809, 340, - 341, 342, 343, 0, 344, 345, 346, 347, 348, 349, - 0, 350, 810, 351, 352, 353, 354, 355, 356, 357, - 0, 358, 0, 359, 811, 812, 360, 813, 361, 362, - 363, 364, 365, 0, 0, 366, 367, 814, 368, 815, - 0, 369, 370, 371, 0, 0, 372, 373, 374, 375, - 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, - 386, 387, 388, 816, 389, 390, 391, 392, 393, 0, - 394, 395, 817, 396, 0, 397, 398, 399, 400, 401, - 402, 0, 403, 404, 0, 0, 405, 406, 407, 0, - 0, 408, 409, 818, 410, 819, 411, 412, 413, 414, - 415, 416, 417, 418, 419, 420, 0, 421, 422, 423, - 424, 425, 426, 427, 428, 0, 429, 430, 431, 432, - 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, - 0, 443, 444, 445, 446, 447, 448, 449, 450, 451, - 452, 453, 454, 0, 455, 456, 820, 457, 458, 459, - 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, - 0, 470, 471, 472, 473, 474, 847, 475, 476, 477, - 478, 479, 821, 480, 481, 482, 483, 0, 484, 485, - 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, - 496, 0, 497, 498, 0, 499, 822, 500, 501, 502, - 503, 504, 0, 505, 506, 0, 0, 507, 508, 509, - 510, 511, 0, 512, 513, 514, 515, 516, 517, 518, - 0, 0, 519, 520, 521, 522, 523, 0, 0, 524, - 525, 526, 527, 528, 529, 530, 0, 531, 823, 532, - 533, 534, 535, 0, 0, 536, 0, 0, 537, 538, - 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, - 549, 550, 551, 552, 553, 554, 555, 556, 845, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 224, 225, 226, 227, 228, 229, 230, - 231, 0, 233, 234, 235, 0, 0, 0, 0, 0, - 0, 0, 236, 237, 0, 238, 239, 240, 801, 241, - 242, 243, 244, 245, 802, 246, 247, 0, 248, 249, - 250, 251, 252, 0, 0, 253, 254, 255, 256, 257, - 0, 258, 259, 260, 261, 262, 0, 803, 0, 263, - 264, 265, 266, 267, 804, 268, 269, 270, 0, 271, - 272, 273, 274, 275, 276, 0, 805, 277, 278, 279, - 0, 0, 0, 806, 0, 0, 846, 280, 281, 282, - 283, 284, 285, 286, 287, 288, 0, 289, 0, 290, - 291, 292, 293, 294, 295, 0, 296, 297, 298, 299, - 0, 0, 300, 301, 302, 303, 304, 0, 305, 306, - 307, 0, 308, 309, 310, 0, 311, 312, 313, 314, - 315, 316, 317, 318, 319, 0, 320, 0, 321, 322, - 323, 324, 0, 325, 0, 326, 807, 0, 808, 327, - 328, 329, 330, 0, 331, 332, 0, 333, 334, 0, - 335, 336, 337, 338, 339, 809, 340, 341, 342, 343, - 0, 344, 345, 346, 347, 348, 349, 0, 350, 810, - 351, 352, 353, 354, 355, 356, 357, 0, 358, 0, - 359, 811, 812, 360, 813, 361, 362, 363, 364, 365, - 0, 0, 366, 367, 814, 368, 815, 0, 369, 370, - 371, 0, 0, 372, 373, 374, 375, 1001, 377, 378, - 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, - 816, 389, 390, 391, 392, 393, 0, 394, 395, 817, - 396, 0, 397, 398, 399, 400, 401, 402, 0, 403, - 404, 0, 0, 405, 406, 407, 0, 0, 408, 409, - 818, 410, 819, 411, 412, 413, 414, 415, 416, 417, - 418, 419, 420, 0, 421, 422, 423, 424, 425, 426, - 427, 428, 0, 429, 430, 431, 432, 433, 434, 435, - 436, 437, 438, 439, 440, 441, 442, 0, 443, 444, - 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, - 0, 455, 456, 820, 457, 458, 459, 460, 461, 462, - 463, 464, 465, 466, 467, 468, 469, 0, 470, 471, - 472, 473, 474, 847, 475, 476, 477, 478, 479, 821, - 480, 481, 482, 483, 0, 484, 485, 486, 487, 488, - 489, 490, 491, 492, 493, 494, 495, 496, 0, 497, - 498, 0, 499, 822, 500, 501, 502, 503, 504, 0, - 505, 506, 0, 0, 507, 508, 509, 510, 511, 0, - 512, 513, 514, 515, 516, 517, 518, 0, 0, 519, - 520, 521, 522, 523, 0, 0, 524, 525, 526, 527, - 528, 529, 530, 0, 531, 823, 532, 533, 534, 535, - 0, 0, 536, 0, 0, 537, 538, 539, 540, 541, - 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, - 552, 553, 554, 555, 556, 845, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 224, 225, 226, 227, 228, 229, 230, 231, 0, 233, - 234, 235, 0, 0, 0, 0, 0, 0, 0, 236, - 237, 0, 238, 239, 240, 801, 241, 242, 243, 244, - 245, 802, 246, 247, 0, 248, 249, 250, 251, 252, - 0, 0, 253, 254, 255, 256, 257, 0, 258, 259, - 260, 261, 262, 0, 803, 0, 263, 264, 265, 266, - 267, 804, 268, 269, 270, 0, 271, 272, 273, 274, - 275, 276, 0, 805, 277, 278, 279, 0, 0, 0, - 806, 0, 0, 846, 280, 281, 282, 283, 284, 285, - 286, 287, 288, 0, 289, 0, 290, 291, 292, 293, - 294, 295, 0, 296, 297, 298, 299, 0, 0, 300, - 301, 302, 303, 304, 0, 305, 306, 307, 0, 308, - 309, 310, 0, 311, 312, 313, 314, 315, 316, 317, - 318, 319, 0, 320, 0, 321, 322, 323, 324, 0, - 325, 0, 326, 807, 0, 808, 327, 328, 329, 330, - 0, 331, 332, 0, 333, 334, 0, 335, 336, 337, - 338, 1076, 809, 340, 341, 342, 343, 0, 344, 345, - 346, 347, 348, 349, 0, 350, 810, 351, 352, 353, - 354, 355, 356, 357, 0, 358, 0, 359, 811, 812, - 360, 813, 361, 362, 363, 364, 365, 0, 0, 366, - 367, 814, 368, 815, 0, 369, 370, 371, 0, 0, - 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, - 382, 383, 384, 385, 386, 387, 388, 816, 389, 390, - 391, 392, 393, 0, 394, 395, 817, 396, 0, 397, - 398, 399, 400, 401, 402, 0, 403, 404, 0, 0, - 405, 406, 407, 0, 0, 408, 409, 818, 410, 819, - 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, - 0, 421, 422, 423, 424, 425, 426, 427, 428, 0, - 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, - 439, 440, 441, 442, 0, 443, 444, 445, 446, 447, - 448, 449, 450, 451, 452, 453, 454, 0, 455, 456, - 820, 457, 458, 459, 460, 461, 462, 463, 464, 465, - 466, 467, 468, 469, 0, 470, 471, 472, 473, 474, - 847, 475, 476, 477, 478, 479, 821, 480, 481, 482, - 483, 0, 484, 485, 486, 487, 488, 489, 490, 491, - 492, 493, 494, 495, 496, 0, 497, 498, 0, 499, - 822, 500, 501, 502, 503, 504, 0, 505, 506, 0, - 0, 507, 508, 509, 510, 511, 0, 512, 513, 514, - 515, 516, 517, 518, 0, 0, 519, 520, 521, 522, - 523, 0, 0, 524, 525, 526, 527, 528, 529, 530, - 0, 531, 823, 532, 533, 534, 535, 0, 0, 536, - 0, 0, 537, 538, 539, 540, 541, 542, 543, 544, - 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, - 555, 556, 845, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 224, 225, 226, - 227, 228, 229, 230, 231, 0, 233, 234, 235, 0, - 0, 0, 0, 0, 0, 0, 236, 237, 0, 238, - 239, 240, 801, 241, 242, 243, 244, 245, 802, 246, - 247, 0, 248, 249, 250, 251, 252, 0, 0, 253, - 254, 255, 256, 257, 0, 258, 259, 260, 261, 262, - 0, 803, 0, 263, 264, 265, 266, 267, 804, 268, - 269, 270, 0, 271, 272, 273, 274, 275, 276, 0, - 805, 277, 278, 279, 0, 0, 0, 806, 0, 0, - 846, 280, 281, 282, 283, 284, 285, 286, 287, 288, - 0, 289, 0, 290, 291, 292, 293, 294, 295, 0, - 296, 297, 298, 299, 0, 0, 300, 301, 302, 303, - 304, 0, 305, 306, 307, 0, 308, 309, 310, 0, - 311, 312, 313, 314, 315, 316, 317, 318, 319, 0, - 320, 0, 321, 322, 323, 324, 0, 325, 0, 326, - 807, 0, 808, 327, 328, 329, 330, 0, 331, 332, - 0, 333, 334, 0, 335, 336, 337, 338, 1087, 809, - 340, 341, 342, 343, 0, 344, 345, 346, 347, 348, - 349, 0, 350, 810, 351, 352, 353, 354, 355, 356, - 357, 0, 358, 0, 359, 811, 812, 360, 813, 361, - 362, 363, 364, 365, 0, 0, 366, 367, 814, 368, - 815, 0, 369, 370, 371, 0, 0, 372, 373, 374, - 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, - 385, 386, 387, 388, 816, 389, 390, 391, 392, 393, - 0, 394, 395, 817, 396, 0, 397, 398, 399, 400, - 401, 402, 0, 403, 404, 0, 0, 405, 406, 407, - 0, 0, 408, 409, 818, 410, 819, 411, 412, 413, - 414, 415, 416, 417, 418, 419, 420, 0, 421, 422, - 423, 424, 425, 426, 427, 428, 0, 429, 430, 431, - 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, - 442, 0, 443, 444, 445, 446, 447, 448, 449, 450, - 451, 452, 453, 454, 0, 455, 456, 820, 457, 458, - 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, - 469, 0, 470, 471, 472, 473, 474, 847, 475, 476, - 477, 478, 479, 821, 480, 481, 482, 483, 0, 484, - 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, - 495, 496, 0, 497, 498, 0, 499, 822, 500, 501, - 502, 503, 504, 0, 505, 506, 0, 0, 507, 508, - 509, 510, 511, 0, 512, 513, 514, 515, 516, 517, - 518, 0, 0, 519, 520, 521, 522, 523, 0, 0, - 524, 525, 526, 527, 528, 529, 530, 0, 531, 823, - 532, 533, 534, 535, 0, 0, 536, 0, 0, 537, - 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, - 548, 549, 550, 551, 552, 553, 554, 555, 556, 845, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 224, 225, 226, 227, 228, 229, - 230, 231, 0, 233, 234, 235, 0, 0, 0, 0, - 0, 0, 0, 236, 237, 0, 238, 239, 240, 801, - 241, 242, 243, 244, 245, 802, 246, 247, 0, 248, - 249, 250, 251, 252, 0, 0, 253, 254, 255, 256, - 257, 0, 258, 259, 260, 261, 262, 0, 803, 0, - 263, 264, 265, 266, 267, 804, 268, 269, 270, 0, - 271, 272, 273, 274, 275, 276, 0, 805, 277, 278, - 279, 0, 0, 0, 806, 0, 0, 846, 280, 281, - 282, 283, 284, 285, 286, 287, 288, 0, 289, 0, - 290, 291, 292, 293, 294, 295, 0, 296, 297, 298, - 299, 0, 0, 300, 301, 302, 303, 304, 0, 305, - 306, 307, 0, 308, 309, 310, 0, 311, 312, 313, - 314, 315, 316, 317, 318, 319, 0, 320, 0, 321, - 322, 323, 324, 0, 325, 0, 326, 807, 0, 808, - 327, 328, 329, 330, 0, 331, 332, 0, 333, 334, - 0, 335, 336, 337, 338, 1097, 809, 340, 341, 342, - 343, 0, 344, 345, 346, 347, 348, 349, 0, 350, - 810, 351, 352, 353, 354, 355, 356, 357, 0, 358, - 0, 359, 811, 812, 360, 813, 361, 362, 363, 364, - 365, 0, 0, 366, 367, 814, 368, 815, 0, 369, - 370, 371, 0, 0, 372, 373, 374, 375, 1098, 377, - 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, - 388, 816, 389, 390, 391, 392, 393, 0, 394, 395, - 817, 396, 0, 397, 398, 399, 400, 401, 402, 0, - 403, 404, 0, 0, 405, 406, 407, 0, 0, 408, - 409, 818, 410, 819, 411, 412, 413, 414, 415, 416, - 417, 418, 419, 420, 0, 421, 422, 423, 424, 425, - 426, 427, 428, 0, 429, 430, 431, 432, 433, 434, - 435, 436, 437, 438, 439, 440, 441, 442, 0, 443, - 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, - 454, 0, 455, 456, 820, 457, 458, 459, 460, 461, - 462, 463, 464, 465, 466, 467, 468, 469, 0, 470, - 471, 472, 473, 474, 847, 475, 476, 477, 478, 479, - 821, 480, 481, 482, 483, 0, 484, 485, 486, 487, - 488, 489, 490, 491, 492, 493, 494, 495, 496, 0, - 497, 498, 0, 499, 822, 500, 501, 502, 503, 504, - 0, 505, 506, 0, 0, 507, 508, 509, 510, 511, - 0, 512, 513, 514, 515, 516, 517, 518, 0, 0, - 519, 520, 521, 522, 523, 0, 0, 524, 525, 526, - 527, 528, 529, 530, 0, 531, 823, 532, 533, 534, - 535, 0, 0, 536, 0, 0, 537, 538, 539, 540, - 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, - 551, 552, 553, 554, 555, 556, 845, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 224, 225, 226, 227, 228, 229, 230, 231, 0, - 233, 234, 235, 3, 4, 0, 0, 0, 0, 0, - 236, 237, 0, 238, 239, 240, 801, 241, 242, 243, - 244, 245, 802, 246, 247, 0, 248, 249, 250, 251, - 252, 0, 0, 253, 254, 255, 256, 257, 0, 258, - 259, 260, 261, 262, 0, 803, 0, 263, 264, 265, - 266, 267, 804, 268, 269, 270, 0, 271, 272, 273, - 274, 275, 276, 0, 805, 277, 278, 279, 0, 0, - 0, 806, 0, 0, 0, 280, 281, 282, 283, 284, - 285, 286, 287, 288, 0, 289, 0, 290, 291, 292, - 293, 294, 295, 0, 296, 297, 298, 299, 0, 0, - 300, 301, 302, 303, 304, 0, 305, 306, 307, 0, - 308, 309, 310, 0, 311, 312, 313, 314, 315, 316, - 317, 318, 319, 0, 320, 0, 321, 322, 323, 324, - 0, 325, 0, 326, 807, 0, 808, 327, 328, 329, - 330, 0, 331, 332, 0, 333, 334, 0, 335, 336, - 337, 338, 339, 809, 340, 341, 342, 343, 0, 344, - 345, 346, 347, 348, 349, 0, 350, 810, 351, 352, - 353, 354, 355, 356, 357, 0, 358, 0, 359, 811, - 812, 360, 813, 361, 362, 363, 364, 365, 0, 0, - 366, 367, 814, 368, 815, 0, 369, 370, 371, 0, - 0, 372, 373, 374, 375, 376, 377, 378, 379, 380, - 381, 382, 383, 384, 385, 386, 387, 388, 816, 389, - 390, 391, 392, 393, 0, 394, 395, 817, 396, 0, - 397, 398, 399, 400, 401, 402, 0, 403, 404, 0, - 0, 405, 406, 407, 0, 0, 408, 409, 818, 410, - 819, 411, 412, 413, 414, 415, 416, 417, 418, 419, - 420, 0, 421, 422, 423, 424, 425, 426, 427, 428, - 0, 429, 430, 431, 432, 433, 434, 435, 436, 437, - 438, 439, 440, 441, 442, 0, 443, 444, 445, 446, + 0, 0, 387, 1257, 389, 390, 391, 0, 392, 393, + 394, 1258, 1259, 395, 396, 397, 398, 399, 400, 401, + 402, 403, 404, 405, 406, 407, 408, 409, 410, 1260, + 412, 1261, 414, 415, 416, 417, 418, 419, 420, 421, + 1262, 423, 1263, 424, 425, 426, 427, 1264, 1265, 429, + 1266, 431, 432, 433, 0, 434, 435, 0, 0, 1267, + 437, 438, 0, 0, 439, 440, 441, 442, 443, 444, + 1268, 446, 447, 448, 449, 450, 451, 452, 453, 454, + 0, 455, 456, 1269, 458, 459, 460, 461, 462, 0, + 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, + 1270, 474, 475, 476, 477, 0, 478, 479, 480, 481, + 482, 483, 484, 485, 486, 487, 488, 489, 0, 490, + 491, 492, 493, 494, 4907, 496, 497, 1271, 499, 500, + 501, 502, 503, 504, 505, 506, 507, 0, 508, 509, + 510, 511, 512, 1272, 513, 514, 515, 516, 517, 518, + 519, 520, 1273, 522, 0, 523, 524, 525, 526, 527, + 528, 529, 530, 531, 532, 533, 534, 535, 1274, 537, + 0, 538, 539, 0, 540, 541, 542, 543, 544, 545, + 546, 0, 547, 1275, 1276, 0, 0, 550, 551, 1277, + 553, 1278, 1279, 555, 556, 557, 558, 559, 560, 561, + 562, 0, 1280, 563, 564, 565, 566, 567, 1281, 0, + 568, 569, 570, 571, 572, 573, 1282, 0, 575, 576, + 577, 578, 579, 580, 0, 0, 581, 0, 0, 582, + 583, 584, 585, 586, 587, 588, 1283, 1284, 1285, 1286, + 593, 1287, 1288, 1289, 1290, 598, 599, 600, 601, 1291, + 0, 0, 0, 0, 0, 1292, 0, 1293, 1294, 0, + 0, 0, 228, 0, 1223, 669, 4908, 1224, 1225, 1226, + 729, 1227, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 229, 230, 231, 232, 233, 234, 235, 236, 0, + 237, 238, 239, 0, 0, 0, 0, 1228, 0, 0, + 240, 241, 0, 242, 243, 244, 245, 246, 247, 248, + 5378, 1229, 251, 1230, 1231, 0, 254, 255, 256, 257, + 258, 259, 1232, 1233, 260, 261, 1234, 1235, 264, 0, + 265, 266, 267, 268, 1236, 0, 1237, 0, 271, 272, + 273, 274, 275, 276, 277, 278, 279, 0, 280, 281, + 282, 283, 284, 285, 0, 286, 287, 288, 5379, 1238, + 1239, 1240, 1241, 1242, 1243, 1244, 291, 292, 293, 294, + 295, 296, 1245, 1246, 299, 1247, 300, 0, 301, 302, + 303, 304, 305, 306, 0, 307, 308, 309, 310, 0, + 0, 311, 312, 1078, 314, 315, 0, 316, 317, 318, + 0, 319, 320, 321, 0, 322, 323, 324, 325, 1248, + 327, 328, 329, 330, 1249, 1250, 332, 0, 333, 334, + 1251, 336, 0, 337, 0, 338, 339, 0, 340, 341, + 342, 343, 344, 0, 345, 1252, 0, 1253, 348, 349, + 0, 350, 351, 352, 353, 354, 355, 356, 357, 358, + 359, 0, 360, 361, 362, 363, 364, 365, 366, 0, + 367, 368, 369, 370, 371, 372, 373, 1254, 1255, 0, + 1256, 0, 377, 378, 379, 380, 381, 382, 383, 384, + 385, 386, 0, 0, 387, 1257, 389, 390, 391, 0, + 392, 393, 394, 1258, 1259, 395, 396, 397, 398, 399, + 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, + 410, 1260, 412, 1261, 414, 415, 416, 417, 418, 419, + 420, 421, 1262, 423, 1263, 424, 425, 426, 427, 1264, + 1265, 429, 1266, 431, 432, 433, 0, 434, 435, 0, + 0, 1267, 437, 438, 0, 0, 439, 440, 441, 442, + 443, 444, 1268, 446, 447, 448, 449, 450, 451, 452, + 453, 454, 0, 455, 456, 1269, 458, 459, 460, 461, + 462, 0, 463, 464, 465, 466, 467, 468, 469, 470, + 471, 472, 1270, 474, 475, 476, 477, 0, 478, 479, + 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, + 0, 490, 491, 492, 493, 494, 495, 496, 497, 1271, + 499, 500, 501, 502, 503, 504, 505, 506, 507, 0, + 508, 509, 510, 511, 512, 1272, 513, 514, 515, 516, + 517, 518, 519, 520, 1273, 522, 0, 523, 524, 525, + 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, + 1274, 537, 0, 538, 539, 0, 540, 541, 542, 543, + 544, 545, 546, 0, 547, 1275, 1276, 0, 0, 550, + 551, 1277, 553, 1278, 1279, 555, 556, 557, 558, 559, + 5380, 561, 562, 0, 1280, 563, 564, 565, 566, 567, + 1281, 0, 568, 569, 570, 571, 572, 573, 1282, 0, + 575, 576, 577, 578, 579, 580, 0, 0, 581, 0, + 0, 582, 583, 584, 585, 586, 587, 588, 1283, 1284, + 1285, 1286, 593, 1287, 1288, 1289, 1290, 598, 599, 600, + 601, 1291, 0, 0, 0, 0, 0, 1292, 0, 1293, + 1294, 0, 0, 0, 228, 0, 1223, 669, 1296, 1224, + 1225, 1226, 729, 1227, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 229, 230, 231, 232, 233, 234, 235, + 236, 0, 237, 238, 239, 0, 0, 0, 0, 1228, + 0, 0, 240, 241, 0, 242, 243, 244, 245, 246, + 247, 248, 249, 1229, 251, 1230, 1231, 0, 254, 255, + 256, 257, 258, 259, 1232, 1233, 260, 261, 1234, 1235, + 264, 0, 265, 266, 267, 268, 1236, 0, 1237, 0, + 271, 272, 273, 274, 275, 276, 277, 278, 279, 0, + 280, 281, 282, 283, 284, 285, 0, 286, 287, 288, + 5379, 1238, 1239, 1240, 1241, 1242, 1243, 1244, 291, 292, + 293, 294, 295, 296, 1245, 1246, 299, 1247, 300, 0, + 301, 302, 303, 304, 305, 306, 0, 307, 308, 309, + 310, 0, 0, 311, 312, 1078, 314, 315, 0, 316, + 317, 318, 0, 319, 320, 321, 0, 322, 323, 324, + 325, 1248, 327, 328, 329, 330, 1249, 1250, 332, 0, + 333, 334, 1251, 336, 0, 337, 0, 338, 339, 0, + 340, 341, 342, 343, 344, 0, 345, 1252, 0, 1253, + 348, 349, 0, 350, 351, 352, 353, 354, 355, 356, + 357, 358, 359, 0, 360, 361, 362, 363, 364, 365, + 366, 0, 367, 368, 369, 370, 371, 372, 373, 1254, + 1255, 0, 1256, 0, 377, 378, 379, 380, 381, 382, + 383, 384, 385, 386, 0, 0, 387, 1257, 389, 390, + 391, 0, 392, 393, 394, 1258, 1259, 395, 396, 397, + 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, + 408, 409, 410, 1260, 412, 1261, 414, 415, 416, 417, + 418, 419, 420, 421, 1262, 423, 1263, 424, 425, 426, + 427, 1264, 1265, 429, 1266, 431, 432, 433, 0, 434, + 435, 0, 0, 1267, 437, 438, 0, 0, 439, 440, + 441, 442, 443, 444, 1268, 446, 447, 448, 449, 450, + 451, 452, 453, 454, 0, 455, 456, 1269, 458, 459, + 460, 461, 462, 0, 463, 464, 465, 466, 467, 468, + 469, 470, 471, 472, 1270, 474, 475, 476, 477, 0, + 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, + 488, 489, 0, 490, 491, 492, 493, 494, 495, 496, + 497, 1271, 499, 500, 501, 502, 503, 504, 505, 506, + 507, 0, 508, 509, 510, 511, 512, 1272, 513, 514, + 515, 516, 517, 518, 519, 520, 1273, 522, 0, 523, + 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, + 534, 535, 1274, 537, 0, 538, 539, 0, 540, 541, + 542, 543, 544, 545, 546, 0, 547, 1275, 1276, 0, + 0, 550, 551, 1277, 553, 1278, 1279, 555, 556, 557, + 558, 559, 5380, 561, 562, 0, 1280, 563, 564, 565, + 566, 567, 1281, 0, 568, 569, 570, 571, 572, 573, + 1282, 0, 575, 576, 577, 578, 579, 580, 0, 0, + 581, 0, 0, 582, 583, 584, 585, 586, 587, 588, + 1283, 1284, 1285, 1286, 593, 1287, 1288, 1289, 1290, 598, + 599, 600, 601, 1291, 0, 0, 0, 0, 0, 1292, + 0, 1293, 1294, 0, 0, 0, 228, 0, 1223, 669, + 1296, 1224, 1225, 1226, 729, 1227, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 229, 230, 231, 232, 233, + 234, 235, 236, 0, 237, 238, 239, 0, 0, 0, + 0, 1228, 0, 0, 240, 241, 0, 242, 243, 244, + 245, 246, 247, 248, 249, 1229, 251, 1230, 1231, 0, + 254, 255, 256, 257, 258, 259, 1232, 1233, 260, 261, + 1234, 1235, 264, 0, 265, 266, 267, 268, 1236, 0, + 1237, 0, 271, 272, 273, 274, 275, 276, 277, 278, + 279, 0, 280, 281, 282, 283, 284, 285, 0, 286, + 287, 288, 289, 1238, 1239, 1240, 1241, 1242, 1243, 1244, + 291, 292, 293, 294, 295, 296, 1245, 1246, 299, 5103, + 300, 0, 301, 302, 303, 304, 305, 306, 0, 307, + 308, 309, 310, 0, 0, 311, 312, 1078, 314, 315, + 0, 316, 317, 318, 0, 319, 320, 321, 0, 322, + 323, 324, 325, 1248, 327, 328, 329, 330, 1249, 1250, + 332, 0, 333, 334, 1251, 336, 0, 337, 0, 338, + 339, 0, 340, 341, 342, 343, 344, 0, 345, 1252, + 0, 1253, 348, 349, 0, 350, 351, 352, 353, 354, + 355, 356, 357, 358, 359, 0, 360, 361, 362, 363, + 364, 365, 366, 0, 367, 368, 369, 370, 371, 372, + 373, 1254, 1255, 0, 1256, 0, 377, 378, 379, 380, + 381, 382, 383, 384, 385, 386, 0, 0, 387, 1257, + 389, 390, 391, 0, 392, 393, 394, 1258, 1259, 395, + 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, + 406, 407, 408, 409, 410, 1260, 412, 1261, 414, 415, + 416, 417, 418, 419, 420, 421, 1262, 423, 0, 424, + 425, 426, 427, 1264, 1265, 429, 1266, 431, 432, 433, + 0, 434, 435, 0, 0, 1267, 437, 438, 0, 0, + 439, 440, 441, 442, 443, 444, 1268, 446, 447, 448, + 449, 450, 451, 452, 453, 454, 0, 455, 456, 1269, + 458, 459, 460, 461, 462, 0, 463, 464, 465, 466, + 467, 468, 469, 470, 471, 472, 1270, 474, 475, 476, + 477, 0, 478, 479, 480, 481, 482, 483, 484, 485, + 486, 487, 488, 489, 0, 490, 491, 492, 493, 494, + 495, 496, 497, 2796, 499, 500, 501, 502, 503, 504, + 505, 506, 507, 0, 508, 509, 510, 511, 512, 1272, + 513, 514, 515, 516, 517, 518, 519, 520, 1273, 522, + 0, 523, 524, 525, 526, 527, 528, 529, 530, 531, + 532, 533, 534, 535, 1274, 537, 0, 538, 539, 0, + 540, 541, 542, 543, 544, 545, 546, 0, 547, 1275, + 1276, 0, 0, 550, 551, 1277, 553, 1278, 1279, 555, + 556, 557, 558, 559, 560, 561, 562, 0, 0, 563, + 564, 565, 566, 567, 1281, 0, 568, 569, 570, 571, + 572, 573, 1282, 0, 575, 576, 577, 578, 579, 580, + 0, 0, 581, 0, 0, 582, 583, 584, 585, 586, + 587, 588, 1283, 1284, 1285, 1286, 593, 1287, 1288, 1289, + 1290, 598, 599, 600, 601, 0, 0, 0, 0, 0, + 0, 1292, 0, 2797, 2798, 0, 0, 0, 228, 0, + 1223, 669, 2799, 1224, 1225, 1226, 729, 1227, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 229, 230, 231, + 232, 233, 234, 235, 236, 0, 237, 238, 239, 0, + 0, 0, 0, 1228, 0, 0, 240, 241, 0, 242, + 243, 244, 245, 246, 247, 248, -2695, 1229, 251, 1230, + 1231, 0, 254, 255, 256, 257, 258, 259, 1232, 1233, + 260, 261, 1234, 1235, 264, 0, 265, 266, 267, 268, + 1236, 0, 1237, 0, 271, 272, 273, 274, 275, 276, + 277, 278, 279, 0, 280, 281, 282, 283, 284, 285, + 0, 286, 287, 288, 5379, 1238, 1239, 1240, 1241, 1242, + 1243, 1244, 291, 292, 293, 294, 295, 296, 1245, 1246, + 299, 1247, 300, 0, 301, 302, 303, 304, 305, 306, + 0, 307, 308, 309, 310, 0, 0, 311, 312, 1078, + 314, 315, 0, 316, 317, 318, 0, 319, 320, 321, + 0, 322, 323, 324, 325, 1248, 327, 328, 329, 330, + 1249, 1250, 332, 0, 333, 334, 1251, 336, 0, 337, + 0, 338, 339, 0, 340, 341, 342, 343, 344, 0, + 345, 1252, 0, 1253, 348, 349, 0, 350, 351, 352, + 353, 354, -2695, 356, 357, 358, 359, 0, 360, 361, + 362, 363, 364, 365, 366, 0, 367, 368, 369, 370, + 371, 372, 373, 1254, 1255, 0, 1256, 0, 377, 0, + 0, 380, 381, 382, 383, 384, 385, 386, 0, 0, + 387, 1257, 389, 390, -2695, 0, 392, 393, 394, 1258, + 1259, 395, 396, 397, 398, 399, 400, 401, 402, 403, + 404, 405, 406, 407, 408, 409, 410, 1260, 412, 1261, + 414, 415, 416, 417, 418, 419, 420, 421, 1262, 423, + 1263, 424, 425, 0, 427, 1264, 1265, 429, 1266, 431, + 432, 433, 0, 434, 435, 0, 0, 1267, 437, 438, + 0, 0, 439, 440, 441, 442, 443, 444, 1268, 446, 447, 448, 449, 450, 451, 452, 453, 454, 0, 455, - 456, 820, 457, 458, 459, 460, 461, 462, 463, 464, - 465, 466, 467, 468, 469, 0, 470, 471, 472, 473, - 474, 0, 475, 476, 477, 478, 479, 821, 480, 481, - 482, 483, 0, 484, 485, 486, 487, 488, 489, 490, - 491, 492, 493, 494, 495, 496, 0, 497, 498, 0, - 499, 822, 500, 501, 502, 503, 504, 0, 505, 506, - 0, 0, 507, 508, 509, 510, 511, 0, 512, 513, - 514, 515, 516, 517, 518, 0, 0, 519, 520, 521, - 522, 523, 0, 0, 524, 525, 526, 527, 528, 529, - 530, 0, 531, 823, 532, 533, 534, 535, 0, 0, - 536, 0, 0, 537, 538, 539, 540, 541, 542, 543, - 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, - 554, 555, 556, 845, 0, 617, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 224, 225, - 226, 227, 228, 229, 230, 231, 0, 233, 234, 235, - 0, 0, 0, 0, 0, 0, 0, 236, 237, 0, - 238, 239, 240, 801, 241, 242, 243, 244, 245, 802, - 246, 247, 0, 248, 249, 250, 251, 252, 0, 0, - 253, 254, 255, 256, 257, 0, 258, 259, 260, 261, - 262, 0, 803, 0, 263, 264, 265, 266, 267, 804, - 268, 269, 270, 0, 271, 272, 273, 274, 275, 276, - 0, 805, 277, 278, 279, 0, 0, 0, 806, 0, - 0, 0, 280, 281, 282, 283, 284, 285, 286, 287, - 288, 0, 289, 0, 290, 291, 292, 293, 294, 295, - 0, 296, 297, 298, 299, 0, 0, 300, 301, 302, - 303, 304, 0, 305, 306, 307, 0, 308, 309, 310, - 0, 311, 312, 313, 314, 315, 316, 317, 318, 319, - 0, 320, 0, 321, 322, 323, 324, 0, 325, 0, - 326, 807, 0, 808, 327, 328, 329, 330, 0, 331, - 332, 0, 333, 334, 0, 335, 336, 337, 338, 339, - 809, 340, 341, 342, 343, 0, 344, 345, 346, 347, - 348, 349, 0, 350, 810, 351, 352, 353, 354, 355, - 356, 357, 0, 358, 0, 359, 811, 812, 360, 813, - 361, 362, 363, 364, 365, 0, 0, 366, 367, 814, - 368, 815, 0, 369, 370, 371, 0, 0, 372, 373, - 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, - 384, 385, 386, 387, 388, 816, 389, 390, 391, 392, - 393, 0, 394, 395, 817, 396, 0, 397, 398, 399, - 400, 401, 402, 0, 403, 404, 0, 0, 405, 406, - 407, 0, 0, 408, 409, 818, 410, 819, 411, 412, - 413, 414, 415, 416, 417, 418, 419, 420, 0, 421, - 422, 423, 424, 425, 426, 427, 428, 0, 429, 430, - 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, - 441, 442, 0, 443, 444, 445, 446, 447, 448, 449, - 450, 451, 452, 453, 454, 0, 455, 456, 820, 457, - 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, - 468, 469, 0, 470, 471, 472, 473, 474, 0, 475, - 476, 477, 478, 479, 821, 480, 481, 482, 483, 0, - 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, - 494, 495, 496, 0, 497, 498, 0, 499, 822, 500, - 501, 502, 503, 504, 0, 505, 506, 0, 0, 507, - 508, 509, 510, 511, 0, 512, 513, 514, 515, 516, - 517, 518, 0, 0, 519, 520, 521, 522, 523, 0, - 0, 524, 525, 526, 527, 528, 529, 530, 0, 531, - 823, 532, 533, 534, 535, 0, 0, 536, 0, 0, - 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, - 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, - 845, 0, 617, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 224, 225, 226, 227, 228, - 229, 230, 231, 0, 233, 234, 235, 0, 0, 0, - 0, 0, 0, 0, 236, 237, 0, 238, 239, 240, - 801, 241, 242, 243, 244, 245, 802, 246, 247, 0, - 248, 249, 250, 251, 252, 0, 0, 253, 254, 255, - 256, 257, 0, 258, 259, 260, 261, 262, 0, 803, - 0, 263, 264, 265, 266, 267, 804, 268, 269, 270, - 0, 271, 272, 273, 274, 275, 276, 0, 805, 277, - 278, 279, 0, 0, 0, 806, 0, 0, 0, 280, - 281, 282, 283, 284, 285, 286, 287, 288, 0, 289, - 0, 290, 291, 292, 293, 294, 295, 0, 296, 297, - 298, 299, 0, 0, 300, 301, 302, 303, 304, 0, - 305, 306, 307, 0, 308, 309, 310, 0, 311, 312, - 313, 314, 315, 316, 317, 318, 319, 0, 320, 0, - 321, 322, 323, 324, 0, 325, 0, 326, 807, 0, - 808, 327, 328, 329, 330, 0, 331, 332, 0, 333, - 334, 0, 335, 336, 337, 338, 1748, 809, 340, 341, - 342, 343, 0, 344, 345, 346, 347, 348, 349, 0, - 350, 810, 351, 352, 353, 354, 355, 356, 357, 0, - 358, 0, 359, 811, 812, 360, 813, 361, 362, 363, - 364, 365, 0, 0, 366, 367, 814, 368, 815, 0, - 369, 370, 371, 0, 0, 372, 373, 374, 375, 376, + 456, 1269, 458, 459, 460, 461, 462, 0, 463, 464, + 465, 466, 467, 468, 469, 470, 471, 472, 1270, 474, + 475, 476, 477, 0, 478, 479, 480, 481, 482, 483, + 484, 485, 486, 487, 488, 489, 0, 490, 491, 492, + 493, 494, 495, 496, 497, 1271, 499, 500, 501, 502, + 503, 504, 505, 506, 507, 0, 508, 509, 510, 511, + 512, 1272, 513, 514, 515, 516, 517, -2695, 519, 520, + 1273, 522, 0, 523, 524, 525, 526, 527, 528, 529, + 530, 531, 532, 533, 534, 535, 1274, 537, 0, 538, + 539, 0, 540, 541, 542, 543, 544, 545, 546, 0, + 547, 1275, 1276, 0, 0, 550, 551, 1277, 553, 1278, + 1279, 555, 556, 557, 558, 559, 5380, 561, 562, 0, + 1280, 563, 564, 565, 566, 567, 1281, 0, 568, 569, + 570, 571, 572, 573, 1282, 0, 575, 576, 577, 578, + 579, 580, 0, 0, 581, 0, 0, 582, 583, 584, + 585, 586, 587, 588, 1283, 1284, 1285, 1286, 593, 1287, + 1288, 1289, 1290, 598, 599, 600, 601, -2695, 0, 0, + 0, 0, 0, 1292, 0, 1293, 1294, 0, 0, 0, + 228, 0, 1223, 669, 1296, 1224, 1225, 1226, 729, 1227, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 229, + 230, 231, 232, 233, 234, 235, 236, 0, 237, 238, + 239, 0, 0, 0, 0, 1228, 0, 0, 240, 241, + 0, 242, 243, 244, 245, 246, 247, 248, 249, 1229, + 251, 1230, 1231, 0, 254, 255, 256, 257, 258, 259, + 1232, 1233, 260, 261, 1234, 1235, 264, 0, 265, 266, + 267, 268, 1236, 0, 1237, 0, 271, 272, 273, 274, + 275, 276, 277, 278, 279, 0, 280, 281, 282, 283, + 284, 285, 0, 286, 287, 288, 289, 1238, 1239, 1240, + 1241, 1242, 1243, 1244, 291, 292, 293, 294, 295, 296, + 1245, 1246, 299, 0, 300, 0, 301, 302, 303, 304, + 305, 306, 0, 307, 308, 309, 310, 0, 0, 311, + 312, 1078, 314, 315, 0, 316, 317, 318, 0, 319, + 320, 321, 0, 322, 323, 324, 325, 1248, 327, 328, + 329, 330, 1249, 1250, 332, 0, 333, 334, 1251, 336, + 0, 337, 0, 338, 339, 0, 340, 341, 342, 343, + 344, 0, 345, 1252, 0, 1253, 348, 349, 0, 350, + 351, 352, 353, 354, 355, 356, 357, 358, 359, 0, + 360, 361, 362, 363, 364, 365, 366, 0, 367, 368, + 369, 370, 371, 372, 373, 1254, 1255, 0, 1256, 0, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, - 387, 388, 816, 389, 390, 391, 392, 393, 0, 394, - 395, 817, 396, 0, 397, 398, 399, 400, 401, 402, - 0, 403, 404, 0, 0, 405, 406, 407, 0, 0, - 408, 409, 818, 410, 819, 411, 412, 413, 414, 415, - 416, 417, 418, 419, 420, 0, 421, 422, 423, 424, - 425, 426, 427, 428, 0, 429, 430, 431, 432, 433, - 434, 435, 436, 437, 438, 439, 440, 441, 442, 0, - 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, - 453, 454, 0, 455, 456, 820, 457, 458, 459, 460, - 461, 462, 463, 464, 465, 466, 467, 468, 469, 0, - 470, 471, 472, 473, 474, 0, 475, 476, 477, 478, - 479, 821, 480, 481, 482, 483, 0, 484, 485, 486, - 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, - 0, 497, 498, 0, 499, 822, 500, 501, 502, 503, - 504, 0, 505, 506, 0, 0, 507, 508, 509, 510, - 511, 0, 512, 513, 514, 515, 516, 517, 518, 0, - 0, 519, 520, 521, 522, 523, 0, 0, 524, 525, - 526, 527, 528, 529, 530, 0, 531, 823, 532, 533, - 534, 535, 0, 0, 536, 0, 0, 537, 538, 539, - 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, - 550, 551, 552, 553, 554, 555, 556, 800, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 224, 225, 226, 227, 228, 229, 230, 231, - 0, 233, 234, 235, 0, 0, 0, 0, 0, 0, - 0, 236, 237, 0, 238, 239, 240, 801, 241, 242, - 243, 244, 245, 802, 246, 247, 0, 248, 249, 250, - 251, 252, 0, 0, 253, 254, 255, 256, 257, 0, - 258, 259, 260, 261, 262, 0, 803, 0, 263, 264, - 265, 266, 267, 804, 268, 269, 270, 0, 271, 272, - 273, 274, 275, 276, 0, 805, 277, 278, 279, 0, - 0, 0, 806, 0, 0, 0, 280, 281, 282, 283, - 284, 285, 286, 287, 288, 0, 289, 0, 290, 291, - 292, 293, 294, 295, 0, 296, 297, 298, 299, 0, - 0, 300, 301, 302, 303, 304, 0, 305, 306, 307, - 0, 308, 309, 310, 0, 311, 312, 313, 314, 315, - 316, 317, 318, 319, 0, 320, 0, 321, 322, 323, - 324, 0, 325, 0, 326, 807, 0, 808, 327, 328, - 329, 330, 0, 331, 332, 0, 333, 334, 0, 335, - 336, 337, 338, 339, 809, 340, 341, 342, 343, 0, - 344, 345, 346, 347, 348, 349, 0, 350, 810, 351, - 352, 353, 354, 355, 356, 357, 0, 358, 0, 359, - 811, 812, 360, 813, 361, 362, 363, 364, 365, 0, - 0, 366, 367, 814, 368, 815, 0, 369, 370, 371, - 0, 0, 372, 373, 374, 375, 376, 377, 378, 379, - 380, 381, 382, 383, 384, 385, 386, 387, 388, 816, - 389, 390, 391, 392, 393, 0, 394, 395, 817, 396, - 0, 397, 398, 399, 400, 401, 402, 0, 403, 404, - 0, 0, 405, 406, 407, 0, 0, 408, 409, 818, - 410, 819, 411, 412, 413, 414, 415, 416, 417, 418, - 419, 420, 0, 421, 422, 423, 424, 425, 426, 427, - 428, 0, 429, 430, 431, 432, 433, 434, 435, 436, - 437, 438, 439, 440, 441, 442, 0, 443, 444, 445, + 0, 0, 387, 1257, 389, 390, 391, 0, 392, 393, + 394, 1258, 1259, 395, 396, 397, 398, 399, 400, 401, + 402, 403, 404, 405, 406, 407, 408, 409, 410, 1260, + 412, 1261, 414, 415, 416, 417, 418, 419, 420, 421, + 1262, 423, 0, 424, 425, 426, 427, 1264, 1265, 429, + 1266, 431, 432, 433, 0, 434, 435, 0, 0, 1267, + 437, 438, 0, 0, 439, 440, 441, 442, 443, 444, + 1268, 446, 447, 448, 449, 450, 451, 452, 453, 454, + 0, 455, 456, 1269, 458, 459, 460, 461, 462, 0, + 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, + 1270, 474, 475, 476, 477, 0, 478, 479, 480, 481, + 482, 483, 484, 485, 486, 487, 488, 489, 0, 490, + 491, 492, 493, 494, 495, 496, 497, 2796, 499, 500, + 501, 502, 503, 504, 505, 506, 507, 0, 508, 509, + 510, 511, 512, 1272, 513, 514, 515, 516, 517, 518, + 519, 520, 1273, 522, 0, 523, 524, 525, 526, 527, + 528, 529, 530, 531, 532, 533, 534, 535, 1274, 537, + 0, 538, 539, 0, 540, 541, 542, 543, 544, 545, + 546, 0, 547, 1275, 1276, 0, 0, 550, 551, 1277, + 553, 1278, 1279, 555, 556, 557, 558, 559, 560, 561, + 562, 0, 0, 563, 564, 565, 566, 567, 1281, 0, + 568, 569, 570, 571, 572, 573, 1282, 0, 575, 576, + 577, 578, 579, 580, 0, 0, 581, 0, 0, 582, + 583, 584, 585, 586, 587, 588, 1283, 1284, 1285, 1286, + 593, 1287, 1288, 1289, 1290, 598, 599, 600, 601, 0, + 0, 0, 0, 0, 0, 1292, 0, 2797, 2798, 228, + 0, 1223, 669, 0, 1224, 1225, 2799, 729, 1227, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 229, 230, + 231, 232, 233, 234, 235, 236, 0, 237, 238, 239, + 0, 0, 0, 0, 1228, 0, 0, 240, 241, 0, + 242, 243, 244, 245, 246, 247, 248, 249, 1229, 251, + 1230, 1231, 0, 254, 255, 256, 257, 258, 259, 1232, + 1233, 260, 261, 1234, 1235, 264, 0, 265, 266, 267, + 268, 1236, 0, 1237, 0, 271, 272, 273, 274, 275, + 276, 277, 278, 279, 0, 280, 281, 282, 283, 284, + 285, 0, 286, 287, 288, 289, 1238, 1239, 1240, 1241, + 1242, 1243, 1244, 291, 292, 293, 294, 295, 296, 1245, + 1246, 299, 0, 300, 0, 301, 302, 303, 304, 305, + 306, 0, 307, 308, 309, 310, 0, 0, 311, 312, + 1078, 314, 315, 0, 316, 317, 318, 0, 319, 320, + 321, 0, 322, 323, 324, 325, 1248, 327, 328, 329, + 330, 1249, 1250, 332, 0, 333, 334, 1251, 336, 0, + 337, 0, 338, 339, 0, 340, 341, 342, 343, 344, + 0, 345, 1252, 0, 1253, 348, 349, 0, 350, 351, + 352, 353, 354, 355, 356, 357, 358, 359, 0, 360, + 361, 362, 363, 364, 365, 366, 0, 367, 368, 369, + 370, 371, 372, 373, 1254, 1255, 0, 1256, 0, 377, + 378, 379, 380, 381, 382, 383, 384, 385, 386, 0, + 0, 387, 1257, 389, 390, 391, 0, 392, 393, 394, + 1258, 1259, 395, 396, 397, 398, 399, 400, 401, 402, + 403, 404, 405, 406, 407, 408, 409, 410, 1260, 412, + 1261, 414, 415, 416, 417, 418, 419, 420, 421, 1262, + 423, 0, 424, 425, 426, 427, 1264, 1265, 429, 1266, + 431, 432, 433, 0, 434, 435, 0, 0, 436, 437, + 438, 0, 0, 439, 440, 441, 442, 443, 444, 1268, 446, 447, 448, 449, 450, 451, 452, 453, 454, 0, - 455, 456, 820, 457, 458, 459, 460, 461, 462, 463, - 464, 465, 466, 467, 468, 469, 0, 470, 471, 472, - 473, 474, 0, 475, 476, 477, 478, 479, 821, 480, - 481, 482, 483, 0, 484, 485, 486, 487, 488, 489, - 490, 491, 492, 493, 494, 495, 496, 0, 497, 498, - 0, 499, 822, 500, 501, 502, 503, 504, 0, 505, - 506, 0, 0, 507, 508, 509, 510, 511, 0, 512, - 513, 514, 515, 516, 517, 518, 0, 0, 519, 520, - 521, 522, 523, 0, 0, 524, 525, 526, 527, 528, - 529, 530, 0, 531, 823, 532, 533, 534, 535, 0, - 0, 536, 0, 0, 537, 538, 539, 540, 541, 542, - 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, - 553, 554, 555, 556, 800, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, - 225, 226, 227, 228, 229, 230, 231, 0, 233, 234, - 235, 0, 0, 0, 0, 0, 0, 0, 236, 237, - 0, 238, 239, 240, 801, 241, 242, 243, 244, 245, - 802, 246, 247, 0, 248, 249, 250, 251, 252, 0, - 0, 253, 254, 255, 256, 257, 0, 258, 259, 260, - 261, 262, 0, 803, 0, 263, 264, 265, 266, 267, - 804, 268, 269, 270, 0, 271, 272, 273, 274, 275, - 276, 0, 805, 277, 278, 279, 0, 0, 0, 806, - 0, 0, 0, 280, 281, 282, 283, 284, 285, 286, - 287, 288, 0, 289, 0, 290, 291, 292, 293, 294, - 295, 0, 296, 297, 298, 299, 0, 0, 300, 301, - 302, 303, 304, 0, 305, 306, 307, 0, 308, 309, - 310, 0, 311, 312, 313, 314, 315, 316, 317, 318, - 319, 0, 320, 0, 321, 322, 323, 324, 0, 325, - 0, 326, 807, 0, 808, 327, 328, 329, 330, 0, - 331, 332, 0, 333, 334, 0, 335, 336, 337, 338, - 1023, 809, 340, 341, 342, 343, 0, 344, 345, 346, - 347, 348, 349, 0, 350, 810, 351, 352, 353, 354, - 355, 356, 357, 0, 358, 0, 359, 811, 812, 360, - 813, 361, 362, 363, 364, 365, 0, 0, 366, 367, - 814, 368, 815, 0, 369, 370, 371, 0, 0, 372, - 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, - 383, 384, 385, 386, 387, 388, 816, 389, 390, 391, - 392, 393, 0, 394, 395, 817, 396, 0, 397, 398, - 399, 400, 401, 402, 0, 403, 404, 0, 0, 405, - 406, 407, 0, 0, 408, 409, 818, 410, 819, 411, - 412, 413, 414, 415, 416, 417, 418, 419, 420, 0, - 421, 422, 423, 424, 425, 426, 427, 428, 0, 429, - 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, - 440, 441, 442, 0, 443, 444, 445, 446, 447, 448, - 449, 450, 451, 452, 453, 454, 0, 455, 456, 820, - 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, - 467, 468, 469, 0, 470, 471, 472, 473, 474, 0, - 475, 476, 477, 478, 479, 821, 480, 481, 482, 483, - 0, 484, 485, 486, 487, 488, 489, 490, 491, 492, - 493, 494, 495, 496, 0, 497, 498, 0, 499, 822, - 500, 501, 502, 503, 504, 0, 505, 506, 0, 0, - 507, 508, 509, 510, 511, 0, 512, 513, 514, 515, - 516, 517, 518, 0, 0, 519, 520, 521, 522, 523, - 0, 0, 524, 525, 526, 527, 528, 529, 530, 0, - 531, 823, 532, 533, 534, 535, 0, 0, 536, 0, - 0, 537, 538, 539, 540, 541, 542, 543, 544, 545, - 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, - 556, 800, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 224, 225, 226, 227, - 228, 229, 230, 231, 0, 233, 234, 235, 0, 0, - 0, 0, 0, 0, 0, 236, 237, 0, 238, 239, - 240, 801, 241, 242, 243, 244, 245, 802, 246, 247, - 0, 248, 249, 250, 251, 252, 0, 0, 253, 254, - 255, 256, 257, 0, 258, 259, 260, 261, 262, 0, - 803, 0, 263, 264, 265, 266, 267, 804, 268, 269, - 270, 0, 271, 272, 273, 274, 275, 276, 0, 805, - 277, 278, 279, 0, 0, 0, 806, 0, 0, 0, - 280, 281, 282, 283, 284, 285, 286, 287, 288, 0, - 289, 0, 290, 291, 292, 293, 294, 295, 0, 296, - 297, 298, 299, 0, 0, 300, 301, 302, 303, 304, - 0, 305, 306, 307, 0, 308, 309, 310, 0, 311, - 312, 313, 314, 315, 316, 317, 318, 319, 0, 320, - 0, 321, 322, 323, 324, 0, 325, 0, 326, 807, - 0, 808, 327, 328, 329, 330, 0, 331, 332, 0, - 333, 334, 0, 335, 336, 337, 338, 1073, 809, 340, - 341, 342, 343, 0, 344, 345, 346, 347, 348, 349, - 0, 350, 810, 351, 352, 353, 354, 355, 356, 357, - 0, 358, 0, 359, 811, 812, 360, 813, 361, 362, - 363, 364, 365, 0, 0, 366, 367, 814, 368, 815, - 0, 369, 370, 371, 0, 0, 372, 373, 374, 375, - 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, - 386, 387, 388, 816, 389, 390, 391, 392, 393, 0, - 394, 395, 817, 396, 0, 397, 398, 399, 400, 401, - 402, 0, 403, 404, 0, 0, 405, 406, 407, 0, - 0, 408, 409, 818, 410, 819, 411, 412, 413, 414, - 415, 416, 417, 418, 419, 420, 0, 421, 422, 423, - 424, 425, 426, 427, 428, 0, 429, 430, 431, 432, - 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, - 0, 443, 444, 445, 446, 447, 448, 449, 450, 451, - 452, 453, 454, 0, 455, 456, 820, 457, 458, 459, - 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, - 0, 470, 471, 472, 473, 474, 0, 475, 476, 477, - 478, 479, 821, 480, 481, 482, 483, 0, 484, 485, - 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, - 496, 0, 497, 498, 0, 499, 822, 500, 501, 502, - 503, 504, 0, 505, 506, 0, 0, 507, 508, 509, - 510, 511, 0, 512, 513, 514, 515, 516, 517, 518, - 0, 0, 519, 520, 521, 522, 523, 0, 0, 524, - 525, 526, 527, 528, 529, 530, 0, 531, 823, 532, - 533, 534, 535, 0, 0, 536, 0, 0, 537, 538, - 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, - 549, 550, 551, 552, 553, 554, 555, 556, 223, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 224, 225, 226, 227, 228, 229, 230, - 231, 0, 233, 234, 235, 0, 0, 0, 0, 0, - 0, 0, 236, 237, 0, 238, 239, 240, 0, 241, - 242, 243, 244, 245, 0, 246, 247, 0, 248, 249, - 250, 251, 252, 0, 0, 253, 254, 255, 256, 257, - 2135, 258, 259, 260, 261, 262, 0, 0, 2212, 263, - 264, 265, 266, 267, 0, 268, 269, 270, 2136, 271, - 272, 273, 274, 275, 276, 0, 0, 277, 278, 279, - 0, 0, 0, 0, 0, 0, 0, 280, 281, 282, - 283, 284, 285, 286, 287, 288, 0, 289, 0, 290, - 291, 292, 293, 294, 295, 0, 296, 297, 298, 299, - 0, 0, 300, 301, 302, 303, 304, 0, 305, 306, - 307, 0, 308, 309, 310, 0, 2213, 312, 313, 314, - 315, 316, 317, 318, 319, 0, 320, 0, 321, 322, - 323, 324, 0, 325, 2138, 326, 0, 0, 0, 327, - 328, 329, 330, 0, 331, 332, 0, 333, 334, 0, - 335, 336, 337, 338, 2214, 0, 340, 341, 342, 343, - 0, 344, 345, 346, 347, 348, 349, 0, 350, 0, - 351, 352, 353, 354, 355, 356, 357, 0, 358, 0, - 359, 0, 0, 360, 0, 361, 362, 363, 364, 365, - 0, 0, 366, 367, 0, 368, 0, 0, 369, 370, - 371, 0, 0, 372, 373, 374, 375, 376, 377, 378, - 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, - 0, 389, 390, 391, 392, 393, 0, 394, 395, 0, - 396, 0, 397, 398, 399, 400, 401, 402, 0, 403, - 404, 0, 0, 405, 406, 407, 0, 0, 408, 409, - 0, 410, 0, 411, 412, 413, 414, 415, 416, 417, - 418, 419, 420, 0, 421, 422, 423, 424, 425, 426, - 427, 428, 2139, 429, 430, 431, 432, 433, 434, 435, - 436, 437, 438, 439, 440, 441, 442, 0, 443, 444, - 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, - 0, 455, 456, 0, 457, 458, 459, 460, 461, 462, - 463, 464, 465, 466, 467, 468, 469, 0, 470, 471, - 472, 473, 474, 0, 475, 476, 477, 478, 479, 0, - 480, 481, 482, 483, 0, 484, 485, 486, 487, 488, - 489, 490, 491, 492, 493, 494, 495, 496, 0, 497, - 498, 0, 499, 0, 500, 501, 502, 503, 504, 0, - 505, 506, 0, 0, 507, 508, 509, 510, 511, 0, - 512, 513, 514, 515, 516, 517, 518, 0, 2140, 519, - 520, 521, 522, 523, 0, 0, 524, 525, 526, 527, - 528, 529, 530, 0, 531, 0, 532, 533, 534, 535, - 0, 0, 536, 0, 0, 537, 538, 539, 540, 541, - 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, - 552, 553, 554, 555, 556, 223, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 224, 225, 226, 227, 228, 229, 230, 231, 0, 233, - 234, 235, 0, 0, 0, 0, 0, 0, 0, 236, - 237, 0, 238, 239, 240, 0, 241, 242, 243, 244, - 245, 0, 246, 247, 0, 248, 249, 250, 251, 252, - 0, 0, 253, 254, 255, 256, 257, 2135, 258, 259, - 260, 261, 262, 0, 0, 0, 263, 264, 265, 266, - 267, 0, 268, 269, 270, 2136, 271, 272, 273, 274, - 275, 276, 0, 0, 277, 278, 279, 0, 0, 0, - 0, 0, 0, 0, 280, 281, 282, 283, 284, 285, - 286, 287, 288, 0, 289, 0, 290, 291, 292, 293, - 294, 295, 0, 296, 297, 298, 299, 0, 0, 300, - 301, 302, 303, 304, 0, 305, 306, 307, 0, 308, - 309, 310, 0, 2213, 312, 313, 314, 315, 316, 317, - 318, 319, 0, 320, 0, 321, 322, 323, 324, 0, - 325, 2138, 326, 0, 0, 0, 327, 328, 329, 330, - 0, 331, 332, 0, 333, 334, 0, 335, 336, 337, - 338, 339, 0, 340, 341, 342, 343, 0, 344, 345, - 346, 347, 348, 349, 0, 350, 0, 351, 352, 353, - 354, 355, 356, 357, 0, 358, 0, 359, 0, 0, - 360, 0, 361, 362, 363, 364, 365, 0, 0, 366, - 367, 0, 368, 3164, 0, 369, 370, 371, 0, 0, - 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, - 382, 383, 384, 385, 386, 387, 388, 0, 389, 390, - 391, 392, 393, 0, 394, 395, 0, 396, 0, 397, - 398, 399, 400, 401, 402, 0, 403, 404, 0, 0, - 405, 406, 407, 0, 0, 408, 409, 0, 410, 0, + 455, 456, 1269, 458, 459, 460, 461, 462, 0, 463, + 464, 465, 466, 467, 468, 469, 470, 471, 472, 1270, + 474, 475, 476, 477, 0, 478, 479, 480, 481, 482, + 483, 484, 485, 486, 487, 488, 489, 0, 490, 491, + 492, 493, 494, 495, 496, 497, 2929, 2930, 500, 501, + 502, 503, 504, 505, 506, 507, 0, 508, 509, 510, + 511, 512, 1272, 513, 514, 515, 516, 517, 518, 519, + 520, 1273, 522, 0, 523, 524, 525, 526, 527, 528, + 529, 530, 531, 532, 533, 534, 535, 1274, 537, 0, + 538, 539, 0, 540, 541, 542, 543, 544, 545, 546, + 0, 547, 1275, 1276, 0, 0, 550, 551, 1277, 553, + 1278, 1279, 555, 556, 557, 558, 559, 560, 561, 562, + 0, 0, 563, 564, 565, 566, 567, 1281, 0, 568, + 569, 570, 571, 572, 573, 1282, 0, 575, 576, 577, + 578, 579, 580, 0, 0, 581, 0, 0, 582, 583, + 584, 585, 586, 587, 588, 1283, 1284, 1285, 1286, 593, + 1287, 1288, 1289, 1290, 598, 599, 600, 601, 0, 0, + 0, 0, 0, 0, 1292, 0, 2931, 2932, 0, 0, + 0, 228, 0, 1223, 669, 2799, 1224, 1225, 1226, 729, + 1227, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 229, 230, 231, 232, 233, 234, 235, 236, 0, 237, + 238, 239, 0, 0, 0, 0, 1228, 0, 0, 240, + 241, 0, 242, 243, 244, 245, 246, 247, 248, 249, + 1229, 251, 1230, 1231, 0, 254, 255, 256, 257, 258, + 259, 1232, 1233, 260, 261, 1234, 1235, 264, 0, 265, + 266, 267, 268, 1236, 0, 1237, 0, 271, 272, 273, + 274, 275, 276, 277, 278, 279, 0, 280, 281, 282, + 283, 284, 285, 0, 286, 287, 288, 289, 1238, 1239, + 1240, 1241, 1242, 1243, 1244, 291, 292, 293, 294, 295, + 296, 1245, 1246, 299, 0, 300, 0, 301, 302, 303, + 304, 305, 306, 0, 307, 308, 309, 310, 0, 0, + 311, 312, 1078, 314, 315, 0, 316, 317, 318, 0, + 319, 320, 321, 0, 322, 323, 324, 325, 1248, 327, + 328, 329, 330, 1249, 1250, 332, 0, 333, 334, 1251, + 336, 0, 337, 0, 338, 339, 0, 340, 341, 342, + 343, 344, 0, 345, 1252, 0, 1253, 348, 349, 0, + 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, + 0, 360, 361, 362, 363, 364, 365, 366, 0, 367, + 368, 369, 370, 371, 372, 373, 1254, 1255, 0, 1256, + 0, 377, 0, 379, 380, 381, 382, 383, 384, 385, + 386, 0, 0, 387, 1257, 389, 390, 391, 0, 392, + 393, 394, 1258, 1259, 395, 396, 397, 398, 399, 400, + 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, + 1260, 412, 1261, 414, 415, 416, 417, 418, 419, 420, + 421, 1262, 423, 0, 424, 425, 426, 427, 1264, 1265, + 429, 1266, 431, 432, 433, 0, 434, 435, 0, 0, + 1267, 437, 438, 0, 0, 439, 440, 441, 442, 443, + 444, 1268, 446, 447, 448, 449, 450, 451, 452, 453, + 454, 0, 455, 456, 1269, 458, 459, 460, 461, 462, + 0, 463, 464, 465, 466, 467, 468, 469, 470, 471, + 472, 1270, 474, 475, 476, 477, 0, 478, 479, 480, + 481, 482, 483, 484, 485, 486, 487, 488, 489, 0, + 490, 491, 492, 493, 494, 495, 496, 497, 2796, 499, + 500, 501, 502, 503, 504, 505, 506, 507, 0, 508, + 509, 510, 511, 512, 1272, 513, 514, 515, 516, 517, + 518, 519, 520, 1273, 522, 0, 523, 524, 525, 526, + 527, 528, 529, 530, 531, 532, 533, 534, 535, 1274, + 537, 0, 538, 539, 0, 540, 541, 542, 543, 544, + 545, 546, 0, 547, 1275, 1276, 0, 0, 550, 551, + 1277, 553, 1278, 1279, 555, 556, 557, 558, 559, 560, + 561, 562, 0, 0, 563, 564, 565, 566, 567, 1281, + 0, 568, 569, 570, 571, 572, 573, 1282, 0, 575, + 576, 577, 578, 579, 580, 0, 0, 581, 0, 0, + 582, 583, 584, 585, 586, 587, 588, 1283, 1284, 1285, + 1286, 593, 1287, 1288, 1289, 1290, 598, 599, 600, 601, + 0, 0, 0, 0, 0, 0, 0, 0, 2797, 2798, + 228, 0, 1223, 669, 0, 1224, 1225, 2799, 729, 1227, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 229, + 230, 231, 232, 233, 234, 235, 236, 0, 237, 238, + 239, 0, 0, 0, 0, 1228, 0, 0, 240, 241, + 0, 242, 243, 244, 245, 246, 247, 248, 249, 1229, + 251, 1230, 1231, 0, 254, 255, 256, 257, 258, 259, + 1232, 1233, 260, 261, 1234, 1235, 264, 0, 265, 266, + 267, 268, 1236, 0, 1237, 0, 271, 272, 273, 274, + 275, 276, 277, 278, 279, 0, 280, 281, 282, 283, + 284, 285, 0, 286, 287, 288, 289, 1238, 1239, 1240, + 1241, 1242, 1243, 1244, 291, 292, 293, 294, 295, 296, + 1245, 1246, 299, 0, 300, 0, 301, 302, 303, 304, + 305, 306, 0, 307, 308, 309, 310, 0, 0, 311, + 312, 1078, 314, 315, 0, 316, 317, 318, 0, 319, + 320, 321, 0, 322, 323, 324, 325, 1248, 327, 328, + 329, 330, 1249, 1250, 332, 0, 333, 334, 1251, 336, + 0, 337, 0, 338, 339, 0, 340, 341, 342, 343, + 344, 0, 345, 1252, 0, 1253, 348, 349, 0, 350, + 351, 352, 353, 354, 355, 356, 357, 358, 359, 0, + 360, 361, 362, 363, 364, 365, 366, 0, 367, 368, + 369, 370, 371, 372, 373, 1254, 1255, 0, 1256, 0, + 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, + 0, 0, 387, 1257, 389, 390, 391, 0, 392, 393, + 394, 1258, 1259, 395, 396, 397, 398, 399, 400, 401, + 402, 403, 404, 405, 406, 407, 408, 409, 410, 1260, + 412, 1261, 414, 415, 416, 417, 418, 419, 420, 421, + 1262, 423, 0, 424, 425, 426, 427, 1264, 1265, 429, + 1266, 431, 432, 433, 0, 434, 435, 0, 0, 436, + 437, 438, 0, 0, 439, 440, 441, 442, 443, 444, + 1268, 446, 447, 448, 449, 450, 451, 452, 453, 454, + 0, 455, 456, 1269, 458, 459, 460, 461, 462, 0, + 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, + 1270, 474, 475, 476, 477, 0, 478, 479, 480, 481, + 482, 483, 484, 485, 486, 487, 488, 489, 0, 490, + 491, 492, 493, 494, 495, 496, 497, 2796, 499, 500, + 501, 502, 503, 504, 505, 506, 507, 0, 508, 509, + 510, 511, 512, 1272, 513, 514, 515, 516, 517, 518, + 519, 520, 1273, 522, 0, 523, 524, 525, 526, 527, + 528, 529, 530, 531, 532, 533, 534, 535, 1274, 537, + 0, 538, 539, 0, 540, 541, 542, 543, 544, 545, + 546, 0, 547, 1275, 1276, 0, 0, 550, 551, 1277, + 553, 1278, 1279, 555, 556, 557, 558, 559, 560, 561, + 562, 0, 0, 563, 564, 565, 566, 567, 1281, 0, + 568, 569, 570, 571, 572, 573, 1282, 0, 575, 576, + 577, 578, 579, 580, 0, 0, 581, 0, 0, 582, + 583, 584, 585, 586, 587, 588, 1283, 1284, 1285, 1286, + 593, 1287, 1288, 1289, 1290, 598, 599, 600, 601, 0, + 0, 228, 0, 1223, 669, 1292, 1224, 1225, 1226, 729, + 1227, 0, 0, 0, 0, 0, 2799, 0, 0, 0, + 229, 230, 231, 232, 233, 234, 235, 236, -2191, 237, + 238, 239, 0, 0, 0, -2191, 1228, 0, 0, 240, + 241, 0, 242, 243, 244, 245, 246, 247, 248, 0, + 1229, 251, 1230, 1231, 0, 254, 255, 256, 257, 258, + 259, 1232, 1233, 260, 261, 1234, 1235, 264, 0, 265, + 266, 267, 268, 1236, 0, 1237, 0, 271, 272, 273, + 274, 275, 276, 277, 278, 279, 0, 280, 281, 282, + 283, 284, 285, 0, 286, 287, 288, 289, 1238, 1239, + 1240, 1241, 1242, 1243, 1244, 291, 292, 293, 294, 295, + 296, 1245, 1246, 299, 1247, 300, 0, 301, 302, 303, + 304, 305, 306, 0, 307, 308, 309, 310, 0, 0, + 311, 312, 1078, 314, 315, 0, 316, 317, 318, 0, + 319, 0, 321, 0, 322, 323, 324, 325, 1248, 327, + 328, 329, 330, 1249, 1250, 332, 0, 333, 334, 1251, + 336, 0, 337, 0, 338, 339, 0, 340, 341, 342, + 343, 344, 0, 345, 1252, 0, 1253, 348, 349, 0, + 350, 351, 352, 353, 354, 0, 356, 357, 358, 359, + 0, 360, 361, 362, 363, 364, 365, 366, 0, 367, + 368, 369, 370, 371, 372, 373, 1254, 1255, 0, 1256, + 0, 377, 0, 0, 380, 381, 382, 383, 384, 385, + 386, 0, 0, 387, 1257, 389, 390, 0, 0, 392, + 393, 394, 1258, 1259, 395, 396, 397, 398, 399, 400, + 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, + 1260, 412, 1261, 414, 415, 416, 417, 418, 419, 420, + 421, 1262, 423, 1263, 424, 425, 0, 427, 1264, 1265, + 429, 1266, 431, 432, 433, 0, 434, 435, 0, 0, + 1267, 437, 438, 0, 0, 439, 440, 441, 442, 443, + 444, 1268, 446, 447, 448, 449, 450, 451, 452, 453, + 454, 0, 455, 456, 1269, 458, 459, 460, 461, 462, + 0, 463, 464, 465, 466, 467, 468, 469, 470, 471, + 472, 1270, 474, 475, 476, 477, 0, 478, 479, 480, + 481, 482, 483, 484, 485, 486, 487, 488, 489, 0, + 490, 491, 492, 493, 494, 495, 496, 497, 1271, 499, + 500, 501, 502, 503, 504, 505, 506, 507, 0, 508, + 509, 510, 511, 512, 1272, 513, 514, 515, 516, 517, + 0, 519, 520, 1273, 522, -2191, 523, 524, 525, 526, + 527, 528, 529, 530, 531, 532, 533, 534, 535, 1274, + 537, 0, 538, 539, 0, 540, 541, 542, 543, 544, + 545, 546, 0, 547, 1275, 1276, 0, 0, 550, 551, + 1277, 553, 1278, 1279, 555, 556, 557, 558, 559, 560, + 561, 562, 0, 1280, 563, 564, 565, 566, 567, 1281, + 0, 568, 569, 570, 571, 572, 573, 1282, 0, 575, + 576, 577, 578, 579, 580, 0, 0, 581, 0, 0, + 582, 583, 584, 585, 586, 587, 588, 1283, 1284, 1285, + 1286, 593, 1287, 1288, 1289, 1290, 598, 599, 600, 601, + 0, 0, 0, 0, 0, 0, 0, 0, 1293, 1294, + 228, 0, 1223, 669, 0, 1224, 1225, 1296, 729, 1227, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 229, + 230, 231, 232, 233, 234, 235, 236, 0, 237, 238, + 239, 0, 0, 0, 0, 1228, 0, 0, 240, 241, + 0, 242, 243, 244, 245, 246, 247, 248, 249, 1229, + 251, 1230, 1231, 0, 4129, 255, 256, 257, 258, 259, + 1232, 1233, 260, 261, 1234, 1235, 264, 0, 265, 266, + 267, 268, 1236, 0, 1237, 0, 271, 272, 273, 274, + 275, 276, 277, 278, 279, 0, 280, 281, 282, 283, + 284, 285, 0, 286, 287, 288, 289, 1238, 1239, 1240, + 1241, 1242, 1243, 1244, 291, 292, 293, 294, 295, 296, + 1245, 1246, 299, 0, 300, 0, 301, 302, 303, 304, + 305, 306, 0, 307, 308, 309, 310, 0, 0, 311, + 312, 1078, 314, 315, 0, 316, 317, 318, 0, 319, + 320, 321, 0, 322, 323, 324, 325, 1248, 327, 328, + 329, 330, 1249, 1250, 332, 0, 333, 334, 1251, 336, + 0, 337, 0, 338, 339, 0, 340, 341, 342, 343, + 344, 0, 345, 1252, 0, 1253, 348, 349, 0, 350, + 351, 352, 353, 354, 355, 356, 357, 358, 359, 0, + 360, 361, 362, 363, 364, 365, 366, 0, 367, 368, + 369, 370, 371, 372, 373, 1254, 1255, 0, 1256, 0, + 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, + 0, 0, 387, 1257, 389, 390, 391, 0, 392, 393, + 394, 1258, 1259, 395, 396, 397, 398, 399, 400, 401, + 402, 403, 404, 405, 406, 407, 408, 409, 410, 1260, + 412, 1261, 414, 415, 416, 417, 418, 419, 420, 421, + 1262, 423, 0, 424, 425, 426, 427, 1264, 1265, 429, + 1266, 431, 432, 433, 0, 434, 435, 0, 0, 436, + 437, 438, 0, 0, 439, 440, 441, 442, 443, 444, + 1268, 446, 447, 448, 449, 450, 451, 452, 453, 454, + 0, 455, 456, 1269, 458, 459, 460, 461, 462, 0, + 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, + 1270, 474, 475, 476, 477, 0, 478, 479, 480, 481, + 482, 483, 484, 485, 486, 487, 488, 489, 0, 490, + 491, 492, 493, 494, 495, 496, 497, 2796, 499, 500, + 501, 502, 503, 504, 505, 506, 507, 0, 508, 509, + 510, 511, 512, 1272, 513, 514, 515, 516, 517, 518, + 519, 520, 1273, 522, 0, 523, 524, 525, 526, 527, + 528, 529, 530, 531, 532, 533, 534, 535, 1274, 537, + 0, 538, 539, 0, 540, 541, 542, 543, 544, 545, + 546, 0, 547, 1275, 1276, 0, 0, 550, 551, 1277, + 553, 1278, 1279, 555, 556, 557, 558, 559, 560, 561, + 562, 0, 0, 563, 564, 565, 566, 567, 1281, 0, + 568, 569, 570, 571, 572, 573, 1282, 0, 575, 576, + 577, 578, 579, 580, 0, 0, 581, 0, 0, 582, + 583, 584, 585, 586, 587, 588, 1283, 1284, 1285, 1286, + 593, 1287, 1288, 1289, 1290, 598, 599, 600, 601, 0, + 0, 228, 0, 1223, 669, 1292, 1224, 1225, 0, 729, + 1227, 0, 0, 0, 0, 0, 2799, 0, 0, 0, + 229, 230, 231, 232, 233, 234, 235, 236, 0, 237, + 238, 239, 0, 0, 0, 0, 1228, 0, 0, 240, + 241, 0, 242, 243, 244, 245, 246, 247, 248, 249, + 1229, 251, 1230, 1231, 0, 254, 255, 256, 257, 258, + 259, 1232, 1233, 260, 261, 1234, 1235, 264, 0, 265, + 266, 267, 268, 1236, 0, 1237, 0, 271, 272, 273, + 274, 275, 276, 277, 278, 279, 0, 280, 281, 282, + 283, 284, 285, 0, 286, 287, 288, 289, 1238, 1239, + 1240, 1241, 1242, 1243, 1244, 291, 292, 293, 294, 295, + 296, 1245, 1246, 299, 0, 300, 0, 301, 302, 303, + 304, 305, 306, 0, 307, 308, 309, 310, 0, 0, + 311, 312, 1078, 314, 315, 0, 316, 317, 318, 0, + 319, 320, 321, 0, 322, 323, 324, 325, 1248, 327, + 328, 329, 330, 1249, 1250, 332, 0, 333, 334, 1251, + 336, 0, 337, 0, 338, 339, 0, 340, 341, 342, + 343, 344, 0, 345, 1252, 0, 1253, 348, 349, 0, + 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, + 0, 360, 361, 362, 363, 364, 365, 366, 0, 367, + 368, 369, 370, 371, 372, 373, 1254, 1255, 0, 1256, + 0, 377, 378, 379, 380, 381, 382, 383, 384, 385, + 386, 0, 0, 387, 1257, 389, 390, 391, 0, 392, + 393, 394, 1258, 1259, 395, 396, 397, 398, 399, 400, + 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, + 1260, 412, 1261, 414, 415, 416, 417, 418, 419, 420, + 421, 1262, 423, 0, 424, 425, 426, 427, 1264, 1265, + 429, 1266, 431, 432, 433, 0, 434, 435, 0, 0, + 436, 437, 438, 0, 0, 439, 440, 441, 442, 443, + 444, 1268, 446, 447, 448, 449, 450, 451, 452, 453, + 454, 0, 455, 456, 1269, 458, 459, 460, 461, 462, + 0, 463, 464, 465, 466, 467, 468, 469, 470, 471, + 472, 1270, 474, 475, 476, 477, 0, 478, 479, 480, + 481, 482, 483, 484, 485, 486, 487, 488, 489, 0, + 490, 491, 492, 493, 494, 495, 496, 497, 2796, 499, + 500, 501, 502, 503, 504, 505, 506, 507, 0, 508, + 509, 510, 511, 512, 1272, 513, 514, 515, 516, 517, + 518, 519, 520, 1273, 522, 0, 523, 524, 525, 526, + 527, 528, 529, 530, 531, 532, 533, 534, 535, 1274, + 537, 0, 538, 539, 0, 540, 541, 542, 543, 544, + 545, 546, 0, 547, 1275, 1276, 0, 0, 550, 551, + 1277, 553, 1278, 1279, 555, 556, 557, 558, 559, 560, + 561, 562, 0, 0, 563, 564, 565, 566, 567, 1281, + 0, 568, 569, 570, 571, 572, 573, 1282, 0, 575, + 576, 577, 578, 579, 580, 0, 0, 581, 0, 0, + 582, 583, 584, 585, 586, 587, 588, 1283, 1284, 1285, + 1286, 4621, 1287, 1288, 1289, 1290, 598, 599, 600, 601, + 0, 0, 228, 0, 1223, 669, 1292, 1224, 1225, 1226, + 729, 1227, 0, 0, 0, 0, 0, 2799, 0, 0, + 0, 229, 230, 231, 232, 233, 234, 235, 236, 0, + 237, 238, 239, 0, 0, 0, 0, 1228, 0, 0, + 240, 241, 0, 242, 243, 244, 245, 246, 247, 248, + 0, 1229, 251, 1230, 1231, 0, 254, 255, 256, 257, + 258, 259, 1232, 1233, 260, 261, 1234, 1235, 264, 0, + 265, 266, 267, 268, 1236, 0, 1237, 0, 271, 272, + 273, 274, 275, 276, 277, 278, 279, 0, 280, 281, + 282, 283, 284, 285, 0, 286, 287, 288, 289, 1238, + 1239, 1240, 1241, 1242, 1243, 1244, 291, 292, 293, 294, + 295, 296, 1245, 1246, 299, 1247, 300, 0, 301, 302, + 303, 304, 305, 306, 0, 307, 308, 309, 310, 0, + 0, 311, 312, 1078, 314, 315, 0, 316, 317, 318, + 0, 319, 0, 321, 0, 322, 323, 324, 325, 1248, + 327, 328, 329, 330, 1249, 1250, 332, 0, 333, 334, + 1251, 336, 0, 337, 0, 338, 339, 0, 340, 341, + 342, 343, 344, 0, 345, 1252, 0, 1253, 348, 349, + 0, 350, 351, 352, 353, 354, 0, 356, 357, 358, + 359, 0, 360, 361, 362, 363, 364, 365, 366, 0, + 367, 368, 369, 370, 371, 372, 373, 1254, 1255, 0, + 1256, 0, 377, 0, 0, 380, 381, 382, 383, 384, + 385, 386, 0, 0, 387, 1257, 389, 390, 0, 0, + 392, 393, 394, 1258, 1259, 395, 396, 397, 398, 399, + 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, + 410, 1260, 412, 1261, 414, 415, 416, 417, 418, 419, + 420, 421, 1262, 423, 1263, 424, 425, 0, 427, 1264, + 1265, 429, 1266, 431, 432, 433, 0, 434, 435, 0, + 0, 1267, 437, 438, 0, 0, 439, 440, 441, 442, + 443, 444, 1268, 446, 447, 448, 449, 450, 451, 452, + 453, 454, 0, 455, 456, 1269, 458, 459, 460, 461, + 462, 0, 463, 464, 465, 466, 467, 468, 469, 470, + 471, 472, 1270, 474, 475, 476, 477, 0, 478, 479, + 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, + 0, 490, 491, 492, 493, 494, 495, 496, 497, 1271, + 499, 500, 501, 502, 503, 504, 505, 506, 507, 0, + 508, 509, 510, 511, 512, 1272, 513, 514, 515, 516, + 517, 0, 519, 520, 1273, 522, 0, 523, 524, 525, + 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, + 1274, 537, 0, 538, 539, 0, 540, 541, 542, 543, + 544, 545, 546, 0, 547, 1275, 1276, 0, 0, 550, + 551, 1277, 553, 1278, 1279, 555, 556, 557, 558, 559, + 560, 561, 562, 0, 1280, 563, 564, 565, 566, 567, + 1281, 0, 568, 569, 570, 571, 572, 573, 1282, 0, + 575, 576, 577, 578, 579, 580, 0, 0, 581, 0, + 0, 582, 583, 584, 585, 586, 587, 588, 1283, 1284, + 1285, 1286, 593, 1287, 1288, 1289, 1290, 598, 599, 600, + 601, 228, 0, 0, 0, 0, 0, 0, 0, 1293, + 1294, 0, 0, 0, 0, 0, 0, 0, 1296, 0, + 229, 230, 231, 232, 233, 234, 235, 236, 0, 237, + 238, 239, 0, 0, 0, 0, 0, 0, 0, 240, + 241, 0, 242, 243, 244, 245, 246, 247, 248, 249, + 250, 251, 252, 253, 0, 254, 255, 256, 257, 258, + 259, 0, 1233, 260, 261, 262, 263, 264, 0, 265, + 266, 267, 268, 1236, 0, 1237, 0, 271, 272, 273, + 274, 275, 276, 277, 278, 279, 0, 280, 281, 282, + 283, 284, 285, 0, 286, 287, 288, 289, 1238, 1239, + 1240, 1241, 1242, 1243, 1244, 291, 292, 293, 294, 295, + 296, 297, 298, 299, 0, 300, 0, 301, 302, 303, + 304, 305, 306, 0, 307, 308, 309, 310, 0, 0, + 311, 312, 313, 314, 315, 0, 316, 317, 318, 0, + 319, 320, 321, 0, 322, 323, 324, 325, 326, 327, + 328, 329, 330, 1249, 0, 332, 0, 333, 334, 335, + 336, 0, 337, 0, 338, 339, 0, 340, 341, 342, + 343, 344, 0, 345, 1252, 0, 347, 348, 349, 0, + 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, + 0, 360, 361, 362, 363, 364, 365, 366, 0, 367, + 368, 369, 370, 371, 372, 373, 374, 375, 0, 376, + 0, 377, 378, 379, 380, 381, 382, 383, 384, 385, + 386, 3632, 0, 387, 1257, 389, 390, 391, 0, 392, + 393, 394, 1258, 1259, 395, 396, 397, 398, 399, 400, + 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, - 0, 421, 422, 423, 424, 425, 426, 427, 428, 2139, - 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, - 439, 440, 441, 442, 0, 443, 444, 445, 446, 447, - 448, 449, 450, 451, 452, 453, 454, 0, 455, 456, - 0, 457, 458, 459, 460, 461, 462, 463, 464, 465, - 466, 467, 468, 469, 0, 470, 471, 472, 473, 474, - 0, 475, 476, 477, 478, 479, 0, 480, 481, 482, - 483, 0, 484, 485, 486, 487, 488, 489, 490, 491, - 492, 493, 494, 495, 496, 0, 497, 498, 0, 499, - 0, 500, 501, 502, 503, 504, 0, 505, 506, 0, - 0, 507, 508, 509, 510, 511, 0, 512, 513, 514, - 515, 516, 517, 518, 0, 2140, 519, 520, 521, 522, - 523, 0, 0, 524, 525, 526, 527, 528, 529, 530, - 0, 531, 0, 532, 533, 534, 535, 0, 0, 536, - 0, 0, 537, 538, 539, 540, 541, 542, 543, 544, - 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, - 555, 556, 223, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 224, 225, 226, - 227, 228, 733, 230, 231, 695, 233, 234, 235, 0, - 0, 0, 0, 0, 0, 0, 236, 237, 0, 238, - 239, 240, 0, 241, 242, 243, 244, 245, 0, 246, - 247, 0, 248, 249, 250, 251, 252, 0, 0, 253, - 254, 255, 256, 257, 0, 258, 259, 260, 261, 262, - 0, 0, 0, 263, 264, 265, 266, 267, 0, 268, - 269, 270, 0, 271, 272, 273, 274, 275, 276, 696, - 0, 277, 278, 279, 0, 0, 0, 0, 0, 0, - 0, 280, 281, 282, 283, 284, 285, 286, 287, 288, - 0, 289, 0, 290, 291, 292, 293, 294, 295, 0, - 296, 297, 298, 299, 0, 0, 300, 301, 302, 303, - 304, 0, 305, 306, 307, 0, 308, 309, 310, 0, - 311, 312, 313, 314, 315, 316, 317, 318, 319, 0, - 320, 0, 321, 322, 323, 324, 0, 325, 0, 326, - 0, 0, 0, 327, 328, 329, 330, 734, 331, 332, - 0, 333, 334, 0, 335, 336, 337, 338, 339, 0, - 340, 341, 342, 343, 0, 344, 345, 346, 347, 348, - 349, 0, 350, 0, 351, 352, 353, 354, 355, 356, - 357, 0, 358, 0, 359, 0, 0, 360, 0, 361, - 362, 363, 364, 365, 0, 0, 366, 367, 0, 368, - 0, 0, 369, 370, 371, 0, 0, 372, 373, 374, - 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, - 385, 386, 387, 388, 0, 389, 390, 391, 392, 393, - 0, 394, 395, 0, 396, 0, 397, 398, 399, 400, - 401, 402, 0, 403, 404, 0, 0, 405, 406, 407, - 0, 0, 408, 409, 0, 410, 0, 411, 412, 413, - 414, 415, 416, 417, 418, 419, 420, 0, 421, 422, - 423, 424, 425, 426, 427, 428, 0, 429, 430, 431, - 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, - 442, 697, 443, 444, 445, 446, 447, 448, 449, 450, - 451, 452, 453, 454, 0, 455, 456, 0, 457, 458, - 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, - 469, 698, 470, 471, 472, 473, 474, 0, 475, 476, - 477, 478, 479, 0, 480, 481, 482, 483, 0, 484, - 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, - 495, 496, 0, 497, 498, 0, 499, 0, 500, 501, - 502, 503, 504, 0, 505, 506, 0, 0, 507, 508, - 509, 510, 511, 0, 512, 513, 514, 515, 516, 517, - 518, 0, 0, 519, 520, 521, 522, 523, 0, 0, - 524, 525, 526, 527, 528, 529, 530, 0, 531, 0, - 532, 533, 534, 535, 0, 0, 536, 0, 0, 537, - 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, - 548, 549, 550, 551, 552, 553, 554, 555, 556, 223, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 224, 225, 226, 227, 228, 229, - 230, 231, 695, 233, 234, 235, 0, 0, 0, 0, - 0, 0, 0, 236, 237, 0, 238, 239, 240, 0, - 241, 242, 243, 244, 245, 0, 246, 247, 0, 248, - 249, 250, 251, 252, 0, 0, 253, 254, 255, 256, - 257, 0, 258, 259, 260, 261, 262, 0, 0, 0, - 263, 264, 265, 266, 267, 0, 268, 269, 270, 0, - 271, 272, 273, 274, 275, 276, 696, 0, 277, 278, - 279, 0, 0, 0, 0, 0, 0, 0, 280, 281, - 282, 283, 284, 285, 286, 287, 288, 0, 289, 0, - 290, 291, 292, 293, 294, 295, 0, 296, 297, 298, - 299, 0, 0, 300, 301, 302, 303, 304, 0, 305, - 306, 307, 0, 308, 309, 310, 0, 311, 312, 313, - 314, 315, 316, 317, 318, 319, 0, 320, 0, 321, - 322, 323, 324, 0, 325, 0, 326, 0, 0, 0, - 327, 328, 329, 330, 2867, 331, 332, 0, 333, 334, - 0, 335, 336, 337, 338, 339, 0, 340, 341, 342, - 343, 0, 344, 345, 346, 347, 348, 349, 0, 350, - 0, 351, 352, 353, 354, 355, 356, 357, 0, 358, - 0, 359, 0, 0, 360, 0, 361, 362, 363, 364, - 365, 0, 0, 366, 367, 0, 368, 0, 0, 369, - 370, 371, 0, 0, 372, 373, 374, 375, 376, 377, - 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, - 388, 0, 389, 390, 391, 392, 393, 0, 394, 395, - 0, 396, 0, 397, 398, 399, 400, 401, 402, 0, - 403, 404, 0, 0, 405, 406, 407, 0, 0, 408, - 409, 0, 410, 0, 411, 412, 413, 414, 415, 416, - 417, 418, 419, 420, 0, 421, 422, 423, 424, 425, - 426, 427, 428, 0, 429, 430, 431, 432, 433, 434, - 435, 436, 437, 438, 439, 440, 441, 442, 697, 443, - 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, - 454, 0, 455, 456, 0, 457, 458, 459, 460, 461, - 462, 463, 464, 465, 466, 467, 468, 469, 698, 470, - 471, 472, 473, 474, 0, 475, 476, 477, 478, 479, - 0, 480, 481, 482, 483, 0, 484, 485, 486, 487, - 488, 489, 490, 491, 492, 493, 494, 495, 496, 0, - 497, 498, 0, 499, 0, 500, 501, 502, 503, 504, - 0, 505, 506, 0, 0, 507, 508, 509, 510, 511, - 0, 512, 513, 514, 515, 516, 517, 518, 0, 0, - 519, 520, 521, 522, 523, 0, 0, 524, 525, 526, - 527, 528, 529, 530, 0, 531, 0, 532, 533, 534, - 535, 0, 0, 536, 0, 0, 537, 538, 539, 540, - 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, - 551, 552, 553, 554, 555, 556, 223, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 224, 225, 226, 227, 228, 229, 230, 231, 0, - 233, 234, 235, 0, 0, 0, 0, 0, 0, 0, - 236, 237, 0, 238, 239, 240, 0, 241, 242, 243, - 244, 245, 0, 246, 247, 0, 248, 249, 250, 251, - 252, 0, 0, 253, 254, 255, 256, 257, 2135, 258, - 259, 260, 261, 262, 0, 0, 0, 263, 264, 265, - 266, 267, 0, 268, 269, 270, 2136, 271, 272, 273, - 274, 275, 276, 0, 0, 277, 278, 279, 0, 0, - 0, 0, 0, 0, 0, 280, 281, 282, 283, 284, - 285, 286, 287, 288, 0, 289, 0, 290, 291, 292, - 293, 294, 295, 0, 296, 297, 298, 299, 0, 0, - 300, 301, 302, 303, 304, 0, 305, 306, 307, 0, - 308, 309, 310, 0, 2213, 312, 313, 314, 315, 316, - 317, 318, 319, 0, 320, 0, 321, 322, 323, 324, - 0, 325, 2138, 326, 0, 0, 0, 327, 328, 329, - 330, 0, 331, 332, 0, 333, 334, 0, 335, 336, - 337, 338, 339, 0, 340, 341, 342, 343, 0, 344, - 345, 346, 347, 348, 349, 0, 350, 0, 351, 352, - 353, 354, 355, 356, 357, 0, 358, 0, 359, 0, - 0, 360, 0, 361, 362, 363, 364, 365, 0, 0, - 366, 367, 0, 368, 0, 0, 369, 370, 371, 0, - 0, 372, 373, 374, 375, 376, 377, 378, 379, 380, - 381, 382, 383, 384, 385, 386, 387, 388, 0, 389, - 390, 391, 392, 393, 0, 394, 395, 0, 396, 0, - 397, 398, 399, 400, 401, 402, 0, 403, 404, 0, - 0, 405, 406, 407, 0, 0, 408, 409, 0, 410, - 0, 411, 412, 413, 414, 415, 416, 417, 418, 419, - 420, 0, 421, 422, 423, 424, 425, 426, 427, 428, - 2139, 429, 430, 431, 432, 433, 434, 435, 436, 437, - 438, 439, 440, 441, 442, 0, 443, 444, 445, 446, - 447, 448, 449, 450, 451, 452, 453, 454, 0, 455, - 456, 0, 457, 458, 459, 460, 461, 462, 463, 464, - 465, 466, 467, 468, 469, 0, 470, 471, 472, 473, - 474, 0, 475, 476, 477, 478, 479, 0, 480, 481, - 482, 483, 0, 484, 485, 486, 487, 488, 489, 490, - 491, 492, 493, 494, 495, 496, 0, 497, 498, 0, - 499, 0, 500, 501, 502, 503, 504, 0, 505, 506, - 0, 0, 507, 508, 509, 510, 511, 0, 512, 513, - 514, 515, 516, 517, 518, 0, 2140, 519, 520, 521, - 522, 523, 0, 0, 524, 525, 526, 527, 528, 529, - 530, 0, 531, 0, 532, 533, 534, 535, 0, 0, - 536, 0, 0, 537, 538, 539, 540, 541, 542, 543, - 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, - 554, 555, 556, 223, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 224, 225, - 226, 227, 228, 229, 230, 231, 695, 233, 234, 235, - 0, 0, 0, 0, 0, 0, 0, 236, 237, 0, - 238, 239, 240, 0, 241, 242, 243, 244, 245, 0, - 246, 247, 0, 248, 249, 250, 251, 252, 0, 0, - 253, 254, 255, 256, 257, 0, 258, 259, 260, 261, - 262, 0, 0, 0, 263, 264, 265, 266, 267, 0, - 268, 269, 270, 0, 271, 272, 273, 274, 275, 276, - 696, 0, 277, 278, 279, 0, 0, 0, 0, 0, - 0, 0, 280, 281, 282, 283, 284, 285, 286, 287, - 288, 0, 289, 0, 290, 291, 292, 293, 294, 295, - 0, 296, 297, 298, 299, 0, 0, 300, 301, 302, - 303, 304, 0, 305, 306, 307, 0, 308, 309, 310, - 0, 311, 312, 313, 314, 315, 316, 317, 318, 319, - 0, 320, 0, 321, 322, 323, 324, 0, 325, 0, - 326, 0, 0, 0, 327, 328, 329, 330, 0, 331, - 332, 0, 333, 334, 0, 335, 336, 337, 338, 339, - 0, 340, 341, 342, 343, 0, 344, 345, 346, 347, - 348, 349, 0, 350, 0, 351, 352, 353, 354, 355, - 356, 357, 0, 358, 0, 359, 0, 0, 360, 0, - 361, 362, 363, 364, 365, 0, 0, 366, 367, 0, - 368, 0, 0, 369, 370, 371, 0, 0, 372, 373, - 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, - 384, 385, 386, 387, 388, 0, 389, 390, 391, 392, - 393, 0, 394, 395, 0, 396, 0, 397, 398, 399, - 400, 401, 402, 0, 403, 404, 0, 0, 405, 406, - 407, 0, 0, 408, 409, 0, 410, 0, 411, 412, - 413, 414, 415, 416, 417, 418, 419, 420, 0, 421, - 422, 423, 424, 425, 426, 427, 428, 0, 429, 430, - 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, - 441, 442, 697, 443, 444, 445, 446, 447, 448, 449, - 450, 451, 452, 453, 454, 0, 455, 456, 0, 457, - 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, - 468, 469, 698, 470, 471, 472, 473, 474, 0, 475, - 476, 477, 478, 479, 0, 480, 481, 482, 483, 0, - 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, - 494, 495, 496, 0, 497, 498, 0, 499, 0, 500, - 501, 502, 503, 504, 0, 505, 506, 0, 0, 507, - 508, 509, 510, 511, 0, 512, 513, 514, 515, 516, - 517, 518, 0, 0, 519, 520, 521, 522, 523, 0, - 0, 524, 525, 526, 527, 528, 529, 530, 0, 531, - 0, 532, 533, 534, 535, 0, 0, 536, 0, 0, - 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, - 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, - 223, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 224, 225, 226, 227, 228, - 229, 230, 231, 1789, 233, 234, 235, 0, 0, 0, - 0, 0, 0, 0, 236, 237, 0, 238, 239, 240, - 0, 241, 242, 243, 244, 245, 0, 246, 247, 0, - 248, 249, 250, 251, 252, 0, 0, 253, 254, 255, - 256, 257, 0, 258, 259, 260, 261, 262, 0, 0, - 0, 263, 264, 265, 266, 267, 0, 268, 269, 270, - 0, 271, 272, 273, 274, 275, 276, 0, 0, 277, - 278, 279, 0, 0, 0, 0, 0, 0, 0, 280, - 281, 282, 1790, 284, 285, 286, 287, 288, 0, 289, - 0, 290, 291, 292, 293, 294, 295, 0, 296, 297, - 298, 299, 0, 0, 300, 1791, 302, 303, 304, 0, - 305, 306, 307, 0, 308, 309, 310, 0, 311, 312, - 313, 314, 315, 316, 317, 318, 319, 0, 320, 0, - 321, 322, 323, 324, 0, 325, 1792, 326, 0, 0, - 0, 1793, 328, 329, 330, 0, 331, 332, 0, 333, - 334, 0, 335, 336, 337, 338, 339, 0, 340, 341, - 342, 343, 0, 344, 345, 346, 347, 348, 349, 0, - 350, 0, 351, 352, 353, 354, 355, 356, 357, 0, - 358, 0, 359, 0, 0, 360, 0, 361, 362, 1794, - 1795, 365, 0, 0, 366, 367, 0, 368, 0, 0, - 369, 370, 371, 0, 0, 372, 373, 374, 375, 376, + 421, 1262, 423, 0, 424, 425, 426, 427, 0, 1265, + 429, 430, 431, 432, 433, 0, 434, 435, 0, 818, + 436, 437, 438, 0, 0, 439, 440, 441, 442, 443, + 444, 1268, 446, 447, 448, 449, 450, 451, 452, 453, + 454, 0, 455, 456, 1269, 458, 459, 460, 461, 462, + 0, 463, 464, 465, 466, 467, 468, 469, 470, 471, + 472, 473, 474, 475, 476, 477, 0, 478, 479, 480, + 481, 482, 483, 484, 485, 486, 487, 488, 489, 0, + 490, 491, 492, 493, 494, 495, 496, 497, 498, 3633, + 500, 501, 502, 503, 504, 505, 506, 507, 40, 508, + 509, 510, 511, 512, 1272, 513, 514, 515, 516, 517, + 518, 519, 520, 521, 522, 0, 523, 524, 525, 526, + 527, 528, 529, 530, 531, 532, 533, 534, 535, 1274, + 537, 0, 538, 539, 44, 540, 541, 542, 543, 544, + 545, 546, 0, 547, 548, 549, 0, 0, 550, 551, + 1277, 553, 1278, 0, 555, 556, 557, 558, 559, 560, + 561, 562, 0, 0, 563, 564, 565, 566, 567, 1281, + 0, 568, 569, 570, 571, 572, 1157, 574, 0, 575, + 576, 577, 578, 579, 580, 0, 0, 581, 0, 49, + 582, 583, 584, 585, 586, 587, 588, 1283, 1284, 1285, + 1286, 593, 1287, 1288, 1289, 1290, 3634, 599, 600, 601, + 228, 0, 50, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 3635, 0, 229, + 230, 231, 232, 233, 234, 235, 236, 0, 237, 238, + 239, 0, 0, 0, 0, 0, 0, 0, 240, 241, + 0, 242, 243, 244, 245, 246, 247, 248, 249, 250, + 251, 252, 253, 0, 254, 255, 256, 257, 258, 259, + 0, 1233, 260, 261, 262, 263, 264, 0, 265, 266, + 267, 268, 1236, 0, 1237, 0, 271, 272, 273, 274, + 275, 276, 277, 278, 279, 0, 280, 281, 282, 283, + 284, 285, 0, 286, 287, 288, 289, 1238, 1239, 1240, + 1241, 1242, 1243, 1244, 291, 292, 293, 294, 295, 296, + 297, 298, 299, 0, 300, 0, 301, 302, 303, 304, + 305, 306, 0, 307, 308, 309, 310, 0, 0, 311, + 312, 313, 314, 315, 0, 316, 317, 318, 0, 319, + 320, 321, 0, 322, 323, 324, 325, 326, 327, 328, + 329, 330, 1249, 0, 332, 0, 333, 334, 335, 336, + 0, 337, 0, 338, 339, 0, 340, 341, 342, 343, + 344, 0, 345, 1252, 0, 347, 348, 349, 0, 350, + 351, 352, 353, 354, 355, 356, 357, 358, 359, 0, + 360, 361, 362, 363, 364, 365, 366, 0, 367, 368, + 369, 370, 371, 372, 373, 374, 375, 0, 376, 0, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, - 387, 388, 0, 389, 390, 391, 392, 393, 0, 394, - 395, 0, 396, 0, 397, 398, 399, 400, 401, 402, - 0, 403, 404, 0, 0, 405, 406, 407, 0, 0, - 408, 409, 0, 410, 0, 411, 412, 413, 414, 415, - 416, 417, 418, 419, 420, 0, 421, 422, 423, 424, - 425, 426, 427, 428, 0, 429, 430, 431, 432, 433, - 434, 435, 436, 437, 438, 439, 440, 441, 442, 0, - 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, - 453, 454, 0, 455, 456, 0, 457, 458, 459, 460, - 461, 462, 463, 1796, 465, 466, 467, 468, 469, 0, - 1797, 471, 472, 473, 474, 0, 475, 476, 477, 478, - 479, 0, 480, 481, 482, 483, 0, 484, 485, 486, - 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, - 0, 497, 498, 1798, 499, 0, 1799, 501, 502, 503, - 504, 0, 505, 506, 0, 0, 507, 508, 509, 510, - 511, 0, 512, 513, 1800, 515, 516, 517, 518, 0, - 0, 519, 520, 521, 522, 523, 0, 0, 524, 525, - 526, 527, 528, 529, 530, 0, 531, 0, 532, 533, - 534, 535, 0, 0, 536, 0, 0, 537, 538, 539, - 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, - 550, 551, 552, 553, 554, 555, 556, 223, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 224, 225, 226, 227, 228, 229, 230, 231, - 0, 233, 234, 235, 0, 0, 0, 0, 0, 0, - 0, 236, 237, 0, 238, 239, 240, 0, 241, 242, - 243, 244, 245, 0, 246, 247, 0, 248, 249, 250, - 251, 252, 0, 0, 253, 254, 255, 256, 257, 0, - 258, 259, 260, 261, 262, 0, 0, 0, 263, 264, - 265, 266, 267, 0, 268, 269, 270, 0, 271, 272, - 273, 274, 275, 276, 696, 0, 277, 278, 279, 0, - 0, 0, 0, 0, 0, 0, 280, 281, 282, 283, - 284, 285, 286, 287, 288, 0, 289, 0, 290, 291, - 292, 293, 294, 295, 0, 296, 297, 298, 299, 0, - 0, 300, 301, 302, 303, 304, 0, 305, 306, 307, - 0, 308, 309, 310, 0, 311, 312, 313, 314, 315, - 316, 317, 318, 319, 0, 320, 0, 321, 322, 323, - 324, 0, 325, 0, 326, 0, 0, 0, 327, 328, - 329, 330, 0, 331, 332, 0, 333, 334, 0, 335, - 336, 337, 338, 339, 0, 340, 341, 342, 343, 0, - 344, 345, 346, 347, 348, 349, 0, 350, 0, 351, - 352, 353, 354, 355, 356, 357, 0, 358, 0, 359, - 0, 0, 360, 0, 361, 362, 363, 364, 365, 0, - 0, 366, 367, 0, 368, 0, 0, 369, 370, 371, - 0, 0, 372, 373, 374, 375, 376, 377, 378, 379, - 380, 381, 382, 383, 384, 385, 386, 387, 388, 0, - 389, 390, 391, 392, 393, 0, 394, 395, 0, 396, - 0, 397, 398, 399, 400, 401, 402, 0, 403, 404, - 0, 0, 405, 406, 407, 0, 0, 408, 409, 0, - 410, 0, 411, 412, 413, 414, 415, 416, 417, 418, - 419, 420, 0, 421, 422, 423, 424, 425, 426, 427, - 428, 0, 429, 430, 431, 432, 433, 434, 435, 436, - 437, 438, 439, 440, 441, 442, 697, 443, 444, 445, + 3632, 0, 387, 1257, 389, 390, 391, 0, 392, 393, + 394, 1258, 1259, 395, 396, 397, 398, 399, 400, 401, + 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, + 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, + 1262, 423, 0, 424, 425, 426, 427, 0, 1265, 429, + 430, 431, 432, 433, 0, 434, 435, 0, 818, 436, + 437, 438, 0, 0, 439, 440, 441, 442, 443, 444, + 1268, 446, 447, 448, 449, 450, 451, 452, 453, 454, + 0, 455, 456, 1269, 458, 459, 460, 461, 462, 0, + 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, + 473, 474, 475, 476, 477, 0, 478, 479, 480, 481, + 482, 483, 484, 485, 486, 487, 488, 489, 0, 490, + 491, 492, 493, 494, 495, 496, 497, 498, 3633, 500, + 501, 502, 503, 504, 505, 506, 507, 0, 508, 509, + 510, 511, 512, 1272, 513, 514, 515, 516, 517, 518, + 519, 520, 521, 522, 0, 523, 524, 525, 526, 527, + 528, 529, 530, 531, 532, 533, 534, 535, 1274, 537, + 0, 538, 539, 0, 540, 541, 542, 543, 544, 545, + 546, 0, 547, 548, 549, 0, 0, 550, 551, 1277, + 553, 1278, 0, 555, 556, 557, 558, 559, 560, 561, + 562, 0, 0, 563, 564, 565, 566, 567, 1281, 0, + 568, 569, 570, 571, 572, 573, 574, 0, 575, 576, + 577, 578, 579, 580, 0, 0, 581, 0, 0, 582, + 583, 584, 585, 586, 587, 588, 1283, 1284, 1285, 1286, + 593, 1287, 1288, 1289, 1290, 3634, 599, 600, 601, 228, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 3635, 0, 229, 230, + 231, 232, 233, 234, 235, 236, 0, 237, 238, 239, + 0, 0, 0, 0, 0, 0, 0, 240, 241, 0, + 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, + 252, 253, 0, 254, 255, 256, 257, 258, 259, 0, + 1233, 260, 261, 262, 263, 264, 0, 265, 266, 267, + 268, 1236, 0, 1237, 0, 271, 272, 273, 274, 275, + 276, 277, 278, 279, 0, 280, 281, 282, 283, 284, + 285, 0, 286, 287, 288, 289, 1238, 1239, 1240, 1241, + 1242, 1243, 1244, 291, 292, 293, 294, 295, 296, 297, + 298, 299, 0, 300, 0, 301, 302, 303, 304, 305, + 306, 0, 307, 308, 309, 310, 0, 0, 311, 312, + 313, 314, 315, 0, 316, 317, 318, 0, 319, 320, + 321, 0, 322, 323, 324, 325, 326, 327, 328, 329, + 330, 1249, 0, 332, 0, 333, 334, 335, 336, 0, + 337, 0, 338, 339, 0, 340, 341, 342, 343, 344, + 0, 345, 1252, 0, 347, 348, 349, 0, 350, 351, + 352, 353, 354, 355, 356, 357, 358, 359, 0, 360, + 361, 362, 363, 364, 365, 366, 0, 367, 368, 369, + 370, 371, 372, 373, 374, 375, 0, 376, 0, 377, + 378, 379, 380, 381, 382, 383, 384, 385, 386, 0, + 0, 387, 1257, 389, 390, 391, 0, 392, 393, 394, + 1258, 1259, 395, 396, 397, 398, 399, 400, 401, 402, + 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, + 413, 414, 415, 416, 417, 418, 419, 420, 421, 1262, + 423, 0, 424, 425, 426, 427, 0, 1265, 429, 430, + 431, 432, 433, 0, 434, 435, 0, 0, 436, 437, + 438, 0, 0, 439, 440, 441, 442, 443, 444, 1268, 446, 447, 448, 449, 450, 451, 452, 453, 454, 0, - 455, 456, 0, 457, 458, 459, 460, 461, 462, 463, - 464, 465, 466, 467, 468, 469, 698, 470, 471, 472, - 473, 474, 0, 475, 476, 477, 478, 479, 0, 480, - 481, 482, 483, 0, 484, 485, 486, 487, 488, 489, - 490, 491, 492, 493, 494, 495, 496, 0, 497, 498, - 0, 499, 0, 500, 501, 502, 503, 504, 0, 505, - 506, 0, 0, 507, 508, 509, 510, 511, 0, 512, - 513, 514, 515, 516, 517, 518, 0, 0, 519, 520, - 521, 522, 523, 0, 0, 524, 525, 526, 527, 528, - 529, 530, 0, 531, 0, 532, 533, 534, 535, 0, - 0, 536, 0, 0, 537, 538, 539, 540, 541, 542, - 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, - 553, 554, 555, 556, 223, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, - 225, 226, 227, 228, 229, 230, 231, 895, 233, 234, - 235, 0, 0, 0, 0, 0, 0, 0, 236, 237, - 0, 238, 239, 240, 0, 241, 242, 243, 244, 245, - 0, 246, 247, 0, 248, 249, 250, 251, 252, 0, - 0, 253, 254, 255, 256, 257, 0, 258, 259, 260, - 261, 262, 0, 0, 0, 263, 264, 265, 266, 267, - 0, 268, 269, 270, 0, 271, 272, 273, 274, 275, - 276, 0, 0, 277, 278, 279, 0, 0, 0, 0, - 0, 0, 0, 280, 281, 282, 283, 284, 285, 286, - 287, 288, 0, 289, 0, 290, 291, 292, 293, 294, - 295, 0, 296, 297, 298, 299, 0, 0, 300, 301, - 302, 303, 304, 0, 305, 306, 307, 0, 308, 309, - 310, 0, 311, 312, 313, 314, 315, 316, 317, 318, - 319, 0, 320, 0, 321, 322, 323, 324, 0, 325, - 0, 326, 0, 0, 0, 327, 328, 329, 330, 0, - 331, 332, 0, 333, 334, 0, 335, 336, 337, 338, - 896, 0, 340, 341, 342, 343, 0, 344, 345, 346, - 347, 348, 349, 0, 350, 0, 351, 352, 353, 354, - 355, 356, 357, 0, 358, 0, 359, 0, 0, 360, - 0, 361, 362, 363, 364, 365, 0, 0, 366, 367, - 0, 368, 0, 0, 369, 370, 371, 0, 0, 372, - 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, - 383, 384, 385, 386, 387, 388, 0, 389, 390, 391, - 392, 393, 0, 394, 395, 0, 396, 0, 397, 398, - 399, 400, 401, 402, 0, 403, 404, 0, 765, 405, - 406, 407, 0, 0, 408, 409, 0, 410, 0, 411, - 412, 413, 414, 415, 416, 417, 418, 419, 420, 0, - 421, 422, 423, 424, 425, 426, 427, 428, 0, 429, - 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, - 440, 441, 442, 0, 443, 444, 445, 446, 447, 448, - 449, 450, 451, 452, 453, 454, 0, 455, 456, 0, - 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, - 467, 468, 469, 0, 470, 471, 472, 473, 474, 0, - 475, 476, 477, 478, 479, 0, 480, 481, 482, 483, - 0, 484, 485, 486, 487, 488, 489, 490, 491, 492, - 493, 494, 495, 496, 0, 497, 498, 0, 499, 0, - 500, 501, 502, 503, 504, 0, 505, 506, 0, 0, - 507, 508, 509, 510, 511, 0, 512, 513, 514, 515, - 516, 517, 518, 0, 0, 519, 520, 521, 522, 523, - 0, 0, 524, 525, 526, 527, 528, 529, 530, 0, - 531, 0, 532, 533, 534, 535, 0, 0, 536, 0, - 0, 537, 538, 539, 540, 541, 542, 543, 544, 545, - 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, - 556, 223, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 224, 225, 226, 227, - 228, 229, 230, 231, 0, 233, 234, 235, 3, 4, - 0, 0, 0, 0, 0, 236, 237, 0, 238, 239, - 240, 0, 241, 242, 243, 244, 245, 0, 246, 247, - 0, 248, 249, 250, 251, 252, 0, 0, 253, 254, - 255, 256, 257, 0, 258, 259, 260, 261, 262, 0, - 0, 0, 263, 264, 265, 266, 267, 0, 268, 269, - 270, 0, 271, 272, 273, 274, 275, 276, 0, 0, - 277, 278, 279, 0, 0, 0, 0, 0, 0, 0, - 280, 281, 282, 283, 284, 285, 286, 287, 288, 0, - 289, 0, 290, 291, 292, 293, 294, 295, 0, 296, - 297, 298, 299, 0, 0, 300, 301, 302, 303, 304, - 0, 305, 306, 307, 0, 308, 309, 310, 0, 311, - 312, 313, 314, 315, 316, 317, 318, 319, 0, 320, - 0, 321, 322, 323, 324, 0, 325, 0, 326, 0, - 0, 0, 327, 328, 329, 330, 0, 331, 332, 0, - 333, 334, 0, 335, 336, 337, 338, 339, 0, 340, - 341, 342, 343, 0, 344, 345, 346, 347, 348, 349, - 0, 350, 0, 351, 352, 353, 354, 355, 356, 357, - 0, 358, 0, 359, 0, 0, 360, 0, 361, 362, - 363, 364, 365, 0, 0, 366, 367, 0, 368, 0, - 0, 369, 370, 371, 0, 0, 372, 373, 374, 375, - 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, - 386, 387, 388, 0, 389, 390, 391, 392, 393, 0, - 394, 395, 0, 396, 0, 397, 398, 399, 400, 401, - 402, 0, 403, 404, 0, 0, 405, 406, 407, 0, - 0, 408, 409, 0, 410, 0, 411, 412, 413, 414, - 415, 416, 417, 418, 419, 420, 0, 421, 422, 423, - 424, 425, 426, 427, 428, 0, 429, 430, 431, 432, - 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, - 0, 443, 444, 445, 446, 447, 448, 449, 450, 451, - 452, 453, 454, 0, 455, 456, 0, 457, 458, 459, - 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, - 0, 470, 471, 472, 473, 474, 0, 475, 476, 477, - 478, 479, 0, 480, 481, 482, 483, 0, 484, 485, - 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, - 496, 0, 497, 498, 0, 499, 0, 500, 501, 502, - 503, 504, 0, 505, 506, 0, 0, 507, 508, 509, - 510, 511, 0, 512, 513, 514, 515, 516, 517, 518, - 0, 0, 519, 520, 521, 522, 523, 0, 0, 524, - 525, 526, 527, 528, 529, 530, 0, 531, 0, 532, - 533, 534, 535, 0, 0, 536, 0, 0, 537, 538, - 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, - 549, 550, 551, 552, 553, 554, 555, 556, 223, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 224, 225, 226, 227, 228, 229, 230, - 231, 2955, 233, 234, 235, 0, 0, 0, 0, 0, - 0, 0, 236, 237, 0, 238, 239, 240, 0, 241, - 242, 243, 244, 245, 0, 246, 247, 0, 248, 249, - 250, 251, 252, 0, 0, 253, 254, 255, 256, 257, - 0, 258, 259, 260, 261, 262, 0, 0, 0, 263, - 264, 265, 266, 267, 0, 268, 269, 270, 0, 271, - 272, 273, 274, 275, 276, 0, 0, 277, 278, 279, - 0, 0, 0, 0, 0, 0, 0, 280, 281, 282, - 283, 284, 285, 286, 287, 288, 0, 289, 0, 290, - 291, 292, 293, 294, 295, 0, 296, 297, 298, 299, - 0, 0, 300, 301, 302, 303, 304, 0, 305, 306, - 307, 0, 308, 309, 310, 0, 311, 312, 313, 314, - 315, 316, 317, 318, 319, 0, 320, 0, 321, 322, - 323, 324, 0, 325, 0, 326, 0, 0, 0, 327, - 328, 329, 330, 0, 331, 332, 0, 333, 334, 0, - 335, 336, 337, 338, 339, 0, 340, 341, 342, 343, - 0, 344, 345, 346, 347, 348, 349, 0, 350, 0, - 351, 352, 353, 354, 355, 356, 357, 0, 358, 0, - 359, 0, 0, 360, 0, 361, 362, 363, 364, 365, - 0, 0, 366, 367, 0, 368, 0, 0, 369, 370, - 371, 0, 0, 372, 373, 374, 375, 376, 377, 378, - 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, - 0, 389, 390, 391, 392, 393, 0, 394, 395, 0, - 396, 0, 397, 398, 399, 400, 401, 402, 0, 403, - 404, 0, 0, 405, 406, 407, 0, 0, 408, 409, - 0, 410, 0, 411, 412, 413, 414, 415, 416, 417, - 418, 419, 420, 0, 421, 422, 423, 424, 425, 426, - 427, 428, 0, 429, 430, 431, 432, 433, 434, 435, - 436, 437, 438, 439, 440, 441, 442, 0, 443, 444, - 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, - 0, 455, 456, 0, 457, 458, 459, 460, 461, 462, - 463, 464, 465, 466, 467, 468, 469, 0, 470, 471, - 472, 473, 474, 0, 475, 476, 477, 478, 479, 0, - 480, 481, 482, 483, 0, 484, 485, 486, 487, 488, - 489, 490, 491, 492, 493, 494, 495, 496, 0, 497, - 498, 0, 499, 0, 500, 501, 502, 503, 504, 0, - 505, 506, 0, 0, 507, 508, 509, 510, 511, 0, - 512, 513, 514, 515, 516, 517, 518, 0, 0, 519, - 520, 521, 522, 523, 2956, 0, 524, 525, 526, 527, - 528, 529, 530, 0, 531, 0, 532, 533, 534, 535, - 0, 0, 536, 0, 0, 537, 538, 539, 540, 541, - 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, - 552, 553, 554, 555, 556, 223, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 224, 225, 226, 227, 228, 229, 230, 231, 2968, 233, - 234, 235, 0, 0, 0, 0, 0, 0, 0, 236, - 237, 0, 238, 239, 240, 0, 241, 242, 243, 244, - 245, 0, 246, 247, 0, 248, 249, 250, 251, 252, - 0, 0, 253, 254, 255, 256, 257, 0, 258, 259, - 260, 261, 262, 0, 0, 0, 263, 264, 265, 266, - 267, 0, 268, 269, 270, 0, 271, 272, 273, 274, - 275, 276, 0, 0, 277, 278, 279, 0, 0, 0, - 0, 0, 0, 0, 280, 281, 282, 283, 284, 285, - 286, 287, 288, 0, 289, 0, 290, 291, 292, 293, - 294, 295, 0, 296, 297, 298, 299, 0, 0, 300, - 301, 302, 303, 304, 0, 305, 306, 307, 0, 308, - 309, 310, 0, 311, 312, 313, 314, 315, 316, 317, - 318, 319, 0, 320, 0, 321, 322, 323, 324, 0, - 325, 0, 326, 0, 0, 0, 327, 328, 329, 330, - 0, 331, 332, 0, 333, 334, 0, 335, 336, 337, - 338, 339, 0, 340, 341, 342, 343, 0, 344, 345, - 346, 347, 348, 349, 0, 350, 0, 351, 352, 353, - 354, 355, 356, 357, 0, 358, 0, 359, 0, 0, - 360, 0, 361, 362, 363, 364, 365, 0, 0, 366, - 367, 0, 368, 0, 0, 369, 370, 371, 0, 0, - 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, - 382, 383, 384, 385, 386, 387, 388, 0, 389, 390, - 391, 392, 393, 0, 394, 395, 0, 396, 0, 397, - 398, 399, 400, 401, 402, 0, 403, 404, 0, 0, - 405, 406, 407, 0, 0, 408, 409, 0, 410, 0, - 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, - 0, 421, 422, 423, 424, 425, 426, 427, 428, 0, - 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, - 439, 440, 441, 442, 0, 443, 444, 445, 446, 447, - 448, 449, 450, 451, 452, 453, 454, 0, 455, 456, - 0, 457, 458, 459, 460, 461, 462, 463, 464, 465, - 466, 467, 468, 469, 0, 470, 471, 472, 473, 474, - 0, 475, 476, 477, 478, 479, 0, 480, 481, 482, - 483, 0, 484, 485, 486, 487, 488, 489, 490, 491, - 492, 493, 494, 495, 496, 0, 497, 498, 0, 499, - 0, 500, 501, 502, 503, 504, 0, 505, 506, 0, - 0, 507, 508, 509, 510, 511, 0, 512, 513, 514, - 515, 516, 517, 518, 0, 0, 519, 520, 521, 522, - 523, 2969, 0, 524, 525, 526, 527, 528, 529, 530, - 0, 531, 0, 532, 533, 534, 535, 0, 0, 536, - 0, 0, 537, 538, 539, 540, 541, 542, 543, 544, - 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, - 555, 556, 223, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 224, 225, 226, - 227, 228, 229, 230, 231, 232, 233, 234, 235, 0, - 0, 0, 0, 0, 0, 0, 236, 237, 0, 238, - 239, 240, 0, 241, 242, 243, 244, 245, 0, 246, - 247, 0, 248, 249, 250, 251, 252, 0, 0, 253, - 254, 255, 256, 257, 0, 258, 259, 260, 261, 262, - 0, 0, 0, 263, 264, 265, 266, 267, 0, 268, - 269, 270, 0, 271, 272, 273, 274, 275, 276, 0, - 0, 277, 278, 279, 0, 0, 0, 0, 0, 0, - 0, 280, 281, 282, 283, 284, 285, 286, 287, 288, - 0, 289, 0, 290, 291, 292, 293, 294, 295, 0, - 296, 297, 298, 299, 0, 0, 300, 301, 302, 303, - 304, 0, 305, 306, 307, 0, 308, 309, 310, 0, - 311, 312, 313, 314, 315, 316, 317, 318, 319, 0, - 320, 0, 321, 322, 323, 324, 0, 325, 0, 326, - 0, 0, 0, 327, 328, 329, 330, 0, 331, 332, - 0, 333, 334, 0, 335, 336, 337, 338, 339, 0, - 340, 341, 342, 343, 0, 344, 345, 346, 347, 348, - 349, 0, 350, 0, 351, 352, 353, 354, 355, 356, - 357, 0, 358, 0, 359, 0, 0, 360, 0, 361, - 362, 363, 364, 365, 0, 0, 366, 367, 0, 368, - 0, 0, 369, 370, 371, 0, 0, 372, 373, 374, - 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, - 385, 386, 387, 388, 0, 389, 390, 391, 392, 393, - 0, 394, 395, 0, 396, 0, 397, 398, 399, 400, - 401, 402, 0, 403, 404, 0, 0, 405, 406, 407, - 0, 0, 408, 409, 0, 410, 0, 411, 412, 413, - 414, 415, 416, 417, 418, 419, 420, 0, 421, 422, - 423, 424, 425, 426, 427, 428, 0, 429, 430, 431, - 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, - 442, 0, 443, 444, 445, 446, 447, 448, 449, 450, - 451, 452, 453, 454, 0, 455, 456, 0, 457, 458, - 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, - 469, 0, 470, 471, 472, 473, 474, 0, 475, 476, - 477, 478, 479, 0, 480, 481, 482, 483, 0, 484, - 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, - 495, 496, 0, 497, 498, 0, 499, 0, 500, 501, - 502, 503, 504, 0, 505, 506, 0, 0, 507, 508, - 509, 510, 511, 0, 512, 513, 514, 515, 516, 517, - 518, 0, 0, 519, 520, 521, 522, 523, 0, 0, - 524, 525, 526, 527, 528, 529, 530, 0, 531, 0, - 532, 533, 534, 535, 0, 0, 536, 0, 0, 537, - 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, - 548, 549, 550, 551, 552, 553, 554, 555, 556, 223, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 224, 225, 226, 227, 228, 229, - 230, 231, 608, 233, 234, 235, 0, 0, 0, 0, - 0, 0, 0, 236, 237, 0, 238, 239, 240, 0, - 241, 242, 243, 244, 245, 0, 246, 247, 0, 248, - 249, 250, 251, 252, 0, 0, 253, 254, 255, 256, - 257, 0, 258, 259, 260, 261, 262, 0, 0, 0, - 263, 264, 265, 266, 267, 0, 268, 269, 270, 0, - 271, 272, 273, 274, 275, 276, 0, 0, 277, 278, - 279, 0, 0, 0, 0, 0, 0, 0, 280, 281, - 282, 283, 284, 285, 286, 287, 288, 0, 289, 0, - 290, 291, 292, 293, 294, 295, 0, 296, 297, 298, - 299, 0, 0, 300, 301, 302, 303, 304, 0, 305, - 306, 307, 0, 308, 309, 310, 0, 311, 312, 313, - 314, 315, 316, 317, 318, 319, 0, 320, 0, 321, - 322, 323, 324, 0, 325, 0, 326, 0, 0, 0, - 327, 328, 329, 330, 0, 331, 332, 0, 333, 334, - 0, 335, 336, 337, 338, 339, 0, 340, 341, 342, - 343, 0, 344, 345, 346, 347, 348, 349, 0, 350, - 0, 351, 352, 353, 354, 355, 356, 357, 0, 358, - 0, 359, 0, 0, 360, 0, 361, 362, 363, 364, - 365, 0, 0, 366, 367, 0, 368, 0, 0, 369, - 370, 371, 0, 0, 372, 373, 374, 375, 376, 377, - 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, - 388, 0, 389, 390, 391, 392, 393, 0, 394, 395, - 0, 396, 0, 397, 398, 399, 400, 401, 402, 0, - 403, 404, 0, 0, 405, 406, 407, 0, 0, 408, - 409, 0, 410, 0, 411, 412, 413, 414, 415, 416, - 417, 418, 419, 420, 0, 421, 422, 423, 424, 425, - 426, 609, 428, 0, 429, 430, 431, 432, 433, 434, - 435, 436, 437, 438, 439, 440, 441, 442, 0, 443, - 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, - 454, 0, 455, 456, 0, 457, 458, 459, 460, 461, - 462, 463, 464, 465, 466, 467, 468, 469, 0, 470, - 471, 472, 473, 474, 0, 475, 476, 477, 478, 479, - 0, 480, 481, 482, 483, 0, 484, 485, 486, 487, - 488, 489, 490, 491, 492, 493, 494, 495, 496, 0, - 497, 498, 0, 499, 0, 500, 501, 502, 503, 504, - 0, 505, 506, 0, 0, 507, 508, 509, 510, 511, - 0, 512, 513, 514, 515, 516, 517, 518, 0, 0, - 519, 520, 521, 522, 523, 0, 0, 524, 525, 526, - 527, 528, 529, 530, 0, 531, 0, 532, 533, 534, - 535, 0, 0, 536, 0, 0, 537, 538, 539, 540, - 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, - 551, 552, 553, 554, 555, 556, 223, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 224, 225, 226, 227, 228, 229, 230, 231, 725, - 233, 234, 235, 0, 0, 0, 0, 0, 0, 0, - 236, 237, 0, 238, 239, 240, 0, 241, 242, 243, - 244, 245, 0, 246, 247, 0, 248, 249, 250, 251, - 252, 0, 0, 253, 254, 255, 256, 257, 0, 258, - 259, 260, 261, 262, 0, 0, 0, 263, 264, 265, - 266, 267, 0, 268, 269, 270, 0, 271, 272, 273, - 274, 275, 276, 0, 0, 277, 278, 279, 0, 0, - 0, 0, 0, 0, 0, 280, 281, 282, 283, 284, - 285, 286, 287, 288, 0, 289, 0, 290, 291, 292, - 293, 294, 295, 0, 296, 297, 298, 299, 0, 0, - 300, 301, 302, 303, 304, 0, 305, 306, 307, 0, - 308, 309, 310, 0, 311, 312, 313, 314, 315, 316, - 317, 318, 319, 0, 320, 0, 321, 322, 323, 324, - 0, 325, 0, 326, 0, 0, 0, 327, 328, 329, - 330, 0, 331, 332, 0, 333, 334, 0, 335, 336, - 337, 338, 339, 0, 340, 341, 342, 343, 0, 344, - 345, 346, 347, 348, 349, 0, 350, 0, 351, 352, - 353, 354, 355, 356, 357, 0, 358, 0, 359, 0, - 0, 360, 0, 361, 362, 363, 364, 365, 0, 0, - 366, 367, 0, 368, 0, 0, 369, 370, 371, 0, - 0, 372, 373, 374, 375, 376, 377, 378, 379, 380, - 381, 382, 383, 384, 385, 386, 387, 388, 0, 389, - 390, 391, 392, 393, 0, 394, 395, 0, 396, 0, - 397, 398, 399, 400, 401, 402, 0, 403, 404, 0, - 0, 405, 406, 407, 0, 0, 408, 409, 0, 410, - 0, 411, 412, 413, 414, 415, 416, 417, 418, 419, - 420, 0, 421, 422, 423, 424, 425, 426, 427, 428, - 0, 429, 430, 431, 432, 433, 434, 435, 436, 437, - 438, 439, 440, 441, 442, 0, 443, 444, 445, 446, + 455, 456, 1269, 458, 459, 460, 461, 462, 0, 463, + 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, + 474, 475, 476, 477, 0, 478, 479, 480, 481, 482, + 483, 484, 485, 486, 487, 488, 489, 0, 490, 491, + 492, 493, 494, 495, 496, 497, 498, 3633, 500, 501, + 502, 503, 504, 505, 506, 507, 0, 508, 509, 510, + 511, 512, 1272, 513, 514, 515, 516, 517, 518, 519, + 520, 521, 522, 0, 523, 524, 525, 526, 527, 528, + 529, 530, 531, 532, 533, 534, 535, 1274, 537, 0, + 538, 539, 0, 540, 541, 542, 543, 544, 545, 546, + 0, 547, 548, 549, 0, 0, 550, 551, 1277, 553, + 1278, 0, 555, 556, 557, 558, 559, 560, 561, 562, + 0, 0, 563, 564, 565, 566, 567, 1281, 0, 568, + 569, 570, 571, 572, 573, 574, 0, 575, 576, 577, + 578, 579, 580, 0, 0, 581, 0, 0, 582, 583, + 584, 585, 586, 587, 588, 1283, 1284, 1285, 1286, 593, + 1287, 1288, 1289, 1290, 3634, 599, 600, 601, 228, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 51, 0, 229, 230, 231, + 232, 233, 234, 235, 236, 0, 237, 238, 239, 0, + 0, 0, 0, 0, 0, 0, 240, 241, 0, 242, + 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, + 253, 0, 254, 255, 256, 257, 258, 259, 0, 1233, + 260, 261, 262, 263, 264, 0, 265, 266, 267, 268, + 1236, 0, 1237, 0, 271, 272, 273, 274, 275, 276, + 277, 278, 279, 0, 280, 281, 282, 283, 284, 285, + 0, 286, 287, 288, 289, 1238, 1239, 1240, 1241, 1242, + 1243, 1244, 291, 292, 293, 294, 295, 296, 297, 298, + 299, 0, 300, 0, 301, 302, 303, 304, 305, 306, + 0, 307, 308, 309, 310, 0, 0, 311, 312, 313, + 314, 315, 0, 316, 317, 318, 0, 319, 320, 321, + 0, 322, 323, 324, 325, 326, 327, 328, 329, 330, + 1249, 0, 332, 0, 333, 334, 335, 336, 0, 337, + 0, 338, 339, 0, 340, 341, 342, 343, 344, 0, + 345, 1252, 0, 347, 348, 349, 0, 350, 351, 352, + 353, 354, 355, 356, 357, 358, 359, 0, 360, 361, + 362, 363, 364, 365, 366, 0, 367, 368, 369, 370, + 371, 372, 373, 374, 375, 0, 376, 0, 377, 378, + 379, 380, 381, 382, 383, 384, 385, 386, 0, 0, + 387, 1257, 389, 390, 391, 0, 392, 393, 394, 1258, + 1259, 395, 396, 397, 398, 399, 400, 401, 402, 403, + 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, + 414, 415, 416, 417, 418, 419, 420, 421, 1262, 423, + 0, 424, 425, 426, 427, 0, 1265, 429, 430, 431, + 432, 433, 0, 434, 435, 0, 0, 436, 437, 438, + 0, 0, 439, 440, 441, 442, 443, 444, 1268, 446, 447, 448, 449, 450, 451, 452, 453, 454, 0, 455, - 456, 0, 457, 458, 459, 460, 461, 462, 463, 464, - 465, 466, 467, 468, 469, 0, 470, 471, 472, 473, - 726, 0, 475, 476, 477, 478, 479, 0, 480, 481, - 482, 483, 0, 484, 485, 486, 487, 488, 489, 490, - 491, 492, 493, 494, 495, 496, 0, 497, 498, 0, - 499, 0, 500, 501, 502, 503, 504, 0, 727, 506, - 0, 0, 728, 508, 509, 510, 511, 0, 512, 513, - 514, 515, 516, 517, 518, 0, 0, 519, 520, 521, - 522, 523, 0, 0, 524, 525, 526, 527, 528, 529, - 530, 0, 531, 0, 532, 533, 534, 535, 0, 0, - 536, 0, 0, 537, 538, 539, 540, 541, 542, 543, - 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, - 554, 555, 556, 223, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 224, 225, - 226, 227, 228, 229, 230, 231, 759, 233, 234, 235, - 0, 0, 0, 0, 0, 0, 0, 236, 237, 0, - 238, 239, 240, 0, 241, 242, 243, 244, 245, 0, - 246, 247, 0, 248, 249, 250, 251, 252, 0, 0, - 253, 254, 255, 256, 257, 0, 258, 259, 260, 261, - 262, 0, 0, 0, 263, 264, 265, 266, 267, 0, - 268, 269, 270, 0, 271, 272, 273, 274, 275, 276, - 0, 0, 277, 278, 279, 0, 0, 0, 0, 0, - 0, 0, 280, 281, 282, 283, 284, 285, 286, 287, - 288, 0, 289, 0, 290, 291, 292, 293, 294, 295, - 0, 296, 297, 298, 299, 0, 0, 300, 301, 302, - 303, 304, 0, 305, 306, 307, 0, 308, 309, 310, - 0, 311, 312, 313, 314, 315, 316, 317, 318, 319, - 0, 320, 0, 321, 322, 323, 324, 0, 325, 0, - 326, 0, 0, 0, 327, 328, 329, 330, 0, 331, - 332, 0, 333, 334, 0, 335, 336, 337, 338, 339, - 0, 340, 341, 342, 343, 0, 344, 345, 346, 347, - 348, 349, 0, 350, 0, 351, 352, 353, 354, 355, - 356, 357, 0, 358, 0, 359, 0, 0, 360, 0, - 361, 362, 363, 364, 365, 0, 0, 366, 367, 0, - 368, 0, 0, 369, 370, 371, 0, 0, 372, 373, - 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, - 384, 385, 386, 387, 388, 0, 389, 390, 391, 392, - 393, 0, 394, 395, 0, 396, 0, 397, 398, 399, - 400, 401, 402, 0, 403, 404, 0, 0, 405, 406, - 407, 0, 0, 408, 409, 0, 410, 0, 411, 412, - 413, 414, 415, 416, 417, 418, 419, 420, 0, 421, - 422, 423, 424, 425, 426, 427, 428, 0, 429, 430, - 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, - 441, 442, 0, 443, 444, 445, 446, 447, 448, 449, - 450, 451, 452, 453, 454, 0, 455, 456, 0, 457, - 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, - 468, 469, 0, 470, 471, 472, 473, 760, 0, 475, - 476, 477, 478, 479, 0, 480, 481, 482, 483, 0, - 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, - 494, 495, 496, 0, 497, 498, 0, 499, 0, 500, - 501, 502, 503, 504, 0, 761, 506, 0, 0, 762, - 508, 509, 510, 511, 0, 512, 513, 514, 515, 516, - 517, 518, 0, 0, 519, 520, 521, 522, 523, 0, - 0, 524, 525, 526, 527, 528, 529, 530, 0, 531, - 0, 532, 533, 534, 535, 0, 0, 536, 0, 0, - 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, - 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, - 223, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 224, 225, 226, 227, 228, - 229, 230, 231, 0, 233, 234, 235, 0, 0, 0, - 0, 0, 0, 0, 236, 237, 0, 238, 239, 240, - 0, 241, 242, 243, 244, 245, 0, 246, 247, 0, - 248, 249, 250, 251, 252, 0, 0, 253, 254, 255, - 256, 257, 0, 258, 259, 260, 261, 262, 0, 0, - 0, 263, 264, 265, 266, 267, 0, 268, 269, 270, - 0, 271, 272, 273, 274, 275, 276, 0, 0, 277, - 278, 279, 0, 0, 0, 0, 0, 0, 0, 280, - 281, 282, 283, 284, 285, 286, 287, 288, 0, 289, - 0, 290, 291, 292, 293, 294, 295, 0, 296, 297, - 298, 299, 0, 0, 300, 301, 302, 303, 304, 0, - 305, 306, 307, 0, 308, 309, 310, 0, 311, 312, - 313, 314, 315, 316, 317, 318, 319, 0, 320, 0, - 321, 322, 323, 324, 0, 325, 0, 326, 0, 0, - 0, 327, 328, 329, 330, 0, 331, 332, 0, 333, - 334, 0, 335, 336, 337, 338, 339, 0, 340, 341, - 342, 343, 0, 344, 345, 346, 347, 348, 349, 0, - 350, 0, 351, 352, 353, 354, 355, 356, 357, 0, - 358, 0, 359, 0, 0, 360, 0, 361, 362, 363, - 364, 365, 0, 0, 366, 367, 0, 368, 0, 0, - 369, 370, 371, 0, 0, 372, 373, 374, 375, 376, - 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, - 387, 388, 0, 389, 390, 391, 392, 393, 0, 394, - 395, 0, 396, 0, 397, 398, 399, 400, 401, 402, - 0, 403, 404, 0, 765, 405, 406, 407, 0, 0, - 408, 409, 0, 410, 0, 411, 412, 413, 414, 415, - 416, 417, 418, 419, 420, 0, 421, 422, 423, 424, - 425, 426, 427, 428, 0, 429, 430, 431, 432, 433, - 434, 435, 436, 437, 438, 439, 440, 441, 442, 0, - 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, - 453, 454, 0, 455, 456, 0, 457, 458, 459, 460, - 461, 462, 463, 464, 465, 466, 467, 468, 469, 0, - 470, 471, 472, 473, 474, 0, 475, 476, 477, 478, - 479, 0, 480, 481, 482, 483, 0, 484, 485, 486, - 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, - 0, 497, 498, 0, 499, 0, 500, 501, 502, 503, - 504, 0, 505, 506, 0, 0, 507, 508, 509, 510, - 511, 0, 512, 513, 514, 515, 516, 517, 518, 0, - 0, 519, 520, 521, 522, 523, 0, 0, 524, 525, - 526, 527, 528, 529, 530, 0, 531, 0, 532, 533, - 534, 535, 0, 0, 536, 0, 0, 537, 538, 539, - 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, - 550, 551, 552, 553, 554, 555, 556, 223, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 224, 225, 226, 227, 228, 229, 230, 231, - 854, 233, 234, 235, 0, 0, 0, 0, 0, 0, - 0, 236, 237, 0, 238, 239, 240, 0, 241, 242, - 243, 244, 245, 0, 246, 247, 0, 248, 249, 250, - 251, 252, 0, 0, 253, 254, 255, 256, 257, 0, - 258, 259, 260, 261, 262, 0, 0, 0, 263, 264, - 265, 266, 267, 0, 268, 269, 270, 0, 271, 272, - 273, 274, 275, 276, 0, 0, 277, 278, 279, 0, - 0, 0, 0, 0, 0, 0, 280, 281, 282, 283, - 284, 285, 286, 287, 288, 0, 289, 0, 290, 291, - 292, 293, 294, 295, 0, 296, 297, 298, 299, 0, - 0, 300, 301, 302, 303, 304, 0, 305, 306, 307, - 0, 308, 309, 310, 0, 311, 312, 313, 314, 315, - 316, 317, 318, 319, 0, 320, 0, 321, 322, 323, - 324, 0, 325, 0, 326, 0, 0, 0, 327, 328, - 329, 330, 0, 331, 332, 0, 333, 334, 0, 335, - 336, 337, 338, 855, 0, 340, 341, 342, 343, 0, - 344, 345, 346, 347, 348, 349, 0, 350, 0, 351, - 352, 353, 354, 355, 356, 357, 0, 358, 0, 359, - 0, 0, 360, 0, 361, 362, 363, 364, 365, 0, - 0, 366, 367, 0, 368, 0, 0, 369, 370, 371, - 0, 0, 372, 373, 374, 375, 376, 377, 378, 379, - 380, 381, 382, 383, 384, 385, 386, 387, 388, 0, - 389, 390, 391, 392, 393, 0, 394, 395, 0, 396, - 0, 397, 398, 399, 400, 401, 402, 0, 403, 404, - 0, 0, 405, 406, 407, 0, 0, 408, 409, 0, - 410, 0, 411, 412, 413, 414, 415, 416, 417, 418, - 419, 420, 0, 421, 422, 423, 424, 425, 426, 427, - 428, 0, 429, 430, 431, 432, 433, 434, 435, 436, - 437, 438, 439, 440, 441, 442, 0, 443, 444, 445, + 456, 1269, 458, 459, 460, 461, 462, 0, 463, 464, + 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, + 475, 476, 477, 0, 478, 479, 480, 481, 482, 483, + 484, 485, 486, 487, 488, 489, 0, 490, 491, 492, + 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, + 503, 504, 505, 506, 507, 0, 508, 509, 510, 511, + 512, 1272, 513, 514, 515, 516, 517, 518, 519, 520, + 521, 522, 0, 523, 524, 525, 526, 527, 528, 529, + 530, 531, 532, 533, 534, 535, 1274, 537, 0, 538, + 539, 0, 540, 541, 542, 543, 544, 545, 546, 0, + 547, 548, 549, 0, 0, 550, 551, 1277, 553, 1278, + 0, 555, 556, 557, 558, 559, 560, 561, 562, 0, + 0, 563, 564, 565, 566, 567, 1281, 0, 568, 569, + 570, 571, 572, 573, 574, 0, 575, 576, 577, 578, + 579, 580, 0, 0, 581, 0, 0, 582, 583, 584, + 585, 586, 587, 588, 1283, 1284, 1285, 1286, 593, 1287, + 1288, 1289, 1290, 598, 599, 600, 601, 228, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 4254, 0, 229, 230, 231, 232, + 233, 234, 235, 236, 0, 237, 238, 239, 0, 0, + 0, 0, 0, 0, 0, 240, 241, 0, 242, 243, + 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, + 0, 254, 255, 256, 257, 258, 259, 0, 1233, 260, + 261, 262, 263, 264, 0, 265, 266, 267, 268, 1236, + 0, 1237, 0, 271, 272, 273, 274, 275, 276, 277, + 278, 279, 0, 280, 281, 282, 283, 284, 285, 0, + 286, 287, 288, 289, 1238, 1239, 1240, 1241, 1242, 1243, + 1244, 291, 292, 293, 294, 295, 296, 297, 298, 299, + 0, 300, 0, 301, 302, 303, 304, 305, 306, 0, + 307, 308, 309, 310, 0, 0, 311, 312, 313, 314, + 315, 0, 316, 317, 318, 0, 319, 320, 321, 0, + 322, 323, 324, 325, 326, 327, 328, 329, 330, 1249, + 0, 332, 0, 333, 334, 335, 336, 0, 337, 0, + 338, 339, 0, 340, 341, 342, 343, 344, 0, 345, + 1252, 0, 347, 348, 349, 0, 350, 351, 352, 353, + 354, 355, 356, 357, 358, 359, 0, 360, 361, 362, + 363, 364, 365, 366, 0, 367, 368, 369, 370, 371, + 372, 373, 374, 375, 0, 376, 0, 377, 378, 379, + 380, 381, 382, 383, 384, 385, 386, 0, 0, 387, + 1257, 389, 390, 391, 0, 392, 393, 394, 1258, 1259, + 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, + 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, + 415, 416, 417, 418, 419, 420, 421, 1262, 423, 0, + 424, 425, 426, 427, 0, 1265, 429, 430, 431, 432, + 433, 0, 434, 435, 0, 0, 436, 437, 438, 0, + 0, 439, 440, 441, 442, 443, 444, 1268, 446, 447, + 448, 449, 450, 451, 452, 453, 454, 0, 455, 456, + 1269, 458, 459, 460, 461, 462, 0, 463, 464, 465, + 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, + 476, 477, 0, 478, 479, 480, 481, 482, 483, 484, + 485, 486, 487, 488, 489, 0, 490, 491, 492, 493, + 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, + 504, 505, 506, 507, 0, 508, 509, 510, 511, 512, + 1272, 513, 514, 515, 516, 517, 518, 519, 520, 521, + 522, 0, 523, 524, 525, 526, 527, 528, 529, 530, + 531, 532, 533, 534, 535, 1274, 537, 0, 538, 539, + 0, 540, 541, 542, 543, 544, 545, 546, 0, 547, + 548, 549, 0, 0, 550, 551, 1277, 553, 1278, 0, + 555, 556, 557, 558, 559, 560, 561, 562, 0, 0, + 563, 564, 565, 566, 567, 1281, 0, 568, 569, 570, + 571, 572, 573, 574, 0, 575, 576, 577, 578, 579, + 580, 0, 0, 581, 0, 0, 582, 583, 584, 585, + 586, 587, 588, 1283, 1284, 1285, 1286, 593, 1287, 1288, + 1289, 1290, 598, 599, 600, 601, 873, 0, 1511, 669, + 0, 0, 0, 0, 729, 0, 0, 0, 0, 0, + 0, 0, 0, 5360, 0, 229, 230, 231, 232, 233, + 234, 235, 236, 0, 237, 238, 239, 0, 0, 0, + 0, 0, 0, 0, 240, 241, 0, 242, 243, 244, + 245, 246, 247, 248, 249, 250, 251, 252, 253, 0, + 254, 255, 256, 257, 258, 259, 0, 0, 260, 261, + 262, 263, 264, 0, 265, 266, 267, 268, 269, 0, + 270, 0, 271, 272, 273, 274, 275, 276, 277, 278, + 279, 0, 280, 281, 282, 283, 284, 285, 0, 286, + 287, 288, 289, 0, 0, 0, 290, 0, 0, 0, + 291, 292, 293, 294, 295, 296, 297, 298, 299, 0, + 300, 0, 301, 302, 303, 304, 305, 306, 0, 307, + 308, 309, 310, 0, 0, 311, 312, 313, 314, 315, + 0, 316, 317, 318, 0, 319, 320, 321, 0, 322, + 323, 324, 325, 326, 327, 328, 329, 330, 331, 1927, + 332, 0, 333, 334, 335, 336, 0, 337, 0, 338, + 339, 0, 340, 341, 342, 343, 344, 0, 345, 346, + 0, 347, 348, 349, 0, 350, 351, 352, 353, 354, + 355, 356, 357, 358, 359, 0, 360, 361, 362, 363, + 364, 365, 366, 0, 367, 368, 369, 370, 371, 372, + 373, 374, 375, 0, 376, 0, 377, 378, 379, 380, + 381, 382, 383, 384, 385, 386, 0, 0, 387, 388, + 389, 390, 391, 0, 392, 393, 394, 0, 0, 395, + 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, + 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, + 416, 417, 418, 419, 420, 421, 422, 423, 0, 424, + 425, 426, 427, 0, 428, 429, 430, 431, 432, 433, + 0, 434, 435, 1928, 0, 436, 437, 438, 0, 0, + 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, + 449, 450, 451, 452, 453, 454, 0, 455, 456, 457, + 458, 459, 460, 461, 462, 0, 463, 464, 465, 466, + 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, + 477, 0, 478, 479, 480, 481, 482, 483, 484, 485, + 486, 487, 488, 489, 0, 490, 491, 492, 493, 494, + 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, + 505, 506, 507, 0, 508, 509, 510, 511, 512, 0, + 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, + 0, 523, 524, 525, 526, 527, 528, 529, 530, 531, + 532, 533, 534, 535, 536, 537, 0, 538, 539, 0, + 540, 541, 542, 543, 544, 545, 546, 0, 547, 548, + 549, 0, 0, 550, 551, 552, 553, 554, 1929, 555, + 556, 557, 558, 559, 560, 561, 562, 0, 0, 563, + 564, 565, 566, 567, 0, 0, 568, 569, 570, 571, + 572, 573, 574, 0, 575, 576, 577, 578, 579, 580, + 0, 0, 581, 0, 0, 582, 583, 584, 585, 586, + 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, + 597, 598, 599, 600, 601, 873, 0, 0, 0, 0, + 0, 0, 0, 1512, 1513, 5174, 0, 0, 0, 0, + 0, 0, 5175, 0, 229, 230, 231, 232, 233, 234, + 235, 236, 0, 237, 238, 239, 3, 4, 0, 0, + 0, 0, 0, 240, 241, 0, 242, 243, 244, 245, + 246, 247, 248, 249, 250, 251, 252, 253, 0, 254, + 255, 256, 257, 258, 259, 0, 0, 260, 261, 262, + 263, 264, 0, 265, 266, 267, 268, 269, 0, 270, + 0, 271, 272, 273, 274, 275, 276, 277, 278, 279, + 0, 280, 281, 282, 283, 284, 285, 0, 286, 287, + 288, 289, 0, 0, 0, 290, 0, 0, 0, 291, + 292, 293, 294, 295, 296, 297, 298, 299, 0, 300, + 0, 301, 302, 303, 304, 305, 306, 0, 307, 308, + 309, 310, 0, 0, 311, 312, 313, 314, 315, 0, + 316, 317, 318, 0, 319, 320, 321, 0, 322, 323, + 324, 325, 326, 327, 328, 329, 330, 331, 0, 332, + 0, 333, 334, 335, 336, 0, 337, 0, 338, 339, + 0, 340, 341, 342, 343, 344, 0, 345, 346, 0, + 347, 348, 349, 0, 350, 351, 352, 353, 354, 355, + 356, 357, 358, 359, 0, 360, 361, 362, 363, 364, + 365, 366, 0, 367, 368, 369, 370, 371, 372, 373, + 374, 375, 0, 376, 0, 377, 378, 379, 380, 381, + 382, 383, 384, 385, 386, 0, 0, 387, 388, 389, + 390, 391, 0, 392, 393, 394, 0, 0, 395, 396, + 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, + 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, + 417, 418, 419, 420, 421, 422, 423, 0, 424, 425, + 426, 427, 0, 428, 429, 430, 431, 432, 433, 0, + 434, 435, 0, 0, 436, 437, 438, 0, 0, 439, + 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, + 450, 451, 452, 453, 454, 0, 455, 456, 457, 458, + 459, 460, 461, 462, 0, 463, 464, 465, 466, 467, + 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, + 0, 478, 479, 480, 481, 482, 483, 484, 485, 486, + 487, 488, 489, 0, 490, 491, 492, 493, 494, 495, + 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, + 506, 507, 40, 508, 509, 510, 511, 512, 0, 513, + 514, 515, 516, 517, 518, 519, 520, 521, 522, 0, + 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, + 533, 534, 535, 536, 537, 0, 538, 539, 44, 540, + 541, 542, 543, 544, 545, 546, 0, 547, 548, 549, + 0, 0, 550, 551, 552, 553, 554, 0, 555, 556, + 557, 558, 559, 560, 561, 562, 0, 0, 563, 564, + 565, 566, 567, 0, 0, 568, 569, 570, 571, 572, + 1157, 574, 0, 575, 576, 577, 578, 579, 580, 0, + 0, 581, 0, 49, 582, 583, 584, 585, 586, 587, + 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, + 598, 599, 600, 601, 228, 0, 50, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 51, 0, 229, 230, 231, 232, 233, 234, 235, + 236, 0, 237, 238, 239, 0, 0, 0, 0, 0, + 0, 0, 240, 241, 0, 242, 243, 244, 245, 246, + 247, 248, 249, 250, 251, 252, 253, 0, 254, 255, + 256, 257, 258, 259, 0, 0, 260, 261, 262, 263, + 264, 0, 265, 266, 267, 268, 269, 0, 270, 0, + 271, 272, 273, 274, 275, 276, 277, 278, 279, 0, + 280, 281, 282, 283, 284, 285, 0, 286, 287, 288, + 289, 0, 0, 0, 290, 0, 0, 0, 291, 292, + 293, 294, 295, 296, 297, 298, 299, 0, 300, 0, + 301, 302, 303, 304, 305, 306, 0, 307, 308, 309, + 310, 0, 0, 311, 312, 313, 314, 315, 0, 316, + 317, 318, 0, 319, 320, 321, 0, 322, 323, 324, + 325, 326, 327, 328, 329, 330, 331, 0, 332, 0, + 333, 334, 335, 336, 0, 337, 0, 338, 339, 0, + 340, 341, 342, 343, 344, 0, 345, 346, 0, 347, + 348, 349, 0, 350, 351, 352, 353, 354, 355, 356, + 357, 358, 359, 0, 360, 361, 362, 363, 364, 365, + 366, 0, 367, 368, 369, 370, 371, 372, 373, 374, + 375, 0, 376, 0, 377, 378, 379, 380, 381, 382, + 383, 384, 385, 386, 0, 0, 387, 388, 389, 390, + 391, 0, 392, 393, 394, 0, 0, 395, 396, 397, + 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, + 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, + 418, 419, 420, 421, 422, 423, 0, 424, 425, 426, + 427, 0, 428, 429, 430, 431, 432, 433, 0, 434, + 435, 0, 0, 436, 437, 438, 0, 0, 439, 440, + 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, + 451, 452, 453, 454, 0, 455, 456, 457, 458, 459, + 460, 461, 462, 0, 463, 464, 465, 466, 467, 468, + 469, 470, 471, 472, 473, 474, 475, 476, 477, 0, + 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, + 488, 489, 0, 490, 491, 492, 493, 494, 495, 496, + 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, + 507, 0, 508, 509, 510, 511, 512, 0, 513, 514, + 515, 516, 517, 518, 519, 520, 521, 522, 0, 523, + 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, + 534, 535, 536, 537, 0, 538, 539, 0, 540, 541, + 542, 543, 544, 545, 546, 0, 547, 548, 549, 0, + 0, 550, 551, 552, 553, 554, 0, 555, 556, 557, + 558, 559, 560, 561, 562, 0, 0, 563, 564, 565, + 566, 567, 0, 0, 568, 569, 570, 571, 572, 573, + 574, 0, 575, 576, 577, 578, 579, 580, 0, 0, + 581, 0, 0, 582, 583, 584, 585, 586, 587, 588, + 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, + 599, 600, 601, 609, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 4957, 0, 229, 230, 231, 232, 233, 234, 235, 236, + 0, 237, 238, 239, 0, 0, 0, 0, 0, 0, + 0, 240, 241, 0, 242, 243, 244, 0, 246, 247, + 248, 249, 250, 0, 252, 253, 0, 254, 255, 256, + 257, 258, 259, 0, 0, 260, 261, 262, 263, 264, + 0, 265, 266, 267, 268, 269, 0, 0, 0, 271, + 272, 273, 274, 275, 0, 277, 278, 279, 0, 280, + 281, 282, 283, 284, 285, 0, 0, 287, 288, 289, + 0, 0, 0, 0, 0, 0, 0, 291, 292, 293, + 294, 295, 296, 297, 298, 299, 0, 300, 0, 301, + 302, 303, 304, 305, 306, 0, 307, 308, 309, 310, + 0, 0, 311, 312, 313, 314, 315, 0, 316, 317, + 318, 0, 319, 320, 321, 0, 322, 323, 324, 325, + 326, 327, 328, 329, 330, 331, 0, 332, 0, 333, + 334, 335, 336, 0, 337, 0, 338, 0, 0, 0, + 341, 342, 343, 344, 0, 345, 346, 0, 347, 348, + 349, 0, 350, 351, 352, 353, 354, 0, 356, 357, + 358, 359, 0, 360, 361, 362, 363, 364, 365, 366, + 0, 367, 0, 369, 370, 371, 372, 373, 374, 375, + 0, 376, 0, 377, 0, 0, 380, 0, 382, 383, + 384, 385, 386, 0, 0, 387, 388, 0, 390, 0, + 0, 392, 393, 394, 0, 0, 395, 396, 397, 398, + 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, + 409, 410, 411, 0, 413, 414, 415, 416, 417, 418, + 419, 420, 421, 422, 423, 0, 424, 425, 0, 427, + 0, 428, 429, 430, 431, 432, 433, 0, 434, 435, + 0, 0, 436, 437, 438, 0, 0, 439, 440, 441, + 0, 443, 0, 445, 446, 447, 448, 449, 450, 451, + 452, 453, 454, 0, 455, 456, 457, 458, 459, 460, + 461, 462, 0, 463, 464, 465, 466, 467, 468, 469, + 470, 471, 472, 473, 474, 475, 476, 477, 0, 478, + 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, + 489, 0, 490, 491, 0, 493, 494, 495, 496, 497, + 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, + 40, 508, 509, 510, 511, 512, 0, 513, 514, 515, + 516, 517, 0, 519, 520, 521, 522, 0, 523, 524, + 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, + 535, 536, 537, 0, 538, 539, 44, 540, 0, 542, + 543, 544, 545, 546, 0, 547, 548, 549, 0, 0, + 550, 551, 552, 553, 554, 0, 555, 556, 557, 558, + 559, 560, 561, 562, 0, 0, 563, 564, 565, 566, + 567, 0, 0, 568, 569, 570, 571, 572, 1157, 574, + 0, 575, 0, 577, 578, 579, 580, 0, 0, 581, + 0, 49, 582, 583, 584, 585, 586, 587, 588, 589, + 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, + 600, 601, 609, 0, 50, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 51, + 0, 229, 230, 231, 232, 233, 234, 235, 236, 0, + 237, 238, 239, 0, 0, 0, 0, 0, 0, 0, + 240, 241, 0, 242, 243, 244, 0, 246, 247, 248, + 249, 250, 0, 252, 253, 0, 254, 255, 256, 257, + 258, 259, 0, 0, 260, 261, 262, 263, 264, 0, + 265, 266, 267, 268, 269, 0, 0, 0, 271, 272, + 273, 274, 275, 0, 277, 278, 279, 0, 280, 281, + 282, 283, 284, 285, 0, 0, 287, 288, 289, 0, + 0, 0, 0, 0, 0, 0, 291, 292, 293, 294, + 295, 296, 297, 298, 299, 0, 300, 0, 301, 302, + 303, 304, 305, 306, 0, 307, 308, 309, 310, 0, + 0, 311, 312, 313, 314, 315, 0, 316, 317, 318, + 0, 319, 320, 321, 0, 322, 323, 324, 325, 326, + 327, 328, 329, 330, 331, 0, 332, 0, 333, 334, + 335, 336, 0, 337, 0, 338, 0, 0, 0, 341, + 342, 343, 344, 0, 345, 346, 0, 347, 348, 349, + 0, 350, 351, 352, 353, 354, 0, 356, 357, 358, + 359, 0, 360, 361, 362, 363, 364, 365, 366, 0, + 367, 0, 369, 370, 371, 372, 373, 374, 375, 0, + 376, 0, 377, 0, 0, 380, 0, 382, 383, 384, + 385, 386, 0, 0, 387, 388, 0, 390, 0, 0, + 392, 393, 394, 0, 0, 395, 396, 397, 398, 399, + 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, + 410, 411, 0, 413, 414, 415, 416, 417, 418, 419, + 420, 421, 422, 423, 0, 424, 425, 0, 427, 0, + 428, 429, 430, 431, 432, 433, 0, 434, 435, 0, + 0, 436, 437, 438, 0, 0, 439, 440, 441, 0, + 443, 0, 445, 446, 447, 448, 449, 450, 451, 452, + 453, 454, 0, 455, 456, 457, 458, 459, 460, 461, + 462, 0, 463, 464, 465, 466, 467, 468, 469, 470, + 471, 472, 473, 474, 475, 476, 477, 0, 478, 479, + 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, + 0, 490, 491, 0, 493, 494, 495, 496, 497, 498, + 499, 500, 501, 502, 503, 504, 505, 506, 507, 0, + 508, 509, 510, 511, 512, 0, 513, 514, 515, 516, + 517, 0, 519, 520, 521, 522, 0, 523, 524, 525, + 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, + 536, 537, 0, 538, 539, 0, 540, 0, 542, 543, + 544, 545, 546, 0, 547, 548, 549, 0, 0, 550, + 551, 552, 553, 554, 0, 555, 556, 557, 558, 559, + 560, 561, 562, 0, 0, 563, 564, 565, 566, 567, + 0, 0, 568, 569, 570, 571, 572, 573, 574, 0, + 575, 0, 577, 578, 579, 580, 0, 0, 581, 0, + 0, 582, 583, 584, 585, 586, 587, 588, 589, 590, + 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, + 601, 609, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1358, 0, + 229, 230, 231, 232, 233, 234, 235, 236, 0, 237, + 238, 239, 0, 0, 0, 0, 0, 0, 0, 240, + 241, 0, 242, 243, 244, 0, 246, 247, 248, 249, + 250, 0, 252, 253, 0, 254, 255, 256, 257, 258, + 259, 0, 0, 260, 261, 262, 263, 264, 0, 265, + 266, 267, 268, 269, 0, 0, 0, 271, 272, 273, + 274, 275, 0, 277, 278, 279, 0, 280, 281, 282, + 283, 284, 285, 0, 0, 287, 288, 289, 0, 0, + 0, 0, 0, 0, 0, 291, 292, 293, 294, 295, + 296, 297, 298, 299, 0, 300, 0, 301, 302, 303, + 304, 305, 306, 0, 307, 308, 309, 310, 0, 0, + 311, 312, 313, 314, 315, 0, 316, 317, 318, 0, + 319, 320, 321, 0, 322, 323, 324, 325, 326, 327, + 328, 329, 330, 331, 0, 332, 0, 333, 334, 335, + 336, 0, 337, 0, 338, 0, 0, 0, 341, 342, + 343, 344, 0, 345, 346, 0, 347, 348, 349, 0, + 350, 351, 352, 353, 354, 0, 356, 357, 358, 359, + 0, 360, 361, 362, 363, 364, 365, 366, 0, 367, + 0, 369, 370, 371, 372, 373, 374, 375, 0, 376, + 0, 377, 0, 0, 380, 0, 382, 383, 384, 385, + 386, 0, 0, 387, 388, 0, 390, 0, 0, 392, + 393, 394, 0, 0, 395, 396, 397, 398, 399, 400, + 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, + 411, 0, 413, 414, 415, 416, 417, 418, 419, 420, + 421, 422, 423, 0, 424, 425, 0, 427, 0, 428, + 429, 430, 431, 432, 433, 0, 434, 435, 0, 0, + 436, 437, 438, 0, 0, 439, 440, 441, 0, 443, + 0, 445, 446, 447, 448, 449, 450, 451, 452, 453, + 454, 0, 455, 456, 457, 458, 459, 460, 461, 462, + 0, 463, 464, 465, 466, 467, 468, 469, 470, 471, + 472, 473, 474, 475, 476, 477, 0, 478, 479, 480, + 481, 482, 483, 484, 485, 486, 487, 488, 489, 0, + 490, 491, 0, 493, 494, 495, 496, 497, 498, 499, + 500, 501, 502, 503, 504, 505, 506, 507, 0, 508, + 509, 510, 511, 512, 0, 513, 514, 515, 516, 517, + 0, 519, 520, 521, 522, 0, 523, 524, 525, 526, + 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, + 537, 0, 538, 539, 0, 540, 0, 542, 543, 544, + 545, 546, 0, 547, 548, 549, 0, 0, 550, 551, + 552, 553, 554, 0, 555, 556, 557, 558, 559, 560, + 561, 562, 0, 0, 563, 564, 565, 566, 567, 0, + 0, 568, 569, 570, 571, 572, 573, 574, 0, 575, + 0, 577, 578, 579, 580, 0, 0, 581, 0, 0, + 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, + 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, + 609, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 2962, 0, 229, + 230, 231, 232, 233, 234, 235, 236, 0, 237, 238, + 239, 0, 0, 0, 0, 0, 0, 0, 240, 241, + 0, 242, 243, 244, 0, 246, 247, 248, 249, 250, + 0, 252, 253, 0, 254, 255, 256, 257, 258, 259, + 0, 0, 260, 261, 262, 263, 264, 0, 265, 266, + 267, 268, 269, 0, 0, 0, 271, 272, 273, 274, + 275, 0, 277, 278, 279, 0, 280, 281, 282, 283, + 284, 285, 0, 0, 287, 288, 289, 0, 0, 0, + 0, 0, 0, 0, 291, 292, 293, 294, 295, 296, + 297, 298, 299, 0, 300, 0, 301, 302, 303, 304, + 305, 306, 0, 307, 308, 309, 310, 0, 0, 311, + 312, 313, 314, 315, 0, 316, 317, 318, 0, 319, + 320, 321, 0, 322, 323, 324, 325, 326, 327, 328, + 329, 330, 331, 0, 332, 0, 333, 334, 335, 336, + 0, 337, 0, 338, 0, 0, 0, 341, 342, 343, + 344, 0, 345, 346, 0, 347, 348, 349, 0, 350, + 351, 352, 353, 354, 0, 356, 357, 358, 359, 0, + 360, 361, 362, 363, 364, 365, 366, 0, 367, 0, + 369, 370, 371, 372, 373, 374, 375, 0, 376, 0, + 377, 0, 0, 380, 0, 382, 383, 384, 385, 386, + 0, 0, 387, 388, 0, 390, 0, 0, 392, 393, + 394, 0, 0, 395, 396, 397, 398, 399, 400, 401, + 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, + 0, 413, 414, 415, 416, 417, 418, 419, 420, 421, + 422, 423, 0, 424, 425, 0, 427, 0, 428, 429, + 430, 431, 432, 433, 0, 434, 435, 0, 0, 436, + 437, 438, 0, 0, 439, 440, 441, 0, 443, 0, + 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, + 0, 455, 456, 457, 458, 459, 460, 461, 462, 0, + 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, + 473, 474, 475, 476, 477, 0, 478, 479, 480, 481, + 482, 483, 484, 485, 486, 487, 488, 489, 0, 490, + 491, 0, 493, 494, 495, 496, 497, 498, 499, 500, + 501, 502, 503, 504, 505, 506, 507, 0, 508, 509, + 510, 511, 512, 0, 513, 514, 515, 516, 517, 0, + 519, 520, 521, 522, 0, 523, 524, 525, 526, 527, + 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, + 0, 538, 539, 0, 540, 0, 542, 543, 544, 545, + 546, 0, 547, 548, 549, 0, 0, 550, 551, 552, + 553, 554, 0, 555, 556, 557, 558, 559, 560, 561, + 562, 0, 0, 563, 564, 565, 566, 567, 0, 0, + 568, 569, 570, 571, 572, 573, 574, 0, 575, 0, + 577, 578, 579, 580, 0, 0, 581, 0, 0, 582, + 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, + 593, 594, 595, 596, 597, 598, 599, 600, 601, 609, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 4168, 0, 229, 230, + 231, 232, 233, 234, 235, 236, 0, 237, 238, 239, + 0, 0, 0, 0, 0, 0, 0, 240, 241, 0, + 242, 243, 244, 0, 246, 247, 248, 249, 250, 0, + 252, 253, 0, 254, 255, 256, 257, 258, 259, 0, + 0, 260, 261, 262, 263, 264, 0, 265, 266, 267, + 268, 269, 0, 0, 0, 271, 272, 273, 274, 275, + 0, 277, 278, 279, 0, 280, 281, 282, 283, 284, + 285, 0, 0, 287, 288, 289, 0, 0, 0, 0, + 0, 0, 0, 291, 292, 293, 294, 295, 296, 297, + 298, 299, 0, 300, 0, 301, 302, 303, 304, 305, + 306, 0, 307, 308, 309, 310, 0, 0, 311, 312, + 313, 314, 315, 0, 316, 317, 318, 0, 319, 320, + 321, 0, 322, 323, 324, 325, 326, 327, 328, 329, + 330, 331, 0, 332, 0, 333, 334, 335, 336, 0, + 337, 0, 338, 0, 0, 0, 341, 342, 343, 344, + 0, 345, 346, 0, 347, 348, 349, 0, 350, 351, + 352, 353, 354, 0, 356, 357, 358, 359, 0, 360, + 361, 362, 363, 364, 365, 366, 0, 367, 0, 369, + 370, 371, 372, 373, 374, 375, 0, 376, 0, 377, + 0, 0, 380, 0, 382, 383, 384, 385, 386, 0, + 0, 387, 388, 0, 390, 0, 0, 392, 393, 394, + 0, 0, 395, 396, 397, 398, 399, 400, 401, 402, + 403, 404, 405, 406, 407, 408, 409, 410, 411, 0, + 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, + 423, 0, 424, 425, 0, 427, 0, 428, 429, 430, + 431, 432, 433, 0, 434, 435, 0, 0, 436, 437, + 438, 0, 0, 439, 440, 441, 0, 443, 0, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 0, - 455, 456, 0, 457, 458, 459, 460, 461, 462, 463, - 464, 465, 466, 467, 468, 469, 0, 470, 471, 472, - 473, 474, 0, 475, 476, 477, 478, 479, 0, 480, - 481, 482, 483, 0, 484, 485, 486, 487, 488, 489, - 490, 491, 492, 493, 494, 495, 496, 0, 497, 498, - 0, 499, 0, 500, 501, 502, 503, 504, 0, 505, - 506, 0, 0, 507, 508, 509, 510, 511, 0, 512, - 513, 514, 515, 516, 517, 518, 0, 0, 519, 520, - 521, 522, 523, 0, 0, 524, 525, 526, 527, 528, - 529, 530, 0, 531, 0, 532, 533, 534, 535, 0, - 0, 536, 0, 0, 537, 538, 539, 540, 541, 542, - 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, - 553, 554, 555, 556, 223, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, - 225, 226, 227, 228, 229, 230, 231, 1015, 233, 234, - 235, 0, 0, 0, 0, 0, 0, 0, 236, 237, - 0, 238, 239, 240, 0, 241, 242, 243, 244, 245, - 0, 246, 247, 0, 248, 249, 250, 251, 252, 0, - 0, 253, 254, 255, 256, 257, 0, 258, 259, 260, - 261, 262, 0, 0, 0, 263, 264, 265, 266, 267, - 0, 268, 269, 270, 0, 271, 272, 273, 274, 275, - 276, 0, 0, 277, 278, 279, 0, 0, 0, 0, - 0, 0, 0, 280, 281, 282, 283, 284, 285, 286, - 287, 288, 0, 289, 0, 290, 291, 292, 293, 294, - 295, 0, 296, 297, 298, 299, 0, 0, 300, 301, - 302, 303, 304, 0, 305, 306, 307, 0, 308, 309, - 310, 0, 311, 312, 313, 314, 315, 316, 317, 318, - 319, 0, 320, 0, 321, 322, 323, 324, 0, 325, - 0, 326, 0, 0, 0, 327, 328, 329, 330, 0, - 331, 332, 0, 333, 334, 0, 335, 336, 337, 338, - 339, 0, 340, 341, 342, 343, 0, 344, 345, 346, - 347, 348, 349, 0, 350, 0, 351, 352, 353, 354, - 355, 356, 357, 0, 358, 0, 359, 0, 0, 360, - 0, 361, 362, 363, 364, 365, 0, 0, 366, 367, - 0, 368, 0, 0, 369, 370, 371, 0, 0, 372, - 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, - 383, 384, 385, 386, 387, 388, 0, 389, 390, 391, - 392, 393, 0, 394, 395, 0, 396, 0, 397, 398, - 399, 400, 401, 402, 0, 403, 404, 0, 0, 405, - 406, 407, 0, 0, 408, 409, 0, 410, 0, 411, - 412, 413, 414, 415, 416, 417, 418, 419, 420, 0, - 421, 422, 423, 424, 425, 426, 427, 428, 0, 429, - 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, - 440, 441, 442, 0, 443, 444, 445, 446, 447, 448, - 449, 450, 451, 452, 453, 454, 0, 455, 456, 0, - 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, - 467, 468, 469, 0, 470, 471, 472, 473, 474, 0, - 475, 476, 477, 478, 479, 0, 480, 481, 482, 483, - 0, 484, 485, 486, 487, 488, 489, 490, 491, 492, - 493, 494, 495, 496, 0, 497, 498, 0, 499, 0, - 500, 501, 502, 503, 504, 0, 505, 506, 0, 0, - 507, 508, 509, 510, 511, 0, 512, 513, 514, 515, - 516, 517, 518, 0, 0, 519, 520, 521, 522, 523, - 0, 0, 524, 525, 526, 527, 528, 529, 530, 0, - 531, 0, 532, 533, 534, 535, 0, 0, 536, 0, - 0, 537, 538, 539, 540, 541, 542, 543, 544, 545, - 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, - 556, 223, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 224, 225, 226, 227, - 228, 229, 230, 231, 1282, 233, 234, 235, 0, 0, - 0, 0, 0, 0, 0, 236, 237, 0, 238, 239, - 240, 0, 241, 242, 243, 244, 245, 0, 246, 247, - 0, 248, 249, 250, 251, 252, 0, 0, 253, 254, - 255, 256, 257, 0, 258, 259, 260, 261, 262, 0, - 0, 0, 263, 264, 265, 266, 267, 0, 268, 269, - 270, 0, 271, 272, 273, 274, 275, 276, 0, 0, - 277, 278, 279, 0, 0, 0, 0, 0, 0, 0, - 280, 281, 282, 283, 284, 285, 286, 287, 288, 0, - 289, 0, 290, 291, 292, 293, 294, 295, 0, 296, - 297, 298, 299, 0, 0, 300, 301, 302, 303, 304, - 0, 305, 306, 307, 0, 308, 309, 310, 0, 311, - 312, 313, 314, 315, 316, 317, 318, 319, 0, 320, - 0, 321, 322, 323, 324, 0, 325, 0, 326, 0, - 0, 0, 327, 328, 329, 330, 0, 331, 332, 0, - 333, 334, 0, 335, 336, 337, 338, 339, 0, 340, - 341, 342, 343, 0, 344, 345, 346, 347, 348, 349, - 0, 350, 0, 351, 352, 353, 354, 355, 356, 357, - 0, 358, 0, 359, 0, 0, 360, 0, 361, 362, - 363, 364, 365, 0, 0, 366, 367, 0, 368, 0, - 0, 369, 370, 371, 0, 0, 372, 373, 374, 375, - 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, - 386, 387, 388, 0, 389, 390, 391, 392, 393, 0, - 394, 395, 0, 396, 0, 397, 398, 399, 400, 401, - 402, 0, 403, 404, 0, 0, 405, 406, 407, 0, - 0, 408, 409, 0, 410, 0, 411, 412, 413, 414, - 415, 416, 417, 418, 419, 420, 0, 421, 422, 423, - 424, 425, 426, 427, 428, 0, 429, 430, 431, 432, - 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, - 0, 443, 444, 445, 446, 447, 448, 449, 450, 451, - 452, 453, 454, 0, 455, 456, 0, 457, 458, 459, - 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, - 0, 470, 471, 472, 473, 474, 0, 475, 476, 477, - 478, 479, 0, 480, 481, 482, 483, 0, 484, 485, - 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, - 496, 0, 497, 498, 0, 499, 0, 500, 501, 502, - 503, 504, 0, 505, 506, 0, 0, 507, 508, 509, - 510, 511, 0, 512, 513, 514, 515, 516, 517, 518, - 0, 0, 519, 520, 521, 522, 523, 0, 0, 524, - 525, 526, 527, 528, 529, 530, 0, 531, 0, 532, - 533, 534, 535, 0, 0, 536, 0, 0, 537, 538, - 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, - 549, 550, 551, 552, 553, 554, 555, 556, 223, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 224, 225, 226, 227, 228, 229, 230, - 231, 0, 233, 234, 235, 0, 0, 0, 0, 0, - 0, 0, 236, 237, 0, 238, 239, 240, 1297, 241, - 242, 243, 244, 245, 0, 246, 247, 0, 248, 249, - 250, 251, 252, 0, 0, 745, 254, 255, 256, 1298, - 0, 258, 259, 260, 261, 262, 0, 0, 0, 263, - 264, 265, 266, 267, 0, 268, 269, 270, 0, 271, - 272, 273, 274, 275, 276, 0, 0, 277, 278, 279, - 0, 0, 0, 0, 0, 0, 0, 280, 281, 282, - 283, 284, 285, 286, 287, 288, 0, 289, 0, 290, - 291, 292, 293, 294, 295, 0, 296, 297, 298, 299, - 0, 0, 300, 301, 302, 303, 304, 0, 305, 306, - 307, 0, 308, 309, 310, 0, 311, 312, 313, 314, - 315, 316, 317, 318, 319, 0, 320, 0, 321, 322, - 323, 324, 0, 325, 0, 326, 0, 0, 0, 327, - 328, 329, 330, 0, 331, 332, 0, 333, 334, 0, - 335, 336, 337, 338, 339, 0, 340, 341, 342, 343, - 0, 344, 345, 346, 347, 348, 349, 0, 350, 0, - 351, 352, 353, 354, 355, 356, 357, 0, 358, 0, - 359, 0, 0, 360, 0, 361, 362, 363, 364, 365, - 0, 0, 366, 367, 0, 368, 0, 0, 369, 370, - 371, 0, 0, 372, 373, 374, 375, 376, 377, 378, - 379, 380, 381, 382, 383, 384, 385, 386, 748, 388, - 0, 389, 390, 391, 392, 393, 0, 394, 395, 0, - 396, 0, 397, 398, 399, 400, 401, 402, 0, 403, - 404, 0, 0, 405, 406, 407, 0, 0, 408, 409, - 0, 410, 0, 411, 412, 413, 414, 415, 416, 417, - 418, 419, 420, 0, 421, 422, 423, 424, 425, 426, - 427, 428, 0, 429, 430, 431, 432, 433, 434, 435, - 436, 437, 438, 439, 440, 441, 442, 0, 443, 444, + 455, 456, 457, 458, 459, 460, 461, 462, 0, 463, + 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, + 474, 475, 476, 477, 0, 478, 479, 480, 481, 482, + 483, 484, 485, 486, 487, 488, 489, 0, 490, 491, + 0, 493, 494, 495, 496, 497, 498, 499, 500, 501, + 502, 503, 504, 505, 506, 507, 0, 508, 509, 510, + 511, 512, 0, 513, 514, 515, 516, 517, 0, 519, + 520, 521, 522, 0, 523, 524, 525, 526, 527, 528, + 529, 530, 531, 532, 533, 534, 535, 536, 537, 0, + 538, 539, 0, 540, 0, 542, 543, 544, 545, 546, + 0, 547, 548, 549, 0, 0, 550, 551, 552, 553, + 554, 0, 555, 556, 557, 558, 559, 560, 561, 562, + 0, 0, 563, 564, 565, 566, 567, 0, 0, 568, + 569, 570, 571, 572, 573, 574, 0, 575, 0, 577, + 578, 579, 580, 0, 0, 581, 0, 0, 582, 583, + 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, + 594, 595, 596, 597, 598, 599, 600, 601, 1070, 0, + 1511, 669, 0, 0, 0, 887, 729, 0, 0, 0, + 0, 0, 888, 889, 890, 4638, 0, 229, 230, 231, + 232, 233, 234, 235, 236, 1644, 237, 238, 239, 1645, + 1646, 1647, 1648, 1649, 1650, 1651, 240, 241, 1652, 242, + 243, 244, 245, 246, 247, 248, 0, 1071, 251, 1072, + 1073, 1653, 254, 255, 256, 257, 258, 259, 1654, 1655, + 260, 261, 1074, 1075, 264, 1656, 265, 266, 267, 268, + 0, 1657, 270, 1658, 271, 272, 273, 274, 275, 276, + 277, 278, 279, 1659, 280, 281, 282, 283, 284, 285, + 1660, 286, 287, 288, 289, 1661, 1662, 1663, 290, 1664, + 1665, 1666, 291, 292, 293, 294, 295, 296, 1076, 1077, + 299, 1667, 300, 1668, 301, 302, 303, 304, 305, 306, + 1669, 307, 308, 309, 310, 1670, 1671, 311, 312, 1078, + 314, 315, 1672, 316, 317, 318, 1673, 319, 320, 321, + 1674, 322, 323, 324, 325, 0, 327, 328, 329, 330, + 0, 1675, 332, 1676, 333, 334, 1079, 336, 1677, 337, + 1678, 338, 339, 1679, 340, 341, 342, 343, 344, 1680, + 345, 0, 1681, 0, 348, 349, 1682, 350, 351, 352, + 353, 354, 355, 356, 357, 358, 359, 1683, 360, 361, + 362, 363, 364, 365, 366, 1684, 367, 368, 0, 370, + 371, 372, 373, 1081, 1082, 1685, 1083, 1686, 377, 378, + 379, 380, 381, 382, 383, 384, 385, 386, 1687, 1688, + 387, 0, 389, 390, 391, 1689, 392, 393, 394, 1690, + 1691, 395, 396, 397, 398, 399, 400, 401, 402, 403, + 404, 405, 406, 407, 408, 409, 410, 1084, 412, 1085, + 414, 415, 416, 417, 418, 419, 420, 3912, 0, 423, + 1692, 424, 425, 426, 427, 1693, 0, 429, 1086, 431, + 432, 433, 1694, 434, 435, 1695, 1696, 3913, 437, 438, + 1697, 1698, 439, 440, 0, 442, 443, 444, 0, 446, + 447, 448, 449, 450, 451, 452, 453, 454, 1699, 455, + 456, 0, 458, 0, 460, 461, 462, 1700, 463, 464, + 465, 466, 467, 468, 469, 470, 471, 472, 1087, 474, + 475, 476, 477, 1701, 478, 479, 480, 481, 482, 483, + 484, 485, 486, 487, 488, 489, 1702, 490, 491, 492, + 493, 494, 495, 496, 497, 0, 499, 500, 501, 502, + 503, 504, 505, 506, 507, 1703, 508, 509, 510, 511, + 512, 1704, 513, 514, 2195, 516, 517, 518, 519, 520, + 1089, 522, 1705, 523, 524, 525, 526, 527, 528, 529, + 530, 531, 532, 533, 534, 535, 0, 537, 1706, 538, + 539, 1707, 540, 541, 542, 543, 544, 545, 546, 1708, + 547, 1090, 1091, 1709, 1710, 550, 551, 0, 553, 0, + 1711, 555, 556, 557, 558, 559, 560, 561, 562, 1712, + 1713, 563, 564, 565, 566, 567, 1714, 1715, 568, 569, + 570, 571, 572, 0, 1092, 1716, 575, 576, 577, 578, + 579, 580, 1717, 1718, 581, 1719, 1720, 582, 583, 584, + 585, 586, 587, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 599, 600, 601, 0, 0, 0, + 893, 894, 895, 896, 0, 3914, 3915, 899, 900, 901, + 902, 1070, 0, 1511, 669, 0, 0, 0, 887, 729, + 0, 0, 0, 0, 0, 888, 889, 890, 0, 0, + 229, 230, 231, 232, 233, 234, 235, 236, 1644, 237, + 238, 239, 1645, 1646, 1647, 1648, 1649, 1650, 1651, 240, + 241, 1652, 242, 243, 244, 245, 246, 247, 248, 0, + 1071, 251, 1072, 1073, 1653, 254, 255, 256, 257, 258, + 259, 1654, 1655, 260, 261, 1074, 1075, 264, 1656, 265, + 266, 267, 268, 0, 1657, 270, 1658, 271, 272, 273, + 274, 275, 276, 277, 278, 279, 1659, 280, 281, 282, + 283, 284, 285, 1660, 286, 287, 288, 289, 1661, 1662, + 1663, 290, 1664, 1665, 1666, 291, 292, 293, 294, 295, + 296, 1076, 1077, 299, 1667, 300, 1668, 301, 302, 303, + 304, 305, 306, 1669, 307, 308, 309, 310, 1670, 1671, + 311, 312, 1078, 314, 315, 1672, 316, 317, 318, 1673, + 319, 320, 321, 1674, 322, 323, 324, 325, 0, 327, + 328, 329, 330, 0, 1675, 332, 1676, 333, 334, 1079, + 336, 1677, 337, 1678, 338, 339, 1679, 340, 341, 342, + 343, 344, 1680, 345, 0, 1681, 0, 348, 349, 1682, + 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, + 1683, 360, 361, 362, 363, 364, 365, 366, 1684, 367, + 368, 0, 370, 371, 372, 373, 1081, 1082, 1685, 1083, + 1686, 377, 378, 379, 380, 381, 382, 383, 384, 385, + 386, 1687, 1688, 387, 0, 389, 390, 391, 1689, 392, + 393, 394, 1690, 1691, 395, 396, 397, 398, 399, 400, + 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, + 1084, 412, 1085, 414, 415, 416, 417, 418, 419, 420, + 4349, 0, 423, 1692, 424, 425, 426, 427, 1693, 0, + 429, 1086, 431, 432, 433, 1694, 434, 435, 1695, 1696, + 3913, 437, 438, 1697, 1698, 439, 440, 0, 442, 443, + 444, 0, 446, 447, 448, 449, 450, 451, 452, 453, + 454, 1699, 455, 456, 0, 458, 0, 460, 461, 462, + 1700, 463, 464, 465, 466, 467, 468, 469, 470, 471, + 472, 1087, 474, 475, 476, 477, 1701, 478, 479, 480, + 481, 482, 483, 484, 485, 486, 487, 488, 489, 1702, + 490, 491, 492, 493, 494, 495, 496, 497, 0, 499, + 500, 501, 502, 503, 504, 505, 506, 507, 1703, 508, + 509, 510, 511, 512, 1704, 513, 514, 2195, 516, 517, + 518, 519, 520, 1089, 522, 1705, 523, 524, 525, 526, + 527, 528, 529, 530, 531, 532, 533, 534, 535, 0, + 537, 1706, 538, 539, 1707, 540, 541, 542, 543, 544, + 545, 546, 1708, 547, 1090, 1091, 1709, 1710, 550, 551, + 0, 553, 0, 1711, 555, 556, 557, 558, 559, 560, + 561, 562, 1712, 1713, 563, 564, 565, 566, 567, 1714, + 1715, 568, 569, 570, 571, 572, 0, 1092, 1716, 575, + 576, 577, 578, 579, 580, 1717, 1718, 581, 1719, 1720, + 582, 583, 584, 585, 586, 587, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 599, 600, 601, + 609, 0, 0, 893, 894, 895, 896, 887, 3914, 3915, + 899, 900, 901, 902, 888, 889, 890, 0, 0, 229, + 230, 231, 232, 233, 234, 235, 236, 0, 237, 238, + 239, 0, 0, 0, 0, 0, 0, 0, 240, 241, + 0, 242, 243, 244, 0, 246, 247, 248, 249, 250, + 0, 252, 253, 0, 254, 255, 256, 257, 258, 259, + 0, 0, 260, 261, 262, 263, 264, 0, 265, 891, + 267, 268, 269, 0, 0, 0, 271, 272, 273, 274, + 275, 0, 277, 278, 279, 0, 280, 281, 282, 283, + 284, 285, 0, 0, 287, 288, 289, 0, 0, 0, + 0, 0, 0, 0, 291, 292, 293, 294, 295, 296, + 297, 298, 299, 0, 300, 0, 301, 302, 303, 304, + 305, 306, 0, 307, 308, 309, 310, 0, 0, 311, + 312, 313, 314, 315, 0, 316, 317, 318, 0, 319, + 320, 321, 0, 322, 323, 324, 325, 326, 327, 328, + 329, 330, 331, 0, 892, 0, 333, 334, 335, 336, + 0, 337, 0, 338, 0, 0, 0, 341, 342, 343, + 344, 0, 345, 346, 0, 347, 348, 349, 0, 350, + 351, 352, 353, 354, 0, 356, 357, 358, 359, 0, + 360, 361, 362, 363, 364, 365, 366, 0, 367, 0, + 369, 370, 371, 372, 373, 374, 375, 0, 376, 0, + 377, 0, 0, 380, 0, 382, 383, 384, 385, 386, + 0, 0, 387, 388, 0, 390, 0, 0, 392, 393, + 394, 0, 0, 395, 396, 397, 398, 399, 400, 401, + 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, + 0, 413, 414, 415, 416, 417, 418, 419, 420, 421, + 422, 423, 0, 424, 425, 0, 427, 0, 428, 429, + 430, 431, 432, 433, 0, 434, 435, 0, 0, 436, + 437, 438, 0, 0, 439, 440, 441, 0, 443, 0, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, - 0, 455, 456, 0, 749, 458, 459, 460, 461, 462, - 463, 750, 465, 466, 467, 468, 469, 0, 470, 471, - 472, 473, 1286, 0, 475, 476, 477, 478, 479, 0, - 480, 481, 482, 483, 0, 484, 485, 486, 487, 488, - 489, 490, 491, 492, 493, 494, 495, 496, 0, 497, - 498, 0, 499, 0, 500, 501, 502, 503, 504, 0, - 752, 506, 0, 0, 753, 508, 509, 510, 511, 0, - 512, 513, 514, 515, 516, 517, 518, 0, 0, 519, - 520, 521, 522, 523, 0, 0, 524, 525, 526, 527, - 528, 529, 530, 0, 531, 0, 532, 533, 534, 535, - 0, 0, 536, 0, 0, 537, 538, 539, 540, 541, - 754, 543, 544, 545, 546, 547, 548, 549, 550, 551, - 552, 553, 554, 555, 556, 223, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 224, 225, 226, 227, 228, 229, 230, 231, 0, 233, - 234, 235, 0, 0, 0, 0, 0, 0, 0, 236, - 237, 0, 238, 239, 240, 0, 241, 242, 243, 244, - 245, 0, 246, 247, 0, 248, 249, 250, 251, 252, - 0, 0, 253, 254, 255, 256, 257, 0, 258, 259, - 260, 261, 262, 0, 0, 0, 263, 264, 265, 266, - 267, 0, 268, 269, 270, 0, 271, 272, 273, 274, - 275, 276, 0, 0, 277, 278, 279, 0, 0, 0, - 0, 0, 0, 0, 280, 281, 282, 283, 284, 285, - 286, 287, 288, 0, 289, 0, 290, 291, 292, 293, - 294, 295, 0, 296, 297, 298, 299, 0, 0, 300, - 301, 302, 303, 304, 0, 305, 306, 307, 0, 308, - 309, 310, 0, 311, 312, 313, 314, 315, 316, 317, - 318, 319, 0, 320, 0, 321, 322, 323, 324, 0, - 325, 0, 326, 0, 0, 0, 327, 328, 329, 330, - 0, 331, 332, 0, 333, 334, 0, 335, 336, 337, - 338, 1408, 0, 340, 341, 342, 343, 0, 344, 345, - 346, 347, 348, 349, 0, 350, 0, 351, 352, 353, - 354, 355, 356, 357, 0, 358, 0, 359, 0, 0, - 360, 0, 361, 362, 363, 364, 365, 0, 0, 366, - 367, 0, 368, 0, 0, 369, 370, 371, 0, 0, - 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, - 382, 383, 384, 385, 386, 387, 388, 0, 389, 390, - 391, 392, 393, 0, 394, 395, 0, 396, 0, 397, - 398, 399, 400, 401, 402, 0, 403, 404, 0, 765, - 405, 406, 407, 0, 0, 408, 409, 0, 410, 0, - 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, - 0, 421, 422, 423, 424, 425, 426, 427, 428, 0, - 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, - 439, 440, 441, 442, 0, 443, 444, 445, 446, 447, - 448, 449, 450, 451, 452, 453, 454, 0, 455, 456, - 0, 457, 458, 459, 460, 461, 462, 463, 464, 465, - 466, 467, 468, 469, 0, 470, 471, 472, 473, 474, - 0, 475, 476, 477, 478, 479, 0, 480, 481, 482, - 483, 0, 484, 485, 486, 487, 488, 489, 490, 491, - 492, 493, 494, 495, 496, 0, 497, 498, 0, 499, - 0, 500, 501, 502, 503, 504, 0, 505, 506, 0, - 0, 507, 508, 509, 510, 511, 0, 512, 513, 514, - 515, 516, 517, 518, 0, 0, 519, 520, 521, 522, - 523, 0, 0, 524, 525, 526, 527, 528, 529, 530, - 0, 531, 0, 532, 533, 534, 535, 0, 0, 536, - 0, 0, 537, 538, 539, 540, 541, 542, 543, 544, - 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, - 555, 556, 223, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 224, 225, 226, - 227, 228, 229, 230, 231, 1465, 233, 234, 235, 0, - 0, 0, 0, 0, 0, 0, 236, 237, 0, 238, - 239, 240, 0, 241, 242, 243, 244, 245, 0, 246, - 247, 0, 248, 249, 250, 251, 252, 0, 0, 253, - 254, 255, 256, 257, 0, 258, 259, 260, 261, 262, - 0, 0, 0, 263, 264, 265, 266, 267, 0, 268, - 269, 270, 0, 271, 272, 273, 274, 275, 276, 0, - 0, 277, 278, 279, 0, 0, 0, 0, 0, 0, - 0, 280, 281, 282, 283, 284, 285, 286, 287, 288, - 0, 289, 0, 290, 291, 292, 293, 294, 295, 0, - 296, 297, 298, 299, 0, 0, 300, 301, 302, 303, - 304, 0, 305, 306, 307, 0, 308, 309, 310, 0, - 311, 312, 313, 314, 315, 316, 317, 318, 319, 0, - 320, 0, 321, 322, 323, 324, 0, 325, 0, 326, - 0, 0, 0, 327, 328, 329, 330, 0, 331, 332, - 0, 333, 334, 0, 335, 336, 337, 338, 1466, 0, - 340, 341, 342, 343, 0, 344, 345, 346, 347, 348, - 349, 0, 350, 0, 351, 352, 353, 354, 355, 356, - 357, 0, 358, 0, 359, 0, 0, 360, 0, 361, - 362, 363, 364, 365, 0, 0, 366, 367, 0, 368, - 0, 0, 369, 370, 371, 0, 0, 372, 373, 374, - 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, - 385, 386, 387, 388, 0, 389, 390, 391, 392, 393, - 0, 394, 395, 0, 396, 0, 397, 398, 399, 400, - 401, 402, 0, 403, 404, 0, 0, 405, 406, 407, - 0, 0, 408, 409, 0, 410, 0, 411, 412, 413, - 414, 415, 416, 417, 418, 419, 420, 0, 421, 422, - 423, 424, 425, 426, 427, 428, 0, 429, 430, 431, - 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, - 442, 0, 443, 444, 445, 446, 447, 448, 449, 450, - 451, 452, 453, 454, 0, 455, 456, 0, 457, 458, - 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, - 469, 0, 470, 471, 472, 473, 474, 0, 475, 476, - 477, 478, 479, 0, 480, 481, 482, 483, 0, 484, - 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, - 495, 496, 0, 497, 498, 0, 499, 0, 500, 501, - 502, 503, 504, 0, 505, 506, 0, 0, 507, 508, - 509, 510, 511, 0, 512, 513, 514, 515, 516, 517, - 518, 0, 0, 519, 520, 521, 522, 523, 0, 0, - 524, 525, 526, 527, 528, 529, 530, 0, 531, 0, - 532, 533, 534, 535, 0, 0, 536, 0, 0, 537, - 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, - 548, 549, 550, 551, 552, 553, 554, 555, 556, 223, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 224, 225, 226, 227, 228, 229, - 230, 231, 725, 233, 234, 235, 0, 0, 0, 0, - 0, 0, 0, 236, 237, 0, 238, 239, 240, 0, - 241, 242, 243, 244, 245, 0, 246, 247, 0, 248, - 249, 250, 251, 252, 0, 0, 253, 254, 255, 256, - 257, 0, 258, 259, 260, 261, 262, 0, 0, 0, - 263, 264, 265, 266, 267, 0, 268, 269, 270, 0, - 271, 272, 273, 274, 275, 276, 0, 0, 277, 278, - 279, 0, 0, 0, 0, 0, 0, 0, 280, 281, - 282, 283, 284, 285, 286, 287, 288, 0, 289, 0, - 290, 291, 292, 293, 294, 295, 0, 296, 297, 298, - 299, 0, 0, 300, 301, 302, 303, 304, 0, 305, - 306, 307, 0, 308, 309, 310, 0, 311, 312, 313, - 314, 315, 316, 317, 318, 319, 0, 320, 0, 321, - 322, 323, 324, 0, 325, 0, 326, 0, 0, 0, - 327, 328, 329, 330, 0, 331, 332, 0, 333, 334, - 0, 335, 336, 337, 338, 339, 0, 340, 341, 342, - 343, 0, 344, 345, 346, 347, 348, 349, 0, 350, - 0, 351, 352, 353, 354, 355, 356, 357, 0, 358, - 0, 359, 0, 0, 360, 0, 361, 362, 363, 364, - 365, 0, 0, 366, 367, 0, 368, 0, 0, 369, - 370, 371, 0, 0, 372, 373, 374, 375, 376, 377, - 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, - 388, 0, 389, 390, 391, 392, 393, 0, 394, 395, - 0, 396, 0, 397, 398, 399, 400, 401, 402, 0, - 403, 404, 0, 0, 405, 406, 407, 0, 0, 408, - 409, 0, 410, 0, 411, 412, 413, 414, 415, 416, - 417, 418, 419, 420, 0, 421, 422, 423, 424, 425, - 426, 427, 428, 0, 429, 430, 431, 432, 433, 434, - 435, 436, 437, 438, 439, 440, 441, 442, 0, 443, - 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, - 454, 0, 455, 456, 0, 457, 458, 459, 460, 461, - 462, 463, 464, 465, 466, 467, 468, 469, 0, 470, - 471, 472, 473, 474, 0, 475, 476, 477, 478, 479, - 0, 480, 481, 482, 483, 0, 484, 485, 486, 487, - 488, 489, 490, 491, 492, 493, 494, 495, 496, 0, - 497, 498, 0, 499, 0, 500, 501, 502, 503, 504, - 0, 505, 506, 0, 0, 507, 508, 509, 510, 511, - 0, 512, 513, 514, 515, 516, 517, 518, 0, 0, - 519, 520, 521, 522, 523, 0, 0, 524, 525, 526, - 527, 528, 529, 530, 0, 531, 0, 532, 533, 534, - 535, 0, 0, 536, 0, 0, 537, 538, 539, 540, - 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, - 551, 552, 553, 554, 555, 556, 223, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 224, 225, 226, 227, 228, 229, 230, 231, 0, - 233, 234, 235, 0, 0, 0, 0, 0, 0, 0, - 236, 237, 0, 238, 239, 240, 0, 241, 242, 243, - 244, 245, 0, 246, 247, 0, 248, 249, 250, 251, - 252, 0, 0, 253, 254, 255, 256, 257, 0, 258, - 259, 260, 261, 262, 0, 0, 0, 263, 264, 265, - 266, 267, 0, 268, 269, 270, 0, 271, 272, 273, - 274, 275, 276, 0, 0, 277, 278, 279, 0, 0, - 0, 0, 0, 0, 0, 280, 281, 282, 283, 284, - 285, 286, 287, 288, 0, 289, 0, 290, 291, 292, - 293, 294, 295, 0, 296, 297, 298, 299, 0, 0, - 300, 301, 302, 303, 304, 0, 305, 306, 307, 0, - 308, 309, 310, 0, 311, 312, 313, 314, 315, 316, - 317, 318, 319, 0, 320, 0, 321, 322, 323, 324, - 0, 325, 0, 326, 0, 0, 0, 327, 328, 329, - 2750, 0, 331, 332, 0, 333, 334, 0, 335, 336, - 337, 338, 339, 0, 340, 341, 342, 343, 0, 344, - 345, 346, 347, 348, 349, 0, 350, 0, 351, 352, - 353, 354, 355, 356, 357, 0, 358, 0, 359, 0, - 0, 360, 0, 361, 362, 363, 364, 365, 0, 0, - 366, 367, 0, 368, 0, 0, 369, 370, 2751, 0, - 0, 372, 373, 374, 375, 376, 377, 378, 379, 380, - 381, 382, 383, 384, 385, 386, 387, 388, 0, 389, - 390, 391, 392, 393, 0, 394, 395, 0, 396, 0, - 397, 398, 399, 400, 401, 402, 0, 403, 404, 0, - 0, 405, 406, 407, 0, 0, 408, 409, 0, 410, - 0, 411, 412, 413, 414, 415, 416, 417, 418, 419, - 420, 0, 421, 422, 423, 424, 425, 426, 427, 428, - 0, 429, 430, 431, 432, 433, 434, 435, 436, 437, - 438, 439, 440, 441, 442, 0, 443, 444, 445, 446, + 0, 455, 456, 457, 458, 459, 460, 461, 462, 0, + 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, + 473, 474, 475, 476, 477, 0, 478, 479, 480, 481, + 482, 483, 484, 485, 486, 487, 488, 489, 0, 490, + 491, 0, 493, 494, 495, 496, 497, 498, 499, 500, + 501, 502, 503, 504, 505, 506, 507, 0, 508, 509, + 510, 511, 512, 0, 513, 514, 515, 516, 517, 0, + 519, 520, 521, 522, 0, 523, 524, 525, 526, 527, + 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, + 0, 538, 539, 0, 540, 0, 542, 543, 544, 545, + 546, 0, 547, 548, 549, 0, 0, 550, 551, 552, + 553, 554, 0, 555, 556, 557, 558, 559, 560, 561, + 562, 0, 0, 563, 564, 565, 566, 567, 0, 0, + 568, 569, 570, 571, 572, 573, 574, 0, 575, 0, + 577, 578, 579, 580, 0, 0, 581, 0, 0, 582, + 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, + 593, 594, 595, 596, 597, 598, 599, 600, 601, 609, + 0, 0, 893, 894, 895, 896, 887, 897, 898, 899, + 900, 901, 902, 888, 889, 890, 0, 0, 229, 230, + 231, 232, 233, 234, 235, 236, 0, 237, 238, 239, + 0, 0, 0, 0, 0, 0, 0, 240, 241, 0, + 242, 243, 244, 0, 246, 247, 248, 249, 250, 0, + 252, 253, 0, 254, 255, 256, 257, 258, 259, 0, + 0, 260, 261, 262, 263, 264, 0, 265, 1020, 267, + 268, 269, 0, 0, 0, 271, 272, 273, 274, 275, + 0, 277, 278, 279, 0, 280, 281, 282, 283, 284, + 285, 0, 0, 287, 288, 289, 0, 0, 0, 0, + 0, 0, 0, 291, 292, 293, 294, 295, 296, 297, + 298, 299, 0, 300, 0, 301, 302, 303, 304, 305, + 306, 0, 307, 308, 309, 310, 0, 0, 311, 312, + 313, 314, 315, 0, 316, 317, 318, 0, 319, 320, + 321, 0, 322, 323, 324, 325, 326, 327, 328, 329, + 330, 331, 0, 1021, 0, 333, 334, 335, 336, 0, + 337, 0, 338, 0, 0, 0, 341, 342, 343, 344, + 0, 345, 346, 0, 347, 348, 349, 0, 350, 351, + 352, 353, 354, 0, 356, 357, 358, 359, 0, 360, + 361, 362, 363, 364, 365, 366, 0, 367, 0, 369, + 370, 371, 372, 373, 374, 375, 0, 376, 0, 377, + 0, 0, 380, 0, 382, 383, 384, 385, 386, 0, + 0, 387, 388, 0, 390, 0, 0, 392, 393, 394, + 0, 0, 395, 396, 397, 398, 399, 400, 401, 402, + 403, 404, 405, 406, 407, 408, 409, 410, 411, 0, + 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, + 423, 0, 424, 425, 0, 427, 0, 428, 429, 430, + 431, 432, 433, 0, 434, 435, 0, 0, 436, 437, + 438, 0, 0, 439, 440, 441, 0, 443, 0, 445, + 446, 447, 448, 449, 450, 451, 452, 453, 454, 0, + 455, 456, 457, 458, 459, 460, 461, 462, 0, 463, + 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, + 474, 475, 476, 477, 0, 478, 479, 480, 481, 482, + 483, 484, 485, 486, 487, 488, 489, 0, 490, 491, + 0, 493, 494, 495, 496, 497, 498, 499, 500, 501, + 502, 503, 504, 505, 506, 507, 0, 508, 509, 510, + 511, 512, 0, 513, 514, 515, 516, 517, 0, 519, + 520, 521, 522, 0, 523, 524, 525, 526, 527, 528, + 529, 530, 531, 532, 533, 534, 535, 536, 537, 0, + 538, 539, 0, 540, 0, 542, 543, 544, 545, 546, + 0, 547, 548, 549, 0, 0, 550, 551, 552, 553, + 554, 0, 555, 556, 557, 558, 559, 560, 561, 562, + 0, 0, 563, 564, 565, 566, 567, 0, 0, 568, + 569, 570, 571, 572, 573, 574, 0, 575, 0, 577, + 578, 579, 580, 0, 0, 581, 0, 0, 582, 583, + 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, + 594, 595, 596, 597, 598, 599, 600, 601, 609, 0, + 0, 893, 894, 895, 896, 887, 897, 898, 899, 900, + 901, 902, 888, 889, 890, 0, 0, 229, 230, 231, + 232, 233, 234, 235, 236, 0, 237, 238, 239, 0, + 0, 0, 0, 0, 0, 0, 240, 241, 0, 242, + 243, 244, 0, 246, 247, 248, 249, 250, 0, 252, + 253, 0, 254, 255, 256, 257, 258, 259, 0, 0, + 260, 261, 262, 263, 264, 0, 265, 1120, 267, 268, + 269, 0, 0, 0, 271, 272, 273, 274, 275, 0, + 277, 278, 279, 0, 280, 281, 282, 283, 284, 285, + 0, 0, 287, 288, 289, 0, 0, 0, 0, 0, + 0, 0, 291, 292, 293, 294, 295, 296, 297, 298, + 299, 0, 300, 0, 301, 302, 303, 304, 305, 306, + 0, 307, 308, 309, 310, 0, 0, 311, 312, 313, + 314, 315, 0, 316, 317, 318, 0, 319, 320, 321, + 0, 322, 323, 324, 325, 326, 327, 328, 329, 330, + 331, 0, 1121, 0, 333, 334, 335, 336, 0, 337, + 0, 338, 0, 0, 0, 341, 342, 343, 344, 0, + 345, 346, 0, 347, 348, 349, 0, 350, 351, 352, + 353, 1122, 0, 356, 357, 358, 359, 0, 360, 361, + 362, 363, 364, 365, 366, 0, 367, 0, 369, 370, + 371, 372, 373, 374, 375, 0, 376, 0, 377, 0, + 0, 380, 0, 382, 383, 384, 385, 386, 0, 0, + 387, 388, 0, 390, 0, 0, 392, 393, 394, 0, + 0, 395, 396, 397, 398, 399, 400, 401, 402, 403, + 404, 405, 406, 407, 408, 409, 410, 411, 0, 413, + 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, + 0, 424, 425, 0, 427, 0, 428, 429, 430, 431, + 432, 433, 0, 434, 435, 0, 0, 436, 437, 438, + 0, 0, 439, 440, 441, 0, 443, 0, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 0, 455, - 456, 0, 457, 458, 459, 460, 461, 462, 463, 464, - 465, 466, 467, 468, 469, 0, 470, 471, 472, 473, - 474, 0, 475, 476, 477, 478, 479, 0, 480, 481, - 482, 483, 0, 484, 485, 486, 487, 488, 489, 490, - 491, 492, 493, 494, 495, 496, 0, 497, 498, 2752, - 499, 0, 500, 2753, 502, 2754, 504, 0, 505, 506, - 0, 0, 507, 508, 509, 510, 511, 0, 512, 513, - 514, 515, 516, 517, 518, 0, 0, 519, 520, 2755, - 522, 523, 0, 0, 524, 525, 526, 527, 528, 529, - 530, 0, 531, 0, 532, 533, 534, 535, 0, 0, - 536, 0, 0, 537, 538, 539, 540, 541, 542, 543, - 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, - 554, 555, 556, 223, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 224, 225, - 226, 227, 228, 229, 230, 231, 0, 233, 234, 235, - 0, 0, 0, 0, 0, 3998, 0, 236, 237, 0, - 238, 239, 240, 0, 241, 242, 243, 244, 245, 0, - 246, 247, 0, 248, 249, 250, 251, 252, 0, 0, - 253, 254, 255, 256, 257, 0, 258, 259, 260, 261, - 262, 0, 0, 0, 263, 264, 265, 266, 267, 0, - 268, 269, 270, 0, 271, 272, 273, 274, 275, 276, - 0, 0, 277, 278, 279, 0, 0, 0, 0, 0, - 0, 0, 280, 281, 282, 283, 284, 285, 286, 287, - 288, 0, 289, 0, 290, 291, 292, 293, 294, 295, - 0, 296, 297, 298, 299, 0, 0, 300, 301, 302, - 303, 304, 0, 305, 306, 307, 0, 308, 309, 310, - 0, 311, 312, 313, 314, 315, 316, 317, 318, 319, - 0, 320, 0, 321, 322, 323, 324, 0, 325, 0, - 326, 0, 0, 0, 327, 328, 329, 330, 0, 331, - 332, 0, 333, 334, 0, 335, 336, 337, 338, 339, - 0, 340, 341, 342, 343, 0, 344, 345, 346, 347, - 348, 349, 0, 350, 0, 351, 352, 353, 354, 355, - 356, 357, 0, 358, 0, 359, 0, 0, 360, 0, - 361, 362, 363, 364, 365, 0, 0, 366, 367, 0, - 368, 0, 0, 369, 370, 371, 0, 0, 372, 373, - 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, - 384, 385, 386, 387, 388, 0, 389, 390, 391, 392, - 393, 0, 394, 395, 0, 396, 0, 397, 398, 399, - 400, 401, 402, 0, 403, 404, 0, 0, 405, 406, - 407, 0, 0, 408, 409, 0, 410, 0, 411, 412, - 413, 414, 415, 416, 417, 418, 419, 420, 0, 421, - 422, 423, 424, 425, 426, 427, 428, 0, 429, 430, - 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, - 441, 442, 0, 443, 444, 445, 446, 447, 448, 449, - 450, 451, 452, 453, 454, 0, 455, 456, 0, 457, - 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, - 468, 469, 0, 470, 471, 472, 473, 474, 0, 475, - 476, 477, 478, 479, 0, 480, 481, 482, 483, 0, - 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, - 494, 495, 496, 0, 497, 498, 0, 499, 0, 500, - 501, 502, 503, 504, 0, 505, 506, 0, 0, 507, - 508, 509, 510, 511, 0, 512, 513, 514, 515, 516, - 517, 518, 0, 0, 519, 520, 521, 522, 523, 0, - 0, 524, 525, 526, 527, 528, 529, 530, 0, 531, - 0, 532, 533, 534, 535, 0, 0, 536, 0, 0, - 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, - 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, - 223, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 224, 225, 226, 227, 228, - 229, 230, 231, 0, 233, 234, 235, 0, 0, 0, - 0, 0, 4012, 0, 236, 237, 0, 238, 239, 240, - 0, 241, 242, 243, 244, 245, 0, 246, 247, 0, - 248, 249, 250, 251, 252, 0, 0, 253, 254, 255, - 256, 257, 0, 258, 259, 260, 261, 262, 0, 0, - 0, 263, 264, 265, 266, 267, 0, 268, 269, 270, - 0, 271, 272, 273, 274, 275, 276, 0, 0, 277, - 278, 279, 0, 0, 0, 0, 0, 0, 0, 280, - 281, 282, 283, 284, 285, 286, 287, 288, 0, 289, - 0, 290, 291, 292, 293, 294, 295, 0, 296, 297, - 298, 299, 0, 0, 300, 301, 302, 303, 304, 0, - 305, 306, 307, 0, 308, 309, 310, 0, 311, 312, - 313, 314, 315, 316, 317, 318, 319, 0, 320, 0, - 321, 322, 323, 324, 0, 325, 0, 326, 0, 0, - 0, 327, 328, 329, 330, 0, 331, 332, 0, 333, - 334, 0, 335, 336, 337, 338, 339, 0, 340, 341, - 342, 343, 0, 344, 345, 346, 347, 348, 349, 0, - 350, 0, 351, 352, 353, 354, 355, 356, 357, 0, - 358, 0, 359, 0, 0, 360, 0, 361, 362, 363, - 364, 365, 0, 0, 366, 367, 0, 368, 0, 0, - 369, 370, 371, 0, 0, 372, 373, 374, 375, 376, + 456, 457, 458, 459, 460, 461, 462, 0, 463, 464, + 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, + 475, 476, 477, 0, 478, 479, 480, 481, 482, 483, + 484, 485, 486, 487, 488, 489, 0, 490, 491, 0, + 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, + 503, 504, 505, 506, 507, 0, 508, 509, 510, 511, + 512, 0, 513, 514, 515, 516, 517, 0, 519, 520, + 521, 522, 0, 523, 524, 525, 526, 527, 528, 529, + 530, 531, 532, 533, 534, 535, 536, 537, 0, 538, + 539, 0, 540, 0, 542, 543, 544, 545, 546, 0, + 547, 548, 549, 0, 0, 550, 551, 552, 553, 554, + 0, 555, 556, 557, 558, 559, 560, 561, 562, 0, + 0, 563, 564, 565, 566, 567, 0, 0, 568, 569, + 570, 571, 572, 573, 574, 0, 575, 0, 577, 578, + 579, 580, 0, 0, 581, 0, 0, 582, 583, 584, + 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, + 595, 596, 597, 598, 599, 600, 601, 609, 0, 0, + 893, 894, 895, 896, 887, 897, 898, 899, 900, 901, + 902, 888, 889, 890, 0, 0, 229, 230, 231, 232, + 233, 234, 235, 236, 0, 237, 238, 239, 0, 0, + 0, 0, 0, 0, 0, 240, 241, 0, 242, 243, + 244, 0, 246, 247, 248, 249, 250, 0, 252, 253, + 0, 254, 255, 256, 257, 258, 259, 0, 0, 260, + 261, 262, 263, 264, 0, 265, 1743, 267, 268, 269, + 0, 0, 0, 271, 272, 273, 274, 275, 0, 277, + 278, 279, 0, 280, 281, 282, 283, 284, 285, 0, + 0, 287, 288, 289, 0, 0, 0, 0, 0, 0, + 0, 291, 292, 293, 294, 295, 296, 297, 298, 299, + 0, 300, 0, 301, 302, 303, 304, 305, 306, 0, + 307, 308, 309, 310, 0, 0, 311, 312, 313, 314, + 315, 0, 316, 317, 318, 0, 319, 320, 321, 0, + 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, + 0, 1744, 0, 333, 334, 335, 336, 0, 337, 0, + 338, 0, 0, 0, 341, 342, 343, 344, 0, 345, + 346, 0, 347, 348, 349, 0, 350, 351, 352, 353, + 354, 0, 356, 357, 358, 359, 0, 360, 361, 362, + 363, 364, 365, 366, 0, 367, 0, 369, 370, 371, + 372, 373, 374, 375, 0, 376, 0, 377, 0, 0, + 380, 0, 382, 383, 384, 385, 386, 0, 0, 387, + 388, 0, 390, 0, 0, 392, 393, 394, 0, 0, + 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, + 405, 406, 407, 408, 409, 410, 411, 0, 413, 414, + 415, 416, 417, 418, 419, 420, 421, 422, 423, 0, + 424, 425, 0, 427, 0, 428, 429, 430, 431, 432, + 433, 0, 434, 435, 0, 0, 436, 437, 438, 0, + 0, 439, 440, 441, 0, 443, 0, 445, 446, 447, + 448, 449, 450, 451, 452, 453, 454, 0, 455, 456, + 457, 458, 459, 460, 461, 462, 0, 463, 464, 465, + 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, + 476, 477, 0, 478, 479, 480, 481, 482, 483, 484, + 485, 486, 487, 488, 489, 0, 490, 491, 0, 493, + 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, + 504, 505, 506, 507, 0, 508, 509, 510, 511, 512, + 0, 513, 514, 515, 516, 517, 0, 519, 520, 521, + 522, 0, 523, 524, 525, 526, 527, 528, 529, 530, + 531, 532, 533, 534, 535, 536, 537, 0, 538, 539, + 0, 540, 0, 542, 543, 544, 545, 546, 0, 547, + 548, 549, 0, 0, 550, 551, 552, 553, 554, 0, + 555, 556, 557, 558, 559, 560, 561, 562, 0, 0, + 563, 564, 565, 566, 567, 0, 0, 568, 569, 570, + 571, 572, 573, 574, 0, 575, 0, 577, 578, 579, + 580, 0, 0, 581, 0, 0, 582, 583, 584, 585, + 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, + 596, 597, 598, 599, 600, 601, 609, 0, 0, 893, + 894, 895, 896, 887, 897, 898, 899, 900, 901, 902, + 888, 889, 890, 0, 0, 229, 230, 231, 232, 233, + 234, 235, 236, 0, 237, 238, 239, 0, 0, 0, + 0, 0, 0, 0, 240, 241, 0, 242, 243, 244, + 0, 246, 247, 248, 249, 250, 0, 252, 253, 0, + 254, 255, 256, 257, 258, 259, 0, 0, 260, 261, + 262, 263, 264, 0, 265, 266, 267, 268, 269, 0, + 0, 0, 271, 272, 273, 274, 275, 0, 277, 278, + 279, 0, 280, 281, 282, 283, 284, 285, 0, 0, + 287, 288, 289, 0, 0, 0, 0, 0, 0, 0, + 291, 292, 293, 294, 295, 296, 297, 298, 299, 0, + 300, 0, 301, 302, 303, 304, 305, 306, 0, 307, + 308, 309, 310, 0, 0, 311, 312, 313, 314, 315, + 0, 316, 317, 318, 0, 319, 320, 321, 0, 322, + 323, 324, 325, 326, 327, 328, 329, 330, 331, 0, + 332, 0, 333, 334, 335, 336, 0, 337, 0, 338, + 0, 0, 0, 341, 342, 343, 344, 0, 345, 346, + 0, 347, 348, 349, 0, 350, 351, 352, 353, 354, + 0, 356, 357, 358, 359, 0, 360, 361, 362, 363, + 364, 365, 366, 0, 367, 0, 369, 370, 371, 372, + 373, 374, 375, 0, 376, 0, 377, 0, 0, 380, + 0, 382, 383, 384, 385, 386, 0, 0, 387, 388, + 0, 390, 0, 0, 392, 393, 394, 0, 0, 395, + 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, + 406, 407, 408, 409, 410, 411, 0, 413, 414, 415, + 416, 417, 418, 419, 420, 421, 422, 423, 0, 424, + 425, 0, 427, 0, 428, 429, 430, 431, 432, 433, + 0, 434, 435, 0, 0, 436, 437, 438, 0, 0, + 439, 440, 441, 0, 443, 0, 445, 446, 447, 448, + 449, 450, 451, 452, 453, 454, 0, 455, 456, 457, + 458, 459, 460, 461, 462, 0, 463, 464, 465, 466, + 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, + 477, 0, 478, 479, 480, 481, 482, 483, 484, 485, + 486, 487, 488, 489, 0, 490, 491, 0, 493, 494, + 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, + 505, 506, 507, 0, 508, 509, 510, 511, 512, 0, + 513, 514, 515, 516, 517, 0, 519, 520, 521, 522, + 0, 523, 524, 525, 526, 527, 528, 529, 530, 531, + 532, 533, 534, 535, 536, 537, 0, 538, 539, 0, + 540, 0, 542, 543, 544, 545, 546, 0, 547, 548, + 549, 0, 0, 550, 551, 552, 553, 554, 0, 555, + 556, 557, 558, 559, 560, 561, 562, 0, 0, 563, + 564, 565, 566, 567, 0, 0, 568, 569, 570, 571, + 572, 573, 574, 0, 575, 0, 577, 578, 579, 580, + 0, 0, 581, 0, 0, 582, 583, 584, 585, 586, + 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, + 597, 598, 599, 600, 601, 609, 0, 0, 893, 894, + 895, 896, 887, 897, 898, 899, 900, 901, 902, 888, + 889, 890, 0, 0, 229, 230, 231, 232, 233, 234, + 235, 236, 0, 237, 238, 239, 0, 0, 0, 0, + 0, 0, 0, 240, 241, 0, 242, 243, 244, 0, + 246, 247, 248, 249, 250, 0, 252, 253, 0, 254, + 255, 256, 257, 258, 259, 0, 0, 260, 261, 262, + 263, 264, 0, 265, 3040, 267, 268, 269, 0, 0, + 0, 271, 272, 273, 274, 275, 0, 277, 278, 279, + 0, 280, 281, 282, 283, 284, 285, 0, 0, 287, + 288, 289, 0, 0, 0, 0, 0, 0, 0, 291, + 292, 293, 294, 295, 296, 297, 298, 299, 0, 300, + 0, 301, 302, 303, 304, 305, 306, 0, 307, 308, + 309, 310, 0, 0, 311, 312, 313, 314, 315, 0, + 316, 317, 318, 0, 319, 320, 321, 0, 322, 323, + 324, 325, 326, 327, 328, 329, 330, 331, 0, 3041, + 0, 333, 334, 335, 336, 0, 337, 0, 338, 0, + 0, 0, 341, 342, 343, 344, 0, 345, 346, 0, + 347, 348, 349, 0, 350, 351, 352, 353, 354, 0, + 356, 357, 358, 359, 0, 360, 361, 362, 363, 364, + 365, 366, 0, 367, 0, 369, 370, 371, 372, 373, + 374, 375, 0, 376, 0, 377, 0, 0, 380, 0, + 382, 383, 384, 385, 386, 0, 0, 387, 388, 0, + 390, 0, 0, 392, 393, 394, 0, 0, 395, 396, + 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, + 407, 408, 409, 410, 411, 0, 413, 414, 415, 416, + 417, 418, 419, 420, 421, 422, 423, 0, 424, 425, + 0, 427, 0, 428, 429, 430, 431, 432, 433, 0, + 434, 435, 0, 0, 436, 437, 438, 0, 0, 439, + 440, 441, 0, 443, 0, 445, 446, 447, 448, 449, + 450, 451, 452, 453, 454, 0, 455, 456, 457, 458, + 459, 460, 461, 462, 0, 463, 464, 465, 466, 467, + 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, + 0, 478, 479, 480, 481, 482, 483, 484, 485, 486, + 487, 488, 489, 0, 490, 491, 0, 493, 494, 495, + 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, + 506, 507, 0, 508, 509, 510, 511, 512, 0, 513, + 514, 515, 516, 517, 0, 519, 520, 521, 522, 0, + 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, + 533, 534, 535, 536, 537, 0, 538, 539, 0, 540, + 0, 542, 543, 544, 545, 546, 0, 547, 548, 549, + 0, 0, 550, 551, 552, 553, 554, 0, 555, 556, + 557, 558, 559, 560, 561, 562, 0, 0, 563, 564, + 565, 566, 567, 0, 0, 568, 569, 570, 571, 572, + 573, 574, 0, 575, 0, 577, 578, 579, 580, 0, + 0, 581, 0, 0, 582, 583, 584, 585, 586, 587, + 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, + 598, 599, 600, 601, 609, 0, 0, 893, 894, 895, + 896, 887, 897, 898, 899, 900, 901, 902, 888, 889, + 890, 0, 0, 229, 230, 231, 232, 233, 234, 235, + 236, 0, 237, 238, 239, 0, 0, 0, 0, 0, + 0, 0, 240, 241, 0, 242, 243, 244, 0, 246, + 247, 248, 249, 250, 0, 252, 253, 0, 254, 255, + 256, 257, 258, 259, 0, 0, 260, 261, 262, 263, + 264, 0, 265, 266, 267, 268, 269, 0, 0, 0, + 271, 272, 273, 274, 275, 0, 277, 278, 279, 0, + 280, 281, 282, 283, 284, 285, 0, 0, 287, 288, + 289, 0, 0, 0, 0, 0, 0, 0, 291, 292, + 293, 294, 295, 296, 297, 298, 299, 0, 300, 0, + 301, 302, 303, 304, 305, 306, 0, 307, 308, 309, + 310, 0, 0, 311, 312, 313, 314, 315, 0, 316, + 317, 318, 0, 319, 320, 321, 0, 322, 323, 324, + 325, 326, 327, 328, 329, 330, 331, 0, 332, 0, + 333, 334, 335, 336, 0, 337, 0, 338, 0, 0, + 0, 341, 342, 343, 344, 0, 345, 346, 0, 347, + 348, 349, 0, 350, 351, 352, 353, 354, 0, 356, + 357, 358, 359, 0, 360, 361, 362, 363, 364, 365, + 366, 0, 367, 0, 369, 370, 371, 372, 373, 374, + 375, 0, 376, 0, 377, 0, 0, 380, 0, 382, + 383, 384, 385, 386, 0, 0, 387, 388, 0, 390, + 0, 0, 392, 393, 394, 0, 0, 395, 396, 397, + 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, + 408, 409, 410, 411, 0, 413, 414, 415, 416, 417, + 418, 419, 420, 421, 422, 423, 0, 424, 425, 0, + 427, 0, 428, 429, 430, 431, 432, 433, 0, 434, + 435, 0, 0, 4934, 437, 438, 0, 0, 439, 440, + 441, 0, 443, 0, 445, 446, 447, 448, 449, 450, + 451, 452, 453, 454, 0, 455, 456, 457, 458, 459, + 460, 461, 462, 0, 463, 464, 465, 466, 467, 468, + 469, 470, 471, 472, 473, 474, 475, 476, 477, 0, + 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, + 488, 489, 0, 490, 491, 0, 493, 494, 495, 496, + 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, + 507, 0, 508, 509, 510, 511, 512, 0, 513, 514, + 515, 516, 517, 0, 519, 520, 521, 522, 0, 523, + 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, + 534, 535, 536, 537, 0, 538, 539, 0, 540, 0, + 542, 543, 544, 545, 546, 0, 547, 548, 549, 0, + 0, 550, 551, 552, 553, 554, 0, 555, 556, 557, + 558, 559, 560, 561, 562, 0, 0, 563, 564, 565, + 566, 567, 0, 0, 568, 569, 570, 571, 572, 573, + 574, 0, 575, 0, 577, 578, 579, 580, 0, 0, + 581, 0, 0, 582, 583, 584, 585, 586, 587, 588, + 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, + 599, 600, 601, 1643, 0, 0, 893, 894, 895, 896, + 0, 897, 898, 899, 900, 901, 902, 0, 0, 0, + 0, 0, 229, 230, 231, 232, 233, 234, 235, 236, + 1644, 237, 238, 239, 1645, 1646, 1647, 1648, 1649, 1650, + 1651, 240, 241, 1652, 242, 243, 244, 245, 246, 247, + 248, 249, 250, 251, 252, 253, 1653, 254, 255, 256, + 257, 258, 259, 1654, 1655, 260, 261, 262, 263, 264, + 1656, 265, 266, 267, 268, 269, 1657, 270, 1658, 271, + 272, 273, 274, 275, 276, 277, 278, 279, 1659, 280, + 281, 282, 283, 284, 285, 1660, 286, 287, 288, 289, + 1661, 1662, 1663, 290, 1664, 1665, 1666, 291, 292, 293, + 294, 295, 296, 297, 298, 299, 1667, 300, 1668, 301, + 302, 303, 304, 305, 306, 1669, 307, 308, 309, 310, + 1670, 1671, 311, 312, 313, 314, 315, 1672, 316, 317, + 318, 1673, 319, 320, 321, 1674, 322, 323, 324, 325, + 326, 327, 328, 329, 330, 331, 1675, 332, 1676, 333, + 334, 335, 336, 1677, 337, 1678, 338, 339, 1679, 340, + 341, 342, 343, 344, 1680, 345, 346, 1681, 347, 348, + 349, 1682, 350, 351, 352, 353, 354, 355, 356, 357, + 358, 359, 1683, 360, 361, 362, 363, 364, 365, 366, + 1684, 367, 368, 369, 370, 371, 372, 373, 374, 375, + 1685, 376, 1686, 377, 378, 379, 380, 381, 382, 383, + 384, 385, 386, 1687, 1688, 387, 388, 389, 390, 391, + 1689, 392, 393, 394, 1690, 1691, 395, 396, 397, 398, + 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, + 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, + 419, 420, 421, 422, 423, 1692, 424, 425, 426, 427, + 1693, 428, 429, 430, 431, 432, 433, 1694, 434, 435, + 1695, 1696, 436, 437, 438, 1697, 1698, 439, 440, 441, + 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, + 452, 453, 454, 1699, 455, 456, 457, 458, 459, 460, + 461, 462, 1700, 463, 464, 465, 466, 467, 468, 469, + 470, 471, 472, 473, 474, 475, 476, 477, 1701, 478, + 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, + 489, 1702, 490, 491, 492, 493, 494, 495, 496, 497, + 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, + 1703, 508, 509, 510, 511, 512, 1704, 513, 514, 515, + 516, 517, 518, 519, 520, 521, 522, 1705, 523, 524, + 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, + 535, 536, 537, 1706, 538, 539, 1707, 540, 541, 542, + 543, 544, 545, 546, 1708, 547, 548, 549, 1709, 1710, + 550, 551, 552, 553, 554, 1711, 555, 556, 557, 558, + 559, 560, 561, 562, 1712, 1713, 563, 564, 565, 566, + 567, 1714, 1715, 568, 569, 570, 571, 572, 573, 574, + 1716, 575, 576, 577, 578, 579, 580, 1717, 1718, 581, + 1719, 1720, 582, 583, 584, 585, 586, 587, 588, 589, + 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, + 600, 601, 609, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1721, 0, 0, 0, 0, 0, 0, 0, + 0, 229, 230, 231, 232, 233, 234, 235, 236, 0, + 237, 238, 239, 0, 0, 0, 0, 0, 0, 0, + 240, 241, 0, 242, 243, 244, 0, 246, 247, 248, + 249, 250, 0, 252, 253, 0, 254, 255, 256, 257, + 258, 259, 0, 0, 260, 261, 262, 263, 264, 0, + 265, 266, 267, 268, 269, 0, 0, 0, 271, 272, + 273, 274, 275, 0, 277, 278, 279, 0, 280, 281, + 282, 283, 284, 285, 0, 0, 287, 288, 289, 0, + 0, 0, 0, 0, 0, 0, 291, 292, 293, 294, + 295, 296, 297, 298, 299, 0, 300, 0, 301, 302, + 303, 304, 305, 306, 0, 307, 308, 309, 310, 0, + 0, 311, 312, 313, 314, 315, 0, 316, 317, 318, + 0, 319, 320, 321, 0, 322, 323, 324, 325, 326, + 327, 328, 329, 330, 331, 0, 332, 0, 333, 334, + 335, 336, 0, 337, 0, 338, 0, 0, 0, 341, + 342, 343, 344, 0, 345, 346, 0, 347, 348, 349, + 0, 350, 351, 352, 353, 354, 0, 356, 357, 358, + 359, 0, 360, 361, 362, 363, 364, 365, 366, 0, + 367, 0, 369, 370, 371, 372, 373, 374, 375, 0, + 376, 0, 377, 0, 0, 380, 0, 382, 383, 384, + 385, 386, 0, 0, 387, 388, 0, 390, 0, 0, + 392, 393, 394, 0, 0, 395, 396, 397, 398, 399, + 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, + 410, 411, 0, 413, 414, 415, 416, 417, 418, 419, + 420, 421, 422, 423, 0, 424, 425, 0, 427, 0, + 428, 429, 430, 431, 432, 433, 0, 434, 435, 0, + 0, 436, 437, 438, 0, 0, 439, 440, 441, 0, + 443, 0, 445, 446, 447, 448, 449, 450, 451, 452, + 453, 454, 0, 455, 456, 457, 458, 459, 460, 461, + 462, 0, 463, 464, 465, 466, 467, 468, 469, 470, + 471, 472, 473, 474, 475, 476, 477, 0, 478, 479, + 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, + 0, 490, 491, 0, 493, 494, 495, 496, 497, 498, + 499, 500, 501, 502, 503, 504, 505, 506, 507, 0, + 508, 509, 510, 511, 512, 0, 513, 514, 515, 516, + 517, 0, 519, 520, 521, 522, 0, 523, 524, 525, + 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, + 536, 537, 0, 538, 539, 0, 540, 0, 542, 543, + 544, 545, 546, 0, 547, 548, 549, 0, 0, 550, + 551, 552, 553, 554, 0, 555, 556, 557, 558, 559, + 560, 561, 562, 0, 0, 563, 564, 565, 566, 567, + 0, 0, 568, 569, 570, 571, 572, 573, 574, 0, + 575, 0, 577, 578, 579, 580, 0, 0, 581, 0, + 0, 582, 583, 584, 585, 586, 587, 588, 589, 590, + 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, + 601, 609, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 823, 0, 0, 0, 0, 0, 0, 0, 0, + 229, 230, 231, 232, 233, 234, 235, 236, 0, 237, + 238, 239, 0, 0, 0, 0, 0, 0, 0, 240, + 241, 0, 242, 243, 244, 0, 246, 247, 248, 249, + 250, 0, 252, 253, 0, 254, 255, 256, 257, 258, + 259, 0, 0, 260, 261, 262, 263, 264, 0, 265, + 266, 267, 268, 269, 0, 0, 0, 271, 272, 273, + 274, 275, 0, 277, 278, 279, 0, 280, 281, 282, + 283, 284, 285, 0, 0, 287, 288, 289, 0, 0, + 0, 0, 0, 0, 0, 291, 292, 293, 294, 295, + 296, 297, 298, 299, 0, 300, 0, 301, 302, 303, + 304, 305, 306, 0, 307, 308, 309, 310, 0, 0, + 311, 312, 313, 314, 315, 0, 316, 317, 318, 0, + 319, 320, 321, 0, 322, 323, 324, 325, 326, 327, + 328, 329, 330, 331, 0, 332, 0, 333, 334, 335, + 336, 0, 337, 0, 338, 0, 0, 0, 341, 342, + 343, 344, 0, 345, 346, 0, 347, 348, 349, 0, + 350, 351, 352, 353, 354, 0, 356, 357, 358, 359, + 0, 360, 361, 362, 363, 364, 365, 366, 0, 367, + 0, 369, 370, 371, 372, 373, 374, 375, 0, 376, + 0, 377, 0, 0, 380, 0, 382, 383, 384, 385, + 386, 0, 0, 387, 388, 0, 390, 0, 0, 392, + 393, 394, 0, 0, 395, 396, 397, 398, 399, 400, + 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, + 411, 0, 413, 414, 415, 416, 417, 418, 419, 420, + 421, 422, 423, 0, 424, 425, 0, 427, 0, 428, + 429, 430, 431, 432, 433, 0, 434, 435, 0, 0, + 436, 437, 438, 0, 0, 439, 440, 441, 0, 443, + 0, 445, 446, 447, 448, 449, 450, 451, 452, 453, + 454, 0, 455, 456, 457, 458, 459, 460, 461, 462, + 0, 463, 464, 465, 466, 467, 468, 469, 470, 471, + 472, 473, 474, 475, 476, 477, 0, 478, 479, 480, + 481, 482, 483, 484, 485, 486, 487, 488, 489, 0, + 490, 491, 0, 493, 494, 495, 496, 497, 498, 499, + 500, 501, 502, 503, 504, 505, 506, 507, 0, 508, + 509, 510, 511, 512, 0, 513, 514, 515, 516, 517, + 0, 519, 520, 521, 522, 0, 523, 524, 525, 526, + 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, + 537, 0, 538, 539, 0, 540, 0, 542, 543, 544, + 545, 546, 0, 547, 548, 549, 0, 0, 550, 551, + 552, 553, 554, 0, 555, 556, 557, 558, 559, 560, + 561, 562, 0, 0, 563, 564, 565, 566, 567, 0, + 0, 568, 569, 570, 571, 572, 573, 574, 0, 575, + 0, 577, 578, 579, 580, 0, 0, 581, 0, 0, + 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, + 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, + 1070, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 5325, 0, 0, 0, 0, 0, 0, 0, 0, 229, + 230, 231, 232, 233, 234, 235, 236, 0, 237, 238, + 239, 0, 0, 0, 0, 0, 0, 0, 240, 241, + 0, 242, 243, 244, 245, 246, 247, 248, 0, 1071, + 251, 1072, 1073, 0, 254, 255, 256, 257, 258, 259, + 0, 0, 260, 261, 1074, 1075, 264, 0, 265, 266, + 267, 268, 0, 0, 270, 0, 271, 272, 273, 274, + 275, 276, 277, 278, 279, 0, 280, 281, 282, 283, + 284, 285, 0, 286, 287, 288, 289, 0, 0, 0, + 290, 0, 0, 0, 291, 292, 293, 294, 295, 296, + 1076, 1077, 299, 0, 300, 0, 301, 302, 303, 304, + 305, 306, 0, 307, 308, 309, 310, 0, 0, 311, + 312, 1078, 314, 315, 0, 316, 317, 318, 0, 319, + 320, 321, 0, 322, 323, 324, 325, 0, 327, 328, + 329, 330, 0, 0, 332, 0, 333, 334, 1079, 336, + 0, 337, 0, 338, 339, 0, 340, 341, 342, 343, + 344, 0, 345, 0, 0, 0, 348, 349, 0, 350, + 351, 352, 353, 354, 355, 356, 357, 358, 359, 2191, + 360, 361, 362, 363, 364, 365, 366, 0, 367, 368, + 2192, 370, 371, 372, 373, 1081, 1082, 0, 1083, 0, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, - 387, 388, 0, 389, 390, 391, 392, 393, 0, 394, - 395, 0, 396, 0, 397, 398, 399, 400, 401, 402, - 0, 403, 404, 0, 0, 405, 406, 407, 0, 0, - 408, 409, 0, 410, 0, 411, 412, 413, 414, 415, - 416, 417, 418, 419, 420, 0, 421, 422, 423, 424, - 425, 426, 427, 428, 0, 429, 430, 431, 432, 433, - 434, 435, 436, 437, 438, 439, 440, 441, 442, 0, + 0, 0, 387, 0, 389, 390, 391, 0, 392, 393, + 394, 0, 0, 395, 396, 397, 398, 399, 400, 401, + 402, 403, 404, 405, 406, 407, 408, 409, 410, 1084, + 412, 1085, 414, 415, 416, 417, 418, 419, 420, 0, + 0, 423, 0, 424, 425, 426, 427, 0, 0, 429, + 1086, 431, 432, 433, 0, 434, 435, 0, 0, 436, + 437, 438, 0, 2193, 439, 440, 2194, 442, 443, 444, + 0, 446, 447, 448, 449, 450, 451, 452, 453, 454, + 0, 455, 456, 0, 458, 0, 460, 461, 462, 0, + 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, + 1087, 474, 475, 476, 477, 0, 478, 479, 480, 481, + 482, 483, 484, 485, 486, 487, 488, 489, 0, 490, + 491, 492, 493, 494, 495, 496, 497, 0, 499, 500, + 501, 502, 503, 504, 505, 506, 507, 0, 508, 509, + 510, 511, 512, 0, 513, 514, 2195, 516, 517, 518, + 519, 520, 1089, 522, 0, 523, 524, 525, 526, 527, + 528, 529, 530, 531, 532, 533, 534, 535, 0, 537, + 0, 538, 539, 0, 540, 541, 542, 543, 544, 545, + 546, 0, 547, 1090, 1091, 0, 0, 550, 551, 0, + 553, 0, 0, 555, 556, 557, 558, 559, 560, 561, + 562, 0, 0, 563, 564, 565, 566, 567, 0, 0, + 568, 569, 570, 571, 572, 0, 1092, 2196, 575, 576, + 577, 578, 579, 580, 0, 0, 581, 0, 0, 582, + 583, 584, 585, 586, 587, 0, 0, 0, 0, 0, + 0, 3388, 0, 0, 0, 0, 599, 600, 601, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 2197, + 229, 230, 231, 232, 233, 234, 235, 236, 0, 237, + 238, 239, 0, 0, 0, 0, 0, 0, 0, 240, + 241, 0, 242, 243, 244, 245, 246, 247, 248, 0, + 1071, 251, 1072, 1073, 0, 254, 255, 256, 257, 258, + 259, 0, 0, 260, 261, 1074, 1075, 264, 0, 265, + 266, 267, 268, 0, 0, 270, 0, 271, 272, 273, + 274, 275, 276, 277, 278, 279, 0, 280, 281, 282, + 283, 284, 285, 0, 286, 287, 288, 289, 0, 0, + 0, 290, 0, 0, 0, 291, 292, 293, 294, 295, + 296, 1076, 1077, 299, 0, 300, 0, 301, 302, 303, + 304, 305, 306, 0, 307, 308, 309, 310, 0, 0, + 311, 312, 1078, 314, 315, 0, 316, 317, 318, 0, + 319, 320, 321, 0, 322, 323, 324, 325, 0, 327, + 328, 329, 330, 0, 0, 332, 0, 333, 334, 1079, + 336, 0, 337, 0, 338, 339, 0, 340, 341, 342, + 343, 344, 0, 345, 0, 0, 0, 348, 349, 0, + 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, + 2191, 360, 361, 362, 363, 364, 365, 366, 0, 367, + 368, 2192, 370, 371, 372, 373, 1081, 1082, 0, 1083, + 0, 377, 378, 379, 380, 381, 382, 383, 384, 385, + 386, 0, 0, 387, 0, 389, 390, 391, 0, 392, + 393, 394, 0, 0, 395, 396, 397, 398, 399, 400, + 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, + 1084, 412, 1085, 414, 415, 416, 417, 418, 419, 420, + 0, 0, 423, 0, 424, 425, 426, 427, 0, 0, + 429, 1086, 431, 432, 433, 0, 434, 435, 0, 0, + 436, 437, 438, 0, 2193, 439, 440, 2194, 442, 443, + 444, 0, 446, 447, 448, 449, 450, 451, 452, 453, + 454, 0, 455, 456, 0, 458, 0, 460, 461, 462, + 0, 463, 464, 465, 466, 467, 468, 469, 470, 471, + 472, 1087, 474, 475, 476, 477, 0, 478, 479, 480, + 481, 482, 483, 484, 485, 486, 487, 488, 489, 0, + 490, 491, 492, 493, 494, 495, 496, 497, 0, 499, + 500, 501, 502, 503, 504, 505, 506, 507, 0, 508, + 509, 510, 511, 512, 0, 513, 514, 2195, 516, 517, + 518, 519, 520, 1089, 522, 0, 523, 524, 525, 526, + 527, 528, 529, 530, 531, 532, 533, 534, 535, 0, + 537, 0, 538, 539, 0, 540, 541, 542, 543, 544, + 545, 546, 0, 547, 1090, 1091, 0, 0, 550, 551, + 0, 553, 0, 0, 555, 556, 557, 558, 559, 560, + 561, 562, 0, 0, 563, 564, 565, 566, 567, 0, + 0, 568, 569, 570, 571, 572, 0, 1092, 2196, 575, + 576, 577, 578, 579, 580, 0, 0, 581, 0, 0, + 582, 583, 584, 585, 586, 587, 0, 0, 0, 0, + 0, 0, 873, 0, 1511, 669, 0, 599, 600, 601, + 729, 2117, 0, 0, 0, 0, 0, 0, 0, 0, + 2197, 229, 230, 231, 232, 233, 234, 235, 236, 0, + 237, 238, 239, 0, 0, 0, 0, 0, 0, 0, + 240, 241, 0, 242, 243, 244, 245, 246, 247, 248, + 249, 250, 251, 252, 253, 0, 254, 255, 256, 257, + 258, 259, 0, 0, 260, 261, 262, 263, 264, 0, + 265, 266, 267, 268, 269, 0, 270, 0, 271, 272, + 273, 274, 275, 276, 277, 278, 279, 0, 280, 281, + 282, 283, 284, 285, 0, 286, 287, 288, 289, 0, + 0, 0, 290, 0, 0, 0, 291, 292, 293, 294, + 295, 296, 297, 298, 299, 2118, 300, 0, 301, 302, + 303, 304, 305, 306, 0, 307, 308, 309, 310, 0, + 0, 311, 312, 313, 314, 315, 0, 316, 317, 318, + 0, 319, 320, 321, 0, 322, 323, 324, 325, 326, + 327, 328, 329, 330, 331, 1927, 332, 0, 333, 334, + 335, 336, 0, 337, 0, 338, 339, 0, 340, 341, + 342, 343, 344, 0, 345, 346, 0, 347, 348, 349, + 0, 350, 351, 352, 353, 354, 355, 356, 357, 358, + 359, 0, 360, 361, 362, 363, 364, 365, 366, 0, + 367, 368, 369, 370, 371, 372, 373, 374, 375, 0, + 376, 0, 377, 378, 379, 380, 381, 382, 383, 384, + 385, 386, 0, 0, 387, 388, 389, 390, 391, 0, + 392, 393, 394, 0, 0, 395, 396, 397, 398, 399, + 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, + 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, + 420, 421, 422, 423, 0, 424, 425, 426, 427, 0, + 428, 429, 430, 431, 432, 433, 0, 434, 435, 1928, + 0, 436, 437, 438, 0, 0, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, - 453, 454, 0, 455, 456, 0, 457, 458, 459, 460, - 461, 462, 463, 464, 465, 466, 467, 468, 469, 0, - 470, 471, 472, 473, 474, 0, 475, 476, 477, 478, - 479, 0, 480, 481, 482, 483, 0, 484, 485, 486, - 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, - 0, 497, 498, 0, 499, 0, 500, 501, 502, 503, - 504, 0, 505, 506, 0, 0, 507, 508, 509, 510, - 511, 0, 512, 513, 514, 515, 516, 517, 518, 0, - 0, 519, 520, 521, 522, 523, 0, 0, 524, 525, - 526, 527, 528, 529, 530, 0, 531, 0, 532, 533, - 534, 535, 0, 0, 536, 0, 0, 537, 538, 539, - 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, - 550, 551, 552, 553, 554, 555, 556, 223, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 224, 225, 226, 227, 228, 229, 230, 231, - 0, 233, 234, 235, 0, 0, 0, 0, 0, 0, - 0, 236, 237, 0, 238, 239, 240, 0, 241, 242, - 243, 244, 245, 0, 246, 247, 0, 248, 249, 250, - 251, 252, 0, 0, 253, 254, 255, 256, 257, 0, - 258, 259, 260, 261, 262, 0, 0, 0, 263, 264, - 265, 266, 267, 0, 268, 269, 270, 0, 271, 272, - 273, 274, 275, 276, 0, 0, 277, 278, 279, 0, - 0, 0, 0, 0, 0, 0, 280, 281, 282, 283, - 284, 285, 286, 287, 288, 0, 289, 0, 290, 291, - 292, 293, 294, 295, 0, 296, 297, 298, 299, 0, - 0, 300, 301, 302, 303, 304, 0, 305, 306, 307, - 0, 308, 309, 310, 0, 311, 312, 313, 314, 315, - 316, 317, 318, 319, 0, 320, 0, 321, 322, 323, - 324, 0, 325, 0, 326, 0, 0, 0, 327, 328, - 329, 330, 0, 331, 332, 0, 333, 334, 0, 335, - 336, 337, 338, 339, 0, 340, 341, 342, 343, 0, - 344, 345, 346, 347, 348, 349, 0, 350, 0, 351, - 352, 353, 354, 355, 356, 357, 0, 358, 0, 359, - 0, 0, 360, 0, 361, 362, 363, 364, 365, 0, - 0, 366, 367, 0, 368, 0, 0, 369, 370, 371, - 0, 0, 372, 373, 374, 375, 376, 377, 378, 379, - 380, 381, 382, 383, 384, 385, 386, 387, 388, 0, - 389, 390, 391, 392, 393, 0, 394, 395, 0, 396, - 0, 397, 398, 399, 400, 401, 402, 0, 403, 404, - 0, 0, 405, 406, 407, 0, 0, 408, 409, 0, - 410, 0, 411, 412, 413, 414, 415, 416, 417, 418, - 419, 420, 0, 421, 422, 423, 424, 425, 426, 427, - 428, 0, 429, 430, 431, 432, 433, 434, 435, 436, - 437, 438, 439, 440, 441, 442, 0, 443, 444, 445, - 446, 447, 448, 449, 450, 451, 452, 453, 454, 0, - 455, 456, 0, 457, 458, 459, 460, 461, 462, 463, - 464, 465, 466, 467, 468, 469, 0, 470, 471, 472, - 473, 474, 0, 475, 476, 477, 478, 479, 0, 480, - 481, 482, 483, 0, 484, 485, 486, 487, 488, 489, - 490, 491, 492, 493, 494, 495, 496, 0, 497, 498, - 0, 499, 0, 500, 501, 502, 503, 504, 0, 505, - 506, 0, 0, 507, 508, 509, 510, 511, 0, 512, - 513, 514, 515, 516, 517, 518, 0, 0, 519, 520, - 521, 522, 523, 0, 0, 524, 525, 526, 527, 528, - 529, 530, 0, 531, 0, 532, 533, 534, 535, 0, - 0, 536, 0, 0, 537, 538, 539, 540, 541, 542, - 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, - 553, 554, 555, 556, 223, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, - 225, 226, 227, 228, 229, 230, 231, 0, 233, 234, - 235, 0, 0, 0, 0, 0, 0, 0, 236, 237, - 0, 238, 239, 240, 0, 241, 242, 243, 244, 245, - 0, 246, 247, 0, 248, 249, 250, 251, 252, 0, - 0, 253, 254, 255, 256, 257, 0, 258, 259, 260, - 261, 262, 0, 0, 0, 263, 264, 265, 266, 267, - 0, 268, 269, 270, 0, 271, 272, 273, 274, 275, - 276, 0, 0, 277, 278, 279, 0, 0, 0, 0, - 0, 0, 0, 280, 281, 282, 283, 284, 285, 286, - 287, 288, 0, 289, 0, 290, 291, 292, 293, 294, - 295, 0, 296, 297, 298, 299, 0, 0, 300, 301, - 302, 303, 304, 0, 305, 306, 307, 0, 308, 309, - 310, 0, 311, 312, 313, 314, 315, 316, 317, 318, - 319, 0, 320, 0, 321, 322, 323, 324, 0, 325, - 0, 326, 0, 0, 0, 327, 328, 329, 330, 0, - 331, 332, 0, 333, 334, 0, 335, 336, 337, 338, - 339, 0, 340, 341, 342, 343, 0, 344, 345, 346, - 347, 348, 349, 0, 350, 0, 351, 352, 353, 354, - 355, 356, 357, 0, 358, 0, 359, 0, 0, 360, - 0, 361, 362, 363, 364, 365, 0, 0, 366, 367, - 0, 368, 0, 0, 369, 370, 371, 0, 0, 372, - 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, - 383, 384, 385, 386, 387, 388, 0, 389, 390, 391, - 392, 393, 0, 394, 395, 0, 396, 0, 397, 398, - 399, 400, 401, 402, 0, 403, 404, 0, 0, 405, - 406, 407, 0, 0, 408, 409, 0, 410, 0, 411, - 412, 413, 414, 415, 416, 417, 418, 419, 420, 0, - 421, 422, 423, 424, 425, 426, 427, 428, 0, 429, - 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, - 440, 441, 442, 0, 443, 444, 445, 446, 447, 448, - 449, 450, 451, 452, 453, 454, 0, 455, 456, 0, - 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, - 467, 468, 469, 0, 470, 471, 472, 473, 474, 0, - 475, 476, 477, 478, 479, 0, 480, 481, 482, 483, - 0, 484, 485, 486, 487, 488, 489, 490, 491, 492, - 493, 494, 495, 496, 0, 497, 498, 0, 499, 0, - 500, 501, 502, 503, 504, 0, 505, 506, 0, 0, - 711, 508, 509, 510, 511, 0, 512, 513, 514, 515, - 516, 517, 518, 0, 0, 519, 520, 521, 522, 523, - 0, 0, 524, 525, 526, 527, 528, 529, 530, 0, - 531, 0, 532, 533, 534, 535, 0, 0, 536, 0, - 0, 537, 538, 539, 540, 541, 542, 543, 544, 545, - 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, - 556, 223, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 224, 225, 226, 227, - 228, 229, 230, 231, 0, 233, 234, 235, 0, 0, - 0, 0, 0, 0, 0, 236, 237, 0, 238, 239, - 240, 0, 241, 242, 243, 244, 245, 0, 246, 247, - 0, 248, 249, 250, 251, 252, 0, 0, 253, 254, - 255, 256, 257, 0, 258, 259, 260, 261, 262, 0, - 0, 0, 263, 264, 265, 266, 267, 0, 268, 269, - 270, 0, 271, 272, 273, 274, 275, 276, 0, 0, - 277, 278, 279, 0, 0, 0, 0, 0, 0, 0, - 280, 281, 282, 283, 284, 285, 286, 287, 288, 0, - 289, 0, 290, 291, 292, 293, 294, 295, 0, 296, - 297, 298, 299, 0, 0, 300, 301, 302, 303, 304, - 0, 305, 306, 307, 0, 308, 309, 310, 0, 311, - 312, 313, 314, 315, 316, 317, 318, 319, 0, 320, - 0, 321, 322, 323, 324, 0, 325, 0, 326, 0, - 0, 0, 327, 328, 329, 330, 0, 331, 332, 0, - 333, 334, 0, 335, 336, 337, 338, 339, 0, 340, - 341, 342, 343, 0, 344, 345, 346, 347, 348, 349, - 0, 350, 0, 351, 352, 353, 354, 355, 356, 357, - 0, 358, 0, 359, 0, 0, 360, 0, 361, 362, - 363, 364, 365, 0, 0, 366, 367, 0, 368, 0, - 0, 369, 370, 371, 0, 0, 372, 373, 374, 375, - 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, - 386, 387, 388, 0, 389, 390, 391, 392, 393, 0, - 394, 395, 0, 396, 0, 397, 398, 399, 400, 401, - 402, 0, 403, 404, 0, 0, 405, 406, 407, 0, - 0, 408, 409, 0, 410, 0, 411, 412, 413, 414, - 415, 416, 417, 418, 419, 420, 0, 421, 422, 423, - 424, 425, 426, 427, 428, 0, 429, 430, 431, 432, - 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, - 0, 443, 444, 445, 446, 447, 448, 449, 450, 451, - 452, 453, 454, 0, 455, 456, 0, 457, 458, 459, - 460, 461, 462, 723, 464, 465, 466, 467, 468, 469, - 0, 470, 471, 472, 473, 474, 0, 475, 476, 477, - 478, 479, 0, 480, 481, 482, 483, 0, 484, 485, - 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, - 496, 0, 497, 498, 0, 499, 0, 500, 501, 502, - 503, 504, 0, 505, 506, 0, 0, 507, 508, 509, - 510, 511, 0, 512, 513, 514, 515, 516, 517, 518, - 0, 0, 519, 520, 521, 522, 523, 0, 0, 524, - 525, 526, 527, 528, 529, 530, 0, 531, 0, 532, - 533, 534, 535, 0, 0, 536, 0, 0, 537, 538, - 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, - 549, 550, 551, 552, 553, 554, 555, 556, 223, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 224, 225, 226, 227, 228, 229, 230, - 231, 0, 233, 234, 235, 0, 0, 0, 0, 0, - 0, 0, 236, 237, 0, 238, 239, 240, 0, 241, - 242, 243, 244, 245, 0, 246, 247, 0, 248, 249, - 250, 251, 252, 0, 0, 745, 254, 255, 256, 257, - 0, 258, 259, 260, 261, 262, 0, 0, 0, 263, - 264, 265, 266, 267, 0, 268, 269, 270, 0, 746, - 272, 273, 274, 275, 276, 0, 0, 277, 278, 279, - 0, 0, 0, 0, 0, 0, 0, 280, 281, 282, - 283, 284, 285, 286, 287, 288, 0, 289, 0, 290, - 291, 292, 293, 294, 295, 0, 296, 297, 298, 299, - 0, 0, 300, 301, 302, 303, 304, 0, 305, 306, - 307, 0, 308, 309, 310, 0, 311, 312, 313, 314, - 315, 316, 317, 318, 319, 0, 320, 0, 321, 322, - 323, 324, 0, 325, 0, 326, 0, 0, 0, 327, - 328, 329, 330, 0, 331, 332, 0, 333, 334, 0, - 335, 336, 337, 338, 339, 0, 340, 341, 342, 343, - 0, 344, 345, 346, 347, 348, 349, 0, 350, 0, - 351, 352, 353, 354, 355, 356, 357, 0, 358, 0, - 359, 0, 0, 360, 0, 361, 362, 363, 364, 365, - 0, 0, 366, 367, 0, 368, 0, 0, 369, 370, - 747, 0, 0, 372, 373, 374, 375, 376, 377, 378, - 379, 380, 381, 382, 383, 384, 385, 386, 748, 388, - 0, 389, 390, 391, 392, 393, 0, 394, 395, 0, - 396, 0, 397, 398, 399, 400, 401, 402, 0, 403, - 404, 0, 0, 405, 406, 407, 0, 0, 408, 409, - 0, 410, 0, 411, 412, 413, 414, 415, 416, 417, - 418, 419, 420, 0, 421, 422, 423, 424, 425, 426, - 427, 428, 0, 429, 430, 431, 432, 433, 434, 435, - 436, 437, 438, 439, 440, 441, 442, 0, 443, 444, - 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, - 0, 455, 456, 0, 749, 458, 459, 460, 461, 462, - 463, 750, 465, 466, 467, 468, 469, 0, 470, 471, - 472, 473, 751, 0, 475, 476, 477, 478, 479, 0, - 480, 481, 482, 483, 0, 484, 485, 486, 487, 488, - 489, 490, 491, 492, 493, 494, 495, 496, 0, 497, - 498, 0, 499, 0, 500, 501, 502, 503, 504, 0, - 752, 506, 0, 0, 753, 508, 509, 510, 511, 0, - 512, 513, 514, 515, 516, 517, 518, 0, 0, 519, - 520, 521, 522, 523, 0, 0, 524, 525, 526, 527, - 528, 529, 530, 0, 531, 0, 532, 533, 534, 535, - 0, 0, 536, 0, 0, 537, 538, 539, 540, 541, - 754, 543, 544, 545, 546, 547, 548, 549, 550, 551, - 552, 553, 554, 555, 556, 223, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 224, 225, 226, 227, 228, 229, 230, 231, 0, 233, - 234, 235, 0, 0, 0, 0, 0, 0, 0, 236, - 237, 0, 238, 239, 240, 0, 241, 242, 243, 244, - 245, 0, 246, 247, 0, 248, 249, 250, 251, 252, - 0, 0, 253, 254, 255, 256, 257, 0, 258, 259, - 260, 261, 262, 0, 0, 0, 263, 264, 265, 266, - 267, 0, 268, 269, 270, 0, 271, 272, 273, 274, - 275, 276, 0, 0, 277, 278, 279, 0, 0, 0, - 0, 0, 0, 0, 280, 281, 282, 283, 284, 285, - 286, 287, 288, 0, 289, 0, 290, 291, 292, 293, - 294, 295, 0, 296, 297, 298, 299, 0, 0, 300, - 301, 302, 303, 304, 0, 305, 306, 307, 0, 308, - 309, 310, 0, 311, 312, 313, 314, 315, 316, 317, - 318, 319, 0, 320, 0, 321, 322, 323, 324, 0, - 325, 0, 326, 0, 0, 0, 327, 328, 329, 330, - 0, 331, 332, 0, 333, 334, 0, 335, 336, 337, - 338, 339, 0, 340, 341, 342, 343, 0, 344, 345, - 346, 347, 348, 349, 0, 350, 0, 351, 352, 353, - 354, 355, 356, 357, 0, 358, 0, 359, 0, 0, - 360, 0, 361, 362, 363, 364, 365, 0, 0, 366, - 367, 0, 368, 0, 0, 369, 370, 371, 0, 0, - 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, - 382, 383, 384, 385, 386, 387, 388, 0, 389, 390, - 391, 392, 393, 0, 394, 395, 0, 396, 0, 397, - 398, 399, 400, 401, 402, 0, 403, 404, 0, 0, - 405, 406, 407, 0, 0, 408, 409, 0, 410, 0, - 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, - 0, 421, 422, 423, 424, 425, 426, 427, 428, 0, - 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, - 439, 440, 776, 442, 0, 443, 444, 445, 446, 447, + 453, 454, 0, 455, 456, 457, 458, 459, 460, 461, + 462, 0, 463, 464, 465, 466, 467, 468, 469, 470, + 471, 472, 473, 474, 475, 476, 477, 0, 478, 479, + 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, + 0, 490, 491, 492, 493, 494, 495, 496, 497, 498, + 499, 500, 501, 502, 503, 504, 505, 506, 507, 0, + 508, 509, 510, 511, 512, 0, 513, 514, 515, 516, + 517, 518, 519, 520, 521, 522, 0, 523, 524, 525, + 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, + 536, 537, 0, 538, 539, 0, 540, 541, 542, 543, + 544, 545, 546, 0, 547, 548, 549, 0, 0, 550, + 551, 552, 553, 554, 1929, 555, 556, 557, 558, 559, + 560, 561, 562, 0, 0, 563, 564, 565, 566, 567, + 0, 0, 568, 569, 570, 571, 572, 573, 574, 0, + 575, 576, 577, 578, 579, 580, 0, 0, 581, 0, + 0, 582, 583, 584, 585, 586, 587, 588, 589, 590, + 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, + 601, 0, 0, 873, 0, 1511, 669, 2119, 0, 1512, + 1513, 729, 2117, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 229, 230, 231, 232, 233, 234, 235, 236, + 0, 237, 238, 239, 0, 0, 0, 0, 0, 0, + 0, 240, 241, 0, 242, 243, 244, 245, 246, 247, + 248, 249, 250, 251, 252, 253, 0, 254, 255, 256, + 257, 258, 259, 0, 0, 260, 261, 262, 263, 264, + 0, 265, 266, 267, 268, 269, 0, 270, 0, 271, + 272, 273, 274, 275, 276, 277, 278, 279, 0, 280, + 281, 282, 283, 284, 285, 0, 286, 287, 288, 289, + 0, 0, 0, 290, 0, 0, 0, 291, 292, 293, + 294, 295, 296, 297, 298, 299, 2124, 300, 0, 301, + 302, 303, 304, 305, 306, 0, 307, 308, 309, 310, + 0, 0, 311, 312, 313, 314, 315, 0, 316, 317, + 318, 0, 319, 320, 321, 0, 322, 323, 324, 325, + 326, 327, 328, 329, 330, 331, 1927, 332, 0, 333, + 334, 335, 336, 0, 337, 0, 338, 339, 0, 340, + 341, 342, 343, 344, 0, 345, 346, 0, 347, 348, + 349, 0, 350, 351, 352, 353, 354, 355, 356, 357, + 358, 359, 0, 360, 361, 362, 363, 364, 365, 366, + 0, 367, 368, 369, 370, 371, 372, 373, 374, 375, + 0, 376, 0, 377, 378, 379, 380, 381, 382, 383, + 384, 385, 386, 0, 0, 387, 388, 389, 390, 391, + 0, 392, 393, 394, 0, 0, 395, 396, 397, 398, + 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, + 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, + 419, 420, 421, 422, 423, 0, 424, 425, 426, 427, + 0, 428, 429, 430, 431, 432, 433, 0, 434, 435, + 1928, 0, 436, 437, 438, 0, 0, 439, 440, 441, + 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, + 452, 453, 454, 0, 455, 456, 457, 458, 459, 460, + 461, 462, 0, 463, 464, 465, 466, 467, 468, 469, + 470, 471, 472, 473, 474, 475, 476, 477, 0, 478, + 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, + 489, 0, 490, 491, 492, 493, 494, 495, 496, 497, + 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, + 0, 508, 509, 510, 511, 512, 0, 513, 514, 515, + 516, 517, 518, 519, 520, 521, 522, 0, 523, 524, + 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, + 535, 536, 537, 0, 538, 539, 0, 540, 541, 542, + 543, 544, 545, 546, 0, 547, 548, 549, 0, 0, + 550, 551, 552, 553, 554, 1929, 555, 556, 557, 558, + 559, 560, 561, 562, 0, 0, 563, 564, 565, 566, + 567, 0, 0, 568, 569, 570, 571, 572, 573, 574, + 0, 575, 576, 577, 578, 579, 580, 0, 0, 581, + 0, 0, 582, 583, 584, 585, 586, 587, 588, 589, + 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, + 600, 601, 0, 0, 873, 0, 1511, 669, 2119, 0, + 1512, 1513, 729, 2117, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 229, 230, 231, 232, 233, 234, 235, + 236, 0, 237, 238, 239, 0, 0, 0, 0, 0, + 0, 0, 240, 241, 0, 242, 243, 244, 245, 246, + 247, 248, 249, 250, 251, 252, 253, 0, 254, 255, + 256, 257, 258, 259, 0, 0, 260, 261, 262, 263, + 264, 0, 265, 266, 267, 268, 269, 0, 270, 0, + 271, 272, 273, 274, 275, 276, 277, 278, 279, 0, + 280, 281, 282, 283, 284, 285, 0, 286, 287, 288, + 289, 0, 0, 0, 290, 0, 0, 0, 291, 292, + 293, 294, 295, 296, 297, 298, 299, 0, 300, 0, + 301, 302, 303, 304, 305, 306, 0, 307, 308, 309, + 310, 0, 0, 311, 312, 313, 314, 315, 0, 316, + 317, 318, 0, 319, 320, 321, 0, 322, 323, 324, + 325, 326, 327, 328, 329, 330, 331, 1927, 332, 0, + 333, 334, 335, 336, 0, 337, 0, 338, 339, 0, + 340, 341, 342, 343, 344, 0, 345, 346, 0, 347, + 348, 349, 0, 350, 351, 352, 353, 354, 355, 356, + 357, 358, 359, 0, 360, 361, 362, 363, 364, 365, + 366, 0, 367, 368, 369, 370, 371, 372, 373, 374, + 375, 0, 376, 0, 377, 378, 379, 380, 381, 382, + 383, 384, 385, 386, 0, 0, 387, 388, 389, 390, + 391, 0, 392, 393, 394, 0, 0, 395, 396, 397, + 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, + 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, + 418, 419, 420, 421, 422, 423, 0, 424, 425, 426, + 427, 0, 428, 429, 430, 431, 432, 433, 0, 434, + 435, 1928, 0, 436, 437, 438, 0, 0, 439, 440, + 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, + 451, 452, 453, 454, 0, 455, 456, 457, 458, 459, + 460, 461, 462, 0, 463, 464, 465, 466, 467, 468, + 469, 470, 471, 472, 473, 474, 475, 476, 477, 0, + 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, + 488, 489, 0, 490, 491, 492, 493, 494, 495, 496, + 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, + 507, 0, 508, 509, 510, 511, 512, 0, 513, 514, + 515, 516, 517, 518, 519, 520, 521, 522, 0, 523, + 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, + 534, 535, 536, 537, 0, 538, 539, 0, 540, 541, + 542, 543, 544, 545, 546, 0, 547, 548, 549, 0, + 0, 550, 551, 552, 553, 554, 1929, 555, 556, 557, + 558, 559, 560, 561, 562, 0, 0, 563, 564, 565, + 566, 567, 0, 0, 568, 569, 570, 571, 572, 573, + 574, 0, 575, 576, 577, 578, 579, 580, 0, 0, + 581, 0, 0, 582, 583, 584, 585, 586, 587, 588, + 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, + 599, 600, 601, 0, 0, 873, 0, 1511, 669, 2119, + 0, 1512, 1513, 729, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 229, 230, 231, 232, 233, 234, + 235, 236, 0, 237, 238, 239, 0, 0, 0, 0, + 0, 0, 0, 240, 241, 0, 242, 243, 244, 245, + 246, 247, 248, 249, 250, 251, 252, 253, 0, 254, + 255, 256, 257, 258, 259, 0, 0, 260, 261, 262, + 263, 264, 0, 265, 266, 267, 268, 269, 0, 270, + 0, 271, 272, 273, 274, 275, 276, 277, 278, 279, + 0, 280, 281, 282, 283, 284, 285, 0, 286, 287, + 288, 289, 0, 0, 0, 290, 0, 0, 0, 291, + 292, 293, 294, 295, 296, 297, 298, 299, 0, 300, + 0, 301, 302, 303, 304, 305, 306, 0, 307, 308, + 309, 310, 0, 0, 311, 312, 313, 314, 315, 0, + 316, 317, 318, 0, 319, 320, 321, 0, 322, 323, + 324, 325, 326, 327, 328, 329, 330, 331, 1927, 332, + 0, 333, 334, 335, 336, 0, 337, 0, 338, 339, + 0, 340, 341, 342, 343, 344, 0, 345, 346, 0, + 347, 348, 349, 0, 350, 351, 352, 353, 354, 355, + 356, 357, 358, 359, 0, 360, 361, 362, 363, 364, + 365, 366, 0, 367, 368, 369, 370, 371, 372, 373, + 374, 375, 0, 376, 0, 377, 378, 379, 380, 381, + 382, 383, 384, 385, 386, 0, 0, 387, 388, 389, + 390, 391, 0, 392, 393, 394, 0, 0, 395, 396, + 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, + 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, + 417, 418, 419, 420, 421, 422, 423, 0, 424, 425, + 426, 427, 0, 428, 429, 430, 431, 432, 433, 0, + 434, 435, 1928, 0, 436, 437, 438, 0, 0, 439, + 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, + 450, 451, 452, 453, 454, 0, 455, 456, 457, 458, + 459, 460, 461, 462, 0, 463, 464, 465, 466, 467, + 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, + 0, 478, 479, 480, 481, 482, 483, 484, 485, 486, + 487, 488, 489, 0, 490, 491, 492, 493, 494, 495, + 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, + 506, 507, 0, 508, 509, 510, 511, 512, 0, 513, + 514, 515, 516, 517, 518, 519, 520, 521, 522, 0, + 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, + 533, 534, 535, 536, 537, 0, 538, 539, 0, 540, + 541, 542, 543, 544, 545, 546, 0, 547, 548, 549, + 0, 0, 550, 551, 552, 553, 554, 1929, 555, 556, + 557, 558, 559, 560, 561, 562, 0, 0, 563, 564, + 565, 566, 567, 0, 0, 568, 569, 570, 571, 572, + 573, 574, 0, 575, 576, 577, 578, 579, 580, 0, + 0, 581, 0, 0, 582, 583, 584, 585, 586, 587, + 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, + 598, 599, 600, 601, 0, 0, 873, 0, 0, 669, + 0, 0, 1512, 1513, 729, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 229, 230, 231, 232, 233, + 234, 235, 236, 0, 237, 238, 239, 0, 0, 0, + 0, 0, 0, 0, 240, 241, 0, 242, 243, 244, + 245, 246, 247, 248, 249, 250, 251, 252, 253, 0, + 254, 255, 256, 257, 258, 259, 0, 0, 260, 261, + 262, 263, 264, 0, 265, 266, 267, 268, 269, 0, + 270, 0, 271, 272, 273, 274, 275, 276, 277, 278, + 279, 0, 280, 281, 282, 283, 284, 285, 0, 286, + 287, 288, 289, 0, 0, 0, 290, 0, 0, 0, + 291, 292, 293, 294, 295, 296, 297, 298, 299, 2994, + 300, 0, 301, 302, 303, 304, 305, 306, 0, 307, + 308, 309, 310, 0, 0, 311, 312, 313, 314, 315, + 0, 316, 317, 318, 0, 319, 320, 321, 0, 322, + 323, 324, 325, 326, 327, 328, 329, 330, 331, 1927, + 332, 0, 333, 334, 335, 336, 0, 337, 0, 338, + 339, 0, 340, 341, 342, 343, 344, 0, 345, 346, + 0, 347, 348, 349, 0, 350, 351, 352, 353, 354, + 355, 356, 357, 358, 359, 0, 360, 361, 362, 363, + 364, 365, 366, 0, 367, 368, 369, 370, 371, 372, + 373, 374, 375, 0, 376, 0, 377, 378, 379, 380, + 381, 382, 383, 384, 385, 386, 0, 0, 387, 388, + 389, 390, 391, 0, 392, 393, 394, 0, 0, 395, + 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, + 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, + 416, 417, 418, 419, 420, 421, 422, 423, 0, 424, + 425, 426, 427, 0, 428, 429, 430, 431, 432, 433, + 0, 434, 435, 1928, 0, 436, 437, 438, 0, 0, + 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, + 449, 450, 451, 452, 453, 454, 0, 455, 456, 457, + 458, 459, 460, 461, 462, 0, 463, 464, 465, 466, + 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, + 477, 0, 478, 479, 480, 481, 482, 483, 484, 485, + 486, 487, 488, 489, 0, 490, 491, 492, 493, 494, + 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, + 505, 506, 507, 0, 508, 509, 510, 511, 512, 0, + 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, + 0, 523, 524, 525, 526, 527, 528, 529, 530, 531, + 532, 533, 534, 535, 536, 537, 0, 538, 539, 0, + 540, 541, 542, 543, 544, 545, 546, 0, 547, 548, + 549, 0, 0, 550, 551, 552, 553, 554, 1929, 555, + 556, 557, 558, 559, 560, 561, 562, 0, 0, 563, + 564, 565, 566, 567, 0, 0, 568, 569, 570, 571, + 572, 573, 574, 0, 575, 576, 577, 578, 579, 580, + 0, 0, 581, 0, 0, 582, 583, 584, 585, 586, + 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, + 597, 598, 599, 600, 601, 0, 0, 609, 0, 0, + 0, 0, 0, 741, 742, 729, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 229, 730, 231, 232, + 233, 234, 235, 236, 731, 237, 238, 239, 0, 0, + 0, 0, 0, 0, 0, 240, 241, 0, 242, 243, + 244, 0, 732, 247, 248, 249, 250, 0, 252, 253, + 0, 254, 255, 256, 257, 258, 259, 0, 0, 260, + 261, 262, 263, 264, 0, 265, 266, 267, 268, 269, + 0, 0, 0, 271, 272, 273, 274, 275, 0, 277, + 278, 279, 0, 280, 281, 282, 283, 284, 285, 0, + 0, 287, 288, 289, 0, 0, 0, 0, 0, 0, + 0, 291, 292, 293, 294, 295, 296, 297, 298, 299, + 0, 300, 0, 301, 302, 303, 304, 305, 306, 0, + 307, 308, 309, 310, 0, 0, 311, 312, 313, 314, + 315, 0, 316, 317, 318, 0, 319, 320, 321, 0, + 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, + 0, 332, 0, 333, 733, 335, 336, 0, 337, 0, + 734, 0, 735, 0, 341, 342, 343, 344, 0, 345, + 346, 0, 347, 348, 349, 0, 350, 351, 352, 353, + 354, 0, 356, 357, 358, 359, 736, 360, 361, 362, + 363, 364, 365, 366, 0, 367, 0, 369, 370, 371, + 372, 373, 374, 375, 0, 376, 0, 377, 0, 0, + 380, 0, 382, 383, 384, 385, 737, 0, 0, 387, + 388, 0, 390, 0, 0, 392, 393, 394, 0, 0, + 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, + 405, 406, 407, 408, 409, 410, 411, 0, 413, 414, + 738, 416, 417, 418, 419, 420, 421, 422, 423, 0, + 424, 425, 0, 427, 0, 428, 429, 430, 431, 432, + 433, 0, 434, 435, 0, 0, 436, 437, 438, 0, + 0, 439, 440, 441, 0, 443, 0, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 0, 455, 456, - 0, 457, 458, 459, 460, 461, 462, 463, 464, 465, - 466, 467, 468, 469, 0, 470, 471, 472, 473, 474, - 0, 475, 476, 477, 478, 479, 0, 480, 481, 482, - 483, 0, 484, 485, 486, 487, 488, 489, 490, 491, - 492, 493, 494, 495, 496, 0, 497, 498, 0, 499, - 0, 500, 501, 502, 503, 504, 0, 505, 506, 0, - 0, 507, 508, 509, 510, 511, 0, 512, 513, 514, - 515, 516, 517, 518, 0, 0, 519, 520, 521, 522, - 523, 0, 0, 524, 525, 526, 527, 528, 529, 530, - 0, 531, 0, 532, 533, 534, 535, 0, 0, 536, - 0, 0, 537, 538, 539, 540, 541, 542, 543, 544, - 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, - 555, 556, 223, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 224, 225, 226, - 227, 228, 229, 230, 231, 0, 233, 234, 235, 0, - 0, 0, 0, 0, 0, 0, 236, 237, 0, 238, - 239, 240, 0, 241, 242, 243, 244, 245, 0, 246, - 247, 0, 248, 249, 250, 251, 252, 0, 0, 253, - 254, 255, 256, 257, 0, 258, 259, 260, 261, 262, - 0, 0, 0, 263, 264, 265, 266, 267, 0, 268, - 269, 270, 0, 271, 272, 273, 274, 275, 276, 0, - 0, 277, 278, 279, 0, 0, 0, 0, 0, 0, - 0, 280, 281, 282, 283, 284, 285, 286, 287, 288, - 0, 289, 0, 290, 291, 292, 293, 294, 295, 0, - 296, 297, 298, 299, 0, 0, 300, 301, 302, 303, - 304, 0, 305, 306, 307, 0, 308, 309, 310, 0, - 311, 312, 313, 314, 315, 316, 317, 318, 319, 0, - 320, 0, 321, 322, 323, 324, 0, 325, 0, 326, - 0, 0, 0, 327, 328, 329, 330, 0, 331, 332, - 0, 333, 334, 0, 335, 336, 337, 338, 880, 0, - 340, 341, 342, 343, 0, 344, 345, 346, 347, 348, - 349, 0, 350, 0, 351, 352, 353, 354, 355, 356, - 357, 0, 358, 0, 359, 0, 0, 360, 0, 361, - 362, 363, 364, 365, 0, 0, 366, 367, 0, 368, - 0, 0, 369, 370, 371, 0, 0, 372, 373, 374, - 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, - 385, 386, 387, 388, 0, 389, 390, 391, 392, 393, - 0, 394, 395, 0, 396, 0, 397, 398, 399, 400, - 401, 402, 0, 403, 404, 0, 0, 405, 406, 407, - 0, 0, 408, 409, 0, 410, 0, 411, 412, 413, - 414, 415, 416, 417, 418, 419, 420, 0, 421, 422, - 423, 424, 425, 426, 427, 428, 0, 429, 430, 431, - 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, - 442, 0, 443, 444, 445, 446, 447, 448, 449, 450, - 451, 452, 453, 454, 0, 455, 456, 0, 457, 458, - 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, - 469, 0, 470, 471, 472, 473, 474, 0, 475, 476, - 477, 478, 479, 0, 480, 481, 482, 483, 0, 484, - 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, - 495, 496, 0, 497, 498, 0, 499, 0, 500, 501, - 502, 503, 504, 0, 505, 506, 0, 0, 507, 508, - 509, 510, 511, 0, 512, 513, 514, 515, 516, 517, - 518, 0, 0, 519, 520, 521, 522, 523, 0, 0, - 524, 525, 526, 527, 528, 529, 530, 0, 531, 0, - 532, 533, 534, 535, 0, 0, 536, 0, 0, 537, - 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, - 548, 549, 550, 551, 552, 553, 554, 555, 556, 223, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 224, 225, 226, 227, 228, 229, - 230, 231, 0, 233, 234, 235, 0, 0, 0, 0, - 0, 0, 0, 236, 237, 0, 238, 239, 240, 0, - 241, 242, 243, 244, 245, 0, 246, 247, 0, 248, - 249, 250, 251, 252, 0, 0, 253, 254, 255, 256, - 257, 0, 258, 259, 260, 261, 262, 0, 0, 0, - 263, 264, 265, 266, 267, 0, 268, 269, 270, 0, - 271, 272, 273, 274, 275, 276, 0, 0, 277, 278, - 279, 0, 0, 0, 0, 0, 0, 0, 280, 281, - 282, 283, 284, 285, 286, 287, 288, 0, 289, 0, - 290, 291, 292, 293, 294, 295, 0, 296, 297, 298, - 299, 0, 0, 300, 301, 302, 303, 304, 0, 305, - 306, 307, 0, 308, 309, 310, 0, 311, 312, 313, - 314, 315, 316, 317, 318, 319, 0, 320, 0, 321, - 322, 323, 324, 0, 325, 0, 326, 0, 0, 0, - 327, 328, 329, 330, 0, 331, 332, 0, 333, 334, - 0, 335, 336, 337, 338, 888, 0, 340, 341, 342, - 343, 0, 344, 345, 346, 347, 348, 349, 0, 350, - 0, 351, 352, 353, 354, 355, 356, 357, 0, 358, - 0, 359, 0, 0, 360, 0, 361, 362, 363, 364, - 365, 0, 0, 366, 367, 0, 368, 0, 0, 369, - 370, 371, 0, 0, 372, 373, 374, 375, 376, 377, - 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, - 388, 0, 389, 390, 391, 392, 393, 0, 394, 395, - 0, 396, 0, 397, 398, 399, 400, 401, 402, 0, - 403, 404, 0, 0, 405, 406, 407, 0, 0, 408, - 409, 0, 410, 0, 411, 412, 413, 414, 415, 416, - 417, 418, 419, 420, 0, 421, 422, 423, 424, 425, - 426, 427, 428, 0, 429, 430, 431, 432, 433, 434, - 435, 436, 437, 438, 439, 440, 441, 442, 0, 443, - 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, - 454, 0, 455, 456, 0, 457, 458, 459, 460, 461, - 462, 463, 464, 465, 466, 467, 468, 469, 0, 470, - 471, 472, 473, 474, 0, 475, 476, 477, 478, 479, - 0, 480, 481, 482, 483, 0, 484, 485, 486, 487, - 488, 489, 490, 491, 492, 493, 494, 495, 496, 0, - 497, 498, 0, 499, 0, 500, 501, 502, 503, 504, - 0, 505, 506, 0, 0, 507, 508, 509, 510, 511, - 0, 512, 513, 514, 515, 516, 517, 518, 0, 0, - 519, 520, 521, 522, 523, 0, 0, 524, 525, 526, - 527, 528, 529, 530, 0, 531, 0, 532, 533, 534, - 535, 0, 0, 536, 0, 0, 537, 538, 539, 540, - 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, - 551, 552, 553, 554, 555, 556, 223, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 224, 225, 226, 227, 228, 229, 230, 231, 0, - 233, 234, 235, 0, 0, 0, 0, 0, 0, 0, - 236, 237, 0, 238, 239, 240, 0, 241, 242, 243, - 244, 245, 0, 246, 247, 0, 248, 249, 250, 251, - 252, 0, 0, 253, 254, 255, 256, 257, 0, 258, - 259, 260, 261, 262, 0, 0, 0, 263, 264, 265, - 266, 267, 0, 268, 269, 270, 0, 271, 272, 273, - 274, 275, 276, 0, 0, 277, 278, 279, 0, 0, - 0, 0, 0, 0, 0, 280, 281, 282, 283, 284, - 285, 286, 287, 288, 0, 289, 0, 290, 291, 292, - 293, 294, 295, 0, 296, 297, 298, 299, 0, 0, - 300, 301, 302, 303, 304, 0, 305, 306, 307, 0, - 308, 309, 310, 0, 311, 312, 313, 314, 315, 316, - 317, 318, 319, 0, 320, 0, 321, 322, 323, 324, - 0, 325, 0, 326, 0, 0, 0, 327, 328, 329, - 330, 0, 331, 332, 0, 333, 334, 0, 335, 336, - 337, 338, 906, 0, 340, 341, 342, 343, 0, 344, - 345, 346, 347, 348, 349, 0, 350, 0, 351, 352, - 353, 354, 355, 356, 357, 0, 358, 0, 359, 0, - 0, 360, 0, 361, 362, 363, 364, 365, 0, 0, - 366, 367, 0, 368, 0, 0, 369, 370, 371, 0, - 0, 372, 373, 374, 375, 376, 377, 378, 379, 380, - 381, 382, 383, 384, 385, 386, 387, 388, 0, 389, - 390, 391, 392, 393, 0, 394, 395, 0, 396, 0, - 397, 398, 399, 400, 401, 402, 0, 403, 404, 0, - 0, 405, 406, 407, 0, 0, 408, 409, 0, 410, - 0, 411, 412, 413, 414, 415, 416, 417, 418, 419, - 420, 0, 421, 422, 423, 424, 425, 426, 427, 428, - 0, 429, 430, 431, 432, 433, 434, 435, 436, 437, - 438, 439, 440, 441, 442, 0, 443, 444, 445, 446, - 447, 448, 449, 450, 451, 452, 453, 454, 0, 455, - 456, 0, 457, 458, 459, 460, 461, 462, 463, 464, - 465, 466, 467, 468, 469, 0, 470, 471, 472, 473, - 474, 0, 475, 476, 477, 478, 479, 0, 480, 481, - 482, 483, 0, 484, 485, 486, 487, 488, 489, 490, - 491, 492, 493, 494, 495, 496, 0, 497, 498, 0, - 499, 0, 500, 501, 502, 503, 504, 0, 505, 506, - 0, 0, 507, 508, 509, 510, 511, 0, 512, 513, - 514, 515, 516, 517, 518, 0, 0, 519, 520, 521, - 522, 523, 0, 0, 524, 525, 526, 527, 528, 529, - 530, 0, 531, 0, 532, 533, 534, 535, 0, 0, - 536, 0, 0, 537, 538, 539, 540, 541, 542, 543, - 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, - 554, 555, 556, 223, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 224, 225, - 226, 227, 228, 229, 230, 231, 0, 233, 234, 235, - 0, 0, 0, 0, 0, 0, 0, 236, 237, 0, - 238, 239, 240, 0, 241, 242, 243, 244, 245, 0, - 246, 247, 0, 248, 249, 250, 251, 252, 0, 0, - 253, 254, 255, 256, 257, 0, 258, 259, 260, 261, - 262, 0, 0, 0, 263, 264, 265, 266, 267, 0, - 268, 269, 270, 0, 271, 272, 273, 274, 275, 276, - 0, 0, 277, 278, 279, 0, 0, 0, 0, 0, - 0, 0, 280, 281, 282, 283, 284, 285, 286, 287, - 288, 0, 289, 0, 290, 291, 292, 293, 294, 295, - 0, 296, 297, 298, 299, 0, 0, 300, 301, 302, - 303, 304, 0, 305, 306, 307, 0, 308, 309, 310, - 0, 311, 312, 313, 314, 315, 316, 317, 318, 319, - 0, 320, 0, 321, 322, 323, 324, 0, 325, 0, - 326, 0, 0, 0, 327, 328, 329, 330, 0, 331, - 332, 0, 333, 334, 0, 335, 336, 337, 338, 966, - 0, 340, 341, 342, 343, 0, 344, 345, 346, 347, - 348, 349, 0, 350, 0, 351, 352, 353, 354, 355, - 356, 357, 0, 358, 0, 359, 0, 0, 360, 0, - 361, 362, 363, 364, 365, 0, 0, 366, 367, 0, - 368, 0, 0, 369, 370, 371, 0, 0, 372, 373, - 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, - 384, 385, 386, 387, 388, 0, 389, 390, 391, 392, - 393, 0, 394, 395, 0, 396, 0, 397, 398, 399, - 400, 401, 402, 0, 403, 404, 0, 0, 405, 406, - 407, 0, 0, 408, 409, 0, 410, 0, 411, 412, - 413, 414, 415, 416, 417, 418, 419, 420, 0, 421, - 422, 423, 424, 425, 426, 427, 428, 0, 429, 430, - 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, - 441, 442, 0, 443, 444, 445, 446, 447, 448, 449, - 450, 451, 452, 453, 454, 0, 455, 456, 0, 457, - 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, - 468, 469, 0, 470, 471, 472, 473, 474, 0, 475, - 476, 477, 478, 479, 0, 480, 481, 482, 483, 0, - 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, - 494, 495, 496, 0, 497, 498, 0, 499, 0, 500, - 501, 502, 503, 504, 0, 505, 506, 0, 0, 507, - 508, 509, 510, 511, 0, 512, 513, 514, 515, 516, - 517, 518, 0, 0, 519, 520, 521, 522, 523, 0, - 0, 524, 525, 526, 527, 528, 529, 530, 0, 531, - 0, 532, 533, 534, 535, 0, 0, 536, 0, 0, - 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, - 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, - 223, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 224, 225, 226, 227, 228, - 229, 230, 231, 0, 233, 234, 235, 0, 0, 0, - 0, 0, 0, 0, 236, 237, 0, 238, 239, 240, - 0, 241, 242, 243, 244, 245, 0, 246, 247, 0, - 248, 249, 250, 251, 252, 0, 0, 253, 254, 255, - 256, 257, 0, 258, 259, 260, 261, 262, 0, 0, - 0, 263, 264, 265, 266, 267, 0, 268, 269, 270, - 0, 271, 272, 273, 274, 275, 276, 0, 0, 277, - 278, 279, 0, 0, 0, 0, 0, 0, 0, 280, - 281, 282, 283, 284, 285, 286, 287, 288, 0, 289, - 0, 290, 291, 292, 293, 294, 295, 0, 296, 297, - 298, 299, 0, 0, 300, 301, 302, 303, 304, 0, - 305, 306, 307, 0, 308, 309, 310, 0, 311, 312, - 313, 314, 315, 316, 317, 318, 319, 0, 320, 0, - 321, 322, 323, 324, 0, 325, 0, 326, 0, 0, - 0, 327, 328, 329, 330, 0, 331, 332, 0, 333, - 334, 0, 335, 336, 337, 338, 972, 0, 340, 341, - 342, 343, 0, 344, 345, 346, 347, 348, 349, 0, - 350, 0, 351, 352, 353, 354, 355, 356, 357, 0, - 358, 0, 359, 0, 0, 360, 0, 361, 362, 363, - 364, 365, 0, 0, 366, 367, 0, 368, 0, 0, - 369, 370, 371, 0, 0, 372, 373, 374, 375, 376, - 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, - 387, 388, 0, 389, 390, 391, 392, 393, 0, 394, - 395, 0, 396, 0, 397, 398, 399, 400, 401, 402, - 0, 403, 404, 0, 0, 405, 406, 407, 0, 0, - 408, 409, 0, 410, 0, 411, 412, 413, 414, 415, - 416, 417, 418, 419, 420, 0, 421, 422, 423, 424, - 425, 426, 427, 428, 0, 429, 430, 431, 432, 433, - 434, 435, 436, 437, 438, 439, 440, 441, 442, 0, + 457, 458, 459, 460, 461, 462, 0, 739, 464, 465, + 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, + 476, 477, 0, 478, 479, 480, 740, 482, 483, 484, + 485, 486, 487, 488, 489, 0, 490, 491, 0, 493, + 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, + 504, 505, 506, 507, 0, 508, 509, 510, 511, 512, + 0, 513, 514, 515, 516, 517, 0, 519, 520, 521, + 522, 0, 523, 524, 525, 526, 527, 528, 529, 530, + 531, 532, 533, 534, 535, 536, 537, 0, 538, 539, + 0, 540, 0, 542, 543, 544, 545, 546, 0, 547, + 548, 549, 0, 0, 550, 551, 552, 553, 554, 0, + 555, 556, 557, 558, 559, 560, 561, 562, 0, 0, + 563, 564, 565, 566, 567, 0, 0, 568, 569, 570, + 571, 572, 573, 574, 0, 575, 0, 577, 578, 579, + 580, 0, 0, 581, 0, 0, 582, 583, 584, 585, + 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, + 596, 597, 598, 599, 600, 601, 0, 873, 0, 0, + 669, 0, 0, 0, 741, 742, 2098, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 229, 230, 231, 232, + 233, 234, 235, 236, 0, 237, 238, 239, 0, 0, + 0, 0, 0, 0, 0, 240, 241, 0, 242, 243, + 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, + 0, 254, 255, 256, 257, 258, 259, 0, 0, 260, + 261, 262, 263, 264, 0, 265, 266, 267, 268, 269, + 0, 270, 0, 271, 272, 273, 274, 275, 276, 277, + 278, 279, 0, 280, 281, 282, 283, 284, 285, 0, + 286, 287, 288, 289, 0, 0, 0, 290, 0, 0, + 0, 291, 292, 293, 294, 295, 296, 297, 298, 299, + 2099, 300, 0, 301, 302, 303, 304, 305, 306, 0, + 307, 308, 309, 310, 0, 0, 311, 312, 313, 314, + 315, 0, 316, 317, 318, 0, 319, 320, 321, 0, + 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, + 0, 332, 0, 333, 334, 335, 336, 0, 337, 0, + 338, 339, 0, 340, 341, 342, 343, 344, 0, 345, + 346, 0, 347, 348, 349, 0, 350, 351, 352, 353, + 354, 355, 356, 357, 358, 359, 0, 360, 361, 362, + 363, 364, 365, 366, 0, 367, 368, 369, 370, 371, + 372, 373, 374, 375, 0, 376, 0, 377, 378, 379, + 380, 381, 382, 383, 384, 385, 386, 0, 0, 387, + 388, 389, 390, 391, 0, 392, 393, 394, 0, 0, + 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, + 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, + 415, 416, 417, 418, 419, 420, 421, 422, 423, 0, + 424, 425, 426, 427, 0, 428, 429, 430, 431, 432, + 433, 0, 434, 435, 0, 0, 436, 437, 438, 0, + 0, 439, 440, 441, 442, 443, 444, 445, 446, 447, + 448, 449, 450, 451, 452, 453, 454, 0, 455, 456, + 457, 458, 459, 460, 461, 462, 0, 463, 464, 465, + 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, + 476, 477, 0, 478, 479, 480, 481, 482, 483, 484, + 485, 486, 487, 488, 489, 0, 490, 491, 492, 493, + 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, + 504, 505, 506, 507, 0, 508, 509, 510, 511, 512, + 0, 513, 514, 515, 516, 517, 518, 519, 520, 521, + 522, 0, 523, 524, 525, 526, 527, 528, 529, 530, + 531, 532, 533, 534, 535, 536, 537, 0, 538, 539, + 0, 540, 541, 542, 543, 544, 545, 546, 0, 547, + 548, 549, 0, 0, 550, 551, 552, 553, 554, 0, + 555, 556, 557, 558, 559, 560, 561, 562, 0, 0, + 563, 564, 565, 566, 567, 0, 0, 568, 569, 570, + 571, 572, 573, 574, 0, 575, 576, 577, 578, 579, + 580, 0, 0, 581, 0, 0, 582, 583, 584, 585, + 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, + 596, 597, 598, 599, 600, 601, 873, 0, 0, 669, + 0, 0, 2100, 0, 0, 1338, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 229, 230, 231, 232, 233, + 234, 235, 236, 0, 237, 238, 239, 0, 0, 0, + 0, 0, 0, 0, 240, 241, 0, 242, 243, 244, + 245, 246, 247, 248, 249, 250, 251, 252, 253, 0, + 254, 255, 256, 257, 258, 259, 0, 0, 260, 261, + 262, 263, 264, 0, 265, 266, 267, 268, 269, 0, + 270, 0, 271, 272, 273, 274, 275, 276, 277, 278, + 279, 0, 280, 281, 282, 283, 284, 285, 0, 286, + 287, 288, 289, 0, 0, 0, 290, 0, 0, 0, + 291, 292, 293, 294, 295, 296, 297, 298, 299, 0, + 300, 0, 301, 302, 303, 304, 305, 306, 0, 307, + 308, 309, 310, 0, 0, 311, 312, 313, 314, 315, + 0, 316, 317, 318, 0, 319, 320, 321, 0, 322, + 323, 324, 325, 326, 327, 328, 329, 330, 331, 0, + 332, 0, 333, 334, 335, 336, 0, 337, 0, 338, + 339, 0, 340, 341, 342, 343, 344, 0, 345, 346, + 0, 347, 348, 349, 0, 350, 351, 352, 353, 354, + 355, 356, 357, 358, 359, 0, 360, 361, 362, 363, + 364, 365, 366, 0, 367, 368, 369, 370, 371, 372, + 373, 374, 375, 0, 376, 0, 377, 378, 379, 380, + 381, 382, 383, 384, 385, 386, 0, 0, 387, 388, + 389, 390, 391, 0, 392, 393, 394, 0, 0, 395, + 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, + 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, + 416, 417, 418, 419, 420, 421, 422, 423, 0, 424, + 425, 426, 427, 0, 428, 429, 430, 431, 432, 433, + 0, 434, 435, 0, 0, 436, 437, 438, 0, 0, + 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, + 449, 450, 451, 452, 453, 454, 0, 455, 456, 457, + 458, 459, 460, 461, 462, 0, 463, 464, 465, 466, + 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, + 477, 0, 478, 479, 480, 481, 482, 483, 484, 485, + 486, 487, 488, 489, 0, 490, 491, 492, 493, 494, + 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, + 505, 506, 507, 0, 508, 509, 510, 511, 512, 0, + 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, + 0, 523, 524, 525, 526, 527, 528, 529, 530, 531, + 532, 533, 534, 535, 536, 537, 0, 538, 539, 0, + 540, 541, 542, 543, 544, 545, 546, 0, 547, 548, + 549, 0, 0, 550, 551, 552, 553, 554, 0, 555, + 556, 557, 558, 559, 560, 561, 562, 0, 0, 563, + 564, 565, 566, 567, 0, 0, 568, 569, 570, 571, + 572, 573, 574, 0, 575, 576, 577, 578, 579, 580, + 0, 0, 581, 0, 0, 582, 583, 584, 585, 586, + 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, + 597, 598, 599, 600, 601, 609, 0, 0, 669, 0, + 0, 1339, 0, 0, 1341, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 229, 230, 231, 232, 233, 234, + 235, 236, 0, 237, 238, 239, 0, 0, 0, 0, + 0, 0, 0, 240, 241, 0, 242, 243, 244, 0, + 246, 247, 248, 249, 250, 0, 252, 253, 0, 254, + 255, 256, 257, 258, 259, 0, 0, 260, 261, 262, + 263, 264, 0, 265, 266, 267, 268, 269, 0, 0, + 0, 271, 272, 273, 274, 275, 0, 277, 278, 279, + 0, 280, 281, 282, 283, 284, 285, 0, 0, 287, + 288, 289, 0, 0, 0, 0, 0, 0, 0, 291, + 292, 293, 294, 295, 296, 297, 298, 299, 0, 300, + 0, 301, 302, 303, 304, 305, 306, 0, 307, 308, + 309, 310, 0, 0, 311, 312, 313, 314, 315, 0, + 316, 317, 318, 0, 319, 320, 321, 0, 322, 323, + 324, 325, 326, 327, 328, 329, 330, 331, 0, 332, + 0, 333, 334, 335, 336, 0, 337, 0, 338, 0, + 0, 0, 341, 342, 343, 344, 0, 345, 346, 0, + 347, 348, 349, 0, 350, 351, 352, 353, 354, 0, + 356, 357, 358, 359, 0, 360, 361, 362, 363, 364, + 365, 366, 0, 367, 0, 369, 370, 371, 372, 373, + 374, 375, 0, 376, 0, 377, 0, 0, 380, 0, + 382, 383, 384, 385, 386, 0, 0, 387, 388, 0, + 390, 0, 0, 392, 393, 394, 0, 0, 395, 396, + 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, + 407, 408, 409, 410, 411, 0, 413, 414, 415, 416, + 417, 418, 419, 420, 421, 422, 423, 0, 424, 425, + 0, 427, 0, 428, 429, 430, 431, 432, 433, 0, + 434, 435, 0, 0, 436, 437, 438, 0, 0, 439, + 440, 441, 0, 443, 0, 445, 446, 447, 448, 449, + 450, 451, 452, 453, 454, 0, 455, 456, 457, 458, + 459, 460, 461, 462, 0, 463, 464, 465, 466, 467, + 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, + 0, 478, 479, 480, 481, 482, 483, 484, 485, 486, + 487, 488, 489, 0, 490, 491, 0, 493, 494, 495, + 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, + 506, 507, 0, 508, 509, 510, 511, 512, 0, 513, + 514, 515, 516, 517, 0, 519, 520, 521, 522, 0, + 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, + 533, 534, 535, 536, 537, 0, 538, 539, 0, 540, + 0, 542, 543, 544, 545, 546, 0, 547, 548, 549, + 0, 0, 550, 551, 552, 553, 554, 0, 555, 556, + 557, 558, 559, 560, 561, 562, 0, 0, 563, 564, + 565, 566, 567, 0, 0, 568, 569, 570, 571, 572, + 573, 574, 0, 575, 0, 577, 578, 579, 580, 0, + 0, 581, 0, 0, 582, 583, 584, 585, 586, 587, + 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, + 598, 599, 600, 601, 1643, 0, 5539, 669, 0, 0, + 1342, 0, 729, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 229, 230, 231, 232, 233, 234, 235, + 236, 1644, 237, 238, 239, 1645, 1646, 1647, 1648, 1649, + 1650, 1651, 240, 241, 1652, 242, 243, 244, 245, 246, + 247, 248, 249, 250, 251, 252, 253, 1653, 254, 255, + 256, 257, 258, 259, 1654, 1655, 260, 261, 262, 263, + 264, 1656, 265, 266, 267, 268, 269, 1657, 270, 1658, + 271, 272, 273, 274, 275, 276, 277, 278, 279, 1659, + 280, 281, 282, 283, 284, 285, 1660, 286, 287, 288, + 289, 1661, 1662, 1663, 290, 1664, 1665, 1666, 291, 292, + 293, 294, 295, 296, 297, 298, 299, 1667, 300, 1668, + 301, 302, 303, 304, 305, 306, 1669, 307, 308, 309, + 310, 1670, 1671, 311, 312, 313, 314, 315, 1672, 316, + 317, 318, 1673, 319, 320, 321, 1674, 322, 323, 324, + 325, 326, 327, 328, 329, 330, 331, 1675, 332, 1676, + 333, 334, 335, 336, 1677, 337, 1678, 338, 339, 1679, + 340, 341, 342, 343, 344, 1680, 345, 346, 1681, 347, + 348, 349, 1682, 350, 351, 352, 353, 354, 355, 356, + 357, 358, 359, 1683, 360, 361, 362, 363, 364, 365, + 366, 1684, 367, 368, 369, 370, 371, 372, 373, 374, + 375, 1685, 376, 1686, 377, 378, 379, 380, 381, 382, + 383, 384, 385, 386, 1687, 1688, 387, 388, 389, 390, + 391, 1689, 392, 393, 394, 1690, 1691, 395, 396, 397, + 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, + 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, + 418, 419, 420, 421, 422, 423, 1692, 424, 425, 426, + 427, 1693, 428, 429, 430, 431, 432, 433, 1694, 434, + 435, 1695, 1696, 436, 437, 438, 1697, 1698, 439, 440, + 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, + 451, 452, 453, 454, 1699, 455, 456, 457, 458, 459, + 460, 461, 462, 1700, 463, 464, 465, 466, 467, 468, + 469, 470, 471, 472, 473, 474, 475, 476, 477, 1701, + 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, + 488, 489, 1702, 490, 491, 492, 493, 494, 495, 496, + 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, + 507, 1703, 508, 509, 510, 511, 512, 1704, 513, 514, + 515, 516, 517, 518, 519, 520, 521, 522, 1705, 523, + 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, + 534, 535, 536, 537, 1706, 538, 539, 1707, 540, 541, + 542, 543, 544, 545, 546, 1708, 547, 548, 549, 1709, + 1710, 550, 551, 552, 553, 554, 1711, 555, 556, 557, + 558, 559, 560, 561, 562, 1712, 1713, 563, 564, 565, + 566, 567, 1714, 1715, 568, 569, 570, 571, 572, 573, + 574, 1716, 575, 576, 577, 578, 579, 580, 1717, 1718, + 581, 1719, 1720, 582, 583, 584, 585, 586, 587, 588, + 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, + 599, 600, 601, 1643, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 229, 230, 231, 232, 233, 234, 235, 236, + 1644, 237, 238, 239, 1645, 1646, 1647, 1648, 1649, 1650, + 1651, 240, 241, 1652, 242, 243, 244, 245, 246, 247, + 248, 249, 250, 251, 252, 253, 1653, 254, 255, 256, + 257, 258, 259, 1654, 1655, 260, 261, 262, 263, 264, + 1656, 265, 266, 267, 268, 269, 1657, 270, 1658, 271, + 272, 273, 274, 275, 276, 277, 278, 279, 1659, 280, + 281, 282, 283, 284, 285, 1660, 286, 287, 288, 289, + 1661, 1662, 1663, 290, 1664, 1665, 1666, 291, 292, 293, + 294, 295, 296, 297, 298, 299, 1667, 300, 1668, 301, + 302, 303, 304, 305, 306, 1669, 307, 308, 309, 310, + 1670, 1671, 311, 312, 313, 314, 315, 1672, 316, 317, + 318, 1673, 319, 320, 321, 1674, 322, 323, 324, 325, + 326, 327, 328, 329, 330, 331, 1675, 332, 1676, 333, + 334, 335, 336, 1677, 337, 1678, 338, 339, 1679, 340, + 341, 342, 343, 344, 1680, 345, 346, 1681, 347, 348, + 349, 1682, 350, 351, 352, 353, 354, 355, 356, 357, + 358, 359, 1683, 360, 361, 362, 363, 364, 365, 366, + 1684, 367, 368, 369, 370, 371, 372, 373, 374, 375, + 1685, 376, 1686, 377, 378, 379, 380, 381, 382, 383, + 384, 385, 386, 1687, 1688, 387, 388, 389, 390, 391, + 1689, 392, 393, 394, 1690, 1691, 395, 396, 397, 398, + 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, + 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, + 419, 420, 421, 422, 423, 1692, 424, 425, 426, 427, + 1693, 428, 429, 430, 431, 432, 433, 1694, 434, 435, + 1695, 1696, 436, 437, 438, 1697, 1698, 439, 440, 441, + 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, + 452, 453, 454, 1699, 455, 456, 457, 458, 459, 460, + 461, 462, 1700, 463, 464, 465, 466, 467, 468, 469, + 470, 471, 472, 473, 474, 475, 476, 477, 1701, 478, + 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, + 489, 1702, 490, 491, 492, 493, 494, 495, 496, 497, + 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, + 1703, 508, 509, 510, 511, 512, 1704, 513, 514, 515, + 516, 517, 518, 519, 520, 521, 522, 1705, 523, 524, + 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, + 535, 536, 537, 1706, 538, 539, 1707, 540, 541, 542, + 543, 544, 545, 546, 1708, 547, 548, 549, 1709, 1710, + 550, 551, 552, 553, 554, 1711, 555, 556, 557, 558, + 559, 560, 561, 562, 1712, 1713, 563, 564, 565, 566, + 567, 1714, 1715, 568, 569, 570, 571, 572, 573, 574, + 1716, 575, 576, 577, 578, 579, 580, 1717, 1718, 581, + 1719, 1720, 582, 583, 584, 585, 586, 587, 588, 589, + 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, + 600, 601, 1643, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 229, 230, 231, 232, 3111, 234, 235, 236, 1644, + 237, 238, 239, 1645, 1646, 1647, 1648, 1649, 1650, 1651, + 240, 241, 1652, 242, 243, 244, 245, 246, 247, 248, + 249, 250, 251, 252, 253, 1653, 254, 255, 256, 257, + 258, 259, 1654, 1655, 260, 261, 262, 263, 264, 1656, + 265, 266, 267, 268, 269, 1657, 270, 1658, 271, 272, + 273, 274, 275, 276, 277, 278, 279, 1659, 280, 281, + 282, 283, 284, 285, 1660, 286, 287, 288, 289, 1661, + 1662, 1663, 290, 1664, 1665, 1666, 291, 292, 293, 294, + 295, 296, 297, 298, 299, 1667, 300, 1668, 301, 302, + 303, 304, 305, 306, 1669, 307, 308, 309, 310, 1670, + 1671, 311, 312, 313, 3112, 315, 1672, 316, 317, 318, + 1673, 319, 320, 321, 1674, 322, 323, 324, 325, 326, + 327, 328, 329, 330, 331, 1675, 332, 1676, 333, 334, + 335, 336, 1677, 337, 1678, 338, 339, 1679, 340, 341, + 342, 343, 344, 1680, 345, 346, 1681, 347, 348, 349, + 1682, 350, 351, 352, 353, 354, 355, 356, 357, 358, + 359, 1683, 360, 361, 362, 363, 364, 365, 366, 1684, + 367, 368, 369, 370, 371, 372, 373, 374, 375, 1685, + 376, 1686, 377, 378, 379, 380, 381, 382, 383, 384, + 385, 386, 1687, 1688, 387, 388, 389, 390, 391, 1689, + 392, 393, 394, 1690, 1691, 395, 396, 397, 398, 399, + 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, + 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, + 420, 421, 422, 423, 1692, 424, 425, 426, 427, 1693, + 428, 429, 430, 431, 432, 433, 1694, 434, 435, 1695, + 1696, 436, 437, 438, 1697, 1698, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, - 453, 454, 0, 455, 456, 0, 457, 458, 459, 460, - 461, 462, 463, 464, 465, 466, 467, 468, 469, 0, - 470, 471, 472, 473, 474, 0, 475, 476, 477, 478, - 479, 0, 480, 481, 482, 483, 0, 484, 485, 486, - 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, - 0, 497, 498, 0, 499, 0, 500, 501, 502, 503, - 504, 0, 505, 506, 0, 0, 507, 508, 509, 510, - 511, 0, 512, 513, 514, 515, 516, 517, 518, 0, - 0, 519, 520, 521, 522, 523, 0, 0, 524, 525, - 526, 527, 528, 529, 530, 0, 531, 0, 532, 533, - 534, 535, 0, 0, 536, 0, 0, 537, 538, 539, - 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, - 550, 551, 552, 553, 554, 555, 556, 223, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 224, 225, 226, 227, 228, 229, 230, 231, - 0, 233, 234, 235, 0, 0, 0, 0, 0, 0, - 0, 236, 237, 0, 238, 239, 240, 0, 241, 242, - 243, 244, 245, 0, 246, 247, 0, 248, 249, 250, - 251, 252, 0, 0, 253, 254, 255, 256, 257, 0, - 258, 259, 260, 261, 262, 0, 0, 0, 263, 264, - 265, 266, 267, 0, 268, 269, 270, 0, 271, 272, - 273, 274, 275, 276, 0, 0, 277, 278, 279, 0, - 0, 0, 0, 0, 0, 0, 280, 281, 282, 283, - 284, 285, 286, 287, 288, 0, 289, 0, 290, 291, - 292, 293, 294, 295, 0, 296, 297, 298, 299, 0, - 0, 300, 301, 302, 303, 304, 0, 305, 306, 307, - 0, 308, 309, 310, 0, 311, 312, 313, 314, 315, - 316, 317, 318, 319, 0, 320, 0, 321, 322, 323, - 324, 0, 325, 0, 326, 0, 0, 0, 327, 328, - 329, 330, 0, 331, 332, 0, 333, 334, 0, 335, - 336, 337, 338, 989, 0, 340, 341, 342, 343, 0, - 344, 345, 346, 347, 348, 349, 0, 350, 0, 351, - 352, 353, 354, 355, 356, 357, 0, 358, 0, 359, - 0, 0, 360, 0, 361, 362, 363, 364, 365, 0, - 0, 366, 367, 0, 368, 0, 0, 369, 370, 371, - 0, 0, 372, 373, 374, 375, 376, 377, 378, 379, - 380, 381, 382, 383, 384, 385, 386, 387, 388, 0, - 389, 390, 391, 392, 393, 0, 394, 395, 0, 396, - 0, 397, 398, 399, 400, 401, 402, 0, 403, 404, - 0, 0, 405, 406, 407, 0, 0, 408, 409, 0, - 410, 0, 411, 412, 413, 414, 415, 416, 417, 418, - 419, 420, 0, 421, 422, 423, 424, 425, 426, 427, - 428, 0, 429, 430, 431, 432, 433, 434, 435, 436, - 437, 438, 439, 440, 441, 442, 0, 443, 444, 445, - 446, 447, 448, 449, 450, 451, 452, 453, 454, 0, - 455, 456, 0, 457, 458, 459, 460, 461, 462, 463, - 464, 465, 466, 467, 468, 469, 0, 470, 471, 472, - 473, 474, 0, 475, 476, 477, 478, 479, 0, 480, - 481, 482, 483, 0, 484, 485, 486, 487, 488, 489, - 490, 491, 492, 493, 494, 495, 496, 0, 497, 498, - 0, 499, 0, 500, 501, 502, 503, 504, 0, 505, - 506, 0, 0, 507, 508, 509, 510, 511, 0, 512, - 513, 514, 515, 516, 517, 518, 0, 0, 519, 520, - 521, 522, 523, 0, 0, 524, 525, 526, 527, 528, - 529, 530, 0, 531, 0, 532, 533, 534, 535, 0, - 0, 536, 0, 0, 537, 538, 539, 540, 541, 542, - 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, - 553, 554, 555, 556, 223, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, - 225, 226, 227, 228, 229, 230, 231, 0, 233, 234, - 235, 0, 0, 0, 0, 0, 0, 0, 236, 237, - 0, 238, 239, 240, 0, 241, 242, 243, 244, 245, - 0, 246, 247, 0, 248, 249, 250, 251, 252, 0, - 0, 253, 254, 255, 256, 257, 0, 258, 259, 260, - 261, 262, 0, 0, 0, 263, 264, 265, 266, 267, - 0, 268, 269, 270, 0, 271, 272, 273, 274, 275, - 276, 0, 0, 277, 278, 279, 0, 0, 0, 0, - 0, 0, 0, 280, 281, 282, 283, 284, 285, 286, - 287, 288, 0, 289, 0, 290, 291, 292, 293, 294, - 295, 0, 296, 297, 298, 299, 0, 0, 300, 301, - 302, 303, 304, 0, 305, 306, 307, 0, 308, 309, - 310, 0, 311, 312, 313, 314, 315, 316, 317, 318, - 319, 0, 320, 0, 321, 322, 323, 324, 0, 325, - 0, 326, 0, 0, 0, 327, 328, 329, 330, 0, - 331, 332, 0, 333, 334, 0, 335, 336, 337, 338, - 992, 0, 340, 341, 342, 343, 0, 344, 345, 346, - 347, 348, 349, 0, 350, 0, 351, 352, 353, 354, - 355, 356, 357, 0, 358, 0, 359, 0, 0, 360, - 0, 361, 362, 363, 364, 365, 0, 0, 366, 367, - 0, 368, 0, 0, 369, 370, 371, 0, 0, 372, - 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, - 383, 384, 385, 386, 387, 388, 0, 389, 390, 391, - 392, 393, 0, 394, 395, 0, 396, 0, 397, 398, - 399, 400, 401, 402, 0, 403, 404, 0, 0, 405, - 406, 407, 0, 0, 408, 409, 0, 410, 0, 411, - 412, 413, 414, 415, 416, 417, 418, 419, 420, 0, - 421, 422, 423, 424, 425, 426, 427, 428, 0, 429, - 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, - 440, 441, 442, 0, 443, 444, 445, 446, 447, 448, - 449, 450, 451, 452, 453, 454, 0, 455, 456, 0, - 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, - 467, 468, 469, 0, 470, 471, 472, 473, 474, 0, - 475, 476, 477, 478, 479, 0, 480, 481, 482, 483, - 0, 484, 485, 486, 487, 488, 489, 490, 491, 492, - 493, 494, 495, 496, 0, 497, 498, 0, 499, 0, - 500, 501, 502, 503, 504, 0, 505, 506, 0, 0, - 507, 508, 509, 510, 511, 0, 512, 513, 514, 515, - 516, 517, 518, 0, 0, 519, 520, 521, 522, 523, - 0, 0, 524, 525, 526, 527, 528, 529, 530, 0, - 531, 0, 532, 533, 534, 535, 0, 0, 536, 0, - 0, 537, 538, 539, 540, 541, 542, 543, 544, 545, - 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, - 556, 223, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 224, 225, 226, 227, - 228, 229, 230, 231, 0, 233, 234, 235, 0, 0, - 0, 0, 0, 0, 0, 236, 237, 0, 238, 239, - 240, 0, 241, 242, 243, 244, 245, 0, 246, 247, - 0, 248, 249, 250, 251, 252, 0, 0, 253, 254, - 255, 256, 257, 0, 258, 259, 260, 261, 262, 0, - 0, 0, 263, 264, 265, 266, 267, 0, 268, 269, - 270, 0, 271, 272, 273, 274, 275, 276, 0, 0, - 277, 278, 279, 0, 0, 0, 0, 0, 0, 0, - 280, 281, 282, 283, 284, 285, 286, 287, 288, 0, - 289, 0, 290, 291, 292, 293, 294, 295, 0, 296, - 297, 298, 299, 0, 0, 300, 301, 302, 303, 304, - 0, 305, 306, 307, 0, 308, 309, 310, 0, 311, - 312, 313, 314, 315, 316, 317, 318, 319, 0, 320, - 0, 321, 322, 323, 324, 0, 325, 0, 326, 0, - 0, 0, 327, 328, 329, 330, 0, 331, 332, 0, - 333, 334, 0, 335, 336, 337, 338, 994, 0, 340, - 341, 342, 343, 0, 344, 345, 346, 347, 348, 349, - 0, 350, 0, 351, 352, 353, 354, 355, 356, 357, - 0, 358, 0, 359, 0, 0, 360, 0, 361, 362, - 363, 364, 365, 0, 0, 366, 367, 0, 368, 0, - 0, 369, 370, 371, 0, 0, 372, 373, 374, 375, - 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, - 386, 387, 388, 0, 389, 390, 391, 392, 393, 0, - 394, 395, 0, 396, 0, 397, 398, 399, 400, 401, - 402, 0, 403, 404, 0, 0, 405, 406, 407, 0, - 0, 408, 409, 0, 410, 0, 411, 412, 413, 414, - 415, 416, 417, 418, 419, 420, 0, 421, 422, 423, - 424, 425, 426, 427, 428, 0, 429, 430, 431, 432, - 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, - 0, 443, 444, 445, 446, 447, 448, 449, 450, 451, - 452, 453, 454, 0, 455, 456, 0, 457, 458, 459, - 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, - 0, 470, 471, 472, 473, 474, 0, 475, 476, 477, - 478, 479, 0, 480, 481, 482, 483, 0, 484, 485, - 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, - 496, 0, 497, 498, 0, 499, 0, 500, 501, 502, - 503, 504, 0, 505, 506, 0, 0, 507, 508, 509, - 510, 511, 0, 512, 513, 514, 515, 516, 517, 518, - 0, 0, 519, 520, 521, 522, 523, 0, 0, 524, - 525, 526, 527, 528, 529, 530, 0, 531, 0, 532, - 533, 534, 535, 0, 0, 536, 0, 0, 537, 538, - 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, - 549, 550, 551, 552, 553, 554, 555, 556, 223, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 224, 225, 226, 227, 228, 229, 230, - 231, 0, 233, 234, 235, 0, 0, 0, 0, 0, - 0, 0, 236, 237, 0, 238, 239, 240, 0, 241, - 242, 243, 244, 245, 0, 246, 247, 0, 248, 249, - 250, 251, 252, 0, 0, 253, 254, 255, 256, 257, - 0, 258, 259, 260, 261, 262, 0, 0, 0, 263, - 264, 265, 266, 267, 0, 268, 269, 270, 0, 271, - 272, 273, 274, 275, 276, 0, 0, 277, 278, 279, - 0, 0, 0, 0, 0, 0, 0, 280, 281, 282, - 283, 284, 285, 286, 287, 288, 0, 289, 0, 290, - 291, 292, 293, 294, 295, 0, 296, 297, 298, 299, - 0, 0, 300, 301, 302, 303, 304, 0, 305, 306, - 307, 0, 308, 309, 310, 0, 311, 312, 313, 314, - 315, 316, 317, 318, 319, 0, 320, 0, 321, 322, - 323, 324, 0, 325, 0, 326, 0, 0, 0, 327, - 328, 329, 330, 0, 331, 332, 0, 333, 334, 0, - 335, 336, 337, 338, 1029, 0, 340, 341, 342, 343, - 0, 344, 345, 346, 347, 348, 349, 0, 350, 0, - 351, 352, 353, 354, 355, 356, 357, 0, 358, 0, - 359, 0, 0, 360, 0, 361, 362, 363, 364, 365, - 0, 0, 366, 367, 0, 368, 0, 0, 369, 370, - 371, 0, 0, 372, 373, 374, 375, 376, 377, 378, - 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, - 0, 389, 390, 391, 392, 393, 0, 394, 395, 0, - 396, 0, 397, 398, 399, 400, 401, 402, 0, 403, - 404, 0, 0, 405, 406, 407, 0, 0, 408, 409, - 0, 410, 0, 411, 412, 413, 414, 415, 416, 417, - 418, 419, 420, 0, 421, 422, 423, 424, 425, 426, - 427, 428, 0, 429, 430, 431, 432, 433, 434, 435, - 436, 437, 438, 439, 440, 441, 442, 0, 443, 444, - 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, - 0, 455, 456, 0, 457, 458, 459, 460, 461, 462, - 463, 464, 465, 466, 467, 468, 469, 0, 470, 471, - 472, 473, 474, 0, 475, 476, 477, 478, 479, 0, - 480, 481, 482, 483, 0, 484, 485, 486, 487, 488, - 489, 490, 491, 492, 493, 494, 495, 496, 0, 497, - 498, 0, 499, 0, 500, 501, 502, 503, 504, 0, - 505, 506, 0, 0, 507, 508, 509, 510, 511, 0, - 512, 513, 514, 515, 516, 517, 518, 0, 0, 519, - 520, 521, 522, 523, 0, 0, 524, 525, 526, 527, - 528, 529, 530, 0, 531, 0, 532, 533, 534, 535, - 0, 0, 536, 0, 0, 537, 538, 539, 540, 541, - 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, - 552, 553, 554, 555, 556, 223, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 224, 225, 226, 227, 228, 229, 230, 231, 0, 233, - 234, 235, 0, 0, 0, 0, 0, 0, 0, 236, - 237, 0, 238, 239, 240, 0, 241, 242, 243, 244, - 245, 0, 246, 247, 0, 248, 249, 250, 251, 252, - 0, 0, 253, 254, 255, 256, 257, 0, 258, 259, - 260, 261, 262, 0, 0, 0, 263, 264, 265, 266, - 267, 0, 268, 269, 270, 0, 271, 272, 273, 274, - 275, 276, 0, 0, 277, 278, 279, 0, 0, 0, - 0, 0, 0, 0, 280, 281, 282, 283, 284, 285, - 286, 287, 288, 0, 289, 0, 290, 291, 292, 293, - 294, 295, 0, 296, 297, 298, 299, 0, 0, 300, - 301, 302, 303, 304, 0, 305, 306, 307, 0, 308, - 309, 310, 0, 311, 312, 313, 314, 315, 316, 317, - 318, 319, 0, 320, 0, 321, 322, 323, 324, 0, - 325, 0, 326, 0, 0, 0, 327, 328, 329, 330, - 0, 331, 332, 0, 333, 334, 0, 335, 336, 337, - 338, 1089, 0, 340, 341, 342, 343, 0, 344, 345, - 346, 347, 348, 349, 0, 350, 0, 351, 352, 353, - 354, 355, 356, 357, 0, 358, 0, 359, 0, 0, - 360, 0, 361, 362, 363, 364, 365, 0, 0, 366, - 367, 0, 368, 0, 0, 369, 370, 371, 0, 0, - 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, - 382, 383, 384, 385, 386, 387, 388, 0, 389, 390, - 391, 392, 393, 0, 394, 395, 0, 396, 0, 397, - 398, 399, 400, 401, 402, 0, 403, 404, 0, 0, - 405, 406, 407, 0, 0, 408, 409, 0, 410, 0, + 453, 454, 1699, 455, 456, 457, 458, 459, 460, 461, + 462, 1700, 463, 464, 465, 466, 467, 468, 469, 470, + 471, 472, 473, 474, 475, 476, 477, 1701, 478, 479, + 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, + 1702, 490, 491, 492, 493, 494, 495, 496, 497, 498, + 499, 500, 501, 502, 503, 504, 505, 506, 507, 1703, + 508, 509, 510, 511, 512, 1704, 3113, 514, 515, 516, + 517, 518, 519, 520, 521, 522, 1705, 523, 524, 525, + 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, + 536, 537, 1706, 538, 539, 1707, 540, 541, 542, 543, + 544, 545, 546, 1708, 547, 548, 549, 1709, 1710, 550, + 551, 552, 553, 554, 1711, 555, 556, 557, 558, 559, + 560, 561, 562, 1712, 1713, 563, 564, 565, 566, 567, + 1714, 1715, 568, 569, 570, 571, 572, 573, 574, 1716, + 575, 576, 577, 578, 579, 580, 1717, 1718, 581, 1719, + 1720, 582, 583, 584, 585, 586, 587, 588, 589, 590, + 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, + 601, 228, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 229, 230, 231, 232, 233, 234, 235, 236, 0, 237, + 238, 239, 0, 0, 0, 0, 0, 0, 0, 240, + 241, 0, 242, 243, 244, 245, 246, 247, 248, 249, + 250, 251, 252, 253, 0, 254, 255, 256, 257, 258, + 259, 0, 1233, 260, 261, 262, 263, 264, 0, 265, + 266, 267, 268, 1236, 0, 1237, 0, 271, 272, 273, + 274, 275, 276, 277, 278, 279, 0, 280, 281, 282, + 283, 284, 285, 0, 286, 287, 288, 289, 1238, 1239, + 1240, 1241, 1242, 1243, 1244, 291, 292, 293, 294, 295, + 296, 297, 298, 299, 0, 300, 0, 301, 302, 303, + 304, 305, 306, 0, 307, 308, 309, 310, 0, 0, + 311, 312, 313, 314, 315, 0, 316, 317, 318, 0, + 319, 320, 321, 0, 322, 323, 324, 325, 326, 327, + 328, 329, 330, 1249, 0, 332, 0, 333, 334, 335, + 336, 0, 337, 0, 338, 339, 0, 340, 341, 342, + 343, 344, 0, 345, 1252, 0, 347, 348, 349, 0, + 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, + 0, 360, 361, 362, 363, 364, 365, 366, 0, 367, + 368, 369, 370, 371, 372, 373, 374, 375, 0, 376, + 0, 377, 378, 379, 380, 381, 382, 383, 384, 385, + 386, 0, 0, 387, 1257, 389, 390, 391, 0, 392, + 393, 394, 1258, 1259, 395, 396, 397, 398, 399, 400, + 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, - 0, 421, 422, 423, 424, 425, 426, 427, 428, 0, - 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, - 439, 440, 441, 442, 0, 443, 444, 445, 446, 447, - 448, 449, 450, 451, 452, 453, 454, 0, 455, 456, - 0, 457, 458, 459, 460, 461, 462, 463, 464, 465, - 466, 467, 468, 469, 0, 470, 471, 472, 473, 474, - 0, 475, 476, 477, 478, 479, 0, 480, 481, 482, - 483, 0, 484, 485, 486, 487, 488, 489, 490, 491, - 492, 493, 494, 495, 496, 0, 497, 498, 0, 499, - 0, 500, 501, 502, 503, 504, 0, 505, 506, 0, - 0, 507, 508, 509, 510, 511, 0, 512, 513, 514, - 515, 516, 517, 518, 0, 0, 519, 520, 521, 522, - 523, 0, 0, 524, 525, 526, 527, 528, 529, 530, - 0, 531, 0, 532, 533, 534, 535, 0, 0, 536, - 0, 0, 537, 538, 539, 540, 541, 542, 543, 544, - 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, - 555, 556, 223, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 224, 225, 226, - 227, 228, 229, 230, 231, 0, 233, 234, 235, 0, - 0, 0, 0, 0, 0, 0, 236, 237, 0, 238, - 239, 240, 0, 241, 242, 243, 244, 245, 0, 246, - 247, 0, 248, 249, 250, 251, 252, 0, 0, 253, - 254, 255, 256, 257, 0, 258, 259, 260, 261, 262, - 0, 0, 0, 263, 264, 265, 266, 267, 0, 268, - 269, 270, 0, 271, 272, 273, 274, 275, 276, 0, - 0, 277, 278, 279, 0, 0, 0, 0, 0, 0, - 0, 280, 281, 282, 283, 284, 285, 286, 287, 288, - 0, 289, 0, 290, 291, 292, 293, 294, 295, 0, - 296, 297, 298, 299, 0, 0, 300, 301, 302, 303, - 304, 0, 305, 306, 307, 0, 308, 309, 310, 0, - 311, 312, 313, 314, 315, 316, 317, 318, 319, 0, - 320, 0, 321, 322, 323, 324, 0, 325, 0, 326, - 0, 0, 0, 327, 328, 329, 330, 0, 331, 332, - 0, 333, 334, 0, 335, 336, 337, 338, 1091, 0, - 340, 341, 342, 343, 0, 344, 345, 346, 347, 348, - 349, 0, 350, 0, 351, 352, 353, 354, 355, 356, - 357, 0, 358, 0, 359, 0, 0, 360, 0, 361, - 362, 363, 364, 365, 0, 0, 366, 367, 0, 368, - 0, 0, 369, 370, 371, 0, 0, 372, 373, 374, - 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, - 385, 386, 387, 388, 0, 389, 390, 391, 392, 393, - 0, 394, 395, 0, 396, 0, 397, 398, 399, 400, - 401, 402, 0, 403, 404, 0, 0, 405, 406, 407, - 0, 0, 408, 409, 0, 410, 0, 411, 412, 413, - 414, 415, 416, 417, 418, 419, 420, 0, 421, 422, - 423, 424, 425, 426, 427, 428, 0, 429, 430, 431, - 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, - 442, 0, 443, 444, 445, 446, 447, 448, 449, 450, - 451, 452, 453, 454, 0, 455, 456, 0, 457, 458, - 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, - 469, 0, 470, 471, 472, 473, 474, 0, 475, 476, - 477, 478, 479, 0, 480, 481, 482, 483, 0, 484, - 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, - 495, 496, 0, 497, 498, 0, 499, 0, 500, 501, - 502, 503, 504, 0, 505, 506, 0, 0, 507, 508, - 509, 510, 511, 0, 512, 513, 514, 515, 516, 517, - 518, 0, 0, 519, 520, 521, 522, 523, 0, 0, - 524, 525, 526, 527, 528, 529, 530, 0, 531, 0, - 532, 533, 534, 535, 0, 0, 536, 0, 0, 537, - 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, - 548, 549, 550, 551, 552, 553, 554, 555, 556, 223, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 224, 225, 226, 227, 228, 229, - 230, 231, 0, 233, 234, 235, 0, 0, 0, 0, - 0, 0, 0, 236, 237, 0, 238, 239, 240, 0, - 241, 242, 243, 244, 245, 0, 246, 247, 0, 248, - 249, 250, 251, 252, 0, 0, 253, 254, 255, 256, - 257, 0, 258, 259, 260, 261, 262, 0, 0, 0, - 263, 264, 265, 266, 267, 0, 268, 269, 270, 0, - 271, 272, 273, 274, 275, 276, 0, 0, 277, 278, - 279, 0, 0, 0, 0, 0, 0, 0, 280, 281, - 282, 283, 284, 285, 286, 287, 288, 0, 289, 0, - 290, 291, 292, 293, 294, 295, 0, 296, 297, 298, - 299, 0, 0, 300, 301, 302, 303, 304, 0, 305, - 306, 307, 0, 308, 309, 310, 0, 311, 312, 313, - 314, 315, 316, 317, 318, 319, 0, 320, 0, 321, - 322, 323, 324, 0, 325, 0, 326, 0, 0, 0, - 327, 328, 329, 330, 0, 331, 332, 0, 333, 334, - 0, 335, 336, 337, 338, 1101, 0, 340, 341, 342, - 343, 0, 344, 345, 346, 347, 348, 349, 0, 350, - 0, 351, 352, 353, 354, 355, 356, 357, 0, 358, - 0, 359, 0, 0, 360, 0, 361, 362, 363, 364, - 365, 0, 0, 366, 367, 0, 368, 0, 0, 369, - 370, 371, 0, 0, 372, 373, 374, 375, 376, 377, - 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, - 388, 0, 389, 390, 391, 392, 393, 0, 394, 395, - 0, 396, 0, 397, 398, 399, 400, 401, 402, 0, - 403, 404, 0, 0, 405, 406, 407, 0, 0, 408, - 409, 0, 410, 0, 411, 412, 413, 414, 415, 416, - 417, 418, 419, 420, 0, 421, 422, 423, 424, 425, - 426, 427, 428, 0, 429, 430, 431, 432, 433, 434, - 435, 436, 437, 438, 439, 440, 441, 442, 0, 443, - 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, - 454, 0, 455, 456, 0, 457, 458, 459, 460, 461, - 462, 463, 464, 465, 466, 467, 468, 469, 0, 470, - 471, 472, 473, 474, 0, 475, 476, 477, 478, 479, - 0, 480, 481, 482, 483, 0, 484, 485, 486, 487, - 488, 489, 490, 491, 492, 493, 494, 495, 496, 0, - 497, 498, 0, 499, 0, 500, 501, 502, 503, 504, - 0, 505, 506, 0, 0, 507, 508, 509, 510, 511, - 0, 512, 513, 514, 515, 516, 517, 518, 0, 0, - 519, 520, 521, 522, 523, 0, 0, 524, 525, 526, - 527, 528, 529, 530, 0, 531, 0, 532, 533, 534, - 535, 0, 0, 536, 0, 0, 537, 538, 539, 540, - 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, - 551, 552, 553, 554, 555, 556, 223, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 224, 225, 226, 227, 228, 229, 230, 231, 0, - 233, 234, 235, 0, 0, 0, 0, 0, 0, 0, - 236, 237, 0, 238, 239, 240, 0, 241, 242, 243, - 244, 245, 0, 246, 247, 0, 248, 249, 250, 251, - 252, 0, 0, 253, 254, 255, 256, 257, 0, 258, - 259, 260, 261, 262, 0, 0, 0, 263, 264, 265, - 266, 267, 0, 268, 269, 270, 0, 271, 272, 273, - 274, 275, 276, 0, 0, 277, 278, 279, 0, 0, - 0, 0, 0, 0, 0, 280, 281, 282, 283, 284, - 285, 286, 287, 288, 0, 289, 0, 290, 291, 292, - 293, 294, 295, 0, 296, 297, 298, 299, 0, 0, - 300, 301, 302, 303, 304, 0, 305, 306, 307, 0, - 308, 309, 310, 0, 311, 312, 313, 314, 315, 316, - 317, 318, 319, 0, 320, 0, 321, 322, 323, 324, - 0, 325, 0, 326, 0, 0, 0, 327, 328, 329, - 330, 0, 331, 332, 0, 333, 334, 0, 335, 336, - 337, 338, 1104, 0, 340, 341, 342, 343, 0, 344, - 345, 346, 347, 348, 349, 0, 350, 0, 351, 352, - 353, 354, 355, 356, 357, 0, 358, 0, 359, 0, - 0, 360, 0, 361, 362, 363, 364, 365, 0, 0, - 366, 367, 0, 368, 0, 0, 369, 370, 371, 0, - 0, 372, 373, 374, 375, 376, 377, 378, 379, 380, - 381, 382, 383, 384, 385, 386, 387, 388, 0, 389, - 390, 391, 392, 393, 0, 394, 395, 0, 396, 0, - 397, 398, 399, 400, 401, 402, 0, 403, 404, 0, - 0, 405, 406, 407, 0, 0, 408, 409, 0, 410, - 0, 411, 412, 413, 414, 415, 416, 417, 418, 419, - 420, 0, 421, 422, 423, 424, 425, 426, 427, 428, - 0, 429, 430, 431, 432, 433, 434, 435, 436, 437, - 438, 439, 440, 441, 442, 0, 443, 444, 445, 446, - 447, 448, 449, 450, 451, 452, 453, 454, 0, 455, - 456, 0, 457, 458, 459, 460, 461, 462, 463, 464, - 465, 466, 467, 468, 469, 0, 470, 471, 472, 473, - 474, 0, 475, 476, 477, 478, 479, 0, 480, 481, - 482, 483, 0, 484, 485, 486, 487, 488, 489, 490, - 491, 492, 493, 494, 495, 496, 0, 497, 498, 0, - 499, 0, 500, 501, 502, 503, 504, 0, 505, 506, - 0, 0, 507, 508, 509, 510, 511, 0, 512, 513, - 514, 515, 516, 517, 518, 0, 0, 519, 520, 521, - 522, 523, 0, 0, 524, 525, 526, 527, 528, 529, - 530, 0, 531, 0, 532, 533, 534, 535, 0, 0, - 536, 0, 0, 537, 538, 539, 540, 541, 542, 543, - 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, - 554, 555, 556, 223, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 224, 225, - 226, 227, 228, 229, 230, 231, 0, 233, 234, 235, - 0, 0, 0, 0, 0, 0, 0, 236, 237, 0, - 238, 239, 240, 0, 241, 242, 243, 244, 245, 0, - 246, 247, 0, 248, 249, 250, 251, 252, 0, 0, - 253, 254, 255, 256, 257, 0, 258, 259, 260, 261, - 262, 0, 0, 0, 263, 264, 265, 266, 267, 0, - 268, 269, 270, 0, 271, 272, 273, 274, 275, 276, - 0, 0, 277, 278, 279, 0, 0, 0, 0, 0, - 0, 0, 280, 281, 282, 283, 284, 285, 286, 287, - 288, 0, 289, 0, 290, 291, 292, 293, 294, 295, - 0, 296, 297, 298, 299, 0, 0, 300, 301, 302, - 303, 304, 0, 305, 306, 307, 0, 308, 309, 310, - 0, 311, 312, 313, 314, 315, 316, 317, 318, 319, - 0, 320, 0, 321, 322, 323, 324, 0, 325, 0, - 326, 0, 0, 0, 327, 328, 329, 330, 0, 331, - 332, 0, 333, 334, 0, 335, 336, 337, 338, 1107, - 0, 340, 341, 342, 343, 0, 344, 345, 346, 347, - 348, 349, 0, 350, 0, 351, 352, 353, 354, 355, - 356, 357, 0, 358, 0, 359, 0, 0, 360, 0, - 361, 362, 363, 364, 365, 0, 0, 366, 367, 0, - 368, 0, 0, 369, 370, 371, 0, 0, 372, 373, - 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, - 384, 385, 386, 387, 388, 0, 389, 390, 391, 392, - 393, 0, 394, 395, 0, 396, 0, 397, 398, 399, - 400, 401, 402, 0, 403, 404, 0, 0, 405, 406, - 407, 0, 0, 408, 409, 0, 410, 0, 411, 412, - 413, 414, 415, 416, 417, 418, 419, 420, 0, 421, - 422, 423, 424, 425, 426, 427, 428, 0, 429, 430, - 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, - 441, 442, 0, 443, 444, 445, 446, 447, 448, 449, - 450, 451, 452, 453, 454, 0, 455, 456, 0, 457, - 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, - 468, 469, 0, 470, 471, 472, 473, 474, 0, 475, - 476, 477, 478, 479, 0, 480, 481, 482, 483, 0, - 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, - 494, 495, 496, 0, 497, 498, 0, 499, 0, 500, - 501, 502, 503, 504, 0, 505, 506, 0, 0, 507, - 508, 509, 510, 511, 0, 512, 513, 514, 515, 516, - 517, 518, 0, 0, 519, 520, 521, 522, 523, 0, - 0, 524, 525, 526, 527, 528, 529, 530, 0, 531, - 0, 532, 533, 534, 535, 0, 0, 536, 0, 0, - 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, - 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, - 223, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 224, 225, 226, 227, 228, - 229, 230, 231, 0, 233, 234, 235, 0, 0, 0, - 0, 0, 0, 0, 236, 237, 0, 238, 239, 240, - 0, 241, 242, 243, 244, 245, 0, 246, 247, 0, - 248, 249, 250, 251, 252, 0, 0, 745, 254, 255, - 256, 257, 0, 258, 259, 260, 261, 262, 0, 0, - 0, 263, 264, 265, 266, 267, 0, 268, 269, 270, - 0, 271, 272, 273, 274, 275, 276, 0, 0, 277, - 278, 279, 0, 0, 0, 0, 0, 0, 0, 280, - 281, 282, 283, 284, 285, 286, 287, 288, 0, 289, - 0, 290, 291, 292, 293, 294, 295, 0, 296, 297, - 298, 299, 0, 0, 300, 301, 302, 303, 304, 0, - 305, 306, 307, 0, 308, 309, 310, 0, 311, 312, - 313, 314, 315, 316, 317, 318, 319, 0, 320, 0, - 321, 322, 323, 324, 0, 325, 0, 326, 0, 0, - 0, 327, 328, 329, 330, 0, 331, 332, 0, 333, - 334, 0, 335, 336, 337, 338, 339, 0, 340, 341, - 342, 343, 0, 344, 345, 346, 347, 348, 349, 0, - 350, 0, 351, 352, 353, 354, 355, 356, 357, 0, - 358, 0, 359, 0, 0, 360, 0, 361, 362, 363, - 364, 365, 0, 0, 366, 367, 0, 368, 0, 0, - 369, 370, 371, 0, 0, 372, 373, 374, 375, 376, + 421, 1262, 423, 0, 424, 425, 426, 427, 0, 1265, + 429, 430, 431, 432, 433, 0, 434, 435, 0, 0, + 436, 437, 438, 0, 0, 439, 440, 441, 442, 443, + 444, 1268, 446, 447, 448, 449, 450, 451, 452, 453, + 454, 0, 455, 456, 1269, 458, 459, 460, 461, 462, + 0, 463, 464, 465, 466, 467, 468, 469, 470, 471, + 472, 473, 474, 475, 476, 477, 0, 478, 479, 480, + 481, 482, 483, 484, 485, 486, 487, 488, 489, 0, + 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, + 500, 501, 502, 503, 504, 505, 506, 507, 0, 508, + 509, 510, 511, 512, 1272, 513, 514, 515, 516, 517, + 518, 519, 520, 521, 522, 0, 523, 524, 525, 526, + 527, 528, 529, 530, 531, 532, 533, 534, 535, 1274, + 537, 0, 538, 539, 0, 540, 541, 542, 543, 544, + 545, 546, 0, 547, 548, 549, 0, 0, 550, 551, + 1277, 553, 1278, 0, 555, 556, 557, 558, 559, 560, + 561, 562, 0, 0, 563, 564, 565, 566, 567, 1281, + 0, 568, 569, 570, 571, 572, 573, 574, 0, 575, + 576, 577, 578, 579, 580, 0, 0, 581, 0, 0, + 582, 583, 584, 585, 586, 587, 588, 1283, 1284, 1285, + 1286, 593, 1287, 1288, 1289, 1290, 598, 599, 600, 601, + 873, 0, 0, 669, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 229, + 230, 231, 232, 233, 234, 235, 236, 0, 237, 238, + 239, 0, 0, 0, 0, 0, 0, 0, 240, 241, + 0, 242, 243, 244, 245, 246, 247, 248, 249, 250, + 251, 252, 253, 0, 254, 255, 256, 257, 258, 259, + 0, 0, 260, 261, 262, 263, 264, 0, 265, 266, + 267, 268, 269, 0, 270, 0, 271, 272, 273, 274, + 275, 276, 277, 278, 279, 0, 280, 281, 282, 283, + 284, 285, 0, 286, 287, 288, 289, 0, 0, 0, + 290, 0, 0, 0, 291, 292, 293, 294, 295, 296, + 297, 298, 299, 0, 300, 0, 301, 302, 303, 304, + 305, 306, 0, 307, 308, 309, 310, 0, 0, 311, + 312, 313, 314, 315, 0, 316, 317, 318, 0, 319, + 320, 321, 0, 322, 323, 324, 325, 326, 327, 328, + 329, 330, 331, 1927, 332, 0, 333, 334, 335, 336, + 0, 337, 0, 338, 339, 0, 340, 341, 342, 343, + 344, 0, 345, 346, 0, 347, 348, 349, 0, 350, + 351, 352, 353, 354, 355, 356, 357, 358, 359, 0, + 360, 361, 362, 363, 364, 365, 366, 0, 367, 368, + 369, 370, 371, 372, 373, 374, 375, 0, 376, 0, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, - 748, 388, 0, 389, 390, 391, 392, 393, 0, 394, - 395, 0, 396, 0, 397, 398, 399, 400, 401, 402, - 0, 403, 404, 0, 0, 405, 406, 407, 0, 0, - 408, 409, 0, 410, 0, 411, 412, 413, 414, 415, - 416, 417, 418, 419, 420, 0, 421, 422, 423, 424, - 425, 426, 427, 428, 0, 429, 430, 431, 432, 433, - 434, 435, 436, 437, 438, 439, 440, 441, 442, 0, - 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, - 453, 454, 0, 455, 456, 0, 749, 458, 459, 460, - 461, 462, 463, 750, 465, 466, 467, 468, 469, 0, - 470, 471, 472, 473, 1286, 0, 475, 476, 477, 478, - 479, 0, 480, 481, 482, 483, 0, 484, 485, 486, - 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, - 0, 497, 498, 0, 499, 0, 500, 501, 502, 503, - 504, 0, 752, 506, 0, 0, 753, 508, 509, 510, - 511, 0, 512, 513, 514, 515, 516, 517, 518, 0, - 0, 519, 520, 521, 522, 523, 0, 0, 524, 525, - 526, 527, 528, 529, 530, 0, 531, 0, 532, 533, - 534, 535, 0, 0, 536, 0, 0, 537, 538, 539, - 540, 541, 754, 543, 544, 545, 546, 547, 548, 549, - 550, 551, 552, 553, 554, 555, 556, 223, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 224, 225, 226, 227, 228, 229, 230, 231, - 0, 233, 234, 235, 0, 0, 0, 0, 0, 0, - 0, 236, 237, 0, 238, 239, 240, 0, 241, 242, - 243, 244, 245, 0, 246, 247, 0, 248, 249, 250, - 251, 252, 0, 0, 253, 254, 255, 256, 257, 0, - 258, 259, 260, 261, 262, 0, 0, 0, 263, 264, - 265, 266, 267, 0, 268, 269, 270, 0, 271, 272, - 273, 274, 275, 276, 0, 0, 277, 278, 279, 0, - 0, 0, 0, 0, 0, 0, 280, 281, 282, 283, - 284, 285, 286, 287, 288, 0, 289, 0, 290, 291, - 292, 293, 294, 295, 0, 296, 297, 298, 299, 0, - 0, 300, 301, 302, 303, 304, 0, 305, 306, 307, - 0, 308, 309, 310, 0, 311, 312, 313, 314, 315, - 316, 317, 318, 319, 0, 320, 0, 321, 322, 323, - 324, 0, 325, 0, 326, 0, 0, 0, 327, 328, - 329, 330, 0, 331, 332, 0, 333, 334, 0, 335, - 336, 337, 338, 1614, 0, 340, 341, 342, 343, 0, - 344, 345, 346, 347, 348, 349, 0, 350, 0, 351, - 352, 353, 354, 355, 356, 357, 0, 358, 0, 359, - 0, 0, 360, 0, 361, 362, 363, 364, 365, 0, - 0, 366, 367, 0, 368, 0, 0, 369, 370, 371, - 0, 0, 372, 373, 374, 375, 376, 377, 378, 379, - 380, 381, 382, 383, 384, 385, 386, 387, 388, 0, - 389, 390, 391, 392, 393, 0, 394, 395, 0, 396, - 0, 397, 398, 399, 400, 401, 402, 0, 403, 404, - 0, 0, 405, 406, 407, 0, 0, 408, 409, 0, - 410, 0, 411, 412, 413, 414, 415, 416, 417, 418, - 419, 420, 0, 421, 422, 423, 424, 425, 426, 427, - 428, 0, 429, 430, 431, 432, 433, 434, 435, 436, - 437, 438, 439, 440, 441, 442, 0, 443, 444, 445, - 446, 447, 448, 449, 450, 451, 452, 453, 454, 0, - 455, 456, 0, 457, 458, 459, 460, 461, 462, 463, - 464, 465, 466, 467, 468, 469, 0, 470, 471, 472, - 473, 474, 0, 475, 476, 477, 478, 479, 0, 480, - 481, 482, 483, 0, 484, 485, 486, 487, 488, 489, - 490, 491, 492, 493, 494, 495, 496, 0, 497, 498, - 0, 499, 0, 500, 501, 502, 503, 504, 0, 505, - 506, 0, 0, 507, 508, 509, 510, 511, 0, 512, - 513, 514, 515, 516, 517, 518, 0, 0, 519, 520, - 521, 522, 523, 0, 0, 524, 525, 526, 527, 528, - 529, 530, 0, 531, 0, 532, 533, 534, 535, 0, - 0, 536, 0, 0, 537, 538, 539, 540, 541, 542, - 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, - 553, 554, 555, 556, 223, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, - 225, 226, 227, 228, 229, 230, 231, 0, 233, 234, - 235, 0, 0, 0, 0, 0, 0, 0, 236, 237, - 0, 238, 239, 240, 0, 241, 242, 243, 244, 245, - 0, 246, 247, 0, 248, 249, 250, 251, 252, 0, - 0, 253, 254, 255, 256, 257, 0, 258, 259, 260, - 261, 262, 0, 0, 0, 263, 264, 265, 266, 267, - 0, 268, 269, 270, 0, 271, 272, 273, 274, 275, - 276, 0, 0, 277, 278, 279, 0, 0, 0, 0, - 0, 0, 0, 280, 281, 282, 283, 284, 285, 286, - 287, 288, 0, 289, 0, 290, 291, 292, 293, 294, - 295, 0, 296, 297, 298, 299, 0, 0, 300, 301, - 302, 303, 304, 0, 305, 306, 307, 0, 308, 309, - 310, 0, 311, 312, 313, 314, 315, 316, 317, 318, - 319, 0, 320, 0, 321, 322, 323, 324, 0, 325, - 0, 326, 0, 0, 0, 327, 328, 329, 330, 0, - 331, 332, 0, 333, 334, 0, 335, 336, 337, 338, - 1652, 0, 340, 341, 342, 343, 0, 344, 345, 346, - 347, 348, 349, 0, 350, 0, 351, 352, 353, 354, - 355, 356, 357, 0, 358, 0, 359, 0, 0, 360, - 0, 361, 362, 363, 364, 365, 0, 0, 366, 367, - 0, 368, 0, 0, 369, 370, 371, 0, 0, 372, - 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, - 383, 384, 385, 386, 387, 388, 0, 389, 390, 391, - 392, 393, 0, 394, 395, 0, 396, 0, 397, 398, - 399, 400, 401, 402, 0, 403, 404, 0, 0, 405, - 406, 407, 0, 0, 408, 409, 0, 410, 0, 411, - 412, 413, 414, 415, 416, 417, 418, 419, 420, 0, - 421, 422, 423, 424, 425, 426, 427, 428, 0, 429, - 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, - 440, 441, 442, 0, 443, 444, 445, 446, 447, 448, - 449, 450, 451, 452, 453, 454, 0, 455, 456, 0, - 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, - 467, 468, 469, 0, 470, 471, 472, 473, 474, 0, - 475, 476, 477, 478, 479, 0, 480, 481, 482, 483, - 0, 484, 485, 486, 487, 488, 489, 490, 491, 492, - 493, 494, 495, 496, 0, 497, 498, 0, 499, 0, - 500, 501, 502, 503, 504, 0, 505, 506, 0, 0, - 507, 508, 509, 510, 511, 0, 512, 513, 514, 515, - 516, 517, 518, 0, 0, 519, 520, 521, 522, 523, - 0, 0, 524, 525, 526, 527, 528, 529, 530, 0, - 531, 0, 532, 533, 534, 535, 0, 0, 536, 0, - 0, 537, 538, 539, 540, 541, 542, 543, 544, 545, - 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, - 556, 223, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 224, 225, 226, 227, - 228, 229, 230, 231, 0, 233, 234, 235, 0, 0, - 0, 0, 0, 0, 0, 236, 237, 0, 238, 239, - 240, 0, 241, 242, 243, 244, 245, 0, 246, 247, - 0, 248, 249, 250, 251, 252, 0, 0, 253, 254, - 255, 256, 257, 0, 258, 259, 260, 261, 262, 0, - 0, 0, 263, 264, 265, 266, 267, 0, 268, 269, - 270, 0, 271, 272, 273, 274, 275, 276, 0, 0, - 277, 278, 279, 0, 0, 0, 0, 0, 0, 0, - 280, 281, 282, 283, 284, 285, 286, 287, 288, 0, - 289, 0, 290, 291, 292, 293, 294, 295, 0, 296, - 297, 298, 299, 0, 0, 300, 301, 302, 303, 304, - 0, 305, 306, 307, 0, 308, 309, 310, 0, 311, - 312, 313, 314, 315, 316, 317, 318, 319, 0, 320, - 0, 321, 322, 323, 324, 0, 325, 0, 326, 0, - 0, 0, 327, 328, 329, 330, 0, 331, 332, 0, - 333, 334, 0, 335, 336, 337, 338, 1654, 0, 340, - 341, 342, 343, 0, 344, 345, 346, 347, 348, 349, - 0, 350, 0, 351, 352, 353, 354, 355, 356, 357, - 0, 358, 0, 359, 0, 0, 360, 0, 361, 362, - 363, 364, 365, 0, 0, 366, 367, 0, 368, 0, - 0, 369, 370, 371, 0, 0, 372, 373, 374, 375, - 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, - 386, 387, 388, 0, 389, 390, 391, 392, 393, 0, - 394, 395, 0, 396, 0, 397, 398, 399, 400, 401, - 402, 0, 403, 404, 0, 0, 405, 406, 407, 0, - 0, 408, 409, 0, 410, 0, 411, 412, 413, 414, - 415, 416, 417, 418, 419, 420, 0, 421, 422, 423, - 424, 425, 426, 427, 428, 0, 429, 430, 431, 432, - 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, - 0, 443, 444, 445, 446, 447, 448, 449, 450, 451, - 452, 453, 454, 0, 455, 456, 0, 457, 458, 459, - 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, - 0, 470, 471, 472, 473, 474, 0, 475, 476, 477, - 478, 479, 0, 480, 481, 482, 483, 0, 484, 485, - 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, - 496, 0, 497, 498, 0, 499, 0, 500, 501, 502, - 503, 504, 0, 505, 506, 0, 0, 507, 508, 509, - 510, 511, 0, 512, 513, 514, 515, 516, 517, 518, - 0, 0, 519, 520, 521, 522, 523, 0, 0, 524, - 525, 526, 527, 528, 529, 530, 0, 531, 0, 532, - 533, 534, 535, 0, 0, 536, 0, 0, 537, 538, - 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, - 549, 550, 551, 552, 553, 554, 555, 556, 223, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 224, 225, 226, 227, 228, 229, 230, - 231, 0, 233, 234, 235, 0, 0, 0, 0, 0, - 0, 0, 236, 237, 0, 238, 239, 240, 0, 241, - 242, 243, 244, 245, 0, 246, 247, 0, 248, 249, - 250, 251, 252, 0, 0, 253, 254, 255, 256, 257, - 0, 258, 259, 260, 261, 262, 0, 0, 0, 263, - 264, 265, 266, 267, 0, 268, 269, 270, 0, 271, - 272, 273, 274, 275, 276, 0, 0, 277, 278, 279, - 0, 0, 0, 0, 0, 0, 0, 280, 281, 282, - 283, 284, 285, 286, 287, 288, 0, 289, 0, 290, - 291, 292, 293, 294, 295, 0, 296, 297, 298, 299, - 0, 0, 300, 301, 302, 303, 304, 0, 305, 306, - 307, 0, 308, 309, 310, 0, 311, 312, 313, 314, - 315, 316, 317, 318, 319, 0, 320, 0, 321, 322, - 323, 324, 0, 325, 0, 326, 0, 0, 0, 327, - 328, 329, 330, 0, 331, 332, 0, 333, 334, 0, - 335, 336, 337, 338, 1724, 0, 340, 341, 342, 343, - 0, 344, 345, 346, 347, 348, 349, 0, 350, 0, - 351, 352, 353, 354, 355, 356, 357, 0, 358, 0, - 359, 0, 0, 360, 0, 361, 362, 363, 364, 365, - 0, 0, 366, 367, 0, 368, 0, 0, 369, 370, - 371, 0, 0, 372, 373, 374, 375, 376, 377, 378, - 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, - 0, 389, 390, 391, 392, 393, 0, 394, 395, 0, - 396, 0, 397, 398, 399, 400, 401, 402, 0, 403, - 404, 0, 0, 405, 406, 407, 0, 0, 408, 409, - 0, 410, 0, 411, 412, 413, 414, 415, 416, 417, - 418, 419, 420, 0, 421, 422, 423, 424, 425, 426, - 427, 428, 0, 429, 430, 431, 432, 433, 434, 435, - 436, 437, 438, 439, 440, 441, 442, 0, 443, 444, + 0, 0, 387, 388, 389, 390, 391, 0, 392, 393, + 394, 0, 0, 395, 396, 397, 398, 399, 400, 401, + 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, + 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, + 422, 423, 0, 424, 425, 426, 427, 0, 428, 429, + 430, 431, 432, 433, 0, 434, 435, 1928, 0, 436, + 437, 438, 0, 0, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, - 0, 455, 456, 0, 457, 458, 459, 460, 461, 462, - 463, 464, 465, 466, 467, 468, 469, 0, 470, 471, - 472, 473, 474, 0, 475, 476, 477, 478, 479, 0, - 480, 481, 482, 483, 0, 484, 485, 486, 487, 488, - 489, 490, 491, 492, 493, 494, 495, 496, 0, 497, - 498, 0, 499, 0, 500, 501, 502, 503, 504, 0, - 505, 506, 0, 0, 507, 508, 509, 510, 511, 0, - 512, 513, 514, 515, 516, 517, 518, 0, 0, 519, - 520, 521, 522, 523, 0, 0, 524, 525, 526, 527, - 528, 529, 530, 0, 531, 0, 532, 533, 534, 535, - 0, 0, 536, 0, 0, 537, 538, 539, 540, 541, - 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, - 552, 553, 554, 555, 556, 223, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 224, 225, 226, 227, 228, 229, 230, 231, 0, 233, - 234, 235, 0, 0, 0, 0, 0, 0, 0, 236, - 237, 0, 238, 239, 240, 0, 241, 242, 243, 244, - 245, 0, 246, 247, 0, 248, 249, 250, 251, 252, - 0, 0, 253, 254, 255, 256, 257, 0, 258, 259, - 260, 261, 262, 0, 0, 0, 263, 264, 265, 266, - 267, 0, 268, 269, 270, 0, 271, 272, 273, 274, - 275, 276, 0, 0, 277, 278, 279, 0, 0, 0, - 0, 0, 0, 0, 280, 281, 282, 283, 284, 285, - 286, 287, 288, 0, 289, 0, 290, 291, 292, 293, - 294, 295, 0, 296, 297, 298, 299, 0, 0, 300, - 301, 302, 303, 304, 0, 305, 306, 307, 0, 308, - 309, 310, 0, 311, 312, 313, 314, 315, 316, 317, - 318, 319, 0, 320, 0, 321, 322, 323, 324, 0, - 325, 0, 326, 0, 0, 0, 327, 328, 329, 330, - 0, 331, 332, 0, 333, 334, 0, 335, 336, 337, - 338, 1726, 0, 340, 341, 342, 343, 0, 344, 345, - 346, 347, 348, 349, 0, 350, 0, 351, 352, 353, - 354, 355, 356, 357, 0, 358, 0, 359, 0, 0, - 360, 0, 361, 362, 363, 364, 365, 0, 0, 366, - 367, 0, 368, 0, 0, 369, 370, 371, 0, 0, - 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, - 382, 383, 384, 385, 386, 387, 388, 0, 389, 390, - 391, 392, 393, 0, 394, 395, 0, 396, 0, 397, - 398, 399, 400, 401, 402, 0, 403, 404, 0, 0, - 405, 406, 407, 0, 0, 408, 409, 0, 410, 0, - 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, - 0, 421, 422, 423, 424, 425, 426, 427, 428, 0, - 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, - 439, 440, 441, 442, 0, 443, 444, 445, 446, 447, + 0, 455, 456, 457, 458, 459, 460, 461, 462, 0, + 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, + 473, 474, 475, 476, 477, 0, 478, 479, 480, 481, + 482, 483, 484, 485, 486, 487, 488, 489, 0, 490, + 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, + 501, 502, 503, 504, 505, 506, 507, 0, 508, 509, + 510, 511, 512, 0, 513, 514, 515, 516, 517, 518, + 519, 520, 521, 522, 0, 523, 524, 525, 526, 527, + 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, + 0, 538, 539, 0, 540, 541, 542, 543, 544, 545, + 546, 0, 547, 548, 549, 0, 0, 550, 551, 552, + 553, 554, 1929, 555, 556, 557, 558, 559, 560, 561, + 562, 0, 0, 563, 564, 565, 566, 567, 0, 0, + 568, 569, 570, 571, 572, 573, 574, 0, 575, 576, + 577, 578, 579, 580, 0, 0, 581, 0, 0, 582, + 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, + 593, 594, 595, 596, 597, 598, 599, 600, 601, 873, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 229, 230, + 231, 232, 233, 234, 235, 236, 912, 237, 238, 239, + 0, 0, 0, 0, 0, 0, 0, 240, 241, 0, + 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, + 252, 253, 0, 254, 255, 256, 257, 258, 259, 0, + 0, 260, 261, 262, 263, 264, 0, 265, 266, 267, + 268, 269, 0, 270, 0, 271, 272, 273, 274, 275, + 276, 277, 278, 279, 0, 280, 281, 282, 283, 284, + 285, 0, 286, 287, 288, 289, 0, 0, 0, 290, + 0, 0, 874, 291, 292, 293, 294, 295, 296, 297, + 298, 299, 0, 300, 0, 301, 302, 303, 304, 305, + 306, 0, 307, 308, 309, 310, 0, 0, 311, 312, + 313, 314, 315, 0, 316, 317, 318, 0, 319, 320, + 321, 0, 322, 323, 324, 325, 326, 327, 328, 329, + 330, 331, 0, 332, 0, 333, 334, 335, 336, 0, + 337, 0, 338, 339, 0, 340, 341, 342, 343, 344, + 0, 345, 346, 0, 347, 348, 349, 0, 350, 351, + 352, 353, 354, 355, 356, 357, 358, 359, 0, 360, + 361, 362, 363, 364, 365, 366, 0, 367, 368, 369, + 370, 371, 372, 373, 374, 375, 0, 376, 0, 377, + 378, 379, 380, 381, 382, 383, 384, 385, 386, 0, + 0, 387, 388, 389, 390, 391, 0, 392, 393, 394, + 0, 0, 395, 396, 397, 398, 399, 400, 401, 402, + 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, + 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, + 423, 0, 424, 425, 426, 427, 0, 428, 429, 430, + 431, 432, 433, 0, 434, 435, 0, 0, 436, 437, + 438, 0, 0, 439, 440, 441, 442, 443, 444, 445, + 446, 447, 448, 449, 450, 451, 452, 453, 454, 0, + 455, 456, 457, 458, 459, 460, 461, 462, 0, 463, + 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, + 474, 475, 476, 477, 0, 478, 479, 480, 481, 482, + 483, 484, 485, 486, 487, 488, 489, 0, 490, 491, + 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, + 502, 503, 504, 505, 506, 507, 0, 508, 509, 510, + 511, 512, 875, 513, 514, 515, 516, 517, 518, 519, + 520, 521, 522, 0, 523, 524, 525, 526, 527, 528, + 529, 530, 531, 532, 533, 534, 535, 536, 537, 0, + 538, 539, 0, 540, 541, 542, 543, 544, 545, 546, + 0, 547, 548, 549, 0, 0, 550, 551, 552, 553, + 554, 0, 555, 556, 557, 558, 559, 560, 561, 562, + 0, 0, 563, 564, 565, 566, 567, 0, 0, 568, + 569, 570, 571, 572, 573, 574, 0, 575, 576, 577, + 578, 579, 580, 0, 0, 581, 0, 0, 582, 583, + 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, + 594, 595, 596, 597, 598, 599, 600, 601, 873, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 229, 230, 231, + 232, 233, 234, 235, 236, 933, 237, 238, 239, 0, + 0, 0, 0, 0, 0, 0, 240, 241, 0, 242, + 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, + 253, 0, 254, 255, 256, 257, 258, 259, 0, 0, + 260, 261, 262, 263, 264, 0, 265, 266, 267, 268, + 269, 0, 270, 0, 271, 272, 273, 274, 275, 276, + 277, 278, 279, 0, 280, 281, 282, 283, 284, 285, + 0, 286, 287, 288, 289, 0, 0, 0, 290, 0, + 0, 874, 291, 292, 293, 294, 295, 296, 297, 298, + 299, 0, 300, 0, 301, 302, 303, 304, 305, 306, + 0, 307, 308, 309, 310, 0, 0, 311, 312, 313, + 314, 315, 0, 316, 317, 318, 0, 319, 320, 321, + 0, 322, 323, 324, 325, 326, 327, 328, 329, 330, + 331, 0, 332, 0, 333, 334, 335, 336, 0, 337, + 0, 338, 339, 0, 340, 341, 342, 343, 344, 0, + 345, 346, 0, 347, 348, 349, 0, 350, 351, 352, + 353, 354, 355, 356, 357, 358, 359, 0, 360, 361, + 362, 363, 364, 365, 366, 0, 367, 368, 369, 370, + 371, 372, 373, 374, 375, 0, 376, 0, 377, 378, + 379, 380, 381, 382, 383, 384, 385, 386, 0, 0, + 387, 388, 389, 390, 391, 0, 392, 393, 394, 0, + 0, 395, 396, 397, 398, 934, 400, 401, 402, 403, + 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, + 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, + 0, 424, 425, 426, 427, 0, 428, 429, 430, 431, + 432, 433, 0, 434, 435, 0, 0, 436, 437, 438, + 0, 0, 439, 440, 441, 442, 443, 444, 445, 446, + 447, 448, 449, 450, 451, 452, 453, 454, 0, 455, + 456, 457, 458, 459, 460, 461, 462, 0, 463, 464, + 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, + 475, 476, 477, 0, 478, 479, 480, 481, 482, 483, + 484, 485, 486, 487, 488, 489, 0, 490, 491, 492, + 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, + 503, 504, 505, 506, 507, 0, 508, 509, 510, 511, + 512, 875, 513, 514, 515, 516, 517, 518, 519, 520, + 521, 522, 0, 523, 524, 525, 526, 527, 528, 529, + 530, 531, 532, 533, 534, 535, 536, 537, 0, 538, + 539, 0, 540, 541, 542, 543, 544, 545, 546, 0, + 547, 548, 549, 0, 0, 550, 551, 552, 553, 554, + 0, 555, 556, 557, 558, 559, 560, 561, 562, 0, + 0, 563, 564, 565, 566, 567, 0, 0, 568, 569, + 570, 571, 572, 573, 574, 0, 575, 576, 577, 578, + 579, 580, 0, 0, 581, 0, 0, 582, 583, 584, + 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, + 595, 596, 597, 598, 599, 600, 601, 873, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 229, 230, 231, 232, + 233, 234, 235, 236, 0, 237, 238, 239, 0, 0, + 0, 0, 0, 0, 0, 240, 241, 0, 242, 243, + 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, + 0, 254, 255, 256, 257, 258, 259, 0, 0, 260, + 261, 262, 263, 264, 0, 265, 266, 267, 268, 269, + 0, 270, 0, 271, 272, 273, 274, 275, 276, 277, + 278, 279, 0, 280, 281, 282, 283, 284, 285, 0, + 286, 287, 288, 289, 0, 0, 0, 290, 0, 0, + 874, 291, 292, 293, 294, 295, 296, 297, 298, 299, + 0, 300, 0, 301, 302, 303, 304, 305, 306, 0, + 307, 308, 309, 310, 0, 0, 311, 312, 313, 314, + 315, 0, 316, 317, 318, 0, 319, 320, 321, 0, + 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, + 0, 332, 0, 333, 334, 335, 336, 0, 337, 0, + 338, 339, 0, 340, 341, 342, 343, 344, 0, 345, + 346, 0, 347, 348, 349, 0, 350, 351, 352, 353, + 354, 355, 356, 357, 358, 359, 0, 360, 361, 362, + 363, 364, 365, 366, 0, 367, 368, 369, 370, 371, + 372, 373, 374, 375, 0, 376, 0, 377, 378, 379, + 380, 381, 382, 383, 384, 385, 386, 0, 0, 387, + 388, 389, 390, 391, 0, 392, 393, 394, 0, 0, + 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, + 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, + 415, 416, 417, 418, 419, 420, 421, 422, 423, 0, + 424, 425, 426, 427, 0, 428, 429, 430, 431, 432, + 433, 0, 434, 435, 0, 0, 436, 437, 438, 0, + 0, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 0, 455, 456, - 0, 457, 458, 459, 460, 461, 462, 463, 464, 465, - 466, 467, 468, 469, 0, 470, 471, 472, 473, 474, - 0, 475, 476, 477, 478, 479, 0, 480, 481, 482, - 483, 0, 484, 485, 486, 487, 488, 489, 490, 491, - 492, 493, 494, 495, 496, 0, 497, 498, 0, 499, - 0, 500, 501, 502, 503, 504, 0, 505, 506, 0, - 0, 507, 508, 509, 510, 511, 0, 512, 513, 514, - 515, 516, 517, 518, 0, 0, 519, 520, 521, 522, - 523, 0, 0, 524, 525, 526, 527, 528, 529, 530, - 0, 531, 0, 532, 533, 534, 535, 0, 0, 536, - 0, 0, 537, 538, 539, 540, 541, 542, 543, 544, - 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, - 555, 556, 223, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 224, 225, 226, - 227, 228, 229, 230, 231, 0, 233, 234, 235, 0, - 0, 0, 0, 0, 0, 0, 236, 237, 0, 238, - 239, 240, 0, 241, 242, 243, 244, 245, 0, 246, - 247, 0, 248, 249, 250, 251, 252, 0, 0, 253, - 254, 255, 256, 257, 0, 258, 259, 260, 261, 262, - 0, 0, 0, 263, 264, 265, 266, 267, 0, 268, - 269, 270, 0, 271, 272, 273, 274, 275, 276, 0, - 0, 277, 278, 279, 0, 0, 0, 0, 0, 0, - 0, 280, 281, 282, 283, 284, 285, 286, 287, 288, - 0, 289, 0, 290, 291, 292, 293, 294, 295, 0, - 296, 297, 298, 299, 0, 0, 300, 301, 302, 303, - 304, 0, 305, 306, 307, 0, 308, 309, 310, 0, - 311, 312, 313, 314, 315, 316, 317, 318, 319, 0, - 320, 0, 321, 322, 323, 324, 0, 325, 0, 326, - 0, 0, 0, 327, 328, 329, 330, 0, 331, 332, - 0, 333, 334, 0, 335, 336, 337, 338, 1728, 0, - 340, 341, 342, 343, 0, 344, 345, 346, 347, 348, - 349, 0, 350, 0, 351, 352, 353, 354, 355, 356, - 357, 0, 358, 0, 359, 0, 0, 360, 0, 361, - 362, 363, 364, 365, 0, 0, 366, 367, 0, 368, - 0, 0, 369, 370, 371, 0, 0, 372, 373, 374, - 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, - 385, 386, 387, 388, 0, 389, 390, 391, 392, 393, - 0, 394, 395, 0, 396, 0, 397, 398, 399, 400, - 401, 402, 0, 403, 404, 0, 0, 405, 406, 407, - 0, 0, 408, 409, 0, 410, 0, 411, 412, 413, - 414, 415, 416, 417, 418, 419, 420, 0, 421, 422, - 423, 424, 425, 426, 427, 428, 0, 429, 430, 431, - 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, - 442, 0, 443, 444, 445, 446, 447, 448, 449, 450, - 451, 452, 453, 454, 0, 455, 456, 0, 457, 458, - 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, - 469, 0, 470, 471, 472, 473, 474, 0, 475, 476, - 477, 478, 479, 0, 480, 481, 482, 483, 0, 484, - 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, - 495, 496, 0, 497, 498, 0, 499, 0, 500, 501, - 502, 503, 504, 0, 505, 506, 0, 0, 507, 508, - 509, 510, 511, 0, 512, 513, 514, 515, 516, 517, - 518, 0, 0, 519, 520, 521, 522, 523, 0, 0, - 524, 525, 526, 527, 528, 529, 530, 0, 531, 0, - 532, 533, 534, 535, 0, 0, 536, 0, 0, 537, - 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, - 548, 549, 550, 551, 552, 553, 554, 555, 556, 223, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 224, 225, 226, 227, 228, 229, - 230, 231, 0, 233, 234, 235, 0, 0, 0, 0, - 0, 0, 0, 236, 237, 0, 238, 239, 240, 0, - 241, 242, 243, 244, 245, 0, 246, 247, 0, 248, - 249, 250, 251, 252, 0, 0, 253, 254, 255, 256, - 257, 0, 258, 259, 260, 261, 262, 0, 0, 0, - 263, 264, 265, 266, 267, 0, 268, 269, 270, 0, - 271, 272, 273, 274, 275, 276, 0, 0, 277, 278, - 279, 0, 0, 0, 0, 0, 0, 0, 280, 281, - 282, 283, 284, 285, 286, 287, 288, 0, 289, 0, - 290, 291, 292, 293, 294, 295, 0, 296, 297, 298, - 299, 0, 0, 300, 301, 302, 303, 304, 0, 305, - 306, 307, 0, 308, 309, 310, 0, 311, 312, 313, - 314, 315, 316, 317, 318, 319, 0, 320, 0, 321, - 322, 323, 324, 0, 325, 0, 326, 0, 0, 0, - 327, 328, 329, 330, 0, 331, 332, 0, 333, 334, - 0, 335, 336, 337, 338, 339, 0, 340, 341, 342, - 343, 0, 344, 345, 346, 347, 348, 349, 0, 350, - 0, 351, 352, 353, 354, 355, 356, 357, 0, 358, - 0, 359, 0, 0, 360, 0, 361, 362, 363, 364, - 365, 0, 0, 366, 367, 0, 368, 0, 0, 369, - 370, 371, 0, 0, 372, 373, 374, 375, 376, 377, - 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, - 388, 0, 389, 390, 391, 392, 393, 0, 394, 395, - 0, 396, 0, 397, 398, 399, 400, 401, 402, 0, - 403, 404, 0, 0, 405, 406, 407, 0, 0, 408, - 409, 0, 410, 0, 411, 412, 413, 414, 415, 416, - 417, 418, 419, 420, 0, 421, 422, 423, 424, 425, - 426, 427, 428, 0, 429, 430, 431, 432, 433, 434, - 435, 436, 437, 438, 439, 440, 441, 442, 0, 443, + 457, 458, 459, 460, 461, 462, 0, 463, 464, 465, + 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, + 476, 477, 0, 478, 479, 480, 481, 482, 483, 484, + 485, 486, 487, 488, 489, 0, 490, 491, 492, 493, + 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, + 504, 505, 506, 507, 0, 508, 509, 510, 511, 512, + 875, 513, 514, 515, 516, 517, 518, 519, 520, 521, + 522, 0, 523, 524, 525, 526, 527, 528, 529, 530, + 531, 532, 533, 534, 535, 536, 537, 0, 538, 539, + 0, 540, 541, 542, 543, 544, 545, 546, 0, 547, + 548, 549, 0, 0, 550, 551, 552, 553, 554, 0, + 555, 556, 557, 558, 559, 560, 561, 562, 0, 0, + 563, 564, 565, 566, 567, 2459, 0, 568, 569, 570, + 571, 572, 573, 574, 0, 575, 576, 577, 578, 579, + 580, 0, 0, 581, 0, 0, 582, 583, 584, 585, + 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, + 596, 597, 598, 599, 600, 601, 873, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 229, 230, 231, 232, 233, + 234, 235, 236, 0, 237, 238, 239, 0, 0, 0, + 0, 0, 0, 0, 240, 241, 0, 242, 243, 244, + 245, 246, 247, 248, 249, 250, 251, 252, 253, 0, + 254, 255, 256, 257, 258, 259, 0, 0, 260, 261, + 262, 263, 264, 0, 265, 266, 267, 268, 269, 0, + 270, 0, 271, 272, 273, 274, 275, 276, 277, 278, + 279, 0, 280, 281, 282, 283, 284, 285, 0, 286, + 287, 288, 289, 0, 0, 0, 290, 0, 0, 874, + 291, 292, 293, 294, 295, 296, 297, 298, 299, 0, + 300, 0, 301, 302, 303, 304, 305, 306, 0, 307, + 308, 309, 310, 0, 0, 311, 312, 313, 314, 315, + 0, 316, 317, 318, 0, 319, 320, 321, 0, 322, + 323, 324, 325, 326, 327, 328, 329, 330, 331, 0, + 332, 0, 333, 334, 335, 336, 0, 337, 0, 338, + 339, 0, 340, 341, 342, 343, 344, 0, 345, 346, + 3470, 347, 348, 349, 0, 350, 351, 352, 353, 354, + 355, 356, 357, 358, 359, 0, 360, 361, 362, 363, + 364, 365, 366, 0, 367, 368, 369, 370, 371, 372, + 373, 374, 375, 0, 376, 0, 377, 378, 379, 380, + 381, 382, 383, 384, 385, 386, 0, 0, 387, 388, + 389, 390, 391, 0, 392, 393, 394, 0, 0, 395, + 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, + 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, + 416, 417, 418, 419, 420, 421, 422, 423, 0, 424, + 425, 426, 427, 0, 428, 429, 430, 431, 432, 433, + 0, 434, 435, 0, 0, 436, 437, 438, 0, 0, + 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, + 449, 450, 451, 452, 453, 454, 0, 455, 456, 457, + 458, 459, 460, 461, 462, 0, 463, 464, 465, 466, + 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, + 477, 0, 478, 479, 480, 481, 482, 483, 484, 485, + 486, 487, 488, 489, 0, 490, 491, 492, 493, 494, + 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, + 505, 506, 507, 0, 508, 509, 510, 511, 512, 875, + 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, + 0, 523, 524, 525, 526, 527, 528, 529, 530, 531, + 532, 533, 534, 535, 536, 537, 0, 538, 539, 0, + 540, 541, 542, 543, 544, 545, 546, 0, 547, 548, + 549, 0, 0, 550, 551, 552, 553, 554, 0, 555, + 556, 557, 558, 559, 560, 561, 562, 0, 0, 563, + 564, 565, 566, 567, 0, 0, 568, 569, 570, 571, + 572, 573, 574, 0, 575, 576, 577, 578, 579, 580, + 0, 0, 581, 0, 0, 582, 583, 584, 585, 586, + 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, + 597, 598, 599, 600, 601, 873, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 229, 230, 231, 232, 233, 234, + 235, 236, 0, 237, 238, 239, 0, 0, 0, 0, + 0, 0, 0, 240, 241, 0, 242, 243, 244, 245, + 246, 247, 248, 249, 250, 251, 252, 253, 0, 254, + 255, 256, 257, 258, 259, 0, 0, 260, 261, 262, + 263, 264, 0, 265, 266, 267, 268, 269, 0, 270, + 0, 271, 272, 273, 274, 275, 276, 277, 278, 279, + 0, 280, 281, 282, 283, 284, 285, 0, 286, 287, + 288, 289, 0, 0, 0, 290, 0, 0, 874, 291, + 292, 293, 294, 295, 296, 297, 298, 299, 0, 300, + 0, 301, 302, 303, 304, 305, 306, 0, 307, 308, + 309, 310, 0, 0, 311, 312, 313, 314, 315, 0, + 316, 317, 318, 0, 319, 320, 321, 0, 322, 323, + 324, 325, 326, 327, 328, 329, 330, 331, 0, 332, + 0, 333, 334, 335, 336, 0, 337, 0, 338, 339, + 0, 340, 341, 342, 343, 344, 0, 345, 346, 0, + 347, 348, 349, 0, 350, 351, 352, 353, 354, 355, + 356, 357, 358, 359, 0, 360, 361, 362, 363, 364, + 365, 366, 0, 367, 368, 369, 370, 371, 372, 373, + 374, 375, 0, 376, 0, 377, 378, 379, 380, 381, + 382, 383, 384, 385, 386, 0, 0, 387, 388, 389, + 390, 391, 0, 392, 393, 394, 0, 0, 395, 396, + 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, + 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, + 417, 418, 419, 420, 421, 422, 423, 0, 424, 425, + 426, 427, 0, 428, 429, 430, 431, 432, 433, 0, + 434, 435, 0, 0, 436, 437, 438, 0, 0, 439, + 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, + 450, 451, 452, 453, 454, 0, 455, 456, 457, 458, + 459, 460, 461, 462, 0, 463, 464, 465, 466, 467, + 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, + 0, 478, 479, 480, 481, 482, 483, 484, 485, 486, + 487, 488, 489, 0, 490, 491, 492, 493, 494, 495, + 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, + 506, 507, 0, 508, 509, 510, 511, 512, 875, 513, + 514, 515, 516, 517, 518, 519, 520, 521, 522, 0, + 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, + 533, 534, 535, 536, 537, 0, 538, 539, 0, 540, + 541, 542, 543, 544, 545, 546, 0, 547, 548, 549, + 0, 0, 550, 551, 552, 553, 554, 0, 555, 556, + 557, 558, 559, 560, 561, 562, 0, 0, 563, 564, + 565, 566, 567, 0, 0, 568, 569, 570, 571, 572, + 573, 574, 0, 575, 576, 577, 578, 579, 580, 0, + 0, 581, 0, 0, 582, 583, 584, 585, 586, 587, + 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, + 598, 599, 600, 601, 873, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 229, 230, 231, 232, 233, 234, 235, + 236, 0, 237, 238, 239, 0, 0, 0, 0, 0, + 0, 0, 240, 241, 0, 242, 243, 244, 245, 246, + 247, 248, 249, 250, 251, 252, 253, 0, 254, 255, + 256, 257, 258, 259, 0, 0, 260, 261, 262, 263, + 264, 0, 265, 266, 267, 268, 269, 0, 270, 0, + 271, 272, 273, 274, 275, 276, 277, 278, 279, 0, + 280, 281, 282, 283, 284, 285, 0, 286, 287, 288, + 289, 0, 0, 0, 290, 0, 0, 874, 291, 292, + 293, 294, 295, 296, 297, 298, 299, 0, 300, 0, + 301, 302, 303, 304, 305, 306, 0, 307, 308, 309, + 310, 0, 0, 311, 312, 313, 314, 315, 0, 316, + 317, 318, 0, 319, 320, 321, 0, 322, 323, 324, + 325, 326, 327, 328, 329, 330, 331, 0, 332, 0, + 333, 334, 335, 336, 0, 337, 0, 338, 339, 0, + 340, 341, 342, 343, 344, 0, 345, 346, 0, 347, + 348, 349, 0, 350, 351, 352, 353, 354, 355, 356, + 357, 358, 359, 0, 360, 361, 362, 363, 364, 365, + 366, 0, 367, 368, 369, 370, 371, 372, 373, 374, + 375, 0, 376, 0, 377, 378, 379, 380, 381, 382, + 383, 384, 385, 386, 0, 0, 387, 388, 389, 390, + 391, 0, 392, 393, 394, 0, 0, 395, 396, 397, + 398, 1039, 400, 401, 402, 403, 404, 405, 406, 407, + 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, + 418, 419, 420, 421, 422, 423, 0, 424, 425, 426, + 427, 0, 428, 429, 430, 431, 432, 433, 0, 434, + 435, 0, 0, 436, 437, 438, 0, 0, 439, 440, + 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, + 451, 452, 453, 454, 0, 455, 456, 457, 458, 459, + 460, 461, 462, 0, 463, 464, 465, 466, 467, 468, + 469, 470, 471, 472, 473, 474, 475, 476, 477, 0, + 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, + 488, 489, 0, 490, 491, 492, 493, 494, 495, 496, + 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, + 507, 0, 508, 509, 510, 511, 512, 875, 513, 514, + 515, 516, 517, 518, 519, 520, 521, 522, 0, 523, + 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, + 534, 535, 536, 537, 0, 538, 539, 0, 540, 541, + 542, 543, 544, 545, 546, 0, 547, 548, 549, 0, + 0, 550, 551, 552, 553, 554, 0, 555, 556, 557, + 558, 559, 560, 561, 562, 0, 0, 563, 564, 565, + 566, 567, 0, 0, 568, 569, 570, 571, 572, 573, + 574, 0, 575, 576, 577, 578, 579, 580, 0, 0, + 581, 0, 0, 582, 583, 584, 585, 586, 587, 588, + 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, + 599, 600, 601, 873, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 229, 230, 231, 232, 233, 234, 235, 236, + 0, 237, 238, 239, 0, 0, 0, 0, 0, 0, + 0, 240, 241, 0, 242, 243, 244, 245, 246, 247, + 248, 249, 250, 251, 252, 253, 0, 254, 255, 256, + 257, 258, 259, 0, 0, 260, 261, 262, 263, 264, + 0, 265, 266, 267, 268, 269, 0, 270, 0, 271, + 272, 273, 274, 275, 276, 277, 278, 279, 0, 280, + 281, 282, 283, 284, 285, 0, 286, 287, 288, 289, + 0, 0, 0, 290, 0, 0, 874, 291, 292, 293, + 294, 295, 296, 297, 298, 299, 0, 300, 0, 301, + 302, 303, 304, 305, 306, 0, 307, 308, 309, 310, + 0, 0, 311, 312, 313, 314, 315, 0, 316, 317, + 318, 0, 319, 320, 321, 0, 322, 323, 324, 325, + 326, 327, 328, 329, 330, 331, 0, 332, 0, 333, + 334, 335, 336, 0, 337, 0, 338, 339, 0, 340, + 341, 342, 343, 344, 0, 345, 346, 0, 347, 348, + 349, 0, 350, 351, 352, 353, 1115, 355, 356, 357, + 358, 359, 0, 360, 361, 362, 363, 364, 365, 366, + 0, 367, 368, 369, 370, 371, 372, 373, 374, 375, + 0, 376, 0, 377, 378, 379, 380, 381, 382, 383, + 384, 385, 386, 0, 0, 387, 388, 389, 390, 391, + 0, 392, 393, 394, 0, 0, 395, 396, 397, 398, + 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, + 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, + 419, 420, 421, 422, 423, 0, 424, 425, 426, 427, + 0, 428, 429, 430, 431, 432, 433, 0, 434, 435, + 0, 0, 436, 437, 438, 0, 0, 439, 440, 441, + 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, + 452, 453, 454, 0, 455, 456, 457, 458, 459, 460, + 461, 462, 0, 463, 464, 465, 466, 467, 468, 469, + 470, 471, 472, 473, 474, 475, 476, 477, 0, 478, + 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, + 489, 0, 490, 491, 492, 493, 494, 495, 496, 497, + 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, + 0, 508, 509, 510, 511, 512, 875, 513, 514, 515, + 516, 517, 518, 519, 520, 521, 522, 0, 523, 524, + 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, + 535, 536, 537, 0, 538, 539, 0, 540, 541, 542, + 543, 544, 545, 546, 0, 547, 548, 549, 0, 0, + 550, 551, 552, 553, 554, 0, 555, 556, 557, 558, + 559, 560, 561, 562, 0, 0, 563, 564, 565, 566, + 567, 0, 0, 568, 569, 570, 571, 572, 573, 574, + 0, 575, 576, 577, 578, 579, 580, 0, 0, 581, + 0, 0, 582, 583, 584, 585, 586, 587, 588, 589, + 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, + 600, 601, 873, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 229, 230, 231, 232, 233, 234, 235, 236, 0, + 237, 238, 239, 0, 0, 0, 0, 0, 0, 0, + 240, 241, 0, 242, 243, 244, 245, 246, 247, 248, + 249, 250, 251, 252, 253, 0, 254, 255, 256, 257, + 258, 259, 0, 0, 260, 261, 262, 263, 264, 0, + 265, 266, 267, 268, 269, 0, 270, 0, 271, 272, + 273, 274, 275, 276, 277, 278, 279, 0, 280, 281, + 282, 283, 284, 285, 0, 286, 287, 288, 289, 0, + 0, 0, 290, 0, 0, 874, 291, 292, 293, 294, + 295, 296, 297, 298, 299, 0, 300, 0, 301, 302, + 303, 304, 305, 306, 0, 307, 308, 309, 310, 0, + 0, 311, 312, 313, 314, 315, 0, 316, 317, 318, + 0, 319, 320, 321, 0, 322, 323, 324, 325, 326, + 327, 328, 329, 330, 331, 0, 332, 0, 333, 334, + 335, 336, 0, 337, 0, 338, 339, 0, 340, 341, + 342, 343, 344, 0, 345, 346, 0, 347, 348, 349, + 0, 350, 351, 352, 353, 1128, 355, 356, 357, 358, + 359, 0, 360, 361, 362, 363, 364, 365, 366, 0, + 367, 368, 369, 370, 371, 372, 373, 374, 375, 0, + 376, 0, 377, 378, 379, 380, 381, 382, 383, 384, + 385, 386, 0, 0, 387, 388, 389, 390, 391, 0, + 392, 393, 394, 0, 0, 395, 396, 397, 398, 399, + 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, + 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, + 420, 421, 422, 423, 0, 424, 425, 426, 427, 0, + 428, 429, 430, 431, 432, 433, 0, 434, 435, 0, + 0, 436, 437, 438, 0, 0, 439, 440, 441, 442, + 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, + 453, 454, 0, 455, 456, 457, 458, 459, 460, 461, + 462, 0, 463, 464, 465, 466, 467, 468, 469, 470, + 471, 472, 473, 474, 475, 476, 477, 0, 478, 479, + 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, + 0, 490, 491, 492, 493, 494, 495, 496, 497, 498, + 499, 500, 501, 502, 503, 504, 505, 506, 507, 0, + 508, 509, 510, 511, 512, 875, 513, 514, 515, 516, + 517, 518, 519, 520, 521, 522, 0, 523, 524, 525, + 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, + 536, 537, 0, 538, 539, 0, 540, 541, 542, 543, + 544, 545, 546, 0, 547, 548, 549, 0, 0, 550, + 551, 552, 553, 554, 0, 555, 556, 557, 558, 559, + 560, 561, 562, 0, 0, 563, 564, 565, 566, 567, + 0, 0, 568, 569, 570, 571, 572, 573, 574, 0, + 575, 576, 577, 578, 579, 580, 0, 0, 581, 0, + 0, 582, 583, 584, 585, 586, 587, 588, 589, 590, + 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, + 601, 873, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 229, 230, 231, 232, 233, 234, 235, 236, 0, 237, + 238, 239, 0, 0, 0, 0, 0, 0, 0, 240, + 241, 0, 242, 243, 244, 245, 246, 247, 248, 249, + 250, 251, 252, 253, 0, 254, 255, 256, 257, 258, + 259, 0, 0, 260, 261, 262, 263, 264, 0, 265, + 266, 267, 268, 269, 0, 270, 0, 271, 272, 273, + 274, 275, 276, 277, 278, 279, 0, 280, 281, 282, + 283, 284, 285, 0, 286, 287, 288, 289, 0, 0, + 0, 290, 0, 0, 874, 291, 292, 293, 294, 295, + 296, 297, 298, 299, 0, 300, 0, 301, 302, 303, + 304, 305, 306, 0, 307, 308, 309, 310, 0, 0, + 311, 312, 313, 314, 315, 0, 316, 317, 318, 0, + 319, 320, 321, 0, 322, 323, 324, 325, 326, 327, + 328, 329, 330, 331, 0, 332, 0, 333, 334, 335, + 336, 0, 337, 0, 338, 339, 0, 340, 341, 342, + 343, 344, 0, 345, 346, 0, 347, 348, 349, 0, + 350, 351, 352, 353, 1140, 355, 356, 357, 358, 359, + 0, 360, 361, 362, 363, 364, 365, 366, 0, 367, + 368, 369, 370, 371, 372, 373, 374, 375, 0, 376, + 0, 377, 378, 379, 380, 381, 382, 383, 384, 385, + 386, 0, 0, 387, 388, 389, 390, 391, 0, 392, + 393, 394, 0, 0, 395, 396, 397, 398, 1141, 400, + 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, + 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, + 421, 422, 423, 0, 424, 425, 426, 427, 0, 428, + 429, 430, 431, 432, 433, 0, 434, 435, 0, 0, + 436, 437, 438, 0, 0, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, - 454, 0, 455, 456, 0, 457, 458, 459, 460, 461, - 462, 1823, 464, 465, 466, 467, 468, 469, 0, 470, - 471, 472, 473, 474, 0, 475, 476, 477, 478, 479, - 0, 480, 481, 482, 483, 0, 484, 485, 486, 487, - 488, 489, 490, 491, 492, 493, 494, 495, 496, 0, - 497, 498, 0, 499, 0, 500, 501, 502, 503, 504, - 0, 505, 506, 0, 0, 507, 508, 509, 510, 511, - 0, 512, 513, 514, 515, 516, 517, 518, 0, 0, - 519, 520, 521, 522, 523, 0, 0, 524, 525, 526, - 527, 528, 529, 530, 0, 531, 0, 532, 533, 534, - 535, 0, 0, 536, 0, 0, 537, 538, 539, 540, - 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, - 551, 552, 553, 554, 555, 556, 223, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 224, 225, 226, 227, 228, 229, 230, 231, 0, - 233, 234, 235, 0, 0, 0, 0, 0, 2088, 0, - 236, 237, 0, 238, 239, 240, 0, 241, 242, 243, - 244, 245, 0, 246, 247, 0, 248, 249, 250, 251, - 252, 0, 0, 253, 254, 255, 256, 257, 0, 258, - 259, 260, 261, 262, 0, 0, 0, 263, 264, 265, - 266, 267, 0, 268, 269, 270, 0, 271, 272, 273, - 274, 275, 276, 0, 0, 277, 278, 279, 0, 0, - 0, 0, 0, 0, 0, 280, 281, 282, 283, 284, - 285, 286, 287, 288, 0, 289, 0, 290, 291, 292, - 293, 294, 295, 0, 296, 297, 298, 299, 0, 0, - 300, 301, 302, 303, 304, 0, 305, 306, 307, 0, - 308, 309, 310, 0, 311, 312, 313, 314, 315, 316, - 317, 318, 319, 0, 320, 0, 321, 322, 323, 324, - 0, 325, 0, 326, 0, 0, 0, 327, 328, 329, - 330, 0, 331, 332, 0, 333, 334, 0, 335, 336, - 337, 338, 339, 0, 340, 341, 342, 343, 0, 344, - 345, 346, 347, 348, 349, 0, 350, 0, 351, 352, - 353, 354, 355, 356, 357, 0, 358, 0, 359, 0, - 0, 360, 0, 361, 362, 363, 364, 365, 0, 0, - 366, 367, 0, 368, 0, 0, 369, 370, 371, 0, - 0, 372, 373, 374, 375, 376, 377, 378, 379, 380, - 381, 382, 383, 384, 385, 386, 387, 388, 0, 389, - 390, 391, 392, 393, 0, 394, 395, 0, 396, 0, - 397, 398, 399, 400, 401, 402, 0, 403, 404, 0, - 0, 405, 406, 407, 0, 0, 408, 409, 0, 410, - 0, 411, 412, 413, 414, 415, 416, 417, 418, 419, - 420, 0, 421, 422, 423, 424, 425, 426, 427, 428, - 0, 429, 430, 431, 432, 433, 434, 435, 436, 437, - 438, 439, 440, 441, 442, 0, 443, 444, 445, 446, - 447, 448, 449, 450, 451, 452, 453, 454, 0, 455, - 456, 0, 457, 458, 459, 460, 461, 462, 463, 464, - 465, 466, 467, 468, 469, 0, 470, 471, 472, 473, - 474, 0, 0, 476, 477, 478, 479, 0, 480, 481, - 482, 483, 0, 484, 485, 486, 487, 488, 489, 490, - 491, 492, 493, 494, 495, 496, 0, 497, 498, 0, - 499, 0, 500, 501, 502, 503, 504, 0, 505, 506, - 0, 0, 507, 508, 509, 510, 511, 0, 512, 513, - 514, 515, 516, 517, 518, 0, 0, 519, 520, 521, - 522, 523, 0, 0, 524, 525, 526, 527, 528, 529, - 530, 0, 531, 0, 532, 533, 534, 535, 0, 0, - 536, 0, 0, 537, 538, 539, 540, 541, 542, 543, - 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, - 554, 555, 556, 223, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 224, 225, - 226, 227, 228, 229, 230, 231, 0, 233, 234, 235, - 0, 0, 0, 0, 0, 0, 0, 236, 237, 0, - 238, 239, 240, 0, 241, 242, 243, 244, 245, 0, - 246, 247, 0, 248, 249, 250, 251, 252, 0, 0, - 745, 254, 255, 256, 257, 0, 258, 259, 260, 261, - 262, 0, 0, 0, 263, 264, 265, 266, 267, 0, - 268, 269, 270, 0, 271, 272, 273, 274, 275, 276, - 0, 0, 277, 278, 279, 0, 0, 0, 0, 0, - 0, 0, 280, 281, 282, 283, 284, 285, 286, 287, - 288, 0, 289, 0, 290, 291, 292, 293, 294, 295, - 0, 296, 297, 298, 299, 0, 0, 300, 301, 302, - 303, 304, 0, 305, 306, 307, 0, 308, 309, 310, - 0, 311, 312, 313, 314, 315, 316, 317, 318, 319, - 0, 320, 0, 321, 322, 323, 324, 0, 325, 0, - 326, 0, 0, 0, 327, 328, 329, 330, 0, 331, - 332, 0, 333, 334, 0, 335, 336, 337, 338, 339, - 0, 340, 341, 342, 343, 0, 344, 345, 346, 347, - 348, 349, 0, 350, 0, 351, 352, 353, 354, 355, - 356, 357, 0, 358, 0, 359, 0, 0, 360, 0, - 361, 362, 363, 364, 365, 0, 0, 366, 367, 0, - 368, 0, 0, 369, 370, 371, 0, 0, 372, 373, - 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, - 384, 385, 386, 748, 388, 0, 389, 390, 391, 392, - 393, 0, 394, 395, 0, 396, 0, 397, 398, 399, - 400, 401, 402, 0, 403, 404, 0, 0, 405, 406, - 407, 0, 0, 408, 409, 0, 410, 0, 411, 412, - 413, 414, 415, 416, 417, 418, 419, 420, 0, 421, - 422, 423, 424, 425, 426, 427, 428, 0, 429, 430, - 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, - 441, 442, 0, 443, 444, 445, 446, 447, 448, 449, - 450, 451, 452, 453, 454, 0, 455, 456, 0, 749, - 458, 459, 460, 461, 462, 463, 750, 465, 466, 467, - 468, 469, 0, 470, 471, 472, 473, 1286, 0, 475, - 476, 477, 478, 479, 0, 480, 481, 482, 483, 0, - 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, - 494, 495, 496, 0, 497, 498, 0, 499, 0, 2122, - 501, 502, 503, 504, 0, 752, 506, 0, 0, 753, - 508, 509, 510, 511, 0, 512, 513, 514, 515, 516, - 517, 518, 0, 0, 519, 520, 521, 522, 523, 0, - 0, 524, 525, 526, 527, 528, 529, 530, 0, 531, - 0, 532, 533, 534, 535, 0, 0, 536, 0, 0, - 537, 538, 539, 540, 541, 754, 543, 544, 545, 546, - 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, - 223, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 224, 225, 226, 227, 228, - 229, 230, 231, 0, 233, 234, 235, 0, 0, 0, - 0, 0, 0, 0, 236, 237, 0, 238, 239, 240, - 0, 241, 242, 243, 244, 245, 0, 246, 247, 0, - 248, 249, 250, 251, 252, 0, 0, 745, 254, 255, - 256, 257, 0, 258, 259, 260, 261, 262, 0, 0, - 0, 263, 264, 265, 266, 267, 0, 268, 269, 270, - 0, 271, 272, 273, 274, 275, 276, 0, 0, 277, - 278, 279, 0, 0, 0, 0, 0, 0, 0, 280, - 281, 282, 283, 284, 285, 286, 287, 288, 0, 289, - 0, 290, 291, 292, 293, 294, 295, 0, 296, 297, - 298, 299, 0, 0, 300, 301, 302, 303, 304, 0, - 305, 306, 307, 0, 308, 309, 310, 0, 311, 312, - 313, 314, 315, 316, 317, 318, 319, 0, 320, 0, - 321, 322, 323, 324, 0, 325, 0, 326, 0, 0, - 0, 327, 328, 329, 330, 0, 331, 332, 0, 333, - 334, 0, 335, 336, 337, 338, 339, 0, 340, 341, - 342, 343, 0, 344, 345, 346, 347, 348, 349, 0, - 350, 0, 351, 352, 353, 354, 355, 356, 357, 0, - 358, 0, 359, 0, 0, 360, 0, 361, 362, 363, - 364, 365, 0, 0, 366, 367, 0, 368, 0, 0, - 369, 370, 371, 0, 0, 372, 373, 374, 375, 376, + 454, 0, 455, 456, 457, 458, 459, 460, 461, 462, + 0, 463, 464, 465, 466, 467, 468, 469, 470, 471, + 472, 473, 474, 475, 476, 477, 0, 478, 479, 480, + 481, 482, 483, 484, 485, 486, 487, 488, 489, 0, + 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, + 500, 501, 502, 503, 504, 505, 506, 507, 0, 508, + 509, 510, 511, 512, 875, 513, 514, 515, 516, 517, + 518, 519, 520, 521, 522, 0, 523, 524, 525, 526, + 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, + 537, 0, 538, 539, 0, 540, 541, 542, 543, 544, + 545, 546, 0, 547, 548, 549, 0, 0, 550, 551, + 552, 553, 554, 0, 555, 556, 557, 558, 559, 560, + 561, 562, 0, 0, 563, 564, 565, 566, 567, 0, + 0, 568, 569, 570, 571, 572, 573, 574, 0, 575, + 576, 577, 578, 579, 580, 0, 0, 581, 0, 0, + 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, + 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, + 873, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 229, + 230, 231, 232, 233, 234, 235, 236, 0, 237, 238, + 239, 3, 4, 0, 0, 0, 0, 0, 240, 241, + 0, 242, 243, 244, 245, 246, 247, 248, 249, 250, + 251, 252, 253, 0, 254, 255, 256, 257, 258, 259, + 0, 0, 260, 261, 262, 263, 264, 0, 265, 266, + 267, 268, 269, 0, 270, 0, 271, 272, 273, 274, + 275, 276, 277, 278, 279, 0, 280, 281, 282, 283, + 284, 285, 0, 286, 287, 288, 289, 0, 0, 0, + 290, 0, 0, 0, 291, 292, 293, 294, 295, 296, + 297, 298, 299, 0, 300, 0, 301, 302, 303, 304, + 305, 306, 0, 307, 308, 309, 310, 0, 0, 311, + 312, 313, 314, 315, 0, 316, 317, 318, 0, 319, + 320, 321, 0, 322, 323, 324, 325, 326, 327, 328, + 329, 330, 331, 0, 332, 0, 333, 334, 335, 336, + 0, 337, 0, 338, 339, 0, 340, 341, 342, 343, + 344, 0, 345, 346, 0, 347, 348, 349, 0, 350, + 351, 352, 353, 354, 355, 356, 357, 358, 359, 0, + 360, 361, 362, 363, 364, 365, 366, 0, 367, 368, + 369, 370, 371, 372, 373, 374, 375, 0, 376, 0, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, - 748, 388, 0, 389, 390, 391, 392, 393, 0, 394, - 395, 0, 396, 0, 397, 398, 399, 400, 401, 402, - 0, 403, 404, 0, 0, 405, 406, 407, 0, 0, - 408, 409, 0, 410, 0, 411, 412, 413, 414, 415, - 416, 417, 418, 419, 420, 0, 421, 422, 423, 424, - 425, 426, 427, 428, 0, 429, 430, 431, 432, 433, - 434, 435, 436, 437, 438, 439, 440, 441, 442, 0, - 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, - 453, 454, 0, 455, 456, 0, 749, 458, 459, 460, - 461, 462, 463, 2197, 465, 466, 467, 468, 469, 0, - 470, 471, 472, 473, 2198, 0, 475, 476, 477, 478, - 479, 0, 480, 481, 482, 483, 0, 484, 485, 486, - 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, - 0, 497, 498, 0, 499, 0, 500, 501, 502, 503, - 504, 0, 752, 506, 0, 0, 2199, 508, 509, 510, - 511, 0, 512, 513, 514, 515, 516, 517, 518, 0, - 0, 519, 520, 521, 522, 523, 0, 0, 524, 525, - 526, 527, 528, 529, 530, 0, 531, 0, 532, 533, - 534, 535, 0, 0, 536, 0, 0, 537, 538, 539, - 540, 541, 754, 543, 544, 545, 546, 547, 548, 549, - 550, 551, 552, 553, 554, 555, 556, 223, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 224, 225, 226, 227, 228, 229, 230, 231, - 0, 233, 234, 235, 0, 0, 0, 0, 0, 0, - 0, 236, 237, 0, 238, 239, 240, 0, 241, 242, - 243, 244, 245, 0, 246, 247, 0, 248, 249, 250, - 251, 252, 0, 0, 253, 254, 255, 256, 257, 0, - 258, 259, 260, 261, 262, 0, 0, 0, 263, 264, - 265, 266, 267, 0, 268, 269, 270, 0, 271, 272, - 273, 274, 275, 276, 0, 0, 277, 278, 279, 0, - 0, 0, 0, 0, 0, 0, 280, 281, 282, 283, - 284, 285, 286, 287, 288, 0, 289, 0, 290, 291, - 292, 293, 294, 295, 0, 296, 297, 298, 299, 0, - 0, 300, 301, 302, 303, 304, 0, 305, 306, 307, - 0, 308, 309, 310, 0, 311, 312, 313, 314, 315, - 316, 317, 318, 319, 0, 320, 0, 321, 322, 323, - 324, 0, 325, 0, 326, 0, 0, 0, 327, 328, - 329, 330, 0, 331, 332, 0, 333, 334, 0, 335, - 336, 337, 338, 2471, 0, 340, 341, 342, 343, 0, - 344, 345, 346, 347, 348, 349, 0, 350, 0, 351, - 352, 353, 354, 355, 356, 357, 0, 358, 0, 359, - 0, 0, 360, 0, 361, 362, 363, 364, 365, 0, - 0, 366, 367, 0, 368, 0, 0, 369, 370, 371, - 0, 0, 372, 373, 374, 375, 376, 377, 378, 379, - 380, 381, 382, 383, 384, 385, 386, 387, 388, 0, - 389, 390, 391, 392, 393, 0, 394, 395, 0, 396, - 0, 397, 398, 399, 400, 401, 402, 0, 403, 404, - 0, 0, 405, 406, 407, 0, 0, 408, 409, 0, - 410, 0, 411, 412, 413, 414, 415, 416, 417, 418, - 419, 420, 0, 421, 422, 423, 424, 425, 426, 427, - 428, 0, 429, 430, 431, 432, 433, 434, 435, 436, - 437, 438, 439, 440, 441, 442, 0, 443, 444, 445, + 0, 0, 387, 388, 389, 390, 391, 0, 392, 393, + 394, 0, 0, 395, 396, 397, 398, 399, 400, 401, + 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, + 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, + 422, 423, 0, 424, 425, 426, 427, 0, 428, 429, + 430, 431, 432, 433, 0, 434, 435, 0, 0, 436, + 437, 438, 0, 0, 439, 440, 441, 442, 443, 444, + 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, + 0, 455, 456, 457, 458, 459, 460, 461, 462, 0, + 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, + 473, 474, 475, 476, 477, 0, 478, 479, 480, 481, + 482, 483, 484, 485, 486, 487, 488, 489, 0, 490, + 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, + 501, 502, 503, 504, 505, 506, 507, 0, 508, 509, + 510, 511, 512, 0, 513, 514, 515, 516, 517, 518, + 519, 520, 521, 522, 0, 523, 524, 525, 526, 527, + 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, + 0, 538, 539, 0, 540, 541, 542, 543, 544, 545, + 546, 0, 547, 548, 549, 0, 0, 550, 551, 552, + 553, 554, 0, 555, 556, 557, 558, 559, 560, 561, + 562, 0, 0, 563, 564, 565, 566, 567, 0, 0, + 568, 569, 570, 571, 572, 573, 574, 0, 575, 576, + 577, 578, 579, 580, 0, 0, 581, 0, 0, 582, + 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, + 593, 594, 595, 596, 597, 598, 599, 600, 601, 873, + 0, 0, 669, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 229, 230, + 231, 232, 233, 234, 235, 236, 0, 237, 238, 239, + 0, 0, 0, 0, 0, 0, 0, 240, 241, 0, + 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, + 252, 253, 0, 254, 255, 256, 257, 258, 259, 0, + 0, 260, 261, 262, 263, 264, 0, 265, 266, 267, + 268, 269, 0, 270, 0, 271, 272, 273, 274, 275, + 276, 277, 278, 279, 0, 280, 281, 282, 283, 284, + 285, 0, 286, 287, 288, 289, 0, 0, 0, 290, + 0, 0, 0, 291, 292, 293, 294, 295, 296, 297, + 298, 299, 0, 300, 0, 301, 302, 303, 304, 305, + 306, 0, 307, 308, 309, 310, 0, 0, 311, 312, + 313, 314, 315, 0, 316, 317, 318, 0, 319, 320, + 321, 0, 322, 323, 324, 325, 326, 327, 328, 329, + 330, 331, 0, 332, 0, 333, 334, 335, 336, 0, + 337, 0, 338, 339, 0, 340, 341, 342, 343, 344, + 0, 345, 346, 0, 347, 348, 349, 0, 350, 351, + 352, 353, 354, 355, 356, 357, 358, 359, 0, 360, + 361, 362, 363, 364, 365, 366, 0, 367, 368, 369, + 370, 371, 372, 373, 374, 375, 0, 376, 0, 377, + 378, 379, 380, 381, 382, 383, 384, 385, 386, 0, + 0, 387, 388, 389, 390, 391, 0, 392, 393, 394, + 0, 0, 395, 396, 397, 398, 399, 400, 401, 402, + 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, + 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, + 423, 0, 424, 425, 426, 427, 0, 428, 429, 430, + 431, 432, 433, 0, 434, 435, 0, 0, 436, 437, + 438, 0, 0, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 0, - 455, 456, 0, 457, 458, 459, 460, 461, 462, 463, - 464, 465, 466, 467, 468, 469, 0, 470, 471, 472, - 473, 474, 0, 475, 476, 477, 478, 479, 0, 480, - 481, 482, 483, 0, 484, 485, 486, 487, 488, 489, - 490, 491, 492, 493, 494, 495, 496, 0, 497, 498, - 0, 499, 0, 500, 501, 502, 503, 504, 0, 505, - 506, 0, 0, 507, 508, 509, 510, 511, 0, 512, - 513, 514, 515, 516, 517, 518, 0, 0, 519, 520, - 521, 522, 523, 0, 0, 524, 525, 526, 527, 528, - 529, 530, 0, 531, 0, 532, 533, 534, 535, 0, - 0, 536, 0, 0, 537, 538, 539, 540, 541, 542, - 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, - 553, 554, 555, 556, 223, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, - 225, 226, 227, 228, 229, 230, 231, 0, 233, 234, - 235, 0, 0, 0, 0, 0, 0, 0, 236, 237, - 0, 238, 239, 240, 0, 241, 242, 243, 244, 245, - 0, 246, 247, 0, 248, 249, 250, 251, 252, 0, - 0, 253, 254, 255, 256, 257, 0, 258, 259, 260, - 261, 262, 0, 0, 0, 263, 264, 265, 266, 267, - 0, 268, 269, 270, 0, 271, 272, 273, 274, 275, - 276, 0, 0, 277, 278, 279, 0, 0, 0, 0, - 0, 0, 0, 280, 281, 282, 283, 284, 285, 286, - 287, 288, 0, 289, 0, 290, 291, 292, 293, 294, - 295, 0, 296, 297, 298, 299, 0, 0, 300, 301, - 302, 303, 304, 0, 305, 306, 307, 0, 308, 309, - 310, 0, 311, 312, 313, 314, 315, 316, 317, 318, - 319, 0, 320, 0, 321, 322, 323, 324, 0, 325, - 0, 326, 0, 0, 0, 327, 328, 329, 330, 0, - 331, 332, 0, 333, 334, 0, 335, 336, 337, 338, - 2475, 0, 340, 341, 342, 343, 0, 344, 345, 346, - 347, 348, 349, 0, 350, 0, 351, 352, 353, 354, - 355, 356, 357, 0, 358, 0, 359, 0, 0, 360, - 0, 361, 362, 363, 364, 365, 0, 0, 366, 367, - 0, 368, 0, 0, 369, 370, 371, 0, 0, 372, - 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, - 383, 384, 385, 386, 387, 388, 0, 389, 390, 391, - 392, 393, 0, 394, 395, 0, 396, 0, 397, 398, - 399, 400, 401, 402, 0, 403, 404, 0, 0, 405, - 406, 407, 0, 0, 408, 409, 0, 410, 0, 411, - 412, 413, 414, 415, 416, 417, 418, 419, 420, 0, - 421, 422, 423, 424, 425, 426, 427, 428, 0, 429, - 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, - 440, 441, 442, 0, 443, 444, 445, 446, 447, 448, - 449, 450, 451, 452, 453, 454, 0, 455, 456, 0, - 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, - 467, 468, 469, 0, 470, 471, 472, 473, 474, 0, - 475, 476, 477, 478, 479, 0, 480, 481, 482, 483, - 0, 484, 485, 486, 487, 488, 489, 490, 491, 492, - 493, 494, 495, 496, 0, 497, 498, 0, 499, 0, - 500, 501, 502, 503, 504, 0, 505, 506, 0, 0, - 507, 508, 509, 510, 511, 0, 512, 513, 514, 515, - 516, 517, 518, 0, 0, 519, 520, 521, 522, 523, - 0, 0, 524, 525, 526, 527, 528, 529, 530, 0, - 531, 0, 532, 533, 534, 535, 0, 0, 536, 0, - 0, 537, 538, 539, 540, 541, 542, 543, 544, 545, - 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, - 556, 223, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 224, 225, 226, 227, - 228, 229, 230, 231, 0, 233, 234, 235, 0, 0, - 0, 0, 0, 0, 0, 236, 237, 0, 238, 239, - 240, 0, 241, 242, 243, 244, 245, 0, 246, 247, - 0, 248, 249, 250, 251, 252, 0, 0, 253, 254, - 255, 256, 257, 0, 258, 259, 260, 261, 262, 0, - 0, 0, 263, 264, 265, 266, 267, 0, 268, 269, - 270, 0, 271, 272, 273, 274, 275, 276, 0, 0, - 277, 278, 279, 0, 0, 0, 0, 0, 0, 0, - 280, 281, 282, 283, 284, 285, 286, 287, 288, 0, - 289, 0, 290, 291, 292, 293, 294, 295, 0, 296, - 297, 298, 299, 0, 0, 300, 301, 302, 303, 304, - 0, 305, 306, 307, 0, 308, 309, 310, 0, 311, - 312, 313, 314, 315, 316, 317, 318, 319, 0, 320, - 0, 321, 322, 323, 324, 0, 325, 0, 326, 0, - 0, 0, 327, 328, 329, 330, 0, 331, 332, 0, - 333, 334, 0, 335, 336, 337, 338, 2546, 0, 340, - 341, 342, 343, 0, 344, 345, 346, 347, 348, 349, - 0, 350, 0, 351, 352, 353, 354, 355, 356, 357, - 0, 358, 0, 359, 0, 0, 360, 0, 361, 362, - 363, 364, 365, 0, 0, 366, 367, 0, 368, 0, - 0, 369, 370, 371, 0, 0, 372, 373, 374, 375, - 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, - 386, 387, 388, 0, 389, 390, 391, 392, 393, 0, - 394, 395, 0, 396, 0, 397, 398, 399, 400, 401, - 402, 0, 403, 404, 0, 0, 405, 406, 407, 0, - 0, 408, 409, 0, 410, 0, 411, 412, 413, 414, - 415, 416, 417, 418, 419, 420, 0, 421, 422, 423, - 424, 425, 426, 427, 428, 0, 429, 430, 431, 432, - 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, - 0, 443, 444, 445, 446, 447, 448, 449, 450, 451, - 452, 453, 454, 0, 455, 456, 0, 457, 458, 459, - 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, - 0, 470, 471, 472, 473, 474, 0, 475, 476, 477, - 478, 479, 0, 480, 481, 482, 483, 0, 484, 485, - 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, - 496, 0, 497, 498, 0, 499, 0, 500, 501, 502, - 503, 504, 0, 505, 506, 0, 0, 507, 508, 509, - 510, 511, 0, 512, 513, 514, 515, 516, 517, 518, - 0, 0, 519, 520, 521, 522, 523, 0, 0, 524, - 525, 526, 527, 528, 529, 530, 0, 531, 0, 532, - 533, 534, 535, 0, 0, 536, 0, 0, 537, 538, - 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, - 549, 550, 551, 552, 553, 554, 555, 556, 223, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 224, 225, 226, 227, 228, 229, 230, - 231, 0, 233, 234, 235, 0, 0, 0, 0, 0, - 0, 0, 236, 237, 0, 238, 239, 240, 0, 241, - 242, 243, 244, 245, 0, 246, 247, 0, 248, 249, - 250, 251, 252, 0, 0, 253, 254, 255, 256, 257, - 0, 258, 259, 260, 261, 262, 0, 0, 0, 263, - 264, 265, 266, 267, 0, 268, 269, 270, 0, 271, - 272, 273, 274, 275, 276, 0, 0, 277, 278, 279, - 0, 0, 0, 0, 0, 0, 0, 280, 281, 282, - 283, 284, 285, 286, 287, 288, 0, 289, 0, 290, - 291, 292, 293, 294, 295, 0, 296, 297, 298, 299, - 0, 0, 300, 301, 302, 303, 304, 0, 305, 306, - 307, 0, 308, 309, 310, 0, 311, 312, 313, 314, - 315, 316, 317, 318, 319, 0, 320, 0, 321, 322, - 323, 324, 0, 325, 0, 326, 0, 0, 0, 327, - 328, 329, 330, 0, 331, 332, 0, 333, 334, 0, - 335, 336, 337, 338, 2878, 0, 340, 341, 342, 343, - 0, 344, 345, 346, 347, 348, 349, 0, 350, 0, - 351, 352, 353, 354, 355, 356, 357, 0, 358, 0, - 359, 0, 0, 360, 0, 361, 362, 363, 364, 365, - 0, 0, 366, 367, 0, 368, 0, 0, 369, 370, - 371, 0, 0, 372, 373, 374, 375, 376, 377, 378, - 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, - 0, 389, 390, 391, 392, 393, 0, 394, 395, 0, - 396, 0, 397, 398, 399, 400, 401, 402, 0, 403, - 404, 0, 0, 405, 406, 407, 0, 0, 408, 409, - 0, 410, 0, 411, 412, 413, 414, 415, 416, 417, - 418, 419, 420, 0, 421, 422, 423, 424, 425, 426, - 427, 428, 0, 429, 430, 431, 432, 433, 434, 435, - 436, 437, 438, 439, 440, 441, 442, 0, 443, 444, + 455, 456, 457, 458, 459, 460, 461, 462, 0, 463, + 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, + 474, 475, 476, 477, 0, 478, 479, 480, 481, 482, + 483, 484, 485, 486, 487, 488, 489, 0, 490, 491, + 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, + 502, 503, 504, 505, 506, 507, 0, 508, 509, 510, + 511, 512, 0, 513, 514, 515, 516, 517, 518, 519, + 520, 521, 522, 0, 523, 524, 525, 526, 527, 528, + 529, 530, 531, 532, 533, 534, 535, 536, 537, 0, + 538, 539, 0, 540, 541, 542, 543, 544, 545, 546, + 0, 547, 548, 549, 0, 0, 550, 551, 552, 553, + 554, 0, 555, 556, 557, 558, 559, 560, 561, 562, + 0, 0, 563, 564, 565, 566, 567, 0, 0, 568, + 569, 570, 571, 572, 573, 574, 0, 575, 576, 577, + 578, 579, 580, 0, 0, 581, 0, 0, 582, 583, + 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, + 594, 595, 596, 597, 598, 599, 600, 601, 873, 0, + 0, 669, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 229, 230, 231, + 232, 233, 234, 235, 236, 0, 237, 238, 239, 0, + 0, 0, 0, 0, 0, 0, 240, 241, 0, 242, + 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, + 253, 0, 254, 255, 256, 257, 258, 259, 0, 0, + 260, 261, 262, 263, 264, 0, 265, 266, 267, 268, + 269, 0, 270, 0, 271, 272, 273, 274, 275, 276, + 277, 278, 279, 0, 280, 281, 282, 283, 284, 285, + 0, 286, 287, 288, 289, 0, 0, 0, 290, 0, + 0, 0, 291, 292, 293, 294, 295, 296, 297, 298, + 299, 0, 300, 0, 301, 302, 303, 304, 305, 306, + 0, 307, 308, 309, 310, 0, 0, 311, 312, 313, + 314, 315, 0, 316, 317, 318, 0, 319, 320, 321, + 0, 322, 323, 324, 325, 326, 327, 328, 329, 330, + 331, 0, 332, 0, 333, 334, 335, 336, 0, 337, + 0, 338, 339, 0, 340, 341, 342, 343, 344, 0, + 345, 346, 0, 347, 348, 349, 0, 350, 351, 352, + 353, 1913, 355, 356, 357, 358, 359, 0, 360, 361, + 362, 363, 364, 365, 366, 0, 367, 368, 369, 370, + 371, 372, 373, 374, 375, 0, 376, 0, 377, 378, + 379, 380, 381, 382, 383, 384, 385, 386, 0, 0, + 387, 388, 389, 390, 391, 0, 392, 393, 394, 0, + 0, 395, 396, 397, 398, 399, 400, 401, 402, 403, + 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, + 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, + 0, 424, 425, 426, 427, 0, 428, 429, 430, 431, + 432, 433, 0, 434, 435, 0, 0, 436, 437, 438, + 0, 0, 439, 440, 441, 442, 443, 444, 445, 446, + 447, 448, 449, 450, 451, 452, 453, 454, 0, 455, + 456, 457, 458, 459, 460, 461, 462, 0, 463, 464, + 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, + 475, 476, 477, 0, 478, 479, 480, 481, 482, 483, + 484, 485, 486, 487, 488, 489, 0, 490, 491, 492, + 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, + 503, 504, 505, 506, 507, 0, 508, 509, 510, 511, + 512, 0, 513, 514, 515, 516, 517, 518, 519, 520, + 521, 522, 0, 523, 524, 525, 526, 527, 528, 529, + 530, 531, 532, 533, 534, 535, 536, 537, 0, 538, + 539, 0, 540, 541, 542, 543, 544, 545, 546, 0, + 547, 548, 549, 0, 0, 550, 551, 552, 553, 554, + 0, 555, 556, 557, 558, 559, 560, 561, 562, 0, + 0, 563, 564, 565, 566, 567, 0, 0, 568, 569, + 570, 571, 572, 573, 574, 0, 575, 576, 577, 578, + 579, 580, 0, 0, 581, 0, 0, 582, 583, 584, + 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, + 595, 596, 597, 598, 599, 600, 601, 228, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 229, 230, 231, 232, + 233, 234, 235, 236, 0, 237, 238, 239, 0, 0, + 0, 0, 0, 0, 0, 240, 241, 0, 242, 243, + 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, + 0, 254, 255, 256, 257, 258, 259, 0, 0, 260, + 261, 262, 263, 264, 0, 265, 266, 267, 268, 269, + 0, 270, 0, 271, 272, 273, 274, 275, 276, 277, + 278, 279, 0, 280, 281, 282, 283, 284, 285, 0, + 286, 287, 288, 289, 0, 0, 0, 290, 0, 0, + 0, 291, 292, 293, 294, 295, 296, 297, 298, 299, + 0, 300, 0, 301, 302, 303, 304, 305, 306, 0, + 307, 308, 309, 310, 0, 0, 311, 312, 313, 314, + 315, 0, 316, 317, 318, 0, 319, 320, 321, 0, + 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, + 0, 332, 0, 333, 334, 335, 336, 0, 337, 0, + 338, 339, 0, 340, 341, 342, 343, 344, 0, 345, + 346, 0, 347, 348, 349, 0, 350, 351, 352, 353, + 354, 355, 356, 357, 358, 359, 0, 360, 361, 362, + 363, 364, 365, 366, 0, 367, 368, 369, 370, 371, + 372, 373, 374, 375, 0, 376, 0, 377, 378, 379, + 380, 381, 382, 383, 384, 385, 386, 0, 0, 387, + 388, 389, 390, 391, 0, 392, 393, 394, 0, 0, + 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, + 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, + 415, 416, 417, 418, 419, 420, 421, 422, 423, 0, + 424, 425, 426, 427, 0, 428, 429, 430, 431, 432, + 433, 0, 434, 435, 0, 0, 436, 437, 438, 0, + 0, 439, 440, 441, 442, 443, 444, 445, 446, 447, + 448, 449, 450, 451, 452, 453, 454, 0, 455, 456, + 457, 458, 459, 460, 461, 462, 0, 463, 464, 465, + 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, + 476, 477, 0, 478, 479, 480, 481, 482, 483, 484, + 485, 486, 487, 488, 489, 0, 490, 491, 492, 493, + 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, + 504, 505, 506, 507, 0, 508, 509, 510, 511, 512, + 0, 513, 514, 515, 516, 517, 518, 519, 520, 521, + 522, 0, 523, 524, 525, 526, 527, 528, 529, 530, + 531, 532, 533, 534, 535, 536, 537, 0, 538, 539, + 0, 540, 541, 542, 543, 544, 545, 546, 0, 547, + 548, 549, 0, 0, 550, 551, 552, 553, 554, 0, + 555, 556, 557, 558, 559, 560, 561, 562, 0, 0, + 563, 564, 565, 566, 567, 0, 0, 568, 569, 570, + 571, 572, 573, 574, 0, 575, 576, 577, 578, 579, + 580, 0, 0, 581, 0, 0, 582, 583, 584, 585, + 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, + 596, 597, 598, 599, 600, 601, 228, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 229, 230, 231, 232, 233, + 234, 235, 236, 0, 237, 238, 239, 0, 0, 0, + 0, 0, 0, 0, 240, 241, 0, 242, 243, 244, + 245, 246, 247, 248, 249, 250, 251, 252, 253, 0, + 254, 255, 256, 257, 258, 259, 0, 0, 260, 261, + 262, 263, 264, 0, 265, 266, 267, 268, 269, 0, + 270, 0, 271, 272, 273, 274, 275, 276, 277, 278, + 279, 0, 280, 281, 282, 283, 284, 285, 0, 286, + 287, 288, 289, 0, 0, 0, 290, 0, 0, 0, + 291, 292, 293, 294, 295, 296, 297, 298, 299, 0, + 300, 0, 301, 302, 303, 304, 305, 306, 0, 307, + 308, 309, 310, 0, 0, 311, 312, 313, 314, 315, + 0, 316, 317, 318, 0, 319, 320, 321, 0, 322, + 323, 324, 325, 326, 327, 328, 329, 330, 331, 0, + 332, 0, 333, 334, 335, 336, 0, 337, 0, 338, + 339, 0, 340, 341, 342, 343, 344, 0, 345, 346, + 0, 347, 348, 349, 0, 350, 351, 352, 353, 1063, + 355, 356, 357, 358, 359, 0, 360, 361, 362, 363, + 364, 365, 366, 0, 367, 368, 369, 370, 371, 372, + 373, 374, 375, 0, 376, 0, 377, 378, 379, 380, + 381, 382, 383, 384, 385, 386, 0, 0, 387, 388, + 389, 390, 391, 0, 392, 393, 394, 0, 0, 395, + 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, + 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, + 416, 417, 418, 419, 420, 421, 422, 423, 0, 424, + 425, 426, 427, 0, 428, 429, 430, 431, 432, 433, + 0, 434, 435, 0, 0, 436, 437, 438, 0, 0, + 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, + 449, 450, 451, 452, 453, 454, 0, 455, 456, 457, + 458, 459, 460, 461, 462, 0, 463, 464, 465, 466, + 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, + 477, 0, 478, 479, 480, 481, 482, 483, 484, 485, + 486, 487, 488, 489, 0, 490, 491, 492, 493, 494, + 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, + 505, 506, 507, 0, 508, 509, 510, 511, 512, 0, + 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, + 0, 523, 524, 525, 526, 527, 528, 529, 530, 531, + 532, 533, 534, 535, 536, 537, 0, 538, 539, 0, + 540, 541, 542, 543, 544, 545, 546, 0, 547, 548, + 549, 0, 0, 550, 551, 552, 553, 554, 0, 555, + 556, 557, 558, 559, 560, 561, 562, 0, 0, 563, + 564, 565, 566, 567, 0, 0, 568, 569, 570, 571, + 572, 573, 574, 0, 575, 576, 577, 578, 579, 580, + 0, 0, 581, 0, 0, 582, 583, 584, 585, 586, + 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, + 597, 598, 599, 600, 601, 228, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 229, 230, 231, 232, 233, 234, + 235, 236, 0, 237, 238, 239, 0, 0, 0, 0, + 0, 0, 0, 240, 241, 0, 242, 243, 244, 245, + 246, 247, 248, 249, 250, 251, 252, 253, 0, 254, + 255, 256, 257, 258, 259, 0, 0, 260, 261, 262, + 263, 264, 0, 265, 266, 267, 268, 269, 0, 270, + 0, 271, 272, 273, 274, 275, 276, 277, 278, 279, + 0, 280, 281, 282, 283, 284, 285, 0, 286, 287, + 288, 289, 0, 0, 0, 290, 0, 0, 0, 291, + 292, 293, 294, 295, 296, 297, 298, 299, 0, 300, + 0, 301, 302, 303, 304, 305, 306, 0, 307, 308, + 309, 310, 0, 0, 311, 312, 313, 314, 315, 0, + 316, 317, 318, 0, 319, 320, 321, 0, 322, 323, + 324, 325, 326, 327, 328, 329, 330, 331, 0, 332, + 0, 333, 334, 335, 336, 0, 337, 0, 338, 339, + 0, 340, 341, 342, 343, 344, 0, 345, 346, 0, + 347, 348, 349, 0, 350, 351, 352, 353, 1112, 355, + 356, 357, 358, 359, 0, 360, 361, 362, 363, 364, + 365, 366, 0, 367, 368, 369, 370, 371, 372, 373, + 374, 375, 0, 376, 0, 377, 378, 379, 380, 381, + 382, 383, 384, 385, 386, 0, 0, 387, 388, 389, + 390, 391, 0, 392, 393, 394, 0, 0, 395, 396, + 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, + 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, + 417, 418, 419, 420, 421, 422, 423, 0, 424, 425, + 426, 427, 0, 428, 429, 430, 431, 432, 433, 0, + 434, 435, 0, 0, 436, 437, 438, 0, 0, 439, + 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, + 450, 451, 452, 453, 454, 0, 455, 456, 457, 458, + 459, 460, 461, 462, 0, 463, 464, 465, 466, 467, + 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, + 0, 478, 479, 480, 481, 482, 483, 484, 485, 486, + 487, 488, 489, 0, 490, 491, 492, 493, 494, 495, + 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, + 506, 507, 0, 508, 509, 510, 511, 512, 0, 513, + 514, 515, 516, 517, 518, 519, 520, 521, 522, 0, + 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, + 533, 534, 535, 536, 537, 0, 538, 539, 0, 540, + 541, 542, 543, 544, 545, 546, 0, 547, 548, 549, + 0, 0, 550, 551, 552, 553, 554, 0, 555, 556, + 557, 558, 559, 560, 561, 562, 0, 0, 563, 564, + 565, 566, 567, 0, 0, 568, 569, 570, 571, 572, + 573, 574, 0, 575, 576, 577, 578, 579, 580, 0, + 0, 581, 0, 0, 582, 583, 584, 585, 586, 587, + 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, + 598, 599, 600, 601, 228, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 229, 230, 231, 232, 233, 234, 235, + 236, 0, 237, 238, 239, 0, 0, 0, 0, 0, + 0, 0, 240, 241, 0, 242, 243, 244, 245, 246, + 247, 248, 249, 250, 251, 252, 253, 0, 254, 255, + 256, 257, 258, 259, 0, 0, 260, 261, 262, 263, + 264, 0, 265, 266, 267, 268, 269, 0, 270, 0, + 271, 272, 273, 274, 275, 276, 277, 278, 279, 0, + 280, 281, 282, 283, 284, 285, 0, 286, 287, 288, + 289, 0, 0, 0, 290, 0, 0, 0, 291, 292, + 293, 294, 295, 296, 297, 298, 299, 0, 300, 0, + 301, 302, 303, 304, 305, 306, 0, 307, 308, 309, + 310, 0, 0, 311, 312, 313, 314, 315, 0, 316, + 317, 318, 0, 319, 320, 321, 0, 322, 323, 324, + 325, 326, 327, 328, 329, 330, 331, 0, 332, 0, + 333, 334, 335, 336, 0, 337, 0, 338, 339, 0, + 340, 341, 342, 343, 344, 0, 345, 346, 0, 347, + 348, 349, 0, 350, 351, 352, 353, 1126, 355, 356, + 357, 358, 359, 0, 360, 361, 362, 363, 364, 365, + 366, 0, 367, 368, 369, 370, 371, 372, 373, 374, + 375, 0, 376, 0, 377, 378, 379, 380, 381, 382, + 383, 384, 385, 386, 0, 0, 387, 388, 389, 390, + 391, 0, 392, 393, 394, 0, 0, 395, 396, 397, + 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, + 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, + 418, 419, 420, 421, 422, 423, 0, 424, 425, 426, + 427, 0, 428, 429, 430, 431, 432, 433, 0, 434, + 435, 0, 0, 436, 437, 438, 0, 0, 439, 440, + 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, + 451, 452, 453, 454, 0, 455, 456, 457, 458, 459, + 460, 461, 462, 0, 463, 464, 465, 466, 467, 468, + 469, 470, 471, 472, 473, 474, 475, 476, 477, 0, + 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, + 488, 489, 0, 490, 491, 492, 493, 494, 495, 496, + 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, + 507, 0, 508, 509, 510, 511, 512, 0, 513, 514, + 515, 516, 517, 518, 519, 520, 521, 522, 0, 523, + 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, + 534, 535, 536, 537, 0, 538, 539, 0, 540, 541, + 542, 543, 544, 545, 546, 0, 547, 548, 549, 0, + 0, 550, 551, 552, 553, 554, 0, 555, 556, 557, + 558, 559, 560, 561, 562, 0, 0, 563, 564, 565, + 566, 567, 0, 0, 568, 569, 570, 571, 572, 573, + 574, 0, 575, 576, 577, 578, 579, 580, 0, 0, + 581, 0, 0, 582, 583, 584, 585, 586, 587, 588, + 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, + 599, 600, 601, 228, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 229, 230, 231, 232, 233, 234, 235, 236, + 0, 237, 238, 239, 0, 0, 0, 0, 0, 0, + 0, 240, 241, 0, 242, 243, 244, 245, 246, 247, + 248, 249, 250, 251, 252, 253, 0, 254, 255, 256, + 257, 258, 259, 0, 0, 260, 261, 262, 263, 264, + 0, 265, 266, 267, 268, 269, 0, 270, 0, 271, + 272, 273, 274, 275, 276, 277, 278, 279, 0, 280, + 281, 282, 283, 284, 285, 0, 286, 287, 288, 289, + 0, 0, 0, 290, 0, 0, 0, 291, 292, 293, + 294, 295, 296, 297, 298, 299, 0, 300, 0, 301, + 302, 303, 304, 305, 306, 0, 307, 308, 309, 310, + 0, 0, 311, 312, 313, 314, 315, 0, 316, 317, + 318, 0, 319, 320, 321, 0, 322, 323, 324, 325, + 326, 327, 328, 329, 330, 331, 0, 332, 0, 333, + 334, 335, 336, 0, 337, 0, 338, 339, 0, 340, + 341, 342, 343, 344, 0, 345, 346, 0, 347, 348, + 349, 0, 350, 351, 352, 353, 1130, 355, 356, 357, + 358, 359, 0, 360, 361, 362, 363, 364, 365, 366, + 0, 367, 368, 369, 370, 371, 372, 373, 374, 375, + 0, 376, 0, 377, 378, 379, 380, 381, 382, 383, + 384, 385, 386, 0, 0, 387, 388, 389, 390, 391, + 0, 392, 393, 394, 0, 0, 395, 396, 397, 398, + 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, + 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, + 419, 420, 421, 422, 423, 0, 424, 425, 426, 427, + 0, 428, 429, 430, 431, 432, 433, 0, 434, 435, + 0, 0, 436, 437, 438, 0, 0, 439, 440, 441, + 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, + 452, 453, 454, 0, 455, 456, 457, 458, 459, 460, + 461, 462, 0, 463, 464, 465, 466, 467, 468, 469, + 470, 471, 472, 473, 474, 475, 476, 477, 0, 478, + 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, + 489, 0, 490, 491, 492, 493, 494, 495, 496, 497, + 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, + 0, 508, 509, 510, 511, 512, 0, 513, 514, 515, + 516, 517, 518, 519, 520, 521, 522, 0, 523, 524, + 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, + 535, 536, 537, 0, 538, 539, 0, 540, 541, 542, + 543, 544, 545, 546, 0, 547, 548, 549, 0, 0, + 550, 551, 552, 553, 554, 0, 555, 556, 557, 558, + 559, 560, 561, 562, 0, 0, 563, 564, 565, 566, + 567, 0, 0, 568, 569, 570, 571, 572, 573, 574, + 0, 575, 576, 577, 578, 579, 580, 0, 0, 581, + 0, 0, 582, 583, 584, 585, 586, 587, 588, 589, + 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, + 600, 601, 873, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 229, 230, 231, 232, 233, 234, 235, 236, 0, + 237, 238, 239, 0, 0, 0, 0, 0, 0, 0, + 240, 241, 0, 242, 243, 244, 245, 246, 247, 248, + 249, 250, 251, 252, 253, 0, 254, 255, 256, 257, + 258, 259, 0, 0, 260, 261, 262, 263, 264, 0, + 265, 266, 267, 268, 269, 0, 270, 0, 271, 272, + 273, 274, 275, 276, 277, 278, 279, 0, 280, 281, + 282, 283, 284, 285, 0, 286, 287, 288, 289, 0, + 0, 0, 290, 0, 0, 0, 291, 292, 293, 294, + 295, 296, 297, 298, 299, 0, 300, 0, 301, 302, + 303, 304, 305, 306, 0, 307, 308, 309, 310, 0, + 0, 311, 312, 313, 314, 315, 0, 316, 317, 318, + 0, 319, 320, 321, 0, 322, 323, 324, 325, 326, + 327, 328, 329, 330, 331, 0, 332, 0, 333, 334, + 335, 336, 0, 337, 0, 338, 339, 0, 340, 341, + 342, 343, 344, 0, 345, 346, 0, 347, 348, 349, + 0, 350, 351, 352, 353, 354, 355, 356, 357, 358, + 359, 0, 360, 361, 362, 363, 364, 365, 366, 0, + 367, 368, 369, 370, 371, 372, 373, 374, 375, 0, + 376, 0, 377, 378, 379, 380, 381, 382, 383, 384, + 385, 386, 0, 0, 387, 388, 389, 390, 391, 0, + 392, 393, 394, 0, 0, 395, 396, 397, 398, 399, + 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, + 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, + 420, 421, 422, 423, 0, 424, 425, 426, 427, 0, + 428, 429, 430, 431, 432, 433, 0, 434, 435, 0, + 0, 436, 437, 438, 0, 0, 439, 440, 441, 442, + 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, + 453, 454, 0, 455, 456, 457, 458, 459, 460, 461, + 462, 0, 463, 464, 465, 466, 467, 468, 469, 470, + 471, 472, 473, 474, 475, 476, 477, 0, 478, 479, + 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, + 0, 490, 491, 492, 493, 494, 495, 496, 497, 498, + 499, 500, 501, 502, 503, 504, 505, 506, 507, 0, + 508, 509, 510, 511, 512, 0, 513, 514, 515, 516, + 517, 518, 519, 520, 521, 522, 0, 523, 524, 525, + 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, + 536, 537, 0, 538, 539, 0, 540, 541, 542, 543, + 544, 545, 546, 0, 547, 548, 549, 0, 0, 550, + 551, 552, 553, 554, 0, 555, 556, 557, 558, 559, + 560, 561, 562, 0, 0, 563, 564, 565, 566, 567, + 0, 0, 568, 569, 570, 571, 572, 573, 574, 0, + 575, 576, 577, 578, 579, 580, 0, 0, 581, 0, + 0, 582, 583, 584, 585, 586, 587, 588, 589, 590, + 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, + 601, 609, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 229, 230, 231, 232, 233, 234, 235, 236, 0, 237, + 238, 239, 0, 0, 0, 0, 0, 0, 0, 240, + 241, 0, 242, 243, 244, 0, 246, 247, 248, 249, + 250, 0, 252, 253, 0, 254, 255, 256, 257, 258, + 259, 0, 0, 260, 261, 262, 263, 264, 2231, 265, + 266, 267, 268, 269, 0, 0, 2311, 271, 272, 273, + 274, 275, 0, 277, 278, 279, 2232, 280, 281, 282, + 283, 284, 285, 0, 0, 287, 288, 289, 0, 0, + 0, 0, 0, 0, 0, 291, 292, 293, 294, 295, + 296, 297, 298, 299, 0, 300, 0, 301, 302, 303, + 304, 305, 306, 0, 307, 308, 309, 310, 0, 0, + 311, 312, 313, 314, 315, 0, 316, 317, 318, 0, + 319, 320, 321, 0, 2312, 323, 324, 325, 326, 327, + 328, 329, 330, 331, 0, 332, 0, 333, 334, 335, + 336, 0, 337, 2234, 338, 0, 0, 0, 341, 342, + 343, 344, 0, 345, 346, 0, 347, 348, 349, 0, + 350, 351, 352, 353, 2313, 0, 356, 357, 358, 359, + 0, 360, 361, 362, 363, 364, 365, 366, 0, 367, + 0, 369, 370, 371, 372, 373, 374, 375, 0, 376, + 0, 377, 0, 0, 380, 0, 382, 383, 384, 385, + 386, 0, 0, 387, 388, 0, 390, 0, 0, 392, + 393, 394, 0, 0, 395, 396, 397, 398, 399, 400, + 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, + 411, 0, 413, 414, 415, 416, 417, 418, 419, 420, + 421, 422, 423, 0, 424, 425, 0, 427, 0, 428, + 429, 430, 431, 432, 433, 0, 434, 435, 0, 0, + 436, 437, 438, 0, 0, 439, 440, 441, 0, 443, + 0, 445, 446, 447, 448, 449, 450, 451, 452, 453, + 454, 0, 455, 456, 457, 458, 459, 460, 461, 462, + 2235, 463, 464, 465, 466, 467, 468, 469, 470, 471, + 472, 473, 474, 475, 476, 477, 0, 478, 479, 480, + 481, 482, 483, 484, 485, 486, 487, 488, 489, 0, + 490, 491, 0, 493, 494, 495, 496, 497, 498, 499, + 500, 501, 502, 503, 504, 505, 506, 507, 0, 508, + 509, 510, 511, 512, 0, 513, 514, 515, 516, 517, + 0, 519, 520, 521, 522, 0, 523, 524, 525, 526, + 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, + 537, 0, 538, 539, 0, 540, 0, 542, 543, 544, + 545, 546, 0, 547, 548, 549, 0, 0, 550, 551, + 552, 553, 554, 0, 555, 556, 557, 558, 559, 560, + 561, 562, 0, 2236, 563, 564, 565, 566, 567, 0, + 0, 568, 569, 570, 571, 572, 573, 574, 0, 575, + 0, 577, 578, 579, 580, 0, 0, 581, 0, 0, + 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, + 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, + 609, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 229, + 230, 231, 232, 233, 234, 235, 236, 0, 237, 238, + 239, 0, 0, 0, 0, 0, 0, 0, 240, 241, + 0, 242, 243, 244, 0, 246, 247, 248, 249, 250, + 0, 252, 253, 0, 254, 255, 256, 257, 258, 259, + 0, 0, 260, 261, 262, 263, 264, 2231, 265, 266, + 267, 268, 269, 0, 0, 0, 271, 272, 273, 274, + 275, 0, 277, 278, 279, 2232, 280, 281, 282, 283, + 284, 285, 0, 0, 287, 288, 289, 0, 0, 0, + 0, 0, 0, 0, 291, 292, 293, 294, 295, 296, + 297, 298, 299, 0, 300, 0, 301, 302, 303, 304, + 305, 306, 0, 307, 308, 309, 310, 0, 0, 311, + 312, 313, 314, 315, 0, 316, 317, 318, 0, 319, + 320, 321, 0, 2312, 323, 324, 325, 326, 327, 328, + 329, 330, 331, 0, 332, 0, 333, 334, 335, 336, + 0, 337, 2234, 338, 0, 0, 0, 341, 342, 343, + 344, 0, 345, 346, 0, 347, 348, 349, 0, 350, + 351, 352, 353, 354, 0, 356, 357, 358, 359, 0, + 360, 361, 362, 363, 364, 365, 366, 0, 367, 0, + 369, 370, 371, 372, 373, 374, 375, 0, 376, 0, + 377, 0, 0, 380, 0, 382, 383, 384, 385, 386, + 0, 0, 387, 388, 0, 390, 3322, 0, 392, 393, + 394, 0, 0, 395, 396, 397, 398, 399, 400, 401, + 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, + 0, 413, 414, 415, 416, 417, 418, 419, 420, 421, + 422, 423, 0, 424, 425, 0, 427, 0, 428, 429, + 430, 431, 432, 433, 0, 434, 435, 0, 0, 436, + 437, 438, 0, 0, 439, 440, 441, 0, 443, 0, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, - 0, 455, 456, 0, 457, 458, 459, 460, 461, 462, - 463, 464, 465, 466, 467, 468, 469, 0, 470, 471, - 472, 473, 474, 0, 475, 476, 477, 478, 479, 0, - 480, 481, 482, 483, 0, 484, 485, 486, 487, 488, - 489, 490, 491, 492, 493, 494, 495, 496, 0, 497, - 498, 0, 499, 0, 500, 501, 502, 503, 504, 0, - 505, 506, 0, 0, 507, 508, 509, 510, 511, 0, - 512, 513, 514, 515, 516, 517, 518, 0, 0, 519, - 520, 521, 522, 523, 0, 0, 524, 525, 526, 527, - 528, 529, 530, 0, 531, 0, 532, 533, 534, 535, - 0, 0, 536, 0, 0, 537, 538, 539, 540, 541, - 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, - 552, 553, 554, 555, 556, 223, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 224, 225, 226, 227, 228, 229, 230, 231, 0, 233, - 234, 235, 0, 0, 0, 0, 0, 0, 0, 236, - 237, 0, 238, 239, 240, 0, 241, 242, 243, 244, - 245, 0, 246, 247, 0, 248, 249, 250, 251, 252, - 0, 0, 745, 254, 255, 256, 257, 0, 258, 259, - 260, 261, 262, 0, 0, 0, 263, 264, 265, 266, - 267, 0, 268, 269, 270, 0, 271, 272, 273, 274, - 275, 276, 0, 0, 277, 278, 279, 0, 0, 0, - 0, 0, 0, 0, 280, 281, 282, 283, 284, 285, - 286, 287, 288, 0, 289, 0, 290, 291, 292, 293, - 294, 295, 0, 296, 297, 298, 299, 0, 0, 300, - 301, 302, 303, 304, 0, 305, 306, 307, 0, 308, - 309, 310, 0, 311, 312, 313, 314, 315, 316, 317, - 318, 319, 0, 320, 0, 321, 322, 323, 324, 0, - 325, 0, 326, 0, 0, 0, 327, 328, 329, 330, - 0, 331, 332, 0, 333, 334, 0, 335, 336, 337, - 338, 339, 0, 340, 341, 342, 343, 0, 344, 345, - 346, 347, 348, 349, 0, 350, 0, 351, 352, 353, - 354, 355, 356, 357, 0, 358, 0, 359, 0, 0, - 360, 0, 361, 362, 363, 364, 365, 0, 0, 366, - 367, 0, 368, 0, 0, 369, 370, 371, 0, 0, - 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, - 382, 383, 384, 385, 386, 748, 388, 0, 389, 390, - 391, 392, 393, 0, 394, 395, 0, 396, 0, 397, - 398, 399, 400, 401, 402, 0, 403, 404, 0, 0, - 405, 406, 407, 0, 0, 408, 409, 0, 410, 0, - 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, - 0, 421, 422, 423, 424, 425, 426, 427, 428, 0, - 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, - 439, 440, 441, 442, 0, 443, 444, 445, 446, 447, + 0, 455, 456, 457, 458, 459, 460, 461, 462, 2235, + 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, + 473, 474, 475, 476, 477, 0, 478, 479, 480, 481, + 482, 483, 484, 485, 486, 487, 488, 489, 0, 490, + 491, 0, 493, 494, 495, 496, 497, 498, 499, 500, + 501, 502, 503, 504, 505, 506, 507, 0, 508, 509, + 510, 511, 512, 0, 513, 514, 515, 516, 517, 0, + 519, 520, 521, 522, 0, 523, 524, 525, 526, 527, + 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, + 0, 538, 539, 0, 540, 0, 542, 543, 544, 545, + 546, 0, 547, 548, 549, 0, 0, 550, 551, 552, + 553, 554, 0, 555, 556, 557, 558, 559, 560, 561, + 562, 0, 2236, 563, 564, 565, 566, 567, 0, 0, + 568, 569, 570, 571, 572, 573, 574, 0, 575, 0, + 577, 578, 579, 580, 0, 0, 581, 0, 0, 582, + 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, + 593, 594, 595, 596, 597, 598, 599, 600, 601, 609, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 229, 230, + 231, 232, 233, 786, 235, 236, 748, 237, 238, 239, + 0, 0, 0, 0, 0, 0, 0, 240, 241, 0, + 242, 243, 244, 0, 246, 247, 248, 249, 250, 0, + 252, 253, 0, 254, 255, 256, 257, 258, 259, 0, + 0, 260, 261, 262, 263, 264, 0, 265, 266, 267, + 268, 269, 0, 0, 0, 271, 272, 273, 274, 275, + 0, 277, 278, 279, 0, 280, 281, 282, 283, 284, + 285, 749, 0, 287, 288, 289, 0, 0, 0, 0, + 0, 0, 0, 291, 292, 293, 294, 295, 296, 297, + 298, 299, 0, 300, 0, 301, 302, 303, 304, 305, + 306, 0, 307, 308, 309, 310, 0, 0, 311, 312, + 313, 314, 315, 0, 316, 317, 318, 0, 319, 320, + 321, 0, 322, 323, 324, 325, 326, 327, 328, 329, + 330, 331, 0, 332, 0, 333, 334, 335, 336, 0, + 337, 0, 338, 0, 0, 0, 341, 342, 343, 344, + 787, 345, 346, 0, 347, 348, 349, 0, 350, 351, + 352, 353, 354, 0, 356, 357, 358, 359, 0, 360, + 361, 362, 363, 364, 365, 366, 0, 367, 0, 369, + 370, 371, 372, 373, 374, 375, 0, 376, 0, 377, + 0, 0, 380, 0, 382, 383, 384, 385, 386, 0, + 0, 387, 388, 0, 390, 0, 0, 392, 393, 394, + 0, 0, 395, 396, 397, 398, 399, 400, 401, 402, + 403, 404, 405, 406, 407, 408, 409, 410, 411, 0, + 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, + 423, 0, 424, 425, 0, 427, 0, 428, 429, 430, + 431, 432, 433, 0, 434, 435, 0, 0, 436, 437, + 438, 0, 0, 439, 440, 441, 0, 443, 0, 445, + 446, 447, 448, 449, 450, 451, 452, 453, 454, 0, + 455, 456, 457, 458, 459, 460, 461, 462, 0, 463, + 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, + 474, 475, 476, 477, 750, 478, 479, 480, 481, 482, + 483, 484, 485, 486, 487, 488, 489, 0, 490, 491, + 0, 493, 494, 495, 496, 497, 498, 499, 500, 501, + 502, 503, 504, 505, 506, 507, 751, 508, 509, 510, + 511, 512, 0, 513, 514, 515, 516, 517, 0, 519, + 520, 521, 522, 0, 523, 524, 525, 526, 527, 528, + 529, 530, 531, 532, 533, 534, 535, 536, 537, 0, + 538, 539, 0, 540, 0, 542, 543, 544, 545, 546, + 0, 547, 548, 549, 0, 0, 550, 551, 552, 553, + 554, 0, 555, 556, 557, 558, 559, 560, 561, 562, + 0, 0, 563, 564, 565, 566, 567, 0, 0, 568, + 569, 570, 571, 572, 573, 574, 0, 575, 0, 577, + 578, 579, 580, 0, 0, 581, 0, 0, 582, 583, + 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, + 594, 595, 596, 597, 598, 599, 600, 601, 609, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 229, 230, 231, + 232, 233, 234, 235, 236, 748, 237, 238, 239, 0, + 0, 0, 0, 0, 0, 0, 240, 241, 0, 242, + 243, 244, 0, 246, 247, 248, 249, 250, 0, 252, + 253, 0, 254, 255, 256, 257, 258, 259, 0, 0, + 260, 261, 262, 263, 264, 0, 265, 266, 267, 268, + 269, 0, 0, 0, 271, 272, 273, 274, 275, 0, + 277, 278, 279, 0, 280, 281, 282, 283, 284, 285, + 749, 0, 287, 288, 289, 0, 0, 0, 0, 0, + 0, 0, 291, 292, 293, 294, 295, 296, 297, 298, + 299, 0, 300, 0, 301, 302, 303, 304, 305, 306, + 0, 307, 308, 309, 310, 0, 0, 311, 312, 313, + 314, 315, 0, 316, 317, 318, 0, 319, 320, 321, + 0, 322, 323, 324, 325, 326, 327, 328, 329, 330, + 331, 0, 332, 0, 333, 334, 335, 336, 0, 337, + 0, 338, 0, 0, 0, 341, 342, 343, 344, 3001, + 345, 346, 0, 347, 348, 349, 0, 350, 351, 352, + 353, 354, 0, 356, 357, 358, 359, 0, 360, 361, + 362, 363, 364, 365, 366, 0, 367, 0, 369, 370, + 371, 372, 373, 374, 375, 0, 376, 0, 377, 0, + 0, 380, 0, 382, 383, 384, 385, 386, 0, 0, + 387, 388, 0, 390, 0, 0, 392, 393, 394, 0, + 0, 395, 396, 397, 398, 399, 400, 401, 402, 403, + 404, 405, 406, 407, 408, 409, 410, 411, 0, 413, + 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, + 0, 424, 425, 0, 427, 0, 428, 429, 430, 431, + 432, 433, 0, 434, 435, 0, 0, 436, 437, 438, + 0, 0, 439, 440, 441, 0, 443, 0, 445, 446, + 447, 448, 449, 450, 451, 452, 453, 454, 0, 455, + 456, 457, 458, 459, 460, 461, 462, 0, 463, 464, + 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, + 475, 476, 477, 750, 478, 479, 480, 481, 482, 483, + 484, 485, 486, 487, 488, 489, 0, 490, 491, 0, + 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, + 503, 504, 505, 506, 507, 751, 508, 509, 510, 511, + 512, 0, 513, 514, 515, 516, 517, 0, 519, 520, + 521, 522, 0, 523, 524, 525, 526, 527, 528, 529, + 530, 531, 532, 533, 534, 535, 536, 537, 0, 538, + 539, 0, 540, 0, 542, 543, 544, 545, 546, 0, + 547, 548, 549, 0, 0, 550, 551, 552, 553, 554, + 0, 555, 556, 557, 558, 559, 560, 561, 562, 0, + 0, 563, 564, 565, 566, 567, 0, 0, 568, 569, + 570, 571, 572, 573, 574, 0, 575, 0, 577, 578, + 579, 580, 0, 0, 581, 0, 0, 582, 583, 584, + 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, + 595, 596, 597, 598, 599, 600, 601, 609, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 229, 230, 231, 232, + 233, 234, 235, 236, 0, 237, 238, 239, 0, 0, + 0, 0, 0, 0, 0, 240, 241, 0, 242, 243, + 244, 0, 246, 247, 248, 249, 250, 0, 252, 253, + 0, 254, 255, 256, 257, 258, 259, 0, 0, 260, + 261, 262, 263, 264, 2231, 265, 266, 267, 268, 269, + 0, 0, 0, 271, 272, 273, 274, 275, 0, 277, + 278, 279, 2232, 280, 281, 282, 283, 284, 285, 0, + 0, 287, 288, 289, 0, 0, 0, 0, 0, 0, + 0, 291, 292, 293, 294, 295, 296, 297, 298, 299, + 0, 300, 0, 301, 302, 303, 304, 305, 306, 0, + 307, 308, 309, 310, 0, 0, 311, 312, 313, 314, + 315, 0, 316, 317, 318, 0, 319, 320, 321, 0, + 2312, 323, 324, 325, 326, 327, 328, 329, 330, 331, + 0, 332, 0, 333, 334, 335, 336, 0, 337, 2234, + 338, 0, 0, 0, 341, 342, 343, 344, 0, 345, + 346, 0, 347, 348, 349, 0, 350, 351, 352, 353, + 354, 0, 356, 357, 358, 359, 0, 360, 361, 362, + 363, 364, 365, 366, 0, 367, 0, 369, 370, 371, + 372, 373, 374, 375, 0, 376, 0, 377, 0, 0, + 380, 0, 382, 383, 384, 385, 386, 0, 0, 387, + 388, 0, 390, 0, 0, 392, 393, 394, 0, 0, + 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, + 405, 406, 407, 408, 409, 410, 411, 0, 413, 414, + 415, 416, 417, 418, 419, 420, 421, 422, 423, 0, + 424, 425, 0, 427, 0, 428, 429, 430, 431, 432, + 433, 0, 434, 435, 0, 0, 436, 437, 438, 0, + 0, 439, 440, 441, 0, 443, 0, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 0, 455, 456, - 0, 749, 458, 459, 460, 461, 462, 463, 750, 465, - 466, 467, 468, 469, 0, 470, 471, 472, 473, 2198, - 0, 475, 476, 477, 478, 479, 0, 480, 481, 482, - 483, 0, 484, 485, 486, 487, 488, 489, 490, 491, - 492, 493, 494, 495, 496, 0, 497, 498, 0, 499, - 0, 500, 501, 502, 503, 504, 0, 752, 506, 0, - 0, 2199, 508, 509, 510, 511, 0, 512, 513, 514, - 515, 516, 517, 518, 0, 0, 519, 520, 521, 522, - 523, 0, 0, 524, 525, 526, 527, 528, 529, 530, - 0, 531, 0, 532, 533, 534, 535, 0, 0, 536, - 0, 0, 537, 538, 539, 540, 541, 754, 543, 544, - 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, - 555, 556, 223, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 224, 225, 226, - 227, 228, 229, 230, 231, 0, 233, 234, 235, 0, - 0, 0, 0, 0, 0, 0, 236, 237, 0, 238, - 239, 240, 0, 241, 242, 243, 244, 245, 0, 246, - 247, 0, 248, 249, 250, 251, 252, 0, 0, 253, - 254, 255, 256, 257, 0, 258, 259, 260, 261, 262, - 0, 0, 0, 263, 264, 265, 266, 267, 0, 268, - 269, 270, 0, 271, 272, 273, 274, 275, 276, 0, - 0, 277, 278, 279, 0, 0, 0, 0, 0, 0, - 0, 280, 281, 282, 283, 284, 285, 286, 287, 288, - 0, 289, 0, 290, 291, 292, 293, 294, 295, 0, - 296, 297, 298, 299, 0, 0, 300, 301, 302, 303, - 304, 0, 305, 306, 307, 0, 308, 309, 310, 0, - 311, 312, 313, 314, 315, 316, 317, 318, 319, 0, - 320, 0, 321, 322, 323, 324, 0, 325, 0, 326, - 0, 0, 0, 327, 328, 329, 330, 0, 331, 332, - 0, 333, 334, 0, 335, 336, 337, 338, 2945, 0, - 340, 341, 342, 343, 0, 344, 345, 346, 347, 348, - 349, 0, 350, 0, 351, 352, 353, 354, 355, 356, - 357, 0, 358, 0, 359, 0, 0, 360, 0, 361, - 362, 363, 364, 365, 0, 0, 366, 367, 0, 368, - 0, 0, 369, 370, 371, 0, 0, 372, 373, 374, - 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, - 385, 386, 387, 388, 0, 389, 390, 391, 392, 393, - 0, 394, 395, 0, 396, 0, 397, 398, 399, 400, - 401, 402, 0, 403, 404, 0, 0, 405, 406, 407, - 0, 0, 408, 409, 0, 410, 0, 411, 412, 413, - 414, 415, 416, 417, 418, 419, 420, 0, 421, 422, - 423, 424, 425, 426, 427, 428, 0, 429, 430, 431, - 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, - 442, 0, 443, 444, 445, 446, 447, 448, 449, 450, - 451, 452, 453, 454, 0, 455, 456, 0, 457, 458, - 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, - 469, 0, 470, 471, 472, 473, 474, 0, 475, 476, - 477, 478, 479, 0, 480, 481, 482, 483, 0, 484, - 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, - 495, 496, 0, 497, 498, 0, 499, 0, 500, 501, - 502, 503, 504, 0, 505, 506, 0, 0, 507, 508, - 509, 510, 511, 0, 512, 513, 514, 515, 516, 517, - 518, 0, 0, 519, 520, 521, 522, 523, 0, 0, - 524, 525, 526, 527, 528, 529, 530, 0, 531, 0, - 532, 533, 534, 535, 0, 0, 536, 0, 0, 537, - 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, - 548, 549, 550, 551, 552, 553, 554, 555, 556, 223, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 224, 225, 226, 227, 228, 229, - 230, 231, 0, 233, 234, 235, 0, 0, 0, 0, - 0, 0, 0, 236, 237, 0, 238, 239, 240, 0, - 241, 242, 243, 244, 245, 0, 246, 247, 0, 248, - 249, 250, 251, 252, 0, 0, 253, 254, 255, 256, - 257, 0, 258, 259, 260, 261, 262, 0, 0, 0, - 263, 264, 265, 266, 267, 0, 268, 269, 270, 0, - 271, 272, 273, 274, 275, 276, 0, 0, 277, 278, - 279, 0, 0, 0, 0, 0, 0, 0, 280, 281, - 282, 283, 284, 285, 286, 287, 288, 0, 289, 0, - 290, 291, 292, 293, 294, 295, 0, 296, 297, 298, - 299, 0, 0, 300, 301, 302, 303, 304, 0, 305, - 306, 307, 0, 308, 309, 310, 0, 311, 312, 313, - 314, 315, 316, 317, 318, 319, 0, 320, 0, 321, - 322, 323, 324, 0, 325, 0, 326, 0, 0, 0, - 327, 328, 329, 330, 0, 331, 332, 0, 333, 334, - 0, 335, 336, 337, 338, 2958, 0, 340, 341, 342, - 343, 0, 344, 345, 346, 347, 348, 349, 0, 350, - 0, 351, 352, 353, 354, 355, 356, 357, 0, 358, - 0, 359, 0, 0, 360, 0, 361, 362, 363, 364, - 365, 0, 0, 366, 367, 0, 368, 0, 0, 369, - 370, 371, 0, 0, 372, 373, 374, 375, 376, 377, - 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, - 388, 0, 389, 390, 391, 392, 393, 0, 394, 395, - 0, 396, 0, 397, 398, 399, 400, 401, 402, 0, - 403, 404, 0, 0, 405, 406, 407, 0, 0, 408, - 409, 0, 410, 0, 411, 412, 413, 414, 415, 416, - 417, 418, 419, 420, 0, 421, 422, 423, 424, 425, - 426, 427, 428, 0, 429, 430, 431, 432, 433, 434, - 435, 436, 437, 438, 439, 440, 441, 442, 0, 443, - 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, - 454, 0, 455, 456, 0, 457, 458, 459, 460, 461, - 462, 463, 464, 465, 466, 467, 468, 469, 0, 470, - 471, 472, 473, 474, 0, 475, 476, 477, 478, 479, - 0, 480, 481, 482, 483, 0, 484, 485, 486, 487, - 488, 489, 490, 491, 492, 493, 494, 495, 496, 0, - 497, 498, 0, 499, 0, 500, 501, 502, 503, 504, - 0, 505, 506, 0, 0, 507, 508, 509, 510, 511, - 0, 512, 513, 514, 515, 516, 517, 518, 0, 0, - 519, 520, 521, 522, 523, 0, 0, 524, 525, 526, - 527, 528, 529, 530, 0, 531, 0, 532, 533, 534, - 535, 0, 0, 536, 0, 0, 537, 538, 539, 540, - 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, - 551, 552, 553, 554, 555, 556, 223, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 224, 225, 226, 227, 228, 229, 230, 231, 0, - 233, 234, 235, 0, 0, 0, 0, 0, 0, 0, - 236, 237, 0, 238, 239, 240, 0, 241, 242, 243, - 244, 245, 0, 246, 247, 0, 248, 249, 250, 251, - 252, 0, 0, 253, 254, 255, 256, 257, 0, 258, - 259, 260, 261, 262, 0, 0, 0, 263, 264, 265, - 266, 267, 0, 268, 269, 270, 0, 271, 272, 273, - 274, 275, 276, 0, 0, 277, 278, 279, 0, 0, - 0, 0, 0, 0, 0, 280, 281, 282, 283, 284, - 285, 286, 287, 288, 0, 289, 0, 290, 291, 292, - 293, 294, 295, 0, 296, 297, 298, 299, 0, 0, - 300, 301, 302, 303, 304, 0, 305, 306, 307, 0, - 308, 309, 310, 0, 311, 312, 313, 314, 315, 316, - 317, 318, 319, 0, 320, 0, 321, 322, 323, 324, - 0, 325, 0, 326, 0, 0, 0, 327, 328, 329, - 330, 0, 331, 332, 0, 333, 334, 0, 335, 336, - 337, 338, 2960, 0, 340, 341, 342, 343, 0, 344, - 345, 346, 347, 348, 349, 0, 350, 0, 351, 352, - 353, 354, 355, 356, 357, 0, 358, 0, 359, 0, - 0, 360, 0, 361, 362, 363, 364, 365, 0, 0, - 366, 367, 0, 368, 0, 0, 369, 370, 371, 0, - 0, 372, 373, 374, 375, 376, 377, 378, 379, 380, - 381, 382, 383, 384, 385, 386, 387, 388, 0, 389, - 390, 391, 392, 393, 0, 394, 395, 0, 396, 0, - 397, 398, 399, 400, 401, 402, 0, 403, 404, 0, - 0, 405, 406, 407, 0, 0, 408, 409, 0, 410, - 0, 411, 412, 413, 414, 415, 416, 417, 418, 419, - 420, 0, 421, 422, 423, 424, 425, 426, 427, 428, - 0, 429, 430, 431, 432, 433, 434, 435, 436, 437, - 438, 439, 440, 441, 442, 0, 443, 444, 445, 446, + 457, 458, 459, 460, 461, 462, 2235, 463, 464, 465, + 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, + 476, 477, 0, 478, 479, 480, 481, 482, 483, 484, + 485, 486, 487, 488, 489, 0, 490, 491, 0, 493, + 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, + 504, 505, 506, 507, 0, 508, 509, 510, 511, 512, + 0, 513, 514, 515, 516, 517, 0, 519, 520, 521, + 522, 0, 523, 524, 525, 526, 527, 528, 529, 530, + 531, 532, 533, 534, 535, 536, 537, 0, 538, 539, + 0, 540, 0, 542, 543, 544, 545, 546, 0, 547, + 548, 549, 0, 0, 550, 551, 552, 553, 554, 0, + 555, 556, 557, 558, 559, 560, 561, 562, 0, 2236, + 563, 564, 565, 566, 567, 0, 0, 568, 569, 570, + 571, 572, 573, 574, 0, 575, 0, 577, 578, 579, + 580, 0, 0, 581, 0, 0, 582, 583, 584, 585, + 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, + 596, 597, 598, 599, 600, 601, 609, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 229, 230, 231, 232, 233, + 234, 235, 236, 748, 237, 238, 239, 0, 0, 0, + 0, 0, 0, 0, 240, 241, 0, 242, 243, 244, + 0, 246, 247, 248, 249, 250, 0, 252, 253, 0, + 254, 255, 256, 257, 258, 259, 0, 0, 260, 261, + 262, 263, 264, 0, 265, 266, 267, 268, 269, 0, + 0, 0, 271, 272, 273, 274, 275, 0, 277, 278, + 279, 0, 280, 281, 282, 283, 284, 285, 749, 0, + 287, 288, 289, 0, 0, 0, 0, 0, 0, 0, + 291, 292, 293, 294, 295, 296, 297, 298, 299, 0, + 300, 0, 301, 302, 303, 304, 305, 306, 0, 307, + 308, 309, 310, 0, 0, 311, 312, 313, 314, 315, + 0, 316, 317, 318, 0, 319, 320, 321, 0, 322, + 323, 324, 325, 326, 327, 328, 329, 330, 331, 0, + 332, 0, 333, 334, 335, 336, 0, 337, 0, 338, + 0, 0, 0, 341, 342, 343, 344, 0, 345, 346, + 0, 347, 348, 349, 0, 350, 351, 352, 353, 354, + 0, 356, 357, 358, 359, 0, 360, 361, 362, 363, + 364, 365, 366, 0, 367, 0, 369, 370, 371, 372, + 373, 374, 375, 0, 376, 0, 377, 0, 0, 380, + 0, 382, 383, 384, 385, 386, 0, 0, 387, 388, + 0, 390, 0, 0, 392, 393, 394, 0, 0, 395, + 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, + 406, 407, 408, 409, 410, 411, 0, 413, 414, 415, + 416, 417, 418, 419, 420, 421, 422, 423, 0, 424, + 425, 0, 427, 0, 428, 429, 430, 431, 432, 433, + 0, 434, 435, 0, 0, 436, 437, 438, 0, 0, + 439, 440, 441, 0, 443, 0, 445, 446, 447, 448, + 449, 450, 451, 452, 453, 454, 0, 455, 456, 457, + 458, 459, 460, 461, 462, 0, 463, 464, 465, 466, + 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, + 477, 750, 478, 479, 480, 481, 482, 483, 484, 485, + 486, 487, 488, 489, 0, 490, 491, 0, 493, 494, + 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, + 505, 506, 507, 751, 508, 509, 510, 511, 512, 0, + 513, 514, 515, 516, 517, 0, 519, 520, 521, 522, + 0, 523, 524, 525, 526, 527, 528, 529, 530, 531, + 532, 533, 534, 535, 536, 537, 0, 538, 539, 0, + 540, 0, 542, 543, 544, 545, 546, 0, 547, 548, + 549, 0, 0, 550, 551, 552, 553, 554, 0, 555, + 556, 557, 558, 559, 560, 561, 562, 0, 0, 563, + 564, 565, 566, 567, 0, 0, 568, 569, 570, 571, + 572, 573, 574, 0, 575, 0, 577, 578, 579, 580, + 0, 0, 581, 0, 0, 582, 583, 584, 585, 586, + 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, + 597, 598, 599, 600, 601, 609, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 229, 230, 231, 232, 233, 234, + 235, 236, 1954, 237, 238, 239, 0, 0, 0, 0, + 0, 0, 0, 240, 241, 0, 242, 243, 244, 0, + 246, 247, 248, 249, 250, 0, 252, 253, 0, 254, + 255, 256, 257, 258, 259, 0, 0, 260, 261, 262, + 263, 264, 0, 265, 266, 267, 268, 269, 0, 0, + 0, 271, 272, 273, 274, 275, 0, 277, 278, 279, + 0, 280, 281, 282, 283, 284, 285, 0, 0, 287, + 288, 289, 0, 0, 0, 0, 0, 0, 0, 291, + 292, 293, 1955, 295, 296, 297, 298, 299, 0, 300, + 0, 301, 302, 303, 304, 305, 306, 0, 307, 308, + 309, 310, 0, 0, 311, 1956, 313, 314, 315, 0, + 316, 317, 318, 0, 319, 320, 321, 0, 322, 323, + 324, 325, 326, 327, 328, 329, 330, 331, 0, 332, + 0, 333, 334, 335, 336, 0, 337, 1957, 338, 0, + 0, 0, 1958, 342, 343, 344, 0, 345, 346, 0, + 347, 348, 349, 0, 350, 351, 352, 353, 354, 0, + 356, 357, 358, 359, 0, 360, 361, 362, 363, 364, + 365, 366, 0, 367, 0, 369, 370, 371, 372, 373, + 374, 375, 0, 376, 0, 377, 0, 0, 380, 0, + 382, 383, 1959, 1960, 386, 0, 0, 387, 388, 0, + 390, 0, 0, 392, 393, 394, 0, 0, 395, 396, + 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, + 407, 408, 409, 410, 411, 0, 413, 414, 415, 416, + 417, 418, 419, 420, 421, 422, 423, 0, 424, 425, + 0, 427, 0, 428, 429, 430, 431, 432, 433, 0, + 434, 435, 0, 0, 436, 437, 438, 0, 0, 439, + 440, 441, 0, 443, 0, 445, 446, 447, 448, 449, + 450, 451, 452, 453, 454, 0, 455, 456, 457, 458, + 459, 460, 461, 462, 0, 463, 464, 465, 1961, 467, + 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, + 0, 478, 479, 480, 481, 482, 483, 484, 485, 486, + 487, 488, 489, 0, 490, 491, 0, 493, 494, 495, + 1962, 497, 498, 499, 500, 501, 1963, 503, 504, 505, + 506, 507, 0, 1964, 509, 510, 511, 512, 0, 513, + 514, 515, 516, 517, 0, 519, 520, 521, 522, 0, + 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, + 533, 534, 535, 536, 537, 0, 538, 539, 1965, 540, + 0, 1966, 543, 544, 545, 546, 0, 547, 548, 549, + 0, 0, 550, 551, 552, 553, 554, 0, 555, 556, + 1967, 558, 559, 560, 561, 562, 0, 0, 563, 564, + 565, 566, 567, 0, 0, 568, 569, 570, 571, 572, + 573, 574, 0, 575, 0, 577, 578, 579, 580, 0, + 0, 581, 0, 0, 582, 583, 584, 585, 586, 587, + 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, + 598, 599, 600, 601, 609, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 229, 230, 231, 232, 233, 234, 235, + 236, 0, 237, 238, 239, 0, 0, 0, 0, 0, + 0, 0, 240, 241, 0, 242, 243, 244, 0, 246, + 247, 248, 249, 250, 0, 252, 253, 0, 254, 255, + 256, 257, 258, 259, 0, 0, 260, 261, 262, 263, + 264, 0, 265, 266, 267, 268, 269, 0, 0, 0, + 271, 272, 273, 274, 275, 0, 277, 278, 279, 0, + 280, 281, 282, 283, 284, 285, 749, 0, 287, 288, + 289, 0, 0, 0, 0, 0, 0, 0, 291, 292, + 293, 294, 295, 296, 297, 298, 299, 0, 300, 0, + 301, 302, 303, 304, 305, 306, 0, 307, 308, 309, + 310, 0, 0, 311, 312, 313, 314, 315, 0, 316, + 317, 318, 0, 319, 320, 321, 0, 322, 323, 324, + 325, 326, 327, 328, 329, 330, 331, 0, 332, 0, + 333, 334, 335, 336, 0, 337, 0, 338, 0, 0, + 0, 341, 342, 343, 344, 0, 345, 346, 0, 347, + 348, 349, 0, 350, 351, 352, 353, 354, 0, 356, + 357, 358, 359, 0, 360, 361, 362, 363, 364, 365, + 366, 0, 367, 0, 369, 370, 371, 372, 373, 374, + 375, 0, 376, 0, 377, 0, 0, 380, 0, 382, + 383, 384, 385, 386, 0, 0, 387, 388, 0, 390, + 0, 0, 392, 393, 394, 0, 0, 395, 396, 397, + 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, + 408, 409, 410, 411, 0, 413, 414, 415, 416, 417, + 418, 419, 420, 421, 422, 423, 0, 424, 425, 0, + 427, 0, 428, 429, 430, 431, 432, 433, 0, 434, + 435, 0, 0, 436, 437, 438, 0, 0, 439, 440, + 441, 0, 443, 0, 445, 446, 447, 448, 449, 450, + 451, 452, 453, 454, 0, 455, 456, 457, 458, 459, + 460, 461, 462, 0, 463, 464, 465, 466, 467, 468, + 469, 470, 471, 472, 473, 474, 475, 476, 477, 750, + 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, + 488, 489, 0, 490, 491, 0, 493, 494, 495, 496, + 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, + 507, 751, 508, 509, 510, 511, 512, 0, 513, 514, + 515, 516, 517, 0, 519, 520, 521, 522, 0, 523, + 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, + 534, 535, 536, 537, 0, 538, 539, 0, 540, 0, + 542, 543, 544, 545, 546, 0, 547, 548, 549, 0, + 0, 550, 551, 552, 553, 554, 0, 555, 556, 557, + 558, 559, 560, 561, 562, 0, 0, 563, 564, 565, + 566, 567, 0, 0, 568, 569, 570, 571, 572, 573, + 574, 0, 575, 0, 577, 578, 579, 580, 0, 0, + 581, 0, 0, 582, 583, 584, 585, 586, 587, 588, + 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, + 599, 600, 601, 609, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 229, 230, 231, 232, 233, 234, 235, 236, + 926, 237, 238, 239, 0, 0, 0, 0, 0, 0, + 0, 240, 241, 0, 242, 243, 244, 0, 246, 247, + 248, 249, 250, 0, 252, 253, 0, 254, 255, 256, + 257, 258, 259, 0, 0, 260, 261, 262, 263, 264, + 0, 265, 266, 267, 268, 269, 0, 0, 0, 271, + 272, 273, 274, 275, 0, 277, 278, 279, 0, 280, + 281, 282, 283, 284, 285, 0, 0, 287, 288, 289, + 0, 0, 0, 0, 0, 0, 0, 291, 292, 293, + 294, 295, 296, 297, 298, 299, 0, 300, 0, 301, + 302, 303, 304, 305, 306, 0, 307, 308, 309, 310, + 0, 0, 311, 312, 313, 314, 315, 0, 316, 317, + 318, 0, 319, 320, 321, 0, 322, 323, 324, 325, + 326, 327, 328, 329, 330, 331, 0, 332, 0, 333, + 334, 335, 336, 0, 337, 0, 338, 0, 0, 0, + 341, 342, 343, 344, 0, 345, 346, 0, 347, 348, + 349, 0, 350, 351, 352, 353, 927, 0, 356, 357, + 358, 359, 0, 360, 361, 362, 363, 364, 365, 366, + 0, 367, 0, 369, 370, 371, 372, 373, 374, 375, + 0, 376, 0, 377, 0, 0, 380, 0, 382, 383, + 384, 385, 386, 0, 0, 387, 388, 0, 390, 0, + 0, 392, 393, 394, 0, 0, 395, 396, 397, 398, + 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, + 409, 410, 411, 0, 413, 414, 415, 416, 417, 418, + 419, 420, 421, 422, 423, 0, 424, 425, 0, 427, + 0, 428, 429, 430, 431, 432, 433, 0, 434, 435, + 0, 818, 436, 437, 438, 0, 0, 439, 440, 441, + 0, 443, 0, 445, 446, 447, 448, 449, 450, 451, + 452, 453, 454, 0, 455, 456, 457, 458, 459, 460, + 461, 462, 0, 463, 464, 465, 466, 467, 468, 469, + 470, 471, 472, 473, 474, 475, 476, 477, 0, 478, + 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, + 489, 0, 490, 491, 0, 493, 494, 495, 496, 497, + 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, + 0, 508, 509, 510, 511, 512, 0, 513, 514, 515, + 516, 517, 0, 519, 520, 521, 522, 0, 523, 524, + 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, + 535, 536, 537, 0, 538, 539, 0, 540, 0, 542, + 543, 544, 545, 546, 0, 547, 548, 549, 0, 0, + 550, 551, 552, 553, 554, 0, 555, 556, 557, 558, + 559, 560, 561, 562, 0, 0, 563, 564, 565, 566, + 567, 0, 0, 568, 569, 570, 571, 572, 573, 574, + 0, 575, 0, 577, 578, 579, 580, 0, 0, 581, + 0, 0, 582, 583, 584, 585, 586, 587, 588, 589, + 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, + 600, 601, 609, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 229, 230, 231, 232, 233, 234, 235, 236, 3092, + 237, 238, 239, 0, 0, 0, 0, 0, 0, 0, + 240, 241, 0, 242, 243, 244, 0, 246, 247, 248, + 249, 250, 0, 252, 253, 0, 254, 255, 256, 257, + 258, 259, 0, 0, 260, 261, 262, 263, 264, 0, + 265, 266, 267, 268, 269, 0, 0, 0, 271, 272, + 273, 274, 275, 0, 277, 278, 279, 0, 280, 281, + 282, 283, 284, 285, 0, 0, 287, 288, 289, 0, + 0, 0, 0, 0, 0, 0, 291, 292, 293, 294, + 295, 296, 297, 298, 299, 0, 300, 0, 301, 302, + 303, 304, 305, 306, 0, 307, 308, 309, 310, 0, + 0, 311, 312, 313, 314, 315, 0, 316, 317, 318, + 0, 319, 320, 321, 0, 322, 323, 324, 325, 326, + 327, 328, 329, 330, 331, 0, 332, 0, 333, 334, + 335, 336, 0, 337, 0, 338, 0, 0, 0, 341, + 342, 343, 344, 0, 345, 346, 0, 347, 348, 349, + 0, 350, 351, 352, 353, 354, 0, 356, 357, 358, + 359, 0, 360, 361, 362, 363, 364, 365, 366, 0, + 367, 0, 369, 370, 371, 372, 373, 374, 375, 0, + 376, 0, 377, 0, 0, 380, 0, 382, 383, 384, + 385, 386, 0, 0, 387, 388, 0, 390, 0, 0, + 392, 393, 394, 0, 0, 395, 396, 397, 398, 399, + 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, + 410, 411, 0, 413, 414, 415, 416, 417, 418, 419, + 420, 421, 422, 423, 0, 424, 425, 0, 427, 0, + 428, 429, 430, 431, 432, 433, 0, 434, 435, 0, + 0, 436, 437, 438, 0, 0, 439, 440, 441, 0, + 443, 0, 445, 446, 447, 448, 449, 450, 451, 452, + 453, 454, 0, 455, 456, 457, 458, 459, 460, 461, + 462, 0, 463, 464, 465, 466, 467, 468, 469, 470, + 471, 472, 473, 474, 475, 476, 477, 0, 478, 479, + 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, + 0, 490, 491, 0, 493, 494, 495, 496, 497, 498, + 499, 500, 501, 502, 503, 504, 505, 506, 507, 0, + 508, 509, 510, 511, 512, 0, 513, 514, 515, 516, + 517, 0, 519, 520, 521, 522, 0, 523, 524, 525, + 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, + 536, 537, 0, 538, 539, 0, 540, 0, 542, 543, + 544, 545, 546, 0, 547, 548, 549, 0, 0, 550, + 551, 552, 553, 554, 0, 555, 556, 557, 558, 559, + 560, 561, 562, 0, 0, 563, 564, 565, 566, 567, + 3093, 0, 568, 569, 570, 571, 572, 573, 574, 0, + 575, 0, 577, 578, 579, 580, 0, 0, 581, 0, + 0, 582, 583, 584, 585, 586, 587, 588, 589, 590, + 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, + 601, 609, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 229, 230, 231, 232, 233, 234, 235, 236, 3105, 237, + 238, 239, 0, 0, 0, 0, 0, 0, 0, 240, + 241, 0, 242, 243, 244, 0, 246, 247, 248, 249, + 250, 0, 252, 253, 0, 254, 255, 256, 257, 258, + 259, 0, 0, 260, 261, 262, 263, 264, 0, 265, + 266, 267, 268, 269, 0, 0, 0, 271, 272, 273, + 274, 275, 0, 277, 278, 279, 0, 280, 281, 282, + 283, 284, 285, 0, 0, 287, 288, 289, 0, 0, + 0, 0, 0, 0, 0, 291, 292, 293, 294, 295, + 296, 297, 298, 299, 0, 300, 0, 301, 302, 303, + 304, 305, 306, 0, 307, 308, 309, 310, 0, 0, + 311, 312, 313, 314, 315, 0, 316, 317, 318, 0, + 319, 320, 321, 0, 322, 323, 324, 325, 326, 327, + 328, 329, 330, 331, 0, 332, 0, 333, 334, 335, + 336, 0, 337, 0, 338, 0, 0, 0, 341, 342, + 343, 344, 0, 345, 346, 0, 347, 348, 349, 0, + 350, 351, 352, 353, 354, 0, 356, 357, 358, 359, + 0, 360, 361, 362, 363, 364, 365, 366, 0, 367, + 0, 369, 370, 371, 372, 373, 374, 375, 0, 376, + 0, 377, 0, 0, 380, 0, 382, 383, 384, 385, + 386, 0, 0, 387, 388, 0, 390, 0, 0, 392, + 393, 394, 0, 0, 395, 396, 397, 398, 399, 400, + 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, + 411, 0, 413, 414, 415, 416, 417, 418, 419, 420, + 421, 422, 423, 0, 424, 425, 0, 427, 0, 428, + 429, 430, 431, 432, 433, 0, 434, 435, 0, 0, + 436, 437, 438, 0, 0, 439, 440, 441, 0, 443, + 0, 445, 446, 447, 448, 449, 450, 451, 452, 453, + 454, 0, 455, 456, 457, 458, 459, 460, 461, 462, + 0, 463, 464, 465, 466, 467, 468, 469, 470, 471, + 472, 473, 474, 475, 476, 477, 0, 478, 479, 480, + 481, 482, 483, 484, 485, 486, 487, 488, 489, 0, + 490, 491, 0, 493, 494, 495, 496, 497, 498, 499, + 500, 501, 502, 503, 504, 505, 506, 507, 0, 508, + 509, 510, 511, 512, 0, 513, 514, 515, 516, 517, + 0, 519, 520, 521, 522, 0, 523, 524, 525, 526, + 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, + 537, 0, 538, 539, 0, 540, 0, 542, 543, 544, + 545, 546, 0, 547, 548, 549, 0, 0, 550, 551, + 552, 553, 554, 0, 555, 556, 557, 558, 559, 560, + 561, 562, 0, 0, 563, 564, 565, 566, 567, 3106, + 0, 568, 569, 570, 571, 572, 573, 574, 0, 575, + 0, 577, 578, 579, 580, 0, 0, 581, 0, 0, + 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, + 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, + 609, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 229, + 230, 231, 232, 233, 234, 235, 236, 610, 237, 238, + 239, 0, 0, 0, 0, 0, 0, 0, 240, 241, + 0, 242, 243, 244, 0, 246, 247, 248, 249, 250, + 0, 252, 253, 0, 254, 255, 256, 257, 258, 259, + 0, 0, 260, 261, 262, 263, 264, 0, 265, 266, + 267, 268, 269, 0, 0, 0, 271, 272, 273, 274, + 275, 0, 277, 278, 279, 0, 280, 281, 282, 283, + 284, 285, 0, 0, 287, 288, 289, 0, 0, 0, + 0, 0, 0, 0, 291, 292, 293, 294, 295, 296, + 297, 298, 299, 0, 300, 0, 301, 302, 303, 304, + 305, 306, 0, 307, 308, 309, 310, 0, 0, 311, + 312, 313, 314, 315, 0, 316, 317, 318, 0, 319, + 320, 321, 0, 322, 323, 324, 325, 326, 327, 328, + 329, 330, 331, 0, 332, 0, 333, 334, 335, 336, + 0, 337, 0, 338, 0, 0, 0, 341, 342, 343, + 344, 0, 345, 346, 0, 347, 348, 349, 0, 350, + 351, 352, 353, 354, 0, 356, 357, 358, 359, 0, + 360, 361, 362, 363, 364, 365, 366, 0, 367, 0, + 369, 370, 371, 372, 373, 374, 375, 0, 376, 0, + 377, 0, 0, 380, 0, 382, 383, 384, 385, 386, + 0, 0, 387, 388, 0, 390, 0, 0, 392, 393, + 394, 0, 0, 395, 396, 397, 398, 399, 400, 401, + 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, + 0, 413, 414, 415, 416, 417, 418, 419, 420, 421, + 422, 423, 0, 424, 425, 0, 427, 0, 428, 429, + 430, 431, 432, 433, 0, 434, 435, 0, 0, 436, + 437, 438, 0, 0, 439, 440, 441, 0, 443, 0, + 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, + 0, 455, 456, 457, 458, 459, 460, 461, 462, 0, + 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, + 473, 474, 475, 476, 477, 0, 478, 479, 480, 481, + 482, 483, 484, 485, 486, 487, 488, 489, 0, 490, + 491, 0, 493, 494, 495, 496, 497, 498, 499, 500, + 501, 502, 503, 504, 505, 506, 507, 0, 508, 509, + 510, 511, 512, 0, 513, 514, 515, 516, 517, 0, + 519, 520, 521, 522, 0, 523, 524, 525, 526, 527, + 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, + 0, 538, 539, 0, 540, 0, 542, 543, 544, 545, + 546, 0, 547, 548, 549, 0, 0, 550, 551, 552, + 553, 554, 0, 555, 556, 557, 558, 559, 560, 561, + 562, 0, 0, 563, 564, 565, 566, 567, 0, 0, + 568, 569, 570, 571, 572, 573, 574, 0, 575, 0, + 577, 578, 579, 580, 0, 0, 581, 0, 0, 582, + 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, + 593, 594, 595, 596, 597, 598, 599, 600, 601, 609, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 229, 230, + 231, 232, 233, 234, 235, 236, 660, 237, 238, 239, + 0, 0, 0, 0, 0, 0, 0, 240, 241, 0, + 242, 243, 244, 0, 246, 247, 248, 249, 250, 0, + 252, 253, 0, 254, 255, 256, 257, 258, 259, 0, + 0, 260, 261, 262, 263, 264, 0, 265, 266, 267, + 268, 269, 0, 0, 0, 271, 272, 273, 274, 275, + 0, 277, 278, 279, 0, 280, 281, 282, 283, 284, + 285, 0, 0, 287, 288, 289, 0, 0, 0, 0, + 0, 0, 0, 291, 292, 293, 294, 295, 296, 297, + 298, 299, 0, 300, 0, 301, 302, 303, 304, 305, + 306, 0, 307, 308, 309, 310, 0, 0, 311, 312, + 313, 314, 315, 0, 316, 317, 318, 0, 319, 320, + 321, 0, 322, 323, 324, 325, 326, 327, 328, 329, + 330, 331, 0, 332, 0, 333, 334, 335, 336, 0, + 337, 0, 338, 0, 0, 0, 341, 342, 343, 344, + 0, 345, 346, 0, 347, 348, 349, 0, 350, 351, + 352, 353, 354, 0, 356, 357, 358, 359, 0, 360, + 361, 362, 363, 364, 365, 366, 0, 367, 0, 369, + 370, 371, 372, 373, 374, 375, 0, 376, 0, 377, + 0, 0, 380, 0, 382, 383, 384, 385, 386, 0, + 0, 387, 388, 0, 390, 0, 0, 392, 393, 394, + 0, 0, 395, 396, 397, 398, 399, 400, 401, 402, + 403, 404, 405, 406, 407, 408, 409, 410, 411, 0, + 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, + 423, 0, 424, 425, 0, 427, 0, 428, 429, 430, + 431, 432, 433, 0, 434, 435, 0, 0, 436, 437, + 438, 0, 0, 439, 440, 441, 0, 443, 0, 445, + 446, 447, 448, 449, 450, 451, 452, 453, 454, 0, + 455, 456, 457, 458, 459, 460, 661, 462, 0, 463, + 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, + 474, 475, 476, 477, 0, 478, 479, 480, 481, 482, + 483, 484, 485, 486, 487, 488, 489, 0, 490, 491, + 0, 493, 494, 495, 496, 497, 498, 499, 500, 501, + 502, 503, 504, 505, 506, 507, 0, 508, 509, 510, + 511, 512, 0, 513, 514, 515, 516, 517, 0, 519, + 520, 521, 522, 0, 523, 524, 525, 526, 527, 528, + 529, 530, 531, 532, 533, 534, 535, 536, 537, 0, + 538, 539, 0, 540, 0, 542, 543, 544, 545, 546, + 0, 547, 548, 549, 0, 0, 550, 551, 552, 553, + 554, 0, 555, 556, 557, 558, 559, 560, 561, 562, + 0, 0, 563, 564, 565, 566, 567, 0, 0, 568, + 569, 570, 571, 572, 573, 574, 0, 575, 0, 577, + 578, 579, 580, 0, 0, 581, 0, 0, 582, 583, + 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, + 594, 595, 596, 597, 598, 599, 600, 601, 609, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 229, 230, 231, + 232, 233, 234, 235, 236, 778, 237, 238, 239, 0, + 0, 0, 0, 0, 0, 0, 240, 241, 0, 242, + 243, 244, 0, 246, 247, 248, 249, 250, 0, 252, + 253, 0, 254, 255, 256, 257, 258, 259, 0, 0, + 260, 261, 262, 263, 264, 0, 265, 266, 267, 268, + 269, 0, 0, 0, 271, 272, 273, 274, 275, 0, + 277, 278, 279, 0, 280, 281, 282, 283, 284, 285, + 0, 0, 287, 288, 289, 0, 0, 0, 0, 0, + 0, 0, 291, 292, 293, 294, 295, 296, 297, 298, + 299, 0, 300, 0, 301, 302, 303, 304, 305, 306, + 0, 307, 308, 309, 310, 0, 0, 311, 312, 313, + 314, 315, 0, 316, 317, 318, 0, 319, 320, 321, + 0, 322, 323, 324, 325, 326, 327, 328, 329, 330, + 331, 0, 332, 0, 333, 334, 335, 336, 0, 337, + 0, 338, 0, 0, 0, 341, 342, 343, 344, 0, + 345, 346, 0, 347, 348, 349, 0, 350, 351, 352, + 353, 354, 0, 356, 357, 358, 359, 0, 360, 361, + 362, 363, 364, 365, 366, 0, 367, 0, 369, 370, + 371, 372, 373, 374, 375, 0, 376, 0, 377, 0, + 0, 380, 0, 382, 383, 384, 385, 386, 0, 0, + 387, 388, 0, 390, 0, 0, 392, 393, 394, 0, + 0, 395, 396, 397, 398, 399, 400, 401, 402, 403, + 404, 405, 406, 407, 408, 409, 410, 411, 0, 413, + 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, + 0, 424, 425, 0, 427, 0, 428, 429, 430, 431, + 432, 433, 0, 434, 435, 0, 0, 436, 437, 438, + 0, 0, 439, 440, 441, 0, 443, 0, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 0, 455, - 456, 0, 457, 458, 459, 460, 461, 462, 463, 464, - 465, 466, 467, 468, 469, 0, 470, 471, 472, 473, - 474, 0, 475, 476, 477, 478, 479, 0, 480, 481, - 482, 483, 0, 484, 485, 486, 487, 488, 489, 490, - 491, 492, 493, 494, 495, 496, 0, 497, 498, 0, - 499, 0, 500, 501, 502, 503, 504, 0, 505, 506, - 0, 0, 507, 508, 509, 510, 511, 0, 512, 513, - 514, 515, 516, 517, 518, 0, 0, 519, 520, 521, - 522, 523, 0, 0, 524, 525, 526, 527, 528, 529, - 530, 0, 531, 0, 532, 533, 534, 535, 0, 0, - 536, 0, 0, 537, 538, 539, 540, 541, 542, 543, - 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, - 554, 555, 556, 223, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 224, 225, - 226, 227, 228, 229, 230, 231, 0, 233, 234, 235, - 0, 0, 0, 0, 0, 0, 0, 236, 237, 0, - 238, 239, 240, 0, 241, 242, 243, 244, 245, 0, - 246, 247, 0, 248, 249, 250, 251, 252, 0, 0, - 253, 254, 255, 256, 257, 0, 258, 259, 260, 261, - 262, 0, 0, 0, 263, 264, 265, 266, 267, 0, - 268, 269, 270, 0, 271, 272, 273, 274, 275, 276, - 0, 0, 277, 278, 279, 0, 0, 0, 0, 0, - 0, 0, 280, 281, 282, 283, 284, 285, 286, 287, - 288, 0, 289, 0, 290, 291, 292, 293, 294, 295, - 0, 296, 297, 298, 299, 0, 0, 300, 301, 302, - 303, 304, 0, 305, 306, 307, 0, 308, 309, 310, - 0, 311, 312, 313, 314, 315, 316, 317, 318, 319, - 0, 320, 0, 321, 322, 323, 324, 0, 325, 0, - 326, 0, 0, 0, 327, 328, 329, 330, 0, 331, - 332, 0, 333, 334, 0, 335, 336, 337, 338, 3095, - 0, 340, 341, 342, 343, 0, 344, 345, 346, 347, - 348, 349, 0, 350, 0, 351, 352, 353, 354, 355, - 356, 357, 0, 358, 0, 359, 0, 0, 360, 0, - 361, 362, 363, 364, 365, 0, 0, 366, 367, 0, - 368, 0, 0, 369, 370, 371, 0, 0, 372, 373, - 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, - 384, 385, 386, 387, 388, 0, 389, 390, 391, 392, - 393, 0, 394, 395, 0, 396, 0, 397, 398, 399, - 400, 401, 402, 0, 403, 404, 0, 0, 405, 406, - 407, 0, 0, 408, 409, 0, 410, 0, 411, 412, - 413, 414, 415, 416, 417, 418, 419, 420, 0, 421, - 422, 423, 424, 425, 426, 427, 428, 0, 429, 430, - 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, - 441, 442, 0, 443, 444, 445, 446, 447, 448, 449, - 450, 451, 452, 453, 454, 0, 455, 456, 0, 457, - 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, - 468, 469, 0, 470, 471, 472, 473, 474, 0, 475, - 476, 477, 478, 479, 0, 480, 481, 482, 483, 0, - 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, - 494, 495, 496, 0, 497, 498, 0, 499, 0, 500, - 501, 502, 503, 504, 0, 505, 506, 0, 0, 507, - 508, 509, 510, 511, 0, 512, 513, 514, 515, 516, - 517, 518, 0, 0, 519, 520, 521, 522, 523, 0, - 0, 524, 525, 526, 527, 528, 529, 530, 0, 531, - 0, 532, 533, 534, 535, 0, 0, 536, 0, 0, - 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, - 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, - 223, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 224, 225, 226, 227, 228, - 229, 230, 231, 0, 233, 234, 235, 0, 0, 0, - 0, 0, 0, 0, 236, 237, 0, 238, 239, 240, - 0, 241, 242, 243, 244, 245, 0, 246, 247, 0, - 248, 249, 250, 251, 252, 0, 0, 253, 254, 255, - 256, 257, 0, 258, 259, 260, 261, 262, 0, 0, - 0, 263, 264, 265, 266, 267, 0, 268, 269, 270, - 0, 271, 272, 273, 274, 275, 276, 0, 0, 277, - 278, 279, 0, 0, 0, 0, 0, 0, 0, 280, - 281, 282, 283, 284, 285, 286, 287, 288, 0, 289, - 0, 290, 291, 292, 293, 294, 295, 0, 296, 297, - 298, 299, 0, 0, 300, 3120, 302, 303, 304, 0, - 305, 306, 307, 0, 308, 309, 310, 0, 311, 312, - 313, 314, 315, 316, 317, 318, 319, 0, 320, 0, - 321, 322, 323, 324, 0, 325, 0, 326, 0, 0, - 0, 327, 328, 329, 330, 0, 331, 332, 0, 333, - 334, 0, 335, 336, 337, 338, 339, 0, 340, 341, - 342, 343, 0, 344, 345, 346, 347, 348, 349, 0, - 350, 0, 351, 352, 353, 354, 355, 356, 357, 0, - 358, 0, 359, 0, 0, 360, 0, 361, 362, 363, - 364, 365, 0, 0, 366, 367, 0, 368, 0, 0, - 369, 370, 371, 0, 0, 372, 373, 374, 375, 376, - 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, - 387, 388, 0, 389, 390, 391, 392, 393, 0, 394, - 395, 0, 396, 0, 397, 398, 399, 400, 401, 402, - 0, 403, 404, 0, 0, 405, 406, 407, 0, 0, - 408, 409, 0, 410, 0, 411, 412, 413, 414, 415, - 416, 417, 418, 419, 420, 0, 421, 422, 423, 424, - 425, 426, 427, 428, 0, 429, 430, 431, 432, 433, - 434, 435, 436, 437, 438, 439, 440, 441, 442, 0, - 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, - 453, 454, 0, 455, 456, 0, 457, 458, 459, 460, - 461, 462, 463, 464, 465, 466, 467, 468, 469, 0, - 470, 471, 472, 473, 474, 0, 475, 476, 477, 478, - 479, 0, 480, 481, 482, 483, 0, 484, 485, 486, - 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, - 0, 497, 498, 0, 499, 0, 500, 501, 502, 503, - 504, 0, 505, 506, 0, 0, 507, 508, 509, 510, - 511, 0, 512, 513, 514, 515, 516, 517, 518, 0, - 0, 519, 520, 521, 522, 523, 0, 0, 524, 525, - 526, 527, 528, 529, 530, 0, 531, 0, 532, 533, - 534, 535, 0, 0, 536, 0, 0, 537, 538, 539, - 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, - 550, 551, 552, 553, 554, 555, 556, 223, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 224, 225, 226, 227, 228, 229, 230, 231, - 0, 233, 234, 235, 0, 0, 0, 0, 0, 0, - 0, 236, 237, 0, 238, 239, 240, 0, 241, 242, - 243, 244, 245, 0, 246, 247, 0, 248, 249, 250, - 251, 252, 0, 0, 253, 254, 255, 256, 257, 0, - 258, 259, 260, 261, 262, 0, 0, 0, 263, 264, - 265, 266, 267, 0, 268, 269, 270, 0, 271, 272, - 273, 274, 275, 276, 0, 0, 277, 278, 279, 0, - 0, 0, 0, 0, 0, 0, 280, 281, 282, 283, - 284, 285, 286, 287, 288, 0, 289, 0, 290, 291, - 292, 293, 294, 295, 0, 296, 297, 298, 299, 0, - 0, 300, 301, 302, 303, 304, 0, 305, 306, 307, - 0, 308, 309, 310, 0, 311, 312, 313, 314, 315, - 316, 317, 318, 319, 0, 320, 0, 321, 322, 323, - 324, 0, 325, 0, 326, 0, 0, 0, 327, 328, - 329, 330, 0, 331, 332, 0, 333, 334, 0, 335, - 336, 337, 338, 4276, 0, 340, 341, 342, 343, 0, - 344, 345, 346, 347, 348, 349, 0, 350, 0, 351, - 352, 353, 354, 355, 356, 357, 0, 358, 0, 359, - 0, 0, 360, 0, 361, 362, 363, 364, 365, 0, - 0, 366, 367, 0, 368, 0, 0, 369, 370, 371, - 0, 0, 372, 373, 374, 375, 376, 377, 378, 379, - 380, 381, 382, 383, 384, 385, 386, 387, 388, 0, - 389, 390, 391, 392, 393, 0, 394, 395, 0, 396, - 0, 397, 398, 399, 400, 401, 402, 0, 403, 404, - 0, 0, 405, 406, 407, 0, 0, 408, 409, 0, - 410, 0, 411, 412, 413, 414, 415, 416, 417, 418, - 419, 420, 0, 421, 422, 423, 424, 425, 426, 427, - 428, 0, 429, 430, 431, 432, 433, 434, 435, 436, - 437, 438, 439, 440, 441, 442, 0, 443, 444, 445, + 456, 457, 458, 459, 460, 461, 462, 0, 463, 464, + 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, + 475, 476, 477, 0, 478, 479, 480, 481, 482, 483, + 484, 485, 486, 487, 488, 489, 0, 490, 491, 0, + 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, + 503, 504, 505, 506, 507, 0, 508, 509, 510, 511, + 779, 0, 513, 514, 515, 516, 517, 0, 519, 520, + 521, 522, 0, 523, 524, 525, 526, 527, 528, 529, + 530, 531, 532, 533, 534, 535, 536, 537, 0, 538, + 539, 0, 540, 0, 542, 543, 544, 545, 546, 0, + 547, 780, 549, 0, 0, 781, 551, 552, 553, 554, + 0, 555, 556, 557, 558, 559, 560, 561, 562, 0, + 0, 563, 564, 565, 566, 567, 0, 0, 568, 569, + 570, 571, 572, 573, 574, 0, 575, 0, 577, 578, + 579, 580, 0, 0, 581, 0, 0, 582, 583, 584, + 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, + 595, 596, 597, 598, 599, 600, 601, 609, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 229, 230, 231, 232, + 233, 234, 235, 236, 812, 237, 238, 239, 0, 0, + 0, 0, 0, 0, 0, 240, 241, 0, 242, 243, + 244, 0, 246, 247, 248, 249, 250, 0, 252, 253, + 0, 254, 255, 256, 257, 258, 259, 0, 0, 260, + 261, 262, 263, 264, 0, 265, 266, 267, 268, 269, + 0, 0, 0, 271, 272, 273, 274, 275, 0, 277, + 278, 279, 0, 280, 281, 282, 283, 284, 285, 0, + 0, 287, 288, 289, 0, 0, 0, 0, 0, 0, + 0, 291, 292, 293, 294, 295, 296, 297, 298, 299, + 0, 300, 0, 301, 302, 303, 304, 305, 306, 0, + 307, 308, 309, 310, 0, 0, 311, 312, 313, 314, + 315, 0, 316, 317, 318, 0, 319, 320, 321, 0, + 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, + 0, 332, 0, 333, 334, 335, 336, 0, 337, 0, + 338, 0, 0, 0, 341, 342, 343, 344, 0, 345, + 346, 0, 347, 348, 349, 0, 350, 351, 352, 353, + 354, 0, 356, 357, 358, 359, 0, 360, 361, 362, + 363, 364, 365, 366, 0, 367, 0, 369, 370, 371, + 372, 373, 374, 375, 0, 376, 0, 377, 0, 0, + 380, 0, 382, 383, 384, 385, 386, 0, 0, 387, + 388, 0, 390, 0, 0, 392, 393, 394, 0, 0, + 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, + 405, 406, 407, 408, 409, 410, 411, 0, 413, 414, + 415, 416, 417, 418, 419, 420, 421, 422, 423, 0, + 424, 425, 0, 427, 0, 428, 429, 430, 431, 432, + 433, 0, 434, 435, 0, 0, 436, 437, 438, 0, + 0, 439, 440, 441, 0, 443, 0, 445, 446, 447, + 448, 449, 450, 451, 452, 453, 454, 0, 455, 456, + 457, 458, 459, 460, 461, 462, 0, 463, 464, 465, + 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, + 476, 477, 0, 478, 479, 480, 481, 482, 483, 484, + 485, 486, 487, 488, 489, 0, 490, 491, 0, 493, + 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, + 504, 505, 506, 507, 0, 508, 509, 510, 511, 813, + 0, 513, 514, 515, 516, 517, 0, 519, 520, 521, + 522, 0, 523, 524, 525, 526, 527, 528, 529, 530, + 531, 532, 533, 534, 535, 536, 537, 0, 538, 539, + 0, 540, 0, 542, 543, 544, 545, 546, 0, 547, + 814, 549, 0, 0, 815, 551, 552, 553, 554, 0, + 555, 556, 557, 558, 559, 560, 561, 562, 0, 0, + 563, 564, 565, 566, 567, 0, 0, 568, 569, 570, + 571, 572, 573, 574, 0, 575, 0, 577, 578, 579, + 580, 0, 0, 581, 0, 0, 582, 583, 584, 585, + 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, + 596, 597, 598, 599, 600, 601, 609, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 229, 230, 231, 232, 233, + 234, 235, 236, 0, 237, 238, 239, 0, 0, 0, + 0, 0, 0, 0, 240, 241, 0, 242, 243, 244, + 0, 246, 247, 248, 249, 250, 0, 252, 253, 0, + 254, 255, 256, 257, 258, 259, 0, 0, 260, 261, + 262, 263, 264, 0, 265, 266, 267, 268, 269, 0, + 0, 0, 271, 272, 273, 274, 275, 0, 277, 278, + 279, 0, 280, 281, 282, 283, 284, 285, 0, 0, + 287, 288, 289, 0, 0, 0, 0, 0, 0, 0, + 291, 292, 293, 294, 295, 296, 297, 298, 299, 0, + 300, 0, 301, 302, 303, 304, 305, 306, 0, 307, + 308, 309, 310, 0, 0, 311, 312, 313, 314, 315, + 0, 316, 317, 318, 0, 319, 320, 321, 0, 322, + 323, 324, 325, 326, 327, 328, 329, 330, 331, 0, + 332, 0, 333, 334, 335, 336, 0, 337, 0, 338, + 0, 0, 0, 341, 342, 343, 344, 0, 345, 346, + 0, 347, 348, 349, 0, 350, 351, 352, 353, 354, + 0, 356, 357, 358, 359, 0, 360, 361, 362, 363, + 364, 365, 366, 0, 367, 0, 369, 370, 371, 372, + 373, 374, 375, 0, 376, 0, 377, 0, 0, 380, + 0, 382, 383, 384, 385, 386, 0, 0, 387, 388, + 0, 390, 0, 0, 392, 393, 394, 0, 0, 395, + 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, + 406, 407, 408, 409, 410, 411, 0, 413, 414, 415, + 416, 417, 418, 419, 420, 421, 422, 423, 0, 424, + 425, 0, 427, 0, 428, 429, 430, 431, 432, 433, + 0, 434, 435, 0, 818, 436, 437, 438, 0, 0, + 439, 440, 441, 0, 443, 0, 445, 446, 447, 448, + 449, 450, 451, 452, 453, 454, 0, 455, 456, 457, + 458, 459, 460, 461, 462, 0, 463, 464, 465, 466, + 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, + 477, 0, 478, 479, 480, 481, 482, 483, 484, 485, + 486, 487, 488, 489, 0, 490, 491, 0, 493, 494, + 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, + 505, 506, 507, 0, 508, 509, 510, 511, 512, 0, + 513, 514, 515, 516, 517, 0, 519, 520, 521, 522, + 0, 523, 524, 525, 526, 527, 528, 529, 530, 531, + 532, 533, 534, 535, 536, 537, 0, 538, 539, 0, + 540, 0, 542, 543, 544, 545, 546, 0, 547, 548, + 549, 0, 0, 550, 551, 552, 553, 554, 0, 555, + 556, 557, 558, 559, 560, 561, 562, 0, 0, 563, + 564, 565, 566, 567, 0, 0, 568, 569, 570, 571, + 572, 573, 574, 0, 575, 0, 577, 578, 579, 580, + 0, 0, 581, 0, 0, 582, 583, 584, 585, 586, + 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, + 597, 598, 599, 600, 601, 609, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 229, 230, 231, 232, 233, 234, + 235, 236, 882, 237, 238, 239, 0, 0, 0, 0, + 0, 0, 0, 240, 241, 0, 242, 243, 244, 0, + 246, 247, 248, 249, 250, 0, 252, 253, 0, 254, + 255, 256, 257, 258, 259, 0, 0, 260, 261, 262, + 263, 264, 0, 265, 266, 267, 268, 269, 0, 0, + 0, 271, 272, 273, 274, 275, 0, 277, 278, 279, + 0, 280, 281, 282, 283, 284, 285, 0, 0, 287, + 288, 289, 0, 0, 0, 0, 0, 0, 0, 291, + 292, 293, 294, 295, 296, 297, 298, 299, 0, 300, + 0, 301, 302, 303, 304, 305, 306, 0, 307, 308, + 309, 310, 0, 0, 311, 312, 313, 314, 315, 0, + 316, 317, 318, 0, 319, 320, 321, 0, 322, 323, + 324, 325, 326, 327, 328, 329, 330, 331, 0, 332, + 0, 333, 334, 335, 336, 0, 337, 0, 338, 0, + 0, 0, 341, 342, 343, 344, 0, 345, 346, 0, + 347, 348, 349, 0, 350, 351, 352, 353, 883, 0, + 356, 357, 358, 359, 0, 360, 361, 362, 363, 364, + 365, 366, 0, 367, 0, 369, 370, 371, 372, 373, + 374, 375, 0, 376, 0, 377, 0, 0, 380, 0, + 382, 383, 384, 385, 386, 0, 0, 387, 388, 0, + 390, 0, 0, 392, 393, 394, 0, 0, 395, 396, + 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, + 407, 408, 409, 410, 411, 0, 413, 414, 415, 416, + 417, 418, 419, 420, 421, 422, 423, 0, 424, 425, + 0, 427, 0, 428, 429, 430, 431, 432, 433, 0, + 434, 435, 0, 0, 436, 437, 438, 0, 0, 439, + 440, 441, 0, 443, 0, 445, 446, 447, 448, 449, + 450, 451, 452, 453, 454, 0, 455, 456, 457, 458, + 459, 460, 461, 462, 0, 463, 464, 465, 466, 467, + 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, + 0, 478, 479, 480, 481, 482, 483, 484, 485, 486, + 487, 488, 489, 0, 490, 491, 0, 493, 494, 495, + 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, + 506, 507, 0, 508, 509, 510, 511, 512, 0, 513, + 514, 515, 516, 517, 0, 519, 520, 521, 522, 0, + 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, + 533, 534, 535, 536, 537, 0, 538, 539, 0, 540, + 0, 542, 543, 544, 545, 546, 0, 547, 548, 549, + 0, 0, 550, 551, 552, 553, 554, 0, 555, 556, + 557, 558, 559, 560, 561, 562, 0, 0, 563, 564, + 565, 566, 567, 0, 0, 568, 569, 570, 571, 572, + 573, 574, 0, 575, 0, 577, 578, 579, 580, 0, + 0, 581, 0, 0, 582, 583, 584, 585, 586, 587, + 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, + 598, 599, 600, 601, 609, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 229, 230, 231, 232, 233, 234, 235, + 236, 1055, 237, 238, 239, 0, 0, 0, 0, 0, + 0, 0, 240, 241, 0, 242, 243, 244, 0, 246, + 247, 248, 249, 250, 0, 252, 253, 0, 254, 255, + 256, 257, 258, 259, 0, 0, 260, 261, 262, 263, + 264, 0, 265, 266, 267, 268, 269, 0, 0, 0, + 271, 272, 273, 274, 275, 0, 277, 278, 279, 0, + 280, 281, 282, 283, 284, 285, 0, 0, 287, 288, + 289, 0, 0, 0, 0, 0, 0, 0, 291, 292, + 293, 294, 295, 296, 297, 298, 299, 0, 300, 0, + 301, 302, 303, 304, 305, 306, 0, 307, 308, 309, + 310, 0, 0, 311, 312, 313, 314, 315, 0, 316, + 317, 318, 0, 319, 320, 321, 0, 322, 323, 324, + 325, 326, 327, 328, 329, 330, 331, 0, 332, 0, + 333, 334, 335, 336, 0, 337, 0, 338, 0, 0, + 0, 341, 342, 343, 344, 0, 345, 346, 0, 347, + 348, 349, 0, 350, 351, 352, 353, 354, 0, 356, + 357, 358, 359, 0, 360, 361, 362, 363, 364, 365, + 366, 0, 367, 0, 369, 370, 371, 372, 373, 374, + 375, 0, 376, 0, 377, 0, 0, 380, 0, 382, + 383, 384, 385, 386, 0, 0, 387, 388, 0, 390, + 0, 0, 392, 393, 394, 0, 0, 395, 396, 397, + 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, + 408, 409, 410, 411, 0, 413, 414, 415, 416, 417, + 418, 419, 420, 421, 422, 423, 0, 424, 425, 0, + 427, 0, 428, 429, 430, 431, 432, 433, 0, 434, + 435, 0, 0, 436, 437, 438, 0, 0, 439, 440, + 441, 0, 443, 0, 445, 446, 447, 448, 449, 450, + 451, 452, 453, 454, 0, 455, 456, 457, 458, 459, + 460, 461, 462, 0, 463, 464, 465, 466, 467, 468, + 469, 470, 471, 472, 473, 474, 475, 476, 477, 0, + 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, + 488, 489, 0, 490, 491, 0, 493, 494, 495, 496, + 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, + 507, 0, 508, 509, 510, 511, 512, 0, 513, 514, + 515, 516, 517, 0, 519, 520, 521, 522, 0, 523, + 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, + 534, 535, 536, 537, 0, 538, 539, 0, 540, 0, + 542, 543, 544, 545, 546, 0, 547, 548, 549, 0, + 0, 550, 551, 552, 553, 554, 0, 555, 556, 557, + 558, 559, 560, 561, 562, 0, 0, 563, 564, 565, + 566, 567, 0, 0, 568, 569, 570, 571, 572, 573, + 574, 0, 575, 0, 577, 578, 579, 580, 0, 0, + 581, 0, 0, 582, 583, 584, 585, 586, 587, 588, + 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, + 599, 600, 601, 609, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 229, 230, 231, 232, 233, 234, 235, 236, + 1329, 237, 238, 239, 0, 0, 0, 0, 0, 0, + 0, 240, 241, 0, 242, 243, 244, 0, 246, 247, + 248, 249, 250, 0, 252, 253, 0, 254, 255, 256, + 257, 258, 259, 0, 0, 260, 261, 262, 263, 264, + 0, 265, 266, 267, 268, 269, 0, 0, 0, 271, + 272, 273, 274, 275, 0, 277, 278, 279, 0, 280, + 281, 282, 283, 284, 285, 0, 0, 287, 288, 289, + 0, 0, 0, 0, 0, 0, 0, 291, 292, 293, + 294, 295, 296, 297, 298, 299, 0, 300, 0, 301, + 302, 303, 304, 305, 306, 0, 307, 308, 309, 310, + 0, 0, 311, 312, 313, 314, 315, 0, 316, 317, + 318, 0, 319, 320, 321, 0, 322, 323, 324, 325, + 326, 327, 328, 329, 330, 331, 0, 332, 0, 333, + 334, 335, 336, 0, 337, 0, 338, 0, 0, 0, + 341, 342, 343, 344, 0, 345, 346, 0, 347, 348, + 349, 0, 350, 351, 352, 353, 354, 0, 356, 357, + 358, 359, 0, 360, 361, 362, 363, 364, 365, 366, + 0, 367, 0, 369, 370, 371, 372, 373, 374, 375, + 0, 376, 0, 377, 0, 0, 380, 0, 382, 383, + 384, 385, 386, 0, 0, 387, 388, 0, 390, 0, + 0, 392, 393, 394, 0, 0, 395, 396, 397, 398, + 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, + 409, 410, 411, 0, 413, 414, 415, 416, 417, 418, + 419, 420, 421, 422, 423, 0, 424, 425, 0, 427, + 0, 428, 429, 430, 431, 432, 433, 0, 434, 435, + 0, 0, 436, 437, 438, 0, 0, 439, 440, 441, + 0, 443, 0, 445, 446, 447, 448, 449, 450, 451, + 452, 453, 454, 0, 455, 456, 457, 458, 459, 460, + 461, 462, 0, 463, 464, 465, 466, 467, 468, 469, + 470, 471, 472, 473, 474, 475, 476, 477, 0, 478, + 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, + 489, 0, 490, 491, 0, 493, 494, 495, 496, 497, + 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, + 0, 508, 509, 510, 511, 512, 0, 513, 514, 515, + 516, 517, 0, 519, 520, 521, 522, 0, 523, 524, + 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, + 535, 536, 537, 0, 538, 539, 0, 540, 0, 542, + 543, 544, 545, 546, 0, 547, 548, 549, 0, 0, + 550, 551, 552, 553, 554, 0, 555, 556, 557, 558, + 559, 560, 561, 562, 0, 0, 563, 564, 565, 566, + 567, 0, 0, 568, 569, 570, 571, 572, 573, 574, + 0, 575, 0, 577, 578, 579, 580, 0, 0, 581, + 0, 0, 582, 583, 584, 585, 586, 587, 588, 589, + 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, + 600, 601, 609, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 229, 230, 231, 232, 233, 234, 235, 236, 0, + 237, 238, 239, 0, 0, 0, 0, 0, 0, 0, + 240, 241, 0, 242, 243, 244, 1344, 246, 247, 248, + 249, 250, 0, 252, 253, 0, 254, 255, 256, 257, + 258, 259, 0, 0, 798, 261, 262, 263, 1345, 0, + 265, 266, 267, 268, 269, 0, 0, 0, 271, 272, + 273, 274, 275, 0, 277, 278, 279, 0, 280, 281, + 282, 283, 284, 285, 0, 0, 287, 288, 289, 0, + 0, 0, 0, 0, 0, 0, 291, 292, 293, 294, + 295, 296, 297, 298, 299, 0, 300, 0, 301, 302, + 303, 304, 305, 306, 0, 307, 308, 309, 310, 0, + 0, 311, 312, 313, 314, 315, 0, 316, 317, 318, + 0, 319, 320, 321, 0, 322, 323, 324, 325, 326, + 327, 328, 329, 330, 331, 0, 332, 0, 333, 334, + 335, 336, 0, 337, 0, 338, 0, 0, 0, 341, + 342, 343, 344, 0, 345, 346, 0, 347, 348, 349, + 0, 350, 351, 352, 353, 354, 0, 356, 357, 358, + 359, 0, 360, 361, 362, 363, 364, 365, 366, 0, + 367, 0, 369, 370, 371, 372, 373, 374, 375, 0, + 376, 0, 377, 0, 0, 380, 0, 382, 383, 384, + 385, 386, 0, 0, 387, 388, 0, 390, 0, 0, + 392, 393, 394, 0, 0, 395, 396, 397, 398, 399, + 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, + 801, 411, 0, 413, 414, 415, 416, 417, 418, 419, + 420, 421, 422, 423, 0, 424, 425, 0, 427, 0, + 428, 429, 430, 431, 432, 433, 0, 434, 435, 0, + 0, 436, 437, 438, 0, 0, 439, 440, 441, 0, + 443, 0, 445, 446, 447, 448, 449, 450, 451, 452, + 453, 454, 0, 455, 456, 457, 458, 459, 460, 461, + 462, 0, 463, 464, 465, 466, 467, 468, 469, 470, + 471, 472, 473, 474, 475, 476, 477, 0, 478, 479, + 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, + 0, 490, 491, 0, 802, 494, 495, 496, 497, 498, + 499, 500, 501, 803, 503, 504, 505, 506, 507, 0, + 508, 509, 510, 511, 1333, 0, 513, 514, 515, 516, + 517, 0, 519, 520, 521, 522, 0, 523, 524, 525, + 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, + 536, 537, 0, 538, 539, 0, 540, 0, 542, 543, + 544, 545, 546, 0, 547, 805, 549, 0, 0, 806, + 551, 552, 553, 554, 0, 555, 556, 557, 558, 559, + 560, 561, 562, 0, 0, 563, 564, 565, 566, 567, + 0, 0, 568, 569, 570, 571, 572, 573, 574, 0, + 575, 0, 577, 578, 579, 580, 0, 0, 581, 0, + 0, 582, 583, 584, 585, 586, 807, 588, 589, 590, + 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, + 601, 609, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 229, 230, 231, 232, 233, 234, 235, 236, 0, 237, + 238, 239, 0, 0, 0, 0, 0, 0, 0, 240, + 241, 0, 242, 243, 244, 0, 246, 247, 248, 249, + 250, 0, 252, 253, 0, 254, 255, 256, 257, 258, + 259, 0, 0, 260, 261, 262, 263, 264, 0, 265, + 266, 267, 268, 269, 0, 0, 0, 271, 272, 273, + 274, 275, 0, 277, 278, 279, 0, 280, 281, 282, + 283, 284, 285, 0, 0, 287, 288, 289, 0, 0, + 0, 0, 0, 0, 0, 291, 292, 293, 294, 295, + 296, 297, 298, 299, 0, 300, 0, 301, 302, 303, + 304, 305, 306, 0, 307, 308, 309, 310, 0, 0, + 311, 312, 313, 314, 315, 0, 316, 317, 318, 0, + 319, 320, 321, 0, 322, 323, 324, 325, 326, 327, + 328, 329, 330, 331, 0, 332, 0, 333, 334, 335, + 336, 0, 337, 0, 338, 0, 0, 0, 341, 342, + 343, 344, 0, 345, 346, 0, 347, 348, 349, 0, + 350, 351, 352, 353, 1455, 0, 356, 357, 358, 359, + 0, 360, 361, 362, 363, 364, 365, 366, 0, 367, + 0, 369, 370, 371, 372, 373, 374, 375, 0, 376, + 0, 377, 0, 0, 380, 0, 382, 383, 384, 385, + 386, 0, 0, 387, 388, 0, 390, 0, 0, 392, + 393, 394, 0, 0, 395, 396, 397, 398, 399, 400, + 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, + 411, 0, 413, 414, 415, 416, 417, 418, 419, 420, + 421, 422, 423, 0, 424, 425, 0, 427, 0, 428, + 429, 430, 431, 432, 433, 0, 434, 435, 0, 818, + 436, 437, 438, 0, 0, 439, 440, 441, 0, 443, + 0, 445, 446, 447, 448, 449, 450, 451, 452, 453, + 454, 0, 455, 456, 457, 458, 459, 460, 461, 462, + 0, 463, 464, 465, 466, 467, 468, 469, 470, 471, + 472, 473, 474, 475, 476, 477, 0, 478, 479, 480, + 481, 482, 483, 484, 485, 486, 487, 488, 489, 0, + 490, 491, 0, 493, 494, 495, 496, 497, 498, 499, + 500, 501, 502, 503, 504, 505, 506, 507, 0, 508, + 509, 510, 511, 512, 0, 513, 514, 515, 516, 517, + 0, 519, 520, 521, 522, 0, 523, 524, 525, 526, + 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, + 537, 0, 538, 539, 0, 540, 0, 542, 543, 544, + 545, 546, 0, 547, 548, 549, 0, 0, 550, 551, + 552, 553, 554, 0, 555, 556, 557, 558, 559, 560, + 561, 562, 0, 0, 563, 564, 565, 566, 567, 0, + 0, 568, 569, 570, 571, 572, 573, 574, 0, 575, + 0, 577, 578, 579, 580, 0, 0, 581, 0, 0, + 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, + 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, + 609, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 229, + 230, 231, 232, 233, 234, 235, 236, 1516, 237, 238, + 239, 0, 0, 0, 0, 0, 0, 0, 240, 241, + 0, 242, 243, 244, 0, 246, 247, 248, 249, 250, + 0, 252, 253, 0, 254, 255, 256, 257, 258, 259, + 0, 0, 260, 261, 262, 263, 264, 0, 265, 266, + 267, 268, 269, 0, 0, 0, 271, 272, 273, 274, + 275, 0, 277, 278, 279, 0, 280, 281, 282, 283, + 284, 285, 0, 0, 287, 288, 289, 0, 0, 0, + 0, 0, 0, 0, 291, 292, 293, 294, 295, 296, + 297, 298, 299, 0, 300, 0, 301, 302, 303, 304, + 305, 306, 0, 307, 308, 309, 310, 0, 0, 311, + 312, 313, 314, 315, 0, 316, 317, 318, 0, 319, + 320, 321, 0, 322, 323, 324, 325, 326, 327, 328, + 329, 330, 331, 0, 332, 0, 333, 334, 335, 336, + 0, 337, 0, 338, 0, 0, 0, 341, 342, 343, + 344, 0, 345, 346, 0, 347, 348, 349, 0, 350, + 351, 352, 353, 1517, 0, 356, 357, 358, 359, 0, + 360, 361, 362, 363, 364, 365, 366, 0, 367, 0, + 369, 370, 371, 372, 373, 374, 375, 0, 376, 0, + 377, 0, 0, 380, 0, 382, 383, 384, 385, 386, + 0, 0, 387, 388, 0, 390, 0, 0, 392, 393, + 394, 0, 0, 395, 396, 397, 398, 399, 400, 401, + 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, + 0, 413, 414, 415, 416, 417, 418, 419, 420, 421, + 422, 423, 0, 424, 425, 0, 427, 0, 428, 429, + 430, 431, 432, 433, 0, 434, 435, 0, 0, 436, + 437, 438, 0, 0, 439, 440, 441, 0, 443, 0, + 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, + 0, 455, 456, 457, 458, 459, 460, 461, 462, 0, + 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, + 473, 474, 475, 476, 477, 0, 478, 479, 480, 481, + 482, 483, 484, 485, 486, 487, 488, 489, 0, 490, + 491, 0, 493, 494, 495, 496, 497, 498, 499, 500, + 501, 502, 503, 504, 505, 506, 507, 0, 508, 509, + 510, 511, 512, 0, 513, 514, 515, 516, 517, 0, + 519, 520, 521, 522, 0, 523, 524, 525, 526, 527, + 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, + 0, 538, 539, 0, 540, 0, 542, 543, 544, 545, + 546, 0, 547, 548, 549, 0, 0, 550, 551, 552, + 553, 554, 0, 555, 556, 557, 558, 559, 560, 561, + 562, 0, 0, 563, 564, 565, 566, 567, 0, 0, + 568, 569, 570, 571, 572, 573, 574, 0, 575, 0, + 577, 578, 579, 580, 0, 0, 581, 0, 0, 582, + 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, + 593, 594, 595, 596, 597, 598, 599, 600, 601, 609, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 229, 230, + 231, 232, 233, 234, 235, 236, 778, 237, 238, 239, + 0, 0, 0, 0, 0, 0, 0, 240, 241, 0, + 242, 243, 244, 0, 246, 247, 248, 249, 250, 0, + 252, 253, 0, 254, 255, 256, 257, 258, 259, 0, + 0, 260, 261, 262, 263, 264, 0, 265, 266, 267, + 268, 269, 0, 0, 0, 271, 272, 273, 274, 275, + 0, 277, 278, 279, 0, 280, 281, 282, 283, 284, + 285, 0, 0, 287, 288, 289, 0, 0, 0, 0, + 0, 0, 0, 291, 292, 293, 294, 295, 296, 297, + 298, 299, 0, 300, 0, 301, 302, 303, 304, 305, + 306, 0, 307, 308, 309, 310, 0, 0, 311, 312, + 313, 314, 315, 0, 316, 317, 318, 0, 319, 320, + 321, 0, 322, 323, 324, 325, 326, 327, 328, 329, + 330, 331, 0, 332, 0, 333, 334, 335, 336, 0, + 337, 0, 338, 0, 0, 0, 341, 342, 343, 344, + 0, 345, 346, 0, 347, 348, 349, 0, 350, 351, + 352, 353, 354, 0, 356, 357, 358, 359, 0, 360, + 361, 362, 363, 364, 365, 366, 0, 367, 0, 369, + 370, 371, 372, 373, 374, 375, 0, 376, 0, 377, + 0, 0, 380, 0, 382, 383, 384, 385, 386, 0, + 0, 387, 388, 0, 390, 0, 0, 392, 393, 394, + 0, 0, 395, 396, 397, 398, 399, 400, 401, 402, + 403, 404, 405, 406, 407, 408, 409, 410, 411, 0, + 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, + 423, 0, 424, 425, 0, 427, 0, 428, 429, 430, + 431, 432, 433, 0, 434, 435, 0, 0, 436, 437, + 438, 0, 0, 439, 440, 441, 0, 443, 0, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 0, - 455, 456, 0, 457, 458, 459, 460, 461, 462, 463, - 464, 465, 466, 467, 468, 469, 0, 470, 471, 472, - 473, 474, 0, 475, 476, 477, 478, 479, 0, 480, - 481, 482, 483, 0, 484, 485, 486, 487, 488, 489, - 490, 491, 492, 493, 494, 495, 496, 0, 497, 498, - 0, 499, 0, 500, 501, 502, 503, 504, 0, 505, - 506, 0, 0, 507, 508, 509, 510, 511, 0, 512, - 513, 514, 515, 516, 517, 518, 0, 0, 519, 520, - 521, 522, 523, 0, 0, 524, 525, 526, 527, 528, - 529, 530, 0, 531, 0, 532, 533, 534, 535, 0, - 0, 536, 0, 0, 537, 538, 539, 540, 541, 542, - 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, - 553, 554, 555, 556, 1031, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, - 225, 226, 227, 228, 229, 230, 231, 0, 233, 234, - 235, 0, 0, 0, 0, 0, 0, 0, 236, 237, - 0, 238, 239, 240, 801, 241, 242, 243, 0, 1032, - 802, 1033, 1034, 0, 248, 249, 250, 251, 252, 0, - 0, 253, 254, 1035, 1036, 257, 0, 258, 259, 260, - 261, 0, 0, 803, 0, 263, 264, 265, 266, 267, - 804, 268, 269, 270, 0, 271, 272, 273, 274, 275, - 276, 0, 805, 277, 278, 279, 0, 0, 0, 806, - 0, 0, 0, 280, 281, 282, 283, 284, 285, 1037, - 1038, 288, 0, 289, 0, 290, 291, 292, 293, 294, - 295, 0, 296, 297, 298, 299, 0, 0, 300, 301, - 1039, 303, 304, 0, 305, 306, 307, 0, 308, 309, - 310, 0, 311, 312, 313, 314, 0, 316, 317, 318, - 0, 0, 320, 0, 321, 322, 1040, 324, 0, 325, - 0, 326, 807, 0, 808, 327, 328, 329, 330, 0, - 331, 0, 0, 0, 334, 0, 335, 336, 337, 338, - 339, 809, 340, 341, 342, 343, 2095, 344, 345, 346, - 347, 348, 349, 0, 350, 810, 2096, 352, 353, 354, - 355, 1042, 1043, 0, 1044, 0, 359, 811, 812, 360, - 813, 361, 362, 363, 364, 365, 0, 0, 366, 0, - 814, 368, 815, 0, 369, 370, 371, 0, 0, 372, - 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, - 383, 384, 385, 386, 387, 1045, 816, 1046, 390, 391, - 392, 0, 0, 394, 395, 817, 396, 0, 0, 398, - 1047, 400, 401, 402, 0, 403, 404, 0, 0, 405, - 406, 407, 0, 0, 408, 2098, 818, 410, 819, 0, - 412, 413, 414, 415, 416, 417, 418, 419, 420, 0, - 421, 422, 0, 424, 0, 426, 427, 428, 0, 429, - 430, 431, 432, 433, 434, 435, 436, 437, 1048, 439, - 440, 441, 442, 0, 443, 444, 445, 446, 447, 448, - 449, 450, 451, 452, 453, 454, 0, 455, 456, 820, - 457, 458, 459, 0, 461, 462, 463, 464, 465, 466, - 467, 468, 469, 0, 470, 471, 472, 473, 474, 0, - 475, 476, 2099, 478, 479, 821, 480, 481, 1050, 483, - 0, 484, 485, 486, 487, 488, 489, 490, 491, 492, - 493, 494, 495, 0, 0, 497, 498, 0, 499, 822, - 500, 501, 502, 503, 504, 0, 1051, 1052, 0, 0, - 507, 508, 0, 510, 0, 0, 512, 513, 514, 515, - 516, 517, 518, 0, 0, 519, 520, 521, 522, 523, - 0, 0, 524, 525, 526, 527, 528, 0, 1053, 2100, - 531, 823, 532, 533, 534, 535, 0, 0, 536, 0, - 0, 537, 538, 539, 540, 541, 542, 223, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 554, 555, - 556, 0, 224, 225, 226, 227, 228, 229, 230, 231, - 0, 233, 234, 235, 0, 0, 0, 0, 0, 0, - 0, 236, 237, 0, 238, 239, 240, 0, 241, 242, - 243, 244, 245, 0, 246, 247, 0, 248, 249, 250, - 251, 252, 0, 0, 253, 254, 255, 256, 257, 0, - 258, 259, 260, 261, 262, 0, 0, 0, 263, 264, - 265, 266, 267, 0, 268, 269, 270, 0, 271, 272, - 273, 274, 275, 276, 0, 0, 277, 278, 279, 0, - 0, 0, 0, 0, 0, 0, 280, 281, 282, 283, - 284, 285, 286, 287, 288, 0, 289, 0, 290, 291, - 292, 293, 294, 295, 0, 296, 297, 298, 299, 0, - 0, 300, 301, 302, 303, 304, 0, 305, 306, 307, - 0, 308, 309, 310, 0, 311, 312, 313, 314, 315, - 316, 317, 318, 319, 0, 320, 0, 321, 322, 323, - 324, 0, 325, 0, 326, 0, 0, 0, 327, 328, - 329, 330, 0, 331, 332, 0, 333, 334, 0, 335, - 336, 337, 338, 339, 0, 340, 341, 342, 343, 0, - 344, 345, 346, 347, 348, 349, 0, 350, 0, 351, - 352, 353, 354, 355, 356, 357, 0, 358, 0, 359, - 0, 0, 360, 0, 361, 362, 363, 364, 365, 0, - 0, 366, 367, 0, 368, 0, 0, 369, 370, 371, - 0, 0, 372, 373, 374, 375, 376, 377, 378, 379, - 380, 381, 382, 383, 384, 385, 386, 387, 388, 0, - 389, 390, 391, 392, 393, 0, 394, 395, 0, 396, - 0, 397, 398, 399, 400, 401, 402, 0, 403, 404, - 0, 0, 405, 406, 407, 0, 0, 408, 409, 0, - 410, 0, 411, 412, 413, 414, 415, 416, 417, 0, - 419, 420, 0, 421, 422, 423, 424, 425, 426, 427, - 428, 0, 429, 430, 431, 432, 433, 434, 435, 0, - 437, 438, 439, 440, 441, 442, 0, 443, 444, 445, + 455, 456, 457, 458, 459, 460, 461, 462, 0, 463, + 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, + 474, 475, 476, 477, 0, 478, 479, 480, 481, 482, + 483, 484, 485, 486, 487, 488, 489, 0, 490, 491, + 0, 493, 494, 495, 496, 497, 498, 499, 500, 501, + 502, 503, 504, 505, 506, 507, 0, 508, 509, 510, + 511, 512, 0, 513, 514, 515, 516, 517, 0, 519, + 520, 521, 522, 0, 523, 524, 525, 526, 527, 528, + 529, 530, 531, 532, 533, 534, 535, 536, 537, 0, + 538, 539, 0, 540, 0, 542, 543, 544, 545, 546, + 0, 547, 548, 549, 0, 0, 550, 551, 552, 553, + 554, 0, 555, 556, 557, 558, 559, 560, 561, 562, + 0, 0, 563, 564, 565, 566, 567, 0, 0, 568, + 569, 570, 571, 572, 573, 574, 0, 575, 0, 577, + 578, 579, 580, 0, 0, 581, 0, 0, 582, 583, + 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, + 594, 595, 596, 597, 598, 599, 600, 601, 609, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 229, 230, 231, + 232, 233, 234, 235, 236, 0, 237, 238, 239, 0, + 0, 0, 0, 0, 0, 0, 240, 241, 0, 242, + 243, 244, 0, 246, 247, 248, 249, 250, 0, 252, + 253, 0, 254, 255, 256, 257, 258, 259, 0, 0, + 260, 261, 262, 263, 264, 0, 265, 266, 267, 268, + 269, 0, 0, 0, 271, 272, 273, 274, 275, 0, + 277, 278, 279, 0, 280, 281, 282, 283, 284, 285, + 0, 0, 287, 288, 289, 0, 0, 0, 0, 0, + 0, 0, 291, 292, 293, 294, 295, 296, 297, 298, + 299, 0, 300, 0, 301, 302, 303, 304, 305, 306, + 0, 307, 308, 309, 310, 0, 0, 311, 312, 313, + 314, 315, 0, 316, 317, 318, 0, 319, 320, 321, + 0, 322, 323, 324, 325, 326, 327, 328, 329, 330, + 331, 0, 332, 0, 333, 334, 335, 336, 0, 337, + 0, 338, 0, 0, 0, 341, 342, 343, 2891, 0, + 345, 346, 0, 347, 348, 349, 0, 350, 351, 352, + 353, 354, 0, 356, 357, 358, 359, 0, 360, 361, + 362, 363, 364, 365, 366, 0, 367, 0, 369, 370, + 371, 372, 373, 374, 375, 0, 376, 0, 377, 0, + 0, 380, 0, 382, 383, 384, 385, 386, 0, 0, + 387, 388, 0, 390, 0, 0, 392, 393, 2892, 0, + 0, 395, 396, 397, 398, 399, 400, 401, 402, 403, + 404, 405, 406, 407, 408, 409, 410, 411, 0, 413, + 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, + 0, 424, 425, 0, 427, 0, 428, 429, 430, 431, + 432, 433, 0, 434, 435, 0, 0, 436, 437, 438, + 0, 0, 439, 440, 441, 0, 443, 0, 445, 446, + 447, 448, 449, 450, 451, 452, 453, 454, 0, 455, + 456, 457, 458, 459, 460, 461, 462, 0, 463, 464, + 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, + 475, 476, 477, 0, 478, 479, 480, 481, 482, 483, + 484, 485, 486, 487, 488, 489, 0, 490, 491, 0, + 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, + 503, 504, 505, 506, 507, 0, 508, 509, 510, 511, + 512, 0, 513, 514, 515, 516, 517, 0, 519, 520, + 521, 522, 0, 523, 524, 525, 526, 527, 528, 529, + 530, 531, 532, 533, 534, 535, 536, 537, 0, 538, + 539, 2893, 540, 0, 542, 2894, 544, 2895, 546, 0, + 547, 548, 549, 0, 0, 550, 551, 552, 553, 554, + 0, 555, 556, 557, 558, 559, 560, 561, 562, 0, + 0, 563, 564, 2896, 566, 567, 0, 0, 568, 569, + 570, 571, 572, 573, 574, 0, 575, 0, 577, 578, + 579, 580, 0, 0, 581, 0, 0, 582, 583, 584, + 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, + 595, 596, 597, 598, 599, 600, 601, 609, 0, 0, + 0, 0, 0, 0, 0, 729, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 229, 230, 231, 232, + 233, 234, 235, 236, 0, 237, 238, 239, 0, 0, + 0, 0, 0, 0, 0, 240, 241, 0, 242, 243, + 244, 0, 246, 247, 248, 249, 250, 0, 252, 253, + 0, 254, 255, 256, 257, 258, 259, 0, 0, 260, + 261, 262, 263, 264, 0, 265, 266, 267, 268, 269, + 0, 0, 0, 271, 272, 273, 274, 275, 0, 277, + 278, 279, 0, 280, 281, 282, 283, 284, 285, 0, + 0, 287, 288, 289, 0, 0, 0, 0, 0, 0, + 0, 291, 292, 293, 294, 295, 296, 297, 298, 299, + 0, 300, 0, 301, 302, 303, 304, 305, 306, 0, + 307, 308, 309, 310, 0, 0, 311, 312, 313, 314, + 315, 0, 316, 317, 318, 0, 319, 320, 321, 0, + 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, + 0, 332, 0, 333, 334, 335, 336, 0, 337, 0, + 338, 0, 0, 0, 341, 342, 343, 344, 0, 345, + 346, 0, 347, 348, 349, 0, 350, 351, 352, 353, + 354, 0, 356, 357, 358, 359, 0, 360, 361, 362, + 363, 364, 365, 366, 0, 367, 0, 369, 370, 371, + 372, 373, 374, 375, 0, 376, 0, 377, 0, 0, + 380, 0, 382, 383, 384, 385, 386, 0, 0, 387, + 388, 0, 390, 0, 0, 392, 393, 394, 0, 0, + 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, + 405, 406, 407, 408, 409, 410, 411, 0, 413, 414, + 415, 416, 417, 418, 419, 420, 421, 422, 423, 0, + 424, 425, 0, 427, 0, 428, 429, 430, 431, 432, + 433, 0, 434, 435, 0, 0, 436, 437, 438, 0, + 0, 439, 440, 441, 0, 443, 0, 445, 446, 447, + 448, 449, 450, 451, 452, 453, 454, 0, 455, 456, + 457, 458, 459, 460, 461, 462, 0, 463, 464, 465, + 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, + 476, 477, 0, 478, 479, 480, 481, 482, 483, 484, + 485, 486, 487, 488, 489, 0, 490, 491, 0, 493, + 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, + 504, 505, 506, 507, 0, 508, 509, 510, 511, 512, + 0, 513, 514, 515, 516, 517, 0, 519, 520, 521, + 522, 0, 523, 524, 525, 526, 527, 528, 529, 530, + 531, 532, 533, 534, 535, 536, 537, 0, 538, 539, + 0, 540, 0, 542, 543, 544, 545, 546, 0, 547, + 548, 549, 0, 0, 550, 551, 552, 553, 554, 0, + 555, 556, 557, 558, 559, 560, 561, 562, 0, 0, + 563, 564, 565, 566, 567, 0, 0, 568, 569, 570, + 571, 572, 573, 574, 0, 575, 0, 577, 578, 579, + 580, 0, 0, 581, 0, 0, 582, 583, 584, 585, + 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, + 596, 597, 598, 599, 600, 601, 609, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 229, 230, 231, 232, 233, + 234, 235, 236, 0, 237, 238, 239, 0, 0, 0, + 0, 0, 4189, 0, 240, 241, 0, 242, 243, 244, + 0, 246, 247, 248, 249, 250, 0, 252, 253, 0, + 254, 255, 256, 257, 258, 259, 0, 0, 260, 261, + 262, 263, 264, 0, 265, 266, 267, 268, 269, 0, + 0, 0, 271, 272, 273, 274, 275, 0, 277, 278, + 279, 0, 280, 281, 282, 283, 284, 285, 0, 0, + 287, 288, 289, 0, 0, 0, 0, 0, 0, 0, + 291, 292, 293, 294, 295, 296, 297, 298, 299, 0, + 300, 0, 301, 302, 303, 304, 305, 306, 0, 307, + 308, 309, 310, 0, 0, 311, 312, 313, 314, 315, + 0, 316, 317, 318, 0, 319, 320, 321, 0, 322, + 323, 324, 325, 326, 327, 328, 329, 330, 331, 0, + 332, 0, 333, 334, 335, 336, 0, 337, 0, 338, + 0, 0, 0, 341, 342, 343, 344, 0, 345, 346, + 0, 347, 348, 349, 0, 350, 351, 352, 353, 354, + 0, 356, 357, 358, 359, 0, 360, 361, 362, 363, + 364, 365, 366, 0, 367, 0, 369, 370, 371, 372, + 373, 374, 375, 0, 376, 0, 377, 0, 0, 380, + 0, 382, 383, 384, 385, 386, 0, 0, 387, 388, + 0, 390, 0, 0, 392, 393, 394, 0, 0, 395, + 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, + 406, 407, 408, 409, 410, 411, 0, 413, 414, 415, + 416, 417, 418, 419, 420, 421, 422, 423, 0, 424, + 425, 0, 427, 0, 428, 429, 430, 431, 432, 433, + 0, 434, 435, 0, 0, 436, 437, 438, 0, 0, + 439, 440, 441, 0, 443, 0, 445, 446, 447, 448, + 449, 450, 451, 452, 453, 454, 0, 455, 456, 457, + 458, 459, 460, 461, 462, 0, 463, 464, 465, 466, + 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, + 477, 0, 478, 479, 480, 481, 482, 483, 484, 485, + 486, 487, 488, 489, 0, 490, 491, 0, 493, 494, + 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, + 505, 506, 507, 0, 508, 509, 510, 511, 512, 0, + 513, 514, 515, 516, 517, 0, 519, 520, 521, 522, + 0, 523, 524, 525, 526, 527, 528, 529, 530, 531, + 532, 533, 534, 535, 536, 537, 0, 538, 539, 0, + 540, 0, 542, 543, 544, 545, 546, 0, 547, 548, + 549, 0, 0, 550, 551, 552, 553, 554, 0, 555, + 556, 557, 558, 559, 560, 561, 562, 0, 0, 563, + 564, 565, 566, 567, 0, 0, 568, 569, 570, 571, + 572, 573, 574, 0, 575, 0, 577, 578, 579, 580, + 0, 0, 581, 0, 0, 582, 583, 584, 585, 586, + 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, + 597, 598, 599, 600, 601, 609, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 229, 230, 231, 232, 233, 234, + 235, 236, 0, 237, 238, 239, 0, 0, 0, 0, + 0, 4203, 0, 240, 241, 0, 242, 243, 244, 0, + 246, 247, 248, 249, 250, 0, 252, 253, 0, 254, + 255, 256, 257, 258, 259, 0, 0, 260, 261, 262, + 263, 264, 0, 265, 266, 267, 268, 269, 0, 0, + 0, 271, 272, 273, 274, 275, 0, 277, 278, 279, + 0, 280, 281, 282, 283, 284, 285, 0, 0, 287, + 288, 289, 0, 0, 0, 0, 0, 0, 0, 291, + 292, 293, 294, 295, 296, 297, 298, 299, 0, 300, + 0, 301, 302, 303, 304, 305, 306, 0, 307, 308, + 309, 310, 0, 0, 311, 312, 313, 314, 315, 0, + 316, 317, 318, 0, 319, 320, 321, 0, 322, 323, + 324, 325, 326, 327, 328, 329, 330, 331, 0, 332, + 0, 333, 334, 335, 336, 0, 337, 0, 338, 0, + 0, 0, 341, 342, 343, 344, 0, 345, 346, 0, + 347, 348, 349, 0, 350, 351, 352, 353, 354, 0, + 356, 357, 358, 359, 0, 360, 361, 362, 363, 364, + 365, 366, 0, 367, 0, 369, 370, 371, 372, 373, + 374, 375, 0, 376, 0, 377, 0, 0, 380, 0, + 382, 383, 384, 385, 386, 0, 0, 387, 388, 0, + 390, 0, 0, 392, 393, 394, 0, 0, 395, 396, + 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, + 407, 408, 409, 410, 411, 0, 413, 414, 415, 416, + 417, 418, 419, 420, 421, 422, 423, 0, 424, 425, + 0, 427, 0, 428, 429, 430, 431, 432, 433, 0, + 434, 435, 0, 0, 436, 437, 438, 0, 0, 439, + 440, 441, 0, 443, 0, 445, 446, 447, 448, 449, + 450, 451, 452, 453, 454, 0, 455, 456, 457, 458, + 459, 460, 461, 462, 0, 463, 464, 465, 466, 467, + 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, + 0, 478, 479, 480, 481, 482, 483, 484, 485, 486, + 487, 488, 489, 0, 490, 491, 0, 493, 494, 495, + 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, + 506, 507, 0, 508, 509, 510, 511, 512, 0, 513, + 514, 515, 516, 517, 0, 519, 520, 521, 522, 0, + 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, + 533, 534, 535, 536, 537, 0, 538, 539, 0, 540, + 0, 542, 543, 544, 545, 546, 0, 547, 548, 549, + 0, 0, 550, 551, 552, 553, 554, 0, 555, 556, + 557, 558, 559, 560, 561, 562, 0, 0, 563, 564, + 565, 566, 567, 0, 0, 568, 569, 570, 571, 572, + 573, 574, 0, 575, 0, 577, 578, 579, 580, 0, + 0, 581, 0, 0, 582, 583, 584, 585, 586, 587, + 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, + 598, 599, 600, 601, 609, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 229, 230, 231, 232, 233, 234, 235, + 236, 0, 237, 238, 239, 0, 0, 0, 0, 0, + 0, 0, 240, 241, 0, 242, 243, 244, 0, 246, + 247, 248, 249, 250, 0, 252, 253, 0, 254, 255, + 256, 257, 258, 259, 0, 0, 260, 261, 262, 263, + 264, 0, 265, 266, 267, 268, 269, 0, 0, 0, + 271, 272, 273, 274, 275, 0, 277, 278, 279, 0, + 280, 281, 282, 283, 284, 285, 0, 0, 287, 288, + 289, 0, 0, 0, 0, 0, 0, 0, 291, 292, + 293, 294, 295, 296, 297, 298, 299, 0, 300, 0, + 301, 302, 303, 304, 305, 306, 0, 307, 308, 309, + 310, 0, 0, 311, 312, 313, 314, 315, 0, 316, + 317, 318, 0, 319, 320, 321, 0, 322, 323, 324, + 325, 326, 327, 328, 329, 330, 331, 0, 332, 0, + 333, 334, 335, 336, 0, 337, 0, 338, 0, 0, + 0, 341, 342, 343, 344, 0, 345, 346, 0, 347, + 348, 349, 0, 350, 351, 352, 353, 354, 0, 356, + 357, 358, 359, 0, 360, 361, 362, 363, 364, 365, + 366, 0, 367, 0, 369, 370, 371, 372, 373, 374, + 375, 0, 376, 0, 377, 0, 0, 380, 0, 382, + 383, 384, 385, 386, 0, 0, 387, 388, 0, 390, + 0, 0, 392, 393, 394, 0, 0, 395, 396, 397, + 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, + 408, 409, 410, 411, 0, 413, 414, 415, 416, 417, + 418, 419, 420, 421, 422, 423, 0, 424, 425, 0, + 427, 0, 428, 429, 430, 431, 432, 433, 0, 434, + 435, 0, 0, 436, 437, 438, 0, 0, 439, 440, + 441, 0, 443, 0, 445, 446, 447, 448, 449, 450, + 451, 452, 453, 454, 0, 455, 456, 457, 458, 459, + 460, 461, 462, 0, 463, 464, 465, 466, 467, 468, + 469, 470, 471, 472, 473, 474, 475, 476, 477, 0, + 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, + 488, 489, 0, 490, 491, 0, 493, 494, 495, 496, + 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, + 507, 0, 508, 509, 510, 511, 512, 0, 513, 514, + 515, 516, 517, 0, 519, 520, 521, 522, 0, 523, + 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, + 534, 535, 536, 537, 0, 538, 539, 0, 540, 0, + 542, 543, 544, 545, 546, 0, 547, 548, 549, 0, + 0, 550, 551, 552, 553, 554, 0, 555, 556, 557, + 558, 559, 560, 561, 562, 0, 0, 563, 564, 565, + 566, 567, 0, 0, 568, 569, 570, 571, 572, 573, + 574, 0, 575, 0, 577, 578, 579, 580, 0, 0, + 581, 0, 0, 582, 583, 584, 585, 586, 587, 588, + 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, + 599, 600, 601, 609, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 229, 230, 231, 232, 233, 234, 235, 236, + 0, 237, 238, 239, 0, 0, 0, 0, 0, 0, + 0, 240, 241, 0, 242, 243, 244, 0, 246, 247, + 248, 249, 250, 0, 252, 253, 0, 254, 255, 256, + 257, 258, 259, 0, 0, 260, 261, 262, 263, 264, + 0, 265, 266, 267, 268, 269, 0, 0, 0, 271, + 272, 273, 274, 275, 0, 277, 278, 279, 0, 280, + 281, 282, 283, 284, 285, 0, 0, 287, 288, 289, + 0, 0, 0, 0, 0, 0, 0, 291, 292, 293, + 294, 295, 296, 297, 298, 299, 0, 300, 0, 301, + 302, 303, 304, 305, 306, 0, 307, 308, 309, 310, + 0, 0, 311, 312, 313, 314, 315, 0, 316, 317, + 318, 0, 319, 320, 321, 0, 322, 323, 324, 325, + 326, 327, 328, 329, 330, 331, 0, 332, 0, 333, + 334, 335, 336, 0, 337, 0, 338, 0, 0, 0, + 341, 342, 343, 344, 0, 345, 346, 0, 347, 348, + 349, 0, 350, 351, 352, 353, 354, 0, 356, 357, + 358, 359, 0, 360, 361, 362, 363, 364, 365, 366, + 0, 367, 0, 369, 370, 371, 372, 373, 374, 375, + 0, 376, 0, 377, 0, 0, 380, 0, 382, 383, + 384, 385, 386, 0, 0, 387, 388, 0, 390, 0, + 0, 392, 393, 394, 0, 0, 395, 396, 397, 398, + 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, + 409, 410, 411, 0, 413, 414, 415, 416, 417, 418, + 419, 420, 421, 422, 423, 0, 424, 425, 0, 427, + 0, 428, 429, 430, 431, 432, 433, 0, 434, 435, + 0, 0, 436, 437, 438, 0, 0, 439, 440, 441, + 0, 443, 0, 445, 446, 447, 448, 449, 450, 451, + 452, 453, 454, 0, 455, 456, 457, 458, 459, 460, + 461, 462, 0, 463, 464, 465, 466, 467, 468, 469, + 470, 471, 472, 473, 474, 475, 476, 477, 0, 478, + 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, + 489, 0, 490, 491, 0, 493, 494, 495, 496, 497, + 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, + 0, 508, 509, 510, 511, 512, 0, 513, 514, 515, + 516, 517, 0, 519, 520, 521, 522, 0, 523, 524, + 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, + 535, 536, 537, 0, 538, 539, 0, 540, 0, 542, + 543, 544, 545, 546, 0, 547, 548, 549, 0, 0, + 764, 551, 552, 553, 554, 0, 555, 556, 557, 558, + 559, 560, 561, 562, 0, 0, 563, 564, 565, 566, + 567, 0, 0, 568, 569, 570, 571, 572, 573, 574, + 0, 575, 0, 577, 578, 579, 580, 0, 0, 581, + 0, 0, 582, 583, 584, 585, 586, 587, 588, 589, + 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, + 600, 601, 609, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 229, 230, 231, 232, 233, 234, 235, 236, 0, + 237, 238, 239, 0, 0, 0, 0, 0, 0, 0, + 240, 241, 0, 242, 243, 244, 0, 246, 247, 248, + 249, 250, 0, 252, 253, 0, 254, 255, 256, 257, + 258, 259, 0, 0, 260, 261, 262, 263, 264, 0, + 265, 266, 267, 268, 269, 0, 0, 0, 271, 272, + 273, 274, 275, 0, 277, 278, 279, 0, 280, 281, + 282, 283, 284, 285, 0, 0, 287, 288, 289, 0, + 0, 0, 0, 0, 0, 0, 291, 292, 293, 294, + 295, 296, 297, 298, 299, 0, 300, 0, 301, 302, + 303, 304, 305, 306, 0, 307, 308, 309, 310, 0, + 0, 311, 312, 313, 314, 315, 0, 316, 317, 318, + 0, 319, 320, 321, 0, 322, 323, 324, 325, 326, + 327, 328, 329, 330, 331, 0, 332, 0, 333, 334, + 335, 336, 0, 337, 0, 338, 0, 0, 0, 341, + 342, 343, 344, 0, 345, 346, 0, 347, 348, 349, + 0, 350, 351, 352, 353, 354, 0, 356, 357, 358, + 359, 0, 360, 361, 362, 363, 364, 365, 366, 0, + 367, 0, 369, 370, 371, 372, 373, 374, 375, 0, + 376, 0, 377, 0, 0, 380, 0, 382, 383, 384, + 385, 386, 0, 0, 387, 388, 0, 390, 0, 0, + 392, 393, 394, 0, 0, 395, 396, 397, 398, 399, + 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, + 410, 411, 0, 413, 414, 415, 416, 417, 418, 419, + 420, 421, 422, 423, 0, 424, 425, 0, 427, 0, + 428, 429, 430, 431, 432, 433, 0, 434, 435, 0, + 0, 436, 437, 438, 0, 0, 439, 440, 441, 0, + 443, 0, 445, 446, 447, 448, 449, 450, 451, 452, + 453, 454, 0, 455, 456, 457, 458, 459, 460, 461, + 462, 0, 463, 464, 465, 466, 467, 468, 469, 470, + 471, 472, 473, 474, 475, 476, 477, 0, 478, 479, + 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, + 0, 490, 491, 0, 493, 494, 495, 496, 497, 498, + 499, 500, 776, 502, 503, 504, 505, 506, 507, 0, + 508, 509, 510, 511, 512, 0, 513, 514, 515, 516, + 517, 0, 519, 520, 521, 522, 0, 523, 524, 525, + 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, + 536, 537, 0, 538, 539, 0, 540, 0, 542, 543, + 544, 545, 546, 0, 547, 548, 549, 0, 0, 550, + 551, 552, 553, 554, 0, 555, 556, 557, 558, 559, + 560, 561, 562, 0, 0, 563, 564, 565, 566, 567, + 0, 0, 568, 569, 570, 571, 572, 573, 574, 0, + 575, 0, 577, 578, 579, 580, 0, 0, 581, 0, + 0, 582, 583, 584, 585, 586, 587, 588, 589, 590, + 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, + 601, 609, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 229, 230, 231, 232, 233, 234, 235, 236, 0, 237, + 238, 239, 0, 0, 0, 0, 0, 0, 0, 240, + 241, 0, 242, 243, 244, 0, 246, 247, 248, 249, + 250, 0, 252, 253, 0, 254, 255, 256, 257, 258, + 259, 0, 0, 798, 261, 262, 263, 264, 0, 265, + 266, 267, 268, 269, 0, 0, 0, 271, 272, 273, + 274, 275, 0, 277, 278, 279, 0, 799, 281, 282, + 283, 284, 285, 0, 0, 287, 288, 289, 0, 0, + 0, 0, 0, 0, 0, 291, 292, 293, 294, 295, + 296, 297, 298, 299, 0, 300, 0, 301, 302, 303, + 304, 305, 306, 0, 307, 308, 309, 310, 0, 0, + 311, 312, 313, 314, 315, 0, 316, 317, 318, 0, + 319, 320, 321, 0, 322, 323, 324, 325, 326, 327, + 328, 329, 330, 331, 0, 332, 0, 333, 334, 335, + 336, 0, 337, 0, 338, 0, 0, 0, 341, 342, + 343, 344, 0, 345, 346, 0, 347, 348, 349, 0, + 350, 351, 352, 353, 354, 0, 356, 357, 358, 359, + 0, 360, 361, 362, 363, 364, 365, 366, 0, 367, + 0, 369, 370, 371, 372, 373, 374, 375, 0, 376, + 0, 377, 0, 0, 380, 0, 382, 383, 384, 385, + 386, 0, 0, 387, 388, 0, 390, 0, 0, 392, + 393, 800, 0, 0, 395, 396, 397, 398, 399, 400, + 401, 402, 403, 404, 405, 406, 407, 408, 409, 801, + 411, 0, 413, 414, 415, 416, 417, 418, 419, 420, + 421, 422, 423, 0, 424, 425, 0, 427, 0, 428, + 429, 430, 431, 432, 433, 0, 434, 435, 0, 0, + 436, 437, 438, 0, 0, 439, 440, 441, 0, 443, + 0, 445, 446, 447, 448, 449, 450, 451, 452, 453, + 454, 0, 455, 456, 457, 458, 459, 460, 461, 462, + 0, 463, 464, 465, 466, 467, 468, 469, 470, 471, + 472, 473, 474, 475, 476, 477, 0, 478, 479, 480, + 481, 482, 483, 484, 485, 486, 487, 488, 489, 0, + 490, 491, 0, 802, 494, 495, 496, 497, 498, 499, + 500, 501, 803, 503, 504, 505, 506, 507, 0, 508, + 509, 510, 511, 804, 0, 513, 514, 515, 516, 517, + 0, 519, 520, 521, 522, 0, 523, 524, 525, 526, + 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, + 537, 0, 538, 539, 0, 540, 0, 542, 543, 544, + 545, 546, 0, 547, 805, 549, 0, 0, 806, 551, + 552, 553, 554, 0, 555, 556, 557, 558, 559, 560, + 561, 562, 0, 0, 563, 564, 565, 566, 567, 0, + 0, 568, 569, 570, 571, 572, 573, 574, 0, 575, + 0, 577, 578, 579, 580, 0, 0, 581, 0, 0, + 582, 583, 584, 585, 586, 807, 588, 589, 590, 591, + 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, + 609, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 229, + 230, 231, 232, 233, 234, 235, 236, 0, 237, 238, + 239, 0, 0, 0, 0, 0, 0, 0, 240, 241, + 0, 242, 243, 244, 0, 246, 247, 248, 249, 250, + 0, 252, 253, 0, 254, 255, 256, 257, 258, 259, + 0, 0, 260, 261, 262, 263, 264, 0, 265, 266, + 267, 268, 269, 0, 0, 0, 271, 272, 273, 274, + 275, 0, 277, 278, 279, 0, 280, 281, 282, 283, + 284, 285, 0, 0, 287, 288, 289, 0, 0, 0, + 0, 0, 0, 0, 291, 292, 293, 294, 295, 296, + 297, 298, 299, 0, 300, 0, 301, 302, 303, 304, + 305, 306, 0, 307, 308, 309, 310, 0, 0, 311, + 312, 313, 314, 315, 0, 316, 317, 318, 0, 319, + 320, 321, 0, 322, 323, 324, 325, 326, 327, 328, + 329, 330, 331, 0, 332, 0, 333, 334, 335, 336, + 0, 337, 0, 338, 0, 0, 0, 341, 342, 343, + 344, 0, 345, 346, 0, 347, 348, 349, 0, 350, + 351, 352, 353, 354, 0, 356, 357, 358, 359, 0, + 360, 361, 362, 363, 364, 365, 366, 0, 367, 0, + 369, 370, 371, 372, 373, 374, 375, 0, 376, 0, + 377, 0, 0, 380, 0, 382, 383, 384, 385, 386, + 0, 0, 387, 388, 0, 390, 0, 0, 392, 393, + 394, 0, 0, 395, 396, 397, 398, 399, 400, 401, + 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, + 0, 413, 414, 415, 416, 417, 418, 419, 420, 421, + 422, 423, 0, 424, 425, 0, 427, 0, 428, 429, + 430, 431, 432, 433, 0, 434, 435, 0, 0, 436, + 437, 438, 0, 0, 439, 440, 441, 0, 443, 0, + 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, + 0, 455, 456, 457, 458, 459, 460, 461, 462, 0, + 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, + 473, 474, 475, 829, 477, 0, 478, 479, 480, 481, + 482, 483, 484, 485, 486, 487, 488, 489, 0, 490, + 491, 0, 493, 494, 495, 496, 497, 498, 499, 500, + 501, 502, 503, 504, 505, 506, 507, 0, 508, 509, + 510, 511, 512, 0, 513, 514, 515, 516, 517, 0, + 519, 520, 521, 522, 0, 523, 524, 525, 526, 527, + 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, + 0, 538, 539, 0, 540, 0, 542, 543, 544, 545, + 546, 0, 547, 548, 549, 0, 0, 550, 551, 552, + 553, 554, 0, 555, 556, 557, 558, 559, 560, 561, + 562, 0, 0, 563, 564, 565, 566, 567, 0, 0, + 568, 569, 570, 571, 572, 573, 574, 0, 575, 0, + 577, 578, 579, 580, 0, 0, 581, 0, 0, 582, + 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, + 593, 594, 595, 596, 597, 598, 599, 600, 601, 609, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 229, 230, + 231, 232, 233, 234, 235, 236, 0, 237, 238, 239, + 0, 0, 0, 0, 0, 0, 0, 240, 241, 0, + 242, 243, 244, 0, 246, 247, 248, 249, 250, 0, + 252, 253, 0, 254, 255, 256, 257, 258, 259, 0, + 0, 260, 261, 262, 263, 264, 0, 265, 266, 267, + 268, 269, 0, 0, 0, 271, 272, 273, 274, 275, + 0, 277, 278, 279, 0, 280, 281, 282, 283, 284, + 285, 0, 0, 287, 288, 289, 0, 0, 0, 0, + 0, 0, 0, 291, 292, 293, 294, 295, 296, 297, + 298, 299, 0, 300, 0, 301, 302, 303, 304, 305, + 306, 0, 307, 308, 309, 310, 0, 0, 311, 312, + 313, 314, 315, 0, 316, 317, 318, 0, 319, 320, + 321, 0, 322, 323, 324, 325, 326, 327, 328, 329, + 330, 331, 0, 332, 0, 333, 334, 335, 336, 0, + 337, 0, 338, 0, 0, 0, 341, 342, 343, 344, + 0, 345, 346, 0, 347, 348, 349, 0, 350, 351, + 352, 353, 908, 0, 356, 357, 358, 359, 0, 360, + 361, 362, 363, 364, 365, 366, 0, 367, 0, 369, + 370, 371, 372, 373, 374, 375, 0, 376, 0, 377, + 0, 0, 380, 0, 382, 383, 384, 385, 386, 0, + 0, 387, 388, 0, 390, 0, 0, 392, 393, 394, + 0, 0, 395, 396, 397, 398, 399, 400, 401, 402, + 403, 404, 405, 406, 407, 408, 409, 410, 411, 0, + 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, + 423, 0, 424, 425, 0, 427, 0, 428, 429, 430, + 431, 432, 433, 0, 434, 435, 0, 0, 436, 437, + 438, 0, 0, 439, 440, 441, 0, 443, 0, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 0, - 455, 456, 0, 457, 458, 459, 460, 0, 462, 463, - 464, 465, 466, 467, 468, 469, 0, 470, 471, 472, - 473, 474, 0, 475, 476, 477, 478, 479, 0, 480, - 481, 482, 483, 0, 484, 485, 486, 487, 488, 489, - 490, 491, 492, 493, 494, 495, 496, 0, 497, 498, - 0, 499, 0, 500, 501, 502, 503, 504, 0, 505, - 506, 0, 0, 507, 508, 509, 510, 511, 0, 512, - 513, 514, 515, 516, 517, 518, 0, 0, 519, 520, - 521, 522, 523, 0, 0, 524, 525, 526, 527, 528, - 529, 530, 0, 531, 0, 532, 533, 534, 535, 0, - 0, 536, 0, 0, 537, 538, 539, 540, 541, 542, - 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, - 553, 554, 555, 556, 1031, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, - 225, 226, 227, 228, 229, 230, 231, 0, 233, 234, - 235, 0, 0, 0, 0, 0, 0, 0, 236, 237, - 0, 238, 239, 240, 801, 241, 242, 243, 0, 1032, - 802, 1033, 1034, 0, 248, 249, 250, 251, 252, 0, - 0, 253, 254, 1035, 1036, 257, 0, 258, 259, 260, - 261, 0, 0, 803, 0, 263, 264, 265, 266, 267, - 804, 268, 269, 270, 0, 271, 272, 273, 274, 275, - 276, 0, 805, 277, 278, 279, 0, 0, 0, 806, - 0, 0, 0, 280, 281, 282, 283, 284, 285, 1037, - 1038, 288, 0, 289, 0, 290, 291, 292, 293, 294, - 295, 0, 296, 297, 298, 299, 0, 0, 300, 301, - 1039, 303, 304, 0, 305, 306, 307, 0, 308, 309, - 310, 0, 311, 312, 313, 314, 0, 316, 317, 318, - 0, 0, 320, 0, 321, 322, 1040, 324, 0, 325, - 0, 326, 807, 0, 808, 327, 328, 329, 330, 0, - 331, 0, 0, 0, 334, 0, 335, 336, 337, 338, - 339, 809, 340, 341, 342, 343, 0, 344, 345, 346, - 347, 348, 349, 0, 350, 810, 0, 352, 353, 354, - 355, 1042, 1043, 0, 1044, 0, 359, 811, 812, 360, - 813, 361, 362, 363, 364, 365, 0, 0, 366, 0, - 814, 368, 815, 0, 369, 370, 371, 0, 0, 372, - 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, - 383, 384, 385, 386, 387, 1045, 816, 1046, 390, 391, - 392, 0, 0, 394, 395, 817, 396, 2193, 0, 398, - 1047, 400, 401, 402, 0, 403, 404, 0, 0, 405, - 406, 407, 0, 0, 408, 0, 818, 410, 819, 0, - 412, 413, 414, 415, 416, 417, 418, 419, 420, 0, - 421, 422, 0, 424, 0, 426, 427, 428, 0, 429, - 430, 431, 432, 433, 434, 435, 436, 437, 1048, 439, - 440, 441, 442, 0, 443, 444, 445, 446, 447, 448, - 449, 450, 451, 452, 453, 454, 0, 455, 456, 820, - 457, 458, 459, 0, 461, 462, 463, 464, 465, 466, - 467, 468, 469, 0, 470, 471, 472, 473, 474, 0, - 475, 476, 2099, 478, 479, 821, 480, 481, 1050, 483, - 0, 484, 485, 486, 487, 488, 489, 490, 491, 492, - 493, 494, 495, 0, 0, 497, 498, 3834, 499, 822, - 500, 501, 502, 503, 504, 0, 1051, 1052, 0, 0, - 507, 508, 0, 510, 0, 0, 512, 513, 514, 515, - 516, 517, 518, 0, 0, 519, 520, 521, 522, 523, - 0, 0, 524, 525, 526, 527, 528, 0, 1053, 0, - 531, 823, 532, 533, 534, 535, 0, 0, 536, 0, - 0, 537, 538, 539, 540, 541, 542, 1031, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 554, 555, - 556, 0, 224, 225, 226, 227, 228, 229, 230, 231, - 0, 233, 234, 235, 0, 0, 0, 0, 0, 0, - 0, 236, 237, 0, 238, 239, 240, 801, 241, 242, - 243, 0, 1032, 802, 1033, 1034, 0, 248, 249, 250, - 251, 252, 0, 0, 253, 254, 1035, 1036, 257, 0, - 258, 259, 260, 261, 0, 0, 803, 0, 263, 264, - 265, 266, 267, 804, 268, 269, 270, 0, 271, 272, - 273, 274, 275, 276, 0, 805, 277, 278, 279, 0, - 0, 0, 806, 0, 0, 0, 280, 281, 282, 283, - 284, 285, 1037, 1038, 288, 0, 289, 0, 290, 291, - 292, 293, 294, 295, 0, 296, 297, 298, 299, 0, - 0, 300, 301, 1039, 303, 304, 0, 305, 306, 307, - 0, 308, 309, 310, 0, 311, 312, 313, 314, 0, - 316, 317, 318, 0, 0, 320, 0, 321, 322, 1040, - 324, 0, 325, 0, 326, 807, 0, 808, 327, 328, - 329, 330, 0, 331, 0, 0, 0, 334, 0, 335, - 336, 337, 338, 339, 809, 340, 341, 342, 343, 0, - 344, 345, 346, 347, 348, 349, 0, 350, 810, 0, - 352, 353, 354, 355, 1042, 1043, 0, 1044, 0, 359, - 811, 812, 360, 813, 361, 362, 363, 364, 365, 0, - 0, 366, 0, 814, 368, 815, 0, 369, 370, 371, - 0, 0, 372, 373, 374, 375, 376, 377, 378, 379, - 380, 381, 382, 383, 384, 385, 386, 387, 1045, 816, - 1046, 390, 391, 392, 2264, 0, 394, 395, 817, 396, - 0, 0, 398, 1047, 400, 401, 402, 0, 403, 404, - 0, 0, 405, 406, 407, 0, 0, 408, 0, 818, - 410, 819, 0, 412, 413, 414, 415, 416, 417, 418, - 419, 420, 0, 421, 422, 0, 424, 0, 426, 427, - 428, 0, 429, 430, 431, 432, 433, 434, 435, 436, - 437, 1048, 439, 440, 441, 442, 0, 443, 444, 445, + 455, 456, 457, 458, 459, 460, 461, 462, 0, 463, + 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, + 474, 475, 476, 477, 0, 478, 479, 480, 481, 482, + 483, 484, 485, 486, 487, 488, 489, 0, 490, 491, + 0, 493, 494, 495, 496, 497, 498, 499, 500, 501, + 502, 503, 504, 505, 506, 507, 0, 508, 509, 510, + 511, 512, 0, 513, 514, 515, 516, 517, 0, 519, + 520, 521, 522, 0, 523, 524, 525, 526, 527, 528, + 529, 530, 531, 532, 533, 534, 535, 536, 537, 0, + 538, 539, 0, 540, 0, 542, 543, 544, 545, 546, + 0, 547, 548, 549, 0, 0, 550, 551, 552, 553, + 554, 0, 555, 556, 557, 558, 559, 560, 561, 562, + 0, 0, 563, 564, 565, 566, 567, 0, 0, 568, + 569, 570, 571, 572, 573, 574, 0, 575, 0, 577, + 578, 579, 580, 0, 0, 581, 0, 0, 582, 583, + 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, + 594, 595, 596, 597, 598, 599, 600, 601, 609, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 229, 230, 231, + 232, 233, 234, 235, 236, 0, 237, 238, 239, 0, + 0, 0, 0, 0, 0, 0, 240, 241, 0, 242, + 243, 244, 0, 246, 247, 248, 249, 250, 0, 252, + 253, 0, 254, 255, 256, 257, 258, 259, 0, 0, + 260, 261, 262, 263, 264, 0, 265, 266, 267, 268, + 269, 0, 0, 0, 271, 272, 273, 274, 275, 0, + 277, 278, 279, 0, 280, 281, 282, 283, 284, 285, + 0, 0, 287, 288, 289, 0, 0, 0, 0, 0, + 0, 0, 291, 292, 293, 294, 295, 296, 297, 298, + 299, 0, 300, 0, 301, 302, 303, 304, 305, 306, + 0, 307, 308, 309, 310, 0, 0, 311, 312, 313, + 314, 315, 0, 316, 317, 318, 0, 319, 320, 321, + 0, 322, 323, 324, 325, 326, 327, 328, 329, 330, + 331, 0, 332, 0, 333, 334, 335, 336, 0, 337, + 0, 338, 0, 0, 0, 341, 342, 343, 344, 0, + 345, 346, 0, 347, 348, 349, 0, 350, 351, 352, + 353, 918, 0, 356, 357, 358, 359, 0, 360, 361, + 362, 363, 364, 365, 366, 0, 367, 0, 369, 370, + 371, 372, 373, 374, 375, 0, 376, 0, 377, 0, + 0, 380, 0, 382, 383, 384, 385, 386, 0, 0, + 387, 388, 0, 390, 0, 0, 392, 393, 394, 0, + 0, 395, 396, 397, 398, 399, 400, 401, 402, 403, + 404, 405, 406, 407, 408, 409, 410, 411, 0, 413, + 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, + 0, 424, 425, 0, 427, 0, 428, 429, 430, 431, + 432, 433, 0, 434, 435, 0, 0, 436, 437, 438, + 0, 0, 439, 440, 441, 0, 443, 0, 445, 446, + 447, 448, 449, 450, 451, 452, 453, 454, 0, 455, + 456, 457, 458, 459, 460, 461, 462, 0, 463, 464, + 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, + 475, 476, 477, 0, 478, 479, 480, 481, 482, 483, + 484, 485, 486, 487, 488, 489, 0, 490, 491, 0, + 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, + 503, 504, 505, 506, 507, 0, 508, 509, 510, 511, + 512, 0, 513, 514, 515, 516, 517, 0, 519, 520, + 521, 522, 0, 523, 524, 525, 526, 527, 528, 529, + 530, 531, 532, 533, 534, 535, 536, 537, 0, 538, + 539, 0, 540, 0, 542, 543, 544, 545, 546, 0, + 547, 548, 549, 0, 0, 550, 551, 552, 553, 554, + 0, 555, 556, 557, 558, 559, 560, 561, 562, 0, + 0, 563, 564, 565, 566, 567, 0, 0, 568, 569, + 570, 571, 572, 573, 574, 0, 575, 0, 577, 578, + 579, 580, 0, 0, 581, 0, 0, 582, 583, 584, + 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, + 595, 596, 597, 598, 599, 600, 601, 609, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 229, 230, 231, 232, + 233, 234, 235, 236, 0, 237, 238, 239, 0, 0, + 0, 0, 0, 0, 0, 240, 241, 0, 242, 243, + 244, 0, 246, 247, 248, 249, 250, 0, 252, 253, + 0, 254, 255, 256, 257, 258, 259, 0, 0, 260, + 261, 262, 263, 264, 0, 265, 266, 267, 268, 269, + 0, 0, 0, 271, 272, 273, 274, 275, 0, 277, + 278, 279, 0, 280, 281, 282, 283, 284, 285, 0, + 0, 287, 288, 289, 0, 0, 0, 0, 0, 0, + 0, 291, 292, 293, 294, 295, 296, 297, 298, 299, + 0, 300, 0, 301, 302, 303, 304, 305, 306, 0, + 307, 308, 309, 310, 0, 0, 311, 312, 313, 314, + 315, 0, 316, 317, 318, 0, 319, 320, 321, 0, + 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, + 0, 332, 0, 333, 334, 335, 336, 0, 337, 0, + 338, 0, 0, 0, 341, 342, 343, 344, 0, 345, + 346, 0, 347, 348, 349, 0, 350, 351, 352, 353, + 921, 0, 356, 357, 358, 359, 0, 360, 361, 362, + 363, 364, 365, 366, 0, 367, 0, 369, 370, 371, + 372, 373, 374, 375, 0, 376, 0, 377, 0, 0, + 380, 0, 382, 383, 384, 385, 386, 0, 0, 387, + 388, 0, 390, 0, 0, 392, 393, 394, 0, 0, + 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, + 405, 406, 407, 408, 409, 410, 411, 0, 413, 414, + 415, 416, 417, 418, 419, 420, 421, 422, 423, 0, + 424, 425, 0, 427, 0, 428, 429, 430, 431, 432, + 433, 0, 434, 435, 0, 0, 436, 437, 438, 0, + 0, 439, 440, 441, 0, 443, 0, 445, 446, 447, + 448, 449, 450, 451, 452, 453, 454, 0, 455, 456, + 457, 458, 459, 460, 461, 462, 0, 463, 464, 465, + 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, + 476, 477, 0, 478, 479, 480, 481, 482, 483, 484, + 485, 486, 487, 488, 489, 0, 490, 491, 0, 493, + 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, + 504, 505, 506, 507, 0, 508, 509, 510, 511, 512, + 0, 513, 514, 515, 516, 517, 0, 519, 520, 521, + 522, 0, 523, 524, 525, 526, 527, 528, 529, 530, + 531, 532, 533, 534, 535, 536, 537, 0, 538, 539, + 0, 540, 0, 542, 543, 544, 545, 546, 0, 547, + 548, 549, 0, 0, 550, 551, 552, 553, 554, 0, + 555, 556, 557, 558, 559, 560, 561, 562, 0, 0, + 563, 564, 565, 566, 567, 0, 0, 568, 569, 570, + 571, 572, 573, 574, 0, 575, 0, 577, 578, 579, + 580, 0, 0, 581, 0, 0, 582, 583, 584, 585, + 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, + 596, 597, 598, 599, 600, 601, 609, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 229, 230, 231, 232, 233, + 234, 235, 236, 0, 237, 238, 239, 0, 0, 0, + 0, 0, 0, 0, 240, 241, 0, 242, 243, 244, + 0, 246, 247, 248, 249, 250, 0, 252, 253, 0, + 254, 255, 256, 257, 258, 259, 0, 0, 260, 261, + 262, 263, 264, 0, 265, 266, 267, 268, 269, 0, + 0, 0, 271, 272, 273, 274, 275, 0, 277, 278, + 279, 0, 280, 281, 282, 283, 284, 285, 0, 0, + 287, 288, 289, 0, 0, 0, 0, 0, 0, 0, + 291, 292, 293, 294, 295, 296, 297, 298, 299, 0, + 300, 0, 301, 302, 303, 304, 305, 306, 0, 307, + 308, 309, 310, 0, 0, 311, 312, 313, 314, 315, + 0, 316, 317, 318, 0, 319, 320, 321, 0, 322, + 323, 324, 325, 326, 327, 328, 329, 330, 331, 0, + 332, 0, 333, 334, 335, 336, 0, 337, 0, 338, + 0, 0, 0, 341, 342, 343, 344, 0, 345, 346, + 0, 347, 348, 349, 0, 350, 351, 352, 353, 937, + 0, 356, 357, 358, 359, 0, 360, 361, 362, 363, + 364, 365, 366, 0, 367, 0, 369, 370, 371, 372, + 373, 374, 375, 0, 376, 0, 377, 0, 0, 380, + 0, 382, 383, 384, 385, 386, 0, 0, 387, 388, + 0, 390, 0, 0, 392, 393, 394, 0, 0, 395, + 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, + 406, 407, 408, 409, 410, 411, 0, 413, 414, 415, + 416, 417, 418, 419, 420, 421, 422, 423, 0, 424, + 425, 0, 427, 0, 428, 429, 430, 431, 432, 433, + 0, 434, 435, 0, 0, 436, 437, 438, 0, 0, + 439, 440, 441, 0, 443, 0, 445, 446, 447, 448, + 449, 450, 451, 452, 453, 454, 0, 455, 456, 457, + 458, 459, 460, 461, 462, 0, 463, 464, 465, 466, + 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, + 477, 0, 478, 479, 480, 481, 482, 483, 484, 485, + 486, 487, 488, 489, 0, 490, 491, 0, 493, 494, + 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, + 505, 506, 507, 0, 508, 509, 510, 511, 512, 0, + 513, 514, 515, 516, 517, 0, 519, 520, 521, 522, + 0, 523, 524, 525, 526, 527, 528, 529, 530, 531, + 532, 533, 534, 535, 536, 537, 0, 538, 539, 0, + 540, 0, 542, 543, 544, 545, 546, 0, 547, 548, + 549, 0, 0, 550, 551, 552, 553, 554, 0, 555, + 556, 557, 558, 559, 560, 561, 562, 0, 0, 563, + 564, 565, 566, 567, 0, 0, 568, 569, 570, 571, + 572, 573, 574, 0, 575, 0, 577, 578, 579, 580, + 0, 0, 581, 0, 0, 582, 583, 584, 585, 586, + 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, + 597, 598, 599, 600, 601, 609, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 229, 230, 231, 232, 233, 234, + 235, 236, 0, 237, 238, 239, 0, 0, 0, 0, + 0, 0, 0, 240, 241, 0, 242, 243, 244, 0, + 246, 247, 248, 249, 250, 0, 252, 253, 0, 254, + 255, 256, 257, 258, 259, 0, 0, 260, 261, 262, + 263, 264, 0, 265, 266, 267, 268, 269, 0, 0, + 0, 271, 272, 273, 274, 275, 0, 277, 278, 279, + 0, 280, 281, 282, 283, 284, 285, 0, 0, 287, + 288, 289, 0, 0, 0, 0, 0, 0, 0, 291, + 292, 293, 294, 295, 296, 297, 298, 299, 0, 300, + 0, 301, 302, 303, 304, 305, 306, 0, 307, 308, + 309, 310, 0, 0, 311, 312, 313, 314, 315, 0, + 316, 317, 318, 0, 319, 320, 321, 0, 322, 323, + 324, 325, 326, 327, 328, 329, 330, 331, 0, 332, + 0, 333, 334, 335, 336, 0, 337, 0, 338, 0, + 0, 0, 341, 342, 343, 344, 0, 345, 346, 0, + 347, 348, 349, 0, 350, 351, 352, 353, 1004, 0, + 356, 357, 358, 359, 0, 360, 361, 362, 363, 364, + 365, 366, 0, 367, 0, 369, 370, 371, 372, 373, + 374, 375, 0, 376, 0, 377, 0, 0, 380, 0, + 382, 383, 384, 385, 386, 0, 0, 387, 388, 0, + 390, 0, 0, 392, 393, 394, 0, 0, 395, 396, + 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, + 407, 408, 409, 410, 411, 0, 413, 414, 415, 416, + 417, 418, 419, 420, 421, 422, 423, 0, 424, 425, + 0, 427, 0, 428, 429, 430, 431, 432, 433, 0, + 434, 435, 0, 0, 436, 437, 438, 0, 0, 439, + 440, 441, 0, 443, 0, 445, 446, 447, 448, 449, + 450, 451, 452, 453, 454, 0, 455, 456, 457, 458, + 459, 460, 461, 462, 0, 463, 464, 465, 466, 467, + 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, + 0, 478, 479, 480, 481, 482, 483, 484, 485, 486, + 487, 488, 489, 0, 490, 491, 0, 493, 494, 495, + 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, + 506, 507, 0, 508, 509, 510, 511, 512, 0, 513, + 514, 515, 516, 517, 0, 519, 520, 521, 522, 0, + 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, + 533, 534, 535, 536, 537, 0, 538, 539, 0, 540, + 0, 542, 543, 544, 545, 546, 0, 547, 548, 549, + 0, 0, 550, 551, 552, 553, 554, 0, 555, 556, + 557, 558, 559, 560, 561, 562, 0, 0, 563, 564, + 565, 566, 567, 0, 0, 568, 569, 570, 571, 572, + 573, 574, 0, 575, 0, 577, 578, 579, 580, 0, + 0, 581, 0, 0, 582, 583, 584, 585, 586, 587, + 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, + 598, 599, 600, 601, 609, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 229, 230, 231, 232, 233, 234, 235, + 236, 0, 237, 238, 239, 0, 0, 0, 0, 0, + 0, 0, 240, 241, 0, 242, 243, 244, 0, 246, + 247, 248, 249, 250, 0, 252, 253, 0, 254, 255, + 256, 257, 258, 259, 0, 0, 260, 261, 262, 263, + 264, 0, 265, 266, 267, 268, 269, 0, 0, 0, + 271, 272, 273, 274, 275, 0, 277, 278, 279, 0, + 280, 281, 282, 283, 284, 285, 0, 0, 287, 288, + 289, 0, 0, 0, 0, 0, 0, 0, 291, 292, + 293, 294, 295, 296, 297, 298, 299, 0, 300, 0, + 301, 302, 303, 304, 305, 306, 0, 307, 308, 309, + 310, 0, 0, 311, 312, 313, 314, 315, 0, 316, + 317, 318, 0, 319, 320, 321, 0, 322, 323, 324, + 325, 326, 327, 328, 329, 330, 331, 0, 332, 0, + 333, 334, 335, 336, 0, 337, 0, 338, 0, 0, + 0, 341, 342, 343, 344, 0, 345, 346, 0, 347, + 348, 349, 0, 350, 351, 352, 353, 1010, 0, 356, + 357, 358, 359, 0, 360, 361, 362, 363, 364, 365, + 366, 0, 367, 0, 369, 370, 371, 372, 373, 374, + 375, 0, 376, 0, 377, 0, 0, 380, 0, 382, + 383, 384, 385, 386, 0, 0, 387, 388, 0, 390, + 0, 0, 392, 393, 394, 0, 0, 395, 396, 397, + 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, + 408, 409, 410, 411, 0, 413, 414, 415, 416, 417, + 418, 419, 420, 421, 422, 423, 0, 424, 425, 0, + 427, 0, 428, 429, 430, 431, 432, 433, 0, 434, + 435, 0, 0, 436, 437, 438, 0, 0, 439, 440, + 441, 0, 443, 0, 445, 446, 447, 448, 449, 450, + 451, 452, 453, 454, 0, 455, 456, 457, 458, 459, + 460, 461, 462, 0, 463, 464, 465, 466, 467, 468, + 469, 470, 471, 472, 473, 474, 475, 476, 477, 0, + 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, + 488, 489, 0, 490, 491, 0, 493, 494, 495, 496, + 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, + 507, 0, 508, 509, 510, 511, 512, 0, 513, 514, + 515, 516, 517, 0, 519, 520, 521, 522, 0, 523, + 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, + 534, 535, 536, 537, 0, 538, 539, 0, 540, 0, + 542, 543, 544, 545, 546, 0, 547, 548, 549, 0, + 0, 550, 551, 552, 553, 554, 0, 555, 556, 557, + 558, 559, 560, 561, 562, 0, 0, 563, 564, 565, + 566, 567, 0, 0, 568, 569, 570, 571, 572, 573, + 574, 0, 575, 0, 577, 578, 579, 580, 0, 0, + 581, 0, 0, 582, 583, 584, 585, 586, 587, 588, + 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, + 599, 600, 601, 609, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 229, 230, 231, 232, 233, 234, 235, 236, + 0, 237, 238, 239, 0, 0, 0, 0, 0, 0, + 0, 240, 241, 0, 242, 243, 244, 0, 246, 247, + 248, 249, 250, 0, 252, 253, 0, 254, 255, 256, + 257, 258, 259, 0, 0, 260, 261, 262, 263, 264, + 0, 265, 266, 267, 268, 269, 0, 0, 0, 271, + 272, 273, 274, 275, 0, 277, 278, 279, 0, 280, + 281, 282, 283, 284, 285, 0, 0, 287, 288, 289, + 0, 0, 0, 0, 0, 0, 0, 291, 292, 293, + 294, 295, 296, 297, 298, 299, 0, 300, 0, 301, + 302, 303, 304, 305, 306, 0, 307, 308, 309, 310, + 0, 0, 311, 312, 313, 314, 315, 0, 316, 317, + 318, 0, 319, 320, 321, 0, 322, 323, 324, 325, + 326, 327, 328, 329, 330, 331, 0, 332, 0, 333, + 334, 335, 336, 0, 337, 0, 338, 0, 0, 0, + 341, 342, 343, 344, 0, 345, 346, 0, 347, 348, + 349, 0, 350, 351, 352, 353, 1027, 0, 356, 357, + 358, 359, 0, 360, 361, 362, 363, 364, 365, 366, + 0, 367, 0, 369, 370, 371, 372, 373, 374, 375, + 0, 376, 0, 377, 0, 0, 380, 0, 382, 383, + 384, 385, 386, 0, 0, 387, 388, 0, 390, 0, + 0, 392, 393, 394, 0, 0, 395, 396, 397, 398, + 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, + 409, 410, 411, 0, 413, 414, 415, 416, 417, 418, + 419, 420, 421, 422, 423, 0, 424, 425, 0, 427, + 0, 428, 429, 430, 431, 432, 433, 0, 434, 435, + 0, 0, 436, 437, 438, 0, 0, 439, 440, 441, + 0, 443, 0, 445, 446, 447, 448, 449, 450, 451, + 452, 453, 454, 0, 455, 456, 457, 458, 459, 460, + 461, 462, 0, 463, 464, 465, 466, 467, 468, 469, + 470, 471, 472, 473, 474, 475, 476, 477, 0, 478, + 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, + 489, 0, 490, 491, 0, 493, 494, 495, 496, 497, + 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, + 0, 508, 509, 510, 511, 512, 0, 513, 514, 515, + 516, 517, 0, 519, 520, 521, 522, 0, 523, 524, + 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, + 535, 536, 537, 0, 538, 539, 0, 540, 0, 542, + 543, 544, 545, 546, 0, 547, 548, 549, 0, 0, + 550, 551, 552, 553, 554, 0, 555, 556, 557, 558, + 559, 560, 561, 562, 0, 0, 563, 564, 565, 566, + 567, 0, 0, 568, 569, 570, 571, 572, 573, 574, + 0, 575, 0, 577, 578, 579, 580, 0, 0, 581, + 0, 0, 582, 583, 584, 585, 586, 587, 588, 589, + 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, + 600, 601, 609, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 229, 230, 231, 232, 233, 234, 235, 236, 0, + 237, 238, 239, 0, 0, 0, 0, 0, 0, 0, + 240, 241, 0, 242, 243, 244, 0, 246, 247, 248, + 249, 250, 0, 252, 253, 0, 254, 255, 256, 257, + 258, 259, 0, 0, 260, 261, 262, 263, 264, 0, + 265, 266, 267, 268, 269, 0, 0, 0, 271, 272, + 273, 274, 275, 0, 277, 278, 279, 0, 280, 281, + 282, 283, 284, 285, 0, 0, 287, 288, 289, 0, + 0, 0, 0, 0, 0, 0, 291, 292, 293, 294, + 295, 296, 297, 298, 299, 0, 300, 0, 301, 302, + 303, 304, 305, 306, 0, 307, 308, 309, 310, 0, + 0, 311, 312, 313, 314, 315, 0, 316, 317, 318, + 0, 319, 320, 321, 0, 322, 323, 324, 325, 326, + 327, 328, 329, 330, 331, 0, 332, 0, 333, 334, + 335, 336, 0, 337, 0, 338, 0, 0, 0, 341, + 342, 343, 344, 0, 345, 346, 0, 347, 348, 349, + 0, 350, 351, 352, 353, 1030, 0, 356, 357, 358, + 359, 0, 360, 361, 362, 363, 364, 365, 366, 0, + 367, 0, 369, 370, 371, 372, 373, 374, 375, 0, + 376, 0, 377, 0, 0, 380, 0, 382, 383, 384, + 385, 386, 0, 0, 387, 388, 0, 390, 0, 0, + 392, 393, 394, 0, 0, 395, 396, 397, 398, 399, + 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, + 410, 411, 0, 413, 414, 415, 416, 417, 418, 419, + 420, 421, 422, 423, 0, 424, 425, 0, 427, 0, + 428, 429, 430, 431, 432, 433, 0, 434, 435, 0, + 0, 436, 437, 438, 0, 0, 439, 440, 441, 0, + 443, 0, 445, 446, 447, 448, 449, 450, 451, 452, + 453, 454, 0, 455, 456, 457, 458, 459, 460, 461, + 462, 0, 463, 464, 465, 466, 467, 468, 469, 470, + 471, 472, 473, 474, 475, 476, 477, 0, 478, 479, + 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, + 0, 490, 491, 0, 493, 494, 495, 496, 497, 498, + 499, 500, 501, 502, 503, 504, 505, 506, 507, 0, + 508, 509, 510, 511, 512, 0, 513, 514, 515, 516, + 517, 0, 519, 520, 521, 522, 0, 523, 524, 525, + 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, + 536, 537, 0, 538, 539, 0, 540, 0, 542, 543, + 544, 545, 546, 0, 547, 548, 549, 0, 0, 550, + 551, 552, 553, 554, 0, 555, 556, 557, 558, 559, + 560, 561, 562, 0, 0, 563, 564, 565, 566, 567, + 0, 0, 568, 569, 570, 571, 572, 573, 574, 0, + 575, 0, 577, 578, 579, 580, 0, 0, 581, 0, + 0, 582, 583, 584, 585, 586, 587, 588, 589, 590, + 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, + 601, 609, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 229, 230, 231, 232, 233, 234, 235, 236, 0, 237, + 238, 239, 0, 0, 0, 0, 0, 0, 0, 240, + 241, 0, 242, 243, 244, 0, 246, 247, 248, 249, + 250, 0, 252, 253, 0, 254, 255, 256, 257, 258, + 259, 0, 0, 260, 261, 262, 263, 264, 0, 265, + 266, 267, 268, 269, 0, 0, 0, 271, 272, 273, + 274, 275, 0, 277, 278, 279, 0, 280, 281, 282, + 283, 284, 285, 0, 0, 287, 288, 289, 0, 0, + 0, 0, 0, 0, 0, 291, 292, 293, 294, 295, + 296, 297, 298, 299, 0, 300, 0, 301, 302, 303, + 304, 305, 306, 0, 307, 308, 309, 310, 0, 0, + 311, 312, 313, 314, 315, 0, 316, 317, 318, 0, + 319, 320, 321, 0, 322, 323, 324, 325, 326, 327, + 328, 329, 330, 331, 0, 332, 0, 333, 334, 335, + 336, 0, 337, 0, 338, 0, 0, 0, 341, 342, + 343, 344, 0, 345, 346, 0, 347, 348, 349, 0, + 350, 351, 352, 353, 1032, 0, 356, 357, 358, 359, + 0, 360, 361, 362, 363, 364, 365, 366, 0, 367, + 0, 369, 370, 371, 372, 373, 374, 375, 0, 376, + 0, 377, 0, 0, 380, 0, 382, 383, 384, 385, + 386, 0, 0, 387, 388, 0, 390, 0, 0, 392, + 393, 394, 0, 0, 395, 396, 397, 398, 399, 400, + 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, + 411, 0, 413, 414, 415, 416, 417, 418, 419, 420, + 421, 422, 423, 0, 424, 425, 0, 427, 0, 428, + 429, 430, 431, 432, 433, 0, 434, 435, 0, 0, + 436, 437, 438, 0, 0, 439, 440, 441, 0, 443, + 0, 445, 446, 447, 448, 449, 450, 451, 452, 453, + 454, 0, 455, 456, 457, 458, 459, 460, 461, 462, + 0, 463, 464, 465, 466, 467, 468, 469, 470, 471, + 472, 473, 474, 475, 476, 477, 0, 478, 479, 480, + 481, 482, 483, 484, 485, 486, 487, 488, 489, 0, + 490, 491, 0, 493, 494, 495, 496, 497, 498, 499, + 500, 501, 502, 503, 504, 505, 506, 507, 0, 508, + 509, 510, 511, 512, 0, 513, 514, 515, 516, 517, + 0, 519, 520, 521, 522, 0, 523, 524, 525, 526, + 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, + 537, 0, 538, 539, 0, 540, 0, 542, 543, 544, + 545, 546, 0, 547, 548, 549, 0, 0, 550, 551, + 552, 553, 554, 0, 555, 556, 557, 558, 559, 560, + 561, 562, 0, 0, 563, 564, 565, 566, 567, 0, + 0, 568, 569, 570, 571, 572, 573, 574, 0, 575, + 0, 577, 578, 579, 580, 0, 0, 581, 0, 0, + 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, + 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, + 609, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 229, + 230, 231, 232, 233, 234, 235, 236, 0, 237, 238, + 239, 0, 0, 0, 0, 0, 0, 0, 240, 241, + 0, 242, 243, 244, 0, 246, 247, 248, 249, 250, + 0, 252, 253, 0, 254, 255, 256, 257, 258, 259, + 0, 0, 260, 261, 262, 263, 264, 0, 265, 266, + 267, 268, 269, 0, 0, 0, 271, 272, 273, 274, + 275, 0, 277, 278, 279, 0, 280, 281, 282, 283, + 284, 285, 0, 0, 287, 288, 289, 0, 0, 0, + 0, 0, 0, 0, 291, 292, 293, 294, 295, 296, + 297, 298, 299, 0, 300, 0, 301, 302, 303, 304, + 305, 306, 0, 307, 308, 309, 310, 0, 0, 311, + 312, 313, 314, 315, 0, 316, 317, 318, 0, 319, + 320, 321, 0, 322, 323, 324, 325, 326, 327, 328, + 329, 330, 331, 0, 332, 0, 333, 334, 335, 336, + 0, 337, 0, 338, 0, 0, 0, 341, 342, 343, + 344, 0, 345, 346, 0, 347, 348, 349, 0, 350, + 351, 352, 353, 1068, 0, 356, 357, 358, 359, 0, + 360, 361, 362, 363, 364, 365, 366, 0, 367, 0, + 369, 370, 371, 372, 373, 374, 375, 0, 376, 0, + 377, 0, 0, 380, 0, 382, 383, 384, 385, 386, + 0, 0, 387, 388, 0, 390, 0, 0, 392, 393, + 394, 0, 0, 395, 396, 397, 398, 399, 400, 401, + 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, + 0, 413, 414, 415, 416, 417, 418, 419, 420, 421, + 422, 423, 0, 424, 425, 0, 427, 0, 428, 429, + 430, 431, 432, 433, 0, 434, 435, 0, 0, 436, + 437, 438, 0, 0, 439, 440, 441, 0, 443, 0, + 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, + 0, 455, 456, 457, 458, 459, 460, 461, 462, 0, + 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, + 473, 474, 475, 476, 477, 0, 478, 479, 480, 481, + 482, 483, 484, 485, 486, 487, 488, 489, 0, 490, + 491, 0, 493, 494, 495, 496, 497, 498, 499, 500, + 501, 502, 503, 504, 505, 506, 507, 0, 508, 509, + 510, 511, 512, 0, 513, 514, 515, 516, 517, 0, + 519, 520, 521, 522, 0, 523, 524, 525, 526, 527, + 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, + 0, 538, 539, 0, 540, 0, 542, 543, 544, 545, + 546, 0, 547, 548, 549, 0, 0, 550, 551, 552, + 553, 554, 0, 555, 556, 557, 558, 559, 560, 561, + 562, 0, 0, 563, 564, 565, 566, 567, 0, 0, + 568, 569, 570, 571, 572, 573, 574, 0, 575, 0, + 577, 578, 579, 580, 0, 0, 581, 0, 0, 582, + 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, + 593, 594, 595, 596, 597, 598, 599, 600, 601, 609, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 229, 230, + 231, 232, 233, 234, 235, 236, 0, 237, 238, 239, + 0, 0, 0, 0, 0, 0, 0, 240, 241, 0, + 242, 243, 244, 0, 246, 247, 248, 249, 250, 0, + 252, 253, 0, 254, 255, 256, 257, 258, 259, 0, + 0, 260, 261, 262, 263, 264, 0, 265, 266, 267, + 268, 269, 0, 0, 0, 271, 272, 273, 274, 275, + 0, 277, 278, 279, 0, 280, 281, 282, 283, 284, + 285, 0, 0, 287, 288, 289, 0, 0, 0, 0, + 0, 0, 0, 291, 292, 293, 294, 295, 296, 297, + 298, 299, 0, 300, 0, 301, 302, 303, 304, 305, + 306, 0, 307, 308, 309, 310, 0, 0, 311, 312, + 313, 314, 315, 0, 316, 317, 318, 0, 319, 320, + 321, 0, 322, 323, 324, 325, 326, 327, 328, 329, + 330, 331, 0, 332, 0, 333, 334, 335, 336, 0, + 337, 0, 338, 0, 0, 0, 341, 342, 343, 344, + 0, 345, 346, 0, 347, 348, 349, 0, 350, 351, + 352, 353, 1132, 0, 356, 357, 358, 359, 0, 360, + 361, 362, 363, 364, 365, 366, 0, 367, 0, 369, + 370, 371, 372, 373, 374, 375, 0, 376, 0, 377, + 0, 0, 380, 0, 382, 383, 384, 385, 386, 0, + 0, 387, 388, 0, 390, 0, 0, 392, 393, 394, + 0, 0, 395, 396, 397, 398, 399, 400, 401, 402, + 403, 404, 405, 406, 407, 408, 409, 410, 411, 0, + 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, + 423, 0, 424, 425, 0, 427, 0, 428, 429, 430, + 431, 432, 433, 0, 434, 435, 0, 0, 436, 437, + 438, 0, 0, 439, 440, 441, 0, 443, 0, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 0, - 455, 456, 820, 457, 458, 459, 0, 461, 462, 463, - 464, 465, 466, 467, 468, 469, 0, 470, 471, 472, - 473, 474, 0, 475, 476, 1049, 478, 479, 821, 480, - 481, 1050, 483, 0, 484, 485, 486, 487, 488, 489, - 490, 491, 492, 493, 494, 495, 0, 0, 497, 498, - 0, 499, 822, 500, 501, 502, 503, 504, 0, 1051, - 1052, 0, 0, 507, 508, 0, 510, 0, 0, 512, - 513, 514, 515, 516, 517, 518, 0, 0, 519, 520, - 521, 522, 523, 0, 0, 524, 525, 526, 527, 528, - 0, 1053, 0, 531, 823, 532, 533, 534, 535, 0, - 0, 536, 0, 0, 537, 538, 539, 540, 541, 542, - 1031, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 554, 555, 556, 0, 224, 225, 226, 227, 228, - 229, 230, 231, 0, 233, 234, 235, 0, 0, 0, - 0, 0, 0, 0, 236, 237, 0, 238, 239, 240, - 801, 241, 242, 243, 0, 1032, 802, 1033, 1034, 0, - 248, 249, 250, 251, 252, 0, 0, 253, 254, 1035, - 1036, 257, 0, 258, 259, 260, 261, 0, 0, 803, - 0, 263, 264, 265, 266, 267, 804, 268, 269, 270, - 0, 271, 272, 273, 274, 275, 276, 0, 805, 277, - 278, 279, 0, 0, 0, 806, 0, 0, 0, 280, - 281, 282, 283, 284, 285, 1037, 1038, 288, 0, 289, - 0, 290, 291, 292, 293, 294, 295, 0, 296, 297, - 298, 299, 0, 0, 300, 301, 1039, 303, 304, 0, - 305, 306, 307, 0, 308, 309, 310, 0, 311, 312, - 313, 314, 0, 316, 317, 318, 0, 0, 320, 0, - 321, 322, 1040, 324, 0, 325, 0, 326, 807, 0, - 808, 327, 328, 329, 330, 0, 331, 0, 0, 0, - 334, 0, 335, 336, 337, 338, 339, 809, 340, 341, - 342, 343, 0, 344, 345, 346, 347, 348, 349, 0, - 350, 810, 0, 352, 353, 354, 355, 1042, 1043, 0, - 1044, 0, 359, 811, 812, 360, 813, 361, 362, 363, - 364, 365, 0, 0, 366, 0, 814, 368, 815, 0, - 369, 370, 371, 0, 0, 372, 373, 374, 375, 376, - 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, - 387, 1045, 816, 1046, 390, 391, 392, 3647, 0, 394, - 395, 817, 396, 0, 0, 398, 1047, 400, 401, 402, - 0, 403, 404, 0, 0, 405, 406, 407, 0, 0, - 408, 0, 818, 410, 819, 0, 412, 413, 414, 415, - 416, 417, 418, 419, 420, 0, 421, 422, 0, 424, - 0, 426, 427, 428, 0, 429, 430, 431, 432, 433, - 434, 435, 436, 437, 1048, 439, 440, 441, 442, 0, - 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, - 453, 454, 0, 455, 456, 820, 457, 458, 459, 0, - 461, 462, 463, 464, 465, 466, 467, 468, 469, 0, - 470, 471, 472, 473, 474, 0, 475, 476, 1049, 478, - 479, 821, 480, 481, 1050, 483, 0, 484, 485, 486, - 487, 488, 489, 490, 491, 492, 493, 494, 495, 0, - 0, 497, 498, 0, 499, 822, 500, 501, 502, 503, - 504, 0, 1051, 1052, 0, 0, 507, 508, 0, 510, - 0, 0, 512, 513, 514, 515, 516, 517, 518, 0, - 0, 519, 520, 521, 522, 523, 0, 0, 524, 525, - 526, 527, 528, 0, 1053, 0, 531, 823, 532, 533, - 534, 535, 0, 0, 536, 0, 0, 537, 538, 539, - 540, 541, 542, 1031, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 554, 555, 556, 0, 224, 225, - 226, 227, 228, 229, 230, 231, 0, 233, 234, 235, - 0, 0, 0, 0, 0, 0, 0, 236, 237, 0, - 238, 239, 240, 801, 241, 242, 243, 0, 1032, 802, - 1033, 1034, 0, 248, 249, 250, 251, 252, 0, 0, - 253, 254, 1035, 1036, 257, 0, 258, 259, 260, 261, - 0, 0, 803, 0, 263, 264, 265, 266, 267, 804, - 268, 269, 270, 0, 271, 272, 273, 274, 275, 276, - 0, 805, 277, 278, 279, 0, 0, 0, 806, 0, - 0, 0, 280, 281, 282, 283, 284, 285, 1037, 1038, - 288, 0, 289, 0, 290, 291, 292, 293, 294, 295, - 0, 296, 297, 298, 299, 0, 0, 300, 301, 1039, - 303, 304, 0, 305, 306, 307, 0, 308, 309, 310, - 0, 311, 312, 313, 314, 0, 316, 317, 318, 0, - 0, 320, 0, 321, 322, 1040, 324, 5176, 325, 0, - 326, 807, 0, 808, 327, 328, 329, 330, 0, 331, - 0, 0, 0, 334, 0, 335, 336, 337, 338, 339, - 809, 340, 341, 342, 343, 0, 344, 345, 346, 347, - 348, 349, 0, 350, 810, 0, 352, 353, 354, 355, - 1042, 1043, 0, 1044, 0, 359, 811, 812, 360, 813, - 361, 362, 363, 364, 365, 0, 0, 366, 0, 814, - 368, 815, 0, 369, 370, 371, 0, 0, 372, 373, - 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, - 384, 385, 386, 387, 1045, 816, 1046, 390, 391, 392, - 0, 0, 394, 395, 817, 396, 0, 0, 398, 1047, - 400, 401, 402, 0, 403, 404, 0, 0, 405, 406, - 407, 0, 0, 408, 0, 818, 410, 819, 0, 412, - 413, 414, 415, 416, 417, 418, 419, 420, 0, 421, - 422, 0, 424, 0, 426, 427, 428, 0, 429, 430, - 431, 432, 433, 434, 435, 436, 437, 1048, 439, 440, - 441, 442, 0, 443, 444, 445, 446, 447, 448, 449, - 450, 451, 452, 453, 454, 0, 455, 456, 820, 457, - 458, 459, 0, 461, 462, 463, 464, 465, 466, 467, - 468, 469, 0, 470, 471, 472, 473, 474, 0, 475, - 476, 1049, 478, 479, 821, 480, 481, 1050, 483, 0, - 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, - 494, 495, 0, 0, 497, 498, 0, 499, 822, 500, - 501, 502, 503, 504, 0, 1051, 1052, 0, 0, 507, - 508, 0, 510, 0, 0, 512, 513, 514, 515, 516, - 517, 518, 0, 0, 519, 520, 521, 522, 523, 0, - 0, 524, 525, 526, 527, 528, 0, 1053, 0, 531, - 823, 532, 533, 534, 535, 0, 0, 536, 0, 0, - 537, 538, 539, 540, 541, 542, 1031, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 554, 555, 556, - 0, 224, 225, 226, 227, 228, 229, 230, 231, 0, - 233, 234, 235, 0, 0, 0, 0, 0, 0, 0, - 236, 237, 0, 238, 239, 240, 801, 241, 242, 243, - 0, 1032, 802, 1033, 1034, 0, 248, 249, 250, 251, - 252, 0, 0, 253, 254, 1035, 1036, 257, 0, 258, - 259, 260, 261, 0, 0, 803, 0, 263, 264, 265, - 266, 267, 804, 268, 269, 270, 0, 271, 272, 273, - 274, 275, 276, 0, 805, 277, 278, 279, 0, 0, - 0, 806, 0, 0, 0, 280, 281, 282, 283, 284, - 285, 1037, 1038, 288, 0, 289, 0, 290, 291, 292, - 293, 294, 295, 0, 296, 297, 298, 299, 0, 0, - 300, 301, 1039, 303, 304, 0, 305, 306, 307, 0, - 308, 309, 310, 0, 311, 312, 313, 314, 0, 316, - 317, 318, 0, 0, 320, 0, 321, 322, 1040, 324, - 0, 325, 0, 326, 807, 0, 808, 327, 328, 329, - 330, 0, 331, 0, 0, 0, 334, 0, 335, 336, - 337, 338, 1041, 809, 340, 341, 342, 343, 0, 344, - 345, 346, 347, 348, 349, 0, 350, 810, 0, 352, - 353, 354, 355, 1042, 1043, 0, 1044, 0, 359, 811, - 812, 360, 813, 361, 362, 363, 364, 365, 0, 0, - 366, 0, 814, 368, 815, 0, 369, 370, 371, 0, - 0, 372, 373, 374, 375, 376, 377, 378, 379, 380, - 381, 382, 383, 384, 385, 386, 387, 1045, 816, 1046, - 390, 391, 392, 0, 0, 394, 395, 817, 396, 0, - 0, 398, 1047, 400, 401, 402, 0, 403, 404, 0, - 0, 405, 406, 407, 0, 0, 408, 0, 818, 410, - 819, 0, 412, 413, 414, 415, 416, 417, 418, 419, - 420, 0, 421, 422, 0, 424, 0, 426, 427, 428, - 0, 429, 430, 431, 432, 433, 434, 435, 436, 437, - 1048, 439, 440, 441, 442, 0, 443, 444, 445, 446, + 455, 456, 457, 458, 459, 460, 461, 462, 0, 463, + 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, + 474, 475, 476, 477, 0, 478, 479, 480, 481, 482, + 483, 484, 485, 486, 487, 488, 489, 0, 490, 491, + 0, 493, 494, 495, 496, 497, 498, 499, 500, 501, + 502, 503, 504, 505, 506, 507, 0, 508, 509, 510, + 511, 512, 0, 513, 514, 515, 516, 517, 0, 519, + 520, 521, 522, 0, 523, 524, 525, 526, 527, 528, + 529, 530, 531, 532, 533, 534, 535, 536, 537, 0, + 538, 539, 0, 540, 0, 542, 543, 544, 545, 546, + 0, 547, 548, 549, 0, 0, 550, 551, 552, 553, + 554, 0, 555, 556, 557, 558, 559, 560, 561, 562, + 0, 0, 563, 564, 565, 566, 567, 0, 0, 568, + 569, 570, 571, 572, 573, 574, 0, 575, 0, 577, + 578, 579, 580, 0, 0, 581, 0, 0, 582, 583, + 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, + 594, 595, 596, 597, 598, 599, 600, 601, 609, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 229, 230, 231, + 232, 233, 234, 235, 236, 0, 237, 238, 239, 0, + 0, 0, 0, 0, 0, 0, 240, 241, 0, 242, + 243, 244, 0, 246, 247, 248, 249, 250, 0, 252, + 253, 0, 254, 255, 256, 257, 258, 259, 0, 0, + 260, 261, 262, 263, 264, 0, 265, 266, 267, 268, + 269, 0, 0, 0, 271, 272, 273, 274, 275, 0, + 277, 278, 279, 0, 280, 281, 282, 283, 284, 285, + 0, 0, 287, 288, 289, 0, 0, 0, 0, 0, + 0, 0, 291, 292, 293, 294, 295, 296, 297, 298, + 299, 0, 300, 0, 301, 302, 303, 304, 305, 306, + 0, 307, 308, 309, 310, 0, 0, 311, 312, 313, + 314, 315, 0, 316, 317, 318, 0, 319, 320, 321, + 0, 322, 323, 324, 325, 326, 327, 328, 329, 330, + 331, 0, 332, 0, 333, 334, 335, 336, 0, 337, + 0, 338, 0, 0, 0, 341, 342, 343, 344, 0, + 345, 346, 0, 347, 348, 349, 0, 350, 351, 352, + 353, 1134, 0, 356, 357, 358, 359, 0, 360, 361, + 362, 363, 364, 365, 366, 0, 367, 0, 369, 370, + 371, 372, 373, 374, 375, 0, 376, 0, 377, 0, + 0, 380, 0, 382, 383, 384, 385, 386, 0, 0, + 387, 388, 0, 390, 0, 0, 392, 393, 394, 0, + 0, 395, 396, 397, 398, 399, 400, 401, 402, 403, + 404, 405, 406, 407, 408, 409, 410, 411, 0, 413, + 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, + 0, 424, 425, 0, 427, 0, 428, 429, 430, 431, + 432, 433, 0, 434, 435, 0, 0, 436, 437, 438, + 0, 0, 439, 440, 441, 0, 443, 0, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 0, 455, - 456, 820, 457, 458, 459, 0, 461, 462, 463, 464, - 465, 466, 467, 468, 469, 0, 470, 471, 472, 473, - 474, 0, 475, 476, 1049, 478, 479, 821, 480, 481, - 1050, 483, 0, 484, 485, 486, 487, 488, 489, 490, - 491, 492, 493, 494, 495, 0, 0, 497, 498, 0, - 499, 822, 500, 501, 502, 503, 504, 0, 1051, 1052, - 0, 0, 507, 508, 0, 510, 0, 0, 512, 513, - 514, 515, 516, 517, 518, 0, 0, 519, 520, 521, - 522, 523, 0, 0, 524, 525, 526, 527, 528, 0, - 1053, 0, 531, 823, 532, 533, 534, 535, 0, 0, - 536, 0, 0, 537, 538, 539, 540, 541, 542, 1031, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 554, 555, 556, 0, 224, 225, 226, 227, 228, 229, - 230, 231, 0, 233, 234, 235, 0, 0, 0, 0, - 0, 0, 0, 236, 237, 0, 238, 239, 240, 801, - 241, 242, 243, 0, 1032, 802, 1033, 1034, 0, 248, - 249, 250, 251, 252, 0, 0, 253, 254, 1035, 1036, - 257, 0, 258, 259, 260, 261, 0, 0, 803, 0, - 263, 264, 265, 266, 267, 804, 268, 269, 270, 0, - 271, 272, 273, 274, 275, 276, 0, 805, 277, 278, - 279, 0, 0, 0, 806, 0, 0, 0, 280, 281, - 282, 283, 284, 285, 1037, 1038, 288, 0, 289, 0, - 290, 291, 292, 293, 294, 295, 0, 296, 297, 298, - 299, 0, 0, 300, 301, 1039, 303, 304, 0, 305, - 306, 307, 0, 308, 309, 310, 0, 311, 312, 313, - 314, 0, 316, 317, 318, 0, 0, 320, 0, 321, - 322, 1040, 324, 0, 325, 0, 326, 807, 0, 808, - 327, 328, 329, 330, 0, 331, 0, 0, 0, 334, - 0, 335, 336, 337, 338, 1095, 809, 340, 341, 342, - 343, 0, 344, 345, 346, 347, 348, 349, 0, 350, - 810, 0, 352, 353, 354, 355, 1042, 1043, 0, 1044, - 0, 359, 811, 812, 360, 813, 361, 362, 363, 364, - 365, 0, 0, 366, 0, 814, 368, 815, 0, 369, - 370, 371, 0, 0, 372, 373, 374, 375, 376, 377, - 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, - 1045, 816, 1046, 390, 391, 392, 0, 0, 394, 395, - 817, 396, 0, 0, 398, 1047, 400, 401, 402, 0, - 403, 404, 0, 0, 405, 406, 407, 0, 0, 408, - 0, 818, 410, 819, 0, 412, 413, 414, 415, 416, - 417, 418, 419, 420, 0, 421, 422, 0, 424, 0, - 426, 427, 428, 0, 429, 430, 431, 432, 433, 434, - 435, 436, 437, 1048, 439, 440, 441, 442, 0, 443, - 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, - 454, 0, 455, 456, 820, 457, 458, 459, 0, 461, - 462, 463, 464, 465, 466, 467, 468, 469, 0, 470, - 471, 472, 473, 474, 0, 475, 476, 1049, 478, 479, - 821, 480, 481, 1050, 483, 0, 484, 485, 486, 487, - 488, 489, 490, 491, 492, 493, 494, 495, 0, 0, - 497, 498, 0, 499, 822, 500, 501, 502, 503, 504, - 0, 1051, 1052, 0, 0, 507, 508, 0, 510, 0, - 0, 512, 513, 514, 515, 516, 517, 518, 0, 0, - 519, 520, 521, 522, 523, 0, 0, 524, 525, 526, - 527, 528, 0, 1053, 0, 531, 823, 532, 533, 534, - 535, 0, 0, 536, 0, 0, 537, 538, 539, 540, - 541, 542, 1031, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 554, 555, 556, 0, 224, 225, 226, - 227, 228, 229, 230, 231, 0, 233, 234, 235, 0, - 0, 0, 0, 0, 0, 0, 236, 237, 0, 238, - 239, 240, 801, 241, 242, 243, 0, 1032, 802, 1033, - 1034, 0, 248, 249, 250, 251, 252, 0, 0, 253, - 254, 1035, 1036, 257, 0, 258, 259, 260, 261, 0, - 0, 803, 0, 263, 264, 265, 266, 267, 804, 268, - 269, 270, 0, 271, 272, 273, 274, 275, 276, 0, - 805, 277, 278, 279, 0, 0, 0, 806, 0, 0, - 0, 280, 281, 282, 283, 284, 285, 1037, 1038, 288, - 0, 289, 0, 290, 291, 292, 293, 294, 295, 0, - 296, 297, 298, 299, 0, 0, 300, 301, 1039, 303, - 304, 0, 305, 306, 307, 0, 308, 309, 310, 0, - 311, 312, 313, 314, 0, 316, 317, 318, 0, 0, - 320, 0, 321, 322, 1040, 324, 0, 325, 0, 326, - 807, 0, 808, 327, 328, 329, 330, 0, 331, 0, - 0, 0, 334, 0, 335, 336, 337, 338, 339, 809, - 340, 341, 342, 343, 0, 344, 345, 346, 347, 348, - 349, 0, 350, 810, 0, 352, 353, 354, 355, 1042, - 1043, 0, 1044, 0, 359, 811, 812, 360, 813, 361, - 362, 363, 364, 365, 0, 0, 366, 0, 814, 368, - 815, 0, 369, 370, 371, 0, 0, 372, 373, 374, - 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, - 385, 386, 387, 1045, 816, 1046, 390, 391, 392, 0, - 0, 394, 395, 817, 396, 0, 0, 398, 1047, 400, - 401, 402, 0, 403, 404, 0, 0, 405, 406, 407, - 0, 0, 408, 0, 818, 410, 819, 0, 412, 413, - 414, 415, 416, 417, 418, 419, 420, 0, 421, 422, - 0, 424, 0, 426, 427, 428, 0, 429, 430, 431, - 432, 433, 434, 435, 436, 437, 1048, 439, 440, 441, - 442, 0, 443, 444, 445, 446, 447, 448, 449, 450, - 451, 452, 453, 454, 0, 455, 456, 820, 457, 458, - 459, 0, 461, 462, 463, 464, 465, 466, 467, 468, - 469, 0, 470, 471, 472, 473, 474, 0, 475, 476, - 1049, 478, 479, 821, 480, 481, 1050, 483, 0, 484, - 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, - 495, 0, 0, 497, 498, 0, 499, 822, 500, 501, - 502, 503, 504, 0, 1051, 1052, 0, 0, 507, 508, - 0, 510, 0, 0, 512, 513, 514, 515, 516, 517, - 518, 0, 0, 519, 520, 521, 522, 523, 0, 0, - 524, 525, 526, 527, 528, 0, 1053, 0, 531, 823, - 532, 533, 534, 535, 0, 0, 536, 0, 0, 537, - 538, 539, 540, 541, 542, 1031, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 554, 555, 556, 0, - 224, 225, 226, 227, 228, 229, 230, 231, 0, 233, - 234, 235, 0, 0, 0, 0, 0, 0, 0, 236, - 237, 0, 238, 239, 240, 801, 241, 242, 243, 0, - 1032, 802, 1033, 1034, 0, 248, 249, 250, 251, 252, - 0, 0, 253, 254, 1035, 1036, 257, 0, 258, 259, - 260, 261, 0, 0, 803, 0, 263, 264, 265, 266, - 267, 804, 268, 269, 270, 0, 271, 272, 273, 274, - 275, 276, 0, 805, 277, 278, 279, 0, 0, 0, - 806, 0, 0, 0, 280, 281, 282, 283, 284, 285, - 1037, 1038, 288, 0, 289, 0, 290, 291, 292, 293, - 294, 295, 0, 296, 297, 298, 299, 0, 0, 300, - 301, 1039, 303, 304, 0, 305, 306, 307, 0, 308, - 309, 310, 0, 311, 312, 313, 314, 0, 316, 317, - 318, 0, 0, 320, 0, 321, 322, 1040, 324, 0, - 325, 0, 326, 807, 0, 808, 327, 328, 329, 330, - 0, 331, 0, 0, 0, 334, 0, 335, 336, 337, - 338, 339, 809, 340, 341, 342, 343, 0, 344, 345, - 346, 347, 348, 349, 0, 350, 810, 0, 352, 353, - 354, 355, 1042, 1043, 0, 1044, 0, 359, 811, 812, - 360, 813, 361, 362, 363, 364, 365, 0, 0, 366, - 0, 814, 368, 815, 0, 369, 370, 371, 0, 0, - 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, - 382, 383, 384, 385, 386, 387, 1045, 816, 1046, 390, - 391, 392, 0, 0, 394, 395, 817, 396, 0, 0, - 398, 1047, 400, 401, 402, 0, 403, 404, 0, 0, - 405, 406, 407, 0, 0, 408, 0, 818, 410, 819, - 0, 412, 413, 414, 415, 416, 417, 418, 419, 420, - 0, 421, 422, 0, 424, 0, 426, 427, 428, 0, - 429, 430, 431, 432, 433, 434, 435, 436, 437, 1048, - 439, 440, 441, 442, 0, 443, 444, 445, 446, 447, + 456, 457, 458, 459, 460, 461, 462, 0, 463, 464, + 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, + 475, 476, 477, 0, 478, 479, 480, 481, 482, 483, + 484, 485, 486, 487, 488, 489, 0, 490, 491, 0, + 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, + 503, 504, 505, 506, 507, 0, 508, 509, 510, 511, + 512, 0, 513, 514, 515, 516, 517, 0, 519, 520, + 521, 522, 0, 523, 524, 525, 526, 527, 528, 529, + 530, 531, 532, 533, 534, 535, 536, 537, 0, 538, + 539, 0, 540, 0, 542, 543, 544, 545, 546, 0, + 547, 548, 549, 0, 0, 550, 551, 552, 553, 554, + 0, 555, 556, 557, 558, 559, 560, 561, 562, 0, + 0, 563, 564, 565, 566, 567, 0, 0, 568, 569, + 570, 571, 572, 573, 574, 0, 575, 0, 577, 578, + 579, 580, 0, 0, 581, 0, 0, 582, 583, 584, + 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, + 595, 596, 597, 598, 599, 600, 601, 609, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 229, 230, 231, 232, + 233, 234, 235, 236, 0, 237, 238, 239, 0, 0, + 0, 0, 0, 0, 0, 240, 241, 0, 242, 243, + 244, 0, 246, 247, 248, 249, 250, 0, 252, 253, + 0, 254, 255, 256, 257, 258, 259, 0, 0, 260, + 261, 262, 263, 264, 0, 265, 266, 267, 268, 269, + 0, 0, 0, 271, 272, 273, 274, 275, 0, 277, + 278, 279, 0, 280, 281, 282, 283, 284, 285, 0, + 0, 287, 288, 289, 0, 0, 0, 0, 0, 0, + 0, 291, 292, 293, 294, 295, 296, 297, 298, 299, + 0, 300, 0, 301, 302, 303, 304, 305, 306, 0, + 307, 308, 309, 310, 0, 0, 311, 312, 313, 314, + 315, 0, 316, 317, 318, 0, 319, 320, 321, 0, + 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, + 0, 332, 0, 333, 334, 335, 336, 0, 337, 0, + 338, 0, 0, 0, 341, 342, 343, 344, 0, 345, + 346, 0, 347, 348, 349, 0, 350, 351, 352, 353, + 1144, 0, 356, 357, 358, 359, 0, 360, 361, 362, + 363, 364, 365, 366, 0, 367, 0, 369, 370, 371, + 372, 373, 374, 375, 0, 376, 0, 377, 0, 0, + 380, 0, 382, 383, 384, 385, 386, 0, 0, 387, + 388, 0, 390, 0, 0, 392, 393, 394, 0, 0, + 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, + 405, 406, 407, 408, 409, 410, 411, 0, 413, 414, + 415, 416, 417, 418, 419, 420, 421, 422, 423, 0, + 424, 425, 0, 427, 0, 428, 429, 430, 431, 432, + 433, 0, 434, 435, 0, 0, 436, 437, 438, 0, + 0, 439, 440, 441, 0, 443, 0, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 0, 455, 456, - 820, 457, 458, 459, 0, 461, 462, 463, 464, 465, - 466, 467, 468, 469, 0, 470, 471, 472, 473, 474, - 0, 475, 476, 2099, 478, 479, 821, 480, 481, 1050, - 483, 0, 484, 485, 486, 487, 488, 489, 490, 491, - 492, 493, 494, 495, 0, 0, 497, 498, 0, 499, - 822, 500, 501, 502, 503, 504, 0, 1051, 1052, 0, - 0, 507, 508, 0, 510, 0, 0, 512, 513, 514, - 515, 516, 517, 518, 0, 0, 519, 520, 521, 522, - 523, 0, 0, 524, 525, 526, 527, 528, 0, 1053, - 0, 531, 823, 532, 533, 534, 535, 0, 0, 536, - 0, 0, 537, 538, 539, 540, 541, 542, 1031, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 554, - 555, 556, 0, 224, 225, 226, 227, 228, 229, 230, - 231, 0, 233, 234, 235, 0, 0, 0, 0, 0, - 0, 0, 236, 237, 0, 238, 239, 240, 801, 241, - 242, 243, 0, 1032, 802, 1033, 1034, 0, 248, 249, - 250, 251, 252, 0, 0, 253, 254, 1035, 1036, 257, - 0, 258, 259, 260, 261, 0, 0, 803, 0, 263, - 264, 265, 266, 267, 804, 268, 269, 270, 0, 271, - 272, 273, 274, 275, 276, 0, 805, 277, 278, 279, - 0, 0, 0, 806, 0, 0, 0, 280, 281, 282, - 283, 284, 285, 1037, 1038, 288, 0, 289, 0, 290, - 291, 292, 293, 294, 295, 0, 296, 297, 298, 299, - 0, 0, 300, 301, 1039, 303, 304, 0, 305, 306, - 307, 0, 308, 309, 310, 0, 311, 312, 313, 314, - 0, 316, 317, 318, 0, 0, 320, 0, 321, 322, - 1040, 324, 0, 325, 0, 326, 807, 0, 808, 327, - 328, 329, 330, 0, 331, 0, 0, 0, 334, 0, - 335, 336, 337, 338, 339, 809, 340, 341, 342, 343, - 0, 344, 345, 346, 347, 348, 349, 0, 350, 810, - 0, 352, 353, 354, 355, 1042, 1043, 0, 1044, 0, - 359, 811, 812, 360, 813, 361, 362, 363, 364, 365, - 0, 0, 366, 0, 814, 368, 815, 0, 369, 370, - 371, 0, 0, 372, 373, 374, 375, 376, 377, 378, - 379, 380, 381, 382, 383, 384, 385, 386, 387, 1045, - 816, 1046, 390, 391, 392, 0, 0, 394, 395, 817, - 396, 0, 0, 398, 1047, 400, 401, 402, 0, 403, - 404, 0, 0, 405, 406, 407, 0, 0, 408, 0, - 818, 410, 819, 0, 412, 413, 414, 415, 416, 417, - 418, 419, 420, 0, 421, 422, 0, 424, 0, 426, - 427, 428, 0, 429, 430, 431, 432, 433, 434, 435, - 436, 437, 1048, 439, 440, 441, 442, 0, 443, 444, + 457, 458, 459, 460, 461, 462, 0, 463, 464, 465, + 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, + 476, 477, 0, 478, 479, 480, 481, 482, 483, 484, + 485, 486, 487, 488, 489, 0, 490, 491, 0, 493, + 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, + 504, 505, 506, 507, 0, 508, 509, 510, 511, 512, + 0, 513, 514, 515, 516, 517, 0, 519, 520, 521, + 522, 0, 523, 524, 525, 526, 527, 528, 529, 530, + 531, 532, 533, 534, 535, 536, 537, 0, 538, 539, + 0, 540, 0, 542, 543, 544, 545, 546, 0, 547, + 548, 549, 0, 0, 550, 551, 552, 553, 554, 0, + 555, 556, 557, 558, 559, 560, 561, 562, 0, 0, + 563, 564, 565, 566, 567, 0, 0, 568, 569, 570, + 571, 572, 573, 574, 0, 575, 0, 577, 578, 579, + 580, 0, 0, 581, 0, 0, 582, 583, 584, 585, + 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, + 596, 597, 598, 599, 600, 601, 609, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 229, 230, 231, 232, 233, + 234, 235, 236, 0, 237, 238, 239, 0, 0, 0, + 0, 0, 0, 0, 240, 241, 0, 242, 243, 244, + 0, 246, 247, 248, 249, 250, 0, 252, 253, 0, + 254, 255, 256, 257, 258, 259, 0, 0, 260, 261, + 262, 263, 264, 0, 265, 266, 267, 268, 269, 0, + 0, 0, 271, 272, 273, 274, 275, 0, 277, 278, + 279, 0, 280, 281, 282, 283, 284, 285, 0, 0, + 287, 288, 289, 0, 0, 0, 0, 0, 0, 0, + 291, 292, 293, 294, 295, 296, 297, 298, 299, 0, + 300, 0, 301, 302, 303, 304, 305, 306, 0, 307, + 308, 309, 310, 0, 0, 311, 312, 313, 314, 315, + 0, 316, 317, 318, 0, 319, 320, 321, 0, 322, + 323, 324, 325, 326, 327, 328, 329, 330, 331, 0, + 332, 0, 333, 334, 335, 336, 0, 337, 0, 338, + 0, 0, 0, 341, 342, 343, 344, 0, 345, 346, + 0, 347, 348, 349, 0, 350, 351, 352, 353, 1147, + 0, 356, 357, 358, 359, 0, 360, 361, 362, 363, + 364, 365, 366, 0, 367, 0, 369, 370, 371, 372, + 373, 374, 375, 0, 376, 0, 377, 0, 0, 380, + 0, 382, 383, 384, 385, 386, 0, 0, 387, 388, + 0, 390, 0, 0, 392, 393, 394, 0, 0, 395, + 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, + 406, 407, 408, 409, 410, 411, 0, 413, 414, 415, + 416, 417, 418, 419, 420, 421, 422, 423, 0, 424, + 425, 0, 427, 0, 428, 429, 430, 431, 432, 433, + 0, 434, 435, 0, 0, 436, 437, 438, 0, 0, + 439, 440, 441, 0, 443, 0, 445, 446, 447, 448, + 449, 450, 451, 452, 453, 454, 0, 455, 456, 457, + 458, 459, 460, 461, 462, 0, 463, 464, 465, 466, + 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, + 477, 0, 478, 479, 480, 481, 482, 483, 484, 485, + 486, 487, 488, 489, 0, 490, 491, 0, 493, 494, + 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, + 505, 506, 507, 0, 508, 509, 510, 511, 512, 0, + 513, 514, 515, 516, 517, 0, 519, 520, 521, 522, + 0, 523, 524, 525, 526, 527, 528, 529, 530, 531, + 532, 533, 534, 535, 536, 537, 0, 538, 539, 0, + 540, 0, 542, 543, 544, 545, 546, 0, 547, 548, + 549, 0, 0, 550, 551, 552, 553, 554, 0, 555, + 556, 557, 558, 559, 560, 561, 562, 0, 0, 563, + 564, 565, 566, 567, 0, 0, 568, 569, 570, 571, + 572, 573, 574, 0, 575, 0, 577, 578, 579, 580, + 0, 0, 581, 0, 0, 582, 583, 584, 585, 586, + 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, + 597, 598, 599, 600, 601, 609, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 229, 230, 231, 232, 233, 234, + 235, 236, 0, 237, 238, 239, 0, 0, 0, 0, + 0, 0, 0, 240, 241, 0, 242, 243, 244, 0, + 246, 247, 248, 249, 250, 0, 252, 253, 0, 254, + 255, 256, 257, 258, 259, 0, 0, 260, 261, 262, + 263, 264, 0, 265, 266, 267, 268, 269, 0, 0, + 0, 271, 272, 273, 274, 275, 0, 277, 278, 279, + 0, 280, 281, 282, 283, 284, 285, 0, 0, 287, + 288, 289, 0, 0, 0, 0, 0, 0, 0, 291, + 292, 293, 294, 295, 296, 297, 298, 299, 0, 300, + 0, 301, 302, 303, 304, 305, 306, 0, 307, 308, + 309, 310, 0, 0, 311, 312, 313, 314, 315, 0, + 316, 317, 318, 0, 319, 320, 321, 0, 322, 323, + 324, 325, 326, 327, 328, 329, 330, 331, 0, 332, + 0, 333, 334, 335, 336, 0, 337, 0, 338, 0, + 0, 0, 341, 342, 343, 344, 0, 345, 346, 0, + 347, 348, 349, 0, 350, 351, 352, 353, 1150, 0, + 356, 357, 358, 359, 0, 360, 361, 362, 363, 364, + 365, 366, 0, 367, 0, 369, 370, 371, 372, 373, + 374, 375, 0, 376, 0, 377, 0, 0, 380, 0, + 382, 383, 384, 385, 386, 0, 0, 387, 388, 0, + 390, 0, 0, 392, 393, 394, 0, 0, 395, 396, + 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, + 407, 408, 409, 410, 411, 0, 413, 414, 415, 416, + 417, 418, 419, 420, 421, 422, 423, 0, 424, 425, + 0, 427, 0, 428, 429, 430, 431, 432, 433, 0, + 434, 435, 0, 0, 436, 437, 438, 0, 0, 439, + 440, 441, 0, 443, 0, 445, 446, 447, 448, 449, + 450, 451, 452, 453, 454, 0, 455, 456, 457, 458, + 459, 460, 461, 462, 0, 463, 464, 465, 466, 467, + 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, + 0, 478, 479, 480, 481, 482, 483, 484, 485, 486, + 487, 488, 489, 0, 490, 491, 0, 493, 494, 495, + 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, + 506, 507, 0, 508, 509, 510, 511, 512, 0, 513, + 514, 515, 516, 517, 0, 519, 520, 521, 522, 0, + 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, + 533, 534, 535, 536, 537, 0, 538, 539, 0, 540, + 0, 542, 543, 544, 545, 546, 0, 547, 548, 549, + 0, 0, 550, 551, 552, 553, 554, 0, 555, 556, + 557, 558, 559, 560, 561, 562, 0, 0, 563, 564, + 565, 566, 567, 0, 0, 568, 569, 570, 571, 572, + 573, 574, 0, 575, 0, 577, 578, 579, 580, 0, + 0, 581, 0, 0, 582, 583, 584, 585, 586, 587, + 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, + 598, 599, 600, 601, 609, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 229, 230, 231, 232, 233, 234, 235, + 236, 0, 237, 238, 239, 0, 0, 0, 0, 0, + 0, 0, 240, 241, 0, 242, 243, 244, 0, 246, + 247, 248, 249, 250, 0, 252, 253, 0, 254, 255, + 256, 257, 258, 259, 0, 0, 798, 261, 262, 263, + 264, 0, 265, 266, 267, 268, 269, 0, 0, 0, + 271, 272, 273, 274, 275, 0, 277, 278, 279, 0, + 280, 281, 282, 283, 284, 285, 0, 0, 287, 288, + 289, 0, 0, 0, 0, 0, 0, 0, 291, 292, + 293, 294, 295, 296, 297, 298, 299, 0, 300, 0, + 301, 302, 303, 304, 305, 306, 0, 307, 308, 309, + 310, 0, 0, 311, 312, 313, 314, 315, 0, 316, + 317, 318, 0, 319, 320, 321, 0, 322, 323, 324, + 325, 326, 327, 328, 329, 330, 331, 0, 332, 0, + 333, 334, 335, 336, 0, 337, 0, 338, 0, 0, + 0, 341, 342, 343, 344, 0, 345, 346, 0, 347, + 348, 349, 0, 350, 351, 352, 353, 354, 0, 356, + 357, 358, 359, 0, 360, 361, 362, 363, 364, 365, + 366, 0, 367, 0, 369, 370, 371, 372, 373, 374, + 375, 0, 376, 0, 377, 0, 0, 380, 0, 382, + 383, 384, 385, 386, 0, 0, 387, 388, 0, 390, + 0, 0, 392, 393, 394, 0, 0, 395, 396, 397, + 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, + 408, 409, 801, 411, 0, 413, 414, 415, 416, 417, + 418, 419, 420, 421, 422, 423, 0, 424, 425, 0, + 427, 0, 428, 429, 430, 431, 432, 433, 0, 434, + 435, 0, 0, 436, 437, 438, 0, 0, 439, 440, + 441, 0, 443, 0, 445, 446, 447, 448, 449, 450, + 451, 452, 453, 454, 0, 455, 456, 457, 458, 459, + 460, 461, 462, 0, 463, 464, 465, 466, 467, 468, + 469, 470, 471, 472, 473, 474, 475, 476, 477, 0, + 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, + 488, 489, 0, 490, 491, 0, 802, 494, 495, 496, + 497, 498, 499, 500, 501, 803, 503, 504, 505, 506, + 507, 0, 508, 509, 510, 511, 1333, 0, 513, 514, + 515, 516, 517, 0, 519, 520, 521, 522, 0, 523, + 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, + 534, 535, 536, 537, 0, 538, 539, 0, 540, 0, + 542, 543, 544, 545, 546, 0, 547, 805, 549, 0, + 0, 806, 551, 552, 553, 554, 0, 555, 556, 557, + 558, 559, 560, 561, 562, 0, 0, 563, 564, 565, + 566, 567, 0, 0, 568, 569, 570, 571, 572, 573, + 574, 0, 575, 0, 577, 578, 579, 580, 0, 0, + 581, 0, 0, 582, 583, 584, 585, 586, 807, 588, + 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, + 599, 600, 601, 609, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 229, 230, 231, 232, 233, 234, 235, 236, + 0, 237, 238, 239, 0, 0, 0, 0, 0, 0, + 0, 240, 241, 0, 242, 243, 244, 0, 246, 247, + 248, 249, 250, 0, 252, 253, 0, 254, 255, 256, + 257, 258, 259, 0, 0, 260, 261, 262, 263, 264, + 0, 265, 266, 267, 268, 269, 0, 0, 0, 271, + 272, 273, 274, 275, 0, 277, 278, 279, 0, 280, + 281, 282, 283, 284, 285, 0, 0, 287, 288, 289, + 0, 0, 0, 0, 0, 0, 0, 291, 292, 293, + 294, 295, 296, 297, 298, 299, 0, 300, 0, 301, + 302, 303, 304, 305, 306, 0, 307, 308, 309, 310, + 0, 0, 311, 312, 313, 314, 315, 0, 316, 317, + 318, 0, 319, 320, 321, 0, 322, 323, 324, 325, + 326, 327, 328, 329, 330, 331, 0, 332, 0, 333, + 334, 335, 336, 0, 337, 0, 338, 0, 0, 0, + 341, 342, 343, 344, 0, 345, 346, 0, 347, 348, + 349, 0, 350, 351, 352, 353, 1774, 0, 356, 357, + 358, 359, 0, 360, 361, 362, 363, 364, 365, 366, + 0, 367, 0, 369, 370, 371, 372, 373, 374, 375, + 0, 376, 0, 377, 0, 0, 380, 0, 382, 383, + 384, 385, 386, 0, 0, 387, 388, 0, 390, 0, + 0, 392, 393, 394, 0, 0, 395, 396, 397, 398, + 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, + 409, 410, 411, 0, 413, 414, 415, 416, 417, 418, + 419, 420, 421, 422, 423, 0, 424, 425, 0, 427, + 0, 428, 429, 430, 431, 432, 433, 0, 434, 435, + 0, 0, 436, 437, 438, 0, 0, 439, 440, 441, + 0, 443, 0, 445, 446, 447, 448, 449, 450, 451, + 452, 453, 454, 0, 455, 456, 457, 458, 459, 460, + 461, 462, 0, 463, 464, 465, 466, 467, 468, 469, + 470, 471, 472, 473, 474, 475, 476, 477, 0, 478, + 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, + 489, 0, 490, 491, 0, 493, 494, 495, 496, 497, + 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, + 0, 508, 509, 510, 511, 512, 0, 513, 514, 515, + 516, 517, 0, 519, 520, 521, 522, 0, 523, 524, + 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, + 535, 536, 537, 0, 538, 539, 0, 540, 0, 542, + 543, 544, 545, 546, 0, 547, 548, 549, 0, 0, + 550, 551, 552, 553, 554, 0, 555, 556, 557, 558, + 559, 560, 561, 562, 0, 0, 563, 564, 565, 566, + 567, 0, 0, 568, 569, 570, 571, 572, 573, 574, + 0, 575, 0, 577, 578, 579, 580, 0, 0, 581, + 0, 0, 582, 583, 584, 585, 586, 587, 588, 589, + 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, + 600, 601, 609, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 229, 230, 231, 232, 233, 234, 235, 236, 0, + 237, 238, 239, 0, 0, 0, 0, 0, 0, 0, + 240, 241, 0, 242, 243, 244, 0, 246, 247, 248, + 249, 250, 0, 252, 253, 0, 254, 255, 256, 257, + 258, 259, 0, 0, 260, 261, 262, 263, 264, 0, + 265, 266, 267, 268, 269, 0, 0, 0, 271, 272, + 273, 274, 275, 0, 277, 278, 279, 0, 280, 281, + 282, 283, 284, 285, 0, 0, 287, 288, 289, 0, + 0, 0, 0, 0, 0, 0, 291, 292, 293, 294, + 295, 296, 297, 298, 299, 0, 300, 0, 301, 302, + 303, 304, 305, 306, 0, 307, 308, 309, 310, 0, + 0, 311, 312, 313, 314, 315, 0, 316, 317, 318, + 0, 319, 320, 321, 0, 322, 323, 324, 325, 326, + 327, 328, 329, 330, 331, 0, 332, 0, 333, 334, + 335, 336, 0, 337, 0, 338, 0, 0, 0, 341, + 342, 343, 344, 0, 345, 346, 0, 347, 348, 349, + 0, 350, 351, 352, 353, 1812, 0, 356, 357, 358, + 359, 0, 360, 361, 362, 363, 364, 365, 366, 0, + 367, 0, 369, 370, 371, 372, 373, 374, 375, 0, + 376, 0, 377, 0, 0, 380, 0, 382, 383, 384, + 385, 386, 0, 0, 387, 388, 0, 390, 0, 0, + 392, 393, 394, 0, 0, 395, 396, 397, 398, 399, + 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, + 410, 411, 0, 413, 414, 415, 416, 417, 418, 419, + 420, 421, 422, 423, 0, 424, 425, 0, 427, 0, + 428, 429, 430, 431, 432, 433, 0, 434, 435, 0, + 0, 436, 437, 438, 0, 0, 439, 440, 441, 0, + 443, 0, 445, 446, 447, 448, 449, 450, 451, 452, + 453, 454, 0, 455, 456, 457, 458, 459, 460, 461, + 462, 0, 463, 464, 465, 466, 467, 468, 469, 470, + 471, 472, 473, 474, 475, 476, 477, 0, 478, 479, + 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, + 0, 490, 491, 0, 493, 494, 495, 496, 497, 498, + 499, 500, 501, 502, 503, 504, 505, 506, 507, 0, + 508, 509, 510, 511, 512, 0, 513, 514, 515, 516, + 517, 0, 519, 520, 521, 522, 0, 523, 524, 525, + 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, + 536, 537, 0, 538, 539, 0, 540, 0, 542, 543, + 544, 545, 546, 0, 547, 548, 549, 0, 0, 550, + 551, 552, 553, 554, 0, 555, 556, 557, 558, 559, + 560, 561, 562, 0, 0, 563, 564, 565, 566, 567, + 0, 0, 568, 569, 570, 571, 572, 573, 574, 0, + 575, 0, 577, 578, 579, 580, 0, 0, 581, 0, + 0, 582, 583, 584, 585, 586, 587, 588, 589, 590, + 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, + 601, 609, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 229, 230, 231, 232, 233, 234, 235, 236, 0, 237, + 238, 239, 0, 0, 0, 0, 0, 0, 0, 240, + 241, 0, 242, 243, 244, 0, 246, 247, 248, 249, + 250, 0, 252, 253, 0, 254, 255, 256, 257, 258, + 259, 0, 0, 260, 261, 262, 263, 264, 0, 265, + 266, 267, 268, 269, 0, 0, 0, 271, 272, 273, + 274, 275, 0, 277, 278, 279, 0, 280, 281, 282, + 283, 284, 285, 0, 0, 287, 288, 289, 0, 0, + 0, 0, 0, 0, 0, 291, 292, 293, 294, 295, + 296, 297, 298, 299, 0, 300, 0, 301, 302, 303, + 304, 305, 306, 0, 307, 308, 309, 310, 0, 0, + 311, 312, 313, 314, 315, 0, 316, 317, 318, 0, + 319, 320, 321, 0, 322, 323, 324, 325, 326, 327, + 328, 329, 330, 331, 0, 332, 0, 333, 334, 335, + 336, 0, 337, 0, 338, 0, 0, 0, 341, 342, + 343, 344, 0, 345, 346, 0, 347, 348, 349, 0, + 350, 351, 352, 353, 1814, 0, 356, 357, 358, 359, + 0, 360, 361, 362, 363, 364, 365, 366, 0, 367, + 0, 369, 370, 371, 372, 373, 374, 375, 0, 376, + 0, 377, 0, 0, 380, 0, 382, 383, 384, 385, + 386, 0, 0, 387, 388, 0, 390, 0, 0, 392, + 393, 394, 0, 0, 395, 396, 397, 398, 399, 400, + 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, + 411, 0, 413, 414, 415, 416, 417, 418, 419, 420, + 421, 422, 423, 0, 424, 425, 0, 427, 0, 428, + 429, 430, 431, 432, 433, 0, 434, 435, 0, 0, + 436, 437, 438, 0, 0, 439, 440, 441, 0, 443, + 0, 445, 446, 447, 448, 449, 450, 451, 452, 453, + 454, 0, 455, 456, 457, 458, 459, 460, 461, 462, + 0, 463, 464, 465, 466, 467, 468, 469, 470, 471, + 472, 473, 474, 475, 476, 477, 0, 478, 479, 480, + 481, 482, 483, 484, 485, 486, 487, 488, 489, 0, + 490, 491, 0, 493, 494, 495, 496, 497, 498, 499, + 500, 501, 502, 503, 504, 505, 506, 507, 0, 508, + 509, 510, 511, 512, 0, 513, 514, 515, 516, 517, + 0, 519, 520, 521, 522, 0, 523, 524, 525, 526, + 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, + 537, 0, 538, 539, 0, 540, 0, 542, 543, 544, + 545, 546, 0, 547, 548, 549, 0, 0, 550, 551, + 552, 553, 554, 0, 555, 556, 557, 558, 559, 560, + 561, 562, 0, 0, 563, 564, 565, 566, 567, 0, + 0, 568, 569, 570, 571, 572, 573, 574, 0, 575, + 0, 577, 578, 579, 580, 0, 0, 581, 0, 0, + 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, + 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, + 609, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 229, + 230, 231, 232, 233, 234, 235, 236, 0, 237, 238, + 239, 0, 0, 0, 0, 0, 0, 0, 240, 241, + 0, 242, 243, 244, 0, 246, 247, 248, 249, 250, + 0, 252, 253, 0, 254, 255, 256, 257, 258, 259, + 0, 0, 260, 261, 262, 263, 264, 0, 265, 266, + 267, 268, 269, 0, 0, 0, 271, 272, 273, 274, + 275, 0, 277, 278, 279, 0, 280, 281, 282, 283, + 284, 285, 0, 0, 287, 288, 289, 0, 0, 0, + 0, 0, 0, 0, 291, 292, 293, 294, 295, 296, + 297, 298, 299, 0, 300, 0, 301, 302, 303, 304, + 305, 306, 0, 307, 308, 309, 310, 0, 0, 311, + 312, 313, 314, 315, 0, 316, 317, 318, 0, 319, + 320, 321, 0, 322, 323, 324, 325, 326, 327, 328, + 329, 330, 331, 0, 332, 0, 333, 334, 335, 336, + 0, 337, 0, 338, 0, 0, 0, 341, 342, 343, + 344, 0, 345, 346, 0, 347, 348, 349, 0, 350, + 351, 352, 353, 1885, 0, 356, 357, 358, 359, 0, + 360, 361, 362, 363, 364, 365, 366, 0, 367, 0, + 369, 370, 371, 372, 373, 374, 375, 0, 376, 0, + 377, 0, 0, 380, 0, 382, 383, 384, 385, 386, + 0, 0, 387, 388, 0, 390, 0, 0, 392, 393, + 394, 0, 0, 395, 396, 397, 398, 399, 400, 401, + 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, + 0, 413, 414, 415, 416, 417, 418, 419, 420, 421, + 422, 423, 0, 424, 425, 0, 427, 0, 428, 429, + 430, 431, 432, 433, 0, 434, 435, 0, 0, 436, + 437, 438, 0, 0, 439, 440, 441, 0, 443, 0, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, - 0, 455, 456, 820, 457, 458, 459, 0, 461, 462, - 463, 464, 465, 466, 467, 468, 469, 0, 470, 471, - 472, 473, 474, 0, 475, 476, 0, 478, 479, 821, - 480, 481, 1050, 483, 0, 484, 485, 486, 487, 488, - 489, 490, 491, 492, 493, 494, 495, 0, 0, 497, - 498, 0, 499, 822, 500, 501, 502, 503, 504, 0, - 1051, 1052, 0, 0, 507, 508, 0, 510, 0, 0, - 512, 513, 514, 515, 516, 517, 518, 0, 0, 519, - 520, 521, 522, 523, 0, 0, 524, 525, 526, 527, - 528, 0, 1053, 0, 531, 823, 532, 533, 534, 535, - 0, 0, 536, 0, 0, 537, 538, 539, 540, 541, - 542, 1031, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 554, 555, 556, 0, 224, 225, 226, 227, - 228, 229, 230, 231, 0, 233, 234, 235, 0, 0, - 0, 0, 0, 0, 0, 236, 237, 0, 238, 239, - 240, 801, 241, 242, 243, 0, 0, 802, 0, 0, - 0, 248, 249, 250, 251, 252, 0, 0, 253, 254, - 0, 0, 257, 0, 258, 259, 260, 261, 0, 0, - 803, 0, 263, 264, 265, 266, 267, 804, 268, 269, - 270, 0, 271, 272, 273, 274, 275, 276, 0, 805, - 277, 278, 279, 0, 0, 0, 806, 0, 0, 0, - 280, 281, 282, 283, 284, 285, 0, 0, 288, 0, - 289, 0, 290, 291, 292, 293, 294, 295, 0, 296, - 297, 298, 299, 0, 0, 300, 301, 302, 303, 304, - 0, 305, 306, 307, 0, 308, 309, 310, 0, 311, - 312, 313, 314, 0, 316, 317, 318, 0, 0, 320, - 0, 321, 322, 0, 324, 0, 325, 0, 326, 807, - 0, 808, 327, 328, 329, 330, 0, 331, 0, 0, - 0, 334, 0, 335, 336, 337, 338, 339, 809, 340, - 341, 342, 343, 0, 344, 345, 346, 347, 348, 349, - 0, 350, 810, 0, 352, 353, 354, 355, 0, 0, - 0, 0, 0, 359, 811, 812, 360, 813, 361, 362, - 363, 364, 365, 0, 0, 366, 0, 814, 368, 815, - 0, 369, 370, 371, 0, 0, 372, 373, 374, 375, - 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, - 386, 387, 0, 816, 0, 390, 391, 392, 0, 0, - 394, 395, 817, 396, 0, 0, 398, 0, 400, 401, - 402, 0, 403, 404, 0, 0, 405, 406, 407, 0, - 0, 408, 0, 818, 410, 819, 0, 412, 413, 414, - 415, 416, 417, 418, 419, 420, 0, 421, 422, 0, - 424, 0, 426, 427, 428, 0, 429, 430, 431, 432, - 433, 434, 435, 436, 437, 0, 439, 440, 441, 442, - 0, 443, 444, 445, 446, 447, 448, 449, 450, 451, - 452, 453, 454, 0, 455, 456, 820, 457, 458, 459, - 0, 461, 462, 463, 464, 465, 466, 467, 468, 469, - 0, 470, 471, 472, 473, 474, 0, 475, 476, 0, - 478, 479, 821, 480, 481, 0, 483, 0, 484, 485, - 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, - 0, 0, 497, 498, 0, 499, 822, 500, 501, 502, - 503, 504, 0, 0, 0, 0, 0, 507, 508, 0, - 510, 0, 0, 512, 513, 514, 515, 516, 517, 518, - 0, 0, 519, 520, 521, 522, 523, 0, 0, 524, - 525, 526, 527, 528, 0, 0, 0, 531, 823, 532, - 533, 534, 535, 0, 0, 536, 0, 0, 537, 538, - 539, 540, 541, 542, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 554, 555, 556 -}; - -static const yytype_int16 yycheck[] = -{ - 16, 0, 0, 0, 50, 0, 0, 202, 197, 25, - 889, 1117, 905, 794, 35, 1347, 585, 744, 0, 188, - 618, 20, 7, 658, 180, 746, 20, 1079, 197, 14, - 1394, 1507, 696, 697, 698, 1139, 1916, 43, 702, 1049, - 2411, 1438, 768, 1248, 914, 202, 2771, 831, 188, 995, - 1317, 857, 1431, 890, 21, 769, 50, 1850, 618, 2601, - 27, 1568, 1648, 12, 2263, 1052, 664, 1315, 1170, 44, - 1443, 753, 2103, 2104, 1438, 2315, 969, 1037, 1038, 206, - 973, 2819, 2759, 1874, 20, 978, 2424, 1047, 17, 2949, - 22, 1829, 219, 2922, 1454, 988, 2974, 3196, 2976, 2336, - 1367, 3240, 3495, 35, 2369, 3150, 2371, 3142, 3540, 1002, - 2375, 3215, 2577, 4075, 0, 3150, 629, 843, 576, 2384, - 2385, 2386, 3430, 2763, 1372, 3161, 3536, 2828, 3227, 2761, - 2762, 3459, 653, 3592, 182, 3540, 167, 889, 3813, 663, - 653, 3826, 2819, 2793, 182, 897, 3808, 3823, 1919, 3835, - 3769, 749, 1812, 4409, 1661, 907, 34, 4465, 1531, 3465, - 1746, 0, 4303, 41, 0, 0, 1433, 0, 0, 0, - 628, 0, 1423, 0, 0, 4306, 0, 1537, 1538, 0, - 0, 4257, 1372, 4484, 2068, 984, 775, 2070, 182, 749, - 49, 40, 918, 3812, 2838, 841, 4608, 3213, 4425, 5, - 4427, 1000, 3516, 791, 791, 1035, 1036, 0, 214, 4620, - 5, 3392, 9, 5, 0, 2414, 1046, 35, 3464, 0, - 3466, 11, 4523, 2103, 0, 4529, 4530, 71, 5, 4305, - 49, 5, 39, 42, 641, 86, 4817, 5, 5, 1199, - 1200, 26, 1229, 5, 26, 3, 5, 654, 162, 3889, - 3890, 5, 3892, 3893, 3894, 42, 162, 5, 137, 1219, - 5, 65, 9, 132, 39, 13, 14, 22, 13, 14, - 9, 116, 30, 31, 4723, 4724, 204, 105, 4757, 83, - 3, 169, 73, 144, 1068, 5, 111, 157, 5, 78, - 5, 5, 83, 13, 14, 5, 104, 961, 26, 26, - 2924, 0, 113, 0, 4553, 33, 33, 5, 162, 73, - 9, 1117, 9, 5, 162, 162, 1386, 267, 11, 83, - 162, 3, 165, 5, 2523, 5, 2525, 26, 10, 26, - 73, 272, 198, 285, 116, 299, 69, 141, 27, 83, - 206, 4, 5, 111, 249, 266, 9, 40, 29, 267, - 11, 5, 4, 219, 296, 159, 1604, 9, 1188, 1189, - 188, 56, 3, 4, 5, 56, 336, 2759, 9, 162, - 143, 9, 270, 111, 104, 130, 162, 11, 71, 40, - 310, 162, 56, 281, 349, 1215, 162, 157, 111, 36, - 350, 1337, 185, 104, 162, 104, 22, 255, 332, 185, - 376, 114, 571, 161, 185, 163, 679, 680, 681, 185, - 71, 684, 685, 686, 927, 26, 198, 272, 4, 334, - 318, 694, 26, 9, 106, 85, 305, 2819, 585, 33, - 3363, 115, 1302, 4845, 4, 5, 5017, 950, 4739, 9, - 178, 4, 4772, 73, 4774, 431, 9, 389, 4778, 113, - 4780, 22, 965, 83, 623, 24, 583, 28, 4685, 11, - 3393, 256, 589, 162, 633, 162, 452, 127, 181, 4610, - 111, 73, 323, 120, 408, 602, 45, 392, 4609, 73, - 637, 467, 11, 1493, 339, 73, 185, 150, 185, 11, - 432, 467, 422, 297, 1300, 177, 4826, 467, 356, 1305, - 1306, 344, 1100, 467, 130, 162, 471, 467, 336, 414, - 199, 40, 118, 251, 125, 467, 434, 467, 1850, 1117, - 1109, 205, 162, 421, 1250, 11, 1858, 468, 251, 162, - 471, 264, 212, 256, 377, 4784, 3160, 1607, 346, 387, - 1100, 56, 71, 471, 208, 387, 467, 375, 376, 565, - 320, 163, 1278, 467, 40, 237, 425, 56, 240, 130, - 342, 1828, 203, 408, 425, 471, 373, 56, 56, 568, - 568, 568, 235, 568, 568, 238, 1174, 56, 387, 352, - 150, 104, 3627, 471, 225, 71, 568, 251, 467, 56, - 56, 376, 3627, 256, 349, 1119, 387, 467, 373, 403, - 1867, 412, 618, 619, 1871, 1411, 415, 366, 367, 1502, - 4918, 400, 1505, 5025, 1174, 1421, 3651, 471, 664, 387, - 471, 465, 5101, 387, 471, 469, 408, 5076, 415, 324, - 455, 359, 359, 324, 1882, 564, 5217, 668, 794, 467, - 321, 1154, 306, 387, 387, 419, 376, 162, 467, 467, - 324, 1918, 4956, 408, 431, 162, 3964, 1409, 340, 465, - 1249, 467, 420, 469, 663, 376, 463, 376, 463, 663, - 664, 463, 2871, 463, 4002, 452, 1513, 470, 4006, 1086, - 1784, 3780, 1481, 3543, 470, 3991, 256, 455, 1494, 470, - 467, 1497, 1498, 467, 470, 711, 1566, 1332, 1750, 1297, - 467, 469, 708, 4844, 4835, 467, 691, 1305, 1306, 463, - 677, 4351, 679, 662, 681, 1467, 463, 583, 3822, 467, - 687, 737, 467, 589, 1523, 3906, 2058, 466, 664, 745, - 5142, 394, 748, 749, 750, 783, 602, 1297, 1145, 1791, - 935, 4055, 931, 5154, 3990, 783, 3992, 467, 1800, 1156, - 467, 920, 467, 467, 4716, 359, 1716, 467, 457, 458, - 457, 458, 931, 769, 1171, 447, 3802, 1355, 1355, 467, - 463, 470, 1361, 470, 1580, 467, 471, 431, 935, 3456, - 920, 463, 3459, 5084, 1430, 387, 785, 785, 785, 783, - 785, 785, 798, 387, 457, 458, 5097, 471, 452, 387, - 1599, 462, 463, 785, 410, 457, 458, 471, 144, 2182, - 2841, 5223, 2843, 467, 471, 2212, 457, 458, 3058, 457, - 458, 336, 463, 8, 394, 324, 5053, 467, 462, 463, - 15, 16, 17, 173, 840, 324, 324, 773, 471, 3, - 3480, 1010, 4301, 429, 185, 324, 143, 1120, 264, 3187, - 1123, 3867, 1125, 376, 1127, 467, 1129, 324, 324, 3124, - 1133, 1691, 1692, 3540, 5, 261, 452, 2115, 5280, 2662, - 2663, 457, 458, 5, 2667, 164, 5, 26, 5019, 3739, - 387, 2761, 2762, 2763, 3528, 104, 2259, 457, 458, 285, - 5021, 119, 5193, 272, 171, 4468, 111, 3726, 747, 785, - 285, 272, 751, 80, 47, 1474, 421, 459, 460, 461, - 462, 463, 2705, 2706, 2798, 106, 2799, 776, 82, 5227, - 5228, 104, 4998, 22, 22, 2115, 3125, 3126, 457, 458, - 459, 460, 461, 462, 463, 457, 458, 459, 460, 461, - 462, 463, 111, 303, 5020, 122, 785, 833, 455, 785, - 785, 2202, 785, 785, 785, 249, 785, 1470, 785, 785, - 8, 785, 469, 11, 785, 785, 349, 15, 16, 17, - 237, 135, 471, 459, 460, 461, 462, 463, 332, 268, - 4599, 111, 471, 471, 2775, 113, 177, 2463, 4561, 375, - 116, 1719, 471, 1657, 5250, 2243, 29, 116, 35, 80, - 3240, 3651, 4407, 5144, 471, 471, 342, 5315, 115, 20, - 157, 130, 5143, 4496, 154, 893, 894, 54, 3847, 318, - 2268, 168, 2128, 409, 266, 455, 190, 116, 22, 4461, - 249, 130, 130, 163, 28, 261, 251, 180, 185, 469, - 376, 122, 185, 4448, 420, 38, 237, 26, 32, 240, - 349, 467, 329, 3791, 4537, 352, 4461, 4365, 2829, 285, - 1573, 80, 65, 106, 3456, 1793, 103, 3459, 56, 2317, - 252, 467, 198, 340, 414, 1588, 1797, 1798, 221, 368, - 416, 5222, 467, 268, 1100, 1014, 4414, 3, 471, 2099, - 318, 4419, 471, 429, 4422, 1684, 1609, 76, 205, 2478, - 471, 1117, 116, 122, 4410, 84, 283, 467, 248, 198, - 279, 3142, 111, 467, 3791, 256, 452, 140, 1753, 3150, - 1119, 336, 252, 287, 256, 1119, 4801, 256, 256, 2789, - 471, 467, 143, 112, 177, 1151, 130, 1122, 141, 1124, - 289, 1126, 1868, 1128, 4717, 1130, 1131, 1132, 3540, 340, - 187, 1664, 1137, 4726, 448, 1790, 159, 2405, 1174, 1794, - 144, 1796, 4837, 1761, 1799, 1678, 82, 4843, 4853, 1690, - 4856, 4833, 270, 342, 210, 294, 261, 1690, 322, 202, - 327, 4800, 281, 4322, 198, 80, 5148, 5149, 1182, 1702, - 183, 4290, 4296, 376, 237, 344, 164, 240, 235, 178, - 285, 238, 283, 1249, 381, 349, 3237, 376, 1202, 4069, - 189, 354, 249, 249, 22, 4620, 342, 4836, 134, 318, - 268, 1679, 1743, 80, 322, 323, 408, 122, 389, 1742, - 1743, 380, 4110, 382, 34, 1251, 1760, 401, 1827, 1233, - 1829, 467, 163, 280, 1260, 409, 1835, 416, 412, 272, - 349, 349, 1841, 1842, 1843, 1249, 447, 256, 1274, 159, - 429, 249, 1851, 1852, 283, 122, 156, 1856, 453, 454, - 455, 432, 457, 458, 459, 460, 461, 462, 463, 1848, - 410, 1297, 408, 452, 1300, 1301, 323, 281, 321, 1305, - 1306, 173, 1340, 1341, 297, 1343, 1327, 340, 467, 332, - 381, 334, 1340, 1341, 4714, 1343, 343, 24, 261, 5162, - 266, 111, 228, 5, 413, 1722, 352, 1474, 177, 408, - 5282, 332, 130, 90, 318, 4002, 363, 1734, 45, 4006, - 2662, 2663, 285, 167, 103, 2667, 324, 387, 1745, 4647, - 173, 352, 125, 110, 127, 349, 1340, 1341, 123, 1343, - 5026, 1357, 4053, 4681, 22, 349, 296, 3, 133, 392, - 2081, 349, 381, 284, 1877, 281, 334, 249, 376, 83, - 30, 31, 408, 2705, 2706, 173, 26, 144, 237, 402, - 4839, 395, 467, 342, 4024, 234, 365, 4019, 283, 368, - 4030, 225, 22, 8, 408, 57, 11, 111, 28, 3791, - 403, 144, 292, 65, 447, 453, 454, 455, 2287, 457, - 458, 459, 460, 461, 462, 463, 249, 376, 113, 3884, - 387, 471, 390, 281, 467, 40, 283, 142, 396, 152, - 90, 468, 47, 4741, 355, 2683, 82, 270, 4746, 4747, - 334, 2689, 5295, 65, 140, 167, 152, 90, 3713, 389, - 110, 249, 3717, 3718, 4499, 3720, 71, 416, 329, 2211, - 318, 410, 130, 379, 4499, 381, 235, 471, 2520, 238, - 105, 186, 272, 281, 5150, 125, 4881, 1406, 261, 5155, - 4912, 340, 199, 281, 144, 2291, 381, 2692, 134, 111, - 164, 349, 432, 2299, 4598, 1511, 2302, 192, 392, 222, - 130, 1517, 1671, 225, 471, 1674, 281, 4912, 467, 465, - 318, 332, 234, 469, 467, 280, 222, 3757, 467, 410, - 318, 65, 1528, 138, 381, 168, 222, 71, 4921, 4922, - 2128, 1720, 414, 2332, 1674, 2287, 1731, 251, 409, 83, - 263, 349, 318, 318, 166, 5221, 380, 314, 382, 4585, - 1719, 1720, 3792, 188, 249, 376, 251, 387, 2272, 2273, - 2939, 280, 2276, 225, 3801, 180, 3042, 111, 2320, 113, - 185, 114, 406, 1730, 1731, 342, 467, 3370, 3371, 3372, - 3373, 414, 228, 3376, 3377, 3378, 3379, 3380, 3381, 3382, - 3383, 3384, 3385, 3386, 268, 185, 3627, 1483, 305, 342, - 3480, 2353, 1488, 3341, 465, 5281, 221, 152, 469, 376, - 4002, 387, 157, 281, 4006, 1631, 414, 211, 5023, 1635, - 3651, 2420, 166, 103, 1793, 455, 333, 2832, 281, 251, - 349, 83, 154, 376, 256, 281, 113, 5313, 181, 469, - 5316, 3434, 3435, 281, 2443, 2444, 2445, 2446, 192, 416, - 318, 281, 2165, 268, 314, 455, 2455, 281, 380, 3858, - 382, 3860, 429, 2121, 2177, 465, 1552, 467, 468, 469, - 1556, 471, 318, 416, 49, 297, 322, 222, 158, 280, - 318, 349, 342, 281, 406, 452, 429, 1553, 318, 3062, - 312, 1848, 214, 165, 318, 4555, 349, 125, 3284, 127, - 467, 336, 320, 349, 2217, 2419, 280, 251, 2282, 452, - 190, 349, 256, 82, 158, 167, 376, 4816, 263, 349, - 318, 318, 150, 322, 467, 349, 140, 102, 318, 467, - 4407, 208, 322, 379, 163, 381, 188, 4414, 152, 354, - 375, 376, 4419, 157, 332, 4422, 190, 4851, 349, 5154, - 349, 349, 349, 297, 123, 235, 416, 113, 238, 349, - 420, 1760, 1628, 2569, 133, 194, 1760, 0, 312, 429, - 1636, 4448, 2876, 225, 251, 349, 364, 2351, 4814, 43, - 209, 403, 1648, 429, 4461, 1770, 35, 1772, 202, 1774, - 219, 1776, 452, 1778, 5187, 4831, 231, 1782, 310, 1820, - 64, 1807, 2209, 4345, 4633, 54, 114, 467, 222, 2473, - 125, 429, 127, 1812, 1812, 1812, 11, 1812, 1812, 271, - 2278, 5226, 197, 251, 1840, 1761, 426, 210, 256, 306, - 1812, 343, 4868, 261, 452, 450, 125, 2783, 127, 429, - 4080, 281, 457, 458, 459, 460, 461, 462, 463, 263, - 2439, 152, 208, 471, 103, 4733, 157, 1723, 272, 403, - 3220, 150, 452, 3223, 376, 337, 249, 4727, 410, 467, - 281, 471, 344, 181, 249, 332, 71, 334, 318, 431, - 1746, 358, 322, 2396, 2482, 4256, 140, 1819, 164, 2849, - 429, 4090, 4091, 1887, 5033, 251, 29, 1826, 152, 328, - 452, 3149, 2491, 157, 4629, 377, 251, 318, 310, 349, - 422, 256, 281, 4455, 5018, 4457, 247, 1933, 389, 195, - 53, 222, 2482, 306, 4295, 467, 398, 299, 380, 113, - 382, 2566, 471, 5032, 265, 392, 251, 4275, 187, 2537, - 392, 343, 429, 4620, 379, 314, 261, 3195, 202, 318, - 306, 403, 323, 167, 406, 4220, 3749, 4222, 4223, 304, - 281, 4226, 263, 338, 5000, 452, 394, 256, 222, 352, - 2776, 406, 261, 157, 376, 2170, 404, 2537, 349, 2168, - 349, 429, 281, 162, 471, 470, 235, 2768, 402, 238, - 306, 429, 2161, 1483, 429, 35, 431, 318, 1488, 2168, - 249, 471, 1626, 319, 4681, 392, 185, 4247, 192, 263, - 4112, 225, 429, 2170, 54, 4407, 4118, 260, 272, 318, - 422, 2161, 4414, 471, 231, 408, 1650, 4419, 349, 345, - 4422, 280, 467, 471, 162, 452, 4865, 3544, 3370, 3371, - 3372, 3373, 62, 63, 3376, 3377, 3378, 3379, 3380, 3381, - 3382, 3383, 3384, 3385, 3386, 2839, 4448, 185, 73, 332, - 333, 157, 1552, 103, 4924, 249, 1556, 251, 83, 4461, - 429, 21, 3404, 140, 323, 2664, 157, 27, 2591, 91, - 431, 2208, 4322, 179, 4822, 152, 468, 2676, 2925, 471, - 157, 2773, 2086, 452, 343, 2608, 310, 3201, 179, 5135, - 422, 452, 3434, 3435, 2086, 394, 2042, 3211, 2621, 2130, - 339, 2132, 2128, 2950, 363, 404, 467, 332, 333, 22, - 2709, 24, 3598, 281, 468, 28, 166, 471, 4, 336, - 33, 34, 35, 9, 37, 202, 5, 40, 41, 4019, - 43, 10, 45, 157, 4024, 4822, 3413, 187, 402, 18, - 4030, 163, 2721, 885, 2281, 222, 314, 266, 3406, 2748, - 318, 2128, 271, 461, 3955, 179, 380, 36, 382, 467, - 902, 469, 379, 905, 2926, 2181, 332, 333, 2776, 5215, - 466, 2197, 194, 252, 253, 471, 4911, 5286, 2509, 2510, - 2511, 349, 406, 3590, 461, 235, 263, 209, 238, 406, - 467, 466, 469, 3576, 4881, 272, 471, 219, 422, 249, - 2675, 465, 2677, 2678, 468, 469, 468, 3803, 5078, 471, - 4460, 3323, 429, 2350, 431, 49, 2092, 4467, 4620, 4, - 212, 2866, 266, 245, 9, 4912, 3596, 271, 3598, 5275, - 280, 465, 236, 467, 2110, 469, 468, 3193, 3000, 471, - 2116, 392, 468, 91, 2120, 471, 3523, 467, 3631, 468, - 467, 3154, 471, 380, 320, 382, 2272, 2273, 92, 392, - 2276, 3258, 3259, 342, 468, 4540, 468, 471, 342, 471, - 2146, 468, 3, 323, 471, 188, 189, 190, 191, 4681, - 193, 13, 14, 117, 197, 2893, 199, 468, 468, 202, - 471, 471, 23, 343, 332, 333, 209, 376, 211, 3514, - 134, 214, 376, 339, 138, 218, 328, 220, 3825, 231, - 380, 234, 382, 363, 2190, 163, 468, 2343, 468, 471, - 467, 471, 469, 2893, 158, 402, 3142, 161, 468, 234, - 1860, 471, 2208, 1863, 3150, 87, 5023, 416, 3147, 236, - 2366, 175, 416, 2369, 468, 2371, 194, 471, 188, 2375, - 429, 82, 179, 468, 468, 429, 471, 471, 2384, 2385, - 2386, 209, 79, 140, 2240, 422, 231, 4576, 3626, 468, - 3628, 219, 471, 452, 2897, 152, 231, 231, 452, 468, - 157, 392, 471, 468, 231, 465, 471, 467, 467, 467, - 2266, 2914, 3650, 467, 231, 53, 5266, 245, 2274, 468, - 339, 212, 471, 2419, 135, 2281, 429, 3749, 431, 2285, - 468, 3669, 2611, 471, 336, 467, 2442, 469, 266, 467, - 4822, 468, 256, 9, 471, 202, 2605, 3541, 3542, 2305, - 264, 4321, 2611, 429, 2310, 431, 3810, 468, 2314, 3828, - 471, 468, 336, 471, 471, 222, 2863, 2864, 2474, 468, - 5185, 2327, 471, 266, 185, 2605, 2482, 379, 4499, 190, - 468, 2465, 468, 471, 2340, 471, 2425, 5154, 467, 8, - 304, 336, 11, 2465, 2350, 53, 15, 16, 17, 4881, - 328, 336, 336, 420, 406, 3008, 263, 3010, 468, 336, - 468, 471, 422, 471, 468, 272, 5231, 471, 468, 336, - 468, 471, 468, 471, 449, 471, 3180, 429, 43, 431, - 4912, 2537, 468, 269, 379, 471, 3332, 468, 468, 468, - 471, 471, 471, 5075, 379, 379, 468, 468, 468, 471, - 471, 471, 379, 468, 468, 468, 471, 471, 471, 5226, - 468, 406, 379, 471, 468, 467, 8, 471, 3156, 11, - 3158, 406, 406, 208, 2721, 3525, 287, 468, 4361, 406, - 471, 469, 410, 231, 429, 269, 431, 468, 3091, 406, - 471, 429, 266, 431, 429, 429, 431, 431, 40, 387, - 2759, 4622, 429, 3307, 431, 47, 3156, 468, 3158, 157, - 471, 279, 429, 266, 431, 5330, 3119, 468, 329, 449, - 471, 3018, 467, 788, 3484, 790, 269, 468, 2664, 71, - 471, 468, 467, 467, 471, 468, 3033, 43, 471, 468, - 467, 5023, 471, 449, 161, 402, 2793, 231, 3236, 468, - 467, 208, 471, 468, 459, 380, 471, 382, 4124, 468, - 2819, 231, 471, 374, 468, 468, 185, 471, 471, 471, - 563, 3296, 3994, 2709, 342, 380, 569, 382, 571, 468, - 2664, 574, 471, 576, 467, 578, 3236, 206, 336, 253, - 401, 468, 585, 468, 471, 470, 138, 590, 409, 592, - 468, 412, 470, 3474, 3475, 3476, 599, 468, 376, 468, - 471, 4007, 471, 4009, 3597, 8, 3219, 468, 11, 2575, - 471, 4108, 15, 16, 17, 2709, 468, 468, 468, 471, - 623, 379, 53, 468, 162, 628, 471, 2593, 180, 32, - 633, 204, 2726, 185, 637, 2601, 467, 3250, 416, 268, - 468, 468, 336, 471, 471, 3471, 469, 467, 406, 2743, - 433, 429, 468, 4020, 657, 471, 336, 318, 468, 467, - 2776, 471, 5154, 5134, 3171, 2759, 3173, 468, 342, 221, - 471, 429, 468, 431, 452, 471, 3365, 2823, 2753, 2754, - 2755, 467, 4049, 468, 3568, 379, 471, 185, 145, 467, - 2789, 2789, 2789, 5033, 2789, 2789, 469, 468, 468, 379, - 471, 471, 376, 468, 145, 708, 471, 2789, 467, 467, - 266, 3400, 406, 185, 468, 318, 268, 471, 721, 468, - 723, 3627, 471, 266, 468, 2819, 406, 471, 468, 2823, - 3723, 471, 145, 3346, 5226, 429, 468, 431, 185, 471, - 743, 744, 416, 746, 747, 3651, 145, 468, 751, 429, - 471, 431, 266, 4646, 318, 429, 3369, 3446, 468, 157, - 468, 471, 765, 471, 468, 468, 769, 471, 471, 3706, - 145, 468, 775, 467, 471, 220, 113, 2893, 452, 410, - 266, 8, 3395, 786, 11, 236, 467, 467, 15, 16, - 17, 392, 260, 467, 468, 798, 470, 339, 422, 157, - 212, 467, 354, 206, 468, 65, 35, 251, 251, 157, - 433, 467, 266, 40, 251, 3322, 251, 3430, 43, 43, - 47, 397, 251, 82, 453, 454, 455, 422, 457, 458, - 459, 460, 461, 462, 463, 281, 422, 840, 79, 157, - 300, 145, 145, 3953, 71, 467, 145, 419, 467, 467, - 145, 293, 34, 467, 433, 858, 145, 145, 471, 145, - 863, 864, 145, 145, 2980, 268, 145, 157, 145, 145, - 145, 145, 145, 266, 376, 467, 35, 4857, 220, 157, - 266, 5, 467, 5, 467, 3142, 157, 467, 157, 467, - 893, 894, 467, 3150, 5, 5, 467, 467, 450, 467, - 467, 467, 467, 5, 467, 457, 458, 459, 460, 461, - 462, 463, 467, 467, 467, 3031, 467, 920, 467, 5, - 467, 467, 467, 467, 2890, 430, 467, 467, 931, 4361, - 467, 467, 935, 467, 467, 467, 8, 277, 4370, 11, - 204, 471, 471, 35, 94, 35, 157, 263, 220, 157, - 953, 261, 8, 180, 349, 11, 336, 387, 185, 15, - 16, 17, 387, 387, 387, 421, 3872, 336, 40, 469, - 387, 387, 975, 336, 222, 47, 32, 3093, 8, 982, - 983, 11, 387, 387, 455, 15, 16, 17, 83, 336, - 387, 4884, 145, 387, 221, 341, 266, 217, 266, 71, - 387, 1004, 1005, 1006, 256, 1008, 387, 1010, 3124, 409, - 266, 379, 266, 332, 261, 467, 387, 387, 178, 467, - 3136, 83, 471, 281, 185, 145, 3142, 410, 410, 105, - 387, 376, 2998, 376, 3150, 387, 387, 387, 387, 53, - 3156, 268, 3158, 387, 53, 242, 387, 270, 387, 387, - 453, 454, 455, 387, 457, 458, 459, 460, 461, 462, - 463, 4265, 387, 387, 303, 387, 138, 379, 285, 336, - 285, 42, 387, 387, 42, 336, 1079, 206, 1081, 1082, - 387, 471, 387, 266, 397, 387, 266, 206, 3204, 206, - 206, 266, 266, 206, 206, 387, 429, 433, 206, 35, - 467, 145, 24, 266, 145, 251, 1109, 111, 180, 410, - 145, 145, 429, 185, 145, 421, 261, 266, 251, 3235, - 3236, 228, 35, 251, 251, 157, 35, 354, 212, 338, - 34, 425, 3226, 3868, 3869, 3870, 1139, 1140, 467, 467, - 4604, 1144, 385, 1146, 3226, 3111, 467, 385, 145, 221, - 206, 387, 387, 387, 3248, 387, 465, 465, 145, 410, - 145, 410, 145, 145, 1167, 3778, 3248, 1170, 387, 260, - 1173, 162, 255, 242, 467, 242, 206, 11, 385, 171, - 471, 387, 467, 1186, 153, 162, 3442, 3456, 389, 178, - 3459, 471, 178, 210, 202, 352, 268, 4545, 410, 267, - 35, 3307, 467, 274, 53, 468, 472, 410, 210, 471, - 4116, 468, 268, 1216, 4646, 336, 471, 4044, 256, 256, - 210, 467, 467, 450, 236, 387, 453, 454, 455, 387, - 457, 458, 459, 460, 461, 462, 463, 467, 268, 4671, - 387, 1244, 1245, 1246, 392, 422, 1249, 157, 212, 8, - 339, 3940, 11, 256, 147, 266, 15, 16, 17, 43, - 358, 147, 220, 251, 220, 220, 1269, 3774, 3775, 332, - 264, 3540, 387, 32, 379, 471, 318, 179, 387, 306, - 346, 40, 354, 387, 35, 266, 266, 206, 47, 212, - 264, 188, 410, 145, 3440, 302, 410, 157, 261, 455, - 3416, 455, 35, 377, 159, 303, 346, 261, 1311, 145, - 261, 1314, 71, 3459, 145, 467, 422, 145, 3284, 251, - 35, 251, 266, 467, 266, 212, 429, 157, 176, 176, - 35, 468, 468, 465, 3300, 340, 212, 468, 468, 1342, - 240, 157, 468, 1346, 1347, 346, 3440, 185, 449, 449, - 266, 3964, 251, 185, 1357, 1358, 1359, 23, 1361, 3325, - 5253, 5254, 3456, 185, 169, 3459, 387, 162, 4037, 433, - 3627, 467, 471, 3448, 3449, 3450, 3451, 471, 450, 429, - 1383, 239, 266, 471, 471, 457, 458, 459, 460, 461, - 462, 463, 53, 392, 3651, 260, 422, 453, 454, 455, - 376, 457, 458, 459, 460, 461, 462, 463, 212, 468, - 468, 468, 162, 162, 162, 1418, 468, 468, 277, 468, - 1423, 180, 468, 453, 454, 455, 185, 457, 458, 459, - 460, 461, 462, 463, 1437, 1438, 286, 162, 467, 449, - 468, 387, 467, 1446, 468, 468, 1449, 206, 207, 471, - 468, 467, 4884, 468, 467, 4190, 4191, 276, 4193, 426, - 267, 467, 221, 408, 267, 55, 230, 467, 416, 426, - 266, 1474, 468, 1476, 53, 4088, 451, 455, 266, 269, - 266, 188, 145, 467, 4248, 196, 1489, 256, 467, 1492, - 433, 387, 387, 387, 251, 254, 387, 145, 270, 89, - 341, 145, 145, 220, 341, 188, 147, 387, 341, 268, - 471, 3627, 271, 4126, 455, 387, 222, 287, 410, 287, - 387, 157, 3791, 387, 407, 1528, 387, 336, 232, 232, - 232, 387, 266, 387, 4147, 3651, 1539, 1540, 1541, 1542, - 1543, 5117, 3658, 387, 387, 336, 145, 3663, 4429, 3665, - 251, 336, 349, 336, 1557, 4436, 4549, 42, 148, 206, - 387, 387, 387, 4769, 387, 1568, 387, 1570, 206, 8, - 387, 206, 11, 206, 3, 173, 15, 16, 17, 1582, - 1583, 471, 397, 468, 3, 157, 468, 43, 320, 3705, - 3657, 4280, 182, 4499, 104, 354, 35, 3713, 4105, 4212, - 1603, 3717, 3718, 471, 3720, 3571, 468, 157, 4760, 3725, - 4762, 468, 264, 266, 4962, 35, 467, 145, 145, 1622, - 387, 157, 173, 468, 5056, 145, 466, 217, 410, 410, - 269, 143, 471, 346, 143, 1638, 1639, 1640, 1641, 336, - 336, 336, 466, 206, 206, 206, 206, 206, 1651, 206, - 136, 465, 11, 471, 162, 1658, 277, 157, 1661, 421, - 468, 251, 468, 463, 162, 272, 468, 468, 1671, 467, - 426, 1674, 471, 162, 4181, 468, 1679, 471, 467, 452, - 467, 1684, 267, 171, 415, 325, 81, 397, 468, 468, - 466, 450, 282, 468, 453, 454, 455, 3791, 457, 458, - 459, 460, 461, 462, 463, 157, 467, 35, 3824, 5057, - 4323, 410, 471, 212, 387, 196, 1719, 1720, 3684, 410, - 53, 3687, 379, 145, 467, 166, 3820, 1730, 1731, 397, - 341, 387, 322, 4002, 324, 336, 326, 4006, 3820, 5171, - 336, 387, 387, 333, 468, 387, 468, 1750, 1751, 468, - 387, 341, 4365, 4574, 1757, 467, 1759, 429, 4964, 349, - 318, 53, 379, 157, 147, 416, 4273, 206, 4972, 4973, - 71, 361, 3888, 3889, 3890, 145, 3892, 3893, 3894, 369, - 4037, 1784, 104, 397, 468, 4666, 467, 210, 1791, 206, - 1793, 206, 206, 4462, 1797, 1798, 206, 1800, 301, 191, - 467, 387, 433, 266, 1807, 35, 471, 313, 468, 471, - 285, 1814, 77, 379, 397, 346, 1819, 1820, 3784, 387, - 1823, 5253, 5254, 168, 1827, 104, 1829, 162, 206, 268, - 162, 1834, 1835, 467, 424, 467, 466, 3803, 1841, 1842, - 1843, 4510, 471, 471, 1847, 1848, 1849, 1850, 1851, 1852, - 1853, 1854, 468, 1856, 467, 1858, 1859, 311, 468, 1862, - 468, 8, 53, 4769, 11, 468, 471, 467, 15, 16, - 17, 427, 427, 277, 468, 1878, 1879, 1880, 1881, 468, - 467, 378, 1885, 1886, 209, 32, 275, 1890, 209, 467, - 1893, 273, 53, 1896, 1897, 1898, 1899, 1900, 1901, 1902, - 1903, 1904, 1905, 174, 1907, 5109, 261, 455, 4002, 3875, - 1913, 1914, 4006, 1916, 468, 468, 4032, 397, 4034, 468, - 1923, 387, 162, 71, 429, 179, 190, 256, 53, 256, - 5278, 455, 379, 471, 471, 65, 387, 387, 387, 4674, - 145, 467, 164, 206, 162, 111, 4067, 35, 410, 185, - 4685, 261, 4046, 4047, 467, 346, 35, 410, 251, 159, - 157, 346, 4651, 261, 4046, 4047, 53, 35, 429, 429, - 162, 266, 467, 157, 193, 269, 204, 162, 415, 5327, - 467, 4250, 362, 467, 467, 311, 468, 83, 285, 468, - 467, 467, 209, 4500, 5342, 428, 5202, 468, 126, 266, - 312, 468, 35, 4692, 145, 4984, 387, 157, 387, 467, - 467, 118, 467, 35, 453, 454, 455, 256, 457, 458, - 459, 460, 461, 462, 463, 467, 178, 467, 188, 4764, - 233, 467, 301, 467, 4647, 346, 468, 145, 2041, 104, - 2043, 131, 2045, 35, 468, 270, 333, 333, 425, 397, - 468, 360, 360, 4120, 53, 2058, 53, 35, 74, 206, - 467, 467, 471, 468, 2067, 2068, 467, 467, 415, 468, - 467, 4769, 379, 178, 4687, 157, 410, 379, 2081, 249, - 467, 5, 468, 266, 151, 2088, 144, 2090, 379, 433, - 65, 467, 467, 269, 4210, 4211, 65, 126, 429, 429, - 414, 311, 415, 467, 4220, 467, 4222, 4223, 471, 8, - 4226, 349, 11, 35, 162, 309, 256, 379, 2121, 131, - 426, 268, 266, 266, 190, 467, 346, 2130, 4741, 2132, - 35, 35, 301, 4746, 4747, 269, 269, 164, 4407, 164, - 53, 40, 387, 467, 467, 4414, 2149, 408, 47, 468, - 4419, 471, 467, 4422, 4423, 332, 116, 4892, 2161, 4923, - 2163, 2164, 5, 468, 468, 2168, 346, 2170, 332, 2172, - 4286, 2174, 71, 273, 319, 2178, 4142, 467, 2181, 4448, - 21, 32, 467, 471, 256, 467, 144, 471, 4154, 4878, - 162, 387, 4461, 74, 429, 301, 429, 360, 4292, 2202, - 164, 360, 164, 785, 4320, 4462, 4895, 467, 2423, 2212, - 4292, 4900, 894, 4902, 2776, 4510, 893, 2220, 2320, 2252, - 4509, 1306, 849, 1555, 2227, 2950, 3626, 3600, 5269, 5099, - 3140, 3725, 4782, 2236, 2345, 4351, 4962, 5202, 3772, 138, - 4509, 4604, 4499, 4238, 4573, 4858, 2870, 2558, 5082, 21, - 4461, 4920, 5191, 4510, 2257, 27, 4992, 4991, 5119, 2262, - 2263, 2874, 4551, 5226, 3821, 3805, 4964, 4929, 3763, 2272, - 2273, 3621, 2408, 2276, 3191, 2278, 2279, 2408, 890, 2975, - 3788, 180, 4551, 4274, 4580, 3203, 185, 4589, 5204, 5342, - 5327, 4566, 2402, 3149, 2297, 3144, 5132, 2300, 4512, 4744, - 4938, 27, 4515, 3875, 1146, 0, 453, 454, 455, 4713, - 457, 458, 459, 460, 461, 462, 463, 1617, 2321, 2322, - 4414, 3828, 221, 2104, 2848, 4419, 4857, 1815, 4422, 1730, - 619, 1815, 3650, 2336, 651, 2338, 2339, 1157, 963, 1816, - 1671, 3195, 3094, 5159, 3669, 5318, 2042, 1390, 764, 4048, - 2043, 4620, 1761, 4444, 5074, 3520, 4441, 2790, 1331, 8, - 2084, 1279, 11, 2805, 5066, 2368, 2058, 3483, 4904, 268, - 2083, 4033, 3459, 2376, 2377, 3991, 4008, 4682, 1350, 4345, - 2383, 3456, 1352, 4499, 1349, 4881, 4880, 3521, 5322, 5175, - 3456, 40, 2395, 5257, 2397, 90, 4649, 1357, 47, 5056, - 3408, 4438, 5069, 5049, 5070, 1911, 2726, 2633, 2411, 2779, - 1914, 2414, 4681, 2416, 1695, -1, 2419, -1, 2724, 1300, - 2423, 3658, 71, 2426, 4540, -1, 1297, -1, -1, -1, - -1, -1, -1, -1, -1, 2438, 2439, -1, -1, -1, - -1, -1, -1, -1, -1, 140, -1, 5060, -1, -1, - -1, -1, -1, 2456, -1, 354, -1, 152, -1, -1, - -1, -1, 157, 2466, -1, 2468, -1, 162, -1, -1, - -1, -1, -1, 168, -1, -1, 171, -1, -1, 174, - -1, -1, -1, -1, 4578, -1, -1, -1, 2491, 4455, - -1, 4457, -1, -1, -1, -1, 4578, -1, -1, -1, - -1, -1, -1, -1, 5202, -1, -1, 202, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 2520, -1, 2522, - 2523, 2524, 2525, 4617, -1, 0, -1, 222, -1, 4798, - -1, 180, -1, -1, -1, 4617, 185, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 4692, -1, 35, -1, - -1, 450, -1, 4822, -1, 2558, -1, -1, 457, 458, - 459, 460, 461, 462, 463, -1, -1, 54, 263, -1, - -1, 266, 221, -1, -1, -1, -1, 272, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 4681, -1, -1, - -1, -1, 2595, -1, -1, -1, -1, -1, 4692, -1, - -1, -1, 2605, -1, -1, -1, -1, -1, 2611, -1, - -1, -1, 4881, -1, -1, 90, 103, 104, -1, 268, - -1, 2624, -1, -1, 111, -1, -1, -1, -1, 2632, - 325, -1, -1, -1, 2637, -1, -1, -1, -1, -1, - 4756, 4757, -1, 4912, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 4769, -1, -1, -1, 4773, -1, 2662, - 2663, 2664, -1, 4920, 2667, 140, -1, 4783, -1, -1, - -1, -1, 2675, 2676, 2677, 2678, -1, 152, -1, 166, - -1, 376, 157, -1, -1, 2688, -1, 162, 2691, -1, - 2693, -1, -1, 168, -1, -1, 171, -1, -1, 174, - 187, -1, 2705, 2706, -1, 354, 2709, 402, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 2721, -1, - 2723, -1, 2725, -1, 2727, -1, -1, 202, 4822, -1, - -1, 426, -1, 428, 429, -1, -1, -1, 4832, -1, - -1, -1, -1, -1, -1, 2748, -1, 222, 235, 2752, - 4832, 238, -1, -1, 5023, -1, 2759, -1, 2761, 2762, - 2763, -1, 249, -1, 251, -1, -1, -1, -1, -1, - 465, -1, -1, 468, 469, 470, 2779, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 2790, 263, -1, - -1, 266, -1, 280, -1, -1, -1, 272, -1, 5088, - -1, 450, 2805, -1, 0, -1, -1, -1, 457, 458, - 459, 460, 461, 462, 463, 4909, 2819, -1, -1, 5088, - 2823, -1, -1, 2826, -1, 2828, -1, 4909, -1, -1, - -1, -1, -1, -1, -1, -1, 323, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 4964, -1, - 325, -1, 4968, -1, 4970, -1, 343, -1, 4974, 4975, - -1, -1, -1, -1, -1, -1, 2869, -1, 2871, -1, - 5139, 5160, 5161, 2876, -1, -1, 363, -1, 365, -1, - 8, 368, -1, 11, -1, 5154, -1, 15, 16, 17, - -1, 5160, 5161, -1, 90, -1, -1, -1, -1, -1, - 2903, 376, 2905, 2906, 2907, 677, -1, 679, -1, 681, - -1, -1, -1, -1, -1, 687, 688, 689, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 402, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 140, -1, -1, -1, -1, -1, - -1, 426, -1, 428, 429, -1, 152, 5226, -1, -1, - -1, 157, -1, -1, -1, -1, 162, -1, -1, -1, - -1, 8, 168, -1, 11, 171, -1, -1, 174, -1, - 467, -1, -1, 5099, -1, 5101, -1, -1, -1, -1, - 465, -1, -1, 468, 469, 470, -1, -1, -1, -1, - -1, -1, -1, 40, -1, -1, 202, -1, -1, -1, - 47, -1, -1, 3016, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 199, 222, -1, -1, -1, - -1, -1, -1, -1, 71, 209, -1, -1, -1, 5133, - 8, -1, -1, 11, -1, -1, 220, 15, 16, 17, - -1, 5133, -1, -1, 5343, 5344, 5325, -1, -1, -1, - 5159, 5159, 5159, -1, 5159, 5159, -1, 263, -1, -1, - 266, -1, 40, -1, 5343, 5344, 272, 5159, 206, 47, - -1, -1, -1, -1, -1, 857, 5202, 5233, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 138, -1, 71, -1, -1, -1, -1, -1, 5075, - -1, -1, -1, -1, -1, -1, -1, 3120, -1, -1, - -1, -1, 3125, 3126, 8, -1, -1, 11, -1, 325, - -1, -1, -1, -1, 5233, 5233, 5233, -1, 5233, 5233, - 268, -1, -1, 180, -1, -1, -1, -1, 185, -1, - -1, 5233, -1, 5269, -1, -1, 40, -1, -1, 3162, - 3163, 3164, 5278, 47, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 3179, -1, -1, -1, - 376, -1, -1, -1, 221, -1, -1, 71, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 3201, 3202, - -1, -1, -1, -1, -1, -1, 402, -1, 3211, 3212, - 3213, 5327, 180, -1, 3217, -1, -1, 185, -1, 5318, - 5318, 5318, -1, 5318, 5318, -1, 5342, 3230, -1, -1, - 426, 268, 428, 429, -1, -1, 5318, -1, 206, 207, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 221, 138, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 465, - -1, -1, 468, 469, 470, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 3288, 254, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 180, -1, -1, -1, - 268, 185, 35, -1, 3307, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 354, -1, -1, - 3323, -1, 55, -1, -1, 453, 454, 455, -1, 457, - 458, 459, 460, 461, 462, 463, -1, 221, -1, -1, - 3343, -1, -1, -1, -1, 1117, -1, -1, 3351, 3352, - -1, 3354, -1, -1, -1, -1, 89, 3360, -1, 3362, - -1, -1, 3365, -1, -1, -1, -1, 3370, 3371, 3372, - 3373, -1, -1, 3376, 3377, 3378, 3379, 3380, 3381, 3382, - 3383, 3384, 3385, 3386, 268, -1, 354, 3390, 3391, 563, - -1, -1, -1, -1, -1, 569, -1, 3400, -1, -1, - -1, 3404, -1, -1, -1, 3408, -1, -1, -1, -1, - -1, -1, -1, 450, 3417, 148, -1, 3420, -1, 3422, - 457, 458, 459, 460, 461, 462, 463, -1, 3431, -1, - -1, 3434, 3435, -1, -1, -1, 3439, 3440, -1, -1, - -1, 3444, -1, 3446, -1, -1, -1, -1, -1, 182, - 3453, 3454, 3455, 3456, -1, -1, 3459, 3460, -1, -1, - -1, 3464, 3465, 3466, -1, -1, -1, -1, -1, 3472, - 354, -1, -1, -1, -1, 3478, 3479, 3480, -1, 212, - -1, -1, 450, -1, 217, 453, 454, 455, -1, 457, - 458, 459, 460, 461, 462, 463, -1, -1, -1, -1, - -1, -1, -1, 3506, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 3520, 251, 3522, - -1, -1, -1, -1, -1, -1, -1, -1, 1300, -1, - -1, -1, -1, 1305, 1306, -1, -1, 3540, 3541, 3542, - -1, 3544, -1, -1, -1, -1, -1, 721, -1, 282, - -1, -1, -1, -1, -1, -1, -1, -1, 3561, 3562, - 3563, 3564, -1, -1, -1, -1, 450, -1, -1, -1, - -1, -1, 746, 457, 458, 459, 460, 461, 462, 463, - -1, -1, -1, -1, -1, -1, -1, 3590, -1, 322, - -1, 765, -1, 326, -1, -1, -1, -1, -1, -1, - 333, -1, -1, -1, -1, 3608, 8, -1, 341, 11, - -1, -1, 786, 15, 16, 17, 349, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 361, -1, - 32, -1, -1, -1, -1, -1, 369, -1, 40, 1411, - -1, -1, -1, -1, -1, 47, -1, -1, -1, 1421, - -1, -1, -1, -1, -1, -1, -1, 390, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 71, - 8, -1, -1, 11, -1, -1, -1, 15, 16, 17, - -1, -1, -1, -1, 858, -1, -1, -1, -1, 1461, - 1462, 424, -1, -1, 32, 428, 429, -1, 8, 3702, - -1, 11, -1, -1, -1, 15, 16, 17, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 1494, -1, -1, 1497, 1498, -1, -1, -1, - 40, -1, -1, -1, -1, -1, -1, 47, 3741, -1, - -1, -1, 3745, -1, 3747, -1, 3749, -1, -1, -1, - -1, -1, -1, 3756, -1, -1, -1, -1, -1, 3762, - -1, 71, -1, -1, -1, -1, -1, -1, -1, 3772, - -1, -1, -1, -1, -1, -1, -1, -1, 180, -1, - -1, 22, -1, 185, 3787, -1, -1, 28, 3791, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 3801, -1, - 41, 975, -1, -1, 206, 207, -1, 3810, 1580, -1, - -1, -1, -1, 189, 190, -1, -1, 193, 3821, 221, - -1, -1, 3825, -1, -1, -1, 3829, 3830, 69, -1, - 1004, 1005, 1006, -1, -1, 211, -1, -1, -1, -1, - -1, -1, 218, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 254, -1, -1, 3858, -1, 3860, -1, -1, - -1, -1, -1, -1, 3867, -1, 268, -1, 206, 271, - 180, -1, -1, -1, -1, 185, -1, -1, -1, -1, - 121, -1, 123, -1, -1, -1, -1, -1, -1, 130, - -1, -1, 133, 3896, -1, -1, 206, 207, -1, -1, - -1, -1, -1, -1, -1, -1, 3909, -1, -1, -1, - -1, 221, -1, -1, -1, -1, 1688, 158, -1, -1, - -1, -1, -1, -1, -1, -1, 1698, -1, 1700, -1, - 268, -1, -1, -1, 1706, -1, -1, 3940, -1, -1, - -1, 1713, -1, -1, 254, -1, -1, 3950, 3951, 190, - -1, -1, 354, -1, -1, 3958, 3959, -1, 268, -1, - 3963, -1, -1, -1, -1, 3968, -1, -1, 3971, 3972, - 1144, -1, -1, 3976, 3977, -1, -1, -1, -1, 3982, - 3983, 3984, 3985, 3986, -1, -1, -1, 3990, 3991, 3992, - -1, 3994, 3995, -1, -1, 3998, 1170, -1, -1, 4002, - -1, -1, -1, 4006, -1, -1, -1, -1, 249, 4012, - 251, -1, -1, -1, -1, -1, 4019, -1, -1, -1, - 261, 4024, -1, -1, -1, -1, -1, 4030, -1, 270, - -1, -1, -1, -1, 4037, -1, -1, -1, -1, -1, - 281, 4044, -1, -1, 354, 4048, -1, -1, 450, -1, - 4053, 453, 454, 455, -1, 457, 458, 459, 460, 461, - 462, 463, -1, -1, 4067, 1837, 1838, 4070, -1, 471, - -1, -1, 1844, 1845, -1, -1, -1, 318, -1, -1, - 321, 322, -1, -1, -1, -1, -1, 4090, 4091, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 1873, -1, -1, -1, 4108, -1, -1, 349, -1, - -1, -1, -1, -1, -1, 453, 454, 455, 4121, 457, - 458, 459, 460, 461, 462, 463, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 1311, -1, -1, - 450, -1, -1, 453, 454, 455, -1, 457, 458, 459, - 460, 461, 462, 463, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 1026, -1, -1, 4170, -1, -1, - -1, -1, 413, 22, -1, -1, -1, -1, -1, 28, - -1, -1, -1, -1, 1358, -1, -1, -1, -1, 4192, - -1, -1, 1054, -1, -1, -1, -1, -1, 574, -1, - -1, -1, 578, -1, 4207, -1, -1, -1, -1, 20, - -1, -1, 1074, -1, 25, -1, 592, -1, -1, -1, - 69, -1, 1084, 599, -1, -1, 37, -1, 1090, -1, - -1, -1, -1, 4236, 1096, -1, -1, -1, -1, -1, - 1102, -1, -1, 1105, -1, -1, -1, 4250, 59, -1, - -1, -1, -1, 4256, -1, -1, -1, -1, 25, -1, - -1, 72, 4265, 1437, -1, -1, -1, -1, -1, -1, - -1, -1, 1446, -1, 123, -1, 87, 4280, -1, -1, - -1, 130, -1, -1, 133, -1, -1, -1, -1, -1, - 4293, -1, 4295, -1, 105, 2067, 2068, -1, -1, -1, - -1, -1, 1476, -1, -1, -1, 73, -1, -1, 158, - -1, -1, -1, -1, -1, 1489, -1, 128, 1492, -1, - -1, -1, 4325, -1, -1, -1, -1, -1, 139, -1, - -1, -1, -1, -1, -1, -1, 147, -1, 105, -1, - -1, 190, -1, -1, -1, -1, -1, -1, 159, -1, - -1, -1, -1, 164, -1, -1, 2128, -1, 4361, -1, - 171, 128, -1, -1, -1, -1, -1, 4370, -1, 1543, - -1, -1, 139, -1, -1, -1, -1, 188, -1, -1, - -1, -1, -1, 1557, -1, 4388, 4389, -1, -1, 4392, - -1, -1, 159, -1, -1, -1, 1570, 164, -1, -1, - 249, -1, 251, -1, 4407, -1, -1, 4410, -1, -1, - -1, 4414, 261, -1, -1, -1, 4419, -1, -1, 4422, - 4423, 270, 4425, 234, 4427, -1, -1, 4430, 4431, -1, - -1, -1, 281, -1, -1, -1, 35, -1, -1, -1, - -1, -1, -1, -1, -1, 4448, 213, 4450, 1622, -1, - -1, -1, -1, -1, -1, -1, 55, 268, 4461, 4462, - 4463, 4464, 4465, -1, -1, -1, -1, 234, -1, 280, - -1, -1, 321, 322, -1, -1, -1, 1651, -1, 290, - -1, -1, -1, -1, 1658, -1, -1, 863, 864, 300, - 89, -1, 303, -1, -1, -1, -1, -1, -1, -1, - 349, -1, -1, -1, -1, -1, 4509, 4510, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 329, 2291, - -1, -1, -1, 334, -1, 336, -1, 2299, -1, -1, - 2302, -1, 343, 300, -1, 346, 303, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 4551, 148, - -1, 4554, -1, -1, 365, -1, -1, -1, -1, -1, - 371, -1, 329, 4566, 413, 376, 4569, -1, 379, 336, - -1, 4574, 383, 4576, -1, -1, 343, 953, -1, 390, - 4583, 392, 20, 182, -1, 1759, 397, 25, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 4600, 409, -1, - -1, 4604, -1, -1, 371, -1, 982, 983, -1, 376, - -1, 422, 379, 212, -1, 4618, 4619, 4620, 217, -1, - -1, 59, -1, 1797, 1798, -1, -1, -1, -1, -1, - 397, -1, 1008, -1, 72, -1, -1, -1, -1, -1, - 1814, -1, -1, 4646, -1, -1, 4649, -1, 4651, 87, - -1, -1, 251, -1, -1, 422, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 4671, -1, - -1, -1, -1, -1, 4677, -1, -1, -1, 4681, -1, - -1, -1, 4685, 282, -1, -1, -1, -1, -1, 4692, - 128, -1, -1, -1, -1, -1, -1, -1, 4701, -1, - -1, 139, -1, -1, -1, 1081, 1082, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 159, 4725, 322, -1, -1, 164, 326, -1, -1, - -1, -1, 2504, 2505, 333, -1, -1, -1, -1, 1913, - 2512, -1, 341, -1, -1, -1, -1, -1, 4751, 1923, - 349, -1, -1, -1, -1, -1, -1, 4760, 4761, 4762, - 4763, -1, 361, -1, -1, -1, -1, -1, -1, -1, - 369, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 35, 390, -1, 7, -1, 4798, 234, 2569, -1, 13, - 14, -1, -1, -1, -1, 19, -1, 21, -1, -1, - 55, -1, -1, 27, -1, 29, 4819, -1, -1, 4822, - -1, -1, -1, -1, -1, 424, -1, -1, -1, 428, - 268, -1, -1, -1, 48, 49, -1, -1, -1, -1, - -1, -1, -1, -1, 89, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 300, 1725, -1, -1, -1, 2041, -1, 2043, - -1, 1733, -1, -1, -1, 4878, -1, -1, 4881, -1, - -1, 4884, -1, -1, -1, 4888, -1, 1749, -1, -1, - -1, -1, 4895, -1, -1, -1, -1, 4900, 336, 4902, - -1, 4904, -1, 148, -1, 343, -1, 2081, 346, 4912, - -1, -1, -1, -1, -1, 4918, -1, 4920, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 4930, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 182, 376, -1, - -1, -1, -1, -1, -1, 383, -1, -1, -1, -1, - -1, -1, 390, -1, -1, -1, -1, -1, -1, 397, - -1, -1, -1, -1, -1, -1, -1, 212, -1, 4972, - 4973, -1, 217, -1, -1, -1, -1, -1, -1, -1, - -1, 195, -1, -1, 422, -1, -1, -1, -1, 203, - -1, 205, -1, 207, 208, -1, 210, -1, 212, -1, - 5003, 215, 2774, 217, 2776, -1, 251, 5010, -1, -1, - -1, 5014, -1, -1, -1, -1, -1, -1, 22, -1, - 5023, -1, -1, -1, 28, 2797, 2798, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 282, -1, -1, - -1, -1, -1, -1, -1, 5048, 5049, -1, -1, -1, - 5053, -1, -1, 5056, -1, -1, -1, 55, -1, -1, - -1, -1, 2236, 5066, -1, 69, 5069, -1, -1, -1, - -1, 5074, -1, 1449, -1, -1, -1, 322, -1, -1, - -1, 326, -1, 2257, -1, 5088, -1, -1, 333, -1, - -1, 89, -1, -1, -1, -1, 341, -1, -1, 5102, - -1, -1, -1, -1, 349, -1, 5109, -1, -1, -1, - -1, -1, -1, -1, -1, 119, 361, -1, -1, 123, - -1, 119, -1, -1, 369, -1, 130, -1, -1, 133, - -1, 5134, -1, -1, -1, -1, 5139, -1, -1, -1, - -1, -1, 5145, -1, -1, 390, -1, 2321, 2322, -1, - 148, 5154, -1, -1, 158, -1, -1, 5160, 5161, 5162, - -1, -1, -1, 1539, 1540, 1541, 1542, -1, 5171, -1, - -1, -1, 5175, -1, -1, -1, -1, -1, 2040, 424, - -1, -1, -1, 428, 182, 5188, 190, -1, -1, -1, - -1, -1, 5195, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 1582, 1583, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 217, - -1, -1, -1, 5226, 5227, 5228, -1, 1603, 22, -1, - -1, -1, -1, -1, 28, -1, -1, -1, -1, -1, - -1, 35, 2416, -1, -1, 249, -1, 251, -1, -1, - 5253, 5254, -1, 251, -1, -1, -1, 261, -1, -1, - 54, -1, 1638, 1639, 1640, 1641, 270, -1, -1, -1, - -1, -1, -1, -1, -1, 69, -1, 281, -1, -1, - -1, -1, -1, 281, 282, -1, -1, -1, -1, -1, - -1, -1, 5295, -1, -1, -1, -1, -1, 5301, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 103, - -1, -1, 5315, -1, 318, -1, -1, 321, 322, 5322, - 318, -1, 5325, -1, 322, -1, -1, -1, 326, 123, - -1, -1, -1, -1, -1, 333, 130, -1, -1, 133, - 5343, 5344, -1, 341, -1, 349, -1, -1, -1, -1, - -1, 349, -1, -1, -1, -1, -1, -1, 572, -1, - -1, -1, -1, 361, 158, -1, 580, -1, -1, -1, - 3142, 369, -1, 587, 588, 1751, -1, 591, 3150, 593, - 594, 1757, -1, -1, 598, -1, -1, -1, -1, -1, - -1, -1, -1, 187, -1, 609, 190, -1, -1, -1, - -1, -1, 3174, -1, -1, -1, -1, -1, -1, 413, - 624, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 2595, -1, -1, -1, -1, 424, -1, 0, -1, - -1, -1, -1, 647, -1, 649, -1, -1, -1, -1, - -1, 235, -1, -1, 238, 659, 18, -1, -1, -1, - -1, -1, -1, -1, -1, 249, 28, 251, 30, 31, - -1, -1, -1, -1, -1, -1, -1, 261, -1, -1, - -1, -1, -1, -1, 46, -1, 270, 691, -1, -1, - -1, -1, -1, 3255, -1, -1, 280, 281, -1, -1, - -1, -1, -1, -1, 66, -1, 68, 69, -1, -1, - -1, -1, -1, 75, -1, 77, -1, -1, 722, 1885, - -1, -1, -1, -1, -1, -1, 88, -1, 90, -1, - -1, -1, -1, -1, 318, -1, -1, 321, 322, 323, - -1, -1, -1, -1, -1, 107, -1, -1, 110, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 343, - -1, -1, 124, -1, 126, 349, -1, -1, 130, -1, - 3332, -1, 776, -1, 136, -1, -1, -1, -1, 363, - -1, -1, 144, -1, 146, -1, -1, -1, 2752, -1, - 152, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 168, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 184, -1, -1, -1, -1, -1, -1, 413, - -1, -1, -1, 837, -1, 2487, -1, -1, -1, -1, - -1, -1, 2494, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 223, 224, -1, 2516, -1, -1, 229, -1, -1, - -1, -1, -1, -1, 2526, -1, -1, 22, 2530, 241, - -1, 2533, -1, 28, -1, -1, -1, 2539, -1, 2541, - -1, 253, 2544, -1, 3, -1, 41, -1, -1, 8, - -1, -1, 11, -1, 908, -1, 15, 16, 17, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 924, -1, -1, 32, 69, -1, 35, -1, -1, -1, - -1, 40, 936, 295, -1, 939, -1, -1, 47, -1, - -1, -1, -1, -1, -1, 949, 308, -1, -1, -1, - 954, 2603, 314, 315, -1, 317, -1, -1, 962, -1, - 322, -1, 71, -1, 968, 327, -1, 971, 330, -1, - -1, -1, -1, 335, -1, -1, 121, -1, 123, 341, - 342, -1, -1, -1, -1, 130, -1, 349, 133, -1, - -1, 353, -1, -1, -1, -1, -1, 2163, 2164, -1, - -1, 363, -1, -1, -1, -1, 2172, 1011, 2174, -1, - -1, -1, 2178, 158, 376, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 395, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 405, -1, 190, -1, -1, -1, 411, - -1, -1, 3016, -1, 416, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 3627, -1, 429, -1, -1, - -1, 180, -1, -1, -1, 8, 185, -1, 11, -1, - -1, -1, 15, 16, 17, -1, -1, -1, -1, 3651, - 452, -1, -1, -1, -1, 3657, -1, 206, 207, 32, - -1, -1, -1, -1, 249, 467, 251, 40, 470, -1, - -1, -1, 221, -1, 47, -1, 261, -1, 1122, -1, - 1124, -1, 1126, -1, 1128, 270, 1130, 1131, 1132, -1, - -1, 2297, -1, 1137, 2300, -1, 281, -1, 71, -1, - -1, -1, -1, -1, 1148, 254, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 268, - -1, -1, 271, -1, -1, -1, -1, 3729, 3730, -1, - -1, -1, -1, 318, -1, -1, 321, 322, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 3162, 3163, - 3164, -1, 2368, -1, 349, -1, -1, -1, -1, -1, - 2376, 2377, -1, -1, -1, 3179, -1, 2383, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 2879, -1, -1, - -1, 2397, 8, -1, -1, 11, -1, -1, 3202, 15, - 16, 17, -1, -1, -1, 354, -1, 180, 3212, 3213, - -1, 8, 185, 3217, 11, -1, 32, -1, 15, 16, - 17, -1, -1, -1, 40, -1, 3230, -1, 413, -1, - -1, 47, 2438, 206, 207, 32, -1, -1, -1, -1, - -1, -1, -1, 40, -1, -1, -1, -1, 221, -1, - 47, -1, -1, -1, -1, 71, -1, -1, -1, -1, - 2466, -1, -1, -1, -1, -1, -1, 2959, -1, 2961, - 3872, -1, -1, -1, 71, -1, -1, -1, 22, -1, - -1, 254, -1, -1, 28, -1, -1, 1331, -1, -1, - -1, -1, -1, -1, -1, 268, -1, -1, 271, -1, - -1, 450, -1, -1, 453, 454, 455, -1, 457, 458, - 459, 460, 461, 462, 463, -1, 2522, -1, 2524, 3323, - -1, -1, -1, -1, -1, 69, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 8, -1, -1, 11, -1, -1, -1, - 15, 16, 17, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 1407, 180, -1, -1, 32, -1, 185, - -1, -1, -1, -1, -1, 40, -1, -1, -1, 123, - -1, 354, 47, 180, -1, -1, 130, -1, 185, 133, - 206, 207, -1, -1, -1, -1, -1, -1, 3090, -1, - -1, -1, -1, -1, 3096, 221, 71, -1, -1, 206, - 207, -1, -1, -1, 158, -1, -1, -1, 2624, -1, - -1, -1, -1, -1, 221, -1, -1, -1, -1, -1, - -1, 1475, -1, -1, -1, -1, -1, -1, 254, -1, - -1, -1, -1, -1, -1, -1, 190, -1, -1, 3453, - 3454, 3455, 268, -1, -1, 271, -1, 254, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 268, -1, -1, 271, -1, -1, 450, -1, -1, - 453, 454, 455, -1, 457, 458, 459, 460, 461, 462, - 463, -1, -1, -1, -1, 468, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 249, -1, 251, -1, -1, - -1, -1, -1, -1, 4116, 180, -1, 261, 4120, -1, - 185, -1, -1, -1, -1, -1, 270, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 281, 354, -1, - -1, 206, 207, 4145, 4146, -1, -1, -1, 4150, 4151, - -1, -1, -1, -1, -1, -1, 221, 354, -1, 8, - -1, -1, 11, -1, -1, -1, 15, 16, 17, 1613, - -1, -1, -1, -1, 318, -1, -1, 321, 322, 22, - -1, -1, 3274, 32, 3276, 28, 3278, -1, -1, 254, - -1, 40, -1, 3285, -1, -1, -1, -1, 47, -1, - -1, -1, -1, 268, -1, 349, 271, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 71, -1, -1, -1, 69, -1, -1, -1, - -1, -1, 3324, -1, 450, -1, -1, 453, 454, 455, - -1, 457, 458, 459, 460, 461, 462, 463, -1, -1, - -1, -1, 468, 450, -1, -1, 453, 454, 455, -1, - 457, 458, 459, 460, 461, 462, 463, -1, -1, 413, - 8, 468, -1, 11, -1, -1, 119, 15, 16, 17, - 123, -1, -1, -1, -1, -1, -1, 130, -1, 354, - 133, 1735, -1, 1737, 32, -1, -1, 2903, -1, 2905, - 2906, 2907, 40, -1, -1, -1, -1, -1, -1, 47, - 1754, -1, 1756, -1, -1, 158, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 1770, -1, 1772, -1, - 1774, 180, 1776, 71, 1778, -1, 185, -1, 1782, -1, - -1, 3745, -1, -1, -1, -1, -1, 190, -1, -1, - -1, -1, 3756, -1, -1, -1, -1, 206, 207, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 221, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 3787, -1, 450, -1, -1, 453, 454, - 455, -1, 457, 458, 459, 460, 461, 462, 463, -1, - -1, -1, -1, 468, -1, 254, 249, -1, 251, -1, - -1, -1, -1, -1, -1, -1, -1, 3821, 261, 268, - -1, -1, 271, -1, -1, -1, -1, 270, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 281, -1, - -1, -1, 180, -1, -1, -1, -1, 185, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 3867, -1, -1, -1, -1, 206, 207, - -1, -1, -1, -1, -1, 318, -1, -1, 321, 322, - -1, -1, -1, 221, -1, -1, -1, 8, -1, -1, - 11, -1, -1, -1, 15, 16, 17, 4499, -1, -1, - -1, -1, -1, -1, -1, 354, 349, -1, -1, -1, - -1, 32, -1, -1, 3120, -1, 254, -1, -1, 40, - -1, -1, -1, -1, -1, -1, 47, -1, -1, -1, - 268, -1, -1, 271, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 71, -1, -1, -1, -1, -1, -1, -1, -1, 8, - -1, -1, 11, -1, -1, -1, 15, 16, 17, -1, - 413, -1, -1, -1, -1, -1, -1, -1, -1, 3983, - 3984, 3985, 3986, 32, -1, -1, -1, -1, -1, -1, - -1, 40, -1, -1, -1, -1, -1, -1, 47, -1, - -1, 450, -1, -1, 453, 454, 455, -1, 457, 458, - 459, 460, 461, 462, 463, -1, 354, -1, -1, 468, - -1, -1, 71, -1, -1, -1, -1, -1, -1, -1, - -1, 8, -1, -1, 11, -1, -1, -1, 15, 16, - 17, -1, -1, -1, -1, -1, -1, -1, -1, 2093, - 2094, -1, -1, -1, -1, 32, -1, -1, -1, 180, - -1, -1, -1, 40, 185, -1, -1, -1, 2112, 2113, - 47, -1, -1, 2117, 2118, -1, -1, -1, 2122, -1, - -1, -1, 3288, -1, -1, 206, 207, -1, -1, -1, - -1, -1, 2136, -1, 71, -1, -1, -1, -1, 2143, - 221, -1, -1, 2147, 2148, -1, -1, 2151, 2152, -1, - -1, -1, 450, -1, 2158, 453, 454, 455, -1, 457, - 458, 459, 460, 461, 462, 463, -1, 2171, -1, 2173, - 468, 180, -1, 254, -1, -1, 185, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 268, 2192, -1, - 271, -1, -1, 2197, 4756, 4757, -1, 206, 207, -1, - -1, -1, -1, -1, -1, -1, 2210, 4769, -1, -1, - 3862, -1, 221, -1, 3866, 2219, -1, 2221, -1, -1, - 2224, 2225, 2226, -1, -1, -1, -1, 2231, 2232, -1, - -1, -1, -1, -1, -1, -1, -1, 2241, -1, -1, - -1, -1, 2246, 180, -1, 254, -1, 2251, 185, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 268, - -1, -1, 271, 2267, -1, -1, -1, -1, -1, 206, - 207, 2275, -1, 354, -1, -1, -1, -1, -1, -1, - -1, -1, 2286, -1, 221, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 2298, -1, -1, 2301, -1, -1, - -1, -1, 2306, -1, -1, -1, -1, 2311, 2312, -1, - -1, -1, 2316, -1, -1, 2319, -1, 254, -1, 2323, - 2324, 2325, 2326, -1, 2328, -1, -1, -1, -1, -1, - -1, 268, -1, -1, 271, -1, -1, 2341, 2342, -1, - 2344, -1, -1, -1, -1, 354, -1, -1, -1, -1, - 2354, 2355, -1, -1, -1, -1, -1, -1, -1, -1, - 22, 4325, -1, -1, -1, -1, 28, -1, -1, 450, - -1, -1, 453, 454, 455, -1, 457, 458, 459, 460, - 461, 462, 463, -1, -1, -1, -1, 468, -1, -1, - -1, -1, -1, -1, -1, 3561, 3562, 3563, 3564, -1, - -1, -1, 2406, -1, -1, -1, -1, 69, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 354, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 2434, -1, -1, -1, 4086, -1, -1, -1, -1, -1, - -1, 450, -1, -1, 453, 454, 455, -1, 457, 458, - 459, 460, 461, 462, 463, -1, -1, -1, -1, 468, - -1, 123, -1, -1, -1, -1, -1, -1, 130, -1, - -1, 133, -1, -1, -1, 4127, 4128, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 158, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 450, -1, -1, 453, 454, 455, -1, - 457, 458, 459, 460, 461, 462, 463, -1, 190, -1, - -1, 468, -1, 8, -1, -1, 11, 5099, -1, 5101, - 15, 16, 17, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 32, -1, -1, - -1, 4213, 4214, -1, -1, 40, -1, -1, -1, -1, - 8, -1, 47, 11, -1, 3741, -1, 15, 16, 17, - -1, 3747, -1, -1, -1, -1, -1, 249, -1, 251, - 4554, -1, 2596, -1, 32, -1, 71, -1, -1, 261, - -1, -1, 40, -1, -1, 4569, -1, -1, 270, 47, - 4574, -1, -1, -1, -1, -1, -1, -1, -1, 281, - -1, 2625, 8, -1, -1, 11, -1, -1, -1, 15, - 16, 17, -1, 71, -1, -1, 4600, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 32, -1, -1, -1, - -1, -1, -1, -1, 40, 4619, 318, -1, -1, 321, - 322, 47, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 4328, -1, 4330, 4331, - -1, -1, -1, -1, -1, 71, -1, 349, -1, -1, - 8, -1, 4344, 11, -1, -1, -1, 15, 16, 17, - -1, -1, -1, -1, -1, 180, -1, 5269, -1, -1, - 185, -1, -1, -1, 32, -1, 5278, -1, -1, -1, - -1, -1, 40, -1, -1, -1, -1, -1, -1, 47, - -1, 206, 207, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 180, -1, -1, -1, 221, 185, -1, -1, - -1, 413, -1, 71, -1, -1, -1, -1, -1, -1, - -1, 4725, -1, -1, -1, 5327, -1, -1, 206, 207, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 254, - 5342, -1, -1, 221, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 268, 180, -1, 271, -1, -1, 185, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 254, -1, -1, -1, - 206, 207, -1, -1, -1, -1, -1, -1, -1, -1, - 268, -1, -1, 271, -1, 221, -1, -1, -1, -1, - -1, 8, -1, -1, 11, -1, -1, -1, 15, 16, - 17, -1, -1, -1, -1, 4819, -1, -1, -1, -1, - -1, -1, 180, -1, -1, 32, -1, 185, 254, -1, - -1, -1, -1, 40, -1, -1, -1, -1, -1, 354, - 47, -1, 268, -1, -1, 271, -1, 2891, 206, 207, - -1, 2895, -1, -1, -1, -1, -1, 2901, -1, -1, - -1, -1, -1, 221, 71, -1, -1, -1, -1, -1, - -1, -1, -1, 2917, 2918, -1, 354, -1, 2922, -1, - -1, -1, -1, 2927, 2928, 2929, -1, 2931, -1, -1, - -1, -1, -1, -1, -1, -1, 254, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 2952, -1, - 268, -1, -1, 271, -1, -1, -1, -1, 2962, 2963, - 2964, 2965, -1, -1, -1, -1, -1, -1, 354, -1, - -1, -1, -1, -1, -1, 450, -1, -1, 453, 454, - 455, -1, 457, 458, 459, 460, 461, 462, 463, -1, - 4642, -1, -1, 468, -1, 2999, -1, -1, 3002, 3003, - 3004, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 450, 180, -1, 453, 454, 455, 185, 457, - 458, 459, 460, 461, 462, 463, 4192, -1, -1, -1, - 468, -1, -1, -1, -1, -1, 354, -1, -1, 206, - 207, 4207, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 221, -1, -1, -1, -1, -1, - -1, -1, -1, 4715, 450, -1, -1, 453, 454, 455, - -1, 457, 458, 459, 460, 461, 462, 463, -1, -1, - -1, -1, 468, -1, -1, -1, -1, 254, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 3104, 268, -1, -1, 271, -1, -1, -1, 3112, -1, - -1, -1, -1, 4765, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 3130, 4293, -1, -1, - -1, -1, 450, -1, -1, 453, 454, 455, -1, 457, - 458, 459, 460, 461, 462, 463, -1, -1, -1, -1, - 468, -1, -1, 3157, 8, -1, -1, 11, -1, -1, - -1, 15, 16, 17, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 32, -1, - -1, -1, 8, -1, -1, 11, 40, 354, -1, 15, - 16, 17, -1, 47, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 3209, 32, -1, -1, -1, - 3214, -1, -1, -1, 40, -1, -1, 71, -1, -1, - -1, 47, -1, -1, -1, -1, 22, -1, -1, -1, - -1, -1, 28, -1, -1, -1, -1, -1, -1, -1, - 3244, -1, -1, -1, -1, 71, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 69, -1, -1, -1, 3281, -1, 3283, - -1, -1, -1, 450, -1, -1, 453, 454, 455, -1, - 457, 458, 459, 460, 461, 462, 463, 4463, 4464, 4465, - -1, 468, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 180, 123, -1, -1, - -1, 185, 188, -1, 130, -1, -1, 133, -1, -1, - -1, 197, 198, -1, -1, -1, -1, -1, -1, -1, - 206, -1, 206, 207, 180, -1, -1, -1, -1, 185, - -1, -1, 158, 219, -1, -1, -1, 221, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 206, 207, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 190, 221, -1, -1, -1, -1, - 254, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 268, -1, -1, 271, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 254, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 268, -1, -1, 271, -1, -1, -1, -1, - -1, -1, 4618, 249, -1, 251, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 261, -1, -1, -1, -1, - -1, -1, -1, -1, 270, -1, -1, -1, -1, 8, - -1, -1, 11, -1, -1, 281, 15, 16, 17, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 354, -1, -1, 32, -1, -1, -1, -1, -1, -1, - -1, 40, -1, -1, -1, -1, -1, -1, 47, -1, - -1, -1, 318, -1, -1, 321, 322, -1, 354, -1, - 8, -1, -1, 11, 5186, -1, -1, 15, 16, 17, - -1, -1, 71, 3547, -1, 3549, -1, -1, -1, -1, - -1, -1, 3556, 349, 32, -1, -1, -1, -1, -1, - -1, -1, 40, -1, -1, -1, -1, -1, 3572, 47, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 3588, -1, -1, -1, -1, -1, - -1, -1, -1, 71, -1, 4761, 450, 4763, -1, 453, - 454, 455, 3606, 457, 458, 459, 460, 461, 462, 463, - -1, -1, -1, 22, 468, -1, -1, 413, -1, 28, - 3624, -1, -1, -1, 450, -1, -1, 453, 454, 455, - 3634, 457, 458, 459, 460, 461, 462, 463, -1, -1, - -1, -1, 468, -1, -1, -1, -1, -1, -1, 3653, - -1, 180, -1, -1, -1, -1, 185, -1, -1, -1, - 69, -1, 3666, 3667, 3668, -1, -1, -1, -1, 3673, - 3674, 3675, 3676, -1, -1, 3679, 3680, 206, 207, -1, - -1, 3685, 3686, -1, 3688, 3689, 3690, 3691, 3692, 3693, - -1, 3695, 221, -1, -1, -1, -1, -1, -1, -1, - 3704, -1, 180, 3707, 3708, -1, -1, 185, -1, -1, - -1, -1, -1, -1, 123, 571, -1, -1, -1, -1, - -1, 130, 3726, -1, 133, 254, -1, 583, 206, 207, - -1, -1, -1, 589, -1, -1, -1, -1, -1, 268, - -1, -1, 271, 221, 3748, -1, 602, -1, -1, 158, - -1, -1, 4918, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 618, -1, -1, -1, -1, 623, -1, -1, - -1, -1, -1, 629, -1, -1, 254, 633, 634, -1, - -1, 190, -1, -1, -1, 641, -1, -1, -1, -1, - 268, -1, -1, 271, -1, -1, 8, 653, 654, 11, - -1, -1, -1, 15, 16, 17, -1, -1, 664, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 32, -1, -1, -1, -1, 354, -1, -1, 40, -1, - -1, -1, -1, -1, -1, 47, -1, 5003, -1, -1, - 249, 8, 251, 3847, 11, -1, -1, -1, 15, 16, - 17, -1, 261, -1, -1, -1, -1, -1, -1, 71, - -1, 270, -1, -1, -1, 32, -1, -1, -1, -1, - -1, -1, 281, 40, -1, 3879, 354, -1, -1, -1, - 47, -1, -1, -1, -1, -1, -1, 743, 744, -1, - -1, -1, -1, 749, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 71, -1, -1, -1, -1, 318, - -1, -1, 321, 322, -1, -1, -1, -1, -1, 775, - -1, 450, -1, -1, 453, 454, 455, -1, 457, 458, - 459, 460, 461, 462, 463, -1, 5102, -1, -1, 468, - 349, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 180, -1, - -1, -1, 450, 185, -1, 453, 454, 455, -1, 457, - 458, 459, 460, 461, 462, 463, -1, -1, -1, -1, - 468, -1, -1, -1, 206, 207, -1, -1, -1, -1, - -1, -1, -1, -1, 413, -1, -1, -1, -1, 221, - -1, -1, -1, 180, -1, -1, -1, -1, 185, 8, - -1, -1, 11, -1, -1, -1, 15, 16, 17, 5195, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 206, - 207, -1, 254, 32, -1, -1, -1, 36, -1, -1, - -1, 40, -1, -1, 221, -1, 268, -1, 47, 271, - -1, 5227, 5228, -1, 920, -1, -1, -1, -1, -1, - -1, 927, -1, -1, -1, 931, -1, -1, -1, -1, - -1, -1, 71, -1, -1, -1, -1, 254, -1, -1, - -1, -1, 4096, -1, 950, -1, 4100, 4101, 4102, 4103, - -1, 268, 4106, -1, 271, -1, -1, -1, -1, 965, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 120, -1, 4137, 4138, 4139, -1, 4141, -1, 4143, - 4144, -1, 354, -1, -1, -1, -1, -1, -1, 5315, - -1, 4155, 4156, -1, 1010, -1, 8, -1, -1, 11, - -1, -1, -1, 15, 16, 17, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 4182, -1, - 32, -1, -1, -1, -1, -1, -1, 354, 40, -1, - -1, 180, -1, 1049, -1, 47, 185, -1, -1, -1, - -1, 4205, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 206, 207, 71, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 1086, -1, 221, -1, -1, -1, -1, -1, 450, -1, - -1, 453, 454, 455, 1100, 457, 458, 459, 460, 461, - 462, 463, -1, 1109, -1, -1, 468, -1, -1, -1, - -1, 1117, -1, -1, -1, 254, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 4279, -1, -1, -1, 268, - -1, -1, 271, 450, -1, -1, 453, 454, 455, 1145, - 457, 458, 459, 460, 461, 462, 463, -1, 1154, 466, - 1156, -1, -1, -1, 4308, 157, -1, -1, -1, -1, - 162, -1, -1, -1, -1, 1171, -1, 22, 1174, -1, - -1, -1, -1, 28, -1, -1, -1, -1, 180, 4333, - 1186, -1, -1, 185, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 206, 207, -1, -1, -1, -1, - 1216, -1, -1, -1, 69, 354, -1, -1, -1, 221, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 1244, 1245, - 1246, -1, -1, 1249, -1, -1, -1, -1, -1, -1, - -1, -1, 254, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 1269, -1, -1, 268, -1, 123, 271, - -1, 410, -1, -1, -1, 130, -1, -1, 133, -1, - -1, -1, -1, -1, -1, -1, -1, 4441, -1, -1, - -1, 1297, -1, -1, -1, -1, -1, -1, -1, 1305, - 1306, -1, -1, 158, -1, -1, -1, -1, 1314, 1315, - -1, 450, -1, -1, 453, 454, 455, -1, 457, 458, - 459, 460, 461, 462, 463, 8, -1, -1, 11, -1, - -1, -1, 15, 16, 17, 190, 1342, -1, -1, -1, - 1346, 1347, -1, -1, -1, -1, -1, 4501, -1, 32, - -1, -1, 354, 8, -1, 1361, 11, 40, -1, 1365, - 15, 16, 17, -1, 47, 4519, 1372, -1, -1, -1, - 4524, 4525, -1, -1, -1, -1, -1, 32, -1, -1, - -1, -1, -1, -1, -1, 40, -1, -1, 71, -1, - -1, -1, 47, -1, 249, -1, 251, -1, -1, -1, + 0, 455, 456, 457, 458, 459, 460, 461, 462, 0, + 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, + 473, 474, 475, 476, 477, 0, 478, 479, 480, 481, + 482, 483, 484, 485, 486, 487, 488, 489, 0, 490, + 491, 0, 493, 494, 495, 496, 497, 498, 499, 500, + 501, 502, 503, 504, 505, 506, 507, 0, 508, 509, + 510, 511, 512, 0, 513, 514, 515, 516, 517, 0, + 519, 520, 521, 522, 0, 523, 524, 525, 526, 527, + 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, + 0, 538, 539, 0, 540, 0, 542, 543, 544, 545, + 546, 0, 547, 548, 549, 0, 0, 550, 551, 552, + 553, 554, 0, 555, 556, 557, 558, 559, 560, 561, + 562, 0, 0, 563, 564, 565, 566, 567, 0, 0, + 568, 569, 570, 571, 572, 573, 574, 0, 575, 0, + 577, 578, 579, 580, 0, 0, 581, 0, 0, 582, + 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, + 593, 594, 595, 596, 597, 598, 599, 600, 601, 609, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 229, 230, + 231, 232, 233, 234, 235, 236, 0, 237, 238, 239, + 0, 0, 0, 0, 0, 0, 0, 240, 241, 0, + 242, 243, 244, 0, 246, 247, 248, 249, 250, 0, + 252, 253, 0, 254, 255, 256, 257, 258, 259, 0, + 0, 260, 261, 262, 263, 264, 0, 265, 266, 267, + 268, 269, 0, 0, 0, 271, 272, 273, 274, 275, + 0, 277, 278, 279, 0, 280, 281, 282, 283, 284, + 285, 0, 0, 287, 288, 289, 0, 0, 0, 0, + 0, 0, 0, 291, 292, 293, 294, 295, 296, 297, + 298, 299, 0, 300, 0, 301, 302, 303, 304, 305, + 306, 0, 307, 308, 309, 310, 0, 0, 311, 312, + 313, 314, 315, 0, 316, 317, 318, 0, 319, 320, + 321, 0, 322, 323, 324, 325, 326, 327, 328, 329, + 330, 331, 0, 332, 0, 333, 334, 335, 336, 0, + 337, 0, 338, 0, 0, 0, 341, 342, 343, 344, + 0, 345, 346, 0, 347, 348, 349, 0, 350, 351, + 352, 353, 1887, 0, 356, 357, 358, 359, 0, 360, + 361, 362, 363, 364, 365, 366, 0, 367, 0, 369, + 370, 371, 372, 373, 374, 375, 0, 376, 0, 377, + 0, 0, 380, 0, 382, 383, 384, 385, 386, 0, + 0, 387, 388, 0, 390, 0, 0, 392, 393, 394, + 0, 0, 395, 396, 397, 398, 399, 400, 401, 402, + 403, 404, 405, 406, 407, 408, 409, 410, 411, 0, + 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, + 423, 0, 424, 425, 0, 427, 0, 428, 429, 430, + 431, 432, 433, 0, 434, 435, 0, 0, 436, 437, + 438, 0, 0, 439, 440, 441, 0, 443, 0, 445, + 446, 447, 448, 449, 450, 451, 452, 453, 454, 0, + 455, 456, 457, 458, 459, 460, 461, 462, 0, 463, + 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, + 474, 475, 476, 477, 0, 478, 479, 480, 481, 482, + 483, 484, 485, 486, 487, 488, 489, 0, 490, 491, + 0, 493, 494, 495, 496, 497, 498, 499, 500, 501, + 502, 503, 504, 505, 506, 507, 0, 508, 509, 510, + 511, 512, 0, 513, 514, 515, 516, 517, 0, 519, + 520, 521, 522, 0, 523, 524, 525, 526, 527, 528, + 529, 530, 531, 532, 533, 534, 535, 536, 537, 0, + 538, 539, 0, 540, 0, 542, 543, 544, 545, 546, + 0, 547, 548, 549, 0, 0, 550, 551, 552, 553, + 554, 0, 555, 556, 557, 558, 559, 560, 561, 562, + 0, 0, 563, 564, 565, 566, 567, 0, 0, 568, + 569, 570, 571, 572, 573, 574, 0, 575, 0, 577, + 578, 579, 580, 0, 0, 581, 0, 0, 582, 583, + 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, + 594, 595, 596, 597, 598, 599, 600, 601, 609, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 229, 230, 231, + 232, 233, 234, 235, 236, 0, 237, 238, 239, 0, + 0, 0, 0, 0, 0, 0, 240, 241, 0, 242, + 243, 244, 0, 246, 247, 248, 249, 250, 0, 252, + 253, 0, 254, 255, 256, 257, 258, 259, 0, 0, + 260, 261, 262, 263, 264, 0, 265, 266, 267, 268, + 269, 0, 0, 0, 271, 272, 273, 274, 275, 0, + 277, 278, 279, 0, 280, 281, 282, 283, 284, 285, + 0, 0, 287, 288, 289, 0, 0, 0, 0, 0, + 0, 0, 291, 292, 293, 294, 295, 296, 297, 298, + 299, 0, 300, 0, 301, 302, 303, 304, 305, 306, + 0, 307, 308, 309, 310, 0, 0, 311, 312, 313, + 314, 315, 0, 316, 317, 318, 0, 319, 320, 321, + 0, 322, 323, 324, 325, 326, 327, 328, 329, 330, + 331, 0, 332, 0, 333, 334, 335, 336, 0, 337, + 0, 338, 0, 0, 0, 341, 342, 343, 344, 0, + 345, 346, 0, 347, 348, 349, 0, 350, 351, 352, + 353, 1889, 0, 356, 357, 358, 359, 0, 360, 361, + 362, 363, 364, 365, 366, 0, 367, 0, 369, 370, + 371, 372, 373, 374, 375, 0, 376, 0, 377, 0, + 0, 380, 0, 382, 383, 384, 385, 386, 0, 0, + 387, 388, 0, 390, 0, 0, 392, 393, 394, 0, + 0, 395, 396, 397, 398, 399, 400, 401, 402, 403, + 404, 405, 406, 407, 408, 409, 410, 411, 0, 413, + 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, + 0, 424, 425, 0, 427, 0, 428, 429, 430, 431, + 432, 433, 0, 434, 435, 0, 0, 436, 437, 438, + 0, 0, 439, 440, 441, 0, 443, 0, 445, 446, + 447, 448, 449, 450, 451, 452, 453, 454, 0, 455, + 456, 457, 458, 459, 460, 461, 462, 0, 463, 464, + 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, + 475, 476, 477, 0, 478, 479, 480, 481, 482, 483, + 484, 485, 486, 487, 488, 489, 0, 490, 491, 0, + 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, + 503, 504, 505, 506, 507, 0, 508, 509, 510, 511, + 512, 0, 513, 514, 515, 516, 517, 0, 519, 520, + 521, 522, 0, 523, 524, 525, 526, 527, 528, 529, + 530, 531, 532, 533, 534, 535, 536, 537, 0, 538, + 539, 0, 540, 0, 542, 543, 544, 545, 546, 0, + 547, 548, 549, 0, 0, 550, 551, 552, 553, 554, + 0, 555, 556, 557, 558, 559, 560, 561, 562, 0, + 0, 563, 564, 565, 566, 567, 0, 0, 568, 569, + 570, 571, 572, 573, 574, 0, 575, 0, 577, 578, + 579, 580, 0, 0, 581, 0, 0, 582, 583, 584, + 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, + 595, 596, 597, 598, 599, 600, 601, 609, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 229, 230, 231, 232, + 233, 234, 235, 236, 0, 237, 238, 239, 0, 0, + 0, 0, 0, 0, 0, 240, 241, 0, 242, 243, + 244, 0, 246, 247, 248, 249, 250, 0, 252, 253, + 0, 254, 255, 256, 257, 258, 259, 0, 0, 260, + 261, 262, 263, 264, 0, 265, 266, 267, 268, 269, + 0, 0, 0, 271, 272, 273, 274, 275, 0, 277, + 278, 279, 0, 280, 281, 282, 283, 284, 285, 0, + 0, 287, 288, 289, 0, 0, 0, 0, 0, 0, + 0, 291, 292, 293, 294, 295, 296, 297, 298, 299, + 0, 300, 0, 301, 302, 303, 304, 305, 306, 0, + 307, 308, 309, 310, 0, 0, 311, 312, 313, 314, + 315, 0, 316, 317, 318, 0, 319, 320, 321, 0, + 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, + 0, 332, 0, 333, 334, 335, 336, 0, 337, 0, + 338, 0, 0, 0, 341, 342, 343, 344, 0, 345, + 346, 0, 347, 348, 349, 0, 350, 351, 352, 353, + 354, 0, 356, 357, 358, 359, 0, 360, 361, 362, + 363, 364, 365, 366, 0, 367, 0, 369, 370, 371, + 372, 373, 374, 375, 0, 376, 0, 377, 0, 0, + 380, 0, 382, 383, 384, 385, 386, 0, 0, 387, + 388, 0, 390, 0, 0, 392, 393, 394, 0, 0, + 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, + 405, 406, 407, 408, 409, 410, 411, 0, 413, 414, + 415, 416, 417, 418, 419, 420, 421, 422, 423, 0, + 424, 425, 0, 427, 0, 428, 429, 430, 431, 432, + 433, 0, 434, 435, 0, 0, 436, 437, 438, 0, + 0, 439, 440, 441, 0, 443, 0, 445, 446, 447, + 448, 449, 450, 451, 452, 453, 454, 0, 455, 456, + 457, 458, 459, 460, 461, 462, 0, 463, 464, 465, + 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, + 476, 477, 0, 478, 479, 480, 481, 482, 483, 484, + 485, 486, 487, 488, 489, 0, 490, 491, 0, 493, + 494, 495, 496, 497, 498, 499, 500, 1992, 502, 503, + 504, 505, 506, 507, 0, 508, 509, 510, 511, 512, + 0, 513, 514, 515, 516, 517, 0, 519, 520, 521, + 522, 0, 523, 524, 525, 526, 527, 528, 529, 530, + 531, 532, 533, 534, 535, 536, 537, 0, 538, 539, + 0, 540, 0, 542, 543, 544, 545, 546, 0, 547, + 548, 549, 0, 0, 550, 551, 552, 553, 554, 0, + 555, 556, 557, 558, 559, 560, 561, 562, 0, 0, + 563, 564, 565, 566, 567, 0, 0, 568, 569, 570, + 571, 572, 573, 574, 0, 575, 0, 577, 578, 579, + 580, 0, 0, 581, 0, 0, 582, 583, 584, 585, + 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, + 596, 597, 598, 599, 600, 601, 609, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 229, 230, 231, 232, 233, + 234, 235, 236, 0, 237, 238, 239, 0, 0, 0, + 0, 0, 2183, 0, 240, 241, 0, 242, 243, 244, + 0, 246, 247, 248, 249, 250, 0, 252, 253, 0, + 254, 255, 256, 257, 258, 259, 0, 0, 260, 261, + 262, 263, 264, 0, 265, 266, 267, 268, 269, 0, + 0, 0, 271, 272, 273, 274, 275, 0, 277, 278, + 279, 0, 280, 281, 282, 283, 284, 285, 0, 0, + 287, 288, 289, 0, 0, 0, 0, 0, 0, 0, + 291, 292, 293, 294, 295, 296, 297, 298, 299, 0, + 300, 0, 301, 302, 303, 304, 305, 306, 0, 307, + 308, 309, 310, 0, 0, 311, 312, 313, 314, 315, + 0, 316, 317, 318, 0, 319, 320, 321, 0, 322, + 323, 324, 325, 326, 327, 328, 329, 330, 331, 0, + 332, 0, 333, 334, 335, 336, 0, 337, 0, 338, + 0, 0, 0, 341, 342, 343, 344, 0, 345, 346, + 0, 347, 348, 349, 0, 350, 351, 352, 353, 354, + 0, 356, 357, 358, 359, 0, 360, 361, 362, 363, + 364, 365, 366, 0, 367, 0, 369, 370, 371, 372, + 373, 374, 375, 0, 376, 0, 377, 0, 0, 380, + 0, 382, 383, 384, 385, 386, 0, 0, 387, 388, + 0, 390, 0, 0, 392, 393, 394, 0, 0, 395, + 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, + 406, 407, 408, 409, 410, 411, 0, 413, 414, 415, + 416, 417, 418, 419, 420, 421, 422, 423, 0, 424, + 425, 0, 427, 0, 428, 429, 430, 431, 432, 433, + 0, 434, 435, 0, 0, 436, 437, 438, 0, 0, + 439, 440, 441, 0, 443, 0, 445, 446, 447, 448, + 449, 450, 451, 452, 453, 454, 0, 455, 456, 457, + 458, 459, 460, 461, 462, 0, 463, 464, 465, 466, + 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, + 477, 0, 478, 479, 480, 481, 482, 483, 484, 485, + 486, 487, 488, 489, 0, 490, 491, 0, 493, 494, + 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, + 505, 506, 507, 0, 508, 509, 510, 511, 512, 0, + 0, 514, 515, 516, 517, 0, 519, 520, 521, 522, + 0, 523, 524, 525, 526, 527, 528, 529, 530, 531, + 532, 533, 534, 535, 536, 537, 0, 538, 539, 0, + 540, 0, 542, 543, 544, 545, 546, 0, 547, 548, + 549, 0, 0, 550, 551, 552, 553, 554, 0, 555, + 556, 557, 558, 559, 560, 561, 562, 0, 0, 563, + 564, 565, 566, 567, 0, 0, 568, 569, 570, 571, + 572, 573, 574, 0, 575, 0, 577, 578, 579, 580, + 0, 0, 581, 0, 0, 582, 583, 584, 585, 586, + 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, + 597, 598, 599, 600, 601, 609, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 229, 230, 231, 232, 233, 234, + 235, 236, 0, 237, 238, 239, 0, 0, 0, 0, + 0, 0, 0, 240, 241, 0, 242, 243, 244, 0, + 246, 247, 248, 249, 250, 0, 252, 253, 0, 254, + 255, 256, 257, 258, 259, 0, 0, 798, 261, 262, + 263, 264, 0, 265, 266, 267, 268, 269, 0, 0, + 0, 271, 272, 273, 274, 275, 0, 277, 278, 279, + 0, 280, 281, 282, 283, 284, 285, 0, 0, 287, + 288, 289, 0, 0, 0, 0, 0, 0, 0, 291, + 292, 293, 294, 295, 296, 297, 298, 299, 0, 300, + 0, 301, 302, 303, 304, 305, 306, 0, 307, 308, + 309, 310, 0, 0, 311, 312, 313, 314, 315, 0, + 316, 317, 318, 0, 319, 320, 321, 0, 322, 323, + 324, 325, 326, 327, 328, 329, 330, 331, 0, 332, + 0, 333, 334, 335, 336, 0, 337, 0, 338, 0, + 0, 0, 341, 342, 343, 344, 0, 345, 346, 0, + 347, 348, 349, 0, 350, 351, 352, 353, 354, 0, + 356, 357, 358, 359, 0, 360, 361, 362, 363, 364, + 365, 366, 0, 367, 0, 369, 370, 371, 372, 373, + 374, 375, 0, 376, 0, 377, 0, 0, 380, 0, + 382, 383, 384, 385, 386, 0, 0, 387, 388, 0, + 390, 0, 0, 392, 393, 394, 0, 0, 395, 396, + 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, + 407, 408, 409, 801, 411, 0, 413, 414, 415, 416, + 417, 418, 419, 420, 421, 422, 423, 0, 424, 425, + 0, 427, 0, 428, 429, 430, 431, 432, 433, 0, + 434, 435, 0, 0, 436, 437, 438, 0, 0, 439, + 440, 441, 0, 443, 0, 445, 446, 447, 448, 449, + 450, 451, 452, 453, 454, 0, 455, 456, 457, 458, + 459, 460, 461, 462, 0, 463, 464, 465, 466, 467, + 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, + 0, 478, 479, 480, 481, 482, 483, 484, 485, 486, + 487, 488, 489, 0, 490, 491, 0, 802, 494, 495, + 496, 497, 498, 499, 500, 501, 803, 503, 504, 505, + 506, 507, 0, 508, 509, 510, 511, 1333, 0, 513, + 514, 515, 516, 517, 0, 519, 520, 521, 522, 0, + 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, + 533, 534, 535, 536, 537, 0, 538, 539, 0, 540, + 0, 2218, 543, 544, 545, 546, 0, 547, 805, 549, + 0, 0, 806, 551, 552, 553, 554, 0, 555, 556, + 557, 558, 559, 560, 561, 562, 0, 0, 563, 564, + 565, 566, 567, 0, 0, 568, 569, 570, 571, 572, + 573, 574, 0, 575, 0, 577, 578, 579, 580, 0, + 0, 581, 0, 0, 582, 583, 584, 585, 586, 807, + 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, + 598, 599, 600, 601, 609, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 229, 230, 231, 232, 233, 234, 235, + 236, 0, 237, 238, 239, 0, 0, 0, 0, 0, + 0, 0, 240, 241, 0, 242, 243, 244, 0, 246, + 247, 248, 249, 250, 0, 252, 253, 0, 254, 255, + 256, 257, 258, 259, 0, 0, 798, 261, 262, 263, + 264, 0, 265, 266, 267, 268, 269, 0, 0, 0, + 271, 272, 273, 274, 275, 0, 277, 278, 279, 0, + 280, 281, 282, 283, 284, 285, 0, 0, 287, 288, + 289, 0, 0, 0, 0, 0, 0, 0, 291, 292, + 293, 294, 295, 296, 297, 298, 299, 0, 300, 0, + 301, 302, 303, 304, 305, 306, 0, 307, 308, 309, + 310, 0, 0, 311, 312, 313, 314, 315, 0, 316, + 317, 318, 0, 319, 320, 321, 0, 322, 323, 324, + 325, 326, 327, 328, 329, 330, 331, 0, 332, 0, + 333, 334, 335, 336, 0, 337, 0, 338, 0, 0, + 0, 341, 342, 343, 344, 0, 345, 346, 0, 347, + 348, 349, 0, 350, 351, 352, 353, 354, 0, 356, + 357, 358, 359, 0, 360, 361, 362, 363, 364, 365, + 366, 0, 367, 0, 369, 370, 371, 372, 373, 374, + 375, 0, 376, 0, 377, 0, 0, 380, 0, 382, + 383, 384, 385, 386, 0, 0, 387, 388, 0, 390, + 0, 0, 392, 393, 394, 0, 0, 395, 396, 397, + 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, + 408, 409, 801, 411, 0, 413, 414, 415, 416, 417, + 418, 419, 420, 421, 422, 423, 0, 424, 425, 0, + 427, 0, 428, 429, 430, 431, 432, 433, 0, 434, + 435, 0, 0, 436, 437, 438, 0, 0, 439, 440, + 441, 0, 443, 0, 445, 446, 447, 448, 449, 450, + 451, 452, 453, 454, 0, 455, 456, 457, 458, 459, + 460, 461, 462, 0, 463, 464, 465, 466, 467, 468, + 469, 470, 471, 472, 473, 474, 475, 476, 477, 0, + 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, + 488, 489, 0, 490, 491, 0, 802, 494, 495, 496, + 497, 498, 499, 500, 501, 2294, 503, 504, 505, 506, + 507, 0, 508, 509, 510, 511, 2295, 0, 513, 514, + 515, 516, 517, 0, 519, 520, 521, 522, 0, 523, + 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, + 534, 535, 536, 537, 0, 538, 539, 0, 540, 0, + 542, 543, 544, 545, 546, 0, 547, 805, 549, 0, + 0, 2296, 551, 552, 553, 554, 0, 555, 556, 557, + 558, 559, 560, 561, 562, 0, 0, 563, 564, 565, + 566, 567, 0, 0, 568, 569, 570, 571, 572, 573, + 574, 0, 575, 0, 577, 578, 579, 580, 0, 0, + 581, 0, 0, 582, 583, 584, 585, 586, 807, 588, + 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, + 599, 600, 601, 609, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 229, 230, 231, 232, 233, 234, 235, 236, + 0, 237, 238, 239, 0, 0, 0, 0, 0, 0, + 0, 240, 241, 0, 242, 243, 244, 0, 246, 247, + 248, 249, 250, 0, 252, 253, 0, 254, 255, 256, + 257, 258, 259, 0, 0, 798, 261, 262, 263, 264, + 0, 265, 266, 267, 268, 269, 0, 0, 0, 271, + 272, 273, 274, 275, 0, 277, 278, 279, 0, 280, + 281, 282, 283, 284, 285, 0, 0, 287, 288, 289, + 0, 0, 0, 0, 0, 0, 0, 291, 292, 293, + 294, 295, 296, 297, 298, 299, 0, 300, 0, 301, + 302, 303, 304, 305, 306, 0, 307, 308, 309, 310, + 0, 0, 311, 312, 313, 314, 315, 0, 316, 317, + 318, 0, 319, 320, 321, 0, 322, 323, 324, 325, + 326, 327, 328, 329, 330, 331, 0, 332, 0, 333, + 334, 335, 336, 0, 337, 0, 338, 0, 0, 0, + 341, 342, 343, 344, 0, 345, 346, 0, 347, 348, + 349, 0, 350, 351, 352, 353, 354, 0, 356, 357, + 358, 359, 0, 360, 361, 362, 363, 364, 365, 366, + 0, 367, 0, 369, 370, 371, 372, 373, 374, 375, + 0, 376, 0, 377, 0, 0, 380, 0, 382, 383, + 384, 385, 386, 0, 0, 387, 388, 0, 390, 0, + 0, 392, 393, 394, 0, 0, 395, 396, 397, 398, + 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, + 409, 801, 411, 0, 413, 414, 415, 416, 417, 418, + 419, 420, 421, 422, 423, 0, 424, 425, 0, 427, + 0, 428, 429, 430, 431, 432, 433, 0, 434, 435, + 0, 0, 436, 437, 438, 0, 0, 439, 440, 441, + 0, 443, 0, 445, 446, 447, 448, 449, 450, 451, + 452, 453, 454, 0, 455, 456, 457, 458, 459, 460, + 461, 462, 0, 463, 464, 465, 466, 467, 468, 469, + 470, 471, 472, 473, 474, 475, 476, 477, 0, 478, + 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, + 489, 0, 490, 491, 0, 802, 494, 495, 496, 497, + 498, 499, 500, 501, 2373, 503, 504, 505, 506, 507, + 0, 508, 509, 510, 511, 2295, 0, 513, 514, 515, + 516, 517, 0, 519, 520, 521, 522, 0, 523, 524, + 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, + 535, 536, 537, 0, 538, 539, 0, 540, 0, 542, + 543, 544, 545, 546, 0, 547, 805, 549, 0, 0, + 2296, 551, 552, 553, 554, 0, 555, 556, 557, 558, + 559, 560, 561, 562, 0, 0, 563, 564, 565, 566, + 567, 0, 0, 568, 569, 570, 571, 572, 573, 574, + 0, 575, 0, 577, 578, 579, 580, 0, 0, 581, + 0, 0, 582, 583, 584, 585, 586, 807, 588, 589, + 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, + 600, 601, 609, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 229, 230, 231, 232, 233, 234, 235, 236, 0, + 237, 238, 239, 0, 0, 0, 0, 0, 0, 0, + 240, 241, 0, 242, 243, 244, 0, 246, 247, 248, + 249, 250, 0, 252, 253, 0, 254, 255, 256, 257, + 258, 259, 0, 0, 798, 261, 262, 263, 264, 0, + 265, 266, 267, 268, 269, 0, 0, 0, 271, 272, + 273, 274, 275, 0, 277, 278, 279, 0, 280, 281, + 282, 283, 284, 285, 0, 0, 287, 288, 289, 0, + 0, 0, 0, 0, 0, 0, 291, 292, 293, 294, + 295, 296, 297, 298, 299, 0, 300, 0, 301, 302, + 303, 304, 305, 306, 0, 307, 308, 309, 310, 0, + 0, 311, 312, 313, 314, 315, 0, 316, 317, 318, + 0, 319, 320, 321, 0, 322, 323, 324, 325, 326, + 327, 328, 329, 330, 331, 0, 332, 0, 333, 334, + 335, 336, 0, 337, 0, 338, 0, 0, 0, 341, + 342, 343, 344, 0, 345, 346, 0, 347, 348, 349, + 0, 350, 351, 352, 353, 354, 0, 356, 357, 358, + 359, 0, 360, 361, 362, 363, 364, 365, 366, 0, + 367, 0, 369, 370, 371, 372, 373, 374, 375, 0, + 376, 0, 377, 0, 0, 380, 0, 382, 383, 384, + 385, 386, 0, 0, 387, 388, 0, 390, 0, 0, + 392, 393, 394, 0, 0, 395, 396, 397, 398, 399, + 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, + 801, 411, 0, 413, 414, 415, 416, 417, 418, 419, + 420, 421, 422, 423, 0, 424, 425, 0, 427, 0, + 428, 429, 430, 431, 432, 433, 0, 434, 435, 0, + 0, 436, 437, 438, 0, 0, 439, 440, 441, 0, + 443, 0, 445, 446, 447, 448, 449, 450, 451, 452, + 453, 454, 0, 455, 456, 457, 458, 459, 460, 461, + 462, 0, 463, 464, 465, 466, 467, 468, 469, 470, + 471, 472, 473, 474, 475, 476, 477, 0, 478, 479, + 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, + 0, 490, 491, 0, 802, 494, 495, 496, 497, 498, + 499, 500, 501, 2390, 503, 504, 505, 506, 507, 0, + 508, 509, 510, 511, 2295, 0, 513, 514, 515, 516, + 517, 0, 519, 520, 521, 522, 0, 523, 524, 525, + 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, + 536, 537, 0, 538, 539, 0, 540, 0, 542, 543, + 544, 545, 546, 0, 547, 805, 549, 0, 0, 2296, + 551, 552, 553, 554, 0, 555, 556, 557, 558, 559, + 560, 561, 562, 0, 0, 563, 564, 565, 566, 567, + 0, 0, 568, 569, 570, 571, 572, 573, 574, 0, + 575, 0, 577, 578, 579, 580, 0, 0, 581, 0, + 0, 582, 583, 584, 585, 586, 807, 588, 589, 590, + 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, + 601, 609, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 229, 230, 231, 232, 233, 234, 235, 236, 0, 237, + 238, 239, 0, 0, 0, 0, 0, 0, 0, 240, + 241, 0, 242, 243, 244, 0, 246, 247, 248, 249, + 250, 0, 252, 253, 0, 254, 255, 256, 257, 258, + 259, 0, 0, 260, 261, 262, 263, 264, 0, 265, + 266, 267, 268, 269, 0, 0, 0, 271, 272, 273, + 274, 275, 0, 277, 278, 279, 0, 280, 281, 282, + 283, 284, 285, 0, 0, 287, 288, 289, 0, 0, + 0, 0, 0, 0, 0, 291, 292, 293, 294, 295, + 296, 297, 298, 299, 0, 300, 0, 301, 302, 303, + 304, 305, 306, 0, 307, 308, 309, 310, 0, 0, + 311, 312, 313, 314, 315, 0, 316, 317, 318, 0, + 319, 320, 321, 0, 322, 323, 324, 325, 326, 327, + 328, 329, 330, 331, 0, 332, 0, 333, 334, 335, + 336, 0, 337, 0, 338, 0, 0, 0, 341, 342, + 343, 344, 0, 345, 346, 0, 347, 348, 349, 0, + 350, 351, 352, 353, 2594, 0, 356, 357, 358, 359, + 0, 360, 361, 362, 363, 364, 365, 366, 0, 367, + 0, 369, 370, 371, 372, 373, 374, 375, 0, 376, + 0, 377, 0, 0, 380, 0, 382, 383, 384, 385, + 386, 0, 0, 387, 388, 0, 390, 0, 0, 392, + 393, 394, 0, 0, 395, 396, 397, 398, 399, 400, + 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, + 411, 0, 413, 414, 415, 416, 417, 418, 419, 420, + 421, 422, 423, 0, 424, 425, 0, 427, 0, 428, + 429, 430, 431, 432, 433, 0, 434, 435, 0, 0, + 436, 437, 438, 0, 0, 439, 440, 441, 0, 443, + 0, 445, 446, 447, 448, 449, 450, 451, 452, 453, + 454, 0, 455, 456, 457, 458, 459, 460, 461, 462, + 0, 463, 464, 465, 466, 467, 468, 469, 470, 471, + 472, 473, 474, 475, 476, 477, 0, 478, 479, 480, + 481, 482, 483, 484, 485, 486, 487, 488, 489, 0, + 490, 491, 0, 493, 494, 495, 496, 497, 498, 499, + 500, 501, 502, 503, 504, 505, 506, 507, 0, 508, + 509, 510, 511, 512, 0, 513, 514, 515, 516, 517, + 0, 519, 520, 521, 522, 0, 523, 524, 525, 526, + 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, + 537, 0, 538, 539, 0, 540, 0, 542, 543, 544, + 545, 546, 0, 547, 548, 549, 0, 0, 550, 551, + 552, 553, 554, 0, 555, 556, 557, 558, 559, 560, + 561, 562, 0, 0, 563, 564, 565, 566, 567, 0, + 0, 568, 569, 570, 571, 572, 573, 574, 0, 575, + 0, 577, 578, 579, 580, 0, 0, 581, 0, 0, + 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, + 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, + 609, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 229, + 230, 231, 232, 233, 234, 235, 236, 0, 237, 238, + 239, 0, 0, 0, 0, 0, 0, 0, 240, 241, + 0, 242, 243, 244, 0, 246, 247, 248, 249, 250, + 0, 252, 253, 0, 254, 255, 256, 257, 258, 259, + 0, 0, 260, 261, 262, 263, 264, 0, 265, 266, + 267, 268, 269, 0, 0, 0, 271, 272, 273, 274, + 275, 0, 277, 278, 279, 0, 280, 281, 282, 283, + 284, 285, 0, 0, 287, 288, 289, 0, 0, 0, + 0, 0, 0, 0, 291, 292, 293, 294, 295, 296, + 297, 298, 299, 0, 300, 0, 301, 302, 303, 304, + 305, 306, 0, 307, 308, 309, 310, 0, 0, 311, + 312, 313, 314, 315, 0, 316, 317, 318, 0, 319, + 320, 321, 0, 322, 323, 324, 325, 326, 327, 328, + 329, 330, 331, 0, 332, 0, 333, 334, 335, 336, + 0, 337, 0, 338, 0, 0, 0, 341, 342, 343, + 344, 0, 345, 346, 0, 347, 348, 349, 0, 350, + 351, 352, 353, 2598, 0, 356, 357, 358, 359, 0, + 360, 361, 362, 363, 364, 365, 366, 0, 367, 0, + 369, 370, 371, 372, 373, 374, 375, 0, 376, 0, + 377, 0, 0, 380, 0, 382, 383, 384, 385, 386, + 0, 0, 387, 388, 0, 390, 0, 0, 392, 393, + 394, 0, 0, 395, 396, 397, 398, 399, 400, 401, + 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, + 0, 413, 414, 415, 416, 417, 418, 419, 420, 421, + 422, 423, 0, 424, 425, 0, 427, 0, 428, 429, + 430, 431, 432, 433, 0, 434, 435, 0, 0, 436, + 437, 438, 0, 0, 439, 440, 441, 0, 443, 0, + 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, + 0, 455, 456, 457, 458, 459, 460, 461, 462, 0, + 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, + 473, 474, 475, 476, 477, 0, 478, 479, 480, 481, + 482, 483, 484, 485, 486, 487, 488, 489, 0, 490, + 491, 0, 493, 494, 495, 496, 497, 498, 499, 500, + 501, 502, 503, 504, 505, 506, 507, 0, 508, 509, + 510, 511, 512, 0, 513, 514, 515, 516, 517, 0, + 519, 520, 521, 522, 0, 523, 524, 525, 526, 527, + 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, + 0, 538, 539, 0, 540, 0, 542, 543, 544, 545, + 546, 0, 547, 548, 549, 0, 0, 550, 551, 552, + 553, 554, 0, 555, 556, 557, 558, 559, 560, 561, + 562, 0, 0, 563, 564, 565, 566, 567, 0, 0, + 568, 569, 570, 571, 572, 573, 574, 0, 575, 0, + 577, 578, 579, 580, 0, 0, 581, 0, 0, 582, + 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, + 593, 594, 595, 596, 597, 598, 599, 600, 601, 609, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 229, 230, + 231, 232, 233, 234, 235, 236, 0, 237, 238, 239, + 0, 0, 0, 0, 0, 0, 0, 240, 241, 0, + 242, 243, 244, 0, 246, 247, 248, 249, 250, 0, + 252, 253, 0, 254, 255, 256, 257, 258, 259, 0, + 0, 260, 261, 262, 263, 264, 0, 265, 266, 267, + 268, 269, 0, 0, 0, 271, 272, 273, 274, 275, + 0, 277, 278, 279, 0, 280, 281, 282, 283, 284, + 285, 0, 0, 287, 288, 289, 0, 0, 0, 0, + 0, 0, 0, 291, 292, 293, 294, 295, 296, 297, + 298, 299, 0, 300, 0, 301, 302, 303, 304, 305, + 306, 0, 307, 308, 309, 310, 0, 0, 311, 312, + 313, 314, 315, 0, 316, 317, 318, 0, 319, 320, + 321, 0, 322, 323, 324, 325, 326, 327, 328, 329, + 330, 331, 0, 332, 0, 333, 334, 335, 336, 0, + 337, 0, 338, 0, 0, 0, 341, 342, 343, 344, + 0, 345, 346, 0, 347, 348, 349, 0, 350, 351, + 352, 353, 2674, 0, 356, 357, 358, 359, 0, 360, + 361, 362, 363, 364, 365, 366, 0, 367, 0, 369, + 370, 371, 372, 373, 374, 375, 0, 376, 0, 377, + 0, 0, 380, 0, 382, 383, 384, 385, 386, 0, + 0, 387, 388, 0, 390, 0, 0, 392, 393, 394, + 0, 0, 395, 396, 397, 398, 399, 400, 401, 402, + 403, 404, 405, 406, 407, 408, 409, 410, 411, 0, + 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, + 423, 0, 424, 425, 0, 427, 0, 428, 429, 430, + 431, 432, 433, 0, 434, 435, 0, 0, 436, 437, + 438, 0, 0, 439, 440, 441, 0, 443, 0, 445, + 446, 447, 448, 449, 450, 451, 452, 453, 454, 0, + 455, 456, 457, 458, 459, 460, 461, 462, 0, 463, + 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, + 474, 475, 476, 477, 0, 478, 479, 480, 481, 482, + 483, 484, 485, 486, 487, 488, 489, 0, 490, 491, + 0, 493, 494, 495, 496, 497, 498, 499, 500, 501, + 502, 503, 504, 505, 506, 507, 0, 508, 509, 510, + 511, 512, 0, 513, 514, 515, 516, 517, 0, 519, + 520, 521, 522, 0, 523, 524, 525, 526, 527, 528, + 529, 530, 531, 532, 533, 534, 535, 536, 537, 0, + 538, 539, 0, 540, 0, 542, 543, 544, 545, 546, + 0, 547, 548, 549, 0, 0, 550, 551, 552, 553, + 554, 0, 555, 556, 557, 558, 559, 560, 561, 562, + 0, 0, 563, 564, 565, 566, 567, 0, 0, 568, + 569, 570, 571, 572, 573, 574, 0, 575, 0, 577, + 578, 579, 580, 0, 0, 581, 0, 0, 582, 583, + 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, + 594, 595, 596, 597, 598, 599, 600, 601, 609, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 229, 230, 231, + 232, 233, 234, 235, 236, 0, 237, 238, 239, 0, + 0, 0, 0, 0, 0, 0, 240, 241, 0, 242, + 243, 244, 0, 246, 247, 248, 249, 250, 0, 252, + 253, 0, 254, 255, 256, 257, 258, 259, 0, 0, + 260, 261, 262, 263, 264, 0, 265, 266, 267, 268, + 269, 0, 0, 0, 271, 272, 273, 274, 275, 0, + 277, 278, 279, 0, 280, 281, 282, 283, 284, 285, + 0, 0, 287, 288, 289, 0, 0, 0, 0, 0, + 0, 0, 291, 292, 293, 294, 295, 296, 297, 298, + 299, 0, 300, 0, 301, 302, 303, 304, 305, 306, + 0, 307, 308, 309, 310, 0, 0, 311, 312, 313, + 314, 315, 0, 316, 317, 318, 0, 319, 320, 321, + 0, 322, 323, 324, 325, 326, 327, 328, 329, 330, + 331, 0, 332, 0, 333, 334, 335, 336, 0, 337, + 0, 338, 0, 0, 0, 341, 342, 343, 344, 0, + 345, 346, 0, 347, 348, 349, 0, 350, 351, 352, + 353, 3012, 0, 356, 357, 358, 359, 0, 360, 361, + 362, 363, 364, 365, 366, 0, 367, 0, 369, 370, + 371, 372, 373, 374, 375, 0, 376, 0, 377, 0, + 0, 380, 0, 382, 383, 384, 385, 386, 0, 0, + 387, 388, 0, 390, 0, 0, 392, 393, 394, 0, + 0, 395, 396, 397, 398, 399, 400, 401, 402, 403, + 404, 405, 406, 407, 408, 409, 410, 411, 0, 413, + 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, + 0, 424, 425, 0, 427, 0, 428, 429, 430, 431, + 432, 433, 0, 434, 435, 0, 0, 436, 437, 438, + 0, 0, 439, 440, 441, 0, 443, 0, 445, 446, + 447, 448, 449, 450, 451, 452, 453, 454, 0, 455, + 456, 457, 458, 459, 460, 461, 462, 0, 463, 464, + 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, + 475, 476, 477, 0, 478, 479, 480, 481, 482, 483, + 484, 485, 486, 487, 488, 489, 0, 490, 491, 0, + 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, + 503, 504, 505, 506, 507, 0, 508, 509, 510, 511, + 512, 0, 513, 514, 515, 516, 517, 0, 519, 520, + 521, 522, 0, 523, 524, 525, 526, 527, 528, 529, + 530, 531, 532, 533, 534, 535, 536, 537, 0, 538, + 539, 0, 540, 0, 542, 543, 544, 545, 546, 0, + 547, 548, 549, 0, 0, 550, 551, 552, 553, 554, + 0, 555, 556, 557, 558, 559, 560, 561, 562, 0, + 0, 563, 564, 565, 566, 567, 0, 0, 568, 569, + 570, 571, 572, 573, 574, 0, 575, 0, 577, 578, + 579, 580, 0, 0, 581, 0, 0, 582, 583, 584, + 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, + 595, 596, 597, 598, 599, 600, 601, 609, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 229, 230, 231, 232, + 233, 234, 235, 236, 0, 237, 238, 239, 0, 0, + 0, 0, 0, 0, 0, 240, 241, 0, 242, 243, + 244, 0, 246, 247, 248, 249, 250, 0, 252, 253, + 0, 254, 255, 256, 257, 258, 259, 0, 0, 798, + 261, 262, 263, 264, 0, 265, 266, 267, 268, 269, + 0, 0, 0, 271, 272, 273, 274, 275, 0, 277, + 278, 279, 0, 280, 281, 282, 283, 284, 285, 0, + 0, 287, 288, 289, 0, 0, 0, 0, 0, 0, + 0, 291, 292, 293, 294, 295, 296, 297, 298, 299, + 0, 300, 0, 301, 302, 303, 304, 305, 306, 0, + 307, 308, 309, 310, 0, 0, 311, 312, 313, 314, + 315, 0, 316, 317, 318, 0, 319, 320, 321, 0, + 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, + 0, 332, 0, 333, 334, 335, 336, 0, 337, 0, + 338, 0, 0, 0, 341, 342, 343, 344, 0, 345, + 346, 0, 347, 348, 349, 0, 350, 351, 352, 353, + 354, 0, 356, 357, 358, 359, 0, 360, 361, 362, + 363, 364, 365, 366, 0, 367, 0, 369, 370, 371, + 372, 373, 374, 375, 0, 376, 0, 377, 0, 0, + 380, 0, 382, 383, 384, 385, 386, 0, 0, 387, + 388, 0, 390, 0, 0, 392, 393, 394, 0, 0, + 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, + 405, 406, 407, 408, 409, 801, 411, 0, 413, 414, + 415, 416, 417, 418, 419, 420, 421, 422, 423, 0, + 424, 425, 0, 427, 0, 428, 429, 430, 431, 432, + 433, 0, 434, 435, 0, 0, 436, 437, 438, 0, + 0, 439, 440, 441, 0, 443, 0, 445, 446, 447, + 448, 449, 450, 451, 452, 453, 454, 0, 455, 456, + 457, 458, 459, 460, 461, 462, 0, 463, 464, 465, + 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, + 476, 477, 0, 478, 479, 480, 481, 482, 483, 484, + 485, 486, 487, 488, 489, 0, 490, 491, 0, 802, + 494, 495, 496, 497, 498, 499, 500, 501, 803, 503, + 504, 505, 506, 507, 0, 508, 509, 510, 511, 2295, + 0, 513, 514, 515, 516, 517, 0, 519, 520, 521, + 522, 0, 523, 524, 525, 526, 527, 528, 529, 530, + 531, 532, 533, 534, 535, 536, 537, 0, 538, 539, + 0, 540, 0, 542, 543, 544, 545, 546, 0, 547, + 805, 549, 0, 0, 2296, 551, 552, 553, 554, 0, + 555, 556, 557, 558, 559, 560, 561, 562, 0, 0, + 563, 564, 565, 566, 567, 0, 0, 568, 569, 570, + 571, 572, 573, 574, 0, 575, 0, 577, 578, 579, + 580, 0, 0, 581, 0, 0, 582, 583, 584, 585, + 586, 807, 588, 589, 590, 591, 592, 593, 594, 595, + 596, 597, 598, 599, 600, 601, 609, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 229, 230, 231, 232, 233, + 234, 235, 236, 0, 237, 238, 239, 0, 0, 0, + 0, 0, 0, 0, 240, 241, 0, 242, 243, 244, + 0, 246, 247, 248, 249, 250, 0, 252, 253, 0, + 254, 255, 256, 257, 258, 259, 0, 0, 260, 261, + 262, 263, 264, 0, 265, 266, 267, 268, 269, 0, + 0, 0, 271, 272, 273, 274, 275, 0, 277, 278, + 279, 0, 280, 281, 282, 283, 284, 285, 0, 0, + 287, 288, 289, 0, 0, 0, 0, 0, 0, 0, + 291, 292, 293, 294, 295, 296, 297, 298, 299, 0, + 300, 0, 301, 302, 303, 304, 305, 306, 0, 307, + 308, 309, 310, 0, 0, 311, 312, 313, 314, 315, + 0, 316, 317, 318, 0, 319, 320, 321, 0, 322, + 323, 324, 325, 326, 327, 328, 329, 330, 331, 0, + 332, 0, 333, 334, 335, 336, 0, 337, 0, 338, + 0, 0, 0, 341, 342, 343, 344, 0, 345, 346, + 0, 347, 348, 349, 0, 350, 351, 352, 353, 3081, + 0, 356, 357, 358, 359, 0, 360, 361, 362, 363, + 364, 365, 366, 0, 367, 0, 369, 370, 371, 372, + 373, 374, 375, 0, 376, 0, 377, 0, 0, 380, + 0, 382, 383, 384, 385, 386, 0, 0, 387, 388, + 0, 390, 0, 0, 392, 393, 394, 0, 0, 395, + 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, + 406, 407, 408, 409, 410, 411, 0, 413, 414, 415, + 416, 417, 418, 419, 420, 421, 422, 423, 0, 424, + 425, 0, 427, 0, 428, 429, 430, 431, 432, 433, + 0, 434, 435, 0, 0, 436, 437, 438, 0, 0, + 439, 440, 441, 0, 443, 0, 445, 446, 447, 448, + 449, 450, 451, 452, 453, 454, 0, 455, 456, 457, + 458, 459, 460, 461, 462, 0, 463, 464, 465, 466, + 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, + 477, 0, 478, 479, 480, 481, 482, 483, 484, 485, + 486, 487, 488, 489, 0, 490, 491, 0, 493, 494, + 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, + 505, 506, 507, 0, 508, 509, 510, 511, 512, 0, + 513, 514, 515, 516, 517, 0, 519, 520, 521, 522, + 0, 523, 524, 525, 526, 527, 528, 529, 530, 531, + 532, 533, 534, 535, 536, 537, 0, 538, 539, 0, + 540, 0, 542, 543, 544, 545, 546, 0, 547, 548, + 549, 0, 0, 550, 551, 552, 553, 554, 0, 555, + 556, 557, 558, 559, 560, 561, 562, 0, 0, 563, + 564, 565, 566, 567, 0, 0, 568, 569, 570, 571, + 572, 573, 574, 0, 575, 0, 577, 578, 579, 580, + 0, 0, 581, 0, 0, 582, 583, 584, 585, 586, + 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, + 597, 598, 599, 600, 601, 609, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 229, 230, 231, 232, 233, 234, + 235, 236, 0, 237, 238, 239, 0, 0, 0, 0, + 0, 0, 0, 240, 241, 0, 242, 243, 244, 0, + 246, 247, 248, 249, 250, 0, 252, 253, 0, 254, + 255, 256, 257, 258, 259, 0, 0, 260, 261, 262, + 263, 264, 0, 265, 266, 267, 268, 269, 0, 0, + 0, 271, 272, 273, 274, 275, 0, 277, 278, 279, + 0, 280, 281, 282, 283, 284, 285, 0, 0, 287, + 288, 289, 0, 0, 0, 0, 0, 0, 0, 291, + 292, 293, 294, 295, 296, 297, 298, 299, 0, 300, + 0, 301, 302, 303, 304, 305, 306, 0, 307, 308, + 309, 310, 0, 0, 311, 312, 313, 314, 315, 0, + 316, 317, 318, 0, 319, 320, 321, 0, 322, 323, + 324, 325, 326, 327, 328, 329, 330, 331, 0, 332, + 0, 333, 334, 335, 336, 0, 337, 0, 338, 0, + 0, 0, 341, 342, 343, 344, 0, 345, 346, 0, + 347, 348, 349, 0, 350, 351, 352, 353, 3095, 0, + 356, 357, 358, 359, 0, 360, 361, 362, 363, 364, + 365, 366, 0, 367, 0, 369, 370, 371, 372, 373, + 374, 375, 0, 376, 0, 377, 0, 0, 380, 0, + 382, 383, 384, 385, 386, 0, 0, 387, 388, 0, + 390, 0, 0, 392, 393, 394, 0, 0, 395, 396, + 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, + 407, 408, 409, 410, 411, 0, 413, 414, 415, 416, + 417, 418, 419, 420, 421, 422, 423, 0, 424, 425, + 0, 427, 0, 428, 429, 430, 431, 432, 433, 0, + 434, 435, 0, 0, 436, 437, 438, 0, 0, 439, + 440, 441, 0, 443, 0, 445, 446, 447, 448, 449, + 450, 451, 452, 453, 454, 0, 455, 456, 457, 458, + 459, 460, 461, 462, 0, 463, 464, 465, 466, 467, + 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, + 0, 478, 479, 480, 481, 482, 483, 484, 485, 486, + 487, 488, 489, 0, 490, 491, 0, 493, 494, 495, + 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, + 506, 507, 0, 508, 509, 510, 511, 512, 0, 513, + 514, 515, 516, 517, 0, 519, 520, 521, 522, 0, + 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, + 533, 534, 535, 536, 537, 0, 538, 539, 0, 540, + 0, 542, 543, 544, 545, 546, 0, 547, 548, 549, + 0, 0, 550, 551, 552, 553, 554, 0, 555, 556, + 557, 558, 559, 560, 561, 562, 0, 0, 563, 564, + 565, 566, 567, 0, 0, 568, 569, 570, 571, 572, + 573, 574, 0, 575, 0, 577, 578, 579, 580, 0, + 0, 581, 0, 0, 582, 583, 584, 585, 586, 587, + 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, + 598, 599, 600, 601, 609, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 229, 230, 231, 232, 233, 234, 235, + 236, 0, 237, 238, 239, 0, 0, 0, 0, 0, + 0, 0, 240, 241, 0, 242, 243, 244, 0, 246, + 247, 248, 249, 250, 0, 252, 253, 0, 254, 255, + 256, 257, 258, 259, 0, 0, 260, 261, 262, 263, + 264, 0, 265, 266, 267, 268, 269, 0, 0, 0, + 271, 272, 273, 274, 275, 0, 277, 278, 279, 0, + 280, 281, 282, 283, 284, 285, 0, 0, 287, 288, + 289, 0, 0, 0, 0, 0, 0, 0, 291, 292, + 293, 294, 295, 296, 297, 298, 299, 0, 300, 0, + 301, 302, 303, 304, 305, 306, 0, 307, 308, 309, + 310, 0, 0, 311, 312, 313, 314, 315, 0, 316, + 317, 318, 0, 319, 320, 321, 0, 322, 323, 324, + 325, 326, 327, 328, 329, 330, 331, 0, 332, 0, + 333, 334, 335, 336, 0, 337, 0, 338, 0, 0, + 0, 341, 342, 343, 344, 0, 345, 346, 0, 347, + 348, 349, 0, 350, 351, 352, 353, 3097, 0, 356, + 357, 358, 359, 0, 360, 361, 362, 363, 364, 365, + 366, 0, 367, 0, 369, 370, 371, 372, 373, 374, + 375, 0, 376, 0, 377, 0, 0, 380, 0, 382, + 383, 384, 385, 386, 0, 0, 387, 388, 0, 390, + 0, 0, 392, 393, 394, 0, 0, 395, 396, 397, + 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, + 408, 409, 410, 411, 0, 413, 414, 415, 416, 417, + 418, 419, 420, 421, 422, 423, 0, 424, 425, 0, + 427, 0, 428, 429, 430, 431, 432, 433, 0, 434, + 435, 0, 0, 436, 437, 438, 0, 0, 439, 440, + 441, 0, 443, 0, 445, 446, 447, 448, 449, 450, + 451, 452, 453, 454, 0, 455, 456, 457, 458, 459, + 460, 461, 462, 0, 463, 464, 465, 466, 467, 468, + 469, 470, 471, 472, 473, 474, 475, 476, 477, 0, + 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, + 488, 489, 0, 490, 491, 0, 493, 494, 495, 496, + 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, + 507, 0, 508, 509, 510, 511, 512, 0, 513, 514, + 515, 516, 517, 0, 519, 520, 521, 522, 0, 523, + 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, + 534, 535, 536, 537, 0, 538, 539, 0, 540, 0, + 542, 543, 544, 545, 546, 0, 547, 548, 549, 0, + 0, 550, 551, 552, 553, 554, 0, 555, 556, 557, + 558, 559, 560, 561, 562, 0, 0, 563, 564, 565, + 566, 567, 0, 0, 568, 569, 570, 571, 572, 573, + 574, 0, 575, 0, 577, 578, 579, 580, 0, 0, + 581, 0, 0, 582, 583, 584, 585, 586, 587, 588, + 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, + 599, 600, 601, 609, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 229, 230, 231, 232, 233, 234, 235, 236, + 0, 237, 238, 239, 0, 0, 0, 0, 0, 0, + 0, 240, 241, 0, 242, 243, 244, 0, 246, 247, + 248, 249, 250, 0, 252, 253, 0, 254, 255, 256, + 257, 258, 259, 0, 0, 260, 261, 262, 263, 264, + 0, 265, 266, 267, 268, 269, 0, 0, 0, 271, + 272, 273, 274, 275, 0, 277, 278, 279, 0, 280, + 281, 282, 283, 284, 285, 0, 0, 287, 288, 289, + 0, 0, 0, 0, 0, 0, 0, 291, 292, 293, + 294, 295, 296, 297, 298, 299, 0, 300, 0, 301, + 302, 303, 304, 305, 306, 0, 307, 308, 309, 310, + 0, 0, 311, 312, 313, 314, 315, 0, 316, 317, + 318, 0, 319, 320, 321, 0, 322, 323, 324, 325, + 326, 327, 328, 329, 330, 331, 0, 332, 0, 333, + 334, 335, 336, 0, 337, 0, 338, 0, 0, 0, + 341, 342, 343, 344, 0, 345, 346, 0, 347, 348, + 349, 0, 350, 351, 352, 353, 3242, 0, 356, 357, + 358, 359, 0, 360, 361, 362, 363, 364, 365, 366, + 0, 367, 0, 369, 370, 371, 372, 373, 374, 375, + 0, 376, 0, 377, 0, 0, 380, 0, 382, 383, + 384, 385, 386, 0, 0, 387, 388, 0, 390, 0, + 0, 392, 393, 394, 0, 0, 395, 396, 397, 398, + 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, + 409, 410, 411, 0, 413, 414, 415, 416, 417, 418, + 419, 420, 421, 422, 423, 0, 424, 425, 0, 427, + 0, 428, 429, 430, 431, 432, 433, 0, 434, 435, + 0, 0, 436, 437, 438, 0, 0, 439, 440, 441, + 0, 443, 0, 445, 446, 447, 448, 449, 450, 451, + 452, 453, 454, 0, 455, 456, 457, 458, 459, 460, + 461, 462, 0, 463, 464, 465, 466, 467, 468, 469, + 470, 471, 472, 473, 474, 475, 476, 477, 0, 478, + 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, + 489, 0, 490, 491, 0, 493, 494, 495, 496, 497, + 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, + 0, 508, 509, 510, 511, 512, 0, 513, 514, 515, + 516, 517, 0, 519, 520, 521, 522, 0, 523, 524, + 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, + 535, 536, 537, 0, 538, 539, 0, 540, 0, 542, + 543, 544, 545, 546, 0, 547, 548, 549, 0, 0, + 550, 551, 552, 553, 554, 0, 555, 556, 557, 558, + 559, 560, 561, 562, 0, 0, 563, 564, 565, 566, + 567, 0, 0, 568, 569, 570, 571, 572, 573, 574, + 0, 575, 0, 577, 578, 579, 580, 0, 0, 581, + 0, 0, 582, 583, 584, 585, 586, 587, 588, 589, + 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, + 600, 601, 609, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 229, 230, 231, 232, 233, 234, 235, 236, 0, + 237, 238, 239, 0, 0, 0, 0, 0, 0, 0, + 240, 241, 0, 242, 243, 244, 0, 246, 247, 248, + 249, 250, 0, 252, 253, 0, 254, 255, 256, 257, + 258, 259, 0, 0, 260, 261, 262, 263, 264, 0, + 265, 266, 267, 268, 269, 0, 0, 0, 271, 272, + 273, 274, 275, 0, 277, 278, 279, 0, 280, 281, + 282, 283, 284, 285, 0, 0, 287, 288, 289, 0, + 0, 0, 0, 0, 0, 0, 291, 292, 293, 294, + 295, 296, 297, 298, 299, 0, 300, 0, 301, 302, + 303, 304, 305, 306, 0, 307, 308, 309, 310, 0, + 0, 311, 3280, 313, 314, 315, 0, 316, 317, 318, + 0, 319, 320, 321, 0, 322, 323, 324, 325, 326, + 327, 328, 329, 330, 331, 0, 332, 0, 333, 334, + 335, 336, 0, 337, 0, 338, 0, 0, 0, 341, + 342, 343, 344, 0, 345, 346, 0, 347, 348, 349, + 0, 350, 351, 352, 353, 354, 0, 356, 357, 358, + 359, 0, 360, 361, 362, 363, 364, 365, 366, 0, + 367, 0, 369, 370, 371, 372, 373, 374, 375, 0, + 376, 0, 377, 0, 0, 380, 0, 382, 383, 384, + 385, 386, 0, 0, 387, 388, 0, 390, 0, 0, + 392, 393, 394, 0, 0, 395, 396, 397, 398, 399, + 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, + 410, 411, 0, 413, 414, 415, 416, 417, 418, 419, + 420, 421, 422, 423, 0, 424, 425, 0, 427, 0, + 428, 429, 430, 431, 432, 433, 0, 434, 435, 0, + 0, 436, 437, 438, 0, 0, 439, 440, 441, 0, + 443, 0, 445, 446, 447, 448, 449, 450, 451, 452, + 453, 454, 0, 455, 456, 457, 458, 459, 460, 461, + 462, 0, 463, 464, 465, 466, 467, 468, 469, 470, + 471, 472, 473, 474, 475, 476, 477, 0, 478, 479, + 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, + 0, 490, 491, 0, 493, 494, 495, 496, 497, 498, + 499, 500, 501, 502, 503, 504, 505, 506, 507, 0, + 508, 509, 510, 511, 512, 0, 513, 514, 515, 516, + 517, 0, 519, 520, 521, 522, 0, 523, 524, 525, + 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, + 536, 537, 0, 538, 539, 0, 540, 0, 542, 543, + 544, 545, 546, 0, 547, 548, 549, 0, 0, 550, + 551, 552, 553, 554, 0, 555, 556, 557, 558, 559, + 560, 561, 562, 0, 0, 563, 564, 565, 566, 567, + 0, 0, 568, 569, 570, 571, 572, 573, 574, 0, + 575, 0, 577, 578, 579, 580, 0, 0, 581, 0, + 0, 582, 583, 584, 585, 586, 587, 588, 589, 590, + 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, + 601, 609, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 229, 230, 231, 232, 233, 234, 235, 236, 0, 237, + 238, 239, 0, 0, 0, 0, 0, 0, 0, 240, + 241, 0, 242, 243, 244, 0, 246, 247, 248, 249, + 250, 0, 252, 253, 0, 254, 255, 256, 257, 258, + 259, 0, 0, 260, 261, 262, 263, 264, 0, 265, + 266, 267, 268, 269, 0, 0, 0, 271, 272, 273, + 274, 275, 0, 277, 278, 279, 0, 280, 281, 282, + 283, 284, 285, 0, 0, 287, 288, 289, 0, 0, + 0, 0, 0, 0, 0, 291, 292, 293, 294, 295, + 296, 297, 298, 299, 0, 300, 0, 301, 302, 303, + 304, 305, 306, 0, 307, 308, 309, 310, 0, 0, + 311, 312, 313, 314, 315, 0, 316, 317, 318, 0, + 319, 320, 321, 0, 322, 323, 324, 325, 326, 327, + 328, 329, 330, 331, 0, 332, 0, 333, 334, 335, + 336, 0, 337, 0, 338, 0, 0, 0, 341, 342, + 343, 344, 0, 345, 346, 0, 347, 348, 349, 0, + 350, 351, 352, 353, 4476, 0, 356, 357, 358, 359, + 0, 360, 361, 362, 363, 364, 365, 366, 0, 367, + 0, 369, 370, 371, 372, 373, 374, 375, 0, 376, + 0, 377, 0, 0, 380, 0, 382, 383, 384, 385, + 386, 0, 0, 387, 388, 0, 390, 0, 0, 392, + 393, 394, 0, 0, 395, 396, 397, 398, 399, 400, + 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, + 411, 0, 413, 414, 415, 416, 417, 418, 419, 420, + 421, 422, 423, 0, 424, 425, 0, 427, 0, 428, + 429, 430, 431, 432, 433, 0, 434, 435, 0, 0, + 436, 437, 438, 0, 0, 439, 440, 441, 0, 443, + 0, 445, 446, 447, 448, 449, 450, 451, 452, 453, + 454, 0, 455, 456, 457, 458, 459, 460, 461, 462, + 0, 463, 464, 465, 466, 467, 468, 469, 470, 471, + 472, 473, 474, 475, 476, 477, 0, 478, 479, 480, + 481, 482, 483, 484, 485, 486, 487, 488, 489, 0, + 490, 491, 0, 493, 494, 495, 496, 497, 498, 499, + 500, 501, 502, 503, 504, 505, 506, 507, 0, 508, + 509, 510, 511, 512, 0, 513, 514, 515, 516, 517, + 0, 519, 520, 521, 522, 0, 523, 524, 525, 526, + 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, + 537, 0, 538, 539, 0, 540, 0, 542, 543, 544, + 545, 546, 0, 547, 548, 549, 0, 0, 550, 551, + 552, 553, 554, 0, 555, 556, 557, 558, 559, 560, + 561, 562, 0, 0, 563, 564, 565, 566, 567, 0, + 0, 568, 569, 570, 571, 572, 573, 574, 0, 575, + 0, 577, 578, 579, 580, 0, 0, 581, 0, 0, + 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, + 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, + 1070, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 229, + 230, 231, 232, 233, 234, 235, 236, 0, 237, 238, + 239, 0, 0, 0, 0, 0, 0, 0, 240, 241, + 0, 242, 243, 244, 245, 246, 247, 248, 0, 1071, + 251, 1072, 1073, 0, 254, 255, 256, 257, 258, 259, + 0, 0, 260, 261, 1074, 1075, 264, 0, 265, 266, + 267, 268, 0, 0, 270, 0, 271, 272, 273, 274, + 275, 276, 277, 278, 279, 0, 280, 281, 282, 283, + 284, 285, 0, 286, 287, 288, 289, 0, 0, 0, + 290, 0, 0, 0, 291, 292, 293, 294, 295, 296, + 1076, 1077, 299, 0, 300, 0, 301, 302, 303, 304, + 305, 306, 0, 307, 308, 309, 310, 0, 0, 311, + 312, 1078, 314, 315, 0, 316, 317, 318, 0, 319, + 320, 321, 0, 322, 323, 324, 325, 0, 327, 328, + 329, 330, 0, 0, 332, 0, 333, 334, 1079, 336, + 0, 337, 0, 338, 339, 0, 340, 341, 342, 343, + 344, 0, 345, 0, 0, 0, 348, 349, 0, 350, + 351, 352, 353, 354, 355, 356, 357, 358, 359, 2191, + 360, 361, 362, 363, 364, 365, 366, 0, 367, 368, + 2192, 370, 371, 372, 373, 1081, 1082, 0, 1083, 0, + 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, + 0, 0, 387, 0, 389, 390, 391, 0, 392, 393, + 394, 0, 0, 395, 396, 397, 398, 399, 400, 401, + 402, 403, 404, 405, 406, 407, 408, 409, 410, 1084, + 412, 1085, 414, 415, 416, 417, 418, 419, 420, 0, + 0, 423, 0, 424, 425, 426, 427, 0, 0, 429, + 1086, 431, 432, 433, 0, 434, 435, 0, 0, 436, + 437, 438, 0, 0, 439, 440, 2194, 442, 443, 444, + 0, 446, 447, 448, 449, 450, 451, 452, 453, 454, + 0, 455, 456, 0, 458, 0, 460, 461, 462, 0, + 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, + 1087, 474, 475, 476, 477, 0, 478, 479, 480, 481, + 482, 483, 484, 485, 486, 487, 488, 489, 0, 490, + 491, 492, 493, 494, 495, 496, 497, 0, 499, 500, + 501, 502, 503, 504, 505, 506, 507, 0, 508, 509, + 510, 511, 512, 0, 513, 514, 2195, 516, 517, 518, + 519, 520, 1089, 522, 0, 523, 524, 525, 526, 527, + 528, 529, 530, 531, 532, 533, 534, 535, 0, 537, + 0, 538, 539, 0, 540, 541, 542, 543, 544, 545, + 546, 0, 547, 1090, 1091, 0, 0, 550, 551, 0, + 553, 0, 0, 555, 556, 557, 558, 559, 560, 561, + 562, 0, 0, 563, 564, 565, 566, 567, 0, 0, + 568, 569, 570, 571, 572, 0, 1092, 2196, 575, 576, + 577, 578, 579, 580, 0, 0, 581, 0, 0, 582, + 583, 584, 585, 586, 587, 609, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 599, 600, 601, 0, + 0, 0, 0, 0, 229, 230, 231, 232, 233, 234, + 235, 236, 0, 237, 238, 239, 0, 0, 0, 0, + 0, 0, 0, 240, 241, 0, 242, 243, 244, 0, + 246, 247, 248, 249, 250, 0, 252, 253, 0, 254, + 255, 256, 257, 258, 259, 0, 0, 260, 261, 262, + 263, 264, 0, 265, 266, 267, 268, 269, 0, 0, + 0, 271, 272, 273, 274, 275, 0, 277, 278, 279, + 0, 280, 281, 282, 283, 284, 285, 0, 0, 287, + 288, 289, 0, 0, 0, 0, 0, 0, 0, 291, + 292, 293, 294, 295, 296, 297, 298, 299, 0, 300, + 0, 301, 302, 303, 304, 305, 306, 0, 307, 308, + 309, 310, 0, 0, 311, 312, 313, 314, 315, 0, + 316, 317, 318, 0, 319, 320, 321, 0, 322, 323, + 324, 325, 326, 327, 328, 329, 330, 331, 0, 332, + 0, 333, 334, 335, 336, 0, 337, 0, 338, 0, + 0, 0, 341, 342, 343, 344, 0, 345, 346, 0, + 347, 0, 349, 0, 350, 351, 352, 353, 354, 0, + 356, 357, 358, 359, 0, 360, 361, 362, 363, 364, + 365, 366, 0, 367, 0, 369, 370, 371, 372, 373, + 374, 375, 0, 376, 0, 377, 0, 0, 380, 0, + 382, 383, 384, 385, 386, 0, 0, 387, 388, 0, + 390, 0, 0, 392, 393, 394, 0, 0, 395, 396, + 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, + 407, 408, 409, 410, 411, 0, 413, 414, 415, 416, + 417, 418, 419, 420, 421, 422, 423, 0, 424, 425, + 0, 427, 0, 428, 429, 430, 431, 432, 433, 0, + 434, 435, 0, 0, 436, 437, 438, 0, 0, 439, + 440, 441, 0, 443, 0, 445, 446, 447, 448, 449, + 450, 451, 0, 453, 454, 0, 455, 456, 457, 458, + 459, 460, 461, 462, 0, 463, 464, 465, 466, 467, + 468, 469, 470, 0, 472, 473, 474, 475, 476, 477, + 0, 478, 479, 480, 481, 482, 483, 484, 485, 486, + 487, 488, 489, 0, 490, 491, 0, 493, 494, 495, + 496, 497, 498, 0, 500, 501, 502, 503, 504, 505, + 506, 507, 0, 508, 509, 510, 511, 512, 0, 513, + 514, 515, 516, 517, 0, 519, 520, 521, 522, 0, + 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, + 533, 534, 535, 536, 537, 0, 538, 539, 0, 540, + 0, 542, 543, 544, 545, 546, 0, 547, 548, 549, + 0, 0, 550, 551, 552, 553, 554, 0, 555, 556, + 557, 558, 559, 560, 561, 562, 0, 0, 563, 564, + 565, 566, 567, 0, 0, 568, 569, 570, 571, 572, + 573, 574, 0, 575, 0, 577, 578, 579, 580, 0, + 0, 581, 0, 0, 582, 583, 584, 585, 586, 587, + 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, + 598, 599, 600, 601, 1070, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 229, 230, 231, 232, 233, 234, 235, + 236, 0, 237, 238, 239, 0, 0, 0, 0, 0, + 0, 0, 240, 241, 0, 242, 243, 244, 245, 246, + 247, 248, 0, 1071, 251, 1072, 1073, 0, 254, 255, + 256, 257, 258, 259, 0, 0, 260, 261, 1074, 1075, + 264, 0, 265, 266, 267, 268, 0, 0, 270, 0, + 271, 272, 273, 274, 275, 276, 277, 278, 279, 0, + 280, 281, 282, 283, 284, 285, 0, 286, 287, 288, + 289, 0, 0, 0, 290, 0, 0, 0, 291, 292, + 293, 294, 295, 296, 1076, 1077, 299, 0, 300, 0, + 301, 302, 303, 304, 305, 306, 0, 307, 308, 309, + 310, 0, 0, 311, 312, 1078, 314, 315, 0, 316, + 317, 318, 0, 319, 320, 321, 0, 322, 323, 324, + 325, 0, 327, 328, 329, 330, 0, 0, 332, 0, + 333, 334, 1079, 336, 0, 337, 0, 338, 339, 0, + 340, 341, 342, 343, 344, 0, 345, 0, 0, 0, + 348, 349, 0, 350, 351, 352, 353, 354, 355, 356, + 357, 358, 359, 0, 360, 361, 362, 363, 364, 365, + 366, 0, 367, 368, 0, 370, 371, 372, 373, 1081, + 1082, 0, 1083, 0, 377, 378, 379, 380, 381, 382, + 383, 384, 385, 386, 0, 0, 387, 0, 389, 390, + 391, 0, 392, 393, 394, 0, 0, 395, 396, 397, + 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, + 408, 409, 410, 1084, 412, 1085, 414, 415, 416, 417, + 418, 419, 420, 0, 0, 423, 0, 424, 425, 426, + 427, 2290, 0, 429, 1086, 431, 432, 433, 0, 434, + 435, 0, 0, 436, 437, 438, 0, 0, 439, 440, + 0, 442, 443, 444, 0, 446, 447, 448, 449, 450, + 451, 452, 453, 454, 0, 455, 456, 0, 458, 0, + 460, 461, 462, 0, 463, 464, 465, 466, 467, 468, + 469, 470, 471, 472, 1087, 474, 475, 476, 477, 0, + 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, + 488, 489, 0, 490, 491, 492, 493, 494, 495, 496, + 497, 0, 499, 500, 501, 502, 503, 504, 505, 506, + 507, 0, 508, 509, 510, 511, 512, 0, 513, 514, + 2195, 516, 517, 518, 519, 520, 1089, 522, 0, 523, + 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, + 534, 535, 0, 537, 0, 538, 539, 4013, 540, 541, + 542, 543, 544, 545, 546, 0, 547, 1090, 1091, 0, + 0, 550, 551, 0, 553, 0, 0, 555, 556, 557, + 558, 559, 560, 561, 562, 0, 0, 563, 564, 565, + 566, 567, 0, 0, 568, 569, 570, 571, 572, 0, + 1092, 0, 575, 576, 577, 578, 579, 580, 0, 0, + 581, 0, 0, 582, 583, 584, 585, 586, 587, 1070, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 599, 600, 601, 0, 0, 0, 0, 0, 229, 230, + 231, 232, 233, 234, 235, 236, 0, 237, 238, 239, + 0, 0, 0, 0, 0, 0, 0, 240, 241, 0, + 242, 243, 244, 245, 246, 247, 248, 0, 1071, 251, + 1072, 1073, 0, 254, 255, 256, 257, 258, 259, 0, + 0, 260, 261, 1074, 1075, 264, 0, 265, 266, 267, + 268, 0, 0, 270, 0, 271, 272, 273, 274, 275, + 276, 277, 278, 279, 0, 280, 281, 282, 283, 284, + 285, 0, 286, 287, 288, 289, 0, 0, 0, 290, + 0, 0, 0, 291, 292, 293, 294, 295, 296, 1076, + 1077, 299, 0, 300, 0, 301, 302, 303, 304, 305, + 306, 0, 307, 308, 309, 310, 0, 0, 311, 312, + 1078, 314, 315, 0, 316, 317, 318, 0, 319, 320, + 321, 0, 322, 323, 324, 325, 0, 327, 328, 329, + 330, 0, 0, 332, 0, 333, 334, 1079, 336, 0, + 337, 0, 338, 339, 0, 340, 341, 342, 343, 344, + 0, 345, 0, 0, 0, 348, 349, 0, 350, 351, + 352, 353, 354, 355, 356, 357, 358, 359, 0, 360, + 361, 362, 363, 364, 365, 366, 0, 367, 368, 0, + 370, 371, 372, 373, 1081, 1082, 0, 1083, 0, 377, + 378, 379, 380, 381, 382, 383, 384, 385, 386, 0, + 0, 387, 0, 389, 390, 391, 0, 392, 393, 394, + 0, 0, 395, 396, 397, 398, 399, 400, 401, 402, + 403, 404, 405, 406, 407, 408, 409, 410, 1084, 412, + 1085, 414, 415, 416, 417, 418, 419, 420, 2363, 0, + 423, 0, 424, 425, 426, 427, 0, 0, 429, 1086, + 431, 432, 433, 0, 434, 435, 0, 0, 436, 437, + 438, 0, 0, 439, 440, 0, 442, 443, 444, 0, + 446, 447, 448, 449, 450, 451, 452, 453, 454, 0, + 455, 456, 0, 458, 0, 460, 461, 462, 0, 463, + 464, 465, 466, 467, 468, 469, 470, 471, 472, 1087, + 474, 475, 476, 477, 0, 478, 479, 480, 481, 482, + 483, 484, 485, 486, 487, 488, 489, 0, 490, 491, + 492, 493, 494, 495, 496, 497, 0, 499, 500, 501, + 502, 503, 504, 505, 506, 507, 0, 508, 509, 510, + 511, 512, 0, 513, 514, 1088, 516, 517, 518, 519, + 520, 1089, 522, 0, 523, 524, 525, 526, 527, 528, + 529, 530, 531, 532, 533, 534, 535, 0, 537, 0, + 538, 539, 0, 540, 541, 542, 543, 544, 545, 546, + 0, 547, 1090, 1091, 0, 0, 550, 551, 0, 553, + 0, 0, 555, 556, 557, 558, 559, 560, 561, 562, + 0, 0, 563, 564, 565, 566, 567, 0, 0, 568, + 569, 570, 571, 572, 0, 1092, 0, 575, 576, 577, + 578, 579, 580, 0, 0, 581, 0, 0, 582, 583, + 584, 585, 586, 587, 1070, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 599, 600, 601, 0, 0, + 0, 0, 0, 229, 230, 231, 232, 233, 234, 235, + 236, 0, 237, 238, 239, 0, 0, 0, 0, 0, + 0, 0, 240, 241, 0, 242, 243, 244, 245, 246, + 247, 248, 0, 1071, 251, 1072, 1073, 0, 254, 255, + 256, 257, 258, 259, 0, 0, 260, 261, 1074, 1075, + 264, 0, 265, 266, 267, 268, 0, 0, 270, 0, + 271, 272, 273, 274, 275, 276, 277, 278, 279, 0, + 280, 281, 282, 283, 284, 285, 0, 286, 287, 288, + 289, 0, 0, 0, 290, 0, 0, 0, 291, 292, + 293, 294, 295, 296, 1076, 1077, 299, 0, 300, 0, + 301, 302, 303, 304, 305, 306, 0, 307, 308, 309, + 310, 0, 0, 311, 312, 1078, 314, 315, 0, 316, + 317, 318, 0, 319, 320, 321, 0, 322, 323, 324, + 325, 0, 327, 328, 329, 330, 0, 0, 332, 0, + 333, 334, 1079, 336, 0, 337, 0, 338, 339, 0, + 340, 341, 342, 343, 344, 0, 345, 0, 0, 0, + 348, 349, 0, 350, 351, 352, 353, 354, 355, 356, + 357, 358, 359, 0, 360, 361, 362, 363, 364, 365, + 366, 0, 367, 368, 0, 370, 371, 372, 373, 1081, + 1082, 0, 1083, 0, 377, 378, 379, 380, 381, 382, + 383, 384, 385, 386, 0, 0, 387, 0, 389, 390, + 391, 0, 392, 393, 394, 0, 0, 395, 396, 397, + 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, + 408, 409, 410, 1084, 412, 1085, 414, 415, 416, 417, + 418, 419, 420, 3815, 0, 423, 0, 424, 425, 426, + 427, 0, 0, 429, 1086, 431, 432, 433, 0, 434, + 435, 0, 0, 436, 437, 438, 0, 0, 439, 440, + 0, 442, 443, 444, 0, 446, 447, 448, 449, 450, + 451, 452, 453, 454, 0, 455, 456, 0, 458, 0, + 460, 461, 462, 0, 463, 464, 465, 466, 467, 468, + 469, 470, 471, 472, 1087, 474, 475, 476, 477, 0, + 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, + 488, 489, 0, 490, 491, 492, 493, 494, 495, 496, + 497, 0, 499, 500, 501, 502, 503, 504, 505, 506, + 507, 0, 508, 509, 510, 511, 512, 0, 513, 514, + 1088, 516, 517, 518, 519, 520, 1089, 522, 0, 523, + 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, + 534, 535, 0, 537, 0, 538, 539, 0, 540, 541, + 542, 543, 544, 545, 546, 0, 547, 1090, 1091, 0, + 0, 550, 551, 0, 553, 0, 0, 555, 556, 557, + 558, 559, 560, 561, 562, 0, 0, 563, 564, 565, + 566, 567, 0, 0, 568, 569, 570, 571, 572, 0, + 1092, 0, 575, 576, 577, 578, 579, 580, 0, 0, + 581, 0, 0, 582, 583, 584, 585, 586, 587, 1070, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 599, 600, 601, 0, 0, 0, 0, 0, 229, 230, + 231, 232, 233, 234, 235, 236, 0, 237, 238, 239, + 0, 0, 0, 0, 0, 0, 0, 240, 241, 0, + 242, 243, 244, 245, 246, 247, 248, 0, 1071, 251, + 1072, 1073, 0, 254, 255, 256, 257, 258, 259, 0, + 0, 260, 261, 1074, 1075, 264, 0, 265, 266, 267, + 268, 0, 0, 270, 0, 271, 272, 273, 274, 275, + 276, 277, 278, 279, 0, 280, 281, 282, 283, 284, + 285, 0, 286, 287, 288, 289, 0, 0, 0, 290, + 0, 0, 0, 291, 292, 293, 294, 295, 296, 1076, + 1077, 299, 0, 300, 0, 301, 302, 303, 304, 305, + 306, 0, 307, 308, 309, 310, 0, 0, 311, 312, + 1078, 314, 315, 0, 316, 317, 318, 0, 319, 320, + 321, 0, 322, 323, 324, 325, 0, 327, 328, 329, + 330, 0, 0, 332, 0, 333, 334, 1079, 336, 5393, + 337, 0, 338, 339, 0, 340, 341, 342, 343, 344, + 0, 345, 0, 0, 0, 348, 349, 0, 350, 351, + 352, 353, 354, 355, 356, 357, 358, 359, 0, 360, + 361, 362, 363, 364, 365, 366, 0, 367, 368, 0, + 370, 371, 372, 373, 1081, 1082, 0, 1083, 0, 377, + 378, 379, 380, 381, 382, 383, 384, 385, 386, 0, + 0, 387, 0, 389, 390, 391, 0, 392, 393, 394, + 0, 0, 395, 396, 397, 398, 399, 400, 401, 402, + 403, 404, 405, 406, 407, 408, 409, 410, 1084, 412, + 1085, 414, 415, 416, 417, 418, 419, 420, 0, 0, + 423, 0, 424, 425, 426, 427, 0, 0, 429, 1086, + 431, 432, 433, 0, 434, 435, 0, 0, 436, 437, + 438, 0, 0, 439, 440, 0, 442, 443, 444, 0, + 446, 447, 448, 449, 450, 451, 452, 453, 454, 0, + 455, 456, 0, 458, 0, 460, 461, 462, 0, 463, + 464, 465, 466, 467, 468, 469, 470, 471, 472, 1087, + 474, 475, 476, 477, 0, 478, 479, 480, 481, 482, + 483, 484, 485, 486, 487, 488, 489, 0, 490, 491, + 492, 493, 494, 495, 496, 497, 0, 499, 500, 501, + 502, 503, 504, 505, 506, 507, 0, 508, 509, 510, + 511, 512, 0, 513, 514, 1088, 516, 517, 518, 519, + 520, 1089, 522, 0, 523, 524, 525, 526, 527, 528, + 529, 530, 531, 532, 533, 534, 535, 0, 537, 0, + 538, 539, 0, 540, 541, 542, 543, 544, 545, 546, + 0, 547, 1090, 1091, 0, 0, 550, 551, 0, 553, + 0, 0, 555, 556, 557, 558, 559, 560, 561, 562, + 0, 0, 563, 564, 565, 566, 567, 0, 0, 568, + 569, 570, 571, 572, 0, 1092, 0, 575, 576, 577, + 578, 579, 580, 0, 0, 581, 0, 0, 582, 583, + 584, 585, 586, 587, 1070, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 599, 600, 601, 0, 0, + 0, 0, 0, 229, 230, 231, 232, 233, 234, 235, + 236, 0, 237, 238, 239, 0, 0, 0, 0, 0, + 0, 0, 240, 241, 0, 242, 243, 244, 245, 246, + 247, 248, 0, 1071, 251, 1072, 1073, 0, 254, 255, + 256, 257, 258, 259, 0, 0, 260, 261, 1074, 1075, + 264, 0, 265, 266, 267, 268, 0, 0, 270, 0, + 271, 272, 273, 274, 275, 276, 277, 278, 279, 0, + 280, 281, 282, 283, 284, 285, 0, 286, 287, 288, + 289, 0, 0, 0, 290, 0, 0, 0, 291, 292, + 293, 294, 295, 296, 1076, 1077, 299, 0, 300, 0, + 301, 302, 303, 304, 305, 306, 0, 307, 308, 309, + 310, 0, 0, 311, 312, 1078, 314, 315, 0, 316, + 317, 318, 0, 319, 320, 321, 0, 322, 323, 324, + 325, 0, 327, 328, 329, 330, 0, 0, 332, 0, + 333, 334, 1079, 336, 0, 337, 0, 338, 339, 0, + 340, 341, 342, 343, 344, 0, 345, 0, 0, 0, + 348, 349, 0, 350, 351, 352, 353, 1080, 355, 356, + 357, 358, 359, 0, 360, 361, 362, 363, 364, 365, + 366, 0, 367, 368, 0, 370, 371, 372, 373, 1081, + 1082, 0, 1083, 0, 377, 378, 379, 380, 381, 382, + 383, 384, 385, 386, 0, 0, 387, 0, 389, 390, + 391, 0, 392, 393, 394, 0, 0, 395, 396, 397, + 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, + 408, 409, 410, 1084, 412, 1085, 414, 415, 416, 417, + 418, 419, 420, 0, 0, 423, 0, 424, 425, 426, + 427, 0, 0, 429, 1086, 431, 432, 433, 0, 434, + 435, 0, 0, 436, 437, 438, 0, 0, 439, 440, + 0, 442, 443, 444, 0, 446, 447, 448, 449, 450, + 451, 452, 453, 454, 0, 455, 456, 0, 458, 0, + 460, 461, 462, 0, 463, 464, 465, 466, 467, 468, + 469, 470, 471, 472, 1087, 474, 475, 476, 477, 0, + 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, + 488, 489, 0, 490, 491, 492, 493, 494, 495, 496, + 497, 0, 499, 500, 501, 502, 503, 504, 505, 506, + 507, 0, 508, 509, 510, 511, 512, 0, 513, 514, + 1088, 516, 517, 518, 519, 520, 1089, 522, 0, 523, + 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, + 534, 535, 0, 537, 0, 538, 539, 0, 540, 541, + 542, 543, 544, 545, 546, 0, 547, 1090, 1091, 0, + 0, 550, 551, 0, 553, 0, 0, 555, 556, 557, + 558, 559, 560, 561, 562, 0, 0, 563, 564, 565, + 566, 567, 0, 0, 568, 569, 570, 571, 572, 0, + 1092, 0, 575, 576, 577, 578, 579, 580, 0, 0, + 581, 0, 0, 582, 583, 584, 585, 586, 587, 1070, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 599, 600, 601, 0, 0, 0, 0, 0, 229, 230, + 231, 232, 233, 234, 235, 236, 0, 237, 238, 239, + 0, 0, 0, 0, 0, 0, 0, 240, 241, 0, + 242, 243, 244, 245, 246, 247, 248, 0, 1071, 251, + 1072, 1073, 0, 254, 255, 256, 257, 258, 259, 0, + 0, 260, 261, 1074, 1075, 264, 0, 265, 266, 267, + 268, 0, 0, 270, 0, 271, 272, 273, 274, 275, + 276, 277, 278, 279, 0, 280, 281, 282, 283, 284, + 285, 0, 286, 287, 288, 289, 0, 0, 0, 290, + 0, 0, 0, 291, 292, 293, 294, 295, 296, 1076, + 1077, 299, 0, 300, 0, 301, 302, 303, 304, 305, + 306, 0, 307, 308, 309, 310, 0, 0, 311, 312, + 1078, 314, 315, 0, 316, 317, 318, 0, 319, 320, + 321, 0, 322, 323, 324, 325, 0, 327, 328, 329, + 330, 0, 0, 332, 0, 333, 334, 1079, 336, 0, + 337, 0, 338, 339, 0, 340, 341, 342, 343, 344, + 0, 345, 0, 0, 0, 348, 349, 0, 350, 351, + 352, 353, 1138, 355, 356, 357, 358, 359, 0, 360, + 361, 362, 363, 364, 365, 366, 0, 367, 368, 0, + 370, 371, 372, 373, 1081, 1082, 0, 1083, 0, 377, + 378, 379, 380, 381, 382, 383, 384, 385, 386, 0, + 0, 387, 0, 389, 390, 391, 0, 392, 393, 394, + 0, 0, 395, 396, 397, 398, 399, 400, 401, 402, + 403, 404, 405, 406, 407, 408, 409, 410, 1084, 412, + 1085, 414, 415, 416, 417, 418, 419, 420, 0, 0, + 423, 0, 424, 425, 426, 427, 0, 0, 429, 1086, + 431, 432, 433, 0, 434, 435, 0, 0, 436, 437, + 438, 0, 0, 439, 440, 0, 442, 443, 444, 0, + 446, 447, 448, 449, 450, 451, 452, 453, 454, 0, + 455, 456, 0, 458, 0, 460, 461, 462, 0, 463, + 464, 465, 466, 467, 468, 469, 470, 471, 472, 1087, + 474, 475, 476, 477, 0, 478, 479, 480, 481, 482, + 483, 484, 485, 486, 487, 488, 489, 0, 490, 491, + 492, 493, 494, 495, 496, 497, 0, 499, 500, 501, + 502, 503, 504, 505, 506, 507, 0, 508, 509, 510, + 511, 512, 0, 513, 514, 1088, 516, 517, 518, 519, + 520, 1089, 522, 0, 523, 524, 525, 526, 527, 528, + 529, 530, 531, 532, 533, 534, 535, 0, 537, 0, + 538, 539, 0, 540, 541, 542, 543, 544, 545, 546, + 0, 547, 1090, 1091, 0, 0, 550, 551, 0, 553, + 0, 0, 555, 556, 557, 558, 559, 560, 561, 562, + 0, 0, 563, 564, 565, 566, 567, 0, 0, 568, + 569, 570, 571, 572, 0, 1092, 0, 575, 576, 577, + 578, 579, 580, 0, 0, 581, 0, 0, 582, 583, + 584, 585, 586, 587, 1070, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 599, 600, 601, 0, 0, + 0, 0, 0, 229, 230, 231, 232, 233, 234, 235, + 236, 0, 237, 238, 239, 0, 0, 0, 0, 0, + 0, 0, 240, 241, 0, 242, 243, 244, 245, 246, + 247, 248, 0, 1071, 251, 1072, 1073, 0, 254, 255, + 256, 257, 258, 259, 0, 0, 260, 261, 1074, 1075, + 264, 0, 265, 266, 267, 268, 0, 0, 270, 0, + 271, 272, 273, 274, 275, 276, 277, 278, 279, 0, + 280, 281, 282, 283, 284, 285, 0, 286, 287, 288, + 289, 0, 0, 0, 290, 0, 0, 0, 291, 292, + 293, 294, 295, 296, 1076, 1077, 299, 0, 300, 0, + 301, 302, 303, 304, 305, 306, 0, 307, 308, 309, + 310, 0, 0, 311, 312, 1078, 314, 315, 0, 316, + 317, 318, 0, 319, 320, 321, 0, 322, 323, 324, + 325, 0, 327, 328, 329, 330, 0, 0, 332, 0, + 333, 334, 1079, 336, 0, 337, 0, 338, 339, 0, + 340, 341, 342, 343, 344, 0, 345, 0, 0, 0, + 348, 349, 0, 350, 351, 352, 353, 354, 355, 356, + 357, 358, 359, 0, 360, 361, 362, 363, 364, 365, + 366, 0, 367, 368, 0, 370, 371, 372, 373, 1081, + 1082, 0, 1083, 0, 377, 378, 379, 380, 381, 382, + 383, 384, 385, 386, 0, 0, 387, 0, 389, 390, + 391, 0, 392, 393, 394, 0, 0, 395, 396, 397, + 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, + 408, 409, 410, 1084, 412, 1085, 414, 415, 416, 417, + 418, 419, 420, 0, 0, 423, 0, 424, 425, 426, + 427, 0, 0, 429, 1086, 431, 432, 433, 0, 434, + 435, 0, 0, 436, 437, 438, 0, 0, 439, 440, + 0, 442, 443, 444, 0, 446, 447, 448, 449, 450, + 451, 452, 453, 454, 0, 455, 456, 0, 458, 0, + 460, 461, 462, 0, 463, 464, 465, 466, 467, 468, + 469, 470, 471, 472, 1087, 474, 475, 476, 477, 0, + 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, + 488, 489, 0, 490, 491, 492, 493, 494, 495, 496, + 497, 0, 499, 500, 501, 502, 503, 504, 505, 506, + 507, 0, 508, 509, 510, 511, 512, 0, 513, 514, + 1088, 516, 517, 518, 519, 520, 1089, 522, 0, 523, + 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, + 534, 535, 0, 537, 0, 538, 539, 0, 540, 541, + 542, 543, 544, 545, 546, 0, 547, 1090, 1091, 0, + 0, 550, 551, 0, 553, 0, 0, 555, 556, 557, + 558, 559, 560, 561, 562, 0, 0, 563, 564, 565, + 566, 567, 0, 0, 568, 569, 570, 571, 572, 0, + 1092, 0, 575, 576, 577, 578, 579, 580, 0, 0, + 581, 0, 0, 582, 583, 584, 585, 586, 587, 1070, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 599, 600, 601, 0, 0, 0, 0, 0, 229, 230, + 231, 232, 233, 234, 235, 236, 0, 237, 238, 239, + 0, 0, 0, 0, 0, 0, 0, 240, 241, 0, + 242, 243, 244, 245, 246, 247, 248, 0, 1071, 251, + 1072, 1073, 0, 254, 255, 256, 257, 258, 259, 0, + 0, 260, 261, 1074, 1075, 264, 0, 265, 266, 267, + 268, 0, 0, 270, 0, 271, 272, 273, 274, 275, + 276, 277, 278, 279, 0, 280, 281, 282, 283, 284, + 285, 0, 286, 287, 288, 289, 0, 0, 0, 290, + 0, 0, 0, 291, 292, 293, 294, 295, 296, 1076, + 1077, 299, 0, 300, 0, 301, 302, 303, 304, 305, + 306, 0, 307, 308, 309, 310, 0, 0, 311, 312, + 1078, 314, 315, 0, 316, 317, 318, 0, 319, 320, + 321, 0, 322, 323, 324, 325, 0, 327, 328, 329, + 330, 0, 0, 332, 0, 333, 334, 1079, 336, 0, + 337, 0, 338, 339, 0, 340, 341, 342, 343, 344, + 0, 345, 0, 0, 0, 348, 349, 0, 350, 351, + 352, 353, 354, 355, 356, 357, 358, 359, 0, 360, + 361, 362, 363, 364, 365, 366, 0, 367, 368, 0, + 370, 371, 372, 373, 1081, 1082, 0, 1083, 0, 377, + 378, 379, 380, 381, 382, 383, 384, 385, 386, 0, + 0, 387, 0, 389, 390, 391, 0, 392, 393, 394, + 0, 0, 395, 396, 397, 398, 399, 400, 401, 402, + 403, 404, 405, 406, 407, 408, 409, 410, 1084, 412, + 1085, 414, 415, 416, 417, 418, 419, 420, 0, 0, + 423, 0, 424, 425, 426, 427, 0, 0, 429, 1086, + 431, 432, 433, 0, 434, 435, 0, 0, 436, 437, + 438, 0, 0, 439, 440, 0, 442, 443, 444, 0, + 446, 447, 448, 449, 450, 451, 452, 453, 454, 0, + 455, 456, 0, 458, 0, 460, 461, 462, 0, 463, + 464, 465, 466, 467, 468, 469, 470, 471, 472, 1087, + 474, 475, 476, 477, 0, 478, 479, 480, 481, 482, + 483, 484, 485, 486, 487, 488, 489, 0, 490, 491, + 492, 493, 494, 495, 496, 497, 0, 499, 500, 501, + 502, 503, 504, 505, 506, 507, 0, 508, 509, 510, + 511, 512, 0, 513, 514, 2195, 516, 517, 518, 519, + 520, 1089, 522, 0, 523, 524, 525, 526, 527, 528, + 529, 530, 531, 532, 533, 534, 535, 0, 537, 0, + 538, 539, 0, 540, 541, 542, 543, 544, 545, 546, + 0, 547, 1090, 1091, 0, 0, 550, 551, 0, 553, + 0, 0, 555, 556, 557, 558, 559, 560, 561, 562, + 0, 0, 563, 564, 565, 566, 567, 0, 0, 568, + 569, 570, 571, 572, 0, 1092, 0, 575, 576, 577, + 578, 579, 580, 0, 0, 581, 0, 0, 582, 583, + 584, 585, 586, 587, 1070, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 599, 600, 601, 0, 0, + 0, 0, 0, 229, 230, 231, 232, 233, 234, 235, + 236, 0, 237, 238, 239, 0, 0, 0, 0, 0, + 0, 0, 240, 241, 0, 242, 243, 244, 245, 246, + 247, 248, 0, 1071, 251, 1072, 1073, 0, 254, 255, + 256, 257, 258, 259, 0, 0, 260, 261, 1074, 1075, + 264, 0, 265, 266, 267, 268, 0, 0, 270, 0, + 271, 272, 273, 274, 275, 276, 277, 278, 279, 0, + 280, 281, 282, 283, 284, 285, 0, 286, 287, 288, + 289, 0, 0, 0, 290, 0, 0, 0, 291, 292, + 293, 294, 295, 296, 1076, 1077, 299, 0, 300, 0, + 301, 302, 303, 304, 305, 306, 0, 307, 308, 309, + 310, 0, 0, 311, 312, 1078, 314, 315, 0, 316, + 317, 318, 0, 319, 320, 321, 0, 322, 323, 324, + 325, 0, 327, 328, 329, 330, 0, 0, 332, 0, + 333, 334, 1079, 336, 0, 337, 0, 338, 339, 0, + 340, 341, 342, 343, 344, 0, 345, 0, 0, 0, + 348, 349, 0, 350, 351, 352, 353, 354, 355, 356, + 357, 358, 359, 0, 360, 361, 362, 363, 364, 365, + 366, 0, 367, 368, 0, 370, 371, 372, 373, 1081, + 1082, 0, 1083, 0, 377, 378, 379, 380, 381, 382, + 383, 384, 385, 386, 0, 0, 387, 0, 389, 390, + 391, 0, 392, 393, 394, 0, 0, 395, 396, 397, + 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, + 408, 409, 410, 1084, 412, 1085, 414, 415, 416, 417, + 418, 419, 420, 0, 0, 423, 0, 424, 425, 426, + 427, 0, 0, 429, 1086, 431, 432, 433, 0, 434, + 435, 0, 0, 436, 437, 438, 0, 0, 439, 440, + 0, 442, 443, 444, 0, 446, 447, 448, 449, 450, + 451, 452, 453, 454, 0, 455, 456, 0, 458, 0, + 460, 461, 462, 0, 463, 464, 465, 466, 467, 468, + 469, 470, 471, 472, 1087, 474, 475, 476, 477, 0, + 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, + 488, 489, 0, 490, 491, 492, 493, 494, 495, 496, + 497, 0, 499, 500, 501, 502, 503, 504, 505, 506, + 507, 0, 508, 509, 510, 511, 512, 0, 513, 514, + 0, 516, 517, 518, 519, 520, 1089, 522, 0, 523, + 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, + 534, 535, 0, 537, 0, 538, 539, 0, 540, 541, + 542, 543, 544, 545, 546, 0, 547, 1090, 1091, 0, + 0, 550, 551, 0, 553, 0, 0, 555, 556, 557, + 558, 559, 560, 561, 562, 0, 0, 563, 564, 565, + 566, 567, 0, 0, 568, 569, 570, 571, 572, 0, + 1092, 0, 575, 576, 577, 578, 579, 580, 0, 0, + 581, 0, 0, 582, 583, 584, 585, 586, 587, 1070, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 599, 600, 601, 0, 0, 0, 0, 0, 229, 230, + 231, 232, 233, 234, 235, 236, 0, 237, 238, 239, + 0, 0, 0, 0, 0, 0, 0, 240, 241, 0, + 242, 243, 244, 245, 246, 247, 248, 0, 0, 251, + 0, 0, 0, 254, 255, 256, 257, 258, 259, 0, + 0, 260, 261, 0, 0, 264, 0, 265, 266, 267, + 268, 0, 0, 270, 0, 271, 272, 273, 274, 275, + 276, 277, 278, 279, 0, 280, 281, 282, 283, 284, + 285, 0, 286, 287, 288, 289, 0, 0, 0, 290, + 0, 0, 0, 291, 292, 293, 294, 295, 296, 0, + 0, 299, 0, 300, 0, 301, 302, 303, 304, 305, + 306, 0, 307, 308, 309, 310, 0, 0, 311, 312, + 313, 314, 315, 0, 316, 317, 318, 0, 319, 320, + 321, 0, 322, 323, 324, 325, 0, 327, 328, 329, + 330, 0, 0, 332, 0, 333, 334, 0, 336, 0, + 337, 0, 338, 339, 0, 340, 341, 342, 343, 344, + 0, 345, 0, 0, 0, 348, 349, 0, 350, 351, + 352, 353, 354, 355, 356, 357, 358, 359, 0, 360, + 361, 362, 363, 364, 365, 366, 0, 367, 368, 0, + 370, 371, 372, 373, 0, 0, 0, 0, 0, 377, + 378, 379, 380, 381, 382, 383, 384, 385, 386, 0, + 0, 387, 0, 389, 390, 391, 0, 392, 393, 394, + 0, 0, 395, 396, 397, 398, 399, 400, 401, 402, + 403, 404, 405, 406, 407, 408, 409, 410, 0, 412, + 0, 414, 415, 416, 417, 418, 419, 420, 0, 0, + 423, 0, 424, 425, 426, 427, 0, 0, 429, 0, + 431, 432, 433, 0, 434, 435, 0, 0, 436, 437, + 438, 0, 0, 439, 440, 0, 442, 443, 444, 0, + 446, 447, 448, 449, 450, 451, 452, 453, 454, 0, + 455, 456, 0, 458, 0, 460, 461, 462, 0, 463, + 464, 465, 466, 467, 468, 469, 470, 471, 472, 0, + 474, 475, 476, 477, 0, 478, 479, 480, 481, 482, + 483, 484, 485, 486, 487, 488, 489, 0, 490, 491, + 492, 493, 494, 495, 496, 497, 0, 499, 500, 501, + 502, 503, 504, 505, 506, 507, 0, 508, 509, 510, + 511, 512, 0, 513, 514, 0, 516, 517, 518, 519, + 520, 0, 522, 0, 523, 524, 525, 526, 527, 528, + 529, 530, 531, 532, 533, 534, 535, 0, 537, 0, + 538, 539, 0, 540, 541, 542, 543, 544, 545, 546, + 0, 547, 0, 0, 0, 0, 550, 551, 0, 553, + 0, 0, 555, 556, 557, 558, 559, 560, 561, 562, + 0, 0, 563, 564, 565, 566, 567, 0, 0, 568, + 569, 570, 571, 572, 0, 0, 0, 575, 576, 577, + 578, 579, 580, 0, 0, 581, 0, 0, 582, 583, + 584, 585, 586, 587, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 599, 600, 601 +}; + +static const yytype_int16 yycheck[] = +{ + 6, 919, 0, 44, 637, 0, 0, 8, 51, 0, + 183, 205, 0, 1161, 15, 1441, 947, 23, 711, 25, + 1183, 1568, 936, 29, 36, 797, 21, 848, 34, 35, + 36, 205, 38, 200, 1118, 41, 42, 799, 44, 1088, + 46, 208, 1487, 945, 211, 1503, 22, 951, 859, 749, + 750, 751, 28, 2903, 949, 755, 920, 822, 45, 13, + 821, 1487, 2606, 1076, 1077, 191, 1480, 2534, 1292, 1033, + 806, 1729, 1091, 1086, 1215, 210, 2953, 693, 3058, 2447, + 3354, 2362, 3085, 1979, 628, 0, 2733, 2199, 2200, 224, + 23, 707, 670, 1007, 1633, 1808, 2547, 1011, 670, 18, + 3707, 3661, 1016, 36, 1998, 775, 3308, 1492, 2709, 2426, + 871, 3384, 1026, 3373, 2962, 3401, 0, 3111, 3404, 3113, + 3707, 3703, 716, 4002, 706, 884, 1040, 6, 3635, 919, + 3605, 3759, 185, 691, 3990, 679, 694, 21, 928, 717, + 170, 185, 1600, 1601, 3794, 3985, 3946, 2092, 938, 1022, + 4506, 910, 3641, 0, 2927, 1069, 915, 4622, 2044, 35, + 2046, 0, 1820, 0, 1419, 1038, 42, 1470, 0, 50, + 0, 2163, 0, 0, 0, 0, 2972, 2165, 219, 2855, + 4785, 0, 0, 4457, 0, 191, 192, 193, 194, 3989, + 196, 3371, 2131, 954, 200, 4259, 202, 845, 1911, 205, + 41, 845, 208, 2142, 4826, 211, 3566, 4697, 214, 1594, + 216, 1074, 1075, 219, 3683, 4838, 0, 223, 1366, 225, + 6, 4638, 1085, 4640, 802, 0, 0, 1530, 5061, 869, + 802, 4505, 1245, 1246, 0, 3640, 1621, 3642, 0, 11, + 4130, 53, 39, 5037, 1547, 11, 116, 61, 826, 4739, + 13, 91, 0, 1266, 6, 61, 2537, 1276, 78, 30, + 12, 839, 6, 11, 30, 6, 30, 36, 12, 76, + 910, 15, 16, 5, 4514, 915, 4746, 4747, 43, 11, + 4074, 4075, 30, 4077, 4078, 4079, 4080, 4081, 6, 163, + 33, 61, 169, 30, 12, 175, 1107, 15, 16, 6, + 1000, 13, 1631, 1632, 30, 12, 1433, 116, 2493, 109, + 2495, 37, 6, 6, 2499, 46, 2501, 2502, 12, 12, + 78, 15, 16, 51, 3060, 2510, 2511, 2512, 116, 180, + 6, 6, 44, 6, 123, 6, 12, 12, 6, 12, + 148, 12, 6, 6, 12, 118, 43, 168, 12, 12, + 121, 168, 280, 4003, 168, 61, 6, 148, 168, 192, + 5, 885, 12, 6, 76, 66, 11, 33, 2649, 168, + 2651, 1234, 1235, 6, 170, 116, 6, 1047, 3, 12, + 5, 6, 12, 61, 168, 31, 11, 12, 168, 13, + 5378, 196, 280, 168, 168, 286, 286, 3319, 1261, 6, + 83, 28, 168, 163, 5237, 12, 168, 116, 192, 88, + 261, 78, 3, 70, 311, 6, 78, 192, 192, 1383, + 168, 12, 49, 218, 294, 319, 192, 168, 11, 367, + 192, 13, 142, 284, 5228, 206, 170, 36, 30, 10, + 269, 5063, 13, 152, 192, 37, 396, 1349, 5445, 5446, + 120, 120, 61, 149, 296, 2386, 160, 1361, 350, 187, + 345, 61, 44, 637, 192, 4955, 261, 334, 408, 338, + 442, 4827, 78, 61, 78, 147, 185, 265, 448, 46, + 3537, 116, 88, 828, 61, 4902, 282, 339, 330, 146, + 360, 116, 334, 477, 76, 451, 6, 4298, 367, 339, + 635, 229, 78, 410, 4305, 1554, 641, 491, 165, 1125, + 3567, 13, 88, 410, 688, 367, 168, 489, 474, 654, + 111, 78, 194, 493, 1419, 367, 396, 168, 163, 168, + 30, 1201, 2463, 5366, 340, 5523, 1297, 37, 430, 489, + 354, 408, 44, 213, 213, 374, 431, 454, 282, 26, + 149, 5548, 256, 493, 168, 493, 265, 454, 118, 487, + 261, 207, 370, 491, 1325, 1143, 354, 304, 438, 1163, + 340, 1143, 121, 1189, 76, 370, 336, 220, 1482, 370, + 207, 451, 3318, 1161, 1200, 436, 211, 408, 408, 360, + 386, 396, 3794, 184, 337, 489, 396, 270, 408, 13, + 1216, 489, 493, 493, 474, 137, 5439, 350, 233, 352, + 616, 321, 489, 493, 5236, 489, 622, 3819, 624, 489, + 626, 5226, 628, 621, 630, 362, 621, 621, 393, 443, + 621, 637, 396, 621, 340, 430, 642, 1161, 644, 408, + 1767, 5435, 1220, 432, 372, 651, 61, 212, 1220, 1563, + 408, 377, 1566, 493, 245, 312, 216, 248, 135, 430, + 493, 434, 340, 400, 1537, 402, 1456, 408, 477, 675, + 413, 337, 5505, 679, 717, 848, 493, 489, 684, 4154, + 487, 1374, 688, 3957, 491, 691, 4193, 493, 694, 441, + 4197, 721, 489, 4182, 493, 4585, 393, 5167, 617, 5055, + 1631, 1632, 1633, 489, 710, 265, 437, 3710, 492, 489, + 1574, 282, 1585, 5546, 480, 481, 488, 492, 492, 451, + 761, 716, 485, 493, 3005, 3999, 492, 1629, 1518, 408, + 492, 340, 480, 481, 4094, 5357, 477, 489, 3998, 422, + 340, 408, 474, 744, 492, 489, 408, 5370, 480, 481, + 491, 447, 340, 1401, 730, 761, 732, 1401, 734, 1518, + 2089, 715, 322, 340, 740, 4559, 1344, 358, 425, 4238, + 776, 489, 1344, 485, 1352, 1353, 4181, 971, 4183, 489, + 487, 822, 489, 836, 491, 377, 1949, 493, 1366, 453, + 796, 797, 836, 799, 800, 489, 489, 971, 804, 4779, + 967, 4003, 408, 453, 408, 478, 973, 5297, 1153, 976, + 474, 852, 818, 489, 489, 493, 822, 1638, 489, 5441, + 5310, 489, 828, 1347, 474, 489, 489, 868, 1352, 1353, + 956, 1915, 408, 717, 840, 480, 481, 489, 1478, 489, + 838, 408, 1366, 838, 838, 478, 852, 838, 478, 5266, + 838, 408, 493, 478, 493, 480, 481, 3533, 482, 483, + 484, 485, 868, 2975, 1877, 2977, 2311, 4931, 4048, 1764, + 437, 478, 1956, 4501, 384, 385, 5232, 377, 469, 493, + 886, 430, 5504, 1967, 493, 891, 892, 478, 3205, 3, + 367, 1531, 1525, 493, 3345, 2280, 168, 480, 481, 3695, + 482, 483, 484, 485, 3907, 493, 24, 109, 1548, 480, + 481, 482, 483, 484, 485, 447, 493, 185, 924, 925, + 192, 5411, 38, 838, 275, 340, 3906, 109, 493, 4771, + 261, 116, 5537, 493, 1458, 5209, 29, 109, 177, 2900, + 2932, 947, 948, 2482, 1468, 2933, 861, 300, 829, 300, + 956, 1296, 26, 430, 838, 314, 2211, 5231, 32, 800, + 326, 967, 4942, 804, 26, 971, 121, 973, 109, 6, + 976, 3, 2357, 87, 26, 168, 4938, 2916, 480, 481, + 482, 483, 484, 485, 169, 991, 62, 109, 286, 1852, + 1853, 838, 2953, 110, 70, 5235, 3, 2300, 162, 838, + 116, 838, 5358, 367, 3285, 3286, 838, 1013, 838, 5474, + 838, 838, 838, 838, 1020, 1021, 74, 4817, 2963, 838, + 838, 2907, 838, 261, 10, 95, 140, 13, 487, 70, + 148, 1555, 491, 4620, 1558, 1559, 1042, 1043, 1044, 2586, + 1046, 121, 1048, 1049, 1050, 4025, 3819, 88, 924, 925, + 6, 206, 180, 245, 119, 87, 180, 3979, 44, 300, + 42, 135, 1407, 26, 4714, 4672, 480, 481, 482, 483, + 484, 485, 4659, 135, 6, 266, 2224, 170, 444, 196, + 87, 266, 395, 135, 198, 4672, 275, 350, 26, 368, + 76, 3968, 116, 1997, 32, 281, 334, 3378, 90, 3284, + 85, 4576, 118, 170, 174, 146, 345, 139, 111, 26, + 85, 300, 1118, 121, 1120, 1121, 281, 1817, 431, 382, + 4627, 99, 26, 188, 165, 4632, 206, 5367, 4635, 493, + 489, 2035, 139, 261, 4623, 1054, 489, 2041, 489, 470, + 132, 85, 127, 307, 85, 109, 2195, 1153, 732, 733, + 734, 53, 127, 737, 738, 739, 5136, 233, 2089, 2054, + 5002, 5141, 364, 747, 5020, 1166, 358, 1168, 1163, 1170, + 286, 1172, 135, 1174, 1175, 1176, 5138, 1183, 1184, 451, + 1181, 184, 1188, 127, 1190, 22, 127, 2091, 302, 261, + 2604, 28, 490, 85, 5073, 493, 3308, 135, 206, 177, + 1206, 5057, 1964, 1965, 236, 107, 1212, 5447, 190, 1215, + 489, 5451, 1218, 5053, 396, 408, 4490, 1741, 135, 5019, + 278, 489, 296, 316, 396, 1918, 1232, 149, 149, 236, + 4503, 135, 350, 270, 296, 127, 4496, 354, 281, 430, + 4526, 281, 245, 6, 296, 248, 270, 432, 489, 316, + 4253, 4838, 370, 1296, 270, 396, 5056, 1263, 61, 352, + 334, 416, 1955, 5503, 296, 451, 1959, 1883, 2199, 1851, + 1963, 312, 334, 1966, 396, 430, 111, 2038, 395, 396, + 360, 1897, 334, 261, 477, 1291, 3398, 1293, 1294, 296, + 1296, 456, 110, 367, 1910, 1839, 282, 261, 491, 184, + 489, 4295, 334, 205, 118, 367, 338, 5547, 436, 423, + 1316, 145, 436, 298, 270, 367, 2211, 431, 411, 3, + 434, 275, 1880, 298, 417, 2030, 1908, 5567, 2033, 10, + 5570, 1925, 13, 1386, 1387, 367, 1389, 1895, 270, 1369, + 1898, 169, 1386, 1387, 350, 1389, 300, 4929, 1926, 184, + 430, 1525, 1358, 367, 298, 358, 281, 298, 296, 261, + 245, 477, 1403, 44, 436, 173, 108, 399, 275, 401, + 51, 487, 489, 489, 490, 491, 210, 493, 196, 296, + 284, 88, 1388, 435, 425, 2018, 1392, 1393, 4236, 173, + 4865, 4898, 399, 300, 401, 76, 334, 1403, 1404, 1405, + 1958, 1407, 216, 1961, 1962, 130, 298, 132, 451, 116, + 245, 451, 295, 248, 2176, 453, 401, 334, 327, 451, + 5363, 5364, 430, 451, 1430, 233, 401, 405, 191, 367, + 354, 5059, 116, 179, 338, 339, 474, 200, 360, 360, + 442, 354, 121, 30, 350, 208, 489, 2342, 211, 233, + 367, 265, 286, 145, 356, 158, 135, 401, 261, 1465, + 401, 311, 143, 367, 1470, 493, 469, 1473, 4069, 296, + 4014, 299, 2367, 358, 396, 396, 118, 334, 2396, 493, + 1486, 1487, 4957, 489, 367, 95, 489, 4962, 4963, 1495, + 396, 180, 1498, 192, 480, 481, 482, 483, 484, 485, + 1845, 243, 296, 408, 246, 115, 187, 334, 322, 401, + 367, 192, 4714, 5100, 619, 128, 438, 438, 326, 1525, + 2310, 1527, 5129, 358, 1530, 138, 451, 230, 437, 451, + 451, 30, 280, 2428, 1453, 489, 354, 340, 230, 149, + 367, 1547, 5129, 130, 1550, 373, 165, 1553, 229, 1590, + 275, 2482, 474, 474, 2132, 4828, 4816, 40, 265, 218, + 410, 2456, 2646, 5506, 367, 489, 295, 489, 489, 1575, + 2443, 2020, 261, 367, 216, 321, 489, 395, 396, 5139, + 1164, 265, 489, 1167, 1590, 1169, 270, 1171, 493, 1173, + 424, 336, 400, 1177, 402, 239, 1602, 1603, 1604, 1605, + 1606, 282, 261, 2827, 454, 351, 2396, 296, 713, 119, + 3978, 2376, 2377, 168, 1620, 2380, 400, 3934, 402, 3513, + 428, 169, 296, 265, 1539, 1631, 1632, 1633, 239, 1544, + 309, 130, 171, 2528, 469, 334, 444, 192, 367, 338, + 3187, 2431, 125, 6, 428, 334, 2224, 5234, 239, 12, + 6, 1996, 3969, 1998, 202, 2476, 2477, 2478, 26, 2004, + 334, 3075, 489, 322, 32, 2010, 2011, 2012, 367, 217, + 2543, 3632, 118, 2217, 3635, 2465, 2021, 2022, 188, 227, + 322, 2026, 3794, 296, 145, 30, 791, 2446, 286, 15, + 16, 372, 2308, 2566, 2567, 2568, 2569, 158, 1892, 239, + 1615, 158, 163, 2617, 1619, 2578, 451, 3819, 3893, 1835, + 354, 370, 3897, 3898, 1881, 3900, 338, 1891, 1892, 1393, + 330, 334, 163, 1729, 13, 1731, 3265, 296, 160, 474, + 2603, 5291, 3271, 174, 376, 158, 81, 1743, 1744, 3452, + 163, 295, 2966, 354, 89, 367, 3707, 436, 493, 210, + 360, 192, 451, 408, 200, 399, 284, 1763, 4039, 357, + 4041, 3657, 5036, 354, 432, 334, 4671, 135, 296, 230, + 4773, 430, 117, 230, 4679, 474, 1782, 2542, 317, 130, + 1539, 132, 88, 5370, 428, 1544, 396, 76, 399, 5062, + 222, 472, 1798, 1799, 1800, 1801, 344, 478, 367, 480, + 481, 482, 483, 484, 485, 1811, 334, 230, 399, 453, + 349, 5071, 1818, 367, 1820, 261, 277, 428, 396, 265, + 277, 489, 477, 362, 3209, 286, 1832, 172, 438, 1835, + 296, 87, 164, 1839, 242, 145, 491, 428, 2382, 1845, + 185, 451, 453, 5450, 2018, 489, 295, 3010, 158, 33, + 119, 432, 197, 163, 277, 47, 1615, 5444, 397, 399, + 1619, 296, 453, 5450, 474, 6, 198, 173, 334, 3254, + 4850, 12, 128, 57, 1880, 1881, 2400, 69, 489, 489, + 352, 4803, 138, 451, 2408, 1891, 1892, 2411, 428, 1895, + 196, 4003, 1898, 730, 432, 732, 2596, 734, 489, 334, + 210, 367, 343, 740, 741, 742, 4553, 296, 489, 1915, + 1916, 0, 675, 453, 265, 443, 1922, 13, 1924, 188, + 230, 684, 3380, 2818, 275, 493, 171, 233, 691, 2824, + 1925, 694, 367, 1974, 1935, 239, 1937, 350, 1939, 352, + 1941, 413, 1943, 1949, 5551, 334, 1947, 255, 44, 489, + 1956, 489, 1958, 451, 4948, 1961, 1962, 5230, 1964, 1965, + 5246, 1967, 219, 424, 5551, 410, 170, 277, 1974, 5229, + 2983, 279, 296, 326, 352, 1981, 286, 1989, 367, 285, + 76, 1979, 1988, 1989, 1979, 1979, 1992, 4711, 1979, 4456, + 1996, 1979, 1998, 4274, 4275, 493, 4846, 2003, 2004, 203, + 413, 67, 68, 2696, 2010, 2011, 2012, 3968, 361, 2015, + 334, 2017, 2018, 2019, 2020, 2021, 2022, 2023, 2024, 4666, + 2026, 4668, 2028, 2029, 4475, 360, 2032, 158, 4495, 489, + 4754, 2609, 163, 108, 267, 413, 322, 2609, 383, 453, + 296, 386, 1926, 396, 2050, 2051, 2052, 2053, 885, 335, + 354, 2057, 2058, 3711, 492, 1988, 2062, 2727, 2728, 2065, + 474, 396, 2068, 2069, 2070, 2071, 2072, 2073, 2074, 2075, + 2076, 2077, 2266, 2079, 330, 489, 1995, 363, 334, 2085, + 2086, 2902, 173, 2089, 70, 326, 5359, 2665, 493, 164, + 2096, 444, 2266, 2665, 400, 399, 402, 2264, 5372, 230, + 2267, 2268, 334, 438, 349, 5085, 400, 413, 402, 239, + 355, 367, 5034, 28, 424, 36, 451, 362, 451, 425, + 361, 451, 428, 198, 428, 2131, 314, 360, 4445, 5051, + 116, 2257, 2138, 118, 49, 367, 2142, 2143, 296, 474, + 5143, 474, 233, 265, 474, 413, 277, 2153, 270, 453, + 5000, 242, 397, 354, 489, 396, 2162, 2163, 274, 489, + 493, 444, 2973, 396, 163, 5042, 5088, 5440, 243, 2905, + 2176, 246, 2307, 914, 419, 2699, 334, 2183, 163, 2185, + 338, 10, 383, 2181, 13, 489, 172, 186, 17, 18, + 19, 453, 933, 956, 6, 936, 3359, 3061, 320, 220, + 12, 239, 163, 444, 967, 438, 3369, 242, 489, 367, + 973, 2217, 474, 976, 2226, 200, 2228, 2562, 451, 3766, + 2226, 357, 2228, 3087, 354, 186, 0, 489, 1531, 2862, + 265, 4416, 4193, 4418, 4419, 10, 4197, 4422, 2279, 2245, + 6, 474, 17, 18, 19, 1548, 12, 21, 2224, 5, + 2385, 2257, 2136, 2259, 2260, 11, 489, 490, 2264, 492, + 2266, 2267, 2268, 19, 2270, 163, 2272, 3980, 1786, 399, + 2276, 239, 3062, 2279, 2619, 5549, 261, 51, 5128, 265, + 265, 37, 244, 78, 270, 1048, 1049, 1050, 186, 5211, + 78, 5294, 1810, 88, 2300, 130, 451, 132, 428, 280, + 88, 2635, 2636, 2637, 285, 2311, 3764, 3000, 3766, 400, + 484, 402, 3757, 2319, 2320, 489, 354, 491, 489, 474, + 2326, 156, 6, 453, 1161, 6, 312, 2462, 12, 2335, + 2908, 12, 6, 413, 3265, 2376, 2377, 428, 12, 2380, + 3271, 490, 328, 4001, 493, 5, 2020, 3137, 2797, 2798, + 2356, 11, 3493, 2802, 2028, 2361, 2362, 413, 3743, 489, + 360, 399, 70, 192, 4681, 336, 5, 5, 76, 92, + 2376, 2377, 11, 11, 2380, 239, 2382, 2383, 15, 16, + 88, 2997, 2998, 6, 2908, 214, 354, 3351, 488, 12, + 428, 2840, 2841, 493, 484, 400, 396, 402, 3312, 489, + 2406, 491, 5405, 2409, 488, 3424, 3425, 22, 116, 493, + 118, 185, 3307, 28, 3799, 453, 357, 2810, 10, 2812, + 2813, 13, 257, 258, 259, 260, 2432, 2433, 5350, 264, + 265, 399, 3305, 490, 242, 270, 493, 280, 438, 425, + 275, 2447, 285, 2449, 2450, 910, 489, 2423, 491, 3027, + 915, 489, 44, 282, 2799, 3027, 242, 3681, 3353, 51, + 428, 34, 35, 4991, 172, 4993, 2811, 196, 490, 4997, + 4998, 493, 350, 351, 2480, 2481, 2482, 186, 490, 2153, + 2486, 493, 350, 351, 76, 453, 2492, 5490, 490, 489, + 354, 493, 200, 96, 2500, 244, 487, 2503, 489, 2844, + 491, 2542, 490, 2509, 413, 493, 490, 282, 84, 493, + 1347, 5433, 2518, 4794, 2520, 1352, 1353, 490, 5046, 57, + 493, 489, 257, 258, 259, 260, 357, 490, 2534, 1366, + 493, 2537, 5076, 2539, 3992, 399, 2542, 444, 490, 3155, + 2546, 493, 489, 2549, 2889, 3708, 3709, 490, 350, 351, + 493, 143, 5402, 220, 145, 2561, 2562, 265, 3174, 350, + 351, 3987, 270, 96, 428, 490, 169, 158, 493, 487, + 11, 489, 163, 2579, 4759, 489, 2743, 5499, 490, 2746, + 415, 493, 2749, 2589, 490, 2591, 451, 493, 453, 453, + 2588, 426, 280, 4007, 2548, 187, 5261, 5262, 490, 202, + 192, 493, 4714, 354, 312, 266, 267, 490, 493, 490, + 493, 2737, 493, 2619, 217, 4932, 489, 489, 491, 210, + 328, 1458, 57, 4940, 227, 489, 451, 490, 453, 490, + 493, 1468, 493, 400, 444, 402, 169, 229, 3338, 230, + 2646, 5288, 2648, 2649, 2650, 2651, 475, 476, 477, 478, + 253, 480, 481, 482, 483, 484, 485, 490, 490, 4620, + 493, 493, 5384, 5385, 490, 5515, 4627, 493, 84, 202, + 490, 4632, 442, 493, 4635, 1512, 1513, 280, 47, 3692, + 2686, 471, 239, 3587, 217, 3580, 277, 216, 2862, 490, + 282, 491, 493, 490, 227, 286, 493, 283, 4659, 360, + 475, 476, 477, 478, 283, 480, 481, 482, 483, 484, + 485, 4672, 3477, 3329, 280, 3331, 10, 425, 1555, 13, + 253, 1558, 1559, 17, 18, 19, 490, 163, 4840, 493, + 5580, 2737, 400, 280, 402, 396, 3314, 2743, 3316, 47, + 2746, 344, 3314, 2749, 3316, 39, 471, 490, 490, 3651, + 493, 493, 2758, 2927, 471, 283, 2799, 39, 490, 239, + 2766, 493, 482, 490, 4311, 2771, 493, 216, 490, 490, + 39, 493, 493, 3466, 167, 10, 58, 438, 13, 490, + 372, 492, 17, 18, 19, 490, 3690, 493, 493, 58, + 451, 2797, 2798, 2799, 490, 490, 2802, 354, 493, 490, + 490, 2844, 493, 493, 2810, 2811, 2812, 2813, 451, 44, + 453, 344, 490, 474, 489, 493, 51, 2823, 490, 3397, + 2826, 493, 2828, 57, 490, 3397, 108, 493, 489, 432, + 4198, 490, 4200, 424, 2840, 2841, 168, 490, 2844, 108, + 493, 76, 399, 490, 212, 489, 493, 621, 4293, 490, + 490, 3765, 493, 493, 490, 489, 2862, 493, 2864, 491, + 2866, 294, 2868, 490, 490, 490, 493, 493, 493, 490, + 490, 428, 493, 493, 354, 455, 3492, 4838, 490, 489, + 472, 493, 5349, 2889, 489, 3646, 478, 2893, 480, 481, + 482, 483, 484, 485, 2900, 490, 453, 492, 3793, 192, + 3795, 150, 490, 490, 1741, 493, 493, 2894, 2895, 2896, + 2916, 334, 489, 195, 2957, 130, 491, 132, 2924, 399, + 214, 150, 145, 3818, 3735, 490, 195, 360, 493, 280, + 192, 490, 489, 2939, 493, 158, 490, 4898, 334, 493, + 163, 156, 716, 717, 150, 3840, 490, 2953, 428, 493, + 490, 2957, 187, 493, 2960, 490, 2962, 192, 493, 10, + 280, 243, 13, 396, 246, 150, 17, 18, 19, 490, + 192, 150, 493, 453, 243, 280, 163, 246, 3502, 261, + 490, 490, 334, 493, 493, 36, 150, 210, 282, 3903, + 228, 118, 261, 44, 229, 490, 280, 3003, 493, 3005, + 51, 432, 244, 490, 3010, 438, 493, 230, 490, 489, + 489, 493, 1849, 295, 490, 3879, 490, 493, 451, 493, + 490, 2900, 1859, 493, 1861, 76, 295, 413, 274, 490, + 1867, 3037, 493, 3039, 3040, 3041, 490, 1874, 842, 493, + 844, 474, 257, 258, 259, 260, 444, 282, 490, 264, + 490, 493, 163, 493, 277, 270, 489, 339, 490, 357, + 275, 493, 836, 286, 838, 220, 490, 70, 3889, 1832, + 339, 265, 1835, 490, 2953, 490, 493, 490, 493, 361, + 493, 5042, 490, 490, 490, 493, 493, 493, 490, 39, + 265, 493, 361, 4142, 455, 3544, 3545, 3546, 3547, 381, + 489, 3550, 3551, 3552, 3553, 3554, 3555, 3556, 3557, 3558, + 3559, 3560, 381, 490, 280, 163, 493, 1880, 1881, 490, + 265, 47, 493, 2797, 2798, 47, 490, 490, 2802, 493, + 493, 265, 1895, 418, 3308, 1898, 187, 372, 87, 5100, + 490, 192, 490, 493, 265, 493, 490, 3153, 490, 493, + 490, 493, 490, 493, 490, 493, 490, 493, 296, 493, + 150, 3610, 3611, 214, 215, 444, 2840, 2841, 5129, 2006, + 2007, 490, 490, 444, 493, 493, 2013, 2014, 229, 163, + 315, 475, 476, 477, 478, 150, 480, 481, 482, 483, + 484, 485, 150, 490, 3539, 1958, 493, 489, 1961, 1962, + 415, 424, 680, 489, 441, 308, 489, 150, 2045, 38, + 455, 426, 489, 150, 150, 493, 150, 268, 150, 150, + 150, 490, 150, 150, 163, 150, 150, 150, 706, 3574, + 150, 282, 150, 280, 285, 396, 489, 472, 39, 228, + 475, 476, 477, 478, 163, 480, 481, 482, 483, 484, + 485, 163, 280, 489, 163, 292, 489, 3, 489, 3265, + 212, 489, 489, 10, 487, 3271, 13, 490, 491, 489, + 17, 18, 19, 5234, 3280, 489, 489, 3622, 489, 3285, + 3286, 27, 489, 452, 489, 489, 489, 489, 489, 36, + 489, 489, 489, 489, 489, 3819, 489, 489, 489, 489, + 489, 489, 4465, 489, 39, 489, 4210, 489, 99, 39, + 493, 228, 493, 493, 3320, 3321, 3322, 163, 277, 163, + 275, 372, 367, 66, 408, 2162, 2163, 408, 4232, 354, + 408, 3337, 408, 443, 354, 3951, 3952, 491, 408, 408, + 354, 87, 230, 408, 408, 477, 3387, 408, 88, 354, + 150, 280, 359, 3359, 3360, 225, 4049, 4050, 4051, 4052, + 4053, 124, 408, 3369, 3370, 3371, 408, 270, 408, 3375, + 399, 10, 3378, 431, 13, 280, 350, 275, 17, 18, + 19, 3387, 489, 185, 300, 3383, 408, 2224, 489, 1163, + 408, 88, 124, 493, 140, 296, 4822, 36, 192, 39, + 150, 432, 432, 124, 408, 396, 408, 408, 396, 5370, + 408, 408, 3410, 408, 110, 408, 408, 124, 58, 57, + 57, 472, 408, 408, 475, 476, 477, 478, 408, 480, + 481, 482, 483, 484, 485, 250, 3477, 408, 408, 490, + 10, 284, 493, 13, 408, 3618, 192, 17, 18, 19, + 3456, 408, 198, 319, 1228, 4227, 46, 408, 399, 300, + 408, 300, 408, 408, 46, 214, 36, 214, 108, 493, + 408, 3477, 280, 408, 1248, 490, 214, 3926, 494, 4937, + 455, 214, 2319, 5444, 3490, 963, 214, 3493, 280, 5450, + 214, 214, 280, 280, 2257, 214, 214, 214, 408, 39, + 150, 2264, 489, 418, 2267, 2268, 1280, 28, 280, 3515, + 988, 265, 4426, 116, 150, 150, 150, 3523, 3524, 432, + 3526, 150, 1296, 280, 236, 1003, 265, 275, 3534, 265, + 3536, 4055, 172, 3539, 265, 282, 443, 451, 3544, 3545, + 3546, 3547, 39, 163, 3550, 3551, 3552, 3553, 3554, 3555, + 3556, 3557, 3558, 3559, 3560, 195, 302, 39, 3564, 3565, + 220, 356, 38, 2400, 406, 150, 406, 150, 3574, 432, + 408, 2408, 3578, 3616, 2411, 214, 3582, 408, 489, 150, + 408, 489, 408, 489, 3590, 4218, 2423, 3593, 487, 3595, + 5551, 150, 3635, 489, 4525, 487, 489, 432, 150, 345, + 274, 3607, 408, 243, 3610, 3611, 246, 269, 168, 3615, + 3616, 447, 1386, 1387, 3620, 1389, 3622, 489, 250, 250, + 3794, 261, 13, 3629, 3630, 3631, 3632, 406, 493, 3635, + 3636, 489, 489, 408, 3640, 3641, 3642, 3624, 3625, 3626, + 3627, 3647, 177, 282, 214, 3819, 159, 185, 394, 168, + 410, 185, 210, 218, 370, 295, 493, 490, 281, 3657, + 39, 493, 3657, 3657, 432, 289, 3657, 3673, 493, 3657, + 57, 490, 354, 489, 4290, 218, 432, 423, 270, 218, + 244, 3687, 270, 3689, 489, 431, 408, 413, 434, 444, + 4383, 4384, 357, 4386, 408, 408, 163, 220, 270, 339, + 280, 3707, 3708, 3709, 47, 3711, 39, 376, 265, 350, + 228, 280, 282, 228, 228, 408, 399, 280, 124, 493, + 1198, 361, 3728, 3729, 3730, 3731, 280, 60, 475, 476, + 477, 478, 280, 480, 481, 482, 483, 484, 485, 280, + 334, 381, 367, 186, 408, 364, 4446, 408, 322, 286, + 39, 3757, 214, 3632, 432, 432, 3635, 220, 4374, 275, + 150, 94, 318, 490, 163, 444, 477, 39, 165, 3775, + 397, 275, 319, 364, 489, 150, 150, 150, 4941, 4303, + 489, 275, 265, 4128, 5331, 432, 39, 265, 451, 280, + 280, 220, 163, 39, 183, 2632, 2633, 183, 164, 490, + 487, 2638, 490, 471, 471, 490, 490, 358, 248, 490, + 220, 364, 163, 265, 280, 192, 192, 26, 493, 27, + 192, 154, 192, 32, 192, 455, 175, 493, 3707, 4003, + 408, 489, 168, 247, 493, 451, 475, 476, 477, 478, + 4988, 480, 481, 482, 483, 484, 485, 280, 493, 274, + 3826, 57, 413, 220, 396, 10, 189, 4473, 13, 168, + 444, 168, 2699, 3839, 490, 74, 168, 489, 3874, 4764, + 3544, 3545, 3546, 3547, 292, 490, 3550, 3551, 3552, 3553, + 3554, 3555, 3556, 3557, 3558, 3559, 3560, 220, 490, 44, + 490, 490, 225, 4977, 490, 4979, 51, 490, 493, 301, + 168, 490, 489, 3909, 3578, 475, 476, 477, 478, 490, + 480, 481, 482, 483, 484, 485, 3922, 490, 3924, 128, + 3926, 76, 490, 264, 408, 471, 135, 3933, 291, 138, + 242, 448, 265, 3939, 489, 430, 3610, 3611, 34, 35, + 489, 473, 238, 3949, 489, 489, 448, 477, 280, 438, + 57, 280, 283, 489, 280, 164, 489, 196, 3964, 150, + 489, 408, 3968, 455, 297, 270, 408, 408, 204, 153, + 408, 265, 3978, 150, 2737, 367, 284, 359, 150, 150, + 2743, 3987, 196, 2746, 228, 153, 2749, 280, 143, 198, + 359, 3997, 477, 408, 359, 4001, 432, 153, 3996, 95, + 493, 230, 4008, 4009, 302, 338, 429, 302, 153, 342, + 53, 124, 408, 408, 408, 408, 240, 240, 351, 115, + 5183, 5184, 383, 240, 408, 408, 359, 5175, 408, 354, + 4792, 354, 187, 4039, 367, 4041, 354, 192, 354, 265, + 4673, 150, 4048, 1521, 4218, 367, 379, 46, 408, 408, + 408, 408, 261, 149, 97, 388, 265, 488, 408, 392, + 408, 408, 4883, 490, 490, 214, 275, 214, 490, 2906, + 214, 2908, 214, 490, 229, 284, 180, 4083, 411, 122, + 493, 490, 3, 418, 163, 47, 336, 296, 109, 3968, + 490, 4097, 493, 4726, 2931, 2932, 139, 163, 39, 4715, + 143, 489, 150, 150, 408, 490, 163, 180, 489, 150, + 488, 432, 432, 446, 354, 477, 354, 450, 283, 354, + 354, 164, 4128, 4572, 167, 4131, 490, 282, 337, 338, + 148, 364, 488, 4139, 4140, 4480, 354, 2900, 493, 182, + 148, 487, 4148, 4149, 214, 214, 5077, 4153, 141, 214, + 214, 1925, 214, 4159, 214, 214, 4162, 4163, 367, 214, + 5323, 4167, 4168, 168, 13, 493, 292, 4173, 4174, 4175, + 4176, 4177, 163, 490, 443, 4181, 4182, 4183, 168, 4185, + 4186, 264, 448, 4189, 490, 168, 489, 4193, 474, 490, + 2953, 4197, 177, 490, 493, 0, 437, 4203, 4891, 490, + 405, 489, 489, 493, 341, 1979, 490, 490, 86, 4902, + 163, 418, 4218, 39, 220, 408, 432, 372, 204, 432, + 57, 4227, 150, 399, 489, 4231, 435, 270, 172, 383, + 4236, 4229, 4230, 418, 330, 359, 153, 354, 408, 4251, + 354, 408, 408, 490, 408, 4251, 408, 490, 4254, 334, + 451, 57, 3926, 490, 163, 438, 1734, 489, 399, 76, + 280, 150, 109, 490, 360, 418, 214, 214, 4274, 4275, + 489, 5419, 10, 1751, 214, 13, 5194, 320, 5173, 17, + 18, 19, 214, 218, 199, 2059, 489, 4293, 4981, 408, + 95, 1769, 455, 280, 493, 329, 490, 493, 36, 39, + 396, 278, 4308, 300, 280, 3, 493, 489, 418, 408, + 489, 364, 493, 174, 4193, 490, 109, 472, 4197, 488, + 168, 4297, 214, 478, 168, 480, 481, 482, 483, 484, + 485, 4307, 490, 490, 57, 292, 10, 489, 449, 13, + 145, 449, 438, 17, 18, 19, 442, 1825, 217, 217, + 490, 490, 4358, 158, 489, 451, 490, 493, 163, 490, + 1838, 489, 398, 168, 290, 287, 489, 57, 181, 174, + 490, 275, 177, 1851, 405, 5270, 181, 477, 474, 4385, + 418, 408, 168, 451, 76, 1863, 193, 198, 186, 186, + 270, 270, 57, 489, 4400, 477, 4974, 399, 493, 493, + 70, 408, 150, 153, 408, 210, 490, 2181, 408, 489, + 4988, 214, 408, 123, 170, 4864, 168, 116, 5111, 39, + 432, 192, 275, 432, 39, 230, 489, 364, 4434, 1907, + 1908, 265, 165, 163, 364, 275, 451, 82, 57, 399, + 5140, 451, 39, 168, 4450, 280, 163, 489, 201, 212, + 4456, 283, 168, 437, 489, 380, 489, 4131, 490, 4465, + 490, 300, 217, 489, 4988, 489, 489, 88, 450, 131, + 280, 3308, 277, 490, 4480, 280, 214, 328, 489, 408, + 39, 286, 150, 150, 408, 163, 489, 4493, 489, 4495, + 39, 270, 490, 196, 4492, 3332, 241, 489, 364, 4673, + 489, 489, 150, 109, 5137, 136, 6, 39, 489, 489, + 489, 4185, 490, 10, 447, 490, 13, 284, 418, 378, + 17, 18, 19, 4529, 4869, 490, 378, 57, 39, 79, + 489, 489, 4726, 489, 489, 437, 341, 399, 489, 36, + 4714, 493, 185, 399, 282, 432, 163, 44, 261, 280, + 489, 6, 4726, 399, 51, 157, 490, 455, 4725, 149, + 351, 351, 489, 4908, 70, 283, 4572, 70, 131, 489, + 451, 2049, 10, 436, 451, 13, 489, 437, 489, 76, + 39, 493, 367, 168, 3421, 10, 325, 399, 13, 270, + 136, 396, 17, 18, 19, 4601, 4602, 5175, 198, 4605, + 280, 280, 4769, 489, 364, 39, 44, 5502, 282, 39, + 283, 283, 193, 51, 4620, 489, 170, 4623, 170, 424, + 490, 4627, 493, 448, 489, 57, 4632, 4972, 4973, 4635, + 4636, 408, 4638, 490, 4640, 350, 4642, 4643, 76, 121, + 387, 430, 6, 448, 364, 450, 451, 10, 490, 350, + 13, 4652, 146, 4659, 5103, 4661, 489, 287, 335, 489, + 489, 489, 493, 25, 36, 3502, 4672, 4673, 4674, 493, + 4676, 5566, 270, 489, 149, 168, 408, 288, 79, 350, + 489, 44, 487, 378, 378, 490, 491, 492, 51, 5584, + 187, 191, 451, 451, 170, 192, 170, 1618, 2546, 877, + 200, 201, 1353, 925, 924, 143, 838, 2431, 208, 2908, + 210, 211, 3087, 76, 3793, 2350, 5314, 214, 215, 4725, + 4726, 3768, 2516, 2457, 224, 3299, 5173, 4767, 5419, 3949, + 4822, 4436, 229, 4791, 3004, 2686, 5314, 475, 476, 477, + 478, 4620, 480, 481, 482, 483, 484, 485, 4627, 187, + 5293, 4672, 5097, 4632, 192, 5408, 4635, 5203, 5202, 5334, + 5444, 3008, 3997, 4769, 3982, 5147, 4772, 3940, 2531, 5114, + 2531, 268, 3112, 5118, 3349, 5120, 3788, 920, 4784, 4474, + 4659, 4787, 3965, 2261, 4798, 282, 4792, 2525, 4794, 214, + 3361, 229, 4807, 4672, 5421, 4801, 4837, 2275, 4796, 5584, + 5566, 475, 476, 477, 478, 4784, 480, 481, 482, 483, + 484, 485, 4818, 3307, 2588, 4005, 4822, 5347, 4728, 4825, + 4960, 1777, 4731, 5156, 187, 28, 4058, 4928, 2200, 192, + 4836, 4837, 4838, 5512, 2982, 5077, 4834, 1190, 2316, 4007, + 1823, 5419, 1821, 1982, 282, 1982, 704, 1891, 671, 3241, + 1832, 3818, 1983, 3353, 2456, 5375, 3840, 282, 4864, 5554, + 1437, 4867, 4028, 4869, 2132, 4908, 229, 817, 4030, 3632, + 839, 2143, 3635, 1926, 4655, 372, 4231, 5287, 3687, 2924, + 1326, 2939, 4888, 2179, 1396, 1373, 1395, 2153, 4894, 3650, + 5279, 5122, 4898, 4215, 4182, 1398, 4902, 2178, 4572, 3635, + 4199, 3632, 4908, 4899, 1403, 5100, 5099, 3688, 3632, 5560, + 5392, 4917, 5481, 5269, 1856, 4867, 3582, 4647, 5282, 282, + 5283, 2083, 2867, 10, 2486, 2767, 13, 2865, 2086, -1, + 17, 18, 19, 4939, 372, 4941, -1, -1, -1, -1, + -1, -1, -1, -1, 3707, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 3794, -1, 4838, + -1, 4967, -1, 5137, -1, -1, 4972, 4973, -1, -1, + -1, 4977, 4978, 4979, 4980, 472, -1, -1, 475, 476, + 477, 478, 3819, 480, 481, 482, 483, 484, 485, 3826, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 3839, -1, 5010, -1, -1, -1, -1, 372, + -1, 5017, -1, -1, -1, -1, -1, -1, 39, 4898, + -1, -1, -1, -1, -1, 2799, -1, -1, 5477, 5478, + -1, -1, -1, 5039, 472, -1, 5042, 58, -1, -1, + 478, 2519, 480, 481, 482, 483, 484, 485, -1, -1, + 475, 476, 477, 478, 5052, 480, 481, 482, 483, 484, + 485, -1, -1, -1, 10, -1, -1, 13, -1, -1, + 2844, 17, 18, 19, -1, -1, -1, 3914, 3915, -1, + -1, -1, -1, -1, -1, -1, -1, 108, 109, -1, + -1, 5097, -1, 2867, 5100, 116, -1, 5103, 44, -1, + -1, 5107, -1, -1, -1, 51, -1, -1, 5114, 472, + 2884, -1, 5118, -1, 5120, 478, 5122, 480, 481, 482, + 483, 484, 485, 5129, -1, -1, 2900, 214, 5126, -1, + 76, 5137, -1, -1, 5301, 635, -1, -1, -1, -1, + -1, 641, 5148, -1, -1, -1, -1, -1, 5493, -1, + -1, 172, -1, -1, 654, -1, -1, -1, -1, -1, + -1, -1, -1, 5042, -1, -1, 4003, -1, -1, -1, + 670, -1, -1, -1, 195, 675, -1, 5183, 5184, 2953, + 680, -1, -1, 2957, 684, 685, -1, -1, -1, -1, + 4864, 691, -1, 693, 694, 282, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 3968, 706, 707, 5214, 5376, + 5377, -1, -1, -1, 4888, 5221, -1, 717, 4055, 5225, + -1, 5100, 243, -1, -1, 246, -1, -1, 5234, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 261, 187, -1, -1, 265, 2723, 192, -1, -1, -1, + 5129, -1, -1, -1, 5260, 5261, 5262, -1, -1, -1, + 5266, -1, 2740, 5269, -1, -1, -1, -1, 214, 215, + -1, -1, -1, 5279, 295, -1, 5282, 2755, -1, -1, + -1, 5287, -1, 229, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 5301, 796, 797, -1, -1, + -1, -1, 802, -1, -1, -1, -1, -1, -1, -1, + 5316, -1, -1, -1, -1, -1, -1, 5323, 339, -1, + -1, -1, 268, -1, -1, -1, 826, -1, 828, -1, + -1, -1, -1, -1, -1, -1, 282, -1, -1, 839, + 361, -1, -1, 5349, -1, -1, -1, 0, 5354, -1, + 5348, -1, -1, -1, 5360, 5234, -1, -1, -1, -1, + 381, -1, 383, -1, 5370, 386, -1, -1, -1, -1, + 5376, 5377, 5378, -1, -1, -1, -1, 5375, -1, -1, + 5375, 5375, 5388, -1, 5375, -1, 5392, 5375, 475, 476, + 477, 478, -1, 480, 481, 482, 483, 484, 485, -1, + -1, -1, -1, -1, -1, -1, -1, 5413, -1, -1, + 5453, -1, -1, -1, -1, -1, -1, -1, -1, 5586, + 5587, -1, -1, -1, -1, -1, 372, -1, -1, 5103, + 4193, -1, -1, -1, 4197, -1, -1, -1, 5444, 5445, + 5446, -1, 95, -1, 5450, -1, -1, 947, 948, 949, + -1, -1, -1, -1, -1, 5453, 956, -1, 5453, 5453, + 4297, -1, 5453, 963, -1, 5453, 4303, 967, 489, -1, + 4307, 5477, 5478, 973, -1, -1, 976, -1, -1, -1, + -1, -1, 5488, -1, -1, -1, -1, 5493, 988, -1, + -1, 5370, 145, -1, -1, -1, 4333, 4334, -1, -1, + -1, 4338, 4339, 1003, -1, 158, -1, -1, -1, -1, + 163, -1, -1, -1, -1, 168, -1, 5523, -1, 26, + -1, 174, -1, -1, 177, 32, 472, 5533, 181, 475, + 476, 477, 478, -1, 480, 481, 482, 483, 484, 485, + -1, -1, 5548, -1, -1, 5551, -1, -1, 1048, 1049, + 1050, -1, -1, 3031, 5560, -1, 5554, 210, 5564, 5554, + 5554, -1, -1, 5554, -1, 5444, 5554, 74, -1, -1, + -1, 5450, 3050, -1, -1, -1, -1, 230, -1, -1, + 5586, 5587, -1, -1, -1, -1, -1, -1, 1088, -1, + -1, -1, -1, -1, -1, 5269, 10, -1, -1, 13, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 3383, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 128, -1, -1, 277, 1125, -1, 280, 135, -1, + 44, 138, -1, 286, -1, -1, 3410, 51, -1, -1, + -1, -1, -1, 1143, -1, -1, -1, -1, -1, -1, + -1, 10, -1, 1153, 13, 0, -1, 164, -1, -1, + -1, 1161, 76, -1, -1, -1, -1, 3145, -1, 3147, + -1, -1, 5551, 26, -1, -1, -1, -1, -1, 32, + -1, -1, -1, -1, -1, 44, -1, 4450, 341, 1189, + -1, 198, 51, -1, -1, -1, 201, -1, 1198, 10, + 1200, -1, 13, -1, -1, 210, 17, 18, 19, -1, + -1, -1, -1, -1, 5388, -1, 1216, 76, -1, 224, + 1220, 74, -1, -1, -1, 36, -1, -1, -1, 143, + -1, -1, 1232, 44, -1, -1, -1, -1, -1, -1, + 51, -1, -1, 396, -1, -1, -1, -1, -1, -1, + 95, -1, -1, -1, 261, -1, -1, -1, 265, -1, + 3238, -1, -1, 1263, -1, 76, -1, -1, 275, -1, + -1, 424, -1, 187, -1, 128, -1, 284, 192, -1, + -1, -1, 135, -1, 143, 138, -1, -1, -1, 296, + -1, 1291, -1, 1293, 1294, 448, 1296, 450, 451, -1, + 145, 3279, -1, 5477, 5478, -1, -1, -1, -1, -1, + -1, 164, -1, 158, -1, 229, 1316, -1, 163, -1, + -1, -1, -1, 168, -1, -1, -1, 334, 187, 174, + 337, 338, 177, 192, 487, -1, 181, 490, 491, 492, + -1, -1, 3616, -1, 1344, 198, -1, -1, -1, -1, + -1, -1, 1352, 1353, -1, -1, -1, 4620, 3632, -1, + 367, 3635, -1, -1, 4627, 210, 1366, -1, 282, 4632, + 229, -1, 4635, 4636, -1, -1, 187, 4714, -1, -1, + -1, 192, -1, 3657, -1, 230, -1, -1, 1388, 29, + -1, -1, 1392, 1393, -1, -1, 4659, -1, -1, 3377, + -1, -1, -1, 214, 215, -1, -1, 1407, 261, 4672, + -1, -1, 265, 1413, -1, -1, -1, -1, 229, 1419, + -1, -1, 275, 282, -1, -1, -1, -1, 435, -1, + -1, 284, 277, -1, 3412, 280, -1, 24, 78, -1, + -1, 286, 29, 296, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 268, 372, -1, + -1, -1, 4725, -1, -1, -1, -1, -1, -1, -1, + 110, 282, -1, -1, 285, -1, -1, 64, -1, -1, + 1480, 334, -1, -1, 337, 338, -1, -1, -1, -1, + 77, -1, -1, 133, -1, -1, 341, -1, -1, -1, + -1, -1, -1, -1, 144, 92, 4769, -1, 10, -1, + -1, 13, -1, 372, 367, 17, 18, 19, -1, -1, + -1, 1521, -1, -1, -1, 165, -1, -1, -1, -1, + 170, -1, -1, -1, 36, -1, -1, -1, -1, -1, + 3518, -1, 44, -1, -1, -1, 133, -1, -1, 51, + -1, 396, -1, -1, 1554, -1, -1, 144, 472, -1, + -1, 372, -1, -1, 478, 3543, 480, 481, 482, 483, + 484, 485, -1, -1, 76, 4838, -1, -1, 165, 424, + -1, 221, 435, 170, -1, -1, -1, -1, -1, -1, + -1, 3569, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 242, 448, -1, 450, 451, -1, -1, -1, + -1, -1, -1, 472, -1, -1, 1616, -1, -1, 478, + -1, 480, 481, 482, 483, 484, 485, 3605, -1, -1, + 635, 1631, 1632, 1633, -1, 4898, 641, -1, -1, -1, + -1, -1, 487, -1, -1, 490, 491, 492, -1, 654, + -1, 4988, -1, -1, -1, 242, -1, -1, -1, -1, + -1, 472, -1, -1, 475, 476, 477, 478, -1, 480, + 481, 482, 483, 484, 485, 315, 316, -1, -1, 319, + -1, -1, 493, -1, -1, 187, -1, -1, -1, -1, + 192, -1, -1, -1, 3968, 282, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 345, -1, -1, 348, -1, + -1, -1, 214, 215, 354, -1, -1, -1, -1, -1, + -1, 361, 3996, -1, -1, -1, -1, 229, 315, 316, + -1, -1, -1, -1, 1734, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 390, 1751, -1, -1, 5017, -1, 396, -1, -1, 399, + -1, 348, -1, -1, 1764, -1, 268, 354, -1, 1769, + -1, -1, -1, -1, 361, -1, -1, 364, 418, 5042, + 282, -1, -1, 285, -1, -1, -1, -1, 1788, -1, + -1, -1, -1, -1, -1, -1, 1796, -1, -1, -1, + -1, -1, -1, -1, 444, -1, -1, -1, 1808, 396, + -1, -1, -1, -1, -1, -1, 403, -1, -1, -1, + -1, -1, -1, -1, 411, 1825, -1, -1, 5165, -1, + -1, 418, 1832, -1, -1, 1835, -1, 5100, 1838, -1, + -1, -1, -1, -1, -1, 1845, -1, -1, -1, -1, + -1, 1851, -1, -1, -1, -1, -1, 444, -1, -1, + -1, -1, -1, 1863, -1, -1, 5129, -1, -1, -1, + 372, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 1880, 1881, -1, 1883, 1884, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 1895, -1, 1897, 1898, -1, + -1, -1, -1, -1, 17, -1, -1, 1907, 1908, -1, + 1910, 1911, -1, 26, -1, -1, -1, -1, -1, 4193, + -1, -1, -1, 4197, -1, -1, 1926, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 4229, 4230, -1, 1958, -1, + -1, 1961, 1962, -1, -1, -1, -1, -1, -1, -1, + 472, 5234, -1, 475, 476, 477, 478, 3955, 480, 481, + 482, 483, 484, 485, -1, -1, -1, -1, 26, -1, + -1, 493, -1, -1, 32, -1, 1996, -1, 1998, -1, + -1, -1, -1, 2003, 2004, -1, -1, 45, -1, -1, + 2010, 2011, 2012, -1, -1, 2015, -1, 2017, -1, 2019, + 2020, 2021, 2022, 2023, 2024, -1, 2026, -1, 2028, 2029, + -1, -1, 2032, -1, -1, -1, 74, -1, 5301, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 2049, + 2050, 2051, 2052, 2053, 2054, -1, -1, -1, 2058, -1, + -1, -1, 2062, 39, -1, 2065, -1, -1, 2068, 2069, + 2070, 2071, 2072, 2073, 2074, 2075, 2076, 2077, -1, 2079, + -1, -1, -1, -1, 60, -1, 2086, -1, 126, 2089, + 128, 5354, -1, -1, 3, -1, -1, 135, -1, -1, + 138, 10, -1, -1, 13, -1, -1, 5370, 17, 18, + 19, -1, -1, 5376, 5377, -1, -1, -1, 94, -1, + -1, -1, -1, -1, -1, -1, 164, 36, -1, -1, + 39, -1, 2132, -1, -1, 44, -1, -1, 2138, -1, + -1, -1, 51, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 2153, -1, -1, -1, -1, -1, -1, + 198, -1, 2162, 2163, -1, 5502, -1, 76, -1, -1, + -1, -1, -1, -1, -1, -1, 4154, -1, 154, -1, + -1, 5444, -1, -1, -1, -1, -1, 5450, 2188, -1, + -1, -1, -1, -1, -1, 2195, -1, -1, -1, 2199, + 2200, -1, -1, -1, -1, -1, 2206, -1, -1, -1, + -1, 2211, 2212, 189, -1, -1, 2216, -1, 4492, -1, + -1, -1, -1, 261, 2224, -1, -1, 265, -1, 5566, + -1, -1, -1, -1, -1, -1, -1, 275, -1, -1, + -1, -1, 2242, -1, 220, 2245, 284, 5584, -1, 225, + -1, -1, -1, -1, -1, -1, -1, 2257, 296, -1, + -1, 2261, -1, -1, 2264, -1, -1, 2267, 2268, -1, + -1, -1, -1, -1, -1, 2275, -1, -1, 187, -1, + -1, -1, -1, 192, -1, -1, -1, 2287, 5551, 265, + -1, -1, -1, -1, 4272, -1, 334, -1, -1, 337, + 338, 5564, -1, -1, -1, 214, 215, 2307, 2308, -1, + -1, -1, -1, -1, -1, -1, 2316, -1, -1, -1, + 229, 297, -1, 5586, 5587, -1, -1, -1, -1, 367, + -1, -1, -1, -1, -1, 4313, -1, -1, 2338, 2339, + -1, -1, 2342, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 4627, -1, -1, -1, 4335, 4632, 268, + -1, 4635, 338, -1, -1, 2365, 342, 2367, -1, -1, + -1, 2371, -1, 282, -1, 351, 285, -1, 2378, -1, + -1, -1, -1, 359, -1, 2385, -1, -1, 2388, -1, + -1, 367, -1, -1, 2394, -1, -1, 435, -1, -1, + -1, -1, -1, 379, -1, -1, -1, -1, -1, -1, + -1, -1, 388, -1, 2414, -1, 392, -1, -1, -1, + 2420, -1, -1, -1, -1, 2425, -1, 4405, 2428, -1, + -1, -1, -1, -1, -1, 411, -1, -1, 2438, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 2451, -1, -1, -1, -1, 2456, -1, -1, -1, + -1, -1, 2462, 372, -1, -1, -1, -1, -1, -1, + 446, -1, -1, -1, 450, -1, 10, -1, -1, 13, + 2480, 2481, 2482, 17, 18, 19, 2486, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 36, -1, -1, 618, -1, -1, -1, -1, + 44, -1, -1, -1, -1, -1, -1, 51, 2518, 2519, + -1, -1, 4796, -1, -1, -1, -1, -1, 2528, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 76, -1, -1, -1, -1, -1, -1, 4527, + -1, -1, -1, -1, -1, -1, -1, 670, 671, -1, + 4834, -1, 2562, 472, -1, -1, 475, 476, 477, 478, + -1, 480, 481, 482, 483, 484, 485, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 4576, -1, + -1, 2601, 60, -1, 2604, -1, -1, -1, -1, 2609, + -1, 1616, -1, -1, -1, -1, -1, -1, -1, 2619, + -1, -1, -1, -1, 4898, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 4908, -1, 94, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 764, -1, 187, -1, -1, -1, -1, 192, -1, + -1, -1, -1, -1, -1, 2665, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 790, -1, -1, + 214, 215, -1, -1, -1, 798, -1, -1, 801, 802, + 803, -1, -1, -1, 10, 229, 154, 13, -1, -1, + -1, 17, 18, 19, -1, -1, -1, 2707, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 36, -1, -1, 2723, -1, 2725, -1, -1, 44, -1, + -1, 189, -1, 2733, 268, 51, -1, 2737, -1, -1, + 2740, -1, -1, 2743, -1, -1, 2746, -1, 282, 2749, + -1, 285, -1, -1, 10, 2755, -1, 13, -1, -1, + 76, 17, 18, 19, -1, -1, 2766, 225, 5042, -1, + -1, 2771, -1, -1, -1, -1, -1, -1, 5052, -1, + 36, -1, -1, 1788, 40, -1, -1, -1, 44, -1, + -1, 1796, -1, -1, -1, 51, -1, 2797, 2798, 2799, + -1, -1, 2802, 1808, -1, -1, -1, 265, -1, -1, + 2810, 2811, 2812, 2813, -1, -1, -1, -1, 2818, -1, + 76, -1, -1, 2823, 2824, -1, 2826, -1, 2828, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 372, 297, + 2840, 2841, -1, -1, 2844, -1, -1, -1, -1, -1, + -1, -1, 5126, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 2864, -1, 2866, -1, 2868, 125, + -1, 187, -1, -1, -1, -1, 192, -1, -1, 1884, + 338, -1, 340, -1, 342, -1, -1, 4865, -1, 2889, + -1, -1, -1, 351, -1, -1, -1, -1, 214, 215, + 2900, 359, -1, -1, -1, -1, 1911, -1, 2908, 367, + -1, -1, -1, 229, -1, -1, -1, -1, -1, -1, + -1, 379, -1, -1, 2924, -1, 4904, -1, -1, -1, + 388, 187, -1, -1, 392, -1, 192, -1, 472, 2939, + -1, 475, 476, 477, 478, -1, 480, 481, 482, 483, + 484, 485, 268, 2953, -1, -1, 490, -1, 214, 215, + -1, -1, -1, -1, -1, -1, 282, -1, -1, 285, + -1, -1, 2972, 229, -1, 2975, -1, 2977, -1, 4957, + -1, -1, 2982, -1, 4962, 4963, -1, -1, 446, -1, + -1, -1, -1, -1, -1, -1, -1, 2997, 2998, -1, + -1, -1, -1, 3003, -1, -1, -1, -1, -1, -1, + -1, -1, 268, -1, -1, 26, -1, -1, -1, -1, + -1, 32, -1, -1, 3024, -1, 282, 3027, -1, 285, + 1143, 3031, -1, -1, 45, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 1161, -1, + 3050, -1, -1, -1, -1, -1, 372, -1, -1, -1, + -1, -1, -1, 74, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 5348, 3075, -1, -1, -1, -1, + -1, -1, 1195, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 5078, 5375, -1, -1, -1, -1, -1, 1220, -1, -1, + -1, 3111, 3112, 3113, -1, 126, 372, 128, -1, -1, + -1, -1, -1, -1, 135, -1, -1, 138, -1, -1, + -1, -1, -1, -1, -1, 3135, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 3145, -1, 3147, -1, -1, + -1, -1, -1, 164, -1, 3155, 472, -1, -1, 475, + 476, 477, 478, -1, 480, 481, 482, 483, 484, 485, + -1, -1, 488, -1, 3174, -1, 432, -1, -1, 5453, + -1, -1, -1, 2188, -1, 1298, -1, 198, -1, -1, + -1, -1, -1, -1, 1307, -1, -1, -1, -1, -1, + -1, 2206, -1, -1, -1, -1, -1, 2212, 1321, -1, + -1, 2216, -1, -1, -1, -1, 472, -1, -1, 475, + 476, 477, 478, -1, 480, 481, 482, 483, 484, 485, + 26, 1344, -1, -1, 1347, 1348, 32, 2242, 3238, 1352, + 1353, -1, -1, -1, -1, -1, -1, -1, -1, 45, + 261, -1, -1, 1366, 265, -1, -1, -1, -1, 10, + 3260, -1, 13, -1, 275, 3265, 17, 18, 19, -1, + -1, 3271, -1, 284, -1, -1, -1, -1, 74, 3279, + 5554, -1, 2287, -1, -1, 296, -1, -1, -1, -1, + -1, -1, -1, 44, -1, 5273, -1, -1, -1, -1, + 51, -1, 2307, -1, -1, -1, -1, 3307, 3308, -1, + -1, -1, -1, -1, 3314, -1, 3316, -1, -1, -1, + -1, -1, -1, 334, -1, 76, 337, 338, -1, 3329, + -1, 3331, 128, -1, 2339, -1, -1, -1, -1, 135, + -1, -1, 138, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 3353, -1, -1, 367, -1, -1, -1, + 2365, -1, -1, -1, -1, -1, 2371, -1, 164, -1, + -1, -1, -1, 2378, -1, -1, -1, 3377, -1, -1, + 2385, -1, -1, 2388, -1, -1, -1, -1, -1, 2394, + -1, -1, -1, -1, -1, -1, -1, 3397, 3398, -1, + -1, -1, 198, -1, -1, -1, -1, -1, -1, 2414, + -1, -1, 3412, -1, -1, 2420, -1, -1, -1, 10, + 2425, -1, 13, -1, 435, -1, 17, 18, 19, -1, + -1, -1, -1, 2438, -1, -1, 187, -1, -1, -1, + -1, 192, -1, -1, -1, 36, 2451, -1, -1, -1, + -1, -1, 3452, 44, -1, -1, -1, 2462, -1, 1572, + 51, -1, -1, 214, 215, 261, 1579, -1, -1, 265, + 3470, -1, -1, -1, -1, -1, -1, -1, 229, 275, + -1, -1, -1, -1, -1, 76, -1, -1, 284, -1, + -1, -1, 3492, -1, -1, 3495, -1, -1, -1, -1, + 296, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 3515, -1, 268, 3518, -1, + -1, -1, -1, 3523, 3524, -1, 3526, -1, -1, -1, + -1, 282, -1, -1, 3534, -1, 3536, -1, 334, 3539, + -1, 337, 338, 3543, 3544, 3545, 3546, 3547, -1, -1, + 3550, 3551, 3552, 3553, 3554, 3555, 3556, 3557, 3558, 3559, + 3560, -1, -1, -1, 3564, 3565, -1, -1, -1, 3569, + -1, 367, -1, -1, 3574, -1, -1, -1, 3578, -1, + 3580, -1, 3582, -1, -1, -1, -1, -1, -1, -1, + 3590, -1, -1, 3593, -1, 3595, 187, 26, -1, -1, + -1, 192, -1, 32, -1, 3605, -1, 3607, -1, -1, + 3610, 3611, -1, -1, -1, 3615, 3616, -1, -1, -1, + -1, 372, 3622, 214, 215, -1, -1, -1, -1, -1, + -1, -1, 3632, -1, -1, 3635, -1, -1, 229, 435, + -1, -1, -1, -1, -1, 74, -1, 3647, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 3673, -1, -1, -1, 268, 1791, -1, + -1, -1, 1795, -1, -1, -1, -1, -1, -1, 3689, + -1, 282, -1, -1, 285, 3695, -1, -1, -1, 128, + -1, -1, 2707, -1, -1, -1, 135, 3707, -1, 138, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 2725, 472, -1, -1, 475, 476, 477, 478, 2733, 480, + 481, 482, 483, 484, 485, 164, -1, -1, 3738, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 198, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 372, -1, -1, -1, -1, -1, -1, 3788, -1, + -1, -1, -1, 3793, 3794, 3795, -1, -1, -1, -1, + -1, -1, 26, -1, -1, -1, -1, -1, 32, -1, + -1, -1, -1, 10, -1, -1, 13, -1, 3818, 3819, + 17, 18, 19, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 261, -1, 10, -1, 265, 13, -1, 36, + 3840, 17, 18, 19, -1, -1, 275, 44, -1, -1, + 74, -1, -1, -1, 51, 284, 3856, -1, -1, 3859, + 36, -1, -1, -1, -1, -1, -1, 296, 44, -1, + -1, -1, -1, -1, -1, 51, -1, -1, -1, 76, + -1, 472, -1, -1, 475, 476, 477, 478, -1, 480, + 481, 482, 483, 484, 485, -1, 2009, -1, -1, 490, + 76, -1, -1, -1, 128, 334, -1, -1, 337, 338, + -1, 135, -1, -1, 138, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 3926, -1, -1, -1, + -1, -1, -1, 1093, -1, -1, -1, -1, 367, -1, + 164, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 3951, 3952, 1113, -1, 3955, -1, -1, -1, -1, + -1, 3961, -1, 1123, -1, -1, -1, 1127, 3968, -1, + -1, 1131, -1, 1133, 198, -1, -1, -1, -1, 1139, + 3980, -1, -1, -1, -1, 1145, -1, -1, 1148, -1, + 187, -1, -1, -1, -1, 192, -1, 2110, -1, -1, + -1, -1, -1, 4003, -1, -1, 435, 4007, 4008, 4009, + -1, 187, -1, -1, 8, -1, 192, 214, 215, 3024, + 14, 15, -1, -1, -1, -1, 20, -1, 22, -1, + -1, -1, 229, -1, 28, -1, 30, 261, 214, 215, + -1, 265, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 275, -1, 229, -1, 49, 50, -1, 4058, -1, + 284, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 268, 296, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 4083, -1, 282, -1, -1, 285, -1, + -1, -1, 268, -1, -1, -1, -1, 4097, -1, -1, + -1, -1, -1, -1, -1, -1, 282, -1, -1, 285, + 334, 2224, -1, 337, 338, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 4128, -1, + 3135, 4131, -1, -1, -1, -1, -1, -1, -1, 4139, + 4140, -1, 4142, 367, -1, -1, -1, -1, 4148, 4149, + -1, -1, -1, 4153, 4154, -1, -1, -1, -1, 4159, + -1, -1, 4162, 4163, -1, -1, -1, 4167, -1, -1, + -1, -1, -1, 4173, -1, 372, -1, -1, -1, -1, + -1, 2294, -1, -1, -1, 4185, -1, -1, -1, -1, + -1, -1, -1, 4193, -1, -1, 372, 4197, -1, -1, + -1, -1, -1, -1, 198, -1, -1, -1, -1, -1, + -1, 435, 206, -1, -1, 209, -1, -1, 212, 213, + -1, 215, -1, 217, -1, -1, 220, 4227, 222, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 4254, 3260, -1, -1, -1, -1, + 2373, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 4272, -1, -1, 472, -1, 2390, 475, 476, + 477, 478, -1, 480, 481, 482, 483, 484, 485, -1, + 4290, -1, -1, 490, -1, 4295, 472, -1, -1, 475, + 476, 477, 478, -1, 480, 481, 482, 483, 484, 485, + -1, -1, -1, 4313, 490, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 4330, -1, -1, -1, -1, 4335, -1, -1, -1, -1, + -1, 2454, 4342, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 4358, 10, + -1, -1, 13, -1, -1, -1, 17, 18, 19, -1, + -1, -1, -1, -1, 4374, -1, -1, 2490, -1, -1, + 2493, -1, 2495, -1, -1, 36, 2499, -1, 2501, 2502, + 26, -1, -1, 44, -1, -1, 32, 2510, 2511, 2512, + 51, -1, -1, -1, -1, 4405, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 76, -1, -1, -1, -1, + -1, -1, -1, -1, 4434, -1, -1, -1, 74, -1, + -1, -1, -1, -1, -1, -1, -1, 3452, -1, -1, + 4450, -1, 2565, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 3470, -1, -1, -1, -1, + -1, -1, -1, 4473, -1, -1, -1, -1, -1, -1, + 4480, -1, -1, -1, 2597, -1, -1, -1, -1, -1, + 3495, -1, 128, -1, -1, -1, 2609, -1, -1, 135, + -1, -1, 138, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 4525, -1, 4527, 164, -1, + -1, -1, -1, -1, -1, -1, 187, -1, 26, -1, + -1, 192, -1, -1, 32, -1, -1, -1, -1, -1, + -1, -1, 2665, 4553, -1, -1, -1, -1, -1, -1, + -1, -1, 198, 214, 215, -1, -1, -1, -1, -1, + -1, -1, 4572, -1, -1, -1, 4576, -1, 229, -1, + -1, -1, -1, -1, -1, -1, 74, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 4601, 4602, -1, -1, 4605, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 268, -1, -1, + 4620, -1, -1, -1, -1, 261, -1, 4627, -1, 265, + -1, 282, 4632, -1, 285, 4635, 4636, -1, 632, 275, + 128, -1, 4642, 4643, -1, 639, 640, 135, 284, 643, + 138, 645, 646, -1, -1, -1, 650, -1, -1, 4659, + 296, 4661, -1, -1, -1, -1, 4666, 661, 4668, -1, + -1, 10, 4672, -1, 13, -1, 164, -1, 17, 18, + 19, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 36, 334, -1, + -1, 337, 338, -1, -1, 44, 700, -1, 702, -1, + 198, -1, 51, -1, 4714, 4715, -1, -1, 712, -1, + -1, 372, -1, -1, -1, 4725, 1886, -1, -1, -1, + -1, 367, -1, 3738, 1894, -1, -1, 76, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 744, -1, -1, -1, 1914, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 4764, -1, -1, -1, -1, 4769, + -1, -1, -1, 261, 192, 193, -1, 265, 196, -1, + -1, -1, -1, -1, -1, -1, -1, 275, -1, -1, + -1, -1, -1, -1, -1, 2908, 284, -1, 216, 435, + -1, -1, -1, -1, -1, 223, -1, -1, 296, -1, + -1, -1, -1, 26, -1, -1, -1, -1, -1, 32, + -1, 472, -1, -1, 475, 476, 477, 478, -1, 480, + 481, 482, 483, 484, 485, 829, -1, -1, 4838, 490, + 4840, -1, -1, -1, -1, -1, 334, -1, 187, 337, + 338, 3856, -1, 192, 3859, -1, -1, -1, -1, -1, + -1, 74, -1, -1, 4864, 4865, -1, 4867, -1, 4869, + -1, 865, -1, -1, -1, 214, 215, -1, -1, 367, + -1, -1, -1, -1, -1, -1, -1, -1, 4888, -1, + 229, -1, -1, -1, 4894, -1, -1, -1, 4898, -1, + -1, -1, -1, -1, 4904, -1, -1, -1, 4908, -1, + -1, -1, -1, -1, 3027, 128, -1, -1, -1, -1, + -1, -1, 135, -1, -1, 138, -1, -1, -1, 268, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 282, -1, 939, 285, 435, 4948, -1, + -1, 164, -1, -1, -1, -1, 3961, 4957, -1, -1, + -1, -1, 4962, 4963, -1, -1, 960, 4967, -1, -1, + 2130, -1, 4972, 4973, 4974, 3980, -1, -1, 972, -1, + -1, -1, -1, 977, -1, 198, -1, -1, 4988, -1, + -1, -1, -1, 987, -1, -1, -1, -1, 992, -1, + -1, -1, -1, -1, 3117, -1, -1, 1001, -1, -1, + 5010, -1, 1006, -1, -1, 1009, -1, 5017, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 372, -1, -1, -1, -1, -1, -1, + -1, -1, 5042, -1, -1, -1, -1, -1, 261, -1, + -1, -1, 265, 4058, -1, -1, -1, 1051, -1, 3172, + -1, -1, 275, -1, -1, -1, -1, -1, -1, -1, + -1, 284, -1, 60, -1, -1, -1, 5077, 5078, -1, + -1, -1, -1, 296, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 5097, -1, -1, + 5100, -1, -1, 5103, -1, -1, -1, 94, -1, -1, + -1, -1, -1, -1, 5114, -1, -1, -1, 5118, -1, + 5120, 334, 5122, -1, 337, 338, -1, 3240, -1, 5129, + -1, -1, -1, 472, -1, -1, 475, 476, 477, 478, + -1, 480, 481, 482, 483, 484, 485, -1, 5148, -1, + -1, 490, -1, -1, 367, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 154, -1, -1, + -1, 3284, 1166, 5173, 1168, 5175, 1170, -1, 1172, -1, + 1174, 1175, 1176, -1, -1, 3298, 3299, 1181, -1, -1, + -1, -1, -1, -1, -1, 3308, -1, -1, 1192, -1, + -1, 3314, 189, 3316, -1, -1, 624, -1, 626, -1, + -1, -1, 630, 1207, -1, -1, -1, -1, -1, -1, + -1, -1, 435, -1, -1, 5225, 644, -1, -1, -1, + -1, -1, -1, 651, 5234, -1, -1, -1, 225, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 3362, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 5260, 5261, 5262, -1, -1, -1, -1, -1, -1, 5269, + 5270, -1, -1, 5273, 261, -1, -1, -1, 265, 5279, + -1, -1, -1, 3396, 3397, -1, 10, -1, 5288, 13, + -1, -1, -1, 17, 18, 19, -1, -1, -1, -1, + -1, 5301, -1, -1, -1, -1, -1, -1, -1, 296, + 297, -1, 36, -1, 5314, -1, -1, -1, -1, -1, + 44, -1, -1, -1, -1, 4330, -1, 51, -1, -1, + -1, -1, -1, 10, -1, -1, 13, 4342, -1, -1, + 17, 18, 19, -1, -1, -1, -1, 334, -1, -1, + -1, 338, 76, -1, 5354, 342, -1, -1, -1, 36, + 5360, -1, -1, -1, 351, -1, -1, 44, -1, -1, + 5370, -1, 359, -1, 51, -1, 5376, 5377, 5378, 1373, + 367, -1, -1, -1, -1, -1, -1, -1, 5388, -1, + -1, -1, 379, -1, -1, -1, -1, -1, -1, 76, + -1, 388, -1, -1, -1, 392, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 5419, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 5444, -1, -1, -1, -1, -1, + 5450, -1, -1, -1, 2614, -1, -1, -1, -1, 446, + 1454, -1, 2622, 187, -1, -1, -1, -1, 192, -1, + -1, -1, -1, 891, 892, -1, 3589, 5477, 5478, -1, + -1, -1, 2642, -1, -1, -1, -1, -1, 5488, -1, + 214, 215, 2652, 5493, -1, 2655, -1, 2657, 2658, -1, + -1, 2661, 5502, -1, -1, 229, -1, 2667, -1, 2669, + 187, -1, 2672, -1, -1, 192, -1, -1, -1, 10, + -1, -1, 13, 5523, -1, -1, 17, 18, 19, -1, + -1, -1, 1526, 5533, -1, -1, -1, 214, 215, -1, + -1, -1, -1, -1, 268, 36, -1, -1, 4553, -1, + -1, 5551, 229, 44, -1, -1, -1, -1, 282, -1, + 51, 285, -1, -1, 5564, -1, 5566, -1, 200, 201, + -1, -1, -1, 991, -1, 2735, 208, -1, 210, 211, + -1, -1, -1, -1, 5584, 76, 5586, 5587, -1, -1, + -1, 268, 224, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 1020, 1021, -1, 282, -1, -1, 285, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 1046, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 10, -1, -1, 13, -1, -1, 372, 17, + 18, 19, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 4666, -1, 4668, -1, -1, -1, -1, 36, -1, + -1, -1, -1, -1, -1, -1, 44, -1, -1, -1, + -1, 3794, -1, 51, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 372, 187, -1, -1, -1, + -1, 192, 1120, 1121, -1, -1, 3819, -1, 76, -1, + -1, -1, -1, -1, 3827, -1, -1, -1, -1, 3832, + -1, 3834, -1, 214, 215, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 229, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 472, -1, + -1, 475, 476, 477, 478, -1, 480, 481, 482, 483, + 484, 485, -1, -1, 3877, -1, 490, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 268, -1, 1773, + 3893, -1, -1, -1, 3897, 3898, -1, 3900, -1, -1, + -1, 282, -1, -1, 285, 472, -1, -1, 475, 476, + 477, 478, -1, 480, 481, 482, 483, 484, 485, -1, + -1, -1, -1, 490, -1, -1, -1, -1, -1, 187, + -1, -1, -1, -1, 192, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 60, 214, 215, -1, -1, + -1, -1, -1, 3013, -1, -1, -1, -1, -1, -1, + -1, 229, -1, -1, -1, -1, -1, -1, -1, 60, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 94, + -1, 372, -1, -1, -1, -1, -1, 4000, -1, -1, + 4003, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 268, -1, -1, 94, -1, -1, 1900, -1, 1902, -1, + -1, -1, -1, -1, 282, -1, -1, 285, -1, -1, + -1, -1, -1, -1, -1, 1919, -1, 1921, -1, -1, + -1, -1, -1, -1, -1, -1, 3096, -1, 3098, 154, + -1, 1935, -1, 1937, -1, 1939, -1, 1941, -1, 1943, + -1, -1, -1, 1947, -1, -1, -1, -1, -1, -1, + 4073, 4074, 4075, 154, 4077, 4078, 4079, 4080, 4081, -1, + -1, -1, -1, -1, 189, -1, -1, -1, -1, -1, + -1, 472, -1, -1, 475, 476, 477, 478, -1, 480, + 481, 482, 483, 484, 485, -1, -1, -1, 189, 490, + -1, -1, -1, 635, 372, -1, -1, -1, -1, 641, + 225, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 654, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 225, -1, -1, -1, 670, -1, -1, -1, -1, -1, -1, -1, 261, -1, -1, -1, - -1, -1, -1, -1, -1, 270, 71, -1, -1, -1, - -1, 4575, -1, -1, -1, 1431, 281, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 4595, -1, 4597, -1, -1, -1, -1, 450, -1, - -1, 453, 454, 455, -1, 457, 458, 459, 460, 461, - 462, 463, -1, 318, 1470, -1, 321, 322, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 4633, - -1, -1, -1, -1, -1, -1, 4640, 1493, -1, -1, - -1, -1, -1, -1, 349, -1, -1, 180, -1, -1, - -1, 156, 185, -1, -1, 8, -1, -1, 11, -1, - -1, -1, 15, 16, 17, -1, -1, -1, -1, -1, - -1, -1, -1, 206, 207, 180, -1, -1, -1, 32, - 185, -1, 35, -1, -1, -1, -1, 40, 221, -1, - -1, -1, -1, -1, 47, -1, -1, 1553, -1, -1, - -1, 206, 207, -1, 4708, -1, -1, -1, 413, -1, - -1, -1, -1, -1, -1, -1, 221, 1573, 71, -1, - -1, 254, -1, -1, -1, 4729, -1, -1, -1, -1, - -1, -1, 1588, -1, -1, 268, 4740, -1, 271, -1, - -1, 1597, -1, -1, -1, -1, -1, -1, 1604, 254, - -1, -1, -1, 1609, -1, -1, -1, -1, -1, -1, - -1, 294, -1, 268, -1, -1, 271, -1, -1, -1, - -1, -1, 1628, -1, -1, -1, -1, -1, -1, -1, - 1636, -1, -1, -1, -1, -1, -1, 292, -1, -1, - -1, -1, 1648, -1, -1, -1, -1, -1, 4802, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 1664, -1, - -1, -1, -1, -1, -1, 1671, -1, -1, 1674, -1, - -1, 354, 1678, -1, -1, -1, -1, 180, 1684, -1, - -1, -1, 185, -1, 1690, -1, -1, 370, -1, -1, - -1, -1, -1, -1, -1, -1, 1702, -1, -1, 354, - -1, -1, -1, 206, 207, -1, -1, -1, -1, -1, - -1, 4865, -1, 1719, 1720, -1, 1722, 1723, 221, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 1734, -1, - -1, -1, -1, -1, -1, -1, 1742, 1743, -1, 1745, - 1746, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 254, -1, -1, -1, 1761, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 268, -1, 450, 271, -1, - 453, 454, 455, 4927, 457, 458, 459, 460, 461, 462, - 463, -1, -1, -1, -1, -1, -1, 1793, 4942, -1, - -1, -1, -1, -1, -1, 450, -1, -1, 453, 454, - 455, -1, 457, 458, 459, 460, 461, 462, 463, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 1827, -1, 1829, -1, -1, -1, -1, 1834, 1835, - -1, -1, -1, -1, -1, 1841, 1842, 1843, -1, 4993, - -1, 1847, -1, 1849, 1850, 1851, 1852, 1853, 1854, -1, - 1856, 354, 1858, 1859, 5008, -1, 1862, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 1877, 1878, 1879, 1880, 1881, 1882, -1, -1, -1, - 1886, -1, -1, -1, 1890, -1, -1, 1893, -1, -1, - 1896, 1897, 1898, 1899, 1900, 1901, 1902, 1903, 1904, 1905, - -1, 1907, -1, -1, -1, -1, -1, -1, 1914, -1, - 1916, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 5087, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 450, -1, -1, - 453, 454, 455, -1, 457, 458, 459, 460, 461, 462, - 463, -1, -1, -1, -1, -1, -1, -1, -1, 8, - -1, -1, 11, -1, -1, 5129, 15, 16, 17, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 32, -1, -1, -1, -1, -1, -1, - -1, 40, -1, -1, -1, -1, 8, -1, 47, 11, - -1, -1, -1, 15, 16, 17, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 32, -1, 71, 35, -1, -1, -1, -1, 40, 2045, - -1, -1, -1, -1, -1, 47, -1, -1, -1, -1, - -1, -1, 2058, -1, -1, -1, -1, -1, -1, -1, - 5214, 2067, 2068, -1, -1, -1, -1, -1, -1, 71, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 2092, -1, -1, -1, - -1, -1, -1, 2099, -1, -1, -1, 2103, 2104, -1, - -1, -1, -1, -1, 2110, -1, -1, -1, -1, 2115, - 2116, -1, -1, -1, 2120, -1, -1, -1, -1, -1, - -1, -1, 2128, -1, -1, 8, -1, -1, 11, -1, - -1, -1, 15, 16, 17, -1, -1, -1, -1, -1, - 2146, 180, -1, 2149, -1, -1, 185, -1, -1, 32, - -1, -1, 35, -1, -1, 2161, -1, 40, -1, 2165, - -1, -1, 2168, -1, 47, -1, -1, 206, 207, 22, - -1, 2177, -1, -1, -1, 28, -1, -1, 180, -1, - -1, -1, 221, 185, 2190, -1, -1, -1, 71, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 2208, 2209, 206, 207, -1, -1, -1, -1, - -1, 2217, -1, -1, -1, 254, 69, -1, -1, 221, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 268, - -1, -1, 271, 2239, 2240, -1, -1, 2243, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 288, - -1, -1, 254, -1, -1, -1, -1, -1, -1, -1, - 2266, -1, 2268, -1, -1, -1, 268, -1, 2274, 271, - 123, -1, -1, -1, -1, 2281, -1, 130, -1, 2285, - 133, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 180, -1, 2305, - -1, -1, 185, -1, 2310, 158, -1, -1, 2314, -1, - -1, 2317, -1, -1, -1, 354, -1, -1, -1, -1, - -1, 2327, -1, 206, 207, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 2340, -1, -1, 190, 221, -1, - 8, -1, -1, 11, 2350, -1, -1, 15, 16, 17, - -1, -1, 354, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 32, -1, -1, -1, -1, -1, - -1, 254, 40, -1, -1, -1, -1, -1, -1, 47, - -1, -1, -1, -1, -1, 268, -1, -1, 271, 2395, - 2396, -1, -1, -1, -1, -1, 249, -1, 251, 2405, - -1, -1, -1, 71, -1, -1, -1, -1, 261, -1, - -1, 450, -1, -1, 453, 454, 455, 270, 457, 458, - 459, 460, 461, 462, 463, -1, -1, -1, 281, -1, - -1, -1, -1, 2439, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 450, -1, - -1, 453, 454, 455, -1, 457, 458, 459, 460, 461, - 462, 463, -1, -1, -1, 318, -1, -1, 321, 322, - -1, 354, 2478, -1, -1, -1, 2482, -1, -1, -1, - -1, -1, -1, -1, -1, 2491, -1, -1, -1, -1, - -1, -1, -1, -1, 162, -1, 349, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 180, -1, -1, -1, -1, 185, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 2537, -1, -1, -1, -1, -1, -1, 206, 207, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 265, -1, 684, 685, -1, 1473, -1, -1, -1, 691, + -1, 693, 694, -1, -1, -1, -1, -1, -1, -1, + 261, -1, -1, -1, 265, 707, -1, 3237, -1, -1, + 1498, 296, 297, 3243, -1, 717, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 4214, -1, 4216, 472, 296, 297, 475, 476, 477, + 478, -1, 480, 481, 482, 483, 484, 485, -1, 334, + -1, -1, 490, 338, -1, -1, -1, 342, -1, -1, + -1, -1, -1, -1, -1, -1, 351, -1, -1, -1, + -1, -1, -1, 334, 359, -1, -1, 338, -1, -1, + -1, 342, 367, -1, -1, -1, -1, 1575, -1, -1, + 351, -1, -1, -1, 379, -1, -1, -1, 359, -1, + 802, -1, -1, 388, -1, -1, 367, 392, -1, -1, + -1, -1, -1, -1, 1602, 1603, 1604, 1605, 379, -1, + -1, -1, -1, -1, 826, 2189, 2190, 388, -1, -1, + -1, 392, -1, -1, -1, -1, -1, 839, -1, -1, + -1, -1, -1, -1, 2208, 2209, -1, -1, -1, 2213, + 2214, -1, -1, -1, 2218, -1, -1, -1, -1, -1, + -1, 446, -1, 10, -1, -1, 13, -1, 2232, -1, + 17, 18, 19, -1, -1, 2239, -1, -1, -1, 2243, + 2244, -1, -1, 2247, 2248, 446, -1, -1, -1, 36, + 2254, -1, -1, -1, -1, -1, -1, 44, -1, -1, + -1, -1, -1, -1, 51, 2269, -1, 2271, -1, -1, + 3440, -1, 3442, 5288, 3444, -1, -1, -1, -1, -1, + 4403, 4404, -1, 3453, -1, 2289, -1, -1, -1, 76, + 2294, -1, -1, 4416, -1, 4418, 4419, -1, -1, 4422, + -1, -1, -1, -1, -1, 2309, -1, 949, -1, -1, + -1, -1, -1, -1, 2318, 1743, 1744, 2321, -1, 2323, + 2324, 2325, -1, -1, 3494, 967, 2330, 2331, -1, -1, + -1, 973, -1, -1, 976, 1763, 2340, -1, -1, -1, + -1, 2345, -1, -1, -1, 2349, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 2366, 4486, -1, -1, -1, -1, 2372, 2373, + 1798, 1799, 1800, 1801, -1, 2379, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 2389, 2390, -1, -1, -1, + -1, 2395, -1, -1, -1, -1, -1, -1, -1, -1, + 187, 4524, -1, 2407, -1, 192, 2410, -1, -1, -1, + -1, 2415, -1, -1, -1, -1, -1, 2421, 2422, -1, + -1, -1, -1, 2427, -1, -1, 2430, 214, 215, -1, + 2434, 2435, 2436, 2437, -1, 2439, 4559, -1, -1, -1, + -1, -1, 229, -1, -1, -1, -1, -1, 2452, 2453, + 10, 2455, -1, 13, -1, -1, -1, 17, 18, 19, + -1, -1, 2466, 2467, 2468, -1, -1, -1, 0, -1, + -1, -1, -1, -1, -1, -1, 36, -1, -1, -1, + -1, 268, -1, 1125, 44, -1, -1, -1, 1916, -1, + 22, 51, -1, -1, 1922, 282, -1, -1, 285, -1, + 32, 1143, 34, 35, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 76, -1, 50, 1161, + -1, -1, -1, -1, -1, 2529, -1, 59, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 71, + -1, 73, 74, -1, -1, -1, -1, 1189, 80, -1, + 82, -1, -1, 2557, -1, -1, -1, -1, 1200, -1, + -1, 93, -1, 95, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 1216, -1, -1, -1, 1220, -1, + 112, -1, -1, 115, -1, 372, -1, -1, -1, -1, + -1, 4714, -1, -1, -1, -1, -1, 129, -1, 131, + -1, -1, -1, 135, -1, -1, -1, -1, -1, 141, + -1, -1, -1, -1, -1, -1, -1, 149, -1, 151, + -1, -1, -1, -1, -1, -1, 158, 187, -1, 2057, + -1, -1, 192, -1, -1, -1, 4759, -1, -1, -1, + -1, -1, 174, -1, -1, 4768, -1, -1, -1, -1, + -1, -1, -1, -1, 214, 215, -1, -1, -1, 191, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 229, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 472, -1, -1, 475, 476, + 477, 478, -1, 480, 481, 482, 483, 484, 485, 231, + 232, -1, 1344, 490, -1, 237, -1, -1, 268, -1, + 1352, 1353, -1, -1, -1, -1, -1, 249, -1, -1, + -1, -1, 282, -1, 1366, 285, -1, -1, -1, -1, + -1, 10, -1, -1, 13, 267, -1, -1, 17, 18, + 19, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 2759, -1, 36, -1, -1, + -1, -1, -1, -1, -1, 44, -1, -1, -1, -1, + -1, -1, 51, -1, -1, -1, -1, 1419, 310, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 324, -1, -1, -1, -1, 76, 330, 331, + -1, 333, -1, -1, -1, -1, 338, -1, -1, -1, + -1, 343, 372, -1, 346, -1, -1, -1, -1, -1, + -1, 353, -1, -1, -1, -1, -1, 359, 360, -1, + -1, 2259, 2260, -1, -1, 367, -1, -1, -1, 371, + -1, -1, 2270, -1, 2272, -1, -1, -1, 2276, 381, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 396, 4988, -1, -1, -1, 4992, + -1, -1, -1, 4043, -1, -1, -1, 4047, -1, -1, + -1, -1, -1, -1, 416, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 427, -1, -1, -1, -1, + -1, 433, -1, -1, -1, -1, 438, -1, 187, -1, + -1, -1, 472, 192, -1, 475, 476, 477, 478, 451, + 480, 481, 482, 483, 484, 485, -1, -1, -1, -1, + 490, -1, -1, -1, -1, 214, 215, -1, -1, -1, + -1, -1, 474, -1, -1, -1, -1, -1, -1, -1, + 229, -1, -1, -1, -1, -1, -1, 489, -1, -1, + 492, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 1616, -1, -1, -1, 2406, -1, + -1, 2409, -1, -1, -1, -1, -1, -1, -1, 268, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 282, -1, -1, 285, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 3025, -1, -1, -1, 3029, -1, -1, -1, -1, + -1, 3035, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 3053, + 3054, -1, 5175, -1, 3058, -1, 5179, -1, 5181, 3063, + 3064, 3065, 5185, 5186, 2492, -1, -1, -1, -1, -1, + -1, -1, 2500, -1, -1, 2503, -1, -1, -1, -1, + -1, 2509, 10, -1, -1, 13, -1, -1, -1, 17, + 18, 19, 2520, 372, -1, 3099, 3100, 3101, 3102, -1, + 4270, -1, -1, -1, -1, -1, -1, -1, 36, -1, + -1, -1, -1, -1, -1, -1, 44, -1, -1, -1, + -1, -1, 1764, 51, -1, -1, -1, -1, -1, -1, + -1, -1, 3136, 2561, 3138, 3139, 3140, -1, -1, -1, + -1, -1, -1, -1, 4314, 4315, 1788, -1, 76, -1, + -1, -1, -1, -1, 1796, -1, -1, -1, -1, -1, + -1, 2589, -1, -1, -1, -1, 1808, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 472, -1, -1, 475, 476, 477, 478, + -1, 480, 481, 482, 483, 484, 485, -1, -1, 10, + -1, 490, 13, -1, -1, -1, 17, 18, 19, -1, + 2648, -1, 2650, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 36, 4406, 4407, 1880, 1881, + -1, 1883, 1884, 44, -1, -1, -1, -1, 3252, -1, + 51, -1, -1, 1895, -1, 1897, 1898, 3261, -1, 187, + -1, -1, -1, -1, 192, -1, -1, -1, 1910, 1911, + -1, -1, -1, -1, -1, 76, -1, -1, -1, -1, + -1, -1, -1, -1, 1926, -1, 214, 215, 3292, -1, + -1, -1, -1, -1, -1, -1, 5419, -1, -1, -1, + -1, 229, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 3315, -1, -1, -1, -1, 1958, -1, -1, 1961, + 1962, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 2758, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 268, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 282, -1, -1, 285, -1, -1, + -1, -1, 4532, 3367, -1, -1, 4536, 4537, 3372, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 5502, + -1, -1, 4552, -1, -1, -1, 187, -1, -1, -1, + -1, 192, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 3406, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 2054, 214, 215, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 229, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 5566, 372, 3449, -1, 3451, 201, -1, + -1, -1, -1, -1, -1, -1, -1, 210, -1, -1, + -1, 5584, -1, -1, -1, -1, -1, 268, -1, -1, + -1, 224, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 282, -1, -1, 285, -1, -1, 3491, -1, -1, + 2132, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 472, -1, 2188, 475, 476, 477, + 478, -1, 480, 481, 482, 483, 484, 485, -1, -1, + -1, -1, 490, -1, 2206, -1, -1, -1, -1, 2211, + 2212, 372, -1, -1, 2216, -1, -1, -1, -1, -1, + -1, -1, 2224, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 2242, -1, -1, -1, -1, -1, -1, -1, -1, 3037, + -1, 3039, 3040, 3041, -1, -1, -1, -1, -1, -1, + -1, -1, 2264, -1, -1, 2267, 2268, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 2287, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 2307, 2308, -1, -1, -1, + -1, 472, -1, -1, 475, 476, 477, 478, -1, 480, + 481, 482, 483, 484, 485, -1, -1, -1, -1, 490, + 4860, -1, -1, -1, -1, -1, 2338, 2339, -1, -1, + 2342, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 3714, -1, 3716, -1, -1, 202, -1, -1, -1, 3723, + -1, -1, -1, 2365, -1, 2367, -1, 214, -1, 2371, + -1, -1, -1, -1, -1, 3739, 2378, -1, 225, -1, + -1, 10, -1, 2385, 13, -1, 2388, 3751, 17, 18, + 19, 3755, 2394, -1, -1, -1, -1, -1, -1, -1, + 4930, -1, -1, -1, -1, -1, -1, 36, -1, 3773, + -1, -1, 2414, -1, -1, 44, -1, -1, 2420, -1, + -1, -1, 51, 2425, -1, -1, 2428, 3791, -1, -1, + -1, -1, 3796, -1, -1, -1, 2438, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 76, -1, 2451, + -1, -1, -1, 4983, 2456, -1, -1, 3821, -1, -1, + 2462, 3825, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 3835, 3836, 3837, 3838, -1, -1, -1, -1, -1, + 3844, 3845, 3846, 3847, -1, -1, -1, 3851, 3852, -1, + -1, -1, 3280, 3857, 3858, -1, 3860, 3861, 3862, 3863, + 3864, 3865, 3866, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 3876, -1, -1, -1, 3880, 3881, 3882, 3883, + -1, -1, 635, -1, -1, -1, 2528, -1, 641, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 654, 3906, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 670, 187, -1, + -1, 3925, -1, 192, -1, -1, -1, -1, -1, -1, + -1, -1, 685, -1, -1, -1, -1, -1, -1, -1, + 693, -1, -1, -1, -1, 214, 215, -1, -1, -1, + -1, -1, -1, -1, 707, -1, -1, -1, -1, -1, + 229, -1, -1, -1, 717, -1, -1, 2609, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 10, -1, -1, 13, + -1, -1, -1, 17, 18, 19, -1, -1, -1, 268, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 36, 282, -1, -1, 285, -1, -1, -1, + 44, 4025, -1, 2665, -1, -1, -1, 51, 3456, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 802, + -1, -1, 76, -1, -1, -1, -1, -1, 4062, -1, + -1, -1, -1, -1, -1, 2707, -1, -1, -1, -1, + -1, -1, -1, 826, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 2725, -1, -1, 839, -1, -1, -1, + -1, 2733, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 2743, -1, 372, 2746, -1, -1, 2749, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 616, + -1, -1, -1, -1, -1, 622, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 187, -1, -1, -1, -1, 192, -1, + -1, -1, -1, -1, -1, -1, 2818, -1, -1, -1, + -1, -1, 2824, -1, -1, -1, -1, -1, -1, -1, + 214, 215, -1, -1, -1, -1, 949, -1, -1, -1, + -1, -1, -1, 472, -1, 229, 475, 476, 477, 478, + -1, 480, 481, 482, 483, 484, 485, -1, -1, -1, + -1, 490, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 5403, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 268, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 282, -1, + -1, 285, -1, -1, -1, -1, 2908, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 4280, -1, -1, -1, + 4284, 4285, 4286, 4287, -1, -1, -1, 4291, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 3728, 3729, 3730, 3731, -1, -1, -1, -1, -1, -1, + -1, -1, 799, -1, -1, -1, -1, -1, -1, -1, + -1, 4325, 4326, 4327, 4328, 4329, 10, 4331, 4332, 13, + -1, 818, -1, 17, 18, 19, -1, -1, -1, 4343, + 4344, -1, -1, -1, -1, -1, -1, -1, 372, -1, + -1, -1, 36, 840, -1, 2997, 2998, -1, -1, -1, + 44, -1, -1, -1, -1, -1, -1, 51, -1, -1, + -1, 4375, 1125, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 3024, -1, -1, 3027, -1, -1, -1, -1, + 1143, -1, 76, -1, -1, -1, -1, -1, -1, 886, + -1, -1, -1, -1, -1, -1, -1, -1, 1161, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 1189, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 1200, 472, -1, + -1, 475, 476, 477, 478, -1, 480, 481, 482, 483, + 484, 485, -1, 1216, -1, -1, 490, 1220, -1, 3111, + 3112, 3113, -1, -1, -1, 4479, -1, -1, -1, -1, + -1, 3909, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 3135, -1, -1, 3924, -1, -1, -1, + -1, -1, -1, 187, -1, -1, -1, -1, 192, -1, + -1, -1, -1, 3155, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 1013, -1, -1, -1, + 214, 215, 3174, -1, -1, 4539, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 229, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 1042, 1043, 1044, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 268, -1, -1, -1, -1, -1, + -1, 1344, -1, -1, -1, -1, -1, -1, 282, 1352, + 1353, 285, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 1366, -1, -1, -1, -1, 3260, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 10, -1, -1, 13, -1, 4652, -1, + 17, 18, 19, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 3307, 1419, -1, -1, 36, + -1, -1, 3314, -1, 3316, -1, -1, 44, -1, -1, + -1, -1, -1, -1, 51, -1, -1, 3329, 372, 3331, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 1188, -1, -1, -1, -1, -1, -1, -1, 76, + -1, 3353, 4716, -1, -1, -1, -1, 10, -1, 1206, + 13, -1, -1, -1, 17, 18, 19, -1, 1215, -1, + -1, 4735, -1, -1, -1, -1, 4740, 4741, -1, -1, + -1, -1, -1, 36, -1, -1, 4750, -1, -1, -1, + -1, 44, -1, 4757, -1, 3397, -1, -1, 51, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 76, -1, -1, -1, -1, 472, 4793, + -1, 475, 476, 477, 478, -1, 480, 481, 482, 483, + 484, 485, -1, -1, -1, -1, 490, -1, -1, 4813, + 3452, 4815, -1, -1, -1, -1, -1, -1, -1, -1, + 187, -1, -1, -1, -1, 192, 4830, -1, 3470, -1, + -1, -1, 10, -1, -1, 13, -1, -1, -1, 17, + 18, 19, -1, -1, -1, -1, 4850, 214, 215, -1, + 3492, -1, -1, 3495, 4858, -1, -1, -1, 36, -1, + -1, -1, 229, 1616, -1, -1, 44, -1, -1, -1, + -1, 1358, -1, 51, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 187, -1, -1, -1, 76, 192, + -1, 268, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 282, -1, 1404, 285, 4923, + -1, 214, 215, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 229, -1, 3580, -1, + 4944, -1, -1, -1, -1, -1, 796, 797, -1, -1, + -1, -1, 4956, -1, -1, -1, -1, 4385, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 4400, -1, -1, 268, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 163, -1, -1, -1, 282, + 168, -1, 285, -1, -1, -1, -1, -1, -1, 1486, + -1, -1, -1, -1, -1, 372, 680, -1, 1495, 187, + -1, 1764, -1, -1, 192, -1, -1, 5021, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 706, -1, -1, 1788, 214, 215, -1, -1, + 1527, -1, -1, 1796, -1, -1, -1, -1, -1, -1, + -1, 229, -1, -1, -1, 1808, -1, -1, -1, -1, + -1, -1, -1, 1550, -1, 4493, 1553, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 372, + -1, 5085, -1, -1, -1, -1, -1, -1, -1, -1, + 268, -1, -1, -1, -1, -1, 3738, 947, 948, -1, + -1, -1, -1, -1, 282, 472, -1, 285, 475, 476, + 477, 478, -1, 480, 481, 482, 483, 484, 485, 1606, + -1, -1, -1, 490, -1, -1, -1, -1, -1, -1, + 1883, 1884, -1, 1620, -1, -1, -1, -1, -1, -1, + -1, 5145, -1, -1, 1897, -1, 3788, -1, -1, -1, + -1, 3793, -1, 3795, -1, -1, 5160, 1910, 1911, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 1926, -1, -1, 3818, -1, -1, 472, + -1, -1, 475, 476, 477, 478, -1, 480, 481, 482, + 483, 484, 485, -1, 372, -1, -1, 490, 3840, -1, + 5204, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 3856, 5219, -1, 3859, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 1731, -1, 4674, -1, 4676, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 947, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 963, + -1, -1, -1, -1, 472, 1782, 5300, 475, 476, 477, + 478, 2054, 480, 481, 482, 483, 484, 485, -1, 3951, + 3952, -1, -1, -1, 988, -1, -1, -1, -1, 3961, + -1, -1, -1, -1, 1811, 10, -1, -1, 13, 1003, + -1, 1818, 17, 18, 19, -1, -1, -1, 3980, -1, + 5344, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 36, -1, -1, -1, -1, -1, -1, -1, 44, + -1, -1, -1, -1, -1, -1, 51, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 2132, + -1, -1, 1232, -1, -1, -1, -1, -1, -1, -1, + -1, 76, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 4836, -1, + -1, -1, -1, 1263, 1088, -1, 4058, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 5432, -1, + -1, -1, -1, -1, -1, 2188, -1, 1924, -1, -1, + -1, 1291, -1, 1293, 1294, -1, 1296, -1, -1, -1, + -1, -1, -1, 2206, -1, -1, -1, -1, 2211, 2212, + -1, -1, -1, 2216, -1, -1, 1316, -1, -1, -1, + -1, 2224, -1, -1, -1, -1, -1, 1964, 1965, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 2242, + -1, -1, -1, -1, 1981, -1, -1, -1, -1, -1, + -1, -1, 187, -1, -1, -1, -1, 192, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 1198, -1, -1, -1, -1, 214, + 215, -1, -1, -1, 2287, -1, -1, -1, 1388, -1, + -1, -1, 1392, 1393, 229, -1, -1, -1, -1, -1, + 4978, -1, 4980, -1, 2307, 2308, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 10, -1, -1, 13, -1, + -1, -1, 17, 18, 19, -1, -1, -1, -1, -1, + -1, -1, -1, 268, -1, 2338, 2339, -1, -1, 2342, + -1, 36, -1, -1, -1, -1, -1, 282, 2085, 44, + 285, -1, -1, -1, -1, -1, 51, -1, -1, 2096, + -1, -1, 2365, -1, 2367, -1, -1, -1, 2371, -1, + -1, -1, -1, -1, 309, 2378, -1, -1, -1, -1, + -1, 76, 2385, -1, -1, 2388, -1, -1, -1, -1, + -1, 2394, -1, -1, 2131, -1, -1, -1, 4290, -1, + -1, -1, -1, 4295, -1, 2142, 2143, -1, 680, -1, + -1, 2414, -1, -1, -1, -1, -1, 2420, -1, -1, + -1, -1, 2425, -1, -1, 2428, -1, -1, -1, -1, + -1, -1, -1, -1, 706, 2438, -1, 372, 4330, 2176, + -1, -1, -1, -1, -1, -1, -1, -1, 2451, -1, + 4342, -1, -1, 2456, 389, -1, -1, -1, -1, 2462, + -1, -1, -1, -1, -1, -1, -1, 162, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 4374, -1, -1, -1, -1, -1, -1, 1413, + -1, -1, 187, -1, -1, -1, -1, 192, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 214, + 215, -1, -1, -1, -1, 2528, -1, -1, -1, -1, + -1, 1631, 1632, 1633, 229, -1, 5214, 472, -1, -1, + 475, 476, 477, 478, -1, 480, 481, 482, 483, 484, + 485, -1, -1, -1, -1, -1, 1480, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 268, -1, -1, -1, -1, -1, -1, + -1, 4473, -1, 2320, -1, -1, -1, 282, -1, -1, + 285, -1, -1, -1, -1, -1, -1, 1521, 2335, -1, + -1, -1, -1, -1, -1, -1, 2609, -1, -1, -1, + -1, -1, 307, -1, -1, -1, -1, -1, -1, 2356, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 1554, -1, -1, -1, -1, -1, -1, -1, 5316, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 4553, 2665, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 372, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 963, -1, -1, -1, 2432, 2433, -1, -1, -1, + -1, -1, -1, -1, 2707, -1, -1, 1631, 1632, 1633, + -1, -1, -1, -1, -1, -1, 988, -1, -1, -1, + -1, -1, 2725, -1, -1, -1, -1, -1, -1, 10, + 2733, 1003, 13, -1, -1, 5413, 17, 18, 19, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 36, -1, -1, 39, -1, + -1, -1, -1, 44, -1, -1, -1, 5445, 5446, -1, + 51, -1, -1, -1, 4666, -1, 4668, 472, -1, -1, + 475, 476, 477, 478, -1, 480, 481, 482, 483, 484, + 485, -1, -1, -1, -1, 76, -1, -1, -1, -1, + -1, -1, 2539, -1, -1, -1, -1, -1, -1, -1, + 1734, -1, -1, -1, -1, 2818, 1088, -1, -1, -1, + -1, 2824, -1, 4715, -1, -1, -1, 1751, 10, -1, + -1, 13, -1, 4725, -1, 17, 18, 19, -1, -1, + -1, -1, -1, -1, -1, 1769, -1, -1, -1, -1, + -1, -1, -1, -1, 36, -1, -1, -1, -1, -1, + -1, -1, 44, -1, -1, -1, -1, -1, -1, 51, + 5548, -1, 4764, -1, -1, -1, -1, 4769, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 76, -1, -1, -1, -1, -1, + -1, 1825, -1, 2003, -1, 2908, 187, -1, -1, -1, + -1, 192, -1, -1, 1838, 2015, -1, 2017, -1, 2019, + -1, -1, 2022, 2023, 2024, -1, 1198, 1851, -1, 2029, + 680, -1, 2032, 214, 215, -1, -1, -1, -1, 1863, + -1, -1, -1, -1, -1, -1, -1, -1, 229, -1, + 2050, 2051, 2052, 2053, -1, -1, 706, -1, 2058, -1, + -1, -1, 2062, -1, -1, 2065, -1, -1, 2068, 2069, + 2070, 2071, 2072, 2073, 2074, 2075, 2076, 2077, -1, 2079, + -1, -1, -1, 1907, 1908, -1, 2086, 268, -1, 2089, + -1, -1, -1, -1, 2997, 2998, -1, -1, -1, -1, + -1, 282, -1, -1, 285, 187, -1, -1, -1, -1, + 192, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 3024, -1, -1, 3027, -1, -1, -1, -1, -1, + -1, -1, 214, 215, -1, -1, -1, -1, 2138, -1, + -1, -1, -1, -1, -1, -1, -1, 229, -1, -1, + -1, -1, -1, -1, -1, -1, 4948, -1, 10, -1, + -1, 13, 2162, 2163, -1, 17, 18, 19, -1, -1, + -1, -1, -1, -1, -1, 1347, -1, -1, -1, -1, + -1, -1, 4974, -1, 36, 680, 268, 39, -1, -1, + -1, 372, 44, -1, -1, -1, 4988, -1, -1, 51, + 282, -1, -1, 285, -1, -1, -1, -1, 3111, 3112, + 3113, 706, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 303, -1, -1, 76, 2049, -1, -1, -1, -1, + -1, -1, 3135, -1, -1, -1, -1, -1, -1, -1, + -1, 1413, -1, -1, -1, 2245, -1, -1, -1, -1, + -1, -1, 3155, -1, -1, -1, 2893, -1, -1, -1, + -1, -1, -1, -1, -1, 2089, -1, -1, -1, -1, + -1, 3174, -1, -1, -1, -1, -1, -1, -1, 2916, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 372, 472, -1, -1, 475, 476, 477, 478, -1, 480, + 481, 482, 483, 484, 485, -1, -1, -1, 1480, -1, + -1, -1, -1, 963, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 187, -1, -1, 988, -1, + 192, -1, -1, -1, -1, -1, -1, -1, -1, 1521, + -1, -1, -1, 1003, -1, -1, -1, 3260, -1, -1, + -1, -1, 214, 215, -1, -1, -1, -1, -1, -1, + -1, 2195, -1, -1, -1, 2199, 2200, 229, -1, -1, + -1, 5173, 1554, 5175, -1, -1, -1, -1, -1, -1, + 472, -1, -1, 475, 476, 477, 478, -1, 480, 481, + 482, 483, 484, 485, 3307, -1, -1, -1, -1, -1, + -1, 3314, -1, 3316, -1, -1, 268, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 3329, -1, 3331, -1, + 282, -1, -1, 285, -1, -1, -1, 2261, 1088, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 3353, 2275, -1, -1, -1, -1, -1, -1, -1, 680, + -1, -1, -1, -1, -1, -1, -1, -1, 963, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 5270, -1, + 2480, 2481, 2482, -1, -1, 706, 2486, -1, -1, -1, + -1, -1, 2316, 988, 3397, -1, 5288, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 1003, 5301, + -1, -1, -1, -1, -1, -1, 3153, -1, 2518, -1, + 372, -1, 5314, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 1198, 3452, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 1734, -1, -1, -1, -1, 3470, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 1751, + -1, -1, -1, -1, 5376, 5377, -1, -1, -1, 3492, + -1, -1, 3495, 1088, -1, -1, -1, 1769, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 472, -1, -1, 475, 476, 477, 478, 5419, 480, 481, + 482, 483, 484, 485, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 1825, -1, -1, -1, -1, 2482, -1, + -1, -1, -1, -1, -1, -1, 1838, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 3580, -1, 1851, + -1, -1, -1, 3320, 3321, 3322, -1, -1, -1, -1, + -1, 1863, -1, -1, -1, 2519, -1, -1, -1, -1, + 3337, -1, -1, 1198, -1, -1, 10, -1, -1, 13, + 5502, -1, -1, 17, 18, 19, -1, -1, -1, -1, + -1, -1, -1, 3360, -1, -1, -1, -1, -1, -1, + -1, -1, 36, 3370, 3371, 1907, 1908, -1, 3375, -1, + 44, -1, 963, -1, -1, -1, -1, 51, -1, -1, + 10, -1, -1, 13, -1, -1, -1, 17, 18, 19, + -1, -1, -1, 1413, -1, -1, 2766, 988, -1, -1, + -1, 2771, 76, -1, 5566, -1, 36, 2601, -1, -1, + 2604, -1, 1003, -1, 44, -1, -1, -1, -1, -1, + -1, 51, 5584, -1, 5586, 5587, -1, -1, -1, 2799, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 2810, -1, 2812, 2813, -1, -1, 76, -1, -1, -1, + -1, -1, -1, 2823, -1, -1, 2826, -1, 2828, -1, + 1480, -1, -1, -1, -1, 3738, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 3490, -1, -1, 3493, -1, -1, -1, + -1, -1, -1, -1, 2864, -1, 2866, 1088, 2868, -1, + -1, 1521, -1, -1, -1, -1, -1, 2049, -1, -1, + -1, -1, -1, 187, -1, 3788, -1, -1, 192, -1, + 3793, -1, 3795, -1, -1, -1, -1, -1, -1, 2723, + -1, -1, -1, -1, 1554, -1, -1, -1, 168, -1, + 214, 215, -1, -1, -1, 3818, 2740, -1, 1413, -1, + -1, -1, -1, -1, 2924, 229, -1, 187, -1, -1, + -1, 2755, 192, -1, -1, -1, -1, 3840, -1, 2939, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 3856, 214, 215, 3859, -1, -1, -1, + -1, -1, -1, -1, 268, -1, -1, -1, -1, 229, + -1, -1, -1, -1, -1, -1, -1, 1198, 282, -1, + -1, 285, -1, -1, -1, 1480, -1, -1, -1, -1, + -1, -1, 3629, 3630, 3631, -1, -1, -1, -1, -1, + -1, -1, -1, 3003, -1, -1, -1, -1, 268, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 282, 2195, -1, 285, 1521, 2199, 2200, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 3951, 3952, + -1, -1, -1, -1, -1, -1, -1, -1, 3961, 1554, + -1, -1, -1, -1, -1, -1, -1, -1, 372, -1, + -1, -1, -1, -1, -1, -1, -1, 3980, -1, -1, + -1, -1, -1, -1, 1734, -1, -1, -1, -1, 2261, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 404, 1751, -1, 2275, -1, -1, -1, -1, -1, -1, + -1, -1, 372, -1, -1, -1, -1, -1, -1, 1769, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 2316, -1, -1, -1, 2972, -1, + -1, 2975, -1, 2977, -1, 4058, -1, -1, 2982, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 472, -1, + -1, 475, 476, 477, 478, 1825, 480, 481, 482, 483, + 484, 485, -1, -1, -1, -1, -1, -1, 1838, -1, + -1, -1, 1413, -1, -1, -1, -1, -1, -1, -1, + -1, 1851, -1, -1, -1, -1, -1, 3031, -1, -1, + -1, -1, 472, 1863, -1, 475, 476, 477, 478, -1, + 480, 481, 482, 483, 484, 485, 3050, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 1734, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 3075, -1, -1, -1, -1, 1751, 1907, 1908, 1480, + 10, -1, -1, 13, -1, 3265, -1, 17, 18, 19, + -1, 3271, -1, -1, 1769, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 10, 3922, 36, 13, -1, 39, + -1, 17, 18, 19, 44, -1, 3933, -1, -1, -1, + 1521, 51, -1, -1, -1, -1, -1, -1, -1, -1, + 36, -1, -1, 39, -1, -1, -1, -1, 44, -1, + -1, 3145, -1, 3147, -1, 51, 76, 3964, -1, -1, + 1825, -1, -1, 1554, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 1838, -1, -1, -1, 2519, -1, -1, + 76, -1, -1, -1, -1, -1, 1851, -1, -1, -1, + 3997, -1, -1, -1, -1, -1, -1, -1, 1863, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 4290, -1, -1, + -1, -1, 4295, -1, -1, -1, -1, -1, -1, 2049, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 4048, 1907, 1908, 3238, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 4330, -1, 2601, + -1, -1, 2604, -1, -1, -1, -1, 187, -1, 4342, + -1, 3265, 192, -1, -1, -1, -1, 3271, -1, -1, + -1, -1, -1, -1, -1, 3279, -1, -1, -1, -1, + -1, 187, -1, -1, 214, 215, 192, -1, -1, -1, + -1, 4374, -1, -1, -1, -1, -1, -1, -1, 229, + -1, -1, -1, -1, 3308, -1, -1, -1, 214, 215, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 229, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 1734, -1, 3515, -1, -1, 268, -1, + -1, -1, -1, 3523, 3524, -1, 3526, -1, -1, -1, + 1751, -1, 282, -1, 3534, 285, 3536, 4174, 4175, 4176, + 4177, -1, 268, -1, -1, 2195, -1, -1, 1769, 2199, + 2200, 2723, -1, 3377, 2049, -1, 282, -1, -1, 285, + -1, -1, -1, -1, 3564, 3565, -1, -1, 2740, -1, + 4473, -1, -1, -1, 3398, -1, -1, -1, -1, -1, + -1, -1, 3582, 2755, -1, -1, -1, -1, 3412, -1, + 3590, -1, -1, 3593, -1, 3595, -1, -1, -1, -1, + -1, -1, -1, -1, 1825, -1, -1, 3607, -1, -1, + -1, 2261, -1, -1, -1, 3615, 3616, 1838, -1, -1, + -1, -1, 372, -1, -1, 2275, -1, -1, -1, -1, + 1851, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 1863, -1, -1, -1, 372, 3647, -1, -1, + 4553, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 2316, -1, -1, -1, + -1, -1, -1, 3673, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 1907, 1908, -1, 3689, + -1, -1, -1, -1, 3518, -1, -1, -1, -1, -1, + 2195, -1, -1, -1, 2199, 2200, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 3543, + -1, -1, 472, -1, -1, 475, 476, 477, 478, -1, + 480, 481, 482, 483, 484, 485, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 3569, 472, -1, -1, 475, + 476, 477, 478, -1, 480, 481, 482, 483, 484, 485, + -1, -1, -1, 4666, -1, 4668, 2261, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 2275, 3605, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 680, -1, -1, -1, -1, -1, -1, -1, -1, + 2972, -1, -1, 2975, -1, 2977, -1, -1, -1, -1, + 2982, -1, 4715, -1, -1, 680, -1, 706, -1, -1, + -1, 2316, -1, -1, -1, -1, -1, -1, 2049, -1, + -1, -1, -1, 26, -1, -1, -1, -1, -1, 32, + -1, 706, -1, -1, -1, -1, 39, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 3031, + -1, 4764, -1, -1, -1, 58, -1, -1, -1, 2519, + -1, 3695, -1, -1, -1, -1, -1, -1, 3050, -1, + -1, 74, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 4529, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 3075, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 108, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 128, -1, -1, -1, -1, + -1, -1, 135, -1, -1, 138, -1, -1, -1, -1, + -1, 2601, -1, -1, 2604, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 3794, 164, -1, 3145, 2195, 3147, -1, -1, 2199, 2200, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 10, + -1, -1, 13, -1, -1, 3819, 17, 18, 19, -1, + -1, -1, 195, -1, -1, 198, -1, -1, 4008, 4009, + -1, -1, -1, -1, -1, 36, -1, -1, -1, -1, + -1, -1, -1, 44, 2519, -1, -1, -1, -1, -1, + 51, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 2261, -1, -1, -1, -1, 4948, -1, -1, -1, -1, + 243, -1, -1, 246, 2275, 76, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 3238, -1, 261, -1, + -1, 4974, 265, 2723, 963, -1, -1, -1, -1, -1, + -1, -1, 275, 4083, -1, 4988, -1, -1, -1, -1, + 2740, 284, -1, -1, -1, 2316, -1, 4097, 963, 988, + -1, -1, 295, 296, -1, 2755, 2601, 3279, -1, 2604, + -1, -1, -1, -1, 1003, -1, -1, -1, -1, -1, + -1, -1, -1, 988, -1, -1, -1, -1, -1, -1, + -1, 3955, -1, -1, -1, 4772, 3308, -1, 1003, 4139, + 4140, 334, -1, -1, 337, 338, 339, -1, 4148, 4149, + 4787, -1, -1, 4153, -1, 4792, -1, -1, -1, 4159, + -1, -1, 4162, 4163, -1, -1, 187, 4167, 361, -1, + -1, 192, -1, 4173, 367, -1, -1, -1, -1, 4003, + -1, 4818, -1, 4007, -1, -1, -1, -1, 381, -1, + -1, -1, -1, 214, 215, -1, -1, -1, -1, 1088, + -1, -1, -1, -1, -1, 3377, -1, -1, 229, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 1088, -1, -1, 3398, 4227, 2723, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 3412, -1, 435, -1, -1, 2740, -1, 268, -1, -1, + -1, -1, -1, -1, 4254, -1, -1, -1, -1, -1, + 2755, 282, -1, -1, 285, -1, -1, -1, -1, -1, + 5173, -1, 5175, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 2519, -1, + -1, -1, 4939, -1, -1, -1, -1, -1, -1, 1198, + -1, -1, -1, -1, -1, -1, -1, -1, 4142, -1, + -1, -1, 2972, 680, -1, 2975, -1, 2977, -1, -1, + 4154, -1, 2982, 1198, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 3518, -1, -1, 706, + -1, 372, -1, -1, -1, -1, -1, -1, 4358, -1, + -1, -1, -1, -1, -1, -1, -1, 5270, -1, -1, + -1, 3543, -1, -1, -1, -1, -1, -1, -1, -1, + 2601, 3031, -1, 2604, -1, 5288, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 3569, -1, -1, + 3050, -1, 5039, -1, -1, -1, -1, -1, -1, -1, + -1, 5314, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 3075, -1, -1, -1, -1, + -1, -1, -1, 3605, 4434, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 4272, -1, + -1, 472, -1, -1, 475, 476, 477, 478, -1, 480, + 481, 482, 483, 484, 485, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 2972, -1, -1, + 2975, -1, 2977, -1, -1, -1, -1, 2982, -1, 4313, + -1, -1, -1, -1, -1, 3145, -1, 3147, -1, -1, + -1, -1, 2723, -1, -1, -1, -1, -1, -1, -1, + -1, 4335, -1, -1, -1, -1, 5419, -1, -1, 2740, + -1, -1, -1, 3695, 1413, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 2755, -1, 3031, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 1413, -1, + -1, -1, -1, -1, -1, 3050, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 3075, 4405, -1, -1, -1, -1, -1, -1, 3238, -1, + -1, 1480, -1, -1, -1, -1, -1, -1, -1, 5502, + 24, 4601, 4602, -1, -1, 4605, 963, -1, -1, -1, + -1, -1, -1, -1, -1, 1480, -1, 41, -1, -1, + -1, -1, 3794, -1, -1, -1, -1, -1, -1, 3279, + -1, 988, 1521, -1, -1, -1, -1, -1, -1, -1, + 64, -1, 4642, 4643, -1, -1, 1003, 3819, -1, -1, + 3145, -1, 3147, 77, -1, -1, 1521, -1, 3308, -1, + -1, 4661, -1, 5566, 88, 1554, -1, -1, 92, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 5584, -1, -1, -1, -1, 110, -1, -1, 1554, + -1, -1, 116, -1, -1, -1, -1, -1, -1, -1, + -1, 4525, -1, 4527, -1, -1, -1, -1, -1, 133, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 144, -1, -1, -1, -1, -1, -1, 3377, -1, 153, + -1, 1088, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 165, -1, 3238, -1, -1, -1, -1, 3398, 173, + -1, 2972, 4576, 177, 2975, -1, 2977, -1, -1, -1, + -1, 2982, 3412, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 196, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 3955, 3279, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 233, + 3031, -1, -1, 3308, -1, -1, -1, -1, 242, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 3050, + -1, 4003, -1, -1, -1, 4007, -1, -1, -1, -1, + -1, 1198, -1, -1, -1, 1734, -1, -1, -1, -1, + -1, -1, -1, -1, 3075, -1, -1, -1, 282, -1, + -1, 285, 1751, -1, -1, -1, -1, 4867, 3518, 1734, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 1769, 305, 3377, -1, -1, -1, 1751, -1, -1, -1, + 4714, -1, -1, 3543, 4894, 319, -1, -1, -1, -1, + -1, -1, 326, 3398, 1769, -1, -1, -1, 4908, -1, + -1, -1, -1, -1, -1, -1, -1, 3412, -1, 3569, + -1, 345, -1, -1, 3145, -1, 3147, -1, -1, -1, + 354, -1, -1, -1, -1, -1, 1825, 361, -1, -1, + 364, -1, -1, -1, -1, -1, -1, -1, -1, 1838, + -1, -1, -1, -1, -1, 3605, -1, -1, -1, 383, + 1825, -1, 1851, -1, -1, -1, 390, 4967, -1, -1, + 4142, -1, 396, 1838, 1863, 399, 400, -1, 402, 403, + -1, -1, 4154, -1, -1, -1, 1851, -1, -1, 413, + -1, -1, -1, -1, 418, -1, -1, -1, 1863, -1, + -1, 425, -1, -1, 428, -1, -1, 431, -1, -1, + 5010, -1, -1, -1, -1, -1, 4840, 3238, 1907, 1908, + 444, -1, -1, 3518, -1, -1, -1, -1, -1, -1, + -1, 29, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 4865, 1907, 1908, -1, 3695, -1, -1, 3543, -1, + -1, -1, -1, -1, -1, -1, 1413, -1, 3279, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 3569, -1, -1, -1, -1, 77, + 4904, -1, -1, -1, -1, -1, -1, 3308, -1, -1, + -1, -1, -1, -1, 92, -1, -1, -1, -1, -1, + 4272, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 3605, -1, 110, -1, -1, -1, -1, -1, 116, -1, + -1, -1, 5122, 1480, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 4957, -1, 133, -1, -1, 4962, 4963, + -1, 4313, -1, -1, 3794, -1, 144, -1, 5148, -1, + -1, -1, -1, -1, -1, 153, 3377, -1, -1, -1, + 2049, -1, -1, 4335, 1521, -1, -1, 165, -1, 3819, + -1, -1, 170, -1, -1, -1, -1, 3398, -1, 177, + -1, -1, -1, -1, 2049, -1, -1, -1, -1, -1, + -1, 3412, -1, -1, -1, -1, -1, 1554, 196, -1, + 3695, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 221, -1, 5225, -1, -1, -1, -1, + -1, -1, -1, 4405, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 242, -1, -1, -1, -1, -1, + -1, -1, -1, 5077, 5078, -1, -1, -1, -1, -1, + 5260, 5261, 5262, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 5279, + -1, -1, -1, -1, 282, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 3518, -1, 3794, + -1, -1, -1, -1, -1, 3955, 2195, 305, -1, -1, + 2199, 2200, -1, -1, -1, -1, -1, 315, 316, -1, + -1, 319, 3543, -1, 3819, -1, 26, -1, -1, -1, + 2195, -1, 32, -1, 2199, 2200, -1, -1, -1, 39, + -1, -1, -1, -1, -1, -1, -1, 345, 3569, -1, + 348, -1, -1, 4003, 352, 4527, 354, 4007, 58, -1, + 5360, -1, -1, 361, -1, -1, 364, -1, -1, -1, + -1, -1, 2261, -1, 74, -1, -1, 1734, 5378, -1, + -1, -1, -1, -1, 3605, 383, 2275, -1, -1, -1, + -1, -1, 390, -1, 1751, -1, 2261, 395, 396, -1, + -1, 399, -1, -1, 4576, 403, -1, -1, 108, -1, + 2275, -1, 1769, -1, -1, 413, -1, -1, -1, -1, + 418, -1, -1, -1, -1, -1, -1, 2316, 128, -1, + -1, -1, -1, 431, -1, 135, -1, -1, 138, -1, + -1, -1, -1, -1, -1, -1, 444, -1, -1, 5273, + -1, 2316, -1, -1, -1, -1, -1, -1, -1, -1, + 3955, -1, -1, -1, 164, -1, -1, -1, 1825, -1, + -1, -1, -1, 24, 3695, -1, -1, -1, 29, -1, + -1, 1838, -1, -1, -1, -1, -1, -1, 5488, -1, + -1, -1, 4142, -1, 1851, 195, -1, -1, 198, -1, + -1, -1, -1, -1, 4154, -1, 1863, -1, 4003, -1, + -1, -1, 4007, 64, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 5523, -1, -1, 77, -1, -1, -1, + -1, -1, -1, 5533, -1, -1, -1, -1, -1, -1, + -1, 92, 4714, 243, -1, -1, 246, -1, -1, -1, + 1907, 1908, -1, -1, -1, -1, -1, -1, -1, 110, + -1, 261, -1, -1, -1, 265, -1, -1, -1, -1, + -1, -1, -1, 3794, -1, 275, -1, -1, -1, -1, + -1, -1, 133, -1, 284, -1, -1, -1, -1, -1, + -1, -1, -1, 144, -1, 295, 296, -1, 3819, -1, + -1, -1, 153, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 165, -1, -1, -1, -1, 170, + -1, -1, 4272, -1, -1, -1, 177, -1, -1, -1, + 2519, -1, -1, -1, 334, -1, -1, 337, 338, 339, + -1, -1, -1, -1, -1, 196, -1, 4142, -1, -1, + -1, -1, -1, -1, 2519, -1, -1, -1, -1, 4154, + -1, 361, -1, 4313, -1, -1, -1, 367, 4840, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 381, -1, -1, -1, 4335, -1, -1, -1, -1, + -1, 242, 2049, 4865, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 2601, -1, -1, 2604, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 282, 4904, -1, 3955, 435, 2601, -1, -1, 2604, + -1, -1, -1, -1, 295, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 305, 4405, -1, -1, -1, -1, + -1, -1, -1, -1, 315, 316, -1, -1, 319, -1, + -1, -1, -1, -1, -1, -1, -1, 4272, -1, -1, + -1, -1, 4003, -1, -1, 4957, 4007, -1, -1, -1, + 4962, 4963, -1, -1, 345, -1, -1, 348, -1, -1, + -1, 352, -1, 354, -1, -1, -1, -1, -1, -1, + 361, -1, -1, 364, -1, -1, -1, -1, 4313, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 383, -1, 2723, -1, -1, -1, 2195, 390, + 4335, -1, 2199, 2200, -1, 396, -1, -1, 399, -1, + -1, 2740, 403, -1, -1, -1, -1, -1, 2723, -1, + 411, -1, 413, -1, -1, -1, 2755, 418, -1, -1, + -1, -1, -1, -1, -1, 2740, 24, 4527, -1, -1, + 431, 29, -1, -1, -1, -1, -1, -1, -1, -1, + 2755, -1, -1, 444, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 2261, -1, 5078, -1, -1, -1, + 4405, -1, -1, -1, -1, -1, 64, -1, 2275, -1, + -1, 4142, -1, -1, -1, -1, 4576, -1, -1, 77, + 78, -1, -1, 4154, -1, -1, -1, -1, -1, -1, + 88, -1, -1, -1, 92, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 2316, + -1, -1, 110, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 133, -1, -1, -1, -1, + -1, -1, -1, 1308, -1, -1, 144, -1, -1, -1, + -1, -1, -1, -1, -1, 153, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 165, -1, -1, + -1, -1, 170, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 4527, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 196, -1, + -1, 4272, -1, -1, -1, 1370, -1, -1, -1, -1, + -1, -1, -1, -1, 4714, -1, -1, -1, -1, -1, -1, -1, -1, 221, -1, -1, -1, -1, -1, -1, - 413, -1, -1, -1, -1, -1, -1, 450, -1, 2575, - 453, 454, 455, -1, 457, 458, 459, 460, 461, 462, - 463, -1, -1, -1, -1, 2591, 254, 2593, -1, -1, - -1, -1, -1, -1, -1, 2601, -1, -1, -1, 2605, - 268, -1, 2608, 271, 8, 2611, -1, 11, -1, -1, - -1, 15, 16, 17, -1, 2621, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 2632, -1, 32, -1, - -1, 2637, -1, -1, -1, -1, 40, -1, -1, -1, - -1, -1, -1, 47, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 2662, 2663, 2664, -1, - -1, 2667, -1, -1, -1, -1, -1, 71, -1, 2675, - 2676, 2677, 2678, -1, -1, -1, -1, 2683, -1, -1, - -1, -1, 2688, 2689, -1, 2691, 354, 2693, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 2705, - 2706, -1, -1, 2709, -1, -1, -1, 22, -1, -1, - -1, -1, -1, 28, -1, -1, -1, 2723, -1, 2725, - 35, 2727, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 54, - -1, -1, 2748, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 2759, 69, 2761, 2762, 2763, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 2776, -1, -1, 2779, -1, -1, 180, -1, -1, -1, - -1, 185, 450, -1, 2790, 453, 454, 455, 103, 457, - 458, 459, 460, 461, 462, 463, -1, -1, -1, 2805, - -1, -1, 206, 207, -1, -1, -1, -1, 123, -1, - -1, -1, -1, 2819, -1, 130, -1, 221, 133, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 2838, -1, -1, 2841, -1, 2843, -1, -1, - -1, -1, 2848, 158, -1, -1, -1, -1, -1, -1, - 254, -1, -1, -1, -1, -1, -1, 2863, 2864, -1, - -1, -1, -1, 2869, 268, -1, -1, 271, -1, -1, - -1, -1, 187, -1, -1, 190, -1, -1, -1, -1, - -1, -1, -1, -1, 2890, -1, -1, 2893, -1, -1, - -1, 2897, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 2914, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 235, -1, -1, 238, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 2939, 249, -1, 251, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 261, -1, -1, -1, - 354, -1, -1, -1, -1, 270, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 280, 281, -1, 2974, 2975, - 2976, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 384, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 2998, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 3008, 318, 3010, -1, 321, 322, 323, -1, - -1, -1, 3018, -1, -1, -1, -1, -1, -1, -1, - -1, 197, 198, -1, -1, -1, -1, 3033, 343, -1, - 206, -1, -1, -1, 349, -1, -1, -1, -1, -1, - -1, -1, -1, 219, -1, -1, 450, -1, 363, 453, - 454, 455, -1, 457, 458, 459, 460, 461, 462, 463, - 8, -1, -1, 11, -1, -1, -1, 15, 16, 17, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 32, 3091, -1, 35, -1, -1, - -1, -1, 40, -1, -1, -1, -1, -1, 413, 47, - -1, -1, -1, -1, -1, 3111, -1, -1, -1, 8, - -1, -1, 11, 3119, -1, -1, 15, 16, 17, -1, - -1, -1, -1, 71, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 32, -1, -1, 3142, -1, -1, -1, - -1, 40, -1, 3149, 3150, -1, -1, -1, 47, -1, - 3156, -1, 3158, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 3171, -1, 3173, -1, -1, - -1, -1, 71, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 3195, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 3219, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 3236, 3237, 180, -1, -1, -1, -1, 185, -1, -1, - -1, -1, -1, -1, 3250, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 206, 207, - -1, -1, -1, 198, -1, -1, -1, -1, -1, -1, - -1, 206, -1, 221, -1, -1, -1, -1, 3284, -1, - -1, 180, -1, -1, 219, -1, 185, -1, -1, -1, - -1, -1, -1, -1, 3300, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 254, 206, 207, -1, - -1, -1, -1, -1, -1, -1, 3322, -1, -1, 3325, - 268, -1, 221, 271, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 3343, -1, -1, - 3346, -1, -1, -1, -1, 3351, 3352, -1, 3354, -1, - -1, -1, -1, -1, 3360, 254, 3362, -1, -1, 3365, - -1, -1, -1, 3369, 3370, 3371, 3372, 3373, -1, 268, - 3376, 3377, 3378, 3379, 3380, 3381, 3382, 3383, 3384, 3385, - 3386, -1, -1, -1, 3390, 3391, -1, -1, -1, 3395, - -1, -1, -1, -1, 3400, -1, -1, -1, 3404, -1, - 3406, -1, 3408, -1, -1, -1, 354, 583, -1, -1, - -1, 3417, 8, 589, 3420, 11, 3422, -1, -1, 15, - 16, 17, -1, -1, 3430, 3431, 602, -1, 3434, 3435, - -1, -1, -1, 3439, 3440, -1, 32, -1, -1, -1, - 3446, -1, 618, -1, 40, -1, -1, -1, -1, -1, - 3456, 47, -1, 3459, -1, 354, -1, 633, 634, -1, - -1, -1, -1, -1, -1, 641, 3472, -1, -1, -1, - -1, -1, 3478, 3479, 3480, 71, -1, -1, 654, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 664, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 3506, -1, 450, -1, -1, 453, 454, 455, -1, 457, - 458, 459, 460, 461, 462, 463, 3522, -1, -1, -1, - -1, -1, 3528, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 3540, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 450, -1, -1, 453, 454, 455, -1, 457, 458, - 459, 460, 461, 462, 463, 3571, -1, -1, -1, -1, - -1, -1, -1, 749, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 180, -1, -1, -1, -1, 185, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 206, 207, -1, -1, -1, 3621, -1, -1, -1, -1, - 3626, 3627, 3628, -1, -1, 221, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 3650, 3651, -1, -1, 583, -1, - -1, -1, -1, -1, 589, -1, -1, -1, 254, -1, - -1, -1, -1, 3669, -1, -1, -1, 602, -1, -1, - -1, -1, 268, -1, -1, 271, -1, -1, 3684, -1, - -1, 3687, -1, 618, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 634, - -1, -1, -1, -1, -1, -1, 641, 20, -1, -1, - -1, -1, 25, -1, -1, -1, -1, -1, -1, 654, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 664, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 3749, -1, -1, 59, -1, -1, -1, - -1, -1, -1, -1, -1, 931, -1, -1, 354, 72, - 73, -1, -1, -1, -1, -1, -1, -1, 3774, 3775, - 83, -1, 3778, -1, 87, -1, -1, -1, 3784, -1, - -1, -1, -1, -1, -1, 3791, -1, -1, -1, -1, - -1, -1, 105, -1, -1, -1, -1, 3803, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 749, 128, -1, -1, -1, -1, - -1, -1, 3828, 3829, 3830, -1, 139, -1, -1, -1, - -1, -1, -1, -1, 147, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 159, -1, -1, -1, - -1, 164, -1, -1, 450, -1, -1, 453, 454, 455, - -1, 457, 458, 459, 460, 461, 462, 463, -1, 3875, - -1, -1, -1, -1, -1, 188, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 3896, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 213, -1, -1, 3909, -1, -1, -1, -1, -1, -1, - 1086, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 234, -1, -1, 1100, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 3940, -1, -1, -1, -1, -1, - -1, 1117, -1, -1, 3950, 3951, -1, 3953, -1, -1, - -1, -1, 3958, 3959, -1, 268, -1, 3963, 3964, -1, - -1, -1, 3968, -1, -1, 3971, 3972, -1, -1, 1145, - 3976, -1, -1, -1, -1, -1, 3982, 290, -1, -1, - 1156, -1, -1, -1, -1, -1, -1, 300, 3994, -1, - 303, -1, -1, -1, -1, 1171, 4002, -1, 1174, -1, - 4006, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 4019, -1, -1, 329, -1, 4024, -1, - -1, 334, -1, 336, 4030, -1, -1, -1, -1, -1, - 343, -1, -1, 346, -1, -1, -1, -1, 4044, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 365, -1, -1, -1, -1, -1, 371, -1, - -1, -1, -1, 376, 4070, -1, 379, -1, -1, -1, - 383, -1, -1, -1, -1, -1, -1, 390, -1, 392, - -1, -1, 4088, -1, 397, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 4105, - -1, -1, -1, -1, 4110, -1, -1, -1, -1, 422, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 4126, 1297, -1, -1, -1, -1, -1, -1, -1, 1305, - 1306, -1, -1, -1, -1, -1, 4142, -1, -1, 1315, - -1, 4147, -1, -1, -1, -1, -1, -1, 4154, -1, - -1, 1086, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 4170, 1100, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 4181, -1, -1, -1, -1, - -1, -1, 1117, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 1372, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 4212, -1, -1, -1, - 1145, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 1156, -1, -1, -1, -1, -1, -1, -1, -1, - 4236, -1, -1, -1, -1, -1, 1171, -1, -1, 1174, - -1, -1, -1, -1, 4250, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 4273, -1, -1, - -1, -1, -1, -1, 4280, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 4321, -1, 4323, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 4345, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 4361, -1, -1, -1, 4365, - -1, -1, 1297, -1, 4370, -1, -1, -1, -1, -1, - 1305, 1306, -1, -1, -1, -1, -1, 1553, -1, -1, - 1315, -1, 4388, 4389, -1, -1, 4392, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 4407, -1, -1, -1, -1, -1, -1, 4414, -1, - -1, -1, -1, 4419, -1, -1, 4422, 4423, -1, -1, - -1, -1, -1, -1, 4430, 4431, -1, -1, 1604, -1, - -1, -1, -1, -1, -1, -1, -1, 1372, -1, -1, - -1, -1, 4448, -1, 4450, -1, -1, -1, -1, 4455, - -1, 4457, 1628, -1, -1, 4461, -1, -1, -1, -1, - 1636, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 1648, 25, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 4499, 4500, -1, -1, -1, -1, -1, - -1, -1, -1, 4509, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 72, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 87, -1, -1, -1, 4545, - -1, -1, -1, 1719, 1720, 4551, 1722, 1723, -1, -1, - -1, -1, -1, 105, -1, -1, -1, -1, 1734, 111, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 1745, - 1746, -1, -1, -1, -1, -1, 128, -1, -1, -1, - -1, -1, -1, -1, -1, 1761, -1, 139, -1, -1, - -1, -1, -1, -1, -1, 147, -1, -1, -1, -1, - -1, 4607, -1, -1, -1, -1, -1, 159, -1, -1, - -1, -1, 164, -1, 4620, -1, 4622, 1793, 1553, 171, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 188, -1, -1, -1, - 4646, 4647, -1, 4649, -1, 4651, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 213, -1, -1, -1, 4671, -1, -1, -1, 1604, - -1, 4677, -1, -1, -1, 4681, -1, -1, -1, -1, - -1, 4687, 234, -1, -1, -1, 4692, -1, -1, -1, - -1, -1, -1, 1628, -1, -1, -1, -1, -1, -1, - -1, 1636, -1, -1, -1, -1, 1882, -1, -1, -1, - -1, -1, -1, 1648, -1, -1, 268, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 4733, -1, -1, - -1, -1, -1, -1, -1, 4741, -1, -1, 290, -1, - 4746, 4747, -1, -1, -1, 4751, -1, -1, 300, -1, - -1, 303, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 4769, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 329, -1, -1, - -1, -1, 334, -1, 336, -1, -1, 1722, 1723, -1, - -1, 343, 4798, -1, 346, -1, -1, -1, -1, 1734, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 1745, 1746, -1, 365, -1, -1, 4822, -1, -1, 371, - -1, -1, -1, 375, 376, -1, 1761, 379, -1, -1, - -1, 383, -1, -1, -1, -1, -1, -1, -1, -1, - 392, -1, -1, -1, -1, 397, -1, -1, -1, -1, - -1, 4857, 4858, -1, -1, -1, -1, 409, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 422, -1, 4878, -1, -1, 4881, -1, -1, 4884, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 4895, - -1, -1, -1, -1, 4900, -1, 4902, -1, 4904, -1, - -1, -1, -1, -1, -1, -1, 4912, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 2092, -1, -1, -1, - -1, -1, -1, -1, 4930, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 2110, -1, -1, -1, -1, 2115, - 2116, -1, -1, -1, 2120, -1, -1, 1882, -1, -1, - -1, -1, 2128, -1, -1, -1, 4962, -1, 4964, -1, - -1, -1, -1, -1, -1, 629, -1, -1, -1, -1, - 2146, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 743, 744, -1, -1, -1, -1, 653, - -1, -1, 2168, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 5014, -1, - -1, -1, -1, -1, 2190, -1, -1, 5023, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 2208, 2209, -1, -1, -1, -1, -1, -1, - -1, -1, 5048, 5049, -1, -1, -1, -1, -1, -1, - 5056, 5057, -1, -1, 5060, -1, -1, -1, -1, -1, - 5066, -1, -1, 2239, 2240, -1, -1, 2243, -1, 5075, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 5088, -1, -1, -1, -1, -1, -1, -1, - 2266, -1, 2268, -1, -1, -1, -1, -1, 2274, -1, - -1, -1, -1, -1, -1, 2281, -1, -1, -1, 2285, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 2305, - -1, -1, -1, 5139, 2310, -1, -1, -1, 2314, 5145, - -1, 2317, -1, -1, -1, -1, -1, -1, 5154, -1, - -1, 2327, -1, -1, 5160, 5161, 5162, 2092, -1, -1, - -1, -1, -1, -1, 2340, 5171, -1, -1, -1, -1, - -1, -1, -1, -1, 2350, 2110, -1, -1, -1, -1, - 2115, 2116, 5188, -1, -1, 2120, -1, -1, -1, -1, - -1, -1, -1, 2128, -1, -1, 5202, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 2146, -1, -1, -1, -1, -1, -1, -1, -1, - 5226, -1, -1, -1, -1, -1, -1, -1, -1, 2405, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 5253, 5254, -1, - -1, -1, -1, -1, -1, 2190, -1, -1, -1, -1, - -1, -1, -1, 927, -1, -1, -1, -1, -1, -1, - -1, -1, 5278, 2208, 2209, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 950, -1, -1, 5295, - -1, -1, -1, -1, -1, 5301, -1, -1, -1, -1, - -1, 965, -1, -1, 2239, 2240, 2482, -1, 2243, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 5325, - -1, 5327, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 2266, -1, 2268, -1, -1, 5342, 5343, 5344, 2274, - -1, -1, -1, -1, -1, -1, 2281, -1, -1, -1, - 2285, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 2537, -1, -1, -1, -1, -1, -1, -1, -1, - 2305, -1, -1, -1, -1, 2310, -1, -1, -1, 2314, - -1, -1, 2317, -1, -1, 1049, -1, -1, -1, -1, - -1, -1, 2327, -1, -1, -1, -1, -1, -1, 2575, - -1, -1, 20, -1, -1, 2340, -1, 25, -1, -1, - -1, -1, -1, -1, -1, 2350, -1, 2593, -1, 37, - -1, -1, -1, -1, -1, 2601, 1186, -1, -1, -1, - -1, -1, -1, -1, -1, 2611, -1, -1, -1, -1, - -1, 59, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 72, -1, 1216, -1, -1, -1, - -1, -1, -1, -1, -1, 83, -1, -1, -1, 87, - 2405, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 1244, 1245, 1246, 105, -1, 1249, - 1154, -1, -1, 111, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 2683, -1, 1269, - 128, -1, -1, 2689, -1, -1, -1, -1, -1, -1, - -1, 139, -1, -1, -1, -1, -1, -1, -1, 147, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 159, -1, -1, -1, -1, -1, 2482, -1, 167, - -1, 629, -1, 171, 1314, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 188, -1, -1, -1, -1, 653, -1, -1, -1, -1, - -1, -1, 1342, -1, -1, -1, 1346, 1347, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 2776, -1, 2537, -1, -1, -1, -1, 225, -1, -1, - -1, -1, -1, -1, -1, -1, 234, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 1300, -1, -1, -1, - 2575, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 268, -1, -1, 271, -1, -1, -1, -1, 2593, -1, - -1, -1, -1, -1, -1, -1, 2601, -1, -1, -1, - -1, -1, 290, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 303, -1, 2863, 2864, -1, - -1, -1, 310, -1, -1, -1, -1, -1, -1, -1, - -1, 1365, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 329, -1, -1, 2890, -1, -1, 2893, 336, -1, - -1, -1, -1, -1, -1, 343, -1, -1, 346, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 365, 2683, -1, - -1, -1, -1, 371, 2689, -1, -1, -1, 376, -1, - -1, 379, 380, -1, 382, 383, -1, 1431, -1, -1, - -1, -1, -1, -1, 392, -1, -1, -1, -1, 397, - -1, -1, -1, -1, -1, 403, -1, -1, 406, -1, - -1, 409, -1, -1, -1, -1, -1, -1, 2974, 2975, - 2976, -1, -1, -1, 422, -1, 1470, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 2998, -1, -1, -1, -1, -1, -1, 1493, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 2776, 3018, -1, -1, -1, -1, -1, -1, 927, - -1, -1, -1, -1, -1, -1, -1, 3033, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 950, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 965, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 1573, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 1588, -1, -1, -1, 2863, 2864, - -1, -1, -1, 1597, -1, 3111, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 1609, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 2890, -1, -1, 2893, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 1049, -1, 3149, -1, -1, -1, -1, -1, -1, - 3156, -1, 3158, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 3171, -1, 3173, -1, -1, - 1664, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 1678, -1, -1, -1, -1, 3195, - -1, -1, -1, -1, -1, -1, 1690, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 1702, 2974, - 2975, 2976, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 3236, -1, -1, 2998, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 1834, -1, 1154, -1, 1742, 1743, - -1, -1, -1, 3018, -1, -1, -1, 1847, -1, 1849, - -1, -1, 1852, 1853, 1854, -1, -1, -1, 3033, 1859, - -1, -1, 1862, -1, -1, -1, -1, -1, 3284, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 1878, 1879, - 1880, 1881, -1, -1, 3300, -1, 1886, -1, -1, -1, - 1890, -1, -1, 1893, -1, -1, 1896, 1897, 1898, 1899, - 1900, 1901, 1902, 1903, 1904, 1905, 3322, 1907, -1, 3325, - -1, -1, -1, -1, 1914, -1, 1916, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 3111, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 1877, 3149, -1, -1, -1, -1, -1, - -1, 3156, -1, 3158, -1, -1, -1, -1, -1, -1, - 3406, -1, -1, -1, -1, -1, 3171, -1, 3173, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 3195, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 2045, -1, 1365, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 3236, -1, -1, 629, -1, -1, 2067, 2068, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 653, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 3284, - -1, -1, -1, 1431, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 3300, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 3322, -1, 2149, - 3325, -1, 1470, -1, -1, 3571, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 1493, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 2099, -1, -1, -1, 2103, - 2104, -1, -1, -1, -1, 3621, -1, -1, -1, -1, - 3626, -1, 3628, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 629, -1, -1, - -1, 3406, -1, -1, 3650, -1, -1, -1, -1, -1, + -1, 4576, -1, 2972, -1, -1, 2975, -1, 2977, -1, + -1, -1, 4313, 2982, 242, -1, -1, -1, -1, -1, + -1, 5273, -1, -1, -1, -1, -1, 2972, -1, -1, + 2975, -1, 2977, -1, 4335, -1, -1, 2982, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 282, -1, -1, -1, -1, -1, + -1, -1, 3031, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 305, -1, -1, + -1, 3050, 2519, -1, -1, -1, 3031, 315, 316, -1, + -1, 319, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 4405, 3050, 3075, -1, -1, -1, + 4840, -1, -1, -1, -1, -1, -1, 345, -1, -1, + 348, -1, -1, -1, 352, -1, 354, -1, -1, -1, + 3075, -1, -1, 361, -1, 4865, 364, -1, -1, 4714, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 383, -1, -1, -1, -1, + -1, -1, 390, -1, 2601, -1, -1, 2604, 396, -1, + -1, 399, -1, -1, 4904, 403, 3145, -1, 3147, -1, + -1, -1, -1, 411, -1, 413, -1, -1, -1, -1, + 418, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 3145, -1, 3147, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 444, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 4527, 4957, -1, -1, + -1, -1, 4962, 4963, -1, -1, -1, -1, -1, -1, + -1, -1, 1637, -1, -1, -1, 1641, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 4840, -1, -1, -1, 3238, + -1, -1, -1, -1, -1, 4576, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 2723, -1, -1, -1, + 4865, -1, -1, 3238, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 2740, -1, -1, -1, -1, -1, -1, + 3279, -1, -1, -1, -1, -1, -1, -1, 2755, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 4904, + -1, -1, -1, -1, 3279, -1, -1, -1, -1, 3308, + -1, -1, -1, -1, -1, -1, -1, -1, 5078, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 3308, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 4957, -1, -1, -1, -1, 4962, 4963, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 3377, -1, + -1, -1, -1, 4714, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 3398, + -1, -1, 3377, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 3412, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 3398, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 3412, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 5078, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 2972, -1, -1, 2975, 4840, + 2977, -1, -1, 5273, -1, 2982, -1, -1, -1, 3518, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 4865, -1, -1, -1, -1, -1, + -1, -1, -1, 3518, 3543, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 3031, -1, -1, -1, 3543, -1, + 3569, -1, -1, 4904, -1, -1, 2001, -1, -1, -1, + -1, -1, -1, 3050, -1, -1, -1, -1, -1, -1, + -1, 2016, -1, -1, 3569, 2020, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 3605, -1, 3075, 2034, + -1, 2036, 2037, -1, 2039, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 4957, -1, -1, -1, + 3605, 4962, 4963, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 2084, + -1, -1, -1, -1, -1, -1, -1, -1, 5273, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 3145, -1, + 3147, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 3695, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 653, -1, 3669, -1, 1573, -1, -1, -1, -1, - -1, 2165, -1, -1, -1, -1, -1, -1, 3684, -1, - 1588, 3687, -1, 2177, -1, -1, -1, -1, -1, 1597, + 3695, -1, -1, -1, 2149, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 2161, -1, -1, -1, + -1, 2166, -1, -1, -1, -1, -1, 5078, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 1609, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 2217, -1, -1, -1, -1, -1, -1, + -1, 3238, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 3794, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 1664, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 3774, 3775, - 1678, -1, 927, -1, -1, -1, -1, -1, 3784, -1, - -1, -1, 1690, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 1702, 950, -1, 3803, -1, -1, - -1, -1, -1, -1, -1, 2395, 3571, -1, -1, -1, - 965, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 3279, -1, -1, -1, -1, -1, -1, 3794, + 3819, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 1742, 1743, -1, -1, -1, -1, + -1, 3308, -1, -1, 3819, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 3621, -1, -1, -1, - -1, 3626, -1, 3628, -1, -1, -1, -1, -1, 3875, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 3650, -1, -1, -1, -1, - -1, -1, -1, -1, 1049, -1, -1, -1, -1, -1, - -1, -1, 2396, -1, 3669, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 3684, - -1, -1, 3687, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 927, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 950, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 1877, - -1, -1, -1, 965, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 2478, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 1154, - -1, -1, -1, -1, -1, -1, -1, -1, 1916, 3774, - 3775, -1, -1, -1, -1, -1, -1, -1, -1, 3784, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 3803, -1, - -1, -1, 2632, -1, -1, -1, -1, 2637, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 1049, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 2664, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 2675, -1, 2677, 2678, -1, - -1, -1, -1, -1, -1, -1, -1, 2591, 2688, 4105, - -1, 2691, -1, 2693, 4110, -1, -1, -1, -1, -1, - 3875, -1, -1, -1, 2608, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 2621, -1, -1, - -1, -1, -1, 2723, -1, 2725, 4142, 2727, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 4154, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 1154, -1, -1, -1, -1, -1, -1, -1, - -1, 2761, 2762, 2763, -1, 4181, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 2779, - -1, 2099, -1, -1, -1, 2103, 2104, -1, -1, -1, - 2790, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 1365, -1, -1, -1, -1, 2805, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 629, -1, -1, + 3377, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 3398, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 5273, -1, -1, 3412, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 3955, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 653, -1, -1, -1, -1, -1, 2165, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 4273, -1, 2177, - -1, -1, -1, -1, -1, -1, 1431, -1, -1, 2869, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 3955, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 2217, - -1, -1, -1, -1, -1, 1470, -1, -1, -1, -1, + -1, -1, -1, -1, 4003, -1, -1, -1, 4007, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 1493, 4345, - 4105, -1, -1, -1, 2838, 4110, -1, 2841, -1, 2843, - -1, -1, -1, -1, 2848, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 4003, -1, + -1, -1, 4007, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 1365, -1, -1, -1, 4142, -1, -1, + -1, 3518, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 3543, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 3569, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 3605, -1, + -1, -1, -1, 4142, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 4154, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 4142, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4154, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 2897, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 4181, -1, 1573, -1, - 2914, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 1588, -1, -1, -1, -1, -1, 1431, - -1, -1, 1597, -1, -1, 2939, -1, -1, -1, 4455, - -1, 4457, -1, -1, 1609, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 1470, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 2396, -1, - -1, -1, -1, -1, 4500, -1, -1, -1, -1, -1, - -1, 1493, -1, 4509, -1, -1, -1, -1, 4273, 1664, - -1, -1, -1, -1, 3008, -1, 3010, -1, -1, -1, - -1, -1, -1, 1678, -1, 927, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 1690, -1, -1, -1, 4545, - -1, -1, -1, -1, -1, 4551, -1, 1702, 950, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 965, -1, -1, -1, -1, -1, -1, - 2478, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 4345, 1573, -1, -1, -1, -1, -1, 1742, 1743, -1, - -1, -1, -1, -1, -1, -1, 1588, 3091, -1, -1, - -1, -1, -1, -1, -1, 1597, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 1609, -1, -1, - -1, -1, -1, -1, -1, 3119, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 1049, 3142, -1, - -1, -1, -1, -1, -1, -1, 3150, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 1664, -1, -1, -1, -1, 629, -1, -1, - -1, -1, -1, 2591, -1, -1, 1678, -1, -1, -1, - 4455, -1, 4457, -1, -1, -1, 629, -1, 1690, -1, - 2608, 653, -1, -1, -1, -1, -1, -1, -1, -1, - 1702, -1, -1, 2621, -1, -1, -1, -1, -1, -1, - 653, -1, 1877, -1, -1, 3219, -1, 4733, -1, -1, - -1, -1, -1, -1, -1, 4500, -1, -1, -1, -1, - -1, -1, -1, 3237, -1, -1, -1, -1, -1, -1, - 1742, 1743, 1154, 3343, -1, -1, 3250, -1, -1, -1, - -1, 3351, 3352, 4769, 3354, -1, -1, -1, -1, -1, - 3360, -1, 3362, -1, -1, -1, -1, -1, -1, -1, - 4545, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 3390, 3391, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 3408, -1, - -1, -1, -1, -1, -1, -1, -1, 3417, -1, -1, - 3420, -1, 3422, -1, -1, -1, -1, -1, -1, -1, - -1, 3431, -1, -1, -1, -1, -1, -1, -1, 3439, - 3440, -1, 3346, 2761, 2762, 2763, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 3369, -1, -1, -1, -1, - -1, -1, 3472, -1, -1, 1877, -1, -1, 3478, 3479, - 3480, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 3395, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 3506, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 2838, -1, 3522, 2841, -1, 2843, 3430, -1, -1, -1, - 2848, -1, -1, -1, 2099, -1, -1, -1, 2103, 2104, - -1, -1, -1, -1, -1, -1, 4962, -1, 4964, -1, - -1, -1, -1, 1365, -1, -1, -1, -1, 4733, -1, - -1, -1, -1, -1, -1, 927, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 2897, - -1, -1, -1, -1, 927, -1, -1, -1, 950, -1, - -1, -1, -1, -1, 4769, -1, 2914, -1, -1, -1, - 2165, -1, -1, 965, -1, -1, -1, 950, -1, -1, - -1, -1, 2177, -1, -1, -1, -1, -1, -1, 1431, - -1, 2939, 965, -1, 3528, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 5057, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 2217, -1, -1, -1, -1, -1, 1470, 5075, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 5088, -1, -1, -1, -1, -1, -1, -1, - -1, 1493, -1, -1, -1, -1, -1, 1049, -1, -1, - 3008, -1, 3010, -1, -1, -1, -1, 2099, -1, -1, - -1, 2103, 2104, -1, -1, -1, 1049, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 3627, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 5160, 5161, -1, 3651, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 1573, -1, 2165, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 3091, -1, 2177, 1588, -1, -1, -1, - -1, -1, -1, -1, -1, 1597, 5202, 4962, -1, 4964, - -1, -1, 1154, -1, -1, -1, -1, 1609, -1, -1, - -1, 3119, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 1154, -1, -1, -1, 2217, -1, -1, -1, -1, - -1, -1, -1, -1, 3142, -1, -1, -1, -1, 3829, - 3830, 2396, 3150, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 1664, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 5278, -1, -1, -1, 1678, -1, -1, -1, - -1, -1, -1, -1, 3778, -1, -1, -1, 1690, -1, - -1, -1, 5057, -1, -1, -1, -1, -1, -1, -1, - 1702, -1, -1, -1, -1, -1, 3896, -1, -1, -1, - 5075, 3219, -1, -1, -1, -1, -1, -1, -1, 3909, - -1, 5327, -1, 2478, -1, -1, -1, -1, -1, 3237, - -1, -1, -1, -1, 3828, -1, 5342, 5343, 5344, -1, - 1742, 1743, 3250, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 3950, 3951, -1, -1, -1, -1, -1, -1, 3958, 3959, - -1, -1, -1, 3963, -1, -1, -1, -1, 3968, -1, - -1, 3971, 3972, -1, -1, -1, 3976, -1, -1, -1, - -1, -1, 3982, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 2396, -1, -1, -1, -1, -1, - -1, -1, -1, 1365, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 4019, - -1, -1, 1365, -1, 4024, -1, 2591, 5202, 3346, -1, - 4030, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 2608, 4044, -1, -1, -1, -1, 3953, - -1, 3369, -1, -1, -1, -1, 2621, -1, -1, -1, - 3964, -1, -1, -1, -1, 1877, -1, -1, -1, 1431, - 4070, -1, -1, -1, -1, -1, 2478, 3395, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 1431, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 5278, -1, -1, -1, -1, 1470, -1, - -1, -1, 3430, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 1470, -1, -1, - -1, 1493, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 1493, -1, 5327, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 3480, -1, -1, -1, -1, 5342, -1, -1, - 4170, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 4088, -1, -1, -1, -1, 2591, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 2608, -1, -1, -1, - 3528, 1573, -1, -1, -1, -1, -1, -1, -1, 2621, - -1, -1, 4126, -1, -1, -1, 1588, -1, -1, -1, - 1573, -1, -1, -1, -1, 1597, 4236, -1, -1, -1, - -1, -1, -1, 4147, -1, 1588, -1, 1609, -1, -1, - -1, -1, -1, -1, 1597, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 1609, -1, -1, -1, - -1, -1, -1, 2838, -1, -1, 2841, -1, 2843, -1, - -1, -1, -1, 2848, -1, -1, -1, 2099, -1, -1, - -1, 2103, 2104, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 1664, -1, -1, -1, -1, 629, 4212, 3627, - -1, -1, -1, -1, -1, -1, 1678, -1, -1, -1, - -1, 1664, -1, -1, -1, -1, -1, -1, 1690, -1, - -1, 653, 2897, 3651, -1, 1678, -1, -1, -1, -1, - 1702, -1, -1, -1, -1, -1, -1, 1690, -1, 2914, - -1, -1, -1, 2165, -1, -1, -1, -1, -1, 1702, - -1, -1, -1, -1, -1, 2177, -1, -1, -1, -1, - -1, -1, -1, -1, 2939, -1, -1, -1, -1, -1, - 1742, 1743, -1, -1, -1, -1, -1, -1, 4388, 4389, - -1, -1, 4392, -1, -1, -1, -1, -1, -1, 1742, - 1743, -1, -1, -1, -1, 2217, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 4323, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 4430, 4431, -1, -1, -1, -1, 2838, -1, -1, 2841, - -1, 2843, -1, 3008, -1, 3010, 2848, -1, -1, -1, - 4450, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 3778, 4365, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 2897, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 3828, -1, 2914, -1, -1, 1877, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 3091, -1, -1, -1, - -1, -1, -1, -1, 1877, -1, -1, 2939, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 3119, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 3142, -1, -1, - -1, -1, -1, -1, 2396, 3150, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 4499, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 927, 3008, -1, 3010, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 950, -1, - -1, -1, -1, -1, -1, 3953, -1, -1, -1, -1, - -1, -1, -1, 965, -1, -1, 3964, -1, -1, 4649, - -1, -1, -1, -1, 3219, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 2478, -1, -1, -1, - -1, -1, 3237, -1, -1, -1, -1, 4677, -1, -1, - -1, -1, -1, -1, -1, 3250, -1, -1, -1, 3091, - -1, -1, 4692, -1, -1, -1, -1, -1, -1, -1, - -1, 4019, -1, -1, -1, -1, 4024, -1, -1, -1, - -1, -1, 4030, -1, -1, -1, -1, 3119, 4622, -1, - -1, -1, -1, -1, -1, -1, -1, 1049, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 2099, -1, -1, - 3142, 2103, 2104, 4647, -1, -1, -1, -1, 3150, -1, - -1, 4751, -1, -1, -1, -1, 2099, -1, -1, -1, - 2103, 2104, -1, -1, -1, -1, -1, -1, -1, -1, - 4088, -1, -1, -1, -1, -1, -1, -1, -1, 2591, - -1, 3346, -1, 4687, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 2608, -1, -1, -1, - -1, -1, -1, 2165, 3369, -1, -1, -1, 4126, 2621, - -1, -1, -1, -1, -1, 2177, -1, 3219, -1, -1, - -1, -1, 2165, -1, -1, -1, -1, -1, -1, 4147, - 3395, -1, 1154, -1, 2177, 3237, -1, 4741, -1, -1, - -1, -1, 4746, 4747, -1, -1, -1, -1, 3250, -1, - -1, -1, -1, -1, -1, 2217, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 3430, -1, -1, -1, -1, - -1, -1, -1, -1, 2217, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 4212, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 4904, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 4930, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 3346, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 4858, -1, -1, -1, -1, -1, - -1, -1, -1, 3528, -1, -1, -1, 3369, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 3395, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 4321, -1, 4323, -1, -1, -1, -1, - -1, -1, -1, -1, 5014, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 2838, -1, 3430, 2841, - -1, 2843, -1, -1, 2396, -1, 2848, -1, -1, -1, - -1, -1, -1, 1365, -1, -1, -1, 4365, 5048, 5049, - -1, -1, -1, 2396, -1, -1, -1, -1, -1, -1, - -1, -1, 3627, -1, -1, -1, 5066, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 2897, 3651, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 2914, -1, -1, -1, -1, -1, -1, 1431, - -1, -1, -1, -1, -1, -1, 2478, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 3528, 2939, -1, -1, - -1, -1, -1, -1, -1, 2478, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 5145, -1, -1, 1470, -1, - -1, -1, -1, -1, -1, -1, 5060, -1, -1, -1, - -1, -1, 5162, -1, -1, -1, -1, -1, -1, -1, - -1, 1493, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 4499, -1, -1, -1, -1, -1, -1, 5188, -1, - -1, -1, -1, -1, -1, -1, 3008, -1, 3010, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 3778, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 3627, -1, -1, -1, 2591, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 2608, -1, 2591, 3651, - -1, 1573, -1, -1, -1, -1, -1, -1, -1, 2621, - -1, -1, -1, 3828, -1, 2608, 1588, -1, -1, -1, - -1, -1, -1, -1, -1, 1597, -1, -1, 2621, 3091, - -1, -1, -1, -1, -1, -1, -1, 1609, -1, -1, - -1, -1, -1, -1, -1, 5295, -1, -1, -1, -1, - -1, 5301, -1, -1, 4622, -1, -1, 3119, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 4647, - 3142, -1, -1, -1, -1, -1, -1, -1, 3150, -1, - -1, -1, 1664, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 1678, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 1690, 4687, - -1, -1, -1, -1, -1, -1, 3778, -1, -1, -1, - 1702, -1, -1, -1, -1, -1, -1, -1, 3953, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 3964, - -1, -1, -1, -1, -1, -1, -1, 3219, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 1742, 1743, -1, 4741, -1, 3237, 3828, -1, 4746, 4747, - -1, -1, -1, -1, -1, -1, -1, -1, 3250, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 2838, -1, -1, 2841, - -1, 2843, -1, -1, -1, -1, 2848, -1, -1, -1, - -1, -1, -1, -1, -1, 2838, -1, -1, 2841, -1, - 2843, -1, -1, -1, -1, 2848, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 4088, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 3346, 2897, -1, -1, -1, 4857, - 4858, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 3953, 2914, -1, 2897, 1877, -1, 3369, -1, -1, - -1, 4126, 3964, -1, -1, -1, -1, -1, -1, -1, - -1, 2914, -1, -1, -1, -1, -1, 2939, -1, -1, - -1, -1, 4147, 3395, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 2939, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 3430, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 3008, 4212, 3010, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 3008, -1, 3010, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 4088, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 3528, -1, -1, -1, - -1, -1, -1, -1, 4126, -1, -1, -1, -1, 3091, + -1, -1, -1, -1, -1, -1, -1, -1, 3695, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 5060, -1, -1, 4147, -1, -1, 3091, -1, - -1, -1, -1, -1, -1, -1, -1, 3119, 4323, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 3119, 2099, -1, -1, - 3142, 2103, 2104, -1, -1, -1, -1, -1, 3150, -1, - -1, -1, -1, -1, 1261, -1, -1, -1, -1, 3142, - 4365, -1, -1, -1, -1, -1, -1, 3150, -1, -1, - 4212, -1, -1, -1, -1, 3627, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 3651, - -1, -1, -1, 2165, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 2177, -1, 3219, -1, -1, - -1, 1328, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 3237, 3219, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 3250, -1, - -1, -1, -1, -1, 3237, 2217, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 3250, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 4323, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 4499, -1, -1, -1, -1, -1, + -1, -1, -1, 4272, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 4272, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 4365, -1, -1, 3778, -1, -1, -1, + -1, -1, -1, -1, 4313, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 3794, -1, -1, + -1, -1, -1, -1, -1, -1, 4335, -1, 4313, -1, + -1, -1, -1, -1, 2769, -1, -1, -1, -1, -1, + -1, -1, 3819, -1, -1, -1, -1, -1, -1, -1, + 4335, -1, -1, -1, -1, -1, 2791, 2792, -1, 2794, + -1, -1, 2797, 2798, -1, 2800, -1, 2802, -1, -1, + -1, 2806, -1, -1, 2809, -1, -1, -1, -1, 2814, + -1, -1, -1, -1, -1, 2820, -1, -1, -1, -1, + 2825, -1, -1, -1, -1, -1, 4405, -1, 2833, 2834, + 2835, 2836, -1, -1, -1, 2840, 2841, -1, 2843, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 3346, -1, -1, -1, -1, -1, + 4405, -1, -1, -1, -1, -1, 2861, -1, 2863, -1, + -1, -1, -1, -1, -1, 2870, 2871, 2872, 2873, 2874, + 2875, 2876, 2877, 2878, 2879, 2880, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 3346, -1, -1, -1, 3369, -1, -1, - -1, -1, -1, -1, -1, -1, 3828, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 3369, -1, -1, -1, - -1, -1, -1, 3395, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 3395, -1, -1, -1, -1, 4622, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 3430, -1, - -1, -1, -1, -1, 2396, -1, -1, -1, -1, -1, - -1, -1, 4647, -1, -1, -1, -1, 3430, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 4499, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 3955, -1, + -1, -1, 2917, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 4687, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 4527, -1, + -1, -1, -1, -1, -1, -1, 4003, -1, -1, -1, + 4007, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 4527, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 3953, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 3964, -1, -1, -1, 2478, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 3528, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 4741, -1, -1, -1, - -1, 4746, 4747, -1, -1, 3528, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 4576, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 3018, -1, -1, -1, -1, -1, -1, + -1, 4576, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 4622, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 4647, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 3627, -1, -1, -1, 2591, - -1, -1, -1, -1, -1, -1, 4088, -1, -1, -1, - -1, -1, -1, -1, 3627, 4687, 2608, -1, -1, 3651, - -1, -1, -1, 4858, -1, -1, -1, -1, -1, 2621, - -1, -1, -1, -1, -1, -1, -1, -1, 3651, -1, - -1, -1, -1, -1, 4126, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 4147, -1, -1, -1, 4741, - -1, -1, -1, -1, 4746, 4747, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 1832, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 1846, - -1, -1, -1, 1850, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 1864, 1865, 1866, - 4212, -1, 1869, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 3778, -1, -1, -1, + -1, -1, -1, -1, -1, 4142, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 4154, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 3778, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 1912, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 4858, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 3828, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 1950, -1, 3828, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 5060, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 4714, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 4323, -1, -1, -1, -1, 2838, -1, -1, 2841, - -1, 2843, -1, -1, -1, -1, 2848, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 4714, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 4365, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 2897, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 2054, -1, -1, - -1, 3953, 2914, -1, -1, -1, -1, -1, -1, 2066, - -1, -1, 3964, -1, 2071, -1, -1, -1, -1, -1, - 3953, -1, -1, -1, -1, -1, -1, 2939, -1, -1, - -1, 3964, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 5060, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 4272, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 3008, 4499, 3010, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 4840, -1, -1, 3269, 3270, 4313, -1, -1, 3274, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 4088, -1, -1, -1, + -1, -1, -1, -1, -1, 4840, 4865, -1, 4335, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 3303, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 4088, -1, -1, -1, -1, + 4865, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 4904, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 4126, -1, -1, -1, -1, 3091, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 4904, + -1, -1, -1, -1, -1, -1, -1, -1, 4405, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 4126, -1, 4147, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 3119, -1, -1, - -1, -1, -1, -1, 4147, -1, -1, -1, -1, -1, - 4622, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 3142, -1, -1, -1, -1, -1, -1, -1, 3150, -1, - -1, -1, -1, -1, -1, 4647, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 4957, -1, + -1, -1, -1, 4962, 4963, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 4212, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 4212, - -1, -1, -1, -1, -1, 4687, -1, -1, -1, -1, + -1, -1, 4957, -1, -1, -1, -1, 4962, 4963, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 3219, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 3237, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 3250, 4741, - -1, -1, -1, -1, 4746, 4747, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 4323, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 4323, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 4365, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 4365, -1, 3346, -1, -1, -1, -1, -1, + 4527, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 5078, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 3514, + -1, -1, -1, -1, -1, 3520, -1, -1, -1, -1, + -1, -1, -1, 5078, -1, -1, -1, -1, -1, 4576, + -1, -1, -1, -1, -1, 3540, 3541, -1, -1, 3544, + 3545, 3546, 3547, -1, -1, 3550, 3551, 3552, 3553, 3554, + 3555, 3556, 3557, 3558, 3559, 3560, 3561, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 4858, 3369, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 3583, -1, + -1, 3586, -1, 3588, -1, -1, 3591, 3592, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 3609, 3610, 3611, 3612, -1, 3614, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 3395, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 3430, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 4499, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 4714, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 4499, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 2635, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 5273, -1, -1, -1, -1, 3704, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 2657, -1, 2659, -1, -1, 2662, 2663, -1, 2665, -1, - 2667, -1, -1, -1, 2671, -1, 3528, 2674, -1, -1, - -1, -1, 2679, -1, -1, -1, -1, -1, 2685, -1, - -1, -1, -1, 2690, -1, -1, -1, -1, -1, -1, - -1, 2698, 2699, 2700, 2701, -1, -1, -1, 2705, 2706, - -1, 2708, -1, -1, -1, -1, -1, -1, 5060, -1, - -1, -1, -1, 2720, -1, 2722, -1, -1, -1, -1, - 4622, -1, 2729, 2730, 2731, 2732, 2733, 2734, 2735, 2736, - 2737, 2738, 2739, -1, -1, -1, -1, -1, -1, 4622, - -1, -1, -1, -1, -1, 4647, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 5273, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 2767, -1, -1, -1, 4647, 3627, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 2787, -1, -1, -1, -1, 4687, -1, -1, -1, 3651, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 4687, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 4741, - -1, -1, -1, -1, 4746, 4747, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 4741, -1, - -1, -1, -1, 4746, 4747, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 2884, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 4840, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 3778, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 4865, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 4858, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 3828, -1, -1, -1, - -1, -1, -1, -1, -1, 4858, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 4904, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 4957, -1, -1, -1, -1, 4962, 4963, -1, -1, -1, + -1, 3926, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 3953, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 3964, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 3145, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 5060, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 5060, -1, -1, + -1, 5078, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 4084, + -1, -1, -1, 4088, 4089, 4090, -1, 4092, 4093, -1, + -1, -1, -1, -1, 4099, 4100, 4101, 4102, -1, -1, + -1, -1, 4107, 4108, 4109, 4110, 4111, 4112, 4113, 4114, + 4115, 4116, 4117, 4118, 4119, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 4088, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 4147, -1, -1, 4150, -1, 4152, -1, -1, + -1, -1, 4157, -1, -1, 4160, 4161, -1, -1, 4164, + 4165, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 4126, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 4147, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 4211, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 4226, -1, -1, -1, -1, 5273, -1, -1, -1, + -1, -1, -1, -1, 4239, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 3342, -1, -1, -1, -1, - -1, 3348, -1, -1, -1, -1, -1, -1, -1, -1, - 4212, -1, -1, -1, -1, -1, -1, -1, -1, 3366, - 3367, -1, -1, 3370, 3371, 3372, 3373, -1, -1, 3376, - 3377, 3378, 3379, 3380, 3381, 3382, 3383, 3384, 3385, 3386, - 3387, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 3409, -1, -1, 3412, -1, 3414, -1, -1, - -1, 3418, 3419, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 3433, 3434, 3435, 3436, - -1, 3438, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 4323, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 3488, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 4365, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 3537, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, @@ -17584,7 +18240,7 @@ static const yytype_int16 yycheck[] = -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 4499, -1, -1, + -1, -1, 4437, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, @@ -17592,41 +18248,32 @@ static const yytype_int16 yycheck[] = -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 4522, 4523, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 3749, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 4622, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 4565, -1, -1, -1, -1, -1, 4571, 4572, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 4647, -1, -1, -1, -1, + -1, -1, -1, -1, 4589, -1, 4591, -1, -1, -1, + 4595, 4596, 4597, -1, -1, 4600, -1, -1, 4603, 4604, + -1, -1, -1, 4608, -1, -1, -1, 4612, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 4687, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 4670, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 4741, - -1, -1, -1, -1, 4746, 4747, -1, -1, -1, -1, - 3897, -1, -1, -1, 3901, 3902, 3903, 3904, 3905, -1, - -1, -1, -1, -1, 3911, 3912, 3913, 3914, -1, -1, - -1, -1, 3919, 3920, 3921, 3922, 3923, 3924, 3925, 3926, - 3927, 3928, 3929, 3930, 3931, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 3957, -1, -1, 3960, -1, 3962, -1, -1, -1, 3966, - -1, -1, 3969, 3970, -1, -1, 3973, 3974, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 4858, -1, -1, -1, + -1, 4736, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 4021, -1, -1, -1, -1, -1, - -1, 4028, 4029, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 4043, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 4056, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 4774, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, @@ -17635,16 +18282,19 @@ static const yytype_int16 yycheck[] = -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 4863, 4864, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 4878, 4879, 4880, -1, -1, -1, -1, + -1, -1, -1, 4888, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 4915, 4916, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 4927, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 5060, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 4239, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, @@ -17652,3382 +18302,3469 @@ static const yytype_int16 yycheck[] = -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 4318, 4319, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 4355, -1, - -1, -1, -1, 4360, 4361, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 4375, -1, - 4377, -1, -1, -1, -1, 4382, 4383, 4384, -1, -1, - 4387, -1, -1, 4390, 4391, -1, -1, -1, 4395, -1, - -1, -1, 4399, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 5090, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 5103, -1, + -1, 5106, -1, -1, -1, 5110, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 4459, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 5159, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 5196, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 4520, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 4556, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 5267, -1, 5269, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 5299, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 4645, 4646, + -1, -1, -1, -1, -1, -1, -1, -1, 5353, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 4661, 4662, 4663, -1, -1, -1, - -1, -1, -1, -1, 4671, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 18, 19, 20, 21, 22, 23, 24, 25, -1, 27, - 28, 29, 4699, 4700, -1, -1, -1, -1, -1, 37, - 38, -1, 40, 41, 42, 4712, 44, 45, 46, -1, - -1, -1, -1, -1, -1, 53, 54, 55, 56, 57, - -1, -1, 60, 61, -1, -1, 64, -1, 66, 67, - 68, 69, -1, -1, -1, -1, 74, 75, 76, 77, - 78, -1, 80, 81, 82, -1, 84, 85, 86, 87, - 88, 89, -1, -1, 92, 93, 94, -1, -1, -1, - -1, -1, -1, -1, 102, 103, 104, 105, 106, 107, - -1, -1, 110, -1, 112, -1, 114, 115, 116, 117, - 118, 119, -1, 121, 122, 123, 124, -1, -1, 127, - 128, 129, 130, 131, -1, 133, 134, 135, -1, 137, - 138, 139, -1, 141, 142, 143, 144, -1, 146, 147, - 148, -1, -1, 151, -1, 153, 154, -1, 156, -1, - 158, -1, 160, -1, -1, -1, 164, 165, 166, 167, - -1, 169, -1, -1, -1, 173, -1, 175, 176, 177, - 178, 179, -1, 181, 182, 183, 184, -1, 186, 187, - 188, 189, 190, 191, -1, 193, -1, -1, 196, 197, - 198, 199, -1, 4870, -1, -1, -1, 205, -1, -1, - 208, -1, 210, 211, 212, 213, 214, 4884, -1, 217, - 4887, -1, 220, -1, 4891, 223, 224, 225, -1, -1, - 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, - 238, 239, 240, 241, 242, 243, -1, -1, -1, 247, - 248, 249, -1, -1, 252, 253, -1, 255, -1, -1, - 258, -1, 260, 261, 262, -1, 264, 265, -1, -1, - 268, 269, 270, -1, 4941, 273, -1, -1, 276, -1, - -1, 279, 280, 281, 282, 283, 284, 285, 286, 287, - -1, 289, 290, -1, 292, -1, 294, 295, 296, -1, - 298, 299, 300, 301, 302, 303, 304, 305, 306, -1, - 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, - 318, 319, 320, 321, 322, 323, 324, -1, 326, 327, - -1, 329, 330, 331, -1, 333, 334, 335, 336, 337, - 338, 339, 340, 341, -1, 343, 344, 345, 346, 347, - -1, 349, 350, -1, 352, 353, -1, 355, 356, -1, - 358, -1, 360, 361, 362, 363, 364, 365, 366, 367, - 368, 369, 370, 371, -1, -1, 374, 375, -1, 377, - -1, 379, 380, 381, 382, 383, -1, 5054, -1, 5056, - -1, 389, 390, -1, 392, -1, -1, 395, 396, 397, - 398, 399, 400, 401, -1, -1, 404, 405, 406, 407, - 408, -1, -1, 411, 412, 413, 414, 415, -1, 5086, - -1, 419, -1, 421, 422, 423, 424, -1, -1, 427, - -1, -1, 430, 431, 432, 433, 434, 435, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 447, - 448, 449, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 5381, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 5138, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 5165, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 5442, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 5224, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 5477, 5478, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 5253, 5254, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 5265, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 3, 4, 5, 6, 7, 8, 9, 10, -1, -1, - 5297, 5298, -1, -1, -1, 18, 19, 20, 21, 22, - 23, 24, 25, 26, 27, 28, 29, -1, -1, -1, - -1, 34, -1, -1, 37, 38, 5323, 40, 41, 42, - 43, 44, 45, 46, 47, 48, 49, 50, 51, -1, - 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, - 63, 64, -1, 66, 67, 68, 69, 70, -1, 72, - -1, 74, 75, 76, 77, 78, 79, 80, 81, 82, - -1, 84, 85, 86, 87, 88, 89, -1, 91, 92, - 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, - 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, - -1, 114, 115, 116, 117, 118, 119, -1, 121, 122, - 123, 124, 125, -1, 127, 128, 129, 130, 131, -1, - 133, 134, 135, -1, 137, 138, 139, -1, 141, 142, - 143, 144, 145, 146, 147, 148, 149, 150, 151, -1, - 153, 154, 155, 156, -1, 158, -1, 160, 161, -1, - 163, 164, 165, 166, 167, -1, 169, 170, -1, 172, - 173, -1, 175, 176, 177, 178, 179, 180, 181, 182, - 183, 184, -1, 186, 187, 188, 189, 190, 191, -1, - 193, 194, 195, 196, 197, 198, 199, 200, 201, -1, - 203, -1, 205, 206, 207, 208, 209, 210, 211, 212, - 213, 214, -1, -1, 217, 218, 219, 220, 221, -1, - 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, - 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, - 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, - 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, - -1, 264, 265, -1, -1, 268, 269, 270, -1, -1, - 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, - 283, 284, 285, 286, 287, -1, 289, 290, 291, 292, - 293, 294, 295, 296, -1, 298, 299, 300, 301, 302, - 303, 304, 305, 306, 307, 308, 309, 310, 311, -1, - 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, - 323, 324, -1, 326, 327, 328, 329, 330, 331, 332, - 333, 334, 335, 336, 337, 338, 339, 340, 341, -1, - 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, - 353, 354, 355, 356, 357, 358, -1, 360, 361, 362, - 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, - -1, 374, 375, -1, 377, 378, 379, 380, 381, 382, - 383, -1, 385, 386, -1, -1, 389, 390, 391, 392, - 393, 394, 395, 396, 397, 398, 399, 400, 401, -1, - 403, 404, 405, 406, 407, 408, 409, -1, 411, 412, - 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, - 423, 424, -1, -1, 427, -1, -1, 430, 431, 432, - 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, - 443, 444, 445, 446, 447, 448, 449, 450, -1, -1, - -1, -1, -1, -1, 457, 458, 459, -1, -1, -1, - 463, -1, -1, -1, 467, 468, 3, 4, 5, 6, - 7, 8, 9, 10, -1, -1, -1, -1, -1, -1, - -1, 18, 19, 20, 21, 22, 23, 24, 25, -1, - 27, 28, 29, -1, -1, -1, -1, 34, -1, -1, - 37, 38, -1, 40, 41, 42, 43, 44, 45, 46, - 47, 48, 49, 50, 51, -1, 53, 54, 55, 56, - 57, 58, 59, 60, 61, 62, 63, 64, -1, 66, - 67, 68, 69, 70, -1, 72, -1, 74, 75, 76, - 77, 78, 79, 80, 81, 82, -1, 84, 85, 86, - 87, 88, 89, -1, 91, 92, 93, 94, 95, 96, - 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, - 107, 108, 109, 110, 111, 112, -1, 114, 115, 116, - 117, 118, 119, -1, 121, 122, 123, 124, -1, -1, - 127, 128, 129, 130, 131, -1, 133, 134, 135, -1, - 137, 138, 139, -1, 141, 142, 143, 144, 145, 146, - 147, 148, 149, 150, 151, -1, 153, 154, 155, 156, - -1, 158, -1, 160, 161, -1, 163, 164, 165, 166, - 167, -1, 169, 170, -1, 172, 173, -1, 175, 176, - 177, 178, 179, 180, 181, 182, 183, 184, -1, 186, - 187, 188, 189, 190, 191, -1, 193, 194, 195, 196, - 197, 198, 199, 200, 201, -1, 203, -1, 205, 206, - 207, 208, 209, 210, 211, 212, 213, 214, -1, -1, - 217, 218, 219, 220, 221, -1, 223, 224, 225, 226, - 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, - 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, - 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, - 257, 258, 259, 260, 261, 262, -1, 264, 265, -1, - -1, 268, 269, 270, -1, -1, 273, 274, 275, 276, - 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, - 287, -1, 289, 290, 291, 292, 293, 294, 295, 296, - -1, 298, 299, 300, 301, 302, 303, 304, 305, 306, - 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, - 317, 318, 319, 320, 321, 322, 323, 324, -1, 326, - 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, - 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, - 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, - 357, 358, -1, 360, 361, 362, 363, 364, 365, 366, - 367, 368, 369, 370, 371, 372, -1, 374, 375, 376, - 377, 378, 379, 380, 381, 382, 383, -1, 385, 386, - -1, -1, 389, 390, 391, 392, 393, 394, 395, 396, - 397, 398, 399, 400, 401, -1, 403, 404, 405, 406, - 407, 408, 409, -1, 411, 412, 413, 414, 415, 416, - 417, -1, 419, 420, 421, 422, 423, 424, -1, -1, - 427, -1, 429, 430, 431, 432, 433, 434, 435, 436, - 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, - 447, 448, 449, 450, -1, 452, -1, -1, -1, -1, - 457, 458, -1, -1, -1, -1, 463, -1, -1, -1, - 467, 468, 3, 4, 5, 6, 7, 8, 9, 10, - -1, -1, -1, -1, -1, -1, -1, 18, 19, 20, - 21, 22, 23, 24, 25, -1, 27, 28, 29, -1, - -1, -1, -1, 34, -1, -1, 37, 38, -1, 40, - 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, - 51, -1, 53, 54, 55, 56, 57, 58, 59, 60, - 61, 62, 63, 64, -1, 66, 67, 68, 69, 70, - -1, 72, -1, 74, 75, 76, 77, 78, 79, 80, - 81, 82, -1, 84, 85, 86, 87, 88, 89, -1, - 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, - 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, - 111, 112, -1, 114, 115, 116, 117, 118, 119, -1, - 121, 122, 123, 124, -1, -1, 127, 128, 129, 130, - 131, -1, 133, 134, 135, -1, 137, 138, 139, -1, - 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, - 151, -1, 153, 154, 155, 156, -1, 158, -1, 160, - 161, -1, 163, 164, 165, 166, 167, -1, 169, 170, - -1, 172, 173, -1, 175, 176, 177, 178, 179, 180, - 181, 182, 183, 184, -1, 186, 187, 188, 189, 190, - 191, -1, 193, 194, 195, 196, 197, 198, 199, 200, - 201, -1, 203, -1, 205, 206, 207, 208, 209, 210, - 211, 212, 213, 214, -1, -1, 217, 218, 219, 220, - 221, -1, 223, 224, 225, 226, 227, 228, 229, 230, - 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, - 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, - 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, - 261, 262, -1, 264, 265, -1, -1, 268, 269, 270, - -1, -1, 273, 274, 275, 276, 277, 278, 279, 280, - 281, 282, 283, 284, 285, 286, 287, -1, 289, 290, - 291, 292, 293, 294, 295, 296, -1, 298, 299, 300, - 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, - 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, - 321, 322, 323, 324, -1, 326, 327, 328, 329, 330, - 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, - 341, -1, 343, 344, 345, 346, 347, 348, 349, 350, - 351, 352, 353, 354, 355, 356, 357, 358, -1, 360, - 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, - 371, 372, -1, 374, 375, -1, 377, 378, 379, 380, - 381, 382, 383, -1, 385, 386, -1, -1, 389, 390, - 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, - 401, -1, 403, 404, 405, 406, 407, 408, 409, -1, - 411, 412, 413, 414, 415, 416, 417, -1, 419, 420, - 421, 422, 423, 424, -1, -1, 427, -1, -1, 430, - 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, - 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, - -1, -1, -1, -1, -1, -1, 457, 458, -1, -1, - -1, -1, 463, -1, -1, -1, 467, 468, 3, 4, - 5, 6, 7, 8, 9, 10, -1, -1, -1, -1, - -1, -1, -1, 18, 19, 20, 21, 22, 23, 24, - 25, -1, 27, 28, 29, -1, -1, -1, -1, 34, - -1, -1, 37, 38, -1, 40, 41, 42, 43, 44, - 45, 46, 47, 48, 49, 50, 51, -1, 53, 54, - 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, - -1, 66, 67, 68, 69, 70, -1, 72, -1, 74, - 75, 76, 77, 78, 79, 80, 81, 82, -1, 84, - 85, 86, 87, 88, 89, -1, 91, 92, 93, 94, - 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, - 105, 106, 107, 108, 109, 110, 111, 112, -1, 114, - 115, 116, 117, 118, 119, -1, 121, 122, 123, 124, - -1, -1, 127, 128, 129, 130, 131, -1, 133, 134, - 135, -1, 137, 138, 139, -1, 141, 142, 143, 144, - 145, 146, 147, 148, 149, 150, 151, -1, 153, 154, - 155, 156, -1, 158, -1, 160, 161, -1, 163, 164, - 165, 166, 167, -1, 169, 170, -1, 172, 173, -1, - 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, - -1, 186, 187, 188, 189, 190, 191, -1, 193, 194, - 195, 196, 197, 198, 199, 200, 201, -1, 203, -1, - 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, - -1, -1, 217, 218, 219, 220, 221, -1, 223, 224, - 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 5529, 5530, -1, -1, -1, 5534, + -1, -1, -1, -1, -1, -1, -1, -1, 3, -1, + 5, 6, -1, 8, 9, 10, 11, 12, -1, -1, + -1, -1, -1, -1, -1, -1, 5561, 22, 23, 24, + 25, 26, 27, 28, 29, 30, 31, 32, 33, -1, + -1, -1, -1, 38, -1, -1, 41, 42, -1, 44, + 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, + 55, -1, 57, 58, 59, 60, 61, 62, 63, 64, + 65, 66, 67, 68, 69, -1, 71, 72, 73, 74, + 75, -1, 77, -1, 79, 80, 81, 82, 83, 84, + 85, 86, 87, -1, 89, 90, 91, 92, 93, 94, + -1, 96, 97, 98, 99, 100, 101, 102, 103, 104, + 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, + 115, 116, 117, -1, 119, 120, 121, 122, 123, 124, + -1, 126, 127, 128, 129, 130, -1, 132, 133, 134, + 135, 136, -1, 138, 139, 140, -1, 142, 143, 144, + -1, 146, 147, 148, 149, 150, 151, 152, 153, 154, + 155, 156, 157, -1, 159, 160, 161, 162, -1, 164, + -1, 166, 167, -1, 169, 170, 171, 172, 173, -1, + 175, 176, -1, 178, 179, 180, -1, 182, 183, 184, + 185, 186, 187, 188, 189, 190, 191, -1, 193, 194, + 195, 196, 197, 198, 199, -1, 201, 202, 203, 204, + 205, 206, 207, 208, 209, -1, 211, -1, 213, 214, + 215, 216, 217, 218, 219, 220, 221, 222, -1, -1, + 225, 226, 227, 228, 229, -1, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, - 255, 256, 257, 258, 259, 260, 261, 262, -1, 264, - 265, -1, -1, 268, 269, 270, -1, -1, 273, 274, - 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, - 285, 286, 287, -1, 289, 290, 291, 292, 293, 294, - 295, 296, -1, 298, 299, 300, 301, 302, 303, 304, + 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, + 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, + 275, 276, -1, 278, 279, -1, -1, 282, 283, 284, + -1, -1, 287, 288, 289, 290, 291, 292, 293, 294, + 295, 296, 297, 298, 299, 300, 301, 302, -1, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, - -1, 326, 327, 328, 329, 330, 331, 332, 333, 334, - 335, 336, 337, 338, 339, 340, 341, -1, 343, 344, + 325, 326, 327, -1, 329, 330, 331, 332, 333, 334, + 335, 336, 337, 338, 339, 340, -1, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, - 355, 356, 357, 358, -1, 360, 361, 362, 363, 364, - 365, 366, 367, 368, 369, 370, 371, 372, -1, 374, - 375, -1, 377, 378, 379, 380, 381, 382, 383, -1, - 385, 386, -1, -1, 389, 390, 391, 392, 393, 394, - 395, 396, 397, 398, 399, 400, 401, -1, 403, 404, - 405, 406, 407, 408, 409, -1, 411, 412, 413, 414, - 415, 416, 417, -1, 419, 420, 421, 422, 423, 424, - -1, -1, 427, -1, -1, 430, 431, 432, 433, 434, + 355, 356, 357, 358, 359, -1, 361, 362, 363, 364, + 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, + 375, 376, -1, 378, 379, 380, 381, 382, 383, 384, + 385, 386, 387, 388, 389, 390, 391, 392, -1, 394, + 395, -1, 397, 398, 399, 400, 401, 402, 403, -1, + 405, 406, 407, -1, -1, 410, 411, 412, 413, 414, + 415, 416, 417, 418, 419, 420, 421, 422, 423, -1, + 425, 426, 427, 428, 429, 430, 431, -1, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, - 445, 446, 447, 448, 449, 450, -1, -1, -1, -1, - -1, -1, 457, 458, -1, -1, -1, -1, 463, -1, - -1, -1, 467, 468, 3, 4, 5, 6, 7, 8, - 9, 10, -1, -1, -1, -1, -1, -1, -1, 18, - 19, 20, 21, 22, 23, 24, 25, -1, 27, 28, - 29, -1, -1, -1, -1, 34, -1, -1, 37, 38, - -1, 40, 41, 42, 43, 44, 45, 46, 47, 48, - 49, 50, 51, -1, 53, 54, 55, 56, 57, 58, - 59, 60, 61, 62, 63, 64, -1, 66, 67, 68, - 69, 70, -1, 72, -1, 74, 75, 76, 77, 78, - 79, 80, 81, 82, -1, 84, 85, 86, 87, 88, - 89, -1, 91, 92, 93, 94, 95, 96, 97, 98, + 445, 446, -1, -1, 449, -1, -1, 452, 453, 454, + 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, + 465, 466, 467, 468, 469, 470, 471, 472, -1, -1, + -1, -1, -1, 478, -1, 480, 481, 482, -1, -1, + -1, -1, -1, -1, 489, 490, 3, -1, 5, 6, + -1, 8, 9, 10, 11, 12, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, + 27, 28, 29, -1, 31, 32, 33, -1, -1, -1, + -1, 38, -1, -1, 41, 42, -1, 44, 45, 46, + 47, 48, 49, 50, 51, 52, 53, 54, 55, -1, + 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, + 67, 68, 69, -1, 71, 72, 73, 74, 75, -1, + 77, -1, 79, 80, 81, 82, 83, 84, 85, 86, + 87, -1, 89, 90, 91, 92, 93, 94, -1, 96, + 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, + 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, + 117, -1, 119, 120, 121, 122, 123, 124, -1, 126, + 127, 128, 129, -1, -1, 132, 133, 134, 135, 136, + -1, 138, 139, 140, -1, 142, 143, 144, -1, 146, + 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, + 157, -1, 159, 160, 161, 162, -1, 164, -1, 166, + 167, -1, 169, 170, 171, 172, 173, -1, 175, 176, + -1, 178, 179, 180, -1, 182, 183, 184, 185, 186, + 187, 188, 189, 190, 191, -1, 193, 194, 195, 196, + 197, 198, 199, -1, 201, 202, 203, 204, 205, 206, + 207, 208, 209, -1, 211, -1, 213, 214, 215, 216, + 217, 218, 219, 220, 221, 222, -1, -1, 225, 226, + 227, 228, 229, -1, 231, 232, 233, 234, 235, 236, + 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, + 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, + 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, + 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, + -1, 278, 279, -1, -1, 282, 283, 284, -1, -1, + 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, + 297, 298, 299, 300, 301, 302, -1, 304, 305, 306, + 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, + 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, + 327, -1, 329, 330, 331, 332, 333, 334, 335, 336, + 337, 338, 339, 340, -1, 342, 343, 344, 345, 346, + 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, + 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, + 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, + -1, 378, 379, 380, 381, 382, 383, 384, 385, 386, + 387, 388, 389, 390, 391, 392, -1, 394, 395, 396, + 397, 398, 399, 400, 401, 402, 403, -1, 405, 406, + 407, -1, -1, 410, 411, 412, 413, 414, 415, 416, + 417, 418, 419, 420, 421, 422, 423, -1, 425, 426, + 427, 428, 429, 430, 431, -1, 433, 434, 435, 436, + 437, 438, 439, -1, 441, 442, 443, 444, 445, 446, + -1, -1, 449, -1, 451, 452, 453, 454, 455, 456, + 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, + 467, 468, 469, 470, 471, 472, -1, 474, -1, -1, + -1, 478, -1, 480, 481, -1, -1, -1, -1, -1, + -1, -1, 489, 490, 3, -1, 5, 6, -1, 8, + 9, 10, 11, 12, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, + 29, -1, 31, 32, 33, -1, -1, -1, -1, 38, + -1, -1, 41, 42, -1, 44, 45, 46, 47, 48, + 49, 50, 51, 52, 53, 54, 55, -1, 57, 58, + 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, + 69, -1, 71, 72, 73, 74, 75, -1, 77, -1, + 79, 80, 81, 82, 83, 84, 85, 86, 87, -1, + 89, 90, 91, 92, 93, 94, -1, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, - 109, 110, 111, 112, -1, 114, 115, 116, 117, 118, - 119, -1, 121, 122, 123, 124, -1, -1, 127, 128, - 129, 130, 131, -1, 133, 134, 135, -1, 137, 138, - 139, -1, 141, 142, 143, 144, 145, 146, 147, 148, - 149, 150, 151, -1, 153, 154, 155, 156, -1, 158, - -1, 160, 161, -1, 163, 164, 165, 166, 167, -1, - 169, 170, -1, 172, 173, -1, 175, 176, 177, 178, - 179, 180, 181, 182, 183, 184, -1, 186, 187, 188, + 109, 110, 111, 112, 113, 114, 115, 116, 117, -1, + 119, 120, 121, 122, 123, 124, -1, 126, 127, 128, + 129, -1, -1, 132, 133, 134, 135, 136, -1, 138, + 139, 140, -1, 142, 143, 144, -1, 146, 147, 148, + 149, 150, 151, 152, 153, 154, 155, 156, 157, -1, + 159, 160, 161, 162, -1, 164, -1, 166, 167, -1, + 169, 170, 171, 172, 173, -1, 175, 176, -1, 178, + 179, 180, -1, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, -1, 193, 194, 195, 196, 197, 198, - 199, 200, 201, -1, 203, -1, 205, 206, 207, 208, - 209, 210, 211, 212, 213, 214, -1, -1, 217, 218, - 219, 220, 221, -1, 223, 224, 225, 226, 227, 228, - 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, + 199, -1, 201, 202, 203, 204, 205, 206, 207, 208, + 209, -1, 211, -1, 213, 214, 215, 216, 217, 218, + 219, 220, 221, 222, -1, -1, 225, 226, 227, 228, + 229, -1, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, - 259, 260, 261, 262, -1, 264, 265, -1, -1, 268, - 269, 270, -1, -1, 273, 274, 275, 276, 277, 278, - 279, 280, 281, 282, 283, 284, 285, 286, 287, -1, - 289, 290, 291, 292, 293, 294, 295, 296, -1, 298, - 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, + 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, + 269, 270, 271, 272, 273, 274, 275, 276, -1, 278, + 279, -1, -1, 282, 283, 284, -1, -1, 287, 288, + 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, + 299, 300, 301, 302, -1, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, - 319, 320, 321, 322, 323, 324, -1, 326, 327, 328, + 319, 320, 321, 322, 323, 324, 325, 326, 327, -1, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, - 339, 340, 341, -1, 343, 344, 345, 346, 347, 348, + 339, 340, -1, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, - -1, 360, 361, 362, 363, 364, 365, 366, 367, 368, - 369, 370, 371, 372, -1, 374, 375, -1, 377, 378, - 379, 380, 381, 382, 383, -1, 385, 386, -1, -1, - 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, - 399, 400, 401, -1, 403, 404, 405, 406, 407, 408, - 409, -1, 411, 412, 413, 414, 415, 416, 417, -1, - 419, 420, 421, 422, 423, 424, -1, -1, 427, -1, - -1, 430, 431, 432, 433, 434, 435, 436, 437, 438, - 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, - 449, 450, -1, -1, -1, 3, -1, -1, 457, 458, - -1, -1, -1, -1, 463, -1, -1, -1, 467, 468, - 18, 19, 20, 21, 22, 23, 24, 25, -1, 27, - 28, 29, -1, -1, -1, -1, -1, 35, -1, 37, - 38, -1, 40, 41, 42, -1, 44, 45, 46, 47, - 48, -1, 50, 51, -1, 53, 54, 55, 56, 57, - -1, -1, 60, 61, 62, 63, 64, -1, 66, 67, - 68, 69, 70, -1, -1, -1, 74, 75, 76, 77, - 78, -1, 80, 81, 82, -1, 84, 85, 86, 87, - 88, 89, -1, 91, 92, 93, 94, -1, -1, -1, - -1, -1, -1, -1, 102, 103, 104, 105, 106, 107, - 108, 109, 110, -1, 112, -1, 114, 115, 116, 117, - 118, 119, -1, 121, 122, 123, 124, -1, -1, 127, - 128, 129, 130, 131, -1, 133, 134, 135, -1, 137, - 138, 139, -1, 141, 142, 143, 144, 145, 146, 147, - 148, 149, -1, 151, -1, 153, 154, 155, 156, -1, - 158, -1, 160, -1, -1, 163, 164, 165, 166, 167, - -1, 169, 170, -1, 172, 173, -1, 175, 176, 177, - 178, 179, -1, 181, 182, 183, 184, -1, 186, 187, - 188, 189, 190, 191, -1, 193, 194, 195, 196, 197, - 198, 199, 200, 201, -1, 203, -1, 205, -1, -1, - 208, 209, 210, 211, 212, 213, 214, -1, -1, 217, - 218, 219, 220, -1, -1, 223, 224, 225, -1, -1, - 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, - 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, - 248, 249, 250, -1, 252, 253, -1, 255, -1, 257, - 258, 259, 260, 261, 262, -1, 264, 265, -1, -1, - 268, 269, 270, -1, -1, 273, 274, -1, 276, -1, - 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, - -1, 289, 290, 291, 292, 293, 294, 295, 296, -1, - 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, - 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, - 318, 319, 320, 321, 322, 323, 324, -1, 326, 327, - 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, - 338, 339, 340, 341, -1, 343, 344, 345, 346, 347, - -1, 349, 350, 351, 352, 353, -1, 355, 356, 357, - 358, -1, 360, 361, 362, 363, 364, 365, 366, 367, - 368, 369, 370, 371, 372, -1, 374, 375, -1, 377, - -1, 379, 380, 381, 382, 383, -1, 385, 386, -1, - -1, 389, 390, 391, 392, 393, -1, 395, 396, 397, - 398, 399, 400, 401, -1, -1, 404, 405, 406, 407, - 408, -1, -1, 411, 412, 413, 414, 415, 416, 417, - -1, 419, -1, 421, 422, 423, 424, -1, -1, 427, - -1, -1, 430, 431, 432, 433, 434, 435, 436, 437, - 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, - 448, 449, -1, -1, -1, -1, 3, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 468, 18, 19, 20, 21, 22, 23, 24, 25, -1, - 27, 28, 29, -1, -1, -1, -1, -1, -1, -1, - 37, 38, -1, 40, 41, 42, 43, 44, 45, 46, - -1, 48, 49, 50, 51, -1, 53, 54, 55, 56, - 57, -1, -1, 60, 61, 62, 63, 64, -1, 66, - 67, 68, 69, -1, -1, 72, -1, 74, 75, 76, - 77, 78, 79, 80, 81, 82, -1, 84, 85, 86, - 87, 88, 89, -1, 91, 92, 93, 94, -1, -1, - -1, 98, -1, -1, -1, 102, 103, 104, 105, 106, - 107, 108, 109, 110, -1, 112, -1, 114, 115, 116, - 117, 118, 119, -1, 121, 122, 123, 124, -1, -1, - 127, 128, 129, 130, 131, -1, 133, 134, 135, -1, - 137, 138, 139, -1, 141, 142, 143, 144, -1, 146, - 147, 148, -1, -1, 151, -1, 153, 154, 155, 156, - -1, 158, -1, 160, 161, -1, 163, 164, 165, 166, - 167, -1, 169, -1, -1, -1, 173, -1, 175, 176, - 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, - 187, 188, 189, 190, 191, -1, 193, 194, 195, 196, - 197, 198, 199, 200, 201, -1, 203, -1, 205, 206, - 207, 208, 209, 210, 211, 212, 213, 214, -1, -1, - 217, -1, 219, 220, 221, -1, 223, 224, 225, -1, - -1, 228, 229, 230, 231, 232, 233, 234, 235, 236, - 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, - 247, 248, 249, -1, -1, 252, 253, 254, 255, -1, - -1, 258, 259, 260, 261, 262, -1, 264, 265, -1, - -1, 268, 269, 270, -1, -1, 273, 274, 275, 276, - 277, -1, 279, 280, 281, 282, 283, 284, 285, 286, - 287, -1, 289, 290, -1, 292, -1, 294, 295, 296, - -1, 298, 299, 300, 301, 302, 303, 304, 305, 306, - 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, - 317, 318, 319, 320, 321, 322, 323, 324, -1, 326, - 327, 328, 329, 330, 331, -1, 333, 334, 335, 336, - 337, 338, 339, 340, 341, -1, 343, 344, 345, 346, - 347, -1, 349, 350, 351, 352, 353, 354, 355, 356, - 357, 358, -1, 360, 361, 362, 363, 364, 365, 366, - 367, 368, 369, 370, 371, -1, -1, 374, 375, -1, - 377, 378, 379, 380, 381, 382, 383, -1, 385, 386, - -1, -1, 389, 390, -1, 392, -1, -1, 395, 396, - 397, 398, 399, 400, 401, -1, -1, 404, 405, 406, - 407, 408, -1, -1, 411, 412, 413, 414, 415, -1, - 417, 418, 419, 420, 421, 422, 423, 424, -1, -1, - 427, -1, -1, 430, 431, 432, 433, 434, 435, 3, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 447, 448, 449, -1, 18, 19, 20, 21, 22, 23, - 24, 25, -1, 27, 28, 29, -1, -1, -1, -1, - -1, 468, -1, 37, 38, -1, 40, 41, 42, 43, - 44, 45, 46, -1, 48, 49, 50, 51, -1, 53, - 54, 55, 56, 57, -1, -1, 60, 61, 62, 63, - 64, -1, 66, 67, 68, 69, -1, -1, 72, -1, - 74, 75, 76, 77, 78, 79, 80, 81, 82, -1, - 84, 85, 86, 87, 88, 89, -1, 91, 92, 93, - 94, -1, -1, -1, 98, -1, -1, -1, 102, 103, - 104, 105, 106, 107, 108, 109, 110, -1, 112, -1, - 114, 115, 116, 117, 118, 119, -1, 121, 122, 123, - 124, -1, -1, 127, 128, 129, 130, 131, -1, 133, - 134, 135, -1, 137, 138, 139, -1, 141, 142, 143, - 144, -1, 146, 147, 148, -1, -1, 151, -1, 153, - 154, 155, 156, -1, 158, -1, 160, 161, -1, 163, - 164, 165, 166, 167, -1, 169, -1, -1, -1, 173, - -1, 175, 176, 177, 178, 179, 180, 181, 182, 183, - 184, 185, 186, 187, 188, 189, 190, 191, -1, 193, - 194, 195, 196, 197, 198, 199, 200, 201, -1, 203, - -1, 205, 206, 207, 208, 209, 210, 211, 212, 213, - 214, -1, -1, 217, -1, 219, 220, 221, -1, 223, - 224, 225, -1, -1, 228, 229, 230, 231, 232, 233, - 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, - 244, 245, 246, 247, 248, 249, -1, -1, 252, 253, - 254, 255, -1, -1, 258, 259, 260, 261, 262, -1, - 264, 265, -1, -1, 268, 269, 270, -1, -1, 273, - 274, 275, 276, 277, -1, 279, 280, 281, 282, 283, - 284, 285, 286, 287, -1, 289, 290, -1, 292, -1, - 294, 295, 296, -1, 298, 299, 300, 301, 302, 303, - 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, - 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, - 324, -1, 326, 327, 328, 329, 330, 331, -1, 333, - 334, 335, 336, 337, 338, 339, 340, 341, -1, 343, - 344, 345, 346, 347, -1, 349, 350, 351, 352, 353, - 354, 355, 356, 357, 358, -1, 360, 361, 362, 363, - 364, 365, 366, 367, 368, 369, 370, 371, -1, -1, - 374, 375, -1, 377, 378, 379, 380, 381, 382, 383, - -1, 385, 386, -1, -1, 389, 390, -1, 392, -1, - -1, 395, 396, 397, 398, 399, 400, 401, -1, -1, - 404, 405, 406, 407, 408, -1, -1, 411, 412, 413, - 414, 415, -1, 417, 418, 419, 420, 421, 422, 423, - 424, -1, -1, 427, -1, -1, 430, 431, 432, 433, - 434, 435, 3, 4, 5, 6, 7, 8, 9, 10, - -1, -1, -1, 447, 448, 449, -1, 18, 19, 20, - 21, 22, 23, 24, 25, -1, 27, 28, 29, -1, - -1, -1, -1, 34, 468, -1, 37, 38, -1, 40, - 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, - 51, -1, 53, 54, 55, 56, 57, 58, 59, 60, - 61, 62, 63, 64, -1, 66, 67, 68, 69, 70, - -1, 72, -1, 74, 75, 76, 77, 78, 79, 80, - 81, 82, -1, 84, 85, 86, 87, 88, 89, -1, - 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, - 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, - 111, 112, -1, 114, 115, 116, 117, 118, 119, -1, - 121, 122, 123, 124, -1, -1, 127, 128, 129, 130, - 131, -1, 133, 134, 135, -1, 137, 138, 139, -1, - 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, - 151, -1, 153, 154, 155, 156, -1, 158, -1, 160, - 161, -1, 163, 164, 165, 166, 167, -1, 169, 170, - -1, 172, 173, -1, 175, 176, 177, 178, 179, 180, - 181, 182, 183, 184, -1, 186, 187, 188, 189, 190, - 191, -1, 193, 194, 195, 196, 197, 198, 199, 200, - 201, -1, 203, -1, 205, 206, 207, 208, 209, 210, - 211, 212, 213, 214, -1, -1, 217, 218, 219, 220, - 221, -1, 223, 224, 225, 226, 227, 228, 229, 230, - 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, - 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, - 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, - 261, 262, -1, 264, 265, -1, -1, 268, 269, 270, - -1, -1, 273, 274, 275, 276, 277, 278, 279, 280, - 281, 282, 283, 284, 285, 286, 287, -1, 289, 290, - 291, 292, 293, 294, 295, 296, -1, 298, 299, 300, - 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, - 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, - 321, 322, 323, 324, -1, 326, 327, 328, 329, 330, - 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, - 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, - 351, 352, 353, 354, 355, 356, 357, 358, -1, 360, - 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, - 371, 372, -1, 374, 375, 376, 377, 378, 379, 380, - 381, 382, 383, -1, 385, 386, -1, -1, 389, 390, - 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, - 401, -1, 403, 404, 405, 406, 407, 408, 409, -1, - 411, 412, 413, 414, 415, 416, 417, -1, 419, 420, - 421, 422, 423, 424, -1, -1, 427, -1, 429, 430, - 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, - 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, - -1, 452, -1, -1, -1, -1, 457, 458, -1, -1, - -1, -1, 463, -1, -1, -1, 467, 3, 4, 5, - 6, 7, 8, 9, 10, -1, -1, -1, -1, -1, - -1, -1, 18, 19, 20, 21, 22, 23, 24, 25, - -1, 27, 28, 29, -1, -1, -1, -1, 34, -1, - -1, 37, 38, -1, 40, 41, 42, 43, 44, 45, - 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, - 56, 57, 58, 59, 60, 61, 62, 63, 64, -1, - 66, 67, 68, 69, 70, -1, 72, -1, 74, 75, - 76, 77, 78, 79, 80, 81, 82, -1, 84, 85, - 86, 87, 88, 89, -1, 91, 92, 93, 94, 95, - 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, - 106, 107, 108, 109, 110, 111, 112, -1, 114, 115, - 116, 117, 118, 119, -1, 121, 122, 123, 124, -1, - -1, 127, 128, 129, 130, 131, -1, 133, 134, 135, - -1, 137, 138, 139, -1, 141, 142, 143, 144, 145, - 146, 147, 148, 149, 150, 151, -1, 153, 154, 155, - 156, -1, 158, -1, 160, 161, 162, 163, 164, 165, - 166, 167, -1, 169, 170, -1, 172, 173, -1, 175, - 176, 177, 178, 179, 180, 181, 182, 183, 184, -1, - 186, 187, 188, 189, 190, 191, -1, 193, 194, 195, - 196, 197, 198, 199, 200, 201, -1, 203, -1, 205, - 206, 207, 208, 209, 210, 211, 212, 213, 214, -1, - 216, 217, 218, 219, 220, 221, -1, 223, 224, 225, - 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, - 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, - 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, - 256, 257, 258, 259, 260, 261, 262, -1, 264, 265, - -1, -1, 268, 269, 270, -1, -1, 273, 274, 275, - 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, - 286, 287, -1, 289, 290, 291, 292, 293, 294, 295, - 296, -1, 298, 299, 300, 301, 302, 303, 304, 305, - 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, - 316, 317, 318, 319, 320, 321, 322, 323, 324, -1, - 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, - 336, 337, 338, 339, 340, 341, -1, 343, 344, 345, - 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, - 356, 357, 358, -1, 360, 361, 362, 363, 364, 365, - 366, 367, 368, 369, 370, 371, 372, -1, 374, 375, - -1, 377, 378, 379, 380, 381, 382, 383, -1, 385, - 386, -1, 388, 389, 390, 391, 392, 393, 394, 395, - 396, 397, 398, 399, 400, 401, -1, 403, 404, 405, - 406, 407, 408, 409, -1, 411, 412, 413, 414, 415, - 416, 417, -1, 419, 420, 421, 422, 423, 424, -1, - -1, 427, -1, -1, 430, 431, 432, 433, 434, 435, - 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, - 446, 447, 448, 449, 450, -1, -1, -1, -1, -1, - -1, 457, 458, -1, -1, -1, -1, 463, -1, -1, - -1, 467, 3, 4, 5, 6, 7, 8, 9, 10, - -1, -1, -1, -1, -1, -1, -1, 18, 19, 20, - 21, 22, 23, 24, 25, -1, 27, 28, 29, -1, - -1, -1, -1, 34, -1, -1, 37, 38, -1, 40, - 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, - 51, -1, 53, 54, 55, 56, 57, 58, 59, 60, - 61, 62, 63, 64, -1, 66, 67, 68, 69, 70, - -1, 72, -1, 74, 75, 76, 77, 78, 79, 80, - 81, 82, -1, 84, 85, 86, 87, 88, 89, -1, - 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, - 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, - 111, 112, -1, 114, 115, 116, 117, 118, 119, -1, - 121, 122, 123, 124, -1, -1, 127, 128, 129, 130, - 131, -1, 133, 134, 135, -1, 137, 138, 139, -1, - 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, - 151, -1, 153, 154, 155, 156, -1, 158, -1, 160, - 161, -1, 163, 164, 165, 166, 167, -1, 169, 170, - -1, 172, 173, -1, 175, 176, 177, 178, 179, 180, - 181, 182, 183, 184, -1, 186, 187, 188, 189, 190, - 191, -1, 193, 194, 195, 196, 197, 198, 199, 200, - 201, -1, 203, -1, 205, 206, 207, 208, 209, 210, - 211, 212, 213, 214, -1, -1, 217, 218, 219, 220, - 221, -1, 223, 224, 225, 226, 227, 228, 229, 230, - 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, - 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, - 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, - 261, 262, -1, 264, 265, -1, -1, 268, 269, 270, - -1, -1, 273, 274, 275, 276, 277, 278, 279, 280, - 281, 282, 283, 284, 285, 286, 287, -1, 289, 290, - 291, 292, 293, 294, 295, 296, -1, 298, 299, 300, - 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, - 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, - 321, 322, 323, 324, -1, 326, 327, 328, 329, 330, - 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, - 341, -1, 343, 344, 345, 346, 347, 348, 349, 350, - 351, 352, 353, 354, 355, 356, 357, 358, -1, 360, - 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, - 371, 372, -1, 374, 375, -1, 377, 378, 379, 380, - 381, 382, 383, -1, 385, 386, -1, -1, 389, 390, - 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, - 401, -1, 403, 404, 405, 406, 407, 408, 409, -1, - 411, 412, 413, 414, 415, 416, 417, -1, 419, 420, - 421, 422, 423, 424, -1, -1, 427, -1, -1, 430, - 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, - 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, - -1, -1, -1, -1, -1, -1, 457, 458, -1, -1, - -1, -1, 463, -1, 465, 466, 467, 3, 4, 5, - 6, 7, 8, 9, 10, -1, -1, -1, -1, -1, - -1, -1, 18, 19, 20, 21, 22, 23, 24, 25, - -1, 27, 28, 29, -1, -1, -1, -1, 34, -1, - -1, 37, 38, -1, 40, 41, 42, 43, 44, 45, - 46, 47, 48, 49, 50, 51, -1, 53, 54, 55, - 56, 57, 58, 59, 60, 61, 62, 63, 64, -1, - 66, 67, 68, 69, 70, -1, 72, -1, 74, 75, - 76, 77, 78, 79, 80, 81, 82, -1, 84, 85, - 86, 87, 88, 89, -1, 91, 92, 93, 94, 95, - 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, - 106, 107, 108, 109, 110, 111, 112, -1, 114, 115, - 116, 117, 118, 119, -1, 121, 122, 123, 124, -1, - -1, 127, 128, 129, 130, 131, -1, 133, 134, 135, - -1, 137, 138, 139, -1, 141, 142, 143, 144, 145, - 146, 147, 148, 149, 150, 151, -1, 153, 154, 155, - 156, -1, 158, -1, 160, 161, -1, 163, 164, 165, - 166, 167, -1, 169, 170, -1, 172, 173, -1, 175, - 176, 177, 178, 179, 180, 181, 182, 183, 184, -1, - 186, 187, 188, 189, 190, 191, -1, 193, 194, 195, - 196, 197, 198, 199, 200, 201, -1, 203, -1, 205, - 206, 207, 208, 209, 210, 211, 212, 213, 214, -1, - -1, 217, 218, 219, 220, 221, -1, 223, 224, 225, - 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, - 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, - 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, - 256, 257, 258, 259, 260, 261, 262, -1, 264, 265, - -1, -1, 268, 269, 270, -1, -1, 273, 274, 275, - 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, - 286, 287, -1, 289, 290, 291, 292, 293, 294, 295, - 296, -1, 298, 299, 300, 301, 302, 303, 304, 305, - 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, - 316, 317, 318, 319, 320, 321, 322, 323, 324, -1, - 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, - 336, 337, 338, 339, 340, 341, -1, 343, 344, 345, - 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, - 356, 357, 358, -1, 360, 361, 362, 363, 364, 365, - 366, 367, 368, 369, 370, 371, 372, -1, 374, 375, - -1, 377, 378, 379, 380, 381, 382, 383, -1, 385, - 386, -1, -1, 389, 390, 391, 392, 393, 394, 395, - 396, 397, 398, 399, 400, 401, -1, 403, 404, 405, - 406, 407, 408, 409, -1, 411, 412, 413, 414, 415, - 416, 417, -1, 419, 420, 421, 422, 423, 424, -1, - -1, 427, -1, -1, 430, 431, 432, 433, 434, 435, - 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, - 446, 447, 448, 449, 450, -1, -1, -1, -1, -1, - -1, 457, 458, 459, -1, -1, -1, 463, -1, -1, - -1, 467, 3, 4, 5, 6, 7, 8, 9, 10, - -1, -1, -1, -1, -1, -1, -1, 18, 19, 20, - 21, 22, 23, 24, 25, 26, 27, 28, 29, -1, - -1, -1, -1, 34, -1, -1, 37, 38, -1, 40, - 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, - 51, -1, 53, 54, 55, 56, 57, 58, 59, 60, - 61, 62, 63, 64, -1, 66, 67, 68, 69, 70, - -1, 72, -1, 74, 75, 76, 77, 78, 79, 80, - 81, 82, -1, 84, 85, 86, 87, 88, 89, -1, - 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, - 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, - 111, 112, -1, 114, 115, 116, 117, 118, 119, -1, - 121, 122, 123, 124, -1, -1, 127, 128, 129, 130, - 131, -1, 133, 134, 135, -1, 137, 138, 139, -1, - 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, - 151, -1, 153, 154, 155, 156, -1, 158, -1, 160, - 161, -1, 163, 164, 165, 166, 167, -1, 169, 170, - -1, 172, 173, -1, 175, 176, 177, 178, 179, 180, - 181, 182, 183, 184, -1, 186, 187, 188, 189, 190, - 191, -1, 193, 194, 195, 196, 197, 198, 199, 200, - 201, -1, 203, -1, 205, 206, 207, 208, 209, 210, - 211, 212, 213, 214, -1, -1, 217, 218, 219, 220, - 221, -1, 223, 224, 225, 226, 227, 228, 229, 230, - 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, - 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, - 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, - 261, 262, -1, 264, 265, -1, -1, 268, 269, 270, - -1, -1, 273, 274, 275, 276, 277, 278, 279, 280, - 281, 282, 283, 284, 285, 286, 287, -1, 289, 290, - 291, 292, 293, 294, 295, 296, -1, 298, 299, 300, - 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, - 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, - 321, 322, 323, 324, -1, 326, 327, 328, 329, 330, - 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, - 341, -1, 343, 344, 345, 346, 347, 348, 349, 350, - 351, 352, 353, 354, 355, 356, 357, 358, -1, 360, - 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, - 371, 372, -1, 374, 375, -1, 377, 378, 379, 380, - 381, 382, 383, -1, 385, 386, -1, -1, 389, 390, - 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, - 401, -1, 403, 404, 405, 406, 407, 408, 409, -1, - 411, 412, 413, 414, 415, 416, 417, -1, 419, 420, - 421, 422, 423, 424, -1, -1, 427, -1, -1, 430, - 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, - 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, - -1, -1, -1, -1, -1, -1, 457, 458, -1, -1, - -1, -1, 463, -1, -1, -1, 467, 3, 4, 5, - 6, 7, 8, 9, 10, -1, -1, -1, -1, -1, - -1, -1, 18, 19, 20, 21, 22, 23, 24, 25, - -1, 27, 28, 29, -1, -1, -1, -1, 34, -1, - -1, 37, 38, -1, 40, 41, 42, 43, 44, 45, - 46, 47, 48, 49, 50, 51, -1, 53, 54, 55, - 56, 57, 58, 59, 60, 61, 62, 63, 64, -1, - 66, 67, 68, 69, 70, -1, 72, -1, 74, 75, - 76, 77, 78, 79, 80, 81, 82, -1, 84, 85, - 86, 87, 88, 89, -1, 91, 92, 93, 94, 95, - 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, - 106, 107, 108, 109, 110, 111, 112, -1, 114, 115, - 116, 117, 118, 119, -1, 121, 122, 123, 124, -1, - -1, 127, 128, 129, 130, 131, -1, 133, 134, 135, - -1, 137, 138, 139, -1, 141, 142, 143, 144, 145, - 146, 147, 148, 149, 150, 151, -1, 153, 154, 155, - 156, -1, 158, -1, 160, 161, 162, 163, 164, 165, - 166, 167, -1, 169, 170, -1, 172, 173, -1, 175, - 176, 177, 178, 179, 180, 181, 182, 183, 184, -1, - 186, 187, 188, 189, 190, 191, -1, 193, 194, 195, - 196, 197, 198, 199, 200, 201, -1, 203, -1, 205, - 206, 207, 208, 209, 210, 211, 212, 213, 214, -1, - -1, 217, 218, 219, 220, 221, -1, 223, 224, 225, - 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, - 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, - 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, - 256, 257, 258, 259, 260, 261, 262, -1, 264, 265, - -1, -1, 268, 269, 270, -1, -1, 273, 274, 275, - 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, - 286, 287, -1, 289, 290, 291, 292, 293, 294, 295, - 296, -1, 298, 299, 300, 301, 302, 303, 304, 305, - 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, - 316, 317, 318, 319, 320, 321, 322, 323, 324, -1, - 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, - 336, 337, 338, 339, 340, 341, -1, 343, 344, 345, - 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, - 356, 357, 358, -1, 360, 361, 362, 363, 364, 365, - 366, 367, 368, 369, 370, 371, 372, -1, 374, 375, - -1, 377, 378, 379, 380, 381, 382, 383, -1, 385, - 386, -1, -1, 389, 390, 391, 392, 393, 394, 395, - 396, 397, 398, 399, 400, 401, -1, 403, 404, 405, - 406, 407, 408, 409, -1, 411, 412, 413, 414, 415, - 416, 417, -1, 419, 420, 421, 422, 423, 424, -1, - -1, 427, -1, -1, 430, 431, 432, 433, 434, 435, - 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, - 446, 447, 448, 449, 450, -1, -1, -1, -1, -1, - -1, 457, 458, -1, -1, -1, -1, 463, -1, -1, - -1, 467, 3, 4, 5, 6, 7, 8, 9, 10, - -1, -1, -1, -1, -1, -1, -1, 18, 19, 20, - 21, 22, 23, 24, 25, -1, 27, 28, 29, -1, - -1, -1, -1, 34, -1, -1, 37, 38, -1, 40, - 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, - 51, -1, 53, 54, 55, 56, 57, 58, 59, 60, - 61, 62, 63, 64, -1, 66, 67, 68, 69, 70, - -1, 72, -1, 74, 75, 76, 77, 78, 79, 80, - 81, 82, -1, 84, 85, 86, 87, 88, 89, -1, - 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, + 359, -1, 361, 362, 363, 364, 365, 366, 367, 368, + 369, 370, 371, 372, 373, 374, 375, 376, -1, 378, + 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, + 389, 390, 391, 392, -1, 394, 395, -1, 397, 398, + 399, 400, 401, 402, 403, -1, 405, 406, 407, -1, + -1, 410, 411, 412, 413, 414, 415, 416, 417, 418, + 419, 420, 421, 422, 423, -1, 425, 426, 427, 428, + 429, 430, 431, -1, 433, 434, 435, 436, 437, 438, + 439, -1, 441, 442, 443, 444, 445, 446, -1, -1, + 449, -1, -1, 452, 453, 454, 455, 456, 457, 458, + 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, + 469, 470, 471, 472, -1, -1, -1, -1, -1, 478, + -1, 480, 481, -1, -1, -1, -1, -1, -1, -1, + 489, 490, 3, -1, 5, 6, -1, 8, 9, 10, + 11, 12, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 22, 23, 24, 25, 26, 27, 28, 29, -1, + 31, 32, 33, -1, -1, -1, -1, 38, -1, -1, + 41, 42, -1, 44, 45, 46, 47, 48, 49, 50, + 51, 52, 53, 54, 55, -1, 57, 58, 59, 60, + 61, 62, 63, 64, 65, 66, 67, 68, 69, -1, + 71, 72, 73, 74, 75, -1, 77, -1, 79, 80, + 81, 82, 83, 84, 85, 86, 87, -1, 89, 90, + 91, 92, 93, 94, -1, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, - 111, 112, -1, 114, 115, 116, 117, 118, 119, -1, - 121, 122, 123, 124, -1, -1, 127, 128, 129, 130, - 131, -1, 133, 134, 135, -1, 137, 138, 139, -1, - 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, - 151, -1, 153, 154, 155, 156, -1, 158, -1, 160, - 161, -1, 163, 164, 165, 166, 167, -1, 169, 170, - -1, 172, 173, -1, 175, 176, 177, 178, 179, 180, - 181, 182, 183, 184, -1, 186, 187, 188, 189, 190, - 191, -1, 193, 194, 195, 196, 197, 198, 199, 200, - 201, -1, 203, -1, 205, 206, 207, 208, 209, 210, - 211, 212, 213, 214, -1, -1, 217, 218, 219, 220, - 221, -1, 223, 224, 225, 226, 227, 228, 229, 230, + 111, 112, 113, 114, 115, 116, 117, -1, 119, 120, + 121, 122, 123, 124, -1, 126, 127, 128, 129, -1, + -1, 132, 133, 134, 135, 136, -1, 138, 139, 140, + -1, 142, 143, 144, -1, 146, 147, 148, 149, 150, + 151, 152, 153, 154, 155, 156, 157, -1, 159, 160, + 161, 162, -1, 164, -1, 166, 167, -1, 169, 170, + 171, 172, 173, -1, 175, 176, -1, 178, 179, 180, + -1, 182, 183, 184, 185, 186, 187, 188, 189, 190, + 191, -1, 193, 194, 195, 196, 197, 198, 199, -1, + 201, 202, 203, 204, 205, 206, 207, 208, 209, -1, + 211, -1, 213, 214, 215, 216, 217, 218, 219, 220, + 221, 222, -1, -1, 225, 226, 227, 228, 229, -1, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, - 261, 262, -1, 264, 265, -1, -1, 268, 269, 270, - -1, -1, 273, 274, 275, 276, 277, 278, 279, 280, - 281, 282, 283, 284, 285, 286, 287, -1, 289, 290, - 291, 292, 293, 294, 295, 296, -1, 298, 299, 300, - 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, + 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, + 271, 272, 273, 274, 275, 276, -1, 278, 279, -1, + -1, 282, 283, 284, -1, -1, 287, 288, 289, 290, + 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, + 301, 302, -1, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, - 321, 322, 323, 324, -1, 326, 327, 328, 329, 330, + 321, 322, 323, 324, 325, 326, 327, -1, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, - 341, -1, 343, 344, 345, 346, 347, 348, 349, 350, - 351, 352, 353, 354, 355, 356, 357, 358, -1, 360, + -1, 342, 343, 344, 345, 346, 347, 348, 349, 350, + 351, 352, 353, 354, 355, 356, 357, 358, 359, -1, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, - 371, 372, -1, 374, 375, -1, 377, 378, 379, 380, - 381, 382, 383, -1, 385, 386, -1, -1, 389, 390, - 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, - 401, -1, 403, 404, 405, 406, 407, 408, 409, -1, + 371, 372, 373, 374, 375, 376, -1, 378, 379, 380, + 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, + 391, 392, -1, 394, 395, -1, 397, 398, 399, 400, + 401, 402, 403, -1, 405, 406, 407, -1, -1, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, - 421, 422, 423, 424, -1, -1, 427, -1, -1, 430, - 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, - 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, - -1, -1, -1, -1, -1, -1, 457, 458, -1, -1, - -1, -1, 463, -1, -1, -1, 467, 3, 4, 5, - 6, 7, 8, 9, 10, -1, -1, -1, -1, -1, - -1, -1, 18, 19, 20, 21, 22, 23, 24, 25, - -1, 27, 28, 29, -1, -1, -1, -1, 34, -1, - -1, 37, 38, -1, 40, 41, 42, 43, 44, 45, - 46, 47, 48, 49, 50, 51, -1, 53, 54, 55, - 56, 57, 58, 59, 60, 61, 62, 63, 64, -1, - 66, 67, 68, 69, 70, -1, 72, -1, 74, 75, - 76, 77, 78, 79, 80, 81, 82, -1, 84, 85, - 86, 87, 88, 89, -1, 91, 92, 93, 94, 95, - 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, - 106, 107, 108, 109, 110, 111, 112, -1, 114, 115, - 116, 117, 118, 119, -1, 121, 122, 123, 124, -1, - -1, 127, 128, 129, 130, 131, -1, 133, 134, 135, - -1, 137, 138, 139, -1, 141, 142, 143, 144, 145, - 146, 147, 148, 149, 150, 151, -1, 153, 154, 155, - 156, -1, 158, -1, 160, 161, -1, 163, 164, 165, - 166, 167, -1, 169, 170, -1, 172, 173, -1, 175, - 176, 177, 178, 179, 180, 181, 182, 183, 184, -1, - 186, 187, 188, 189, 190, 191, -1, 193, 194, 195, - 196, 197, 198, 199, 200, 201, -1, 203, -1, 205, - 206, 207, 208, 209, 210, 211, 212, 213, 214, -1, - -1, 217, 218, 219, 220, 221, -1, 223, 224, 225, - 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, - 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, - 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, - 256, 257, 258, 259, 260, 261, 262, -1, 264, 265, - -1, -1, 268, 269, 270, -1, -1, 273, 274, 275, - 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, - 286, 287, -1, 289, 290, 291, 292, 293, 294, 295, - 296, -1, 298, 299, 300, 301, 302, 303, 304, 305, - 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, - 316, 317, 318, 319, 320, 321, 322, 323, 324, -1, - 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, - 336, 337, 338, 339, 340, 341, -1, 343, 344, 345, - 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, - 356, 357, 358, -1, 360, 361, 362, 363, 364, 365, - 366, 367, 368, 369, 370, 371, 372, -1, 374, 375, - -1, 377, 378, 379, 380, 381, 382, 383, -1, 385, - 386, -1, -1, 389, 390, 391, 392, 393, 394, 395, - 396, 397, 398, 399, 400, 401, -1, 403, 404, 405, - 406, 407, 408, 409, -1, 411, 412, 413, 414, 415, - 416, 417, -1, 419, 420, 421, 422, 423, 424, -1, - -1, 427, -1, -1, 430, 431, 432, 433, 434, 435, - 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, - 446, 447, 448, 449, 450, -1, -1, -1, -1, -1, - -1, 457, 458, -1, -1, -1, -1, 463, -1, -1, - -1, 467, 3, 4, 5, 6, 7, 8, 9, 10, - -1, -1, -1, -1, -1, -1, -1, 18, 19, 20, - 21, 22, 23, 24, 25, -1, 27, 28, 29, -1, - -1, -1, -1, 34, -1, -1, 37, 38, -1, 40, - 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, - 51, -1, 53, 54, 55, 56, 57, 58, 59, 60, - 61, 62, 63, 64, -1, 66, 67, 68, 69, 70, - -1, 72, -1, 74, 75, 76, 77, 78, 79, 80, - 81, 82, -1, 84, 85, 86, 87, 88, 89, -1, - 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, - 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, - 111, 112, -1, 114, 115, 116, 117, 118, 119, -1, - 121, 122, 123, 124, -1, -1, 127, 128, 129, 130, - 131, -1, 133, 134, 135, -1, 137, 138, 139, -1, - 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, - 151, -1, 153, 154, 155, 156, -1, 158, -1, 160, - 161, -1, 163, 164, 165, 166, 167, -1, 169, 170, - -1, 172, 173, -1, 175, 176, 177, 178, 179, 180, - 181, 182, 183, 184, -1, 186, 187, 188, 189, 190, - 191, -1, 193, 194, 195, 196, 197, 198, 199, 200, - 201, -1, 203, -1, 205, 206, 207, 208, 209, 210, - 211, 212, 213, 214, -1, -1, 217, 218, 219, 220, - 221, -1, 223, 224, 225, 226, 227, 228, 229, 230, - 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, - 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, - 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, - 261, 262, -1, 264, 265, -1, -1, 268, 269, 270, - -1, -1, 273, 274, 275, 276, 277, 278, 279, 280, - 281, 282, 283, 284, 285, 286, 287, -1, 289, 290, - 291, 292, 293, 294, 295, 296, -1, 298, 299, 300, - 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, - 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, - 321, 322, 323, 324, -1, 326, 327, 328, 329, 330, - 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, - 341, -1, 343, 344, 345, 346, 347, 348, 349, 350, - 351, 352, 353, 354, 355, 356, 357, 358, -1, 360, - 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, - 371, 372, -1, 374, 375, -1, 377, 378, 379, 380, - 381, 382, 383, -1, 385, 386, -1, -1, 389, 390, - 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, - 401, -1, 403, 404, 405, 406, 407, 408, 409, -1, - 411, 412, 413, 414, 415, 416, 417, -1, 419, 420, - 421, 422, 423, 424, -1, -1, 427, -1, -1, 430, - 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, - 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, - -1, -1, -1, -1, -1, -1, 457, 458, -1, -1, - -1, -1, 463, -1, -1, -1, 467, 3, 4, 5, - 6, 7, 8, 9, 10, -1, -1, -1, -1, -1, - -1, -1, 18, 19, 20, 21, 22, 23, 24, 25, - -1, 27, 28, 29, -1, -1, -1, -1, 34, -1, - -1, 37, 38, -1, 40, 41, 42, 43, 44, 45, - 46, 47, 48, 49, 50, 51, -1, 53, 54, 55, - 56, 57, 58, 59, 60, 61, 62, 63, 64, -1, - 66, 67, 68, 69, 70, -1, 72, -1, 74, 75, - 76, 77, 78, 79, 80, 81, 82, -1, 84, 85, - 86, 87, 88, 89, -1, 91, 92, 93, 94, 95, - 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, - 106, 107, 108, 109, 110, 111, 112, -1, 114, 115, - 116, 117, 118, 119, -1, 121, 122, 123, 124, -1, - -1, 127, 128, 129, 130, 131, -1, 133, 134, 135, - -1, 137, 138, 139, -1, 141, 142, 143, 144, 145, - 146, 147, 148, 149, 150, 151, -1, 153, 154, 155, - 156, -1, 158, -1, 160, 161, -1, 163, 164, 165, - 166, 167, -1, 169, 170, -1, 172, 173, -1, 175, - 176, 177, 178, 179, 180, 181, 182, 183, 184, -1, - 186, 187, 188, 189, 190, 191, -1, 193, 194, 195, - 196, 197, 198, 199, 200, 201, -1, 203, -1, 205, - 206, 207, 208, 209, 210, 211, 212, 213, 214, -1, - -1, 217, 218, 219, 220, 221, -1, 223, 224, 225, - 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, - 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, - 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, - 256, 257, 258, 259, 260, 261, 262, -1, 264, 265, - -1, -1, 268, 269, 270, -1, -1, 273, 274, 275, - 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, - 286, 287, -1, 289, 290, 291, 292, 293, 294, 295, - 296, -1, 298, 299, 300, 301, 302, 303, 304, 305, - 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, - 316, 317, 318, 319, 320, 321, 322, 323, 324, -1, - 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, - 336, 337, 338, 339, 340, 341, -1, 343, 344, 345, - 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, - 356, 357, 358, -1, 360, 361, 362, 363, 364, 365, - 366, 367, 368, 369, 370, 371, 372, -1, 374, 375, - -1, 377, 378, 379, 380, 381, 382, 383, -1, 385, - 386, -1, -1, 389, 390, 391, 392, 393, 394, 395, - 396, 397, 398, 399, 400, 401, -1, 403, 404, 405, - 406, 407, 408, 409, -1, 411, 412, 413, 414, 415, - 416, 417, -1, 419, 420, 421, 422, 423, 424, -1, - -1, 427, -1, -1, 430, 431, 432, 433, 434, 435, - 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, - 446, 447, 448, 449, 450, -1, -1, -1, -1, -1, - -1, 457, 458, -1, -1, -1, -1, 463, -1, -1, - -1, 467, 3, 4, 5, 6, 7, 8, 9, 10, - -1, -1, -1, -1, -1, -1, -1, 18, 19, 20, - 21, 22, 23, 24, 25, -1, 27, 28, 29, -1, - -1, -1, -1, 34, -1, -1, 37, 38, -1, 40, - 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, - 51, -1, 53, 54, 55, 56, 57, 58, 59, 60, - 61, 62, 63, 64, -1, 66, 67, 68, 69, 70, - -1, 72, -1, 74, 75, 76, 77, 78, 79, 80, - 81, 82, -1, 84, 85, 86, 87, 88, 89, -1, - 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, - 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, - 111, 112, -1, 114, 115, 116, 117, 118, 119, -1, - 121, 122, 123, 124, -1, -1, 127, 128, 129, 130, - 131, -1, 133, 134, 135, -1, 137, 138, 139, -1, - 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, - 151, -1, 153, 154, 155, 156, -1, 158, -1, 160, - 161, -1, 163, 164, 165, 166, 167, -1, 169, 170, - -1, 172, 173, -1, 175, 176, 177, 178, 179, 180, - 181, 182, 183, 184, -1, 186, 187, 188, 189, 190, - 191, -1, 193, 194, 195, 196, 197, 198, 199, 200, - 201, -1, 203, -1, 205, 206, 207, 208, 209, 210, - 211, 212, 213, 214, -1, -1, 217, 218, 219, 220, - 221, -1, 223, 224, 225, 226, 227, 228, 229, 230, - 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, - 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, - 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, - 261, 262, -1, 264, 265, -1, -1, 268, 269, 270, - -1, -1, 273, 274, 275, 276, 277, 278, 279, 280, - 281, 282, 283, 284, 285, 286, 287, -1, 289, 290, - 291, 292, 293, 294, 295, 296, -1, 298, 299, 300, - 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, - 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, - 321, 322, 323, 324, -1, 326, 327, 328, 329, 330, - 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, - 341, -1, 343, 344, 345, 346, 347, 348, 349, 350, - 351, 352, 353, 354, 355, 356, 357, 358, -1, 360, - 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, - 371, 372, -1, 374, 375, -1, 377, 378, 379, 380, - 381, 382, 383, -1, 385, 386, -1, -1, 389, 390, - 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, - 401, -1, 403, 404, 405, 406, 407, 408, 409, -1, - 411, 412, 413, 414, 415, 416, 417, -1, 419, 420, - 421, 422, 423, 424, -1, -1, 427, -1, -1, 430, - 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, - 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, - -1, -1, -1, -1, -1, -1, 457, 458, -1, -1, - -1, -1, 463, -1, -1, -1, 467, 3, 4, 5, - 6, 7, 8, 9, 10, -1, -1, -1, -1, -1, - -1, -1, 18, 19, 20, 21, 22, 23, 24, 25, - -1, 27, 28, 29, -1, -1, -1, -1, 34, -1, - -1, 37, 38, -1, 40, 41, 42, 43, 44, 45, - 46, 47, 48, 49, 50, 51, -1, 53, 54, 55, - 56, 57, 58, 59, 60, 61, 62, 63, 64, -1, - 66, 67, 68, 69, 70, -1, 72, -1, 74, 75, - 76, 77, 78, 79, 80, 81, 82, -1, 84, 85, - 86, 87, 88, 89, -1, 91, 92, 93, 94, 95, - 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, - 106, 107, 108, 109, 110, 111, 112, -1, 114, 115, - 116, 117, 118, 119, -1, 121, 122, 123, 124, -1, - -1, 127, 128, 129, 130, 131, -1, 133, 134, 135, - -1, 137, 138, 139, -1, 141, 142, 143, 144, 145, - 146, 147, 148, 149, 150, 151, -1, 153, 154, 155, - 156, -1, 158, -1, 160, 161, -1, 163, 164, 165, - 166, 167, -1, 169, 170, -1, 172, 173, -1, 175, - 176, 177, 178, 179, 180, 181, 182, 183, 184, -1, - 186, 187, 188, 189, 190, 191, -1, 193, 194, 195, - 196, 197, 198, 199, 200, 201, -1, 203, -1, 205, - 206, 207, 208, 209, 210, 211, 212, 213, 214, -1, - -1, 217, 218, 219, 220, 221, -1, 223, 224, 225, - 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, - 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, - 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, - 256, 257, 258, 259, 260, 261, 262, -1, 264, 265, - -1, -1, 268, 269, 270, -1, -1, 273, 274, 275, - 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, - 286, 287, -1, 289, 290, 291, 292, 293, 294, 295, - 296, -1, 298, 299, 300, 301, 302, 303, 304, 305, - 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, - 316, 317, 318, 319, 320, 321, 322, 323, 324, -1, - 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, - 336, 337, 338, 339, 340, 341, -1, 343, 344, 345, - 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, - 356, 357, 358, -1, 360, 361, 362, 363, 364, 365, - 366, 367, 368, 369, 370, 371, 372, -1, 374, 375, - -1, 377, 378, 379, 380, 381, 382, 383, -1, 385, - 386, -1, -1, 389, 390, 391, 392, 393, 394, 395, - 396, 397, 398, 399, 400, 401, -1, 403, 404, 405, - 406, 407, 408, 409, -1, 411, 412, 413, 414, 415, - 416, 417, -1, 419, 420, 421, 422, 423, 424, -1, - -1, 427, -1, -1, 430, 431, 432, 433, 434, 435, - 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, - 446, 447, 448, 449, 450, -1, -1, -1, -1, -1, - -1, 457, 458, -1, -1, -1, -1, 463, -1, -1, - -1, 467, 3, 4, 5, 6, 7, 8, 9, 10, - -1, -1, -1, -1, -1, -1, -1, 18, 19, 20, - 21, 22, 23, 24, 25, -1, 27, 28, 29, -1, - -1, -1, -1, 34, -1, -1, 37, 38, -1, 40, - 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, - 51, -1, 53, 54, 55, 56, 57, 58, 59, 60, - 61, 62, 63, 64, -1, 66, 67, 68, 69, 70, - -1, 72, -1, 74, 75, 76, 77, 78, 79, 80, - 81, 82, -1, 84, 85, 86, 87, 88, 89, -1, - 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, - 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, - 111, 112, -1, 114, 115, 116, 117, 118, 119, -1, - 121, 122, 123, 124, -1, -1, 127, 128, 129, 130, - 131, -1, 133, 134, 135, -1, 137, 138, 139, -1, - 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, - 151, -1, 153, 154, 155, 156, -1, 158, -1, 160, - 161, -1, 163, 164, 165, 166, 167, -1, 169, 170, - -1, 172, 173, -1, 175, 176, 177, 178, 179, 180, - 181, 182, 183, 184, -1, 186, 187, 188, 189, 190, - 191, -1, 193, 194, 195, 196, 197, 198, 199, 200, - 201, -1, 203, -1, 205, 206, 207, 208, 209, 210, - 211, 212, 213, 214, -1, -1, 217, 218, 219, 220, - 221, -1, 223, 224, 225, 226, 227, 228, 229, 230, - 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, - 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, - 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, - 261, 262, -1, 264, 265, -1, -1, 268, 269, 270, - -1, -1, 273, 274, 275, 276, 277, 278, 279, 280, - 281, 282, 283, 284, 285, 286, 287, -1, 289, 290, - 291, 292, 293, 294, 295, 296, -1, 298, 299, 300, - 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, - 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, - 321, 322, 323, 324, -1, 326, 327, 328, 329, 330, - 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, - 341, -1, 343, 344, 345, 346, 347, 348, 349, 350, - 351, 352, 353, 354, 355, 356, 357, 358, -1, 360, - 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, - 371, 372, -1, 374, 375, -1, 377, 378, 379, 380, - 381, 382, 383, -1, 385, 386, -1, -1, 389, 390, - 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, - 401, -1, 403, 404, 405, 406, 407, 408, 409, -1, - 411, 412, 413, 414, 415, 416, 417, -1, 419, 420, - 421, 422, 423, 424, -1, -1, 427, -1, -1, 430, - 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, - 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, - -1, -1, -1, -1, -1, -1, 457, 458, -1, -1, - -1, -1, 463, -1, -1, -1, 467, 3, 4, 5, - 6, 7, 8, 9, 10, -1, -1, -1, -1, -1, - -1, -1, 18, 19, 20, 21, 22, 23, 24, 25, - -1, 27, 28, 29, -1, -1, -1, -1, 34, -1, - -1, 37, 38, -1, 40, 41, 42, 43, 44, 45, - 46, 47, 48, 49, 50, 51, -1, 53, 54, 55, - 56, 57, 58, 59, 60, 61, 62, 63, 64, -1, - 66, 67, 68, 69, 70, -1, 72, -1, 74, 75, - 76, 77, 78, 79, 80, 81, 82, -1, 84, 85, - 86, 87, 88, 89, -1, 91, 92, 93, 94, 95, - 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, - 106, 107, 108, 109, 110, 111, 112, -1, 114, 115, - 116, 117, 118, 119, -1, 121, 122, 123, 124, -1, - -1, 127, 128, 129, 130, 131, -1, 133, 134, 135, - -1, 137, 138, 139, -1, 141, 142, 143, 144, 145, - 146, 147, 148, 149, 150, 151, -1, 153, 154, 155, - 156, -1, 158, -1, 160, 161, -1, 163, 164, 165, - 166, 167, -1, 169, 170, -1, 172, 173, -1, 175, - 176, 177, 178, 179, 180, 181, 182, 183, 184, -1, - 186, 187, 188, 189, 190, 191, -1, 193, 194, 195, - 196, 197, 198, 199, 200, 201, -1, 203, -1, 205, - 206, 207, 208, 209, 210, 211, 212, 213, 214, -1, - -1, 217, 218, 219, 220, 221, -1, 223, 224, 225, - 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, - 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, - 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, - 256, 257, 258, 259, 260, 261, 262, -1, 264, 265, - -1, -1, 268, 269, 270, -1, -1, 273, 274, 275, - 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, - 286, 287, -1, 289, 290, 291, 292, 293, 294, 295, - 296, -1, 298, 299, 300, 301, 302, 303, 304, 305, - 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, - 316, 317, 318, 319, 320, 321, 322, 323, 324, -1, - 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, - 336, 337, 338, 339, 340, 341, -1, 343, 344, 345, - 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, - 356, 357, 358, -1, 360, 361, 362, 363, 364, 365, - 366, 367, 368, 369, 370, 371, 372, -1, 374, 375, - -1, 377, 378, 379, 380, 381, 382, 383, -1, 385, - 386, -1, -1, 389, 390, 391, 392, 393, 394, 395, - 396, 397, 398, 399, 400, 401, -1, 403, 404, 405, - 406, 407, 408, 409, -1, 411, 412, 413, 414, 415, - 416, 417, -1, 419, 420, 421, 422, 423, 424, -1, - -1, 427, -1, -1, 430, 431, 432, 433, 434, 435, - 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, - 446, 447, 448, 449, 450, -1, -1, -1, -1, -1, - -1, 457, 458, -1, -1, -1, -1, 463, -1, -1, - -1, 467, 3, 4, 5, 6, 7, 8, 9, 10, - -1, -1, -1, -1, -1, -1, -1, 18, 19, 20, - 21, 22, 23, 24, 25, -1, 27, 28, 29, -1, - -1, -1, -1, 34, -1, -1, 37, 38, -1, 40, - 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, - 51, -1, 53, 54, 55, 56, 57, 58, 59, 60, - 61, 62, 63, 64, -1, 66, 67, 68, 69, 70, - -1, 72, -1, 74, 75, 76, 77, 78, 79, 80, - 81, 82, -1, 84, 85, 86, 87, 88, 89, -1, - 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, - 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, - 111, 112, -1, 114, 115, 116, 117, 118, 119, -1, - 121, 122, 123, 124, -1, -1, 127, 128, 129, 130, - 131, -1, 133, 134, 135, -1, 137, 138, 139, -1, - 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, - 151, -1, 153, 154, 155, 156, -1, 158, -1, 160, - 161, -1, 163, 164, 165, 166, 167, -1, 169, 170, - -1, 172, 173, -1, 175, 176, 177, 178, 179, 180, - 181, 182, 183, 184, -1, 186, 187, 188, 189, 190, - 191, -1, 193, 194, 195, 196, 197, 198, 199, 200, - 201, -1, 203, -1, 205, 206, 207, 208, 209, 210, - 211, 212, 213, 214, -1, -1, 217, 218, 219, 220, - 221, -1, 223, 224, 225, 226, 227, 228, 229, 230, - 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, - 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, - 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, - 261, 262, -1, 264, 265, -1, -1, 268, 269, 270, - -1, -1, 273, 274, 275, 276, 277, 278, 279, 280, - 281, 282, 283, 284, 285, 286, 287, -1, 289, 290, - 291, 292, 293, 294, 295, 296, -1, 298, 299, 300, - 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, - 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, - 321, 322, 323, 324, -1, 326, 327, 328, 329, 330, - 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, - 341, -1, 343, 344, 345, 346, 347, 348, 349, 350, - 351, 352, 353, 354, 355, 356, 357, 358, -1, 360, - 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, - 371, 372, -1, 374, 375, -1, 377, 378, 379, 380, - 381, 382, 383, -1, 385, 386, -1, -1, 389, 390, - 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, - 401, -1, 403, 404, 405, 406, 407, 408, 409, -1, - 411, 412, 413, 414, 415, 416, 417, -1, 419, 420, - 421, 422, 423, 424, -1, -1, 427, -1, -1, 430, - 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, - 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, - -1, -1, -1, -1, -1, -1, 457, 458, -1, -1, - -1, -1, 463, -1, -1, -1, 467, 3, 4, 5, - 6, 7, 8, 9, 10, -1, -1, -1, -1, -1, - -1, -1, 18, 19, 20, 21, 22, 23, 24, 25, - -1, 27, 28, 29, -1, -1, -1, -1, 34, -1, - -1, 37, 38, -1, 40, 41, 42, 43, 44, 45, - 46, 47, 48, 49, 50, 51, -1, 53, 54, 55, - 56, 57, 58, 59, 60, 61, 62, 63, 64, -1, - 66, 67, 68, 69, 70, -1, 72, -1, 74, 75, - 76, 77, 78, 79, 80, 81, 82, -1, 84, 85, - 86, 87, 88, 89, -1, 91, 92, 93, 94, 95, - 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, - 106, 107, 108, 109, 110, 111, 112, -1, 114, 115, - 116, 117, 118, 119, -1, 121, 122, 123, 124, -1, - -1, 127, 128, 129, 130, 131, -1, 133, 134, 135, - -1, 137, 138, 139, -1, 141, 142, 143, 144, 145, - 146, 147, 148, 149, 150, 151, -1, 153, 154, 155, - 156, -1, 158, -1, 160, 161, -1, 163, 164, 165, - 166, 167, -1, 169, 170, -1, 172, 173, -1, 175, - 176, 177, 178, 179, 180, 181, 182, 183, 184, -1, - 186, 187, 188, 189, 190, 191, -1, 193, 194, 195, - 196, 197, 198, 199, 200, 201, -1, 203, -1, 205, - 206, 207, 208, 209, 210, 211, 212, 213, 214, -1, - -1, 217, 218, 219, 220, 221, -1, 223, 224, 225, - 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, - 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, - 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, - 256, 257, 258, 259, 260, 261, 262, -1, 264, 265, - -1, -1, 268, 269, 270, -1, -1, 273, 274, 275, - 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, - 286, 287, -1, 289, 290, 291, 292, 293, 294, 295, - 296, -1, 298, 299, 300, 301, 302, 303, 304, 305, - 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, - 316, 317, 318, 319, 320, 321, 322, 323, 324, -1, - 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, - 336, 337, 338, 339, 340, 341, -1, 343, 344, 345, - 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, - 356, 357, 358, -1, 360, 361, 362, 363, 364, 365, - 366, 367, 368, 369, 370, 371, 372, -1, 374, 375, - -1, 377, 378, 379, 380, 381, 382, 383, -1, 385, - 386, -1, -1, 389, 390, 391, 392, 393, 394, 395, - 396, 397, 398, 399, 400, 401, -1, 403, 404, 405, - 406, 407, 408, 409, -1, 411, 412, 413, 414, 415, - 416, 417, -1, 419, 420, 421, 422, 423, 424, -1, - -1, 427, -1, -1, 430, 431, 432, 433, 434, 435, - 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, - 446, 447, 448, 449, 450, -1, -1, -1, -1, -1, - -1, 457, 458, -1, -1, -1, -1, 463, -1, -1, - -1, 467, 3, 4, 5, 6, 7, 8, 9, 10, - -1, -1, -1, -1, -1, -1, -1, 18, 19, 20, - 21, 22, 23, 24, 25, -1, 27, 28, 29, -1, - -1, -1, -1, 34, -1, -1, 37, 38, -1, 40, - 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, - 51, -1, 53, 54, 55, 56, 57, 58, 59, 60, - 61, 62, 63, 64, -1, 66, 67, 68, 69, 70, - -1, 72, -1, 74, 75, 76, 77, 78, 79, 80, - 81, 82, -1, 84, 85, 86, 87, 88, 89, -1, - 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, - 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, - 111, 112, -1, 114, 115, 116, 117, 118, 119, -1, - 121, 122, 123, 124, -1, -1, 127, 128, 129, 130, - 131, -1, 133, 134, 135, -1, 137, 138, 139, -1, - 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, - 151, -1, 153, 154, 155, 156, -1, 158, -1, 160, - 161, -1, 163, 164, 165, 166, 167, -1, 169, 170, - -1, 172, 173, -1, 175, 176, 177, 178, 179, 180, - 181, 182, 183, 184, -1, 186, 187, 188, 189, 190, - 191, -1, 193, 194, 195, 196, 197, 198, 199, 200, - 201, -1, 203, -1, 205, 206, 207, 208, 209, 210, - 211, 212, 213, 214, -1, -1, 217, 218, 219, 220, - 221, -1, 223, 224, 225, 226, 227, 228, 229, 230, - 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, - 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, - -1, 252, 253, 254, 255, 256, 257, 258, 259, 260, - 261, 262, -1, 264, 265, -1, -1, 268, 269, 270, - -1, -1, 273, 274, 275, 276, 277, 278, 279, 280, - 281, 282, 283, 284, 285, 286, 287, -1, 289, 290, - 291, 292, 293, 294, 295, 296, -1, 298, 299, 300, - 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, - 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, - 321, 322, 323, 324, -1, 326, 327, 328, 329, 330, - 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, - 341, -1, 343, 344, 345, 346, 347, 348, 349, 350, - 351, 352, 353, 354, 355, 356, 357, 358, -1, 360, - 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, - 371, 372, -1, 374, 375, -1, 377, 378, 379, 380, - 381, 382, 383, -1, 385, 386, -1, -1, 389, 390, - 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, - 401, -1, -1, 404, 405, 406, 407, 408, 409, -1, - 411, 412, 413, 414, 415, 416, 417, -1, 419, 420, - 421, 422, 423, 424, -1, -1, 427, -1, -1, 430, - 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, - 441, 442, 443, 444, 445, 446, 447, 448, 449, -1, - -1, -1, -1, -1, -1, -1, 457, 458, -1, -1, - -1, -1, 463, -1, -1, -1, 467, 3, 4, 5, - 6, 7, 8, 9, 10, -1, -1, -1, -1, -1, - -1, -1, 18, 19, 20, 21, 22, 23, 24, 25, - -1, 27, 28, 29, -1, -1, -1, -1, 34, -1, - -1, 37, 38, -1, 40, 41, 42, 43, 44, 45, - 46, 47, 48, 49, 50, 51, -1, 53, 54, 55, - 56, 57, 58, 59, 60, 61, 62, 63, 64, -1, - 66, 67, 68, 69, 70, -1, 72, -1, 74, 75, - 76, 77, 78, 79, 80, 81, 82, -1, 84, 85, - 86, 87, 88, 89, -1, 91, 92, 93, 94, 95, - 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, - 106, 107, 108, 109, 110, 111, 112, -1, 114, 115, - 116, 117, 118, 119, -1, 121, 122, 123, 124, -1, - -1, 127, 128, 129, 130, 131, -1, 133, 134, 135, - -1, 137, 138, 139, -1, 141, 142, 143, 144, 145, - 146, 147, 148, 149, 150, 151, -1, 153, 154, 155, - 156, -1, 158, -1, 160, 161, -1, 163, 164, 165, - 166, 167, -1, 169, 170, -1, 172, 173, -1, 175, - 176, 177, 178, 179, 180, 181, 182, 183, 184, -1, - 186, 187, 188, 189, 190, 191, -1, 193, 194, 195, - 196, 197, 198, 199, 200, 201, -1, 203, -1, 205, - -1, -1, 208, 209, 210, 211, 212, 213, 214, -1, - -1, 217, 218, 219, 220, 221, -1, 223, 224, 225, - 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, - 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, - 246, 247, 248, 249, 250, 251, 252, 253, -1, 255, - 256, 257, 258, 259, 260, 261, 262, -1, 264, 265, - -1, -1, 268, 269, 270, -1, -1, 273, 274, 275, - 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, - 286, 287, -1, 289, 290, 291, 292, 293, 294, 295, - 296, -1, 298, 299, 300, 301, 302, 303, 304, 305, - 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, - 316, 317, 318, 319, 320, 321, 322, 323, 324, -1, - 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, - 336, 337, 338, 339, 340, 341, -1, 343, 344, 345, - 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, - 356, 357, 358, -1, 360, 361, 362, 363, 364, 365, - 366, 367, 368, 369, 370, 371, 372, -1, 374, 375, - -1, 377, 378, 379, 380, 381, 382, 383, -1, 385, - 386, -1, -1, 389, 390, 391, 392, 393, 394, 395, - 396, 397, 398, 399, 400, 401, -1, 403, 404, 405, - 406, 407, 408, 409, -1, 411, 412, 413, 414, 415, - 416, 417, -1, 419, 420, 421, 422, 423, 424, -1, - -1, 427, -1, -1, 430, 431, 432, 433, 434, 435, - 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, - 446, 447, 448, 449, 450, -1, -1, -1, -1, -1, - -1, 457, 458, -1, -1, -1, -1, 463, -1, -1, - -1, 467, 3, 4, 5, 6, 7, 8, 9, 10, - -1, -1, -1, -1, -1, -1, -1, 18, 19, 20, - 21, 22, 23, 24, 25, -1, 27, 28, 29, -1, - -1, -1, -1, 34, -1, -1, 37, 38, -1, 40, - 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, - 51, -1, 53, 54, 55, 56, 57, 58, 59, 60, - 61, 62, 63, 64, -1, 66, 67, 68, 69, 70, - -1, 72, -1, 74, 75, 76, 77, 78, 79, 80, - 81, 82, -1, 84, 85, 86, 87, 88, 89, -1, - 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, - 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, - -1, 112, -1, 114, 115, 116, 117, 118, 119, -1, - 121, 122, 123, 124, -1, -1, 127, 128, 129, 130, - 131, -1, 133, 134, 135, -1, 137, 138, 139, -1, - 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, - 151, -1, 153, 154, 155, 156, -1, 158, -1, 160, - 161, -1, 163, 164, 165, 166, 167, -1, 169, 170, - -1, 172, 173, -1, 175, 176, 177, 178, 179, 180, - 181, 182, 183, 184, -1, 186, 187, 188, 189, 190, - 191, -1, 193, 194, 195, 196, 197, 198, 199, 200, - 201, -1, 203, -1, 205, 206, 207, 208, 209, 210, - 211, 212, 213, 214, -1, -1, 217, 218, 219, 220, - 221, -1, 223, 224, 225, 226, 227, 228, 229, 230, - 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, - 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, - -1, 252, 253, 254, 255, 256, 257, 258, 259, 260, - 261, 262, -1, 264, 265, -1, -1, 268, 269, 270, - -1, -1, 273, 274, 275, 276, 277, 278, 279, 280, - 281, 282, 283, 284, 285, 286, 287, -1, 289, 290, - 291, 292, 293, 294, 295, 296, -1, 298, 299, 300, - 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, - 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, - 321, 322, 323, 324, -1, 326, 327, 328, 329, 330, - 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, - 341, -1, 343, 344, 345, 346, 347, 348, 349, 350, - 351, 352, 353, 354, 355, 356, 357, 358, -1, 360, - 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, - 371, 372, -1, 374, 375, -1, 377, 378, 379, 380, - 381, 382, 383, -1, 385, 386, -1, -1, 389, 390, - 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, - 401, -1, -1, 404, 405, 406, 407, 408, 409, -1, - 411, 412, 413, 414, 415, 416, 417, -1, 419, 420, - 421, 422, 423, 424, -1, -1, 427, -1, -1, 430, - 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, - 441, 442, 443, 444, 445, 446, 447, 448, 449, -1, - -1, -1, -1, -1, -1, -1, 457, 458, -1, -1, - -1, -1, 463, -1, -1, -1, 467, 3, 4, 5, - 6, 7, -1, 9, 10, -1, -1, -1, -1, -1, - -1, -1, 18, 19, 20, 21, 22, 23, 24, 25, - -1, 27, 28, 29, -1, -1, -1, -1, 34, -1, - -1, 37, 38, -1, 40, 41, 42, 43, 44, 45, - 46, 47, 48, 49, 50, 51, -1, 53, 54, 55, - 56, 57, 58, 59, 60, 61, 62, 63, 64, -1, - 66, 67, 68, 69, 70, -1, 72, -1, 74, 75, - 76, 77, 78, 79, 80, 81, 82, -1, 84, 85, - 86, 87, 88, 89, -1, 91, 92, 93, 94, 95, - 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, - 106, 107, 108, 109, 110, -1, 112, -1, 114, 115, - 116, 117, 118, 119, -1, 121, 122, 123, 124, -1, - -1, 127, 128, 129, 130, 131, -1, 133, 134, 135, - -1, 137, 138, 139, -1, 141, 142, 143, 144, 145, - 146, 147, 148, 149, 150, 151, -1, 153, 154, 155, - 156, -1, 158, -1, 160, 161, -1, 163, 164, 165, - 166, 167, -1, 169, 170, -1, 172, 173, -1, 175, - 176, 177, 178, 179, 180, 181, 182, 183, 184, -1, - 186, 187, 188, 189, 190, 191, -1, 193, 194, 195, - 196, 197, 198, 199, 200, 201, -1, 203, -1, 205, - 206, 207, 208, 209, 210, 211, 212, 213, 214, -1, - -1, 217, 218, 219, 220, 221, -1, 223, 224, 225, - 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, - 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, - 246, 247, 248, 249, 250, -1, 252, 253, 254, 255, - 256, 257, 258, 259, 260, 261, 262, -1, 264, 265, - -1, -1, 268, 269, 270, -1, -1, 273, 274, 275, - 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, - 286, 287, -1, 289, 290, 291, 292, 293, 294, 295, - 296, -1, 298, 299, 300, 301, 302, 303, 304, 305, - 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, - 316, 317, 318, 319, 320, 321, 322, 323, 324, -1, - 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, - 336, 337, 338, 339, 340, 341, -1, 343, 344, 345, - 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, - 356, 357, 358, -1, 360, 361, 362, 363, 364, 365, - 366, 367, 368, 369, 370, 371, 372, -1, 374, 375, - -1, 377, 378, 379, 380, 381, 382, 383, -1, 385, - 386, -1, -1, 389, 390, 391, 392, 393, 394, 395, - 396, 397, 398, 399, 400, 401, -1, -1, 404, 405, - 406, 407, 408, 409, -1, 411, 412, 413, 414, 415, - 416, 417, -1, 419, 420, 421, 422, 423, 424, -1, - -1, 427, -1, -1, 430, 431, 432, 433, 434, 435, - 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, - 446, 447, 448, 449, -1, -1, -1, -1, -1, -1, - -1, 457, 458, -1, -1, -1, -1, 463, -1, -1, - -1, 467, 3, 4, 5, 6, 7, 8, 9, 10, - -1, -1, -1, -1, -1, -1, -1, 18, 19, 20, - 21, 22, 23, 24, 25, -1, 27, 28, 29, -1, - -1, -1, -1, 34, -1, -1, 37, 38, -1, 40, - 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, - 51, -1, 53, 54, 55, 56, 57, 58, 59, 60, - 61, 62, 63, 64, -1, 66, 67, 68, 69, 70, - -1, 72, -1, 74, 75, 76, 77, 78, 79, 80, - 81, 82, -1, 84, 85, 86, 87, 88, 89, -1, - 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, - 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, - -1, 112, -1, 114, 115, 116, 117, 118, 119, -1, - 121, 122, 123, 124, -1, -1, 127, 128, 129, 130, - 131, -1, 133, 134, 135, -1, 137, 138, 139, -1, - 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, - 151, -1, 153, 154, 155, 156, -1, 158, -1, 160, - 161, -1, 163, 164, 165, 166, 167, -1, 169, 170, - -1, 172, 173, -1, 175, 176, 177, 178, 179, 180, - 181, 182, 183, 184, -1, 186, 187, 188, 189, 190, - 191, -1, 193, 194, 195, 196, 197, 198, 199, 200, - 201, -1, 203, -1, 205, -1, 207, 208, 209, 210, - 211, 212, 213, 214, -1, -1, 217, 218, 219, 220, - 221, -1, 223, 224, 225, 226, 227, 228, 229, 230, - 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, - 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, - -1, 252, 253, 254, 255, 256, 257, 258, 259, 260, - 261, 262, -1, 264, 265, -1, -1, 268, 269, 270, - -1, -1, 273, 274, 275, 276, 277, 278, 279, 280, - 281, 282, 283, 284, 285, 286, 287, -1, 289, 290, - 291, 292, 293, 294, 295, 296, -1, 298, 299, 300, - 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, - 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, - 321, 322, 323, 324, -1, 326, 327, 328, 329, 330, - 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, - 341, -1, 343, 344, 345, 346, 347, 348, 349, 350, - 351, 352, 353, 354, 355, 356, 357, 358, -1, 360, - 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, - 371, 372, -1, 374, 375, -1, 377, 378, 379, 380, - 381, 382, 383, -1, 385, 386, -1, -1, 389, 390, - 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, - 401, -1, -1, 404, 405, 406, 407, 408, 409, -1, - 411, 412, 413, 414, 415, 416, 417, -1, 419, 420, - 421, 422, 423, 424, -1, -1, 427, -1, -1, 430, - 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, - 441, 442, 443, 444, 445, 446, 447, 448, 449, -1, - -1, -1, -1, -1, -1, -1, 457, 458, -1, -1, - -1, -1, 463, -1, -1, -1, 467, 3, 4, 5, - 6, 7, 8, 9, 10, -1, -1, -1, -1, -1, - -1, -1, 18, 19, 20, 21, 22, 23, 24, 25, - 26, 27, 28, 29, -1, -1, -1, 33, 34, -1, - -1, 37, 38, -1, 40, 41, 42, 43, 44, 45, - 46, -1, 48, 49, 50, 51, -1, 53, 54, 55, - 56, 57, 58, 59, 60, 61, 62, 63, 64, -1, - 66, 67, 68, 69, 70, -1, 72, -1, 74, 75, - 76, 77, 78, 79, 80, 81, 82, -1, 84, 85, - 86, 87, 88, 89, -1, 91, 92, 93, 94, 95, - 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, - 106, 107, 108, 109, 110, 111, 112, -1, 114, 115, - 116, 117, 118, 119, -1, 121, 122, 123, 124, -1, - -1, 127, 128, 129, 130, 131, -1, 133, 134, 135, - -1, 137, -1, 139, -1, 141, 142, 143, 144, 145, - 146, 147, 148, 149, 150, 151, -1, 153, 154, 155, - 156, -1, 158, -1, 160, 161, -1, 163, 164, 165, - 166, 167, -1, 169, 170, -1, 172, 173, -1, 175, - 176, 177, 178, 179, -1, 181, 182, 183, 184, -1, - 186, 187, 188, 189, 190, 191, -1, 193, 194, 195, - 196, 197, 198, 199, 200, 201, -1, 203, -1, 205, - -1, -1, 208, 209, 210, 211, 212, 213, 214, -1, - -1, 217, 218, 219, 220, -1, -1, 223, 224, 225, - 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, - 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, - 246, 247, 248, 249, 250, 251, 252, 253, -1, 255, - 256, 257, 258, 259, 260, 261, 262, -1, 264, 265, - -1, -1, 268, 269, 270, -1, -1, 273, 274, 275, - 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, - 286, 287, -1, 289, 290, 291, 292, 293, 294, 295, - 296, -1, 298, 299, 300, 301, 302, 303, 304, 305, - 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, - 316, 317, 318, 319, 320, 321, 322, 323, 324, -1, - 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, - 336, 337, 338, 339, 340, 341, -1, 343, 344, 345, - 346, 347, 348, 349, 350, 351, 352, 353, -1, 355, - 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, - 366, 367, 368, 369, 370, 371, 372, -1, 374, 375, - -1, 377, 378, 379, 380, 381, 382, 383, -1, 385, - 386, -1, -1, 389, 390, 391, 392, 393, 394, 395, - 396, 397, 398, 399, 400, 401, -1, 403, 404, 405, - 406, 407, 408, 409, -1, 411, 412, 413, 414, 415, - 416, 417, -1, 419, 420, 421, 422, 423, 424, -1, - -1, 427, -1, -1, 430, 431, 432, 433, 434, 435, - 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, - 446, 447, 448, 449, -1, -1, -1, -1, -1, -1, - -1, 457, 458, -1, -1, -1, -1, 463, -1, -1, - -1, 467, 3, 4, 5, 6, 7, -1, 9, 10, - -1, -1, -1, -1, -1, -1, -1, 18, 19, 20, - 21, 22, 23, 24, 25, -1, 27, 28, 29, -1, - -1, -1, -1, 34, -1, -1, 37, 38, -1, 40, - 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, - 51, -1, 53, 54, 55, 56, 57, 58, 59, 60, - 61, 62, 63, 64, -1, 66, 67, 68, 69, 70, - -1, 72, -1, 74, 75, 76, 77, 78, 79, 80, - 81, 82, -1, 84, 85, 86, 87, 88, 89, -1, - 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, - 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, - -1, 112, -1, 114, 115, 116, 117, 118, 119, -1, - 121, 122, 123, 124, -1, -1, 127, 128, 129, 130, - 131, -1, 133, 134, 135, -1, 137, 138, 139, -1, - 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, - 151, -1, 153, 154, 155, 156, -1, 158, -1, 160, - 161, -1, 163, 164, 165, 166, 167, -1, 169, 170, - -1, 172, 173, -1, 175, 176, 177, 178, 179, 180, - 181, 182, 183, 184, -1, 186, 187, 188, 189, 190, - 191, -1, 193, 194, 195, 196, 197, 198, 199, 200, - 201, -1, 203, -1, 205, 206, 207, 208, 209, 210, - 211, 212, 213, 214, -1, -1, 217, 218, 219, 220, - 221, -1, 223, 224, 225, 226, 227, 228, 229, 230, - 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, - 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, - -1, 252, 253, 254, 255, 256, 257, 258, 259, 260, - 261, 262, -1, 264, 265, -1, -1, 268, 269, 270, - -1, -1, 273, 274, 275, 276, 277, 278, 279, 280, - 281, 282, 283, 284, 285, 286, 287, -1, 289, 290, - 291, 292, 293, 294, 295, 296, -1, 298, 299, 300, - 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, - 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, - 321, 322, 323, 324, -1, 326, 327, 328, 329, 330, - 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, - 341, -1, 343, 344, 345, 346, 347, 348, 349, 350, - 351, 352, 353, 354, 355, 356, 357, 358, -1, 360, - 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, - 371, 372, -1, 374, 375, -1, 377, 378, 379, 380, - 381, 382, 383, -1, 385, 386, -1, -1, 389, 390, - 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, - 401, -1, -1, 404, 405, 406, 407, 408, 409, -1, - 411, 412, 413, 414, 415, 416, 417, -1, 419, 420, - 421, 422, 423, 424, -1, -1, 427, -1, -1, 430, - 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, - 441, 442, 443, 444, 445, 446, 447, 448, 449, -1, - -1, -1, 3, 4, 5, 6, 7, -1, 9, 10, - -1, -1, 463, -1, -1, -1, 467, 18, 19, 20, - 21, 22, 23, 24, 25, -1, 27, 28, 29, -1, - -1, -1, -1, 34, -1, -1, 37, 38, -1, 40, - 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, - 51, -1, 53, 54, 55, 56, 57, 58, 59, 60, - 61, 62, 63, 64, -1, 66, 67, 68, 69, 70, - -1, 72, -1, 74, 75, 76, 77, 78, 79, 80, - 81, 82, -1, 84, 85, 86, 87, 88, 89, -1, - 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, - 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, - -1, 112, -1, 114, 115, 116, 117, 118, 119, -1, - 121, 122, 123, 124, -1, -1, 127, 128, 129, 130, - 131, -1, 133, 134, 135, -1, 137, 138, 139, -1, - 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, - 151, -1, 153, 154, 155, 156, -1, 158, -1, 160, - 161, -1, 163, 164, 165, 166, 167, -1, 169, 170, - -1, 172, 173, -1, 175, 176, 177, 178, 179, 180, - 181, 182, 183, 184, -1, 186, 187, 188, 189, 190, - 191, -1, 193, 194, 195, 196, 197, 198, 199, 200, - 201, -1, 203, -1, 205, 206, 207, 208, 209, 210, - 211, 212, 213, 214, -1, -1, 217, 218, 219, 220, - 221, -1, 223, 224, 225, 226, 227, 228, 229, 230, - 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, - 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, - -1, 252, 253, 254, 255, 256, 257, 258, 259, 260, - 261, 262, -1, 264, 265, -1, -1, 268, 269, 270, - -1, -1, 273, 274, 275, 276, 277, 278, 279, 280, - 281, 282, 283, 284, 285, 286, 287, -1, 289, 290, - 291, 292, 293, 294, 295, 296, -1, 298, 299, 300, - 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, - 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, - 321, 322, 323, 324, -1, 326, 327, 328, 329, 330, - 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, - 341, -1, 343, 344, 345, 346, 347, 348, 349, 350, - 351, 352, 353, 354, 355, 356, 357, 358, -1, 360, - 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, - 371, 372, -1, 374, 375, -1, 377, 378, 379, 380, - 381, 382, 383, -1, 385, 386, -1, -1, 389, 390, - 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, - 401, -1, -1, 404, 405, 406, 407, 408, 409, -1, - 411, 412, 413, 414, 415, 416, 417, -1, 419, 420, - 421, 422, 423, 424, -1, -1, 427, -1, -1, 430, - 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, - 441, 442, 443, 444, 445, 446, 447, 448, 449, -1, - -1, -1, 3, 4, 5, 6, 7, -1, 9, 10, - -1, -1, 463, -1, -1, -1, 467, 18, 19, 20, - 21, 22, 23, 24, 25, -1, 27, 28, 29, -1, - -1, -1, -1, 34, -1, -1, 37, 38, -1, 40, - 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, - 51, -1, 53, 54, 55, 56, 57, 58, 59, 60, - 61, 62, 63, 64, -1, 66, 67, 68, 69, 70, - -1, 72, -1, 74, 75, 76, 77, 78, 79, 80, - 81, 82, -1, 84, 85, 86, 87, 88, 89, -1, - 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, - 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, - -1, 112, -1, 114, 115, 116, 117, 118, 119, -1, - 121, 122, 123, 124, -1, -1, 127, 128, 129, 130, - 131, -1, 133, 134, 135, -1, 137, 138, 139, -1, - 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, - 151, -1, 153, 154, 155, 156, -1, 158, -1, 160, - 161, -1, 163, 164, 165, 166, 167, -1, 169, 170, - -1, 172, 173, -1, 175, 176, 177, 178, 179, 180, - 181, 182, 183, 184, -1, 186, 187, 188, 189, 190, - 191, -1, 193, 194, 195, 196, 197, 198, 199, 200, - 201, -1, 203, -1, 205, 206, 207, 208, 209, 210, - 211, 212, 213, 214, -1, -1, 217, 218, 219, 220, - 221, -1, 223, 224, 225, 226, 227, 228, 229, 230, - 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, - 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, - -1, 252, 253, 254, 255, 256, 257, 258, 259, 260, - 261, 262, -1, 264, 265, -1, -1, 268, 269, 270, - -1, -1, 273, 274, 275, 276, 277, 278, 279, 280, - 281, 282, 283, 284, 285, 286, 287, -1, 289, 290, - 291, 292, 293, 294, 295, 296, -1, 298, 299, 300, - 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, - 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, - 321, 322, 323, 324, -1, 326, 327, 328, 329, 330, - 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, - 341, -1, 343, 344, 345, 346, 347, 348, 349, 350, - 351, 352, 353, 354, 355, 356, 357, 358, -1, 360, - 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, - 371, 372, -1, 374, 375, -1, 377, 378, 379, 380, - 381, 382, 383, -1, 385, 386, -1, -1, 389, 390, - 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, - 401, -1, -1, 404, 405, 406, 407, 408, 409, -1, - 411, 412, 413, 414, 415, 416, 417, -1, 419, 420, - 421, 422, 423, 424, -1, -1, 427, -1, -1, 430, - 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, - 441, 442, 443, 444, 445, 446, 447, 448, 449, -1, - -1, -1, 3, 4, 5, 6, 7, 8, 9, 10, - -1, -1, 463, -1, -1, -1, 467, 18, 19, 20, - 21, 22, 23, 24, 25, -1, 27, 28, 29, -1, - -1, -1, -1, 34, -1, -1, 37, 38, -1, 40, - 41, 42, 43, 44, 45, 46, -1, 48, 49, 50, - 51, -1, 53, 54, 55, 56, 57, 58, 59, 60, - 61, 62, 63, 64, -1, 66, 67, 68, 69, 70, - -1, 72, -1, 74, 75, 76, 77, 78, 79, 80, - 81, 82, -1, 84, 85, 86, 87, 88, 89, -1, - 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, - 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, - 111, 112, -1, 114, 115, 116, 117, 118, 119, -1, - 121, 122, 123, 124, -1, -1, 127, 128, 129, 130, - 131, -1, 133, 134, 135, -1, 137, -1, 139, -1, - 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, - 151, -1, 153, 154, 155, 156, -1, 158, -1, 160, - 161, -1, 163, 164, 165, 166, 167, -1, 169, 170, - -1, 172, 173, -1, 175, 176, 177, 178, 179, -1, - 181, 182, 183, 184, -1, 186, 187, 188, 189, 190, - 191, -1, 193, 194, 195, 196, 197, 198, 199, 200, - 201, -1, 203, -1, 205, -1, -1, 208, 209, 210, - 211, 212, 213, 214, -1, -1, 217, 218, 219, 220, - -1, -1, 223, 224, 225, 226, 227, 228, 229, 230, - 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, - 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, - 251, 252, 253, -1, 255, 256, 257, 258, 259, 260, - 261, 262, -1, 264, 265, -1, -1, 268, 269, 270, - -1, -1, 273, 274, 275, 276, 277, 278, 279, 280, - 281, 282, 283, 284, 285, 286, 287, -1, 289, 290, - 291, 292, 293, 294, 295, 296, -1, 298, 299, 300, - 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, - 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, - 321, 322, 323, 324, -1, 326, 327, 328, 329, 330, - 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, - 341, -1, 343, 344, 345, 346, 347, 348, 349, 350, - 351, 352, 353, -1, 355, 356, 357, 358, -1, 360, - 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, - 371, 372, -1, 374, 375, -1, 377, 378, 379, 380, - 381, 382, 383, -1, 385, 386, -1, -1, 389, 390, - 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, - 401, -1, 403, 404, 405, 406, 407, 408, 409, -1, - 411, 412, 413, 414, 415, 416, 417, -1, 419, 420, - 421, 422, 423, 424, -1, -1, 427, -1, -1, 430, - 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, - 441, 442, 443, 444, 445, 446, 447, 448, 449, -1, - -1, -1, 3, -1, -1, -1, 457, 458, -1, -1, - -1, -1, 463, -1, -1, -1, 467, 18, 19, 20, - 21, 22, 23, 24, 25, -1, 27, 28, 29, -1, - -1, -1, -1, -1, -1, -1, 37, 38, -1, 40, - 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, - 51, -1, 53, 54, 55, 56, 57, -1, 59, 60, - 61, 62, 63, 64, -1, 66, 67, 68, 69, 70, - -1, 72, -1, 74, 75, 76, 77, 78, 79, 80, - 81, 82, -1, 84, 85, 86, 87, 88, 89, -1, - 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, - 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, - -1, 112, -1, 114, 115, 116, 117, 118, 119, -1, - 121, 122, 123, 124, -1, -1, 127, 128, 129, 130, - 131, -1, 133, 134, 135, -1, 137, 138, 139, -1, - 141, 142, 143, 144, 145, 146, 147, 148, 149, -1, - 151, -1, 153, 154, 155, 156, -1, 158, -1, 160, - 161, -1, 163, 164, 165, 166, 167, -1, 169, 170, - -1, 172, 173, -1, 175, 176, 177, 178, 179, 180, - 181, 182, 183, 184, -1, 186, 187, 188, 189, 190, - 191, -1, 193, 194, 195, 196, 197, 198, 199, 200, - 201, -1, 203, -1, 205, 206, 207, 208, 209, 210, - 211, 212, 213, 214, 215, -1, 217, 218, 219, 220, - 221, -1, 223, 224, 225, 226, 227, 228, 229, 230, - 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, - 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, - -1, 252, 253, 254, 255, -1, 257, 258, 259, 260, - 261, 262, -1, 264, 265, -1, 267, 268, 269, 270, - -1, -1, 273, 274, 275, 276, 277, 278, 279, 280, - 281, 282, 283, 284, 285, 286, 287, -1, 289, 290, - 291, 292, 293, 294, 295, 296, -1, 298, 299, 300, - 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, - 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, - 321, 322, 323, 324, -1, 326, 327, 328, 329, 330, - 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, - 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, - 351, 352, 353, 354, 355, 356, 357, 358, -1, 360, - 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, - 371, 372, -1, 374, 375, 376, 377, 378, 379, 380, - 381, 382, 383, -1, 385, 386, -1, -1, 389, 390, - 391, 392, 393, -1, 395, 396, 397, 398, 399, 400, - 401, -1, -1, 404, 405, 406, 407, 408, 409, -1, - 411, 412, 413, 414, 415, 416, 417, -1, 419, 420, - 421, 422, 423, 424, -1, -1, 427, -1, 429, 430, - 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, - 441, 442, 443, 444, 445, 446, 447, 448, 449, -1, - -1, 452, 3, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 467, 18, 19, 20, - 21, 22, 23, 24, 25, -1, 27, 28, 29, -1, - -1, -1, -1, -1, -1, -1, 37, 38, -1, 40, - 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, - 51, -1, 53, 54, 55, 56, 57, -1, 59, 60, - 61, 62, 63, 64, -1, 66, 67, 68, 69, 70, - -1, 72, -1, 74, 75, 76, 77, 78, 79, 80, - 81, 82, -1, 84, 85, 86, 87, 88, 89, -1, - 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, - 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, - -1, 112, -1, 114, 115, 116, 117, 118, 119, -1, - 121, 122, 123, 124, -1, -1, 127, 128, 129, 130, - 131, -1, 133, 134, 135, -1, 137, 138, 139, -1, - 141, 142, 143, 144, 145, 146, 147, 148, 149, -1, - 151, -1, 153, 154, 155, 156, -1, 158, -1, 160, - 161, -1, 163, 164, 165, 166, 167, -1, 169, 170, - -1, 172, 173, -1, 175, 176, 177, 178, 179, 180, - 181, 182, 183, 184, -1, 186, 187, 188, 189, 190, - 191, -1, 193, 194, 195, 196, 197, 198, 199, 200, - 201, -1, 203, -1, 205, 206, 207, 208, 209, 210, - 211, 212, 213, 214, 215, -1, 217, 218, 219, 220, - 221, -1, 223, 224, 225, 226, 227, 228, 229, 230, - 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, - 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, - -1, 252, 253, 254, 255, -1, 257, 258, 259, 260, - 261, 262, -1, 264, 265, -1, 267, 268, 269, 270, - -1, -1, 273, 274, 275, 276, 277, 278, 279, 280, - 281, 282, 283, 284, 285, 286, 287, -1, 289, 290, - 291, 292, 293, 294, 295, 296, -1, 298, 299, 300, - 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, - 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, - 321, 322, 323, 324, -1, 326, 327, 328, 329, 330, - 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, - 341, -1, 343, 344, 345, 346, 347, 348, 349, 350, - 351, 352, 353, 354, 355, 356, 357, 358, -1, 360, - 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, - 371, 372, -1, 374, 375, -1, 377, 378, 379, 380, - 381, 382, 383, -1, 385, 386, -1, -1, 389, 390, - 391, 392, 393, -1, 395, 396, 397, 398, 399, 400, - 401, -1, -1, 404, 405, 406, 407, 408, 409, -1, - 411, 412, 413, 414, 415, 416, 417, -1, 419, 420, - 421, 422, 423, 424, -1, -1, 427, -1, -1, 430, - 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, - 441, 442, 443, 444, 445, 446, 447, 448, 449, -1, - -1, -1, 3, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 467, 18, 19, 20, - 21, 22, 23, 24, 25, -1, 27, 28, 29, -1, - -1, -1, -1, -1, -1, -1, 37, 38, -1, 40, - 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, - 51, -1, 53, 54, 55, 56, 57, -1, 59, 60, - 61, 62, 63, 64, -1, 66, 67, 68, 69, 70, - -1, 72, -1, 74, 75, 76, 77, 78, 79, 80, - 81, 82, -1, 84, 85, 86, 87, 88, 89, -1, - 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, - 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, - -1, 112, -1, 114, 115, 116, 117, 118, 119, -1, - 121, 122, 123, 124, -1, -1, 127, 128, 129, 130, - 131, -1, 133, 134, 135, -1, 137, 138, 139, -1, - 141, 142, 143, 144, 145, 146, 147, 148, 149, -1, - 151, -1, 153, 154, 155, 156, -1, 158, -1, 160, - 161, -1, 163, 164, 165, 166, 167, -1, 169, 170, - -1, 172, 173, -1, 175, 176, 177, 178, 179, 180, - 181, 182, 183, 184, -1, 186, 187, 188, 189, 190, - 191, -1, 193, 194, 195, 196, 197, 198, 199, 200, - 201, -1, 203, -1, 205, 206, 207, 208, 209, 210, - 211, 212, 213, 214, -1, -1, 217, 218, 219, 220, - 221, -1, 223, 224, 225, 226, 227, 228, 229, 230, - 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, - 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, - -1, 252, 253, 254, 255, -1, 257, 258, 259, 260, - 261, 262, -1, 264, 265, -1, -1, 268, 269, 270, - -1, -1, 273, 274, 275, 276, 277, 278, 279, 280, - 281, 282, 283, 284, 285, 286, 287, -1, 289, 290, - 291, 292, 293, 294, 295, 296, -1, 298, 299, 300, - 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, - 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, - 321, 322, 323, 324, -1, 326, 327, 328, 329, 330, - 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, - 341, -1, 343, 344, 345, 346, 347, 348, 349, 350, - 351, 352, 353, 354, 355, 356, 357, 358, -1, 360, - 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, - 371, 372, -1, 374, 375, -1, 377, 378, 379, 380, - 381, 382, 383, -1, 385, 386, -1, -1, 389, 390, - 391, 392, 393, -1, 395, 396, 397, 398, 399, 400, - 401, -1, -1, 404, 405, 406, 407, 408, 409, -1, - 411, 412, 413, 414, 415, 416, 417, -1, 419, 420, - 421, 422, 423, 424, -1, -1, 427, -1, -1, 430, - 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, - 441, 442, 443, 444, 445, 446, 447, 448, 449, -1, - -1, -1, 3, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 467, 18, 19, 20, - 21, 22, 23, 24, 25, -1, 27, 28, 29, -1, - -1, -1, -1, -1, -1, -1, 37, 38, -1, 40, - 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, - 51, -1, 53, 54, 55, 56, 57, -1, 59, 60, - 61, 62, 63, 64, -1, 66, 67, 68, 69, 70, - -1, 72, -1, 74, 75, 76, 77, 78, 79, 80, - 81, 82, -1, 84, 85, 86, 87, 88, 89, -1, - 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, - 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, - -1, 112, -1, 114, 115, 116, 117, 118, 119, -1, - 121, 122, 123, 124, -1, -1, 127, 128, 129, 130, - 131, -1, 133, 134, 135, -1, 137, 138, 139, -1, - 141, 142, 143, 144, 145, 146, 147, 148, 149, -1, - 151, -1, 153, 154, 155, 156, -1, 158, -1, 160, - 161, -1, 163, 164, 165, 166, 167, -1, 169, 170, - -1, 172, 173, -1, 175, 176, 177, 178, 179, 180, - 181, 182, 183, 184, -1, 186, 187, 188, 189, 190, - 191, -1, 193, 194, 195, 196, 197, 198, 199, 200, - 201, -1, 203, -1, 205, 206, 207, 208, 209, 210, - 211, 212, 213, 214, -1, -1, 217, 218, 219, 220, - 221, -1, 223, 224, 225, 226, 227, 228, 229, 230, - 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, - 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, - -1, 252, 253, 254, 255, -1, 257, 258, 259, 260, - 261, 262, -1, 264, 265, -1, -1, 268, 269, 270, - -1, -1, 273, 274, 275, 276, 277, 278, 279, 280, - 281, 282, 283, 284, 285, 286, 287, -1, 289, 290, - 291, 292, 293, 294, 295, 296, -1, 298, 299, 300, - 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, - 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, - 321, 322, 323, 324, -1, 326, 327, 328, 329, 330, - 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, - 341, -1, 343, 344, 345, 346, 347, 348, 349, 350, - 351, 352, 353, 354, 355, 356, 357, 358, -1, 360, - 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, - 371, 372, -1, 374, 375, -1, 377, 378, 379, 380, - 381, 382, 383, -1, 385, 386, -1, -1, 389, 390, - 391, 392, 393, -1, 395, 396, 397, 398, 399, 400, - 401, -1, -1, 404, 405, 406, 407, 408, 409, -1, - 411, 412, 413, 414, 415, 416, 417, -1, 419, 420, - 421, 422, 423, 424, -1, -1, 427, -1, -1, 430, - 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, - 441, 442, 443, 444, 445, 446, 447, 448, 449, -1, - -1, -1, 3, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 467, 18, 19, 20, - 21, 22, 23, 24, 25, -1, 27, 28, 29, -1, - -1, -1, -1, -1, -1, -1, 37, 38, -1, 40, - 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, - 51, -1, 53, 54, 55, 56, 57, -1, 59, 60, - 61, 62, 63, 64, -1, 66, 67, 68, 69, 70, - -1, 72, -1, 74, 75, 76, 77, 78, 79, 80, - 81, 82, -1, 84, 85, 86, 87, 88, 89, -1, - 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, - 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, - -1, 112, -1, 114, 115, 116, 117, 118, 119, -1, - 121, 122, 123, 124, -1, -1, 127, 128, 129, 130, - 131, -1, 133, 134, 135, -1, 137, 138, 139, -1, - 141, 142, 143, 144, 145, 146, 147, 148, 149, -1, - 151, -1, 153, 154, 155, 156, -1, 158, -1, 160, - 161, -1, 163, 164, 165, 166, 167, -1, 169, 170, - -1, 172, 173, -1, 175, 176, 177, 178, 179, 180, - 181, 182, 183, 184, -1, 186, 187, 188, 189, 190, - 191, -1, 193, 194, 195, 196, 197, 198, 199, 200, - 201, -1, 203, -1, 205, 206, 207, 208, 209, 210, - 211, 212, 213, 214, -1, -1, 217, 218, 219, 220, - 221, -1, 223, 224, 225, 226, 227, 228, 229, 230, - 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, - 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, - -1, 252, 253, 254, 255, -1, 257, 258, 259, 260, - 261, 262, -1, 264, 265, -1, -1, 268, 269, 270, - -1, -1, 273, 274, 275, 276, 277, 278, 279, 280, - 281, 282, 283, 284, 285, 286, 287, -1, 289, 290, - 291, 292, 293, 294, 295, 296, -1, 298, 299, 300, - 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, - 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, - 321, 322, 323, 324, -1, 326, 327, 328, 329, 330, - 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, - 341, -1, 343, 344, 345, 346, 347, 348, 349, 350, - 351, 352, 353, 354, 355, 356, 357, 358, -1, 360, - 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, - 371, 372, -1, 374, 375, -1, 377, 378, 379, 380, - 381, 382, 383, -1, 385, 386, -1, -1, 389, 390, - 391, 392, 393, -1, 395, 396, 397, 398, 399, 400, - 401, -1, -1, 404, 405, 406, 407, 408, 409, -1, - 411, 412, 413, 414, 415, 416, 417, -1, 419, 420, - 421, 422, 423, 424, -1, -1, 427, -1, -1, 430, - 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, - 441, 442, 443, 444, 445, 446, 447, 448, 449, -1, - -1, -1, 3, 4, 5, -1, -1, -1, 9, -1, - -1, -1, -1, -1, -1, -1, 467, 18, 19, 20, - 21, 22, 23, 24, 25, -1, 27, 28, 29, -1, - -1, -1, -1, -1, -1, -1, 37, 38, -1, 40, - 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, - 51, -1, 53, 54, 55, 56, 57, -1, -1, 60, - 61, 62, 63, 64, -1, 66, 67, 68, 69, 70, - -1, 72, -1, 74, 75, 76, 77, 78, 79, 80, - 81, 82, -1, 84, 85, 86, 87, 88, 89, -1, - 91, 92, 93, 94, -1, -1, -1, 98, -1, -1, - -1, 102, 103, 104, 105, 106, 107, 108, 109, 110, - -1, 112, -1, 114, 115, 116, 117, 118, 119, -1, - 121, 122, 123, 124, -1, -1, 127, 128, 129, 130, - 131, -1, 133, 134, 135, -1, 137, 138, 139, -1, - 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, - 151, -1, 153, 154, 155, 156, -1, 158, -1, 160, - 161, -1, 163, 164, 165, 166, 167, -1, 169, 170, - -1, 172, 173, -1, 175, 176, 177, 178, 179, 180, - 181, 182, 183, 184, -1, 186, 187, 188, 189, 190, - 191, -1, 193, 194, 195, 196, 197, 198, 199, 200, - 201, -1, 203, -1, 205, 206, 207, 208, 209, 210, - 211, 212, 213, 214, -1, -1, 217, 218, 219, 220, - 221, -1, 223, 224, 225, -1, -1, 228, 229, 230, - 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, - 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, - -1, 252, 253, 254, 255, -1, 257, 258, 259, 260, - 261, 262, -1, 264, 265, 266, -1, 268, 269, 270, - -1, -1, 273, 274, 275, 276, 277, 278, 279, 280, - 281, 282, 283, 284, 285, 286, 287, -1, 289, 290, - 291, 292, 293, 294, 295, 296, -1, 298, 299, 300, - 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, - 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, - 321, 322, 323, 324, -1, 326, 327, 328, 329, 330, - 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, - 341, -1, 343, 344, 345, 346, 347, -1, 349, 350, - 351, 352, 353, 354, 355, 356, 357, 358, -1, 360, - 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, - 371, 372, -1, 374, 375, -1, 377, 378, 379, 380, - 381, 382, 383, -1, 385, 386, -1, -1, 389, 390, - 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, - 401, -1, -1, 404, 405, 406, 407, 408, -1, -1, - 411, 412, 413, 414, 415, 416, 417, -1, 419, 420, - 421, 422, 423, 424, -1, -1, 427, -1, -1, 430, - 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, - 441, 442, 443, 444, 445, 446, 447, 448, 449, -1, - -1, -1, 3, -1, -1, -1, 457, 458, 459, -1, - -1, -1, -1, -1, -1, -1, 467, 18, 19, 20, - 21, 22, 23, 24, 25, -1, 27, 28, 29, 30, - 31, -1, -1, -1, -1, -1, 37, 38, -1, 40, - 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, - 51, -1, 53, 54, 55, 56, 57, -1, -1, 60, - 61, 62, 63, 64, -1, 66, 67, 68, 69, 70, - -1, 72, -1, 74, 75, 76, 77, 78, 79, 80, - 81, 82, -1, 84, 85, 86, 87, 88, 89, -1, - 91, 92, 93, 94, -1, -1, -1, 98, -1, -1, - -1, 102, 103, 104, 105, 106, 107, 108, 109, 110, - -1, 112, -1, 114, 115, 116, 117, 118, 119, -1, - 121, 122, 123, 124, -1, -1, 127, 128, 129, 130, - 131, -1, 133, 134, 135, -1, 137, 138, 139, -1, - 141, 142, 143, 144, 145, 146, 147, 148, 149, -1, - 151, -1, 153, 154, 155, 156, -1, 158, -1, 160, - 161, -1, 163, 164, 165, 166, 167, -1, 169, 170, - -1, 172, 173, -1, 175, 176, 177, 178, 179, 180, - 181, 182, 183, 184, -1, 186, 187, 188, 189, 190, - 191, -1, 193, 194, 195, 196, 197, 198, 199, 200, - 201, -1, 203, -1, 205, 206, 207, 208, 209, 210, - 211, 212, 213, 214, -1, -1, 217, 218, 219, 220, - 221, -1, 223, 224, 225, -1, -1, 228, 229, 230, - 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, - 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, - -1, 252, 253, 254, 255, -1, 257, 258, 259, 260, - 261, 262, -1, 264, 265, -1, -1, 268, 269, 270, - -1, -1, 273, 274, 275, 276, 277, 278, 279, 280, - 281, 282, 283, 284, 285, 286, 287, -1, 289, 290, - 291, 292, 293, 294, 295, 296, -1, 298, 299, 300, - 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, - 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, - 321, 322, 323, 324, -1, 326, 327, 328, 329, 330, - 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, - 341, 342, 343, 344, 345, 346, 347, -1, 349, 350, - 351, 352, 353, 354, 355, 356, 357, 358, -1, 360, - 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, - 371, 372, -1, 374, 375, 376, 377, 378, 379, 380, - 381, 382, 383, -1, 385, 386, -1, -1, 389, 390, - 391, 392, 393, -1, 395, 396, 397, 398, 399, 400, - 401, -1, -1, 404, 405, 406, 407, 408, -1, -1, - 411, 412, 413, 414, 415, 416, 417, -1, 419, 420, - 421, 422, 423, 424, -1, -1, 427, -1, 429, 430, - 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, - 441, 442, 443, 444, 445, 446, 447, 448, 449, -1, - -1, 452, 3, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 467, 18, 19, 20, - 21, 22, 23, 24, 25, -1, 27, 28, 29, -1, - -1, -1, -1, -1, -1, -1, 37, 38, -1, 40, - 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, - 51, -1, 53, 54, 55, 56, 57, -1, -1, 60, - 61, 62, 63, 64, -1, 66, 67, 68, 69, 70, - -1, 72, -1, 74, 75, 76, 77, 78, 79, 80, - 81, 82, -1, 84, 85, 86, 87, 88, 89, -1, - 91, 92, 93, 94, -1, -1, -1, 98, -1, -1, - -1, 102, 103, 104, 105, 106, 107, 108, 109, 110, - -1, 112, -1, 114, 115, 116, 117, 118, 119, -1, - 121, 122, 123, 124, -1, -1, 127, 128, 129, 130, - 131, -1, 133, 134, 135, -1, 137, 138, 139, -1, - 141, 142, 143, 144, 145, 146, 147, 148, 149, -1, - 151, -1, 153, 154, 155, 156, -1, 158, -1, 160, - 161, -1, 163, 164, 165, 166, 167, -1, 169, 170, - -1, 172, 173, -1, 175, 176, 177, 178, 179, 180, - 181, 182, 183, 184, -1, 186, 187, 188, 189, 190, - 191, -1, 193, 194, 195, 196, 197, 198, 199, 200, - 201, -1, 203, -1, 205, 206, 207, 208, 209, 210, - 211, 212, 213, 214, -1, -1, 217, 218, 219, 220, - 221, -1, 223, 224, 225, -1, -1, 228, 229, 230, + 421, 422, 423, -1, 425, 426, 427, 428, 429, 430, + 431, -1, 433, 434, 435, 436, 437, 438, 439, -1, + 441, 442, 443, 444, 445, 446, -1, -1, 449, -1, + -1, 452, 453, 454, 455, 456, 457, 458, 459, 460, + 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, + 471, 472, -1, -1, -1, -1, -1, 478, -1, 480, + 481, -1, -1, -1, -1, -1, -1, -1, 489, 490, + 3, -1, 5, 6, -1, 8, 9, 10, 11, 12, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, + 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, + 33, -1, -1, -1, -1, 38, -1, -1, 41, 42, + -1, 44, 45, 46, 47, 48, 49, 50, 51, 52, + 53, 54, 55, -1, 57, 58, 59, 60, 61, 62, + 63, 64, 65, 66, 67, 68, 69, -1, 71, 72, + 73, 74, 75, -1, 77, -1, 79, 80, 81, 82, + 83, 84, 85, 86, 87, -1, 89, 90, 91, 92, + 93, 94, -1, 96, 97, 98, 99, 100, 101, 102, + 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, + 113, 114, 115, 116, 117, -1, 119, 120, 121, 122, + 123, 124, -1, 126, 127, 128, 129, -1, -1, 132, + 133, 134, 135, 136, -1, 138, 139, 140, -1, 142, + 143, 144, -1, 146, 147, 148, 149, 150, 151, 152, + 153, 154, 155, 156, 157, -1, 159, 160, 161, 162, + -1, 164, -1, 166, 167, -1, 169, 170, 171, 172, + 173, -1, 175, 176, -1, 178, 179, 180, -1, 182, + 183, 184, 185, 186, 187, 188, 189, 190, 191, -1, + 193, 194, 195, 196, 197, 198, 199, -1, 201, 202, + 203, 204, 205, 206, 207, 208, 209, -1, 211, -1, + 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, + -1, -1, 225, 226, 227, 228, 229, -1, 231, 232, + 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, + 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, + 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, + 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, + 273, 274, 275, 276, -1, 278, 279, -1, -1, 282, + 283, 284, -1, -1, 287, 288, 289, 290, 291, 292, + 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, + -1, 304, 305, 306, 307, 308, 309, 310, 311, -1, + 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, + 323, 324, 325, 326, 327, -1, 329, 330, 331, 332, + 333, 334, 335, 336, 337, 338, 339, 340, -1, 342, + 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, + 353, 354, 355, 356, 357, 358, 359, -1, 361, 362, + 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, + 373, 374, 375, 376, -1, 378, 379, 380, 381, 382, + 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, + -1, 394, 395, -1, 397, 398, 399, 400, 401, 402, + 403, -1, 405, 406, 407, -1, -1, 410, 411, 412, + 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, + 423, -1, 425, 426, 427, 428, 429, 430, 431, -1, + 433, 434, 435, 436, 437, 438, 439, -1, 441, 442, + 443, 444, 445, 446, -1, -1, 449, -1, -1, 452, + 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, + 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, + 3, -1, -1, -1, -1, 478, -1, 480, 481, -1, + -1, -1, -1, -1, -1, -1, 489, 490, -1, 22, + 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, + 33, -1, -1, -1, -1, -1, 39, -1, 41, 42, + -1, 44, 45, 46, -1, 48, 49, 50, 51, 52, + -1, 54, 55, -1, 57, 58, 59, 60, 61, 62, + -1, -1, 65, 66, 67, 68, 69, -1, 71, 72, + 73, 74, 75, -1, -1, -1, 79, 80, 81, 82, + 83, -1, 85, 86, 87, -1, 89, 90, 91, 92, + 93, 94, -1, 96, 97, 98, 99, -1, -1, -1, + -1, -1, -1, -1, 107, 108, 109, 110, 111, 112, + 113, 114, 115, -1, 117, -1, 119, 120, 121, 122, + 123, 124, -1, 126, 127, 128, 129, -1, -1, 132, + 133, 134, 135, 136, -1, 138, 139, 140, -1, 142, + 143, 144, -1, 146, 147, 148, 149, 150, 151, 152, + 153, 154, 155, -1, 157, -1, 159, 160, 161, 162, + -1, 164, -1, 166, -1, -1, 169, 170, 171, 172, + 173, -1, 175, 176, -1, 178, 179, 180, -1, 182, + 183, 184, 185, 186, -1, 188, 189, 190, 191, -1, + 193, 194, 195, 196, 197, 198, 199, -1, 201, 202, + 203, 204, 205, 206, 207, 208, 209, -1, 211, -1, + 213, -1, -1, 216, 217, 218, 219, 220, 221, 222, + -1, -1, 225, 226, 227, 228, -1, -1, 231, 232, + 233, -1, -1, 236, 237, 238, 239, 240, 241, 242, + 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, + 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, + 263, 264, -1, 266, 267, -1, 269, -1, 271, 272, + 273, 274, 275, 276, -1, 278, 279, -1, -1, 282, + 283, 284, -1, -1, 287, 288, 289, -1, 291, -1, + 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, + -1, 304, 305, 306, 307, 308, 309, 310, 311, -1, + 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, + 323, 324, 325, 326, 327, -1, 329, 330, 331, 332, + 333, 334, 335, 336, 337, 338, 339, 340, -1, 342, + 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, + 353, 354, 355, 356, 357, 358, 359, -1, 361, 362, + 363, 364, 365, -1, 367, 368, 369, 370, 371, -1, + 373, 374, 375, 376, -1, 378, 379, 380, 381, 382, + 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, + -1, 394, 395, -1, 397, -1, 399, 400, 401, 402, + 403, -1, 405, 406, 407, -1, -1, 410, 411, 412, + 413, 414, -1, 416, 417, 418, 419, 420, 421, 422, + 423, -1, -1, 426, 427, 428, 429, 430, -1, -1, + 433, 434, 435, 436, 437, 438, 439, -1, 441, -1, + 443, 444, 445, 446, -1, -1, 449, -1, -1, 452, + 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, + 463, 464, 465, 466, 467, 468, 469, 470, 471, 3, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 490, 22, 23, + 24, 25, 26, 27, 28, 29, -1, 31, 32, 33, + -1, -1, -1, -1, -1, -1, -1, 41, 42, -1, + 44, 45, 46, 47, 48, 49, 50, -1, 52, 53, + 54, 55, -1, 57, 58, 59, 60, 61, 62, -1, + -1, 65, 66, 67, 68, 69, -1, 71, 72, 73, + 74, -1, -1, 77, -1, 79, 80, 81, 82, 83, + 84, 85, 86, 87, -1, 89, 90, 91, 92, 93, + 94, -1, 96, 97, 98, 99, -1, -1, -1, 103, + -1, -1, -1, 107, 108, 109, 110, 111, 112, 113, + 114, 115, -1, 117, -1, 119, 120, 121, 122, 123, + 124, -1, 126, 127, 128, 129, -1, -1, 132, 133, + 134, 135, 136, -1, 138, 139, 140, -1, 142, 143, + 144, -1, 146, 147, 148, 149, -1, 151, 152, 153, + 154, -1, -1, 157, -1, 159, 160, 161, 162, -1, + 164, -1, 166, 167, -1, 169, 170, 171, 172, 173, + -1, 175, -1, -1, -1, 179, 180, -1, 182, 183, + 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, + 194, 195, 196, 197, 198, 199, -1, 201, 202, 203, + 204, 205, 206, 207, 208, 209, -1, 211, -1, 213, + 214, 215, 216, 217, 218, 219, 220, 221, 222, -1, + -1, 225, -1, 227, 228, 229, -1, 231, 232, 233, + -1, -1, 236, 237, 238, 239, 240, 241, 242, 243, + 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, + 254, 255, 256, 257, 258, 259, 260, 261, -1, -1, + 264, -1, 266, 267, 268, 269, -1, -1, 272, 273, + 274, 275, 276, -1, 278, 279, -1, -1, 282, 283, + 284, -1, -1, 287, 288, 289, 290, 291, 292, -1, + 294, 295, 296, 297, 298, 299, 300, 301, 302, -1, + 304, 305, -1, 307, -1, 309, 310, 311, -1, 313, + 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, + 324, 325, 326, 327, -1, 329, 330, 331, 332, 333, + 334, 335, 336, 337, 338, 339, 340, -1, 342, 343, + 344, 345, 346, 347, 348, 349, -1, 351, 352, 353, + 354, 355, 356, 357, 358, 359, -1, 361, 362, 363, + 364, 365, -1, 367, 368, 369, 370, 371, 372, 373, + 374, 375, 376, -1, 378, 379, 380, 381, 382, 383, + 384, 385, 386, 387, 388, 389, 390, -1, 392, -1, + 394, 395, -1, 397, 398, 399, 400, 401, 402, 403, + -1, 405, 406, 407, -1, -1, 410, 411, -1, 413, + -1, -1, 416, 417, 418, 419, 420, 421, 422, 423, + -1, -1, 426, 427, 428, 429, 430, -1, -1, 433, + 434, 435, 436, 437, -1, 439, 440, 441, 442, 443, + 444, 445, 446, -1, -1, 449, -1, -1, 452, 453, + 454, 455, 456, 457, 3, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 469, 470, 471, -1, -1, + -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, + 29, -1, 31, 32, 33, -1, 490, -1, -1, -1, + -1, -1, 41, 42, -1, 44, 45, 46, 47, 48, + 49, 50, -1, 52, 53, 54, 55, -1, 57, 58, + 59, 60, 61, 62, -1, -1, 65, 66, 67, 68, + 69, -1, 71, 72, 73, 74, -1, -1, 77, -1, + 79, 80, 81, 82, 83, 84, 85, 86, 87, -1, + 89, 90, 91, 92, 93, 94, -1, 96, 97, 98, + 99, -1, -1, -1, 103, -1, -1, -1, 107, 108, + 109, 110, 111, 112, 113, 114, 115, -1, 117, -1, + 119, 120, 121, 122, 123, 124, -1, 126, 127, 128, + 129, -1, -1, 132, 133, 134, 135, 136, -1, 138, + 139, 140, -1, 142, 143, 144, -1, 146, 147, 148, + 149, -1, 151, 152, 153, 154, -1, -1, 157, -1, + 159, 160, 161, 162, -1, 164, -1, 166, 167, -1, + 169, 170, 171, 172, 173, -1, 175, -1, -1, -1, + 179, 180, -1, 182, 183, 184, 185, 186, 187, 188, + 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, + 199, -1, 201, 202, 203, 204, 205, 206, 207, 208, + 209, -1, 211, -1, 213, 214, 215, 216, 217, 218, + 219, 220, 221, 222, -1, -1, 225, -1, 227, 228, + 229, -1, 231, 232, 233, -1, -1, 236, 237, 238, + 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, + 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, + 259, 260, 261, -1, -1, 264, -1, 266, 267, 268, + 269, -1, -1, 272, 273, 274, 275, 276, -1, 278, + 279, -1, -1, 282, 283, 284, -1, -1, 287, 288, + 289, 290, 291, 292, -1, 294, 295, 296, 297, 298, + 299, 300, 301, 302, -1, 304, 305, -1, 307, -1, + 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, + 319, 320, 321, 322, 323, 324, 325, 326, 327, -1, + 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, + 339, 340, -1, 342, 343, 344, 345, 346, 347, 348, + 349, -1, 351, 352, 353, 354, 355, 356, 357, 358, + 359, -1, 361, 362, 363, 364, 365, -1, 367, 368, + 369, 370, 371, 372, 373, 374, 375, 376, -1, 378, + 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, + 389, 390, -1, 392, -1, 394, 395, -1, 397, 398, + 399, 400, 401, 402, 403, -1, 405, 406, 407, -1, + -1, 410, 411, -1, 413, -1, -1, 416, 417, 418, + 419, 420, 421, 422, 423, -1, -1, 426, 427, 428, + 429, 430, -1, -1, 433, 434, 435, 436, 437, -1, + 439, 440, 441, 442, 443, 444, 445, 446, -1, -1, + 449, -1, -1, 452, 453, 454, 455, 456, 457, 3, + -1, 5, 6, -1, 8, 9, 10, 11, 12, -1, + 469, 470, 471, -1, -1, -1, -1, -1, 22, 23, + 24, 25, 26, 27, 28, 29, -1, 31, 32, 33, + -1, 490, -1, -1, 38, -1, -1, 41, 42, -1, + 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, + 54, 55, -1, 57, 58, 59, 60, 61, 62, 63, + 64, 65, 66, 67, 68, 69, -1, 71, 72, 73, + 74, 75, -1, 77, -1, 79, 80, 81, 82, 83, + 84, 85, 86, 87, -1, 89, 90, 91, 92, 93, + 94, -1, 96, 97, 98, 99, 100, 101, 102, 103, + 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, + 114, 115, 116, 117, -1, 119, 120, 121, 122, 123, + 124, -1, 126, 127, 128, 129, -1, -1, 132, 133, + 134, 135, 136, -1, 138, 139, 140, -1, 142, 143, + 144, -1, 146, 147, 148, 149, 150, 151, 152, 153, + 154, 155, 156, 157, -1, 159, 160, 161, 162, -1, + 164, -1, 166, 167, -1, 169, 170, 171, 172, 173, + -1, 175, 176, -1, 178, 179, 180, -1, 182, 183, + 184, 185, 186, 187, 188, 189, 190, 191, -1, 193, + 194, 195, 196, 197, 198, 199, -1, 201, 202, 203, + 204, 205, 206, 207, 208, 209, -1, 211, -1, 213, + 214, 215, 216, 217, 218, 219, 220, 221, 222, -1, + -1, 225, 226, 227, 228, 229, -1, 231, 232, 233, + 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, + 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, + 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, + 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, + 274, 275, 276, -1, 278, 279, -1, -1, 282, 283, + 284, -1, -1, 287, 288, 289, 290, 291, 292, 293, + 294, 295, 296, 297, 298, 299, 300, 301, 302, -1, + 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, + 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, + 324, 325, 326, 327, -1, 329, 330, 331, 332, 333, + 334, 335, 336, 337, 338, 339, 340, -1, 342, 343, + 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, + 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, + 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, + 374, 375, 376, -1, 378, 379, 380, 381, 382, 383, + 384, 385, 386, 387, 388, 389, 390, 391, 392, -1, + 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, + -1, 405, 406, 407, -1, -1, 410, 411, 412, 413, + 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, + -1, 425, 426, 427, 428, 429, 430, 431, -1, 433, + 434, 435, 436, 437, 438, 439, -1, 441, 442, 443, + 444, 445, 446, -1, -1, 449, -1, 451, 452, 453, + 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, + 464, 465, 466, 467, 468, 469, 470, 471, 472, -1, + 474, -1, -1, -1, 478, -1, 480, 481, -1, -1, + -1, 3, -1, 5, 6, 489, 8, 9, 10, 11, + 12, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 22, 23, 24, 25, 26, 27, 28, 29, -1, 31, + 32, 33, -1, -1, -1, -1, 38, -1, -1, 41, + 42, -1, 44, 45, 46, 47, 48, 49, 50, 51, + 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, + 62, 63, 64, 65, 66, 67, 68, 69, -1, 71, + 72, 73, 74, 75, -1, 77, -1, 79, 80, 81, + 82, 83, 84, 85, 86, 87, -1, 89, 90, 91, + 92, 93, 94, -1, 96, 97, 98, 99, 100, 101, + 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, + 112, 113, 114, 115, 116, 117, -1, 119, 120, 121, + 122, 123, 124, -1, 126, 127, 128, 129, -1, -1, + 132, 133, 134, 135, 136, -1, 138, 139, 140, -1, + 142, 143, 144, -1, 146, 147, 148, 149, 150, 151, + 152, 153, 154, 155, 156, 157, -1, 159, 160, 161, + 162, -1, 164, -1, 166, 167, 168, 169, 170, 171, + 172, 173, -1, 175, 176, -1, 178, 179, 180, -1, + 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, + -1, 193, 194, 195, 196, 197, 198, 199, -1, 201, + 202, 203, 204, 205, 206, 207, 208, 209, -1, 211, + -1, 213, 214, 215, 216, 217, 218, 219, 220, 221, + 222, -1, 224, 225, 226, 227, 228, 229, -1, 231, + 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, + 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, + 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, + 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, + 272, 273, 274, 275, 276, -1, 278, 279, -1, -1, + 282, 283, 284, -1, -1, 287, 288, 289, 290, 291, + 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, + 302, -1, 304, 305, 306, 307, 308, 309, 310, 311, + -1, 313, 314, 315, 316, 317, 318, 319, 320, 321, + 322, 323, 324, 325, 326, 327, -1, 329, 330, 331, + 332, 333, 334, 335, 336, 337, 338, 339, 340, -1, + 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, + 352, 353, 354, 355, 356, 357, 358, 359, -1, 361, + 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, + 372, 373, 374, 375, 376, -1, 378, 379, 380, 381, + 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, + 392, -1, 394, 395, -1, 397, 398, 399, 400, 401, + 402, 403, -1, 405, 406, 407, -1, 409, 410, 411, + 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, + 422, 423, -1, 425, 426, 427, 428, 429, 430, 431, + -1, 433, 434, 435, 436, 437, 438, 439, -1, 441, + 442, 443, 444, 445, 446, -1, -1, 449, -1, -1, + 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, + 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, + 472, -1, -1, -1, -1, -1, 478, -1, 480, 481, + -1, -1, -1, 3, -1, 5, 6, 489, 8, 9, + 10, 11, 12, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, + -1, 31, 32, 33, -1, -1, -1, -1, 38, -1, + -1, 41, 42, -1, 44, 45, 46, 47, 48, 49, + 50, 51, 52, 53, 54, 55, -1, 57, 58, 59, + 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, + -1, 71, 72, 73, 74, 75, -1, 77, -1, 79, + 80, 81, 82, 83, 84, 85, 86, 87, -1, 89, + 90, 91, 92, 93, 94, -1, 96, 97, 98, 99, + 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, + 110, 111, 112, 113, 114, 115, 116, 117, -1, 119, + 120, 121, 122, 123, 124, -1, 126, 127, 128, 129, + -1, -1, 132, 133, 134, 135, 136, -1, 138, 139, + 140, -1, 142, 143, 144, -1, 146, 147, 148, 149, + 150, 151, 152, 153, 154, 155, 156, 157, -1, 159, + 160, 161, 162, -1, 164, -1, 166, 167, -1, 169, + 170, 171, 172, 173, -1, 175, 176, -1, 178, 179, + 180, -1, 182, 183, 184, 185, 186, 187, 188, 189, + 190, 191, -1, 193, 194, 195, 196, 197, 198, 199, + -1, 201, 202, 203, 204, 205, 206, 207, 208, 209, + -1, 211, -1, 213, 214, 215, 216, 217, 218, 219, + 220, 221, 222, -1, -1, 225, 226, 227, 228, 229, + -1, 231, 232, 233, 234, 235, 236, 237, 238, 239, + 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, + 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, + 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, + 270, 271, 272, 273, 274, 275, 276, -1, 278, 279, + -1, -1, 282, 283, 284, -1, -1, 287, 288, 289, + 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, + 300, 301, 302, -1, 304, 305, 306, 307, 308, 309, + 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, + 320, 321, 322, 323, 324, 325, 326, 327, -1, 329, + 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, + 340, -1, 342, 343, 344, 345, 346, 347, 348, 349, + 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, + -1, 361, 362, 363, 364, 365, 366, 367, 368, 369, + 370, 371, 372, 373, 374, 375, 376, -1, 378, 379, + 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, + 390, 391, 392, -1, 394, 395, -1, 397, 398, 399, + 400, 401, 402, 403, -1, 405, 406, 407, -1, -1, + 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, + 420, 421, 422, 423, -1, 425, 426, 427, 428, 429, + 430, 431, -1, 433, 434, 435, 436, 437, 438, 439, + -1, 441, 442, 443, 444, 445, 446, -1, -1, 449, + -1, -1, 452, 453, 454, 455, 456, 457, 458, 459, + 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, + 470, 471, 472, -1, -1, -1, -1, -1, 478, -1, + 480, 481, -1, -1, -1, -1, -1, 487, 488, 489, + 3, -1, 5, 6, -1, 8, 9, 10, 11, 12, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, + 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, + 33, -1, -1, -1, -1, 38, -1, -1, 41, 42, + -1, 44, 45, 46, 47, 48, 49, 50, 51, 52, + 53, 54, 55, -1, 57, 58, 59, 60, 61, 62, + 63, 64, 65, 66, 67, 68, 69, -1, 71, 72, + 73, 74, 75, -1, 77, -1, 79, 80, 81, 82, + 83, 84, 85, 86, 87, -1, 89, 90, 91, 92, + 93, 94, -1, 96, 97, 98, 99, 100, 101, 102, + 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, + 113, 114, 115, 116, 117, -1, 119, 120, 121, 122, + 123, 124, -1, 126, 127, 128, 129, -1, -1, 132, + 133, 134, 135, 136, -1, 138, 139, 140, -1, 142, + 143, 144, -1, 146, 147, 148, 149, 150, 151, 152, + 153, 154, 155, 156, 157, -1, 159, 160, 161, 162, + -1, 164, -1, 166, 167, -1, 169, 170, 171, 172, + 173, -1, 175, 176, -1, 178, 179, 180, -1, 182, + 183, 184, 185, 186, 187, 188, 189, 190, 191, -1, + 193, 194, 195, 196, 197, 198, 199, -1, 201, 202, + 203, 204, 205, 206, 207, 208, 209, -1, 211, -1, + 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, + -1, -1, 225, 226, 227, 228, 229, -1, 231, 232, + 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, + 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, + 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, + 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, + 273, 274, 275, 276, -1, 278, 279, -1, -1, 282, + 283, 284, -1, -1, 287, 288, 289, 290, 291, 292, + 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, + -1, 304, 305, 306, 307, 308, 309, 310, 311, -1, + 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, + 323, 324, 325, 326, 327, -1, 329, 330, 331, 332, + 333, 334, 335, 336, 337, 338, 339, 340, -1, 342, + 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, + 353, 354, 355, 356, 357, 358, 359, -1, 361, 362, + 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, + 373, 374, 375, 376, -1, 378, 379, 380, 381, 382, + 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, + -1, 394, 395, -1, 397, 398, 399, 400, 401, 402, + 403, -1, 405, 406, 407, -1, -1, 410, 411, 412, + 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, + 423, -1, 425, 426, 427, 428, 429, 430, 431, -1, + 433, 434, 435, 436, 437, 438, 439, -1, 441, 442, + 443, 444, 445, 446, -1, -1, 449, -1, -1, 452, + 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, + 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, + -1, -1, -1, -1, -1, 478, -1, 480, 481, 482, + -1, -1, 3, -1, 5, 6, 489, 8, 9, 10, + 11, 12, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 22, 23, 24, 25, 26, 27, 28, 29, 30, + 31, 32, 33, -1, -1, -1, -1, 38, -1, -1, + 41, 42, -1, 44, 45, 46, 47, 48, 49, 50, + 51, 52, 53, 54, 55, -1, 57, 58, 59, 60, + 61, 62, 63, 64, 65, 66, 67, 68, 69, -1, + 71, 72, 73, 74, 75, -1, 77, -1, 79, 80, + 81, 82, 83, 84, 85, 86, 87, -1, 89, 90, + 91, 92, 93, 94, -1, 96, 97, 98, 99, 100, + 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, + 111, 112, 113, 114, 115, 116, 117, -1, 119, 120, + 121, 122, 123, 124, -1, 126, 127, 128, 129, -1, + -1, 132, 133, 134, 135, 136, -1, 138, 139, 140, + -1, 142, 143, 144, -1, 146, 147, 148, 149, 150, + 151, 152, 153, 154, 155, 156, 157, -1, 159, 160, + 161, 162, -1, 164, -1, 166, 167, -1, 169, 170, + 171, 172, 173, -1, 175, 176, -1, 178, 179, 180, + -1, 182, 183, 184, 185, 186, 187, 188, 189, 190, + 191, -1, 193, 194, 195, 196, 197, 198, 199, -1, + 201, 202, 203, 204, 205, 206, 207, 208, 209, -1, + 211, -1, 213, 214, 215, 216, 217, 218, 219, 220, + 221, 222, -1, -1, 225, 226, 227, 228, 229, -1, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, - -1, 252, 253, 254, 255, -1, 257, 258, 259, 260, - 261, 262, -1, 264, 265, -1, -1, 268, 269, 270, - -1, -1, 273, 274, 275, 276, 277, 278, 279, 280, - 281, 282, 283, 284, 285, 286, 287, -1, 289, 290, - 291, 292, 293, 294, 295, 296, -1, 298, 299, 300, - 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, - 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, - 321, 322, 323, 324, -1, 326, 327, 328, 329, 330, - 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, - 341, -1, 343, 344, 345, 346, 347, -1, 349, 350, - 351, 352, 353, 354, 355, 356, 357, 358, -1, 360, - 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, - 371, 372, -1, 374, 375, -1, 377, 378, 379, 380, - 381, 382, 383, -1, 385, 386, -1, -1, 389, 390, - 391, 392, 393, -1, 395, 396, 397, 398, 399, 400, - 401, -1, -1, 404, 405, 406, 407, 408, -1, -1, - 411, 412, 413, 414, 415, 416, 417, -1, 419, 420, - 421, 422, 423, 424, -1, -1, 427, -1, -1, 430, - 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, - 441, 442, 443, 444, 445, 446, 447, 448, 449, -1, - -1, -1, 3, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 467, 18, 19, 20, - 21, 22, 23, 24, 25, -1, 27, 28, 29, -1, - -1, -1, -1, -1, -1, -1, 37, 38, -1, 40, - 41, 42, -1, 44, 45, 46, 47, 48, -1, 50, - 51, -1, 53, 54, 55, 56, 57, -1, -1, 60, - 61, 62, 63, 64, -1, 66, 67, 68, 69, 70, - -1, -1, -1, 74, 75, 76, 77, 78, -1, 80, - 81, 82, -1, 84, 85, 86, 87, 88, 89, -1, - -1, 92, 93, 94, -1, -1, -1, -1, -1, -1, - -1, 102, 103, 104, 105, 106, 107, 108, 109, 110, - -1, 112, -1, 114, 115, 116, 117, 118, 119, -1, - 121, 122, 123, 124, -1, -1, 127, 128, 129, 130, - 131, -1, 133, 134, 135, -1, 137, 138, 139, -1, - 141, 142, 143, 144, 145, 146, 147, 148, 149, -1, - 151, -1, 153, 154, 155, 156, -1, 158, -1, 160, - -1, -1, -1, 164, 165, 166, 167, -1, 169, 170, - -1, 172, 173, -1, 175, 176, 177, 178, 179, -1, - 181, 182, 183, 184, -1, 186, 187, 188, 189, 190, - 191, -1, 193, -1, 195, 196, 197, 198, 199, 200, - 201, -1, 203, -1, 205, -1, -1, 208, -1, 210, - 211, 212, 213, 214, -1, -1, 217, 218, -1, 220, - -1, -1, 223, 224, 225, -1, -1, 228, 229, 230, - 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, - 241, 242, 243, 244, -1, 246, 247, 248, 249, 250, - -1, 252, 253, -1, 255, -1, 257, 258, 259, 260, - 261, 262, -1, 264, 265, -1, -1, 268, 269, 270, - -1, -1, 273, 274, -1, 276, -1, 278, 279, 280, - 281, 282, 283, 284, 285, 286, 287, -1, 289, 290, - 291, 292, 293, 294, 295, 296, -1, 298, 299, 300, - 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, - 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, - 321, 322, 323, 324, -1, 326, 327, -1, 329, 330, - 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, - 341, 342, 343, 344, 345, 346, 347, -1, 349, 350, - 351, 352, 353, -1, 355, 356, 357, 358, -1, 360, - 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, - 371, 372, -1, 374, 375, 376, 377, -1, 379, 380, - 381, 382, 383, -1, 385, 386, -1, -1, 389, 390, - 391, 392, 393, -1, 395, 396, 397, 398, 399, 400, - 401, -1, -1, 404, 405, 406, 407, 408, -1, -1, - 411, 412, 413, 414, 415, 416, 417, -1, 419, -1, - 421, 422, 423, 424, -1, -1, 427, -1, 429, 430, - 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, - 441, 442, 443, 444, 445, 446, 447, 448, 449, -1, - -1, 452, 3, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 467, 18, 19, 20, - 21, 22, 23, 24, 25, -1, 27, 28, 29, -1, - -1, -1, -1, -1, -1, -1, 37, 38, -1, 40, - 41, 42, -1, 44, 45, 46, 47, 48, -1, 50, - 51, -1, 53, 54, 55, 56, 57, -1, -1, 60, - 61, 62, 63, 64, -1, 66, 67, 68, 69, 70, - -1, -1, -1, 74, 75, 76, 77, 78, -1, 80, - 81, 82, -1, 84, 85, 86, 87, 88, 89, -1, - -1, 92, 93, 94, -1, -1, -1, -1, -1, -1, - -1, 102, 103, 104, 105, 106, 107, 108, 109, 110, - -1, 112, -1, 114, 115, 116, 117, 118, 119, -1, - 121, 122, 123, 124, -1, -1, 127, 128, 129, 130, - 131, -1, 133, 134, 135, -1, 137, 138, 139, -1, - 141, 142, 143, 144, 145, 146, 147, 148, 149, -1, - 151, -1, 153, 154, 155, 156, -1, 158, -1, 160, - -1, -1, -1, 164, 165, 166, 167, -1, 169, 170, - -1, 172, 173, -1, 175, 176, 177, 178, 179, -1, - 181, 182, 183, 184, -1, 186, 187, 188, 189, 190, - 191, -1, 193, -1, 195, 196, 197, 198, 199, 200, - 201, -1, 203, -1, 205, -1, -1, 208, -1, 210, - 211, 212, 213, 214, -1, -1, 217, 218, -1, 220, - -1, -1, 223, 224, 225, -1, -1, 228, 229, 230, - 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, - 241, 242, 243, 244, -1, 246, 247, 248, 249, 250, - -1, 252, 253, -1, 255, -1, 257, 258, 259, 260, - 261, 262, -1, 264, 265, -1, -1, 268, 269, 270, - -1, -1, 273, 274, -1, 276, -1, 278, 279, 280, - 281, 282, 283, 284, 285, 286, 287, -1, 289, 290, - 291, 292, 293, 294, 295, 296, -1, 298, 299, 300, - 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, - 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, - 321, 322, 323, 324, -1, 326, 327, -1, 329, 330, - 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, - 341, -1, 343, 344, 345, 346, 347, -1, 349, 350, - 351, 352, 353, -1, 355, 356, 357, 358, -1, 360, - 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, - 371, 372, -1, 374, 375, -1, 377, -1, 379, 380, - 381, 382, 383, -1, 385, 386, -1, -1, 389, 390, - 391, 392, 393, -1, 395, 396, 397, 398, 399, 400, - 401, -1, -1, 404, 405, 406, 407, 408, -1, -1, - 411, 412, 413, 414, 415, 416, 417, -1, 419, -1, - 421, 422, 423, 424, -1, -1, 427, -1, -1, 430, - 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, - 441, 442, 443, 444, 445, 446, 447, 448, 449, -1, - -1, -1, 3, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 467, 18, 19, 20, - 21, 22, 23, 24, 25, -1, 27, 28, 29, -1, - -1, -1, -1, -1, -1, -1, 37, 38, -1, 40, - 41, 42, -1, 44, 45, 46, 47, 48, -1, 50, - 51, -1, 53, 54, 55, 56, 57, -1, -1, 60, - 61, 62, 63, 64, -1, 66, 67, 68, 69, 70, - -1, -1, -1, 74, 75, 76, 77, 78, -1, 80, - 81, 82, -1, 84, 85, 86, 87, 88, 89, -1, - -1, 92, 93, 94, -1, -1, -1, -1, -1, -1, - -1, 102, 103, 104, 105, 106, 107, 108, 109, 110, - -1, 112, -1, 114, 115, 116, 117, 118, 119, -1, - 121, 122, 123, 124, -1, -1, 127, 128, 129, 130, - 131, -1, 133, 134, 135, -1, 137, 138, 139, -1, - 141, 142, 143, 144, 145, 146, 147, 148, 149, -1, - 151, -1, 153, 154, 155, 156, -1, 158, -1, 160, - -1, -1, -1, 164, 165, 166, 167, -1, 169, 170, - -1, 172, 173, -1, 175, 176, 177, 178, 179, -1, - 181, 182, 183, 184, -1, 186, 187, 188, 189, 190, - 191, -1, 193, -1, 195, 196, 197, 198, 199, 200, - 201, -1, 203, -1, 205, -1, -1, 208, -1, 210, - 211, 212, 213, 214, -1, -1, 217, 218, -1, 220, - -1, -1, 223, 224, 225, -1, -1, 228, 229, 230, - 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, - 241, 242, 243, 244, -1, 246, 247, 248, 249, 250, - -1, 252, 253, -1, 255, -1, 257, 258, 259, 260, - 261, 262, -1, 264, 265, -1, -1, 268, 269, 270, - -1, -1, 273, 274, -1, 276, -1, 278, 279, 280, - 281, 282, 283, 284, 285, 286, 287, -1, 289, 290, - 291, 292, 293, 294, 295, 296, -1, 298, 299, 300, - 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, - 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, - 321, 322, 323, 324, -1, 326, 327, -1, 329, 330, - 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, - 341, -1, 343, 344, 345, 346, 347, -1, 349, 350, - 351, 352, 353, -1, 355, 356, 357, 358, -1, 360, - 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, - 371, 372, -1, 374, 375, -1, 377, -1, 379, 380, - 381, 382, 383, -1, 385, 386, -1, -1, 389, 390, - 391, 392, 393, -1, 395, 396, 397, 398, 399, 400, - 401, -1, -1, 404, 405, 406, 407, 408, -1, -1, - 411, 412, 413, 414, 415, 416, 417, -1, 419, -1, - 421, 422, 423, 424, -1, -1, 427, -1, -1, 430, - 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, - 441, 442, 443, 444, 445, 446, 447, 448, 449, -1, - -1, -1, 3, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 467, 18, 19, 20, - 21, 22, 23, 24, 25, -1, 27, 28, 29, -1, - -1, -1, -1, -1, -1, -1, 37, 38, -1, 40, - 41, 42, -1, 44, 45, 46, 47, 48, -1, 50, - 51, -1, 53, 54, 55, 56, 57, -1, -1, 60, - 61, 62, 63, 64, -1, 66, 67, 68, 69, 70, - -1, -1, -1, 74, 75, 76, 77, 78, -1, 80, - 81, 82, -1, 84, 85, 86, 87, 88, 89, -1, - -1, 92, 93, 94, -1, -1, -1, -1, -1, -1, - -1, 102, 103, 104, 105, 106, 107, 108, 109, 110, - -1, 112, -1, 114, 115, 116, 117, 118, 119, -1, - 121, 122, 123, 124, -1, -1, 127, 128, 129, 130, - 131, -1, 133, 134, 135, -1, 137, 138, 139, -1, - 141, 142, 143, 144, 145, 146, 147, 148, 149, -1, - 151, -1, 153, 154, 155, 156, -1, 158, -1, 160, - -1, -1, -1, 164, 165, 166, 167, -1, 169, 170, - -1, 172, 173, -1, 175, 176, 177, 178, 179, -1, - 181, 182, 183, 184, -1, 186, 187, 188, 189, 190, - 191, -1, 193, -1, 195, 196, 197, 198, 199, 200, - 201, -1, 203, -1, 205, -1, -1, 208, -1, 210, - 211, 212, 213, 214, -1, -1, 217, 218, -1, 220, - -1, -1, 223, 224, 225, -1, -1, 228, 229, 230, - 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, - 241, 242, 243, 244, -1, 246, 247, 248, 249, 250, - -1, 252, 253, -1, 255, -1, 257, 258, 259, 260, - 261, 262, -1, 264, 265, -1, -1, 268, 269, 270, - -1, -1, 273, 274, -1, 276, -1, 278, 279, 280, - 281, 282, 283, 284, 285, 286, 287, -1, 289, 290, - 291, 292, 293, 294, 295, 296, -1, 298, 299, 300, - 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, + 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, + 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, + 271, 272, 273, 274, 275, 276, -1, 278, 279, -1, + -1, 282, 283, 284, -1, -1, 287, 288, 289, 290, + 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, + 301, 302, -1, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, - 321, 322, 323, 324, -1, 326, 327, -1, 329, 330, + 321, 322, 323, 324, 325, 326, 327, -1, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, - 341, -1, 343, 344, 345, 346, 347, -1, 349, 350, - 351, 352, 353, -1, 355, 356, 357, 358, -1, 360, + -1, 342, 343, 344, 345, 346, 347, 348, 349, 350, + 351, 352, 353, 354, 355, 356, 357, 358, 359, -1, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, - 371, 372, -1, 374, 375, -1, 377, -1, 379, 380, - 381, 382, 383, -1, 385, 386, -1, -1, 389, 390, - 391, 392, 393, -1, 395, 396, 397, 398, 399, 400, - 401, -1, -1, 404, 405, 406, 407, 408, -1, -1, - 411, 412, 413, 414, 415, 416, 417, -1, 419, -1, - 421, 422, 423, 424, -1, -1, 427, -1, -1, 430, - 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, - 441, 442, 443, 444, 445, 446, 447, 448, 449, -1, - -1, -1, 3, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 467, 18, 19, 20, - 21, 22, 23, 24, 25, -1, 27, 28, 29, -1, - -1, -1, -1, -1, -1, -1, 37, 38, -1, 40, - 41, 42, -1, 44, 45, 46, 47, 48, -1, 50, - 51, -1, 53, 54, 55, 56, 57, -1, -1, 60, - 61, 62, 63, 64, -1, 66, 67, 68, 69, 70, - -1, -1, -1, 74, 75, 76, 77, 78, -1, 80, - 81, 82, -1, 84, 85, 86, 87, 88, 89, -1, - -1, 92, 93, 94, -1, -1, -1, -1, -1, -1, - -1, 102, 103, 104, 105, 106, 107, 108, 109, 110, - -1, 112, -1, 114, 115, 116, 117, 118, 119, -1, - 121, 122, 123, 124, -1, -1, 127, 128, 129, 130, - 131, -1, 133, 134, 135, -1, 137, 138, 139, -1, - 141, 142, 143, 144, 145, 146, 147, 148, 149, -1, - 151, -1, 153, 154, 155, 156, -1, 158, -1, 160, - -1, -1, -1, 164, 165, 166, 167, -1, 169, 170, - -1, 172, 173, -1, 175, 176, 177, 178, 179, -1, - 181, 182, 183, 184, -1, 186, 187, 188, 189, 190, - 191, -1, 193, -1, 195, 196, 197, 198, 199, 200, - 201, -1, 203, -1, 205, -1, -1, 208, -1, 210, - 211, 212, 213, 214, -1, -1, 217, 218, -1, 220, - -1, -1, 223, 224, 225, -1, -1, 228, 229, 230, + 371, 372, 373, 374, 375, 376, -1, 378, 379, 380, + 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, + 391, 392, -1, 394, 395, -1, 397, 398, 399, 400, + 401, 402, 403, -1, 405, 406, 407, -1, -1, 410, + 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, + 421, 422, 423, -1, 425, 426, 427, 428, 429, 430, + 431, -1, 433, 434, 435, 436, 437, 438, 439, -1, + 441, 442, 443, 444, 445, 446, -1, -1, 449, -1, + -1, 452, 453, 454, 455, 456, 457, 458, 459, 460, + 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, + 471, 472, -1, -1, -1, -1, -1, 478, -1, 480, + 481, -1, -1, -1, 3, -1, 5, 6, 489, 8, + 9, 10, 11, 12, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, + 29, -1, 31, 32, 33, -1, -1, -1, -1, 38, + -1, -1, 41, 42, -1, 44, 45, 46, 47, 48, + 49, 50, 51, 52, 53, 54, 55, -1, 57, 58, + 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, + 69, -1, 71, 72, 73, 74, 75, -1, 77, -1, + 79, 80, 81, 82, 83, 84, 85, 86, 87, -1, + 89, 90, 91, 92, 93, 94, -1, 96, 97, 98, + 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, + 109, 110, 111, 112, 113, 114, 115, 116, 117, -1, + 119, 120, 121, 122, 123, 124, -1, 126, 127, 128, + 129, -1, -1, 132, 133, 134, 135, 136, -1, 138, + 139, 140, -1, 142, 143, 144, -1, 146, 147, 148, + 149, 150, 151, 152, 153, 154, 155, 156, 157, -1, + 159, 160, 161, 162, -1, 164, -1, 166, 167, -1, + 169, 170, 171, 172, 173, -1, 175, 176, -1, 178, + 179, 180, -1, 182, 183, 184, 185, 186, 187, 188, + 189, 190, 191, -1, 193, 194, 195, 196, 197, 198, + 199, -1, 201, 202, 203, 204, 205, 206, 207, 208, + 209, -1, 211, -1, 213, 214, 215, 216, 217, 218, + 219, 220, 221, 222, -1, -1, 225, 226, 227, 228, + 229, -1, 231, 232, 233, 234, 235, 236, 237, 238, + 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, + 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, + 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, + 269, 270, 271, 272, 273, 274, 275, 276, -1, 278, + 279, -1, -1, 282, 283, 284, -1, -1, 287, 288, + 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, + 299, 300, 301, 302, -1, 304, 305, 306, 307, 308, + 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, + 319, 320, 321, 322, 323, 324, 325, 326, 327, -1, + 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, + 339, 340, -1, 342, 343, 344, 345, 346, 347, 348, + 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, + 359, -1, 361, 362, 363, 364, 365, 366, 367, 368, + 369, 370, 371, 372, 373, 374, 375, 376, -1, 378, + 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, + 389, 390, 391, 392, -1, 394, 395, -1, 397, 398, + 399, 400, 401, 402, 403, -1, 405, 406, 407, -1, + -1, 410, 411, 412, 413, 414, 415, 416, 417, 418, + 419, 420, 421, 422, 423, -1, 425, 426, 427, 428, + 429, 430, 431, -1, 433, 434, 435, 436, 437, 438, + 439, 440, 441, 442, 443, 444, 445, 446, -1, -1, + 449, -1, -1, 452, 453, 454, 455, 456, 457, 458, + 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, + 469, 470, 471, 472, -1, -1, -1, -1, -1, 478, + -1, 480, 481, -1, -1, -1, 3, -1, 5, 6, + 489, 8, 9, 10, 11, 12, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, + 27, 28, 29, -1, 31, 32, 33, -1, -1, -1, + -1, 38, -1, -1, 41, 42, -1, 44, 45, 46, + 47, 48, 49, 50, 51, 52, 53, 54, 55, -1, + 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, + 67, 68, 69, -1, 71, 72, 73, 74, 75, -1, + 77, -1, 79, 80, 81, 82, 83, 84, 85, 86, + 87, -1, 89, 90, 91, 92, 93, 94, -1, 96, + 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, + 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, + 117, -1, 119, 120, 121, 122, 123, 124, -1, 126, + 127, 128, 129, -1, -1, 132, 133, 134, 135, 136, + -1, 138, 139, 140, -1, 142, 143, 144, -1, 146, + 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, + 157, -1, 159, 160, 161, 162, -1, 164, -1, 166, + 167, 168, 169, 170, 171, 172, 173, -1, 175, 176, + -1, 178, 179, 180, -1, 182, 183, 184, 185, 186, + 187, 188, 189, 190, 191, -1, 193, 194, 195, 196, + 197, 198, 199, -1, 201, 202, 203, 204, 205, 206, + 207, 208, 209, -1, 211, -1, 213, 214, 215, 216, + 217, 218, 219, 220, 221, 222, -1, -1, 225, 226, + 227, 228, 229, -1, 231, 232, 233, 234, 235, 236, + 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, + 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, + 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, + 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, + -1, 278, 279, -1, -1, 282, 283, 284, -1, -1, + 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, + 297, 298, 299, 300, 301, 302, -1, 304, 305, 306, + 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, + 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, + 327, -1, 329, 330, 331, 332, 333, 334, 335, 336, + 337, 338, 339, 340, -1, 342, 343, 344, 345, 346, + 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, + 357, 358, 359, -1, 361, 362, 363, 364, 365, 366, + 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, + -1, 378, 379, 380, 381, 382, 383, 384, 385, 386, + 387, 388, 389, 390, 391, 392, -1, 394, 395, -1, + 397, 398, 399, 400, 401, 402, 403, -1, 405, 406, + 407, -1, -1, 410, 411, 412, 413, 414, 415, 416, + 417, 418, 419, 420, 421, 422, 423, -1, 425, 426, + 427, 428, 429, 430, 431, -1, 433, 434, 435, 436, + 437, 438, 439, -1, 441, 442, 443, 444, 445, 446, + -1, -1, 449, -1, -1, 452, 453, 454, 455, 456, + 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, + 467, 468, 469, 470, 471, 472, -1, -1, -1, -1, + -1, 478, -1, 480, 481, -1, -1, -1, 3, -1, + 5, 6, 489, 8, 9, 10, 11, 12, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 22, 23, 24, + 25, 26, 27, 28, 29, -1, 31, 32, 33, -1, + -1, -1, -1, 38, -1, -1, 41, 42, -1, 44, + 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, + 55, -1, 57, 58, 59, 60, 61, 62, 63, 64, + 65, 66, 67, 68, 69, -1, 71, 72, 73, 74, + 75, -1, 77, -1, 79, 80, 81, 82, 83, 84, + 85, 86, 87, -1, 89, 90, 91, 92, 93, 94, + -1, 96, 97, 98, 99, 100, 101, 102, 103, 104, + 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, + 115, 116, 117, -1, 119, 120, 121, 122, 123, 124, + -1, 126, 127, 128, 129, -1, -1, 132, 133, 134, + 135, 136, -1, 138, 139, 140, -1, 142, 143, 144, + -1, 146, 147, 148, 149, 150, 151, 152, 153, 154, + 155, 156, 157, -1, 159, 160, 161, 162, -1, 164, + -1, 166, 167, -1, 169, 170, 171, 172, 173, -1, + 175, 176, -1, 178, 179, 180, -1, 182, 183, 184, + 185, 186, 187, 188, 189, 190, 191, -1, 193, 194, + 195, 196, 197, 198, 199, -1, 201, 202, 203, 204, + 205, 206, 207, 208, 209, -1, 211, -1, 213, 214, + 215, 216, 217, 218, 219, 220, 221, 222, -1, -1, + 225, 226, 227, 228, 229, -1, 231, 232, 233, 234, + 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, + 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, + 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, + 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, + 275, 276, -1, 278, 279, -1, -1, 282, 283, 284, + -1, -1, 287, 288, 289, 290, 291, 292, 293, 294, + 295, 296, 297, 298, 299, 300, 301, 302, -1, 304, + 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, + 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, + 325, 326, 327, -1, 329, 330, 331, 332, 333, 334, + 335, 336, 337, 338, 339, 340, -1, 342, 343, 344, + 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, + 355, 356, 357, 358, 359, -1, 361, 362, 363, 364, + 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, + 375, 376, -1, 378, 379, 380, 381, 382, 383, 384, + 385, 386, 387, 388, 389, 390, 391, 392, -1, 394, + 395, -1, 397, 398, 399, 400, 401, 402, 403, -1, + 405, 406, 407, -1, -1, 410, 411, 412, 413, 414, + 415, 416, 417, 418, 419, 420, 421, 422, 423, -1, + 425, 426, 427, 428, 429, 430, 431, -1, 433, 434, + 435, 436, 437, 438, 439, -1, 441, 442, 443, 444, + 445, 446, -1, -1, 449, -1, -1, 452, 453, 454, + 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, + 465, 466, 467, 468, 469, 470, 471, 472, -1, -1, + -1, -1, -1, 478, -1, 480, 481, -1, -1, -1, + 3, -1, 5, 6, 489, 8, 9, 10, 11, 12, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, + 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, + 33, -1, -1, -1, -1, 38, -1, -1, 41, 42, + -1, 44, 45, 46, 47, 48, 49, 50, 51, 52, + 53, 54, 55, -1, 57, 58, 59, 60, 61, 62, + 63, 64, 65, 66, 67, 68, 69, -1, 71, 72, + 73, 74, 75, -1, 77, -1, 79, 80, 81, 82, + 83, 84, 85, 86, 87, -1, 89, 90, 91, 92, + 93, 94, -1, 96, 97, 98, 99, 100, 101, 102, + 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, + 113, 114, 115, 116, 117, -1, 119, 120, 121, 122, + 123, 124, -1, 126, 127, 128, 129, -1, -1, 132, + 133, 134, 135, 136, -1, 138, 139, 140, -1, 142, + 143, 144, -1, 146, 147, 148, 149, 150, 151, 152, + 153, 154, 155, 156, 157, -1, 159, 160, 161, 162, + -1, 164, -1, 166, 167, -1, 169, 170, 171, 172, + 173, -1, 175, 176, -1, 178, 179, 180, -1, 182, + 183, 184, 185, 186, 187, 188, 189, 190, 191, -1, + 193, 194, 195, 196, 197, 198, 199, -1, 201, 202, + 203, 204, 205, 206, 207, 208, 209, -1, 211, -1, + 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, + -1, -1, 225, 226, 227, 228, 229, -1, 231, 232, + 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, + 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, + 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, + 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, + 273, 274, 275, 276, -1, 278, 279, -1, -1, 282, + 283, 284, -1, -1, 287, 288, 289, 290, 291, 292, + 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, + -1, 304, 305, 306, 307, 308, 309, 310, 311, -1, + 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, + 323, 324, 325, 326, 327, -1, 329, 330, 331, 332, + 333, 334, 335, 336, 337, 338, 339, 340, -1, 342, + 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, + 353, 354, 355, 356, 357, 358, 359, -1, 361, 362, + 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, + 373, 374, 375, 376, -1, 378, 379, 380, 381, 382, + 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, + -1, 394, 395, -1, 397, 398, 399, 400, 401, 402, + 403, -1, 405, 406, 407, -1, -1, 410, 411, 412, + 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, + 423, -1, 425, 426, 427, 428, 429, 430, 431, -1, + 433, 434, 435, 436, 437, 438, 439, -1, 441, 442, + 443, 444, 445, 446, -1, -1, 449, -1, -1, 452, + 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, + 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, + -1, -1, -1, -1, -1, 478, -1, 480, 481, -1, + -1, -1, 3, -1, 5, 6, 489, 8, 9, 10, + 11, 12, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 22, 23, 24, 25, 26, 27, 28, 29, -1, + 31, 32, 33, -1, -1, -1, -1, 38, -1, -1, + 41, 42, -1, 44, 45, 46, 47, 48, 49, 50, + 51, 52, 53, 54, 55, -1, 57, 58, 59, 60, + 61, 62, 63, 64, 65, 66, 67, 68, 69, -1, + 71, 72, 73, 74, 75, -1, 77, -1, 79, 80, + 81, 82, 83, 84, 85, 86, 87, -1, 89, 90, + 91, 92, 93, 94, -1, 96, 97, 98, 99, 100, + 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, + 111, 112, 113, 114, 115, 116, 117, -1, 119, 120, + 121, 122, 123, 124, -1, 126, 127, 128, 129, -1, + -1, 132, 133, 134, 135, 136, -1, 138, 139, 140, + -1, 142, 143, 144, -1, 146, 147, 148, 149, 150, + 151, 152, 153, 154, 155, 156, 157, -1, 159, 160, + 161, 162, -1, 164, -1, 166, 167, -1, 169, 170, + 171, 172, 173, -1, 175, 176, -1, 178, 179, 180, + -1, 182, 183, 184, 185, 186, 187, 188, 189, 190, + 191, -1, 193, 194, 195, 196, 197, 198, 199, -1, + 201, 202, 203, 204, 205, 206, 207, 208, 209, -1, + 211, -1, 213, 214, 215, 216, 217, 218, 219, 220, + 221, 222, -1, -1, 225, 226, 227, 228, 229, -1, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, - 241, 242, 243, 244, -1, 246, 247, 248, 249, 250, - -1, 252, 253, -1, 255, -1, 257, 258, 259, 260, - 261, 262, -1, 264, 265, -1, -1, 268, 269, 270, - -1, -1, 273, 274, -1, 276, -1, 278, 279, 280, - 281, 282, 283, 284, 285, 286, 287, -1, 289, 290, - 291, 292, 293, 294, 295, 296, -1, 298, 299, 300, - 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, + 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, + 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, + 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, + 271, 272, 273, 274, 275, 276, -1, 278, 279, -1, + -1, 282, 283, 284, -1, -1, 287, 288, 289, 290, + 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, + 301, 302, -1, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, - 321, 322, 323, 324, -1, 326, 327, -1, 329, 330, + 321, 322, 323, 324, 325, 326, 327, -1, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, - 341, -1, 343, 344, 345, 346, 347, -1, 349, 350, - 351, 352, 353, -1, 355, 356, 357, 358, -1, 360, + -1, 342, 343, 344, 345, 346, 347, 348, 349, 350, + 351, 352, 353, 354, 355, 356, 357, 358, 359, -1, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, - 371, 372, -1, 374, 375, -1, 377, -1, 379, 380, - 381, 382, 383, -1, 385, 386, -1, -1, 389, 390, - 391, 392, 393, -1, 395, 396, 397, 398, 399, 400, - 401, -1, -1, 404, 405, 406, 407, 408, -1, -1, - 411, 412, 413, 414, 415, 416, 417, -1, 419, -1, - 421, 422, 423, 424, -1, -1, 427, -1, -1, 430, - 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, - 441, 442, 443, 444, 445, 446, 447, 448, 449, -1, - -1, -1, -1, -1, -1, 3, 4, 5, -1, -1, - 8, 9, -1, -1, -1, -1, 467, 15, 16, 17, - 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, - 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, - 38, 39, 40, 41, 42, 43, 44, 45, 46, -1, - 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, - 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, - 68, 69, -1, 71, 72, 73, 74, 75, 76, 77, - 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, - 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, - 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, - 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, - 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, - 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, - 138, 139, 140, 141, 142, 143, 144, -1, 146, 147, - 148, -1, 150, 151, 152, 153, 154, 155, 156, 157, - 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, - 168, 169, -1, 171, -1, 173, 174, 175, 176, 177, - 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, - 188, 189, 190, 191, 192, 193, 194, -1, 196, 197, - 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, - 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, - -1, 219, 220, 221, 222, 223, 224, 225, 226, 227, - 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, - 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, - 248, 249, 250, 251, 252, 253, 254, 255, 256, -1, - 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, - 268, 269, 270, 271, 272, 273, -1, 275, 276, 277, - -1, 279, 280, 281, 282, 283, 284, 285, 286, 287, - 288, 289, 290, -1, 292, -1, 294, 295, 296, 297, - 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, - 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, - 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, - 328, 329, 330, 331, -1, 333, 334, 335, 336, 337, - 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, - 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, - 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, - 368, 369, 370, 371, -1, 373, 374, 375, 376, 377, - 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, - 388, 389, 390, -1, 392, -1, 394, 395, 396, 397, - 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, - 408, 409, 410, 411, 412, 413, 414, 415, -1, 417, - 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, - 428, 429, 430, 431, 432, 433, 434, 435, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 447, - 448, 449, -1, -1, -1, 453, 454, 455, -1, 457, - 458, 459, 460, 461, 462, 463, 3, 4, 5, -1, - -1, 8, 9, -1, -1, -1, -1, -1, 15, 16, - 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, - 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, - 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, - -1, 48, 49, 50, 51, 52, 53, 54, 55, 56, + 371, 372, 373, 374, 375, 376, -1, 378, 379, 380, + 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, + 391, 392, -1, 394, 395, -1, 397, 398, 399, 400, + 401, 402, 403, -1, 405, 406, 407, -1, -1, 410, + 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, + 421, 422, 423, -1, 425, 426, 427, 428, 429, 430, + 431, -1, 433, 434, 435, 436, 437, 438, 439, -1, + 441, 442, 443, 444, 445, 446, -1, -1, 449, -1, + -1, 452, 453, 454, 455, 456, 457, 458, 459, 460, + 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, + 471, 472, -1, -1, -1, -1, -1, 478, -1, 480, + 481, -1, -1, -1, 3, -1, 5, 6, 489, 8, + 9, 10, 11, 12, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, + 29, -1, 31, 32, 33, -1, -1, -1, -1, 38, + -1, -1, 41, 42, -1, 44, 45, 46, 47, 48, + 49, 50, 51, 52, 53, 54, 55, -1, 57, 58, + 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, + 69, -1, 71, 72, 73, 74, 75, -1, 77, -1, + 79, 80, 81, 82, 83, 84, 85, 86, 87, -1, + 89, 90, 91, 92, 93, 94, -1, 96, 97, 98, + 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, + 109, 110, 111, 112, 113, 114, 115, 116, 117, -1, + 119, 120, 121, 122, 123, 124, -1, 126, 127, 128, + 129, -1, -1, 132, 133, 134, 135, 136, -1, 138, + 139, 140, -1, 142, 143, 144, -1, 146, 147, 148, + 149, 150, 151, 152, 153, 154, 155, 156, 157, -1, + 159, 160, 161, 162, -1, 164, -1, 166, 167, -1, + 169, 170, 171, 172, 173, -1, 175, 176, -1, 178, + 179, 180, -1, 182, 183, 184, 185, 186, 187, 188, + 189, 190, 191, -1, 193, 194, 195, 196, 197, 198, + 199, -1, 201, 202, 203, 204, 205, 206, 207, 208, + 209, -1, 211, -1, 213, 214, 215, 216, 217, 218, + 219, 220, 221, 222, -1, -1, 225, 226, 227, 228, + 229, -1, 231, 232, 233, 234, 235, 236, 237, 238, + 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, + 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, + 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, + 269, 270, 271, 272, 273, 274, 275, 276, -1, 278, + 279, -1, -1, 282, 283, 284, -1, -1, 287, 288, + 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, + 299, 300, 301, 302, -1, 304, 305, 306, 307, 308, + 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, + 319, 320, 321, 322, 323, 324, 325, 326, 327, -1, + 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, + 339, 340, -1, 342, 343, 344, 345, 346, 347, 348, + 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, + 359, -1, 361, 362, 363, 364, 365, 366, 367, 368, + 369, 370, 371, 372, 373, 374, 375, 376, -1, 378, + 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, + 389, 390, 391, 392, -1, 394, 395, -1, 397, 398, + 399, 400, 401, 402, 403, -1, 405, 406, 407, -1, + -1, 410, 411, 412, 413, 414, 415, 416, 417, 418, + 419, 420, 421, 422, 423, -1, 425, 426, 427, 428, + 429, 430, 431, -1, 433, 434, 435, 436, 437, 438, + 439, -1, 441, 442, 443, 444, 445, 446, -1, -1, + 449, -1, -1, 452, 453, 454, 455, 456, 457, 458, + 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, + 469, 470, 471, 472, -1, -1, -1, -1, -1, 478, + -1, 480, 481, -1, -1, -1, 3, -1, 5, 6, + 489, 8, 9, 10, 11, 12, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, + 27, 28, 29, -1, 31, 32, 33, -1, -1, -1, + -1, 38, -1, -1, 41, 42, -1, 44, 45, 46, + 47, 48, 49, 50, 51, 52, 53, 54, 55, -1, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, - 67, 68, 69, -1, 71, 72, 73, 74, 75, 76, - 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, - 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, + 67, 68, 69, -1, 71, 72, 73, 74, 75, -1, + 77, -1, 79, 80, 81, 82, 83, 84, 85, 86, + 87, -1, 89, 90, 91, 92, 93, 94, -1, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, - 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, - 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, - 137, 138, 139, 140, 141, 142, 143, 144, -1, 146, - 147, 148, -1, 150, 151, 152, 153, 154, 155, 156, - 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, - 167, 168, 169, -1, 171, -1, 173, 174, 175, 176, - 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, - 187, 188, 189, 190, 191, 192, 193, 194, -1, 196, - 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, - 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, - 217, -1, 219, 220, 221, 222, 223, 224, 225, 226, - 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, + 117, -1, 119, 120, 121, 122, 123, 124, -1, 126, + 127, 128, 129, -1, -1, 132, 133, 134, 135, 136, + -1, 138, 139, 140, -1, 142, 143, 144, -1, 146, + 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, + 157, -1, 159, 160, 161, 162, -1, 164, -1, 166, + 167, -1, 169, 170, 171, 172, 173, -1, 175, 176, + -1, 178, 179, 180, -1, 182, 183, 184, 185, 186, + 187, 188, 189, 190, 191, -1, 193, 194, 195, 196, + 197, 198, 199, -1, 201, 202, 203, 204, 205, 206, + 207, 208, 209, -1, 211, -1, 213, 214, 215, 216, + 217, 218, 219, 220, 221, 222, -1, -1, 225, 226, + 227, 228, 229, -1, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, - -1, 258, 259, 260, 261, 262, 263, 264, 265, 266, - 267, 268, 269, 270, 271, 272, 273, -1, 275, 276, - 277, -1, 279, 280, 281, 282, 283, 284, 285, 286, - 287, 288, 289, 290, -1, 292, -1, 294, 295, 296, - 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, - 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, + 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, + 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, + -1, 278, 279, -1, -1, 282, 283, 284, -1, -1, + 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, + 297, 298, 299, 300, 301, 302, -1, 304, 305, 306, + 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, - 327, 328, 329, 330, 331, -1, 333, 334, 335, 336, - 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, + 327, -1, 329, 330, 331, 332, 333, 334, 335, 336, + 337, 338, 339, 340, -1, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, - 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, - 367, 368, 369, 370, 371, -1, 373, 374, 375, 376, - 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, - 387, 388, 389, 390, -1, 392, -1, 394, 395, 396, - 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, - 407, 408, 409, 410, 411, 412, 413, 414, 415, -1, - 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, - 427, 428, 429, 430, 431, 432, 433, 434, 435, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 447, 448, 449, 3, 4, 5, 453, 454, 455, 9, - 457, 458, 459, 460, 461, 462, 463, -1, 18, 19, - 20, 21, 22, 23, 24, 25, -1, 27, 28, 29, - -1, -1, -1, -1, -1, -1, -1, 37, 38, -1, - 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, - 50, 51, -1, 53, 54, 55, 56, 57, -1, -1, - 60, 61, 62, 63, 64, -1, 66, 67, 68, 69, - 70, -1, 72, -1, 74, 75, 76, 77, 78, 79, - 80, 81, 82, -1, 84, 85, 86, 87, 88, 89, - -1, 91, 92, 93, 94, -1, -1, -1, 98, -1, - -1, -1, 102, 103, 104, 105, 106, 107, 108, 109, - 110, 111, 112, -1, 114, 115, 116, 117, 118, 119, - -1, 121, 122, 123, 124, -1, -1, 127, 128, 129, - 130, 131, -1, 133, 134, 135, -1, 137, 138, 139, - -1, 141, 142, 143, 144, 145, 146, 147, 148, 149, - 150, 151, -1, 153, 154, 155, 156, -1, 158, -1, - 160, 161, -1, 163, 164, 165, 166, 167, -1, 169, - 170, -1, 172, 173, -1, 175, 176, 177, 178, 179, - 180, 181, 182, 183, 184, -1, 186, 187, 188, 189, - 190, 191, -1, 193, 194, 195, 196, 197, 198, 199, - 200, 201, -1, 203, -1, 205, 206, 207, 208, 209, - 210, 211, 212, 213, 214, -1, -1, 217, 218, 219, - 220, 221, -1, 223, 224, 225, -1, -1, 228, 229, - 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, - 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, - 250, -1, 252, 253, 254, 255, -1, 257, 258, 259, - 260, 261, 262, -1, 264, 265, 266, -1, 268, 269, - 270, -1, -1, 273, 274, 275, 276, 277, 278, 279, - 280, 281, 282, 283, 284, 285, 286, 287, -1, 289, - 290, 291, 292, 293, 294, 295, 296, -1, 298, 299, - 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, - 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, - 320, 321, 322, 323, 324, -1, 326, 327, 328, 329, - 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, - 340, 341, -1, 343, 344, 345, 346, 347, -1, 349, - 350, 351, 352, 353, 354, 355, 356, 357, 358, -1, - 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, - 370, 371, 372, -1, 374, 375, -1, 377, 378, 379, - 380, 381, 382, 383, -1, 385, 386, -1, -1, 389, - 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, - 400, 401, -1, -1, 404, 405, 406, 407, 408, -1, - -1, 411, 412, 413, 414, 415, 416, 417, -1, 419, - 420, 421, 422, 423, 424, -1, -1, 427, -1, -1, - 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, - 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, - 3, 4, 5, -1, -1, -1, 9, 457, 458, -1, - -1, -1, -1, 463, -1, 18, 19, 20, 21, 22, - 23, 24, 25, -1, 27, 28, 29, -1, -1, -1, - -1, -1, -1, -1, 37, 38, -1, 40, 41, 42, - 43, 44, 45, 46, 47, 48, 49, 50, 51, -1, - 53, 54, 55, 56, 57, -1, -1, 60, 61, 62, - 63, 64, -1, 66, 67, 68, 69, 70, -1, 72, - -1, 74, 75, 76, 77, 78, 79, 80, 81, 82, - -1, 84, 85, 86, 87, 88, 89, -1, 91, 92, - 93, 94, -1, -1, -1, 98, -1, -1, -1, 102, + 357, 358, 359, -1, 361, 362, 363, 364, 365, 366, + 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, + -1, 378, 379, 380, 381, 382, 383, 384, 385, 386, + 387, 388, 389, 390, 391, 392, -1, 394, 395, -1, + 397, 398, 399, 400, 401, 402, 403, -1, 405, 406, + 407, -1, -1, 410, 411, 412, 413, 414, 415, 416, + 417, 418, 419, 420, 421, 422, 423, -1, 425, 426, + 427, 428, 429, 430, 431, -1, 433, 434, 435, 436, + 437, 438, 439, -1, 441, 442, 443, 444, 445, 446, + -1, -1, 449, -1, -1, 452, 453, 454, 455, 456, + 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, + 467, 468, 469, 470, 471, 472, -1, -1, -1, -1, + -1, 478, -1, 480, 481, -1, -1, -1, 3, -1, + 5, 6, 489, 8, 9, 10, 11, 12, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 22, 23, 24, + 25, 26, 27, 28, 29, -1, 31, 32, 33, -1, + -1, -1, -1, 38, -1, -1, 41, 42, -1, 44, + 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, + 55, -1, 57, 58, 59, 60, 61, 62, 63, 64, + 65, 66, 67, 68, 69, -1, 71, 72, 73, 74, + 75, -1, 77, -1, 79, 80, 81, 82, 83, 84, + 85, 86, 87, -1, 89, 90, 91, 92, 93, 94, + -1, 96, 97, 98, 99, 100, 101, 102, 103, 104, + 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, + 115, 116, 117, -1, 119, 120, 121, 122, 123, 124, + -1, 126, 127, 128, 129, -1, -1, 132, 133, 134, + 135, 136, -1, 138, 139, 140, -1, 142, 143, 144, + -1, 146, 147, 148, 149, 150, 151, 152, 153, 154, + 155, 156, 157, -1, 159, 160, 161, 162, -1, 164, + -1, 166, 167, -1, 169, 170, 171, 172, 173, -1, + 175, 176, -1, 178, 179, 180, -1, 182, 183, 184, + 185, 186, 187, 188, 189, 190, 191, -1, 193, 194, + 195, 196, 197, 198, 199, -1, 201, 202, 203, 204, + 205, 206, 207, 208, 209, -1, 211, -1, 213, 214, + 215, 216, 217, 218, 219, 220, 221, 222, -1, -1, + 225, 226, 227, 228, 229, -1, 231, 232, 233, 234, + 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, + 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, + 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, + 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, + 275, 276, -1, 278, 279, -1, -1, 282, 283, 284, + -1, -1, 287, 288, 289, 290, 291, 292, 293, 294, + 295, 296, 297, 298, 299, 300, 301, 302, -1, 304, + 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, + 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, + 325, 326, 327, -1, 329, 330, 331, 332, 333, 334, + 335, 336, 337, 338, 339, 340, -1, 342, 343, 344, + 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, + 355, 356, 357, 358, 359, -1, 361, 362, 363, 364, + 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, + 375, 376, -1, 378, 379, 380, 381, 382, 383, 384, + 385, 386, 387, 388, 389, 390, 391, 392, -1, 394, + 395, -1, 397, 398, 399, 400, 401, 402, 403, -1, + 405, 406, 407, -1, -1, 410, 411, 412, 413, 414, + 415, 416, 417, 418, 419, 420, 421, 422, 423, -1, + 425, 426, 427, 428, 429, 430, 431, -1, 433, 434, + 435, 436, 437, 438, 439, -1, 441, 442, 443, 444, + 445, 446, -1, -1, 449, -1, -1, 452, 453, 454, + 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, + 465, 466, 467, 468, 469, 470, 471, 472, -1, -1, + -1, -1, -1, 478, -1, 480, 481, -1, -1, -1, + 3, -1, 5, 6, 489, 8, 9, 10, 11, 12, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, + 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, + 33, -1, -1, -1, -1, 38, -1, -1, 41, 42, + -1, 44, 45, 46, 47, 48, 49, 50, 51, 52, + 53, 54, 55, -1, 57, 58, 59, 60, 61, 62, + 63, 64, 65, 66, 67, 68, 69, -1, 71, 72, + 73, 74, 75, -1, 77, -1, 79, 80, 81, 82, + 83, 84, 85, 86, 87, -1, 89, 90, 91, 92, + 93, 94, -1, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, - -1, 114, 115, 116, 117, 118, 119, -1, 121, 122, - 123, 124, -1, -1, 127, 128, 129, 130, 131, -1, - 133, 134, 135, -1, 137, 138, 139, -1, 141, 142, - 143, 144, 145, 146, 147, 148, 149, 150, 151, -1, - 153, 154, 155, 156, -1, 158, -1, 160, 161, -1, - 163, 164, 165, 166, 167, -1, 169, 170, -1, 172, - 173, -1, 175, 176, 177, 178, 179, 180, 181, 182, - 183, 184, -1, 186, 187, 188, 189, 190, 191, -1, - 193, 194, 195, 196, 197, 198, 199, 200, 201, -1, - 203, -1, 205, 206, 207, 208, 209, 210, 211, 212, - 213, 214, -1, -1, 217, 218, 219, 220, 221, -1, - 223, 224, 225, -1, -1, 228, 229, 230, 231, 232, + 113, 114, 115, 116, 117, -1, 119, 120, 121, 122, + 123, 124, -1, 126, 127, 128, 129, -1, -1, 132, + 133, 134, 135, 136, -1, 138, 139, 140, -1, 142, + 143, 144, -1, 146, 147, 148, 149, 150, 151, 152, + 153, 154, 155, 156, 157, -1, 159, 160, 161, 162, + -1, 164, -1, 166, 167, -1, 169, 170, 171, 172, + 173, -1, 175, 176, -1, 178, 179, 180, -1, 182, + 183, 184, 185, 186, 187, 188, 189, 190, 191, -1, + 193, 194, 195, 196, 197, 198, 199, -1, 201, 202, + 203, 204, 205, 206, 207, 208, 209, -1, 211, -1, + 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, + -1, -1, 225, 226, 227, 228, 229, -1, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, - 243, 244, 245, 246, 247, 248, 249, 250, -1, 252, - 253, 254, 255, -1, 257, 258, 259, 260, 261, 262, - -1, 264, 265, 266, -1, 268, 269, 270, -1, -1, - 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, - 283, 284, 285, 286, 287, -1, 289, 290, 291, 292, - 293, 294, 295, 296, -1, 298, 299, 300, 301, 302, - 303, 304, 305, 306, 307, 308, 309, 310, 311, -1, + 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, + 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, + 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, + 273, 274, 275, 276, -1, 278, 279, -1, -1, 282, + 283, 284, -1, -1, 287, 288, 289, 290, 291, 292, + 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, + -1, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, - 323, 324, -1, 326, 327, 328, 329, 330, 331, 332, - 333, 334, 335, 336, 337, 338, 339, 340, 341, -1, - 343, 344, 345, 346, 347, -1, 349, 350, 351, 352, - 353, 354, 355, 356, 357, 358, -1, 360, 361, 362, + 323, 324, 325, 326, 327, -1, 329, 330, 331, 332, + 333, 334, 335, 336, 337, 338, 339, 340, -1, 342, + 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, + 353, 354, 355, 356, 357, 358, 359, -1, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, - -1, 374, 375, -1, 377, 378, 379, 380, 381, 382, - 383, -1, 385, 386, -1, -1, 389, 390, 391, 392, - 393, 394, 395, 396, 397, 398, 399, 400, 401, -1, - -1, 404, 405, 406, 407, 408, -1, -1, 411, 412, - 413, 414, 415, 416, 417, -1, 419, 420, 421, 422, - 423, 424, -1, -1, 427, -1, -1, 430, 431, 432, - 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, - 443, 444, 445, 446, 447, 448, 449, 3, 4, 5, - -1, -1, -1, 9, 457, 458, -1, -1, -1, -1, - 463, -1, 18, 19, 20, 21, 22, 23, 24, 25, - -1, 27, 28, 29, -1, -1, -1, -1, -1, -1, - -1, 37, 38, -1, 40, 41, 42, 43, 44, 45, - 46, 47, 48, 49, 50, 51, -1, 53, 54, 55, - 56, 57, -1, -1, 60, 61, 62, 63, 64, -1, - 66, 67, 68, 69, 70, -1, 72, -1, 74, 75, - 76, 77, 78, 79, 80, 81, 82, -1, 84, 85, - 86, 87, 88, 89, -1, 91, 92, 93, 94, -1, - -1, -1, 98, -1, -1, -1, 102, 103, 104, 105, - 106, 107, 108, 109, 110, -1, 112, -1, 114, 115, - 116, 117, 118, 119, -1, 121, 122, 123, 124, -1, - -1, 127, 128, 129, 130, 131, -1, 133, 134, 135, - -1, 137, 138, 139, -1, 141, 142, 143, 144, 145, - 146, 147, 148, 149, 150, 151, -1, 153, 154, 155, - 156, -1, 158, -1, 160, 161, -1, 163, 164, 165, - 166, 167, -1, 169, 170, -1, 172, 173, -1, 175, - 176, 177, 178, 179, 180, 181, 182, 183, 184, -1, - 186, 187, 188, 189, 190, 191, -1, 193, 194, 195, - 196, 197, 198, 199, 200, 201, -1, 203, -1, 205, - 206, 207, 208, 209, 210, 211, 212, 213, 214, -1, - -1, 217, 218, 219, 220, 221, -1, 223, 224, 225, - -1, -1, 228, 229, 230, 231, 232, 233, 234, 235, - 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, - 246, 247, 248, 249, 250, -1, 252, 253, 254, 255, - -1, 257, 258, 259, 260, 261, 262, -1, 264, 265, - 266, -1, 268, 269, 270, -1, -1, 273, 274, 275, - 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, - 286, 287, -1, 289, 290, 291, 292, 293, 294, 295, - 296, -1, 298, 299, 300, 301, 302, 303, 304, 305, - 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, - 316, 317, 318, 319, 320, 321, 322, 323, 324, -1, - 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, - 336, 337, 338, 339, 340, 341, -1, 343, 344, 345, - 346, 347, -1, 349, 350, 351, 352, 353, 354, 355, - 356, 357, 358, -1, 360, 361, 362, 363, 364, 365, - 366, 367, 368, 369, 370, 371, 372, -1, 374, 375, - -1, 377, 378, 379, 380, 381, 382, 383, -1, 385, - 386, -1, -1, 389, 390, 391, 392, 393, 394, 395, - 396, 397, 398, 399, 400, 401, -1, -1, 404, 405, - 406, 407, 408, -1, -1, 411, 412, 413, 414, 415, - 416, 417, -1, 419, 420, 421, 422, 423, 424, -1, - -1, 427, -1, -1, 430, 431, 432, 433, 434, 435, - 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, - 446, 447, 448, 449, 3, -1, 5, -1, -1, -1, - -1, 457, 458, -1, -1, -1, -1, 463, -1, 18, - 19, 20, 21, 22, 23, 24, 25, -1, 27, 28, - 29, -1, -1, -1, -1, -1, -1, -1, 37, 38, - -1, 40, 41, 42, 43, 44, 45, 46, 47, 48, - 49, 50, 51, -1, 53, 54, 55, 56, 57, -1, - -1, 60, 61, 62, 63, 64, -1, 66, 67, 68, - 69, 70, -1, 72, -1, 74, 75, 76, 77, 78, - 79, 80, 81, 82, -1, 84, 85, 86, 87, 88, - 89, -1, 91, 92, 93, 94, -1, -1, -1, 98, - -1, -1, -1, 102, 103, 104, 105, 106, 107, 108, - 109, 110, 111, 112, -1, 114, 115, 116, 117, 118, - 119, -1, 121, 122, 123, 124, -1, -1, 127, 128, - 129, 130, 131, -1, 133, 134, 135, -1, 137, 138, - 139, -1, 141, 142, 143, 144, 145, 146, 147, 148, - 149, -1, 151, -1, 153, 154, 155, 156, -1, 158, - -1, 160, 161, -1, 163, 164, 165, 166, 167, -1, - 169, 170, -1, 172, 173, -1, 175, 176, 177, 178, - 179, 180, 181, 182, 183, 184, -1, 186, 187, 188, + 373, 374, 375, 376, -1, 378, 379, 380, 381, 382, + 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, + -1, 394, 395, -1, 397, 398, 399, 400, 401, 402, + 403, -1, 405, 406, 407, -1, -1, 410, 411, 412, + 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, + 423, -1, 425, 426, 427, 428, 429, 430, 431, -1, + 433, 434, 435, 436, 437, 438, 439, -1, 441, 442, + 443, 444, 445, 446, -1, -1, 449, -1, -1, 452, + 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, + 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, + -1, -1, -1, -1, -1, 478, -1, 480, 481, -1, + -1, -1, 3, -1, 5, 6, 489, 8, 9, 10, + 11, 12, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 22, 23, 24, 25, 26, 27, 28, 29, -1, + 31, 32, 33, -1, -1, -1, -1, 38, -1, -1, + 41, 42, -1, 44, 45, 46, 47, 48, 49, 50, + 51, 52, 53, 54, 55, -1, 57, 58, 59, 60, + 61, 62, 63, 64, 65, 66, 67, 68, 69, -1, + 71, 72, 73, 74, 75, -1, 77, -1, 79, 80, + 81, 82, 83, 84, 85, 86, 87, -1, 89, 90, + 91, 92, 93, 94, -1, 96, 97, 98, 99, 100, + 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, + 111, 112, 113, 114, 115, 116, 117, -1, 119, 120, + 121, 122, 123, 124, -1, 126, 127, 128, 129, -1, + -1, 132, 133, 134, 135, 136, -1, 138, 139, 140, + -1, 142, 143, 144, -1, 146, 147, 148, 149, 150, + 151, 152, 153, 154, 155, 156, 157, -1, 159, 160, + 161, 162, -1, 164, -1, 166, 167, -1, 169, 170, + 171, 172, 173, -1, 175, 176, -1, 178, 179, 180, + -1, 182, 183, 184, 185, 186, 187, 188, 189, 190, + 191, -1, 193, 194, 195, 196, 197, 198, 199, -1, + 201, 202, 203, 204, 205, 206, 207, 208, 209, -1, + 211, -1, 213, 214, 215, 216, 217, 218, 219, 220, + 221, 222, -1, -1, 225, 226, 227, 228, 229, -1, + 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, + 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, + 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, + 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, + 271, 272, 273, 274, 275, 276, -1, 278, 279, -1, + -1, 282, 283, 284, -1, -1, 287, 288, 289, 290, + 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, + 301, 302, -1, 304, 305, 306, 307, 308, 309, 310, + 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, + 321, 322, 323, 324, 325, 326, 327, -1, 329, 330, + 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, + -1, 342, 343, 344, 345, 346, 347, 348, 349, 350, + 351, 352, 353, 354, 355, 356, 357, 358, 359, -1, + 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, + 371, 372, 373, 374, 375, 376, -1, 378, 379, 380, + 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, + 391, 392, -1, 394, 395, -1, 397, 398, 399, 400, + 401, 402, 403, -1, 405, 406, 407, -1, -1, 410, + 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, + 421, 422, 423, -1, 425, 426, 427, 428, 429, 430, + 431, -1, 433, 434, 435, 436, 437, 438, 439, -1, + 441, 442, 443, 444, 445, 446, -1, -1, 449, -1, + -1, 452, 453, 454, 455, 456, 457, 458, 459, 460, + 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, + 471, 472, -1, -1, -1, -1, -1, 478, -1, 480, + 481, -1, -1, -1, 3, -1, 5, 6, 489, 8, + 9, 10, 11, 12, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, + 29, -1, 31, 32, 33, -1, -1, -1, -1, 38, + -1, -1, 41, 42, -1, 44, 45, 46, 47, 48, + 49, 50, 51, 52, 53, 54, 55, -1, 57, 58, + 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, + 69, -1, 71, 72, 73, 74, 75, -1, 77, -1, + 79, 80, 81, 82, 83, 84, 85, 86, 87, -1, + 89, 90, 91, 92, 93, 94, -1, 96, 97, 98, + 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, + 109, 110, 111, 112, 113, 114, 115, 116, 117, -1, + 119, 120, 121, 122, 123, 124, -1, 126, 127, 128, + 129, -1, -1, 132, 133, 134, 135, 136, -1, 138, + 139, 140, -1, 142, 143, 144, -1, 146, 147, 148, + 149, 150, 151, 152, 153, 154, 155, 156, 157, -1, + 159, 160, 161, 162, -1, 164, -1, 166, 167, -1, + 169, 170, 171, 172, 173, -1, 175, 176, -1, 178, + 179, 180, -1, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, -1, 193, 194, 195, 196, 197, 198, - 199, 200, 201, -1, 203, -1, 205, 206, 207, 208, - 209, 210, 211, 212, 213, 214, -1, -1, 217, 218, - 219, 220, 221, -1, 223, 224, 225, -1, -1, 228, - 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, + 199, -1, 201, 202, 203, 204, 205, 206, 207, 208, + 209, -1, 211, -1, 213, 214, 215, 216, 217, 218, + 219, 220, 221, 222, -1, -1, 225, 226, 227, 228, + 229, -1, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, - 249, 250, -1, 252, 253, 254, 255, -1, 257, 258, - 259, 260, 261, 262, -1, 264, 265, -1, -1, 268, - 269, 270, -1, -1, 273, 274, 275, 276, 277, 278, - 279, 280, 281, 282, 283, 284, 285, 286, 287, -1, - 289, 290, 291, 292, 293, 294, 295, 296, -1, 298, - 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, + 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, + 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, + 269, 270, 271, 272, 273, 274, 275, 276, -1, 278, + 279, -1, -1, 282, 283, 284, -1, -1, 287, 288, + 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, + 299, 300, 301, 302, -1, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, - 319, 320, 321, 322, 323, 324, -1, 326, 327, 328, + 319, 320, 321, 322, 323, 324, 325, 326, 327, -1, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, - 339, 340, 341, -1, 343, 344, 345, 346, 347, -1, + 339, 340, -1, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, - -1, 360, 361, 362, 363, 364, 365, 366, 367, 368, - 369, 370, 371, 372, -1, 374, 375, -1, 377, 378, - 379, 380, 381, 382, 383, -1, 385, 386, -1, -1, - 389, 390, 391, 392, 393, -1, 395, 396, 397, 398, - 399, 400, 401, -1, -1, 404, 405, 406, 407, 408, - -1, -1, 411, 412, 413, 414, 415, 416, 417, -1, - 419, 420, 421, 422, 423, 424, -1, -1, 427, -1, - -1, 430, 431, 432, 433, 434, 435, 436, 437, 438, - 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, - 449, 3, -1, 5, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 463, -1, 18, 19, 20, 21, - 22, 23, 24, 25, -1, 27, 28, 29, -1, -1, - -1, -1, -1, -1, -1, 37, 38, -1, 40, 41, - 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, - -1, 53, 54, 55, 56, 57, -1, -1, 60, 61, - 62, 63, 64, -1, 66, 67, 68, 69, 70, -1, - 72, -1, 74, 75, 76, 77, 78, 79, 80, 81, - 82, -1, 84, 85, 86, 87, 88, 89, -1, 91, - 92, 93, 94, -1, -1, -1, 98, -1, -1, -1, - 102, 103, 104, 105, 106, 107, 108, 109, 110, -1, - 112, -1, 114, 115, 116, 117, 118, 119, -1, 121, - 122, 123, 124, -1, -1, 127, 128, 129, 130, 131, - -1, 133, 134, 135, -1, 137, 138, 139, -1, 141, - 142, 143, 144, 145, 146, 147, 148, 149, -1, 151, - -1, 153, 154, 155, 156, -1, 158, -1, 160, 161, - -1, 163, 164, 165, 166, 167, -1, 169, 170, -1, - 172, 173, -1, 175, 176, 177, 178, 179, 180, 181, - 182, 183, 184, -1, 186, 187, 188, 189, 190, 191, - -1, 193, 194, 195, 196, 197, 198, 199, 200, 201, - -1, 203, -1, 205, 206, 207, 208, 209, 210, 211, - 212, 213, 214, -1, -1, 217, 218, 219, 220, 221, - -1, 223, 224, 225, -1, -1, 228, 229, 230, 231, + 359, -1, 361, 362, 363, 364, 365, 366, 367, 368, + 369, 370, 371, 372, 373, 374, 375, 376, -1, 378, + 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, + 389, 390, 391, 392, -1, 394, 395, -1, 397, 398, + 399, 400, 401, 402, 403, -1, 405, 406, 407, -1, + -1, 410, 411, 412, 413, 414, 415, 416, 417, 418, + 419, 420, 421, 422, 423, -1, 425, 426, 427, 428, + 429, 430, 431, -1, 433, 434, 435, 436, 437, 438, + 439, -1, 441, 442, 443, 444, 445, 446, -1, -1, + 449, -1, -1, 452, 453, 454, 455, 456, 457, 458, + 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, + 469, 470, 471, 472, -1, -1, -1, -1, -1, 478, + -1, 480, 481, -1, -1, -1, 3, -1, 5, 6, + 489, 8, 9, 10, 11, 12, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, + 27, 28, 29, -1, 31, 32, 33, -1, -1, -1, + -1, 38, -1, -1, 41, 42, -1, 44, 45, 46, + 47, 48, 49, 50, 51, 52, 53, 54, 55, -1, + 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, + 67, 68, 69, -1, 71, 72, 73, 74, 75, -1, + 77, -1, 79, 80, 81, 82, 83, 84, 85, 86, + 87, -1, 89, 90, 91, 92, 93, 94, -1, 96, + 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, + 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, + 117, -1, 119, 120, 121, 122, 123, 124, -1, 126, + 127, 128, 129, -1, -1, 132, 133, 134, 135, 136, + -1, 138, 139, 140, -1, 142, 143, 144, -1, 146, + 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, + 157, -1, 159, 160, 161, 162, -1, 164, -1, 166, + 167, -1, 169, 170, 171, 172, 173, -1, 175, 176, + -1, 178, 179, 180, -1, 182, 183, 184, 185, 186, + 187, 188, 189, 190, 191, -1, 193, 194, 195, 196, + 197, 198, 199, -1, 201, 202, 203, 204, 205, 206, + 207, 208, 209, -1, 211, -1, 213, 214, 215, 216, + 217, 218, 219, 220, 221, 222, -1, -1, 225, 226, + 227, 228, 229, -1, 231, 232, 233, 234, 235, 236, + 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, + 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, + 257, 258, 259, 260, 261, 262, 263, 264, -1, 266, + 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, + -1, 278, 279, -1, -1, 282, 283, 284, -1, -1, + 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, + 297, 298, 299, 300, 301, 302, -1, 304, 305, 306, + 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, + 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, + 327, -1, 329, 330, 331, 332, 333, 334, 335, 336, + 337, 338, 339, 340, -1, 342, 343, 344, 345, 346, + 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, + 357, 358, 359, -1, 361, 362, 363, 364, 365, 366, + 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, + -1, 378, 379, 380, 381, 382, 383, 384, 385, 386, + 387, 388, 389, 390, 391, 392, -1, 394, 395, -1, + 397, 398, 399, 400, 401, 402, 403, -1, 405, 406, + 407, -1, -1, 410, 411, 412, 413, 414, 415, 416, + 417, 418, 419, 420, 421, 422, 423, -1, -1, 426, + 427, 428, 429, 430, 431, -1, 433, 434, 435, 436, + 437, 438, 439, -1, 441, 442, 443, 444, 445, 446, + -1, -1, 449, -1, -1, 452, 453, 454, 455, 456, + 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, + 467, 468, 469, 470, 471, -1, -1, -1, -1, -1, + -1, 478, -1, 480, 481, -1, -1, -1, 3, -1, + 5, 6, 489, 8, 9, 10, 11, 12, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 22, 23, 24, + 25, 26, 27, 28, 29, -1, 31, 32, 33, -1, + -1, -1, -1, 38, -1, -1, 41, 42, -1, 44, + 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, + 55, -1, 57, 58, 59, 60, 61, 62, 63, 64, + 65, 66, 67, 68, 69, -1, 71, 72, 73, 74, + 75, -1, 77, -1, 79, 80, 81, 82, 83, 84, + 85, 86, 87, -1, 89, 90, 91, 92, 93, 94, + -1, 96, 97, 98, 99, 100, 101, 102, 103, 104, + 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, + 115, 116, 117, -1, 119, 120, 121, 122, 123, 124, + -1, 126, 127, 128, 129, -1, -1, 132, 133, 134, + 135, 136, -1, 138, 139, 140, -1, 142, 143, 144, + -1, 146, 147, 148, 149, 150, 151, 152, 153, 154, + 155, 156, 157, -1, 159, 160, 161, 162, -1, 164, + -1, 166, 167, -1, 169, 170, 171, 172, 173, -1, + 175, 176, -1, 178, 179, 180, -1, 182, 183, 184, + 185, 186, 187, 188, 189, 190, 191, -1, 193, 194, + 195, 196, 197, 198, 199, -1, 201, 202, 203, 204, + 205, 206, 207, 208, 209, -1, 211, -1, 213, -1, + -1, 216, 217, 218, 219, 220, 221, 222, -1, -1, + 225, 226, 227, 228, 229, -1, 231, 232, 233, 234, + 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, + 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, + 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, + 265, 266, 267, -1, 269, 270, 271, 272, 273, 274, + 275, 276, -1, 278, 279, -1, -1, 282, 283, 284, + -1, -1, 287, 288, 289, 290, 291, 292, 293, 294, + 295, 296, 297, 298, 299, 300, 301, 302, -1, 304, + 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, + 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, + 325, 326, 327, -1, 329, 330, 331, 332, 333, 334, + 335, 336, 337, 338, 339, 340, -1, 342, 343, 344, + 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, + 355, 356, 357, 358, 359, -1, 361, 362, 363, 364, + 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, + 375, 376, -1, 378, 379, 380, 381, 382, 383, 384, + 385, 386, 387, 388, 389, 390, 391, 392, -1, 394, + 395, -1, 397, 398, 399, 400, 401, 402, 403, -1, + 405, 406, 407, -1, -1, 410, 411, 412, 413, 414, + 415, 416, 417, 418, 419, 420, 421, 422, 423, -1, + 425, 426, 427, 428, 429, 430, 431, -1, 433, 434, + 435, 436, 437, 438, 439, -1, 441, 442, 443, 444, + 445, 446, -1, -1, 449, -1, -1, 452, 453, 454, + 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, + 465, 466, 467, 468, 469, 470, 471, 472, -1, -1, + -1, -1, -1, 478, -1, 480, 481, -1, -1, -1, + 3, -1, 5, 6, 489, 8, 9, 10, 11, 12, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, + 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, + 33, -1, -1, -1, -1, 38, -1, -1, 41, 42, + -1, 44, 45, 46, 47, 48, 49, 50, 51, 52, + 53, 54, 55, -1, 57, 58, 59, 60, 61, 62, + 63, 64, 65, 66, 67, 68, 69, -1, 71, 72, + 73, 74, 75, -1, 77, -1, 79, 80, 81, 82, + 83, 84, 85, 86, 87, -1, 89, 90, 91, 92, + 93, 94, -1, 96, 97, 98, 99, 100, 101, 102, + 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, + 113, 114, 115, -1, 117, -1, 119, 120, 121, 122, + 123, 124, -1, 126, 127, 128, 129, -1, -1, 132, + 133, 134, 135, 136, -1, 138, 139, 140, -1, 142, + 143, 144, -1, 146, 147, 148, 149, 150, 151, 152, + 153, 154, 155, 156, 157, -1, 159, 160, 161, 162, + -1, 164, -1, 166, 167, -1, 169, 170, 171, 172, + 173, -1, 175, 176, -1, 178, 179, 180, -1, 182, + 183, 184, 185, 186, 187, 188, 189, 190, 191, -1, + 193, 194, 195, 196, 197, 198, 199, -1, 201, 202, + 203, 204, 205, 206, 207, 208, 209, -1, 211, -1, + 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, + -1, -1, 225, 226, 227, 228, 229, -1, 231, 232, + 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, + 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, + 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, + 263, 264, -1, 266, 267, 268, 269, 270, 271, 272, + 273, 274, 275, 276, -1, 278, 279, -1, -1, 282, + 283, 284, -1, -1, 287, 288, 289, 290, 291, 292, + 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, + -1, 304, 305, 306, 307, 308, 309, 310, 311, -1, + 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, + 323, 324, 325, 326, 327, -1, 329, 330, 331, 332, + 333, 334, 335, 336, 337, 338, 339, 340, -1, 342, + 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, + 353, 354, 355, 356, 357, 358, 359, -1, 361, 362, + 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, + 373, 374, 375, 376, -1, 378, 379, 380, 381, 382, + 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, + -1, 394, 395, -1, 397, 398, 399, 400, 401, 402, + 403, -1, 405, 406, 407, -1, -1, 410, 411, 412, + 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, + 423, -1, -1, 426, 427, 428, 429, 430, 431, -1, + 433, 434, 435, 436, 437, 438, 439, -1, 441, 442, + 443, 444, 445, 446, -1, -1, 449, -1, -1, 452, + 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, + 463, 464, 465, 466, 467, 468, 469, 470, 471, -1, + -1, -1, -1, -1, -1, 478, -1, 480, 481, 3, + -1, 5, 6, -1, 8, 9, 489, 11, 12, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, + 24, 25, 26, 27, 28, 29, -1, 31, 32, 33, + -1, -1, -1, -1, 38, -1, -1, 41, 42, -1, + 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, + 54, 55, -1, 57, 58, 59, 60, 61, 62, 63, + 64, 65, 66, 67, 68, 69, -1, 71, 72, 73, + 74, 75, -1, 77, -1, 79, 80, 81, 82, 83, + 84, 85, 86, 87, -1, 89, 90, 91, 92, 93, + 94, -1, 96, 97, 98, 99, 100, 101, 102, 103, + 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, + 114, 115, -1, 117, -1, 119, 120, 121, 122, 123, + 124, -1, 126, 127, 128, 129, -1, -1, 132, 133, + 134, 135, 136, -1, 138, 139, 140, -1, 142, 143, + 144, -1, 146, 147, 148, 149, 150, 151, 152, 153, + 154, 155, 156, 157, -1, 159, 160, 161, 162, -1, + 164, -1, 166, 167, -1, 169, 170, 171, 172, 173, + -1, 175, 176, -1, 178, 179, 180, -1, 182, 183, + 184, 185, 186, 187, 188, 189, 190, 191, -1, 193, + 194, 195, 196, 197, 198, 199, -1, 201, 202, 203, + 204, 205, 206, 207, 208, 209, -1, 211, -1, 213, + 214, 215, 216, 217, 218, 219, 220, 221, 222, -1, + -1, 225, 226, 227, 228, 229, -1, 231, 232, 233, + 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, + 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, + 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, + 264, -1, 266, 267, 268, 269, 270, 271, 272, 273, + 274, 275, 276, -1, 278, 279, -1, -1, 282, 283, + 284, -1, -1, 287, 288, 289, 290, 291, 292, 293, + 294, 295, 296, 297, 298, 299, 300, 301, 302, -1, + 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, + 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, + 324, 325, 326, 327, -1, 329, 330, 331, 332, 333, + 334, 335, 336, 337, 338, 339, 340, -1, 342, 343, + 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, + 354, 355, 356, 357, 358, 359, -1, 361, 362, 363, + 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, + 374, 375, 376, -1, 378, 379, 380, 381, 382, 383, + 384, 385, 386, 387, 388, 389, 390, 391, 392, -1, + 394, 395, -1, 397, 398, 399, 400, 401, 402, 403, + -1, 405, 406, 407, -1, -1, 410, 411, 412, 413, + 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, + -1, -1, 426, 427, 428, 429, 430, 431, -1, 433, + 434, 435, 436, 437, 438, 439, -1, 441, 442, 443, + 444, 445, 446, -1, -1, 449, -1, -1, 452, 453, + 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, + 464, 465, 466, 467, 468, 469, 470, 471, -1, -1, + -1, -1, -1, -1, 478, -1, 480, 481, -1, -1, + -1, 3, -1, 5, 6, 489, 8, 9, 10, 11, + 12, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 22, 23, 24, 25, 26, 27, 28, 29, -1, 31, + 32, 33, -1, -1, -1, -1, 38, -1, -1, 41, + 42, -1, 44, 45, 46, 47, 48, 49, 50, 51, + 52, 53, 54, 55, -1, 57, 58, 59, 60, 61, + 62, 63, 64, 65, 66, 67, 68, 69, -1, 71, + 72, 73, 74, 75, -1, 77, -1, 79, 80, 81, + 82, 83, 84, 85, 86, 87, -1, 89, 90, 91, + 92, 93, 94, -1, 96, 97, 98, 99, 100, 101, + 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, + 112, 113, 114, 115, -1, 117, -1, 119, 120, 121, + 122, 123, 124, -1, 126, 127, 128, 129, -1, -1, + 132, 133, 134, 135, 136, -1, 138, 139, 140, -1, + 142, 143, 144, -1, 146, 147, 148, 149, 150, 151, + 152, 153, 154, 155, 156, 157, -1, 159, 160, 161, + 162, -1, 164, -1, 166, 167, -1, 169, 170, 171, + 172, 173, -1, 175, 176, -1, 178, 179, 180, -1, + 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, + -1, 193, 194, 195, 196, 197, 198, 199, -1, 201, + 202, 203, 204, 205, 206, 207, 208, 209, -1, 211, + -1, 213, -1, 215, 216, 217, 218, 219, 220, 221, + 222, -1, -1, 225, 226, 227, 228, 229, -1, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, - 242, 243, 244, 245, 246, 247, 248, 249, 250, -1, - 252, 253, 254, 255, -1, 257, 258, 259, 260, 261, - 262, -1, 264, 265, -1, -1, 268, 269, 270, -1, - -1, 273, 274, 275, 276, 277, 278, 279, 280, 281, - 282, 283, 284, 285, 286, 287, -1, 289, 290, 291, - 292, 293, 294, 295, 296, -1, 298, 299, 300, 301, - 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, + 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, + 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, + 262, 263, 264, -1, 266, 267, 268, 269, 270, 271, + 272, 273, 274, 275, 276, -1, 278, 279, -1, -1, + 282, 283, 284, -1, -1, 287, 288, 289, 290, 291, + 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, + 302, -1, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, 321, - 322, 323, 324, -1, 326, 327, 328, 329, 330, 331, - 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, - -1, 343, 344, 345, 346, 347, -1, 349, 350, 351, - 352, 353, 354, 355, 356, 357, 358, -1, 360, 361, + 322, 323, 324, 325, 326, 327, -1, 329, 330, 331, + 332, 333, 334, 335, 336, 337, 338, 339, 340, -1, + 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, + 352, 353, 354, 355, 356, 357, 358, 359, -1, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, - 372, -1, 374, 375, -1, 377, 378, 379, 380, 381, - 382, 383, -1, 385, 386, -1, -1, 389, 390, 391, - 392, 393, -1, 395, 396, 397, 398, 399, 400, 401, - -1, -1, 404, 405, 406, 407, 408, -1, -1, 411, - 412, 413, 414, 415, 416, 417, -1, 419, 420, 421, - 422, 423, 424, -1, -1, 427, -1, -1, 430, 431, - 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, - 442, 443, 444, 445, 446, 447, 448, 449, -1, -1, - 3, -1, -1, -1, -1, 8, -1, -1, -1, -1, - -1, 463, 15, 16, 17, 18, 19, 20, 21, 22, - 23, 24, 25, -1, 27, 28, 29, -1, -1, -1, - -1, -1, -1, -1, 37, 38, -1, 40, 41, 42, - -1, 44, 45, 46, 47, 48, -1, 50, 51, -1, - 53, 54, 55, 56, 57, -1, -1, 60, 61, 62, - 63, 64, -1, 66, 67, 68, 69, 70, -1, -1, - -1, 74, 75, 76, 77, 78, -1, 80, 81, 82, - -1, 84, 85, 86, 87, 88, 89, -1, -1, 92, - 93, 94, -1, -1, -1, -1, -1, -1, -1, 102, - 103, 104, 105, 106, 107, 108, 109, 110, -1, 112, - -1, 114, 115, 116, 117, 118, 119, -1, 121, 122, - 123, 124, -1, -1, 127, 128, 129, 130, 131, -1, - 133, 134, 135, -1, 137, 138, 139, -1, 141, 142, - 143, 144, 145, 146, 147, 148, 149, -1, 151, -1, - 153, 154, 155, 156, -1, 158, -1, 160, -1, -1, - -1, 164, 165, 166, 167, -1, 169, 170, -1, 172, - 173, -1, 175, 176, 177, 178, 179, -1, 181, 182, - 183, 184, -1, 186, 187, 188, 189, 190, 191, -1, - 193, -1, 195, 196, 197, 198, 199, 200, 201, -1, - 203, -1, 205, -1, -1, 208, -1, 210, 211, 212, - 213, 214, -1, -1, 217, 218, -1, 220, -1, -1, - 223, 224, 225, -1, -1, 228, 229, 230, 231, 232, + 372, 373, 374, 375, 376, -1, 378, 379, 380, 381, + 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, + 392, -1, 394, 395, -1, 397, 398, 399, 400, 401, + 402, 403, -1, 405, 406, 407, -1, -1, 410, 411, + 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, + 422, 423, -1, -1, 426, 427, 428, 429, 430, 431, + -1, 433, 434, 435, 436, 437, 438, 439, -1, 441, + 442, 443, 444, 445, 446, -1, -1, 449, -1, -1, + 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, + 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, + -1, -1, -1, -1, -1, -1, -1, -1, 480, 481, + 3, -1, 5, 6, -1, 8, 9, 489, 11, 12, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, + 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, + 33, -1, -1, -1, -1, 38, -1, -1, 41, 42, + -1, 44, 45, 46, 47, 48, 49, 50, 51, 52, + 53, 54, 55, -1, 57, 58, 59, 60, 61, 62, + 63, 64, 65, 66, 67, 68, 69, -1, 71, 72, + 73, 74, 75, -1, 77, -1, 79, 80, 81, 82, + 83, 84, 85, 86, 87, -1, 89, 90, 91, 92, + 93, 94, -1, 96, 97, 98, 99, 100, 101, 102, + 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, + 113, 114, 115, -1, 117, -1, 119, 120, 121, 122, + 123, 124, -1, 126, 127, 128, 129, -1, -1, 132, + 133, 134, 135, 136, -1, 138, 139, 140, -1, 142, + 143, 144, -1, 146, 147, 148, 149, 150, 151, 152, + 153, 154, 155, 156, 157, -1, 159, 160, 161, 162, + -1, 164, -1, 166, 167, -1, 169, 170, 171, 172, + 173, -1, 175, 176, -1, 178, 179, 180, -1, 182, + 183, 184, 185, 186, 187, 188, 189, 190, 191, -1, + 193, 194, 195, 196, 197, 198, 199, -1, 201, 202, + 203, 204, 205, 206, 207, 208, 209, -1, 211, -1, + 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, + -1, -1, 225, 226, 227, 228, 229, -1, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, - 243, 244, -1, 246, 247, 248, 249, 250, -1, 252, - 253, -1, 255, -1, 257, 258, 259, 260, 261, 262, - -1, 264, 265, -1, -1, 268, 269, 270, -1, -1, - 273, 274, -1, 276, -1, 278, 279, 280, 281, 282, - 283, 284, 285, 286, 287, -1, 289, 290, 291, 292, - 293, 294, 295, 296, -1, 298, 299, 300, 301, 302, - 303, 304, 305, 306, 307, 308, 309, 310, 311, -1, + 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, + 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, + 263, 264, -1, 266, 267, 268, 269, 270, 271, 272, + 273, 274, 275, 276, -1, 278, 279, -1, -1, 282, + 283, 284, -1, -1, 287, 288, 289, 290, 291, 292, + 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, + -1, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, - 323, 324, -1, 326, 327, -1, 329, 330, 331, 332, - 333, 334, 335, 336, 337, 338, 339, 340, 341, -1, - 343, 344, 345, 346, 347, -1, 349, 350, 351, 352, - 353, -1, 355, 356, 357, 358, -1, 360, 361, 362, + 323, 324, 325, 326, 327, -1, 329, 330, 331, 332, + 333, 334, 335, 336, 337, 338, 339, 340, -1, 342, + 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, + 353, 354, 355, 356, 357, 358, 359, -1, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, - -1, 374, 375, -1, 377, -1, 379, 380, 381, 382, - 383, -1, 385, 386, -1, -1, 389, 390, 391, 392, - 393, -1, 395, 396, 397, 398, 399, 400, 401, -1, - -1, 404, 405, 406, 407, 408, -1, -1, 411, 412, - 413, 414, 415, 416, 417, -1, 419, -1, 421, 422, - 423, 424, -1, -1, 427, -1, -1, 430, 431, 432, - 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, - 443, 444, 445, 446, 447, 448, 449, -1, -1, -1, - 453, 454, 455, -1, 457, 458, 459, 460, 461, 462, - 463, 3, -1, -1, -1, -1, 8, -1, -1, -1, - -1, -1, -1, 15, 16, 17, 18, 19, 20, 21, - 22, 23, 24, 25, -1, 27, 28, 29, -1, -1, - -1, -1, -1, -1, -1, 37, 38, -1, 40, 41, - 42, -1, 44, 45, 46, 47, 48, -1, 50, 51, - -1, 53, 54, 55, 56, 57, -1, -1, 60, 61, - 62, 63, 64, -1, 66, 67, 68, 69, 70, -1, - -1, -1, 74, 75, 76, 77, 78, -1, 80, 81, - 82, -1, 84, 85, 86, 87, 88, 89, -1, -1, - 92, 93, 94, -1, -1, -1, -1, -1, -1, -1, - 102, 103, 104, 105, 106, 107, 108, 109, 110, -1, - 112, -1, 114, 115, 116, 117, 118, 119, -1, 121, - 122, 123, 124, -1, -1, 127, 128, 129, 130, 131, - -1, 133, 134, 135, -1, 137, 138, 139, -1, 141, - 142, 143, 144, 145, 146, 147, 148, 149, -1, 151, - -1, 153, 154, 155, 156, -1, 158, -1, 160, -1, - -1, -1, 164, 165, 166, 167, -1, 169, 170, -1, - 172, 173, -1, 175, 176, 177, 178, 179, -1, 181, - 182, 183, 184, -1, 186, 187, 188, 189, 190, 191, - -1, 193, -1, 195, 196, 197, 198, 199, 200, 201, - -1, 203, -1, 205, -1, -1, 208, -1, 210, 211, - 212, 213, 214, -1, -1, 217, 218, -1, 220, -1, - -1, 223, 224, 225, -1, -1, 228, 229, 230, 231, + 373, 374, 375, 376, -1, 378, 379, 380, 381, 382, + 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, + -1, 394, 395, -1, 397, 398, 399, 400, 401, 402, + 403, -1, 405, 406, 407, -1, -1, 410, 411, 412, + 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, + 423, -1, -1, 426, 427, 428, 429, 430, 431, -1, + 433, 434, 435, 436, 437, 438, 439, -1, 441, 442, + 443, 444, 445, 446, -1, -1, 449, -1, -1, 452, + 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, + 463, 464, 465, 466, 467, 468, 469, 470, 471, -1, + -1, 3, -1, 5, 6, 478, 8, 9, 10, 11, + 12, -1, -1, -1, -1, -1, 489, -1, -1, -1, + 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, + 32, 33, -1, -1, -1, 37, 38, -1, -1, 41, + 42, -1, 44, 45, 46, 47, 48, 49, 50, -1, + 52, 53, 54, 55, -1, 57, 58, 59, 60, 61, + 62, 63, 64, 65, 66, 67, 68, 69, -1, 71, + 72, 73, 74, 75, -1, 77, -1, 79, 80, 81, + 82, 83, 84, 85, 86, 87, -1, 89, 90, 91, + 92, 93, 94, -1, 96, 97, 98, 99, 100, 101, + 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, + 112, 113, 114, 115, 116, 117, -1, 119, 120, 121, + 122, 123, 124, -1, 126, 127, 128, 129, -1, -1, + 132, 133, 134, 135, 136, -1, 138, 139, 140, -1, + 142, -1, 144, -1, 146, 147, 148, 149, 150, 151, + 152, 153, 154, 155, 156, 157, -1, 159, 160, 161, + 162, -1, 164, -1, 166, 167, -1, 169, 170, 171, + 172, 173, -1, 175, 176, -1, 178, 179, 180, -1, + 182, 183, 184, 185, 186, -1, 188, 189, 190, 191, + -1, 193, 194, 195, 196, 197, 198, 199, -1, 201, + 202, 203, 204, 205, 206, 207, 208, 209, -1, 211, + -1, 213, -1, -1, 216, 217, 218, 219, 220, 221, + 222, -1, -1, 225, 226, 227, 228, -1, -1, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, - 242, 243, 244, -1, 246, 247, 248, 249, 250, -1, - 252, 253, -1, 255, -1, 257, 258, 259, 260, 261, - 262, -1, 264, 265, -1, -1, 268, 269, 270, -1, - -1, 273, 274, -1, 276, -1, 278, 279, 280, 281, - 282, 283, 284, 285, 286, 287, -1, 289, 290, 291, - 292, 293, 294, 295, 296, -1, 298, 299, 300, 301, - 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, + 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, + 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, + 262, 263, 264, 265, 266, 267, -1, 269, 270, 271, + 272, 273, 274, 275, 276, -1, 278, 279, -1, -1, + 282, 283, 284, -1, -1, 287, 288, 289, 290, 291, + 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, + 302, -1, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, 321, - 322, 323, 324, -1, 326, 327, -1, 329, 330, 331, - 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, - -1, 343, 344, 345, 346, 347, -1, 349, 350, 351, - 352, 353, -1, 355, 356, 357, 358, -1, 360, 361, + 322, 323, 324, 325, 326, 327, -1, 329, 330, 331, + 332, 333, 334, 335, 336, 337, 338, 339, 340, -1, + 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, + 352, 353, 354, 355, 356, 357, 358, 359, -1, 361, + 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, + -1, 373, 374, 375, 376, 377, 378, 379, 380, 381, + 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, + 392, -1, 394, 395, -1, 397, 398, 399, 400, 401, + 402, 403, -1, 405, 406, 407, -1, -1, 410, 411, + 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, + 422, 423, -1, 425, 426, 427, 428, 429, 430, 431, + -1, 433, 434, 435, 436, 437, 438, 439, -1, 441, + 442, 443, 444, 445, 446, -1, -1, 449, -1, -1, + 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, + 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, + -1, -1, -1, -1, -1, -1, -1, -1, 480, 481, + 3, -1, 5, 6, -1, 8, 9, 489, 11, 12, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, + 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, + 33, -1, -1, -1, -1, 38, -1, -1, 41, 42, + -1, 44, 45, 46, 47, 48, 49, 50, 51, 52, + 53, 54, 55, -1, 57, 58, 59, 60, 61, 62, + 63, 64, 65, 66, 67, 68, 69, -1, 71, 72, + 73, 74, 75, -1, 77, -1, 79, 80, 81, 82, + 83, 84, 85, 86, 87, -1, 89, 90, 91, 92, + 93, 94, -1, 96, 97, 98, 99, 100, 101, 102, + 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, + 113, 114, 115, -1, 117, -1, 119, 120, 121, 122, + 123, 124, -1, 126, 127, 128, 129, -1, -1, 132, + 133, 134, 135, 136, -1, 138, 139, 140, -1, 142, + 143, 144, -1, 146, 147, 148, 149, 150, 151, 152, + 153, 154, 155, 156, 157, -1, 159, 160, 161, 162, + -1, 164, -1, 166, 167, -1, 169, 170, 171, 172, + 173, -1, 175, 176, -1, 178, 179, 180, -1, 182, + 183, 184, 185, 186, 187, 188, 189, 190, 191, -1, + 193, 194, 195, 196, 197, 198, 199, -1, 201, 202, + 203, 204, 205, 206, 207, 208, 209, -1, 211, -1, + 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, + -1, -1, 225, 226, 227, 228, 229, -1, 231, 232, + 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, + 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, + 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, + 263, 264, -1, 266, 267, 268, 269, 270, 271, 272, + 273, 274, 275, 276, -1, 278, 279, -1, -1, 282, + 283, 284, -1, -1, 287, 288, 289, 290, 291, 292, + 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, + -1, 304, 305, 306, 307, 308, 309, 310, 311, -1, + 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, + 323, 324, 325, 326, 327, -1, 329, 330, 331, 332, + 333, 334, 335, 336, 337, 338, 339, 340, -1, 342, + 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, + 353, 354, 355, 356, 357, 358, 359, -1, 361, 362, + 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, + 373, 374, 375, 376, -1, 378, 379, 380, 381, 382, + 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, + -1, 394, 395, -1, 397, 398, 399, 400, 401, 402, + 403, -1, 405, 406, 407, -1, -1, 410, 411, 412, + 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, + 423, -1, -1, 426, 427, 428, 429, 430, 431, -1, + 433, 434, 435, 436, 437, 438, 439, -1, 441, 442, + 443, 444, 445, 446, -1, -1, 449, -1, -1, 452, + 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, + 463, 464, 465, 466, 467, 468, 469, 470, 471, -1, + -1, 3, -1, 5, 6, 478, 8, 9, -1, 11, + 12, -1, -1, -1, -1, -1, 489, -1, -1, -1, + 22, 23, 24, 25, 26, 27, 28, 29, -1, 31, + 32, 33, -1, -1, -1, -1, 38, -1, -1, 41, + 42, -1, 44, 45, 46, 47, 48, 49, 50, 51, + 52, 53, 54, 55, -1, 57, 58, 59, 60, 61, + 62, 63, 64, 65, 66, 67, 68, 69, -1, 71, + 72, 73, 74, 75, -1, 77, -1, 79, 80, 81, + 82, 83, 84, 85, 86, 87, -1, 89, 90, 91, + 92, 93, 94, -1, 96, 97, 98, 99, 100, 101, + 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, + 112, 113, 114, 115, -1, 117, -1, 119, 120, 121, + 122, 123, 124, -1, 126, 127, 128, 129, -1, -1, + 132, 133, 134, 135, 136, -1, 138, 139, 140, -1, + 142, 143, 144, -1, 146, 147, 148, 149, 150, 151, + 152, 153, 154, 155, 156, 157, -1, 159, 160, 161, + 162, -1, 164, -1, 166, 167, -1, 169, 170, 171, + 172, 173, -1, 175, 176, -1, 178, 179, 180, -1, + 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, + -1, 193, 194, 195, 196, 197, 198, 199, -1, 201, + 202, 203, 204, 205, 206, 207, 208, 209, -1, 211, + -1, 213, 214, 215, 216, 217, 218, 219, 220, 221, + 222, -1, -1, 225, 226, 227, 228, 229, -1, 231, + 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, + 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, + 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, + 262, 263, 264, -1, 266, 267, 268, 269, 270, 271, + 272, 273, 274, 275, 276, -1, 278, 279, -1, -1, + 282, 283, 284, -1, -1, 287, 288, 289, 290, 291, + 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, + 302, -1, 304, 305, 306, 307, 308, 309, 310, 311, + -1, 313, 314, 315, 316, 317, 318, 319, 320, 321, + 322, 323, 324, 325, 326, 327, -1, 329, 330, 331, + 332, 333, 334, 335, 336, 337, 338, 339, 340, -1, + 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, + 352, 353, 354, 355, 356, 357, 358, 359, -1, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, - 372, -1, 374, 375, -1, 377, -1, 379, 380, 381, - 382, 383, -1, 385, 386, -1, -1, 389, 390, 391, - 392, 393, -1, 395, 396, 397, 398, 399, 400, 401, - -1, -1, 404, 405, 406, 407, 408, -1, -1, 411, - 412, 413, 414, 415, 416, 417, -1, 419, -1, 421, - 422, 423, 424, -1, -1, 427, -1, -1, 430, 431, - 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, - 442, 443, 444, 445, 446, 447, 448, 449, -1, -1, - -1, 453, 454, 455, -1, 457, 458, 459, 460, 461, - 462, 463, 3, -1, -1, -1, -1, 8, -1, -1, - -1, -1, -1, -1, 15, 16, 17, 18, 19, 20, - 21, 22, 23, 24, 25, -1, 27, 28, 29, -1, - -1, -1, -1, -1, -1, -1, 37, 38, -1, 40, - 41, 42, -1, 44, 45, 46, 47, 48, -1, 50, - 51, -1, 53, 54, 55, 56, 57, -1, -1, 60, - 61, 62, 63, 64, -1, 66, 67, 68, 69, 70, - -1, -1, -1, 74, 75, 76, 77, 78, -1, 80, - 81, 82, -1, 84, 85, 86, 87, 88, 89, -1, - -1, 92, 93, 94, -1, -1, -1, -1, -1, -1, - -1, 102, 103, 104, 105, 106, 107, 108, 109, 110, - -1, 112, -1, 114, 115, 116, 117, 118, 119, -1, - 121, 122, 123, 124, -1, -1, 127, 128, 129, 130, - 131, -1, 133, 134, 135, -1, 137, 138, 139, -1, - 141, 142, 143, 144, 145, 146, 147, 148, 149, -1, - 151, -1, 153, 154, 155, 156, -1, 158, -1, 160, - -1, -1, -1, 164, 165, 166, 167, -1, 169, 170, - -1, 172, 173, -1, 175, 176, 177, 178, 179, -1, - 181, 182, 183, 184, -1, 186, 187, 188, 189, 190, - 191, -1, 193, -1, 195, 196, 197, 198, 199, 200, - 201, -1, 203, -1, 205, -1, -1, 208, -1, 210, - 211, 212, 213, 214, -1, -1, 217, 218, -1, 220, - -1, -1, 223, 224, 225, -1, -1, 228, 229, 230, + 372, 373, 374, 375, 376, -1, 378, 379, 380, 381, + 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, + 392, -1, 394, 395, -1, 397, 398, 399, 400, 401, + 402, 403, -1, 405, 406, 407, -1, -1, 410, 411, + 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, + 422, 423, -1, -1, 426, 427, 428, 429, 430, 431, + -1, 433, 434, 435, 436, 437, 438, 439, -1, 441, + 442, 443, 444, 445, 446, -1, -1, 449, -1, -1, + 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, + 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, + -1, -1, 3, -1, 5, 6, 478, 8, 9, 10, + 11, 12, -1, -1, -1, -1, -1, 489, -1, -1, + -1, 22, 23, 24, 25, 26, 27, 28, 29, -1, + 31, 32, 33, -1, -1, -1, -1, 38, -1, -1, + 41, 42, -1, 44, 45, 46, 47, 48, 49, 50, + -1, 52, 53, 54, 55, -1, 57, 58, 59, 60, + 61, 62, 63, 64, 65, 66, 67, 68, 69, -1, + 71, 72, 73, 74, 75, -1, 77, -1, 79, 80, + 81, 82, 83, 84, 85, 86, 87, -1, 89, 90, + 91, 92, 93, 94, -1, 96, 97, 98, 99, 100, + 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, + 111, 112, 113, 114, 115, 116, 117, -1, 119, 120, + 121, 122, 123, 124, -1, 126, 127, 128, 129, -1, + -1, 132, 133, 134, 135, 136, -1, 138, 139, 140, + -1, 142, -1, 144, -1, 146, 147, 148, 149, 150, + 151, 152, 153, 154, 155, 156, 157, -1, 159, 160, + 161, 162, -1, 164, -1, 166, 167, -1, 169, 170, + 171, 172, 173, -1, 175, 176, -1, 178, 179, 180, + -1, 182, 183, 184, 185, 186, -1, 188, 189, 190, + 191, -1, 193, 194, 195, 196, 197, 198, 199, -1, + 201, 202, 203, 204, 205, 206, 207, 208, 209, -1, + 211, -1, 213, -1, -1, 216, 217, 218, 219, 220, + 221, 222, -1, -1, 225, 226, 227, 228, -1, -1, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, - 241, 242, 243, 244, -1, 246, 247, 248, 249, 250, - -1, 252, 253, -1, 255, -1, 257, 258, 259, 260, - 261, 262, -1, 264, 265, -1, -1, 268, 269, 270, - -1, -1, 273, 274, -1, 276, -1, 278, 279, 280, - 281, 282, 283, 284, 285, 286, 287, -1, 289, 290, - 291, 292, 293, 294, 295, 296, -1, 298, 299, 300, - 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, + 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, + 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, + 261, 262, 263, 264, 265, 266, 267, -1, 269, 270, + 271, 272, 273, 274, 275, 276, -1, 278, 279, -1, + -1, 282, 283, 284, -1, -1, 287, 288, 289, 290, + 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, + 301, 302, -1, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, - 321, 322, 323, 324, -1, 326, 327, -1, 329, 330, + 321, 322, 323, 324, 325, 326, 327, -1, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, - 341, -1, 343, 344, 345, 346, 347, -1, 349, 350, - 351, 352, 353, -1, 355, 356, 357, 358, -1, 360, + -1, 342, 343, 344, 345, 346, 347, 348, 349, 350, + 351, 352, 353, 354, 355, 356, 357, 358, 359, -1, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, - 371, 372, -1, 374, 375, -1, 377, -1, 379, 380, - 381, 382, 383, -1, 385, 386, -1, -1, 389, 390, - 391, 392, 393, -1, 395, 396, 397, 398, 399, 400, - 401, -1, -1, 404, 405, 406, 407, 408, -1, -1, - 411, 412, 413, 414, 415, 416, 417, -1, 419, -1, - 421, 422, 423, 424, -1, -1, 427, -1, -1, 430, - 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, - 441, 442, 443, 444, 445, 446, 447, 448, 449, -1, - -1, -1, 453, 454, 455, -1, 457, 458, 459, 460, - 461, 462, 463, 3, -1, -1, -1, -1, 8, -1, - -1, -1, -1, -1, -1, 15, 16, 17, 18, 19, - 20, 21, 22, 23, 24, 25, -1, 27, 28, 29, - -1, -1, -1, -1, -1, -1, -1, 37, 38, -1, - 40, 41, 42, -1, 44, 45, 46, 47, 48, -1, - 50, 51, -1, 53, 54, 55, 56, 57, -1, -1, - 60, 61, 62, 63, 64, -1, 66, 67, 68, 69, - 70, -1, -1, -1, 74, 75, 76, 77, 78, -1, - 80, 81, 82, -1, 84, 85, 86, 87, 88, 89, - -1, -1, 92, 93, 94, -1, -1, -1, -1, -1, - -1, -1, 102, 103, 104, 105, 106, 107, 108, 109, - 110, -1, 112, -1, 114, 115, 116, 117, 118, 119, - -1, 121, 122, 123, 124, -1, -1, 127, 128, 129, - 130, 131, -1, 133, 134, 135, -1, 137, 138, 139, - -1, 141, 142, 143, 144, 145, 146, 147, 148, 149, - -1, 151, -1, 153, 154, 155, 156, -1, 158, -1, - 160, -1, -1, -1, 164, 165, 166, 167, -1, 169, - 170, -1, 172, 173, -1, 175, 176, 177, 178, 179, - -1, 181, 182, 183, 184, -1, 186, 187, 188, 189, - 190, 191, -1, 193, -1, 195, 196, 197, 198, 199, - 200, 201, -1, 203, -1, 205, -1, -1, 208, -1, - 210, 211, 212, 213, 214, -1, -1, 217, 218, -1, - 220, -1, -1, 223, 224, 225, -1, -1, 228, 229, - 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, - 240, 241, 242, 243, 244, -1, 246, 247, 248, 249, - 250, -1, 252, 253, -1, 255, -1, 257, 258, 259, - 260, 261, 262, -1, 264, 265, -1, -1, 268, 269, - 270, -1, -1, 273, 274, -1, 276, -1, 278, 279, - 280, 281, 282, 283, 284, 285, 286, 287, -1, 289, - 290, 291, 292, 293, 294, 295, 296, -1, 298, 299, - 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, - 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, - 320, 321, 322, 323, 324, -1, 326, 327, -1, 329, - 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, - 340, 341, -1, 343, 344, 345, 346, 347, -1, 349, - 350, 351, 352, 353, -1, 355, 356, 357, 358, -1, - 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, - 370, 371, 372, -1, 374, 375, -1, 377, -1, 379, - 380, 381, 382, 383, -1, 385, 386, -1, -1, 389, - 390, 391, 392, 393, -1, 395, 396, 397, 398, 399, - 400, 401, -1, -1, 404, 405, 406, 407, 408, -1, - -1, 411, 412, 413, 414, 415, 416, 417, -1, 419, - -1, 421, 422, 423, 424, -1, -1, 427, -1, -1, - 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, - 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, - -1, -1, -1, 453, 454, 455, -1, 457, 458, 459, - 460, 461, 462, 463, 3, -1, -1, -1, -1, 8, - -1, -1, -1, -1, -1, -1, 15, 16, 17, 18, - 19, 20, 21, 22, 23, 24, 25, -1, 27, 28, - 29, -1, -1, -1, -1, -1, -1, -1, 37, 38, - -1, 40, 41, 42, -1, 44, 45, 46, 47, 48, - -1, 50, 51, -1, 53, 54, 55, 56, 57, -1, - -1, 60, 61, 62, 63, 64, -1, 66, 67, 68, - 69, 70, -1, -1, -1, 74, 75, 76, 77, 78, - -1, 80, 81, 82, -1, 84, 85, 86, 87, 88, - 89, -1, -1, 92, 93, 94, -1, -1, -1, -1, - -1, -1, -1, 102, 103, 104, 105, 106, 107, 108, - 109, 110, -1, 112, -1, 114, 115, 116, 117, 118, - 119, -1, 121, 122, 123, 124, -1, -1, 127, 128, - 129, 130, 131, -1, 133, 134, 135, -1, 137, 138, - 139, -1, 141, 142, 143, 144, 145, 146, 147, 148, - 149, -1, 151, -1, 153, 154, 155, 156, -1, 158, - -1, 160, -1, -1, -1, 164, 165, 166, 167, -1, - 169, 170, -1, 172, 173, -1, 175, 176, 177, 178, - 179, -1, 181, 182, 183, 184, -1, 186, 187, 188, - 189, 190, 191, -1, 193, -1, 195, 196, 197, 198, - 199, 200, 201, -1, 203, -1, 205, -1, -1, 208, - -1, 210, 211, 212, 213, 214, -1, -1, 217, 218, - -1, 220, -1, -1, 223, 224, 225, -1, -1, 228, - 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, - 239, 240, 241, 242, 243, 244, -1, 246, 247, 248, - 249, 250, -1, 252, 253, -1, 255, -1, 257, 258, - 259, 260, 261, 262, -1, 264, 265, -1, -1, 268, - 269, 270, -1, -1, 273, 274, -1, 276, -1, 278, - 279, 280, 281, 282, 283, 284, 285, 286, 287, -1, - 289, 290, 291, 292, 293, 294, 295, 296, -1, 298, - 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, - 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, - 319, 320, 321, 322, 323, 324, -1, 326, 327, -1, - 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, - 339, 340, 341, -1, 343, 344, 345, 346, 347, -1, - 349, 350, 351, 352, 353, -1, 355, 356, 357, 358, - -1, 360, 361, 362, 363, 364, 365, 366, 367, 368, - 369, 370, 371, 372, -1, 374, 375, -1, 377, -1, - 379, 380, 381, 382, 383, -1, 385, 386, -1, -1, - 389, 390, 391, 392, 393, -1, 395, 396, 397, 398, - 399, 400, 401, -1, -1, 404, 405, 406, 407, 408, - -1, -1, 411, 412, 413, 414, 415, 416, 417, -1, - 419, -1, 421, 422, 423, 424, -1, -1, 427, -1, - -1, 430, 431, 432, 433, 434, 435, 436, 437, 438, - 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, - 449, -1, -1, -1, 453, 454, 455, -1, 457, 458, - 459, 460, 461, 462, 463, 3, -1, -1, -1, -1, - 8, -1, -1, -1, -1, -1, -1, 15, 16, 17, - 18, 19, 20, 21, 22, 23, 24, 25, -1, 27, - 28, 29, -1, -1, -1, -1, -1, -1, -1, 37, - 38, -1, 40, 41, 42, -1, 44, 45, 46, 47, - 48, -1, 50, 51, -1, 53, 54, 55, 56, 57, - -1, -1, 60, 61, 62, 63, 64, -1, 66, 67, - 68, 69, 70, -1, -1, -1, 74, 75, 76, 77, - 78, -1, 80, 81, 82, -1, 84, 85, 86, 87, - 88, 89, -1, -1, 92, 93, 94, -1, -1, -1, - -1, -1, -1, -1, 102, 103, 104, 105, 106, 107, - 108, 109, 110, -1, 112, -1, 114, 115, 116, 117, - 118, 119, -1, 121, 122, 123, 124, -1, -1, 127, - 128, 129, 130, 131, -1, 133, 134, 135, -1, 137, - 138, 139, -1, 141, 142, 143, 144, 145, 146, 147, - 148, 149, -1, 151, -1, 153, 154, 155, 156, -1, - 158, -1, 160, -1, -1, -1, 164, 165, 166, 167, - -1, 169, 170, -1, 172, 173, -1, 175, 176, 177, - 178, 179, -1, 181, 182, 183, 184, -1, 186, 187, - 188, 189, 190, 191, -1, 193, -1, 195, 196, 197, - 198, 199, 200, 201, -1, 203, -1, 205, -1, -1, - 208, -1, 210, 211, 212, 213, 214, -1, -1, 217, - 218, -1, 220, -1, -1, 223, 224, 225, -1, -1, - 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, - 238, 239, 240, 241, 242, 243, 244, -1, 246, 247, - 248, 249, 250, -1, 252, 253, -1, 255, -1, 257, - 258, 259, 260, 261, 262, -1, 264, 265, -1, -1, - 268, 269, 270, -1, -1, 273, 274, -1, 276, -1, - 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, - -1, 289, 290, 291, 292, 293, 294, 295, 296, -1, - 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, - 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, - 318, 319, 320, 321, 322, 323, 324, -1, 326, 327, - -1, 329, 330, 331, 332, 333, 334, 335, 336, 337, - 338, 339, 340, 341, -1, 343, 344, 345, 346, 347, - -1, 349, 350, 351, 352, 353, -1, 355, 356, 357, - 358, -1, 360, 361, 362, 363, 364, 365, 366, 367, - 368, 369, 370, 371, 372, -1, 374, 375, -1, 377, - -1, 379, 380, 381, 382, 383, -1, 385, 386, -1, - -1, 389, 390, 391, 392, 393, -1, 395, 396, 397, - 398, 399, 400, 401, -1, -1, 404, 405, 406, 407, - 408, -1, -1, 411, 412, 413, 414, 415, 416, 417, - -1, 419, -1, 421, 422, 423, 424, -1, -1, 427, - -1, -1, 430, 431, 432, 433, 434, 435, 436, 437, - 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, - 448, 449, -1, -1, -1, 453, 454, 455, -1, 457, - 458, 459, 460, 461, 462, 463, 3, -1, -1, -1, - -1, 8, -1, -1, -1, -1, -1, -1, 15, 16, - 17, 18, 19, 20, 21, 22, 23, 24, 25, -1, - 27, 28, 29, -1, -1, -1, -1, -1, -1, -1, - 37, 38, -1, 40, 41, 42, -1, 44, 45, 46, - 47, 48, -1, 50, 51, -1, 53, 54, 55, 56, - 57, -1, -1, 60, 61, 62, 63, 64, -1, 66, - 67, 68, 69, 70, -1, -1, -1, 74, 75, 76, - 77, 78, -1, 80, 81, 82, -1, 84, 85, 86, - 87, 88, 89, -1, -1, 92, 93, 94, -1, -1, - -1, -1, -1, -1, -1, 102, 103, 104, 105, 106, - 107, 108, 109, 110, -1, 112, -1, 114, 115, 116, - 117, 118, 119, -1, 121, 122, 123, 124, -1, -1, - 127, 128, 129, 130, 131, -1, 133, 134, 135, -1, - 137, 138, 139, -1, 141, 142, 143, 144, 145, 146, - 147, 148, 149, -1, 151, -1, 153, 154, 155, 156, - -1, 158, -1, 160, -1, -1, -1, 164, 165, 166, - 167, -1, 169, 170, -1, 172, 173, -1, 175, 176, - 177, 178, 179, -1, 181, 182, 183, 184, -1, 186, - 187, 188, 189, 190, 191, -1, 193, -1, 195, 196, - 197, 198, 199, 200, 201, -1, 203, -1, 205, -1, - -1, 208, -1, 210, 211, 212, 213, 214, -1, -1, - 217, 218, -1, 220, -1, -1, 223, 224, 225, -1, - -1, 228, 229, 230, 231, 232, 233, 234, 235, 236, - 237, 238, 239, 240, 241, 242, 243, 244, -1, 246, - 247, 248, 249, 250, -1, 252, 253, -1, 255, -1, - 257, 258, 259, 260, 261, 262, -1, 264, 265, -1, - -1, 268, 269, 270, -1, -1, 273, 274, -1, 276, - -1, 278, 279, 280, 281, 282, 283, 284, 285, 286, - 287, -1, 289, 290, 291, 292, 293, 294, 295, 296, - -1, 298, 299, 300, 301, 302, 303, 304, 305, 306, - 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, - 317, 318, 319, 320, 321, 322, 323, 324, -1, 326, - 327, -1, 329, 330, 331, 332, 333, 334, 335, 336, - 337, 338, 339, 340, 341, -1, 343, 344, 345, 346, - 347, -1, 349, 350, 351, 352, 353, -1, 355, 356, - 357, 358, -1, 360, 361, 362, 363, 364, 365, 366, - 367, 368, 369, 370, 371, 372, -1, 374, 375, -1, - 377, -1, 379, 380, 381, 382, 383, -1, 385, 386, - -1, -1, 389, 390, 391, 392, 393, -1, 395, 396, - 397, 398, 399, 400, 401, -1, -1, 404, 405, 406, - 407, 408, -1, -1, 411, 412, 413, 414, 415, 416, - 417, -1, 419, -1, 421, 422, 423, 424, -1, -1, - 427, -1, -1, 430, 431, 432, 433, 434, 435, 436, - 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, - 447, 448, 449, 3, -1, 5, 453, 454, 455, -1, - 457, 458, 459, 460, 461, 462, 463, -1, 18, 19, - 20, 21, 22, 23, 24, 25, -1, 27, 28, 29, - -1, -1, -1, -1, -1, -1, -1, 37, 38, -1, - 40, 41, 42, -1, 44, 45, 46, 47, 48, -1, - 50, 51, -1, 53, 54, 55, 56, 57, -1, -1, - 60, 61, 62, 63, 64, -1, 66, 67, 68, 69, - 70, -1, -1, -1, 74, 75, 76, 77, 78, -1, - 80, 81, 82, -1, 84, 85, 86, 87, 88, 89, - -1, -1, 92, 93, 94, -1, -1, -1, -1, -1, - -1, -1, 102, 103, 104, 105, 106, 107, 108, 109, - 110, -1, 112, -1, 114, 115, 116, 117, 118, 119, - -1, 121, 122, 123, 124, -1, -1, 127, 128, 129, - 130, 131, -1, 133, 134, 135, -1, 137, 138, 139, - -1, 141, 142, 143, 144, 145, 146, 147, 148, 149, - -1, 151, -1, 153, 154, 155, 156, -1, 158, -1, - 160, -1, -1, -1, 164, 165, 166, 167, -1, 169, - 170, -1, 172, 173, -1, 175, 176, 177, 178, 179, - -1, 181, 182, 183, 184, -1, 186, 187, 188, 189, - 190, 191, -1, 193, -1, 195, 196, 197, 198, 199, - 200, 201, -1, 203, -1, 205, -1, -1, 208, -1, - 210, 211, 212, 213, 214, -1, -1, 217, 218, -1, - 220, -1, -1, 223, 224, 225, -1, -1, 228, 229, - 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, - 240, 241, 242, 243, 244, -1, 246, 247, 248, 249, - 250, -1, 252, 253, -1, 255, -1, 257, 258, 259, - 260, 261, 262, -1, 264, 265, -1, -1, 268, 269, - 270, -1, -1, 273, 274, -1, 276, -1, 278, 279, - 280, 281, 282, 283, 284, 285, 286, 287, -1, 289, - 290, 291, 292, 293, 294, 295, 296, -1, 298, 299, - 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, - 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, - 320, 321, 322, 323, 324, -1, 326, 327, -1, 329, - 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, - 340, 341, -1, 343, 344, 345, 346, 347, -1, 349, - 350, 351, 352, 353, -1, 355, 356, 357, 358, -1, - 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, - 370, 371, 372, -1, 374, 375, -1, 377, -1, 379, - 380, 381, 382, 383, -1, 385, 386, -1, -1, 389, - 390, 391, 392, 393, -1, 395, 396, 397, 398, 399, - 400, 401, -1, -1, 404, 405, 406, 407, 408, -1, - -1, 411, 412, 413, 414, 415, 416, 417, -1, 419, - -1, 421, 422, 423, 424, -1, -1, 427, -1, -1, - 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, - 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, - 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 463, -1, 18, 19, 20, 21, 22, - 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, - 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, - 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, - 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, - 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, - 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, - 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, - 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, + 371, -1, 373, 374, 375, 376, -1, 378, 379, 380, + 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, + 391, 392, -1, 394, 395, -1, 397, 398, 399, 400, + 401, 402, 403, -1, 405, 406, 407, -1, -1, 410, + 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, + 421, 422, 423, -1, 425, 426, 427, 428, 429, 430, + 431, -1, 433, 434, 435, 436, 437, 438, 439, -1, + 441, 442, 443, 444, 445, 446, -1, -1, 449, -1, + -1, 452, 453, 454, 455, 456, 457, 458, 459, 460, + 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, + 471, 3, -1, -1, -1, -1, -1, -1, -1, 480, + 481, -1, -1, -1, -1, -1, -1, -1, 489, -1, + 22, 23, 24, 25, 26, 27, 28, 29, -1, 31, + 32, 33, -1, -1, -1, -1, -1, -1, -1, 41, + 42, -1, 44, 45, 46, 47, 48, 49, 50, 51, + 52, 53, 54, 55, -1, 57, 58, 59, 60, 61, + 62, -1, 64, 65, 66, 67, 68, 69, -1, 71, + 72, 73, 74, 75, -1, 77, -1, 79, 80, 81, + 82, 83, 84, 85, 86, 87, -1, 89, 90, 91, + 92, 93, 94, -1, 96, 97, 98, 99, 100, 101, + 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, + 112, 113, 114, 115, -1, 117, -1, 119, 120, 121, + 122, 123, 124, -1, 126, 127, 128, 129, -1, -1, + 132, 133, 134, 135, 136, -1, 138, 139, 140, -1, + 142, 143, 144, -1, 146, 147, 148, 149, 150, 151, + 152, 153, 154, 155, -1, 157, -1, 159, 160, 161, + 162, -1, 164, -1, 166, 167, -1, 169, 170, 171, + 172, 173, -1, 175, 176, -1, 178, 179, 180, -1, + 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, + -1, 193, 194, 195, 196, 197, 198, 199, -1, 201, + 202, 203, 204, 205, 206, 207, 208, 209, -1, 211, + -1, 213, 214, 215, 216, 217, 218, 219, 220, 221, + 222, 223, -1, 225, 226, 227, 228, 229, -1, 231, + 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, + 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, + 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, + 262, 263, 264, -1, 266, 267, 268, 269, -1, 271, + 272, 273, 274, 275, 276, -1, 278, 279, -1, 281, + 282, 283, 284, -1, -1, 287, 288, 289, 290, 291, + 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, + 302, -1, 304, 305, 306, 307, 308, 309, 310, 311, + -1, 313, 314, 315, 316, 317, 318, 319, 320, 321, + 322, 323, 324, 325, 326, 327, -1, 329, 330, 331, + 332, 333, 334, 335, 336, 337, 338, 339, 340, -1, + 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, + 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, + 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, + 372, 373, 374, 375, 376, -1, 378, 379, 380, 381, + 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, + 392, -1, 394, 395, 396, 397, 398, 399, 400, 401, + 402, 403, -1, 405, 406, 407, -1, -1, 410, 411, + 412, 413, 414, -1, 416, 417, 418, 419, 420, 421, + 422, 423, -1, -1, 426, 427, 428, 429, 430, 431, + -1, 433, 434, 435, 436, 437, 438, 439, -1, 441, + 442, 443, 444, 445, 446, -1, -1, 449, -1, 451, + 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, + 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, + 3, -1, 474, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 489, -1, 22, + 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, + 33, -1, -1, -1, -1, -1, -1, -1, 41, 42, + -1, 44, 45, 46, 47, 48, 49, 50, 51, 52, + 53, 54, 55, -1, 57, 58, 59, 60, 61, 62, + -1, 64, 65, 66, 67, 68, 69, -1, 71, 72, + 73, 74, 75, -1, 77, -1, 79, 80, 81, 82, + 83, 84, 85, 86, 87, -1, 89, 90, 91, 92, + 93, 94, -1, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, - 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, - 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, - 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, - 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, - 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, - 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, - 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, - 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, - 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, - 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, + 113, 114, 115, -1, 117, -1, 119, 120, 121, 122, + 123, 124, -1, 126, 127, 128, 129, -1, -1, 132, + 133, 134, 135, 136, -1, 138, 139, 140, -1, 142, + 143, 144, -1, 146, 147, 148, 149, 150, 151, 152, + 153, 154, 155, -1, 157, -1, 159, 160, 161, 162, + -1, 164, -1, 166, 167, -1, 169, 170, 171, 172, + 173, -1, 175, 176, -1, 178, 179, 180, -1, 182, + 183, 184, 185, 186, 187, 188, 189, 190, 191, -1, + 193, 194, 195, 196, 197, 198, 199, -1, 201, 202, + 203, 204, 205, 206, 207, 208, 209, -1, 211, -1, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, - 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, + 223, -1, 225, 226, 227, 228, 229, -1, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, - 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, - 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, - 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, + 263, 264, -1, 266, 267, 268, 269, -1, 271, 272, + 273, 274, 275, 276, -1, 278, 279, -1, 281, 282, + 283, 284, -1, -1, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, - 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, + -1, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, - 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, - 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, + 323, 324, 325, 326, 327, -1, 329, 330, 331, 332, + 333, 334, 335, 336, 337, 338, 339, 340, -1, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, - 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, + 353, 354, 355, 356, 357, 358, 359, -1, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, - 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, + 373, 374, 375, 376, -1, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, - 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, - 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, - 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, - 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, - 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, - 443, 444, 445, 446, 447, 448, 449, 3, -1, -1, - -1, -1, -1, -1, -1, -1, 459, -1, -1, -1, - -1, -1, 18, 19, 20, 21, 22, 23, 24, 25, - -1, 27, 28, 29, -1, -1, -1, -1, -1, -1, - -1, 37, 38, -1, 40, 41, 42, -1, 44, 45, - 46, 47, 48, -1, 50, 51, -1, 53, 54, 55, - 56, 57, -1, -1, 60, 61, 62, 63, 64, -1, - 66, 67, 68, 69, 70, -1, -1, -1, 74, 75, - 76, 77, 78, -1, 80, 81, 82, -1, 84, 85, - 86, 87, 88, 89, -1, -1, 92, 93, 94, -1, - -1, -1, -1, -1, -1, -1, 102, 103, 104, 105, - 106, 107, 108, 109, 110, -1, 112, -1, 114, 115, - 116, 117, 118, 119, -1, 121, 122, 123, 124, -1, - -1, 127, 128, 129, 130, 131, -1, 133, 134, 135, - -1, 137, 138, 139, -1, 141, 142, 143, 144, 145, - 146, 147, 148, 149, -1, 151, -1, 153, 154, 155, - 156, -1, 158, -1, 160, -1, -1, -1, 164, 165, - 166, 167, -1, 169, 170, -1, 172, 173, -1, 175, - 176, 177, 178, 179, -1, 181, 182, 183, 184, -1, - 186, 187, 188, 189, 190, 191, -1, 193, -1, 195, - 196, 197, 198, 199, 200, 201, -1, 203, -1, 205, - -1, -1, 208, -1, 210, 211, 212, 213, 214, -1, - -1, 217, 218, -1, 220, -1, -1, 223, 224, 225, - -1, -1, 228, 229, 230, 231, 232, 233, 234, 235, - 236, 237, 238, 239, 240, 241, 242, 243, 244, -1, - 246, 247, 248, 249, 250, -1, 252, 253, -1, 255, - -1, 257, 258, 259, 260, 261, 262, -1, 264, 265, - -1, -1, 268, 269, 270, -1, -1, 273, 274, -1, - 276, -1, 278, 279, 280, 281, 282, 283, 284, 285, - 286, 287, -1, 289, 290, 291, 292, 293, 294, 295, - 296, -1, 298, 299, 300, 301, 302, 303, 304, 305, - 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, - 316, 317, 318, 319, 320, 321, 322, 323, 324, -1, - 326, 327, -1, 329, 330, 331, 332, 333, 334, 335, - 336, 337, 338, 339, 340, 341, -1, 343, 344, 345, - 346, 347, -1, 349, 350, 351, 352, 353, -1, 355, - 356, 357, 358, -1, 360, 361, 362, 363, 364, 365, - 366, 367, 368, 369, 370, 371, 372, -1, 374, 375, - -1, 377, -1, 379, 380, 381, 382, 383, -1, 385, - 386, -1, -1, 389, 390, 391, 392, 393, -1, 395, - 396, 397, 398, 399, 400, 401, -1, -1, 404, 405, - 406, 407, 408, -1, -1, 411, 412, 413, 414, 415, - 416, 417, -1, 419, -1, 421, 422, 423, 424, -1, - -1, 427, -1, -1, 430, 431, 432, 433, 434, 435, - 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, - 446, 447, 448, 449, 3, -1, -1, -1, -1, -1, - -1, -1, -1, 459, -1, -1, -1, -1, -1, 18, - 19, 20, 21, 22, 23, 24, 25, -1, 27, 28, - 29, -1, -1, -1, -1, -1, -1, -1, 37, 38, - -1, 40, 41, 42, -1, 44, 45, 46, 47, 48, - -1, 50, 51, -1, 53, 54, 55, 56, 57, -1, - -1, 60, 61, 62, 63, 64, -1, 66, 67, 68, - 69, 70, -1, -1, -1, 74, 75, 76, 77, 78, - -1, 80, 81, 82, -1, 84, 85, 86, 87, 88, - 89, -1, -1, 92, 93, 94, -1, -1, -1, -1, - -1, -1, -1, 102, 103, 104, 105, 106, 107, 108, - 109, 110, -1, 112, -1, 114, 115, 116, 117, 118, - 119, -1, 121, 122, 123, 124, -1, -1, 127, 128, - 129, 130, 131, -1, 133, 134, 135, -1, 137, 138, - 139, -1, 141, 142, 143, 144, 145, 146, 147, 148, - 149, -1, 151, -1, 153, 154, 155, 156, -1, 158, - -1, 160, -1, -1, -1, 164, 165, 166, 167, -1, - 169, 170, -1, 172, 173, -1, 175, 176, 177, 178, - 179, -1, 181, 182, 183, 184, -1, 186, 187, 188, - 189, 190, 191, -1, 193, -1, 195, 196, 197, 198, - 199, 200, 201, -1, 203, -1, 205, -1, -1, 208, - -1, 210, 211, 212, 213, 214, -1, -1, 217, 218, - -1, 220, -1, -1, 223, 224, 225, -1, -1, 228, - 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, - 239, 240, 241, 242, 243, 244, -1, 246, 247, 248, - 249, 250, -1, 252, 253, -1, 255, -1, 257, 258, - 259, 260, 261, 262, -1, 264, 265, -1, -1, 268, - 269, 270, -1, -1, 273, 274, -1, 276, -1, 278, - 279, 280, 281, 282, 283, 284, 285, 286, 287, -1, - 289, 290, 291, 292, 293, 294, 295, 296, -1, 298, - 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, - 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, - 319, 320, 321, 322, 323, 324, -1, 326, 327, -1, - 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, - 339, 340, 341, -1, 343, 344, 345, 346, 347, -1, - 349, 350, 351, 352, 353, -1, 355, 356, 357, 358, - -1, 360, 361, 362, 363, 364, 365, 366, 367, 368, - 369, 370, 371, 372, -1, 374, 375, -1, 377, -1, - 379, 380, 381, 382, 383, -1, 385, 386, -1, -1, - 389, 390, 391, 392, 393, -1, 395, 396, 397, 398, - 399, 400, 401, -1, -1, 404, 405, 406, 407, 408, - -1, -1, 411, 412, 413, 414, 415, 416, 417, -1, - 419, -1, 421, 422, 423, 424, -1, -1, 427, -1, - -1, 430, 431, 432, 433, 434, 435, 436, 437, 438, - 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, - 449, 3, -1, -1, -1, -1, -1, -1, -1, -1, - 459, -1, -1, -1, -1, -1, 18, 19, 20, 21, - 22, 23, 24, 25, -1, 27, 28, 29, -1, -1, - -1, -1, -1, -1, -1, 37, 38, -1, 40, 41, - 42, 43, 44, 45, 46, -1, 48, 49, 50, 51, - -1, 53, 54, 55, 56, 57, -1, -1, 60, 61, - 62, 63, 64, -1, 66, 67, 68, 69, -1, -1, - 72, -1, 74, 75, 76, 77, 78, 79, 80, 81, - 82, -1, 84, 85, 86, 87, 88, 89, -1, 91, - 92, 93, 94, -1, -1, -1, 98, -1, -1, -1, - 102, 103, 104, 105, 106, 107, 108, 109, 110, -1, - 112, -1, 114, 115, 116, 117, 118, 119, -1, 121, - 122, 123, 124, -1, -1, 127, 128, 129, 130, 131, - -1, 133, 134, 135, -1, 137, 138, 139, -1, 141, - 142, 143, 144, -1, 146, 147, 148, -1, -1, 151, - -1, 153, 154, 155, 156, -1, 158, -1, 160, 161, - -1, 163, 164, 165, 166, 167, -1, 169, -1, -1, - -1, 173, -1, 175, 176, 177, 178, 179, 180, 181, - 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, - -1, 193, 194, 195, 196, 197, 198, 199, 200, 201, - -1, 203, -1, 205, 206, 207, 208, 209, 210, 211, - 212, 213, 214, -1, -1, 217, -1, 219, 220, 221, - -1, 223, 224, 225, -1, -1, 228, 229, 230, 231, - 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, - 242, 243, 244, 245, 246, 247, 248, 249, -1, -1, - 252, 253, 254, 255, -1, -1, 258, 259, 260, 261, - 262, -1, 264, 265, -1, -1, 268, 269, 270, -1, - 272, 273, 274, 275, 276, 277, -1, 279, 280, 281, - 282, 283, 284, 285, 286, 287, -1, 289, 290, -1, - 292, -1, 294, 295, 296, -1, 298, 299, 300, 301, - 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, - -1, 313, 314, 315, 316, 317, 318, 319, 320, 321, - 322, 323, 324, -1, 326, 327, 328, 329, 330, 331, - -1, 333, 334, 335, 336, 337, 338, 339, 340, 341, - -1, 343, 344, 345, 346, 347, -1, 349, 350, 351, - 352, 353, 354, 355, 356, 357, 358, -1, 360, 361, - 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, - -1, -1, 374, 375, -1, 377, 378, 379, 380, 381, - 382, 383, -1, 385, 386, -1, -1, 389, 390, -1, - 392, -1, -1, 395, 396, 397, 398, 399, 400, 401, - -1, -1, 404, 405, 406, 407, 408, -1, -1, 411, - 412, 413, 414, 415, -1, 417, 418, 419, 420, 421, - 422, 423, 424, -1, -1, 427, -1, -1, 430, 431, - 432, 433, 434, 435, 3, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 447, 448, 449, -1, 18, - 19, 20, 21, 22, 23, 24, 25, 459, 27, 28, - 29, -1, -1, -1, -1, -1, -1, -1, 37, 38, - -1, 40, 41, 42, 43, 44, 45, 46, -1, 48, - 49, 50, 51, -1, 53, 54, 55, 56, 57, -1, - -1, 60, 61, 62, 63, 64, -1, 66, 67, 68, - 69, -1, -1, 72, -1, 74, 75, 76, 77, 78, - 79, 80, 81, 82, -1, 84, 85, 86, 87, 88, - 89, -1, 91, 92, 93, 94, -1, -1, -1, 98, - -1, -1, -1, 102, 103, 104, 105, 106, 107, 108, - 109, 110, -1, 112, -1, 114, 115, 116, 117, 118, - 119, -1, 121, 122, 123, 124, -1, -1, 127, 128, - 129, 130, 131, -1, 133, 134, 135, -1, 137, 138, - 139, -1, 141, 142, 143, 144, -1, 146, 147, 148, - -1, -1, 151, -1, 153, 154, 155, 156, -1, 158, - -1, 160, 161, -1, 163, 164, 165, 166, 167, -1, - 169, -1, -1, -1, 173, -1, 175, 176, 177, 178, - 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, - 189, 190, 191, -1, 193, 194, 195, 196, 197, 198, - 199, 200, 201, -1, 203, -1, 205, 206, 207, 208, - 209, 210, 211, 212, 213, 214, -1, -1, 217, -1, - 219, 220, 221, -1, 223, 224, 225, -1, -1, 228, - 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, - 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, - 249, -1, -1, 252, 253, 254, 255, -1, -1, 258, - 259, 260, 261, 262, -1, 264, 265, -1, -1, 268, - 269, 270, -1, 272, 273, 274, 275, 276, 277, -1, - 279, 280, 281, 282, 283, 284, 285, 286, 287, -1, - 289, 290, -1, 292, -1, 294, 295, 296, -1, 298, - 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, - 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, - 319, 320, 321, 322, 323, 324, -1, 326, 327, 328, - 329, 330, 331, -1, 333, 334, 335, 336, 337, 338, - 339, 340, 341, -1, 343, 344, 345, 346, 347, -1, - 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, - -1, 360, 361, 362, 363, 364, 365, 366, 367, 368, - 369, 370, 371, -1, -1, 374, 375, -1, 377, 378, - 379, 380, 381, 382, 383, -1, 385, 386, -1, -1, - 389, 390, -1, 392, -1, -1, 395, 396, 397, 398, - 399, 400, 401, -1, -1, 404, 405, 406, 407, 408, - -1, -1, 411, 412, 413, 414, 415, -1, 417, 418, - 419, 420, 421, 422, 423, 424, -1, -1, 427, -1, - -1, 430, 431, 432, 433, 434, 435, 3, 4, 5, - -1, -1, -1, 9, -1, -1, -1, -1, 447, 448, - 449, -1, 18, 19, 20, 21, 22, 23, 24, 25, - 459, 27, 28, 29, -1, -1, -1, -1, -1, -1, - -1, 37, 38, -1, 40, 41, 42, 43, 44, 45, - 46, 47, 48, 49, 50, 51, -1, 53, 54, 55, - 56, 57, -1, -1, 60, 61, 62, 63, 64, -1, - 66, 67, 68, 69, 70, -1, 72, -1, 74, 75, - 76, 77, 78, 79, 80, 81, 82, -1, 84, 85, - 86, 87, 88, 89, -1, 91, 92, 93, 94, -1, - -1, -1, 98, -1, -1, -1, 102, 103, 104, 105, - 106, 107, 108, 109, 110, -1, 112, -1, 114, 115, - 116, 117, 118, 119, -1, 121, 122, 123, 124, -1, - -1, 127, 128, 129, 130, 131, -1, 133, 134, 135, - -1, 137, 138, 139, -1, 141, 142, 143, 144, 145, - 146, 147, 148, 149, 150, 151, -1, 153, 154, 155, - 156, -1, 158, -1, 160, 161, -1, 163, 164, 165, - 166, 167, -1, 169, 170, -1, 172, 173, -1, 175, - 176, 177, 178, 179, 180, 181, 182, 183, 184, -1, + -1, 394, 395, -1, 397, 398, 399, 400, 401, 402, + 403, -1, 405, 406, 407, -1, -1, 410, 411, 412, + 413, 414, -1, 416, 417, 418, 419, 420, 421, 422, + 423, -1, -1, 426, 427, 428, 429, 430, 431, -1, + 433, 434, 435, 436, 437, 438, 439, -1, 441, 442, + 443, 444, 445, 446, -1, -1, 449, -1, -1, 452, + 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, + 463, 464, 465, 466, 467, 468, 469, 470, 471, 3, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 489, -1, 22, 23, + 24, 25, 26, 27, 28, 29, -1, 31, 32, 33, + -1, -1, -1, -1, -1, -1, -1, 41, 42, -1, + 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, + 54, 55, -1, 57, 58, 59, 60, 61, 62, -1, + 64, 65, 66, 67, 68, 69, -1, 71, 72, 73, + 74, 75, -1, 77, -1, 79, 80, 81, 82, 83, + 84, 85, 86, 87, -1, 89, 90, 91, 92, 93, + 94, -1, 96, 97, 98, 99, 100, 101, 102, 103, + 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, + 114, 115, -1, 117, -1, 119, 120, 121, 122, 123, + 124, -1, 126, 127, 128, 129, -1, -1, 132, 133, + 134, 135, 136, -1, 138, 139, 140, -1, 142, 143, + 144, -1, 146, 147, 148, 149, 150, 151, 152, 153, + 154, 155, -1, 157, -1, 159, 160, 161, 162, -1, + 164, -1, 166, 167, -1, 169, 170, 171, 172, 173, + -1, 175, 176, -1, 178, 179, 180, -1, 182, 183, + 184, 185, 186, 187, 188, 189, 190, 191, -1, 193, + 194, 195, 196, 197, 198, 199, -1, 201, 202, 203, + 204, 205, 206, 207, 208, 209, -1, 211, -1, 213, + 214, 215, 216, 217, 218, 219, 220, 221, 222, -1, + -1, 225, 226, 227, 228, 229, -1, 231, 232, 233, + 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, + 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, + 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, + 264, -1, 266, 267, 268, 269, -1, 271, 272, 273, + 274, 275, 276, -1, 278, 279, -1, -1, 282, 283, + 284, -1, -1, 287, 288, 289, 290, 291, 292, 293, + 294, 295, 296, 297, 298, 299, 300, 301, 302, -1, + 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, + 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, + 324, 325, 326, 327, -1, 329, 330, 331, 332, 333, + 334, 335, 336, 337, 338, 339, 340, -1, 342, 343, + 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, + 354, 355, 356, 357, 358, 359, -1, 361, 362, 363, + 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, + 374, 375, 376, -1, 378, 379, 380, 381, 382, 383, + 384, 385, 386, 387, 388, 389, 390, 391, 392, -1, + 394, 395, -1, 397, 398, 399, 400, 401, 402, 403, + -1, 405, 406, 407, -1, -1, 410, 411, 412, 413, + 414, -1, 416, 417, 418, 419, 420, 421, 422, 423, + -1, -1, 426, 427, 428, 429, 430, 431, -1, 433, + 434, 435, 436, 437, 438, 439, -1, 441, 442, 443, + 444, 445, 446, -1, -1, 449, -1, -1, 452, 453, + 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, + 464, 465, 466, 467, 468, 469, 470, 471, 3, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 489, -1, 22, 23, 24, + 25, 26, 27, 28, 29, -1, 31, 32, 33, -1, + -1, -1, -1, -1, -1, -1, 41, 42, -1, 44, + 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, + 55, -1, 57, 58, 59, 60, 61, 62, -1, 64, + 65, 66, 67, 68, 69, -1, 71, 72, 73, 74, + 75, -1, 77, -1, 79, 80, 81, 82, 83, 84, + 85, 86, 87, -1, 89, 90, 91, 92, 93, 94, + -1, 96, 97, 98, 99, 100, 101, 102, 103, 104, + 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, + 115, -1, 117, -1, 119, 120, 121, 122, 123, 124, + -1, 126, 127, 128, 129, -1, -1, 132, 133, 134, + 135, 136, -1, 138, 139, 140, -1, 142, 143, 144, + -1, 146, 147, 148, 149, 150, 151, 152, 153, 154, + 155, -1, 157, -1, 159, 160, 161, 162, -1, 164, + -1, 166, 167, -1, 169, 170, 171, 172, 173, -1, + 175, 176, -1, 178, 179, 180, -1, 182, 183, 184, + 185, 186, 187, 188, 189, 190, 191, -1, 193, 194, + 195, 196, 197, 198, 199, -1, 201, 202, 203, 204, + 205, 206, 207, 208, 209, -1, 211, -1, 213, 214, + 215, 216, 217, 218, 219, 220, 221, 222, -1, -1, + 225, 226, 227, 228, 229, -1, 231, 232, 233, 234, + 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, + 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, + 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, + -1, 266, 267, 268, 269, -1, 271, 272, 273, 274, + 275, 276, -1, 278, 279, -1, -1, 282, 283, 284, + -1, -1, 287, 288, 289, 290, 291, 292, 293, 294, + 295, 296, 297, 298, 299, 300, 301, 302, -1, 304, + 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, + 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, + 325, 326, 327, -1, 329, 330, 331, 332, 333, 334, + 335, 336, 337, 338, 339, 340, -1, 342, 343, 344, + 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, + 355, 356, 357, 358, 359, -1, 361, 362, 363, 364, + 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, + 375, 376, -1, 378, 379, 380, 381, 382, 383, 384, + 385, 386, 387, 388, 389, 390, 391, 392, -1, 394, + 395, -1, 397, 398, 399, 400, 401, 402, 403, -1, + 405, 406, 407, -1, -1, 410, 411, 412, 413, 414, + -1, 416, 417, 418, 419, 420, 421, 422, 423, -1, + -1, 426, 427, 428, 429, 430, 431, -1, 433, 434, + 435, 436, 437, 438, 439, -1, 441, 442, 443, 444, + 445, 446, -1, -1, 449, -1, -1, 452, 453, 454, + 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, + 465, 466, 467, 468, 469, 470, 471, 3, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 489, -1, 22, 23, 24, 25, + 26, 27, 28, 29, -1, 31, 32, 33, -1, -1, + -1, -1, -1, -1, -1, 41, 42, -1, 44, 45, + 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, + -1, 57, 58, 59, 60, 61, 62, -1, 64, 65, + 66, 67, 68, 69, -1, 71, 72, 73, 74, 75, + -1, 77, -1, 79, 80, 81, 82, 83, 84, 85, + 86, 87, -1, 89, 90, 91, 92, 93, 94, -1, + 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, + 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, + -1, 117, -1, 119, 120, 121, 122, 123, 124, -1, + 126, 127, 128, 129, -1, -1, 132, 133, 134, 135, + 136, -1, 138, 139, 140, -1, 142, 143, 144, -1, + 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, + -1, 157, -1, 159, 160, 161, 162, -1, 164, -1, + 166, 167, -1, 169, 170, 171, 172, 173, -1, 175, + 176, -1, 178, 179, 180, -1, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, -1, 193, 194, 195, - 196, 197, 198, 199, 200, 201, -1, 203, -1, 205, - 206, 207, 208, 209, 210, 211, 212, 213, 214, -1, - -1, 217, 218, 219, 220, 221, -1, 223, 224, 225, - -1, -1, 228, 229, 230, 231, 232, 233, 234, 235, + 196, 197, 198, 199, -1, 201, 202, 203, 204, 205, + 206, 207, 208, 209, -1, 211, -1, 213, 214, 215, + 216, 217, 218, 219, 220, 221, 222, -1, -1, 225, + 226, 227, 228, 229, -1, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, - 246, 247, 248, 249, 250, -1, 252, 253, 254, 255, - -1, 257, 258, 259, 260, 261, 262, -1, 264, 265, - 266, -1, 268, 269, 270, -1, -1, 273, 274, 275, - 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, - 286, 287, -1, 289, 290, 291, 292, 293, 294, 295, - 296, -1, 298, 299, 300, 301, 302, 303, 304, 305, + 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, + 256, 257, 258, 259, 260, 261, 262, 263, 264, -1, + 266, 267, 268, 269, -1, 271, 272, 273, 274, 275, + 276, -1, 278, 279, -1, -1, 282, 283, 284, -1, + -1, 287, 288, 289, 290, 291, 292, 293, 294, 295, + 296, 297, 298, 299, 300, 301, 302, -1, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, - 316, 317, 318, 319, 320, 321, 322, 323, 324, -1, - 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, - 336, 337, 338, 339, 340, 341, -1, 343, 344, 345, - 346, 347, -1, 349, 350, 351, 352, 353, 354, 355, - 356, 357, 358, -1, 360, 361, 362, 363, 364, 365, - 366, 367, 368, 369, 370, 371, 372, -1, 374, 375, - -1, 377, 378, 379, 380, 381, 382, 383, -1, 385, - 386, -1, -1, 389, 390, 391, 392, 393, 394, 395, - 396, 397, 398, 399, 400, 401, -1, -1, 404, 405, - 406, 407, 408, -1, -1, 411, 412, 413, 414, 415, - 416, 417, -1, 419, 420, 421, 422, 423, 424, -1, - -1, 427, -1, -1, 430, 431, 432, 433, 434, 435, - 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, - 446, 447, 448, 449, 3, -1, 5, -1, -1, -1, - 9, 457, 458, -1, -1, -1, -1, -1, -1, 18, - 19, 20, 21, 22, 23, 24, 25, -1, 27, 28, - 29, -1, -1, -1, -1, -1, -1, -1, 37, 38, - -1, 40, 41, 42, 43, 44, 45, 46, 47, 48, - 49, 50, 51, -1, 53, 54, 55, 56, 57, -1, - -1, 60, 61, 62, 63, 64, -1, 66, 67, 68, - 69, 70, -1, 72, -1, 74, 75, 76, 77, 78, - 79, 80, 81, 82, -1, 84, 85, 86, 87, 88, - 89, -1, 91, 92, 93, 94, -1, -1, -1, 98, - -1, -1, -1, 102, 103, 104, 105, 106, 107, 108, - 109, 110, 111, 112, -1, 114, 115, 116, 117, 118, - 119, -1, 121, 122, 123, 124, -1, -1, 127, 128, - 129, 130, 131, -1, 133, 134, 135, -1, 137, 138, - 139, -1, 141, 142, 143, 144, 145, 146, 147, 148, - 149, 150, 151, -1, 153, 154, 155, 156, -1, 158, - -1, 160, 161, -1, 163, 164, 165, 166, 167, -1, - 169, 170, -1, 172, 173, -1, 175, 176, 177, 178, - 179, 180, 181, 182, 183, 184, -1, 186, 187, 188, + 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, + 326, 327, -1, 329, 330, 331, 332, 333, 334, 335, + 336, 337, 338, 339, 340, -1, 342, 343, 344, 345, + 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, + 356, 357, 358, 359, -1, 361, 362, 363, 364, 365, + 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, + 376, -1, 378, 379, 380, 381, 382, 383, 384, 385, + 386, 387, 388, 389, 390, 391, 392, -1, 394, 395, + -1, 397, 398, 399, 400, 401, 402, 403, -1, 405, + 406, 407, -1, -1, 410, 411, 412, 413, 414, -1, + 416, 417, 418, 419, 420, 421, 422, 423, -1, -1, + 426, 427, 428, 429, 430, 431, -1, 433, 434, 435, + 436, 437, 438, 439, -1, 441, 442, 443, 444, 445, + 446, -1, -1, 449, -1, -1, 452, 453, 454, 455, + 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, + 466, 467, 468, 469, 470, 471, 3, -1, 5, 6, + -1, -1, -1, -1, 11, -1, -1, -1, -1, -1, + -1, -1, -1, 489, -1, 22, 23, 24, 25, 26, + 27, 28, 29, -1, 31, 32, 33, -1, -1, -1, + -1, -1, -1, -1, 41, 42, -1, 44, 45, 46, + 47, 48, 49, 50, 51, 52, 53, 54, 55, -1, + 57, 58, 59, 60, 61, 62, -1, -1, 65, 66, + 67, 68, 69, -1, 71, 72, 73, 74, 75, -1, + 77, -1, 79, 80, 81, 82, 83, 84, 85, 86, + 87, -1, 89, 90, 91, 92, 93, 94, -1, 96, + 97, 98, 99, -1, -1, -1, 103, -1, -1, -1, + 107, 108, 109, 110, 111, 112, 113, 114, 115, -1, + 117, -1, 119, 120, 121, 122, 123, 124, -1, 126, + 127, 128, 129, -1, -1, 132, 133, 134, 135, 136, + -1, 138, 139, 140, -1, 142, 143, 144, -1, 146, + 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, + 157, -1, 159, 160, 161, 162, -1, 164, -1, 166, + 167, -1, 169, 170, 171, 172, 173, -1, 175, 176, + -1, 178, 179, 180, -1, 182, 183, 184, 185, 186, + 187, 188, 189, 190, 191, -1, 193, 194, 195, 196, + 197, 198, 199, -1, 201, 202, 203, 204, 205, 206, + 207, 208, 209, -1, 211, -1, 213, 214, 215, 216, + 217, 218, 219, 220, 221, 222, -1, -1, 225, 226, + 227, 228, 229, -1, 231, 232, 233, -1, -1, 236, + 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, + 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, + 257, 258, 259, 260, 261, 262, 263, 264, -1, 266, + 267, 268, 269, -1, 271, 272, 273, 274, 275, 276, + -1, 278, 279, 280, -1, 282, 283, 284, -1, -1, + 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, + 297, 298, 299, 300, 301, 302, -1, 304, 305, 306, + 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, + 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, + 327, -1, 329, 330, 331, 332, 333, 334, 335, 336, + 337, 338, 339, 340, -1, 342, 343, 344, 345, 346, + 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, + 357, 358, 359, -1, 361, 362, 363, 364, 365, -1, + 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, + -1, 378, 379, 380, 381, 382, 383, 384, 385, 386, + 387, 388, 389, 390, 391, 392, -1, 394, 395, -1, + 397, 398, 399, 400, 401, 402, 403, -1, 405, 406, + 407, -1, -1, 410, 411, 412, 413, 414, 415, 416, + 417, 418, 419, 420, 421, 422, 423, -1, -1, 426, + 427, 428, 429, 430, -1, -1, 433, 434, 435, 436, + 437, 438, 439, -1, 441, 442, 443, 444, 445, 446, + -1, -1, 449, -1, -1, 452, 453, 454, 455, 456, + 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, + 467, 468, 469, 470, 471, 3, -1, -1, -1, -1, + -1, -1, -1, 480, 481, 482, -1, -1, -1, -1, + -1, -1, 489, -1, 22, 23, 24, 25, 26, 27, + 28, 29, -1, 31, 32, 33, 34, 35, -1, -1, + -1, -1, -1, 41, 42, -1, 44, 45, 46, 47, + 48, 49, 50, 51, 52, 53, 54, 55, -1, 57, + 58, 59, 60, 61, 62, -1, -1, 65, 66, 67, + 68, 69, -1, 71, 72, 73, 74, 75, -1, 77, + -1, 79, 80, 81, 82, 83, 84, 85, 86, 87, + -1, 89, 90, 91, 92, 93, 94, -1, 96, 97, + 98, 99, -1, -1, -1, 103, -1, -1, -1, 107, + 108, 109, 110, 111, 112, 113, 114, 115, -1, 117, + -1, 119, 120, 121, 122, 123, 124, -1, 126, 127, + 128, 129, -1, -1, 132, 133, 134, 135, 136, -1, + 138, 139, 140, -1, 142, 143, 144, -1, 146, 147, + 148, 149, 150, 151, 152, 153, 154, 155, -1, 157, + -1, 159, 160, 161, 162, -1, 164, -1, 166, 167, + -1, 169, 170, 171, 172, 173, -1, 175, 176, -1, + 178, 179, 180, -1, 182, 183, 184, 185, 186, 187, + 188, 189, 190, 191, -1, 193, 194, 195, 196, 197, + 198, 199, -1, 201, 202, 203, 204, 205, 206, 207, + 208, 209, -1, 211, -1, 213, 214, 215, 216, 217, + 218, 219, 220, 221, 222, -1, -1, 225, 226, 227, + 228, 229, -1, 231, 232, 233, -1, -1, 236, 237, + 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, + 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, + 258, 259, 260, 261, 262, 263, 264, -1, 266, 267, + 268, 269, -1, 271, 272, 273, 274, 275, 276, -1, + 278, 279, -1, -1, 282, 283, 284, -1, -1, 287, + 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, + 298, 299, 300, 301, 302, -1, 304, 305, 306, 307, + 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, + 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, + -1, 329, 330, 331, 332, 333, 334, 335, 336, 337, + 338, 339, 340, -1, 342, 343, 344, 345, 346, 347, + 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, + 358, 359, 360, 361, 362, 363, 364, 365, -1, 367, + 368, 369, 370, 371, 372, 373, 374, 375, 376, -1, + 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, + 388, 389, 390, 391, 392, -1, 394, 395, 396, 397, + 398, 399, 400, 401, 402, 403, -1, 405, 406, 407, + -1, -1, 410, 411, 412, 413, 414, -1, 416, 417, + 418, 419, 420, 421, 422, 423, -1, -1, 426, 427, + 428, 429, 430, -1, -1, 433, 434, 435, 436, 437, + 438, 439, -1, 441, 442, 443, 444, 445, 446, -1, + -1, 449, -1, 451, 452, 453, 454, 455, 456, 457, + 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, + 468, 469, 470, 471, 3, -1, 474, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 489, -1, 22, 23, 24, 25, 26, 27, 28, + 29, -1, 31, 32, 33, -1, -1, -1, -1, -1, + -1, -1, 41, 42, -1, 44, 45, 46, 47, 48, + 49, 50, 51, 52, 53, 54, 55, -1, 57, 58, + 59, 60, 61, 62, -1, -1, 65, 66, 67, 68, + 69, -1, 71, 72, 73, 74, 75, -1, 77, -1, + 79, 80, 81, 82, 83, 84, 85, 86, 87, -1, + 89, 90, 91, 92, 93, 94, -1, 96, 97, 98, + 99, -1, -1, -1, 103, -1, -1, -1, 107, 108, + 109, 110, 111, 112, 113, 114, 115, -1, 117, -1, + 119, 120, 121, 122, 123, 124, -1, 126, 127, 128, + 129, -1, -1, 132, 133, 134, 135, 136, -1, 138, + 139, 140, -1, 142, 143, 144, -1, 146, 147, 148, + 149, 150, 151, 152, 153, 154, 155, -1, 157, -1, + 159, 160, 161, 162, -1, 164, -1, 166, 167, -1, + 169, 170, 171, 172, 173, -1, 175, 176, -1, 178, + 179, 180, -1, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, -1, 193, 194, 195, 196, 197, 198, - 199, 200, 201, -1, 203, -1, 205, 206, 207, 208, - 209, 210, 211, 212, 213, 214, -1, -1, 217, 218, - 219, 220, 221, -1, 223, 224, 225, -1, -1, 228, - 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, + 199, -1, 201, 202, 203, 204, 205, 206, 207, 208, + 209, -1, 211, -1, 213, 214, 215, 216, 217, 218, + 219, 220, 221, 222, -1, -1, 225, 226, 227, 228, + 229, -1, 231, 232, 233, -1, -1, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, - 249, 250, -1, 252, 253, 254, 255, -1, 257, 258, - 259, 260, 261, 262, -1, 264, 265, 266, -1, 268, - 269, 270, -1, -1, 273, 274, 275, 276, 277, 278, - 279, 280, 281, 282, 283, 284, 285, 286, 287, -1, - 289, 290, 291, 292, 293, 294, 295, 296, -1, 298, - 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, + 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, + 259, 260, 261, 262, 263, 264, -1, 266, 267, 268, + 269, -1, 271, 272, 273, 274, 275, 276, -1, 278, + 279, -1, -1, 282, 283, 284, -1, -1, 287, 288, + 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, + 299, 300, 301, 302, -1, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, - 319, 320, 321, 322, 323, 324, -1, 326, 327, 328, + 319, 320, 321, 322, 323, 324, 325, 326, 327, -1, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, - 339, 340, 341, -1, 343, 344, 345, 346, 347, -1, + 339, 340, -1, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, - -1, 360, 361, 362, 363, 364, 365, 366, 367, 368, - 369, 370, 371, 372, -1, 374, 375, -1, 377, 378, - 379, 380, 381, 382, 383, -1, 385, 386, -1, -1, - 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, - 399, 400, 401, -1, -1, 404, 405, 406, 407, 408, - -1, -1, 411, 412, 413, 414, 415, 416, 417, -1, - 419, 420, 421, 422, 423, 424, -1, -1, 427, -1, - -1, 430, 431, 432, 433, 434, 435, 436, 437, 438, - 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, - 449, 3, -1, -1, -1, -1, -1, 9, 457, 458, - -1, -1, -1, -1, -1, -1, 18, 19, 20, 21, - 22, 23, 24, 25, 26, 27, 28, 29, -1, -1, - -1, -1, -1, -1, -1, 37, 38, -1, 40, 41, - 42, -1, 44, 45, 46, 47, 48, -1, 50, 51, - -1, 53, 54, 55, 56, 57, -1, -1, 60, 61, - 62, 63, 64, -1, 66, 67, 68, 69, 70, -1, - -1, -1, 74, 75, 76, 77, 78, -1, 80, 81, - 82, -1, 84, 85, 86, 87, 88, 89, -1, -1, - 92, 93, 94, -1, -1, -1, -1, -1, -1, -1, - 102, 103, 104, 105, 106, 107, 108, 109, 110, -1, - 112, -1, 114, 115, 116, 117, 118, 119, -1, 121, - 122, 123, 124, -1, -1, 127, 128, 129, 130, 131, - -1, 133, 134, 135, -1, 137, 138, 139, -1, 141, - 142, 143, 144, 145, 146, 147, 148, 149, -1, 151, - -1, 153, 154, 155, 156, -1, 158, -1, 160, -1, - 162, -1, 164, 165, 166, 167, -1, 169, 170, -1, - 172, 173, -1, 175, 176, 177, 178, 179, -1, 181, - 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, - -1, 193, -1, 195, 196, 197, 198, 199, 200, 201, - -1, 203, -1, 205, -1, -1, 208, -1, 210, 211, - 212, 213, 214, -1, -1, 217, 218, -1, 220, -1, - -1, 223, 224, 225, -1, -1, 228, 229, 230, 231, - 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, - 242, 243, 244, -1, 246, 247, 248, 249, 250, -1, - 252, 253, -1, 255, -1, 257, 258, 259, 260, 261, - 262, -1, 264, 265, -1, -1, 268, 269, 270, -1, - -1, 273, 274, -1, 276, -1, 278, 279, 280, 281, - 282, 283, 284, 285, 286, 287, -1, 289, 290, 291, - 292, 293, 294, 295, 296, -1, 298, 299, 300, 301, - 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, + 359, -1, 361, 362, 363, 364, 365, -1, 367, 368, + 369, 370, 371, 372, 373, 374, 375, 376, -1, 378, + 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, + 389, 390, 391, 392, -1, 394, 395, -1, 397, 398, + 399, 400, 401, 402, 403, -1, 405, 406, 407, -1, + -1, 410, 411, 412, 413, 414, -1, 416, 417, 418, + 419, 420, 421, 422, 423, -1, -1, 426, 427, 428, + 429, 430, -1, -1, 433, 434, 435, 436, 437, 438, + 439, -1, 441, 442, 443, 444, 445, 446, -1, -1, + 449, -1, -1, 452, 453, 454, 455, 456, 457, 458, + 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, + 469, 470, 471, 3, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 489, -1, 22, 23, 24, 25, 26, 27, 28, 29, + -1, 31, 32, 33, -1, -1, -1, -1, -1, -1, + -1, 41, 42, -1, 44, 45, 46, -1, 48, 49, + 50, 51, 52, -1, 54, 55, -1, 57, 58, 59, + 60, 61, 62, -1, -1, 65, 66, 67, 68, 69, + -1, 71, 72, 73, 74, 75, -1, -1, -1, 79, + 80, 81, 82, 83, -1, 85, 86, 87, -1, 89, + 90, 91, 92, 93, 94, -1, -1, 97, 98, 99, + -1, -1, -1, -1, -1, -1, -1, 107, 108, 109, + 110, 111, 112, 113, 114, 115, -1, 117, -1, 119, + 120, 121, 122, 123, 124, -1, 126, 127, 128, 129, + -1, -1, 132, 133, 134, 135, 136, -1, 138, 139, + 140, -1, 142, 143, 144, -1, 146, 147, 148, 149, + 150, 151, 152, 153, 154, 155, -1, 157, -1, 159, + 160, 161, 162, -1, 164, -1, 166, -1, -1, -1, + 170, 171, 172, 173, -1, 175, 176, -1, 178, 179, + 180, -1, 182, 183, 184, 185, 186, -1, 188, 189, + 190, 191, -1, 193, 194, 195, 196, 197, 198, 199, + -1, 201, -1, 203, 204, 205, 206, 207, 208, 209, + -1, 211, -1, 213, -1, -1, 216, -1, 218, 219, + 220, 221, 222, -1, -1, 225, 226, -1, 228, -1, + -1, 231, 232, 233, -1, -1, 236, 237, 238, 239, + 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, + 250, 251, 252, -1, 254, 255, 256, 257, 258, 259, + 260, 261, 262, 263, 264, -1, 266, 267, -1, 269, + -1, 271, 272, 273, 274, 275, 276, -1, 278, 279, + -1, -1, 282, 283, 284, -1, -1, 287, 288, 289, + -1, 291, -1, 293, 294, 295, 296, 297, 298, 299, + 300, 301, 302, -1, 304, 305, 306, 307, 308, 309, + 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, + 320, 321, 322, 323, 324, 325, 326, 327, -1, 329, + 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, + 340, -1, 342, 343, -1, 345, 346, 347, 348, 349, + 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, + 360, 361, 362, 363, 364, 365, -1, 367, 368, 369, + 370, 371, -1, 373, 374, 375, 376, -1, 378, 379, + 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, + 390, 391, 392, -1, 394, 395, 396, 397, -1, 399, + 400, 401, 402, 403, -1, 405, 406, 407, -1, -1, + 410, 411, 412, 413, 414, -1, 416, 417, 418, 419, + 420, 421, 422, 423, -1, -1, 426, 427, 428, 429, + 430, -1, -1, 433, 434, 435, 436, 437, 438, 439, + -1, 441, -1, 443, 444, 445, 446, -1, -1, 449, + -1, 451, 452, 453, 454, 455, 456, 457, 458, 459, + 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, + 470, 471, 3, -1, 474, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 489, + -1, 22, 23, 24, 25, 26, 27, 28, 29, -1, + 31, 32, 33, -1, -1, -1, -1, -1, -1, -1, + 41, 42, -1, 44, 45, 46, -1, 48, 49, 50, + 51, 52, -1, 54, 55, -1, 57, 58, 59, 60, + 61, 62, -1, -1, 65, 66, 67, 68, 69, -1, + 71, 72, 73, 74, 75, -1, -1, -1, 79, 80, + 81, 82, 83, -1, 85, 86, 87, -1, 89, 90, + 91, 92, 93, 94, -1, -1, 97, 98, 99, -1, + -1, -1, -1, -1, -1, -1, 107, 108, 109, 110, + 111, 112, 113, 114, 115, -1, 117, -1, 119, 120, + 121, 122, 123, 124, -1, 126, 127, 128, 129, -1, + -1, 132, 133, 134, 135, 136, -1, 138, 139, 140, + -1, 142, 143, 144, -1, 146, 147, 148, 149, 150, + 151, 152, 153, 154, 155, -1, 157, -1, 159, 160, + 161, 162, -1, 164, -1, 166, -1, -1, -1, 170, + 171, 172, 173, -1, 175, 176, -1, 178, 179, 180, + -1, 182, 183, 184, 185, 186, -1, 188, 189, 190, + 191, -1, 193, 194, 195, 196, 197, 198, 199, -1, + 201, -1, 203, 204, 205, 206, 207, 208, 209, -1, + 211, -1, 213, -1, -1, 216, -1, 218, 219, 220, + 221, 222, -1, -1, 225, 226, -1, 228, -1, -1, + 231, 232, 233, -1, -1, 236, 237, 238, 239, 240, + 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, + 251, 252, -1, 254, 255, 256, 257, 258, 259, 260, + 261, 262, 263, 264, -1, 266, 267, -1, 269, -1, + 271, 272, 273, 274, 275, 276, -1, 278, 279, -1, + -1, 282, 283, 284, -1, -1, 287, 288, 289, -1, + 291, -1, 293, 294, 295, 296, 297, 298, 299, 300, + 301, 302, -1, 304, 305, 306, 307, 308, 309, 310, + 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, + 321, 322, 323, 324, 325, 326, 327, -1, 329, 330, + 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, + -1, 342, 343, -1, 345, 346, 347, 348, 349, 350, + 351, 352, 353, 354, 355, 356, 357, 358, 359, -1, + 361, 362, 363, 364, 365, -1, 367, 368, 369, 370, + 371, -1, 373, 374, 375, 376, -1, 378, 379, 380, + 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, + 391, 392, -1, 394, 395, -1, 397, -1, 399, 400, + 401, 402, 403, -1, 405, 406, 407, -1, -1, 410, + 411, 412, 413, 414, -1, 416, 417, 418, 419, 420, + 421, 422, 423, -1, -1, 426, 427, 428, 429, 430, + -1, -1, 433, 434, 435, 436, 437, 438, 439, -1, + 441, -1, 443, 444, 445, 446, -1, -1, 449, -1, + -1, 452, 453, 454, 455, 456, 457, 458, 459, 460, + 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, + 471, 3, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 489, -1, + 22, 23, 24, 25, 26, 27, 28, 29, -1, 31, + 32, 33, -1, -1, -1, -1, -1, -1, -1, 41, + 42, -1, 44, 45, 46, -1, 48, 49, 50, 51, + 52, -1, 54, 55, -1, 57, 58, 59, 60, 61, + 62, -1, -1, 65, 66, 67, 68, 69, -1, 71, + 72, 73, 74, 75, -1, -1, -1, 79, 80, 81, + 82, 83, -1, 85, 86, 87, -1, 89, 90, 91, + 92, 93, 94, -1, -1, 97, 98, 99, -1, -1, + -1, -1, -1, -1, -1, 107, 108, 109, 110, 111, + 112, 113, 114, 115, -1, 117, -1, 119, 120, 121, + 122, 123, 124, -1, 126, 127, 128, 129, -1, -1, + 132, 133, 134, 135, 136, -1, 138, 139, 140, -1, + 142, 143, 144, -1, 146, 147, 148, 149, 150, 151, + 152, 153, 154, 155, -1, 157, -1, 159, 160, 161, + 162, -1, 164, -1, 166, -1, -1, -1, 170, 171, + 172, 173, -1, 175, 176, -1, 178, 179, 180, -1, + 182, 183, 184, 185, 186, -1, 188, 189, 190, 191, + -1, 193, 194, 195, 196, 197, 198, 199, -1, 201, + -1, 203, 204, 205, 206, 207, 208, 209, -1, 211, + -1, 213, -1, -1, 216, -1, 218, 219, 220, 221, + 222, -1, -1, 225, 226, -1, 228, -1, -1, 231, + 232, 233, -1, -1, 236, 237, 238, 239, 240, 241, + 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, + 252, -1, 254, 255, 256, 257, 258, 259, 260, 261, + 262, 263, 264, -1, 266, 267, -1, 269, -1, 271, + 272, 273, 274, 275, 276, -1, 278, 279, -1, -1, + 282, 283, 284, -1, -1, 287, 288, 289, -1, 291, + -1, 293, 294, 295, 296, 297, 298, 299, 300, 301, + 302, -1, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, 321, - 322, 323, 324, -1, 326, 327, -1, 329, 330, 331, - 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, - -1, 343, 344, 345, 346, 347, -1, 349, 350, 351, - 352, 353, -1, 355, 356, 357, 358, -1, 360, 361, - 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, - 372, -1, 374, 375, -1, 377, -1, 379, 380, 381, - 382, 383, -1, 385, 386, -1, -1, 389, 390, 391, - 392, 393, -1, 395, 396, 397, 398, 399, 400, 401, - -1, -1, 404, 405, 406, 407, 408, -1, -1, 411, - 412, 413, 414, 415, 416, 417, -1, 419, -1, 421, - 422, 423, 424, -1, -1, 427, -1, -1, 430, 431, - 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, - 442, 443, 444, 445, 446, 447, 448, 449, 3, 4, - 5, -1, -1, -1, 9, 457, 458, -1, -1, -1, - -1, -1, -1, 18, 19, 20, 21, 22, 23, 24, + 322, 323, 324, 325, 326, 327, -1, 329, 330, 331, + 332, 333, 334, 335, 336, 337, 338, 339, 340, -1, + 342, 343, -1, 345, 346, 347, 348, 349, 350, 351, + 352, 353, 354, 355, 356, 357, 358, 359, -1, 361, + 362, 363, 364, 365, -1, 367, 368, 369, 370, 371, + -1, 373, 374, 375, 376, -1, 378, 379, 380, 381, + 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, + 392, -1, 394, 395, -1, 397, -1, 399, 400, 401, + 402, 403, -1, 405, 406, 407, -1, -1, 410, 411, + 412, 413, 414, -1, 416, 417, 418, 419, 420, 421, + 422, 423, -1, -1, 426, 427, 428, 429, 430, -1, + -1, 433, 434, 435, 436, 437, 438, 439, -1, 441, + -1, 443, 444, 445, 446, -1, -1, 449, -1, -1, + 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, + 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, + 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 489, -1, 22, + 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, + 33, -1, -1, -1, -1, -1, -1, -1, 41, 42, + -1, 44, 45, 46, -1, 48, 49, 50, 51, 52, + -1, 54, 55, -1, 57, 58, 59, 60, 61, 62, + -1, -1, 65, 66, 67, 68, 69, -1, 71, 72, + 73, 74, 75, -1, -1, -1, 79, 80, 81, 82, + 83, -1, 85, 86, 87, -1, 89, 90, 91, 92, + 93, 94, -1, -1, 97, 98, 99, -1, -1, -1, + -1, -1, -1, -1, 107, 108, 109, 110, 111, 112, + 113, 114, 115, -1, 117, -1, 119, 120, 121, 122, + 123, 124, -1, 126, 127, 128, 129, -1, -1, 132, + 133, 134, 135, 136, -1, 138, 139, 140, -1, 142, + 143, 144, -1, 146, 147, 148, 149, 150, 151, 152, + 153, 154, 155, -1, 157, -1, 159, 160, 161, 162, + -1, 164, -1, 166, -1, -1, -1, 170, 171, 172, + 173, -1, 175, 176, -1, 178, 179, 180, -1, 182, + 183, 184, 185, 186, -1, 188, 189, 190, 191, -1, + 193, 194, 195, 196, 197, 198, 199, -1, 201, -1, + 203, 204, 205, 206, 207, 208, 209, -1, 211, -1, + 213, -1, -1, 216, -1, 218, 219, 220, 221, 222, + -1, -1, 225, 226, -1, 228, -1, -1, 231, 232, + 233, -1, -1, 236, 237, 238, 239, 240, 241, 242, + 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, + -1, 254, 255, 256, 257, 258, 259, 260, 261, 262, + 263, 264, -1, 266, 267, -1, 269, -1, 271, 272, + 273, 274, 275, 276, -1, 278, 279, -1, -1, 282, + 283, 284, -1, -1, 287, 288, 289, -1, 291, -1, + 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, + -1, 304, 305, 306, 307, 308, 309, 310, 311, -1, + 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, + 323, 324, 325, 326, 327, -1, 329, 330, 331, 332, + 333, 334, 335, 336, 337, 338, 339, 340, -1, 342, + 343, -1, 345, 346, 347, 348, 349, 350, 351, 352, + 353, 354, 355, 356, 357, 358, 359, -1, 361, 362, + 363, 364, 365, -1, 367, 368, 369, 370, 371, -1, + 373, 374, 375, 376, -1, 378, 379, 380, 381, 382, + 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, + -1, 394, 395, -1, 397, -1, 399, 400, 401, 402, + 403, -1, 405, 406, 407, -1, -1, 410, 411, 412, + 413, 414, -1, 416, 417, 418, 419, 420, 421, 422, + 423, -1, -1, 426, 427, 428, 429, 430, -1, -1, + 433, 434, 435, 436, 437, 438, 439, -1, 441, -1, + 443, 444, 445, 446, -1, -1, 449, -1, -1, 452, + 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, + 463, 464, 465, 466, 467, 468, 469, 470, 471, 3, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 489, -1, 22, 23, + 24, 25, 26, 27, 28, 29, -1, 31, 32, 33, + -1, -1, -1, -1, -1, -1, -1, 41, 42, -1, + 44, 45, 46, -1, 48, 49, 50, 51, 52, -1, + 54, 55, -1, 57, 58, 59, 60, 61, 62, -1, + -1, 65, 66, 67, 68, 69, -1, 71, 72, 73, + 74, 75, -1, -1, -1, 79, 80, 81, 82, 83, + -1, 85, 86, 87, -1, 89, 90, 91, 92, 93, + 94, -1, -1, 97, 98, 99, -1, -1, -1, -1, + -1, -1, -1, 107, 108, 109, 110, 111, 112, 113, + 114, 115, -1, 117, -1, 119, 120, 121, 122, 123, + 124, -1, 126, 127, 128, 129, -1, -1, 132, 133, + 134, 135, 136, -1, 138, 139, 140, -1, 142, 143, + 144, -1, 146, 147, 148, 149, 150, 151, 152, 153, + 154, 155, -1, 157, -1, 159, 160, 161, 162, -1, + 164, -1, 166, -1, -1, -1, 170, 171, 172, 173, + -1, 175, 176, -1, 178, 179, 180, -1, 182, 183, + 184, 185, 186, -1, 188, 189, 190, 191, -1, 193, + 194, 195, 196, 197, 198, 199, -1, 201, -1, 203, + 204, 205, 206, 207, 208, 209, -1, 211, -1, 213, + -1, -1, 216, -1, 218, 219, 220, 221, 222, -1, + -1, 225, 226, -1, 228, -1, -1, 231, 232, 233, + -1, -1, 236, 237, 238, 239, 240, 241, 242, 243, + 244, 245, 246, 247, 248, 249, 250, 251, 252, -1, + 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, + 264, -1, 266, 267, -1, 269, -1, 271, 272, 273, + 274, 275, 276, -1, 278, 279, -1, -1, 282, 283, + 284, -1, -1, 287, 288, 289, -1, 291, -1, 293, + 294, 295, 296, 297, 298, 299, 300, 301, 302, -1, + 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, + 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, + 324, 325, 326, 327, -1, 329, 330, 331, 332, 333, + 334, 335, 336, 337, 338, 339, 340, -1, 342, 343, + -1, 345, 346, 347, 348, 349, 350, 351, 352, 353, + 354, 355, 356, 357, 358, 359, -1, 361, 362, 363, + 364, 365, -1, 367, 368, 369, 370, 371, -1, 373, + 374, 375, 376, -1, 378, 379, 380, 381, 382, 383, + 384, 385, 386, 387, 388, 389, 390, 391, 392, -1, + 394, 395, -1, 397, -1, 399, 400, 401, 402, 403, + -1, 405, 406, 407, -1, -1, 410, 411, 412, 413, + 414, -1, 416, 417, 418, 419, 420, 421, 422, 423, + -1, -1, 426, 427, 428, 429, 430, -1, -1, 433, + 434, 435, 436, 437, 438, 439, -1, 441, -1, 443, + 444, 445, 446, -1, -1, 449, -1, -1, 452, 453, + 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, + 464, 465, 466, 467, 468, 469, 470, 471, 3, -1, + 5, 6, -1, -1, -1, 10, 11, -1, -1, -1, + -1, -1, 17, 18, 19, 489, -1, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, - 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, + 45, 46, 47, 48, 49, 50, -1, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, - 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, + -1, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, - 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, - 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, + 145, 146, 147, 148, 149, -1, 151, 152, 153, 154, + -1, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, - 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, + 175, -1, 177, -1, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, - 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, + 195, 196, 197, 198, 199, 200, 201, 202, -1, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, - 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, + 225, -1, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, - 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, - 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, + 255, 256, 257, 258, 259, 260, 261, 262, -1, 264, + 265, 266, 267, 268, 269, 270, -1, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, - 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, + 285, 286, 287, 288, -1, 290, 291, 292, -1, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, - 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, + 305, -1, 307, -1, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, - 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, + 345, 346, 347, 348, 349, -1, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, - 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, + 385, 386, 387, 388, 389, 390, -1, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, - 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, + 405, 406, 407, 408, 409, 410, 411, -1, 413, -1, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, - 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, - 445, 446, 447, 448, 449, 3, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, - 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, - 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, - 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, - 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, - 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, - 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, - 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, - 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, - 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, - 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, - 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, - 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, + 435, 436, 437, -1, 439, 440, 441, 442, 443, 444, + 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, + 455, 456, 457, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 469, 470, 471, -1, -1, -1, + 475, 476, 477, 478, -1, 480, 481, 482, 483, 484, + 485, 3, -1, 5, 6, -1, -1, -1, 10, 11, + -1, -1, -1, -1, -1, 17, 18, 19, -1, -1, + 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, + 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, + 42, 43, 44, 45, 46, 47, 48, 49, 50, -1, + 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, + 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, + 72, 73, 74, -1, 76, 77, 78, 79, 80, 81, + 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, + 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, + 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, + 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, + 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, + 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, + 142, 143, 144, 145, 146, 147, 148, 149, -1, 151, + 152, 153, 154, -1, 156, 157, 158, 159, 160, 161, + 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, + 172, 173, 174, 175, -1, 177, -1, 179, 180, 181, + 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, + 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, + 202, -1, 204, 205, 206, 207, 208, 209, 210, 211, + 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, + 222, 223, 224, 225, -1, 227, 228, 229, 230, 231, + 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, + 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, + 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, + 262, -1, 264, 265, 266, 267, 268, 269, 270, -1, + 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, + 282, 283, 284, 285, 286, 287, 288, -1, 290, 291, + 292, -1, 294, 295, 296, 297, 298, 299, 300, 301, + 302, 303, 304, 305, -1, 307, -1, 309, 310, 311, + 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, + 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, + 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, + 342, 343, 344, 345, 346, 347, 348, 349, -1, 351, + 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, + 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, + 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, + 382, 383, 384, 385, 386, 387, 388, 389, 390, -1, + 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, + 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, + -1, 413, -1, 415, 416, 417, 418, 419, 420, 421, + 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, + 432, 433, 434, 435, 436, 437, -1, 439, 440, 441, + 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, + 452, 453, 454, 455, 456, 457, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 469, 470, 471, + 3, -1, -1, 475, 476, 477, 478, 10, 480, 481, + 482, 483, 484, 485, 17, 18, 19, -1, -1, 22, + 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, + 33, -1, -1, -1, -1, -1, -1, -1, 41, 42, + -1, 44, 45, 46, -1, 48, 49, 50, 51, 52, + -1, 54, 55, -1, 57, 58, 59, 60, 61, 62, + -1, -1, 65, 66, 67, 68, 69, -1, 71, 72, + 73, 74, 75, -1, -1, -1, 79, 80, 81, 82, + 83, -1, 85, 86, 87, -1, 89, 90, 91, 92, + 93, 94, -1, -1, 97, 98, 99, -1, -1, -1, + -1, -1, -1, -1, 107, 108, 109, 110, 111, 112, + 113, 114, 115, -1, 117, -1, 119, 120, 121, 122, + 123, 124, -1, 126, 127, 128, 129, -1, -1, 132, + 133, 134, 135, 136, -1, 138, 139, 140, -1, 142, + 143, 144, -1, 146, 147, 148, 149, 150, 151, 152, + 153, 154, 155, -1, 157, -1, 159, 160, 161, 162, + -1, 164, -1, 166, -1, -1, -1, 170, 171, 172, + 173, -1, 175, 176, -1, 178, 179, 180, -1, 182, + 183, 184, 185, 186, -1, 188, 189, 190, 191, -1, + 193, 194, 195, 196, 197, 198, 199, -1, 201, -1, + 203, 204, 205, 206, 207, 208, 209, -1, 211, -1, + 213, -1, -1, 216, -1, 218, 219, 220, 221, 222, + -1, -1, 225, 226, -1, 228, -1, -1, 231, 232, + 233, -1, -1, 236, 237, 238, 239, 240, 241, 242, + 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, + -1, 254, 255, 256, 257, 258, 259, 260, 261, 262, + 263, 264, -1, 266, 267, -1, 269, -1, 271, 272, + 273, 274, 275, 276, -1, 278, 279, -1, -1, 282, + 283, 284, -1, -1, 287, 288, 289, -1, 291, -1, + 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, + -1, 304, 305, 306, 307, 308, 309, 310, 311, -1, + 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, + 323, 324, 325, 326, 327, -1, 329, 330, 331, 332, + 333, 334, 335, 336, 337, 338, 339, 340, -1, 342, + 343, -1, 345, 346, 347, 348, 349, 350, 351, 352, + 353, 354, 355, 356, 357, 358, 359, -1, 361, 362, + 363, 364, 365, -1, 367, 368, 369, 370, 371, -1, + 373, 374, 375, 376, -1, 378, 379, 380, 381, 382, + 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, + -1, 394, 395, -1, 397, -1, 399, 400, 401, 402, + 403, -1, 405, 406, 407, -1, -1, 410, 411, 412, + 413, 414, -1, 416, 417, 418, 419, 420, 421, 422, + 423, -1, -1, 426, 427, 428, 429, 430, -1, -1, + 433, 434, 435, 436, 437, 438, 439, -1, 441, -1, + 443, 444, 445, 446, -1, -1, 449, -1, -1, 452, + 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, + 463, 464, 465, 466, 467, 468, 469, 470, 471, 3, + -1, -1, 475, 476, 477, 478, 10, 480, 481, 482, + 483, 484, 485, 17, 18, 19, -1, -1, 22, 23, + 24, 25, 26, 27, 28, 29, -1, 31, 32, 33, + -1, -1, -1, -1, -1, -1, -1, 41, 42, -1, + 44, 45, 46, -1, 48, 49, 50, 51, 52, -1, + 54, 55, -1, 57, 58, 59, 60, 61, 62, -1, + -1, 65, 66, 67, 68, 69, -1, 71, 72, 73, + 74, 75, -1, -1, -1, 79, 80, 81, 82, 83, + -1, 85, 86, 87, -1, 89, 90, 91, 92, 93, + 94, -1, -1, 97, 98, 99, -1, -1, -1, -1, + -1, -1, -1, 107, 108, 109, 110, 111, 112, 113, + 114, 115, -1, 117, -1, 119, 120, 121, 122, 123, + 124, -1, 126, 127, 128, 129, -1, -1, 132, 133, + 134, 135, 136, -1, 138, 139, 140, -1, 142, 143, + 144, -1, 146, 147, 148, 149, 150, 151, 152, 153, + 154, 155, -1, 157, -1, 159, 160, 161, 162, -1, + 164, -1, 166, -1, -1, -1, 170, 171, 172, 173, + -1, 175, 176, -1, 178, 179, 180, -1, 182, 183, + 184, 185, 186, -1, 188, 189, 190, 191, -1, 193, + 194, 195, 196, 197, 198, 199, -1, 201, -1, 203, + 204, 205, 206, 207, 208, 209, -1, 211, -1, 213, + -1, -1, 216, -1, 218, 219, 220, 221, 222, -1, + -1, 225, 226, -1, 228, -1, -1, 231, 232, 233, + -1, -1, 236, 237, 238, 239, 240, 241, 242, 243, + 244, 245, 246, 247, 248, 249, 250, 251, 252, -1, + 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, + 264, -1, 266, 267, -1, 269, -1, 271, 272, 273, + 274, 275, 276, -1, 278, 279, -1, -1, 282, 283, + 284, -1, -1, 287, 288, 289, -1, 291, -1, 293, + 294, 295, 296, 297, 298, 299, 300, 301, 302, -1, + 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, + 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, + 324, 325, 326, 327, -1, 329, 330, 331, 332, 333, + 334, 335, 336, 337, 338, 339, 340, -1, 342, 343, + -1, 345, 346, 347, 348, 349, 350, 351, 352, 353, + 354, 355, 356, 357, 358, 359, -1, 361, 362, 363, + 364, 365, -1, 367, 368, 369, 370, 371, -1, 373, + 374, 375, 376, -1, 378, 379, 380, 381, 382, 383, + 384, 385, 386, 387, 388, 389, 390, 391, 392, -1, + 394, 395, -1, 397, -1, 399, 400, 401, 402, 403, + -1, 405, 406, 407, -1, -1, 410, 411, 412, 413, + 414, -1, 416, 417, 418, 419, 420, 421, 422, 423, + -1, -1, 426, 427, 428, 429, 430, -1, -1, 433, + 434, 435, 436, 437, 438, 439, -1, 441, -1, 443, + 444, 445, 446, -1, -1, 449, -1, -1, 452, 453, + 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, + 464, 465, 466, 467, 468, 469, 470, 471, 3, -1, + -1, 475, 476, 477, 478, 10, 480, 481, 482, 483, + 484, 485, 17, 18, 19, -1, -1, 22, 23, 24, + 25, 26, 27, 28, 29, -1, 31, 32, 33, -1, + -1, -1, -1, -1, -1, -1, 41, 42, -1, 44, + 45, 46, -1, 48, 49, 50, 51, 52, -1, 54, + 55, -1, 57, 58, 59, 60, 61, 62, -1, -1, + 65, 66, 67, 68, 69, -1, 71, 72, 73, 74, + 75, -1, -1, -1, 79, 80, 81, 82, 83, -1, + 85, 86, 87, -1, 89, 90, 91, 92, 93, 94, + -1, -1, 97, 98, 99, -1, -1, -1, -1, -1, + -1, -1, 107, 108, 109, 110, 111, 112, 113, 114, + 115, -1, 117, -1, 119, 120, 121, 122, 123, 124, + -1, 126, 127, 128, 129, -1, -1, 132, 133, 134, + 135, 136, -1, 138, 139, 140, -1, 142, 143, 144, + -1, 146, 147, 148, 149, 150, 151, 152, 153, 154, + 155, -1, 157, -1, 159, 160, 161, 162, -1, 164, + -1, 166, -1, -1, -1, 170, 171, 172, 173, -1, + 175, 176, -1, 178, 179, 180, -1, 182, 183, 184, + 185, 186, -1, 188, 189, 190, 191, -1, 193, 194, + 195, 196, 197, 198, 199, -1, 201, -1, 203, 204, + 205, 206, 207, 208, 209, -1, 211, -1, 213, -1, + -1, 216, -1, 218, 219, 220, 221, 222, -1, -1, + 225, 226, -1, 228, -1, -1, 231, 232, 233, -1, + -1, 236, 237, 238, 239, 240, 241, 242, 243, 244, + 245, 246, 247, 248, 249, 250, 251, 252, -1, 254, + 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, + -1, 266, 267, -1, 269, -1, 271, 272, 273, 274, + 275, 276, -1, 278, 279, -1, -1, 282, 283, 284, + -1, -1, 287, 288, 289, -1, 291, -1, 293, 294, + 295, 296, 297, 298, 299, 300, 301, 302, -1, 304, + 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, + 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, + 325, 326, 327, -1, 329, 330, 331, 332, 333, 334, + 335, 336, 337, 338, 339, 340, -1, 342, 343, -1, + 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, + 355, 356, 357, 358, 359, -1, 361, 362, 363, 364, + 365, -1, 367, 368, 369, 370, 371, -1, 373, 374, + 375, 376, -1, 378, 379, 380, 381, 382, 383, 384, + 385, 386, 387, 388, 389, 390, 391, 392, -1, 394, + 395, -1, 397, -1, 399, 400, 401, 402, 403, -1, + 405, 406, 407, -1, -1, 410, 411, 412, 413, 414, + -1, 416, 417, 418, 419, 420, 421, 422, 423, -1, + -1, 426, 427, 428, 429, 430, -1, -1, 433, 434, + 435, 436, 437, 438, 439, -1, 441, -1, 443, 444, + 445, 446, -1, -1, 449, -1, -1, 452, 453, 454, + 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, + 465, 466, 467, 468, 469, 470, 471, 3, -1, -1, + 475, 476, 477, 478, 10, 480, 481, 482, 483, 484, + 485, 17, 18, 19, -1, -1, 22, 23, 24, 25, + 26, 27, 28, 29, -1, 31, 32, 33, -1, -1, + -1, -1, -1, -1, -1, 41, 42, -1, 44, 45, + 46, -1, 48, 49, 50, 51, 52, -1, 54, 55, + -1, 57, 58, 59, 60, 61, 62, -1, -1, 65, + 66, 67, 68, 69, -1, 71, 72, 73, 74, 75, + -1, -1, -1, 79, 80, 81, 82, 83, -1, 85, + 86, 87, -1, 89, 90, 91, 92, 93, 94, -1, + -1, 97, 98, 99, -1, -1, -1, -1, -1, -1, + -1, 107, 108, 109, 110, 111, 112, 113, 114, 115, + -1, 117, -1, 119, 120, 121, 122, 123, 124, -1, + 126, 127, 128, 129, -1, -1, 132, 133, 134, 135, + 136, -1, 138, 139, 140, -1, 142, 143, 144, -1, + 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, + -1, 157, -1, 159, 160, 161, 162, -1, 164, -1, + 166, -1, -1, -1, 170, 171, 172, 173, -1, 175, + 176, -1, 178, 179, 180, -1, 182, 183, 184, 185, + 186, -1, 188, 189, 190, 191, -1, 193, 194, 195, + 196, 197, 198, 199, -1, 201, -1, 203, 204, 205, + 206, 207, 208, 209, -1, 211, -1, 213, -1, -1, + 216, -1, 218, 219, 220, 221, 222, -1, -1, 225, + 226, -1, 228, -1, -1, 231, 232, 233, -1, -1, + 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, + 246, 247, 248, 249, 250, 251, 252, -1, 254, 255, + 256, 257, 258, 259, 260, 261, 262, 263, 264, -1, + 266, 267, -1, 269, -1, 271, 272, 273, 274, 275, + 276, -1, 278, 279, -1, -1, 282, 283, 284, -1, + -1, 287, 288, 289, -1, 291, -1, 293, 294, 295, + 296, 297, 298, 299, 300, 301, 302, -1, 304, 305, + 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, + 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, + 326, 327, -1, 329, 330, 331, 332, 333, 334, 335, + 336, 337, 338, 339, 340, -1, 342, 343, -1, 345, + 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, + 356, 357, 358, 359, -1, 361, 362, 363, 364, 365, + -1, 367, 368, 369, 370, 371, -1, 373, 374, 375, + 376, -1, 378, 379, 380, 381, 382, 383, 384, 385, + 386, 387, 388, 389, 390, 391, 392, -1, 394, 395, + -1, 397, -1, 399, 400, 401, 402, 403, -1, 405, + 406, 407, -1, -1, 410, 411, 412, 413, 414, -1, + 416, 417, 418, 419, 420, 421, 422, 423, -1, -1, + 426, 427, 428, 429, 430, -1, -1, 433, 434, 435, + 436, 437, 438, 439, -1, 441, -1, 443, 444, 445, + 446, -1, -1, 449, -1, -1, 452, 453, 454, 455, + 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, + 466, 467, 468, 469, 470, 471, 3, -1, -1, 475, + 476, 477, 478, 10, 480, 481, 482, 483, 484, 485, + 17, 18, 19, -1, -1, 22, 23, 24, 25, 26, + 27, 28, 29, -1, 31, 32, 33, -1, -1, -1, + -1, -1, -1, -1, 41, 42, -1, 44, 45, 46, + -1, 48, 49, 50, 51, 52, -1, 54, 55, -1, + 57, 58, 59, 60, 61, 62, -1, -1, 65, 66, + 67, 68, 69, -1, 71, 72, 73, 74, 75, -1, + -1, -1, 79, 80, 81, 82, 83, -1, 85, 86, + 87, -1, 89, 90, 91, 92, 93, 94, -1, -1, + 97, 98, 99, -1, -1, -1, -1, -1, -1, -1, + 107, 108, 109, 110, 111, 112, 113, 114, 115, -1, + 117, -1, 119, 120, 121, 122, 123, 124, -1, 126, + 127, 128, 129, -1, -1, 132, 133, 134, 135, 136, + -1, 138, 139, 140, -1, 142, 143, 144, -1, 146, + 147, 148, 149, 150, 151, 152, 153, 154, 155, -1, + 157, -1, 159, 160, 161, 162, -1, 164, -1, 166, + -1, -1, -1, 170, 171, 172, 173, -1, 175, 176, + -1, 178, 179, 180, -1, 182, 183, 184, 185, 186, + -1, 188, 189, 190, 191, -1, 193, 194, 195, 196, + 197, 198, 199, -1, 201, -1, 203, 204, 205, 206, + 207, 208, 209, -1, 211, -1, 213, -1, -1, 216, + -1, 218, 219, 220, 221, 222, -1, -1, 225, 226, + -1, 228, -1, -1, 231, 232, 233, -1, -1, 236, + 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, + 247, 248, 249, 250, 251, 252, -1, 254, 255, 256, + 257, 258, 259, 260, 261, 262, 263, 264, -1, 266, + 267, -1, 269, -1, 271, 272, 273, 274, 275, 276, + -1, 278, 279, -1, -1, 282, 283, 284, -1, -1, + 287, 288, 289, -1, 291, -1, 293, 294, 295, 296, + 297, 298, 299, 300, 301, 302, -1, 304, 305, 306, + 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, + 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, + 327, -1, 329, 330, 331, 332, 333, 334, 335, 336, + 337, 338, 339, 340, -1, 342, 343, -1, 345, 346, + 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, + 357, 358, 359, -1, 361, 362, 363, 364, 365, -1, + 367, 368, 369, 370, 371, -1, 373, 374, 375, 376, + -1, 378, 379, 380, 381, 382, 383, 384, 385, 386, + 387, 388, 389, 390, 391, 392, -1, 394, 395, -1, + 397, -1, 399, 400, 401, 402, 403, -1, 405, 406, + 407, -1, -1, 410, 411, 412, 413, 414, -1, 416, + 417, 418, 419, 420, 421, 422, 423, -1, -1, 426, + 427, 428, 429, 430, -1, -1, 433, 434, 435, 436, + 437, 438, 439, -1, 441, -1, 443, 444, 445, 446, + -1, -1, 449, -1, -1, 452, 453, 454, 455, 456, + 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, + 467, 468, 469, 470, 471, 3, -1, -1, 475, 476, + 477, 478, 10, 480, 481, 482, 483, 484, 485, 17, + 18, 19, -1, -1, 22, 23, 24, 25, 26, 27, + 28, 29, -1, 31, 32, 33, -1, -1, -1, -1, + -1, -1, -1, 41, 42, -1, 44, 45, 46, -1, + 48, 49, 50, 51, 52, -1, 54, 55, -1, 57, + 58, 59, 60, 61, 62, -1, -1, 65, 66, 67, + 68, 69, -1, 71, 72, 73, 74, 75, -1, -1, + -1, 79, 80, 81, 82, 83, -1, 85, 86, 87, + -1, 89, 90, 91, 92, 93, 94, -1, -1, 97, + 98, 99, -1, -1, -1, -1, -1, -1, -1, 107, + 108, 109, 110, 111, 112, 113, 114, 115, -1, 117, + -1, 119, 120, 121, 122, 123, 124, -1, 126, 127, + 128, 129, -1, -1, 132, 133, 134, 135, 136, -1, + 138, 139, 140, -1, 142, 143, 144, -1, 146, 147, + 148, 149, 150, 151, 152, 153, 154, 155, -1, 157, + -1, 159, 160, 161, 162, -1, 164, -1, 166, -1, + -1, -1, 170, 171, 172, 173, -1, 175, 176, -1, + 178, 179, 180, -1, 182, 183, 184, 185, 186, -1, + 188, 189, 190, 191, -1, 193, 194, 195, 196, 197, + 198, 199, -1, 201, -1, 203, 204, 205, 206, 207, + 208, 209, -1, 211, -1, 213, -1, -1, 216, -1, + 218, 219, 220, 221, 222, -1, -1, 225, 226, -1, + 228, -1, -1, 231, 232, 233, -1, -1, 236, 237, + 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, + 248, 249, 250, 251, 252, -1, 254, 255, 256, 257, + 258, 259, 260, 261, 262, 263, 264, -1, 266, 267, + -1, 269, -1, 271, 272, 273, 274, 275, 276, -1, + 278, 279, -1, -1, 282, 283, 284, -1, -1, 287, + 288, 289, -1, 291, -1, 293, 294, 295, 296, 297, + 298, 299, 300, 301, 302, -1, 304, 305, 306, 307, + 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, + 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, + -1, 329, 330, 331, 332, 333, 334, 335, 336, 337, + 338, 339, 340, -1, 342, 343, -1, 345, 346, 347, + 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, + 358, 359, -1, 361, 362, 363, 364, 365, -1, 367, + 368, 369, 370, 371, -1, 373, 374, 375, 376, -1, + 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, + 388, 389, 390, 391, 392, -1, 394, 395, -1, 397, + -1, 399, 400, 401, 402, 403, -1, 405, 406, 407, + -1, -1, 410, 411, 412, 413, 414, -1, 416, 417, + 418, 419, 420, 421, 422, 423, -1, -1, 426, 427, + 428, 429, 430, -1, -1, 433, 434, 435, 436, 437, + 438, 439, -1, 441, -1, 443, 444, 445, 446, -1, + -1, 449, -1, -1, 452, 453, 454, 455, 456, 457, + 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, + 468, 469, 470, 471, 3, -1, -1, 475, 476, 477, + 478, 10, 480, 481, 482, 483, 484, 485, 17, 18, + 19, -1, -1, 22, 23, 24, 25, 26, 27, 28, + 29, -1, 31, 32, 33, -1, -1, -1, -1, -1, + -1, -1, 41, 42, -1, 44, 45, 46, -1, 48, + 49, 50, 51, 52, -1, 54, 55, -1, 57, 58, + 59, 60, 61, 62, -1, -1, 65, 66, 67, 68, + 69, -1, 71, 72, 73, 74, 75, -1, -1, -1, + 79, 80, 81, 82, 83, -1, 85, 86, 87, -1, + 89, 90, 91, 92, 93, 94, -1, -1, 97, 98, + 99, -1, -1, -1, -1, -1, -1, -1, 107, 108, + 109, 110, 111, 112, 113, 114, 115, -1, 117, -1, + 119, 120, 121, 122, 123, 124, -1, 126, 127, 128, + 129, -1, -1, 132, 133, 134, 135, 136, -1, 138, + 139, 140, -1, 142, 143, 144, -1, 146, 147, 148, + 149, 150, 151, 152, 153, 154, 155, -1, 157, -1, + 159, 160, 161, 162, -1, 164, -1, 166, -1, -1, + -1, 170, 171, 172, 173, -1, 175, 176, -1, 178, + 179, 180, -1, 182, 183, 184, 185, 186, -1, 188, + 189, 190, 191, -1, 193, 194, 195, 196, 197, 198, + 199, -1, 201, -1, 203, 204, 205, 206, 207, 208, + 209, -1, 211, -1, 213, -1, -1, 216, -1, 218, + 219, 220, 221, 222, -1, -1, 225, 226, -1, 228, + -1, -1, 231, 232, 233, -1, -1, 236, 237, 238, + 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, + 249, 250, 251, 252, -1, 254, 255, 256, 257, 258, + 259, 260, 261, 262, 263, 264, -1, 266, 267, -1, + 269, -1, 271, 272, 273, 274, 275, 276, -1, 278, + 279, -1, -1, 282, 283, 284, -1, -1, 287, 288, + 289, -1, 291, -1, 293, 294, 295, 296, 297, 298, + 299, 300, 301, 302, -1, 304, 305, 306, 307, 308, + 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, + 319, 320, 321, 322, 323, 324, 325, 326, 327, -1, + 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, + 339, 340, -1, 342, 343, -1, 345, 346, 347, 348, + 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, + 359, -1, 361, 362, 363, 364, 365, -1, 367, 368, + 369, 370, 371, -1, 373, 374, 375, 376, -1, 378, + 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, + 389, 390, 391, 392, -1, 394, 395, -1, 397, -1, + 399, 400, 401, 402, 403, -1, 405, 406, 407, -1, + -1, 410, 411, 412, 413, 414, -1, 416, 417, 418, + 419, 420, 421, 422, 423, -1, -1, 426, 427, 428, + 429, 430, -1, -1, 433, 434, 435, 436, 437, 438, + 439, -1, 441, -1, 443, 444, 445, 446, -1, -1, + 449, -1, -1, 452, 453, 454, 455, 456, 457, 458, + 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, + 469, 470, 471, 3, -1, -1, 475, 476, 477, 478, + -1, 480, 481, 482, 483, 484, 485, -1, -1, -1, + -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, + 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, + 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, + 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, + 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, + 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, + 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, + 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, + 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, + 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, + 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, + 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, + 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, + 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, + 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, + 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, + 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, + 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, + 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, + 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, + 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, + 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, + 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, + 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, + 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, + 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, + 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, + 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, + 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, + 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, + 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, + 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, + 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, + 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, + 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, + 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, + 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, + 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, + 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, + 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, + 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, + 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, + 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, + 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, + 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, + 470, 471, 3, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 482, -1, -1, -1, -1, -1, -1, -1, + -1, 22, 23, 24, 25, 26, 27, 28, 29, -1, + 31, 32, 33, -1, -1, -1, -1, -1, -1, -1, + 41, 42, -1, 44, 45, 46, -1, 48, 49, 50, + 51, 52, -1, 54, 55, -1, 57, 58, 59, 60, + 61, 62, -1, -1, 65, 66, 67, 68, 69, -1, + 71, 72, 73, 74, 75, -1, -1, -1, 79, 80, + 81, 82, 83, -1, 85, 86, 87, -1, 89, 90, + 91, 92, 93, 94, -1, -1, 97, 98, 99, -1, + -1, -1, -1, -1, -1, -1, 107, 108, 109, 110, + 111, 112, 113, 114, 115, -1, 117, -1, 119, 120, + 121, 122, 123, 124, -1, 126, 127, 128, 129, -1, + -1, 132, 133, 134, 135, 136, -1, 138, 139, 140, + -1, 142, 143, 144, -1, 146, 147, 148, 149, 150, + 151, 152, 153, 154, 155, -1, 157, -1, 159, 160, + 161, 162, -1, 164, -1, 166, -1, -1, -1, 170, + 171, 172, 173, -1, 175, 176, -1, 178, 179, 180, + -1, 182, 183, 184, 185, 186, -1, 188, 189, 190, + 191, -1, 193, 194, 195, 196, 197, 198, 199, -1, + 201, -1, 203, 204, 205, 206, 207, 208, 209, -1, + 211, -1, 213, -1, -1, 216, -1, 218, 219, 220, + 221, 222, -1, -1, 225, 226, -1, 228, -1, -1, + 231, 232, 233, -1, -1, 236, 237, 238, 239, 240, + 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, + 251, 252, -1, 254, 255, 256, 257, 258, 259, 260, + 261, 262, 263, 264, -1, 266, 267, -1, 269, -1, + 271, 272, 273, 274, 275, 276, -1, 278, 279, -1, + -1, 282, 283, 284, -1, -1, 287, 288, 289, -1, + 291, -1, 293, 294, 295, 296, 297, 298, 299, 300, + 301, 302, -1, 304, 305, 306, 307, 308, 309, 310, + 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, + 321, 322, 323, 324, 325, 326, 327, -1, 329, 330, + 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, + -1, 342, 343, -1, 345, 346, 347, 348, 349, 350, + 351, 352, 353, 354, 355, 356, 357, 358, 359, -1, + 361, 362, 363, 364, 365, -1, 367, 368, 369, 370, + 371, -1, 373, 374, 375, 376, -1, 378, 379, 380, + 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, + 391, 392, -1, 394, 395, -1, 397, -1, 399, 400, + 401, 402, 403, -1, 405, 406, 407, -1, -1, 410, + 411, 412, 413, 414, -1, 416, 417, 418, 419, 420, + 421, 422, 423, -1, -1, 426, 427, 428, 429, 430, + -1, -1, 433, 434, 435, 436, 437, 438, 439, -1, + 441, -1, 443, 444, 445, 446, -1, -1, 449, -1, + -1, 452, 453, 454, 455, 456, 457, 458, 459, 460, + 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, + 471, 3, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 482, -1, -1, -1, -1, -1, -1, -1, -1, + 22, 23, 24, 25, 26, 27, 28, 29, -1, 31, + 32, 33, -1, -1, -1, -1, -1, -1, -1, 41, + 42, -1, 44, 45, 46, -1, 48, 49, 50, 51, + 52, -1, 54, 55, -1, 57, 58, 59, 60, 61, + 62, -1, -1, 65, 66, 67, 68, 69, -1, 71, + 72, 73, 74, 75, -1, -1, -1, 79, 80, 81, + 82, 83, -1, 85, 86, 87, -1, 89, 90, 91, + 92, 93, 94, -1, -1, 97, 98, 99, -1, -1, + -1, -1, -1, -1, -1, 107, 108, 109, 110, 111, + 112, 113, 114, 115, -1, 117, -1, 119, 120, 121, + 122, 123, 124, -1, 126, 127, 128, 129, -1, -1, + 132, 133, 134, 135, 136, -1, 138, 139, 140, -1, + 142, 143, 144, -1, 146, 147, 148, 149, 150, 151, + 152, 153, 154, 155, -1, 157, -1, 159, 160, 161, + 162, -1, 164, -1, 166, -1, -1, -1, 170, 171, + 172, 173, -1, 175, 176, -1, 178, 179, 180, -1, + 182, 183, 184, 185, 186, -1, 188, 189, 190, 191, + -1, 193, 194, 195, 196, 197, 198, 199, -1, 201, + -1, 203, 204, 205, 206, 207, 208, 209, -1, 211, + -1, 213, -1, -1, 216, -1, 218, 219, 220, 221, + 222, -1, -1, 225, 226, -1, 228, -1, -1, 231, + 232, 233, -1, -1, 236, 237, 238, 239, 240, 241, + 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, + 252, -1, 254, 255, 256, 257, 258, 259, 260, 261, + 262, 263, 264, -1, 266, 267, -1, 269, -1, 271, + 272, 273, 274, 275, 276, -1, 278, 279, -1, -1, + 282, 283, 284, -1, -1, 287, 288, 289, -1, 291, + -1, 293, 294, 295, 296, 297, 298, 299, 300, 301, + 302, -1, 304, 305, 306, 307, 308, 309, 310, 311, + -1, 313, 314, 315, 316, 317, 318, 319, 320, 321, + 322, 323, 324, 325, 326, 327, -1, 329, 330, 331, + 332, 333, 334, 335, 336, 337, 338, 339, 340, -1, + 342, 343, -1, 345, 346, 347, 348, 349, 350, 351, + 352, 353, 354, 355, 356, 357, 358, 359, -1, 361, + 362, 363, 364, 365, -1, 367, 368, 369, 370, 371, + -1, 373, 374, 375, 376, -1, 378, 379, 380, 381, + 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, + 392, -1, 394, 395, -1, 397, -1, 399, 400, 401, + 402, 403, -1, 405, 406, 407, -1, -1, 410, 411, + 412, 413, 414, -1, 416, 417, 418, 419, 420, 421, + 422, 423, -1, -1, 426, 427, 428, 429, 430, -1, + -1, 433, 434, 435, 436, 437, 438, 439, -1, 441, + -1, 443, 444, 445, 446, -1, -1, 449, -1, -1, + 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, + 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, + 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 482, -1, -1, -1, -1, -1, -1, -1, -1, 22, + 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, + 33, -1, -1, -1, -1, -1, -1, -1, 41, 42, + -1, 44, 45, 46, 47, 48, 49, 50, -1, 52, + 53, 54, 55, -1, 57, 58, 59, 60, 61, 62, + -1, -1, 65, 66, 67, 68, 69, -1, 71, 72, + 73, 74, -1, -1, 77, -1, 79, 80, 81, 82, + 83, 84, 85, 86, 87, -1, 89, 90, 91, 92, + 93, 94, -1, 96, 97, 98, 99, -1, -1, -1, + 103, -1, -1, -1, 107, 108, 109, 110, 111, 112, + 113, 114, 115, -1, 117, -1, 119, 120, 121, 122, + 123, 124, -1, 126, 127, 128, 129, -1, -1, 132, + 133, 134, 135, 136, -1, 138, 139, 140, -1, 142, + 143, 144, -1, 146, 147, 148, 149, -1, 151, 152, + 153, 154, -1, -1, 157, -1, 159, 160, 161, 162, + -1, 164, -1, 166, 167, -1, 169, 170, 171, 172, + 173, -1, 175, -1, -1, -1, 179, 180, -1, 182, + 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, + 193, 194, 195, 196, 197, 198, 199, -1, 201, 202, + 203, 204, 205, 206, 207, 208, 209, -1, 211, -1, + 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, + -1, -1, 225, -1, 227, 228, 229, -1, 231, 232, + 233, -1, -1, 236, 237, 238, 239, 240, 241, 242, + 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, + 253, 254, 255, 256, 257, 258, 259, 260, 261, -1, + -1, 264, -1, 266, 267, 268, 269, -1, -1, 272, + 273, 274, 275, 276, -1, 278, 279, -1, -1, 282, + 283, 284, -1, 286, 287, 288, 289, 290, 291, 292, + -1, 294, 295, 296, 297, 298, 299, 300, 301, 302, + -1, 304, 305, -1, 307, -1, 309, 310, 311, -1, + 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, + 323, 324, 325, 326, 327, -1, 329, 330, 331, 332, + 333, 334, 335, 336, 337, 338, 339, 340, -1, 342, + 343, 344, 345, 346, 347, 348, 349, -1, 351, 352, + 353, 354, 355, 356, 357, 358, 359, -1, 361, 362, + 363, 364, 365, -1, 367, 368, 369, 370, 371, 372, + 373, 374, 375, 376, -1, 378, 379, 380, 381, 382, + 383, 384, 385, 386, 387, 388, 389, 390, -1, 392, + -1, 394, 395, -1, 397, 398, 399, 400, 401, 402, + 403, -1, 405, 406, 407, -1, -1, 410, 411, -1, + 413, -1, -1, 416, 417, 418, 419, 420, 421, 422, + 423, -1, -1, 426, 427, 428, 429, 430, -1, -1, + 433, 434, 435, 436, 437, -1, 439, 440, 441, 442, + 443, 444, 445, 446, -1, -1, 449, -1, -1, 452, + 453, 454, 455, 456, 457, -1, -1, -1, -1, -1, + -1, 3, -1, -1, -1, -1, 469, 470, 471, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 482, + 22, 23, 24, 25, 26, 27, 28, 29, -1, 31, + 32, 33, -1, -1, -1, -1, -1, -1, -1, 41, + 42, -1, 44, 45, 46, 47, 48, 49, 50, -1, + 52, 53, 54, 55, -1, 57, 58, 59, 60, 61, + 62, -1, -1, 65, 66, 67, 68, 69, -1, 71, + 72, 73, 74, -1, -1, 77, -1, 79, 80, 81, + 82, 83, 84, 85, 86, 87, -1, 89, 90, 91, + 92, 93, 94, -1, 96, 97, 98, 99, -1, -1, + -1, 103, -1, -1, -1, 107, 108, 109, 110, 111, + 112, 113, 114, 115, -1, 117, -1, 119, 120, 121, + 122, 123, 124, -1, 126, 127, 128, 129, -1, -1, + 132, 133, 134, 135, 136, -1, 138, 139, 140, -1, + 142, 143, 144, -1, 146, 147, 148, 149, -1, 151, + 152, 153, 154, -1, -1, 157, -1, 159, 160, 161, + 162, -1, 164, -1, 166, 167, -1, 169, 170, 171, + 172, 173, -1, 175, -1, -1, -1, 179, 180, -1, + 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, + 192, 193, 194, 195, 196, 197, 198, 199, -1, 201, + 202, 203, 204, 205, 206, 207, 208, 209, -1, 211, + -1, 213, 214, 215, 216, 217, 218, 219, 220, 221, + 222, -1, -1, 225, -1, 227, 228, 229, -1, 231, + 232, 233, -1, -1, 236, 237, 238, 239, 240, 241, + 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, + 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, + -1, -1, 264, -1, 266, 267, 268, 269, -1, -1, + 272, 273, 274, 275, 276, -1, 278, 279, -1, -1, + 282, 283, 284, -1, 286, 287, 288, 289, 290, 291, + 292, -1, 294, 295, 296, 297, 298, 299, 300, 301, + 302, -1, 304, 305, -1, 307, -1, 309, 310, 311, + -1, 313, 314, 315, 316, 317, 318, 319, 320, 321, + 322, 323, 324, 325, 326, 327, -1, 329, 330, 331, + 332, 333, 334, 335, 336, 337, 338, 339, 340, -1, + 342, 343, 344, 345, 346, 347, 348, 349, -1, 351, + 352, 353, 354, 355, 356, 357, 358, 359, -1, 361, + 362, 363, 364, 365, -1, 367, 368, 369, 370, 371, + 372, 373, 374, 375, 376, -1, 378, 379, 380, 381, + 382, 383, 384, 385, 386, 387, 388, 389, 390, -1, + 392, -1, 394, 395, -1, 397, 398, 399, 400, 401, + 402, 403, -1, 405, 406, 407, -1, -1, 410, 411, + -1, 413, -1, -1, 416, 417, 418, 419, 420, 421, + 422, 423, -1, -1, 426, 427, 428, 429, 430, -1, + -1, 433, 434, 435, 436, 437, -1, 439, 440, 441, + 442, 443, 444, 445, 446, -1, -1, 449, -1, -1, + 452, 453, 454, 455, 456, 457, -1, -1, -1, -1, + -1, -1, 3, -1, 5, 6, -1, 469, 470, 471, + 11, 12, -1, -1, -1, -1, -1, -1, -1, -1, + 482, 22, 23, 24, 25, 26, 27, 28, 29, -1, + 31, 32, 33, -1, -1, -1, -1, -1, -1, -1, + 41, 42, -1, 44, 45, 46, 47, 48, 49, 50, + 51, 52, 53, 54, 55, -1, 57, 58, 59, 60, + 61, 62, -1, -1, 65, 66, 67, 68, 69, -1, + 71, 72, 73, 74, 75, -1, 77, -1, 79, 80, + 81, 82, 83, 84, 85, 86, 87, -1, 89, 90, + 91, 92, 93, 94, -1, 96, 97, 98, 99, -1, + -1, -1, 103, -1, -1, -1, 107, 108, 109, 110, + 111, 112, 113, 114, 115, 116, 117, -1, 119, 120, + 121, 122, 123, 124, -1, 126, 127, 128, 129, -1, + -1, 132, 133, 134, 135, 136, -1, 138, 139, 140, + -1, 142, 143, 144, -1, 146, 147, 148, 149, 150, + 151, 152, 153, 154, 155, 156, 157, -1, 159, 160, + 161, 162, -1, 164, -1, 166, 167, -1, 169, 170, + 171, 172, 173, -1, 175, 176, -1, 178, 179, 180, + -1, 182, 183, 184, 185, 186, 187, 188, 189, 190, + 191, -1, 193, 194, 195, 196, 197, 198, 199, -1, + 201, 202, 203, 204, 205, 206, 207, 208, 209, -1, + 211, -1, 213, 214, 215, 216, 217, 218, 219, 220, + 221, 222, -1, -1, 225, 226, 227, 228, 229, -1, + 231, 232, 233, -1, -1, 236, 237, 238, 239, 240, + 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, + 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, + 261, 262, 263, 264, -1, 266, 267, 268, 269, -1, + 271, 272, 273, 274, 275, 276, -1, 278, 279, 280, + -1, 282, 283, 284, -1, -1, 287, 288, 289, 290, + 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, + 301, 302, -1, 304, 305, 306, 307, 308, 309, 310, + 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, + 321, 322, 323, 324, 325, 326, 327, -1, 329, 330, + 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, + -1, 342, 343, 344, 345, 346, 347, 348, 349, 350, + 351, 352, 353, 354, 355, 356, 357, 358, 359, -1, + 361, 362, 363, 364, 365, -1, 367, 368, 369, 370, + 371, 372, 373, 374, 375, 376, -1, 378, 379, 380, + 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, + 391, 392, -1, 394, 395, -1, 397, 398, 399, 400, + 401, 402, 403, -1, 405, 406, 407, -1, -1, 410, + 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, + 421, 422, 423, -1, -1, 426, 427, 428, 429, 430, + -1, -1, 433, 434, 435, 436, 437, 438, 439, -1, + 441, 442, 443, 444, 445, 446, -1, -1, 449, -1, + -1, 452, 453, 454, 455, 456, 457, 458, 459, 460, + 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, + 471, -1, -1, 3, -1, 5, 6, 478, -1, 480, + 481, 11, 12, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, + -1, 31, 32, 33, -1, -1, -1, -1, -1, -1, + -1, 41, 42, -1, 44, 45, 46, 47, 48, 49, + 50, 51, 52, 53, 54, 55, -1, 57, 58, 59, + 60, 61, 62, -1, -1, 65, 66, 67, 68, 69, + -1, 71, 72, 73, 74, 75, -1, 77, -1, 79, + 80, 81, 82, 83, 84, 85, 86, 87, -1, 89, + 90, 91, 92, 93, 94, -1, 96, 97, 98, 99, + -1, -1, -1, 103, -1, -1, -1, 107, 108, 109, + 110, 111, 112, 113, 114, 115, 116, 117, -1, 119, + 120, 121, 122, 123, 124, -1, 126, 127, 128, 129, + -1, -1, 132, 133, 134, 135, 136, -1, 138, 139, + 140, -1, 142, 143, 144, -1, 146, 147, 148, 149, + 150, 151, 152, 153, 154, 155, 156, 157, -1, 159, + 160, 161, 162, -1, 164, -1, 166, 167, -1, 169, + 170, 171, 172, 173, -1, 175, 176, -1, 178, 179, + 180, -1, 182, 183, 184, 185, 186, 187, 188, 189, + 190, 191, -1, 193, 194, 195, 196, 197, 198, 199, + -1, 201, 202, 203, 204, 205, 206, 207, 208, 209, + -1, 211, -1, 213, 214, 215, 216, 217, 218, 219, + 220, 221, 222, -1, -1, 225, 226, 227, 228, 229, + -1, 231, 232, 233, -1, -1, 236, 237, 238, 239, + 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, + 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, + 260, 261, 262, 263, 264, -1, 266, 267, 268, 269, + -1, 271, 272, 273, 274, 275, 276, -1, 278, 279, + 280, -1, 282, 283, 284, -1, -1, 287, 288, 289, + 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, + 300, 301, 302, -1, 304, 305, 306, 307, 308, 309, + 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, + 320, 321, 322, 323, 324, 325, 326, 327, -1, 329, + 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, + 340, -1, 342, 343, 344, 345, 346, 347, 348, 349, + 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, + -1, 361, 362, 363, 364, 365, -1, 367, 368, 369, + 370, 371, 372, 373, 374, 375, 376, -1, 378, 379, + 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, + 390, 391, 392, -1, 394, 395, -1, 397, 398, 399, + 400, 401, 402, 403, -1, 405, 406, 407, -1, -1, + 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, + 420, 421, 422, 423, -1, -1, 426, 427, 428, 429, + 430, -1, -1, 433, 434, 435, 436, 437, 438, 439, + -1, 441, 442, 443, 444, 445, 446, -1, -1, 449, + -1, -1, 452, 453, 454, 455, 456, 457, 458, 459, + 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, + 470, 471, -1, -1, 3, -1, 5, 6, 478, -1, + 480, 481, 11, 12, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, + 29, -1, 31, 32, 33, -1, -1, -1, -1, -1, + -1, -1, 41, 42, -1, 44, 45, 46, 47, 48, + 49, 50, 51, 52, 53, 54, 55, -1, 57, 58, + 59, 60, 61, 62, -1, -1, 65, 66, 67, 68, + 69, -1, 71, 72, 73, 74, 75, -1, 77, -1, + 79, 80, 81, 82, 83, 84, 85, 86, 87, -1, + 89, 90, 91, 92, 93, 94, -1, 96, 97, 98, + 99, -1, -1, -1, 103, -1, -1, -1, 107, 108, + 109, 110, 111, 112, 113, 114, 115, -1, 117, -1, + 119, 120, 121, 122, 123, 124, -1, 126, 127, 128, + 129, -1, -1, 132, 133, 134, 135, 136, -1, 138, + 139, 140, -1, 142, 143, 144, -1, 146, 147, 148, + 149, 150, 151, 152, 153, 154, 155, 156, 157, -1, + 159, 160, 161, 162, -1, 164, -1, 166, 167, -1, + 169, 170, 171, 172, 173, -1, 175, 176, -1, 178, + 179, 180, -1, 182, 183, 184, 185, 186, 187, 188, + 189, 190, 191, -1, 193, 194, 195, 196, 197, 198, + 199, -1, 201, 202, 203, 204, 205, 206, 207, 208, + 209, -1, 211, -1, 213, 214, 215, 216, 217, 218, + 219, 220, 221, 222, -1, -1, 225, 226, 227, 228, + 229, -1, 231, 232, 233, -1, -1, 236, 237, 238, + 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, + 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, + 259, 260, 261, 262, 263, 264, -1, 266, 267, 268, + 269, -1, 271, 272, 273, 274, 275, 276, -1, 278, + 279, 280, -1, 282, 283, 284, -1, -1, 287, 288, + 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, + 299, 300, 301, 302, -1, 304, 305, 306, 307, 308, + 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, + 319, 320, 321, 322, 323, 324, 325, 326, 327, -1, + 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, + 339, 340, -1, 342, 343, 344, 345, 346, 347, 348, + 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, + 359, -1, 361, 362, 363, 364, 365, -1, 367, 368, + 369, 370, 371, 372, 373, 374, 375, 376, -1, 378, + 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, + 389, 390, 391, 392, -1, 394, 395, -1, 397, 398, + 399, 400, 401, 402, 403, -1, 405, 406, 407, -1, + -1, 410, 411, 412, 413, 414, 415, 416, 417, 418, + 419, 420, 421, 422, 423, -1, -1, 426, 427, 428, + 429, 430, -1, -1, 433, 434, 435, 436, 437, 438, + 439, -1, 441, 442, 443, 444, 445, 446, -1, -1, + 449, -1, -1, 452, 453, 454, 455, 456, 457, 458, + 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, + 469, 470, 471, -1, -1, 3, -1, 5, 6, 478, + -1, 480, 481, 11, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, + 28, 29, -1, 31, 32, 33, -1, -1, -1, -1, + -1, -1, -1, 41, 42, -1, 44, 45, 46, 47, + 48, 49, 50, 51, 52, 53, 54, 55, -1, 57, + 58, 59, 60, 61, 62, -1, -1, 65, 66, 67, + 68, 69, -1, 71, 72, 73, 74, 75, -1, 77, + -1, 79, 80, 81, 82, 83, 84, 85, 86, 87, + -1, 89, 90, 91, 92, 93, 94, -1, 96, 97, + 98, 99, -1, -1, -1, 103, -1, -1, -1, 107, + 108, 109, 110, 111, 112, 113, 114, 115, -1, 117, + -1, 119, 120, 121, 122, 123, 124, -1, 126, 127, + 128, 129, -1, -1, 132, 133, 134, 135, 136, -1, + 138, 139, 140, -1, 142, 143, 144, -1, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, - 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, - 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, - 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, - 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, - 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, - 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, - 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, - 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, + -1, 159, 160, 161, 162, -1, 164, -1, 166, 167, + -1, 169, 170, 171, 172, 173, -1, 175, 176, -1, + 178, 179, 180, -1, 182, 183, 184, 185, 186, 187, + 188, 189, 190, 191, -1, 193, 194, 195, 196, 197, + 198, 199, -1, 201, 202, 203, 204, 205, 206, 207, + 208, 209, -1, 211, -1, 213, 214, 215, 216, 217, + 218, 219, 220, 221, 222, -1, -1, 225, 226, 227, + 228, 229, -1, 231, 232, 233, -1, -1, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, - 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, - 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, - 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, + 258, 259, 260, 261, 262, 263, 264, -1, 266, 267, + 268, 269, -1, 271, 272, 273, 274, 275, 276, -1, + 278, 279, 280, -1, 282, 283, 284, -1, -1, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, - 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, - 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, + 298, 299, 300, 301, 302, -1, 304, 305, 306, 307, + 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, - 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, - 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, + -1, 329, 330, 331, 332, 333, 334, 335, 336, 337, + 338, 339, 340, -1, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, - 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, - 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, + 358, 359, -1, 361, 362, 363, 364, 365, -1, 367, + 368, 369, 370, 371, 372, 373, 374, 375, 376, -1, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, - 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, - 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, - 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, - 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, - 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, - 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, - 448, 449, 3, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 18, 19, 20, - 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, + 388, 389, 390, 391, 392, -1, 394, 395, -1, 397, + 398, 399, 400, 401, 402, 403, -1, 405, 406, 407, + -1, -1, 410, 411, 412, 413, 414, 415, 416, 417, + 418, 419, 420, 421, 422, 423, -1, -1, 426, 427, + 428, 429, 430, -1, -1, 433, 434, 435, 436, 437, + 438, 439, -1, 441, 442, 443, 444, 445, 446, -1, + -1, 449, -1, -1, 452, 453, 454, 455, 456, 457, + 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, + 468, 469, 470, 471, -1, -1, 3, -1, -1, 6, + -1, -1, 480, 481, 11, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, + 27, 28, 29, -1, 31, 32, 33, -1, -1, -1, + -1, -1, -1, -1, 41, 42, -1, 44, 45, 46, + 47, 48, 49, 50, 51, 52, 53, 54, 55, -1, + 57, 58, 59, 60, 61, 62, -1, -1, 65, 66, + 67, 68, 69, -1, 71, 72, 73, 74, 75, -1, + 77, -1, 79, 80, 81, 82, 83, 84, 85, 86, + 87, -1, 89, 90, 91, 92, 93, 94, -1, 96, + 97, 98, 99, -1, -1, -1, 103, -1, -1, -1, + 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, + 117, -1, 119, 120, 121, 122, 123, 124, -1, 126, + 127, 128, 129, -1, -1, 132, 133, 134, 135, 136, + -1, 138, 139, 140, -1, 142, 143, 144, -1, 146, + 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, + 157, -1, 159, 160, 161, 162, -1, 164, -1, 166, + 167, -1, 169, 170, 171, 172, 173, -1, 175, 176, + -1, 178, 179, 180, -1, 182, 183, 184, 185, 186, + 187, 188, 189, 190, 191, -1, 193, 194, 195, 196, + 197, 198, 199, -1, 201, 202, 203, 204, 205, 206, + 207, 208, 209, -1, 211, -1, 213, 214, 215, 216, + 217, 218, 219, 220, 221, 222, -1, -1, 225, 226, + 227, 228, 229, -1, 231, 232, 233, -1, -1, 236, + 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, + 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, + 257, 258, 259, 260, 261, 262, 263, 264, -1, 266, + 267, 268, 269, -1, 271, 272, 273, 274, 275, 276, + -1, 278, 279, 280, -1, 282, 283, 284, -1, -1, + 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, + 297, 298, 299, 300, 301, 302, -1, 304, 305, 306, + 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, + 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, + 327, -1, 329, 330, 331, 332, 333, 334, 335, 336, + 337, 338, 339, 340, -1, 342, 343, 344, 345, 346, + 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, + 357, 358, 359, -1, 361, 362, 363, 364, 365, -1, + 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, + -1, 378, 379, 380, 381, 382, 383, 384, 385, 386, + 387, 388, 389, 390, 391, 392, -1, 394, 395, -1, + 397, 398, 399, 400, 401, 402, 403, -1, 405, 406, + 407, -1, -1, 410, 411, 412, 413, 414, 415, 416, + 417, 418, 419, 420, 421, 422, 423, -1, -1, 426, + 427, 428, 429, 430, -1, -1, 433, 434, 435, 436, + 437, 438, 439, -1, 441, 442, 443, 444, 445, 446, + -1, -1, 449, -1, -1, 452, 453, 454, 455, 456, + 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, + 467, 468, 469, 470, 471, -1, -1, 3, -1, -1, + -1, -1, -1, 480, 481, 11, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 22, 23, 24, 25, + 26, 27, 28, 29, 30, 31, 32, 33, -1, -1, + -1, -1, -1, -1, -1, 41, 42, -1, 44, 45, + 46, -1, 48, 49, 50, 51, 52, -1, 54, 55, + -1, 57, 58, 59, 60, 61, 62, -1, -1, 65, + 66, 67, 68, 69, -1, 71, 72, 73, 74, 75, + -1, -1, -1, 79, 80, 81, 82, 83, -1, 85, + 86, 87, -1, 89, 90, 91, 92, 93, 94, -1, + -1, 97, 98, 99, -1, -1, -1, -1, -1, -1, + -1, 107, 108, 109, 110, 111, 112, 113, 114, 115, + -1, 117, -1, 119, 120, 121, 122, 123, 124, -1, + 126, 127, 128, 129, -1, -1, 132, 133, 134, 135, + 136, -1, 138, 139, 140, -1, 142, 143, 144, -1, + 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, + -1, 157, -1, 159, 160, 161, 162, -1, 164, -1, + 166, -1, 168, -1, 170, 171, 172, 173, -1, 175, + 176, -1, 178, 179, 180, -1, 182, 183, 184, 185, + 186, -1, 188, 189, 190, 191, 192, 193, 194, 195, + 196, 197, 198, 199, -1, 201, -1, 203, 204, 205, + 206, 207, 208, 209, -1, 211, -1, 213, -1, -1, + 216, -1, 218, 219, 220, 221, 222, -1, -1, 225, + 226, -1, 228, -1, -1, 231, 232, 233, -1, -1, + 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, + 246, 247, 248, 249, 250, 251, 252, -1, 254, 255, + 256, 257, 258, 259, 260, 261, 262, 263, 264, -1, + 266, 267, -1, 269, -1, 271, 272, 273, 274, 275, + 276, -1, 278, 279, -1, -1, 282, 283, 284, -1, + -1, 287, 288, 289, -1, 291, -1, 293, 294, 295, + 296, 297, 298, 299, 300, 301, 302, -1, 304, 305, + 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, + 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, + 326, 327, -1, 329, 330, 331, 332, 333, 334, 335, + 336, 337, 338, 339, 340, -1, 342, 343, -1, 345, + 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, + 356, 357, 358, 359, -1, 361, 362, 363, 364, 365, + -1, 367, 368, 369, 370, 371, -1, 373, 374, 375, + 376, -1, 378, 379, 380, 381, 382, 383, 384, 385, + 386, 387, 388, 389, 390, 391, 392, -1, 394, 395, + -1, 397, -1, 399, 400, 401, 402, 403, -1, 405, + 406, 407, -1, -1, 410, 411, 412, 413, 414, -1, + 416, 417, 418, 419, 420, 421, 422, 423, -1, -1, + 426, 427, 428, 429, 430, -1, -1, 433, 434, 435, + 436, 437, 438, 439, -1, 441, -1, 443, 444, 445, + 446, -1, -1, 449, -1, -1, 452, 453, 454, 455, + 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, + 466, 467, 468, 469, 470, 471, -1, 3, -1, -1, + 6, -1, -1, -1, 480, 481, 12, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 22, 23, 24, 25, + 26, 27, 28, 29, -1, 31, 32, 33, -1, -1, + -1, -1, -1, -1, -1, 41, 42, -1, 44, 45, + 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, + -1, 57, 58, 59, 60, 61, 62, -1, -1, 65, + 66, 67, 68, 69, -1, 71, 72, 73, 74, 75, + -1, 77, -1, 79, 80, 81, 82, 83, 84, 85, + 86, 87, -1, 89, 90, 91, 92, 93, 94, -1, + 96, 97, 98, 99, -1, -1, -1, 103, -1, -1, + -1, 107, 108, 109, 110, 111, 112, 113, 114, 115, + 116, 117, -1, 119, 120, 121, 122, 123, 124, -1, + 126, 127, 128, 129, -1, -1, 132, 133, 134, 135, + 136, -1, 138, 139, 140, -1, 142, 143, 144, -1, + 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, + -1, 157, -1, 159, 160, 161, 162, -1, 164, -1, + 166, 167, -1, 169, 170, 171, 172, 173, -1, 175, + 176, -1, 178, 179, 180, -1, 182, 183, 184, 185, + 186, 187, 188, 189, 190, 191, -1, 193, 194, 195, + 196, 197, 198, 199, -1, 201, 202, 203, 204, 205, + 206, 207, 208, 209, -1, 211, -1, 213, 214, 215, + 216, 217, 218, 219, 220, 221, 222, -1, -1, 225, + 226, 227, 228, 229, -1, 231, 232, 233, -1, -1, + 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, + 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, + 256, 257, 258, 259, 260, 261, 262, 263, 264, -1, + 266, 267, 268, 269, -1, 271, 272, 273, 274, 275, + 276, -1, 278, 279, -1, -1, 282, 283, 284, -1, + -1, 287, 288, 289, 290, 291, 292, 293, 294, 295, + 296, 297, 298, 299, 300, 301, 302, -1, 304, 305, + 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, + 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, + 326, 327, -1, 329, 330, 331, 332, 333, 334, 335, + 336, 337, 338, 339, 340, -1, 342, 343, 344, 345, + 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, + 356, 357, 358, 359, -1, 361, 362, 363, 364, 365, + -1, 367, 368, 369, 370, 371, 372, 373, 374, 375, + 376, -1, 378, 379, 380, 381, 382, 383, 384, 385, + 386, 387, 388, 389, 390, 391, 392, -1, 394, 395, + -1, 397, 398, 399, 400, 401, 402, 403, -1, 405, + 406, 407, -1, -1, 410, 411, 412, 413, 414, -1, + 416, 417, 418, 419, 420, 421, 422, 423, -1, -1, + 426, 427, 428, 429, 430, -1, -1, 433, 434, 435, + 436, 437, 438, 439, -1, 441, 442, 443, 444, 445, + 446, -1, -1, 449, -1, -1, 452, 453, 454, 455, + 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, + 466, 467, 468, 469, 470, 471, 3, -1, -1, 6, + -1, -1, 478, -1, -1, 12, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, + 27, 28, 29, -1, 31, 32, 33, -1, -1, -1, + -1, -1, -1, -1, 41, 42, -1, 44, 45, 46, + 47, 48, 49, 50, 51, 52, 53, 54, 55, -1, + 57, 58, 59, 60, 61, 62, -1, -1, 65, 66, + 67, 68, 69, -1, 71, 72, 73, 74, 75, -1, + 77, -1, 79, 80, 81, 82, 83, 84, 85, 86, + 87, -1, 89, 90, 91, 92, 93, 94, -1, 96, + 97, 98, 99, -1, -1, -1, 103, -1, -1, -1, + 107, 108, 109, 110, 111, 112, 113, 114, 115, -1, + 117, -1, 119, 120, 121, 122, 123, 124, -1, 126, + 127, 128, 129, -1, -1, 132, 133, 134, 135, 136, + -1, 138, 139, 140, -1, 142, 143, 144, -1, 146, + 147, 148, 149, 150, 151, 152, 153, 154, 155, -1, + 157, -1, 159, 160, 161, 162, -1, 164, -1, 166, + 167, -1, 169, 170, 171, 172, 173, -1, 175, 176, + -1, 178, 179, 180, -1, 182, 183, 184, 185, 186, + 187, 188, 189, 190, 191, -1, 193, 194, 195, 196, + 197, 198, 199, -1, 201, 202, 203, 204, 205, 206, + 207, 208, 209, -1, 211, -1, 213, 214, 215, 216, + 217, 218, 219, 220, 221, 222, -1, -1, 225, 226, + 227, 228, 229, -1, 231, 232, 233, -1, -1, 236, + 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, + 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, + 257, 258, 259, 260, 261, 262, 263, 264, -1, 266, + 267, 268, 269, -1, 271, 272, 273, 274, 275, 276, + -1, 278, 279, -1, -1, 282, 283, 284, -1, -1, + 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, + 297, 298, 299, 300, 301, 302, -1, 304, 305, 306, + 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, + 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, + 327, -1, 329, 330, 331, 332, 333, 334, 335, 336, + 337, 338, 339, 340, -1, 342, 343, 344, 345, 346, + 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, + 357, 358, 359, -1, 361, 362, 363, 364, 365, -1, + 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, + -1, 378, 379, 380, 381, 382, 383, 384, 385, 386, + 387, 388, 389, 390, 391, 392, -1, 394, 395, -1, + 397, 398, 399, 400, 401, 402, 403, -1, 405, 406, + 407, -1, -1, 410, 411, 412, 413, 414, -1, 416, + 417, 418, 419, 420, 421, 422, 423, -1, -1, 426, + 427, 428, 429, 430, -1, -1, 433, 434, 435, 436, + 437, 438, 439, -1, 441, 442, 443, 444, 445, 446, + -1, -1, 449, -1, -1, 452, 453, 454, 455, 456, + 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, + 467, 468, 469, 470, 471, 3, -1, -1, 6, -1, + -1, 478, -1, -1, 12, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, + 28, 29, -1, 31, 32, 33, -1, -1, -1, -1, + -1, -1, -1, 41, 42, -1, 44, 45, 46, -1, + 48, 49, 50, 51, 52, -1, 54, 55, -1, 57, + 58, 59, 60, 61, 62, -1, -1, 65, 66, 67, + 68, 69, -1, 71, 72, 73, 74, 75, -1, -1, + -1, 79, 80, 81, 82, 83, -1, 85, 86, 87, + -1, 89, 90, 91, 92, 93, 94, -1, -1, 97, + 98, 99, -1, -1, -1, -1, -1, -1, -1, 107, + 108, 109, 110, 111, 112, 113, 114, 115, -1, 117, + -1, 119, 120, 121, 122, 123, 124, -1, 126, 127, + 128, 129, -1, -1, 132, 133, 134, 135, 136, -1, + 138, 139, 140, -1, 142, 143, 144, -1, 146, 147, + 148, 149, 150, 151, 152, 153, 154, 155, -1, 157, + -1, 159, 160, 161, 162, -1, 164, -1, 166, -1, + -1, -1, 170, 171, 172, 173, -1, 175, 176, -1, + 178, 179, 180, -1, 182, 183, 184, 185, 186, -1, + 188, 189, 190, 191, -1, 193, 194, 195, 196, 197, + 198, 199, -1, 201, -1, 203, 204, 205, 206, 207, + 208, 209, -1, 211, -1, 213, -1, -1, 216, -1, + 218, 219, 220, 221, 222, -1, -1, 225, 226, -1, + 228, -1, -1, 231, 232, 233, -1, -1, 236, 237, + 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, + 248, 249, 250, 251, 252, -1, 254, 255, 256, 257, + 258, 259, 260, 261, 262, 263, 264, -1, 266, 267, + -1, 269, -1, 271, 272, 273, 274, 275, 276, -1, + 278, 279, -1, -1, 282, 283, 284, -1, -1, 287, + 288, 289, -1, 291, -1, 293, 294, 295, 296, 297, + 298, 299, 300, 301, 302, -1, 304, 305, 306, 307, + 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, + 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, + -1, 329, 330, 331, 332, 333, 334, 335, 336, 337, + 338, 339, 340, -1, 342, 343, -1, 345, 346, 347, + 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, + 358, 359, -1, 361, 362, 363, 364, 365, -1, 367, + 368, 369, 370, 371, -1, 373, 374, 375, 376, -1, + 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, + 388, 389, 390, 391, 392, -1, 394, 395, -1, 397, + -1, 399, 400, 401, 402, 403, -1, 405, 406, 407, + -1, -1, 410, 411, 412, 413, 414, -1, 416, 417, + 418, 419, 420, 421, 422, 423, -1, -1, 426, 427, + 428, 429, 430, -1, -1, 433, 434, 435, 436, 437, + 438, 439, -1, 441, -1, 443, 444, 445, 446, -1, + -1, 449, -1, -1, 452, 453, 454, 455, 456, 457, + 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, + 468, 469, 470, 471, 3, -1, 5, 6, -1, -1, + 478, -1, 11, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, + 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, + 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, + 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, + 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, + 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, + 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, + 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, + 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, + 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, + 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, + 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, + 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, + 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, + 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, + 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, + 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, + 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, + 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, + 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, + 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, + 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, + 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, + 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, + 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, + 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, + 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, + 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, + 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, + 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, + 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, + 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, + 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, + 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, + 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, + 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, + 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, + 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, + 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, + 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, + 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, + 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, + 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, + 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, + 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, + 469, 470, 471, 3, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, + 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, + 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, + 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, + 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, + 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, + 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, + 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, + 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, + 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, + 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, + 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, + 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, + 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, + 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, + 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, + 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, + 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, + 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, + 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, + 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, + 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, + 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, + 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, + 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, + 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, + 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, + 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, + 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, + 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, + 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, + 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, + 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, + 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, + 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, + 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, + 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, + 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, + 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, + 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, + 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, + 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, + 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, + 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, + 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, + 470, 471, 3, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, @@ -21069,4870 +21806,5392 @@ static const yytype_int16 yycheck[] = 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, - 441, 442, 443, 444, 445, 446, 447, 448, 449, 3, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 18, 19, 20, 21, 22, 23, - 24, 25, -1, 27, 28, 29, -1, -1, -1, -1, - -1, -1, -1, 37, 38, -1, 40, 41, 42, 43, - 44, 45, 46, 47, 48, 49, 50, 51, -1, 53, - 54, 55, 56, 57, -1, 59, 60, 61, 62, 63, - 64, -1, 66, 67, 68, 69, 70, -1, 72, -1, - 74, 75, 76, 77, 78, 79, 80, 81, 82, -1, - 84, 85, 86, 87, 88, 89, -1, 91, 92, 93, - 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, - 104, 105, 106, 107, 108, 109, 110, -1, 112, -1, - 114, 115, 116, 117, 118, 119, -1, 121, 122, 123, - 124, -1, -1, 127, 128, 129, 130, 131, -1, 133, - 134, 135, -1, 137, 138, 139, -1, 141, 142, 143, - 144, 145, 146, 147, 148, 149, -1, 151, -1, 153, - 154, 155, 156, -1, 158, -1, 160, 161, -1, 163, - 164, 165, 166, 167, -1, 169, 170, -1, 172, 173, - -1, 175, 176, 177, 178, 179, 180, 181, 182, 183, - 184, -1, 186, 187, 188, 189, 190, 191, -1, 193, - 194, 195, 196, 197, 198, 199, 200, 201, -1, 203, - -1, 205, 206, 207, 208, 209, 210, 211, 212, 213, - 214, -1, -1, 217, 218, 219, 220, 221, -1, 223, - 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, - 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, - 244, 245, 246, 247, 248, 249, 250, -1, 252, 253, - 254, 255, -1, 257, 258, 259, 260, 261, 262, -1, - 264, 265, -1, -1, 268, 269, 270, -1, -1, 273, - 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, - 284, 285, 286, 287, -1, 289, 290, 291, 292, 293, - 294, 295, 296, -1, 298, 299, 300, 301, 302, 303, - 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, - 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, - 324, -1, 326, 327, 328, 329, 330, 331, 332, 333, - 334, 335, 336, 337, 338, 339, 340, 341, -1, 343, - 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, - 354, 355, 356, 357, 358, -1, 360, 361, 362, 363, - 364, 365, 366, 367, 368, 369, 370, 371, 372, -1, - 374, 375, -1, 377, 378, 379, 380, 381, 382, 383, - -1, 385, 386, -1, -1, 389, 390, 391, 392, 393, - -1, 395, 396, 397, 398, 399, 400, 401, -1, -1, - 404, 405, 406, 407, 408, 409, -1, 411, 412, 413, - 414, 415, 416, 417, -1, 419, 420, 421, 422, 423, - 424, -1, -1, 427, -1, -1, 430, 431, 432, 433, - 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, - 444, 445, 446, 447, 448, 449, 3, -1, 5, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 18, 19, 20, 21, 22, 23, 24, 25, -1, - 27, 28, 29, -1, -1, -1, -1, -1, -1, -1, - 37, 38, -1, 40, 41, 42, 43, 44, 45, 46, - 47, 48, 49, 50, 51, -1, 53, 54, 55, 56, - 57, -1, -1, 60, 61, 62, 63, 64, -1, 66, - 67, 68, 69, 70, -1, 72, -1, 74, 75, 76, - 77, 78, 79, 80, 81, 82, -1, 84, 85, 86, - 87, 88, 89, -1, 91, 92, 93, 94, -1, -1, - -1, 98, -1, -1, -1, 102, 103, 104, 105, 106, - 107, 108, 109, 110, -1, 112, -1, 114, 115, 116, - 117, 118, 119, -1, 121, 122, 123, 124, -1, -1, - 127, 128, 129, 130, 131, -1, 133, 134, 135, -1, - 137, 138, 139, -1, 141, 142, 143, 144, 145, 146, - 147, 148, 149, 150, 151, -1, 153, 154, 155, 156, - -1, 158, -1, 160, 161, -1, 163, 164, 165, 166, - 167, -1, 169, 170, -1, 172, 173, -1, 175, 176, - 177, 178, 179, 180, 181, 182, 183, 184, -1, 186, - 187, 188, 189, 190, 191, -1, 193, 194, 195, 196, - 197, 198, 199, 200, 201, -1, 203, -1, 205, 206, - 207, 208, 209, 210, 211, 212, 213, 214, -1, -1, - 217, 218, 219, 220, 221, -1, 223, 224, 225, -1, - -1, 228, 229, 230, 231, 232, 233, 234, 235, 236, - 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, - 247, 248, 249, 250, -1, 252, 253, 254, 255, -1, - 257, 258, 259, 260, 261, 262, -1, 264, 265, 266, - -1, 268, 269, 270, -1, -1, 273, 274, 275, 276, - 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, - 287, -1, 289, 290, 291, 292, 293, 294, 295, 296, - -1, 298, 299, 300, 301, 302, 303, 304, 305, 306, - 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, - 317, 318, 319, 320, 321, 322, 323, 324, -1, 326, - 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, - 337, 338, 339, 340, 341, -1, 343, 344, 345, 346, - 347, -1, 349, 350, 351, 352, 353, 354, 355, 356, - 357, 358, -1, 360, 361, 362, 363, 364, 365, 366, - 367, 368, 369, 370, 371, 372, -1, 374, 375, -1, - 377, 378, 379, 380, 381, 382, 383, -1, 385, 386, - -1, -1, 389, 390, 391, 392, 393, 394, 395, 396, - 397, 398, 399, 400, 401, -1, -1, 404, 405, 406, - 407, 408, -1, -1, 411, 412, 413, 414, 415, 416, - 417, -1, 419, 420, 421, 422, 423, 424, -1, -1, - 427, -1, -1, 430, 431, 432, 433, 434, 435, 436, - 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, - 447, 448, 449, 3, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 18, 19, - 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, - -1, -1, -1, -1, -1, -1, -1, 37, 38, -1, - 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, - 50, 51, -1, 53, 54, 55, 56, 57, -1, -1, - 60, 61, 62, 63, 64, -1, 66, 67, 68, 69, - 70, -1, 72, -1, 74, 75, 76, 77, 78, 79, - 80, 81, 82, -1, 84, 85, 86, 87, 88, 89, - -1, 91, 92, 93, 94, -1, -1, -1, 98, -1, - -1, 101, 102, 103, 104, 105, 106, 107, 108, 109, - 110, -1, 112, -1, 114, 115, 116, 117, 118, 119, - -1, 121, 122, 123, 124, -1, -1, 127, 128, 129, - 130, 131, -1, 133, 134, 135, -1, 137, 138, 139, - -1, 141, 142, 143, 144, 145, 146, 147, 148, 149, - -1, 151, -1, 153, 154, 155, 156, -1, 158, -1, - 160, 161, -1, 163, 164, 165, 166, 167, -1, 169, - 170, -1, 172, 173, -1, 175, 176, 177, 178, 179, - 180, 181, 182, 183, 184, -1, 186, 187, 188, 189, - 190, 191, -1, 193, 194, 195, 196, 197, 198, 199, - 200, 201, -1, 203, -1, 205, 206, 207, 208, 209, - 210, 211, 212, 213, 214, -1, -1, 217, 218, 219, - 220, 221, -1, 223, 224, 225, -1, -1, 228, 229, - 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, - 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, - 250, -1, 252, 253, 254, 255, -1, 257, 258, 259, - 260, 261, 262, -1, 264, 265, -1, -1, 268, 269, - 270, -1, -1, 273, 274, 275, 276, 277, 278, 279, - 280, 281, 282, 283, 284, 285, 286, 287, -1, 289, - 290, 291, 292, 293, 294, 295, 296, -1, 298, 299, - 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, - 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, - 320, 321, 322, 323, 324, -1, 326, 327, 328, 329, - 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, - 340, 341, -1, 343, 344, 345, 346, 347, 348, 349, - 350, 351, 352, 353, 354, 355, 356, 357, 358, -1, - 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, - 370, 371, 372, -1, 374, 375, -1, 377, 378, 379, - 380, 381, 382, 383, -1, 385, 386, -1, -1, 389, - 390, 391, 392, 393, -1, 395, 396, 397, 398, 399, - 400, 401, -1, -1, 404, 405, 406, 407, 408, -1, - -1, 411, 412, 413, 414, 415, 416, 417, -1, 419, - 420, 421, 422, 423, 424, -1, -1, 427, -1, -1, - 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, - 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, - 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 18, 19, 20, 21, 22, - 23, 24, 25, 26, 27, 28, 29, -1, -1, -1, - -1, -1, -1, -1, 37, 38, -1, 40, 41, 42, - 43, 44, 45, 46, 47, 48, 49, 50, 51, -1, - 53, 54, 55, 56, 57, -1, -1, 60, 61, 62, - 63, 64, -1, 66, 67, 68, 69, 70, -1, 72, - -1, 74, 75, 76, 77, 78, 79, 80, 81, 82, - -1, 84, 85, 86, 87, 88, 89, -1, 91, 92, - 93, 94, -1, -1, -1, 98, -1, -1, 101, 102, - 103, 104, 105, 106, 107, 108, 109, 110, -1, 112, - -1, 114, 115, 116, 117, 118, 119, -1, 121, 122, - 123, 124, -1, -1, 127, 128, 129, 130, 131, -1, - 133, 134, 135, -1, 137, 138, 139, -1, 141, 142, - 143, 144, 145, 146, 147, 148, 149, -1, 151, -1, - 153, 154, 155, 156, -1, 158, -1, 160, 161, -1, - 163, 164, 165, 166, 167, -1, 169, 170, -1, 172, - 173, -1, 175, 176, 177, 178, 179, 180, 181, 182, - 183, 184, -1, 186, 187, 188, 189, 190, 191, -1, - 193, 194, 195, 196, 197, 198, 199, 200, 201, -1, - 203, -1, 205, 206, 207, 208, 209, 210, 211, 212, - 213, 214, -1, -1, 217, 218, 219, 220, 221, -1, - 223, 224, 225, -1, -1, 228, 229, 230, 231, 232, - 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, - 243, 244, 245, 246, 247, 248, 249, 250, -1, 252, - 253, 254, 255, -1, 257, 258, 259, 260, 261, 262, - -1, 264, 265, -1, -1, 268, 269, 270, -1, -1, - 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, - 283, 284, 285, 286, 287, -1, 289, 290, 291, 292, - 293, 294, 295, 296, -1, 298, 299, 300, 301, 302, - 303, 304, 305, 306, 307, 308, 309, 310, 311, -1, - 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, - 323, 324, -1, 326, 327, 328, 329, 330, 331, 332, - 333, 334, 335, 336, 337, 338, 339, 340, 341, -1, - 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, - 353, 354, 355, 356, 357, 358, -1, 360, 361, 362, - 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, - -1, 374, 375, -1, 377, 378, 379, 380, 381, 382, - 383, -1, 385, 386, -1, -1, 389, 390, 391, 392, - 393, -1, 395, 396, 397, 398, 399, 400, 401, -1, - -1, 404, 405, 406, 407, 408, -1, -1, 411, 412, - 413, 414, 415, 416, 417, -1, 419, 420, 421, 422, - 423, 424, -1, -1, 427, -1, -1, 430, 431, 432, - 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, - 443, 444, 445, 446, 447, 448, 449, 3, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 18, 19, 20, 21, 22, 23, 24, 25, - -1, 27, 28, 29, -1, -1, -1, -1, -1, -1, - -1, 37, 38, -1, 40, 41, 42, 43, 44, 45, - 46, 47, 48, 49, 50, 51, -1, 53, 54, 55, - 56, 57, -1, -1, 60, 61, 62, 63, 64, -1, - 66, 67, 68, 69, 70, -1, 72, -1, 74, 75, - 76, 77, 78, 79, 80, 81, 82, -1, 84, 85, - 86, 87, 88, 89, -1, 91, 92, 93, 94, -1, - -1, -1, 98, -1, -1, 101, 102, 103, 104, 105, - 106, 107, 108, 109, 110, -1, 112, -1, 114, 115, - 116, 117, 118, 119, -1, 121, 122, 123, 124, -1, - -1, 127, 128, 129, 130, 131, -1, 133, 134, 135, - -1, 137, 138, 139, -1, 141, 142, 143, 144, 145, - 146, 147, 148, 149, -1, 151, -1, 153, 154, 155, - 156, -1, 158, -1, 160, 161, -1, 163, 164, 165, - 166, 167, -1, 169, 170, -1, 172, 173, -1, 175, - 176, 177, 178, 179, 180, 181, 182, 183, 184, -1, - 186, 187, 188, 189, 190, 191, -1, 193, 194, 195, - 196, 197, 198, 199, 200, 201, -1, 203, -1, 205, - 206, 207, 208, 209, 210, 211, 212, 213, 214, -1, - -1, 217, 218, 219, 220, 221, -1, 223, 224, 225, - -1, -1, 228, 229, 230, 231, 232, 233, 234, 235, - 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, - 246, 247, 248, 249, 250, -1, 252, 253, 254, 255, - -1, 257, 258, 259, 260, 261, 262, -1, 264, 265, - -1, -1, 268, 269, 270, -1, -1, 273, 274, 275, - 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, - 286, 287, -1, 289, 290, 291, 292, 293, 294, 295, - 296, -1, 298, 299, 300, 301, 302, 303, 304, 305, - 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, - 316, 317, 318, 319, 320, 321, 322, 323, 324, -1, - 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, - 336, 337, 338, 339, 340, 341, -1, 343, 344, 345, - 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, - 356, 357, 358, -1, 360, 361, 362, 363, 364, 365, - 366, 367, 368, 369, 370, 371, 372, -1, 374, 375, - -1, 377, 378, 379, 380, 381, 382, 383, -1, 385, - 386, -1, -1, 389, 390, 391, 392, 393, -1, 395, - 396, 397, 398, 399, 400, 401, -1, -1, 404, 405, - 406, 407, 408, 409, -1, 411, 412, 413, 414, 415, - 416, 417, -1, 419, 420, 421, 422, 423, 424, -1, - -1, 427, -1, -1, 430, 431, 432, 433, 434, 435, - 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, - 446, 447, 448, 449, 3, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 18, - 19, 20, 21, 22, 23, 24, 25, -1, 27, 28, - 29, -1, -1, -1, -1, -1, -1, -1, 37, 38, - -1, 40, 41, 42, 43, 44, 45, 46, 47, 48, - 49, 50, 51, -1, 53, 54, 55, 56, 57, -1, - -1, 60, 61, 62, 63, 64, -1, 66, 67, 68, - 69, 70, -1, 72, -1, 74, 75, 76, 77, 78, - 79, 80, 81, 82, -1, 84, 85, 86, 87, 88, - 89, -1, 91, 92, 93, 94, -1, -1, -1, 98, - -1, -1, 101, 102, 103, 104, 105, 106, 107, 108, - 109, 110, -1, 112, -1, 114, 115, 116, 117, 118, - 119, -1, 121, 122, 123, 124, -1, -1, 127, 128, - 129, 130, 131, -1, 133, 134, 135, -1, 137, 138, - 139, -1, 141, 142, 143, 144, 145, 146, 147, 148, - 149, -1, 151, -1, 153, 154, 155, 156, -1, 158, - -1, 160, 161, -1, 163, 164, 165, 166, 167, -1, - 169, 170, 171, 172, 173, -1, 175, 176, 177, 178, - 179, 180, 181, 182, 183, 184, -1, 186, 187, 188, - 189, 190, 191, -1, 193, 194, 195, 196, 197, 198, - 199, 200, 201, -1, 203, -1, 205, 206, 207, 208, - 209, 210, 211, 212, 213, 214, -1, -1, 217, 218, - 219, 220, 221, -1, 223, 224, 225, -1, -1, 228, - 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, - 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, - 249, 250, -1, 252, 253, 254, 255, -1, 257, 258, - 259, 260, 261, 262, -1, 264, 265, -1, -1, 268, - 269, 270, -1, -1, 273, 274, 275, 276, 277, 278, - 279, 280, 281, 282, 283, 284, 285, 286, 287, -1, - 289, 290, 291, 292, 293, 294, 295, 296, -1, 298, - 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, - 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, - 319, 320, 321, 322, 323, 324, -1, 326, 327, 328, - 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, - 339, 340, 341, -1, 343, 344, 345, 346, 347, 348, - 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, - -1, 360, 361, 362, 363, 364, 365, 366, 367, 368, - 369, 370, 371, 372, -1, 374, 375, -1, 377, 378, - 379, 380, 381, 382, 383, -1, 385, 386, -1, -1, - 389, 390, 391, 392, 393, -1, 395, 396, 397, 398, - 399, 400, 401, -1, -1, 404, 405, 406, 407, 408, - -1, -1, 411, 412, 413, 414, 415, 416, 417, -1, - 419, 420, 421, 422, 423, 424, -1, -1, 427, -1, - -1, 430, 431, 432, 433, 434, 435, 436, 437, 438, - 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, - 449, 3, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 18, 19, 20, 21, - 22, 23, 24, 25, -1, 27, 28, 29, -1, -1, - -1, -1, -1, -1, -1, 37, 38, -1, 40, 41, - 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, - -1, 53, 54, 55, 56, 57, -1, -1, 60, 61, - 62, 63, 64, -1, 66, 67, 68, 69, 70, -1, - 72, -1, 74, 75, 76, 77, 78, 79, 80, 81, - 82, -1, 84, 85, 86, 87, 88, 89, -1, 91, - 92, 93, 94, -1, -1, -1, 98, -1, -1, 101, - 102, 103, 104, 105, 106, 107, 108, 109, 110, -1, - 112, -1, 114, 115, 116, 117, 118, 119, -1, 121, - 122, 123, 124, -1, -1, 127, 128, 129, 130, 131, - -1, 133, 134, 135, -1, 137, 138, 139, -1, 141, - 142, 143, 144, 145, 146, 147, 148, 149, -1, 151, - -1, 153, 154, 155, 156, -1, 158, -1, 160, 161, - -1, 163, 164, 165, 166, 167, -1, 169, 170, -1, - 172, 173, -1, 175, 176, 177, 178, 179, 180, 181, - 182, 183, 184, -1, 186, 187, 188, 189, 190, 191, - -1, 193, 194, 195, 196, 197, 198, 199, 200, 201, - -1, 203, -1, 205, 206, 207, 208, 209, 210, 211, - 212, 213, 214, -1, -1, 217, 218, 219, 220, 221, - -1, 223, 224, 225, -1, -1, 228, 229, 230, 231, + 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, + 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, + 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, + 471, 3, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 22, 23, 24, 25, 26, 27, 28, 29, -1, 31, + 32, 33, -1, -1, -1, -1, -1, -1, -1, 41, + 42, -1, 44, 45, 46, 47, 48, 49, 50, 51, + 52, 53, 54, 55, -1, 57, 58, 59, 60, 61, + 62, -1, 64, 65, 66, 67, 68, 69, -1, 71, + 72, 73, 74, 75, -1, 77, -1, 79, 80, 81, + 82, 83, 84, 85, 86, 87, -1, 89, 90, 91, + 92, 93, 94, -1, 96, 97, 98, 99, 100, 101, + 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, + 112, 113, 114, 115, -1, 117, -1, 119, 120, 121, + 122, 123, 124, -1, 126, 127, 128, 129, -1, -1, + 132, 133, 134, 135, 136, -1, 138, 139, 140, -1, + 142, 143, 144, -1, 146, 147, 148, 149, 150, 151, + 152, 153, 154, 155, -1, 157, -1, 159, 160, 161, + 162, -1, 164, -1, 166, 167, -1, 169, 170, 171, + 172, 173, -1, 175, 176, -1, 178, 179, 180, -1, + 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, + -1, 193, 194, 195, 196, 197, 198, 199, -1, 201, + 202, 203, 204, 205, 206, 207, 208, 209, -1, 211, + -1, 213, 214, 215, 216, 217, 218, 219, 220, 221, + 222, -1, -1, 225, 226, 227, 228, 229, -1, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, - 242, 243, 244, 245, 246, 247, 248, 249, 250, -1, - 252, 253, 254, 255, -1, 257, 258, 259, 260, 261, - 262, -1, 264, 265, -1, -1, 268, 269, 270, -1, - -1, 273, 274, 275, 276, 277, 278, 279, 280, 281, - 282, 283, 284, 285, 286, 287, -1, 289, 290, 291, - 292, 293, 294, 295, 296, -1, 298, 299, 300, 301, - 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, + 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, + 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, + 262, 263, 264, -1, 266, 267, 268, 269, -1, 271, + 272, 273, 274, 275, 276, -1, 278, 279, -1, -1, + 282, 283, 284, -1, -1, 287, 288, 289, 290, 291, + 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, + 302, -1, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, 321, - 322, 323, 324, -1, 326, 327, 328, 329, 330, 331, - 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, - -1, 343, 344, 345, 346, 347, 348, 349, 350, 351, - 352, 353, 354, 355, 356, 357, 358, -1, 360, 361, + 322, 323, 324, 325, 326, 327, -1, 329, 330, 331, + 332, 333, 334, 335, 336, 337, 338, 339, 340, -1, + 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, + 352, 353, 354, 355, 356, 357, 358, 359, -1, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, - 372, -1, 374, 375, -1, 377, 378, 379, 380, 381, - 382, 383, -1, 385, 386, -1, -1, 389, 390, 391, - 392, 393, -1, 395, 396, 397, 398, 399, 400, 401, - -1, -1, 404, 405, 406, 407, 408, -1, -1, 411, - 412, 413, 414, 415, 416, 417, -1, 419, 420, 421, - 422, 423, 424, -1, -1, 427, -1, -1, 430, 431, - 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, - 442, 443, 444, 445, 446, 447, 448, 449, 3, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 18, 19, 20, 21, 22, 23, 24, - 25, -1, 27, 28, 29, -1, -1, -1, -1, -1, - -1, -1, 37, 38, -1, 40, 41, 42, 43, 44, - 45, 46, 47, 48, 49, 50, 51, -1, 53, 54, - 55, 56, 57, -1, -1, 60, 61, 62, 63, 64, - -1, 66, 67, 68, 69, 70, -1, 72, -1, 74, - 75, 76, 77, 78, 79, 80, 81, 82, -1, 84, - 85, 86, 87, 88, 89, -1, 91, 92, 93, 94, - -1, -1, -1, 98, -1, -1, 101, 102, 103, 104, - 105, 106, 107, 108, 109, 110, -1, 112, -1, 114, - 115, 116, 117, 118, 119, -1, 121, 122, 123, 124, - -1, -1, 127, 128, 129, 130, 131, -1, 133, 134, - 135, -1, 137, 138, 139, -1, 141, 142, 143, 144, - 145, 146, 147, 148, 149, -1, 151, -1, 153, 154, - 155, 156, -1, 158, -1, 160, 161, -1, 163, 164, - 165, 166, 167, -1, 169, 170, -1, 172, 173, -1, - 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, - -1, 186, 187, 188, 189, 190, 191, -1, 193, 194, - 195, 196, 197, 198, 199, 200, 201, -1, 203, -1, - 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, - -1, -1, 217, 218, 219, 220, 221, -1, 223, 224, - 225, -1, -1, 228, 229, 230, 231, 232, 233, 234, - 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, - 245, 246, 247, 248, 249, 250, -1, 252, 253, 254, - 255, -1, 257, 258, 259, 260, 261, 262, -1, 264, - 265, -1, -1, 268, 269, 270, -1, -1, 273, 274, - 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, - 285, 286, 287, -1, 289, 290, 291, 292, 293, 294, - 295, 296, -1, 298, 299, 300, 301, 302, 303, 304, - 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, - 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, - -1, 326, 327, 328, 329, 330, 331, 332, 333, 334, - 335, 336, 337, 338, 339, 340, 341, -1, 343, 344, - 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, - 355, 356, 357, 358, -1, 360, 361, 362, 363, 364, - 365, 366, 367, 368, 369, 370, 371, 372, -1, 374, - 375, -1, 377, 378, 379, 380, 381, 382, 383, -1, - 385, 386, -1, -1, 389, 390, 391, 392, 393, -1, - 395, 396, 397, 398, 399, 400, 401, -1, -1, 404, - 405, 406, 407, 408, -1, -1, 411, 412, 413, 414, - 415, 416, 417, -1, 419, 420, 421, 422, 423, 424, - -1, -1, 427, -1, -1, 430, 431, 432, 433, 434, - 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, - 445, 446, 447, 448, 449, 3, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 18, 19, 20, 21, 22, 23, 24, 25, -1, 27, - 28, 29, -1, -1, -1, -1, -1, -1, -1, 37, - 38, -1, 40, 41, 42, 43, 44, 45, 46, 47, - 48, 49, 50, 51, -1, 53, 54, 55, 56, 57, - -1, -1, 60, 61, 62, 63, 64, -1, 66, 67, - 68, 69, 70, -1, 72, -1, 74, 75, 76, 77, - 78, 79, 80, 81, 82, -1, 84, 85, 86, 87, - 88, 89, -1, 91, 92, 93, 94, -1, -1, -1, - 98, -1, -1, 101, 102, 103, 104, 105, 106, 107, - 108, 109, 110, -1, 112, -1, 114, 115, 116, 117, - 118, 119, -1, 121, 122, 123, 124, -1, -1, 127, - 128, 129, 130, 131, -1, 133, 134, 135, -1, 137, - 138, 139, -1, 141, 142, 143, 144, 145, 146, 147, - 148, 149, -1, 151, -1, 153, 154, 155, 156, -1, - 158, -1, 160, 161, -1, 163, 164, 165, 166, 167, - -1, 169, 170, -1, 172, 173, -1, 175, 176, 177, - 178, 179, 180, 181, 182, 183, 184, -1, 186, 187, - 188, 189, 190, 191, -1, 193, 194, 195, 196, 197, - 198, 199, 200, 201, -1, 203, -1, 205, 206, 207, - 208, 209, 210, 211, 212, 213, 214, -1, -1, 217, - 218, 219, 220, 221, -1, 223, 224, 225, -1, -1, - 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, - 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, - 248, 249, 250, -1, 252, 253, 254, 255, -1, 257, - 258, 259, 260, 261, 262, -1, 264, 265, -1, -1, - 268, 269, 270, -1, -1, 273, 274, 275, 276, 277, - 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, - -1, 289, 290, 291, 292, 293, 294, 295, 296, -1, - 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, - 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, - 318, 319, 320, 321, 322, 323, 324, -1, 326, 327, - 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, - 338, 339, 340, 341, -1, 343, 344, 345, 346, 347, - 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, - 358, -1, 360, 361, 362, 363, 364, 365, 366, 367, - 368, 369, 370, 371, 372, -1, 374, 375, -1, 377, - 378, 379, 380, 381, 382, 383, -1, 385, 386, -1, - -1, 389, 390, 391, 392, 393, -1, 395, 396, 397, - 398, 399, 400, 401, -1, -1, 404, 405, 406, 407, - 408, -1, -1, 411, 412, 413, 414, 415, 416, 417, - -1, 419, 420, 421, 422, 423, 424, -1, -1, 427, - -1, -1, 430, 431, 432, 433, 434, 435, 436, 437, - 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, - 448, 449, 3, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 18, 19, 20, - 21, 22, 23, 24, 25, -1, 27, 28, 29, -1, - -1, -1, -1, -1, -1, -1, 37, 38, -1, 40, - 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, - 51, -1, 53, 54, 55, 56, 57, -1, -1, 60, - 61, 62, 63, 64, -1, 66, 67, 68, 69, 70, - -1, 72, -1, 74, 75, 76, 77, 78, 79, 80, - 81, 82, -1, 84, 85, 86, 87, 88, 89, -1, - 91, 92, 93, 94, -1, -1, -1, 98, -1, -1, - 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, - -1, 112, -1, 114, 115, 116, 117, 118, 119, -1, - 121, 122, 123, 124, -1, -1, 127, 128, 129, 130, - 131, -1, 133, 134, 135, -1, 137, 138, 139, -1, - 141, 142, 143, 144, 145, 146, 147, 148, 149, -1, - 151, -1, 153, 154, 155, 156, -1, 158, -1, 160, - 161, -1, 163, 164, 165, 166, 167, -1, 169, 170, - -1, 172, 173, -1, 175, 176, 177, 178, 179, 180, - 181, 182, 183, 184, -1, 186, 187, 188, 189, 190, - 191, -1, 193, 194, 195, 196, 197, 198, 199, 200, - 201, -1, 203, -1, 205, 206, 207, 208, 209, 210, - 211, 212, 213, 214, -1, -1, 217, 218, 219, 220, - 221, -1, 223, 224, 225, -1, -1, 228, 229, 230, - 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, - 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, - -1, 252, 253, 254, 255, -1, 257, 258, 259, 260, - 261, 262, -1, 264, 265, -1, -1, 268, 269, 270, - -1, -1, 273, 274, 275, 276, 277, 278, 279, 280, - 281, 282, 283, 284, 285, 286, 287, -1, 289, 290, - 291, 292, 293, 294, 295, 296, -1, 298, 299, 300, - 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, - 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, - 321, 322, 323, 324, -1, 326, 327, 328, 329, 330, - 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, - 341, -1, 343, 344, 345, 346, 347, 348, 349, 350, - 351, 352, 353, 354, 355, 356, 357, 358, -1, 360, - 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, - 371, 372, -1, 374, 375, -1, 377, 378, 379, 380, - 381, 382, 383, -1, 385, 386, -1, -1, 389, 390, - 391, 392, 393, -1, 395, 396, 397, 398, 399, 400, - 401, -1, -1, 404, 405, 406, 407, 408, -1, -1, - 411, 412, 413, 414, 415, 416, 417, -1, 419, 420, - 421, 422, 423, 424, -1, -1, 427, -1, -1, 430, - 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, - 441, 442, 443, 444, 445, 446, 447, 448, 449, 3, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 18, 19, 20, 21, 22, 23, - 24, 25, -1, 27, 28, 29, -1, -1, -1, -1, - -1, -1, -1, 37, 38, -1, 40, 41, 42, 43, - 44, 45, 46, 47, 48, 49, 50, 51, -1, 53, - 54, 55, 56, 57, -1, -1, 60, 61, 62, 63, - 64, -1, 66, 67, 68, 69, 70, -1, 72, -1, - 74, 75, 76, 77, 78, 79, 80, 81, 82, -1, - 84, 85, 86, 87, 88, 89, -1, 91, 92, 93, - 94, -1, -1, -1, 98, -1, -1, 101, 102, 103, - 104, 105, 106, 107, 108, 109, 110, -1, 112, -1, - 114, 115, 116, 117, 118, 119, -1, 121, 122, 123, - 124, -1, -1, 127, 128, 129, 130, 131, -1, 133, - 134, 135, -1, 137, 138, 139, -1, 141, 142, 143, - 144, 145, 146, 147, 148, 149, -1, 151, -1, 153, - 154, 155, 156, -1, 158, -1, 160, 161, -1, 163, - 164, 165, 166, 167, -1, 169, 170, -1, 172, 173, - -1, 175, 176, 177, 178, 179, 180, 181, 182, 183, - 184, -1, 186, 187, 188, 189, 190, 191, -1, 193, - 194, 195, 196, 197, 198, 199, 200, 201, -1, 203, - -1, 205, 206, 207, 208, 209, 210, 211, 212, 213, - 214, -1, -1, 217, 218, 219, 220, 221, -1, 223, - 224, 225, -1, -1, 228, 229, 230, 231, 232, 233, - 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, - 244, 245, 246, 247, 248, 249, 250, -1, 252, 253, - 254, 255, -1, 257, 258, 259, 260, 261, 262, -1, - 264, 265, -1, -1, 268, 269, 270, -1, -1, 273, - 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, - 284, 285, 286, 287, -1, 289, 290, 291, 292, 293, - 294, 295, 296, -1, 298, 299, 300, 301, 302, 303, + 372, 373, 374, 375, 376, -1, 378, 379, 380, 381, + 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, + 392, -1, 394, 395, -1, 397, 398, 399, 400, 401, + 402, 403, -1, 405, 406, 407, -1, -1, 410, 411, + 412, 413, 414, -1, 416, 417, 418, 419, 420, 421, + 422, 423, -1, -1, 426, 427, 428, 429, 430, 431, + -1, 433, 434, 435, 436, 437, 438, 439, -1, 441, + 442, 443, 444, 445, 446, -1, -1, 449, -1, -1, + 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, + 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, + 3, -1, -1, 6, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, + 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, + 33, -1, -1, -1, -1, -1, -1, -1, 41, 42, + -1, 44, 45, 46, 47, 48, 49, 50, 51, 52, + 53, 54, 55, -1, 57, 58, 59, 60, 61, 62, + -1, -1, 65, 66, 67, 68, 69, -1, 71, 72, + 73, 74, 75, -1, 77, -1, 79, 80, 81, 82, + 83, 84, 85, 86, 87, -1, 89, 90, 91, 92, + 93, 94, -1, 96, 97, 98, 99, -1, -1, -1, + 103, -1, -1, -1, 107, 108, 109, 110, 111, 112, + 113, 114, 115, -1, 117, -1, 119, 120, 121, 122, + 123, 124, -1, 126, 127, 128, 129, -1, -1, 132, + 133, 134, 135, 136, -1, 138, 139, 140, -1, 142, + 143, 144, -1, 146, 147, 148, 149, 150, 151, 152, + 153, 154, 155, 156, 157, -1, 159, 160, 161, 162, + -1, 164, -1, 166, 167, -1, 169, 170, 171, 172, + 173, -1, 175, 176, -1, 178, 179, 180, -1, 182, + 183, 184, 185, 186, 187, 188, 189, 190, 191, -1, + 193, 194, 195, 196, 197, 198, 199, -1, 201, 202, + 203, 204, 205, 206, 207, 208, 209, -1, 211, -1, + 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, + -1, -1, 225, 226, 227, 228, 229, -1, 231, 232, + 233, -1, -1, 236, 237, 238, 239, 240, 241, 242, + 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, + 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, + 263, 264, -1, 266, 267, 268, 269, -1, 271, 272, + 273, 274, 275, 276, -1, 278, 279, 280, -1, 282, + 283, 284, -1, -1, 287, 288, 289, 290, 291, 292, + 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, + -1, 304, 305, 306, 307, 308, 309, 310, 311, -1, + 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, + 323, 324, 325, 326, 327, -1, 329, 330, 331, 332, + 333, 334, 335, 336, 337, 338, 339, 340, -1, 342, + 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, + 353, 354, 355, 356, 357, 358, 359, -1, 361, 362, + 363, 364, 365, -1, 367, 368, 369, 370, 371, 372, + 373, 374, 375, 376, -1, 378, 379, 380, 381, 382, + 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, + -1, 394, 395, -1, 397, 398, 399, 400, 401, 402, + 403, -1, 405, 406, 407, -1, -1, 410, 411, 412, + 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, + 423, -1, -1, 426, 427, 428, 429, 430, -1, -1, + 433, 434, 435, 436, 437, 438, 439, -1, 441, 442, + 443, 444, 445, 446, -1, -1, 449, -1, -1, 452, + 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, + 463, 464, 465, 466, 467, 468, 469, 470, 471, 3, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, + 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, + -1, -1, -1, -1, -1, -1, -1, 41, 42, -1, + 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, + 54, 55, -1, 57, 58, 59, 60, 61, 62, -1, + -1, 65, 66, 67, 68, 69, -1, 71, 72, 73, + 74, 75, -1, 77, -1, 79, 80, 81, 82, 83, + 84, 85, 86, 87, -1, 89, 90, 91, 92, 93, + 94, -1, 96, 97, 98, 99, -1, -1, -1, 103, + -1, -1, 106, 107, 108, 109, 110, 111, 112, 113, + 114, 115, -1, 117, -1, 119, 120, 121, 122, 123, + 124, -1, 126, 127, 128, 129, -1, -1, 132, 133, + 134, 135, 136, -1, 138, 139, 140, -1, 142, 143, + 144, -1, 146, 147, 148, 149, 150, 151, 152, 153, + 154, 155, -1, 157, -1, 159, 160, 161, 162, -1, + 164, -1, 166, 167, -1, 169, 170, 171, 172, 173, + -1, 175, 176, -1, 178, 179, 180, -1, 182, 183, + 184, 185, 186, 187, 188, 189, 190, 191, -1, 193, + 194, 195, 196, 197, 198, 199, -1, 201, 202, 203, + 204, 205, 206, 207, 208, 209, -1, 211, -1, 213, + 214, 215, 216, 217, 218, 219, 220, 221, 222, -1, + -1, 225, 226, 227, 228, 229, -1, 231, 232, 233, + -1, -1, 236, 237, 238, 239, 240, 241, 242, 243, + 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, + 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, + 264, -1, 266, 267, 268, 269, -1, 271, 272, 273, + 274, 275, 276, -1, 278, 279, -1, -1, 282, 283, + 284, -1, -1, 287, 288, 289, 290, 291, 292, 293, + 294, 295, 296, 297, 298, 299, 300, 301, 302, -1, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, - 324, -1, 326, 327, 328, 329, 330, 331, 332, 333, - 334, 335, 336, 337, 338, 339, 340, 341, -1, 343, + 324, 325, 326, 327, -1, 329, 330, 331, 332, 333, + 334, 335, 336, 337, 338, 339, 340, -1, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, - 354, 355, 356, 357, 358, -1, 360, 361, 362, 363, - 364, 365, 366, 367, 368, 369, 370, 371, 372, -1, - 374, 375, -1, 377, 378, 379, 380, 381, 382, 383, - -1, 385, 386, -1, -1, 389, 390, 391, 392, 393, - -1, 395, 396, 397, 398, 399, 400, 401, -1, -1, - 404, 405, 406, 407, 408, -1, -1, 411, 412, 413, - 414, 415, 416, 417, -1, 419, 420, 421, 422, 423, - 424, -1, -1, 427, -1, -1, 430, 431, 432, 433, - 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, - 444, 445, 446, 447, 448, 449, 3, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 18, 19, 20, 21, 22, 23, 24, 25, -1, - 27, 28, 29, 30, 31, -1, -1, -1, -1, -1, - 37, 38, -1, 40, 41, 42, 43, 44, 45, 46, - 47, 48, 49, 50, 51, -1, 53, 54, 55, 56, - 57, -1, -1, 60, 61, 62, 63, 64, -1, 66, - 67, 68, 69, 70, -1, 72, -1, 74, 75, 76, - 77, 78, 79, 80, 81, 82, -1, 84, 85, 86, - 87, 88, 89, -1, 91, 92, 93, 94, -1, -1, - -1, 98, -1, -1, -1, 102, 103, 104, 105, 106, - 107, 108, 109, 110, -1, 112, -1, 114, 115, 116, - 117, 118, 119, -1, 121, 122, 123, 124, -1, -1, - 127, 128, 129, 130, 131, -1, 133, 134, 135, -1, - 137, 138, 139, -1, 141, 142, 143, 144, 145, 146, - 147, 148, 149, -1, 151, -1, 153, 154, 155, 156, - -1, 158, -1, 160, 161, -1, 163, 164, 165, 166, - 167, -1, 169, 170, -1, 172, 173, -1, 175, 176, - 177, 178, 179, 180, 181, 182, 183, 184, -1, 186, - 187, 188, 189, 190, 191, -1, 193, 194, 195, 196, - 197, 198, 199, 200, 201, -1, 203, -1, 205, 206, - 207, 208, 209, 210, 211, 212, 213, 214, -1, -1, - 217, 218, 219, 220, 221, -1, 223, 224, 225, -1, - -1, 228, 229, 230, 231, 232, 233, 234, 235, 236, - 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, - 247, 248, 249, 250, -1, 252, 253, 254, 255, -1, - 257, 258, 259, 260, 261, 262, -1, 264, 265, -1, - -1, 268, 269, 270, -1, -1, 273, 274, 275, 276, - 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, - 287, -1, 289, 290, 291, 292, 293, 294, 295, 296, - -1, 298, 299, 300, 301, 302, 303, 304, 305, 306, - 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, - 317, 318, 319, 320, 321, 322, 323, 324, -1, 326, - 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, - 337, 338, 339, 340, 341, -1, 343, 344, 345, 346, - 347, -1, 349, 350, 351, 352, 353, 354, 355, 356, - 357, 358, -1, 360, 361, 362, 363, 364, 365, 366, - 367, 368, 369, 370, 371, 372, -1, 374, 375, -1, - 377, 378, 379, 380, 381, 382, 383, -1, 385, 386, - -1, -1, 389, 390, 391, 392, 393, -1, 395, 396, - 397, 398, 399, 400, 401, -1, -1, 404, 405, 406, - 407, 408, -1, -1, 411, 412, 413, 414, 415, 416, - 417, -1, 419, 420, 421, 422, 423, 424, -1, -1, - 427, -1, -1, 430, 431, 432, 433, 434, 435, 436, - 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, - 447, 448, 449, 3, -1, 5, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 18, 19, - 20, 21, 22, 23, 24, 25, -1, 27, 28, 29, - -1, -1, -1, -1, -1, -1, -1, 37, 38, -1, - 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, - 50, 51, -1, 53, 54, 55, 56, 57, -1, -1, - 60, 61, 62, 63, 64, -1, 66, 67, 68, 69, - 70, -1, 72, -1, 74, 75, 76, 77, 78, 79, - 80, 81, 82, -1, 84, 85, 86, 87, 88, 89, - -1, 91, 92, 93, 94, -1, -1, -1, 98, -1, - -1, -1, 102, 103, 104, 105, 106, 107, 108, 109, - 110, -1, 112, -1, 114, 115, 116, 117, 118, 119, - -1, 121, 122, 123, 124, -1, -1, 127, 128, 129, - 130, 131, -1, 133, 134, 135, -1, 137, 138, 139, - -1, 141, 142, 143, 144, 145, 146, 147, 148, 149, - -1, 151, -1, 153, 154, 155, 156, -1, 158, -1, - 160, 161, -1, 163, 164, 165, 166, 167, -1, 169, - 170, -1, 172, 173, -1, 175, 176, 177, 178, 179, - 180, 181, 182, 183, 184, -1, 186, 187, 188, 189, - 190, 191, -1, 193, 194, 195, 196, 197, 198, 199, - 200, 201, -1, 203, -1, 205, 206, 207, 208, 209, - 210, 211, 212, 213, 214, -1, -1, 217, 218, 219, - 220, 221, -1, 223, 224, 225, -1, -1, 228, 229, - 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, - 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, - 250, -1, 252, 253, 254, 255, -1, 257, 258, 259, - 260, 261, 262, -1, 264, 265, -1, -1, 268, 269, - 270, -1, -1, 273, 274, 275, 276, 277, 278, 279, - 280, 281, 282, 283, 284, 285, 286, 287, -1, 289, - 290, 291, 292, 293, 294, 295, 296, -1, 298, 299, - 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, - 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, - 320, 321, 322, 323, 324, -1, 326, 327, 328, 329, - 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, - 340, 341, -1, 343, 344, 345, 346, 347, -1, 349, - 350, 351, 352, 353, 354, 355, 356, 357, 358, -1, - 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, - 370, 371, 372, -1, 374, 375, -1, 377, 378, 379, - 380, 381, 382, 383, -1, 385, 386, -1, -1, 389, - 390, 391, 392, 393, -1, 395, 396, 397, 398, 399, - 400, 401, -1, -1, 404, 405, 406, 407, 408, -1, - -1, 411, 412, 413, 414, 415, 416, 417, -1, 419, - 420, 421, 422, 423, 424, -1, -1, 427, -1, -1, - 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, - 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, - 3, -1, 5, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 18, 19, 20, 21, 22, - 23, 24, 25, -1, 27, 28, 29, -1, -1, -1, - -1, -1, -1, -1, 37, 38, -1, 40, 41, 42, - 43, 44, 45, 46, 47, 48, 49, 50, 51, -1, - 53, 54, 55, 56, 57, -1, -1, 60, 61, 62, - 63, 64, -1, 66, 67, 68, 69, 70, -1, 72, - -1, 74, 75, 76, 77, 78, 79, 80, 81, 82, - -1, 84, 85, 86, 87, 88, 89, -1, 91, 92, - 93, 94, -1, -1, -1, 98, -1, -1, -1, 102, - 103, 104, 105, 106, 107, 108, 109, 110, -1, 112, - -1, 114, 115, 116, 117, 118, 119, -1, 121, 122, - 123, 124, -1, -1, 127, 128, 129, 130, 131, -1, - 133, 134, 135, -1, 137, 138, 139, -1, 141, 142, - 143, 144, 145, 146, 147, 148, 149, -1, 151, -1, - 153, 154, 155, 156, -1, 158, -1, 160, 161, -1, - 163, 164, 165, 166, 167, -1, 169, 170, -1, 172, - 173, -1, 175, 176, 177, 178, 179, 180, 181, 182, - 183, 184, -1, 186, 187, 188, 189, 190, 191, -1, - 193, 194, 195, 196, 197, 198, 199, 200, 201, -1, - 203, -1, 205, 206, 207, 208, 209, 210, 211, 212, - 213, 214, -1, -1, 217, 218, 219, 220, 221, -1, - 223, 224, 225, -1, -1, 228, 229, 230, 231, 232, - 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, - 243, 244, 245, 246, 247, 248, 249, 250, -1, 252, - 253, 254, 255, -1, 257, 258, 259, 260, 261, 262, - -1, 264, 265, -1, -1, 268, 269, 270, -1, -1, - 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, - 283, 284, 285, 286, 287, -1, 289, 290, 291, 292, - 293, 294, 295, 296, -1, 298, 299, 300, 301, 302, - 303, 304, 305, 306, 307, 308, 309, 310, 311, -1, - 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, - 323, 324, -1, 326, 327, 328, 329, 330, 331, 332, - 333, 334, 335, 336, 337, 338, 339, 340, 341, -1, - 343, 344, 345, 346, 347, -1, 349, 350, 351, 352, - 353, 354, 355, 356, 357, 358, -1, 360, 361, 362, - 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, - -1, 374, 375, -1, 377, 378, 379, 380, 381, 382, - 383, -1, 385, 386, -1, -1, 389, 390, 391, 392, - 393, -1, 395, 396, 397, 398, 399, 400, 401, -1, - -1, 404, 405, 406, 407, 408, -1, -1, 411, 412, - 413, 414, 415, 416, 417, -1, 419, 420, 421, 422, - 423, 424, -1, -1, 427, -1, -1, 430, 431, 432, - 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, - 443, 444, 445, 446, 447, 448, 449, 3, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 18, 19, 20, 21, 22, 23, 24, 25, - -1, 27, 28, 29, -1, -1, -1, -1, -1, -1, - -1, 37, 38, -1, 40, 41, 42, 43, 44, 45, - 46, 47, 48, 49, 50, 51, -1, 53, 54, 55, - 56, 57, -1, -1, 60, 61, 62, 63, 64, -1, - 66, 67, 68, 69, 70, -1, 72, -1, 74, 75, - 76, 77, 78, 79, 80, 81, 82, -1, 84, 85, - 86, 87, 88, 89, -1, 91, 92, 93, 94, -1, - -1, -1, 98, -1, -1, -1, 102, 103, 104, 105, - 106, 107, 108, 109, 110, -1, 112, -1, 114, 115, - 116, 117, 118, 119, -1, 121, 122, 123, 124, -1, - -1, 127, 128, 129, 130, 131, -1, 133, 134, 135, - -1, 137, 138, 139, -1, 141, 142, 143, 144, 145, - 146, 147, 148, 149, -1, 151, -1, 153, 154, 155, - 156, -1, 158, -1, 160, 161, -1, 163, 164, 165, - 166, 167, -1, 169, 170, -1, 172, 173, -1, 175, - 176, 177, 178, 179, 180, 181, 182, 183, 184, -1, - 186, 187, 188, 189, 190, 191, -1, 193, 194, 195, - 196, 197, 198, 199, 200, 201, -1, 203, -1, 205, - 206, 207, 208, 209, 210, 211, 212, 213, 214, -1, - -1, 217, 218, 219, 220, 221, -1, 223, 224, 225, - -1, -1, 228, 229, 230, 231, 232, 233, 234, 235, - 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, - 246, 247, 248, 249, 250, -1, 252, 253, 254, 255, - -1, 257, 258, 259, 260, 261, 262, -1, 264, 265, - -1, -1, 268, 269, 270, -1, -1, 273, 274, 275, - 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, - 286, 287, -1, 289, 290, 291, 292, 293, 294, 295, - 296, -1, 298, 299, 300, 301, 302, 303, 304, 305, - 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, - 316, 317, 318, 319, 320, 321, 322, 323, 324, -1, - 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, - 336, 337, 338, 339, 340, 341, -1, 343, 344, 345, - 346, 347, -1, 349, 350, 351, 352, 353, 354, 355, - 356, 357, 358, -1, 360, 361, 362, 363, 364, 365, - 366, 367, 368, 369, 370, 371, 372, -1, 374, 375, - -1, 377, 378, 379, 380, 381, 382, 383, -1, 385, - 386, -1, -1, 389, 390, 391, 392, 393, -1, 395, - 396, 397, 398, 399, 400, 401, -1, -1, 404, 405, - 406, 407, 408, -1, -1, 411, 412, 413, 414, 415, - 416, 417, -1, 419, 420, 421, 422, 423, 424, -1, - -1, 427, -1, -1, 430, 431, 432, 433, 434, 435, - 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, - 446, 447, 448, 449, 3, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 18, - 19, 20, 21, 22, 23, 24, 25, -1, 27, 28, - 29, -1, -1, -1, -1, -1, -1, -1, 37, 38, - -1, 40, 41, 42, 43, 44, 45, 46, 47, 48, - 49, 50, 51, -1, 53, 54, 55, 56, 57, -1, - -1, 60, 61, 62, 63, 64, -1, 66, 67, 68, - 69, 70, -1, 72, -1, 74, 75, 76, 77, 78, - 79, 80, 81, 82, -1, 84, 85, 86, 87, 88, - 89, -1, 91, 92, 93, 94, -1, -1, -1, 98, - -1, -1, -1, 102, 103, 104, 105, 106, 107, 108, - 109, 110, -1, 112, -1, 114, 115, 116, 117, 118, - 119, -1, 121, 122, 123, 124, -1, -1, 127, 128, - 129, 130, 131, -1, 133, 134, 135, -1, 137, 138, - 139, -1, 141, 142, 143, 144, 145, 146, 147, 148, - 149, -1, 151, -1, 153, 154, 155, 156, -1, 158, - -1, 160, 161, -1, 163, 164, 165, 166, 167, -1, - 169, 170, -1, 172, 173, -1, 175, 176, 177, 178, - 179, 180, 181, 182, 183, 184, -1, 186, 187, 188, - 189, 190, 191, -1, 193, 194, 195, 196, 197, 198, - 199, 200, 201, -1, 203, -1, 205, 206, 207, 208, - 209, 210, 211, 212, 213, 214, -1, -1, 217, 218, - 219, 220, 221, -1, 223, 224, 225, -1, -1, 228, - 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, - 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, - 249, 250, -1, 252, 253, 254, 255, -1, 257, 258, - 259, 260, 261, 262, -1, 264, 265, -1, -1, 268, - 269, 270, -1, -1, 273, 274, 275, 276, 277, 278, - 279, 280, 281, 282, 283, 284, 285, 286, 287, -1, - 289, 290, 291, 292, 293, 294, 295, 296, -1, 298, - 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, - 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, - 319, 320, 321, 322, 323, 324, -1, 326, 327, 328, - 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, - 339, 340, 341, -1, 343, 344, 345, 346, 347, -1, - 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, - -1, 360, 361, 362, 363, 364, 365, 366, 367, 368, - 369, 370, 371, 372, -1, 374, 375, -1, 377, 378, - 379, 380, 381, 382, 383, -1, 385, 386, -1, -1, - 389, 390, 391, 392, 393, -1, 395, 396, 397, 398, - 399, 400, 401, -1, -1, 404, 405, 406, 407, 408, - -1, -1, 411, 412, 413, 414, 415, 416, 417, -1, - 419, 420, 421, 422, 423, 424, -1, -1, 427, -1, - -1, 430, 431, 432, 433, 434, 435, 436, 437, 438, - 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, - 449, 3, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 18, 19, 20, 21, - 22, 23, 24, 25, -1, 27, 28, 29, -1, -1, - -1, -1, -1, -1, -1, 37, 38, -1, 40, 41, - 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, - -1, 53, 54, 55, 56, 57, -1, -1, 60, 61, - 62, 63, 64, -1, 66, 67, 68, 69, 70, -1, - 72, -1, 74, 75, 76, 77, 78, 79, 80, 81, - 82, -1, 84, 85, 86, 87, 88, 89, -1, 91, - 92, 93, 94, -1, -1, -1, 98, -1, -1, -1, - 102, 103, 104, 105, 106, 107, 108, 109, 110, -1, - 112, -1, 114, 115, 116, 117, 118, 119, -1, 121, - 122, 123, 124, -1, -1, 127, 128, 129, 130, 131, - -1, 133, 134, 135, -1, 137, 138, 139, -1, 141, - 142, 143, 144, 145, 146, 147, 148, 149, -1, 151, - -1, 153, 154, 155, 156, -1, 158, -1, 160, 161, - -1, 163, 164, 165, 166, 167, -1, 169, 170, -1, - 172, 173, -1, 175, 176, 177, 178, 179, 180, 181, - 182, 183, 184, -1, 186, 187, 188, 189, 190, 191, - -1, 193, 194, 195, 196, 197, 198, 199, 200, 201, - -1, 203, -1, 205, 206, 207, 208, 209, 210, 211, - 212, 213, 214, -1, -1, 217, 218, 219, 220, 221, - -1, 223, 224, 225, -1, -1, 228, 229, 230, 231, - 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, - 242, 243, 244, 245, 246, 247, 248, 249, 250, -1, - 252, 253, 254, 255, -1, 257, 258, 259, 260, 261, - 262, -1, 264, 265, -1, -1, 268, 269, 270, -1, - -1, 273, 274, 275, 276, 277, 278, 279, 280, 281, - 282, 283, 284, 285, 286, 287, -1, 289, 290, 291, - 292, 293, 294, 295, 296, -1, 298, 299, 300, 301, - 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, - -1, 313, 314, 315, 316, 317, 318, 319, 320, 321, - 322, 323, 324, -1, 326, 327, 328, 329, 330, 331, - 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, - -1, 343, 344, 345, 346, 347, -1, 349, 350, 351, - 352, 353, 354, 355, 356, 357, 358, -1, 360, 361, - 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, - 372, -1, 374, 375, -1, 377, 378, 379, 380, 381, - 382, 383, -1, 385, 386, -1, -1, 389, 390, 391, - 392, 393, -1, 395, 396, 397, 398, 399, 400, 401, - -1, -1, 404, 405, 406, 407, 408, -1, -1, 411, - 412, 413, 414, 415, 416, 417, -1, 419, 420, 421, - 422, 423, 424, -1, -1, 427, -1, -1, 430, 431, - 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, - 442, 443, 444, 445, 446, 447, 448, 449, 3, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 18, 19, 20, 21, 22, 23, 24, - 25, -1, 27, 28, 29, -1, -1, -1, -1, -1, - -1, -1, 37, 38, -1, 40, 41, 42, -1, 44, - 45, 46, 47, 48, -1, 50, 51, -1, 53, 54, - 55, 56, 57, -1, -1, 60, 61, 62, 63, 64, - 65, 66, 67, 68, 69, 70, -1, -1, 73, 74, - 75, 76, 77, 78, -1, 80, 81, 82, 83, 84, - 85, 86, 87, 88, 89, -1, -1, 92, 93, 94, - -1, -1, -1, -1, -1, -1, -1, 102, 103, 104, - 105, 106, 107, 108, 109, 110, -1, 112, -1, 114, - 115, 116, 117, 118, 119, -1, 121, 122, 123, 124, - -1, -1, 127, 128, 129, 130, 131, -1, 133, 134, - 135, -1, 137, 138, 139, -1, 141, 142, 143, 144, - 145, 146, 147, 148, 149, -1, 151, -1, 153, 154, - 155, 156, -1, 158, 159, 160, -1, -1, -1, 164, - 165, 166, 167, -1, 169, 170, -1, 172, 173, -1, - 175, 176, 177, 178, 179, -1, 181, 182, 183, 184, - -1, 186, 187, 188, 189, 190, 191, -1, 193, -1, - 195, 196, 197, 198, 199, 200, 201, -1, 203, -1, - 205, -1, -1, 208, -1, 210, 211, 212, 213, 214, - -1, -1, 217, 218, -1, 220, -1, -1, 223, 224, - 225, -1, -1, 228, 229, 230, 231, 232, 233, 234, - 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, - -1, 246, 247, 248, 249, 250, -1, 252, 253, -1, - 255, -1, 257, 258, 259, 260, 261, 262, -1, 264, - 265, -1, -1, 268, 269, 270, -1, -1, 273, 274, - -1, 276, -1, 278, 279, 280, 281, 282, 283, 284, - 285, 286, 287, -1, 289, 290, 291, 292, 293, 294, - 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, - 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, - 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, - -1, 326, 327, -1, 329, 330, 331, 332, 333, 334, - 335, 336, 337, 338, 339, 340, 341, -1, 343, 344, - 345, 346, 347, -1, 349, 350, 351, 352, 353, -1, - 355, 356, 357, 358, -1, 360, 361, 362, 363, 364, - 365, 366, 367, 368, 369, 370, 371, 372, -1, 374, - 375, -1, 377, -1, 379, 380, 381, 382, 383, -1, - 385, 386, -1, -1, 389, 390, 391, 392, 393, -1, - 395, 396, 397, 398, 399, 400, 401, -1, 403, 404, - 405, 406, 407, 408, -1, -1, 411, 412, 413, 414, - 415, 416, 417, -1, 419, -1, 421, 422, 423, 424, - -1, -1, 427, -1, -1, 430, 431, 432, 433, 434, - 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, - 445, 446, 447, 448, 449, 3, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 18, 19, 20, 21, 22, 23, 24, 25, -1, 27, - 28, 29, -1, -1, -1, -1, -1, -1, -1, 37, - 38, -1, 40, 41, 42, -1, 44, 45, 46, 47, - 48, -1, 50, 51, -1, 53, 54, 55, 56, 57, - -1, -1, 60, 61, 62, 63, 64, 65, 66, 67, - 68, 69, 70, -1, -1, -1, 74, 75, 76, 77, - 78, -1, 80, 81, 82, 83, 84, 85, 86, 87, - 88, 89, -1, -1, 92, 93, 94, -1, -1, -1, - -1, -1, -1, -1, 102, 103, 104, 105, 106, 107, - 108, 109, 110, -1, 112, -1, 114, 115, 116, 117, - 118, 119, -1, 121, 122, 123, 124, -1, -1, 127, - 128, 129, 130, 131, -1, 133, 134, 135, -1, 137, - 138, 139, -1, 141, 142, 143, 144, 145, 146, 147, - 148, 149, -1, 151, -1, 153, 154, 155, 156, -1, - 158, 159, 160, -1, -1, -1, 164, 165, 166, 167, - -1, 169, 170, -1, 172, 173, -1, 175, 176, 177, - 178, 179, -1, 181, 182, 183, 184, -1, 186, 187, - 188, 189, 190, 191, -1, 193, -1, 195, 196, 197, - 198, 199, 200, 201, -1, 203, -1, 205, -1, -1, - 208, -1, 210, 211, 212, 213, 214, -1, -1, 217, - 218, -1, 220, 221, -1, 223, 224, 225, -1, -1, - 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, - 238, 239, 240, 241, 242, 243, 244, -1, 246, 247, - 248, 249, 250, -1, 252, 253, -1, 255, -1, 257, - 258, 259, 260, 261, 262, -1, 264, 265, -1, -1, - 268, 269, 270, -1, -1, 273, 274, -1, 276, -1, - 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, - -1, 289, 290, 291, 292, 293, 294, 295, 296, 297, - 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, - 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, - 318, 319, 320, 321, 322, 323, 324, -1, 326, 327, - -1, 329, 330, 331, 332, 333, 334, 335, 336, 337, - 338, 339, 340, 341, -1, 343, 344, 345, 346, 347, - -1, 349, 350, 351, 352, 353, -1, 355, 356, 357, - 358, -1, 360, 361, 362, 363, 364, 365, 366, 367, - 368, 369, 370, 371, 372, -1, 374, 375, -1, 377, - -1, 379, 380, 381, 382, 383, -1, 385, 386, -1, - -1, 389, 390, 391, 392, 393, -1, 395, 396, 397, - 398, 399, 400, 401, -1, 403, 404, 405, 406, 407, - 408, -1, -1, 411, 412, 413, 414, 415, 416, 417, - -1, 419, -1, 421, 422, 423, 424, -1, -1, 427, - -1, -1, 430, 431, 432, 433, 434, 435, 436, 437, - 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, - 448, 449, 3, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 18, 19, 20, - 21, 22, 23, 24, 25, 26, 27, 28, 29, -1, - -1, -1, -1, -1, -1, -1, 37, 38, -1, 40, - 41, 42, -1, 44, 45, 46, 47, 48, -1, 50, - 51, -1, 53, 54, 55, 56, 57, -1, -1, 60, - 61, 62, 63, 64, -1, 66, 67, 68, 69, 70, - -1, -1, -1, 74, 75, 76, 77, 78, -1, 80, - 81, 82, -1, 84, 85, 86, 87, 88, 89, 90, - -1, 92, 93, 94, -1, -1, -1, -1, -1, -1, - -1, 102, 103, 104, 105, 106, 107, 108, 109, 110, - -1, 112, -1, 114, 115, 116, 117, 118, 119, -1, - 121, 122, 123, 124, -1, -1, 127, 128, 129, 130, - 131, -1, 133, 134, 135, -1, 137, 138, 139, -1, - 141, 142, 143, 144, 145, 146, 147, 148, 149, -1, - 151, -1, 153, 154, 155, 156, -1, 158, -1, 160, - -1, -1, -1, 164, 165, 166, 167, 168, 169, 170, - -1, 172, 173, -1, 175, 176, 177, 178, 179, -1, - 181, 182, 183, 184, -1, 186, 187, 188, 189, 190, - 191, -1, 193, -1, 195, 196, 197, 198, 199, 200, - 201, -1, 203, -1, 205, -1, -1, 208, -1, 210, - 211, 212, 213, 214, -1, -1, 217, 218, -1, 220, - -1, -1, 223, 224, 225, -1, -1, 228, 229, 230, - 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, - 241, 242, 243, 244, -1, 246, 247, 248, 249, 250, - -1, 252, 253, -1, 255, -1, 257, 258, 259, 260, - 261, 262, -1, 264, 265, -1, -1, 268, 269, 270, - -1, -1, 273, 274, -1, 276, -1, 278, 279, 280, - 281, 282, 283, 284, 285, 286, 287, -1, 289, 290, - 291, 292, 293, 294, 295, 296, -1, 298, 299, 300, - 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, - 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, - 321, 322, 323, 324, -1, 326, 327, -1, 329, 330, - 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, - 341, 342, 343, 344, 345, 346, 347, -1, 349, 350, - 351, 352, 353, -1, 355, 356, 357, 358, -1, 360, - 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, - 371, 372, -1, 374, 375, -1, 377, -1, 379, 380, - 381, 382, 383, -1, 385, 386, -1, -1, 389, 390, - 391, 392, 393, -1, 395, 396, 397, 398, 399, 400, - 401, -1, -1, 404, 405, 406, 407, 408, -1, -1, - 411, 412, 413, 414, 415, 416, 417, -1, 419, -1, - 421, 422, 423, 424, -1, -1, 427, -1, -1, 430, - 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, - 441, 442, 443, 444, 445, 446, 447, 448, 449, 3, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 18, 19, 20, 21, 22, 23, - 24, 25, 26, 27, 28, 29, -1, -1, -1, -1, - -1, -1, -1, 37, 38, -1, 40, 41, 42, -1, - 44, 45, 46, 47, 48, -1, 50, 51, -1, 53, - 54, 55, 56, 57, -1, -1, 60, 61, 62, 63, - 64, -1, 66, 67, 68, 69, 70, -1, -1, -1, - 74, 75, 76, 77, 78, -1, 80, 81, 82, -1, - 84, 85, 86, 87, 88, 89, 90, -1, 92, 93, - 94, -1, -1, -1, -1, -1, -1, -1, 102, 103, - 104, 105, 106, 107, 108, 109, 110, -1, 112, -1, - 114, 115, 116, 117, 118, 119, -1, 121, 122, 123, - 124, -1, -1, 127, 128, 129, 130, 131, -1, 133, - 134, 135, -1, 137, 138, 139, -1, 141, 142, 143, - 144, 145, 146, 147, 148, 149, -1, 151, -1, 153, - 154, 155, 156, -1, 158, -1, 160, -1, -1, -1, - 164, 165, 166, 167, 168, 169, 170, -1, 172, 173, - -1, 175, 176, 177, 178, 179, -1, 181, 182, 183, - 184, -1, 186, 187, 188, 189, 190, 191, -1, 193, - -1, 195, 196, 197, 198, 199, 200, 201, -1, 203, - -1, 205, -1, -1, 208, -1, 210, 211, 212, 213, - 214, -1, -1, 217, 218, -1, 220, -1, -1, 223, - 224, 225, -1, -1, 228, 229, 230, 231, 232, 233, - 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, - 244, -1, 246, 247, 248, 249, 250, -1, 252, 253, - -1, 255, -1, 257, 258, 259, 260, 261, 262, -1, - 264, 265, -1, -1, 268, 269, 270, -1, -1, 273, - 274, -1, 276, -1, 278, 279, 280, 281, 282, 283, - 284, 285, 286, 287, -1, 289, 290, 291, 292, 293, - 294, 295, 296, -1, 298, 299, 300, 301, 302, 303, - 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, - 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, - 324, -1, 326, 327, -1, 329, 330, 331, 332, 333, - 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, - 344, 345, 346, 347, -1, 349, 350, 351, 352, 353, - -1, 355, 356, 357, 358, -1, 360, 361, 362, 363, - 364, 365, 366, 367, 368, 369, 370, 371, 372, -1, - 374, 375, -1, 377, -1, 379, 380, 381, 382, 383, - -1, 385, 386, -1, -1, 389, 390, 391, 392, 393, - -1, 395, 396, 397, 398, 399, 400, 401, -1, -1, - 404, 405, 406, 407, 408, -1, -1, 411, 412, 413, - 414, 415, 416, 417, -1, 419, -1, 421, 422, 423, - 424, -1, -1, 427, -1, -1, 430, 431, 432, 433, - 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, - 444, 445, 446, 447, 448, 449, 3, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 18, 19, 20, 21, 22, 23, 24, 25, -1, - 27, 28, 29, -1, -1, -1, -1, -1, -1, -1, - 37, 38, -1, 40, 41, 42, -1, 44, 45, 46, - 47, 48, -1, 50, 51, -1, 53, 54, 55, 56, - 57, -1, -1, 60, 61, 62, 63, 64, 65, 66, - 67, 68, 69, 70, -1, -1, -1, 74, 75, 76, - 77, 78, -1, 80, 81, 82, 83, 84, 85, 86, - 87, 88, 89, -1, -1, 92, 93, 94, -1, -1, - -1, -1, -1, -1, -1, 102, 103, 104, 105, 106, - 107, 108, 109, 110, -1, 112, -1, 114, 115, 116, - 117, 118, 119, -1, 121, 122, 123, 124, -1, -1, - 127, 128, 129, 130, 131, -1, 133, 134, 135, -1, - 137, 138, 139, -1, 141, 142, 143, 144, 145, 146, - 147, 148, 149, -1, 151, -1, 153, 154, 155, 156, - -1, 158, 159, 160, -1, -1, -1, 164, 165, 166, - 167, -1, 169, 170, -1, 172, 173, -1, 175, 176, - 177, 178, 179, -1, 181, 182, 183, 184, -1, 186, - 187, 188, 189, 190, 191, -1, 193, -1, 195, 196, - 197, 198, 199, 200, 201, -1, 203, -1, 205, -1, - -1, 208, -1, 210, 211, 212, 213, 214, -1, -1, - 217, 218, -1, 220, -1, -1, 223, 224, 225, -1, - -1, 228, 229, 230, 231, 232, 233, 234, 235, 236, - 237, 238, 239, 240, 241, 242, 243, 244, -1, 246, - 247, 248, 249, 250, -1, 252, 253, -1, 255, -1, - 257, 258, 259, 260, 261, 262, -1, 264, 265, -1, - -1, 268, 269, 270, -1, -1, 273, 274, -1, 276, - -1, 278, 279, 280, 281, 282, 283, 284, 285, 286, - 287, -1, 289, 290, 291, 292, 293, 294, 295, 296, - 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, - 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, - 317, 318, 319, 320, 321, 322, 323, 324, -1, 326, - 327, -1, 329, 330, 331, 332, 333, 334, 335, 336, - 337, 338, 339, 340, 341, -1, 343, 344, 345, 346, - 347, -1, 349, 350, 351, 352, 353, -1, 355, 356, - 357, 358, -1, 360, 361, 362, 363, 364, 365, 366, - 367, 368, 369, 370, 371, 372, -1, 374, 375, -1, - 377, -1, 379, 380, 381, 382, 383, -1, 385, 386, - -1, -1, 389, 390, 391, 392, 393, -1, 395, 396, - 397, 398, 399, 400, 401, -1, 403, 404, 405, 406, - 407, 408, -1, -1, 411, 412, 413, 414, 415, 416, - 417, -1, 419, -1, 421, 422, 423, 424, -1, -1, - 427, -1, -1, 430, 431, 432, 433, 434, 435, 436, - 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, - 447, 448, 449, 3, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 18, 19, - 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, - -1, -1, -1, -1, -1, -1, -1, 37, 38, -1, - 40, 41, 42, -1, 44, 45, 46, 47, 48, -1, - 50, 51, -1, 53, 54, 55, 56, 57, -1, -1, - 60, 61, 62, 63, 64, -1, 66, 67, 68, 69, - 70, -1, -1, -1, 74, 75, 76, 77, 78, -1, - 80, 81, 82, -1, 84, 85, 86, 87, 88, 89, - 90, -1, 92, 93, 94, -1, -1, -1, -1, -1, - -1, -1, 102, 103, 104, 105, 106, 107, 108, 109, - 110, -1, 112, -1, 114, 115, 116, 117, 118, 119, - -1, 121, 122, 123, 124, -1, -1, 127, 128, 129, - 130, 131, -1, 133, 134, 135, -1, 137, 138, 139, - -1, 141, 142, 143, 144, 145, 146, 147, 148, 149, - -1, 151, -1, 153, 154, 155, 156, -1, 158, -1, - 160, -1, -1, -1, 164, 165, 166, 167, -1, 169, - 170, -1, 172, 173, -1, 175, 176, 177, 178, 179, - -1, 181, 182, 183, 184, -1, 186, 187, 188, 189, - 190, 191, -1, 193, -1, 195, 196, 197, 198, 199, - 200, 201, -1, 203, -1, 205, -1, -1, 208, -1, - 210, 211, 212, 213, 214, -1, -1, 217, 218, -1, - 220, -1, -1, 223, 224, 225, -1, -1, 228, 229, - 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, - 240, 241, 242, 243, 244, -1, 246, 247, 248, 249, - 250, -1, 252, 253, -1, 255, -1, 257, 258, 259, - 260, 261, 262, -1, 264, 265, -1, -1, 268, 269, - 270, -1, -1, 273, 274, -1, 276, -1, 278, 279, - 280, 281, 282, 283, 284, 285, 286, 287, -1, 289, - 290, 291, 292, 293, 294, 295, 296, -1, 298, 299, - 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, - 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, - 320, 321, 322, 323, 324, -1, 326, 327, -1, 329, - 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, - 340, 341, 342, 343, 344, 345, 346, 347, -1, 349, - 350, 351, 352, 353, -1, 355, 356, 357, 358, -1, - 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, - 370, 371, 372, -1, 374, 375, -1, 377, -1, 379, - 380, 381, 382, 383, -1, 385, 386, -1, -1, 389, - 390, 391, 392, 393, -1, 395, 396, 397, 398, 399, - 400, 401, -1, -1, 404, 405, 406, 407, 408, -1, - -1, 411, 412, 413, 414, 415, 416, 417, -1, 419, - -1, 421, 422, 423, 424, -1, -1, 427, -1, -1, - 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, - 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, - 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 18, 19, 20, 21, 22, - 23, 24, 25, 26, 27, 28, 29, -1, -1, -1, - -1, -1, -1, -1, 37, 38, -1, 40, 41, 42, - -1, 44, 45, 46, 47, 48, -1, 50, 51, -1, - 53, 54, 55, 56, 57, -1, -1, 60, 61, 62, - 63, 64, -1, 66, 67, 68, 69, 70, -1, -1, - -1, 74, 75, 76, 77, 78, -1, 80, 81, 82, - -1, 84, 85, 86, 87, 88, 89, -1, -1, 92, - 93, 94, -1, -1, -1, -1, -1, -1, -1, 102, - 103, 104, 105, 106, 107, 108, 109, 110, -1, 112, - -1, 114, 115, 116, 117, 118, 119, -1, 121, 122, - 123, 124, -1, -1, 127, 128, 129, 130, 131, -1, - 133, 134, 135, -1, 137, 138, 139, -1, 141, 142, - 143, 144, 145, 146, 147, 148, 149, -1, 151, -1, - 153, 154, 155, 156, -1, 158, 159, 160, -1, -1, - -1, 164, 165, 166, 167, -1, 169, 170, -1, 172, - 173, -1, 175, 176, 177, 178, 179, -1, 181, 182, - 183, 184, -1, 186, 187, 188, 189, 190, 191, -1, - 193, -1, 195, 196, 197, 198, 199, 200, 201, -1, - 203, -1, 205, -1, -1, 208, -1, 210, 211, 212, - 213, 214, -1, -1, 217, 218, -1, 220, -1, -1, - 223, 224, 225, -1, -1, 228, 229, 230, 231, 232, - 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, - 243, 244, -1, 246, 247, 248, 249, 250, -1, 252, - 253, -1, 255, -1, 257, 258, 259, 260, 261, 262, - -1, 264, 265, -1, -1, 268, 269, 270, -1, -1, - 273, 274, -1, 276, -1, 278, 279, 280, 281, 282, - 283, 284, 285, 286, 287, -1, 289, 290, 291, 292, - 293, 294, 295, 296, -1, 298, 299, 300, 301, 302, - 303, 304, 305, 306, 307, 308, 309, 310, 311, -1, - 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, - 323, 324, -1, 326, 327, -1, 329, 330, 331, 332, - 333, 334, 335, 336, 337, 338, 339, 340, 341, -1, - 343, 344, 345, 346, 347, -1, 349, 350, 351, 352, - 353, -1, 355, 356, 357, 358, -1, 360, 361, 362, - 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, - -1, 374, 375, 376, 377, -1, 379, 380, 381, 382, - 383, -1, 385, 386, -1, -1, 389, 390, 391, 392, - 393, -1, 395, 396, 397, 398, 399, 400, 401, -1, - -1, 404, 405, 406, 407, 408, -1, -1, 411, 412, - 413, 414, 415, 416, 417, -1, 419, -1, 421, 422, - 423, 424, -1, -1, 427, -1, -1, 430, 431, 432, - 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, - 443, 444, 445, 446, 447, 448, 449, 3, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 18, 19, 20, 21, 22, 23, 24, 25, - -1, 27, 28, 29, -1, -1, -1, -1, -1, -1, - -1, 37, 38, -1, 40, 41, 42, -1, 44, 45, - 46, 47, 48, -1, 50, 51, -1, 53, 54, 55, - 56, 57, -1, -1, 60, 61, 62, 63, 64, -1, - 66, 67, 68, 69, 70, -1, -1, -1, 74, 75, - 76, 77, 78, -1, 80, 81, 82, -1, 84, 85, - 86, 87, 88, 89, 90, -1, 92, 93, 94, -1, - -1, -1, -1, -1, -1, -1, 102, 103, 104, 105, - 106, 107, 108, 109, 110, -1, 112, -1, 114, 115, - 116, 117, 118, 119, -1, 121, 122, 123, 124, -1, - -1, 127, 128, 129, 130, 131, -1, 133, 134, 135, - -1, 137, 138, 139, -1, 141, 142, 143, 144, 145, - 146, 147, 148, 149, -1, 151, -1, 153, 154, 155, - 156, -1, 158, -1, 160, -1, -1, -1, 164, 165, - 166, 167, -1, 169, 170, -1, 172, 173, -1, 175, - 176, 177, 178, 179, -1, 181, 182, 183, 184, -1, - 186, 187, 188, 189, 190, 191, -1, 193, -1, 195, - 196, 197, 198, 199, 200, 201, -1, 203, -1, 205, - -1, -1, 208, -1, 210, 211, 212, 213, 214, -1, - -1, 217, 218, -1, 220, -1, -1, 223, 224, 225, - -1, -1, 228, 229, 230, 231, 232, 233, 234, 235, - 236, 237, 238, 239, 240, 241, 242, 243, 244, -1, - 246, 247, 248, 249, 250, -1, 252, 253, -1, 255, - -1, 257, 258, 259, 260, 261, 262, -1, 264, 265, - -1, -1, 268, 269, 270, -1, -1, 273, 274, -1, - 276, -1, 278, 279, 280, 281, 282, 283, 284, 285, - 286, 287, -1, 289, 290, 291, 292, 293, 294, 295, - 296, -1, 298, 299, 300, 301, 302, 303, 304, 305, - 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, - 316, 317, 318, 319, 320, 321, 322, 323, 324, -1, - 326, 327, -1, 329, 330, 331, 332, 333, 334, 335, - 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, - 346, 347, -1, 349, 350, 351, 352, 353, -1, 355, - 356, 357, 358, -1, 360, 361, 362, 363, 364, 365, - 366, 367, 368, 369, 370, 371, 372, -1, 374, 375, - -1, 377, -1, 379, 380, 381, 382, 383, -1, 385, - 386, -1, -1, 389, 390, 391, 392, 393, -1, 395, - 396, 397, 398, 399, 400, 401, -1, -1, 404, 405, - 406, 407, 408, -1, -1, 411, 412, 413, 414, 415, - 416, 417, -1, 419, -1, 421, 422, 423, 424, -1, - -1, 427, -1, -1, 430, 431, 432, 433, 434, 435, - 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, - 446, 447, 448, 449, 3, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 18, - 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, - 29, -1, -1, -1, -1, -1, -1, -1, 37, 38, - -1, 40, 41, 42, -1, 44, 45, 46, 47, 48, - -1, 50, 51, -1, 53, 54, 55, 56, 57, -1, - -1, 60, 61, 62, 63, 64, -1, 66, 67, 68, - 69, 70, -1, -1, -1, 74, 75, 76, 77, 78, - -1, 80, 81, 82, -1, 84, 85, 86, 87, 88, - 89, -1, -1, 92, 93, 94, -1, -1, -1, -1, - -1, -1, -1, 102, 103, 104, 105, 106, 107, 108, - 109, 110, -1, 112, -1, 114, 115, 116, 117, 118, - 119, -1, 121, 122, 123, 124, -1, -1, 127, 128, - 129, 130, 131, -1, 133, 134, 135, -1, 137, 138, - 139, -1, 141, 142, 143, 144, 145, 146, 147, 148, - 149, -1, 151, -1, 153, 154, 155, 156, -1, 158, - -1, 160, -1, -1, -1, 164, 165, 166, 167, -1, - 169, 170, -1, 172, 173, -1, 175, 176, 177, 178, - 179, -1, 181, 182, 183, 184, -1, 186, 187, 188, - 189, 190, 191, -1, 193, -1, 195, 196, 197, 198, - 199, 200, 201, -1, 203, -1, 205, -1, -1, 208, - -1, 210, 211, 212, 213, 214, -1, -1, 217, 218, - -1, 220, -1, -1, 223, 224, 225, -1, -1, 228, - 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, - 239, 240, 241, 242, 243, 244, -1, 246, 247, 248, - 249, 250, -1, 252, 253, -1, 255, -1, 257, 258, - 259, 260, 261, 262, -1, 264, 265, -1, 267, 268, - 269, 270, -1, -1, 273, 274, -1, 276, -1, 278, - 279, 280, 281, 282, 283, 284, 285, 286, 287, -1, - 289, 290, 291, 292, 293, 294, 295, 296, -1, 298, - 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, - 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, - 319, 320, 321, 322, 323, 324, -1, 326, 327, -1, - 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, - 339, 340, 341, -1, 343, 344, 345, 346, 347, -1, - 349, 350, 351, 352, 353, -1, 355, 356, 357, 358, - -1, 360, 361, 362, 363, 364, 365, 366, 367, 368, - 369, 370, 371, 372, -1, 374, 375, -1, 377, -1, - 379, 380, 381, 382, 383, -1, 385, 386, -1, -1, - 389, 390, 391, 392, 393, -1, 395, 396, 397, 398, - 399, 400, 401, -1, -1, 404, 405, 406, 407, 408, - -1, -1, 411, 412, 413, 414, 415, 416, 417, -1, - 419, -1, 421, 422, 423, 424, -1, -1, 427, -1, - -1, 430, 431, 432, 433, 434, 435, 436, 437, 438, - 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, - 449, 3, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 18, 19, 20, 21, - 22, 23, 24, 25, -1, 27, 28, 29, 30, 31, - -1, -1, -1, -1, -1, 37, 38, -1, 40, 41, - 42, -1, 44, 45, 46, 47, 48, -1, 50, 51, - -1, 53, 54, 55, 56, 57, -1, -1, 60, 61, - 62, 63, 64, -1, 66, 67, 68, 69, 70, -1, - -1, -1, 74, 75, 76, 77, 78, -1, 80, 81, - 82, -1, 84, 85, 86, 87, 88, 89, -1, -1, - 92, 93, 94, -1, -1, -1, -1, -1, -1, -1, - 102, 103, 104, 105, 106, 107, 108, 109, 110, -1, - 112, -1, 114, 115, 116, 117, 118, 119, -1, 121, - 122, 123, 124, -1, -1, 127, 128, 129, 130, 131, - -1, 133, 134, 135, -1, 137, 138, 139, -1, 141, - 142, 143, 144, 145, 146, 147, 148, 149, -1, 151, - -1, 153, 154, 155, 156, -1, 158, -1, 160, -1, - -1, -1, 164, 165, 166, 167, -1, 169, 170, -1, - 172, 173, -1, 175, 176, 177, 178, 179, -1, 181, - 182, 183, 184, -1, 186, 187, 188, 189, 190, 191, - -1, 193, -1, 195, 196, 197, 198, 199, 200, 201, - -1, 203, -1, 205, -1, -1, 208, -1, 210, 211, - 212, 213, 214, -1, -1, 217, 218, -1, 220, -1, - -1, 223, 224, 225, -1, -1, 228, 229, 230, 231, - 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, - 242, 243, 244, -1, 246, 247, 248, 249, 250, -1, - 252, 253, -1, 255, -1, 257, 258, 259, 260, 261, - 262, -1, 264, 265, -1, -1, 268, 269, 270, -1, - -1, 273, 274, -1, 276, -1, 278, 279, 280, 281, - 282, 283, 284, 285, 286, 287, -1, 289, 290, 291, - 292, 293, 294, 295, 296, -1, 298, 299, 300, 301, - 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, - -1, 313, 314, 315, 316, 317, 318, 319, 320, 321, - 322, 323, 324, -1, 326, 327, -1, 329, 330, 331, - 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, - -1, 343, 344, 345, 346, 347, -1, 349, 350, 351, - 352, 353, -1, 355, 356, 357, 358, -1, 360, 361, - 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, - 372, -1, 374, 375, -1, 377, -1, 379, 380, 381, - 382, 383, -1, 385, 386, -1, -1, 389, 390, 391, - 392, 393, -1, 395, 396, 397, 398, 399, 400, 401, - -1, -1, 404, 405, 406, 407, 408, -1, -1, 411, - 412, 413, 414, 415, 416, 417, -1, 419, -1, 421, - 422, 423, 424, -1, -1, 427, -1, -1, 430, 431, - 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, - 442, 443, 444, 445, 446, 447, 448, 449, 3, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 18, 19, 20, 21, 22, 23, 24, - 25, 26, 27, 28, 29, -1, -1, -1, -1, -1, - -1, -1, 37, 38, -1, 40, 41, 42, -1, 44, - 45, 46, 47, 48, -1, 50, 51, -1, 53, 54, - 55, 56, 57, -1, -1, 60, 61, 62, 63, 64, - -1, 66, 67, 68, 69, 70, -1, -1, -1, 74, - 75, 76, 77, 78, -1, 80, 81, 82, -1, 84, - 85, 86, 87, 88, 89, -1, -1, 92, 93, 94, - -1, -1, -1, -1, -1, -1, -1, 102, 103, 104, - 105, 106, 107, 108, 109, 110, -1, 112, -1, 114, - 115, 116, 117, 118, 119, -1, 121, 122, 123, 124, - -1, -1, 127, 128, 129, 130, 131, -1, 133, 134, - 135, -1, 137, 138, 139, -1, 141, 142, 143, 144, - 145, 146, 147, 148, 149, -1, 151, -1, 153, 154, - 155, 156, -1, 158, -1, 160, -1, -1, -1, 164, - 165, 166, 167, -1, 169, 170, -1, 172, 173, -1, - 175, 176, 177, 178, 179, -1, 181, 182, 183, 184, - -1, 186, 187, 188, 189, 190, 191, -1, 193, -1, - 195, 196, 197, 198, 199, 200, 201, -1, 203, -1, - 205, -1, -1, 208, -1, 210, 211, 212, 213, 214, - -1, -1, 217, 218, -1, 220, -1, -1, 223, 224, - 225, -1, -1, 228, 229, 230, 231, 232, 233, 234, - 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, - -1, 246, 247, 248, 249, 250, -1, 252, 253, -1, - 255, -1, 257, 258, 259, 260, 261, 262, -1, 264, - 265, -1, -1, 268, 269, 270, -1, -1, 273, 274, - -1, 276, -1, 278, 279, 280, 281, 282, 283, 284, - 285, 286, 287, -1, 289, 290, 291, 292, 293, 294, - 295, 296, -1, 298, 299, 300, 301, 302, 303, 304, + 354, 355, 356, 357, 358, 359, -1, 361, 362, 363, + 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, + 374, 375, 376, -1, 378, 379, 380, 381, 382, 383, + 384, 385, 386, 387, 388, 389, 390, 391, 392, -1, + 394, 395, -1, 397, 398, 399, 400, 401, 402, 403, + -1, 405, 406, 407, -1, -1, 410, 411, 412, 413, + 414, -1, 416, 417, 418, 419, 420, 421, 422, 423, + -1, -1, 426, 427, 428, 429, 430, -1, -1, 433, + 434, 435, 436, 437, 438, 439, -1, 441, 442, 443, + 444, 445, 446, -1, -1, 449, -1, -1, 452, 453, + 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, + 464, 465, 466, 467, 468, 469, 470, 471, 3, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 22, 23, 24, + 25, 26, 27, 28, 29, 30, 31, 32, 33, -1, + -1, -1, -1, -1, -1, -1, 41, 42, -1, 44, + 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, + 55, -1, 57, 58, 59, 60, 61, 62, -1, -1, + 65, 66, 67, 68, 69, -1, 71, 72, 73, 74, + 75, -1, 77, -1, 79, 80, 81, 82, 83, 84, + 85, 86, 87, -1, 89, 90, 91, 92, 93, 94, + -1, 96, 97, 98, 99, -1, -1, -1, 103, -1, + -1, 106, 107, 108, 109, 110, 111, 112, 113, 114, + 115, -1, 117, -1, 119, 120, 121, 122, 123, 124, + -1, 126, 127, 128, 129, -1, -1, 132, 133, 134, + 135, 136, -1, 138, 139, 140, -1, 142, 143, 144, + -1, 146, 147, 148, 149, 150, 151, 152, 153, 154, + 155, -1, 157, -1, 159, 160, 161, 162, -1, 164, + -1, 166, 167, -1, 169, 170, 171, 172, 173, -1, + 175, 176, -1, 178, 179, 180, -1, 182, 183, 184, + 185, 186, 187, 188, 189, 190, 191, -1, 193, 194, + 195, 196, 197, 198, 199, -1, 201, 202, 203, 204, + 205, 206, 207, 208, 209, -1, 211, -1, 213, 214, + 215, 216, 217, 218, 219, 220, 221, 222, -1, -1, + 225, 226, 227, 228, 229, -1, 231, 232, 233, -1, + -1, 236, 237, 238, 239, 240, 241, 242, 243, 244, + 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, + 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, + -1, 266, 267, 268, 269, -1, 271, 272, 273, 274, + 275, 276, -1, 278, 279, -1, -1, 282, 283, 284, + -1, -1, 287, 288, 289, 290, 291, 292, 293, 294, + 295, 296, 297, 298, 299, 300, 301, 302, -1, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, - -1, 326, 327, -1, 329, 330, 331, 332, 333, 334, - 335, 336, 337, 338, 339, 340, 341, -1, 343, 344, - 345, 346, 347, -1, 349, 350, 351, 352, 353, -1, - 355, 356, 357, 358, -1, 360, 361, 362, 363, 364, - 365, 366, 367, 368, 369, 370, 371, 372, -1, 374, - 375, -1, 377, -1, 379, 380, 381, 382, 383, -1, - 385, 386, -1, -1, 389, 390, 391, 392, 393, -1, - 395, 396, 397, 398, 399, 400, 401, -1, -1, 404, - 405, 406, 407, 408, 409, -1, 411, 412, 413, 414, - 415, 416, 417, -1, 419, -1, 421, 422, 423, 424, - -1, -1, 427, -1, -1, 430, 431, 432, 433, 434, - 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, - 445, 446, 447, 448, 449, 3, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, - 28, 29, -1, -1, -1, -1, -1, -1, -1, 37, - 38, -1, 40, 41, 42, -1, 44, 45, 46, 47, - 48, -1, 50, 51, -1, 53, 54, 55, 56, 57, - -1, -1, 60, 61, 62, 63, 64, -1, 66, 67, - 68, 69, 70, -1, -1, -1, 74, 75, 76, 77, - 78, -1, 80, 81, 82, -1, 84, 85, 86, 87, - 88, 89, -1, -1, 92, 93, 94, -1, -1, -1, - -1, -1, -1, -1, 102, 103, 104, 105, 106, 107, - 108, 109, 110, -1, 112, -1, 114, 115, 116, 117, - 118, 119, -1, 121, 122, 123, 124, -1, -1, 127, - 128, 129, 130, 131, -1, 133, 134, 135, -1, 137, - 138, 139, -1, 141, 142, 143, 144, 145, 146, 147, - 148, 149, -1, 151, -1, 153, 154, 155, 156, -1, - 158, -1, 160, -1, -1, -1, 164, 165, 166, 167, - -1, 169, 170, -1, 172, 173, -1, 175, 176, 177, - 178, 179, -1, 181, 182, 183, 184, -1, 186, 187, - 188, 189, 190, 191, -1, 193, -1, 195, 196, 197, - 198, 199, 200, 201, -1, 203, -1, 205, -1, -1, - 208, -1, 210, 211, 212, 213, 214, -1, -1, 217, - 218, -1, 220, -1, -1, 223, 224, 225, -1, -1, - 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, - 238, 239, 240, 241, 242, 243, 244, -1, 246, 247, - 248, 249, 250, -1, 252, 253, -1, 255, -1, 257, - 258, 259, 260, 261, 262, -1, 264, 265, -1, -1, - 268, 269, 270, -1, -1, 273, 274, -1, 276, -1, - 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, - -1, 289, 290, 291, 292, 293, 294, 295, 296, -1, - 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, - 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, - 318, 319, 320, 321, 322, 323, 324, -1, 326, 327, - -1, 329, 330, 331, 332, 333, 334, 335, 336, 337, - 338, 339, 340, 341, -1, 343, 344, 345, 346, 347, - -1, 349, 350, 351, 352, 353, -1, 355, 356, 357, - 358, -1, 360, 361, 362, 363, 364, 365, 366, 367, - 368, 369, 370, 371, 372, -1, 374, 375, -1, 377, - -1, 379, 380, 381, 382, 383, -1, 385, 386, -1, - -1, 389, 390, 391, 392, 393, -1, 395, 396, 397, - 398, 399, 400, 401, -1, -1, 404, 405, 406, 407, - 408, 409, -1, 411, 412, 413, 414, 415, 416, 417, - -1, 419, -1, 421, 422, 423, 424, -1, -1, 427, - -1, -1, 430, 431, 432, 433, 434, 435, 436, 437, - 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, - 448, 449, 3, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 18, 19, 20, - 21, 22, 23, 24, 25, 26, 27, 28, 29, -1, - -1, -1, -1, -1, -1, -1, 37, 38, -1, 40, - 41, 42, -1, 44, 45, 46, 47, 48, -1, 50, - 51, -1, 53, 54, 55, 56, 57, -1, -1, 60, - 61, 62, 63, 64, -1, 66, 67, 68, 69, 70, - -1, -1, -1, 74, 75, 76, 77, 78, -1, 80, - 81, 82, -1, 84, 85, 86, 87, 88, 89, -1, - -1, 92, 93, 94, -1, -1, -1, -1, -1, -1, - -1, 102, 103, 104, 105, 106, 107, 108, 109, 110, - -1, 112, -1, 114, 115, 116, 117, 118, 119, -1, - 121, 122, 123, 124, -1, -1, 127, 128, 129, 130, - 131, -1, 133, 134, 135, -1, 137, 138, 139, -1, - 141, 142, 143, 144, 145, 146, 147, 148, 149, -1, - 151, -1, 153, 154, 155, 156, -1, 158, -1, 160, - -1, -1, -1, 164, 165, 166, 167, -1, 169, 170, - -1, 172, 173, -1, 175, 176, 177, 178, 179, -1, - 181, 182, 183, 184, -1, 186, 187, 188, 189, 190, - 191, -1, 193, -1, 195, 196, 197, 198, 199, 200, - 201, -1, 203, -1, 205, -1, -1, 208, -1, 210, - 211, 212, 213, 214, -1, -1, 217, 218, -1, 220, - -1, -1, 223, 224, 225, -1, -1, 228, 229, 230, - 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, - 241, 242, 243, 244, -1, 246, 247, 248, 249, 250, - -1, 252, 253, -1, 255, -1, 257, 258, 259, 260, - 261, 262, -1, 264, 265, -1, -1, 268, 269, 270, - -1, -1, 273, 274, -1, 276, -1, 278, 279, 280, - 281, 282, 283, 284, 285, 286, 287, -1, 289, 290, - 291, 292, 293, 294, 295, 296, -1, 298, 299, 300, - 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, - 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, - 321, 322, 323, 324, -1, 326, 327, -1, 329, 330, - 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, - 341, -1, 343, 344, 345, 346, 347, -1, 349, 350, - 351, 352, 353, -1, 355, 356, 357, 358, -1, 360, - 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, - 371, 372, -1, 374, 375, -1, 377, -1, 379, 380, - 381, 382, 383, -1, 385, 386, -1, -1, 389, 390, - 391, 392, 393, -1, 395, 396, 397, 398, 399, 400, - 401, -1, -1, 404, 405, 406, 407, 408, -1, -1, - 411, 412, 413, 414, 415, 416, 417, -1, 419, -1, - 421, 422, 423, 424, -1, -1, 427, -1, -1, 430, - 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, - 441, 442, 443, 444, 445, 446, 447, 448, 449, 3, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 18, 19, 20, 21, 22, 23, - 24, 25, 26, 27, 28, 29, -1, -1, -1, -1, - -1, -1, -1, 37, 38, -1, 40, 41, 42, -1, - 44, 45, 46, 47, 48, -1, 50, 51, -1, 53, - 54, 55, 56, 57, -1, -1, 60, 61, 62, 63, - 64, -1, 66, 67, 68, 69, 70, -1, -1, -1, - 74, 75, 76, 77, 78, -1, 80, 81, 82, -1, - 84, 85, 86, 87, 88, 89, -1, -1, 92, 93, - 94, -1, -1, -1, -1, -1, -1, -1, 102, 103, - 104, 105, 106, 107, 108, 109, 110, -1, 112, -1, - 114, 115, 116, 117, 118, 119, -1, 121, 122, 123, - 124, -1, -1, 127, 128, 129, 130, 131, -1, 133, - 134, 135, -1, 137, 138, 139, -1, 141, 142, 143, - 144, 145, 146, 147, 148, 149, -1, 151, -1, 153, - 154, 155, 156, -1, 158, -1, 160, -1, -1, -1, - 164, 165, 166, 167, -1, 169, 170, -1, 172, 173, - -1, 175, 176, 177, 178, 179, -1, 181, 182, 183, - 184, -1, 186, 187, 188, 189, 190, 191, -1, 193, - -1, 195, 196, 197, 198, 199, 200, 201, -1, 203, - -1, 205, -1, -1, 208, -1, 210, 211, 212, 213, - 214, -1, -1, 217, 218, -1, 220, -1, -1, 223, - 224, 225, -1, -1, 228, 229, 230, 231, 232, 233, - 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, - 244, -1, 246, 247, 248, 249, 250, -1, 252, 253, - -1, 255, -1, 257, 258, 259, 260, 261, 262, -1, - 264, 265, -1, -1, 268, 269, 270, -1, -1, 273, - 274, -1, 276, -1, 278, 279, 280, 281, 282, 283, - 284, 285, 286, 287, -1, 289, 290, 291, 292, 293, - 294, 295, 296, -1, 298, 299, 300, 301, 302, 303, - 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, - 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, - 324, -1, 326, 327, -1, 329, 330, 331, 332, 333, - 334, 335, 336, 337, 338, 339, 340, 341, -1, 343, - 344, 345, 346, 347, -1, 349, 350, 351, 352, 353, - -1, 355, 356, 357, 358, -1, 360, 361, 362, 363, - 364, 365, 366, 367, 368, 369, 370, 371, 372, -1, - 374, 375, -1, 377, -1, 379, 380, 381, 382, 383, - -1, 385, 386, -1, -1, 389, 390, 391, 392, 393, - -1, 395, 396, 397, 398, 399, 400, 401, -1, -1, - 404, 405, 406, 407, 408, -1, -1, 411, 412, 413, - 414, 415, 416, 417, -1, 419, -1, 421, 422, 423, - 424, -1, -1, 427, -1, -1, 430, 431, 432, 433, - 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, - 444, 445, 446, 447, 448, 449, 3, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 18, 19, 20, 21, 22, 23, 24, 25, 26, - 27, 28, 29, -1, -1, -1, -1, -1, -1, -1, - 37, 38, -1, 40, 41, 42, -1, 44, 45, 46, - 47, 48, -1, 50, 51, -1, 53, 54, 55, 56, - 57, -1, -1, 60, 61, 62, 63, 64, -1, 66, - 67, 68, 69, 70, -1, -1, -1, 74, 75, 76, - 77, 78, -1, 80, 81, 82, -1, 84, 85, 86, - 87, 88, 89, -1, -1, 92, 93, 94, -1, -1, - -1, -1, -1, -1, -1, 102, 103, 104, 105, 106, - 107, 108, 109, 110, -1, 112, -1, 114, 115, 116, - 117, 118, 119, -1, 121, 122, 123, 124, -1, -1, - 127, 128, 129, 130, 131, -1, 133, 134, 135, -1, - 137, 138, 139, -1, 141, 142, 143, 144, 145, 146, - 147, 148, 149, -1, 151, -1, 153, 154, 155, 156, - -1, 158, -1, 160, -1, -1, -1, 164, 165, 166, - 167, -1, 169, 170, -1, 172, 173, -1, 175, 176, - 177, 178, 179, -1, 181, 182, 183, 184, -1, 186, - 187, 188, 189, 190, 191, -1, 193, -1, 195, 196, - 197, 198, 199, 200, 201, -1, 203, -1, 205, -1, - -1, 208, -1, 210, 211, 212, 213, 214, -1, -1, - 217, 218, -1, 220, -1, -1, 223, 224, 225, -1, - -1, 228, 229, 230, 231, 232, 233, 234, 235, 236, - 237, 238, 239, 240, 241, 242, 243, 244, -1, 246, - 247, 248, 249, 250, -1, 252, 253, -1, 255, -1, - 257, 258, 259, 260, 261, 262, -1, 264, 265, -1, - -1, 268, 269, 270, -1, -1, 273, 274, -1, 276, - -1, 278, 279, 280, 281, 282, 283, 284, 285, 286, - 287, -1, 289, 290, 291, 292, 293, 294, 295, 296, - -1, 298, 299, 300, 301, 302, 303, 304, 305, 306, - 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, - 317, 318, 319, 320, 321, 322, 323, 324, -1, 326, - 327, -1, 329, 330, 331, 332, 333, 334, 335, 336, - 337, 338, 339, 340, 341, -1, 343, 344, 345, 346, - 347, -1, 349, 350, 351, 352, 353, -1, 355, 356, - 357, 358, -1, 360, 361, 362, 363, 364, 365, 366, - 367, 368, 369, 370, 371, 372, -1, 374, 375, -1, - 377, -1, 379, 380, 381, 382, 383, -1, 385, 386, - -1, -1, 389, 390, 391, 392, 393, -1, 395, 396, - 397, 398, 399, 400, 401, -1, -1, 404, 405, 406, - 407, 408, -1, -1, 411, 412, 413, 414, 415, 416, - 417, -1, 419, -1, 421, 422, 423, 424, -1, -1, - 427, -1, -1, 430, 431, 432, 433, 434, 435, 436, - 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, - 447, 448, 449, 3, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 18, 19, - 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, - -1, -1, -1, -1, -1, -1, -1, 37, 38, -1, - 40, 41, 42, -1, 44, 45, 46, 47, 48, -1, - 50, 51, -1, 53, 54, 55, 56, 57, -1, -1, - 60, 61, 62, 63, 64, -1, 66, 67, 68, 69, - 70, -1, -1, -1, 74, 75, 76, 77, 78, -1, - 80, 81, 82, -1, 84, 85, 86, 87, 88, 89, - -1, -1, 92, 93, 94, -1, -1, -1, -1, -1, - -1, -1, 102, 103, 104, 105, 106, 107, 108, 109, - 110, -1, 112, -1, 114, 115, 116, 117, 118, 119, - -1, 121, 122, 123, 124, -1, -1, 127, 128, 129, - 130, 131, -1, 133, 134, 135, -1, 137, 138, 139, - -1, 141, 142, 143, 144, 145, 146, 147, 148, 149, - -1, 151, -1, 153, 154, 155, 156, -1, 158, -1, - 160, -1, -1, -1, 164, 165, 166, 167, -1, 169, - 170, -1, 172, 173, -1, 175, 176, 177, 178, 179, - -1, 181, 182, 183, 184, -1, 186, 187, 188, 189, - 190, 191, -1, 193, -1, 195, 196, 197, 198, 199, - 200, 201, -1, 203, -1, 205, -1, -1, 208, -1, - 210, 211, 212, 213, 214, -1, -1, 217, 218, -1, - 220, -1, -1, 223, 224, 225, -1, -1, 228, 229, - 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, - 240, 241, 242, 243, 244, -1, 246, 247, 248, 249, - 250, -1, 252, 253, -1, 255, -1, 257, 258, 259, - 260, 261, 262, -1, 264, 265, -1, -1, 268, 269, - 270, -1, -1, 273, 274, -1, 276, -1, 278, 279, - 280, 281, 282, 283, 284, 285, 286, 287, -1, 289, - 290, 291, 292, 293, 294, 295, 296, -1, 298, 299, - 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, - 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, - 320, 321, 322, 323, 324, -1, 326, 327, -1, 329, - 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, - 340, 341, -1, 343, 344, 345, 346, 347, -1, 349, - 350, 351, 352, 353, -1, 355, 356, 357, 358, -1, - 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, - 370, 371, 372, -1, 374, 375, -1, 377, -1, 379, - 380, 381, 382, 383, -1, 385, 386, -1, -1, 389, - 390, 391, 392, 393, -1, 395, 396, 397, 398, 399, - 400, 401, -1, -1, 404, 405, 406, 407, 408, -1, - -1, 411, 412, 413, 414, 415, 416, 417, -1, 419, - -1, 421, 422, 423, 424, -1, -1, 427, -1, -1, - 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, - 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, - 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 18, 19, 20, 21, 22, - 23, 24, 25, -1, 27, 28, 29, -1, -1, -1, - -1, -1, -1, -1, 37, 38, -1, 40, 41, 42, - -1, 44, 45, 46, 47, 48, -1, 50, 51, -1, - 53, 54, 55, 56, 57, -1, -1, 60, 61, 62, - 63, 64, -1, 66, 67, 68, 69, 70, -1, -1, - -1, 74, 75, 76, 77, 78, -1, 80, 81, 82, - -1, 84, 85, 86, 87, 88, 89, -1, -1, 92, - 93, 94, -1, -1, -1, -1, -1, -1, -1, 102, - 103, 104, 105, 106, 107, 108, 109, 110, -1, 112, - -1, 114, 115, 116, 117, 118, 119, -1, 121, 122, - 123, 124, -1, -1, 127, 128, 129, 130, 131, -1, - 133, 134, 135, -1, 137, 138, 139, -1, 141, 142, - 143, 144, 145, 146, 147, 148, 149, -1, 151, -1, - 153, 154, 155, 156, -1, 158, -1, 160, -1, -1, - -1, 164, 165, 166, 167, -1, 169, 170, -1, 172, - 173, -1, 175, 176, 177, 178, 179, -1, 181, 182, - 183, 184, -1, 186, 187, 188, 189, 190, 191, -1, - 193, -1, 195, 196, 197, 198, 199, 200, 201, -1, - 203, -1, 205, -1, -1, 208, -1, 210, 211, 212, - 213, 214, -1, -1, 217, 218, -1, 220, -1, -1, - 223, 224, 225, -1, -1, 228, 229, 230, 231, 232, - 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, - 243, 244, -1, 246, 247, 248, 249, 250, -1, 252, - 253, -1, 255, -1, 257, 258, 259, 260, 261, 262, - -1, 264, 265, -1, 267, 268, 269, 270, -1, -1, - 273, 274, -1, 276, -1, 278, 279, 280, 281, 282, - 283, 284, 285, 286, 287, -1, 289, 290, 291, 292, - 293, 294, 295, 296, -1, 298, 299, 300, 301, 302, - 303, 304, 305, 306, 307, 308, 309, 310, 311, -1, - 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, - 323, 324, -1, 326, 327, -1, 329, 330, 331, 332, - 333, 334, 335, 336, 337, 338, 339, 340, 341, -1, - 343, 344, 345, 346, 347, -1, 349, 350, 351, 352, - 353, -1, 355, 356, 357, 358, -1, 360, 361, 362, - 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, - -1, 374, 375, -1, 377, -1, 379, 380, 381, 382, - 383, -1, 385, 386, -1, -1, 389, 390, 391, 392, - 393, -1, 395, 396, 397, 398, 399, 400, 401, -1, - -1, 404, 405, 406, 407, 408, -1, -1, 411, 412, - 413, 414, 415, 416, 417, -1, 419, -1, 421, 422, - 423, 424, -1, -1, 427, -1, -1, 430, 431, 432, - 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, - 443, 444, 445, 446, 447, 448, 449, 3, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 18, 19, 20, 21, 22, 23, 24, 25, - 26, 27, 28, 29, -1, -1, -1, -1, -1, -1, - -1, 37, 38, -1, 40, 41, 42, -1, 44, 45, - 46, 47, 48, -1, 50, 51, -1, 53, 54, 55, - 56, 57, -1, -1, 60, 61, 62, 63, 64, -1, - 66, 67, 68, 69, 70, -1, -1, -1, 74, 75, - 76, 77, 78, -1, 80, 81, 82, -1, 84, 85, - 86, 87, 88, 89, -1, -1, 92, 93, 94, -1, - -1, -1, -1, -1, -1, -1, 102, 103, 104, 105, - 106, 107, 108, 109, 110, -1, 112, -1, 114, 115, - 116, 117, 118, 119, -1, 121, 122, 123, 124, -1, - -1, 127, 128, 129, 130, 131, -1, 133, 134, 135, - -1, 137, 138, 139, -1, 141, 142, 143, 144, 145, - 146, 147, 148, 149, -1, 151, -1, 153, 154, 155, - 156, -1, 158, -1, 160, -1, -1, -1, 164, 165, - 166, 167, -1, 169, 170, -1, 172, 173, -1, 175, - 176, 177, 178, 179, -1, 181, 182, 183, 184, -1, - 186, 187, 188, 189, 190, 191, -1, 193, -1, 195, - 196, 197, 198, 199, 200, 201, -1, 203, -1, 205, - -1, -1, 208, -1, 210, 211, 212, 213, 214, -1, - -1, 217, 218, -1, 220, -1, -1, 223, 224, 225, - -1, -1, 228, 229, 230, 231, 232, 233, 234, 235, - 236, 237, 238, 239, 240, 241, 242, 243, 244, -1, - 246, 247, 248, 249, 250, -1, 252, 253, -1, 255, - -1, 257, 258, 259, 260, 261, 262, -1, 264, 265, - -1, -1, 268, 269, 270, -1, -1, 273, 274, -1, - 276, -1, 278, 279, 280, 281, 282, 283, 284, 285, - 286, 287, -1, 289, 290, 291, 292, 293, 294, 295, - 296, -1, 298, 299, 300, 301, 302, 303, 304, 305, + 325, 326, 327, -1, 329, 330, 331, 332, 333, 334, + 335, 336, 337, 338, 339, 340, -1, 342, 343, 344, + 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, + 355, 356, 357, 358, 359, -1, 361, 362, 363, 364, + 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, + 375, 376, -1, 378, 379, 380, 381, 382, 383, 384, + 385, 386, 387, 388, 389, 390, 391, 392, -1, 394, + 395, -1, 397, 398, 399, 400, 401, 402, 403, -1, + 405, 406, 407, -1, -1, 410, 411, 412, 413, 414, + -1, 416, 417, 418, 419, 420, 421, 422, 423, -1, + -1, 426, 427, 428, 429, 430, -1, -1, 433, 434, + 435, 436, 437, 438, 439, -1, 441, 442, 443, 444, + 445, 446, -1, -1, 449, -1, -1, 452, 453, 454, + 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, + 465, 466, 467, 468, 469, 470, 471, 3, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 22, 23, 24, 25, + 26, 27, 28, 29, -1, 31, 32, 33, -1, -1, + -1, -1, -1, -1, -1, 41, 42, -1, 44, 45, + 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, + -1, 57, 58, 59, 60, 61, 62, -1, -1, 65, + 66, 67, 68, 69, -1, 71, 72, 73, 74, 75, + -1, 77, -1, 79, 80, 81, 82, 83, 84, 85, + 86, 87, -1, 89, 90, 91, 92, 93, 94, -1, + 96, 97, 98, 99, -1, -1, -1, 103, -1, -1, + 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, + -1, 117, -1, 119, 120, 121, 122, 123, 124, -1, + 126, 127, 128, 129, -1, -1, 132, 133, 134, 135, + 136, -1, 138, 139, 140, -1, 142, 143, 144, -1, + 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, + -1, 157, -1, 159, 160, 161, 162, -1, 164, -1, + 166, 167, -1, 169, 170, 171, 172, 173, -1, 175, + 176, -1, 178, 179, 180, -1, 182, 183, 184, 185, + 186, 187, 188, 189, 190, 191, -1, 193, 194, 195, + 196, 197, 198, 199, -1, 201, 202, 203, 204, 205, + 206, 207, 208, 209, -1, 211, -1, 213, 214, 215, + 216, 217, 218, 219, 220, 221, 222, -1, -1, 225, + 226, 227, 228, 229, -1, 231, 232, 233, -1, -1, + 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, + 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, + 256, 257, 258, 259, 260, 261, 262, 263, 264, -1, + 266, 267, 268, 269, -1, 271, 272, 273, 274, 275, + 276, -1, 278, 279, -1, -1, 282, 283, 284, -1, + -1, 287, 288, 289, 290, 291, 292, 293, 294, 295, + 296, 297, 298, 299, 300, 301, 302, -1, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, - 316, 317, 318, 319, 320, 321, 322, 323, 324, -1, + 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, -1, 329, 330, 331, 332, 333, 334, 335, - 336, 337, 338, 339, 340, 341, -1, 343, 344, 345, - 346, 347, -1, 349, 350, 351, 352, 353, -1, 355, - 356, 357, 358, -1, 360, 361, 362, 363, 364, 365, - 366, 367, 368, 369, 370, 371, 372, -1, 374, 375, - -1, 377, -1, 379, 380, 381, 382, 383, -1, 385, - 386, -1, -1, 389, 390, 391, 392, 393, -1, 395, - 396, 397, 398, 399, 400, 401, -1, -1, 404, 405, - 406, 407, 408, -1, -1, 411, 412, 413, 414, 415, - 416, 417, -1, 419, -1, 421, 422, 423, 424, -1, - -1, 427, -1, -1, 430, 431, 432, 433, 434, 435, - 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, - 446, 447, 448, 449, 3, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 18, - 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, - 29, -1, -1, -1, -1, -1, -1, -1, 37, 38, - -1, 40, 41, 42, -1, 44, 45, 46, 47, 48, - -1, 50, 51, -1, 53, 54, 55, 56, 57, -1, - -1, 60, 61, 62, 63, 64, -1, 66, 67, 68, - 69, 70, -1, -1, -1, 74, 75, 76, 77, 78, - -1, 80, 81, 82, -1, 84, 85, 86, 87, 88, - 89, -1, -1, 92, 93, 94, -1, -1, -1, -1, - -1, -1, -1, 102, 103, 104, 105, 106, 107, 108, - 109, 110, -1, 112, -1, 114, 115, 116, 117, 118, - 119, -1, 121, 122, 123, 124, -1, -1, 127, 128, - 129, 130, 131, -1, 133, 134, 135, -1, 137, 138, - 139, -1, 141, 142, 143, 144, 145, 146, 147, 148, - 149, -1, 151, -1, 153, 154, 155, 156, -1, 158, - -1, 160, -1, -1, -1, 164, 165, 166, 167, -1, - 169, 170, -1, 172, 173, -1, 175, 176, 177, 178, - 179, -1, 181, 182, 183, 184, -1, 186, 187, 188, - 189, 190, 191, -1, 193, -1, 195, 196, 197, 198, - 199, 200, 201, -1, 203, -1, 205, -1, -1, 208, - -1, 210, 211, 212, 213, 214, -1, -1, 217, 218, - -1, 220, -1, -1, 223, 224, 225, -1, -1, 228, - 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, - 239, 240, 241, 242, 243, 244, -1, 246, 247, 248, - 249, 250, -1, 252, 253, -1, 255, -1, 257, 258, - 259, 260, 261, 262, -1, 264, 265, -1, -1, 268, - 269, 270, -1, -1, 273, 274, -1, 276, -1, 278, - 279, 280, 281, 282, 283, 284, 285, 286, 287, -1, - 289, 290, 291, 292, 293, 294, 295, 296, -1, 298, - 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, - 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, - 319, 320, 321, 322, 323, 324, -1, 326, 327, -1, - 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, - 339, 340, 341, -1, 343, 344, 345, 346, 347, -1, - 349, 350, 351, 352, 353, -1, 355, 356, 357, 358, - -1, 360, 361, 362, 363, 364, 365, 366, 367, 368, - 369, 370, 371, 372, -1, 374, 375, -1, 377, -1, - 379, 380, 381, 382, 383, -1, 385, 386, -1, -1, - 389, 390, 391, 392, 393, -1, 395, 396, 397, 398, - 399, 400, 401, -1, -1, 404, 405, 406, 407, 408, - -1, -1, 411, 412, 413, 414, 415, 416, 417, -1, - 419, -1, 421, 422, 423, 424, -1, -1, 427, -1, - -1, 430, 431, 432, 433, 434, 435, 436, 437, 438, - 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, - 449, 3, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 18, 19, 20, 21, - 22, 23, 24, 25, 26, 27, 28, 29, -1, -1, - -1, -1, -1, -1, -1, 37, 38, -1, 40, 41, - 42, -1, 44, 45, 46, 47, 48, -1, 50, 51, - -1, 53, 54, 55, 56, 57, -1, -1, 60, 61, - 62, 63, 64, -1, 66, 67, 68, 69, 70, -1, - -1, -1, 74, 75, 76, 77, 78, -1, 80, 81, - 82, -1, 84, 85, 86, 87, 88, 89, -1, -1, - 92, 93, 94, -1, -1, -1, -1, -1, -1, -1, - 102, 103, 104, 105, 106, 107, 108, 109, 110, -1, - 112, -1, 114, 115, 116, 117, 118, 119, -1, 121, - 122, 123, 124, -1, -1, 127, 128, 129, 130, 131, - -1, 133, 134, 135, -1, 137, 138, 139, -1, 141, - 142, 143, 144, 145, 146, 147, 148, 149, -1, 151, - -1, 153, 154, 155, 156, -1, 158, -1, 160, -1, - -1, -1, 164, 165, 166, 167, -1, 169, 170, -1, - 172, 173, -1, 175, 176, 177, 178, 179, -1, 181, - 182, 183, 184, -1, 186, 187, 188, 189, 190, 191, - -1, 193, -1, 195, 196, 197, 198, 199, 200, 201, - -1, 203, -1, 205, -1, -1, 208, -1, 210, 211, - 212, 213, 214, -1, -1, 217, 218, -1, 220, -1, - -1, 223, 224, 225, -1, -1, 228, 229, 230, 231, - 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, - 242, 243, 244, -1, 246, 247, 248, 249, 250, -1, - 252, 253, -1, 255, -1, 257, 258, 259, 260, 261, - 262, -1, 264, 265, -1, -1, 268, 269, 270, -1, - -1, 273, 274, -1, 276, -1, 278, 279, 280, 281, - 282, 283, 284, 285, 286, 287, -1, 289, 290, 291, - 292, 293, 294, 295, 296, -1, 298, 299, 300, 301, - 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, - -1, 313, 314, 315, 316, 317, 318, 319, 320, 321, - 322, 323, 324, -1, 326, 327, -1, 329, 330, 331, - 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, - -1, 343, 344, 345, 346, 347, -1, 349, 350, 351, - 352, 353, -1, 355, 356, 357, 358, -1, 360, 361, - 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, - 372, -1, 374, 375, -1, 377, -1, 379, 380, 381, - 382, 383, -1, 385, 386, -1, -1, 389, 390, 391, - 392, 393, -1, 395, 396, 397, 398, 399, 400, 401, - -1, -1, 404, 405, 406, 407, 408, -1, -1, 411, - 412, 413, 414, 415, 416, 417, -1, 419, -1, 421, - 422, 423, 424, -1, -1, 427, -1, -1, 430, 431, - 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, - 442, 443, 444, 445, 446, 447, 448, 449, 3, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 18, 19, 20, 21, 22, 23, 24, - 25, -1, 27, 28, 29, -1, -1, -1, -1, -1, - -1, -1, 37, 38, -1, 40, 41, 42, 43, 44, - 45, 46, 47, 48, -1, 50, 51, -1, 53, 54, - 55, 56, 57, -1, -1, 60, 61, 62, 63, 64, - -1, 66, 67, 68, 69, 70, -1, -1, -1, 74, - 75, 76, 77, 78, -1, 80, 81, 82, -1, 84, - 85, 86, 87, 88, 89, -1, -1, 92, 93, 94, - -1, -1, -1, -1, -1, -1, -1, 102, 103, 104, - 105, 106, 107, 108, 109, 110, -1, 112, -1, 114, - 115, 116, 117, 118, 119, -1, 121, 122, 123, 124, - -1, -1, 127, 128, 129, 130, 131, -1, 133, 134, - 135, -1, 137, 138, 139, -1, 141, 142, 143, 144, - 145, 146, 147, 148, 149, -1, 151, -1, 153, 154, - 155, 156, -1, 158, -1, 160, -1, -1, -1, 164, - 165, 166, 167, -1, 169, 170, -1, 172, 173, -1, - 175, 176, 177, 178, 179, -1, 181, 182, 183, 184, - -1, 186, 187, 188, 189, 190, 191, -1, 193, -1, - 195, 196, 197, 198, 199, 200, 201, -1, 203, -1, - 205, -1, -1, 208, -1, 210, 211, 212, 213, 214, - -1, -1, 217, 218, -1, 220, -1, -1, 223, 224, - 225, -1, -1, 228, 229, 230, 231, 232, 233, 234, - 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, - -1, 246, 247, 248, 249, 250, -1, 252, 253, -1, - 255, -1, 257, 258, 259, 260, 261, 262, -1, 264, - 265, -1, -1, 268, 269, 270, -1, -1, 273, 274, - -1, 276, -1, 278, 279, 280, 281, 282, 283, 284, - 285, 286, 287, -1, 289, 290, 291, 292, 293, 294, - 295, 296, -1, 298, 299, 300, 301, 302, 303, 304, - 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, - 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, - -1, 326, 327, -1, 329, 330, 331, 332, 333, 334, - 335, 336, 337, 338, 339, 340, 341, -1, 343, 344, - 345, 346, 347, -1, 349, 350, 351, 352, 353, -1, - 355, 356, 357, 358, -1, 360, 361, 362, 363, 364, - 365, 366, 367, 368, 369, 370, 371, 372, -1, 374, - 375, -1, 377, -1, 379, 380, 381, 382, 383, -1, - 385, 386, -1, -1, 389, 390, 391, 392, 393, -1, - 395, 396, 397, 398, 399, 400, 401, -1, -1, 404, - 405, 406, 407, 408, -1, -1, 411, 412, 413, 414, - 415, 416, 417, -1, 419, -1, 421, 422, 423, 424, - -1, -1, 427, -1, -1, 430, 431, 432, 433, 434, - 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, - 445, 446, 447, 448, 449, 3, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 18, 19, 20, 21, 22, 23, 24, 25, -1, 27, - 28, 29, -1, -1, -1, -1, -1, -1, -1, 37, - 38, -1, 40, 41, 42, -1, 44, 45, 46, 47, - 48, -1, 50, 51, -1, 53, 54, 55, 56, 57, - -1, -1, 60, 61, 62, 63, 64, -1, 66, 67, - 68, 69, 70, -1, -1, -1, 74, 75, 76, 77, - 78, -1, 80, 81, 82, -1, 84, 85, 86, 87, - 88, 89, -1, -1, 92, 93, 94, -1, -1, -1, - -1, -1, -1, -1, 102, 103, 104, 105, 106, 107, - 108, 109, 110, -1, 112, -1, 114, 115, 116, 117, - 118, 119, -1, 121, 122, 123, 124, -1, -1, 127, - 128, 129, 130, 131, -1, 133, 134, 135, -1, 137, - 138, 139, -1, 141, 142, 143, 144, 145, 146, 147, - 148, 149, -1, 151, -1, 153, 154, 155, 156, -1, - 158, -1, 160, -1, -1, -1, 164, 165, 166, 167, - -1, 169, 170, -1, 172, 173, -1, 175, 176, 177, - 178, 179, -1, 181, 182, 183, 184, -1, 186, 187, - 188, 189, 190, 191, -1, 193, -1, 195, 196, 197, - 198, 199, 200, 201, -1, 203, -1, 205, -1, -1, - 208, -1, 210, 211, 212, 213, 214, -1, -1, 217, - 218, -1, 220, -1, -1, 223, 224, 225, -1, -1, - 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, - 238, 239, 240, 241, 242, 243, 244, -1, 246, 247, - 248, 249, 250, -1, 252, 253, -1, 255, -1, 257, - 258, 259, 260, 261, 262, -1, 264, 265, -1, 267, - 268, 269, 270, -1, -1, 273, 274, -1, 276, -1, - 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, - -1, 289, 290, 291, 292, 293, 294, 295, 296, -1, - 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, - 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, - 318, 319, 320, 321, 322, 323, 324, -1, 326, 327, - -1, 329, 330, 331, 332, 333, 334, 335, 336, 337, - 338, 339, 340, 341, -1, 343, 344, 345, 346, 347, - -1, 349, 350, 351, 352, 353, -1, 355, 356, 357, - 358, -1, 360, 361, 362, 363, 364, 365, 366, 367, - 368, 369, 370, 371, 372, -1, 374, 375, -1, 377, - -1, 379, 380, 381, 382, 383, -1, 385, 386, -1, - -1, 389, 390, 391, 392, 393, -1, 395, 396, 397, - 398, 399, 400, 401, -1, -1, 404, 405, 406, 407, - 408, -1, -1, 411, 412, 413, 414, 415, 416, 417, - -1, 419, -1, 421, 422, 423, 424, -1, -1, 427, - -1, -1, 430, 431, 432, 433, 434, 435, 436, 437, - 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, - 448, 449, 3, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 18, 19, 20, - 21, 22, 23, 24, 25, 26, 27, 28, 29, -1, - -1, -1, -1, -1, -1, -1, 37, 38, -1, 40, - 41, 42, -1, 44, 45, 46, 47, 48, -1, 50, - 51, -1, 53, 54, 55, 56, 57, -1, -1, 60, - 61, 62, 63, 64, -1, 66, 67, 68, 69, 70, - -1, -1, -1, 74, 75, 76, 77, 78, -1, 80, - 81, 82, -1, 84, 85, 86, 87, 88, 89, -1, - -1, 92, 93, 94, -1, -1, -1, -1, -1, -1, - -1, 102, 103, 104, 105, 106, 107, 108, 109, 110, - -1, 112, -1, 114, 115, 116, 117, 118, 119, -1, - 121, 122, 123, 124, -1, -1, 127, 128, 129, 130, - 131, -1, 133, 134, 135, -1, 137, 138, 139, -1, - 141, 142, 143, 144, 145, 146, 147, 148, 149, -1, - 151, -1, 153, 154, 155, 156, -1, 158, -1, 160, - -1, -1, -1, 164, 165, 166, 167, -1, 169, 170, - -1, 172, 173, -1, 175, 176, 177, 178, 179, -1, - 181, 182, 183, 184, -1, 186, 187, 188, 189, 190, - 191, -1, 193, -1, 195, 196, 197, 198, 199, 200, - 201, -1, 203, -1, 205, -1, -1, 208, -1, 210, - 211, 212, 213, 214, -1, -1, 217, 218, -1, 220, - -1, -1, 223, 224, 225, -1, -1, 228, 229, 230, - 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, - 241, 242, 243, 244, -1, 246, 247, 248, 249, 250, - -1, 252, 253, -1, 255, -1, 257, 258, 259, 260, - 261, 262, -1, 264, 265, -1, -1, 268, 269, 270, - -1, -1, 273, 274, -1, 276, -1, 278, 279, 280, - 281, 282, 283, 284, 285, 286, 287, -1, 289, 290, - 291, 292, 293, 294, 295, 296, -1, 298, 299, 300, - 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, - 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, - 321, 322, 323, 324, -1, 326, 327, -1, 329, 330, - 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, - 341, -1, 343, 344, 345, 346, 347, -1, 349, 350, - 351, 352, 353, -1, 355, 356, 357, 358, -1, 360, - 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, - 371, 372, -1, 374, 375, -1, 377, -1, 379, 380, - 381, 382, 383, -1, 385, 386, -1, -1, 389, 390, - 391, 392, 393, -1, 395, 396, 397, 398, 399, 400, - 401, -1, -1, 404, 405, 406, 407, 408, -1, -1, - 411, 412, 413, 414, 415, 416, 417, -1, 419, -1, - 421, 422, 423, 424, -1, -1, 427, -1, -1, 430, - 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, - 441, 442, 443, 444, 445, 446, 447, 448, 449, 3, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 18, 19, 20, 21, 22, 23, - 24, 25, 26, 27, 28, 29, -1, -1, -1, -1, - -1, -1, -1, 37, 38, -1, 40, 41, 42, -1, - 44, 45, 46, 47, 48, -1, 50, 51, -1, 53, - 54, 55, 56, 57, -1, -1, 60, 61, 62, 63, - 64, -1, 66, 67, 68, 69, 70, -1, -1, -1, - 74, 75, 76, 77, 78, -1, 80, 81, 82, -1, - 84, 85, 86, 87, 88, 89, -1, -1, 92, 93, - 94, -1, -1, -1, -1, -1, -1, -1, 102, 103, - 104, 105, 106, 107, 108, 109, 110, -1, 112, -1, - 114, 115, 116, 117, 118, 119, -1, 121, 122, 123, - 124, -1, -1, 127, 128, 129, 130, 131, -1, 133, - 134, 135, -1, 137, 138, 139, -1, 141, 142, 143, - 144, 145, 146, 147, 148, 149, -1, 151, -1, 153, - 154, 155, 156, -1, 158, -1, 160, -1, -1, -1, - 164, 165, 166, 167, -1, 169, 170, -1, 172, 173, - -1, 175, 176, 177, 178, 179, -1, 181, 182, 183, - 184, -1, 186, 187, 188, 189, 190, 191, -1, 193, - -1, 195, 196, 197, 198, 199, 200, 201, -1, 203, - -1, 205, -1, -1, 208, -1, 210, 211, 212, 213, - 214, -1, -1, 217, 218, -1, 220, -1, -1, 223, - 224, 225, -1, -1, 228, 229, 230, 231, 232, 233, - 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, - 244, -1, 246, 247, 248, 249, 250, -1, 252, 253, - -1, 255, -1, 257, 258, 259, 260, 261, 262, -1, - 264, 265, -1, -1, 268, 269, 270, -1, -1, 273, - 274, -1, 276, -1, 278, 279, 280, 281, 282, 283, - 284, 285, 286, 287, -1, 289, 290, 291, 292, 293, - 294, 295, 296, -1, 298, 299, 300, 301, 302, 303, - 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, - 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, - 324, -1, 326, 327, -1, 329, 330, 331, 332, 333, - 334, 335, 336, 337, 338, 339, 340, 341, -1, 343, - 344, 345, 346, 347, -1, 349, 350, 351, 352, 353, - -1, 355, 356, 357, 358, -1, 360, 361, 362, 363, - 364, 365, 366, 367, 368, 369, 370, 371, 372, -1, - 374, 375, -1, 377, -1, 379, 380, 381, 382, 383, - -1, 385, 386, -1, -1, 389, 390, 391, 392, 393, - -1, 395, 396, 397, 398, 399, 400, 401, -1, -1, - 404, 405, 406, 407, 408, -1, -1, 411, 412, 413, - 414, 415, 416, 417, -1, 419, -1, 421, 422, 423, - 424, -1, -1, 427, -1, -1, 430, 431, 432, 433, - 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, - 444, 445, 446, 447, 448, 449, 3, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 18, 19, 20, 21, 22, 23, 24, 25, -1, - 27, 28, 29, -1, -1, -1, -1, -1, -1, -1, - 37, 38, -1, 40, 41, 42, -1, 44, 45, 46, - 47, 48, -1, 50, 51, -1, 53, 54, 55, 56, - 57, -1, -1, 60, 61, 62, 63, 64, -1, 66, - 67, 68, 69, 70, -1, -1, -1, 74, 75, 76, - 77, 78, -1, 80, 81, 82, -1, 84, 85, 86, - 87, 88, 89, -1, -1, 92, 93, 94, -1, -1, - -1, -1, -1, -1, -1, 102, 103, 104, 105, 106, - 107, 108, 109, 110, -1, 112, -1, 114, 115, 116, - 117, 118, 119, -1, 121, 122, 123, 124, -1, -1, - 127, 128, 129, 130, 131, -1, 133, 134, 135, -1, - 137, 138, 139, -1, 141, 142, 143, 144, 145, 146, - 147, 148, 149, -1, 151, -1, 153, 154, 155, 156, - -1, 158, -1, 160, -1, -1, -1, 164, 165, 166, - 167, -1, 169, 170, -1, 172, 173, -1, 175, 176, - 177, 178, 179, -1, 181, 182, 183, 184, -1, 186, - 187, 188, 189, 190, 191, -1, 193, -1, 195, 196, - 197, 198, 199, 200, 201, -1, 203, -1, 205, -1, - -1, 208, -1, 210, 211, 212, 213, 214, -1, -1, - 217, 218, -1, 220, -1, -1, 223, 224, 225, -1, - -1, 228, 229, 230, 231, 232, 233, 234, 235, 236, - 237, 238, 239, 240, 241, 242, 243, 244, -1, 246, - 247, 248, 249, 250, -1, 252, 253, -1, 255, -1, - 257, 258, 259, 260, 261, 262, -1, 264, 265, -1, - -1, 268, 269, 270, -1, -1, 273, 274, -1, 276, - -1, 278, 279, 280, 281, 282, 283, 284, 285, 286, - 287, -1, 289, 290, 291, 292, 293, 294, 295, 296, - -1, 298, 299, 300, 301, 302, 303, 304, 305, 306, + 336, 337, 338, 339, 340, -1, 342, 343, 344, 345, + 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, + 356, 357, 358, 359, -1, 361, 362, 363, 364, 365, + 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, + 376, -1, 378, 379, 380, 381, 382, 383, 384, 385, + 386, 387, 388, 389, 390, 391, 392, -1, 394, 395, + -1, 397, 398, 399, 400, 401, 402, 403, -1, 405, + 406, 407, -1, -1, 410, 411, 412, 413, 414, -1, + 416, 417, 418, 419, 420, 421, 422, 423, -1, -1, + 426, 427, 428, 429, 430, 431, -1, 433, 434, 435, + 436, 437, 438, 439, -1, 441, 442, 443, 444, 445, + 446, -1, -1, 449, -1, -1, 452, 453, 454, 455, + 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, + 466, 467, 468, 469, 470, 471, 3, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, + 27, 28, 29, -1, 31, 32, 33, -1, -1, -1, + -1, -1, -1, -1, 41, 42, -1, 44, 45, 46, + 47, 48, 49, 50, 51, 52, 53, 54, 55, -1, + 57, 58, 59, 60, 61, 62, -1, -1, 65, 66, + 67, 68, 69, -1, 71, 72, 73, 74, 75, -1, + 77, -1, 79, 80, 81, 82, 83, 84, 85, 86, + 87, -1, 89, 90, 91, 92, 93, 94, -1, 96, + 97, 98, 99, -1, -1, -1, 103, -1, -1, 106, + 107, 108, 109, 110, 111, 112, 113, 114, 115, -1, + 117, -1, 119, 120, 121, 122, 123, 124, -1, 126, + 127, 128, 129, -1, -1, 132, 133, 134, 135, 136, + -1, 138, 139, 140, -1, 142, 143, 144, -1, 146, + 147, 148, 149, 150, 151, 152, 153, 154, 155, -1, + 157, -1, 159, 160, 161, 162, -1, 164, -1, 166, + 167, -1, 169, 170, 171, 172, 173, -1, 175, 176, + 177, 178, 179, 180, -1, 182, 183, 184, 185, 186, + 187, 188, 189, 190, 191, -1, 193, 194, 195, 196, + 197, 198, 199, -1, 201, 202, 203, 204, 205, 206, + 207, 208, 209, -1, 211, -1, 213, 214, 215, 216, + 217, 218, 219, 220, 221, 222, -1, -1, 225, 226, + 227, 228, 229, -1, 231, 232, 233, -1, -1, 236, + 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, + 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, + 257, 258, 259, 260, 261, 262, 263, 264, -1, 266, + 267, 268, 269, -1, 271, 272, 273, 274, 275, 276, + -1, 278, 279, -1, -1, 282, 283, 284, -1, -1, + 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, + 297, 298, 299, 300, 301, 302, -1, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, - 317, 318, 319, 320, 321, 322, 323, 324, -1, 326, + 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, -1, 329, 330, 331, 332, 333, 334, 335, 336, - 337, 338, 339, 340, 341, -1, 343, 344, 345, 346, - 347, -1, 349, 350, 351, 352, 353, -1, 355, 356, - 357, 358, -1, 360, 361, 362, 363, 364, 365, 366, - 367, 368, 369, 370, 371, 372, -1, 374, 375, 376, - 377, -1, 379, 380, 381, 382, 383, -1, 385, 386, - -1, -1, 389, 390, 391, 392, 393, -1, 395, 396, - 397, 398, 399, 400, 401, -1, -1, 404, 405, 406, - 407, 408, -1, -1, 411, 412, 413, 414, 415, 416, - 417, -1, 419, -1, 421, 422, 423, 424, -1, -1, - 427, -1, -1, 430, 431, 432, 433, 434, 435, 436, - 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, - 447, 448, 449, 3, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 18, 19, - 20, 21, 22, 23, 24, 25, -1, 27, 28, 29, - -1, -1, -1, -1, -1, 35, -1, 37, 38, -1, - 40, 41, 42, -1, 44, 45, 46, 47, 48, -1, - 50, 51, -1, 53, 54, 55, 56, 57, -1, -1, - 60, 61, 62, 63, 64, -1, 66, 67, 68, 69, - 70, -1, -1, -1, 74, 75, 76, 77, 78, -1, - 80, 81, 82, -1, 84, 85, 86, 87, 88, 89, - -1, -1, 92, 93, 94, -1, -1, -1, -1, -1, - -1, -1, 102, 103, 104, 105, 106, 107, 108, 109, - 110, -1, 112, -1, 114, 115, 116, 117, 118, 119, - -1, 121, 122, 123, 124, -1, -1, 127, 128, 129, - 130, 131, -1, 133, 134, 135, -1, 137, 138, 139, - -1, 141, 142, 143, 144, 145, 146, 147, 148, 149, - -1, 151, -1, 153, 154, 155, 156, -1, 158, -1, - 160, -1, -1, -1, 164, 165, 166, 167, -1, 169, - 170, -1, 172, 173, -1, 175, 176, 177, 178, 179, - -1, 181, 182, 183, 184, -1, 186, 187, 188, 189, - 190, 191, -1, 193, -1, 195, 196, 197, 198, 199, - 200, 201, -1, 203, -1, 205, -1, -1, 208, -1, - 210, 211, 212, 213, 214, -1, -1, 217, 218, -1, - 220, -1, -1, 223, 224, 225, -1, -1, 228, 229, - 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, - 240, 241, 242, 243, 244, -1, 246, 247, 248, 249, - 250, -1, 252, 253, -1, 255, -1, 257, 258, 259, - 260, 261, 262, -1, 264, 265, -1, -1, 268, 269, - 270, -1, -1, 273, 274, -1, 276, -1, 278, 279, - 280, 281, 282, 283, 284, 285, 286, 287, -1, 289, - 290, 291, 292, 293, 294, 295, 296, -1, 298, 299, - 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, - 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, - 320, 321, 322, 323, 324, -1, 326, 327, -1, 329, - 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, - 340, 341, -1, 343, 344, 345, 346, 347, -1, 349, - 350, 351, 352, 353, -1, 355, 356, 357, 358, -1, - 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, - 370, 371, 372, -1, 374, 375, -1, 377, -1, 379, - 380, 381, 382, 383, -1, 385, 386, -1, -1, 389, - 390, 391, 392, 393, -1, 395, 396, 397, 398, 399, - 400, 401, -1, -1, 404, 405, 406, 407, 408, -1, - -1, 411, 412, 413, 414, 415, 416, 417, -1, 419, - -1, 421, 422, 423, 424, -1, -1, 427, -1, -1, - 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, - 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, - 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 18, 19, 20, 21, 22, - 23, 24, 25, -1, 27, 28, 29, -1, -1, -1, - -1, -1, 35, -1, 37, 38, -1, 40, 41, 42, - -1, 44, 45, 46, 47, 48, -1, 50, 51, -1, - 53, 54, 55, 56, 57, -1, -1, 60, 61, 62, - 63, 64, -1, 66, 67, 68, 69, 70, -1, -1, - -1, 74, 75, 76, 77, 78, -1, 80, 81, 82, - -1, 84, 85, 86, 87, 88, 89, -1, -1, 92, - 93, 94, -1, -1, -1, -1, -1, -1, -1, 102, - 103, 104, 105, 106, 107, 108, 109, 110, -1, 112, - -1, 114, 115, 116, 117, 118, 119, -1, 121, 122, - 123, 124, -1, -1, 127, 128, 129, 130, 131, -1, - 133, 134, 135, -1, 137, 138, 139, -1, 141, 142, - 143, 144, 145, 146, 147, 148, 149, -1, 151, -1, - 153, 154, 155, 156, -1, 158, -1, 160, -1, -1, - -1, 164, 165, 166, 167, -1, 169, 170, -1, 172, - 173, -1, 175, 176, 177, 178, 179, -1, 181, 182, - 183, 184, -1, 186, 187, 188, 189, 190, 191, -1, - 193, -1, 195, 196, 197, 198, 199, 200, 201, -1, - 203, -1, 205, -1, -1, 208, -1, 210, 211, 212, - 213, 214, -1, -1, 217, 218, -1, 220, -1, -1, - 223, 224, 225, -1, -1, 228, 229, 230, 231, 232, - 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, - 243, 244, -1, 246, 247, 248, 249, 250, -1, 252, - 253, -1, 255, -1, 257, 258, 259, 260, 261, 262, - -1, 264, 265, -1, -1, 268, 269, 270, -1, -1, - 273, 274, -1, 276, -1, 278, 279, 280, 281, 282, - 283, 284, 285, 286, 287, -1, 289, 290, 291, 292, - 293, 294, 295, 296, -1, 298, 299, 300, 301, 302, - 303, 304, 305, 306, 307, 308, 309, 310, 311, -1, - 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, - 323, 324, -1, 326, 327, -1, 329, 330, 331, 332, - 333, 334, 335, 336, 337, 338, 339, 340, 341, -1, - 343, 344, 345, 346, 347, -1, 349, 350, 351, 352, - 353, -1, 355, 356, 357, 358, -1, 360, 361, 362, - 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, - -1, 374, 375, -1, 377, -1, 379, 380, 381, 382, - 383, -1, 385, 386, -1, -1, 389, 390, 391, 392, - 393, -1, 395, 396, 397, 398, 399, 400, 401, -1, - -1, 404, 405, 406, 407, 408, -1, -1, 411, 412, - 413, 414, 415, 416, 417, -1, 419, -1, 421, 422, - 423, 424, -1, -1, 427, -1, -1, 430, 431, 432, - 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, - 443, 444, 445, 446, 447, 448, 449, 3, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 18, 19, 20, 21, 22, 23, 24, 25, - -1, 27, 28, 29, -1, -1, -1, -1, -1, -1, - -1, 37, 38, -1, 40, 41, 42, -1, 44, 45, - 46, 47, 48, -1, 50, 51, -1, 53, 54, 55, - 56, 57, -1, -1, 60, 61, 62, 63, 64, -1, - 66, 67, 68, 69, 70, -1, -1, -1, 74, 75, - 76, 77, 78, -1, 80, 81, 82, -1, 84, 85, - 86, 87, 88, 89, -1, -1, 92, 93, 94, -1, - -1, -1, -1, -1, -1, -1, 102, 103, 104, 105, - 106, 107, 108, 109, 110, -1, 112, -1, 114, 115, - 116, 117, 118, 119, -1, 121, 122, 123, 124, -1, - -1, 127, 128, 129, 130, 131, -1, 133, 134, 135, - -1, 137, 138, 139, -1, 141, 142, 143, 144, 145, - 146, 147, 148, 149, -1, 151, -1, 153, 154, 155, - 156, -1, 158, -1, 160, -1, -1, -1, 164, 165, - 166, 167, -1, 169, 170, -1, 172, 173, -1, 175, - 176, 177, 178, 179, -1, 181, 182, 183, 184, -1, - 186, 187, 188, 189, 190, 191, -1, 193, -1, 195, - 196, 197, 198, 199, 200, 201, -1, 203, -1, 205, - -1, -1, 208, -1, 210, 211, 212, 213, 214, -1, - -1, 217, 218, -1, 220, -1, -1, 223, 224, 225, - -1, -1, 228, 229, 230, 231, 232, 233, 234, 235, - 236, 237, 238, 239, 240, 241, 242, 243, 244, -1, - 246, 247, 248, 249, 250, -1, 252, 253, -1, 255, - -1, 257, 258, 259, 260, 261, 262, -1, 264, 265, - -1, -1, 268, 269, 270, -1, -1, 273, 274, -1, - 276, -1, 278, 279, 280, 281, 282, 283, 284, 285, - 286, 287, -1, 289, 290, 291, 292, 293, 294, 295, - 296, -1, 298, 299, 300, 301, 302, 303, 304, 305, - 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, - 316, 317, 318, 319, 320, 321, 322, 323, 324, -1, - 326, 327, -1, 329, 330, 331, 332, 333, 334, 335, - 336, 337, 338, 339, 340, 341, -1, 343, 344, 345, - 346, 347, -1, 349, 350, 351, 352, 353, -1, 355, - 356, 357, 358, -1, 360, 361, 362, 363, 364, 365, - 366, 367, 368, 369, 370, 371, 372, -1, 374, 375, - -1, 377, -1, 379, 380, 381, 382, 383, -1, 385, - 386, -1, -1, 389, 390, 391, 392, 393, -1, 395, - 396, 397, 398, 399, 400, 401, -1, -1, 404, 405, - 406, 407, 408, -1, -1, 411, 412, 413, 414, 415, - 416, 417, -1, 419, -1, 421, 422, 423, 424, -1, - -1, 427, -1, -1, 430, 431, 432, 433, 434, 435, - 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, - 446, 447, 448, 449, 3, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 18, - 19, 20, 21, 22, 23, 24, 25, -1, 27, 28, - 29, -1, -1, -1, -1, -1, -1, -1, 37, 38, - -1, 40, 41, 42, -1, 44, 45, 46, 47, 48, - -1, 50, 51, -1, 53, 54, 55, 56, 57, -1, - -1, 60, 61, 62, 63, 64, -1, 66, 67, 68, - 69, 70, -1, -1, -1, 74, 75, 76, 77, 78, - -1, 80, 81, 82, -1, 84, 85, 86, 87, 88, - 89, -1, -1, 92, 93, 94, -1, -1, -1, -1, - -1, -1, -1, 102, 103, 104, 105, 106, 107, 108, - 109, 110, -1, 112, -1, 114, 115, 116, 117, 118, - 119, -1, 121, 122, 123, 124, -1, -1, 127, 128, - 129, 130, 131, -1, 133, 134, 135, -1, 137, 138, - 139, -1, 141, 142, 143, 144, 145, 146, 147, 148, - 149, -1, 151, -1, 153, 154, 155, 156, -1, 158, - -1, 160, -1, -1, -1, 164, 165, 166, 167, -1, - 169, 170, -1, 172, 173, -1, 175, 176, 177, 178, - 179, -1, 181, 182, 183, 184, -1, 186, 187, 188, - 189, 190, 191, -1, 193, -1, 195, 196, 197, 198, - 199, 200, 201, -1, 203, -1, 205, -1, -1, 208, - -1, 210, 211, 212, 213, 214, -1, -1, 217, 218, - -1, 220, -1, -1, 223, 224, 225, -1, -1, 228, - 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, - 239, 240, 241, 242, 243, 244, -1, 246, 247, 248, - 249, 250, -1, 252, 253, -1, 255, -1, 257, 258, - 259, 260, 261, 262, -1, 264, 265, -1, -1, 268, - 269, 270, -1, -1, 273, 274, -1, 276, -1, 278, - 279, 280, 281, 282, 283, 284, 285, 286, 287, -1, - 289, 290, 291, 292, 293, 294, 295, 296, -1, 298, - 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, - 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, - 319, 320, 321, 322, 323, 324, -1, 326, 327, -1, - 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, - 339, 340, 341, -1, 343, 344, 345, 346, 347, -1, - 349, 350, 351, 352, 353, -1, 355, 356, 357, 358, - -1, 360, 361, 362, 363, 364, 365, 366, 367, 368, - 369, 370, 371, 372, -1, 374, 375, -1, 377, -1, - 379, 380, 381, 382, 383, -1, 385, 386, -1, -1, - 389, 390, 391, 392, 393, -1, 395, 396, 397, 398, - 399, 400, 401, -1, -1, 404, 405, 406, 407, 408, - -1, -1, 411, 412, 413, 414, 415, 416, 417, -1, - 419, -1, 421, 422, 423, 424, -1, -1, 427, -1, - -1, 430, 431, 432, 433, 434, 435, 436, 437, 438, - 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, - 449, 3, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 18, 19, 20, 21, - 22, 23, 24, 25, -1, 27, 28, 29, -1, -1, - -1, -1, -1, -1, -1, 37, 38, -1, 40, 41, - 42, -1, 44, 45, 46, 47, 48, -1, 50, 51, - -1, 53, 54, 55, 56, 57, -1, -1, 60, 61, - 62, 63, 64, -1, 66, 67, 68, 69, 70, -1, - -1, -1, 74, 75, 76, 77, 78, -1, 80, 81, - 82, -1, 84, 85, 86, 87, 88, 89, -1, -1, - 92, 93, 94, -1, -1, -1, -1, -1, -1, -1, - 102, 103, 104, 105, 106, 107, 108, 109, 110, -1, - 112, -1, 114, 115, 116, 117, 118, 119, -1, 121, - 122, 123, 124, -1, -1, 127, 128, 129, 130, 131, - -1, 133, 134, 135, -1, 137, 138, 139, -1, 141, - 142, 143, 144, 145, 146, 147, 148, 149, -1, 151, - -1, 153, 154, 155, 156, -1, 158, -1, 160, -1, - -1, -1, 164, 165, 166, 167, -1, 169, 170, -1, - 172, 173, -1, 175, 176, 177, 178, 179, -1, 181, - 182, 183, 184, -1, 186, 187, 188, 189, 190, 191, - -1, 193, -1, 195, 196, 197, 198, 199, 200, 201, - -1, 203, -1, 205, -1, -1, 208, -1, 210, 211, - 212, 213, 214, -1, -1, 217, 218, -1, 220, -1, - -1, 223, 224, 225, -1, -1, 228, 229, 230, 231, - 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, - 242, 243, 244, -1, 246, 247, 248, 249, 250, -1, - 252, 253, -1, 255, -1, 257, 258, 259, 260, 261, - 262, -1, 264, 265, -1, -1, 268, 269, 270, -1, - -1, 273, 274, -1, 276, -1, 278, 279, 280, 281, - 282, 283, 284, 285, 286, 287, -1, 289, 290, 291, - 292, 293, 294, 295, 296, -1, 298, 299, 300, 301, - 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, - -1, 313, 314, 315, 316, 317, 318, 319, 320, 321, - 322, 323, 324, -1, 326, 327, -1, 329, 330, 331, - 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, - -1, 343, 344, 345, 346, 347, -1, 349, 350, 351, - 352, 353, -1, 355, 356, 357, 358, -1, 360, 361, - 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, - 372, -1, 374, 375, -1, 377, -1, 379, 380, 381, - 382, 383, -1, 385, 386, -1, -1, 389, 390, 391, - 392, 393, -1, 395, 396, 397, 398, 399, 400, 401, - -1, -1, 404, 405, 406, 407, 408, -1, -1, 411, - 412, 413, 414, 415, 416, 417, -1, 419, -1, 421, - 422, 423, 424, -1, -1, 427, -1, -1, 430, 431, - 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, - 442, 443, 444, 445, 446, 447, 448, 449, 3, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 18, 19, 20, 21, 22, 23, 24, - 25, -1, 27, 28, 29, -1, -1, -1, -1, -1, - -1, -1, 37, 38, -1, 40, 41, 42, -1, 44, - 45, 46, 47, 48, -1, 50, 51, -1, 53, 54, - 55, 56, 57, -1, -1, 60, 61, 62, 63, 64, - -1, 66, 67, 68, 69, 70, -1, -1, -1, 74, - 75, 76, 77, 78, -1, 80, 81, 82, -1, 84, - 85, 86, 87, 88, 89, -1, -1, 92, 93, 94, - -1, -1, -1, -1, -1, -1, -1, 102, 103, 104, - 105, 106, 107, 108, 109, 110, -1, 112, -1, 114, - 115, 116, 117, 118, 119, -1, 121, 122, 123, 124, - -1, -1, 127, 128, 129, 130, 131, -1, 133, 134, - 135, -1, 137, 138, 139, -1, 141, 142, 143, 144, - 145, 146, 147, 148, 149, -1, 151, -1, 153, 154, - 155, 156, -1, 158, -1, 160, -1, -1, -1, 164, - 165, 166, 167, -1, 169, 170, -1, 172, 173, -1, - 175, 176, 177, 178, 179, -1, 181, 182, 183, 184, - -1, 186, 187, 188, 189, 190, 191, -1, 193, -1, - 195, 196, 197, 198, 199, 200, 201, -1, 203, -1, - 205, -1, -1, 208, -1, 210, 211, 212, 213, 214, - -1, -1, 217, 218, -1, 220, -1, -1, 223, 224, - 225, -1, -1, 228, 229, 230, 231, 232, 233, 234, - 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, - -1, 246, 247, 248, 249, 250, -1, 252, 253, -1, - 255, -1, 257, 258, 259, 260, 261, 262, -1, 264, - 265, -1, -1, 268, 269, 270, -1, -1, 273, 274, - -1, 276, -1, 278, 279, 280, 281, 282, 283, 284, - 285, 286, 287, -1, 289, 290, 291, 292, 293, 294, - 295, 296, -1, 298, 299, 300, 301, 302, 303, 304, - 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, - 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, - -1, 326, 327, -1, 329, 330, 331, 332, 333, 334, - 335, 336, 337, 338, 339, 340, 341, -1, 343, 344, - 345, 346, 347, -1, 349, 350, 351, 352, 353, -1, - 355, 356, 357, 358, -1, 360, 361, 362, 363, 364, - 365, 366, 367, 368, 369, 370, 371, 372, -1, 374, - 375, -1, 377, -1, 379, 380, 381, 382, 383, -1, - 385, 386, -1, -1, 389, 390, 391, 392, 393, -1, - 395, 396, 397, 398, 399, 400, 401, -1, -1, 404, - 405, 406, 407, 408, -1, -1, 411, 412, 413, 414, - 415, 416, 417, -1, 419, -1, 421, 422, 423, 424, - -1, -1, 427, -1, -1, 430, 431, 432, 433, 434, - 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, - 445, 446, 447, 448, 449, 3, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 18, 19, 20, 21, 22, 23, 24, 25, -1, 27, - 28, 29, -1, -1, -1, -1, -1, -1, -1, 37, - 38, -1, 40, 41, 42, -1, 44, 45, 46, 47, - 48, -1, 50, 51, -1, 53, 54, 55, 56, 57, - -1, -1, 60, 61, 62, 63, 64, -1, 66, 67, - 68, 69, 70, -1, -1, -1, 74, 75, 76, 77, - 78, -1, 80, 81, 82, -1, 84, 85, 86, 87, - 88, 89, -1, -1, 92, 93, 94, -1, -1, -1, - -1, -1, -1, -1, 102, 103, 104, 105, 106, 107, - 108, 109, 110, -1, 112, -1, 114, 115, 116, 117, - 118, 119, -1, 121, 122, 123, 124, -1, -1, 127, - 128, 129, 130, 131, -1, 133, 134, 135, -1, 137, - 138, 139, -1, 141, 142, 143, 144, 145, 146, 147, - 148, 149, -1, 151, -1, 153, 154, 155, 156, -1, - 158, -1, 160, -1, -1, -1, 164, 165, 166, 167, - -1, 169, 170, -1, 172, 173, -1, 175, 176, 177, - 178, 179, -1, 181, 182, 183, 184, -1, 186, 187, - 188, 189, 190, 191, -1, 193, -1, 195, 196, 197, - 198, 199, 200, 201, -1, 203, -1, 205, -1, -1, - 208, -1, 210, 211, 212, 213, 214, -1, -1, 217, - 218, -1, 220, -1, -1, 223, 224, 225, -1, -1, - 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, - 238, 239, 240, 241, 242, 243, 244, -1, 246, 247, - 248, 249, 250, -1, 252, 253, -1, 255, -1, 257, - 258, 259, 260, 261, 262, -1, 264, 265, -1, -1, - 268, 269, 270, -1, -1, 273, 274, -1, 276, -1, - 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, - -1, 289, 290, 291, 292, 293, 294, 295, 296, -1, - 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, + 337, 338, 339, 340, -1, 342, 343, 344, 345, 346, + 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, + 357, 358, 359, -1, 361, 362, 363, 364, 365, 366, + 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, + -1, 378, 379, 380, 381, 382, 383, 384, 385, 386, + 387, 388, 389, 390, 391, 392, -1, 394, 395, -1, + 397, 398, 399, 400, 401, 402, 403, -1, 405, 406, + 407, -1, -1, 410, 411, 412, 413, 414, -1, 416, + 417, 418, 419, 420, 421, 422, 423, -1, -1, 426, + 427, 428, 429, 430, -1, -1, 433, 434, 435, 436, + 437, 438, 439, -1, 441, 442, 443, 444, 445, 446, + -1, -1, 449, -1, -1, 452, 453, 454, 455, 456, + 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, + 467, 468, 469, 470, 471, 3, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, + 28, 29, -1, 31, 32, 33, -1, -1, -1, -1, + -1, -1, -1, 41, 42, -1, 44, 45, 46, 47, + 48, 49, 50, 51, 52, 53, 54, 55, -1, 57, + 58, 59, 60, 61, 62, -1, -1, 65, 66, 67, + 68, 69, -1, 71, 72, 73, 74, 75, -1, 77, + -1, 79, 80, 81, 82, 83, 84, 85, 86, 87, + -1, 89, 90, 91, 92, 93, 94, -1, 96, 97, + 98, 99, -1, -1, -1, 103, -1, -1, 106, 107, + 108, 109, 110, 111, 112, 113, 114, 115, -1, 117, + -1, 119, 120, 121, 122, 123, 124, -1, 126, 127, + 128, 129, -1, -1, 132, 133, 134, 135, 136, -1, + 138, 139, 140, -1, 142, 143, 144, -1, 146, 147, + 148, 149, 150, 151, 152, 153, 154, 155, -1, 157, + -1, 159, 160, 161, 162, -1, 164, -1, 166, 167, + -1, 169, 170, 171, 172, 173, -1, 175, 176, -1, + 178, 179, 180, -1, 182, 183, 184, 185, 186, 187, + 188, 189, 190, 191, -1, 193, 194, 195, 196, 197, + 198, 199, -1, 201, 202, 203, 204, 205, 206, 207, + 208, 209, -1, 211, -1, 213, 214, 215, 216, 217, + 218, 219, 220, 221, 222, -1, -1, 225, 226, 227, + 228, 229, -1, 231, 232, 233, -1, -1, 236, 237, + 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, + 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, + 258, 259, 260, 261, 262, 263, 264, -1, 266, 267, + 268, 269, -1, 271, 272, 273, 274, 275, 276, -1, + 278, 279, -1, -1, 282, 283, 284, -1, -1, 287, + 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, + 298, 299, 300, 301, 302, -1, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, - 318, 319, 320, 321, 322, 323, 324, -1, 326, 327, - -1, 329, 330, 331, 332, 333, 334, 335, 336, 337, - 338, 339, 340, 341, -1, 343, 344, 345, 346, 347, - -1, 349, 350, 351, 352, 353, -1, 355, 356, 357, - 358, -1, 360, 361, 362, 363, 364, 365, 366, 367, - 368, 369, 370, 371, 372, -1, 374, 375, -1, 377, - -1, 379, 380, 381, 382, 383, -1, 385, 386, -1, - -1, 389, 390, 391, 392, 393, -1, 395, 396, 397, - 398, 399, 400, 401, -1, -1, 404, 405, 406, 407, - 408, -1, -1, 411, 412, 413, 414, 415, 416, 417, - -1, 419, -1, 421, 422, 423, 424, -1, -1, 427, - -1, -1, 430, 431, 432, 433, 434, 435, 436, 437, - 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, - 448, 449, 3, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 18, 19, 20, - 21, 22, 23, 24, 25, -1, 27, 28, 29, -1, - -1, -1, -1, -1, -1, -1, 37, 38, -1, 40, - 41, 42, -1, 44, 45, 46, 47, 48, -1, 50, - 51, -1, 53, 54, 55, 56, 57, -1, -1, 60, - 61, 62, 63, 64, -1, 66, 67, 68, 69, 70, - -1, -1, -1, 74, 75, 76, 77, 78, -1, 80, - 81, 82, -1, 84, 85, 86, 87, 88, 89, -1, - -1, 92, 93, 94, -1, -1, -1, -1, -1, -1, - -1, 102, 103, 104, 105, 106, 107, 108, 109, 110, - -1, 112, -1, 114, 115, 116, 117, 118, 119, -1, - 121, 122, 123, 124, -1, -1, 127, 128, 129, 130, - 131, -1, 133, 134, 135, -1, 137, 138, 139, -1, - 141, 142, 143, 144, 145, 146, 147, 148, 149, -1, - 151, -1, 153, 154, 155, 156, -1, 158, -1, 160, - -1, -1, -1, 164, 165, 166, 167, -1, 169, 170, - -1, 172, 173, -1, 175, 176, 177, 178, 179, -1, - 181, 182, 183, 184, -1, 186, 187, 188, 189, 190, - 191, -1, 193, -1, 195, 196, 197, 198, 199, 200, - 201, -1, 203, -1, 205, -1, -1, 208, -1, 210, - 211, 212, 213, 214, -1, -1, 217, 218, -1, 220, - -1, -1, 223, 224, 225, -1, -1, 228, 229, 230, - 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, - 241, 242, 243, 244, -1, 246, 247, 248, 249, 250, - -1, 252, 253, -1, 255, -1, 257, 258, 259, 260, - 261, 262, -1, 264, 265, -1, -1, 268, 269, 270, - -1, -1, 273, 274, -1, 276, -1, 278, 279, 280, - 281, 282, 283, 284, 285, 286, 287, -1, 289, 290, - 291, 292, 293, 294, 295, 296, -1, 298, 299, 300, - 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, + 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, + -1, 329, 330, 331, 332, 333, 334, 335, 336, 337, + 338, 339, 340, -1, 342, 343, 344, 345, 346, 347, + 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, + 358, 359, -1, 361, 362, 363, 364, 365, 366, 367, + 368, 369, 370, 371, 372, 373, 374, 375, 376, -1, + 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, + 388, 389, 390, 391, 392, -1, 394, 395, -1, 397, + 398, 399, 400, 401, 402, 403, -1, 405, 406, 407, + -1, -1, 410, 411, 412, 413, 414, -1, 416, 417, + 418, 419, 420, 421, 422, 423, -1, -1, 426, 427, + 428, 429, 430, -1, -1, 433, 434, 435, 436, 437, + 438, 439, -1, 441, 442, 443, 444, 445, 446, -1, + -1, 449, -1, -1, 452, 453, 454, 455, 456, 457, + 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, + 468, 469, 470, 471, 3, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, + 29, -1, 31, 32, 33, -1, -1, -1, -1, -1, + -1, -1, 41, 42, -1, 44, 45, 46, 47, 48, + 49, 50, 51, 52, 53, 54, 55, -1, 57, 58, + 59, 60, 61, 62, -1, -1, 65, 66, 67, 68, + 69, -1, 71, 72, 73, 74, 75, -1, 77, -1, + 79, 80, 81, 82, 83, 84, 85, 86, 87, -1, + 89, 90, 91, 92, 93, 94, -1, 96, 97, 98, + 99, -1, -1, -1, 103, -1, -1, 106, 107, 108, + 109, 110, 111, 112, 113, 114, 115, -1, 117, -1, + 119, 120, 121, 122, 123, 124, -1, 126, 127, 128, + 129, -1, -1, 132, 133, 134, 135, 136, -1, 138, + 139, 140, -1, 142, 143, 144, -1, 146, 147, 148, + 149, 150, 151, 152, 153, 154, 155, -1, 157, -1, + 159, 160, 161, 162, -1, 164, -1, 166, 167, -1, + 169, 170, 171, 172, 173, -1, 175, 176, -1, 178, + 179, 180, -1, 182, 183, 184, 185, 186, 187, 188, + 189, 190, 191, -1, 193, 194, 195, 196, 197, 198, + 199, -1, 201, 202, 203, 204, 205, 206, 207, 208, + 209, -1, 211, -1, 213, 214, 215, 216, 217, 218, + 219, 220, 221, 222, -1, -1, 225, 226, 227, 228, + 229, -1, 231, 232, 233, -1, -1, 236, 237, 238, + 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, + 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, + 259, 260, 261, 262, 263, 264, -1, 266, 267, 268, + 269, -1, 271, 272, 273, 274, 275, 276, -1, 278, + 279, -1, -1, 282, 283, 284, -1, -1, 287, 288, + 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, + 299, 300, 301, 302, -1, 304, 305, 306, 307, 308, + 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, + 319, 320, 321, 322, 323, 324, 325, 326, 327, -1, + 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, + 339, 340, -1, 342, 343, 344, 345, 346, 347, 348, + 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, + 359, -1, 361, 362, 363, 364, 365, 366, 367, 368, + 369, 370, 371, 372, 373, 374, 375, 376, -1, 378, + 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, + 389, 390, 391, 392, -1, 394, 395, -1, 397, 398, + 399, 400, 401, 402, 403, -1, 405, 406, 407, -1, + -1, 410, 411, 412, 413, 414, -1, 416, 417, 418, + 419, 420, 421, 422, 423, -1, -1, 426, 427, 428, + 429, 430, -1, -1, 433, 434, 435, 436, 437, 438, + 439, -1, 441, 442, 443, 444, 445, 446, -1, -1, + 449, -1, -1, 452, 453, 454, 455, 456, 457, 458, + 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, + 469, 470, 471, 3, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, + -1, 31, 32, 33, -1, -1, -1, -1, -1, -1, + -1, 41, 42, -1, 44, 45, 46, 47, 48, 49, + 50, 51, 52, 53, 54, 55, -1, 57, 58, 59, + 60, 61, 62, -1, -1, 65, 66, 67, 68, 69, + -1, 71, 72, 73, 74, 75, -1, 77, -1, 79, + 80, 81, 82, 83, 84, 85, 86, 87, -1, 89, + 90, 91, 92, 93, 94, -1, 96, 97, 98, 99, + -1, -1, -1, 103, -1, -1, 106, 107, 108, 109, + 110, 111, 112, 113, 114, 115, -1, 117, -1, 119, + 120, 121, 122, 123, 124, -1, 126, 127, 128, 129, + -1, -1, 132, 133, 134, 135, 136, -1, 138, 139, + 140, -1, 142, 143, 144, -1, 146, 147, 148, 149, + 150, 151, 152, 153, 154, 155, -1, 157, -1, 159, + 160, 161, 162, -1, 164, -1, 166, 167, -1, 169, + 170, 171, 172, 173, -1, 175, 176, -1, 178, 179, + 180, -1, 182, 183, 184, 185, 186, 187, 188, 189, + 190, 191, -1, 193, 194, 195, 196, 197, 198, 199, + -1, 201, 202, 203, 204, 205, 206, 207, 208, 209, + -1, 211, -1, 213, 214, 215, 216, 217, 218, 219, + 220, 221, 222, -1, -1, 225, 226, 227, 228, 229, + -1, 231, 232, 233, -1, -1, 236, 237, 238, 239, + 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, + 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, + 260, 261, 262, 263, 264, -1, 266, 267, 268, 269, + -1, 271, 272, 273, 274, 275, 276, -1, 278, 279, + -1, -1, 282, 283, 284, -1, -1, 287, 288, 289, + 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, + 300, 301, 302, -1, 304, 305, 306, 307, 308, 309, + 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, + 320, 321, 322, 323, 324, 325, 326, 327, -1, 329, + 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, + 340, -1, 342, 343, 344, 345, 346, 347, 348, 349, + 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, + -1, 361, 362, 363, 364, 365, 366, 367, 368, 369, + 370, 371, 372, 373, 374, 375, 376, -1, 378, 379, + 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, + 390, 391, 392, -1, 394, 395, -1, 397, 398, 399, + 400, 401, 402, 403, -1, 405, 406, 407, -1, -1, + 410, 411, 412, 413, 414, -1, 416, 417, 418, 419, + 420, 421, 422, 423, -1, -1, 426, 427, 428, 429, + 430, -1, -1, 433, 434, 435, 436, 437, 438, 439, + -1, 441, 442, 443, 444, 445, 446, -1, -1, 449, + -1, -1, 452, 453, 454, 455, 456, 457, 458, 459, + 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, + 470, 471, 3, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 22, 23, 24, 25, 26, 27, 28, 29, -1, + 31, 32, 33, -1, -1, -1, -1, -1, -1, -1, + 41, 42, -1, 44, 45, 46, 47, 48, 49, 50, + 51, 52, 53, 54, 55, -1, 57, 58, 59, 60, + 61, 62, -1, -1, 65, 66, 67, 68, 69, -1, + 71, 72, 73, 74, 75, -1, 77, -1, 79, 80, + 81, 82, 83, 84, 85, 86, 87, -1, 89, 90, + 91, 92, 93, 94, -1, 96, 97, 98, 99, -1, + -1, -1, 103, -1, -1, 106, 107, 108, 109, 110, + 111, 112, 113, 114, 115, -1, 117, -1, 119, 120, + 121, 122, 123, 124, -1, 126, 127, 128, 129, -1, + -1, 132, 133, 134, 135, 136, -1, 138, 139, 140, + -1, 142, 143, 144, -1, 146, 147, 148, 149, 150, + 151, 152, 153, 154, 155, -1, 157, -1, 159, 160, + 161, 162, -1, 164, -1, 166, 167, -1, 169, 170, + 171, 172, 173, -1, 175, 176, -1, 178, 179, 180, + -1, 182, 183, 184, 185, 186, 187, 188, 189, 190, + 191, -1, 193, 194, 195, 196, 197, 198, 199, -1, + 201, 202, 203, 204, 205, 206, 207, 208, 209, -1, + 211, -1, 213, 214, 215, 216, 217, 218, 219, 220, + 221, 222, -1, -1, 225, 226, 227, 228, 229, -1, + 231, 232, 233, -1, -1, 236, 237, 238, 239, 240, + 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, + 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, + 261, 262, 263, 264, -1, 266, 267, 268, 269, -1, + 271, 272, 273, 274, 275, 276, -1, 278, 279, -1, + -1, 282, 283, 284, -1, -1, 287, 288, 289, 290, + 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, + 301, 302, -1, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, - 321, 322, 323, 324, -1, 326, 327, -1, 329, 330, + 321, 322, 323, 324, 325, 326, 327, -1, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, - 341, -1, 343, 344, 345, 346, 347, -1, 349, 350, - 351, 352, 353, -1, 355, 356, 357, 358, -1, 360, + -1, 342, 343, 344, 345, 346, 347, 348, 349, 350, + 351, 352, 353, 354, 355, 356, 357, 358, 359, -1, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, - 371, 372, -1, 374, 375, -1, 377, -1, 379, 380, - 381, 382, 383, -1, 385, 386, -1, -1, 389, 390, - 391, 392, 393, -1, 395, 396, 397, 398, 399, 400, - 401, -1, -1, 404, 405, 406, 407, 408, -1, -1, - 411, 412, 413, 414, 415, 416, 417, -1, 419, -1, - 421, 422, 423, 424, -1, -1, 427, -1, -1, 430, - 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, - 441, 442, 443, 444, 445, 446, 447, 448, 449, 3, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 18, 19, 20, 21, 22, 23, - 24, 25, -1, 27, 28, 29, -1, -1, -1, -1, - -1, -1, -1, 37, 38, -1, 40, 41, 42, -1, - 44, 45, 46, 47, 48, -1, 50, 51, -1, 53, - 54, 55, 56, 57, -1, -1, 60, 61, 62, 63, - 64, -1, 66, 67, 68, 69, 70, -1, -1, -1, - 74, 75, 76, 77, 78, -1, 80, 81, 82, -1, - 84, 85, 86, 87, 88, 89, -1, -1, 92, 93, - 94, -1, -1, -1, -1, -1, -1, -1, 102, 103, - 104, 105, 106, 107, 108, 109, 110, -1, 112, -1, - 114, 115, 116, 117, 118, 119, -1, 121, 122, 123, - 124, -1, -1, 127, 128, 129, 130, 131, -1, 133, - 134, 135, -1, 137, 138, 139, -1, 141, 142, 143, - 144, 145, 146, 147, 148, 149, -1, 151, -1, 153, - 154, 155, 156, -1, 158, -1, 160, -1, -1, -1, - 164, 165, 166, 167, -1, 169, 170, -1, 172, 173, - -1, 175, 176, 177, 178, 179, -1, 181, 182, 183, - 184, -1, 186, 187, 188, 189, 190, 191, -1, 193, - -1, 195, 196, 197, 198, 199, 200, 201, -1, 203, - -1, 205, -1, -1, 208, -1, 210, 211, 212, 213, - 214, -1, -1, 217, 218, -1, 220, -1, -1, 223, - 224, 225, -1, -1, 228, 229, 230, 231, 232, 233, - 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, - 244, -1, 246, 247, 248, 249, 250, -1, 252, 253, - -1, 255, -1, 257, 258, 259, 260, 261, 262, -1, - 264, 265, -1, -1, 268, 269, 270, -1, -1, 273, - 274, -1, 276, -1, 278, 279, 280, 281, 282, 283, - 284, 285, 286, 287, -1, 289, 290, 291, 292, 293, - 294, 295, 296, -1, 298, 299, 300, 301, 302, 303, + 371, 372, 373, 374, 375, 376, -1, 378, 379, 380, + 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, + 391, 392, -1, 394, 395, -1, 397, 398, 399, 400, + 401, 402, 403, -1, 405, 406, 407, -1, -1, 410, + 411, 412, 413, 414, -1, 416, 417, 418, 419, 420, + 421, 422, 423, -1, -1, 426, 427, 428, 429, 430, + -1, -1, 433, 434, 435, 436, 437, 438, 439, -1, + 441, 442, 443, 444, 445, 446, -1, -1, 449, -1, + -1, 452, 453, 454, 455, 456, 457, 458, 459, 460, + 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, + 471, 3, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 22, 23, 24, 25, 26, 27, 28, 29, -1, 31, + 32, 33, -1, -1, -1, -1, -1, -1, -1, 41, + 42, -1, 44, 45, 46, 47, 48, 49, 50, 51, + 52, 53, 54, 55, -1, 57, 58, 59, 60, 61, + 62, -1, -1, 65, 66, 67, 68, 69, -1, 71, + 72, 73, 74, 75, -1, 77, -1, 79, 80, 81, + 82, 83, 84, 85, 86, 87, -1, 89, 90, 91, + 92, 93, 94, -1, 96, 97, 98, 99, -1, -1, + -1, 103, -1, -1, 106, 107, 108, 109, 110, 111, + 112, 113, 114, 115, -1, 117, -1, 119, 120, 121, + 122, 123, 124, -1, 126, 127, 128, 129, -1, -1, + 132, 133, 134, 135, 136, -1, 138, 139, 140, -1, + 142, 143, 144, -1, 146, 147, 148, 149, 150, 151, + 152, 153, 154, 155, -1, 157, -1, 159, 160, 161, + 162, -1, 164, -1, 166, 167, -1, 169, 170, 171, + 172, 173, -1, 175, 176, -1, 178, 179, 180, -1, + 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, + -1, 193, 194, 195, 196, 197, 198, 199, -1, 201, + 202, 203, 204, 205, 206, 207, 208, 209, -1, 211, + -1, 213, 214, 215, 216, 217, 218, 219, 220, 221, + 222, -1, -1, 225, 226, 227, 228, 229, -1, 231, + 232, 233, -1, -1, 236, 237, 238, 239, 240, 241, + 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, + 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, + 262, 263, 264, -1, 266, 267, 268, 269, -1, 271, + 272, 273, 274, 275, 276, -1, 278, 279, -1, -1, + 282, 283, 284, -1, -1, 287, 288, 289, 290, 291, + 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, + 302, -1, 304, 305, 306, 307, 308, 309, 310, 311, + -1, 313, 314, 315, 316, 317, 318, 319, 320, 321, + 322, 323, 324, 325, 326, 327, -1, 329, 330, 331, + 332, 333, 334, 335, 336, 337, 338, 339, 340, -1, + 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, + 352, 353, 354, 355, 356, 357, 358, 359, -1, 361, + 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, + 372, 373, 374, 375, 376, -1, 378, 379, 380, 381, + 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, + 392, -1, 394, 395, -1, 397, 398, 399, 400, 401, + 402, 403, -1, 405, 406, 407, -1, -1, 410, 411, + 412, 413, 414, -1, 416, 417, 418, 419, 420, 421, + 422, 423, -1, -1, 426, 427, 428, 429, 430, -1, + -1, 433, 434, 435, 436, 437, 438, 439, -1, 441, + 442, 443, 444, 445, 446, -1, -1, 449, -1, -1, + 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, + 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, + 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, + 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, + 33, 34, 35, -1, -1, -1, -1, -1, 41, 42, + -1, 44, 45, 46, 47, 48, 49, 50, 51, 52, + 53, 54, 55, -1, 57, 58, 59, 60, 61, 62, + -1, -1, 65, 66, 67, 68, 69, -1, 71, 72, + 73, 74, 75, -1, 77, -1, 79, 80, 81, 82, + 83, 84, 85, 86, 87, -1, 89, 90, 91, 92, + 93, 94, -1, 96, 97, 98, 99, -1, -1, -1, + 103, -1, -1, -1, 107, 108, 109, 110, 111, 112, + 113, 114, 115, -1, 117, -1, 119, 120, 121, 122, + 123, 124, -1, 126, 127, 128, 129, -1, -1, 132, + 133, 134, 135, 136, -1, 138, 139, 140, -1, 142, + 143, 144, -1, 146, 147, 148, 149, 150, 151, 152, + 153, 154, 155, -1, 157, -1, 159, 160, 161, 162, + -1, 164, -1, 166, 167, -1, 169, 170, 171, 172, + 173, -1, 175, 176, -1, 178, 179, 180, -1, 182, + 183, 184, 185, 186, 187, 188, 189, 190, 191, -1, + 193, 194, 195, 196, 197, 198, 199, -1, 201, 202, + 203, 204, 205, 206, 207, 208, 209, -1, 211, -1, + 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, + -1, -1, 225, 226, 227, 228, 229, -1, 231, 232, + 233, -1, -1, 236, 237, 238, 239, 240, 241, 242, + 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, + 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, + 263, 264, -1, 266, 267, 268, 269, -1, 271, 272, + 273, 274, 275, 276, -1, 278, 279, -1, -1, 282, + 283, 284, -1, -1, 287, 288, 289, 290, 291, 292, + 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, + -1, 304, 305, 306, 307, 308, 309, 310, 311, -1, + 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, + 323, 324, 325, 326, 327, -1, 329, 330, 331, 332, + 333, 334, 335, 336, 337, 338, 339, 340, -1, 342, + 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, + 353, 354, 355, 356, 357, 358, 359, -1, 361, 362, + 363, 364, 365, -1, 367, 368, 369, 370, 371, 372, + 373, 374, 375, 376, -1, 378, 379, 380, 381, 382, + 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, + -1, 394, 395, -1, 397, 398, 399, 400, 401, 402, + 403, -1, 405, 406, 407, -1, -1, 410, 411, 412, + 413, 414, -1, 416, 417, 418, 419, 420, 421, 422, + 423, -1, -1, 426, 427, 428, 429, 430, -1, -1, + 433, 434, 435, 436, 437, 438, 439, -1, 441, 442, + 443, 444, 445, 446, -1, -1, 449, -1, -1, 452, + 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, + 463, 464, 465, 466, 467, 468, 469, 470, 471, 3, + -1, -1, 6, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, + 24, 25, 26, 27, 28, 29, -1, 31, 32, 33, + -1, -1, -1, -1, -1, -1, -1, 41, 42, -1, + 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, + 54, 55, -1, 57, 58, 59, 60, 61, 62, -1, + -1, 65, 66, 67, 68, 69, -1, 71, 72, 73, + 74, 75, -1, 77, -1, 79, 80, 81, 82, 83, + 84, 85, 86, 87, -1, 89, 90, 91, 92, 93, + 94, -1, 96, 97, 98, 99, -1, -1, -1, 103, + -1, -1, -1, 107, 108, 109, 110, 111, 112, 113, + 114, 115, -1, 117, -1, 119, 120, 121, 122, 123, + 124, -1, 126, 127, 128, 129, -1, -1, 132, 133, + 134, 135, 136, -1, 138, 139, 140, -1, 142, 143, + 144, -1, 146, 147, 148, 149, 150, 151, 152, 153, + 154, 155, -1, 157, -1, 159, 160, 161, 162, -1, + 164, -1, 166, 167, -1, 169, 170, 171, 172, 173, + -1, 175, 176, -1, 178, 179, 180, -1, 182, 183, + 184, 185, 186, 187, 188, 189, 190, 191, -1, 193, + 194, 195, 196, 197, 198, 199, -1, 201, 202, 203, + 204, 205, 206, 207, 208, 209, -1, 211, -1, 213, + 214, 215, 216, 217, 218, 219, 220, 221, 222, -1, + -1, 225, 226, 227, 228, 229, -1, 231, 232, 233, + -1, -1, 236, 237, 238, 239, 240, 241, 242, 243, + 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, + 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, + 264, -1, 266, 267, 268, 269, -1, 271, 272, 273, + 274, 275, 276, -1, 278, 279, -1, -1, 282, 283, + 284, -1, -1, 287, 288, 289, 290, 291, 292, 293, + 294, 295, 296, 297, 298, 299, 300, 301, 302, -1, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, - 324, -1, 326, 327, -1, 329, 330, 331, 332, 333, - 334, 335, 336, 337, 338, 339, 340, 341, -1, 343, - 344, 345, 346, 347, -1, 349, 350, 351, 352, 353, - -1, 355, 356, 357, 358, -1, 360, 361, 362, 363, - 364, 365, 366, 367, 368, 369, 370, 371, 372, -1, - 374, 375, -1, 377, -1, 379, 380, 381, 382, 383, - -1, 385, 386, -1, -1, 389, 390, 391, 392, 393, - -1, 395, 396, 397, 398, 399, 400, 401, -1, -1, - 404, 405, 406, 407, 408, -1, -1, 411, 412, 413, - 414, 415, 416, 417, -1, 419, -1, 421, 422, 423, - 424, -1, -1, 427, -1, -1, 430, 431, 432, 433, - 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, - 444, 445, 446, 447, 448, 449, 3, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 18, 19, 20, 21, 22, 23, 24, 25, -1, - 27, 28, 29, -1, -1, -1, -1, -1, -1, -1, - 37, 38, -1, 40, 41, 42, -1, 44, 45, 46, - 47, 48, -1, 50, 51, -1, 53, 54, 55, 56, - 57, -1, -1, 60, 61, 62, 63, 64, -1, 66, - 67, 68, 69, 70, -1, -1, -1, 74, 75, 76, - 77, 78, -1, 80, 81, 82, -1, 84, 85, 86, - 87, 88, 89, -1, -1, 92, 93, 94, -1, -1, - -1, -1, -1, -1, -1, 102, 103, 104, 105, 106, - 107, 108, 109, 110, -1, 112, -1, 114, 115, 116, - 117, 118, 119, -1, 121, 122, 123, 124, -1, -1, - 127, 128, 129, 130, 131, -1, 133, 134, 135, -1, - 137, 138, 139, -1, 141, 142, 143, 144, 145, 146, - 147, 148, 149, -1, 151, -1, 153, 154, 155, 156, - -1, 158, -1, 160, -1, -1, -1, 164, 165, 166, - 167, -1, 169, 170, -1, 172, 173, -1, 175, 176, - 177, 178, 179, -1, 181, 182, 183, 184, -1, 186, - 187, 188, 189, 190, 191, -1, 193, -1, 195, 196, - 197, 198, 199, 200, 201, -1, 203, -1, 205, -1, - -1, 208, -1, 210, 211, 212, 213, 214, -1, -1, - 217, 218, -1, 220, -1, -1, 223, 224, 225, -1, - -1, 228, 229, 230, 231, 232, 233, 234, 235, 236, - 237, 238, 239, 240, 241, 242, 243, 244, -1, 246, - 247, 248, 249, 250, -1, 252, 253, -1, 255, -1, - 257, 258, 259, 260, 261, 262, -1, 264, 265, -1, - -1, 268, 269, 270, -1, -1, 273, 274, -1, 276, - -1, 278, 279, 280, 281, 282, 283, 284, 285, 286, - 287, -1, 289, 290, 291, 292, 293, 294, 295, 296, - -1, 298, 299, 300, 301, 302, 303, 304, 305, 306, + 324, 325, 326, 327, -1, 329, 330, 331, 332, 333, + 334, 335, 336, 337, 338, 339, 340, -1, 342, 343, + 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, + 354, 355, 356, 357, 358, 359, -1, 361, 362, 363, + 364, 365, -1, 367, 368, 369, 370, 371, 372, 373, + 374, 375, 376, -1, 378, 379, 380, 381, 382, 383, + 384, 385, 386, 387, 388, 389, 390, 391, 392, -1, + 394, 395, -1, 397, 398, 399, 400, 401, 402, 403, + -1, 405, 406, 407, -1, -1, 410, 411, 412, 413, + 414, -1, 416, 417, 418, 419, 420, 421, 422, 423, + -1, -1, 426, 427, 428, 429, 430, -1, -1, 433, + 434, 435, 436, 437, 438, 439, -1, 441, 442, 443, + 444, 445, 446, -1, -1, 449, -1, -1, 452, 453, + 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, + 464, 465, 466, 467, 468, 469, 470, 471, 3, -1, + -1, 6, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 22, 23, 24, + 25, 26, 27, 28, 29, -1, 31, 32, 33, -1, + -1, -1, -1, -1, -1, -1, 41, 42, -1, 44, + 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, + 55, -1, 57, 58, 59, 60, 61, 62, -1, -1, + 65, 66, 67, 68, 69, -1, 71, 72, 73, 74, + 75, -1, 77, -1, 79, 80, 81, 82, 83, 84, + 85, 86, 87, -1, 89, 90, 91, 92, 93, 94, + -1, 96, 97, 98, 99, -1, -1, -1, 103, -1, + -1, -1, 107, 108, 109, 110, 111, 112, 113, 114, + 115, -1, 117, -1, 119, 120, 121, 122, 123, 124, + -1, 126, 127, 128, 129, -1, -1, 132, 133, 134, + 135, 136, -1, 138, 139, 140, -1, 142, 143, 144, + -1, 146, 147, 148, 149, 150, 151, 152, 153, 154, + 155, -1, 157, -1, 159, 160, 161, 162, -1, 164, + -1, 166, 167, -1, 169, 170, 171, 172, 173, -1, + 175, 176, -1, 178, 179, 180, -1, 182, 183, 184, + 185, 186, 187, 188, 189, 190, 191, -1, 193, 194, + 195, 196, 197, 198, 199, -1, 201, 202, 203, 204, + 205, 206, 207, 208, 209, -1, 211, -1, 213, 214, + 215, 216, 217, 218, 219, 220, 221, 222, -1, -1, + 225, 226, 227, 228, 229, -1, 231, 232, 233, -1, + -1, 236, 237, 238, 239, 240, 241, 242, 243, 244, + 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, + 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, + -1, 266, 267, 268, 269, -1, 271, 272, 273, 274, + 275, 276, -1, 278, 279, -1, -1, 282, 283, 284, + -1, -1, 287, 288, 289, 290, 291, 292, 293, 294, + 295, 296, 297, 298, 299, 300, 301, 302, -1, 304, + 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, + 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, + 325, 326, 327, -1, 329, 330, 331, 332, 333, 334, + 335, 336, 337, 338, 339, 340, -1, 342, 343, 344, + 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, + 355, 356, 357, 358, 359, -1, 361, 362, 363, 364, + 365, -1, 367, 368, 369, 370, 371, 372, 373, 374, + 375, 376, -1, 378, 379, 380, 381, 382, 383, 384, + 385, 386, 387, 388, 389, 390, 391, 392, -1, 394, + 395, -1, 397, 398, 399, 400, 401, 402, 403, -1, + 405, 406, 407, -1, -1, 410, 411, 412, 413, 414, + -1, 416, 417, 418, 419, 420, 421, 422, 423, -1, + -1, 426, 427, 428, 429, 430, -1, -1, 433, 434, + 435, 436, 437, 438, 439, -1, 441, 442, 443, 444, + 445, 446, -1, -1, 449, -1, -1, 452, 453, 454, + 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, + 465, 466, 467, 468, 469, 470, 471, 3, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 22, 23, 24, 25, + 26, 27, 28, 29, -1, 31, 32, 33, -1, -1, + -1, -1, -1, -1, -1, 41, 42, -1, 44, 45, + 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, + -1, 57, 58, 59, 60, 61, 62, -1, -1, 65, + 66, 67, 68, 69, -1, 71, 72, 73, 74, 75, + -1, 77, -1, 79, 80, 81, 82, 83, 84, 85, + 86, 87, -1, 89, 90, 91, 92, 93, 94, -1, + 96, 97, 98, 99, -1, -1, -1, 103, -1, -1, + -1, 107, 108, 109, 110, 111, 112, 113, 114, 115, + -1, 117, -1, 119, 120, 121, 122, 123, 124, -1, + 126, 127, 128, 129, -1, -1, 132, 133, 134, 135, + 136, -1, 138, 139, 140, -1, 142, 143, 144, -1, + 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, + -1, 157, -1, 159, 160, 161, 162, -1, 164, -1, + 166, 167, -1, 169, 170, 171, 172, 173, -1, 175, + 176, -1, 178, 179, 180, -1, 182, 183, 184, 185, + 186, 187, 188, 189, 190, 191, -1, 193, 194, 195, + 196, 197, 198, 199, -1, 201, 202, 203, 204, 205, + 206, 207, 208, 209, -1, 211, -1, 213, 214, 215, + 216, 217, 218, 219, 220, 221, 222, -1, -1, 225, + 226, 227, 228, 229, -1, 231, 232, 233, -1, -1, + 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, + 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, + 256, 257, 258, 259, 260, 261, 262, 263, 264, -1, + 266, 267, 268, 269, -1, 271, 272, 273, 274, 275, + 276, -1, 278, 279, -1, -1, 282, 283, 284, -1, + -1, 287, 288, 289, 290, 291, 292, 293, 294, 295, + 296, 297, 298, 299, 300, 301, 302, -1, 304, 305, + 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, + 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, + 326, 327, -1, 329, 330, 331, 332, 333, 334, 335, + 336, 337, 338, 339, 340, -1, 342, 343, 344, 345, + 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, + 356, 357, 358, 359, -1, 361, 362, 363, 364, 365, + -1, 367, 368, 369, 370, 371, 372, 373, 374, 375, + 376, -1, 378, 379, 380, 381, 382, 383, 384, 385, + 386, 387, 388, 389, 390, 391, 392, -1, 394, 395, + -1, 397, 398, 399, 400, 401, 402, 403, -1, 405, + 406, 407, -1, -1, 410, 411, 412, 413, 414, -1, + 416, 417, 418, 419, 420, 421, 422, 423, -1, -1, + 426, 427, 428, 429, 430, -1, -1, 433, 434, 435, + 436, 437, 438, 439, -1, 441, 442, 443, 444, 445, + 446, -1, -1, 449, -1, -1, 452, 453, 454, 455, + 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, + 466, 467, 468, 469, 470, 471, 3, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, + 27, 28, 29, -1, 31, 32, 33, -1, -1, -1, + -1, -1, -1, -1, 41, 42, -1, 44, 45, 46, + 47, 48, 49, 50, 51, 52, 53, 54, 55, -1, + 57, 58, 59, 60, 61, 62, -1, -1, 65, 66, + 67, 68, 69, -1, 71, 72, 73, 74, 75, -1, + 77, -1, 79, 80, 81, 82, 83, 84, 85, 86, + 87, -1, 89, 90, 91, 92, 93, 94, -1, 96, + 97, 98, 99, -1, -1, -1, 103, -1, -1, -1, + 107, 108, 109, 110, 111, 112, 113, 114, 115, -1, + 117, -1, 119, 120, 121, 122, 123, 124, -1, 126, + 127, 128, 129, -1, -1, 132, 133, 134, 135, 136, + -1, 138, 139, 140, -1, 142, 143, 144, -1, 146, + 147, 148, 149, 150, 151, 152, 153, 154, 155, -1, + 157, -1, 159, 160, 161, 162, -1, 164, -1, 166, + 167, -1, 169, 170, 171, 172, 173, -1, 175, 176, + -1, 178, 179, 180, -1, 182, 183, 184, 185, 186, + 187, 188, 189, 190, 191, -1, 193, 194, 195, 196, + 197, 198, 199, -1, 201, 202, 203, 204, 205, 206, + 207, 208, 209, -1, 211, -1, 213, 214, 215, 216, + 217, 218, 219, 220, 221, 222, -1, -1, 225, 226, + 227, 228, 229, -1, 231, 232, 233, -1, -1, 236, + 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, + 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, + 257, 258, 259, 260, 261, 262, 263, 264, -1, 266, + 267, 268, 269, -1, 271, 272, 273, 274, 275, 276, + -1, 278, 279, -1, -1, 282, 283, 284, -1, -1, + 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, + 297, 298, 299, 300, 301, 302, -1, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, - 317, 318, 319, 320, 321, 322, 323, 324, -1, 326, + 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, -1, 329, 330, 331, 332, 333, 334, 335, 336, - 337, 338, 339, 340, 341, -1, 343, 344, 345, 346, - 347, -1, 349, 350, 351, 352, 353, -1, 355, 356, - 357, 358, -1, 360, 361, 362, 363, 364, 365, 366, - 367, 368, 369, 370, 371, 372, -1, 374, 375, -1, - 377, -1, 379, 380, 381, 382, 383, -1, 385, 386, - -1, -1, 389, 390, 391, 392, 393, -1, 395, 396, - 397, 398, 399, 400, 401, -1, -1, 404, 405, 406, - 407, 408, -1, -1, 411, 412, 413, 414, 415, 416, - 417, -1, 419, -1, 421, 422, 423, 424, -1, -1, - 427, -1, -1, 430, 431, 432, 433, 434, 435, 436, - 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, - 447, 448, 449, 3, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 18, 19, - 20, 21, 22, 23, 24, 25, -1, 27, 28, 29, - -1, -1, -1, -1, -1, -1, -1, 37, 38, -1, - 40, 41, 42, -1, 44, 45, 46, 47, 48, -1, - 50, 51, -1, 53, 54, 55, 56, 57, -1, -1, - 60, 61, 62, 63, 64, -1, 66, 67, 68, 69, - 70, -1, -1, -1, 74, 75, 76, 77, 78, -1, - 80, 81, 82, -1, 84, 85, 86, 87, 88, 89, - -1, -1, 92, 93, 94, -1, -1, -1, -1, -1, - -1, -1, 102, 103, 104, 105, 106, 107, 108, 109, - 110, -1, 112, -1, 114, 115, 116, 117, 118, 119, - -1, 121, 122, 123, 124, -1, -1, 127, 128, 129, - 130, 131, -1, 133, 134, 135, -1, 137, 138, 139, - -1, 141, 142, 143, 144, 145, 146, 147, 148, 149, - -1, 151, -1, 153, 154, 155, 156, -1, 158, -1, - 160, -1, -1, -1, 164, 165, 166, 167, -1, 169, - 170, -1, 172, 173, -1, 175, 176, 177, 178, 179, - -1, 181, 182, 183, 184, -1, 186, 187, 188, 189, - 190, 191, -1, 193, -1, 195, 196, 197, 198, 199, - 200, 201, -1, 203, -1, 205, -1, -1, 208, -1, - 210, 211, 212, 213, 214, -1, -1, 217, 218, -1, - 220, -1, -1, 223, 224, 225, -1, -1, 228, 229, - 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, - 240, 241, 242, 243, 244, -1, 246, 247, 248, 249, - 250, -1, 252, 253, -1, 255, -1, 257, 258, 259, - 260, 261, 262, -1, 264, 265, -1, -1, 268, 269, - 270, -1, -1, 273, 274, -1, 276, -1, 278, 279, - 280, 281, 282, 283, 284, 285, 286, 287, -1, 289, - 290, 291, 292, 293, 294, 295, 296, -1, 298, 299, - 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, + 337, 338, 339, 340, -1, 342, 343, 344, 345, 346, + 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, + 357, 358, 359, -1, 361, 362, 363, 364, 365, -1, + 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, + -1, 378, 379, 380, 381, 382, 383, 384, 385, 386, + 387, 388, 389, 390, 391, 392, -1, 394, 395, -1, + 397, 398, 399, 400, 401, 402, 403, -1, 405, 406, + 407, -1, -1, 410, 411, 412, 413, 414, -1, 416, + 417, 418, 419, 420, 421, 422, 423, -1, -1, 426, + 427, 428, 429, 430, -1, -1, 433, 434, 435, 436, + 437, 438, 439, -1, 441, 442, 443, 444, 445, 446, + -1, -1, 449, -1, -1, 452, 453, 454, 455, 456, + 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, + 467, 468, 469, 470, 471, 3, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, + 28, 29, -1, 31, 32, 33, -1, -1, -1, -1, + -1, -1, -1, 41, 42, -1, 44, 45, 46, 47, + 48, 49, 50, 51, 52, 53, 54, 55, -1, 57, + 58, 59, 60, 61, 62, -1, -1, 65, 66, 67, + 68, 69, -1, 71, 72, 73, 74, 75, -1, 77, + -1, 79, 80, 81, 82, 83, 84, 85, 86, 87, + -1, 89, 90, 91, 92, 93, 94, -1, 96, 97, + 98, 99, -1, -1, -1, 103, -1, -1, -1, 107, + 108, 109, 110, 111, 112, 113, 114, 115, -1, 117, + -1, 119, 120, 121, 122, 123, 124, -1, 126, 127, + 128, 129, -1, -1, 132, 133, 134, 135, 136, -1, + 138, 139, 140, -1, 142, 143, 144, -1, 146, 147, + 148, 149, 150, 151, 152, 153, 154, 155, -1, 157, + -1, 159, 160, 161, 162, -1, 164, -1, 166, 167, + -1, 169, 170, 171, 172, 173, -1, 175, 176, -1, + 178, 179, 180, -1, 182, 183, 184, 185, 186, 187, + 188, 189, 190, 191, -1, 193, 194, 195, 196, 197, + 198, 199, -1, 201, 202, 203, 204, 205, 206, 207, + 208, 209, -1, 211, -1, 213, 214, 215, 216, 217, + 218, 219, 220, 221, 222, -1, -1, 225, 226, 227, + 228, 229, -1, 231, 232, 233, -1, -1, 236, 237, + 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, + 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, + 258, 259, 260, 261, 262, 263, 264, -1, 266, 267, + 268, 269, -1, 271, 272, 273, 274, 275, 276, -1, + 278, 279, -1, -1, 282, 283, 284, -1, -1, 287, + 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, + 298, 299, 300, 301, 302, -1, 304, 305, 306, 307, + 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, + 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, + -1, 329, 330, 331, 332, 333, 334, 335, 336, 337, + 338, 339, 340, -1, 342, 343, 344, 345, 346, 347, + 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, + 358, 359, -1, 361, 362, 363, 364, 365, -1, 367, + 368, 369, 370, 371, 372, 373, 374, 375, 376, -1, + 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, + 388, 389, 390, 391, 392, -1, 394, 395, -1, 397, + 398, 399, 400, 401, 402, 403, -1, 405, 406, 407, + -1, -1, 410, 411, 412, 413, 414, -1, 416, 417, + 418, 419, 420, 421, 422, 423, -1, -1, 426, 427, + 428, 429, 430, -1, -1, 433, 434, 435, 436, 437, + 438, 439, -1, 441, 442, 443, 444, 445, 446, -1, + -1, 449, -1, -1, 452, 453, 454, 455, 456, 457, + 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, + 468, 469, 470, 471, 3, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, + 29, -1, 31, 32, 33, -1, -1, -1, -1, -1, + -1, -1, 41, 42, -1, 44, 45, 46, 47, 48, + 49, 50, 51, 52, 53, 54, 55, -1, 57, 58, + 59, 60, 61, 62, -1, -1, 65, 66, 67, 68, + 69, -1, 71, 72, 73, 74, 75, -1, 77, -1, + 79, 80, 81, 82, 83, 84, 85, 86, 87, -1, + 89, 90, 91, 92, 93, 94, -1, 96, 97, 98, + 99, -1, -1, -1, 103, -1, -1, -1, 107, 108, + 109, 110, 111, 112, 113, 114, 115, -1, 117, -1, + 119, 120, 121, 122, 123, 124, -1, 126, 127, 128, + 129, -1, -1, 132, 133, 134, 135, 136, -1, 138, + 139, 140, -1, 142, 143, 144, -1, 146, 147, 148, + 149, 150, 151, 152, 153, 154, 155, -1, 157, -1, + 159, 160, 161, 162, -1, 164, -1, 166, 167, -1, + 169, 170, 171, 172, 173, -1, 175, 176, -1, 178, + 179, 180, -1, 182, 183, 184, 185, 186, 187, 188, + 189, 190, 191, -1, 193, 194, 195, 196, 197, 198, + 199, -1, 201, 202, 203, 204, 205, 206, 207, 208, + 209, -1, 211, -1, 213, 214, 215, 216, 217, 218, + 219, 220, 221, 222, -1, -1, 225, 226, 227, 228, + 229, -1, 231, 232, 233, -1, -1, 236, 237, 238, + 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, + 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, + 259, 260, 261, 262, 263, 264, -1, 266, 267, 268, + 269, -1, 271, 272, 273, 274, 275, 276, -1, 278, + 279, -1, -1, 282, 283, 284, -1, -1, 287, 288, + 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, + 299, 300, 301, 302, -1, 304, 305, 306, 307, 308, + 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, + 319, 320, 321, 322, 323, 324, 325, 326, 327, -1, + 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, + 339, 340, -1, 342, 343, 344, 345, 346, 347, 348, + 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, + 359, -1, 361, 362, 363, 364, 365, -1, 367, 368, + 369, 370, 371, 372, 373, 374, 375, 376, -1, 378, + 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, + 389, 390, 391, 392, -1, 394, 395, -1, 397, 398, + 399, 400, 401, 402, 403, -1, 405, 406, 407, -1, + -1, 410, 411, 412, 413, 414, -1, 416, 417, 418, + 419, 420, 421, 422, 423, -1, -1, 426, 427, 428, + 429, 430, -1, -1, 433, 434, 435, 436, 437, 438, + 439, -1, 441, 442, 443, 444, 445, 446, -1, -1, + 449, -1, -1, 452, 453, 454, 455, 456, 457, 458, + 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, + 469, 470, 471, 3, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, + -1, 31, 32, 33, -1, -1, -1, -1, -1, -1, + -1, 41, 42, -1, 44, 45, 46, 47, 48, 49, + 50, 51, 52, 53, 54, 55, -1, 57, 58, 59, + 60, 61, 62, -1, -1, 65, 66, 67, 68, 69, + -1, 71, 72, 73, 74, 75, -1, 77, -1, 79, + 80, 81, 82, 83, 84, 85, 86, 87, -1, 89, + 90, 91, 92, 93, 94, -1, 96, 97, 98, 99, + -1, -1, -1, 103, -1, -1, -1, 107, 108, 109, + 110, 111, 112, 113, 114, 115, -1, 117, -1, 119, + 120, 121, 122, 123, 124, -1, 126, 127, 128, 129, + -1, -1, 132, 133, 134, 135, 136, -1, 138, 139, + 140, -1, 142, 143, 144, -1, 146, 147, 148, 149, + 150, 151, 152, 153, 154, 155, -1, 157, -1, 159, + 160, 161, 162, -1, 164, -1, 166, 167, -1, 169, + 170, 171, 172, 173, -1, 175, 176, -1, 178, 179, + 180, -1, 182, 183, 184, 185, 186, 187, 188, 189, + 190, 191, -1, 193, 194, 195, 196, 197, 198, 199, + -1, 201, 202, 203, 204, 205, 206, 207, 208, 209, + -1, 211, -1, 213, 214, 215, 216, 217, 218, 219, + 220, 221, 222, -1, -1, 225, 226, 227, 228, 229, + -1, 231, 232, 233, -1, -1, 236, 237, 238, 239, + 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, + 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, + 260, 261, 262, 263, 264, -1, 266, 267, 268, 269, + -1, 271, 272, 273, 274, 275, 276, -1, 278, 279, + -1, -1, 282, 283, 284, -1, -1, 287, 288, 289, + 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, + 300, 301, 302, -1, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, - 320, 321, 322, 323, 324, -1, 326, 327, -1, 329, + 320, 321, 322, 323, 324, 325, 326, 327, -1, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, - 340, 341, -1, 343, 344, 345, 346, 347, -1, 349, - 350, 351, 352, 353, -1, 355, 356, 357, 358, -1, - 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, - 370, 371, 372, -1, 374, 375, -1, 377, -1, 379, - 380, 381, 382, 383, -1, 385, 386, -1, -1, 389, - 390, 391, 392, 393, -1, 395, 396, 397, 398, 399, - 400, 401, -1, -1, 404, 405, 406, 407, 408, -1, - -1, 411, 412, 413, 414, 415, 416, 417, -1, 419, - -1, 421, 422, 423, 424, -1, -1, 427, -1, -1, - 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, - 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, + 340, -1, 342, 343, 344, 345, 346, 347, 348, 349, + 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, + -1, 361, 362, 363, 364, 365, -1, 367, 368, 369, + 370, 371, 372, 373, 374, 375, 376, -1, 378, 379, + 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, + 390, 391, 392, -1, 394, 395, -1, 397, 398, 399, + 400, 401, 402, 403, -1, 405, 406, 407, -1, -1, + 410, 411, 412, 413, 414, -1, 416, 417, 418, 419, + 420, 421, 422, 423, -1, -1, 426, 427, 428, 429, + 430, -1, -1, 433, 434, 435, 436, 437, 438, 439, + -1, 441, 442, 443, 444, 445, 446, -1, -1, 449, + -1, -1, 452, 453, 454, 455, 456, 457, 458, 459, + 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, + 470, 471, 3, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 22, 23, 24, 25, 26, 27, 28, 29, -1, + 31, 32, 33, -1, -1, -1, -1, -1, -1, -1, + 41, 42, -1, 44, 45, 46, 47, 48, 49, 50, + 51, 52, 53, 54, 55, -1, 57, 58, 59, 60, + 61, 62, -1, -1, 65, 66, 67, 68, 69, -1, + 71, 72, 73, 74, 75, -1, 77, -1, 79, 80, + 81, 82, 83, 84, 85, 86, 87, -1, 89, 90, + 91, 92, 93, 94, -1, 96, 97, 98, 99, -1, + -1, -1, 103, -1, -1, -1, 107, 108, 109, 110, + 111, 112, 113, 114, 115, -1, 117, -1, 119, 120, + 121, 122, 123, 124, -1, 126, 127, 128, 129, -1, + -1, 132, 133, 134, 135, 136, -1, 138, 139, 140, + -1, 142, 143, 144, -1, 146, 147, 148, 149, 150, + 151, 152, 153, 154, 155, -1, 157, -1, 159, 160, + 161, 162, -1, 164, -1, 166, 167, -1, 169, 170, + 171, 172, 173, -1, 175, 176, -1, 178, 179, 180, + -1, 182, 183, 184, 185, 186, 187, 188, 189, 190, + 191, -1, 193, 194, 195, 196, 197, 198, 199, -1, + 201, 202, 203, 204, 205, 206, 207, 208, 209, -1, + 211, -1, 213, 214, 215, 216, 217, 218, 219, 220, + 221, 222, -1, -1, 225, 226, 227, 228, 229, -1, + 231, 232, 233, -1, -1, 236, 237, 238, 239, 240, + 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, + 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, + 261, 262, 263, 264, -1, 266, 267, 268, 269, -1, + 271, 272, 273, 274, 275, 276, -1, 278, 279, -1, + -1, 282, 283, 284, -1, -1, 287, 288, 289, 290, + 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, + 301, 302, -1, 304, 305, 306, 307, 308, 309, 310, + 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, + 321, 322, 323, 324, 325, 326, 327, -1, 329, 330, + 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, + -1, 342, 343, 344, 345, 346, 347, 348, 349, 350, + 351, 352, 353, 354, 355, 356, 357, 358, 359, -1, + 361, 362, 363, 364, 365, -1, 367, 368, 369, 370, + 371, 372, 373, 374, 375, 376, -1, 378, 379, 380, + 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, + 391, 392, -1, 394, 395, -1, 397, 398, 399, 400, + 401, 402, 403, -1, 405, 406, 407, -1, -1, 410, + 411, 412, 413, 414, -1, 416, 417, 418, 419, 420, + 421, 422, 423, -1, -1, 426, 427, 428, 429, 430, + -1, -1, 433, 434, 435, 436, 437, 438, 439, -1, + 441, 442, 443, 444, 445, 446, -1, -1, 449, -1, + -1, 452, 453, 454, 455, 456, 457, 458, 459, 460, + 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, + 471, 3, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 22, 23, 24, 25, 26, 27, 28, 29, -1, 31, + 32, 33, -1, -1, -1, -1, -1, -1, -1, 41, + 42, -1, 44, 45, 46, -1, 48, 49, 50, 51, + 52, -1, 54, 55, -1, 57, 58, 59, 60, 61, + 62, -1, -1, 65, 66, 67, 68, 69, 70, 71, + 72, 73, 74, 75, -1, -1, 78, 79, 80, 81, + 82, 83, -1, 85, 86, 87, 88, 89, 90, 91, + 92, 93, 94, -1, -1, 97, 98, 99, -1, -1, + -1, -1, -1, -1, -1, 107, 108, 109, 110, 111, + 112, 113, 114, 115, -1, 117, -1, 119, 120, 121, + 122, 123, 124, -1, 126, 127, 128, 129, -1, -1, + 132, 133, 134, 135, 136, -1, 138, 139, 140, -1, + 142, 143, 144, -1, 146, 147, 148, 149, 150, 151, + 152, 153, 154, 155, -1, 157, -1, 159, 160, 161, + 162, -1, 164, 165, 166, -1, -1, -1, 170, 171, + 172, 173, -1, 175, 176, -1, 178, 179, 180, -1, + 182, 183, 184, 185, 186, -1, 188, 189, 190, 191, + -1, 193, 194, 195, 196, 197, 198, 199, -1, 201, + -1, 203, 204, 205, 206, 207, 208, 209, -1, 211, + -1, 213, -1, -1, 216, -1, 218, 219, 220, 221, + 222, -1, -1, 225, 226, -1, 228, -1, -1, 231, + 232, 233, -1, -1, 236, 237, 238, 239, 240, 241, + 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, + 252, -1, 254, 255, 256, 257, 258, 259, 260, 261, + 262, 263, 264, -1, 266, 267, -1, 269, -1, 271, + 272, 273, 274, 275, 276, -1, 278, 279, -1, -1, + 282, 283, 284, -1, -1, 287, 288, 289, -1, 291, + -1, 293, 294, 295, 296, 297, 298, 299, 300, 301, + 302, -1, 304, 305, 306, 307, 308, 309, 310, 311, + 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, + 322, 323, 324, 325, 326, 327, -1, 329, 330, 331, + 332, 333, 334, 335, 336, 337, 338, 339, 340, -1, + 342, 343, -1, 345, 346, 347, 348, 349, 350, 351, + 352, 353, 354, 355, 356, 357, 358, 359, -1, 361, + 362, 363, 364, 365, -1, 367, 368, 369, 370, 371, + -1, 373, 374, 375, 376, -1, 378, 379, 380, 381, + 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, + 392, -1, 394, 395, -1, 397, -1, 399, 400, 401, + 402, 403, -1, 405, 406, 407, -1, -1, 410, 411, + 412, 413, 414, -1, 416, 417, 418, 419, 420, 421, + 422, 423, -1, 425, 426, 427, 428, 429, 430, -1, + -1, 433, 434, 435, 436, 437, 438, 439, -1, 441, + -1, 443, 444, 445, 446, -1, -1, 449, -1, -1, + 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, + 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 18, 19, 20, 21, 22, - 23, 24, 25, -1, 27, 28, 29, -1, -1, -1, - -1, -1, -1, -1, 37, 38, -1, 40, 41, 42, - -1, 44, 45, 46, 47, 48, -1, 50, 51, -1, - 53, 54, 55, 56, 57, -1, -1, 60, 61, 62, - 63, 64, -1, 66, 67, 68, 69, 70, -1, -1, - -1, 74, 75, 76, 77, 78, -1, 80, 81, 82, - -1, 84, 85, 86, 87, 88, 89, -1, -1, 92, - 93, 94, -1, -1, -1, -1, -1, -1, -1, 102, - 103, 104, 105, 106, 107, 108, 109, 110, -1, 112, - -1, 114, 115, 116, 117, 118, 119, -1, 121, 122, - 123, 124, -1, -1, 127, 128, 129, 130, 131, -1, - 133, 134, 135, -1, 137, 138, 139, -1, 141, 142, - 143, 144, 145, 146, 147, 148, 149, -1, 151, -1, - 153, 154, 155, 156, -1, 158, -1, 160, -1, -1, - -1, 164, 165, 166, 167, -1, 169, 170, -1, 172, - 173, -1, 175, 176, 177, 178, 179, -1, 181, 182, - 183, 184, -1, 186, 187, 188, 189, 190, 191, -1, - 193, -1, 195, 196, 197, 198, 199, 200, 201, -1, - 203, -1, 205, -1, -1, 208, -1, 210, 211, 212, - 213, 214, -1, -1, 217, 218, -1, 220, -1, -1, - 223, 224, 225, -1, -1, 228, 229, 230, 231, 232, - 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, - 243, 244, -1, 246, 247, 248, 249, 250, -1, 252, - 253, -1, 255, -1, 257, 258, 259, 260, 261, 262, - -1, 264, 265, -1, -1, 268, 269, 270, -1, -1, - 273, 274, -1, 276, -1, 278, 279, 280, 281, 282, - 283, 284, 285, 286, 287, -1, 289, 290, 291, 292, - 293, 294, 295, 296, -1, 298, 299, 300, 301, 302, - 303, 304, 305, 306, 307, 308, 309, 310, 311, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, + 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, + 33, -1, -1, -1, -1, -1, -1, -1, 41, 42, + -1, 44, 45, 46, -1, 48, 49, 50, 51, 52, + -1, 54, 55, -1, 57, 58, 59, 60, 61, 62, + -1, -1, 65, 66, 67, 68, 69, 70, 71, 72, + 73, 74, 75, -1, -1, -1, 79, 80, 81, 82, + 83, -1, 85, 86, 87, 88, 89, 90, 91, 92, + 93, 94, -1, -1, 97, 98, 99, -1, -1, -1, + -1, -1, -1, -1, 107, 108, 109, 110, 111, 112, + 113, 114, 115, -1, 117, -1, 119, 120, 121, 122, + 123, 124, -1, 126, 127, 128, 129, -1, -1, 132, + 133, 134, 135, 136, -1, 138, 139, 140, -1, 142, + 143, 144, -1, 146, 147, 148, 149, 150, 151, 152, + 153, 154, 155, -1, 157, -1, 159, 160, 161, 162, + -1, 164, 165, 166, -1, -1, -1, 170, 171, 172, + 173, -1, 175, 176, -1, 178, 179, 180, -1, 182, + 183, 184, 185, 186, -1, 188, 189, 190, 191, -1, + 193, 194, 195, 196, 197, 198, 199, -1, 201, -1, + 203, 204, 205, 206, 207, 208, 209, -1, 211, -1, + 213, -1, -1, 216, -1, 218, 219, 220, 221, 222, + -1, -1, 225, 226, -1, 228, 229, -1, 231, 232, + 233, -1, -1, 236, 237, 238, 239, 240, 241, 242, + 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, + -1, 254, 255, 256, 257, 258, 259, 260, 261, 262, + 263, 264, -1, 266, 267, -1, 269, -1, 271, 272, + 273, 274, 275, 276, -1, 278, 279, -1, -1, 282, + 283, 284, -1, -1, 287, 288, 289, -1, 291, -1, + 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, + -1, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, - 323, 324, -1, 326, 327, -1, 329, 330, 331, 332, - 333, 334, 335, 336, 337, 338, 339, 340, 341, -1, - 343, 344, 345, 346, 347, -1, 349, 350, 351, 352, - 353, -1, 355, 356, 357, 358, -1, 360, 361, 362, - 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, - -1, 374, 375, -1, 377, -1, 379, 380, 381, 382, - 383, -1, 385, 386, -1, -1, 389, 390, 391, 392, - 393, -1, 395, 396, 397, 398, 399, 400, 401, -1, - -1, 404, 405, 406, 407, 408, -1, -1, 411, 412, - 413, 414, 415, 416, 417, -1, 419, -1, 421, 422, - 423, 424, -1, -1, 427, -1, -1, 430, 431, 432, - 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, - 443, 444, 445, 446, 447, 448, 449, 3, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 18, 19, 20, 21, 22, 23, 24, 25, - -1, 27, 28, 29, -1, -1, -1, -1, -1, -1, - -1, 37, 38, -1, 40, 41, 42, -1, 44, 45, - 46, 47, 48, -1, 50, 51, -1, 53, 54, 55, - 56, 57, -1, -1, 60, 61, 62, 63, 64, -1, - 66, 67, 68, 69, 70, -1, -1, -1, 74, 75, - 76, 77, 78, -1, 80, 81, 82, -1, 84, 85, - 86, 87, 88, 89, -1, -1, 92, 93, 94, -1, - -1, -1, -1, -1, -1, -1, 102, 103, 104, 105, - 106, 107, 108, 109, 110, -1, 112, -1, 114, 115, - 116, 117, 118, 119, -1, 121, 122, 123, 124, -1, - -1, 127, 128, 129, 130, 131, -1, 133, 134, 135, - -1, 137, 138, 139, -1, 141, 142, 143, 144, 145, - 146, 147, 148, 149, -1, 151, -1, 153, 154, 155, - 156, -1, 158, -1, 160, -1, -1, -1, 164, 165, - 166, 167, -1, 169, 170, -1, 172, 173, -1, 175, - 176, 177, 178, 179, -1, 181, 182, 183, 184, -1, - 186, 187, 188, 189, 190, 191, -1, 193, -1, 195, - 196, 197, 198, 199, 200, 201, -1, 203, -1, 205, - -1, -1, 208, -1, 210, 211, 212, 213, 214, -1, - -1, 217, 218, -1, 220, -1, -1, 223, 224, 225, - -1, -1, 228, 229, 230, 231, 232, 233, 234, 235, - 236, 237, 238, 239, 240, 241, 242, 243, 244, -1, - 246, 247, 248, 249, 250, -1, 252, 253, -1, 255, - -1, 257, 258, 259, 260, 261, 262, -1, 264, 265, - -1, -1, 268, 269, 270, -1, -1, 273, 274, -1, - 276, -1, 278, 279, 280, 281, 282, 283, 284, 285, - 286, 287, -1, 289, 290, 291, 292, 293, 294, 295, - 296, -1, 298, 299, 300, 301, 302, 303, 304, 305, - 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, - 316, 317, 318, 319, 320, 321, 322, 323, 324, -1, - 326, 327, -1, 329, 330, 331, 332, 333, 334, 335, - 336, 337, 338, 339, 340, 341, -1, 343, 344, 345, - 346, 347, -1, 349, 350, 351, 352, 353, -1, 355, - 356, 357, 358, -1, 360, 361, 362, 363, 364, 365, - 366, 367, 368, 369, 370, 371, 372, -1, 374, 375, - -1, 377, -1, 379, 380, 381, 382, 383, -1, 385, - 386, -1, -1, 389, 390, 391, 392, 393, -1, 395, - 396, 397, 398, 399, 400, 401, -1, -1, 404, 405, - 406, 407, 408, -1, -1, 411, 412, 413, 414, 415, - 416, 417, -1, 419, -1, 421, 422, 423, 424, -1, - -1, 427, -1, -1, 430, 431, 432, 433, 434, 435, - 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, - 446, 447, 448, 449, 3, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 18, - 19, 20, 21, 22, 23, 24, 25, -1, 27, 28, - 29, -1, -1, -1, -1, -1, -1, -1, 37, 38, - -1, 40, 41, 42, -1, 44, 45, 46, 47, 48, - -1, 50, 51, -1, 53, 54, 55, 56, 57, -1, - -1, 60, 61, 62, 63, 64, -1, 66, 67, 68, - 69, 70, -1, -1, -1, 74, 75, 76, 77, 78, - -1, 80, 81, 82, -1, 84, 85, 86, 87, 88, - 89, -1, -1, 92, 93, 94, -1, -1, -1, -1, - -1, -1, -1, 102, 103, 104, 105, 106, 107, 108, - 109, 110, -1, 112, -1, 114, 115, 116, 117, 118, - 119, -1, 121, 122, 123, 124, -1, -1, 127, 128, - 129, 130, 131, -1, 133, 134, 135, -1, 137, 138, - 139, -1, 141, 142, 143, 144, 145, 146, 147, 148, - 149, -1, 151, -1, 153, 154, 155, 156, -1, 158, - -1, 160, -1, -1, -1, 164, 165, 166, 167, -1, - 169, 170, -1, 172, 173, -1, 175, 176, 177, 178, - 179, -1, 181, 182, 183, 184, -1, 186, 187, 188, - 189, 190, 191, -1, 193, -1, 195, 196, 197, 198, - 199, 200, 201, -1, 203, -1, 205, -1, -1, 208, - -1, 210, 211, 212, 213, 214, -1, -1, 217, 218, - -1, 220, -1, -1, 223, 224, 225, -1, -1, 228, - 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, - 239, 240, 241, 242, 243, 244, -1, 246, 247, 248, - 249, 250, -1, 252, 253, -1, 255, -1, 257, 258, - 259, 260, 261, 262, -1, 264, 265, -1, -1, 268, - 269, 270, -1, -1, 273, 274, -1, 276, -1, 278, - 279, 280, 281, 282, 283, 284, 285, 286, 287, -1, - 289, 290, 291, 292, 293, 294, 295, 296, -1, 298, - 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, - 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, - 319, 320, 321, 322, 323, 324, -1, 326, 327, -1, - 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, - 339, 340, 341, -1, 343, 344, 345, 346, 347, -1, - 349, 350, 351, 352, 353, -1, 355, 356, 357, 358, - -1, 360, 361, 362, 363, 364, 365, 366, 367, 368, - 369, 370, 371, 372, -1, 374, 375, -1, 377, -1, - 379, 380, 381, 382, 383, -1, 385, 386, -1, -1, - 389, 390, 391, 392, 393, -1, 395, 396, 397, 398, - 399, 400, 401, -1, -1, 404, 405, 406, 407, 408, - -1, -1, 411, 412, 413, 414, 415, 416, 417, -1, - 419, -1, 421, 422, 423, 424, -1, -1, 427, -1, - -1, 430, 431, 432, 433, 434, 435, 436, 437, 438, - 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, - 449, 3, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 18, 19, 20, 21, - 22, 23, 24, 25, -1, 27, 28, 29, -1, -1, - -1, -1, -1, -1, -1, 37, 38, -1, 40, 41, - 42, -1, 44, 45, 46, 47, 48, -1, 50, 51, - -1, 53, 54, 55, 56, 57, -1, -1, 60, 61, - 62, 63, 64, -1, 66, 67, 68, 69, 70, -1, - -1, -1, 74, 75, 76, 77, 78, -1, 80, 81, - 82, -1, 84, 85, 86, 87, 88, 89, -1, -1, - 92, 93, 94, -1, -1, -1, -1, -1, -1, -1, - 102, 103, 104, 105, 106, 107, 108, 109, 110, -1, - 112, -1, 114, 115, 116, 117, 118, 119, -1, 121, - 122, 123, 124, -1, -1, 127, 128, 129, 130, 131, - -1, 133, 134, 135, -1, 137, 138, 139, -1, 141, - 142, 143, 144, 145, 146, 147, 148, 149, -1, 151, - -1, 153, 154, 155, 156, -1, 158, -1, 160, -1, - -1, -1, 164, 165, 166, 167, -1, 169, 170, -1, - 172, 173, -1, 175, 176, 177, 178, 179, -1, 181, - 182, 183, 184, -1, 186, 187, 188, 189, 190, 191, - -1, 193, -1, 195, 196, 197, 198, 199, 200, 201, - -1, 203, -1, 205, -1, -1, 208, -1, 210, 211, - 212, 213, 214, -1, -1, 217, 218, -1, 220, -1, - -1, 223, 224, 225, -1, -1, 228, 229, 230, 231, - 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, - 242, 243, 244, -1, 246, 247, 248, 249, 250, -1, - 252, 253, -1, 255, -1, 257, 258, 259, 260, 261, - 262, -1, 264, 265, -1, -1, 268, 269, 270, -1, - -1, 273, 274, -1, 276, -1, 278, 279, 280, 281, - 282, 283, 284, 285, 286, 287, -1, 289, 290, 291, - 292, 293, 294, 295, 296, -1, 298, 299, 300, 301, - 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, - -1, 313, 314, 315, 316, 317, 318, 319, 320, 321, - 322, 323, 324, -1, 326, 327, -1, 329, 330, 331, - 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, - -1, 343, 344, 345, 346, 347, -1, 349, 350, 351, - 352, 353, -1, 355, 356, 357, 358, -1, 360, 361, - 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, - 372, -1, 374, 375, -1, 377, -1, 379, 380, 381, - 382, 383, -1, 385, 386, -1, -1, 389, 390, 391, - 392, 393, -1, 395, 396, 397, 398, 399, 400, 401, - -1, -1, 404, 405, 406, 407, 408, -1, -1, 411, - 412, 413, 414, 415, 416, 417, -1, 419, -1, 421, - 422, 423, 424, -1, -1, 427, -1, -1, 430, 431, - 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, - 442, 443, 444, 445, 446, 447, 448, 449, 3, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 18, 19, 20, 21, 22, 23, 24, - 25, -1, 27, 28, 29, -1, -1, -1, -1, -1, - -1, -1, 37, 38, -1, 40, 41, 42, -1, 44, - 45, 46, 47, 48, -1, 50, 51, -1, 53, 54, - 55, 56, 57, -1, -1, 60, 61, 62, 63, 64, - -1, 66, 67, 68, 69, 70, -1, -1, -1, 74, - 75, 76, 77, 78, -1, 80, 81, 82, -1, 84, - 85, 86, 87, 88, 89, -1, -1, 92, 93, 94, - -1, -1, -1, -1, -1, -1, -1, 102, 103, 104, - 105, 106, 107, 108, 109, 110, -1, 112, -1, 114, - 115, 116, 117, 118, 119, -1, 121, 122, 123, 124, - -1, -1, 127, 128, 129, 130, 131, -1, 133, 134, - 135, -1, 137, 138, 139, -1, 141, 142, 143, 144, - 145, 146, 147, 148, 149, -1, 151, -1, 153, 154, - 155, 156, -1, 158, -1, 160, -1, -1, -1, 164, - 165, 166, 167, -1, 169, 170, -1, 172, 173, -1, - 175, 176, 177, 178, 179, -1, 181, 182, 183, 184, - -1, 186, 187, 188, 189, 190, 191, -1, 193, -1, - 195, 196, 197, 198, 199, 200, 201, -1, 203, -1, - 205, -1, -1, 208, -1, 210, 211, 212, 213, 214, - -1, -1, 217, 218, -1, 220, -1, -1, 223, 224, - 225, -1, -1, 228, 229, 230, 231, 232, 233, 234, - 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, - -1, 246, 247, 248, 249, 250, -1, 252, 253, -1, - 255, -1, 257, 258, 259, 260, 261, 262, -1, 264, - 265, -1, -1, 268, 269, 270, -1, -1, 273, 274, - -1, 276, -1, 278, 279, 280, 281, 282, 283, 284, - 285, 286, 287, -1, 289, 290, 291, 292, 293, 294, - 295, 296, -1, 298, 299, 300, 301, 302, 303, 304, + 323, 324, 325, 326, 327, -1, 329, 330, 331, 332, + 333, 334, 335, 336, 337, 338, 339, 340, -1, 342, + 343, -1, 345, 346, 347, 348, 349, 350, 351, 352, + 353, 354, 355, 356, 357, 358, 359, -1, 361, 362, + 363, 364, 365, -1, 367, 368, 369, 370, 371, -1, + 373, 374, 375, 376, -1, 378, 379, 380, 381, 382, + 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, + -1, 394, 395, -1, 397, -1, 399, 400, 401, 402, + 403, -1, 405, 406, 407, -1, -1, 410, 411, 412, + 413, 414, -1, 416, 417, 418, 419, 420, 421, 422, + 423, -1, 425, 426, 427, 428, 429, 430, -1, -1, + 433, 434, 435, 436, 437, 438, 439, -1, 441, -1, + 443, 444, 445, 446, -1, -1, 449, -1, -1, 452, + 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, + 463, 464, 465, 466, 467, 468, 469, 470, 471, 3, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, + 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, + -1, -1, -1, -1, -1, -1, -1, 41, 42, -1, + 44, 45, 46, -1, 48, 49, 50, 51, 52, -1, + 54, 55, -1, 57, 58, 59, 60, 61, 62, -1, + -1, 65, 66, 67, 68, 69, -1, 71, 72, 73, + 74, 75, -1, -1, -1, 79, 80, 81, 82, 83, + -1, 85, 86, 87, -1, 89, 90, 91, 92, 93, + 94, 95, -1, 97, 98, 99, -1, -1, -1, -1, + -1, -1, -1, 107, 108, 109, 110, 111, 112, 113, + 114, 115, -1, 117, -1, 119, 120, 121, 122, 123, + 124, -1, 126, 127, 128, 129, -1, -1, 132, 133, + 134, 135, 136, -1, 138, 139, 140, -1, 142, 143, + 144, -1, 146, 147, 148, 149, 150, 151, 152, 153, + 154, 155, -1, 157, -1, 159, 160, 161, 162, -1, + 164, -1, 166, -1, -1, -1, 170, 171, 172, 173, + 174, 175, 176, -1, 178, 179, 180, -1, 182, 183, + 184, 185, 186, -1, 188, 189, 190, 191, -1, 193, + 194, 195, 196, 197, 198, 199, -1, 201, -1, 203, + 204, 205, 206, 207, 208, 209, -1, 211, -1, 213, + -1, -1, 216, -1, 218, 219, 220, 221, 222, -1, + -1, 225, 226, -1, 228, -1, -1, 231, 232, 233, + -1, -1, 236, 237, 238, 239, 240, 241, 242, 243, + 244, 245, 246, 247, 248, 249, 250, 251, 252, -1, + 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, + 264, -1, 266, 267, -1, 269, -1, 271, 272, 273, + 274, 275, 276, -1, 278, 279, -1, -1, 282, 283, + 284, -1, -1, 287, 288, 289, -1, 291, -1, 293, + 294, 295, 296, 297, 298, 299, 300, 301, 302, -1, + 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, + 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, + 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, + 334, 335, 336, 337, 338, 339, 340, -1, 342, 343, + -1, 345, 346, 347, 348, 349, 350, 351, 352, 353, + 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, + 364, 365, -1, 367, 368, 369, 370, 371, -1, 373, + 374, 375, 376, -1, 378, 379, 380, 381, 382, 383, + 384, 385, 386, 387, 388, 389, 390, 391, 392, -1, + 394, 395, -1, 397, -1, 399, 400, 401, 402, 403, + -1, 405, 406, 407, -1, -1, 410, 411, 412, 413, + 414, -1, 416, 417, 418, 419, 420, 421, 422, 423, + -1, -1, 426, 427, 428, 429, 430, -1, -1, 433, + 434, 435, 436, 437, 438, 439, -1, 441, -1, 443, + 444, 445, 446, -1, -1, 449, -1, -1, 452, 453, + 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, + 464, 465, 466, 467, 468, 469, 470, 471, 3, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 22, 23, 24, + 25, 26, 27, 28, 29, 30, 31, 32, 33, -1, + -1, -1, -1, -1, -1, -1, 41, 42, -1, 44, + 45, 46, -1, 48, 49, 50, 51, 52, -1, 54, + 55, -1, 57, 58, 59, 60, 61, 62, -1, -1, + 65, 66, 67, 68, 69, -1, 71, 72, 73, 74, + 75, -1, -1, -1, 79, 80, 81, 82, 83, -1, + 85, 86, 87, -1, 89, 90, 91, 92, 93, 94, + 95, -1, 97, 98, 99, -1, -1, -1, -1, -1, + -1, -1, 107, 108, 109, 110, 111, 112, 113, 114, + 115, -1, 117, -1, 119, 120, 121, 122, 123, 124, + -1, 126, 127, 128, 129, -1, -1, 132, 133, 134, + 135, 136, -1, 138, 139, 140, -1, 142, 143, 144, + -1, 146, 147, 148, 149, 150, 151, 152, 153, 154, + 155, -1, 157, -1, 159, 160, 161, 162, -1, 164, + -1, 166, -1, -1, -1, 170, 171, 172, 173, 174, + 175, 176, -1, 178, 179, 180, -1, 182, 183, 184, + 185, 186, -1, 188, 189, 190, 191, -1, 193, 194, + 195, 196, 197, 198, 199, -1, 201, -1, 203, 204, + 205, 206, 207, 208, 209, -1, 211, -1, 213, -1, + -1, 216, -1, 218, 219, 220, 221, 222, -1, -1, + 225, 226, -1, 228, -1, -1, 231, 232, 233, -1, + -1, 236, 237, 238, 239, 240, 241, 242, 243, 244, + 245, 246, 247, 248, 249, 250, 251, 252, -1, 254, + 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, + -1, 266, 267, -1, 269, -1, 271, 272, 273, 274, + 275, 276, -1, 278, 279, -1, -1, 282, 283, 284, + -1, -1, 287, 288, 289, -1, 291, -1, 293, 294, + 295, 296, 297, 298, 299, 300, 301, 302, -1, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, - -1, 326, 327, -1, 329, 330, 331, 332, 333, 334, - 335, 336, 337, 338, 339, 340, 341, -1, 343, 344, - 345, 346, 347, -1, 349, 350, 351, 352, 353, -1, - 355, 356, 357, 358, -1, 360, 361, 362, 363, 364, - 365, 366, 367, 368, 369, 370, 371, 372, -1, 374, - 375, -1, 377, -1, 379, 380, 381, 382, 383, -1, - 385, 386, -1, -1, 389, 390, 391, 392, 393, -1, - 395, 396, 397, 398, 399, 400, 401, -1, -1, 404, - 405, 406, 407, 408, -1, -1, 411, 412, 413, 414, - 415, 416, 417, -1, 419, -1, 421, 422, 423, 424, - -1, -1, 427, -1, -1, 430, 431, 432, 433, 434, - 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, - 445, 446, 447, 448, 449, 3, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 18, 19, 20, 21, 22, 23, 24, 25, -1, 27, - 28, 29, -1, -1, -1, -1, -1, -1, -1, 37, - 38, -1, 40, 41, 42, -1, 44, 45, 46, 47, - 48, -1, 50, 51, -1, 53, 54, 55, 56, 57, - -1, -1, 60, 61, 62, 63, 64, -1, 66, 67, - 68, 69, 70, -1, -1, -1, 74, 75, 76, 77, - 78, -1, 80, 81, 82, -1, 84, 85, 86, 87, - 88, 89, -1, -1, 92, 93, 94, -1, -1, -1, - -1, -1, -1, -1, 102, 103, 104, 105, 106, 107, - 108, 109, 110, -1, 112, -1, 114, 115, 116, 117, - 118, 119, -1, 121, 122, 123, 124, -1, -1, 127, - 128, 129, 130, 131, -1, 133, 134, 135, -1, 137, - 138, 139, -1, 141, 142, 143, 144, 145, 146, 147, - 148, 149, -1, 151, -1, 153, 154, 155, 156, -1, - 158, -1, 160, -1, -1, -1, 164, 165, 166, 167, - -1, 169, 170, -1, 172, 173, -1, 175, 176, 177, - 178, 179, -1, 181, 182, 183, 184, -1, 186, 187, - 188, 189, 190, 191, -1, 193, -1, 195, 196, 197, - 198, 199, 200, 201, -1, 203, -1, 205, -1, -1, - 208, -1, 210, 211, 212, 213, 214, -1, -1, 217, - 218, -1, 220, -1, -1, 223, 224, 225, -1, -1, - 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, - 238, 239, 240, 241, 242, 243, 244, -1, 246, 247, - 248, 249, 250, -1, 252, 253, -1, 255, -1, 257, - 258, 259, 260, 261, 262, -1, 264, 265, -1, -1, - 268, 269, 270, -1, -1, 273, 274, -1, 276, -1, - 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, - -1, 289, 290, 291, 292, 293, 294, 295, 296, -1, - 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, + 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, + 335, 336, 337, 338, 339, 340, -1, 342, 343, -1, + 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, + 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, + 365, -1, 367, 368, 369, 370, 371, -1, 373, 374, + 375, 376, -1, 378, 379, 380, 381, 382, 383, 384, + 385, 386, 387, 388, 389, 390, 391, 392, -1, 394, + 395, -1, 397, -1, 399, 400, 401, 402, 403, -1, + 405, 406, 407, -1, -1, 410, 411, 412, 413, 414, + -1, 416, 417, 418, 419, 420, 421, 422, 423, -1, + -1, 426, 427, 428, 429, 430, -1, -1, 433, 434, + 435, 436, 437, 438, 439, -1, 441, -1, 443, 444, + 445, 446, -1, -1, 449, -1, -1, 452, 453, 454, + 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, + 465, 466, 467, 468, 469, 470, 471, 3, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 22, 23, 24, 25, + 26, 27, 28, 29, -1, 31, 32, 33, -1, -1, + -1, -1, -1, -1, -1, 41, 42, -1, 44, 45, + 46, -1, 48, 49, 50, 51, 52, -1, 54, 55, + -1, 57, 58, 59, 60, 61, 62, -1, -1, 65, + 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, + -1, -1, -1, 79, 80, 81, 82, 83, -1, 85, + 86, 87, 88, 89, 90, 91, 92, 93, 94, -1, + -1, 97, 98, 99, -1, -1, -1, -1, -1, -1, + -1, 107, 108, 109, 110, 111, 112, 113, 114, 115, + -1, 117, -1, 119, 120, 121, 122, 123, 124, -1, + 126, 127, 128, 129, -1, -1, 132, 133, 134, 135, + 136, -1, 138, 139, 140, -1, 142, 143, 144, -1, + 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, + -1, 157, -1, 159, 160, 161, 162, -1, 164, 165, + 166, -1, -1, -1, 170, 171, 172, 173, -1, 175, + 176, -1, 178, 179, 180, -1, 182, 183, 184, 185, + 186, -1, 188, 189, 190, 191, -1, 193, 194, 195, + 196, 197, 198, 199, -1, 201, -1, 203, 204, 205, + 206, 207, 208, 209, -1, 211, -1, 213, -1, -1, + 216, -1, 218, 219, 220, 221, 222, -1, -1, 225, + 226, -1, 228, -1, -1, 231, 232, 233, -1, -1, + 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, + 246, 247, 248, 249, 250, 251, 252, -1, 254, 255, + 256, 257, 258, 259, 260, 261, 262, 263, 264, -1, + 266, 267, -1, 269, -1, 271, 272, 273, 274, 275, + 276, -1, 278, 279, -1, -1, 282, 283, 284, -1, + -1, 287, 288, 289, -1, 291, -1, 293, 294, 295, + 296, 297, 298, 299, 300, 301, 302, -1, 304, 305, + 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, + 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, + 326, 327, -1, 329, 330, 331, 332, 333, 334, 335, + 336, 337, 338, 339, 340, -1, 342, 343, -1, 345, + 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, + 356, 357, 358, 359, -1, 361, 362, 363, 364, 365, + -1, 367, 368, 369, 370, 371, -1, 373, 374, 375, + 376, -1, 378, 379, 380, 381, 382, 383, 384, 385, + 386, 387, 388, 389, 390, 391, 392, -1, 394, 395, + -1, 397, -1, 399, 400, 401, 402, 403, -1, 405, + 406, 407, -1, -1, 410, 411, 412, 413, 414, -1, + 416, 417, 418, 419, 420, 421, 422, 423, -1, 425, + 426, 427, 428, 429, 430, -1, -1, 433, 434, 435, + 436, 437, 438, 439, -1, 441, -1, 443, 444, 445, + 446, -1, -1, 449, -1, -1, 452, 453, 454, 455, + 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, + 466, 467, 468, 469, 470, 471, 3, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, + 27, 28, 29, 30, 31, 32, 33, -1, -1, -1, + -1, -1, -1, -1, 41, 42, -1, 44, 45, 46, + -1, 48, 49, 50, 51, 52, -1, 54, 55, -1, + 57, 58, 59, 60, 61, 62, -1, -1, 65, 66, + 67, 68, 69, -1, 71, 72, 73, 74, 75, -1, + -1, -1, 79, 80, 81, 82, 83, -1, 85, 86, + 87, -1, 89, 90, 91, 92, 93, 94, 95, -1, + 97, 98, 99, -1, -1, -1, -1, -1, -1, -1, + 107, 108, 109, 110, 111, 112, 113, 114, 115, -1, + 117, -1, 119, 120, 121, 122, 123, 124, -1, 126, + 127, 128, 129, -1, -1, 132, 133, 134, 135, 136, + -1, 138, 139, 140, -1, 142, 143, 144, -1, 146, + 147, 148, 149, 150, 151, 152, 153, 154, 155, -1, + 157, -1, 159, 160, 161, 162, -1, 164, -1, 166, + -1, -1, -1, 170, 171, 172, 173, -1, 175, 176, + -1, 178, 179, 180, -1, 182, 183, 184, 185, 186, + -1, 188, 189, 190, 191, -1, 193, 194, 195, 196, + 197, 198, 199, -1, 201, -1, 203, 204, 205, 206, + 207, 208, 209, -1, 211, -1, 213, -1, -1, 216, + -1, 218, 219, 220, 221, 222, -1, -1, 225, 226, + -1, 228, -1, -1, 231, 232, 233, -1, -1, 236, + 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, + 247, 248, 249, 250, 251, 252, -1, 254, 255, 256, + 257, 258, 259, 260, 261, 262, 263, 264, -1, 266, + 267, -1, 269, -1, 271, 272, 273, 274, 275, 276, + -1, 278, 279, -1, -1, 282, 283, 284, -1, -1, + 287, 288, 289, -1, 291, -1, 293, 294, 295, 296, + 297, 298, 299, 300, 301, 302, -1, 304, 305, 306, + 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, + 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, + 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, + 337, 338, 339, 340, -1, 342, 343, -1, 345, 346, + 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, + 357, 358, 359, 360, 361, 362, 363, 364, 365, -1, + 367, 368, 369, 370, 371, -1, 373, 374, 375, 376, + -1, 378, 379, 380, 381, 382, 383, 384, 385, 386, + 387, 388, 389, 390, 391, 392, -1, 394, 395, -1, + 397, -1, 399, 400, 401, 402, 403, -1, 405, 406, + 407, -1, -1, 410, 411, 412, 413, 414, -1, 416, + 417, 418, 419, 420, 421, 422, 423, -1, -1, 426, + 427, 428, 429, 430, -1, -1, 433, 434, 435, 436, + 437, 438, 439, -1, 441, -1, 443, 444, 445, 446, + -1, -1, 449, -1, -1, 452, 453, 454, 455, 456, + 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, + 467, 468, 469, 470, 471, 3, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, + 28, 29, 30, 31, 32, 33, -1, -1, -1, -1, + -1, -1, -1, 41, 42, -1, 44, 45, 46, -1, + 48, 49, 50, 51, 52, -1, 54, 55, -1, 57, + 58, 59, 60, 61, 62, -1, -1, 65, 66, 67, + 68, 69, -1, 71, 72, 73, 74, 75, -1, -1, + -1, 79, 80, 81, 82, 83, -1, 85, 86, 87, + -1, 89, 90, 91, 92, 93, 94, -1, -1, 97, + 98, 99, -1, -1, -1, -1, -1, -1, -1, 107, + 108, 109, 110, 111, 112, 113, 114, 115, -1, 117, + -1, 119, 120, 121, 122, 123, 124, -1, 126, 127, + 128, 129, -1, -1, 132, 133, 134, 135, 136, -1, + 138, 139, 140, -1, 142, 143, 144, -1, 146, 147, + 148, 149, 150, 151, 152, 153, 154, 155, -1, 157, + -1, 159, 160, 161, 162, -1, 164, 165, 166, -1, + -1, -1, 170, 171, 172, 173, -1, 175, 176, -1, + 178, 179, 180, -1, 182, 183, 184, 185, 186, -1, + 188, 189, 190, 191, -1, 193, 194, 195, 196, 197, + 198, 199, -1, 201, -1, 203, 204, 205, 206, 207, + 208, 209, -1, 211, -1, 213, -1, -1, 216, -1, + 218, 219, 220, 221, 222, -1, -1, 225, 226, -1, + 228, -1, -1, 231, 232, 233, -1, -1, 236, 237, + 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, + 248, 249, 250, 251, 252, -1, 254, 255, 256, 257, + 258, 259, 260, 261, 262, 263, 264, -1, 266, 267, + -1, 269, -1, 271, 272, 273, 274, 275, 276, -1, + 278, 279, -1, -1, 282, 283, 284, -1, -1, 287, + 288, 289, -1, 291, -1, 293, 294, 295, 296, 297, + 298, 299, 300, 301, 302, -1, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, - 318, 319, 320, 321, 322, 323, 324, -1, 326, 327, + 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, -1, 329, 330, 331, 332, 333, 334, 335, 336, 337, - 338, 339, 340, 341, -1, 343, 344, 345, 346, 347, - -1, 349, 350, 351, 352, 353, -1, 355, 356, 357, - 358, -1, 360, 361, 362, 363, 364, 365, 366, 367, - 368, 369, 370, 371, 372, -1, 374, 375, -1, 377, - -1, 379, 380, 381, 382, 383, -1, 385, 386, -1, - -1, 389, 390, 391, 392, 393, -1, 395, 396, 397, - 398, 399, 400, 401, -1, -1, 404, 405, 406, 407, - 408, -1, -1, 411, 412, 413, 414, 415, 416, 417, - -1, 419, -1, 421, 422, 423, 424, -1, -1, 427, - -1, -1, 430, 431, 432, 433, 434, 435, 436, 437, - 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, - 448, 449, 3, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 18, 19, 20, - 21, 22, 23, 24, 25, -1, 27, 28, 29, -1, - -1, -1, -1, -1, -1, -1, 37, 38, -1, 40, - 41, 42, -1, 44, 45, 46, 47, 48, -1, 50, - 51, -1, 53, 54, 55, 56, 57, -1, -1, 60, - 61, 62, 63, 64, -1, 66, 67, 68, 69, 70, - -1, -1, -1, 74, 75, 76, 77, 78, -1, 80, - 81, 82, -1, 84, 85, 86, 87, 88, 89, -1, - -1, 92, 93, 94, -1, -1, -1, -1, -1, -1, - -1, 102, 103, 104, 105, 106, 107, 108, 109, 110, - -1, 112, -1, 114, 115, 116, 117, 118, 119, -1, - 121, 122, 123, 124, -1, -1, 127, 128, 129, 130, - 131, -1, 133, 134, 135, -1, 137, 138, 139, -1, - 141, 142, 143, 144, 145, 146, 147, 148, 149, -1, - 151, -1, 153, 154, 155, 156, -1, 158, -1, 160, - -1, -1, -1, 164, 165, 166, 167, -1, 169, 170, - -1, 172, 173, -1, 175, 176, 177, 178, 179, -1, - 181, 182, 183, 184, -1, 186, 187, 188, 189, 190, - 191, -1, 193, -1, 195, 196, 197, 198, 199, 200, - 201, -1, 203, -1, 205, -1, -1, 208, -1, 210, - 211, 212, 213, 214, -1, -1, 217, 218, -1, 220, - -1, -1, 223, 224, 225, -1, -1, 228, 229, 230, - 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, - 241, 242, 243, 244, -1, 246, 247, 248, 249, 250, - -1, 252, 253, -1, 255, -1, 257, 258, 259, 260, - 261, 262, -1, 264, 265, -1, -1, 268, 269, 270, - -1, -1, 273, 274, -1, 276, -1, 278, 279, 280, - 281, 282, 283, 284, 285, 286, 287, -1, 289, 290, - 291, 292, 293, 294, 295, 296, -1, 298, 299, 300, - 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, + 338, 339, 340, -1, 342, 343, -1, 345, 346, 347, + 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, + 358, 359, -1, 361, 362, 363, 364, 365, -1, 367, + 368, 369, 370, 371, -1, 373, 374, 375, 376, -1, + 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, + 388, 389, 390, 391, 392, -1, 394, 395, 396, 397, + -1, 399, 400, 401, 402, 403, -1, 405, 406, 407, + -1, -1, 410, 411, 412, 413, 414, -1, 416, 417, + 418, 419, 420, 421, 422, 423, -1, -1, 426, 427, + 428, 429, 430, -1, -1, 433, 434, 435, 436, 437, + 438, 439, -1, 441, -1, 443, 444, 445, 446, -1, + -1, 449, -1, -1, 452, 453, 454, 455, 456, 457, + 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, + 468, 469, 470, 471, 3, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, + 29, -1, 31, 32, 33, -1, -1, -1, -1, -1, + -1, -1, 41, 42, -1, 44, 45, 46, -1, 48, + 49, 50, 51, 52, -1, 54, 55, -1, 57, 58, + 59, 60, 61, 62, -1, -1, 65, 66, 67, 68, + 69, -1, 71, 72, 73, 74, 75, -1, -1, -1, + 79, 80, 81, 82, 83, -1, 85, 86, 87, -1, + 89, 90, 91, 92, 93, 94, 95, -1, 97, 98, + 99, -1, -1, -1, -1, -1, -1, -1, 107, 108, + 109, 110, 111, 112, 113, 114, 115, -1, 117, -1, + 119, 120, 121, 122, 123, 124, -1, 126, 127, 128, + 129, -1, -1, 132, 133, 134, 135, 136, -1, 138, + 139, 140, -1, 142, 143, 144, -1, 146, 147, 148, + 149, 150, 151, 152, 153, 154, 155, -1, 157, -1, + 159, 160, 161, 162, -1, 164, -1, 166, -1, -1, + -1, 170, 171, 172, 173, -1, 175, 176, -1, 178, + 179, 180, -1, 182, 183, 184, 185, 186, -1, 188, + 189, 190, 191, -1, 193, 194, 195, 196, 197, 198, + 199, -1, 201, -1, 203, 204, 205, 206, 207, 208, + 209, -1, 211, -1, 213, -1, -1, 216, -1, 218, + 219, 220, 221, 222, -1, -1, 225, 226, -1, 228, + -1, -1, 231, 232, 233, -1, -1, 236, 237, 238, + 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, + 249, 250, 251, 252, -1, 254, 255, 256, 257, 258, + 259, 260, 261, 262, 263, 264, -1, 266, 267, -1, + 269, -1, 271, 272, 273, 274, 275, 276, -1, 278, + 279, -1, -1, 282, 283, 284, -1, -1, 287, 288, + 289, -1, 291, -1, 293, 294, 295, 296, 297, 298, + 299, 300, 301, 302, -1, 304, 305, 306, 307, 308, + 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, + 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, + 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, + 339, 340, -1, 342, 343, -1, 345, 346, 347, 348, + 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, + 359, 360, 361, 362, 363, 364, 365, -1, 367, 368, + 369, 370, 371, -1, 373, 374, 375, 376, -1, 378, + 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, + 389, 390, 391, 392, -1, 394, 395, -1, 397, -1, + 399, 400, 401, 402, 403, -1, 405, 406, 407, -1, + -1, 410, 411, 412, 413, 414, -1, 416, 417, 418, + 419, 420, 421, 422, 423, -1, -1, 426, 427, 428, + 429, 430, -1, -1, 433, 434, 435, 436, 437, 438, + 439, -1, 441, -1, 443, 444, 445, 446, -1, -1, + 449, -1, -1, 452, 453, 454, 455, 456, 457, 458, + 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, + 469, 470, 471, 3, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, + 30, 31, 32, 33, -1, -1, -1, -1, -1, -1, + -1, 41, 42, -1, 44, 45, 46, -1, 48, 49, + 50, 51, 52, -1, 54, 55, -1, 57, 58, 59, + 60, 61, 62, -1, -1, 65, 66, 67, 68, 69, + -1, 71, 72, 73, 74, 75, -1, -1, -1, 79, + 80, 81, 82, 83, -1, 85, 86, 87, -1, 89, + 90, 91, 92, 93, 94, -1, -1, 97, 98, 99, + -1, -1, -1, -1, -1, -1, -1, 107, 108, 109, + 110, 111, 112, 113, 114, 115, -1, 117, -1, 119, + 120, 121, 122, 123, 124, -1, 126, 127, 128, 129, + -1, -1, 132, 133, 134, 135, 136, -1, 138, 139, + 140, -1, 142, 143, 144, -1, 146, 147, 148, 149, + 150, 151, 152, 153, 154, 155, -1, 157, -1, 159, + 160, 161, 162, -1, 164, -1, 166, -1, -1, -1, + 170, 171, 172, 173, -1, 175, 176, -1, 178, 179, + 180, -1, 182, 183, 184, 185, 186, -1, 188, 189, + 190, 191, -1, 193, 194, 195, 196, 197, 198, 199, + -1, 201, -1, 203, 204, 205, 206, 207, 208, 209, + -1, 211, -1, 213, -1, -1, 216, -1, 218, 219, + 220, 221, 222, -1, -1, 225, 226, -1, 228, -1, + -1, 231, 232, 233, -1, -1, 236, 237, 238, 239, + 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, + 250, 251, 252, -1, 254, 255, 256, 257, 258, 259, + 260, 261, 262, 263, 264, -1, 266, 267, -1, 269, + -1, 271, 272, 273, 274, 275, 276, -1, 278, 279, + -1, 281, 282, 283, 284, -1, -1, 287, 288, 289, + -1, 291, -1, 293, 294, 295, 296, 297, 298, 299, + 300, 301, 302, -1, 304, 305, 306, 307, 308, 309, + 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, + 320, 321, 322, 323, 324, 325, 326, 327, -1, 329, + 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, + 340, -1, 342, 343, -1, 345, 346, 347, 348, 349, + 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, + -1, 361, 362, 363, 364, 365, -1, 367, 368, 369, + 370, 371, -1, 373, 374, 375, 376, -1, 378, 379, + 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, + 390, 391, 392, -1, 394, 395, -1, 397, -1, 399, + 400, 401, 402, 403, -1, 405, 406, 407, -1, -1, + 410, 411, 412, 413, 414, -1, 416, 417, 418, 419, + 420, 421, 422, 423, -1, -1, 426, 427, 428, 429, + 430, -1, -1, 433, 434, 435, 436, 437, 438, 439, + -1, 441, -1, 443, 444, 445, 446, -1, -1, 449, + -1, -1, 452, 453, 454, 455, 456, 457, 458, 459, + 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, + 470, 471, 3, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 22, 23, 24, 25, 26, 27, 28, 29, 30, + 31, 32, 33, -1, -1, -1, -1, -1, -1, -1, + 41, 42, -1, 44, 45, 46, -1, 48, 49, 50, + 51, 52, -1, 54, 55, -1, 57, 58, 59, 60, + 61, 62, -1, -1, 65, 66, 67, 68, 69, -1, + 71, 72, 73, 74, 75, -1, -1, -1, 79, 80, + 81, 82, 83, -1, 85, 86, 87, -1, 89, 90, + 91, 92, 93, 94, -1, -1, 97, 98, 99, -1, + -1, -1, -1, -1, -1, -1, 107, 108, 109, 110, + 111, 112, 113, 114, 115, -1, 117, -1, 119, 120, + 121, 122, 123, 124, -1, 126, 127, 128, 129, -1, + -1, 132, 133, 134, 135, 136, -1, 138, 139, 140, + -1, 142, 143, 144, -1, 146, 147, 148, 149, 150, + 151, 152, 153, 154, 155, -1, 157, -1, 159, 160, + 161, 162, -1, 164, -1, 166, -1, -1, -1, 170, + 171, 172, 173, -1, 175, 176, -1, 178, 179, 180, + -1, 182, 183, 184, 185, 186, -1, 188, 189, 190, + 191, -1, 193, 194, 195, 196, 197, 198, 199, -1, + 201, -1, 203, 204, 205, 206, 207, 208, 209, -1, + 211, -1, 213, -1, -1, 216, -1, 218, 219, 220, + 221, 222, -1, -1, 225, 226, -1, 228, -1, -1, + 231, 232, 233, -1, -1, 236, 237, 238, 239, 240, + 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, + 251, 252, -1, 254, 255, 256, 257, 258, 259, 260, + 261, 262, 263, 264, -1, 266, 267, -1, 269, -1, + 271, 272, 273, 274, 275, 276, -1, 278, 279, -1, + -1, 282, 283, 284, -1, -1, 287, 288, 289, -1, + 291, -1, 293, 294, 295, 296, 297, 298, 299, 300, + 301, 302, -1, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, - 321, 322, 323, 324, -1, 326, 327, -1, 329, 330, + 321, 322, 323, 324, 325, 326, 327, -1, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, - 341, -1, 343, 344, 345, 346, 347, -1, 349, 350, - 351, 352, 353, -1, 355, 356, 357, 358, -1, 360, - 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, - 371, 372, -1, 374, 375, -1, 377, -1, 379, 380, - 381, 382, 383, -1, 385, 386, -1, -1, 389, 390, - 391, 392, 393, -1, 395, 396, 397, 398, 399, 400, - 401, -1, -1, 404, 405, 406, 407, 408, -1, -1, - 411, 412, 413, 414, 415, 416, 417, -1, 419, -1, - 421, 422, 423, 424, -1, -1, 427, -1, -1, 430, - 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, - 441, 442, 443, 444, 445, 446, 447, 448, 449, 3, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 18, 19, 20, 21, 22, 23, - 24, 25, -1, 27, 28, 29, -1, -1, -1, -1, - -1, -1, -1, 37, 38, -1, 40, 41, 42, -1, - 44, 45, 46, 47, 48, -1, 50, 51, -1, 53, - 54, 55, 56, 57, -1, -1, 60, 61, 62, 63, - 64, -1, 66, 67, 68, 69, 70, -1, -1, -1, - 74, 75, 76, 77, 78, -1, 80, 81, 82, -1, - 84, 85, 86, 87, 88, 89, -1, -1, 92, 93, - 94, -1, -1, -1, -1, -1, -1, -1, 102, 103, - 104, 105, 106, 107, 108, 109, 110, -1, 112, -1, - 114, 115, 116, 117, 118, 119, -1, 121, 122, 123, - 124, -1, -1, 127, 128, 129, 130, 131, -1, 133, - 134, 135, -1, 137, 138, 139, -1, 141, 142, 143, - 144, 145, 146, 147, 148, 149, -1, 151, -1, 153, - 154, 155, 156, -1, 158, -1, 160, -1, -1, -1, - 164, 165, 166, 167, -1, 169, 170, -1, 172, 173, - -1, 175, 176, 177, 178, 179, -1, 181, 182, 183, - 184, -1, 186, 187, 188, 189, 190, 191, -1, 193, - -1, 195, 196, 197, 198, 199, 200, 201, -1, 203, - -1, 205, -1, -1, 208, -1, 210, 211, 212, 213, - 214, -1, -1, 217, 218, -1, 220, -1, -1, 223, - 224, 225, -1, -1, 228, 229, 230, 231, 232, 233, - 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, - 244, -1, 246, 247, 248, 249, 250, -1, 252, 253, - -1, 255, -1, 257, 258, 259, 260, 261, 262, -1, - 264, 265, -1, -1, 268, 269, 270, -1, -1, 273, - 274, -1, 276, -1, 278, 279, 280, 281, 282, 283, - 284, 285, 286, 287, -1, 289, 290, 291, 292, 293, - 294, 295, 296, -1, 298, 299, 300, 301, 302, 303, + -1, 342, 343, -1, 345, 346, 347, 348, 349, 350, + 351, 352, 353, 354, 355, 356, 357, 358, 359, -1, + 361, 362, 363, 364, 365, -1, 367, 368, 369, 370, + 371, -1, 373, 374, 375, 376, -1, 378, 379, 380, + 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, + 391, 392, -1, 394, 395, -1, 397, -1, 399, 400, + 401, 402, 403, -1, 405, 406, 407, -1, -1, 410, + 411, 412, 413, 414, -1, 416, 417, 418, 419, 420, + 421, 422, 423, -1, -1, 426, 427, 428, 429, 430, + 431, -1, 433, 434, 435, 436, 437, 438, 439, -1, + 441, -1, 443, 444, 445, 446, -1, -1, 449, -1, + -1, 452, 453, 454, 455, 456, 457, 458, 459, 460, + 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, + 471, 3, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, + 32, 33, -1, -1, -1, -1, -1, -1, -1, 41, + 42, -1, 44, 45, 46, -1, 48, 49, 50, 51, + 52, -1, 54, 55, -1, 57, 58, 59, 60, 61, + 62, -1, -1, 65, 66, 67, 68, 69, -1, 71, + 72, 73, 74, 75, -1, -1, -1, 79, 80, 81, + 82, 83, -1, 85, 86, 87, -1, 89, 90, 91, + 92, 93, 94, -1, -1, 97, 98, 99, -1, -1, + -1, -1, -1, -1, -1, 107, 108, 109, 110, 111, + 112, 113, 114, 115, -1, 117, -1, 119, 120, 121, + 122, 123, 124, -1, 126, 127, 128, 129, -1, -1, + 132, 133, 134, 135, 136, -1, 138, 139, 140, -1, + 142, 143, 144, -1, 146, 147, 148, 149, 150, 151, + 152, 153, 154, 155, -1, 157, -1, 159, 160, 161, + 162, -1, 164, -1, 166, -1, -1, -1, 170, 171, + 172, 173, -1, 175, 176, -1, 178, 179, 180, -1, + 182, 183, 184, 185, 186, -1, 188, 189, 190, 191, + -1, 193, 194, 195, 196, 197, 198, 199, -1, 201, + -1, 203, 204, 205, 206, 207, 208, 209, -1, 211, + -1, 213, -1, -1, 216, -1, 218, 219, 220, 221, + 222, -1, -1, 225, 226, -1, 228, -1, -1, 231, + 232, 233, -1, -1, 236, 237, 238, 239, 240, 241, + 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, + 252, -1, 254, 255, 256, 257, 258, 259, 260, 261, + 262, 263, 264, -1, 266, 267, -1, 269, -1, 271, + 272, 273, 274, 275, 276, -1, 278, 279, -1, -1, + 282, 283, 284, -1, -1, 287, 288, 289, -1, 291, + -1, 293, 294, 295, 296, 297, 298, 299, 300, 301, + 302, -1, 304, 305, 306, 307, 308, 309, 310, 311, + -1, 313, 314, 315, 316, 317, 318, 319, 320, 321, + 322, 323, 324, 325, 326, 327, -1, 329, 330, 331, + 332, 333, 334, 335, 336, 337, 338, 339, 340, -1, + 342, 343, -1, 345, 346, 347, 348, 349, 350, 351, + 352, 353, 354, 355, 356, 357, 358, 359, -1, 361, + 362, 363, 364, 365, -1, 367, 368, 369, 370, 371, + -1, 373, 374, 375, 376, -1, 378, 379, 380, 381, + 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, + 392, -1, 394, 395, -1, 397, -1, 399, 400, 401, + 402, 403, -1, 405, 406, 407, -1, -1, 410, 411, + 412, 413, 414, -1, 416, 417, 418, 419, 420, 421, + 422, 423, -1, -1, 426, 427, 428, 429, 430, 431, + -1, 433, 434, 435, 436, 437, 438, 439, -1, 441, + -1, 443, 444, 445, 446, -1, -1, 449, -1, -1, + 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, + 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, + 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, + 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, + 33, -1, -1, -1, -1, -1, -1, -1, 41, 42, + -1, 44, 45, 46, -1, 48, 49, 50, 51, 52, + -1, 54, 55, -1, 57, 58, 59, 60, 61, 62, + -1, -1, 65, 66, 67, 68, 69, -1, 71, 72, + 73, 74, 75, -1, -1, -1, 79, 80, 81, 82, + 83, -1, 85, 86, 87, -1, 89, 90, 91, 92, + 93, 94, -1, -1, 97, 98, 99, -1, -1, -1, + -1, -1, -1, -1, 107, 108, 109, 110, 111, 112, + 113, 114, 115, -1, 117, -1, 119, 120, 121, 122, + 123, 124, -1, 126, 127, 128, 129, -1, -1, 132, + 133, 134, 135, 136, -1, 138, 139, 140, -1, 142, + 143, 144, -1, 146, 147, 148, 149, 150, 151, 152, + 153, 154, 155, -1, 157, -1, 159, 160, 161, 162, + -1, 164, -1, 166, -1, -1, -1, 170, 171, 172, + 173, -1, 175, 176, -1, 178, 179, 180, -1, 182, + 183, 184, 185, 186, -1, 188, 189, 190, 191, -1, + 193, 194, 195, 196, 197, 198, 199, -1, 201, -1, + 203, 204, 205, 206, 207, 208, 209, -1, 211, -1, + 213, -1, -1, 216, -1, 218, 219, 220, 221, 222, + -1, -1, 225, 226, -1, 228, -1, -1, 231, 232, + 233, -1, -1, 236, 237, 238, 239, 240, 241, 242, + 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, + -1, 254, 255, 256, 257, 258, 259, 260, 261, 262, + 263, 264, -1, 266, 267, -1, 269, -1, 271, 272, + 273, 274, 275, 276, -1, 278, 279, -1, -1, 282, + 283, 284, -1, -1, 287, 288, 289, -1, 291, -1, + 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, + -1, 304, 305, 306, 307, 308, 309, 310, 311, -1, + 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, + 323, 324, 325, 326, 327, -1, 329, 330, 331, 332, + 333, 334, 335, 336, 337, 338, 339, 340, -1, 342, + 343, -1, 345, 346, 347, 348, 349, 350, 351, 352, + 353, 354, 355, 356, 357, 358, 359, -1, 361, 362, + 363, 364, 365, -1, 367, 368, 369, 370, 371, -1, + 373, 374, 375, 376, -1, 378, 379, 380, 381, 382, + 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, + -1, 394, 395, -1, 397, -1, 399, 400, 401, 402, + 403, -1, 405, 406, 407, -1, -1, 410, 411, 412, + 413, 414, -1, 416, 417, 418, 419, 420, 421, 422, + 423, -1, -1, 426, 427, 428, 429, 430, -1, -1, + 433, 434, 435, 436, 437, 438, 439, -1, 441, -1, + 443, 444, 445, 446, -1, -1, 449, -1, -1, 452, + 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, + 463, 464, 465, 466, 467, 468, 469, 470, 471, 3, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, + 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, + -1, -1, -1, -1, -1, -1, -1, 41, 42, -1, + 44, 45, 46, -1, 48, 49, 50, 51, 52, -1, + 54, 55, -1, 57, 58, 59, 60, 61, 62, -1, + -1, 65, 66, 67, 68, 69, -1, 71, 72, 73, + 74, 75, -1, -1, -1, 79, 80, 81, 82, 83, + -1, 85, 86, 87, -1, 89, 90, 91, 92, 93, + 94, -1, -1, 97, 98, 99, -1, -1, -1, -1, + -1, -1, -1, 107, 108, 109, 110, 111, 112, 113, + 114, 115, -1, 117, -1, 119, 120, 121, 122, 123, + 124, -1, 126, 127, 128, 129, -1, -1, 132, 133, + 134, 135, 136, -1, 138, 139, 140, -1, 142, 143, + 144, -1, 146, 147, 148, 149, 150, 151, 152, 153, + 154, 155, -1, 157, -1, 159, 160, 161, 162, -1, + 164, -1, 166, -1, -1, -1, 170, 171, 172, 173, + -1, 175, 176, -1, 178, 179, 180, -1, 182, 183, + 184, 185, 186, -1, 188, 189, 190, 191, -1, 193, + 194, 195, 196, 197, 198, 199, -1, 201, -1, 203, + 204, 205, 206, 207, 208, 209, -1, 211, -1, 213, + -1, -1, 216, -1, 218, 219, 220, 221, 222, -1, + -1, 225, 226, -1, 228, -1, -1, 231, 232, 233, + -1, -1, 236, 237, 238, 239, 240, 241, 242, 243, + 244, 245, 246, 247, 248, 249, 250, 251, 252, -1, + 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, + 264, -1, 266, 267, -1, 269, -1, 271, 272, 273, + 274, 275, 276, -1, 278, 279, -1, -1, 282, 283, + 284, -1, -1, 287, 288, 289, -1, 291, -1, 293, + 294, 295, 296, 297, 298, 299, 300, 301, 302, -1, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, - 324, -1, 326, 327, -1, 329, 330, 331, 332, 333, - 334, 335, 336, 337, 338, 339, 340, 341, -1, 343, - 344, 345, 346, 347, -1, 349, 350, 351, 352, 353, - -1, 355, 356, 357, 358, -1, 360, 361, 362, 363, - 364, 365, 366, 367, 368, 369, 370, 371, 372, -1, - 374, 375, -1, 377, -1, 379, 380, 381, 382, 383, - -1, 385, 386, -1, -1, 389, 390, 391, 392, 393, - -1, 395, 396, 397, 398, 399, 400, 401, -1, -1, - 404, 405, 406, 407, 408, -1, -1, 411, 412, 413, - 414, 415, 416, 417, -1, 419, -1, 421, 422, 423, - 424, -1, -1, 427, -1, -1, 430, 431, 432, 433, - 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, - 444, 445, 446, 447, 448, 449, 3, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 18, 19, 20, 21, 22, 23, 24, 25, -1, - 27, 28, 29, -1, -1, -1, -1, -1, -1, -1, - 37, 38, -1, 40, 41, 42, -1, 44, 45, 46, - 47, 48, -1, 50, 51, -1, 53, 54, 55, 56, - 57, -1, -1, 60, 61, 62, 63, 64, -1, 66, - 67, 68, 69, 70, -1, -1, -1, 74, 75, 76, - 77, 78, -1, 80, 81, 82, -1, 84, 85, 86, - 87, 88, 89, -1, -1, 92, 93, 94, -1, -1, - -1, -1, -1, -1, -1, 102, 103, 104, 105, 106, - 107, 108, 109, 110, -1, 112, -1, 114, 115, 116, - 117, 118, 119, -1, 121, 122, 123, 124, -1, -1, - 127, 128, 129, 130, 131, -1, 133, 134, 135, -1, - 137, 138, 139, -1, 141, 142, 143, 144, 145, 146, - 147, 148, 149, -1, 151, -1, 153, 154, 155, 156, - -1, 158, -1, 160, -1, -1, -1, 164, 165, 166, - 167, -1, 169, 170, -1, 172, 173, -1, 175, 176, - 177, 178, 179, -1, 181, 182, 183, 184, -1, 186, - 187, 188, 189, 190, 191, -1, 193, -1, 195, 196, - 197, 198, 199, 200, 201, -1, 203, -1, 205, -1, - -1, 208, -1, 210, 211, 212, 213, 214, -1, -1, - 217, 218, -1, 220, -1, -1, 223, 224, 225, -1, - -1, 228, 229, 230, 231, 232, 233, 234, 235, 236, - 237, 238, 239, 240, 241, 242, 243, 244, -1, 246, - 247, 248, 249, 250, -1, 252, 253, -1, 255, -1, - 257, 258, 259, 260, 261, 262, -1, 264, 265, -1, - -1, 268, 269, 270, -1, -1, 273, 274, -1, 276, - -1, 278, 279, 280, 281, 282, 283, 284, 285, 286, - 287, -1, 289, 290, 291, 292, 293, 294, 295, 296, - -1, 298, 299, 300, 301, 302, 303, 304, 305, 306, + 324, 325, 326, 327, -1, 329, 330, 331, 332, 333, + 334, 335, 336, 337, 338, 339, 340, -1, 342, 343, + -1, 345, 346, 347, 348, 349, 350, 351, 352, 353, + 354, 355, 356, 357, 358, 359, -1, 361, 362, 363, + 364, 365, -1, 367, 368, 369, 370, 371, -1, 373, + 374, 375, 376, -1, 378, 379, 380, 381, 382, 383, + 384, 385, 386, 387, 388, 389, 390, 391, 392, -1, + 394, 395, -1, 397, -1, 399, 400, 401, 402, 403, + -1, 405, 406, 407, -1, -1, 410, 411, 412, 413, + 414, -1, 416, 417, 418, 419, 420, 421, 422, 423, + -1, -1, 426, 427, 428, 429, 430, -1, -1, 433, + 434, 435, 436, 437, 438, 439, -1, 441, -1, 443, + 444, 445, 446, -1, -1, 449, -1, -1, 452, 453, + 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, + 464, 465, 466, 467, 468, 469, 470, 471, 3, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 22, 23, 24, + 25, 26, 27, 28, 29, 30, 31, 32, 33, -1, + -1, -1, -1, -1, -1, -1, 41, 42, -1, 44, + 45, 46, -1, 48, 49, 50, 51, 52, -1, 54, + 55, -1, 57, 58, 59, 60, 61, 62, -1, -1, + 65, 66, 67, 68, 69, -1, 71, 72, 73, 74, + 75, -1, -1, -1, 79, 80, 81, 82, 83, -1, + 85, 86, 87, -1, 89, 90, 91, 92, 93, 94, + -1, -1, 97, 98, 99, -1, -1, -1, -1, -1, + -1, -1, 107, 108, 109, 110, 111, 112, 113, 114, + 115, -1, 117, -1, 119, 120, 121, 122, 123, 124, + -1, 126, 127, 128, 129, -1, -1, 132, 133, 134, + 135, 136, -1, 138, 139, 140, -1, 142, 143, 144, + -1, 146, 147, 148, 149, 150, 151, 152, 153, 154, + 155, -1, 157, -1, 159, 160, 161, 162, -1, 164, + -1, 166, -1, -1, -1, 170, 171, 172, 173, -1, + 175, 176, -1, 178, 179, 180, -1, 182, 183, 184, + 185, 186, -1, 188, 189, 190, 191, -1, 193, 194, + 195, 196, 197, 198, 199, -1, 201, -1, 203, 204, + 205, 206, 207, 208, 209, -1, 211, -1, 213, -1, + -1, 216, -1, 218, 219, 220, 221, 222, -1, -1, + 225, 226, -1, 228, -1, -1, 231, 232, 233, -1, + -1, 236, 237, 238, 239, 240, 241, 242, 243, 244, + 245, 246, 247, 248, 249, 250, 251, 252, -1, 254, + 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, + -1, 266, 267, -1, 269, -1, 271, 272, 273, 274, + 275, 276, -1, 278, 279, -1, -1, 282, 283, 284, + -1, -1, 287, 288, 289, -1, 291, -1, 293, 294, + 295, 296, 297, 298, 299, 300, 301, 302, -1, 304, + 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, + 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, + 325, 326, 327, -1, 329, 330, 331, 332, 333, 334, + 335, 336, 337, 338, 339, 340, -1, 342, 343, -1, + 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, + 355, 356, 357, 358, 359, -1, 361, 362, 363, 364, + 365, -1, 367, 368, 369, 370, 371, -1, 373, 374, + 375, 376, -1, 378, 379, 380, 381, 382, 383, 384, + 385, 386, 387, 388, 389, 390, 391, 392, -1, 394, + 395, -1, 397, -1, 399, 400, 401, 402, 403, -1, + 405, 406, 407, -1, -1, 410, 411, 412, 413, 414, + -1, 416, 417, 418, 419, 420, 421, 422, 423, -1, + -1, 426, 427, 428, 429, 430, -1, -1, 433, 434, + 435, 436, 437, 438, 439, -1, 441, -1, 443, 444, + 445, 446, -1, -1, 449, -1, -1, 452, 453, 454, + 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, + 465, 466, 467, 468, 469, 470, 471, 3, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 22, 23, 24, 25, + 26, 27, 28, 29, 30, 31, 32, 33, -1, -1, + -1, -1, -1, -1, -1, 41, 42, -1, 44, 45, + 46, -1, 48, 49, 50, 51, 52, -1, 54, 55, + -1, 57, 58, 59, 60, 61, 62, -1, -1, 65, + 66, 67, 68, 69, -1, 71, 72, 73, 74, 75, + -1, -1, -1, 79, 80, 81, 82, 83, -1, 85, + 86, 87, -1, 89, 90, 91, 92, 93, 94, -1, + -1, 97, 98, 99, -1, -1, -1, -1, -1, -1, + -1, 107, 108, 109, 110, 111, 112, 113, 114, 115, + -1, 117, -1, 119, 120, 121, 122, 123, 124, -1, + 126, 127, 128, 129, -1, -1, 132, 133, 134, 135, + 136, -1, 138, 139, 140, -1, 142, 143, 144, -1, + 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, + -1, 157, -1, 159, 160, 161, 162, -1, 164, -1, + 166, -1, -1, -1, 170, 171, 172, 173, -1, 175, + 176, -1, 178, 179, 180, -1, 182, 183, 184, 185, + 186, -1, 188, 189, 190, 191, -1, 193, 194, 195, + 196, 197, 198, 199, -1, 201, -1, 203, 204, 205, + 206, 207, 208, 209, -1, 211, -1, 213, -1, -1, + 216, -1, 218, 219, 220, 221, 222, -1, -1, 225, + 226, -1, 228, -1, -1, 231, 232, 233, -1, -1, + 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, + 246, 247, 248, 249, 250, 251, 252, -1, 254, 255, + 256, 257, 258, 259, 260, 261, 262, 263, 264, -1, + 266, 267, -1, 269, -1, 271, 272, 273, 274, 275, + 276, -1, 278, 279, -1, -1, 282, 283, 284, -1, + -1, 287, 288, 289, -1, 291, -1, 293, 294, 295, + 296, 297, 298, 299, 300, 301, 302, -1, 304, 305, + 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, + 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, + 326, 327, -1, 329, 330, 331, 332, 333, 334, 335, + 336, 337, 338, 339, 340, -1, 342, 343, -1, 345, + 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, + 356, 357, 358, 359, -1, 361, 362, 363, 364, 365, + -1, 367, 368, 369, 370, 371, -1, 373, 374, 375, + 376, -1, 378, 379, 380, 381, 382, 383, 384, 385, + 386, 387, 388, 389, 390, 391, 392, -1, 394, 395, + -1, 397, -1, 399, 400, 401, 402, 403, -1, 405, + 406, 407, -1, -1, 410, 411, 412, 413, 414, -1, + 416, 417, 418, 419, 420, 421, 422, 423, -1, -1, + 426, 427, 428, 429, 430, -1, -1, 433, 434, 435, + 436, 437, 438, 439, -1, 441, -1, 443, 444, 445, + 446, -1, -1, 449, -1, -1, 452, 453, 454, 455, + 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, + 466, 467, 468, 469, 470, 471, 3, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, + 27, 28, 29, -1, 31, 32, 33, -1, -1, -1, + -1, -1, -1, -1, 41, 42, -1, 44, 45, 46, + -1, 48, 49, 50, 51, 52, -1, 54, 55, -1, + 57, 58, 59, 60, 61, 62, -1, -1, 65, 66, + 67, 68, 69, -1, 71, 72, 73, 74, 75, -1, + -1, -1, 79, 80, 81, 82, 83, -1, 85, 86, + 87, -1, 89, 90, 91, 92, 93, 94, -1, -1, + 97, 98, 99, -1, -1, -1, -1, -1, -1, -1, + 107, 108, 109, 110, 111, 112, 113, 114, 115, -1, + 117, -1, 119, 120, 121, 122, 123, 124, -1, 126, + 127, 128, 129, -1, -1, 132, 133, 134, 135, 136, + -1, 138, 139, 140, -1, 142, 143, 144, -1, 146, + 147, 148, 149, 150, 151, 152, 153, 154, 155, -1, + 157, -1, 159, 160, 161, 162, -1, 164, -1, 166, + -1, -1, -1, 170, 171, 172, 173, -1, 175, 176, + -1, 178, 179, 180, -1, 182, 183, 184, 185, 186, + -1, 188, 189, 190, 191, -1, 193, 194, 195, 196, + 197, 198, 199, -1, 201, -1, 203, 204, 205, 206, + 207, 208, 209, -1, 211, -1, 213, -1, -1, 216, + -1, 218, 219, 220, 221, 222, -1, -1, 225, 226, + -1, 228, -1, -1, 231, 232, 233, -1, -1, 236, + 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, + 247, 248, 249, 250, 251, 252, -1, 254, 255, 256, + 257, 258, 259, 260, 261, 262, 263, 264, -1, 266, + 267, -1, 269, -1, 271, 272, 273, 274, 275, 276, + -1, 278, 279, -1, 281, 282, 283, 284, -1, -1, + 287, 288, 289, -1, 291, -1, 293, 294, 295, 296, + 297, 298, 299, 300, 301, 302, -1, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, - 317, 318, 319, 320, 321, 322, 323, 324, -1, 326, + 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, -1, 329, 330, 331, 332, 333, 334, 335, 336, - 337, 338, 339, 340, 341, -1, 343, 344, 345, 346, - 347, -1, 349, 350, 351, 352, 353, -1, 355, 356, - 357, 358, -1, 360, 361, 362, 363, 364, 365, 366, - 367, 368, 369, 370, 371, 372, -1, 374, 375, -1, - 377, -1, 379, 380, 381, 382, 383, -1, 385, 386, - -1, -1, 389, 390, 391, 392, 393, -1, 395, 396, - 397, 398, 399, 400, 401, -1, -1, 404, 405, 406, - 407, 408, -1, -1, 411, 412, 413, 414, 415, 416, - 417, -1, 419, -1, 421, 422, 423, 424, -1, -1, - 427, -1, -1, 430, 431, 432, 433, 434, 435, 436, - 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, - 447, 448, 449, 3, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 18, 19, - 20, 21, 22, 23, 24, 25, -1, 27, 28, 29, - -1, -1, -1, -1, -1, -1, -1, 37, 38, -1, - 40, 41, 42, -1, 44, 45, 46, 47, 48, -1, - 50, 51, -1, 53, 54, 55, 56, 57, -1, -1, - 60, 61, 62, 63, 64, -1, 66, 67, 68, 69, - 70, -1, -1, -1, 74, 75, 76, 77, 78, -1, - 80, 81, 82, -1, 84, 85, 86, 87, 88, 89, - -1, -1, 92, 93, 94, -1, -1, -1, -1, -1, - -1, -1, 102, 103, 104, 105, 106, 107, 108, 109, - 110, -1, 112, -1, 114, 115, 116, 117, 118, 119, - -1, 121, 122, 123, 124, -1, -1, 127, 128, 129, - 130, 131, -1, 133, 134, 135, -1, 137, 138, 139, - -1, 141, 142, 143, 144, 145, 146, 147, 148, 149, - -1, 151, -1, 153, 154, 155, 156, -1, 158, -1, - 160, -1, -1, -1, 164, 165, 166, 167, -1, 169, - 170, -1, 172, 173, -1, 175, 176, 177, 178, 179, - -1, 181, 182, 183, 184, -1, 186, 187, 188, 189, - 190, 191, -1, 193, -1, 195, 196, 197, 198, 199, - 200, 201, -1, 203, -1, 205, -1, -1, 208, -1, - 210, 211, 212, 213, 214, -1, -1, 217, 218, -1, - 220, -1, -1, 223, 224, 225, -1, -1, 228, 229, - 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, - 240, 241, 242, 243, 244, -1, 246, 247, 248, 249, - 250, -1, 252, 253, -1, 255, -1, 257, 258, 259, - 260, 261, 262, -1, 264, 265, -1, -1, 268, 269, - 270, -1, -1, 273, 274, -1, 276, -1, 278, 279, - 280, 281, 282, 283, 284, 285, 286, 287, -1, 289, - 290, 291, 292, 293, 294, 295, 296, -1, 298, 299, - 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, + 337, 338, 339, 340, -1, 342, 343, -1, 345, 346, + 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, + 357, 358, 359, -1, 361, 362, 363, 364, 365, -1, + 367, 368, 369, 370, 371, -1, 373, 374, 375, 376, + -1, 378, 379, 380, 381, 382, 383, 384, 385, 386, + 387, 388, 389, 390, 391, 392, -1, 394, 395, -1, + 397, -1, 399, 400, 401, 402, 403, -1, 405, 406, + 407, -1, -1, 410, 411, 412, 413, 414, -1, 416, + 417, 418, 419, 420, 421, 422, 423, -1, -1, 426, + 427, 428, 429, 430, -1, -1, 433, 434, 435, 436, + 437, 438, 439, -1, 441, -1, 443, 444, 445, 446, + -1, -1, 449, -1, -1, 452, 453, 454, 455, 456, + 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, + 467, 468, 469, 470, 471, 3, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, + 28, 29, 30, 31, 32, 33, -1, -1, -1, -1, + -1, -1, -1, 41, 42, -1, 44, 45, 46, -1, + 48, 49, 50, 51, 52, -1, 54, 55, -1, 57, + 58, 59, 60, 61, 62, -1, -1, 65, 66, 67, + 68, 69, -1, 71, 72, 73, 74, 75, -1, -1, + -1, 79, 80, 81, 82, 83, -1, 85, 86, 87, + -1, 89, 90, 91, 92, 93, 94, -1, -1, 97, + 98, 99, -1, -1, -1, -1, -1, -1, -1, 107, + 108, 109, 110, 111, 112, 113, 114, 115, -1, 117, + -1, 119, 120, 121, 122, 123, 124, -1, 126, 127, + 128, 129, -1, -1, 132, 133, 134, 135, 136, -1, + 138, 139, 140, -1, 142, 143, 144, -1, 146, 147, + 148, 149, 150, 151, 152, 153, 154, 155, -1, 157, + -1, 159, 160, 161, 162, -1, 164, -1, 166, -1, + -1, -1, 170, 171, 172, 173, -1, 175, 176, -1, + 178, 179, 180, -1, 182, 183, 184, 185, 186, -1, + 188, 189, 190, 191, -1, 193, 194, 195, 196, 197, + 198, 199, -1, 201, -1, 203, 204, 205, 206, 207, + 208, 209, -1, 211, -1, 213, -1, -1, 216, -1, + 218, 219, 220, 221, 222, -1, -1, 225, 226, -1, + 228, -1, -1, 231, 232, 233, -1, -1, 236, 237, + 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, + 248, 249, 250, 251, 252, -1, 254, 255, 256, 257, + 258, 259, 260, 261, 262, 263, 264, -1, 266, 267, + -1, 269, -1, 271, 272, 273, 274, 275, 276, -1, + 278, 279, -1, -1, 282, 283, 284, -1, -1, 287, + 288, 289, -1, 291, -1, 293, 294, 295, 296, 297, + 298, 299, 300, 301, 302, -1, 304, 305, 306, 307, + 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, + 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, + -1, 329, 330, 331, 332, 333, 334, 335, 336, 337, + 338, 339, 340, -1, 342, 343, -1, 345, 346, 347, + 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, + 358, 359, -1, 361, 362, 363, 364, 365, -1, 367, + 368, 369, 370, 371, -1, 373, 374, 375, 376, -1, + 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, + 388, 389, 390, 391, 392, -1, 394, 395, -1, 397, + -1, 399, 400, 401, 402, 403, -1, 405, 406, 407, + -1, -1, 410, 411, 412, 413, 414, -1, 416, 417, + 418, 419, 420, 421, 422, 423, -1, -1, 426, 427, + 428, 429, 430, -1, -1, 433, 434, 435, 436, 437, + 438, 439, -1, 441, -1, 443, 444, 445, 446, -1, + -1, 449, -1, -1, 452, 453, 454, 455, 456, 457, + 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, + 468, 469, 470, 471, 3, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, + 29, 30, 31, 32, 33, -1, -1, -1, -1, -1, + -1, -1, 41, 42, -1, 44, 45, 46, -1, 48, + 49, 50, 51, 52, -1, 54, 55, -1, 57, 58, + 59, 60, 61, 62, -1, -1, 65, 66, 67, 68, + 69, -1, 71, 72, 73, 74, 75, -1, -1, -1, + 79, 80, 81, 82, 83, -1, 85, 86, 87, -1, + 89, 90, 91, 92, 93, 94, -1, -1, 97, 98, + 99, -1, -1, -1, -1, -1, -1, -1, 107, 108, + 109, 110, 111, 112, 113, 114, 115, -1, 117, -1, + 119, 120, 121, 122, 123, 124, -1, 126, 127, 128, + 129, -1, -1, 132, 133, 134, 135, 136, -1, 138, + 139, 140, -1, 142, 143, 144, -1, 146, 147, 148, + 149, 150, 151, 152, 153, 154, 155, -1, 157, -1, + 159, 160, 161, 162, -1, 164, -1, 166, -1, -1, + -1, 170, 171, 172, 173, -1, 175, 176, -1, 178, + 179, 180, -1, 182, 183, 184, 185, 186, -1, 188, + 189, 190, 191, -1, 193, 194, 195, 196, 197, 198, + 199, -1, 201, -1, 203, 204, 205, 206, 207, 208, + 209, -1, 211, -1, 213, -1, -1, 216, -1, 218, + 219, 220, 221, 222, -1, -1, 225, 226, -1, 228, + -1, -1, 231, 232, 233, -1, -1, 236, 237, 238, + 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, + 249, 250, 251, 252, -1, 254, 255, 256, 257, 258, + 259, 260, 261, 262, 263, 264, -1, 266, 267, -1, + 269, -1, 271, 272, 273, 274, 275, 276, -1, 278, + 279, -1, -1, 282, 283, 284, -1, -1, 287, 288, + 289, -1, 291, -1, 293, 294, 295, 296, 297, 298, + 299, 300, 301, 302, -1, 304, 305, 306, 307, 308, + 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, + 319, 320, 321, 322, 323, 324, 325, 326, 327, -1, + 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, + 339, 340, -1, 342, 343, -1, 345, 346, 347, 348, + 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, + 359, -1, 361, 362, 363, 364, 365, -1, 367, 368, + 369, 370, 371, -1, 373, 374, 375, 376, -1, 378, + 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, + 389, 390, 391, 392, -1, 394, 395, -1, 397, -1, + 399, 400, 401, 402, 403, -1, 405, 406, 407, -1, + -1, 410, 411, 412, 413, 414, -1, 416, 417, 418, + 419, 420, 421, 422, 423, -1, -1, 426, 427, 428, + 429, 430, -1, -1, 433, 434, 435, 436, 437, 438, + 439, -1, 441, -1, 443, 444, 445, 446, -1, -1, + 449, -1, -1, 452, 453, 454, 455, 456, 457, 458, + 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, + 469, 470, 471, 3, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, + 30, 31, 32, 33, -1, -1, -1, -1, -1, -1, + -1, 41, 42, -1, 44, 45, 46, -1, 48, 49, + 50, 51, 52, -1, 54, 55, -1, 57, 58, 59, + 60, 61, 62, -1, -1, 65, 66, 67, 68, 69, + -1, 71, 72, 73, 74, 75, -1, -1, -1, 79, + 80, 81, 82, 83, -1, 85, 86, 87, -1, 89, + 90, 91, 92, 93, 94, -1, -1, 97, 98, 99, + -1, -1, -1, -1, -1, -1, -1, 107, 108, 109, + 110, 111, 112, 113, 114, 115, -1, 117, -1, 119, + 120, 121, 122, 123, 124, -1, 126, 127, 128, 129, + -1, -1, 132, 133, 134, 135, 136, -1, 138, 139, + 140, -1, 142, 143, 144, -1, 146, 147, 148, 149, + 150, 151, 152, 153, 154, 155, -1, 157, -1, 159, + 160, 161, 162, -1, 164, -1, 166, -1, -1, -1, + 170, 171, 172, 173, -1, 175, 176, -1, 178, 179, + 180, -1, 182, 183, 184, 185, 186, -1, 188, 189, + 190, 191, -1, 193, 194, 195, 196, 197, 198, 199, + -1, 201, -1, 203, 204, 205, 206, 207, 208, 209, + -1, 211, -1, 213, -1, -1, 216, -1, 218, 219, + 220, 221, 222, -1, -1, 225, 226, -1, 228, -1, + -1, 231, 232, 233, -1, -1, 236, 237, 238, 239, + 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, + 250, 251, 252, -1, 254, 255, 256, 257, 258, 259, + 260, 261, 262, 263, 264, -1, 266, 267, -1, 269, + -1, 271, 272, 273, 274, 275, 276, -1, 278, 279, + -1, -1, 282, 283, 284, -1, -1, 287, 288, 289, + -1, 291, -1, 293, 294, 295, 296, 297, 298, 299, + 300, 301, 302, -1, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, - 320, 321, 322, 323, 324, -1, 326, 327, -1, 329, + 320, 321, 322, 323, 324, 325, 326, 327, -1, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, - 340, 341, -1, 343, 344, 345, 346, 347, -1, 349, - 350, 351, 352, 353, -1, 355, 356, 357, 358, -1, - 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, - 370, 371, 372, -1, 374, 375, -1, 377, -1, 379, - 380, 381, 382, 383, -1, 385, 386, -1, -1, 389, - 390, 391, 392, 393, -1, 395, 396, 397, 398, 399, - 400, 401, -1, -1, 404, 405, 406, 407, 408, -1, - -1, 411, 412, 413, 414, 415, 416, 417, -1, 419, - -1, 421, 422, 423, 424, -1, -1, 427, -1, -1, - 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, - 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, + 340, -1, 342, 343, -1, 345, 346, 347, 348, 349, + 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, + -1, 361, 362, 363, 364, 365, -1, 367, 368, 369, + 370, 371, -1, 373, 374, 375, 376, -1, 378, 379, + 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, + 390, 391, 392, -1, 394, 395, -1, 397, -1, 399, + 400, 401, 402, 403, -1, 405, 406, 407, -1, -1, + 410, 411, 412, 413, 414, -1, 416, 417, 418, 419, + 420, 421, 422, 423, -1, -1, 426, 427, 428, 429, + 430, -1, -1, 433, 434, 435, 436, 437, 438, 439, + -1, 441, -1, 443, 444, 445, 446, -1, -1, 449, + -1, -1, 452, 453, 454, 455, 456, 457, 458, 459, + 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, + 470, 471, 3, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 22, 23, 24, 25, 26, 27, 28, 29, -1, + 31, 32, 33, -1, -1, -1, -1, -1, -1, -1, + 41, 42, -1, 44, 45, 46, 47, 48, 49, 50, + 51, 52, -1, 54, 55, -1, 57, 58, 59, 60, + 61, 62, -1, -1, 65, 66, 67, 68, 69, -1, + 71, 72, 73, 74, 75, -1, -1, -1, 79, 80, + 81, 82, 83, -1, 85, 86, 87, -1, 89, 90, + 91, 92, 93, 94, -1, -1, 97, 98, 99, -1, + -1, -1, -1, -1, -1, -1, 107, 108, 109, 110, + 111, 112, 113, 114, 115, -1, 117, -1, 119, 120, + 121, 122, 123, 124, -1, 126, 127, 128, 129, -1, + -1, 132, 133, 134, 135, 136, -1, 138, 139, 140, + -1, 142, 143, 144, -1, 146, 147, 148, 149, 150, + 151, 152, 153, 154, 155, -1, 157, -1, 159, 160, + 161, 162, -1, 164, -1, 166, -1, -1, -1, 170, + 171, 172, 173, -1, 175, 176, -1, 178, 179, 180, + -1, 182, 183, 184, 185, 186, -1, 188, 189, 190, + 191, -1, 193, 194, 195, 196, 197, 198, 199, -1, + 201, -1, 203, 204, 205, 206, 207, 208, 209, -1, + 211, -1, 213, -1, -1, 216, -1, 218, 219, 220, + 221, 222, -1, -1, 225, 226, -1, 228, -1, -1, + 231, 232, 233, -1, -1, 236, 237, 238, 239, 240, + 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, + 251, 252, -1, 254, 255, 256, 257, 258, 259, 260, + 261, 262, 263, 264, -1, 266, 267, -1, 269, -1, + 271, 272, 273, 274, 275, 276, -1, 278, 279, -1, + -1, 282, 283, 284, -1, -1, 287, 288, 289, -1, + 291, -1, 293, 294, 295, 296, 297, 298, 299, 300, + 301, 302, -1, 304, 305, 306, 307, 308, 309, 310, + 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, + 321, 322, 323, 324, 325, 326, 327, -1, 329, 330, + 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, + -1, 342, 343, -1, 345, 346, 347, 348, 349, 350, + 351, 352, 353, 354, 355, 356, 357, 358, 359, -1, + 361, 362, 363, 364, 365, -1, 367, 368, 369, 370, + 371, -1, 373, 374, 375, 376, -1, 378, 379, 380, + 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, + 391, 392, -1, 394, 395, -1, 397, -1, 399, 400, + 401, 402, 403, -1, 405, 406, 407, -1, -1, 410, + 411, 412, 413, 414, -1, 416, 417, 418, 419, 420, + 421, 422, 423, -1, -1, 426, 427, 428, 429, 430, + -1, -1, 433, 434, 435, 436, 437, 438, 439, -1, + 441, -1, 443, 444, 445, 446, -1, -1, 449, -1, + -1, 452, 453, 454, 455, 456, 457, 458, 459, 460, + 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, + 471, 3, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 22, 23, 24, 25, 26, 27, 28, 29, -1, 31, + 32, 33, -1, -1, -1, -1, -1, -1, -1, 41, + 42, -1, 44, 45, 46, -1, 48, 49, 50, 51, + 52, -1, 54, 55, -1, 57, 58, 59, 60, 61, + 62, -1, -1, 65, 66, 67, 68, 69, -1, 71, + 72, 73, 74, 75, -1, -1, -1, 79, 80, 81, + 82, 83, -1, 85, 86, 87, -1, 89, 90, 91, + 92, 93, 94, -1, -1, 97, 98, 99, -1, -1, + -1, -1, -1, -1, -1, 107, 108, 109, 110, 111, + 112, 113, 114, 115, -1, 117, -1, 119, 120, 121, + 122, 123, 124, -1, 126, 127, 128, 129, -1, -1, + 132, 133, 134, 135, 136, -1, 138, 139, 140, -1, + 142, 143, 144, -1, 146, 147, 148, 149, 150, 151, + 152, 153, 154, 155, -1, 157, -1, 159, 160, 161, + 162, -1, 164, -1, 166, -1, -1, -1, 170, 171, + 172, 173, -1, 175, 176, -1, 178, 179, 180, -1, + 182, 183, 184, 185, 186, -1, 188, 189, 190, 191, + -1, 193, 194, 195, 196, 197, 198, 199, -1, 201, + -1, 203, 204, 205, 206, 207, 208, 209, -1, 211, + -1, 213, -1, -1, 216, -1, 218, 219, 220, 221, + 222, -1, -1, 225, 226, -1, 228, -1, -1, 231, + 232, 233, -1, -1, 236, 237, 238, 239, 240, 241, + 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, + 252, -1, 254, 255, 256, 257, 258, 259, 260, 261, + 262, 263, 264, -1, 266, 267, -1, 269, -1, 271, + 272, 273, 274, 275, 276, -1, 278, 279, -1, 281, + 282, 283, 284, -1, -1, 287, 288, 289, -1, 291, + -1, 293, 294, 295, 296, 297, 298, 299, 300, 301, + 302, -1, 304, 305, 306, 307, 308, 309, 310, 311, + -1, 313, 314, 315, 316, 317, 318, 319, 320, 321, + 322, 323, 324, 325, 326, 327, -1, 329, 330, 331, + 332, 333, 334, 335, 336, 337, 338, 339, 340, -1, + 342, 343, -1, 345, 346, 347, 348, 349, 350, 351, + 352, 353, 354, 355, 356, 357, 358, 359, -1, 361, + 362, 363, 364, 365, -1, 367, 368, 369, 370, 371, + -1, 373, 374, 375, 376, -1, 378, 379, 380, 381, + 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, + 392, -1, 394, 395, -1, 397, -1, 399, 400, 401, + 402, 403, -1, 405, 406, 407, -1, -1, 410, 411, + 412, 413, 414, -1, 416, 417, 418, 419, 420, 421, + 422, 423, -1, -1, 426, 427, 428, 429, 430, -1, + -1, 433, 434, 435, 436, 437, 438, 439, -1, 441, + -1, 443, 444, 445, 446, -1, -1, 449, -1, -1, + 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, + 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 18, 19, 20, 21, 22, - 23, 24, 25, -1, 27, 28, 29, -1, -1, -1, - -1, -1, -1, -1, 37, 38, -1, 40, 41, 42, - -1, 44, 45, 46, 47, 48, -1, 50, 51, -1, - 53, 54, 55, 56, 57, -1, -1, 60, 61, 62, - 63, 64, -1, 66, 67, 68, 69, 70, -1, -1, - -1, 74, 75, 76, 77, 78, -1, 80, 81, 82, - -1, 84, 85, 86, 87, 88, 89, -1, -1, 92, - 93, 94, -1, -1, -1, -1, -1, -1, -1, 102, - 103, 104, 105, 106, 107, 108, 109, 110, -1, 112, - -1, 114, 115, 116, 117, 118, 119, -1, 121, 122, - 123, 124, -1, -1, 127, 128, 129, 130, 131, -1, - 133, 134, 135, -1, 137, 138, 139, -1, 141, 142, - 143, 144, 145, 146, 147, 148, 149, -1, 151, -1, - 153, 154, 155, 156, -1, 158, -1, 160, -1, -1, - -1, 164, 165, 166, 167, -1, 169, 170, -1, 172, - 173, -1, 175, 176, 177, 178, 179, -1, 181, 182, - 183, 184, -1, 186, 187, 188, 189, 190, 191, -1, - 193, -1, 195, 196, 197, 198, 199, 200, 201, -1, - 203, -1, 205, -1, -1, 208, -1, 210, 211, 212, - 213, 214, -1, -1, 217, 218, -1, 220, -1, -1, - 223, 224, 225, -1, -1, 228, 229, 230, 231, 232, - 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, - 243, 244, -1, 246, 247, 248, 249, 250, -1, 252, - 253, -1, 255, -1, 257, 258, 259, 260, 261, 262, - -1, 264, 265, -1, -1, 268, 269, 270, -1, -1, - 273, 274, -1, 276, -1, 278, 279, 280, 281, 282, - 283, 284, 285, 286, 287, -1, 289, 290, 291, 292, - 293, 294, 295, 296, -1, 298, 299, 300, 301, 302, - 303, 304, 305, 306, 307, 308, 309, 310, 311, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, + 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, + 33, -1, -1, -1, -1, -1, -1, -1, 41, 42, + -1, 44, 45, 46, -1, 48, 49, 50, 51, 52, + -1, 54, 55, -1, 57, 58, 59, 60, 61, 62, + -1, -1, 65, 66, 67, 68, 69, -1, 71, 72, + 73, 74, 75, -1, -1, -1, 79, 80, 81, 82, + 83, -1, 85, 86, 87, -1, 89, 90, 91, 92, + 93, 94, -1, -1, 97, 98, 99, -1, -1, -1, + -1, -1, -1, -1, 107, 108, 109, 110, 111, 112, + 113, 114, 115, -1, 117, -1, 119, 120, 121, 122, + 123, 124, -1, 126, 127, 128, 129, -1, -1, 132, + 133, 134, 135, 136, -1, 138, 139, 140, -1, 142, + 143, 144, -1, 146, 147, 148, 149, 150, 151, 152, + 153, 154, 155, -1, 157, -1, 159, 160, 161, 162, + -1, 164, -1, 166, -1, -1, -1, 170, 171, 172, + 173, -1, 175, 176, -1, 178, 179, 180, -1, 182, + 183, 184, 185, 186, -1, 188, 189, 190, 191, -1, + 193, 194, 195, 196, 197, 198, 199, -1, 201, -1, + 203, 204, 205, 206, 207, 208, 209, -1, 211, -1, + 213, -1, -1, 216, -1, 218, 219, 220, 221, 222, + -1, -1, 225, 226, -1, 228, -1, -1, 231, 232, + 233, -1, -1, 236, 237, 238, 239, 240, 241, 242, + 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, + -1, 254, 255, 256, 257, 258, 259, 260, 261, 262, + 263, 264, -1, 266, 267, -1, 269, -1, 271, 272, + 273, 274, 275, 276, -1, 278, 279, -1, -1, 282, + 283, 284, -1, -1, 287, 288, 289, -1, 291, -1, + 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, + -1, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, - 323, 324, -1, 326, 327, -1, 329, 330, 331, 332, - 333, 334, 335, 336, 337, 338, 339, 340, 341, -1, - 343, 344, 345, 346, 347, -1, 349, 350, 351, 352, - 353, -1, 355, 356, 357, 358, -1, 360, 361, 362, - 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, - -1, 374, 375, -1, 377, -1, 379, 380, 381, 382, - 383, -1, 385, 386, -1, -1, 389, 390, 391, 392, - 393, -1, 395, 396, 397, 398, 399, 400, 401, -1, - -1, 404, 405, 406, 407, 408, -1, -1, 411, 412, - 413, 414, 415, 416, 417, -1, 419, -1, 421, 422, - 423, 424, -1, -1, 427, -1, -1, 430, 431, 432, - 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, - 443, 444, 445, 446, 447, 448, 449, 3, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 18, 19, 20, 21, 22, 23, 24, 25, - -1, 27, 28, 29, -1, -1, -1, -1, -1, -1, - -1, 37, 38, -1, 40, 41, 42, -1, 44, 45, - 46, 47, 48, -1, 50, 51, -1, 53, 54, 55, - 56, 57, -1, -1, 60, 61, 62, 63, 64, -1, - 66, 67, 68, 69, 70, -1, -1, -1, 74, 75, - 76, 77, 78, -1, 80, 81, 82, -1, 84, 85, - 86, 87, 88, 89, -1, -1, 92, 93, 94, -1, - -1, -1, -1, -1, -1, -1, 102, 103, 104, 105, - 106, 107, 108, 109, 110, -1, 112, -1, 114, 115, - 116, 117, 118, 119, -1, 121, 122, 123, 124, -1, - -1, 127, 128, 129, 130, 131, -1, 133, 134, 135, - -1, 137, 138, 139, -1, 141, 142, 143, 144, 145, - 146, 147, 148, 149, -1, 151, -1, 153, 154, 155, - 156, -1, 158, -1, 160, -1, -1, -1, 164, 165, - 166, 167, -1, 169, 170, -1, 172, 173, -1, 175, - 176, 177, 178, 179, -1, 181, 182, 183, 184, -1, - 186, 187, 188, 189, 190, 191, -1, 193, -1, 195, - 196, 197, 198, 199, 200, 201, -1, 203, -1, 205, - -1, -1, 208, -1, 210, 211, 212, 213, 214, -1, - -1, 217, 218, -1, 220, -1, -1, 223, 224, 225, - -1, -1, 228, 229, 230, 231, 232, 233, 234, 235, - 236, 237, 238, 239, 240, 241, 242, 243, 244, -1, - 246, 247, 248, 249, 250, -1, 252, 253, -1, 255, - -1, 257, 258, 259, 260, 261, 262, -1, 264, 265, - -1, -1, 268, 269, 270, -1, -1, 273, 274, -1, - 276, -1, 278, 279, 280, 281, 282, 283, 284, 285, - 286, 287, -1, 289, 290, 291, 292, 293, 294, 295, - 296, -1, 298, 299, 300, 301, 302, 303, 304, 305, - 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, - 316, 317, 318, 319, 320, 321, 322, 323, 324, -1, - 326, 327, -1, 329, 330, 331, 332, 333, 334, 335, - 336, 337, 338, 339, 340, 341, -1, 343, 344, 345, - 346, 347, -1, 349, 350, 351, 352, 353, -1, 355, - 356, 357, 358, -1, 360, 361, 362, 363, 364, 365, - 366, 367, 368, 369, 370, 371, 372, -1, 374, 375, - -1, 377, -1, 379, 380, 381, 382, 383, -1, 385, - 386, -1, -1, 389, 390, 391, 392, 393, -1, 395, - 396, 397, 398, 399, 400, 401, -1, -1, 404, 405, - 406, 407, 408, -1, -1, 411, 412, 413, 414, 415, - 416, 417, -1, 419, -1, 421, 422, 423, 424, -1, - -1, 427, -1, -1, 430, 431, 432, 433, 434, 435, - 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, - 446, 447, 448, 449, 3, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 18, - 19, 20, 21, 22, 23, 24, 25, -1, 27, 28, - 29, -1, -1, -1, -1, -1, -1, -1, 37, 38, - -1, 40, 41, 42, -1, 44, 45, 46, 47, 48, - -1, 50, 51, -1, 53, 54, 55, 56, 57, -1, - -1, 60, 61, 62, 63, 64, -1, 66, 67, 68, - 69, 70, -1, -1, -1, 74, 75, 76, 77, 78, - -1, 80, 81, 82, -1, 84, 85, 86, 87, 88, - 89, -1, -1, 92, 93, 94, -1, -1, -1, -1, - -1, -1, -1, 102, 103, 104, 105, 106, 107, 108, - 109, 110, -1, 112, -1, 114, 115, 116, 117, 118, - 119, -1, 121, 122, 123, 124, -1, -1, 127, 128, - 129, 130, 131, -1, 133, 134, 135, -1, 137, 138, - 139, -1, 141, 142, 143, 144, 145, 146, 147, 148, - 149, -1, 151, -1, 153, 154, 155, 156, -1, 158, - -1, 160, -1, -1, -1, 164, 165, 166, 167, -1, - 169, 170, -1, 172, 173, -1, 175, 176, 177, 178, - 179, -1, 181, 182, 183, 184, -1, 186, 187, 188, - 189, 190, 191, -1, 193, -1, 195, 196, 197, 198, - 199, 200, 201, -1, 203, -1, 205, -1, -1, 208, - -1, 210, 211, 212, 213, 214, -1, -1, 217, 218, - -1, 220, -1, -1, 223, 224, 225, -1, -1, 228, - 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, - 239, 240, 241, 242, 243, 244, -1, 246, 247, 248, - 249, 250, -1, 252, 253, -1, 255, -1, 257, 258, - 259, 260, 261, 262, -1, 264, 265, -1, -1, 268, - 269, 270, -1, -1, 273, 274, -1, 276, -1, 278, - 279, 280, 281, 282, 283, 284, 285, 286, 287, -1, - 289, 290, 291, 292, 293, 294, 295, 296, -1, 298, - 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, - 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, - 319, 320, 321, 322, 323, 324, -1, 326, 327, -1, - 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, - 339, 340, 341, -1, 343, 344, 345, 346, 347, -1, - 349, 350, 351, 352, 353, -1, 355, 356, 357, 358, - -1, 360, 361, 362, 363, 364, 365, 366, 367, 368, - 369, 370, 371, 372, -1, 374, 375, -1, 377, -1, - 379, 380, 381, 382, 383, -1, 385, 386, -1, -1, - 389, 390, 391, 392, 393, -1, 395, 396, 397, 398, - 399, 400, 401, -1, -1, 404, 405, 406, 407, 408, - -1, -1, 411, 412, 413, 414, 415, 416, 417, -1, - 419, -1, 421, 422, 423, 424, -1, -1, 427, -1, - -1, 430, 431, 432, 433, 434, 435, 436, 437, 438, - 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, - 449, 3, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 18, 19, 20, 21, - 22, 23, 24, 25, -1, 27, 28, 29, -1, -1, - -1, -1, -1, -1, -1, 37, 38, -1, 40, 41, - 42, -1, 44, 45, 46, 47, 48, -1, 50, 51, - -1, 53, 54, 55, 56, 57, -1, -1, 60, 61, - 62, 63, 64, -1, 66, 67, 68, 69, 70, -1, - -1, -1, 74, 75, 76, 77, 78, -1, 80, 81, - 82, -1, 84, 85, 86, 87, 88, 89, -1, -1, - 92, 93, 94, -1, -1, -1, -1, -1, -1, -1, - 102, 103, 104, 105, 106, 107, 108, 109, 110, -1, - 112, -1, 114, 115, 116, 117, 118, 119, -1, 121, - 122, 123, 124, -1, -1, 127, 128, 129, 130, 131, - -1, 133, 134, 135, -1, 137, 138, 139, -1, 141, - 142, 143, 144, 145, 146, 147, 148, 149, -1, 151, - -1, 153, 154, 155, 156, -1, 158, -1, 160, -1, - -1, -1, 164, 165, 166, 167, -1, 169, 170, -1, - 172, 173, -1, 175, 176, 177, 178, 179, -1, 181, - 182, 183, 184, -1, 186, 187, 188, 189, 190, 191, - -1, 193, -1, 195, 196, 197, 198, 199, 200, 201, - -1, 203, -1, 205, -1, -1, 208, -1, 210, 211, - 212, 213, 214, -1, -1, 217, 218, -1, 220, -1, - -1, 223, 224, 225, -1, -1, 228, 229, 230, 231, - 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, - 242, 243, 244, -1, 246, 247, 248, 249, 250, -1, - 252, 253, -1, 255, -1, 257, 258, 259, 260, 261, - 262, -1, 264, 265, -1, -1, 268, 269, 270, -1, - -1, 273, 274, -1, 276, -1, 278, 279, 280, 281, - 282, 283, 284, 285, 286, 287, -1, 289, 290, 291, - 292, 293, 294, 295, 296, -1, 298, 299, 300, 301, - 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, - -1, 313, 314, 315, 316, 317, 318, 319, 320, 321, - 322, 323, 324, -1, 326, 327, -1, 329, 330, 331, - 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, - -1, 343, 344, 345, 346, 347, -1, 349, 350, 351, - 352, 353, -1, 355, 356, 357, 358, -1, 360, 361, - 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, - 372, -1, 374, 375, -1, 377, -1, 379, 380, 381, - 382, 383, -1, 385, 386, -1, -1, 389, 390, 391, - 392, 393, -1, 395, 396, 397, 398, 399, 400, 401, - -1, -1, 404, 405, 406, 407, 408, -1, -1, 411, - 412, 413, 414, 415, 416, 417, -1, 419, -1, 421, - 422, 423, 424, -1, -1, 427, -1, -1, 430, 431, - 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, - 442, 443, 444, 445, 446, 447, 448, 449, 3, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 18, 19, 20, 21, 22, 23, 24, - 25, -1, 27, 28, 29, -1, -1, -1, -1, -1, - -1, -1, 37, 38, -1, 40, 41, 42, -1, 44, - 45, 46, 47, 48, -1, 50, 51, -1, 53, 54, - 55, 56, 57, -1, -1, 60, 61, 62, 63, 64, - -1, 66, 67, 68, 69, 70, -1, -1, -1, 74, - 75, 76, 77, 78, -1, 80, 81, 82, -1, 84, - 85, 86, 87, 88, 89, -1, -1, 92, 93, 94, - -1, -1, -1, -1, -1, -1, -1, 102, 103, 104, - 105, 106, 107, 108, 109, 110, -1, 112, -1, 114, - 115, 116, 117, 118, 119, -1, 121, 122, 123, 124, - -1, -1, 127, 128, 129, 130, 131, -1, 133, 134, - 135, -1, 137, 138, 139, -1, 141, 142, 143, 144, - 145, 146, 147, 148, 149, -1, 151, -1, 153, 154, - 155, 156, -1, 158, -1, 160, -1, -1, -1, 164, - 165, 166, 167, -1, 169, 170, -1, 172, 173, -1, - 175, 176, 177, 178, 179, -1, 181, 182, 183, 184, - -1, 186, 187, 188, 189, 190, 191, -1, 193, -1, - 195, 196, 197, 198, 199, 200, 201, -1, 203, -1, - 205, -1, -1, 208, -1, 210, 211, 212, 213, 214, - -1, -1, 217, 218, -1, 220, -1, -1, 223, 224, - 225, -1, -1, 228, 229, 230, 231, 232, 233, 234, - 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, - -1, 246, 247, 248, 249, 250, -1, 252, 253, -1, - 255, -1, 257, 258, 259, 260, 261, 262, -1, 264, - 265, -1, -1, 268, 269, 270, -1, -1, 273, 274, - -1, 276, -1, 278, 279, 280, 281, 282, 283, 284, - 285, 286, 287, -1, 289, 290, 291, 292, 293, 294, - 295, 296, -1, 298, 299, 300, 301, 302, 303, 304, + 323, 324, 325, 326, 327, -1, 329, 330, 331, 332, + 333, 334, 335, 336, 337, 338, 339, 340, -1, 342, + 343, -1, 345, 346, 347, 348, 349, 350, 351, 352, + 353, 354, 355, 356, 357, 358, 359, -1, 361, 362, + 363, 364, 365, -1, 367, 368, 369, 370, 371, -1, + 373, 374, 375, 376, -1, 378, 379, 380, 381, 382, + 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, + -1, 394, 395, -1, 397, -1, 399, 400, 401, 402, + 403, -1, 405, 406, 407, -1, -1, 410, 411, 412, + 413, 414, -1, 416, 417, 418, 419, 420, 421, 422, + 423, -1, -1, 426, 427, 428, 429, 430, -1, -1, + 433, 434, 435, 436, 437, 438, 439, -1, 441, -1, + 443, 444, 445, 446, -1, -1, 449, -1, -1, 452, + 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, + 463, 464, 465, 466, 467, 468, 469, 470, 471, 3, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, + 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, + -1, -1, -1, -1, -1, -1, -1, 41, 42, -1, + 44, 45, 46, -1, 48, 49, 50, 51, 52, -1, + 54, 55, -1, 57, 58, 59, 60, 61, 62, -1, + -1, 65, 66, 67, 68, 69, -1, 71, 72, 73, + 74, 75, -1, -1, -1, 79, 80, 81, 82, 83, + -1, 85, 86, 87, -1, 89, 90, 91, 92, 93, + 94, -1, -1, 97, 98, 99, -1, -1, -1, -1, + -1, -1, -1, 107, 108, 109, 110, 111, 112, 113, + 114, 115, -1, 117, -1, 119, 120, 121, 122, 123, + 124, -1, 126, 127, 128, 129, -1, -1, 132, 133, + 134, 135, 136, -1, 138, 139, 140, -1, 142, 143, + 144, -1, 146, 147, 148, 149, 150, 151, 152, 153, + 154, 155, -1, 157, -1, 159, 160, 161, 162, -1, + 164, -1, 166, -1, -1, -1, 170, 171, 172, 173, + -1, 175, 176, -1, 178, 179, 180, -1, 182, 183, + 184, 185, 186, -1, 188, 189, 190, 191, -1, 193, + 194, 195, 196, 197, 198, 199, -1, 201, -1, 203, + 204, 205, 206, 207, 208, 209, -1, 211, -1, 213, + -1, -1, 216, -1, 218, 219, 220, 221, 222, -1, + -1, 225, 226, -1, 228, -1, -1, 231, 232, 233, + -1, -1, 236, 237, 238, 239, 240, 241, 242, 243, + 244, 245, 246, 247, 248, 249, 250, 251, 252, -1, + 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, + 264, -1, 266, 267, -1, 269, -1, 271, 272, 273, + 274, 275, 276, -1, 278, 279, -1, -1, 282, 283, + 284, -1, -1, 287, 288, 289, -1, 291, -1, 293, + 294, 295, 296, 297, 298, 299, 300, 301, 302, -1, + 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, + 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, + 324, 325, 326, 327, -1, 329, 330, 331, 332, 333, + 334, 335, 336, 337, 338, 339, 340, -1, 342, 343, + -1, 345, 346, 347, 348, 349, 350, 351, 352, 353, + 354, 355, 356, 357, 358, 359, -1, 361, 362, 363, + 364, 365, -1, 367, 368, 369, 370, 371, -1, 373, + 374, 375, 376, -1, 378, 379, 380, 381, 382, 383, + 384, 385, 386, 387, 388, 389, 390, 391, 392, -1, + 394, 395, -1, 397, -1, 399, 400, 401, 402, 403, + -1, 405, 406, 407, -1, -1, 410, 411, 412, 413, + 414, -1, 416, 417, 418, 419, 420, 421, 422, 423, + -1, -1, 426, 427, 428, 429, 430, -1, -1, 433, + 434, 435, 436, 437, 438, 439, -1, 441, -1, 443, + 444, 445, 446, -1, -1, 449, -1, -1, 452, 453, + 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, + 464, 465, 466, 467, 468, 469, 470, 471, 3, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 22, 23, 24, + 25, 26, 27, 28, 29, -1, 31, 32, 33, -1, + -1, -1, -1, -1, -1, -1, 41, 42, -1, 44, + 45, 46, -1, 48, 49, 50, 51, 52, -1, 54, + 55, -1, 57, 58, 59, 60, 61, 62, -1, -1, + 65, 66, 67, 68, 69, -1, 71, 72, 73, 74, + 75, -1, -1, -1, 79, 80, 81, 82, 83, -1, + 85, 86, 87, -1, 89, 90, 91, 92, 93, 94, + -1, -1, 97, 98, 99, -1, -1, -1, -1, -1, + -1, -1, 107, 108, 109, 110, 111, 112, 113, 114, + 115, -1, 117, -1, 119, 120, 121, 122, 123, 124, + -1, 126, 127, 128, 129, -1, -1, 132, 133, 134, + 135, 136, -1, 138, 139, 140, -1, 142, 143, 144, + -1, 146, 147, 148, 149, 150, 151, 152, 153, 154, + 155, -1, 157, -1, 159, 160, 161, 162, -1, 164, + -1, 166, -1, -1, -1, 170, 171, 172, 173, -1, + 175, 176, -1, 178, 179, 180, -1, 182, 183, 184, + 185, 186, -1, 188, 189, 190, 191, -1, 193, 194, + 195, 196, 197, 198, 199, -1, 201, -1, 203, 204, + 205, 206, 207, 208, 209, -1, 211, -1, 213, -1, + -1, 216, -1, 218, 219, 220, 221, 222, -1, -1, + 225, 226, -1, 228, -1, -1, 231, 232, 233, -1, + -1, 236, 237, 238, 239, 240, 241, 242, 243, 244, + 245, 246, 247, 248, 249, 250, 251, 252, -1, 254, + 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, + -1, 266, 267, -1, 269, -1, 271, 272, 273, 274, + 275, 276, -1, 278, 279, -1, -1, 282, 283, 284, + -1, -1, 287, 288, 289, -1, 291, -1, 293, 294, + 295, 296, 297, 298, 299, 300, 301, 302, -1, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, - -1, 326, 327, -1, 329, 330, 331, 332, 333, 334, - 335, 336, 337, 338, 339, 340, 341, -1, 343, 344, - 345, 346, 347, -1, 349, 350, 351, 352, 353, -1, - 355, 356, 357, 358, -1, 360, 361, 362, 363, 364, - 365, 366, 367, 368, 369, 370, 371, 372, -1, 374, - 375, -1, 377, -1, 379, 380, 381, 382, 383, -1, - 385, 386, -1, -1, 389, 390, 391, 392, 393, -1, - 395, 396, 397, 398, 399, 400, 401, -1, -1, 404, - 405, 406, 407, 408, -1, -1, 411, 412, 413, 414, - 415, 416, 417, -1, 419, -1, 421, 422, 423, 424, - -1, -1, 427, -1, -1, 430, 431, 432, 433, 434, - 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, - 445, 446, 447, 448, 449, 3, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 18, 19, 20, 21, 22, 23, 24, 25, -1, 27, - 28, 29, -1, -1, -1, -1, -1, -1, -1, 37, - 38, -1, 40, 41, 42, -1, 44, 45, 46, 47, - 48, -1, 50, 51, -1, 53, 54, 55, 56, 57, - -1, -1, 60, 61, 62, 63, 64, -1, 66, 67, - 68, 69, 70, -1, -1, -1, 74, 75, 76, 77, - 78, -1, 80, 81, 82, -1, 84, 85, 86, 87, - 88, 89, -1, -1, 92, 93, 94, -1, -1, -1, - -1, -1, -1, -1, 102, 103, 104, 105, 106, 107, - 108, 109, 110, -1, 112, -1, 114, 115, 116, 117, - 118, 119, -1, 121, 122, 123, 124, -1, -1, 127, - 128, 129, 130, 131, -1, 133, 134, 135, -1, 137, - 138, 139, -1, 141, 142, 143, 144, 145, 146, 147, - 148, 149, -1, 151, -1, 153, 154, 155, 156, -1, - 158, -1, 160, -1, -1, -1, 164, 165, 166, 167, - -1, 169, 170, -1, 172, 173, -1, 175, 176, 177, - 178, 179, -1, 181, 182, 183, 184, -1, 186, 187, - 188, 189, 190, 191, -1, 193, -1, 195, 196, 197, - 198, 199, 200, 201, -1, 203, -1, 205, -1, -1, - 208, -1, 210, 211, 212, 213, 214, -1, -1, 217, - 218, -1, 220, -1, -1, 223, 224, 225, -1, -1, - 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, - 238, 239, 240, 241, 242, 243, 244, -1, 246, 247, - 248, 249, 250, -1, 252, 253, -1, 255, -1, 257, - 258, 259, 260, 261, 262, -1, 264, 265, -1, -1, - 268, 269, 270, -1, -1, 273, 274, -1, 276, -1, - 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, - -1, 289, 290, 291, 292, 293, 294, 295, 296, -1, - 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, + 325, 326, 327, -1, 329, 330, 331, 332, 333, 334, + 335, 336, 337, 338, 339, 340, -1, 342, 343, -1, + 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, + 355, 356, 357, 358, 359, -1, 361, 362, 363, 364, + 365, -1, 367, 368, 369, 370, 371, -1, 373, 374, + 375, 376, -1, 378, 379, 380, 381, 382, 383, 384, + 385, 386, 387, 388, 389, 390, 391, 392, -1, 394, + 395, 396, 397, -1, 399, 400, 401, 402, 403, -1, + 405, 406, 407, -1, -1, 410, 411, 412, 413, 414, + -1, 416, 417, 418, 419, 420, 421, 422, 423, -1, + -1, 426, 427, 428, 429, 430, -1, -1, 433, 434, + 435, 436, 437, 438, 439, -1, 441, -1, 443, 444, + 445, 446, -1, -1, 449, -1, -1, 452, 453, 454, + 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, + 465, 466, 467, 468, 469, 470, 471, 3, -1, -1, + -1, -1, -1, -1, -1, 11, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 22, 23, 24, 25, + 26, 27, 28, 29, -1, 31, 32, 33, -1, -1, + -1, -1, -1, -1, -1, 41, 42, -1, 44, 45, + 46, -1, 48, 49, 50, 51, 52, -1, 54, 55, + -1, 57, 58, 59, 60, 61, 62, -1, -1, 65, + 66, 67, 68, 69, -1, 71, 72, 73, 74, 75, + -1, -1, -1, 79, 80, 81, 82, 83, -1, 85, + 86, 87, -1, 89, 90, 91, 92, 93, 94, -1, + -1, 97, 98, 99, -1, -1, -1, -1, -1, -1, + -1, 107, 108, 109, 110, 111, 112, 113, 114, 115, + -1, 117, -1, 119, 120, 121, 122, 123, 124, -1, + 126, 127, 128, 129, -1, -1, 132, 133, 134, 135, + 136, -1, 138, 139, 140, -1, 142, 143, 144, -1, + 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, + -1, 157, -1, 159, 160, 161, 162, -1, 164, -1, + 166, -1, -1, -1, 170, 171, 172, 173, -1, 175, + 176, -1, 178, 179, 180, -1, 182, 183, 184, 185, + 186, -1, 188, 189, 190, 191, -1, 193, 194, 195, + 196, 197, 198, 199, -1, 201, -1, 203, 204, 205, + 206, 207, 208, 209, -1, 211, -1, 213, -1, -1, + 216, -1, 218, 219, 220, 221, 222, -1, -1, 225, + 226, -1, 228, -1, -1, 231, 232, 233, -1, -1, + 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, + 246, 247, 248, 249, 250, 251, 252, -1, 254, 255, + 256, 257, 258, 259, 260, 261, 262, 263, 264, -1, + 266, 267, -1, 269, -1, 271, 272, 273, 274, 275, + 276, -1, 278, 279, -1, -1, 282, 283, 284, -1, + -1, 287, 288, 289, -1, 291, -1, 293, 294, 295, + 296, 297, 298, 299, 300, 301, 302, -1, 304, 305, + 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, + 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, + 326, 327, -1, 329, 330, 331, 332, 333, 334, 335, + 336, 337, 338, 339, 340, -1, 342, 343, -1, 345, + 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, + 356, 357, 358, 359, -1, 361, 362, 363, 364, 365, + -1, 367, 368, 369, 370, 371, -1, 373, 374, 375, + 376, -1, 378, 379, 380, 381, 382, 383, 384, 385, + 386, 387, 388, 389, 390, 391, 392, -1, 394, 395, + -1, 397, -1, 399, 400, 401, 402, 403, -1, 405, + 406, 407, -1, -1, 410, 411, 412, 413, 414, -1, + 416, 417, 418, 419, 420, 421, 422, 423, -1, -1, + 426, 427, 428, 429, 430, -1, -1, 433, 434, 435, + 436, 437, 438, 439, -1, 441, -1, 443, 444, 445, + 446, -1, -1, 449, -1, -1, 452, 453, 454, 455, + 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, + 466, 467, 468, 469, 470, 471, 3, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, + 27, 28, 29, -1, 31, 32, 33, -1, -1, -1, + -1, -1, 39, -1, 41, 42, -1, 44, 45, 46, + -1, 48, 49, 50, 51, 52, -1, 54, 55, -1, + 57, 58, 59, 60, 61, 62, -1, -1, 65, 66, + 67, 68, 69, -1, 71, 72, 73, 74, 75, -1, + -1, -1, 79, 80, 81, 82, 83, -1, 85, 86, + 87, -1, 89, 90, 91, 92, 93, 94, -1, -1, + 97, 98, 99, -1, -1, -1, -1, -1, -1, -1, + 107, 108, 109, 110, 111, 112, 113, 114, 115, -1, + 117, -1, 119, 120, 121, 122, 123, 124, -1, 126, + 127, 128, 129, -1, -1, 132, 133, 134, 135, 136, + -1, 138, 139, 140, -1, 142, 143, 144, -1, 146, + 147, 148, 149, 150, 151, 152, 153, 154, 155, -1, + 157, -1, 159, 160, 161, 162, -1, 164, -1, 166, + -1, -1, -1, 170, 171, 172, 173, -1, 175, 176, + -1, 178, 179, 180, -1, 182, 183, 184, 185, 186, + -1, 188, 189, 190, 191, -1, 193, 194, 195, 196, + 197, 198, 199, -1, 201, -1, 203, 204, 205, 206, + 207, 208, 209, -1, 211, -1, 213, -1, -1, 216, + -1, 218, 219, 220, 221, 222, -1, -1, 225, 226, + -1, 228, -1, -1, 231, 232, 233, -1, -1, 236, + 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, + 247, 248, 249, 250, 251, 252, -1, 254, 255, 256, + 257, 258, 259, 260, 261, 262, 263, 264, -1, 266, + 267, -1, 269, -1, 271, 272, 273, 274, 275, 276, + -1, 278, 279, -1, -1, 282, 283, 284, -1, -1, + 287, 288, 289, -1, 291, -1, 293, 294, 295, 296, + 297, 298, 299, 300, 301, 302, -1, 304, 305, 306, + 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, + 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, + 327, -1, 329, 330, 331, 332, 333, 334, 335, 336, + 337, 338, 339, 340, -1, 342, 343, -1, 345, 346, + 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, + 357, 358, 359, -1, 361, 362, 363, 364, 365, -1, + 367, 368, 369, 370, 371, -1, 373, 374, 375, 376, + -1, 378, 379, 380, 381, 382, 383, 384, 385, 386, + 387, 388, 389, 390, 391, 392, -1, 394, 395, -1, + 397, -1, 399, 400, 401, 402, 403, -1, 405, 406, + 407, -1, -1, 410, 411, 412, 413, 414, -1, 416, + 417, 418, 419, 420, 421, 422, 423, -1, -1, 426, + 427, 428, 429, 430, -1, -1, 433, 434, 435, 436, + 437, 438, 439, -1, 441, -1, 443, 444, 445, 446, + -1, -1, 449, -1, -1, 452, 453, 454, 455, 456, + 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, + 467, 468, 469, 470, 471, 3, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, + 28, 29, -1, 31, 32, 33, -1, -1, -1, -1, + -1, 39, -1, 41, 42, -1, 44, 45, 46, -1, + 48, 49, 50, 51, 52, -1, 54, 55, -1, 57, + 58, 59, 60, 61, 62, -1, -1, 65, 66, 67, + 68, 69, -1, 71, 72, 73, 74, 75, -1, -1, + -1, 79, 80, 81, 82, 83, -1, 85, 86, 87, + -1, 89, 90, 91, 92, 93, 94, -1, -1, 97, + 98, 99, -1, -1, -1, -1, -1, -1, -1, 107, + 108, 109, 110, 111, 112, 113, 114, 115, -1, 117, + -1, 119, 120, 121, 122, 123, 124, -1, 126, 127, + 128, 129, -1, -1, 132, 133, 134, 135, 136, -1, + 138, 139, 140, -1, 142, 143, 144, -1, 146, 147, + 148, 149, 150, 151, 152, 153, 154, 155, -1, 157, + -1, 159, 160, 161, 162, -1, 164, -1, 166, -1, + -1, -1, 170, 171, 172, 173, -1, 175, 176, -1, + 178, 179, 180, -1, 182, 183, 184, 185, 186, -1, + 188, 189, 190, 191, -1, 193, 194, 195, 196, 197, + 198, 199, -1, 201, -1, 203, 204, 205, 206, 207, + 208, 209, -1, 211, -1, 213, -1, -1, 216, -1, + 218, 219, 220, 221, 222, -1, -1, 225, 226, -1, + 228, -1, -1, 231, 232, 233, -1, -1, 236, 237, + 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, + 248, 249, 250, 251, 252, -1, 254, 255, 256, 257, + 258, 259, 260, 261, 262, 263, 264, -1, 266, 267, + -1, 269, -1, 271, 272, 273, 274, 275, 276, -1, + 278, 279, -1, -1, 282, 283, 284, -1, -1, 287, + 288, 289, -1, 291, -1, 293, 294, 295, 296, 297, + 298, 299, 300, 301, 302, -1, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, - 318, 319, 320, 321, 322, 323, 324, -1, 326, 327, + 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, -1, 329, 330, 331, 332, 333, 334, 335, 336, 337, - 338, 339, 340, 341, -1, 343, 344, 345, 346, 347, - -1, 349, 350, 351, 352, 353, -1, 355, 356, 357, - 358, -1, 360, 361, 362, 363, 364, 365, 366, 367, - 368, 369, 370, 371, 372, -1, 374, 375, -1, 377, - -1, 379, 380, 381, 382, 383, -1, 385, 386, -1, - -1, 389, 390, 391, 392, 393, -1, 395, 396, 397, - 398, 399, 400, 401, -1, -1, 404, 405, 406, 407, - 408, -1, -1, 411, 412, 413, 414, 415, 416, 417, - -1, 419, -1, 421, 422, 423, 424, -1, -1, 427, - -1, -1, 430, 431, 432, 433, 434, 435, 436, 437, - 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, - 448, 449, 3, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 18, 19, 20, - 21, 22, 23, 24, 25, -1, 27, 28, 29, -1, - -1, -1, -1, -1, -1, -1, 37, 38, -1, 40, - 41, 42, -1, 44, 45, 46, 47, 48, -1, 50, - 51, -1, 53, 54, 55, 56, 57, -1, -1, 60, - 61, 62, 63, 64, -1, 66, 67, 68, 69, 70, - -1, -1, -1, 74, 75, 76, 77, 78, -1, 80, - 81, 82, -1, 84, 85, 86, 87, 88, 89, -1, - -1, 92, 93, 94, -1, -1, -1, -1, -1, -1, - -1, 102, 103, 104, 105, 106, 107, 108, 109, 110, - -1, 112, -1, 114, 115, 116, 117, 118, 119, -1, - 121, 122, 123, 124, -1, -1, 127, 128, 129, 130, - 131, -1, 133, 134, 135, -1, 137, 138, 139, -1, - 141, 142, 143, 144, 145, 146, 147, 148, 149, -1, - 151, -1, 153, 154, 155, 156, -1, 158, -1, 160, - -1, -1, -1, 164, 165, 166, 167, -1, 169, 170, - -1, 172, 173, -1, 175, 176, 177, 178, 179, -1, - 181, 182, 183, 184, -1, 186, 187, 188, 189, 190, - 191, -1, 193, -1, 195, 196, 197, 198, 199, 200, - 201, -1, 203, -1, 205, -1, -1, 208, -1, 210, - 211, 212, 213, 214, -1, -1, 217, 218, -1, 220, - -1, -1, 223, 224, 225, -1, -1, 228, 229, 230, - 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, - 241, 242, 243, 244, -1, 246, 247, 248, 249, 250, - -1, 252, 253, -1, 255, -1, 257, 258, 259, 260, - 261, 262, -1, 264, 265, -1, -1, 268, 269, 270, - -1, -1, 273, 274, -1, 276, -1, 278, 279, 280, - 281, 282, 283, 284, 285, 286, 287, -1, 289, 290, - 291, 292, 293, 294, 295, 296, -1, 298, 299, 300, - 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, + 338, 339, 340, -1, 342, 343, -1, 345, 346, 347, + 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, + 358, 359, -1, 361, 362, 363, 364, 365, -1, 367, + 368, 369, 370, 371, -1, 373, 374, 375, 376, -1, + 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, + 388, 389, 390, 391, 392, -1, 394, 395, -1, 397, + -1, 399, 400, 401, 402, 403, -1, 405, 406, 407, + -1, -1, 410, 411, 412, 413, 414, -1, 416, 417, + 418, 419, 420, 421, 422, 423, -1, -1, 426, 427, + 428, 429, 430, -1, -1, 433, 434, 435, 436, 437, + 438, 439, -1, 441, -1, 443, 444, 445, 446, -1, + -1, 449, -1, -1, 452, 453, 454, 455, 456, 457, + 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, + 468, 469, 470, 471, 3, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, + 29, -1, 31, 32, 33, -1, -1, -1, -1, -1, + -1, -1, 41, 42, -1, 44, 45, 46, -1, 48, + 49, 50, 51, 52, -1, 54, 55, -1, 57, 58, + 59, 60, 61, 62, -1, -1, 65, 66, 67, 68, + 69, -1, 71, 72, 73, 74, 75, -1, -1, -1, + 79, 80, 81, 82, 83, -1, 85, 86, 87, -1, + 89, 90, 91, 92, 93, 94, -1, -1, 97, 98, + 99, -1, -1, -1, -1, -1, -1, -1, 107, 108, + 109, 110, 111, 112, 113, 114, 115, -1, 117, -1, + 119, 120, 121, 122, 123, 124, -1, 126, 127, 128, + 129, -1, -1, 132, 133, 134, 135, 136, -1, 138, + 139, 140, -1, 142, 143, 144, -1, 146, 147, 148, + 149, 150, 151, 152, 153, 154, 155, -1, 157, -1, + 159, 160, 161, 162, -1, 164, -1, 166, -1, -1, + -1, 170, 171, 172, 173, -1, 175, 176, -1, 178, + 179, 180, -1, 182, 183, 184, 185, 186, -1, 188, + 189, 190, 191, -1, 193, 194, 195, 196, 197, 198, + 199, -1, 201, -1, 203, 204, 205, 206, 207, 208, + 209, -1, 211, -1, 213, -1, -1, 216, -1, 218, + 219, 220, 221, 222, -1, -1, 225, 226, -1, 228, + -1, -1, 231, 232, 233, -1, -1, 236, 237, 238, + 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, + 249, 250, 251, 252, -1, 254, 255, 256, 257, 258, + 259, 260, 261, 262, 263, 264, -1, 266, 267, -1, + 269, -1, 271, 272, 273, 274, 275, 276, -1, 278, + 279, -1, -1, 282, 283, 284, -1, -1, 287, 288, + 289, -1, 291, -1, 293, 294, 295, 296, 297, 298, + 299, 300, 301, 302, -1, 304, 305, 306, 307, 308, + 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, + 319, 320, 321, 322, 323, 324, 325, 326, 327, -1, + 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, + 339, 340, -1, 342, 343, -1, 345, 346, 347, 348, + 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, + 359, -1, 361, 362, 363, 364, 365, -1, 367, 368, + 369, 370, 371, -1, 373, 374, 375, 376, -1, 378, + 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, + 389, 390, 391, 392, -1, 394, 395, -1, 397, -1, + 399, 400, 401, 402, 403, -1, 405, 406, 407, -1, + -1, 410, 411, 412, 413, 414, -1, 416, 417, 418, + 419, 420, 421, 422, 423, -1, -1, 426, 427, 428, + 429, 430, -1, -1, 433, 434, 435, 436, 437, 438, + 439, -1, 441, -1, 443, 444, 445, 446, -1, -1, + 449, -1, -1, 452, 453, 454, 455, 456, 457, 458, + 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, + 469, 470, 471, 3, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, + -1, 31, 32, 33, -1, -1, -1, -1, -1, -1, + -1, 41, 42, -1, 44, 45, 46, -1, 48, 49, + 50, 51, 52, -1, 54, 55, -1, 57, 58, 59, + 60, 61, 62, -1, -1, 65, 66, 67, 68, 69, + -1, 71, 72, 73, 74, 75, -1, -1, -1, 79, + 80, 81, 82, 83, -1, 85, 86, 87, -1, 89, + 90, 91, 92, 93, 94, -1, -1, 97, 98, 99, + -1, -1, -1, -1, -1, -1, -1, 107, 108, 109, + 110, 111, 112, 113, 114, 115, -1, 117, -1, 119, + 120, 121, 122, 123, 124, -1, 126, 127, 128, 129, + -1, -1, 132, 133, 134, 135, 136, -1, 138, 139, + 140, -1, 142, 143, 144, -1, 146, 147, 148, 149, + 150, 151, 152, 153, 154, 155, -1, 157, -1, 159, + 160, 161, 162, -1, 164, -1, 166, -1, -1, -1, + 170, 171, 172, 173, -1, 175, 176, -1, 178, 179, + 180, -1, 182, 183, 184, 185, 186, -1, 188, 189, + 190, 191, -1, 193, 194, 195, 196, 197, 198, 199, + -1, 201, -1, 203, 204, 205, 206, 207, 208, 209, + -1, 211, -1, 213, -1, -1, 216, -1, 218, 219, + 220, 221, 222, -1, -1, 225, 226, -1, 228, -1, + -1, 231, 232, 233, -1, -1, 236, 237, 238, 239, + 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, + 250, 251, 252, -1, 254, 255, 256, 257, 258, 259, + 260, 261, 262, 263, 264, -1, 266, 267, -1, 269, + -1, 271, 272, 273, 274, 275, 276, -1, 278, 279, + -1, -1, 282, 283, 284, -1, -1, 287, 288, 289, + -1, 291, -1, 293, 294, 295, 296, 297, 298, 299, + 300, 301, 302, -1, 304, 305, 306, 307, 308, 309, + 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, + 320, 321, 322, 323, 324, 325, 326, 327, -1, 329, + 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, + 340, -1, 342, 343, -1, 345, 346, 347, 348, 349, + 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, + -1, 361, 362, 363, 364, 365, -1, 367, 368, 369, + 370, 371, -1, 373, 374, 375, 376, -1, 378, 379, + 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, + 390, 391, 392, -1, 394, 395, -1, 397, -1, 399, + 400, 401, 402, 403, -1, 405, 406, 407, -1, -1, + 410, 411, 412, 413, 414, -1, 416, 417, 418, 419, + 420, 421, 422, 423, -1, -1, 426, 427, 428, 429, + 430, -1, -1, 433, 434, 435, 436, 437, 438, 439, + -1, 441, -1, 443, 444, 445, 446, -1, -1, 449, + -1, -1, 452, 453, 454, 455, 456, 457, 458, 459, + 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, + 470, 471, 3, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 22, 23, 24, 25, 26, 27, 28, 29, -1, + 31, 32, 33, -1, -1, -1, -1, -1, -1, -1, + 41, 42, -1, 44, 45, 46, -1, 48, 49, 50, + 51, 52, -1, 54, 55, -1, 57, 58, 59, 60, + 61, 62, -1, -1, 65, 66, 67, 68, 69, -1, + 71, 72, 73, 74, 75, -1, -1, -1, 79, 80, + 81, 82, 83, -1, 85, 86, 87, -1, 89, 90, + 91, 92, 93, 94, -1, -1, 97, 98, 99, -1, + -1, -1, -1, -1, -1, -1, 107, 108, 109, 110, + 111, 112, 113, 114, 115, -1, 117, -1, 119, 120, + 121, 122, 123, 124, -1, 126, 127, 128, 129, -1, + -1, 132, 133, 134, 135, 136, -1, 138, 139, 140, + -1, 142, 143, 144, -1, 146, 147, 148, 149, 150, + 151, 152, 153, 154, 155, -1, 157, -1, 159, 160, + 161, 162, -1, 164, -1, 166, -1, -1, -1, 170, + 171, 172, 173, -1, 175, 176, -1, 178, 179, 180, + -1, 182, 183, 184, 185, 186, -1, 188, 189, 190, + 191, -1, 193, 194, 195, 196, 197, 198, 199, -1, + 201, -1, 203, 204, 205, 206, 207, 208, 209, -1, + 211, -1, 213, -1, -1, 216, -1, 218, 219, 220, + 221, 222, -1, -1, 225, 226, -1, 228, -1, -1, + 231, 232, 233, -1, -1, 236, 237, 238, 239, 240, + 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, + 251, 252, -1, 254, 255, 256, 257, 258, 259, 260, + 261, 262, 263, 264, -1, 266, 267, -1, 269, -1, + 271, 272, 273, 274, 275, 276, -1, 278, 279, -1, + -1, 282, 283, 284, -1, -1, 287, 288, 289, -1, + 291, -1, 293, 294, 295, 296, 297, 298, 299, 300, + 301, 302, -1, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, - 321, 322, 323, 324, -1, 326, 327, -1, 329, 330, + 321, 322, 323, 324, 325, 326, 327, -1, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, - 341, -1, 343, 344, 345, 346, 347, -1, 349, 350, - 351, 352, 353, -1, 355, 356, 357, 358, -1, 360, - 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, - 371, 372, -1, 374, 375, -1, 377, -1, 379, 380, - 381, 382, 383, -1, 385, 386, -1, -1, 389, 390, - 391, 392, 393, -1, 395, 396, 397, 398, 399, 400, - 401, -1, -1, 404, 405, 406, 407, 408, -1, -1, - 411, 412, 413, 414, 415, 416, 417, -1, 419, -1, - 421, 422, 423, 424, -1, -1, 427, -1, -1, 430, - 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, - 441, 442, 443, 444, 445, 446, 447, 448, 449, 3, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 18, 19, 20, 21, 22, 23, - 24, 25, -1, 27, 28, 29, -1, -1, -1, -1, - -1, -1, -1, 37, 38, -1, 40, 41, 42, -1, - 44, 45, 46, 47, 48, -1, 50, 51, -1, 53, - 54, 55, 56, 57, -1, -1, 60, 61, 62, 63, - 64, -1, 66, 67, 68, 69, 70, -1, -1, -1, - 74, 75, 76, 77, 78, -1, 80, 81, 82, -1, - 84, 85, 86, 87, 88, 89, -1, -1, 92, 93, - 94, -1, -1, -1, -1, -1, -1, -1, 102, 103, - 104, 105, 106, 107, 108, 109, 110, -1, 112, -1, - 114, 115, 116, 117, 118, 119, -1, 121, 122, 123, - 124, -1, -1, 127, 128, 129, 130, 131, -1, 133, - 134, 135, -1, 137, 138, 139, -1, 141, 142, 143, - 144, 145, 146, 147, 148, 149, -1, 151, -1, 153, - 154, 155, 156, -1, 158, -1, 160, -1, -1, -1, - 164, 165, 166, 167, -1, 169, 170, -1, 172, 173, - -1, 175, 176, 177, 178, 179, -1, 181, 182, 183, - 184, -1, 186, 187, 188, 189, 190, 191, -1, 193, - -1, 195, 196, 197, 198, 199, 200, 201, -1, 203, - -1, 205, -1, -1, 208, -1, 210, 211, 212, 213, - 214, -1, -1, 217, 218, -1, 220, -1, -1, 223, - 224, 225, -1, -1, 228, 229, 230, 231, 232, 233, - 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, - 244, -1, 246, 247, 248, 249, 250, -1, 252, 253, - -1, 255, -1, 257, 258, 259, 260, 261, 262, -1, - 264, 265, -1, -1, 268, 269, 270, -1, -1, 273, - 274, -1, 276, -1, 278, 279, 280, 281, 282, 283, - 284, 285, 286, 287, -1, 289, 290, 291, 292, 293, - 294, 295, 296, -1, 298, 299, 300, 301, 302, 303, + -1, 342, 343, -1, 345, 346, 347, 348, 349, 350, + 351, 352, 353, 354, 355, 356, 357, 358, 359, -1, + 361, 362, 363, 364, 365, -1, 367, 368, 369, 370, + 371, -1, 373, 374, 375, 376, -1, 378, 379, 380, + 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, + 391, 392, -1, 394, 395, -1, 397, -1, 399, 400, + 401, 402, 403, -1, 405, 406, 407, -1, -1, 410, + 411, 412, 413, 414, -1, 416, 417, 418, 419, 420, + 421, 422, 423, -1, -1, 426, 427, 428, 429, 430, + -1, -1, 433, 434, 435, 436, 437, 438, 439, -1, + 441, -1, 443, 444, 445, 446, -1, -1, 449, -1, + -1, 452, 453, 454, 455, 456, 457, 458, 459, 460, + 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, + 471, 3, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 22, 23, 24, 25, 26, 27, 28, 29, -1, 31, + 32, 33, -1, -1, -1, -1, -1, -1, -1, 41, + 42, -1, 44, 45, 46, -1, 48, 49, 50, 51, + 52, -1, 54, 55, -1, 57, 58, 59, 60, 61, + 62, -1, -1, 65, 66, 67, 68, 69, -1, 71, + 72, 73, 74, 75, -1, -1, -1, 79, 80, 81, + 82, 83, -1, 85, 86, 87, -1, 89, 90, 91, + 92, 93, 94, -1, -1, 97, 98, 99, -1, -1, + -1, -1, -1, -1, -1, 107, 108, 109, 110, 111, + 112, 113, 114, 115, -1, 117, -1, 119, 120, 121, + 122, 123, 124, -1, 126, 127, 128, 129, -1, -1, + 132, 133, 134, 135, 136, -1, 138, 139, 140, -1, + 142, 143, 144, -1, 146, 147, 148, 149, 150, 151, + 152, 153, 154, 155, -1, 157, -1, 159, 160, 161, + 162, -1, 164, -1, 166, -1, -1, -1, 170, 171, + 172, 173, -1, 175, 176, -1, 178, 179, 180, -1, + 182, 183, 184, 185, 186, -1, 188, 189, 190, 191, + -1, 193, 194, 195, 196, 197, 198, 199, -1, 201, + -1, 203, 204, 205, 206, 207, 208, 209, -1, 211, + -1, 213, -1, -1, 216, -1, 218, 219, 220, 221, + 222, -1, -1, 225, 226, -1, 228, -1, -1, 231, + 232, 233, -1, -1, 236, 237, 238, 239, 240, 241, + 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, + 252, -1, 254, 255, 256, 257, 258, 259, 260, 261, + 262, 263, 264, -1, 266, 267, -1, 269, -1, 271, + 272, 273, 274, 275, 276, -1, 278, 279, -1, -1, + 282, 283, 284, -1, -1, 287, 288, 289, -1, 291, + -1, 293, 294, 295, 296, 297, 298, 299, 300, 301, + 302, -1, 304, 305, 306, 307, 308, 309, 310, 311, + -1, 313, 314, 315, 316, 317, 318, 319, 320, 321, + 322, 323, 324, 325, 326, 327, -1, 329, 330, 331, + 332, 333, 334, 335, 336, 337, 338, 339, 340, -1, + 342, 343, -1, 345, 346, 347, 348, 349, 350, 351, + 352, 353, 354, 355, 356, 357, 358, 359, -1, 361, + 362, 363, 364, 365, -1, 367, 368, 369, 370, 371, + -1, 373, 374, 375, 376, -1, 378, 379, 380, 381, + 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, + 392, -1, 394, 395, -1, 397, -1, 399, 400, 401, + 402, 403, -1, 405, 406, 407, -1, -1, 410, 411, + 412, 413, 414, -1, 416, 417, 418, 419, 420, 421, + 422, 423, -1, -1, 426, 427, 428, 429, 430, -1, + -1, 433, 434, 435, 436, 437, 438, 439, -1, 441, + -1, 443, 444, 445, 446, -1, -1, 449, -1, -1, + 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, + 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, + 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, + 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, + 33, -1, -1, -1, -1, -1, -1, -1, 41, 42, + -1, 44, 45, 46, -1, 48, 49, 50, 51, 52, + -1, 54, 55, -1, 57, 58, 59, 60, 61, 62, + -1, -1, 65, 66, 67, 68, 69, -1, 71, 72, + 73, 74, 75, -1, -1, -1, 79, 80, 81, 82, + 83, -1, 85, 86, 87, -1, 89, 90, 91, 92, + 93, 94, -1, -1, 97, 98, 99, -1, -1, -1, + -1, -1, -1, -1, 107, 108, 109, 110, 111, 112, + 113, 114, 115, -1, 117, -1, 119, 120, 121, 122, + 123, 124, -1, 126, 127, 128, 129, -1, -1, 132, + 133, 134, 135, 136, -1, 138, 139, 140, -1, 142, + 143, 144, -1, 146, 147, 148, 149, 150, 151, 152, + 153, 154, 155, -1, 157, -1, 159, 160, 161, 162, + -1, 164, -1, 166, -1, -1, -1, 170, 171, 172, + 173, -1, 175, 176, -1, 178, 179, 180, -1, 182, + 183, 184, 185, 186, -1, 188, 189, 190, 191, -1, + 193, 194, 195, 196, 197, 198, 199, -1, 201, -1, + 203, 204, 205, 206, 207, 208, 209, -1, 211, -1, + 213, -1, -1, 216, -1, 218, 219, 220, 221, 222, + -1, -1, 225, 226, -1, 228, -1, -1, 231, 232, + 233, -1, -1, 236, 237, 238, 239, 240, 241, 242, + 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, + -1, 254, 255, 256, 257, 258, 259, 260, 261, 262, + 263, 264, -1, 266, 267, -1, 269, -1, 271, 272, + 273, 274, 275, 276, -1, 278, 279, -1, -1, 282, + 283, 284, -1, -1, 287, 288, 289, -1, 291, -1, + 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, + -1, 304, 305, 306, 307, 308, 309, 310, 311, -1, + 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, + 323, 324, 325, 326, 327, -1, 329, 330, 331, 332, + 333, 334, 335, 336, 337, 338, 339, 340, -1, 342, + 343, -1, 345, 346, 347, 348, 349, 350, 351, 352, + 353, 354, 355, 356, 357, 358, 359, -1, 361, 362, + 363, 364, 365, -1, 367, 368, 369, 370, 371, -1, + 373, 374, 375, 376, -1, 378, 379, 380, 381, 382, + 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, + -1, 394, 395, -1, 397, -1, 399, 400, 401, 402, + 403, -1, 405, 406, 407, -1, -1, 410, 411, 412, + 413, 414, -1, 416, 417, 418, 419, 420, 421, 422, + 423, -1, -1, 426, 427, 428, 429, 430, -1, -1, + 433, 434, 435, 436, 437, 438, 439, -1, 441, -1, + 443, 444, 445, 446, -1, -1, 449, -1, -1, 452, + 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, + 463, 464, 465, 466, 467, 468, 469, 470, 471, 3, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, + 24, 25, 26, 27, 28, 29, -1, 31, 32, 33, + -1, -1, -1, -1, -1, -1, -1, 41, 42, -1, + 44, 45, 46, -1, 48, 49, 50, 51, 52, -1, + 54, 55, -1, 57, 58, 59, 60, 61, 62, -1, + -1, 65, 66, 67, 68, 69, -1, 71, 72, 73, + 74, 75, -1, -1, -1, 79, 80, 81, 82, 83, + -1, 85, 86, 87, -1, 89, 90, 91, 92, 93, + 94, -1, -1, 97, 98, 99, -1, -1, -1, -1, + -1, -1, -1, 107, 108, 109, 110, 111, 112, 113, + 114, 115, -1, 117, -1, 119, 120, 121, 122, 123, + 124, -1, 126, 127, 128, 129, -1, -1, 132, 133, + 134, 135, 136, -1, 138, 139, 140, -1, 142, 143, + 144, -1, 146, 147, 148, 149, 150, 151, 152, 153, + 154, 155, -1, 157, -1, 159, 160, 161, 162, -1, + 164, -1, 166, -1, -1, -1, 170, 171, 172, 173, + -1, 175, 176, -1, 178, 179, 180, -1, 182, 183, + 184, 185, 186, -1, 188, 189, 190, 191, -1, 193, + 194, 195, 196, 197, 198, 199, -1, 201, -1, 203, + 204, 205, 206, 207, 208, 209, -1, 211, -1, 213, + -1, -1, 216, -1, 218, 219, 220, 221, 222, -1, + -1, 225, 226, -1, 228, -1, -1, 231, 232, 233, + -1, -1, 236, 237, 238, 239, 240, 241, 242, 243, + 244, 245, 246, 247, 248, 249, 250, 251, 252, -1, + 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, + 264, -1, 266, 267, -1, 269, -1, 271, 272, 273, + 274, 275, 276, -1, 278, 279, -1, -1, 282, 283, + 284, -1, -1, 287, 288, 289, -1, 291, -1, 293, + 294, 295, 296, 297, 298, 299, 300, 301, 302, -1, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, - 324, -1, 326, 327, -1, 329, 330, 331, 332, 333, - 334, 335, 336, 337, 338, 339, 340, 341, -1, 343, - 344, 345, 346, 347, -1, 349, 350, 351, 352, 353, - -1, 355, 356, 357, 358, -1, 360, 361, 362, 363, - 364, 365, 366, 367, 368, 369, 370, 371, 372, -1, - 374, 375, -1, 377, -1, 379, 380, 381, 382, 383, - -1, 385, 386, -1, -1, 389, 390, 391, 392, 393, - -1, 395, 396, 397, 398, 399, 400, 401, -1, -1, - 404, 405, 406, 407, 408, -1, -1, 411, 412, 413, - 414, 415, 416, 417, -1, 419, -1, 421, 422, 423, - 424, -1, -1, 427, -1, -1, 430, 431, 432, 433, - 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, - 444, 445, 446, 447, 448, 449, 3, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 18, 19, 20, 21, 22, 23, 24, 25, -1, - 27, 28, 29, -1, -1, -1, -1, -1, 35, -1, - 37, 38, -1, 40, 41, 42, -1, 44, 45, 46, - 47, 48, -1, 50, 51, -1, 53, 54, 55, 56, - 57, -1, -1, 60, 61, 62, 63, 64, -1, 66, - 67, 68, 69, 70, -1, -1, -1, 74, 75, 76, - 77, 78, -1, 80, 81, 82, -1, 84, 85, 86, - 87, 88, 89, -1, -1, 92, 93, 94, -1, -1, - -1, -1, -1, -1, -1, 102, 103, 104, 105, 106, - 107, 108, 109, 110, -1, 112, -1, 114, 115, 116, - 117, 118, 119, -1, 121, 122, 123, 124, -1, -1, - 127, 128, 129, 130, 131, -1, 133, 134, 135, -1, - 137, 138, 139, -1, 141, 142, 143, 144, 145, 146, - 147, 148, 149, -1, 151, -1, 153, 154, 155, 156, - -1, 158, -1, 160, -1, -1, -1, 164, 165, 166, - 167, -1, 169, 170, -1, 172, 173, -1, 175, 176, - 177, 178, 179, -1, 181, 182, 183, 184, -1, 186, - 187, 188, 189, 190, 191, -1, 193, -1, 195, 196, - 197, 198, 199, 200, 201, -1, 203, -1, 205, -1, - -1, 208, -1, 210, 211, 212, 213, 214, -1, -1, - 217, 218, -1, 220, -1, -1, 223, 224, 225, -1, - -1, 228, 229, 230, 231, 232, 233, 234, 235, 236, - 237, 238, 239, 240, 241, 242, 243, 244, -1, 246, - 247, 248, 249, 250, -1, 252, 253, -1, 255, -1, - 257, 258, 259, 260, 261, 262, -1, 264, 265, -1, - -1, 268, 269, 270, -1, -1, 273, 274, -1, 276, - -1, 278, 279, 280, 281, 282, 283, 284, 285, 286, - 287, -1, 289, 290, 291, 292, 293, 294, 295, 296, - -1, 298, 299, 300, 301, 302, 303, 304, 305, 306, + 324, 325, 326, 327, -1, 329, 330, 331, 332, 333, + 334, 335, 336, 337, 338, 339, 340, -1, 342, 343, + -1, 345, 346, 347, 348, 349, 350, 351, 352, 353, + 354, 355, 356, 357, 358, 359, -1, 361, 362, 363, + 364, 365, -1, 367, 368, 369, 370, 371, -1, 373, + 374, 375, 376, -1, 378, 379, 380, 381, 382, 383, + 384, 385, 386, 387, 388, 389, 390, 391, 392, -1, + 394, 395, -1, 397, -1, 399, 400, 401, 402, 403, + -1, 405, 406, 407, -1, -1, 410, 411, 412, 413, + 414, -1, 416, 417, 418, 419, 420, 421, 422, 423, + -1, -1, 426, 427, 428, 429, 430, -1, -1, 433, + 434, 435, 436, 437, 438, 439, -1, 441, -1, 443, + 444, 445, 446, -1, -1, 449, -1, -1, 452, 453, + 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, + 464, 465, 466, 467, 468, 469, 470, 471, 3, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 22, 23, 24, + 25, 26, 27, 28, 29, -1, 31, 32, 33, -1, + -1, -1, -1, -1, -1, -1, 41, 42, -1, 44, + 45, 46, -1, 48, 49, 50, 51, 52, -1, 54, + 55, -1, 57, 58, 59, 60, 61, 62, -1, -1, + 65, 66, 67, 68, 69, -1, 71, 72, 73, 74, + 75, -1, -1, -1, 79, 80, 81, 82, 83, -1, + 85, 86, 87, -1, 89, 90, 91, 92, 93, 94, + -1, -1, 97, 98, 99, -1, -1, -1, -1, -1, + -1, -1, 107, 108, 109, 110, 111, 112, 113, 114, + 115, -1, 117, -1, 119, 120, 121, 122, 123, 124, + -1, 126, 127, 128, 129, -1, -1, 132, 133, 134, + 135, 136, -1, 138, 139, 140, -1, 142, 143, 144, + -1, 146, 147, 148, 149, 150, 151, 152, 153, 154, + 155, -1, 157, -1, 159, 160, 161, 162, -1, 164, + -1, 166, -1, -1, -1, 170, 171, 172, 173, -1, + 175, 176, -1, 178, 179, 180, -1, 182, 183, 184, + 185, 186, -1, 188, 189, 190, 191, -1, 193, 194, + 195, 196, 197, 198, 199, -1, 201, -1, 203, 204, + 205, 206, 207, 208, 209, -1, 211, -1, 213, -1, + -1, 216, -1, 218, 219, 220, 221, 222, -1, -1, + 225, 226, -1, 228, -1, -1, 231, 232, 233, -1, + -1, 236, 237, 238, 239, 240, 241, 242, 243, 244, + 245, 246, 247, 248, 249, 250, 251, 252, -1, 254, + 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, + -1, 266, 267, -1, 269, -1, 271, 272, 273, 274, + 275, 276, -1, 278, 279, -1, -1, 282, 283, 284, + -1, -1, 287, 288, 289, -1, 291, -1, 293, 294, + 295, 296, 297, 298, 299, 300, 301, 302, -1, 304, + 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, + 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, + 325, 326, 327, -1, 329, 330, 331, 332, 333, 334, + 335, 336, 337, 338, 339, 340, -1, 342, 343, -1, + 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, + 355, 356, 357, 358, 359, -1, 361, 362, 363, 364, + 365, -1, 367, 368, 369, 370, 371, -1, 373, 374, + 375, 376, -1, 378, 379, 380, 381, 382, 383, 384, + 385, 386, 387, 388, 389, 390, 391, 392, -1, 394, + 395, -1, 397, -1, 399, 400, 401, 402, 403, -1, + 405, 406, 407, -1, -1, 410, 411, 412, 413, 414, + -1, 416, 417, 418, 419, 420, 421, 422, 423, -1, + -1, 426, 427, 428, 429, 430, -1, -1, 433, 434, + 435, 436, 437, 438, 439, -1, 441, -1, 443, 444, + 445, 446, -1, -1, 449, -1, -1, 452, 453, 454, + 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, + 465, 466, 467, 468, 469, 470, 471, 3, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 22, 23, 24, 25, + 26, 27, 28, 29, -1, 31, 32, 33, -1, -1, + -1, -1, -1, -1, -1, 41, 42, -1, 44, 45, + 46, -1, 48, 49, 50, 51, 52, -1, 54, 55, + -1, 57, 58, 59, 60, 61, 62, -1, -1, 65, + 66, 67, 68, 69, -1, 71, 72, 73, 74, 75, + -1, -1, -1, 79, 80, 81, 82, 83, -1, 85, + 86, 87, -1, 89, 90, 91, 92, 93, 94, -1, + -1, 97, 98, 99, -1, -1, -1, -1, -1, -1, + -1, 107, 108, 109, 110, 111, 112, 113, 114, 115, + -1, 117, -1, 119, 120, 121, 122, 123, 124, -1, + 126, 127, 128, 129, -1, -1, 132, 133, 134, 135, + 136, -1, 138, 139, 140, -1, 142, 143, 144, -1, + 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, + -1, 157, -1, 159, 160, 161, 162, -1, 164, -1, + 166, -1, -1, -1, 170, 171, 172, 173, -1, 175, + 176, -1, 178, 179, 180, -1, 182, 183, 184, 185, + 186, -1, 188, 189, 190, 191, -1, 193, 194, 195, + 196, 197, 198, 199, -1, 201, -1, 203, 204, 205, + 206, 207, 208, 209, -1, 211, -1, 213, -1, -1, + 216, -1, 218, 219, 220, 221, 222, -1, -1, 225, + 226, -1, 228, -1, -1, 231, 232, 233, -1, -1, + 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, + 246, 247, 248, 249, 250, 251, 252, -1, 254, 255, + 256, 257, 258, 259, 260, 261, 262, 263, 264, -1, + 266, 267, -1, 269, -1, 271, 272, 273, 274, 275, + 276, -1, 278, 279, -1, -1, 282, 283, 284, -1, + -1, 287, 288, 289, -1, 291, -1, 293, 294, 295, + 296, 297, 298, 299, 300, 301, 302, -1, 304, 305, + 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, + 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, + 326, 327, -1, 329, 330, 331, 332, 333, 334, 335, + 336, 337, 338, 339, 340, -1, 342, 343, -1, 345, + 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, + 356, 357, 358, 359, -1, 361, 362, 363, 364, 365, + -1, 367, 368, 369, 370, 371, -1, 373, 374, 375, + 376, -1, 378, 379, 380, 381, 382, 383, 384, 385, + 386, 387, 388, 389, 390, 391, 392, -1, 394, 395, + -1, 397, -1, 399, 400, 401, 402, 403, -1, 405, + 406, 407, -1, -1, 410, 411, 412, 413, 414, -1, + 416, 417, 418, 419, 420, 421, 422, 423, -1, -1, + 426, 427, 428, 429, 430, -1, -1, 433, 434, 435, + 436, 437, 438, 439, -1, 441, -1, 443, 444, 445, + 446, -1, -1, 449, -1, -1, 452, 453, 454, 455, + 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, + 466, 467, 468, 469, 470, 471, 3, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, + 27, 28, 29, -1, 31, 32, 33, -1, -1, -1, + -1, -1, -1, -1, 41, 42, -1, 44, 45, 46, + -1, 48, 49, 50, 51, 52, -1, 54, 55, -1, + 57, 58, 59, 60, 61, 62, -1, -1, 65, 66, + 67, 68, 69, -1, 71, 72, 73, 74, 75, -1, + -1, -1, 79, 80, 81, 82, 83, -1, 85, 86, + 87, -1, 89, 90, 91, 92, 93, 94, -1, -1, + 97, 98, 99, -1, -1, -1, -1, -1, -1, -1, + 107, 108, 109, 110, 111, 112, 113, 114, 115, -1, + 117, -1, 119, 120, 121, 122, 123, 124, -1, 126, + 127, 128, 129, -1, -1, 132, 133, 134, 135, 136, + -1, 138, 139, 140, -1, 142, 143, 144, -1, 146, + 147, 148, 149, 150, 151, 152, 153, 154, 155, -1, + 157, -1, 159, 160, 161, 162, -1, 164, -1, 166, + -1, -1, -1, 170, 171, 172, 173, -1, 175, 176, + -1, 178, 179, 180, -1, 182, 183, 184, 185, 186, + -1, 188, 189, 190, 191, -1, 193, 194, 195, 196, + 197, 198, 199, -1, 201, -1, 203, 204, 205, 206, + 207, 208, 209, -1, 211, -1, 213, -1, -1, 216, + -1, 218, 219, 220, 221, 222, -1, -1, 225, 226, + -1, 228, -1, -1, 231, 232, 233, -1, -1, 236, + 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, + 247, 248, 249, 250, 251, 252, -1, 254, 255, 256, + 257, 258, 259, 260, 261, 262, 263, 264, -1, 266, + 267, -1, 269, -1, 271, 272, 273, 274, 275, 276, + -1, 278, 279, -1, -1, 282, 283, 284, -1, -1, + 287, 288, 289, -1, 291, -1, 293, 294, 295, 296, + 297, 298, 299, 300, 301, 302, -1, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, - 317, 318, 319, 320, 321, 322, 323, 324, -1, 326, + 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, -1, 329, 330, 331, 332, 333, 334, 335, 336, - 337, 338, 339, 340, 341, -1, 343, 344, 345, 346, - 347, -1, -1, 350, 351, 352, 353, -1, 355, 356, - 357, 358, -1, 360, 361, 362, 363, 364, 365, 366, - 367, 368, 369, 370, 371, 372, -1, 374, 375, -1, - 377, -1, 379, 380, 381, 382, 383, -1, 385, 386, - -1, -1, 389, 390, 391, 392, 393, -1, 395, 396, - 397, 398, 399, 400, 401, -1, -1, 404, 405, 406, - 407, 408, -1, -1, 411, 412, 413, 414, 415, 416, - 417, -1, 419, -1, 421, 422, 423, 424, -1, -1, - 427, -1, -1, 430, 431, 432, 433, 434, 435, 436, - 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, - 447, 448, 449, 3, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 18, 19, - 20, 21, 22, 23, 24, 25, -1, 27, 28, 29, - -1, -1, -1, -1, -1, -1, -1, 37, 38, -1, - 40, 41, 42, -1, 44, 45, 46, 47, 48, -1, - 50, 51, -1, 53, 54, 55, 56, 57, -1, -1, - 60, 61, 62, 63, 64, -1, 66, 67, 68, 69, - 70, -1, -1, -1, 74, 75, 76, 77, 78, -1, - 80, 81, 82, -1, 84, 85, 86, 87, 88, 89, - -1, -1, 92, 93, 94, -1, -1, -1, -1, -1, - -1, -1, 102, 103, 104, 105, 106, 107, 108, 109, - 110, -1, 112, -1, 114, 115, 116, 117, 118, 119, - -1, 121, 122, 123, 124, -1, -1, 127, 128, 129, - 130, 131, -1, 133, 134, 135, -1, 137, 138, 139, - -1, 141, 142, 143, 144, 145, 146, 147, 148, 149, - -1, 151, -1, 153, 154, 155, 156, -1, 158, -1, - 160, -1, -1, -1, 164, 165, 166, 167, -1, 169, - 170, -1, 172, 173, -1, 175, 176, 177, 178, 179, - -1, 181, 182, 183, 184, -1, 186, 187, 188, 189, - 190, 191, -1, 193, -1, 195, 196, 197, 198, 199, - 200, 201, -1, 203, -1, 205, -1, -1, 208, -1, - 210, 211, 212, 213, 214, -1, -1, 217, 218, -1, - 220, -1, -1, 223, 224, 225, -1, -1, 228, 229, - 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, - 240, 241, 242, 243, 244, -1, 246, 247, 248, 249, - 250, -1, 252, 253, -1, 255, -1, 257, 258, 259, - 260, 261, 262, -1, 264, 265, -1, -1, 268, 269, - 270, -1, -1, 273, 274, -1, 276, -1, 278, 279, - 280, 281, 282, 283, 284, 285, 286, 287, -1, 289, - 290, 291, 292, 293, 294, 295, 296, -1, 298, 299, - 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, + 337, 338, 339, 340, -1, 342, 343, -1, 345, 346, + 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, + 357, 358, 359, -1, 361, 362, 363, 364, 365, -1, + 367, 368, 369, 370, 371, -1, 373, 374, 375, 376, + -1, 378, 379, 380, 381, 382, 383, 384, 385, 386, + 387, 388, 389, 390, 391, 392, -1, 394, 395, -1, + 397, -1, 399, 400, 401, 402, 403, -1, 405, 406, + 407, -1, -1, 410, 411, 412, 413, 414, -1, 416, + 417, 418, 419, 420, 421, 422, 423, -1, -1, 426, + 427, 428, 429, 430, -1, -1, 433, 434, 435, 436, + 437, 438, 439, -1, 441, -1, 443, 444, 445, 446, + -1, -1, 449, -1, -1, 452, 453, 454, 455, 456, + 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, + 467, 468, 469, 470, 471, 3, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, + 28, 29, -1, 31, 32, 33, -1, -1, -1, -1, + -1, -1, -1, 41, 42, -1, 44, 45, 46, -1, + 48, 49, 50, 51, 52, -1, 54, 55, -1, 57, + 58, 59, 60, 61, 62, -1, -1, 65, 66, 67, + 68, 69, -1, 71, 72, 73, 74, 75, -1, -1, + -1, 79, 80, 81, 82, 83, -1, 85, 86, 87, + -1, 89, 90, 91, 92, 93, 94, -1, -1, 97, + 98, 99, -1, -1, -1, -1, -1, -1, -1, 107, + 108, 109, 110, 111, 112, 113, 114, 115, -1, 117, + -1, 119, 120, 121, 122, 123, 124, -1, 126, 127, + 128, 129, -1, -1, 132, 133, 134, 135, 136, -1, + 138, 139, 140, -1, 142, 143, 144, -1, 146, 147, + 148, 149, 150, 151, 152, 153, 154, 155, -1, 157, + -1, 159, 160, 161, 162, -1, 164, -1, 166, -1, + -1, -1, 170, 171, 172, 173, -1, 175, 176, -1, + 178, 179, 180, -1, 182, 183, 184, 185, 186, -1, + 188, 189, 190, 191, -1, 193, 194, 195, 196, 197, + 198, 199, -1, 201, -1, 203, 204, 205, 206, 207, + 208, 209, -1, 211, -1, 213, -1, -1, 216, -1, + 218, 219, 220, 221, 222, -1, -1, 225, 226, -1, + 228, -1, -1, 231, 232, 233, -1, -1, 236, 237, + 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, + 248, 249, 250, 251, 252, -1, 254, 255, 256, 257, + 258, 259, 260, 261, 262, 263, 264, -1, 266, 267, + -1, 269, -1, 271, 272, 273, 274, 275, 276, -1, + 278, 279, -1, -1, 282, 283, 284, -1, -1, 287, + 288, 289, -1, 291, -1, 293, 294, 295, 296, 297, + 298, 299, 300, 301, 302, -1, 304, 305, 306, 307, + 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, + 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, + -1, 329, 330, 331, 332, 333, 334, 335, 336, 337, + 338, 339, 340, -1, 342, 343, -1, 345, 346, 347, + 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, + 358, 359, -1, 361, 362, 363, 364, 365, -1, 367, + 368, 369, 370, 371, -1, 373, 374, 375, 376, -1, + 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, + 388, 389, 390, 391, 392, -1, 394, 395, -1, 397, + -1, 399, 400, 401, 402, 403, -1, 405, 406, 407, + -1, -1, 410, 411, 412, 413, 414, -1, 416, 417, + 418, 419, 420, 421, 422, 423, -1, -1, 426, 427, + 428, 429, 430, -1, -1, 433, 434, 435, 436, 437, + 438, 439, -1, 441, -1, 443, 444, 445, 446, -1, + -1, 449, -1, -1, 452, 453, 454, 455, 456, 457, + 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, + 468, 469, 470, 471, 3, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, + 29, -1, 31, 32, 33, -1, -1, -1, -1, -1, + -1, -1, 41, 42, -1, 44, 45, 46, -1, 48, + 49, 50, 51, 52, -1, 54, 55, -1, 57, 58, + 59, 60, 61, 62, -1, -1, 65, 66, 67, 68, + 69, -1, 71, 72, 73, 74, 75, -1, -1, -1, + 79, 80, 81, 82, 83, -1, 85, 86, 87, -1, + 89, 90, 91, 92, 93, 94, -1, -1, 97, 98, + 99, -1, -1, -1, -1, -1, -1, -1, 107, 108, + 109, 110, 111, 112, 113, 114, 115, -1, 117, -1, + 119, 120, 121, 122, 123, 124, -1, 126, 127, 128, + 129, -1, -1, 132, 133, 134, 135, 136, -1, 138, + 139, 140, -1, 142, 143, 144, -1, 146, 147, 148, + 149, 150, 151, 152, 153, 154, 155, -1, 157, -1, + 159, 160, 161, 162, -1, 164, -1, 166, -1, -1, + -1, 170, 171, 172, 173, -1, 175, 176, -1, 178, + 179, 180, -1, 182, 183, 184, 185, 186, -1, 188, + 189, 190, 191, -1, 193, 194, 195, 196, 197, 198, + 199, -1, 201, -1, 203, 204, 205, 206, 207, 208, + 209, -1, 211, -1, 213, -1, -1, 216, -1, 218, + 219, 220, 221, 222, -1, -1, 225, 226, -1, 228, + -1, -1, 231, 232, 233, -1, -1, 236, 237, 238, + 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, + 249, 250, 251, 252, -1, 254, 255, 256, 257, 258, + 259, 260, 261, 262, 263, 264, -1, 266, 267, -1, + 269, -1, 271, 272, 273, 274, 275, 276, -1, 278, + 279, -1, -1, 282, 283, 284, -1, -1, 287, 288, + 289, -1, 291, -1, 293, 294, 295, 296, 297, 298, + 299, 300, 301, 302, -1, 304, 305, 306, 307, 308, + 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, + 319, 320, 321, 322, 323, 324, 325, 326, 327, -1, + 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, + 339, 340, -1, 342, 343, -1, 345, 346, 347, 348, + 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, + 359, -1, 361, 362, 363, 364, 365, -1, 367, 368, + 369, 370, 371, -1, 373, 374, 375, 376, -1, 378, + 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, + 389, 390, 391, 392, -1, 394, 395, -1, 397, -1, + 399, 400, 401, 402, 403, -1, 405, 406, 407, -1, + -1, 410, 411, 412, 413, 414, -1, 416, 417, 418, + 419, 420, 421, 422, 423, -1, -1, 426, 427, 428, + 429, 430, -1, -1, 433, 434, 435, 436, 437, 438, + 439, -1, 441, -1, 443, 444, 445, 446, -1, -1, + 449, -1, -1, 452, 453, 454, 455, 456, 457, 458, + 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, + 469, 470, 471, 3, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, + -1, 31, 32, 33, -1, -1, -1, -1, -1, -1, + -1, 41, 42, -1, 44, 45, 46, -1, 48, 49, + 50, 51, 52, -1, 54, 55, -1, 57, 58, 59, + 60, 61, 62, -1, -1, 65, 66, 67, 68, 69, + -1, 71, 72, 73, 74, 75, -1, -1, -1, 79, + 80, 81, 82, 83, -1, 85, 86, 87, -1, 89, + 90, 91, 92, 93, 94, -1, -1, 97, 98, 99, + -1, -1, -1, -1, -1, -1, -1, 107, 108, 109, + 110, 111, 112, 113, 114, 115, -1, 117, -1, 119, + 120, 121, 122, 123, 124, -1, 126, 127, 128, 129, + -1, -1, 132, 133, 134, 135, 136, -1, 138, 139, + 140, -1, 142, 143, 144, -1, 146, 147, 148, 149, + 150, 151, 152, 153, 154, 155, -1, 157, -1, 159, + 160, 161, 162, -1, 164, -1, 166, -1, -1, -1, + 170, 171, 172, 173, -1, 175, 176, -1, 178, 179, + 180, -1, 182, 183, 184, 185, 186, -1, 188, 189, + 190, 191, -1, 193, 194, 195, 196, 197, 198, 199, + -1, 201, -1, 203, 204, 205, 206, 207, 208, 209, + -1, 211, -1, 213, -1, -1, 216, -1, 218, 219, + 220, 221, 222, -1, -1, 225, 226, -1, 228, -1, + -1, 231, 232, 233, -1, -1, 236, 237, 238, 239, + 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, + 250, 251, 252, -1, 254, 255, 256, 257, 258, 259, + 260, 261, 262, 263, 264, -1, 266, 267, -1, 269, + -1, 271, 272, 273, 274, 275, 276, -1, 278, 279, + -1, -1, 282, 283, 284, -1, -1, 287, 288, 289, + -1, 291, -1, 293, 294, 295, 296, 297, 298, 299, + 300, 301, 302, -1, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, - 320, 321, 322, 323, 324, -1, 326, 327, -1, 329, + 320, 321, 322, 323, 324, 325, 326, 327, -1, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, - 340, 341, -1, 343, 344, 345, 346, 347, -1, 349, - 350, 351, 352, 353, -1, 355, 356, 357, 358, -1, - 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, - 370, 371, 372, -1, 374, 375, -1, 377, -1, 379, - 380, 381, 382, 383, -1, 385, 386, -1, -1, 389, - 390, 391, 392, 393, -1, 395, 396, 397, 398, 399, - 400, 401, -1, -1, 404, 405, 406, 407, 408, -1, - -1, 411, 412, 413, 414, 415, 416, 417, -1, 419, - -1, 421, 422, 423, 424, -1, -1, 427, -1, -1, - 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, - 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, + 340, -1, 342, 343, -1, 345, 346, 347, 348, 349, + 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, + -1, 361, 362, 363, 364, 365, -1, 367, 368, 369, + 370, 371, -1, 373, 374, 375, 376, -1, 378, 379, + 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, + 390, 391, 392, -1, 394, 395, -1, 397, -1, 399, + 400, 401, 402, 403, -1, 405, 406, 407, -1, -1, + 410, 411, 412, 413, 414, -1, 416, 417, 418, 419, + 420, 421, 422, 423, -1, -1, 426, 427, 428, 429, + 430, -1, -1, 433, 434, 435, 436, 437, 438, 439, + -1, 441, -1, 443, 444, 445, 446, -1, -1, 449, + -1, -1, 452, 453, 454, 455, 456, 457, 458, 459, + 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, + 470, 471, 3, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 22, 23, 24, 25, 26, 27, 28, 29, -1, + 31, 32, 33, -1, -1, -1, -1, -1, -1, -1, + 41, 42, -1, 44, 45, 46, -1, 48, 49, 50, + 51, 52, -1, 54, 55, -1, 57, 58, 59, 60, + 61, 62, -1, -1, 65, 66, 67, 68, 69, -1, + 71, 72, 73, 74, 75, -1, -1, -1, 79, 80, + 81, 82, 83, -1, 85, 86, 87, -1, 89, 90, + 91, 92, 93, 94, -1, -1, 97, 98, 99, -1, + -1, -1, -1, -1, -1, -1, 107, 108, 109, 110, + 111, 112, 113, 114, 115, -1, 117, -1, 119, 120, + 121, 122, 123, 124, -1, 126, 127, 128, 129, -1, + -1, 132, 133, 134, 135, 136, -1, 138, 139, 140, + -1, 142, 143, 144, -1, 146, 147, 148, 149, 150, + 151, 152, 153, 154, 155, -1, 157, -1, 159, 160, + 161, 162, -1, 164, -1, 166, -1, -1, -1, 170, + 171, 172, 173, -1, 175, 176, -1, 178, 179, 180, + -1, 182, 183, 184, 185, 186, -1, 188, 189, 190, + 191, -1, 193, 194, 195, 196, 197, 198, 199, -1, + 201, -1, 203, 204, 205, 206, 207, 208, 209, -1, + 211, -1, 213, -1, -1, 216, -1, 218, 219, 220, + 221, 222, -1, -1, 225, 226, -1, 228, -1, -1, + 231, 232, 233, -1, -1, 236, 237, 238, 239, 240, + 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, + 251, 252, -1, 254, 255, 256, 257, 258, 259, 260, + 261, 262, 263, 264, -1, 266, 267, -1, 269, -1, + 271, 272, 273, 274, 275, 276, -1, 278, 279, -1, + -1, 282, 283, 284, -1, -1, 287, 288, 289, -1, + 291, -1, 293, 294, 295, 296, 297, 298, 299, 300, + 301, 302, -1, 304, 305, 306, 307, 308, 309, 310, + 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, + 321, 322, 323, 324, 325, 326, 327, -1, 329, 330, + 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, + -1, 342, 343, -1, 345, 346, 347, 348, 349, 350, + 351, 352, 353, 354, 355, 356, 357, 358, 359, -1, + 361, 362, 363, 364, 365, -1, 367, 368, 369, 370, + 371, -1, 373, 374, 375, 376, -1, 378, 379, 380, + 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, + 391, 392, -1, 394, 395, -1, 397, -1, 399, 400, + 401, 402, 403, -1, 405, 406, 407, -1, -1, 410, + 411, 412, 413, 414, -1, 416, 417, 418, 419, 420, + 421, 422, 423, -1, -1, 426, 427, 428, 429, 430, + -1, -1, 433, 434, 435, 436, 437, 438, 439, -1, + 441, -1, 443, 444, 445, 446, -1, -1, 449, -1, + -1, 452, 453, 454, 455, 456, 457, 458, 459, 460, + 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, + 471, 3, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 22, 23, 24, 25, 26, 27, 28, 29, -1, 31, + 32, 33, -1, -1, -1, -1, -1, -1, -1, 41, + 42, -1, 44, 45, 46, -1, 48, 49, 50, 51, + 52, -1, 54, 55, -1, 57, 58, 59, 60, 61, + 62, -1, -1, 65, 66, 67, 68, 69, -1, 71, + 72, 73, 74, 75, -1, -1, -1, 79, 80, 81, + 82, 83, -1, 85, 86, 87, -1, 89, 90, 91, + 92, 93, 94, -1, -1, 97, 98, 99, -1, -1, + -1, -1, -1, -1, -1, 107, 108, 109, 110, 111, + 112, 113, 114, 115, -1, 117, -1, 119, 120, 121, + 122, 123, 124, -1, 126, 127, 128, 129, -1, -1, + 132, 133, 134, 135, 136, -1, 138, 139, 140, -1, + 142, 143, 144, -1, 146, 147, 148, 149, 150, 151, + 152, 153, 154, 155, -1, 157, -1, 159, 160, 161, + 162, -1, 164, -1, 166, -1, -1, -1, 170, 171, + 172, 173, -1, 175, 176, -1, 178, 179, 180, -1, + 182, 183, 184, 185, 186, -1, 188, 189, 190, 191, + -1, 193, 194, 195, 196, 197, 198, 199, -1, 201, + -1, 203, 204, 205, 206, 207, 208, 209, -1, 211, + -1, 213, -1, -1, 216, -1, 218, 219, 220, 221, + 222, -1, -1, 225, 226, -1, 228, -1, -1, 231, + 232, 233, -1, -1, 236, 237, 238, 239, 240, 241, + 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, + 252, -1, 254, 255, 256, 257, 258, 259, 260, 261, + 262, 263, 264, -1, 266, 267, -1, 269, -1, 271, + 272, 273, 274, 275, 276, -1, 278, 279, -1, -1, + 282, 283, 284, -1, -1, 287, 288, 289, -1, 291, + -1, 293, 294, 295, 296, 297, 298, 299, 300, 301, + 302, -1, 304, 305, 306, 307, 308, 309, 310, 311, + -1, 313, 314, 315, 316, 317, 318, 319, 320, 321, + 322, 323, 324, 325, 326, 327, -1, 329, 330, 331, + 332, 333, 334, 335, 336, 337, 338, 339, 340, -1, + 342, 343, -1, 345, 346, 347, 348, 349, 350, 351, + 352, 353, 354, 355, 356, 357, 358, 359, -1, 361, + 362, 363, 364, 365, -1, 367, 368, 369, 370, 371, + -1, 373, 374, 375, 376, -1, 378, 379, 380, 381, + 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, + 392, -1, 394, 395, -1, 397, -1, 399, 400, 401, + 402, 403, -1, 405, 406, 407, -1, -1, 410, 411, + 412, 413, 414, -1, 416, 417, 418, 419, 420, 421, + 422, 423, -1, -1, 426, 427, 428, 429, 430, -1, + -1, 433, 434, 435, 436, 437, 438, 439, -1, 441, + -1, 443, 444, 445, 446, -1, -1, 449, -1, -1, + 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, + 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 18, 19, 20, 21, 22, - 23, 24, 25, -1, 27, 28, 29, -1, -1, -1, - -1, -1, -1, -1, 37, 38, -1, 40, 41, 42, - -1, 44, 45, 46, 47, 48, -1, 50, 51, -1, - 53, 54, 55, 56, 57, -1, -1, 60, 61, 62, - 63, 64, -1, 66, 67, 68, 69, 70, -1, -1, - -1, 74, 75, 76, 77, 78, -1, 80, 81, 82, - -1, 84, 85, 86, 87, 88, 89, -1, -1, 92, - 93, 94, -1, -1, -1, -1, -1, -1, -1, 102, - 103, 104, 105, 106, 107, 108, 109, 110, -1, 112, - -1, 114, 115, 116, 117, 118, 119, -1, 121, 122, - 123, 124, -1, -1, 127, 128, 129, 130, 131, -1, - 133, 134, 135, -1, 137, 138, 139, -1, 141, 142, - 143, 144, 145, 146, 147, 148, 149, -1, 151, -1, - 153, 154, 155, 156, -1, 158, -1, 160, -1, -1, - -1, 164, 165, 166, 167, -1, 169, 170, -1, 172, - 173, -1, 175, 176, 177, 178, 179, -1, 181, 182, - 183, 184, -1, 186, 187, 188, 189, 190, 191, -1, - 193, -1, 195, 196, 197, 198, 199, 200, 201, -1, - 203, -1, 205, -1, -1, 208, -1, 210, 211, 212, - 213, 214, -1, -1, 217, 218, -1, 220, -1, -1, - 223, 224, 225, -1, -1, 228, 229, 230, 231, 232, - 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, - 243, 244, -1, 246, 247, 248, 249, 250, -1, 252, - 253, -1, 255, -1, 257, 258, 259, 260, 261, 262, - -1, 264, 265, -1, -1, 268, 269, 270, -1, -1, - 273, 274, -1, 276, -1, 278, 279, 280, 281, 282, - 283, 284, 285, 286, 287, -1, 289, 290, 291, 292, - 293, 294, 295, 296, -1, 298, 299, 300, 301, 302, - 303, 304, 305, 306, 307, 308, 309, 310, 311, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, + 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, + 33, -1, -1, -1, -1, -1, -1, -1, 41, 42, + -1, 44, 45, 46, -1, 48, 49, 50, 51, 52, + -1, 54, 55, -1, 57, 58, 59, 60, 61, 62, + -1, -1, 65, 66, 67, 68, 69, -1, 71, 72, + 73, 74, 75, -1, -1, -1, 79, 80, 81, 82, + 83, -1, 85, 86, 87, -1, 89, 90, 91, 92, + 93, 94, -1, -1, 97, 98, 99, -1, -1, -1, + -1, -1, -1, -1, 107, 108, 109, 110, 111, 112, + 113, 114, 115, -1, 117, -1, 119, 120, 121, 122, + 123, 124, -1, 126, 127, 128, 129, -1, -1, 132, + 133, 134, 135, 136, -1, 138, 139, 140, -1, 142, + 143, 144, -1, 146, 147, 148, 149, 150, 151, 152, + 153, 154, 155, -1, 157, -1, 159, 160, 161, 162, + -1, 164, -1, 166, -1, -1, -1, 170, 171, 172, + 173, -1, 175, 176, -1, 178, 179, 180, -1, 182, + 183, 184, 185, 186, -1, 188, 189, 190, 191, -1, + 193, 194, 195, 196, 197, 198, 199, -1, 201, -1, + 203, 204, 205, 206, 207, 208, 209, -1, 211, -1, + 213, -1, -1, 216, -1, 218, 219, 220, 221, 222, + -1, -1, 225, 226, -1, 228, -1, -1, 231, 232, + 233, -1, -1, 236, 237, 238, 239, 240, 241, 242, + 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, + -1, 254, 255, 256, 257, 258, 259, 260, 261, 262, + 263, 264, -1, 266, 267, -1, 269, -1, 271, 272, + 273, 274, 275, 276, -1, 278, 279, -1, -1, 282, + 283, 284, -1, -1, 287, 288, 289, -1, 291, -1, + 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, + -1, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, - 323, 324, -1, 326, 327, -1, 329, 330, 331, 332, - 333, 334, 335, 336, 337, 338, 339, 340, 341, -1, - 343, 344, 345, 346, 347, -1, 349, 350, 351, 352, - 353, -1, 355, 356, 357, 358, -1, 360, 361, 362, - 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, - -1, 374, 375, -1, 377, -1, 379, 380, 381, 382, - 383, -1, 385, 386, -1, -1, 389, 390, 391, 392, - 393, -1, 395, 396, 397, 398, 399, 400, 401, -1, - -1, 404, 405, 406, 407, 408, -1, -1, 411, 412, - 413, 414, 415, 416, 417, -1, 419, -1, 421, 422, - 423, 424, -1, -1, 427, -1, -1, 430, 431, 432, - 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, - 443, 444, 445, 446, 447, 448, 449, 3, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 18, 19, 20, 21, 22, 23, 24, 25, - -1, 27, 28, 29, -1, -1, -1, -1, -1, -1, - -1, 37, 38, -1, 40, 41, 42, -1, 44, 45, - 46, 47, 48, -1, 50, 51, -1, 53, 54, 55, - 56, 57, -1, -1, 60, 61, 62, 63, 64, -1, - 66, 67, 68, 69, 70, -1, -1, -1, 74, 75, - 76, 77, 78, -1, 80, 81, 82, -1, 84, 85, - 86, 87, 88, 89, -1, -1, 92, 93, 94, -1, - -1, -1, -1, -1, -1, -1, 102, 103, 104, 105, - 106, 107, 108, 109, 110, -1, 112, -1, 114, 115, - 116, 117, 118, 119, -1, 121, 122, 123, 124, -1, - -1, 127, 128, 129, 130, 131, -1, 133, 134, 135, - -1, 137, 138, 139, -1, 141, 142, 143, 144, 145, - 146, 147, 148, 149, -1, 151, -1, 153, 154, 155, - 156, -1, 158, -1, 160, -1, -1, -1, 164, 165, - 166, 167, -1, 169, 170, -1, 172, 173, -1, 175, - 176, 177, 178, 179, -1, 181, 182, 183, 184, -1, - 186, 187, 188, 189, 190, 191, -1, 193, -1, 195, - 196, 197, 198, 199, 200, 201, -1, 203, -1, 205, - -1, -1, 208, -1, 210, 211, 212, 213, 214, -1, - -1, 217, 218, -1, 220, -1, -1, 223, 224, 225, - -1, -1, 228, 229, 230, 231, 232, 233, 234, 235, - 236, 237, 238, 239, 240, 241, 242, 243, 244, -1, - 246, 247, 248, 249, 250, -1, 252, 253, -1, 255, - -1, 257, 258, 259, 260, 261, 262, -1, 264, 265, - -1, -1, 268, 269, 270, -1, -1, 273, 274, -1, - 276, -1, 278, 279, 280, 281, 282, 283, 284, 285, - 286, 287, -1, 289, 290, 291, 292, 293, 294, 295, - 296, -1, 298, 299, 300, 301, 302, 303, 304, 305, + 323, 324, 325, 326, 327, -1, 329, 330, 331, 332, + 333, 334, 335, 336, 337, 338, 339, 340, -1, 342, + 343, -1, 345, 346, 347, 348, 349, 350, 351, 352, + 353, 354, 355, 356, 357, 358, 359, -1, 361, 362, + 363, 364, 365, -1, 367, 368, 369, 370, 371, -1, + 373, 374, 375, 376, -1, 378, 379, 380, 381, 382, + 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, + -1, 394, 395, -1, 397, -1, 399, 400, 401, 402, + 403, -1, 405, 406, 407, -1, -1, 410, 411, 412, + 413, 414, -1, 416, 417, 418, 419, 420, 421, 422, + 423, -1, -1, 426, 427, 428, 429, 430, -1, -1, + 433, 434, 435, 436, 437, 438, 439, -1, 441, -1, + 443, 444, 445, 446, -1, -1, 449, -1, -1, 452, + 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, + 463, 464, 465, 466, 467, 468, 469, 470, 471, 3, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, + 24, 25, 26, 27, 28, 29, -1, 31, 32, 33, + -1, -1, -1, -1, -1, -1, -1, 41, 42, -1, + 44, 45, 46, -1, 48, 49, 50, 51, 52, -1, + 54, 55, -1, 57, 58, 59, 60, 61, 62, -1, + -1, 65, 66, 67, 68, 69, -1, 71, 72, 73, + 74, 75, -1, -1, -1, 79, 80, 81, 82, 83, + -1, 85, 86, 87, -1, 89, 90, 91, 92, 93, + 94, -1, -1, 97, 98, 99, -1, -1, -1, -1, + -1, -1, -1, 107, 108, 109, 110, 111, 112, 113, + 114, 115, -1, 117, -1, 119, 120, 121, 122, 123, + 124, -1, 126, 127, 128, 129, -1, -1, 132, 133, + 134, 135, 136, -1, 138, 139, 140, -1, 142, 143, + 144, -1, 146, 147, 148, 149, 150, 151, 152, 153, + 154, 155, -1, 157, -1, 159, 160, 161, 162, -1, + 164, -1, 166, -1, -1, -1, 170, 171, 172, 173, + -1, 175, 176, -1, 178, 179, 180, -1, 182, 183, + 184, 185, 186, -1, 188, 189, 190, 191, -1, 193, + 194, 195, 196, 197, 198, 199, -1, 201, -1, 203, + 204, 205, 206, 207, 208, 209, -1, 211, -1, 213, + -1, -1, 216, -1, 218, 219, 220, 221, 222, -1, + -1, 225, 226, -1, 228, -1, -1, 231, 232, 233, + -1, -1, 236, 237, 238, 239, 240, 241, 242, 243, + 244, 245, 246, 247, 248, 249, 250, 251, 252, -1, + 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, + 264, -1, 266, 267, -1, 269, -1, 271, 272, 273, + 274, 275, 276, -1, 278, 279, -1, -1, 282, 283, + 284, -1, -1, 287, 288, 289, -1, 291, -1, 293, + 294, 295, 296, 297, 298, 299, 300, 301, 302, -1, + 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, + 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, + 324, 325, 326, 327, -1, 329, 330, 331, 332, 333, + 334, 335, 336, 337, 338, 339, 340, -1, 342, 343, + -1, 345, 346, 347, 348, 349, 350, 351, 352, 353, + 354, 355, 356, 357, 358, 359, -1, 361, 362, 363, + 364, 365, -1, 367, 368, 369, 370, 371, -1, 373, + 374, 375, 376, -1, 378, 379, 380, 381, 382, 383, + 384, 385, 386, 387, 388, 389, 390, 391, 392, -1, + 394, 395, -1, 397, -1, 399, 400, 401, 402, 403, + -1, 405, 406, 407, -1, -1, 410, 411, 412, 413, + 414, -1, 416, 417, 418, 419, 420, 421, 422, 423, + -1, -1, 426, 427, 428, 429, 430, -1, -1, 433, + 434, 435, 436, 437, 438, 439, -1, 441, -1, 443, + 444, 445, 446, -1, -1, 449, -1, -1, 452, 453, + 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, + 464, 465, 466, 467, 468, 469, 470, 471, 3, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 22, 23, 24, + 25, 26, 27, 28, 29, -1, 31, 32, 33, -1, + -1, -1, -1, -1, -1, -1, 41, 42, -1, 44, + 45, 46, -1, 48, 49, 50, 51, 52, -1, 54, + 55, -1, 57, 58, 59, 60, 61, 62, -1, -1, + 65, 66, 67, 68, 69, -1, 71, 72, 73, 74, + 75, -1, -1, -1, 79, 80, 81, 82, 83, -1, + 85, 86, 87, -1, 89, 90, 91, 92, 93, 94, + -1, -1, 97, 98, 99, -1, -1, -1, -1, -1, + -1, -1, 107, 108, 109, 110, 111, 112, 113, 114, + 115, -1, 117, -1, 119, 120, 121, 122, 123, 124, + -1, 126, 127, 128, 129, -1, -1, 132, 133, 134, + 135, 136, -1, 138, 139, 140, -1, 142, 143, 144, + -1, 146, 147, 148, 149, 150, 151, 152, 153, 154, + 155, -1, 157, -1, 159, 160, 161, 162, -1, 164, + -1, 166, -1, -1, -1, 170, 171, 172, 173, -1, + 175, 176, -1, 178, 179, 180, -1, 182, 183, 184, + 185, 186, -1, 188, 189, 190, 191, -1, 193, 194, + 195, 196, 197, 198, 199, -1, 201, -1, 203, 204, + 205, 206, 207, 208, 209, -1, 211, -1, 213, -1, + -1, 216, -1, 218, 219, 220, 221, 222, -1, -1, + 225, 226, -1, 228, -1, -1, 231, 232, 233, -1, + -1, 236, 237, 238, 239, 240, 241, 242, 243, 244, + 245, 246, 247, 248, 249, 250, 251, 252, -1, 254, + 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, + -1, 266, 267, -1, 269, -1, 271, 272, 273, 274, + 275, 276, -1, 278, 279, -1, -1, 282, 283, 284, + -1, -1, 287, 288, 289, -1, 291, -1, 293, 294, + 295, 296, 297, 298, 299, 300, 301, 302, -1, 304, + 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, + 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, + 325, 326, 327, -1, 329, 330, 331, 332, 333, 334, + 335, 336, 337, 338, 339, 340, -1, 342, 343, -1, + 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, + 355, 356, 357, 358, 359, -1, 361, 362, 363, 364, + 365, -1, 367, 368, 369, 370, 371, -1, 373, 374, + 375, 376, -1, 378, 379, 380, 381, 382, 383, 384, + 385, 386, 387, 388, 389, 390, 391, 392, -1, 394, + 395, -1, 397, -1, 399, 400, 401, 402, 403, -1, + 405, 406, 407, -1, -1, 410, 411, 412, 413, 414, + -1, 416, 417, 418, 419, 420, 421, 422, 423, -1, + -1, 426, 427, 428, 429, 430, -1, -1, 433, 434, + 435, 436, 437, 438, 439, -1, 441, -1, 443, 444, + 445, 446, -1, -1, 449, -1, -1, 452, 453, 454, + 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, + 465, 466, 467, 468, 469, 470, 471, 3, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 22, 23, 24, 25, + 26, 27, 28, 29, -1, 31, 32, 33, -1, -1, + -1, -1, -1, -1, -1, 41, 42, -1, 44, 45, + 46, -1, 48, 49, 50, 51, 52, -1, 54, 55, + -1, 57, 58, 59, 60, 61, 62, -1, -1, 65, + 66, 67, 68, 69, -1, 71, 72, 73, 74, 75, + -1, -1, -1, 79, 80, 81, 82, 83, -1, 85, + 86, 87, -1, 89, 90, 91, 92, 93, 94, -1, + -1, 97, 98, 99, -1, -1, -1, -1, -1, -1, + -1, 107, 108, 109, 110, 111, 112, 113, 114, 115, + -1, 117, -1, 119, 120, 121, 122, 123, 124, -1, + 126, 127, 128, 129, -1, -1, 132, 133, 134, 135, + 136, -1, 138, 139, 140, -1, 142, 143, 144, -1, + 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, + -1, 157, -1, 159, 160, 161, 162, -1, 164, -1, + 166, -1, -1, -1, 170, 171, 172, 173, -1, 175, + 176, -1, 178, 179, 180, -1, 182, 183, 184, 185, + 186, -1, 188, 189, 190, 191, -1, 193, 194, 195, + 196, 197, 198, 199, -1, 201, -1, 203, 204, 205, + 206, 207, 208, 209, -1, 211, -1, 213, -1, -1, + 216, -1, 218, 219, 220, 221, 222, -1, -1, 225, + 226, -1, 228, -1, -1, 231, 232, 233, -1, -1, + 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, + 246, 247, 248, 249, 250, 251, 252, -1, 254, 255, + 256, 257, 258, 259, 260, 261, 262, 263, 264, -1, + 266, 267, -1, 269, -1, 271, 272, 273, 274, 275, + 276, -1, 278, 279, -1, -1, 282, 283, 284, -1, + -1, 287, 288, 289, -1, 291, -1, 293, 294, 295, + 296, 297, 298, 299, 300, 301, 302, -1, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, - 316, 317, 318, 319, 320, 321, 322, 323, 324, -1, + 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, -1, 329, 330, 331, 332, 333, 334, 335, - 336, 337, 338, 339, 340, 341, -1, 343, 344, 345, - 346, 347, -1, 349, 350, 351, 352, 353, -1, 355, - 356, 357, 358, -1, 360, 361, 362, 363, 364, 365, - 366, 367, 368, 369, 370, 371, 372, -1, 374, 375, - -1, 377, -1, 379, 380, 381, 382, 383, -1, 385, - 386, -1, -1, 389, 390, 391, 392, 393, -1, 395, - 396, 397, 398, 399, 400, 401, -1, -1, 404, 405, - 406, 407, 408, -1, -1, 411, 412, 413, 414, 415, - 416, 417, -1, 419, -1, 421, 422, 423, 424, -1, - -1, 427, -1, -1, 430, 431, 432, 433, 434, 435, - 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, - 446, 447, 448, 449, 3, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 18, - 19, 20, 21, 22, 23, 24, 25, -1, 27, 28, - 29, -1, -1, -1, -1, -1, -1, -1, 37, 38, - -1, 40, 41, 42, -1, 44, 45, 46, 47, 48, - -1, 50, 51, -1, 53, 54, 55, 56, 57, -1, - -1, 60, 61, 62, 63, 64, -1, 66, 67, 68, - 69, 70, -1, -1, -1, 74, 75, 76, 77, 78, - -1, 80, 81, 82, -1, 84, 85, 86, 87, 88, - 89, -1, -1, 92, 93, 94, -1, -1, -1, -1, - -1, -1, -1, 102, 103, 104, 105, 106, 107, 108, - 109, 110, -1, 112, -1, 114, 115, 116, 117, 118, - 119, -1, 121, 122, 123, 124, -1, -1, 127, 128, - 129, 130, 131, -1, 133, 134, 135, -1, 137, 138, - 139, -1, 141, 142, 143, 144, 145, 146, 147, 148, - 149, -1, 151, -1, 153, 154, 155, 156, -1, 158, - -1, 160, -1, -1, -1, 164, 165, 166, 167, -1, - 169, 170, -1, 172, 173, -1, 175, 176, 177, 178, - 179, -1, 181, 182, 183, 184, -1, 186, 187, 188, - 189, 190, 191, -1, 193, -1, 195, 196, 197, 198, - 199, 200, 201, -1, 203, -1, 205, -1, -1, 208, - -1, 210, 211, 212, 213, 214, -1, -1, 217, 218, - -1, 220, -1, -1, 223, 224, 225, -1, -1, 228, - 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, - 239, 240, 241, 242, 243, 244, -1, 246, 247, 248, - 249, 250, -1, 252, 253, -1, 255, -1, 257, 258, - 259, 260, 261, 262, -1, 264, 265, -1, -1, 268, - 269, 270, -1, -1, 273, 274, -1, 276, -1, 278, - 279, 280, 281, 282, 283, 284, 285, 286, 287, -1, - 289, 290, 291, 292, 293, 294, 295, 296, -1, 298, - 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, + 336, 337, 338, 339, 340, -1, 342, 343, -1, 345, + 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, + 356, 357, 358, 359, -1, 361, 362, 363, 364, 365, + -1, 367, 368, 369, 370, 371, -1, 373, 374, 375, + 376, -1, 378, 379, 380, 381, 382, 383, 384, 385, + 386, 387, 388, 389, 390, 391, 392, -1, 394, 395, + -1, 397, -1, 399, 400, 401, 402, 403, -1, 405, + 406, 407, -1, -1, 410, 411, 412, 413, 414, -1, + 416, 417, 418, 419, 420, 421, 422, 423, -1, -1, + 426, 427, 428, 429, 430, -1, -1, 433, 434, 435, + 436, 437, 438, 439, -1, 441, -1, 443, 444, 445, + 446, -1, -1, 449, -1, -1, 452, 453, 454, 455, + 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, + 466, 467, 468, 469, 470, 471, 3, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, + 27, 28, 29, -1, 31, 32, 33, -1, -1, -1, + -1, -1, -1, -1, 41, 42, -1, 44, 45, 46, + -1, 48, 49, 50, 51, 52, -1, 54, 55, -1, + 57, 58, 59, 60, 61, 62, -1, -1, 65, 66, + 67, 68, 69, -1, 71, 72, 73, 74, 75, -1, + -1, -1, 79, 80, 81, 82, 83, -1, 85, 86, + 87, -1, 89, 90, 91, 92, 93, 94, -1, -1, + 97, 98, 99, -1, -1, -1, -1, -1, -1, -1, + 107, 108, 109, 110, 111, 112, 113, 114, 115, -1, + 117, -1, 119, 120, 121, 122, 123, 124, -1, 126, + 127, 128, 129, -1, -1, 132, 133, 134, 135, 136, + -1, 138, 139, 140, -1, 142, 143, 144, -1, 146, + 147, 148, 149, 150, 151, 152, 153, 154, 155, -1, + 157, -1, 159, 160, 161, 162, -1, 164, -1, 166, + -1, -1, -1, 170, 171, 172, 173, -1, 175, 176, + -1, 178, 179, 180, -1, 182, 183, 184, 185, 186, + -1, 188, 189, 190, 191, -1, 193, 194, 195, 196, + 197, 198, 199, -1, 201, -1, 203, 204, 205, 206, + 207, 208, 209, -1, 211, -1, 213, -1, -1, 216, + -1, 218, 219, 220, 221, 222, -1, -1, 225, 226, + -1, 228, -1, -1, 231, 232, 233, -1, -1, 236, + 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, + 247, 248, 249, 250, 251, 252, -1, 254, 255, 256, + 257, 258, 259, 260, 261, 262, 263, 264, -1, 266, + 267, -1, 269, -1, 271, 272, 273, 274, 275, 276, + -1, 278, 279, -1, -1, 282, 283, 284, -1, -1, + 287, 288, 289, -1, 291, -1, 293, 294, 295, 296, + 297, 298, 299, 300, 301, 302, -1, 304, 305, 306, + 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, + 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, + 327, -1, 329, 330, 331, 332, 333, 334, 335, 336, + 337, 338, 339, 340, -1, 342, 343, -1, 345, 346, + 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, + 357, 358, 359, -1, 361, 362, 363, 364, 365, -1, + 367, 368, 369, 370, 371, -1, 373, 374, 375, 376, + -1, 378, 379, 380, 381, 382, 383, 384, 385, 386, + 387, 388, 389, 390, 391, 392, -1, 394, 395, -1, + 397, -1, 399, 400, 401, 402, 403, -1, 405, 406, + 407, -1, -1, 410, 411, 412, 413, 414, -1, 416, + 417, 418, 419, 420, 421, 422, 423, -1, -1, 426, + 427, 428, 429, 430, -1, -1, 433, 434, 435, 436, + 437, 438, 439, -1, 441, -1, 443, 444, 445, 446, + -1, -1, 449, -1, -1, 452, 453, 454, 455, 456, + 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, + 467, 468, 469, 470, 471, 3, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, + 28, 29, -1, 31, 32, 33, -1, -1, -1, -1, + -1, -1, -1, 41, 42, -1, 44, 45, 46, -1, + 48, 49, 50, 51, 52, -1, 54, 55, -1, 57, + 58, 59, 60, 61, 62, -1, -1, 65, 66, 67, + 68, 69, -1, 71, 72, 73, 74, 75, -1, -1, + -1, 79, 80, 81, 82, 83, -1, 85, 86, 87, + -1, 89, 90, 91, 92, 93, 94, -1, -1, 97, + 98, 99, -1, -1, -1, -1, -1, -1, -1, 107, + 108, 109, 110, 111, 112, 113, 114, 115, -1, 117, + -1, 119, 120, 121, 122, 123, 124, -1, 126, 127, + 128, 129, -1, -1, 132, 133, 134, 135, 136, -1, + 138, 139, 140, -1, 142, 143, 144, -1, 146, 147, + 148, 149, 150, 151, 152, 153, 154, 155, -1, 157, + -1, 159, 160, 161, 162, -1, 164, -1, 166, -1, + -1, -1, 170, 171, 172, 173, -1, 175, 176, -1, + 178, 179, 180, -1, 182, 183, 184, 185, 186, -1, + 188, 189, 190, 191, -1, 193, 194, 195, 196, 197, + 198, 199, -1, 201, -1, 203, 204, 205, 206, 207, + 208, 209, -1, 211, -1, 213, -1, -1, 216, -1, + 218, 219, 220, 221, 222, -1, -1, 225, 226, -1, + 228, -1, -1, 231, 232, 233, -1, -1, 236, 237, + 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, + 248, 249, 250, 251, 252, -1, 254, 255, 256, 257, + 258, 259, 260, 261, 262, 263, 264, -1, 266, 267, + -1, 269, -1, 271, 272, 273, 274, 275, 276, -1, + 278, 279, -1, -1, 282, 283, 284, -1, -1, 287, + 288, 289, -1, 291, -1, 293, 294, 295, 296, 297, + 298, 299, 300, 301, 302, -1, 304, 305, 306, 307, + 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, + 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, + -1, 329, 330, 331, 332, 333, 334, 335, 336, 337, + 338, 339, 340, -1, 342, 343, -1, 345, 346, 347, + 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, + 358, 359, -1, 361, 362, 363, 364, 365, -1, 367, + 368, 369, 370, 371, -1, 373, 374, 375, 376, -1, + 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, + 388, 389, 390, 391, 392, -1, 394, 395, -1, 397, + -1, 399, 400, 401, 402, 403, -1, 405, 406, 407, + -1, -1, 410, 411, 412, 413, 414, -1, 416, 417, + 418, 419, 420, 421, 422, 423, -1, -1, 426, 427, + 428, 429, 430, -1, -1, 433, 434, 435, 436, 437, + 438, 439, -1, 441, -1, 443, 444, 445, 446, -1, + -1, 449, -1, -1, 452, 453, 454, 455, 456, 457, + 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, + 468, 469, 470, 471, 3, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, + 29, -1, 31, 32, 33, -1, -1, -1, -1, -1, + -1, -1, 41, 42, -1, 44, 45, 46, -1, 48, + 49, 50, 51, 52, -1, 54, 55, -1, 57, 58, + 59, 60, 61, 62, -1, -1, 65, 66, 67, 68, + 69, -1, 71, 72, 73, 74, 75, -1, -1, -1, + 79, 80, 81, 82, 83, -1, 85, 86, 87, -1, + 89, 90, 91, 92, 93, 94, -1, -1, 97, 98, + 99, -1, -1, -1, -1, -1, -1, -1, 107, 108, + 109, 110, 111, 112, 113, 114, 115, -1, 117, -1, + 119, 120, 121, 122, 123, 124, -1, 126, 127, 128, + 129, -1, -1, 132, 133, 134, 135, 136, -1, 138, + 139, 140, -1, 142, 143, 144, -1, 146, 147, 148, + 149, 150, 151, 152, 153, 154, 155, -1, 157, -1, + 159, 160, 161, 162, -1, 164, -1, 166, -1, -1, + -1, 170, 171, 172, 173, -1, 175, 176, -1, 178, + 179, 180, -1, 182, 183, 184, 185, 186, -1, 188, + 189, 190, 191, -1, 193, 194, 195, 196, 197, 198, + 199, -1, 201, -1, 203, 204, 205, 206, 207, 208, + 209, -1, 211, -1, 213, -1, -1, 216, -1, 218, + 219, 220, 221, 222, -1, -1, 225, 226, -1, 228, + -1, -1, 231, 232, 233, -1, -1, 236, 237, 238, + 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, + 249, 250, 251, 252, -1, 254, 255, 256, 257, 258, + 259, 260, 261, 262, 263, 264, -1, 266, 267, -1, + 269, -1, 271, 272, 273, 274, 275, 276, -1, 278, + 279, -1, -1, 282, 283, 284, -1, -1, 287, 288, + 289, -1, 291, -1, 293, 294, 295, 296, 297, 298, + 299, 300, 301, 302, -1, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, - 319, 320, 321, 322, 323, 324, -1, 326, 327, -1, + 319, 320, 321, 322, 323, 324, 325, 326, 327, -1, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, - 339, 340, 341, -1, 343, 344, 345, 346, 347, -1, - 349, 350, 351, 352, 353, -1, 355, 356, 357, 358, - -1, 360, 361, 362, 363, 364, 365, 366, 367, 368, - 369, 370, 371, 372, -1, 374, 375, -1, 377, -1, - 379, 380, 381, 382, 383, -1, 385, 386, -1, -1, - 389, 390, 391, 392, 393, -1, 395, 396, 397, 398, - 399, 400, 401, -1, -1, 404, 405, 406, 407, 408, - -1, -1, 411, 412, 413, 414, 415, 416, 417, -1, - 419, -1, 421, 422, 423, 424, -1, -1, 427, -1, - -1, 430, 431, 432, 433, 434, 435, 436, 437, 438, - 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, - 449, 3, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 18, 19, 20, 21, - 22, 23, 24, 25, -1, 27, 28, 29, -1, -1, - -1, -1, -1, -1, -1, 37, 38, -1, 40, 41, - 42, -1, 44, 45, 46, 47, 48, -1, 50, 51, - -1, 53, 54, 55, 56, 57, -1, -1, 60, 61, - 62, 63, 64, -1, 66, 67, 68, 69, 70, -1, - -1, -1, 74, 75, 76, 77, 78, -1, 80, 81, - 82, -1, 84, 85, 86, 87, 88, 89, -1, -1, - 92, 93, 94, -1, -1, -1, -1, -1, -1, -1, - 102, 103, 104, 105, 106, 107, 108, 109, 110, -1, - 112, -1, 114, 115, 116, 117, 118, 119, -1, 121, - 122, 123, 124, -1, -1, 127, 128, 129, 130, 131, - -1, 133, 134, 135, -1, 137, 138, 139, -1, 141, - 142, 143, 144, 145, 146, 147, 148, 149, -1, 151, - -1, 153, 154, 155, 156, -1, 158, -1, 160, -1, - -1, -1, 164, 165, 166, 167, -1, 169, 170, -1, - 172, 173, -1, 175, 176, 177, 178, 179, -1, 181, - 182, 183, 184, -1, 186, 187, 188, 189, 190, 191, - -1, 193, -1, 195, 196, 197, 198, 199, 200, 201, - -1, 203, -1, 205, -1, -1, 208, -1, 210, 211, - 212, 213, 214, -1, -1, 217, 218, -1, 220, -1, - -1, 223, 224, 225, -1, -1, 228, 229, 230, 231, - 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, - 242, 243, 244, -1, 246, 247, 248, 249, 250, -1, - 252, 253, -1, 255, -1, 257, 258, 259, 260, 261, - 262, -1, 264, 265, -1, -1, 268, 269, 270, -1, - -1, 273, 274, -1, 276, -1, 278, 279, 280, 281, - 282, 283, 284, 285, 286, 287, -1, 289, 290, 291, - 292, 293, 294, 295, 296, -1, 298, 299, 300, 301, - 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, + 339, 340, -1, 342, 343, -1, 345, 346, 347, 348, + 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, + 359, -1, 361, 362, 363, 364, 365, -1, 367, 368, + 369, 370, 371, -1, 373, 374, 375, 376, -1, 378, + 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, + 389, 390, 391, 392, -1, 394, 395, -1, 397, -1, + 399, 400, 401, 402, 403, -1, 405, 406, 407, -1, + -1, 410, 411, 412, 413, 414, -1, 416, 417, 418, + 419, 420, 421, 422, 423, -1, -1, 426, 427, 428, + 429, 430, -1, -1, 433, 434, 435, 436, 437, 438, + 439, -1, 441, -1, 443, 444, 445, 446, -1, -1, + 449, -1, -1, 452, 453, 454, 455, 456, 457, 458, + 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, + 469, 470, 471, 3, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, + -1, 31, 32, 33, -1, -1, -1, -1, -1, -1, + -1, 41, 42, -1, 44, 45, 46, -1, 48, 49, + 50, 51, 52, -1, 54, 55, -1, 57, 58, 59, + 60, 61, 62, -1, -1, 65, 66, 67, 68, 69, + -1, 71, 72, 73, 74, 75, -1, -1, -1, 79, + 80, 81, 82, 83, -1, 85, 86, 87, -1, 89, + 90, 91, 92, 93, 94, -1, -1, 97, 98, 99, + -1, -1, -1, -1, -1, -1, -1, 107, 108, 109, + 110, 111, 112, 113, 114, 115, -1, 117, -1, 119, + 120, 121, 122, 123, 124, -1, 126, 127, 128, 129, + -1, -1, 132, 133, 134, 135, 136, -1, 138, 139, + 140, -1, 142, 143, 144, -1, 146, 147, 148, 149, + 150, 151, 152, 153, 154, 155, -1, 157, -1, 159, + 160, 161, 162, -1, 164, -1, 166, -1, -1, -1, + 170, 171, 172, 173, -1, 175, 176, -1, 178, 179, + 180, -1, 182, 183, 184, 185, 186, -1, 188, 189, + 190, 191, -1, 193, 194, 195, 196, 197, 198, 199, + -1, 201, -1, 203, 204, 205, 206, 207, 208, 209, + -1, 211, -1, 213, -1, -1, 216, -1, 218, 219, + 220, 221, 222, -1, -1, 225, 226, -1, 228, -1, + -1, 231, 232, 233, -1, -1, 236, 237, 238, 239, + 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, + 250, 251, 252, -1, 254, 255, 256, 257, 258, 259, + 260, 261, 262, 263, 264, -1, 266, 267, -1, 269, + -1, 271, 272, 273, 274, 275, 276, -1, 278, 279, + -1, -1, 282, 283, 284, -1, -1, 287, 288, 289, + -1, 291, -1, 293, 294, 295, 296, 297, 298, 299, + 300, 301, 302, -1, 304, 305, 306, 307, 308, 309, + 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, + 320, 321, 322, 323, 324, 325, 326, 327, -1, 329, + 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, + 340, -1, 342, 343, -1, 345, 346, 347, 348, 349, + 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, + -1, 361, 362, 363, 364, 365, -1, 367, 368, 369, + 370, 371, -1, 373, 374, 375, 376, -1, 378, 379, + 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, + 390, 391, 392, -1, 394, 395, -1, 397, -1, 399, + 400, 401, 402, 403, -1, 405, 406, 407, -1, -1, + 410, 411, 412, 413, 414, -1, 416, 417, 418, 419, + 420, 421, 422, 423, -1, -1, 426, 427, 428, 429, + 430, -1, -1, 433, 434, 435, 436, 437, 438, 439, + -1, 441, -1, 443, 444, 445, 446, -1, -1, 449, + -1, -1, 452, 453, 454, 455, 456, 457, 458, 459, + 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, + 470, 471, 3, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 22, 23, 24, 25, 26, 27, 28, 29, -1, + 31, 32, 33, -1, -1, -1, -1, -1, -1, -1, + 41, 42, -1, 44, 45, 46, -1, 48, 49, 50, + 51, 52, -1, 54, 55, -1, 57, 58, 59, 60, + 61, 62, -1, -1, 65, 66, 67, 68, 69, -1, + 71, 72, 73, 74, 75, -1, -1, -1, 79, 80, + 81, 82, 83, -1, 85, 86, 87, -1, 89, 90, + 91, 92, 93, 94, -1, -1, 97, 98, 99, -1, + -1, -1, -1, -1, -1, -1, 107, 108, 109, 110, + 111, 112, 113, 114, 115, -1, 117, -1, 119, 120, + 121, 122, 123, 124, -1, 126, 127, 128, 129, -1, + -1, 132, 133, 134, 135, 136, -1, 138, 139, 140, + -1, 142, 143, 144, -1, 146, 147, 148, 149, 150, + 151, 152, 153, 154, 155, -1, 157, -1, 159, 160, + 161, 162, -1, 164, -1, 166, -1, -1, -1, 170, + 171, 172, 173, -1, 175, 176, -1, 178, 179, 180, + -1, 182, 183, 184, 185, 186, -1, 188, 189, 190, + 191, -1, 193, 194, 195, 196, 197, 198, 199, -1, + 201, -1, 203, 204, 205, 206, 207, 208, 209, -1, + 211, -1, 213, -1, -1, 216, -1, 218, 219, 220, + 221, 222, -1, -1, 225, 226, -1, 228, -1, -1, + 231, 232, 233, -1, -1, 236, 237, 238, 239, 240, + 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, + 251, 252, -1, 254, 255, 256, 257, 258, 259, 260, + 261, 262, 263, 264, -1, 266, 267, -1, 269, -1, + 271, 272, 273, 274, 275, 276, -1, 278, 279, -1, + -1, 282, 283, 284, -1, -1, 287, 288, 289, -1, + 291, -1, 293, 294, 295, 296, 297, 298, 299, 300, + 301, 302, -1, 304, 305, 306, 307, 308, 309, 310, + 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, + 321, 322, 323, 324, 325, 326, 327, -1, 329, 330, + 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, + -1, 342, 343, -1, 345, 346, 347, 348, 349, 350, + 351, 352, 353, 354, 355, 356, 357, 358, 359, -1, + 361, 362, 363, 364, 365, -1, 367, 368, 369, 370, + 371, -1, 373, 374, 375, 376, -1, 378, 379, 380, + 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, + 391, 392, -1, 394, 395, -1, 397, -1, 399, 400, + 401, 402, 403, -1, 405, 406, 407, -1, -1, 410, + 411, 412, 413, 414, -1, 416, 417, 418, 419, 420, + 421, 422, 423, -1, -1, 426, 427, 428, 429, 430, + -1, -1, 433, 434, 435, 436, 437, 438, 439, -1, + 441, -1, 443, 444, 445, 446, -1, -1, 449, -1, + -1, 452, 453, 454, 455, 456, 457, 458, 459, 460, + 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, + 471, 3, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 22, 23, 24, 25, 26, 27, 28, 29, -1, 31, + 32, 33, -1, -1, -1, -1, -1, -1, -1, 41, + 42, -1, 44, 45, 46, -1, 48, 49, 50, 51, + 52, -1, 54, 55, -1, 57, 58, 59, 60, 61, + 62, -1, -1, 65, 66, 67, 68, 69, -1, 71, + 72, 73, 74, 75, -1, -1, -1, 79, 80, 81, + 82, 83, -1, 85, 86, 87, -1, 89, 90, 91, + 92, 93, 94, -1, -1, 97, 98, 99, -1, -1, + -1, -1, -1, -1, -1, 107, 108, 109, 110, 111, + 112, 113, 114, 115, -1, 117, -1, 119, 120, 121, + 122, 123, 124, -1, 126, 127, 128, 129, -1, -1, + 132, 133, 134, 135, 136, -1, 138, 139, 140, -1, + 142, 143, 144, -1, 146, 147, 148, 149, 150, 151, + 152, 153, 154, 155, -1, 157, -1, 159, 160, 161, + 162, -1, 164, -1, 166, -1, -1, -1, 170, 171, + 172, 173, -1, 175, 176, -1, 178, 179, 180, -1, + 182, 183, 184, 185, 186, -1, 188, 189, 190, 191, + -1, 193, 194, 195, 196, 197, 198, 199, -1, 201, + -1, 203, 204, 205, 206, 207, 208, 209, -1, 211, + -1, 213, -1, -1, 216, -1, 218, 219, 220, 221, + 222, -1, -1, 225, 226, -1, 228, -1, -1, 231, + 232, 233, -1, -1, 236, 237, 238, 239, 240, 241, + 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, + 252, -1, 254, 255, 256, 257, 258, 259, 260, 261, + 262, 263, 264, -1, 266, 267, -1, 269, -1, 271, + 272, 273, 274, 275, 276, -1, 278, 279, -1, -1, + 282, 283, 284, -1, -1, 287, 288, 289, -1, 291, + -1, 293, 294, 295, 296, 297, 298, 299, 300, 301, + 302, -1, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, 321, - 322, 323, 324, -1, 326, 327, -1, 329, 330, 331, - 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, - -1, 343, 344, 345, 346, 347, -1, 349, 350, 351, - 352, 353, -1, 355, 356, 357, 358, -1, 360, 361, - 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, - 372, -1, 374, 375, -1, 377, -1, 379, 380, 381, - 382, 383, -1, 385, 386, -1, -1, 389, 390, 391, - 392, 393, -1, 395, 396, 397, 398, 399, 400, 401, - -1, -1, 404, 405, 406, 407, 408, -1, -1, 411, - 412, 413, 414, 415, 416, 417, -1, 419, -1, 421, - 422, 423, 424, -1, -1, 427, -1, -1, 430, 431, - 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, - 442, 443, 444, 445, 446, 447, 448, 449, 3, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 18, 19, 20, 21, 22, 23, 24, - 25, -1, 27, 28, 29, -1, -1, -1, -1, -1, - -1, -1, 37, 38, -1, 40, 41, 42, -1, 44, - 45, 46, 47, 48, -1, 50, 51, -1, 53, 54, - 55, 56, 57, -1, -1, 60, 61, 62, 63, 64, - -1, 66, 67, 68, 69, 70, -1, -1, -1, 74, - 75, 76, 77, 78, -1, 80, 81, 82, -1, 84, - 85, 86, 87, 88, 89, -1, -1, 92, 93, 94, - -1, -1, -1, -1, -1, -1, -1, 102, 103, 104, - 105, 106, 107, 108, 109, 110, -1, 112, -1, 114, - 115, 116, 117, 118, 119, -1, 121, 122, 123, 124, - -1, -1, 127, 128, 129, 130, 131, -1, 133, 134, - 135, -1, 137, 138, 139, -1, 141, 142, 143, 144, - 145, 146, 147, 148, 149, -1, 151, -1, 153, 154, - 155, 156, -1, 158, -1, 160, -1, -1, -1, 164, - 165, 166, 167, -1, 169, 170, -1, 172, 173, -1, - 175, 176, 177, 178, 179, -1, 181, 182, 183, 184, - -1, 186, 187, 188, 189, 190, 191, -1, 193, -1, - 195, 196, 197, 198, 199, 200, 201, -1, 203, -1, - 205, -1, -1, 208, -1, 210, 211, 212, 213, 214, - -1, -1, 217, 218, -1, 220, -1, -1, 223, 224, - 225, -1, -1, 228, 229, 230, 231, 232, 233, 234, - 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, - -1, 246, 247, 248, 249, 250, -1, 252, 253, -1, - 255, -1, 257, 258, 259, 260, 261, 262, -1, 264, - 265, -1, -1, 268, 269, 270, -1, -1, 273, 274, - -1, 276, -1, 278, 279, 280, 281, 282, 283, 284, - 285, 286, 287, -1, 289, 290, 291, 292, 293, 294, - 295, 296, -1, 298, 299, 300, 301, 302, 303, 304, + 322, 323, 324, 325, 326, 327, -1, 329, 330, 331, + 332, 333, 334, 335, 336, 337, 338, 339, 340, -1, + 342, 343, -1, 345, 346, 347, 348, 349, 350, 351, + 352, 353, 354, 355, 356, 357, 358, 359, -1, 361, + 362, 363, 364, 365, -1, 367, 368, 369, 370, 371, + -1, 373, 374, 375, 376, -1, 378, 379, 380, 381, + 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, + 392, -1, 394, 395, -1, 397, -1, 399, 400, 401, + 402, 403, -1, 405, 406, 407, -1, -1, 410, 411, + 412, 413, 414, -1, 416, 417, 418, 419, 420, 421, + 422, 423, -1, -1, 426, 427, 428, 429, 430, -1, + -1, 433, 434, 435, 436, 437, 438, 439, -1, 441, + -1, 443, 444, 445, 446, -1, -1, 449, -1, -1, + 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, + 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, + 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, + 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, + 33, -1, -1, -1, -1, -1, -1, -1, 41, 42, + -1, 44, 45, 46, -1, 48, 49, 50, 51, 52, + -1, 54, 55, -1, 57, 58, 59, 60, 61, 62, + -1, -1, 65, 66, 67, 68, 69, -1, 71, 72, + 73, 74, 75, -1, -1, -1, 79, 80, 81, 82, + 83, -1, 85, 86, 87, -1, 89, 90, 91, 92, + 93, 94, -1, -1, 97, 98, 99, -1, -1, -1, + -1, -1, -1, -1, 107, 108, 109, 110, 111, 112, + 113, 114, 115, -1, 117, -1, 119, 120, 121, 122, + 123, 124, -1, 126, 127, 128, 129, -1, -1, 132, + 133, 134, 135, 136, -1, 138, 139, 140, -1, 142, + 143, 144, -1, 146, 147, 148, 149, 150, 151, 152, + 153, 154, 155, -1, 157, -1, 159, 160, 161, 162, + -1, 164, -1, 166, -1, -1, -1, 170, 171, 172, + 173, -1, 175, 176, -1, 178, 179, 180, -1, 182, + 183, 184, 185, 186, -1, 188, 189, 190, 191, -1, + 193, 194, 195, 196, 197, 198, 199, -1, 201, -1, + 203, 204, 205, 206, 207, 208, 209, -1, 211, -1, + 213, -1, -1, 216, -1, 218, 219, 220, 221, 222, + -1, -1, 225, 226, -1, 228, -1, -1, 231, 232, + 233, -1, -1, 236, 237, 238, 239, 240, 241, 242, + 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, + -1, 254, 255, 256, 257, 258, 259, 260, 261, 262, + 263, 264, -1, 266, 267, -1, 269, -1, 271, 272, + 273, 274, 275, 276, -1, 278, 279, -1, -1, 282, + 283, 284, -1, -1, 287, 288, 289, -1, 291, -1, + 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, + -1, 304, 305, 306, 307, 308, 309, 310, 311, -1, + 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, + 323, 324, 325, 326, 327, -1, 329, 330, 331, 332, + 333, 334, 335, 336, 337, 338, 339, 340, -1, 342, + 343, -1, 345, 346, 347, 348, 349, 350, 351, 352, + 353, 354, 355, 356, 357, 358, 359, -1, 361, 362, + 363, 364, 365, -1, 367, 368, 369, 370, 371, -1, + 373, 374, 375, 376, -1, 378, 379, 380, 381, 382, + 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, + -1, 394, 395, -1, 397, -1, 399, 400, 401, 402, + 403, -1, 405, 406, 407, -1, -1, 410, 411, 412, + 413, 414, -1, 416, 417, 418, 419, 420, 421, 422, + 423, -1, -1, 426, 427, 428, 429, 430, -1, -1, + 433, 434, 435, 436, 437, 438, 439, -1, 441, -1, + 443, 444, 445, 446, -1, -1, 449, -1, -1, 452, + 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, + 463, 464, 465, 466, 467, 468, 469, 470, 471, 3, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, + 24, 25, 26, 27, 28, 29, -1, 31, 32, 33, + -1, -1, -1, -1, -1, -1, -1, 41, 42, -1, + 44, 45, 46, -1, 48, 49, 50, 51, 52, -1, + 54, 55, -1, 57, 58, 59, 60, 61, 62, -1, + -1, 65, 66, 67, 68, 69, -1, 71, 72, 73, + 74, 75, -1, -1, -1, 79, 80, 81, 82, 83, + -1, 85, 86, 87, -1, 89, 90, 91, 92, 93, + 94, -1, -1, 97, 98, 99, -1, -1, -1, -1, + -1, -1, -1, 107, 108, 109, 110, 111, 112, 113, + 114, 115, -1, 117, -1, 119, 120, 121, 122, 123, + 124, -1, 126, 127, 128, 129, -1, -1, 132, 133, + 134, 135, 136, -1, 138, 139, 140, -1, 142, 143, + 144, -1, 146, 147, 148, 149, 150, 151, 152, 153, + 154, 155, -1, 157, -1, 159, 160, 161, 162, -1, + 164, -1, 166, -1, -1, -1, 170, 171, 172, 173, + -1, 175, 176, -1, 178, 179, 180, -1, 182, 183, + 184, 185, 186, -1, 188, 189, 190, 191, -1, 193, + 194, 195, 196, 197, 198, 199, -1, 201, -1, 203, + 204, 205, 206, 207, 208, 209, -1, 211, -1, 213, + -1, -1, 216, -1, 218, 219, 220, 221, 222, -1, + -1, 225, 226, -1, 228, -1, -1, 231, 232, 233, + -1, -1, 236, 237, 238, 239, 240, 241, 242, 243, + 244, 245, 246, 247, 248, 249, 250, 251, 252, -1, + 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, + 264, -1, 266, 267, -1, 269, -1, 271, 272, 273, + 274, 275, 276, -1, 278, 279, -1, -1, 282, 283, + 284, -1, -1, 287, 288, 289, -1, 291, -1, 293, + 294, 295, 296, 297, 298, 299, 300, 301, 302, -1, + 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, + 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, + 324, 325, 326, 327, -1, 329, 330, 331, 332, 333, + 334, 335, 336, 337, 338, 339, 340, -1, 342, 343, + -1, 345, 346, 347, 348, 349, 350, 351, 352, 353, + 354, 355, 356, 357, 358, 359, -1, 361, 362, 363, + 364, 365, -1, 367, 368, 369, 370, 371, -1, 373, + 374, 375, 376, -1, 378, 379, 380, 381, 382, 383, + 384, 385, 386, 387, 388, 389, 390, 391, 392, -1, + 394, 395, -1, 397, -1, 399, 400, 401, 402, 403, + -1, 405, 406, 407, -1, -1, 410, 411, 412, 413, + 414, -1, 416, 417, 418, 419, 420, 421, 422, 423, + -1, -1, 426, 427, 428, 429, 430, -1, -1, 433, + 434, 435, 436, 437, 438, 439, -1, 441, -1, 443, + 444, 445, 446, -1, -1, 449, -1, -1, 452, 453, + 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, + 464, 465, 466, 467, 468, 469, 470, 471, 3, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 22, 23, 24, + 25, 26, 27, 28, 29, -1, 31, 32, 33, -1, + -1, -1, -1, -1, -1, -1, 41, 42, -1, 44, + 45, 46, -1, 48, 49, 50, 51, 52, -1, 54, + 55, -1, 57, 58, 59, 60, 61, 62, -1, -1, + 65, 66, 67, 68, 69, -1, 71, 72, 73, 74, + 75, -1, -1, -1, 79, 80, 81, 82, 83, -1, + 85, 86, 87, -1, 89, 90, 91, 92, 93, 94, + -1, -1, 97, 98, 99, -1, -1, -1, -1, -1, + -1, -1, 107, 108, 109, 110, 111, 112, 113, 114, + 115, -1, 117, -1, 119, 120, 121, 122, 123, 124, + -1, 126, 127, 128, 129, -1, -1, 132, 133, 134, + 135, 136, -1, 138, 139, 140, -1, 142, 143, 144, + -1, 146, 147, 148, 149, 150, 151, 152, 153, 154, + 155, -1, 157, -1, 159, 160, 161, 162, -1, 164, + -1, 166, -1, -1, -1, 170, 171, 172, 173, -1, + 175, 176, -1, 178, 179, 180, -1, 182, 183, 184, + 185, 186, -1, 188, 189, 190, 191, -1, 193, 194, + 195, 196, 197, 198, 199, -1, 201, -1, 203, 204, + 205, 206, 207, 208, 209, -1, 211, -1, 213, -1, + -1, 216, -1, 218, 219, 220, 221, 222, -1, -1, + 225, 226, -1, 228, -1, -1, 231, 232, 233, -1, + -1, 236, 237, 238, 239, 240, 241, 242, 243, 244, + 245, 246, 247, 248, 249, 250, 251, 252, -1, 254, + 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, + -1, 266, 267, -1, 269, -1, 271, 272, 273, 274, + 275, 276, -1, 278, 279, -1, -1, 282, 283, 284, + -1, -1, 287, 288, 289, -1, 291, -1, 293, 294, + 295, 296, 297, 298, 299, 300, 301, 302, -1, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, - -1, 326, 327, -1, 329, 330, 331, 332, 333, 334, - 335, 336, 337, 338, 339, 340, 341, -1, 343, 344, - 345, 346, 347, -1, 349, 350, 351, 352, 353, -1, - 355, 356, 357, 358, -1, 360, 361, 362, 363, 364, - 365, 366, 367, 368, 369, 370, 371, 372, -1, 374, - 375, -1, 377, -1, 379, 380, 381, 382, 383, -1, - 385, 386, -1, -1, 389, 390, 391, 392, 393, -1, - 395, 396, 397, 398, 399, 400, 401, -1, -1, 404, - 405, 406, 407, 408, -1, -1, 411, 412, 413, 414, - 415, 416, 417, -1, 419, -1, 421, 422, 423, 424, - -1, -1, 427, -1, -1, 430, 431, 432, 433, 434, - 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, - 445, 446, 447, 448, 449, 3, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 18, 19, 20, 21, 22, 23, 24, 25, -1, 27, - 28, 29, -1, -1, -1, -1, -1, -1, -1, 37, - 38, -1, 40, 41, 42, -1, 44, 45, 46, 47, - 48, -1, 50, 51, -1, 53, 54, 55, 56, 57, - -1, -1, 60, 61, 62, 63, 64, -1, 66, 67, - 68, 69, 70, -1, -1, -1, 74, 75, 76, 77, - 78, -1, 80, 81, 82, -1, 84, 85, 86, 87, - 88, 89, -1, -1, 92, 93, 94, -1, -1, -1, - -1, -1, -1, -1, 102, 103, 104, 105, 106, 107, - 108, 109, 110, -1, 112, -1, 114, 115, 116, 117, - 118, 119, -1, 121, 122, 123, 124, -1, -1, 127, - 128, 129, 130, 131, -1, 133, 134, 135, -1, 137, - 138, 139, -1, 141, 142, 143, 144, 145, 146, 147, - 148, 149, -1, 151, -1, 153, 154, 155, 156, -1, - 158, -1, 160, -1, -1, -1, 164, 165, 166, 167, - -1, 169, 170, -1, 172, 173, -1, 175, 176, 177, - 178, 179, -1, 181, 182, 183, 184, -1, 186, 187, - 188, 189, 190, 191, -1, 193, -1, 195, 196, 197, - 198, 199, 200, 201, -1, 203, -1, 205, -1, -1, - 208, -1, 210, 211, 212, 213, 214, -1, -1, 217, - 218, -1, 220, -1, -1, 223, 224, 225, -1, -1, - 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, - 238, 239, 240, 241, 242, 243, 244, -1, 246, 247, - 248, 249, 250, -1, 252, 253, -1, 255, -1, 257, - 258, 259, 260, 261, 262, -1, 264, 265, -1, -1, - 268, 269, 270, -1, -1, 273, 274, -1, 276, -1, - 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, - -1, 289, 290, 291, 292, 293, 294, 295, 296, -1, - 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, + 325, 326, 327, -1, 329, 330, 331, 332, 333, 334, + 335, 336, 337, 338, 339, 340, -1, 342, 343, -1, + 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, + 355, 356, 357, 358, 359, -1, 361, 362, 363, 364, + 365, -1, 367, 368, 369, 370, 371, -1, 373, 374, + 375, 376, -1, 378, 379, 380, 381, 382, 383, 384, + 385, 386, 387, 388, 389, 390, 391, 392, -1, 394, + 395, -1, 397, -1, 399, 400, 401, 402, 403, -1, + 405, 406, 407, -1, -1, 410, 411, 412, 413, 414, + -1, 416, 417, 418, 419, 420, 421, 422, 423, -1, + -1, 426, 427, 428, 429, 430, -1, -1, 433, 434, + 435, 436, 437, 438, 439, -1, 441, -1, 443, 444, + 445, 446, -1, -1, 449, -1, -1, 452, 453, 454, + 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, + 465, 466, 467, 468, 469, 470, 471, 3, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 22, 23, 24, 25, + 26, 27, 28, 29, -1, 31, 32, 33, -1, -1, + -1, -1, -1, -1, -1, 41, 42, -1, 44, 45, + 46, -1, 48, 49, 50, 51, 52, -1, 54, 55, + -1, 57, 58, 59, 60, 61, 62, -1, -1, 65, + 66, 67, 68, 69, -1, 71, 72, 73, 74, 75, + -1, -1, -1, 79, 80, 81, 82, 83, -1, 85, + 86, 87, -1, 89, 90, 91, 92, 93, 94, -1, + -1, 97, 98, 99, -1, -1, -1, -1, -1, -1, + -1, 107, 108, 109, 110, 111, 112, 113, 114, 115, + -1, 117, -1, 119, 120, 121, 122, 123, 124, -1, + 126, 127, 128, 129, -1, -1, 132, 133, 134, 135, + 136, -1, 138, 139, 140, -1, 142, 143, 144, -1, + 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, + -1, 157, -1, 159, 160, 161, 162, -1, 164, -1, + 166, -1, -1, -1, 170, 171, 172, 173, -1, 175, + 176, -1, 178, 179, 180, -1, 182, 183, 184, 185, + 186, -1, 188, 189, 190, 191, -1, 193, 194, 195, + 196, 197, 198, 199, -1, 201, -1, 203, 204, 205, + 206, 207, 208, 209, -1, 211, -1, 213, -1, -1, + 216, -1, 218, 219, 220, 221, 222, -1, -1, 225, + 226, -1, 228, -1, -1, 231, 232, 233, -1, -1, + 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, + 246, 247, 248, 249, 250, 251, 252, -1, 254, 255, + 256, 257, 258, 259, 260, 261, 262, 263, 264, -1, + 266, 267, -1, 269, -1, 271, 272, 273, 274, 275, + 276, -1, 278, 279, -1, -1, 282, 283, 284, -1, + -1, 287, 288, 289, -1, 291, -1, 293, 294, 295, + 296, 297, 298, 299, 300, 301, 302, -1, 304, 305, + 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, + 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, + 326, 327, -1, 329, 330, 331, 332, 333, 334, 335, + 336, 337, 338, 339, 340, -1, 342, 343, -1, 345, + 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, + 356, 357, 358, 359, -1, 361, 362, 363, 364, 365, + -1, 367, 368, 369, 370, 371, -1, 373, 374, 375, + 376, -1, 378, 379, 380, 381, 382, 383, 384, 385, + 386, 387, 388, 389, 390, 391, 392, -1, 394, 395, + -1, 397, -1, 399, 400, 401, 402, 403, -1, 405, + 406, 407, -1, -1, 410, 411, 412, 413, 414, -1, + 416, 417, 418, 419, 420, 421, 422, 423, -1, -1, + 426, 427, 428, 429, 430, -1, -1, 433, 434, 435, + 436, 437, 438, 439, -1, 441, -1, 443, 444, 445, + 446, -1, -1, 449, -1, -1, 452, 453, 454, 455, + 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, + 466, 467, 468, 469, 470, 471, 3, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, + 27, 28, 29, -1, 31, 32, 33, -1, -1, -1, + -1, -1, 39, -1, 41, 42, -1, 44, 45, 46, + -1, 48, 49, 50, 51, 52, -1, 54, 55, -1, + 57, 58, 59, 60, 61, 62, -1, -1, 65, 66, + 67, 68, 69, -1, 71, 72, 73, 74, 75, -1, + -1, -1, 79, 80, 81, 82, 83, -1, 85, 86, + 87, -1, 89, 90, 91, 92, 93, 94, -1, -1, + 97, 98, 99, -1, -1, -1, -1, -1, -1, -1, + 107, 108, 109, 110, 111, 112, 113, 114, 115, -1, + 117, -1, 119, 120, 121, 122, 123, 124, -1, 126, + 127, 128, 129, -1, -1, 132, 133, 134, 135, 136, + -1, 138, 139, 140, -1, 142, 143, 144, -1, 146, + 147, 148, 149, 150, 151, 152, 153, 154, 155, -1, + 157, -1, 159, 160, 161, 162, -1, 164, -1, 166, + -1, -1, -1, 170, 171, 172, 173, -1, 175, 176, + -1, 178, 179, 180, -1, 182, 183, 184, 185, 186, + -1, 188, 189, 190, 191, -1, 193, 194, 195, 196, + 197, 198, 199, -1, 201, -1, 203, 204, 205, 206, + 207, 208, 209, -1, 211, -1, 213, -1, -1, 216, + -1, 218, 219, 220, 221, 222, -1, -1, 225, 226, + -1, 228, -1, -1, 231, 232, 233, -1, -1, 236, + 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, + 247, 248, 249, 250, 251, 252, -1, 254, 255, 256, + 257, 258, 259, 260, 261, 262, 263, 264, -1, 266, + 267, -1, 269, -1, 271, 272, 273, 274, 275, 276, + -1, 278, 279, -1, -1, 282, 283, 284, -1, -1, + 287, 288, 289, -1, 291, -1, 293, 294, 295, 296, + 297, 298, 299, 300, 301, 302, -1, 304, 305, 306, + 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, + 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, + 327, -1, 329, 330, 331, 332, 333, 334, 335, 336, + 337, 338, 339, 340, -1, 342, 343, -1, 345, 346, + 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, + 357, 358, 359, -1, 361, 362, 363, 364, 365, -1, + -1, 368, 369, 370, 371, -1, 373, 374, 375, 376, + -1, 378, 379, 380, 381, 382, 383, 384, 385, 386, + 387, 388, 389, 390, 391, 392, -1, 394, 395, -1, + 397, -1, 399, 400, 401, 402, 403, -1, 405, 406, + 407, -1, -1, 410, 411, 412, 413, 414, -1, 416, + 417, 418, 419, 420, 421, 422, 423, -1, -1, 426, + 427, 428, 429, 430, -1, -1, 433, 434, 435, 436, + 437, 438, 439, -1, 441, -1, 443, 444, 445, 446, + -1, -1, 449, -1, -1, 452, 453, 454, 455, 456, + 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, + 467, 468, 469, 470, 471, 3, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, + 28, 29, -1, 31, 32, 33, -1, -1, -1, -1, + -1, -1, -1, 41, 42, -1, 44, 45, 46, -1, + 48, 49, 50, 51, 52, -1, 54, 55, -1, 57, + 58, 59, 60, 61, 62, -1, -1, 65, 66, 67, + 68, 69, -1, 71, 72, 73, 74, 75, -1, -1, + -1, 79, 80, 81, 82, 83, -1, 85, 86, 87, + -1, 89, 90, 91, 92, 93, 94, -1, -1, 97, + 98, 99, -1, -1, -1, -1, -1, -1, -1, 107, + 108, 109, 110, 111, 112, 113, 114, 115, -1, 117, + -1, 119, 120, 121, 122, 123, 124, -1, 126, 127, + 128, 129, -1, -1, 132, 133, 134, 135, 136, -1, + 138, 139, 140, -1, 142, 143, 144, -1, 146, 147, + 148, 149, 150, 151, 152, 153, 154, 155, -1, 157, + -1, 159, 160, 161, 162, -1, 164, -1, 166, -1, + -1, -1, 170, 171, 172, 173, -1, 175, 176, -1, + 178, 179, 180, -1, 182, 183, 184, 185, 186, -1, + 188, 189, 190, 191, -1, 193, 194, 195, 196, 197, + 198, 199, -1, 201, -1, 203, 204, 205, 206, 207, + 208, 209, -1, 211, -1, 213, -1, -1, 216, -1, + 218, 219, 220, 221, 222, -1, -1, 225, 226, -1, + 228, -1, -1, 231, 232, 233, -1, -1, 236, 237, + 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, + 248, 249, 250, 251, 252, -1, 254, 255, 256, 257, + 258, 259, 260, 261, 262, 263, 264, -1, 266, 267, + -1, 269, -1, 271, 272, 273, 274, 275, 276, -1, + 278, 279, -1, -1, 282, 283, 284, -1, -1, 287, + 288, 289, -1, 291, -1, 293, 294, 295, 296, 297, + 298, 299, 300, 301, 302, -1, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, - 318, 319, 320, 321, 322, 323, 324, -1, 326, 327, + 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, -1, 329, 330, 331, 332, 333, 334, 335, 336, 337, - 338, 339, 340, 341, -1, 343, 344, 345, 346, 347, - -1, 349, 350, 351, 352, 353, -1, 355, 356, 357, - 358, -1, 360, 361, 362, 363, 364, 365, 366, 367, - 368, 369, 370, 371, 372, -1, 374, 375, -1, 377, - -1, 379, 380, 381, 382, 383, -1, 385, 386, -1, - -1, 389, 390, 391, 392, 393, -1, 395, 396, 397, - 398, 399, 400, 401, -1, -1, 404, 405, 406, 407, - 408, -1, -1, 411, 412, 413, 414, 415, 416, 417, - -1, 419, -1, 421, 422, 423, 424, -1, -1, 427, - -1, -1, 430, 431, 432, 433, 434, 435, 436, 437, - 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, - 448, 449, 3, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 18, 19, 20, - 21, 22, 23, 24, 25, -1, 27, 28, 29, -1, - -1, -1, -1, -1, -1, -1, 37, 38, -1, 40, - 41, 42, -1, 44, 45, 46, 47, 48, -1, 50, - 51, -1, 53, 54, 55, 56, 57, -1, -1, 60, - 61, 62, 63, 64, -1, 66, 67, 68, 69, 70, - -1, -1, -1, 74, 75, 76, 77, 78, -1, 80, - 81, 82, -1, 84, 85, 86, 87, 88, 89, -1, - -1, 92, 93, 94, -1, -1, -1, -1, -1, -1, - -1, 102, 103, 104, 105, 106, 107, 108, 109, 110, - -1, 112, -1, 114, 115, 116, 117, 118, 119, -1, - 121, 122, 123, 124, -1, -1, 127, 128, 129, 130, - 131, -1, 133, 134, 135, -1, 137, 138, 139, -1, - 141, 142, 143, 144, 145, 146, 147, 148, 149, -1, - 151, -1, 153, 154, 155, 156, -1, 158, -1, 160, - -1, -1, -1, 164, 165, 166, 167, -1, 169, 170, - -1, 172, 173, -1, 175, 176, 177, 178, 179, -1, - 181, 182, 183, 184, -1, 186, 187, 188, 189, 190, - 191, -1, 193, -1, 195, 196, 197, 198, 199, 200, - 201, -1, 203, -1, 205, -1, -1, 208, -1, 210, - 211, 212, 213, 214, -1, -1, 217, 218, -1, 220, - -1, -1, 223, 224, 225, -1, -1, 228, 229, 230, - 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, - 241, 242, 243, 244, -1, 246, 247, 248, 249, 250, - -1, 252, 253, -1, 255, -1, 257, 258, 259, 260, - 261, 262, -1, 264, 265, -1, -1, 268, 269, 270, - -1, -1, 273, 274, -1, 276, -1, 278, 279, 280, - 281, 282, 283, 284, 285, 286, 287, -1, 289, 290, - 291, 292, 293, 294, 295, 296, -1, 298, 299, 300, - 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, + 338, 339, 340, -1, 342, 343, -1, 345, 346, 347, + 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, + 358, 359, -1, 361, 362, 363, 364, 365, -1, 367, + 368, 369, 370, 371, -1, 373, 374, 375, 376, -1, + 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, + 388, 389, 390, 391, 392, -1, 394, 395, -1, 397, + -1, 399, 400, 401, 402, 403, -1, 405, 406, 407, + -1, -1, 410, 411, 412, 413, 414, -1, 416, 417, + 418, 419, 420, 421, 422, 423, -1, -1, 426, 427, + 428, 429, 430, -1, -1, 433, 434, 435, 436, 437, + 438, 439, -1, 441, -1, 443, 444, 445, 446, -1, + -1, 449, -1, -1, 452, 453, 454, 455, 456, 457, + 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, + 468, 469, 470, 471, 3, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, + 29, -1, 31, 32, 33, -1, -1, -1, -1, -1, + -1, -1, 41, 42, -1, 44, 45, 46, -1, 48, + 49, 50, 51, 52, -1, 54, 55, -1, 57, 58, + 59, 60, 61, 62, -1, -1, 65, 66, 67, 68, + 69, -1, 71, 72, 73, 74, 75, -1, -1, -1, + 79, 80, 81, 82, 83, -1, 85, 86, 87, -1, + 89, 90, 91, 92, 93, 94, -1, -1, 97, 98, + 99, -1, -1, -1, -1, -1, -1, -1, 107, 108, + 109, 110, 111, 112, 113, 114, 115, -1, 117, -1, + 119, 120, 121, 122, 123, 124, -1, 126, 127, 128, + 129, -1, -1, 132, 133, 134, 135, 136, -1, 138, + 139, 140, -1, 142, 143, 144, -1, 146, 147, 148, + 149, 150, 151, 152, 153, 154, 155, -1, 157, -1, + 159, 160, 161, 162, -1, 164, -1, 166, -1, -1, + -1, 170, 171, 172, 173, -1, 175, 176, -1, 178, + 179, 180, -1, 182, 183, 184, 185, 186, -1, 188, + 189, 190, 191, -1, 193, 194, 195, 196, 197, 198, + 199, -1, 201, -1, 203, 204, 205, 206, 207, 208, + 209, -1, 211, -1, 213, -1, -1, 216, -1, 218, + 219, 220, 221, 222, -1, -1, 225, 226, -1, 228, + -1, -1, 231, 232, 233, -1, -1, 236, 237, 238, + 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, + 249, 250, 251, 252, -1, 254, 255, 256, 257, 258, + 259, 260, 261, 262, 263, 264, -1, 266, 267, -1, + 269, -1, 271, 272, 273, 274, 275, 276, -1, 278, + 279, -1, -1, 282, 283, 284, -1, -1, 287, 288, + 289, -1, 291, -1, 293, 294, 295, 296, 297, 298, + 299, 300, 301, 302, -1, 304, 305, 306, 307, 308, + 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, + 319, 320, 321, 322, 323, 324, 325, 326, 327, -1, + 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, + 339, 340, -1, 342, 343, -1, 345, 346, 347, 348, + 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, + 359, -1, 361, 362, 363, 364, 365, -1, 367, 368, + 369, 370, 371, -1, 373, 374, 375, 376, -1, 378, + 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, + 389, 390, 391, 392, -1, 394, 395, -1, 397, -1, + 399, 400, 401, 402, 403, -1, 405, 406, 407, -1, + -1, 410, 411, 412, 413, 414, -1, 416, 417, 418, + 419, 420, 421, 422, 423, -1, -1, 426, 427, 428, + 429, 430, -1, -1, 433, 434, 435, 436, 437, 438, + 439, -1, 441, -1, 443, 444, 445, 446, -1, -1, + 449, -1, -1, 452, 453, 454, 455, 456, 457, 458, + 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, + 469, 470, 471, 3, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, + -1, 31, 32, 33, -1, -1, -1, -1, -1, -1, + -1, 41, 42, -1, 44, 45, 46, -1, 48, 49, + 50, 51, 52, -1, 54, 55, -1, 57, 58, 59, + 60, 61, 62, -1, -1, 65, 66, 67, 68, 69, + -1, 71, 72, 73, 74, 75, -1, -1, -1, 79, + 80, 81, 82, 83, -1, 85, 86, 87, -1, 89, + 90, 91, 92, 93, 94, -1, -1, 97, 98, 99, + -1, -1, -1, -1, -1, -1, -1, 107, 108, 109, + 110, 111, 112, 113, 114, 115, -1, 117, -1, 119, + 120, 121, 122, 123, 124, -1, 126, 127, 128, 129, + -1, -1, 132, 133, 134, 135, 136, -1, 138, 139, + 140, -1, 142, 143, 144, -1, 146, 147, 148, 149, + 150, 151, 152, 153, 154, 155, -1, 157, -1, 159, + 160, 161, 162, -1, 164, -1, 166, -1, -1, -1, + 170, 171, 172, 173, -1, 175, 176, -1, 178, 179, + 180, -1, 182, 183, 184, 185, 186, -1, 188, 189, + 190, 191, -1, 193, 194, 195, 196, 197, 198, 199, + -1, 201, -1, 203, 204, 205, 206, 207, 208, 209, + -1, 211, -1, 213, -1, -1, 216, -1, 218, 219, + 220, 221, 222, -1, -1, 225, 226, -1, 228, -1, + -1, 231, 232, 233, -1, -1, 236, 237, 238, 239, + 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, + 250, 251, 252, -1, 254, 255, 256, 257, 258, 259, + 260, 261, 262, 263, 264, -1, 266, 267, -1, 269, + -1, 271, 272, 273, 274, 275, 276, -1, 278, 279, + -1, -1, 282, 283, 284, -1, -1, 287, 288, 289, + -1, 291, -1, 293, 294, 295, 296, 297, 298, 299, + 300, 301, 302, -1, 304, 305, 306, 307, 308, 309, + 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, + 320, 321, 322, 323, 324, 325, 326, 327, -1, 329, + 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, + 340, -1, 342, 343, -1, 345, 346, 347, 348, 349, + 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, + -1, 361, 362, 363, 364, 365, -1, 367, 368, 369, + 370, 371, -1, 373, 374, 375, 376, -1, 378, 379, + 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, + 390, 391, 392, -1, 394, 395, -1, 397, -1, 399, + 400, 401, 402, 403, -1, 405, 406, 407, -1, -1, + 410, 411, 412, 413, 414, -1, 416, 417, 418, 419, + 420, 421, 422, 423, -1, -1, 426, 427, 428, 429, + 430, -1, -1, 433, 434, 435, 436, 437, 438, 439, + -1, 441, -1, 443, 444, 445, 446, -1, -1, 449, + -1, -1, 452, 453, 454, 455, 456, 457, 458, 459, + 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, + 470, 471, 3, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 22, 23, 24, 25, 26, 27, 28, 29, -1, + 31, 32, 33, -1, -1, -1, -1, -1, -1, -1, + 41, 42, -1, 44, 45, 46, -1, 48, 49, 50, + 51, 52, -1, 54, 55, -1, 57, 58, 59, 60, + 61, 62, -1, -1, 65, 66, 67, 68, 69, -1, + 71, 72, 73, 74, 75, -1, -1, -1, 79, 80, + 81, 82, 83, -1, 85, 86, 87, -1, 89, 90, + 91, 92, 93, 94, -1, -1, 97, 98, 99, -1, + -1, -1, -1, -1, -1, -1, 107, 108, 109, 110, + 111, 112, 113, 114, 115, -1, 117, -1, 119, 120, + 121, 122, 123, 124, -1, 126, 127, 128, 129, -1, + -1, 132, 133, 134, 135, 136, -1, 138, 139, 140, + -1, 142, 143, 144, -1, 146, 147, 148, 149, 150, + 151, 152, 153, 154, 155, -1, 157, -1, 159, 160, + 161, 162, -1, 164, -1, 166, -1, -1, -1, 170, + 171, 172, 173, -1, 175, 176, -1, 178, 179, 180, + -1, 182, 183, 184, 185, 186, -1, 188, 189, 190, + 191, -1, 193, 194, 195, 196, 197, 198, 199, -1, + 201, -1, 203, 204, 205, 206, 207, 208, 209, -1, + 211, -1, 213, -1, -1, 216, -1, 218, 219, 220, + 221, 222, -1, -1, 225, 226, -1, 228, -1, -1, + 231, 232, 233, -1, -1, 236, 237, 238, 239, 240, + 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, + 251, 252, -1, 254, 255, 256, 257, 258, 259, 260, + 261, 262, 263, 264, -1, 266, 267, -1, 269, -1, + 271, 272, 273, 274, 275, 276, -1, 278, 279, -1, + -1, 282, 283, 284, -1, -1, 287, 288, 289, -1, + 291, -1, 293, 294, 295, 296, 297, 298, 299, 300, + 301, 302, -1, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, - 321, 322, 323, 324, -1, 326, 327, -1, 329, 330, + 321, 322, 323, 324, 325, 326, 327, -1, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, - 341, -1, 343, 344, 345, 346, 347, -1, 349, 350, - 351, 352, 353, -1, 355, 356, 357, 358, -1, 360, - 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, - 371, 372, -1, 374, 375, -1, 377, -1, 379, 380, - 381, 382, 383, -1, 385, 386, -1, -1, 389, 390, - 391, 392, 393, -1, 395, 396, 397, 398, 399, 400, - 401, -1, -1, 404, 405, 406, 407, 408, -1, -1, - 411, 412, 413, 414, 415, 416, 417, -1, 419, -1, - 421, 422, 423, 424, -1, -1, 427, -1, -1, 430, - 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, - 441, 442, 443, 444, 445, 446, 447, 448, 449, 3, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 18, 19, 20, 21, 22, 23, - 24, 25, -1, 27, 28, 29, -1, -1, -1, -1, - -1, -1, -1, 37, 38, -1, 40, 41, 42, -1, - 44, 45, 46, 47, 48, -1, 50, 51, -1, 53, - 54, 55, 56, 57, -1, -1, 60, 61, 62, 63, - 64, -1, 66, 67, 68, 69, 70, -1, -1, -1, - 74, 75, 76, 77, 78, -1, 80, 81, 82, -1, - 84, 85, 86, 87, 88, 89, -1, -1, 92, 93, - 94, -1, -1, -1, -1, -1, -1, -1, 102, 103, - 104, 105, 106, 107, 108, 109, 110, -1, 112, -1, - 114, 115, 116, 117, 118, 119, -1, 121, 122, 123, - 124, -1, -1, 127, 128, 129, 130, 131, -1, 133, - 134, 135, -1, 137, 138, 139, -1, 141, 142, 143, - 144, 145, 146, 147, 148, 149, -1, 151, -1, 153, - 154, 155, 156, -1, 158, -1, 160, -1, -1, -1, - 164, 165, 166, 167, -1, 169, 170, -1, 172, 173, - -1, 175, 176, 177, 178, 179, -1, 181, 182, 183, - 184, -1, 186, 187, 188, 189, 190, 191, -1, 193, - -1, 195, 196, 197, 198, 199, 200, 201, -1, 203, - -1, 205, -1, -1, 208, -1, 210, 211, 212, 213, - 214, -1, -1, 217, 218, -1, 220, -1, -1, 223, - 224, 225, -1, -1, 228, 229, 230, 231, 232, 233, - 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, - 244, -1, 246, 247, 248, 249, 250, -1, 252, 253, - -1, 255, -1, 257, 258, 259, 260, 261, 262, -1, - 264, 265, -1, -1, 268, 269, 270, -1, -1, 273, - 274, -1, 276, -1, 278, 279, 280, 281, 282, 283, - 284, 285, 286, 287, -1, 289, 290, 291, 292, 293, - 294, 295, 296, -1, 298, 299, 300, 301, 302, 303, + -1, 342, 343, -1, 345, 346, 347, 348, 349, 350, + 351, 352, 353, 354, 355, 356, 357, 358, 359, -1, + 361, 362, 363, 364, 365, -1, 367, 368, 369, 370, + 371, -1, 373, 374, 375, 376, -1, 378, 379, 380, + 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, + 391, 392, -1, 394, 395, -1, 397, -1, 399, 400, + 401, 402, 403, -1, 405, 406, 407, -1, -1, 410, + 411, 412, 413, 414, -1, 416, 417, 418, 419, 420, + 421, 422, 423, -1, -1, 426, 427, 428, 429, 430, + -1, -1, 433, 434, 435, 436, 437, 438, 439, -1, + 441, -1, 443, 444, 445, 446, -1, -1, 449, -1, + -1, 452, 453, 454, 455, 456, 457, 458, 459, 460, + 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, + 471, 3, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 22, 23, 24, 25, 26, 27, 28, 29, -1, 31, + 32, 33, -1, -1, -1, -1, -1, -1, -1, 41, + 42, -1, 44, 45, 46, -1, 48, 49, 50, 51, + 52, -1, 54, 55, -1, 57, 58, 59, 60, 61, + 62, -1, -1, 65, 66, 67, 68, 69, -1, 71, + 72, 73, 74, 75, -1, -1, -1, 79, 80, 81, + 82, 83, -1, 85, 86, 87, -1, 89, 90, 91, + 92, 93, 94, -1, -1, 97, 98, 99, -1, -1, + -1, -1, -1, -1, -1, 107, 108, 109, 110, 111, + 112, 113, 114, 115, -1, 117, -1, 119, 120, 121, + 122, 123, 124, -1, 126, 127, 128, 129, -1, -1, + 132, 133, 134, 135, 136, -1, 138, 139, 140, -1, + 142, 143, 144, -1, 146, 147, 148, 149, 150, 151, + 152, 153, 154, 155, -1, 157, -1, 159, 160, 161, + 162, -1, 164, -1, 166, -1, -1, -1, 170, 171, + 172, 173, -1, 175, 176, -1, 178, 179, 180, -1, + 182, 183, 184, 185, 186, -1, 188, 189, 190, 191, + -1, 193, 194, 195, 196, 197, 198, 199, -1, 201, + -1, 203, 204, 205, 206, 207, 208, 209, -1, 211, + -1, 213, -1, -1, 216, -1, 218, 219, 220, 221, + 222, -1, -1, 225, 226, -1, 228, -1, -1, 231, + 232, 233, -1, -1, 236, 237, 238, 239, 240, 241, + 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, + 252, -1, 254, 255, 256, 257, 258, 259, 260, 261, + 262, 263, 264, -1, 266, 267, -1, 269, -1, 271, + 272, 273, 274, 275, 276, -1, 278, 279, -1, -1, + 282, 283, 284, -1, -1, 287, 288, 289, -1, 291, + -1, 293, 294, 295, 296, 297, 298, 299, 300, 301, + 302, -1, 304, 305, 306, 307, 308, 309, 310, 311, + -1, 313, 314, 315, 316, 317, 318, 319, 320, 321, + 322, 323, 324, 325, 326, 327, -1, 329, 330, 331, + 332, 333, 334, 335, 336, 337, 338, 339, 340, -1, + 342, 343, -1, 345, 346, 347, 348, 349, 350, 351, + 352, 353, 354, 355, 356, 357, 358, 359, -1, 361, + 362, 363, 364, 365, -1, 367, 368, 369, 370, 371, + -1, 373, 374, 375, 376, -1, 378, 379, 380, 381, + 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, + 392, -1, 394, 395, -1, 397, -1, 399, 400, 401, + 402, 403, -1, 405, 406, 407, -1, -1, 410, 411, + 412, 413, 414, -1, 416, 417, 418, 419, 420, 421, + 422, 423, -1, -1, 426, 427, 428, 429, 430, -1, + -1, 433, 434, 435, 436, 437, 438, 439, -1, 441, + -1, 443, 444, 445, 446, -1, -1, 449, -1, -1, + 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, + 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, + 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, + 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, + 33, -1, -1, -1, -1, -1, -1, -1, 41, 42, + -1, 44, 45, 46, -1, 48, 49, 50, 51, 52, + -1, 54, 55, -1, 57, 58, 59, 60, 61, 62, + -1, -1, 65, 66, 67, 68, 69, -1, 71, 72, + 73, 74, 75, -1, -1, -1, 79, 80, 81, 82, + 83, -1, 85, 86, 87, -1, 89, 90, 91, 92, + 93, 94, -1, -1, 97, 98, 99, -1, -1, -1, + -1, -1, -1, -1, 107, 108, 109, 110, 111, 112, + 113, 114, 115, -1, 117, -1, 119, 120, 121, 122, + 123, 124, -1, 126, 127, 128, 129, -1, -1, 132, + 133, 134, 135, 136, -1, 138, 139, 140, -1, 142, + 143, 144, -1, 146, 147, 148, 149, 150, 151, 152, + 153, 154, 155, -1, 157, -1, 159, 160, 161, 162, + -1, 164, -1, 166, -1, -1, -1, 170, 171, 172, + 173, -1, 175, 176, -1, 178, 179, 180, -1, 182, + 183, 184, 185, 186, -1, 188, 189, 190, 191, -1, + 193, 194, 195, 196, 197, 198, 199, -1, 201, -1, + 203, 204, 205, 206, 207, 208, 209, -1, 211, -1, + 213, -1, -1, 216, -1, 218, 219, 220, 221, 222, + -1, -1, 225, 226, -1, 228, -1, -1, 231, 232, + 233, -1, -1, 236, 237, 238, 239, 240, 241, 242, + 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, + -1, 254, 255, 256, 257, 258, 259, 260, 261, 262, + 263, 264, -1, 266, 267, -1, 269, -1, 271, 272, + 273, 274, 275, 276, -1, 278, 279, -1, -1, 282, + 283, 284, -1, -1, 287, 288, 289, -1, 291, -1, + 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, + -1, 304, 305, 306, 307, 308, 309, 310, 311, -1, + 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, + 323, 324, 325, 326, 327, -1, 329, 330, 331, 332, + 333, 334, 335, 336, 337, 338, 339, 340, -1, 342, + 343, -1, 345, 346, 347, 348, 349, 350, 351, 352, + 353, 354, 355, 356, 357, 358, 359, -1, 361, 362, + 363, 364, 365, -1, 367, 368, 369, 370, 371, -1, + 373, 374, 375, 376, -1, 378, 379, 380, 381, 382, + 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, + -1, 394, 395, -1, 397, -1, 399, 400, 401, 402, + 403, -1, 405, 406, 407, -1, -1, 410, 411, 412, + 413, 414, -1, 416, 417, 418, 419, 420, 421, 422, + 423, -1, -1, 426, 427, 428, 429, 430, -1, -1, + 433, 434, 435, 436, 437, 438, 439, -1, 441, -1, + 443, 444, 445, 446, -1, -1, 449, -1, -1, 452, + 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, + 463, 464, 465, 466, 467, 468, 469, 470, 471, 3, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, + 24, 25, 26, 27, 28, 29, -1, 31, 32, 33, + -1, -1, -1, -1, -1, -1, -1, 41, 42, -1, + 44, 45, 46, -1, 48, 49, 50, 51, 52, -1, + 54, 55, -1, 57, 58, 59, 60, 61, 62, -1, + -1, 65, 66, 67, 68, 69, -1, 71, 72, 73, + 74, 75, -1, -1, -1, 79, 80, 81, 82, 83, + -1, 85, 86, 87, -1, 89, 90, 91, 92, 93, + 94, -1, -1, 97, 98, 99, -1, -1, -1, -1, + -1, -1, -1, 107, 108, 109, 110, 111, 112, 113, + 114, 115, -1, 117, -1, 119, 120, 121, 122, 123, + 124, -1, 126, 127, 128, 129, -1, -1, 132, 133, + 134, 135, 136, -1, 138, 139, 140, -1, 142, 143, + 144, -1, 146, 147, 148, 149, 150, 151, 152, 153, + 154, 155, -1, 157, -1, 159, 160, 161, 162, -1, + 164, -1, 166, -1, -1, -1, 170, 171, 172, 173, + -1, 175, 176, -1, 178, 179, 180, -1, 182, 183, + 184, 185, 186, -1, 188, 189, 190, 191, -1, 193, + 194, 195, 196, 197, 198, 199, -1, 201, -1, 203, + 204, 205, 206, 207, 208, 209, -1, 211, -1, 213, + -1, -1, 216, -1, 218, 219, 220, 221, 222, -1, + -1, 225, 226, -1, 228, -1, -1, 231, 232, 233, + -1, -1, 236, 237, 238, 239, 240, 241, 242, 243, + 244, 245, 246, 247, 248, 249, 250, 251, 252, -1, + 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, + 264, -1, 266, 267, -1, 269, -1, 271, 272, 273, + 274, 275, 276, -1, 278, 279, -1, -1, 282, 283, + 284, -1, -1, 287, 288, 289, -1, 291, -1, 293, + 294, 295, 296, 297, 298, 299, 300, 301, 302, -1, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, - 324, -1, 326, 327, -1, 329, 330, 331, 332, 333, - 334, 335, 336, 337, 338, 339, 340, 341, -1, 343, - 344, 345, 346, 347, -1, 349, 350, 351, 352, 353, - -1, 355, 356, 357, 358, -1, 360, 361, 362, 363, - 364, 365, 366, 367, 368, 369, 370, 371, 372, -1, - 374, 375, -1, 377, -1, 379, 380, 381, 382, 383, - -1, 385, 386, -1, -1, 389, 390, 391, 392, 393, - -1, 395, 396, 397, 398, 399, 400, 401, -1, -1, - 404, 405, 406, 407, 408, -1, -1, 411, 412, 413, - 414, 415, 416, 417, -1, 419, -1, 421, 422, 423, - 424, -1, -1, 427, -1, -1, 430, 431, 432, 433, - 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, - 444, 445, 446, 447, 448, 449, 3, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 18, 19, 20, 21, 22, 23, 24, 25, -1, - 27, 28, 29, -1, -1, -1, -1, -1, -1, -1, - 37, 38, -1, 40, 41, 42, -1, 44, 45, 46, - 47, 48, -1, 50, 51, -1, 53, 54, 55, 56, - 57, -1, -1, 60, 61, 62, 63, 64, -1, 66, - 67, 68, 69, 70, -1, -1, -1, 74, 75, 76, - 77, 78, -1, 80, 81, 82, -1, 84, 85, 86, - 87, 88, 89, -1, -1, 92, 93, 94, -1, -1, - -1, -1, -1, -1, -1, 102, 103, 104, 105, 106, - 107, 108, 109, 110, -1, 112, -1, 114, 115, 116, - 117, 118, 119, -1, 121, 122, 123, 124, -1, -1, - 127, 128, 129, 130, 131, -1, 133, 134, 135, -1, - 137, 138, 139, -1, 141, 142, 143, 144, 145, 146, - 147, 148, 149, -1, 151, -1, 153, 154, 155, 156, - -1, 158, -1, 160, -1, -1, -1, 164, 165, 166, - 167, -1, 169, 170, -1, 172, 173, -1, 175, 176, - 177, 178, 179, -1, 181, 182, 183, 184, -1, 186, - 187, 188, 189, 190, 191, -1, 193, -1, 195, 196, - 197, 198, 199, 200, 201, -1, 203, -1, 205, -1, - -1, 208, -1, 210, 211, 212, 213, 214, -1, -1, - 217, 218, -1, 220, -1, -1, 223, 224, 225, -1, - -1, 228, 229, 230, 231, 232, 233, 234, 235, 236, - 237, 238, 239, 240, 241, 242, 243, 244, -1, 246, - 247, 248, 249, 250, -1, 252, 253, -1, 255, -1, - 257, 258, 259, 260, 261, 262, -1, 264, 265, -1, - -1, 268, 269, 270, -1, -1, 273, 274, -1, 276, - -1, 278, 279, 280, 281, 282, 283, 284, 285, 286, - 287, -1, 289, 290, 291, 292, 293, 294, 295, 296, - -1, 298, 299, 300, 301, 302, 303, 304, 305, 306, + 324, 325, 326, 327, -1, 329, 330, 331, 332, 333, + 334, 335, 336, 337, 338, 339, 340, -1, 342, 343, + -1, 345, 346, 347, 348, 349, 350, 351, 352, 353, + 354, 355, 356, 357, 358, 359, -1, 361, 362, 363, + 364, 365, -1, 367, 368, 369, 370, 371, -1, 373, + 374, 375, 376, -1, 378, 379, 380, 381, 382, 383, + 384, 385, 386, 387, 388, 389, 390, 391, 392, -1, + 394, 395, -1, 397, -1, 399, 400, 401, 402, 403, + -1, 405, 406, 407, -1, -1, 410, 411, 412, 413, + 414, -1, 416, 417, 418, 419, 420, 421, 422, 423, + -1, -1, 426, 427, 428, 429, 430, -1, -1, 433, + 434, 435, 436, 437, 438, 439, -1, 441, -1, 443, + 444, 445, 446, -1, -1, 449, -1, -1, 452, 453, + 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, + 464, 465, 466, 467, 468, 469, 470, 471, 3, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 22, 23, 24, + 25, 26, 27, 28, 29, -1, 31, 32, 33, -1, + -1, -1, -1, -1, -1, -1, 41, 42, -1, 44, + 45, 46, -1, 48, 49, 50, 51, 52, -1, 54, + 55, -1, 57, 58, 59, 60, 61, 62, -1, -1, + 65, 66, 67, 68, 69, -1, 71, 72, 73, 74, + 75, -1, -1, -1, 79, 80, 81, 82, 83, -1, + 85, 86, 87, -1, 89, 90, 91, 92, 93, 94, + -1, -1, 97, 98, 99, -1, -1, -1, -1, -1, + -1, -1, 107, 108, 109, 110, 111, 112, 113, 114, + 115, -1, 117, -1, 119, 120, 121, 122, 123, 124, + -1, 126, 127, 128, 129, -1, -1, 132, 133, 134, + 135, 136, -1, 138, 139, 140, -1, 142, 143, 144, + -1, 146, 147, 148, 149, 150, 151, 152, 153, 154, + 155, -1, 157, -1, 159, 160, 161, 162, -1, 164, + -1, 166, -1, -1, -1, 170, 171, 172, 173, -1, + 175, 176, -1, 178, 179, 180, -1, 182, 183, 184, + 185, 186, -1, 188, 189, 190, 191, -1, 193, 194, + 195, 196, 197, 198, 199, -1, 201, -1, 203, 204, + 205, 206, 207, 208, 209, -1, 211, -1, 213, -1, + -1, 216, -1, 218, 219, 220, 221, 222, -1, -1, + 225, 226, -1, 228, -1, -1, 231, 232, 233, -1, + -1, 236, 237, 238, 239, 240, 241, 242, 243, 244, + 245, 246, 247, 248, 249, 250, 251, 252, -1, 254, + 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, + -1, 266, 267, -1, 269, -1, 271, 272, 273, 274, + 275, 276, -1, 278, 279, -1, -1, 282, 283, 284, + -1, -1, 287, 288, 289, -1, 291, -1, 293, 294, + 295, 296, 297, 298, 299, 300, 301, 302, -1, 304, + 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, + 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, + 325, 326, 327, -1, 329, 330, 331, 332, 333, 334, + 335, 336, 337, 338, 339, 340, -1, 342, 343, -1, + 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, + 355, 356, 357, 358, 359, -1, 361, 362, 363, 364, + 365, -1, 367, 368, 369, 370, 371, -1, 373, 374, + 375, 376, -1, 378, 379, 380, 381, 382, 383, 384, + 385, 386, 387, 388, 389, 390, 391, 392, -1, 394, + 395, -1, 397, -1, 399, 400, 401, 402, 403, -1, + 405, 406, 407, -1, -1, 410, 411, 412, 413, 414, + -1, 416, 417, 418, 419, 420, 421, 422, 423, -1, + -1, 426, 427, 428, 429, 430, -1, -1, 433, 434, + 435, 436, 437, 438, 439, -1, 441, -1, 443, 444, + 445, 446, -1, -1, 449, -1, -1, 452, 453, 454, + 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, + 465, 466, 467, 468, 469, 470, 471, 3, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 22, 23, 24, 25, + 26, 27, 28, 29, -1, 31, 32, 33, -1, -1, + -1, -1, -1, -1, -1, 41, 42, -1, 44, 45, + 46, -1, 48, 49, 50, 51, 52, -1, 54, 55, + -1, 57, 58, 59, 60, 61, 62, -1, -1, 65, + 66, 67, 68, 69, -1, 71, 72, 73, 74, 75, + -1, -1, -1, 79, 80, 81, 82, 83, -1, 85, + 86, 87, -1, 89, 90, 91, 92, 93, 94, -1, + -1, 97, 98, 99, -1, -1, -1, -1, -1, -1, + -1, 107, 108, 109, 110, 111, 112, 113, 114, 115, + -1, 117, -1, 119, 120, 121, 122, 123, 124, -1, + 126, 127, 128, 129, -1, -1, 132, 133, 134, 135, + 136, -1, 138, 139, 140, -1, 142, 143, 144, -1, + 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, + -1, 157, -1, 159, 160, 161, 162, -1, 164, -1, + 166, -1, -1, -1, 170, 171, 172, 173, -1, 175, + 176, -1, 178, 179, 180, -1, 182, 183, 184, 185, + 186, -1, 188, 189, 190, 191, -1, 193, 194, 195, + 196, 197, 198, 199, -1, 201, -1, 203, 204, 205, + 206, 207, 208, 209, -1, 211, -1, 213, -1, -1, + 216, -1, 218, 219, 220, 221, 222, -1, -1, 225, + 226, -1, 228, -1, -1, 231, 232, 233, -1, -1, + 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, + 246, 247, 248, 249, 250, 251, 252, -1, 254, 255, + 256, 257, 258, 259, 260, 261, 262, 263, 264, -1, + 266, 267, -1, 269, -1, 271, 272, 273, 274, 275, + 276, -1, 278, 279, -1, -1, 282, 283, 284, -1, + -1, 287, 288, 289, -1, 291, -1, 293, 294, 295, + 296, 297, 298, 299, 300, 301, 302, -1, 304, 305, + 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, + 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, + 326, 327, -1, 329, 330, 331, 332, 333, 334, 335, + 336, 337, 338, 339, 340, -1, 342, 343, -1, 345, + 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, + 356, 357, 358, 359, -1, 361, 362, 363, 364, 365, + -1, 367, 368, 369, 370, 371, -1, 373, 374, 375, + 376, -1, 378, 379, 380, 381, 382, 383, 384, 385, + 386, 387, 388, 389, 390, 391, 392, -1, 394, 395, + -1, 397, -1, 399, 400, 401, 402, 403, -1, 405, + 406, 407, -1, -1, 410, 411, 412, 413, 414, -1, + 416, 417, 418, 419, 420, 421, 422, 423, -1, -1, + 426, 427, 428, 429, 430, -1, -1, 433, 434, 435, + 436, 437, 438, 439, -1, 441, -1, 443, 444, 445, + 446, -1, -1, 449, -1, -1, 452, 453, 454, 455, + 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, + 466, 467, 468, 469, 470, 471, 3, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, + 27, 28, 29, -1, 31, 32, 33, -1, -1, -1, + -1, -1, -1, -1, 41, 42, -1, 44, 45, 46, + -1, 48, 49, 50, 51, 52, -1, 54, 55, -1, + 57, 58, 59, 60, 61, 62, -1, -1, 65, 66, + 67, 68, 69, -1, 71, 72, 73, 74, 75, -1, + -1, -1, 79, 80, 81, 82, 83, -1, 85, 86, + 87, -1, 89, 90, 91, 92, 93, 94, -1, -1, + 97, 98, 99, -1, -1, -1, -1, -1, -1, -1, + 107, 108, 109, 110, 111, 112, 113, 114, 115, -1, + 117, -1, 119, 120, 121, 122, 123, 124, -1, 126, + 127, 128, 129, -1, -1, 132, 133, 134, 135, 136, + -1, 138, 139, 140, -1, 142, 143, 144, -1, 146, + 147, 148, 149, 150, 151, 152, 153, 154, 155, -1, + 157, -1, 159, 160, 161, 162, -1, 164, -1, 166, + -1, -1, -1, 170, 171, 172, 173, -1, 175, 176, + -1, 178, 179, 180, -1, 182, 183, 184, 185, 186, + -1, 188, 189, 190, 191, -1, 193, 194, 195, 196, + 197, 198, 199, -1, 201, -1, 203, 204, 205, 206, + 207, 208, 209, -1, 211, -1, 213, -1, -1, 216, + -1, 218, 219, 220, 221, 222, -1, -1, 225, 226, + -1, 228, -1, -1, 231, 232, 233, -1, -1, 236, + 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, + 247, 248, 249, 250, 251, 252, -1, 254, 255, 256, + 257, 258, 259, 260, 261, 262, 263, 264, -1, 266, + 267, -1, 269, -1, 271, 272, 273, 274, 275, 276, + -1, 278, 279, -1, -1, 282, 283, 284, -1, -1, + 287, 288, 289, -1, 291, -1, 293, 294, 295, 296, + 297, 298, 299, 300, 301, 302, -1, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, - 317, 318, 319, 320, 321, 322, 323, 324, -1, 326, + 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, -1, 329, 330, 331, 332, 333, 334, 335, 336, - 337, 338, 339, 340, 341, -1, 343, 344, 345, 346, - 347, -1, 349, 350, 351, 352, 353, -1, 355, 356, - 357, 358, -1, 360, 361, 362, 363, 364, 365, 366, - 367, 368, 369, 370, 371, 372, -1, 374, 375, -1, - 377, -1, 379, 380, 381, 382, 383, -1, 385, 386, - -1, -1, 389, 390, 391, 392, 393, -1, 395, 396, - 397, 398, 399, 400, 401, -1, -1, 404, 405, 406, - 407, 408, -1, -1, 411, 412, 413, 414, 415, 416, - 417, -1, 419, -1, 421, 422, 423, 424, -1, -1, - 427, -1, -1, 430, 431, 432, 433, 434, 435, 436, - 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, - 447, 448, 449, 3, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 18, 19, - 20, 21, 22, 23, 24, 25, -1, 27, 28, 29, - -1, -1, -1, -1, -1, -1, -1, 37, 38, -1, - 40, 41, 42, -1, 44, 45, 46, 47, 48, -1, - 50, 51, -1, 53, 54, 55, 56, 57, -1, -1, - 60, 61, 62, 63, 64, -1, 66, 67, 68, 69, - 70, -1, -1, -1, 74, 75, 76, 77, 78, -1, - 80, 81, 82, -1, 84, 85, 86, 87, 88, 89, - -1, -1, 92, 93, 94, -1, -1, -1, -1, -1, - -1, -1, 102, 103, 104, 105, 106, 107, 108, 109, - 110, -1, 112, -1, 114, 115, 116, 117, 118, 119, - -1, 121, 122, 123, 124, -1, -1, 127, 128, 129, - 130, 131, -1, 133, 134, 135, -1, 137, 138, 139, - -1, 141, 142, 143, 144, 145, 146, 147, 148, 149, - -1, 151, -1, 153, 154, 155, 156, -1, 158, -1, - 160, -1, -1, -1, 164, 165, 166, 167, -1, 169, - 170, -1, 172, 173, -1, 175, 176, 177, 178, 179, - -1, 181, 182, 183, 184, -1, 186, 187, 188, 189, - 190, 191, -1, 193, -1, 195, 196, 197, 198, 199, - 200, 201, -1, 203, -1, 205, -1, -1, 208, -1, - 210, 211, 212, 213, 214, -1, -1, 217, 218, -1, - 220, -1, -1, 223, 224, 225, -1, -1, 228, 229, - 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, - 240, 241, 242, 243, 244, -1, 246, 247, 248, 249, - 250, -1, 252, 253, -1, 255, -1, 257, 258, 259, - 260, 261, 262, -1, 264, 265, -1, -1, 268, 269, - 270, -1, -1, 273, 274, -1, 276, -1, 278, 279, - 280, 281, 282, 283, 284, 285, 286, 287, -1, 289, - 290, 291, 292, 293, 294, 295, 296, -1, 298, 299, - 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, + 337, 338, 339, 340, -1, 342, 343, -1, 345, 346, + 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, + 357, 358, 359, -1, 361, 362, 363, 364, 365, -1, + 367, 368, 369, 370, 371, -1, 373, 374, 375, 376, + -1, 378, 379, 380, 381, 382, 383, 384, 385, 386, + 387, 388, 389, 390, 391, 392, -1, 394, 395, -1, + 397, -1, 399, 400, 401, 402, 403, -1, 405, 406, + 407, -1, -1, 410, 411, 412, 413, 414, -1, 416, + 417, 418, 419, 420, 421, 422, 423, -1, -1, 426, + 427, 428, 429, 430, -1, -1, 433, 434, 435, 436, + 437, 438, 439, -1, 441, -1, 443, 444, 445, 446, + -1, -1, 449, -1, -1, 452, 453, 454, 455, 456, + 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, + 467, 468, 469, 470, 471, 3, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, + 28, 29, -1, 31, 32, 33, -1, -1, -1, -1, + -1, -1, -1, 41, 42, -1, 44, 45, 46, -1, + 48, 49, 50, 51, 52, -1, 54, 55, -1, 57, + 58, 59, 60, 61, 62, -1, -1, 65, 66, 67, + 68, 69, -1, 71, 72, 73, 74, 75, -1, -1, + -1, 79, 80, 81, 82, 83, -1, 85, 86, 87, + -1, 89, 90, 91, 92, 93, 94, -1, -1, 97, + 98, 99, -1, -1, -1, -1, -1, -1, -1, 107, + 108, 109, 110, 111, 112, 113, 114, 115, -1, 117, + -1, 119, 120, 121, 122, 123, 124, -1, 126, 127, + 128, 129, -1, -1, 132, 133, 134, 135, 136, -1, + 138, 139, 140, -1, 142, 143, 144, -1, 146, 147, + 148, 149, 150, 151, 152, 153, 154, 155, -1, 157, + -1, 159, 160, 161, 162, -1, 164, -1, 166, -1, + -1, -1, 170, 171, 172, 173, -1, 175, 176, -1, + 178, 179, 180, -1, 182, 183, 184, 185, 186, -1, + 188, 189, 190, 191, -1, 193, 194, 195, 196, 197, + 198, 199, -1, 201, -1, 203, 204, 205, 206, 207, + 208, 209, -1, 211, -1, 213, -1, -1, 216, -1, + 218, 219, 220, 221, 222, -1, -1, 225, 226, -1, + 228, -1, -1, 231, 232, 233, -1, -1, 236, 237, + 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, + 248, 249, 250, 251, 252, -1, 254, 255, 256, 257, + 258, 259, 260, 261, 262, 263, 264, -1, 266, 267, + -1, 269, -1, 271, 272, 273, 274, 275, 276, -1, + 278, 279, -1, -1, 282, 283, 284, -1, -1, 287, + 288, 289, -1, 291, -1, 293, 294, 295, 296, 297, + 298, 299, 300, 301, 302, -1, 304, 305, 306, 307, + 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, + 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, + -1, 329, 330, 331, 332, 333, 334, 335, 336, 337, + 338, 339, 340, -1, 342, 343, -1, 345, 346, 347, + 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, + 358, 359, -1, 361, 362, 363, 364, 365, -1, 367, + 368, 369, 370, 371, -1, 373, 374, 375, 376, -1, + 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, + 388, 389, 390, 391, 392, -1, 394, 395, -1, 397, + -1, 399, 400, 401, 402, 403, -1, 405, 406, 407, + -1, -1, 410, 411, 412, 413, 414, -1, 416, 417, + 418, 419, 420, 421, 422, 423, -1, -1, 426, 427, + 428, 429, 430, -1, -1, 433, 434, 435, 436, 437, + 438, 439, -1, 441, -1, 443, 444, 445, 446, -1, + -1, 449, -1, -1, 452, 453, 454, 455, 456, 457, + 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, + 468, 469, 470, 471, 3, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, + 29, -1, 31, 32, 33, -1, -1, -1, -1, -1, + -1, -1, 41, 42, -1, 44, 45, 46, -1, 48, + 49, 50, 51, 52, -1, 54, 55, -1, 57, 58, + 59, 60, 61, 62, -1, -1, 65, 66, 67, 68, + 69, -1, 71, 72, 73, 74, 75, -1, -1, -1, + 79, 80, 81, 82, 83, -1, 85, 86, 87, -1, + 89, 90, 91, 92, 93, 94, -1, -1, 97, 98, + 99, -1, -1, -1, -1, -1, -1, -1, 107, 108, + 109, 110, 111, 112, 113, 114, 115, -1, 117, -1, + 119, 120, 121, 122, 123, 124, -1, 126, 127, 128, + 129, -1, -1, 132, 133, 134, 135, 136, -1, 138, + 139, 140, -1, 142, 143, 144, -1, 146, 147, 148, + 149, 150, 151, 152, 153, 154, 155, -1, 157, -1, + 159, 160, 161, 162, -1, 164, -1, 166, -1, -1, + -1, 170, 171, 172, 173, -1, 175, 176, -1, 178, + 179, 180, -1, 182, 183, 184, 185, 186, -1, 188, + 189, 190, 191, -1, 193, 194, 195, 196, 197, 198, + 199, -1, 201, -1, 203, 204, 205, 206, 207, 208, + 209, -1, 211, -1, 213, -1, -1, 216, -1, 218, + 219, 220, 221, 222, -1, -1, 225, 226, -1, 228, + -1, -1, 231, 232, 233, -1, -1, 236, 237, 238, + 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, + 249, 250, 251, 252, -1, 254, 255, 256, 257, 258, + 259, 260, 261, 262, 263, 264, -1, 266, 267, -1, + 269, -1, 271, 272, 273, 274, 275, 276, -1, 278, + 279, -1, -1, 282, 283, 284, -1, -1, 287, 288, + 289, -1, 291, -1, 293, 294, 295, 296, 297, 298, + 299, 300, 301, 302, -1, 304, 305, 306, 307, 308, + 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, + 319, 320, 321, 322, 323, 324, 325, 326, 327, -1, + 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, + 339, 340, -1, 342, 343, -1, 345, 346, 347, 348, + 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, + 359, -1, 361, 362, 363, 364, 365, -1, 367, 368, + 369, 370, 371, -1, 373, 374, 375, 376, -1, 378, + 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, + 389, 390, 391, 392, -1, 394, 395, -1, 397, -1, + 399, 400, 401, 402, 403, -1, 405, 406, 407, -1, + -1, 410, 411, 412, 413, 414, -1, 416, 417, 418, + 419, 420, 421, 422, 423, -1, -1, 426, 427, 428, + 429, 430, -1, -1, 433, 434, 435, 436, 437, 438, + 439, -1, 441, -1, 443, 444, 445, 446, -1, -1, + 449, -1, -1, 452, 453, 454, 455, 456, 457, 458, + 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, + 469, 470, 471, 3, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, + -1, 31, 32, 33, -1, -1, -1, -1, -1, -1, + -1, 41, 42, -1, 44, 45, 46, -1, 48, 49, + 50, 51, 52, -1, 54, 55, -1, 57, 58, 59, + 60, 61, 62, -1, -1, 65, 66, 67, 68, 69, + -1, 71, 72, 73, 74, 75, -1, -1, -1, 79, + 80, 81, 82, 83, -1, 85, 86, 87, -1, 89, + 90, 91, 92, 93, 94, -1, -1, 97, 98, 99, + -1, -1, -1, -1, -1, -1, -1, 107, 108, 109, + 110, 111, 112, 113, 114, 115, -1, 117, -1, 119, + 120, 121, 122, 123, 124, -1, 126, 127, 128, 129, + -1, -1, 132, 133, 134, 135, 136, -1, 138, 139, + 140, -1, 142, 143, 144, -1, 146, 147, 148, 149, + 150, 151, 152, 153, 154, 155, -1, 157, -1, 159, + 160, 161, 162, -1, 164, -1, 166, -1, -1, -1, + 170, 171, 172, 173, -1, 175, 176, -1, 178, 179, + 180, -1, 182, 183, 184, 185, 186, -1, 188, 189, + 190, 191, -1, 193, 194, 195, 196, 197, 198, 199, + -1, 201, -1, 203, 204, 205, 206, 207, 208, 209, + -1, 211, -1, 213, -1, -1, 216, -1, 218, 219, + 220, 221, 222, -1, -1, 225, 226, -1, 228, -1, + -1, 231, 232, 233, -1, -1, 236, 237, 238, 239, + 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, + 250, 251, 252, -1, 254, 255, 256, 257, 258, 259, + 260, 261, 262, 263, 264, -1, 266, 267, -1, 269, + -1, 271, 272, 273, 274, 275, 276, -1, 278, 279, + -1, -1, 282, 283, 284, -1, -1, 287, 288, 289, + -1, 291, -1, 293, 294, 295, 296, 297, 298, 299, + 300, 301, 302, -1, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, - 320, 321, 322, 323, 324, -1, 326, 327, -1, 329, + 320, 321, 322, 323, 324, 325, 326, 327, -1, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, - 340, 341, -1, 343, 344, 345, 346, 347, -1, 349, - 350, 351, 352, 353, -1, 355, 356, 357, 358, -1, - 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, - 370, 371, 372, -1, 374, 375, -1, 377, -1, 379, - 380, 381, 382, 383, -1, 385, 386, -1, -1, 389, - 390, 391, 392, 393, -1, 395, 396, 397, 398, 399, - 400, 401, -1, -1, 404, 405, 406, 407, 408, -1, - -1, 411, 412, 413, 414, 415, 416, 417, -1, 419, - -1, 421, 422, 423, 424, -1, -1, 427, -1, -1, - 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, - 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, + 340, -1, 342, 343, -1, 345, 346, 347, 348, 349, + 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, + -1, 361, 362, 363, 364, 365, -1, 367, 368, 369, + 370, 371, -1, 373, 374, 375, 376, -1, 378, 379, + 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, + 390, 391, 392, -1, 394, 395, -1, 397, -1, 399, + 400, 401, 402, 403, -1, 405, 406, 407, -1, -1, + 410, 411, 412, 413, 414, -1, 416, 417, 418, 419, + 420, 421, 422, 423, -1, -1, 426, 427, 428, 429, + 430, -1, -1, 433, 434, 435, 436, 437, 438, 439, + -1, 441, -1, 443, 444, 445, 446, -1, -1, 449, + -1, -1, 452, 453, 454, 455, 456, 457, 458, 459, + 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, + 470, 471, 3, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 22, 23, 24, 25, 26, 27, 28, 29, -1, + 31, 32, 33, -1, -1, -1, -1, -1, -1, -1, + 41, 42, -1, 44, 45, 46, -1, 48, 49, 50, + 51, 52, -1, 54, 55, -1, 57, 58, 59, 60, + 61, 62, -1, -1, 65, 66, 67, 68, 69, -1, + 71, 72, 73, 74, 75, -1, -1, -1, 79, 80, + 81, 82, 83, -1, 85, 86, 87, -1, 89, 90, + 91, 92, 93, 94, -1, -1, 97, 98, 99, -1, + -1, -1, -1, -1, -1, -1, 107, 108, 109, 110, + 111, 112, 113, 114, 115, -1, 117, -1, 119, 120, + 121, 122, 123, 124, -1, 126, 127, 128, 129, -1, + -1, 132, 133, 134, 135, 136, -1, 138, 139, 140, + -1, 142, 143, 144, -1, 146, 147, 148, 149, 150, + 151, 152, 153, 154, 155, -1, 157, -1, 159, 160, + 161, 162, -1, 164, -1, 166, -1, -1, -1, 170, + 171, 172, 173, -1, 175, 176, -1, 178, 179, 180, + -1, 182, 183, 184, 185, 186, -1, 188, 189, 190, + 191, -1, 193, 194, 195, 196, 197, 198, 199, -1, + 201, -1, 203, 204, 205, 206, 207, 208, 209, -1, + 211, -1, 213, -1, -1, 216, -1, 218, 219, 220, + 221, 222, -1, -1, 225, 226, -1, 228, -1, -1, + 231, 232, 233, -1, -1, 236, 237, 238, 239, 240, + 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, + 251, 252, -1, 254, 255, 256, 257, 258, 259, 260, + 261, 262, 263, 264, -1, 266, 267, -1, 269, -1, + 271, 272, 273, 274, 275, 276, -1, 278, 279, -1, + -1, 282, 283, 284, -1, -1, 287, 288, 289, -1, + 291, -1, 293, 294, 295, 296, 297, 298, 299, 300, + 301, 302, -1, 304, 305, 306, 307, 308, 309, 310, + 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, + 321, 322, 323, 324, 325, 326, 327, -1, 329, 330, + 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, + -1, 342, 343, -1, 345, 346, 347, 348, 349, 350, + 351, 352, 353, 354, 355, 356, 357, 358, 359, -1, + 361, 362, 363, 364, 365, -1, 367, 368, 369, 370, + 371, -1, 373, 374, 375, 376, -1, 378, 379, 380, + 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, + 391, 392, -1, 394, 395, -1, 397, -1, 399, 400, + 401, 402, 403, -1, 405, 406, 407, -1, -1, 410, + 411, 412, 413, 414, -1, 416, 417, 418, 419, 420, + 421, 422, 423, -1, -1, 426, 427, 428, 429, 430, + -1, -1, 433, 434, 435, 436, 437, 438, 439, -1, + 441, -1, 443, 444, 445, 446, -1, -1, 449, -1, + -1, 452, 453, 454, 455, 456, 457, 458, 459, 460, + 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, + 471, 3, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 22, 23, 24, 25, 26, 27, 28, 29, -1, 31, + 32, 33, -1, -1, -1, -1, -1, -1, -1, 41, + 42, -1, 44, 45, 46, -1, 48, 49, 50, 51, + 52, -1, 54, 55, -1, 57, 58, 59, 60, 61, + 62, -1, -1, 65, 66, 67, 68, 69, -1, 71, + 72, 73, 74, 75, -1, -1, -1, 79, 80, 81, + 82, 83, -1, 85, 86, 87, -1, 89, 90, 91, + 92, 93, 94, -1, -1, 97, 98, 99, -1, -1, + -1, -1, -1, -1, -1, 107, 108, 109, 110, 111, + 112, 113, 114, 115, -1, 117, -1, 119, 120, 121, + 122, 123, 124, -1, 126, 127, 128, 129, -1, -1, + 132, 133, 134, 135, 136, -1, 138, 139, 140, -1, + 142, 143, 144, -1, 146, 147, 148, 149, 150, 151, + 152, 153, 154, 155, -1, 157, -1, 159, 160, 161, + 162, -1, 164, -1, 166, -1, -1, -1, 170, 171, + 172, 173, -1, 175, 176, -1, 178, 179, 180, -1, + 182, 183, 184, 185, 186, -1, 188, 189, 190, 191, + -1, 193, 194, 195, 196, 197, 198, 199, -1, 201, + -1, 203, 204, 205, 206, 207, 208, 209, -1, 211, + -1, 213, -1, -1, 216, -1, 218, 219, 220, 221, + 222, -1, -1, 225, 226, -1, 228, -1, -1, 231, + 232, 233, -1, -1, 236, 237, 238, 239, 240, 241, + 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, + 252, -1, 254, 255, 256, 257, 258, 259, 260, 261, + 262, 263, 264, -1, 266, 267, -1, 269, -1, 271, + 272, 273, 274, 275, 276, -1, 278, 279, -1, -1, + 282, 283, 284, -1, -1, 287, 288, 289, -1, 291, + -1, 293, 294, 295, 296, 297, 298, 299, 300, 301, + 302, -1, 304, 305, 306, 307, 308, 309, 310, 311, + -1, 313, 314, 315, 316, 317, 318, 319, 320, 321, + 322, 323, 324, 325, 326, 327, -1, 329, 330, 331, + 332, 333, 334, 335, 336, 337, 338, 339, 340, -1, + 342, 343, -1, 345, 346, 347, 348, 349, 350, 351, + 352, 353, 354, 355, 356, 357, 358, 359, -1, 361, + 362, 363, 364, 365, -1, 367, 368, 369, 370, 371, + -1, 373, 374, 375, 376, -1, 378, 379, 380, 381, + 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, + 392, -1, 394, 395, -1, 397, -1, 399, 400, 401, + 402, 403, -1, 405, 406, 407, -1, -1, 410, 411, + 412, 413, 414, -1, 416, 417, 418, 419, 420, 421, + 422, 423, -1, -1, 426, 427, 428, 429, 430, -1, + -1, 433, 434, 435, 436, 437, 438, 439, -1, 441, + -1, 443, 444, 445, 446, -1, -1, 449, -1, -1, + 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, + 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 18, 19, 20, 21, 22, - 23, 24, 25, -1, 27, 28, 29, -1, -1, -1, - -1, -1, -1, -1, 37, 38, -1, 40, 41, 42, - -1, 44, 45, 46, 47, 48, -1, 50, 51, -1, - 53, 54, 55, 56, 57, -1, -1, 60, 61, 62, - 63, 64, -1, 66, 67, 68, 69, 70, -1, -1, - -1, 74, 75, 76, 77, 78, -1, 80, 81, 82, - -1, 84, 85, 86, 87, 88, 89, -1, -1, 92, - 93, 94, -1, -1, -1, -1, -1, -1, -1, 102, - 103, 104, 105, 106, 107, 108, 109, 110, -1, 112, - -1, 114, 115, 116, 117, 118, 119, -1, 121, 122, - 123, 124, -1, -1, 127, 128, 129, 130, 131, -1, - 133, 134, 135, -1, 137, 138, 139, -1, 141, 142, - 143, 144, 145, 146, 147, 148, 149, -1, 151, -1, - 153, 154, 155, 156, -1, 158, -1, 160, -1, -1, - -1, 164, 165, 166, 167, -1, 169, 170, -1, 172, - 173, -1, 175, 176, 177, 178, 179, -1, 181, 182, - 183, 184, -1, 186, 187, 188, 189, 190, 191, -1, - 193, -1, 195, 196, 197, 198, 199, 200, 201, -1, - 203, -1, 205, -1, -1, 208, -1, 210, 211, 212, - 213, 214, -1, -1, 217, 218, -1, 220, -1, -1, - 223, 224, 225, -1, -1, 228, 229, 230, 231, 232, - 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, - 243, 244, -1, 246, 247, 248, 249, 250, -1, 252, - 253, -1, 255, -1, 257, 258, 259, 260, 261, 262, - -1, 264, 265, -1, -1, 268, 269, 270, -1, -1, - 273, 274, -1, 276, -1, 278, 279, 280, 281, 282, - 283, 284, 285, 286, 287, -1, 289, 290, 291, 292, - 293, 294, 295, 296, -1, 298, 299, 300, 301, 302, - 303, 304, 305, 306, 307, 308, 309, 310, 311, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, + 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, + 33, -1, -1, -1, -1, -1, -1, -1, 41, 42, + -1, 44, 45, 46, 47, 48, 49, 50, -1, 52, + 53, 54, 55, -1, 57, 58, 59, 60, 61, 62, + -1, -1, 65, 66, 67, 68, 69, -1, 71, 72, + 73, 74, -1, -1, 77, -1, 79, 80, 81, 82, + 83, 84, 85, 86, 87, -1, 89, 90, 91, 92, + 93, 94, -1, 96, 97, 98, 99, -1, -1, -1, + 103, -1, -1, -1, 107, 108, 109, 110, 111, 112, + 113, 114, 115, -1, 117, -1, 119, 120, 121, 122, + 123, 124, -1, 126, 127, 128, 129, -1, -1, 132, + 133, 134, 135, 136, -1, 138, 139, 140, -1, 142, + 143, 144, -1, 146, 147, 148, 149, -1, 151, 152, + 153, 154, -1, -1, 157, -1, 159, 160, 161, 162, + -1, 164, -1, 166, 167, -1, 169, 170, 171, 172, + 173, -1, 175, -1, -1, -1, 179, 180, -1, 182, + 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, + 193, 194, 195, 196, 197, 198, 199, -1, 201, 202, + 203, 204, 205, 206, 207, 208, 209, -1, 211, -1, + 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, + -1, -1, 225, -1, 227, 228, 229, -1, 231, 232, + 233, -1, -1, 236, 237, 238, 239, 240, 241, 242, + 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, + 253, 254, 255, 256, 257, 258, 259, 260, 261, -1, + -1, 264, -1, 266, 267, 268, 269, -1, -1, 272, + 273, 274, 275, 276, -1, 278, 279, -1, -1, 282, + 283, 284, -1, -1, 287, 288, 289, 290, 291, 292, + -1, 294, 295, 296, 297, 298, 299, 300, 301, 302, + -1, 304, 305, -1, 307, -1, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, - 323, 324, -1, 326, 327, -1, 329, 330, 331, 332, - 333, 334, 335, 336, 337, 338, 339, 340, 341, -1, - 343, 344, 345, 346, 347, -1, 349, 350, 351, 352, - 353, -1, 355, 356, 357, 358, -1, 360, 361, 362, - 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, - -1, 374, 375, -1, 377, -1, 379, 380, 381, 382, - 383, -1, 385, 386, -1, -1, 389, 390, 391, 392, - 393, -1, 395, 396, 397, 398, 399, 400, 401, -1, - -1, 404, 405, 406, 407, 408, -1, -1, 411, 412, - 413, 414, 415, 416, 417, -1, 419, -1, 421, 422, - 423, 424, -1, -1, 427, -1, -1, 430, 431, 432, - 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, - 443, 444, 445, 446, 447, 448, 449, 3, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 18, 19, 20, 21, 22, 23, 24, 25, - -1, 27, 28, 29, -1, -1, -1, -1, -1, -1, - -1, 37, 38, -1, 40, 41, 42, -1, 44, 45, - 46, 47, 48, -1, 50, 51, -1, 53, 54, 55, - 56, 57, -1, -1, 60, 61, 62, 63, 64, -1, - 66, 67, 68, 69, 70, -1, -1, -1, 74, 75, - 76, 77, 78, -1, 80, 81, 82, -1, 84, 85, - 86, 87, 88, 89, -1, -1, 92, 93, 94, -1, - -1, -1, -1, -1, -1, -1, 102, 103, 104, 105, - 106, 107, 108, 109, 110, -1, 112, -1, 114, 115, - 116, 117, 118, 119, -1, 121, 122, 123, 124, -1, - -1, 127, 128, 129, 130, 131, -1, 133, 134, 135, - -1, 137, 138, 139, -1, 141, 142, 143, 144, 145, - 146, 147, 148, 149, -1, 151, -1, 153, 154, 155, - 156, -1, 158, -1, 160, -1, -1, -1, 164, 165, - 166, 167, -1, 169, 170, -1, 172, 173, -1, 175, - 176, 177, 178, 179, -1, 181, 182, 183, 184, -1, - 186, 187, 188, 189, 190, 191, -1, 193, -1, 195, - 196, 197, 198, 199, 200, 201, -1, 203, -1, 205, - -1, -1, 208, -1, 210, 211, 212, 213, 214, -1, - -1, 217, 218, -1, 220, -1, -1, 223, 224, 225, - -1, -1, 228, 229, 230, 231, 232, 233, 234, 235, - 236, 237, 238, 239, 240, 241, 242, 243, 244, -1, - 246, 247, 248, 249, 250, -1, 252, 253, -1, 255, - -1, 257, 258, 259, 260, 261, 262, -1, 264, 265, - -1, -1, 268, 269, 270, -1, -1, 273, 274, -1, - 276, -1, 278, 279, 280, 281, 282, 283, 284, 285, - 286, 287, -1, 289, 290, 291, 292, 293, 294, 295, - 296, -1, 298, 299, 300, 301, 302, 303, 304, 305, - 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, - 316, 317, 318, 319, 320, 321, 322, 323, 324, -1, - 326, 327, -1, 329, 330, 331, 332, 333, 334, 335, - 336, 337, 338, 339, 340, 341, -1, 343, 344, 345, - 346, 347, -1, 349, 350, 351, 352, 353, -1, 355, - 356, 357, 358, -1, 360, 361, 362, 363, 364, 365, - 366, 367, 368, 369, 370, 371, 372, -1, 374, 375, - -1, 377, -1, 379, 380, 381, 382, 383, -1, 385, - 386, -1, -1, 389, 390, 391, 392, 393, -1, 395, - 396, 397, 398, 399, 400, 401, -1, -1, 404, 405, - 406, 407, 408, -1, -1, 411, 412, 413, 414, 415, - 416, 417, -1, 419, -1, 421, 422, 423, 424, -1, - -1, 427, -1, -1, 430, 431, 432, 433, 434, 435, - 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, - 446, 447, 448, 449, 3, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 18, - 19, 20, 21, 22, 23, 24, 25, -1, 27, 28, - 29, -1, -1, -1, -1, -1, -1, -1, 37, 38, - -1, 40, 41, 42, 43, 44, 45, 46, -1, 48, - 49, 50, 51, -1, 53, 54, 55, 56, 57, -1, - -1, 60, 61, 62, 63, 64, -1, 66, 67, 68, - 69, -1, -1, 72, -1, 74, 75, 76, 77, 78, - 79, 80, 81, 82, -1, 84, 85, 86, 87, 88, - 89, -1, 91, 92, 93, 94, -1, -1, -1, 98, - -1, -1, -1, 102, 103, 104, 105, 106, 107, 108, - 109, 110, -1, 112, -1, 114, 115, 116, 117, 118, - 119, -1, 121, 122, 123, 124, -1, -1, 127, 128, - 129, 130, 131, -1, 133, 134, 135, -1, 137, 138, - 139, -1, 141, 142, 143, 144, -1, 146, 147, 148, - -1, -1, 151, -1, 153, 154, 155, 156, -1, 158, - -1, 160, 161, -1, 163, 164, 165, 166, 167, -1, - 169, -1, -1, -1, 173, -1, 175, 176, 177, 178, - 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, + 323, 324, 325, 326, 327, -1, 329, 330, 331, 332, + 333, 334, 335, 336, 337, 338, 339, 340, -1, 342, + 343, 344, 345, 346, 347, 348, 349, -1, 351, 352, + 353, 354, 355, 356, 357, 358, 359, -1, 361, 362, + 363, 364, 365, -1, 367, 368, 369, 370, 371, 372, + 373, 374, 375, 376, -1, 378, 379, 380, 381, 382, + 383, 384, 385, 386, 387, 388, 389, 390, -1, 392, + -1, 394, 395, -1, 397, 398, 399, 400, 401, 402, + 403, -1, 405, 406, 407, -1, -1, 410, 411, -1, + 413, -1, -1, 416, 417, 418, 419, 420, 421, 422, + 423, -1, -1, 426, 427, 428, 429, 430, -1, -1, + 433, 434, 435, 436, 437, -1, 439, 440, 441, 442, + 443, 444, 445, 446, -1, -1, 449, -1, -1, 452, + 453, 454, 455, 456, 457, 3, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 469, 470, 471, -1, + -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, + 28, 29, -1, 31, 32, 33, -1, -1, -1, -1, + -1, -1, -1, 41, 42, -1, 44, 45, 46, -1, + 48, 49, 50, 51, 52, -1, 54, 55, -1, 57, + 58, 59, 60, 61, 62, -1, -1, 65, 66, 67, + 68, 69, -1, 71, 72, 73, 74, 75, -1, -1, + -1, 79, 80, 81, 82, 83, -1, 85, 86, 87, + -1, 89, 90, 91, 92, 93, 94, -1, -1, 97, + 98, 99, -1, -1, -1, -1, -1, -1, -1, 107, + 108, 109, 110, 111, 112, 113, 114, 115, -1, 117, + -1, 119, 120, 121, 122, 123, 124, -1, 126, 127, + 128, 129, -1, -1, 132, 133, 134, 135, 136, -1, + 138, 139, 140, -1, 142, 143, 144, -1, 146, 147, + 148, 149, 150, 151, 152, 153, 154, 155, -1, 157, + -1, 159, 160, 161, 162, -1, 164, -1, 166, -1, + -1, -1, 170, 171, 172, 173, -1, 175, 176, -1, + 178, -1, 180, -1, 182, 183, 184, 185, 186, -1, + 188, 189, 190, 191, -1, 193, 194, 195, 196, 197, + 198, 199, -1, 201, -1, 203, 204, 205, 206, 207, + 208, 209, -1, 211, -1, 213, -1, -1, 216, -1, + 218, 219, 220, 221, 222, -1, -1, 225, 226, -1, + 228, -1, -1, 231, 232, 233, -1, -1, 236, 237, + 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, + 248, 249, 250, 251, 252, -1, 254, 255, 256, 257, + 258, 259, 260, 261, 262, 263, 264, -1, 266, 267, + -1, 269, -1, 271, 272, 273, 274, 275, 276, -1, + 278, 279, -1, -1, 282, 283, 284, -1, -1, 287, + 288, 289, -1, 291, -1, 293, 294, 295, 296, 297, + 298, 299, -1, 301, 302, -1, 304, 305, 306, 307, + 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, + 318, 319, 320, -1, 322, 323, 324, 325, 326, 327, + -1, 329, 330, 331, 332, 333, 334, 335, 336, 337, + 338, 339, 340, -1, 342, 343, -1, 345, 346, 347, + 348, 349, 350, -1, 352, 353, 354, 355, 356, 357, + 358, 359, -1, 361, 362, 363, 364, 365, -1, 367, + 368, 369, 370, 371, -1, 373, 374, 375, 376, -1, + 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, + 388, 389, 390, 391, 392, -1, 394, 395, -1, 397, + -1, 399, 400, 401, 402, 403, -1, 405, 406, 407, + -1, -1, 410, 411, 412, 413, 414, -1, 416, 417, + 418, 419, 420, 421, 422, 423, -1, -1, 426, 427, + 428, 429, 430, -1, -1, 433, 434, 435, 436, 437, + 438, 439, -1, 441, -1, 443, 444, 445, 446, -1, + -1, 449, -1, -1, 452, 453, 454, 455, 456, 457, + 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, + 468, 469, 470, 471, 3, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, + 29, -1, 31, 32, 33, -1, -1, -1, -1, -1, + -1, -1, 41, 42, -1, 44, 45, 46, 47, 48, + 49, 50, -1, 52, 53, 54, 55, -1, 57, 58, + 59, 60, 61, 62, -1, -1, 65, 66, 67, 68, + 69, -1, 71, 72, 73, 74, -1, -1, 77, -1, + 79, 80, 81, 82, 83, 84, 85, 86, 87, -1, + 89, 90, 91, 92, 93, 94, -1, 96, 97, 98, + 99, -1, -1, -1, 103, -1, -1, -1, 107, 108, + 109, 110, 111, 112, 113, 114, 115, -1, 117, -1, + 119, 120, 121, 122, 123, 124, -1, 126, 127, 128, + 129, -1, -1, 132, 133, 134, 135, 136, -1, 138, + 139, 140, -1, 142, 143, 144, -1, 146, 147, 148, + 149, -1, 151, 152, 153, 154, -1, -1, 157, -1, + 159, 160, 161, 162, -1, 164, -1, 166, 167, -1, + 169, 170, 171, 172, 173, -1, 175, -1, -1, -1, + 179, 180, -1, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, -1, 193, 194, 195, 196, 197, 198, - 199, 200, 201, -1, 203, -1, 205, 206, 207, 208, - 209, 210, 211, 212, 213, 214, -1, -1, 217, -1, - 219, 220, 221, -1, 223, 224, 225, -1, -1, 228, - 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, + 199, -1, 201, 202, -1, 204, 205, 206, 207, 208, + 209, -1, 211, -1, 213, 214, 215, 216, 217, 218, + 219, 220, 221, 222, -1, -1, 225, -1, 227, 228, + 229, -1, 231, 232, 233, -1, -1, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, - 249, -1, -1, 252, 253, 254, 255, -1, -1, 258, - 259, 260, 261, 262, -1, 264, 265, -1, -1, 268, - 269, 270, -1, -1, 273, 274, 275, 276, 277, -1, - 279, 280, 281, 282, 283, 284, 285, 286, 287, -1, - 289, 290, -1, 292, -1, 294, 295, 296, -1, 298, - 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, + 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, + 259, 260, 261, -1, -1, 264, -1, 266, 267, 268, + 269, 270, -1, 272, 273, 274, 275, 276, -1, 278, + 279, -1, -1, 282, 283, 284, -1, -1, 287, 288, + -1, 290, 291, 292, -1, 294, 295, 296, 297, 298, + 299, 300, 301, 302, -1, 304, 305, -1, 307, -1, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, - 319, 320, 321, 322, 323, 324, -1, 326, 327, 328, - 329, 330, 331, -1, 333, 334, 335, 336, 337, 338, - 339, 340, 341, -1, 343, 344, 345, 346, 347, -1, - 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, - -1, 360, 361, 362, 363, 364, 365, 366, 367, 368, - 369, 370, 371, -1, -1, 374, 375, -1, 377, 378, - 379, 380, 381, 382, 383, -1, 385, 386, -1, -1, - 389, 390, -1, 392, -1, -1, 395, 396, 397, 398, - 399, 400, 401, -1, -1, 404, 405, 406, 407, 408, - -1, -1, 411, 412, 413, 414, 415, -1, 417, 418, - 419, 420, 421, 422, 423, 424, -1, -1, 427, -1, - -1, 430, 431, 432, 433, 434, 435, 3, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 447, 448, - 449, -1, 18, 19, 20, 21, 22, 23, 24, 25, - -1, 27, 28, 29, -1, -1, -1, -1, -1, -1, - -1, 37, 38, -1, 40, 41, 42, -1, 44, 45, - 46, 47, 48, -1, 50, 51, -1, 53, 54, 55, - 56, 57, -1, -1, 60, 61, 62, 63, 64, -1, - 66, 67, 68, 69, 70, -1, -1, -1, 74, 75, - 76, 77, 78, -1, 80, 81, 82, -1, 84, 85, - 86, 87, 88, 89, -1, -1, 92, 93, 94, -1, - -1, -1, -1, -1, -1, -1, 102, 103, 104, 105, - 106, 107, 108, 109, 110, -1, 112, -1, 114, 115, - 116, 117, 118, 119, -1, 121, 122, 123, 124, -1, - -1, 127, 128, 129, 130, 131, -1, 133, 134, 135, - -1, 137, 138, 139, -1, 141, 142, 143, 144, 145, - 146, 147, 148, 149, -1, 151, -1, 153, 154, 155, - 156, -1, 158, -1, 160, -1, -1, -1, 164, 165, - 166, 167, -1, 169, 170, -1, 172, 173, -1, 175, - 176, 177, 178, 179, -1, 181, 182, 183, 184, -1, - 186, 187, 188, 189, 190, 191, -1, 193, -1, 195, - 196, 197, 198, 199, 200, 201, -1, 203, -1, 205, - -1, -1, 208, -1, 210, 211, 212, 213, 214, -1, - -1, 217, 218, -1, 220, -1, -1, 223, 224, 225, - -1, -1, 228, 229, 230, 231, 232, 233, 234, 235, - 236, 237, 238, 239, 240, 241, 242, 243, 244, -1, - 246, 247, 248, 249, 250, -1, 252, 253, -1, 255, - -1, 257, 258, 259, 260, 261, 262, -1, 264, 265, - -1, -1, 268, 269, 270, -1, -1, 273, 274, -1, - 276, -1, 278, 279, 280, 281, 282, 283, 284, -1, - 286, 287, -1, 289, 290, 291, 292, 293, 294, 295, - 296, -1, 298, 299, 300, 301, 302, 303, 304, -1, - 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, - 316, 317, 318, 319, 320, 321, 322, 323, 324, -1, - 326, 327, -1, 329, 330, 331, 332, -1, 334, 335, - 336, 337, 338, 339, 340, 341, -1, 343, 344, 345, - 346, 347, -1, 349, 350, 351, 352, 353, -1, 355, - 356, 357, 358, -1, 360, 361, 362, 363, 364, 365, - 366, 367, 368, 369, 370, 371, 372, -1, 374, 375, - -1, 377, -1, 379, 380, 381, 382, 383, -1, 385, - 386, -1, -1, 389, 390, 391, 392, 393, -1, 395, - 396, 397, 398, 399, 400, 401, -1, -1, 404, 405, - 406, 407, 408, -1, -1, 411, 412, 413, 414, 415, - 416, 417, -1, 419, -1, 421, 422, 423, 424, -1, - -1, 427, -1, -1, 430, 431, 432, 433, 434, 435, - 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, - 446, 447, 448, 449, 3, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 18, - 19, 20, 21, 22, 23, 24, 25, -1, 27, 28, - 29, -1, -1, -1, -1, -1, -1, -1, 37, 38, - -1, 40, 41, 42, 43, 44, 45, 46, -1, 48, - 49, 50, 51, -1, 53, 54, 55, 56, 57, -1, - -1, 60, 61, 62, 63, 64, -1, 66, 67, 68, - 69, -1, -1, 72, -1, 74, 75, 76, 77, 78, - 79, 80, 81, 82, -1, 84, 85, 86, 87, 88, - 89, -1, 91, 92, 93, 94, -1, -1, -1, 98, - -1, -1, -1, 102, 103, 104, 105, 106, 107, 108, - 109, 110, -1, 112, -1, 114, 115, 116, 117, 118, - 119, -1, 121, 122, 123, 124, -1, -1, 127, 128, - 129, 130, 131, -1, 133, 134, 135, -1, 137, 138, - 139, -1, 141, 142, 143, 144, -1, 146, 147, 148, - -1, -1, 151, -1, 153, 154, 155, 156, -1, 158, - -1, 160, 161, -1, 163, 164, 165, 166, 167, -1, - 169, -1, -1, -1, 173, -1, 175, 176, 177, 178, - 179, 180, 181, 182, 183, 184, -1, 186, 187, 188, - 189, 190, 191, -1, 193, 194, -1, 196, 197, 198, - 199, 200, 201, -1, 203, -1, 205, 206, 207, 208, - 209, 210, 211, 212, 213, 214, -1, -1, 217, -1, - 219, 220, 221, -1, 223, 224, 225, -1, -1, 228, - 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, + 319, 320, 321, 322, 323, 324, 325, 326, 327, -1, + 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, + 339, 340, -1, 342, 343, 344, 345, 346, 347, 348, + 349, -1, 351, 352, 353, 354, 355, 356, 357, 358, + 359, -1, 361, 362, 363, 364, 365, -1, 367, 368, + 369, 370, 371, 372, 373, 374, 375, 376, -1, 378, + 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, + 389, 390, -1, 392, -1, 394, 395, 396, 397, 398, + 399, 400, 401, 402, 403, -1, 405, 406, 407, -1, + -1, 410, 411, -1, 413, -1, -1, 416, 417, 418, + 419, 420, 421, 422, 423, -1, -1, 426, 427, 428, + 429, 430, -1, -1, 433, 434, 435, 436, 437, -1, + 439, -1, 441, 442, 443, 444, 445, 446, -1, -1, + 449, -1, -1, 452, 453, 454, 455, 456, 457, 3, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 469, 470, 471, -1, -1, -1, -1, -1, 22, 23, + 24, 25, 26, 27, 28, 29, -1, 31, 32, 33, + -1, -1, -1, -1, -1, -1, -1, 41, 42, -1, + 44, 45, 46, 47, 48, 49, 50, -1, 52, 53, + 54, 55, -1, 57, 58, 59, 60, 61, 62, -1, + -1, 65, 66, 67, 68, 69, -1, 71, 72, 73, + 74, -1, -1, 77, -1, 79, 80, 81, 82, 83, + 84, 85, 86, 87, -1, 89, 90, 91, 92, 93, + 94, -1, 96, 97, 98, 99, -1, -1, -1, 103, + -1, -1, -1, 107, 108, 109, 110, 111, 112, 113, + 114, 115, -1, 117, -1, 119, 120, 121, 122, 123, + 124, -1, 126, 127, 128, 129, -1, -1, 132, 133, + 134, 135, 136, -1, 138, 139, 140, -1, 142, 143, + 144, -1, 146, 147, 148, 149, -1, 151, 152, 153, + 154, -1, -1, 157, -1, 159, 160, 161, 162, -1, + 164, -1, 166, 167, -1, 169, 170, 171, 172, 173, + -1, 175, -1, -1, -1, 179, 180, -1, 182, 183, + 184, 185, 186, 187, 188, 189, 190, 191, -1, 193, + 194, 195, 196, 197, 198, 199, -1, 201, 202, -1, + 204, 205, 206, 207, 208, 209, -1, 211, -1, 213, + 214, 215, 216, 217, 218, 219, 220, 221, 222, -1, + -1, 225, -1, 227, 228, 229, -1, 231, 232, 233, + -1, -1, 236, 237, 238, 239, 240, 241, 242, 243, + 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, + 254, 255, 256, 257, 258, 259, 260, 261, 262, -1, + 264, -1, 266, 267, 268, 269, -1, -1, 272, 273, + 274, 275, 276, -1, 278, 279, -1, -1, 282, 283, + 284, -1, -1, 287, 288, -1, 290, 291, 292, -1, + 294, 295, 296, 297, 298, 299, 300, 301, 302, -1, + 304, 305, -1, 307, -1, 309, 310, 311, -1, 313, + 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, + 324, 325, 326, 327, -1, 329, 330, 331, 332, 333, + 334, 335, 336, 337, 338, 339, 340, -1, 342, 343, + 344, 345, 346, 347, 348, 349, -1, 351, 352, 353, + 354, 355, 356, 357, 358, 359, -1, 361, 362, 363, + 364, 365, -1, 367, 368, 369, 370, 371, 372, 373, + 374, 375, 376, -1, 378, 379, 380, 381, 382, 383, + 384, 385, 386, 387, 388, 389, 390, -1, 392, -1, + 394, 395, -1, 397, 398, 399, 400, 401, 402, 403, + -1, 405, 406, 407, -1, -1, 410, 411, -1, 413, + -1, -1, 416, 417, 418, 419, 420, 421, 422, 423, + -1, -1, 426, 427, 428, 429, 430, -1, -1, 433, + 434, 435, 436, 437, -1, 439, -1, 441, 442, 443, + 444, 445, 446, -1, -1, 449, -1, -1, 452, 453, + 454, 455, 456, 457, 3, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 469, 470, 471, -1, -1, + -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, + 29, -1, 31, 32, 33, -1, -1, -1, -1, -1, + -1, -1, 41, 42, -1, 44, 45, 46, 47, 48, + 49, 50, -1, 52, 53, 54, 55, -1, 57, 58, + 59, 60, 61, 62, -1, -1, 65, 66, 67, 68, + 69, -1, 71, 72, 73, 74, -1, -1, 77, -1, + 79, 80, 81, 82, 83, 84, 85, 86, 87, -1, + 89, 90, 91, 92, 93, 94, -1, 96, 97, 98, + 99, -1, -1, -1, 103, -1, -1, -1, 107, 108, + 109, 110, 111, 112, 113, 114, 115, -1, 117, -1, + 119, 120, 121, 122, 123, 124, -1, 126, 127, 128, + 129, -1, -1, 132, 133, 134, 135, 136, -1, 138, + 139, 140, -1, 142, 143, 144, -1, 146, 147, 148, + 149, -1, 151, 152, 153, 154, -1, -1, 157, -1, + 159, 160, 161, 162, -1, 164, -1, 166, 167, -1, + 169, 170, 171, 172, 173, -1, 175, -1, -1, -1, + 179, 180, -1, 182, 183, 184, 185, 186, 187, 188, + 189, 190, 191, -1, 193, 194, 195, 196, 197, 198, + 199, -1, 201, 202, -1, 204, 205, 206, 207, 208, + 209, -1, 211, -1, 213, 214, 215, 216, 217, 218, + 219, 220, 221, 222, -1, -1, 225, -1, 227, 228, + 229, -1, 231, 232, 233, -1, -1, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, - 249, -1, -1, 252, 253, 254, 255, 256, -1, 258, - 259, 260, 261, 262, -1, 264, 265, -1, -1, 268, - 269, 270, -1, -1, 273, -1, 275, 276, 277, -1, - 279, 280, 281, 282, 283, 284, 285, 286, 287, -1, - 289, 290, -1, 292, -1, 294, 295, 296, -1, 298, - 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, + 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, + 259, 260, 261, 262, -1, 264, -1, 266, 267, 268, + 269, -1, -1, 272, 273, 274, 275, 276, -1, 278, + 279, -1, -1, 282, 283, 284, -1, -1, 287, 288, + -1, 290, 291, 292, -1, 294, 295, 296, 297, 298, + 299, 300, 301, 302, -1, 304, 305, -1, 307, -1, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, - 319, 320, 321, 322, 323, 324, -1, 326, 327, 328, - 329, 330, 331, -1, 333, 334, 335, 336, 337, 338, - 339, 340, 341, -1, 343, 344, 345, 346, 347, -1, - 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, - -1, 360, 361, 362, 363, 364, 365, 366, 367, 368, - 369, 370, 371, -1, -1, 374, 375, 376, 377, 378, - 379, 380, 381, 382, 383, -1, 385, 386, -1, -1, - 389, 390, -1, 392, -1, -1, 395, 396, 397, 398, - 399, 400, 401, -1, -1, 404, 405, 406, 407, 408, - -1, -1, 411, 412, 413, 414, 415, -1, 417, -1, - 419, 420, 421, 422, 423, 424, -1, -1, 427, -1, - -1, 430, 431, 432, 433, 434, 435, 3, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 447, 448, - 449, -1, 18, 19, 20, 21, 22, 23, 24, 25, - -1, 27, 28, 29, -1, -1, -1, -1, -1, -1, - -1, 37, 38, -1, 40, 41, 42, 43, 44, 45, - 46, -1, 48, 49, 50, 51, -1, 53, 54, 55, - 56, 57, -1, -1, 60, 61, 62, 63, 64, -1, - 66, 67, 68, 69, -1, -1, 72, -1, 74, 75, - 76, 77, 78, 79, 80, 81, 82, -1, 84, 85, - 86, 87, 88, 89, -1, 91, 92, 93, 94, -1, - -1, -1, 98, -1, -1, -1, 102, 103, 104, 105, - 106, 107, 108, 109, 110, -1, 112, -1, 114, 115, - 116, 117, 118, 119, -1, 121, 122, 123, 124, -1, - -1, 127, 128, 129, 130, 131, -1, 133, 134, 135, - -1, 137, 138, 139, -1, 141, 142, 143, 144, -1, - 146, 147, 148, -1, -1, 151, -1, 153, 154, 155, - 156, -1, 158, -1, 160, 161, -1, 163, 164, 165, - 166, 167, -1, 169, -1, -1, -1, 173, -1, 175, - 176, 177, 178, 179, 180, 181, 182, 183, 184, -1, - 186, 187, 188, 189, 190, 191, -1, 193, 194, -1, - 196, 197, 198, 199, 200, 201, -1, 203, -1, 205, - 206, 207, 208, 209, 210, 211, 212, 213, 214, -1, - -1, 217, -1, 219, 220, 221, -1, 223, 224, 225, - -1, -1, 228, 229, 230, 231, 232, 233, 234, 235, - 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, - 246, 247, 248, 249, 250, -1, 252, 253, 254, 255, - -1, -1, 258, 259, 260, 261, 262, -1, 264, 265, - -1, -1, 268, 269, 270, -1, -1, 273, -1, 275, - 276, 277, -1, 279, 280, 281, 282, 283, 284, 285, - 286, 287, -1, 289, 290, -1, 292, -1, 294, 295, - 296, -1, 298, 299, 300, 301, 302, 303, 304, 305, - 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, - 316, 317, 318, 319, 320, 321, 322, 323, 324, -1, - 326, 327, 328, 329, 330, 331, -1, 333, 334, 335, - 336, 337, 338, 339, 340, 341, -1, 343, 344, 345, - 346, 347, -1, 349, 350, 351, 352, 353, 354, 355, - 356, 357, 358, -1, 360, 361, 362, 363, 364, 365, - 366, 367, 368, 369, 370, 371, -1, -1, 374, 375, - -1, 377, 378, 379, 380, 381, 382, 383, -1, 385, - 386, -1, -1, 389, 390, -1, 392, -1, -1, 395, - 396, 397, 398, 399, 400, 401, -1, -1, 404, 405, - 406, 407, 408, -1, -1, 411, 412, 413, 414, 415, - -1, 417, -1, 419, 420, 421, 422, 423, 424, -1, - -1, 427, -1, -1, 430, 431, 432, 433, 434, 435, - 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 447, 448, 449, -1, 18, 19, 20, 21, 22, - 23, 24, 25, -1, 27, 28, 29, -1, -1, -1, - -1, -1, -1, -1, 37, 38, -1, 40, 41, 42, - 43, 44, 45, 46, -1, 48, 49, 50, 51, -1, - 53, 54, 55, 56, 57, -1, -1, 60, 61, 62, - 63, 64, -1, 66, 67, 68, 69, -1, -1, 72, - -1, 74, 75, 76, 77, 78, 79, 80, 81, 82, - -1, 84, 85, 86, 87, 88, 89, -1, 91, 92, - 93, 94, -1, -1, -1, 98, -1, -1, -1, 102, - 103, 104, 105, 106, 107, 108, 109, 110, -1, 112, - -1, 114, 115, 116, 117, 118, 119, -1, 121, 122, - 123, 124, -1, -1, 127, 128, 129, 130, 131, -1, - 133, 134, 135, -1, 137, 138, 139, -1, 141, 142, - 143, 144, -1, 146, 147, 148, -1, -1, 151, -1, - 153, 154, 155, 156, -1, 158, -1, 160, 161, -1, - 163, 164, 165, 166, 167, -1, 169, -1, -1, -1, - 173, -1, 175, 176, 177, 178, 179, 180, 181, 182, - 183, 184, -1, 186, 187, 188, 189, 190, 191, -1, - 193, 194, -1, 196, 197, 198, 199, 200, 201, -1, - 203, -1, 205, 206, 207, 208, 209, 210, 211, 212, - 213, 214, -1, -1, 217, -1, 219, 220, 221, -1, - 223, 224, 225, -1, -1, 228, 229, 230, 231, 232, - 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, - 243, 244, 245, 246, 247, 248, 249, 250, -1, 252, - 253, 254, 255, -1, -1, 258, 259, 260, 261, 262, - -1, 264, 265, -1, -1, 268, 269, 270, -1, -1, - 273, -1, 275, 276, 277, -1, 279, 280, 281, 282, - 283, 284, 285, 286, 287, -1, 289, 290, -1, 292, - -1, 294, 295, 296, -1, 298, 299, 300, 301, 302, - 303, 304, 305, 306, 307, 308, 309, 310, 311, -1, - 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, - 323, 324, -1, 326, 327, 328, 329, 330, 331, -1, - 333, 334, 335, 336, 337, 338, 339, 340, 341, -1, - 343, 344, 345, 346, 347, -1, 349, 350, 351, 352, - 353, 354, 355, 356, 357, 358, -1, 360, 361, 362, - 363, 364, 365, 366, 367, 368, 369, 370, 371, -1, - -1, 374, 375, -1, 377, 378, 379, 380, 381, 382, - 383, -1, 385, 386, -1, -1, 389, 390, -1, 392, - -1, -1, 395, 396, 397, 398, 399, 400, 401, -1, - -1, 404, 405, 406, 407, 408, -1, -1, 411, 412, - 413, 414, 415, -1, 417, -1, 419, 420, 421, 422, - 423, 424, -1, -1, 427, -1, -1, 430, 431, 432, - 433, 434, 435, 3, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 447, 448, 449, -1, 18, 19, - 20, 21, 22, 23, 24, 25, -1, 27, 28, 29, - -1, -1, -1, -1, -1, -1, -1, 37, 38, -1, - 40, 41, 42, 43, 44, 45, 46, -1, 48, 49, - 50, 51, -1, 53, 54, 55, 56, 57, -1, -1, - 60, 61, 62, 63, 64, -1, 66, 67, 68, 69, - -1, -1, 72, -1, 74, 75, 76, 77, 78, 79, - 80, 81, 82, -1, 84, 85, 86, 87, 88, 89, - -1, 91, 92, 93, 94, -1, -1, -1, 98, -1, - -1, -1, 102, 103, 104, 105, 106, 107, 108, 109, - 110, -1, 112, -1, 114, 115, 116, 117, 118, 119, - -1, 121, 122, 123, 124, -1, -1, 127, 128, 129, - 130, 131, -1, 133, 134, 135, -1, 137, 138, 139, - -1, 141, 142, 143, 144, -1, 146, 147, 148, -1, - -1, 151, -1, 153, 154, 155, 156, 157, 158, -1, - 160, 161, -1, 163, 164, 165, 166, 167, -1, 169, - -1, -1, -1, 173, -1, 175, 176, 177, 178, 179, - 180, 181, 182, 183, 184, -1, 186, 187, 188, 189, - 190, 191, -1, 193, 194, -1, 196, 197, 198, 199, - 200, 201, -1, 203, -1, 205, 206, 207, 208, 209, - 210, 211, 212, 213, 214, -1, -1, 217, -1, 219, - 220, 221, -1, 223, 224, 225, -1, -1, 228, 229, - 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, - 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, - -1, -1, 252, 253, 254, 255, -1, -1, 258, 259, - 260, 261, 262, -1, 264, 265, -1, -1, 268, 269, - 270, -1, -1, 273, -1, 275, 276, 277, -1, 279, - 280, 281, 282, 283, 284, 285, 286, 287, -1, 289, - 290, -1, 292, -1, 294, 295, 296, -1, 298, 299, - 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, - 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, - 320, 321, 322, 323, 324, -1, 326, 327, 328, 329, - 330, 331, -1, 333, 334, 335, 336, 337, 338, 339, - 340, 341, -1, 343, 344, 345, 346, 347, -1, 349, - 350, 351, 352, 353, 354, 355, 356, 357, 358, -1, - 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, - 370, 371, -1, -1, 374, 375, -1, 377, 378, 379, - 380, 381, 382, 383, -1, 385, 386, -1, -1, 389, - 390, -1, 392, -1, -1, 395, 396, 397, 398, 399, - 400, 401, -1, -1, 404, 405, 406, 407, 408, -1, - -1, 411, 412, 413, 414, 415, -1, 417, -1, 419, - 420, 421, 422, 423, 424, -1, -1, 427, -1, -1, - 430, 431, 432, 433, 434, 435, 3, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 447, 448, 449, - -1, 18, 19, 20, 21, 22, 23, 24, 25, -1, - 27, 28, 29, -1, -1, -1, -1, -1, -1, -1, - 37, 38, -1, 40, 41, 42, 43, 44, 45, 46, - -1, 48, 49, 50, 51, -1, 53, 54, 55, 56, - 57, -1, -1, 60, 61, 62, 63, 64, -1, 66, - 67, 68, 69, -1, -1, 72, -1, 74, 75, 76, - 77, 78, 79, 80, 81, 82, -1, 84, 85, 86, - 87, 88, 89, -1, 91, 92, 93, 94, -1, -1, - -1, 98, -1, -1, -1, 102, 103, 104, 105, 106, - 107, 108, 109, 110, -1, 112, -1, 114, 115, 116, - 117, 118, 119, -1, 121, 122, 123, 124, -1, -1, - 127, 128, 129, 130, 131, -1, 133, 134, 135, -1, - 137, 138, 139, -1, 141, 142, 143, 144, -1, 146, - 147, 148, -1, -1, 151, -1, 153, 154, 155, 156, - -1, 158, -1, 160, 161, -1, 163, 164, 165, 166, - 167, -1, 169, -1, -1, -1, 173, -1, 175, 176, - 177, 178, 179, 180, 181, 182, 183, 184, -1, 186, - 187, 188, 189, 190, 191, -1, 193, 194, -1, 196, - 197, 198, 199, 200, 201, -1, 203, -1, 205, 206, - 207, 208, 209, 210, 211, 212, 213, 214, -1, -1, - 217, -1, 219, 220, 221, -1, 223, 224, 225, -1, - -1, 228, 229, 230, 231, 232, 233, 234, 235, 236, - 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, - 247, 248, 249, -1, -1, 252, 253, 254, 255, -1, - -1, 258, 259, 260, 261, 262, -1, 264, 265, -1, - -1, 268, 269, 270, -1, -1, 273, -1, 275, 276, - 277, -1, 279, 280, 281, 282, 283, 284, 285, 286, - 287, -1, 289, 290, -1, 292, -1, 294, 295, 296, - -1, 298, 299, 300, 301, 302, 303, 304, 305, 306, - 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, - 317, 318, 319, 320, 321, 322, 323, 324, -1, 326, - 327, 328, 329, 330, 331, -1, 333, 334, 335, 336, - 337, 338, 339, 340, 341, -1, 343, 344, 345, 346, - 347, -1, 349, 350, 351, 352, 353, 354, 355, 356, - 357, 358, -1, 360, 361, 362, 363, 364, 365, 366, - 367, 368, 369, 370, 371, -1, -1, 374, 375, -1, - 377, 378, 379, 380, 381, 382, 383, -1, 385, 386, - -1, -1, 389, 390, -1, 392, -1, -1, 395, 396, - 397, 398, 399, 400, 401, -1, -1, 404, 405, 406, - 407, 408, -1, -1, 411, 412, 413, 414, 415, -1, - 417, -1, 419, 420, 421, 422, 423, 424, -1, -1, - 427, -1, -1, 430, 431, 432, 433, 434, 435, 3, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 447, 448, 449, -1, 18, 19, 20, 21, 22, 23, - 24, 25, -1, 27, 28, 29, -1, -1, -1, -1, - -1, -1, -1, 37, 38, -1, 40, 41, 42, 43, - 44, 45, 46, -1, 48, 49, 50, 51, -1, 53, - 54, 55, 56, 57, -1, -1, 60, 61, 62, 63, - 64, -1, 66, 67, 68, 69, -1, -1, 72, -1, - 74, 75, 76, 77, 78, 79, 80, 81, 82, -1, - 84, 85, 86, 87, 88, 89, -1, 91, 92, 93, - 94, -1, -1, -1, 98, -1, -1, -1, 102, 103, - 104, 105, 106, 107, 108, 109, 110, -1, 112, -1, - 114, 115, 116, 117, 118, 119, -1, 121, 122, 123, - 124, -1, -1, 127, 128, 129, 130, 131, -1, 133, - 134, 135, -1, 137, 138, 139, -1, 141, 142, 143, - 144, -1, 146, 147, 148, -1, -1, 151, -1, 153, - 154, 155, 156, -1, 158, -1, 160, 161, -1, 163, - 164, 165, 166, 167, -1, 169, -1, -1, -1, 173, - -1, 175, 176, 177, 178, 179, 180, 181, 182, 183, - 184, -1, 186, 187, 188, 189, 190, 191, -1, 193, - 194, -1, 196, 197, 198, 199, 200, 201, -1, 203, - -1, 205, 206, 207, 208, 209, 210, 211, 212, 213, - 214, -1, -1, 217, -1, 219, 220, 221, -1, 223, - 224, 225, -1, -1, 228, 229, 230, 231, 232, 233, - 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, - 244, 245, 246, 247, 248, 249, -1, -1, 252, 253, - 254, 255, -1, -1, 258, 259, 260, 261, 262, -1, - 264, 265, -1, -1, 268, 269, 270, -1, -1, 273, - -1, 275, 276, 277, -1, 279, 280, 281, 282, 283, - 284, 285, 286, 287, -1, 289, 290, -1, 292, -1, - 294, 295, 296, -1, 298, 299, 300, 301, 302, 303, - 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, + 319, 320, 321, 322, 323, 324, 325, 326, 327, -1, + 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, + 339, 340, -1, 342, 343, 344, 345, 346, 347, 348, + 349, -1, 351, 352, 353, 354, 355, 356, 357, 358, + 359, -1, 361, 362, 363, 364, 365, -1, 367, 368, + 369, 370, 371, 372, 373, 374, 375, 376, -1, 378, + 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, + 389, 390, -1, 392, -1, 394, 395, -1, 397, 398, + 399, 400, 401, 402, 403, -1, 405, 406, 407, -1, + -1, 410, 411, -1, 413, -1, -1, 416, 417, 418, + 419, 420, 421, 422, 423, -1, -1, 426, 427, 428, + 429, 430, -1, -1, 433, 434, 435, 436, 437, -1, + 439, -1, 441, 442, 443, 444, 445, 446, -1, -1, + 449, -1, -1, 452, 453, 454, 455, 456, 457, 3, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 469, 470, 471, -1, -1, -1, -1, -1, 22, 23, + 24, 25, 26, 27, 28, 29, -1, 31, 32, 33, + -1, -1, -1, -1, -1, -1, -1, 41, 42, -1, + 44, 45, 46, 47, 48, 49, 50, -1, 52, 53, + 54, 55, -1, 57, 58, 59, 60, 61, 62, -1, + -1, 65, 66, 67, 68, 69, -1, 71, 72, 73, + 74, -1, -1, 77, -1, 79, 80, 81, 82, 83, + 84, 85, 86, 87, -1, 89, 90, 91, 92, 93, + 94, -1, 96, 97, 98, 99, -1, -1, -1, 103, + -1, -1, -1, 107, 108, 109, 110, 111, 112, 113, + 114, 115, -1, 117, -1, 119, 120, 121, 122, 123, + 124, -1, 126, 127, 128, 129, -1, -1, 132, 133, + 134, 135, 136, -1, 138, 139, 140, -1, 142, 143, + 144, -1, 146, 147, 148, 149, -1, 151, 152, 153, + 154, -1, -1, 157, -1, 159, 160, 161, 162, 163, + 164, -1, 166, 167, -1, 169, 170, 171, 172, 173, + -1, 175, -1, -1, -1, 179, 180, -1, 182, 183, + 184, 185, 186, 187, 188, 189, 190, 191, -1, 193, + 194, 195, 196, 197, 198, 199, -1, 201, 202, -1, + 204, 205, 206, 207, 208, 209, -1, 211, -1, 213, + 214, 215, 216, 217, 218, 219, 220, 221, 222, -1, + -1, 225, -1, 227, 228, 229, -1, 231, 232, 233, + -1, -1, 236, 237, 238, 239, 240, 241, 242, 243, + 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, + 254, 255, 256, 257, 258, 259, 260, 261, -1, -1, + 264, -1, 266, 267, 268, 269, -1, -1, 272, 273, + 274, 275, 276, -1, 278, 279, -1, -1, 282, 283, + 284, -1, -1, 287, 288, -1, 290, 291, 292, -1, + 294, 295, 296, 297, 298, 299, 300, 301, 302, -1, + 304, 305, -1, 307, -1, 309, 310, 311, -1, 313, + 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, + 324, 325, 326, 327, -1, 329, 330, 331, 332, 333, + 334, 335, 336, 337, 338, 339, 340, -1, 342, 343, + 344, 345, 346, 347, 348, 349, -1, 351, 352, 353, + 354, 355, 356, 357, 358, 359, -1, 361, 362, 363, + 364, 365, -1, 367, 368, 369, 370, 371, 372, 373, + 374, 375, 376, -1, 378, 379, 380, 381, 382, 383, + 384, 385, 386, 387, 388, 389, 390, -1, 392, -1, + 394, 395, -1, 397, 398, 399, 400, 401, 402, 403, + -1, 405, 406, 407, -1, -1, 410, 411, -1, 413, + -1, -1, 416, 417, 418, 419, 420, 421, 422, 423, + -1, -1, 426, 427, 428, 429, 430, -1, -1, 433, + 434, 435, 436, 437, -1, 439, -1, 441, 442, 443, + 444, 445, 446, -1, -1, 449, -1, -1, 452, 453, + 454, 455, 456, 457, 3, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 469, 470, 471, -1, -1, + -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, + 29, -1, 31, 32, 33, -1, -1, -1, -1, -1, + -1, -1, 41, 42, -1, 44, 45, 46, 47, 48, + 49, 50, -1, 52, 53, 54, 55, -1, 57, 58, + 59, 60, 61, 62, -1, -1, 65, 66, 67, 68, + 69, -1, 71, 72, 73, 74, -1, -1, 77, -1, + 79, 80, 81, 82, 83, 84, 85, 86, 87, -1, + 89, 90, 91, 92, 93, 94, -1, 96, 97, 98, + 99, -1, -1, -1, 103, -1, -1, -1, 107, 108, + 109, 110, 111, 112, 113, 114, 115, -1, 117, -1, + 119, 120, 121, 122, 123, 124, -1, 126, 127, 128, + 129, -1, -1, 132, 133, 134, 135, 136, -1, 138, + 139, 140, -1, 142, 143, 144, -1, 146, 147, 148, + 149, -1, 151, 152, 153, 154, -1, -1, 157, -1, + 159, 160, 161, 162, -1, 164, -1, 166, 167, -1, + 169, 170, 171, 172, 173, -1, 175, -1, -1, -1, + 179, 180, -1, 182, 183, 184, 185, 186, 187, 188, + 189, 190, 191, -1, 193, 194, 195, 196, 197, 198, + 199, -1, 201, 202, -1, 204, 205, 206, 207, 208, + 209, -1, 211, -1, 213, 214, 215, 216, 217, 218, + 219, 220, 221, 222, -1, -1, 225, -1, 227, 228, + 229, -1, 231, 232, 233, -1, -1, 236, 237, 238, + 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, + 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, + 259, 260, 261, -1, -1, 264, -1, 266, 267, 268, + 269, -1, -1, 272, 273, 274, 275, 276, -1, 278, + 279, -1, -1, 282, 283, 284, -1, -1, 287, 288, + -1, 290, 291, 292, -1, 294, 295, 296, 297, 298, + 299, 300, 301, 302, -1, 304, 305, -1, 307, -1, + 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, + 319, 320, 321, 322, 323, 324, 325, 326, 327, -1, + 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, + 339, 340, -1, 342, 343, 344, 345, 346, 347, 348, + 349, -1, 351, 352, 353, 354, 355, 356, 357, 358, + 359, -1, 361, 362, 363, 364, 365, -1, 367, 368, + 369, 370, 371, 372, 373, 374, 375, 376, -1, 378, + 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, + 389, 390, -1, 392, -1, 394, 395, -1, 397, 398, + 399, 400, 401, 402, 403, -1, 405, 406, 407, -1, + -1, 410, 411, -1, 413, -1, -1, 416, 417, 418, + 419, 420, 421, 422, 423, -1, -1, 426, 427, 428, + 429, 430, -1, -1, 433, 434, 435, 436, 437, -1, + 439, -1, 441, 442, 443, 444, 445, 446, -1, -1, + 449, -1, -1, 452, 453, 454, 455, 456, 457, 3, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 469, 470, 471, -1, -1, -1, -1, -1, 22, 23, + 24, 25, 26, 27, 28, 29, -1, 31, 32, 33, + -1, -1, -1, -1, -1, -1, -1, 41, 42, -1, + 44, 45, 46, 47, 48, 49, 50, -1, 52, 53, + 54, 55, -1, 57, 58, 59, 60, 61, 62, -1, + -1, 65, 66, 67, 68, 69, -1, 71, 72, 73, + 74, -1, -1, 77, -1, 79, 80, 81, 82, 83, + 84, 85, 86, 87, -1, 89, 90, 91, 92, 93, + 94, -1, 96, 97, 98, 99, -1, -1, -1, 103, + -1, -1, -1, 107, 108, 109, 110, 111, 112, 113, + 114, 115, -1, 117, -1, 119, 120, 121, 122, 123, + 124, -1, 126, 127, 128, 129, -1, -1, 132, 133, + 134, 135, 136, -1, 138, 139, 140, -1, 142, 143, + 144, -1, 146, 147, 148, 149, -1, 151, 152, 153, + 154, -1, -1, 157, -1, 159, 160, 161, 162, -1, + 164, -1, 166, 167, -1, 169, 170, 171, 172, 173, + -1, 175, -1, -1, -1, 179, 180, -1, 182, 183, + 184, 185, 186, 187, 188, 189, 190, 191, -1, 193, + 194, 195, 196, 197, 198, 199, -1, 201, 202, -1, + 204, 205, 206, 207, 208, 209, -1, 211, -1, 213, + 214, 215, 216, 217, 218, 219, 220, 221, 222, -1, + -1, 225, -1, 227, 228, 229, -1, 231, 232, 233, + -1, -1, 236, 237, 238, 239, 240, 241, 242, 243, + 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, + 254, 255, 256, 257, 258, 259, 260, 261, -1, -1, + 264, -1, 266, 267, 268, 269, -1, -1, 272, 273, + 274, 275, 276, -1, 278, 279, -1, -1, 282, 283, + 284, -1, -1, 287, 288, -1, 290, 291, 292, -1, + 294, 295, 296, 297, 298, 299, 300, 301, 302, -1, + 304, 305, -1, 307, -1, 309, 310, 311, -1, 313, + 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, + 324, 325, 326, 327, -1, 329, 330, 331, 332, 333, + 334, 335, 336, 337, 338, 339, 340, -1, 342, 343, + 344, 345, 346, 347, 348, 349, -1, 351, 352, 353, + 354, 355, 356, 357, 358, 359, -1, 361, 362, 363, + 364, 365, -1, 367, 368, 369, 370, 371, 372, 373, + 374, 375, 376, -1, 378, 379, 380, 381, 382, 383, + 384, 385, 386, 387, 388, 389, 390, -1, 392, -1, + 394, 395, -1, 397, 398, 399, 400, 401, 402, 403, + -1, 405, 406, 407, -1, -1, 410, 411, -1, 413, + -1, -1, 416, 417, 418, 419, 420, 421, 422, 423, + -1, -1, 426, 427, 428, 429, 430, -1, -1, 433, + 434, 435, 436, 437, -1, 439, -1, 441, 442, 443, + 444, 445, 446, -1, -1, 449, -1, -1, 452, 453, + 454, 455, 456, 457, 3, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 469, 470, 471, -1, -1, + -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, + 29, -1, 31, 32, 33, -1, -1, -1, -1, -1, + -1, -1, 41, 42, -1, 44, 45, 46, 47, 48, + 49, 50, -1, 52, 53, 54, 55, -1, 57, 58, + 59, 60, 61, 62, -1, -1, 65, 66, 67, 68, + 69, -1, 71, 72, 73, 74, -1, -1, 77, -1, + 79, 80, 81, 82, 83, 84, 85, 86, 87, -1, + 89, 90, 91, 92, 93, 94, -1, 96, 97, 98, + 99, -1, -1, -1, 103, -1, -1, -1, 107, 108, + 109, 110, 111, 112, 113, 114, 115, -1, 117, -1, + 119, 120, 121, 122, 123, 124, -1, 126, 127, 128, + 129, -1, -1, 132, 133, 134, 135, 136, -1, 138, + 139, 140, -1, 142, 143, 144, -1, 146, 147, 148, + 149, -1, 151, 152, 153, 154, -1, -1, 157, -1, + 159, 160, 161, 162, -1, 164, -1, 166, 167, -1, + 169, 170, 171, 172, 173, -1, 175, -1, -1, -1, + 179, 180, -1, 182, 183, 184, 185, 186, 187, 188, + 189, 190, 191, -1, 193, 194, 195, 196, 197, 198, + 199, -1, 201, 202, -1, 204, 205, 206, 207, 208, + 209, -1, 211, -1, 213, 214, 215, 216, 217, 218, + 219, 220, 221, 222, -1, -1, 225, -1, 227, 228, + 229, -1, 231, 232, 233, -1, -1, 236, 237, 238, + 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, + 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, + 259, 260, 261, -1, -1, 264, -1, 266, 267, 268, + 269, -1, -1, 272, 273, 274, 275, 276, -1, 278, + 279, -1, -1, 282, 283, 284, -1, -1, 287, 288, + -1, 290, 291, 292, -1, 294, 295, 296, 297, 298, + 299, 300, 301, 302, -1, 304, 305, -1, 307, -1, + 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, + 319, 320, 321, 322, 323, 324, 325, 326, 327, -1, + 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, + 339, 340, -1, 342, 343, 344, 345, 346, 347, 348, + 349, -1, 351, 352, 353, 354, 355, 356, 357, 358, + 359, -1, 361, 362, 363, 364, 365, -1, 367, 368, + 369, 370, 371, 372, 373, 374, 375, 376, -1, 378, + 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, + 389, 390, -1, 392, -1, 394, 395, -1, 397, 398, + 399, 400, 401, 402, 403, -1, 405, 406, 407, -1, + -1, 410, 411, -1, 413, -1, -1, 416, 417, 418, + 419, 420, 421, 422, 423, -1, -1, 426, 427, 428, + 429, 430, -1, -1, 433, 434, 435, 436, 437, -1, + 439, -1, 441, 442, 443, 444, 445, 446, -1, -1, + 449, -1, -1, 452, 453, 454, 455, 456, 457, 3, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 469, 470, 471, -1, -1, -1, -1, -1, 22, 23, + 24, 25, 26, 27, 28, 29, -1, 31, 32, 33, + -1, -1, -1, -1, -1, -1, -1, 41, 42, -1, + 44, 45, 46, 47, 48, 49, 50, -1, 52, 53, + 54, 55, -1, 57, 58, 59, 60, 61, 62, -1, + -1, 65, 66, 67, 68, 69, -1, 71, 72, 73, + 74, -1, -1, 77, -1, 79, 80, 81, 82, 83, + 84, 85, 86, 87, -1, 89, 90, 91, 92, 93, + 94, -1, 96, 97, 98, 99, -1, -1, -1, 103, + -1, -1, -1, 107, 108, 109, 110, 111, 112, 113, + 114, 115, -1, 117, -1, 119, 120, 121, 122, 123, + 124, -1, 126, 127, 128, 129, -1, -1, 132, 133, + 134, 135, 136, -1, 138, 139, 140, -1, 142, 143, + 144, -1, 146, 147, 148, 149, -1, 151, 152, 153, + 154, -1, -1, 157, -1, 159, 160, 161, 162, -1, + 164, -1, 166, 167, -1, 169, 170, 171, 172, 173, + -1, 175, -1, -1, -1, 179, 180, -1, 182, 183, + 184, 185, 186, 187, 188, 189, 190, 191, -1, 193, + 194, 195, 196, 197, 198, 199, -1, 201, 202, -1, + 204, 205, 206, 207, 208, 209, -1, 211, -1, 213, + 214, 215, 216, 217, 218, 219, 220, 221, 222, -1, + -1, 225, -1, 227, 228, 229, -1, 231, 232, 233, + -1, -1, 236, 237, 238, 239, 240, 241, 242, 243, + 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, + 254, 255, 256, 257, 258, 259, 260, 261, -1, -1, + 264, -1, 266, 267, 268, 269, -1, -1, 272, 273, + 274, 275, 276, -1, 278, 279, -1, -1, 282, 283, + 284, -1, -1, 287, 288, -1, 290, 291, 292, -1, + 294, 295, 296, 297, 298, 299, 300, 301, 302, -1, + 304, 305, -1, 307, -1, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, - 324, -1, 326, 327, 328, 329, 330, 331, -1, 333, - 334, 335, 336, 337, 338, 339, 340, 341, -1, 343, - 344, 345, 346, 347, -1, 349, 350, 351, 352, 353, - 354, 355, 356, 357, 358, -1, 360, 361, 362, 363, - 364, 365, 366, 367, 368, 369, 370, 371, -1, -1, - 374, 375, -1, 377, 378, 379, 380, 381, 382, 383, - -1, 385, 386, -1, -1, 389, 390, -1, 392, -1, - -1, 395, 396, 397, 398, 399, 400, 401, -1, -1, - 404, 405, 406, 407, 408, -1, -1, 411, 412, 413, - 414, 415, -1, 417, -1, 419, 420, 421, 422, 423, - 424, -1, -1, 427, -1, -1, 430, 431, 432, 433, - 434, 435, 3, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 447, 448, 449, -1, 18, 19, 20, - 21, 22, 23, 24, 25, -1, 27, 28, 29, -1, - -1, -1, -1, -1, -1, -1, 37, 38, -1, 40, - 41, 42, 43, 44, 45, 46, -1, 48, 49, 50, - 51, -1, 53, 54, 55, 56, 57, -1, -1, 60, - 61, 62, 63, 64, -1, 66, 67, 68, 69, -1, - -1, 72, -1, 74, 75, 76, 77, 78, 79, 80, - 81, 82, -1, 84, 85, 86, 87, 88, 89, -1, - 91, 92, 93, 94, -1, -1, -1, 98, -1, -1, - -1, 102, 103, 104, 105, 106, 107, 108, 109, 110, - -1, 112, -1, 114, 115, 116, 117, 118, 119, -1, - 121, 122, 123, 124, -1, -1, 127, 128, 129, 130, - 131, -1, 133, 134, 135, -1, 137, 138, 139, -1, - 141, 142, 143, 144, -1, 146, 147, 148, -1, -1, - 151, -1, 153, 154, 155, 156, -1, 158, -1, 160, - 161, -1, 163, 164, 165, 166, 167, -1, 169, -1, - -1, -1, 173, -1, 175, 176, 177, 178, 179, 180, - 181, 182, 183, 184, -1, 186, 187, 188, 189, 190, - 191, -1, 193, 194, -1, 196, 197, 198, 199, 200, - 201, -1, 203, -1, 205, 206, 207, 208, 209, 210, - 211, 212, 213, 214, -1, -1, 217, -1, 219, 220, - 221, -1, 223, 224, 225, -1, -1, 228, 229, 230, - 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, - 241, 242, 243, 244, 245, 246, 247, 248, 249, -1, - -1, 252, 253, 254, 255, -1, -1, 258, 259, 260, - 261, 262, -1, 264, 265, -1, -1, 268, 269, 270, - -1, -1, 273, -1, 275, 276, 277, -1, 279, 280, - 281, 282, 283, 284, 285, 286, 287, -1, 289, 290, - -1, 292, -1, 294, 295, 296, -1, 298, 299, 300, - 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, - 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, - 321, 322, 323, 324, -1, 326, 327, 328, 329, 330, - 331, -1, 333, 334, 335, 336, 337, 338, 339, 340, - 341, -1, 343, 344, 345, 346, 347, -1, 349, 350, - 351, 352, 353, 354, 355, 356, 357, 358, -1, 360, - 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, - 371, -1, -1, 374, 375, -1, 377, 378, 379, 380, - 381, 382, 383, -1, 385, 386, -1, -1, 389, 390, - -1, 392, -1, -1, 395, 396, 397, 398, 399, 400, - 401, -1, -1, 404, 405, 406, 407, 408, -1, -1, - 411, 412, 413, 414, 415, -1, 417, -1, 419, 420, - 421, 422, 423, 424, -1, -1, 427, -1, -1, 430, - 431, 432, 433, 434, 435, 3, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 447, 448, 449, -1, - 18, 19, 20, 21, 22, 23, 24, 25, -1, 27, - 28, 29, -1, -1, -1, -1, -1, -1, -1, 37, - 38, -1, 40, 41, 42, 43, 44, 45, 46, -1, - 48, 49, 50, 51, -1, 53, 54, 55, 56, 57, - -1, -1, 60, 61, 62, 63, 64, -1, 66, 67, - 68, 69, -1, -1, 72, -1, 74, 75, 76, 77, - 78, 79, 80, 81, 82, -1, 84, 85, 86, 87, - 88, 89, -1, 91, 92, 93, 94, -1, -1, -1, - 98, -1, -1, -1, 102, 103, 104, 105, 106, 107, - 108, 109, 110, -1, 112, -1, 114, 115, 116, 117, - 118, 119, -1, 121, 122, 123, 124, -1, -1, 127, - 128, 129, 130, 131, -1, 133, 134, 135, -1, 137, - 138, 139, -1, 141, 142, 143, 144, -1, 146, 147, - 148, -1, -1, 151, -1, 153, 154, 155, 156, -1, - 158, -1, 160, 161, -1, 163, 164, 165, 166, 167, - -1, 169, -1, -1, -1, 173, -1, 175, 176, 177, - 178, 179, 180, 181, 182, 183, 184, -1, 186, 187, - 188, 189, 190, 191, -1, 193, 194, -1, 196, 197, - 198, 199, 200, 201, -1, 203, -1, 205, 206, 207, - 208, 209, 210, 211, 212, 213, 214, -1, -1, 217, - -1, 219, 220, 221, -1, 223, 224, 225, -1, -1, - 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, - 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, - 248, 249, -1, -1, 252, 253, 254, 255, -1, -1, - 258, 259, 260, 261, 262, -1, 264, 265, -1, -1, - 268, 269, 270, -1, -1, 273, -1, 275, 276, 277, - -1, 279, 280, 281, 282, 283, 284, 285, 286, 287, - -1, 289, 290, -1, 292, -1, 294, 295, 296, -1, - 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, - 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, - 318, 319, 320, 321, 322, 323, 324, -1, 326, 327, - 328, 329, 330, 331, -1, 333, 334, 335, 336, 337, - 338, 339, 340, 341, -1, 343, 344, 345, 346, 347, - -1, 349, 350, 351, 352, 353, 354, 355, 356, 357, - 358, -1, 360, 361, 362, 363, 364, 365, 366, 367, - 368, 369, 370, 371, -1, -1, 374, 375, -1, 377, - 378, 379, 380, 381, 382, 383, -1, 385, 386, -1, - -1, 389, 390, -1, 392, -1, -1, 395, 396, 397, - 398, 399, 400, 401, -1, -1, 404, 405, 406, 407, - 408, -1, -1, 411, 412, 413, 414, 415, -1, 417, - -1, 419, 420, 421, 422, 423, 424, -1, -1, 427, - -1, -1, 430, 431, 432, 433, 434, 435, 3, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 447, - 448, 449, -1, 18, 19, 20, 21, 22, 23, 24, - 25, -1, 27, 28, 29, -1, -1, -1, -1, -1, - -1, -1, 37, 38, -1, 40, 41, 42, 43, 44, - 45, 46, -1, 48, 49, 50, 51, -1, 53, 54, - 55, 56, 57, -1, -1, 60, 61, 62, 63, 64, - -1, 66, 67, 68, 69, -1, -1, 72, -1, 74, - 75, 76, 77, 78, 79, 80, 81, 82, -1, 84, - 85, 86, 87, 88, 89, -1, 91, 92, 93, 94, - -1, -1, -1, 98, -1, -1, -1, 102, 103, 104, - 105, 106, 107, 108, 109, 110, -1, 112, -1, 114, - 115, 116, 117, 118, 119, -1, 121, 122, 123, 124, - -1, -1, 127, 128, 129, 130, 131, -1, 133, 134, - 135, -1, 137, 138, 139, -1, 141, 142, 143, 144, - -1, 146, 147, 148, -1, -1, 151, -1, 153, 154, - 155, 156, -1, 158, -1, 160, 161, -1, 163, 164, - 165, 166, 167, -1, 169, -1, -1, -1, 173, -1, - 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, - -1, 186, 187, 188, 189, 190, 191, -1, 193, 194, - -1, 196, 197, 198, 199, 200, 201, -1, 203, -1, - 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, - -1, -1, 217, -1, 219, 220, 221, -1, 223, 224, - 225, -1, -1, 228, 229, 230, 231, 232, 233, 234, - 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, - 245, 246, 247, 248, 249, -1, -1, 252, 253, 254, - 255, -1, -1, 258, 259, 260, 261, 262, -1, 264, - 265, -1, -1, 268, 269, 270, -1, -1, 273, -1, - 275, 276, 277, -1, 279, 280, 281, 282, 283, 284, - 285, 286, 287, -1, 289, 290, -1, 292, -1, 294, - 295, 296, -1, 298, 299, 300, 301, 302, 303, 304, - 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, - 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, - -1, 326, 327, 328, 329, 330, 331, -1, 333, 334, - 335, 336, 337, 338, 339, 340, 341, -1, 343, 344, - 345, 346, 347, -1, 349, 350, -1, 352, 353, 354, - 355, 356, 357, 358, -1, 360, 361, 362, 363, 364, - 365, 366, 367, 368, 369, 370, 371, -1, -1, 374, - 375, -1, 377, 378, 379, 380, 381, 382, 383, -1, - 385, 386, -1, -1, 389, 390, -1, 392, -1, -1, - 395, 396, 397, 398, 399, 400, 401, -1, -1, 404, - 405, 406, 407, 408, -1, -1, 411, 412, 413, 414, - 415, -1, 417, -1, 419, 420, 421, 422, 423, 424, - -1, -1, 427, -1, -1, 430, 431, 432, 433, 434, - 435, 3, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 447, 448, 449, -1, 18, 19, 20, 21, - 22, 23, 24, 25, -1, 27, 28, 29, -1, -1, - -1, -1, -1, -1, -1, 37, 38, -1, 40, 41, - 42, 43, 44, 45, 46, -1, -1, 49, -1, -1, - -1, 53, 54, 55, 56, 57, -1, -1, 60, 61, - -1, -1, 64, -1, 66, 67, 68, 69, -1, -1, - 72, -1, 74, 75, 76, 77, 78, 79, 80, 81, - 82, -1, 84, 85, 86, 87, 88, 89, -1, 91, - 92, 93, 94, -1, -1, -1, 98, -1, -1, -1, - 102, 103, 104, 105, 106, 107, -1, -1, 110, -1, - 112, -1, 114, 115, 116, 117, 118, 119, -1, 121, - 122, 123, 124, -1, -1, 127, 128, 129, 130, 131, - -1, 133, 134, 135, -1, 137, 138, 139, -1, 141, - 142, 143, 144, -1, 146, 147, 148, -1, -1, 151, - -1, 153, 154, -1, 156, -1, 158, -1, 160, 161, - -1, 163, 164, 165, 166, 167, -1, 169, -1, -1, - -1, 173, -1, 175, 176, 177, 178, 179, 180, 181, - 182, 183, 184, -1, 186, 187, 188, 189, 190, 191, - -1, 193, 194, -1, 196, 197, 198, 199, -1, -1, - -1, -1, -1, 205, 206, 207, 208, 209, 210, 211, - 212, 213, 214, -1, -1, 217, -1, 219, 220, 221, - -1, 223, 224, 225, -1, -1, 228, 229, 230, 231, - 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, - 242, 243, -1, 245, -1, 247, 248, 249, -1, -1, - 252, 253, 254, 255, -1, -1, 258, -1, 260, 261, - 262, -1, 264, 265, -1, -1, 268, 269, 270, -1, - -1, 273, -1, 275, 276, 277, -1, 279, 280, 281, - 282, 283, 284, 285, 286, 287, -1, 289, 290, -1, - 292, -1, 294, 295, 296, -1, 298, 299, 300, 301, - 302, 303, 304, 305, 306, -1, 308, 309, 310, 311, - -1, 313, 314, 315, 316, 317, 318, 319, 320, 321, - 322, 323, 324, -1, 326, 327, 328, 329, 330, 331, - -1, 333, 334, 335, 336, 337, 338, 339, 340, 341, - -1, 343, 344, 345, 346, 347, -1, 349, 350, -1, - 352, 353, 354, 355, 356, -1, 358, -1, 360, 361, - 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, - -1, -1, 374, 375, -1, 377, 378, 379, 380, 381, - 382, 383, -1, -1, -1, -1, -1, 389, 390, -1, - 392, -1, -1, 395, 396, 397, 398, 399, 400, 401, - -1, -1, 404, 405, 406, 407, 408, -1, -1, 411, - 412, 413, 414, 415, -1, -1, -1, 419, 420, 421, - 422, 423, 424, -1, -1, 427, -1, -1, 430, 431, - 432, 433, 434, 435, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 447, 448, 449 + 324, 325, 326, 327, -1, 329, 330, 331, 332, 333, + 334, 335, 336, 337, 338, 339, 340, -1, 342, 343, + 344, 345, 346, 347, 348, 349, -1, 351, 352, 353, + 354, 355, 356, 357, 358, 359, -1, 361, 362, 363, + 364, 365, -1, 367, 368, 369, 370, 371, 372, 373, + 374, 375, 376, -1, 378, 379, 380, 381, 382, 383, + 384, 385, 386, 387, 388, 389, 390, -1, 392, -1, + 394, 395, -1, 397, 398, 399, 400, 401, 402, 403, + -1, 405, 406, 407, -1, -1, 410, 411, -1, 413, + -1, -1, 416, 417, 418, 419, 420, 421, 422, 423, + -1, -1, 426, 427, 428, 429, 430, -1, -1, 433, + 434, 435, 436, 437, -1, 439, -1, 441, 442, 443, + 444, 445, 446, -1, -1, 449, -1, -1, 452, 453, + 454, 455, 456, 457, 3, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 469, 470, 471, -1, -1, + -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, + 29, -1, 31, 32, 33, -1, -1, -1, -1, -1, + -1, -1, 41, 42, -1, 44, 45, 46, 47, 48, + 49, 50, -1, 52, 53, 54, 55, -1, 57, 58, + 59, 60, 61, 62, -1, -1, 65, 66, 67, 68, + 69, -1, 71, 72, 73, 74, -1, -1, 77, -1, + 79, 80, 81, 82, 83, 84, 85, 86, 87, -1, + 89, 90, 91, 92, 93, 94, -1, 96, 97, 98, + 99, -1, -1, -1, 103, -1, -1, -1, 107, 108, + 109, 110, 111, 112, 113, 114, 115, -1, 117, -1, + 119, 120, 121, 122, 123, 124, -1, 126, 127, 128, + 129, -1, -1, 132, 133, 134, 135, 136, -1, 138, + 139, 140, -1, 142, 143, 144, -1, 146, 147, 148, + 149, -1, 151, 152, 153, 154, -1, -1, 157, -1, + 159, 160, 161, 162, -1, 164, -1, 166, 167, -1, + 169, 170, 171, 172, 173, -1, 175, -1, -1, -1, + 179, 180, -1, 182, 183, 184, 185, 186, 187, 188, + 189, 190, 191, -1, 193, 194, 195, 196, 197, 198, + 199, -1, 201, 202, -1, 204, 205, 206, 207, 208, + 209, -1, 211, -1, 213, 214, 215, 216, 217, 218, + 219, 220, 221, 222, -1, -1, 225, -1, 227, 228, + 229, -1, 231, 232, 233, -1, -1, 236, 237, 238, + 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, + 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, + 259, 260, 261, -1, -1, 264, -1, 266, 267, 268, + 269, -1, -1, 272, 273, 274, 275, 276, -1, 278, + 279, -1, -1, 282, 283, 284, -1, -1, 287, 288, + -1, 290, 291, 292, -1, 294, 295, 296, 297, 298, + 299, 300, 301, 302, -1, 304, 305, -1, 307, -1, + 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, + 319, 320, 321, 322, 323, 324, 325, 326, 327, -1, + 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, + 339, 340, -1, 342, 343, 344, 345, 346, 347, 348, + 349, -1, 351, 352, 353, 354, 355, 356, 357, 358, + 359, -1, 361, 362, 363, 364, 365, -1, 367, 368, + -1, 370, 371, 372, 373, 374, 375, 376, -1, 378, + 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, + 389, 390, -1, 392, -1, 394, 395, -1, 397, 398, + 399, 400, 401, 402, 403, -1, 405, 406, 407, -1, + -1, 410, 411, -1, 413, -1, -1, 416, 417, 418, + 419, 420, 421, 422, 423, -1, -1, 426, 427, 428, + 429, 430, -1, -1, 433, 434, 435, 436, 437, -1, + 439, -1, 441, 442, 443, 444, 445, 446, -1, -1, + 449, -1, -1, 452, 453, 454, 455, 456, 457, 3, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 469, 470, 471, -1, -1, -1, -1, -1, 22, 23, + 24, 25, 26, 27, 28, 29, -1, 31, 32, 33, + -1, -1, -1, -1, -1, -1, -1, 41, 42, -1, + 44, 45, 46, 47, 48, 49, 50, -1, -1, 53, + -1, -1, -1, 57, 58, 59, 60, 61, 62, -1, + -1, 65, 66, -1, -1, 69, -1, 71, 72, 73, + 74, -1, -1, 77, -1, 79, 80, 81, 82, 83, + 84, 85, 86, 87, -1, 89, 90, 91, 92, 93, + 94, -1, 96, 97, 98, 99, -1, -1, -1, 103, + -1, -1, -1, 107, 108, 109, 110, 111, 112, -1, + -1, 115, -1, 117, -1, 119, 120, 121, 122, 123, + 124, -1, 126, 127, 128, 129, -1, -1, 132, 133, + 134, 135, 136, -1, 138, 139, 140, -1, 142, 143, + 144, -1, 146, 147, 148, 149, -1, 151, 152, 153, + 154, -1, -1, 157, -1, 159, 160, -1, 162, -1, + 164, -1, 166, 167, -1, 169, 170, 171, 172, 173, + -1, 175, -1, -1, -1, 179, 180, -1, 182, 183, + 184, 185, 186, 187, 188, 189, 190, 191, -1, 193, + 194, 195, 196, 197, 198, 199, -1, 201, 202, -1, + 204, 205, 206, 207, -1, -1, -1, -1, -1, 213, + 214, 215, 216, 217, 218, 219, 220, 221, 222, -1, + -1, 225, -1, 227, 228, 229, -1, 231, 232, 233, + -1, -1, 236, 237, 238, 239, 240, 241, 242, 243, + 244, 245, 246, 247, 248, 249, 250, 251, -1, 253, + -1, 255, 256, 257, 258, 259, 260, 261, -1, -1, + 264, -1, 266, 267, 268, 269, -1, -1, 272, -1, + 274, 275, 276, -1, 278, 279, -1, -1, 282, 283, + 284, -1, -1, 287, 288, -1, 290, 291, 292, -1, + 294, 295, 296, 297, 298, 299, 300, 301, 302, -1, + 304, 305, -1, 307, -1, 309, 310, 311, -1, 313, + 314, 315, 316, 317, 318, 319, 320, 321, 322, -1, + 324, 325, 326, 327, -1, 329, 330, 331, 332, 333, + 334, 335, 336, 337, 338, 339, 340, -1, 342, 343, + 344, 345, 346, 347, 348, 349, -1, 351, 352, 353, + 354, 355, 356, 357, 358, 359, -1, 361, 362, 363, + 364, 365, -1, 367, 368, -1, 370, 371, 372, 373, + 374, -1, 376, -1, 378, 379, 380, 381, 382, 383, + 384, 385, 386, 387, 388, 389, 390, -1, 392, -1, + 394, 395, -1, 397, 398, 399, 400, 401, 402, 403, + -1, 405, -1, -1, -1, -1, 410, 411, -1, 413, + -1, -1, 416, 417, 418, 419, 420, 421, 422, 423, + -1, -1, 426, 427, 428, 429, 430, -1, -1, 433, + 434, 435, 436, 437, -1, -1, -1, 441, 442, 443, + 444, 445, 446, -1, -1, 449, -1, -1, 452, 453, + 454, 455, 456, 457, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 469, 470, 471 }; /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing symbol of state STATE-NUM. */ static const yytype_uint16 yystos[] = { - 0, 18, 28, 30, 31, 46, 66, 68, 69, 75, - 77, 88, 90, 107, 110, 124, 126, 130, 136, 144, - 146, 152, 168, 184, 223, 224, 229, 241, 253, 295, - 308, 314, 315, 317, 322, 327, 330, 335, 341, 342, - 349, 353, 363, 376, 395, 405, 411, 416, 429, 452, - 467, 474, 475, 476, 477, 483, 484, 486, 487, 488, - 489, 491, 495, 507, 512, 513, 516, 517, 518, 538, - 541, 542, 558, 601, 602, 605, 608, 609, 610, 618, - 624, 626, 628, 629, 632, 635, 636, 640, 649, 653, - 654, 655, 656, 659, 661, 662, 663, 664, 672, 673, - 692, 696, 698, 699, 700, 710, 712, 719, 720, 723, - 724, 725, 726, 727, 735, 737, 741, 746, 750, 751, - 759, 760, 763, 768, 779, 806, 809, 810, 811, 816, - 819, 821, 823, 825, 826, 831, 832, 835, 836, 837, - 841, 842, 845, 846, 849, 850, 851, 858, 860, 861, - 862, 867, 869, 870, 876, 877, 878, 879, 880, 881, - 882, 884, 885, 887, 888, 890, 893, 894, 899, 905, - 908, 910, 911, 920, 922, 927, 932, 936, 937, 938, - 939, 940, 941, 944, 979, 389, 432, 863, 25, 72, - 87, 105, 111, 128, 139, 147, 159, 164, 171, 188, - 213, 234, 268, 290, 300, 303, 329, 334, 336, 343, - 346, 365, 371, 375, 376, 379, 383, 392, 397, 409, - 422, 625, 863, 3, 18, 19, 20, 21, 22, 23, - 24, 25, 26, 27, 28, 29, 37, 38, 40, 41, - 42, 44, 45, 46, 47, 48, 50, 51, 53, 54, - 55, 56, 57, 60, 61, 62, 63, 64, 66, 67, - 68, 69, 70, 74, 75, 76, 77, 78, 80, 81, - 82, 84, 85, 86, 87, 88, 89, 92, 93, 94, - 102, 103, 104, 105, 106, 107, 108, 109, 110, 112, - 114, 115, 116, 117, 118, 119, 121, 122, 123, 124, - 127, 128, 129, 130, 131, 133, 134, 135, 137, 138, - 139, 141, 142, 143, 144, 145, 146, 147, 148, 149, - 151, 153, 154, 155, 156, 158, 160, 164, 165, 166, - 167, 169, 170, 172, 173, 175, 176, 177, 178, 179, - 181, 182, 183, 184, 186, 187, 188, 189, 190, 191, - 193, 195, 196, 197, 198, 199, 200, 201, 203, 205, - 208, 210, 211, 212, 213, 214, 217, 218, 220, 223, - 224, 225, 228, 229, 230, 231, 232, 233, 234, 235, - 236, 237, 238, 239, 240, 241, 242, 243, 244, 246, - 247, 248, 249, 250, 252, 253, 255, 257, 258, 259, - 260, 261, 262, 264, 265, 268, 269, 270, 273, 274, - 276, 278, 279, 280, 281, 282, 283, 284, 285, 286, - 287, 289, 290, 291, 292, 293, 294, 295, 296, 298, - 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, + 0, 22, 32, 34, 35, 50, 59, 71, 73, 74, + 80, 82, 93, 95, 112, 115, 129, 131, 135, 141, + 149, 151, 158, 174, 191, 231, 232, 237, 249, 267, + 310, 324, 330, 331, 333, 338, 343, 346, 353, 359, + 360, 367, 371, 381, 396, 416, 427, 433, 438, 451, + 474, 489, 496, 497, 498, 499, 500, 506, 507, 509, + 510, 511, 512, 514, 518, 530, 535, 536, 539, 540, + 541, 560, 563, 564, 579, 623, 624, 625, 628, 631, + 632, 633, 641, 647, 649, 651, 652, 655, 658, 659, + 663, 672, 676, 677, 678, 679, 682, 684, 685, 686, + 687, 695, 697, 717, 721, 723, 724, 734, 736, 743, + 744, 747, 748, 749, 750, 751, 759, 761, 765, 770, + 774, 775, 783, 784, 787, 792, 806, 833, 836, 837, + 838, 843, 846, 848, 850, 852, 853, 858, 859, 862, + 864, 865, 869, 870, 871, 874, 875, 878, 879, 880, + 887, 889, 890, 891, 897, 899, 900, 906, 907, 908, + 911, 912, 913, 914, 916, 917, 919, 920, 922, 923, + 925, 937, 943, 946, 948, 949, 958, 960, 965, 970, + 974, 975, 976, 977, 978, 979, 983, 1018, 410, 454, + 892, 29, 77, 92, 110, 116, 133, 144, 153, 165, + 170, 177, 196, 221, 242, 282, 305, 315, 316, 319, + 345, 348, 352, 354, 361, 364, 383, 390, 395, 396, + 399, 403, 413, 418, 431, 444, 648, 892, 3, 22, + 23, 24, 25, 26, 27, 28, 29, 31, 32, 33, + 41, 42, 44, 45, 46, 47, 48, 49, 50, 51, + 52, 53, 54, 55, 57, 58, 59, 60, 61, 62, + 65, 66, 67, 68, 69, 71, 72, 73, 74, 75, + 77, 79, 80, 81, 82, 83, 84, 85, 86, 87, + 89, 90, 91, 92, 93, 94, 96, 97, 98, 99, + 103, 107, 108, 109, 110, 111, 112, 113, 114, 115, + 117, 119, 120, 121, 122, 123, 124, 126, 127, 128, + 129, 132, 133, 134, 135, 136, 138, 139, 140, 142, + 143, 144, 146, 147, 148, 149, 150, 151, 152, 153, + 154, 155, 157, 159, 160, 161, 162, 164, 166, 167, + 169, 170, 171, 172, 173, 175, 176, 178, 179, 180, + 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, + 193, 194, 195, 196, 197, 198, 199, 201, 202, 203, + 204, 205, 206, 207, 208, 209, 211, 213, 214, 215, + 216, 217, 218, 219, 220, 221, 222, 225, 226, 227, + 228, 229, 231, 232, 233, 236, 237, 238, 239, 240, + 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, + 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, + 261, 262, 263, 264, 266, 267, 268, 269, 271, 272, + 273, 274, 275, 276, 278, 279, 282, 283, 284, 287, + 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, + 298, 299, 300, 301, 302, 304, 305, 306, 307, 308, 309, 310, 311, 313, 314, 315, 316, 317, 318, 319, - 320, 321, 322, 323, 324, 326, 327, 329, 330, 331, - 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, - 343, 344, 345, 346, 347, 349, 350, 351, 352, 353, - 355, 356, 357, 358, 360, 361, 362, 363, 364, 365, - 366, 367, 368, 369, 370, 371, 372, 374, 375, 377, - 379, 380, 381, 382, 383, 385, 386, 389, 390, 391, - 392, 393, 395, 396, 397, 398, 399, 400, 401, 404, - 405, 406, 407, 408, 411, 412, 413, 414, 415, 416, - 417, 419, 421, 422, 423, 424, 427, 430, 431, 432, - 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, - 443, 444, 445, 446, 447, 448, 449, 933, 1104, 1122, - 1126, 1127, 420, 895, 266, 296, 863, 49, 467, 549, - 20, 25, 37, 59, 72, 83, 105, 111, 128, 139, - 147, 159, 167, 171, 225, 268, 271, 290, 303, 329, - 336, 346, 365, 371, 379, 380, 382, 383, 392, 397, - 403, 406, 409, 559, 607, 715, 769, 780, 26, 295, - 1104, 933, 26, 289, 344, 380, 382, 5, 212, 817, - 818, 1113, 20, 25, 37, 59, 72, 87, 105, 128, - 139, 147, 159, 164, 171, 188, 234, 268, 280, 290, - 303, 329, 334, 336, 343, 346, 365, 371, 376, 379, - 383, 390, 392, 397, 409, 422, 625, 728, 729, 730, - 863, 1104, 90, 420, 467, 602, 605, 608, 894, 900, - 908, 911, 920, 927, 932, 936, 9, 19, 26, 44, - 154, 160, 162, 185, 214, 248, 298, 316, 457, 458, - 747, 748, 933, 1112, 1114, 26, 90, 312, 342, 752, - 753, 754, 1122, 159, 1122, 1109, 1113, 376, 947, 747, - 1122, 389, 1104, 280, 234, 105, 188, 336, 375, 376, - 467, 827, 828, 335, 1122, 26, 347, 385, 389, 499, - 508, 509, 1122, 23, 168, 752, 753, 296, 863, 1122, - 211, 26, 125, 949, 950, 60, 84, 225, 243, 329, - 336, 347, 385, 389, 435, 496, 497, 498, 499, 26, - 347, 385, 389, 499, 389, 267, 990, 1102, 1122, 947, - 459, 1122, 163, 467, 896, 467, 310, 942, 943, 1104, - 942, 937, 938, 941, 0, 470, 895, 140, 202, 272, - 402, 951, 952, 937, 939, 940, 116, 198, 408, 471, - 3, 43, 49, 72, 79, 91, 98, 161, 163, 180, - 194, 206, 207, 209, 219, 221, 245, 254, 275, 277, - 328, 354, 378, 420, 796, 1110, 1122, 1123, 1126, 1128, - 732, 1122, 732, 1105, 1122, 299, 732, 392, 1104, 104, - 376, 784, 1110, 1122, 1128, 3, 101, 348, 1115, 1116, - 1124, 1126, 1127, 1128, 26, 179, 1102, 260, 422, 8, - 15, 16, 17, 67, 151, 453, 454, 455, 457, 458, - 459, 460, 461, 462, 463, 813, 815, 1066, 1067, 1122, - 179, 1104, 1104, 26, 1115, 1116, 1104, 1104, 179, 1102, - 1104, 732, 1104, 322, 349, 26, 179, 990, 1104, 339, - 1104, 732, 26, 232, 1115, 1116, 179, 1102, 212, 113, - 208, 251, 306, 864, 865, 866, 1102, 1108, 1122, 20, - 25, 59, 72, 73, 83, 87, 105, 128, 139, 147, - 159, 164, 188, 213, 234, 268, 290, 303, 329, 334, - 336, 343, 346, 365, 371, 376, 379, 383, 390, 392, - 397, 422, 625, 738, 739, 1113, 907, 911, 920, 927, - 936, 1102, 236, 1110, 1104, 467, 179, 732, 392, 1105, - 732, 392, 179, 1104, 104, 376, 380, 382, 1115, 1116, - 380, 382, 67, 151, 813, 320, 1104, 1104, 1115, 179, - 492, 1122, 179, 1104, 179, 732, 1104, 1104, 339, 1104, - 732, 232, 1115, 310, 343, 376, 422, 234, 87, 188, - 164, 334, 390, 396, 619, 26, 1104, 934, 506, 1113, - 1124, 818, 236, 179, 796, 797, 1104, 179, 822, 179, - 1105, 3, 48, 50, 51, 62, 63, 108, 109, 129, - 155, 179, 200, 201, 203, 244, 246, 259, 307, 351, - 357, 385, 386, 417, 734, 1012, 1014, 1016, 1018, 1020, - 1022, 1023, 1024, 1026, 1027, 1028, 1030, 1031, 1123, 1126, - 392, 104, 376, 179, 783, 784, 179, 1116, 1117, 79, - 422, 67, 151, 179, 814, 815, 53, 179, 1117, 179, - 1104, 179, 1104, 339, 822, 179, 734, 179, 232, 1117, - 212, 179, 731, 732, 179, 1103, 1104, 179, 1104, 467, - 909, 559, 900, 416, 894, 901, 902, 903, 1124, 895, - 1114, 748, 749, 26, 749, 1114, 749, 26, 749, 1114, - 749, 749, 749, 1114, 1112, 1112, 933, 749, 299, 467, - 467, 579, 579, 579, 266, 387, 471, 579, 336, 990, - 991, 471, 859, 1113, 467, 906, 53, 422, 420, 829, - 830, 1102, 1104, 1122, 43, 449, 208, 469, 269, 269, - 266, 162, 1113, 387, 157, 742, 266, 4, 6, 7, - 8, 10, 34, 48, 50, 51, 58, 59, 62, 63, - 70, 72, 95, 96, 97, 98, 99, 100, 101, 108, - 109, 111, 145, 149, 150, 155, 170, 172, 200, 201, - 203, 218, 226, 227, 244, 246, 251, 256, 257, 259, - 268, 278, 291, 307, 332, 348, 357, 372, 385, 386, - 391, 393, 394, 403, 409, 417, 437, 438, 439, 440, - 442, 443, 444, 445, 450, 457, 458, 459, 463, 467, - 937, 1015, 1018, 1021, 1022, 1023, 1025, 1026, 1027, 1030, - 1031, 1035, 1037, 1038, 1039, 1041, 1062, 1063, 1064, 1068, - 1087, 1092, 1099, 1100, 1110, 1111, 1112, 1113, 1122, 1098, - 1099, 1113, 26, 514, 1101, 1102, 347, 496, 111, 505, - 1113, 463, 506, 1121, 463, 1113, 1119, 43, 64, 496, - 449, 358, 865, 269, 162, 387, 455, 43, 449, 208, - 866, 467, 1102, 459, 465, 469, 1093, 1095, 991, 3, - 161, 163, 420, 891, 892, 894, 161, 897, 1035, 1071, - 942, 471, 467, 898, 468, 468, 476, 1102, 26, 125, - 948, 948, 53, 948, 152, 157, 222, 263, 955, 957, - 958, 973, 975, 976, 977, 951, 952, 162, 204, 990, - 992, 467, 281, 318, 349, 467, 794, 1095, 281, 314, - 318, 349, 469, 733, 281, 318, 349, 3, 82, 134, - 228, 281, 318, 349, 379, 381, 429, 507, 510, 871, - 872, 873, 874, 764, 22, 130, 281, 318, 349, 413, - 522, 1104, 22, 130, 349, 408, 490, 433, 179, 990, - 55, 89, 119, 148, 182, 217, 251, 281, 282, 318, - 326, 333, 341, 349, 361, 369, 424, 507, 511, 799, - 807, 467, 781, 1095, 318, 490, 185, 145, 22, 28, - 69, 119, 123, 130, 133, 158, 190, 249, 251, 261, - 270, 281, 318, 321, 322, 349, 413, 519, 521, 643, - 4, 457, 458, 616, 1114, 26, 179, 1102, 732, 732, - 467, 812, 281, 349, 469, 145, 266, 22, 130, 281, - 318, 349, 185, 485, 318, 429, 452, 478, 485, 266, - 281, 318, 145, 35, 54, 103, 187, 235, 238, 249, - 280, 318, 323, 343, 349, 363, 519, 613, 614, 281, - 318, 421, 643, 651, 281, 318, 349, 82, 123, 133, - 281, 314, 318, 349, 509, 497, 499, 185, 145, 41, - 121, 318, 349, 519, 520, 281, 318, 322, 349, 80, - 122, 283, 381, 266, 22, 28, 130, 281, 318, 349, - 539, 540, 485, 157, 318, 478, 485, 145, 318, 349, - 519, 1104, 220, 113, 267, 434, 471, 864, 410, 889, - 266, 236, 796, 467, 1104, 1012, 392, 104, 376, 784, - 260, 422, 67, 151, 815, 1104, 1104, 339, 157, 1104, - 1012, 212, 732, 1104, 468, 579, 1104, 467, 705, 794, - 65, 1012, 251, 162, 467, 701, 1104, 478, 35, 883, - 1104, 251, 478, 433, 179, 1102, 478, 732, 732, 701, - 406, 559, 266, 157, 843, 844, 478, 251, 43, 493, - 251, 397, 650, 251, 898, 82, 281, 627, 80, 122, - 283, 381, 24, 45, 199, 674, 35, 701, 157, 179, - 478, 422, 179, 1102, 179, 603, 1102, 1102, 422, 732, - 79, 770, 1110, 1104, 157, 625, 49, 102, 197, 249, - 338, 145, 56, 324, 471, 523, 523, 145, 467, 145, - 419, 1029, 1029, 1029, 467, 1017, 1017, 293, 467, 1019, - 145, 62, 63, 1029, 1017, 1014, 431, 452, 467, 1032, - 467, 1032, 471, 523, 34, 1013, 467, 106, 177, 237, - 240, 340, 447, 467, 1033, 1034, 733, 1017, 433, 145, - 471, 523, 145, 471, 179, 731, 179, 732, 179, 732, - 145, 471, 523, 1117, 145, 145, 523, 145, 80, 122, - 283, 381, 157, 145, 523, 145, 157, 179, 179, 506, - 145, 471, 523, 145, 471, 523, 145, 266, 1071, 376, - 468, 471, 150, 266, 394, 503, 506, 616, 904, 900, - 749, 933, 749, 933, 749, 933, 749, 933, 749, 933, - 933, 933, 749, 933, 467, 580, 581, 1122, 580, 26, - 105, 128, 159, 164, 212, 213, 336, 343, 376, 379, - 397, 755, 1101, 1117, 754, 1104, 185, 471, 923, 1113, - 1012, 1074, 35, 1117, 770, 468, 471, 220, 1122, 157, - 157, 755, 1117, 335, 1122, 506, 266, 467, 1096, 465, - 937, 1075, 1035, 1091, 467, 467, 157, 467, 467, 937, - 467, 467, 467, 467, 467, 467, 1035, 467, 467, 467, - 467, 467, 467, 467, 467, 937, 467, 467, 467, 467, - 467, 467, 467, 467, 1035, 1035, 1035, 1096, 937, 1035, - 1071, 1095, 1113, 467, 1113, 3, 8, 11, 15, 16, - 17, 32, 35, 40, 47, 71, 180, 185, 206, 207, - 221, 254, 268, 271, 354, 450, 453, 454, 455, 457, - 458, 459, 460, 461, 462, 463, 1066, 1068, 1070, 430, - 1050, 277, 1035, 204, 471, 945, 467, 1113, 1095, 945, - 114, 181, 515, 471, 64, 111, 1121, 35, 3, 111, - 225, 504, 616, 1031, 1119, 1113, 85, 127, 1047, 94, - 111, 463, 500, 501, 503, 616, 111, 500, 220, 1102, - 1035, 1094, 3, 26, 30, 31, 32, 33, 34, 35, - 36, 39, 52, 58, 59, 65, 71, 73, 83, 90, - 95, 96, 97, 99, 100, 101, 111, 113, 120, 125, - 126, 132, 136, 140, 150, 152, 157, 159, 162, 168, - 171, 174, 185, 192, 202, 204, 215, 216, 222, 226, - 227, 251, 256, 263, 266, 267, 271, 272, 288, 297, - 312, 325, 342, 348, 359, 373, 376, 384, 387, 388, - 394, 402, 403, 409, 410, 418, 425, 426, 428, 429, - 459, 1107, 1125, 1126, 1127, 1128, 1129, 1093, 86, 323, - 736, 468, 471, 895, 468, 471, 943, 1103, 35, 898, - 939, 939, 953, 954, 1035, 939, 154, 248, 964, 210, - 249, 306, 352, 408, 26, 959, 1035, 457, 458, 960, - 961, 1035, 1037, 973, 974, 958, 957, 955, 956, 157, - 976, 261, 978, 955, 973, 992, 912, 1102, 35, 1122, - 349, 1071, 387, 387, 336, 185, 195, 272, 274, 351, - 418, 459, 787, 788, 789, 791, 793, 795, 1012, 1123, - 387, 421, 387, 336, 1107, 469, 387, 387, 336, 222, - 387, 387, 379, 496, 281, 871, 873, 455, 875, 157, - 168, 185, 327, 765, 766, 65, 83, 141, 159, 297, - 403, 576, 577, 83, 111, 251, 387, 83, 387, 111, - 251, 336, 83, 123, 133, 281, 318, 697, 336, 633, - 20, 25, 59, 72, 87, 128, 139, 159, 164, 234, - 268, 336, 343, 346, 376, 383, 390, 397, 422, 625, - 1104, 145, 318, 349, 519, 266, 616, 266, 341, 217, - 387, 1122, 387, 256, 616, 115, 205, 336, 347, 389, - 498, 324, 349, 799, 808, 468, 782, 787, 387, 409, - 379, 1102, 73, 141, 179, 566, 576, 1122, 73, 83, - 833, 266, 266, 332, 334, 392, 83, 833, 29, 321, - 332, 334, 392, 332, 1102, 158, 190, 261, 732, 467, - 387, 387, 178, 467, 527, 231, 379, 406, 429, 431, - 527, 83, 471, 4, 4, 281, 185, 145, 119, 318, - 349, 519, 410, 410, 250, 1012, 387, 336, 467, 813, - 1104, 1102, 376, 376, 387, 387, 376, 701, 105, 349, - 510, 387, 480, 510, 1102, 387, 387, 1102, 1014, 616, - 53, 615, 616, 616, 103, 235, 238, 53, 387, 478, - 242, 336, 478, 249, 614, 387, 387, 256, 1113, 643, - 387, 387, 336, 1113, 387, 303, 387, 303, 701, 379, - 990, 285, 285, 83, 387, 833, 336, 387, 387, 527, - 527, 732, 732, 732, 732, 1102, 42, 415, 42, 42, - 387, 42, 387, 415, 336, 471, 510, 409, 660, 1116, - 387, 480, 510, 1102, 387, 336, 281, 318, 306, 319, - 345, 502, 864, 1108, 1122, 1102, 206, 1012, 266, 206, - 433, 206, 616, 732, 732, 206, 266, 266, 80, 122, - 283, 381, 1012, 266, 206, 206, 206, 387, 429, 550, - 397, 3, 706, 707, 701, 467, 35, 145, 732, 702, - 703, 1125, 24, 871, 1012, 266, 145, 630, 1104, 251, - 285, 467, 479, 715, 410, 310, 422, 1102, 26, 376, - 429, 803, 479, 145, 1116, 90, 168, 494, 558, 609, - 673, 750, 768, 867, 145, 1113, 651, 652, 145, 266, - 1113, 1116, 228, 732, 732, 732, 732, 261, 116, 198, - 395, 408, 675, 676, 137, 305, 467, 660, 251, 479, - 1102, 251, 611, 613, 251, 35, 261, 285, 467, 579, - 579, 179, 606, 1102, 157, 179, 771, 1108, 467, 785, - 35, 1012, 212, 429, 431, 935, 338, 797, 796, 1012, - 1105, 467, 1071, 1112, 734, 1029, 1029, 34, 1013, 385, - 385, 1112, 1112, 1012, 465, 465, 463, 1112, 1118, 387, - 387, 387, 467, 387, 1112, 1017, 783, 784, 1117, 1116, - 145, 523, 145, 410, 145, 410, 814, 815, 523, 1117, - 1104, 1104, 1012, 734, 1117, 660, 145, 145, 523, 731, - 732, 1103, 1104, 1104, 732, 468, 179, 1102, 900, 902, - 933, 933, 933, 933, 933, 933, 580, 468, 471, 468, - 165, 344, 377, 1103, 731, 104, 346, 783, 1103, 260, - 1103, 1101, 1101, 1103, 731, 387, 429, 761, 140, 222, - 657, 658, 20, 143, 332, 352, 924, 990, 255, 925, - 468, 471, 907, 387, 1102, 827, 828, 830, 753, 752, - 753, 162, 169, 762, 1122, 25, 73, 105, 128, 139, - 159, 164, 213, 234, 303, 329, 336, 343, 371, 376, - 379, 397, 422, 625, 743, 744, 1071, 1093, 466, 1071, - 1075, 1076, 425, 1088, 1089, 1035, 1071, 467, 1112, 1112, - 3, 10, 106, 177, 237, 240, 340, 447, 463, 1077, - 1078, 1113, 1071, 1071, 1071, 1112, 1112, 1035, 813, 1035, - 1079, 332, 457, 458, 467, 1036, 1037, 1068, 1081, 468, - 1071, 1035, 1071, 1082, 1035, 52, 162, 216, 388, 1035, - 1071, 1085, 1071, 242, 1037, 1035, 1045, 1046, 1047, 242, - 1035, 1047, 468, 471, 463, 1112, 1033, 1012, 1035, 1035, - 1035, 1035, 1125, 385, 39, 373, 1097, 732, 1035, 467, - 937, 1086, 125, 127, 150, 251, 256, 261, 394, 404, - 1035, 467, 1035, 387, 47, 180, 185, 221, 354, 1035, - 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, - 26, 33, 359, 1065, 171, 153, 1051, 332, 467, 1062, - 167, 225, 376, 380, 382, 406, 946, 1102, 1100, 162, - 980, 26, 125, 418, 459, 468, 789, 1035, 1072, 1073, - 1123, 980, 1102, 389, 467, 1113, 471, 468, 466, 472, - 178, 178, 523, 1102, 892, 893, 1102, 1035, 468, 467, - 471, 36, 120, 410, 777, 332, 333, 457, 458, 961, - 963, 1037, 352, 210, 267, 471, 4, 962, 1112, 962, - 332, 333, 963, 1101, 255, 356, 926, 974, 956, 410, - 921, 111, 279, 467, 913, 936, 35, 1122, 467, 928, - 929, 930, 1122, 468, 1116, 1104, 1104, 274, 53, 1123, - 468, 789, 791, 788, 791, 1123, 272, 468, 471, 733, - 1116, 1104, 1104, 1107, 1116, 1104, 1104, 1116, 1105, 1104, - 111, 503, 1114, 329, 409, 752, 336, 168, 752, 467, - 1104, 410, 772, 210, 210, 410, 467, 600, 179, 1104, - 256, 1116, 1104, 1104, 1035, 256, 1104, 1104, 29, 321, - 387, 387, 1104, 387, 634, 236, 796, 467, 732, 732, - 1012, 392, 104, 376, 784, 422, 67, 151, 815, 1104, - 732, 1104, 732, 339, 157, 1012, 732, 212, 173, 249, - 281, 318, 414, 637, 638, 639, 990, 387, 833, 336, - 256, 147, 115, 205, 1116, 1104, 266, 1104, 468, 471, - 1115, 1117, 1104, 318, 519, 179, 566, 251, 1012, 1104, - 1122, 1104, 147, 220, 1104, 26, 409, 1104, 179, 1104, - 179, 1122, 334, 392, 334, 392, 220, 1104, 26, 409, - 1104, 220, 332, 1102, 22, 130, 349, 644, 645, 646, - 647, 1125, 1116, 1104, 111, 163, 252, 410, 526, 529, - 530, 1125, 1104, 264, 69, 264, 1104, 521, 387, 379, - 1102, 266, 387, 833, 336, 1106, 1122, 1106, 471, 468, - 471, 1116, 1104, 838, 839, 1125, 266, 318, 387, 668, - 991, 991, 1116, 1104, 991, 1105, 1115, 3, 82, 135, - 190, 287, 401, 409, 412, 481, 318, 1116, 1104, 318, - 349, 519, 613, 616, 732, 1104, 616, 732, 1104, 616, - 1116, 1104, 1116, 1104, 1104, 1116, 803, 1104, 847, 848, - 1125, 1104, 318, 349, 519, 520, 1102, 1102, 1104, 1104, - 1104, 1104, 1116, 1104, 22, 28, 130, 281, 318, 349, - 281, 318, 349, 701, 318, 349, 318, 349, 119, 318, - 1004, 1122, 179, 711, 1122, 179, 1122, 1116, 1104, 1104, - 1113, 1104, 22, 540, 346, 1115, 318, 349, 519, 1104, - 1104, 387, 387, 78, 400, 306, 256, 740, 1113, 35, - 128, 732, 740, 740, 206, 410, 410, 740, 732, 732, - 212, 732, 740, 740, 740, 302, 544, 264, 162, 387, - 543, 188, 455, 468, 471, 1035, 1012, 732, 468, 471, - 455, 675, 568, 1125, 1104, 56, 162, 336, 421, 631, - 638, 639, 145, 261, 221, 560, 562, 564, 566, 573, - 576, 23, 185, 329, 374, 481, 482, 157, 1106, 422, - 1102, 35, 669, 377, 991, 701, 492, 1122, 493, 271, - 559, 1104, 159, 732, 1071, 303, 1113, 701, 701, 701, - 701, 261, 266, 271, 467, 701, 1002, 1003, 1004, 346, - 145, 467, 145, 145, 144, 936, 732, 261, 560, 1122, - 429, 431, 596, 429, 528, 251, 35, 579, 1113, 251, - 266, 468, 786, 787, 792, 35, 212, 326, 390, 428, - 798, 799, 800, 266, 212, 506, 176, 176, 157, 523, - 35, 1071, 468, 468, 523, 465, 449, 449, 468, 468, - 1112, 466, 1112, 468, 177, 237, 1034, 237, 1034, 1034, - 1112, 240, 468, 523, 731, 732, 1106, 732, 1106, 523, - 523, 212, 523, 346, 157, 506, 523, 523, 266, 523, - 251, 468, 581, 185, 185, 185, 433, 1103, 616, 617, - 171, 756, 757, 1116, 23, 762, 387, 467, 162, 143, - 352, 143, 352, 332, 408, 239, 1012, 1116, 429, 604, - 1102, 1104, 162, 266, 756, 53, 523, 796, 1012, 392, - 376, 784, 260, 422, 1012, 212, 732, 1104, 468, 466, - 466, 471, 1035, 132, 1089, 1090, 35, 468, 1035, 468, - 468, 162, 162, 468, 162, 468, 468, 468, 468, 468, - 471, 468, 288, 1080, 468, 467, 1036, 1036, 1071, 11, - 15, 16, 17, 185, 206, 268, 453, 454, 455, 457, - 458, 459, 460, 461, 462, 463, 1068, 1036, 468, 468, - 157, 162, 1083, 1084, 468, 35, 1085, 1071, 1085, 1085, - 162, 468, 468, 1125, 286, 1049, 35, 468, 471, 1035, - 1125, 471, 1035, 1096, 1035, 468, 468, 449, 1036, 1036, - 138, 1071, 162, 125, 127, 150, 256, 261, 394, 404, - 467, 138, 813, 1035, 373, 1097, 1035, 1086, 1035, 387, - 467, 937, 467, 467, 276, 1055, 467, 1071, 380, 382, - 380, 382, 1102, 947, 947, 947, 215, 333, 446, 467, - 937, 981, 982, 983, 990, 995, 1005, 1038, 1040, 1041, - 1110, 1122, 426, 1000, 1072, 1072, 1073, 468, 13, 14, - 471, 951, 952, 1000, 865, 1112, 1033, 501, 1035, 1094, - 898, 907, 954, 268, 1066, 1069, 451, 778, 4, 1112, - 963, 267, 408, 960, 230, 981, 426, 1001, 416, 375, - 409, 914, 915, 916, 1122, 266, 917, 1122, 930, 931, - 471, 980, 455, 1096, 795, 733, 791, 791, 53, 793, - 461, 1117, 1117, 266, 1103, 269, 266, 1035, 577, 1106, - 467, 467, 467, 600, 188, 580, 690, 145, 523, 387, - 1116, 1104, 506, 1104, 1012, 1104, 433, 732, 732, 732, - 732, 80, 122, 283, 381, 1012, 1104, 620, 1104, 173, - 414, 387, 387, 620, 637, 643, 318, 349, 519, 1104, - 1104, 1104, 196, 1104, 256, 787, 280, 349, 387, 251, - 145, 270, 641, 690, 22, 130, 322, 323, 349, 522, - 531, 532, 643, 834, 1104, 341, 145, 523, 145, 523, - 1104, 1104, 1104, 1104, 341, 341, 220, 646, 647, 646, - 468, 471, 648, 1113, 188, 468, 471, 455, 469, 1116, - 1104, 318, 349, 519, 147, 1104, 1104, 1104, 281, 318, - 349, 22, 130, 281, 318, 349, 1012, 250, 1012, 468, - 471, 455, 1102, 387, 1117, 410, 665, 222, 287, 256, - 463, 1113, 1120, 287, 1117, 407, 387, 387, 336, 471, - 803, 280, 349, 83, 387, 833, 336, 157, 533, 387, - 387, 232, 232, 232, 387, 387, 336, 387, 387, 336, - 387, 336, 387, 336, 266, 387, 523, 1012, 251, 1113, - 349, 834, 145, 523, 387, 387, 1104, 387, 336, 1116, - 1104, 1012, 732, 206, 740, 1106, 1106, 206, 206, 1104, - 206, 366, 367, 545, 1113, 544, 173, 250, 268, 457, - 458, 616, 704, 791, 1069, 1113, 1129, 3, 707, 468, - 468, 162, 701, 703, 704, 266, 65, 71, 83, 111, - 113, 166, 192, 251, 256, 297, 312, 403, 569, 570, - 572, 144, 425, 478, 506, 1104, 506, 641, 1102, 1102, - 1102, 468, 471, 1117, 171, 329, 1117, 1112, 397, 1102, - 579, 3, 157, 670, 43, 493, 320, 376, 650, 104, - 898, 162, 847, 528, 580, 1102, 676, 708, 709, 1113, - 468, 471, 1104, 157, 580, 1102, 603, 1102, 1104, 604, - 467, 561, 1102, 468, 264, 527, 264, 266, 597, 527, - 35, 145, 936, 528, 387, 145, 1102, 468, 471, 111, - 455, 801, 1113, 506, 376, 790, 791, 157, 802, 800, - 803, 116, 198, 342, 408, 856, 1104, 173, 936, 1012, - 468, 1112, 1032, 1032, 466, 466, 468, 523, 410, 523, - 410, 523, 1104, 1104, 660, 523, 732, 145, 336, 336, - 336, 1103, 471, 1116, 429, 471, 758, 269, 991, 346, - 143, 143, 104, 249, 1117, 755, 523, 1116, 206, 206, - 206, 616, 206, 206, 206, 1075, 384, 1035, 136, 1012, - 468, 1035, 1035, 1035, 1035, 1035, 1083, 468, 1071, 471, - 1012, 1036, 1036, 1036, 1036, 125, 127, 251, 261, 1036, - 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, - 1035, 1035, 1084, 1083, 1012, 468, 468, 468, 1071, 468, - 471, 53, 1037, 468, 1125, 1046, 294, 370, 1048, 468, - 471, 421, 1042, 35, 468, 463, 1113, 1035, 32, 32, - 1035, 468, 1035, 162, 467, 1074, 1035, 468, 138, 1036, - 1036, 138, 138, 1035, 1035, 952, 426, 467, 1056, 1122, - 468, 1071, 471, 947, 947, 947, 947, 1102, 1102, 1102, - 937, 995, 1005, 162, 467, 937, 982, 983, 35, 984, - 985, 1122, 471, 91, 163, 194, 209, 219, 245, 328, - 987, 985, 35, 984, 986, 1122, 985, 452, 999, 467, - 1095, 1035, 171, 965, 471, 951, 951, 951, 1035, 1035, - 418, 1073, 468, 965, 468, 466, 468, 467, 778, 154, - 214, 267, 94, 1035, 325, 919, 415, 468, 471, 1096, - 81, 919, 468, 471, 929, 1001, 1035, 468, 461, 795, - 397, 165, 337, 344, 377, 398, 767, 157, 767, 468, - 467, 583, 584, 774, 1040, 1122, 580, 580, 690, 1108, - 468, 113, 192, 249, 251, 691, 1104, 1104, 35, 1104, - 410, 410, 732, 732, 732, 732, 212, 733, 1116, 1104, - 387, 833, 336, 387, 196, 53, 379, 1104, 145, 566, - 467, 568, 166, 178, 251, 527, 478, 104, 166, 251, - 365, 368, 527, 614, 349, 532, 397, 1104, 1122, 341, - 645, 1104, 530, 704, 1125, 280, 349, 387, 833, 336, - 1104, 387, 387, 387, 336, 164, 268, 368, 713, 714, - 164, 268, 721, 722, 387, 387, 336, 468, 468, 468, - 839, 250, 616, 791, 840, 1069, 1113, 1129, 318, 1104, - 467, 429, 666, 1114, 1120, 1113, 1113, 1104, 1104, 1104, - 848, 53, 379, 1104, 1104, 1104, 1104, 416, 1104, 1104, - 157, 157, 320, 157, 179, 1116, 1104, 1104, 1116, 1104, - 1104, 1104, 1104, 1104, 1104, 147, 1104, 71, 524, 145, - 24, 45, 397, 1122, 1104, 1113, 643, 1104, 1104, 468, - 206, 740, 206, 206, 740, 740, 206, 740, 478, 545, - 620, 690, 429, 431, 732, 1102, 467, 732, 1104, 1036, - 29, 53, 571, 114, 181, 113, 256, 210, 1102, 803, - 301, 693, 694, 1122, 630, 285, 467, 561, 574, 191, - 590, 564, 1117, 1117, 1012, 467, 528, 26, 116, 198, - 342, 408, 671, 387, 667, 1116, 179, 1102, 652, 433, - 266, 981, 803, 313, 677, 468, 471, 1004, 641, 660, - 468, 611, 35, 261, 285, 467, 909, 563, 565, 567, - 576, 1122, 285, 591, 592, 561, 590, 77, 379, 598, - 936, 606, 604, 598, 1113, 1108, 772, 792, 1035, 1035, - 471, 467, 798, 397, 471, 387, 467, 620, 468, 466, - 1106, 1106, 523, 346, 523, 1103, 1103, 1103, 616, 168, - 757, 468, 1104, 104, 762, 162, 256, 745, 1113, 745, - 745, 206, 745, 745, 745, 1035, 468, 468, 1084, 468, - 1035, 162, 125, 127, 261, 467, 468, 436, 1044, 1071, - 311, 53, 427, 427, 468, 1035, 249, 1035, 471, 1043, - 1014, 1033, 1035, 1035, 1035, 1074, 468, 1035, 32, 32, - 1035, 1035, 138, 468, 468, 1035, 1057, 1122, 468, 1035, - 1102, 1102, 1102, 1102, 985, 986, 985, 467, 441, 1037, - 468, 1122, 467, 982, 209, 275, 988, 982, 988, 209, - 987, 988, 209, 378, 993, 467, 1122, 467, 273, 1072, - 53, 174, 972, 468, 468, 468, 1073, 1113, 972, 1113, - 813, 261, 1099, 936, 279, 936, 916, 266, 467, 918, - 455, 930, 919, 397, 468, 387, 752, 162, 690, 1035, - 468, 471, 429, 71, 775, 775, 468, 468, 803, 114, - 181, 190, 113, 412, 523, 1012, 1106, 1106, 1104, 1104, - 1104, 1104, 1104, 1117, 1104, 566, 642, 646, 571, 179, - 256, 616, 571, 256, 1114, 1122, 1012, 523, 523, 455, - 53, 379, 1104, 1104, 1104, 1104, 1116, 1104, 1104, 1112, - 1112, 1012, 471, 1112, 1112, 471, 1116, 1104, 1104, 387, - 1035, 65, 1117, 1104, 387, 387, 162, 185, 1103, 1103, - 732, 1103, 145, 1104, 732, 1113, 1113, 1012, 523, 523, - 206, 740, 740, 740, 740, 467, 546, 547, 410, 551, - 552, 164, 195, 164, 162, 689, 1035, 251, 570, 111, - 35, 803, 579, 410, 599, 1110, 32, 144, 185, 261, - 560, 533, 142, 186, 467, 346, 410, 580, 35, 1117, - 665, 493, 251, 467, 159, 1104, 1071, 247, 265, 678, - 679, 680, 157, 683, 1113, 346, 528, 144, 936, 732, - 261, 560, 604, 468, 471, 429, 568, 53, 596, 533, - 591, 116, 130, 294, 1104, 429, 868, 35, 162, 266, - 467, 1113, 789, 804, 805, 1123, 803, 1012, 157, 1102, - 162, 387, 824, 193, 621, 523, 523, 523, 1104, 269, - 204, 523, 756, 745, 468, 1036, 162, 467, 1074, 467, - 468, 471, 468, 1037, 311, 468, 415, 362, 468, 468, - 468, 1035, 1035, 1035, 468, 285, 1058, 468, 996, 997, - 1040, 467, 1049, 984, 467, 1103, 982, 266, 410, 989, - 982, 209, 982, 1110, 1003, 467, 1003, 1122, 951, 93, - 172, 331, 467, 966, 967, 968, 969, 970, 971, 1035, - 1035, 428, 1052, 951, 1052, 468, 933, 914, 83, 773, - 774, 126, 1035, 756, 266, 756, 468, 803, 584, 268, - 813, 732, 732, 776, 776, 312, 803, 599, 468, 387, - 349, 925, 468, 471, 35, 145, 524, 704, 1117, 1104, - 387, 467, 784, 813, 815, 714, 467, 467, 722, 1104, - 468, 467, 349, 925, 1104, 1104, 467, 467, 429, 452, - 886, 320, 886, 886, 157, 524, 740, 553, 554, 1125, - 49, 92, 117, 134, 138, 158, 161, 175, 256, 264, - 304, 548, 478, 118, 784, 35, 820, 820, 1102, 690, - 468, 178, 599, 233, 582, 188, 467, 694, 301, 467, - 1102, 468, 346, 26, 76, 84, 112, 178, 189, 365, - 368, 575, 575, 1101, 1104, 1106, 468, 936, 666, 145, - 104, 641, 162, 679, 332, 376, 681, 131, 684, 425, - 686, 1104, 35, 1104, 604, 561, 1102, 468, 565, 270, - 3, 593, 1126, 597, 591, 596, 333, 333, 57, 65, - 225, 936, 732, 1102, 773, 791, 468, 471, 397, 1000, - 360, 360, 468, 620, 249, 414, 622, 623, 1104, 523, - 1036, 1074, 468, 1045, 1071, 53, 249, 448, 53, 951, - 468, 471, 35, 998, 111, 1010, 1011, 1036, 74, 1103, - 468, 1035, 467, 982, 989, 467, 468, 1003, 468, 468, - 467, 350, 467, 468, 471, 1053, 1054, 1122, 468, 415, - 1104, 468, 471, 252, 408, 758, 767, 523, 775, 599, - 467, 777, 777, 1102, 599, 690, 1104, 379, 646, 178, - 410, 525, 349, 925, 1104, 1074, 157, 717, 717, 1074, - 1074, 1035, 379, 150, 235, 238, 256, 394, 534, 536, - 537, 616, 1113, 534, 535, 731, 732, 731, 732, 1103, - 523, 468, 471, 459, 467, 503, 555, 616, 883, 1113, - 883, 251, 256, 304, 883, 883, 546, 1113, 820, 38, - 183, 157, 249, 578, 467, 612, 163, 284, 355, 266, - 586, 587, 588, 379, 468, 1110, 5, 695, 561, 590, - 1104, 468, 641, 151, 716, 528, 868, 1102, 433, 981, - 883, 332, 364, 685, 467, 144, 641, 936, 909, 591, - 561, 590, 568, 467, 598, 596, 597, 65, 269, 65, - 604, 772, 468, 798, 804, 1012, 126, 429, 429, 414, - 620, 641, 468, 468, 468, 311, 415, 1071, 305, 333, - 1059, 999, 996, 467, 1036, 468, 471, 35, 1006, 1007, - 1122, 468, 1103, 1071, 468, 1071, 467, 1071, 967, 471, - 35, 936, 1000, 774, 349, 162, 776, 426, 585, 813, - 778, 778, 579, 690, 1104, 612, 1035, 379, 468, 272, - 339, 309, 718, 718, 468, 468, 468, 1104, 468, 471, - 468, 471, 886, 554, 503, 556, 557, 1113, 1113, 256, - 580, 459, 580, 1113, 1113, 131, 190, 613, 116, 408, - 266, 588, 266, 587, 1104, 467, 468, 471, 533, 346, - 641, 732, 35, 35, 467, 1104, 682, 1122, 1035, 301, - 868, 604, 596, 533, 591, 467, 594, 595, 1040, 1122, - 597, 598, 269, 269, 467, 528, 803, 27, 199, 857, - 164, 164, 47, 94, 399, 1035, 1060, 1061, 1060, 468, - 1003, 471, 1011, 1125, 468, 471, 157, 1012, 468, 468, - 468, 966, 468, 1054, 1056, 928, 756, 777, 467, 690, - 468, 582, 925, 1104, 784, 53, 925, 387, 537, 534, - 732, 468, 471, 580, 332, 468, 56, 249, 324, 349, - 589, 589, 468, 5, 346, 1104, 713, 936, 641, 468, - 1110, 597, 591, 596, 1035, 468, 471, 775, 775, 598, - 773, 598, 252, 467, 852, 854, 858, 911, 920, 927, - 936, 784, 784, 1061, 332, 156, 292, 156, 292, 468, - 1037, 1007, 273, 3, 111, 251, 256, 1008, 1009, 319, - 994, 468, 1000, 523, 778, 1035, 586, 925, 732, 467, - 557, 686, 21, 111, 256, 1104, 641, 868, 467, 598, - 596, 597, 468, 595, 776, 776, 468, 1000, 853, 854, - 855, 937, 938, 471, 471, 32, 1049, 1036, 1036, 256, - 1009, 467, 468, 690, 536, 144, 641, 4, 687, 688, - 1112, 1113, 1125, 597, 598, 775, 528, 468, 470, 387, - 162, 1061, 74, 1035, 468, 301, 468, 471, 598, 776, - 598, 855, 360, 360, 1006, 468, 1110, 688, 1000, 429, - 429, 468, 467, 164, 164, 687, 784, 784, 468 + 320, 321, 322, 323, 324, 325, 326, 327, 329, 330, + 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, + 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, + 352, 353, 354, 355, 356, 357, 358, 359, 361, 362, + 363, 364, 365, 367, 368, 369, 370, 371, 372, 373, + 374, 375, 376, 378, 379, 380, 381, 382, 383, 384, + 385, 386, 387, 388, 389, 390, 391, 392, 394, 395, + 397, 398, 399, 400, 401, 402, 403, 405, 406, 407, + 410, 411, 412, 413, 414, 416, 417, 418, 419, 420, + 421, 422, 423, 426, 427, 428, 429, 430, 433, 434, + 435, 436, 437, 438, 439, 441, 442, 443, 444, 445, + 446, 449, 452, 453, 454, 455, 456, 457, 458, 459, + 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, + 470, 471, 1077, 1152, 1160, 1161, 1164, 1165, 1166, 3, + 30, 971, 1146, 1160, 1164, 442, 930, 280, 311, 892, + 53, 489, 571, 24, 41, 64, 77, 88, 110, 116, + 133, 144, 153, 165, 173, 177, 233, 282, 285, 305, + 319, 345, 354, 364, 383, 390, 399, 400, 402, 403, + 413, 418, 425, 428, 431, 580, 630, 739, 793, 807, + 30, 310, 1146, 971, 30, 304, 362, 400, 402, 6, + 220, 844, 845, 1155, 24, 29, 64, 77, 92, 110, + 133, 144, 153, 165, 170, 177, 196, 242, 282, 295, + 305, 316, 319, 345, 348, 352, 354, 361, 364, 383, + 390, 396, 399, 403, 411, 413, 418, 431, 444, 648, + 752, 753, 754, 892, 1146, 95, 442, 489, 625, 628, + 631, 925, 938, 946, 949, 958, 965, 970, 974, 11, + 23, 30, 48, 160, 166, 168, 192, 222, 256, 313, + 332, 480, 481, 771, 772, 971, 1154, 1156, 30, 95, + 328, 360, 776, 777, 778, 1160, 165, 1160, 1151, 1155, + 396, 986, 771, 1160, 410, 1146, 295, 242, 110, 196, + 354, 395, 396, 489, 854, 855, 353, 1160, 30, 365, + 406, 410, 522, 531, 532, 1160, 27, 174, 776, 777, + 311, 892, 1160, 219, 30, 130, 988, 989, 65, 89, + 233, 251, 345, 354, 365, 406, 410, 457, 519, 520, + 521, 522, 30, 365, 406, 410, 522, 410, 281, 1029, + 1144, 1160, 986, 482, 1160, 169, 489, 931, 489, 326, + 980, 981, 1146, 980, 975, 976, 979, 0, 492, 489, + 930, 145, 210, 286, 424, 990, 991, 975, 977, 978, + 121, 206, 430, 493, 36, 896, 823, 1152, 756, 1160, + 756, 1147, 1160, 314, 756, 413, 1146, 109, 396, 811, + 1152, 1160, 1166, 3, 106, 366, 1157, 1158, 1162, 1164, + 1165, 1166, 30, 186, 1144, 274, 444, 10, 17, 18, + 19, 72, 157, 475, 476, 477, 478, 480, 481, 482, + 483, 484, 485, 840, 842, 1107, 1108, 1160, 186, 1146, + 811, 1146, 30, 1157, 1158, 811, 1146, 1146, 186, 1144, + 1146, 186, 756, 1146, 338, 367, 30, 186, 1029, 1146, + 357, 1146, 756, 30, 240, 1157, 1158, 186, 1144, 220, + 118, 216, 265, 322, 893, 894, 895, 489, 487, 491, + 1135, 1137, 1144, 1150, 1160, 24, 29, 64, 77, 78, + 88, 92, 110, 133, 144, 153, 165, 170, 196, 221, + 242, 282, 305, 316, 319, 345, 348, 352, 354, 361, + 364, 383, 390, 396, 399, 403, 411, 413, 418, 444, + 648, 762, 763, 1155, 896, 945, 949, 958, 965, 974, + 1144, 244, 756, 489, 186, 756, 413, 1147, 756, 413, + 186, 1146, 109, 396, 400, 402, 1157, 1158, 400, 402, + 72, 157, 840, 336, 1146, 1146, 1157, 186, 515, 1160, + 186, 1146, 186, 756, 1146, 1146, 357, 1146, 756, 240, + 1157, 326, 361, 396, 444, 242, 92, 196, 29, 170, + 316, 352, 411, 417, 642, 30, 1146, 972, 529, 1155, + 1162, 845, 244, 186, 823, 824, 186, 849, 186, 1147, + 3, 52, 54, 55, 67, 68, 113, 114, 134, 161, + 186, 208, 209, 211, 252, 254, 273, 323, 369, 375, + 406, 407, 439, 758, 1051, 1053, 1055, 1057, 1059, 1061, + 1062, 1063, 1065, 1066, 1067, 1069, 1070, 1161, 1164, 413, + 109, 396, 186, 810, 811, 186, 1158, 1159, 84, 444, + 72, 157, 186, 841, 842, 57, 186, 810, 186, 1159, + 186, 810, 186, 1146, 186, 1146, 357, 849, 186, 758, + 186, 240, 1159, 220, 186, 755, 756, 186, 1145, 1146, + 186, 1146, 896, 489, 947, 580, 938, 438, 925, 939, + 940, 941, 1162, 930, 1156, 772, 773, 30, 773, 1156, + 773, 30, 773, 1156, 773, 773, 773, 1156, 1154, 1154, + 971, 773, 314, 489, 489, 600, 600, 600, 280, 408, + 493, 600, 354, 1029, 1030, 493, 888, 1155, 489, 944, + 57, 444, 442, 856, 857, 84, 794, 794, 1160, 47, + 471, 216, 491, 283, 283, 280, 168, 1155, 408, 896, + 163, 766, 280, 5, 8, 9, 10, 12, 38, 52, + 54, 55, 63, 64, 67, 68, 75, 77, 100, 101, + 102, 103, 104, 105, 106, 113, 114, 116, 150, 155, + 156, 161, 176, 178, 208, 209, 211, 226, 234, 235, + 252, 254, 263, 265, 270, 271, 273, 282, 293, 306, + 323, 350, 366, 375, 391, 406, 407, 412, 414, 415, + 425, 431, 439, 459, 460, 461, 462, 464, 465, 466, + 467, 472, 478, 480, 481, 482, 489, 975, 1054, 1057, + 1060, 1061, 1062, 1064, 1065, 1066, 1069, 1070, 1074, 1076, + 1077, 1078, 1080, 1103, 1104, 1105, 1109, 1129, 1134, 1141, + 1142, 1152, 1153, 1154, 1155, 1160, 1140, 1141, 1155, 30, + 537, 1143, 1144, 365, 519, 116, 528, 1155, 12, 478, + 529, 12, 478, 1155, 47, 69, 519, 471, 376, 894, + 283, 168, 408, 477, 47, 471, 216, 895, 489, 1144, + 482, 1137, 1030, 924, 925, 926, 927, 1162, 167, 932, + 1074, 1112, 980, 493, 489, 933, 490, 490, 498, 924, + 934, 935, 936, 1144, 30, 130, 987, 987, 57, 987, + 158, 163, 230, 277, 994, 996, 997, 1012, 1014, 1015, + 1016, 990, 991, 168, 212, 1029, 1031, 489, 66, 261, + 296, 334, 367, 489, 821, 296, 330, 334, 367, 491, + 757, 296, 334, 367, 3, 87, 139, 236, 296, 334, + 367, 399, 401, 451, 530, 533, 901, 902, 903, 904, + 788, 26, 135, 296, 334, 367, 435, 546, 1146, 26, + 135, 367, 430, 513, 455, 186, 1029, 60, 94, 154, + 189, 225, 261, 265, 296, 297, 334, 342, 351, 359, + 367, 379, 388, 392, 446, 530, 534, 826, 834, 863, + 489, 808, 1137, 334, 513, 192, 150, 26, 32, 45, + 74, 128, 135, 138, 164, 198, 261, 265, 275, 284, + 296, 334, 337, 338, 367, 435, 542, 544, 545, 666, + 863, 5, 480, 481, 639, 1156, 30, 186, 1144, 756, + 756, 489, 839, 296, 367, 491, 150, 280, 296, 334, + 367, 834, 863, 26, 135, 296, 334, 367, 192, 508, + 334, 451, 474, 501, 508, 296, 334, 367, 834, 863, + 280, 296, 334, 150, 39, 58, 108, 195, 243, 246, + 261, 295, 334, 339, 361, 367, 381, 542, 636, 637, + 296, 334, 443, 666, 674, 150, 296, 334, 367, 87, + 128, 138, 296, 330, 334, 367, 532, 520, 522, 192, + 150, 45, 126, 261, 334, 367, 542, 543, 296, 334, + 338, 367, 85, 127, 298, 401, 280, 26, 32, 135, + 296, 334, 367, 561, 562, 508, 163, 334, 501, 508, + 150, 334, 367, 542, 1146, 228, 118, 281, 456, 493, + 893, 30, 130, 440, 482, 490, 816, 1074, 1113, 1114, + 1161, 1074, 1136, 3, 30, 34, 35, 36, 37, 38, + 39, 40, 43, 56, 63, 64, 70, 76, 78, 88, + 95, 100, 101, 102, 104, 105, 106, 116, 118, 125, + 130, 131, 137, 141, 145, 156, 158, 163, 165, 168, + 174, 177, 181, 192, 200, 210, 212, 223, 224, 230, + 234, 235, 265, 270, 277, 280, 281, 285, 286, 303, + 312, 328, 341, 360, 366, 377, 393, 396, 404, 408, + 409, 415, 424, 425, 431, 432, 440, 447, 448, 450, + 451, 482, 1149, 1163, 1164, 1165, 1166, 1167, 1135, 432, + 921, 280, 244, 823, 489, 1146, 1051, 413, 109, 396, + 811, 274, 444, 72, 157, 842, 1146, 811, 811, 1146, + 357, 163, 1146, 1051, 220, 756, 1146, 490, 600, 1146, + 70, 1051, 265, 168, 489, 725, 1146, 501, 39, 915, + 1146, 265, 501, 455, 186, 1144, 501, 756, 756, 725, + 428, 580, 280, 163, 872, 873, 501, 265, 47, 516, + 265, 418, 673, 265, 933, 87, 296, 650, 85, 127, + 298, 401, 28, 49, 207, 698, 39, 725, 163, 186, + 501, 444, 186, 1144, 186, 626, 1144, 1144, 444, 756, + 794, 1152, 1152, 1152, 1146, 163, 648, 53, 107, 205, + 261, 356, 150, 61, 340, 493, 547, 150, 489, 150, + 501, 441, 1068, 1068, 1068, 489, 1056, 1056, 308, 489, + 1058, 150, 67, 68, 1068, 1056, 1053, 453, 474, 489, + 1071, 489, 1071, 493, 547, 38, 1052, 489, 111, 184, + 245, 248, 358, 469, 489, 1072, 1073, 757, 1056, 455, + 150, 493, 547, 150, 493, 186, 755, 186, 756, 186, + 756, 150, 493, 547, 1159, 150, 547, 150, 150, 547, + 150, 547, 150, 85, 127, 298, 401, 163, 150, 547, + 150, 163, 186, 186, 529, 150, 493, 547, 150, 493, + 547, 150, 280, 1112, 396, 490, 493, 156, 280, 415, + 526, 529, 639, 942, 938, 773, 971, 773, 971, 773, + 971, 773, 971, 773, 971, 971, 971, 773, 971, 489, + 601, 602, 1160, 601, 30, 110, 133, 165, 170, 220, + 221, 316, 348, 354, 361, 396, 399, 418, 779, 1143, + 1159, 778, 1146, 192, 493, 961, 1155, 1051, 1115, 39, + 1159, 794, 490, 493, 1144, 1146, 228, 1160, 163, 163, + 779, 1159, 353, 1160, 529, 280, 489, 1138, 487, 975, + 1116, 1074, 1133, 489, 489, 163, 489, 489, 975, 489, + 489, 489, 489, 489, 489, 489, 1074, 489, 489, 489, + 489, 489, 489, 489, 489, 975, 489, 489, 489, 489, + 489, 489, 489, 489, 1074, 1138, 1074, 1074, 975, 1074, + 1112, 1137, 12, 1155, 12, 489, 1155, 3, 10, 13, + 17, 18, 19, 36, 39, 44, 51, 76, 187, 192, + 214, 215, 229, 268, 282, 285, 372, 472, 475, 476, + 477, 478, 480, 481, 482, 483, 484, 485, 1107, 1109, + 1111, 452, 1090, 292, 1074, 212, 493, 984, 12, 489, + 1155, 1137, 984, 119, 188, 538, 493, 69, 12, 116, + 478, 529, 39, 3, 12, 116, 233, 478, 527, 639, + 1070, 1155, 1155, 90, 132, 1086, 99, 12, 116, 478, + 523, 524, 526, 639, 116, 523, 228, 1144, 91, 339, + 760, 490, 493, 526, 639, 928, 930, 490, 493, 981, + 1145, 39, 490, 493, 933, 977, 977, 992, 993, 1074, + 977, 160, 256, 1003, 218, 261, 322, 370, 430, 30, + 998, 1074, 480, 481, 999, 1000, 1074, 1076, 1012, 1013, + 997, 996, 994, 995, 163, 1015, 275, 1017, 994, 1012, + 1031, 950, 1144, 39, 1160, 367, 1112, 66, 408, 408, + 354, 192, 203, 286, 289, 369, 440, 482, 814, 815, + 816, 818, 820, 822, 1051, 1161, 408, 443, 408, 354, + 1149, 491, 408, 408, 354, 230, 408, 408, 399, 519, + 296, 901, 903, 477, 905, 163, 174, 192, 343, 789, + 790, 70, 88, 146, 165, 312, 425, 597, 598, 88, + 116, 265, 408, 88, 408, 116, 265, 354, 88, 128, + 138, 296, 334, 722, 354, 656, 24, 29, 64, 77, + 92, 133, 144, 165, 170, 242, 282, 316, 348, 354, + 361, 364, 396, 403, 411, 418, 444, 648, 1146, 150, + 334, 367, 542, 280, 639, 359, 225, 408, 1160, 408, + 270, 639, 120, 213, 354, 365, 410, 521, 756, 340, + 367, 826, 835, 124, 490, 809, 814, 408, 431, 399, + 1144, 78, 146, 186, 587, 597, 1160, 78, 88, 860, + 300, 280, 350, 352, 413, 88, 860, 33, 337, 350, + 352, 413, 350, 1144, 164, 198, 275, 756, 489, 408, + 408, 185, 489, 551, 239, 399, 428, 453, 551, 88, + 493, 124, 5, 5, 296, 192, 150, 334, 367, 542, + 863, 432, 432, 262, 1051, 408, 354, 489, 840, 1146, + 1144, 408, 408, 354, 835, 124, 396, 396, 408, 408, + 396, 725, 110, 367, 533, 408, 503, 533, 408, 408, + 354, 835, 124, 1144, 408, 408, 1144, 1053, 639, 57, + 638, 639, 639, 108, 243, 246, 57, 408, 501, 250, + 354, 501, 261, 637, 408, 408, 270, 1155, 666, 756, + 408, 408, 354, 383, 1155, 408, 319, 408, 319, 725, + 399, 1029, 300, 300, 88, 408, 860, 354, 408, 408, + 551, 551, 756, 756, 756, 756, 1144, 46, 437, 46, + 46, 408, 46, 408, 437, 354, 489, 493, 533, 431, + 683, 1158, 408, 503, 533, 1144, 408, 860, 354, 296, + 334, 322, 335, 363, 525, 893, 1113, 1113, 1114, 490, + 15, 16, 493, 990, 991, 488, 494, 1150, 1160, 1144, + 214, 1051, 280, 214, 455, 214, 639, 756, 756, 214, + 280, 214, 214, 280, 85, 127, 298, 401, 1051, 280, + 214, 214, 214, 408, 168, 408, 565, 418, 489, 39, + 150, 756, 726, 727, 1163, 28, 901, 1051, 280, 150, + 653, 1146, 265, 300, 489, 502, 739, 432, 326, 444, + 1144, 30, 396, 451, 830, 502, 150, 1158, 95, 174, + 517, 579, 632, 697, 774, 792, 897, 150, 1155, 674, + 675, 150, 280, 1155, 1158, 236, 756, 756, 756, 756, + 275, 121, 206, 416, 430, 699, 700, 142, 321, 489, + 683, 265, 502, 1144, 265, 634, 636, 265, 39, 275, + 300, 489, 600, 600, 186, 629, 1144, 163, 186, 795, + 1150, 489, 729, 821, 489, 812, 812, 39, 1051, 220, + 451, 453, 973, 356, 824, 823, 1051, 1147, 489, 489, + 1112, 1154, 758, 1068, 1068, 38, 1052, 406, 406, 1154, + 1154, 1051, 487, 487, 1154, 408, 408, 408, 489, 408, + 1154, 1056, 810, 811, 1159, 1158, 150, 547, 150, 432, + 150, 432, 841, 842, 547, 810, 1159, 810, 1146, 1146, + 1051, 758, 1159, 683, 150, 150, 547, 755, 756, 1145, + 1146, 1146, 756, 490, 186, 1144, 938, 940, 971, 971, + 971, 971, 971, 971, 601, 490, 493, 490, 171, 317, + 349, 362, 397, 1145, 755, 109, 364, 810, 1145, 274, + 810, 810, 1145, 1143, 1143, 1145, 755, 408, 451, 785, + 145, 230, 680, 681, 24, 148, 350, 370, 962, 1029, + 269, 963, 490, 493, 945, 408, 1144, 854, 855, 857, + 777, 776, 777, 168, 175, 786, 1160, 29, 78, 110, + 133, 144, 165, 170, 221, 242, 316, 319, 345, 348, + 354, 361, 390, 396, 399, 418, 444, 648, 767, 768, + 1112, 1135, 488, 1112, 1116, 1117, 447, 1130, 1131, 1074, + 1112, 489, 1154, 1154, 3, 12, 111, 184, 245, 248, + 358, 469, 478, 1118, 1119, 1155, 1112, 1112, 1112, 1154, + 1154, 1074, 1074, 840, 1074, 1121, 350, 480, 481, 489, + 1075, 1076, 1109, 1123, 490, 1112, 1074, 1112, 1124, 1074, + 56, 168, 224, 409, 1074, 1112, 1127, 1112, 250, 1076, + 1074, 1084, 1085, 1086, 250, 1074, 1086, 490, 493, 1072, + 1154, 1072, 1051, 1074, 1074, 1074, 1074, 1163, 406, 43, + 393, 1139, 756, 1074, 489, 975, 1128, 130, 132, 156, + 257, 258, 259, 260, 264, 265, 270, 275, 415, 426, + 1120, 1074, 489, 1074, 408, 51, 187, 192, 229, 372, + 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, + 1074, 30, 37, 377, 1106, 177, 159, 1091, 350, 489, + 1103, 173, 233, 396, 400, 402, 428, 985, 1144, 1142, + 168, 1019, 1113, 1019, 1144, 410, 489, 1155, 493, 490, + 185, 185, 547, 936, 926, 925, 929, 1074, 490, 242, + 265, 982, 936, 934, 493, 40, 125, 432, 804, 350, + 351, 480, 481, 1000, 1002, 1076, 370, 218, 281, 493, + 5, 1001, 1154, 1001, 350, 351, 1002, 1143, 269, 374, + 964, 1013, 995, 432, 959, 116, 294, 489, 951, 974, + 39, 1160, 489, 966, 967, 968, 1160, 490, 1158, 1146, + 1146, 289, 57, 1161, 490, 816, 818, 815, 818, 1161, + 286, 490, 493, 757, 1158, 1146, 1146, 1149, 1158, 1146, + 1146, 1158, 1147, 1146, 116, 526, 1156, 345, 431, 776, + 354, 174, 776, 489, 1146, 432, 796, 218, 218, 432, + 489, 622, 186, 1146, 270, 1158, 1146, 1146, 1074, 270, + 1146, 1146, 33, 337, 408, 408, 1146, 408, 657, 244, + 823, 489, 756, 756, 1051, 413, 109, 396, 811, 444, + 72, 157, 842, 811, 811, 1146, 756, 1146, 756, 357, + 163, 1051, 756, 220, 180, 261, 296, 334, 436, 660, + 661, 662, 1029, 408, 860, 354, 270, 120, 213, 1158, + 1146, 280, 1146, 280, 490, 493, 1157, 1159, 1146, 334, + 542, 186, 587, 265, 1051, 1146, 1154, 1160, 1144, 1146, + 228, 1146, 30, 431, 1146, 186, 1146, 186, 1160, 352, + 413, 352, 413, 228, 1146, 30, 431, 1146, 228, 350, + 1144, 26, 135, 367, 667, 668, 669, 670, 1163, 1158, + 1146, 116, 169, 266, 432, 550, 553, 554, 1163, 1146, + 74, 278, 1146, 545, 280, 408, 399, 1144, 408, 860, + 354, 124, 1148, 1160, 1148, 493, 490, 493, 1158, 1146, + 866, 867, 1163, 280, 334, 408, 691, 1158, 1146, 1146, + 280, 1030, 1030, 1158, 1146, 1030, 1147, 1157, 3, 87, + 140, 198, 302, 423, 431, 434, 504, 1158, 1146, 1146, + 280, 334, 1158, 1146, 334, 367, 542, 636, 639, 756, + 1146, 639, 756, 1146, 639, 1158, 1146, 367, 1158, 1146, + 1146, 1156, 1158, 830, 1146, 876, 877, 1163, 1146, 334, + 367, 542, 543, 1144, 1144, 1146, 1146, 1146, 1146, 1158, + 1146, 26, 32, 135, 296, 334, 367, 296, 334, 367, + 725, 334, 367, 334, 367, 334, 863, 1043, 1160, 186, + 735, 1160, 186, 1160, 1158, 1146, 1146, 1155, 1146, 866, + 26, 562, 364, 1157, 334, 367, 542, 1146, 1146, 1146, + 408, 408, 83, 422, 322, 493, 990, 990, 990, 1074, + 1074, 440, 1114, 490, 1074, 1136, 270, 764, 1155, 39, + 133, 756, 764, 764, 214, 432, 432, 764, 756, 764, + 764, 756, 220, 756, 764, 764, 764, 318, 566, 566, + 196, 396, 696, 1074, 1051, 756, 490, 493, 477, 699, + 589, 1163, 1146, 61, 168, 354, 443, 654, 661, 662, + 150, 275, 229, 581, 583, 585, 587, 594, 597, 27, + 192, 345, 394, 504, 505, 163, 1148, 444, 1144, 39, + 692, 397, 1030, 725, 515, 1160, 516, 285, 580, 1146, + 165, 756, 1112, 319, 1155, 725, 725, 725, 725, 275, + 280, 285, 489, 725, 1041, 1042, 1043, 364, 150, 489, + 150, 150, 149, 974, 756, 275, 581, 1160, 432, 617, + 451, 552, 265, 39, 600, 1155, 265, 280, 3, 730, + 731, 725, 490, 813, 814, 819, 39, 220, 342, 411, + 450, 825, 826, 827, 825, 280, 220, 529, 183, 183, + 163, 547, 39, 501, 164, 909, 910, 1112, 490, 490, + 547, 487, 471, 471, 490, 490, 1154, 488, 1154, 490, + 184, 245, 1073, 245, 1073, 1073, 1154, 248, 490, 547, + 755, 756, 1148, 756, 1148, 547, 547, 547, 547, 220, + 547, 364, 163, 529, 547, 547, 280, 547, 265, 490, + 602, 192, 192, 192, 192, 192, 455, 1145, 639, 640, + 177, 780, 781, 1158, 27, 786, 408, 489, 168, 148, + 370, 148, 370, 350, 430, 247, 1051, 1158, 451, 627, + 794, 794, 168, 280, 780, 57, 547, 823, 1051, 413, + 396, 811, 274, 444, 811, 811, 1051, 220, 756, 1146, + 490, 488, 488, 493, 1074, 137, 1131, 1132, 39, 490, + 1074, 490, 490, 168, 168, 490, 168, 490, 490, 490, + 490, 490, 490, 493, 493, 490, 303, 1122, 490, 489, + 1075, 1075, 1112, 13, 17, 18, 19, 192, 214, 282, + 475, 476, 477, 478, 480, 481, 482, 483, 484, 485, + 1109, 1075, 490, 490, 163, 168, 1125, 1126, 490, 39, + 1127, 1112, 1127, 1127, 168, 490, 490, 1163, 301, 1088, + 39, 490, 493, 1074, 1163, 493, 1074, 1138, 1074, 490, + 471, 1075, 1075, 143, 1112, 168, 130, 132, 156, 264, + 270, 275, 415, 426, 1120, 489, 264, 143, 840, 1074, + 393, 1139, 1074, 1128, 1074, 408, 489, 975, 489, 489, + 291, 1095, 489, 1112, 400, 402, 400, 402, 1144, 986, + 986, 986, 223, 351, 468, 489, 975, 1020, 1021, 1022, + 1029, 1034, 1044, 1077, 1079, 1080, 1160, 448, 1039, 990, + 1039, 894, 1154, 1072, 524, 936, 242, 489, 993, 282, + 1107, 1110, 473, 805, 5, 1154, 1002, 281, 451, 430, + 999, 238, 1020, 448, 1040, 438, 395, 431, 952, 953, + 954, 1160, 280, 955, 1160, 968, 969, 493, 1019, 477, + 1138, 822, 757, 818, 818, 57, 820, 484, 1159, 1159, + 280, 1145, 283, 280, 1074, 598, 1148, 489, 489, 489, + 622, 196, 601, 715, 150, 547, 408, 1158, 1146, 529, + 1146, 1051, 1146, 455, 756, 756, 756, 756, 85, 127, + 298, 401, 1051, 1146, 643, 1146, 180, 436, 408, 408, + 643, 660, 666, 334, 367, 542, 1146, 1146, 1146, 204, + 270, 153, 814, 295, 367, 408, 265, 150, 284, 664, + 715, 367, 26, 135, 338, 339, 367, 546, 555, 556, + 666, 861, 359, 150, 547, 150, 547, 1146, 1146, 1146, + 1146, 359, 359, 228, 669, 670, 669, 490, 493, 671, + 1155, 196, 490, 493, 477, 491, 153, 1158, 1146, 334, + 367, 542, 1146, 1146, 1146, 280, 296, 334, 367, 26, + 135, 296, 334, 367, 1051, 262, 1051, 490, 493, 477, + 1144, 408, 1159, 432, 688, 153, 230, 302, 12, 270, + 478, 1155, 302, 1159, 429, 153, 408, 408, 354, 383, + 493, 830, 295, 367, 88, 408, 860, 354, 116, 163, + 557, 408, 408, 240, 240, 240, 408, 408, 354, 408, + 408, 354, 408, 354, 408, 354, 408, 124, 547, 1051, + 265, 1155, 367, 861, 150, 547, 408, 408, 490, 1146, + 408, 860, 354, 408, 1158, 1146, 490, 490, 490, 1114, + 488, 1051, 756, 214, 764, 1148, 1148, 214, 214, 1146, + 214, 384, 385, 567, 1155, 567, 180, 490, 490, 168, + 725, 727, 262, 282, 480, 481, 639, 728, 818, 1110, + 1155, 1167, 280, 70, 76, 88, 116, 118, 172, 200, + 265, 270, 312, 328, 425, 590, 591, 593, 149, 447, + 501, 529, 1146, 529, 664, 1144, 1144, 1144, 490, 493, + 1159, 177, 345, 1159, 1154, 418, 1144, 600, 3, 163, + 693, 47, 516, 336, 396, 673, 109, 933, 168, 876, + 552, 601, 1144, 700, 732, 733, 1155, 490, 493, 1146, + 163, 601, 1144, 626, 1144, 1146, 627, 489, 582, 1144, + 490, 1148, 451, 453, 618, 551, 39, 150, 974, 617, + 408, 150, 1029, 477, 490, 493, 490, 493, 116, 477, + 828, 1155, 529, 396, 817, 818, 163, 829, 827, 121, + 206, 360, 430, 885, 1146, 180, 974, 1051, 489, 490, + 493, 490, 1154, 1071, 1071, 488, 488, 490, 547, 432, + 547, 432, 547, 1146, 1146, 683, 547, 756, 150, 354, + 354, 354, 354, 354, 1145, 493, 1158, 451, 493, 782, + 283, 1030, 364, 148, 148, 109, 261, 1144, 1146, 1159, + 779, 547, 1158, 214, 214, 214, 639, 214, 214, 214, + 214, 214, 1116, 404, 1074, 141, 1051, 490, 1074, 1074, + 1074, 1120, 1074, 1074, 1125, 490, 1112, 493, 1051, 1075, + 1075, 1075, 1075, 130, 132, 265, 275, 1075, 1075, 1075, + 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1074, 1074, + 1126, 1125, 1051, 490, 490, 490, 1112, 490, 493, 57, + 1076, 1089, 490, 1163, 1085, 309, 389, 1087, 490, 493, + 443, 1081, 39, 490, 12, 478, 1155, 1074, 36, 36, + 1074, 490, 1074, 168, 489, 264, 1115, 1074, 490, 143, + 1075, 1075, 143, 143, 1074, 1074, 991, 448, 489, 1096, + 1160, 490, 1112, 493, 986, 986, 986, 986, 1144, 1144, + 1144, 975, 1034, 1044, 168, 489, 975, 1021, 1022, 39, + 1023, 1024, 1160, 493, 96, 169, 202, 217, 227, 253, + 344, 1026, 1024, 39, 1023, 1025, 1160, 1024, 474, 1038, + 1137, 1074, 177, 1004, 490, 1004, 490, 945, 489, 805, + 160, 222, 281, 451, 405, 99, 1074, 341, 957, 437, + 490, 493, 1138, 86, 957, 490, 493, 967, 1040, 1074, + 490, 484, 822, 418, 171, 349, 355, 362, 397, 419, + 791, 163, 791, 490, 489, 605, 606, 799, 1079, 1160, + 601, 601, 715, 1150, 490, 118, 200, 261, 265, 716, + 1146, 1146, 39, 1146, 432, 432, 756, 756, 756, 756, + 220, 757, 1158, 1146, 408, 860, 354, 408, 204, 1146, + 57, 399, 1146, 150, 587, 489, 589, 383, 172, 152, + 185, 265, 551, 501, 109, 172, 265, 383, 386, 551, + 637, 367, 556, 418, 1146, 1160, 359, 668, 1146, 554, + 728, 1163, 1146, 295, 367, 408, 860, 354, 408, 153, + 408, 408, 354, 170, 282, 386, 737, 738, 170, 282, + 745, 746, 408, 408, 354, 490, 490, 490, 867, 262, + 639, 818, 868, 1110, 1155, 1167, 334, 1146, 489, 451, + 689, 1146, 1156, 12, 478, 1155, 1155, 1155, 1146, 1146, + 1146, 1146, 1156, 877, 57, 399, 1146, 1146, 1146, 1146, + 438, 1146, 1146, 163, 163, 336, 163, 186, 1158, 1146, + 1146, 1158, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 280, + 76, 548, 150, 28, 49, 418, 1160, 1146, 1155, 666, + 1146, 1146, 1146, 1146, 990, 490, 214, 764, 214, 214, + 764, 764, 214, 764, 501, 432, 572, 573, 643, 715, + 451, 453, 756, 1144, 489, 756, 1146, 1075, 33, 57, + 592, 119, 188, 118, 270, 218, 1144, 830, 170, 316, + 711, 718, 719, 1160, 653, 300, 489, 582, 595, 199, + 612, 585, 1159, 1159, 1051, 489, 552, 30, 121, 206, + 360, 430, 694, 408, 690, 1158, 186, 1144, 675, 455, + 280, 1020, 830, 329, 701, 490, 493, 1043, 664, 683, + 490, 634, 39, 275, 300, 489, 947, 584, 586, 588, + 597, 1160, 300, 613, 614, 582, 612, 551, 278, 280, + 619, 974, 629, 627, 552, 1155, 1150, 796, 728, 3, + 731, 819, 1074, 1074, 493, 489, 825, 418, 493, 408, + 489, 643, 490, 909, 910, 488, 1148, 1148, 547, 364, + 547, 1145, 1145, 1145, 1145, 1145, 639, 174, 781, 490, + 1146, 109, 786, 168, 270, 769, 1155, 769, 769, 214, + 769, 769, 769, 769, 769, 1074, 490, 490, 490, 1126, + 490, 1074, 168, 130, 132, 275, 489, 490, 458, 1083, + 1112, 327, 437, 57, 1089, 1076, 449, 449, 490, 1074, + 261, 1074, 493, 1082, 1053, 1074, 1074, 1074, 1115, 490, + 1074, 36, 36, 1074, 1074, 143, 490, 490, 1074, 1097, + 1160, 490, 1074, 1144, 1144, 1144, 1144, 1024, 1025, 1024, + 489, 463, 1076, 490, 1160, 489, 1021, 217, 290, 1027, + 1021, 1027, 217, 1026, 1027, 217, 398, 1032, 489, 1160, + 489, 287, 57, 181, 1011, 12, 1155, 1011, 1155, 490, + 840, 405, 275, 1141, 974, 294, 974, 954, 280, 489, + 956, 477, 968, 957, 418, 490, 408, 776, 168, 715, + 1074, 490, 493, 451, 76, 798, 802, 798, 490, 490, + 193, 603, 119, 188, 198, 118, 434, 547, 1051, 1148, + 1148, 1146, 1146, 1146, 1146, 1146, 1159, 1146, 587, 665, + 669, 1156, 592, 186, 186, 270, 639, 592, 270, 1156, + 1160, 1051, 547, 547, 477, 57, 399, 1146, 1146, 1146, + 1146, 1146, 1158, 1146, 1146, 1154, 1154, 1051, 493, 1154, + 1154, 493, 1158, 1146, 1146, 408, 1074, 70, 1159, 1146, + 408, 408, 168, 192, 451, 1145, 1145, 756, 1145, 150, + 153, 756, 1155, 1155, 1051, 547, 547, 408, 490, 214, + 764, 764, 764, 764, 489, 568, 569, 501, 123, 170, + 203, 170, 168, 714, 1074, 265, 591, 116, 39, 830, + 600, 432, 621, 1152, 36, 149, 192, 275, 581, 557, + 147, 194, 489, 364, 432, 601, 39, 1159, 688, 516, + 265, 489, 165, 1146, 1112, 255, 279, 702, 703, 704, + 163, 707, 1155, 364, 552, 149, 974, 756, 275, 581, + 627, 490, 493, 451, 589, 57, 617, 557, 613, 82, + 399, 620, 451, 898, 39, 620, 168, 280, 489, 1155, + 816, 831, 832, 1161, 1051, 163, 1144, 168, 408, 851, + 201, 644, 547, 490, 547, 547, 1146, 283, 212, 547, + 780, 769, 490, 1075, 168, 489, 1115, 489, 490, 493, + 490, 1089, 490, 437, 380, 490, 490, 490, 1074, 1074, + 1074, 490, 300, 1098, 490, 1035, 1036, 1079, 489, 1088, + 1023, 489, 1145, 1021, 280, 432, 1028, 1021, 217, 1021, + 1152, 1042, 489, 1042, 1160, 98, 178, 347, 489, 1005, + 1006, 1007, 1008, 1009, 1010, 1074, 1074, 450, 1092, 1092, + 490, 971, 952, 88, 797, 799, 131, 1074, 780, 280, + 780, 490, 603, 606, 282, 840, 756, 756, 803, 328, + 603, 489, 830, 490, 408, 367, 963, 490, 493, 39, + 150, 150, 548, 728, 1159, 1146, 408, 489, 811, 840, + 842, 738, 489, 489, 746, 1146, 490, 489, 367, 963, + 1146, 1146, 489, 489, 489, 451, 474, 918, 336, 918, + 918, 163, 1146, 548, 1146, 764, 574, 575, 1163, 53, + 97, 122, 139, 143, 164, 167, 182, 270, 320, 570, + 568, 1155, 811, 39, 847, 847, 1144, 715, 490, 185, + 489, 621, 241, 604, 196, 489, 719, 711, 489, 1144, + 490, 364, 30, 81, 89, 117, 172, 185, 197, 383, + 386, 596, 596, 1143, 1146, 1148, 490, 974, 689, 150, + 109, 664, 168, 703, 350, 396, 705, 136, 708, 447, + 710, 1146, 39, 1146, 627, 582, 1144, 490, 586, 284, + 1160, 618, 613, 617, 121, 135, 309, 1146, 62, 70, + 233, 974, 756, 1029, 797, 818, 490, 493, 418, 1039, + 378, 378, 490, 643, 261, 436, 645, 646, 1146, 547, + 1075, 1115, 490, 1084, 1112, 261, 470, 57, 990, 490, + 493, 39, 1037, 116, 1049, 1050, 1075, 79, 1145, 490, + 1074, 489, 1021, 1028, 489, 490, 1042, 490, 489, 368, + 489, 490, 493, 1093, 1094, 1160, 437, 1146, 490, 493, + 266, 430, 782, 791, 547, 798, 830, 489, 551, 804, + 1144, 830, 601, 621, 1146, 399, 669, 185, 432, 549, + 367, 963, 1146, 1115, 163, 741, 741, 1115, 1115, 1074, + 399, 1112, 1112, 558, 559, 1162, 755, 756, 755, 756, + 1145, 547, 490, 493, 482, 489, 526, 576, 639, 915, + 1155, 915, 265, 270, 320, 915, 915, 1039, 847, 42, + 190, 163, 261, 599, 489, 635, 1074, 169, 299, 373, + 280, 608, 609, 610, 399, 490, 1152, 6, 720, 582, + 612, 1146, 490, 664, 157, 740, 552, 898, 1144, 455, + 1020, 915, 350, 382, 709, 489, 149, 664, 974, 947, + 613, 582, 612, 589, 489, 619, 617, 618, 351, 351, + 70, 283, 70, 627, 796, 490, 825, 831, 1051, 131, + 451, 451, 436, 643, 664, 490, 490, 490, 437, 1112, + 179, 321, 351, 1099, 1038, 1035, 489, 1075, 490, 493, + 39, 1045, 1046, 1160, 490, 1145, 1112, 490, 1112, 489, + 1112, 1006, 493, 39, 974, 1039, 799, 367, 168, 621, + 840, 804, 805, 600, 621, 490, 715, 1146, 635, 1074, + 399, 490, 286, 357, 325, 742, 742, 490, 490, 490, + 1146, 490, 490, 490, 493, 1154, 918, 575, 526, 577, + 578, 1155, 1155, 270, 601, 482, 601, 1155, 1155, 136, + 198, 636, 490, 121, 430, 280, 610, 280, 609, 1146, + 489, 490, 493, 557, 364, 664, 756, 39, 39, 489, + 1146, 706, 1160, 1074, 711, 898, 627, 617, 557, 613, + 489, 615, 616, 1079, 1160, 620, 618, 619, 283, 283, + 489, 193, 800, 31, 207, 886, 170, 170, 51, 99, + 421, 1074, 1100, 1101, 1100, 1100, 490, 1042, 493, 1050, + 1163, 490, 493, 163, 1051, 490, 490, 490, 1005, 490, + 1094, 1096, 966, 780, 448, 607, 490, 805, 604, 715, + 963, 1146, 811, 57, 963, 408, 558, 756, 490, 493, + 601, 350, 490, 387, 61, 261, 340, 367, 611, 611, + 490, 6, 364, 1146, 737, 974, 664, 490, 1152, 618, + 613, 617, 1074, 490, 493, 802, 802, 619, 620, 797, + 489, 552, 266, 489, 881, 883, 887, 949, 958, 965, + 974, 811, 811, 1101, 350, 162, 307, 162, 307, 146, + 1102, 1102, 1102, 490, 1076, 1046, 287, 3, 116, 265, + 270, 1047, 1048, 335, 1033, 490, 1039, 547, 489, 715, + 608, 963, 756, 489, 578, 710, 25, 116, 270, 1146, + 664, 898, 489, 619, 617, 618, 490, 616, 756, 803, + 803, 620, 490, 799, 801, 620, 882, 883, 884, 975, + 976, 493, 493, 36, 99, 177, 261, 405, 1088, 1075, + 1075, 270, 1048, 489, 1074, 715, 1112, 149, 664, 5, + 712, 713, 1154, 1155, 1163, 620, 618, 619, 802, 800, + 490, 493, 1039, 490, 492, 408, 168, 1101, 350, 288, + 79, 1074, 490, 490, 711, 490, 493, 619, 620, 803, + 552, 799, 884, 378, 378, 1045, 490, 1152, 713, 620, + 620, 451, 451, 490, 489, 1039, 170, 170, 712, 811, + 811, 490 }; #define yyerrok (yyerrstatus = 0) @@ -26775,14 +28034,14 @@ YYLTYPE yylloc; switch (yyn) { case 2: -#line 781 "gram.y" +#line 810 "gram.y" { pg_yyget_extra(yyscanner)->parsetree = (yyvsp[(1) - (1)].list); ;} break; case 3: -#line 797 "gram.y" +#line 826 "gram.y" { if ((yyvsp[(1) - (3)].list) != NIL) { @@ -26797,7 +28056,7 @@ YYLTYPE yylloc; break; case 4: -#line 809 "gram.y" +#line 838 "gram.y" { if ((yyvsp[(1) - (1)].node) != NULL) (yyval.list) = list_make1(makeRawStmt((yyvsp[(1) - (1)].node), 0)); @@ -26806,13 +28065,22 @@ YYLTYPE yylloc; ;} break; - case 128: -#line 942 "gram.y" + case 130: +#line 973 "gram.y" { (yyval.node) = NULL; ;} break; - case 129: -#line 953 "gram.y" + case 131: +#line 983 "gram.y" + { + CallStmt *n = makeNode(CallStmt); + n->funccall = castNode(FuncCall, (yyvsp[(2) - (2)].node)); + (yyval.node) = (Node *)n; + ;} + break; + + case 132: +#line 998 "gram.y" { CreateRoleStmt *n = makeNode(CreateRoleStmt); n->stmt_type = ROLESTMT_ROLE; @@ -26822,69 +28090,113 @@ YYLTYPE yylloc; ;} break; - case 130: -#line 963 "gram.y" + case 133: +#line 1008 "gram.y" {;} break; - case 131: -#line 964 "gram.y" + case 134: +#line 1009 "gram.y" {;} break; - case 132: -#line 965 "gram.y" + case 135: +#line 1010 "gram.y" {;} break; - case 133: -#line 974 "gram.y" + case 136: +#line 1019 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (2)].list), (yyvsp[(2) - (2)].defelt)); ;} break; - case 134: -#line 975 "gram.y" + case 137: +#line 1020 "gram.y" { (yyval.list) = NIL; ;} break; - case 135: -#line 979 "gram.y" + case 138: +#line 1024 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (2)].list), (yyvsp[(2) - (2)].defelt)); ;} break; - case 136: -#line 980 "gram.y" + case 139: +#line 1025 "gram.y" { (yyval.list) = NIL; ;} break; - case 137: -#line 985 "gram.y" + case 140: +#line 1030 "gram.y" { - (yyval.defelt) = makeDefElem("password", (yyvsp[(2) - (2)].node), (yylsp[(1) - (2)])); + (yyval.defelt) = makeDefElem("password", + (Node *)makeString((yyvsp[(2) - (2)].str)), (yylsp[(1) - (2)])); ;} break; - case 138: -#line 989 "gram.y" + case 141: +#line 1035 "gram.y" + { + (yyval.defelt) = makeDefElem("password", + (Node *)makeParamRef((yyvsp[(2) - (2)].ival), (yylsp[(2) - (2)])), (yylsp[(1) - (2)])); + ;} + break; + + case 142: +#line 1040 "gram.y" + { + (yyval.defelt) = makeDefElem("password", + (Node *)makeParamRef(0, (yylsp[(2) - (2)])), (yylsp[(1) - (2)])); + ;} + break; + + case 143: +#line 1045 "gram.y" { (yyval.defelt) = makeDefElem("password", NULL, (yylsp[(1) - (2)])); ;} break; - case 139: -#line 993 "gram.y" + case 144: +#line 1049 "gram.y" { /* * These days, passwords are always stored in encrypted * form, so there is no difference between PASSWORD and * ENCRYPTED PASSWORD. */ - (yyval.defelt) = makeDefElem("password", (yyvsp[(3) - (3)].node), (yylsp[(1) - (3)])); + (yyval.defelt) = makeDefElem("password", + (Node *)makeString((yyvsp[(3) - (3)].str)), (yylsp[(1) - (3)])); ;} break; - case 140: -#line 1002 "gram.y" + case 145: +#line 1059 "gram.y" + { + /* + * These days, passwords are always stored in encrypted + * form, so there is no difference between PASSWORD and + * ENCRYPTED PASSWORD. + */ + (yyval.defelt) = makeDefElem("password", + (Node *)makeParamRef((yyvsp[(3) - (3)].ival), (yylsp[(3) - (3)])), (yylsp[(1) - (3)])); + ;} + break; + + case 146: +#line 1069 "gram.y" + { + /* + * These days, passwords are always stored in encrypted + * form, so there is no difference between PASSWORD and + * ENCRYPTED PASSWORD. + */ + (yyval.defelt) = makeDefElem("password", + (Node *)makeParamRef(0, (yylsp[(3) - (3)])), (yylsp[(1) - (3)])); + ;} + break; + + case 147: +#line 1079 "gram.y" { ereport(ERROR, (errcode(ERRCODE_FEATURE_NOT_SUPPORTED), @@ -26894,36 +28206,36 @@ YYLTYPE yylloc; ;} break; - case 141: -#line 1010 "gram.y" + case 148: +#line 1087 "gram.y" { - (yyval.defelt) = makeDefElem("inherit", (Node *)makeInteger(TRUE), (yylsp[(1) - (1)])); + (yyval.defelt) = makeDefElem("inherit", (Node *)makeInteger(true), (yylsp[(1) - (1)])); ;} break; - case 142: -#line 1014 "gram.y" + case 149: +#line 1091 "gram.y" { (yyval.defelt) = makeDefElem("connectionlimit", (Node *)makeInteger((yyvsp[(3) - (3)].ival)), (yylsp[(1) - (3)])); ;} break; - case 143: -#line 1018 "gram.y" + case 150: +#line 1095 "gram.y" { (yyval.defelt) = makeDefElem("validUntil", (Node *)makeString((yyvsp[(3) - (3)].str)), (yylsp[(1) - (3)])); ;} break; - case 144: -#line 1023 "gram.y" + case 151: +#line 1100 "gram.y" { (yyval.defelt) = makeDefElem("rolemembers", (Node *)(yyvsp[(2) - (2)].list), (yylsp[(1) - (2)])); ;} break; - case 145: -#line 1027 "gram.y" + case 152: +#line 1104 "gram.y" { /* * We handle identifiers that aren't parser keywords with @@ -26931,36 +28243,36 @@ YYLTYPE yylloc; * size of the main parser. */ if (strcmp((yyvsp[(1) - (1)].str), "superuser") == 0) - (yyval.defelt) = makeDefElem("superuser", (Node *)makeInteger(TRUE), (yylsp[(1) - (1)])); + (yyval.defelt) = makeDefElem("superuser", (Node *)makeInteger(true), (yylsp[(1) - (1)])); else if (strcmp((yyvsp[(1) - (1)].str), "nosuperuser") == 0) - (yyval.defelt) = makeDefElem("superuser", (Node *)makeInteger(FALSE), (yylsp[(1) - (1)])); + (yyval.defelt) = makeDefElem("superuser", (Node *)makeInteger(false), (yylsp[(1) - (1)])); else if (strcmp((yyvsp[(1) - (1)].str), "createrole") == 0) - (yyval.defelt) = makeDefElem("createrole", (Node *)makeInteger(TRUE), (yylsp[(1) - (1)])); + (yyval.defelt) = makeDefElem("createrole", (Node *)makeInteger(true), (yylsp[(1) - (1)])); else if (strcmp((yyvsp[(1) - (1)].str), "nocreaterole") == 0) - (yyval.defelt) = makeDefElem("createrole", (Node *)makeInteger(FALSE), (yylsp[(1) - (1)])); + (yyval.defelt) = makeDefElem("createrole", (Node *)makeInteger(false), (yylsp[(1) - (1)])); else if (strcmp((yyvsp[(1) - (1)].str), "replication") == 0) - (yyval.defelt) = makeDefElem("isreplication", (Node *)makeInteger(TRUE), (yylsp[(1) - (1)])); + (yyval.defelt) = makeDefElem("isreplication", (Node *)makeInteger(true), (yylsp[(1) - (1)])); else if (strcmp((yyvsp[(1) - (1)].str), "noreplication") == 0) - (yyval.defelt) = makeDefElem("isreplication", (Node *)makeInteger(FALSE), (yylsp[(1) - (1)])); + (yyval.defelt) = makeDefElem("isreplication", (Node *)makeInteger(false), (yylsp[(1) - (1)])); else if (strcmp((yyvsp[(1) - (1)].str), "createdb") == 0) - (yyval.defelt) = makeDefElem("createdb", (Node *)makeInteger(TRUE), (yylsp[(1) - (1)])); + (yyval.defelt) = makeDefElem("createdb", (Node *)makeInteger(true), (yylsp[(1) - (1)])); else if (strcmp((yyvsp[(1) - (1)].str), "nocreatedb") == 0) - (yyval.defelt) = makeDefElem("createdb", (Node *)makeInteger(FALSE), (yylsp[(1) - (1)])); + (yyval.defelt) = makeDefElem("createdb", (Node *)makeInteger(false), (yylsp[(1) - (1)])); else if (strcmp((yyvsp[(1) - (1)].str), "login") == 0) - (yyval.defelt) = makeDefElem("canlogin", (Node *)makeInteger(TRUE), (yylsp[(1) - (1)])); + (yyval.defelt) = makeDefElem("canlogin", (Node *)makeInteger(true), (yylsp[(1) - (1)])); else if (strcmp((yyvsp[(1) - (1)].str), "nologin") == 0) - (yyval.defelt) = makeDefElem("canlogin", (Node *)makeInteger(FALSE), (yylsp[(1) - (1)])); + (yyval.defelt) = makeDefElem("canlogin", (Node *)makeInteger(false), (yylsp[(1) - (1)])); else if (strcmp((yyvsp[(1) - (1)].str), "bypassrls") == 0) - (yyval.defelt) = makeDefElem("bypassrls", (Node *)makeInteger(TRUE), (yylsp[(1) - (1)])); + (yyval.defelt) = makeDefElem("bypassrls", (Node *)makeInteger(true), (yylsp[(1) - (1)])); else if (strcmp((yyvsp[(1) - (1)].str), "nobypassrls") == 0) - (yyval.defelt) = makeDefElem("bypassrls", (Node *)makeInteger(FALSE), (yylsp[(1) - (1)])); + (yyval.defelt) = makeDefElem("bypassrls", (Node *)makeInteger(false), (yylsp[(1) - (1)])); else if (strcmp((yyvsp[(1) - (1)].str), "noinherit") == 0) { /* * Note that INHERIT is a keyword, so it's handled by main parser, but * NOINHERIT is handled here. */ - (yyval.defelt) = makeDefElem("inherit", (Node *)makeInteger(FALSE), (yylsp[(1) - (1)])); + (yyval.defelt) = makeDefElem("inherit", (Node *)makeInteger(false), (yylsp[(1) - (1)])); } else ereport(ERROR, @@ -26970,48 +28282,48 @@ YYLTYPE yylloc; ;} break; - case 146: -#line 1074 "gram.y" + case 153: +#line 1151 "gram.y" { (yyval.defelt) = (yyvsp[(1) - (1)].defelt); ;} break; - case 147: -#line 1077 "gram.y" + case 154: +#line 1154 "gram.y" { (yyval.defelt) = makeDefElem("sysid", (Node *)makeInteger((yyvsp[(2) - (2)].ival)), (yylsp[(1) - (2)])); ;} break; - case 148: -#line 1081 "gram.y" + case 155: +#line 1158 "gram.y" { (yyval.defelt) = makeDefElem("adminmembers", (Node *)(yyvsp[(2) - (2)].list), (yylsp[(1) - (2)])); ;} break; - case 149: -#line 1085 "gram.y" + case 156: +#line 1162 "gram.y" { (yyval.defelt) = makeDefElem("rolemembers", (Node *)(yyvsp[(2) - (2)].list), (yylsp[(1) - (2)])); ;} break; - case 150: -#line 1089 "gram.y" + case 157: +#line 1166 "gram.y" { (yyval.defelt) = makeDefElem("addroleto", (Node *)(yyvsp[(3) - (3)].list), (yylsp[(1) - (3)])); ;} break; - case 151: -#line 1093 "gram.y" + case 158: +#line 1170 "gram.y" { (yyval.defelt) = makeDefElem("addroleto", (Node *)(yyvsp[(3) - (3)].list), (yylsp[(1) - (3)])); ;} break; - case 152: -#line 1107 "gram.y" + case 159: +#line 1184 "gram.y" { CreateRoleStmt *n = makeNode(CreateRoleStmt); n->stmt_type = ROLESTMT_USER; @@ -27021,8 +28333,8 @@ YYLTYPE yylloc; ;} break; - case 153: -#line 1125 "gram.y" + case 160: +#line 1202 "gram.y" { AlterRoleStmt *n = makeNode(AlterRoleStmt); n->role = (yyvsp[(3) - (5)].rolespec); @@ -27032,8 +28344,8 @@ YYLTYPE yylloc; ;} break; - case 154: -#line 1133 "gram.y" + case 161: +#line 1210 "gram.y" { AlterRoleStmt *n = makeNode(AlterRoleStmt); n->role = (yyvsp[(3) - (5)].rolespec); @@ -27043,18 +28355,18 @@ YYLTYPE yylloc; ;} break; - case 155: -#line 1143 "gram.y" + case 162: +#line 1220 "gram.y" { (yyval.str) = NULL; ;} break; - case 156: -#line 1144 "gram.y" + case 163: +#line 1221 "gram.y" { (yyval.str) = (yyvsp[(3) - (3)].str); ;} break; - case 157: -#line 1149 "gram.y" + case 164: +#line 1226 "gram.y" { AlterRoleSetStmt *n = makeNode(AlterRoleSetStmt); n->role = (yyvsp[(3) - (5)].rolespec); @@ -27064,8 +28376,8 @@ YYLTYPE yylloc; ;} break; - case 158: -#line 1157 "gram.y" + case 165: +#line 1234 "gram.y" { AlterRoleSetStmt *n = makeNode(AlterRoleSetStmt); n->role = NULL; @@ -27075,8 +28387,8 @@ YYLTYPE yylloc; ;} break; - case 159: -#line 1165 "gram.y" + case 166: +#line 1242 "gram.y" { AlterRoleSetStmt *n = makeNode(AlterRoleSetStmt); n->role = (yyvsp[(3) - (5)].rolespec); @@ -27086,8 +28398,8 @@ YYLTYPE yylloc; ;} break; - case 160: -#line 1173 "gram.y" + case 167: +#line 1250 "gram.y" { AlterRoleSetStmt *n = makeNode(AlterRoleSetStmt); n->role = NULL; @@ -27097,68 +28409,68 @@ YYLTYPE yylloc; ;} break; - case 161: -#line 1194 "gram.y" + case 168: +#line 1271 "gram.y" { DropRoleStmt *n = makeNode(DropRoleStmt); - n->missing_ok = FALSE; + n->missing_ok = false; n->roles = (yyvsp[(3) - (3)].list); (yyval.node) = (Node *)n; ;} break; - case 162: -#line 1201 "gram.y" + case 169: +#line 1278 "gram.y" { DropRoleStmt *n = makeNode(DropRoleStmt); - n->missing_ok = TRUE; + n->missing_ok = true; n->roles = (yyvsp[(5) - (5)].list); (yyval.node) = (Node *)n; ;} break; - case 163: -#line 1208 "gram.y" + case 170: +#line 1285 "gram.y" { DropRoleStmt *n = makeNode(DropRoleStmt); - n->missing_ok = FALSE; + n->missing_ok = false; n->roles = (yyvsp[(3) - (3)].list); (yyval.node) = (Node *)n; ;} break; - case 164: -#line 1215 "gram.y" + case 171: +#line 1292 "gram.y" { DropRoleStmt *n = makeNode(DropRoleStmt); n->roles = (yyvsp[(5) - (5)].list); - n->missing_ok = TRUE; + n->missing_ok = true; (yyval.node) = (Node *)n; ;} break; - case 165: -#line 1222 "gram.y" + case 172: +#line 1299 "gram.y" { DropRoleStmt *n = makeNode(DropRoleStmt); - n->missing_ok = FALSE; + n->missing_ok = false; n->roles = (yyvsp[(3) - (3)].list); (yyval.node) = (Node *)n; ;} break; - case 166: -#line 1229 "gram.y" + case 173: +#line 1306 "gram.y" { DropRoleStmt *n = makeNode(DropRoleStmt); - n->missing_ok = TRUE; + n->missing_ok = true; n->roles = (yyvsp[(5) - (5)].list); (yyval.node) = (Node *)n; ;} break; - case 167: -#line 1246 "gram.y" + case 174: +#line 1323 "gram.y" { CreateRoleStmt *n = makeNode(CreateRoleStmt); n->stmt_type = ROLESTMT_GROUP; @@ -27168,8 +28480,8 @@ YYLTYPE yylloc; ;} break; - case 168: -#line 1264 "gram.y" + case 175: +#line 1341 "gram.y" { AlterRoleStmt *n = makeNode(AlterRoleStmt); n->role = (yyvsp[(3) - (6)].rolespec); @@ -27180,18 +28492,18 @@ YYLTYPE yylloc; ;} break; - case 169: -#line 1274 "gram.y" + case 176: +#line 1351 "gram.y" { (yyval.ival) = +1; ;} break; - case 170: -#line 1275 "gram.y" + case 177: +#line 1352 "gram.y" { (yyval.ival) = -1; ;} break; - case 171: -#line 1287 "gram.y" + case 178: +#line 1364 "gram.y" { CreateSchemaStmt *n = makeNode(CreateSchemaStmt); /* One can omit the schema name or the authorization id. */ @@ -27203,8 +28515,8 @@ YYLTYPE yylloc; ;} break; - case 172: -#line 1297 "gram.y" + case 179: +#line 1374 "gram.y" { CreateSchemaStmt *n = makeNode(CreateSchemaStmt); /* ...but not both */ @@ -27216,8 +28528,8 @@ YYLTYPE yylloc; ;} break; - case 173: -#line 1307 "gram.y" + case 180: +#line 1384 "gram.y" { CreateSchemaStmt *n = makeNode(CreateSchemaStmt); /* schema name can be omitted here, too */ @@ -27234,8 +28546,8 @@ YYLTYPE yylloc; ;} break; - case 174: -#line 1322 "gram.y" + case 181: +#line 1399 "gram.y" { CreateSchemaStmt *n = makeNode(CreateSchemaStmt); /* ...but not here */ @@ -27252,18 +28564,18 @@ YYLTYPE yylloc; ;} break; - case 175: -#line 1339 "gram.y" + case 182: +#line 1416 "gram.y" { (yyval.str) = (yyvsp[(1) - (1)].str); ;} break; - case 176: -#line 1340 "gram.y" + case 183: +#line 1417 "gram.y" { (yyval.str) = NULL; ;} break; - case 177: -#line 1345 "gram.y" + case 184: +#line 1422 "gram.y" { if ((yyloc) < 0) /* see comments for YYLLOC_DEFAULT */ (yyloc) = (yylsp[(2) - (2)]); @@ -27271,13 +28583,13 @@ YYLTYPE yylloc; ;} break; - case 178: -#line 1351 "gram.y" + case 185: +#line 1428 "gram.y" { (yyval.list) = NIL; ;} break; - case 185: -#line 1379 "gram.y" + case 192: +#line 1456 "gram.y" { VariableSetStmt *n = (yyvsp[(2) - (2)].vsetstmt); n->is_local = false; @@ -27285,8 +28597,8 @@ YYLTYPE yylloc; ;} break; - case 186: -#line 1385 "gram.y" + case 193: +#line 1462 "gram.y" { VariableSetStmt *n = (yyvsp[(3) - (3)].vsetstmt); n->is_local = true; @@ -27294,8 +28606,8 @@ YYLTYPE yylloc; ;} break; - case 187: -#line 1391 "gram.y" + case 194: +#line 1468 "gram.y" { VariableSetStmt *n = (yyvsp[(3) - (3)].vsetstmt); n->is_local = false; @@ -27303,8 +28615,8 @@ YYLTYPE yylloc; ;} break; - case 188: -#line 1400 "gram.y" + case 195: +#line 1477 "gram.y" { VariableSetStmt *n = makeNode(VariableSetStmt); n->kind = VAR_SET_MULTI; @@ -27314,8 +28626,8 @@ YYLTYPE yylloc; ;} break; - case 189: -#line 1408 "gram.y" + case 196: +#line 1485 "gram.y" { VariableSetStmt *n = makeNode(VariableSetStmt); n->kind = VAR_SET_MULTI; @@ -27325,8 +28637,8 @@ YYLTYPE yylloc; ;} break; - case 191: -#line 1420 "gram.y" + case 198: +#line 1497 "gram.y" { VariableSetStmt *n = makeNode(VariableSetStmt); n->kind = VAR_SET_VALUE; @@ -27336,8 +28648,8 @@ YYLTYPE yylloc; ;} break; - case 192: -#line 1428 "gram.y" + case 199: +#line 1505 "gram.y" { VariableSetStmt *n = makeNode(VariableSetStmt); n->kind = VAR_SET_VALUE; @@ -27347,8 +28659,8 @@ YYLTYPE yylloc; ;} break; - case 193: -#line 1436 "gram.y" + case 200: +#line 1513 "gram.y" { VariableSetStmt *n = makeNode(VariableSetStmt); n->kind = VAR_SET_DEFAULT; @@ -27357,8 +28669,8 @@ YYLTYPE yylloc; ;} break; - case 194: -#line 1443 "gram.y" + case 201: +#line 1520 "gram.y" { VariableSetStmt *n = makeNode(VariableSetStmt); n->kind = VAR_SET_DEFAULT; @@ -27367,13 +28679,13 @@ YYLTYPE yylloc; ;} break; - case 195: -#line 1452 "gram.y" + case 202: +#line 1529 "gram.y" {(yyval.vsetstmt) = (yyvsp[(1) - (1)].vsetstmt);;} break; - case 196: -#line 1454 "gram.y" + case 203: +#line 1531 "gram.y" { VariableSetStmt *n = makeNode(VariableSetStmt); n->kind = VAR_SET_CURRENT; @@ -27382,80 +28694,146 @@ YYLTYPE yylloc; ;} break; - case 197: -#line 1462 "gram.y" + case 204: +#line 1539 "gram.y" + { + VariableSetStmt *n = makeNode(VariableSetStmt); + n->kind = VAR_SET_VALUE; + n->name = "timezone"; + if ((yyvsp[(3) - (3)].node) != NULL) + n->args = list_make1((yyvsp[(3) - (3)].node)); + else + n->kind = VAR_SET_DEFAULT; + (yyval.vsetstmt) = n; + ;} + break; + + case 205: +#line 1550 "gram.y" + { + ereport(ERROR, + (errcode(ERRCODE_FEATURE_NOT_SUPPORTED), + errmsg("current database cannot be changed"), + parser_errposition((yylsp[(2) - (2)])))); + (yyval.vsetstmt) = NULL; /*not reached*/ + ;} + break; + + case 206: +#line 1558 "gram.y" + { + VariableSetStmt *n = makeNode(VariableSetStmt); + n->kind = VAR_SET_VALUE; + n->name = "search_path"; + n->args = list_make1(makeStringConst((yyvsp[(2) - (2)].str), (yylsp[(2) - (2)]))); + (yyval.vsetstmt) = n; + ;} + break; + + case 207: +#line 1566 "gram.y" + { + VariableSetStmt *n = makeNode(VariableSetStmt); + n->kind = VAR_SET_VALUE; + n->name = "search_path"; + n->args = list_make1(makeParamRef((yyvsp[(2) - (2)].ival), (yylsp[(2) - (2)]))); + (yyval.vsetstmt) = n; + ;} + break; + + case 208: +#line 1574 "gram.y" + { + VariableSetStmt *n = makeNode(VariableSetStmt); + n->kind = VAR_SET_VALUE; + n->name = "search_path"; + n->args = list_make1(makeParamRef(0, (yylsp[(2) - (2)]))); + (yyval.vsetstmt) = n; + ;} + break; + + case 209: +#line 1582 "gram.y" + { + VariableSetStmt *n = makeNode(VariableSetStmt); + n->kind = VAR_SET_VALUE; + n->name = "client_encoding"; + if ((yyvsp[(2) - (2)].str) != NULL) + n->args = list_make1(makeStringConst((yyvsp[(2) - (2)].str), (yylsp[(2) - (2)]))); + else + n->kind = VAR_SET_DEFAULT; + (yyval.vsetstmt) = n; + ;} + break; + + case 210: +#line 1593 "gram.y" { VariableSetStmt *n = makeNode(VariableSetStmt); n->kind = VAR_SET_VALUE; - n->name = "timezone"; - if ((yyvsp[(3) - (3)].node) != NULL) - n->args = list_make1((yyvsp[(3) - (3)].node)); - else - n->kind = VAR_SET_DEFAULT; + n->name = "role"; + n->args = list_make1(makeStringConst((yyvsp[(2) - (2)].str), (yylsp[(2) - (2)]))); (yyval.vsetstmt) = n; ;} break; - case 198: -#line 1473 "gram.y" + case 211: +#line 1601 "gram.y" { - ereport(ERROR, - (errcode(ERRCODE_FEATURE_NOT_SUPPORTED), - errmsg("current database cannot be changed"), - parser_errposition((yylsp[(2) - (2)])))); - (yyval.vsetstmt) = NULL; /*not reached*/ + VariableSetStmt *n = makeNode(VariableSetStmt); + n->kind = VAR_SET_VALUE; + n->name = "role"; + n->args = list_make1(makeParamRef((yyvsp[(2) - (2)].ival), (yylsp[(2) - (2)]))); + (yyval.vsetstmt) = n; ;} break; - case 199: -#line 1481 "gram.y" + case 212: +#line 1609 "gram.y" { VariableSetStmt *n = makeNode(VariableSetStmt); n->kind = VAR_SET_VALUE; - n->name = "search_path"; - n->args = list_make1((yyvsp[(2) - (2)].node)); + n->name = "role"; + n->args = list_make1(makeParamRef(0, (yylsp[(2) - (2)]))); (yyval.vsetstmt) = n; ;} break; - case 200: -#line 1489 "gram.y" + case 213: +#line 1617 "gram.y" { VariableSetStmt *n = makeNode(VariableSetStmt); n->kind = VAR_SET_VALUE; - n->name = "client_encoding"; - if ((yyvsp[(2) - (2)].str) != NULL) - n->args = list_make1(makeStringConst((yyvsp[(2) - (2)].str), (yylsp[(2) - (2)]))); - else - n->kind = VAR_SET_DEFAULT; + n->name = "session_authorization"; + n->args = list_make1(makeStringConst((yyvsp[(3) - (3)].str), (yylsp[(3) - (3)]))); (yyval.vsetstmt) = n; ;} break; - case 201: -#line 1500 "gram.y" + case 214: +#line 1625 "gram.y" { VariableSetStmt *n = makeNode(VariableSetStmt); n->kind = VAR_SET_VALUE; - n->name = "role"; - n->args = list_make1((yyvsp[(2) - (2)].node)); + n->name = "session_authorization"; + n->args = list_make1(makeParamRef((yyvsp[(3) - (3)].ival), (yylsp[(3) - (3)]))); (yyval.vsetstmt) = n; ;} break; - case 202: -#line 1508 "gram.y" + case 215: +#line 1633 "gram.y" { VariableSetStmt *n = makeNode(VariableSetStmt); n->kind = VAR_SET_VALUE; n->name = "session_authorization"; - n->args = list_make1((yyvsp[(3) - (3)].node)); + n->args = list_make1(makeParamRef(0, (yylsp[(3) - (3)]))); (yyval.vsetstmt) = n; ;} break; - case 203: -#line 1516 "gram.y" + case 216: +#line 1641 "gram.y" { VariableSetStmt *n = makeNode(VariableSetStmt); n->kind = VAR_SET_DEFAULT; @@ -27464,8 +28842,8 @@ YYLTYPE yylloc; ;} break; - case 204: -#line 1523 "gram.y" + case 217: +#line 1648 "gram.y" { VariableSetStmt *n = makeNode(VariableSetStmt); n->kind = VAR_SET_VALUE; @@ -27475,8 +28853,8 @@ YYLTYPE yylloc; ;} break; - case 205: -#line 1532 "gram.y" + case 218: +#line 1657 "gram.y" { VariableSetStmt *n = makeNode(VariableSetStmt); n->kind = VAR_SET_MULTI; @@ -27486,97 +28864,116 @@ YYLTYPE yylloc; ;} break; - case 206: -#line 1541 "gram.y" + case 219: +#line 1666 "gram.y" { (yyval.str) = (yyvsp[(1) - (1)].str); ;} break; - case 207: -#line 1543 "gram.y" + case 220: +#line 1668 "gram.y" { (yyval.str) = psprintf("%s.%s", (yyvsp[(1) - (3)].str), (yyvsp[(3) - (3)].str)); ;} break; - case 208: -#line 1546 "gram.y" + case 221: +#line 1671 "gram.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].node)); ;} break; - case 209: -#line 1547 "gram.y" + case 222: +#line 1672 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].node)); ;} break; - case 210: -#line 1551 "gram.y" + case 223: +#line 1676 "gram.y" { (yyval.node) = makeStringConst((yyvsp[(1) - (1)].str), (yylsp[(1) - (1)])); ;} break; - case 211: -#line 1553 "gram.y" + case 224: +#line 1678 "gram.y" { (yyval.node) = makeAConst((yyvsp[(1) - (1)].value), (yylsp[(1) - (1)])); ;} break; - case 212: -#line 1555 "gram.y" - { (yyval.node) = makeStringConst("?", (yylsp[(1) - (1)])); ;} + case 225: +#line 1680 "gram.y" + { (yyval.node) = makeParamRef((yyvsp[(1) - (1)].ival), (yylsp[(1) - (1)])); ;} break; - case 213: -#line 1558 "gram.y" + case 226: +#line 1682 "gram.y" + { (yyval.node) = makeParamRef(0, (yylsp[(1) - (1)])); ;} + break; + + case 227: +#line 1685 "gram.y" { (yyval.str) = "read uncommitted"; ;} break; - case 214: -#line 1559 "gram.y" + case 228: +#line 1686 "gram.y" { (yyval.str) = "read committed"; ;} break; - case 215: -#line 1560 "gram.y" + case 229: +#line 1687 "gram.y" { (yyval.str) = "repeatable read"; ;} break; - case 216: -#line 1561 "gram.y" + case 230: +#line 1688 "gram.y" { (yyval.str) = "serializable"; ;} break; - case 217: -#line 1565 "gram.y" + case 231: +#line 1692 "gram.y" { (yyval.str) = "true"; ;} break; - case 218: -#line 1566 "gram.y" + case 232: +#line 1693 "gram.y" { (yyval.str) = "false"; ;} break; - case 219: -#line 1567 "gram.y" + case 233: +#line 1694 "gram.y" { (yyval.str) = "on"; ;} break; - case 220: -#line 1573 "gram.y" + case 234: +#line 1700 "gram.y" { (yyval.str) = (yyvsp[(1) - (1)].str); ;} break; - case 221: -#line 1586 "gram.y" + case 235: +#line 1713 "gram.y" { - (yyval.node) = (yyvsp[(1) - (1)].node); + (yyval.node) = makeStringConst((yyvsp[(1) - (1)].str), (yylsp[(1) - (1)])); ;} break; - case 222: -#line 1590 "gram.y" + case 236: +#line 1717 "gram.y" + { + (yyval.node) = makeParamRef((yyvsp[(1) - (1)].ival), (yylsp[(1) - (1)])); + ;} + break; + + case 237: +#line 1721 "gram.y" + { + (yyval.node) = makeParamRef(0, (yylsp[(1) - (1)])); + ;} + break; + + case 238: +#line 1725 "gram.y" { (yyval.node) = makeStringConst((yyvsp[(1) - (1)].str), (yylsp[(1) - (1)])); ;} break; - case 223: -#line 1594 "gram.y" + case 239: +#line 1729 "gram.y" { TypeName *t = (yyvsp[(1) - (3)].typnam); if ((yyvsp[(3) - (3)].list) != NIL) @@ -27593,8 +28990,8 @@ YYLTYPE yylloc; ;} break; - case 224: -#line 1609 "gram.y" + case 240: +#line 1744 "gram.y" { TypeName *t = (yyvsp[(1) - (5)].typnam); t->typmods = list_make2(makeIntConst(INTERVAL_FULL_RANGE, -1), @@ -27603,58 +29000,58 @@ YYLTYPE yylloc; ;} break; - case 225: -#line 1615 "gram.y" + case 241: +#line 1750 "gram.y" { (yyval.node) = makeAConst((yyvsp[(1) - (1)].value), (yylsp[(1) - (1)])); ;} break; - case 226: -#line 1616 "gram.y" + case 242: +#line 1751 "gram.y" { (yyval.node) = NULL; ;} break; - case 227: -#line 1617 "gram.y" + case 243: +#line 1752 "gram.y" { (yyval.node) = NULL; ;} break; - case 228: -#line 1621 "gram.y" + case 244: +#line 1756 "gram.y" { (yyval.str) = (yyvsp[(1) - (1)].str); ;} break; - case 229: -#line 1622 "gram.y" + case 245: +#line 1757 "gram.y" { (yyval.str) = NULL; ;} break; - case 230: -#line 1623 "gram.y" + case 246: +#line 1758 "gram.y" { (yyval.str) = NULL; ;} break; - case 231: -#line 1627 "gram.y" + case 247: +#line 1762 "gram.y" { (yyval.str) = (yyvsp[(1) - (1)].str); ;} break; - case 232: -#line 1628 "gram.y" + case 248: +#line 1763 "gram.y" { (yyval.str) = (yyvsp[(1) - (1)].str); ;} break; - case 233: -#line 1632 "gram.y" + case 249: +#line 1767 "gram.y" { (yyval.node) = (Node *) (yyvsp[(2) - (2)].vsetstmt); ;} break; - case 234: -#line 1636 "gram.y" + case 250: +#line 1771 "gram.y" { (yyval.vsetstmt) = (yyvsp[(1) - (1)].vsetstmt); ;} break; - case 235: -#line 1638 "gram.y" + case 251: +#line 1773 "gram.y" { VariableSetStmt *n = makeNode(VariableSetStmt); n->kind = VAR_RESET; @@ -27663,8 +29060,8 @@ YYLTYPE yylloc; ;} break; - case 236: -#line 1645 "gram.y" + case 252: +#line 1780 "gram.y" { VariableSetStmt *n = makeNode(VariableSetStmt); n->kind = VAR_RESET; @@ -27673,8 +29070,8 @@ YYLTYPE yylloc; ;} break; - case 237: -#line 1652 "gram.y" + case 253: +#line 1787 "gram.y" { VariableSetStmt *n = makeNode(VariableSetStmt); n->kind = VAR_RESET; @@ -27683,8 +29080,8 @@ YYLTYPE yylloc; ;} break; - case 238: -#line 1662 "gram.y" + case 254: +#line 1797 "gram.y" { VariableSetStmt *n = makeNode(VariableSetStmt); n->kind = VAR_RESET; @@ -27693,8 +29090,8 @@ YYLTYPE yylloc; ;} break; - case 239: -#line 1669 "gram.y" + case 255: +#line 1804 "gram.y" { VariableSetStmt *n = makeNode(VariableSetStmt); n->kind = VAR_RESET_ALL; @@ -27702,28 +29099,28 @@ YYLTYPE yylloc; ;} break; - case 240: -#line 1678 "gram.y" + case 256: +#line 1813 "gram.y" { (yyval.vsetstmt) = (yyvsp[(2) - (2)].vsetstmt); ;} break; - case 241: -#line 1679 "gram.y" + case 257: +#line 1814 "gram.y" { (yyval.vsetstmt) = (VariableSetStmt *) (yyvsp[(1) - (1)].node); ;} break; - case 242: -#line 1684 "gram.y" + case 258: +#line 1819 "gram.y" { (yyval.vsetstmt) = (yyvsp[(2) - (2)].vsetstmt); ;} break; - case 243: -#line 1685 "gram.y" + case 259: +#line 1820 "gram.y" { (yyval.vsetstmt) = (VariableSetStmt *) (yyvsp[(1) - (1)].node); ;} break; - case 244: -#line 1691 "gram.y" + case 260: +#line 1826 "gram.y" { VariableShowStmt *n = makeNode(VariableShowStmt); n->name = (yyvsp[(2) - (2)].str); @@ -27731,8 +29128,8 @@ YYLTYPE yylloc; ;} break; - case 245: -#line 1697 "gram.y" + case 261: +#line 1832 "gram.y" { VariableShowStmt *n = makeNode(VariableShowStmt); n->name = "timezone"; @@ -27740,8 +29137,8 @@ YYLTYPE yylloc; ;} break; - case 246: -#line 1703 "gram.y" + case 262: +#line 1838 "gram.y" { VariableShowStmt *n = makeNode(VariableShowStmt); n->name = "transaction_isolation"; @@ -27749,8 +29146,8 @@ YYLTYPE yylloc; ;} break; - case 247: -#line 1709 "gram.y" + case 263: +#line 1844 "gram.y" { VariableShowStmt *n = makeNode(VariableShowStmt); n->name = "session_authorization"; @@ -27758,8 +29155,8 @@ YYLTYPE yylloc; ;} break; - case 248: -#line 1715 "gram.y" + case 264: +#line 1850 "gram.y" { VariableShowStmt *n = makeNode(VariableShowStmt); n->name = "all"; @@ -27767,8 +29164,8 @@ YYLTYPE yylloc; ;} break; - case 249: -#line 1725 "gram.y" + case 265: +#line 1860 "gram.y" { ConstraintsSetStmt *n = makeNode(ConstraintsSetStmt); n->constraints = (yyvsp[(3) - (4)].list); @@ -27777,36 +29174,36 @@ YYLTYPE yylloc; ;} break; - case 250: -#line 1734 "gram.y" + case 266: +#line 1869 "gram.y" { (yyval.list) = NIL; ;} break; - case 251: -#line 1735 "gram.y" + case 267: +#line 1870 "gram.y" { (yyval.list) = (yyvsp[(1) - (1)].list); ;} break; - case 252: -#line 1739 "gram.y" - { (yyval.boolean) = TRUE; ;} + case 268: +#line 1874 "gram.y" + { (yyval.boolean) = true; ;} break; - case 253: -#line 1740 "gram.y" - { (yyval.boolean) = FALSE; ;} + case 269: +#line 1875 "gram.y" + { (yyval.boolean) = false; ;} break; - case 254: -#line 1749 "gram.y" + case 270: +#line 1884 "gram.y" { CheckPointStmt *n = makeNode(CheckPointStmt); (yyval.node) = (Node *)n; ;} break; - case 255: -#line 1764 "gram.y" + case 271: +#line 1899 "gram.y" { DiscardStmt *n = makeNode(DiscardStmt); n->target = DISCARD_ALL; @@ -27814,8 +29211,8 @@ YYLTYPE yylloc; ;} break; - case 256: -#line 1770 "gram.y" + case 272: +#line 1905 "gram.y" { DiscardStmt *n = makeNode(DiscardStmt); n->target = DISCARD_TEMP; @@ -27823,8 +29220,8 @@ YYLTYPE yylloc; ;} break; - case 257: -#line 1776 "gram.y" + case 273: +#line 1911 "gram.y" { DiscardStmt *n = makeNode(DiscardStmt); n->target = DISCARD_TEMP; @@ -27832,8 +29229,8 @@ YYLTYPE yylloc; ;} break; - case 258: -#line 1782 "gram.y" + case 274: +#line 1917 "gram.y" { DiscardStmt *n = makeNode(DiscardStmt); n->target = DISCARD_PLANS; @@ -27841,8 +29238,8 @@ YYLTYPE yylloc; ;} break; - case 259: -#line 1788 "gram.y" + case 275: +#line 1923 "gram.y" { DiscardStmt *n = makeNode(DiscardStmt); n->target = DISCARD_SEQUENCES; @@ -27850,8 +29247,8 @@ YYLTYPE yylloc; ;} break; - case 260: -#line 1807 "gram.y" + case 276: +#line 1942 "gram.y" { AlterTableStmt *n = makeNode(AlterTableStmt); n->relation = (yyvsp[(3) - (4)].range); @@ -27862,8 +29259,8 @@ YYLTYPE yylloc; ;} break; - case 261: -#line 1816 "gram.y" + case 277: +#line 1951 "gram.y" { AlterTableStmt *n = makeNode(AlterTableStmt); n->relation = (yyvsp[(5) - (6)].range); @@ -27874,8 +29271,8 @@ YYLTYPE yylloc; ;} break; - case 262: -#line 1825 "gram.y" + case 278: +#line 1960 "gram.y" { AlterTableStmt *n = makeNode(AlterTableStmt); n->relation = (yyvsp[(3) - (4)].range); @@ -27886,8 +29283,8 @@ YYLTYPE yylloc; ;} break; - case 263: -#line 1834 "gram.y" + case 279: +#line 1969 "gram.y" { AlterTableStmt *n = makeNode(AlterTableStmt); n->relation = (yyvsp[(5) - (6)].range); @@ -27898,8 +29295,8 @@ YYLTYPE yylloc; ;} break; - case 264: -#line 1843 "gram.y" + case 280: +#line 1978 "gram.y" { AlterTableMoveAllStmt *n = makeNode(AlterTableMoveAllStmt); @@ -27912,8 +29309,8 @@ YYLTYPE yylloc; ;} break; - case 265: -#line 1854 "gram.y" + case 281: +#line 1989 "gram.y" { AlterTableMoveAllStmt *n = makeNode(AlterTableMoveAllStmt); @@ -27926,8 +29323,8 @@ YYLTYPE yylloc; ;} break; - case 266: -#line 1865 "gram.y" + case 282: +#line 2000 "gram.y" { AlterTableStmt *n = makeNode(AlterTableStmt); n->relation = (yyvsp[(3) - (4)].range); @@ -27938,8 +29335,8 @@ YYLTYPE yylloc; ;} break; - case 267: -#line 1874 "gram.y" + case 283: +#line 2009 "gram.y" { AlterTableStmt *n = makeNode(AlterTableStmt); n->relation = (yyvsp[(5) - (6)].range); @@ -27950,8 +29347,20 @@ YYLTYPE yylloc; ;} break; - case 268: -#line 1883 "gram.y" + case 284: +#line 2018 "gram.y" + { + AlterTableStmt *n = makeNode(AlterTableStmt); + n->relation = (yyvsp[(3) - (4)].range); + n->cmds = list_make1((yyvsp[(4) - (4)].node)); + n->relkind = OBJECT_INDEX; + n->missing_ok = false; + (yyval.node) = (Node *)n; + ;} + break; + + case 285: +#line 2027 "gram.y" { AlterTableMoveAllStmt *n = makeNode(AlterTableMoveAllStmt); @@ -27964,8 +29373,8 @@ YYLTYPE yylloc; ;} break; - case 269: -#line 1894 "gram.y" + case 286: +#line 2038 "gram.y" { AlterTableMoveAllStmt *n = makeNode(AlterTableMoveAllStmt); @@ -27978,8 +29387,8 @@ YYLTYPE yylloc; ;} break; - case 270: -#line 1905 "gram.y" + case 287: +#line 2049 "gram.y" { AlterTableStmt *n = makeNode(AlterTableStmt); n->relation = (yyvsp[(3) - (4)].range); @@ -27990,8 +29399,8 @@ YYLTYPE yylloc; ;} break; - case 271: -#line 1914 "gram.y" + case 288: +#line 2058 "gram.y" { AlterTableStmt *n = makeNode(AlterTableStmt); n->relation = (yyvsp[(5) - (6)].range); @@ -28002,8 +29411,8 @@ YYLTYPE yylloc; ;} break; - case 272: -#line 1923 "gram.y" + case 289: +#line 2067 "gram.y" { AlterTableStmt *n = makeNode(AlterTableStmt); n->relation = (yyvsp[(3) - (4)].range); @@ -28014,8 +29423,8 @@ YYLTYPE yylloc; ;} break; - case 273: -#line 1932 "gram.y" + case 290: +#line 2076 "gram.y" { AlterTableStmt *n = makeNode(AlterTableStmt); n->relation = (yyvsp[(5) - (6)].range); @@ -28026,8 +29435,8 @@ YYLTYPE yylloc; ;} break; - case 274: -#line 1941 "gram.y" + case 291: +#line 2085 "gram.y" { AlterTableStmt *n = makeNode(AlterTableStmt); n->relation = (yyvsp[(4) - (5)].range); @@ -28038,8 +29447,8 @@ YYLTYPE yylloc; ;} break; - case 275: -#line 1950 "gram.y" + case 292: +#line 2094 "gram.y" { AlterTableStmt *n = makeNode(AlterTableStmt); n->relation = (yyvsp[(6) - (7)].range); @@ -28050,8 +29459,8 @@ YYLTYPE yylloc; ;} break; - case 276: -#line 1959 "gram.y" + case 293: +#line 2103 "gram.y" { AlterTableMoveAllStmt *n = makeNode(AlterTableMoveAllStmt); @@ -28064,8 +29473,8 @@ YYLTYPE yylloc; ;} break; - case 277: -#line 1970 "gram.y" + case 294: +#line 2114 "gram.y" { AlterTableMoveAllStmt *n = makeNode(AlterTableMoveAllStmt); @@ -28078,18 +29487,18 @@ YYLTYPE yylloc; ;} break; - case 278: -#line 1983 "gram.y" + case 295: +#line 2127 "gram.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].node)); ;} break; - case 279: -#line 1984 "gram.y" + case 296: +#line 2128 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].node)); ;} break; - case 280: -#line 1990 "gram.y" + case 297: +#line 2134 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); PartitionCmd *cmd = makeNode(PartitionCmd); @@ -28103,8 +29512,8 @@ YYLTYPE yylloc; ;} break; - case 281: -#line 2003 "gram.y" + case 298: +#line 2147 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); PartitionCmd *cmd = makeNode(PartitionCmd); @@ -28118,8 +29527,23 @@ YYLTYPE yylloc; ;} break; - case 282: -#line 2019 "gram.y" + case 299: +#line 2163 "gram.y" + { + AlterTableCmd *n = makeNode(AlterTableCmd); + PartitionCmd *cmd = makeNode(PartitionCmd); + + n->subtype = AT_AttachPartition; + cmd->name = (yyvsp[(3) - (3)].range); + cmd->bound = NULL; + n->def = (Node *) cmd; + + (yyval.node) = (Node *) n; + ;} + break; + + case 300: +#line 2179 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_AddColumn; @@ -28129,8 +29553,8 @@ YYLTYPE yylloc; ;} break; - case 283: -#line 2028 "gram.y" + case 301: +#line 2188 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_AddColumn; @@ -28140,8 +29564,8 @@ YYLTYPE yylloc; ;} break; - case 284: -#line 2037 "gram.y" + case 302: +#line 2197 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_AddColumn; @@ -28151,8 +29575,8 @@ YYLTYPE yylloc; ;} break; - case 285: -#line 2046 "gram.y" + case 303: +#line 2206 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_AddColumn; @@ -28162,8 +29586,8 @@ YYLTYPE yylloc; ;} break; - case 286: -#line 2055 "gram.y" + case 304: +#line 2215 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_ColumnDefault; @@ -28173,8 +29597,8 @@ YYLTYPE yylloc; ;} break; - case 287: -#line 2064 "gram.y" + case 305: +#line 2224 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_DropNotNull; @@ -28183,8 +29607,8 @@ YYLTYPE yylloc; ;} break; - case 288: -#line 2072 "gram.y" + case 306: +#line 2232 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_SetNotNull; @@ -28193,8 +29617,29 @@ YYLTYPE yylloc; ;} break; - case 289: -#line 2080 "gram.y" + case 307: +#line 2240 "gram.y" + { + AlterTableCmd *n = makeNode(AlterTableCmd); + n->subtype = AT_DropExpression; + n->name = (yyvsp[(3) - (5)].str); + (yyval.node) = (Node *)n; + ;} + break; + + case 308: +#line 2248 "gram.y" + { + AlterTableCmd *n = makeNode(AlterTableCmd); + n->subtype = AT_DropExpression; + n->name = (yyvsp[(3) - (7)].str); + n->missing_ok = true; + (yyval.node) = (Node *)n; + ;} + break; + + case 309: +#line 2257 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_SetStatistics; @@ -28204,8 +29649,26 @@ YYLTYPE yylloc; ;} break; - case 290: -#line 2089 "gram.y" + case 310: +#line 2266 "gram.y" + { + AlterTableCmd *n = makeNode(AlterTableCmd); + + if ((yyvsp[(3) - (6)].ival) <= 0 || (yyvsp[(3) - (6)].ival) > PG_INT16_MAX) + ereport(ERROR, + (errcode(ERRCODE_INVALID_PARAMETER_VALUE), + errmsg("column number must be in range from 1 to %d", PG_INT16_MAX), + parser_errposition((yylsp[(3) - (6)])))); + + n->subtype = AT_SetStatistics; + n->num = (int16) (yyvsp[(3) - (6)].ival); + n->def = (Node *) makeInteger((yyvsp[(6) - (6)].ival)); + (yyval.node) = (Node *)n; + ;} + break; + + case 311: +#line 2282 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_SetOptions; @@ -28215,8 +29678,8 @@ YYLTYPE yylloc; ;} break; - case 291: -#line 2098 "gram.y" + case 312: +#line 2291 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_ResetOptions; @@ -28226,8 +29689,8 @@ YYLTYPE yylloc; ;} break; - case 292: -#line 2107 "gram.y" + case 313: +#line 2300 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_SetStorage; @@ -28237,8 +29700,8 @@ YYLTYPE yylloc; ;} break; - case 293: -#line 2116 "gram.y" + case 314: +#line 2309 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); Constraint *c = makeNode(Constraint); @@ -28256,8 +29719,8 @@ YYLTYPE yylloc; ;} break; - case 294: -#line 2133 "gram.y" + case 315: +#line 2326 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_SetIdentity; @@ -28267,8 +29730,8 @@ YYLTYPE yylloc; ;} break; - case 295: -#line 2142 "gram.y" + case 316: +#line 2335 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_DropIdentity; @@ -28278,8 +29741,8 @@ YYLTYPE yylloc; ;} break; - case 296: -#line 2151 "gram.y" + case 317: +#line 2344 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_DropIdentity; @@ -28289,32 +29752,32 @@ YYLTYPE yylloc; ;} break; - case 297: -#line 2160 "gram.y" + case 318: +#line 2353 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_DropColumn; n->name = (yyvsp[(5) - (6)].str); n->behavior = (yyvsp[(6) - (6)].dbehavior); - n->missing_ok = TRUE; + n->missing_ok = true; (yyval.node) = (Node *)n; ;} break; - case 298: -#line 2170 "gram.y" + case 319: +#line 2363 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_DropColumn; n->name = (yyvsp[(3) - (4)].str); n->behavior = (yyvsp[(4) - (4)].dbehavior); - n->missing_ok = FALSE; + n->missing_ok = false; (yyval.node) = (Node *)n; ;} break; - case 299: -#line 2183 "gram.y" + case 320: +#line 2376 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); ColumnDef *def = makeNode(ColumnDef); @@ -28330,8 +29793,8 @@ YYLTYPE yylloc; ;} break; - case 300: -#line 2198 "gram.y" + case 321: +#line 2391 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_AlterColumnGenericOptions; @@ -28341,8 +29804,8 @@ YYLTYPE yylloc; ;} break; - case 301: -#line 2207 "gram.y" + case 322: +#line 2400 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_AddConstraint; @@ -28351,8 +29814,8 @@ YYLTYPE yylloc; ;} break; - case 302: -#line 2215 "gram.y" + case 323: +#line 2408 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); Constraint *c = makeNode(Constraint); @@ -28368,8 +29831,8 @@ YYLTYPE yylloc; ;} break; - case 303: -#line 2230 "gram.y" + case 324: +#line 2423 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_ValidateConstraint; @@ -28378,41 +29841,32 @@ YYLTYPE yylloc; ;} break; - case 304: -#line 2238 "gram.y" + case 325: +#line 2431 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_DropConstraint; n->name = (yyvsp[(5) - (6)].str); n->behavior = (yyvsp[(6) - (6)].dbehavior); - n->missing_ok = TRUE; + n->missing_ok = true; (yyval.node) = (Node *)n; ;} break; - case 305: -#line 2248 "gram.y" + case 326: +#line 2441 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_DropConstraint; n->name = (yyvsp[(3) - (4)].str); n->behavior = (yyvsp[(4) - (4)].dbehavior); - n->missing_ok = FALSE; - (yyval.node) = (Node *)n; - ;} - break; - - case 306: -#line 2258 "gram.y" - { - AlterTableCmd *n = makeNode(AlterTableCmd); - n->subtype = AT_AddOids; + n->missing_ok = false; (yyval.node) = (Node *)n; ;} break; - case 307: -#line 2265 "gram.y" + case 327: +#line 2451 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_DropOids; @@ -28420,8 +29874,8 @@ YYLTYPE yylloc; ;} break; - case 308: -#line 2272 "gram.y" + case 328: +#line 2458 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_ClusterOn; @@ -28430,8 +29884,8 @@ YYLTYPE yylloc; ;} break; - case 309: -#line 2280 "gram.y" + case 329: +#line 2466 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_DropCluster; @@ -28440,8 +29894,8 @@ YYLTYPE yylloc; ;} break; - case 310: -#line 2288 "gram.y" + case 330: +#line 2474 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_SetLogged; @@ -28449,8 +29903,8 @@ YYLTYPE yylloc; ;} break; - case 311: -#line 2295 "gram.y" + case 331: +#line 2481 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_SetUnLogged; @@ -28458,8 +29912,8 @@ YYLTYPE yylloc; ;} break; - case 312: -#line 2302 "gram.y" + case 332: +#line 2488 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_EnableTrig; @@ -28468,8 +29922,8 @@ YYLTYPE yylloc; ;} break; - case 313: -#line 2310 "gram.y" + case 333: +#line 2496 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_EnableAlwaysTrig; @@ -28478,8 +29932,8 @@ YYLTYPE yylloc; ;} break; - case 314: -#line 2318 "gram.y" + case 334: +#line 2504 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_EnableReplicaTrig; @@ -28488,8 +29942,8 @@ YYLTYPE yylloc; ;} break; - case 315: -#line 2326 "gram.y" + case 335: +#line 2512 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_EnableTrigAll; @@ -28497,8 +29951,8 @@ YYLTYPE yylloc; ;} break; - case 316: -#line 2333 "gram.y" + case 336: +#line 2519 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_EnableTrigUser; @@ -28506,8 +29960,8 @@ YYLTYPE yylloc; ;} break; - case 317: -#line 2340 "gram.y" + case 337: +#line 2526 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_DisableTrig; @@ -28516,8 +29970,8 @@ YYLTYPE yylloc; ;} break; - case 318: -#line 2348 "gram.y" + case 338: +#line 2534 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_DisableTrigAll; @@ -28525,8 +29979,8 @@ YYLTYPE yylloc; ;} break; - case 319: -#line 2355 "gram.y" + case 339: +#line 2541 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_DisableTrigUser; @@ -28534,8 +29988,8 @@ YYLTYPE yylloc; ;} break; - case 320: -#line 2362 "gram.y" + case 340: +#line 2548 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_EnableRule; @@ -28544,8 +29998,8 @@ YYLTYPE yylloc; ;} break; - case 321: -#line 2370 "gram.y" + case 341: +#line 2556 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_EnableAlwaysRule; @@ -28554,8 +30008,8 @@ YYLTYPE yylloc; ;} break; - case 322: -#line 2378 "gram.y" + case 342: +#line 2564 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_EnableReplicaRule; @@ -28564,8 +30018,8 @@ YYLTYPE yylloc; ;} break; - case 323: -#line 2386 "gram.y" + case 343: +#line 2572 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_DisableRule; @@ -28574,8 +30028,8 @@ YYLTYPE yylloc; ;} break; - case 324: -#line 2394 "gram.y" + case 344: +#line 2580 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_AddInherit; @@ -28584,8 +30038,8 @@ YYLTYPE yylloc; ;} break; - case 325: -#line 2402 "gram.y" + case 345: +#line 2588 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_DropInherit; @@ -28594,8 +30048,8 @@ YYLTYPE yylloc; ;} break; - case 326: -#line 2410 "gram.y" + case 346: +#line 2596 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); TypeName *def = makeTypeNameFromNameList((yyvsp[(2) - (2)].list)); @@ -28606,8 +30060,8 @@ YYLTYPE yylloc; ;} break; - case 327: -#line 2420 "gram.y" + case 347: +#line 2606 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_DropOf; @@ -28615,8 +30069,8 @@ YYLTYPE yylloc; ;} break; - case 328: -#line 2427 "gram.y" + case 348: +#line 2613 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_ChangeOwner; @@ -28625,8 +30079,8 @@ YYLTYPE yylloc; ;} break; - case 329: -#line 2435 "gram.y" + case 349: +#line 2621 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_SetTableSpace; @@ -28635,8 +30089,8 @@ YYLTYPE yylloc; ;} break; - case 330: -#line 2443 "gram.y" + case 350: +#line 2629 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_SetRelOptions; @@ -28645,8 +30099,8 @@ YYLTYPE yylloc; ;} break; - case 331: -#line 2451 "gram.y" + case 351: +#line 2637 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_ResetRelOptions; @@ -28655,8 +30109,8 @@ YYLTYPE yylloc; ;} break; - case 332: -#line 2459 "gram.y" + case 352: +#line 2645 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_ReplicaIdentity; @@ -28665,8 +30119,8 @@ YYLTYPE yylloc; ;} break; - case 333: -#line 2467 "gram.y" + case 353: +#line 2653 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_EnableRowSecurity; @@ -28674,8 +30128,8 @@ YYLTYPE yylloc; ;} break; - case 334: -#line 2474 "gram.y" + case 354: +#line 2660 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_DisableRowSecurity; @@ -28683,8 +30137,8 @@ YYLTYPE yylloc; ;} break; - case 335: -#line 2481 "gram.y" + case 355: +#line 2667 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_ForceRowSecurity; @@ -28692,8 +30146,8 @@ YYLTYPE yylloc; ;} break; - case 336: -#line 2488 "gram.y" + case 356: +#line 2674 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_NoForceRowSecurity; @@ -28701,8 +30155,8 @@ YYLTYPE yylloc; ;} break; - case 337: -#line 2494 "gram.y" + case 357: +#line 2680 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_GenericOptions; @@ -28711,33 +30165,33 @@ YYLTYPE yylloc; ;} break; - case 338: -#line 2503 "gram.y" + case 358: +#line 2689 "gram.y" { (yyval.node) = (yyvsp[(3) - (3)].node); ;} break; - case 339: -#line 2504 "gram.y" + case 359: +#line 2690 "gram.y" { (yyval.node) = NULL; ;} break; - case 340: -#line 2508 "gram.y" + case 360: +#line 2694 "gram.y" { (yyval.dbehavior) = DROP_CASCADE; ;} break; - case 341: -#line 2509 "gram.y" + case 361: +#line 2695 "gram.y" { (yyval.dbehavior) = DROP_RESTRICT; ;} break; - case 342: -#line 2510 "gram.y" + case 362: +#line 2696 "gram.y" { (yyval.dbehavior) = DROP_RESTRICT; /* default */ ;} break; - case 343: -#line 2515 "gram.y" + case 363: +#line 2701 "gram.y" { CollateClause *n = makeNode(CollateClause); n->arg = NULL; @@ -28747,23 +30201,23 @@ YYLTYPE yylloc; ;} break; - case 344: -#line 2522 "gram.y" + case 364: +#line 2708 "gram.y" { (yyval.node) = NULL; ;} break; - case 345: -#line 2526 "gram.y" + case 365: +#line 2712 "gram.y" { (yyval.node) = (yyvsp[(2) - (2)].node); ;} break; - case 346: -#line 2527 "gram.y" + case 366: +#line 2713 "gram.y" { (yyval.node) = NULL; ;} break; - case 347: -#line 2532 "gram.y" + case 367: +#line 2718 "gram.y" { ReplicaIdentityStmt *n = makeNode(ReplicaIdentityStmt); n->identity_type = REPLICA_IDENTITY_NOTHING; @@ -28772,8 +30226,8 @@ YYLTYPE yylloc; ;} break; - case 348: -#line 2539 "gram.y" + case 368: +#line 2725 "gram.y" { ReplicaIdentityStmt *n = makeNode(ReplicaIdentityStmt); n->identity_type = REPLICA_IDENTITY_FULL; @@ -28782,8 +30236,8 @@ YYLTYPE yylloc; ;} break; - case 349: -#line 2546 "gram.y" + case 369: +#line 2732 "gram.y" { ReplicaIdentityStmt *n = makeNode(ReplicaIdentityStmt); n->identity_type = REPLICA_IDENTITY_DEFAULT; @@ -28792,8 +30246,8 @@ YYLTYPE yylloc; ;} break; - case 350: -#line 2553 "gram.y" + case 370: +#line 2739 "gram.y" { ReplicaIdentityStmt *n = makeNode(ReplicaIdentityStmt); n->identity_type = REPLICA_IDENTITY_INDEX; @@ -28802,111 +30256,166 @@ YYLTYPE yylloc; ;} break; - case 351: -#line 2562 "gram.y" + case 371: +#line 2748 "gram.y" { (yyval.list) = (yyvsp[(2) - (3)].list); ;} break; - case 352: -#line 2565 "gram.y" + case 372: +#line 2751 "gram.y" { (yyval.list) = (yyvsp[(2) - (2)].list); ;} break; - case 353: -#line 2566 "gram.y" + case 373: +#line 2752 "gram.y" { (yyval.list) = NIL; ;} break; - case 354: -#line 2570 "gram.y" + case 374: +#line 2756 "gram.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].defelt)); ;} break; - case 355: -#line 2571 "gram.y" + case 375: +#line 2757 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].defelt)); ;} break; - case 356: -#line 2577 "gram.y" + case 376: +#line 2763 "gram.y" { (yyval.defelt) = makeDefElem((yyvsp[(1) - (3)].str), (Node *) (yyvsp[(3) - (3)].node), (yylsp[(1) - (3)])); ;} break; - case 357: -#line 2581 "gram.y" + case 377: +#line 2767 "gram.y" { (yyval.defelt) = makeDefElem((yyvsp[(1) - (1)].str), NULL, (yylsp[(1) - (1)])); ;} break; - case 358: -#line 2585 "gram.y" + case 378: +#line 2771 "gram.y" { (yyval.defelt) = makeDefElemExtended((yyvsp[(1) - (5)].str), (yyvsp[(3) - (5)].str), (Node *) (yyvsp[(5) - (5)].node), DEFELEM_UNSPEC, (yylsp[(1) - (5)])); ;} break; - case 359: -#line 2590 "gram.y" + case 379: +#line 2776 "gram.y" { (yyval.defelt) = makeDefElemExtended((yyvsp[(1) - (3)].str), (yyvsp[(3) - (3)].str), NULL, DEFELEM_UNSPEC, (yylsp[(1) - (3)])); ;} break; - case 360: -#line 2597 "gram.y" + case 380: +#line 2783 "gram.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].defelt)); ;} break; - case 361: -#line 2599 "gram.y" + case 381: +#line 2785 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (2)].list), (yyvsp[(2) - (2)].defelt)); ;} break; - case 362: -#line 2604 "gram.y" + case 382: +#line 2790 "gram.y" { (yyval.defelt) = makeDefElem("restart", NULL, (yylsp[(1) - (1)])); ;} break; - case 363: -#line 2608 "gram.y" + case 383: +#line 2794 "gram.y" { (yyval.defelt) = makeDefElem("restart", (Node *)(yyvsp[(3) - (3)].value), (yylsp[(1) - (3)])); ;} break; - case 364: -#line 2612 "gram.y" + case 384: +#line 2798 "gram.y" { if (strcmp((yyvsp[(2) - (2)].defelt)->defname, "as") == 0 || strcmp((yyvsp[(2) - (2)].defelt)->defname, "restart") == 0 || strcmp((yyvsp[(2) - (2)].defelt)->defname, "owned_by") == 0) ereport(ERROR, (errcode(ERRCODE_SYNTAX_ERROR), - errmsg("sequence option \"%s\" not supported here", (yyvsp[(2) - (2)].defelt)->defname), - parser_errposition((yylsp[(2) - (2)])))); - (yyval.defelt) = (yyvsp[(2) - (2)].defelt); - ;} - break; + errmsg("sequence option \"%s\" not supported here", (yyvsp[(2) - (2)].defelt)->defname), + parser_errposition((yylsp[(2) - (2)])))); + (yyval.defelt) = (yyvsp[(2) - (2)].defelt); + ;} + break; + + case 385: +#line 2809 "gram.y" + { + (yyval.defelt) = makeDefElem("generated", (Node *) makeInteger((yyvsp[(3) - (3)].ival)), (yylsp[(1) - (3)])); + ;} + break; + + case 386: +#line 2817 "gram.y" + { + ListCell *lc; + PartitionBoundSpec *n = makeNode(PartitionBoundSpec); + + n->strategy = PARTITION_STRATEGY_HASH; + n->modulus = n->remainder = -1; + + foreach (lc, (yyvsp[(5) - (6)].list)) + { + DefElem *opt = lfirst_node(DefElem, lc); + + if (strcmp(opt->defname, "modulus") == 0) + { + if (n->modulus != -1) + ereport(ERROR, + (errcode(ERRCODE_DUPLICATE_OBJECT), + errmsg("modulus for hash partition provided more than once"), + parser_errposition(opt->location))); + n->modulus = defGetInt32(opt); + } + else if (strcmp(opt->defname, "remainder") == 0) + { + if (n->remainder != -1) + ereport(ERROR, + (errcode(ERRCODE_DUPLICATE_OBJECT), + errmsg("remainder for hash partition provided more than once"), + parser_errposition(opt->location))); + n->remainder = defGetInt32(opt); + } + else + ereport(ERROR, + (errcode(ERRCODE_SYNTAX_ERROR), + errmsg("unrecognized hash partition bound specification \"%s\"", + opt->defname), + parser_errposition(opt->location))); + } + + if (n->modulus == -1) + ereport(ERROR, + (errcode(ERRCODE_SYNTAX_ERROR), + errmsg("modulus for hash partition must be specified"))); + if (n->remainder == -1) + ereport(ERROR, + (errcode(ERRCODE_SYNTAX_ERROR), + errmsg("remainder for hash partition must be specified"))); - case 365: -#line 2623 "gram.y" - { - (yyval.defelt) = makeDefElem("generated", (Node *) makeInteger((yyvsp[(3) - (3)].ival)), (yylsp[(1) - (3)])); + n->location = (yylsp[(3) - (6)]); + + (yyval.partboundspec) = n; ;} break; - case 366: -#line 2631 "gram.y" + case 387: +#line 2870 "gram.y" { PartitionBoundSpec *n = makeNode(PartitionBoundSpec); n->strategy = PARTITION_STRATEGY_LIST; + n->is_default = false; n->listdatums = (yyvsp[(5) - (6)].list); n->location = (yylsp[(3) - (6)]); @@ -28914,12 +30423,13 @@ YYLTYPE yylloc; ;} break; - case 367: -#line 2643 "gram.y" + case 388: +#line 2883 "gram.y" { PartitionBoundSpec *n = makeNode(PartitionBoundSpec); n->strategy = PARTITION_STRATEGY_RANGE; + n->is_default = false; n->lowerdatums = (yyvsp[(5) - (10)].list); n->upperdatums = (yyvsp[(9) - (10)].list); n->location = (yylsp[(3) - (10)]); @@ -28928,92 +30438,41 @@ YYLTYPE yylloc; ;} break; - case 368: -#line 2656 "gram.y" - { (yyval.node) = makeStringConst((yyvsp[(1) - (1)].str), (yylsp[(1) - (1)])); ;} - break; - - case 369: -#line 2657 "gram.y" - { (yyval.node) = makeAConst((yyvsp[(1) - (1)].value), (yylsp[(1) - (1)])); ;} - break; - - case 370: -#line 2658 "gram.y" - { (yyval.node) = makeStringConst(pstrdup("true"), (yylsp[(1) - (1)])); ;} - break; - - case 371: -#line 2659 "gram.y" - { (yyval.node) = makeStringConst(pstrdup("false"), (yylsp[(1) - (1)])); ;} - break; - - case 372: -#line 2660 "gram.y" - { (yyval.node) = makeNullAConst((yylsp[(1) - (1)])); ;} - break; - - case 373: -#line 2664 "gram.y" - { (yyval.list) = list_make1((yyvsp[(1) - (1)].node)); ;} - break; - - case 374: -#line 2666 "gram.y" - { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].node)); ;} - break; - - case 375: -#line 2670 "gram.y" - { (yyval.list) = list_make1((yyvsp[(1) - (1)].node)); ;} - break; - - case 376: -#line 2672 "gram.y" - { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].node)); ;} - break; - - case 377: -#line 2677 "gram.y" + case 389: +#line 2897 "gram.y" { - PartitionRangeDatum *n = makeNode(PartitionRangeDatum); + PartitionBoundSpec *n = makeNode(PartitionBoundSpec); - n->kind = PARTITION_RANGE_DATUM_MINVALUE; - n->value = NULL; + n->is_default = true; n->location = (yylsp[(1) - (1)]); - (yyval.node) = (Node *) n; + (yyval.partboundspec) = n; ;} break; - case 378: -#line 2687 "gram.y" + case 390: +#line 2909 "gram.y" { - PartitionRangeDatum *n = makeNode(PartitionRangeDatum); - - n->kind = PARTITION_RANGE_DATUM_MAXVALUE; - n->value = NULL; - n->location = (yylsp[(1) - (1)]); - - (yyval.node) = (Node *) n; - ;} + (yyval.defelt) = makeDefElem((yyvsp[(1) - (2)].str), (Node *)makeInteger((yyvsp[(2) - (2)].ival)), (yylsp[(1) - (2)])); + ;} break; - case 379: -#line 2697 "gram.y" + case 391: +#line 2916 "gram.y" { - PartitionRangeDatum *n = makeNode(PartitionRangeDatum); - - n->kind = PARTITION_RANGE_DATUM_VALUE; - n->value = (yyvsp[(1) - (1)].node); - n->location = (yylsp[(1) - (1)]); + (yyval.list) = list_make1((yyvsp[(1) - (1)].defelt)); + ;} + break; - (yyval.node) = (Node *) n; - ;} + case 392: +#line 2920 "gram.y" + { + (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].defelt)); + ;} break; - case 380: -#line 2717 "gram.y" + case 393: +#line 2934 "gram.y" { AlterTableStmt *n = makeNode(AlterTableStmt); @@ -29025,18 +30484,18 @@ YYLTYPE yylloc; ;} break; - case 381: -#line 2729 "gram.y" + case 394: +#line 2946 "gram.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].node)); ;} break; - case 382: -#line 2730 "gram.y" + case 395: +#line 2947 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].node)); ;} break; - case 383: -#line 2736 "gram.y" + case 396: +#line 2953 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_AddColumn; @@ -29046,32 +30505,32 @@ YYLTYPE yylloc; ;} break; - case 384: -#line 2745 "gram.y" + case 397: +#line 2962 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_DropColumn; n->name = (yyvsp[(5) - (6)].str); n->behavior = (yyvsp[(6) - (6)].dbehavior); - n->missing_ok = TRUE; + n->missing_ok = true; (yyval.node) = (Node *)n; ;} break; - case 385: -#line 2755 "gram.y" + case 398: +#line 2972 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_DropColumn; n->name = (yyvsp[(3) - (4)].str); n->behavior = (yyvsp[(4) - (4)].dbehavior); - n->missing_ok = FALSE; + n->missing_ok = false; (yyval.node) = (Node *)n; ;} break; - case 386: -#line 2765 "gram.y" + case 399: +#line 2982 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); ColumnDef *def = makeNode(ColumnDef); @@ -29088,8 +30547,8 @@ YYLTYPE yylloc; ;} break; - case 387: -#line 2791 "gram.y" + case 400: +#line 3008 "gram.y" { ClosePortalStmt *n = makeNode(ClosePortalStmt); n->portalname = (yyvsp[(2) - (2)].str); @@ -29097,8 +30556,8 @@ YYLTYPE yylloc; ;} break; - case 388: -#line 2797 "gram.y" + case 401: +#line 3014 "gram.y" { ClosePortalStmt *n = makeNode(ClosePortalStmt); n->portalname = NULL; @@ -29106,16 +30565,17 @@ YYLTYPE yylloc; ;} break; - case 389: -#line 2831 "gram.y" + case 402: +#line 3049 "gram.y" { CopyStmt *n = makeNode(CopyStmt); n->relation = (yyvsp[(3) - (11)].range); n->query = NULL; n->attlist = (yyvsp[(4) - (11)].list); - n->is_from = (yyvsp[(6) - (11)].boolean); - n->is_program = (yyvsp[(7) - (11)].boolean); - n->filename = (yyvsp[(8) - (11)].str); + n->is_from = (yyvsp[(5) - (11)].boolean); + n->is_program = (yyvsp[(6) - (11)].boolean); + n->filename = (yyvsp[(7) - (11)].str); + n->whereClause = (yyvsp[(11) - (11)].node); if (n->is_program && n->filename == NULL) ereport(ERROR, @@ -29123,22 +30583,26 @@ YYLTYPE yylloc; errmsg("STDIN/STDOUT not allowed with PROGRAM"), parser_errposition((yylsp[(8) - (11)])))); + if (!n->is_from && n->whereClause != NULL) + ereport(ERROR, + (errcode(ERRCODE_SYNTAX_ERROR), + errmsg("WHERE clause not allowed with COPY TO"), + parser_errposition((yylsp[(11) - (11)])))); + n->options = NIL; /* Concatenate user-supplied flags */ if ((yyvsp[(2) - (11)].defelt)) n->options = lappend(n->options, (yyvsp[(2) - (11)].defelt)); - if ((yyvsp[(5) - (11)].defelt)) - n->options = lappend(n->options, (yyvsp[(5) - (11)].defelt)); - if ((yyvsp[(9) - (11)].defelt)) - n->options = lappend(n->options, (yyvsp[(9) - (11)].defelt)); - if ((yyvsp[(11) - (11)].list)) - n->options = list_concat(n->options, (yyvsp[(11) - (11)].list)); + if ((yyvsp[(8) - (11)].defelt)) + n->options = lappend(n->options, (yyvsp[(8) - (11)].defelt)); + if ((yyvsp[(10) - (11)].list)) + n->options = list_concat(n->options, (yyvsp[(10) - (11)].list)); (yyval.node) = (Node *)n; ;} break; - case 390: -#line 2859 "gram.y" + case 403: +#line 3082 "gram.y" { CopyStmt *n = makeNode(CopyStmt); n->relation = NULL; @@ -29159,410 +30623,397 @@ YYLTYPE yylloc; ;} break; - case 391: -#line 2880 "gram.y" - { (yyval.boolean) = TRUE; ;} + case 404: +#line 3103 "gram.y" + { (yyval.boolean) = true; ;} break; - case 392: -#line 2881 "gram.y" - { (yyval.boolean) = FALSE; ;} + case 405: +#line 3104 "gram.y" + { (yyval.boolean) = false; ;} break; - case 393: -#line 2885 "gram.y" - { (yyval.boolean) = TRUE; ;} + case 406: +#line 3108 "gram.y" + { (yyval.boolean) = true; ;} break; - case 394: -#line 2886 "gram.y" - { (yyval.boolean) = FALSE; ;} + case 407: +#line 3109 "gram.y" + { (yyval.boolean) = false; ;} break; - case 395: -#line 2895 "gram.y" + case 408: +#line 3118 "gram.y" { (yyval.str) = (yyvsp[(1) - (1)].str); ;} break; - case 396: -#line 2896 "gram.y" + case 409: +#line 3119 "gram.y" { (yyval.str) = NULL; ;} break; - case 397: -#line 2897 "gram.y" + case 410: +#line 3120 "gram.y" { (yyval.str) = NULL; ;} break; - case 398: -#line 2900 "gram.y" + case 411: +#line 3123 "gram.y" { (yyval.list) = (yyvsp[(1) - (1)].list); ;} break; - case 399: -#line 2901 "gram.y" + case 412: +#line 3124 "gram.y" { (yyval.list) = (yyvsp[(2) - (3)].list); ;} break; - case 400: -#line 2906 "gram.y" + case 413: +#line 3129 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (2)].list), (yyvsp[(2) - (2)].defelt)); ;} break; - case 401: -#line 2907 "gram.y" + case 414: +#line 3130 "gram.y" { (yyval.list) = NIL; ;} break; - case 402: -#line 2912 "gram.y" + case 415: +#line 3135 "gram.y" { (yyval.defelt) = makeDefElem("format", (Node *)makeString("binary"), (yylsp[(1) - (1)])); ;} break; - case 403: -#line 2916 "gram.y" - { - (yyval.defelt) = makeDefElem("oids", (Node *)makeInteger(TRUE), (yylsp[(1) - (1)])); - ;} - break; - - case 404: -#line 2920 "gram.y" + case 416: +#line 3139 "gram.y" { - (yyval.defelt) = makeDefElem("freeze", (Node *)makeInteger(TRUE), (yylsp[(1) - (1)])); + (yyval.defelt) = makeDefElem("freeze", (Node *)makeInteger(true), (yylsp[(1) - (1)])); ;} break; - case 405: -#line 2924 "gram.y" + case 417: +#line 3143 "gram.y" { (yyval.defelt) = makeDefElem("delimiter", (Node *)makeString((yyvsp[(3) - (3)].str)), (yylsp[(1) - (3)])); ;} break; - case 406: -#line 2928 "gram.y" + case 418: +#line 3147 "gram.y" { (yyval.defelt) = makeDefElem("null", (Node *)makeString((yyvsp[(3) - (3)].str)), (yylsp[(1) - (3)])); ;} break; - case 407: -#line 2932 "gram.y" + case 419: +#line 3151 "gram.y" { (yyval.defelt) = makeDefElem("format", (Node *)makeString("csv"), (yylsp[(1) - (1)])); ;} break; - case 408: -#line 2936 "gram.y" + case 420: +#line 3155 "gram.y" { - (yyval.defelt) = makeDefElem("header", (Node *)makeInteger(TRUE), (yylsp[(1) - (1)])); + (yyval.defelt) = makeDefElem("header", (Node *)makeInteger(true), (yylsp[(1) - (1)])); ;} break; - case 409: -#line 2940 "gram.y" + case 421: +#line 3159 "gram.y" { (yyval.defelt) = makeDefElem("quote", (Node *)makeString((yyvsp[(3) - (3)].str)), (yylsp[(1) - (3)])); ;} break; - case 410: -#line 2944 "gram.y" + case 422: +#line 3163 "gram.y" { (yyval.defelt) = makeDefElem("escape", (Node *)makeString((yyvsp[(3) - (3)].str)), (yylsp[(1) - (3)])); ;} break; - case 411: -#line 2948 "gram.y" + case 423: +#line 3167 "gram.y" { (yyval.defelt) = makeDefElem("force_quote", (Node *)(yyvsp[(3) - (3)].list), (yylsp[(1) - (3)])); ;} break; - case 412: -#line 2952 "gram.y" + case 424: +#line 3171 "gram.y" { (yyval.defelt) = makeDefElem("force_quote", (Node *)makeNode(A_Star), (yylsp[(1) - (3)])); ;} break; - case 413: -#line 2956 "gram.y" + case 425: +#line 3175 "gram.y" { (yyval.defelt) = makeDefElem("force_not_null", (Node *)(yyvsp[(4) - (4)].list), (yylsp[(1) - (4)])); ;} break; - case 414: -#line 2960 "gram.y" + case 426: +#line 3179 "gram.y" { (yyval.defelt) = makeDefElem("force_null", (Node *)(yyvsp[(3) - (3)].list), (yylsp[(1) - (3)])); ;} break; - case 415: -#line 2964 "gram.y" + case 427: +#line 3183 "gram.y" { (yyval.defelt) = makeDefElem("encoding", (Node *)makeString((yyvsp[(2) - (2)].str)), (yylsp[(1) - (2)])); ;} break; - case 416: -#line 2973 "gram.y" + case 428: +#line 3192 "gram.y" { (yyval.defelt) = makeDefElem("format", (Node *)makeString("binary"), (yylsp[(1) - (1)])); ;} break; - case 417: -#line 2976 "gram.y" - { (yyval.defelt) = NULL; ;} - break; - - case 418: -#line 2981 "gram.y" - { - (yyval.defelt) = makeDefElem("oids", (Node *)makeInteger(TRUE), (yylsp[(1) - (2)])); - ;} - break; - - case 419: -#line 2984 "gram.y" + case 429: +#line 3195 "gram.y" { (yyval.defelt) = NULL; ;} break; - case 420: -#line 2989 "gram.y" + case 430: +#line 3200 "gram.y" { (yyval.defelt) = makeDefElem("delimiter", (Node *)makeString((yyvsp[(3) - (3)].str)), (yylsp[(2) - (3)])); ;} break; - case 421: -#line 2992 "gram.y" + case 431: +#line 3203 "gram.y" { (yyval.defelt) = NULL; ;} break; - case 422: -#line 2996 "gram.y" + case 432: +#line 3207 "gram.y" {;} break; - case 423: -#line 2997 "gram.y" + case 433: +#line 3208 "gram.y" {;} break; - case 424: -#line 3003 "gram.y" + case 434: +#line 3214 "gram.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].defelt)); ;} break; - case 425: -#line 3007 "gram.y" + case 435: +#line 3218 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].defelt)); ;} break; - case 426: -#line 3014 "gram.y" + case 436: +#line 3225 "gram.y" { (yyval.defelt) = makeDefElem((yyvsp[(1) - (2)].str), (yyvsp[(2) - (2)].node), (yylsp[(1) - (2)])); ;} break; - case 427: -#line 3020 "gram.y" + case 437: +#line 3231 "gram.y" { (yyval.node) = (Node *) makeString((yyvsp[(1) - (1)].str)); ;} break; - case 428: -#line 3021 "gram.y" + case 438: +#line 3232 "gram.y" { (yyval.node) = (Node *) (yyvsp[(1) - (1)].value); ;} break; - case 429: -#line 3022 "gram.y" + case 439: +#line 3233 "gram.y" { (yyval.node) = (Node *) makeNode(A_Star); ;} break; - case 430: -#line 3023 "gram.y" + case 440: +#line 3234 "gram.y" { (yyval.node) = (Node *) (yyvsp[(2) - (3)].list); ;} break; - case 431: -#line 3024 "gram.y" + case 441: +#line 3235 "gram.y" { (yyval.node) = NULL; ;} break; - case 432: -#line 3029 "gram.y" + case 442: +#line 3240 "gram.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].node)); ;} break; - case 433: -#line 3033 "gram.y" + case 443: +#line 3244 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].node)); ;} break; - case 434: -#line 3040 "gram.y" + case 444: +#line 3251 "gram.y" { (yyval.node) = (Node *) makeString((yyvsp[(1) - (1)].str)); ;} break; - case 435: -#line 3053 "gram.y" + case 445: +#line 3265 "gram.y" { CreateStmt *n = makeNode(CreateStmt); - (yyvsp[(4) - (12)].range)->relpersistence = (yyvsp[(2) - (12)].ival); - n->relation = (yyvsp[(4) - (12)].range); - n->tableElts = (yyvsp[(6) - (12)].list); - n->inhRelations = (yyvsp[(8) - (12)].list); - n->partspec = (yyvsp[(9) - (12)].partspec); + (yyvsp[(4) - (13)].range)->relpersistence = (yyvsp[(2) - (13)].ival); + n->relation = (yyvsp[(4) - (13)].range); + n->tableElts = (yyvsp[(6) - (13)].list); + n->inhRelations = (yyvsp[(8) - (13)].list); + n->partspec = (yyvsp[(9) - (13)].partspec); n->ofTypename = NULL; n->constraints = NIL; - n->options = (yyvsp[(10) - (12)].list); - n->oncommit = (yyvsp[(11) - (12)].oncommit); - n->tablespacename = (yyvsp[(12) - (12)].str); + n->accessMethod = (yyvsp[(10) - (13)].str); + n->options = (yyvsp[(11) - (13)].list); + n->oncommit = (yyvsp[(12) - (13)].oncommit); + n->tablespacename = (yyvsp[(13) - (13)].str); n->if_not_exists = false; (yyval.node) = (Node *)n; ;} break; - case 436: -#line 3071 "gram.y" + case 446: +#line 3284 "gram.y" { CreateStmt *n = makeNode(CreateStmt); - (yyvsp[(7) - (15)].range)->relpersistence = (yyvsp[(2) - (15)].ival); - n->relation = (yyvsp[(7) - (15)].range); - n->tableElts = (yyvsp[(9) - (15)].list); - n->inhRelations = (yyvsp[(11) - (15)].list); - n->partspec = (yyvsp[(12) - (15)].partspec); + (yyvsp[(7) - (16)].range)->relpersistence = (yyvsp[(2) - (16)].ival); + n->relation = (yyvsp[(7) - (16)].range); + n->tableElts = (yyvsp[(9) - (16)].list); + n->inhRelations = (yyvsp[(11) - (16)].list); + n->partspec = (yyvsp[(12) - (16)].partspec); n->ofTypename = NULL; n->constraints = NIL; - n->options = (yyvsp[(13) - (15)].list); - n->oncommit = (yyvsp[(14) - (15)].oncommit); - n->tablespacename = (yyvsp[(15) - (15)].str); + n->accessMethod = (yyvsp[(13) - (16)].str); + n->options = (yyvsp[(14) - (16)].list); + n->oncommit = (yyvsp[(15) - (16)].oncommit); + n->tablespacename = (yyvsp[(16) - (16)].str); n->if_not_exists = true; (yyval.node) = (Node *)n; ;} break; - case 437: -#line 3089 "gram.y" + case 447: +#line 3303 "gram.y" { CreateStmt *n = makeNode(CreateStmt); - (yyvsp[(4) - (11)].range)->relpersistence = (yyvsp[(2) - (11)].ival); - n->relation = (yyvsp[(4) - (11)].range); - n->tableElts = (yyvsp[(7) - (11)].list); + (yyvsp[(4) - (12)].range)->relpersistence = (yyvsp[(2) - (12)].ival); + n->relation = (yyvsp[(4) - (12)].range); + n->tableElts = (yyvsp[(7) - (12)].list); n->inhRelations = NIL; - n->partspec = (yyvsp[(8) - (11)].partspec); - n->ofTypename = makeTypeNameFromNameList((yyvsp[(6) - (11)].list)); - n->ofTypename->location = (yylsp[(6) - (11)]); + n->partspec = (yyvsp[(8) - (12)].partspec); + n->ofTypename = makeTypeNameFromNameList((yyvsp[(6) - (12)].list)); + n->ofTypename->location = (yylsp[(6) - (12)]); n->constraints = NIL; - n->options = (yyvsp[(9) - (11)].list); - n->oncommit = (yyvsp[(10) - (11)].oncommit); - n->tablespacename = (yyvsp[(11) - (11)].str); + n->accessMethod = (yyvsp[(9) - (12)].str); + n->options = (yyvsp[(10) - (12)].list); + n->oncommit = (yyvsp[(11) - (12)].oncommit); + n->tablespacename = (yyvsp[(12) - (12)].str); n->if_not_exists = false; (yyval.node) = (Node *)n; ;} break; - case 438: -#line 3108 "gram.y" + case 448: +#line 3323 "gram.y" { CreateStmt *n = makeNode(CreateStmt); - (yyvsp[(7) - (14)].range)->relpersistence = (yyvsp[(2) - (14)].ival); - n->relation = (yyvsp[(7) - (14)].range); - n->tableElts = (yyvsp[(10) - (14)].list); + (yyvsp[(7) - (15)].range)->relpersistence = (yyvsp[(2) - (15)].ival); + n->relation = (yyvsp[(7) - (15)].range); + n->tableElts = (yyvsp[(10) - (15)].list); n->inhRelations = NIL; - n->partspec = (yyvsp[(11) - (14)].partspec); - n->ofTypename = makeTypeNameFromNameList((yyvsp[(9) - (14)].list)); - n->ofTypename->location = (yylsp[(9) - (14)]); + n->partspec = (yyvsp[(11) - (15)].partspec); + n->ofTypename = makeTypeNameFromNameList((yyvsp[(9) - (15)].list)); + n->ofTypename->location = (yylsp[(9) - (15)]); n->constraints = NIL; - n->options = (yyvsp[(12) - (14)].list); - n->oncommit = (yyvsp[(13) - (14)].oncommit); - n->tablespacename = (yyvsp[(14) - (14)].str); + n->accessMethod = (yyvsp[(12) - (15)].str); + n->options = (yyvsp[(13) - (15)].list); + n->oncommit = (yyvsp[(14) - (15)].oncommit); + n->tablespacename = (yyvsp[(15) - (15)].str); n->if_not_exists = true; (yyval.node) = (Node *)n; ;} break; - case 439: -#line 3127 "gram.y" + case 449: +#line 3343 "gram.y" { CreateStmt *n = makeNode(CreateStmt); - (yyvsp[(4) - (13)].range)->relpersistence = (yyvsp[(2) - (13)].ival); - n->relation = (yyvsp[(4) - (13)].range); - n->tableElts = (yyvsp[(8) - (13)].list); - n->inhRelations = list_make1((yyvsp[(7) - (13)].range)); - n->partbound = (yyvsp[(9) - (13)].partboundspec); - n->partspec = (yyvsp[(10) - (13)].partspec); + (yyvsp[(4) - (14)].range)->relpersistence = (yyvsp[(2) - (14)].ival); + n->relation = (yyvsp[(4) - (14)].range); + n->tableElts = (yyvsp[(8) - (14)].list); + n->inhRelations = list_make1((yyvsp[(7) - (14)].range)); + n->partbound = (yyvsp[(9) - (14)].partboundspec); + n->partspec = (yyvsp[(10) - (14)].partspec); n->ofTypename = NULL; n->constraints = NIL; - n->options = (yyvsp[(11) - (13)].list); - n->oncommit = (yyvsp[(12) - (13)].oncommit); - n->tablespacename = (yyvsp[(13) - (13)].str); + n->accessMethod = (yyvsp[(11) - (14)].str); + n->options = (yyvsp[(12) - (14)].list); + n->oncommit = (yyvsp[(13) - (14)].oncommit); + n->tablespacename = (yyvsp[(14) - (14)].str); n->if_not_exists = false; (yyval.node) = (Node *)n; ;} break; - case 440: -#line 3146 "gram.y" + case 450: +#line 3363 "gram.y" { CreateStmt *n = makeNode(CreateStmt); - (yyvsp[(7) - (16)].range)->relpersistence = (yyvsp[(2) - (16)].ival); - n->relation = (yyvsp[(7) - (16)].range); - n->tableElts = (yyvsp[(11) - (16)].list); - n->inhRelations = list_make1((yyvsp[(10) - (16)].range)); - n->partbound = (yyvsp[(12) - (16)].partboundspec); - n->partspec = (yyvsp[(13) - (16)].partspec); + (yyvsp[(7) - (17)].range)->relpersistence = (yyvsp[(2) - (17)].ival); + n->relation = (yyvsp[(7) - (17)].range); + n->tableElts = (yyvsp[(11) - (17)].list); + n->inhRelations = list_make1((yyvsp[(10) - (17)].range)); + n->partbound = (yyvsp[(12) - (17)].partboundspec); + n->partspec = (yyvsp[(13) - (17)].partspec); n->ofTypename = NULL; n->constraints = NIL; - n->options = (yyvsp[(14) - (16)].list); - n->oncommit = (yyvsp[(15) - (16)].oncommit); - n->tablespacename = (yyvsp[(16) - (16)].str); + n->accessMethod = (yyvsp[(14) - (17)].str); + n->options = (yyvsp[(15) - (17)].list); + n->oncommit = (yyvsp[(16) - (17)].oncommit); + n->tablespacename = (yyvsp[(17) - (17)].str); n->if_not_exists = true; (yyval.node) = (Node *)n; ;} break; - case 441: -#line 3175 "gram.y" + case 451: +#line 3393 "gram.y" { (yyval.ival) = RELPERSISTENCE_TEMP; ;} break; - case 442: -#line 3176 "gram.y" + case 452: +#line 3394 "gram.y" { (yyval.ival) = RELPERSISTENCE_TEMP; ;} break; - case 443: -#line 3177 "gram.y" + case 453: +#line 3395 "gram.y" { (yyval.ival) = RELPERSISTENCE_TEMP; ;} break; - case 444: -#line 3178 "gram.y" + case 454: +#line 3396 "gram.y" { (yyval.ival) = RELPERSISTENCE_TEMP; ;} break; - case 445: -#line 3180 "gram.y" + case 455: +#line 3398 "gram.y" { ereport(WARNING, (errmsg("GLOBAL is deprecated in temporary table creation"), @@ -29571,8 +31022,8 @@ YYLTYPE yylloc; ;} break; - case 446: -#line 3187 "gram.y" + case 456: +#line 3405 "gram.y" { ereport(WARNING, (errmsg("GLOBAL is deprecated in temporary table creation"), @@ -29581,91 +31032,91 @@ YYLTYPE yylloc; ;} break; - case 447: -#line 3193 "gram.y" + case 457: +#line 3411 "gram.y" { (yyval.ival) = RELPERSISTENCE_UNLOGGED; ;} break; - case 448: -#line 3194 "gram.y" + case 458: +#line 3412 "gram.y" { (yyval.ival) = RELPERSISTENCE_PERMANENT; ;} break; - case 449: -#line 3198 "gram.y" + case 459: +#line 3416 "gram.y" { (yyval.list) = (yyvsp[(1) - (1)].list); ;} break; - case 450: -#line 3199 "gram.y" + case 460: +#line 3417 "gram.y" { (yyval.list) = NIL; ;} break; - case 451: -#line 3203 "gram.y" + case 461: +#line 3421 "gram.y" { (yyval.list) = (yyvsp[(2) - (3)].list); ;} break; - case 452: -#line 3204 "gram.y" + case 462: +#line 3422 "gram.y" { (yyval.list) = NIL; ;} break; - case 453: -#line 3209 "gram.y" + case 463: +#line 3427 "gram.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].node)); ;} break; - case 454: -#line 3213 "gram.y" + case 464: +#line 3431 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].node)); ;} break; - case 455: -#line 3220 "gram.y" + case 465: +#line 3438 "gram.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].node)); ;} break; - case 456: -#line 3224 "gram.y" + case 466: +#line 3442 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].node)); ;} break; - case 457: -#line 3230 "gram.y" + case 467: +#line 3448 "gram.y" { (yyval.node) = (yyvsp[(1) - (1)].node); ;} break; - case 458: -#line 3231 "gram.y" + case 468: +#line 3449 "gram.y" { (yyval.node) = (yyvsp[(1) - (1)].node); ;} break; - case 459: -#line 3232 "gram.y" + case 469: +#line 3450 "gram.y" { (yyval.node) = (yyvsp[(1) - (1)].node); ;} break; - case 460: -#line 3236 "gram.y" + case 470: +#line 3454 "gram.y" { (yyval.node) = (yyvsp[(1) - (1)].node); ;} break; - case 461: -#line 3237 "gram.y" + case 471: +#line 3455 "gram.y" { (yyval.node) = (yyvsp[(1) - (1)].node); ;} break; - case 462: -#line 3241 "gram.y" + case 472: +#line 3459 "gram.y" { ColumnDef *n = makeNode(ColumnDef); n->colname = (yyvsp[(1) - (4)].str); @@ -29686,8 +31137,8 @@ YYLTYPE yylloc; ;} break; - case 463: -#line 3262 "gram.y" + case 473: +#line 3480 "gram.y" { ColumnDef *n = makeNode(ColumnDef); n->colname = (yyvsp[(1) - (2)].str); @@ -29707,8 +31158,8 @@ YYLTYPE yylloc; ;} break; - case 464: -#line 3280 "gram.y" + case 474: +#line 3498 "gram.y" { ColumnDef *n = makeNode(ColumnDef); n->colname = (yyvsp[(1) - (4)].str); @@ -29728,18 +31179,18 @@ YYLTYPE yylloc; ;} break; - case 465: -#line 3300 "gram.y" + case 475: +#line 3518 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (2)].list), (yyvsp[(2) - (2)].node)); ;} break; - case 466: -#line 3301 "gram.y" + case 476: +#line 3519 "gram.y" { (yyval.list) = NIL; ;} break; - case 467: -#line 3306 "gram.y" + case 477: +#line 3524 "gram.y" { Constraint *n = castNode(Constraint, (yyvsp[(3) - (3)].node)); n->conname = (yyvsp[(2) - (3)].str); @@ -29748,18 +31199,18 @@ YYLTYPE yylloc; ;} break; - case 468: -#line 3312 "gram.y" + case 478: +#line 3530 "gram.y" { (yyval.node) = (yyvsp[(1) - (1)].node); ;} break; - case 469: -#line 3313 "gram.y" + case 479: +#line 3531 "gram.y" { (yyval.node) = (yyvsp[(1) - (1)].node); ;} break; - case 470: -#line 3315 "gram.y" + case 480: +#line 3533 "gram.y" { /* * Note: the CollateClause is momentarily included in @@ -29774,8 +31225,8 @@ YYLTYPE yylloc; ;} break; - case 471: -#line 3346 "gram.y" + case 481: +#line 3564 "gram.y" { Constraint *n = makeNode(Constraint); n->contype = CONSTR_NOTNULL; @@ -29784,8 +31235,8 @@ YYLTYPE yylloc; ;} break; - case 472: -#line 3353 "gram.y" + case 482: +#line 3571 "gram.y" { Constraint *n = makeNode(Constraint); n->contype = CONSTR_NULL; @@ -29794,8 +31245,8 @@ YYLTYPE yylloc; ;} break; - case 473: -#line 3360 "gram.y" + case 483: +#line 3578 "gram.y" { Constraint *n = makeNode(Constraint); n->contype = CONSTR_UNIQUE; @@ -29808,8 +31259,8 @@ YYLTYPE yylloc; ;} break; - case 474: -#line 3371 "gram.y" + case 484: +#line 3589 "gram.y" { Constraint *n = makeNode(Constraint); n->contype = CONSTR_PRIMARY; @@ -29822,8 +31273,8 @@ YYLTYPE yylloc; ;} break; - case 475: -#line 3382 "gram.y" + case 485: +#line 3600 "gram.y" { Constraint *n = makeNode(Constraint); n->contype = CONSTR_CHECK; @@ -29837,8 +31288,8 @@ YYLTYPE yylloc; ;} break; - case 476: -#line 3394 "gram.y" + case 486: +#line 3612 "gram.y" { Constraint *n = makeNode(Constraint); n->contype = CONSTR_DEFAULT; @@ -29849,8 +31300,8 @@ YYLTYPE yylloc; ;} break; - case 477: -#line 3403 "gram.y" + case 487: +#line 3621 "gram.y" { Constraint *n = makeNode(Constraint); n->contype = CONSTR_IDENTITY; @@ -29861,8 +31312,34 @@ YYLTYPE yylloc; ;} break; - case 478: -#line 3412 "gram.y" + case 488: +#line 3630 "gram.y" + { + Constraint *n = makeNode(Constraint); + n->contype = CONSTR_GENERATED; + n->generated_when = (yyvsp[(2) - (7)].ival); + n->raw_expr = (yyvsp[(5) - (7)].node); + n->cooked_expr = NULL; + n->location = (yylsp[(1) - (7)]); + + /* + * Can't do this in the grammar because of shift/reduce + * conflicts. (IDENTITY allows both ALWAYS and BY + * DEFAULT, but generated columns only allow ALWAYS.) We + * can also give a more useful error message and location. + */ + if ((yyvsp[(2) - (7)].ival) != ATTRIBUTE_IDENTITY_ALWAYS) + ereport(ERROR, + (errcode(ERRCODE_SYNTAX_ERROR), + errmsg("for a generated column, GENERATED ALWAYS must be specified"), + parser_errposition((yylsp[(2) - (7)])))); + + (yyval.node) = (Node *)n; + ;} + break; + + case 489: +#line 3653 "gram.y" { Constraint *n = makeNode(Constraint); n->contype = CONSTR_FOREIGN; @@ -29879,18 +31356,18 @@ YYLTYPE yylloc; ;} break; - case 479: -#line 3429 "gram.y" + case 490: +#line 3670 "gram.y" { (yyval.ival) = ATTRIBUTE_IDENTITY_ALWAYS; ;} break; - case 480: -#line 3430 "gram.y" + case 491: +#line 3671 "gram.y" { (yyval.ival) = ATTRIBUTE_IDENTITY_BY_DEFAULT; ;} break; - case 481: -#line 3450 "gram.y" + case 492: +#line 3691 "gram.y" { Constraint *n = makeNode(Constraint); n->contype = CONSTR_ATTR_DEFERRABLE; @@ -29899,8 +31376,8 @@ YYLTYPE yylloc; ;} break; - case 482: -#line 3457 "gram.y" + case 493: +#line 3698 "gram.y" { Constraint *n = makeNode(Constraint); n->contype = CONSTR_ATTR_NOT_DEFERRABLE; @@ -29909,8 +31386,8 @@ YYLTYPE yylloc; ;} break; - case 483: -#line 3464 "gram.y" + case 494: +#line 3705 "gram.y" { Constraint *n = makeNode(Constraint); n->contype = CONSTR_ATTR_DEFERRED; @@ -29919,8 +31396,8 @@ YYLTYPE yylloc; ;} break; - case 484: -#line 3471 "gram.y" + case 495: +#line 3712 "gram.y" { Constraint *n = makeNode(Constraint); n->contype = CONSTR_ATTR_IMMEDIATE; @@ -29929,8 +31406,8 @@ YYLTYPE yylloc; ;} break; - case 485: -#line 3482 "gram.y" + case 496: +#line 3723 "gram.y" { TableLikeClause *n = makeNode(TableLikeClause); n->relation = (yyvsp[(2) - (3)].range); @@ -29940,63 +31417,68 @@ YYLTYPE yylloc; ;} break; - case 486: -#line 3492 "gram.y" + case 497: +#line 3733 "gram.y" { (yyval.ival) = (yyvsp[(1) - (3)].ival) | (yyvsp[(3) - (3)].ival); ;} break; - case 487: -#line 3493 "gram.y" + case 498: +#line 3734 "gram.y" { (yyval.ival) = (yyvsp[(1) - (3)].ival) & ~(yyvsp[(3) - (3)].ival); ;} break; - case 488: -#line 3494 "gram.y" + case 499: +#line 3735 "gram.y" { (yyval.ival) = 0; ;} break; - case 489: -#line 3498 "gram.y" + case 500: +#line 3739 "gram.y" { (yyval.ival) = CREATE_TABLE_LIKE_COMMENTS; ;} break; - case 490: -#line 3499 "gram.y" + case 501: +#line 3740 "gram.y" { (yyval.ival) = CREATE_TABLE_LIKE_CONSTRAINTS; ;} break; - case 491: -#line 3500 "gram.y" + case 502: +#line 3741 "gram.y" { (yyval.ival) = CREATE_TABLE_LIKE_DEFAULTS; ;} break; - case 492: -#line 3501 "gram.y" + case 503: +#line 3742 "gram.y" { (yyval.ival) = CREATE_TABLE_LIKE_IDENTITY; ;} break; - case 493: -#line 3502 "gram.y" + case 504: +#line 3743 "gram.y" + { (yyval.ival) = CREATE_TABLE_LIKE_GENERATED; ;} + break; + + case 505: +#line 3744 "gram.y" { (yyval.ival) = CREATE_TABLE_LIKE_INDEXES; ;} break; - case 494: -#line 3503 "gram.y" + case 506: +#line 3745 "gram.y" { (yyval.ival) = CREATE_TABLE_LIKE_STATISTICS; ;} break; - case 495: -#line 3504 "gram.y" + case 507: +#line 3746 "gram.y" { (yyval.ival) = CREATE_TABLE_LIKE_STORAGE; ;} break; - case 496: -#line 3505 "gram.y" + case 508: +#line 3747 "gram.y" { (yyval.ival) = CREATE_TABLE_LIKE_ALL; ;} break; - case 497: -#line 3515 "gram.y" + case 509: +#line 3757 "gram.y" { Constraint *n = castNode(Constraint, (yyvsp[(3) - (3)].node)); n->conname = (yyvsp[(2) - (3)].str); @@ -30005,13 +31487,13 @@ YYLTYPE yylloc; ;} break; - case 498: -#line 3521 "gram.y" + case 510: +#line 3763 "gram.y" { (yyval.node) = (yyvsp[(1) - (1)].node); ;} break; - case 499: -#line 3526 "gram.y" + case 511: +#line 3768 "gram.y" { Constraint *n = makeNode(Constraint); n->contype = CONSTR_CHECK; @@ -30026,30 +31508,32 @@ YYLTYPE yylloc; ;} break; - case 500: -#line 3540 "gram.y" + case 512: +#line 3782 "gram.y" { Constraint *n = makeNode(Constraint); n->contype = CONSTR_UNIQUE; - n->location = (yylsp[(1) - (7)]); - n->keys = (yyvsp[(3) - (7)].list); - n->options = (yyvsp[(5) - (7)].list); + n->location = (yylsp[(1) - (8)]); + n->keys = (yyvsp[(3) - (8)].list); + n->including = (yyvsp[(5) - (8)].list); + n->options = (yyvsp[(6) - (8)].list); n->indexname = NULL; - n->indexspace = (yyvsp[(6) - (7)].str); - processCASbits((yyvsp[(7) - (7)].ival), (yylsp[(7) - (7)]), "UNIQUE", + n->indexspace = (yyvsp[(7) - (8)].str); + processCASbits((yyvsp[(8) - (8)].ival), (yylsp[(8) - (8)]), "UNIQUE", &n->deferrable, &n->initdeferred, NULL, NULL, yyscanner); (yyval.node) = (Node *)n; ;} break; - case 501: -#line 3554 "gram.y" + case 513: +#line 3797 "gram.y" { Constraint *n = makeNode(Constraint); n->contype = CONSTR_UNIQUE; n->location = (yylsp[(1) - (3)]); n->keys = NIL; + n->including = NIL; n->options = NIL; n->indexname = (yyvsp[(2) - (3)].str); n->indexspace = NULL; @@ -30060,30 +31544,32 @@ YYLTYPE yylloc; ;} break; - case 502: -#line 3569 "gram.y" + case 514: +#line 3813 "gram.y" { Constraint *n = makeNode(Constraint); n->contype = CONSTR_PRIMARY; - n->location = (yylsp[(1) - (8)]); - n->keys = (yyvsp[(4) - (8)].list); - n->options = (yyvsp[(6) - (8)].list); + n->location = (yylsp[(1) - (9)]); + n->keys = (yyvsp[(4) - (9)].list); + n->including = (yyvsp[(6) - (9)].list); + n->options = (yyvsp[(7) - (9)].list); n->indexname = NULL; - n->indexspace = (yyvsp[(7) - (8)].str); - processCASbits((yyvsp[(8) - (8)].ival), (yylsp[(8) - (8)]), "PRIMARY KEY", + n->indexspace = (yyvsp[(8) - (9)].str); + processCASbits((yyvsp[(9) - (9)].ival), (yylsp[(9) - (9)]), "PRIMARY KEY", &n->deferrable, &n->initdeferred, NULL, NULL, yyscanner); (yyval.node) = (Node *)n; ;} break; - case 503: -#line 3583 "gram.y" + case 515: +#line 3828 "gram.y" { Constraint *n = makeNode(Constraint); n->contype = CONSTR_PRIMARY; n->location = (yylsp[(1) - (4)]); n->keys = NIL; + n->including = NIL; n->options = NIL; n->indexname = (yyvsp[(3) - (4)].str); n->indexspace = NULL; @@ -30094,27 +31580,28 @@ YYLTYPE yylloc; ;} break; - case 504: -#line 3599 "gram.y" + case 516: +#line 3845 "gram.y" { Constraint *n = makeNode(Constraint); n->contype = CONSTR_EXCLUSION; - n->location = (yylsp[(1) - (9)]); - n->access_method = (yyvsp[(2) - (9)].str); - n->exclusions = (yyvsp[(4) - (9)].list); - n->options = (yyvsp[(6) - (9)].list); + n->location = (yylsp[(1) - (10)]); + n->access_method = (yyvsp[(2) - (10)].str); + n->exclusions = (yyvsp[(4) - (10)].list); + n->including = (yyvsp[(6) - (10)].list); + n->options = (yyvsp[(7) - (10)].list); n->indexname = NULL; - n->indexspace = (yyvsp[(7) - (9)].str); - n->where_clause = (yyvsp[(8) - (9)].node); - processCASbits((yyvsp[(9) - (9)].ival), (yylsp[(9) - (9)]), "EXCLUDE", + n->indexspace = (yyvsp[(8) - (10)].str); + n->where_clause = (yyvsp[(9) - (10)].node); + processCASbits((yyvsp[(10) - (10)].ival), (yylsp[(10) - (10)]), "EXCLUDE", &n->deferrable, &n->initdeferred, NULL, NULL, yyscanner); (yyval.node) = (Node *)n; ;} break; - case 505: -#line 3616 "gram.y" + case 517: +#line 3863 "gram.y" { Constraint *n = makeNode(Constraint); n->contype = CONSTR_FOREIGN; @@ -30134,52 +31621,62 @@ YYLTYPE yylloc; ;} break; - case 506: -#line 3635 "gram.y" - { (yyval.boolean) = TRUE; ;} + case 518: +#line 3882 "gram.y" + { (yyval.boolean) = true; ;} break; - case 507: -#line 3636 "gram.y" - { (yyval.boolean) = FALSE; ;} + case 519: +#line 3883 "gram.y" + { (yyval.boolean) = false; ;} break; - case 508: -#line 3640 "gram.y" + case 520: +#line 3887 "gram.y" { (yyval.list) = (yyvsp[(2) - (3)].list); ;} break; - case 509: -#line 3641 "gram.y" + case 521: +#line 3888 "gram.y" { (yyval.list) = NIL; ;} break; - case 510: -#line 3645 "gram.y" + case 522: +#line 3892 "gram.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].node)); ;} break; - case 511: -#line 3646 "gram.y" + case 523: +#line 3893 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].node)); ;} break; - case 512: -#line 3650 "gram.y" + case 524: +#line 3897 "gram.y" { (yyval.node) = (Node *) makeString((yyvsp[(1) - (1)].str)); ;} break; - case 513: -#line 3656 "gram.y" + case 525: +#line 3902 "gram.y" + { (yyval.list) = (yyvsp[(3) - (4)].list); ;} + break; + + case 526: +#line 3903 "gram.y" + { (yyval.list) = NIL; ;} + break; + + case 527: +#line 3907 "gram.y" { (yyval.ival) = FKCONSTR_MATCH_FULL; ;} break; - case 514: -#line 3660 "gram.y" + case 528: +#line 3911 "gram.y" { ereport(ERROR, (errcode(ERRCODE_FEATURE_NOT_SUPPORTED), @@ -30189,136 +31686,136 @@ YYLTYPE yylloc; ;} break; - case 515: -#line 3668 "gram.y" + case 529: +#line 3919 "gram.y" { (yyval.ival) = FKCONSTR_MATCH_SIMPLE; ;} break; - case 516: -#line 3672 "gram.y" + case 530: +#line 3923 "gram.y" { (yyval.ival) = FKCONSTR_MATCH_SIMPLE; ;} break; - case 517: -#line 3678 "gram.y" + case 531: +#line 3929 "gram.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].list)); ;} break; - case 518: -#line 3680 "gram.y" + case 532: +#line 3931 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].list)); ;} break; - case 519: -#line 3684 "gram.y" + case 533: +#line 3935 "gram.y" { (yyval.list) = list_make2((yyvsp[(1) - (3)].ielem), (yyvsp[(3) - (3)].list)); ;} break; - case 520: -#line 3689 "gram.y" + case 534: +#line 3940 "gram.y" { (yyval.list) = list_make2((yyvsp[(1) - (6)].ielem), (yyvsp[(5) - (6)].list)); ;} break; - case 521: -#line 3695 "gram.y" + case 535: +#line 3946 "gram.y" { (yyval.node) = (yyvsp[(3) - (4)].node); ;} break; - case 522: -#line 3696 "gram.y" + case 536: +#line 3947 "gram.y" { (yyval.node) = NULL; ;} break; - case 523: -#line 3707 "gram.y" + case 537: +#line 3958 "gram.y" { (yyval.ival) = ((yyvsp[(1) - (1)].ival) << 8) | (FKCONSTR_ACTION_NOACTION & 0xFF); ;} break; - case 524: -#line 3709 "gram.y" + case 538: +#line 3960 "gram.y" { (yyval.ival) = (FKCONSTR_ACTION_NOACTION << 8) | ((yyvsp[(1) - (1)].ival) & 0xFF); ;} break; - case 525: -#line 3711 "gram.y" + case 539: +#line 3962 "gram.y" { (yyval.ival) = ((yyvsp[(1) - (2)].ival) << 8) | ((yyvsp[(2) - (2)].ival) & 0xFF); ;} break; - case 526: -#line 3713 "gram.y" + case 540: +#line 3964 "gram.y" { (yyval.ival) = ((yyvsp[(2) - (2)].ival) << 8) | ((yyvsp[(1) - (2)].ival) & 0xFF); ;} break; - case 527: -#line 3715 "gram.y" + case 541: +#line 3966 "gram.y" { (yyval.ival) = (FKCONSTR_ACTION_NOACTION << 8) | (FKCONSTR_ACTION_NOACTION & 0xFF); ;} break; - case 528: -#line 3718 "gram.y" + case 542: +#line 3969 "gram.y" { (yyval.ival) = (yyvsp[(3) - (3)].ival); ;} break; - case 529: -#line 3721 "gram.y" + case 543: +#line 3972 "gram.y" { (yyval.ival) = (yyvsp[(3) - (3)].ival); ;} break; - case 530: -#line 3725 "gram.y" + case 544: +#line 3976 "gram.y" { (yyval.ival) = FKCONSTR_ACTION_NOACTION; ;} break; - case 531: -#line 3726 "gram.y" + case 545: +#line 3977 "gram.y" { (yyval.ival) = FKCONSTR_ACTION_RESTRICT; ;} break; - case 532: -#line 3727 "gram.y" + case 546: +#line 3978 "gram.y" { (yyval.ival) = FKCONSTR_ACTION_CASCADE; ;} break; - case 533: -#line 3728 "gram.y" + case 547: +#line 3979 "gram.y" { (yyval.ival) = FKCONSTR_ACTION_SETNULL; ;} break; - case 534: -#line 3729 "gram.y" + case 548: +#line 3980 "gram.y" { (yyval.ival) = FKCONSTR_ACTION_SETDEFAULT; ;} break; - case 535: -#line 3732 "gram.y" + case 549: +#line 3983 "gram.y" { (yyval.list) = (yyvsp[(3) - (4)].list); ;} break; - case 536: -#line 3733 "gram.y" + case 550: +#line 3984 "gram.y" { (yyval.list) = NIL; ;} break; - case 537: -#line 3737 "gram.y" + case 551: +#line 3988 "gram.y" { (yyval.partspec) = (yyvsp[(1) - (1)].partspec); ;} break; - case 538: -#line 3738 "gram.y" + case 552: +#line 3989 "gram.y" { (yyval.partspec) = NULL; ;} break; - case 539: -#line 3742 "gram.y" + case 553: +#line 3993 "gram.y" { PartitionSpec *n = makeNode(PartitionSpec); @@ -30330,28 +31827,18 @@ YYLTYPE yylloc; ;} break; - case 540: -#line 3753 "gram.y" - { (yyval.str) = (yyvsp[(1) - (1)].str); ;} - break; - - case 541: -#line 3754 "gram.y" - { (yyval.str) = pstrdup((yyvsp[(1) - (1)].keyword)); ;} - break; - - case 542: -#line 3757 "gram.y" + case 554: +#line 4004 "gram.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].partelem)); ;} break; - case 543: -#line 3758 "gram.y" + case 555: +#line 4005 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].partelem)); ;} break; - case 544: -#line 3762 "gram.y" + case 556: +#line 4009 "gram.y" { PartitionElem *n = makeNode(PartitionElem); @@ -30364,8 +31851,8 @@ YYLTYPE yylloc; ;} break; - case 545: -#line 3773 "gram.y" + case 557: +#line 4020 "gram.y" { PartitionElem *n = makeNode(PartitionElem); @@ -30378,8 +31865,8 @@ YYLTYPE yylloc; ;} break; - case 546: -#line 3784 "gram.y" + case 558: +#line 4031 "gram.y" { PartitionElem *n = makeNode(PartitionElem); @@ -30392,99 +31879,128 @@ YYLTYPE yylloc; ;} break; - case 547: -#line 3797 "gram.y" - { (yyval.list) = (yyvsp[(2) - (2)].list); ;} + case 559: +#line 4044 "gram.y" + { (yyval.str) = (yyvsp[(2) - (2)].str); ;} break; - case 548: -#line 3798 "gram.y" - { (yyval.list) = list_make1(makeDefElem("oids", (Node *) makeInteger(true), (yylsp[(1) - (2)]))); ;} + case 560: +#line 4045 "gram.y" + { (yyval.str) = NULL; ;} break; - case 549: -#line 3799 "gram.y" - { (yyval.list) = list_make1(makeDefElem("oids", (Node *) makeInteger(false), (yylsp[(1) - (2)]))); ;} + case 561: +#line 4050 "gram.y" + { (yyval.list) = (yyvsp[(2) - (2)].list); ;} break; - case 550: -#line 3800 "gram.y" + case 562: +#line 4051 "gram.y" { (yyval.list) = NIL; ;} break; - case 551: -#line 3803 "gram.y" + case 563: +#line 4052 "gram.y" + { (yyval.list) = NIL; ;} + break; + + case 564: +#line 4055 "gram.y" { (yyval.oncommit) = ONCOMMIT_DROP; ;} break; - case 552: -#line 3804 "gram.y" + case 565: +#line 4056 "gram.y" { (yyval.oncommit) = ONCOMMIT_DELETE_ROWS; ;} break; - case 553: -#line 3805 "gram.y" + case 566: +#line 4057 "gram.y" { (yyval.oncommit) = ONCOMMIT_PRESERVE_ROWS; ;} break; - case 554: -#line 3806 "gram.y" + case 567: +#line 4058 "gram.y" { (yyval.oncommit) = ONCOMMIT_NOOP; ;} break; - case 555: -#line 3809 "gram.y" + case 568: +#line 4061 "gram.y" { (yyval.str) = (yyvsp[(2) - (2)].str); ;} break; - case 556: -#line 3810 "gram.y" + case 569: +#line 4062 "gram.y" { (yyval.str) = NULL; ;} break; - case 557: -#line 3813 "gram.y" + case 570: +#line 4065 "gram.y" { (yyval.str) = (yyvsp[(4) - (4)].str); ;} break; - case 558: -#line 3814 "gram.y" + case 571: +#line 4066 "gram.y" { (yyval.str) = NULL; ;} break; - case 559: -#line 3817 "gram.y" + case 572: +#line 4069 "gram.y" { (yyval.str) = (yyvsp[(3) - (3)].str); ;} break; - case 560: -#line 3837 "gram.y" + case 573: +#line 4089 "gram.y" { CreateStatsStmt *n = makeNode(CreateStatsStmt); n->defnames = (yyvsp[(3) - (8)].list); n->stat_types = (yyvsp[(4) - (8)].list); n->exprs = (yyvsp[(6) - (8)].list); n->relations = (yyvsp[(8) - (8)].list); + n->stxcomment = NULL; n->if_not_exists = false; (yyval.node) = (Node *)n; ;} break; - case 561: -#line 3848 "gram.y" + case 574: +#line 4101 "gram.y" { CreateStatsStmt *n = makeNode(CreateStatsStmt); n->defnames = (yyvsp[(6) - (11)].list); n->stat_types = (yyvsp[(7) - (11)].list); n->exprs = (yyvsp[(9) - (11)].list); n->relations = (yyvsp[(11) - (11)].list); + n->stxcomment = NULL; n->if_not_exists = true; (yyval.node) = (Node *)n; ;} break; - case 562: -#line 3871 "gram.y" + case 575: +#line 4124 "gram.y" + { + AlterStatsStmt *n = makeNode(AlterStatsStmt); + n->defnames = (yyvsp[(3) - (6)].list); + n->missing_ok = false; + n->stxstattarget = (yyvsp[(6) - (6)].ival); + (yyval.node) = (Node *)n; + ;} + break; + + case 576: +#line 4132 "gram.y" + { + AlterStatsStmt *n = makeNode(AlterStatsStmt); + n->defnames = (yyvsp[(5) - (8)].list); + n->missing_ok = true; + n->stxstattarget = (yyvsp[(8) - (8)].ival); + (yyval.node) = (Node *)n; + ;} + break; + + case 577: +#line 4153 "gram.y" { CreateTableAsStmt *ctas = makeNode(CreateTableAsStmt); ctas->query = (yyvsp[(6) - (7)].node); @@ -30499,8 +32015,8 @@ YYLTYPE yylloc; ;} break; - case 563: -#line 3884 "gram.y" + case 578: +#line 4166 "gram.y" { CreateTableAsStmt *ctas = makeNode(CreateTableAsStmt); ctas->query = (yyvsp[(9) - (10)].node); @@ -30515,37 +32031,38 @@ YYLTYPE yylloc; ;} break; - case 564: -#line 3900 "gram.y" + case 579: +#line 4183 "gram.y" { (yyval.into) = makeNode(IntoClause); - (yyval.into)->rel = (yyvsp[(1) - (5)].range); - (yyval.into)->colNames = (yyvsp[(2) - (5)].list); - (yyval.into)->options = (yyvsp[(3) - (5)].list); - (yyval.into)->onCommit = (yyvsp[(4) - (5)].oncommit); - (yyval.into)->tableSpaceName = (yyvsp[(5) - (5)].str); + (yyval.into)->rel = (yyvsp[(1) - (6)].range); + (yyval.into)->colNames = (yyvsp[(2) - (6)].list); + (yyval.into)->accessMethod = (yyvsp[(3) - (6)].str); + (yyval.into)->options = (yyvsp[(4) - (6)].list); + (yyval.into)->onCommit = (yyvsp[(5) - (6)].oncommit); + (yyval.into)->tableSpaceName = (yyvsp[(6) - (6)].str); (yyval.into)->viewQuery = NULL; (yyval.into)->skipData = false; /* might get changed later */ ;} break; - case 565: -#line 3913 "gram.y" - { (yyval.boolean) = TRUE; ;} + case 580: +#line 4197 "gram.y" + { (yyval.boolean) = true; ;} break; - case 566: -#line 3914 "gram.y" - { (yyval.boolean) = FALSE; ;} + case 581: +#line 4198 "gram.y" + { (yyval.boolean) = false; ;} break; - case 567: -#line 3915 "gram.y" - { (yyval.boolean) = TRUE; ;} + case 582: +#line 4199 "gram.y" + { (yyval.boolean) = true; ;} break; - case 568: -#line 3928 "gram.y" + case 583: +#line 4212 "gram.y" { CreateTableAsStmt *ctas = makeNode(CreateTableAsStmt); ctas->query = (yyvsp[(7) - (8)].node); @@ -30560,8 +32077,8 @@ YYLTYPE yylloc; ;} break; - case 569: -#line 3941 "gram.y" + case 584: +#line 4225 "gram.y" { CreateTableAsStmt *ctas = makeNode(CreateTableAsStmt); ctas->query = (yyvsp[(10) - (11)].node); @@ -30576,32 +32093,33 @@ YYLTYPE yylloc; ;} break; - case 570: -#line 3957 "gram.y" + case 585: +#line 4241 "gram.y" { (yyval.into) = makeNode(IntoClause); - (yyval.into)->rel = (yyvsp[(1) - (4)].range); - (yyval.into)->colNames = (yyvsp[(2) - (4)].list); - (yyval.into)->options = (yyvsp[(3) - (4)].list); + (yyval.into)->rel = (yyvsp[(1) - (5)].range); + (yyval.into)->colNames = (yyvsp[(2) - (5)].list); + (yyval.into)->accessMethod = (yyvsp[(3) - (5)].str); + (yyval.into)->options = (yyvsp[(4) - (5)].list); (yyval.into)->onCommit = ONCOMMIT_NOOP; - (yyval.into)->tableSpaceName = (yyvsp[(4) - (4)].str); + (yyval.into)->tableSpaceName = (yyvsp[(5) - (5)].str); (yyval.into)->viewQuery = NULL; /* filled at analysis time */ (yyval.into)->skipData = false; /* might get changed later */ ;} break; - case 571: -#line 3969 "gram.y" + case 586: +#line 4254 "gram.y" { (yyval.ival) = RELPERSISTENCE_UNLOGGED; ;} break; - case 572: -#line 3970 "gram.y" + case 587: +#line 4255 "gram.y" { (yyval.ival) = RELPERSISTENCE_PERMANENT; ;} break; - case 573: -#line 3983 "gram.y" + case 588: +#line 4268 "gram.y" { RefreshMatViewStmt *n = makeNode(RefreshMatViewStmt); n->concurrent = (yyvsp[(4) - (6)].boolean); @@ -30611,8 +32129,8 @@ YYLTYPE yylloc; ;} break; - case 574: -#line 4003 "gram.y" + case 589: +#line 4288 "gram.y" { CreateSeqStmt *n = makeNode(CreateSeqStmt); (yyvsp[(4) - (5)].range)->relpersistence = (yyvsp[(2) - (5)].ival); @@ -30624,8 +32142,8 @@ YYLTYPE yylloc; ;} break; - case 575: -#line 4013 "gram.y" + case 590: +#line 4298 "gram.y" { CreateSeqStmt *n = makeNode(CreateSeqStmt); (yyvsp[(7) - (8)].range)->relpersistence = (yyvsp[(2) - (8)].ival); @@ -30637,8 +32155,8 @@ YYLTYPE yylloc; ;} break; - case 576: -#line 4026 "gram.y" + case 591: +#line 4311 "gram.y" { AlterSeqStmt *n = makeNode(AlterSeqStmt); n->sequence = (yyvsp[(3) - (4)].range); @@ -30648,8 +32166,8 @@ YYLTYPE yylloc; ;} break; - case 577: -#line 4034 "gram.y" + case 592: +#line 4319 "gram.y" { AlterSeqStmt *n = makeNode(AlterSeqStmt); n->sequence = (yyvsp[(5) - (6)].range); @@ -30659,195 +32177,198 @@ YYLTYPE yylloc; ;} break; - case 578: -#line 4044 "gram.y" + case 593: +#line 4329 "gram.y" { (yyval.list) = (yyvsp[(1) - (1)].list); ;} break; - case 579: -#line 4045 "gram.y" + case 594: +#line 4330 "gram.y" { (yyval.list) = NIL; ;} break; - case 580: -#line 4048 "gram.y" + case 595: +#line 4333 "gram.y" { (yyval.list) = (yyvsp[(2) - (3)].list); ;} break; - case 581: -#line 4049 "gram.y" + case 596: +#line 4334 "gram.y" { (yyval.list) = NIL; ;} break; - case 582: -#line 4052 "gram.y" + case 597: +#line 4337 "gram.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].defelt)); ;} break; - case 583: -#line 4053 "gram.y" + case 598: +#line 4338 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (2)].list), (yyvsp[(2) - (2)].defelt)); ;} break; - case 584: -#line 4057 "gram.y" + case 599: +#line 4342 "gram.y" { (yyval.defelt) = makeDefElem("as", (Node *)(yyvsp[(2) - (2)].typnam), (yylsp[(1) - (2)])); ;} break; - case 585: -#line 4061 "gram.y" + case 600: +#line 4346 "gram.y" { (yyval.defelt) = makeDefElem("cache", (Node *)(yyvsp[(2) - (2)].value), (yylsp[(1) - (2)])); ;} break; - case 586: -#line 4065 "gram.y" + case 601: +#line 4350 "gram.y" { - (yyval.defelt) = makeDefElem("cycle", (Node *)makeInteger(TRUE), (yylsp[(1) - (1)])); + (yyval.defelt) = makeDefElem("cycle", (Node *)makeInteger(true), (yylsp[(1) - (1)])); ;} break; - case 587: -#line 4069 "gram.y" + case 602: +#line 4354 "gram.y" { - (yyval.defelt) = makeDefElem("cycle", (Node *)makeInteger(FALSE), (yylsp[(1) - (2)])); + (yyval.defelt) = makeDefElem("cycle", (Node *)makeInteger(false), (yylsp[(1) - (2)])); ;} break; - case 588: -#line 4073 "gram.y" + case 603: +#line 4358 "gram.y" { (yyval.defelt) = makeDefElem("increment", (Node *)(yyvsp[(3) - (3)].value), (yylsp[(1) - (3)])); ;} break; - case 589: -#line 4077 "gram.y" + case 604: +#line 4362 "gram.y" { (yyval.defelt) = makeDefElem("maxvalue", (Node *)(yyvsp[(2) - (2)].value), (yylsp[(1) - (2)])); ;} break; - case 590: -#line 4081 "gram.y" + case 605: +#line 4366 "gram.y" { (yyval.defelt) = makeDefElem("minvalue", (Node *)(yyvsp[(2) - (2)].value), (yylsp[(1) - (2)])); ;} break; - case 591: -#line 4085 "gram.y" + case 606: +#line 4370 "gram.y" { (yyval.defelt) = makeDefElem("maxvalue", NULL, (yylsp[(1) - (2)])); ;} break; - case 592: -#line 4089 "gram.y" + case 607: +#line 4374 "gram.y" { (yyval.defelt) = makeDefElem("minvalue", NULL, (yylsp[(1) - (2)])); ;} break; - case 593: -#line 4093 "gram.y" + case 608: +#line 4378 "gram.y" { (yyval.defelt) = makeDefElem("owned_by", (Node *)(yyvsp[(3) - (3)].list), (yylsp[(1) - (3)])); ;} break; - case 594: -#line 4097 "gram.y" + case 609: +#line 4382 "gram.y" { /* not documented, only used by pg_dump */ (yyval.defelt) = makeDefElem("sequence_name", (Node *)(yyvsp[(3) - (3)].list), (yylsp[(1) - (3)])); ;} break; - case 595: -#line 4102 "gram.y" + case 610: +#line 4387 "gram.y" { (yyval.defelt) = makeDefElem("start", (Node *)(yyvsp[(3) - (3)].value), (yylsp[(1) - (3)])); ;} break; - case 596: -#line 4106 "gram.y" + case 611: +#line 4391 "gram.y" { (yyval.defelt) = makeDefElem("restart", NULL, (yylsp[(1) - (1)])); ;} break; - case 597: -#line 4110 "gram.y" + case 612: +#line 4395 "gram.y" { (yyval.defelt) = makeDefElem("restart", (Node *)(yyvsp[(3) - (3)].value), (yylsp[(1) - (3)])); ;} break; - case 598: -#line 4115 "gram.y" + case 613: +#line 4400 "gram.y" {;} break; - case 599: -#line 4116 "gram.y" + case 614: +#line 4401 "gram.y" {;} break; - case 600: -#line 4120 "gram.y" + case 615: +#line 4405 "gram.y" { (yyval.value) = makeFloat((yyvsp[(1) - (1)].str)); ;} break; - case 601: -#line 4121 "gram.y" + case 616: +#line 4406 "gram.y" { (yyval.value) = makeFloat((yyvsp[(2) - (2)].str)); ;} break; - case 602: -#line 4123 "gram.y" + case 617: +#line 4408 "gram.y" { (yyval.value) = makeFloat((yyvsp[(2) - (2)].str)); doNegateFloat((yyval.value)); ;} break; - case 603: -#line 4127 "gram.y" + case 618: +#line 4412 "gram.y" { (yyval.value) = makeInteger((yyvsp[(1) - (1)].ival)); ;} break; - case 604: -#line 4130 "gram.y" + case 619: +#line 4415 "gram.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].value)); ;} break; - case 605: -#line 4131 "gram.y" + case 620: +#line 4416 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].value)); ;} break; - case 606: -#line 4144 "gram.y" - { - CreatePLangStmt *n = makeNode(CreatePLangStmt); - n->replace = (yyvsp[(2) - (6)].boolean); - n->plname = (yyvsp[(6) - (6)].str); - /* parameters are all to be supplied by system */ - n->plhandler = NIL; - n->plinline = NIL; - n->plvalidator = NIL; - n->pltrusted = false; + case 621: +#line 4429 "gram.y" + { + /* + * We now interpret parameterless CREATE LANGUAGE as + * CREATE EXTENSION. "OR REPLACE" is silently translated + * to "IF NOT EXISTS", which isn't quite the same, but + * seems more useful than throwing an error. We just + * ignore TRUSTED, as the previous code would have too. + */ + CreateExtensionStmt *n = makeNode(CreateExtensionStmt); + n->if_not_exists = (yyvsp[(2) - (6)].boolean); + n->extname = (yyvsp[(6) - (6)].str); + n->options = NIL; (yyval.node) = (Node *)n; ;} break; - case 607: -#line 4157 "gram.y" + case 622: +#line 4445 "gram.y" { CreatePLangStmt *n = makeNode(CreatePLangStmt); n->replace = (yyvsp[(2) - (10)].boolean); @@ -30860,58 +32381,58 @@ YYLTYPE yylloc; ;} break; - case 608: -#line 4170 "gram.y" - { (yyval.boolean) = TRUE; ;} + case 623: +#line 4458 "gram.y" + { (yyval.boolean) = true; ;} break; - case 609: -#line 4171 "gram.y" - { (yyval.boolean) = FALSE; ;} + case 624: +#line 4459 "gram.y" + { (yyval.boolean) = false; ;} break; - case 610: -#line 4179 "gram.y" + case 625: +#line 4467 "gram.y" { (yyval.list) = list_make1(makeString((yyvsp[(1) - (1)].str))); ;} break; - case 611: -#line 4180 "gram.y" + case 626: +#line 4468 "gram.y" { (yyval.list) = lcons(makeString((yyvsp[(1) - (2)].str)), (yyvsp[(2) - (2)].list)); ;} break; - case 612: -#line 4184 "gram.y" + case 627: +#line 4472 "gram.y" { (yyval.list) = (yyvsp[(2) - (2)].list); ;} break; - case 613: -#line 4185 "gram.y" + case 628: +#line 4473 "gram.y" { (yyval.list) = NIL; ;} break; - case 614: -#line 4189 "gram.y" + case 629: +#line 4477 "gram.y" { (yyval.list) = (yyvsp[(2) - (2)].list); ;} break; - case 615: -#line 4190 "gram.y" + case 630: +#line 4478 "gram.y" { (yyval.list) = NIL; ;} break; - case 616: -#line 4194 "gram.y" + case 631: +#line 4482 "gram.y" { (yyval.list) = (yyvsp[(1) - (1)].list); ;} break; - case 617: -#line 4195 "gram.y" + case 632: +#line 4483 "gram.y" { (yyval.list) = NIL; ;} break; - case 618: -#line 4200 "gram.y" + case 633: +#line 4488 "gram.y" { DropStmt *n = makeNode(DropStmt); n->removeType = OBJECT_LANGUAGE; @@ -30923,8 +32444,8 @@ YYLTYPE yylloc; ;} break; - case 619: -#line 4210 "gram.y" + case 634: +#line 4498 "gram.y" { DropStmt *n = makeNode(DropStmt); n->removeType = OBJECT_LANGUAGE; @@ -30936,18 +32457,18 @@ YYLTYPE yylloc; ;} break; - case 620: -#line 4222 "gram.y" + case 635: +#line 4510 "gram.y" {;} break; - case 621: -#line 4223 "gram.y" + case 636: +#line 4511 "gram.y" {;} break; - case 622: -#line 4234 "gram.y" + case 637: +#line 4522 "gram.y" { CreateTableSpaceStmt *n = makeNode(CreateTableSpaceStmt); n->tablespacename = (yyvsp[(3) - (7)].str); @@ -30958,18 +32479,18 @@ YYLTYPE yylloc; ;} break; - case 623: -#line 4244 "gram.y" + case 638: +#line 4532 "gram.y" { (yyval.rolespec) = (yyvsp[(2) - (2)].rolespec); ;} break; - case 624: -#line 4245 "gram.y" + case 639: +#line 4533 "gram.y" { (yyval.rolespec) = NULL; ;} break; - case 625: -#line 4259 "gram.y" + case 640: +#line 4547 "gram.y" { DropTableSpaceStmt *n = makeNode(DropTableSpaceStmt); n->tablespacename = (yyvsp[(3) - (3)].str); @@ -30978,8 +32499,8 @@ YYLTYPE yylloc; ;} break; - case 626: -#line 4266 "gram.y" + case 641: +#line 4554 "gram.y" { DropTableSpaceStmt *n = makeNode(DropTableSpaceStmt); n->tablespacename = (yyvsp[(5) - (5)].str); @@ -30988,8 +32509,8 @@ YYLTYPE yylloc; ;} break; - case 627: -#line 4283 "gram.y" + case 642: +#line 4571 "gram.y" { CreateExtensionStmt *n = makeNode(CreateExtensionStmt); n->extname = (yyvsp[(3) - (5)].str); @@ -30999,8 +32520,8 @@ YYLTYPE yylloc; ;} break; - case 628: -#line 4291 "gram.y" + case 643: +#line 4579 "gram.y" { CreateExtensionStmt *n = makeNode(CreateExtensionStmt); n->extname = (yyvsp[(6) - (8)].str); @@ -31010,46 +32531,49 @@ YYLTYPE yylloc; ;} break; - case 629: -#line 4302 "gram.y" + case 644: +#line 4590 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (2)].list), (yyvsp[(2) - (2)].defelt)); ;} break; - case 630: -#line 4304 "gram.y" + case 645: +#line 4592 "gram.y" { (yyval.list) = NIL; ;} break; - case 631: -#line 4309 "gram.y" + case 646: +#line 4597 "gram.y" { (yyval.defelt) = makeDefElem("schema", (Node *)makeString((yyvsp[(2) - (2)].str)), (yylsp[(1) - (2)])); ;} break; - case 632: -#line 4313 "gram.y" + case 647: +#line 4601 "gram.y" { (yyval.defelt) = makeDefElem("new_version", (Node *)makeString((yyvsp[(2) - (2)].str)), (yylsp[(1) - (2)])); ;} break; - case 633: -#line 4317 "gram.y" + case 648: +#line 4605 "gram.y" { - (yyval.defelt) = makeDefElem("old_version", (Node *)makeString((yyvsp[(2) - (2)].str)), (yylsp[(1) - (2)])); + ereport(ERROR, + (errcode(ERRCODE_FEATURE_NOT_SUPPORTED), + errmsg("CREATE EXTENSION ... FROM is no longer supported"), + parser_errposition((yylsp[(1) - (2)])))); ;} break; - case 634: -#line 4321 "gram.y" + case 649: +#line 4612 "gram.y" { - (yyval.defelt) = makeDefElem("cascade", (Node *)makeInteger(TRUE), (yylsp[(1) - (1)])); + (yyval.defelt) = makeDefElem("cascade", (Node *)makeInteger(true), (yylsp[(1) - (1)])); ;} break; - case 635: -#line 4333 "gram.y" + case 650: +#line 4624 "gram.y" { AlterExtensionStmt *n = makeNode(AlterExtensionStmt); n->extname = (yyvsp[(3) - (5)].str); @@ -31058,25 +32582,25 @@ YYLTYPE yylloc; ;} break; - case 636: -#line 4343 "gram.y" + case 651: +#line 4634 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (2)].list), (yyvsp[(2) - (2)].defelt)); ;} break; - case 637: -#line 4345 "gram.y" + case 652: +#line 4636 "gram.y" { (yyval.list) = NIL; ;} break; - case 638: -#line 4350 "gram.y" + case 653: +#line 4641 "gram.y" { (yyval.defelt) = makeDefElem("new_version", (Node *)makeString((yyvsp[(2) - (2)].str)), (yylsp[(1) - (2)])); ;} break; - case 639: -#line 4363 "gram.y" + case 654: +#line 4654 "gram.y" { AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt); n->extname = (yyvsp[(3) - (7)].str); @@ -31087,8 +32611,8 @@ YYLTYPE yylloc; ;} break; - case 640: -#line 4372 "gram.y" + case 655: +#line 4663 "gram.y" { AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt); n->extname = (yyvsp[(3) - (6)].str); @@ -31099,8 +32623,8 @@ YYLTYPE yylloc; ;} break; - case 641: -#line 4381 "gram.y" + case 656: +#line 4672 "gram.y" { AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt); n->extname = (yyvsp[(3) - (10)].str); @@ -31111,8 +32635,8 @@ YYLTYPE yylloc; ;} break; - case 642: -#line 4390 "gram.y" + case 657: +#line 4681 "gram.y" { AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt); n->extname = (yyvsp[(3) - (6)].str); @@ -31123,8 +32647,8 @@ YYLTYPE yylloc; ;} break; - case 643: -#line 4399 "gram.y" + case 658: +#line 4690 "gram.y" { AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt); n->extname = (yyvsp[(3) - (6)].str); @@ -31135,8 +32659,8 @@ YYLTYPE yylloc; ;} break; - case 644: -#line 4408 "gram.y" + case 659: +#line 4699 "gram.y" { AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt); n->extname = (yyvsp[(3) - (6)].str); @@ -31147,8 +32671,8 @@ YYLTYPE yylloc; ;} break; - case 645: -#line 4417 "gram.y" + case 660: +#line 4708 "gram.y" { AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt); n->extname = (yyvsp[(3) - (6)].str); @@ -31159,8 +32683,8 @@ YYLTYPE yylloc; ;} break; - case 646: -#line 4426 "gram.y" + case 661: +#line 4717 "gram.y" { AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt); n->extname = (yyvsp[(3) - (7)].str); @@ -31171,8 +32695,8 @@ YYLTYPE yylloc; ;} break; - case 647: -#line 4435 "gram.y" + case 662: +#line 4726 "gram.y" { AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt); n->extname = (yyvsp[(3) - (6)].str); @@ -31183,8 +32707,8 @@ YYLTYPE yylloc; ;} break; - case 648: -#line 4444 "gram.y" + case 663: +#line 4735 "gram.y" { AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt); n->extname = (yyvsp[(3) - (9)].str); @@ -31195,8 +32719,8 @@ YYLTYPE yylloc; ;} break; - case 649: -#line 4453 "gram.y" + case 664: +#line 4744 "gram.y" { AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt); n->extname = (yyvsp[(3) - (9)].str); @@ -31207,8 +32731,32 @@ YYLTYPE yylloc; ;} break; - case 650: -#line 4462 "gram.y" + case 665: +#line 4753 "gram.y" + { + AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt); + n->extname = (yyvsp[(3) - (6)].str); + n->action = (yyvsp[(4) - (6)].ival); + n->objtype = OBJECT_PROCEDURE; + n->object = (Node *) (yyvsp[(6) - (6)].objwithargs); + (yyval.node) = (Node *)n; + ;} + break; + + case 666: +#line 4762 "gram.y" + { + AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt); + n->extname = (yyvsp[(3) - (6)].str); + n->action = (yyvsp[(4) - (6)].ival); + n->objtype = OBJECT_ROUTINE; + n->object = (Node *) (yyvsp[(6) - (6)].objwithargs); + (yyval.node) = (Node *)n; + ;} + break; + + case 667: +#line 4771 "gram.y" { AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt); n->extname = (yyvsp[(3) - (6)].str); @@ -31219,8 +32767,8 @@ YYLTYPE yylloc; ;} break; - case 651: -#line 4471 "gram.y" + case 668: +#line 4780 "gram.y" { AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt); n->extname = (yyvsp[(3) - (7)].str); @@ -31231,8 +32779,8 @@ YYLTYPE yylloc; ;} break; - case 652: -#line 4480 "gram.y" + case 669: +#line 4789 "gram.y" { AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt); n->extname = (yyvsp[(3) - (6)].str); @@ -31243,8 +32791,8 @@ YYLTYPE yylloc; ;} break; - case 653: -#line 4489 "gram.y" + case 670: +#line 4798 "gram.y" { AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt); n->extname = (yyvsp[(3) - (8)].str); @@ -31255,8 +32803,8 @@ YYLTYPE yylloc; ;} break; - case 654: -#line 4498 "gram.y" + case 671: +#line 4807 "gram.y" { AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt); n->extname = (yyvsp[(3) - (8)].str); @@ -31267,8 +32815,8 @@ YYLTYPE yylloc; ;} break; - case 655: -#line 4507 "gram.y" + case 672: +#line 4816 "gram.y" { AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt); n->extname = (yyvsp[(3) - (8)].str); @@ -31279,8 +32827,8 @@ YYLTYPE yylloc; ;} break; - case 656: -#line 4516 "gram.y" + case 673: +#line 4825 "gram.y" { AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt); n->extname = (yyvsp[(3) - (8)].str); @@ -31291,8 +32839,8 @@ YYLTYPE yylloc; ;} break; - case 657: -#line 4525 "gram.y" + case 674: +#line 4834 "gram.y" { AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt); n->extname = (yyvsp[(3) - (6)].str); @@ -31303,8 +32851,8 @@ YYLTYPE yylloc; ;} break; - case 658: -#line 4534 "gram.y" + case 675: +#line 4843 "gram.y" { AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt); n->extname = (yyvsp[(3) - (6)].str); @@ -31315,8 +32863,8 @@ YYLTYPE yylloc; ;} break; - case 659: -#line 4543 "gram.y" + case 676: +#line 4852 "gram.y" { AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt); n->extname = (yyvsp[(3) - (7)].str); @@ -31327,8 +32875,8 @@ YYLTYPE yylloc; ;} break; - case 660: -#line 4552 "gram.y" + case 677: +#line 4861 "gram.y" { AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt); n->extname = (yyvsp[(3) - (7)].str); @@ -31339,8 +32887,8 @@ YYLTYPE yylloc; ;} break; - case 661: -#line 4561 "gram.y" + case 678: +#line 4870 "gram.y" { AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt); n->extname = (yyvsp[(3) - (8)].str); @@ -31351,8 +32899,8 @@ YYLTYPE yylloc; ;} break; - case 662: -#line 4570 "gram.y" + case 679: +#line 4879 "gram.y" { AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt); n->extname = (yyvsp[(3) - (6)].str); @@ -31363,8 +32911,8 @@ YYLTYPE yylloc; ;} break; - case 663: -#line 4579 "gram.y" + case 680: +#line 4888 "gram.y" { AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt); n->extname = (yyvsp[(3) - (9)].str); @@ -31375,8 +32923,8 @@ YYLTYPE yylloc; ;} break; - case 664: -#line 4588 "gram.y" + case 681: +#line 4897 "gram.y" { AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt); n->extname = (yyvsp[(3) - (6)].str); @@ -31387,8 +32935,8 @@ YYLTYPE yylloc; ;} break; - case 665: -#line 4606 "gram.y" + case 682: +#line 4915 "gram.y" { CreateFdwStmt *n = makeNode(CreateFdwStmt); n->fdwname = (yyvsp[(5) - (7)].str); @@ -31398,48 +32946,48 @@ YYLTYPE yylloc; ;} break; - case 666: -#line 4616 "gram.y" + case 683: +#line 4925 "gram.y" { (yyval.defelt) = makeDefElem("handler", (Node *)(yyvsp[(2) - (2)].list), (yylsp[(1) - (2)])); ;} break; - case 667: -#line 4617 "gram.y" + case 684: +#line 4926 "gram.y" { (yyval.defelt) = makeDefElem("handler", NULL, (yylsp[(1) - (2)])); ;} break; - case 668: -#line 4618 "gram.y" + case 685: +#line 4927 "gram.y" { (yyval.defelt) = makeDefElem("validator", (Node *)(yyvsp[(2) - (2)].list), (yylsp[(1) - (2)])); ;} break; - case 669: -#line 4619 "gram.y" + case 686: +#line 4928 "gram.y" { (yyval.defelt) = makeDefElem("validator", NULL, (yylsp[(1) - (2)])); ;} break; - case 670: -#line 4623 "gram.y" + case 687: +#line 4932 "gram.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].defelt)); ;} break; - case 671: -#line 4624 "gram.y" + case 688: +#line 4933 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (2)].list), (yyvsp[(2) - (2)].defelt)); ;} break; - case 672: -#line 4628 "gram.y" + case 689: +#line 4937 "gram.y" { (yyval.list) = (yyvsp[(1) - (1)].list); ;} break; - case 673: -#line 4629 "gram.y" + case 690: +#line 4938 "gram.y" { (yyval.list) = NIL; ;} break; - case 674: -#line 4640 "gram.y" + case 691: +#line 4949 "gram.y" { AlterFdwStmt *n = makeNode(AlterFdwStmt); n->fdwname = (yyvsp[(5) - (7)].str); @@ -31449,8 +32997,8 @@ YYLTYPE yylloc; ;} break; - case 675: -#line 4648 "gram.y" + case 692: +#line 4957 "gram.y" { AlterFdwStmt *n = makeNode(AlterFdwStmt); n->fdwname = (yyvsp[(5) - (6)].str); @@ -31460,98 +33008,98 @@ YYLTYPE yylloc; ;} break; - case 676: -#line 4659 "gram.y" + case 693: +#line 4968 "gram.y" { (yyval.list) = (yyvsp[(3) - (4)].list); ;} break; - case 677: -#line 4660 "gram.y" + case 694: +#line 4969 "gram.y" { (yyval.list) = NIL; ;} break; - case 678: -#line 4665 "gram.y" + case 695: +#line 4974 "gram.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].defelt)); ;} break; - case 679: -#line 4669 "gram.y" + case 696: +#line 4978 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].defelt)); ;} break; - case 680: -#line 4676 "gram.y" + case 697: +#line 4985 "gram.y" { (yyval.list) = (yyvsp[(3) - (4)].list); ;} break; - case 681: -#line 4681 "gram.y" + case 698: +#line 4990 "gram.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].defelt)); ;} break; - case 682: -#line 4685 "gram.y" + case 699: +#line 4994 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].defelt)); ;} break; - case 683: -#line 4692 "gram.y" + case 700: +#line 5001 "gram.y" { (yyval.defelt) = (yyvsp[(1) - (1)].defelt); ;} break; - case 684: -#line 4696 "gram.y" + case 701: +#line 5005 "gram.y" { (yyval.defelt) = (yyvsp[(2) - (2)].defelt); (yyval.defelt)->defaction = DEFELEM_SET; ;} break; - case 685: -#line 4701 "gram.y" + case 702: +#line 5010 "gram.y" { (yyval.defelt) = (yyvsp[(2) - (2)].defelt); (yyval.defelt)->defaction = DEFELEM_ADD; ;} break; - case 686: -#line 4706 "gram.y" + case 703: +#line 5015 "gram.y" { (yyval.defelt) = makeDefElemExtended(NULL, (yyvsp[(2) - (2)].str), NULL, DEFELEM_DROP, (yylsp[(2) - (2)])); ;} break; - case 687: -#line 4713 "gram.y" + case 704: +#line 5022 "gram.y" { (yyval.defelt) = makeDefElem((yyvsp[(1) - (2)].str), (yyvsp[(2) - (2)].node), (yylsp[(1) - (2)])); ;} break; - case 688: -#line 4719 "gram.y" + case 705: +#line 5028 "gram.y" { (yyval.str) = (yyvsp[(1) - (1)].str); ;} break; - case 689: -#line 4724 "gram.y" + case 706: +#line 5033 "gram.y" { (yyval.node) = (Node *) makeString((yyvsp[(1) - (1)].str)); ;} break; - case 690: -#line 4736 "gram.y" + case 707: +#line 5045 "gram.y" { CreateForeignServerStmt *n = makeNode(CreateForeignServerStmt); n->servername = (yyvsp[(3) - (10)].str); @@ -31564,8 +33112,8 @@ YYLTYPE yylloc; ;} break; - case 691: -#line 4748 "gram.y" + case 708: +#line 5057 "gram.y" { CreateForeignServerStmt *n = makeNode(CreateForeignServerStmt); n->servername = (yyvsp[(6) - (13)].str); @@ -31578,38 +33126,38 @@ YYLTYPE yylloc; ;} break; - case 692: -#line 4761 "gram.y" + case 709: +#line 5070 "gram.y" { (yyval.str) = (yyvsp[(2) - (2)].str); ;} break; - case 693: -#line 4762 "gram.y" + case 710: +#line 5071 "gram.y" { (yyval.str) = NULL; ;} break; - case 694: -#line 4767 "gram.y" + case 711: +#line 5076 "gram.y" { (yyval.str) = (yyvsp[(2) - (2)].str); ;} break; - case 695: -#line 4768 "gram.y" + case 712: +#line 5077 "gram.y" { (yyval.str) = NULL; ;} break; - case 696: -#line 4772 "gram.y" + case 713: +#line 5081 "gram.y" { (yyval.str) = (yyvsp[(1) - (1)].str); ;} break; - case 697: -#line 4773 "gram.y" + case 714: +#line 5082 "gram.y" { (yyval.str) = NULL; ;} break; - case 698: -#line 4784 "gram.y" + case 715: +#line 5093 "gram.y" { AlterForeignServerStmt *n = makeNode(AlterForeignServerStmt); n->servername = (yyvsp[(3) - (5)].str); @@ -31620,8 +33168,8 @@ YYLTYPE yylloc; ;} break; - case 699: -#line 4793 "gram.y" + case 716: +#line 5102 "gram.y" { AlterForeignServerStmt *n = makeNode(AlterForeignServerStmt); n->servername = (yyvsp[(3) - (4)].str); @@ -31631,8 +33179,8 @@ YYLTYPE yylloc; ;} break; - case 700: -#line 4801 "gram.y" + case 717: +#line 5110 "gram.y" { AlterForeignServerStmt *n = makeNode(AlterForeignServerStmt); n->servername = (yyvsp[(3) - (4)].str); @@ -31641,8 +33189,8 @@ YYLTYPE yylloc; ;} break; - case 701: -#line 4820 "gram.y" + case 718: +#line 5129 "gram.y" { CreateForeignTableStmt *n = makeNode(CreateForeignTableStmt); (yyvsp[(4) - (11)].range)->relpersistence = RELPERSISTENCE_PERMANENT; @@ -31662,8 +33210,8 @@ YYLTYPE yylloc; ;} break; - case 702: -#line 4840 "gram.y" + case 719: +#line 5149 "gram.y" { CreateForeignTableStmt *n = makeNode(CreateForeignTableStmt); (yyvsp[(7) - (14)].range)->relpersistence = RELPERSISTENCE_PERMANENT; @@ -31683,8 +33231,8 @@ YYLTYPE yylloc; ;} break; - case 703: -#line 4860 "gram.y" + case 720: +#line 5169 "gram.y" { CreateForeignTableStmt *n = makeNode(CreateForeignTableStmt); (yyvsp[(4) - (12)].range)->relpersistence = RELPERSISTENCE_PERMANENT; @@ -31705,8 +33253,8 @@ YYLTYPE yylloc; ;} break; - case 704: -#line 4881 "gram.y" + case 721: +#line 5190 "gram.y" { CreateForeignTableStmt *n = makeNode(CreateForeignTableStmt); (yyvsp[(7) - (15)].range)->relpersistence = RELPERSISTENCE_PERMANENT; @@ -31727,8 +33275,8 @@ YYLTYPE yylloc; ;} break; - case 705: -#line 4910 "gram.y" + case 722: +#line 5219 "gram.y" { AlterTableStmt *n = makeNode(AlterTableStmt); n->relation = (yyvsp[(4) - (5)].range); @@ -31739,8 +33287,8 @@ YYLTYPE yylloc; ;} break; - case 706: -#line 4919 "gram.y" + case 723: +#line 5228 "gram.y" { AlterTableStmt *n = makeNode(AlterTableStmt); n->relation = (yyvsp[(6) - (7)].range); @@ -31751,8 +33299,8 @@ YYLTYPE yylloc; ;} break; - case 707: -#line 4941 "gram.y" + case 724: +#line 5250 "gram.y" { ImportForeignSchemaStmt *n = makeNode(ImportForeignSchemaStmt); n->server_name = (yyvsp[(8) - (11)].str); @@ -31765,18 +33313,18 @@ YYLTYPE yylloc; ;} break; - case 708: -#line 4954 "gram.y" + case 725: +#line 5263 "gram.y" { (yyval.ival) = FDW_IMPORT_SCHEMA_LIMIT_TO; ;} break; - case 709: -#line 4955 "gram.y" + case 726: +#line 5264 "gram.y" { (yyval.ival) = FDW_IMPORT_SCHEMA_EXCEPT; ;} break; - case 710: -#line 4960 "gram.y" + case 727: +#line 5269 "gram.y" { ImportQual *n = (ImportQual *) palloc(sizeof(ImportQual)); n->type = (yyvsp[(1) - (4)].ival); @@ -31785,8 +33333,8 @@ YYLTYPE yylloc; ;} break; - case 711: -#line 4967 "gram.y" + case 728: +#line 5276 "gram.y" { ImportQual *n = (ImportQual *) palloc(sizeof(ImportQual)); n->type = FDW_IMPORT_SCHEMA_ALL; @@ -31795,8 +33343,8 @@ YYLTYPE yylloc; ;} break; - case 712: -#line 4983 "gram.y" + case 729: +#line 5292 "gram.y" { CreateUserMappingStmt *n = makeNode(CreateUserMappingStmt); n->user = (yyvsp[(5) - (8)].rolespec); @@ -31807,8 +33355,8 @@ YYLTYPE yylloc; ;} break; - case 713: -#line 4992 "gram.y" + case 730: +#line 5301 "gram.y" { CreateUserMappingStmt *n = makeNode(CreateUserMappingStmt); n->user = (yyvsp[(8) - (11)].rolespec); @@ -31819,18 +33367,18 @@ YYLTYPE yylloc; ;} break; - case 714: -#line 5003 "gram.y" + case 731: +#line 5312 "gram.y" { (yyval.rolespec) = (yyvsp[(1) - (1)].rolespec); ;} break; - case 715: -#line 5004 "gram.y" + case 732: +#line 5313 "gram.y" { (yyval.rolespec) = makeRoleSpec(ROLESPEC_CURRENT_USER, (yylsp[(1) - (1)])); ;} break; - case 716: -#line 5017 "gram.y" + case 733: +#line 5326 "gram.y" { DropUserMappingStmt *n = makeNode(DropUserMappingStmt); n->user = (yyvsp[(5) - (7)].rolespec); @@ -31840,8 +33388,8 @@ YYLTYPE yylloc; ;} break; - case 717: -#line 5025 "gram.y" + case 734: +#line 5334 "gram.y" { DropUserMappingStmt *n = makeNode(DropUserMappingStmt); n->user = (yyvsp[(7) - (9)].rolespec); @@ -31851,8 +33399,8 @@ YYLTYPE yylloc; ;} break; - case 718: -#line 5042 "gram.y" + case 735: +#line 5351 "gram.y" { AlterUserMappingStmt *n = makeNode(AlterUserMappingStmt); n->user = (yyvsp[(5) - (8)].rolespec); @@ -31862,8 +33410,8 @@ YYLTYPE yylloc; ;} break; - case 719: -#line 5068 "gram.y" + case 736: +#line 5377 "gram.y" { CreatePolicyStmt *n = makeNode(CreatePolicyStmt); n->policy_name = (yyvsp[(3) - (10)].str); @@ -31877,8 +33425,8 @@ YYLTYPE yylloc; ;} break; - case 720: -#line 5084 "gram.y" + case 737: +#line 5393 "gram.y" { AlterPolicyStmt *n = makeNode(AlterPolicyStmt); n->policy_name = (yyvsp[(3) - (8)].str); @@ -31890,48 +33438,48 @@ YYLTYPE yylloc; ;} break; - case 721: -#line 5096 "gram.y" + case 738: +#line 5405 "gram.y" { (yyval.node) = (yyvsp[(3) - (4)].node); ;} break; - case 722: -#line 5097 "gram.y" + case 739: +#line 5406 "gram.y" { (yyval.node) = NULL; ;} break; - case 723: -#line 5101 "gram.y" + case 740: +#line 5410 "gram.y" { (yyval.node) = (yyvsp[(4) - (5)].node); ;} break; - case 724: -#line 5102 "gram.y" + case 741: +#line 5411 "gram.y" { (yyval.node) = NULL; ;} break; - case 725: -#line 5106 "gram.y" + case 742: +#line 5415 "gram.y" { (yyval.list) = (yyvsp[(2) - (2)].list); ;} break; - case 726: -#line 5107 "gram.y" + case 743: +#line 5416 "gram.y" { (yyval.list) = list_make1(makeRoleSpec(ROLESPEC_PUBLIC, -1)); ;} break; - case 727: -#line 5111 "gram.y" + case 744: +#line 5420 "gram.y" { (yyval.list) = (yyvsp[(2) - (2)].list); ;} break; - case 728: -#line 5112 "gram.y" + case 745: +#line 5421 "gram.y" { (yyval.list) = NULL; ;} break; - case 729: -#line 5117 "gram.y" + case 746: +#line 5426 "gram.y" { if (strcmp((yyvsp[(2) - (2)].str), "permissive") == 0) (yyval.boolean) = true; @@ -31947,59 +33495,69 @@ YYLTYPE yylloc; ;} break; - case 730: -#line 5130 "gram.y" + case 747: +#line 5439 "gram.y" { (yyval.boolean) = true; ;} break; - case 731: -#line 5134 "gram.y" + case 748: +#line 5443 "gram.y" { (yyval.str) = (yyvsp[(2) - (2)].str); ;} break; - case 732: -#line 5135 "gram.y" + case 749: +#line 5444 "gram.y" { (yyval.str) = "all"; ;} break; - case 733: -#line 5139 "gram.y" + case 750: +#line 5448 "gram.y" { (yyval.str) = "all"; ;} break; - case 734: -#line 5140 "gram.y" + case 751: +#line 5449 "gram.y" { (yyval.str) = "select"; ;} break; - case 735: -#line 5141 "gram.y" + case 752: +#line 5450 "gram.y" { (yyval.str) = "insert"; ;} break; - case 736: -#line 5142 "gram.y" + case 753: +#line 5451 "gram.y" { (yyval.str) = "update"; ;} break; - case 737: -#line 5143 "gram.y" + case 754: +#line 5452 "gram.y" { (yyval.str) = "delete"; ;} break; - case 738: -#line 5154 "gram.y" + case 755: +#line 5463 "gram.y" { CreateAmStmt *n = makeNode(CreateAmStmt); n->amname = (yyvsp[(4) - (8)].str); n->handler_name = (yyvsp[(8) - (8)].list); - n->amtype = AMTYPE_INDEX; + n->amtype = (yyvsp[(6) - (8)].chr); (yyval.node) = (Node *) n; ;} break; - case 739: -#line 5174 "gram.y" + case 756: +#line 5473 "gram.y" + { (yyval.chr) = AMTYPE_INDEX; ;} + break; + + case 757: +#line 5474 "gram.y" + { (yyval.chr) = AMTYPE_TABLE; ;} + break; + + case 758: +#line 5488 "gram.y" { CreateTrigStmt *n = makeNode(CreateTrigStmt); n->trigname = (yyvsp[(3) - (16)].str); @@ -32012,29 +33570,29 @@ YYLTYPE yylloc; n->columns = (List *) lsecond((yyvsp[(5) - (16)].list)); n->whenClause = (yyvsp[(10) - (16)].node); n->transitionRels = (yyvsp[(8) - (16)].list); - n->isconstraint = FALSE; - n->deferrable = FALSE; - n->initdeferred = FALSE; + n->isconstraint = false; + n->deferrable = false; + n->initdeferred = false; n->constrrel = NULL; (yyval.node) = (Node *)n; ;} break; - case 740: -#line 5196 "gram.y" + case 759: +#line 5510 "gram.y" { CreateTrigStmt *n = makeNode(CreateTrigStmt); n->trigname = (yyvsp[(4) - (20)].str); n->relation = (yyvsp[(8) - (20)].range); n->funcname = (yyvsp[(17) - (20)].list); n->args = (yyvsp[(19) - (20)].list); - n->row = TRUE; + n->row = true; n->timing = TRIGGER_TYPE_AFTER; n->events = intVal(linitial((yyvsp[(6) - (20)].list))); n->columns = (List *) lsecond((yyvsp[(6) - (20)].list)); n->whenClause = (yyvsp[(14) - (20)].node); n->transitionRels = NIL; - n->isconstraint = TRUE; + n->isconstraint = true; processCASbits((yyvsp[(10) - (20)].ival), (yylsp[(10) - (20)]), "TRIGGER", &n->deferrable, &n->initdeferred, NULL, NULL, yyscanner); @@ -32043,28 +33601,28 @@ YYLTYPE yylloc; ;} break; - case 741: -#line 5218 "gram.y" + case 760: +#line 5532 "gram.y" { (yyval.ival) = TRIGGER_TYPE_BEFORE; ;} break; - case 742: -#line 5219 "gram.y" + case 761: +#line 5533 "gram.y" { (yyval.ival) = TRIGGER_TYPE_AFTER; ;} break; - case 743: -#line 5220 "gram.y" + case 762: +#line 5534 "gram.y" { (yyval.ival) = TRIGGER_TYPE_INSTEAD; ;} break; - case 744: -#line 5225 "gram.y" + case 763: +#line 5539 "gram.y" { (yyval.list) = (yyvsp[(1) - (1)].list); ;} break; - case 745: -#line 5227 "gram.y" + case 764: +#line 5541 "gram.y" { int events1 = intVal(linitial((yyvsp[(1) - (3)].list))); int events2 = intVal(linitial((yyvsp[(3) - (3)].list))); @@ -32085,53 +33643,53 @@ YYLTYPE yylloc; ;} break; - case 746: -#line 5249 "gram.y" + case 765: +#line 5563 "gram.y" { (yyval.list) = list_make2(makeInteger(TRIGGER_TYPE_INSERT), NIL); ;} break; - case 747: -#line 5251 "gram.y" + case 766: +#line 5565 "gram.y" { (yyval.list) = list_make2(makeInteger(TRIGGER_TYPE_DELETE), NIL); ;} break; - case 748: -#line 5253 "gram.y" + case 767: +#line 5567 "gram.y" { (yyval.list) = list_make2(makeInteger(TRIGGER_TYPE_UPDATE), NIL); ;} break; - case 749: -#line 5255 "gram.y" + case 768: +#line 5569 "gram.y" { (yyval.list) = list_make2(makeInteger(TRIGGER_TYPE_UPDATE), (yyvsp[(3) - (3)].list)); ;} break; - case 750: -#line 5257 "gram.y" + case 769: +#line 5571 "gram.y" { (yyval.list) = list_make2(makeInteger(TRIGGER_TYPE_TRUNCATE), NIL); ;} break; - case 751: -#line 5261 "gram.y" + case 770: +#line 5575 "gram.y" { (yyval.list) = (yyvsp[(2) - (2)].list); ;} break; - case 752: -#line 5262 "gram.y" + case 771: +#line 5576 "gram.y" { (yyval.list) = NIL; ;} break; - case 753: -#line 5266 "gram.y" + case 772: +#line 5580 "gram.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].node)); ;} break; - case 754: -#line 5267 "gram.y" + case 773: +#line 5581 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (2)].list), (yyvsp[(2) - (2)].node)); ;} break; - case 755: -#line 5272 "gram.y" + case 774: +#line 5586 "gram.y" { TriggerTransition *n = makeNode(TriggerTransition); n->name = (yyvsp[(4) - (4)].str); @@ -32141,133 +33699,133 @@ YYLTYPE yylloc; ;} break; - case 756: -#line 5282 "gram.y" - { (yyval.boolean) = TRUE; ;} + case 775: +#line 5596 "gram.y" + { (yyval.boolean) = true; ;} break; - case 757: -#line 5283 "gram.y" - { (yyval.boolean) = FALSE; ;} + case 776: +#line 5597 "gram.y" + { (yyval.boolean) = false; ;} break; - case 758: -#line 5287 "gram.y" - { (yyval.boolean) = TRUE; ;} + case 777: +#line 5601 "gram.y" + { (yyval.boolean) = true; ;} break; - case 759: -#line 5296 "gram.y" - { (yyval.boolean) = FALSE; ;} + case 778: +#line 5610 "gram.y" + { (yyval.boolean) = false; ;} break; - case 760: -#line 5300 "gram.y" + case 779: +#line 5614 "gram.y" { (yyval.str) = (yyvsp[(1) - (1)].str); ;} break; - case 761: -#line 5305 "gram.y" + case 780: +#line 5619 "gram.y" { (yyval.boolean) = (yyvsp[(3) - (3)].boolean); ;} break; - case 762: -#line 5309 "gram.y" + case 781: +#line 5623 "gram.y" { /* * If ROW/STATEMENT not specified, default to * STATEMENT, per SQL */ - (yyval.boolean) = FALSE; + (yyval.boolean) = false; ;} break; - case 763: -#line 5319 "gram.y" + case 782: +#line 5633 "gram.y" {;} break; - case 764: -#line 5320 "gram.y" + case 783: +#line 5634 "gram.y" {;} break; - case 765: -#line 5324 "gram.y" - { (yyval.boolean) = TRUE; ;} + case 784: +#line 5638 "gram.y" + { (yyval.boolean) = true; ;} break; - case 766: -#line 5325 "gram.y" - { (yyval.boolean) = FALSE; ;} + case 785: +#line 5639 "gram.y" + { (yyval.boolean) = false; ;} break; - case 767: -#line 5329 "gram.y" + case 786: +#line 5643 "gram.y" { (yyval.node) = (yyvsp[(3) - (4)].node); ;} break; - case 768: -#line 5330 "gram.y" + case 787: +#line 5644 "gram.y" { (yyval.node) = NULL; ;} break; - case 769: -#line 5334 "gram.y" + case 790: +#line 5653 "gram.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].value)); ;} break; - case 770: -#line 5335 "gram.y" + case 791: +#line 5654 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].value)); ;} break; - case 771: -#line 5336 "gram.y" + case 792: +#line 5655 "gram.y" { (yyval.list) = NIL; ;} break; - case 772: -#line 5341 "gram.y" + case 793: +#line 5660 "gram.y" { (yyval.value) = makeString(psprintf("%d", (yyvsp[(1) - (1)].ival))); ;} break; - case 773: -#line 5344 "gram.y" + case 794: +#line 5663 "gram.y" { (yyval.value) = makeString((yyvsp[(1) - (1)].str)); ;} break; - case 774: -#line 5345 "gram.y" + case 795: +#line 5664 "gram.y" { (yyval.value) = makeString((yyvsp[(1) - (1)].str)); ;} break; - case 775: -#line 5346 "gram.y" + case 796: +#line 5665 "gram.y" { (yyval.value) = makeString((yyvsp[(1) - (1)].str)); ;} break; - case 776: -#line 5350 "gram.y" + case 797: +#line 5669 "gram.y" { (yyval.range) = (yyvsp[(2) - (2)].range); ;} break; - case 777: -#line 5351 "gram.y" + case 798: +#line 5670 "gram.y" { (yyval.range) = NULL; ;} break; - case 778: -#line 5356 "gram.y" + case 799: +#line 5675 "gram.y" { (yyval.ival) = 0; ;} break; - case 779: -#line 5358 "gram.y" + case 800: +#line 5677 "gram.y" { /* * We must complain about conflicting options. @@ -32293,38 +33851,38 @@ YYLTYPE yylloc; ;} break; - case 780: -#line 5384 "gram.y" + case 801: +#line 5703 "gram.y" { (yyval.ival) = CAS_NOT_DEFERRABLE; ;} break; - case 781: -#line 5385 "gram.y" + case 802: +#line 5704 "gram.y" { (yyval.ival) = CAS_DEFERRABLE; ;} break; - case 782: -#line 5386 "gram.y" + case 803: +#line 5705 "gram.y" { (yyval.ival) = CAS_INITIALLY_IMMEDIATE; ;} break; - case 783: -#line 5387 "gram.y" + case 804: +#line 5706 "gram.y" { (yyval.ival) = CAS_INITIALLY_DEFERRED; ;} break; - case 784: -#line 5388 "gram.y" + case 805: +#line 5707 "gram.y" { (yyval.ival) = CAS_NOT_VALID; ;} break; - case 785: -#line 5389 "gram.y" + case 806: +#line 5708 "gram.y" { (yyval.ival) = CAS_NO_INHERIT; ;} break; - case 786: -#line 5404 "gram.y" + case 807: +#line 5723 "gram.y" { CreateEventTrigStmt *n = makeNode(CreateEventTrigStmt); n->trigname = (yyvsp[(4) - (11)].str); @@ -32335,8 +33893,8 @@ YYLTYPE yylloc; ;} break; - case 787: -#line 5415 "gram.y" + case 808: +#line 5734 "gram.y" { CreateEventTrigStmt *n = makeNode(CreateEventTrigStmt); n->trigname = (yyvsp[(4) - (13)].str); @@ -32347,33 +33905,33 @@ YYLTYPE yylloc; ;} break; - case 788: -#line 5427 "gram.y" + case 809: +#line 5746 "gram.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].defelt)); ;} break; - case 789: -#line 5429 "gram.y" + case 810: +#line 5748 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].defelt)); ;} break; - case 790: -#line 5434 "gram.y" + case 811: +#line 5753 "gram.y" { (yyval.defelt) = makeDefElem((yyvsp[(1) - (5)].str), (Node *) (yyvsp[(4) - (5)].list), (yylsp[(1) - (5)])); ;} break; - case 791: -#line 5439 "gram.y" + case 812: +#line 5758 "gram.y" { (yyval.list) = list_make1(makeString((yyvsp[(1) - (1)].str))); ;} break; - case 792: -#line 5441 "gram.y" + case 813: +#line 5760 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (3)].list), makeString((yyvsp[(3) - (3)].str))); ;} break; - case 793: -#line 5446 "gram.y" + case 814: +#line 5765 "gram.y" { AlterEventTrigStmt *n = makeNode(AlterEventTrigStmt); n->trigname = (yyvsp[(4) - (5)].str); @@ -32382,88 +33940,68 @@ YYLTYPE yylloc; ;} break; - case 794: -#line 5455 "gram.y" + case 815: +#line 5774 "gram.y" { (yyval.chr) = TRIGGER_FIRES_ON_ORIGIN; ;} break; - case 795: -#line 5456 "gram.y" + case 816: +#line 5775 "gram.y" { (yyval.chr) = TRIGGER_FIRES_ON_REPLICA; ;} break; - case 796: -#line 5457 "gram.y" + case 817: +#line 5776 "gram.y" { (yyval.chr) = TRIGGER_FIRES_ALWAYS; ;} break; - case 797: -#line 5458 "gram.y" + case 818: +#line 5777 "gram.y" { (yyval.chr) = TRIGGER_DISABLED; ;} break; - case 798: -#line 5472 "gram.y" + case 819: +#line 5789 "gram.y" { - CreateTrigStmt *n = makeNode(CreateTrigStmt); - n->trigname = (yyvsp[(3) - (8)].str); - n->args = list_make1((yyvsp[(6) - (8)].node)); - n->isconstraint = TRUE; - processCASbits((yyvsp[(8) - (8)].ival), (yylsp[(8) - (8)]), "ASSERTION", - &n->deferrable, &n->initdeferred, NULL, - NULL, yyscanner); - ereport(ERROR, (errcode(ERRCODE_FEATURE_NOT_SUPPORTED), errmsg("CREATE ASSERTION is not yet implemented"))); - (yyval.node) = (Node *)n; - ;} - break; - - case 799: -#line 5491 "gram.y" - { - DropStmt *n = makeNode(DropStmt); - n->objects = NIL; - n->behavior = (yyvsp[(4) - (4)].dbehavior); - n->removeType = OBJECT_TRIGGER; /* XXX */ - ereport(ERROR, - (errcode(ERRCODE_FEATURE_NOT_SUPPORTED), - errmsg("DROP ASSERTION is not yet implemented"))); - (yyval.node) = (Node *) n; + (yyval.node) = NULL; ;} break; - case 800: -#line 5513 "gram.y" + case 820: +#line 5808 "gram.y" { DefineStmt *n = makeNode(DefineStmt); n->kind = OBJECT_AGGREGATE; n->oldstyle = false; - n->defnames = (yyvsp[(3) - (5)].list); - n->args = (yyvsp[(4) - (5)].list); - n->definition = (yyvsp[(5) - (5)].list); + n->replace = (yyvsp[(2) - (6)].boolean); + n->defnames = (yyvsp[(4) - (6)].list); + n->args = (yyvsp[(5) - (6)].list); + n->definition = (yyvsp[(6) - (6)].list); (yyval.node) = (Node *)n; ;} break; - case 801: -#line 5523 "gram.y" + case 821: +#line 5819 "gram.y" { /* old-style (pre-8.2) syntax for CREATE AGGREGATE */ DefineStmt *n = makeNode(DefineStmt); n->kind = OBJECT_AGGREGATE; n->oldstyle = true; - n->defnames = (yyvsp[(3) - (4)].list); + n->replace = (yyvsp[(2) - (5)].boolean); + n->defnames = (yyvsp[(4) - (5)].list); n->args = NIL; - n->definition = (yyvsp[(4) - (4)].list); + n->definition = (yyvsp[(5) - (5)].list); (yyval.node) = (Node *)n; ;} break; - case 802: -#line 5534 "gram.y" + case 822: +#line 5831 "gram.y" { DefineStmt *n = makeNode(DefineStmt); n->kind = OBJECT_OPERATOR; @@ -32475,8 +34013,8 @@ YYLTYPE yylloc; ;} break; - case 803: -#line 5544 "gram.y" + case 823: +#line 5841 "gram.y" { DefineStmt *n = makeNode(DefineStmt); n->kind = OBJECT_TYPE; @@ -32488,8 +34026,8 @@ YYLTYPE yylloc; ;} break; - case 804: -#line 5554 "gram.y" + case 824: +#line 5851 "gram.y" { /* Shell type (identified by lack of definition) */ DefineStmt *n = makeNode(DefineStmt); @@ -32502,8 +34040,8 @@ YYLTYPE yylloc; ;} break; - case 805: -#line 5565 "gram.y" + case 825: +#line 5862 "gram.y" { CompositeTypeStmt *n = makeNode(CompositeTypeStmt); @@ -32514,8 +34052,8 @@ YYLTYPE yylloc; ;} break; - case 806: -#line 5574 "gram.y" + case 826: +#line 5871 "gram.y" { CreateEnumStmt *n = makeNode(CreateEnumStmt); n->typeName = (yyvsp[(3) - (8)].list); @@ -32524,8 +34062,8 @@ YYLTYPE yylloc; ;} break; - case 807: -#line 5581 "gram.y" + case 827: +#line 5878 "gram.y" { CreateRangeStmt *n = makeNode(CreateRangeStmt); n->typeName = (yyvsp[(3) - (6)].list); @@ -32534,8 +34072,8 @@ YYLTYPE yylloc; ;} break; - case 808: -#line 5588 "gram.y" + case 828: +#line 5885 "gram.y" { DefineStmt *n = makeNode(DefineStmt); n->kind = OBJECT_TSPARSER; @@ -32546,8 +34084,8 @@ YYLTYPE yylloc; ;} break; - case 809: -#line 5597 "gram.y" + case 829: +#line 5894 "gram.y" { DefineStmt *n = makeNode(DefineStmt); n->kind = OBJECT_TSDICTIONARY; @@ -32558,8 +34096,8 @@ YYLTYPE yylloc; ;} break; - case 810: -#line 5606 "gram.y" + case 830: +#line 5903 "gram.y" { DefineStmt *n = makeNode(DefineStmt); n->kind = OBJECT_TSTEMPLATE; @@ -32570,8 +34108,8 @@ YYLTYPE yylloc; ;} break; - case 811: -#line 5615 "gram.y" + case 831: +#line 5912 "gram.y" { DefineStmt *n = makeNode(DefineStmt); n->kind = OBJECT_TSCONFIGURATION; @@ -32582,8 +34120,8 @@ YYLTYPE yylloc; ;} break; - case 812: -#line 5624 "gram.y" + case 832: +#line 5921 "gram.y" { DefineStmt *n = makeNode(DefineStmt); n->kind = OBJECT_COLLATION; @@ -32594,8 +34132,8 @@ YYLTYPE yylloc; ;} break; - case 813: -#line 5633 "gram.y" + case 833: +#line 5930 "gram.y" { DefineStmt *n = makeNode(DefineStmt); n->kind = OBJECT_COLLATION; @@ -32607,8 +34145,8 @@ YYLTYPE yylloc; ;} break; - case 814: -#line 5643 "gram.y" + case 834: +#line 5940 "gram.y" { DefineStmt *n = makeNode(DefineStmt); n->kind = OBJECT_COLLATION; @@ -32619,8 +34157,8 @@ YYLTYPE yylloc; ;} break; - case 815: -#line 5652 "gram.y" + case 835: +#line 5949 "gram.y" { DefineStmt *n = makeNode(DefineStmt); n->kind = OBJECT_COLLATION; @@ -32632,109 +34170,109 @@ YYLTYPE yylloc; ;} break; - case 816: -#line 5663 "gram.y" + case 836: +#line 5960 "gram.y" { (yyval.list) = (yyvsp[(2) - (3)].list); ;} break; - case 817: -#line 5666 "gram.y" + case 837: +#line 5963 "gram.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].defelt)); ;} break; - case 818: -#line 5667 "gram.y" + case 838: +#line 5964 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].defelt)); ;} break; - case 819: -#line 5671 "gram.y" + case 839: +#line 5968 "gram.y" { (yyval.defelt) = makeDefElem((yyvsp[(1) - (3)].str), (Node *) (yyvsp[(3) - (3)].node), (yylsp[(1) - (3)])); ;} break; - case 820: -#line 5675 "gram.y" + case 840: +#line 5972 "gram.y" { (yyval.defelt) = makeDefElem((yyvsp[(1) - (1)].str), NULL, (yylsp[(1) - (1)])); ;} break; - case 821: -#line 5681 "gram.y" + case 841: +#line 5978 "gram.y" { (yyval.node) = (Node *)(yyvsp[(1) - (1)].typnam); ;} break; - case 822: -#line 5682 "gram.y" + case 842: +#line 5979 "gram.y" { (yyval.node) = (Node *)makeString(pstrdup((yyvsp[(1) - (1)].keyword))); ;} break; - case 823: -#line 5683 "gram.y" + case 843: +#line 5980 "gram.y" { (yyval.node) = (Node *)(yyvsp[(1) - (1)].list); ;} break; - case 824: -#line 5684 "gram.y" + case 844: +#line 5981 "gram.y" { (yyval.node) = (Node *)(yyvsp[(1) - (1)].value); ;} break; - case 825: -#line 5685 "gram.y" + case 845: +#line 5982 "gram.y" { (yyval.node) = (Node *)makeString((yyvsp[(1) - (1)].str)); ;} break; - case 826: -#line 5686 "gram.y" + case 846: +#line 5983 "gram.y" { (yyval.node) = (Node *)makeString(pstrdup((yyvsp[(1) - (1)].keyword))); ;} break; - case 827: -#line 5689 "gram.y" + case 847: +#line 5986 "gram.y" { (yyval.list) = (yyvsp[(2) - (3)].list); ;} break; - case 828: -#line 5692 "gram.y" + case 848: +#line 5989 "gram.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].defelt)); ;} break; - case 829: -#line 5693 "gram.y" + case 849: +#line 5990 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].defelt)); ;} break; - case 830: -#line 5702 "gram.y" + case 850: +#line 5999 "gram.y" { (yyval.defelt) = makeDefElem((yyvsp[(1) - (3)].str), (Node *)(yyvsp[(3) - (3)].node), (yylsp[(1) - (3)])); ;} break; - case 831: -#line 5708 "gram.y" + case 851: +#line 6005 "gram.y" { (yyval.list) = (yyvsp[(1) - (1)].list); ;} break; - case 832: -#line 5709 "gram.y" + case 852: +#line 6006 "gram.y" { (yyval.list) = NIL; ;} break; - case 833: -#line 5713 "gram.y" + case 853: +#line 6010 "gram.y" { (yyval.list) = list_make1(makeString((yyvsp[(1) - (1)].str))); ;} break; - case 834: -#line 5715 "gram.y" + case 854: +#line 6012 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (3)].list), makeString((yyvsp[(3) - (3)].str))); ;} break; - case 835: -#line 5726 "gram.y" + case 855: +#line 6023 "gram.y" { AlterEnumStmt *n = makeNode(AlterEnumStmt); n->typeName = (yyvsp[(3) - (7)].list); @@ -32747,8 +34285,8 @@ YYLTYPE yylloc; ;} break; - case 836: -#line 5737 "gram.y" + case 856: +#line 6034 "gram.y" { AlterEnumStmt *n = makeNode(AlterEnumStmt); n->typeName = (yyvsp[(3) - (9)].list); @@ -32761,8 +34299,8 @@ YYLTYPE yylloc; ;} break; - case 837: -#line 5748 "gram.y" + case 857: +#line 6045 "gram.y" { AlterEnumStmt *n = makeNode(AlterEnumStmt); n->typeName = (yyvsp[(3) - (9)].list); @@ -32775,8 +34313,8 @@ YYLTYPE yylloc; ;} break; - case 838: -#line 5759 "gram.y" + case 858: +#line 6056 "gram.y" { AlterEnumStmt *n = makeNode(AlterEnumStmt); n->typeName = (yyvsp[(3) - (8)].list); @@ -32789,18 +34327,18 @@ YYLTYPE yylloc; ;} break; - case 839: -#line 5771 "gram.y" + case 859: +#line 6068 "gram.y" { (yyval.boolean) = true; ;} break; - case 840: -#line 5772 "gram.y" + case 860: +#line 6069 "gram.y" { (yyval.boolean) = false; ;} break; - case 841: -#line 5790 "gram.y" + case 861: +#line 6087 "gram.y" { CreateOpClassStmt *n = makeNode(CreateOpClassStmt); n->opclassname = (yyvsp[(4) - (13)].list); @@ -32813,18 +34351,18 @@ YYLTYPE yylloc; ;} break; - case 842: -#line 5803 "gram.y" + case 862: +#line 6100 "gram.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].node)); ;} break; - case 843: -#line 5804 "gram.y" + case 863: +#line 6101 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].node)); ;} break; - case 844: -#line 5809 "gram.y" + case 864: +#line 6106 "gram.y" { CreateOpClassItem *n = makeNode(CreateOpClassItem); ObjectWithArgs *owa = makeNode(ObjectWithArgs); @@ -32838,8 +34376,8 @@ YYLTYPE yylloc; ;} break; - case 845: -#line 5822 "gram.y" + case 865: +#line 6119 "gram.y" { CreateOpClassItem *n = makeNode(CreateOpClassItem); n->itemtype = OPCLASS_ITEM_OPERATOR; @@ -32850,8 +34388,8 @@ YYLTYPE yylloc; ;} break; - case 846: -#line 5831 "gram.y" + case 866: +#line 6128 "gram.y" { CreateOpClassItem *n = makeNode(CreateOpClassItem); n->itemtype = OPCLASS_ITEM_FUNCTION; @@ -32861,8 +34399,8 @@ YYLTYPE yylloc; ;} break; - case 847: -#line 5839 "gram.y" + case 867: +#line 6136 "gram.y" { CreateOpClassItem *n = makeNode(CreateOpClassItem); n->itemtype = OPCLASS_ITEM_FUNCTION; @@ -32873,8 +34411,8 @@ YYLTYPE yylloc; ;} break; - case 848: -#line 5848 "gram.y" + case 868: +#line 6145 "gram.y" { CreateOpClassItem *n = makeNode(CreateOpClassItem); n->itemtype = OPCLASS_ITEM_STORAGETYPE; @@ -32883,43 +34421,43 @@ YYLTYPE yylloc; ;} break; - case 849: -#line 5856 "gram.y" - { (yyval.boolean) = TRUE; ;} + case 869: +#line 6153 "gram.y" + { (yyval.boolean) = true; ;} break; - case 850: -#line 5857 "gram.y" - { (yyval.boolean) = FALSE; ;} + case 870: +#line 6154 "gram.y" + { (yyval.boolean) = false; ;} break; - case 851: -#line 5860 "gram.y" + case 871: +#line 6157 "gram.y" { (yyval.list) = (yyvsp[(2) - (2)].list); ;} break; - case 852: -#line 5861 "gram.y" + case 872: +#line 6158 "gram.y" { (yyval.list) = NIL; ;} break; - case 853: -#line 5864 "gram.y" + case 873: +#line 6161 "gram.y" { (yyval.list) = NIL; ;} break; - case 854: -#line 5865 "gram.y" + case 874: +#line 6162 "gram.y" { (yyval.list) = (yyvsp[(4) - (4)].list); ;} break; - case 855: -#line 5866 "gram.y" + case 875: +#line 6163 "gram.y" { (yyval.list) = NIL; ;} break; - case 856: -#line 5870 "gram.y" + case 876: +#line 6167 "gram.y" { /* * RECHECK no longer does anything in opclass definitions, @@ -32931,17 +34469,17 @@ YYLTYPE yylloc; errmsg("RECHECK is no longer required"), errhint("Update your data type."), parser_errposition((yylsp[(1) - (1)])))); - (yyval.boolean) = TRUE; + (yyval.boolean) = true; ;} break; - case 857: -#line 5883 "gram.y" - { (yyval.boolean) = FALSE; ;} + case 877: +#line 6180 "gram.y" + { (yyval.boolean) = false; ;} break; - case 858: -#line 5889 "gram.y" + case 878: +#line 6186 "gram.y" { CreateOpFamilyStmt *n = makeNode(CreateOpFamilyStmt); n->opfamilyname = (yyvsp[(4) - (6)].list); @@ -32950,8 +34488,8 @@ YYLTYPE yylloc; ;} break; - case 859: -#line 5899 "gram.y" + case 879: +#line 6196 "gram.y" { AlterOpFamilyStmt *n = makeNode(AlterOpFamilyStmt); n->opfamilyname = (yyvsp[(4) - (8)].list); @@ -32962,8 +34500,8 @@ YYLTYPE yylloc; ;} break; - case 860: -#line 5908 "gram.y" + case 880: +#line 6205 "gram.y" { AlterOpFamilyStmt *n = makeNode(AlterOpFamilyStmt); n->opfamilyname = (yyvsp[(4) - (8)].list); @@ -32974,18 +34512,18 @@ YYLTYPE yylloc; ;} break; - case 861: -#line 5919 "gram.y" + case 881: +#line 6216 "gram.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].node)); ;} break; - case 862: -#line 5920 "gram.y" + case 882: +#line 6217 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].node)); ;} break; - case 863: -#line 5925 "gram.y" + case 883: +#line 6222 "gram.y" { CreateOpClassItem *n = makeNode(CreateOpClassItem); n->itemtype = OPCLASS_ITEM_OPERATOR; @@ -32995,8 +34533,8 @@ YYLTYPE yylloc; ;} break; - case 864: -#line 5933 "gram.y" + case 884: +#line 6230 "gram.y" { CreateOpClassItem *n = makeNode(CreateOpClassItem); n->itemtype = OPCLASS_ITEM_FUNCTION; @@ -33006,8 +34544,8 @@ YYLTYPE yylloc; ;} break; - case 865: -#line 5945 "gram.y" + case 885: +#line 6242 "gram.y" { DropStmt *n = makeNode(DropStmt); n->objects = list_make1(lcons(makeString((yyvsp[(6) - (7)].str)), (yyvsp[(4) - (7)].list))); @@ -33019,8 +34557,8 @@ YYLTYPE yylloc; ;} break; - case 866: -#line 5955 "gram.y" + case 886: +#line 6252 "gram.y" { DropStmt *n = makeNode(DropStmt); n->objects = list_make1(lcons(makeString((yyvsp[(8) - (9)].str)), (yyvsp[(6) - (9)].list))); @@ -33032,8 +34570,8 @@ YYLTYPE yylloc; ;} break; - case 867: -#line 5968 "gram.y" + case 887: +#line 6265 "gram.y" { DropStmt *n = makeNode(DropStmt); n->objects = list_make1(lcons(makeString((yyvsp[(6) - (7)].str)), (yyvsp[(4) - (7)].list))); @@ -33045,8 +34583,8 @@ YYLTYPE yylloc; ;} break; - case 868: -#line 5978 "gram.y" + case 888: +#line 6275 "gram.y" { DropStmt *n = makeNode(DropStmt); n->objects = list_make1(lcons(makeString((yyvsp[(8) - (9)].str)), (yyvsp[(6) - (9)].list))); @@ -33058,8 +34596,8 @@ YYLTYPE yylloc; ;} break; - case 869: -#line 6000 "gram.y" + case 889: +#line 6297 "gram.y" { DropOwnedStmt *n = makeNode(DropOwnedStmt); n->roles = (yyvsp[(4) - (5)].list); @@ -33068,8 +34606,8 @@ YYLTYPE yylloc; ;} break; - case 870: -#line 6010 "gram.y" + case 890: +#line 6307 "gram.y" { ReassignOwnedStmt *n = makeNode(ReassignOwnedStmt); n->roles = (yyvsp[(4) - (6)].list); @@ -33078,12 +34616,12 @@ YYLTYPE yylloc; ;} break; - case 871: -#line 6028 "gram.y" + case 891: +#line 6325 "gram.y" { DropStmt *n = makeNode(DropStmt); n->removeType = (yyvsp[(2) - (6)].objtype); - n->missing_ok = TRUE; + n->missing_ok = true; n->objects = (yyvsp[(5) - (6)].list); n->behavior = (yyvsp[(6) - (6)].dbehavior); n->concurrent = false; @@ -33091,12 +34629,12 @@ YYLTYPE yylloc; ;} break; - case 872: -#line 6038 "gram.y" + case 892: +#line 6335 "gram.y" { DropStmt *n = makeNode(DropStmt); n->removeType = (yyvsp[(2) - (4)].objtype); - n->missing_ok = FALSE; + n->missing_ok = false; n->objects = (yyvsp[(3) - (4)].list); n->behavior = (yyvsp[(4) - (4)].dbehavior); n->concurrent = false; @@ -33104,12 +34642,12 @@ YYLTYPE yylloc; ;} break; - case 873: -#line 6048 "gram.y" + case 893: +#line 6345 "gram.y" { DropStmt *n = makeNode(DropStmt); n->removeType = (yyvsp[(2) - (6)].objtype); - n->missing_ok = TRUE; + n->missing_ok = true; n->objects = (yyvsp[(5) - (6)].list); n->behavior = (yyvsp[(6) - (6)].dbehavior); n->concurrent = false; @@ -33117,12 +34655,12 @@ YYLTYPE yylloc; ;} break; - case 874: -#line 6058 "gram.y" + case 894: +#line 6355 "gram.y" { DropStmt *n = makeNode(DropStmt); n->removeType = (yyvsp[(2) - (4)].objtype); - n->missing_ok = FALSE; + n->missing_ok = false; n->objects = (yyvsp[(3) - (4)].list); n->behavior = (yyvsp[(4) - (4)].dbehavior); n->concurrent = false; @@ -33130,8 +34668,8 @@ YYLTYPE yylloc; ;} break; - case 875: -#line 6068 "gram.y" + case 895: +#line 6365 "gram.y" { DropStmt *n = makeNode(DropStmt); n->removeType = (yyvsp[(2) - (6)].objtype); @@ -33143,8 +34681,8 @@ YYLTYPE yylloc; ;} break; - case 876: -#line 6078 "gram.y" + case 896: +#line 6375 "gram.y" { DropStmt *n = makeNode(DropStmt); n->removeType = (yyvsp[(2) - (8)].objtype); @@ -33156,12 +34694,12 @@ YYLTYPE yylloc; ;} break; - case 877: -#line 6088 "gram.y" + case 897: +#line 6385 "gram.y" { DropStmt *n = makeNode(DropStmt); n->removeType = OBJECT_TYPE; - n->missing_ok = FALSE; + n->missing_ok = false; n->objects = (yyvsp[(3) - (4)].list); n->behavior = (yyvsp[(4) - (4)].dbehavior); n->concurrent = false; @@ -33169,12 +34707,12 @@ YYLTYPE yylloc; ;} break; - case 878: -#line 6098 "gram.y" + case 898: +#line 6395 "gram.y" { DropStmt *n = makeNode(DropStmt); n->removeType = OBJECT_TYPE; - n->missing_ok = TRUE; + n->missing_ok = true; n->objects = (yyvsp[(5) - (6)].list); n->behavior = (yyvsp[(6) - (6)].dbehavior); n->concurrent = false; @@ -33182,12 +34720,12 @@ YYLTYPE yylloc; ;} break; - case 879: -#line 6108 "gram.y" + case 899: +#line 6405 "gram.y" { DropStmt *n = makeNode(DropStmt); n->removeType = OBJECT_DOMAIN; - n->missing_ok = FALSE; + n->missing_ok = false; n->objects = (yyvsp[(3) - (4)].list); n->behavior = (yyvsp[(4) - (4)].dbehavior); n->concurrent = false; @@ -33195,12 +34733,12 @@ YYLTYPE yylloc; ;} break; - case 880: -#line 6118 "gram.y" + case 900: +#line 6415 "gram.y" { DropStmt *n = makeNode(DropStmt); n->removeType = OBJECT_DOMAIN; - n->missing_ok = TRUE; + n->missing_ok = true; n->objects = (yyvsp[(5) - (6)].list); n->behavior = (yyvsp[(6) - (6)].dbehavior); n->concurrent = false; @@ -33208,12 +34746,12 @@ YYLTYPE yylloc; ;} break; - case 881: -#line 6128 "gram.y" + case 901: +#line 6425 "gram.y" { DropStmt *n = makeNode(DropStmt); n->removeType = OBJECT_INDEX; - n->missing_ok = FALSE; + n->missing_ok = false; n->objects = (yyvsp[(4) - (5)].list); n->behavior = (yyvsp[(5) - (5)].dbehavior); n->concurrent = true; @@ -33221,12 +34759,12 @@ YYLTYPE yylloc; ;} break; - case 882: -#line 6138 "gram.y" + case 902: +#line 6435 "gram.y" { DropStmt *n = makeNode(DropStmt); n->removeType = OBJECT_INDEX; - n->missing_ok = TRUE; + n->missing_ok = true; n->objects = (yyvsp[(6) - (7)].list); n->behavior = (yyvsp[(7) - (7)].dbehavior); n->concurrent = true; @@ -33234,163 +34772,163 @@ YYLTYPE yylloc; ;} break; - case 883: -#line 6151 "gram.y" + case 903: +#line 6448 "gram.y" { (yyval.objtype) = OBJECT_TABLE; ;} break; - case 884: -#line 6152 "gram.y" + case 904: +#line 6449 "gram.y" { (yyval.objtype) = OBJECT_SEQUENCE; ;} break; - case 885: -#line 6153 "gram.y" + case 905: +#line 6450 "gram.y" { (yyval.objtype) = OBJECT_VIEW; ;} break; - case 886: -#line 6154 "gram.y" + case 906: +#line 6451 "gram.y" { (yyval.objtype) = OBJECT_MATVIEW; ;} break; - case 887: -#line 6155 "gram.y" + case 907: +#line 6452 "gram.y" { (yyval.objtype) = OBJECT_INDEX; ;} break; - case 888: -#line 6156 "gram.y" + case 908: +#line 6453 "gram.y" { (yyval.objtype) = OBJECT_FOREIGN_TABLE; ;} break; - case 889: -#line 6157 "gram.y" + case 909: +#line 6454 "gram.y" { (yyval.objtype) = OBJECT_COLLATION; ;} break; - case 890: -#line 6158 "gram.y" + case 910: +#line 6455 "gram.y" { (yyval.objtype) = OBJECT_CONVERSION; ;} break; - case 891: -#line 6159 "gram.y" + case 911: +#line 6456 "gram.y" { (yyval.objtype) = OBJECT_STATISTIC_EXT; ;} break; - case 892: -#line 6160 "gram.y" + case 912: +#line 6457 "gram.y" { (yyval.objtype) = OBJECT_TSPARSER; ;} break; - case 893: -#line 6161 "gram.y" + case 913: +#line 6458 "gram.y" { (yyval.objtype) = OBJECT_TSDICTIONARY; ;} break; - case 894: -#line 6162 "gram.y" + case 914: +#line 6459 "gram.y" { (yyval.objtype) = OBJECT_TSTEMPLATE; ;} break; - case 895: -#line 6163 "gram.y" + case 915: +#line 6460 "gram.y" { (yyval.objtype) = OBJECT_TSCONFIGURATION; ;} break; - case 896: -#line 6168 "gram.y" + case 916: +#line 6465 "gram.y" { (yyval.objtype) = OBJECT_ACCESS_METHOD; ;} break; - case 897: -#line 6169 "gram.y" + case 917: +#line 6466 "gram.y" { (yyval.objtype) = OBJECT_EVENT_TRIGGER; ;} break; - case 898: -#line 6170 "gram.y" + case 918: +#line 6467 "gram.y" { (yyval.objtype) = OBJECT_EXTENSION; ;} break; - case 899: -#line 6171 "gram.y" + case 919: +#line 6468 "gram.y" { (yyval.objtype) = OBJECT_FDW; ;} break; - case 900: -#line 6172 "gram.y" + case 920: +#line 6469 "gram.y" { (yyval.objtype) = OBJECT_PUBLICATION; ;} break; - case 901: -#line 6173 "gram.y" + case 921: +#line 6470 "gram.y" { (yyval.objtype) = OBJECT_SCHEMA; ;} break; - case 902: -#line 6174 "gram.y" + case 922: +#line 6471 "gram.y" { (yyval.objtype) = OBJECT_FOREIGN_SERVER; ;} break; - case 903: -#line 6179 "gram.y" + case 923: +#line 6476 "gram.y" { (yyval.objtype) = OBJECT_POLICY; ;} break; - case 904: -#line 6180 "gram.y" + case 924: +#line 6477 "gram.y" { (yyval.objtype) = OBJECT_RULE; ;} break; - case 905: -#line 6181 "gram.y" + case 925: +#line 6478 "gram.y" { (yyval.objtype) = OBJECT_TRIGGER; ;} break; - case 906: -#line 6185 "gram.y" + case 926: +#line 6482 "gram.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].list)); ;} break; - case 907: -#line 6186 "gram.y" + case 927: +#line 6483 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].list)); ;} break; - case 908: -#line 6189 "gram.y" + case 928: +#line 6486 "gram.y" { (yyval.list) = list_make1(makeString((yyvsp[(1) - (1)].str))); ;} break; - case 909: -#line 6190 "gram.y" + case 929: +#line 6487 "gram.y" { (yyval.list) = lcons(makeString((yyvsp[(1) - (2)].str)), (yyvsp[(2) - (2)].list)); ;} break; - case 910: -#line 6194 "gram.y" + case 930: +#line 6491 "gram.y" { (yyval.list) = list_make1(makeString((yyvsp[(2) - (2)].str))); ;} break; - case 911: -#line 6196 "gram.y" + case 931: +#line 6493 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (3)].list), makeString((yyvsp[(3) - (3)].str))); ;} break; - case 912: -#line 6200 "gram.y" + case 932: +#line 6497 "gram.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].typnam)); ;} break; - case 913: -#line 6201 "gram.y" + case 933: +#line 6498 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].typnam)); ;} break; - case 914: -#line 6213 "gram.y" + case 934: +#line 6510 "gram.y" { TruncateStmt *n = makeNode(TruncateStmt); n->relations = (yyvsp[(3) - (5)].list); @@ -33400,23 +34938,23 @@ YYLTYPE yylloc; ;} break; - case 915: -#line 6223 "gram.y" + case 935: +#line 6520 "gram.y" { (yyval.boolean) = false; ;} break; - case 916: -#line 6224 "gram.y" + case 936: +#line 6521 "gram.y" { (yyval.boolean) = true; ;} break; - case 917: -#line 6225 "gram.y" + case 937: +#line 6522 "gram.y" { (yyval.boolean) = false; ;} break; - case 918: -#line 6260 "gram.y" + case 938: +#line 6557 "gram.y" { CommentStmt *n = makeNode(CommentStmt); n->objtype = (yyvsp[(3) - (6)].objtype); @@ -33426,8 +34964,8 @@ YYLTYPE yylloc; ;} break; - case 919: -#line 6268 "gram.y" + case 939: +#line 6565 "gram.y" { CommentStmt *n = makeNode(CommentStmt); n->objtype = (yyvsp[(3) - (6)].objtype); @@ -33437,8 +34975,8 @@ YYLTYPE yylloc; ;} break; - case 920: -#line 6276 "gram.y" + case 940: +#line 6573 "gram.y" { CommentStmt *n = makeNode(CommentStmt); n->objtype = OBJECT_TYPE; @@ -33448,8 +34986,8 @@ YYLTYPE yylloc; ;} break; - case 921: -#line 6284 "gram.y" + case 941: +#line 6581 "gram.y" { CommentStmt *n = makeNode(CommentStmt); n->objtype = OBJECT_DOMAIN; @@ -33459,8 +34997,8 @@ YYLTYPE yylloc; ;} break; - case 922: -#line 6292 "gram.y" + case 942: +#line 6589 "gram.y" { CommentStmt *n = makeNode(CommentStmt); n->objtype = OBJECT_AGGREGATE; @@ -33470,8 +35008,8 @@ YYLTYPE yylloc; ;} break; - case 923: -#line 6300 "gram.y" + case 943: +#line 6597 "gram.y" { CommentStmt *n = makeNode(CommentStmt); n->objtype = OBJECT_FUNCTION; @@ -33481,8 +35019,8 @@ YYLTYPE yylloc; ;} break; - case 924: -#line 6308 "gram.y" + case 944: +#line 6605 "gram.y" { CommentStmt *n = makeNode(CommentStmt); n->objtype = OBJECT_OPERATOR; @@ -33492,8 +35030,8 @@ YYLTYPE yylloc; ;} break; - case 925: -#line 6316 "gram.y" + case 945: +#line 6613 "gram.y" { CommentStmt *n = makeNode(CommentStmt); n->objtype = OBJECT_TABCONSTRAINT; @@ -33503,8 +35041,8 @@ YYLTYPE yylloc; ;} break; - case 926: -#line 6324 "gram.y" + case 946: +#line 6621 "gram.y" { CommentStmt *n = makeNode(CommentStmt); n->objtype = OBJECT_DOMCONSTRAINT; @@ -33519,19 +35057,41 @@ YYLTYPE yylloc; ;} break; - case 927: -#line 6337 "gram.y" + case 947: +#line 6634 "gram.y" + { + CommentStmt *n = makeNode(CommentStmt); + n->objtype = OBJECT_POLICY; + n->object = (Node *) lappend((yyvsp[(6) - (8)].list), makeString((yyvsp[(4) - (8)].str))); + n->comment = (yyvsp[(8) - (8)].str); + (yyval.node) = (Node *) n; + ;} + break; + + case 948: +#line 6642 "gram.y" + { + CommentStmt *n = makeNode(CommentStmt); + n->objtype = OBJECT_PROCEDURE; + n->object = (Node *) (yyvsp[(4) - (6)].objwithargs); + n->comment = (yyvsp[(6) - (6)].str); + (yyval.node) = (Node *) n; + ;} + break; + + case 949: +#line 6650 "gram.y" { CommentStmt *n = makeNode(CommentStmt); - n->objtype = OBJECT_POLICY; - n->object = (Node *) lappend((yyvsp[(6) - (8)].list), makeString((yyvsp[(4) - (8)].str))); - n->comment = (yyvsp[(8) - (8)].str); + n->objtype = OBJECT_ROUTINE; + n->object = (Node *) (yyvsp[(4) - (6)].objwithargs); + n->comment = (yyvsp[(6) - (6)].str); (yyval.node) = (Node *) n; ;} break; - case 928: -#line 6345 "gram.y" + case 950: +#line 6658 "gram.y" { CommentStmt *n = makeNode(CommentStmt); n->objtype = OBJECT_RULE; @@ -33541,8 +35101,8 @@ YYLTYPE yylloc; ;} break; - case 929: -#line 6353 "gram.y" + case 951: +#line 6666 "gram.y" { CommentStmt *n = makeNode(CommentStmt); n->objtype = OBJECT_TRANSFORM; @@ -33552,8 +35112,8 @@ YYLTYPE yylloc; ;} break; - case 930: -#line 6361 "gram.y" + case 952: +#line 6674 "gram.y" { CommentStmt *n = makeNode(CommentStmt); n->objtype = OBJECT_TRIGGER; @@ -33563,8 +35123,8 @@ YYLTYPE yylloc; ;} break; - case 931: -#line 6369 "gram.y" + case 953: +#line 6682 "gram.y" { CommentStmt *n = makeNode(CommentStmt); n->objtype = OBJECT_OPCLASS; @@ -33574,8 +35134,8 @@ YYLTYPE yylloc; ;} break; - case 932: -#line 6377 "gram.y" + case 954: +#line 6690 "gram.y" { CommentStmt *n = makeNode(CommentStmt); n->objtype = OBJECT_OPFAMILY; @@ -33585,8 +35145,8 @@ YYLTYPE yylloc; ;} break; - case 933: -#line 6385 "gram.y" + case 955: +#line 6698 "gram.y" { CommentStmt *n = makeNode(CommentStmt); n->objtype = OBJECT_LARGEOBJECT; @@ -33596,8 +35156,8 @@ YYLTYPE yylloc; ;} break; - case 934: -#line 6393 "gram.y" + case 956: +#line 6706 "gram.y" { CommentStmt *n = makeNode(CommentStmt); n->objtype = OBJECT_CAST; @@ -33607,148 +35167,148 @@ YYLTYPE yylloc; ;} break; - case 935: -#line 6404 "gram.y" + case 957: +#line 6717 "gram.y" { (yyval.objtype) = OBJECT_COLUMN; ;} break; - case 936: -#line 6405 "gram.y" + case 958: +#line 6718 "gram.y" { (yyval.objtype) = OBJECT_INDEX; ;} break; - case 937: -#line 6406 "gram.y" + case 959: +#line 6719 "gram.y" { (yyval.objtype) = OBJECT_SEQUENCE; ;} break; - case 938: -#line 6407 "gram.y" + case 960: +#line 6720 "gram.y" { (yyval.objtype) = OBJECT_STATISTIC_EXT; ;} break; - case 939: -#line 6408 "gram.y" + case 961: +#line 6721 "gram.y" { (yyval.objtype) = OBJECT_TABLE; ;} break; - case 940: -#line 6409 "gram.y" + case 962: +#line 6722 "gram.y" { (yyval.objtype) = OBJECT_VIEW; ;} break; - case 941: -#line 6410 "gram.y" + case 963: +#line 6723 "gram.y" { (yyval.objtype) = OBJECT_MATVIEW; ;} break; - case 942: -#line 6411 "gram.y" + case 964: +#line 6724 "gram.y" { (yyval.objtype) = OBJECT_COLLATION; ;} break; - case 943: -#line 6412 "gram.y" + case 965: +#line 6725 "gram.y" { (yyval.objtype) = OBJECT_CONVERSION; ;} break; - case 944: -#line 6413 "gram.y" + case 966: +#line 6726 "gram.y" { (yyval.objtype) = OBJECT_FOREIGN_TABLE; ;} break; - case 945: -#line 6414 "gram.y" + case 967: +#line 6727 "gram.y" { (yyval.objtype) = OBJECT_TSCONFIGURATION; ;} break; - case 946: -#line 6415 "gram.y" + case 968: +#line 6728 "gram.y" { (yyval.objtype) = OBJECT_TSDICTIONARY; ;} break; - case 947: -#line 6416 "gram.y" + case 969: +#line 6729 "gram.y" { (yyval.objtype) = OBJECT_TSPARSER; ;} break; - case 948: -#line 6417 "gram.y" + case 970: +#line 6730 "gram.y" { (yyval.objtype) = OBJECT_TSTEMPLATE; ;} break; - case 949: -#line 6422 "gram.y" + case 971: +#line 6735 "gram.y" { (yyval.objtype) = OBJECT_ACCESS_METHOD; ;} break; - case 950: -#line 6423 "gram.y" + case 972: +#line 6736 "gram.y" { (yyval.objtype) = OBJECT_DATABASE; ;} break; - case 951: -#line 6424 "gram.y" + case 973: +#line 6737 "gram.y" { (yyval.objtype) = OBJECT_EVENT_TRIGGER; ;} break; - case 952: -#line 6425 "gram.y" + case 974: +#line 6738 "gram.y" { (yyval.objtype) = OBJECT_EXTENSION; ;} break; - case 953: -#line 6426 "gram.y" + case 975: +#line 6739 "gram.y" { (yyval.objtype) = OBJECT_FDW; ;} break; - case 954: -#line 6427 "gram.y" + case 976: +#line 6740 "gram.y" { (yyval.objtype) = OBJECT_LANGUAGE; ;} break; - case 955: -#line 6428 "gram.y" + case 977: +#line 6741 "gram.y" { (yyval.objtype) = OBJECT_PUBLICATION; ;} break; - case 956: -#line 6429 "gram.y" + case 978: +#line 6742 "gram.y" { (yyval.objtype) = OBJECT_ROLE; ;} break; - case 957: -#line 6430 "gram.y" + case 979: +#line 6743 "gram.y" { (yyval.objtype) = OBJECT_SCHEMA; ;} break; - case 958: -#line 6431 "gram.y" + case 980: +#line 6744 "gram.y" { (yyval.objtype) = OBJECT_FOREIGN_SERVER; ;} break; - case 959: -#line 6432 "gram.y" + case 981: +#line 6745 "gram.y" { (yyval.objtype) = OBJECT_SUBSCRIPTION; ;} break; - case 960: -#line 6433 "gram.y" + case 982: +#line 6746 "gram.y" { (yyval.objtype) = OBJECT_TABLESPACE; ;} break; - case 961: -#line 6437 "gram.y" + case 983: +#line 6750 "gram.y" { (yyval.str) = (yyvsp[(1) - (1)].str); ;} break; - case 962: -#line 6438 "gram.y" + case 984: +#line 6751 "gram.y" { (yyval.str) = NULL; ;} break; - case 963: -#line 6454 "gram.y" + case 985: +#line 6767 "gram.y" { SecLabelStmt *n = makeNode(SecLabelStmt); n->provider = (yyvsp[(3) - (8)].str); @@ -33759,8 +35319,8 @@ YYLTYPE yylloc; ;} break; - case 964: -#line 6464 "gram.y" + case 986: +#line 6777 "gram.y" { SecLabelStmt *n = makeNode(SecLabelStmt); n->provider = (yyvsp[(3) - (8)].str); @@ -33771,8 +35331,8 @@ YYLTYPE yylloc; ;} break; - case 965: -#line 6474 "gram.y" + case 987: +#line 6787 "gram.y" { SecLabelStmt *n = makeNode(SecLabelStmt); n->provider = (yyvsp[(3) - (8)].str); @@ -33783,8 +35343,8 @@ YYLTYPE yylloc; ;} break; - case 966: -#line 6484 "gram.y" + case 988: +#line 6797 "gram.y" { SecLabelStmt *n = makeNode(SecLabelStmt); n->provider = (yyvsp[(3) - (8)].str); @@ -33795,8 +35355,8 @@ YYLTYPE yylloc; ;} break; - case 967: -#line 6494 "gram.y" + case 989: +#line 6807 "gram.y" { SecLabelStmt *n = makeNode(SecLabelStmt); n->provider = (yyvsp[(3) - (8)].str); @@ -33807,8 +35367,8 @@ YYLTYPE yylloc; ;} break; - case 968: -#line 6504 "gram.y" + case 990: +#line 6817 "gram.y" { SecLabelStmt *n = makeNode(SecLabelStmt); n->provider = (yyvsp[(3) - (8)].str); @@ -33819,8 +35379,8 @@ YYLTYPE yylloc; ;} break; - case 969: -#line 6514 "gram.y" + case 991: +#line 6827 "gram.y" { SecLabelStmt *n = makeNode(SecLabelStmt); n->provider = (yyvsp[(3) - (9)].str); @@ -33831,116 +35391,140 @@ YYLTYPE yylloc; ;} break; - case 970: -#line 6524 "gram.y" + case 992: +#line 6837 "gram.y" + { + SecLabelStmt *n = makeNode(SecLabelStmt); + n->provider = (yyvsp[(3) - (8)].str); + n->objtype = OBJECT_PROCEDURE; + n->object = (Node *) (yyvsp[(6) - (8)].objwithargs); + n->label = (yyvsp[(8) - (8)].str); + (yyval.node) = (Node *) n; + ;} + break; + + case 993: +#line 6847 "gram.y" + { + SecLabelStmt *n = makeNode(SecLabelStmt); + n->provider = (yyvsp[(3) - (8)].str); + n->objtype = OBJECT_ROUTINE; + n->object = (Node *) (yyvsp[(6) - (8)].objwithargs); + n->label = (yyvsp[(8) - (8)].str); + (yyval.node) = (Node *) n; + ;} + break; + + case 994: +#line 6857 "gram.y" { (yyval.str) = (yyvsp[(2) - (2)].str); ;} break; - case 971: -#line 6525 "gram.y" + case 995: +#line 6858 "gram.y" { (yyval.str) = NULL; ;} break; - case 972: -#line 6530 "gram.y" + case 996: +#line 6863 "gram.y" { (yyval.objtype) = OBJECT_COLUMN; ;} break; - case 973: -#line 6531 "gram.y" + case 997: +#line 6864 "gram.y" { (yyval.objtype) = OBJECT_FOREIGN_TABLE; ;} break; - case 974: -#line 6532 "gram.y" + case 998: +#line 6865 "gram.y" { (yyval.objtype) = OBJECT_SEQUENCE; ;} break; - case 975: -#line 6533 "gram.y" + case 999: +#line 6866 "gram.y" { (yyval.objtype) = OBJECT_TABLE; ;} break; - case 976: -#line 6534 "gram.y" + case 1000: +#line 6867 "gram.y" { (yyval.objtype) = OBJECT_VIEW; ;} break; - case 977: -#line 6535 "gram.y" + case 1001: +#line 6868 "gram.y" { (yyval.objtype) = OBJECT_MATVIEW; ;} break; - case 978: -#line 6540 "gram.y" + case 1002: +#line 6873 "gram.y" { (yyval.objtype) = OBJECT_DATABASE; ;} break; - case 979: -#line 6541 "gram.y" + case 1003: +#line 6874 "gram.y" { (yyval.objtype) = OBJECT_EVENT_TRIGGER; ;} break; - case 980: -#line 6542 "gram.y" + case 1004: +#line 6875 "gram.y" { (yyval.objtype) = OBJECT_LANGUAGE; ;} break; - case 981: -#line 6543 "gram.y" + case 1005: +#line 6876 "gram.y" { (yyval.objtype) = OBJECT_PUBLICATION; ;} break; - case 982: -#line 6544 "gram.y" + case 1006: +#line 6877 "gram.y" { (yyval.objtype) = OBJECT_ROLE; ;} break; - case 983: -#line 6545 "gram.y" + case 1007: +#line 6878 "gram.y" { (yyval.objtype) = OBJECT_SCHEMA; ;} break; - case 984: -#line 6546 "gram.y" + case 1008: +#line 6879 "gram.y" { (yyval.objtype) = OBJECT_SUBSCRIPTION; ;} break; - case 985: -#line 6547 "gram.y" + case 1009: +#line 6880 "gram.y" { (yyval.objtype) = OBJECT_TABLESPACE; ;} break; - case 986: -#line 6550 "gram.y" + case 1010: +#line 6883 "gram.y" { (yyval.str) = (yyvsp[(1) - (1)].str); ;} break; - case 987: -#line 6551 "gram.y" + case 1011: +#line 6884 "gram.y" { (yyval.str) = NULL; ;} break; - case 988: -#line 6562 "gram.y" + case 1012: +#line 6895 "gram.y" { FetchStmt *n = (FetchStmt *) (yyvsp[(2) - (2)].node); - n->ismove = FALSE; + n->ismove = false; (yyval.node) = (Node *)n; ;} break; - case 989: -#line 6568 "gram.y" + case 1013: +#line 6901 "gram.y" { FetchStmt *n = (FetchStmt *) (yyvsp[(2) - (2)].node); - n->ismove = TRUE; + n->ismove = true; (yyval.node) = (Node *)n; ;} break; - case 990: -#line 6576 "gram.y" + case 1014: +#line 6909 "gram.y" { FetchStmt *n = makeNode(FetchStmt); n->portalname = (yyvsp[(1) - (1)].str); @@ -33950,8 +35534,8 @@ YYLTYPE yylloc; ;} break; - case 991: -#line 6584 "gram.y" + case 1015: +#line 6917 "gram.y" { FetchStmt *n = makeNode(FetchStmt); n->portalname = (yyvsp[(2) - (2)].str); @@ -33961,8 +35545,8 @@ YYLTYPE yylloc; ;} break; - case 992: -#line 6592 "gram.y" + case 1016: +#line 6925 "gram.y" { FetchStmt *n = makeNode(FetchStmt); n->portalname = (yyvsp[(3) - (3)].str); @@ -33972,8 +35556,8 @@ YYLTYPE yylloc; ;} break; - case 993: -#line 6600 "gram.y" + case 1017: +#line 6933 "gram.y" { FetchStmt *n = makeNode(FetchStmt); n->portalname = (yyvsp[(3) - (3)].str); @@ -33983,8 +35567,8 @@ YYLTYPE yylloc; ;} break; - case 994: -#line 6608 "gram.y" + case 1018: +#line 6941 "gram.y" { FetchStmt *n = makeNode(FetchStmt); n->portalname = (yyvsp[(3) - (3)].str); @@ -33994,8 +35578,8 @@ YYLTYPE yylloc; ;} break; - case 995: -#line 6616 "gram.y" + case 1019: +#line 6949 "gram.y" { FetchStmt *n = makeNode(FetchStmt); n->portalname = (yyvsp[(3) - (3)].str); @@ -34005,8 +35589,8 @@ YYLTYPE yylloc; ;} break; - case 996: -#line 6624 "gram.y" + case 1020: +#line 6957 "gram.y" { FetchStmt *n = makeNode(FetchStmt); n->portalname = (yyvsp[(4) - (4)].str); @@ -34016,8 +35600,8 @@ YYLTYPE yylloc; ;} break; - case 997: -#line 6632 "gram.y" + case 1021: +#line 6965 "gram.y" { FetchStmt *n = makeNode(FetchStmt); n->portalname = (yyvsp[(4) - (4)].str); @@ -34027,8 +35611,8 @@ YYLTYPE yylloc; ;} break; - case 998: -#line 6640 "gram.y" + case 1022: +#line 6973 "gram.y" { FetchStmt *n = makeNode(FetchStmt); n->portalname = (yyvsp[(3) - (3)].str); @@ -34038,8 +35622,8 @@ YYLTYPE yylloc; ;} break; - case 999: -#line 6648 "gram.y" + case 1023: +#line 6981 "gram.y" { FetchStmt *n = makeNode(FetchStmt); n->portalname = (yyvsp[(3) - (3)].str); @@ -34049,8 +35633,8 @@ YYLTYPE yylloc; ;} break; - case 1000: -#line 6656 "gram.y" + case 1024: +#line 6989 "gram.y" { FetchStmt *n = makeNode(FetchStmt); n->portalname = (yyvsp[(3) - (3)].str); @@ -34060,8 +35644,8 @@ YYLTYPE yylloc; ;} break; - case 1001: -#line 6664 "gram.y" + case 1025: +#line 6997 "gram.y" { FetchStmt *n = makeNode(FetchStmt); n->portalname = (yyvsp[(4) - (4)].str); @@ -34071,8 +35655,8 @@ YYLTYPE yylloc; ;} break; - case 1002: -#line 6672 "gram.y" + case 1026: +#line 7005 "gram.y" { FetchStmt *n = makeNode(FetchStmt); n->portalname = (yyvsp[(4) - (4)].str); @@ -34082,8 +35666,8 @@ YYLTYPE yylloc; ;} break; - case 1003: -#line 6680 "gram.y" + case 1027: +#line 7013 "gram.y" { FetchStmt *n = makeNode(FetchStmt); n->portalname = (yyvsp[(3) - (3)].str); @@ -34093,8 +35677,8 @@ YYLTYPE yylloc; ;} break; - case 1004: -#line 6688 "gram.y" + case 1028: +#line 7021 "gram.y" { FetchStmt *n = makeNode(FetchStmt); n->portalname = (yyvsp[(4) - (4)].str); @@ -34104,8 +35688,8 @@ YYLTYPE yylloc; ;} break; - case 1005: -#line 6696 "gram.y" + case 1029: +#line 7029 "gram.y" { FetchStmt *n = makeNode(FetchStmt); n->portalname = (yyvsp[(4) - (4)].str); @@ -34115,28 +35699,28 @@ YYLTYPE yylloc; ;} break; - case 1006: -#line 6705 "gram.y" + case 1030: +#line 7038 "gram.y" {;} break; - case 1007: -#line 6706 "gram.y" + case 1031: +#line 7039 "gram.y" {;} break; - case 1008: -#line 6709 "gram.y" + case 1032: +#line 7042 "gram.y" {;} break; - case 1009: -#line 6710 "gram.y" + case 1033: +#line 7043 "gram.y" {;} break; - case 1010: -#line 6722 "gram.y" + case 1034: +#line 7055 "gram.y" { GrantStmt *n = makeNode(GrantStmt); n->is_grant = true; @@ -34150,8 +35734,8 @@ YYLTYPE yylloc; ;} break; - case 1011: -#line 6738 "gram.y" + case 1035: +#line 7071 "gram.y" { GrantStmt *n = makeNode(GrantStmt); n->is_grant = false; @@ -34166,8 +35750,8 @@ YYLTYPE yylloc; ;} break; - case 1012: -#line 6752 "gram.y" + case 1036: +#line 7085 "gram.y" { GrantStmt *n = makeNode(GrantStmt); n->is_grant = false; @@ -34182,23 +35766,23 @@ YYLTYPE yylloc; ;} break; - case 1013: -#line 6777 "gram.y" + case 1037: +#line 7110 "gram.y" { (yyval.list) = (yyvsp[(1) - (1)].list); ;} break; - case 1014: -#line 6779 "gram.y" + case 1038: +#line 7112 "gram.y" { (yyval.list) = NIL; ;} break; - case 1015: -#line 6781 "gram.y" + case 1039: +#line 7114 "gram.y" { (yyval.list) = NIL; ;} break; - case 1016: -#line 6783 "gram.y" + case 1040: +#line 7116 "gram.y" { AccessPriv *n = makeNode(AccessPriv); n->priv_name = NULL; @@ -34207,8 +35791,8 @@ YYLTYPE yylloc; ;} break; - case 1017: -#line 6790 "gram.y" + case 1041: +#line 7123 "gram.y" { AccessPriv *n = makeNode(AccessPriv); n->priv_name = NULL; @@ -34217,18 +35801,18 @@ YYLTYPE yylloc; ;} break; - case 1018: -#line 6798 "gram.y" + case 1042: +#line 7131 "gram.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].accesspriv)); ;} break; - case 1019: -#line 6799 "gram.y" + case 1043: +#line 7132 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].accesspriv)); ;} break; - case 1020: -#line 6803 "gram.y" + case 1044: +#line 7136 "gram.y" { AccessPriv *n = makeNode(AccessPriv); n->priv_name = pstrdup((yyvsp[(1) - (2)].keyword)); @@ -34237,8 +35821,8 @@ YYLTYPE yylloc; ;} break; - case 1021: -#line 6810 "gram.y" + case 1045: +#line 7143 "gram.y" { AccessPriv *n = makeNode(AccessPriv); n->priv_name = pstrdup((yyvsp[(1) - (2)].keyword)); @@ -34247,8 +35831,8 @@ YYLTYPE yylloc; ;} break; - case 1022: -#line 6817 "gram.y" + case 1046: +#line 7150 "gram.y" { AccessPriv *n = makeNode(AccessPriv); n->priv_name = pstrdup((yyvsp[(1) - (2)].keyword)); @@ -34257,8 +35841,8 @@ YYLTYPE yylloc; ;} break; - case 1023: -#line 6824 "gram.y" + case 1047: +#line 7157 "gram.y" { AccessPriv *n = makeNode(AccessPriv); n->priv_name = (yyvsp[(1) - (2)].str); @@ -34267,214 +35851,258 @@ YYLTYPE yylloc; ;} break; - case 1024: -#line 6838 "gram.y" + case 1048: +#line 7171 "gram.y" + { + PrivTarget *n = (PrivTarget *) palloc(sizeof(PrivTarget)); + n->targtype = ACL_TARGET_OBJECT; + n->objtype = OBJECT_TABLE; + n->objs = (yyvsp[(1) - (1)].list); + (yyval.privtarget) = n; + ;} + break; + + case 1049: +#line 7179 "gram.y" + { + PrivTarget *n = (PrivTarget *) palloc(sizeof(PrivTarget)); + n->targtype = ACL_TARGET_OBJECT; + n->objtype = OBJECT_TABLE; + n->objs = (yyvsp[(2) - (2)].list); + (yyval.privtarget) = n; + ;} + break; + + case 1050: +#line 7187 "gram.y" { PrivTarget *n = (PrivTarget *) palloc(sizeof(PrivTarget)); n->targtype = ACL_TARGET_OBJECT; - n->objtype = ACL_OBJECT_RELATION; - n->objs = (yyvsp[(1) - (1)].list); + n->objtype = OBJECT_SEQUENCE; + n->objs = (yyvsp[(2) - (2)].list); (yyval.privtarget) = n; ;} break; - case 1025: -#line 6846 "gram.y" + case 1051: +#line 7195 "gram.y" { PrivTarget *n = (PrivTarget *) palloc(sizeof(PrivTarget)); n->targtype = ACL_TARGET_OBJECT; - n->objtype = ACL_OBJECT_RELATION; - n->objs = (yyvsp[(2) - (2)].list); + n->objtype = OBJECT_FDW; + n->objs = (yyvsp[(4) - (4)].list); (yyval.privtarget) = n; ;} break; - case 1026: -#line 6854 "gram.y" + case 1052: +#line 7203 "gram.y" { PrivTarget *n = (PrivTarget *) palloc(sizeof(PrivTarget)); n->targtype = ACL_TARGET_OBJECT; - n->objtype = ACL_OBJECT_SEQUENCE; - n->objs = (yyvsp[(2) - (2)].list); + n->objtype = OBJECT_FOREIGN_SERVER; + n->objs = (yyvsp[(3) - (3)].list); (yyval.privtarget) = n; ;} break; - case 1027: -#line 6862 "gram.y" + case 1053: +#line 7211 "gram.y" { PrivTarget *n = (PrivTarget *) palloc(sizeof(PrivTarget)); n->targtype = ACL_TARGET_OBJECT; - n->objtype = ACL_OBJECT_FDW; - n->objs = (yyvsp[(4) - (4)].list); + n->objtype = OBJECT_FUNCTION; + n->objs = (yyvsp[(2) - (2)].list); (yyval.privtarget) = n; ;} break; - case 1028: -#line 6870 "gram.y" + case 1054: +#line 7219 "gram.y" { PrivTarget *n = (PrivTarget *) palloc(sizeof(PrivTarget)); n->targtype = ACL_TARGET_OBJECT; - n->objtype = ACL_OBJECT_FOREIGN_SERVER; - n->objs = (yyvsp[(3) - (3)].list); + n->objtype = OBJECT_PROCEDURE; + n->objs = (yyvsp[(2) - (2)].list); (yyval.privtarget) = n; ;} break; - case 1029: -#line 6878 "gram.y" + case 1055: +#line 7227 "gram.y" { PrivTarget *n = (PrivTarget *) palloc(sizeof(PrivTarget)); n->targtype = ACL_TARGET_OBJECT; - n->objtype = ACL_OBJECT_FUNCTION; + n->objtype = OBJECT_ROUTINE; n->objs = (yyvsp[(2) - (2)].list); (yyval.privtarget) = n; ;} break; - case 1030: -#line 6886 "gram.y" + case 1056: +#line 7235 "gram.y" { PrivTarget *n = (PrivTarget *) palloc(sizeof(PrivTarget)); n->targtype = ACL_TARGET_OBJECT; - n->objtype = ACL_OBJECT_DATABASE; + n->objtype = OBJECT_DATABASE; n->objs = (yyvsp[(2) - (2)].list); (yyval.privtarget) = n; ;} break; - case 1031: -#line 6894 "gram.y" + case 1057: +#line 7243 "gram.y" { PrivTarget *n = (PrivTarget *) palloc(sizeof(PrivTarget)); n->targtype = ACL_TARGET_OBJECT; - n->objtype = ACL_OBJECT_DOMAIN; + n->objtype = OBJECT_DOMAIN; n->objs = (yyvsp[(2) - (2)].list); (yyval.privtarget) = n; ;} break; - case 1032: -#line 6902 "gram.y" + case 1058: +#line 7251 "gram.y" { PrivTarget *n = (PrivTarget *) palloc(sizeof(PrivTarget)); n->targtype = ACL_TARGET_OBJECT; - n->objtype = ACL_OBJECT_LANGUAGE; + n->objtype = OBJECT_LANGUAGE; n->objs = (yyvsp[(2) - (2)].list); (yyval.privtarget) = n; ;} break; - case 1033: -#line 6910 "gram.y" + case 1059: +#line 7259 "gram.y" { PrivTarget *n = (PrivTarget *) palloc(sizeof(PrivTarget)); n->targtype = ACL_TARGET_OBJECT; - n->objtype = ACL_OBJECT_LARGEOBJECT; + n->objtype = OBJECT_LARGEOBJECT; n->objs = (yyvsp[(3) - (3)].list); (yyval.privtarget) = n; ;} break; - case 1034: -#line 6918 "gram.y" + case 1060: +#line 7267 "gram.y" { PrivTarget *n = (PrivTarget *) palloc(sizeof(PrivTarget)); n->targtype = ACL_TARGET_OBJECT; - n->objtype = ACL_OBJECT_NAMESPACE; + n->objtype = OBJECT_SCHEMA; n->objs = (yyvsp[(2) - (2)].list); (yyval.privtarget) = n; ;} break; - case 1035: -#line 6926 "gram.y" + case 1061: +#line 7275 "gram.y" { PrivTarget *n = (PrivTarget *) palloc(sizeof(PrivTarget)); n->targtype = ACL_TARGET_OBJECT; - n->objtype = ACL_OBJECT_TABLESPACE; + n->objtype = OBJECT_TABLESPACE; n->objs = (yyvsp[(2) - (2)].list); (yyval.privtarget) = n; ;} break; - case 1036: -#line 6934 "gram.y" + case 1062: +#line 7283 "gram.y" { PrivTarget *n = (PrivTarget *) palloc(sizeof(PrivTarget)); n->targtype = ACL_TARGET_OBJECT; - n->objtype = ACL_OBJECT_TYPE; + n->objtype = OBJECT_TYPE; n->objs = (yyvsp[(2) - (2)].list); (yyval.privtarget) = n; ;} break; - case 1037: -#line 6942 "gram.y" + case 1063: +#line 7291 "gram.y" { PrivTarget *n = (PrivTarget *) palloc(sizeof(PrivTarget)); n->targtype = ACL_TARGET_ALL_IN_SCHEMA; - n->objtype = ACL_OBJECT_RELATION; + n->objtype = OBJECT_TABLE; n->objs = (yyvsp[(5) - (5)].list); (yyval.privtarget) = n; ;} break; - case 1038: -#line 6950 "gram.y" + case 1064: +#line 7299 "gram.y" { PrivTarget *n = (PrivTarget *) palloc(sizeof(PrivTarget)); n->targtype = ACL_TARGET_ALL_IN_SCHEMA; - n->objtype = ACL_OBJECT_SEQUENCE; + n->objtype = OBJECT_SEQUENCE; n->objs = (yyvsp[(5) - (5)].list); (yyval.privtarget) = n; ;} break; - case 1039: -#line 6958 "gram.y" + case 1065: +#line 7307 "gram.y" { PrivTarget *n = (PrivTarget *) palloc(sizeof(PrivTarget)); n->targtype = ACL_TARGET_ALL_IN_SCHEMA; - n->objtype = ACL_OBJECT_FUNCTION; + n->objtype = OBJECT_FUNCTION; n->objs = (yyvsp[(5) - (5)].list); (yyval.privtarget) = n; ;} break; - case 1040: -#line 6969 "gram.y" + case 1066: +#line 7315 "gram.y" + { + PrivTarget *n = (PrivTarget *) palloc(sizeof(PrivTarget)); + n->targtype = ACL_TARGET_ALL_IN_SCHEMA; + n->objtype = OBJECT_PROCEDURE; + n->objs = (yyvsp[(5) - (5)].list); + (yyval.privtarget) = n; + ;} + break; + + case 1067: +#line 7323 "gram.y" + { + PrivTarget *n = (PrivTarget *) palloc(sizeof(PrivTarget)); + n->targtype = ACL_TARGET_ALL_IN_SCHEMA; + n->objtype = OBJECT_ROUTINE; + n->objs = (yyvsp[(5) - (5)].list); + (yyval.privtarget) = n; + ;} + break; + + case 1068: +#line 7334 "gram.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].rolespec)); ;} break; - case 1041: -#line 6970 "gram.y" + case 1069: +#line 7335 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].rolespec)); ;} break; - case 1042: -#line 6974 "gram.y" + case 1070: +#line 7339 "gram.y" { (yyval.rolespec) = (yyvsp[(1) - (1)].rolespec); ;} break; - case 1043: -#line 6975 "gram.y" + case 1071: +#line 7340 "gram.y" { (yyval.rolespec) = (yyvsp[(2) - (2)].rolespec); ;} break; - case 1044: -#line 6980 "gram.y" - { (yyval.boolean) = TRUE; ;} + case 1072: +#line 7345 "gram.y" + { (yyval.boolean) = true; ;} break; - case 1045: -#line 6981 "gram.y" - { (yyval.boolean) = FALSE; ;} + case 1073: +#line 7346 "gram.y" + { (yyval.boolean) = false; ;} break; - case 1046: -#line 6992 "gram.y" + case 1074: +#line 7357 "gram.y" { GrantRoleStmt *n = makeNode(GrantRoleStmt); n->is_grant = true; @@ -34486,8 +36114,8 @@ YYLTYPE yylloc; ;} break; - case 1047: -#line 7005 "gram.y" + case 1075: +#line 7370 "gram.y" { GrantRoleStmt *n = makeNode(GrantRoleStmt); n->is_grant = false; @@ -34499,8 +36127,8 @@ YYLTYPE yylloc; ;} break; - case 1048: -#line 7015 "gram.y" + case 1076: +#line 7380 "gram.y" { GrantRoleStmt *n = makeNode(GrantRoleStmt); n->is_grant = false; @@ -34512,28 +36140,28 @@ YYLTYPE yylloc; ;} break; - case 1049: -#line 7026 "gram.y" - { (yyval.boolean) = TRUE; ;} + case 1077: +#line 7391 "gram.y" + { (yyval.boolean) = true; ;} break; - case 1050: -#line 7027 "gram.y" - { (yyval.boolean) = FALSE; ;} + case 1078: +#line 7392 "gram.y" + { (yyval.boolean) = false; ;} break; - case 1051: -#line 7030 "gram.y" + case 1079: +#line 7395 "gram.y" { (yyval.rolespec) = (yyvsp[(3) - (3)].rolespec); ;} break; - case 1052: -#line 7031 "gram.y" + case 1080: +#line 7396 "gram.y" { (yyval.rolespec) = NULL; ;} break; - case 1053: -#line 7042 "gram.y" + case 1081: +#line 7407 "gram.y" { AlterDefaultPrivilegesStmt *n = makeNode(AlterDefaultPrivilegesStmt); n->options = (yyvsp[(4) - (5)].list); @@ -34542,39 +36170,39 @@ YYLTYPE yylloc; ;} break; - case 1054: -#line 7051 "gram.y" + case 1082: +#line 7416 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (2)].list), (yyvsp[(2) - (2)].defelt)); ;} break; - case 1055: -#line 7052 "gram.y" + case 1083: +#line 7417 "gram.y" { (yyval.list) = NIL; ;} break; - case 1056: -#line 7057 "gram.y" + case 1084: +#line 7422 "gram.y" { (yyval.defelt) = makeDefElem("schemas", (Node *)(yyvsp[(3) - (3)].list), (yylsp[(1) - (3)])); ;} break; - case 1057: -#line 7061 "gram.y" + case 1085: +#line 7426 "gram.y" { (yyval.defelt) = makeDefElem("roles", (Node *)(yyvsp[(3) - (3)].list), (yylsp[(1) - (3)])); ;} break; - case 1058: -#line 7065 "gram.y" + case 1086: +#line 7430 "gram.y" { (yyval.defelt) = makeDefElem("roles", (Node *)(yyvsp[(3) - (3)].list), (yylsp[(1) - (3)])); ;} break; - case 1059: -#line 7077 "gram.y" + case 1087: +#line 7442 "gram.y" { GrantStmt *n = makeNode(GrantStmt); n->is_grant = true; @@ -34588,8 +36216,8 @@ YYLTYPE yylloc; ;} break; - case 1060: -#line 7090 "gram.y" + case 1088: +#line 7455 "gram.y" { GrantStmt *n = makeNode(GrantStmt); n->is_grant = false; @@ -34604,8 +36232,8 @@ YYLTYPE yylloc; ;} break; - case 1061: -#line 7104 "gram.y" + case 1089: +#line 7469 "gram.y" { GrantStmt *n = makeNode(GrantStmt); n->is_grant = false; @@ -34620,312 +36248,371 @@ YYLTYPE yylloc; ;} break; - case 1062: -#line 7119 "gram.y" - { (yyval.ival) = ACL_OBJECT_RELATION; ;} + case 1090: +#line 7484 "gram.y" + { (yyval.ival) = OBJECT_TABLE; ;} break; - case 1063: -#line 7120 "gram.y" - { (yyval.ival) = ACL_OBJECT_FUNCTION; ;} + case 1091: +#line 7485 "gram.y" + { (yyval.ival) = OBJECT_FUNCTION; ;} break; - case 1064: -#line 7121 "gram.y" - { (yyval.ival) = ACL_OBJECT_SEQUENCE; ;} + case 1092: +#line 7486 "gram.y" + { (yyval.ival) = OBJECT_FUNCTION; ;} break; - case 1065: -#line 7122 "gram.y" - { (yyval.ival) = ACL_OBJECT_TYPE; ;} + case 1093: +#line 7487 "gram.y" + { (yyval.ival) = OBJECT_SEQUENCE; ;} break; - case 1066: -#line 7123 "gram.y" - { (yyval.ival) = ACL_OBJECT_NAMESPACE; ;} + case 1094: +#line 7488 "gram.y" + { (yyval.ival) = OBJECT_TYPE; ;} break; - case 1067: -#line 7138 "gram.y" + case 1095: +#line 7489 "gram.y" + { (yyval.ival) = OBJECT_SCHEMA; ;} + break; + + case 1096: +#line 7504 "gram.y" { IndexStmt *n = makeNode(IndexStmt); - n->unique = (yyvsp[(2) - (14)].boolean); - n->concurrent = (yyvsp[(4) - (14)].boolean); - n->idxname = (yyvsp[(5) - (14)].str); - n->relation = (yyvsp[(7) - (14)].range); - n->accessMethod = (yyvsp[(8) - (14)].str); - n->indexParams = (yyvsp[(10) - (14)].list); - n->options = (yyvsp[(12) - (14)].list); - n->tableSpace = (yyvsp[(13) - (14)].str); - n->whereClause = (yyvsp[(14) - (14)].node); + n->unique = (yyvsp[(2) - (15)].boolean); + n->concurrent = (yyvsp[(4) - (15)].boolean); + n->idxname = (yyvsp[(5) - (15)].str); + n->relation = (yyvsp[(7) - (15)].range); + n->accessMethod = (yyvsp[(8) - (15)].str); + n->indexParams = (yyvsp[(10) - (15)].list); + n->indexIncludingParams = (yyvsp[(12) - (15)].list); + n->options = (yyvsp[(13) - (15)].list); + n->tableSpace = (yyvsp[(14) - (15)].str); + n->whereClause = (yyvsp[(15) - (15)].node); n->excludeOpNames = NIL; n->idxcomment = NULL; n->indexOid = InvalidOid; n->oldNode = InvalidOid; + n->oldCreateSubid = InvalidSubTransactionId; + n->oldFirstRelfilenodeSubid = InvalidSubTransactionId; n->primary = false; n->isconstraint = false; n->deferrable = false; n->initdeferred = false; n->transformed = false; n->if_not_exists = false; + n->reset_default_tblspc = false; (yyval.node) = (Node *)n; ;} break; - case 1068: -#line 7164 "gram.y" + case 1097: +#line 7534 "gram.y" { IndexStmt *n = makeNode(IndexStmt); - n->unique = (yyvsp[(2) - (17)].boolean); - n->concurrent = (yyvsp[(4) - (17)].boolean); - n->idxname = (yyvsp[(8) - (17)].str); - n->relation = (yyvsp[(10) - (17)].range); - n->accessMethod = (yyvsp[(11) - (17)].str); - n->indexParams = (yyvsp[(13) - (17)].list); - n->options = (yyvsp[(15) - (17)].list); - n->tableSpace = (yyvsp[(16) - (17)].str); - n->whereClause = (yyvsp[(17) - (17)].node); + n->unique = (yyvsp[(2) - (18)].boolean); + n->concurrent = (yyvsp[(4) - (18)].boolean); + n->idxname = (yyvsp[(8) - (18)].str); + n->relation = (yyvsp[(10) - (18)].range); + n->accessMethod = (yyvsp[(11) - (18)].str); + n->indexParams = (yyvsp[(13) - (18)].list); + n->indexIncludingParams = (yyvsp[(15) - (18)].list); + n->options = (yyvsp[(16) - (18)].list); + n->tableSpace = (yyvsp[(17) - (18)].str); + n->whereClause = (yyvsp[(18) - (18)].node); n->excludeOpNames = NIL; n->idxcomment = NULL; n->indexOid = InvalidOid; n->oldNode = InvalidOid; + n->oldCreateSubid = InvalidSubTransactionId; + n->oldFirstRelfilenodeSubid = InvalidSubTransactionId; n->primary = false; n->isconstraint = false; n->deferrable = false; n->initdeferred = false; n->transformed = false; n->if_not_exists = true; + n->reset_default_tblspc = false; (yyval.node) = (Node *)n; ;} break; - case 1069: -#line 7190 "gram.y" - { (yyval.boolean) = TRUE; ;} + case 1098: +#line 7564 "gram.y" + { (yyval.boolean) = true; ;} break; - case 1070: -#line 7191 "gram.y" - { (yyval.boolean) = FALSE; ;} + case 1099: +#line 7565 "gram.y" + { (yyval.boolean) = false; ;} break; - case 1071: -#line 7195 "gram.y" - { (yyval.boolean) = TRUE; ;} + case 1100: +#line 7569 "gram.y" + { (yyval.boolean) = true; ;} break; - case 1072: -#line 7196 "gram.y" - { (yyval.boolean) = FALSE; ;} + case 1101: +#line 7570 "gram.y" + { (yyval.boolean) = false; ;} break; - case 1073: -#line 7200 "gram.y" + case 1102: +#line 7574 "gram.y" { (yyval.str) = (yyvsp[(1) - (1)].str); ;} break; - case 1074: -#line 7201 "gram.y" + case 1103: +#line 7575 "gram.y" { (yyval.str) = NULL; ;} break; - case 1075: -#line 7205 "gram.y" + case 1104: +#line 7579 "gram.y" { (yyval.str) = (yyvsp[(2) - (2)].str); ;} break; - case 1076: -#line 7206 "gram.y" + case 1105: +#line 7580 "gram.y" { (yyval.str) = DEFAULT_INDEX_TYPE; ;} break; - case 1077: -#line 7209 "gram.y" + case 1106: +#line 7583 "gram.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].ielem)); ;} break; - case 1078: -#line 7210 "gram.y" + case 1107: +#line 7584 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].ielem)); ;} break; - case 1079: -#line 7219 "gram.y" + case 1108: +#line 7590 "gram.y" { - (yyval.ielem) = makeNode(IndexElem); - (yyval.ielem)->name = (yyvsp[(1) - (5)].str); - (yyval.ielem)->expr = NULL; - (yyval.ielem)->indexcolname = NULL; - (yyval.ielem)->collation = (yyvsp[(2) - (5)].list); - (yyval.ielem)->opclass = (yyvsp[(3) - (5)].list); - (yyval.ielem)->ordering = (yyvsp[(4) - (5)].ival); - (yyval.ielem)->nulls_ordering = (yyvsp[(5) - (5)].ival); + (yyval.ielem) = makeNode(IndexElem); + (yyval.ielem)->name = NULL; + (yyval.ielem)->expr = NULL; + (yyval.ielem)->indexcolname = NULL; + (yyval.ielem)->collation = (yyvsp[(1) - (4)].list); + (yyval.ielem)->opclass = (yyvsp[(2) - (4)].list); + (yyval.ielem)->opclassopts = NIL; + (yyval.ielem)->ordering = (yyvsp[(3) - (4)].ival); + (yyval.ielem)->nulls_ordering = (yyvsp[(4) - (4)].ival); + ;} + break; + + case 1109: +#line 7602 "gram.y" + { + (yyval.ielem) = makeNode(IndexElem); + (yyval.ielem)->name = NULL; + (yyval.ielem)->expr = NULL; + (yyval.ielem)->indexcolname = NULL; + (yyval.ielem)->collation = (yyvsp[(1) - (5)].list); + (yyval.ielem)->opclass = (yyvsp[(2) - (5)].list); + (yyval.ielem)->opclassopts = (yyvsp[(3) - (5)].list); + (yyval.ielem)->ordering = (yyvsp[(4) - (5)].ival); + (yyval.ielem)->nulls_ordering = (yyvsp[(5) - (5)].ival); + ;} + break; + + case 1110: +#line 7621 "gram.y" + { + (yyval.ielem) = (yyvsp[(2) - (2)].ielem); + (yyval.ielem)->name = (yyvsp[(1) - (2)].str); ;} break; - case 1080: -#line 7230 "gram.y" + case 1111: +#line 7626 "gram.y" { - (yyval.ielem) = makeNode(IndexElem); - (yyval.ielem)->name = NULL; - (yyval.ielem)->expr = (yyvsp[(1) - (5)].node); - (yyval.ielem)->indexcolname = NULL; - (yyval.ielem)->collation = (yyvsp[(2) - (5)].list); - (yyval.ielem)->opclass = (yyvsp[(3) - (5)].list); - (yyval.ielem)->ordering = (yyvsp[(4) - (5)].ival); - (yyval.ielem)->nulls_ordering = (yyvsp[(5) - (5)].ival); + (yyval.ielem) = (yyvsp[(2) - (2)].ielem); + (yyval.ielem)->expr = (yyvsp[(1) - (2)].node); ;} break; - case 1081: -#line 7241 "gram.y" + case 1112: +#line 7631 "gram.y" { - (yyval.ielem) = makeNode(IndexElem); - (yyval.ielem)->name = NULL; - (yyval.ielem)->expr = (yyvsp[(2) - (7)].node); - (yyval.ielem)->indexcolname = NULL; - (yyval.ielem)->collation = (yyvsp[(4) - (7)].list); - (yyval.ielem)->opclass = (yyvsp[(5) - (7)].list); - (yyval.ielem)->ordering = (yyvsp[(6) - (7)].ival); - (yyval.ielem)->nulls_ordering = (yyvsp[(7) - (7)].ival); + (yyval.ielem) = (yyvsp[(4) - (4)].ielem); + (yyval.ielem)->expr = (yyvsp[(2) - (4)].node); ;} break; - case 1082: -#line 7253 "gram.y" + case 1113: +#line 7637 "gram.y" + { (yyval.list) = (yyvsp[(3) - (4)].list); ;} + break; + + case 1114: +#line 7638 "gram.y" + { (yyval.list) = NIL; ;} + break; + + case 1115: +#line 7641 "gram.y" + { (yyval.list) = list_make1((yyvsp[(1) - (1)].ielem)); ;} + break; + + case 1116: +#line 7642 "gram.y" + { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].ielem)); ;} + break; + + case 1117: +#line 7645 "gram.y" { (yyval.list) = (yyvsp[(2) - (2)].list); ;} break; - case 1083: -#line 7254 "gram.y" + case 1118: +#line 7646 "gram.y" { (yyval.list) = NIL; ;} break; - case 1084: -#line 7257 "gram.y" + case 1119: +#line 7649 "gram.y" { (yyval.list) = (yyvsp[(1) - (1)].list); ;} break; - case 1085: -#line 7258 "gram.y" + case 1120: +#line 7650 "gram.y" { (yyval.list) = NIL; ;} break; - case 1086: -#line 7261 "gram.y" + case 1121: +#line 7653 "gram.y" { (yyval.ival) = SORTBY_ASC; ;} break; - case 1087: -#line 7262 "gram.y" + case 1122: +#line 7654 "gram.y" { (yyval.ival) = SORTBY_DESC; ;} break; - case 1088: -#line 7263 "gram.y" + case 1123: +#line 7655 "gram.y" { (yyval.ival) = SORTBY_DEFAULT; ;} break; - case 1089: -#line 7266 "gram.y" + case 1124: +#line 7658 "gram.y" { (yyval.ival) = SORTBY_NULLS_FIRST; ;} break; - case 1090: -#line 7267 "gram.y" + case 1125: +#line 7659 "gram.y" { (yyval.ival) = SORTBY_NULLS_LAST; ;} break; - case 1091: -#line 7268 "gram.y" + case 1126: +#line 7660 "gram.y" { (yyval.ival) = SORTBY_NULLS_DEFAULT; ;} break; - case 1092: -#line 7286 "gram.y" + case 1127: +#line 7678 "gram.y" + { + CreateFunctionStmt *n = makeNode(CreateFunctionStmt); + n->is_procedure = false; + n->replace = (yyvsp[(2) - (8)].boolean); + n->funcname = (yyvsp[(4) - (8)].list); + n->parameters = (yyvsp[(5) - (8)].list); + n->returnType = (yyvsp[(7) - (8)].typnam); + n->options = (yyvsp[(8) - (8)].list); + (yyval.node) = (Node *)n; + ;} + break; + + case 1128: +#line 7690 "gram.y" { CreateFunctionStmt *n = makeNode(CreateFunctionStmt); - n->replace = (yyvsp[(2) - (9)].boolean); - n->funcname = (yyvsp[(4) - (9)].list); - n->parameters = (yyvsp[(5) - (9)].list); - n->returnType = (yyvsp[(7) - (9)].typnam); - n->options = (yyvsp[(8) - (9)].list); - n->withClause = (yyvsp[(9) - (9)].list); + n->is_procedure = false; + n->replace = (yyvsp[(2) - (11)].boolean); + n->funcname = (yyvsp[(4) - (11)].list); + n->parameters = mergeTableFuncParameters((yyvsp[(5) - (11)].list), (yyvsp[(9) - (11)].list)); + n->returnType = TableFuncTypeName((yyvsp[(9) - (11)].list)); + n->returnType->location = (yylsp[(7) - (11)]); + n->options = (yyvsp[(11) - (11)].list); (yyval.node) = (Node *)n; ;} break; - case 1093: -#line 7298 "gram.y" + case 1129: +#line 7703 "gram.y" { CreateFunctionStmt *n = makeNode(CreateFunctionStmt); - n->replace = (yyvsp[(2) - (12)].boolean); - n->funcname = (yyvsp[(4) - (12)].list); - n->parameters = mergeTableFuncParameters((yyvsp[(5) - (12)].list), (yyvsp[(9) - (12)].list)); - n->returnType = TableFuncTypeName((yyvsp[(9) - (12)].list)); - n->returnType->location = (yylsp[(7) - (12)]); - n->options = (yyvsp[(11) - (12)].list); - n->withClause = (yyvsp[(12) - (12)].list); + n->is_procedure = false; + n->replace = (yyvsp[(2) - (6)].boolean); + n->funcname = (yyvsp[(4) - (6)].list); + n->parameters = (yyvsp[(5) - (6)].list); + n->returnType = NULL; + n->options = (yyvsp[(6) - (6)].list); (yyval.node) = (Node *)n; ;} break; - case 1094: -#line 7311 "gram.y" + case 1130: +#line 7715 "gram.y" { CreateFunctionStmt *n = makeNode(CreateFunctionStmt); - n->replace = (yyvsp[(2) - (7)].boolean); - n->funcname = (yyvsp[(4) - (7)].list); - n->parameters = (yyvsp[(5) - (7)].list); + n->is_procedure = true; + n->replace = (yyvsp[(2) - (6)].boolean); + n->funcname = (yyvsp[(4) - (6)].list); + n->parameters = (yyvsp[(5) - (6)].list); n->returnType = NULL; - n->options = (yyvsp[(6) - (7)].list); - n->withClause = (yyvsp[(7) - (7)].list); + n->options = (yyvsp[(6) - (6)].list); (yyval.node) = (Node *)n; ;} break; - case 1095: -#line 7324 "gram.y" - { (yyval.boolean) = TRUE; ;} + case 1131: +#line 7728 "gram.y" + { (yyval.boolean) = true; ;} break; - case 1096: -#line 7325 "gram.y" - { (yyval.boolean) = FALSE; ;} + case 1132: +#line 7729 "gram.y" + { (yyval.boolean) = false; ;} break; - case 1097: -#line 7328 "gram.y" + case 1133: +#line 7732 "gram.y" { (yyval.list) = (yyvsp[(2) - (3)].list); ;} break; - case 1098: -#line 7329 "gram.y" + case 1134: +#line 7733 "gram.y" { (yyval.list) = NIL; ;} break; - case 1099: -#line 7333 "gram.y" + case 1135: +#line 7737 "gram.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].fun_param)); ;} break; - case 1100: -#line 7334 "gram.y" + case 1136: +#line 7738 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].fun_param)); ;} break; - case 1101: -#line 7338 "gram.y" + case 1137: +#line 7742 "gram.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].objwithargs)); ;} break; - case 1102: -#line 7340 "gram.y" + case 1138: +#line 7744 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].objwithargs)); ;} break; - case 1103: -#line 7345 "gram.y" + case 1139: +#line 7749 "gram.y" { ObjectWithArgs *n = makeNode(ObjectWithArgs); n->objname = (yyvsp[(1) - (2)].list); @@ -34934,8 +36621,8 @@ YYLTYPE yylloc; ;} break; - case 1104: -#line 7357 "gram.y" + case 1140: +#line 7761 "gram.y" { ObjectWithArgs *n = makeNode(ObjectWithArgs); n->objname = list_make1(makeString(pstrdup((yyvsp[(1) - (1)].keyword)))); @@ -34944,8 +36631,8 @@ YYLTYPE yylloc; ;} break; - case 1105: -#line 7364 "gram.y" + case 1141: +#line 7768 "gram.y" { ObjectWithArgs *n = makeNode(ObjectWithArgs); n->objname = list_make1(makeString((yyvsp[(1) - (1)].str))); @@ -34954,8 +36641,8 @@ YYLTYPE yylloc; ;} break; - case 1106: -#line 7371 "gram.y" + case 1142: +#line 7775 "gram.y" { ObjectWithArgs *n = makeNode(ObjectWithArgs); n->objname = check_func_name(lcons(makeString((yyvsp[(1) - (2)].str)), (yyvsp[(2) - (2)].list)), @@ -34965,28 +36652,28 @@ YYLTYPE yylloc; ;} break; - case 1107: -#line 7385 "gram.y" + case 1143: +#line 7789 "gram.y" { (yyval.list) = (yyvsp[(2) - (3)].list); ;} break; - case 1108: -#line 7386 "gram.y" + case 1144: +#line 7790 "gram.y" { (yyval.list) = NIL; ;} break; - case 1109: -#line 7390 "gram.y" + case 1145: +#line 7794 "gram.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].fun_param)); ;} break; - case 1110: -#line 7392 "gram.y" + case 1146: +#line 7796 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].fun_param)); ;} break; - case 1111: -#line 7407 "gram.y" + case 1147: +#line 7811 "gram.y" { FunctionParameter *n = makeNode(FunctionParameter); n->name = (yyvsp[(2) - (3)].str); @@ -34997,8 +36684,8 @@ YYLTYPE yylloc; ;} break; - case 1112: -#line 7416 "gram.y" + case 1148: +#line 7820 "gram.y" { FunctionParameter *n = makeNode(FunctionParameter); n->name = (yyvsp[(1) - (3)].str); @@ -35009,8 +36696,8 @@ YYLTYPE yylloc; ;} break; - case 1113: -#line 7425 "gram.y" + case 1149: +#line 7829 "gram.y" { FunctionParameter *n = makeNode(FunctionParameter); n->name = (yyvsp[(1) - (2)].str); @@ -35021,8 +36708,8 @@ YYLTYPE yylloc; ;} break; - case 1114: -#line 7434 "gram.y" + case 1150: +#line 7838 "gram.y" { FunctionParameter *n = makeNode(FunctionParameter); n->name = NULL; @@ -35033,8 +36720,8 @@ YYLTYPE yylloc; ;} break; - case 1115: -#line 7443 "gram.y" + case 1151: +#line 7847 "gram.y" { FunctionParameter *n = makeNode(FunctionParameter); n->name = NULL; @@ -35045,33 +36732,33 @@ YYLTYPE yylloc; ;} break; - case 1116: -#line 7454 "gram.y" + case 1152: +#line 7858 "gram.y" { (yyval.fun_param_mode) = FUNC_PARAM_IN; ;} break; - case 1117: -#line 7455 "gram.y" + case 1153: +#line 7859 "gram.y" { (yyval.fun_param_mode) = FUNC_PARAM_OUT; ;} break; - case 1118: -#line 7456 "gram.y" + case 1154: +#line 7860 "gram.y" { (yyval.fun_param_mode) = FUNC_PARAM_INOUT; ;} break; - case 1119: -#line 7457 "gram.y" + case 1155: +#line 7861 "gram.y" { (yyval.fun_param_mode) = FUNC_PARAM_INOUT; ;} break; - case 1120: -#line 7458 "gram.y" + case 1156: +#line 7862 "gram.y" { (yyval.fun_param_mode) = FUNC_PARAM_VARIADIC; ;} break; - case 1122: -#line 7469 "gram.y" + case 1158: +#line 7873 "gram.y" { /* We can catch over-specified results here if we want to, * but for now better to silently swallow typmod, etc. @@ -35081,13 +36768,13 @@ YYLTYPE yylloc; ;} break; - case 1123: -#line 7483 "gram.y" + case 1159: +#line 7887 "gram.y" { (yyval.typnam) = (yyvsp[(1) - (1)].typnam); ;} break; - case 1124: -#line 7485 "gram.y" + case 1160: +#line 7889 "gram.y" { (yyval.typnam) = makeTypeNameFromNameList(lcons(makeString((yyvsp[(1) - (4)].str)), (yyvsp[(2) - (4)].list))); (yyval.typnam)->pct_type = true; @@ -35095,41 +36782,41 @@ YYLTYPE yylloc; ;} break; - case 1125: -#line 7491 "gram.y" + case 1161: +#line 7895 "gram.y" { (yyval.typnam) = makeTypeNameFromNameList(lcons(makeString((yyvsp[(2) - (5)].str)), (yyvsp[(3) - (5)].list))); (yyval.typnam)->pct_type = true; - (yyval.typnam)->setof = TRUE; + (yyval.typnam)->setof = true; (yyval.typnam)->location = (yylsp[(2) - (5)]); ;} break; - case 1126: -#line 7501 "gram.y" + case 1162: +#line 7905 "gram.y" { (yyval.fun_param) = (yyvsp[(1) - (1)].fun_param); ;} break; - case 1127: -#line 7505 "gram.y" + case 1163: +#line 7909 "gram.y" { (yyval.fun_param) = (yyvsp[(1) - (3)].fun_param); (yyval.fun_param)->defexpr = (yyvsp[(3) - (3)].node); ;} break; - case 1128: -#line 7510 "gram.y" + case 1164: +#line 7914 "gram.y" { (yyval.fun_param) = (yyvsp[(1) - (3)].fun_param); (yyval.fun_param)->defexpr = (yyvsp[(3) - (3)].node); ;} break; - case 1129: -#line 7518 "gram.y" + case 1165: +#line 7922 "gram.y" { if (!((yyvsp[(1) - (1)].fun_param)->mode == FUNC_PARAM_IN || (yyvsp[(1) - (1)].fun_param)->mode == FUNC_PARAM_VARIADIC)) @@ -35141,47 +36828,47 @@ YYLTYPE yylloc; ;} break; - case 1130: -#line 7559 "gram.y" + case 1166: +#line 7963 "gram.y" { (yyval.list) = list_make2(NIL, makeInteger(-1)); ;} break; - case 1131: -#line 7563 "gram.y" + case 1167: +#line 7967 "gram.y" { (yyval.list) = list_make2((yyvsp[(2) - (3)].list), makeInteger(-1)); ;} break; - case 1132: -#line 7567 "gram.y" + case 1168: +#line 7971 "gram.y" { (yyval.list) = list_make2((yyvsp[(4) - (5)].list), makeInteger(0)); ;} break; - case 1133: -#line 7571 "gram.y" + case 1169: +#line 7975 "gram.y" { /* this is the only case requiring consistency checking */ (yyval.list) = makeOrderedSetArgs((yyvsp[(2) - (6)].list), (yyvsp[(5) - (6)].list), yyscanner); ;} break; - case 1134: -#line 7578 "gram.y" + case 1170: +#line 7982 "gram.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].fun_param)); ;} break; - case 1135: -#line 7579 "gram.y" + case 1171: +#line 7983 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].fun_param)); ;} break; - case 1136: -#line 7584 "gram.y" + case 1172: +#line 7988 "gram.y" { ObjectWithArgs *n = makeNode(ObjectWithArgs); n->objname = (yyvsp[(1) - (2)].list); @@ -35190,208 +36877,215 @@ YYLTYPE yylloc; ;} break; - case 1137: -#line 7593 "gram.y" + case 1173: +#line 7997 "gram.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].objwithargs)); ;} break; - case 1138: -#line 7595 "gram.y" + case 1174: +#line 7999 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].objwithargs)); ;} break; - case 1139: -#line 7600 "gram.y" + case 1175: +#line 8004 "gram.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].defelt)); ;} break; - case 1140: -#line 7601 "gram.y" + case 1176: +#line 8005 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (2)].list), (yyvsp[(2) - (2)].defelt)); ;} break; - case 1141: -#line 7609 "gram.y" + case 1177: +#line 8013 "gram.y" { - (yyval.defelt) = makeDefElem("strict", (Node *)makeInteger(FALSE), (yylsp[(1) - (4)])); + (yyval.defelt) = makeDefElem("strict", (Node *)makeInteger(false), (yylsp[(1) - (4)])); ;} break; - case 1142: -#line 7613 "gram.y" + case 1178: +#line 8017 "gram.y" { - (yyval.defelt) = makeDefElem("strict", (Node *)makeInteger(TRUE), (yylsp[(1) - (5)])); + (yyval.defelt) = makeDefElem("strict", (Node *)makeInteger(true), (yylsp[(1) - (5)])); ;} break; - case 1143: -#line 7617 "gram.y" + case 1179: +#line 8021 "gram.y" { - (yyval.defelt) = makeDefElem("strict", (Node *)makeInteger(TRUE), (yylsp[(1) - (1)])); + (yyval.defelt) = makeDefElem("strict", (Node *)makeInteger(true), (yylsp[(1) - (1)])); ;} break; - case 1144: -#line 7621 "gram.y" + case 1180: +#line 8025 "gram.y" { (yyval.defelt) = makeDefElem("volatility", (Node *)makeString("immutable"), (yylsp[(1) - (1)])); ;} break; - case 1145: -#line 7625 "gram.y" + case 1181: +#line 8029 "gram.y" { (yyval.defelt) = makeDefElem("volatility", (Node *)makeString("stable"), (yylsp[(1) - (1)])); ;} break; - case 1146: -#line 7629 "gram.y" + case 1182: +#line 8033 "gram.y" { (yyval.defelt) = makeDefElem("volatility", (Node *)makeString("volatile"), (yylsp[(1) - (1)])); ;} break; - case 1147: -#line 7633 "gram.y" + case 1183: +#line 8037 "gram.y" { - (yyval.defelt) = makeDefElem("security", (Node *)makeInteger(TRUE), (yylsp[(1) - (3)])); + (yyval.defelt) = makeDefElem("security", (Node *)makeInteger(true), (yylsp[(1) - (3)])); ;} break; - case 1148: -#line 7637 "gram.y" + case 1184: +#line 8041 "gram.y" { - (yyval.defelt) = makeDefElem("security", (Node *)makeInteger(FALSE), (yylsp[(1) - (3)])); + (yyval.defelt) = makeDefElem("security", (Node *)makeInteger(false), (yylsp[(1) - (3)])); ;} break; - case 1149: -#line 7641 "gram.y" + case 1185: +#line 8045 "gram.y" { - (yyval.defelt) = makeDefElem("security", (Node *)makeInteger(TRUE), (yylsp[(1) - (2)])); + (yyval.defelt) = makeDefElem("security", (Node *)makeInteger(true), (yylsp[(1) - (2)])); ;} break; - case 1150: -#line 7645 "gram.y" + case 1186: +#line 8049 "gram.y" { - (yyval.defelt) = makeDefElem("security", (Node *)makeInteger(FALSE), (yylsp[(1) - (2)])); + (yyval.defelt) = makeDefElem("security", (Node *)makeInteger(false), (yylsp[(1) - (2)])); ;} break; - case 1151: -#line 7649 "gram.y" + case 1187: +#line 8053 "gram.y" { - (yyval.defelt) = makeDefElem("leakproof", (Node *)makeInteger(TRUE), (yylsp[(1) - (1)])); + (yyval.defelt) = makeDefElem("leakproof", (Node *)makeInteger(true), (yylsp[(1) - (1)])); ;} break; - case 1152: -#line 7653 "gram.y" + case 1188: +#line 8057 "gram.y" { - (yyval.defelt) = makeDefElem("leakproof", (Node *)makeInteger(FALSE), (yylsp[(1) - (2)])); + (yyval.defelt) = makeDefElem("leakproof", (Node *)makeInteger(false), (yylsp[(1) - (2)])); ;} break; - case 1153: -#line 7657 "gram.y" + case 1189: +#line 8061 "gram.y" { (yyval.defelt) = makeDefElem("cost", (Node *)(yyvsp[(2) - (2)].value), (yylsp[(1) - (2)])); ;} break; - case 1154: -#line 7661 "gram.y" + case 1190: +#line 8065 "gram.y" { (yyval.defelt) = makeDefElem("rows", (Node *)(yyvsp[(2) - (2)].value), (yylsp[(1) - (2)])); ;} break; - case 1155: -#line 7665 "gram.y" + case 1191: +#line 8069 "gram.y" + { + (yyval.defelt) = makeDefElem("support", (Node *)(yyvsp[(2) - (2)].list), (yylsp[(1) - (2)])); + ;} + break; + + case 1192: +#line 8073 "gram.y" { /* we abuse the normal content of a DefElem here */ (yyval.defelt) = makeDefElem("set", (Node *)(yyvsp[(1) - (1)].vsetstmt), (yylsp[(1) - (1)])); ;} break; - case 1156: -#line 7670 "gram.y" + case 1193: +#line 8078 "gram.y" { (yyval.defelt) = makeDefElem("parallel", (Node *)makeString((yyvsp[(2) - (2)].str)), (yylsp[(1) - (2)])); ;} break; - case 1157: -#line 7677 "gram.y" + case 1194: +#line 8085 "gram.y" { (yyval.defelt) = makeDefElem("as", (Node *)(yyvsp[(2) - (2)].list), (yylsp[(1) - (2)])); ;} break; - case 1158: -#line 7681 "gram.y" + case 1195: +#line 8089 "gram.y" { (yyval.defelt) = makeDefElem("language", (Node *)makeString((yyvsp[(2) - (2)].str)), (yylsp[(1) - (2)])); ;} break; - case 1159: -#line 7685 "gram.y" + case 1196: +#line 8093 "gram.y" { (yyval.defelt) = makeDefElem("transform", (Node *)(yyvsp[(2) - (2)].list), (yylsp[(1) - (2)])); ;} break; - case 1160: -#line 7689 "gram.y" + case 1197: +#line 8097 "gram.y" { - (yyval.defelt) = makeDefElem("window", (Node *)makeInteger(TRUE), (yylsp[(1) - (1)])); + (yyval.defelt) = makeDefElem("window", (Node *)makeInteger(true), (yylsp[(1) - (1)])); ;} break; - case 1161: -#line 7693 "gram.y" + case 1198: +#line 8101 "gram.y" { (yyval.defelt) = (yyvsp[(1) - (1)].defelt); ;} break; - case 1162: -#line 7698 "gram.y" + case 1199: +#line 8106 "gram.y" { (yyval.list) = list_make1(makeString((yyvsp[(1) - (1)].str))); ;} break; - case 1163: -#line 7700 "gram.y" + case 1200: +#line 8108 "gram.y" { (yyval.list) = list_make2(makeString((yyvsp[(1) - (3)].str)), makeString((yyvsp[(3) - (3)].str))); ;} break; - case 1164: -#line 7706 "gram.y" + case 1201: +#line 8114 "gram.y" { (yyval.list) = list_make1((yyvsp[(3) - (3)].typnam)); ;} break; - case 1165: -#line 7707 "gram.y" + case 1202: +#line 8115 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (5)].list), (yyvsp[(5) - (5)].typnam)); ;} break; - case 1166: -#line 7711 "gram.y" + case 1203: +#line 8119 "gram.y" { (yyval.list) = (yyvsp[(2) - (2)].list); ;} break; - case 1167: -#line 7712 "gram.y" + case 1204: +#line 8120 "gram.y" { (yyval.list) = NIL; ;} break; - case 1168: -#line 7716 "gram.y" + case 1205: +#line 8124 "gram.y" { FunctionParameter *n = makeNode(FunctionParameter); n->name = (yyvsp[(1) - (2)].str); @@ -35402,45 +37096,120 @@ YYLTYPE yylloc; ;} break; - case 1169: -#line 7728 "gram.y" + case 1206: +#line 8136 "gram.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].fun_param)); ;} break; - case 1170: -#line 7732 "gram.y" + case 1207: +#line 8140 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].fun_param)); ;} break; - case 1171: -#line 7747 "gram.y" + case 1208: +#line 8155 "gram.y" + { + AlterFunctionStmt *n = makeNode(AlterFunctionStmt); + n->objtype = OBJECT_FUNCTION; + n->func = (yyvsp[(3) - (5)].objwithargs); + n->actions = (yyvsp[(4) - (5)].list); + (yyval.node) = (Node *) n; + ;} + break; + + case 1209: +#line 8163 "gram.y" + { + AlterFunctionStmt *n = makeNode(AlterFunctionStmt); + n->objtype = OBJECT_PROCEDURE; + n->func = (yyvsp[(3) - (5)].objwithargs); + n->actions = (yyvsp[(4) - (5)].list); + (yyval.node) = (Node *) n; + ;} + break; + + case 1210: +#line 8171 "gram.y" { AlterFunctionStmt *n = makeNode(AlterFunctionStmt); + n->objtype = OBJECT_ROUTINE; n->func = (yyvsp[(3) - (5)].objwithargs); n->actions = (yyvsp[(4) - (5)].list); (yyval.node) = (Node *) n; ;} break; - case 1172: -#line 7757 "gram.y" - { (yyval.list) = list_make1((yyvsp[(1) - (1)].defelt)); ;} - break; - - case 1173: -#line 7758 "gram.y" - { (yyval.list) = lappend((yyvsp[(1) - (2)].list), (yyvsp[(2) - (2)].defelt)); ;} + case 1211: +#line 8182 "gram.y" + { (yyval.list) = list_make1((yyvsp[(1) - (1)].defelt)); ;} + break; + + case 1212: +#line 8183 "gram.y" + { (yyval.list) = lappend((yyvsp[(1) - (2)].list), (yyvsp[(2) - (2)].defelt)); ;} + break; + + case 1215: +#line 8207 "gram.y" + { + DropStmt *n = makeNode(DropStmt); + n->removeType = OBJECT_FUNCTION; + n->objects = (yyvsp[(3) - (4)].list); + n->behavior = (yyvsp[(4) - (4)].dbehavior); + n->missing_ok = false; + n->concurrent = false; + (yyval.node) = (Node *)n; + ;} + break; + + case 1216: +#line 8217 "gram.y" + { + DropStmt *n = makeNode(DropStmt); + n->removeType = OBJECT_FUNCTION; + n->objects = (yyvsp[(5) - (6)].list); + n->behavior = (yyvsp[(6) - (6)].dbehavior); + n->missing_ok = true; + n->concurrent = false; + (yyval.node) = (Node *)n; + ;} + break; + + case 1217: +#line 8227 "gram.y" + { + DropStmt *n = makeNode(DropStmt); + n->removeType = OBJECT_PROCEDURE; + n->objects = (yyvsp[(3) - (4)].list); + n->behavior = (yyvsp[(4) - (4)].dbehavior); + n->missing_ok = false; + n->concurrent = false; + (yyval.node) = (Node *)n; + ;} + break; + + case 1218: +#line 8237 "gram.y" + { + DropStmt *n = makeNode(DropStmt); + n->removeType = OBJECT_PROCEDURE; + n->objects = (yyvsp[(5) - (6)].list); + n->behavior = (yyvsp[(6) - (6)].dbehavior); + n->missing_ok = true; + n->concurrent = false; + (yyval.node) = (Node *)n; + ;} break; - case 1176: -#line 7780 "gram.y" + case 1219: +#line 8247 "gram.y" { DropStmt *n = makeNode(DropStmt); - n->removeType = OBJECT_FUNCTION; + n->removeType = OBJECT_ROUTINE; n->objects = (yyvsp[(3) - (4)].list); n->behavior = (yyvsp[(4) - (4)].dbehavior); n->missing_ok = false; @@ -35449,11 +37218,11 @@ YYLTYPE yylloc; ;} break; - case 1177: -#line 7790 "gram.y" + case 1220: +#line 8257 "gram.y" { DropStmt *n = makeNode(DropStmt); - n->removeType = OBJECT_FUNCTION; + n->removeType = OBJECT_ROUTINE; n->objects = (yyvsp[(5) - (6)].list); n->behavior = (yyvsp[(6) - (6)].dbehavior); n->missing_ok = true; @@ -35462,8 +37231,8 @@ YYLTYPE yylloc; ;} break; - case 1178: -#line 7803 "gram.y" + case 1221: +#line 8270 "gram.y" { DropStmt *n = makeNode(DropStmt); n->removeType = OBJECT_AGGREGATE; @@ -35475,8 +37244,8 @@ YYLTYPE yylloc; ;} break; - case 1179: -#line 7813 "gram.y" + case 1222: +#line 8280 "gram.y" { DropStmt *n = makeNode(DropStmt); n->removeType = OBJECT_AGGREGATE; @@ -35488,8 +37257,8 @@ YYLTYPE yylloc; ;} break; - case 1180: -#line 7826 "gram.y" + case 1223: +#line 8293 "gram.y" { DropStmt *n = makeNode(DropStmt); n->removeType = OBJECT_OPERATOR; @@ -35501,8 +37270,8 @@ YYLTYPE yylloc; ;} break; - case 1181: -#line 7836 "gram.y" + case 1224: +#line 8303 "gram.y" { DropStmt *n = makeNode(DropStmt); n->removeType = OBJECT_OPERATOR; @@ -35514,8 +37283,8 @@ YYLTYPE yylloc; ;} break; - case 1182: -#line 7849 "gram.y" + case 1225: +#line 8316 "gram.y" { ereport(ERROR, (errcode(ERRCODE_SYNTAX_ERROR), @@ -35525,43 +37294,43 @@ YYLTYPE yylloc; ;} break; - case 1183: -#line 7857 "gram.y" + case 1226: +#line 8324 "gram.y" { (yyval.list) = list_make2((yyvsp[(2) - (5)].typnam), (yyvsp[(4) - (5)].typnam)); ;} break; - case 1184: -#line 7859 "gram.y" + case 1227: +#line 8326 "gram.y" { (yyval.list) = list_make2(NULL, (yyvsp[(4) - (5)].typnam)); ;} break; - case 1185: -#line 7861 "gram.y" + case 1228: +#line 8328 "gram.y" { (yyval.list) = list_make2((yyvsp[(2) - (5)].typnam), NULL); ;} break; - case 1186: -#line 7866 "gram.y" + case 1229: +#line 8333 "gram.y" { (yyval.list) = list_make1(makeString((yyvsp[(1) - (1)].str))); ;} break; - case 1187: -#line 7868 "gram.y" + case 1230: +#line 8335 "gram.y" { (yyval.list) = lcons(makeString((yyvsp[(1) - (3)].str)), (yyvsp[(3) - (3)].list)); ;} break; - case 1188: -#line 7872 "gram.y" + case 1231: +#line 8339 "gram.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].objwithargs)); ;} break; - case 1189: -#line 7874 "gram.y" + case 1232: +#line 8341 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].objwithargs)); ;} break; - case 1190: -#line 7879 "gram.y" + case 1233: +#line 8346 "gram.y" { ObjectWithArgs *n = makeNode(ObjectWithArgs); n->objname = (yyvsp[(1) - (2)].list); @@ -35570,8 +37339,8 @@ YYLTYPE yylloc; ;} break; - case 1191: -#line 7897 "gram.y" + case 1234: +#line 8364 "gram.y" { DoStmt *n = makeNode(DoStmt); n->args = (yyvsp[(2) - (2)].list); @@ -35579,32 +37348,32 @@ YYLTYPE yylloc; ;} break; - case 1192: -#line 7905 "gram.y" + case 1235: +#line 8372 "gram.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].defelt)); ;} break; - case 1193: -#line 7906 "gram.y" + case 1236: +#line 8373 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (2)].list), (yyvsp[(2) - (2)].defelt)); ;} break; - case 1194: -#line 7911 "gram.y" + case 1237: +#line 8378 "gram.y" { (yyval.defelt) = makeDefElem("as", (Node *)makeString((yyvsp[(1) - (1)].str)), (yylsp[(1) - (1)])); ;} break; - case 1195: -#line 7915 "gram.y" + case 1238: +#line 8382 "gram.y" { (yyval.defelt) = makeDefElem("language", (Node *)makeString((yyvsp[(2) - (2)].str)), (yylsp[(1) - (2)])); ;} break; - case 1196: -#line 7928 "gram.y" + case 1239: +#line 8395 "gram.y" { CreateCastStmt *n = makeNode(CreateCastStmt); n->sourcetype = (yyvsp[(4) - (11)].typnam); @@ -35616,8 +37385,8 @@ YYLTYPE yylloc; ;} break; - case 1197: -#line 7939 "gram.y" + case 1240: +#line 8406 "gram.y" { CreateCastStmt *n = makeNode(CreateCastStmt); n->sourcetype = (yyvsp[(4) - (10)].typnam); @@ -35629,8 +37398,8 @@ YYLTYPE yylloc; ;} break; - case 1198: -#line 7950 "gram.y" + case 1241: +#line 8417 "gram.y" { CreateCastStmt *n = makeNode(CreateCastStmt); n->sourcetype = (yyvsp[(4) - (10)].typnam); @@ -35642,23 +37411,23 @@ YYLTYPE yylloc; ;} break; - case 1199: -#line 7961 "gram.y" + case 1242: +#line 8428 "gram.y" { (yyval.ival) = COERCION_IMPLICIT; ;} break; - case 1200: -#line 7962 "gram.y" + case 1243: +#line 8429 "gram.y" { (yyval.ival) = COERCION_ASSIGNMENT; ;} break; - case 1201: -#line 7963 "gram.y" + case 1244: +#line 8430 "gram.y" { (yyval.ival) = COERCION_EXPLICIT; ;} break; - case 1202: -#line 7968 "gram.y" + case 1245: +#line 8435 "gram.y" { DropStmt *n = makeNode(DropStmt); n->removeType = OBJECT_CAST; @@ -35670,18 +37439,18 @@ YYLTYPE yylloc; ;} break; - case 1203: -#line 7979 "gram.y" - { (yyval.boolean) = TRUE; ;} + case 1246: +#line 8446 "gram.y" + { (yyval.boolean) = true; ;} break; - case 1204: -#line 7980 "gram.y" - { (yyval.boolean) = FALSE; ;} + case 1247: +#line 8447 "gram.y" + { (yyval.boolean) = false; ;} break; - case 1205: -#line 7991 "gram.y" + case 1248: +#line 8458 "gram.y" { CreateTransformStmt *n = makeNode(CreateTransformStmt); n->replace = (yyvsp[(2) - (10)].boolean); @@ -35693,36 +37462,36 @@ YYLTYPE yylloc; ;} break; - case 1206: -#line 8003 "gram.y" + case 1249: +#line 8470 "gram.y" { (yyval.list) = list_make2((yyvsp[(5) - (11)].objwithargs), (yyvsp[(11) - (11)].objwithargs)); ;} break; - case 1207: -#line 8007 "gram.y" + case 1250: +#line 8474 "gram.y" { (yyval.list) = list_make2((yyvsp[(11) - (11)].objwithargs), (yyvsp[(5) - (11)].objwithargs)); ;} break; - case 1208: -#line 8011 "gram.y" + case 1251: +#line 8478 "gram.y" { (yyval.list) = list_make2((yyvsp[(5) - (5)].objwithargs), NULL); ;} break; - case 1209: -#line 8015 "gram.y" + case 1252: +#line 8482 "gram.y" { (yyval.list) = list_make2(NULL, (yyvsp[(5) - (5)].objwithargs)); ;} break; - case 1210: -#line 8022 "gram.y" + case 1253: +#line 8489 "gram.y" { DropStmt *n = makeNode(DropStmt); n->removeType = OBJECT_TRANSFORM; @@ -35733,120 +37502,124 @@ YYLTYPE yylloc; ;} break; - case 1211: -#line 8042 "gram.y" + case 1254: +#line 8509 "gram.y" { ReindexStmt *n = makeNode(ReindexStmt); - n->kind = (yyvsp[(2) - (3)].ival); - n->relation = (yyvsp[(3) - (3)].range); + n->kind = (yyvsp[(2) - (4)].ival); + n->concurrent = (yyvsp[(3) - (4)].boolean); + n->relation = (yyvsp[(4) - (4)].range); n->name = NULL; n->options = 0; (yyval.node) = (Node *)n; ;} break; - case 1212: -#line 8051 "gram.y" + case 1255: +#line 8519 "gram.y" { ReindexStmt *n = makeNode(ReindexStmt); - n->kind = (yyvsp[(2) - (3)].ival); - n->name = (yyvsp[(3) - (3)].str); + n->kind = (yyvsp[(2) - (4)].ival); + n->concurrent = (yyvsp[(3) - (4)].boolean); + n->name = (yyvsp[(4) - (4)].str); n->relation = NULL; n->options = 0; (yyval.node) = (Node *)n; ;} break; - case 1213: -#line 8060 "gram.y" + case 1256: +#line 8529 "gram.y" { ReindexStmt *n = makeNode(ReindexStmt); - n->kind = (yyvsp[(5) - (6)].ival); - n->relation = (yyvsp[(6) - (6)].range); + n->kind = (yyvsp[(5) - (7)].ival); + n->concurrent = (yyvsp[(6) - (7)].boolean); + n->relation = (yyvsp[(7) - (7)].range); n->name = NULL; - n->options = (yyvsp[(3) - (6)].ival); + n->options = (yyvsp[(3) - (7)].ival); (yyval.node) = (Node *)n; ;} break; - case 1214: -#line 8069 "gram.y" + case 1257: +#line 8539 "gram.y" { ReindexStmt *n = makeNode(ReindexStmt); - n->kind = (yyvsp[(5) - (6)].ival); - n->name = (yyvsp[(6) - (6)].str); + n->kind = (yyvsp[(5) - (7)].ival); + n->concurrent = (yyvsp[(6) - (7)].boolean); + n->name = (yyvsp[(7) - (7)].str); n->relation = NULL; - n->options = (yyvsp[(3) - (6)].ival); + n->options = (yyvsp[(3) - (7)].ival); (yyval.node) = (Node *)n; ;} break; - case 1215: -#line 8079 "gram.y" + case 1258: +#line 8550 "gram.y" { (yyval.ival) = REINDEX_OBJECT_INDEX; ;} break; - case 1216: -#line 8080 "gram.y" + case 1259: +#line 8551 "gram.y" { (yyval.ival) = REINDEX_OBJECT_TABLE; ;} break; - case 1217: -#line 8083 "gram.y" + case 1260: +#line 8554 "gram.y" { (yyval.ival) = REINDEX_OBJECT_SCHEMA; ;} break; - case 1218: -#line 8084 "gram.y" + case 1261: +#line 8555 "gram.y" { (yyval.ival) = REINDEX_OBJECT_SYSTEM; ;} break; - case 1219: -#line 8085 "gram.y" + case 1262: +#line 8556 "gram.y" { (yyval.ival) = REINDEX_OBJECT_DATABASE; ;} break; - case 1220: -#line 8088 "gram.y" + case 1263: +#line 8559 "gram.y" { (yyval.ival) = (yyvsp[(1) - (1)].ival); ;} break; - case 1221: -#line 8089 "gram.y" + case 1264: +#line 8560 "gram.y" { (yyval.ival) = (yyvsp[(1) - (3)].ival) | (yyvsp[(3) - (3)].ival); ;} break; - case 1222: -#line 8092 "gram.y" + case 1265: +#line 8563 "gram.y" { (yyval.ival) = REINDEXOPT_VERBOSE; ;} break; - case 1223: -#line 8103 "gram.y" + case 1266: +#line 8574 "gram.y" { AlterTableSpaceOptionsStmt *n = makeNode(AlterTableSpaceOptionsStmt); n->tablespacename = (yyvsp[(3) - (5)].str); n->options = (yyvsp[(5) - (5)].list); - n->isReset = FALSE; + n->isReset = false; (yyval.node) = (Node *)n; ;} break; - case 1224: -#line 8112 "gram.y" + case 1267: +#line 8583 "gram.y" { AlterTableSpaceOptionsStmt *n = makeNode(AlterTableSpaceOptionsStmt); n->tablespacename = (yyvsp[(3) - (5)].str); n->options = (yyvsp[(5) - (5)].list); - n->isReset = TRUE; + n->isReset = true; (yyval.node) = (Node *)n; ;} break; - case 1225: -#line 8129 "gram.y" + case 1268: +#line 8600 "gram.y" { RenameStmt *n = makeNode(RenameStmt); n->renameType = OBJECT_AGGREGATE; @@ -35857,8 +37630,8 @@ YYLTYPE yylloc; ;} break; - case 1226: -#line 8138 "gram.y" + case 1269: +#line 8609 "gram.y" { RenameStmt *n = makeNode(RenameStmt); n->renameType = OBJECT_COLLATION; @@ -35869,8 +37642,8 @@ YYLTYPE yylloc; ;} break; - case 1227: -#line 8147 "gram.y" + case 1270: +#line 8618 "gram.y" { RenameStmt *n = makeNode(RenameStmt); n->renameType = OBJECT_CONVERSION; @@ -35881,8 +37654,8 @@ YYLTYPE yylloc; ;} break; - case 1228: -#line 8156 "gram.y" + case 1271: +#line 8627 "gram.y" { RenameStmt *n = makeNode(RenameStmt); n->renameType = OBJECT_DATABASE; @@ -35893,8 +37666,8 @@ YYLTYPE yylloc; ;} break; - case 1229: -#line 8165 "gram.y" + case 1272: +#line 8636 "gram.y" { RenameStmt *n = makeNode(RenameStmt); n->renameType = OBJECT_DOMAIN; @@ -35905,8 +37678,8 @@ YYLTYPE yylloc; ;} break; - case 1230: -#line 8174 "gram.y" + case 1273: +#line 8645 "gram.y" { RenameStmt *n = makeNode(RenameStmt); n->renameType = OBJECT_DOMCONSTRAINT; @@ -35917,8 +37690,8 @@ YYLTYPE yylloc; ;} break; - case 1231: -#line 8183 "gram.y" + case 1274: +#line 8654 "gram.y" { RenameStmt *n = makeNode(RenameStmt); n->renameType = OBJECT_FDW; @@ -35929,8 +37702,8 @@ YYLTYPE yylloc; ;} break; - case 1232: -#line 8192 "gram.y" + case 1275: +#line 8663 "gram.y" { RenameStmt *n = makeNode(RenameStmt); n->renameType = OBJECT_FUNCTION; @@ -35941,8 +37714,8 @@ YYLTYPE yylloc; ;} break; - case 1233: -#line 8201 "gram.y" + case 1276: +#line 8672 "gram.y" { RenameStmt *n = makeNode(RenameStmt); n->renameType = OBJECT_ROLE; @@ -35953,8 +37726,8 @@ YYLTYPE yylloc; ;} break; - case 1234: -#line 8210 "gram.y" + case 1277: +#line 8681 "gram.y" { RenameStmt *n = makeNode(RenameStmt); n->renameType = OBJECT_LANGUAGE; @@ -35965,8 +37738,8 @@ YYLTYPE yylloc; ;} break; - case 1235: -#line 8219 "gram.y" + case 1278: +#line 8690 "gram.y" { RenameStmt *n = makeNode(RenameStmt); n->renameType = OBJECT_OPCLASS; @@ -35977,8 +37750,8 @@ YYLTYPE yylloc; ;} break; - case 1236: -#line 8228 "gram.y" + case 1279: +#line 8699 "gram.y" { RenameStmt *n = makeNode(RenameStmt); n->renameType = OBJECT_OPFAMILY; @@ -35989,8 +37762,8 @@ YYLTYPE yylloc; ;} break; - case 1237: -#line 8237 "gram.y" + case 1280: +#line 8708 "gram.y" { RenameStmt *n = makeNode(RenameStmt); n->renameType = OBJECT_POLICY; @@ -36002,8 +37775,8 @@ YYLTYPE yylloc; ;} break; - case 1238: -#line 8247 "gram.y" + case 1281: +#line 8718 "gram.y" { RenameStmt *n = makeNode(RenameStmt); n->renameType = OBJECT_POLICY; @@ -36015,8 +37788,20 @@ YYLTYPE yylloc; ;} break; - case 1239: -#line 8257 "gram.y" + case 1282: +#line 8728 "gram.y" + { + RenameStmt *n = makeNode(RenameStmt); + n->renameType = OBJECT_PROCEDURE; + n->object = (Node *) (yyvsp[(3) - (6)].objwithargs); + n->newname = (yyvsp[(6) - (6)].str); + n->missing_ok = false; + (yyval.node) = (Node *)n; + ;} + break; + + case 1283: +#line 8737 "gram.y" { RenameStmt *n = makeNode(RenameStmt); n->renameType = OBJECT_PUBLICATION; @@ -36027,8 +37812,20 @@ YYLTYPE yylloc; ;} break; - case 1240: -#line 8266 "gram.y" + case 1284: +#line 8746 "gram.y" + { + RenameStmt *n = makeNode(RenameStmt); + n->renameType = OBJECT_ROUTINE; + n->object = (Node *) (yyvsp[(3) - (6)].objwithargs); + n->newname = (yyvsp[(6) - (6)].str); + n->missing_ok = false; + (yyval.node) = (Node *)n; + ;} + break; + + case 1285: +#line 8755 "gram.y" { RenameStmt *n = makeNode(RenameStmt); n->renameType = OBJECT_SCHEMA; @@ -36039,8 +37836,8 @@ YYLTYPE yylloc; ;} break; - case 1241: -#line 8275 "gram.y" + case 1286: +#line 8764 "gram.y" { RenameStmt *n = makeNode(RenameStmt); n->renameType = OBJECT_FOREIGN_SERVER; @@ -36051,8 +37848,8 @@ YYLTYPE yylloc; ;} break; - case 1242: -#line 8284 "gram.y" + case 1287: +#line 8773 "gram.y" { RenameStmt *n = makeNode(RenameStmt); n->renameType = OBJECT_SUBSCRIPTION; @@ -36063,8 +37860,8 @@ YYLTYPE yylloc; ;} break; - case 1243: -#line 8293 "gram.y" + case 1288: +#line 8782 "gram.y" { RenameStmt *n = makeNode(RenameStmt); n->renameType = OBJECT_TABLE; @@ -36076,8 +37873,8 @@ YYLTYPE yylloc; ;} break; - case 1244: -#line 8303 "gram.y" + case 1289: +#line 8792 "gram.y" { RenameStmt *n = makeNode(RenameStmt); n->renameType = OBJECT_TABLE; @@ -36089,8 +37886,8 @@ YYLTYPE yylloc; ;} break; - case 1245: -#line 8313 "gram.y" + case 1290: +#line 8802 "gram.y" { RenameStmt *n = makeNode(RenameStmt); n->renameType = OBJECT_SEQUENCE; @@ -36102,8 +37899,8 @@ YYLTYPE yylloc; ;} break; - case 1246: -#line 8323 "gram.y" + case 1291: +#line 8812 "gram.y" { RenameStmt *n = makeNode(RenameStmt); n->renameType = OBJECT_SEQUENCE; @@ -36115,8 +37912,8 @@ YYLTYPE yylloc; ;} break; - case 1247: -#line 8333 "gram.y" + case 1292: +#line 8822 "gram.y" { RenameStmt *n = makeNode(RenameStmt); n->renameType = OBJECT_VIEW; @@ -36128,8 +37925,8 @@ YYLTYPE yylloc; ;} break; - case 1248: -#line 8343 "gram.y" + case 1293: +#line 8832 "gram.y" { RenameStmt *n = makeNode(RenameStmt); n->renameType = OBJECT_VIEW; @@ -36141,8 +37938,8 @@ YYLTYPE yylloc; ;} break; - case 1249: -#line 8353 "gram.y" + case 1294: +#line 8842 "gram.y" { RenameStmt *n = makeNode(RenameStmt); n->renameType = OBJECT_MATVIEW; @@ -36154,8 +37951,8 @@ YYLTYPE yylloc; ;} break; - case 1250: -#line 8363 "gram.y" + case 1295: +#line 8852 "gram.y" { RenameStmt *n = makeNode(RenameStmt); n->renameType = OBJECT_MATVIEW; @@ -36167,8 +37964,8 @@ YYLTYPE yylloc; ;} break; - case 1251: -#line 8373 "gram.y" + case 1296: +#line 8862 "gram.y" { RenameStmt *n = makeNode(RenameStmt); n->renameType = OBJECT_INDEX; @@ -36180,8 +37977,8 @@ YYLTYPE yylloc; ;} break; - case 1252: -#line 8383 "gram.y" + case 1297: +#line 8872 "gram.y" { RenameStmt *n = makeNode(RenameStmt); n->renameType = OBJECT_INDEX; @@ -36193,8 +37990,8 @@ YYLTYPE yylloc; ;} break; - case 1253: -#line 8393 "gram.y" + case 1298: +#line 8882 "gram.y" { RenameStmt *n = makeNode(RenameStmt); n->renameType = OBJECT_FOREIGN_TABLE; @@ -36206,25 +38003,53 @@ YYLTYPE yylloc; ;} break; - case 1254: -#line 8403 "gram.y" + case 1299: +#line 8892 "gram.y" + { + RenameStmt *n = makeNode(RenameStmt); + n->renameType = OBJECT_FOREIGN_TABLE; + n->relation = (yyvsp[(6) - (9)].range); + n->subname = NULL; + n->newname = (yyvsp[(9) - (9)].str); + n->missing_ok = true; + (yyval.node) = (Node *)n; + ;} + break; + + case 1300: +#line 8902 "gram.y" + { + RenameStmt *n = makeNode(RenameStmt); + n->renameType = OBJECT_COLUMN; + n->relationType = OBJECT_TABLE; + n->relation = (yyvsp[(3) - (8)].range); + n->subname = (yyvsp[(6) - (8)].str); + n->newname = (yyvsp[(8) - (8)].str); + n->missing_ok = false; + (yyval.node) = (Node *)n; + ;} + break; + + case 1301: +#line 8913 "gram.y" { RenameStmt *n = makeNode(RenameStmt); - n->renameType = OBJECT_FOREIGN_TABLE; - n->relation = (yyvsp[(6) - (9)].range); - n->subname = NULL; - n->newname = (yyvsp[(9) - (9)].str); + n->renameType = OBJECT_COLUMN; + n->relationType = OBJECT_TABLE; + n->relation = (yyvsp[(5) - (10)].range); + n->subname = (yyvsp[(8) - (10)].str); + n->newname = (yyvsp[(10) - (10)].str); n->missing_ok = true; (yyval.node) = (Node *)n; ;} break; - case 1255: -#line 8413 "gram.y" + case 1302: +#line 8924 "gram.y" { RenameStmt *n = makeNode(RenameStmt); n->renameType = OBJECT_COLUMN; - n->relationType = OBJECT_TABLE; + n->relationType = OBJECT_VIEW; n->relation = (yyvsp[(3) - (8)].range); n->subname = (yyvsp[(6) - (8)].str); n->newname = (yyvsp[(8) - (8)].str); @@ -36233,12 +38058,12 @@ YYLTYPE yylloc; ;} break; - case 1256: -#line 8424 "gram.y" + case 1303: +#line 8935 "gram.y" { RenameStmt *n = makeNode(RenameStmt); n->renameType = OBJECT_COLUMN; - n->relationType = OBJECT_TABLE; + n->relationType = OBJECT_VIEW; n->relation = (yyvsp[(5) - (10)].range); n->subname = (yyvsp[(8) - (10)].str); n->newname = (yyvsp[(10) - (10)].str); @@ -36247,8 +38072,8 @@ YYLTYPE yylloc; ;} break; - case 1257: -#line 8435 "gram.y" + case 1304: +#line 8946 "gram.y" { RenameStmt *n = makeNode(RenameStmt); n->renameType = OBJECT_COLUMN; @@ -36261,8 +38086,8 @@ YYLTYPE yylloc; ;} break; - case 1258: -#line 8446 "gram.y" + case 1305: +#line 8957 "gram.y" { RenameStmt *n = makeNode(RenameStmt); n->renameType = OBJECT_COLUMN; @@ -36275,8 +38100,8 @@ YYLTYPE yylloc; ;} break; - case 1259: -#line 8457 "gram.y" + case 1306: +#line 8968 "gram.y" { RenameStmt *n = makeNode(RenameStmt); n->renameType = OBJECT_TABCONSTRAINT; @@ -36288,8 +38113,8 @@ YYLTYPE yylloc; ;} break; - case 1260: -#line 8467 "gram.y" + case 1307: +#line 8978 "gram.y" { RenameStmt *n = makeNode(RenameStmt); n->renameType = OBJECT_TABCONSTRAINT; @@ -36301,8 +38126,8 @@ YYLTYPE yylloc; ;} break; - case 1261: -#line 8477 "gram.y" + case 1308: +#line 8988 "gram.y" { RenameStmt *n = makeNode(RenameStmt); n->renameType = OBJECT_COLUMN; @@ -36315,8 +38140,8 @@ YYLTYPE yylloc; ;} break; - case 1262: -#line 8488 "gram.y" + case 1309: +#line 8999 "gram.y" { RenameStmt *n = makeNode(RenameStmt); n->renameType = OBJECT_COLUMN; @@ -36329,8 +38154,8 @@ YYLTYPE yylloc; ;} break; - case 1263: -#line 8499 "gram.y" + case 1310: +#line 9010 "gram.y" { RenameStmt *n = makeNode(RenameStmt); n->renameType = OBJECT_RULE; @@ -36342,8 +38167,8 @@ YYLTYPE yylloc; ;} break; - case 1264: -#line 8509 "gram.y" + case 1311: +#line 9020 "gram.y" { RenameStmt *n = makeNode(RenameStmt); n->renameType = OBJECT_TRIGGER; @@ -36355,8 +38180,8 @@ YYLTYPE yylloc; ;} break; - case 1265: -#line 8519 "gram.y" + case 1312: +#line 9030 "gram.y" { RenameStmt *n = makeNode(RenameStmt); n->renameType = OBJECT_EVENT_TRIGGER; @@ -36366,8 +38191,8 @@ YYLTYPE yylloc; ;} break; - case 1266: -#line 8527 "gram.y" + case 1313: +#line 9038 "gram.y" { RenameStmt *n = makeNode(RenameStmt); n->renameType = OBJECT_ROLE; @@ -36378,8 +38203,8 @@ YYLTYPE yylloc; ;} break; - case 1267: -#line 8536 "gram.y" + case 1314: +#line 9047 "gram.y" { RenameStmt *n = makeNode(RenameStmt); n->renameType = OBJECT_ROLE; @@ -36390,8 +38215,8 @@ YYLTYPE yylloc; ;} break; - case 1268: -#line 8545 "gram.y" + case 1315: +#line 9056 "gram.y" { RenameStmt *n = makeNode(RenameStmt); n->renameType = OBJECT_TABLESPACE; @@ -36402,8 +38227,8 @@ YYLTYPE yylloc; ;} break; - case 1269: -#line 8554 "gram.y" + case 1316: +#line 9065 "gram.y" { RenameStmt *n = makeNode(RenameStmt); n->renameType = OBJECT_STATISTIC_EXT; @@ -36414,8 +38239,8 @@ YYLTYPE yylloc; ;} break; - case 1270: -#line 8563 "gram.y" + case 1317: +#line 9074 "gram.y" { RenameStmt *n = makeNode(RenameStmt); n->renameType = OBJECT_TSPARSER; @@ -36426,8 +38251,8 @@ YYLTYPE yylloc; ;} break; - case 1271: -#line 8572 "gram.y" + case 1318: +#line 9083 "gram.y" { RenameStmt *n = makeNode(RenameStmt); n->renameType = OBJECT_TSDICTIONARY; @@ -36438,8 +38263,8 @@ YYLTYPE yylloc; ;} break; - case 1272: -#line 8581 "gram.y" + case 1319: +#line 9092 "gram.y" { RenameStmt *n = makeNode(RenameStmt); n->renameType = OBJECT_TSTEMPLATE; @@ -36450,8 +38275,8 @@ YYLTYPE yylloc; ;} break; - case 1273: -#line 8590 "gram.y" + case 1320: +#line 9101 "gram.y" { RenameStmt *n = makeNode(RenameStmt); n->renameType = OBJECT_TSCONFIGURATION; @@ -36462,8 +38287,8 @@ YYLTYPE yylloc; ;} break; - case 1274: -#line 8599 "gram.y" + case 1321: +#line 9110 "gram.y" { RenameStmt *n = makeNode(RenameStmt); n->renameType = OBJECT_TYPE; @@ -36474,8 +38299,8 @@ YYLTYPE yylloc; ;} break; - case 1275: -#line 8608 "gram.y" + case 1322: +#line 9119 "gram.y" { RenameStmt *n = makeNode(RenameStmt); n->renameType = OBJECT_ATTRIBUTE; @@ -36489,73 +38314,111 @@ YYLTYPE yylloc; ;} break; - case 1276: -#line 8621 "gram.y" + case 1323: +#line 9132 "gram.y" { (yyval.ival) = COLUMN; ;} break; - case 1277: -#line 8622 "gram.y" + case 1324: +#line 9133 "gram.y" { (yyval.ival) = 0; ;} break; - case 1278: -#line 8625 "gram.y" + case 1325: +#line 9136 "gram.y" { (yyval.ival) = 1; ;} break; - case 1279: -#line 8626 "gram.y" + case 1326: +#line 9137 "gram.y" { (yyval.ival) = 0; ;} break; - case 1280: -#line 8637 "gram.y" + case 1327: +#line 9148 "gram.y" { AlterObjectDependsStmt *n = makeNode(AlterObjectDependsStmt); n->objectType = OBJECT_FUNCTION; - n->object = (Node *) (yyvsp[(3) - (7)].objwithargs); - n->extname = makeString((yyvsp[(7) - (7)].str)); + n->object = (Node *) (yyvsp[(3) - (8)].objwithargs); + n->extname = makeString((yyvsp[(8) - (8)].str)); + n->remove = (yyvsp[(4) - (8)].boolean); (yyval.node) = (Node *)n; ;} break; - case 1281: -#line 8645 "gram.y" + case 1328: +#line 9157 "gram.y" + { + AlterObjectDependsStmt *n = makeNode(AlterObjectDependsStmt); + n->objectType = OBJECT_PROCEDURE; + n->object = (Node *) (yyvsp[(3) - (8)].objwithargs); + n->extname = makeString((yyvsp[(8) - (8)].str)); + n->remove = (yyvsp[(4) - (8)].boolean); + (yyval.node) = (Node *)n; + ;} + break; + + case 1329: +#line 9166 "gram.y" + { + AlterObjectDependsStmt *n = makeNode(AlterObjectDependsStmt); + n->objectType = OBJECT_ROUTINE; + n->object = (Node *) (yyvsp[(3) - (8)].objwithargs); + n->extname = makeString((yyvsp[(8) - (8)].str)); + n->remove = (yyvsp[(4) - (8)].boolean); + (yyval.node) = (Node *)n; + ;} + break; + + case 1330: +#line 9175 "gram.y" { AlterObjectDependsStmt *n = makeNode(AlterObjectDependsStmt); n->objectType = OBJECT_TRIGGER; - n->relation = (yyvsp[(5) - (9)].range); - n->object = (Node *) list_make1(makeString((yyvsp[(3) - (9)].str))); - n->extname = makeString((yyvsp[(9) - (9)].str)); + n->relation = (yyvsp[(5) - (10)].range); + n->object = (Node *) list_make1(makeString((yyvsp[(3) - (10)].str))); + n->extname = makeString((yyvsp[(10) - (10)].str)); + n->remove = (yyvsp[(6) - (10)].boolean); (yyval.node) = (Node *)n; ;} break; - case 1282: -#line 8654 "gram.y" + case 1331: +#line 9185 "gram.y" { AlterObjectDependsStmt *n = makeNode(AlterObjectDependsStmt); n->objectType = OBJECT_MATVIEW; - n->relation = (yyvsp[(4) - (8)].range); - n->extname = makeString((yyvsp[(8) - (8)].str)); + n->relation = (yyvsp[(4) - (9)].range); + n->extname = makeString((yyvsp[(9) - (9)].str)); + n->remove = (yyvsp[(5) - (9)].boolean); (yyval.node) = (Node *)n; ;} break; - case 1283: -#line 8662 "gram.y" + case 1332: +#line 9194 "gram.y" { AlterObjectDependsStmt *n = makeNode(AlterObjectDependsStmt); n->objectType = OBJECT_INDEX; - n->relation = (yyvsp[(3) - (7)].range); - n->extname = makeString((yyvsp[(7) - (7)].str)); + n->relation = (yyvsp[(3) - (8)].range); + n->extname = makeString((yyvsp[(8) - (8)].str)); + n->remove = (yyvsp[(4) - (8)].boolean); (yyval.node) = (Node *)n; ;} break; - case 1284: -#line 8679 "gram.y" + case 1333: +#line 9204 "gram.y" + { (yyval.boolean) = true; ;} + break; + + case 1334: +#line 9205 "gram.y" + { (yyval.boolean) = false; ;} + break; + + case 1335: +#line 9216 "gram.y" { AlterObjectSchemaStmt *n = makeNode(AlterObjectSchemaStmt); n->objectType = OBJECT_AGGREGATE; @@ -36566,8 +38429,8 @@ YYLTYPE yylloc; ;} break; - case 1285: -#line 8688 "gram.y" + case 1336: +#line 9225 "gram.y" { AlterObjectSchemaStmt *n = makeNode(AlterObjectSchemaStmt); n->objectType = OBJECT_COLLATION; @@ -36578,8 +38441,8 @@ YYLTYPE yylloc; ;} break; - case 1286: -#line 8697 "gram.y" + case 1337: +#line 9234 "gram.y" { AlterObjectSchemaStmt *n = makeNode(AlterObjectSchemaStmt); n->objectType = OBJECT_CONVERSION; @@ -36590,8 +38453,8 @@ YYLTYPE yylloc; ;} break; - case 1287: -#line 8706 "gram.y" + case 1338: +#line 9243 "gram.y" { AlterObjectSchemaStmt *n = makeNode(AlterObjectSchemaStmt); n->objectType = OBJECT_DOMAIN; @@ -36602,8 +38465,8 @@ YYLTYPE yylloc; ;} break; - case 1288: -#line 8715 "gram.y" + case 1339: +#line 9252 "gram.y" { AlterObjectSchemaStmt *n = makeNode(AlterObjectSchemaStmt); n->objectType = OBJECT_EXTENSION; @@ -36614,8 +38477,8 @@ YYLTYPE yylloc; ;} break; - case 1289: -#line 8724 "gram.y" + case 1340: +#line 9261 "gram.y" { AlterObjectSchemaStmt *n = makeNode(AlterObjectSchemaStmt); n->objectType = OBJECT_FUNCTION; @@ -36626,8 +38489,8 @@ YYLTYPE yylloc; ;} break; - case 1290: -#line 8733 "gram.y" + case 1341: +#line 9270 "gram.y" { AlterObjectSchemaStmt *n = makeNode(AlterObjectSchemaStmt); n->objectType = OBJECT_OPERATOR; @@ -36638,8 +38501,8 @@ YYLTYPE yylloc; ;} break; - case 1291: -#line 8742 "gram.y" + case 1342: +#line 9279 "gram.y" { AlterObjectSchemaStmt *n = makeNode(AlterObjectSchemaStmt); n->objectType = OBJECT_OPCLASS; @@ -36650,8 +38513,8 @@ YYLTYPE yylloc; ;} break; - case 1292: -#line 8751 "gram.y" + case 1343: +#line 9288 "gram.y" { AlterObjectSchemaStmt *n = makeNode(AlterObjectSchemaStmt); n->objectType = OBJECT_OPFAMILY; @@ -36662,8 +38525,32 @@ YYLTYPE yylloc; ;} break; - case 1293: -#line 8760 "gram.y" + case 1344: +#line 9297 "gram.y" + { + AlterObjectSchemaStmt *n = makeNode(AlterObjectSchemaStmt); + n->objectType = OBJECT_PROCEDURE; + n->object = (Node *) (yyvsp[(3) - (6)].objwithargs); + n->newschema = (yyvsp[(6) - (6)].str); + n->missing_ok = false; + (yyval.node) = (Node *)n; + ;} + break; + + case 1345: +#line 9306 "gram.y" + { + AlterObjectSchemaStmt *n = makeNode(AlterObjectSchemaStmt); + n->objectType = OBJECT_ROUTINE; + n->object = (Node *) (yyvsp[(3) - (6)].objwithargs); + n->newschema = (yyvsp[(6) - (6)].str); + n->missing_ok = false; + (yyval.node) = (Node *)n; + ;} + break; + + case 1346: +#line 9315 "gram.y" { AlterObjectSchemaStmt *n = makeNode(AlterObjectSchemaStmt); n->objectType = OBJECT_TABLE; @@ -36674,8 +38561,8 @@ YYLTYPE yylloc; ;} break; - case 1294: -#line 8769 "gram.y" + case 1347: +#line 9324 "gram.y" { AlterObjectSchemaStmt *n = makeNode(AlterObjectSchemaStmt); n->objectType = OBJECT_TABLE; @@ -36686,8 +38573,8 @@ YYLTYPE yylloc; ;} break; - case 1295: -#line 8778 "gram.y" + case 1348: +#line 9333 "gram.y" { AlterObjectSchemaStmt *n = makeNode(AlterObjectSchemaStmt); n->objectType = OBJECT_STATISTIC_EXT; @@ -36698,8 +38585,8 @@ YYLTYPE yylloc; ;} break; - case 1296: -#line 8787 "gram.y" + case 1349: +#line 9342 "gram.y" { AlterObjectSchemaStmt *n = makeNode(AlterObjectSchemaStmt); n->objectType = OBJECT_TSPARSER; @@ -36710,8 +38597,8 @@ YYLTYPE yylloc; ;} break; - case 1297: -#line 8796 "gram.y" + case 1350: +#line 9351 "gram.y" { AlterObjectSchemaStmt *n = makeNode(AlterObjectSchemaStmt); n->objectType = OBJECT_TSDICTIONARY; @@ -36722,8 +38609,8 @@ YYLTYPE yylloc; ;} break; - case 1298: -#line 8805 "gram.y" + case 1351: +#line 9360 "gram.y" { AlterObjectSchemaStmt *n = makeNode(AlterObjectSchemaStmt); n->objectType = OBJECT_TSTEMPLATE; @@ -36734,8 +38621,8 @@ YYLTYPE yylloc; ;} break; - case 1299: -#line 8814 "gram.y" + case 1352: +#line 9369 "gram.y" { AlterObjectSchemaStmt *n = makeNode(AlterObjectSchemaStmt); n->objectType = OBJECT_TSCONFIGURATION; @@ -36746,8 +38633,8 @@ YYLTYPE yylloc; ;} break; - case 1300: -#line 8823 "gram.y" + case 1353: +#line 9378 "gram.y" { AlterObjectSchemaStmt *n = makeNode(AlterObjectSchemaStmt); n->objectType = OBJECT_SEQUENCE; @@ -36758,8 +38645,8 @@ YYLTYPE yylloc; ;} break; - case 1301: -#line 8832 "gram.y" + case 1354: +#line 9387 "gram.y" { AlterObjectSchemaStmt *n = makeNode(AlterObjectSchemaStmt); n->objectType = OBJECT_SEQUENCE; @@ -36770,8 +38657,8 @@ YYLTYPE yylloc; ;} break; - case 1302: -#line 8841 "gram.y" + case 1355: +#line 9396 "gram.y" { AlterObjectSchemaStmt *n = makeNode(AlterObjectSchemaStmt); n->objectType = OBJECT_VIEW; @@ -36782,8 +38669,8 @@ YYLTYPE yylloc; ;} break; - case 1303: -#line 8850 "gram.y" + case 1356: +#line 9405 "gram.y" { AlterObjectSchemaStmt *n = makeNode(AlterObjectSchemaStmt); n->objectType = OBJECT_VIEW; @@ -36794,8 +38681,8 @@ YYLTYPE yylloc; ;} break; - case 1304: -#line 8859 "gram.y" + case 1357: +#line 9414 "gram.y" { AlterObjectSchemaStmt *n = makeNode(AlterObjectSchemaStmt); n->objectType = OBJECT_MATVIEW; @@ -36806,8 +38693,8 @@ YYLTYPE yylloc; ;} break; - case 1305: -#line 8868 "gram.y" + case 1358: +#line 9423 "gram.y" { AlterObjectSchemaStmt *n = makeNode(AlterObjectSchemaStmt); n->objectType = OBJECT_MATVIEW; @@ -36818,8 +38705,8 @@ YYLTYPE yylloc; ;} break; - case 1306: -#line 8877 "gram.y" + case 1359: +#line 9432 "gram.y" { AlterObjectSchemaStmt *n = makeNode(AlterObjectSchemaStmt); n->objectType = OBJECT_FOREIGN_TABLE; @@ -36830,8 +38717,8 @@ YYLTYPE yylloc; ;} break; - case 1307: -#line 8886 "gram.y" + case 1360: +#line 9441 "gram.y" { AlterObjectSchemaStmt *n = makeNode(AlterObjectSchemaStmt); n->objectType = OBJECT_FOREIGN_TABLE; @@ -36842,8 +38729,8 @@ YYLTYPE yylloc; ;} break; - case 1308: -#line 8895 "gram.y" + case 1361: +#line 9450 "gram.y" { AlterObjectSchemaStmt *n = makeNode(AlterObjectSchemaStmt); n->objectType = OBJECT_TYPE; @@ -36854,8 +38741,8 @@ YYLTYPE yylloc; ;} break; - case 1309: -#line 8913 "gram.y" + case 1362: +#line 9468 "gram.y" { AlterOperatorStmt *n = makeNode(AlterOperatorStmt); n->opername = (yyvsp[(3) - (7)].objwithargs); @@ -36864,53 +38751,63 @@ YYLTYPE yylloc; ;} break; - case 1310: -#line 8921 "gram.y" + case 1363: +#line 9476 "gram.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].defelt)); ;} break; - case 1311: -#line 8922 "gram.y" + case 1364: +#line 9477 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].defelt)); ;} break; - case 1312: -#line 8926 "gram.y" + case 1365: +#line 9481 "gram.y" { (yyval.defelt) = makeDefElem((yyvsp[(1) - (3)].str), NULL, (yylsp[(1) - (3)])); ;} break; - case 1313: -#line 8928 "gram.y" + case 1366: +#line 9483 "gram.y" { (yyval.defelt) = makeDefElem((yyvsp[(1) - (3)].str), (Node *) (yyvsp[(3) - (3)].node), (yylsp[(1) - (3)])); ;} break; - case 1314: -#line 8933 "gram.y" + case 1367: +#line 9488 "gram.y" { (yyval.node) = (Node *)(yyvsp[(1) - (1)].typnam); ;} break; - case 1315: -#line 8934 "gram.y" + case 1368: +#line 9489 "gram.y" { (yyval.node) = (Node *)makeString(pstrdup((yyvsp[(1) - (1)].keyword))); ;} break; - case 1316: -#line 8935 "gram.y" + case 1369: +#line 9490 "gram.y" { (yyval.node) = (Node *)(yyvsp[(1) - (1)].list); ;} break; - case 1317: -#line 8936 "gram.y" + case 1370: +#line 9491 "gram.y" { (yyval.node) = (Node *)(yyvsp[(1) - (1)].value); ;} break; - case 1318: -#line 8937 "gram.y" + case 1371: +#line 9492 "gram.y" { (yyval.node) = (Node *)makeString((yyvsp[(1) - (1)].str)); ;} break; - case 1319: -#line 8947 "gram.y" + case 1372: +#line 9505 "gram.y" + { + AlterTypeStmt *n = makeNode(AlterTypeStmt); + n->typeName = (yyvsp[(3) - (7)].list); + n->options = (yyvsp[(6) - (7)].list); + (yyval.node) = (Node *)n; + ;} + break; + + case 1373: +#line 9520 "gram.y" { AlterOwnerStmt *n = makeNode(AlterOwnerStmt); n->objectType = OBJECT_AGGREGATE; @@ -36920,8 +38817,8 @@ YYLTYPE yylloc; ;} break; - case 1320: -#line 8955 "gram.y" + case 1374: +#line 9528 "gram.y" { AlterOwnerStmt *n = makeNode(AlterOwnerStmt); n->objectType = OBJECT_COLLATION; @@ -36931,8 +38828,8 @@ YYLTYPE yylloc; ;} break; - case 1321: -#line 8963 "gram.y" + case 1375: +#line 9536 "gram.y" { AlterOwnerStmt *n = makeNode(AlterOwnerStmt); n->objectType = OBJECT_CONVERSION; @@ -36942,8 +38839,8 @@ YYLTYPE yylloc; ;} break; - case 1322: -#line 8971 "gram.y" + case 1376: +#line 9544 "gram.y" { AlterOwnerStmt *n = makeNode(AlterOwnerStmt); n->objectType = OBJECT_DATABASE; @@ -36953,8 +38850,8 @@ YYLTYPE yylloc; ;} break; - case 1323: -#line 8979 "gram.y" + case 1377: +#line 9552 "gram.y" { AlterOwnerStmt *n = makeNode(AlterOwnerStmt); n->objectType = OBJECT_DOMAIN; @@ -36964,8 +38861,8 @@ YYLTYPE yylloc; ;} break; - case 1324: -#line 8987 "gram.y" + case 1378: +#line 9560 "gram.y" { AlterOwnerStmt *n = makeNode(AlterOwnerStmt); n->objectType = OBJECT_FUNCTION; @@ -36975,8 +38872,8 @@ YYLTYPE yylloc; ;} break; - case 1325: -#line 8995 "gram.y" + case 1379: +#line 9568 "gram.y" { AlterOwnerStmt *n = makeNode(AlterOwnerStmt); n->objectType = OBJECT_LANGUAGE; @@ -36986,8 +38883,8 @@ YYLTYPE yylloc; ;} break; - case 1326: -#line 9003 "gram.y" + case 1380: +#line 9576 "gram.y" { AlterOwnerStmt *n = makeNode(AlterOwnerStmt); n->objectType = OBJECT_LARGEOBJECT; @@ -36997,8 +38894,8 @@ YYLTYPE yylloc; ;} break; - case 1327: -#line 9011 "gram.y" + case 1381: +#line 9584 "gram.y" { AlterOwnerStmt *n = makeNode(AlterOwnerStmt); n->objectType = OBJECT_OPERATOR; @@ -37008,8 +38905,8 @@ YYLTYPE yylloc; ;} break; - case 1328: -#line 9019 "gram.y" + case 1382: +#line 9592 "gram.y" { AlterOwnerStmt *n = makeNode(AlterOwnerStmt); n->objectType = OBJECT_OPCLASS; @@ -37019,19 +38916,41 @@ YYLTYPE yylloc; ;} break; - case 1329: -#line 9027 "gram.y" + case 1383: +#line 9600 "gram.y" + { + AlterOwnerStmt *n = makeNode(AlterOwnerStmt); + n->objectType = OBJECT_OPFAMILY; + n->object = (Node *) lcons(makeString((yyvsp[(6) - (9)].str)), (yyvsp[(4) - (9)].list)); + n->newowner = (yyvsp[(9) - (9)].rolespec); + (yyval.node) = (Node *)n; + ;} + break; + + case 1384: +#line 9608 "gram.y" + { + AlterOwnerStmt *n = makeNode(AlterOwnerStmt); + n->objectType = OBJECT_PROCEDURE; + n->object = (Node *) (yyvsp[(3) - (6)].objwithargs); + n->newowner = (yyvsp[(6) - (6)].rolespec); + (yyval.node) = (Node *)n; + ;} + break; + + case 1385: +#line 9616 "gram.y" { AlterOwnerStmt *n = makeNode(AlterOwnerStmt); - n->objectType = OBJECT_OPFAMILY; - n->object = (Node *) lcons(makeString((yyvsp[(6) - (9)].str)), (yyvsp[(4) - (9)].list)); - n->newowner = (yyvsp[(9) - (9)].rolespec); + n->objectType = OBJECT_ROUTINE; + n->object = (Node *) (yyvsp[(3) - (6)].objwithargs); + n->newowner = (yyvsp[(6) - (6)].rolespec); (yyval.node) = (Node *)n; ;} break; - case 1330: -#line 9035 "gram.y" + case 1386: +#line 9624 "gram.y" { AlterOwnerStmt *n = makeNode(AlterOwnerStmt); n->objectType = OBJECT_SCHEMA; @@ -37041,8 +38960,8 @@ YYLTYPE yylloc; ;} break; - case 1331: -#line 9043 "gram.y" + case 1387: +#line 9632 "gram.y" { AlterOwnerStmt *n = makeNode(AlterOwnerStmt); n->objectType = OBJECT_TYPE; @@ -37052,8 +38971,8 @@ YYLTYPE yylloc; ;} break; - case 1332: -#line 9051 "gram.y" + case 1388: +#line 9640 "gram.y" { AlterOwnerStmt *n = makeNode(AlterOwnerStmt); n->objectType = OBJECT_TABLESPACE; @@ -37063,8 +38982,8 @@ YYLTYPE yylloc; ;} break; - case 1333: -#line 9059 "gram.y" + case 1389: +#line 9648 "gram.y" { AlterOwnerStmt *n = makeNode(AlterOwnerStmt); n->objectType = OBJECT_STATISTIC_EXT; @@ -37074,8 +38993,8 @@ YYLTYPE yylloc; ;} break; - case 1334: -#line 9067 "gram.y" + case 1390: +#line 9656 "gram.y" { AlterOwnerStmt *n = makeNode(AlterOwnerStmt); n->objectType = OBJECT_TSDICTIONARY; @@ -37085,8 +39004,8 @@ YYLTYPE yylloc; ;} break; - case 1335: -#line 9075 "gram.y" + case 1391: +#line 9664 "gram.y" { AlterOwnerStmt *n = makeNode(AlterOwnerStmt); n->objectType = OBJECT_TSCONFIGURATION; @@ -37096,8 +39015,8 @@ YYLTYPE yylloc; ;} break; - case 1336: -#line 9083 "gram.y" + case 1392: +#line 9672 "gram.y" { AlterOwnerStmt *n = makeNode(AlterOwnerStmt); n->objectType = OBJECT_FDW; @@ -37107,8 +39026,8 @@ YYLTYPE yylloc; ;} break; - case 1337: -#line 9091 "gram.y" + case 1393: +#line 9680 "gram.y" { AlterOwnerStmt *n = makeNode(AlterOwnerStmt); n->objectType = OBJECT_FOREIGN_SERVER; @@ -37118,8 +39037,8 @@ YYLTYPE yylloc; ;} break; - case 1338: -#line 9099 "gram.y" + case 1394: +#line 9688 "gram.y" { AlterOwnerStmt *n = makeNode(AlterOwnerStmt); n->objectType = OBJECT_EVENT_TRIGGER; @@ -37129,8 +39048,8 @@ YYLTYPE yylloc; ;} break; - case 1339: -#line 9107 "gram.y" + case 1395: +#line 9696 "gram.y" { AlterOwnerStmt *n = makeNode(AlterOwnerStmt); n->objectType = OBJECT_PUBLICATION; @@ -37140,8 +39059,8 @@ YYLTYPE yylloc; ;} break; - case 1340: -#line 9115 "gram.y" + case 1396: +#line 9704 "gram.y" { AlterOwnerStmt *n = makeNode(AlterOwnerStmt); n->objectType = OBJECT_SUBSCRIPTION; @@ -37151,8 +39070,8 @@ YYLTYPE yylloc; ;} break; - case 1341: -#line 9133 "gram.y" + case 1397: +#line 9722 "gram.y" { CreatePublicationStmt *n = makeNode(CreatePublicationStmt); n->pubname = (yyvsp[(3) - (5)].str); @@ -37164,38 +39083,38 @@ YYLTYPE yylloc; n->tables = (List *)(yyvsp[(4) - (5)].node); /* FOR ALL TABLES */ else - n->for_all_tables = TRUE; + n->for_all_tables = true; } (yyval.node) = (Node *)n; ;} break; - case 1342: -#line 9151 "gram.y" + case 1398: +#line 9740 "gram.y" { (yyval.node) = (yyvsp[(1) - (1)].node); ;} break; - case 1343: -#line 9152 "gram.y" + case 1399: +#line 9741 "gram.y" { (yyval.node) = NULL; ;} break; - case 1344: -#line 9157 "gram.y" + case 1400: +#line 9746 "gram.y" { (yyval.node) = (Node *) (yyvsp[(3) - (3)].list); ;} break; - case 1345: -#line 9161 "gram.y" + case 1401: +#line 9750 "gram.y" { - (yyval.node) = (Node *) makeInteger(TRUE); + (yyval.node) = (Node *) makeInteger(true); ;} break; - case 1346: -#line 9181 "gram.y" + case 1402: +#line 9770 "gram.y" { AlterPublicationStmt *n = makeNode(AlterPublicationStmt); n->pubname = (yyvsp[(3) - (5)].str); @@ -37204,8 +39123,8 @@ YYLTYPE yylloc; ;} break; - case 1347: -#line 9188 "gram.y" + case 1403: +#line 9777 "gram.y" { AlterPublicationStmt *n = makeNode(AlterPublicationStmt); n->pubname = (yyvsp[(3) - (6)].str); @@ -37215,8 +39134,8 @@ YYLTYPE yylloc; ;} break; - case 1348: -#line 9196 "gram.y" + case 1404: +#line 9785 "gram.y" { AlterPublicationStmt *n = makeNode(AlterPublicationStmt); n->pubname = (yyvsp[(3) - (6)].str); @@ -37226,8 +39145,8 @@ YYLTYPE yylloc; ;} break; - case 1349: -#line 9204 "gram.y" + case 1405: +#line 9793 "gram.y" { AlterPublicationStmt *n = makeNode(AlterPublicationStmt); n->pubname = (yyvsp[(3) - (6)].str); @@ -37237,8 +39156,8 @@ YYLTYPE yylloc; ;} break; - case 1350: -#line 9221 "gram.y" + case 1406: +#line 9810 "gram.y" { CreateSubscriptionStmt *n = makeNode(CreateSubscriptionStmt); @@ -37250,27 +39169,27 @@ YYLTYPE yylloc; ;} break; - case 1351: -#line 9234 "gram.y" + case 1407: +#line 9823 "gram.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].value)); ;} break; - case 1352: -#line 9238 "gram.y" + case 1408: +#line 9827 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].value)); ;} break; - case 1353: -#line 9244 "gram.y" + case 1409: +#line 9833 "gram.y" { (yyval.value) = makeString((yyvsp[(1) - (1)].str)); ;} break; - case 1354: -#line 9254 "gram.y" + case 1410: +#line 9843 "gram.y" { AlterSubscriptionStmt *n = makeNode(AlterSubscriptionStmt); @@ -37281,8 +39200,8 @@ YYLTYPE yylloc; ;} break; - case 1355: -#line 9263 "gram.y" + case 1411: +#line 9852 "gram.y" { AlterSubscriptionStmt *n = makeNode(AlterSubscriptionStmt); @@ -37293,8 +39212,8 @@ YYLTYPE yylloc; ;} break; - case 1356: -#line 9272 "gram.y" + case 1412: +#line 9861 "gram.y" { AlterSubscriptionStmt *n = makeNode(AlterSubscriptionStmt); @@ -37305,8 +39224,8 @@ YYLTYPE yylloc; ;} break; - case 1357: -#line 9281 "gram.y" + case 1413: +#line 9870 "gram.y" { AlterSubscriptionStmt *n = makeNode(AlterSubscriptionStmt); @@ -37318,34 +39237,34 @@ YYLTYPE yylloc; ;} break; - case 1358: -#line 9291 "gram.y" + case 1414: +#line 9880 "gram.y" { AlterSubscriptionStmt *n = makeNode(AlterSubscriptionStmt); n->kind = ALTER_SUBSCRIPTION_ENABLED; n->subname = (yyvsp[(3) - (4)].str); n->options = list_make1(makeDefElem("enabled", - (Node *)makeInteger(TRUE), (yylsp[(1) - (4)]))); + (Node *)makeInteger(true), (yylsp[(1) - (4)]))); (yyval.node) = (Node *)n; ;} break; - case 1359: -#line 9301 "gram.y" + case 1415: +#line 9890 "gram.y" { AlterSubscriptionStmt *n = makeNode(AlterSubscriptionStmt); n->kind = ALTER_SUBSCRIPTION_ENABLED; n->subname = (yyvsp[(3) - (4)].str); n->options = list_make1(makeDefElem("enabled", - (Node *)makeInteger(FALSE), (yylsp[(1) - (4)]))); + (Node *)makeInteger(false), (yylsp[(1) - (4)]))); (yyval.node) = (Node *)n; ;} break; - case 1360: -#line 9319 "gram.y" + case 1416: +#line 9908 "gram.y" { DropSubscriptionStmt *n = makeNode(DropSubscriptionStmt); n->subname = (yyvsp[(3) - (4)].str); @@ -37355,8 +39274,8 @@ YYLTYPE yylloc; ;} break; - case 1361: -#line 9327 "gram.y" + case 1417: +#line 9916 "gram.y" { DropSubscriptionStmt *n = makeNode(DropSubscriptionStmt); n->subname = (yyvsp[(5) - (6)].str); @@ -37366,8 +39285,8 @@ YYLTYPE yylloc; ;} break; - case 1362: -#line 9345 "gram.y" + case 1418: +#line 9934 "gram.y" { RuleStmt *n = makeNode(RuleStmt); n->replace = (yyvsp[(2) - (13)].boolean); @@ -37381,23 +39300,23 @@ YYLTYPE yylloc; ;} break; - case 1363: -#line 9359 "gram.y" + case 1419: +#line 9948 "gram.y" { (yyval.list) = NIL; ;} break; - case 1364: -#line 9360 "gram.y" + case 1420: +#line 9949 "gram.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].node)); ;} break; - case 1365: -#line 9361 "gram.y" + case 1421: +#line 9950 "gram.y" { (yyval.list) = (yyvsp[(2) - (3)].list); ;} break; - case 1366: -#line 9367 "gram.y" + case 1422: +#line 9956 "gram.y" { if ((yyvsp[(3) - (3)].node) != NULL) (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].node)); else @@ -37405,8 +39324,8 @@ YYLTYPE yylloc; ;} break; - case 1367: -#line 9373 "gram.y" + case 1423: +#line 9962 "gram.y" { if ((yyvsp[(1) - (1)].node) != NULL) (yyval.list) = list_make1((yyvsp[(1) - (1)].node)); else @@ -37414,53 +39333,53 @@ YYLTYPE yylloc; ;} break; - case 1373: -#line 9389 "gram.y" + case 1429: +#line 9978 "gram.y" { (yyval.node) = (yyvsp[(1) - (1)].node); ;} break; - case 1374: -#line 9390 "gram.y" + case 1430: +#line 9979 "gram.y" { (yyval.node) = NULL; ;} break; - case 1375: -#line 9393 "gram.y" + case 1431: +#line 9982 "gram.y" { (yyval.ival) = CMD_SELECT; ;} break; - case 1376: -#line 9394 "gram.y" + case 1432: +#line 9983 "gram.y" { (yyval.ival) = CMD_UPDATE; ;} break; - case 1377: -#line 9395 "gram.y" + case 1433: +#line 9984 "gram.y" { (yyval.ival) = CMD_DELETE; ;} break; - case 1378: -#line 9396 "gram.y" + case 1434: +#line 9985 "gram.y" { (yyval.ival) = CMD_INSERT; ;} break; - case 1379: -#line 9400 "gram.y" - { (yyval.boolean) = TRUE; ;} + case 1435: +#line 9989 "gram.y" + { (yyval.boolean) = true; ;} break; - case 1380: -#line 9401 "gram.y" - { (yyval.boolean) = FALSE; ;} + case 1436: +#line 9990 "gram.y" + { (yyval.boolean) = false; ;} break; - case 1381: -#line 9402 "gram.y" - { (yyval.boolean) = FALSE; ;} + case 1437: +#line 9991 "gram.y" + { (yyval.boolean) = false; ;} break; - case 1382: -#line 9415 "gram.y" + case 1438: +#line 10004 "gram.y" { NotifyStmt *n = makeNode(NotifyStmt); n->conditionname = (yyvsp[(2) - (3)].str); @@ -37469,18 +39388,18 @@ YYLTYPE yylloc; ;} break; - case 1383: -#line 9424 "gram.y" + case 1439: +#line 10013 "gram.y" { (yyval.str) = (yyvsp[(2) - (2)].str); ;} break; - case 1384: -#line 9425 "gram.y" + case 1440: +#line 10014 "gram.y" { (yyval.str) = NULL; ;} break; - case 1385: -#line 9429 "gram.y" + case 1441: +#line 10018 "gram.y" { ListenStmt *n = makeNode(ListenStmt); n->conditionname = (yyvsp[(2) - (2)].str); @@ -37488,8 +39407,8 @@ YYLTYPE yylloc; ;} break; - case 1386: -#line 9438 "gram.y" + case 1442: +#line 10027 "gram.y" { UnlistenStmt *n = makeNode(UnlistenStmt); n->conditionname = (yyvsp[(2) - (2)].str); @@ -37497,8 +39416,8 @@ YYLTYPE yylloc; ;} break; - case 1387: -#line 9444 "gram.y" + case 1443: +#line 10033 "gram.y" { UnlistenStmt *n = makeNode(UnlistenStmt); n->conditionname = NULL; @@ -37506,18 +39425,19 @@ YYLTYPE yylloc; ;} break; - case 1388: -#line 9463 "gram.y" + case 1444: +#line 10052 "gram.y" { TransactionStmt *n = makeNode(TransactionStmt); n->kind = TRANS_STMT_ROLLBACK; n->options = NIL; + n->chain = (yyvsp[(3) - (3)].boolean); (yyval.node) = (Node *)n; ;} break; - case 1389: -#line 9470 "gram.y" + case 1445: +#line 10060 "gram.y" { TransactionStmt *n = makeNode(TransactionStmt); n->kind = TRANS_STMT_BEGIN; @@ -37526,8 +39446,8 @@ YYLTYPE yylloc; ;} break; - case 1390: -#line 9477 "gram.y" + case 1446: +#line 10067 "gram.y" { TransactionStmt *n = makeNode(TransactionStmt); n->kind = TRANS_STMT_START; @@ -37536,93 +39456,91 @@ YYLTYPE yylloc; ;} break; - case 1391: -#line 9484 "gram.y" + case 1447: +#line 10074 "gram.y" { TransactionStmt *n = makeNode(TransactionStmt); n->kind = TRANS_STMT_COMMIT; n->options = NIL; + n->chain = (yyvsp[(3) - (3)].boolean); (yyval.node) = (Node *)n; ;} break; - case 1392: -#line 9491 "gram.y" + case 1448: +#line 10082 "gram.y" { TransactionStmt *n = makeNode(TransactionStmt); n->kind = TRANS_STMT_COMMIT; n->options = NIL; + n->chain = (yyvsp[(3) - (3)].boolean); (yyval.node) = (Node *)n; ;} break; - case 1393: -#line 9498 "gram.y" + case 1449: +#line 10090 "gram.y" { TransactionStmt *n = makeNode(TransactionStmt); n->kind = TRANS_STMT_ROLLBACK; n->options = NIL; + n->chain = (yyvsp[(3) - (3)].boolean); (yyval.node) = (Node *)n; ;} break; - case 1394: -#line 9505 "gram.y" + case 1450: +#line 10098 "gram.y" { TransactionStmt *n = makeNode(TransactionStmt); n->kind = TRANS_STMT_SAVEPOINT; - n->options = list_make1(makeDefElem("savepoint_name", - (Node *)makeString((yyvsp[(2) - (2)].str)), (yylsp[(1) - (2)]))); + n->savepoint_name = (yyvsp[(2) - (2)].str); (yyval.node) = (Node *)n; ;} break; - case 1395: -#line 9513 "gram.y" + case 1451: +#line 10105 "gram.y" { TransactionStmt *n = makeNode(TransactionStmt); n->kind = TRANS_STMT_RELEASE; - n->options = list_make1(makeDefElem("savepoint_name", - (Node *)makeString((yyvsp[(3) - (3)].str)), (yylsp[(1) - (3)]))); + n->savepoint_name = (yyvsp[(3) - (3)].str); (yyval.node) = (Node *)n; ;} break; - case 1396: -#line 9521 "gram.y" + case 1452: +#line 10112 "gram.y" { TransactionStmt *n = makeNode(TransactionStmt); n->kind = TRANS_STMT_RELEASE; - n->options = list_make1(makeDefElem("savepoint_name", - (Node *)makeString((yyvsp[(2) - (2)].str)), (yylsp[(1) - (2)]))); + n->savepoint_name = (yyvsp[(2) - (2)].str); (yyval.node) = (Node *)n; ;} break; - case 1397: -#line 9529 "gram.y" + case 1453: +#line 10119 "gram.y" { TransactionStmt *n = makeNode(TransactionStmt); n->kind = TRANS_STMT_ROLLBACK_TO; - n->options = list_make1(makeDefElem("savepoint_name", - (Node *)makeString((yyvsp[(5) - (5)].str)), (yylsp[(1) - (5)]))); + n->savepoint_name = (yyvsp[(5) - (5)].str); (yyval.node) = (Node *)n; ;} break; - case 1398: -#line 9537 "gram.y" + case 1454: +#line 10126 "gram.y" { TransactionStmt *n = makeNode(TransactionStmt); n->kind = TRANS_STMT_ROLLBACK_TO; - n->options = list_make1(makeDefElem("savepoint_name", - (Node *)makeString((yyvsp[(4) - (4)].str)), (yylsp[(1) - (4)]))); + n->savepoint_name = (yyvsp[(4) - (4)].str); (yyval.node) = (Node *)n; ;} break; - case 1399: -#line 9545 "gram.y" + case 1455: +#line 10133 "gram.y" { TransactionStmt *n = makeNode(TransactionStmt); n->kind = TRANS_STMT_PREPARE; @@ -37631,8 +39549,8 @@ YYLTYPE yylloc; ;} break; - case 1400: -#line 9552 "gram.y" + case 1456: +#line 10140 "gram.y" { TransactionStmt *n = makeNode(TransactionStmt); n->kind = TRANS_STMT_COMMIT_PREPARED; @@ -37641,8 +39559,8 @@ YYLTYPE yylloc; ;} break; - case 1401: -#line 9559 "gram.y" + case 1457: +#line 10147 "gram.y" { TransactionStmt *n = makeNode(TransactionStmt); n->kind = TRANS_STMT_ROLLBACK_PREPARED; @@ -37651,73 +39569,88 @@ YYLTYPE yylloc; ;} break; - case 1402: -#line 9567 "gram.y" + case 1458: +#line 10155 "gram.y" {;} break; - case 1403: -#line 9568 "gram.y" + case 1459: +#line 10156 "gram.y" {;} break; - case 1404: -#line 9569 "gram.y" + case 1460: +#line 10157 "gram.y" {;} break; - case 1405: -#line 9574 "gram.y" + case 1461: +#line 10162 "gram.y" { (yyval.defelt) = makeDefElem("transaction_isolation", makeStringConst((yyvsp[(3) - (3)].str), (yylsp[(3) - (3)])), (yylsp[(1) - (3)])); ;} break; - case 1406: -#line 9577 "gram.y" + case 1462: +#line 10165 "gram.y" { (yyval.defelt) = makeDefElem("transaction_read_only", - makeIntConst(TRUE, (yylsp[(1) - (2)])), (yylsp[(1) - (2)])); ;} + makeIntConst(true, (yylsp[(1) - (2)])), (yylsp[(1) - (2)])); ;} break; - case 1407: -#line 9580 "gram.y" + case 1463: +#line 10168 "gram.y" { (yyval.defelt) = makeDefElem("transaction_read_only", - makeIntConst(FALSE, (yylsp[(1) - (2)])), (yylsp[(1) - (2)])); ;} + makeIntConst(false, (yylsp[(1) - (2)])), (yylsp[(1) - (2)])); ;} break; - case 1408: -#line 9583 "gram.y" + case 1464: +#line 10171 "gram.y" { (yyval.defelt) = makeDefElem("transaction_deferrable", - makeIntConst(TRUE, (yylsp[(1) - (1)])), (yylsp[(1) - (1)])); ;} + makeIntConst(true, (yylsp[(1) - (1)])), (yylsp[(1) - (1)])); ;} break; - case 1409: -#line 9586 "gram.y" + case 1465: +#line 10174 "gram.y" { (yyval.defelt) = makeDefElem("transaction_deferrable", - makeIntConst(FALSE, (yylsp[(1) - (2)])), (yylsp[(1) - (2)])); ;} + makeIntConst(false, (yylsp[(1) - (2)])), (yylsp[(1) - (2)])); ;} break; - case 1410: -#line 9593 "gram.y" + case 1466: +#line 10181 "gram.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].defelt)); ;} break; - case 1411: -#line 9595 "gram.y" + case 1467: +#line 10183 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].defelt)); ;} break; - case 1412: -#line 9597 "gram.y" + case 1468: +#line 10185 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (2)].list), (yyvsp[(2) - (2)].defelt)); ;} break; - case 1414: -#line 9603 "gram.y" + case 1470: +#line 10191 "gram.y" { (yyval.list) = NIL; ;} break; - case 1415: -#line 9617 "gram.y" + case 1471: +#line 10195 "gram.y" + { (yyval.boolean) = true; ;} + break; + + case 1472: +#line 10196 "gram.y" + { (yyval.boolean) = false; ;} + break; + + case 1473: +#line 10197 "gram.y" + { (yyval.boolean) = false; ;} + break; + + case 1474: +#line 10211 "gram.y" { ViewStmt *n = makeNode(ViewStmt); n->view = (yyvsp[(4) - (9)].range); @@ -37731,8 +39664,8 @@ YYLTYPE yylloc; ;} break; - case 1416: -#line 9630 "gram.y" + case 1475: +#line 10224 "gram.y" { ViewStmt *n = makeNode(ViewStmt); n->view = (yyvsp[(6) - (11)].range); @@ -37746,8 +39679,8 @@ YYLTYPE yylloc; ;} break; - case 1417: -#line 9643 "gram.y" + case 1476: +#line 10237 "gram.y" { ViewStmt *n = makeNode(ViewStmt); n->view = (yyvsp[(5) - (12)].range); @@ -37766,8 +39699,8 @@ YYLTYPE yylloc; ;} break; - case 1418: -#line 9661 "gram.y" + case 1477: +#line 10255 "gram.y" { ViewStmt *n = makeNode(ViewStmt); n->view = (yyvsp[(7) - (14)].range); @@ -37786,28 +39719,28 @@ YYLTYPE yylloc; ;} break; - case 1419: -#line 9680 "gram.y" + case 1478: +#line 10274 "gram.y" { (yyval.ival) = CASCADED_CHECK_OPTION; ;} break; - case 1420: -#line 9681 "gram.y" + case 1479: +#line 10275 "gram.y" { (yyval.ival) = CASCADED_CHECK_OPTION; ;} break; - case 1421: -#line 9682 "gram.y" + case 1480: +#line 10276 "gram.y" { (yyval.ival) = LOCAL_CHECK_OPTION; ;} break; - case 1422: -#line 9683 "gram.y" + case 1481: +#line 10277 "gram.y" { (yyval.ival) = NO_CHECK_OPTION; ;} break; - case 1423: -#line 9694 "gram.y" + case 1482: +#line 10288 "gram.y" { LoadStmt *n = makeNode(LoadStmt); n->filename = (yyvsp[(2) - (2)].str); @@ -37815,8 +39748,8 @@ YYLTYPE yylloc; ;} break; - case 1424: -#line 9710 "gram.y" + case 1483: +#line 10304 "gram.y" { CreatedbStmt *n = makeNode(CreatedbStmt); n->dbname = (yyvsp[(3) - (5)].str); @@ -37825,94 +39758,94 @@ YYLTYPE yylloc; ;} break; - case 1425: -#line 9719 "gram.y" + case 1484: +#line 10313 "gram.y" { (yyval.list) = (yyvsp[(1) - (1)].list); ;} break; - case 1426: -#line 9720 "gram.y" + case 1485: +#line 10314 "gram.y" { (yyval.list) = NIL; ;} break; - case 1427: -#line 9724 "gram.y" + case 1486: +#line 10318 "gram.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].defelt)); ;} break; - case 1428: -#line 9725 "gram.y" + case 1487: +#line 10319 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (2)].list), (yyvsp[(2) - (2)].defelt)); ;} break; - case 1429: -#line 9730 "gram.y" + case 1488: +#line 10324 "gram.y" { (yyval.defelt) = makeDefElem((yyvsp[(1) - (3)].str), (Node *)makeInteger((yyvsp[(3) - (3)].ival)), (yylsp[(1) - (3)])); ;} break; - case 1430: -#line 9734 "gram.y" + case 1489: +#line 10328 "gram.y" { (yyval.defelt) = makeDefElem((yyvsp[(1) - (3)].str), (Node *)makeString((yyvsp[(3) - (3)].str)), (yylsp[(1) - (3)])); ;} break; - case 1431: -#line 9738 "gram.y" + case 1490: +#line 10332 "gram.y" { (yyval.defelt) = makeDefElem((yyvsp[(1) - (3)].str), NULL, (yylsp[(1) - (3)])); ;} break; - case 1432: -#line 9755 "gram.y" + case 1491: +#line 10349 "gram.y" { (yyval.str) = (yyvsp[(1) - (1)].str); ;} break; - case 1433: -#line 9756 "gram.y" + case 1492: +#line 10350 "gram.y" { (yyval.str) = pstrdup("connection_limit"); ;} break; - case 1434: -#line 9757 "gram.y" + case 1493: +#line 10351 "gram.y" { (yyval.str) = pstrdup((yyvsp[(1) - (1)].keyword)); ;} break; - case 1435: -#line 9758 "gram.y" + case 1494: +#line 10352 "gram.y" { (yyval.str) = pstrdup((yyvsp[(1) - (1)].keyword)); ;} break; - case 1436: -#line 9759 "gram.y" + case 1495: +#line 10353 "gram.y" { (yyval.str) = pstrdup((yyvsp[(1) - (1)].keyword)); ;} break; - case 1437: -#line 9760 "gram.y" + case 1496: +#line 10354 "gram.y" { (yyval.str) = pstrdup((yyvsp[(1) - (1)].keyword)); ;} break; - case 1438: -#line 9761 "gram.y" + case 1497: +#line 10355 "gram.y" { (yyval.str) = pstrdup((yyvsp[(1) - (1)].keyword)); ;} break; - case 1439: -#line 9768 "gram.y" + case 1498: +#line 10362 "gram.y" {;} break; - case 1440: -#line 9769 "gram.y" + case 1499: +#line 10363 "gram.y" {;} break; - case 1441: -#line 9781 "gram.y" + case 1500: +#line 10375 "gram.y" { AlterDatabaseStmt *n = makeNode(AlterDatabaseStmt); n->dbname = (yyvsp[(3) - (5)].str); @@ -37921,8 +39854,8 @@ YYLTYPE yylloc; ;} break; - case 1442: -#line 9788 "gram.y" + case 1501: +#line 10382 "gram.y" { AlterDatabaseStmt *n = makeNode(AlterDatabaseStmt); n->dbname = (yyvsp[(3) - (4)].str); @@ -37931,8 +39864,8 @@ YYLTYPE yylloc; ;} break; - case 1443: -#line 9795 "gram.y" + case 1502: +#line 10389 "gram.y" { AlterDatabaseStmt *n = makeNode(AlterDatabaseStmt); n->dbname = (yyvsp[(3) - (6)].str); @@ -37942,8 +39875,8 @@ YYLTYPE yylloc; ;} break; - case 1444: -#line 9806 "gram.y" + case 1503: +#line 10400 "gram.y" { AlterDatabaseSetStmt *n = makeNode(AlterDatabaseSetStmt); n->dbname = (yyvsp[(3) - (4)].str); @@ -37952,28 +39885,73 @@ YYLTYPE yylloc; ;} break; - case 1445: -#line 9823 "gram.y" + case 1504: +#line 10417 "gram.y" { DropdbStmt *n = makeNode(DropdbStmt); n->dbname = (yyvsp[(3) - (3)].str); - n->missing_ok = FALSE; + n->missing_ok = false; + n->options = NULL; (yyval.node) = (Node *)n; ;} break; - case 1446: -#line 9830 "gram.y" + case 1505: +#line 10425 "gram.y" { DropdbStmt *n = makeNode(DropdbStmt); n->dbname = (yyvsp[(5) - (5)].str); - n->missing_ok = TRUE; + n->missing_ok = true; + n->options = NULL; (yyval.node) = (Node *)n; ;} break; - case 1447: -#line 9846 "gram.y" + case 1506: +#line 10433 "gram.y" + { + DropdbStmt *n = makeNode(DropdbStmt); + n->dbname = (yyvsp[(3) - (7)].str); + n->missing_ok = false; + n->options = (yyvsp[(6) - (7)].list); + (yyval.node) = (Node *)n; + ;} + break; + + case 1507: +#line 10441 "gram.y" + { + DropdbStmt *n = makeNode(DropdbStmt); + n->dbname = (yyvsp[(5) - (9)].str); + n->missing_ok = true; + n->options = (yyvsp[(8) - (9)].list); + (yyval.node) = (Node *)n; + ;} + break; + + case 1508: +#line 10452 "gram.y" + { + (yyval.list) = list_make1((Node *) (yyvsp[(1) - (1)].defelt)); + ;} + break; + + case 1509: +#line 10456 "gram.y" + { + (yyval.list) = lappend((yyvsp[(1) - (3)].list), (Node *) (yyvsp[(3) - (3)].defelt)); + ;} + break; + + case 1510: +#line 10467 "gram.y" + { + (yyval.defelt) = makeDefElem("force", NULL, (yylsp[(1) - (1)])); + ;} + break; + + case 1511: +#line 10479 "gram.y" { AlterCollationStmt *n = makeNode(AlterCollationStmt); n->collname = (yyvsp[(3) - (5)].list); @@ -37981,8 +39959,8 @@ YYLTYPE yylloc; ;} break; - case 1448: -#line 9863 "gram.y" + case 1512: +#line 10496 "gram.y" { AlterSystemStmt *n = makeNode(AlterSystemStmt); n->setstmt = (yyvsp[(4) - (4)].vsetstmt); @@ -37990,8 +39968,8 @@ YYLTYPE yylloc; ;} break; - case 1449: -#line 9869 "gram.y" + case 1513: +#line 10502 "gram.y" { AlterSystemStmt *n = makeNode(AlterSystemStmt); n->setstmt = (yyvsp[(4) - (4)].vsetstmt); @@ -37999,8 +39977,8 @@ YYLTYPE yylloc; ;} break; - case 1450: -#line 9885 "gram.y" + case 1514: +#line 10518 "gram.y" { CreateDomainStmt *n = makeNode(CreateDomainStmt); n->domainname = (yyvsp[(3) - (6)].list); @@ -38011,8 +39989,8 @@ YYLTYPE yylloc; ;} break; - case 1451: -#line 9898 "gram.y" + case 1515: +#line 10531 "gram.y" { AlterDomainStmt *n = makeNode(AlterDomainStmt); n->subtype = 'T'; @@ -38022,8 +40000,8 @@ YYLTYPE yylloc; ;} break; - case 1452: -#line 9907 "gram.y" + case 1516: +#line 10540 "gram.y" { AlterDomainStmt *n = makeNode(AlterDomainStmt); n->subtype = 'N'; @@ -38032,8 +40010,8 @@ YYLTYPE yylloc; ;} break; - case 1453: -#line 9915 "gram.y" + case 1517: +#line 10548 "gram.y" { AlterDomainStmt *n = makeNode(AlterDomainStmt); n->subtype = 'O'; @@ -38042,8 +40020,8 @@ YYLTYPE yylloc; ;} break; - case 1454: -#line 9923 "gram.y" + case 1518: +#line 10556 "gram.y" { AlterDomainStmt *n = makeNode(AlterDomainStmt); n->subtype = 'C'; @@ -38053,8 +40031,8 @@ YYLTYPE yylloc; ;} break; - case 1455: -#line 9932 "gram.y" + case 1519: +#line 10565 "gram.y" { AlterDomainStmt *n = makeNode(AlterDomainStmt); n->subtype = 'X'; @@ -38066,8 +40044,8 @@ YYLTYPE yylloc; ;} break; - case 1456: -#line 9943 "gram.y" + case 1520: +#line 10576 "gram.y" { AlterDomainStmt *n = makeNode(AlterDomainStmt); n->subtype = 'X'; @@ -38079,8 +40057,8 @@ YYLTYPE yylloc; ;} break; - case 1457: -#line 9954 "gram.y" + case 1521: +#line 10587 "gram.y" { AlterDomainStmt *n = makeNode(AlterDomainStmt); n->subtype = 'V'; @@ -38090,18 +40068,18 @@ YYLTYPE yylloc; ;} break; - case 1458: -#line 9963 "gram.y" + case 1522: +#line 10596 "gram.y" {;} break; - case 1459: -#line 9964 "gram.y" + case 1523: +#line 10597 "gram.y" {;} break; - case 1460: -#line 9976 "gram.y" + case 1524: +#line 10609 "gram.y" { AlterTSDictionaryStmt *n = makeNode(AlterTSDictionaryStmt); n->dictname = (yyvsp[(5) - (6)].list); @@ -38110,8 +40088,8 @@ YYLTYPE yylloc; ;} break; - case 1461: -#line 9986 "gram.y" + case 1525: +#line 10619 "gram.y" { AlterTSConfigurationStmt *n = makeNode(AlterTSConfigurationStmt); n->kind = ALTER_TSCONFIG_ADD_MAPPING; @@ -38124,8 +40102,8 @@ YYLTYPE yylloc; ;} break; - case 1462: -#line 9997 "gram.y" + case 1526: +#line 10630 "gram.y" { AlterTSConfigurationStmt *n = makeNode(AlterTSConfigurationStmt); n->kind = ALTER_TSCONFIG_ALTER_MAPPING_FOR_TOKEN; @@ -38138,8 +40116,8 @@ YYLTYPE yylloc; ;} break; - case 1463: -#line 10008 "gram.y" + case 1527: +#line 10641 "gram.y" { AlterTSConfigurationStmt *n = makeNode(AlterTSConfigurationStmt); n->kind = ALTER_TSCONFIG_REPLACE_DICT; @@ -38152,8 +40130,8 @@ YYLTYPE yylloc; ;} break; - case 1464: -#line 10019 "gram.y" + case 1528: +#line 10652 "gram.y" { AlterTSConfigurationStmt *n = makeNode(AlterTSConfigurationStmt); n->kind = ALTER_TSCONFIG_REPLACE_DICT_FOR_TOKEN; @@ -38166,8 +40144,8 @@ YYLTYPE yylloc; ;} break; - case 1465: -#line 10030 "gram.y" + case 1529: +#line 10663 "gram.y" { AlterTSConfigurationStmt *n = makeNode(AlterTSConfigurationStmt); n->kind = ALTER_TSCONFIG_DROP_MAPPING; @@ -38178,8 +40156,8 @@ YYLTYPE yylloc; ;} break; - case 1466: -#line 10039 "gram.y" + case 1530: +#line 10672 "gram.y" { AlterTSConfigurationStmt *n = makeNode(AlterTSConfigurationStmt); n->kind = ALTER_TSCONFIG_DROP_MAPPING; @@ -38190,18 +40168,18 @@ YYLTYPE yylloc; ;} break; - case 1467: -#line 10050 "gram.y" + case 1531: +#line 10683 "gram.y" {;} break; - case 1468: -#line 10051 "gram.y" + case 1532: +#line 10684 "gram.y" {;} break; - case 1469: -#line 10067 "gram.y" + case 1533: +#line 10700 "gram.y" { CreateConversionStmt *n = makeNode(CreateConversionStmt); n->conversion_name = (yyvsp[(4) - (10)].list); @@ -38213,243 +40191,249 @@ YYLTYPE yylloc; ;} break; - case 1470: -#line 10089 "gram.y" + case 1534: +#line 10722 "gram.y" { ClusterStmt *n = makeNode(ClusterStmt); n->relation = (yyvsp[(3) - (4)].range); n->indexname = (yyvsp[(4) - (4)].str); - n->verbose = (yyvsp[(2) - (4)].boolean); + n->options = 0; + if ((yyvsp[(2) - (4)].boolean)) + n->options |= CLUOPT_VERBOSE; (yyval.node) = (Node*)n; ;} break; - case 1471: -#line 10097 "gram.y" + case 1535: +#line 10732 "gram.y" { ClusterStmt *n = makeNode(ClusterStmt); n->relation = NULL; n->indexname = NULL; - n->verbose = (yyvsp[(2) - (2)].boolean); + n->options = 0; + if ((yyvsp[(2) - (2)].boolean)) + n->options |= CLUOPT_VERBOSE; (yyval.node) = (Node*)n; ;} break; - case 1472: -#line 10106 "gram.y" + case 1536: +#line 10743 "gram.y" { ClusterStmt *n = makeNode(ClusterStmt); n->relation = (yyvsp[(5) - (5)].range); n->indexname = (yyvsp[(3) - (5)].str); - n->verbose = (yyvsp[(2) - (5)].boolean); + n->options = 0; + if ((yyvsp[(2) - (5)].boolean)) + n->options |= CLUOPT_VERBOSE; (yyval.node) = (Node*)n; ;} break; - case 1473: -#line 10116 "gram.y" + case 1537: +#line 10755 "gram.y" { (yyval.str) = (yyvsp[(2) - (2)].str); ;} break; - case 1474: -#line 10117 "gram.y" + case 1538: +#line 10756 "gram.y" { (yyval.str) = NULL; ;} break; - case 1475: -#line 10130 "gram.y" + case 1539: +#line 10769 "gram.y" { VacuumStmt *n = makeNode(VacuumStmt); - n->options = VACOPT_VACUUM; - if ((yyvsp[(2) - (4)].boolean)) - n->options |= VACOPT_FULL; - if ((yyvsp[(3) - (4)].boolean)) - n->options |= VACOPT_FREEZE; - if ((yyvsp[(4) - (4)].boolean)) - n->options |= VACOPT_VERBOSE; - n->relation = NULL; - n->va_cols = NIL; + n->options = NIL; + if ((yyvsp[(2) - (6)].boolean)) + n->options = lappend(n->options, + makeDefElem("full", NULL, (yylsp[(2) - (6)]))); + if ((yyvsp[(3) - (6)].boolean)) + n->options = lappend(n->options, + makeDefElem("freeze", NULL, (yylsp[(3) - (6)]))); + if ((yyvsp[(4) - (6)].boolean)) + n->options = lappend(n->options, + makeDefElem("verbose", NULL, (yylsp[(4) - (6)]))); + if ((yyvsp[(5) - (6)].boolean)) + n->options = lappend(n->options, + makeDefElem("analyze", NULL, (yylsp[(5) - (6)]))); + n->rels = (yyvsp[(6) - (6)].list); + n->is_vacuumcmd = true; (yyval.node) = (Node *)n; ;} break; - case 1476: -#line 10144 "gram.y" + case 1540: +#line 10789 "gram.y" { VacuumStmt *n = makeNode(VacuumStmt); - n->options = VACOPT_VACUUM; - if ((yyvsp[(2) - (5)].boolean)) - n->options |= VACOPT_FULL; - if ((yyvsp[(3) - (5)].boolean)) - n->options |= VACOPT_FREEZE; - if ((yyvsp[(4) - (5)].boolean)) - n->options |= VACOPT_VERBOSE; - n->relation = (yyvsp[(5) - (5)].range); - n->va_cols = NIL; - (yyval.node) = (Node *)n; + n->options = (yyvsp[(3) - (5)].list); + n->rels = (yyvsp[(5) - (5)].list); + n->is_vacuumcmd = true; + (yyval.node) = (Node *) n; ;} break; - case 1477: -#line 10158 "gram.y" + case 1541: +#line 10799 "gram.y" { - VacuumStmt *n = (VacuumStmt *) (yyvsp[(5) - (5)].node); - n->options |= VACOPT_VACUUM; - if ((yyvsp[(2) - (5)].boolean)) - n->options |= VACOPT_FULL; - if ((yyvsp[(3) - (5)].boolean)) - n->options |= VACOPT_FREEZE; - if ((yyvsp[(4) - (5)].boolean)) - n->options |= VACOPT_VERBOSE; + VacuumStmt *n = makeNode(VacuumStmt); + n->options = NIL; + if ((yyvsp[(2) - (3)].boolean)) + n->options = lappend(n->options, + makeDefElem("verbose", NULL, (yylsp[(2) - (3)]))); + n->rels = (yyvsp[(3) - (3)].list); + n->is_vacuumcmd = false; (yyval.node) = (Node *)n; ;} break; - case 1478: -#line 10170 "gram.y" + case 1542: +#line 10810 "gram.y" { VacuumStmt *n = makeNode(VacuumStmt); - n->options = VACOPT_VACUUM | (yyvsp[(3) - (4)].ival); - n->relation = NULL; - n->va_cols = NIL; + n->options = (yyvsp[(3) - (5)].list); + n->rels = (yyvsp[(5) - (5)].list); + n->is_vacuumcmd = false; (yyval.node) = (Node *) n; ;} break; - case 1479: -#line 10178 "gram.y" + case 1543: +#line 10821 "gram.y" { - VacuumStmt *n = makeNode(VacuumStmt); - n->options = VACOPT_VACUUM | (yyvsp[(3) - (6)].ival); - n->relation = (yyvsp[(5) - (6)].range); - n->va_cols = (yyvsp[(6) - (6)].list); - if (n->va_cols != NIL) /* implies analyze */ - n->options |= VACOPT_ANALYZE; - (yyval.node) = (Node *) n; + (yyval.list) = list_make1((yyvsp[(1) - (1)].defelt)); ;} break; - case 1480: -#line 10190 "gram.y" - { (yyval.ival) = (yyvsp[(1) - (1)].ival); ;} + case 1544: +#line 10825 "gram.y" + { + (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].defelt)); + ;} break; - case 1481: -#line 10191 "gram.y" - { (yyval.ival) = (yyvsp[(1) - (3)].ival) | (yyvsp[(3) - (3)].ival); ;} + case 1545: +#line 10831 "gram.y" + {;} break; - case 1482: -#line 10195 "gram.y" - { (yyval.ival) = VACOPT_ANALYZE; ;} + case 1546: +#line 10832 "gram.y" + {;} break; - case 1483: -#line 10196 "gram.y" - { (yyval.ival) = VACOPT_VERBOSE; ;} + case 1547: +#line 10837 "gram.y" + { + (yyval.defelt) = makeDefElem((yyvsp[(1) - (2)].str), (yyvsp[(2) - (2)].node), (yylsp[(1) - (2)])); + ;} break; - case 1484: -#line 10197 "gram.y" - { (yyval.ival) = VACOPT_FREEZE; ;} + case 1548: +#line 10843 "gram.y" + { (yyval.str) = (yyvsp[(1) - (1)].str); ;} break; - case 1485: -#line 10198 "gram.y" - { (yyval.ival) = VACOPT_FULL; ;} + case 1549: +#line 10844 "gram.y" + { (yyval.str) = "analyze"; ;} break; - case 1486: -#line 10200 "gram.y" - { - if (strcmp((yyvsp[(1) - (1)].str), "disable_page_skipping") == 0) - (yyval.ival) = VACOPT_DISABLE_PAGE_SKIPPING; - else - ereport(ERROR, - (errcode(ERRCODE_SYNTAX_ERROR), - errmsg("unrecognized VACUUM option \"%s\"", (yyvsp[(1) - (1)].str)), - parser_errposition((yylsp[(1) - (1)])))); - ;} + case 1550: +#line 10848 "gram.y" + { (yyval.node) = (Node *) makeString((yyvsp[(1) - (1)].str)); ;} break; - case 1487: -#line 10213 "gram.y" - { - VacuumStmt *n = makeNode(VacuumStmt); - n->options = VACOPT_ANALYZE; - if ((yyvsp[(2) - (2)].boolean)) - n->options |= VACOPT_VERBOSE; - n->relation = NULL; - n->va_cols = NIL; - (yyval.node) = (Node *)n; - ;} + case 1551: +#line 10849 "gram.y" + { (yyval.node) = (Node *) (yyvsp[(1) - (1)].value); ;} break; - case 1488: -#line 10223 "gram.y" - { - VacuumStmt *n = makeNode(VacuumStmt); - n->options = VACOPT_ANALYZE; - if ((yyvsp[(2) - (4)].boolean)) - n->options |= VACOPT_VERBOSE; - n->relation = (yyvsp[(3) - (4)].range); - n->va_cols = (yyvsp[(4) - (4)].list); - (yyval.node) = (Node *)n; - ;} + case 1552: +#line 10850 "gram.y" + { (yyval.node) = NULL; ;} break; - case 1489: -#line 10235 "gram.y" - {;} + case 1553: +#line 10854 "gram.y" + { (yyval.boolean) = true; ;} break; - case 1490: -#line 10236 "gram.y" - {;} + case 1554: +#line 10855 "gram.y" + { (yyval.boolean) = false; ;} break; - case 1491: -#line 10240 "gram.y" - { (yyval.boolean) = TRUE; ;} + case 1555: +#line 10859 "gram.y" + { (yyval.boolean) = true; ;} break; - case 1492: -#line 10241 "gram.y" - { (yyval.boolean) = FALSE; ;} + case 1556: +#line 10860 "gram.y" + { (yyval.boolean) = false; ;} break; - case 1493: -#line 10244 "gram.y" - { (yyval.boolean) = TRUE; ;} + case 1557: +#line 10863 "gram.y" + { (yyval.boolean) = true; ;} break; - case 1494: -#line 10245 "gram.y" - { (yyval.boolean) = FALSE; ;} + case 1558: +#line 10864 "gram.y" + { (yyval.boolean) = false; ;} break; - case 1495: -#line 10248 "gram.y" - { (yyval.boolean) = TRUE; ;} + case 1559: +#line 10867 "gram.y" + { (yyval.boolean) = true; ;} break; - case 1496: -#line 10249 "gram.y" - { (yyval.boolean) = FALSE; ;} + case 1560: +#line 10868 "gram.y" + { (yyval.boolean) = false; ;} break; - case 1497: -#line 10253 "gram.y" + case 1561: +#line 10872 "gram.y" { (yyval.list) = (yyvsp[(2) - (3)].list); ;} break; - case 1498: -#line 10254 "gram.y" + case 1562: +#line 10873 "gram.y" { (yyval.list) = NIL; ;} break; - case 1499: -#line 10268 "gram.y" + case 1563: +#line 10878 "gram.y" + { + (yyval.node) = (Node *) makeVacuumRelation((yyvsp[(1) - (2)].range), InvalidOid, (yyvsp[(2) - (2)].list)); + ;} + break; + + case 1564: +#line 10885 "gram.y" + { (yyval.list) = list_make1((yyvsp[(1) - (1)].node)); ;} + break; + + case 1565: +#line 10887 "gram.y" + { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].node)); ;} + break; + + case 1566: +#line 10891 "gram.y" + { (yyval.list) = (yyvsp[(1) - (1)].list); ;} + break; + + case 1567: +#line 10892 "gram.y" + { (yyval.list) = NIL; ;} + break; + + case 1568: +#line 10906 "gram.y" { ExplainStmt *n = makeNode(ExplainStmt); n->query = (yyvsp[(2) - (2)].node); @@ -38458,8 +40442,8 @@ YYLTYPE yylloc; ;} break; - case 1500: -#line 10275 "gram.y" + case 1569: +#line 10913 "gram.y" { ExplainStmt *n = makeNode(ExplainStmt); n->query = (yyvsp[(4) - (4)].node); @@ -38471,8 +40455,8 @@ YYLTYPE yylloc; ;} break; - case 1501: -#line 10285 "gram.y" + case 1570: +#line 10923 "gram.y" { ExplainStmt *n = makeNode(ExplainStmt); n->query = (yyvsp[(3) - (3)].node); @@ -38481,8 +40465,8 @@ YYLTYPE yylloc; ;} break; - case 1502: -#line 10292 "gram.y" + case 1571: +#line 10930 "gram.y" { ExplainStmt *n = makeNode(ExplainStmt); n->query = (yyvsp[(5) - (5)].node); @@ -38491,54 +40475,54 @@ YYLTYPE yylloc; ;} break; - case 1512: -#line 10314 "gram.y" + case 1581: +#line 10952 "gram.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].defelt)); ;} break; - case 1513: -#line 10318 "gram.y" + case 1582: +#line 10956 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].defelt)); ;} break; - case 1514: -#line 10325 "gram.y" + case 1583: +#line 10963 "gram.y" { (yyval.defelt) = makeDefElem((yyvsp[(1) - (2)].str), (yyvsp[(2) - (2)].node), (yylsp[(1) - (2)])); ;} break; - case 1515: -#line 10331 "gram.y" + case 1584: +#line 10969 "gram.y" { (yyval.str) = (yyvsp[(1) - (1)].str); ;} break; - case 1516: -#line 10332 "gram.y" + case 1585: +#line 10970 "gram.y" { (yyval.str) = "analyze"; ;} break; - case 1517: -#line 10336 "gram.y" + case 1586: +#line 10974 "gram.y" { (yyval.node) = (Node *) makeString((yyvsp[(1) - (1)].str)); ;} break; - case 1518: -#line 10337 "gram.y" + case 1587: +#line 10975 "gram.y" { (yyval.node) = (Node *) (yyvsp[(1) - (1)].value); ;} break; - case 1519: -#line 10338 "gram.y" + case 1588: +#line 10976 "gram.y" { (yyval.node) = NULL; ;} break; - case 1520: -#line 10349 "gram.y" + case 1589: +#line 10987 "gram.y" { PrepareStmt *n = makeNode(PrepareStmt); n->name = (yyvsp[(2) - (5)].str); @@ -38548,18 +40532,18 @@ YYLTYPE yylloc; ;} break; - case 1521: -#line 10358 "gram.y" + case 1590: +#line 10996 "gram.y" { (yyval.list) = (yyvsp[(2) - (3)].list); ;} break; - case 1522: -#line 10359 "gram.y" + case 1591: +#line 10997 "gram.y" { (yyval.list) = NIL; ;} break; - case 1527: -#line 10377 "gram.y" + case 1596: +#line 11015 "gram.y" { ExecuteStmt *n = makeNode(ExecuteStmt); n->name = (yyvsp[(2) - (3)].str); @@ -38568,8 +40552,8 @@ YYLTYPE yylloc; ;} break; - case 1528: -#line 10385 "gram.y" + case 1597: +#line 11023 "gram.y" { CreateTableAsStmt *ctas = makeNode(CreateTableAsStmt); ExecuteStmt *n = makeNode(ExecuteStmt); @@ -38587,8 +40571,8 @@ YYLTYPE yylloc; ;} break; - case 1529: -#line 10402 "gram.y" + case 1598: +#line 11040 "gram.y" { CreateTableAsStmt *ctas = makeNode(CreateTableAsStmt); ExecuteStmt *n = makeNode(ExecuteStmt); @@ -38606,18 +40590,18 @@ YYLTYPE yylloc; ;} break; - case 1530: -#line 10419 "gram.y" + case 1599: +#line 11057 "gram.y" { (yyval.list) = (yyvsp[(2) - (3)].list); ;} break; - case 1531: -#line 10420 "gram.y" + case 1600: +#line 11058 "gram.y" { (yyval.list) = NIL; ;} break; - case 1532: -#line 10431 "gram.y" + case 1601: +#line 11069 "gram.y" { DeallocateStmt *n = makeNode(DeallocateStmt); n->name = (yyvsp[(2) - (2)].str); @@ -38625,8 +40609,8 @@ YYLTYPE yylloc; ;} break; - case 1533: -#line 10437 "gram.y" + case 1602: +#line 11075 "gram.y" { DeallocateStmt *n = makeNode(DeallocateStmt); n->name = (yyvsp[(3) - (3)].str); @@ -38634,8 +40618,8 @@ YYLTYPE yylloc; ;} break; - case 1534: -#line 10443 "gram.y" + case 1603: +#line 11081 "gram.y" { DeallocateStmt *n = makeNode(DeallocateStmt); n->name = NULL; @@ -38643,8 +40627,8 @@ YYLTYPE yylloc; ;} break; - case 1535: -#line 10449 "gram.y" + case 1604: +#line 11087 "gram.y" { DeallocateStmt *n = makeNode(DeallocateStmt); n->name = NULL; @@ -38652,8 +40636,8 @@ YYLTYPE yylloc; ;} break; - case 1536: -#line 10466 "gram.y" + case 1605: +#line 11104 "gram.y" { (yyvsp[(5) - (7)].istmt)->relation = (yyvsp[(4) - (7)].range); (yyvsp[(5) - (7)].istmt)->onConflictClause = (yyvsp[(6) - (7)].onconflict); @@ -38663,23 +40647,23 @@ YYLTYPE yylloc; ;} break; - case 1537: -#line 10483 "gram.y" + case 1606: +#line 11121 "gram.y" { (yyval.range) = (yyvsp[(1) - (1)].range); ;} break; - case 1538: -#line 10487 "gram.y" + case 1607: +#line 11125 "gram.y" { (yyvsp[(1) - (3)].range)->alias = makeAlias((yyvsp[(3) - (3)].str), NIL); (yyval.range) = (yyvsp[(1) - (3)].range); ;} break; - case 1539: -#line 10495 "gram.y" + case 1608: +#line 11133 "gram.y" { (yyval.istmt) = makeNode(InsertStmt); (yyval.istmt)->cols = NIL; @@ -38687,8 +40671,8 @@ YYLTYPE yylloc; ;} break; - case 1540: -#line 10501 "gram.y" + case 1609: +#line 11139 "gram.y" { (yyval.istmt) = makeNode(InsertStmt); (yyval.istmt)->cols = NIL; @@ -38697,8 +40681,8 @@ YYLTYPE yylloc; ;} break; - case 1541: -#line 10508 "gram.y" + case 1610: +#line 11146 "gram.y" { (yyval.istmt) = makeNode(InsertStmt); (yyval.istmt)->cols = (yyvsp[(2) - (4)].list); @@ -38706,8 +40690,8 @@ YYLTYPE yylloc; ;} break; - case 1542: -#line 10514 "gram.y" + case 1611: +#line 11152 "gram.y" { (yyval.istmt) = makeNode(InsertStmt); (yyval.istmt)->cols = (yyvsp[(2) - (7)].list); @@ -38716,8 +40700,8 @@ YYLTYPE yylloc; ;} break; - case 1543: -#line 10521 "gram.y" + case 1612: +#line 11159 "gram.y" { (yyval.istmt) = makeNode(InsertStmt); (yyval.istmt)->cols = NIL; @@ -38725,28 +40709,28 @@ YYLTYPE yylloc; ;} break; - case 1544: -#line 10529 "gram.y" + case 1613: +#line 11167 "gram.y" { (yyval.ival) = OVERRIDING_USER_VALUE; ;} break; - case 1545: -#line 10530 "gram.y" + case 1614: +#line 11168 "gram.y" { (yyval.ival) = OVERRIDING_SYSTEM_VALUE; ;} break; - case 1546: -#line 10535 "gram.y" + case 1615: +#line 11173 "gram.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].target)); ;} break; - case 1547: -#line 10537 "gram.y" + case 1616: +#line 11175 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].target)); ;} break; - case 1548: -#line 10542 "gram.y" + case 1617: +#line 11180 "gram.y" { (yyval.target) = makeNode(ResTarget); (yyval.target)->name = (yyvsp[(1) - (2)].str); @@ -38756,8 +40740,8 @@ YYLTYPE yylloc; ;} break; - case 1549: -#line 10553 "gram.y" + case 1618: +#line 11191 "gram.y" { (yyval.onconflict) = makeNode(OnConflictClause); (yyval.onconflict)->action = ONCONFLICT_UPDATE; @@ -38768,8 +40752,8 @@ YYLTYPE yylloc; ;} break; - case 1550: -#line 10563 "gram.y" + case 1619: +#line 11201 "gram.y" { (yyval.onconflict) = makeNode(OnConflictClause); (yyval.onconflict)->action = ONCONFLICT_NOTHING; @@ -38780,15 +40764,15 @@ YYLTYPE yylloc; ;} break; - case 1551: -#line 10572 "gram.y" + case 1620: +#line 11210 "gram.y" { (yyval.onconflict) = NULL; ;} break; - case 1552: -#line 10579 "gram.y" + case 1621: +#line 11217 "gram.y" { (yyval.infer) = makeNode(InferClause); (yyval.infer)->indexElems = (yyvsp[(2) - (4)].list); @@ -38798,8 +40782,8 @@ YYLTYPE yylloc; ;} break; - case 1553: -#line 10588 "gram.y" + case 1622: +#line 11226 "gram.y" { (yyval.infer) = makeNode(InferClause); (yyval.infer)->indexElems = NIL; @@ -38809,25 +40793,25 @@ YYLTYPE yylloc; ;} break; - case 1554: -#line 10596 "gram.y" + case 1623: +#line 11234 "gram.y" { (yyval.infer) = NULL; ;} break; - case 1555: -#line 10602 "gram.y" + case 1624: +#line 11240 "gram.y" { (yyval.list) = (yyvsp[(2) - (2)].list); ;} break; - case 1556: -#line 10603 "gram.y" + case 1625: +#line 11241 "gram.y" { (yyval.list) = NIL; ;} break; - case 1557: -#line 10616 "gram.y" + case 1626: +#line 11254 "gram.y" { DeleteStmt *n = makeNode(DeleteStmt); n->relation = (yyvsp[(4) - (7)].range); @@ -38839,18 +40823,18 @@ YYLTYPE yylloc; ;} break; - case 1558: -#line 10628 "gram.y" + case 1627: +#line 11266 "gram.y" { (yyval.list) = (yyvsp[(2) - (2)].list); ;} break; - case 1559: -#line 10629 "gram.y" + case 1628: +#line 11267 "gram.y" { (yyval.list) = NIL; ;} break; - case 1560: -#line 10641 "gram.y" + case 1629: +#line 11279 "gram.y" { LockStmt *n = makeNode(LockStmt); @@ -38861,83 +40845,83 @@ YYLTYPE yylloc; ;} break; - case 1561: -#line 10651 "gram.y" + case 1630: +#line 11289 "gram.y" { (yyval.ival) = (yyvsp[(2) - (3)].ival); ;} break; - case 1562: -#line 10652 "gram.y" + case 1631: +#line 11290 "gram.y" { (yyval.ival) = AccessExclusiveLock; ;} break; - case 1563: -#line 10655 "gram.y" + case 1632: +#line 11293 "gram.y" { (yyval.ival) = AccessShareLock; ;} break; - case 1564: -#line 10656 "gram.y" + case 1633: +#line 11294 "gram.y" { (yyval.ival) = RowShareLock; ;} break; - case 1565: -#line 10657 "gram.y" + case 1634: +#line 11295 "gram.y" { (yyval.ival) = RowExclusiveLock; ;} break; - case 1566: -#line 10658 "gram.y" + case 1635: +#line 11296 "gram.y" { (yyval.ival) = ShareUpdateExclusiveLock; ;} break; - case 1567: -#line 10659 "gram.y" + case 1636: +#line 11297 "gram.y" { (yyval.ival) = ShareLock; ;} break; - case 1568: -#line 10660 "gram.y" + case 1637: +#line 11298 "gram.y" { (yyval.ival) = ShareRowExclusiveLock; ;} break; - case 1569: -#line 10661 "gram.y" + case 1638: +#line 11299 "gram.y" { (yyval.ival) = ExclusiveLock; ;} break; - case 1570: -#line 10662 "gram.y" + case 1639: +#line 11300 "gram.y" { (yyval.ival) = AccessExclusiveLock; ;} break; - case 1571: -#line 10665 "gram.y" - { (yyval.boolean) = TRUE; ;} + case 1640: +#line 11303 "gram.y" + { (yyval.boolean) = true; ;} break; - case 1572: -#line 10666 "gram.y" - { (yyval.boolean) = FALSE; ;} + case 1641: +#line 11304 "gram.y" + { (yyval.boolean) = false; ;} break; - case 1573: -#line 10670 "gram.y" + case 1642: +#line 11308 "gram.y" { (yyval.ival) = LockWaitError; ;} break; - case 1574: -#line 10671 "gram.y" + case 1643: +#line 11309 "gram.y" { (yyval.ival) = LockWaitSkip; ;} break; - case 1575: -#line 10672 "gram.y" + case 1644: +#line 11310 "gram.y" { (yyval.ival) = LockWaitBlock; ;} break; - case 1576: -#line 10688 "gram.y" + case 1645: +#line 11326 "gram.y" { UpdateStmt *n = makeNode(UpdateStmt); n->relation = (yyvsp[(3) - (8)].range); @@ -38950,26 +40934,26 @@ YYLTYPE yylloc; ;} break; - case 1577: -#line 10701 "gram.y" + case 1646: +#line 11339 "gram.y" { (yyval.list) = (yyvsp[(1) - (1)].list); ;} break; - case 1578: -#line 10702 "gram.y" + case 1647: +#line 11340 "gram.y" { (yyval.list) = list_concat((yyvsp[(1) - (3)].list),(yyvsp[(3) - (3)].list)); ;} break; - case 1579: -#line 10707 "gram.y" + case 1648: +#line 11345 "gram.y" { (yyvsp[(1) - (3)].target)->val = (Node *) (yyvsp[(3) - (3)].node); (yyval.list) = list_make1((yyvsp[(1) - (3)].target)); ;} break; - case 1580: -#line 10712 "gram.y" + case 1649: +#line 11350 "gram.y" { int ncolumns = list_length((yyvsp[(2) - (5)].list)); int i = 1; @@ -38992,8 +40976,8 @@ YYLTYPE yylloc; ;} break; - case 1581: -#line 10736 "gram.y" + case 1650: +#line 11374 "gram.y" { (yyval.target) = makeNode(ResTarget); (yyval.target)->name = (yyvsp[(1) - (2)].str); @@ -39003,18 +40987,18 @@ YYLTYPE yylloc; ;} break; - case 1582: -#line 10746 "gram.y" + case 1651: +#line 11384 "gram.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].target)); ;} break; - case 1583: -#line 10747 "gram.y" + case 1652: +#line 11385 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (3)].list),(yyvsp[(3) - (3)].target)); ;} break; - case 1584: -#line 10758 "gram.y" + case 1653: +#line 11396 "gram.y" { DeclareCursorStmt *n = makeNode(DeclareCursorStmt); n->portalname = (yyvsp[(2) - (7)].str); @@ -39025,154 +41009,154 @@ YYLTYPE yylloc; ;} break; - case 1585: -#line 10768 "gram.y" + case 1654: +#line 11406 "gram.y" { (yyval.str) = (yyvsp[(1) - (1)].str); ;} break; - case 1586: -#line 10771 "gram.y" + case 1655: +#line 11409 "gram.y" { (yyval.ival) = 0; ;} break; - case 1587: -#line 10772 "gram.y" + case 1656: +#line 11410 "gram.y" { (yyval.ival) = (yyvsp[(1) - (3)].ival) | CURSOR_OPT_NO_SCROLL; ;} break; - case 1588: -#line 10773 "gram.y" + case 1657: +#line 11411 "gram.y" { (yyval.ival) = (yyvsp[(1) - (2)].ival) | CURSOR_OPT_SCROLL; ;} break; - case 1589: -#line 10774 "gram.y" + case 1658: +#line 11412 "gram.y" { (yyval.ival) = (yyvsp[(1) - (2)].ival) | CURSOR_OPT_BINARY; ;} break; - case 1590: -#line 10775 "gram.y" + case 1659: +#line 11413 "gram.y" { (yyval.ival) = (yyvsp[(1) - (2)].ival) | CURSOR_OPT_INSENSITIVE; ;} break; - case 1591: -#line 10778 "gram.y" + case 1660: +#line 11416 "gram.y" { (yyval.ival) = 0; ;} break; - case 1592: -#line 10779 "gram.y" + case 1661: +#line 11417 "gram.y" { (yyval.ival) = CURSOR_OPT_HOLD; ;} break; - case 1593: -#line 10780 "gram.y" + case 1662: +#line 11418 "gram.y" { (yyval.ival) = 0; ;} break; - case 1596: -#line 10833 "gram.y" + case 1665: +#line 11471 "gram.y" { (yyval.node) = (yyvsp[(2) - (3)].node); ;} break; - case 1597: -#line 10834 "gram.y" + case 1666: +#line 11472 "gram.y" { (yyval.node) = (yyvsp[(2) - (3)].node); ;} break; - case 1598: -#line 10849 "gram.y" + case 1667: +#line 11487 "gram.y" { (yyval.node) = (yyvsp[(1) - (1)].node); ;} break; - case 1599: -#line 10851 "gram.y" + case 1668: +#line 11489 "gram.y" { insertSelectOptions((SelectStmt *) (yyvsp[(1) - (2)].node), (yyvsp[(2) - (2)].list), NIL, - NULL, NULL, NULL, + NULL, NULL, yyscanner); (yyval.node) = (yyvsp[(1) - (2)].node); ;} break; - case 1600: -#line 10858 "gram.y" + case 1669: +#line 11496 "gram.y" { insertSelectOptions((SelectStmt *) (yyvsp[(1) - (4)].node), (yyvsp[(2) - (4)].list), (yyvsp[(3) - (4)].list), - list_nth((yyvsp[(4) - (4)].list), 0), list_nth((yyvsp[(4) - (4)].list), 1), + (yyvsp[(4) - (4)].selectlimit), NULL, yyscanner); (yyval.node) = (yyvsp[(1) - (4)].node); ;} break; - case 1601: -#line 10866 "gram.y" + case 1670: +#line 11504 "gram.y" { insertSelectOptions((SelectStmt *) (yyvsp[(1) - (4)].node), (yyvsp[(2) - (4)].list), (yyvsp[(4) - (4)].list), - list_nth((yyvsp[(3) - (4)].list), 0), list_nth((yyvsp[(3) - (4)].list), 1), + (yyvsp[(3) - (4)].selectlimit), NULL, yyscanner); (yyval.node) = (yyvsp[(1) - (4)].node); ;} break; - case 1602: -#line 10874 "gram.y" + case 1671: +#line 11512 "gram.y" { insertSelectOptions((SelectStmt *) (yyvsp[(2) - (2)].node), NULL, NIL, - NULL, NULL, + NULL, (yyvsp[(1) - (2)].with), yyscanner); (yyval.node) = (yyvsp[(2) - (2)].node); ;} break; - case 1603: -#line 10882 "gram.y" + case 1672: +#line 11520 "gram.y" { insertSelectOptions((SelectStmt *) (yyvsp[(2) - (3)].node), (yyvsp[(3) - (3)].list), NIL, - NULL, NULL, + NULL, (yyvsp[(1) - (3)].with), yyscanner); (yyval.node) = (yyvsp[(2) - (3)].node); ;} break; - case 1604: -#line 10890 "gram.y" + case 1673: +#line 11528 "gram.y" { insertSelectOptions((SelectStmt *) (yyvsp[(2) - (5)].node), (yyvsp[(3) - (5)].list), (yyvsp[(4) - (5)].list), - list_nth((yyvsp[(5) - (5)].list), 0), list_nth((yyvsp[(5) - (5)].list), 1), + (yyvsp[(5) - (5)].selectlimit), (yyvsp[(1) - (5)].with), yyscanner); (yyval.node) = (yyvsp[(2) - (5)].node); ;} break; - case 1605: -#line 10898 "gram.y" + case 1674: +#line 11536 "gram.y" { insertSelectOptions((SelectStmt *) (yyvsp[(2) - (5)].node), (yyvsp[(3) - (5)].list), (yyvsp[(5) - (5)].list), - list_nth((yyvsp[(4) - (5)].list), 0), list_nth((yyvsp[(4) - (5)].list), 1), + (yyvsp[(4) - (5)].selectlimit), (yyvsp[(1) - (5)].with), yyscanner); (yyval.node) = (yyvsp[(2) - (5)].node); ;} break; - case 1606: -#line 10908 "gram.y" + case 1675: +#line 11546 "gram.y" { (yyval.node) = (yyvsp[(1) - (1)].node); ;} break; - case 1607: -#line 10909 "gram.y" + case 1676: +#line 11547 "gram.y" { (yyval.node) = (yyvsp[(1) - (1)].node); ;} break; - case 1608: -#line 10939 "gram.y" + case 1677: +#line 11577 "gram.y" { SelectStmt *n = makeNode(SelectStmt); n->targetList = (yyvsp[(3) - (9)].list); @@ -39186,8 +41170,8 @@ YYLTYPE yylloc; ;} break; - case 1609: -#line 10953 "gram.y" + case 1678: +#line 11591 "gram.y" { SelectStmt *n = makeNode(SelectStmt); n->distinctClause = (yyvsp[(2) - (9)].list); @@ -39202,13 +41186,13 @@ YYLTYPE yylloc; ;} break; - case 1610: -#line 10965 "gram.y" + case 1679: +#line 11603 "gram.y" { (yyval.node) = (yyvsp[(1) - (1)].node); ;} break; - case 1611: -#line 10967 "gram.y" + case 1680: +#line 11605 "gram.y" { /* same as SELECT * FROM relation_expr */ ColumnRef *cr = makeNode(ColumnRef); @@ -39229,29 +41213,29 @@ YYLTYPE yylloc; ;} break; - case 1612: -#line 10986 "gram.y" + case 1681: +#line 11624 "gram.y" { (yyval.node) = makeSetOp(SETOP_UNION, (yyvsp[(3) - (4)].boolean), (yyvsp[(1) - (4)].node), (yyvsp[(4) - (4)].node)); ;} break; - case 1613: -#line 10990 "gram.y" + case 1682: +#line 11628 "gram.y" { (yyval.node) = makeSetOp(SETOP_INTERSECT, (yyvsp[(3) - (4)].boolean), (yyvsp[(1) - (4)].node), (yyvsp[(4) - (4)].node)); ;} break; - case 1614: -#line 10994 "gram.y" + case 1683: +#line 11632 "gram.y" { (yyval.node) = makeSetOp(SETOP_EXCEPT, (yyvsp[(3) - (4)].boolean), (yyvsp[(1) - (4)].node), (yyvsp[(4) - (4)].node)); ;} break; - case 1615: -#line 11011 "gram.y" + case 1684: +#line 11649 "gram.y" { (yyval.with) = makeNode(WithClause); (yyval.with)->ctes = (yyvsp[(2) - (2)].list); @@ -39260,8 +41244,8 @@ YYLTYPE yylloc; ;} break; - case 1616: -#line 11018 "gram.y" + case 1685: +#line 11656 "gram.y" { (yyval.with) = makeNode(WithClause); (yyval.with)->ctes = (yyvsp[(2) - (2)].list); @@ -39270,8 +41254,8 @@ YYLTYPE yylloc; ;} break; - case 1617: -#line 11025 "gram.y" + case 1686: +#line 11663 "gram.y" { (yyval.with) = makeNode(WithClause); (yyval.with)->ctes = (yyvsp[(3) - (3)].list); @@ -39280,40 +41264,56 @@ YYLTYPE yylloc; ;} break; - case 1618: -#line 11034 "gram.y" + case 1687: +#line 11672 "gram.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].node)); ;} break; - case 1619: -#line 11035 "gram.y" + case 1688: +#line 11673 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].node)); ;} break; - case 1620: -#line 11039 "gram.y" + case 1689: +#line 11677 "gram.y" { CommonTableExpr *n = makeNode(CommonTableExpr); - n->ctename = (yyvsp[(1) - (6)].str); - n->aliascolnames = (yyvsp[(2) - (6)].list); - n->ctequery = (yyvsp[(5) - (6)].node); - n->location = (yylsp[(1) - (6)]); + n->ctename = (yyvsp[(1) - (7)].str); + n->aliascolnames = (yyvsp[(2) - (7)].list); + n->ctematerialized = (yyvsp[(4) - (7)].ival); + n->ctequery = (yyvsp[(6) - (7)].node); + n->location = (yylsp[(1) - (7)]); (yyval.node) = (Node *) n; ;} break; - case 1621: -#line 11050 "gram.y" + case 1690: +#line 11689 "gram.y" + { (yyval.ival) = CTEMaterializeAlways; ;} + break; + + case 1691: +#line 11690 "gram.y" + { (yyval.ival) = CTEMaterializeNever; ;} + break; + + case 1692: +#line 11691 "gram.y" + { (yyval.ival) = CTEMaterializeDefault; ;} + break; + + case 1693: +#line 11695 "gram.y" { (yyval.with) = (yyvsp[(1) - (1)].with); ;} break; - case 1622: -#line 11051 "gram.y" + case 1694: +#line 11696 "gram.y" { (yyval.with) = NULL; ;} break; - case 1623: -#line 11056 "gram.y" + case 1695: +#line 11701 "gram.y" { (yyval.into) = makeNode(IntoClause); (yyval.into)->rel = (yyvsp[(2) - (2)].range); @@ -39326,45 +41326,45 @@ YYLTYPE yylloc; ;} break; - case 1624: -#line 11067 "gram.y" + case 1696: +#line 11712 "gram.y" { (yyval.into) = NULL; ;} break; - case 1625: -#line 11076 "gram.y" + case 1697: +#line 11721 "gram.y" { (yyval.range) = (yyvsp[(3) - (3)].range); (yyval.range)->relpersistence = RELPERSISTENCE_TEMP; ;} break; - case 1626: -#line 11081 "gram.y" + case 1698: +#line 11726 "gram.y" { (yyval.range) = (yyvsp[(3) - (3)].range); (yyval.range)->relpersistence = RELPERSISTENCE_TEMP; ;} break; - case 1627: -#line 11086 "gram.y" + case 1699: +#line 11731 "gram.y" { (yyval.range) = (yyvsp[(4) - (4)].range); (yyval.range)->relpersistence = RELPERSISTENCE_TEMP; ;} break; - case 1628: -#line 11091 "gram.y" + case 1700: +#line 11736 "gram.y" { (yyval.range) = (yyvsp[(4) - (4)].range); (yyval.range)->relpersistence = RELPERSISTENCE_TEMP; ;} break; - case 1629: -#line 11096 "gram.y" + case 1701: +#line 11741 "gram.y" { ereport(WARNING, (errmsg("GLOBAL is deprecated in temporary table creation"), @@ -39374,8 +41374,8 @@ YYLTYPE yylloc; ;} break; - case 1630: -#line 11104 "gram.y" + case 1702: +#line 11749 "gram.y" { ereport(WARNING, (errmsg("GLOBAL is deprecated in temporary table creation"), @@ -39385,102 +41385,102 @@ YYLTYPE yylloc; ;} break; - case 1631: -#line 11112 "gram.y" + case 1703: +#line 11757 "gram.y" { (yyval.range) = (yyvsp[(3) - (3)].range); (yyval.range)->relpersistence = RELPERSISTENCE_UNLOGGED; ;} break; - case 1632: -#line 11117 "gram.y" + case 1704: +#line 11762 "gram.y" { (yyval.range) = (yyvsp[(2) - (2)].range); (yyval.range)->relpersistence = RELPERSISTENCE_PERMANENT; ;} break; - case 1633: -#line 11122 "gram.y" + case 1705: +#line 11767 "gram.y" { (yyval.range) = (yyvsp[(1) - (1)].range); (yyval.range)->relpersistence = RELPERSISTENCE_PERMANENT; ;} break; - case 1634: -#line 11128 "gram.y" + case 1706: +#line 11773 "gram.y" {;} break; - case 1635: -#line 11129 "gram.y" + case 1707: +#line 11774 "gram.y" {;} break; - case 1636: -#line 11133 "gram.y" - { (yyval.boolean) = TRUE; ;} + case 1708: +#line 11778 "gram.y" + { (yyval.boolean) = true; ;} break; - case 1637: -#line 11134 "gram.y" - { (yyval.boolean) = FALSE; ;} + case 1709: +#line 11779 "gram.y" + { (yyval.boolean) = false; ;} break; - case 1638: -#line 11135 "gram.y" - { (yyval.boolean) = FALSE; ;} + case 1710: +#line 11780 "gram.y" + { (yyval.boolean) = false; ;} break; - case 1639: -#line 11142 "gram.y" + case 1711: +#line 11787 "gram.y" { (yyval.list) = list_make1(NIL); ;} break; - case 1640: -#line 11143 "gram.y" + case 1712: +#line 11788 "gram.y" { (yyval.list) = (yyvsp[(4) - (5)].list); ;} break; - case 1641: -#line 11147 "gram.y" + case 1713: +#line 11792 "gram.y" { (yyval.list) = NIL;;} break; - case 1642: -#line 11148 "gram.y" + case 1714: +#line 11793 "gram.y" { (yyval.list) = NIL; ;} break; - case 1643: -#line 11152 "gram.y" + case 1715: +#line 11797 "gram.y" { (yyval.list) = (yyvsp[(1) - (1)].list);;} break; - case 1644: -#line 11153 "gram.y" + case 1716: +#line 11798 "gram.y" { (yyval.list) = NIL; ;} break; - case 1645: -#line 11157 "gram.y" + case 1717: +#line 11802 "gram.y" { (yyval.list) = (yyvsp[(3) - (3)].list); ;} break; - case 1646: -#line 11161 "gram.y" + case 1718: +#line 11806 "gram.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].sortby)); ;} break; - case 1647: -#line 11162 "gram.y" + case 1719: +#line 11807 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].sortby)); ;} break; - case 1648: -#line 11166 "gram.y" + case 1720: +#line 11811 "gram.y" { (yyval.sortby) = makeNode(SortBy); (yyval.sortby)->node = (yyvsp[(1) - (4)].node); @@ -39491,8 +41491,8 @@ YYLTYPE yylloc; ;} break; - case 1649: -#line 11175 "gram.y" + case 1721: +#line 11820 "gram.y" { (yyval.sortby) = makeNode(SortBy); (yyval.sortby)->node = (yyvsp[(1) - (3)].node); @@ -39503,43 +41503,63 @@ YYLTYPE yylloc; ;} break; - case 1650: -#line 11187 "gram.y" - { (yyval.list) = list_make2((yyvsp[(2) - (2)].node), (yyvsp[(1) - (2)].node)); ;} + case 1722: +#line 11833 "gram.y" + { + (yyval.selectlimit) = (yyvsp[(1) - (2)].selectlimit); + ((yyval.selectlimit))->limitOffset = (yyvsp[(2) - (2)].node); + ;} break; - case 1651: -#line 11188 "gram.y" - { (yyval.list) = list_make2((yyvsp[(1) - (2)].node), (yyvsp[(2) - (2)].node)); ;} + case 1723: +#line 11838 "gram.y" + { + (yyval.selectlimit) = (yyvsp[(2) - (2)].selectlimit); + ((yyval.selectlimit))->limitOffset = (yyvsp[(1) - (2)].node); + ;} break; - case 1652: -#line 11189 "gram.y" - { (yyval.list) = list_make2(NULL, (yyvsp[(1) - (1)].node)); ;} + case 1724: +#line 11843 "gram.y" + { + (yyval.selectlimit) = (yyvsp[(1) - (1)].selectlimit); + ;} break; - case 1653: -#line 11190 "gram.y" - { (yyval.list) = list_make2((yyvsp[(1) - (1)].node), NULL); ;} + case 1725: +#line 11847 "gram.y" + { + SelectLimit *n = (SelectLimit *) palloc(sizeof(SelectLimit)); + n->limitOffset = (yyvsp[(1) - (1)].node); + n->limitCount = NULL; + n->limitOption = LIMIT_OPTION_COUNT; + (yyval.selectlimit) = n; + ;} break; - case 1654: -#line 11194 "gram.y" - { (yyval.list) = (yyvsp[(1) - (1)].list); ;} + case 1726: +#line 11857 "gram.y" + { (yyval.selectlimit) = (yyvsp[(1) - (1)].selectlimit); ;} break; - case 1655: -#line 11195 "gram.y" - { (yyval.list) = list_make2(NULL,NULL); ;} + case 1727: +#line 11858 "gram.y" + { (yyval.selectlimit) = NULL; ;} break; - case 1656: -#line 11200 "gram.y" - { (yyval.node) = (yyvsp[(2) - (2)].node); ;} + case 1728: +#line 11863 "gram.y" + { + SelectLimit *n = (SelectLimit *) palloc(sizeof(SelectLimit)); + n->limitOffset = NULL; + n->limitCount = (yyvsp[(2) - (2)].node); + n->limitOption = LIMIT_OPTION_COUNT; + (yyval.selectlimit) = n; + ;} break; - case 1657: -#line 11202 "gram.y" + case 1729: +#line 11871 "gram.y" { /* Disabled because it was too confusing, bjm 2002-02-18 */ ereport(ERROR, @@ -39550,204 +41570,238 @@ YYLTYPE yylloc; ;} break; - case 1658: -#line 11218 "gram.y" - { (yyval.node) = (yyvsp[(3) - (5)].node); ;} + case 1730: +#line 11887 "gram.y" + { + SelectLimit *n = (SelectLimit *) palloc(sizeof(SelectLimit)); + n->limitOffset = NULL; + n->limitCount = (yyvsp[(3) - (5)].node); + n->limitOption = LIMIT_OPTION_COUNT; + (yyval.selectlimit) = n; + ;} break; - case 1659: -#line 11220 "gram.y" - { (yyval.node) = makeIntConst(1, -1); ;} + case 1731: +#line 11895 "gram.y" + { + SelectLimit *n = (SelectLimit *) palloc(sizeof(SelectLimit)); + n->limitOffset = NULL; + n->limitCount = (yyvsp[(3) - (6)].node); + n->limitOption = LIMIT_OPTION_WITH_TIES; + (yyval.selectlimit) = n; + ;} break; - case 1660: -#line 11225 "gram.y" + case 1732: +#line 11903 "gram.y" + { + SelectLimit *n = (SelectLimit *) palloc(sizeof(SelectLimit)); + n->limitOffset = NULL; + n->limitCount = makeIntConst(1, -1); + n->limitOption = LIMIT_OPTION_COUNT; + (yyval.selectlimit) = n; + ;} + break; + + case 1733: +#line 11911 "gram.y" + { + SelectLimit *n = (SelectLimit *) palloc(sizeof(SelectLimit)); + n->limitOffset = NULL; + n->limitCount = makeIntConst(1, -1); + n->limitOption = LIMIT_OPTION_WITH_TIES; + (yyval.selectlimit) = n; + ;} + break; + + case 1734: +#line 11922 "gram.y" { (yyval.node) = (yyvsp[(2) - (2)].node); ;} break; - case 1661: -#line 11228 "gram.y" + case 1735: +#line 11925 "gram.y" { (yyval.node) = (yyvsp[(2) - (3)].node); ;} break; - case 1662: -#line 11232 "gram.y" + case 1736: +#line 11929 "gram.y" { (yyval.node) = (yyvsp[(1) - (1)].node); ;} break; - case 1663: -#line 11234 "gram.y" + case 1737: +#line 11931 "gram.y" { /* LIMIT ALL is represented as a NULL constant */ (yyval.node) = makeNullAConst((yylsp[(1) - (1)])); ;} break; - case 1664: -#line 11241 "gram.y" + case 1738: +#line 11938 "gram.y" { (yyval.node) = (yyvsp[(1) - (1)].node); ;} break; - case 1665: -#line 11261 "gram.y" + case 1739: +#line 11958 "gram.y" { (yyval.node) = (yyvsp[(1) - (1)].node); ;} break; - case 1666: -#line 11263 "gram.y" + case 1740: +#line 11960 "gram.y" { (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_OP, "+", NULL, (yyvsp[(2) - (2)].node), (yylsp[(1) - (2)])); ;} break; - case 1667: -#line 11265 "gram.y" + case 1741: +#line 11962 "gram.y" { (yyval.node) = doNegate((yyvsp[(2) - (2)].node), (yylsp[(1) - (2)])); ;} break; - case 1668: -#line 11269 "gram.y" + case 1742: +#line 11966 "gram.y" { (yyval.node) = makeIntConst((yyvsp[(1) - (1)].ival),(yylsp[(1) - (1)])); ;} break; - case 1669: -#line 11270 "gram.y" + case 1743: +#line 11967 "gram.y" { (yyval.node) = makeFloatConst((yyvsp[(1) - (1)].str),(yylsp[(1) - (1)])); ;} break; - case 1670: -#line 11274 "gram.y" + case 1744: +#line 11971 "gram.y" { (yyval.ival) = 0; ;} break; - case 1671: -#line 11275 "gram.y" + case 1745: +#line 11972 "gram.y" { (yyval.ival) = 0; ;} break; - case 1672: -#line 11278 "gram.y" + case 1746: +#line 11975 "gram.y" { (yyval.ival) = 0; ;} break; - case 1673: -#line 11279 "gram.y" + case 1747: +#line 11976 "gram.y" { (yyval.ival) = 0; ;} break; - case 1674: -#line 11304 "gram.y" + case 1748: +#line 12001 "gram.y" { (yyval.list) = (yyvsp[(3) - (3)].list); ;} break; - case 1675: -#line 11305 "gram.y" + case 1749: +#line 12002 "gram.y" { (yyval.list) = NIL; ;} break; - case 1676: -#line 11309 "gram.y" + case 1750: +#line 12006 "gram.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].node)); ;} break; - case 1677: -#line 11310 "gram.y" + case 1751: +#line 12007 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (3)].list),(yyvsp[(3) - (3)].node)); ;} break; - case 1678: -#line 11314 "gram.y" + case 1752: +#line 12011 "gram.y" { (yyval.node) = (yyvsp[(1) - (1)].node); ;} break; - case 1679: -#line 11315 "gram.y" + case 1753: +#line 12012 "gram.y" { (yyval.node) = (yyvsp[(1) - (1)].node); ;} break; - case 1680: -#line 11316 "gram.y" + case 1754: +#line 12013 "gram.y" { (yyval.node) = (yyvsp[(1) - (1)].node); ;} break; - case 1681: -#line 11317 "gram.y" + case 1755: +#line 12014 "gram.y" { (yyval.node) = (yyvsp[(1) - (1)].node); ;} break; - case 1682: -#line 11318 "gram.y" + case 1756: +#line 12015 "gram.y" { (yyval.node) = (yyvsp[(1) - (1)].node); ;} break; - case 1683: -#line 11323 "gram.y" + case 1757: +#line 12020 "gram.y" { (yyval.node) = (Node *) makeGroupingSet(GROUPING_SET_EMPTY, NIL, (yylsp[(1) - (2)])); ;} break; - case 1684: -#line 11336 "gram.y" + case 1758: +#line 12033 "gram.y" { (yyval.node) = (Node *) makeGroupingSet(GROUPING_SET_ROLLUP, (yyvsp[(3) - (4)].list), (yylsp[(1) - (4)])); ;} break; - case 1685: -#line 11343 "gram.y" + case 1759: +#line 12040 "gram.y" { (yyval.node) = (Node *) makeGroupingSet(GROUPING_SET_CUBE, (yyvsp[(3) - (4)].list), (yylsp[(1) - (4)])); ;} break; - case 1686: -#line 11350 "gram.y" + case 1760: +#line 12047 "gram.y" { (yyval.node) = (Node *) makeGroupingSet(GROUPING_SET_SETS, (yyvsp[(4) - (5)].list), (yylsp[(1) - (5)])); ;} break; - case 1687: -#line 11356 "gram.y" + case 1761: +#line 12053 "gram.y" { (yyval.node) = (yyvsp[(2) - (2)].node); ;} break; - case 1688: -#line 11357 "gram.y" + case 1762: +#line 12054 "gram.y" { (yyval.node) = NULL; ;} break; - case 1689: -#line 11361 "gram.y" + case 1763: +#line 12058 "gram.y" { (yyval.list) = (yyvsp[(1) - (1)].list); ;} break; - case 1690: -#line 11362 "gram.y" + case 1764: +#line 12059 "gram.y" { (yyval.list) = NIL; ;} break; - case 1691: -#line 11366 "gram.y" + case 1765: +#line 12063 "gram.y" { (yyval.list) = (yyvsp[(1) - (1)].list); ;} break; - case 1692: -#line 11367 "gram.y" + case 1766: +#line 12064 "gram.y" { (yyval.list) = NIL; ;} break; - case 1693: -#line 11371 "gram.y" + case 1767: +#line 12068 "gram.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].node)); ;} break; - case 1694: -#line 11372 "gram.y" + case 1768: +#line 12069 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (2)].list), (yyvsp[(2) - (2)].node)); ;} break; - case 1695: -#line 11377 "gram.y" + case 1769: +#line 12074 "gram.y" { LockingClause *n = makeNode(LockingClause); n->lockedRels = (yyvsp[(2) - (3)].list); @@ -39757,38 +41811,38 @@ YYLTYPE yylloc; ;} break; - case 1696: -#line 11387 "gram.y" + case 1770: +#line 12084 "gram.y" { (yyval.ival) = LCS_FORUPDATE; ;} break; - case 1697: -#line 11388 "gram.y" + case 1771: +#line 12085 "gram.y" { (yyval.ival) = LCS_FORNOKEYUPDATE; ;} break; - case 1698: -#line 11389 "gram.y" + case 1772: +#line 12086 "gram.y" { (yyval.ival) = LCS_FORSHARE; ;} break; - case 1699: -#line 11390 "gram.y" + case 1773: +#line 12087 "gram.y" { (yyval.ival) = LCS_FORKEYSHARE; ;} break; - case 1700: -#line 11394 "gram.y" + case 1774: +#line 12091 "gram.y" { (yyval.list) = (yyvsp[(2) - (2)].list); ;} break; - case 1701: -#line 11395 "gram.y" + case 1775: +#line 12092 "gram.y" { (yyval.list) = NIL; ;} break; - case 1702: -#line 11406 "gram.y" + case 1776: +#line 12103 "gram.y" { SelectStmt *n = makeNode(SelectStmt); n->valuesLists = list_make1((yyvsp[(3) - (4)].list)); @@ -39796,8 +41850,8 @@ YYLTYPE yylloc; ;} break; - case 1703: -#line 11412 "gram.y" + case 1777: +#line 12109 "gram.y" { SelectStmt *n = (SelectStmt *) (yyvsp[(1) - (5)].node); n->valuesLists = lappend(n->valuesLists, (yyvsp[(4) - (5)].list)); @@ -39805,36 +41859,36 @@ YYLTYPE yylloc; ;} break; - case 1704: -#line 11429 "gram.y" + case 1778: +#line 12126 "gram.y" { (yyval.list) = (yyvsp[(2) - (2)].list); ;} break; - case 1705: -#line 11430 "gram.y" + case 1779: +#line 12127 "gram.y" { (yyval.list) = NIL; ;} break; - case 1706: -#line 11434 "gram.y" + case 1780: +#line 12131 "gram.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].node)); ;} break; - case 1707: -#line 11435 "gram.y" + case 1781: +#line 12132 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].node)); ;} break; - case 1708: -#line 11442 "gram.y" + case 1782: +#line 12139 "gram.y" { (yyvsp[(1) - (2)].range)->alias = (yyvsp[(2) - (2)].alias); (yyval.node) = (Node *) (yyvsp[(1) - (2)].range); ;} break; - case 1709: -#line 11447 "gram.y" + case 1783: +#line 12144 "gram.y" { RangeTableSample *n = (RangeTableSample *) (yyvsp[(3) - (3)].node); (yyvsp[(1) - (3)].range)->alias = (yyvsp[(2) - (3)].alias); @@ -39844,8 +41898,8 @@ YYLTYPE yylloc; ;} break; - case 1710: -#line 11455 "gram.y" + case 1784: +#line 12152 "gram.y" { RangeFunction *n = (RangeFunction *) (yyvsp[(1) - (2)].node); n->alias = linitial((yyvsp[(2) - (2)].list)); @@ -39854,8 +41908,8 @@ YYLTYPE yylloc; ;} break; - case 1711: -#line 11462 "gram.y" + case 1785: +#line 12159 "gram.y" { RangeFunction *n = (RangeFunction *) (yyvsp[(2) - (3)].node); n->lateral = true; @@ -39865,8 +41919,8 @@ YYLTYPE yylloc; ;} break; - case 1712: -#line 11470 "gram.y" + case 1786: +#line 12167 "gram.y" { RangeTableFunc *n = (RangeTableFunc *) (yyvsp[(1) - (2)].node); n->alias = (yyvsp[(2) - (2)].alias); @@ -39874,8 +41928,8 @@ YYLTYPE yylloc; ;} break; - case 1713: -#line 11476 "gram.y" + case 1787: +#line 12173 "gram.y" { RangeTableFunc *n = (RangeTableFunc *) (yyvsp[(2) - (3)].node); n->lateral = true; @@ -39884,8 +41938,8 @@ YYLTYPE yylloc; ;} break; - case 1714: -#line 11483 "gram.y" + case 1788: +#line 12180 "gram.y" { RangeSubselect *n = makeNode(RangeSubselect); n->lateral = false; @@ -39922,8 +41976,8 @@ YYLTYPE yylloc; ;} break; - case 1715: -#line 11518 "gram.y" + case 1789: +#line 12215 "gram.y" { RangeSubselect *n = makeNode(RangeSubselect); n->lateral = true; @@ -39950,35 +42004,35 @@ YYLTYPE yylloc; ;} break; - case 1716: -#line 11543 "gram.y" + case 1790: +#line 12240 "gram.y" { (yyval.node) = (Node *) (yyvsp[(1) - (1)].jexpr); ;} break; - case 1717: -#line 11547 "gram.y" + case 1791: +#line 12244 "gram.y" { (yyvsp[(2) - (4)].jexpr)->alias = (yyvsp[(4) - (4)].alias); (yyval.node) = (Node *) (yyvsp[(2) - (4)].jexpr); ;} break; - case 1718: -#line 11573 "gram.y" + case 1792: +#line 12270 "gram.y" { (yyval.jexpr) = (yyvsp[(2) - (3)].jexpr); ;} break; - case 1719: -#line 11577 "gram.y" + case 1793: +#line 12274 "gram.y" { /* CROSS JOIN is same as unqualified inner join */ JoinExpr *n = makeNode(JoinExpr); n->jointype = JOIN_INNER; - n->isNatural = FALSE; + n->isNatural = false; n->larg = (yyvsp[(1) - (4)].node); n->rarg = (yyvsp[(4) - (4)].node); n->usingClause = NIL; @@ -39987,12 +42041,12 @@ YYLTYPE yylloc; ;} break; - case 1720: -#line 11589 "gram.y" + case 1794: +#line 12286 "gram.y" { JoinExpr *n = makeNode(JoinExpr); n->jointype = (yyvsp[(2) - (5)].jtype); - n->isNatural = FALSE; + n->isNatural = false; n->larg = (yyvsp[(1) - (5)].node); n->rarg = (yyvsp[(4) - (5)].node); if ((yyvsp[(5) - (5)].node) != NULL && IsA((yyvsp[(5) - (5)].node), List)) @@ -40003,13 +42057,13 @@ YYLTYPE yylloc; ;} break; - case 1721: -#line 11602 "gram.y" + case 1795: +#line 12299 "gram.y" { /* letting join_type reduce to empty doesn't work */ JoinExpr *n = makeNode(JoinExpr); n->jointype = JOIN_INNER; - n->isNatural = FALSE; + n->isNatural = false; n->larg = (yyvsp[(1) - (4)].node); n->rarg = (yyvsp[(3) - (4)].node); if ((yyvsp[(4) - (4)].node) != NULL && IsA((yyvsp[(4) - (4)].node), List)) @@ -40020,12 +42074,12 @@ YYLTYPE yylloc; ;} break; - case 1722: -#line 11616 "gram.y" + case 1796: +#line 12313 "gram.y" { JoinExpr *n = makeNode(JoinExpr); n->jointype = (yyvsp[(3) - (5)].jtype); - n->isNatural = TRUE; + n->isNatural = true; n->larg = (yyvsp[(1) - (5)].node); n->rarg = (yyvsp[(5) - (5)].node); n->usingClause = NIL; /* figure out which columns later... */ @@ -40034,13 +42088,13 @@ YYLTYPE yylloc; ;} break; - case 1723: -#line 11627 "gram.y" + case 1797: +#line 12324 "gram.y" { /* letting join_type reduce to empty doesn't work */ JoinExpr *n = makeNode(JoinExpr); n->jointype = JOIN_INNER; - n->isNatural = TRUE; + n->isNatural = true; n->larg = (yyvsp[(1) - (4)].node); n->rarg = (yyvsp[(4) - (4)].node); n->usingClause = NIL; /* figure out which columns later... */ @@ -40049,8 +42103,8 @@ YYLTYPE yylloc; ;} break; - case 1724: -#line 11642 "gram.y" + case 1798: +#line 12339 "gram.y" { (yyval.alias) = makeNode(Alias); (yyval.alias)->aliasname = (yyvsp[(2) - (5)].str); @@ -40058,16 +42112,16 @@ YYLTYPE yylloc; ;} break; - case 1725: -#line 11648 "gram.y" + case 1799: +#line 12345 "gram.y" { (yyval.alias) = makeNode(Alias); (yyval.alias)->aliasname = (yyvsp[(2) - (2)].str); ;} break; - case 1726: -#line 11653 "gram.y" + case 1800: +#line 12350 "gram.y" { (yyval.alias) = makeNode(Alias); (yyval.alias)->aliasname = (yyvsp[(1) - (4)].str); @@ -40075,40 +42129,40 @@ YYLTYPE yylloc; ;} break; - case 1727: -#line 11659 "gram.y" + case 1801: +#line 12356 "gram.y" { (yyval.alias) = makeNode(Alias); (yyval.alias)->aliasname = (yyvsp[(1) - (1)].str); ;} break; - case 1728: -#line 11665 "gram.y" + case 1802: +#line 12362 "gram.y" { (yyval.alias) = (yyvsp[(1) - (1)].alias); ;} break; - case 1729: -#line 11666 "gram.y" + case 1803: +#line 12363 "gram.y" { (yyval.alias) = NULL; ;} break; - case 1730: -#line 11675 "gram.y" + case 1804: +#line 12372 "gram.y" { (yyval.list) = list_make2((yyvsp[(1) - (1)].alias), NIL); ;} break; - case 1731: -#line 11679 "gram.y" + case 1805: +#line 12376 "gram.y" { (yyval.list) = list_make2(NULL, (yyvsp[(3) - (4)].list)); ;} break; - case 1732: -#line 11683 "gram.y" + case 1806: +#line 12380 "gram.y" { Alias *a = makeNode(Alias); a->aliasname = (yyvsp[(2) - (5)].str); @@ -40116,8 +42170,8 @@ YYLTYPE yylloc; ;} break; - case 1733: -#line 11689 "gram.y" + case 1807: +#line 12386 "gram.y" { Alias *a = makeNode(Alias); a->aliasname = (yyvsp[(1) - (4)].str); @@ -40125,55 +42179,55 @@ YYLTYPE yylloc; ;} break; - case 1734: -#line 11695 "gram.y" + case 1808: +#line 12392 "gram.y" { (yyval.list) = list_make2(NULL, NIL); ;} break; - case 1735: -#line 11700 "gram.y" + case 1809: +#line 12397 "gram.y" { (yyval.jtype) = JOIN_FULL; ;} break; - case 1736: -#line 11701 "gram.y" + case 1810: +#line 12398 "gram.y" { (yyval.jtype) = JOIN_LEFT; ;} break; - case 1737: -#line 11702 "gram.y" + case 1811: +#line 12399 "gram.y" { (yyval.jtype) = JOIN_RIGHT; ;} break; - case 1738: -#line 11703 "gram.y" + case 1812: +#line 12400 "gram.y" { (yyval.jtype) = JOIN_INNER; ;} break; - case 1739: -#line 11707 "gram.y" + case 1813: +#line 12404 "gram.y" { (yyval.node) = NULL; ;} break; - case 1740: -#line 11708 "gram.y" + case 1814: +#line 12405 "gram.y" { (yyval.node) = NULL; ;} break; - case 1741: -#line 11720 "gram.y" + case 1815: +#line 12417 "gram.y" { (yyval.node) = (Node *) (yyvsp[(3) - (4)].list); ;} break; - case 1742: -#line 11721 "gram.y" + case 1816: +#line 12418 "gram.y" { (yyval.node) = (yyvsp[(2) - (2)].node); ;} break; - case 1743: -#line 11727 "gram.y" + case 1817: +#line 12424 "gram.y" { /* inheritance query, implicitly */ (yyval.range) = (yyvsp[(1) - (1)].range); @@ -40182,8 +42236,8 @@ YYLTYPE yylloc; ;} break; - case 1744: -#line 11734 "gram.y" + case 1818: +#line 12431 "gram.y" { /* inheritance query, explicitly */ (yyval.range) = (yyvsp[(1) - (2)].range); @@ -40192,8 +42246,8 @@ YYLTYPE yylloc; ;} break; - case 1745: -#line 11741 "gram.y" + case 1819: +#line 12438 "gram.y" { /* no inheritance */ (yyval.range) = (yyvsp[(2) - (2)].range); @@ -40202,8 +42256,8 @@ YYLTYPE yylloc; ;} break; - case 1746: -#line 11748 "gram.y" + case 1820: +#line 12445 "gram.y" { /* no inheritance, SQL99-style syntax */ (yyval.range) = (yyvsp[(3) - (4)].range); @@ -40212,25 +42266,25 @@ YYLTYPE yylloc; ;} break; - case 1747: -#line 11758 "gram.y" + case 1821: +#line 12455 "gram.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].range)); ;} break; - case 1748: -#line 11759 "gram.y" + case 1822: +#line 12456 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].range)); ;} break; - case 1749: -#line 11773 "gram.y" + case 1823: +#line 12470 "gram.y" { (yyval.range) = (yyvsp[(1) - (1)].range); ;} break; - case 1750: -#line 11777 "gram.y" + case 1824: +#line 12474 "gram.y" { Alias *alias = makeNode(Alias); alias->aliasname = (yyvsp[(2) - (2)].str); @@ -40239,8 +42293,8 @@ YYLTYPE yylloc; ;} break; - case 1751: -#line 11784 "gram.y" + case 1825: +#line 12481 "gram.y" { Alias *alias = makeNode(Alias); alias->aliasname = (yyvsp[(3) - (3)].str); @@ -40249,8 +42303,8 @@ YYLTYPE yylloc; ;} break; - case 1752: -#line 11797 "gram.y" + case 1826: +#line 12494 "gram.y" { RangeTableSample *n = makeNode(RangeTableSample); /* n->relation will be filled in later */ @@ -40262,18 +42316,18 @@ YYLTYPE yylloc; ;} break; - case 1753: -#line 11809 "gram.y" + case 1827: +#line 12506 "gram.y" { (yyval.node) = (Node *) (yyvsp[(3) - (4)].node); ;} break; - case 1754: -#line 11810 "gram.y" + case 1828: +#line 12507 "gram.y" { (yyval.node) = NULL; ;} break; - case 1755: -#line 11826 "gram.y" + case 1829: +#line 12523 "gram.y" { RangeFunction *n = makeNode(RangeFunction); n->lateral = false; @@ -40285,8 +42339,8 @@ YYLTYPE yylloc; ;} break; - case 1756: -#line 11836 "gram.y" + case 1830: +#line 12533 "gram.y" { RangeFunction *n = makeNode(RangeFunction); n->lateral = false; @@ -40298,58 +42352,58 @@ YYLTYPE yylloc; ;} break; - case 1757: -#line 11848 "gram.y" + case 1831: +#line 12545 "gram.y" { (yyval.list) = list_make2((yyvsp[(1) - (2)].node), (yyvsp[(2) - (2)].list)); ;} break; - case 1758: -#line 11852 "gram.y" + case 1832: +#line 12549 "gram.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].list)); ;} break; - case 1759: -#line 11853 "gram.y" + case 1833: +#line 12550 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].list)); ;} break; - case 1760: -#line 11856 "gram.y" + case 1834: +#line 12553 "gram.y" { (yyval.list) = (yyvsp[(3) - (4)].list); ;} break; - case 1761: -#line 11857 "gram.y" + case 1835: +#line 12554 "gram.y" { (yyval.list) = NIL; ;} break; - case 1762: -#line 11860 "gram.y" + case 1836: +#line 12557 "gram.y" { (yyval.boolean) = true; ;} break; - case 1763: -#line 11861 "gram.y" + case 1837: +#line 12558 "gram.y" { (yyval.boolean) = false; ;} break; - case 1764: -#line 11866 "gram.y" + case 1838: +#line 12563 "gram.y" { (yyval.node) = (yyvsp[(2) - (2)].node); ;} break; - case 1765: -#line 11867 "gram.y" + case 1839: +#line 12564 "gram.y" { (yyval.node) = NULL; ;} break; - case 1766: -#line 11872 "gram.y" + case 1840: +#line 12569 "gram.y" { (yyval.node) = (yyvsp[(2) - (2)].node); ;} break; - case 1767: -#line 11874 "gram.y" + case 1841: +#line 12571 "gram.y" { CurrentOfExpr *n = makeNode(CurrentOfExpr); /* cvarno is filled in by parse analysis */ @@ -40359,37 +42413,37 @@ YYLTYPE yylloc; ;} break; - case 1768: -#line 11881 "gram.y" + case 1842: +#line 12578 "gram.y" { (yyval.node) = NULL; ;} break; - case 1769: -#line 11886 "gram.y" + case 1843: +#line 12583 "gram.y" { (yyval.list) = (yyvsp[(1) - (1)].list); ;} break; - case 1770: -#line 11887 "gram.y" + case 1844: +#line 12584 "gram.y" { (yyval.list) = NIL; ;} break; - case 1771: -#line 11892 "gram.y" + case 1845: +#line 12589 "gram.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].node)); ;} break; - case 1772: -#line 11896 "gram.y" + case 1846: +#line 12593 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].node)); ;} break; - case 1773: -#line 11902 "gram.y" + case 1847: +#line 12599 "gram.y" { ColumnDef *n = makeNode(ColumnDef); n->colname = (yyvsp[(1) - (3)].str); @@ -40409,8 +42463,8 @@ YYLTYPE yylloc; ;} break; - case 1774: -#line 11926 "gram.y" + case 1848: +#line 12623 "gram.y" { RangeTableFunc *n = makeNode(RangeTableFunc); n->rowexpr = (yyvsp[(3) - (7)].node); @@ -40422,8 +42476,8 @@ YYLTYPE yylloc; ;} break; - case 1775: -#line 11937 "gram.y" + case 1849: +#line 12634 "gram.y" { RangeTableFunc *n = makeNode(RangeTableFunc); n->rowexpr = (yyvsp[(8) - (12)].node); @@ -40435,18 +42489,18 @@ YYLTYPE yylloc; ;} break; - case 1776: -#line 11948 "gram.y" + case 1850: +#line 12645 "gram.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].node)); ;} break; - case 1777: -#line 11949 "gram.y" + case 1851: +#line 12646 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].node)); ;} break; - case 1778: -#line 11954 "gram.y" + case 1852: +#line 12651 "gram.y" { RangeTableFuncCol *fc = makeNode(RangeTableFuncCol); @@ -40462,8 +42516,8 @@ YYLTYPE yylloc; ;} break; - case 1779: -#line 11968 "gram.y" + case 1853: +#line 12665 "gram.y" { RangeTableFuncCol *fc = makeNode(RangeTableFuncCol); ListCell *option; @@ -40522,8 +42576,8 @@ YYLTYPE yylloc; ;} break; - case 1780: -#line 12025 "gram.y" + case 1854: +#line 12722 "gram.y" { RangeTableFuncCol *fc = makeNode(RangeTableFuncCol); @@ -40536,48 +42590,48 @@ YYLTYPE yylloc; ;} break; - case 1781: -#line 12039 "gram.y" + case 1855: +#line 12736 "gram.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].defelt)); ;} break; - case 1782: -#line 12041 "gram.y" + case 1856: +#line 12738 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (2)].list), (yyvsp[(2) - (2)].defelt)); ;} break; - case 1783: -#line 12046 "gram.y" + case 1857: +#line 12743 "gram.y" { (yyval.defelt) = makeDefElem((yyvsp[(1) - (2)].str), (yyvsp[(2) - (2)].node), (yylsp[(1) - (2)])); ;} break; - case 1784: -#line 12048 "gram.y" + case 1858: +#line 12745 "gram.y" { (yyval.defelt) = makeDefElem("default", (yyvsp[(2) - (2)].node), (yylsp[(1) - (2)])); ;} break; - case 1785: -#line 12050 "gram.y" + case 1859: +#line 12747 "gram.y" { (yyval.defelt) = makeDefElem("is_not_null", (Node *) makeInteger(true), (yylsp[(1) - (2)])); ;} break; - case 1786: -#line 12052 "gram.y" + case 1860: +#line 12749 "gram.y" { (yyval.defelt) = makeDefElem("is_not_null", (Node *) makeInteger(false), (yylsp[(1) - (1)])); ;} break; - case 1787: -#line 12057 "gram.y" + case 1861: +#line 12754 "gram.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].target)); ;} break; - case 1788: -#line 12059 "gram.y" + case 1862: +#line 12756 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].target)); ;} break; - case 1789: -#line 12064 "gram.y" + case 1863: +#line 12761 "gram.y" { (yyval.target) = makeNode(ResTarget); (yyval.target)->name = (yyvsp[(3) - (3)].str); @@ -40587,8 +42641,8 @@ YYLTYPE yylloc; ;} break; - case 1790: -#line 12072 "gram.y" + case 1864: +#line 12769 "gram.y" { (yyval.target) = makeNode(ResTarget); (yyval.target)->name = NULL; @@ -40598,107 +42652,107 @@ YYLTYPE yylloc; ;} break; - case 1791: -#line 12092 "gram.y" + case 1865: +#line 12789 "gram.y" { (yyval.typnam) = (yyvsp[(1) - (2)].typnam); (yyval.typnam)->arrayBounds = (yyvsp[(2) - (2)].list); ;} break; - case 1792: -#line 12097 "gram.y" + case 1866: +#line 12794 "gram.y" { (yyval.typnam) = (yyvsp[(2) - (3)].typnam); (yyval.typnam)->arrayBounds = (yyvsp[(3) - (3)].list); - (yyval.typnam)->setof = TRUE; + (yyval.typnam)->setof = true; ;} break; - case 1793: -#line 12104 "gram.y" + case 1867: +#line 12801 "gram.y" { (yyval.typnam) = (yyvsp[(1) - (5)].typnam); (yyval.typnam)->arrayBounds = list_make1(makeInteger((yyvsp[(4) - (5)].ival))); ;} break; - case 1794: -#line 12109 "gram.y" + case 1868: +#line 12806 "gram.y" { (yyval.typnam) = (yyvsp[(2) - (6)].typnam); (yyval.typnam)->arrayBounds = list_make1(makeInteger((yyvsp[(5) - (6)].ival))); - (yyval.typnam)->setof = TRUE; + (yyval.typnam)->setof = true; ;} break; - case 1795: -#line 12115 "gram.y" + case 1869: +#line 12812 "gram.y" { (yyval.typnam) = (yyvsp[(1) - (2)].typnam); (yyval.typnam)->arrayBounds = list_make1(makeInteger(-1)); ;} break; - case 1796: -#line 12120 "gram.y" + case 1870: +#line 12817 "gram.y" { (yyval.typnam) = (yyvsp[(2) - (3)].typnam); (yyval.typnam)->arrayBounds = list_make1(makeInteger(-1)); - (yyval.typnam)->setof = TRUE; + (yyval.typnam)->setof = true; ;} break; - case 1797: -#line 12129 "gram.y" + case 1871: +#line 12826 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (3)].list), makeInteger(-1)); ;} break; - case 1798: -#line 12131 "gram.y" + case 1872: +#line 12828 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (4)].list), makeInteger((yyvsp[(3) - (4)].ival))); ;} break; - case 1799: -#line 12133 "gram.y" + case 1873: +#line 12830 "gram.y" { (yyval.list) = NIL; ;} break; - case 1800: -#line 12137 "gram.y" + case 1874: +#line 12834 "gram.y" { (yyval.typnam) = (yyvsp[(1) - (1)].typnam); ;} break; - case 1801: -#line 12138 "gram.y" + case 1875: +#line 12835 "gram.y" { (yyval.typnam) = (yyvsp[(1) - (1)].typnam); ;} break; - case 1802: -#line 12139 "gram.y" + case 1876: +#line 12836 "gram.y" { (yyval.typnam) = (yyvsp[(1) - (1)].typnam); ;} break; - case 1803: -#line 12140 "gram.y" + case 1877: +#line 12837 "gram.y" { (yyval.typnam) = (yyvsp[(1) - (1)].typnam); ;} break; - case 1804: -#line 12141 "gram.y" + case 1878: +#line 12838 "gram.y" { (yyval.typnam) = (yyvsp[(1) - (1)].typnam); ;} break; - case 1805: -#line 12143 "gram.y" + case 1879: +#line 12840 "gram.y" { (yyval.typnam) = (yyvsp[(1) - (2)].typnam); (yyval.typnam)->typmods = (yyvsp[(2) - (2)].list); ;} break; - case 1806: -#line 12148 "gram.y" + case 1880: +#line 12845 "gram.y" { (yyval.typnam) = (yyvsp[(1) - (4)].typnam); (yyval.typnam)->typmods = list_make2(makeIntConst(INTERVAL_FULL_RANGE, -1), @@ -40706,28 +42760,28 @@ YYLTYPE yylloc; ;} break; - case 1807: -#line 12167 "gram.y" + case 1881: +#line 12864 "gram.y" { (yyval.typnam) = (yyvsp[(1) - (1)].typnam); ;} break; - case 1808: -#line 12168 "gram.y" + case 1882: +#line 12865 "gram.y" { (yyval.typnam) = (yyvsp[(1) - (1)].typnam); ;} break; - case 1809: -#line 12169 "gram.y" + case 1883: +#line 12866 "gram.y" { (yyval.typnam) = (yyvsp[(1) - (1)].typnam); ;} break; - case 1810: -#line 12170 "gram.y" + case 1884: +#line 12867 "gram.y" { (yyval.typnam) = (yyvsp[(1) - (1)].typnam); ;} break; - case 1811: -#line 12182 "gram.y" + case 1885: +#line 12879 "gram.y" { (yyval.typnam) = makeTypeName((yyvsp[(1) - (2)].str)); (yyval.typnam)->typmods = (yyvsp[(2) - (2)].list); @@ -40735,8 +42789,8 @@ YYLTYPE yylloc; ;} break; - case 1812: -#line 12188 "gram.y" + case 1886: +#line 12885 "gram.y" { (yyval.typnam) = makeTypeNameFromNameList(lcons(makeString((yyvsp[(1) - (3)].str)), (yyvsp[(2) - (3)].list))); (yyval.typnam)->typmods = (yyvsp[(3) - (3)].list); @@ -40744,74 +42798,74 @@ YYLTYPE yylloc; ;} break; - case 1813: -#line 12195 "gram.y" + case 1887: +#line 12892 "gram.y" { (yyval.list) = (yyvsp[(2) - (3)].list); ;} break; - case 1814: -#line 12196 "gram.y" + case 1888: +#line 12893 "gram.y" { (yyval.list) = NIL; ;} break; - case 1815: -#line 12203 "gram.y" + case 1889: +#line 12900 "gram.y" { (yyval.typnam) = SystemTypeName("int4"); (yyval.typnam)->location = (yylsp[(1) - (1)]); ;} break; - case 1816: -#line 12208 "gram.y" + case 1890: +#line 12905 "gram.y" { (yyval.typnam) = SystemTypeName("int4"); (yyval.typnam)->location = (yylsp[(1) - (1)]); ;} break; - case 1817: -#line 12213 "gram.y" + case 1891: +#line 12910 "gram.y" { (yyval.typnam) = SystemTypeName("int2"); (yyval.typnam)->location = (yylsp[(1) - (1)]); ;} break; - case 1818: -#line 12218 "gram.y" + case 1892: +#line 12915 "gram.y" { (yyval.typnam) = SystemTypeName("int8"); (yyval.typnam)->location = (yylsp[(1) - (1)]); ;} break; - case 1819: -#line 12223 "gram.y" + case 1893: +#line 12920 "gram.y" { (yyval.typnam) = SystemTypeName("float4"); (yyval.typnam)->location = (yylsp[(1) - (1)]); ;} break; - case 1820: -#line 12228 "gram.y" + case 1894: +#line 12925 "gram.y" { (yyval.typnam) = (yyvsp[(2) - (2)].typnam); (yyval.typnam)->location = (yylsp[(1) - (2)]); ;} break; - case 1821: -#line 12233 "gram.y" + case 1895: +#line 12930 "gram.y" { (yyval.typnam) = SystemTypeName("float8"); (yyval.typnam)->location = (yylsp[(1) - (2)]); ;} break; - case 1822: -#line 12238 "gram.y" + case 1896: +#line 12935 "gram.y" { (yyval.typnam) = SystemTypeName("numeric"); (yyval.typnam)->typmods = (yyvsp[(2) - (2)].list); @@ -40819,8 +42873,8 @@ YYLTYPE yylloc; ;} break; - case 1823: -#line 12244 "gram.y" + case 1897: +#line 12941 "gram.y" { (yyval.typnam) = SystemTypeName("numeric"); (yyval.typnam)->typmods = (yyvsp[(2) - (2)].list); @@ -40828,8 +42882,8 @@ YYLTYPE yylloc; ;} break; - case 1824: -#line 12250 "gram.y" + case 1898: +#line 12947 "gram.y" { (yyval.typnam) = SystemTypeName("numeric"); (yyval.typnam)->typmods = (yyvsp[(2) - (2)].list); @@ -40837,16 +42891,16 @@ YYLTYPE yylloc; ;} break; - case 1825: -#line 12256 "gram.y" + case 1899: +#line 12953 "gram.y" { (yyval.typnam) = SystemTypeName("bool"); (yyval.typnam)->location = (yylsp[(1) - (1)]); ;} break; - case 1826: -#line 12263 "gram.y" + case 1900: +#line 12960 "gram.y" { /* * Check FLOAT() precision limits assuming IEEE floating @@ -40869,44 +42923,44 @@ YYLTYPE yylloc; ;} break; - case 1827: -#line 12284 "gram.y" + case 1901: +#line 12981 "gram.y" { (yyval.typnam) = SystemTypeName("float8"); ;} break; - case 1828: -#line 12294 "gram.y" + case 1902: +#line 12991 "gram.y" { (yyval.typnam) = (yyvsp[(1) - (1)].typnam); ;} break; - case 1829: -#line 12298 "gram.y" + case 1903: +#line 12995 "gram.y" { (yyval.typnam) = (yyvsp[(1) - (1)].typnam); ;} break; - case 1830: -#line 12306 "gram.y" + case 1904: +#line 13003 "gram.y" { (yyval.typnam) = (yyvsp[(1) - (1)].typnam); ;} break; - case 1831: -#line 12310 "gram.y" + case 1905: +#line 13007 "gram.y" { (yyval.typnam) = (yyvsp[(1) - (1)].typnam); (yyval.typnam)->typmods = NIL; ;} break; - case 1832: -#line 12318 "gram.y" + case 1906: +#line 13015 "gram.y" { char *typname; @@ -40917,8 +42971,8 @@ YYLTYPE yylloc; ;} break; - case 1833: -#line 12330 "gram.y" + case 1907: +#line 13027 "gram.y" { /* bit defaults to bit(1), varbit to no limit */ if ((yyvsp[(2) - (2)].boolean)) @@ -40934,29 +42988,29 @@ YYLTYPE yylloc; ;} break; - case 1834: -#line 12351 "gram.y" + case 1908: +#line 13048 "gram.y" { (yyval.typnam) = (yyvsp[(1) - (1)].typnam); ;} break; - case 1835: -#line 12355 "gram.y" + case 1909: +#line 13052 "gram.y" { (yyval.typnam) = (yyvsp[(1) - (1)].typnam); ;} break; - case 1836: -#line 12361 "gram.y" + case 1910: +#line 13058 "gram.y" { (yyval.typnam) = (yyvsp[(1) - (1)].typnam); ;} break; - case 1837: -#line 12365 "gram.y" + case 1911: +#line 13062 "gram.y" { /* Length was not specified so allow to be unrestricted. * This handles problems with fixed-length (bpchar) strings @@ -40969,17 +43023,17 @@ YYLTYPE yylloc; ;} break; - case 1838: -#line 12378 "gram.y" + case 1912: +#line 13075 "gram.y" { (yyval.typnam) = SystemTypeName((yyvsp[(1) - (4)].str)); - (yyval.typnam)->typmods = list_make1((yyvsp[(3) - (4)].node)); + (yyval.typnam)->typmods = list_make1(makeIntConst((yyvsp[(3) - (4)].ival), (yylsp[(3) - (4)]))); (yyval.typnam)->location = (yylsp[(1) - (4)]); ;} break; - case 1839: -#line 12386 "gram.y" + case 1913: +#line 13083 "gram.y" { (yyval.typnam) = SystemTypeName((yyvsp[(1) - (1)].str)); /* char defaults to char(1), varchar to no limit */ @@ -40989,48 +43043,48 @@ YYLTYPE yylloc; ;} break; - case 1840: -#line 12396 "gram.y" + case 1914: +#line 13093 "gram.y" { (yyval.str) = (yyvsp[(2) - (2)].boolean) ? "varchar": "bpchar"; ;} break; - case 1841: -#line 12398 "gram.y" + case 1915: +#line 13095 "gram.y" { (yyval.str) = (yyvsp[(2) - (2)].boolean) ? "varchar": "bpchar"; ;} break; - case 1842: -#line 12400 "gram.y" + case 1916: +#line 13097 "gram.y" { (yyval.str) = "varchar"; ;} break; - case 1843: -#line 12402 "gram.y" + case 1917: +#line 13099 "gram.y" { (yyval.str) = (yyvsp[(3) - (3)].boolean) ? "varchar": "bpchar"; ;} break; - case 1844: -#line 12404 "gram.y" + case 1918: +#line 13101 "gram.y" { (yyval.str) = (yyvsp[(3) - (3)].boolean) ? "varchar": "bpchar"; ;} break; - case 1845: -#line 12406 "gram.y" + case 1919: +#line 13103 "gram.y" { (yyval.str) = (yyvsp[(2) - (2)].boolean) ? "varchar": "bpchar"; ;} break; - case 1846: -#line 12410 "gram.y" - { (yyval.boolean) = TRUE; ;} + case 1920: +#line 13107 "gram.y" + { (yyval.boolean) = true; ;} break; - case 1847: -#line 12411 "gram.y" - { (yyval.boolean) = FALSE; ;} + case 1921: +#line 13108 "gram.y" + { (yyval.boolean) = false; ;} break; - case 1848: -#line 12419 "gram.y" + case 1922: +#line 13116 "gram.y" { if ((yyvsp[(5) - (5)].boolean)) (yyval.typnam) = SystemTypeName("timestamptz"); @@ -41041,8 +43095,8 @@ YYLTYPE yylloc; ;} break; - case 1849: -#line 12428 "gram.y" + case 1923: +#line 13125 "gram.y" { if ((yyvsp[(2) - (2)].boolean)) (yyval.typnam) = SystemTypeName("timestamptz"); @@ -41052,8 +43106,8 @@ YYLTYPE yylloc; ;} break; - case 1850: -#line 12436 "gram.y" + case 1924: +#line 13133 "gram.y" { if ((yyvsp[(5) - (5)].boolean)) (yyval.typnam) = SystemTypeName("timetz"); @@ -41064,8 +43118,8 @@ YYLTYPE yylloc; ;} break; - case 1851: -#line 12445 "gram.y" + case 1925: +#line 13142 "gram.y" { if ((yyvsp[(2) - (2)].boolean)) (yyval.typnam) = SystemTypeName("timetz"); @@ -41075,77 +43129,77 @@ YYLTYPE yylloc; ;} break; - case 1852: -#line 12456 "gram.y" + case 1926: +#line 13153 "gram.y" { (yyval.typnam) = SystemTypeName("interval"); (yyval.typnam)->location = (yylsp[(1) - (1)]); ;} break; - case 1853: -#line 12463 "gram.y" - { (yyval.boolean) = TRUE; ;} + case 1927: +#line 13160 "gram.y" + { (yyval.boolean) = true; ;} break; - case 1854: -#line 12464 "gram.y" - { (yyval.boolean) = FALSE; ;} + case 1928: +#line 13161 "gram.y" + { (yyval.boolean) = false; ;} break; - case 1855: -#line 12465 "gram.y" - { (yyval.boolean) = FALSE; ;} + case 1929: +#line 13162 "gram.y" + { (yyval.boolean) = false; ;} break; - case 1856: -#line 12470 "gram.y" + case 1930: +#line 13167 "gram.y" { (yyval.list) = list_make1(makeIntConst(INTERVAL_MASK(YEAR), (yylsp[(1) - (1)]))); ;} break; - case 1857: -#line 12472 "gram.y" + case 1931: +#line 13169 "gram.y" { (yyval.list) = list_make1(makeIntConst(INTERVAL_MASK(MONTH), (yylsp[(1) - (1)]))); ;} break; - case 1858: -#line 12474 "gram.y" + case 1932: +#line 13171 "gram.y" { (yyval.list) = list_make1(makeIntConst(INTERVAL_MASK(DAY), (yylsp[(1) - (1)]))); ;} break; - case 1859: -#line 12476 "gram.y" + case 1933: +#line 13173 "gram.y" { (yyval.list) = list_make1(makeIntConst(INTERVAL_MASK(HOUR), (yylsp[(1) - (1)]))); ;} break; - case 1860: -#line 12478 "gram.y" + case 1934: +#line 13175 "gram.y" { (yyval.list) = list_make1(makeIntConst(INTERVAL_MASK(MINUTE), (yylsp[(1) - (1)]))); ;} break; - case 1861: -#line 12480 "gram.y" + case 1935: +#line 13177 "gram.y" { (yyval.list) = (yyvsp[(1) - (1)].list); ;} break; - case 1862: -#line 12482 "gram.y" + case 1936: +#line 13179 "gram.y" { (yyval.list) = list_make1(makeIntConst(INTERVAL_MASK(YEAR) | INTERVAL_MASK(MONTH), (yylsp[(1) - (3)]))); ;} break; - case 1863: -#line 12487 "gram.y" + case 1937: +#line 13184 "gram.y" { (yyval.list) = list_make1(makeIntConst(INTERVAL_MASK(DAY) | INTERVAL_MASK(HOUR), (yylsp[(1) - (3)]))); ;} break; - case 1864: -#line 12492 "gram.y" + case 1938: +#line 13189 "gram.y" { (yyval.list) = list_make1(makeIntConst(INTERVAL_MASK(DAY) | INTERVAL_MASK(HOUR) | @@ -41153,8 +43207,8 @@ YYLTYPE yylloc; ;} break; - case 1865: -#line 12498 "gram.y" + case 1939: +#line 13195 "gram.y" { (yyval.list) = (yyvsp[(3) - (3)].list); linitial((yyval.list)) = makeIntConst(INTERVAL_MASK(DAY) | @@ -41164,16 +43218,16 @@ YYLTYPE yylloc; ;} break; - case 1866: -#line 12506 "gram.y" + case 1940: +#line 13203 "gram.y" { (yyval.list) = list_make1(makeIntConst(INTERVAL_MASK(HOUR) | INTERVAL_MASK(MINUTE), (yylsp[(1) - (3)]))); ;} break; - case 1867: -#line 12511 "gram.y" + case 1941: +#line 13208 "gram.y" { (yyval.list) = (yyvsp[(3) - (3)].list); linitial((yyval.list)) = makeIntConst(INTERVAL_MASK(HOUR) | @@ -41182,8 +43236,8 @@ YYLTYPE yylloc; ;} break; - case 1868: -#line 12518 "gram.y" + case 1942: +#line 13215 "gram.y" { (yyval.list) = (yyvsp[(3) - (3)].list); linitial((yyval.list)) = makeIntConst(INTERVAL_MASK(MINUTE) | @@ -41191,38 +43245,38 @@ YYLTYPE yylloc; ;} break; - case 1869: -#line 12524 "gram.y" + case 1943: +#line 13221 "gram.y" { (yyval.list) = NIL; ;} break; - case 1870: -#line 12529 "gram.y" + case 1944: +#line 13226 "gram.y" { (yyval.list) = list_make1(makeIntConst(INTERVAL_MASK(SECOND), (yylsp[(1) - (1)]))); ;} break; - case 1871: -#line 12533 "gram.y" + case 1945: +#line 13230 "gram.y" { (yyval.list) = list_make2(makeIntConst(INTERVAL_MASK(SECOND), (yylsp[(1) - (4)])), makeIntConst((yyvsp[(3) - (4)].ival), (yylsp[(3) - (4)]))); ;} break; - case 1872: -#line 12568 "gram.y" + case 1946: +#line 13265 "gram.y" { (yyval.node) = (yyvsp[(1) - (1)].node); ;} break; - case 1873: -#line 12570 "gram.y" + case 1947: +#line 13267 "gram.y" { (yyval.node) = makeTypeCast((yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].typnam), (yylsp[(2) - (3)])); ;} break; - case 1874: -#line 12572 "gram.y" + case 1948: +#line 13269 "gram.y" { CollateClause *n = makeNode(CollateClause); n->arg = (yyvsp[(1) - (3)].node); @@ -41232,8 +43286,8 @@ YYLTYPE yylloc; ;} break; - case 1875: -#line 12580 "gram.y" + case 1949: +#line 13277 "gram.y" { (yyval.node) = (Node *) makeFuncCall(SystemFuncName("timezone"), list_make2((yyvsp[(5) - (5)].node), (yyvsp[(1) - (5)].node)), @@ -41241,131 +43295,131 @@ YYLTYPE yylloc; ;} break; - case 1876: -#line 12595 "gram.y" + case 1950: +#line 13292 "gram.y" { (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_OP, "+", NULL, (yyvsp[(2) - (2)].node), (yylsp[(1) - (2)])); ;} break; - case 1877: -#line 12597 "gram.y" + case 1951: +#line 13294 "gram.y" { (yyval.node) = doNegate((yyvsp[(2) - (2)].node), (yylsp[(1) - (2)])); ;} break; - case 1878: -#line 12599 "gram.y" + case 1952: +#line 13296 "gram.y" { (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_OP, "+", (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), (yylsp[(2) - (3)])); ;} break; - case 1879: -#line 12601 "gram.y" + case 1953: +#line 13298 "gram.y" { (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_OP, "-", (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), (yylsp[(2) - (3)])); ;} break; - case 1880: -#line 12603 "gram.y" + case 1954: +#line 13300 "gram.y" { (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_OP, "*", (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), (yylsp[(2) - (3)])); ;} break; - case 1881: -#line 12605 "gram.y" + case 1955: +#line 13302 "gram.y" { (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_OP, "/", (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), (yylsp[(2) - (3)])); ;} break; - case 1882: -#line 12607 "gram.y" + case 1956: +#line 13304 "gram.y" { (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_OP, "%", (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), (yylsp[(2) - (3)])); ;} break; - case 1883: -#line 12609 "gram.y" + case 1957: +#line 13306 "gram.y" { (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_OP, "^", (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), (yylsp[(2) - (3)])); ;} break; - case 1884: -#line 12611 "gram.y" + case 1958: +#line 13308 "gram.y" { (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_OP, "<", (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), (yylsp[(2) - (3)])); ;} break; - case 1885: -#line 12613 "gram.y" + case 1959: +#line 13310 "gram.y" { (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_OP, ">", (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), (yylsp[(2) - (3)])); ;} break; - case 1886: -#line 12615 "gram.y" + case 1960: +#line 13312 "gram.y" { (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_OP, "=", (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), (yylsp[(2) - (3)])); ;} break; - case 1887: -#line 12617 "gram.y" + case 1961: +#line 13314 "gram.y" { (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_OP, "<=", (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), (yylsp[(2) - (3)])); ;} break; - case 1888: -#line 12619 "gram.y" + case 1962: +#line 13316 "gram.y" { (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_OP, ">=", (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), (yylsp[(2) - (3)])); ;} break; - case 1889: -#line 12621 "gram.y" + case 1963: +#line 13318 "gram.y" { (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_OP, "<>", (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), (yylsp[(2) - (3)])); ;} break; - case 1890: -#line 12623 "gram.y" - { (yyval.node) = makeInterval_or_AExprOp((yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), (yylsp[(2) - (3)])); ;} + case 1964: +#line 13321 "gram.y" + { (yyval.node) = (Node *) makeA_Expr(AEXPR_OP, (yyvsp[(2) - (3)].list), (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), (yylsp[(2) - (3)])); ;} break; - case 1891: -#line 12625 "gram.y" - { (yyval.node) = makeInterval_or_AExprOp((yyvsp[(1) - (2)].node), NULL, (yylsp[(2) - (2)])); ;} + case 1965: +#line 13323 "gram.y" + { (yyval.node) = (Node *) makeA_Expr(AEXPR_OP, (yyvsp[(1) - (2)].list), NULL, (yyvsp[(2) - (2)].node), (yylsp[(1) - (2)])); ;} break; - case 1892: -#line 12628 "gram.y" - { (yyval.node) = (Node *) makeA_Expr(AEXPR_OP, (yyvsp[(2) - (3)].list), (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), (yylsp[(2) - (3)])); ;} + case 1966: +#line 13325 "gram.y" + { (yyval.node) = (Node *) makeA_Expr(AEXPR_OP, (yyvsp[(2) - (2)].list), (yyvsp[(1) - (2)].node), NULL, (yylsp[(2) - (2)])); ;} break; - case 1893: -#line 12630 "gram.y" - { (yyval.node) = (Node *) makeA_Expr(AEXPR_OP, (yyvsp[(1) - (2)].list), NULL, (yyvsp[(2) - (2)].node), (yylsp[(1) - (2)])); ;} + case 1967: +#line 13328 "gram.y" + { (yyval.node) = makeInterval_or_AExprOp((yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), (yylsp[(2) - (3)])); ;} break; - case 1894: -#line 12632 "gram.y" - { (yyval.node) = (Node *) makeA_Expr(AEXPR_OP, (yyvsp[(2) - (2)].list), (yyvsp[(1) - (2)].node), NULL, (yylsp[(2) - (2)])); ;} + case 1968: +#line 13330 "gram.y" + { (yyval.node) = makeInterval_or_AExprOp((yyvsp[(1) - (2)].node), NULL, (yylsp[(2) - (2)])); ;} break; - case 1895: -#line 12635 "gram.y" + case 1969: +#line 13333 "gram.y" { (yyval.node) = makeAndExpr((yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), (yylsp[(2) - (3)])); ;} break; - case 1896: -#line 12637 "gram.y" + case 1970: +#line 13335 "gram.y" { (yyval.node) = makeOrExpr((yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), (yylsp[(2) - (3)])); ;} break; - case 1897: -#line 12639 "gram.y" + case 1971: +#line 13337 "gram.y" { (yyval.node) = makeNotExpr((yyvsp[(2) - (2)].node), (yylsp[(1) - (2)])); ;} break; - case 1898: -#line 12641 "gram.y" + case 1972: +#line 13339 "gram.y" { (yyval.node) = makeNotExpr((yyvsp[(2) - (2)].node), (yylsp[(1) - (2)])); ;} break; - case 1899: -#line 12644 "gram.y" + case 1973: +#line 13342 "gram.y" { (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_LIKE, "~~", (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), (yylsp[(2) - (3)])); ;} break; - case 1900: -#line 12649 "gram.y" + case 1974: +#line 13347 "gram.y" { FuncCall *n = makeFuncCall(SystemFuncName("like_escape"), list_make2((yyvsp[(3) - (5)].node), (yyvsp[(5) - (5)].node)), @@ -41375,16 +43429,16 @@ YYLTYPE yylloc; ;} break; - case 1901: -#line 12657 "gram.y" + case 1975: +#line 13355 "gram.y" { (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_LIKE, "!~~", (yyvsp[(1) - (4)].node), (yyvsp[(4) - (4)].node), (yylsp[(2) - (4)])); ;} break; - case 1902: -#line 12662 "gram.y" + case 1976: +#line 13360 "gram.y" { FuncCall *n = makeFuncCall(SystemFuncName("like_escape"), list_make2((yyvsp[(4) - (6)].node), (yyvsp[(6) - (6)].node)), @@ -41394,16 +43448,16 @@ YYLTYPE yylloc; ;} break; - case 1903: -#line 12670 "gram.y" + case 1977: +#line 13368 "gram.y" { (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_ILIKE, "~~*", (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), (yylsp[(2) - (3)])); ;} break; - case 1904: -#line 12675 "gram.y" + case 1978: +#line 13373 "gram.y" { FuncCall *n = makeFuncCall(SystemFuncName("like_escape"), list_make2((yyvsp[(3) - (5)].node), (yyvsp[(5) - (5)].node)), @@ -41413,16 +43467,16 @@ YYLTYPE yylloc; ;} break; - case 1905: -#line 12683 "gram.y" + case 1979: +#line 13381 "gram.y" { (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_ILIKE, "!~~*", (yyvsp[(1) - (4)].node), (yyvsp[(4) - (4)].node), (yylsp[(2) - (4)])); ;} break; - case 1906: -#line 12688 "gram.y" + case 1980: +#line 13386 "gram.y" { FuncCall *n = makeFuncCall(SystemFuncName("like_escape"), list_make2((yyvsp[(4) - (6)].node), (yyvsp[(6) - (6)].node)), @@ -41432,21 +43486,21 @@ YYLTYPE yylloc; ;} break; - case 1907: -#line 12697 "gram.y" + case 1981: +#line 13395 "gram.y" { - FuncCall *n = makeFuncCall(SystemFuncName("similar_escape"), - list_make2((yyvsp[(4) - (4)].node), makeNullAConst(-1)), + FuncCall *n = makeFuncCall(SystemFuncName("similar_to_escape"), + list_make1((yyvsp[(4) - (4)].node)), (yylsp[(2) - (4)])); (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_SIMILAR, "~", (yyvsp[(1) - (4)].node), (Node *) n, (yylsp[(2) - (4)])); ;} break; - case 1908: -#line 12705 "gram.y" + case 1982: +#line 13403 "gram.y" { - FuncCall *n = makeFuncCall(SystemFuncName("similar_escape"), + FuncCall *n = makeFuncCall(SystemFuncName("similar_to_escape"), list_make2((yyvsp[(4) - (6)].node), (yyvsp[(6) - (6)].node)), (yylsp[(2) - (6)])); (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_SIMILAR, "~", @@ -41454,21 +43508,21 @@ YYLTYPE yylloc; ;} break; - case 1909: -#line 12713 "gram.y" + case 1983: +#line 13411 "gram.y" { - FuncCall *n = makeFuncCall(SystemFuncName("similar_escape"), - list_make2((yyvsp[(5) - (5)].node), makeNullAConst(-1)), + FuncCall *n = makeFuncCall(SystemFuncName("similar_to_escape"), + list_make1((yyvsp[(5) - (5)].node)), (yylsp[(2) - (5)])); (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_SIMILAR, "!~", (yyvsp[(1) - (5)].node), (Node *) n, (yylsp[(2) - (5)])); ;} break; - case 1910: -#line 12721 "gram.y" + case 1984: +#line 13419 "gram.y" { - FuncCall *n = makeFuncCall(SystemFuncName("similar_escape"), + FuncCall *n = makeFuncCall(SystemFuncName("similar_to_escape"), list_make2((yyvsp[(5) - (7)].node), (yyvsp[(7) - (7)].node)), (yylsp[(2) - (7)])); (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_SIMILAR, "!~", @@ -41476,8 +43530,8 @@ YYLTYPE yylloc; ;} break; - case 1911: -#line 12739 "gram.y" + case 1985: +#line 13437 "gram.y" { NullTest *n = makeNode(NullTest); n->arg = (Expr *) (yyvsp[(1) - (3)].node); @@ -41487,8 +43541,8 @@ YYLTYPE yylloc; ;} break; - case 1912: -#line 12747 "gram.y" + case 1986: +#line 13445 "gram.y" { NullTest *n = makeNode(NullTest); n->arg = (Expr *) (yyvsp[(1) - (2)].node); @@ -41498,8 +43552,8 @@ YYLTYPE yylloc; ;} break; - case 1913: -#line 12755 "gram.y" + case 1987: +#line 13453 "gram.y" { NullTest *n = makeNode(NullTest); n->arg = (Expr *) (yyvsp[(1) - (4)].node); @@ -41509,8 +43563,8 @@ YYLTYPE yylloc; ;} break; - case 1914: -#line 12763 "gram.y" + case 1988: +#line 13461 "gram.y" { NullTest *n = makeNode(NullTest); n->arg = (Expr *) (yyvsp[(1) - (2)].node); @@ -41520,8 +43574,8 @@ YYLTYPE yylloc; ;} break; - case 1915: -#line 12771 "gram.y" + case 1989: +#line 13469 "gram.y" { if (list_length((yyvsp[(1) - (3)].list)) != 2) ereport(ERROR, @@ -41539,8 +43593,8 @@ YYLTYPE yylloc; ;} break; - case 1916: -#line 12787 "gram.y" + case 1990: +#line 13485 "gram.y" { BooleanTest *b = makeNode(BooleanTest); b->arg = (Expr *) (yyvsp[(1) - (3)].node); @@ -41550,8 +43604,8 @@ YYLTYPE yylloc; ;} break; - case 1917: -#line 12795 "gram.y" + case 1991: +#line 13493 "gram.y" { BooleanTest *b = makeNode(BooleanTest); b->arg = (Expr *) (yyvsp[(1) - (4)].node); @@ -41561,8 +43615,8 @@ YYLTYPE yylloc; ;} break; - case 1918: -#line 12803 "gram.y" + case 1992: +#line 13501 "gram.y" { BooleanTest *b = makeNode(BooleanTest); b->arg = (Expr *) (yyvsp[(1) - (3)].node); @@ -41572,8 +43626,8 @@ YYLTYPE yylloc; ;} break; - case 1919: -#line 12811 "gram.y" + case 1993: +#line 13509 "gram.y" { BooleanTest *b = makeNode(BooleanTest); b->arg = (Expr *) (yyvsp[(1) - (4)].node); @@ -41583,8 +43637,8 @@ YYLTYPE yylloc; ;} break; - case 1920: -#line 12819 "gram.y" + case 1994: +#line 13517 "gram.y" { BooleanTest *b = makeNode(BooleanTest); b->arg = (Expr *) (yyvsp[(1) - (3)].node); @@ -41594,8 +43648,8 @@ YYLTYPE yylloc; ;} break; - case 1921: -#line 12827 "gram.y" + case 1995: +#line 13525 "gram.y" { BooleanTest *b = makeNode(BooleanTest); b->arg = (Expr *) (yyvsp[(1) - (4)].node); @@ -41605,36 +43659,36 @@ YYLTYPE yylloc; ;} break; - case 1922: -#line 12835 "gram.y" + case 1996: +#line 13533 "gram.y" { (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_DISTINCT, "=", (yyvsp[(1) - (5)].node), (yyvsp[(5) - (5)].node), (yylsp[(2) - (5)])); ;} break; - case 1923: -#line 12839 "gram.y" + case 1997: +#line 13537 "gram.y" { (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_NOT_DISTINCT, "=", (yyvsp[(1) - (6)].node), (yyvsp[(6) - (6)].node), (yylsp[(2) - (6)])); ;} break; - case 1924: -#line 12843 "gram.y" + case 1998: +#line 13541 "gram.y" { (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_OF, "=", (yyvsp[(1) - (6)].node), (Node *) (yyvsp[(5) - (6)].list), (yylsp[(2) - (6)])); ;} break; - case 1925: -#line 12847 "gram.y" + case 1999: +#line 13545 "gram.y" { (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_OF, "<>", (yyvsp[(1) - (7)].node), (Node *) (yyvsp[(6) - (7)].list), (yylsp[(2) - (7)])); ;} break; - case 1926: -#line 12851 "gram.y" + case 2000: +#line 13549 "gram.y" { (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_BETWEEN, "BETWEEN", @@ -41644,8 +43698,8 @@ YYLTYPE yylloc; ;} break; - case 1927: -#line 12859 "gram.y" + case 2001: +#line 13557 "gram.y" { (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_NOT_BETWEEN, "NOT BETWEEN", @@ -41655,8 +43709,8 @@ YYLTYPE yylloc; ;} break; - case 1928: -#line 12867 "gram.y" + case 2002: +#line 13565 "gram.y" { (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_BETWEEN_SYM, "BETWEEN SYMMETRIC", @@ -41666,8 +43720,8 @@ YYLTYPE yylloc; ;} break; - case 1929: -#line 12875 "gram.y" + case 2003: +#line 13573 "gram.y" { (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_NOT_BETWEEN_SYM, "NOT BETWEEN SYMMETRIC", @@ -41677,8 +43731,8 @@ YYLTYPE yylloc; ;} break; - case 1930: -#line 12883 "gram.y" + case 2004: +#line 13581 "gram.y" { /* in_expr returns a SubLink or a list of a_exprs */ if (IsA((yyvsp[(3) - (3)].node), SubLink)) @@ -41700,8 +43754,8 @@ YYLTYPE yylloc; ;} break; - case 1931: -#line 12903 "gram.y" + case 2005: +#line 13601 "gram.y" { /* in_expr returns a SubLink or a list of a_exprs */ if (IsA((yyvsp[(4) - (4)].node), SubLink)) @@ -41725,8 +43779,8 @@ YYLTYPE yylloc; ;} break; - case 1932: -#line 12925 "gram.y" + case 2006: +#line 13623 "gram.y" { SubLink *n = makeNode(SubLink); n->subLinkType = (yyvsp[(3) - (4)].ival); @@ -41739,8 +43793,8 @@ YYLTYPE yylloc; ;} break; - case 1933: -#line 12936 "gram.y" + case 2007: +#line 13634 "gram.y" { if ((yyvsp[(3) - (6)].ival) == ANY_SUBLINK) (yyval.node) = (Node *) makeA_Expr(AEXPR_OP_ANY, (yyvsp[(2) - (6)].list), (yyvsp[(1) - (6)].node), (yyvsp[(5) - (6)].node), (yylsp[(2) - (6)])); @@ -41749,8 +43803,8 @@ YYLTYPE yylloc; ;} break; - case 1934: -#line 12943 "gram.y" + case 2008: +#line 13641 "gram.y" { /* Not sure how to get rid of the parentheses * but there are lots of shift/reduce errors without them. @@ -41768,16 +43822,16 @@ YYLTYPE yylloc; ;} break; - case 1935: -#line 12959 "gram.y" + case 2009: +#line 13657 "gram.y" { (yyval.node) = makeXmlExpr(IS_DOCUMENT, NULL, NIL, list_make1((yyvsp[(1) - (3)].node)), (yylsp[(2) - (3)])); ;} break; - case 1936: -#line 12964 "gram.y" + case 2010: +#line 13662 "gram.y" { (yyval.node) = makeNotExpr(makeXmlExpr(IS_DOCUMENT, NULL, NIL, list_make1((yyvsp[(1) - (4)].node)), (yylsp[(2) - (4)])), @@ -41785,8 +43839,36 @@ YYLTYPE yylloc; ;} break; - case 1937: -#line 12970 "gram.y" + case 2011: +#line 13668 "gram.y" + { + (yyval.node) = (Node *) makeFuncCall(SystemFuncName("is_normalized"), list_make1((yyvsp[(1) - (3)].node)), (yylsp[(2) - (3)])); + ;} + break; + + case 2012: +#line 13672 "gram.y" + { + (yyval.node) = (Node *) makeFuncCall(SystemFuncName("is_normalized"), list_make2((yyvsp[(1) - (4)].node), makeStringConst((yyvsp[(3) - (4)].str), (yylsp[(3) - (4)]))), (yylsp[(2) - (4)])); + ;} + break; + + case 2013: +#line 13676 "gram.y" + { + (yyval.node) = makeNotExpr((Node *) makeFuncCall(SystemFuncName("is_normalized"), list_make1((yyvsp[(1) - (4)].node)), (yylsp[(2) - (4)])), (yylsp[(2) - (4)])); + ;} + break; + + case 2014: +#line 13680 "gram.y" + { + (yyval.node) = makeNotExpr((Node *) makeFuncCall(SystemFuncName("is_normalized"), list_make2((yyvsp[(1) - (5)].node), makeStringConst((yyvsp[(4) - (5)].str), (yylsp[(4) - (5)]))), (yylsp[(2) - (5)])), (yylsp[(2) - (5)])); + ;} + break; + + case 2015: +#line 13684 "gram.y" { /* * The SQL spec only allows DEFAULT in "contextually typed @@ -41802,149 +43884,149 @@ YYLTYPE yylloc; ;} break; - case 1938: -#line 12995 "gram.y" + case 2016: +#line 13709 "gram.y" { (yyval.node) = (yyvsp[(1) - (1)].node); ;} break; - case 1939: -#line 12997 "gram.y" + case 2017: +#line 13711 "gram.y" { (yyval.node) = makeTypeCast((yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].typnam), (yylsp[(2) - (3)])); ;} break; - case 1940: -#line 12999 "gram.y" + case 2018: +#line 13713 "gram.y" { (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_OP, "+", NULL, (yyvsp[(2) - (2)].node), (yylsp[(1) - (2)])); ;} break; - case 1941: -#line 13001 "gram.y" + case 2019: +#line 13715 "gram.y" { (yyval.node) = doNegate((yyvsp[(2) - (2)].node), (yylsp[(1) - (2)])); ;} break; - case 1942: -#line 13003 "gram.y" + case 2020: +#line 13717 "gram.y" { (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_OP, "+", (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), (yylsp[(2) - (3)])); ;} break; - case 1943: -#line 13005 "gram.y" + case 2021: +#line 13719 "gram.y" { (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_OP, "-", (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), (yylsp[(2) - (3)])); ;} break; - case 1944: -#line 13007 "gram.y" + case 2022: +#line 13721 "gram.y" { (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_OP, "*", (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), (yylsp[(2) - (3)])); ;} break; - case 1945: -#line 13009 "gram.y" + case 2023: +#line 13723 "gram.y" { (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_OP, "/", (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), (yylsp[(2) - (3)])); ;} break; - case 1946: -#line 13011 "gram.y" + case 2024: +#line 13725 "gram.y" { (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_OP, "%", (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), (yylsp[(2) - (3)])); ;} break; - case 1947: -#line 13013 "gram.y" + case 2025: +#line 13727 "gram.y" { (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_OP, "^", (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), (yylsp[(2) - (3)])); ;} break; - case 1948: -#line 13015 "gram.y" + case 2026: +#line 13729 "gram.y" { (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_OP, "<", (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), (yylsp[(2) - (3)])); ;} break; - case 1949: -#line 13017 "gram.y" + case 2027: +#line 13731 "gram.y" { (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_OP, ">", (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), (yylsp[(2) - (3)])); ;} break; - case 1950: -#line 13019 "gram.y" + case 2028: +#line 13733 "gram.y" { (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_OP, "=", (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), (yylsp[(2) - (3)])); ;} break; - case 1951: -#line 13021 "gram.y" + case 2029: +#line 13735 "gram.y" { (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_OP, "<=", (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), (yylsp[(2) - (3)])); ;} break; - case 1952: -#line 13023 "gram.y" + case 2030: +#line 13737 "gram.y" { (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_OP, ">=", (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), (yylsp[(2) - (3)])); ;} break; - case 1953: -#line 13025 "gram.y" + case 2031: +#line 13739 "gram.y" { (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_OP, "<>", (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), (yylsp[(2) - (3)])); ;} break; - case 1954: -#line 13027 "gram.y" + case 2032: +#line 13741 "gram.y" { (yyval.node) = makeInterval_or_AExprOp((yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), (yylsp[(2) - (3)])); ;} break; - case 1955: -#line 13029 "gram.y" + case 2033: +#line 13743 "gram.y" { (yyval.node) = makeInterval_or_AExprOp((yyvsp[(1) - (2)].node), NULL, (yylsp[(2) - (2)])); ;} break; - case 1956: -#line 13031 "gram.y" + case 2034: +#line 13745 "gram.y" { (yyval.node) = (Node *) makeA_Expr(AEXPR_OP, (yyvsp[(2) - (3)].list), (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), (yylsp[(2) - (3)])); ;} break; - case 1957: -#line 13033 "gram.y" + case 2035: +#line 13747 "gram.y" { (yyval.node) = (Node *) makeA_Expr(AEXPR_OP, (yyvsp[(1) - (2)].list), NULL, (yyvsp[(2) - (2)].node), (yylsp[(1) - (2)])); ;} break; - case 1958: -#line 13035 "gram.y" + case 2036: +#line 13749 "gram.y" { (yyval.node) = (Node *) makeA_Expr(AEXPR_OP, (yyvsp[(2) - (2)].list), (yyvsp[(1) - (2)].node), NULL, (yylsp[(2) - (2)])); ;} break; - case 1959: -#line 13037 "gram.y" + case 2037: +#line 13751 "gram.y" { (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_DISTINCT, "=", (yyvsp[(1) - (5)].node), (yyvsp[(5) - (5)].node), (yylsp[(2) - (5)])); ;} break; - case 1960: -#line 13041 "gram.y" + case 2038: +#line 13755 "gram.y" { (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_NOT_DISTINCT, "=", (yyvsp[(1) - (6)].node), (yyvsp[(6) - (6)].node), (yylsp[(2) - (6)])); ;} break; - case 1961: -#line 13045 "gram.y" + case 2039: +#line 13759 "gram.y" { (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_OF, "=", (yyvsp[(1) - (6)].node), (Node *) (yyvsp[(5) - (6)].list), (yylsp[(2) - (6)])); ;} break; - case 1962: -#line 13049 "gram.y" + case 2040: +#line 13763 "gram.y" { (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_OF, "<>", (yyvsp[(1) - (7)].node), (Node *) (yyvsp[(6) - (7)].list), (yylsp[(2) - (7)])); ;} break; - case 1963: -#line 13053 "gram.y" + case 2041: +#line 13767 "gram.y" { (yyval.node) = makeXmlExpr(IS_DOCUMENT, NULL, NIL, list_make1((yyvsp[(1) - (3)].node)), (yylsp[(2) - (3)])); ;} break; - case 1964: -#line 13058 "gram.y" + case 2042: +#line 13772 "gram.y" { (yyval.node) = makeNotExpr(makeXmlExpr(IS_DOCUMENT, NULL, NIL, list_make1((yyvsp[(1) - (4)].node)), (yylsp[(2) - (4)])), @@ -41952,36 +44034,39 @@ YYLTYPE yylloc; ;} break; - case 1965: -#line 13073 "gram.y" + case 2043: +#line 13787 "gram.y" { (yyval.node) = (yyvsp[(1) - (1)].node); ;} break; - case 1966: -#line 13074 "gram.y" + case 2044: +#line 13788 "gram.y" { (yyval.node) = (yyvsp[(1) - (1)].node); ;} break; - case 1967: -#line 13076 "gram.y" + case 2045: +#line 13790 "gram.y" { + ParamRef *p = makeNode(ParamRef); + p->number = (yyvsp[(1) - (2)].ival); + p->location = (yylsp[(1) - (2)]); if ((yyvsp[(2) - (2)].list)) { A_Indirection *n = makeNode(A_Indirection); - n->arg = makeParamRef(0, (yylsp[(1) - (2)])); - n->indirection = check_indirection((yyvsp[(2) - (2)].list), yyscanner); + n->arg = (Node *) p; + n->indirection = check_indirection((yyvsp[(2) - (2)].list), yyscanner); (yyval.node) = (Node *) n; } else - (yyval.node) = makeParamRef(0, (yylsp[(1) - (2)])); + (yyval.node) = (Node *) p; ;} break; - case 1968: -#line 13088 "gram.y" + case 2046: +#line 13805 "gram.y" { ParamRef *p = makeNode(ParamRef); - p->number = (yyvsp[(1) - (2)].ival); + p->number = 0; p->location = (yylsp[(1) - (2)]); if ((yyvsp[(2) - (2)].list)) { @@ -41995,8 +44080,8 @@ YYLTYPE yylloc; ;} break; - case 1969: -#line 13103 "gram.y" + case 2047: +#line 13820 "gram.y" { if ((yyvsp[(4) - (4)].list)) { @@ -42032,18 +44117,18 @@ YYLTYPE yylloc; ;} break; - case 1970: -#line 13137 "gram.y" + case 2048: +#line 13854 "gram.y" { (yyval.node) = (yyvsp[(1) - (1)].node); ;} break; - case 1971: -#line 13139 "gram.y" + case 2049: +#line 13856 "gram.y" { (yyval.node) = (yyvsp[(1) - (1)].node); ;} break; - case 1972: -#line 13141 "gram.y" + case 2050: +#line 13858 "gram.y" { SubLink *n = makeNode(SubLink); n->subLinkType = EXPR_SUBLINK; @@ -42056,8 +44141,8 @@ YYLTYPE yylloc; ;} break; - case 1973: -#line 13152 "gram.y" + case 2051: +#line 13869 "gram.y" { /* * Because the select_with_parens nonterminal is designed @@ -42083,8 +44168,8 @@ YYLTYPE yylloc; ;} break; - case 1974: -#line 13176 "gram.y" + case 2052: +#line 13893 "gram.y" { SubLink *n = makeNode(SubLink); n->subLinkType = EXISTS_SUBLINK; @@ -42097,8 +44182,8 @@ YYLTYPE yylloc; ;} break; - case 1975: -#line 13187 "gram.y" + case 2053: +#line 13904 "gram.y" { SubLink *n = makeNode(SubLink); n->subLinkType = ARRAY_SUBLINK; @@ -42111,8 +44196,8 @@ YYLTYPE yylloc; ;} break; - case 1976: -#line 13198 "gram.y" + case 2054: +#line 13915 "gram.y" { A_ArrayExpr *n = castNode(A_ArrayExpr, (yyvsp[(2) - (2)].node)); /* point outermost A_ArrayExpr to the ARRAY keyword */ @@ -42121,8 +44206,8 @@ YYLTYPE yylloc; ;} break; - case 1977: -#line 13205 "gram.y" + case 2055: +#line 13922 "gram.y" { RowExpr *r = makeNode(RowExpr); r->args = (yyvsp[(1) - (1)].list); @@ -42134,8 +44219,8 @@ YYLTYPE yylloc; ;} break; - case 1978: -#line 13215 "gram.y" + case 2056: +#line 13932 "gram.y" { RowExpr *r = makeNode(RowExpr); r->args = (yyvsp[(1) - (1)].list); @@ -42147,8 +44232,8 @@ YYLTYPE yylloc; ;} break; - case 1979: -#line 13225 "gram.y" + case 2057: +#line 13942 "gram.y" { GroupingFunc *g = makeNode(GroupingFunc); g->args = (yyvsp[(3) - (4)].list); @@ -42157,15 +44242,15 @@ YYLTYPE yylloc; ;} break; - case 1980: -#line 13234 "gram.y" + case 2058: +#line 13951 "gram.y" { (yyval.node) = (Node *) makeFuncCall((yyvsp[(1) - (3)].list), NIL, (yylsp[(1) - (3)])); ;} break; - case 1981: -#line 13238 "gram.y" + case 2059: +#line 13955 "gram.y" { FuncCall *n = makeFuncCall((yyvsp[(1) - (5)].list), (yyvsp[(3) - (5)].list), (yylsp[(1) - (5)])); n->agg_order = (yyvsp[(4) - (5)].list); @@ -42173,28 +44258,28 @@ YYLTYPE yylloc; ;} break; - case 1982: -#line 13244 "gram.y" + case 2060: +#line 13961 "gram.y" { FuncCall *n = makeFuncCall((yyvsp[(1) - (6)].list), list_make1((yyvsp[(4) - (6)].node)), (yylsp[(1) - (6)])); - n->func_variadic = TRUE; + n->func_variadic = true; n->agg_order = (yyvsp[(5) - (6)].list); (yyval.node) = (Node *)n; ;} break; - case 1983: -#line 13251 "gram.y" + case 2061: +#line 13968 "gram.y" { FuncCall *n = makeFuncCall((yyvsp[(1) - (8)].list), lappend((yyvsp[(3) - (8)].list), (yyvsp[(6) - (8)].node)), (yylsp[(1) - (8)])); - n->func_variadic = TRUE; + n->func_variadic = true; n->agg_order = (yyvsp[(7) - (8)].list); (yyval.node) = (Node *)n; ;} break; - case 1984: -#line 13258 "gram.y" + case 2062: +#line 13975 "gram.y" { FuncCall *n = makeFuncCall((yyvsp[(1) - (6)].list), (yyvsp[(4) - (6)].list), (yylsp[(1) - (6)])); n->agg_order = (yyvsp[(5) - (6)].list); @@ -42206,18 +44291,18 @@ YYLTYPE yylloc; ;} break; - case 1985: -#line 13268 "gram.y" + case 2063: +#line 13985 "gram.y" { FuncCall *n = makeFuncCall((yyvsp[(1) - (6)].list), (yyvsp[(4) - (6)].list), (yylsp[(1) - (6)])); n->agg_order = (yyvsp[(5) - (6)].list); - n->agg_distinct = TRUE; + n->agg_distinct = true; (yyval.node) = (Node *)n; ;} break; - case 1986: -#line 13275 "gram.y" + case 2064: +#line 13992 "gram.y" { /* * We consider AGGREGATE(*) to invoke a parameterless @@ -42230,13 +44315,13 @@ YYLTYPE yylloc; * really was. */ FuncCall *n = makeFuncCall((yyvsp[(1) - (4)].list), NIL, (yylsp[(1) - (4)])); - n->agg_star = TRUE; + n->agg_star = true; (yyval.node) = (Node *)n; ;} break; - case 1987: -#line 13303 "gram.y" + case 2065: +#line 14020 "gram.y" { FuncCall *n = (FuncCall *) (yyvsp[(1) - (4)].node); /* @@ -42265,7 +44350,7 @@ YYLTYPE yylloc; errmsg("cannot use VARIADIC with WITHIN GROUP"), parser_errposition((yylsp[(2) - (4)])))); n->agg_order = (yyvsp[(2) - (4)].list); - n->agg_within_group = TRUE; + n->agg_within_group = true; } n->agg_filter = (yyvsp[(3) - (4)].node); n->over = (yyvsp[(4) - (4)].windef); @@ -42273,23 +44358,23 @@ YYLTYPE yylloc; ;} break; - case 1988: -#line 13338 "gram.y" + case 2066: +#line 14055 "gram.y" { (yyval.node) = (yyvsp[(1) - (1)].node); ;} break; - case 1989: -#line 13348 "gram.y" + case 2067: +#line 14065 "gram.y" { (yyval.node) = (yyvsp[(1) - (1)].node); ;} break; - case 1990: -#line 13349 "gram.y" + case 2068: +#line 14066 "gram.y" { (yyval.node) = (yyvsp[(1) - (1)].node); ;} break; - case 1991: -#line 13357 "gram.y" + case 2069: +#line 14074 "gram.y" { (yyval.node) = (Node *) makeFuncCall(SystemFuncName("pg_collation_for"), list_make1((yyvsp[(4) - (5)].node)), @@ -42297,125 +44382,139 @@ YYLTYPE yylloc; ;} break; - case 1992: -#line 13363 "gram.y" + case 2070: +#line 14080 "gram.y" { (yyval.node) = makeSQLValueFunction(SVFOP_CURRENT_DATE, -1, (yylsp[(1) - (1)])); ;} break; - case 1993: -#line 13367 "gram.y" + case 2071: +#line 14084 "gram.y" { (yyval.node) = makeSQLValueFunction(SVFOP_CURRENT_TIME, -1, (yylsp[(1) - (1)])); ;} break; - case 1994: -#line 13371 "gram.y" + case 2072: +#line 14088 "gram.y" { (yyval.node) = makeSQLValueFunction(SVFOP_CURRENT_TIME_N, (yyvsp[(3) - (4)].ival), (yylsp[(1) - (4)])); ;} break; - case 1995: -#line 13375 "gram.y" + case 2073: +#line 14092 "gram.y" { (yyval.node) = makeSQLValueFunction(SVFOP_CURRENT_TIMESTAMP, -1, (yylsp[(1) - (1)])); ;} break; - case 1996: -#line 13379 "gram.y" + case 2074: +#line 14096 "gram.y" { (yyval.node) = makeSQLValueFunction(SVFOP_CURRENT_TIMESTAMP_N, (yyvsp[(3) - (4)].ival), (yylsp[(1) - (4)])); ;} break; - case 1997: -#line 13383 "gram.y" + case 2075: +#line 14100 "gram.y" { (yyval.node) = makeSQLValueFunction(SVFOP_LOCALTIME, -1, (yylsp[(1) - (1)])); ;} break; - case 1998: -#line 13387 "gram.y" + case 2076: +#line 14104 "gram.y" { (yyval.node) = makeSQLValueFunction(SVFOP_LOCALTIME_N, (yyvsp[(3) - (4)].ival), (yylsp[(1) - (4)])); ;} break; - case 1999: -#line 13391 "gram.y" + case 2077: +#line 14108 "gram.y" { (yyval.node) = makeSQLValueFunction(SVFOP_LOCALTIMESTAMP, -1, (yylsp[(1) - (1)])); ;} break; - case 2000: -#line 13395 "gram.y" + case 2078: +#line 14112 "gram.y" { (yyval.node) = makeSQLValueFunction(SVFOP_LOCALTIMESTAMP_N, (yyvsp[(3) - (4)].ival), (yylsp[(1) - (4)])); ;} break; - case 2001: -#line 13399 "gram.y" + case 2079: +#line 14116 "gram.y" { (yyval.node) = makeSQLValueFunction(SVFOP_CURRENT_ROLE, -1, (yylsp[(1) - (1)])); ;} break; - case 2002: -#line 13403 "gram.y" + case 2080: +#line 14120 "gram.y" { (yyval.node) = makeSQLValueFunction(SVFOP_CURRENT_USER, -1, (yylsp[(1) - (1)])); ;} break; - case 2003: -#line 13407 "gram.y" + case 2081: +#line 14124 "gram.y" { (yyval.node) = makeSQLValueFunction(SVFOP_SESSION_USER, -1, (yylsp[(1) - (1)])); ;} break; - case 2004: -#line 13411 "gram.y" + case 2082: +#line 14128 "gram.y" { (yyval.node) = makeSQLValueFunction(SVFOP_USER, -1, (yylsp[(1) - (1)])); ;} break; - case 2005: -#line 13415 "gram.y" + case 2083: +#line 14132 "gram.y" { (yyval.node) = makeSQLValueFunction(SVFOP_CURRENT_CATALOG, -1, (yylsp[(1) - (1)])); ;} break; - case 2006: -#line 13419 "gram.y" + case 2084: +#line 14136 "gram.y" { (yyval.node) = makeSQLValueFunction(SVFOP_CURRENT_SCHEMA, -1, (yylsp[(1) - (1)])); ;} break; - case 2007: -#line 13423 "gram.y" + case 2085: +#line 14140 "gram.y" { (yyval.node) = makeTypeCast((yyvsp[(3) - (6)].node), (yyvsp[(5) - (6)].typnam), (yylsp[(1) - (6)])); ;} break; - case 2008: -#line 13425 "gram.y" + case 2086: +#line 14142 "gram.y" { (yyval.node) = (Node *) makeFuncCall(SystemFuncName("date_part"), (yyvsp[(3) - (4)].list), (yylsp[(1) - (4)])); ;} break; - case 2009: -#line 13429 "gram.y" + case 2087: +#line 14146 "gram.y" + { + (yyval.node) = (Node *) makeFuncCall(SystemFuncName("normalize"), list_make1((yyvsp[(3) - (4)].node)), (yylsp[(1) - (4)])); + ;} + break; + + case 2088: +#line 14150 "gram.y" + { + (yyval.node) = (Node *) makeFuncCall(SystemFuncName("normalize"), list_make2((yyvsp[(3) - (6)].node), makeStringConst((yyvsp[(5) - (6)].str), (yylsp[(5) - (6)]))), (yylsp[(1) - (6)])); + ;} + break; + + case 2089: +#line 14154 "gram.y" { /* overlay(A PLACING B FROM C FOR D) is converted to * overlay(A, B, C, D) @@ -42426,16 +44525,16 @@ YYLTYPE yylloc; ;} break; - case 2010: -#line 13438 "gram.y" + case 2090: +#line 14163 "gram.y" { /* position(A in B) is converted to position(B, A) */ (yyval.node) = (Node *) makeFuncCall(SystemFuncName("position"), (yyvsp[(3) - (4)].list), (yylsp[(1) - (4)])); ;} break; - case 2011: -#line 13443 "gram.y" + case 2091: +#line 14168 "gram.y" { /* substring(A from B for C) is converted to * substring(A, B, C) - thomas 2000-11-28 @@ -42444,8 +44543,8 @@ YYLTYPE yylloc; ;} break; - case 2012: -#line 13450 "gram.y" + case 2092: +#line 14175 "gram.y" { /* TREAT(expr AS target) converts expr of a particular type to target, * which is defined to be a subtype of the original expression. @@ -42462,8 +44561,8 @@ YYLTYPE yylloc; ;} break; - case 2013: -#line 13465 "gram.y" + case 2093: +#line 14190 "gram.y" { /* various trim expressions are defined in SQL * - thomas 1997-07-19 @@ -42472,36 +44571,36 @@ YYLTYPE yylloc; ;} break; - case 2014: -#line 13472 "gram.y" + case 2094: +#line 14197 "gram.y" { (yyval.node) = (Node *) makeFuncCall(SystemFuncName("ltrim"), (yyvsp[(4) - (5)].list), (yylsp[(1) - (5)])); ;} break; - case 2015: -#line 13476 "gram.y" + case 2095: +#line 14201 "gram.y" { (yyval.node) = (Node *) makeFuncCall(SystemFuncName("rtrim"), (yyvsp[(4) - (5)].list), (yylsp[(1) - (5)])); ;} break; - case 2016: -#line 13480 "gram.y" + case 2096: +#line 14205 "gram.y" { (yyval.node) = (Node *) makeFuncCall(SystemFuncName("btrim"), (yyvsp[(3) - (4)].list), (yylsp[(1) - (4)])); ;} break; - case 2017: -#line 13484 "gram.y" + case 2097: +#line 14209 "gram.y" { (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_NULLIF, "=", (yyvsp[(3) - (6)].node), (yyvsp[(5) - (6)].node), (yylsp[(1) - (6)])); ;} break; - case 2018: -#line 13488 "gram.y" + case 2098: +#line 14213 "gram.y" { CoalesceExpr *c = makeNode(CoalesceExpr); c->args = (yyvsp[(3) - (4)].list); @@ -42510,8 +44609,8 @@ YYLTYPE yylloc; ;} break; - case 2019: -#line 13495 "gram.y" + case 2099: +#line 14220 "gram.y" { MinMaxExpr *v = makeNode(MinMaxExpr); v->args = (yyvsp[(3) - (4)].list); @@ -42521,8 +44620,8 @@ YYLTYPE yylloc; ;} break; - case 2020: -#line 13503 "gram.y" + case 2100: +#line 14228 "gram.y" { MinMaxExpr *v = makeNode(MinMaxExpr); v->args = (yyvsp[(3) - (4)].list); @@ -42532,43 +44631,43 @@ YYLTYPE yylloc; ;} break; - case 2021: -#line 13511 "gram.y" + case 2101: +#line 14236 "gram.y" { (yyval.node) = makeXmlExpr(IS_XMLCONCAT, NULL, NIL, (yyvsp[(3) - (4)].list), (yylsp[(1) - (4)])); ;} break; - case 2022: -#line 13515 "gram.y" + case 2102: +#line 14240 "gram.y" { (yyval.node) = makeXmlExpr(IS_XMLELEMENT, (yyvsp[(4) - (5)].str), NIL, NIL, (yylsp[(1) - (5)])); ;} break; - case 2023: -#line 13519 "gram.y" + case 2103: +#line 14244 "gram.y" { (yyval.node) = makeXmlExpr(IS_XMLELEMENT, (yyvsp[(4) - (7)].str), (yyvsp[(6) - (7)].list), NIL, (yylsp[(1) - (7)])); ;} break; - case 2024: -#line 13523 "gram.y" + case 2104: +#line 14248 "gram.y" { (yyval.node) = makeXmlExpr(IS_XMLELEMENT, (yyvsp[(4) - (7)].str), NIL, (yyvsp[(6) - (7)].list), (yylsp[(1) - (7)])); ;} break; - case 2025: -#line 13527 "gram.y" + case 2105: +#line 14252 "gram.y" { (yyval.node) = makeXmlExpr(IS_XMLELEMENT, (yyvsp[(4) - (9)].str), (yyvsp[(6) - (9)].list), (yyvsp[(8) - (9)].list), (yylsp[(1) - (9)])); ;} break; - case 2026: -#line 13531 "gram.y" + case 2106: +#line 14256 "gram.y" { /* xmlexists(A PASSING [BY REF] B [BY REF]) is * converted to xmlexists(A, B)*/ @@ -42576,15 +44675,15 @@ YYLTYPE yylloc; ;} break; - case 2027: -#line 13537 "gram.y" + case 2107: +#line 14262 "gram.y" { (yyval.node) = makeXmlExpr(IS_XMLFOREST, NULL, (yyvsp[(3) - (4)].list), NIL, (yylsp[(1) - (4)])); ;} break; - case 2028: -#line 13541 "gram.y" + case 2108: +#line 14266 "gram.y" { XmlExpr *x = (XmlExpr *) makeXmlExpr(IS_XMLPARSE, NULL, NIL, @@ -42595,30 +44694,30 @@ YYLTYPE yylloc; ;} break; - case 2029: -#line 13550 "gram.y" + case 2109: +#line 14275 "gram.y" { (yyval.node) = makeXmlExpr(IS_XMLPI, (yyvsp[(4) - (5)].str), NULL, NIL, (yylsp[(1) - (5)])); ;} break; - case 2030: -#line 13554 "gram.y" + case 2110: +#line 14279 "gram.y" { (yyval.node) = makeXmlExpr(IS_XMLPI, (yyvsp[(4) - (7)].str), NULL, list_make1((yyvsp[(6) - (7)].node)), (yylsp[(1) - (7)])); ;} break; - case 2031: -#line 13558 "gram.y" + case 2111: +#line 14283 "gram.y" { (yyval.node) = makeXmlExpr(IS_XMLROOT, NULL, NIL, list_make3((yyvsp[(3) - (7)].node), (yyvsp[(5) - (7)].node), (yyvsp[(6) - (7)].node)), (yylsp[(1) - (7)])); ;} break; - case 2032: -#line 13563 "gram.y" + case 2112: +#line 14288 "gram.y" { XmlSerialize *n = makeNode(XmlSerialize); n->xmloption = (yyvsp[(3) - (7)].ival); @@ -42629,53 +44728,53 @@ YYLTYPE yylloc; ;} break; - case 2033: -#line 13577 "gram.y" + case 2113: +#line 14302 "gram.y" { (yyval.node) = (yyvsp[(2) - (2)].node); ;} break; - case 2034: -#line 13579 "gram.y" + case 2114: +#line 14304 "gram.y" { (yyval.node) = makeNullAConst(-1); ;} break; - case 2035: -#line 13583 "gram.y" + case 2115: +#line 14308 "gram.y" { (yyval.node) = makeIntConst(XML_STANDALONE_YES, -1); ;} break; - case 2036: -#line 13585 "gram.y" + case 2116: +#line 14310 "gram.y" { (yyval.node) = makeIntConst(XML_STANDALONE_NO, -1); ;} break; - case 2037: -#line 13587 "gram.y" + case 2117: +#line 14312 "gram.y" { (yyval.node) = makeIntConst(XML_STANDALONE_NO_VALUE, -1); ;} break; - case 2038: -#line 13589 "gram.y" + case 2118: +#line 14314 "gram.y" { (yyval.node) = makeIntConst(XML_STANDALONE_OMITTED, -1); ;} break; - case 2039: -#line 13592 "gram.y" + case 2119: +#line 14317 "gram.y" { (yyval.list) = (yyvsp[(3) - (4)].list); ;} break; - case 2040: -#line 13595 "gram.y" + case 2120: +#line 14320 "gram.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].target)); ;} break; - case 2041: -#line 13596 "gram.y" + case 2121: +#line 14321 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].target)); ;} break; - case 2042: -#line 13600 "gram.y" + case 2122: +#line 14325 "gram.y" { (yyval.target) = makeNode(ResTarget); (yyval.target)->name = (yyvsp[(3) - (3)].str); @@ -42685,8 +44784,8 @@ YYLTYPE yylloc; ;} break; - case 2043: -#line 13608 "gram.y" + case 2123: +#line 14333 "gram.y" { (yyval.target) = makeNode(ResTarget); (yyval.target)->name = NULL; @@ -42696,101 +44795,101 @@ YYLTYPE yylloc; ;} break; - case 2044: -#line 13617 "gram.y" + case 2124: +#line 14342 "gram.y" { (yyval.ival) = XMLOPTION_DOCUMENT; ;} break; - case 2045: -#line 13618 "gram.y" + case 2125: +#line 14343 "gram.y" { (yyval.ival) = XMLOPTION_CONTENT; ;} break; - case 2046: -#line 13621 "gram.y" - { (yyval.boolean) = TRUE; ;} + case 2126: +#line 14346 "gram.y" + { (yyval.boolean) = true; ;} break; - case 2047: -#line 13622 "gram.y" - { (yyval.boolean) = FALSE; ;} + case 2127: +#line 14347 "gram.y" + { (yyval.boolean) = false; ;} break; - case 2048: -#line 13623 "gram.y" - { (yyval.boolean) = FALSE; ;} + case 2128: +#line 14348 "gram.y" + { (yyval.boolean) = false; ;} break; - case 2049: -#line 13629 "gram.y" + case 2129: +#line 14354 "gram.y" { (yyval.node) = (yyvsp[(2) - (2)].node); ;} break; - case 2050: -#line 13633 "gram.y" + case 2130: +#line 14358 "gram.y" { - (yyval.node) = (yyvsp[(2) - (4)].node); + (yyval.node) = (yyvsp[(2) - (3)].node); ;} break; - case 2051: -#line 13637 "gram.y" + case 2131: +#line 14362 "gram.y" { - (yyval.node) = (yyvsp[(4) - (4)].node); + (yyval.node) = (yyvsp[(3) - (3)].node); ;} break; - case 2052: -#line 13641 "gram.y" + case 2132: +#line 14366 "gram.y" { - (yyval.node) = (yyvsp[(4) - (6)].node); + (yyval.node) = (yyvsp[(3) - (4)].node); ;} break; - case 2053: -#line 13651 "gram.y" + case 2135: +#line 14381 "gram.y" { (yyval.list) = (yyvsp[(4) - (5)].list); ;} break; - case 2054: -#line 13652 "gram.y" + case 2136: +#line 14382 "gram.y" { (yyval.list) = NIL; ;} break; - case 2055: -#line 13656 "gram.y" + case 2137: +#line 14386 "gram.y" { (yyval.node) = (yyvsp[(4) - (5)].node); ;} break; - case 2056: -#line 13657 "gram.y" + case 2138: +#line 14387 "gram.y" { (yyval.node) = NULL; ;} break; - case 2057: -#line 13665 "gram.y" + case 2139: +#line 14395 "gram.y" { (yyval.list) = (yyvsp[(2) - (2)].list); ;} break; - case 2058: -#line 13666 "gram.y" + case 2140: +#line 14396 "gram.y" { (yyval.list) = NIL; ;} break; - case 2059: -#line 13670 "gram.y" + case 2141: +#line 14400 "gram.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].windef)); ;} break; - case 2060: -#line 13672 "gram.y" + case 2142: +#line 14402 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].windef)); ;} break; - case 2061: -#line 13677 "gram.y" + case 2143: +#line 14407 "gram.y" { WindowDef *n = (yyvsp[(3) - (3)].windef); n->name = (yyvsp[(1) - (3)].str); @@ -42798,13 +44897,13 @@ YYLTYPE yylloc; ;} break; - case 2062: -#line 13685 "gram.y" + case 2144: +#line 14415 "gram.y" { (yyval.windef) = (yyvsp[(2) - (2)].windef); ;} break; - case 2063: -#line 13687 "gram.y" + case 2145: +#line 14417 "gram.y" { WindowDef *n = makeNode(WindowDef); n->name = (yyvsp[(2) - (2)].str); @@ -42819,13 +44918,13 @@ YYLTYPE yylloc; ;} break; - case 2064: -#line 13700 "gram.y" + case 2146: +#line 14430 "gram.y" { (yyval.windef) = NULL; ;} break; - case 2065: -#line 13705 "gram.y" + case 2147: +#line 14435 "gram.y" { WindowDef *n = makeNode(WindowDef); n->name = NULL; @@ -42841,58 +44940,58 @@ YYLTYPE yylloc; ;} break; - case 2066: -#line 13730 "gram.y" + case 2148: +#line 14460 "gram.y" { (yyval.str) = (yyvsp[(1) - (1)].str); ;} break; - case 2067: -#line 13731 "gram.y" + case 2149: +#line 14461 "gram.y" { (yyval.str) = NULL; ;} break; - case 2068: -#line 13734 "gram.y" + case 2150: +#line 14464 "gram.y" { (yyval.list) = (yyvsp[(3) - (3)].list); ;} break; - case 2069: -#line 13735 "gram.y" + case 2151: +#line 14465 "gram.y" { (yyval.list) = NIL; ;} break; - case 2070: -#line 13747 "gram.y" + case 2152: +#line 14474 "gram.y" { - WindowDef *n = (yyvsp[(2) - (2)].windef); + WindowDef *n = (yyvsp[(2) - (3)].windef); n->frameOptions |= FRAMEOPTION_NONDEFAULT | FRAMEOPTION_RANGE; - if (n->frameOptions & (FRAMEOPTION_START_VALUE_PRECEDING | - FRAMEOPTION_END_VALUE_PRECEDING)) - ereport(ERROR, - (errcode(ERRCODE_FEATURE_NOT_SUPPORTED), - errmsg("RANGE PRECEDING is only supported with UNBOUNDED"), - parser_errposition((yylsp[(1) - (2)])))); - if (n->frameOptions & (FRAMEOPTION_START_VALUE_FOLLOWING | - FRAMEOPTION_END_VALUE_FOLLOWING)) - ereport(ERROR, - (errcode(ERRCODE_FEATURE_NOT_SUPPORTED), - errmsg("RANGE FOLLOWING is only supported with UNBOUNDED"), - parser_errposition((yylsp[(1) - (2)])))); + n->frameOptions |= (yyvsp[(3) - (3)].ival); (yyval.windef) = n; ;} break; - case 2071: -#line 13765 "gram.y" + case 2153: +#line 14481 "gram.y" { - WindowDef *n = (yyvsp[(2) - (2)].windef); + WindowDef *n = (yyvsp[(2) - (3)].windef); n->frameOptions |= FRAMEOPTION_NONDEFAULT | FRAMEOPTION_ROWS; + n->frameOptions |= (yyvsp[(3) - (3)].ival); (yyval.windef) = n; ;} break; - case 2072: -#line 13771 "gram.y" + case 2154: +#line 14488 "gram.y" + { + WindowDef *n = (yyvsp[(2) - (3)].windef); + n->frameOptions |= FRAMEOPTION_NONDEFAULT | FRAMEOPTION_GROUPS; + n->frameOptions |= (yyvsp[(3) - (3)].ival); + (yyval.windef) = n; + ;} + break; + + case 2155: +#line 14495 "gram.y" { WindowDef *n = makeNode(WindowDef); n->frameOptions = FRAMEOPTION_DEFAULTS; @@ -42902,8 +45001,8 @@ YYLTYPE yylloc; ;} break; - case 2073: -#line 13781 "gram.y" + case 2156: +#line 14505 "gram.y" { WindowDef *n = (yyvsp[(1) - (1)].windef); /* reject invalid cases */ @@ -42912,7 +45011,7 @@ YYLTYPE yylloc; (errcode(ERRCODE_WINDOWING_ERROR), errmsg("frame start cannot be UNBOUNDED FOLLOWING"), parser_errposition((yylsp[(1) - (1)])))); - if (n->frameOptions & FRAMEOPTION_START_VALUE_FOLLOWING) + if (n->frameOptions & FRAMEOPTION_START_OFFSET_FOLLOWING) ereport(ERROR, (errcode(ERRCODE_WINDOWING_ERROR), errmsg("frame starting from following row cannot end with current row"), @@ -42922,8 +45021,8 @@ YYLTYPE yylloc; ;} break; - case 2074: -#line 13798 "gram.y" + case 2157: +#line 14522 "gram.y" { WindowDef *n1 = (yyvsp[(2) - (4)].windef); WindowDef *n2 = (yyvsp[(4) - (4)].windef); @@ -42944,13 +45043,13 @@ YYLTYPE yylloc; errmsg("frame end cannot be UNBOUNDED PRECEDING"), parser_errposition((yylsp[(4) - (4)])))); if ((frameOptions & FRAMEOPTION_START_CURRENT_ROW) && - (frameOptions & FRAMEOPTION_END_VALUE_PRECEDING)) + (frameOptions & FRAMEOPTION_END_OFFSET_PRECEDING)) ereport(ERROR, (errcode(ERRCODE_WINDOWING_ERROR), errmsg("frame starting from current row cannot have preceding rows"), parser_errposition((yylsp[(4) - (4)])))); - if ((frameOptions & FRAMEOPTION_START_VALUE_FOLLOWING) && - (frameOptions & (FRAMEOPTION_END_VALUE_PRECEDING | + if ((frameOptions & FRAMEOPTION_START_OFFSET_FOLLOWING) && + (frameOptions & (FRAMEOPTION_END_OFFSET_PRECEDING | FRAMEOPTION_END_CURRENT_ROW))) ereport(ERROR, (errcode(ERRCODE_WINDOWING_ERROR), @@ -42962,8 +45061,8 @@ YYLTYPE yylloc; ;} break; - case 2075: -#line 13843 "gram.y" + case 2158: +#line 14567 "gram.y" { WindowDef *n = makeNode(WindowDef); n->frameOptions = FRAMEOPTION_START_UNBOUNDED_PRECEDING; @@ -42973,8 +45072,8 @@ YYLTYPE yylloc; ;} break; - case 2076: -#line 13851 "gram.y" + case 2159: +#line 14575 "gram.y" { WindowDef *n = makeNode(WindowDef); n->frameOptions = FRAMEOPTION_START_UNBOUNDED_FOLLOWING; @@ -42984,8 +45083,8 @@ YYLTYPE yylloc; ;} break; - case 2077: -#line 13859 "gram.y" + case 2160: +#line 14583 "gram.y" { WindowDef *n = makeNode(WindowDef); n->frameOptions = FRAMEOPTION_START_CURRENT_ROW; @@ -42995,235 +45094,260 @@ YYLTYPE yylloc; ;} break; - case 2078: -#line 13867 "gram.y" + case 2161: +#line 14591 "gram.y" { WindowDef *n = makeNode(WindowDef); - n->frameOptions = FRAMEOPTION_START_VALUE_PRECEDING; + n->frameOptions = FRAMEOPTION_START_OFFSET_PRECEDING; n->startOffset = (yyvsp[(1) - (2)].node); n->endOffset = NULL; (yyval.windef) = n; ;} break; - case 2079: -#line 13875 "gram.y" + case 2162: +#line 14599 "gram.y" { WindowDef *n = makeNode(WindowDef); - n->frameOptions = FRAMEOPTION_START_VALUE_FOLLOWING; + n->frameOptions = FRAMEOPTION_START_OFFSET_FOLLOWING; n->startOffset = (yyvsp[(1) - (2)].node); n->endOffset = NULL; (yyval.windef) = n; ;} break; - case 2080: -#line 13895 "gram.y" + case 2163: +#line 14609 "gram.y" + { (yyval.ival) = FRAMEOPTION_EXCLUDE_CURRENT_ROW; ;} + break; + + case 2164: +#line 14610 "gram.y" + { (yyval.ival) = FRAMEOPTION_EXCLUDE_GROUP; ;} + break; + + case 2165: +#line 14611 "gram.y" + { (yyval.ival) = FRAMEOPTION_EXCLUDE_TIES; ;} + break; + + case 2166: +#line 14612 "gram.y" + { (yyval.ival) = 0; ;} + break; + + case 2167: +#line 14613 "gram.y" + { (yyval.ival) = 0; ;} + break; + + case 2168: +#line 14627 "gram.y" { (yyval.list) = (yyvsp[(3) - (4)].list); ;} break; - case 2081: -#line 13896 "gram.y" + case 2169: +#line 14628 "gram.y" { (yyval.list) = NIL; ;} break; - case 2082: -#line 13897 "gram.y" + case 2170: +#line 14629 "gram.y" { (yyval.list) = lappend((yyvsp[(2) - (5)].list), (yyvsp[(4) - (5)].node)); ;} break; - case 2083: -#line 13900 "gram.y" + case 2171: +#line 14632 "gram.y" { (yyval.list) = (yyvsp[(3) - (4)].list); ;} break; - case 2084: -#line 13901 "gram.y" + case 2172: +#line 14633 "gram.y" { (yyval.list) = NIL; ;} break; - case 2085: -#line 13904 "gram.y" + case 2173: +#line 14636 "gram.y" { (yyval.list) = lappend((yyvsp[(2) - (5)].list), (yyvsp[(4) - (5)].node)); ;} break; - case 2086: -#line 13907 "gram.y" + case 2174: +#line 14639 "gram.y" { (yyval.ival) = ANY_SUBLINK; ;} break; - case 2087: -#line 13908 "gram.y" + case 2175: +#line 14640 "gram.y" { (yyval.ival) = ANY_SUBLINK; ;} break; - case 2088: -#line 13909 "gram.y" + case 2176: +#line 14641 "gram.y" { (yyval.ival) = ALL_SUBLINK; ;} break; - case 2089: -#line 13912 "gram.y" + case 2177: +#line 14644 "gram.y" { (yyval.str) = (yyvsp[(1) - (1)].str); ;} break; - case 2090: -#line 13913 "gram.y" + case 2178: +#line 14645 "gram.y" { (yyval.str) = (yyvsp[(1) - (1)].str); ;} break; - case 2091: -#line 13916 "gram.y" + case 2179: +#line 14648 "gram.y" { (yyval.str) = "+"; ;} break; - case 2092: -#line 13917 "gram.y" + case 2180: +#line 14649 "gram.y" { (yyval.str) = "-"; ;} break; - case 2093: -#line 13918 "gram.y" + case 2181: +#line 14650 "gram.y" { (yyval.str) = "*"; ;} break; - case 2094: -#line 13919 "gram.y" + case 2182: +#line 14651 "gram.y" { (yyval.str) = "/"; ;} break; - case 2095: -#line 13920 "gram.y" + case 2183: +#line 14652 "gram.y" { (yyval.str) = "%"; ;} break; - case 2096: -#line 13921 "gram.y" + case 2184: +#line 14653 "gram.y" { (yyval.str) = "^"; ;} break; - case 2097: -#line 13922 "gram.y" + case 2185: +#line 14654 "gram.y" { (yyval.str) = "<"; ;} break; - case 2098: -#line 13923 "gram.y" + case 2186: +#line 14655 "gram.y" { (yyval.str) = ">"; ;} break; - case 2099: -#line 13924 "gram.y" + case 2187: +#line 14656 "gram.y" { (yyval.str) = "="; ;} break; - case 2100: -#line 13925 "gram.y" + case 2188: +#line 14657 "gram.y" { (yyval.str) = "<="; ;} break; - case 2101: -#line 13926 "gram.y" + case 2189: +#line 14658 "gram.y" { (yyval.str) = ">="; ;} break; - case 2102: -#line 13927 "gram.y" + case 2190: +#line 14659 "gram.y" { (yyval.str) = "<>"; ;} break; - case 2103: -#line 13928 "gram.y" + case 2191: +#line 14660 "gram.y" { (yyval.str) = "?"; ;} break; - case 2104: -#line 13932 "gram.y" + case 2192: +#line 14664 "gram.y" { (yyval.list) = list_make1(makeString((yyvsp[(1) - (1)].str))); ;} break; - case 2105: -#line 13934 "gram.y" + case 2193: +#line 14666 "gram.y" { (yyval.list) = (yyvsp[(3) - (4)].list); ;} break; - case 2106: -#line 13939 "gram.y" + case 2194: +#line 14671 "gram.y" { (yyval.list) = list_make1(makeString((yyvsp[(1) - (1)].str))); ;} break; - case 2107: -#line 13941 "gram.y" + case 2195: +#line 14673 "gram.y" { (yyval.list) = (yyvsp[(3) - (4)].list); ;} break; - case 2108: -#line 13946 "gram.y" + case 2196: +#line 14678 "gram.y" { (yyval.list) = list_make1(makeString((yyvsp[(1) - (1)].str))); ;} break; - case 2109: -#line 13948 "gram.y" + case 2197: +#line 14680 "gram.y" { (yyval.list) = (yyvsp[(3) - (4)].list); ;} break; - case 2110: -#line 13950 "gram.y" + case 2198: +#line 14682 "gram.y" { (yyval.list) = list_make1(makeString("~~")); ;} break; - case 2111: -#line 13952 "gram.y" + case 2199: +#line 14684 "gram.y" { (yyval.list) = list_make1(makeString("!~~")); ;} break; - case 2112: -#line 13954 "gram.y" + case 2200: +#line 14686 "gram.y" { (yyval.list) = list_make1(makeString("~~*")); ;} break; - case 2113: -#line 13956 "gram.y" + case 2201: +#line 14688 "gram.y" { (yyval.list) = list_make1(makeString("!~~*")); ;} break; - case 2114: -#line 13968 "gram.y" + case 2202: +#line 14700 "gram.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].node)); ;} break; - case 2115: -#line 13972 "gram.y" + case 2203: +#line 14704 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].node)); ;} break; - case 2116: -#line 13979 "gram.y" + case 2204: +#line 14711 "gram.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].node)); ;} break; - case 2117: -#line 13983 "gram.y" + case 2205: +#line 14715 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].node)); ;} break; - case 2118: -#line 13989 "gram.y" + case 2206: +#line 14721 "gram.y" { (yyval.node) = (yyvsp[(1) - (1)].node); ;} break; - case 2119: -#line 13993 "gram.y" + case 2207: +#line 14725 "gram.y" { NamedArgExpr *na = makeNode(NamedArgExpr); na->name = (yyvsp[(1) - (3)].str); @@ -43234,8 +45358,8 @@ YYLTYPE yylloc; ;} break; - case 2120: -#line 14002 "gram.y" + case 2208: +#line 14734 "gram.y" { NamedArgExpr *na = makeNode(NamedArgExpr); na->name = (yyvsp[(1) - (3)].str); @@ -43246,166 +45370,186 @@ YYLTYPE yylloc; ;} break; - case 2121: -#line 14012 "gram.y" + case 2209: +#line 14744 "gram.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].typnam)); ;} break; - case 2122: -#line 14013 "gram.y" + case 2210: +#line 14745 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].typnam)); ;} break; - case 2123: -#line 14017 "gram.y" + case 2211: +#line 14749 "gram.y" { (yyval.node) = makeAArrayExpr((yyvsp[(2) - (3)].list), (yylsp[(1) - (3)])); ;} break; - case 2124: -#line 14021 "gram.y" + case 2212: +#line 14753 "gram.y" { (yyval.node) = makeAArrayExpr((yyvsp[(2) - (3)].list), (yylsp[(1) - (3)])); ;} break; - case 2125: -#line 14025 "gram.y" + case 2213: +#line 14757 "gram.y" { (yyval.node) = makeAArrayExpr(NIL, (yylsp[(1) - (2)])); ;} break; - case 2126: -#line 14030 "gram.y" + case 2214: +#line 14762 "gram.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].node)); ;} break; - case 2127: -#line 14031 "gram.y" + case 2215: +#line 14763 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].node)); ;} break; - case 2128: -#line 14037 "gram.y" + case 2216: +#line 14769 "gram.y" { (yyval.list) = list_make2(makeStringConst((yyvsp[(1) - (3)].str), (yylsp[(1) - (3)])), (yyvsp[(3) - (3)].node)); ;} break; - case 2129: -#line 14041 "gram.y" + case 2217: +#line 14773 "gram.y" { (yyval.list) = list_make2(makeParamRef((yyvsp[(1) - (3)].ival), (yylsp[(1) - (3)])), (yyvsp[(3) - (3)].node)); ;} break; - case 2130: -#line 14045 "gram.y" + case 2218: +#line 14777 "gram.y" { (yyval.list) = list_make2(makeParamRef(0, (yylsp[(1) - (3)])), (yyvsp[(3) - (3)].node)); ;} break; - case 2131: -#line 14048 "gram.y" + case 2219: +#line 14780 "gram.y" { (yyval.list) = NIL; ;} break; - case 2132: -#line 14055 "gram.y" + case 2220: +#line 14787 "gram.y" { (yyval.str) = (yyvsp[(1) - (1)].str); ;} break; - case 2133: -#line 14056 "gram.y" + case 2221: +#line 14788 "gram.y" { (yyval.str) = "year"; ;} break; - case 2134: -#line 14057 "gram.y" + case 2222: +#line 14789 "gram.y" { (yyval.str) = "month"; ;} break; - case 2135: -#line 14058 "gram.y" + case 2223: +#line 14790 "gram.y" { (yyval.str) = "day"; ;} break; - case 2136: -#line 14059 "gram.y" - { (yyval.str) = "hour"; ;} + case 2224: +#line 14791 "gram.y" + { (yyval.str) = "hour"; ;} + break; + + case 2225: +#line 14792 "gram.y" + { (yyval.str) = "minute"; ;} + break; + + case 2226: +#line 14793 "gram.y" + { (yyval.str) = "second"; ;} + break; + + case 2227: +#line 14794 "gram.y" + { (yyval.str) = (yyvsp[(1) - (1)].str); ;} + break; + + case 2228: +#line 14798 "gram.y" + { (yyval.str) = "nfc"; ;} break; - case 2137: -#line 14060 "gram.y" - { (yyval.str) = "minute"; ;} + case 2229: +#line 14799 "gram.y" + { (yyval.str) = "nfd"; ;} break; - case 2138: -#line 14061 "gram.y" - { (yyval.str) = "second"; ;} + case 2230: +#line 14800 "gram.y" + { (yyval.str) = "nfkc"; ;} break; - case 2139: -#line 14062 "gram.y" - { (yyval.str) = (yyvsp[(1) - (1)].str); ;} + case 2231: +#line 14801 "gram.y" + { (yyval.str) = "nfkd"; ;} break; - case 2140: -#line 14073 "gram.y" + case 2232: +#line 14812 "gram.y" { (yyval.list) = list_make4((yyvsp[(1) - (4)].node), (yyvsp[(2) - (4)].node), (yyvsp[(3) - (4)].node), (yyvsp[(4) - (4)].node)); ;} break; - case 2141: -#line 14077 "gram.y" + case 2233: +#line 14816 "gram.y" { (yyval.list) = list_make3((yyvsp[(1) - (3)].node), (yyvsp[(2) - (3)].node), (yyvsp[(3) - (3)].node)); ;} break; - case 2142: -#line 14084 "gram.y" + case 2234: +#line 14823 "gram.y" { (yyval.node) = (yyvsp[(2) - (2)].node); ;} break; - case 2143: -#line 14090 "gram.y" + case 2235: +#line 14829 "gram.y" { (yyval.list) = list_make2((yyvsp[(3) - (3)].node), (yyvsp[(1) - (3)].node)); ;} break; - case 2144: -#line 14091 "gram.y" + case 2236: +#line 14830 "gram.y" { (yyval.list) = NIL; ;} break; - case 2145: -#line 14108 "gram.y" + case 2237: +#line 14847 "gram.y" { (yyval.list) = list_make3((yyvsp[(1) - (3)].node), (yyvsp[(2) - (3)].node), (yyvsp[(3) - (3)].node)); ;} break; - case 2146: -#line 14112 "gram.y" + case 2238: +#line 14851 "gram.y" { /* not legal per SQL99, but might as well allow it */ (yyval.list) = list_make3((yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), (yyvsp[(2) - (3)].node)); ;} break; - case 2147: -#line 14117 "gram.y" + case 2239: +#line 14856 "gram.y" { (yyval.list) = list_make2((yyvsp[(1) - (2)].node), (yyvsp[(2) - (2)].node)); ;} break; - case 2148: -#line 14121 "gram.y" + case 2240: +#line 14860 "gram.y" { /* * Since there are no cases where this syntax allows @@ -43422,45 +45566,45 @@ YYLTYPE yylloc; ;} break; - case 2149: -#line 14136 "gram.y" + case 2241: +#line 14875 "gram.y" { (yyval.list) = (yyvsp[(1) - (1)].list); ;} break; - case 2150: -#line 14140 "gram.y" + case 2242: +#line 14879 "gram.y" { (yyval.list) = NIL; ;} break; - case 2151: -#line 14144 "gram.y" + case 2243: +#line 14883 "gram.y" { (yyval.node) = (yyvsp[(2) - (2)].node); ;} break; - case 2152: -#line 14147 "gram.y" + case 2244: +#line 14886 "gram.y" { (yyval.node) = (yyvsp[(2) - (2)].node); ;} break; - case 2153: -#line 14150 "gram.y" + case 2245: +#line 14889 "gram.y" { (yyval.list) = lappend((yyvsp[(3) - (3)].list), (yyvsp[(1) - (3)].node)); ;} break; - case 2154: -#line 14151 "gram.y" + case 2246: +#line 14890 "gram.y" { (yyval.list) = (yyvsp[(2) - (2)].list); ;} break; - case 2155: -#line 14152 "gram.y" + case 2247: +#line 14891 "gram.y" { (yyval.list) = (yyvsp[(1) - (1)].list); ;} break; - case 2156: -#line 14156 "gram.y" + case 2248: +#line 14895 "gram.y" { SubLink *n = makeNode(SubLink); n->subselect = (yyvsp[(1) - (1)].node); @@ -43469,13 +45613,13 @@ YYLTYPE yylloc; ;} break; - case 2157: -#line 14162 "gram.y" + case 2249: +#line 14901 "gram.y" { (yyval.node) = (Node *)(yyvsp[(2) - (3)].list); ;} break; - case 2158: -#line 14173 "gram.y" + case 2250: +#line 14912 "gram.y" { CaseExpr *c = makeNode(CaseExpr); c->casetype = InvalidOid; /* not analyzed yet */ @@ -43487,18 +45631,18 @@ YYLTYPE yylloc; ;} break; - case 2159: -#line 14186 "gram.y" + case 2251: +#line 14925 "gram.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].node)); ;} break; - case 2160: -#line 14187 "gram.y" + case 2252: +#line 14926 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (2)].list), (yyvsp[(2) - (2)].node)); ;} break; - case 2161: -#line 14192 "gram.y" + case 2253: +#line 14931 "gram.y" { CaseWhen *w = makeNode(CaseWhen); w->expr = (Expr *) (yyvsp[(2) - (4)].node); @@ -43508,56 +45652,56 @@ YYLTYPE yylloc; ;} break; - case 2162: -#line 14202 "gram.y" + case 2254: +#line 14941 "gram.y" { (yyval.node) = (yyvsp[(2) - (2)].node); ;} break; - case 2163: -#line 14203 "gram.y" + case 2255: +#line 14942 "gram.y" { (yyval.node) = NULL; ;} break; - case 2164: -#line 14206 "gram.y" + case 2256: +#line 14945 "gram.y" { (yyval.node) = (yyvsp[(1) - (1)].node); ;} break; - case 2165: -#line 14207 "gram.y" + case 2257: +#line 14946 "gram.y" { (yyval.node) = NULL; ;} break; - case 2166: -#line 14211 "gram.y" + case 2258: +#line 14950 "gram.y" { (yyval.node) = makeColumnRef((yyvsp[(1) - (1)].str), NIL, (yylsp[(1) - (1)]), yyscanner); ;} break; - case 2167: -#line 14215 "gram.y" + case 2259: +#line 14954 "gram.y" { (yyval.node) = makeColumnRef((yyvsp[(1) - (2)].str), (yyvsp[(2) - (2)].list), (yylsp[(1) - (2)]), yyscanner); ;} break; - case 2168: -#line 14222 "gram.y" + case 2260: +#line 14961 "gram.y" { (yyval.node) = (Node *) makeString((yyvsp[(2) - (2)].str)); ;} break; - case 2169: -#line 14226 "gram.y" + case 2261: +#line 14965 "gram.y" { (yyval.node) = (Node *) makeNode(A_Star); ;} break; - case 2170: -#line 14230 "gram.y" + case 2262: +#line 14969 "gram.y" { A_Indices *ai = makeNode(A_Indices); ai->is_slice = false; @@ -43567,8 +45711,8 @@ YYLTYPE yylloc; ;} break; - case 2171: -#line 14238 "gram.y" + case 2263: +#line 14977 "gram.y" { A_Indices *ai = makeNode(A_Indices); ai->is_slice = true; @@ -43578,58 +45722,58 @@ YYLTYPE yylloc; ;} break; - case 2172: -#line 14248 "gram.y" + case 2264: +#line 14987 "gram.y" { (yyval.node) = (yyvsp[(1) - (1)].node); ;} break; - case 2173: -#line 14249 "gram.y" + case 2265: +#line 14988 "gram.y" { (yyval.node) = NULL; ;} break; - case 2174: -#line 14253 "gram.y" + case 2266: +#line 14992 "gram.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].node)); ;} break; - case 2175: -#line 14254 "gram.y" + case 2267: +#line 14993 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (2)].list), (yyvsp[(2) - (2)].node)); ;} break; - case 2176: -#line 14258 "gram.y" + case 2268: +#line 14997 "gram.y" { (yyval.list) = NIL; ;} break; - case 2177: -#line 14259 "gram.y" + case 2269: +#line 14998 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (2)].list), (yyvsp[(2) - (2)].node)); ;} break; - case 2180: -#line 14273 "gram.y" + case 2272: +#line 15012 "gram.y" { (yyval.list) = (yyvsp[(1) - (1)].list); ;} break; - case 2181: -#line 14274 "gram.y" + case 2273: +#line 15013 "gram.y" { (yyval.list) = NIL; ;} break; - case 2182: -#line 14278 "gram.y" + case 2274: +#line 15017 "gram.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].target)); ;} break; - case 2183: -#line 14279 "gram.y" + case 2275: +#line 15018 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].target)); ;} break; - case 2184: -#line 14283 "gram.y" + case 2276: +#line 15022 "gram.y" { (yyval.target) = makeNode(ResTarget); (yyval.target)->name = (yyvsp[(3) - (3)].str); @@ -43639,8 +45783,8 @@ YYLTYPE yylloc; ;} break; - case 2185: -#line 14299 "gram.y" + case 2277: +#line 15038 "gram.y" { (yyval.target) = makeNode(ResTarget); (yyval.target)->name = (yyvsp[(2) - (2)].str); @@ -43650,8 +45794,8 @@ YYLTYPE yylloc; ;} break; - case 2186: -#line 14307 "gram.y" + case 2278: +#line 15046 "gram.y" { (yyval.target) = makeNode(ResTarget); (yyval.target)->name = NULL; @@ -43661,8 +45805,8 @@ YYLTYPE yylloc; ;} break; - case 2187: -#line 14315 "gram.y" + case 2279: +#line 15054 "gram.y" { ColumnRef *n = makeNode(ColumnRef); n->fields = list_make1(makeNode(A_Star)); @@ -43676,25 +45820,25 @@ YYLTYPE yylloc; ;} break; - case 2188: -#line 14336 "gram.y" + case 2280: +#line 15075 "gram.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].range)); ;} break; - case 2189: -#line 14337 "gram.y" + case 2281: +#line 15076 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].range)); ;} break; - case 2190: -#line 14349 "gram.y" + case 2282: +#line 15088 "gram.y" { (yyval.range) = makeRangeVar(NULL, (yyvsp[(1) - (1)].str), (yylsp[(1) - (1)])); ;} break; - case 2191: -#line 14353 "gram.y" + case 2283: +#line 15092 "gram.y" { check_qualified_name((yyvsp[(2) - (2)].list), yyscanner); (yyval.range) = makeRangeVar(NULL, NULL, (yylsp[(1) - (2)])); @@ -43721,89 +45865,89 @@ YYLTYPE yylloc; ;} break; - case 2192: -#line 14380 "gram.y" + case 2284: +#line 15119 "gram.y" { (yyval.list) = list_make1(makeString((yyvsp[(1) - (1)].str))); ;} break; - case 2193: -#line 14382 "gram.y" + case 2285: +#line 15121 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (3)].list), makeString((yyvsp[(3) - (3)].str))); ;} break; - case 2194: -#line 14386 "gram.y" + case 2286: +#line 15125 "gram.y" { (yyval.str) = (yyvsp[(1) - (1)].str); ;} break; - case 2195: -#line 14389 "gram.y" + case 2287: +#line 15128 "gram.y" { (yyval.str) = (yyvsp[(1) - (1)].str); ;} break; - case 2196: -#line 14392 "gram.y" + case 2288: +#line 15131 "gram.y" { (yyval.str) = (yyvsp[(1) - (1)].str); ;} break; - case 2197: -#line 14394 "gram.y" + case 2289: +#line 15133 "gram.y" { (yyval.str) = (yyvsp[(1) - (1)].str); ;} break; - case 2198: -#line 14396 "gram.y" + case 2290: +#line 15135 "gram.y" { (yyval.str) = (yyvsp[(1) - (1)].str); ;} break; - case 2199: -#line 14398 "gram.y" + case 2291: +#line 15137 "gram.y" { (yyval.str) = (yyvsp[(1) - (1)].str); ;} break; - case 2200: -#line 14409 "gram.y" + case 2292: +#line 15148 "gram.y" { (yyval.list) = list_make1(makeString((yyvsp[(1) - (1)].str))); ;} break; - case 2201: -#line 14411 "gram.y" + case 2293: +#line 15150 "gram.y" { (yyval.list) = check_func_name(lcons(makeString((yyvsp[(1) - (2)].str)), (yyvsp[(2) - (2)].list)), yyscanner); ;} break; - case 2202: -#line 14422 "gram.y" + case 2294: +#line 15161 "gram.y" { (yyval.node) = makeIntConst((yyvsp[(1) - (1)].ival), (yylsp[(1) - (1)])); ;} break; - case 2203: -#line 14426 "gram.y" + case 2295: +#line 15165 "gram.y" { (yyval.node) = makeFloatConst((yyvsp[(1) - (1)].str), (yylsp[(1) - (1)])); ;} break; - case 2204: -#line 14430 "gram.y" + case 2296: +#line 15169 "gram.y" { (yyval.node) = makeStringConst((yyvsp[(1) - (1)].str), (yylsp[(1) - (1)])); ;} break; - case 2205: -#line 14434 "gram.y" + case 2297: +#line 15173 "gram.y" { (yyval.node) = makeBitStringConst((yyvsp[(1) - (1)].str), (yylsp[(1) - (1)])); ;} break; - case 2206: -#line 14438 "gram.y" + case 2298: +#line 15177 "gram.y" { /* This is a bit constant per SQL99: * Without Feature F511, "BIT data type", @@ -43814,8 +45958,8 @@ YYLTYPE yylloc; ;} break; - case 2207: -#line 14447 "gram.y" + case 2299: +#line 15186 "gram.y" { /* generic type 'literal' syntax */ TypeName *t = makeTypeNameFromNameList((yyvsp[(1) - (2)].list)); @@ -43824,8 +45968,8 @@ YYLTYPE yylloc; ;} break; - case 2208: -#line 14454 "gram.y" + case 2300: +#line 15193 "gram.y" { /* generic syntax with a type modifier */ TypeName *t = makeTypeNameFromNameList((yyvsp[(1) - (6)].list)); @@ -43859,15 +46003,60 @@ YYLTYPE yylloc; ;} break; - case 2209: -#line 14486 "gram.y" + case 2301: +#line 15225 "gram.y" + { + /* generic type 'literal' syntax */ + TypeName *t = makeTypeNameFromNameList((yyvsp[(1) - (2)].list)); + t->location = (yylsp[(1) - (2)]); + (yyval.node) = makeParamRefCast((yyvsp[(2) - (2)].ival), (yylsp[(2) - (2)]), t); + ;} + break; + + case 2302: +#line 15232 "gram.y" + { + /* generic syntax with a type modifier */ + TypeName *t = makeTypeNameFromNameList((yyvsp[(1) - (6)].list)); + ListCell *lc; + + /* + * We must use func_arg_list and opt_sort_clause in the + * production to avoid reduce/reduce conflicts, but we + * don't actually wish to allow NamedArgExpr in this + * context, nor ORDER BY. + */ + foreach(lc, (yyvsp[(3) - (6)].list)) + { + NamedArgExpr *arg = (NamedArgExpr *) lfirst(lc); + + if (IsA(arg, NamedArgExpr)) + ereport(ERROR, + (errcode(ERRCODE_SYNTAX_ERROR), + errmsg("type modifier cannot have parameter name"), + parser_errposition(arg->location))); + } + if ((yyvsp[(4) - (6)].list) != NIL) + ereport(ERROR, + (errcode(ERRCODE_SYNTAX_ERROR), + errmsg("type modifier cannot have ORDER BY"), + parser_errposition((yylsp[(4) - (6)])))); + + t->typmods = (yyvsp[(3) - (6)].list); + t->location = (yylsp[(1) - (6)]); + (yyval.node) = makeParamRefCast((yyvsp[(6) - (6)].ival), (yylsp[(6) - (6)]), t); + ;} + break; + + case 2303: +#line 15264 "gram.y" { (yyval.node) = makeStringConstCast((yyvsp[(2) - (2)].str), (yylsp[(2) - (2)]), (yyvsp[(1) - (2)].typnam)); ;} break; - case 2210: -#line 14490 "gram.y" + case 2304: +#line 15268 "gram.y" { TypeName *t = (yyvsp[(1) - (3)].typnam); t->typmods = (yyvsp[(3) - (3)].list); @@ -43875,8 +46064,8 @@ YYLTYPE yylloc; ;} break; - case 2211: -#line 14496 "gram.y" + case 2305: +#line 15274 "gram.y" { TypeName *t = (yyvsp[(1) - (5)].typnam); t->typmods = list_make2(makeIntConst(INTERVAL_FULL_RANGE, -1), @@ -43885,69 +46074,90 @@ YYLTYPE yylloc; ;} break; - case 2212: -#line 14504 "gram.y" + case 2306: +#line 15281 "gram.y" { - TypeName *t = (yyvsp[(1) - (6)].typnam); - if ((yyvsp[(6) - (6)].list) != NIL) - { - t->typmods = lappend((yyvsp[(6) - (6)].list), makeParamRef(0, (yylsp[(3) - (6)]))); - } - else - t->typmods = list_make2(makeIntConst(INTERVAL_FULL_RANGE, -1), - makeParamRef(0, (yylsp[(3) - (6)]))); - (yyval.node) = makeParamRefCast(0, (yylsp[(5) - (6)]), t); + (yyval.node) = makeParamRefCast((yyvsp[(2) - (2)].ival), (yylsp[(2) - (2)]), (yyvsp[(1) - (2)].typnam)); ;} break; - case 2213: -#line 14516 "gram.y" + case 2307: +#line 15285 "gram.y" + { + TypeName *t = (yyvsp[(1) - (3)].typnam); + t->typmods = (yyvsp[(3) - (3)].list); + (yyval.node) = makeParamRefCast((yyvsp[(2) - (3)].ival), (yylsp[(2) - (3)]), t); + ;} + break; + + case 2308: +#line 15291 "gram.y" { - (yyval.node) = makeBoolAConst(TRUE, (yylsp[(1) - (1)])); + TypeName *t = (yyvsp[(1) - (5)].typnam); + t->typmods = list_make2(makeIntConst(INTERVAL_FULL_RANGE, -1), + makeIntConst((yyvsp[(3) - (5)].ival), (yylsp[(3) - (5)]))); + (yyval.node) = makeParamRefCast((yyvsp[(5) - (5)].ival), (yylsp[(5) - (5)]), t); ;} break; - case 2214: -#line 14520 "gram.y" + case 2309: +#line 15299 "gram.y" { - (yyval.node) = makeBoolAConst(FALSE, (yylsp[(1) - (1)])); + TypeName *t = (yyvsp[(1) - (5)].typnam); + t->typmods = list_make2(makeIntConst(INTERVAL_FULL_RANGE, -1), + makeIntConst((yyvsp[(3) - (5)].ival), (yylsp[(3) - (5)]))); + (yyval.node) = makeParamRefCast(0, (yylsp[(5) - (5)]), t); ;} break; - case 2215: -#line 14524 "gram.y" + case 2310: +#line 15306 "gram.y" + { + (yyval.node) = makeBoolAConst(true, (yylsp[(1) - (1)])); + ;} + break; + + case 2311: +#line 15310 "gram.y" + { + (yyval.node) = makeBoolAConst(false, (yylsp[(1) - (1)])); + ;} + break; + + case 2312: +#line 15314 "gram.y" { (yyval.node) = makeNullAConst((yylsp[(1) - (1)])); ;} break; - case 2216: -#line 14529 "gram.y" + case 2313: +#line 15319 "gram.y" { (yyval.ival) = (yyvsp[(1) - (1)].ival); ;} break; - case 2217: -#line 14530 "gram.y" + case 2314: +#line 15320 "gram.y" { (yyval.str) = (yyvsp[(1) - (1)].str); ;} break; - case 2218: -#line 14532 "gram.y" + case 2315: +#line 15322 "gram.y" { (yyval.ival) = (yyvsp[(1) - (1)].ival); ;} break; - case 2219: -#line 14533 "gram.y" + case 2316: +#line 15323 "gram.y" { (yyval.ival) = + (yyvsp[(2) - (2)].ival); ;} break; - case 2220: -#line 14534 "gram.y" + case 2317: +#line 15324 "gram.y" { (yyval.ival) = - (yyvsp[(2) - (2)].ival); ;} break; - case 2221: -#line 14539 "gram.y" + case 2318: +#line 15329 "gram.y" { RoleSpec *spc = (RoleSpec *) (yyvsp[(1) - (1)].rolespec); switch (spc->roletype) @@ -43961,24 +46171,27 @@ YYLTYPE yylloc; errmsg("role name \"%s\" is reserved", "public"), parser_errposition((yylsp[(1) - (1)])))); + break; case ROLESPEC_SESSION_USER: ereport(ERROR, (errcode(ERRCODE_RESERVED_NAME), errmsg("%s cannot be used as a role name here", "SESSION_USER"), parser_errposition((yylsp[(1) - (1)])))); + break; case ROLESPEC_CURRENT_USER: ereport(ERROR, (errcode(ERRCODE_RESERVED_NAME), errmsg("%s cannot be used as a role name here", "CURRENT_USER"), parser_errposition((yylsp[(1) - (1)])))); + break; } ;} break; - case 2222: -#line 14569 "gram.y" + case 2319: +#line 15362 "gram.y" { /* * "public" and "none" are not keywords, but they must @@ -44007,148 +46220,108 @@ YYLTYPE yylloc; ;} break; - case 2223: -#line 14596 "gram.y" + case 2320: +#line 15389 "gram.y" { (yyval.rolespec) = makeRoleSpec(ROLESPEC_CURRENT_USER, (yylsp[(1) - (1)])); ;} break; - case 2224: -#line 14600 "gram.y" + case 2321: +#line 15393 "gram.y" { (yyval.rolespec) = makeRoleSpec(ROLESPEC_SESSION_USER, (yylsp[(1) - (1)])); ;} break; - case 2225: -#line 14606 "gram.y" + case 2322: +#line 15399 "gram.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].rolespec)); ;} break; - case 2226: -#line 14608 "gram.y" + case 2323: +#line 15401 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].rolespec)); ;} break; - case 2227: -#line 14614 "gram.y" - { (yyval.node) = makeIntConst((yyvsp[(1) - (1)].ival), (yylsp[(1) - (1)])); ;} - break; - - case 2228: -#line 14615 "gram.y" - { (yyval.node) = makeParamRef( 0, (yylsp[(1) - (1)])); ;} - break; - - case 2229: -#line 14618 "gram.y" - { (yyval.node) = makeStringConst((yyvsp[(1) - (1)].str), (yylsp[(1) - (1)])); ;} - break; - - case 2230: -#line 14619 "gram.y" - { (yyval.node) = makeParamRef( 0, (yylsp[(1) - (1)])); ;} - break; - - case 2231: -#line 14622 "gram.y" - { (yyval.node) = makeStringConst((yyvsp[(1) - (1)].str), (yylsp[(1) - (1)])); ;} - break; - - case 2232: -#line 14623 "gram.y" - { (yyval.node) = makeParamRef( 0, (yylsp[(1) - (1)])); ;} - break; - - case 2233: -#line 14626 "gram.y" - { (yyval.node) = makeStringConst((yyvsp[(1) - (1)].str), (yylsp[(1) - (1)])); ;} - break; - - case 2234: -#line 14627 "gram.y" - { (yyval.node) = makeParamRef( 0, (yylsp[(1) - (1)])); ;} - break; - - case 2235: -#line 14643 "gram.y" + case 2324: +#line 15417 "gram.y" { (yyval.str) = (yyvsp[(1) - (1)].str); ;} break; - case 2236: -#line 14644 "gram.y" + case 2325: +#line 15418 "gram.y" { (yyval.str) = pstrdup((yyvsp[(1) - (1)].keyword)); ;} break; - case 2237: -#line 14645 "gram.y" + case 2326: +#line 15419 "gram.y" { (yyval.str) = pstrdup((yyvsp[(1) - (1)].keyword)); ;} break; - case 2238: -#line 14650 "gram.y" + case 2327: +#line 15424 "gram.y" { (yyval.str) = (yyvsp[(1) - (1)].str); ;} break; - case 2239: -#line 14651 "gram.y" + case 2328: +#line 15425 "gram.y" { (yyval.str) = pstrdup((yyvsp[(1) - (1)].keyword)); ;} break; - case 2240: -#line 14652 "gram.y" + case 2329: +#line 15426 "gram.y" { (yyval.str) = pstrdup((yyvsp[(1) - (1)].keyword)); ;} break; - case 2241: -#line 14657 "gram.y" + case 2330: +#line 15431 "gram.y" { (yyval.str) = (yyvsp[(1) - (1)].str); ;} break; - case 2242: -#line 14658 "gram.y" + case 2331: +#line 15432 "gram.y" { (yyval.str) = pstrdup((yyvsp[(1) - (1)].keyword)); ;} break; - case 2243: -#line 14659 "gram.y" + case 2332: +#line 15433 "gram.y" { (yyval.str) = pstrdup((yyvsp[(1) - (1)].keyword)); ;} break; - case 2244: -#line 14660 "gram.y" + case 2333: +#line 15434 "gram.y" { (yyval.str) = pstrdup((yyvsp[(1) - (1)].keyword)); ;} break; - case 2245: -#line 14666 "gram.y" + case 2334: +#line 15440 "gram.y" { (yyval.str) = (yyvsp[(1) - (1)].str); ;} break; - case 2246: -#line 14667 "gram.y" + case 2335: +#line 15441 "gram.y" { (yyval.str) = pstrdup((yyvsp[(1) - (1)].keyword)); ;} break; - case 2247: -#line 14668 "gram.y" + case 2336: +#line 15442 "gram.y" { (yyval.str) = pstrdup((yyvsp[(1) - (1)].keyword)); ;} break; - case 2248: -#line 14669 "gram.y" + case 2337: +#line 15443 "gram.y" { (yyval.str) = pstrdup((yyvsp[(1) - (1)].keyword)); ;} break; - case 2249: -#line 14670 "gram.y" + case 2338: +#line 15444 "gram.y" { (yyval.str) = pstrdup((yyvsp[(1) - (1)].keyword)); ;} break; /* Line 1267 of yacc.c. */ -#line 44093 "gram.c" +#line 46266 "gram.c" default: break; } YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc); @@ -44368,7 +46541,7 @@ YYLTYPE yylloc; } -#line 15159 "gram.y" +#line 15951 "gram.y" /* @@ -44451,7 +46624,7 @@ makeColumnRef(char *colname, List *indirection, else if (IsA(lfirst(l), A_Star)) { /* We only allow '*' at the end of a ColumnRef */ - if (lnext(l) != NULL) + if (lnext(indirection, l) != NULL) parser_yyerror("improper use of \"*\""); } nfields++; @@ -44596,14 +46769,16 @@ makeParamRefCast(int number, int location, TypeName *typename) } /* - * Makes INTERVAL-like nodes for "INTERVAL ? typemod", otherwise treat as A_EXPR + * Makes INTERVAL-like nodes for "INTERVAL ?" and "INTERVAL ? opt_interval", otherwise treat as A_EXPR */ static Node * makeInterval_or_AExprOp(Node *lexpr, Node *rexpr, int location) { - if (lexpr && IsA(lexpr, ColumnRef)) { + if (lexpr && IsA(lexpr, ColumnRef)) + { ColumnRef *c = (ColumnRef *) lexpr; - if (strcmp(strVal(linitial(c->fields)), "interval") == 0 ) { + if (strcmp(strVal(linitial(c->fields)), "interval") == 0 ) + { TypeName *t = SystemTypeName("interval"); t->location = c->location; @@ -44683,7 +46858,7 @@ check_indirection(List *indirection, core_yyscan_t yyscanner) { if (IsA(lfirst(l), A_Star)) { - if (lnext(l) != NULL) + if (lnext(indirection, l) != NULL) parser_yyerror("improper use of \"*\""); } } @@ -44770,7 +46945,7 @@ makeOrderedSetArgs(List *directargs, List *orderedargs, static void insertSelectOptions(SelectStmt *stmt, List *sortClause, List *lockingClause, - Node *limitOffset, Node *limitCount, + SelectLimit *limitClause, WithClause *withClause, core_yyscan_t yyscanner) { @@ -44791,23 +46966,35 @@ insertSelectOptions(SelectStmt *stmt, } /* We can handle multiple locking clauses, though */ stmt->lockingClause = list_concat(stmt->lockingClause, lockingClause); - if (limitOffset) + if (limitClause && limitClause->limitOffset) { if (stmt->limitOffset) ereport(ERROR, (errcode(ERRCODE_SYNTAX_ERROR), errmsg("multiple OFFSET clauses not allowed"), - parser_errposition(exprLocation(limitOffset)))); - stmt->limitOffset = limitOffset; + parser_errposition(exprLocation(limitClause->limitOffset)))); + stmt->limitOffset = limitClause->limitOffset; } - if (limitCount) + if (limitClause && limitClause->limitCount) { if (stmt->limitCount) ereport(ERROR, (errcode(ERRCODE_SYNTAX_ERROR), errmsg("multiple LIMIT clauses not allowed"), - parser_errposition(exprLocation(limitCount)))); - stmt->limitCount = limitCount; + parser_errposition(exprLocation(limitClause->limitCount)))); + stmt->limitCount = limitClause->limitCount; + } + if (limitClause && limitClause->limitOption != LIMIT_OPTION_DEFAULT) + { + if (stmt->limitOption) + ereport(ERROR, + (errcode(ERRCODE_SYNTAX_ERROR), + errmsg("multiple limit options not allowed"))); + if (!stmt->sortClause && limitClause->limitOption == LIMIT_OPTION_WITH_TIES) + ereport(ERROR, + (errcode(ERRCODE_SYNTAX_ERROR), + errmsg("WITH TIES cannot be specified without ORDER BY clause"))); + stmt->limitOption = limitClause->limitOption; } if (withClause) { @@ -45096,20 +47283,15 @@ SplitColQualList(List *qualList, core_yyscan_t yyscanner) { ListCell *cell; - ListCell *prev; - ListCell *next; *collClause = NULL; - prev = NULL; - for (cell = list_head(qualList); cell; cell = next) + foreach(cell, qualList) { Node *n = (Node *) lfirst(cell); - next = lnext(cell); if (IsA(n, Constraint)) { /* keep it in list */ - prev = cell; continue; } if (IsA(n, CollateClause)) @@ -45126,7 +47308,7 @@ SplitColQualList(List *qualList, else elog(ERROR, "unexpected node type %d", (int) n->type); /* remove non-Constraint nodes from qualList */ - qualList = list_delete_cell(qualList, cell, prev); + qualList = foreach_delete_current(qualList, cell); } *constraintList = qualList; } @@ -45231,6 +47413,7 @@ makeRecursiveViewSelect(char *relname, List *aliases, Node *query) /* create common table expression */ cte->ctename = relname; cte->aliascolnames = aliases; + cte->ctematerialized = CTEMaterializeDefault; cte->ctequery = query; cte->location = -1; diff --git a/parser/src_backend_parser_parse_expr.c b/parser/src_backend_parser_parse_expr.c index b41b39a4..714b5dea 100644 --- a/parser/src_backend_parser_parse_expr.c +++ b/parser/src_backend_parser_parse_expr.c @@ -9,7 +9,7 @@ * parse_expr.c * handle expressions in parser * - * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * @@ -26,9 +26,9 @@ #include "miscadmin.h" #include "nodes/makefuncs.h" #include "nodes/nodeFuncs.h" -#include "optimizer/tlist.h" -#include "optimizer/var.h" +#include "optimizer/optimizer.h" #include "parser/analyze.h" +#include "parser/parse_agg.h" #include "parser/parse_clause.h" #include "parser/parse_coerce.h" #include "parser/parse_collate.h" @@ -38,14 +38,12 @@ #include "parser/parse_relation.h" #include "parser/parse_target.h" #include "parser/parse_type.h" -#include "parser/parse_agg.h" #include "utils/builtins.h" #include "utils/date.h" #include "utils/lsyscache.h" #include "utils/timestamp.h" #include "utils/xml.h" - /* GUC parameters */ __thread bool operator_precedence_warning = false; @@ -108,35 +106,36 @@ static Node *transformMultiAssignRef(ParseState *pstate, MultiAssignRef *maref); static Node *transformCaseExpr(ParseState *pstate, CaseExpr *c); static Node *transformSubLink(ParseState *pstate, SubLink *sublink); static Node *transformArrayExpr(ParseState *pstate, A_ArrayExpr *a, - Oid array_type, Oid element_type, int32 typmod); + Oid array_type, Oid element_type, int32 typmod); static Node *transformRowExpr(ParseState *pstate, RowExpr *r, bool allowDefault); static Node *transformCoalesceExpr(ParseState *pstate, CoalesceExpr *c); static Node *transformMinMaxExpr(ParseState *pstate, MinMaxExpr *m); static Node *transformSQLValueFunction(ParseState *pstate, - SQLValueFunction *svf); + SQLValueFunction *svf); static Node *transformXmlExpr(ParseState *pstate, XmlExpr *x); static Node *transformXmlSerialize(ParseState *pstate, XmlSerialize *xs); static Node *transformBooleanTest(ParseState *pstate, BooleanTest *b); static Node *transformCurrentOfExpr(ParseState *pstate, CurrentOfExpr *cexpr); static Node *transformColumnRef(ParseState *pstate, ColumnRef *cref); -static Node *transformWholeRowRef(ParseState *pstate, RangeTblEntry *rte, - int location); +static Node *transformWholeRowRef(ParseState *pstate, + ParseNamespaceItem *nsitem, + int sublevels_up, int location); static Node *transformIndirection(ParseState *pstate, A_Indirection *ind); static Node *transformTypeCast(ParseState *pstate, TypeCast *tc); static Node *transformCollateClause(ParseState *pstate, CollateClause *c); static Node *make_row_comparison_op(ParseState *pstate, List *opname, - List *largs, List *rargs, int location); + List *largs, List *rargs, int location); static Node *make_row_distinct_op(ParseState *pstate, List *opname, - RowExpr *lrow, RowExpr *rrow, int location); + RowExpr *lrow, RowExpr *rrow, int location); static Expr *make_distinct_op(ParseState *pstate, List *opname, - Node *ltree, Node *rtree, int location); + Node *ltree, Node *rtree, int location); static Node *make_nulltest_from_distinct(ParseState *pstate, - A_Expr *distincta, Node *arg); + A_Expr *distincta, Node *arg); static int operator_precedence_group(Node *node, const char **nodename); static void emit_precedence_warnings(ParseState *pstate, - int opgroup, const char *opname, - Node *lchild, Node *rchild, - int location); + int opgroup, const char *opname, + Node *lchild, Node *rchild, + int location); /* diff --git a/parser/src_backend_parser_parser.c b/parser/src_backend_parser_parser.c index 7af345b4..0206059c 100644 --- a/parser/src_backend_parser_parser.c +++ b/parser/src_backend_parser_parser.c @@ -2,6 +2,10 @@ * Symbols referenced in this file: * - raw_parser * - base_yylex + * - check_uescapechar + * - str_udeescape + * - hexval + * - check_unicode_value * - raw_parser *-------------------------------------------------------------------- */ @@ -18,7 +22,7 @@ * analyze.c and related files. * * - * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * IDENTIFICATION @@ -29,8 +33,14 @@ #include "postgres.h" +#include "mb/pg_wchar.h" #include "parser/gramparse.h" #include "parser/parser.h" +#include "parser/scansup.h" + +static bool check_uescapechar(unsigned char escape); +static char *str_udeescape(const char *str, char escape, + int position, core_yyscan_t yyscanner); /* @@ -49,7 +59,7 @@ raw_parser(const char *str) /* initialize the flex scanner */ yyscanner = scanner_init(str, &yyextra.core_yy_extra, - ScanKeywords, NumScanKeywords); + &ScanKeywords, ScanKeywordTokens); /* base_yylex() only needs this much initialization */ yyextra.have_lookahead = false; @@ -83,6 +93,10 @@ raw_parser(const char *str) * scanner backtrack, which would cost more performance than this filter * layer does. * + * We also use this filter to convert UIDENT and USCONST sequences into + * plain IDENT and SCONST tokens. While that could be handled by additional + * productions in the main grammar, it's more efficient to do it like this. + * * The filter also provides a convenient place to translate between * the core_YYSTYPE and YYSTYPE representations (which are really the * same thing anyway, but notationally they're different). @@ -112,7 +126,7 @@ base_yylex(YYSTYPE *lvalp, YYLTYPE *llocp, core_yyscan_t yyscanner) * If this token isn't one that requires lookahead, just return it. If it * does, determine the token length. (We could get that via strlen(), but * since we have such a small set of possibilities, hardwiring seems - * feasible and more efficient.) + * feasible and more efficient --- at least for the fixed-length cases.) */ switch (cur_token) { @@ -125,6 +139,13 @@ base_yylex(YYSTYPE *lvalp, YYLTYPE *llocp, core_yyscan_t yyscanner) case WITH: cur_token_length = 4; break; + case UIDENT: + case USCONST: + cur_token_length = strlen(yyextra->core_yy_extra.scanbuf + *llocp); + break; + case SQL_COMMENT: + case C_COMMENT: + return base_yylex(lvalp, llocp, yyscanner); default: return cur_token; } @@ -198,7 +219,279 @@ base_yylex(YYSTYPE *lvalp, YYLTYPE *llocp, core_yyscan_t yyscanner) break; } break; + + case UIDENT: + case USCONST: + /* Look ahead for UESCAPE */ + if (next_token == UESCAPE) + { + /* Yup, so get third token, which had better be SCONST */ + const char *escstr; + + /* Again save and restore *llocp */ + cur_yylloc = *llocp; + + /* Un-truncate current token so errors point to third token */ + *(yyextra->lookahead_end) = yyextra->lookahead_hold_char; + + /* Get third token */ + next_token = core_yylex(&(yyextra->lookahead_yylval), + llocp, yyscanner); + + /* If we throw error here, it will point to third token */ + if (next_token != SCONST) + scanner_yyerror("UESCAPE must be followed by a simple string literal", + yyscanner); + + escstr = yyextra->lookahead_yylval.str; + if (strlen(escstr) != 1 || !check_uescapechar(escstr[0])) + scanner_yyerror("invalid Unicode escape character", + yyscanner); + + /* Now restore *llocp; errors will point to first token */ + *llocp = cur_yylloc; + + /* Apply Unicode conversion */ + lvalp->core_yystype.str = + str_udeescape(lvalp->core_yystype.str, + escstr[0], + *llocp, + yyscanner); + + /* + * We don't need to revert the un-truncation of UESCAPE. What + * we do want to do is clear have_lookahead, thereby consuming + * all three tokens. + */ + yyextra->have_lookahead = false; + } + else + { + /* No UESCAPE, so convert using default escape character */ + lvalp->core_yystype.str = + str_udeescape(lvalp->core_yystype.str, + '\\', + *llocp, + yyscanner); + } + + if (cur_token == UIDENT) + { + /* It's an identifier, so truncate as appropriate */ + truncate_identifier(lvalp->core_yystype.str, + strlen(lvalp->core_yystype.str), + true); + cur_token = IDENT; + } + else if (cur_token == USCONST) + { + cur_token = SCONST; + } + break; } return cur_token; } + +/* convert hex digit (caller should have verified that) to value */ +static unsigned int +hexval(unsigned char c) +{ + if (c >= '0' && c <= '9') + return c - '0'; + if (c >= 'a' && c <= 'f') + return c - 'a' + 0xA; + if (c >= 'A' && c <= 'F') + return c - 'A' + 0xA; + elog(ERROR, "invalid hexadecimal digit"); + return 0; /* not reached */ +} + +/* is Unicode code point acceptable? */ +static void +check_unicode_value(pg_wchar c) +{ + if (!is_valid_unicode_codepoint(c)) + ereport(ERROR, + (errcode(ERRCODE_SYNTAX_ERROR), + errmsg("invalid Unicode escape value"))); +} + +/* is 'escape' acceptable as Unicode escape character (UESCAPE syntax) ? */ +static bool +check_uescapechar(unsigned char escape) +{ + if (isxdigit(escape) + || escape == '+' + || escape == '\'' + || escape == '"' + || scanner_isspace(escape)) + return false; + else + return true; +} + +/* + * Process Unicode escapes in "str", producing a palloc'd plain string + * + * escape: the escape character to use + * position: start position of U&'' or U&"" string token + * yyscanner: context information needed for error reports + */ +static char * +str_udeescape(const char *str, char escape, + int position, core_yyscan_t yyscanner) +{ + const char *in; + char *new, + *out; + size_t new_len; + pg_wchar pair_first = 0; + ScannerCallbackState scbstate; + + /* + * Guesstimate that result will be no longer than input, but allow enough + * padding for Unicode conversion. + */ + new_len = strlen(str) + MAX_UNICODE_EQUIVALENT_STRING + 1; + new = palloc(new_len); + + in = str; + out = new; + while (*in) + { + /* Enlarge string if needed */ + size_t out_dist = out - new; + + if (out_dist > new_len - (MAX_UNICODE_EQUIVALENT_STRING + 1)) + { + new_len *= 2; + new = repalloc(new, new_len); + out = new + out_dist; + } + + if (in[0] == escape) + { + /* + * Any errors reported while processing this escape sequence will + * have an error cursor pointing at the escape. + */ + setup_scanner_errposition_callback(&scbstate, yyscanner, + in - str + position + 3); /* 3 for U&" */ + if (in[1] == escape) + { + if (pair_first) + goto invalid_pair; + *out++ = escape; + in += 2; + } + else if (isxdigit((unsigned char) in[1]) && + isxdigit((unsigned char) in[2]) && + isxdigit((unsigned char) in[3]) && + isxdigit((unsigned char) in[4])) + { + pg_wchar unicode; + + unicode = (hexval(in[1]) << 12) + + (hexval(in[2]) << 8) + + (hexval(in[3]) << 4) + + hexval(in[4]); + check_unicode_value(unicode); + if (pair_first) + { + if (is_utf16_surrogate_second(unicode)) + { + unicode = surrogate_pair_to_codepoint(pair_first, unicode); + pair_first = 0; + } + else + goto invalid_pair; + } + else if (is_utf16_surrogate_second(unicode)) + goto invalid_pair; + + if (is_utf16_surrogate_first(unicode)) + pair_first = unicode; + else + { + pg_unicode_to_server(unicode, (unsigned char *) out); + out += strlen(out); + } + in += 5; + } + else if (in[1] == '+' && + isxdigit((unsigned char) in[2]) && + isxdigit((unsigned char) in[3]) && + isxdigit((unsigned char) in[4]) && + isxdigit((unsigned char) in[5]) && + isxdigit((unsigned char) in[6]) && + isxdigit((unsigned char) in[7])) + { + pg_wchar unicode; + + unicode = (hexval(in[2]) << 20) + + (hexval(in[3]) << 16) + + (hexval(in[4]) << 12) + + (hexval(in[5]) << 8) + + (hexval(in[6]) << 4) + + hexval(in[7]); + check_unicode_value(unicode); + if (pair_first) + { + if (is_utf16_surrogate_second(unicode)) + { + unicode = surrogate_pair_to_codepoint(pair_first, unicode); + pair_first = 0; + } + else + goto invalid_pair; + } + else if (is_utf16_surrogate_second(unicode)) + goto invalid_pair; + + if (is_utf16_surrogate_first(unicode)) + pair_first = unicode; + else + { + pg_unicode_to_server(unicode, (unsigned char *) out); + out += strlen(out); + } + in += 8; + } + else + ereport(ERROR, + (errcode(ERRCODE_SYNTAX_ERROR), + errmsg("invalid Unicode escape"), + errhint("Unicode escapes must be \\XXXX or \\+XXXXXX."))); + + cancel_scanner_errposition_callback(&scbstate); + } + else + { + if (pair_first) + goto invalid_pair; + + *out++ = *in++; + } + } + + /* unfinished surrogate pair? */ + if (pair_first) + goto invalid_pair; + + *out = '\0'; + return new; + + /* + * We might get here with the error callback active, or not. Call + * scanner_errposition to make sure an error cursor appears; if the + * callback is active, this is duplicative but harmless. + */ +invalid_pair: + ereport(ERROR, + (errcode(ERRCODE_SYNTAX_ERROR), + errmsg("invalid Unicode surrogate pair"), + scanner_errposition(in - str + position + 3, /* 3 for U&" */ + yyscanner))); + return NULL; /* keep compiler quiet */ +} diff --git a/parser/src_backend_parser_scan.c b/parser/src_backend_parser_scan.c index fd51b4e5..f543142e 100644 --- a/parser/src_backend_parser_scan.c +++ b/parser/src_backend_parser_scan.c @@ -15,6 +15,7 @@ * - core_yy_load_buffer_state * - yy_fatal_error * - fprintf_to_ereport + * - ScanKeywordTokens * - core_yylex * - core_yy_create_buffer * - core_yy_init_buffer @@ -23,17 +24,13 @@ * - yy_start_state_list * - yy_transition * - addlitchar - * - litbufdup * - addlit - * - litbuf_udeescape - * - hexval - * - check_unicode_value - * - check_uescapechar + * - litbufdup * - check_escape_warning - * - is_utf16_surrogate_first - * - is_utf16_surrogate_second * - addunicode - * - surrogate_pair_to_codepoint + * - setup_scanner_errposition_callback + * - scb_error_callback + * - cancel_scanner_errposition_callback * - check_string_escape_warning * - unescape_single_char * - process_integer_literal @@ -55,14 +52,15 @@ * * NOTE NOTE NOTE: * - * The rules in this file must be kept in sync with src/fe_utils/psqlscan.l! + * The rules in this file must be kept in sync with src/fe_utils/psqlscan.l + * and src/interfaces/ecpg/preproc/pgc.l! * * The rules are designed so that the scanner never has to backtrack, * in the sense that there is always a rule that can match the input * consumed so far (the rule action may internally throw back some input * with yyless(), however). As explained in the flex manual, this makes - * for a useful speed increase --- about a third faster than a plain -CF - * lexer, in simple testing. The extra complexity is mostly in the rules + * for a useful speed increase --- several percent faster when measuring + * raw parsing (Flex + Bison). The extra complexity is mostly in the rules * for handling float numbers and continued string literals. If you change * the lexical rules, verify that you haven't broken the no-backtrack * property by running flex with the "-b" option and checking that the @@ -70,7 +68,7 @@ * Postgres 9.2, this check is made automatically by the Makefile.) * * - * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * IDENTIFICATION @@ -83,6 +81,7 @@ #include #include +#include "common/string.h" #include "parser/gramparse.h" #include "parser/parser.h" /* only needed for GUC variables */ #include "parser/scansup.h" @@ -90,7 +89,7 @@ -#line 46 "scan.c" +#line 48 "scan.c" #define YY_INT_ALIGNED short int @@ -440,3010 +439,2798 @@ static void yy_fatal_error (yyconst char msg[] ,yyscan_t yyscanner ); *yy_cp = '\0'; \ yyg->yy_c_buf_p = yy_cp; -#define YY_NUM_RULES 80 -#define YY_END_OF_BUFFER 81 +#define YY_NUM_RULES 66 +#define YY_END_OF_BUFFER 67 struct yy_trans_info { - flex_int32_t yy_verify; - flex_int32_t yy_nxt; + flex_int16_t yy_verify; + flex_int16_t yy_nxt; }; -static yyconst struct yy_trans_info yy_transition[37005] = +static yyconst struct yy_trans_info yy_transition[17678] = { - { 0, 0 }, { 0,36749 }, { 0, 0 }, { 0,36747 }, { 1,6708 }, - { 2,6708 }, { 3,6708 }, { 4,6708 }, { 5,6708 }, { 6,6708 }, - { 7,6708 }, { 8,6708 }, { 9,6710 }, { 10,6715 }, { 11,6708 }, - { 12,6710 }, { 13,6710 }, { 14,6708 }, { 15,6708 }, { 16,6708 }, - { 17,6708 }, { 18,6708 }, { 19,6708 }, { 20,6708 }, { 21,6708 }, - { 22,6708 }, { 23,6708 }, { 24,6708 }, { 25,6708 }, { 26,6708 }, - { 27,6708 }, { 28,6708 }, { 29,6708 }, { 30,6708 }, { 31,6708 }, - { 32,6710 }, { 33,6717 }, { 34,6712 }, { 35,6757 }, { 36,6823 }, - { 37,7080 }, { 38,6757 }, { 39,6730 }, { 40,6732 }, { 41,6732 }, - { 42,7080 }, { 43,7080 }, { 44,6732 }, { 45,7091 }, { 46,7110 }, - - { 47,7181 }, { 48,7183 }, { 49,7183 }, { 50,7183 }, { 51,7183 }, - { 52,7183 }, { 53,7183 }, { 54,7183 }, { 55,7183 }, { 56,7183 }, - { 57,7183 }, { 58,6735 }, { 59,6732 }, { 60,7248 }, { 61,7259 }, - { 62,7326 }, { 63,7080 }, { 64,6757 }, { 65,7358 }, { 66,7615 }, - { 67,7358 }, { 68,7358 }, { 69,7872 }, { 70,7358 }, { 71,7358 }, - { 72,7358 }, { 73,7358 }, { 74,7358 }, { 75,7358 }, { 76,7358 }, - { 77,7358 }, { 78,8129 }, { 79,7358 }, { 80,7358 }, { 81,7358 }, - { 82,7358 }, { 83,7358 }, { 84,7358 }, { 85,8386 }, { 86,7358 }, - { 87,7358 }, { 88,8643 }, { 89,7358 }, { 90,7358 }, { 91,6732 }, - { 92,6708 }, { 93,6732 }, { 94,7080 }, { 95,7358 }, { 96,6757 }, - - { 97,7358 }, { 98,7615 }, { 99,7358 }, { 100,7358 }, { 101,7872 }, - { 102,7358 }, { 103,7358 }, { 104,7358 }, { 105,7358 }, { 106,7358 }, - { 107,7358 }, { 108,7358 }, { 109,7358 }, { 110,8129 }, { 111,7358 }, - { 112,7358 }, { 113,7358 }, { 114,7358 }, { 115,7358 }, { 116,7358 }, - { 117,8386 }, { 118,7358 }, { 119,7358 }, { 120,8643 }, { 121,7358 }, - { 122,7358 }, { 123,6708 }, { 124,6757 }, { 125,6708 }, { 126,6757 }, - { 127,6708 }, { 128,7358 }, { 129,7358 }, { 130,7358 }, { 131,7358 }, - { 132,7358 }, { 133,7358 }, { 134,7358 }, { 135,7358 }, { 136,7358 }, - { 137,7358 }, { 138,7358 }, { 139,7358 }, { 140,7358 }, { 141,7358 }, - { 142,7358 }, { 143,7358 }, { 144,7358 }, { 145,7358 }, { 146,7358 }, - - { 147,7358 }, { 148,7358 }, { 149,7358 }, { 150,7358 }, { 151,7358 }, - { 152,7358 }, { 153,7358 }, { 154,7358 }, { 155,7358 }, { 156,7358 }, - { 157,7358 }, { 158,7358 }, { 159,7358 }, { 160,7358 }, { 161,7358 }, - { 162,7358 }, { 163,7358 }, { 164,7358 }, { 165,7358 }, { 166,7358 }, - { 167,7358 }, { 168,7358 }, { 169,7358 }, { 170,7358 }, { 171,7358 }, - { 172,7358 }, { 173,7358 }, { 174,7358 }, { 175,7358 }, { 176,7358 }, - { 177,7358 }, { 178,7358 }, { 179,7358 }, { 180,7358 }, { 181,7358 }, - { 182,7358 }, { 183,7358 }, { 184,7358 }, { 185,7358 }, { 186,7358 }, - { 187,7358 }, { 188,7358 }, { 189,7358 }, { 190,7358 }, { 191,7358 }, - { 192,7358 }, { 193,7358 }, { 194,7358 }, { 195,7358 }, { 196,7358 }, - - { 197,7358 }, { 198,7358 }, { 199,7358 }, { 200,7358 }, { 201,7358 }, - { 202,7358 }, { 203,7358 }, { 204,7358 }, { 205,7358 }, { 206,7358 }, - { 207,7358 }, { 208,7358 }, { 209,7358 }, { 210,7358 }, { 211,7358 }, - { 212,7358 }, { 213,7358 }, { 214,7358 }, { 215,7358 }, { 216,7358 }, - { 217,7358 }, { 218,7358 }, { 219,7358 }, { 220,7358 }, { 221,7358 }, - { 222,7358 }, { 223,7358 }, { 224,7358 }, { 225,7358 }, { 226,7358 }, - { 227,7358 }, { 228,7358 }, { 229,7358 }, { 230,7358 }, { 231,7358 }, - { 232,7358 }, { 233,7358 }, { 234,7358 }, { 235,7358 }, { 236,7358 }, - { 237,7358 }, { 238,7358 }, { 239,7358 }, { 240,7358 }, { 241,7358 }, - { 242,7358 }, { 243,7358 }, { 244,7358 }, { 245,7358 }, { 246,7358 }, - - { 247,7358 }, { 248,7358 }, { 249,7358 }, { 250,7358 }, { 251,7358 }, - { 252,7358 }, { 253,7358 }, { 254,7358 }, { 255,7358 }, { 256,6708 }, - { 0, 0 }, { 0,36489 }, { 1,6450 }, { 2,6450 }, { 3,6450 }, - { 4,6450 }, { 5,6450 }, { 6,6450 }, { 7,6450 }, { 8,6450 }, - { 9,6452 }, { 10,6457 }, { 11,6450 }, { 12,6452 }, { 13,6452 }, - { 14,6450 }, { 15,6450 }, { 16,6450 }, { 17,6450 }, { 18,6450 }, - { 19,6450 }, { 20,6450 }, { 21,6450 }, { 22,6450 }, { 23,6450 }, - { 24,6450 }, { 25,6450 }, { 26,6450 }, { 27,6450 }, { 28,6450 }, - { 29,6450 }, { 30,6450 }, { 31,6450 }, { 32,6452 }, { 33,6459 }, - { 34,6454 }, { 35,6499 }, { 36,6565 }, { 37,6822 }, { 38,6499 }, - - { 39,6472 }, { 40,6474 }, { 41,6474 }, { 42,6822 }, { 43,6822 }, - { 44,6474 }, { 45,6833 }, { 46,6852 }, { 47,6923 }, { 48,6925 }, - { 49,6925 }, { 50,6925 }, { 51,6925 }, { 52,6925 }, { 53,6925 }, - { 54,6925 }, { 55,6925 }, { 56,6925 }, { 57,6925 }, { 58,6477 }, - { 59,6474 }, { 60,6990 }, { 61,7001 }, { 62,7068 }, { 63,6822 }, - { 64,6499 }, { 65,7100 }, { 66,7357 }, { 67,7100 }, { 68,7100 }, - { 69,7614 }, { 70,7100 }, { 71,7100 }, { 72,7100 }, { 73,7100 }, - { 74,7100 }, { 75,7100 }, { 76,7100 }, { 77,7100 }, { 78,7871 }, - { 79,7100 }, { 80,7100 }, { 81,7100 }, { 82,7100 }, { 83,7100 }, - { 84,7100 }, { 85,8128 }, { 86,7100 }, { 87,7100 }, { 88,8385 }, - - { 89,7100 }, { 90,7100 }, { 91,6474 }, { 92,6450 }, { 93,6474 }, - { 94,6822 }, { 95,7100 }, { 96,6499 }, { 97,7100 }, { 98,7357 }, - { 99,7100 }, { 100,7100 }, { 101,7614 }, { 102,7100 }, { 103,7100 }, - { 104,7100 }, { 105,7100 }, { 106,7100 }, { 107,7100 }, { 108,7100 }, - { 109,7100 }, { 110,7871 }, { 111,7100 }, { 112,7100 }, { 113,7100 }, - { 114,7100 }, { 115,7100 }, { 116,7100 }, { 117,8128 }, { 118,7100 }, - { 119,7100 }, { 120,8385 }, { 121,7100 }, { 122,7100 }, { 123,6450 }, - { 124,6499 }, { 125,6450 }, { 126,6499 }, { 127,6450 }, { 128,7100 }, - { 129,7100 }, { 130,7100 }, { 131,7100 }, { 132,7100 }, { 133,7100 }, - { 134,7100 }, { 135,7100 }, { 136,7100 }, { 137,7100 }, { 138,7100 }, - - { 139,7100 }, { 140,7100 }, { 141,7100 }, { 142,7100 }, { 143,7100 }, - { 144,7100 }, { 145,7100 }, { 146,7100 }, { 147,7100 }, { 148,7100 }, - { 149,7100 }, { 150,7100 }, { 151,7100 }, { 152,7100 }, { 153,7100 }, - { 154,7100 }, { 155,7100 }, { 156,7100 }, { 157,7100 }, { 158,7100 }, - { 159,7100 }, { 160,7100 }, { 161,7100 }, { 162,7100 }, { 163,7100 }, - { 164,7100 }, { 165,7100 }, { 166,7100 }, { 167,7100 }, { 168,7100 }, - { 169,7100 }, { 170,7100 }, { 171,7100 }, { 172,7100 }, { 173,7100 }, - { 174,7100 }, { 175,7100 }, { 176,7100 }, { 177,7100 }, { 178,7100 }, - { 179,7100 }, { 180,7100 }, { 181,7100 }, { 182,7100 }, { 183,7100 }, - { 184,7100 }, { 185,7100 }, { 186,7100 }, { 187,7100 }, { 188,7100 }, - - { 189,7100 }, { 190,7100 }, { 191,7100 }, { 192,7100 }, { 193,7100 }, - { 194,7100 }, { 195,7100 }, { 196,7100 }, { 197,7100 }, { 198,7100 }, - { 199,7100 }, { 200,7100 }, { 201,7100 }, { 202,7100 }, { 203,7100 }, - { 204,7100 }, { 205,7100 }, { 206,7100 }, { 207,7100 }, { 208,7100 }, - { 209,7100 }, { 210,7100 }, { 211,7100 }, { 212,7100 }, { 213,7100 }, - { 214,7100 }, { 215,7100 }, { 216,7100 }, { 217,7100 }, { 218,7100 }, - { 219,7100 }, { 220,7100 }, { 221,7100 }, { 222,7100 }, { 223,7100 }, - { 224,7100 }, { 225,7100 }, { 226,7100 }, { 227,7100 }, { 228,7100 }, - { 229,7100 }, { 230,7100 }, { 231,7100 }, { 232,7100 }, { 233,7100 }, - { 234,7100 }, { 235,7100 }, { 236,7100 }, { 237,7100 }, { 238,7100 }, - - { 239,7100 }, { 240,7100 }, { 241,7100 }, { 242,7100 }, { 243,7100 }, - { 244,7100 }, { 245,7100 }, { 246,7100 }, { 247,7100 }, { 248,7100 }, - { 249,7100 }, { 250,7100 }, { 251,7100 }, { 252,7100 }, { 253,7100 }, - { 254,7100 }, { 255,7100 }, { 256,6450 }, { 0, 12 }, { 0,36231 }, - { 1,8384 }, { 2,8384 }, { 3,8384 }, { 4,8384 }, { 5,8384 }, - { 6,8384 }, { 7,8384 }, { 8,8384 }, { 9,8384 }, { 10,8384 }, - { 11,8384 }, { 12,8384 }, { 13,8384 }, { 14,8384 }, { 15,8384 }, - { 16,8384 }, { 17,8384 }, { 18,8384 }, { 19,8384 }, { 20,8384 }, - { 21,8384 }, { 22,8384 }, { 23,8384 }, { 24,8384 }, { 25,8384 }, - { 26,8384 }, { 27,8384 }, { 28,8384 }, { 29,8384 }, { 30,8384 }, - - { 31,8384 }, { 32,8384 }, { 33,8384 }, { 34,8384 }, { 35,8384 }, - { 36,8384 }, { 37,8384 }, { 38,8384 }, { 39,8642 }, { 40,8384 }, - { 41,8384 }, { 42,8384 }, { 43,8384 }, { 44,8384 }, { 45,8384 }, - { 46,8384 }, { 47,8384 }, { 48,8384 }, { 49,8384 }, { 50,8384 }, - { 51,8384 }, { 52,8384 }, { 53,8384 }, { 54,8384 }, { 55,8384 }, - { 56,8384 }, { 57,8384 }, { 58,8384 }, { 59,8384 }, { 60,8384 }, - { 61,8384 }, { 62,8384 }, { 63,8384 }, { 64,8384 }, { 65,8384 }, - { 66,8384 }, { 67,8384 }, { 68,8384 }, { 69,8384 }, { 70,8384 }, - { 71,8384 }, { 72,8384 }, { 73,8384 }, { 74,8384 }, { 75,8384 }, - { 76,8384 }, { 77,8384 }, { 78,8384 }, { 79,8384 }, { 80,8384 }, - - { 81,8384 }, { 82,8384 }, { 83,8384 }, { 84,8384 }, { 85,8384 }, - { 86,8384 }, { 87,8384 }, { 88,8384 }, { 89,8384 }, { 90,8384 }, - { 91,8384 }, { 92,8384 }, { 93,8384 }, { 94,8384 }, { 95,8384 }, - { 96,8384 }, { 97,8384 }, { 98,8384 }, { 99,8384 }, { 100,8384 }, - { 101,8384 }, { 102,8384 }, { 103,8384 }, { 104,8384 }, { 105,8384 }, - { 106,8384 }, { 107,8384 }, { 108,8384 }, { 109,8384 }, { 110,8384 }, - { 111,8384 }, { 112,8384 }, { 113,8384 }, { 114,8384 }, { 115,8384 }, - { 116,8384 }, { 117,8384 }, { 118,8384 }, { 119,8384 }, { 120,8384 }, - { 121,8384 }, { 122,8384 }, { 123,8384 }, { 124,8384 }, { 125,8384 }, - { 126,8384 }, { 127,8384 }, { 128,8384 }, { 129,8384 }, { 130,8384 }, - - { 131,8384 }, { 132,8384 }, { 133,8384 }, { 134,8384 }, { 135,8384 }, - { 136,8384 }, { 137,8384 }, { 138,8384 }, { 139,8384 }, { 140,8384 }, - { 141,8384 }, { 142,8384 }, { 143,8384 }, { 144,8384 }, { 145,8384 }, - { 146,8384 }, { 147,8384 }, { 148,8384 }, { 149,8384 }, { 150,8384 }, - { 151,8384 }, { 152,8384 }, { 153,8384 }, { 154,8384 }, { 155,8384 }, - { 156,8384 }, { 157,8384 }, { 158,8384 }, { 159,8384 }, { 160,8384 }, - { 161,8384 }, { 162,8384 }, { 163,8384 }, { 164,8384 }, { 165,8384 }, - { 166,8384 }, { 167,8384 }, { 168,8384 }, { 169,8384 }, { 170,8384 }, - { 171,8384 }, { 172,8384 }, { 173,8384 }, { 174,8384 }, { 175,8384 }, - { 176,8384 }, { 177,8384 }, { 178,8384 }, { 179,8384 }, { 180,8384 }, - - { 181,8384 }, { 182,8384 }, { 183,8384 }, { 184,8384 }, { 185,8384 }, - { 186,8384 }, { 187,8384 }, { 188,8384 }, { 189,8384 }, { 190,8384 }, - { 191,8384 }, { 192,8384 }, { 193,8384 }, { 194,8384 }, { 195,8384 }, - { 196,8384 }, { 197,8384 }, { 198,8384 }, { 199,8384 }, { 200,8384 }, - { 201,8384 }, { 202,8384 }, { 203,8384 }, { 204,8384 }, { 205,8384 }, - { 206,8384 }, { 207,8384 }, { 208,8384 }, { 209,8384 }, { 210,8384 }, - { 211,8384 }, { 212,8384 }, { 213,8384 }, { 214,8384 }, { 215,8384 }, - { 216,8384 }, { 217,8384 }, { 218,8384 }, { 219,8384 }, { 220,8384 }, - { 221,8384 }, { 222,8384 }, { 223,8384 }, { 224,8384 }, { 225,8384 }, - { 226,8384 }, { 227,8384 }, { 228,8384 }, { 229,8384 }, { 230,8384 }, - - { 231,8384 }, { 232,8384 }, { 233,8384 }, { 234,8384 }, { 235,8384 }, - { 236,8384 }, { 237,8384 }, { 238,8384 }, { 239,8384 }, { 240,8384 }, - { 241,8384 }, { 242,8384 }, { 243,8384 }, { 244,8384 }, { 245,8384 }, - { 246,8384 }, { 247,8384 }, { 248,8384 }, { 249,8384 }, { 250,8384 }, - { 251,8384 }, { 252,8384 }, { 253,8384 }, { 254,8384 }, { 255,8384 }, - { 256,8384 }, { 0, 12 }, { 0,35973 }, { 1,8126 }, { 2,8126 }, - { 3,8126 }, { 4,8126 }, { 5,8126 }, { 6,8126 }, { 7,8126 }, - { 8,8126 }, { 9,8126 }, { 10,8126 }, { 11,8126 }, { 12,8126 }, - { 13,8126 }, { 14,8126 }, { 15,8126 }, { 16,8126 }, { 17,8126 }, - { 18,8126 }, { 19,8126 }, { 20,8126 }, { 21,8126 }, { 22,8126 }, - - { 23,8126 }, { 24,8126 }, { 25,8126 }, { 26,8126 }, { 27,8126 }, - { 28,8126 }, { 29,8126 }, { 30,8126 }, { 31,8126 }, { 32,8126 }, - { 33,8126 }, { 34,8126 }, { 35,8126 }, { 36,8126 }, { 37,8126 }, - { 38,8126 }, { 39,8384 }, { 40,8126 }, { 41,8126 }, { 42,8126 }, - { 43,8126 }, { 44,8126 }, { 45,8126 }, { 46,8126 }, { 47,8126 }, - { 48,8126 }, { 49,8126 }, { 50,8126 }, { 51,8126 }, { 52,8126 }, - { 53,8126 }, { 54,8126 }, { 55,8126 }, { 56,8126 }, { 57,8126 }, - { 58,8126 }, { 59,8126 }, { 60,8126 }, { 61,8126 }, { 62,8126 }, - { 63,8126 }, { 64,8126 }, { 65,8126 }, { 66,8126 }, { 67,8126 }, - { 68,8126 }, { 69,8126 }, { 70,8126 }, { 71,8126 }, { 72,8126 }, - - { 73,8126 }, { 74,8126 }, { 75,8126 }, { 76,8126 }, { 77,8126 }, - { 78,8126 }, { 79,8126 }, { 80,8126 }, { 81,8126 }, { 82,8126 }, - { 83,8126 }, { 84,8126 }, { 85,8126 }, { 86,8126 }, { 87,8126 }, - { 88,8126 }, { 89,8126 }, { 90,8126 }, { 91,8126 }, { 92,8126 }, - { 93,8126 }, { 94,8126 }, { 95,8126 }, { 96,8126 }, { 97,8126 }, - { 98,8126 }, { 99,8126 }, { 100,8126 }, { 101,8126 }, { 102,8126 }, - { 103,8126 }, { 104,8126 }, { 105,8126 }, { 106,8126 }, { 107,8126 }, - { 108,8126 }, { 109,8126 }, { 110,8126 }, { 111,8126 }, { 112,8126 }, - { 113,8126 }, { 114,8126 }, { 115,8126 }, { 116,8126 }, { 117,8126 }, - { 118,8126 }, { 119,8126 }, { 120,8126 }, { 121,8126 }, { 122,8126 }, - - { 123,8126 }, { 124,8126 }, { 125,8126 }, { 126,8126 }, { 127,8126 }, - { 128,8126 }, { 129,8126 }, { 130,8126 }, { 131,8126 }, { 132,8126 }, - { 133,8126 }, { 134,8126 }, { 135,8126 }, { 136,8126 }, { 137,8126 }, - { 138,8126 }, { 139,8126 }, { 140,8126 }, { 141,8126 }, { 142,8126 }, - { 143,8126 }, { 144,8126 }, { 145,8126 }, { 146,8126 }, { 147,8126 }, - { 148,8126 }, { 149,8126 }, { 150,8126 }, { 151,8126 }, { 152,8126 }, - { 153,8126 }, { 154,8126 }, { 155,8126 }, { 156,8126 }, { 157,8126 }, - { 158,8126 }, { 159,8126 }, { 160,8126 }, { 161,8126 }, { 162,8126 }, - { 163,8126 }, { 164,8126 }, { 165,8126 }, { 166,8126 }, { 167,8126 }, - { 168,8126 }, { 169,8126 }, { 170,8126 }, { 171,8126 }, { 172,8126 }, - - { 173,8126 }, { 174,8126 }, { 175,8126 }, { 176,8126 }, { 177,8126 }, - { 178,8126 }, { 179,8126 }, { 180,8126 }, { 181,8126 }, { 182,8126 }, - { 183,8126 }, { 184,8126 }, { 185,8126 }, { 186,8126 }, { 187,8126 }, - { 188,8126 }, { 189,8126 }, { 190,8126 }, { 191,8126 }, { 192,8126 }, - { 193,8126 }, { 194,8126 }, { 195,8126 }, { 196,8126 }, { 197,8126 }, - { 198,8126 }, { 199,8126 }, { 200,8126 }, { 201,8126 }, { 202,8126 }, - { 203,8126 }, { 204,8126 }, { 205,8126 }, { 206,8126 }, { 207,8126 }, - { 208,8126 }, { 209,8126 }, { 210,8126 }, { 211,8126 }, { 212,8126 }, - { 213,8126 }, { 214,8126 }, { 215,8126 }, { 216,8126 }, { 217,8126 }, - { 218,8126 }, { 219,8126 }, { 220,8126 }, { 221,8126 }, { 222,8126 }, - - { 223,8126 }, { 224,8126 }, { 225,8126 }, { 226,8126 }, { 227,8126 }, - { 228,8126 }, { 229,8126 }, { 230,8126 }, { 231,8126 }, { 232,8126 }, - { 233,8126 }, { 234,8126 }, { 235,8126 }, { 236,8126 }, { 237,8126 }, - { 238,8126 }, { 239,8126 }, { 240,8126 }, { 241,8126 }, { 242,8126 }, - { 243,8126 }, { 244,8126 }, { 245,8126 }, { 246,8126 }, { 247,8126 }, - { 248,8126 }, { 249,8126 }, { 250,8126 }, { 251,8126 }, { 252,8126 }, - { 253,8126 }, { 254,8126 }, { 255,8126 }, { 256,8126 }, { 0, 0 }, - { 0,35715 }, { 1,8173 }, { 2,8173 }, { 3,8173 }, { 4,8173 }, - { 5,8173 }, { 6,8173 }, { 7,8173 }, { 8,8173 }, { 9,8173 }, - { 10,8173 }, { 11,8173 }, { 12,8173 }, { 13,8173 }, { 14,8173 }, - - { 15,8173 }, { 16,8173 }, { 17,8173 }, { 18,8173 }, { 19,8173 }, - { 20,8173 }, { 21,8173 }, { 22,8173 }, { 23,8173 }, { 24,8173 }, - { 25,8173 }, { 26,8173 }, { 27,8173 }, { 28,8173 }, { 29,8173 }, - { 30,8173 }, { 31,8173 }, { 32,8173 }, { 33,8431 }, { 34,8173 }, - { 35,8431 }, { 36,8173 }, { 37,8431 }, { 38,8431 }, { 39,8173 }, - { 40,8173 }, { 41,8173 }, { 42,5708 }, { 43,8431 }, { 44,8173 }, - { 45,8431 }, { 46,8173 }, { 47,5712 }, { 48,8173 }, { 49,8173 }, - { 50,8173 }, { 51,8173 }, { 52,8173 }, { 53,8173 }, { 54,8173 }, - { 55,8173 }, { 56,8173 }, { 57,8173 }, { 58,8173 }, { 59,8173 }, - { 60,8431 }, { 61,8431 }, { 62,8431 }, { 63,8431 }, { 64,8431 }, - - { 65,8173 }, { 66,8173 }, { 67,8173 }, { 68,8173 }, { 69,8173 }, - { 70,8173 }, { 71,8173 }, { 72,8173 }, { 73,8173 }, { 74,8173 }, - { 75,8173 }, { 76,8173 }, { 77,8173 }, { 78,8173 }, { 79,8173 }, - { 80,8173 }, { 81,8173 }, { 82,8173 }, { 83,8173 }, { 84,8173 }, - { 85,8173 }, { 86,8173 }, { 87,8173 }, { 88,8173 }, { 89,8173 }, - { 90,8173 }, { 91,8173 }, { 92,8173 }, { 93,8173 }, { 94,8431 }, - { 95,8173 }, { 96,8431 }, { 97,8173 }, { 98,8173 }, { 99,8173 }, - { 100,8173 }, { 101,8173 }, { 102,8173 }, { 103,8173 }, { 104,8173 }, - { 105,8173 }, { 106,8173 }, { 107,8173 }, { 108,8173 }, { 109,8173 }, - { 110,8173 }, { 111,8173 }, { 112,8173 }, { 113,8173 }, { 114,8173 }, - - { 115,8173 }, { 116,8173 }, { 117,8173 }, { 118,8173 }, { 119,8173 }, - { 120,8173 }, { 121,8173 }, { 122,8173 }, { 123,8173 }, { 124,8431 }, - { 125,8173 }, { 126,8431 }, { 127,8173 }, { 128,8173 }, { 129,8173 }, - { 130,8173 }, { 131,8173 }, { 132,8173 }, { 133,8173 }, { 134,8173 }, - { 135,8173 }, { 136,8173 }, { 137,8173 }, { 138,8173 }, { 139,8173 }, - { 140,8173 }, { 141,8173 }, { 142,8173 }, { 143,8173 }, { 144,8173 }, - { 145,8173 }, { 146,8173 }, { 147,8173 }, { 148,8173 }, { 149,8173 }, - { 150,8173 }, { 151,8173 }, { 152,8173 }, { 153,8173 }, { 154,8173 }, - { 155,8173 }, { 156,8173 }, { 157,8173 }, { 158,8173 }, { 159,8173 }, - { 160,8173 }, { 161,8173 }, { 162,8173 }, { 163,8173 }, { 164,8173 }, - - { 165,8173 }, { 166,8173 }, { 167,8173 }, { 168,8173 }, { 169,8173 }, - { 170,8173 }, { 171,8173 }, { 172,8173 }, { 173,8173 }, { 174,8173 }, - { 175,8173 }, { 176,8173 }, { 177,8173 }, { 178,8173 }, { 179,8173 }, - { 180,8173 }, { 181,8173 }, { 182,8173 }, { 183,8173 }, { 184,8173 }, - { 185,8173 }, { 186,8173 }, { 187,8173 }, { 188,8173 }, { 189,8173 }, - { 190,8173 }, { 191,8173 }, { 192,8173 }, { 193,8173 }, { 194,8173 }, - { 195,8173 }, { 196,8173 }, { 197,8173 }, { 198,8173 }, { 199,8173 }, - { 200,8173 }, { 201,8173 }, { 202,8173 }, { 203,8173 }, { 204,8173 }, - { 205,8173 }, { 206,8173 }, { 207,8173 }, { 208,8173 }, { 209,8173 }, - { 210,8173 }, { 211,8173 }, { 212,8173 }, { 213,8173 }, { 214,8173 }, - - { 215,8173 }, { 216,8173 }, { 217,8173 }, { 218,8173 }, { 219,8173 }, - { 220,8173 }, { 221,8173 }, { 222,8173 }, { 223,8173 }, { 224,8173 }, - { 225,8173 }, { 226,8173 }, { 227,8173 }, { 228,8173 }, { 229,8173 }, - { 230,8173 }, { 231,8173 }, { 232,8173 }, { 233,8173 }, { 234,8173 }, - { 235,8173 }, { 236,8173 }, { 237,8173 }, { 238,8173 }, { 239,8173 }, - { 240,8173 }, { 241,8173 }, { 242,8173 }, { 243,8173 }, { 244,8173 }, - { 245,8173 }, { 246,8173 }, { 247,8173 }, { 248,8173 }, { 249,8173 }, - { 250,8173 }, { 251,8173 }, { 252,8173 }, { 253,8173 }, { 254,8173 }, - { 255,8173 }, { 256,8173 }, { 0, 0 }, { 0,35457 }, { 1,7915 }, - { 2,7915 }, { 3,7915 }, { 4,7915 }, { 5,7915 }, { 6,7915 }, - - { 7,7915 }, { 8,7915 }, { 9,7915 }, { 10,7915 }, { 11,7915 }, - { 12,7915 }, { 13,7915 }, { 14,7915 }, { 15,7915 }, { 16,7915 }, - { 17,7915 }, { 18,7915 }, { 19,7915 }, { 20,7915 }, { 21,7915 }, - { 22,7915 }, { 23,7915 }, { 24,7915 }, { 25,7915 }, { 26,7915 }, - { 27,7915 }, { 28,7915 }, { 29,7915 }, { 30,7915 }, { 31,7915 }, - { 32,7915 }, { 33,8173 }, { 34,7915 }, { 35,8173 }, { 36,7915 }, - { 37,8173 }, { 38,8173 }, { 39,7915 }, { 40,7915 }, { 41,7915 }, - { 42,5450 }, { 43,8173 }, { 44,7915 }, { 45,8173 }, { 46,7915 }, - { 47,5454 }, { 48,7915 }, { 49,7915 }, { 50,7915 }, { 51,7915 }, - { 52,7915 }, { 53,7915 }, { 54,7915 }, { 55,7915 }, { 56,7915 }, - - { 57,7915 }, { 58,7915 }, { 59,7915 }, { 60,8173 }, { 61,8173 }, - { 62,8173 }, { 63,8173 }, { 64,8173 }, { 65,7915 }, { 66,7915 }, - { 67,7915 }, { 68,7915 }, { 69,7915 }, { 70,7915 }, { 71,7915 }, - { 72,7915 }, { 73,7915 }, { 74,7915 }, { 75,7915 }, { 76,7915 }, - { 77,7915 }, { 78,7915 }, { 79,7915 }, { 80,7915 }, { 81,7915 }, - { 82,7915 }, { 83,7915 }, { 84,7915 }, { 85,7915 }, { 86,7915 }, - { 87,7915 }, { 88,7915 }, { 89,7915 }, { 90,7915 }, { 91,7915 }, - { 92,7915 }, { 93,7915 }, { 94,8173 }, { 95,7915 }, { 96,8173 }, - { 97,7915 }, { 98,7915 }, { 99,7915 }, { 100,7915 }, { 101,7915 }, - { 102,7915 }, { 103,7915 }, { 104,7915 }, { 105,7915 }, { 106,7915 }, - - { 107,7915 }, { 108,7915 }, { 109,7915 }, { 110,7915 }, { 111,7915 }, - { 112,7915 }, { 113,7915 }, { 114,7915 }, { 115,7915 }, { 116,7915 }, - { 117,7915 }, { 118,7915 }, { 119,7915 }, { 120,7915 }, { 121,7915 }, - { 122,7915 }, { 123,7915 }, { 124,8173 }, { 125,7915 }, { 126,8173 }, - { 127,7915 }, { 128,7915 }, { 129,7915 }, { 130,7915 }, { 131,7915 }, - { 132,7915 }, { 133,7915 }, { 134,7915 }, { 135,7915 }, { 136,7915 }, - { 137,7915 }, { 138,7915 }, { 139,7915 }, { 140,7915 }, { 141,7915 }, - { 142,7915 }, { 143,7915 }, { 144,7915 }, { 145,7915 }, { 146,7915 }, - { 147,7915 }, { 148,7915 }, { 149,7915 }, { 150,7915 }, { 151,7915 }, - { 152,7915 }, { 153,7915 }, { 154,7915 }, { 155,7915 }, { 156,7915 }, - - { 157,7915 }, { 158,7915 }, { 159,7915 }, { 160,7915 }, { 161,7915 }, - { 162,7915 }, { 163,7915 }, { 164,7915 }, { 165,7915 }, { 166,7915 }, - { 167,7915 }, { 168,7915 }, { 169,7915 }, { 170,7915 }, { 171,7915 }, - { 172,7915 }, { 173,7915 }, { 174,7915 }, { 175,7915 }, { 176,7915 }, - { 177,7915 }, { 178,7915 }, { 179,7915 }, { 180,7915 }, { 181,7915 }, - { 182,7915 }, { 183,7915 }, { 184,7915 }, { 185,7915 }, { 186,7915 }, - { 187,7915 }, { 188,7915 }, { 189,7915 }, { 190,7915 }, { 191,7915 }, - { 192,7915 }, { 193,7915 }, { 194,7915 }, { 195,7915 }, { 196,7915 }, - { 197,7915 }, { 198,7915 }, { 199,7915 }, { 200,7915 }, { 201,7915 }, - { 202,7915 }, { 203,7915 }, { 204,7915 }, { 205,7915 }, { 206,7915 }, - - { 207,7915 }, { 208,7915 }, { 209,7915 }, { 210,7915 }, { 211,7915 }, - { 212,7915 }, { 213,7915 }, { 214,7915 }, { 215,7915 }, { 216,7915 }, - { 217,7915 }, { 218,7915 }, { 219,7915 }, { 220,7915 }, { 221,7915 }, - { 222,7915 }, { 223,7915 }, { 224,7915 }, { 225,7915 }, { 226,7915 }, - { 227,7915 }, { 228,7915 }, { 229,7915 }, { 230,7915 }, { 231,7915 }, - { 232,7915 }, { 233,7915 }, { 234,7915 }, { 235,7915 }, { 236,7915 }, - { 237,7915 }, { 238,7915 }, { 239,7915 }, { 240,7915 }, { 241,7915 }, - { 242,7915 }, { 243,7915 }, { 244,7915 }, { 245,7915 }, { 246,7915 }, - { 247,7915 }, { 248,7915 }, { 249,7915 }, { 250,7915 }, { 251,7915 }, - { 252,7915 }, { 253,7915 }, { 254,7915 }, { 255,7915 }, { 256,7915 }, - - { 0, 0 }, { 0,35199 }, { 1,8173 }, { 2,8173 }, { 3,8173 }, - { 4,8173 }, { 5,8173 }, { 6,8173 }, { 7,8173 }, { 8,8173 }, - { 9,8173 }, { 10,8173 }, { 11,8173 }, { 12,8173 }, { 13,8173 }, - { 14,8173 }, { 15,8173 }, { 16,8173 }, { 17,8173 }, { 18,8173 }, - { 19,8173 }, { 20,8173 }, { 21,8173 }, { 22,8173 }, { 23,8173 }, - { 24,8173 }, { 25,8173 }, { 26,8173 }, { 27,8173 }, { 28,8173 }, - { 29,8173 }, { 30,8173 }, { 31,8173 }, { 32,8173 }, { 33,8173 }, - { 34,5201 }, { 35,8173 }, { 36,8173 }, { 37,8173 }, { 38,8173 }, - { 39,8173 }, { 40,8173 }, { 41,8173 }, { 42,8173 }, { 43,8173 }, - { 44,8173 }, { 45,8173 }, { 46,8173 }, { 47,8173 }, { 48,8173 }, - - { 49,8173 }, { 50,8173 }, { 51,8173 }, { 52,8173 }, { 53,8173 }, - { 54,8173 }, { 55,8173 }, { 56,8173 }, { 57,8173 }, { 58,8173 }, - { 59,8173 }, { 60,8173 }, { 61,8173 }, { 62,8173 }, { 63,8173 }, - { 64,8173 }, { 65,8173 }, { 66,8173 }, { 67,8173 }, { 68,8173 }, - { 69,8173 }, { 70,8173 }, { 71,8173 }, { 72,8173 }, { 73,8173 }, - { 74,8173 }, { 75,8173 }, { 76,8173 }, { 77,8173 }, { 78,8173 }, - { 79,8173 }, { 80,8173 }, { 81,8173 }, { 82,8173 }, { 83,8173 }, - { 84,8173 }, { 85,8173 }, { 86,8173 }, { 87,8173 }, { 88,8173 }, - { 89,8173 }, { 90,8173 }, { 91,8173 }, { 92,8173 }, { 93,8173 }, - { 94,8173 }, { 95,8173 }, { 96,8173 }, { 97,8173 }, { 98,8173 }, - - { 99,8173 }, { 100,8173 }, { 101,8173 }, { 102,8173 }, { 103,8173 }, - { 104,8173 }, { 105,8173 }, { 106,8173 }, { 107,8173 }, { 108,8173 }, - { 109,8173 }, { 110,8173 }, { 111,8173 }, { 112,8173 }, { 113,8173 }, - { 114,8173 }, { 115,8173 }, { 116,8173 }, { 117,8173 }, { 118,8173 }, - { 119,8173 }, { 120,8173 }, { 121,8173 }, { 122,8173 }, { 123,8173 }, - { 124,8173 }, { 125,8173 }, { 126,8173 }, { 127,8173 }, { 128,8173 }, - { 129,8173 }, { 130,8173 }, { 131,8173 }, { 132,8173 }, { 133,8173 }, - { 134,8173 }, { 135,8173 }, { 136,8173 }, { 137,8173 }, { 138,8173 }, - { 139,8173 }, { 140,8173 }, { 141,8173 }, { 142,8173 }, { 143,8173 }, - { 144,8173 }, { 145,8173 }, { 146,8173 }, { 147,8173 }, { 148,8173 }, - - { 149,8173 }, { 150,8173 }, { 151,8173 }, { 152,8173 }, { 153,8173 }, - { 154,8173 }, { 155,8173 }, { 156,8173 }, { 157,8173 }, { 158,8173 }, - { 159,8173 }, { 160,8173 }, { 161,8173 }, { 162,8173 }, { 163,8173 }, - { 164,8173 }, { 165,8173 }, { 166,8173 }, { 167,8173 }, { 168,8173 }, - { 169,8173 }, { 170,8173 }, { 171,8173 }, { 172,8173 }, { 173,8173 }, - { 174,8173 }, { 175,8173 }, { 176,8173 }, { 177,8173 }, { 178,8173 }, - { 179,8173 }, { 180,8173 }, { 181,8173 }, { 182,8173 }, { 183,8173 }, - { 184,8173 }, { 185,8173 }, { 186,8173 }, { 187,8173 }, { 188,8173 }, - { 189,8173 }, { 190,8173 }, { 191,8173 }, { 192,8173 }, { 193,8173 }, - { 194,8173 }, { 195,8173 }, { 196,8173 }, { 197,8173 }, { 198,8173 }, - - { 199,8173 }, { 200,8173 }, { 201,8173 }, { 202,8173 }, { 203,8173 }, - { 204,8173 }, { 205,8173 }, { 206,8173 }, { 207,8173 }, { 208,8173 }, - { 209,8173 }, { 210,8173 }, { 211,8173 }, { 212,8173 }, { 213,8173 }, - { 214,8173 }, { 215,8173 }, { 216,8173 }, { 217,8173 }, { 218,8173 }, - { 219,8173 }, { 220,8173 }, { 221,8173 }, { 222,8173 }, { 223,8173 }, - { 224,8173 }, { 225,8173 }, { 226,8173 }, { 227,8173 }, { 228,8173 }, - { 229,8173 }, { 230,8173 }, { 231,8173 }, { 232,8173 }, { 233,8173 }, - { 234,8173 }, { 235,8173 }, { 236,8173 }, { 237,8173 }, { 238,8173 }, - { 239,8173 }, { 240,8173 }, { 241,8173 }, { 242,8173 }, { 243,8173 }, - { 244,8173 }, { 245,8173 }, { 246,8173 }, { 247,8173 }, { 248,8173 }, - - { 249,8173 }, { 250,8173 }, { 251,8173 }, { 252,8173 }, { 253,8173 }, - { 254,8173 }, { 255,8173 }, { 256,8173 }, { 0, 0 }, { 0,34941 }, - { 1,7915 }, { 2,7915 }, { 3,7915 }, { 4,7915 }, { 5,7915 }, - { 6,7915 }, { 7,7915 }, { 8,7915 }, { 9,7915 }, { 10,7915 }, - { 11,7915 }, { 12,7915 }, { 13,7915 }, { 14,7915 }, { 15,7915 }, - { 16,7915 }, { 17,7915 }, { 18,7915 }, { 19,7915 }, { 20,7915 }, - { 21,7915 }, { 22,7915 }, { 23,7915 }, { 24,7915 }, { 25,7915 }, - { 26,7915 }, { 27,7915 }, { 28,7915 }, { 29,7915 }, { 30,7915 }, - { 31,7915 }, { 32,7915 }, { 33,7915 }, { 34,4943 }, { 35,7915 }, - { 36,7915 }, { 37,7915 }, { 38,7915 }, { 39,7915 }, { 40,7915 }, - - { 41,7915 }, { 42,7915 }, { 43,7915 }, { 44,7915 }, { 45,7915 }, - { 46,7915 }, { 47,7915 }, { 48,7915 }, { 49,7915 }, { 50,7915 }, - { 51,7915 }, { 52,7915 }, { 53,7915 }, { 54,7915 }, { 55,7915 }, - { 56,7915 }, { 57,7915 }, { 58,7915 }, { 59,7915 }, { 60,7915 }, - { 61,7915 }, { 62,7915 }, { 63,7915 }, { 64,7915 }, { 65,7915 }, - { 66,7915 }, { 67,7915 }, { 68,7915 }, { 69,7915 }, { 70,7915 }, - { 71,7915 }, { 72,7915 }, { 73,7915 }, { 74,7915 }, { 75,7915 }, - { 76,7915 }, { 77,7915 }, { 78,7915 }, { 79,7915 }, { 80,7915 }, - { 81,7915 }, { 82,7915 }, { 83,7915 }, { 84,7915 }, { 85,7915 }, - { 86,7915 }, { 87,7915 }, { 88,7915 }, { 89,7915 }, { 90,7915 }, - - { 91,7915 }, { 92,7915 }, { 93,7915 }, { 94,7915 }, { 95,7915 }, - { 96,7915 }, { 97,7915 }, { 98,7915 }, { 99,7915 }, { 100,7915 }, - { 101,7915 }, { 102,7915 }, { 103,7915 }, { 104,7915 }, { 105,7915 }, - { 106,7915 }, { 107,7915 }, { 108,7915 }, { 109,7915 }, { 110,7915 }, - { 111,7915 }, { 112,7915 }, { 113,7915 }, { 114,7915 }, { 115,7915 }, - { 116,7915 }, { 117,7915 }, { 118,7915 }, { 119,7915 }, { 120,7915 }, - { 121,7915 }, { 122,7915 }, { 123,7915 }, { 124,7915 }, { 125,7915 }, - { 126,7915 }, { 127,7915 }, { 128,7915 }, { 129,7915 }, { 130,7915 }, - { 131,7915 }, { 132,7915 }, { 133,7915 }, { 134,7915 }, { 135,7915 }, - { 136,7915 }, { 137,7915 }, { 138,7915 }, { 139,7915 }, { 140,7915 }, - - { 141,7915 }, { 142,7915 }, { 143,7915 }, { 144,7915 }, { 145,7915 }, - { 146,7915 }, { 147,7915 }, { 148,7915 }, { 149,7915 }, { 150,7915 }, - { 151,7915 }, { 152,7915 }, { 153,7915 }, { 154,7915 }, { 155,7915 }, - { 156,7915 }, { 157,7915 }, { 158,7915 }, { 159,7915 }, { 160,7915 }, - { 161,7915 }, { 162,7915 }, { 163,7915 }, { 164,7915 }, { 165,7915 }, - { 166,7915 }, { 167,7915 }, { 168,7915 }, { 169,7915 }, { 170,7915 }, - { 171,7915 }, { 172,7915 }, { 173,7915 }, { 174,7915 }, { 175,7915 }, - { 176,7915 }, { 177,7915 }, { 178,7915 }, { 179,7915 }, { 180,7915 }, - { 181,7915 }, { 182,7915 }, { 183,7915 }, { 184,7915 }, { 185,7915 }, - { 186,7915 }, { 187,7915 }, { 188,7915 }, { 189,7915 }, { 190,7915 }, - - { 191,7915 }, { 192,7915 }, { 193,7915 }, { 194,7915 }, { 195,7915 }, - { 196,7915 }, { 197,7915 }, { 198,7915 }, { 199,7915 }, { 200,7915 }, - { 201,7915 }, { 202,7915 }, { 203,7915 }, { 204,7915 }, { 205,7915 }, - { 206,7915 }, { 207,7915 }, { 208,7915 }, { 209,7915 }, { 210,7915 }, - { 211,7915 }, { 212,7915 }, { 213,7915 }, { 214,7915 }, { 215,7915 }, - { 216,7915 }, { 217,7915 }, { 218,7915 }, { 219,7915 }, { 220,7915 }, - { 221,7915 }, { 222,7915 }, { 223,7915 }, { 224,7915 }, { 225,7915 }, - { 226,7915 }, { 227,7915 }, { 228,7915 }, { 229,7915 }, { 230,7915 }, - { 231,7915 }, { 232,7915 }, { 233,7915 }, { 234,7915 }, { 235,7915 }, - { 236,7915 }, { 237,7915 }, { 238,7915 }, { 239,7915 }, { 240,7915 }, - - { 241,7915 }, { 242,7915 }, { 243,7915 }, { 244,7915 }, { 245,7915 }, - { 246,7915 }, { 247,7915 }, { 248,7915 }, { 249,7915 }, { 250,7915 }, - { 251,7915 }, { 252,7915 }, { 253,7915 }, { 254,7915 }, { 255,7915 }, - { 256,7915 }, { 0, 11 }, { 0,34683 }, { 1,7915 }, { 2,7915 }, - { 3,7915 }, { 4,7915 }, { 5,7915 }, { 6,7915 }, { 7,7915 }, - { 8,7915 }, { 9,7915 }, { 10,7915 }, { 11,7915 }, { 12,7915 }, - { 13,7915 }, { 14,7915 }, { 15,7915 }, { 16,7915 }, { 17,7915 }, - { 18,7915 }, { 19,7915 }, { 20,7915 }, { 21,7915 }, { 22,7915 }, - { 23,7915 }, { 24,7915 }, { 25,7915 }, { 26,7915 }, { 27,7915 }, - { 28,7915 }, { 29,7915 }, { 30,7915 }, { 31,7915 }, { 32,7915 }, - - { 33,7915 }, { 34,7915 }, { 35,7915 }, { 36,7915 }, { 37,7915 }, - { 38,7915 }, { 39,8173 }, { 40,7915 }, { 41,7915 }, { 42,7915 }, - { 43,7915 }, { 44,7915 }, { 45,7915 }, { 46,7915 }, { 47,7915 }, - { 48,7915 }, { 49,7915 }, { 50,7915 }, { 51,7915 }, { 52,7915 }, - { 53,7915 }, { 54,7915 }, { 55,7915 }, { 56,7915 }, { 57,7915 }, - { 58,7915 }, { 59,7915 }, { 60,7915 }, { 61,7915 }, { 62,7915 }, - { 63,7915 }, { 64,7915 }, { 65,7915 }, { 66,7915 }, { 67,7915 }, - { 68,7915 }, { 69,7915 }, { 70,7915 }, { 71,7915 }, { 72,7915 }, - { 73,7915 }, { 74,7915 }, { 75,7915 }, { 76,7915 }, { 77,7915 }, - { 78,7915 }, { 79,7915 }, { 80,7915 }, { 81,7915 }, { 82,7915 }, - - { 83,7915 }, { 84,7915 }, { 85,7915 }, { 86,7915 }, { 87,7915 }, - { 88,7915 }, { 89,7915 }, { 90,7915 }, { 91,7915 }, { 92,7915 }, - { 93,7915 }, { 94,7915 }, { 95,7915 }, { 96,7915 }, { 97,7915 }, - { 98,7915 }, { 99,7915 }, { 100,7915 }, { 101,7915 }, { 102,7915 }, - { 103,7915 }, { 104,7915 }, { 105,7915 }, { 106,7915 }, { 107,7915 }, - { 108,7915 }, { 109,7915 }, { 110,7915 }, { 111,7915 }, { 112,7915 }, - { 113,7915 }, { 114,7915 }, { 115,7915 }, { 116,7915 }, { 117,7915 }, - { 118,7915 }, { 119,7915 }, { 120,7915 }, { 121,7915 }, { 122,7915 }, - { 123,7915 }, { 124,7915 }, { 125,7915 }, { 126,7915 }, { 127,7915 }, - { 128,7915 }, { 129,7915 }, { 130,7915 }, { 131,7915 }, { 132,7915 }, - - { 133,7915 }, { 134,7915 }, { 135,7915 }, { 136,7915 }, { 137,7915 }, - { 138,7915 }, { 139,7915 }, { 140,7915 }, { 141,7915 }, { 142,7915 }, - { 143,7915 }, { 144,7915 }, { 145,7915 }, { 146,7915 }, { 147,7915 }, - { 148,7915 }, { 149,7915 }, { 150,7915 }, { 151,7915 }, { 152,7915 }, - { 153,7915 }, { 154,7915 }, { 155,7915 }, { 156,7915 }, { 157,7915 }, - { 158,7915 }, { 159,7915 }, { 160,7915 }, { 161,7915 }, { 162,7915 }, - { 163,7915 }, { 164,7915 }, { 165,7915 }, { 166,7915 }, { 167,7915 }, - { 168,7915 }, { 169,7915 }, { 170,7915 }, { 171,7915 }, { 172,7915 }, - { 173,7915 }, { 174,7915 }, { 175,7915 }, { 176,7915 }, { 177,7915 }, - { 178,7915 }, { 179,7915 }, { 180,7915 }, { 181,7915 }, { 182,7915 }, - - { 183,7915 }, { 184,7915 }, { 185,7915 }, { 186,7915 }, { 187,7915 }, - { 188,7915 }, { 189,7915 }, { 190,7915 }, { 191,7915 }, { 192,7915 }, - { 193,7915 }, { 194,7915 }, { 195,7915 }, { 196,7915 }, { 197,7915 }, - { 198,7915 }, { 199,7915 }, { 200,7915 }, { 201,7915 }, { 202,7915 }, - { 203,7915 }, { 204,7915 }, { 205,7915 }, { 206,7915 }, { 207,7915 }, - { 208,7915 }, { 209,7915 }, { 210,7915 }, { 211,7915 }, { 212,7915 }, - { 213,7915 }, { 214,7915 }, { 215,7915 }, { 216,7915 }, { 217,7915 }, - { 218,7915 }, { 219,7915 }, { 220,7915 }, { 221,7915 }, { 222,7915 }, - { 223,7915 }, { 224,7915 }, { 225,7915 }, { 226,7915 }, { 227,7915 }, - { 228,7915 }, { 229,7915 }, { 230,7915 }, { 231,7915 }, { 232,7915 }, - - { 233,7915 }, { 234,7915 }, { 235,7915 }, { 236,7915 }, { 237,7915 }, - { 238,7915 }, { 239,7915 }, { 240,7915 }, { 241,7915 }, { 242,7915 }, - { 243,7915 }, { 244,7915 }, { 245,7915 }, { 246,7915 }, { 247,7915 }, - { 248,7915 }, { 249,7915 }, { 250,7915 }, { 251,7915 }, { 252,7915 }, - { 253,7915 }, { 254,7915 }, { 255,7915 }, { 256,7915 }, { 0, 11 }, - { 0,34425 }, { 1,7657 }, { 2,7657 }, { 3,7657 }, { 4,7657 }, - { 5,7657 }, { 6,7657 }, { 7,7657 }, { 8,7657 }, { 9,7657 }, - { 10,7657 }, { 11,7657 }, { 12,7657 }, { 13,7657 }, { 14,7657 }, - { 15,7657 }, { 16,7657 }, { 17,7657 }, { 18,7657 }, { 19,7657 }, - { 20,7657 }, { 21,7657 }, { 22,7657 }, { 23,7657 }, { 24,7657 }, - - { 25,7657 }, { 26,7657 }, { 27,7657 }, { 28,7657 }, { 29,7657 }, - { 30,7657 }, { 31,7657 }, { 32,7657 }, { 33,7657 }, { 34,7657 }, - { 35,7657 }, { 36,7657 }, { 37,7657 }, { 38,7657 }, { 39,7915 }, - { 40,7657 }, { 41,7657 }, { 42,7657 }, { 43,7657 }, { 44,7657 }, - { 45,7657 }, { 46,7657 }, { 47,7657 }, { 48,7657 }, { 49,7657 }, - { 50,7657 }, { 51,7657 }, { 52,7657 }, { 53,7657 }, { 54,7657 }, - { 55,7657 }, { 56,7657 }, { 57,7657 }, { 58,7657 }, { 59,7657 }, - { 60,7657 }, { 61,7657 }, { 62,7657 }, { 63,7657 }, { 64,7657 }, - { 65,7657 }, { 66,7657 }, { 67,7657 }, { 68,7657 }, { 69,7657 }, - { 70,7657 }, { 71,7657 }, { 72,7657 }, { 73,7657 }, { 74,7657 }, - - { 75,7657 }, { 76,7657 }, { 77,7657 }, { 78,7657 }, { 79,7657 }, - { 80,7657 }, { 81,7657 }, { 82,7657 }, { 83,7657 }, { 84,7657 }, - { 85,7657 }, { 86,7657 }, { 87,7657 }, { 88,7657 }, { 89,7657 }, - { 90,7657 }, { 91,7657 }, { 92,7657 }, { 93,7657 }, { 94,7657 }, - { 95,7657 }, { 96,7657 }, { 97,7657 }, { 98,7657 }, { 99,7657 }, - { 100,7657 }, { 101,7657 }, { 102,7657 }, { 103,7657 }, { 104,7657 }, - { 105,7657 }, { 106,7657 }, { 107,7657 }, { 108,7657 }, { 109,7657 }, - { 110,7657 }, { 111,7657 }, { 112,7657 }, { 113,7657 }, { 114,7657 }, - { 115,7657 }, { 116,7657 }, { 117,7657 }, { 118,7657 }, { 119,7657 }, - { 120,7657 }, { 121,7657 }, { 122,7657 }, { 123,7657 }, { 124,7657 }, - - { 125,7657 }, { 126,7657 }, { 127,7657 }, { 128,7657 }, { 129,7657 }, - { 130,7657 }, { 131,7657 }, { 132,7657 }, { 133,7657 }, { 134,7657 }, - { 135,7657 }, { 136,7657 }, { 137,7657 }, { 138,7657 }, { 139,7657 }, - { 140,7657 }, { 141,7657 }, { 142,7657 }, { 143,7657 }, { 144,7657 }, - { 145,7657 }, { 146,7657 }, { 147,7657 }, { 148,7657 }, { 149,7657 }, - { 150,7657 }, { 151,7657 }, { 152,7657 }, { 153,7657 }, { 154,7657 }, - { 155,7657 }, { 156,7657 }, { 157,7657 }, { 158,7657 }, { 159,7657 }, - { 160,7657 }, { 161,7657 }, { 162,7657 }, { 163,7657 }, { 164,7657 }, - { 165,7657 }, { 166,7657 }, { 167,7657 }, { 168,7657 }, { 169,7657 }, - { 170,7657 }, { 171,7657 }, { 172,7657 }, { 173,7657 }, { 174,7657 }, - - { 175,7657 }, { 176,7657 }, { 177,7657 }, { 178,7657 }, { 179,7657 }, - { 180,7657 }, { 181,7657 }, { 182,7657 }, { 183,7657 }, { 184,7657 }, - { 185,7657 }, { 186,7657 }, { 187,7657 }, { 188,7657 }, { 189,7657 }, - { 190,7657 }, { 191,7657 }, { 192,7657 }, { 193,7657 }, { 194,7657 }, - { 195,7657 }, { 196,7657 }, { 197,7657 }, { 198,7657 }, { 199,7657 }, - { 200,7657 }, { 201,7657 }, { 202,7657 }, { 203,7657 }, { 204,7657 }, - { 205,7657 }, { 206,7657 }, { 207,7657 }, { 208,7657 }, { 209,7657 }, - { 210,7657 }, { 211,7657 }, { 212,7657 }, { 213,7657 }, { 214,7657 }, - { 215,7657 }, { 216,7657 }, { 217,7657 }, { 218,7657 }, { 219,7657 }, - { 220,7657 }, { 221,7657 }, { 222,7657 }, { 223,7657 }, { 224,7657 }, - - { 225,7657 }, { 226,7657 }, { 227,7657 }, { 228,7657 }, { 229,7657 }, - { 230,7657 }, { 231,7657 }, { 232,7657 }, { 233,7657 }, { 234,7657 }, - { 235,7657 }, { 236,7657 }, { 237,7657 }, { 238,7657 }, { 239,7657 }, - { 240,7657 }, { 241,7657 }, { 242,7657 }, { 243,7657 }, { 244,7657 }, - { 245,7657 }, { 246,7657 }, { 247,7657 }, { 248,7657 }, { 249,7657 }, - { 250,7657 }, { 251,7657 }, { 252,7657 }, { 253,7657 }, { 254,7657 }, - { 255,7657 }, { 256,7657 }, { 0, 0 }, { 0,34167 }, { 1,7704 }, - { 2,7704 }, { 3,7704 }, { 4,7704 }, { 5,7704 }, { 6,7704 }, - { 7,7704 }, { 8,7704 }, { 9,7704 }, { 10,7962 }, { 11,7704 }, - { 12,7704 }, { 13,7704 }, { 14,7704 }, { 15,7704 }, { 16,7704 }, - - { 17,7704 }, { 18,7704 }, { 19,7704 }, { 20,7704 }, { 21,7704 }, - { 22,7704 }, { 23,7704 }, { 24,7704 }, { 25,7704 }, { 26,7704 }, - { 27,7704 }, { 28,7704 }, { 29,7704 }, { 30,7704 }, { 31,7704 }, - { 32,7704 }, { 33,7704 }, { 34,7704 }, { 35,7704 }, { 36,7704 }, - { 37,7704 }, { 38,7704 }, { 39,8220 }, { 40,7704 }, { 41,7704 }, - { 42,7704 }, { 43,7704 }, { 44,7704 }, { 45,7704 }, { 46,7704 }, - { 47,7704 }, { 48,7704 }, { 49,7704 }, { 50,7704 }, { 51,7704 }, - { 52,7704 }, { 53,7704 }, { 54,7704 }, { 55,7704 }, { 56,7704 }, - { 57,7704 }, { 58,7704 }, { 59,7704 }, { 60,7704 }, { 61,7704 }, - { 62,7704 }, { 63,7704 }, { 64,7704 }, { 65,7704 }, { 66,7704 }, - - { 67,7704 }, { 68,7704 }, { 69,7704 }, { 70,7704 }, { 71,7704 }, - { 72,7704 }, { 73,7704 }, { 74,7704 }, { 75,7704 }, { 76,7704 }, - { 77,7704 }, { 78,7704 }, { 79,7704 }, { 80,7704 }, { 81,7704 }, - { 82,7704 }, { 83,7704 }, { 84,7704 }, { 85,7704 }, { 86,7704 }, - { 87,7704 }, { 88,7704 }, { 89,7704 }, { 90,7704 }, { 91,7704 }, - { 92,8267 }, { 93,7704 }, { 94,7704 }, { 95,7704 }, { 96,7704 }, - { 97,7704 }, { 98,7704 }, { 99,7704 }, { 100,7704 }, { 101,7704 }, - { 102,7704 }, { 103,7704 }, { 104,7704 }, { 105,7704 }, { 106,7704 }, - { 107,7704 }, { 108,7704 }, { 109,7704 }, { 110,7704 }, { 111,7704 }, - { 112,7704 }, { 113,7704 }, { 114,7704 }, { 115,7704 }, { 116,7704 }, - - { 117,7704 }, { 118,7704 }, { 119,7704 }, { 120,7704 }, { 121,7704 }, - { 122,7704 }, { 123,7704 }, { 124,7704 }, { 125,7704 }, { 126,7704 }, - { 127,7704 }, { 128,7704 }, { 129,7704 }, { 130,7704 }, { 131,7704 }, - { 132,7704 }, { 133,7704 }, { 134,7704 }, { 135,7704 }, { 136,7704 }, - { 137,7704 }, { 138,7704 }, { 139,7704 }, { 140,7704 }, { 141,7704 }, - { 142,7704 }, { 143,7704 }, { 144,7704 }, { 145,7704 }, { 146,7704 }, - { 147,7704 }, { 148,7704 }, { 149,7704 }, { 150,7704 }, { 151,7704 }, - { 152,7704 }, { 153,7704 }, { 154,7704 }, { 155,7704 }, { 156,7704 }, - { 157,7704 }, { 158,7704 }, { 159,7704 }, { 160,7704 }, { 161,7704 }, - { 162,7704 }, { 163,7704 }, { 164,7704 }, { 165,7704 }, { 166,7704 }, - - { 167,7704 }, { 168,7704 }, { 169,7704 }, { 170,7704 }, { 171,7704 }, - { 172,7704 }, { 173,7704 }, { 174,7704 }, { 175,7704 }, { 176,7704 }, - { 177,7704 }, { 178,7704 }, { 179,7704 }, { 180,7704 }, { 181,7704 }, - { 182,7704 }, { 183,7704 }, { 184,7704 }, { 185,7704 }, { 186,7704 }, - { 187,7704 }, { 188,7704 }, { 189,7704 }, { 190,7704 }, { 191,7704 }, - { 192,7704 }, { 193,7704 }, { 194,7704 }, { 195,7704 }, { 196,7704 }, - { 197,7704 }, { 198,7704 }, { 199,7704 }, { 200,7704 }, { 201,7704 }, - { 202,7704 }, { 203,7704 }, { 204,7704 }, { 205,7704 }, { 206,7704 }, - { 207,7704 }, { 208,7704 }, { 209,7704 }, { 210,7704 }, { 211,7704 }, - { 212,7704 }, { 213,7704 }, { 214,7704 }, { 215,7704 }, { 216,7704 }, - - { 217,7704 }, { 218,7704 }, { 219,7704 }, { 220,7704 }, { 221,7704 }, - { 222,7704 }, { 223,7704 }, { 224,7704 }, { 225,7704 }, { 226,7704 }, - { 227,7704 }, { 228,7704 }, { 229,7704 }, { 230,7704 }, { 231,7704 }, - { 232,7704 }, { 233,7704 }, { 234,7704 }, { 235,7704 }, { 236,7704 }, - { 237,7704 }, { 238,7704 }, { 239,7704 }, { 240,7704 }, { 241,7704 }, - { 242,7704 }, { 243,7704 }, { 244,7704 }, { 245,7704 }, { 246,7704 }, - { 247,7704 }, { 248,7704 }, { 249,7704 }, { 250,7704 }, { 251,7704 }, - { 252,7704 }, { 253,7704 }, { 254,7704 }, { 255,7704 }, { 256,7704 }, - { 0, 0 }, { 0,33909 }, { 1,7446 }, { 2,7446 }, { 3,7446 }, - { 4,7446 }, { 5,7446 }, { 6,7446 }, { 7,7446 }, { 8,7446 }, - - { 9,7446 }, { 10,7704 }, { 11,7446 }, { 12,7446 }, { 13,7446 }, - { 14,7446 }, { 15,7446 }, { 16,7446 }, { 17,7446 }, { 18,7446 }, - { 19,7446 }, { 20,7446 }, { 21,7446 }, { 22,7446 }, { 23,7446 }, - { 24,7446 }, { 25,7446 }, { 26,7446 }, { 27,7446 }, { 28,7446 }, - { 29,7446 }, { 30,7446 }, { 31,7446 }, { 32,7446 }, { 33,7446 }, - { 34,7446 }, { 35,7446 }, { 36,7446 }, { 37,7446 }, { 38,7446 }, - { 39,7962 }, { 40,7446 }, { 41,7446 }, { 42,7446 }, { 43,7446 }, - { 44,7446 }, { 45,7446 }, { 46,7446 }, { 47,7446 }, { 48,7446 }, - { 49,7446 }, { 50,7446 }, { 51,7446 }, { 52,7446 }, { 53,7446 }, - { 54,7446 }, { 55,7446 }, { 56,7446 }, { 57,7446 }, { 58,7446 }, - - { 59,7446 }, { 60,7446 }, { 61,7446 }, { 62,7446 }, { 63,7446 }, - { 64,7446 }, { 65,7446 }, { 66,7446 }, { 67,7446 }, { 68,7446 }, - { 69,7446 }, { 70,7446 }, { 71,7446 }, { 72,7446 }, { 73,7446 }, - { 74,7446 }, { 75,7446 }, { 76,7446 }, { 77,7446 }, { 78,7446 }, - { 79,7446 }, { 80,7446 }, { 81,7446 }, { 82,7446 }, { 83,7446 }, - { 84,7446 }, { 85,7446 }, { 86,7446 }, { 87,7446 }, { 88,7446 }, - { 89,7446 }, { 90,7446 }, { 91,7446 }, { 92,8009 }, { 93,7446 }, - { 94,7446 }, { 95,7446 }, { 96,7446 }, { 97,7446 }, { 98,7446 }, - { 99,7446 }, { 100,7446 }, { 101,7446 }, { 102,7446 }, { 103,7446 }, - { 104,7446 }, { 105,7446 }, { 106,7446 }, { 107,7446 }, { 108,7446 }, - - { 109,7446 }, { 110,7446 }, { 111,7446 }, { 112,7446 }, { 113,7446 }, - { 114,7446 }, { 115,7446 }, { 116,7446 }, { 117,7446 }, { 118,7446 }, - { 119,7446 }, { 120,7446 }, { 121,7446 }, { 122,7446 }, { 123,7446 }, - { 124,7446 }, { 125,7446 }, { 126,7446 }, { 127,7446 }, { 128,7446 }, - { 129,7446 }, { 130,7446 }, { 131,7446 }, { 132,7446 }, { 133,7446 }, - { 134,7446 }, { 135,7446 }, { 136,7446 }, { 137,7446 }, { 138,7446 }, - { 139,7446 }, { 140,7446 }, { 141,7446 }, { 142,7446 }, { 143,7446 }, - { 144,7446 }, { 145,7446 }, { 146,7446 }, { 147,7446 }, { 148,7446 }, - { 149,7446 }, { 150,7446 }, { 151,7446 }, { 152,7446 }, { 153,7446 }, - { 154,7446 }, { 155,7446 }, { 156,7446 }, { 157,7446 }, { 158,7446 }, - - { 159,7446 }, { 160,7446 }, { 161,7446 }, { 162,7446 }, { 163,7446 }, - { 164,7446 }, { 165,7446 }, { 166,7446 }, { 167,7446 }, { 168,7446 }, - { 169,7446 }, { 170,7446 }, { 171,7446 }, { 172,7446 }, { 173,7446 }, - { 174,7446 }, { 175,7446 }, { 176,7446 }, { 177,7446 }, { 178,7446 }, - { 179,7446 }, { 180,7446 }, { 181,7446 }, { 182,7446 }, { 183,7446 }, - { 184,7446 }, { 185,7446 }, { 186,7446 }, { 187,7446 }, { 188,7446 }, - { 189,7446 }, { 190,7446 }, { 191,7446 }, { 192,7446 }, { 193,7446 }, - { 194,7446 }, { 195,7446 }, { 196,7446 }, { 197,7446 }, { 198,7446 }, - { 199,7446 }, { 200,7446 }, { 201,7446 }, { 202,7446 }, { 203,7446 }, - { 204,7446 }, { 205,7446 }, { 206,7446 }, { 207,7446 }, { 208,7446 }, - - { 209,7446 }, { 210,7446 }, { 211,7446 }, { 212,7446 }, { 213,7446 }, - { 214,7446 }, { 215,7446 }, { 216,7446 }, { 217,7446 }, { 218,7446 }, - { 219,7446 }, { 220,7446 }, { 221,7446 }, { 222,7446 }, { 223,7446 }, - { 224,7446 }, { 225,7446 }, { 226,7446 }, { 227,7446 }, { 228,7446 }, - { 229,7446 }, { 230,7446 }, { 231,7446 }, { 232,7446 }, { 233,7446 }, - { 234,7446 }, { 235,7446 }, { 236,7446 }, { 237,7446 }, { 238,7446 }, - { 239,7446 }, { 240,7446 }, { 241,7446 }, { 242,7446 }, { 243,7446 }, - { 244,7446 }, { 245,7446 }, { 246,7446 }, { 247,7446 }, { 248,7446 }, - { 249,7446 }, { 250,7446 }, { 251,7446 }, { 252,7446 }, { 253,7446 }, - { 254,7446 }, { 255,7446 }, { 256,7446 }, { 0, 0 }, { 0,33651 }, - - { 1,8009 }, { 2,8009 }, { 3,8009 }, { 4,8009 }, { 5,8009 }, - { 6,8009 }, { 7,8009 }, { 8,8009 }, { 9,8009 }, { 10,8009 }, - { 11,8009 }, { 12,8009 }, { 13,8009 }, { 14,8009 }, { 15,8009 }, - { 16,8009 }, { 17,8009 }, { 18,8009 }, { 19,8009 }, { 20,8009 }, - { 21,8009 }, { 22,8009 }, { 23,8009 }, { 24,8009 }, { 25,8009 }, - { 26,8009 }, { 27,8009 }, { 28,8009 }, { 29,8009 }, { 30,8009 }, - { 31,8009 }, { 32,8009 }, { 33,8009 }, { 34,8009 }, { 35,8009 }, - { 36,8009 }, { 37,8009 }, { 38,8009 }, { 39,8267 }, { 40,8009 }, - { 41,8009 }, { 42,8009 }, { 43,8009 }, { 44,8009 }, { 45,8009 }, - { 46,8009 }, { 47,8009 }, { 48,8009 }, { 49,8009 }, { 50,8009 }, - - { 51,8009 }, { 52,8009 }, { 53,8009 }, { 54,8009 }, { 55,8009 }, - { 56,8009 }, { 57,8009 }, { 58,8009 }, { 59,8009 }, { 60,8009 }, - { 61,8009 }, { 62,8009 }, { 63,8009 }, { 64,8009 }, { 65,8009 }, - { 66,8009 }, { 67,8009 }, { 68,8009 }, { 69,8009 }, { 70,8009 }, - { 71,8009 }, { 72,8009 }, { 73,8009 }, { 74,8009 }, { 75,8009 }, - { 76,8009 }, { 77,8009 }, { 78,8009 }, { 79,8009 }, { 80,8009 }, - { 81,8009 }, { 82,8009 }, { 83,8009 }, { 84,8009 }, { 85,8009 }, - { 86,8009 }, { 87,8009 }, { 88,8009 }, { 89,8009 }, { 90,8009 }, - { 91,8009 }, { 92,8009 }, { 93,8009 }, { 94,8009 }, { 95,8009 }, - { 96,8009 }, { 97,8009 }, { 98,8009 }, { 99,8009 }, { 100,8009 }, - - { 101,8009 }, { 102,8009 }, { 103,8009 }, { 104,8009 }, { 105,8009 }, - { 106,8009 }, { 107,8009 }, { 108,8009 }, { 109,8009 }, { 110,8009 }, - { 111,8009 }, { 112,8009 }, { 113,8009 }, { 114,8009 }, { 115,8009 }, - { 116,8009 }, { 117,8009 }, { 118,8009 }, { 119,8009 }, { 120,8009 }, - { 121,8009 }, { 122,8009 }, { 123,8009 }, { 124,8009 }, { 125,8009 }, - { 126,8009 }, { 127,8009 }, { 128,8009 }, { 129,8009 }, { 130,8009 }, - { 131,8009 }, { 132,8009 }, { 133,8009 }, { 134,8009 }, { 135,8009 }, - { 136,8009 }, { 137,8009 }, { 138,8009 }, { 139,8009 }, { 140,8009 }, - { 141,8009 }, { 142,8009 }, { 143,8009 }, { 144,8009 }, { 145,8009 }, - { 146,8009 }, { 147,8009 }, { 148,8009 }, { 149,8009 }, { 150,8009 }, - - { 151,8009 }, { 152,8009 }, { 153,8009 }, { 154,8009 }, { 155,8009 }, - { 156,8009 }, { 157,8009 }, { 158,8009 }, { 159,8009 }, { 160,8009 }, - { 161,8009 }, { 162,8009 }, { 163,8009 }, { 164,8009 }, { 165,8009 }, - { 166,8009 }, { 167,8009 }, { 168,8009 }, { 169,8009 }, { 170,8009 }, - { 171,8009 }, { 172,8009 }, { 173,8009 }, { 174,8009 }, { 175,8009 }, - { 176,8009 }, { 177,8009 }, { 178,8009 }, { 179,8009 }, { 180,8009 }, - { 181,8009 }, { 182,8009 }, { 183,8009 }, { 184,8009 }, { 185,8009 }, - { 186,8009 }, { 187,8009 }, { 188,8009 }, { 189,8009 }, { 190,8009 }, - { 191,8009 }, { 192,8009 }, { 193,8009 }, { 194,8009 }, { 195,8009 }, - { 196,8009 }, { 197,8009 }, { 198,8009 }, { 199,8009 }, { 200,8009 }, - - { 201,8009 }, { 202,8009 }, { 203,8009 }, { 204,8009 }, { 205,8009 }, - { 206,8009 }, { 207,8009 }, { 208,8009 }, { 209,8009 }, { 210,8009 }, - { 211,8009 }, { 212,8009 }, { 213,8009 }, { 214,8009 }, { 215,8009 }, - { 216,8009 }, { 217,8009 }, { 218,8009 }, { 219,8009 }, { 220,8009 }, - { 221,8009 }, { 222,8009 }, { 223,8009 }, { 224,8009 }, { 225,8009 }, - { 226,8009 }, { 227,8009 }, { 228,8009 }, { 229,8009 }, { 230,8009 }, - { 231,8009 }, { 232,8009 }, { 233,8009 }, { 234,8009 }, { 235,8009 }, - { 236,8009 }, { 237,8009 }, { 238,8009 }, { 239,8009 }, { 240,8009 }, - { 241,8009 }, { 242,8009 }, { 243,8009 }, { 244,8009 }, { 245,8009 }, - { 246,8009 }, { 247,8009 }, { 248,8009 }, { 249,8009 }, { 250,8009 }, - - { 251,8009 }, { 252,8009 }, { 253,8009 }, { 254,8009 }, { 255,8009 }, - { 256,8009 }, { 0, 0 }, { 0,33393 }, { 1,7751 }, { 2,7751 }, - { 3,7751 }, { 4,7751 }, { 5,7751 }, { 6,7751 }, { 7,7751 }, - { 8,7751 }, { 9,7751 }, { 10,7751 }, { 11,7751 }, { 12,7751 }, - { 13,7751 }, { 14,7751 }, { 15,7751 }, { 16,7751 }, { 17,7751 }, - { 18,7751 }, { 19,7751 }, { 20,7751 }, { 21,7751 }, { 22,7751 }, - { 23,7751 }, { 24,7751 }, { 25,7751 }, { 26,7751 }, { 27,7751 }, - { 28,7751 }, { 29,7751 }, { 30,7751 }, { 31,7751 }, { 32,7751 }, - { 33,7751 }, { 34,7751 }, { 35,7751 }, { 36,7751 }, { 37,7751 }, - { 38,7751 }, { 39,8009 }, { 40,7751 }, { 41,7751 }, { 42,7751 }, - - { 43,7751 }, { 44,7751 }, { 45,7751 }, { 46,7751 }, { 47,7751 }, - { 48,7751 }, { 49,7751 }, { 50,7751 }, { 51,7751 }, { 52,7751 }, - { 53,7751 }, { 54,7751 }, { 55,7751 }, { 56,7751 }, { 57,7751 }, - { 58,7751 }, { 59,7751 }, { 60,7751 }, { 61,7751 }, { 62,7751 }, - { 63,7751 }, { 64,7751 }, { 65,7751 }, { 66,7751 }, { 67,7751 }, - { 68,7751 }, { 69,7751 }, { 70,7751 }, { 71,7751 }, { 72,7751 }, - { 73,7751 }, { 74,7751 }, { 75,7751 }, { 76,7751 }, { 77,7751 }, - { 78,7751 }, { 79,7751 }, { 80,7751 }, { 81,7751 }, { 82,7751 }, - { 83,7751 }, { 84,7751 }, { 85,7751 }, { 86,7751 }, { 87,7751 }, - { 88,7751 }, { 89,7751 }, { 90,7751 }, { 91,7751 }, { 92,7751 }, - - { 93,7751 }, { 94,7751 }, { 95,7751 }, { 96,7751 }, { 97,7751 }, - { 98,7751 }, { 99,7751 }, { 100,7751 }, { 101,7751 }, { 102,7751 }, - { 103,7751 }, { 104,7751 }, { 105,7751 }, { 106,7751 }, { 107,7751 }, - { 108,7751 }, { 109,7751 }, { 110,7751 }, { 111,7751 }, { 112,7751 }, - { 113,7751 }, { 114,7751 }, { 115,7751 }, { 116,7751 }, { 117,7751 }, - { 118,7751 }, { 119,7751 }, { 120,7751 }, { 121,7751 }, { 122,7751 }, - { 123,7751 }, { 124,7751 }, { 125,7751 }, { 126,7751 }, { 127,7751 }, - { 128,7751 }, { 129,7751 }, { 130,7751 }, { 131,7751 }, { 132,7751 }, - { 133,7751 }, { 134,7751 }, { 135,7751 }, { 136,7751 }, { 137,7751 }, - { 138,7751 }, { 139,7751 }, { 140,7751 }, { 141,7751 }, { 142,7751 }, - - { 143,7751 }, { 144,7751 }, { 145,7751 }, { 146,7751 }, { 147,7751 }, - { 148,7751 }, { 149,7751 }, { 150,7751 }, { 151,7751 }, { 152,7751 }, - { 153,7751 }, { 154,7751 }, { 155,7751 }, { 156,7751 }, { 157,7751 }, - { 158,7751 }, { 159,7751 }, { 160,7751 }, { 161,7751 }, { 162,7751 }, - { 163,7751 }, { 164,7751 }, { 165,7751 }, { 166,7751 }, { 167,7751 }, - { 168,7751 }, { 169,7751 }, { 170,7751 }, { 171,7751 }, { 172,7751 }, - { 173,7751 }, { 174,7751 }, { 175,7751 }, { 176,7751 }, { 177,7751 }, - { 178,7751 }, { 179,7751 }, { 180,7751 }, { 181,7751 }, { 182,7751 }, - { 183,7751 }, { 184,7751 }, { 185,7751 }, { 186,7751 }, { 187,7751 }, - { 188,7751 }, { 189,7751 }, { 190,7751 }, { 191,7751 }, { 192,7751 }, - - { 193,7751 }, { 194,7751 }, { 195,7751 }, { 196,7751 }, { 197,7751 }, - { 198,7751 }, { 199,7751 }, { 200,7751 }, { 201,7751 }, { 202,7751 }, - { 203,7751 }, { 204,7751 }, { 205,7751 }, { 206,7751 }, { 207,7751 }, - { 208,7751 }, { 209,7751 }, { 210,7751 }, { 211,7751 }, { 212,7751 }, - { 213,7751 }, { 214,7751 }, { 215,7751 }, { 216,7751 }, { 217,7751 }, - { 218,7751 }, { 219,7751 }, { 220,7751 }, { 221,7751 }, { 222,7751 }, - { 223,7751 }, { 224,7751 }, { 225,7751 }, { 226,7751 }, { 227,7751 }, - { 228,7751 }, { 229,7751 }, { 230,7751 }, { 231,7751 }, { 232,7751 }, - { 233,7751 }, { 234,7751 }, { 235,7751 }, { 236,7751 }, { 237,7751 }, - { 238,7751 }, { 239,7751 }, { 240,7751 }, { 241,7751 }, { 242,7751 }, - - { 243,7751 }, { 244,7751 }, { 245,7751 }, { 246,7751 }, { 247,7751 }, - { 248,7751 }, { 249,7751 }, { 250,7751 }, { 251,7751 }, { 252,7751 }, - { 253,7751 }, { 254,7751 }, { 255,7751 }, { 256,7751 }, { 0, 0 }, - { 0,33135 }, { 1,7798 }, { 2,7798 }, { 3,7798 }, { 4,7798 }, - { 5,7798 }, { 6,7798 }, { 7,7798 }, { 8,7798 }, { 9,7798 }, - { 10,8056 }, { 11,7798 }, { 12,7798 }, { 13,7798 }, { 14,7798 }, - { 15,7798 }, { 16,7798 }, { 17,7798 }, { 18,7798 }, { 19,7798 }, - { 20,7798 }, { 21,7798 }, { 22,7798 }, { 23,7798 }, { 24,7798 }, - { 25,7798 }, { 26,7798 }, { 27,7798 }, { 28,7798 }, { 29,7798 }, - { 30,7798 }, { 31,7798 }, { 32,7798 }, { 33,7798 }, { 34,7798 }, - - { 35,7798 }, { 36,8314 }, { 37,7798 }, { 38,7798 }, { 39,7798 }, - { 40,7798 }, { 41,7798 }, { 42,7798 }, { 43,7798 }, { 44,7798 }, - { 45,7798 }, { 46,7798 }, { 47,7798 }, { 48,7798 }, { 49,7798 }, - { 50,7798 }, { 51,7798 }, { 52,7798 }, { 53,7798 }, { 54,7798 }, - { 55,7798 }, { 56,7798 }, { 57,7798 }, { 58,7798 }, { 59,7798 }, - { 60,7798 }, { 61,7798 }, { 62,7798 }, { 63,7798 }, { 64,7798 }, - { 65,7798 }, { 66,7798 }, { 67,7798 }, { 68,7798 }, { 69,7798 }, - { 70,7798 }, { 71,7798 }, { 72,7798 }, { 73,7798 }, { 74,7798 }, - { 75,7798 }, { 76,7798 }, { 77,7798 }, { 78,7798 }, { 79,7798 }, - { 80,7798 }, { 81,7798 }, { 82,7798 }, { 83,7798 }, { 84,7798 }, - - { 85,7798 }, { 86,7798 }, { 87,7798 }, { 88,7798 }, { 89,7798 }, - { 90,7798 }, { 91,7798 }, { 92,7798 }, { 93,7798 }, { 94,7798 }, - { 95,7798 }, { 96,7798 }, { 97,7798 }, { 98,7798 }, { 99,7798 }, - { 100,7798 }, { 101,7798 }, { 102,7798 }, { 103,7798 }, { 104,7798 }, - { 105,7798 }, { 106,7798 }, { 107,7798 }, { 108,7798 }, { 109,7798 }, - { 110,7798 }, { 111,7798 }, { 112,7798 }, { 113,7798 }, { 114,7798 }, - { 115,7798 }, { 116,7798 }, { 117,7798 }, { 118,7798 }, { 119,7798 }, - { 120,7798 }, { 121,7798 }, { 122,7798 }, { 123,7798 }, { 124,7798 }, - { 125,7798 }, { 126,7798 }, { 127,7798 }, { 128,7798 }, { 129,7798 }, - { 130,7798 }, { 131,7798 }, { 132,7798 }, { 133,7798 }, { 134,7798 }, - - { 135,7798 }, { 136,7798 }, { 137,7798 }, { 138,7798 }, { 139,7798 }, - { 140,7798 }, { 141,7798 }, { 142,7798 }, { 143,7798 }, { 144,7798 }, - { 145,7798 }, { 146,7798 }, { 147,7798 }, { 148,7798 }, { 149,7798 }, - { 150,7798 }, { 151,7798 }, { 152,7798 }, { 153,7798 }, { 154,7798 }, - { 155,7798 }, { 156,7798 }, { 157,7798 }, { 158,7798 }, { 159,7798 }, - { 160,7798 }, { 161,7798 }, { 162,7798 }, { 163,7798 }, { 164,7798 }, - { 165,7798 }, { 166,7798 }, { 167,7798 }, { 168,7798 }, { 169,7798 }, - { 170,7798 }, { 171,7798 }, { 172,7798 }, { 173,7798 }, { 174,7798 }, - { 175,7798 }, { 176,7798 }, { 177,7798 }, { 178,7798 }, { 179,7798 }, - { 180,7798 }, { 181,7798 }, { 182,7798 }, { 183,7798 }, { 184,7798 }, - - { 185,7798 }, { 186,7798 }, { 187,7798 }, { 188,7798 }, { 189,7798 }, - { 190,7798 }, { 191,7798 }, { 192,7798 }, { 193,7798 }, { 194,7798 }, - { 195,7798 }, { 196,7798 }, { 197,7798 }, { 198,7798 }, { 199,7798 }, - { 200,7798 }, { 201,7798 }, { 202,7798 }, { 203,7798 }, { 204,7798 }, - { 205,7798 }, { 206,7798 }, { 207,7798 }, { 208,7798 }, { 209,7798 }, - { 210,7798 }, { 211,7798 }, { 212,7798 }, { 213,7798 }, { 214,7798 }, - { 215,7798 }, { 216,7798 }, { 217,7798 }, { 218,7798 }, { 219,7798 }, - { 220,7798 }, { 221,7798 }, { 222,7798 }, { 223,7798 }, { 224,7798 }, - { 225,7798 }, { 226,7798 }, { 227,7798 }, { 228,7798 }, { 229,7798 }, - { 230,7798 }, { 231,7798 }, { 232,7798 }, { 233,7798 }, { 234,7798 }, - - { 235,7798 }, { 236,7798 }, { 237,7798 }, { 238,7798 }, { 239,7798 }, - { 240,7798 }, { 241,7798 }, { 242,7798 }, { 243,7798 }, { 244,7798 }, - { 245,7798 }, { 246,7798 }, { 247,7798 }, { 248,7798 }, { 249,7798 }, - { 250,7798 }, { 251,7798 }, { 252,7798 }, { 253,7798 }, { 254,7798 }, - { 255,7798 }, { 256,7798 }, { 0, 0 }, { 0,32877 }, { 1,7540 }, - { 2,7540 }, { 3,7540 }, { 4,7540 }, { 5,7540 }, { 6,7540 }, - { 7,7540 }, { 8,7540 }, { 9,7540 }, { 10,7798 }, { 11,7540 }, - { 12,7540 }, { 13,7540 }, { 14,7540 }, { 15,7540 }, { 16,7540 }, - { 17,7540 }, { 18,7540 }, { 19,7540 }, { 20,7540 }, { 21,7540 }, - { 22,7540 }, { 23,7540 }, { 24,7540 }, { 25,7540 }, { 26,7540 }, - - { 27,7540 }, { 28,7540 }, { 29,7540 }, { 30,7540 }, { 31,7540 }, - { 32,7540 }, { 33,7540 }, { 34,7540 }, { 35,7540 }, { 36,8056 }, - { 37,7540 }, { 38,7540 }, { 39,7540 }, { 40,7540 }, { 41,7540 }, - { 42,7540 }, { 43,7540 }, { 44,7540 }, { 45,7540 }, { 46,7540 }, - { 47,7540 }, { 48,7540 }, { 49,7540 }, { 50,7540 }, { 51,7540 }, - { 52,7540 }, { 53,7540 }, { 54,7540 }, { 55,7540 }, { 56,7540 }, - { 57,7540 }, { 58,7540 }, { 59,7540 }, { 60,7540 }, { 61,7540 }, - { 62,7540 }, { 63,7540 }, { 64,7540 }, { 65,7540 }, { 66,7540 }, - { 67,7540 }, { 68,7540 }, { 69,7540 }, { 70,7540 }, { 71,7540 }, - { 72,7540 }, { 73,7540 }, { 74,7540 }, { 75,7540 }, { 76,7540 }, - - { 77,7540 }, { 78,7540 }, { 79,7540 }, { 80,7540 }, { 81,7540 }, - { 82,7540 }, { 83,7540 }, { 84,7540 }, { 85,7540 }, { 86,7540 }, - { 87,7540 }, { 88,7540 }, { 89,7540 }, { 90,7540 }, { 91,7540 }, - { 92,7540 }, { 93,7540 }, { 94,7540 }, { 95,7540 }, { 96,7540 }, - { 97,7540 }, { 98,7540 }, { 99,7540 }, { 100,7540 }, { 101,7540 }, - { 102,7540 }, { 103,7540 }, { 104,7540 }, { 105,7540 }, { 106,7540 }, - { 107,7540 }, { 108,7540 }, { 109,7540 }, { 110,7540 }, { 111,7540 }, - { 112,7540 }, { 113,7540 }, { 114,7540 }, { 115,7540 }, { 116,7540 }, - { 117,7540 }, { 118,7540 }, { 119,7540 }, { 120,7540 }, { 121,7540 }, - { 122,7540 }, { 123,7540 }, { 124,7540 }, { 125,7540 }, { 126,7540 }, - - { 127,7540 }, { 128,7540 }, { 129,7540 }, { 130,7540 }, { 131,7540 }, - { 132,7540 }, { 133,7540 }, { 134,7540 }, { 135,7540 }, { 136,7540 }, - { 137,7540 }, { 138,7540 }, { 139,7540 }, { 140,7540 }, { 141,7540 }, - { 142,7540 }, { 143,7540 }, { 144,7540 }, { 145,7540 }, { 146,7540 }, - { 147,7540 }, { 148,7540 }, { 149,7540 }, { 150,7540 }, { 151,7540 }, - { 152,7540 }, { 153,7540 }, { 154,7540 }, { 155,7540 }, { 156,7540 }, - { 157,7540 }, { 158,7540 }, { 159,7540 }, { 160,7540 }, { 161,7540 }, - { 162,7540 }, { 163,7540 }, { 164,7540 }, { 165,7540 }, { 166,7540 }, - { 167,7540 }, { 168,7540 }, { 169,7540 }, { 170,7540 }, { 171,7540 }, - { 172,7540 }, { 173,7540 }, { 174,7540 }, { 175,7540 }, { 176,7540 }, - - { 177,7540 }, { 178,7540 }, { 179,7540 }, { 180,7540 }, { 181,7540 }, - { 182,7540 }, { 183,7540 }, { 184,7540 }, { 185,7540 }, { 186,7540 }, - { 187,7540 }, { 188,7540 }, { 189,7540 }, { 190,7540 }, { 191,7540 }, - { 192,7540 }, { 193,7540 }, { 194,7540 }, { 195,7540 }, { 196,7540 }, - { 197,7540 }, { 198,7540 }, { 199,7540 }, { 200,7540 }, { 201,7540 }, - { 202,7540 }, { 203,7540 }, { 204,7540 }, { 205,7540 }, { 206,7540 }, - { 207,7540 }, { 208,7540 }, { 209,7540 }, { 210,7540 }, { 211,7540 }, - { 212,7540 }, { 213,7540 }, { 214,7540 }, { 215,7540 }, { 216,7540 }, - { 217,7540 }, { 218,7540 }, { 219,7540 }, { 220,7540 }, { 221,7540 }, - { 222,7540 }, { 223,7540 }, { 224,7540 }, { 225,7540 }, { 226,7540 }, - - { 227,7540 }, { 228,7540 }, { 229,7540 }, { 230,7540 }, { 231,7540 }, - { 232,7540 }, { 233,7540 }, { 234,7540 }, { 235,7540 }, { 236,7540 }, - { 237,7540 }, { 238,7540 }, { 239,7540 }, { 240,7540 }, { 241,7540 }, - { 242,7540 }, { 243,7540 }, { 244,7540 }, { 245,7540 }, { 246,7540 }, - { 247,7540 }, { 248,7540 }, { 249,7540 }, { 250,7540 }, { 251,7540 }, - { 252,7540 }, { 253,7540 }, { 254,7540 }, { 255,7540 }, { 256,7540 }, - { 0, 0 }, { 0,32619 }, { 1,5593 }, { 2,5593 }, { 3,5593 }, - { 4,5593 }, { 5,5593 }, { 6,5593 }, { 7,5593 }, { 8,5593 }, - { 9,5593 }, { 10,5593 }, { 11,5593 }, { 12,5593 }, { 13,5593 }, - { 14,5593 }, { 15,5593 }, { 16,5593 }, { 17,5593 }, { 18,5593 }, - - { 19,5593 }, { 20,5593 }, { 21,5593 }, { 22,5593 }, { 23,5593 }, - { 24,5593 }, { 25,5593 }, { 26,5593 }, { 27,5593 }, { 28,5593 }, - { 29,5593 }, { 30,5593 }, { 31,5593 }, { 32,5593 }, { 33,5593 }, - { 34,2639 }, { 35,5593 }, { 36,5593 }, { 37,5593 }, { 38,5593 }, - { 39,5593 }, { 40,5593 }, { 41,5593 }, { 42,5593 }, { 43,5593 }, - { 44,5593 }, { 45,5593 }, { 46,5593 }, { 47,5593 }, { 48,5593 }, - { 49,5593 }, { 50,5593 }, { 51,5593 }, { 52,5593 }, { 53,5593 }, - { 54,5593 }, { 55,5593 }, { 56,5593 }, { 57,5593 }, { 58,5593 }, - { 59,5593 }, { 60,5593 }, { 61,5593 }, { 62,5593 }, { 63,5593 }, - { 64,5593 }, { 65,5593 }, { 66,5593 }, { 67,5593 }, { 68,5593 }, - - { 69,5593 }, { 70,5593 }, { 71,5593 }, { 72,5593 }, { 73,5593 }, - { 74,5593 }, { 75,5593 }, { 76,5593 }, { 77,5593 }, { 78,5593 }, - { 79,5593 }, { 80,5593 }, { 81,5593 }, { 82,5593 }, { 83,5593 }, - { 84,5593 }, { 85,5593 }, { 86,5593 }, { 87,5593 }, { 88,5593 }, - { 89,5593 }, { 90,5593 }, { 91,5593 }, { 92,5593 }, { 93,5593 }, - { 94,5593 }, { 95,5593 }, { 96,5593 }, { 97,5593 }, { 98,5593 }, - { 99,5593 }, { 100,5593 }, { 101,5593 }, { 102,5593 }, { 103,5593 }, - { 104,5593 }, { 105,5593 }, { 106,5593 }, { 107,5593 }, { 108,5593 }, - { 109,5593 }, { 110,5593 }, { 111,5593 }, { 112,5593 }, { 113,5593 }, - { 114,5593 }, { 115,5593 }, { 116,5593 }, { 117,5593 }, { 118,5593 }, - - { 119,5593 }, { 120,5593 }, { 121,5593 }, { 122,5593 }, { 123,5593 }, - { 124,5593 }, { 125,5593 }, { 126,5593 }, { 127,5593 }, { 128,5593 }, - { 129,5593 }, { 130,5593 }, { 131,5593 }, { 132,5593 }, { 133,5593 }, - { 134,5593 }, { 135,5593 }, { 136,5593 }, { 137,5593 }, { 138,5593 }, - { 139,5593 }, { 140,5593 }, { 141,5593 }, { 142,5593 }, { 143,5593 }, - { 144,5593 }, { 145,5593 }, { 146,5593 }, { 147,5593 }, { 148,5593 }, - { 149,5593 }, { 150,5593 }, { 151,5593 }, { 152,5593 }, { 153,5593 }, - { 154,5593 }, { 155,5593 }, { 156,5593 }, { 157,5593 }, { 158,5593 }, - { 159,5593 }, { 160,5593 }, { 161,5593 }, { 162,5593 }, { 163,5593 }, - { 164,5593 }, { 165,5593 }, { 166,5593 }, { 167,5593 }, { 168,5593 }, - - { 169,5593 }, { 170,5593 }, { 171,5593 }, { 172,5593 }, { 173,5593 }, - { 174,5593 }, { 175,5593 }, { 176,5593 }, { 177,5593 }, { 178,5593 }, - { 179,5593 }, { 180,5593 }, { 181,5593 }, { 182,5593 }, { 183,5593 }, - { 184,5593 }, { 185,5593 }, { 186,5593 }, { 187,5593 }, { 188,5593 }, - { 189,5593 }, { 190,5593 }, { 191,5593 }, { 192,5593 }, { 193,5593 }, - { 194,5593 }, { 195,5593 }, { 196,5593 }, { 197,5593 }, { 198,5593 }, - { 199,5593 }, { 200,5593 }, { 201,5593 }, { 202,5593 }, { 203,5593 }, - { 204,5593 }, { 205,5593 }, { 206,5593 }, { 207,5593 }, { 208,5593 }, - { 209,5593 }, { 210,5593 }, { 211,5593 }, { 212,5593 }, { 213,5593 }, - { 214,5593 }, { 215,5593 }, { 216,5593 }, { 217,5593 }, { 218,5593 }, - - { 219,5593 }, { 220,5593 }, { 221,5593 }, { 222,5593 }, { 223,5593 }, - { 224,5593 }, { 225,5593 }, { 226,5593 }, { 227,5593 }, { 228,5593 }, - { 229,5593 }, { 230,5593 }, { 231,5593 }, { 232,5593 }, { 233,5593 }, - { 234,5593 }, { 235,5593 }, { 236,5593 }, { 237,5593 }, { 238,5593 }, - { 239,5593 }, { 240,5593 }, { 241,5593 }, { 242,5593 }, { 243,5593 }, - { 244,5593 }, { 245,5593 }, { 246,5593 }, { 247,5593 }, { 248,5593 }, - { 249,5593 }, { 250,5593 }, { 251,5593 }, { 252,5593 }, { 253,5593 }, - { 254,5593 }, { 255,5593 }, { 256,5593 }, { 0, 0 }, { 0,32361 }, - { 1,5335 }, { 2,5335 }, { 3,5335 }, { 4,5335 }, { 5,5335 }, - { 6,5335 }, { 7,5335 }, { 8,5335 }, { 9,5335 }, { 10,5335 }, - - { 11,5335 }, { 12,5335 }, { 13,5335 }, { 14,5335 }, { 15,5335 }, - { 16,5335 }, { 17,5335 }, { 18,5335 }, { 19,5335 }, { 20,5335 }, - { 21,5335 }, { 22,5335 }, { 23,5335 }, { 24,5335 }, { 25,5335 }, - { 26,5335 }, { 27,5335 }, { 28,5335 }, { 29,5335 }, { 30,5335 }, - { 31,5335 }, { 32,5335 }, { 33,5335 }, { 34,2381 }, { 35,5335 }, - { 36,5335 }, { 37,5335 }, { 38,5335 }, { 39,5335 }, { 40,5335 }, - { 41,5335 }, { 42,5335 }, { 43,5335 }, { 44,5335 }, { 45,5335 }, - { 46,5335 }, { 47,5335 }, { 48,5335 }, { 49,5335 }, { 50,5335 }, - { 51,5335 }, { 52,5335 }, { 53,5335 }, { 54,5335 }, { 55,5335 }, - { 56,5335 }, { 57,5335 }, { 58,5335 }, { 59,5335 }, { 60,5335 }, - - { 61,5335 }, { 62,5335 }, { 63,5335 }, { 64,5335 }, { 65,5335 }, - { 66,5335 }, { 67,5335 }, { 68,5335 }, { 69,5335 }, { 70,5335 }, - { 71,5335 }, { 72,5335 }, { 73,5335 }, { 74,5335 }, { 75,5335 }, - { 76,5335 }, { 77,5335 }, { 78,5335 }, { 79,5335 }, { 80,5335 }, - { 81,5335 }, { 82,5335 }, { 83,5335 }, { 84,5335 }, { 85,5335 }, - { 86,5335 }, { 87,5335 }, { 88,5335 }, { 89,5335 }, { 90,5335 }, - { 91,5335 }, { 92,5335 }, { 93,5335 }, { 94,5335 }, { 95,5335 }, - { 96,5335 }, { 97,5335 }, { 98,5335 }, { 99,5335 }, { 100,5335 }, - { 101,5335 }, { 102,5335 }, { 103,5335 }, { 104,5335 }, { 105,5335 }, - { 106,5335 }, { 107,5335 }, { 108,5335 }, { 109,5335 }, { 110,5335 }, - - { 111,5335 }, { 112,5335 }, { 113,5335 }, { 114,5335 }, { 115,5335 }, - { 116,5335 }, { 117,5335 }, { 118,5335 }, { 119,5335 }, { 120,5335 }, - { 121,5335 }, { 122,5335 }, { 123,5335 }, { 124,5335 }, { 125,5335 }, - { 126,5335 }, { 127,5335 }, { 128,5335 }, { 129,5335 }, { 130,5335 }, - { 131,5335 }, { 132,5335 }, { 133,5335 }, { 134,5335 }, { 135,5335 }, - { 136,5335 }, { 137,5335 }, { 138,5335 }, { 139,5335 }, { 140,5335 }, - { 141,5335 }, { 142,5335 }, { 143,5335 }, { 144,5335 }, { 145,5335 }, - { 146,5335 }, { 147,5335 }, { 148,5335 }, { 149,5335 }, { 150,5335 }, - { 151,5335 }, { 152,5335 }, { 153,5335 }, { 154,5335 }, { 155,5335 }, - { 156,5335 }, { 157,5335 }, { 158,5335 }, { 159,5335 }, { 160,5335 }, - - { 161,5335 }, { 162,5335 }, { 163,5335 }, { 164,5335 }, { 165,5335 }, - { 166,5335 }, { 167,5335 }, { 168,5335 }, { 169,5335 }, { 170,5335 }, - { 171,5335 }, { 172,5335 }, { 173,5335 }, { 174,5335 }, { 175,5335 }, - { 176,5335 }, { 177,5335 }, { 178,5335 }, { 179,5335 }, { 180,5335 }, - { 181,5335 }, { 182,5335 }, { 183,5335 }, { 184,5335 }, { 185,5335 }, - { 186,5335 }, { 187,5335 }, { 188,5335 }, { 189,5335 }, { 190,5335 }, - { 191,5335 }, { 192,5335 }, { 193,5335 }, { 194,5335 }, { 195,5335 }, - { 196,5335 }, { 197,5335 }, { 198,5335 }, { 199,5335 }, { 200,5335 }, - { 201,5335 }, { 202,5335 }, { 203,5335 }, { 204,5335 }, { 205,5335 }, - { 206,5335 }, { 207,5335 }, { 208,5335 }, { 209,5335 }, { 210,5335 }, - - { 211,5335 }, { 212,5335 }, { 213,5335 }, { 214,5335 }, { 215,5335 }, - { 216,5335 }, { 217,5335 }, { 218,5335 }, { 219,5335 }, { 220,5335 }, - { 221,5335 }, { 222,5335 }, { 223,5335 }, { 224,5335 }, { 225,5335 }, - { 226,5335 }, { 227,5335 }, { 228,5335 }, { 229,5335 }, { 230,5335 }, - { 231,5335 }, { 232,5335 }, { 233,5335 }, { 234,5335 }, { 235,5335 }, - { 236,5335 }, { 237,5335 }, { 238,5335 }, { 239,5335 }, { 240,5335 }, - { 241,5335 }, { 242,5335 }, { 243,5335 }, { 244,5335 }, { 245,5335 }, - { 246,5335 }, { 247,5335 }, { 248,5335 }, { 249,5335 }, { 250,5335 }, - { 251,5335 }, { 252,5335 }, { 253,5335 }, { 254,5335 }, { 255,5335 }, - { 256,5335 }, { 0, 55 }, { 0,32103 }, { 1,2125 }, { 2,2125 }, - - { 3,2125 }, { 4,2125 }, { 5,2125 }, { 6,2125 }, { 7,2125 }, - { 8,2125 }, { 9,7284 }, { 10,7289 }, { 11,2125 }, { 12,7284 }, - { 13,7284 }, { 14,2125 }, { 15,2125 }, { 16,2125 }, { 17,2125 }, - { 18,2125 }, { 19,2125 }, { 20,2125 }, { 21,2125 }, { 22,2125 }, - { 23,2125 }, { 24,2125 }, { 25,2125 }, { 26,2125 }, { 27,2125 }, - { 28,2125 }, { 29,2125 }, { 30,2125 }, { 31,2125 }, { 32,7284 }, - { 33,2125 }, { 34,2125 }, { 35,2125 }, { 36,2125 }, { 37,2125 }, - { 38,2125 }, { 39,2125 }, { 40,2125 }, { 41,2125 }, { 42,2125 }, - { 43,2125 }, { 44,2125 }, { 45,2127 }, { 46,2125 }, { 47,2125 }, - { 48,2125 }, { 49,2125 }, { 50,2125 }, { 51,2125 }, { 52,2125 }, - - { 53,2125 }, { 54,2125 }, { 55,2125 }, { 56,2125 }, { 57,2125 }, - { 58,2125 }, { 59,2125 }, { 60,2125 }, { 61,2125 }, { 62,2125 }, - { 63,2125 }, { 64,2125 }, { 65,2125 }, { 66,2125 }, { 67,2125 }, - { 68,2125 }, { 69,2125 }, { 70,2125 }, { 71,2125 }, { 72,2125 }, - { 73,2125 }, { 74,2125 }, { 75,2125 }, { 76,2125 }, { 77,2125 }, - { 78,2125 }, { 79,2125 }, { 80,2125 }, { 81,2125 }, { 82,2125 }, - { 83,2125 }, { 84,2125 }, { 85,2141 }, { 86,2125 }, { 87,2125 }, - { 88,2125 }, { 89,2125 }, { 90,2125 }, { 91,2125 }, { 92,2125 }, - { 93,2125 }, { 94,2125 }, { 95,2125 }, { 96,2125 }, { 97,2125 }, - { 98,2125 }, { 99,2125 }, { 100,2125 }, { 101,2125 }, { 102,2125 }, - - { 103,2125 }, { 104,2125 }, { 105,2125 }, { 106,2125 }, { 107,2125 }, - { 108,2125 }, { 109,2125 }, { 110,2125 }, { 111,2125 }, { 112,2125 }, - { 113,2125 }, { 114,2125 }, { 115,2125 }, { 116,2125 }, { 117,2141 }, - { 118,2125 }, { 119,2125 }, { 120,2125 }, { 121,2125 }, { 122,2125 }, - { 123,2125 }, { 124,2125 }, { 125,2125 }, { 126,2125 }, { 127,2125 }, - { 128,2125 }, { 129,2125 }, { 130,2125 }, { 131,2125 }, { 132,2125 }, - { 133,2125 }, { 134,2125 }, { 135,2125 }, { 136,2125 }, { 137,2125 }, - { 138,2125 }, { 139,2125 }, { 140,2125 }, { 141,2125 }, { 142,2125 }, - { 143,2125 }, { 144,2125 }, { 145,2125 }, { 146,2125 }, { 147,2125 }, - { 148,2125 }, { 149,2125 }, { 150,2125 }, { 151,2125 }, { 152,2125 }, - - { 153,2125 }, { 154,2125 }, { 155,2125 }, { 156,2125 }, { 157,2125 }, - { 158,2125 }, { 159,2125 }, { 160,2125 }, { 161,2125 }, { 162,2125 }, - { 163,2125 }, { 164,2125 }, { 165,2125 }, { 166,2125 }, { 167,2125 }, - { 168,2125 }, { 169,2125 }, { 170,2125 }, { 171,2125 }, { 172,2125 }, - { 173,2125 }, { 174,2125 }, { 175,2125 }, { 176,2125 }, { 177,2125 }, - { 178,2125 }, { 179,2125 }, { 180,2125 }, { 181,2125 }, { 182,2125 }, - { 183,2125 }, { 184,2125 }, { 185,2125 }, { 186,2125 }, { 187,2125 }, - { 188,2125 }, { 189,2125 }, { 190,2125 }, { 191,2125 }, { 192,2125 }, - { 193,2125 }, { 194,2125 }, { 195,2125 }, { 196,2125 }, { 197,2125 }, - { 198,2125 }, { 199,2125 }, { 200,2125 }, { 201,2125 }, { 202,2125 }, - - { 203,2125 }, { 204,2125 }, { 205,2125 }, { 206,2125 }, { 207,2125 }, - { 208,2125 }, { 209,2125 }, { 210,2125 }, { 211,2125 }, { 212,2125 }, - { 213,2125 }, { 214,2125 }, { 215,2125 }, { 216,2125 }, { 217,2125 }, - { 218,2125 }, { 219,2125 }, { 220,2125 }, { 221,2125 }, { 222,2125 }, - { 223,2125 }, { 224,2125 }, { 225,2125 }, { 226,2125 }, { 227,2125 }, - { 228,2125 }, { 229,2125 }, { 230,2125 }, { 231,2125 }, { 232,2125 }, - { 233,2125 }, { 234,2125 }, { 235,2125 }, { 236,2125 }, { 237,2125 }, - { 238,2125 }, { 239,2125 }, { 240,2125 }, { 241,2125 }, { 242,2125 }, - { 243,2125 }, { 244,2125 }, { 245,2125 }, { 246,2125 }, { 247,2125 }, - { 248,2125 }, { 249,2125 }, { 250,2125 }, { 251,2125 }, { 252,2125 }, - - { 253,2125 }, { 254,2125 }, { 255,2125 }, { 256,2125 }, { 0, 55 }, - { 0,31845 }, { 1,1867 }, { 2,1867 }, { 3,1867 }, { 4,1867 }, - { 5,1867 }, { 6,1867 }, { 7,1867 }, { 8,1867 }, { 9,7026 }, - { 10,7031 }, { 11,1867 }, { 12,7026 }, { 13,7026 }, { 14,1867 }, - { 15,1867 }, { 16,1867 }, { 17,1867 }, { 18,1867 }, { 19,1867 }, - { 20,1867 }, { 21,1867 }, { 22,1867 }, { 23,1867 }, { 24,1867 }, - { 25,1867 }, { 26,1867 }, { 27,1867 }, { 28,1867 }, { 29,1867 }, - { 30,1867 }, { 31,1867 }, { 32,7026 }, { 33,1867 }, { 34,1867 }, - { 35,1867 }, { 36,1867 }, { 37,1867 }, { 38,1867 }, { 39,1867 }, - { 40,1867 }, { 41,1867 }, { 42,1867 }, { 43,1867 }, { 44,1867 }, - - { 45,1869 }, { 46,1867 }, { 47,1867 }, { 48,1867 }, { 49,1867 }, - { 50,1867 }, { 51,1867 }, { 52,1867 }, { 53,1867 }, { 54,1867 }, - { 55,1867 }, { 56,1867 }, { 57,1867 }, { 58,1867 }, { 59,1867 }, - { 60,1867 }, { 61,1867 }, { 62,1867 }, { 63,1867 }, { 64,1867 }, - { 65,1867 }, { 66,1867 }, { 67,1867 }, { 68,1867 }, { 69,1867 }, - { 70,1867 }, { 71,1867 }, { 72,1867 }, { 73,1867 }, { 74,1867 }, - { 75,1867 }, { 76,1867 }, { 77,1867 }, { 78,1867 }, { 79,1867 }, - { 80,1867 }, { 81,1867 }, { 82,1867 }, { 83,1867 }, { 84,1867 }, - { 85,1883 }, { 86,1867 }, { 87,1867 }, { 88,1867 }, { 89,1867 }, - { 90,1867 }, { 91,1867 }, { 92,1867 }, { 93,1867 }, { 94,1867 }, - - { 95,1867 }, { 96,1867 }, { 97,1867 }, { 98,1867 }, { 99,1867 }, - { 100,1867 }, { 101,1867 }, { 102,1867 }, { 103,1867 }, { 104,1867 }, - { 105,1867 }, { 106,1867 }, { 107,1867 }, { 108,1867 }, { 109,1867 }, - { 110,1867 }, { 111,1867 }, { 112,1867 }, { 113,1867 }, { 114,1867 }, - { 115,1867 }, { 116,1867 }, { 117,1883 }, { 118,1867 }, { 119,1867 }, - { 120,1867 }, { 121,1867 }, { 122,1867 }, { 123,1867 }, { 124,1867 }, - { 125,1867 }, { 126,1867 }, { 127,1867 }, { 128,1867 }, { 129,1867 }, - { 130,1867 }, { 131,1867 }, { 132,1867 }, { 133,1867 }, { 134,1867 }, - { 135,1867 }, { 136,1867 }, { 137,1867 }, { 138,1867 }, { 139,1867 }, - { 140,1867 }, { 141,1867 }, { 142,1867 }, { 143,1867 }, { 144,1867 }, - - { 145,1867 }, { 146,1867 }, { 147,1867 }, { 148,1867 }, { 149,1867 }, - { 150,1867 }, { 151,1867 }, { 152,1867 }, { 153,1867 }, { 154,1867 }, - { 155,1867 }, { 156,1867 }, { 157,1867 }, { 158,1867 }, { 159,1867 }, - { 160,1867 }, { 161,1867 }, { 162,1867 }, { 163,1867 }, { 164,1867 }, - { 165,1867 }, { 166,1867 }, { 167,1867 }, { 168,1867 }, { 169,1867 }, - { 170,1867 }, { 171,1867 }, { 172,1867 }, { 173,1867 }, { 174,1867 }, - { 175,1867 }, { 176,1867 }, { 177,1867 }, { 178,1867 }, { 179,1867 }, - { 180,1867 }, { 181,1867 }, { 182,1867 }, { 183,1867 }, { 184,1867 }, - { 185,1867 }, { 186,1867 }, { 187,1867 }, { 188,1867 }, { 189,1867 }, - { 190,1867 }, { 191,1867 }, { 192,1867 }, { 193,1867 }, { 194,1867 }, - - { 195,1867 }, { 196,1867 }, { 197,1867 }, { 198,1867 }, { 199,1867 }, - { 200,1867 }, { 201,1867 }, { 202,1867 }, { 203,1867 }, { 204,1867 }, - { 205,1867 }, { 206,1867 }, { 207,1867 }, { 208,1867 }, { 209,1867 }, - { 210,1867 }, { 211,1867 }, { 212,1867 }, { 213,1867 }, { 214,1867 }, - { 215,1867 }, { 216,1867 }, { 217,1867 }, { 218,1867 }, { 219,1867 }, - { 220,1867 }, { 221,1867 }, { 222,1867 }, { 223,1867 }, { 224,1867 }, - { 225,1867 }, { 226,1867 }, { 227,1867 }, { 228,1867 }, { 229,1867 }, - { 230,1867 }, { 231,1867 }, { 232,1867 }, { 233,1867 }, { 234,1867 }, - { 235,1867 }, { 236,1867 }, { 237,1867 }, { 238,1867 }, { 239,1867 }, - { 240,1867 }, { 241,1867 }, { 242,1867 }, { 243,1867 }, { 244,1867 }, - - { 245,1867 }, { 246,1867 }, { 247,1867 }, { 248,1867 }, { 249,1867 }, - { 250,1867 }, { 251,1867 }, { 252,1867 }, { 253,1867 }, { 254,1867 }, - { 255,1867 }, { 256,1867 }, { 0, 0 }, { 0,31587 }, { 1,5945 }, - { 2,5945 }, { 3,5945 }, { 4,5945 }, { 5,5945 }, { 6,5945 }, - { 7,5945 }, { 8,5945 }, { 9,5945 }, { 10,5945 }, { 11,5945 }, - { 12,5945 }, { 13,5945 }, { 14,5945 }, { 15,5945 }, { 16,5945 }, - { 17,5945 }, { 18,5945 }, { 19,5945 }, { 20,5945 }, { 21,5945 }, - { 22,5945 }, { 23,5945 }, { 24,5945 }, { 25,5945 }, { 26,5945 }, - { 27,5945 }, { 28,5945 }, { 29,5945 }, { 30,5945 }, { 31,5945 }, - { 32,5945 }, { 33,5945 }, { 34,5945 }, { 35,5945 }, { 36,5945 }, - - { 37,5945 }, { 38,5945 }, { 39,7023 }, { 40,5945 }, { 41,5945 }, - { 42,5945 }, { 43,5945 }, { 44,5945 }, { 45,5945 }, { 46,5945 }, - { 47,5945 }, { 48,5945 }, { 49,5945 }, { 50,5945 }, { 51,5945 }, - { 52,5945 }, { 53,5945 }, { 54,5945 }, { 55,5945 }, { 56,5945 }, - { 57,5945 }, { 58,5945 }, { 59,5945 }, { 60,5945 }, { 61,5945 }, - { 62,5945 }, { 63,5945 }, { 64,5945 }, { 65,5945 }, { 66,5945 }, - { 67,5945 }, { 68,5945 }, { 69,5945 }, { 70,5945 }, { 71,5945 }, - { 72,5945 }, { 73,5945 }, { 74,5945 }, { 75,5945 }, { 76,5945 }, - { 77,5945 }, { 78,5945 }, { 79,5945 }, { 80,5945 }, { 81,5945 }, - { 82,5945 }, { 83,5945 }, { 84,5945 }, { 85,5945 }, { 86,5945 }, - - { 87,5945 }, { 88,5945 }, { 89,5945 }, { 90,5945 }, { 91,5945 }, - { 92,5945 }, { 93,5945 }, { 94,5945 }, { 95,5945 }, { 96,5945 }, - { 97,5945 }, { 98,5945 }, { 99,5945 }, { 100,5945 }, { 101,5945 }, - { 102,5945 }, { 103,5945 }, { 104,5945 }, { 105,5945 }, { 106,5945 }, - { 107,5945 }, { 108,5945 }, { 109,5945 }, { 110,5945 }, { 111,5945 }, - { 112,5945 }, { 113,5945 }, { 114,5945 }, { 115,5945 }, { 116,5945 }, - { 117,5945 }, { 118,5945 }, { 119,5945 }, { 120,5945 }, { 121,5945 }, - { 122,5945 }, { 123,5945 }, { 124,5945 }, { 125,5945 }, { 126,5945 }, - { 127,5945 }, { 128,5945 }, { 129,5945 }, { 130,5945 }, { 131,5945 }, - { 132,5945 }, { 133,5945 }, { 134,5945 }, { 135,5945 }, { 136,5945 }, - - { 137,5945 }, { 138,5945 }, { 139,5945 }, { 140,5945 }, { 141,5945 }, - { 142,5945 }, { 143,5945 }, { 144,5945 }, { 145,5945 }, { 146,5945 }, - { 147,5945 }, { 148,5945 }, { 149,5945 }, { 150,5945 }, { 151,5945 }, - { 152,5945 }, { 153,5945 }, { 154,5945 }, { 155,5945 }, { 156,5945 }, - { 157,5945 }, { 158,5945 }, { 159,5945 }, { 160,5945 }, { 161,5945 }, - { 162,5945 }, { 163,5945 }, { 164,5945 }, { 165,5945 }, { 166,5945 }, - { 167,5945 }, { 168,5945 }, { 169,5945 }, { 170,5945 }, { 171,5945 }, - { 172,5945 }, { 173,5945 }, { 174,5945 }, { 175,5945 }, { 176,5945 }, - { 177,5945 }, { 178,5945 }, { 179,5945 }, { 180,5945 }, { 181,5945 }, - { 182,5945 }, { 183,5945 }, { 184,5945 }, { 185,5945 }, { 186,5945 }, - - { 187,5945 }, { 188,5945 }, { 189,5945 }, { 190,5945 }, { 191,5945 }, - { 192,5945 }, { 193,5945 }, { 194,5945 }, { 195,5945 }, { 196,5945 }, - { 197,5945 }, { 198,5945 }, { 199,5945 }, { 200,5945 }, { 201,5945 }, - { 202,5945 }, { 203,5945 }, { 204,5945 }, { 205,5945 }, { 206,5945 }, - { 207,5945 }, { 208,5945 }, { 209,5945 }, { 210,5945 }, { 211,5945 }, - { 212,5945 }, { 213,5945 }, { 214,5945 }, { 215,5945 }, { 216,5945 }, - { 217,5945 }, { 218,5945 }, { 219,5945 }, { 220,5945 }, { 221,5945 }, - { 222,5945 }, { 223,5945 }, { 224,5945 }, { 225,5945 }, { 226,5945 }, - { 227,5945 }, { 228,5945 }, { 229,5945 }, { 230,5945 }, { 231,5945 }, - { 232,5945 }, { 233,5945 }, { 234,5945 }, { 235,5945 }, { 236,5945 }, - - { 237,5945 }, { 238,5945 }, { 239,5945 }, { 240,5945 }, { 241,5945 }, - { 242,5945 }, { 243,5945 }, { 244,5945 }, { 245,5945 }, { 246,5945 }, - { 247,5945 }, { 248,5945 }, { 249,5945 }, { 250,5945 }, { 251,5945 }, - { 252,5945 }, { 253,5945 }, { 254,5945 }, { 255,5945 }, { 256,5945 }, - { 0, 0 }, { 0,31329 }, { 1,5687 }, { 2,5687 }, { 3,5687 }, - { 4,5687 }, { 5,5687 }, { 6,5687 }, { 7,5687 }, { 8,5687 }, - { 9,5687 }, { 10,5687 }, { 11,5687 }, { 12,5687 }, { 13,5687 }, - { 14,5687 }, { 15,5687 }, { 16,5687 }, { 17,5687 }, { 18,5687 }, - { 19,5687 }, { 20,5687 }, { 21,5687 }, { 22,5687 }, { 23,5687 }, - { 24,5687 }, { 25,5687 }, { 26,5687 }, { 27,5687 }, { 28,5687 }, - - { 29,5687 }, { 30,5687 }, { 31,5687 }, { 32,5687 }, { 33,5687 }, - { 34,5687 }, { 35,5687 }, { 36,5687 }, { 37,5687 }, { 38,5687 }, - { 39,6765 }, { 40,5687 }, { 41,5687 }, { 42,5687 }, { 43,5687 }, - { 44,5687 }, { 45,5687 }, { 46,5687 }, { 47,5687 }, { 48,5687 }, - { 49,5687 }, { 50,5687 }, { 51,5687 }, { 52,5687 }, { 53,5687 }, - { 54,5687 }, { 55,5687 }, { 56,5687 }, { 57,5687 }, { 58,5687 }, - { 59,5687 }, { 60,5687 }, { 61,5687 }, { 62,5687 }, { 63,5687 }, - { 64,5687 }, { 65,5687 }, { 66,5687 }, { 67,5687 }, { 68,5687 }, - { 69,5687 }, { 70,5687 }, { 71,5687 }, { 72,5687 }, { 73,5687 }, - { 74,5687 }, { 75,5687 }, { 76,5687 }, { 77,5687 }, { 78,5687 }, - - { 79,5687 }, { 80,5687 }, { 81,5687 }, { 82,5687 }, { 83,5687 }, - { 84,5687 }, { 85,5687 }, { 86,5687 }, { 87,5687 }, { 88,5687 }, - { 89,5687 }, { 90,5687 }, { 91,5687 }, { 92,5687 }, { 93,5687 }, - { 94,5687 }, { 95,5687 }, { 96,5687 }, { 97,5687 }, { 98,5687 }, - { 99,5687 }, { 100,5687 }, { 101,5687 }, { 102,5687 }, { 103,5687 }, - { 104,5687 }, { 105,5687 }, { 106,5687 }, { 107,5687 }, { 108,5687 }, - { 109,5687 }, { 110,5687 }, { 111,5687 }, { 112,5687 }, { 113,5687 }, - { 114,5687 }, { 115,5687 }, { 116,5687 }, { 117,5687 }, { 118,5687 }, - { 119,5687 }, { 120,5687 }, { 121,5687 }, { 122,5687 }, { 123,5687 }, - { 124,5687 }, { 125,5687 }, { 126,5687 }, { 127,5687 }, { 128,5687 }, - - { 129,5687 }, { 130,5687 }, { 131,5687 }, { 132,5687 }, { 133,5687 }, - { 134,5687 }, { 135,5687 }, { 136,5687 }, { 137,5687 }, { 138,5687 }, - { 139,5687 }, { 140,5687 }, { 141,5687 }, { 142,5687 }, { 143,5687 }, - { 144,5687 }, { 145,5687 }, { 146,5687 }, { 147,5687 }, { 148,5687 }, - { 149,5687 }, { 150,5687 }, { 151,5687 }, { 152,5687 }, { 153,5687 }, - { 154,5687 }, { 155,5687 }, { 156,5687 }, { 157,5687 }, { 158,5687 }, - { 159,5687 }, { 160,5687 }, { 161,5687 }, { 162,5687 }, { 163,5687 }, - { 164,5687 }, { 165,5687 }, { 166,5687 }, { 167,5687 }, { 168,5687 }, - { 169,5687 }, { 170,5687 }, { 171,5687 }, { 172,5687 }, { 173,5687 }, - { 174,5687 }, { 175,5687 }, { 176,5687 }, { 177,5687 }, { 178,5687 }, - - { 179,5687 }, { 180,5687 }, { 181,5687 }, { 182,5687 }, { 183,5687 }, - { 184,5687 }, { 185,5687 }, { 186,5687 }, { 187,5687 }, { 188,5687 }, - { 189,5687 }, { 190,5687 }, { 191,5687 }, { 192,5687 }, { 193,5687 }, - { 194,5687 }, { 195,5687 }, { 196,5687 }, { 197,5687 }, { 198,5687 }, - { 199,5687 }, { 200,5687 }, { 201,5687 }, { 202,5687 }, { 203,5687 }, - { 204,5687 }, { 205,5687 }, { 206,5687 }, { 207,5687 }, { 208,5687 }, - { 209,5687 }, { 210,5687 }, { 211,5687 }, { 212,5687 }, { 213,5687 }, - { 214,5687 }, { 215,5687 }, { 216,5687 }, { 217,5687 }, { 218,5687 }, - { 219,5687 }, { 220,5687 }, { 221,5687 }, { 222,5687 }, { 223,5687 }, - { 224,5687 }, { 225,5687 }, { 226,5687 }, { 227,5687 }, { 228,5687 }, - - { 229,5687 }, { 230,5687 }, { 231,5687 }, { 232,5687 }, { 233,5687 }, - { 234,5687 }, { 235,5687 }, { 236,5687 }, { 237,5687 }, { 238,5687 }, - { 239,5687 }, { 240,5687 }, { 241,5687 }, { 242,5687 }, { 243,5687 }, - { 244,5687 }, { 245,5687 }, { 246,5687 }, { 247,5687 }, { 248,5687 }, - { 249,5687 }, { 250,5687 }, { 251,5687 }, { 252,5687 }, { 253,5687 }, - { 254,5687 }, { 255,5687 }, { 256,5687 }, { 0, 28 }, { 0,31071 }, - { 1,1113 }, { 2,1113 }, { 3,1113 }, { 4,1113 }, { 5,1113 }, - { 6,1113 }, { 7,1113 }, { 8,1113 }, { 9,6512 }, { 10,6528 }, - { 11,1113 }, { 12,6512 }, { 13,6512 }, { 14,1113 }, { 15,1113 }, - { 16,1113 }, { 17,1113 }, { 18,1113 }, { 19,1113 }, { 20,1113 }, - - { 21,1113 }, { 22,1113 }, { 23,1113 }, { 24,1113 }, { 25,1113 }, - { 26,1113 }, { 27,1113 }, { 28,1113 }, { 29,1113 }, { 30,1113 }, - { 31,1113 }, { 32,6512 }, { 33,1113 }, { 34,1113 }, { 35,1113 }, - { 36,1113 }, { 37,1113 }, { 38,1113 }, { 39,1113 }, { 40,1113 }, - { 41,1113 }, { 42,1113 }, { 43,1113 }, { 44,1113 }, { 45,1131 }, - { 46,1113 }, { 47,1113 }, { 48,1113 }, { 49,1113 }, { 50,1113 }, - { 51,1113 }, { 52,1113 }, { 53,1113 }, { 54,1113 }, { 55,1113 }, - { 56,1113 }, { 57,1113 }, { 58,1113 }, { 59,1113 }, { 60,1113 }, - { 61,1113 }, { 62,1113 }, { 63,1113 }, { 64,1113 }, { 65,1113 }, - { 66,1113 }, { 67,1113 }, { 68,1113 }, { 69,1113 }, { 70,1113 }, - - { 71,1113 }, { 72,1113 }, { 73,1113 }, { 74,1113 }, { 75,1113 }, - { 76,1113 }, { 77,1113 }, { 78,1113 }, { 79,1113 }, { 80,1113 }, - { 81,1113 }, { 82,1113 }, { 83,1113 }, { 84,1113 }, { 85,1139 }, - { 86,1113 }, { 87,1113 }, { 88,1113 }, { 89,1113 }, { 90,1113 }, - { 91,1113 }, { 92,1113 }, { 93,1113 }, { 94,1113 }, { 95,1113 }, - { 96,1113 }, { 97,1113 }, { 98,1113 }, { 99,1113 }, { 100,1113 }, - { 101,1113 }, { 102,1113 }, { 103,1113 }, { 104,1113 }, { 105,1113 }, - { 106,1113 }, { 107,1113 }, { 108,1113 }, { 109,1113 }, { 110,1113 }, - { 111,1113 }, { 112,1113 }, { 113,1113 }, { 114,1113 }, { 115,1113 }, - { 116,1113 }, { 117,1139 }, { 118,1113 }, { 119,1113 }, { 120,1113 }, - - { 121,1113 }, { 122,1113 }, { 123,1113 }, { 124,1113 }, { 125,1113 }, - { 126,1113 }, { 127,1113 }, { 128,1113 }, { 129,1113 }, { 130,1113 }, - { 131,1113 }, { 132,1113 }, { 133,1113 }, { 134,1113 }, { 135,1113 }, - { 136,1113 }, { 137,1113 }, { 138,1113 }, { 139,1113 }, { 140,1113 }, - { 141,1113 }, { 142,1113 }, { 143,1113 }, { 144,1113 }, { 145,1113 }, - { 146,1113 }, { 147,1113 }, { 148,1113 }, { 149,1113 }, { 150,1113 }, - { 151,1113 }, { 152,1113 }, { 153,1113 }, { 154,1113 }, { 155,1113 }, - { 156,1113 }, { 157,1113 }, { 158,1113 }, { 159,1113 }, { 160,1113 }, - { 161,1113 }, { 162,1113 }, { 163,1113 }, { 164,1113 }, { 165,1113 }, - { 166,1113 }, { 167,1113 }, { 168,1113 }, { 169,1113 }, { 170,1113 }, - - { 171,1113 }, { 172,1113 }, { 173,1113 }, { 174,1113 }, { 175,1113 }, - { 176,1113 }, { 177,1113 }, { 178,1113 }, { 179,1113 }, { 180,1113 }, - { 181,1113 }, { 182,1113 }, { 183,1113 }, { 184,1113 }, { 185,1113 }, - { 186,1113 }, { 187,1113 }, { 188,1113 }, { 189,1113 }, { 190,1113 }, - { 191,1113 }, { 192,1113 }, { 193,1113 }, { 194,1113 }, { 195,1113 }, - { 196,1113 }, { 197,1113 }, { 198,1113 }, { 199,1113 }, { 200,1113 }, - { 201,1113 }, { 202,1113 }, { 203,1113 }, { 204,1113 }, { 205,1113 }, - { 206,1113 }, { 207,1113 }, { 208,1113 }, { 209,1113 }, { 210,1113 }, - { 211,1113 }, { 212,1113 }, { 213,1113 }, { 214,1113 }, { 215,1113 }, - { 216,1113 }, { 217,1113 }, { 218,1113 }, { 219,1113 }, { 220,1113 }, - - { 221,1113 }, { 222,1113 }, { 223,1113 }, { 224,1113 }, { 225,1113 }, - { 226,1113 }, { 227,1113 }, { 228,1113 }, { 229,1113 }, { 230,1113 }, - { 231,1113 }, { 232,1113 }, { 233,1113 }, { 234,1113 }, { 235,1113 }, - { 236,1113 }, { 237,1113 }, { 238,1113 }, { 239,1113 }, { 240,1113 }, - { 241,1113 }, { 242,1113 }, { 243,1113 }, { 244,1113 }, { 245,1113 }, - { 246,1113 }, { 247,1113 }, { 248,1113 }, { 249,1113 }, { 250,1113 }, - { 251,1113 }, { 252,1113 }, { 253,1113 }, { 254,1113 }, { 255,1113 }, - { 256,1113 }, { 0, 28 }, { 0,30813 }, { 1, 855 }, { 2, 855 }, - { 3, 855 }, { 4, 855 }, { 5, 855 }, { 6, 855 }, { 7, 855 }, - { 8, 855 }, { 9,6254 }, { 10,6270 }, { 11, 855 }, { 12,6254 }, - - { 13,6254 }, { 14, 855 }, { 15, 855 }, { 16, 855 }, { 17, 855 }, - { 18, 855 }, { 19, 855 }, { 20, 855 }, { 21, 855 }, { 22, 855 }, - { 23, 855 }, { 24, 855 }, { 25, 855 }, { 26, 855 }, { 27, 855 }, - { 28, 855 }, { 29, 855 }, { 30, 855 }, { 31, 855 }, { 32,6254 }, - { 33, 855 }, { 34, 855 }, { 35, 855 }, { 36, 855 }, { 37, 855 }, - { 38, 855 }, { 39, 855 }, { 40, 855 }, { 41, 855 }, { 42, 855 }, - { 43, 855 }, { 44, 855 }, { 45, 873 }, { 46, 855 }, { 47, 855 }, - { 48, 855 }, { 49, 855 }, { 50, 855 }, { 51, 855 }, { 52, 855 }, - { 53, 855 }, { 54, 855 }, { 55, 855 }, { 56, 855 }, { 57, 855 }, - { 58, 855 }, { 59, 855 }, { 60, 855 }, { 61, 855 }, { 62, 855 }, - - { 63, 855 }, { 64, 855 }, { 65, 855 }, { 66, 855 }, { 67, 855 }, - { 68, 855 }, { 69, 855 }, { 70, 855 }, { 71, 855 }, { 72, 855 }, - { 73, 855 }, { 74, 855 }, { 75, 855 }, { 76, 855 }, { 77, 855 }, - { 78, 855 }, { 79, 855 }, { 80, 855 }, { 81, 855 }, { 82, 855 }, - { 83, 855 }, { 84, 855 }, { 85, 881 }, { 86, 855 }, { 87, 855 }, - { 88, 855 }, { 89, 855 }, { 90, 855 }, { 91, 855 }, { 92, 855 }, - { 93, 855 }, { 94, 855 }, { 95, 855 }, { 96, 855 }, { 97, 855 }, - { 98, 855 }, { 99, 855 }, { 100, 855 }, { 101, 855 }, { 102, 855 }, - { 103, 855 }, { 104, 855 }, { 105, 855 }, { 106, 855 }, { 107, 855 }, - { 108, 855 }, { 109, 855 }, { 110, 855 }, { 111, 855 }, { 112, 855 }, - - { 113, 855 }, { 114, 855 }, { 115, 855 }, { 116, 855 }, { 117, 881 }, - { 118, 855 }, { 119, 855 }, { 120, 855 }, { 121, 855 }, { 122, 855 }, - { 123, 855 }, { 124, 855 }, { 125, 855 }, { 126, 855 }, { 127, 855 }, - { 128, 855 }, { 129, 855 }, { 130, 855 }, { 131, 855 }, { 132, 855 }, - { 133, 855 }, { 134, 855 }, { 135, 855 }, { 136, 855 }, { 137, 855 }, - { 138, 855 }, { 139, 855 }, { 140, 855 }, { 141, 855 }, { 142, 855 }, - { 143, 855 }, { 144, 855 }, { 145, 855 }, { 146, 855 }, { 147, 855 }, - { 148, 855 }, { 149, 855 }, { 150, 855 }, { 151, 855 }, { 152, 855 }, - { 153, 855 }, { 154, 855 }, { 155, 855 }, { 156, 855 }, { 157, 855 }, - { 158, 855 }, { 159, 855 }, { 160, 855 }, { 161, 855 }, { 162, 855 }, - - { 163, 855 }, { 164, 855 }, { 165, 855 }, { 166, 855 }, { 167, 855 }, - { 168, 855 }, { 169, 855 }, { 170, 855 }, { 171, 855 }, { 172, 855 }, - { 173, 855 }, { 174, 855 }, { 175, 855 }, { 176, 855 }, { 177, 855 }, - { 178, 855 }, { 179, 855 }, { 180, 855 }, { 181, 855 }, { 182, 855 }, - { 183, 855 }, { 184, 855 }, { 185, 855 }, { 186, 855 }, { 187, 855 }, - { 188, 855 }, { 189, 855 }, { 190, 855 }, { 191, 855 }, { 192, 855 }, - { 193, 855 }, { 194, 855 }, { 195, 855 }, { 196, 855 }, { 197, 855 }, - { 198, 855 }, { 199, 855 }, { 200, 855 }, { 201, 855 }, { 202, 855 }, - { 203, 855 }, { 204, 855 }, { 205, 855 }, { 206, 855 }, { 207, 855 }, - { 208, 855 }, { 209, 855 }, { 210, 855 }, { 211, 855 }, { 212, 855 }, - - { 213, 855 }, { 214, 855 }, { 215, 855 }, { 216, 855 }, { 217, 855 }, - { 218, 855 }, { 219, 855 }, { 220, 855 }, { 221, 855 }, { 222, 855 }, - { 223, 855 }, { 224, 855 }, { 225, 855 }, { 226, 855 }, { 227, 855 }, - { 228, 855 }, { 229, 855 }, { 230, 855 }, { 231, 855 }, { 232, 855 }, - { 233, 855 }, { 234, 855 }, { 235, 855 }, { 236, 855 }, { 237, 855 }, - { 238, 855 }, { 239, 855 }, { 240, 855 }, { 241, 855 }, { 242, 855 }, - { 243, 855 }, { 244, 855 }, { 245, 855 }, { 246, 855 }, { 247, 855 }, - { 248, 855 }, { 249, 855 }, { 250, 855 }, { 251, 855 }, { 252, 855 }, - { 253, 855 }, { 254, 855 }, { 255, 855 }, { 256, 855 }, { 0, 0 }, - { 0,30555 }, { 1, 633 }, { 2, 633 }, { 3, 633 }, { 4, 633 }, - - { 5, 633 }, { 6, 633 }, { 7, 633 }, { 8, 633 }, { 9, 633 }, - { 10, 635 }, { 11, 633 }, { 12, 633 }, { 13, 633 }, { 14, 633 }, - { 15, 633 }, { 16, 633 }, { 17, 633 }, { 18, 633 }, { 19, 633 }, - { 20, 633 }, { 21, 633 }, { 22, 633 }, { 23, 633 }, { 24, 633 }, - { 25, 633 }, { 26, 633 }, { 27, 633 }, { 28, 633 }, { 29, 633 }, - { 30, 633 }, { 31, 633 }, { 32, 633 }, { 33, 633 }, { 34, 633 }, - { 35, 633 }, { 36, 633 }, { 37, 633 }, { 38, 633 }, { 39, 633 }, - { 40, 633 }, { 41, 633 }, { 42, 633 }, { 43, 633 }, { 44, 633 }, - { 45, 633 }, { 46, 633 }, { 47, 633 }, { 48, 633 }, { 49, 633 }, - { 50, 633 }, { 51, 633 }, { 52, 633 }, { 53, 633 }, { 54, 633 }, - - { 55, 633 }, { 56, 633 }, { 57, 633 }, { 58, 633 }, { 59, 633 }, - { 60, 633 }, { 61, 633 }, { 62, 633 }, { 63, 633 }, { 64, 633 }, - { 65, 633 }, { 66, 633 }, { 67, 633 }, { 68, 633 }, { 69, 633 }, - { 70, 633 }, { 71, 633 }, { 72, 633 }, { 73, 633 }, { 74, 633 }, - { 75, 633 }, { 76, 633 }, { 77, 633 }, { 78, 633 }, { 79, 633 }, - { 80, 633 }, { 81, 633 }, { 82, 633 }, { 83, 633 }, { 84, 633 }, - { 85, 633 }, { 86, 633 }, { 87, 633 }, { 88, 633 }, { 89, 633 }, - { 90, 633 }, { 91, 633 }, { 92, 637 }, { 93, 633 }, { 94, 633 }, - { 95, 633 }, { 96, 633 }, { 97, 633 }, { 98, 633 }, { 99, 633 }, - { 100, 633 }, { 101, 633 }, { 102, 633 }, { 103, 633 }, { 104, 633 }, - - { 105, 633 }, { 106, 633 }, { 107, 633 }, { 108, 633 }, { 109, 633 }, - { 110, 633 }, { 111, 633 }, { 112, 633 }, { 113, 633 }, { 114, 633 }, - { 115, 633 }, { 116, 633 }, { 117, 633 }, { 118, 633 }, { 119, 633 }, - { 120, 633 }, { 121, 633 }, { 122, 633 }, { 123, 633 }, { 124, 633 }, - { 125, 633 }, { 126, 633 }, { 127, 633 }, { 128, 633 }, { 129, 633 }, - { 130, 633 }, { 131, 633 }, { 132, 633 }, { 133, 633 }, { 134, 633 }, - { 135, 633 }, { 136, 633 }, { 137, 633 }, { 138, 633 }, { 139, 633 }, - { 140, 633 }, { 141, 633 }, { 142, 633 }, { 143, 633 }, { 144, 633 }, - { 145, 633 }, { 146, 633 }, { 147, 633 }, { 148, 633 }, { 149, 633 }, - { 150, 633 }, { 151, 633 }, { 152, 633 }, { 153, 633 }, { 154, 633 }, - - { 155, 633 }, { 156, 633 }, { 157, 633 }, { 158, 633 }, { 159, 633 }, - { 160, 633 }, { 161, 633 }, { 162, 633 }, { 163, 633 }, { 164, 633 }, - { 165, 633 }, { 166, 633 }, { 167, 633 }, { 168, 633 }, { 169, 633 }, - { 170, 633 }, { 171, 633 }, { 172, 633 }, { 173, 633 }, { 174, 633 }, - { 175, 633 }, { 176, 633 }, { 177, 633 }, { 178, 633 }, { 179, 633 }, - { 180, 633 }, { 181, 633 }, { 182, 633 }, { 183, 633 }, { 184, 633 }, - { 185, 633 }, { 186, 633 }, { 187, 633 }, { 188, 633 }, { 189, 633 }, - { 190, 633 }, { 191, 633 }, { 192, 633 }, { 193, 633 }, { 194, 633 }, - { 195, 633 }, { 196, 633 }, { 197, 633 }, { 198, 633 }, { 199, 633 }, - { 200, 633 }, { 201, 633 }, { 202, 633 }, { 203, 633 }, { 204, 633 }, - - { 205, 633 }, { 206, 633 }, { 207, 633 }, { 208, 633 }, { 209, 633 }, - { 210, 633 }, { 211, 633 }, { 212, 633 }, { 213, 633 }, { 214, 633 }, - { 215, 633 }, { 216, 633 }, { 217, 633 }, { 218, 633 }, { 219, 633 }, - { 220, 633 }, { 221, 633 }, { 222, 633 }, { 223, 633 }, { 224, 633 }, - { 225, 633 }, { 226, 633 }, { 227, 633 }, { 228, 633 }, { 229, 633 }, - { 230, 633 }, { 231, 633 }, { 232, 633 }, { 233, 633 }, { 234, 633 }, - { 235, 633 }, { 236, 633 }, { 237, 633 }, { 238, 633 }, { 239, 633 }, - { 240, 633 }, { 241, 633 }, { 242, 633 }, { 243, 633 }, { 244, 633 }, - { 245, 633 }, { 246, 633 }, { 247, 633 }, { 248, 633 }, { 249, 633 }, - { 250, 633 }, { 251, 633 }, { 252, 633 }, { 253, 633 }, { 254, 633 }, - - { 255, 633 }, { 256, 633 }, { 0, 0 }, { 0,30297 }, { 1, 375 }, - { 2, 375 }, { 3, 375 }, { 4, 375 }, { 5, 375 }, { 6, 375 }, - { 7, 375 }, { 8, 375 }, { 9, 375 }, { 10, 377 }, { 11, 375 }, - { 12, 375 }, { 13, 375 }, { 14, 375 }, { 15, 375 }, { 16, 375 }, - { 17, 375 }, { 18, 375 }, { 19, 375 }, { 20, 375 }, { 21, 375 }, - { 22, 375 }, { 23, 375 }, { 24, 375 }, { 25, 375 }, { 26, 375 }, - { 27, 375 }, { 28, 375 }, { 29, 375 }, { 30, 375 }, { 31, 375 }, - { 32, 375 }, { 33, 375 }, { 34, 375 }, { 35, 375 }, { 36, 375 }, - { 37, 375 }, { 38, 375 }, { 39, 375 }, { 40, 375 }, { 41, 375 }, - { 42, 375 }, { 43, 375 }, { 44, 375 }, { 45, 375 }, { 46, 375 }, - - { 47, 375 }, { 48, 375 }, { 49, 375 }, { 50, 375 }, { 51, 375 }, - { 52, 375 }, { 53, 375 }, { 54, 375 }, { 55, 375 }, { 56, 375 }, - { 57, 375 }, { 58, 375 }, { 59, 375 }, { 60, 375 }, { 61, 375 }, - { 62, 375 }, { 63, 375 }, { 64, 375 }, { 65, 375 }, { 66, 375 }, - { 67, 375 }, { 68, 375 }, { 69, 375 }, { 70, 375 }, { 71, 375 }, - { 72, 375 }, { 73, 375 }, { 74, 375 }, { 75, 375 }, { 76, 375 }, - { 77, 375 }, { 78, 375 }, { 79, 375 }, { 80, 375 }, { 81, 375 }, - { 82, 375 }, { 83, 375 }, { 84, 375 }, { 85, 375 }, { 86, 375 }, - { 87, 375 }, { 88, 375 }, { 89, 375 }, { 90, 375 }, { 91, 375 }, - { 92, 379 }, { 93, 375 }, { 94, 375 }, { 95, 375 }, { 96, 375 }, - - { 97, 375 }, { 98, 375 }, { 99, 375 }, { 100, 375 }, { 101, 375 }, - { 102, 375 }, { 103, 375 }, { 104, 375 }, { 105, 375 }, { 106, 375 }, - { 107, 375 }, { 108, 375 }, { 109, 375 }, { 110, 375 }, { 111, 375 }, - { 112, 375 }, { 113, 375 }, { 114, 375 }, { 115, 375 }, { 116, 375 }, - { 117, 375 }, { 118, 375 }, { 119, 375 }, { 120, 375 }, { 121, 375 }, - { 122, 375 }, { 123, 375 }, { 124, 375 }, { 125, 375 }, { 126, 375 }, - { 127, 375 }, { 128, 375 }, { 129, 375 }, { 130, 375 }, { 131, 375 }, - { 132, 375 }, { 133, 375 }, { 134, 375 }, { 135, 375 }, { 136, 375 }, - { 137, 375 }, { 138, 375 }, { 139, 375 }, { 140, 375 }, { 141, 375 }, - { 142, 375 }, { 143, 375 }, { 144, 375 }, { 145, 375 }, { 146, 375 }, - - { 147, 375 }, { 148, 375 }, { 149, 375 }, { 150, 375 }, { 151, 375 }, - { 152, 375 }, { 153, 375 }, { 154, 375 }, { 155, 375 }, { 156, 375 }, - { 157, 375 }, { 158, 375 }, { 159, 375 }, { 160, 375 }, { 161, 375 }, - { 162, 375 }, { 163, 375 }, { 164, 375 }, { 165, 375 }, { 166, 375 }, - { 167, 375 }, { 168, 375 }, { 169, 375 }, { 170, 375 }, { 171, 375 }, - { 172, 375 }, { 173, 375 }, { 174, 375 }, { 175, 375 }, { 176, 375 }, - { 177, 375 }, { 178, 375 }, { 179, 375 }, { 180, 375 }, { 181, 375 }, - { 182, 375 }, { 183, 375 }, { 184, 375 }, { 185, 375 }, { 186, 375 }, - { 187, 375 }, { 188, 375 }, { 189, 375 }, { 190, 375 }, { 191, 375 }, - { 192, 375 }, { 193, 375 }, { 194, 375 }, { 195, 375 }, { 196, 375 }, - - { 197, 375 }, { 198, 375 }, { 199, 375 }, { 200, 375 }, { 201, 375 }, - { 202, 375 }, { 203, 375 }, { 204, 375 }, { 205, 375 }, { 206, 375 }, - { 207, 375 }, { 208, 375 }, { 209, 375 }, { 210, 375 }, { 211, 375 }, - { 212, 375 }, { 213, 375 }, { 214, 375 }, { 215, 375 }, { 216, 375 }, - { 217, 375 }, { 218, 375 }, { 219, 375 }, { 220, 375 }, { 221, 375 }, - { 222, 375 }, { 223, 375 }, { 224, 375 }, { 225, 375 }, { 226, 375 }, - { 227, 375 }, { 228, 375 }, { 229, 375 }, { 230, 375 }, { 231, 375 }, - { 232, 375 }, { 233, 375 }, { 234, 375 }, { 235, 375 }, { 236, 375 }, - { 237, 375 }, { 238, 375 }, { 239, 375 }, { 240, 375 }, { 241, 375 }, - { 242, 375 }, { 243, 375 }, { 244, 375 }, { 245, 375 }, { 246, 375 }, - - { 247, 375 }, { 248, 375 }, { 249, 375 }, { 250, 375 }, { 251, 375 }, - { 252, 375 }, { 253, 375 }, { 254, 375 }, { 255, 375 }, { 256, 375 }, - { 0, 79 }, { 0,30039 }, { 0, 1 }, { 0,30037 }, { 0, 49 }, - { 0,30035 }, { 0, 0 }, { 0, 1 }, { 0,30032 }, { 0, 70 }, - { 0,30030 }, { 0, 0 }, { 9,5515 }, { 10,5515 }, { 0, 0 }, - { 12,5515 }, { 13,5515 }, { 9,5510 }, { 10,5510 }, { 0, 0 }, - { 12,5510 }, { 13,5510 }, { 0, 19 }, { 0,30017 }, { 0, 69 }, - { 0,30015 }, { 0, 0 }, { 0, 69 }, { 0,30012 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 0, 6 }, { 0,30007 }, { 0, 0 }, - { 32,5515 }, { 0, 6 }, { 0,30003 }, { 0, 0 }, { 0, 0 }, - - { 32,5510 }, { 0, 51 }, { 0,29998 }, { 33,5510 }, { 0, 0 }, - { 35,5510 }, { 0, 0 }, { 37,5510 }, { 38,5510 }, { 0, 70 }, - { 0,29990 }, { 0, 0 }, { 42,5510 }, { 43,5510 }, { 0, 0 }, - { 45,5510 }, { 0, 0 }, { 47,5510 }, { 0, 0 }, { 0, 52 }, - { 0,29980 }, { 0, 54 }, { 0,29978 }, { 0, 54 }, { 0,29976 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 60,5510 }, { 61,5550 }, { 62,5510 }, { 63,5510 }, { 64,5510 }, - { 42, 408 }, { 34, 420 }, { 0, 54 }, { 0,29962 }, { 42,7294 }, - { 47, 410 }, { 0, 27 }, { 0,29958 }, { 33,5470 }, { 0, 0 }, - { 35,5470 }, { 58, 100 }, { 37,5470 }, { 38,5470 }, { 61, 102 }, - - { 0, 0 }, { 0, 0 }, { 42,5470 }, { 43,5470 }, { 34, 402 }, - { 45,5470 }, { 0, 0 }, { 47,5470 }, { 0, 0 }, { 0, 27 }, - { 0,29940 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 94,5510 }, - { 0, 0 }, { 96,5510 }, { 0, 27 }, { 0,29932 }, { 45,9179 }, - { 60,5470 }, { 61,5470 }, { 62,5470 }, { 63,5470 }, { 64,5470 }, - { 0, 79 }, { 0,29924 }, { 0, 35 }, { 0,29922 }, { 0, 36 }, - { 0,29920 }, { 0, 35 }, { 0,29918 }, { 0, 43 }, { 0,29916 }, - { 0, 62 }, { 0,29914 }, { 0, 61 }, { 0,29912 }, { 0, 63 }, - { 0,29910 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 124,5510 }, - { 0, 0 }, { 126,5510 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 94,5470 }, - { 45,9456 }, { 96,5470 }, { 69, 465 }, { 0, 78 }, { 0,29891 }, - { 0, 8 }, { 0,29889 }, { 36, 8 }, { 0, 20 }, { 0,29886 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 48,5461 }, - { 49,5461 }, { 50,5461 }, { 51,5461 }, { 52,5461 }, { 53,5461 }, - { 54,5461 }, { 55,5461 }, { 56,5461 }, { 57,5461 }, { 124,5470 }, - { 0, 0 }, { 126,5470 }, { 69, 447 }, { 0, 0 }, { 101, 465 }, - { 0, 0 }, { 65,5523 }, { 66,5523 }, { 67,5523 }, { 68,5523 }, - { 69,5523 }, { 70,5523 }, { 71,5523 }, { 72,5523 }, { 73,5523 }, - - { 74,5523 }, { 75,5523 }, { 76,5523 }, { 77,5523 }, { 78,5523 }, - { 79,5523 }, { 80,5523 }, { 81,5523 }, { 82,5523 }, { 83,5523 }, - { 84,5523 }, { 85,5523 }, { 86,5523 }, { 87,5523 }, { 88,5523 }, - { 89,5523 }, { 90,5523 }, { 85,9692 }, { 0, 0 }, { 101, 447 }, - { 0, 0 }, { 95,5523 }, { 63, 0 }, { 97,5523 }, { 98,5523 }, - { 99,5523 }, { 100,5523 }, { 101,5523 }, { 102,5523 }, { 103,5523 }, - { 104,5523 }, { 105,5523 }, { 106,5523 }, { 107,5523 }, { 108,5523 }, - { 109,5523 }, { 110,5523 }, { 111,5523 }, { 112,5523 }, { 113,5523 }, - { 114,5523 }, { 115,5523 }, { 116,5523 }, { 117,5523 }, { 118,5523 }, - { 119,5523 }, { 120,5523 }, { 121,5523 }, { 122,5523 }, { 117,9715 }, - - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 128,5523 }, - { 129,5523 }, { 130,5523 }, { 131,5523 }, { 132,5523 }, { 133,5523 }, - { 134,5523 }, { 135,5523 }, { 136,5523 }, { 137,5523 }, { 138,5523 }, - { 139,5523 }, { 140,5523 }, { 141,5523 }, { 142,5523 }, { 143,5523 }, - { 144,5523 }, { 145,5523 }, { 146,5523 }, { 147,5523 }, { 148,5523 }, - { 149,5523 }, { 150,5523 }, { 151,5523 }, { 152,5523 }, { 153,5523 }, - { 154,5523 }, { 155,5523 }, { 156,5523 }, { 157,5523 }, { 158,5523 }, - { 159,5523 }, { 160,5523 }, { 161,5523 }, { 162,5523 }, { 163,5523 }, - { 164,5523 }, { 165,5523 }, { 166,5523 }, { 167,5523 }, { 168,5523 }, - { 169,5523 }, { 170,5523 }, { 171,5523 }, { 172,5523 }, { 173,5523 }, - - { 174,5523 }, { 175,5523 }, { 176,5523 }, { 177,5523 }, { 178,5523 }, - { 179,5523 }, { 180,5523 }, { 181,5523 }, { 182,5523 }, { 183,5523 }, - { 184,5523 }, { 185,5523 }, { 186,5523 }, { 187,5523 }, { 188,5523 }, - { 189,5523 }, { 190,5523 }, { 191,5523 }, { 192,5523 }, { 193,5523 }, - { 194,5523 }, { 195,5523 }, { 196,5523 }, { 197,5523 }, { 198,5523 }, - { 199,5523 }, { 200,5523 }, { 201,5523 }, { 202,5523 }, { 203,5523 }, - { 204,5523 }, { 205,5523 }, { 206,5523 }, { 207,5523 }, { 208,5523 }, - { 209,5523 }, { 210,5523 }, { 211,5523 }, { 212,5523 }, { 213,5523 }, - { 214,5523 }, { 215,5523 }, { 216,5523 }, { 217,5523 }, { 218,5523 }, - { 219,5523 }, { 220,5523 }, { 221,5523 }, { 222,5523 }, { 223,5523 }, - - { 224,5523 }, { 225,5523 }, { 226,5523 }, { 227,5523 }, { 228,5523 }, - { 229,5523 }, { 230,5523 }, { 231,5523 }, { 232,5523 }, { 233,5523 }, - { 234,5523 }, { 235,5523 }, { 236,5523 }, { 237,5523 }, { 238,5523 }, - { 239,5523 }, { 240,5523 }, { 241,5523 }, { 242,5523 }, { 243,5523 }, - { 244,5523 }, { 245,5523 }, { 246,5523 }, { 247,5523 }, { 248,5523 }, - { 249,5523 }, { 250,5523 }, { 251,5523 }, { 252,5523 }, { 253,5523 }, - { 254,5523 }, { 255,5523 }, { 0, 69 }, { 0,29667 }, { 0, 60 }, - { 0,29665 }, { 0, 18 }, { 0,29663 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 69 }, { 0,29656 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 59 }, { 0,29651 }, - - { 0, 15 }, { 0,29649 }, { 0, 0 }, { 0, 10 }, { 0,29646 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 0, 69 }, { 0,29637 }, { 0, 0 }, - { 0, 0 }, { 33,5147 }, { 0, 0 }, { 35,5147 }, { 0, 0 }, - { 37,5147 }, { 38,5147 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 42,5147 }, { 43,5147 }, { 33,5136 }, { 45,5147 }, { 35,5136 }, - { 47,5147 }, { 37,5136 }, { 38,5136 }, { 34, 170 }, { 0, 0 }, - { 0, 0 }, { 42,5136 }, { 43,5136 }, { 39, 172 }, { 45,5512 }, - { 0, 0 }, { 47,5136 }, { 0, 0 }, { 60,5147 }, { 61,5147 }, - { 62,5147 }, { 63,5147 }, { 64,5147 }, { 63,-226 }, { 45,10420 }, - - { 0, 7 }, { 0,29599 }, { 0, 4 }, { 0,29597 }, { 60,5136 }, - { 61,5136 }, { 62,5136 }, { 63,5136 }, { 64,5136 }, { 46,-277 }, - { 0, 0 }, { 48,5751 }, { 49,5751 }, { 50,5751 }, { 51,5751 }, - { 52,5751 }, { 53,5751 }, { 54,5751 }, { 55,5751 }, { 56,5751 }, - { 57,5751 }, { 0, 57 }, { 0,29578 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 94,5147 }, { 0, 0 }, { 96,5147 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 69 }, { 0,29566 }, - { 0, 72 }, { 0,29564 }, { 0, 0 }, { 94,5136 }, { 0, 0 }, - { 96,5136 }, { 0, 0 }, { 0, 0 }, { 42, 0 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 47, 2 }, { 0, 0 }, - - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 17 }, { 0,29546 }, - { 0, 30 }, { 0,29544 }, { 124,5147 }, { 0, 0 }, { 126,5147 }, - { 0, 23 }, { 0,29539 }, { 0, 38 }, { 0,29537 }, { 0, 45 }, - { 0,29535 }, { 0, 0 }, { 33,5046 }, { 124,5136 }, { 35,5046 }, - { 126,5136 }, { 37,5046 }, { 38,5046 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 42,5705 }, { 43,5046 }, { 0, 0 }, { 45,5046 }, - { 0, 0 }, { 47,5046 }, { 46,5705 }, { 0, 0 }, { 48,5769 }, - { 49,5769 }, { 50,5769 }, { 51,5769 }, { 52,5769 }, { 53,5769 }, - { 54,5769 }, { 55,5769 }, { 56,5769 }, { 57,5769 }, { 60,5046 }, - { 61,5046 }, { 62,5046 }, { 63,5046 }, { 64,5046 }, { 45,10706 }, - - { 0, 69 }, { 0,29499 }, { 0, 55 }, { 0,29497 }, { 0, 0 }, - { 69,5791 }, { 45,11004 }, { 0, 25 }, { 0,29492 }, { 0, 0 }, - { 0, 0 }, { 0, 69 }, { 0,29488 }, { 0, 0 }, { 0, 28 }, - { 0,29485 }, { 0, 74 }, { 0,29483 }, { 0, 50 }, { 0,29481 }, - { 0, 21 }, { 0,29479 }, { 0, 14 }, { 0,29477 }, { 0, 10 }, - { 0,29475 }, { 0, 13 }, { 0,29473 }, { 94,5046 }, { 0, 0 }, - { 96,5046 }, { 0, 17 }, { 0,29468 }, { 0, 0 }, { 33,4979 }, - { 0, 0 }, { 35,4979 }, { 101,5791 }, { 37,4979 }, { 38,4979 }, - { 0, 41 }, { 0,29459 }, { 0, 0 }, { 42,4979 }, { 43,4979 }, - { 33,4968 }, { 45,4979 }, { 35,4968 }, { 47,4979 }, { 37,4968 }, - - { 38,4968 }, { 0, 0 }, { 0, 0 }, { 45,11918 }, { 42,4968 }, - { 43,4968 }, { 0, 0 }, { 45,4968 }, { 124,5046 }, { 47,4968 }, - { 126,5046 }, { 60,4979 }, { 61,5766 }, { 62,5807 }, { 63,4979 }, - { 64,4979 }, { 0, 0 }, { 0, 23 }, { 0,29432 }, { 0, 0 }, - { 45,12544 }, { 0, 0 }, { 60,4968 }, { 61,4968 }, { 62,5863 }, - { 63,4968 }, { 64,4968 }, { 45,13569 }, { 0, 69 }, { 0,29421 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 83, 100 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 94,4979 }, { 0, 0 }, { 96,4979 }, { 83, 377 }, { 0, 0 }, - - { 0, 0 }, { 0, 0 }, { 0, 55 }, { 0,29397 }, { 0, 25 }, - { 0,29395 }, { 94,4968 }, { 0, 0 }, { 96,4968 }, { 0, 0 }, - { 0, 78 }, { 0,29389 }, { 33,4901 }, { 45,14565 }, { 35,4901 }, - { 0, 0 }, { 37,4901 }, { 38,4901 }, { 115, 100 }, { 0, 0 }, - { 0, 0 }, { 42,4901 }, { 43,4901 }, { 0, 0 }, { 45,4901 }, - { 124,4979 }, { 47,4901 }, { 126,4979 }, { 0, 0 }, { 0, 0 }, - { 115, 377 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 124,4968 }, { 0, 0 }, { 126,4968 }, { 60,4901 }, - { 61,5807 }, { 62,4901 }, { 63,4901 }, { 64,4901 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 36,5855 }, { 0, 0 }, { 0, 0 }, - - { 45,15687 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 48,5855 }, - { 49,5855 }, { 50,5855 }, { 51,5855 }, { 52,5855 }, { 53,5855 }, - { 54,5855 }, { 55,5855 }, { 56,5855 }, { 57,5855 }, { 0, 0 }, - { 67, 548 }, { 0, 0 }, { 0, 0 }, { 94,4901 }, { 63,-502 }, - { 96,4901 }, { 65,5855 }, { 66,5855 }, { 67,5855 }, { 68,5855 }, - { 69,5855 }, { 70,5855 }, { 71,5855 }, { 72,5855 }, { 73,5855 }, - { 74,5855 }, { 75,5855 }, { 76,5855 }, { 77,5855 }, { 78,5855 }, - { 79,5855 }, { 80,5855 }, { 81,5855 }, { 82,5855 }, { 83,5855 }, - { 84,5855 }, { 85,5855 }, { 86,5855 }, { 87,5855 }, { 88,5855 }, - - { 89,5855 }, { 90,5855 }, { 99, 548 }, { 124,4901 }, { 0, 0 }, - { 126,4901 }, { 95,5855 }, { 0, 0 }, { 97,5855 }, { 98,5855 }, - { 99,5855 }, { 100,5855 }, { 101,5855 }, { 102,5855 }, { 103,5855 }, - { 104,5855 }, { 105,5855 }, { 106,5855 }, { 107,5855 }, { 108,5855 }, - { 109,5855 }, { 110,5855 }, { 111,5855 }, { 112,5855 }, { 113,5855 }, - { 114,5855 }, { 115,5855 }, { 116,5855 }, { 117,5855 }, { 118,5855 }, - { 119,5855 }, { 120,5855 }, { 121,5855 }, { 122,5855 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 128,5855 }, - { 129,5855 }, { 130,5855 }, { 131,5855 }, { 132,5855 }, { 133,5855 }, - { 134,5855 }, { 135,5855 }, { 136,5855 }, { 137,5855 }, { 138,5855 }, - - { 139,5855 }, { 140,5855 }, { 141,5855 }, { 142,5855 }, { 143,5855 }, - { 144,5855 }, { 145,5855 }, { 146,5855 }, { 147,5855 }, { 148,5855 }, - { 149,5855 }, { 150,5855 }, { 151,5855 }, { 152,5855 }, { 153,5855 }, - { 154,5855 }, { 155,5855 }, { 156,5855 }, { 157,5855 }, { 158,5855 }, - { 159,5855 }, { 160,5855 }, { 161,5855 }, { 162,5855 }, { 163,5855 }, - { 164,5855 }, { 165,5855 }, { 166,5855 }, { 167,5855 }, { 168,5855 }, - { 169,5855 }, { 170,5855 }, { 171,5855 }, { 172,5855 }, { 173,5855 }, - { 174,5855 }, { 175,5855 }, { 176,5855 }, { 177,5855 }, { 178,5855 }, - { 179,5855 }, { 180,5855 }, { 181,5855 }, { 182,5855 }, { 183,5855 }, - { 184,5855 }, { 185,5855 }, { 186,5855 }, { 187,5855 }, { 188,5855 }, - - { 189,5855 }, { 190,5855 }, { 191,5855 }, { 192,5855 }, { 193,5855 }, - { 194,5855 }, { 195,5855 }, { 196,5855 }, { 197,5855 }, { 198,5855 }, - { 199,5855 }, { 200,5855 }, { 201,5855 }, { 202,5855 }, { 203,5855 }, - { 204,5855 }, { 205,5855 }, { 206,5855 }, { 207,5855 }, { 208,5855 }, - { 209,5855 }, { 210,5855 }, { 211,5855 }, { 212,5855 }, { 213,5855 }, - { 214,5855 }, { 215,5855 }, { 216,5855 }, { 217,5855 }, { 218,5855 }, - { 219,5855 }, { 220,5855 }, { 221,5855 }, { 222,5855 }, { 223,5855 }, - { 224,5855 }, { 225,5855 }, { 226,5855 }, { 227,5855 }, { 228,5855 }, - { 229,5855 }, { 230,5855 }, { 231,5855 }, { 232,5855 }, { 233,5855 }, - { 234,5855 }, { 235,5855 }, { 236,5855 }, { 237,5855 }, { 238,5855 }, - - { 239,5855 }, { 240,5855 }, { 241,5855 }, { 242,5855 }, { 243,5855 }, - { 244,5855 }, { 245,5855 }, { 246,5855 }, { 247,5855 }, { 248,5855 }, - { 249,5855 }, { 250,5855 }, { 251,5855 }, { 252,5855 }, { 253,5855 }, - { 254,5855 }, { 255,5855 }, { 0, 78 }, { 0,29132 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 0, 28 }, { 0,29108 }, { 0, 39 }, { 0,29106 }, - { 0, 40 }, { 0,29104 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 36,5598 }, - { 0, 0 }, { 0, 0 }, { 39,-757 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 48,5598 }, { 49,5598 }, { 50,5598 }, { 51,5598 }, - { 52,5598 }, { 53,5598 }, { 54,5598 }, { 55,5598 }, { 56,5598 }, - { 57,5598 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 63,-759 }, { 0, 0 }, { 65,5598 }, { 66,5598 }, - { 67,5598 }, { 68,5598 }, { 69,5598 }, { 70,5598 }, { 71,5598 }, - { 72,5598 }, { 73,5598 }, { 74,5598 }, { 75,5598 }, { 76,5598 }, - { 77,5598 }, { 78,5598 }, { 79,5598 }, { 80,5598 }, { 81,5598 }, - - { 82,5598 }, { 83,5598 }, { 84,5598 }, { 85,5598 }, { 86,5598 }, - { 87,5598 }, { 88,5598 }, { 89,5598 }, { 90,5598 }, { 67, 261 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 95,5598 }, { 0, 0 }, - { 97,5598 }, { 98,5598 }, { 99,5598 }, { 100,5598 }, { 101,5598 }, - { 102,5598 }, { 103,5598 }, { 104,5598 }, { 105,5598 }, { 106,5598 }, - { 107,5598 }, { 108,5598 }, { 109,5598 }, { 110,5598 }, { 111,5598 }, - { 112,5598 }, { 113,5598 }, { 114,5598 }, { 115,5598 }, { 116,5598 }, - { 117,5598 }, { 118,5598 }, { 119,5598 }, { 120,5598 }, { 121,5598 }, - { 122,5598 }, { 99, 261 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 128,5598 }, { 129,5598 }, { 130,5598 }, { 131,5598 }, - - { 132,5598 }, { 133,5598 }, { 134,5598 }, { 135,5598 }, { 136,5598 }, - { 137,5598 }, { 138,5598 }, { 139,5598 }, { 140,5598 }, { 141,5598 }, - { 142,5598 }, { 143,5598 }, { 144,5598 }, { 145,5598 }, { 146,5598 }, - { 147,5598 }, { 148,5598 }, { 149,5598 }, { 150,5598 }, { 151,5598 }, - { 152,5598 }, { 153,5598 }, { 154,5598 }, { 155,5598 }, { 156,5598 }, - { 157,5598 }, { 158,5598 }, { 159,5598 }, { 160,5598 }, { 161,5598 }, - { 162,5598 }, { 163,5598 }, { 164,5598 }, { 165,5598 }, { 166,5598 }, - { 167,5598 }, { 168,5598 }, { 169,5598 }, { 170,5598 }, { 171,5598 }, - { 172,5598 }, { 173,5598 }, { 174,5598 }, { 175,5598 }, { 176,5598 }, - { 177,5598 }, { 178,5598 }, { 179,5598 }, { 180,5598 }, { 181,5598 }, - - { 182,5598 }, { 183,5598 }, { 184,5598 }, { 185,5598 }, { 186,5598 }, - { 187,5598 }, { 188,5598 }, { 189,5598 }, { 190,5598 }, { 191,5598 }, - { 192,5598 }, { 193,5598 }, { 194,5598 }, { 195,5598 }, { 196,5598 }, - { 197,5598 }, { 198,5598 }, { 199,5598 }, { 200,5598 }, { 201,5598 }, - { 202,5598 }, { 203,5598 }, { 204,5598 }, { 205,5598 }, { 206,5598 }, - { 207,5598 }, { 208,5598 }, { 209,5598 }, { 210,5598 }, { 211,5598 }, - { 212,5598 }, { 213,5598 }, { 214,5598 }, { 215,5598 }, { 216,5598 }, - { 217,5598 }, { 218,5598 }, { 219,5598 }, { 220,5598 }, { 221,5598 }, - { 222,5598 }, { 223,5598 }, { 224,5598 }, { 225,5598 }, { 226,5598 }, - { 227,5598 }, { 228,5598 }, { 229,5598 }, { 230,5598 }, { 231,5598 }, - - { 232,5598 }, { 233,5598 }, { 234,5598 }, { 235,5598 }, { 236,5598 }, - { 237,5598 }, { 238,5598 }, { 239,5598 }, { 240,5598 }, { 241,5598 }, - { 242,5598 }, { 243,5598 }, { 244,5598 }, { 245,5598 }, { 246,5598 }, - { 247,5598 }, { 248,5598 }, { 249,5598 }, { 250,5598 }, { 251,5598 }, - { 252,5598 }, { 253,5598 }, { 254,5598 }, { 255,5598 }, { 0, 78 }, - { 0,28875 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - - { 0, 55 }, { 0,28849 }, { 0, 28 }, { 0,28847 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 36,5341 }, { 0, 0 }, { 0, 0 }, { 39,-1011 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 48,5341 }, { 49,5341 }, - { 50,5341 }, { 51,5341 }, { 52,5341 }, { 53,5341 }, { 54,5341 }, - { 55,5341 }, { 56,5341 }, { 57,5341 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 63,-790 }, { 0, 0 }, - { 65,5341 }, { 66,5341 }, { 67,5341 }, { 68,5341 }, { 69,5341 }, - { 70,5341 }, { 71,5341 }, { 72,5341 }, { 73,5341 }, { 74,5341 }, - - { 75,5341 }, { 76,5341 }, { 77,5341 }, { 78,5341 }, { 79,5341 }, - { 80,5341 }, { 81,5341 }, { 82,5341 }, { 83,5341 }, { 84,5341 }, - { 85,5341 }, { 86,5341 }, { 87,5341 }, { 88,5341 }, { 89,5341 }, - { 90,5341 }, { 65, 242 }, { 0, 0 }, { 65, 242 }, { 0, 0 }, - { 95,5341 }, { 0, 0 }, { 97,5341 }, { 98,5341 }, { 99,5341 }, - { 100,5341 }, { 101,5341 }, { 102,5341 }, { 103,5341 }, { 104,5341 }, - { 105,5341 }, { 106,5341 }, { 107,5341 }, { 108,5341 }, { 109,5341 }, - { 110,5341 }, { 111,5341 }, { 112,5341 }, { 113,5341 }, { 114,5341 }, - { 115,5341 }, { 116,5341 }, { 117,5341 }, { 118,5341 }, { 119,5341 }, - { 120,5341 }, { 121,5341 }, { 122,5341 }, { 97, 242 }, { 0, 0 }, - - { 97, 242 }, { 0, 0 }, { 0, 0 }, { 128,5341 }, { 129,5341 }, - { 130,5341 }, { 131,5341 }, { 132,5341 }, { 133,5341 }, { 134,5341 }, - { 135,5341 }, { 136,5341 }, { 137,5341 }, { 138,5341 }, { 139,5341 }, - { 140,5341 }, { 141,5341 }, { 142,5341 }, { 143,5341 }, { 144,5341 }, - { 145,5341 }, { 146,5341 }, { 147,5341 }, { 148,5341 }, { 149,5341 }, - { 150,5341 }, { 151,5341 }, { 152,5341 }, { 153,5341 }, { 154,5341 }, - { 155,5341 }, { 156,5341 }, { 157,5341 }, { 158,5341 }, { 159,5341 }, - { 160,5341 }, { 161,5341 }, { 162,5341 }, { 163,5341 }, { 164,5341 }, - { 165,5341 }, { 166,5341 }, { 167,5341 }, { 168,5341 }, { 169,5341 }, - { 170,5341 }, { 171,5341 }, { 172,5341 }, { 173,5341 }, { 174,5341 }, - - { 175,5341 }, { 176,5341 }, { 177,5341 }, { 178,5341 }, { 179,5341 }, - { 180,5341 }, { 181,5341 }, { 182,5341 }, { 183,5341 }, { 184,5341 }, - { 185,5341 }, { 186,5341 }, { 187,5341 }, { 188,5341 }, { 189,5341 }, - { 190,5341 }, { 191,5341 }, { 192,5341 }, { 193,5341 }, { 194,5341 }, - { 195,5341 }, { 196,5341 }, { 197,5341 }, { 198,5341 }, { 199,5341 }, - { 200,5341 }, { 201,5341 }, { 202,5341 }, { 203,5341 }, { 204,5341 }, - { 205,5341 }, { 206,5341 }, { 207,5341 }, { 208,5341 }, { 209,5341 }, - { 210,5341 }, { 211,5341 }, { 212,5341 }, { 213,5341 }, { 214,5341 }, - { 215,5341 }, { 216,5341 }, { 217,5341 }, { 218,5341 }, { 219,5341 }, - { 220,5341 }, { 221,5341 }, { 222,5341 }, { 223,5341 }, { 224,5341 }, - - { 225,5341 }, { 226,5341 }, { 227,5341 }, { 228,5341 }, { 229,5341 }, - { 230,5341 }, { 231,5341 }, { 232,5341 }, { 233,5341 }, { 234,5341 }, - { 235,5341 }, { 236,5341 }, { 237,5341 }, { 238,5341 }, { 239,5341 }, - { 240,5341 }, { 241,5341 }, { 242,5341 }, { 243,5341 }, { 244,5341 }, - { 245,5341 }, { 246,5341 }, { 247,5341 }, { 248,5341 }, { 249,5341 }, - { 250,5341 }, { 251,5341 }, { 252,5341 }, { 253,5341 }, { 254,5341 }, - { 255,5341 }, { 0, 78 }, { 0,28618 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 0, 55 }, { 0,28607 }, { 0, 28 }, - { 0,28605 }, { 0, 33 }, { 0,28603 }, { 0, 0 }, { 0, 0 }, - - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 55 }, - { 0,28595 }, { 0, 28 }, { 0,28593 }, { 0, 34 }, { 0,28591 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 36,5084 }, { 0, 0 }, - { 0, 0 }, { 39,-1045 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 48,5084 }, { 49,5084 }, { 50,5084 }, { 51,5084 }, { 52,5084 }, - { 53,5084 }, { 54,5084 }, { 55,5084 }, { 56,5084 }, { 57,5084 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 63,-1273 }, { 0, 0 }, { 65,5084 }, { 66,5084 }, { 67,5084 }, - - { 68,5084 }, { 69,5084 }, { 70,5084 }, { 71,5084 }, { 72,5084 }, - { 73,5084 }, { 74,5084 }, { 75,5084 }, { 76,5084 }, { 77,5084 }, - { 78,5084 }, { 79,5084 }, { 80,5084 }, { 81,5084 }, { 82,5084 }, - { 83,5084 }, { 84,5084 }, { 85,5084 }, { 86,5084 }, { 87,5084 }, - { 88,5084 }, { 89,5084 }, { 90,5084 }, { 80, 12 }, { 69,21847 }, - { 80, 12 }, { 69,21869 }, { 95,5084 }, { 0, 0 }, { 97,5084 }, - { 98,5084 }, { 99,5084 }, { 100,5084 }, { 101,5084 }, { 102,5084 }, - { 103,5084 }, { 104,5084 }, { 105,5084 }, { 106,5084 }, { 107,5084 }, - { 108,5084 }, { 109,5084 }, { 110,5084 }, { 111,5084 }, { 112,5084 }, - { 113,5084 }, { 114,5084 }, { 115,5084 }, { 116,5084 }, { 117,5084 }, - - { 118,5084 }, { 119,5084 }, { 120,5084 }, { 121,5084 }, { 122,5084 }, - { 112, 12 }, { 101,21847 }, { 112, 12 }, { 101,21869 }, { 0, 0 }, - { 128,5084 }, { 129,5084 }, { 130,5084 }, { 131,5084 }, { 132,5084 }, - { 133,5084 }, { 134,5084 }, { 135,5084 }, { 136,5084 }, { 137,5084 }, - { 138,5084 }, { 139,5084 }, { 140,5084 }, { 141,5084 }, { 142,5084 }, - { 143,5084 }, { 144,5084 }, { 145,5084 }, { 146,5084 }, { 147,5084 }, - { 148,5084 }, { 149,5084 }, { 150,5084 }, { 151,5084 }, { 152,5084 }, - { 153,5084 }, { 154,5084 }, { 155,5084 }, { 156,5084 }, { 157,5084 }, - { 158,5084 }, { 159,5084 }, { 160,5084 }, { 161,5084 }, { 162,5084 }, - { 163,5084 }, { 164,5084 }, { 165,5084 }, { 166,5084 }, { 167,5084 }, - - { 168,5084 }, { 169,5084 }, { 170,5084 }, { 171,5084 }, { 172,5084 }, - { 173,5084 }, { 174,5084 }, { 175,5084 }, { 176,5084 }, { 177,5084 }, - { 178,5084 }, { 179,5084 }, { 180,5084 }, { 181,5084 }, { 182,5084 }, - { 183,5084 }, { 184,5084 }, { 185,5084 }, { 186,5084 }, { 187,5084 }, - { 188,5084 }, { 189,5084 }, { 190,5084 }, { 191,5084 }, { 192,5084 }, - { 193,5084 }, { 194,5084 }, { 195,5084 }, { 196,5084 }, { 197,5084 }, - { 198,5084 }, { 199,5084 }, { 200,5084 }, { 201,5084 }, { 202,5084 }, - { 203,5084 }, { 204,5084 }, { 205,5084 }, { 206,5084 }, { 207,5084 }, - { 208,5084 }, { 209,5084 }, { 210,5084 }, { 211,5084 }, { 212,5084 }, - { 213,5084 }, { 214,5084 }, { 215,5084 }, { 216,5084 }, { 217,5084 }, - - { 218,5084 }, { 219,5084 }, { 220,5084 }, { 221,5084 }, { 222,5084 }, - { 223,5084 }, { 224,5084 }, { 225,5084 }, { 226,5084 }, { 227,5084 }, - { 228,5084 }, { 229,5084 }, { 230,5084 }, { 231,5084 }, { 232,5084 }, - { 233,5084 }, { 234,5084 }, { 235,5084 }, { 236,5084 }, { 237,5084 }, - { 238,5084 }, { 239,5084 }, { 240,5084 }, { 241,5084 }, { 242,5084 }, - { 243,5084 }, { 244,5084 }, { 245,5084 }, { 246,5084 }, { 247,5084 }, - { 248,5084 }, { 249,5084 }, { 250,5084 }, { 251,5084 }, { 252,5084 }, - { 253,5084 }, { 254,5084 }, { 255,5084 }, { 0, 78 }, { 0,28361 }, - { 0, 55 }, { 0,28359 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - - { 0, 0 }, { 0, 28 }, { 0,28348 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 55 }, { 0,28341 }, - { 0, 28 }, { 0,28339 }, { 0, 56 }, { 0,28337 }, { 0, 29 }, - { 0,28335 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 36,4827 }, { 0, 0 }, { 38,-1290 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 45,22485 }, { 48,4827 }, { 49,4827 }, { 50,4827 }, - { 51,4827 }, { 52,4827 }, { 53,4827 }, { 54,4827 }, { 55,4827 }, - { 56,4827 }, { 57,4827 }, { 45,22732 }, { 39, 4 }, { 0, 0 }, - - { 39, 4 }, { 0, 0 }, { 63,-1530 }, { 0, 0 }, { 65,4827 }, - { 66,4827 }, { 67,4827 }, { 68,4827 }, { 69,4827 }, { 70,4827 }, - { 71,4827 }, { 72,4827 }, { 73,4827 }, { 74,4827 }, { 75,4827 }, - { 76,4827 }, { 77,4827 }, { 78,4827 }, { 79,4827 }, { 80,4827 }, - { 81,4827 }, { 82,4827 }, { 83,4827 }, { 84,4827 }, { 85,4827 }, - { 86,4827 }, { 87,4827 }, { 88,4827 }, { 89,4827 }, { 90,4827 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 95,4827 }, - { 0, 0 }, { 97,4827 }, { 98,4827 }, { 99,4827 }, { 100,4827 }, - { 101,4827 }, { 102,4827 }, { 103,4827 }, { 104,4827 }, { 105,4827 }, - { 106,4827 }, { 107,4827 }, { 108,4827 }, { 109,4827 }, { 110,4827 }, - - { 111,4827 }, { 112,4827 }, { 113,4827 }, { 114,4827 }, { 115,4827 }, - { 116,4827 }, { 117,4827 }, { 118,4827 }, { 119,4827 }, { 120,4827 }, - { 121,4827 }, { 122,4827 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 128,4827 }, { 129,4827 }, { 130,4827 }, - { 131,4827 }, { 132,4827 }, { 133,4827 }, { 134,4827 }, { 135,4827 }, - { 136,4827 }, { 137,4827 }, { 138,4827 }, { 139,4827 }, { 140,4827 }, - { 141,4827 }, { 142,4827 }, { 143,4827 }, { 144,4827 }, { 145,4827 }, - { 146,4827 }, { 147,4827 }, { 148,4827 }, { 149,4827 }, { 150,4827 }, - { 151,4827 }, { 152,4827 }, { 153,4827 }, { 154,4827 }, { 155,4827 }, - { 156,4827 }, { 157,4827 }, { 158,4827 }, { 159,4827 }, { 160,4827 }, - - { 161,4827 }, { 162,4827 }, { 163,4827 }, { 164,4827 }, { 165,4827 }, - { 166,4827 }, { 167,4827 }, { 168,4827 }, { 169,4827 }, { 170,4827 }, - { 171,4827 }, { 172,4827 }, { 173,4827 }, { 174,4827 }, { 175,4827 }, - { 176,4827 }, { 177,4827 }, { 178,4827 }, { 179,4827 }, { 180,4827 }, - { 181,4827 }, { 182,4827 }, { 183,4827 }, { 184,4827 }, { 185,4827 }, - { 186,4827 }, { 187,4827 }, { 188,4827 }, { 189,4827 }, { 190,4827 }, - { 191,4827 }, { 192,4827 }, { 193,4827 }, { 194,4827 }, { 195,4827 }, - { 196,4827 }, { 197,4827 }, { 198,4827 }, { 199,4827 }, { 200,4827 }, - { 201,4827 }, { 202,4827 }, { 203,4827 }, { 204,4827 }, { 205,4827 }, - { 206,4827 }, { 207,4827 }, { 208,4827 }, { 209,4827 }, { 210,4827 }, - - { 211,4827 }, { 212,4827 }, { 213,4827 }, { 214,4827 }, { 215,4827 }, - { 216,4827 }, { 217,4827 }, { 218,4827 }, { 219,4827 }, { 220,4827 }, - { 221,4827 }, { 222,4827 }, { 223,4827 }, { 224,4827 }, { 225,4827 }, - { 226,4827 }, { 227,4827 }, { 228,4827 }, { 229,4827 }, { 230,4827 }, - { 231,4827 }, { 232,4827 }, { 233,4827 }, { 234,4827 }, { 235,4827 }, - { 236,4827 }, { 237,4827 }, { 238,4827 }, { 239,4827 }, { 240,4827 }, - { 241,4827 }, { 242,4827 }, { 243,4827 }, { 244,4827 }, { 245,4827 }, - { 246,4827 }, { 247,4827 }, { 248,4827 }, { 249,4827 }, { 250,4827 }, - { 251,4827 }, { 252,4827 }, { 253,4827 }, { 254,4827 }, { 255,4827 }, - { 0, 78 }, { 0,28104 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 36,4570 }, { 0, 0 }, { 0, 0 }, - { 39,-1545 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 48,4570 }, - { 49,4570 }, { 50,4570 }, { 51,4570 }, { 52,4570 }, { 53,4570 }, - - { 54,4570 }, { 55,4570 }, { 56,4570 }, { 57,4570 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 63,-1787 }, - { 0, 0 }, { 65,4570 }, { 66,4570 }, { 67,4570 }, { 68,4570 }, - { 69,4570 }, { 70,4570 }, { 71,4570 }, { 72,4570 }, { 73,4570 }, - { 74,4570 }, { 75,4570 }, { 76,4570 }, { 77,4570 }, { 78,4570 }, - { 79,4570 }, { 80,4570 }, { 81,4570 }, { 82,4570 }, { 83,4570 }, - { 84,4570 }, { 85,4570 }, { 86,4570 }, { 87,4570 }, { 88,4570 }, - { 89,4570 }, { 90,4570 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 95,4570 }, { 0, 0 }, { 97,4570 }, { 98,4570 }, - { 99,4570 }, { 100,4570 }, { 101,4570 }, { 102,4570 }, { 103,4570 }, - - { 104,4570 }, { 105,4570 }, { 106,4570 }, { 107,4570 }, { 108,4570 }, - { 109,4570 }, { 110,4570 }, { 111,4570 }, { 112,4570 }, { 113,4570 }, - { 114,4570 }, { 115,4570 }, { 116,4570 }, { 117,4570 }, { 118,4570 }, - { 119,4570 }, { 120,4570 }, { 121,4570 }, { 122,4570 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 128,4570 }, - { 129,4570 }, { 130,4570 }, { 131,4570 }, { 132,4570 }, { 133,4570 }, - { 134,4570 }, { 135,4570 }, { 136,4570 }, { 137,4570 }, { 138,4570 }, - { 139,4570 }, { 140,4570 }, { 141,4570 }, { 142,4570 }, { 143,4570 }, - { 144,4570 }, { 145,4570 }, { 146,4570 }, { 147,4570 }, { 148,4570 }, - { 149,4570 }, { 150,4570 }, { 151,4570 }, { 152,4570 }, { 153,4570 }, - - { 154,4570 }, { 155,4570 }, { 156,4570 }, { 157,4570 }, { 158,4570 }, - { 159,4570 }, { 160,4570 }, { 161,4570 }, { 162,4570 }, { 163,4570 }, - { 164,4570 }, { 165,4570 }, { 166,4570 }, { 167,4570 }, { 168,4570 }, - { 169,4570 }, { 170,4570 }, { 171,4570 }, { 172,4570 }, { 173,4570 }, - { 174,4570 }, { 175,4570 }, { 176,4570 }, { 177,4570 }, { 178,4570 }, - { 179,4570 }, { 180,4570 }, { 181,4570 }, { 182,4570 }, { 183,4570 }, - { 184,4570 }, { 185,4570 }, { 186,4570 }, { 187,4570 }, { 188,4570 }, - { 189,4570 }, { 190,4570 }, { 191,4570 }, { 192,4570 }, { 193,4570 }, - { 194,4570 }, { 195,4570 }, { 196,4570 }, { 197,4570 }, { 198,4570 }, - { 199,4570 }, { 200,4570 }, { 201,4570 }, { 202,4570 }, { 203,4570 }, - - { 204,4570 }, { 205,4570 }, { 206,4570 }, { 207,4570 }, { 208,4570 }, - { 209,4570 }, { 210,4570 }, { 211,4570 }, { 212,4570 }, { 213,4570 }, - { 214,4570 }, { 215,4570 }, { 216,4570 }, { 217,4570 }, { 218,4570 }, - { 219,4570 }, { 220,4570 }, { 221,4570 }, { 222,4570 }, { 223,4570 }, - { 224,4570 }, { 225,4570 }, { 226,4570 }, { 227,4570 }, { 228,4570 }, - { 229,4570 }, { 230,4570 }, { 231,4570 }, { 232,4570 }, { 233,4570 }, - { 234,4570 }, { 235,4570 }, { 236,4570 }, { 237,4570 }, { 238,4570 }, - { 239,4570 }, { 240,4570 }, { 241,4570 }, { 242,4570 }, { 243,4570 }, - { 244,4570 }, { 245,4570 }, { 246,4570 }, { 247,4570 }, { 248,4570 }, - { 249,4570 }, { 250,4570 }, { 251,4570 }, { 252,4570 }, { 253,4570 }, - - { 254,4570 }, { 255,4570 }, { 0, 12 }, { 0,27847 }, { 1,4570 }, - { 2,4570 }, { 3,4570 }, { 4,4570 }, { 5,4570 }, { 6,4570 }, - { 7,4570 }, { 8,4570 }, { 9,4570 }, { 10,4570 }, { 11,4570 }, - { 12,4570 }, { 13,4570 }, { 14,4570 }, { 15,4570 }, { 16,4570 }, - { 17,4570 }, { 18,4570 }, { 19,4570 }, { 20,4570 }, { 21,4570 }, - { 22,4570 }, { 23,4570 }, { 24,4570 }, { 25,4570 }, { 26,4570 }, - { 27,4570 }, { 28,4570 }, { 29,4570 }, { 30,4570 }, { 31,4570 }, - { 32,4570 }, { 33,4570 }, { 34,4570 }, { 35,4570 }, { 36,4570 }, - { 37,4570 }, { 38,4570 }, { 0, 0 }, { 40,4570 }, { 41,4570 }, - { 42,4570 }, { 43,4570 }, { 44,4570 }, { 45,4570 }, { 46,4570 }, - - { 47,4570 }, { 48,4570 }, { 49,4570 }, { 50,4570 }, { 51,4570 }, - { 52,4570 }, { 53,4570 }, { 54,4570 }, { 55,4570 }, { 56,4570 }, - { 57,4570 }, { 58,4570 }, { 59,4570 }, { 60,4570 }, { 61,4570 }, - { 62,4570 }, { 63,4570 }, { 64,4570 }, { 65,4570 }, { 66,4570 }, - { 67,4570 }, { 68,4570 }, { 69,4570 }, { 70,4570 }, { 71,4570 }, - { 72,4570 }, { 73,4570 }, { 74,4570 }, { 75,4570 }, { 76,4570 }, - { 77,4570 }, { 78,4570 }, { 79,4570 }, { 80,4570 }, { 81,4570 }, - { 82,4570 }, { 83,4570 }, { 84,4570 }, { 85,4570 }, { 86,4570 }, - { 87,4570 }, { 88,4570 }, { 89,4570 }, { 90,4570 }, { 91,4570 }, - { 92,4570 }, { 93,4570 }, { 94,4570 }, { 95,4570 }, { 96,4570 }, - - { 97,4570 }, { 98,4570 }, { 99,4570 }, { 100,4570 }, { 101,4570 }, - { 102,4570 }, { 103,4570 }, { 104,4570 }, { 105,4570 }, { 106,4570 }, - { 107,4570 }, { 108,4570 }, { 109,4570 }, { 110,4570 }, { 111,4570 }, - { 112,4570 }, { 113,4570 }, { 114,4570 }, { 115,4570 }, { 116,4570 }, - { 117,4570 }, { 118,4570 }, { 119,4570 }, { 120,4570 }, { 121,4570 }, - { 122,4570 }, { 123,4570 }, { 124,4570 }, { 125,4570 }, { 126,4570 }, - { 127,4570 }, { 128,4570 }, { 129,4570 }, { 130,4570 }, { 131,4570 }, - { 132,4570 }, { 133,4570 }, { 134,4570 }, { 135,4570 }, { 136,4570 }, - { 137,4570 }, { 138,4570 }, { 139,4570 }, { 140,4570 }, { 141,4570 }, - { 142,4570 }, { 143,4570 }, { 144,4570 }, { 145,4570 }, { 146,4570 }, - - { 147,4570 }, { 148,4570 }, { 149,4570 }, { 150,4570 }, { 151,4570 }, - { 152,4570 }, { 153,4570 }, { 154,4570 }, { 155,4570 }, { 156,4570 }, - { 157,4570 }, { 158,4570 }, { 159,4570 }, { 160,4570 }, { 161,4570 }, - { 162,4570 }, { 163,4570 }, { 164,4570 }, { 165,4570 }, { 166,4570 }, - { 167,4570 }, { 168,4570 }, { 169,4570 }, { 170,4570 }, { 171,4570 }, - { 172,4570 }, { 173,4570 }, { 174,4570 }, { 175,4570 }, { 176,4570 }, - { 177,4570 }, { 178,4570 }, { 179,4570 }, { 180,4570 }, { 181,4570 }, - { 182,4570 }, { 183,4570 }, { 184,4570 }, { 185,4570 }, { 186,4570 }, - { 187,4570 }, { 188,4570 }, { 189,4570 }, { 190,4570 }, { 191,4570 }, - { 192,4570 }, { 193,4570 }, { 194,4570 }, { 195,4570 }, { 196,4570 }, - - { 197,4570 }, { 198,4570 }, { 199,4570 }, { 200,4570 }, { 201,4570 }, - { 202,4570 }, { 203,4570 }, { 204,4570 }, { 205,4570 }, { 206,4570 }, - { 207,4570 }, { 208,4570 }, { 209,4570 }, { 210,4570 }, { 211,4570 }, - { 212,4570 }, { 213,4570 }, { 214,4570 }, { 215,4570 }, { 216,4570 }, - { 217,4570 }, { 218,4570 }, { 219,4570 }, { 220,4570 }, { 221,4570 }, - { 222,4570 }, { 223,4570 }, { 224,4570 }, { 225,4570 }, { 226,4570 }, - { 227,4570 }, { 228,4570 }, { 229,4570 }, { 230,4570 }, { 231,4570 }, - { 232,4570 }, { 233,4570 }, { 234,4570 }, { 235,4570 }, { 236,4570 }, - { 237,4570 }, { 238,4570 }, { 239,4570 }, { 240,4570 }, { 241,4570 }, - { 242,4570 }, { 243,4570 }, { 244,4570 }, { 245,4570 }, { 246,4570 }, - - { 247,4570 }, { 248,4570 }, { 249,4570 }, { 250,4570 }, { 251,4570 }, - { 252,4570 }, { 253,4570 }, { 254,4570 }, { 255,4570 }, { 256,4570 }, - { 0, 9 }, { 0,27589 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 9,4570 }, { 10,4575 }, { 0, 0 }, { 12,4570 }, { 13,4575 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 32,4570 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 45,-2057 }, { 0, 5 }, { 0,27542 }, { 1,4575 }, - { 2,4575 }, { 3,4575 }, { 4,4575 }, { 5,4575 }, { 6,4575 }, - { 7,4575 }, { 8,4575 }, { 9,4575 }, { 10,4575 }, { 11,4575 }, - { 12,4575 }, { 13,4575 }, { 14,4575 }, { 15,4575 }, { 16,4575 }, - { 17,4575 }, { 18,4575 }, { 19,4575 }, { 20,4575 }, { 21,4575 }, - { 22,4575 }, { 23,4575 }, { 24,4575 }, { 25,4575 }, { 26,4575 }, - { 27,4575 }, { 28,4575 }, { 29,4575 }, { 30,4575 }, { 31,4575 }, - { 32,4575 }, { 33,4575 }, { 34,4575 }, { 35,4575 }, { 36,4575 }, - { 37,4575 }, { 38,4575 }, { 39,4575 }, { 40,4575 }, { 41,4575 }, - - { 0, 0 }, { 43,4575 }, { 44,4575 }, { 45,4575 }, { 46,4575 }, - { 0, 0 }, { 48,4575 }, { 49,4575 }, { 50,4575 }, { 51,4575 }, - { 52,4575 }, { 53,4575 }, { 54,4575 }, { 55,4575 }, { 56,4575 }, - { 57,4575 }, { 58,4575 }, { 59,4575 }, { 60,4575 }, { 61,4575 }, - { 62,4575 }, { 63,4575 }, { 64,4575 }, { 65,4575 }, { 66,4575 }, - { 67,4575 }, { 68,4575 }, { 69,4575 }, { 70,4575 }, { 71,4575 }, - { 72,4575 }, { 73,4575 }, { 74,4575 }, { 75,4575 }, { 76,4575 }, - { 77,4575 }, { 78,4575 }, { 79,4575 }, { 80,4575 }, { 81,4575 }, - { 82,4575 }, { 83,4575 }, { 84,4575 }, { 85,4575 }, { 86,4575 }, - { 87,4575 }, { 88,4575 }, { 89,4575 }, { 90,4575 }, { 91,4575 }, - - { 92,4575 }, { 93,4575 }, { 94,4575 }, { 95,4575 }, { 96,4575 }, - { 97,4575 }, { 98,4575 }, { 99,4575 }, { 100,4575 }, { 101,4575 }, - { 102,4575 }, { 103,4575 }, { 104,4575 }, { 105,4575 }, { 106,4575 }, - { 107,4575 }, { 108,4575 }, { 109,4575 }, { 110,4575 }, { 111,4575 }, - { 112,4575 }, { 113,4575 }, { 114,4575 }, { 115,4575 }, { 116,4575 }, - { 117,4575 }, { 118,4575 }, { 119,4575 }, { 120,4575 }, { 121,4575 }, - { 122,4575 }, { 123,4575 }, { 124,4575 }, { 125,4575 }, { 126,4575 }, - { 127,4575 }, { 128,4575 }, { 129,4575 }, { 130,4575 }, { 131,4575 }, - { 132,4575 }, { 133,4575 }, { 134,4575 }, { 135,4575 }, { 136,4575 }, - { 137,4575 }, { 138,4575 }, { 139,4575 }, { 140,4575 }, { 141,4575 }, - - { 142,4575 }, { 143,4575 }, { 144,4575 }, { 145,4575 }, { 146,4575 }, - { 147,4575 }, { 148,4575 }, { 149,4575 }, { 150,4575 }, { 151,4575 }, - { 152,4575 }, { 153,4575 }, { 154,4575 }, { 155,4575 }, { 156,4575 }, - { 157,4575 }, { 158,4575 }, { 159,4575 }, { 160,4575 }, { 161,4575 }, - { 162,4575 }, { 163,4575 }, { 164,4575 }, { 165,4575 }, { 166,4575 }, - { 167,4575 }, { 168,4575 }, { 169,4575 }, { 170,4575 }, { 171,4575 }, - { 172,4575 }, { 173,4575 }, { 174,4575 }, { 175,4575 }, { 176,4575 }, - { 177,4575 }, { 178,4575 }, { 179,4575 }, { 180,4575 }, { 181,4575 }, - { 182,4575 }, { 183,4575 }, { 184,4575 }, { 185,4575 }, { 186,4575 }, - { 187,4575 }, { 188,4575 }, { 189,4575 }, { 190,4575 }, { 191,4575 }, - - { 192,4575 }, { 193,4575 }, { 194,4575 }, { 195,4575 }, { 196,4575 }, - { 197,4575 }, { 198,4575 }, { 199,4575 }, { 200,4575 }, { 201,4575 }, - { 202,4575 }, { 203,4575 }, { 204,4575 }, { 205,4575 }, { 206,4575 }, - { 207,4575 }, { 208,4575 }, { 209,4575 }, { 210,4575 }, { 211,4575 }, - { 212,4575 }, { 213,4575 }, { 214,4575 }, { 215,4575 }, { 216,4575 }, - { 217,4575 }, { 218,4575 }, { 219,4575 }, { 220,4575 }, { 221,4575 }, - { 222,4575 }, { 223,4575 }, { 224,4575 }, { 225,4575 }, { 226,4575 }, - { 227,4575 }, { 228,4575 }, { 229,4575 }, { 230,4575 }, { 231,4575 }, - { 232,4575 }, { 233,4575 }, { 234,4575 }, { 235,4575 }, { 236,4575 }, - { 237,4575 }, { 238,4575 }, { 239,4575 }, { 240,4575 }, { 241,4575 }, - - { 242,4575 }, { 243,4575 }, { 244,4575 }, { 245,4575 }, { 246,4575 }, - { 247,4575 }, { 248,4575 }, { 249,4575 }, { 250,4575 }, { 251,4575 }, - { 252,4575 }, { 253,4575 }, { 254,4575 }, { 255,4575 }, { 256,4575 }, - { 0, 5 }, { 0,27284 }, { 1,4317 }, { 2,4317 }, { 3,4317 }, - { 4,4317 }, { 5,4317 }, { 6,4317 }, { 7,4317 }, { 8,4317 }, - { 9,4317 }, { 10,4317 }, { 11,4317 }, { 12,4317 }, { 13,4317 }, - { 14,4317 }, { 15,4317 }, { 16,4317 }, { 17,4317 }, { 18,4317 }, - { 19,4317 }, { 20,4317 }, { 21,4317 }, { 22,4317 }, { 23,4317 }, - { 24,4317 }, { 25,4317 }, { 26,4317 }, { 27,4317 }, { 28,4317 }, - { 29,4317 }, { 30,4317 }, { 31,4317 }, { 32,4317 }, { 33,4317 }, - - { 34,4317 }, { 35,4317 }, { 36,4317 }, { 37,4317 }, { 38,4317 }, - { 39,4317 }, { 40,4317 }, { 41,4317 }, { 0, 0 }, { 43,4317 }, - { 44,4317 }, { 45,4317 }, { 46,4317 }, { 0, 0 }, { 48,4317 }, - { 49,4317 }, { 50,4317 }, { 51,4317 }, { 52,4317 }, { 53,4317 }, - { 54,4317 }, { 55,4317 }, { 56,4317 }, { 57,4317 }, { 58,4317 }, - { 59,4317 }, { 60,4317 }, { 61,4317 }, { 62,4317 }, { 63,4317 }, - { 64,4317 }, { 65,4317 }, { 66,4317 }, { 67,4317 }, { 68,4317 }, - { 69,4317 }, { 70,4317 }, { 71,4317 }, { 72,4317 }, { 73,4317 }, - { 74,4317 }, { 75,4317 }, { 76,4317 }, { 77,4317 }, { 78,4317 }, - { 79,4317 }, { 80,4317 }, { 81,4317 }, { 82,4317 }, { 83,4317 }, - - { 84,4317 }, { 85,4317 }, { 86,4317 }, { 87,4317 }, { 88,4317 }, - { 89,4317 }, { 90,4317 }, { 91,4317 }, { 92,4317 }, { 93,4317 }, - { 94,4317 }, { 95,4317 }, { 96,4317 }, { 97,4317 }, { 98,4317 }, - { 99,4317 }, { 100,4317 }, { 101,4317 }, { 102,4317 }, { 103,4317 }, - { 104,4317 }, { 105,4317 }, { 106,4317 }, { 107,4317 }, { 108,4317 }, - { 109,4317 }, { 110,4317 }, { 111,4317 }, { 112,4317 }, { 113,4317 }, - { 114,4317 }, { 115,4317 }, { 116,4317 }, { 117,4317 }, { 118,4317 }, - { 119,4317 }, { 120,4317 }, { 121,4317 }, { 122,4317 }, { 123,4317 }, - { 124,4317 }, { 125,4317 }, { 126,4317 }, { 127,4317 }, { 128,4317 }, - { 129,4317 }, { 130,4317 }, { 131,4317 }, { 132,4317 }, { 133,4317 }, - - { 134,4317 }, { 135,4317 }, { 136,4317 }, { 137,4317 }, { 138,4317 }, - { 139,4317 }, { 140,4317 }, { 141,4317 }, { 142,4317 }, { 143,4317 }, - { 144,4317 }, { 145,4317 }, { 146,4317 }, { 147,4317 }, { 148,4317 }, - { 149,4317 }, { 150,4317 }, { 151,4317 }, { 152,4317 }, { 153,4317 }, - { 154,4317 }, { 155,4317 }, { 156,4317 }, { 157,4317 }, { 158,4317 }, - { 159,4317 }, { 160,4317 }, { 161,4317 }, { 162,4317 }, { 163,4317 }, - { 164,4317 }, { 165,4317 }, { 166,4317 }, { 167,4317 }, { 168,4317 }, - { 169,4317 }, { 170,4317 }, { 171,4317 }, { 172,4317 }, { 173,4317 }, - { 174,4317 }, { 175,4317 }, { 176,4317 }, { 177,4317 }, { 178,4317 }, - { 179,4317 }, { 180,4317 }, { 181,4317 }, { 182,4317 }, { 183,4317 }, - - { 184,4317 }, { 185,4317 }, { 186,4317 }, { 187,4317 }, { 188,4317 }, - { 189,4317 }, { 190,4317 }, { 191,4317 }, { 192,4317 }, { 193,4317 }, - { 194,4317 }, { 195,4317 }, { 196,4317 }, { 197,4317 }, { 198,4317 }, - { 199,4317 }, { 200,4317 }, { 201,4317 }, { 202,4317 }, { 203,4317 }, - { 204,4317 }, { 205,4317 }, { 206,4317 }, { 207,4317 }, { 208,4317 }, - { 209,4317 }, { 210,4317 }, { 211,4317 }, { 212,4317 }, { 213,4317 }, - { 214,4317 }, { 215,4317 }, { 216,4317 }, { 217,4317 }, { 218,4317 }, - { 219,4317 }, { 220,4317 }, { 221,4317 }, { 222,4317 }, { 223,4317 }, - { 224,4317 }, { 225,4317 }, { 226,4317 }, { 227,4317 }, { 228,4317 }, - { 229,4317 }, { 230,4317 }, { 231,4317 }, { 232,4317 }, { 233,4317 }, - - { 234,4317 }, { 235,4317 }, { 236,4317 }, { 237,4317 }, { 238,4317 }, - { 239,4317 }, { 240,4317 }, { 241,4317 }, { 242,4317 }, { 243,4317 }, - { 244,4317 }, { 245,4317 }, { 246,4317 }, { 247,4317 }, { 248,4317 }, - { 249,4317 }, { 250,4317 }, { 251,4317 }, { 252,4317 }, { 253,4317 }, - { 254,4317 }, { 255,4317 }, { 256,4317 }, { 0, 58 }, { 0,27026 }, - { 1,4445 }, { 2,4445 }, { 3,4445 }, { 4,4445 }, { 5,4445 }, - { 6,4445 }, { 7,4445 }, { 8,4445 }, { 9,4445 }, { 10,4445 }, - { 11,4445 }, { 12,4445 }, { 13,4445 }, { 14,4445 }, { 15,4445 }, - { 16,4445 }, { 17,4445 }, { 18,4445 }, { 19,4445 }, { 20,4445 }, - { 21,4445 }, { 22,4445 }, { 23,4445 }, { 24,4445 }, { 25,4445 }, - - { 26,4445 }, { 27,4445 }, { 28,4445 }, { 29,4445 }, { 30,4445 }, - { 31,4445 }, { 32,4445 }, { 33,4445 }, { 0, 0 }, { 35,4445 }, - { 36,4445 }, { 37,4445 }, { 38,4445 }, { 39,4445 }, { 40,4445 }, - { 41,4445 }, { 42,4445 }, { 43,4445 }, { 44,4445 }, { 45,4445 }, - { 46,4445 }, { 47,4445 }, { 48,4445 }, { 49,4445 }, { 50,4445 }, - { 51,4445 }, { 52,4445 }, { 53,4445 }, { 54,4445 }, { 55,4445 }, - { 56,4445 }, { 57,4445 }, { 58,4445 }, { 59,4445 }, { 60,4445 }, - { 61,4445 }, { 62,4445 }, { 63,4445 }, { 64,4445 }, { 65,4445 }, - { 66,4445 }, { 67,4445 }, { 68,4445 }, { 69,4445 }, { 70,4445 }, - { 71,4445 }, { 72,4445 }, { 73,4445 }, { 74,4445 }, { 75,4445 }, - - { 76,4445 }, { 77,4445 }, { 78,4445 }, { 79,4445 }, { 80,4445 }, - { 81,4445 }, { 82,4445 }, { 83,4445 }, { 84,4445 }, { 85,4445 }, - { 86,4445 }, { 87,4445 }, { 88,4445 }, { 89,4445 }, { 90,4445 }, - { 91,4445 }, { 92,4445 }, { 93,4445 }, { 94,4445 }, { 95,4445 }, - { 96,4445 }, { 97,4445 }, { 98,4445 }, { 99,4445 }, { 100,4445 }, - { 101,4445 }, { 102,4445 }, { 103,4445 }, { 104,4445 }, { 105,4445 }, - { 106,4445 }, { 107,4445 }, { 108,4445 }, { 109,4445 }, { 110,4445 }, - { 111,4445 }, { 112,4445 }, { 113,4445 }, { 114,4445 }, { 115,4445 }, - { 116,4445 }, { 117,4445 }, { 118,4445 }, { 119,4445 }, { 120,4445 }, - { 121,4445 }, { 122,4445 }, { 123,4445 }, { 124,4445 }, { 125,4445 }, - - { 126,4445 }, { 127,4445 }, { 128,4445 }, { 129,4445 }, { 130,4445 }, - { 131,4445 }, { 132,4445 }, { 133,4445 }, { 134,4445 }, { 135,4445 }, - { 136,4445 }, { 137,4445 }, { 138,4445 }, { 139,4445 }, { 140,4445 }, - { 141,4445 }, { 142,4445 }, { 143,4445 }, { 144,4445 }, { 145,4445 }, - { 146,4445 }, { 147,4445 }, { 148,4445 }, { 149,4445 }, { 150,4445 }, - { 151,4445 }, { 152,4445 }, { 153,4445 }, { 154,4445 }, { 155,4445 }, - { 156,4445 }, { 157,4445 }, { 158,4445 }, { 159,4445 }, { 160,4445 }, - { 161,4445 }, { 162,4445 }, { 163,4445 }, { 164,4445 }, { 165,4445 }, - { 166,4445 }, { 167,4445 }, { 168,4445 }, { 169,4445 }, { 170,4445 }, - { 171,4445 }, { 172,4445 }, { 173,4445 }, { 174,4445 }, { 175,4445 }, - - { 176,4445 }, { 177,4445 }, { 178,4445 }, { 179,4445 }, { 180,4445 }, - { 181,4445 }, { 182,4445 }, { 183,4445 }, { 184,4445 }, { 185,4445 }, - { 186,4445 }, { 187,4445 }, { 188,4445 }, { 189,4445 }, { 190,4445 }, - { 191,4445 }, { 192,4445 }, { 193,4445 }, { 194,4445 }, { 195,4445 }, - { 196,4445 }, { 197,4445 }, { 198,4445 }, { 199,4445 }, { 200,4445 }, - { 201,4445 }, { 202,4445 }, { 203,4445 }, { 204,4445 }, { 205,4445 }, - { 206,4445 }, { 207,4445 }, { 208,4445 }, { 209,4445 }, { 210,4445 }, - { 211,4445 }, { 212,4445 }, { 213,4445 }, { 214,4445 }, { 215,4445 }, - { 216,4445 }, { 217,4445 }, { 218,4445 }, { 219,4445 }, { 220,4445 }, - { 221,4445 }, { 222,4445 }, { 223,4445 }, { 224,4445 }, { 225,4445 }, - - { 226,4445 }, { 227,4445 }, { 228,4445 }, { 229,4445 }, { 230,4445 }, - { 231,4445 }, { 232,4445 }, { 233,4445 }, { 234,4445 }, { 235,4445 }, - { 236,4445 }, { 237,4445 }, { 238,4445 }, { 239,4445 }, { 240,4445 }, - { 241,4445 }, { 242,4445 }, { 243,4445 }, { 244,4445 }, { 245,4445 }, - { 246,4445 }, { 247,4445 }, { 248,4445 }, { 249,4445 }, { 250,4445 }, - { 251,4445 }, { 252,4445 }, { 253,4445 }, { 254,4445 }, { 255,4445 }, - { 256,4445 }, { 0, 11 }, { 0,26768 }, { 1,4445 }, { 2,4445 }, - { 3,4445 }, { 4,4445 }, { 5,4445 }, { 6,4445 }, { 7,4445 }, - { 8,4445 }, { 9,4445 }, { 10,4445 }, { 11,4445 }, { 12,4445 }, - { 13,4445 }, { 14,4445 }, { 15,4445 }, { 16,4445 }, { 17,4445 }, - - { 18,4445 }, { 19,4445 }, { 20,4445 }, { 21,4445 }, { 22,4445 }, - { 23,4445 }, { 24,4445 }, { 25,4445 }, { 26,4445 }, { 27,4445 }, - { 28,4445 }, { 29,4445 }, { 30,4445 }, { 31,4445 }, { 32,4445 }, - { 33,4445 }, { 34,4445 }, { 35,4445 }, { 36,4445 }, { 37,4445 }, - { 38,4445 }, { 0, 0 }, { 40,4445 }, { 41,4445 }, { 42,4445 }, - { 43,4445 }, { 44,4445 }, { 45,4445 }, { 46,4445 }, { 47,4445 }, - { 48,4445 }, { 49,4445 }, { 50,4445 }, { 51,4445 }, { 52,4445 }, - { 53,4445 }, { 54,4445 }, { 55,4445 }, { 56,4445 }, { 57,4445 }, - { 58,4445 }, { 59,4445 }, { 60,4445 }, { 61,4445 }, { 62,4445 }, - { 63,4445 }, { 64,4445 }, { 65,4445 }, { 66,4445 }, { 67,4445 }, - - { 68,4445 }, { 69,4445 }, { 70,4445 }, { 71,4445 }, { 72,4445 }, - { 73,4445 }, { 74,4445 }, { 75,4445 }, { 76,4445 }, { 77,4445 }, - { 78,4445 }, { 79,4445 }, { 80,4445 }, { 81,4445 }, { 82,4445 }, - { 83,4445 }, { 84,4445 }, { 85,4445 }, { 86,4445 }, { 87,4445 }, - { 88,4445 }, { 89,4445 }, { 90,4445 }, { 91,4445 }, { 92,4445 }, - { 93,4445 }, { 94,4445 }, { 95,4445 }, { 96,4445 }, { 97,4445 }, - { 98,4445 }, { 99,4445 }, { 100,4445 }, { 101,4445 }, { 102,4445 }, - { 103,4445 }, { 104,4445 }, { 105,4445 }, { 106,4445 }, { 107,4445 }, - { 108,4445 }, { 109,4445 }, { 110,4445 }, { 111,4445 }, { 112,4445 }, - { 113,4445 }, { 114,4445 }, { 115,4445 }, { 116,4445 }, { 117,4445 }, - - { 118,4445 }, { 119,4445 }, { 120,4445 }, { 121,4445 }, { 122,4445 }, - { 123,4445 }, { 124,4445 }, { 125,4445 }, { 126,4445 }, { 127,4445 }, - { 128,4445 }, { 129,4445 }, { 130,4445 }, { 131,4445 }, { 132,4445 }, - { 133,4445 }, { 134,4445 }, { 135,4445 }, { 136,4445 }, { 137,4445 }, - { 138,4445 }, { 139,4445 }, { 140,4445 }, { 141,4445 }, { 142,4445 }, - { 143,4445 }, { 144,4445 }, { 145,4445 }, { 146,4445 }, { 147,4445 }, - { 148,4445 }, { 149,4445 }, { 150,4445 }, { 151,4445 }, { 152,4445 }, - { 153,4445 }, { 154,4445 }, { 155,4445 }, { 156,4445 }, { 157,4445 }, - { 158,4445 }, { 159,4445 }, { 160,4445 }, { 161,4445 }, { 162,4445 }, - { 163,4445 }, { 164,4445 }, { 165,4445 }, { 166,4445 }, { 167,4445 }, - - { 168,4445 }, { 169,4445 }, { 170,4445 }, { 171,4445 }, { 172,4445 }, - { 173,4445 }, { 174,4445 }, { 175,4445 }, { 176,4445 }, { 177,4445 }, - { 178,4445 }, { 179,4445 }, { 180,4445 }, { 181,4445 }, { 182,4445 }, - { 183,4445 }, { 184,4445 }, { 185,4445 }, { 186,4445 }, { 187,4445 }, - { 188,4445 }, { 189,4445 }, { 190,4445 }, { 191,4445 }, { 192,4445 }, - { 193,4445 }, { 194,4445 }, { 195,4445 }, { 196,4445 }, { 197,4445 }, - { 198,4445 }, { 199,4445 }, { 200,4445 }, { 201,4445 }, { 202,4445 }, - { 203,4445 }, { 204,4445 }, { 205,4445 }, { 206,4445 }, { 207,4445 }, - { 208,4445 }, { 209,4445 }, { 210,4445 }, { 211,4445 }, { 212,4445 }, - { 213,4445 }, { 214,4445 }, { 215,4445 }, { 216,4445 }, { 217,4445 }, - - { 218,4445 }, { 219,4445 }, { 220,4445 }, { 221,4445 }, { 222,4445 }, - { 223,4445 }, { 224,4445 }, { 225,4445 }, { 226,4445 }, { 227,4445 }, - { 228,4445 }, { 229,4445 }, { 230,4445 }, { 231,4445 }, { 232,4445 }, - { 233,4445 }, { 234,4445 }, { 235,4445 }, { 236,4445 }, { 237,4445 }, - { 238,4445 }, { 239,4445 }, { 240,4445 }, { 241,4445 }, { 242,4445 }, - { 243,4445 }, { 244,4445 }, { 245,4445 }, { 246,4445 }, { 247,4445 }, - { 248,4445 }, { 249,4445 }, { 250,4445 }, { 251,4445 }, { 252,4445 }, - { 253,4445 }, { 254,4445 }, { 255,4445 }, { 256,4445 }, { 0, 16 }, - { 0,26510 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 9,4445 }, - - { 10,4450 }, { 0, 0 }, { 12,4445 }, { 13,4450 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 32,4445 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 45,-3036 }, { 0, 32 }, { 0,26463 }, { 1,4450 }, { 2,4450 }, - { 3,4450 }, { 4,4450 }, { 5,4450 }, { 6,4450 }, { 7,4450 }, - { 8,4450 }, { 9,4450 }, { 10,4450 }, { 11,4450 }, { 12,4450 }, - - { 13,4450 }, { 14,4450 }, { 15,4450 }, { 16,4450 }, { 17,4450 }, - { 18,4450 }, { 19,4450 }, { 20,4450 }, { 21,4450 }, { 22,4450 }, - { 23,4450 }, { 24,4450 }, { 25,4450 }, { 26,4450 }, { 27,4450 }, - { 28,4450 }, { 29,4450 }, { 30,4450 }, { 31,4450 }, { 32,4450 }, - { 33,4450 }, { 34,4450 }, { 35,4450 }, { 36,4450 }, { 37,4450 }, - { 38,4450 }, { 0, 0 }, { 40,4450 }, { 41,4450 }, { 42,4450 }, - { 43,4450 }, { 44,4450 }, { 45,4450 }, { 46,4450 }, { 47,4450 }, - { 48,4450 }, { 49,4450 }, { 50,4450 }, { 51,4450 }, { 52,4450 }, - { 53,4450 }, { 54,4450 }, { 55,4450 }, { 56,4450 }, { 57,4450 }, - { 58,4450 }, { 59,4450 }, { 60,4450 }, { 61,4450 }, { 62,4450 }, - - { 63,4450 }, { 64,4450 }, { 65,4450 }, { 66,4450 }, { 67,4450 }, - { 68,4450 }, { 69,4450 }, { 70,4450 }, { 71,4450 }, { 72,4450 }, - { 73,4450 }, { 74,4450 }, { 75,4450 }, { 76,4450 }, { 77,4450 }, - { 78,4450 }, { 79,4450 }, { 80,4450 }, { 81,4450 }, { 82,4450 }, - { 83,4450 }, { 84,4450 }, { 85,4450 }, { 86,4450 }, { 87,4450 }, - { 88,4450 }, { 89,4450 }, { 90,4450 }, { 91,4450 }, { 0, 0 }, - { 93,4450 }, { 94,4450 }, { 95,4450 }, { 96,4450 }, { 97,4450 }, - { 98,4450 }, { 99,4450 }, { 100,4450 }, { 101,4450 }, { 102,4450 }, - { 103,4450 }, { 104,4450 }, { 105,4450 }, { 106,4450 }, { 107,4450 }, - { 108,4450 }, { 109,4450 }, { 110,4450 }, { 111,4450 }, { 112,4450 }, - - { 113,4450 }, { 114,4450 }, { 115,4450 }, { 116,4450 }, { 117,4450 }, - { 118,4450 }, { 119,4450 }, { 120,4450 }, { 121,4450 }, { 122,4450 }, - { 123,4450 }, { 124,4450 }, { 125,4450 }, { 126,4450 }, { 127,4450 }, - { 128,4450 }, { 129,4450 }, { 130,4450 }, { 131,4450 }, { 132,4450 }, - { 133,4450 }, { 134,4450 }, { 135,4450 }, { 136,4450 }, { 137,4450 }, - { 138,4450 }, { 139,4450 }, { 140,4450 }, { 141,4450 }, { 142,4450 }, - { 143,4450 }, { 144,4450 }, { 145,4450 }, { 146,4450 }, { 147,4450 }, - { 148,4450 }, { 149,4450 }, { 150,4450 }, { 151,4450 }, { 152,4450 }, - { 153,4450 }, { 154,4450 }, { 155,4450 }, { 156,4450 }, { 157,4450 }, - { 158,4450 }, { 159,4450 }, { 160,4450 }, { 161,4450 }, { 162,4450 }, - - { 163,4450 }, { 164,4450 }, { 165,4450 }, { 166,4450 }, { 167,4450 }, - { 168,4450 }, { 169,4450 }, { 170,4450 }, { 171,4450 }, { 172,4450 }, - { 173,4450 }, { 174,4450 }, { 175,4450 }, { 176,4450 }, { 177,4450 }, - { 178,4450 }, { 179,4450 }, { 180,4450 }, { 181,4450 }, { 182,4450 }, - { 183,4450 }, { 184,4450 }, { 185,4450 }, { 186,4450 }, { 187,4450 }, - { 188,4450 }, { 189,4450 }, { 190,4450 }, { 191,4450 }, { 192,4450 }, - { 193,4450 }, { 194,4450 }, { 195,4450 }, { 196,4450 }, { 197,4450 }, - { 198,4450 }, { 199,4450 }, { 200,4450 }, { 201,4450 }, { 202,4450 }, - { 203,4450 }, { 204,4450 }, { 205,4450 }, { 206,4450 }, { 207,4450 }, - { 208,4450 }, { 209,4450 }, { 210,4450 }, { 211,4450 }, { 212,4450 }, - - { 213,4450 }, { 214,4450 }, { 215,4450 }, { 216,4450 }, { 217,4450 }, - { 218,4450 }, { 219,4450 }, { 220,4450 }, { 221,4450 }, { 222,4450 }, - { 223,4450 }, { 224,4450 }, { 225,4450 }, { 226,4450 }, { 227,4450 }, - { 228,4450 }, { 229,4450 }, { 230,4450 }, { 231,4450 }, { 232,4450 }, - { 233,4450 }, { 234,4450 }, { 235,4450 }, { 236,4450 }, { 237,4450 }, - { 238,4450 }, { 239,4450 }, { 240,4450 }, { 241,4450 }, { 242,4450 }, - { 243,4450 }, { 244,4450 }, { 245,4450 }, { 246,4450 }, { 247,4450 }, - { 248,4450 }, { 249,4450 }, { 250,4450 }, { 251,4450 }, { 252,4450 }, - { 253,4450 }, { 254,4450 }, { 255,4450 }, { 256,4450 }, { 0, 32 }, - { 0,26205 }, { 1,4192 }, { 2,4192 }, { 3,4192 }, { 4,4192 }, - - { 5,4192 }, { 6,4192 }, { 7,4192 }, { 8,4192 }, { 9,4192 }, - { 10,4192 }, { 11,4192 }, { 12,4192 }, { 13,4192 }, { 14,4192 }, - { 15,4192 }, { 16,4192 }, { 17,4192 }, { 18,4192 }, { 19,4192 }, - { 20,4192 }, { 21,4192 }, { 22,4192 }, { 23,4192 }, { 24,4192 }, - { 25,4192 }, { 26,4192 }, { 27,4192 }, { 28,4192 }, { 29,4192 }, - { 30,4192 }, { 31,4192 }, { 32,4192 }, { 33,4192 }, { 34,4192 }, - { 35,4192 }, { 36,4192 }, { 37,4192 }, { 38,4192 }, { 0, 0 }, - { 40,4192 }, { 41,4192 }, { 42,4192 }, { 43,4192 }, { 44,4192 }, - { 45,4192 }, { 46,4192 }, { 47,4192 }, { 48,4192 }, { 49,4192 }, - { 50,4192 }, { 51,4192 }, { 52,4192 }, { 53,4192 }, { 54,4192 }, - - { 55,4192 }, { 56,4192 }, { 57,4192 }, { 58,4192 }, { 59,4192 }, - { 60,4192 }, { 61,4192 }, { 62,4192 }, { 63,4192 }, { 64,4192 }, - { 65,4192 }, { 66,4192 }, { 67,4192 }, { 68,4192 }, { 69,4192 }, - { 70,4192 }, { 71,4192 }, { 72,4192 }, { 73,4192 }, { 74,4192 }, - { 75,4192 }, { 76,4192 }, { 77,4192 }, { 78,4192 }, { 79,4192 }, - { 80,4192 }, { 81,4192 }, { 82,4192 }, { 83,4192 }, { 84,4192 }, - { 85,4192 }, { 86,4192 }, { 87,4192 }, { 88,4192 }, { 89,4192 }, - { 90,4192 }, { 91,4192 }, { 0, 0 }, { 93,4192 }, { 94,4192 }, - { 95,4192 }, { 96,4192 }, { 97,4192 }, { 98,4192 }, { 99,4192 }, - { 100,4192 }, { 101,4192 }, { 102,4192 }, { 103,4192 }, { 104,4192 }, - - { 105,4192 }, { 106,4192 }, { 107,4192 }, { 108,4192 }, { 109,4192 }, - { 110,4192 }, { 111,4192 }, { 112,4192 }, { 113,4192 }, { 114,4192 }, - { 115,4192 }, { 116,4192 }, { 117,4192 }, { 118,4192 }, { 119,4192 }, - { 120,4192 }, { 121,4192 }, { 122,4192 }, { 123,4192 }, { 124,4192 }, - { 125,4192 }, { 126,4192 }, { 127,4192 }, { 128,4192 }, { 129,4192 }, - { 130,4192 }, { 131,4192 }, { 132,4192 }, { 133,4192 }, { 134,4192 }, - { 135,4192 }, { 136,4192 }, { 137,4192 }, { 138,4192 }, { 139,4192 }, - { 140,4192 }, { 141,4192 }, { 142,4192 }, { 143,4192 }, { 144,4192 }, - { 145,4192 }, { 146,4192 }, { 147,4192 }, { 148,4192 }, { 149,4192 }, - { 150,4192 }, { 151,4192 }, { 152,4192 }, { 153,4192 }, { 154,4192 }, - - { 155,4192 }, { 156,4192 }, { 157,4192 }, { 158,4192 }, { 159,4192 }, - { 160,4192 }, { 161,4192 }, { 162,4192 }, { 163,4192 }, { 164,4192 }, - { 165,4192 }, { 166,4192 }, { 167,4192 }, { 168,4192 }, { 169,4192 }, - { 170,4192 }, { 171,4192 }, { 172,4192 }, { 173,4192 }, { 174,4192 }, - { 175,4192 }, { 176,4192 }, { 177,4192 }, { 178,4192 }, { 179,4192 }, - { 180,4192 }, { 181,4192 }, { 182,4192 }, { 183,4192 }, { 184,4192 }, - { 185,4192 }, { 186,4192 }, { 187,4192 }, { 188,4192 }, { 189,4192 }, - { 190,4192 }, { 191,4192 }, { 192,4192 }, { 193,4192 }, { 194,4192 }, - { 195,4192 }, { 196,4192 }, { 197,4192 }, { 198,4192 }, { 199,4192 }, - { 200,4192 }, { 201,4192 }, { 202,4192 }, { 203,4192 }, { 204,4192 }, - - { 205,4192 }, { 206,4192 }, { 207,4192 }, { 208,4192 }, { 209,4192 }, - { 210,4192 }, { 211,4192 }, { 212,4192 }, { 213,4192 }, { 214,4192 }, - { 215,4192 }, { 216,4192 }, { 217,4192 }, { 218,4192 }, { 219,4192 }, - { 220,4192 }, { 221,4192 }, { 222,4192 }, { 223,4192 }, { 224,4192 }, - { 225,4192 }, { 226,4192 }, { 227,4192 }, { 228,4192 }, { 229,4192 }, - { 230,4192 }, { 231,4192 }, { 232,4192 }, { 233,4192 }, { 234,4192 }, - { 235,4192 }, { 236,4192 }, { 237,4192 }, { 238,4192 }, { 239,4192 }, - { 240,4192 }, { 241,4192 }, { 242,4192 }, { 243,4192 }, { 244,4192 }, - { 245,4192 }, { 246,4192 }, { 247,4192 }, { 248,4192 }, { 249,4192 }, - { 250,4192 }, { 251,4192 }, { 252,4192 }, { 253,4192 }, { 254,4192 }, - - { 255,4192 }, { 256,4192 }, { 0, 22 }, { 0,25947 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 9,4192 }, { 10,4197 }, { 0, 0 }, - { 12,4192 }, { 13,4197 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 32,4192 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 39,-3597 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 45,-3592 }, { 0, 42 }, - - { 0,25900 }, { 1,-3637 }, { 2,-3637 }, { 3,-3637 }, { 4,-3637 }, - { 5,-3637 }, { 6,-3637 }, { 7,-3637 }, { 8,-3637 }, { 9,-3637 }, - { 10,-3637 }, { 11,-3637 }, { 12,-3637 }, { 13,-3637 }, { 14,-3637 }, - { 15,-3637 }, { 16,-3637 }, { 17,-3637 }, { 18,-3637 }, { 19,-3637 }, - { 20,-3637 }, { 21,-3637 }, { 22,-3637 }, { 23,-3637 }, { 24,-3637 }, - { 25,-3637 }, { 26,-3637 }, { 27,-3637 }, { 28,-3637 }, { 29,-3637 }, - { 30,-3637 }, { 31,-3637 }, { 32,-3637 }, { 33,-3637 }, { 34,-3637 }, - { 35,-3637 }, { 36,-3637 }, { 37,-3637 }, { 38,-3637 }, { 39,-3637 }, - { 40,-3637 }, { 41,-3637 }, { 42,-3637 }, { 43,-3637 }, { 44,-3637 }, - { 45,-3637 }, { 46,-3637 }, { 47,-3637 }, { 48,4152 }, { 49,4152 }, - - { 50,4152 }, { 51,4152 }, { 52,4152 }, { 53,4152 }, { 54,4152 }, - { 55,4152 }, { 56,-3637 }, { 57,-3637 }, { 58,-3637 }, { 59,-3637 }, - { 60,-3637 }, { 61,-3637 }, { 62,-3637 }, { 63,-3637 }, { 64,-3637 }, - { 65,-3637 }, { 66,-3637 }, { 67,-3637 }, { 68,-3637 }, { 69,-3637 }, - { 70,-3637 }, { 71,-3637 }, { 72,-3637 }, { 73,-3637 }, { 74,-3637 }, - { 75,-3637 }, { 76,-3637 }, { 77,-3637 }, { 78,-3637 }, { 79,-3637 }, - { 80,-3637 }, { 81,-3637 }, { 82,-3637 }, { 83,-3637 }, { 84,-3637 }, - { 85,4165 }, { 86,-3637 }, { 87,-3637 }, { 88,-3637 }, { 89,-3637 }, - { 90,-3637 }, { 91,-3637 }, { 92,-3637 }, { 93,-3637 }, { 94,-3637 }, - { 95,-3637 }, { 96,-3637 }, { 97,-3637 }, { 98,-3637 }, { 99,-3637 }, - - { 100,-3637 }, { 101,-3637 }, { 102,-3637 }, { 103,-3637 }, { 104,-3637 }, - { 105,-3637 }, { 106,-3637 }, { 107,-3637 }, { 108,-3637 }, { 109,-3637 }, - { 110,-3637 }, { 111,-3637 }, { 112,-3637 }, { 113,-3637 }, { 114,-3637 }, - { 115,-3637 }, { 116,-3637 }, { 117,4188 }, { 118,-3637 }, { 119,-3637 }, - { 120,4226 }, { 121,-3637 }, { 122,-3637 }, { 123,-3637 }, { 124,-3637 }, - { 125,-3637 }, { 126,-3637 }, { 127,-3637 }, { 128,-3637 }, { 129,-3637 }, - { 130,-3637 }, { 131,-3637 }, { 132,-3637 }, { 133,-3637 }, { 134,-3637 }, - { 135,-3637 }, { 136,-3637 }, { 137,-3637 }, { 138,-3637 }, { 139,-3637 }, - { 140,-3637 }, { 141,-3637 }, { 142,-3637 }, { 143,-3637 }, { 144,-3637 }, - { 145,-3637 }, { 146,-3637 }, { 147,-3637 }, { 148,-3637 }, { 149,-3637 }, - - { 150,-3637 }, { 151,-3637 }, { 152,-3637 }, { 153,-3637 }, { 154,-3637 }, - { 155,-3637 }, { 156,-3637 }, { 157,-3637 }, { 158,-3637 }, { 159,-3637 }, - { 160,-3637 }, { 161,-3637 }, { 162,-3637 }, { 163,-3637 }, { 164,-3637 }, - { 165,-3637 }, { 166,-3637 }, { 167,-3637 }, { 168,-3637 }, { 169,-3637 }, - { 170,-3637 }, { 171,-3637 }, { 172,-3637 }, { 173,-3637 }, { 174,-3637 }, - { 175,-3637 }, { 176,-3637 }, { 177,-3637 }, { 178,-3637 }, { 179,-3637 }, - { 180,-3637 }, { 181,-3637 }, { 182,-3637 }, { 183,-3637 }, { 184,-3637 }, - { 185,-3637 }, { 186,-3637 }, { 187,-3637 }, { 188,-3637 }, { 189,-3637 }, - { 190,-3637 }, { 191,-3637 }, { 192,-3637 }, { 193,-3637 }, { 194,-3637 }, - { 195,-3637 }, { 196,-3637 }, { 197,-3637 }, { 198,-3637 }, { 199,-3637 }, - - { 200,-3637 }, { 201,-3637 }, { 202,-3637 }, { 203,-3637 }, { 204,-3637 }, - { 205,-3637 }, { 206,-3637 }, { 207,-3637 }, { 208,-3637 }, { 209,-3637 }, - { 210,-3637 }, { 211,-3637 }, { 212,-3637 }, { 213,-3637 }, { 214,-3637 }, - { 215,-3637 }, { 216,-3637 }, { 217,-3637 }, { 218,-3637 }, { 219,-3637 }, - { 220,-3637 }, { 221,-3637 }, { 222,-3637 }, { 223,-3637 }, { 224,-3637 }, - { 225,-3637 }, { 226,-3637 }, { 227,-3637 }, { 228,-3637 }, { 229,-3637 }, - { 230,-3637 }, { 231,-3637 }, { 232,-3637 }, { 233,-3637 }, { 234,-3637 }, - { 235,-3637 }, { 236,-3637 }, { 237,-3637 }, { 238,-3637 }, { 239,-3637 }, - { 240,-3637 }, { 241,-3637 }, { 242,-3637 }, { 243,-3637 }, { 244,-3637 }, - { 245,-3637 }, { 246,-3637 }, { 247,-3637 }, { 248,-3637 }, { 249,-3637 }, - - { 250,-3637 }, { 251,-3637 }, { 252,-3637 }, { 253,-3637 }, { 254,-3637 }, - { 255,-3637 }, { 256,-3637 }, { 0, 31 }, { 0,25642 }, { 1,4072 }, - { 2,4072 }, { 3,4072 }, { 4,4072 }, { 5,4072 }, { 6,4072 }, - { 7,4072 }, { 8,4072 }, { 9,4072 }, { 10,4072 }, { 11,4072 }, - { 12,4072 }, { 13,4072 }, { 14,4072 }, { 15,4072 }, { 16,4072 }, - { 17,4072 }, { 18,4072 }, { 19,4072 }, { 20,4072 }, { 21,4072 }, - { 22,4072 }, { 23,4072 }, { 24,4072 }, { 25,4072 }, { 26,4072 }, - { 27,4072 }, { 28,4072 }, { 29,4072 }, { 30,4072 }, { 31,4072 }, - { 32,4072 }, { 33,4072 }, { 34,4072 }, { 35,4072 }, { 36,4072 }, - { 37,4072 }, { 38,4072 }, { 0, 0 }, { 40,4072 }, { 41,4072 }, - - { 42,4072 }, { 43,4072 }, { 44,4072 }, { 45,4072 }, { 46,4072 }, - { 47,4072 }, { 48,4072 }, { 49,4072 }, { 50,4072 }, { 51,4072 }, - { 52,4072 }, { 53,4072 }, { 54,4072 }, { 55,4072 }, { 56,4072 }, - { 57,4072 }, { 58,4072 }, { 59,4072 }, { 60,4072 }, { 61,4072 }, - { 62,4072 }, { 63,4072 }, { 64,4072 }, { 65,4072 }, { 66,4072 }, - { 67,4072 }, { 68,4072 }, { 69,4072 }, { 70,4072 }, { 71,4072 }, - { 72,4072 }, { 73,4072 }, { 74,4072 }, { 75,4072 }, { 76,4072 }, - { 77,4072 }, { 78,4072 }, { 79,4072 }, { 80,4072 }, { 81,4072 }, - { 82,4072 }, { 83,4072 }, { 84,4072 }, { 85,4072 }, { 86,4072 }, - { 87,4072 }, { 88,4072 }, { 89,4072 }, { 90,4072 }, { 91,4072 }, - - { 92,4072 }, { 93,4072 }, { 94,4072 }, { 95,4072 }, { 96,4072 }, - { 97,4072 }, { 98,4072 }, { 99,4072 }, { 100,4072 }, { 101,4072 }, - { 102,4072 }, { 103,4072 }, { 104,4072 }, { 105,4072 }, { 106,4072 }, - { 107,4072 }, { 108,4072 }, { 109,4072 }, { 110,4072 }, { 111,4072 }, - { 112,4072 }, { 113,4072 }, { 114,4072 }, { 115,4072 }, { 116,4072 }, - { 117,4072 }, { 118,4072 }, { 119,4072 }, { 120,4072 }, { 121,4072 }, - { 122,4072 }, { 123,4072 }, { 124,4072 }, { 125,4072 }, { 126,4072 }, - { 127,4072 }, { 128,4072 }, { 129,4072 }, { 130,4072 }, { 131,4072 }, - { 132,4072 }, { 133,4072 }, { 134,4072 }, { 135,4072 }, { 136,4072 }, - { 137,4072 }, { 138,4072 }, { 139,4072 }, { 140,4072 }, { 141,4072 }, - - { 142,4072 }, { 143,4072 }, { 144,4072 }, { 145,4072 }, { 146,4072 }, - { 147,4072 }, { 148,4072 }, { 149,4072 }, { 150,4072 }, { 151,4072 }, - { 152,4072 }, { 153,4072 }, { 154,4072 }, { 155,4072 }, { 156,4072 }, - { 157,4072 }, { 158,4072 }, { 159,4072 }, { 160,4072 }, { 161,4072 }, - { 162,4072 }, { 163,4072 }, { 164,4072 }, { 165,4072 }, { 166,4072 }, - { 167,4072 }, { 168,4072 }, { 169,4072 }, { 170,4072 }, { 171,4072 }, - { 172,4072 }, { 173,4072 }, { 174,4072 }, { 175,4072 }, { 176,4072 }, - { 177,4072 }, { 178,4072 }, { 179,4072 }, { 180,4072 }, { 181,4072 }, - { 182,4072 }, { 183,4072 }, { 184,4072 }, { 185,4072 }, { 186,4072 }, - { 187,4072 }, { 188,4072 }, { 189,4072 }, { 190,4072 }, { 191,4072 }, - - { 192,4072 }, { 193,4072 }, { 194,4072 }, { 195,4072 }, { 196,4072 }, - { 197,4072 }, { 198,4072 }, { 199,4072 }, { 200,4072 }, { 201,4072 }, - { 202,4072 }, { 203,4072 }, { 204,4072 }, { 205,4072 }, { 206,4072 }, - { 207,4072 }, { 208,4072 }, { 209,4072 }, { 210,4072 }, { 211,4072 }, - { 212,4072 }, { 213,4072 }, { 214,4072 }, { 215,4072 }, { 216,4072 }, - { 217,4072 }, { 218,4072 }, { 219,4072 }, { 220,4072 }, { 221,4072 }, - { 222,4072 }, { 223,4072 }, { 224,4072 }, { 225,4072 }, { 226,4072 }, - { 227,4072 }, { 228,4072 }, { 229,4072 }, { 230,4072 }, { 231,4072 }, - { 232,4072 }, { 233,4072 }, { 234,4072 }, { 235,4072 }, { 236,4072 }, - { 237,4072 }, { 238,4072 }, { 239,4072 }, { 240,4072 }, { 241,4072 }, - - { 242,4072 }, { 243,4072 }, { 244,4072 }, { 245,4072 }, { 246,4072 }, - { 247,4072 }, { 248,4072 }, { 249,4072 }, { 250,4072 }, { 251,4072 }, - { 252,4072 }, { 253,4072 }, { 254,4072 }, { 255,4072 }, { 256,4072 }, - { 0, 22 }, { 0,25384 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 9,3629 }, { 10,3634 }, { 0, 0 }, { 12,3629 }, { 13,3634 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 32,3629 }, { 0, 0 }, - - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 39,-4160 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 45,-4155 }, { 0, 46 }, { 0,25337 }, { 1,4025 }, - { 2,4025 }, { 3,4025 }, { 4,4025 }, { 5,4025 }, { 6,4025 }, - { 7,4025 }, { 8,4025 }, { 9,4025 }, { 10,4025 }, { 11,4025 }, - { 12,4025 }, { 13,4025 }, { 14,4025 }, { 15,4025 }, { 16,4025 }, - { 17,4025 }, { 18,4025 }, { 19,4025 }, { 20,4025 }, { 21,4025 }, - { 22,4025 }, { 23,4025 }, { 24,4025 }, { 25,4025 }, { 26,4025 }, - { 27,4025 }, { 28,4025 }, { 29,4025 }, { 30,4025 }, { 31,4025 }, - { 32,4025 }, { 33,4025 }, { 34,4025 }, { 35,4025 }, { 0, 0 }, - - { 37,4025 }, { 38,4025 }, { 39,4025 }, { 40,4025 }, { 41,4025 }, - { 42,4025 }, { 43,4025 }, { 44,4025 }, { 45,4025 }, { 46,4025 }, - { 47,4025 }, { 48,4025 }, { 49,4025 }, { 50,4025 }, { 51,4025 }, - { 52,4025 }, { 53,4025 }, { 54,4025 }, { 55,4025 }, { 56,4025 }, - { 57,4025 }, { 58,4025 }, { 59,4025 }, { 60,4025 }, { 61,4025 }, - { 62,4025 }, { 63,4025 }, { 64,4025 }, { 65,4025 }, { 66,4025 }, - { 67,4025 }, { 68,4025 }, { 69,4025 }, { 70,4025 }, { 71,4025 }, - { 72,4025 }, { 73,4025 }, { 74,4025 }, { 75,4025 }, { 76,4025 }, - { 77,4025 }, { 78,4025 }, { 79,4025 }, { 80,4025 }, { 81,4025 }, - { 82,4025 }, { 83,4025 }, { 84,4025 }, { 85,4025 }, { 86,4025 }, - - { 87,4025 }, { 88,4025 }, { 89,4025 }, { 90,4025 }, { 91,4025 }, - { 92,4025 }, { 93,4025 }, { 94,4025 }, { 95,4025 }, { 96,4025 }, - { 97,4025 }, { 98,4025 }, { 99,4025 }, { 100,4025 }, { 101,4025 }, - { 102,4025 }, { 103,4025 }, { 104,4025 }, { 105,4025 }, { 106,4025 }, - { 107,4025 }, { 108,4025 }, { 109,4025 }, { 110,4025 }, { 111,4025 }, - { 112,4025 }, { 113,4025 }, { 114,4025 }, { 115,4025 }, { 116,4025 }, - { 117,4025 }, { 118,4025 }, { 119,4025 }, { 120,4025 }, { 121,4025 }, - { 122,4025 }, { 123,4025 }, { 124,4025 }, { 125,4025 }, { 126,4025 }, - { 127,4025 }, { 128,4025 }, { 129,4025 }, { 130,4025 }, { 131,4025 }, - { 132,4025 }, { 133,4025 }, { 134,4025 }, { 135,4025 }, { 136,4025 }, - - { 137,4025 }, { 138,4025 }, { 139,4025 }, { 140,4025 }, { 141,4025 }, - { 142,4025 }, { 143,4025 }, { 144,4025 }, { 145,4025 }, { 146,4025 }, - { 147,4025 }, { 148,4025 }, { 149,4025 }, { 150,4025 }, { 151,4025 }, - { 152,4025 }, { 153,4025 }, { 154,4025 }, { 155,4025 }, { 156,4025 }, - { 157,4025 }, { 158,4025 }, { 159,4025 }, { 160,4025 }, { 161,4025 }, - { 162,4025 }, { 163,4025 }, { 164,4025 }, { 165,4025 }, { 166,4025 }, - { 167,4025 }, { 168,4025 }, { 169,4025 }, { 170,4025 }, { 171,4025 }, - { 172,4025 }, { 173,4025 }, { 174,4025 }, { 175,4025 }, { 176,4025 }, - { 177,4025 }, { 178,4025 }, { 179,4025 }, { 180,4025 }, { 181,4025 }, - { 182,4025 }, { 183,4025 }, { 184,4025 }, { 185,4025 }, { 186,4025 }, - - { 187,4025 }, { 188,4025 }, { 189,4025 }, { 190,4025 }, { 191,4025 }, - { 192,4025 }, { 193,4025 }, { 194,4025 }, { 195,4025 }, { 196,4025 }, - { 197,4025 }, { 198,4025 }, { 199,4025 }, { 200,4025 }, { 201,4025 }, - { 202,4025 }, { 203,4025 }, { 204,4025 }, { 205,4025 }, { 206,4025 }, - { 207,4025 }, { 208,4025 }, { 209,4025 }, { 210,4025 }, { 211,4025 }, - { 212,4025 }, { 213,4025 }, { 214,4025 }, { 215,4025 }, { 216,4025 }, - { 217,4025 }, { 218,4025 }, { 219,4025 }, { 220,4025 }, { 221,4025 }, - { 222,4025 }, { 223,4025 }, { 224,4025 }, { 225,4025 }, { 226,4025 }, - { 227,4025 }, { 228,4025 }, { 229,4025 }, { 230,4025 }, { 231,4025 }, - { 232,4025 }, { 233,4025 }, { 234,4025 }, { 235,4025 }, { 236,4025 }, - - { 237,4025 }, { 238,4025 }, { 239,4025 }, { 240,4025 }, { 241,4025 }, - { 242,4025 }, { 243,4025 }, { 244,4025 }, { 245,4025 }, { 246,4025 }, - { 247,4025 }, { 248,4025 }, { 249,4025 }, { 250,4025 }, { 251,4025 }, - { 252,4025 }, { 253,4025 }, { 254,4025 }, { 255,4025 }, { 256,4025 }, - { 0, 46 }, { 0,25079 }, { 1,3767 }, { 2,3767 }, { 3,3767 }, - { 4,3767 }, { 5,3767 }, { 6,3767 }, { 7,3767 }, { 8,3767 }, - { 9,3767 }, { 10,3767 }, { 11,3767 }, { 12,3767 }, { 13,3767 }, - { 14,3767 }, { 15,3767 }, { 16,3767 }, { 17,3767 }, { 18,3767 }, - { 19,3767 }, { 20,3767 }, { 21,3767 }, { 22,3767 }, { 23,3767 }, - { 24,3767 }, { 25,3767 }, { 26,3767 }, { 27,3767 }, { 28,3767 }, - - { 29,3767 }, { 30,3767 }, { 31,3767 }, { 32,3767 }, { 33,3767 }, - { 34,3767 }, { 35,3767 }, { 0, 0 }, { 37,3767 }, { 38,3767 }, - { 39,3767 }, { 40,3767 }, { 41,3767 }, { 42,3767 }, { 43,3767 }, - { 44,3767 }, { 45,3767 }, { 46,3767 }, { 47,3767 }, { 48,3767 }, - { 49,3767 }, { 50,3767 }, { 51,3767 }, { 52,3767 }, { 53,3767 }, - { 54,3767 }, { 55,3767 }, { 56,3767 }, { 57,3767 }, { 58,3767 }, - { 59,3767 }, { 60,3767 }, { 61,3767 }, { 62,3767 }, { 63,3767 }, - { 64,3767 }, { 65,3767 }, { 66,3767 }, { 67,3767 }, { 68,3767 }, - { 69,3767 }, { 70,3767 }, { 71,3767 }, { 72,3767 }, { 73,3767 }, - { 74,3767 }, { 75,3767 }, { 76,3767 }, { 77,3767 }, { 78,3767 }, - - { 79,3767 }, { 80,3767 }, { 81,3767 }, { 82,3767 }, { 83,3767 }, - { 84,3767 }, { 85,3767 }, { 86,3767 }, { 87,3767 }, { 88,3767 }, - { 89,3767 }, { 90,3767 }, { 91,3767 }, { 92,3767 }, { 93,3767 }, - { 94,3767 }, { 95,3767 }, { 96,3767 }, { 97,3767 }, { 98,3767 }, - { 99,3767 }, { 100,3767 }, { 101,3767 }, { 102,3767 }, { 103,3767 }, - { 104,3767 }, { 105,3767 }, { 106,3767 }, { 107,3767 }, { 108,3767 }, - { 109,3767 }, { 110,3767 }, { 111,3767 }, { 112,3767 }, { 113,3767 }, - { 114,3767 }, { 115,3767 }, { 116,3767 }, { 117,3767 }, { 118,3767 }, - { 119,3767 }, { 120,3767 }, { 121,3767 }, { 122,3767 }, { 123,3767 }, - { 124,3767 }, { 125,3767 }, { 126,3767 }, { 127,3767 }, { 128,3767 }, - - { 129,3767 }, { 130,3767 }, { 131,3767 }, { 132,3767 }, { 133,3767 }, - { 134,3767 }, { 135,3767 }, { 136,3767 }, { 137,3767 }, { 138,3767 }, - { 139,3767 }, { 140,3767 }, { 141,3767 }, { 142,3767 }, { 143,3767 }, - { 144,3767 }, { 145,3767 }, { 146,3767 }, { 147,3767 }, { 148,3767 }, - { 149,3767 }, { 150,3767 }, { 151,3767 }, { 152,3767 }, { 153,3767 }, - { 154,3767 }, { 155,3767 }, { 156,3767 }, { 157,3767 }, { 158,3767 }, - { 159,3767 }, { 160,3767 }, { 161,3767 }, { 162,3767 }, { 163,3767 }, - { 164,3767 }, { 165,3767 }, { 166,3767 }, { 167,3767 }, { 168,3767 }, - { 169,3767 }, { 170,3767 }, { 171,3767 }, { 172,3767 }, { 173,3767 }, - { 174,3767 }, { 175,3767 }, { 176,3767 }, { 177,3767 }, { 178,3767 }, - - { 179,3767 }, { 180,3767 }, { 181,3767 }, { 182,3767 }, { 183,3767 }, - { 184,3767 }, { 185,3767 }, { 186,3767 }, { 187,3767 }, { 188,3767 }, - { 189,3767 }, { 190,3767 }, { 191,3767 }, { 192,3767 }, { 193,3767 }, - { 194,3767 }, { 195,3767 }, { 196,3767 }, { 197,3767 }, { 198,3767 }, - { 199,3767 }, { 200,3767 }, { 201,3767 }, { 202,3767 }, { 203,3767 }, - { 204,3767 }, { 205,3767 }, { 206,3767 }, { 207,3767 }, { 208,3767 }, - { 209,3767 }, { 210,3767 }, { 211,3767 }, { 212,3767 }, { 213,3767 }, - { 214,3767 }, { 215,3767 }, { 216,3767 }, { 217,3767 }, { 218,3767 }, - { 219,3767 }, { 220,3767 }, { 221,3767 }, { 222,3767 }, { 223,3767 }, - { 224,3767 }, { 225,3767 }, { 226,3767 }, { 227,3767 }, { 228,3767 }, - - { 229,3767 }, { 230,3767 }, { 231,3767 }, { 232,3767 }, { 233,3767 }, - { 234,3767 }, { 235,3767 }, { 236,3767 }, { 237,3767 }, { 238,3767 }, - { 239,3767 }, { 240,3767 }, { 241,3767 }, { 242,3767 }, { 243,3767 }, - { 244,3767 }, { 245,3767 }, { 246,3767 }, { 247,3767 }, { 248,3767 }, - { 249,3767 }, { 250,3767 }, { 251,3767 }, { 252,3767 }, { 253,3767 }, - { 254,3767 }, { 255,3767 }, { 256,3767 }, { 0, 48 }, { 0,24821 }, - { 0, 53 }, { 0,24819 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 0, 53 }, { 0,24814 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 9,3767 }, { 10,3767 }, { 0, 0 }, { 12,3767 }, { 13,3767 }, - { 9,3762 }, { 10,3762 }, { 0, 0 }, { 12,3762 }, { 13,3762 }, - - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 32,3767 }, { 0, 0 }, - { 36,-4714 }, { 0, 0 }, { 0, 0 }, { 32,3762 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 65,3767 }, - { 66,3767 }, { 67,3767 }, { 68,3767 }, { 69,3767 }, { 70,3767 }, - - { 71,3767 }, { 72,3767 }, { 73,3767 }, { 74,3767 }, { 75,3767 }, - { 76,3767 }, { 77,3767 }, { 78,3767 }, { 79,3767 }, { 80,3767 }, - { 81,3767 }, { 82,3767 }, { 83,3767 }, { 84,3767 }, { 85,3767 }, - { 86,3767 }, { 87,3767 }, { 88,3767 }, { 89,3767 }, { 90,3767 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 95,3767 }, - { 0, 0 }, { 97,3767 }, { 98,3767 }, { 99,3767 }, { 100,3767 }, - { 101,3767 }, { 102,3767 }, { 103,3767 }, { 104,3767 }, { 105,3767 }, - { 106,3767 }, { 107,3767 }, { 108,3767 }, { 109,3767 }, { 110,3767 }, - { 111,3767 }, { 112,3767 }, { 113,3767 }, { 114,3767 }, { 115,3767 }, - { 116,3767 }, { 117,3767 }, { 118,3767 }, { 119,3767 }, { 120,3767 }, - - { 121,3767 }, { 122,3767 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 128,3767 }, { 129,3767 }, { 130,3767 }, - { 131,3767 }, { 132,3767 }, { 133,3767 }, { 134,3767 }, { 135,3767 }, - { 136,3767 }, { 137,3767 }, { 138,3767 }, { 139,3767 }, { 140,3767 }, - { 141,3767 }, { 142,3767 }, { 143,3767 }, { 144,3767 }, { 145,3767 }, - { 146,3767 }, { 147,3767 }, { 148,3767 }, { 149,3767 }, { 150,3767 }, - { 151,3767 }, { 152,3767 }, { 153,3767 }, { 154,3767 }, { 155,3767 }, - { 156,3767 }, { 157,3767 }, { 158,3767 }, { 159,3767 }, { 160,3767 }, - { 161,3767 }, { 162,3767 }, { 163,3767 }, { 164,3767 }, { 165,3767 }, - { 166,3767 }, { 167,3767 }, { 168,3767 }, { 169,3767 }, { 170,3767 }, - - { 171,3767 }, { 172,3767 }, { 173,3767 }, { 174,3767 }, { 175,3767 }, - { 176,3767 }, { 177,3767 }, { 178,3767 }, { 179,3767 }, { 180,3767 }, - { 181,3767 }, { 182,3767 }, { 183,3767 }, { 184,3767 }, { 185,3767 }, - { 186,3767 }, { 187,3767 }, { 188,3767 }, { 189,3767 }, { 190,3767 }, - { 191,3767 }, { 192,3767 }, { 193,3767 }, { 194,3767 }, { 195,3767 }, - { 196,3767 }, { 197,3767 }, { 198,3767 }, { 199,3767 }, { 200,3767 }, - { 201,3767 }, { 202,3767 }, { 203,3767 }, { 204,3767 }, { 205,3767 }, - { 206,3767 }, { 207,3767 }, { 208,3767 }, { 209,3767 }, { 210,3767 }, - { 211,3767 }, { 212,3767 }, { 213,3767 }, { 214,3767 }, { 215,3767 }, - { 216,3767 }, { 217,3767 }, { 218,3767 }, { 219,3767 }, { 220,3767 }, - - { 221,3767 }, { 222,3767 }, { 223,3767 }, { 224,3767 }, { 225,3767 }, - { 226,3767 }, { 227,3767 }, { 228,3767 }, { 229,3767 }, { 230,3767 }, - { 231,3767 }, { 232,3767 }, { 233,3767 }, { 234,3767 }, { 235,3767 }, - { 236,3767 }, { 237,3767 }, { 238,3767 }, { 239,3767 }, { 240,3767 }, - { 241,3767 }, { 242,3767 }, { 243,3767 }, { 244,3767 }, { 245,3767 }, - { 246,3767 }, { 247,3767 }, { 248,3767 }, { 249,3767 }, { 250,3767 }, - { 251,3767 }, { 252,3767 }, { 253,3767 }, { 254,3767 }, { 255,3767 }, - { 0, 24 }, { 0,24564 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 0, 26 }, { 0,24559 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 9,4025 }, { 10,4030 }, { 0, 0 }, { 12,4025 }, { 13,4030 }, - - { 9,4041 }, { 10,4041 }, { 0, 0 }, { 12,4041 }, { 13,4041 }, - { 0, 0 }, { 0, 26 }, { 0,24543 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 9,4025 }, { 10,4025 }, { 32,4025 }, { 12,4025 }, - { 13,4025 }, { 0, 0 }, { 0, 0 }, { 32,4041 }, { 0, 0 }, - { 39,-4980 }, { 0, 0 }, { 0, 1 }, { 0,24522 }, { 0, 70 }, - { 0,24520 }, { 45,-4928 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 9, 0 }, { 10, 0 }, { 32,4025 }, - { 12, 0 }, { 13, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 32, 0 }, { 0, 0 }, { 0, 0 }, { 33, 0 }, { 0, 0 }, - { 35, 0 }, { 0, 0 }, { 37, 0 }, { 38, 0 }, { 0, 68 }, - { 0,24480 }, { 0, 0 }, { 42, 0 }, { 43, 0 }, { 0, 0 }, - { 45, 0 }, { 0, 0 }, { 47, 0 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 0, 71 }, { 0,24463 }, { 0, 0 }, { 0, 0 }, + { 0, 0 }, { 0,17422 }, { 0, 0 }, { 0,17420 }, { 1,6192 }, + { 2,6192 }, { 3,6192 }, { 4,6192 }, { 5,6192 }, { 6,6192 }, + { 7,6192 }, { 8,6192 }, { 9,6194 }, { 10,6199 }, { 11,6192 }, + { 12,6194 }, { 13,6194 }, { 14,6192 }, { 15,6192 }, { 16,6192 }, + { 17,6192 }, { 18,6192 }, { 19,6192 }, { 20,6192 }, { 21,6192 }, + { 22,6192 }, { 23,6192 }, { 24,6192 }, { 25,6192 }, { 26,6192 }, + { 27,6192 }, { 28,6192 }, { 29,6192 }, { 30,6192 }, { 31,6192 }, + { 32,6194 }, { 33,6201 }, { 34,6196 }, { 35,6241 }, { 36,6307 }, + { 37,6564 }, { 38,6241 }, { 39,6214 }, { 40,6216 }, { 41,6216 }, + { 42,6564 }, { 43,6564 }, { 44,6216 }, { 45,6575 }, { 46,6594 }, + + { 47,6665 }, { 48,6667 }, { 49,6667 }, { 50,6667 }, { 51,6667 }, + { 52,6667 }, { 53,6667 }, { 54,6667 }, { 55,6667 }, { 56,6667 }, + { 57,6667 }, { 58,6219 }, { 59,6216 }, { 60,6732 }, { 61,6743 }, + { 62,6810 }, { 63,6564 }, { 64,6241 }, { 65,6842 }, { 66,7099 }, + { 67,6842 }, { 68,6842 }, { 69,7356 }, { 70,6842 }, { 71,6842 }, + { 72,6842 }, { 73,6842 }, { 74,6842 }, { 75,6842 }, { 76,6842 }, + { 77,6842 }, { 78,7613 }, { 79,6842 }, { 80,6842 }, { 81,6842 }, + { 82,6842 }, { 83,6842 }, { 84,6842 }, { 85,7870 }, { 86,6842 }, + { 87,6842 }, { 88,8127 }, { 89,6842 }, { 90,6842 }, { 91,6216 }, + { 92,6192 }, { 93,6216 }, { 94,6564 }, { 95,6842 }, { 96,6241 }, + + { 97,6842 }, { 98,7099 }, { 99,6842 }, { 100,6842 }, { 101,7356 }, + { 102,6842 }, { 103,6842 }, { 104,6842 }, { 105,6842 }, { 106,6842 }, + { 107,6842 }, { 108,6842 }, { 109,6842 }, { 110,7613 }, { 111,6842 }, + { 112,6842 }, { 113,6842 }, { 114,6842 }, { 115,6842 }, { 116,6842 }, + { 117,7870 }, { 118,6842 }, { 119,6842 }, { 120,8127 }, { 121,6842 }, + { 122,6842 }, { 123,6192 }, { 124,6241 }, { 125,6192 }, { 126,6241 }, + { 127,6192 }, { 128,6842 }, { 129,6842 }, { 130,6842 }, { 131,6842 }, + { 132,6842 }, { 133,6842 }, { 134,6842 }, { 135,6842 }, { 136,6842 }, + { 137,6842 }, { 138,6842 }, { 139,6842 }, { 140,6842 }, { 141,6842 }, + { 142,6842 }, { 143,6842 }, { 144,6842 }, { 145,6842 }, { 146,6842 }, + + { 147,6842 }, { 148,6842 }, { 149,6842 }, { 150,6842 }, { 151,6842 }, + { 152,6842 }, { 153,6842 }, { 154,6842 }, { 155,6842 }, { 156,6842 }, + { 157,6842 }, { 158,6842 }, { 159,6842 }, { 160,6842 }, { 161,6842 }, + { 162,6842 }, { 163,6842 }, { 164,6842 }, { 165,6842 }, { 166,6842 }, + { 167,6842 }, { 168,6842 }, { 169,6842 }, { 170,6842 }, { 171,6842 }, + { 172,6842 }, { 173,6842 }, { 174,6842 }, { 175,6842 }, { 176,6842 }, + { 177,6842 }, { 178,6842 }, { 179,6842 }, { 180,6842 }, { 181,6842 }, + { 182,6842 }, { 183,6842 }, { 184,6842 }, { 185,6842 }, { 186,6842 }, + { 187,6842 }, { 188,6842 }, { 189,6842 }, { 190,6842 }, { 191,6842 }, + { 192,6842 }, { 193,6842 }, { 194,6842 }, { 195,6842 }, { 196,6842 }, + + { 197,6842 }, { 198,6842 }, { 199,6842 }, { 200,6842 }, { 201,6842 }, + { 202,6842 }, { 203,6842 }, { 204,6842 }, { 205,6842 }, { 206,6842 }, + { 207,6842 }, { 208,6842 }, { 209,6842 }, { 210,6842 }, { 211,6842 }, + { 212,6842 }, { 213,6842 }, { 214,6842 }, { 215,6842 }, { 216,6842 }, + { 217,6842 }, { 218,6842 }, { 219,6842 }, { 220,6842 }, { 221,6842 }, + { 222,6842 }, { 223,6842 }, { 224,6842 }, { 225,6842 }, { 226,6842 }, + { 227,6842 }, { 228,6842 }, { 229,6842 }, { 230,6842 }, { 231,6842 }, + { 232,6842 }, { 233,6842 }, { 234,6842 }, { 235,6842 }, { 236,6842 }, + { 237,6842 }, { 238,6842 }, { 239,6842 }, { 240,6842 }, { 241,6842 }, + { 242,6842 }, { 243,6842 }, { 244,6842 }, { 245,6842 }, { 246,6842 }, + + { 247,6842 }, { 248,6842 }, { 249,6842 }, { 250,6842 }, { 251,6842 }, + { 252,6842 }, { 253,6842 }, { 254,6842 }, { 255,6842 }, { 256,6192 }, + { 0, 0 }, { 0,17162 }, { 1,5934 }, { 2,5934 }, { 3,5934 }, + { 4,5934 }, { 5,5934 }, { 6,5934 }, { 7,5934 }, { 8,5934 }, + { 9,5936 }, { 10,5941 }, { 11,5934 }, { 12,5936 }, { 13,5936 }, + { 14,5934 }, { 15,5934 }, { 16,5934 }, { 17,5934 }, { 18,5934 }, + { 19,5934 }, { 20,5934 }, { 21,5934 }, { 22,5934 }, { 23,5934 }, + { 24,5934 }, { 25,5934 }, { 26,5934 }, { 27,5934 }, { 28,5934 }, + { 29,5934 }, { 30,5934 }, { 31,5934 }, { 32,5936 }, { 33,5943 }, + { 34,5938 }, { 35,5983 }, { 36,6049 }, { 37,6306 }, { 38,5983 }, + + { 39,5956 }, { 40,5958 }, { 41,5958 }, { 42,6306 }, { 43,6306 }, + { 44,5958 }, { 45,6317 }, { 46,6336 }, { 47,6407 }, { 48,6409 }, + { 49,6409 }, { 50,6409 }, { 51,6409 }, { 52,6409 }, { 53,6409 }, + { 54,6409 }, { 55,6409 }, { 56,6409 }, { 57,6409 }, { 58,5961 }, + { 59,5958 }, { 60,6474 }, { 61,6485 }, { 62,6552 }, { 63,6306 }, + { 64,5983 }, { 65,6584 }, { 66,6841 }, { 67,6584 }, { 68,6584 }, + { 69,7098 }, { 70,6584 }, { 71,6584 }, { 72,6584 }, { 73,6584 }, + { 74,6584 }, { 75,6584 }, { 76,6584 }, { 77,6584 }, { 78,7355 }, + { 79,6584 }, { 80,6584 }, { 81,6584 }, { 82,6584 }, { 83,6584 }, + { 84,6584 }, { 85,7612 }, { 86,6584 }, { 87,6584 }, { 88,7869 }, + + { 89,6584 }, { 90,6584 }, { 91,5958 }, { 92,5934 }, { 93,5958 }, + { 94,6306 }, { 95,6584 }, { 96,5983 }, { 97,6584 }, { 98,6841 }, + { 99,6584 }, { 100,6584 }, { 101,7098 }, { 102,6584 }, { 103,6584 }, + { 104,6584 }, { 105,6584 }, { 106,6584 }, { 107,6584 }, { 108,6584 }, + { 109,6584 }, { 110,7355 }, { 111,6584 }, { 112,6584 }, { 113,6584 }, + { 114,6584 }, { 115,6584 }, { 116,6584 }, { 117,7612 }, { 118,6584 }, + { 119,6584 }, { 120,7869 }, { 121,6584 }, { 122,6584 }, { 123,5934 }, + { 124,5983 }, { 125,5934 }, { 126,5983 }, { 127,5934 }, { 128,6584 }, + { 129,6584 }, { 130,6584 }, { 131,6584 }, { 132,6584 }, { 133,6584 }, + { 134,6584 }, { 135,6584 }, { 136,6584 }, { 137,6584 }, { 138,6584 }, + + { 139,6584 }, { 140,6584 }, { 141,6584 }, { 142,6584 }, { 143,6584 }, + { 144,6584 }, { 145,6584 }, { 146,6584 }, { 147,6584 }, { 148,6584 }, + { 149,6584 }, { 150,6584 }, { 151,6584 }, { 152,6584 }, { 153,6584 }, + { 154,6584 }, { 155,6584 }, { 156,6584 }, { 157,6584 }, { 158,6584 }, + { 159,6584 }, { 160,6584 }, { 161,6584 }, { 162,6584 }, { 163,6584 }, + { 164,6584 }, { 165,6584 }, { 166,6584 }, { 167,6584 }, { 168,6584 }, + { 169,6584 }, { 170,6584 }, { 171,6584 }, { 172,6584 }, { 173,6584 }, + { 174,6584 }, { 175,6584 }, { 176,6584 }, { 177,6584 }, { 178,6584 }, + { 179,6584 }, { 180,6584 }, { 181,6584 }, { 182,6584 }, { 183,6584 }, + { 184,6584 }, { 185,6584 }, { 186,6584 }, { 187,6584 }, { 188,6584 }, + + { 189,6584 }, { 190,6584 }, { 191,6584 }, { 192,6584 }, { 193,6584 }, + { 194,6584 }, { 195,6584 }, { 196,6584 }, { 197,6584 }, { 198,6584 }, + { 199,6584 }, { 200,6584 }, { 201,6584 }, { 202,6584 }, { 203,6584 }, + { 204,6584 }, { 205,6584 }, { 206,6584 }, { 207,6584 }, { 208,6584 }, + { 209,6584 }, { 210,6584 }, { 211,6584 }, { 212,6584 }, { 213,6584 }, + { 214,6584 }, { 215,6584 }, { 216,6584 }, { 217,6584 }, { 218,6584 }, + { 219,6584 }, { 220,6584 }, { 221,6584 }, { 222,6584 }, { 223,6584 }, + { 224,6584 }, { 225,6584 }, { 226,6584 }, { 227,6584 }, { 228,6584 }, + { 229,6584 }, { 230,6584 }, { 231,6584 }, { 232,6584 }, { 233,6584 }, + { 234,6584 }, { 235,6584 }, { 236,6584 }, { 237,6584 }, { 238,6584 }, + + { 239,6584 }, { 240,6584 }, { 241,6584 }, { 242,6584 }, { 243,6584 }, + { 244,6584 }, { 245,6584 }, { 246,6584 }, { 247,6584 }, { 248,6584 }, + { 249,6584 }, { 250,6584 }, { 251,6584 }, { 252,6584 }, { 253,6584 }, + { 254,6584 }, { 255,6584 }, { 256,5934 }, { 0, 11 }, { 0,16904 }, + { 1,7868 }, { 2,7868 }, { 3,7868 }, { 4,7868 }, { 5,7868 }, + { 6,7868 }, { 7,7868 }, { 8,7868 }, { 9,7868 }, { 10,7868 }, + { 11,7868 }, { 12,7868 }, { 13,7868 }, { 14,7868 }, { 15,7868 }, + { 16,7868 }, { 17,7868 }, { 18,7868 }, { 19,7868 }, { 20,7868 }, + { 21,7868 }, { 22,7868 }, { 23,7868 }, { 24,7868 }, { 25,7868 }, + { 26,7868 }, { 27,7868 }, { 28,7868 }, { 29,7868 }, { 30,7868 }, + + { 31,7868 }, { 32,7868 }, { 33,7868 }, { 34,7868 }, { 35,7868 }, + { 36,7868 }, { 37,7868 }, { 38,7868 }, { 39,5705 }, { 40,7868 }, + { 41,7868 }, { 42,7868 }, { 43,7868 }, { 44,7868 }, { 45,7868 }, + { 46,7868 }, { 47,7868 }, { 48,7868 }, { 49,7868 }, { 50,7868 }, + { 51,7868 }, { 52,7868 }, { 53,7868 }, { 54,7868 }, { 55,7868 }, + { 56,7868 }, { 57,7868 }, { 58,7868 }, { 59,7868 }, { 60,7868 }, + { 61,7868 }, { 62,7868 }, { 63,7868 }, { 64,7868 }, { 65,7868 }, + { 66,7868 }, { 67,7868 }, { 68,7868 }, { 69,7868 }, { 70,7868 }, + { 71,7868 }, { 72,7868 }, { 73,7868 }, { 74,7868 }, { 75,7868 }, + { 76,7868 }, { 77,7868 }, { 78,7868 }, { 79,7868 }, { 80,7868 }, + + { 81,7868 }, { 82,7868 }, { 83,7868 }, { 84,7868 }, { 85,7868 }, + { 86,7868 }, { 87,7868 }, { 88,7868 }, { 89,7868 }, { 90,7868 }, + { 91,7868 }, { 92,7868 }, { 93,7868 }, { 94,7868 }, { 95,7868 }, + { 96,7868 }, { 97,7868 }, { 98,7868 }, { 99,7868 }, { 100,7868 }, + { 101,7868 }, { 102,7868 }, { 103,7868 }, { 104,7868 }, { 105,7868 }, + { 106,7868 }, { 107,7868 }, { 108,7868 }, { 109,7868 }, { 110,7868 }, + { 111,7868 }, { 112,7868 }, { 113,7868 }, { 114,7868 }, { 115,7868 }, + { 116,7868 }, { 117,7868 }, { 118,7868 }, { 119,7868 }, { 120,7868 }, + { 121,7868 }, { 122,7868 }, { 123,7868 }, { 124,7868 }, { 125,7868 }, + { 126,7868 }, { 127,7868 }, { 128,7868 }, { 129,7868 }, { 130,7868 }, + + { 131,7868 }, { 132,7868 }, { 133,7868 }, { 134,7868 }, { 135,7868 }, + { 136,7868 }, { 137,7868 }, { 138,7868 }, { 139,7868 }, { 140,7868 }, + { 141,7868 }, { 142,7868 }, { 143,7868 }, { 144,7868 }, { 145,7868 }, + { 146,7868 }, { 147,7868 }, { 148,7868 }, { 149,7868 }, { 150,7868 }, + { 151,7868 }, { 152,7868 }, { 153,7868 }, { 154,7868 }, { 155,7868 }, + { 156,7868 }, { 157,7868 }, { 158,7868 }, { 159,7868 }, { 160,7868 }, + { 161,7868 }, { 162,7868 }, { 163,7868 }, { 164,7868 }, { 165,7868 }, + { 166,7868 }, { 167,7868 }, { 168,7868 }, { 169,7868 }, { 170,7868 }, + { 171,7868 }, { 172,7868 }, { 173,7868 }, { 174,7868 }, { 175,7868 }, + { 176,7868 }, { 177,7868 }, { 178,7868 }, { 179,7868 }, { 180,7868 }, + + { 181,7868 }, { 182,7868 }, { 183,7868 }, { 184,7868 }, { 185,7868 }, + { 186,7868 }, { 187,7868 }, { 188,7868 }, { 189,7868 }, { 190,7868 }, + { 191,7868 }, { 192,7868 }, { 193,7868 }, { 194,7868 }, { 195,7868 }, + { 196,7868 }, { 197,7868 }, { 198,7868 }, { 199,7868 }, { 200,7868 }, + { 201,7868 }, { 202,7868 }, { 203,7868 }, { 204,7868 }, { 205,7868 }, + { 206,7868 }, { 207,7868 }, { 208,7868 }, { 209,7868 }, { 210,7868 }, + { 211,7868 }, { 212,7868 }, { 213,7868 }, { 214,7868 }, { 215,7868 }, + { 216,7868 }, { 217,7868 }, { 218,7868 }, { 219,7868 }, { 220,7868 }, + { 221,7868 }, { 222,7868 }, { 223,7868 }, { 224,7868 }, { 225,7868 }, + { 226,7868 }, { 227,7868 }, { 228,7868 }, { 229,7868 }, { 230,7868 }, + + { 231,7868 }, { 232,7868 }, { 233,7868 }, { 234,7868 }, { 235,7868 }, + { 236,7868 }, { 237,7868 }, { 238,7868 }, { 239,7868 }, { 240,7868 }, + { 241,7868 }, { 242,7868 }, { 243,7868 }, { 244,7868 }, { 245,7868 }, + { 246,7868 }, { 247,7868 }, { 248,7868 }, { 249,7868 }, { 250,7868 }, + { 251,7868 }, { 252,7868 }, { 253,7868 }, { 254,7868 }, { 255,7868 }, + { 256,7868 }, { 0, 11 }, { 0,16646 }, { 1,7610 }, { 2,7610 }, + { 3,7610 }, { 4,7610 }, { 5,7610 }, { 6,7610 }, { 7,7610 }, + { 8,7610 }, { 9,7610 }, { 10,7610 }, { 11,7610 }, { 12,7610 }, + { 13,7610 }, { 14,7610 }, { 15,7610 }, { 16,7610 }, { 17,7610 }, + { 18,7610 }, { 19,7610 }, { 20,7610 }, { 21,7610 }, { 22,7610 }, + + { 23,7610 }, { 24,7610 }, { 25,7610 }, { 26,7610 }, { 27,7610 }, + { 28,7610 }, { 29,7610 }, { 30,7610 }, { 31,7610 }, { 32,7610 }, + { 33,7610 }, { 34,7610 }, { 35,7610 }, { 36,7610 }, { 37,7610 }, + { 38,7610 }, { 39,5447 }, { 40,7610 }, { 41,7610 }, { 42,7610 }, + { 43,7610 }, { 44,7610 }, { 45,7610 }, { 46,7610 }, { 47,7610 }, + { 48,7610 }, { 49,7610 }, { 50,7610 }, { 51,7610 }, { 52,7610 }, + { 53,7610 }, { 54,7610 }, { 55,7610 }, { 56,7610 }, { 57,7610 }, + { 58,7610 }, { 59,7610 }, { 60,7610 }, { 61,7610 }, { 62,7610 }, + { 63,7610 }, { 64,7610 }, { 65,7610 }, { 66,7610 }, { 67,7610 }, + { 68,7610 }, { 69,7610 }, { 70,7610 }, { 71,7610 }, { 72,7610 }, + + { 73,7610 }, { 74,7610 }, { 75,7610 }, { 76,7610 }, { 77,7610 }, + { 78,7610 }, { 79,7610 }, { 80,7610 }, { 81,7610 }, { 82,7610 }, + { 83,7610 }, { 84,7610 }, { 85,7610 }, { 86,7610 }, { 87,7610 }, + { 88,7610 }, { 89,7610 }, { 90,7610 }, { 91,7610 }, { 92,7610 }, + { 93,7610 }, { 94,7610 }, { 95,7610 }, { 96,7610 }, { 97,7610 }, + { 98,7610 }, { 99,7610 }, { 100,7610 }, { 101,7610 }, { 102,7610 }, + { 103,7610 }, { 104,7610 }, { 105,7610 }, { 106,7610 }, { 107,7610 }, + { 108,7610 }, { 109,7610 }, { 110,7610 }, { 111,7610 }, { 112,7610 }, + { 113,7610 }, { 114,7610 }, { 115,7610 }, { 116,7610 }, { 117,7610 }, + { 118,7610 }, { 119,7610 }, { 120,7610 }, { 121,7610 }, { 122,7610 }, + + { 123,7610 }, { 124,7610 }, { 125,7610 }, { 126,7610 }, { 127,7610 }, + { 128,7610 }, { 129,7610 }, { 130,7610 }, { 131,7610 }, { 132,7610 }, + { 133,7610 }, { 134,7610 }, { 135,7610 }, { 136,7610 }, { 137,7610 }, + { 138,7610 }, { 139,7610 }, { 140,7610 }, { 141,7610 }, { 142,7610 }, + { 143,7610 }, { 144,7610 }, { 145,7610 }, { 146,7610 }, { 147,7610 }, + { 148,7610 }, { 149,7610 }, { 150,7610 }, { 151,7610 }, { 152,7610 }, + { 153,7610 }, { 154,7610 }, { 155,7610 }, { 156,7610 }, { 157,7610 }, + { 158,7610 }, { 159,7610 }, { 160,7610 }, { 161,7610 }, { 162,7610 }, + { 163,7610 }, { 164,7610 }, { 165,7610 }, { 166,7610 }, { 167,7610 }, + { 168,7610 }, { 169,7610 }, { 170,7610 }, { 171,7610 }, { 172,7610 }, + + { 173,7610 }, { 174,7610 }, { 175,7610 }, { 176,7610 }, { 177,7610 }, + { 178,7610 }, { 179,7610 }, { 180,7610 }, { 181,7610 }, { 182,7610 }, + { 183,7610 }, { 184,7610 }, { 185,7610 }, { 186,7610 }, { 187,7610 }, + { 188,7610 }, { 189,7610 }, { 190,7610 }, { 191,7610 }, { 192,7610 }, + { 193,7610 }, { 194,7610 }, { 195,7610 }, { 196,7610 }, { 197,7610 }, + { 198,7610 }, { 199,7610 }, { 200,7610 }, { 201,7610 }, { 202,7610 }, + { 203,7610 }, { 204,7610 }, { 205,7610 }, { 206,7610 }, { 207,7610 }, + { 208,7610 }, { 209,7610 }, { 210,7610 }, { 211,7610 }, { 212,7610 }, + { 213,7610 }, { 214,7610 }, { 215,7610 }, { 216,7610 }, { 217,7610 }, + { 218,7610 }, { 219,7610 }, { 220,7610 }, { 221,7610 }, { 222,7610 }, + + { 223,7610 }, { 224,7610 }, { 225,7610 }, { 226,7610 }, { 227,7610 }, + { 228,7610 }, { 229,7610 }, { 230,7610 }, { 231,7610 }, { 232,7610 }, + { 233,7610 }, { 234,7610 }, { 235,7610 }, { 236,7610 }, { 237,7610 }, + { 238,7610 }, { 239,7610 }, { 240,7610 }, { 241,7610 }, { 242,7610 }, + { 243,7610 }, { 244,7610 }, { 245,7610 }, { 246,7610 }, { 247,7610 }, + { 248,7610 }, { 249,7610 }, { 250,7610 }, { 251,7610 }, { 252,7610 }, + { 253,7610 }, { 254,7610 }, { 255,7610 }, { 256,7610 }, { 0, 0 }, + { 0,16388 }, { 1,7610 }, { 2,7610 }, { 3,7610 }, { 4,7610 }, + { 5,7610 }, { 6,7610 }, { 7,7610 }, { 8,7610 }, { 9,7610 }, + { 10,7610 }, { 11,7610 }, { 12,7610 }, { 13,7610 }, { 14,7610 }, + + { 15,7610 }, { 16,7610 }, { 17,7610 }, { 18,7610 }, { 19,7610 }, + { 20,7610 }, { 21,7610 }, { 22,7610 }, { 23,7610 }, { 24,7610 }, + { 25,7610 }, { 26,7610 }, { 27,7610 }, { 28,7610 }, { 29,7610 }, + { 30,7610 }, { 31,7610 }, { 32,7610 }, { 33,7868 }, { 34,7610 }, + { 35,7868 }, { 36,7610 }, { 37,7868 }, { 38,7868 }, { 39,7610 }, + { 40,7610 }, { 41,7610 }, { 42,5192 }, { 43,7868 }, { 44,7610 }, + { 45,7868 }, { 46,7610 }, { 47,5196 }, { 48,7610 }, { 49,7610 }, + { 50,7610 }, { 51,7610 }, { 52,7610 }, { 53,7610 }, { 54,7610 }, + { 55,7610 }, { 56,7610 }, { 57,7610 }, { 58,7610 }, { 59,7610 }, + { 60,7868 }, { 61,7868 }, { 62,7868 }, { 63,7868 }, { 64,7868 }, + + { 65,7610 }, { 66,7610 }, { 67,7610 }, { 68,7610 }, { 69,7610 }, + { 70,7610 }, { 71,7610 }, { 72,7610 }, { 73,7610 }, { 74,7610 }, + { 75,7610 }, { 76,7610 }, { 77,7610 }, { 78,7610 }, { 79,7610 }, + { 80,7610 }, { 81,7610 }, { 82,7610 }, { 83,7610 }, { 84,7610 }, + { 85,7610 }, { 86,7610 }, { 87,7610 }, { 88,7610 }, { 89,7610 }, + { 90,7610 }, { 91,7610 }, { 92,7610 }, { 93,7610 }, { 94,7868 }, + { 95,7610 }, { 96,7868 }, { 97,7610 }, { 98,7610 }, { 99,7610 }, + { 100,7610 }, { 101,7610 }, { 102,7610 }, { 103,7610 }, { 104,7610 }, + { 105,7610 }, { 106,7610 }, { 107,7610 }, { 108,7610 }, { 109,7610 }, + { 110,7610 }, { 111,7610 }, { 112,7610 }, { 113,7610 }, { 114,7610 }, + + { 115,7610 }, { 116,7610 }, { 117,7610 }, { 118,7610 }, { 119,7610 }, + { 120,7610 }, { 121,7610 }, { 122,7610 }, { 123,7610 }, { 124,7868 }, + { 125,7610 }, { 126,7868 }, { 127,7610 }, { 128,7610 }, { 129,7610 }, + { 130,7610 }, { 131,7610 }, { 132,7610 }, { 133,7610 }, { 134,7610 }, + { 135,7610 }, { 136,7610 }, { 137,7610 }, { 138,7610 }, { 139,7610 }, + { 140,7610 }, { 141,7610 }, { 142,7610 }, { 143,7610 }, { 144,7610 }, + { 145,7610 }, { 146,7610 }, { 147,7610 }, { 148,7610 }, { 149,7610 }, + { 150,7610 }, { 151,7610 }, { 152,7610 }, { 153,7610 }, { 154,7610 }, + { 155,7610 }, { 156,7610 }, { 157,7610 }, { 158,7610 }, { 159,7610 }, + { 160,7610 }, { 161,7610 }, { 162,7610 }, { 163,7610 }, { 164,7610 }, + + { 165,7610 }, { 166,7610 }, { 167,7610 }, { 168,7610 }, { 169,7610 }, + { 170,7610 }, { 171,7610 }, { 172,7610 }, { 173,7610 }, { 174,7610 }, + { 175,7610 }, { 176,7610 }, { 177,7610 }, { 178,7610 }, { 179,7610 }, + { 180,7610 }, { 181,7610 }, { 182,7610 }, { 183,7610 }, { 184,7610 }, + { 185,7610 }, { 186,7610 }, { 187,7610 }, { 188,7610 }, { 189,7610 }, + { 190,7610 }, { 191,7610 }, { 192,7610 }, { 193,7610 }, { 194,7610 }, + { 195,7610 }, { 196,7610 }, { 197,7610 }, { 198,7610 }, { 199,7610 }, + { 200,7610 }, { 201,7610 }, { 202,7610 }, { 203,7610 }, { 204,7610 }, + { 205,7610 }, { 206,7610 }, { 207,7610 }, { 208,7610 }, { 209,7610 }, + { 210,7610 }, { 211,7610 }, { 212,7610 }, { 213,7610 }, { 214,7610 }, + + { 215,7610 }, { 216,7610 }, { 217,7610 }, { 218,7610 }, { 219,7610 }, + { 220,7610 }, { 221,7610 }, { 222,7610 }, { 223,7610 }, { 224,7610 }, + { 225,7610 }, { 226,7610 }, { 227,7610 }, { 228,7610 }, { 229,7610 }, + { 230,7610 }, { 231,7610 }, { 232,7610 }, { 233,7610 }, { 234,7610 }, + { 235,7610 }, { 236,7610 }, { 237,7610 }, { 238,7610 }, { 239,7610 }, + { 240,7610 }, { 241,7610 }, { 242,7610 }, { 243,7610 }, { 244,7610 }, + { 245,7610 }, { 246,7610 }, { 247,7610 }, { 248,7610 }, { 249,7610 }, + { 250,7610 }, { 251,7610 }, { 252,7610 }, { 253,7610 }, { 254,7610 }, + { 255,7610 }, { 256,7610 }, { 0, 0 }, { 0,16130 }, { 1,7352 }, + { 2,7352 }, { 3,7352 }, { 4,7352 }, { 5,7352 }, { 6,7352 }, + + { 7,7352 }, { 8,7352 }, { 9,7352 }, { 10,7352 }, { 11,7352 }, + { 12,7352 }, { 13,7352 }, { 14,7352 }, { 15,7352 }, { 16,7352 }, + { 17,7352 }, { 18,7352 }, { 19,7352 }, { 20,7352 }, { 21,7352 }, + { 22,7352 }, { 23,7352 }, { 24,7352 }, { 25,7352 }, { 26,7352 }, + { 27,7352 }, { 28,7352 }, { 29,7352 }, { 30,7352 }, { 31,7352 }, + { 32,7352 }, { 33,7610 }, { 34,7352 }, { 35,7610 }, { 36,7352 }, + { 37,7610 }, { 38,7610 }, { 39,7352 }, { 40,7352 }, { 41,7352 }, + { 42,4934 }, { 43,7610 }, { 44,7352 }, { 45,7610 }, { 46,7352 }, + { 47,4938 }, { 48,7352 }, { 49,7352 }, { 50,7352 }, { 51,7352 }, + { 52,7352 }, { 53,7352 }, { 54,7352 }, { 55,7352 }, { 56,7352 }, + + { 57,7352 }, { 58,7352 }, { 59,7352 }, { 60,7610 }, { 61,7610 }, + { 62,7610 }, { 63,7610 }, { 64,7610 }, { 65,7352 }, { 66,7352 }, + { 67,7352 }, { 68,7352 }, { 69,7352 }, { 70,7352 }, { 71,7352 }, + { 72,7352 }, { 73,7352 }, { 74,7352 }, { 75,7352 }, { 76,7352 }, + { 77,7352 }, { 78,7352 }, { 79,7352 }, { 80,7352 }, { 81,7352 }, + { 82,7352 }, { 83,7352 }, { 84,7352 }, { 85,7352 }, { 86,7352 }, + { 87,7352 }, { 88,7352 }, { 89,7352 }, { 90,7352 }, { 91,7352 }, + { 92,7352 }, { 93,7352 }, { 94,7610 }, { 95,7352 }, { 96,7610 }, + { 97,7352 }, { 98,7352 }, { 99,7352 }, { 100,7352 }, { 101,7352 }, + { 102,7352 }, { 103,7352 }, { 104,7352 }, { 105,7352 }, { 106,7352 }, + + { 107,7352 }, { 108,7352 }, { 109,7352 }, { 110,7352 }, { 111,7352 }, + { 112,7352 }, { 113,7352 }, { 114,7352 }, { 115,7352 }, { 116,7352 }, + { 117,7352 }, { 118,7352 }, { 119,7352 }, { 120,7352 }, { 121,7352 }, + { 122,7352 }, { 123,7352 }, { 124,7610 }, { 125,7352 }, { 126,7610 }, + { 127,7352 }, { 128,7352 }, { 129,7352 }, { 130,7352 }, { 131,7352 }, + { 132,7352 }, { 133,7352 }, { 134,7352 }, { 135,7352 }, { 136,7352 }, + { 137,7352 }, { 138,7352 }, { 139,7352 }, { 140,7352 }, { 141,7352 }, + { 142,7352 }, { 143,7352 }, { 144,7352 }, { 145,7352 }, { 146,7352 }, + { 147,7352 }, { 148,7352 }, { 149,7352 }, { 150,7352 }, { 151,7352 }, + { 152,7352 }, { 153,7352 }, { 154,7352 }, { 155,7352 }, { 156,7352 }, + + { 157,7352 }, { 158,7352 }, { 159,7352 }, { 160,7352 }, { 161,7352 }, + { 162,7352 }, { 163,7352 }, { 164,7352 }, { 165,7352 }, { 166,7352 }, + { 167,7352 }, { 168,7352 }, { 169,7352 }, { 170,7352 }, { 171,7352 }, + { 172,7352 }, { 173,7352 }, { 174,7352 }, { 175,7352 }, { 176,7352 }, + { 177,7352 }, { 178,7352 }, { 179,7352 }, { 180,7352 }, { 181,7352 }, + { 182,7352 }, { 183,7352 }, { 184,7352 }, { 185,7352 }, { 186,7352 }, + { 187,7352 }, { 188,7352 }, { 189,7352 }, { 190,7352 }, { 191,7352 }, + { 192,7352 }, { 193,7352 }, { 194,7352 }, { 195,7352 }, { 196,7352 }, + { 197,7352 }, { 198,7352 }, { 199,7352 }, { 200,7352 }, { 201,7352 }, + { 202,7352 }, { 203,7352 }, { 204,7352 }, { 205,7352 }, { 206,7352 }, + + { 207,7352 }, { 208,7352 }, { 209,7352 }, { 210,7352 }, { 211,7352 }, + { 212,7352 }, { 213,7352 }, { 214,7352 }, { 215,7352 }, { 216,7352 }, + { 217,7352 }, { 218,7352 }, { 219,7352 }, { 220,7352 }, { 221,7352 }, + { 222,7352 }, { 223,7352 }, { 224,7352 }, { 225,7352 }, { 226,7352 }, + { 227,7352 }, { 228,7352 }, { 229,7352 }, { 230,7352 }, { 231,7352 }, + { 232,7352 }, { 233,7352 }, { 234,7352 }, { 235,7352 }, { 236,7352 }, + { 237,7352 }, { 238,7352 }, { 239,7352 }, { 240,7352 }, { 241,7352 }, + { 242,7352 }, { 243,7352 }, { 244,7352 }, { 245,7352 }, { 246,7352 }, + { 247,7352 }, { 248,7352 }, { 249,7352 }, { 250,7352 }, { 251,7352 }, + { 252,7352 }, { 253,7352 }, { 254,7352 }, { 255,7352 }, { 256,7352 }, + + { 0, 0 }, { 0,15872 }, { 1,7610 }, { 2,7610 }, { 3,7610 }, + { 4,7610 }, { 5,7610 }, { 6,7610 }, { 7,7610 }, { 8,7610 }, + { 9,7610 }, { 10,7610 }, { 11,7610 }, { 12,7610 }, { 13,7610 }, + { 14,7610 }, { 15,7610 }, { 16,7610 }, { 17,7610 }, { 18,7610 }, + { 19,7610 }, { 20,7610 }, { 21,7610 }, { 22,7610 }, { 23,7610 }, + { 24,7610 }, { 25,7610 }, { 26,7610 }, { 27,7610 }, { 28,7610 }, + { 29,7610 }, { 30,7610 }, { 31,7610 }, { 32,7610 }, { 33,7610 }, + { 34,4685 }, { 35,7610 }, { 36,7610 }, { 37,7610 }, { 38,7610 }, + { 39,7610 }, { 40,7610 }, { 41,7610 }, { 42,7610 }, { 43,7610 }, + { 44,7610 }, { 45,7610 }, { 46,7610 }, { 47,7610 }, { 48,7610 }, + + { 49,7610 }, { 50,7610 }, { 51,7610 }, { 52,7610 }, { 53,7610 }, + { 54,7610 }, { 55,7610 }, { 56,7610 }, { 57,7610 }, { 58,7610 }, + { 59,7610 }, { 60,7610 }, { 61,7610 }, { 62,7610 }, { 63,7610 }, + { 64,7610 }, { 65,7610 }, { 66,7610 }, { 67,7610 }, { 68,7610 }, + { 69,7610 }, { 70,7610 }, { 71,7610 }, { 72,7610 }, { 73,7610 }, + { 74,7610 }, { 75,7610 }, { 76,7610 }, { 77,7610 }, { 78,7610 }, + { 79,7610 }, { 80,7610 }, { 81,7610 }, { 82,7610 }, { 83,7610 }, + { 84,7610 }, { 85,7610 }, { 86,7610 }, { 87,7610 }, { 88,7610 }, + { 89,7610 }, { 90,7610 }, { 91,7610 }, { 92,7610 }, { 93,7610 }, + { 94,7610 }, { 95,7610 }, { 96,7610 }, { 97,7610 }, { 98,7610 }, + + { 99,7610 }, { 100,7610 }, { 101,7610 }, { 102,7610 }, { 103,7610 }, + { 104,7610 }, { 105,7610 }, { 106,7610 }, { 107,7610 }, { 108,7610 }, + { 109,7610 }, { 110,7610 }, { 111,7610 }, { 112,7610 }, { 113,7610 }, + { 114,7610 }, { 115,7610 }, { 116,7610 }, { 117,7610 }, { 118,7610 }, + { 119,7610 }, { 120,7610 }, { 121,7610 }, { 122,7610 }, { 123,7610 }, + { 124,7610 }, { 125,7610 }, { 126,7610 }, { 127,7610 }, { 128,7610 }, + { 129,7610 }, { 130,7610 }, { 131,7610 }, { 132,7610 }, { 133,7610 }, + { 134,7610 }, { 135,7610 }, { 136,7610 }, { 137,7610 }, { 138,7610 }, + { 139,7610 }, { 140,7610 }, { 141,7610 }, { 142,7610 }, { 143,7610 }, + { 144,7610 }, { 145,7610 }, { 146,7610 }, { 147,7610 }, { 148,7610 }, + + { 149,7610 }, { 150,7610 }, { 151,7610 }, { 152,7610 }, { 153,7610 }, + { 154,7610 }, { 155,7610 }, { 156,7610 }, { 157,7610 }, { 158,7610 }, + { 159,7610 }, { 160,7610 }, { 161,7610 }, { 162,7610 }, { 163,7610 }, + { 164,7610 }, { 165,7610 }, { 166,7610 }, { 167,7610 }, { 168,7610 }, + { 169,7610 }, { 170,7610 }, { 171,7610 }, { 172,7610 }, { 173,7610 }, + { 174,7610 }, { 175,7610 }, { 176,7610 }, { 177,7610 }, { 178,7610 }, + { 179,7610 }, { 180,7610 }, { 181,7610 }, { 182,7610 }, { 183,7610 }, + { 184,7610 }, { 185,7610 }, { 186,7610 }, { 187,7610 }, { 188,7610 }, + { 189,7610 }, { 190,7610 }, { 191,7610 }, { 192,7610 }, { 193,7610 }, + { 194,7610 }, { 195,7610 }, { 196,7610 }, { 197,7610 }, { 198,7610 }, + + { 199,7610 }, { 200,7610 }, { 201,7610 }, { 202,7610 }, { 203,7610 }, + { 204,7610 }, { 205,7610 }, { 206,7610 }, { 207,7610 }, { 208,7610 }, + { 209,7610 }, { 210,7610 }, { 211,7610 }, { 212,7610 }, { 213,7610 }, + { 214,7610 }, { 215,7610 }, { 216,7610 }, { 217,7610 }, { 218,7610 }, + { 219,7610 }, { 220,7610 }, { 221,7610 }, { 222,7610 }, { 223,7610 }, + { 224,7610 }, { 225,7610 }, { 226,7610 }, { 227,7610 }, { 228,7610 }, + { 229,7610 }, { 230,7610 }, { 231,7610 }, { 232,7610 }, { 233,7610 }, + { 234,7610 }, { 235,7610 }, { 236,7610 }, { 237,7610 }, { 238,7610 }, + { 239,7610 }, { 240,7610 }, { 241,7610 }, { 242,7610 }, { 243,7610 }, + { 244,7610 }, { 245,7610 }, { 246,7610 }, { 247,7610 }, { 248,7610 }, + + { 249,7610 }, { 250,7610 }, { 251,7610 }, { 252,7610 }, { 253,7610 }, + { 254,7610 }, { 255,7610 }, { 256,7610 }, { 0, 0 }, { 0,15614 }, + { 1,7352 }, { 2,7352 }, { 3,7352 }, { 4,7352 }, { 5,7352 }, + { 6,7352 }, { 7,7352 }, { 8,7352 }, { 9,7352 }, { 10,7352 }, + { 11,7352 }, { 12,7352 }, { 13,7352 }, { 14,7352 }, { 15,7352 }, + { 16,7352 }, { 17,7352 }, { 18,7352 }, { 19,7352 }, { 20,7352 }, + { 21,7352 }, { 22,7352 }, { 23,7352 }, { 24,7352 }, { 25,7352 }, + { 26,7352 }, { 27,7352 }, { 28,7352 }, { 29,7352 }, { 30,7352 }, + { 31,7352 }, { 32,7352 }, { 33,7352 }, { 34,4427 }, { 35,7352 }, + { 36,7352 }, { 37,7352 }, { 38,7352 }, { 39,7352 }, { 40,7352 }, + + { 41,7352 }, { 42,7352 }, { 43,7352 }, { 44,7352 }, { 45,7352 }, + { 46,7352 }, { 47,7352 }, { 48,7352 }, { 49,7352 }, { 50,7352 }, + { 51,7352 }, { 52,7352 }, { 53,7352 }, { 54,7352 }, { 55,7352 }, + { 56,7352 }, { 57,7352 }, { 58,7352 }, { 59,7352 }, { 60,7352 }, + { 61,7352 }, { 62,7352 }, { 63,7352 }, { 64,7352 }, { 65,7352 }, + { 66,7352 }, { 67,7352 }, { 68,7352 }, { 69,7352 }, { 70,7352 }, + { 71,7352 }, { 72,7352 }, { 73,7352 }, { 74,7352 }, { 75,7352 }, + { 76,7352 }, { 77,7352 }, { 78,7352 }, { 79,7352 }, { 80,7352 }, + { 81,7352 }, { 82,7352 }, { 83,7352 }, { 84,7352 }, { 85,7352 }, + { 86,7352 }, { 87,7352 }, { 88,7352 }, { 89,7352 }, { 90,7352 }, + + { 91,7352 }, { 92,7352 }, { 93,7352 }, { 94,7352 }, { 95,7352 }, + { 96,7352 }, { 97,7352 }, { 98,7352 }, { 99,7352 }, { 100,7352 }, + { 101,7352 }, { 102,7352 }, { 103,7352 }, { 104,7352 }, { 105,7352 }, + { 106,7352 }, { 107,7352 }, { 108,7352 }, { 109,7352 }, { 110,7352 }, + { 111,7352 }, { 112,7352 }, { 113,7352 }, { 114,7352 }, { 115,7352 }, + { 116,7352 }, { 117,7352 }, { 118,7352 }, { 119,7352 }, { 120,7352 }, + { 121,7352 }, { 122,7352 }, { 123,7352 }, { 124,7352 }, { 125,7352 }, + { 126,7352 }, { 127,7352 }, { 128,7352 }, { 129,7352 }, { 130,7352 }, + { 131,7352 }, { 132,7352 }, { 133,7352 }, { 134,7352 }, { 135,7352 }, + { 136,7352 }, { 137,7352 }, { 138,7352 }, { 139,7352 }, { 140,7352 }, + + { 141,7352 }, { 142,7352 }, { 143,7352 }, { 144,7352 }, { 145,7352 }, + { 146,7352 }, { 147,7352 }, { 148,7352 }, { 149,7352 }, { 150,7352 }, + { 151,7352 }, { 152,7352 }, { 153,7352 }, { 154,7352 }, { 155,7352 }, + { 156,7352 }, { 157,7352 }, { 158,7352 }, { 159,7352 }, { 160,7352 }, + { 161,7352 }, { 162,7352 }, { 163,7352 }, { 164,7352 }, { 165,7352 }, + { 166,7352 }, { 167,7352 }, { 168,7352 }, { 169,7352 }, { 170,7352 }, + { 171,7352 }, { 172,7352 }, { 173,7352 }, { 174,7352 }, { 175,7352 }, + { 176,7352 }, { 177,7352 }, { 178,7352 }, { 179,7352 }, { 180,7352 }, + { 181,7352 }, { 182,7352 }, { 183,7352 }, { 184,7352 }, { 185,7352 }, + { 186,7352 }, { 187,7352 }, { 188,7352 }, { 189,7352 }, { 190,7352 }, + + { 191,7352 }, { 192,7352 }, { 193,7352 }, { 194,7352 }, { 195,7352 }, + { 196,7352 }, { 197,7352 }, { 198,7352 }, { 199,7352 }, { 200,7352 }, + { 201,7352 }, { 202,7352 }, { 203,7352 }, { 204,7352 }, { 205,7352 }, + { 206,7352 }, { 207,7352 }, { 208,7352 }, { 209,7352 }, { 210,7352 }, + { 211,7352 }, { 212,7352 }, { 213,7352 }, { 214,7352 }, { 215,7352 }, + { 216,7352 }, { 217,7352 }, { 218,7352 }, { 219,7352 }, { 220,7352 }, + { 221,7352 }, { 222,7352 }, { 223,7352 }, { 224,7352 }, { 225,7352 }, + { 226,7352 }, { 227,7352 }, { 228,7352 }, { 229,7352 }, { 230,7352 }, + { 231,7352 }, { 232,7352 }, { 233,7352 }, { 234,7352 }, { 235,7352 }, + { 236,7352 }, { 237,7352 }, { 238,7352 }, { 239,7352 }, { 240,7352 }, + + { 241,7352 }, { 242,7352 }, { 243,7352 }, { 244,7352 }, { 245,7352 }, + { 246,7352 }, { 247,7352 }, { 248,7352 }, { 249,7352 }, { 250,7352 }, + { 251,7352 }, { 252,7352 }, { 253,7352 }, { 254,7352 }, { 255,7352 }, + { 256,7352 }, { 0, 10 }, { 0,15356 }, { 1,7352 }, { 2,7352 }, + { 3,7352 }, { 4,7352 }, { 5,7352 }, { 6,7352 }, { 7,7352 }, + { 8,7352 }, { 9,7352 }, { 10,7352 }, { 11,7352 }, { 12,7352 }, + { 13,7352 }, { 14,7352 }, { 15,7352 }, { 16,7352 }, { 17,7352 }, + { 18,7352 }, { 19,7352 }, { 20,7352 }, { 21,7352 }, { 22,7352 }, + { 23,7352 }, { 24,7352 }, { 25,7352 }, { 26,7352 }, { 27,7352 }, + { 28,7352 }, { 29,7352 }, { 30,7352 }, { 31,7352 }, { 32,7352 }, + + { 33,7352 }, { 34,7352 }, { 35,7352 }, { 36,7352 }, { 37,7352 }, + { 38,7352 }, { 39,4157 }, { 40,7352 }, { 41,7352 }, { 42,7352 }, + { 43,7352 }, { 44,7352 }, { 45,7352 }, { 46,7352 }, { 47,7352 }, + { 48,7352 }, { 49,7352 }, { 50,7352 }, { 51,7352 }, { 52,7352 }, + { 53,7352 }, { 54,7352 }, { 55,7352 }, { 56,7352 }, { 57,7352 }, + { 58,7352 }, { 59,7352 }, { 60,7352 }, { 61,7352 }, { 62,7352 }, + { 63,7352 }, { 64,7352 }, { 65,7352 }, { 66,7352 }, { 67,7352 }, + { 68,7352 }, { 69,7352 }, { 70,7352 }, { 71,7352 }, { 72,7352 }, + { 73,7352 }, { 74,7352 }, { 75,7352 }, { 76,7352 }, { 77,7352 }, + { 78,7352 }, { 79,7352 }, { 80,7352 }, { 81,7352 }, { 82,7352 }, + + { 83,7352 }, { 84,7352 }, { 85,7352 }, { 86,7352 }, { 87,7352 }, + { 88,7352 }, { 89,7352 }, { 90,7352 }, { 91,7352 }, { 92,7352 }, + { 93,7352 }, { 94,7352 }, { 95,7352 }, { 96,7352 }, { 97,7352 }, + { 98,7352 }, { 99,7352 }, { 100,7352 }, { 101,7352 }, { 102,7352 }, + { 103,7352 }, { 104,7352 }, { 105,7352 }, { 106,7352 }, { 107,7352 }, + { 108,7352 }, { 109,7352 }, { 110,7352 }, { 111,7352 }, { 112,7352 }, + { 113,7352 }, { 114,7352 }, { 115,7352 }, { 116,7352 }, { 117,7352 }, + { 118,7352 }, { 119,7352 }, { 120,7352 }, { 121,7352 }, { 122,7352 }, + { 123,7352 }, { 124,7352 }, { 125,7352 }, { 126,7352 }, { 127,7352 }, + { 128,7352 }, { 129,7352 }, { 130,7352 }, { 131,7352 }, { 132,7352 }, + + { 133,7352 }, { 134,7352 }, { 135,7352 }, { 136,7352 }, { 137,7352 }, + { 138,7352 }, { 139,7352 }, { 140,7352 }, { 141,7352 }, { 142,7352 }, + { 143,7352 }, { 144,7352 }, { 145,7352 }, { 146,7352 }, { 147,7352 }, + { 148,7352 }, { 149,7352 }, { 150,7352 }, { 151,7352 }, { 152,7352 }, + { 153,7352 }, { 154,7352 }, { 155,7352 }, { 156,7352 }, { 157,7352 }, + { 158,7352 }, { 159,7352 }, { 160,7352 }, { 161,7352 }, { 162,7352 }, + { 163,7352 }, { 164,7352 }, { 165,7352 }, { 166,7352 }, { 167,7352 }, + { 168,7352 }, { 169,7352 }, { 170,7352 }, { 171,7352 }, { 172,7352 }, + { 173,7352 }, { 174,7352 }, { 175,7352 }, { 176,7352 }, { 177,7352 }, + { 178,7352 }, { 179,7352 }, { 180,7352 }, { 181,7352 }, { 182,7352 }, + + { 183,7352 }, { 184,7352 }, { 185,7352 }, { 186,7352 }, { 187,7352 }, + { 188,7352 }, { 189,7352 }, { 190,7352 }, { 191,7352 }, { 192,7352 }, + { 193,7352 }, { 194,7352 }, { 195,7352 }, { 196,7352 }, { 197,7352 }, + { 198,7352 }, { 199,7352 }, { 200,7352 }, { 201,7352 }, { 202,7352 }, + { 203,7352 }, { 204,7352 }, { 205,7352 }, { 206,7352 }, { 207,7352 }, + { 208,7352 }, { 209,7352 }, { 210,7352 }, { 211,7352 }, { 212,7352 }, + { 213,7352 }, { 214,7352 }, { 215,7352 }, { 216,7352 }, { 217,7352 }, + { 218,7352 }, { 219,7352 }, { 220,7352 }, { 221,7352 }, { 222,7352 }, + { 223,7352 }, { 224,7352 }, { 225,7352 }, { 226,7352 }, { 227,7352 }, + { 228,7352 }, { 229,7352 }, { 230,7352 }, { 231,7352 }, { 232,7352 }, + + { 233,7352 }, { 234,7352 }, { 235,7352 }, { 236,7352 }, { 237,7352 }, + { 238,7352 }, { 239,7352 }, { 240,7352 }, { 241,7352 }, { 242,7352 }, + { 243,7352 }, { 244,7352 }, { 245,7352 }, { 246,7352 }, { 247,7352 }, + { 248,7352 }, { 249,7352 }, { 250,7352 }, { 251,7352 }, { 252,7352 }, + { 253,7352 }, { 254,7352 }, { 255,7352 }, { 256,7352 }, { 0, 10 }, + { 0,15098 }, { 1,7094 }, { 2,7094 }, { 3,7094 }, { 4,7094 }, + { 5,7094 }, { 6,7094 }, { 7,7094 }, { 8,7094 }, { 9,7094 }, + { 10,7094 }, { 11,7094 }, { 12,7094 }, { 13,7094 }, { 14,7094 }, + { 15,7094 }, { 16,7094 }, { 17,7094 }, { 18,7094 }, { 19,7094 }, + { 20,7094 }, { 21,7094 }, { 22,7094 }, { 23,7094 }, { 24,7094 }, + + { 25,7094 }, { 26,7094 }, { 27,7094 }, { 28,7094 }, { 29,7094 }, + { 30,7094 }, { 31,7094 }, { 32,7094 }, { 33,7094 }, { 34,7094 }, + { 35,7094 }, { 36,7094 }, { 37,7094 }, { 38,7094 }, { 39,3899 }, + { 40,7094 }, { 41,7094 }, { 42,7094 }, { 43,7094 }, { 44,7094 }, + { 45,7094 }, { 46,7094 }, { 47,7094 }, { 48,7094 }, { 49,7094 }, + { 50,7094 }, { 51,7094 }, { 52,7094 }, { 53,7094 }, { 54,7094 }, + { 55,7094 }, { 56,7094 }, { 57,7094 }, { 58,7094 }, { 59,7094 }, + { 60,7094 }, { 61,7094 }, { 62,7094 }, { 63,7094 }, { 64,7094 }, + { 65,7094 }, { 66,7094 }, { 67,7094 }, { 68,7094 }, { 69,7094 }, + { 70,7094 }, { 71,7094 }, { 72,7094 }, { 73,7094 }, { 74,7094 }, + + { 75,7094 }, { 76,7094 }, { 77,7094 }, { 78,7094 }, { 79,7094 }, + { 80,7094 }, { 81,7094 }, { 82,7094 }, { 83,7094 }, { 84,7094 }, + { 85,7094 }, { 86,7094 }, { 87,7094 }, { 88,7094 }, { 89,7094 }, + { 90,7094 }, { 91,7094 }, { 92,7094 }, { 93,7094 }, { 94,7094 }, + { 95,7094 }, { 96,7094 }, { 97,7094 }, { 98,7094 }, { 99,7094 }, + { 100,7094 }, { 101,7094 }, { 102,7094 }, { 103,7094 }, { 104,7094 }, + { 105,7094 }, { 106,7094 }, { 107,7094 }, { 108,7094 }, { 109,7094 }, + { 110,7094 }, { 111,7094 }, { 112,7094 }, { 113,7094 }, { 114,7094 }, + { 115,7094 }, { 116,7094 }, { 117,7094 }, { 118,7094 }, { 119,7094 }, + { 120,7094 }, { 121,7094 }, { 122,7094 }, { 123,7094 }, { 124,7094 }, + + { 125,7094 }, { 126,7094 }, { 127,7094 }, { 128,7094 }, { 129,7094 }, + { 130,7094 }, { 131,7094 }, { 132,7094 }, { 133,7094 }, { 134,7094 }, + { 135,7094 }, { 136,7094 }, { 137,7094 }, { 138,7094 }, { 139,7094 }, + { 140,7094 }, { 141,7094 }, { 142,7094 }, { 143,7094 }, { 144,7094 }, + { 145,7094 }, { 146,7094 }, { 147,7094 }, { 148,7094 }, { 149,7094 }, + { 150,7094 }, { 151,7094 }, { 152,7094 }, { 153,7094 }, { 154,7094 }, + { 155,7094 }, { 156,7094 }, { 157,7094 }, { 158,7094 }, { 159,7094 }, + { 160,7094 }, { 161,7094 }, { 162,7094 }, { 163,7094 }, { 164,7094 }, + { 165,7094 }, { 166,7094 }, { 167,7094 }, { 168,7094 }, { 169,7094 }, + { 170,7094 }, { 171,7094 }, { 172,7094 }, { 173,7094 }, { 174,7094 }, + + { 175,7094 }, { 176,7094 }, { 177,7094 }, { 178,7094 }, { 179,7094 }, + { 180,7094 }, { 181,7094 }, { 182,7094 }, { 183,7094 }, { 184,7094 }, + { 185,7094 }, { 186,7094 }, { 187,7094 }, { 188,7094 }, { 189,7094 }, + { 190,7094 }, { 191,7094 }, { 192,7094 }, { 193,7094 }, { 194,7094 }, + { 195,7094 }, { 196,7094 }, { 197,7094 }, { 198,7094 }, { 199,7094 }, + { 200,7094 }, { 201,7094 }, { 202,7094 }, { 203,7094 }, { 204,7094 }, + { 205,7094 }, { 206,7094 }, { 207,7094 }, { 208,7094 }, { 209,7094 }, + { 210,7094 }, { 211,7094 }, { 212,7094 }, { 213,7094 }, { 214,7094 }, + { 215,7094 }, { 216,7094 }, { 217,7094 }, { 218,7094 }, { 219,7094 }, + { 220,7094 }, { 221,7094 }, { 222,7094 }, { 223,7094 }, { 224,7094 }, + + { 225,7094 }, { 226,7094 }, { 227,7094 }, { 228,7094 }, { 229,7094 }, + { 230,7094 }, { 231,7094 }, { 232,7094 }, { 233,7094 }, { 234,7094 }, + { 235,7094 }, { 236,7094 }, { 237,7094 }, { 238,7094 }, { 239,7094 }, + { 240,7094 }, { 241,7094 }, { 242,7094 }, { 243,7094 }, { 244,7094 }, + { 245,7094 }, { 246,7094 }, { 247,7094 }, { 248,7094 }, { 249,7094 }, + { 250,7094 }, { 251,7094 }, { 252,7094 }, { 253,7094 }, { 254,7094 }, + { 255,7094 }, { 256,7094 }, { 0, 0 }, { 0,14840 }, { 1,7094 }, + { 2,7094 }, { 3,7094 }, { 4,7094 }, { 5,7094 }, { 6,7094 }, + { 7,7094 }, { 8,7094 }, { 9,7094 }, { 10,7094 }, { 11,7094 }, + { 12,7094 }, { 13,7094 }, { 14,7094 }, { 15,7094 }, { 16,7094 }, + + { 17,7094 }, { 18,7094 }, { 19,7094 }, { 20,7094 }, { 21,7094 }, + { 22,7094 }, { 23,7094 }, { 24,7094 }, { 25,7094 }, { 26,7094 }, + { 27,7094 }, { 28,7094 }, { 29,7094 }, { 30,7094 }, { 31,7094 }, + { 32,7094 }, { 33,7094 }, { 34,7094 }, { 35,7094 }, { 36,7094 }, + { 37,7094 }, { 38,7094 }, { 39,3670 }, { 40,7094 }, { 41,7094 }, + { 42,7094 }, { 43,7094 }, { 44,7094 }, { 45,7094 }, { 46,7094 }, + { 47,7094 }, { 48,7094 }, { 49,7094 }, { 50,7094 }, { 51,7094 }, + { 52,7094 }, { 53,7094 }, { 54,7094 }, { 55,7094 }, { 56,7094 }, + { 57,7094 }, { 58,7094 }, { 59,7094 }, { 60,7094 }, { 61,7094 }, + { 62,7094 }, { 63,7094 }, { 64,7094 }, { 65,7094 }, { 66,7094 }, + + { 67,7094 }, { 68,7094 }, { 69,7094 }, { 70,7094 }, { 71,7094 }, + { 72,7094 }, { 73,7094 }, { 74,7094 }, { 75,7094 }, { 76,7094 }, + { 77,7094 }, { 78,7094 }, { 79,7094 }, { 80,7094 }, { 81,7094 }, + { 82,7094 }, { 83,7094 }, { 84,7094 }, { 85,7094 }, { 86,7094 }, + { 87,7094 }, { 88,7094 }, { 89,7094 }, { 90,7094 }, { 91,7094 }, + { 92,7094 }, { 93,7094 }, { 94,7094 }, { 95,7094 }, { 96,7094 }, + { 97,7094 }, { 98,7094 }, { 99,7094 }, { 100,7094 }, { 101,7094 }, + { 102,7094 }, { 103,7094 }, { 104,7094 }, { 105,7094 }, { 106,7094 }, + { 107,7094 }, { 108,7094 }, { 109,7094 }, { 110,7094 }, { 111,7094 }, + { 112,7094 }, { 113,7094 }, { 114,7094 }, { 115,7094 }, { 116,7094 }, + + { 117,7094 }, { 118,7094 }, { 119,7094 }, { 120,7094 }, { 121,7094 }, + { 122,7094 }, { 123,7094 }, { 124,7094 }, { 125,7094 }, { 126,7094 }, + { 127,7094 }, { 128,7094 }, { 129,7094 }, { 130,7094 }, { 131,7094 }, + { 132,7094 }, { 133,7094 }, { 134,7094 }, { 135,7094 }, { 136,7094 }, + { 137,7094 }, { 138,7094 }, { 139,7094 }, { 140,7094 }, { 141,7094 }, + { 142,7094 }, { 143,7094 }, { 144,7094 }, { 145,7094 }, { 146,7094 }, + { 147,7094 }, { 148,7094 }, { 149,7094 }, { 150,7094 }, { 151,7094 }, + { 152,7094 }, { 153,7094 }, { 154,7094 }, { 155,7094 }, { 156,7094 }, + { 157,7094 }, { 158,7094 }, { 159,7094 }, { 160,7094 }, { 161,7094 }, + { 162,7094 }, { 163,7094 }, { 164,7094 }, { 165,7094 }, { 166,7094 }, + + { 167,7094 }, { 168,7094 }, { 169,7094 }, { 170,7094 }, { 171,7094 }, + { 172,7094 }, { 173,7094 }, { 174,7094 }, { 175,7094 }, { 176,7094 }, + { 177,7094 }, { 178,7094 }, { 179,7094 }, { 180,7094 }, { 181,7094 }, + { 182,7094 }, { 183,7094 }, { 184,7094 }, { 185,7094 }, { 186,7094 }, + { 187,7094 }, { 188,7094 }, { 189,7094 }, { 190,7094 }, { 191,7094 }, + { 192,7094 }, { 193,7094 }, { 194,7094 }, { 195,7094 }, { 196,7094 }, + { 197,7094 }, { 198,7094 }, { 199,7094 }, { 200,7094 }, { 201,7094 }, + { 202,7094 }, { 203,7094 }, { 204,7094 }, { 205,7094 }, { 206,7094 }, + { 207,7094 }, { 208,7094 }, { 209,7094 }, { 210,7094 }, { 211,7094 }, + { 212,7094 }, { 213,7094 }, { 214,7094 }, { 215,7094 }, { 216,7094 }, + + { 217,7094 }, { 218,7094 }, { 219,7094 }, { 220,7094 }, { 221,7094 }, + { 222,7094 }, { 223,7094 }, { 224,7094 }, { 225,7094 }, { 226,7094 }, + { 227,7094 }, { 228,7094 }, { 229,7094 }, { 230,7094 }, { 231,7094 }, + { 232,7094 }, { 233,7094 }, { 234,7094 }, { 235,7094 }, { 236,7094 }, + { 237,7094 }, { 238,7094 }, { 239,7094 }, { 240,7094 }, { 241,7094 }, + { 242,7094 }, { 243,7094 }, { 244,7094 }, { 245,7094 }, { 246,7094 }, + { 247,7094 }, { 248,7094 }, { 249,7094 }, { 250,7094 }, { 251,7094 }, + { 252,7094 }, { 253,7094 }, { 254,7094 }, { 255,7094 }, { 256,7094 }, + { 0, 0 }, { 0,14582 }, { 1,6836 }, { 2,6836 }, { 3,6836 }, + { 4,6836 }, { 5,6836 }, { 6,6836 }, { 7,6836 }, { 8,6836 }, + + { 9,6836 }, { 10,6836 }, { 11,6836 }, { 12,6836 }, { 13,6836 }, + { 14,6836 }, { 15,6836 }, { 16,6836 }, { 17,6836 }, { 18,6836 }, + { 19,6836 }, { 20,6836 }, { 21,6836 }, { 22,6836 }, { 23,6836 }, + { 24,6836 }, { 25,6836 }, { 26,6836 }, { 27,6836 }, { 28,6836 }, + { 29,6836 }, { 30,6836 }, { 31,6836 }, { 32,6836 }, { 33,6836 }, + { 34,6836 }, { 35,6836 }, { 36,6836 }, { 37,6836 }, { 38,6836 }, + { 39,3412 }, { 40,6836 }, { 41,6836 }, { 42,6836 }, { 43,6836 }, + { 44,6836 }, { 45,6836 }, { 46,6836 }, { 47,6836 }, { 48,6836 }, + { 49,6836 }, { 50,6836 }, { 51,6836 }, { 52,6836 }, { 53,6836 }, + { 54,6836 }, { 55,6836 }, { 56,6836 }, { 57,6836 }, { 58,6836 }, + + { 59,6836 }, { 60,6836 }, { 61,6836 }, { 62,6836 }, { 63,6836 }, + { 64,6836 }, { 65,6836 }, { 66,6836 }, { 67,6836 }, { 68,6836 }, + { 69,6836 }, { 70,6836 }, { 71,6836 }, { 72,6836 }, { 73,6836 }, + { 74,6836 }, { 75,6836 }, { 76,6836 }, { 77,6836 }, { 78,6836 }, + { 79,6836 }, { 80,6836 }, { 81,6836 }, { 82,6836 }, { 83,6836 }, + { 84,6836 }, { 85,6836 }, { 86,6836 }, { 87,6836 }, { 88,6836 }, + { 89,6836 }, { 90,6836 }, { 91,6836 }, { 92,6836 }, { 93,6836 }, + { 94,6836 }, { 95,6836 }, { 96,6836 }, { 97,6836 }, { 98,6836 }, + { 99,6836 }, { 100,6836 }, { 101,6836 }, { 102,6836 }, { 103,6836 }, + { 104,6836 }, { 105,6836 }, { 106,6836 }, { 107,6836 }, { 108,6836 }, + + { 109,6836 }, { 110,6836 }, { 111,6836 }, { 112,6836 }, { 113,6836 }, + { 114,6836 }, { 115,6836 }, { 116,6836 }, { 117,6836 }, { 118,6836 }, + { 119,6836 }, { 120,6836 }, { 121,6836 }, { 122,6836 }, { 123,6836 }, + { 124,6836 }, { 125,6836 }, { 126,6836 }, { 127,6836 }, { 128,6836 }, + { 129,6836 }, { 130,6836 }, { 131,6836 }, { 132,6836 }, { 133,6836 }, + { 134,6836 }, { 135,6836 }, { 136,6836 }, { 137,6836 }, { 138,6836 }, + { 139,6836 }, { 140,6836 }, { 141,6836 }, { 142,6836 }, { 143,6836 }, + { 144,6836 }, { 145,6836 }, { 146,6836 }, { 147,6836 }, { 148,6836 }, + { 149,6836 }, { 150,6836 }, { 151,6836 }, { 152,6836 }, { 153,6836 }, + { 154,6836 }, { 155,6836 }, { 156,6836 }, { 157,6836 }, { 158,6836 }, + + { 159,6836 }, { 160,6836 }, { 161,6836 }, { 162,6836 }, { 163,6836 }, + { 164,6836 }, { 165,6836 }, { 166,6836 }, { 167,6836 }, { 168,6836 }, + { 169,6836 }, { 170,6836 }, { 171,6836 }, { 172,6836 }, { 173,6836 }, + { 174,6836 }, { 175,6836 }, { 176,6836 }, { 177,6836 }, { 178,6836 }, + { 179,6836 }, { 180,6836 }, { 181,6836 }, { 182,6836 }, { 183,6836 }, + { 184,6836 }, { 185,6836 }, { 186,6836 }, { 187,6836 }, { 188,6836 }, + { 189,6836 }, { 190,6836 }, { 191,6836 }, { 192,6836 }, { 193,6836 }, + { 194,6836 }, { 195,6836 }, { 196,6836 }, { 197,6836 }, { 198,6836 }, + { 199,6836 }, { 200,6836 }, { 201,6836 }, { 202,6836 }, { 203,6836 }, + { 204,6836 }, { 205,6836 }, { 206,6836 }, { 207,6836 }, { 208,6836 }, + + { 209,6836 }, { 210,6836 }, { 211,6836 }, { 212,6836 }, { 213,6836 }, + { 214,6836 }, { 215,6836 }, { 216,6836 }, { 217,6836 }, { 218,6836 }, + { 219,6836 }, { 220,6836 }, { 221,6836 }, { 222,6836 }, { 223,6836 }, + { 224,6836 }, { 225,6836 }, { 226,6836 }, { 227,6836 }, { 228,6836 }, + { 229,6836 }, { 230,6836 }, { 231,6836 }, { 232,6836 }, { 233,6836 }, + { 234,6836 }, { 235,6836 }, { 236,6836 }, { 237,6836 }, { 238,6836 }, + { 239,6836 }, { 240,6836 }, { 241,6836 }, { 242,6836 }, { 243,6836 }, + { 244,6836 }, { 245,6836 }, { 246,6836 }, { 247,6836 }, { 248,6836 }, + { 249,6836 }, { 250,6836 }, { 251,6836 }, { 252,6836 }, { 253,6836 }, + { 254,6836 }, { 255,6836 }, { 256,6836 }, { 0, 19 }, { 0,14324 }, + + { 1,3156 }, { 2,3156 }, { 3,3156 }, { 4,3156 }, { 5,3156 }, + { 6,3156 }, { 7,3156 }, { 8,3156 }, { 9,6836 }, { 10,6841 }, + { 11,3156 }, { 12,6836 }, { 13,6857 }, { 14,3156 }, { 15,3156 }, + { 16,3156 }, { 17,3156 }, { 18,3156 }, { 19,3156 }, { 20,3156 }, + { 21,3156 }, { 22,3156 }, { 23,3156 }, { 24,3156 }, { 25,3156 }, + { 26,3156 }, { 27,3156 }, { 28,3156 }, { 29,3156 }, { 30,3156 }, + { 31,3156 }, { 32,6836 }, { 33,3156 }, { 34,3156 }, { 35,3156 }, + { 36,3156 }, { 37,3156 }, { 38,3156 }, { 39,3156 }, { 40,3156 }, + { 41,3156 }, { 42,3156 }, { 43,3156 }, { 44,3156 }, { 45,3158 }, + { 46,3156 }, { 47,3156 }, { 48,3156 }, { 49,3156 }, { 50,3156 }, + + { 51,3156 }, { 52,3156 }, { 53,3156 }, { 54,3156 }, { 55,3156 }, + { 56,3156 }, { 57,3156 }, { 58,3156 }, { 59,3156 }, { 60,3156 }, + { 61,3156 }, { 62,3156 }, { 63,3156 }, { 64,3156 }, { 65,3156 }, + { 66,3156 }, { 67,3156 }, { 68,3156 }, { 69,3156 }, { 70,3156 }, + { 71,3156 }, { 72,3156 }, { 73,3156 }, { 74,3156 }, { 75,3156 }, + { 76,3156 }, { 77,3156 }, { 78,3156 }, { 79,3156 }, { 80,3156 }, + { 81,3156 }, { 82,3156 }, { 83,3156 }, { 84,3156 }, { 85,3156 }, + { 86,3156 }, { 87,3156 }, { 88,3156 }, { 89,3156 }, { 90,3156 }, + { 91,3156 }, { 92,3156 }, { 93,3156 }, { 94,3156 }, { 95,3156 }, + { 96,3156 }, { 97,3156 }, { 98,3156 }, { 99,3156 }, { 100,3156 }, + + { 101,3156 }, { 102,3156 }, { 103,3156 }, { 104,3156 }, { 105,3156 }, + { 106,3156 }, { 107,3156 }, { 108,3156 }, { 109,3156 }, { 110,3156 }, + { 111,3156 }, { 112,3156 }, { 113,3156 }, { 114,3156 }, { 115,3156 }, + { 116,3156 }, { 117,3156 }, { 118,3156 }, { 119,3156 }, { 120,3156 }, + { 121,3156 }, { 122,3156 }, { 123,3156 }, { 124,3156 }, { 125,3156 }, + { 126,3156 }, { 127,3156 }, { 128,3156 }, { 129,3156 }, { 130,3156 }, + { 131,3156 }, { 132,3156 }, { 133,3156 }, { 134,3156 }, { 135,3156 }, + { 136,3156 }, { 137,3156 }, { 138,3156 }, { 139,3156 }, { 140,3156 }, + { 141,3156 }, { 142,3156 }, { 143,3156 }, { 144,3156 }, { 145,3156 }, + { 146,3156 }, { 147,3156 }, { 148,3156 }, { 149,3156 }, { 150,3156 }, + + { 151,3156 }, { 152,3156 }, { 153,3156 }, { 154,3156 }, { 155,3156 }, + { 156,3156 }, { 157,3156 }, { 158,3156 }, { 159,3156 }, { 160,3156 }, + { 161,3156 }, { 162,3156 }, { 163,3156 }, { 164,3156 }, { 165,3156 }, + { 166,3156 }, { 167,3156 }, { 168,3156 }, { 169,3156 }, { 170,3156 }, + { 171,3156 }, { 172,3156 }, { 173,3156 }, { 174,3156 }, { 175,3156 }, + { 176,3156 }, { 177,3156 }, { 178,3156 }, { 179,3156 }, { 180,3156 }, + { 181,3156 }, { 182,3156 }, { 183,3156 }, { 184,3156 }, { 185,3156 }, + { 186,3156 }, { 187,3156 }, { 188,3156 }, { 189,3156 }, { 190,3156 }, + { 191,3156 }, { 192,3156 }, { 193,3156 }, { 194,3156 }, { 195,3156 }, + { 196,3156 }, { 197,3156 }, { 198,3156 }, { 199,3156 }, { 200,3156 }, + + { 201,3156 }, { 202,3156 }, { 203,3156 }, { 204,3156 }, { 205,3156 }, + { 206,3156 }, { 207,3156 }, { 208,3156 }, { 209,3156 }, { 210,3156 }, + { 211,3156 }, { 212,3156 }, { 213,3156 }, { 214,3156 }, { 215,3156 }, + { 216,3156 }, { 217,3156 }, { 218,3156 }, { 219,3156 }, { 220,3156 }, + { 221,3156 }, { 222,3156 }, { 223,3156 }, { 224,3156 }, { 225,3156 }, + { 226,3156 }, { 227,3156 }, { 228,3156 }, { 229,3156 }, { 230,3156 }, + { 231,3156 }, { 232,3156 }, { 233,3156 }, { 234,3156 }, { 235,3156 }, + { 236,3156 }, { 237,3156 }, { 238,3156 }, { 239,3156 }, { 240,3156 }, + { 241,3156 }, { 242,3156 }, { 243,3156 }, { 244,3156 }, { 245,3156 }, + { 246,3156 }, { 247,3156 }, { 248,3156 }, { 249,3156 }, { 250,3156 }, + + { 251,3156 }, { 252,3156 }, { 253,3156 }, { 254,3156 }, { 255,3156 }, + { 256,3156 }, { 0, 19 }, { 0,14066 }, { 1,2898 }, { 2,2898 }, + { 3,2898 }, { 4,2898 }, { 5,2898 }, { 6,2898 }, { 7,2898 }, + { 8,2898 }, { 9,6578 }, { 10,6583 }, { 11,2898 }, { 12,6578 }, + { 13,6599 }, { 14,2898 }, { 15,2898 }, { 16,2898 }, { 17,2898 }, + { 18,2898 }, { 19,2898 }, { 20,2898 }, { 21,2898 }, { 22,2898 }, + { 23,2898 }, { 24,2898 }, { 25,2898 }, { 26,2898 }, { 27,2898 }, + { 28,2898 }, { 29,2898 }, { 30,2898 }, { 31,2898 }, { 32,6578 }, + { 33,2898 }, { 34,2898 }, { 35,2898 }, { 36,2898 }, { 37,2898 }, + { 38,2898 }, { 39,2898 }, { 40,2898 }, { 41,2898 }, { 42,2898 }, + + { 43,2898 }, { 44,2898 }, { 45,2900 }, { 46,2898 }, { 47,2898 }, + { 48,2898 }, { 49,2898 }, { 50,2898 }, { 51,2898 }, { 52,2898 }, + { 53,2898 }, { 54,2898 }, { 55,2898 }, { 56,2898 }, { 57,2898 }, + { 58,2898 }, { 59,2898 }, { 60,2898 }, { 61,2898 }, { 62,2898 }, + { 63,2898 }, { 64,2898 }, { 65,2898 }, { 66,2898 }, { 67,2898 }, + { 68,2898 }, { 69,2898 }, { 70,2898 }, { 71,2898 }, { 72,2898 }, + { 73,2898 }, { 74,2898 }, { 75,2898 }, { 76,2898 }, { 77,2898 }, + { 78,2898 }, { 79,2898 }, { 80,2898 }, { 81,2898 }, { 82,2898 }, + { 83,2898 }, { 84,2898 }, { 85,2898 }, { 86,2898 }, { 87,2898 }, + { 88,2898 }, { 89,2898 }, { 90,2898 }, { 91,2898 }, { 92,2898 }, + + { 93,2898 }, { 94,2898 }, { 95,2898 }, { 96,2898 }, { 97,2898 }, + { 98,2898 }, { 99,2898 }, { 100,2898 }, { 101,2898 }, { 102,2898 }, + { 103,2898 }, { 104,2898 }, { 105,2898 }, { 106,2898 }, { 107,2898 }, + { 108,2898 }, { 109,2898 }, { 110,2898 }, { 111,2898 }, { 112,2898 }, + { 113,2898 }, { 114,2898 }, { 115,2898 }, { 116,2898 }, { 117,2898 }, + { 118,2898 }, { 119,2898 }, { 120,2898 }, { 121,2898 }, { 122,2898 }, + { 123,2898 }, { 124,2898 }, { 125,2898 }, { 126,2898 }, { 127,2898 }, + { 128,2898 }, { 129,2898 }, { 130,2898 }, { 131,2898 }, { 132,2898 }, + { 133,2898 }, { 134,2898 }, { 135,2898 }, { 136,2898 }, { 137,2898 }, + { 138,2898 }, { 139,2898 }, { 140,2898 }, { 141,2898 }, { 142,2898 }, + + { 143,2898 }, { 144,2898 }, { 145,2898 }, { 146,2898 }, { 147,2898 }, + { 148,2898 }, { 149,2898 }, { 150,2898 }, { 151,2898 }, { 152,2898 }, + { 153,2898 }, { 154,2898 }, { 155,2898 }, { 156,2898 }, { 157,2898 }, + { 158,2898 }, { 159,2898 }, { 160,2898 }, { 161,2898 }, { 162,2898 }, + { 163,2898 }, { 164,2898 }, { 165,2898 }, { 166,2898 }, { 167,2898 }, + { 168,2898 }, { 169,2898 }, { 170,2898 }, { 171,2898 }, { 172,2898 }, + { 173,2898 }, { 174,2898 }, { 175,2898 }, { 176,2898 }, { 177,2898 }, + { 178,2898 }, { 179,2898 }, { 180,2898 }, { 181,2898 }, { 182,2898 }, + { 183,2898 }, { 184,2898 }, { 185,2898 }, { 186,2898 }, { 187,2898 }, + { 188,2898 }, { 189,2898 }, { 190,2898 }, { 191,2898 }, { 192,2898 }, + + { 193,2898 }, { 194,2898 }, { 195,2898 }, { 196,2898 }, { 197,2898 }, + { 198,2898 }, { 199,2898 }, { 200,2898 }, { 201,2898 }, { 202,2898 }, + { 203,2898 }, { 204,2898 }, { 205,2898 }, { 206,2898 }, { 207,2898 }, + { 208,2898 }, { 209,2898 }, { 210,2898 }, { 211,2898 }, { 212,2898 }, + { 213,2898 }, { 214,2898 }, { 215,2898 }, { 216,2898 }, { 217,2898 }, + { 218,2898 }, { 219,2898 }, { 220,2898 }, { 221,2898 }, { 222,2898 }, + { 223,2898 }, { 224,2898 }, { 225,2898 }, { 226,2898 }, { 227,2898 }, + { 228,2898 }, { 229,2898 }, { 230,2898 }, { 231,2898 }, { 232,2898 }, + { 233,2898 }, { 234,2898 }, { 235,2898 }, { 236,2898 }, { 237,2898 }, + { 238,2898 }, { 239,2898 }, { 240,2898 }, { 241,2898 }, { 242,2898 }, + + { 243,2898 }, { 244,2898 }, { 245,2898 }, { 246,2898 }, { 247,2898 }, + { 248,2898 }, { 249,2898 }, { 250,2898 }, { 251,2898 }, { 252,2898 }, + { 253,2898 }, { 254,2898 }, { 255,2898 }, { 256,2898 }, { 0, 0 }, + { 0,13808 }, { 1,6388 }, { 2,6388 }, { 3,6388 }, { 4,6388 }, + { 5,6388 }, { 6,6388 }, { 7,6388 }, { 8,6388 }, { 9,6388 }, + { 10,6646 }, { 11,6388 }, { 12,6388 }, { 13,6388 }, { 14,6388 }, + { 15,6388 }, { 16,6388 }, { 17,6388 }, { 18,6388 }, { 19,6388 }, + { 20,6388 }, { 21,6388 }, { 22,6388 }, { 23,6388 }, { 24,6388 }, + { 25,6388 }, { 26,6388 }, { 27,6388 }, { 28,6388 }, { 29,6388 }, + { 30,6388 }, { 31,6388 }, { 32,6388 }, { 33,6388 }, { 34,6388 }, + + { 35,6388 }, { 36,6388 }, { 37,6388 }, { 38,6388 }, { 39,2645 }, + { 40,6388 }, { 41,6388 }, { 42,6388 }, { 43,6388 }, { 44,6388 }, + { 45,6388 }, { 46,6388 }, { 47,6388 }, { 48,6388 }, { 49,6388 }, + { 50,6388 }, { 51,6388 }, { 52,6388 }, { 53,6388 }, { 54,6388 }, + { 55,6388 }, { 56,6388 }, { 57,6388 }, { 58,6388 }, { 59,6388 }, + { 60,6388 }, { 61,6388 }, { 62,6388 }, { 63,6388 }, { 64,6388 }, + { 65,6388 }, { 66,6388 }, { 67,6388 }, { 68,6388 }, { 69,6388 }, + { 70,6388 }, { 71,6388 }, { 72,6388 }, { 73,6388 }, { 74,6388 }, + { 75,6388 }, { 76,6388 }, { 77,6388 }, { 78,6388 }, { 79,6388 }, + { 80,6388 }, { 81,6388 }, { 82,6388 }, { 83,6388 }, { 84,6388 }, + + { 85,6388 }, { 86,6388 }, { 87,6388 }, { 88,6388 }, { 89,6388 }, + { 90,6388 }, { 91,6388 }, { 92,6904 }, { 93,6388 }, { 94,6388 }, + { 95,6388 }, { 96,6388 }, { 97,6388 }, { 98,6388 }, { 99,6388 }, + { 100,6388 }, { 101,6388 }, { 102,6388 }, { 103,6388 }, { 104,6388 }, + { 105,6388 }, { 106,6388 }, { 107,6388 }, { 108,6388 }, { 109,6388 }, + { 110,6388 }, { 111,6388 }, { 112,6388 }, { 113,6388 }, { 114,6388 }, + { 115,6388 }, { 116,6388 }, { 117,6388 }, { 118,6388 }, { 119,6388 }, + { 120,6388 }, { 121,6388 }, { 122,6388 }, { 123,6388 }, { 124,6388 }, + { 125,6388 }, { 126,6388 }, { 127,6388 }, { 128,6388 }, { 129,6388 }, + { 130,6388 }, { 131,6388 }, { 132,6388 }, { 133,6388 }, { 134,6388 }, + + { 135,6388 }, { 136,6388 }, { 137,6388 }, { 138,6388 }, { 139,6388 }, + { 140,6388 }, { 141,6388 }, { 142,6388 }, { 143,6388 }, { 144,6388 }, + { 145,6388 }, { 146,6388 }, { 147,6388 }, { 148,6388 }, { 149,6388 }, + { 150,6388 }, { 151,6388 }, { 152,6388 }, { 153,6388 }, { 154,6388 }, + { 155,6388 }, { 156,6388 }, { 157,6388 }, { 158,6388 }, { 159,6388 }, + { 160,6388 }, { 161,6388 }, { 162,6388 }, { 163,6388 }, { 164,6388 }, + { 165,6388 }, { 166,6388 }, { 167,6388 }, { 168,6388 }, { 169,6388 }, + { 170,6388 }, { 171,6388 }, { 172,6388 }, { 173,6388 }, { 174,6388 }, + { 175,6388 }, { 176,6388 }, { 177,6388 }, { 178,6388 }, { 179,6388 }, + { 180,6388 }, { 181,6388 }, { 182,6388 }, { 183,6388 }, { 184,6388 }, + + { 185,6388 }, { 186,6388 }, { 187,6388 }, { 188,6388 }, { 189,6388 }, + { 190,6388 }, { 191,6388 }, { 192,6388 }, { 193,6388 }, { 194,6388 }, + { 195,6388 }, { 196,6388 }, { 197,6388 }, { 198,6388 }, { 199,6388 }, + { 200,6388 }, { 201,6388 }, { 202,6388 }, { 203,6388 }, { 204,6388 }, + { 205,6388 }, { 206,6388 }, { 207,6388 }, { 208,6388 }, { 209,6388 }, + { 210,6388 }, { 211,6388 }, { 212,6388 }, { 213,6388 }, { 214,6388 }, + { 215,6388 }, { 216,6388 }, { 217,6388 }, { 218,6388 }, { 219,6388 }, + { 220,6388 }, { 221,6388 }, { 222,6388 }, { 223,6388 }, { 224,6388 }, + { 225,6388 }, { 226,6388 }, { 227,6388 }, { 228,6388 }, { 229,6388 }, + { 230,6388 }, { 231,6388 }, { 232,6388 }, { 233,6388 }, { 234,6388 }, + + { 235,6388 }, { 236,6388 }, { 237,6388 }, { 238,6388 }, { 239,6388 }, + { 240,6388 }, { 241,6388 }, { 242,6388 }, { 243,6388 }, { 244,6388 }, + { 245,6388 }, { 246,6388 }, { 247,6388 }, { 248,6388 }, { 249,6388 }, + { 250,6388 }, { 251,6388 }, { 252,6388 }, { 253,6388 }, { 254,6388 }, + { 255,6388 }, { 256,6388 }, { 0, 0 }, { 0,13550 }, { 1,6130 }, + { 2,6130 }, { 3,6130 }, { 4,6130 }, { 5,6130 }, { 6,6130 }, + { 7,6130 }, { 8,6130 }, { 9,6130 }, { 10,6388 }, { 11,6130 }, + { 12,6130 }, { 13,6130 }, { 14,6130 }, { 15,6130 }, { 16,6130 }, + { 17,6130 }, { 18,6130 }, { 19,6130 }, { 20,6130 }, { 21,6130 }, + { 22,6130 }, { 23,6130 }, { 24,6130 }, { 25,6130 }, { 26,6130 }, + + { 27,6130 }, { 28,6130 }, { 29,6130 }, { 30,6130 }, { 31,6130 }, + { 32,6130 }, { 33,6130 }, { 34,6130 }, { 35,6130 }, { 36,6130 }, + { 37,6130 }, { 38,6130 }, { 39,2387 }, { 40,6130 }, { 41,6130 }, + { 42,6130 }, { 43,6130 }, { 44,6130 }, { 45,6130 }, { 46,6130 }, + { 47,6130 }, { 48,6130 }, { 49,6130 }, { 50,6130 }, { 51,6130 }, + { 52,6130 }, { 53,6130 }, { 54,6130 }, { 55,6130 }, { 56,6130 }, + { 57,6130 }, { 58,6130 }, { 59,6130 }, { 60,6130 }, { 61,6130 }, + { 62,6130 }, { 63,6130 }, { 64,6130 }, { 65,6130 }, { 66,6130 }, + { 67,6130 }, { 68,6130 }, { 69,6130 }, { 70,6130 }, { 71,6130 }, + { 72,6130 }, { 73,6130 }, { 74,6130 }, { 75,6130 }, { 76,6130 }, + + { 77,6130 }, { 78,6130 }, { 79,6130 }, { 80,6130 }, { 81,6130 }, + { 82,6130 }, { 83,6130 }, { 84,6130 }, { 85,6130 }, { 86,6130 }, + { 87,6130 }, { 88,6130 }, { 89,6130 }, { 90,6130 }, { 91,6130 }, + { 92,6646 }, { 93,6130 }, { 94,6130 }, { 95,6130 }, { 96,6130 }, + { 97,6130 }, { 98,6130 }, { 99,6130 }, { 100,6130 }, { 101,6130 }, + { 102,6130 }, { 103,6130 }, { 104,6130 }, { 105,6130 }, { 106,6130 }, + { 107,6130 }, { 108,6130 }, { 109,6130 }, { 110,6130 }, { 111,6130 }, + { 112,6130 }, { 113,6130 }, { 114,6130 }, { 115,6130 }, { 116,6130 }, + { 117,6130 }, { 118,6130 }, { 119,6130 }, { 120,6130 }, { 121,6130 }, + { 122,6130 }, { 123,6130 }, { 124,6130 }, { 125,6130 }, { 126,6130 }, + + { 127,6130 }, { 128,6130 }, { 129,6130 }, { 130,6130 }, { 131,6130 }, + { 132,6130 }, { 133,6130 }, { 134,6130 }, { 135,6130 }, { 136,6130 }, + { 137,6130 }, { 138,6130 }, { 139,6130 }, { 140,6130 }, { 141,6130 }, + { 142,6130 }, { 143,6130 }, { 144,6130 }, { 145,6130 }, { 146,6130 }, + { 147,6130 }, { 148,6130 }, { 149,6130 }, { 150,6130 }, { 151,6130 }, + { 152,6130 }, { 153,6130 }, { 154,6130 }, { 155,6130 }, { 156,6130 }, + { 157,6130 }, { 158,6130 }, { 159,6130 }, { 160,6130 }, { 161,6130 }, + { 162,6130 }, { 163,6130 }, { 164,6130 }, { 165,6130 }, { 166,6130 }, + { 167,6130 }, { 168,6130 }, { 169,6130 }, { 170,6130 }, { 171,6130 }, + { 172,6130 }, { 173,6130 }, { 174,6130 }, { 175,6130 }, { 176,6130 }, + + { 177,6130 }, { 178,6130 }, { 179,6130 }, { 180,6130 }, { 181,6130 }, + { 182,6130 }, { 183,6130 }, { 184,6130 }, { 185,6130 }, { 186,6130 }, + { 187,6130 }, { 188,6130 }, { 189,6130 }, { 190,6130 }, { 191,6130 }, + { 192,6130 }, { 193,6130 }, { 194,6130 }, { 195,6130 }, { 196,6130 }, + { 197,6130 }, { 198,6130 }, { 199,6130 }, { 200,6130 }, { 201,6130 }, + { 202,6130 }, { 203,6130 }, { 204,6130 }, { 205,6130 }, { 206,6130 }, + { 207,6130 }, { 208,6130 }, { 209,6130 }, { 210,6130 }, { 211,6130 }, + { 212,6130 }, { 213,6130 }, { 214,6130 }, { 215,6130 }, { 216,6130 }, + { 217,6130 }, { 218,6130 }, { 219,6130 }, { 220,6130 }, { 221,6130 }, + { 222,6130 }, { 223,6130 }, { 224,6130 }, { 225,6130 }, { 226,6130 }, + + { 227,6130 }, { 228,6130 }, { 229,6130 }, { 230,6130 }, { 231,6130 }, + { 232,6130 }, { 233,6130 }, { 234,6130 }, { 235,6130 }, { 236,6130 }, + { 237,6130 }, { 238,6130 }, { 239,6130 }, { 240,6130 }, { 241,6130 }, + { 242,6130 }, { 243,6130 }, { 244,6130 }, { 245,6130 }, { 246,6130 }, + { 247,6130 }, { 248,6130 }, { 249,6130 }, { 250,6130 }, { 251,6130 }, + { 252,6130 }, { 253,6130 }, { 254,6130 }, { 255,6130 }, { 256,6130 }, + { 0, 0 }, { 0,13292 }, { 1,6646 }, { 2,6646 }, { 3,6646 }, + { 4,6646 }, { 5,6646 }, { 6,6646 }, { 7,6646 }, { 8,6646 }, + { 9,6646 }, { 10,6904 }, { 11,6646 }, { 12,6646 }, { 13,6646 }, + { 14,6646 }, { 15,6646 }, { 16,6646 }, { 17,6646 }, { 18,6646 }, + + { 19,6646 }, { 20,6646 }, { 21,6646 }, { 22,6646 }, { 23,6646 }, + { 24,6646 }, { 25,6646 }, { 26,6646 }, { 27,6646 }, { 28,6646 }, + { 29,6646 }, { 30,6646 }, { 31,6646 }, { 32,6646 }, { 33,6646 }, + { 34,6646 }, { 35,6646 }, { 36,7162 }, { 37,6646 }, { 38,6646 }, + { 39,6646 }, { 40,6646 }, { 41,6646 }, { 42,6646 }, { 43,6646 }, + { 44,6646 }, { 45,6646 }, { 46,6646 }, { 47,6646 }, { 48,6646 }, + { 49,6646 }, { 50,6646 }, { 51,6646 }, { 52,6646 }, { 53,6646 }, + { 54,6646 }, { 55,6646 }, { 56,6646 }, { 57,6646 }, { 58,6646 }, + { 59,6646 }, { 60,6646 }, { 61,6646 }, { 62,6646 }, { 63,6646 }, + { 64,6646 }, { 65,6646 }, { 66,6646 }, { 67,6646 }, { 68,6646 }, + + { 69,6646 }, { 70,6646 }, { 71,6646 }, { 72,6646 }, { 73,6646 }, + { 74,6646 }, { 75,6646 }, { 76,6646 }, { 77,6646 }, { 78,6646 }, + { 79,6646 }, { 80,6646 }, { 81,6646 }, { 82,6646 }, { 83,6646 }, + { 84,6646 }, { 85,6646 }, { 86,6646 }, { 87,6646 }, { 88,6646 }, + { 89,6646 }, { 90,6646 }, { 91,6646 }, { 92,6646 }, { 93,6646 }, + { 94,6646 }, { 95,6646 }, { 96,6646 }, { 97,6646 }, { 98,6646 }, + { 99,6646 }, { 100,6646 }, { 101,6646 }, { 102,6646 }, { 103,6646 }, + { 104,6646 }, { 105,6646 }, { 106,6646 }, { 107,6646 }, { 108,6646 }, + { 109,6646 }, { 110,6646 }, { 111,6646 }, { 112,6646 }, { 113,6646 }, + { 114,6646 }, { 115,6646 }, { 116,6646 }, { 117,6646 }, { 118,6646 }, + + { 119,6646 }, { 120,6646 }, { 121,6646 }, { 122,6646 }, { 123,6646 }, + { 124,6646 }, { 125,6646 }, { 126,6646 }, { 127,6646 }, { 128,6646 }, + { 129,6646 }, { 130,6646 }, { 131,6646 }, { 132,6646 }, { 133,6646 }, + { 134,6646 }, { 135,6646 }, { 136,6646 }, { 137,6646 }, { 138,6646 }, + { 139,6646 }, { 140,6646 }, { 141,6646 }, { 142,6646 }, { 143,6646 }, + { 144,6646 }, { 145,6646 }, { 146,6646 }, { 147,6646 }, { 148,6646 }, + { 149,6646 }, { 150,6646 }, { 151,6646 }, { 152,6646 }, { 153,6646 }, + { 154,6646 }, { 155,6646 }, { 156,6646 }, { 157,6646 }, { 158,6646 }, + { 159,6646 }, { 160,6646 }, { 161,6646 }, { 162,6646 }, { 163,6646 }, + { 164,6646 }, { 165,6646 }, { 166,6646 }, { 167,6646 }, { 168,6646 }, + + { 169,6646 }, { 170,6646 }, { 171,6646 }, { 172,6646 }, { 173,6646 }, + { 174,6646 }, { 175,6646 }, { 176,6646 }, { 177,6646 }, { 178,6646 }, + { 179,6646 }, { 180,6646 }, { 181,6646 }, { 182,6646 }, { 183,6646 }, + { 184,6646 }, { 185,6646 }, { 186,6646 }, { 187,6646 }, { 188,6646 }, + { 189,6646 }, { 190,6646 }, { 191,6646 }, { 192,6646 }, { 193,6646 }, + { 194,6646 }, { 195,6646 }, { 196,6646 }, { 197,6646 }, { 198,6646 }, + { 199,6646 }, { 200,6646 }, { 201,6646 }, { 202,6646 }, { 203,6646 }, + { 204,6646 }, { 205,6646 }, { 206,6646 }, { 207,6646 }, { 208,6646 }, + { 209,6646 }, { 210,6646 }, { 211,6646 }, { 212,6646 }, { 213,6646 }, + { 214,6646 }, { 215,6646 }, { 216,6646 }, { 217,6646 }, { 218,6646 }, + + { 219,6646 }, { 220,6646 }, { 221,6646 }, { 222,6646 }, { 223,6646 }, + { 224,6646 }, { 225,6646 }, { 226,6646 }, { 227,6646 }, { 228,6646 }, + { 229,6646 }, { 230,6646 }, { 231,6646 }, { 232,6646 }, { 233,6646 }, + { 234,6646 }, { 235,6646 }, { 236,6646 }, { 237,6646 }, { 238,6646 }, + { 239,6646 }, { 240,6646 }, { 241,6646 }, { 242,6646 }, { 243,6646 }, + { 244,6646 }, { 245,6646 }, { 246,6646 }, { 247,6646 }, { 248,6646 }, + { 249,6646 }, { 250,6646 }, { 251,6646 }, { 252,6646 }, { 253,6646 }, + { 254,6646 }, { 255,6646 }, { 256,6646 }, { 0, 0 }, { 0,13034 }, + { 1,6388 }, { 2,6388 }, { 3,6388 }, { 4,6388 }, { 5,6388 }, + { 6,6388 }, { 7,6388 }, { 8,6388 }, { 9,6388 }, { 10,6646 }, + + { 11,6388 }, { 12,6388 }, { 13,6388 }, { 14,6388 }, { 15,6388 }, + { 16,6388 }, { 17,6388 }, { 18,6388 }, { 19,6388 }, { 20,6388 }, + { 21,6388 }, { 22,6388 }, { 23,6388 }, { 24,6388 }, { 25,6388 }, + { 26,6388 }, { 27,6388 }, { 28,6388 }, { 29,6388 }, { 30,6388 }, + { 31,6388 }, { 32,6388 }, { 33,6388 }, { 34,6388 }, { 35,6388 }, + { 36,6904 }, { 37,6388 }, { 38,6388 }, { 39,6388 }, { 40,6388 }, + { 41,6388 }, { 42,6388 }, { 43,6388 }, { 44,6388 }, { 45,6388 }, + { 46,6388 }, { 47,6388 }, { 48,6388 }, { 49,6388 }, { 50,6388 }, + { 51,6388 }, { 52,6388 }, { 53,6388 }, { 54,6388 }, { 55,6388 }, + { 56,6388 }, { 57,6388 }, { 58,6388 }, { 59,6388 }, { 60,6388 }, + + { 61,6388 }, { 62,6388 }, { 63,6388 }, { 64,6388 }, { 65,6388 }, + { 66,6388 }, { 67,6388 }, { 68,6388 }, { 69,6388 }, { 70,6388 }, + { 71,6388 }, { 72,6388 }, { 73,6388 }, { 74,6388 }, { 75,6388 }, + { 76,6388 }, { 77,6388 }, { 78,6388 }, { 79,6388 }, { 80,6388 }, + { 81,6388 }, { 82,6388 }, { 83,6388 }, { 84,6388 }, { 85,6388 }, + { 86,6388 }, { 87,6388 }, { 88,6388 }, { 89,6388 }, { 90,6388 }, + { 91,6388 }, { 92,6388 }, { 93,6388 }, { 94,6388 }, { 95,6388 }, + { 96,6388 }, { 97,6388 }, { 98,6388 }, { 99,6388 }, { 100,6388 }, + { 101,6388 }, { 102,6388 }, { 103,6388 }, { 104,6388 }, { 105,6388 }, + { 106,6388 }, { 107,6388 }, { 108,6388 }, { 109,6388 }, { 110,6388 }, + + { 111,6388 }, { 112,6388 }, { 113,6388 }, { 114,6388 }, { 115,6388 }, + { 116,6388 }, { 117,6388 }, { 118,6388 }, { 119,6388 }, { 120,6388 }, + { 121,6388 }, { 122,6388 }, { 123,6388 }, { 124,6388 }, { 125,6388 }, + { 126,6388 }, { 127,6388 }, { 128,6388 }, { 129,6388 }, { 130,6388 }, + { 131,6388 }, { 132,6388 }, { 133,6388 }, { 134,6388 }, { 135,6388 }, + { 136,6388 }, { 137,6388 }, { 138,6388 }, { 139,6388 }, { 140,6388 }, + { 141,6388 }, { 142,6388 }, { 143,6388 }, { 144,6388 }, { 145,6388 }, + { 146,6388 }, { 147,6388 }, { 148,6388 }, { 149,6388 }, { 150,6388 }, + { 151,6388 }, { 152,6388 }, { 153,6388 }, { 154,6388 }, { 155,6388 }, + { 156,6388 }, { 157,6388 }, { 158,6388 }, { 159,6388 }, { 160,6388 }, + + { 161,6388 }, { 162,6388 }, { 163,6388 }, { 164,6388 }, { 165,6388 }, + { 166,6388 }, { 167,6388 }, { 168,6388 }, { 169,6388 }, { 170,6388 }, + { 171,6388 }, { 172,6388 }, { 173,6388 }, { 174,6388 }, { 175,6388 }, + { 176,6388 }, { 177,6388 }, { 178,6388 }, { 179,6388 }, { 180,6388 }, + { 181,6388 }, { 182,6388 }, { 183,6388 }, { 184,6388 }, { 185,6388 }, + { 186,6388 }, { 187,6388 }, { 188,6388 }, { 189,6388 }, { 190,6388 }, + { 191,6388 }, { 192,6388 }, { 193,6388 }, { 194,6388 }, { 195,6388 }, + { 196,6388 }, { 197,6388 }, { 198,6388 }, { 199,6388 }, { 200,6388 }, + { 201,6388 }, { 202,6388 }, { 203,6388 }, { 204,6388 }, { 205,6388 }, + { 206,6388 }, { 207,6388 }, { 208,6388 }, { 209,6388 }, { 210,6388 }, + + { 211,6388 }, { 212,6388 }, { 213,6388 }, { 214,6388 }, { 215,6388 }, + { 216,6388 }, { 217,6388 }, { 218,6388 }, { 219,6388 }, { 220,6388 }, + { 221,6388 }, { 222,6388 }, { 223,6388 }, { 224,6388 }, { 225,6388 }, + { 226,6388 }, { 227,6388 }, { 228,6388 }, { 229,6388 }, { 230,6388 }, + { 231,6388 }, { 232,6388 }, { 233,6388 }, { 234,6388 }, { 235,6388 }, + { 236,6388 }, { 237,6388 }, { 238,6388 }, { 239,6388 }, { 240,6388 }, + { 241,6388 }, { 242,6388 }, { 243,6388 }, { 244,6388 }, { 245,6388 }, + { 246,6388 }, { 247,6388 }, { 248,6388 }, { 249,6388 }, { 250,6388 }, + { 251,6388 }, { 252,6388 }, { 253,6388 }, { 254,6388 }, { 255,6388 }, + { 256,6388 }, { 0, 0 }, { 0,12776 }, { 1,4514 }, { 2,4514 }, + + { 3,4514 }, { 4,4514 }, { 5,4514 }, { 6,4514 }, { 7,4514 }, + { 8,4514 }, { 9,4514 }, { 10,4514 }, { 11,4514 }, { 12,4514 }, + { 13,4514 }, { 14,4514 }, { 15,4514 }, { 16,4514 }, { 17,4514 }, + { 18,4514 }, { 19,4514 }, { 20,4514 }, { 21,4514 }, { 22,4514 }, + { 23,4514 }, { 24,4514 }, { 25,4514 }, { 26,4514 }, { 27,4514 }, + { 28,4514 }, { 29,4514 }, { 30,4514 }, { 31,4514 }, { 32,4514 }, + { 33,4514 }, { 34,1615 }, { 35,4514 }, { 36,4514 }, { 37,4514 }, + { 38,4514 }, { 39,4514 }, { 40,4514 }, { 41,4514 }, { 42,4514 }, + { 43,4514 }, { 44,4514 }, { 45,4514 }, { 46,4514 }, { 47,4514 }, + { 48,4514 }, { 49,4514 }, { 50,4514 }, { 51,4514 }, { 52,4514 }, + + { 53,4514 }, { 54,4514 }, { 55,4514 }, { 56,4514 }, { 57,4514 }, + { 58,4514 }, { 59,4514 }, { 60,4514 }, { 61,4514 }, { 62,4514 }, + { 63,4514 }, { 64,4514 }, { 65,4514 }, { 66,4514 }, { 67,4514 }, + { 68,4514 }, { 69,4514 }, { 70,4514 }, { 71,4514 }, { 72,4514 }, + { 73,4514 }, { 74,4514 }, { 75,4514 }, { 76,4514 }, { 77,4514 }, + { 78,4514 }, { 79,4514 }, { 80,4514 }, { 81,4514 }, { 82,4514 }, + { 83,4514 }, { 84,4514 }, { 85,4514 }, { 86,4514 }, { 87,4514 }, + { 88,4514 }, { 89,4514 }, { 90,4514 }, { 91,4514 }, { 92,4514 }, + { 93,4514 }, { 94,4514 }, { 95,4514 }, { 96,4514 }, { 97,4514 }, + { 98,4514 }, { 99,4514 }, { 100,4514 }, { 101,4514 }, { 102,4514 }, + + { 103,4514 }, { 104,4514 }, { 105,4514 }, { 106,4514 }, { 107,4514 }, + { 108,4514 }, { 109,4514 }, { 110,4514 }, { 111,4514 }, { 112,4514 }, + { 113,4514 }, { 114,4514 }, { 115,4514 }, { 116,4514 }, { 117,4514 }, + { 118,4514 }, { 119,4514 }, { 120,4514 }, { 121,4514 }, { 122,4514 }, + { 123,4514 }, { 124,4514 }, { 125,4514 }, { 126,4514 }, { 127,4514 }, + { 128,4514 }, { 129,4514 }, { 130,4514 }, { 131,4514 }, { 132,4514 }, + { 133,4514 }, { 134,4514 }, { 135,4514 }, { 136,4514 }, { 137,4514 }, + { 138,4514 }, { 139,4514 }, { 140,4514 }, { 141,4514 }, { 142,4514 }, + { 143,4514 }, { 144,4514 }, { 145,4514 }, { 146,4514 }, { 147,4514 }, + { 148,4514 }, { 149,4514 }, { 150,4514 }, { 151,4514 }, { 152,4514 }, + + { 153,4514 }, { 154,4514 }, { 155,4514 }, { 156,4514 }, { 157,4514 }, + { 158,4514 }, { 159,4514 }, { 160,4514 }, { 161,4514 }, { 162,4514 }, + { 163,4514 }, { 164,4514 }, { 165,4514 }, { 166,4514 }, { 167,4514 }, + { 168,4514 }, { 169,4514 }, { 170,4514 }, { 171,4514 }, { 172,4514 }, + { 173,4514 }, { 174,4514 }, { 175,4514 }, { 176,4514 }, { 177,4514 }, + { 178,4514 }, { 179,4514 }, { 180,4514 }, { 181,4514 }, { 182,4514 }, + { 183,4514 }, { 184,4514 }, { 185,4514 }, { 186,4514 }, { 187,4514 }, + { 188,4514 }, { 189,4514 }, { 190,4514 }, { 191,4514 }, { 192,4514 }, + { 193,4514 }, { 194,4514 }, { 195,4514 }, { 196,4514 }, { 197,4514 }, + { 198,4514 }, { 199,4514 }, { 200,4514 }, { 201,4514 }, { 202,4514 }, + + { 203,4514 }, { 204,4514 }, { 205,4514 }, { 206,4514 }, { 207,4514 }, + { 208,4514 }, { 209,4514 }, { 210,4514 }, { 211,4514 }, { 212,4514 }, + { 213,4514 }, { 214,4514 }, { 215,4514 }, { 216,4514 }, { 217,4514 }, + { 218,4514 }, { 219,4514 }, { 220,4514 }, { 221,4514 }, { 222,4514 }, + { 223,4514 }, { 224,4514 }, { 225,4514 }, { 226,4514 }, { 227,4514 }, + { 228,4514 }, { 229,4514 }, { 230,4514 }, { 231,4514 }, { 232,4514 }, + { 233,4514 }, { 234,4514 }, { 235,4514 }, { 236,4514 }, { 237,4514 }, + { 238,4514 }, { 239,4514 }, { 240,4514 }, { 241,4514 }, { 242,4514 }, + { 243,4514 }, { 244,4514 }, { 245,4514 }, { 246,4514 }, { 247,4514 }, + { 248,4514 }, { 249,4514 }, { 250,4514 }, { 251,4514 }, { 252,4514 }, + + { 253,4514 }, { 254,4514 }, { 255,4514 }, { 256,4514 }, { 0, 0 }, + { 0,12518 }, { 1,4256 }, { 2,4256 }, { 3,4256 }, { 4,4256 }, + { 5,4256 }, { 6,4256 }, { 7,4256 }, { 8,4256 }, { 9,4256 }, + { 10,4256 }, { 11,4256 }, { 12,4256 }, { 13,4256 }, { 14,4256 }, + { 15,4256 }, { 16,4256 }, { 17,4256 }, { 18,4256 }, { 19,4256 }, + { 20,4256 }, { 21,4256 }, { 22,4256 }, { 23,4256 }, { 24,4256 }, + { 25,4256 }, { 26,4256 }, { 27,4256 }, { 28,4256 }, { 29,4256 }, + { 30,4256 }, { 31,4256 }, { 32,4256 }, { 33,4256 }, { 34,1357 }, + { 35,4256 }, { 36,4256 }, { 37,4256 }, { 38,4256 }, { 39,4256 }, + { 40,4256 }, { 41,4256 }, { 42,4256 }, { 43,4256 }, { 44,4256 }, + + { 45,4256 }, { 46,4256 }, { 47,4256 }, { 48,4256 }, { 49,4256 }, + { 50,4256 }, { 51,4256 }, { 52,4256 }, { 53,4256 }, { 54,4256 }, + { 55,4256 }, { 56,4256 }, { 57,4256 }, { 58,4256 }, { 59,4256 }, + { 60,4256 }, { 61,4256 }, { 62,4256 }, { 63,4256 }, { 64,4256 }, + { 65,4256 }, { 66,4256 }, { 67,4256 }, { 68,4256 }, { 69,4256 }, + { 70,4256 }, { 71,4256 }, { 72,4256 }, { 73,4256 }, { 74,4256 }, + { 75,4256 }, { 76,4256 }, { 77,4256 }, { 78,4256 }, { 79,4256 }, + { 80,4256 }, { 81,4256 }, { 82,4256 }, { 83,4256 }, { 84,4256 }, + { 85,4256 }, { 86,4256 }, { 87,4256 }, { 88,4256 }, { 89,4256 }, + { 90,4256 }, { 91,4256 }, { 92,4256 }, { 93,4256 }, { 94,4256 }, + + { 95,4256 }, { 96,4256 }, { 97,4256 }, { 98,4256 }, { 99,4256 }, + { 100,4256 }, { 101,4256 }, { 102,4256 }, { 103,4256 }, { 104,4256 }, + { 105,4256 }, { 106,4256 }, { 107,4256 }, { 108,4256 }, { 109,4256 }, + { 110,4256 }, { 111,4256 }, { 112,4256 }, { 113,4256 }, { 114,4256 }, + { 115,4256 }, { 116,4256 }, { 117,4256 }, { 118,4256 }, { 119,4256 }, + { 120,4256 }, { 121,4256 }, { 122,4256 }, { 123,4256 }, { 124,4256 }, + { 125,4256 }, { 126,4256 }, { 127,4256 }, { 128,4256 }, { 129,4256 }, + { 130,4256 }, { 131,4256 }, { 132,4256 }, { 133,4256 }, { 134,4256 }, + { 135,4256 }, { 136,4256 }, { 137,4256 }, { 138,4256 }, { 139,4256 }, + { 140,4256 }, { 141,4256 }, { 142,4256 }, { 143,4256 }, { 144,4256 }, + + { 145,4256 }, { 146,4256 }, { 147,4256 }, { 148,4256 }, { 149,4256 }, + { 150,4256 }, { 151,4256 }, { 152,4256 }, { 153,4256 }, { 154,4256 }, + { 155,4256 }, { 156,4256 }, { 157,4256 }, { 158,4256 }, { 159,4256 }, + { 160,4256 }, { 161,4256 }, { 162,4256 }, { 163,4256 }, { 164,4256 }, + { 165,4256 }, { 166,4256 }, { 167,4256 }, { 168,4256 }, { 169,4256 }, + { 170,4256 }, { 171,4256 }, { 172,4256 }, { 173,4256 }, { 174,4256 }, + { 175,4256 }, { 176,4256 }, { 177,4256 }, { 178,4256 }, { 179,4256 }, + { 180,4256 }, { 181,4256 }, { 182,4256 }, { 183,4256 }, { 184,4256 }, + { 185,4256 }, { 186,4256 }, { 187,4256 }, { 188,4256 }, { 189,4256 }, + { 190,4256 }, { 191,4256 }, { 192,4256 }, { 193,4256 }, { 194,4256 }, + + { 195,4256 }, { 196,4256 }, { 197,4256 }, { 198,4256 }, { 199,4256 }, + { 200,4256 }, { 201,4256 }, { 202,4256 }, { 203,4256 }, { 204,4256 }, + { 205,4256 }, { 206,4256 }, { 207,4256 }, { 208,4256 }, { 209,4256 }, + { 210,4256 }, { 211,4256 }, { 212,4256 }, { 213,4256 }, { 214,4256 }, + { 215,4256 }, { 216,4256 }, { 217,4256 }, { 218,4256 }, { 219,4256 }, + { 220,4256 }, { 221,4256 }, { 222,4256 }, { 223,4256 }, { 224,4256 }, + { 225,4256 }, { 226,4256 }, { 227,4256 }, { 228,4256 }, { 229,4256 }, + { 230,4256 }, { 231,4256 }, { 232,4256 }, { 233,4256 }, { 234,4256 }, + { 235,4256 }, { 236,4256 }, { 237,4256 }, { 238,4256 }, { 239,4256 }, + { 240,4256 }, { 241,4256 }, { 242,4256 }, { 243,4256 }, { 244,4256 }, + + { 245,4256 }, { 246,4256 }, { 247,4256 }, { 248,4256 }, { 249,4256 }, + { 250,4256 }, { 251,4256 }, { 252,4256 }, { 253,4256 }, { 254,4256 }, + { 255,4256 }, { 256,4256 }, { 0, 0 }, { 0,12260 }, { 1,4514 }, + { 2,4514 }, { 3,4514 }, { 4,4514 }, { 5,4514 }, { 6,4514 }, + { 7,4514 }, { 8,4514 }, { 9,4514 }, { 10,4514 }, { 11,4514 }, + { 12,4514 }, { 13,4514 }, { 14,4514 }, { 15,4514 }, { 16,4514 }, + { 17,4514 }, { 18,4514 }, { 19,4514 }, { 20,4514 }, { 21,4514 }, + { 22,4514 }, { 23,4514 }, { 24,4514 }, { 25,4514 }, { 26,4514 }, + { 27,4514 }, { 28,4514 }, { 29,4514 }, { 30,4514 }, { 31,4514 }, + { 32,4514 }, { 33,4514 }, { 34,4514 }, { 35,4514 }, { 36,4514 }, + + { 37,4514 }, { 38,4514 }, { 39,1090 }, { 40,4514 }, { 41,4514 }, + { 42,4514 }, { 43,4514 }, { 44,4514 }, { 45,4514 }, { 46,4514 }, + { 47,4514 }, { 48,4514 }, { 49,4514 }, { 50,4514 }, { 51,4514 }, + { 52,4514 }, { 53,4514 }, { 54,4514 }, { 55,4514 }, { 56,4514 }, + { 57,4514 }, { 58,4514 }, { 59,4514 }, { 60,4514 }, { 61,4514 }, + { 62,4514 }, { 63,4514 }, { 64,4514 }, { 65,4514 }, { 66,4514 }, + { 67,4514 }, { 68,4514 }, { 69,4514 }, { 70,4514 }, { 71,4514 }, + { 72,4514 }, { 73,4514 }, { 74,4514 }, { 75,4514 }, { 76,4514 }, + { 77,4514 }, { 78,4514 }, { 79,4514 }, { 80,4514 }, { 81,4514 }, + { 82,4514 }, { 83,4514 }, { 84,4514 }, { 85,4514 }, { 86,4514 }, + + { 87,4514 }, { 88,4514 }, { 89,4514 }, { 90,4514 }, { 91,4514 }, + { 92,4514 }, { 93,4514 }, { 94,4514 }, { 95,4514 }, { 96,4514 }, + { 97,4514 }, { 98,4514 }, { 99,4514 }, { 100,4514 }, { 101,4514 }, + { 102,4514 }, { 103,4514 }, { 104,4514 }, { 105,4514 }, { 106,4514 }, + { 107,4514 }, { 108,4514 }, { 109,4514 }, { 110,4514 }, { 111,4514 }, + { 112,4514 }, { 113,4514 }, { 114,4514 }, { 115,4514 }, { 116,4514 }, + { 117,4514 }, { 118,4514 }, { 119,4514 }, { 120,4514 }, { 121,4514 }, + { 122,4514 }, { 123,4514 }, { 124,4514 }, { 125,4514 }, { 126,4514 }, + { 127,4514 }, { 128,4514 }, { 129,4514 }, { 130,4514 }, { 131,4514 }, + { 132,4514 }, { 133,4514 }, { 134,4514 }, { 135,4514 }, { 136,4514 }, + + { 137,4514 }, { 138,4514 }, { 139,4514 }, { 140,4514 }, { 141,4514 }, + { 142,4514 }, { 143,4514 }, { 144,4514 }, { 145,4514 }, { 146,4514 }, + { 147,4514 }, { 148,4514 }, { 149,4514 }, { 150,4514 }, { 151,4514 }, + { 152,4514 }, { 153,4514 }, { 154,4514 }, { 155,4514 }, { 156,4514 }, + { 157,4514 }, { 158,4514 }, { 159,4514 }, { 160,4514 }, { 161,4514 }, + { 162,4514 }, { 163,4514 }, { 164,4514 }, { 165,4514 }, { 166,4514 }, + { 167,4514 }, { 168,4514 }, { 169,4514 }, { 170,4514 }, { 171,4514 }, + { 172,4514 }, { 173,4514 }, { 174,4514 }, { 175,4514 }, { 176,4514 }, + { 177,4514 }, { 178,4514 }, { 179,4514 }, { 180,4514 }, { 181,4514 }, + { 182,4514 }, { 183,4514 }, { 184,4514 }, { 185,4514 }, { 186,4514 }, + + { 187,4514 }, { 188,4514 }, { 189,4514 }, { 190,4514 }, { 191,4514 }, + { 192,4514 }, { 193,4514 }, { 194,4514 }, { 195,4514 }, { 196,4514 }, + { 197,4514 }, { 198,4514 }, { 199,4514 }, { 200,4514 }, { 201,4514 }, + { 202,4514 }, { 203,4514 }, { 204,4514 }, { 205,4514 }, { 206,4514 }, + { 207,4514 }, { 208,4514 }, { 209,4514 }, { 210,4514 }, { 211,4514 }, + { 212,4514 }, { 213,4514 }, { 214,4514 }, { 215,4514 }, { 216,4514 }, + { 217,4514 }, { 218,4514 }, { 219,4514 }, { 220,4514 }, { 221,4514 }, + { 222,4514 }, { 223,4514 }, { 224,4514 }, { 225,4514 }, { 226,4514 }, + { 227,4514 }, { 228,4514 }, { 229,4514 }, { 230,4514 }, { 231,4514 }, + { 232,4514 }, { 233,4514 }, { 234,4514 }, { 235,4514 }, { 236,4514 }, + + { 237,4514 }, { 238,4514 }, { 239,4514 }, { 240,4514 }, { 241,4514 }, + { 242,4514 }, { 243,4514 }, { 244,4514 }, { 245,4514 }, { 246,4514 }, + { 247,4514 }, { 248,4514 }, { 249,4514 }, { 250,4514 }, { 251,4514 }, + { 252,4514 }, { 253,4514 }, { 254,4514 }, { 255,4514 }, { 256,4514 }, + { 0, 0 }, { 0,12002 }, { 1,4256 }, { 2,4256 }, { 3,4256 }, + { 4,4256 }, { 5,4256 }, { 6,4256 }, { 7,4256 }, { 8,4256 }, + { 9,4256 }, { 10,4256 }, { 11,4256 }, { 12,4256 }, { 13,4256 }, + { 14,4256 }, { 15,4256 }, { 16,4256 }, { 17,4256 }, { 18,4256 }, + { 19,4256 }, { 20,4256 }, { 21,4256 }, { 22,4256 }, { 23,4256 }, + { 24,4256 }, { 25,4256 }, { 26,4256 }, { 27,4256 }, { 28,4256 }, + + { 29,4256 }, { 30,4256 }, { 31,4256 }, { 32,4256 }, { 33,4256 }, + { 34,4256 }, { 35,4256 }, { 36,4256 }, { 37,4256 }, { 38,4256 }, + { 39, 832 }, { 40,4256 }, { 41,4256 }, { 42,4256 }, { 43,4256 }, + { 44,4256 }, { 45,4256 }, { 46,4256 }, { 47,4256 }, { 48,4256 }, + { 49,4256 }, { 50,4256 }, { 51,4256 }, { 52,4256 }, { 53,4256 }, + { 54,4256 }, { 55,4256 }, { 56,4256 }, { 57,4256 }, { 58,4256 }, + { 59,4256 }, { 60,4256 }, { 61,4256 }, { 62,4256 }, { 63,4256 }, + { 64,4256 }, { 65,4256 }, { 66,4256 }, { 67,4256 }, { 68,4256 }, + { 69,4256 }, { 70,4256 }, { 71,4256 }, { 72,4256 }, { 73,4256 }, + { 74,4256 }, { 75,4256 }, { 76,4256 }, { 77,4256 }, { 78,4256 }, + + { 79,4256 }, { 80,4256 }, { 81,4256 }, { 82,4256 }, { 83,4256 }, + { 84,4256 }, { 85,4256 }, { 86,4256 }, { 87,4256 }, { 88,4256 }, + { 89,4256 }, { 90,4256 }, { 91,4256 }, { 92,4256 }, { 93,4256 }, + { 94,4256 }, { 95,4256 }, { 96,4256 }, { 97,4256 }, { 98,4256 }, + { 99,4256 }, { 100,4256 }, { 101,4256 }, { 102,4256 }, { 103,4256 }, + { 104,4256 }, { 105,4256 }, { 106,4256 }, { 107,4256 }, { 108,4256 }, + { 109,4256 }, { 110,4256 }, { 111,4256 }, { 112,4256 }, { 113,4256 }, + { 114,4256 }, { 115,4256 }, { 116,4256 }, { 117,4256 }, { 118,4256 }, + { 119,4256 }, { 120,4256 }, { 121,4256 }, { 122,4256 }, { 123,4256 }, + { 124,4256 }, { 125,4256 }, { 126,4256 }, { 127,4256 }, { 128,4256 }, + + { 129,4256 }, { 130,4256 }, { 131,4256 }, { 132,4256 }, { 133,4256 }, + { 134,4256 }, { 135,4256 }, { 136,4256 }, { 137,4256 }, { 138,4256 }, + { 139,4256 }, { 140,4256 }, { 141,4256 }, { 142,4256 }, { 143,4256 }, + { 144,4256 }, { 145,4256 }, { 146,4256 }, { 147,4256 }, { 148,4256 }, + { 149,4256 }, { 150,4256 }, { 151,4256 }, { 152,4256 }, { 153,4256 }, + { 154,4256 }, { 155,4256 }, { 156,4256 }, { 157,4256 }, { 158,4256 }, + { 159,4256 }, { 160,4256 }, { 161,4256 }, { 162,4256 }, { 163,4256 }, + { 164,4256 }, { 165,4256 }, { 166,4256 }, { 167,4256 }, { 168,4256 }, + { 169,4256 }, { 170,4256 }, { 171,4256 }, { 172,4256 }, { 173,4256 }, + { 174,4256 }, { 175,4256 }, { 176,4256 }, { 177,4256 }, { 178,4256 }, + + { 179,4256 }, { 180,4256 }, { 181,4256 }, { 182,4256 }, { 183,4256 }, + { 184,4256 }, { 185,4256 }, { 186,4256 }, { 187,4256 }, { 188,4256 }, + { 189,4256 }, { 190,4256 }, { 191,4256 }, { 192,4256 }, { 193,4256 }, + { 194,4256 }, { 195,4256 }, { 196,4256 }, { 197,4256 }, { 198,4256 }, + { 199,4256 }, { 200,4256 }, { 201,4256 }, { 202,4256 }, { 203,4256 }, + { 204,4256 }, { 205,4256 }, { 206,4256 }, { 207,4256 }, { 208,4256 }, + { 209,4256 }, { 210,4256 }, { 211,4256 }, { 212,4256 }, { 213,4256 }, + { 214,4256 }, { 215,4256 }, { 216,4256 }, { 217,4256 }, { 218,4256 }, + { 219,4256 }, { 220,4256 }, { 221,4256 }, { 222,4256 }, { 223,4256 }, + { 224,4256 }, { 225,4256 }, { 226,4256 }, { 227,4256 }, { 228,4256 }, + + { 229,4256 }, { 230,4256 }, { 231,4256 }, { 232,4256 }, { 233,4256 }, + { 234,4256 }, { 235,4256 }, { 236,4256 }, { 237,4256 }, { 238,4256 }, + { 239,4256 }, { 240,4256 }, { 241,4256 }, { 242,4256 }, { 243,4256 }, + { 244,4256 }, { 245,4256 }, { 246,4256 }, { 247,4256 }, { 248,4256 }, + { 249,4256 }, { 250,4256 }, { 251,4256 }, { 252,4256 }, { 253,4256 }, + { 254,4256 }, { 255,4256 }, { 256,4256 }, { 0, 0 }, { 0,11744 }, + { 1, 593 }, { 2, 593 }, { 3, 593 }, { 4, 593 }, { 5, 593 }, + { 6, 593 }, { 7, 593 }, { 8, 593 }, { 9, 593 }, { 10, 597 }, + { 11, 593 }, { 12, 593 }, { 13, 593 }, { 14, 593 }, { 15, 593 }, + { 16, 593 }, { 17, 593 }, { 18, 593 }, { 19, 593 }, { 20, 593 }, + + { 21, 593 }, { 22, 593 }, { 23, 593 }, { 24, 593 }, { 25, 593 }, + { 26, 593 }, { 27, 593 }, { 28, 593 }, { 29, 593 }, { 30, 593 }, + { 31, 593 }, { 32, 593 }, { 33, 593 }, { 34, 593 }, { 35, 593 }, + { 36, 593 }, { 37, 593 }, { 38, 593 }, { 39, 593 }, { 40, 593 }, + { 41, 593 }, { 42, 593 }, { 43, 593 }, { 44, 593 }, { 45, 593 }, + { 46, 593 }, { 47, 593 }, { 48, 593 }, { 49, 593 }, { 50, 593 }, + { 51, 593 }, { 52, 593 }, { 53, 593 }, { 54, 593 }, { 55, 593 }, + { 56, 593 }, { 57, 593 }, { 58, 593 }, { 59, 593 }, { 60, 593 }, + { 61, 593 }, { 62, 593 }, { 63, 593 }, { 64, 593 }, { 65, 593 }, + { 66, 593 }, { 67, 593 }, { 68, 593 }, { 69, 593 }, { 70, 593 }, + + { 71, 593 }, { 72, 593 }, { 73, 593 }, { 74, 593 }, { 75, 593 }, + { 76, 593 }, { 77, 593 }, { 78, 593 }, { 79, 593 }, { 80, 593 }, + { 81, 593 }, { 82, 593 }, { 83, 593 }, { 84, 593 }, { 85, 593 }, + { 86, 593 }, { 87, 593 }, { 88, 593 }, { 89, 593 }, { 90, 593 }, + { 91, 593 }, { 92, 637 }, { 93, 593 }, { 94, 593 }, { 95, 593 }, + { 96, 593 }, { 97, 593 }, { 98, 593 }, { 99, 593 }, { 100, 593 }, + { 101, 593 }, { 102, 593 }, { 103, 593 }, { 104, 593 }, { 105, 593 }, + { 106, 593 }, { 107, 593 }, { 108, 593 }, { 109, 593 }, { 110, 593 }, + { 111, 593 }, { 112, 593 }, { 113, 593 }, { 114, 593 }, { 115, 593 }, + { 116, 593 }, { 117, 593 }, { 118, 593 }, { 119, 593 }, { 120, 593 }, + + { 121, 593 }, { 122, 593 }, { 123, 593 }, { 124, 593 }, { 125, 593 }, + { 126, 593 }, { 127, 593 }, { 128, 593 }, { 129, 593 }, { 130, 593 }, + { 131, 593 }, { 132, 593 }, { 133, 593 }, { 134, 593 }, { 135, 593 }, + { 136, 593 }, { 137, 593 }, { 138, 593 }, { 139, 593 }, { 140, 593 }, + { 141, 593 }, { 142, 593 }, { 143, 593 }, { 144, 593 }, { 145, 593 }, + { 146, 593 }, { 147, 593 }, { 148, 593 }, { 149, 593 }, { 150, 593 }, + { 151, 593 }, { 152, 593 }, { 153, 593 }, { 154, 593 }, { 155, 593 }, + { 156, 593 }, { 157, 593 }, { 158, 593 }, { 159, 593 }, { 160, 593 }, + { 161, 593 }, { 162, 593 }, { 163, 593 }, { 164, 593 }, { 165, 593 }, + { 166, 593 }, { 167, 593 }, { 168, 593 }, { 169, 593 }, { 170, 593 }, + + { 171, 593 }, { 172, 593 }, { 173, 593 }, { 174, 593 }, { 175, 593 }, + { 176, 593 }, { 177, 593 }, { 178, 593 }, { 179, 593 }, { 180, 593 }, + { 181, 593 }, { 182, 593 }, { 183, 593 }, { 184, 593 }, { 185, 593 }, + { 186, 593 }, { 187, 593 }, { 188, 593 }, { 189, 593 }, { 190, 593 }, + { 191, 593 }, { 192, 593 }, { 193, 593 }, { 194, 593 }, { 195, 593 }, + { 196, 593 }, { 197, 593 }, { 198, 593 }, { 199, 593 }, { 200, 593 }, + { 201, 593 }, { 202, 593 }, { 203, 593 }, { 204, 593 }, { 205, 593 }, + { 206, 593 }, { 207, 593 }, { 208, 593 }, { 209, 593 }, { 210, 593 }, + { 211, 593 }, { 212, 593 }, { 213, 593 }, { 214, 593 }, { 215, 593 }, + { 216, 593 }, { 217, 593 }, { 218, 593 }, { 219, 593 }, { 220, 593 }, + + { 221, 593 }, { 222, 593 }, { 223, 593 }, { 224, 593 }, { 225, 593 }, + { 226, 593 }, { 227, 593 }, { 228, 593 }, { 229, 593 }, { 230, 593 }, + { 231, 593 }, { 232, 593 }, { 233, 593 }, { 234, 593 }, { 235, 593 }, + { 236, 593 }, { 237, 593 }, { 238, 593 }, { 239, 593 }, { 240, 593 }, + { 241, 593 }, { 242, 593 }, { 243, 593 }, { 244, 593 }, { 245, 593 }, + { 246, 593 }, { 247, 593 }, { 248, 593 }, { 249, 593 }, { 250, 593 }, + { 251, 593 }, { 252, 593 }, { 253, 593 }, { 254, 593 }, { 255, 593 }, + { 256, 593 }, { 0, 0 }, { 0,11486 }, { 1, 335 }, { 2, 335 }, + { 3, 335 }, { 4, 335 }, { 5, 335 }, { 6, 335 }, { 7, 335 }, + { 8, 335 }, { 9, 335 }, { 10, 339 }, { 11, 335 }, { 12, 335 }, + + { 13, 335 }, { 14, 335 }, { 15, 335 }, { 16, 335 }, { 17, 335 }, + { 18, 335 }, { 19, 335 }, { 20, 335 }, { 21, 335 }, { 22, 335 }, + { 23, 335 }, { 24, 335 }, { 25, 335 }, { 26, 335 }, { 27, 335 }, + { 28, 335 }, { 29, 335 }, { 30, 335 }, { 31, 335 }, { 32, 335 }, + { 33, 335 }, { 34, 335 }, { 35, 335 }, { 36, 335 }, { 37, 335 }, + { 38, 335 }, { 39, 335 }, { 40, 335 }, { 41, 335 }, { 42, 335 }, + { 43, 335 }, { 44, 335 }, { 45, 335 }, { 46, 335 }, { 47, 335 }, + { 48, 335 }, { 49, 335 }, { 50, 335 }, { 51, 335 }, { 52, 335 }, + { 53, 335 }, { 54, 335 }, { 55, 335 }, { 56, 335 }, { 57, 335 }, + { 58, 335 }, { 59, 335 }, { 60, 335 }, { 61, 335 }, { 62, 335 }, + + { 63, 335 }, { 64, 335 }, { 65, 335 }, { 66, 335 }, { 67, 335 }, + { 68, 335 }, { 69, 335 }, { 70, 335 }, { 71, 335 }, { 72, 335 }, + { 73, 335 }, { 74, 335 }, { 75, 335 }, { 76, 335 }, { 77, 335 }, + { 78, 335 }, { 79, 335 }, { 80, 335 }, { 81, 335 }, { 82, 335 }, + { 83, 335 }, { 84, 335 }, { 85, 335 }, { 86, 335 }, { 87, 335 }, + { 88, 335 }, { 89, 335 }, { 90, 335 }, { 91, 335 }, { 92, 379 }, + { 93, 335 }, { 94, 335 }, { 95, 335 }, { 96, 335 }, { 97, 335 }, + { 98, 335 }, { 99, 335 }, { 100, 335 }, { 101, 335 }, { 102, 335 }, + { 103, 335 }, { 104, 335 }, { 105, 335 }, { 106, 335 }, { 107, 335 }, + { 108, 335 }, { 109, 335 }, { 110, 335 }, { 111, 335 }, { 112, 335 }, + + { 113, 335 }, { 114, 335 }, { 115, 335 }, { 116, 335 }, { 117, 335 }, + { 118, 335 }, { 119, 335 }, { 120, 335 }, { 121, 335 }, { 122, 335 }, + { 123, 335 }, { 124, 335 }, { 125, 335 }, { 126, 335 }, { 127, 335 }, + { 128, 335 }, { 129, 335 }, { 130, 335 }, { 131, 335 }, { 132, 335 }, + { 133, 335 }, { 134, 335 }, { 135, 335 }, { 136, 335 }, { 137, 335 }, + { 138, 335 }, { 139, 335 }, { 140, 335 }, { 141, 335 }, { 142, 335 }, + { 143, 335 }, { 144, 335 }, { 145, 335 }, { 146, 335 }, { 147, 335 }, + { 148, 335 }, { 149, 335 }, { 150, 335 }, { 151, 335 }, { 152, 335 }, + { 153, 335 }, { 154, 335 }, { 155, 335 }, { 156, 335 }, { 157, 335 }, + { 158, 335 }, { 159, 335 }, { 160, 335 }, { 161, 335 }, { 162, 335 }, + + { 163, 335 }, { 164, 335 }, { 165, 335 }, { 166, 335 }, { 167, 335 }, + { 168, 335 }, { 169, 335 }, { 170, 335 }, { 171, 335 }, { 172, 335 }, + { 173, 335 }, { 174, 335 }, { 175, 335 }, { 176, 335 }, { 177, 335 }, + { 178, 335 }, { 179, 335 }, { 180, 335 }, { 181, 335 }, { 182, 335 }, + { 183, 335 }, { 184, 335 }, { 185, 335 }, { 186, 335 }, { 187, 335 }, + { 188, 335 }, { 189, 335 }, { 190, 335 }, { 191, 335 }, { 192, 335 }, + { 193, 335 }, { 194, 335 }, { 195, 335 }, { 196, 335 }, { 197, 335 }, + { 198, 335 }, { 199, 335 }, { 200, 335 }, { 201, 335 }, { 202, 335 }, + { 203, 335 }, { 204, 335 }, { 205, 335 }, { 206, 335 }, { 207, 335 }, + { 208, 335 }, { 209, 335 }, { 210, 335 }, { 211, 335 }, { 212, 335 }, + + { 213, 335 }, { 214, 335 }, { 215, 335 }, { 216, 335 }, { 217, 335 }, + { 218, 335 }, { 219, 335 }, { 220, 335 }, { 221, 335 }, { 222, 335 }, + { 223, 335 }, { 224, 335 }, { 225, 335 }, { 226, 335 }, { 227, 335 }, + { 228, 335 }, { 229, 335 }, { 230, 335 }, { 231, 335 }, { 232, 335 }, + { 233, 335 }, { 234, 335 }, { 235, 335 }, { 236, 335 }, { 237, 335 }, + { 238, 335 }, { 239, 335 }, { 240, 335 }, { 241, 335 }, { 242, 335 }, + { 243, 335 }, { 244, 335 }, { 245, 335 }, { 246, 335 }, { 247, 335 }, + { 248, 335 }, { 249, 335 }, { 250, 335 }, { 251, 335 }, { 252, 335 }, + { 253, 335 }, { 254, 335 }, { 255, 335 }, { 256, 335 }, { 0, 65 }, + { 0,11228 }, { 0, 1 }, { 0,11226 }, { 0, 39 }, { 0,11224 }, + + { 0, 0 }, { 0, 1 }, { 0,11221 }, { 0, 56 }, { 0,11219 }, + { 0, 0 }, { 9,5098 }, { 10,5098 }, { 0, 0 }, { 12,5098 }, + { 13,5098 }, { 9,5093 }, { 10,5093 }, { 0, 0 }, { 12,5093 }, + { 13,5093 }, { 0, 14 }, { 0,11206 }, { 0, 55 }, { 0,11204 }, + { 0, 0 }, { 0, 55 }, { 0,11201 }, { 0, 17 }, { 0,11199 }, + { 0, 0 }, { 0, 7 }, { 0,11196 }, { 0, 0 }, { 32,5098 }, + { 0, 7 }, { 0,11192 }, { 0, 0 }, { 0, 0 }, { 32,5093 }, + { 0, 41 }, { 0,11187 }, { 33,5346 }, { 0, 0 }, { 35,5346 }, + { 0, 0 }, { 37,5346 }, { 38,5346 }, { 0, 56 }, { 0,11179 }, + { 0, 0 }, { 42,5346 }, { 43,5346 }, { 0, 0 }, { 45,5346 }, + + { 0, 0 }, { 47,5346 }, { 0, 17 }, { 0,11170 }, { 0, 20 }, + { 0,11168 }, { 0, 19 }, { 0,11166 }, { 0, 0 }, { 0, 17 }, + { 0,11163 }, { 0, 42 }, { 0,11161 }, { 0, 0 }, { 60,5346 }, + { 61,5357 }, { 62,5346 }, { 63,5346 }, { 64,5346 }, { 42, 348 }, + { 34, 346 }, { 0, 26 }, { 0,11151 }, { 42,7050 }, { 47, 353 }, + { 0, 27 }, { 0,11147 }, { 33,5306 }, { 0, 0 }, { 35,5306 }, + { 58, 100 }, { 37,5306 }, { 38,5306 }, { 61, 102 }, { 0, 0 }, + { 0, 0 }, { 42,5306 }, { 43,5306 }, { 0, 0 }, { 45,5306 }, + { 0, 0 }, { 47,5306 }, { 39, 331 }, { 0, 0 }, { 0, 0 }, + { 0, 0 }, { 34, 320 }, { 0, 0 }, { 94,5346 }, { 39, 324 }, + + { 96,5346 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 60,5306 }, + { 61,5306 }, { 62,5306 }, { 63,5306 }, { 64,5306 }, { 0, 65 }, + { 0,11113 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, + { 0, 26 }, { 0,11107 }, { 0, 33 }, { 0,11105 }, { 0, 48 }, + { 0,11103 }, { 0, 47 }, { 0,11101 }, { 0, 49 }, { 0,11099 }, + { 0, 0 }, { 0, 0 }, { 0, 0 }, { 124,5346 }, { 0, 0 }, + { 126,5346 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, + { 0, 0 }, { 0, 0 }, { 0, 0 }, { 94,5306 }, { 0, 0 }, + { 96,5306 }, { 0, 0 }, { 0, 64 }, { 0,11080 }, { 0, 9 }, + { 0,11078 }, { 36, 8 }, { 0, 15 }, { 0,11075 }, { 0, 0 }, + + { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, + { 0, 0 }, { 0, 0 }, { 0, 0 }, { 48,5268 }, { 49,5268 }, + { 50,5268 }, { 51,5268 }, { 52,5268 }, { 53,5268 }, { 54,5268 }, + { 55,5268 }, { 56,5268 }, { 57,5268 }, { 124,5306 }, { 0, 0 }, + { 126,5306 }, { 0, 46 }, { 0,11051 }, { 0, 13 }, { 0,11049 }, + { 65,5331 }, { 66,5331 }, { 67,5331 }, { 68,5331 }, { 69,5331 }, + { 70,5331 }, { 71,5331 }, { 72,5331 }, { 73,5331 }, { 74,5331 }, + { 75,5331 }, { 76,5331 }, { 77,5331 }, { 78,5331 }, { 79,5331 }, + { 80,5331 }, { 81,5331 }, { 82,5331 }, { 83,5331 }, { 84,5331 }, + { 85,5331 }, { 86,5331 }, { 87,5331 }, { 88,5331 }, { 89,5331 }, + + { 90,5331 }, { 85,8881 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, + { 95,5331 }, { 63, 0 }, { 97,5331 }, { 98,5331 }, { 99,5331 }, + { 100,5331 }, { 101,5331 }, { 102,5331 }, { 103,5331 }, { 104,5331 }, + { 105,5331 }, { 106,5331 }, { 107,5331 }, { 108,5331 }, { 109,5331 }, + { 110,5331 }, { 111,5331 }, { 112,5331 }, { 113,5331 }, { 114,5331 }, + { 115,5331 }, { 116,5331 }, { 117,5331 }, { 118,5331 }, { 119,5331 }, + { 120,5331 }, { 121,5331 }, { 122,5331 }, { 117,8904 }, { 0, 0 }, + { 63, -29 }, { 0, 0 }, { 0, 0 }, { 128,5331 }, { 129,5331 }, + { 130,5331 }, { 131,5331 }, { 132,5331 }, { 133,5331 }, { 134,5331 }, + { 135,5331 }, { 136,5331 }, { 137,5331 }, { 138,5331 }, { 139,5331 }, + + { 140,5331 }, { 141,5331 }, { 142,5331 }, { 143,5331 }, { 144,5331 }, + { 145,5331 }, { 146,5331 }, { 147,5331 }, { 148,5331 }, { 149,5331 }, + { 150,5331 }, { 151,5331 }, { 152,5331 }, { 153,5331 }, { 154,5331 }, + { 155,5331 }, { 156,5331 }, { 157,5331 }, { 158,5331 }, { 159,5331 }, + { 160,5331 }, { 161,5331 }, { 162,5331 }, { 163,5331 }, { 164,5331 }, + { 165,5331 }, { 166,5331 }, { 167,5331 }, { 168,5331 }, { 169,5331 }, + { 170,5331 }, { 171,5331 }, { 172,5331 }, { 173,5331 }, { 174,5331 }, + { 175,5331 }, { 176,5331 }, { 177,5331 }, { 178,5331 }, { 179,5331 }, + { 180,5331 }, { 181,5331 }, { 182,5331 }, { 183,5331 }, { 184,5331 }, + { 185,5331 }, { 186,5331 }, { 187,5331 }, { 188,5331 }, { 189,5331 }, + + { 190,5331 }, { 191,5331 }, { 192,5331 }, { 193,5331 }, { 194,5331 }, + { 195,5331 }, { 196,5331 }, { 197,5331 }, { 198,5331 }, { 199,5331 }, + { 200,5331 }, { 201,5331 }, { 202,5331 }, { 203,5331 }, { 204,5331 }, + { 205,5331 }, { 206,5331 }, { 207,5331 }, { 208,5331 }, { 209,5331 }, + { 210,5331 }, { 211,5331 }, { 212,5331 }, { 213,5331 }, { 214,5331 }, + { 215,5331 }, { 216,5331 }, { 217,5331 }, { 218,5331 }, { 219,5331 }, + { 220,5331 }, { 221,5331 }, { 222,5331 }, { 223,5331 }, { 224,5331 }, + { 225,5331 }, { 226,5331 }, { 227,5331 }, { 228,5331 }, { 229,5331 }, + { 230,5331 }, { 231,5331 }, { 232,5331 }, { 233,5331 }, { 234,5331 }, + { 235,5331 }, { 236,5331 }, { 237,5331 }, { 238,5331 }, { 239,5331 }, + + { 240,5331 }, { 241,5331 }, { 242,5331 }, { 243,5331 }, { 244,5331 }, + { 245,5331 }, { 246,5331 }, { 247,5331 }, { 248,5331 }, { 249,5331 }, + { 250,5331 }, { 251,5331 }, { 252,5331 }, { 253,5331 }, { 254,5331 }, + { 255,5331 }, { 0, 55 }, { 0,10856 }, { 0, 45 }, { 0,10854 }, + { 0, 12 }, { 0,10852 }, { 0, 0 }, { 0, 0 }, { 0, 8 }, + { 0,10848 }, { 0, 0 }, { 0, 55 }, { 0,10845 }, { 0, 5 }, + { 0,10843 }, { 0, 43 }, { 0,10841 }, { 0, 21 }, { 0,10839 }, + { 0, 19 }, { 0,10837 }, { 0, 18 }, { 0,10835 }, { 0, 29 }, + { 0,10833 }, { 0, 35 }, { 0,10831 }, { 0, 60 }, { 0,10829 }, + { 0, 0 }, { 0, 55 }, { 0,10826 }, { 0, 40 }, { 0,10824 }, + + { 33,4983 }, { 0, 0 }, { 35,4983 }, { 34, 30 }, { 37,4983 }, + { 38,4983 }, { 0, 16 }, { 0,10816 }, { 39, 38 }, { 42,4983 }, + { 43,4983 }, { 33,4972 }, { 45,4983 }, { 35,4972 }, { 47,4983 }, + { 37,4972 }, { 38,4972 }, { 42, 0 }, { 0, 30 }, { 0,10804 }, + { 42,4972 }, { 43,4972 }, { 47, 5 }, { 45,5320 }, { 0, 0 }, + { 47,4972 }, { 0, 0 }, { 60,4983 }, { 61,4983 }, { 62,4983 }, + { 63,4983 }, { 64,4983 }, { 0, 31 }, { 0,10790 }, { 0, 24 }, + { 0,10788 }, { 0, 25 }, { 0,10786 }, { 60,4972 }, { 61,4972 }, + { 62,4972 }, { 63,4972 }, { 64,4972 }, { 46,-277 }, { 0, 0 }, + { 48,5559 }, { 49,5559 }, { 50,5559 }, { 51,5559 }, { 52,5559 }, + + { 53,5559 }, { 54,5559 }, { 55,5559 }, { 56,5559 }, { 57,5559 }, + { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, + { 0, 0 }, { 94,4983 }, { 0, 0 }, { 96,4983 }, { 0, 0 }, + { 0, 0 }, { 0, 0 }, { 0, 55 }, { 0,10755 }, { 0, 58 }, + { 0,10753 }, { 0, 0 }, { 94,4972 }, { 0, 0 }, { 96,4972 }, + { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, + { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, + { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, + { 0, 0 }, { 124,4983 }, { 0, 0 }, { 126,4983 }, { 0, 0 }, + { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, + + { 0, 0 }, { 33,4882 }, { 124,4972 }, { 35,4882 }, { 126,4972 }, + { 37,4882 }, { 38,4882 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, + { 42,5513 }, { 43,4882 }, { 0, 0 }, { 45,4882 }, { 0, 0 }, + { 47,4882 }, { 46,5513 }, { 0, 0 }, { 48,5577 }, { 49,5577 }, + { 50,5577 }, { 51,5577 }, { 52,5577 }, { 53,5577 }, { 54,5577 }, + { 55,5577 }, { 56,5577 }, { 57,5577 }, { 60,4882 }, { 61,4882 }, + { 62,4882 }, { 63,4882 }, { 64,4882 }, { 0, 0 }, { 0, 55 }, + { 0,10688 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 69,5599 }, + { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, + { 0, 55 }, { 0,10677 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, + + { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, + { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, + { 0, 0 }, { 0, 0 }, { 94,4882 }, { 0, 0 }, { 96,4882 }, + { 0, 0 }, { 0, 0 }, { 0, 0 }, { 33,4815 }, { 0, 0 }, + { 35,4815 }, { 101,5599 }, { 37,4815 }, { 38,4815 }, { 0, 0 }, + { 0, 0 }, { 0, 0 }, { 42,4815 }, { 43,4815 }, { 33,4804 }, + { 45,4815 }, { 35,4804 }, { 47,4815 }, { 37,4804 }, { 38,4804 }, + { 0, 0 }, { 0, 0 }, { 0, 0 }, { 42,4804 }, { 43,4804 }, + { 0, 0 }, { 45,4804 }, { 124,4882 }, { 47,4804 }, { 126,4882 }, + { 60,4815 }, { 61,5574 }, { 62,5615 }, { 63,4815 }, { 64,4815 }, + + { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, + { 0, 0 }, { 60,4804 }, { 61,4804 }, { 62,5671 }, { 63,4804 }, + { 64,4804 }, { 0, 0 }, { 0, 55 }, { 0,10610 }, { 0, 0 }, + { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, + { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, + { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 94,4815 }, + { 0, 0 }, { 96,4815 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, + { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, + { 94,4804 }, { 0, 0 }, { 96,4804 }, { 0, 0 }, { 0, 64 }, + { 0,10578 }, { 33,4737 }, { 0, 0 }, { 35,4737 }, { 0, 0 }, + + { 37,4737 }, { 38,4737 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, + { 42,4737 }, { 43,4737 }, { 0, 0 }, { 45,4737 }, { 124,4815 }, + { 47,4737 }, { 126,4815 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, + { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, + { 124,4804 }, { 0, 0 }, { 126,4804 }, { 60,4737 }, { 61,5615 }, + { 62,4737 }, { 63,4737 }, { 64,4737 }, { 0, 0 }, { 0, 0 }, + { 0, 0 }, { 36,5663 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, + { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, + { 0, 0 }, { 0, 0 }, { 0, 0 }, { 48,5663 }, { 49,5663 }, + { 50,5663 }, { 51,5663 }, { 52,5663 }, { 53,5663 }, { 54,5663 }, + + { 55,5663 }, { 56,5663 }, { 57,5663 }, { 0, 0 }, { 0, 0 }, + { 0, 0 }, { 0, 0 }, { 94,4737 }, { 63,-502 }, { 96,4737 }, + { 65,5663 }, { 66,5663 }, { 67,5663 }, { 68,5663 }, { 69,5663 }, + { 70,5663 }, { 71,5663 }, { 72,5663 }, { 73,5663 }, { 74,5663 }, + { 75,5663 }, { 76,5663 }, { 77,5663 }, { 78,5663 }, { 79,5663 }, + { 80,5663 }, { 81,5663 }, { 82,5663 }, { 83,5663 }, { 84,5663 }, + { 85,5663 }, { 86,5663 }, { 87,5663 }, { 88,5663 }, { 89,5663 }, + { 90,5663 }, { 0, 0 }, { 124,4737 }, { 0, 0 }, { 126,4737 }, + { 95,5663 }, { 0, 0 }, { 97,5663 }, { 98,5663 }, { 99,5663 }, + { 100,5663 }, { 101,5663 }, { 102,5663 }, { 103,5663 }, { 104,5663 }, + + { 105,5663 }, { 106,5663 }, { 107,5663 }, { 108,5663 }, { 109,5663 }, + { 110,5663 }, { 111,5663 }, { 112,5663 }, { 113,5663 }, { 114,5663 }, + { 115,5663 }, { 116,5663 }, { 117,5663 }, { 118,5663 }, { 119,5663 }, + { 120,5663 }, { 121,5663 }, { 122,5663 }, { 0, 0 }, { 0, 0 }, + { 0, 0 }, { 0, 0 }, { 0, 0 }, { 128,5663 }, { 129,5663 }, + { 130,5663 }, { 131,5663 }, { 132,5663 }, { 133,5663 }, { 134,5663 }, + { 135,5663 }, { 136,5663 }, { 137,5663 }, { 138,5663 }, { 139,5663 }, + { 140,5663 }, { 141,5663 }, { 142,5663 }, { 143,5663 }, { 144,5663 }, + { 145,5663 }, { 146,5663 }, { 147,5663 }, { 148,5663 }, { 149,5663 }, + { 150,5663 }, { 151,5663 }, { 152,5663 }, { 153,5663 }, { 154,5663 }, + + { 155,5663 }, { 156,5663 }, { 157,5663 }, { 158,5663 }, { 159,5663 }, + { 160,5663 }, { 161,5663 }, { 162,5663 }, { 163,5663 }, { 164,5663 }, + { 165,5663 }, { 166,5663 }, { 167,5663 }, { 168,5663 }, { 169,5663 }, + { 170,5663 }, { 171,5663 }, { 172,5663 }, { 173,5663 }, { 174,5663 }, + { 175,5663 }, { 176,5663 }, { 177,5663 }, { 178,5663 }, { 179,5663 }, + { 180,5663 }, { 181,5663 }, { 182,5663 }, { 183,5663 }, { 184,5663 }, + { 185,5663 }, { 186,5663 }, { 187,5663 }, { 188,5663 }, { 189,5663 }, + { 190,5663 }, { 191,5663 }, { 192,5663 }, { 193,5663 }, { 194,5663 }, + { 195,5663 }, { 196,5663 }, { 197,5663 }, { 198,5663 }, { 199,5663 }, + { 200,5663 }, { 201,5663 }, { 202,5663 }, { 203,5663 }, { 204,5663 }, + + { 205,5663 }, { 206,5663 }, { 207,5663 }, { 208,5663 }, { 209,5663 }, + { 210,5663 }, { 211,5663 }, { 212,5663 }, { 213,5663 }, { 214,5663 }, + { 215,5663 }, { 216,5663 }, { 217,5663 }, { 218,5663 }, { 219,5663 }, + { 220,5663 }, { 221,5663 }, { 222,5663 }, { 223,5663 }, { 224,5663 }, + { 225,5663 }, { 226,5663 }, { 227,5663 }, { 228,5663 }, { 229,5663 }, + { 230,5663 }, { 231,5663 }, { 232,5663 }, { 233,5663 }, { 234,5663 }, + { 235,5663 }, { 236,5663 }, { 237,5663 }, { 238,5663 }, { 239,5663 }, + { 240,5663 }, { 241,5663 }, { 242,5663 }, { 243,5663 }, { 244,5663 }, + { 245,5663 }, { 246,5663 }, { 247,5663 }, { 248,5663 }, { 249,5663 }, + { 250,5663 }, { 251,5663 }, { 252,5663 }, { 253,5663 }, { 254,5663 }, + + { 255,5663 }, { 0, 64 }, { 0,10321 }, { 0, 0 }, { 0, 0 }, + { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, + { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, + { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, + { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, + { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, + { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, + { 0, 0 }, { 0, 0 }, { 0, 0 }, { 36,5406 }, { 0, 0 }, + { 0, 0 }, { 39,-757 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, + { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, + + { 48,5406 }, { 49,5406 }, { 50,5406 }, { 51,5406 }, { 52,5406 }, + { 53,5406 }, { 54,5406 }, { 55,5406 }, { 56,5406 }, { 57,5406 }, + { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, + { 63,-759 }, { 0, 0 }, { 65,5406 }, { 66,5406 }, { 67,5406 }, + { 68,5406 }, { 69,5406 }, { 70,5406 }, { 71,5406 }, { 72,5406 }, + { 73,5406 }, { 74,5406 }, { 75,5406 }, { 76,5406 }, { 77,5406 }, + { 78,5406 }, { 79,5406 }, { 80,5406 }, { 81,5406 }, { 82,5406 }, + { 83,5406 }, { 84,5406 }, { 85,5406 }, { 86,5406 }, { 87,5406 }, + { 88,5406 }, { 89,5406 }, { 90,5406 }, { 0, 0 }, { 0, 0 }, + { 0, 0 }, { 0, 0 }, { 95,5406 }, { 0, 0 }, { 97,5406 }, + + { 98,5406 }, { 99,5406 }, { 100,5406 }, { 101,5406 }, { 102,5406 }, + { 103,5406 }, { 104,5406 }, { 105,5406 }, { 106,5406 }, { 107,5406 }, + { 108,5406 }, { 109,5406 }, { 110,5406 }, { 111,5406 }, { 112,5406 }, + { 113,5406 }, { 114,5406 }, { 115,5406 }, { 116,5406 }, { 117,5406 }, + { 118,5406 }, { 119,5406 }, { 120,5406 }, { 121,5406 }, { 122,5406 }, + { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, + { 128,5406 }, { 129,5406 }, { 130,5406 }, { 131,5406 }, { 132,5406 }, + { 133,5406 }, { 134,5406 }, { 135,5406 }, { 136,5406 }, { 137,5406 }, + { 138,5406 }, { 139,5406 }, { 140,5406 }, { 141,5406 }, { 142,5406 }, + { 143,5406 }, { 144,5406 }, { 145,5406 }, { 146,5406 }, { 147,5406 }, + + { 148,5406 }, { 149,5406 }, { 150,5406 }, { 151,5406 }, { 152,5406 }, + { 153,5406 }, { 154,5406 }, { 155,5406 }, { 156,5406 }, { 157,5406 }, + { 158,5406 }, { 159,5406 }, { 160,5406 }, { 161,5406 }, { 162,5406 }, + { 163,5406 }, { 164,5406 }, { 165,5406 }, { 166,5406 }, { 167,5406 }, + { 168,5406 }, { 169,5406 }, { 170,5406 }, { 171,5406 }, { 172,5406 }, + { 173,5406 }, { 174,5406 }, { 175,5406 }, { 176,5406 }, { 177,5406 }, + { 178,5406 }, { 179,5406 }, { 180,5406 }, { 181,5406 }, { 182,5406 }, + { 183,5406 }, { 184,5406 }, { 185,5406 }, { 186,5406 }, { 187,5406 }, + { 188,5406 }, { 189,5406 }, { 190,5406 }, { 191,5406 }, { 192,5406 }, + { 193,5406 }, { 194,5406 }, { 195,5406 }, { 196,5406 }, { 197,5406 }, + + { 198,5406 }, { 199,5406 }, { 200,5406 }, { 201,5406 }, { 202,5406 }, + { 203,5406 }, { 204,5406 }, { 205,5406 }, { 206,5406 }, { 207,5406 }, + { 208,5406 }, { 209,5406 }, { 210,5406 }, { 211,5406 }, { 212,5406 }, + { 213,5406 }, { 214,5406 }, { 215,5406 }, { 216,5406 }, { 217,5406 }, + { 218,5406 }, { 219,5406 }, { 220,5406 }, { 221,5406 }, { 222,5406 }, + { 223,5406 }, { 224,5406 }, { 225,5406 }, { 226,5406 }, { 227,5406 }, + { 228,5406 }, { 229,5406 }, { 230,5406 }, { 231,5406 }, { 232,5406 }, + { 233,5406 }, { 234,5406 }, { 235,5406 }, { 236,5406 }, { 237,5406 }, + { 238,5406 }, { 239,5406 }, { 240,5406 }, { 241,5406 }, { 242,5406 }, + { 243,5406 }, { 244,5406 }, { 245,5406 }, { 246,5406 }, { 247,5406 }, + + { 248,5406 }, { 249,5406 }, { 250,5406 }, { 251,5406 }, { 252,5406 }, + { 253,5406 }, { 254,5406 }, { 255,5406 }, { 0, 64 }, { 0,10064 }, + { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, + { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, + { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, + { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, + { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, + { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, + { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, + { 36,5149 }, { 0, 0 }, { 0, 0 }, { 39,-1011 }, { 0, 0 }, + + { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, + { 0, 0 }, { 0, 0 }, { 48,5149 }, { 49,5149 }, { 50,5149 }, + { 51,5149 }, { 52,5149 }, { 53,5149 }, { 54,5149 }, { 55,5149 }, + { 56,5149 }, { 57,5149 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, + { 0, 0 }, { 0, 0 }, { 63,-987 }, { 0, 0 }, { 65,5149 }, + { 66,5149 }, { 67,5149 }, { 68,5149 }, { 69,5149 }, { 70,5149 }, + { 71,5149 }, { 72,5149 }, { 73,5149 }, { 74,5149 }, { 75,5149 }, + { 76,5149 }, { 77,5149 }, { 78,5149 }, { 79,5149 }, { 80,5149 }, + { 81,5149 }, { 82,5149 }, { 83,5149 }, { 84,5149 }, { 85,5149 }, + { 86,5149 }, { 87,5149 }, { 88,5149 }, { 89,5149 }, { 90,5149 }, + + { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 95,5149 }, + { 0, 0 }, { 97,5149 }, { 98,5149 }, { 99,5149 }, { 100,5149 }, + { 101,5149 }, { 102,5149 }, { 103,5149 }, { 104,5149 }, { 105,5149 }, + { 106,5149 }, { 107,5149 }, { 108,5149 }, { 109,5149 }, { 110,5149 }, + { 111,5149 }, { 112,5149 }, { 113,5149 }, { 114,5149 }, { 115,5149 }, + { 116,5149 }, { 117,5149 }, { 118,5149 }, { 119,5149 }, { 120,5149 }, + { 121,5149 }, { 122,5149 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, + { 0, 0 }, { 0, 0 }, { 128,5149 }, { 129,5149 }, { 130,5149 }, + { 131,5149 }, { 132,5149 }, { 133,5149 }, { 134,5149 }, { 135,5149 }, + { 136,5149 }, { 137,5149 }, { 138,5149 }, { 139,5149 }, { 140,5149 }, + + { 141,5149 }, { 142,5149 }, { 143,5149 }, { 144,5149 }, { 145,5149 }, + { 146,5149 }, { 147,5149 }, { 148,5149 }, { 149,5149 }, { 150,5149 }, + { 151,5149 }, { 152,5149 }, { 153,5149 }, { 154,5149 }, { 155,5149 }, + { 156,5149 }, { 157,5149 }, { 158,5149 }, { 159,5149 }, { 160,5149 }, + { 161,5149 }, { 162,5149 }, { 163,5149 }, { 164,5149 }, { 165,5149 }, + { 166,5149 }, { 167,5149 }, { 168,5149 }, { 169,5149 }, { 170,5149 }, + { 171,5149 }, { 172,5149 }, { 173,5149 }, { 174,5149 }, { 175,5149 }, + { 176,5149 }, { 177,5149 }, { 178,5149 }, { 179,5149 }, { 180,5149 }, + { 181,5149 }, { 182,5149 }, { 183,5149 }, { 184,5149 }, { 185,5149 }, + { 186,5149 }, { 187,5149 }, { 188,5149 }, { 189,5149 }, { 190,5149 }, + + { 191,5149 }, { 192,5149 }, { 193,5149 }, { 194,5149 }, { 195,5149 }, + { 196,5149 }, { 197,5149 }, { 198,5149 }, { 199,5149 }, { 200,5149 }, + { 201,5149 }, { 202,5149 }, { 203,5149 }, { 204,5149 }, { 205,5149 }, + { 206,5149 }, { 207,5149 }, { 208,5149 }, { 209,5149 }, { 210,5149 }, + { 211,5149 }, { 212,5149 }, { 213,5149 }, { 214,5149 }, { 215,5149 }, + { 216,5149 }, { 217,5149 }, { 218,5149 }, { 219,5149 }, { 220,5149 }, + { 221,5149 }, { 222,5149 }, { 223,5149 }, { 224,5149 }, { 225,5149 }, + { 226,5149 }, { 227,5149 }, { 228,5149 }, { 229,5149 }, { 230,5149 }, + { 231,5149 }, { 232,5149 }, { 233,5149 }, { 234,5149 }, { 235,5149 }, + { 236,5149 }, { 237,5149 }, { 238,5149 }, { 239,5149 }, { 240,5149 }, + + { 241,5149 }, { 242,5149 }, { 243,5149 }, { 244,5149 }, { 245,5149 }, + { 246,5149 }, { 247,5149 }, { 248,5149 }, { 249,5149 }, { 250,5149 }, + { 251,5149 }, { 252,5149 }, { 253,5149 }, { 254,5149 }, { 255,5149 }, + { 0, 64 }, { 0,9807 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, + { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, + { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, + { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, + { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, + { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, + { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, + + { 0, 0 }, { 0, 0 }, { 36,4892 }, { 0, 0 }, { 0, 0 }, + { 39,-1242 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, + { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 48,4892 }, + { 49,4892 }, { 50,4892 }, { 51,4892 }, { 52,4892 }, { 53,4892 }, + { 54,4892 }, { 55,4892 }, { 56,4892 }, { 57,4892 }, { 0, 0 }, + { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 63,-1273 }, + { 0, 0 }, { 65,4892 }, { 66,4892 }, { 67,4892 }, { 68,4892 }, + { 69,4892 }, { 70,4892 }, { 71,4892 }, { 72,4892 }, { 73,4892 }, + { 74,4892 }, { 75,4892 }, { 76,4892 }, { 77,4892 }, { 78,4892 }, + { 79,4892 }, { 80,4892 }, { 81,4892 }, { 82,4892 }, { 83,4892 }, + + { 84,4892 }, { 85,4892 }, { 86,4892 }, { 87,4892 }, { 88,4892 }, + { 89,4892 }, { 90,4892 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, + { 0, 0 }, { 95,4892 }, { 0, 0 }, { 97,4892 }, { 98,4892 }, + { 99,4892 }, { 100,4892 }, { 101,4892 }, { 102,4892 }, { 103,4892 }, + { 104,4892 }, { 105,4892 }, { 106,4892 }, { 107,4892 }, { 108,4892 }, + { 109,4892 }, { 110,4892 }, { 111,4892 }, { 112,4892 }, { 113,4892 }, + { 114,4892 }, { 115,4892 }, { 116,4892 }, { 117,4892 }, { 118,4892 }, + { 119,4892 }, { 120,4892 }, { 121,4892 }, { 122,4892 }, { 0, 0 }, + { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 128,4892 }, + { 129,4892 }, { 130,4892 }, { 131,4892 }, { 132,4892 }, { 133,4892 }, + + { 134,4892 }, { 135,4892 }, { 136,4892 }, { 137,4892 }, { 138,4892 }, + { 139,4892 }, { 140,4892 }, { 141,4892 }, { 142,4892 }, { 143,4892 }, + { 144,4892 }, { 145,4892 }, { 146,4892 }, { 147,4892 }, { 148,4892 }, + { 149,4892 }, { 150,4892 }, { 151,4892 }, { 152,4892 }, { 153,4892 }, + { 154,4892 }, { 155,4892 }, { 156,4892 }, { 157,4892 }, { 158,4892 }, + { 159,4892 }, { 160,4892 }, { 161,4892 }, { 162,4892 }, { 163,4892 }, + { 164,4892 }, { 165,4892 }, { 166,4892 }, { 167,4892 }, { 168,4892 }, + { 169,4892 }, { 170,4892 }, { 171,4892 }, { 172,4892 }, { 173,4892 }, + { 174,4892 }, { 175,4892 }, { 176,4892 }, { 177,4892 }, { 178,4892 }, + { 179,4892 }, { 180,4892 }, { 181,4892 }, { 182,4892 }, { 183,4892 }, + + { 184,4892 }, { 185,4892 }, { 186,4892 }, { 187,4892 }, { 188,4892 }, + { 189,4892 }, { 190,4892 }, { 191,4892 }, { 192,4892 }, { 193,4892 }, + { 194,4892 }, { 195,4892 }, { 196,4892 }, { 197,4892 }, { 198,4892 }, + { 199,4892 }, { 200,4892 }, { 201,4892 }, { 202,4892 }, { 203,4892 }, + { 204,4892 }, { 205,4892 }, { 206,4892 }, { 207,4892 }, { 208,4892 }, + { 209,4892 }, { 210,4892 }, { 211,4892 }, { 212,4892 }, { 213,4892 }, + { 214,4892 }, { 215,4892 }, { 216,4892 }, { 217,4892 }, { 218,4892 }, + { 219,4892 }, { 220,4892 }, { 221,4892 }, { 222,4892 }, { 223,4892 }, + { 224,4892 }, { 225,4892 }, { 226,4892 }, { 227,4892 }, { 228,4892 }, + { 229,4892 }, { 230,4892 }, { 231,4892 }, { 232,4892 }, { 233,4892 }, + + { 234,4892 }, { 235,4892 }, { 236,4892 }, { 237,4892 }, { 238,4892 }, + { 239,4892 }, { 240,4892 }, { 241,4892 }, { 242,4892 }, { 243,4892 }, + { 244,4892 }, { 245,4892 }, { 246,4892 }, { 247,4892 }, { 248,4892 }, + { 249,4892 }, { 250,4892 }, { 251,4892 }, { 252,4892 }, { 253,4892 }, + { 254,4892 }, { 255,4892 }, { 0, 64 }, { 0,9550 }, { 0, 0 }, + { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, + { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, + { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, + { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, + { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, + + { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, + { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 36,4635 }, + { 0, 0 }, { 38,-1304 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, + { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, + { 0, 0 }, { 48,4635 }, { 49,4635 }, { 50,4635 }, { 51,4635 }, + { 52,4635 }, { 53,4635 }, { 54,4635 }, { 55,4635 }, { 56,4635 }, + { 57,4635 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, + { 0, 0 }, { 63,-1530 }, { 0, 0 }, { 65,4635 }, { 66,4635 }, + { 67,4635 }, { 68,4635 }, { 69,4635 }, { 70,4635 }, { 71,4635 }, + { 72,4635 }, { 73,4635 }, { 74,4635 }, { 75,4635 }, { 76,4635 }, + + { 77,4635 }, { 78,4635 }, { 79,4635 }, { 80,4635 }, { 81,4635 }, + { 82,4635 }, { 83,4635 }, { 84,4635 }, { 85,4635 }, { 86,4635 }, + { 87,4635 }, { 88,4635 }, { 89,4635 }, { 90,4635 }, { 0, 0 }, + { 0, 0 }, { 0, 0 }, { 0, 0 }, { 95,4635 }, { 0, 0 }, + { 97,4635 }, { 98,4635 }, { 99,4635 }, { 100,4635 }, { 101,4635 }, + { 102,4635 }, { 103,4635 }, { 104,4635 }, { 105,4635 }, { 106,4635 }, + { 107,4635 }, { 108,4635 }, { 109,4635 }, { 110,4635 }, { 111,4635 }, + { 112,4635 }, { 113,4635 }, { 114,4635 }, { 115,4635 }, { 116,4635 }, + { 117,4635 }, { 118,4635 }, { 119,4635 }, { 120,4635 }, { 121,4635 }, + { 122,4635 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, + + { 0, 0 }, { 128,4635 }, { 129,4635 }, { 130,4635 }, { 131,4635 }, + { 132,4635 }, { 133,4635 }, { 134,4635 }, { 135,4635 }, { 136,4635 }, + { 137,4635 }, { 138,4635 }, { 139,4635 }, { 140,4635 }, { 141,4635 }, + { 142,4635 }, { 143,4635 }, { 144,4635 }, { 145,4635 }, { 146,4635 }, + { 147,4635 }, { 148,4635 }, { 149,4635 }, { 150,4635 }, { 151,4635 }, + { 152,4635 }, { 153,4635 }, { 154,4635 }, { 155,4635 }, { 156,4635 }, + { 157,4635 }, { 158,4635 }, { 159,4635 }, { 160,4635 }, { 161,4635 }, + { 162,4635 }, { 163,4635 }, { 164,4635 }, { 165,4635 }, { 166,4635 }, + { 167,4635 }, { 168,4635 }, { 169,4635 }, { 170,4635 }, { 171,4635 }, + { 172,4635 }, { 173,4635 }, { 174,4635 }, { 175,4635 }, { 176,4635 }, + + { 177,4635 }, { 178,4635 }, { 179,4635 }, { 180,4635 }, { 181,4635 }, + { 182,4635 }, { 183,4635 }, { 184,4635 }, { 185,4635 }, { 186,4635 }, + { 187,4635 }, { 188,4635 }, { 189,4635 }, { 190,4635 }, { 191,4635 }, + { 192,4635 }, { 193,4635 }, { 194,4635 }, { 195,4635 }, { 196,4635 }, + { 197,4635 }, { 198,4635 }, { 199,4635 }, { 200,4635 }, { 201,4635 }, + { 202,4635 }, { 203,4635 }, { 204,4635 }, { 205,4635 }, { 206,4635 }, + { 207,4635 }, { 208,4635 }, { 209,4635 }, { 210,4635 }, { 211,4635 }, + { 212,4635 }, { 213,4635 }, { 214,4635 }, { 215,4635 }, { 216,4635 }, + { 217,4635 }, { 218,4635 }, { 219,4635 }, { 220,4635 }, { 221,4635 }, + { 222,4635 }, { 223,4635 }, { 224,4635 }, { 225,4635 }, { 226,4635 }, + + { 227,4635 }, { 228,4635 }, { 229,4635 }, { 230,4635 }, { 231,4635 }, + { 232,4635 }, { 233,4635 }, { 234,4635 }, { 235,4635 }, { 236,4635 }, + { 237,4635 }, { 238,4635 }, { 239,4635 }, { 240,4635 }, { 241,4635 }, + { 242,4635 }, { 243,4635 }, { 244,4635 }, { 245,4635 }, { 246,4635 }, + { 247,4635 }, { 248,4635 }, { 249,4635 }, { 250,4635 }, { 251,4635 }, + { 252,4635 }, { 253,4635 }, { 254,4635 }, { 255,4635 }, { 0, 64 }, + { 0,9293 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, + { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, + { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, + { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, + + { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, + { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, + { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, + { 0, 0 }, { 36,4378 }, { 0, 0 }, { 0, 0 }, { 39,-1559 }, + { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, + { 0, 0 }, { 0, 0 }, { 0, 0 }, { 48,4378 }, { 49,4378 }, + { 50,4378 }, { 51,4378 }, { 52,4378 }, { 53,4378 }, { 54,4378 }, + { 55,4378 }, { 56,4378 }, { 57,4378 }, { 0, 0 }, { 0, 0 }, + { 0, 0 }, { 0, 0 }, { 0, 0 }, { 63,-1787 }, { 0, 0 }, + { 65,4378 }, { 66,4378 }, { 67,4378 }, { 68,4378 }, { 69,4378 }, + + { 70,4378 }, { 71,4378 }, { 72,4378 }, { 73,4378 }, { 74,4378 }, + { 75,4378 }, { 76,4378 }, { 77,4378 }, { 78,4378 }, { 79,4378 }, + { 80,4378 }, { 81,4378 }, { 82,4378 }, { 83,4378 }, { 84,4378 }, + { 85,4378 }, { 86,4378 }, { 87,4378 }, { 88,4378 }, { 89,4378 }, + { 90,4378 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, + { 95,4378 }, { 0, 0 }, { 97,4378 }, { 98,4378 }, { 99,4378 }, + { 100,4378 }, { 101,4378 }, { 102,4378 }, { 103,4378 }, { 104,4378 }, + { 105,4378 }, { 106,4378 }, { 107,4378 }, { 108,4378 }, { 109,4378 }, + { 110,4378 }, { 111,4378 }, { 112,4378 }, { 113,4378 }, { 114,4378 }, + { 115,4378 }, { 116,4378 }, { 117,4378 }, { 118,4378 }, { 119,4378 }, + + { 120,4378 }, { 121,4378 }, { 122,4378 }, { 0, 0 }, { 0, 0 }, + { 0, 0 }, { 0, 0 }, { 0, 0 }, { 128,4378 }, { 129,4378 }, + { 130,4378 }, { 131,4378 }, { 132,4378 }, { 133,4378 }, { 134,4378 }, + { 135,4378 }, { 136,4378 }, { 137,4378 }, { 138,4378 }, { 139,4378 }, + { 140,4378 }, { 141,4378 }, { 142,4378 }, { 143,4378 }, { 144,4378 }, + { 145,4378 }, { 146,4378 }, { 147,4378 }, { 148,4378 }, { 149,4378 }, + { 150,4378 }, { 151,4378 }, { 152,4378 }, { 153,4378 }, { 154,4378 }, + { 155,4378 }, { 156,4378 }, { 157,4378 }, { 158,4378 }, { 159,4378 }, + { 160,4378 }, { 161,4378 }, { 162,4378 }, { 163,4378 }, { 164,4378 }, + { 165,4378 }, { 166,4378 }, { 167,4378 }, { 168,4378 }, { 169,4378 }, + + { 170,4378 }, { 171,4378 }, { 172,4378 }, { 173,4378 }, { 174,4378 }, + { 175,4378 }, { 176,4378 }, { 177,4378 }, { 178,4378 }, { 179,4378 }, + { 180,4378 }, { 181,4378 }, { 182,4378 }, { 183,4378 }, { 184,4378 }, + { 185,4378 }, { 186,4378 }, { 187,4378 }, { 188,4378 }, { 189,4378 }, + { 190,4378 }, { 191,4378 }, { 192,4378 }, { 193,4378 }, { 194,4378 }, + { 195,4378 }, { 196,4378 }, { 197,4378 }, { 198,4378 }, { 199,4378 }, + { 200,4378 }, { 201,4378 }, { 202,4378 }, { 203,4378 }, { 204,4378 }, + { 205,4378 }, { 206,4378 }, { 207,4378 }, { 208,4378 }, { 209,4378 }, + { 210,4378 }, { 211,4378 }, { 212,4378 }, { 213,4378 }, { 214,4378 }, + { 215,4378 }, { 216,4378 }, { 217,4378 }, { 218,4378 }, { 219,4378 }, + + { 220,4378 }, { 221,4378 }, { 222,4378 }, { 223,4378 }, { 224,4378 }, + { 225,4378 }, { 226,4378 }, { 227,4378 }, { 228,4378 }, { 229,4378 }, + { 230,4378 }, { 231,4378 }, { 232,4378 }, { 233,4378 }, { 234,4378 }, + { 235,4378 }, { 236,4378 }, { 237,4378 }, { 238,4378 }, { 239,4378 }, + { 240,4378 }, { 241,4378 }, { 242,4378 }, { 243,4378 }, { 244,4378 }, + { 245,4378 }, { 246,4378 }, { 247,4378 }, { 248,4378 }, { 249,4378 }, + { 250,4378 }, { 251,4378 }, { 252,4378 }, { 253,4378 }, { 254,4378 }, + { 255,4378 }, { 0, 11 }, { 0,9036 }, { 1,4378 }, { 2,4378 }, + { 3,4378 }, { 4,4378 }, { 5,4378 }, { 6,4378 }, { 7,4378 }, + { 8,4378 }, { 9,4378 }, { 10,4378 }, { 11,4378 }, { 12,4378 }, + + { 13,4378 }, { 14,4378 }, { 15,4378 }, { 16,4378 }, { 17,4378 }, + { 18,4378 }, { 19,4378 }, { 20,4378 }, { 21,4378 }, { 22,4378 }, + { 23,4378 }, { 24,4378 }, { 25,4378 }, { 26,4378 }, { 27,4378 }, + { 28,4378 }, { 29,4378 }, { 30,4378 }, { 31,4378 }, { 32,4378 }, + { 33,4378 }, { 34,4378 }, { 35,4378 }, { 36,4378 }, { 37,4378 }, + { 38,4378 }, { 0, 0 }, { 40,4378 }, { 41,4378 }, { 42,4378 }, + { 43,4378 }, { 44,4378 }, { 45,4378 }, { 46,4378 }, { 47,4378 }, + { 48,4378 }, { 49,4378 }, { 50,4378 }, { 51,4378 }, { 52,4378 }, + { 53,4378 }, { 54,4378 }, { 55,4378 }, { 56,4378 }, { 57,4378 }, + { 58,4378 }, { 59,4378 }, { 60,4378 }, { 61,4378 }, { 62,4378 }, + + { 63,4378 }, { 64,4378 }, { 65,4378 }, { 66,4378 }, { 67,4378 }, + { 68,4378 }, { 69,4378 }, { 70,4378 }, { 71,4378 }, { 72,4378 }, + { 73,4378 }, { 74,4378 }, { 75,4378 }, { 76,4378 }, { 77,4378 }, + { 78,4378 }, { 79,4378 }, { 80,4378 }, { 81,4378 }, { 82,4378 }, + { 83,4378 }, { 84,4378 }, { 85,4378 }, { 86,4378 }, { 87,4378 }, + { 88,4378 }, { 89,4378 }, { 90,4378 }, { 91,4378 }, { 92,4378 }, + { 93,4378 }, { 94,4378 }, { 95,4378 }, { 96,4378 }, { 97,4378 }, + { 98,4378 }, { 99,4378 }, { 100,4378 }, { 101,4378 }, { 102,4378 }, + { 103,4378 }, { 104,4378 }, { 105,4378 }, { 106,4378 }, { 107,4378 }, + { 108,4378 }, { 109,4378 }, { 110,4378 }, { 111,4378 }, { 112,4378 }, + + { 113,4378 }, { 114,4378 }, { 115,4378 }, { 116,4378 }, { 117,4378 }, + { 118,4378 }, { 119,4378 }, { 120,4378 }, { 121,4378 }, { 122,4378 }, + { 123,4378 }, { 124,4378 }, { 125,4378 }, { 126,4378 }, { 127,4378 }, + { 128,4378 }, { 129,4378 }, { 130,4378 }, { 131,4378 }, { 132,4378 }, + { 133,4378 }, { 134,4378 }, { 135,4378 }, { 136,4378 }, { 137,4378 }, + { 138,4378 }, { 139,4378 }, { 140,4378 }, { 141,4378 }, { 142,4378 }, + { 143,4378 }, { 144,4378 }, { 145,4378 }, { 146,4378 }, { 147,4378 }, + { 148,4378 }, { 149,4378 }, { 150,4378 }, { 151,4378 }, { 152,4378 }, + { 153,4378 }, { 154,4378 }, { 155,4378 }, { 156,4378 }, { 157,4378 }, + { 158,4378 }, { 159,4378 }, { 160,4378 }, { 161,4378 }, { 162,4378 }, + + { 163,4378 }, { 164,4378 }, { 165,4378 }, { 166,4378 }, { 167,4378 }, + { 168,4378 }, { 169,4378 }, { 170,4378 }, { 171,4378 }, { 172,4378 }, + { 173,4378 }, { 174,4378 }, { 175,4378 }, { 176,4378 }, { 177,4378 }, + { 178,4378 }, { 179,4378 }, { 180,4378 }, { 181,4378 }, { 182,4378 }, + { 183,4378 }, { 184,4378 }, { 185,4378 }, { 186,4378 }, { 187,4378 }, + { 188,4378 }, { 189,4378 }, { 190,4378 }, { 191,4378 }, { 192,4378 }, + { 193,4378 }, { 194,4378 }, { 195,4378 }, { 196,4378 }, { 197,4378 }, + { 198,4378 }, { 199,4378 }, { 200,4378 }, { 201,4378 }, { 202,4378 }, + { 203,4378 }, { 204,4378 }, { 205,4378 }, { 206,4378 }, { 207,4378 }, + { 208,4378 }, { 209,4378 }, { 210,4378 }, { 211,4378 }, { 212,4378 }, + + { 213,4378 }, { 214,4378 }, { 215,4378 }, { 216,4378 }, { 217,4378 }, + { 218,4378 }, { 219,4378 }, { 220,4378 }, { 221,4378 }, { 222,4378 }, + { 223,4378 }, { 224,4378 }, { 225,4378 }, { 226,4378 }, { 227,4378 }, + { 228,4378 }, { 229,4378 }, { 230,4378 }, { 231,4378 }, { 232,4378 }, + { 233,4378 }, { 234,4378 }, { 235,4378 }, { 236,4378 }, { 237,4378 }, + { 238,4378 }, { 239,4378 }, { 240,4378 }, { 241,4378 }, { 242,4378 }, + { 243,4378 }, { 244,4378 }, { 245,4378 }, { 246,4378 }, { 247,4378 }, + { 248,4378 }, { 249,4378 }, { 250,4378 }, { 251,4378 }, { 252,4378 }, + { 253,4378 }, { 254,4378 }, { 255,4378 }, { 256,4378 }, { 0, 6 }, + { 0,8778 }, { 1,4378 }, { 2,4378 }, { 3,4378 }, { 4,4378 }, + + { 5,4378 }, { 6,4378 }, { 7,4378 }, { 8,4378 }, { 9,4378 }, + { 10,4378 }, { 11,4378 }, { 12,4378 }, { 13,4378 }, { 14,4378 }, + { 15,4378 }, { 16,4378 }, { 17,4378 }, { 18,4378 }, { 19,4378 }, + { 20,4378 }, { 21,4378 }, { 22,4378 }, { 23,4378 }, { 24,4378 }, + { 25,4378 }, { 26,4378 }, { 27,4378 }, { 28,4378 }, { 29,4378 }, + { 30,4378 }, { 31,4378 }, { 32,4378 }, { 33,4378 }, { 34,4378 }, + { 35,4378 }, { 36,4378 }, { 37,4378 }, { 38,4378 }, { 39,4378 }, + { 40,4378 }, { 41,4378 }, { 0, 0 }, { 43,4378 }, { 44,4378 }, + { 45,4378 }, { 46,4378 }, { 0, 0 }, { 48,4378 }, { 49,4378 }, + { 50,4378 }, { 51,4378 }, { 52,4378 }, { 53,4378 }, { 54,4378 }, + + { 55,4378 }, { 56,4378 }, { 57,4378 }, { 58,4378 }, { 59,4378 }, + { 60,4378 }, { 61,4378 }, { 62,4378 }, { 63,4378 }, { 64,4378 }, + { 65,4378 }, { 66,4378 }, { 67,4378 }, { 68,4378 }, { 69,4378 }, + { 70,4378 }, { 71,4378 }, { 72,4378 }, { 73,4378 }, { 74,4378 }, + { 75,4378 }, { 76,4378 }, { 77,4378 }, { 78,4378 }, { 79,4378 }, + { 80,4378 }, { 81,4378 }, { 82,4378 }, { 83,4378 }, { 84,4378 }, + { 85,4378 }, { 86,4378 }, { 87,4378 }, { 88,4378 }, { 89,4378 }, + { 90,4378 }, { 91,4378 }, { 92,4378 }, { 93,4378 }, { 94,4378 }, + { 95,4378 }, { 96,4378 }, { 97,4378 }, { 98,4378 }, { 99,4378 }, + { 100,4378 }, { 101,4378 }, { 102,4378 }, { 103,4378 }, { 104,4378 }, + + { 105,4378 }, { 106,4378 }, { 107,4378 }, { 108,4378 }, { 109,4378 }, + { 110,4378 }, { 111,4378 }, { 112,4378 }, { 113,4378 }, { 114,4378 }, + { 115,4378 }, { 116,4378 }, { 117,4378 }, { 118,4378 }, { 119,4378 }, + { 120,4378 }, { 121,4378 }, { 122,4378 }, { 123,4378 }, { 124,4378 }, + { 125,4378 }, { 126,4378 }, { 127,4378 }, { 128,4378 }, { 129,4378 }, + { 130,4378 }, { 131,4378 }, { 132,4378 }, { 133,4378 }, { 134,4378 }, + { 135,4378 }, { 136,4378 }, { 137,4378 }, { 138,4378 }, { 139,4378 }, + { 140,4378 }, { 141,4378 }, { 142,4378 }, { 143,4378 }, { 144,4378 }, + { 145,4378 }, { 146,4378 }, { 147,4378 }, { 148,4378 }, { 149,4378 }, + { 150,4378 }, { 151,4378 }, { 152,4378 }, { 153,4378 }, { 154,4378 }, + + { 155,4378 }, { 156,4378 }, { 157,4378 }, { 158,4378 }, { 159,4378 }, + { 160,4378 }, { 161,4378 }, { 162,4378 }, { 163,4378 }, { 164,4378 }, + { 165,4378 }, { 166,4378 }, { 167,4378 }, { 168,4378 }, { 169,4378 }, + { 170,4378 }, { 171,4378 }, { 172,4378 }, { 173,4378 }, { 174,4378 }, + { 175,4378 }, { 176,4378 }, { 177,4378 }, { 178,4378 }, { 179,4378 }, + { 180,4378 }, { 181,4378 }, { 182,4378 }, { 183,4378 }, { 184,4378 }, + { 185,4378 }, { 186,4378 }, { 187,4378 }, { 188,4378 }, { 189,4378 }, + { 190,4378 }, { 191,4378 }, { 192,4378 }, { 193,4378 }, { 194,4378 }, + { 195,4378 }, { 196,4378 }, { 197,4378 }, { 198,4378 }, { 199,4378 }, + { 200,4378 }, { 201,4378 }, { 202,4378 }, { 203,4378 }, { 204,4378 }, + + { 205,4378 }, { 206,4378 }, { 207,4378 }, { 208,4378 }, { 209,4378 }, + { 210,4378 }, { 211,4378 }, { 212,4378 }, { 213,4378 }, { 214,4378 }, + { 215,4378 }, { 216,4378 }, { 217,4378 }, { 218,4378 }, { 219,4378 }, + { 220,4378 }, { 221,4378 }, { 222,4378 }, { 223,4378 }, { 224,4378 }, + { 225,4378 }, { 226,4378 }, { 227,4378 }, { 228,4378 }, { 229,4378 }, + { 230,4378 }, { 231,4378 }, { 232,4378 }, { 233,4378 }, { 234,4378 }, + { 235,4378 }, { 236,4378 }, { 237,4378 }, { 238,4378 }, { 239,4378 }, + { 240,4378 }, { 241,4378 }, { 242,4378 }, { 243,4378 }, { 244,4378 }, + { 245,4378 }, { 246,4378 }, { 247,4378 }, { 248,4378 }, { 249,4378 }, + { 250,4378 }, { 251,4378 }, { 252,4378 }, { 253,4378 }, { 254,4378 }, + + { 255,4378 }, { 256,4378 }, { 0, 6 }, { 0,8520 }, { 1,4120 }, + { 2,4120 }, { 3,4120 }, { 4,4120 }, { 5,4120 }, { 6,4120 }, + { 7,4120 }, { 8,4120 }, { 9,4120 }, { 10,4120 }, { 11,4120 }, + { 12,4120 }, { 13,4120 }, { 14,4120 }, { 15,4120 }, { 16,4120 }, + { 17,4120 }, { 18,4120 }, { 19,4120 }, { 20,4120 }, { 21,4120 }, + { 22,4120 }, { 23,4120 }, { 24,4120 }, { 25,4120 }, { 26,4120 }, + { 27,4120 }, { 28,4120 }, { 29,4120 }, { 30,4120 }, { 31,4120 }, + { 32,4120 }, { 33,4120 }, { 34,4120 }, { 35,4120 }, { 36,4120 }, + { 37,4120 }, { 38,4120 }, { 39,4120 }, { 40,4120 }, { 41,4120 }, + { 0, 0 }, { 43,4120 }, { 44,4120 }, { 45,4120 }, { 46,4120 }, + + { 0, 0 }, { 48,4120 }, { 49,4120 }, { 50,4120 }, { 51,4120 }, + { 52,4120 }, { 53,4120 }, { 54,4120 }, { 55,4120 }, { 56,4120 }, + { 57,4120 }, { 58,4120 }, { 59,4120 }, { 60,4120 }, { 61,4120 }, + { 62,4120 }, { 63,4120 }, { 64,4120 }, { 65,4120 }, { 66,4120 }, + { 67,4120 }, { 68,4120 }, { 69,4120 }, { 70,4120 }, { 71,4120 }, + { 72,4120 }, { 73,4120 }, { 74,4120 }, { 75,4120 }, { 76,4120 }, + { 77,4120 }, { 78,4120 }, { 79,4120 }, { 80,4120 }, { 81,4120 }, + { 82,4120 }, { 83,4120 }, { 84,4120 }, { 85,4120 }, { 86,4120 }, + { 87,4120 }, { 88,4120 }, { 89,4120 }, { 90,4120 }, { 91,4120 }, + { 92,4120 }, { 93,4120 }, { 94,4120 }, { 95,4120 }, { 96,4120 }, + + { 97,4120 }, { 98,4120 }, { 99,4120 }, { 100,4120 }, { 101,4120 }, + { 102,4120 }, { 103,4120 }, { 104,4120 }, { 105,4120 }, { 106,4120 }, + { 107,4120 }, { 108,4120 }, { 109,4120 }, { 110,4120 }, { 111,4120 }, + { 112,4120 }, { 113,4120 }, { 114,4120 }, { 115,4120 }, { 116,4120 }, + { 117,4120 }, { 118,4120 }, { 119,4120 }, { 120,4120 }, { 121,4120 }, + { 122,4120 }, { 123,4120 }, { 124,4120 }, { 125,4120 }, { 126,4120 }, + { 127,4120 }, { 128,4120 }, { 129,4120 }, { 130,4120 }, { 131,4120 }, + { 132,4120 }, { 133,4120 }, { 134,4120 }, { 135,4120 }, { 136,4120 }, + { 137,4120 }, { 138,4120 }, { 139,4120 }, { 140,4120 }, { 141,4120 }, + { 142,4120 }, { 143,4120 }, { 144,4120 }, { 145,4120 }, { 146,4120 }, + + { 147,4120 }, { 148,4120 }, { 149,4120 }, { 150,4120 }, { 151,4120 }, + { 152,4120 }, { 153,4120 }, { 154,4120 }, { 155,4120 }, { 156,4120 }, + { 157,4120 }, { 158,4120 }, { 159,4120 }, { 160,4120 }, { 161,4120 }, + { 162,4120 }, { 163,4120 }, { 164,4120 }, { 165,4120 }, { 166,4120 }, + { 167,4120 }, { 168,4120 }, { 169,4120 }, { 170,4120 }, { 171,4120 }, + { 172,4120 }, { 173,4120 }, { 174,4120 }, { 175,4120 }, { 176,4120 }, + { 177,4120 }, { 178,4120 }, { 179,4120 }, { 180,4120 }, { 181,4120 }, + { 182,4120 }, { 183,4120 }, { 184,4120 }, { 185,4120 }, { 186,4120 }, + { 187,4120 }, { 188,4120 }, { 189,4120 }, { 190,4120 }, { 191,4120 }, + { 192,4120 }, { 193,4120 }, { 194,4120 }, { 195,4120 }, { 196,4120 }, + + { 197,4120 }, { 198,4120 }, { 199,4120 }, { 200,4120 }, { 201,4120 }, + { 202,4120 }, { 203,4120 }, { 204,4120 }, { 205,4120 }, { 206,4120 }, + { 207,4120 }, { 208,4120 }, { 209,4120 }, { 210,4120 }, { 211,4120 }, + { 212,4120 }, { 213,4120 }, { 214,4120 }, { 215,4120 }, { 216,4120 }, + { 217,4120 }, { 218,4120 }, { 219,4120 }, { 220,4120 }, { 221,4120 }, + { 222,4120 }, { 223,4120 }, { 224,4120 }, { 225,4120 }, { 226,4120 }, + { 227,4120 }, { 228,4120 }, { 229,4120 }, { 230,4120 }, { 231,4120 }, + { 232,4120 }, { 233,4120 }, { 234,4120 }, { 235,4120 }, { 236,4120 }, + { 237,4120 }, { 238,4120 }, { 239,4120 }, { 240,4120 }, { 241,4120 }, + { 242,4120 }, { 243,4120 }, { 244,4120 }, { 245,4120 }, { 246,4120 }, + + { 247,4120 }, { 248,4120 }, { 249,4120 }, { 250,4120 }, { 251,4120 }, + { 252,4120 }, { 253,4120 }, { 254,4120 }, { 255,4120 }, { 256,4120 }, + { 0, 44 }, { 0,8262 }, { 1,4248 }, { 2,4248 }, { 3,4248 }, + { 4,4248 }, { 5,4248 }, { 6,4248 }, { 7,4248 }, { 8,4248 }, + { 9,4248 }, { 10,4248 }, { 11,4248 }, { 12,4248 }, { 13,4248 }, + { 14,4248 }, { 15,4248 }, { 16,4248 }, { 17,4248 }, { 18,4248 }, + { 19,4248 }, { 20,4248 }, { 21,4248 }, { 22,4248 }, { 23,4248 }, + { 24,4248 }, { 25,4248 }, { 26,4248 }, { 27,4248 }, { 28,4248 }, + { 29,4248 }, { 30,4248 }, { 31,4248 }, { 32,4248 }, { 33,4248 }, + { 0, 0 }, { 35,4248 }, { 36,4248 }, { 37,4248 }, { 38,4248 }, + + { 39,4248 }, { 40,4248 }, { 41,4248 }, { 42,4248 }, { 43,4248 }, + { 44,4248 }, { 45,4248 }, { 46,4248 }, { 47,4248 }, { 48,4248 }, + { 49,4248 }, { 50,4248 }, { 51,4248 }, { 52,4248 }, { 53,4248 }, + { 54,4248 }, { 55,4248 }, { 56,4248 }, { 57,4248 }, { 58,4248 }, + { 59,4248 }, { 60,4248 }, { 61,4248 }, { 62,4248 }, { 63,4248 }, + { 64,4248 }, { 65,4248 }, { 66,4248 }, { 67,4248 }, { 68,4248 }, + { 69,4248 }, { 70,4248 }, { 71,4248 }, { 72,4248 }, { 73,4248 }, + { 74,4248 }, { 75,4248 }, { 76,4248 }, { 77,4248 }, { 78,4248 }, + { 79,4248 }, { 80,4248 }, { 81,4248 }, { 82,4248 }, { 83,4248 }, + { 84,4248 }, { 85,4248 }, { 86,4248 }, { 87,4248 }, { 88,4248 }, + + { 89,4248 }, { 90,4248 }, { 91,4248 }, { 92,4248 }, { 93,4248 }, + { 94,4248 }, { 95,4248 }, { 96,4248 }, { 97,4248 }, { 98,4248 }, + { 99,4248 }, { 100,4248 }, { 101,4248 }, { 102,4248 }, { 103,4248 }, + { 104,4248 }, { 105,4248 }, { 106,4248 }, { 107,4248 }, { 108,4248 }, + { 109,4248 }, { 110,4248 }, { 111,4248 }, { 112,4248 }, { 113,4248 }, + { 114,4248 }, { 115,4248 }, { 116,4248 }, { 117,4248 }, { 118,4248 }, + { 119,4248 }, { 120,4248 }, { 121,4248 }, { 122,4248 }, { 123,4248 }, + { 124,4248 }, { 125,4248 }, { 126,4248 }, { 127,4248 }, { 128,4248 }, + { 129,4248 }, { 130,4248 }, { 131,4248 }, { 132,4248 }, { 133,4248 }, + { 134,4248 }, { 135,4248 }, { 136,4248 }, { 137,4248 }, { 138,4248 }, + + { 139,4248 }, { 140,4248 }, { 141,4248 }, { 142,4248 }, { 143,4248 }, + { 144,4248 }, { 145,4248 }, { 146,4248 }, { 147,4248 }, { 148,4248 }, + { 149,4248 }, { 150,4248 }, { 151,4248 }, { 152,4248 }, { 153,4248 }, + { 154,4248 }, { 155,4248 }, { 156,4248 }, { 157,4248 }, { 158,4248 }, + { 159,4248 }, { 160,4248 }, { 161,4248 }, { 162,4248 }, { 163,4248 }, + { 164,4248 }, { 165,4248 }, { 166,4248 }, { 167,4248 }, { 168,4248 }, + { 169,4248 }, { 170,4248 }, { 171,4248 }, { 172,4248 }, { 173,4248 }, + { 174,4248 }, { 175,4248 }, { 176,4248 }, { 177,4248 }, { 178,4248 }, + { 179,4248 }, { 180,4248 }, { 181,4248 }, { 182,4248 }, { 183,4248 }, + { 184,4248 }, { 185,4248 }, { 186,4248 }, { 187,4248 }, { 188,4248 }, + + { 189,4248 }, { 190,4248 }, { 191,4248 }, { 192,4248 }, { 193,4248 }, + { 194,4248 }, { 195,4248 }, { 196,4248 }, { 197,4248 }, { 198,4248 }, + { 199,4248 }, { 200,4248 }, { 201,4248 }, { 202,4248 }, { 203,4248 }, + { 204,4248 }, { 205,4248 }, { 206,4248 }, { 207,4248 }, { 208,4248 }, + { 209,4248 }, { 210,4248 }, { 211,4248 }, { 212,4248 }, { 213,4248 }, + { 214,4248 }, { 215,4248 }, { 216,4248 }, { 217,4248 }, { 218,4248 }, + { 219,4248 }, { 220,4248 }, { 221,4248 }, { 222,4248 }, { 223,4248 }, + { 224,4248 }, { 225,4248 }, { 226,4248 }, { 227,4248 }, { 228,4248 }, + { 229,4248 }, { 230,4248 }, { 231,4248 }, { 232,4248 }, { 233,4248 }, + { 234,4248 }, { 235,4248 }, { 236,4248 }, { 237,4248 }, { 238,4248 }, + + { 239,4248 }, { 240,4248 }, { 241,4248 }, { 242,4248 }, { 243,4248 }, + { 244,4248 }, { 245,4248 }, { 246,4248 }, { 247,4248 }, { 248,4248 }, + { 249,4248 }, { 250,4248 }, { 251,4248 }, { 252,4248 }, { 253,4248 }, + { 254,4248 }, { 255,4248 }, { 256,4248 }, { 0, 10 }, { 0,8004 }, + { 1,4248 }, { 2,4248 }, { 3,4248 }, { 4,4248 }, { 5,4248 }, + { 6,4248 }, { 7,4248 }, { 8,4248 }, { 9,4248 }, { 10,4248 }, + { 11,4248 }, { 12,4248 }, { 13,4248 }, { 14,4248 }, { 15,4248 }, + { 16,4248 }, { 17,4248 }, { 18,4248 }, { 19,4248 }, { 20,4248 }, + { 21,4248 }, { 22,4248 }, { 23,4248 }, { 24,4248 }, { 25,4248 }, + { 26,4248 }, { 27,4248 }, { 28,4248 }, { 29,4248 }, { 30,4248 }, + + { 31,4248 }, { 32,4248 }, { 33,4248 }, { 34,4248 }, { 35,4248 }, + { 36,4248 }, { 37,4248 }, { 38,4248 }, { 0, 0 }, { 40,4248 }, + { 41,4248 }, { 42,4248 }, { 43,4248 }, { 44,4248 }, { 45,4248 }, + { 46,4248 }, { 47,4248 }, { 48,4248 }, { 49,4248 }, { 50,4248 }, + { 51,4248 }, { 52,4248 }, { 53,4248 }, { 54,4248 }, { 55,4248 }, + { 56,4248 }, { 57,4248 }, { 58,4248 }, { 59,4248 }, { 60,4248 }, + { 61,4248 }, { 62,4248 }, { 63,4248 }, { 64,4248 }, { 65,4248 }, + { 66,4248 }, { 67,4248 }, { 68,4248 }, { 69,4248 }, { 70,4248 }, + { 71,4248 }, { 72,4248 }, { 73,4248 }, { 74,4248 }, { 75,4248 }, + { 76,4248 }, { 77,4248 }, { 78,4248 }, { 79,4248 }, { 80,4248 }, + + { 81,4248 }, { 82,4248 }, { 83,4248 }, { 84,4248 }, { 85,4248 }, + { 86,4248 }, { 87,4248 }, { 88,4248 }, { 89,4248 }, { 90,4248 }, + { 91,4248 }, { 92,4248 }, { 93,4248 }, { 94,4248 }, { 95,4248 }, + { 96,4248 }, { 97,4248 }, { 98,4248 }, { 99,4248 }, { 100,4248 }, + { 101,4248 }, { 102,4248 }, { 103,4248 }, { 104,4248 }, { 105,4248 }, + { 106,4248 }, { 107,4248 }, { 108,4248 }, { 109,4248 }, { 110,4248 }, + { 111,4248 }, { 112,4248 }, { 113,4248 }, { 114,4248 }, { 115,4248 }, + { 116,4248 }, { 117,4248 }, { 118,4248 }, { 119,4248 }, { 120,4248 }, + { 121,4248 }, { 122,4248 }, { 123,4248 }, { 124,4248 }, { 125,4248 }, + { 126,4248 }, { 127,4248 }, { 128,4248 }, { 129,4248 }, { 130,4248 }, + + { 131,4248 }, { 132,4248 }, { 133,4248 }, { 134,4248 }, { 135,4248 }, + { 136,4248 }, { 137,4248 }, { 138,4248 }, { 139,4248 }, { 140,4248 }, + { 141,4248 }, { 142,4248 }, { 143,4248 }, { 144,4248 }, { 145,4248 }, + { 146,4248 }, { 147,4248 }, { 148,4248 }, { 149,4248 }, { 150,4248 }, + { 151,4248 }, { 152,4248 }, { 153,4248 }, { 154,4248 }, { 155,4248 }, + { 156,4248 }, { 157,4248 }, { 158,4248 }, { 159,4248 }, { 160,4248 }, + { 161,4248 }, { 162,4248 }, { 163,4248 }, { 164,4248 }, { 165,4248 }, + { 166,4248 }, { 167,4248 }, { 168,4248 }, { 169,4248 }, { 170,4248 }, + { 171,4248 }, { 172,4248 }, { 173,4248 }, { 174,4248 }, { 175,4248 }, + { 176,4248 }, { 177,4248 }, { 178,4248 }, { 179,4248 }, { 180,4248 }, + + { 181,4248 }, { 182,4248 }, { 183,4248 }, { 184,4248 }, { 185,4248 }, + { 186,4248 }, { 187,4248 }, { 188,4248 }, { 189,4248 }, { 190,4248 }, + { 191,4248 }, { 192,4248 }, { 193,4248 }, { 194,4248 }, { 195,4248 }, + { 196,4248 }, { 197,4248 }, { 198,4248 }, { 199,4248 }, { 200,4248 }, + { 201,4248 }, { 202,4248 }, { 203,4248 }, { 204,4248 }, { 205,4248 }, + { 206,4248 }, { 207,4248 }, { 208,4248 }, { 209,4248 }, { 210,4248 }, + { 211,4248 }, { 212,4248 }, { 213,4248 }, { 214,4248 }, { 215,4248 }, + { 216,4248 }, { 217,4248 }, { 218,4248 }, { 219,4248 }, { 220,4248 }, + { 221,4248 }, { 222,4248 }, { 223,4248 }, { 224,4248 }, { 225,4248 }, + { 226,4248 }, { 227,4248 }, { 228,4248 }, { 229,4248 }, { 230,4248 }, + + { 231,4248 }, { 232,4248 }, { 233,4248 }, { 234,4248 }, { 235,4248 }, + { 236,4248 }, { 237,4248 }, { 238,4248 }, { 239,4248 }, { 240,4248 }, + { 241,4248 }, { 242,4248 }, { 243,4248 }, { 244,4248 }, { 245,4248 }, + { 246,4248 }, { 247,4248 }, { 248,4248 }, { 249,4248 }, { 250,4248 }, + { 251,4248 }, { 252,4248 }, { 253,4248 }, { 254,4248 }, { 255,4248 }, + { 256,4248 }, { 0, 22 }, { 0,7746 }, { 1,4248 }, { 2,4248 }, + { 3,4248 }, { 4,4248 }, { 5,4248 }, { 6,4248 }, { 7,4248 }, + { 8,4248 }, { 9,4248 }, { 10,4248 }, { 11,4248 }, { 12,4248 }, + { 13,4248 }, { 14,4248 }, { 15,4248 }, { 16,4248 }, { 17,4248 }, + { 18,4248 }, { 19,4248 }, { 20,4248 }, { 21,4248 }, { 22,4248 }, + + { 23,4248 }, { 24,4248 }, { 25,4248 }, { 26,4248 }, { 27,4248 }, + { 28,4248 }, { 29,4248 }, { 30,4248 }, { 31,4248 }, { 32,4248 }, + { 33,4248 }, { 34,4248 }, { 35,4248 }, { 36,4248 }, { 37,4248 }, + { 38,4248 }, { 0, 0 }, { 40,4248 }, { 41,4248 }, { 42,4248 }, + { 43,4248 }, { 44,4248 }, { 45,4248 }, { 46,4248 }, { 47,4248 }, + { 48,4248 }, { 49,4248 }, { 50,4248 }, { 51,4248 }, { 52,4248 }, + { 53,4248 }, { 54,4248 }, { 55,4248 }, { 56,4248 }, { 57,4248 }, + { 58,4248 }, { 59,4248 }, { 60,4248 }, { 61,4248 }, { 62,4248 }, + { 63,4248 }, { 64,4248 }, { 65,4248 }, { 66,4248 }, { 67,4248 }, + { 68,4248 }, { 69,4248 }, { 70,4248 }, { 71,4248 }, { 72,4248 }, + + { 73,4248 }, { 74,4248 }, { 75,4248 }, { 76,4248 }, { 77,4248 }, + { 78,4248 }, { 79,4248 }, { 80,4248 }, { 81,4248 }, { 82,4248 }, + { 83,4248 }, { 84,4248 }, { 85,4248 }, { 86,4248 }, { 87,4248 }, + { 88,4248 }, { 89,4248 }, { 90,4248 }, { 91,4248 }, { 92,4248 }, + { 93,4248 }, { 94,4248 }, { 95,4248 }, { 96,4248 }, { 97,4248 }, + { 98,4248 }, { 99,4248 }, { 100,4248 }, { 101,4248 }, { 102,4248 }, + { 103,4248 }, { 104,4248 }, { 105,4248 }, { 106,4248 }, { 107,4248 }, + { 108,4248 }, { 109,4248 }, { 110,4248 }, { 111,4248 }, { 112,4248 }, + { 113,4248 }, { 114,4248 }, { 115,4248 }, { 116,4248 }, { 117,4248 }, + { 118,4248 }, { 119,4248 }, { 120,4248 }, { 121,4248 }, { 122,4248 }, + + { 123,4248 }, { 124,4248 }, { 125,4248 }, { 126,4248 }, { 127,4248 }, + { 128,4248 }, { 129,4248 }, { 130,4248 }, { 131,4248 }, { 132,4248 }, + { 133,4248 }, { 134,4248 }, { 135,4248 }, { 136,4248 }, { 137,4248 }, + { 138,4248 }, { 139,4248 }, { 140,4248 }, { 141,4248 }, { 142,4248 }, + { 143,4248 }, { 144,4248 }, { 145,4248 }, { 146,4248 }, { 147,4248 }, + { 148,4248 }, { 149,4248 }, { 150,4248 }, { 151,4248 }, { 152,4248 }, + { 153,4248 }, { 154,4248 }, { 155,4248 }, { 156,4248 }, { 157,4248 }, + { 158,4248 }, { 159,4248 }, { 160,4248 }, { 161,4248 }, { 162,4248 }, + { 163,4248 }, { 164,4248 }, { 165,4248 }, { 166,4248 }, { 167,4248 }, + { 168,4248 }, { 169,4248 }, { 170,4248 }, { 171,4248 }, { 172,4248 }, + + { 173,4248 }, { 174,4248 }, { 175,4248 }, { 176,4248 }, { 177,4248 }, + { 178,4248 }, { 179,4248 }, { 180,4248 }, { 181,4248 }, { 182,4248 }, + { 183,4248 }, { 184,4248 }, { 185,4248 }, { 186,4248 }, { 187,4248 }, + { 188,4248 }, { 189,4248 }, { 190,4248 }, { 191,4248 }, { 192,4248 }, + { 193,4248 }, { 194,4248 }, { 195,4248 }, { 196,4248 }, { 197,4248 }, + { 198,4248 }, { 199,4248 }, { 200,4248 }, { 201,4248 }, { 202,4248 }, + { 203,4248 }, { 204,4248 }, { 205,4248 }, { 206,4248 }, { 207,4248 }, + { 208,4248 }, { 209,4248 }, { 210,4248 }, { 211,4248 }, { 212,4248 }, + { 213,4248 }, { 214,4248 }, { 215,4248 }, { 216,4248 }, { 217,4248 }, + { 218,4248 }, { 219,4248 }, { 220,4248 }, { 221,4248 }, { 222,4248 }, + + { 223,4248 }, { 224,4248 }, { 225,4248 }, { 226,4248 }, { 227,4248 }, + { 228,4248 }, { 229,4248 }, { 230,4248 }, { 231,4248 }, { 232,4248 }, + { 233,4248 }, { 234,4248 }, { 235,4248 }, { 236,4248 }, { 237,4248 }, + { 238,4248 }, { 239,4248 }, { 240,4248 }, { 241,4248 }, { 242,4248 }, + { 243,4248 }, { 244,4248 }, { 245,4248 }, { 246,4248 }, { 247,4248 }, + { 248,4248 }, { 249,4248 }, { 250,4248 }, { 251,4248 }, { 252,4248 }, + { 253,4248 }, { 254,4248 }, { 255,4248 }, { 256,4248 }, { 0, 19 }, + { 0,7488 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 19 }, + { 0,7483 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 9,4248 }, + { 10,4253 }, { 0, 0 }, { 12,4248 }, { 13,4253 }, { 9,4264 }, + + { 10,4264 }, { 0, 0 }, { 12,4264 }, { 13,4264 }, { 0, 0 }, + { 0, 19 }, { 0,7467 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, + { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, + { 9,4248 }, { 10,4248 }, { 32,4248 }, { 12,4248 }, { 13,4248 }, + { 0, 0 }, { 0, 0 }, { 32,4264 }, { 0, 0 }, { 0, 0 }, + { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 39,-3352 }, + { 45,-3349 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, + { 45,-3354 }, { 0, 0 }, { 0, 0 }, { 32,4248 }, { 0, 0 }, + { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, + { 39,-3368 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, + + { 0, 0 }, { 45,-3370 }, { 0, 23 }, { 0,7420 }, { 1,4248 }, + { 2,4248 }, { 3,4248 }, { 4,4248 }, { 5,4248 }, { 6,4248 }, + { 7,4248 }, { 8,4248 }, { 9,4248 }, { 10,4248 }, { 11,4248 }, + { 12,4248 }, { 13,4248 }, { 14,4248 }, { 15,4248 }, { 16,4248 }, + { 17,4248 }, { 18,4248 }, { 19,4248 }, { 20,4248 }, { 21,4248 }, + { 22,4248 }, { 23,4248 }, { 24,4248 }, { 25,4248 }, { 26,4248 }, + { 27,4248 }, { 28,4248 }, { 29,4248 }, { 30,4248 }, { 31,4248 }, + { 32,4248 }, { 33,4248 }, { 34,4248 }, { 35,4248 }, { 36,4248 }, + { 37,4248 }, { 38,4248 }, { 0, 0 }, { 40,4248 }, { 41,4248 }, + { 42,4248 }, { 43,4248 }, { 44,4248 }, { 45,4248 }, { 46,4248 }, + + { 47,4248 }, { 48,4248 }, { 49,4248 }, { 50,4248 }, { 51,4248 }, + { 52,4248 }, { 53,4248 }, { 54,4248 }, { 55,4248 }, { 56,4248 }, + { 57,4248 }, { 58,4248 }, { 59,4248 }, { 60,4248 }, { 61,4248 }, + { 62,4248 }, { 63,4248 }, { 64,4248 }, { 65,4248 }, { 66,4248 }, + { 67,4248 }, { 68,4248 }, { 69,4248 }, { 70,4248 }, { 71,4248 }, + { 72,4248 }, { 73,4248 }, { 74,4248 }, { 75,4248 }, { 76,4248 }, + { 77,4248 }, { 78,4248 }, { 79,4248 }, { 80,4248 }, { 81,4248 }, + { 82,4248 }, { 83,4248 }, { 84,4248 }, { 85,4248 }, { 86,4248 }, + { 87,4248 }, { 88,4248 }, { 89,4248 }, { 90,4248 }, { 91,4248 }, + { 0, 0 }, { 93,4248 }, { 94,4248 }, { 95,4248 }, { 96,4248 }, + + { 97,4248 }, { 98,4248 }, { 99,4248 }, { 100,4248 }, { 101,4248 }, + { 102,4248 }, { 103,4248 }, { 104,4248 }, { 105,4248 }, { 106,4248 }, + { 107,4248 }, { 108,4248 }, { 109,4248 }, { 110,4248 }, { 111,4248 }, + { 112,4248 }, { 113,4248 }, { 114,4248 }, { 115,4248 }, { 116,4248 }, + { 117,4248 }, { 118,4248 }, { 119,4248 }, { 120,4248 }, { 121,4248 }, + { 122,4248 }, { 123,4248 }, { 124,4248 }, { 125,4248 }, { 126,4248 }, + { 127,4248 }, { 128,4248 }, { 129,4248 }, { 130,4248 }, { 131,4248 }, + { 132,4248 }, { 133,4248 }, { 134,4248 }, { 135,4248 }, { 136,4248 }, + { 137,4248 }, { 138,4248 }, { 139,4248 }, { 140,4248 }, { 141,4248 }, + { 142,4248 }, { 143,4248 }, { 144,4248 }, { 145,4248 }, { 146,4248 }, + + { 147,4248 }, { 148,4248 }, { 149,4248 }, { 150,4248 }, { 151,4248 }, + { 152,4248 }, { 153,4248 }, { 154,4248 }, { 155,4248 }, { 156,4248 }, + { 157,4248 }, { 158,4248 }, { 159,4248 }, { 160,4248 }, { 161,4248 }, + { 162,4248 }, { 163,4248 }, { 164,4248 }, { 165,4248 }, { 166,4248 }, + { 167,4248 }, { 168,4248 }, { 169,4248 }, { 170,4248 }, { 171,4248 }, + { 172,4248 }, { 173,4248 }, { 174,4248 }, { 175,4248 }, { 176,4248 }, + { 177,4248 }, { 178,4248 }, { 179,4248 }, { 180,4248 }, { 181,4248 }, + { 182,4248 }, { 183,4248 }, { 184,4248 }, { 185,4248 }, { 186,4248 }, + { 187,4248 }, { 188,4248 }, { 189,4248 }, { 190,4248 }, { 191,4248 }, + { 192,4248 }, { 193,4248 }, { 194,4248 }, { 195,4248 }, { 196,4248 }, + + { 197,4248 }, { 198,4248 }, { 199,4248 }, { 200,4248 }, { 201,4248 }, + { 202,4248 }, { 203,4248 }, { 204,4248 }, { 205,4248 }, { 206,4248 }, + { 207,4248 }, { 208,4248 }, { 209,4248 }, { 210,4248 }, { 211,4248 }, + { 212,4248 }, { 213,4248 }, { 214,4248 }, { 215,4248 }, { 216,4248 }, + { 217,4248 }, { 218,4248 }, { 219,4248 }, { 220,4248 }, { 221,4248 }, + { 222,4248 }, { 223,4248 }, { 224,4248 }, { 225,4248 }, { 226,4248 }, + { 227,4248 }, { 228,4248 }, { 229,4248 }, { 230,4248 }, { 231,4248 }, + { 232,4248 }, { 233,4248 }, { 234,4248 }, { 235,4248 }, { 236,4248 }, + { 237,4248 }, { 238,4248 }, { 239,4248 }, { 240,4248 }, { 241,4248 }, + { 242,4248 }, { 243,4248 }, { 244,4248 }, { 245,4248 }, { 246,4248 }, + + { 247,4248 }, { 248,4248 }, { 249,4248 }, { 250,4248 }, { 251,4248 }, + { 252,4248 }, { 253,4248 }, { 254,4248 }, { 255,4248 }, { 256,4248 }, + { 0, 23 }, { 0,7162 }, { 1,3990 }, { 2,3990 }, { 3,3990 }, + { 4,3990 }, { 5,3990 }, { 6,3990 }, { 7,3990 }, { 8,3990 }, + { 9,3990 }, { 10,3990 }, { 11,3990 }, { 12,3990 }, { 13,3990 }, + { 14,3990 }, { 15,3990 }, { 16,3990 }, { 17,3990 }, { 18,3990 }, + { 19,3990 }, { 20,3990 }, { 21,3990 }, { 22,3990 }, { 23,3990 }, + { 24,3990 }, { 25,3990 }, { 26,3990 }, { 27,3990 }, { 28,3990 }, + { 29,3990 }, { 30,3990 }, { 31,3990 }, { 32,3990 }, { 33,3990 }, + { 34,3990 }, { 35,3990 }, { 36,3990 }, { 37,3990 }, { 38,3990 }, + + { 0, 0 }, { 40,3990 }, { 41,3990 }, { 42,3990 }, { 43,3990 }, + { 44,3990 }, { 45,3990 }, { 46,3990 }, { 47,3990 }, { 48,3990 }, + { 49,3990 }, { 50,3990 }, { 51,3990 }, { 52,3990 }, { 53,3990 }, + { 54,3990 }, { 55,3990 }, { 56,3990 }, { 57,3990 }, { 58,3990 }, + { 59,3990 }, { 60,3990 }, { 61,3990 }, { 62,3990 }, { 63,3990 }, + { 64,3990 }, { 65,3990 }, { 66,3990 }, { 67,3990 }, { 68,3990 }, + { 69,3990 }, { 70,3990 }, { 71,3990 }, { 72,3990 }, { 73,3990 }, + { 74,3990 }, { 75,3990 }, { 76,3990 }, { 77,3990 }, { 78,3990 }, + { 79,3990 }, { 80,3990 }, { 81,3990 }, { 82,3990 }, { 83,3990 }, + { 84,3990 }, { 85,3990 }, { 86,3990 }, { 87,3990 }, { 88,3990 }, + + { 89,3990 }, { 90,3990 }, { 91,3990 }, { 0, 0 }, { 93,3990 }, + { 94,3990 }, { 95,3990 }, { 96,3990 }, { 97,3990 }, { 98,3990 }, + { 99,3990 }, { 100,3990 }, { 101,3990 }, { 102,3990 }, { 103,3990 }, + { 104,3990 }, { 105,3990 }, { 106,3990 }, { 107,3990 }, { 108,3990 }, + { 109,3990 }, { 110,3990 }, { 111,3990 }, { 112,3990 }, { 113,3990 }, + { 114,3990 }, { 115,3990 }, { 116,3990 }, { 117,3990 }, { 118,3990 }, + { 119,3990 }, { 120,3990 }, { 121,3990 }, { 122,3990 }, { 123,3990 }, + { 124,3990 }, { 125,3990 }, { 126,3990 }, { 127,3990 }, { 128,3990 }, + { 129,3990 }, { 130,3990 }, { 131,3990 }, { 132,3990 }, { 133,3990 }, + { 134,3990 }, { 135,3990 }, { 136,3990 }, { 137,3990 }, { 138,3990 }, + + { 139,3990 }, { 140,3990 }, { 141,3990 }, { 142,3990 }, { 143,3990 }, + { 144,3990 }, { 145,3990 }, { 146,3990 }, { 147,3990 }, { 148,3990 }, + { 149,3990 }, { 150,3990 }, { 151,3990 }, { 152,3990 }, { 153,3990 }, + { 154,3990 }, { 155,3990 }, { 156,3990 }, { 157,3990 }, { 158,3990 }, + { 159,3990 }, { 160,3990 }, { 161,3990 }, { 162,3990 }, { 163,3990 }, + { 164,3990 }, { 165,3990 }, { 166,3990 }, { 167,3990 }, { 168,3990 }, + { 169,3990 }, { 170,3990 }, { 171,3990 }, { 172,3990 }, { 173,3990 }, + { 174,3990 }, { 175,3990 }, { 176,3990 }, { 177,3990 }, { 178,3990 }, + { 179,3990 }, { 180,3990 }, { 181,3990 }, { 182,3990 }, { 183,3990 }, + { 184,3990 }, { 185,3990 }, { 186,3990 }, { 187,3990 }, { 188,3990 }, + + { 189,3990 }, { 190,3990 }, { 191,3990 }, { 192,3990 }, { 193,3990 }, + { 194,3990 }, { 195,3990 }, { 196,3990 }, { 197,3990 }, { 198,3990 }, + { 199,3990 }, { 200,3990 }, { 201,3990 }, { 202,3990 }, { 203,3990 }, + { 204,3990 }, { 205,3990 }, { 206,3990 }, { 207,3990 }, { 208,3990 }, + { 209,3990 }, { 210,3990 }, { 211,3990 }, { 212,3990 }, { 213,3990 }, + { 214,3990 }, { 215,3990 }, { 216,3990 }, { 217,3990 }, { 218,3990 }, + { 219,3990 }, { 220,3990 }, { 221,3990 }, { 222,3990 }, { 223,3990 }, + { 224,3990 }, { 225,3990 }, { 226,3990 }, { 227,3990 }, { 228,3990 }, + { 229,3990 }, { 230,3990 }, { 231,3990 }, { 232,3990 }, { 233,3990 }, + { 234,3990 }, { 235,3990 }, { 236,3990 }, { 237,3990 }, { 238,3990 }, + + { 239,3990 }, { 240,3990 }, { 241,3990 }, { 242,3990 }, { 243,3990 }, + { 244,3990 }, { 245,3990 }, { 246,3990 }, { 247,3990 }, { 248,3990 }, + { 249,3990 }, { 250,3990 }, { 251,3990 }, { 252,3990 }, { 253,3990 }, + { 254,3990 }, { 255,3990 }, { 256,3990 }, { 0, 32 }, { 0,6904 }, + { 1,-3929 }, { 2,-3929 }, { 3,-3929 }, { 4,-3929 }, { 5,-3929 }, + { 6,-3929 }, { 7,-3929 }, { 8,-3929 }, { 9,-3929 }, { 10,-3929 }, + { 11,-3929 }, { 12,-3929 }, { 13,-3929 }, { 14,-3929 }, { 15,-3929 }, + { 16,-3929 }, { 17,-3929 }, { 18,-3929 }, { 19,-3929 }, { 20,-3929 }, + { 21,-3929 }, { 22,-3929 }, { 23,-3929 }, { 24,-3929 }, { 25,-3929 }, + { 26,-3929 }, { 27,-3929 }, { 28,-3929 }, { 29,-3929 }, { 30,-3929 }, + + { 31,-3929 }, { 32,-3929 }, { 33,-3929 }, { 34,-3929 }, { 35,-3929 }, + { 36,-3929 }, { 37,-3929 }, { 38,-3929 }, { 39,-3929 }, { 40,-3929 }, + { 41,-3929 }, { 42,-3929 }, { 43,-3929 }, { 44,-3929 }, { 45,-3929 }, + { 46,-3929 }, { 47,-3929 }, { 48,3990 }, { 49,3990 }, { 50,3990 }, + { 51,3990 }, { 52,3990 }, { 53,3990 }, { 54,3990 }, { 55,3990 }, + { 56,-3929 }, { 57,-3929 }, { 58,-3929 }, { 59,-3929 }, { 60,-3929 }, + { 61,-3929 }, { 62,-3929 }, { 63,-3929 }, { 64,-3929 }, { 65,-3929 }, + { 66,-3929 }, { 67,-3929 }, { 68,-3929 }, { 69,-3929 }, { 70,-3929 }, + { 71,-3929 }, { 72,-3929 }, { 73,-3929 }, { 74,-3929 }, { 75,-3929 }, + { 76,-3929 }, { 77,-3929 }, { 78,-3929 }, { 79,-3929 }, { 80,-3929 }, + + { 81,-3929 }, { 82,-3929 }, { 83,-3929 }, { 84,-3929 }, { 85,3998 }, + { 86,-3929 }, { 87,-3929 }, { 88,-3929 }, { 89,-3929 }, { 90,-3929 }, + { 91,-3929 }, { 92,-3929 }, { 93,-3929 }, { 94,-3929 }, { 95,-3929 }, + { 96,-3929 }, { 97,-3929 }, { 98,-3929 }, { 99,-3929 }, { 100,-3929 }, + { 101,-3929 }, { 102,-3929 }, { 103,-3929 }, { 104,-3929 }, { 105,-3929 }, + { 106,-3929 }, { 107,-3929 }, { 108,-3929 }, { 109,-3929 }, { 110,-3929 }, + { 111,-3929 }, { 112,-3929 }, { 113,-3929 }, { 114,-3929 }, { 115,-3929 }, + { 116,-3929 }, { 117,4021 }, { 118,-3929 }, { 119,-3929 }, { 120,4059 }, + { 121,-3929 }, { 122,-3929 }, { 123,-3929 }, { 124,-3929 }, { 125,-3929 }, + { 126,-3929 }, { 127,-3929 }, { 128,-3929 }, { 129,-3929 }, { 130,-3929 }, + + { 131,-3929 }, { 132,-3929 }, { 133,-3929 }, { 134,-3929 }, { 135,-3929 }, + { 136,-3929 }, { 137,-3929 }, { 138,-3929 }, { 139,-3929 }, { 140,-3929 }, + { 141,-3929 }, { 142,-3929 }, { 143,-3929 }, { 144,-3929 }, { 145,-3929 }, + { 146,-3929 }, { 147,-3929 }, { 148,-3929 }, { 149,-3929 }, { 150,-3929 }, + { 151,-3929 }, { 152,-3929 }, { 153,-3929 }, { 154,-3929 }, { 155,-3929 }, + { 156,-3929 }, { 157,-3929 }, { 158,-3929 }, { 159,-3929 }, { 160,-3929 }, + { 161,-3929 }, { 162,-3929 }, { 163,-3929 }, { 164,-3929 }, { 165,-3929 }, + { 166,-3929 }, { 167,-3929 }, { 168,-3929 }, { 169,-3929 }, { 170,-3929 }, + { 171,-3929 }, { 172,-3929 }, { 173,-3929 }, { 174,-3929 }, { 175,-3929 }, + { 176,-3929 }, { 177,-3929 }, { 178,-3929 }, { 179,-3929 }, { 180,-3929 }, + + { 181,-3929 }, { 182,-3929 }, { 183,-3929 }, { 184,-3929 }, { 185,-3929 }, + { 186,-3929 }, { 187,-3929 }, { 188,-3929 }, { 189,-3929 }, { 190,-3929 }, + { 191,-3929 }, { 192,-3929 }, { 193,-3929 }, { 194,-3929 }, { 195,-3929 }, + { 196,-3929 }, { 197,-3929 }, { 198,-3929 }, { 199,-3929 }, { 200,-3929 }, + { 201,-3929 }, { 202,-3929 }, { 203,-3929 }, { 204,-3929 }, { 205,-3929 }, + { 206,-3929 }, { 207,-3929 }, { 208,-3929 }, { 209,-3929 }, { 210,-3929 }, + { 211,-3929 }, { 212,-3929 }, { 213,-3929 }, { 214,-3929 }, { 215,-3929 }, + { 216,-3929 }, { 217,-3929 }, { 218,-3929 }, { 219,-3929 }, { 220,-3929 }, + { 221,-3929 }, { 222,-3929 }, { 223,-3929 }, { 224,-3929 }, { 225,-3929 }, + { 226,-3929 }, { 227,-3929 }, { 228,-3929 }, { 229,-3929 }, { 230,-3929 }, + + { 231,-3929 }, { 232,-3929 }, { 233,-3929 }, { 234,-3929 }, { 235,-3929 }, + { 236,-3929 }, { 237,-3929 }, { 238,-3929 }, { 239,-3929 }, { 240,-3929 }, + { 241,-3929 }, { 242,-3929 }, { 243,-3929 }, { 244,-3929 }, { 245,-3929 }, + { 246,-3929 }, { 247,-3929 }, { 248,-3929 }, { 249,-3929 }, { 250,-3929 }, + { 251,-3929 }, { 252,-3929 }, { 253,-3929 }, { 254,-3929 }, { 255,-3929 }, + { 256,-3929 }, { 0, 36 }, { 0,6646 }, { 1,3905 }, { 2,3905 }, + { 3,3905 }, { 4,3905 }, { 5,3905 }, { 6,3905 }, { 7,3905 }, + { 8,3905 }, { 9,3905 }, { 10,3905 }, { 11,3905 }, { 12,3905 }, + { 13,3905 }, { 14,3905 }, { 15,3905 }, { 16,3905 }, { 17,3905 }, + { 18,3905 }, { 19,3905 }, { 20,3905 }, { 21,3905 }, { 22,3905 }, + + { 23,3905 }, { 24,3905 }, { 25,3905 }, { 26,3905 }, { 27,3905 }, + { 28,3905 }, { 29,3905 }, { 30,3905 }, { 31,3905 }, { 32,3905 }, + { 33,3905 }, { 34,3905 }, { 35,3905 }, { 0, 0 }, { 37,3905 }, + { 38,3905 }, { 39,3905 }, { 40,3905 }, { 41,3905 }, { 42,3905 }, + { 43,3905 }, { 44,3905 }, { 45,3905 }, { 46,3905 }, { 47,3905 }, + { 48,3905 }, { 49,3905 }, { 50,3905 }, { 51,3905 }, { 52,3905 }, + { 53,3905 }, { 54,3905 }, { 55,3905 }, { 56,3905 }, { 57,3905 }, + { 58,3905 }, { 59,3905 }, { 60,3905 }, { 61,3905 }, { 62,3905 }, + { 63,3905 }, { 64,3905 }, { 65,3905 }, { 66,3905 }, { 67,3905 }, + { 68,3905 }, { 69,3905 }, { 70,3905 }, { 71,3905 }, { 72,3905 }, + + { 73,3905 }, { 74,3905 }, { 75,3905 }, { 76,3905 }, { 77,3905 }, + { 78,3905 }, { 79,3905 }, { 80,3905 }, { 81,3905 }, { 82,3905 }, + { 83,3905 }, { 84,3905 }, { 85,3905 }, { 86,3905 }, { 87,3905 }, + { 88,3905 }, { 89,3905 }, { 90,3905 }, { 91,3905 }, { 92,3905 }, + { 93,3905 }, { 94,3905 }, { 95,3905 }, { 96,3905 }, { 97,3905 }, + { 98,3905 }, { 99,3905 }, { 100,3905 }, { 101,3905 }, { 102,3905 }, + { 103,3905 }, { 104,3905 }, { 105,3905 }, { 106,3905 }, { 107,3905 }, + { 108,3905 }, { 109,3905 }, { 110,3905 }, { 111,3905 }, { 112,3905 }, + { 113,3905 }, { 114,3905 }, { 115,3905 }, { 116,3905 }, { 117,3905 }, + { 118,3905 }, { 119,3905 }, { 120,3905 }, { 121,3905 }, { 122,3905 }, + + { 123,3905 }, { 124,3905 }, { 125,3905 }, { 126,3905 }, { 127,3905 }, + { 128,3905 }, { 129,3905 }, { 130,3905 }, { 131,3905 }, { 132,3905 }, + { 133,3905 }, { 134,3905 }, { 135,3905 }, { 136,3905 }, { 137,3905 }, + { 138,3905 }, { 139,3905 }, { 140,3905 }, { 141,3905 }, { 142,3905 }, + { 143,3905 }, { 144,3905 }, { 145,3905 }, { 146,3905 }, { 147,3905 }, + { 148,3905 }, { 149,3905 }, { 150,3905 }, { 151,3905 }, { 152,3905 }, + { 153,3905 }, { 154,3905 }, { 155,3905 }, { 156,3905 }, { 157,3905 }, + { 158,3905 }, { 159,3905 }, { 160,3905 }, { 161,3905 }, { 162,3905 }, + { 163,3905 }, { 164,3905 }, { 165,3905 }, { 166,3905 }, { 167,3905 }, + { 168,3905 }, { 169,3905 }, { 170,3905 }, { 171,3905 }, { 172,3905 }, + + { 173,3905 }, { 174,3905 }, { 175,3905 }, { 176,3905 }, { 177,3905 }, + { 178,3905 }, { 179,3905 }, { 180,3905 }, { 181,3905 }, { 182,3905 }, + { 183,3905 }, { 184,3905 }, { 185,3905 }, { 186,3905 }, { 187,3905 }, + { 188,3905 }, { 189,3905 }, { 190,3905 }, { 191,3905 }, { 192,3905 }, + { 193,3905 }, { 194,3905 }, { 195,3905 }, { 196,3905 }, { 197,3905 }, + { 198,3905 }, { 199,3905 }, { 200,3905 }, { 201,3905 }, { 202,3905 }, + { 203,3905 }, { 204,3905 }, { 205,3905 }, { 206,3905 }, { 207,3905 }, + { 208,3905 }, { 209,3905 }, { 210,3905 }, { 211,3905 }, { 212,3905 }, + { 213,3905 }, { 214,3905 }, { 215,3905 }, { 216,3905 }, { 217,3905 }, + { 218,3905 }, { 219,3905 }, { 220,3905 }, { 221,3905 }, { 222,3905 }, + + { 223,3905 }, { 224,3905 }, { 225,3905 }, { 226,3905 }, { 227,3905 }, + { 228,3905 }, { 229,3905 }, { 230,3905 }, { 231,3905 }, { 232,3905 }, + { 233,3905 }, { 234,3905 }, { 235,3905 }, { 236,3905 }, { 237,3905 }, + { 238,3905 }, { 239,3905 }, { 240,3905 }, { 241,3905 }, { 242,3905 }, + { 243,3905 }, { 244,3905 }, { 245,3905 }, { 246,3905 }, { 247,3905 }, + { 248,3905 }, { 249,3905 }, { 250,3905 }, { 251,3905 }, { 252,3905 }, + { 253,3905 }, { 254,3905 }, { 255,3905 }, { 256,3905 }, { 0, 36 }, + { 0,6388 }, { 1,3647 }, { 2,3647 }, { 3,3647 }, { 4,3647 }, + { 5,3647 }, { 6,3647 }, { 7,3647 }, { 8,3647 }, { 9,3647 }, + { 10,3647 }, { 11,3647 }, { 12,3647 }, { 13,3647 }, { 14,3647 }, + + { 15,3647 }, { 16,3647 }, { 17,3647 }, { 18,3647 }, { 19,3647 }, + { 20,3647 }, { 21,3647 }, { 22,3647 }, { 23,3647 }, { 24,3647 }, + { 25,3647 }, { 26,3647 }, { 27,3647 }, { 28,3647 }, { 29,3647 }, + { 30,3647 }, { 31,3647 }, { 32,3647 }, { 33,3647 }, { 34,3647 }, + { 35,3647 }, { 0, 0 }, { 37,3647 }, { 38,3647 }, { 39,3647 }, + { 40,3647 }, { 41,3647 }, { 42,3647 }, { 43,3647 }, { 44,3647 }, + { 45,3647 }, { 46,3647 }, { 47,3647 }, { 48,3647 }, { 49,3647 }, + { 50,3647 }, { 51,3647 }, { 52,3647 }, { 53,3647 }, { 54,3647 }, + { 55,3647 }, { 56,3647 }, { 57,3647 }, { 58,3647 }, { 59,3647 }, + { 60,3647 }, { 61,3647 }, { 62,3647 }, { 63,3647 }, { 64,3647 }, + + { 65,3647 }, { 66,3647 }, { 67,3647 }, { 68,3647 }, { 69,3647 }, + { 70,3647 }, { 71,3647 }, { 72,3647 }, { 73,3647 }, { 74,3647 }, + { 75,3647 }, { 76,3647 }, { 77,3647 }, { 78,3647 }, { 79,3647 }, + { 80,3647 }, { 81,3647 }, { 82,3647 }, { 83,3647 }, { 84,3647 }, + { 85,3647 }, { 86,3647 }, { 87,3647 }, { 88,3647 }, { 89,3647 }, + { 90,3647 }, { 91,3647 }, { 92,3647 }, { 93,3647 }, { 94,3647 }, + { 95,3647 }, { 96,3647 }, { 97,3647 }, { 98,3647 }, { 99,3647 }, + { 100,3647 }, { 101,3647 }, { 102,3647 }, { 103,3647 }, { 104,3647 }, + { 105,3647 }, { 106,3647 }, { 107,3647 }, { 108,3647 }, { 109,3647 }, + { 110,3647 }, { 111,3647 }, { 112,3647 }, { 113,3647 }, { 114,3647 }, + + { 115,3647 }, { 116,3647 }, { 117,3647 }, { 118,3647 }, { 119,3647 }, + { 120,3647 }, { 121,3647 }, { 122,3647 }, { 123,3647 }, { 124,3647 }, + { 125,3647 }, { 126,3647 }, { 127,3647 }, { 128,3647 }, { 129,3647 }, + { 130,3647 }, { 131,3647 }, { 132,3647 }, { 133,3647 }, { 134,3647 }, + { 135,3647 }, { 136,3647 }, { 137,3647 }, { 138,3647 }, { 139,3647 }, + { 140,3647 }, { 141,3647 }, { 142,3647 }, { 143,3647 }, { 144,3647 }, + { 145,3647 }, { 146,3647 }, { 147,3647 }, { 148,3647 }, { 149,3647 }, + { 150,3647 }, { 151,3647 }, { 152,3647 }, { 153,3647 }, { 154,3647 }, + { 155,3647 }, { 156,3647 }, { 157,3647 }, { 158,3647 }, { 159,3647 }, + { 160,3647 }, { 161,3647 }, { 162,3647 }, { 163,3647 }, { 164,3647 }, + + { 165,3647 }, { 166,3647 }, { 167,3647 }, { 168,3647 }, { 169,3647 }, + { 170,3647 }, { 171,3647 }, { 172,3647 }, { 173,3647 }, { 174,3647 }, + { 175,3647 }, { 176,3647 }, { 177,3647 }, { 178,3647 }, { 179,3647 }, + { 180,3647 }, { 181,3647 }, { 182,3647 }, { 183,3647 }, { 184,3647 }, + { 185,3647 }, { 186,3647 }, { 187,3647 }, { 188,3647 }, { 189,3647 }, + { 190,3647 }, { 191,3647 }, { 192,3647 }, { 193,3647 }, { 194,3647 }, + { 195,3647 }, { 196,3647 }, { 197,3647 }, { 198,3647 }, { 199,3647 }, + { 200,3647 }, { 201,3647 }, { 202,3647 }, { 203,3647 }, { 204,3647 }, + { 205,3647 }, { 206,3647 }, { 207,3647 }, { 208,3647 }, { 209,3647 }, + { 210,3647 }, { 211,3647 }, { 212,3647 }, { 213,3647 }, { 214,3647 }, + + { 215,3647 }, { 216,3647 }, { 217,3647 }, { 218,3647 }, { 219,3647 }, + { 220,3647 }, { 221,3647 }, { 222,3647 }, { 223,3647 }, { 224,3647 }, + { 225,3647 }, { 226,3647 }, { 227,3647 }, { 228,3647 }, { 229,3647 }, + { 230,3647 }, { 231,3647 }, { 232,3647 }, { 233,3647 }, { 234,3647 }, + { 235,3647 }, { 236,3647 }, { 237,3647 }, { 238,3647 }, { 239,3647 }, + { 240,3647 }, { 241,3647 }, { 242,3647 }, { 243,3647 }, { 244,3647 }, + { 245,3647 }, { 246,3647 }, { 247,3647 }, { 248,3647 }, { 249,3647 }, + { 250,3647 }, { 251,3647 }, { 252,3647 }, { 253,3647 }, { 254,3647 }, + { 255,3647 }, { 256,3647 }, { 0, 38 }, { 0,6130 }, { 0, 1 }, + { 0,6128 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, + + { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 9, 0 }, + { 10, 0 }, { 0, 0 }, { 12, 0 }, { 13, 0 }, { 0, 0 }, + { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, + { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, + { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, + { 0, 0 }, { 0, 0 }, { 32, 0 }, { 0, 0 }, { 36,-4701 }, + { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, + { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, + { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, + { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, + + { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, + { 0, 0 }, { 0, 0 }, { 0, 0 }, { 65,3647 }, { 66,3647 }, + { 67,3647 }, { 68,3647 }, { 69,3647 }, { 70,3647 }, { 71,3647 }, + { 72,3647 }, { 73,3647 }, { 74,3647 }, { 75,3647 }, { 76,3647 }, + { 77,3647 }, { 78,3647 }, { 79,3647 }, { 80,3647 }, { 81,3647 }, + { 82,3647 }, { 83,3647 }, { 84,3647 }, { 85,3647 }, { 86,3647 }, + { 87,3647 }, { 88,3647 }, { 89,3647 }, { 90,3647 }, { 0, 0 }, + { 0, 0 }, { 0, 0 }, { 0, 0 }, { 95,3647 }, { 0, 0 }, + { 97,3647 }, { 98,3647 }, { 99,3647 }, { 100,3647 }, { 101,3647 }, + { 102,3647 }, { 103,3647 }, { 104,3647 }, { 105,3647 }, { 106,3647 }, + + { 107,3647 }, { 108,3647 }, { 109,3647 }, { 110,3647 }, { 111,3647 }, + { 112,3647 }, { 113,3647 }, { 114,3647 }, { 115,3647 }, { 116,3647 }, + { 117,3647 }, { 118,3647 }, { 119,3647 }, { 120,3647 }, { 121,3647 }, + { 122,3647 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, + { 0, 0 }, { 128,3647 }, { 129,3647 }, { 130,3647 }, { 131,3647 }, + { 132,3647 }, { 133,3647 }, { 134,3647 }, { 135,3647 }, { 136,3647 }, + { 137,3647 }, { 138,3647 }, { 139,3647 }, { 140,3647 }, { 141,3647 }, + { 142,3647 }, { 143,3647 }, { 144,3647 }, { 145,3647 }, { 146,3647 }, + { 147,3647 }, { 148,3647 }, { 149,3647 }, { 150,3647 }, { 151,3647 }, + { 152,3647 }, { 153,3647 }, { 154,3647 }, { 155,3647 }, { 156,3647 }, + + { 157,3647 }, { 158,3647 }, { 159,3647 }, { 160,3647 }, { 161,3647 }, + { 162,3647 }, { 163,3647 }, { 164,3647 }, { 165,3647 }, { 166,3647 }, + { 167,3647 }, { 168,3647 }, { 169,3647 }, { 170,3647 }, { 171,3647 }, + { 172,3647 }, { 173,3647 }, { 174,3647 }, { 175,3647 }, { 176,3647 }, + { 177,3647 }, { 178,3647 }, { 179,3647 }, { 180,3647 }, { 181,3647 }, + { 182,3647 }, { 183,3647 }, { 184,3647 }, { 185,3647 }, { 186,3647 }, + { 187,3647 }, { 188,3647 }, { 189,3647 }, { 190,3647 }, { 191,3647 }, + { 192,3647 }, { 193,3647 }, { 194,3647 }, { 195,3647 }, { 196,3647 }, + { 197,3647 }, { 198,3647 }, { 199,3647 }, { 200,3647 }, { 201,3647 }, + { 202,3647 }, { 203,3647 }, { 204,3647 }, { 205,3647 }, { 206,3647 }, + + { 207,3647 }, { 208,3647 }, { 209,3647 }, { 210,3647 }, { 211,3647 }, + { 212,3647 }, { 213,3647 }, { 214,3647 }, { 215,3647 }, { 216,3647 }, + { 217,3647 }, { 218,3647 }, { 219,3647 }, { 220,3647 }, { 221,3647 }, + { 222,3647 }, { 223,3647 }, { 224,3647 }, { 225,3647 }, { 226,3647 }, + { 227,3647 }, { 228,3647 }, { 229,3647 }, { 230,3647 }, { 231,3647 }, + { 232,3647 }, { 233,3647 }, { 234,3647 }, { 235,3647 }, { 236,3647 }, + { 237,3647 }, { 238,3647 }, { 239,3647 }, { 240,3647 }, { 241,3647 }, + { 242,3647 }, { 243,3647 }, { 244,3647 }, { 245,3647 }, { 246,3647 }, + { 247,3647 }, { 248,3647 }, { 249,3647 }, { 250,3647 }, { 251,3647 }, + { 252,3647 }, { 253,3647 }, { 254,3647 }, { 255,3647 }, { 0, 56 }, + + { 0,5873 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, + { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, + { 0, 54 }, { 0,5862 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, + { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, + { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, + { 0, 0 }, { 0, 0 }, { 0, 57 }, { 0,5845 }, { 0, 0 }, + { 0, 0 }, { 0, 0 }, { 0, 0 }, { 33, 0 }, { 0, 0 }, + { 35, 0 }, { 0, 0 }, { 37, 0 }, { 38, 0 }, { 0, 0 }, + { 0, 0 }, { 0, 0 }, { 42, 0 }, { 43, 0 }, { 33, -11 }, + { 45, 0 }, { 35, -11 }, { 47, 0 }, { 37, -11 }, { 38, -11 }, + + { 0, 0 }, { 0, 0 }, { 0, 0 }, { 42, -11 }, { 43, -11 }, + { 0, 0 }, { 45, -11 }, { 0, 0 }, { 47, -11 }, { 0, 0 }, { 60, 0 }, { 61, 0 }, { 62, 0 }, { 63, 0 }, { 64, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 33, -40 }, { 0, 0 }, - { 35, -40 }, { 0, 0 }, { 37, -40 }, { 38, -40 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 42, -40 }, { 43, -40 }, { 0, 0 }, - { 45, -40 }, { 0, 0 }, { 47, -40 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 94, 0 }, + { 0, 0 }, { 60, -11 }, { 61, -11 }, { 62, -11 }, { 63, -11 }, + { 64, -11 }, { 48, 0 }, { 49, 0 }, { 50, 0 }, { 51, 0 }, + { 52, 0 }, { 53, 0 }, { 54, 0 }, { 55, 0 }, { 56, 0 }, + { 57, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, + { 0, 34 }, { 0,5782 }, { 0, 0 }, { 0, 0 }, { 94, 0 }, { 0, 0 }, { 96, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 60, -40 }, { 61, -40 }, { 62, -40 }, { 63, -40 }, { 64, -40 }, - { 48, 0 }, { 49, 0 }, { 50, 0 }, { 51, 0 }, { 52, 0 }, - { 53, 0 }, { 54, 0 }, { 55, 0 }, { 56, 0 }, { 57, 0 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 44 }, { 0,24401 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 124, 0 }, - { 0, 0 }, { 126, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 94, -40 }, - { 0, 0 }, { 96, -40 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 36,-5515 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 124, -40 }, - { 0, 0 }, { 126, -40 }, { 48,4257 }, { 49,4257 }, { 50,4257 }, - - { 51,4257 }, { 52,4257 }, { 53,4257 }, { 54,4257 }, { 55,4257 }, - { 56,4257 }, { 57,4257 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 65,4257 }, - { 66,4257 }, { 67,4257 }, { 68,4257 }, { 69,4257 }, { 70,4257 }, - { 71,4257 }, { 72,4257 }, { 73,4257 }, { 74,4257 }, { 75,4257 }, - { 76,4257 }, { 77,4257 }, { 78,4257 }, { 79,4257 }, { 80,4257 }, - { 81,4257 }, { 82,4257 }, { 83,4257 }, { 84,4257 }, { 85,4257 }, - { 86,4257 }, { 87,4257 }, { 88,4257 }, { 89,4257 }, { 90,4257 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 95,4257 }, - { 0, 0 }, { 97,4257 }, { 98,4257 }, { 99,4257 }, { 100,4257 }, - - { 101,4257 }, { 102,4257 }, { 103,4257 }, { 104,4257 }, { 105,4257 }, - { 106,4257 }, { 107,4257 }, { 108,4257 }, { 109,4257 }, { 110,4257 }, - { 111,4257 }, { 112,4257 }, { 113,4257 }, { 114,4257 }, { 115,4257 }, - { 116,4257 }, { 117,4257 }, { 118,4257 }, { 119,4257 }, { 120,4257 }, - { 121,4257 }, { 122,4257 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 128,4257 }, { 129,4257 }, { 130,4257 }, - { 131,4257 }, { 132,4257 }, { 133,4257 }, { 134,4257 }, { 135,4257 }, - { 136,4257 }, { 137,4257 }, { 138,4257 }, { 139,4257 }, { 140,4257 }, - { 141,4257 }, { 142,4257 }, { 143,4257 }, { 144,4257 }, { 145,4257 }, - { 146,4257 }, { 147,4257 }, { 148,4257 }, { 149,4257 }, { 150,4257 }, - - { 151,4257 }, { 152,4257 }, { 153,4257 }, { 154,4257 }, { 155,4257 }, - { 156,4257 }, { 157,4257 }, { 158,4257 }, { 159,4257 }, { 160,4257 }, - { 161,4257 }, { 162,4257 }, { 163,4257 }, { 164,4257 }, { 165,4257 }, - { 166,4257 }, { 167,4257 }, { 168,4257 }, { 169,4257 }, { 170,4257 }, - { 171,4257 }, { 172,4257 }, { 173,4257 }, { 174,4257 }, { 175,4257 }, - { 176,4257 }, { 177,4257 }, { 178,4257 }, { 179,4257 }, { 180,4257 }, - { 181,4257 }, { 182,4257 }, { 183,4257 }, { 184,4257 }, { 185,4257 }, - { 186,4257 }, { 187,4257 }, { 188,4257 }, { 189,4257 }, { 190,4257 }, - { 191,4257 }, { 192,4257 }, { 193,4257 }, { 194,4257 }, { 195,4257 }, - { 196,4257 }, { 197,4257 }, { 198,4257 }, { 199,4257 }, { 200,4257 }, - - { 201,4257 }, { 202,4257 }, { 203,4257 }, { 204,4257 }, { 205,4257 }, - { 206,4257 }, { 207,4257 }, { 208,4257 }, { 209,4257 }, { 210,4257 }, - { 211,4257 }, { 212,4257 }, { 213,4257 }, { 214,4257 }, { 215,4257 }, - { 216,4257 }, { 217,4257 }, { 218,4257 }, { 219,4257 }, { 220,4257 }, - { 221,4257 }, { 222,4257 }, { 223,4257 }, { 224,4257 }, { 225,4257 }, - { 226,4257 }, { 227,4257 }, { 228,4257 }, { 229,4257 }, { 230,4257 }, - { 231,4257 }, { 232,4257 }, { 233,4257 }, { 234,4257 }, { 235,4257 }, - { 236,4257 }, { 237,4257 }, { 238,4257 }, { 239,4257 }, { 240,4257 }, - { 241,4257 }, { 242,4257 }, { 243,4257 }, { 244,4257 }, { 245,4257 }, - { 246,4257 }, { 247,4257 }, { 248,4257 }, { 249,4257 }, { 250,4257 }, - - { 251,4257 }, { 252,4257 }, { 253,4257 }, { 254,4257 }, { 255,4257 }, - { 0, 1 }, { 0,24144 }, { 1,4257 }, { 2,4257 }, { 3,4257 }, - { 4,4257 }, { 5,4257 }, { 6,4257 }, { 7,4257 }, { 8,4257 }, - { 9,4257 }, { 0, 0 }, { 11,4257 }, { 12,4257 }, { 0, 0 }, - { 14,4257 }, { 15,4257 }, { 16,4257 }, { 17,4257 }, { 18,4257 }, - { 19,4257 }, { 20,4257 }, { 21,4257 }, { 22,4257 }, { 23,4257 }, - { 24,4257 }, { 25,4257 }, { 26,4257 }, { 27,4257 }, { 28,4257 }, - { 29,4257 }, { 30,4257 }, { 31,4257 }, { 32,4257 }, { 33,4515 }, - { 34,4257 }, { 35,4515 }, { 36,4257 }, { 37,4515 }, { 38,4515 }, - { 39,4257 }, { 40,4257 }, { 41,4257 }, { 42,4515 }, { 43,4515 }, - - { 44,4257 }, { 45,4515 }, { 46,4257 }, { 47,4515 }, { 48,4257 }, - { 49,4257 }, { 50,4257 }, { 51,4257 }, { 52,4257 }, { 53,4257 }, - { 54,4257 }, { 55,4257 }, { 56,4257 }, { 57,4257 }, { 58,4257 }, - { 59,4257 }, { 60,4515 }, { 61,4515 }, { 62,4515 }, { 63,4515 }, - { 64,4515 }, { 65,4257 }, { 66,4257 }, { 67,4257 }, { 68,4257 }, - { 69,4257 }, { 70,4257 }, { 71,4257 }, { 72,4257 }, { 73,4257 }, - { 74,4257 }, { 75,4257 }, { 76,4257 }, { 77,4257 }, { 78,4257 }, - { 79,4257 }, { 80,4257 }, { 81,4257 }, { 82,4257 }, { 83,4257 }, - { 84,4257 }, { 85,4257 }, { 86,4257 }, { 87,4257 }, { 88,4257 }, - { 89,4257 }, { 90,4257 }, { 91,4257 }, { 92,4257 }, { 93,4257 }, - - { 94,4515 }, { 95,4257 }, { 96,4515 }, { 97,4257 }, { 98,4257 }, - { 99,4257 }, { 100,4257 }, { 101,4257 }, { 102,4257 }, { 103,4257 }, - { 104,4257 }, { 105,4257 }, { 106,4257 }, { 107,4257 }, { 108,4257 }, - { 109,4257 }, { 110,4257 }, { 111,4257 }, { 112,4257 }, { 113,4257 }, - { 114,4257 }, { 115,4257 }, { 116,4257 }, { 117,4257 }, { 118,4257 }, - { 119,4257 }, { 120,4257 }, { 121,4257 }, { 122,4257 }, { 123,4257 }, - { 124,4515 }, { 125,4257 }, { 126,4515 }, { 127,4257 }, { 128,4257 }, - { 129,4257 }, { 130,4257 }, { 131,4257 }, { 132,4257 }, { 133,4257 }, - { 134,4257 }, { 135,4257 }, { 136,4257 }, { 137,4257 }, { 138,4257 }, - { 139,4257 }, { 140,4257 }, { 141,4257 }, { 142,4257 }, { 143,4257 }, - - { 144,4257 }, { 145,4257 }, { 146,4257 }, { 147,4257 }, { 148,4257 }, - { 149,4257 }, { 150,4257 }, { 151,4257 }, { 152,4257 }, { 153,4257 }, - { 154,4257 }, { 155,4257 }, { 156,4257 }, { 157,4257 }, { 158,4257 }, - { 159,4257 }, { 160,4257 }, { 161,4257 }, { 162,4257 }, { 163,4257 }, - { 164,4257 }, { 165,4257 }, { 166,4257 }, { 167,4257 }, { 168,4257 }, - { 169,4257 }, { 170,4257 }, { 171,4257 }, { 172,4257 }, { 173,4257 }, - { 174,4257 }, { 175,4257 }, { 176,4257 }, { 177,4257 }, { 178,4257 }, - { 179,4257 }, { 180,4257 }, { 181,4257 }, { 182,4257 }, { 183,4257 }, - { 184,4257 }, { 185,4257 }, { 186,4257 }, { 187,4257 }, { 188,4257 }, - { 189,4257 }, { 190,4257 }, { 191,4257 }, { 192,4257 }, { 193,4257 }, - - { 194,4257 }, { 195,4257 }, { 196,4257 }, { 197,4257 }, { 198,4257 }, - { 199,4257 }, { 200,4257 }, { 201,4257 }, { 202,4257 }, { 203,4257 }, - { 204,4257 }, { 205,4257 }, { 206,4257 }, { 207,4257 }, { 208,4257 }, - { 209,4257 }, { 210,4257 }, { 211,4257 }, { 212,4257 }, { 213,4257 }, - { 214,4257 }, { 215,4257 }, { 216,4257 }, { 217,4257 }, { 218,4257 }, - { 219,4257 }, { 220,4257 }, { 221,4257 }, { 222,4257 }, { 223,4257 }, - { 224,4257 }, { 225,4257 }, { 226,4257 }, { 227,4257 }, { 228,4257 }, - { 229,4257 }, { 230,4257 }, { 231,4257 }, { 232,4257 }, { 233,4257 }, - { 234,4257 }, { 235,4257 }, { 236,4257 }, { 237,4257 }, { 238,4257 }, - { 239,4257 }, { 240,4257 }, { 241,4257 }, { 242,4257 }, { 243,4257 }, - - { 244,4257 }, { 245,4257 }, { 246,4257 }, { 247,4257 }, { 248,4257 }, - { 249,4257 }, { 250,4257 }, { 251,4257 }, { 252,4257 }, { 253,4257 }, - { 254,4257 }, { 255,4257 }, { 256,4257 }, { 0, 73 }, { 0,23886 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 2 }, { 0,23861 }, - { 0, 73 }, { 0,23859 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - + { 94, -11 }, { 0, 0 }, { 96, -11 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 48, 0 }, { 49, 0 }, { 50, 0 }, - { 51, 0 }, { 52, 0 }, { 53, 0 }, { 54, 0 }, { 55, 0 }, - { 56, 0 }, { 57, 0 }, { 33,4490 }, { 0, 0 }, { 35,4490 }, - { 0, 0 }, { 37,4490 }, { 38,4490 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 42,4490 }, { 43,4490 }, { 69, 113 }, { 45,4490 }, - { 0, 0 }, { 47,4490 }, { 46,-5624 }, { 0, 0 }, { 48,4490 }, - { 49,4490 }, { 50,4490 }, { 51,4490 }, { 52,4490 }, { 53,4490 }, - { 54,4490 }, { 55,4490 }, { 56,4490 }, { 57,4490 }, { 60,4490 }, - - { 61,4490 }, { 62,4490 }, { 63,4490 }, { 64,4490 }, { 0, 72 }, - { 0,23795 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 69, 86 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 101, 113 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, + { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 124, 0 }, + { 0, 0 }, { 126, 0 }, { 36,-5323 }, { 0, 0 }, { 0, 0 }, + { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, + { 124, -11 }, { 0, 0 }, { 126, -11 }, { 0, 0 }, { 48,3638 }, + { 49,3638 }, { 50,3638 }, { 51,3638 }, { 52,3638 }, { 53,3638 }, + { 54,3638 }, { 55,3638 }, { 56,3638 }, { 57,3638 }, { 0, 0 }, + + { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, + { 0, 0 }, { 65,3638 }, { 66,3638 }, { 67,3638 }, { 68,3638 }, + { 69,3638 }, { 70,3638 }, { 71,3638 }, { 72,3638 }, { 73,3638 }, + { 74,3638 }, { 75,3638 }, { 76,3638 }, { 77,3638 }, { 78,3638 }, + { 79,3638 }, { 80,3638 }, { 81,3638 }, { 82,3638 }, { 83,3638 }, + { 84,3638 }, { 85,3638 }, { 86,3638 }, { 87,3638 }, { 88,3638 }, + { 89,3638 }, { 90,3638 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, + { 0, 0 }, { 95,3638 }, { 0, 0 }, { 97,3638 }, { 98,3638 }, + { 99,3638 }, { 100,3638 }, { 101,3638 }, { 102,3638 }, { 103,3638 }, + { 104,3638 }, { 105,3638 }, { 106,3638 }, { 107,3638 }, { 108,3638 }, + + { 109,3638 }, { 110,3638 }, { 111,3638 }, { 112,3638 }, { 113,3638 }, + { 114,3638 }, { 115,3638 }, { 116,3638 }, { 117,3638 }, { 118,3638 }, + { 119,3638 }, { 120,3638 }, { 121,3638 }, { 122,3638 }, { 0, 0 }, + { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 128,3638 }, + { 129,3638 }, { 130,3638 }, { 131,3638 }, { 132,3638 }, { 133,3638 }, + { 134,3638 }, { 135,3638 }, { 136,3638 }, { 137,3638 }, { 138,3638 }, + { 139,3638 }, { 140,3638 }, { 141,3638 }, { 142,3638 }, { 143,3638 }, + { 144,3638 }, { 145,3638 }, { 146,3638 }, { 147,3638 }, { 148,3638 }, + { 149,3638 }, { 150,3638 }, { 151,3638 }, { 152,3638 }, { 153,3638 }, + { 154,3638 }, { 155,3638 }, { 156,3638 }, { 157,3638 }, { 158,3638 }, + + { 159,3638 }, { 160,3638 }, { 161,3638 }, { 162,3638 }, { 163,3638 }, + { 164,3638 }, { 165,3638 }, { 166,3638 }, { 167,3638 }, { 168,3638 }, + { 169,3638 }, { 170,3638 }, { 171,3638 }, { 172,3638 }, { 173,3638 }, + { 174,3638 }, { 175,3638 }, { 176,3638 }, { 177,3638 }, { 178,3638 }, + { 179,3638 }, { 180,3638 }, { 181,3638 }, { 182,3638 }, { 183,3638 }, + { 184,3638 }, { 185,3638 }, { 186,3638 }, { 187,3638 }, { 188,3638 }, + { 189,3638 }, { 190,3638 }, { 191,3638 }, { 192,3638 }, { 193,3638 }, + { 194,3638 }, { 195,3638 }, { 196,3638 }, { 197,3638 }, { 198,3638 }, + { 199,3638 }, { 200,3638 }, { 201,3638 }, { 202,3638 }, { 203,3638 }, + { 204,3638 }, { 205,3638 }, { 206,3638 }, { 207,3638 }, { 208,3638 }, + + { 209,3638 }, { 210,3638 }, { 211,3638 }, { 212,3638 }, { 213,3638 }, + { 214,3638 }, { 215,3638 }, { 216,3638 }, { 217,3638 }, { 218,3638 }, + { 219,3638 }, { 220,3638 }, { 221,3638 }, { 222,3638 }, { 223,3638 }, + { 224,3638 }, { 225,3638 }, { 226,3638 }, { 227,3638 }, { 228,3638 }, + { 229,3638 }, { 230,3638 }, { 231,3638 }, { 232,3638 }, { 233,3638 }, + { 234,3638 }, { 235,3638 }, { 236,3638 }, { 237,3638 }, { 238,3638 }, + { 239,3638 }, { 240,3638 }, { 241,3638 }, { 242,3638 }, { 243,3638 }, + { 244,3638 }, { 245,3638 }, { 246,3638 }, { 247,3638 }, { 248,3638 }, + { 249,3638 }, { 250,3638 }, { 251,3638 }, { 252,3638 }, { 253,3638 }, + { 254,3638 }, { 255,3638 }, { 0, 2 }, { 0,5525 }, { 1,3638 }, + + { 2,3638 }, { 3,3638 }, { 4,3638 }, { 5,3638 }, { 6,3638 }, + { 7,3638 }, { 8,3638 }, { 9,3638 }, { 0, 0 }, { 11,3638 }, + { 12,3638 }, { 0, 0 }, { 14,3638 }, { 15,3638 }, { 16,3638 }, + { 17,3638 }, { 18,3638 }, { 19,3638 }, { 20,3638 }, { 21,3638 }, + { 22,3638 }, { 23,3638 }, { 24,3638 }, { 25,3638 }, { 26,3638 }, + { 27,3638 }, { 28,3638 }, { 29,3638 }, { 30,3638 }, { 31,3638 }, + { 32,3638 }, { 33,3896 }, { 34,3638 }, { 35,3896 }, { 36,3638 }, + { 37,3896 }, { 38,3896 }, { 39,3638 }, { 40,3638 }, { 41,3638 }, + { 42,3896 }, { 43,3896 }, { 44,3638 }, { 45,3896 }, { 46,3638 }, + { 47,3896 }, { 48,3638 }, { 49,3638 }, { 50,3638 }, { 51,3638 }, + + { 52,3638 }, { 53,3638 }, { 54,3638 }, { 55,3638 }, { 56,3638 }, + { 57,3638 }, { 58,3638 }, { 59,3638 }, { 60,3896 }, { 61,3896 }, + { 62,3896 }, { 63,3896 }, { 64,3896 }, { 65,3638 }, { 66,3638 }, + { 67,3638 }, { 68,3638 }, { 69,3638 }, { 70,3638 }, { 71,3638 }, + { 72,3638 }, { 73,3638 }, { 74,3638 }, { 75,3638 }, { 76,3638 }, + { 77,3638 }, { 78,3638 }, { 79,3638 }, { 80,3638 }, { 81,3638 }, + { 82,3638 }, { 83,3638 }, { 84,3638 }, { 85,3638 }, { 86,3638 }, + { 87,3638 }, { 88,3638 }, { 89,3638 }, { 90,3638 }, { 91,3638 }, + { 92,3638 }, { 93,3638 }, { 94,3896 }, { 95,3638 }, { 96,3896 }, + { 97,3638 }, { 98,3638 }, { 99,3638 }, { 100,3638 }, { 101,3638 }, + + { 102,3638 }, { 103,3638 }, { 104,3638 }, { 105,3638 }, { 106,3638 }, + { 107,3638 }, { 108,3638 }, { 109,3638 }, { 110,3638 }, { 111,3638 }, + { 112,3638 }, { 113,3638 }, { 114,3638 }, { 115,3638 }, { 116,3638 }, + { 117,3638 }, { 118,3638 }, { 119,3638 }, { 120,3638 }, { 121,3638 }, + { 122,3638 }, { 123,3638 }, { 124,3896 }, { 125,3638 }, { 126,3896 }, + { 127,3638 }, { 128,3638 }, { 129,3638 }, { 130,3638 }, { 131,3638 }, + { 132,3638 }, { 133,3638 }, { 134,3638 }, { 135,3638 }, { 136,3638 }, + { 137,3638 }, { 138,3638 }, { 139,3638 }, { 140,3638 }, { 141,3638 }, + { 142,3638 }, { 143,3638 }, { 144,3638 }, { 145,3638 }, { 146,3638 }, + { 147,3638 }, { 148,3638 }, { 149,3638 }, { 150,3638 }, { 151,3638 }, + + { 152,3638 }, { 153,3638 }, { 154,3638 }, { 155,3638 }, { 156,3638 }, + { 157,3638 }, { 158,3638 }, { 159,3638 }, { 160,3638 }, { 161,3638 }, + { 162,3638 }, { 163,3638 }, { 164,3638 }, { 165,3638 }, { 166,3638 }, + { 167,3638 }, { 168,3638 }, { 169,3638 }, { 170,3638 }, { 171,3638 }, + { 172,3638 }, { 173,3638 }, { 174,3638 }, { 175,3638 }, { 176,3638 }, + { 177,3638 }, { 178,3638 }, { 179,3638 }, { 180,3638 }, { 181,3638 }, + { 182,3638 }, { 183,3638 }, { 184,3638 }, { 185,3638 }, { 186,3638 }, + { 187,3638 }, { 188,3638 }, { 189,3638 }, { 190,3638 }, { 191,3638 }, + { 192,3638 }, { 193,3638 }, { 194,3638 }, { 195,3638 }, { 196,3638 }, + { 197,3638 }, { 198,3638 }, { 199,3638 }, { 200,3638 }, { 201,3638 }, + + { 202,3638 }, { 203,3638 }, { 204,3638 }, { 205,3638 }, { 206,3638 }, + { 207,3638 }, { 208,3638 }, { 209,3638 }, { 210,3638 }, { 211,3638 }, + { 212,3638 }, { 213,3638 }, { 214,3638 }, { 215,3638 }, { 216,3638 }, + { 217,3638 }, { 218,3638 }, { 219,3638 }, { 220,3638 }, { 221,3638 }, + { 222,3638 }, { 223,3638 }, { 224,3638 }, { 225,3638 }, { 226,3638 }, + { 227,3638 }, { 228,3638 }, { 229,3638 }, { 230,3638 }, { 231,3638 }, + { 232,3638 }, { 233,3638 }, { 234,3638 }, { 235,3638 }, { 236,3638 }, + { 237,3638 }, { 238,3638 }, { 239,3638 }, { 240,3638 }, { 241,3638 }, + { 242,3638 }, { 243,3638 }, { 244,3638 }, { 245,3638 }, { 246,3638 }, + { 247,3638 }, { 248,3638 }, { 249,3638 }, { 250,3638 }, { 251,3638 }, + + { 252,3638 }, { 253,3638 }, { 254,3638 }, { 255,3638 }, { 256,3638 }, + { 0, 59 }, { 0,5267 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, + { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, + { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, + { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, + { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, + { 0, 3 }, { 0,5242 }, { 0, 59 }, { 0,5240 }, { 0, 0 }, + { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 0, 76 }, { 0,23773 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 94,4490 }, { 0, 0 }, - { 96,4490 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 101, 86 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 46, -64 }, { 0, 0 }, { 48, 0 }, { 49, 0 }, - { 50, 0 }, { 51, 0 }, { 52, 0 }, { 53, 0 }, { 54, 0 }, - { 55, 0 }, { 56, 0 }, { 57, 0 }, { 124,4490 }, { 0, 0 }, - { 126,4490 }, { 0, 65 }, { 0,23733 }, { 0, 0 }, { 0, 0 }, - { 43,4426 }, { 0, 0 }, { 45,4426 }, { 0, 0 }, { 69, 22 }, - { 48,4468 }, { 49,4468 }, { 50,4468 }, { 51,4468 }, { 52,4468 }, - { 53,4468 }, { 54,4468 }, { 55,4468 }, { 56,4468 }, { 57,4468 }, + { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 48, 0 }, + { 49, 0 }, { 50, 0 }, { 51, 0 }, { 52, 0 }, { 53, 0 }, + { 54, 0 }, { 55, 0 }, { 56, 0 }, { 57, 0 }, { 33,3871 }, + { 0, 0 }, { 35,3871 }, { 0, 0 }, { 37,3871 }, { 38,3871 }, + { 0, 0 }, { 0, 0 }, { 0, 0 }, { 42,3871 }, { 43,3871 }, + { 69, 113 }, { 45,3871 }, { 0, 0 }, { 47,3871 }, { 46,-5589 }, + { 0, 0 }, { 48,3871 }, { 49,3871 }, { 50,3871 }, { 51,3871 }, + { 52,3871 }, { 53,3871 }, { 54,3871 }, { 55,3871 }, { 56,3871 }, + { 57,3871 }, { 60,3871 }, { 61,3871 }, { 62,3871 }, { 63,3871 }, + { 64,3871 }, { 0, 58 }, { 0,5176 }, { 0, 0 }, { 0, 0 }, + + { 0, 0 }, { 0, 0 }, { 69, 86 }, { 0, 0 }, { 0, 0 }, + { 0, 0 }, { 0, 0 }, { 101, 113 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, + { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 62 }, { 0,5154 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, + { 94,3871 }, { 0, 0 }, { 96,3871 }, { 0, 0 }, { 0, 0 }, + { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 101, 86 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, + { 0, 0 }, { 0, 0 }, { 0, 0 }, { 46, -64 }, { 0, 0 }, + { 48, 0 }, { 49, 0 }, { 50, 0 }, { 51, 0 }, { 52, 0 }, - { 33,-787 }, { 0, 0 }, { 35,-787 }, { 0, 0 }, { 37,-787 }, - { 38,-787 }, { 101, 22 }, { 0, 67 }, { 0,23692 }, { 42,-787 }, - { 43,-787 }, { 0, 0 }, { 45,-787 }, { 0, 0 }, { 47,-787 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, + { 53, 0 }, { 54, 0 }, { 55, 0 }, { 56, 0 }, { 57, 0 }, + { 124,3871 }, { 0, 0 }, { 126,3871 }, { 0, 51 }, { 0,5114 }, + { 0, 0 }, { 0, 0 }, { 43,3807 }, { 0, 0 }, { 45,3807 }, + { 0, 0 }, { 69, 22 }, { 48,3849 }, { 49,3849 }, { 50,3849 }, + { 51,3849 }, { 52,3849 }, { 53,3849 }, { 54,3849 }, { 55,3849 }, + { 56,3849 }, { 57,3849 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 60,-787 }, { 61,-787 }, { 62,-787 }, - { 63,-787 }, { 64,-787 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 33,-828 }, { 0, 0 }, { 35,-828 }, { 0, 0 }, - { 37,-828 }, { 38,-828 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, + { 0, 0 }, { 0, 0 }, { 33,-759 }, { 0, 0 }, { 35,-759 }, + { 0, 0 }, { 37,-759 }, { 38,-759 }, { 101, 22 }, { 0, 53 }, - { 42,-828 }, { 43,-828 }, { 0, 0 }, { 45,-828 }, { 0, 0 }, - { 47,-828 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 94,-787 }, { 0, 0 }, { 96,-787 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 60,-828 }, { 61,-828 }, - { 62,-828 }, { 63,-828 }, { 64,-828 }, { 0, 0 }, { 0, 64 }, - { 0,23625 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, + { 0,5073 }, { 42,-759 }, { 43,-759 }, { 0, 0 }, { 45,-759 }, + { 0, 0 }, { 47,-759 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 0, 66 }, { 0,23614 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 124,-787 }, { 0, 0 }, { 126,-787 }, { 0, 0 }, + { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 60,-759 }, + { 61,-759 }, { 62,-759 }, { 63,-759 }, { 64,-759 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, + { 0, 0 }, { 0, 0 }, { 0, 0 }, { 33,-800 }, { 0, 0 }, + { 35,-800 }, { 0, 0 }, { 37,-800 }, { 38,-800 }, { 0, 0 }, + { 0, 0 }, { 0, 0 }, { 42,-800 }, { 43,-800 }, { 0, 0 }, + { 45,-800 }, { 0, 0 }, { 47,-800 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 94,-828 }, { 0, 0 }, { 96,-828 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 33,-895 }, { 0, 0 }, - { 35,-895 }, { 0, 0 }, { 37,-895 }, { 38,-895 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 42,-895 }, { 43,-895 }, { 33,-906 }, - { 45,-895 }, { 35,-906 }, { 47,-895 }, { 37,-906 }, { 38,-906 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 42,-906 }, { 43,-906 }, - { 0, 0 }, { 45,-906 }, { 124,-828 }, { 47,-906 }, { 126,-828 }, - { 60,-895 }, { 61,-895 }, { 62,-895 }, { 63,-895 }, { 64,-895 }, + { 0, 0 }, { 0, 0 }, { 0, 0 }, { 94,-759 }, { 0, 0 }, + { 96,-759 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, + { 60,-800 }, { 61,-800 }, { 62,-800 }, { 63,-800 }, { 64,-800 }, + { 0, 0 }, { 0, 50 }, { 0,5006 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 60,-906 }, { 61,-906 }, { 62,-906 }, { 63,-906 }, + { 0, 0 }, { 0, 0 }, { 0, 52 }, { 0,4995 }, { 0, 0 }, + { 0, 0 }, { 0, 0 }, { 0, 0 }, { 124,-759 }, { 0, 0 }, + { 126,-759 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, + { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 94,-800 }, + { 0, 0 }, { 96,-800 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 64,-906 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, + { 33,-867 }, { 0, 0 }, { 35,-867 }, { 0, 0 }, { 37,-867 }, + { 38,-867 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 42,-867 }, + { 43,-867 }, { 33,-878 }, { 45,-867 }, { 35,-878 }, { 47,-867 }, + { 37,-878 }, { 38,-878 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, + { 42,-878 }, { 43,-878 }, { 0, 0 }, { 45,-878 }, { 124,-800 }, + { 47,-878 }, { 126,-800 }, { 60,-867 }, { 61,-867 }, { 62,-867 }, + { 63,-867 }, { 64,-867 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, + { 0, 0 }, { 0, 0 }, { 0, 0 }, { 60,-878 }, { 61,-878 }, + { 62,-878 }, { 63,-878 }, { 64,-878 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, + { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 0, 78 }, { 0,23534 }, { 0, 0 }, { 0, 0 }, { 94,-895 }, - { 0, 0 }, { 96,-895 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, + { 0, 0 }, { 0, 0 }, { 0, 64 }, { 0,4915 }, { 0, 0 }, + { 0, 0 }, { 94,-867 }, { 0, 0 }, { 96,-867 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 94,-906 }, { 0, 0 }, { 96,-906 }, { 0, 0 }, { 0, 0 }, + { 0, 0 }, { 0, 0 }, { 94,-878 }, { 0, 0 }, { 96,-878 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 124,-895 }, - - { 0, 0 }, { 126,-895 }, { 36, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 124,-906 }, { 0, 0 }, { 126,-906 }, { 0, 0 }, { 48, 0 }, - { 49, 0 }, { 50, 0 }, { 51, 0 }, { 52, 0 }, { 53, 0 }, - { 54, 0 }, { 55, 0 }, { 56, 0 }, { 57, 0 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 63,-6357 }, - { 0, 0 }, { 65, 0 }, { 66, 0 }, { 67, 0 }, { 68, 0 }, - { 69, 0 }, { 70, 0 }, { 71, 0 }, { 72, 0 }, { 73, 0 }, - { 74, 0 }, { 75, 0 }, { 76, 0 }, { 77, 0 }, { 78, 0 }, - { 79, 0 }, { 80, 0 }, { 81, 0 }, { 82, 0 }, { 83, 0 }, - - { 84, 0 }, { 85, 0 }, { 86, 0 }, { 87, 0 }, { 88, 0 }, - { 89, 0 }, { 90, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 95, 0 }, { 0, 0 }, { 97, 0 }, { 98, 0 }, - { 99, 0 }, { 100, 0 }, { 101, 0 }, { 102, 0 }, { 103, 0 }, - { 104, 0 }, { 105, 0 }, { 106, 0 }, { 107, 0 }, { 108, 0 }, - { 109, 0 }, { 110, 0 }, { 111, 0 }, { 112, 0 }, { 113, 0 }, - { 114, 0 }, { 115, 0 }, { 116, 0 }, { 117, 0 }, { 118, 0 }, - { 119, 0 }, { 120, 0 }, { 121, 0 }, { 122, 0 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 128, 0 }, - { 129, 0 }, { 130, 0 }, { 131, 0 }, { 132, 0 }, { 133, 0 }, - - { 134, 0 }, { 135, 0 }, { 136, 0 }, { 137, 0 }, { 138, 0 }, - { 139, 0 }, { 140, 0 }, { 141, 0 }, { 142, 0 }, { 143, 0 }, - { 144, 0 }, { 145, 0 }, { 146, 0 }, { 147, 0 }, { 148, 0 }, - { 149, 0 }, { 150, 0 }, { 151, 0 }, { 152, 0 }, { 153, 0 }, - { 154, 0 }, { 155, 0 }, { 156, 0 }, { 157, 0 }, { 158, 0 }, - { 159, 0 }, { 160, 0 }, { 161, 0 }, { 162, 0 }, { 163, 0 }, - { 164, 0 }, { 165, 0 }, { 166, 0 }, { 167, 0 }, { 168, 0 }, - { 169, 0 }, { 170, 0 }, { 171, 0 }, { 172, 0 }, { 173, 0 }, - { 174, 0 }, { 175, 0 }, { 176, 0 }, { 177, 0 }, { 178, 0 }, - { 179, 0 }, { 180, 0 }, { 181, 0 }, { 182, 0 }, { 183, 0 }, - - { 184, 0 }, { 185, 0 }, { 186, 0 }, { 187, 0 }, { 188, 0 }, - { 189, 0 }, { 190, 0 }, { 191, 0 }, { 192, 0 }, { 193, 0 }, - { 194, 0 }, { 195, 0 }, { 196, 0 }, { 197, 0 }, { 198, 0 }, - { 199, 0 }, { 200, 0 }, { 201, 0 }, { 202, 0 }, { 203, 0 }, - { 204, 0 }, { 205, 0 }, { 206, 0 }, { 207, 0 }, { 208, 0 }, - { 209, 0 }, { 210, 0 }, { 211, 0 }, { 212, 0 }, { 213, 0 }, - { 214, 0 }, { 215, 0 }, { 216, 0 }, { 217, 0 }, { 218, 0 }, - { 219, 0 }, { 220, 0 }, { 221, 0 }, { 222, 0 }, { 223, 0 }, - { 224, 0 }, { 225, 0 }, { 226, 0 }, { 227, 0 }, { 228, 0 }, - { 229, 0 }, { 230, 0 }, { 231, 0 }, { 232, 0 }, { 233, 0 }, - - { 234, 0 }, { 235, 0 }, { 236, 0 }, { 237, 0 }, { 238, 0 }, - { 239, 0 }, { 240, 0 }, { 241, 0 }, { 242, 0 }, { 243, 0 }, - { 244, 0 }, { 245, 0 }, { 246, 0 }, { 247, 0 }, { 248, 0 }, - { 249, 0 }, { 250, 0 }, { 251, 0 }, { 252, 0 }, { 253, 0 }, - { 254, 0 }, { 255, 0 }, { 0, 12 }, { 0,23277 }, { 1, 0 }, - { 2, 0 }, { 3, 0 }, { 4, 0 }, { 5, 0 }, { 6, 0 }, - { 7, 0 }, { 8, 0 }, { 9, 0 }, { 10, 0 }, { 11, 0 }, - { 12, 0 }, { 13, 0 }, { 14, 0 }, { 15, 0 }, { 16, 0 }, - { 17, 0 }, { 18, 0 }, { 19, 0 }, { 20, 0 }, { 21, 0 }, - { 22, 0 }, { 23, 0 }, { 24, 0 }, { 25, 0 }, { 26, 0 }, + { 0, 0 }, { 124,-867 }, { 0, 0 }, { 126,-867 }, { 36, 0 }, + { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 27, 0 }, { 28, 0 }, { 29, 0 }, { 30, 0 }, { 31, 0 }, - { 32, 0 }, { 33, 0 }, { 34, 0 }, { 35, 0 }, { 36, 0 }, - { 37, 0 }, { 38, 0 }, { 0, 0 }, { 40, 0 }, { 41, 0 }, - { 42, 0 }, { 43, 0 }, { 44, 0 }, { 45, 0 }, { 46, 0 }, - { 47, 0 }, { 48, 0 }, { 49, 0 }, { 50, 0 }, { 51, 0 }, + { 0, 0 }, { 0, 0 }, { 124,-878 }, { 0, 0 }, { 126,-878 }, + { 0, 0 }, { 48, 0 }, { 49, 0 }, { 50, 0 }, { 51, 0 }, { 52, 0 }, { 53, 0 }, { 54, 0 }, { 55, 0 }, { 56, 0 }, - { 57, 0 }, { 58, 0 }, { 59, 0 }, { 60, 0 }, { 61, 0 }, - { 62, 0 }, { 63, 0 }, { 64, 0 }, { 65, 0 }, { 66, 0 }, + { 57, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, + { 0, 0 }, { 63,-6165 }, { 0, 0 }, { 65, 0 }, { 66, 0 }, { 67, 0 }, { 68, 0 }, { 69, 0 }, { 70, 0 }, { 71, 0 }, { 72, 0 }, { 73, 0 }, { 74, 0 }, { 75, 0 }, { 76, 0 }, - { 77, 0 }, { 78, 0 }, { 79, 0 }, { 80, 0 }, { 81, 0 }, { 82, 0 }, { 83, 0 }, { 84, 0 }, { 85, 0 }, { 86, 0 }, - { 87, 0 }, { 88, 0 }, { 89, 0 }, { 90, 0 }, { 91, 0 }, - { 92, 0 }, { 93, 0 }, { 94, 0 }, { 95, 0 }, { 96, 0 }, + { 87, 0 }, { 88, 0 }, { 89, 0 }, { 90, 0 }, { 0, 0 }, + + { 0, 0 }, { 0, 0 }, { 0, 0 }, { 95, 0 }, { 0, 0 }, { 97, 0 }, { 98, 0 }, { 99, 0 }, { 100, 0 }, { 101, 0 }, { 102, 0 }, { 103, 0 }, { 104, 0 }, { 105, 0 }, { 106, 0 }, { 107, 0 }, { 108, 0 }, { 109, 0 }, { 110, 0 }, { 111, 0 }, { 112, 0 }, { 113, 0 }, { 114, 0 }, { 115, 0 }, { 116, 0 }, { 117, 0 }, { 118, 0 }, { 119, 0 }, { 120, 0 }, { 121, 0 }, - { 122, 0 }, { 123, 0 }, { 124, 0 }, { 125, 0 }, { 126, 0 }, - - { 127, 0 }, { 128, 0 }, { 129, 0 }, { 130, 0 }, { 131, 0 }, + { 122, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, + { 0, 0 }, { 128, 0 }, { 129, 0 }, { 130, 0 }, { 131, 0 }, { 132, 0 }, { 133, 0 }, { 134, 0 }, { 135, 0 }, { 136, 0 }, { 137, 0 }, { 138, 0 }, { 139, 0 }, { 140, 0 }, { 141, 0 }, + { 142, 0 }, { 143, 0 }, { 144, 0 }, { 145, 0 }, { 146, 0 }, { 147, 0 }, { 148, 0 }, { 149, 0 }, { 150, 0 }, { 151, 0 }, { 152, 0 }, { 153, 0 }, { 154, 0 }, { 155, 0 }, { 156, 0 }, @@ -3451,10 +3238,10 @@ static yyconst struct yy_trans_info yy_transition[37005] = { 162, 0 }, { 163, 0 }, { 164, 0 }, { 165, 0 }, { 166, 0 }, { 167, 0 }, { 168, 0 }, { 169, 0 }, { 170, 0 }, { 171, 0 }, { 172, 0 }, { 173, 0 }, { 174, 0 }, { 175, 0 }, { 176, 0 }, - { 177, 0 }, { 178, 0 }, { 179, 0 }, { 180, 0 }, { 181, 0 }, { 182, 0 }, { 183, 0 }, { 184, 0 }, { 185, 0 }, { 186, 0 }, { 187, 0 }, { 188, 0 }, { 189, 0 }, { 190, 0 }, { 191, 0 }, + { 192, 0 }, { 193, 0 }, { 194, 0 }, { 195, 0 }, { 196, 0 }, { 197, 0 }, { 198, 0 }, { 199, 0 }, { 200, 0 }, { 201, 0 }, { 202, 0 }, { 203, 0 }, { 204, 0 }, { 205, 0 }, { 206, 0 }, @@ -3462,31 +3249,76 @@ static yyconst struct yy_trans_info yy_transition[37005] = { 212, 0 }, { 213, 0 }, { 214, 0 }, { 215, 0 }, { 216, 0 }, { 217, 0 }, { 218, 0 }, { 219, 0 }, { 220, 0 }, { 221, 0 }, { 222, 0 }, { 223, 0 }, { 224, 0 }, { 225, 0 }, { 226, 0 }, - { 227, 0 }, { 228, 0 }, { 229, 0 }, { 230, 0 }, { 231, 0 }, { 232, 0 }, { 233, 0 }, { 234, 0 }, { 235, 0 }, { 236, 0 }, { 237, 0 }, { 238, 0 }, { 239, 0 }, { 240, 0 }, { 241, 0 }, + { 242, 0 }, { 243, 0 }, { 244, 0 }, { 245, 0 }, { 246, 0 }, { 247, 0 }, { 248, 0 }, { 249, 0 }, { 250, 0 }, { 251, 0 }, - { 252, 0 }, { 253, 0 }, { 254, 0 }, { 255, 0 }, { 256, 0 }, - { 0, 9 }, { 0,23019 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 0, 9 }, { 0,23014 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 9, 0 }, { 10, 5 }, { 0, 0 }, { 12, 0 }, { 13, 5 }, - { 9,3741 }, { 10,3741 }, { 0, 0 }, { 12,3741 }, { 13,3741 }, + { 252, 0 }, { 253, 0 }, { 254, 0 }, { 255, 0 }, { 0, 11 }, + { 0,4658 }, { 1, 0 }, { 2, 0 }, { 3, 0 }, { 4, 0 }, + { 5, 0 }, { 6, 0 }, { 7, 0 }, { 8, 0 }, { 9, 0 }, + { 10, 0 }, { 11, 0 }, { 12, 0 }, { 13, 0 }, { 14, 0 }, + { 15, 0 }, { 16, 0 }, { 17, 0 }, { 18, 0 }, { 19, 0 }, + { 20, 0 }, { 21, 0 }, { 22, 0 }, { 23, 0 }, { 24, 0 }, + { 25, 0 }, { 26, 0 }, { 27, 0 }, { 28, 0 }, { 29, 0 }, + { 30, 0 }, { 31, 0 }, { 32, 0 }, { 33, 0 }, { 34, 0 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 32, 0 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 32,3741 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 39,-6463 }, { 45,-6627 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 45,-6461 }, { 0, 5 }, { 0,22967 }, { 1, 0 }, + { 35, 0 }, { 36, 0 }, { 37, 0 }, { 38, 0 }, { 0, 0 }, + { 40, 0 }, { 41, 0 }, { 42, 0 }, { 43, 0 }, { 44, 0 }, + { 45, 0 }, { 46, 0 }, { 47, 0 }, { 48, 0 }, { 49, 0 }, + { 50, 0 }, { 51, 0 }, { 52, 0 }, { 53, 0 }, { 54, 0 }, + { 55, 0 }, { 56, 0 }, { 57, 0 }, { 58, 0 }, { 59, 0 }, + { 60, 0 }, { 61, 0 }, { 62, 0 }, { 63, 0 }, { 64, 0 }, + { 65, 0 }, { 66, 0 }, { 67, 0 }, { 68, 0 }, { 69, 0 }, + { 70, 0 }, { 71, 0 }, { 72, 0 }, { 73, 0 }, { 74, 0 }, + { 75, 0 }, { 76, 0 }, { 77, 0 }, { 78, 0 }, { 79, 0 }, + { 80, 0 }, { 81, 0 }, { 82, 0 }, { 83, 0 }, { 84, 0 }, + + { 85, 0 }, { 86, 0 }, { 87, 0 }, { 88, 0 }, { 89, 0 }, + { 90, 0 }, { 91, 0 }, { 92, 0 }, { 93, 0 }, { 94, 0 }, + { 95, 0 }, { 96, 0 }, { 97, 0 }, { 98, 0 }, { 99, 0 }, + { 100, 0 }, { 101, 0 }, { 102, 0 }, { 103, 0 }, { 104, 0 }, + { 105, 0 }, { 106, 0 }, { 107, 0 }, { 108, 0 }, { 109, 0 }, + { 110, 0 }, { 111, 0 }, { 112, 0 }, { 113, 0 }, { 114, 0 }, + { 115, 0 }, { 116, 0 }, { 117, 0 }, { 118, 0 }, { 119, 0 }, + { 120, 0 }, { 121, 0 }, { 122, 0 }, { 123, 0 }, { 124, 0 }, + { 125, 0 }, { 126, 0 }, { 127, 0 }, { 128, 0 }, { 129, 0 }, + { 130, 0 }, { 131, 0 }, { 132, 0 }, { 133, 0 }, { 134, 0 }, + + { 135, 0 }, { 136, 0 }, { 137, 0 }, { 138, 0 }, { 139, 0 }, + { 140, 0 }, { 141, 0 }, { 142, 0 }, { 143, 0 }, { 144, 0 }, + { 145, 0 }, { 146, 0 }, { 147, 0 }, { 148, 0 }, { 149, 0 }, + { 150, 0 }, { 151, 0 }, { 152, 0 }, { 153, 0 }, { 154, 0 }, + { 155, 0 }, { 156, 0 }, { 157, 0 }, { 158, 0 }, { 159, 0 }, + { 160, 0 }, { 161, 0 }, { 162, 0 }, { 163, 0 }, { 164, 0 }, + { 165, 0 }, { 166, 0 }, { 167, 0 }, { 168, 0 }, { 169, 0 }, + { 170, 0 }, { 171, 0 }, { 172, 0 }, { 173, 0 }, { 174, 0 }, + { 175, 0 }, { 176, 0 }, { 177, 0 }, { 178, 0 }, { 179, 0 }, + { 180, 0 }, { 181, 0 }, { 182, 0 }, { 183, 0 }, { 184, 0 }, + + { 185, 0 }, { 186, 0 }, { 187, 0 }, { 188, 0 }, { 189, 0 }, + { 190, 0 }, { 191, 0 }, { 192, 0 }, { 193, 0 }, { 194, 0 }, + { 195, 0 }, { 196, 0 }, { 197, 0 }, { 198, 0 }, { 199, 0 }, + { 200, 0 }, { 201, 0 }, { 202, 0 }, { 203, 0 }, { 204, 0 }, + { 205, 0 }, { 206, 0 }, { 207, 0 }, { 208, 0 }, { 209, 0 }, + { 210, 0 }, { 211, 0 }, { 212, 0 }, { 213, 0 }, { 214, 0 }, + { 215, 0 }, { 216, 0 }, { 217, 0 }, { 218, 0 }, { 219, 0 }, + { 220, 0 }, { 221, 0 }, { 222, 0 }, { 223, 0 }, { 224, 0 }, + { 225, 0 }, { 226, 0 }, { 227, 0 }, { 228, 0 }, { 229, 0 }, + { 230, 0 }, { 231, 0 }, { 232, 0 }, { 233, 0 }, { 234, 0 }, + + { 235, 0 }, { 236, 0 }, { 237, 0 }, { 238, 0 }, { 239, 0 }, + { 240, 0 }, { 241, 0 }, { 242, 0 }, { 243, 0 }, { 244, 0 }, + { 245, 0 }, { 246, 0 }, { 247, 0 }, { 248, 0 }, { 249, 0 }, + { 250, 0 }, { 251, 0 }, { 252, 0 }, { 253, 0 }, { 254, 0 }, + { 255, 0 }, { 256, 0 }, { 0, 6 }, { 0,4400 }, { 1, 0 }, { 2, 0 }, { 3, 0 }, { 4, 0 }, { 5, 0 }, { 6, 0 }, { 7, 0 }, { 8, 0 }, { 9, 0 }, { 10, 0 }, { 11, 0 }, { 12, 0 }, { 13, 0 }, { 14, 0 }, { 15, 0 }, { 16, 0 }, - { 17, 0 }, { 18, 0 }, { 19, 0 }, { 20, 0 }, { 21, 0 }, { 22, 0 }, { 23, 0 }, { 24, 0 }, { 25, 0 }, { 26, 0 }, + { 27, 0 }, { 28, 0 }, { 29, 0 }, { 30, 0 }, { 31, 0 }, { 32, 0 }, { 33, 0 }, { 34, 0 }, { 35, 0 }, { 36, 0 }, { 37, 0 }, { 38, 0 }, { 39, 0 }, { 40, 0 }, { 41, 0 }, @@ -3495,9 +3327,9 @@ static yyconst struct yy_trans_info yy_transition[37005] = { 52, 0 }, { 53, 0 }, { 54, 0 }, { 55, 0 }, { 56, 0 }, { 57, 0 }, { 58, 0 }, { 59, 0 }, { 60, 0 }, { 61, 0 }, { 62, 0 }, { 63, 0 }, { 64, 0 }, { 65, 0 }, { 66, 0 }, - { 67, 0 }, { 68, 0 }, { 69, 0 }, { 70, 0 }, { 71, 0 }, { 72, 0 }, { 73, 0 }, { 74, 0 }, { 75, 0 }, { 76, 0 }, + { 77, 0 }, { 78, 0 }, { 79, 0 }, { 80, 0 }, { 81, 0 }, { 82, 0 }, { 83, 0 }, { 84, 0 }, { 85, 0 }, { 86, 0 }, { 87, 0 }, { 88, 0 }, { 89, 0 }, { 90, 0 }, { 91, 0 }, @@ -3506,9 +3338,9 @@ static yyconst struct yy_trans_info yy_transition[37005] = { 102, 0 }, { 103, 0 }, { 104, 0 }, { 105, 0 }, { 106, 0 }, { 107, 0 }, { 108, 0 }, { 109, 0 }, { 110, 0 }, { 111, 0 }, { 112, 0 }, { 113, 0 }, { 114, 0 }, { 115, 0 }, { 116, 0 }, - { 117, 0 }, { 118, 0 }, { 119, 0 }, { 120, 0 }, { 121, 0 }, { 122, 0 }, { 123, 0 }, { 124, 0 }, { 125, 0 }, { 126, 0 }, + { 127, 0 }, { 128, 0 }, { 129, 0 }, { 130, 0 }, { 131, 0 }, { 132, 0 }, { 133, 0 }, { 134, 0 }, { 135, 0 }, { 136, 0 }, { 137, 0 }, { 138, 0 }, { 139, 0 }, { 140, 0 }, { 141, 0 }, @@ -3517,9 +3349,9 @@ static yyconst struct yy_trans_info yy_transition[37005] = { 152, 0 }, { 153, 0 }, { 154, 0 }, { 155, 0 }, { 156, 0 }, { 157, 0 }, { 158, 0 }, { 159, 0 }, { 160, 0 }, { 161, 0 }, { 162, 0 }, { 163, 0 }, { 164, 0 }, { 165, 0 }, { 166, 0 }, - { 167, 0 }, { 168, 0 }, { 169, 0 }, { 170, 0 }, { 171, 0 }, { 172, 0 }, { 173, 0 }, { 174, 0 }, { 175, 0 }, { 176, 0 }, + { 177, 0 }, { 178, 0 }, { 179, 0 }, { 180, 0 }, { 181, 0 }, { 182, 0 }, { 183, 0 }, { 184, 0 }, { 185, 0 }, { 186, 0 }, { 187, 0 }, { 188, 0 }, { 189, 0 }, { 190, 0 }, { 191, 0 }, @@ -3528,53 +3360,53 @@ static yyconst struct yy_trans_info yy_transition[37005] = { 202, 0 }, { 203, 0 }, { 204, 0 }, { 205, 0 }, { 206, 0 }, { 207, 0 }, { 208, 0 }, { 209, 0 }, { 210, 0 }, { 211, 0 }, { 212, 0 }, { 213, 0 }, { 214, 0 }, { 215, 0 }, { 216, 0 }, - { 217, 0 }, { 218, 0 }, { 219, 0 }, { 220, 0 }, { 221, 0 }, { 222, 0 }, { 223, 0 }, { 224, 0 }, { 225, 0 }, { 226, 0 }, + { 227, 0 }, { 228, 0 }, { 229, 0 }, { 230, 0 }, { 231, 0 }, { 232, 0 }, { 233, 0 }, { 234, 0 }, { 235, 0 }, { 236, 0 }, { 237, 0 }, { 238, 0 }, { 239, 0 }, { 240, 0 }, { 241, 0 }, { 242, 0 }, { 243, 0 }, { 244, 0 }, { 245, 0 }, { 246, 0 }, { 247, 0 }, { 248, 0 }, { 249, 0 }, { 250, 0 }, { 251, 0 }, { 252, 0 }, { 253, 0 }, { 254, 0 }, { 255, 0 }, { 256, 0 }, - { 0, 3 }, { 0,22709 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, + { 0, 4 }, { 0,4142 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, + { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 33,3741 }, - { 0, 0 }, { 35,3741 }, { 0, 0 }, { 37,3741 }, { 38,3741 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 42,3741 }, { 43,3741 }, - { 0, 0 }, { 45,3741 }, { 0, 0 }, { 47,3741 }, { 0, 0 }, + { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 33,2863 }, + { 0, 0 }, { 35,2863 }, { 0, 0 }, { 37,2863 }, { 38,2863 }, + { 0, 0 }, { 0, 0 }, { 0, 0 }, { 42,2863 }, { 43,2863 }, + { 0, 0 }, { 45,2863 }, { 0, 0 }, { 47,2863 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, + { 0, 0 }, { 60,2863 }, { 61,2863 }, { 62,2863 }, { 63,2863 }, + { 64,2863 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 60,3741 }, { 61,3741 }, { 62,3741 }, { 63,3741 }, - { 64,3741 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 94,3741 }, { 0, 0 }, { 96,3741 }, { 0, 0 }, { 0, 0 }, + { 94,2863 }, { 0, 0 }, { 96,2863 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, + { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 124,3741 }, { 0, 0 }, { 126,3741 }, { 0, 58 }, { 0,22581 }, + { 124,2863 }, { 0, 0 }, { 126,2863 }, { 0, 44 }, { 0,4014 }, { 1, 0 }, { 2, 0 }, { 3, 0 }, { 4, 0 }, { 5, 0 }, { 6, 0 }, { 7, 0 }, { 8, 0 }, { 9, 0 }, { 10, 0 }, { 11, 0 }, { 12, 0 }, { 13, 0 }, { 14, 0 }, { 15, 0 }, { 16, 0 }, { 17, 0 }, { 18, 0 }, { 19, 0 }, { 20, 0 }, { 21, 0 }, { 22, 0 }, { 23, 0 }, { 24, 0 }, { 25, 0 }, { 26, 0 }, { 27, 0 }, { 28, 0 }, { 29, 0 }, { 30, 0 }, - { 31, 0 }, { 32, 0 }, { 33, 0 }, { 0, 0 }, { 35, 0 }, { 36, 0 }, { 37, 0 }, { 38, 0 }, { 39, 0 }, { 40, 0 }, + { 41, 0 }, { 42, 0 }, { 43, 0 }, { 44, 0 }, { 45, 0 }, { 46, 0 }, { 47, 0 }, { 48, 0 }, { 49, 0 }, { 50, 0 }, { 51, 0 }, { 52, 0 }, { 53, 0 }, { 54, 0 }, { 55, 0 }, @@ -3583,9 +3415,9 @@ static yyconst struct yy_trans_info yy_transition[37005] = { 66, 0 }, { 67, 0 }, { 68, 0 }, { 69, 0 }, { 70, 0 }, { 71, 0 }, { 72, 0 }, { 73, 0 }, { 74, 0 }, { 75, 0 }, { 76, 0 }, { 77, 0 }, { 78, 0 }, { 79, 0 }, { 80, 0 }, - { 81, 0 }, { 82, 0 }, { 83, 0 }, { 84, 0 }, { 85, 0 }, { 86, 0 }, { 87, 0 }, { 88, 0 }, { 89, 0 }, { 90, 0 }, + { 91, 0 }, { 92, 0 }, { 93, 0 }, { 94, 0 }, { 95, 0 }, { 96, 0 }, { 97, 0 }, { 98, 0 }, { 99, 0 }, { 100, 0 }, { 101, 0 }, { 102, 0 }, { 103, 0 }, { 104, 0 }, { 105, 0 }, @@ -3594,9 +3426,9 @@ static yyconst struct yy_trans_info yy_transition[37005] = { 116, 0 }, { 117, 0 }, { 118, 0 }, { 119, 0 }, { 120, 0 }, { 121, 0 }, { 122, 0 }, { 123, 0 }, { 124, 0 }, { 125, 0 }, { 126, 0 }, { 127, 0 }, { 128, 0 }, { 129, 0 }, { 130, 0 }, - { 131, 0 }, { 132, 0 }, { 133, 0 }, { 134, 0 }, { 135, 0 }, { 136, 0 }, { 137, 0 }, { 138, 0 }, { 139, 0 }, { 140, 0 }, + { 141, 0 }, { 142, 0 }, { 143, 0 }, { 144, 0 }, { 145, 0 }, { 146, 0 }, { 147, 0 }, { 148, 0 }, { 149, 0 }, { 150, 0 }, { 151, 0 }, { 152, 0 }, { 153, 0 }, { 154, 0 }, { 155, 0 }, @@ -3605,9 +3437,9 @@ static yyconst struct yy_trans_info yy_transition[37005] = { 166, 0 }, { 167, 0 }, { 168, 0 }, { 169, 0 }, { 170, 0 }, { 171, 0 }, { 172, 0 }, { 173, 0 }, { 174, 0 }, { 175, 0 }, { 176, 0 }, { 177, 0 }, { 178, 0 }, { 179, 0 }, { 180, 0 }, - { 181, 0 }, { 182, 0 }, { 183, 0 }, { 184, 0 }, { 185, 0 }, { 186, 0 }, { 187, 0 }, { 188, 0 }, { 189, 0 }, { 190, 0 }, + { 191, 0 }, { 192, 0 }, { 193, 0 }, { 194, 0 }, { 195, 0 }, { 196, 0 }, { 197, 0 }, { 198, 0 }, { 199, 0 }, { 200, 0 }, { 201, 0 }, { 202, 0 }, { 203, 0 }, { 204, 0 }, { 205, 0 }, @@ -3616,20 +3448,20 @@ static yyconst struct yy_trans_info yy_transition[37005] = { 216, 0 }, { 217, 0 }, { 218, 0 }, { 219, 0 }, { 220, 0 }, { 221, 0 }, { 222, 0 }, { 223, 0 }, { 224, 0 }, { 225, 0 }, { 226, 0 }, { 227, 0 }, { 228, 0 }, { 229, 0 }, { 230, 0 }, - { 231, 0 }, { 232, 0 }, { 233, 0 }, { 234, 0 }, { 235, 0 }, { 236, 0 }, { 237, 0 }, { 238, 0 }, { 239, 0 }, { 240, 0 }, + { 241, 0 }, { 242, 0 }, { 243, 0 }, { 244, 0 }, { 245, 0 }, { 246, 0 }, { 247, 0 }, { 248, 0 }, { 249, 0 }, { 250, 0 }, { 251, 0 }, { 252, 0 }, { 253, 0 }, { 254, 0 }, { 255, 0 }, - { 256, 0 }, { 0, 11 }, { 0,22323 }, { 1, 0 }, { 2, 0 }, + { 256, 0 }, { 0, 10 }, { 0,3756 }, { 1, 0 }, { 2, 0 }, { 3, 0 }, { 4, 0 }, { 5, 0 }, { 6, 0 }, { 7, 0 }, { 8, 0 }, { 9, 0 }, { 10, 0 }, { 11, 0 }, { 12, 0 }, { 13, 0 }, { 14, 0 }, { 15, 0 }, { 16, 0 }, { 17, 0 }, { 18, 0 }, { 19, 0 }, { 20, 0 }, { 21, 0 }, { 22, 0 }, - { 23, 0 }, { 24, 0 }, { 25, 0 }, { 26, 0 }, { 27, 0 }, { 28, 0 }, { 29, 0 }, { 30, 0 }, { 31, 0 }, { 32, 0 }, + { 33, 0 }, { 34, 0 }, { 35, 0 }, { 36, 0 }, { 37, 0 }, { 38, 0 }, { 0, 0 }, { 40, 0 }, { 41, 0 }, { 42, 0 }, { 43, 0 }, { 44, 0 }, { 45, 0 }, { 46, 0 }, { 47, 0 }, @@ -3638,9 +3470,9 @@ static yyconst struct yy_trans_info yy_transition[37005] = { 58, 0 }, { 59, 0 }, { 60, 0 }, { 61, 0 }, { 62, 0 }, { 63, 0 }, { 64, 0 }, { 65, 0 }, { 66, 0 }, { 67, 0 }, { 68, 0 }, { 69, 0 }, { 70, 0 }, { 71, 0 }, { 72, 0 }, - { 73, 0 }, { 74, 0 }, { 75, 0 }, { 76, 0 }, { 77, 0 }, { 78, 0 }, { 79, 0 }, { 80, 0 }, { 81, 0 }, { 82, 0 }, + { 83, 0 }, { 84, 0 }, { 85, 0 }, { 86, 0 }, { 87, 0 }, { 88, 0 }, { 89, 0 }, { 90, 0 }, { 91, 0 }, { 92, 0 }, { 93, 0 }, { 94, 0 }, { 95, 0 }, { 96, 0 }, { 97, 0 }, @@ -3649,151 +3481,42 @@ static yyconst struct yy_trans_info yy_transition[37005] = { 108, 0 }, { 109, 0 }, { 110, 0 }, { 111, 0 }, { 112, 0 }, { 113, 0 }, { 114, 0 }, { 115, 0 }, { 116, 0 }, { 117, 0 }, { 118, 0 }, { 119, 0 }, { 120, 0 }, { 121, 0 }, { 122, 0 }, - { 123, 0 }, { 124, 0 }, { 125, 0 }, { 126, 0 }, { 127, 0 }, { 128, 0 }, { 129, 0 }, { 130, 0 }, { 131, 0 }, { 132, 0 }, - { 133, 0 }, { 134, 0 }, { 135, 0 }, { 136, 0 }, { 137, 0 }, - { 138, 0 }, { 139, 0 }, { 140, 0 }, { 141, 0 }, { 142, 0 }, - { 143, 0 }, { 144, 0 }, { 145, 0 }, { 146, 0 }, { 147, 0 }, - { 148, 0 }, { 149, 0 }, { 150, 0 }, { 151, 0 }, { 152, 0 }, - { 153, 0 }, { 154, 0 }, { 155, 0 }, { 156, 0 }, { 157, 0 }, - { 158, 0 }, { 159, 0 }, { 160, 0 }, { 161, 0 }, { 162, 0 }, - { 163, 0 }, { 164, 0 }, { 165, 0 }, { 166, 0 }, { 167, 0 }, - { 168, 0 }, { 169, 0 }, { 170, 0 }, { 171, 0 }, { 172, 0 }, - - { 173, 0 }, { 174, 0 }, { 175, 0 }, { 176, 0 }, { 177, 0 }, - { 178, 0 }, { 179, 0 }, { 180, 0 }, { 181, 0 }, { 182, 0 }, - { 183, 0 }, { 184, 0 }, { 185, 0 }, { 186, 0 }, { 187, 0 }, - { 188, 0 }, { 189, 0 }, { 190, 0 }, { 191, 0 }, { 192, 0 }, - { 193, 0 }, { 194, 0 }, { 195, 0 }, { 196, 0 }, { 197, 0 }, - { 198, 0 }, { 199, 0 }, { 200, 0 }, { 201, 0 }, { 202, 0 }, - { 203, 0 }, { 204, 0 }, { 205, 0 }, { 206, 0 }, { 207, 0 }, - { 208, 0 }, { 209, 0 }, { 210, 0 }, { 211, 0 }, { 212, 0 }, - { 213, 0 }, { 214, 0 }, { 215, 0 }, { 216, 0 }, { 217, 0 }, - { 218, 0 }, { 219, 0 }, { 220, 0 }, { 221, 0 }, { 222, 0 }, - - { 223, 0 }, { 224, 0 }, { 225, 0 }, { 226, 0 }, { 227, 0 }, - { 228, 0 }, { 229, 0 }, { 230, 0 }, { 231, 0 }, { 232, 0 }, - { 233, 0 }, { 234, 0 }, { 235, 0 }, { 236, 0 }, { 237, 0 }, - { 238, 0 }, { 239, 0 }, { 240, 0 }, { 241, 0 }, { 242, 0 }, - { 243, 0 }, { 244, 0 }, { 245, 0 }, { 246, 0 }, { 247, 0 }, - { 248, 0 }, { 249, 0 }, { 250, 0 }, { 251, 0 }, { 252, 0 }, - { 253, 0 }, { 254, 0 }, { 255, 0 }, { 256, 0 }, { 0, 16 }, - { 0,22065 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 16 }, - { 0,22060 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 9, 0 }, - { 10, 5 }, { 0, 0 }, { 12, 0 }, { 13, 5 }, { 9,3099 }, - - { 10,3099 }, { 0, 0 }, { 12,3099 }, { 13,3099 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 32, 0 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 32,3099 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 39,-7413 }, - { 45,-7481 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 45,-7408 }, { 0, 32 }, { 0,22013 }, { 1, 0 }, { 2, 0 }, - { 3, 0 }, { 4, 0 }, { 5, 0 }, { 6, 0 }, { 7, 0 }, - { 8, 0 }, { 9, 0 }, { 10, 0 }, { 11, 0 }, { 12, 0 }, - - { 13, 0 }, { 14, 0 }, { 15, 0 }, { 16, 0 }, { 17, 0 }, - { 18, 0 }, { 19, 0 }, { 20, 0 }, { 21, 0 }, { 22, 0 }, - { 23, 0 }, { 24, 0 }, { 25, 0 }, { 26, 0 }, { 27, 0 }, - { 28, 0 }, { 29, 0 }, { 30, 0 }, { 31, 0 }, { 32, 0 }, - { 33, 0 }, { 34, 0 }, { 35, 0 }, { 36, 0 }, { 37, 0 }, - { 38, 0 }, { 0, 0 }, { 40, 0 }, { 41, 0 }, { 42, 0 }, - { 43, 0 }, { 44, 0 }, { 45, 0 }, { 46, 0 }, { 47, 0 }, - { 48, 0 }, { 49, 0 }, { 50, 0 }, { 51, 0 }, { 52, 0 }, - { 53, 0 }, { 54, 0 }, { 55, 0 }, { 56, 0 }, { 57, 0 }, - { 58, 0 }, { 59, 0 }, { 60, 0 }, { 61, 0 }, { 62, 0 }, - - { 63, 0 }, { 64, 0 }, { 65, 0 }, { 66, 0 }, { 67, 0 }, - { 68, 0 }, { 69, 0 }, { 70, 0 }, { 71, 0 }, { 72, 0 }, - { 73, 0 }, { 74, 0 }, { 75, 0 }, { 76, 0 }, { 77, 0 }, - { 78, 0 }, { 79, 0 }, { 80, 0 }, { 81, 0 }, { 82, 0 }, - { 83, 0 }, { 84, 0 }, { 85, 0 }, { 86, 0 }, { 87, 0 }, - { 88, 0 }, { 89, 0 }, { 90, 0 }, { 91, 0 }, { 0, 0 }, - { 93, 0 }, { 94, 0 }, { 95, 0 }, { 96, 0 }, { 97, 0 }, - { 98, 0 }, { 99, 0 }, { 100, 0 }, { 101, 0 }, { 102, 0 }, - { 103, 0 }, { 104, 0 }, { 105, 0 }, { 106, 0 }, { 107, 0 }, - { 108, 0 }, { 109, 0 }, { 110, 0 }, { 111, 0 }, { 112, 0 }, - { 113, 0 }, { 114, 0 }, { 115, 0 }, { 116, 0 }, { 117, 0 }, - { 118, 0 }, { 119, 0 }, { 120, 0 }, { 121, 0 }, { 122, 0 }, - { 123, 0 }, { 124, 0 }, { 125, 0 }, { 126, 0 }, { 127, 0 }, - { 128, 0 }, { 129, 0 }, { 130, 0 }, { 131, 0 }, { 132, 0 }, { 133, 0 }, { 134, 0 }, { 135, 0 }, { 136, 0 }, { 137, 0 }, { 138, 0 }, { 139, 0 }, { 140, 0 }, { 141, 0 }, { 142, 0 }, { 143, 0 }, { 144, 0 }, { 145, 0 }, { 146, 0 }, { 147, 0 }, { 148, 0 }, { 149, 0 }, { 150, 0 }, { 151, 0 }, { 152, 0 }, { 153, 0 }, { 154, 0 }, { 155, 0 }, { 156, 0 }, { 157, 0 }, { 158, 0 }, { 159, 0 }, { 160, 0 }, { 161, 0 }, { 162, 0 }, - { 163, 0 }, { 164, 0 }, { 165, 0 }, { 166, 0 }, { 167, 0 }, { 168, 0 }, { 169, 0 }, { 170, 0 }, { 171, 0 }, { 172, 0 }, { 173, 0 }, { 174, 0 }, { 175, 0 }, { 176, 0 }, { 177, 0 }, { 178, 0 }, { 179, 0 }, { 180, 0 }, { 181, 0 }, { 182, 0 }, + { 183, 0 }, { 184, 0 }, { 185, 0 }, { 186, 0 }, { 187, 0 }, { 188, 0 }, { 189, 0 }, { 190, 0 }, { 191, 0 }, { 192, 0 }, { 193, 0 }, { 194, 0 }, { 195, 0 }, { 196, 0 }, { 197, 0 }, { 198, 0 }, { 199, 0 }, { 200, 0 }, { 201, 0 }, { 202, 0 }, { 203, 0 }, { 204, 0 }, { 205, 0 }, { 206, 0 }, { 207, 0 }, { 208, 0 }, { 209, 0 }, { 210, 0 }, { 211, 0 }, { 212, 0 }, - { 213, 0 }, { 214, 0 }, { 215, 0 }, { 216, 0 }, { 217, 0 }, { 218, 0 }, { 219, 0 }, { 220, 0 }, { 221, 0 }, { 222, 0 }, { 223, 0 }, { 224, 0 }, { 225, 0 }, { 226, 0 }, { 227, 0 }, { 228, 0 }, { 229, 0 }, { 230, 0 }, { 231, 0 }, { 232, 0 }, + { 233, 0 }, { 234, 0 }, { 235, 0 }, { 236, 0 }, { 237, 0 }, { 238, 0 }, { 239, 0 }, { 240, 0 }, { 241, 0 }, { 242, 0 }, { 243, 0 }, { 244, 0 }, { 245, 0 }, { 246, 0 }, { 247, 0 }, { 248, 0 }, { 249, 0 }, { 250, 0 }, { 251, 0 }, { 252, 0 }, { 253, 0 }, { 254, 0 }, { 255, 0 }, { 256, 0 }, { 0, 22 }, - { 0,21755 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 22 }, - - { 0,21750 }, { 0, 39 }, { 0,21748 }, { 0, 0 }, { 9, 0 }, - { 10, 5 }, { 0, 0 }, { 12, 0 }, { 13, 5 }, { 9,3168 }, - { 10,3168 }, { 0, 0 }, { 12,3168 }, { 13,3168 }, { 0, 37 }, - { 0,21735 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 32, 0 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 32,3168 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 0, 37 }, { 0,21712 }, { 39,-7709 }, - { 45,-7784 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 45,-7682 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - - { 48,3471 }, { 49,3471 }, { 50,3471 }, { 51,3471 }, { 52,3471 }, - { 53,3471 }, { 54,3471 }, { 55,3471 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 48,3466 }, { 49,3466 }, - { 50,3466 }, { 51,3466 }, { 52,3466 }, { 53,3466 }, { 54,3466 }, - { 55,3466 }, { 56,3466 }, { 57,3466 }, { 0, 0 }, { 0, 0 }, - { 0, 38 }, { 0,21674 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 65,3466 }, { 66,3466 }, { 67,3466 }, { 68,3466 }, { 69,3466 }, - { 70,3466 }, { 48,3466 }, { 49,3466 }, { 50,3466 }, { 51,3466 }, - { 52,3466 }, { 53,3466 }, { 54,3466 }, { 55,3466 }, { 56,3466 }, - { 57,3466 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 65,3466 }, { 66,3466 }, - { 67,3466 }, { 68,3466 }, { 69,3466 }, { 70,3466 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 97,3466 }, { 98,3466 }, { 99,3466 }, - { 100,3466 }, { 101,3466 }, { 102,3466 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 48,3466 }, - { 49,3466 }, { 50,3466 }, { 51,3466 }, { 52,3466 }, { 53,3466 }, - { 54,3466 }, { 55,3466 }, { 56,3466 }, { 57,3466 }, { 0, 0 }, - { 97,3466 }, { 98,3466 }, { 99,3466 }, { 100,3466 }, { 101,3466 }, - { 102,3466 }, { 65,3466 }, { 66,3466 }, { 67,3466 }, { 68,3466 }, - { 69,3466 }, { 70,3466 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 97,3466 }, { 98,3466 }, - { 99,3466 }, { 100,3466 }, { 101,3466 }, { 102,3466 }, { 0, 31 }, - { 0,21570 }, { 1, 0 }, { 2, 0 }, { 3, 0 }, { 4, 0 }, + { 0,3498 }, { 1, 0 }, { 2, 0 }, { 3, 0 }, { 4, 0 }, { 5, 0 }, { 6, 0 }, { 7, 0 }, { 8, 0 }, { 9, 0 }, { 10, 0 }, { 11, 0 }, { 12, 0 }, { 13, 0 }, { 14, 0 }, { 15, 0 }, { 16, 0 }, { 17, 0 }, { 18, 0 }, { 19, 0 }, - { 20, 0 }, { 21, 0 }, { 22, 0 }, { 23, 0 }, { 24, 0 }, + { 25, 0 }, { 26, 0 }, { 27, 0 }, { 28, 0 }, { 29, 0 }, { 30, 0 }, { 31, 0 }, { 32, 0 }, { 33, 0 }, { 34, 0 }, { 35, 0 }, { 36, 0 }, { 37, 0 }, { 38, 0 }, { 0, 0 }, @@ -3803,8 +3526,8 @@ static yyconst struct yy_trans_info yy_transition[37005] = { 55, 0 }, { 56, 0 }, { 57, 0 }, { 58, 0 }, { 59, 0 }, { 60, 0 }, { 61, 0 }, { 62, 0 }, { 63, 0 }, { 64, 0 }, { 65, 0 }, { 66, 0 }, { 67, 0 }, { 68, 0 }, { 69, 0 }, - { 70, 0 }, { 71, 0 }, { 72, 0 }, { 73, 0 }, { 74, 0 }, + { 75, 0 }, { 76, 0 }, { 77, 0 }, { 78, 0 }, { 79, 0 }, { 80, 0 }, { 81, 0 }, { 82, 0 }, { 83, 0 }, { 84, 0 }, { 85, 0 }, { 86, 0 }, { 87, 0 }, { 88, 0 }, { 89, 0 }, @@ -3814,8 +3537,8 @@ static yyconst struct yy_trans_info yy_transition[37005] = { 105, 0 }, { 106, 0 }, { 107, 0 }, { 108, 0 }, { 109, 0 }, { 110, 0 }, { 111, 0 }, { 112, 0 }, { 113, 0 }, { 114, 0 }, { 115, 0 }, { 116, 0 }, { 117, 0 }, { 118, 0 }, { 119, 0 }, - { 120, 0 }, { 121, 0 }, { 122, 0 }, { 123, 0 }, { 124, 0 }, + { 125, 0 }, { 126, 0 }, { 127, 0 }, { 128, 0 }, { 129, 0 }, { 130, 0 }, { 131, 0 }, { 132, 0 }, { 133, 0 }, { 134, 0 }, { 135, 0 }, { 136, 0 }, { 137, 0 }, { 138, 0 }, { 139, 0 }, @@ -3825,8 +3548,8 @@ static yyconst struct yy_trans_info yy_transition[37005] = { 155, 0 }, { 156, 0 }, { 157, 0 }, { 158, 0 }, { 159, 0 }, { 160, 0 }, { 161, 0 }, { 162, 0 }, { 163, 0 }, { 164, 0 }, { 165, 0 }, { 166, 0 }, { 167, 0 }, { 168, 0 }, { 169, 0 }, - { 170, 0 }, { 171, 0 }, { 172, 0 }, { 173, 0 }, { 174, 0 }, + { 175, 0 }, { 176, 0 }, { 177, 0 }, { 178, 0 }, { 179, 0 }, { 180, 0 }, { 181, 0 }, { 182, 0 }, { 183, 0 }, { 184, 0 }, { 185, 0 }, { 186, 0 }, { 187, 0 }, { 188, 0 }, { 189, 0 }, @@ -3836,305 +3559,63 @@ static yyconst struct yy_trans_info yy_transition[37005] = { 205, 0 }, { 206, 0 }, { 207, 0 }, { 208, 0 }, { 209, 0 }, { 210, 0 }, { 211, 0 }, { 212, 0 }, { 213, 0 }, { 214, 0 }, { 215, 0 }, { 216, 0 }, { 217, 0 }, { 218, 0 }, { 219, 0 }, - { 220, 0 }, { 221, 0 }, { 222, 0 }, { 223, 0 }, { 224, 0 }, + { 225, 0 }, { 226, 0 }, { 227, 0 }, { 228, 0 }, { 229, 0 }, { 230, 0 }, { 231, 0 }, { 232, 0 }, { 233, 0 }, { 234, 0 }, { 235, 0 }, { 236, 0 }, { 237, 0 }, { 238, 0 }, { 239, 0 }, { 240, 0 }, { 241, 0 }, { 242, 0 }, { 243, 0 }, { 244, 0 }, { 245, 0 }, { 246, 0 }, { 247, 0 }, { 248, 0 }, { 249, 0 }, { 250, 0 }, { 251, 0 }, { 252, 0 }, { 253, 0 }, { 254, 0 }, - { 255, 0 }, { 256, 0 }, { 0, 46 }, { 0,21312 }, { 1, 0 }, - { 2, 0 }, { 3, 0 }, { 4, 0 }, { 5, 0 }, { 6, 0 }, - { 7, 0 }, { 8, 0 }, { 9, 0 }, { 10, 0 }, { 11, 0 }, - - { 12, 0 }, { 13, 0 }, { 14, 0 }, { 15, 0 }, { 16, 0 }, - { 17, 0 }, { 18, 0 }, { 19, 0 }, { 20, 0 }, { 21, 0 }, - { 22, 0 }, { 23, 0 }, { 24, 0 }, { 25, 0 }, { 26, 0 }, - { 27, 0 }, { 28, 0 }, { 29, 0 }, { 30, 0 }, { 31, 0 }, - { 32, 0 }, { 33, 0 }, { 34, 0 }, { 35, 0 }, { 0, 0 }, - { 37, 0 }, { 38, 0 }, { 39, 0 }, { 40, 0 }, { 41, 0 }, - { 42, 0 }, { 43, 0 }, { 44, 0 }, { 45, 0 }, { 46, 0 }, - { 47, 0 }, { 48, 0 }, { 49, 0 }, { 50, 0 }, { 51, 0 }, - { 52, 0 }, { 53, 0 }, { 54, 0 }, { 55, 0 }, { 56, 0 }, - { 57, 0 }, { 58, 0 }, { 59, 0 }, { 60, 0 }, { 61, 0 }, + { 255, 0 }, { 256, 0 }, { 0, 19 }, { 0,3240 }, { 0, 0 }, + { 0, 0 }, { 0, 0 }, { 0, 19 }, { 0,3235 }, { 0, 0 }, + { 0, 0 }, { 0, 0 }, { 9, 0 }, { 10, 5 }, { 0, 0 }, + { 12, 0 }, { 13, 5 }, { 9, 16 }, { 10, 16 }, { 0, 0 }, - { 62, 0 }, { 63, 0 }, { 64, 0 }, { 65, 0 }, { 66, 0 }, - { 67, 0 }, { 68, 0 }, { 69, 0 }, { 70, 0 }, { 71, 0 }, - { 72, 0 }, { 73, 0 }, { 74, 0 }, { 75, 0 }, { 76, 0 }, - { 77, 0 }, { 78, 0 }, { 79, 0 }, { 80, 0 }, { 81, 0 }, - { 82, 0 }, { 83, 0 }, { 84, 0 }, { 85, 0 }, { 86, 0 }, - { 87, 0 }, { 88, 0 }, { 89, 0 }, { 90, 0 }, { 91, 0 }, - { 92, 0 }, { 93, 0 }, { 94, 0 }, { 95, 0 }, { 96, 0 }, - { 97, 0 }, { 98, 0 }, { 99, 0 }, { 100, 0 }, { 101, 0 }, - { 102, 0 }, { 103, 0 }, { 104, 0 }, { 105, 0 }, { 106, 0 }, - { 107, 0 }, { 108, 0 }, { 109, 0 }, { 110, 0 }, { 111, 0 }, - - { 112, 0 }, { 113, 0 }, { 114, 0 }, { 115, 0 }, { 116, 0 }, - { 117, 0 }, { 118, 0 }, { 119, 0 }, { 120, 0 }, { 121, 0 }, - { 122, 0 }, { 123, 0 }, { 124, 0 }, { 125, 0 }, { 126, 0 }, - { 127, 0 }, { 128, 0 }, { 129, 0 }, { 130, 0 }, { 131, 0 }, - { 132, 0 }, { 133, 0 }, { 134, 0 }, { 135, 0 }, { 136, 0 }, - { 137, 0 }, { 138, 0 }, { 139, 0 }, { 140, 0 }, { 141, 0 }, - { 142, 0 }, { 143, 0 }, { 144, 0 }, { 145, 0 }, { 146, 0 }, - { 147, 0 }, { 148, 0 }, { 149, 0 }, { 150, 0 }, { 151, 0 }, - { 152, 0 }, { 153, 0 }, { 154, 0 }, { 155, 0 }, { 156, 0 }, - { 157, 0 }, { 158, 0 }, { 159, 0 }, { 160, 0 }, { 161, 0 }, - - { 162, 0 }, { 163, 0 }, { 164, 0 }, { 165, 0 }, { 166, 0 }, - { 167, 0 }, { 168, 0 }, { 169, 0 }, { 170, 0 }, { 171, 0 }, - { 172, 0 }, { 173, 0 }, { 174, 0 }, { 175, 0 }, { 176, 0 }, - { 177, 0 }, { 178, 0 }, { 179, 0 }, { 180, 0 }, { 181, 0 }, - { 182, 0 }, { 183, 0 }, { 184, 0 }, { 185, 0 }, { 186, 0 }, - { 187, 0 }, { 188, 0 }, { 189, 0 }, { 190, 0 }, { 191, 0 }, - { 192, 0 }, { 193, 0 }, { 194, 0 }, { 195, 0 }, { 196, 0 }, - { 197, 0 }, { 198, 0 }, { 199, 0 }, { 200, 0 }, { 201, 0 }, - { 202, 0 }, { 203, 0 }, { 204, 0 }, { 205, 0 }, { 206, 0 }, - { 207, 0 }, { 208, 0 }, { 209, 0 }, { 210, 0 }, { 211, 0 }, + { 12, 16 }, { 13, 16 }, { 0, 0 }, { 0, 19 }, { 0,3219 }, + { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, + { 0, 0 }, { 0, 0 }, { 0, 0 }, { 9, 0 }, { 10, 0 }, + { 32, 0 }, { 12, 0 }, { 13, 0 }, { 0, 0 }, { 0, 0 }, + { 32, 16 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, + { 0, 0 }, { 0, 0 }, { 39,-7600 }, { 45,-7597 }, { 0, 0 }, + { 0, 0 }, { 0, 0 }, { 0, 0 }, { 45,-7602 }, { 0, 0 }, + { 0, 0 }, { 32, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, + { 0, 0 }, { 0, 0 }, { 0, 0 }, { 39,-7616 }, { 0, 0 }, + { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 45,-7618 }, - { 212, 0 }, { 213, 0 }, { 214, 0 }, { 215, 0 }, { 216, 0 }, - { 217, 0 }, { 218, 0 }, { 219, 0 }, { 220, 0 }, { 221, 0 }, - { 222, 0 }, { 223, 0 }, { 224, 0 }, { 225, 0 }, { 226, 0 }, - { 227, 0 }, { 228, 0 }, { 229, 0 }, { 230, 0 }, { 231, 0 }, - { 232, 0 }, { 233, 0 }, { 234, 0 }, { 235, 0 }, { 236, 0 }, - { 237, 0 }, { 238, 0 }, { 239, 0 }, { 240, 0 }, { 241, 0 }, - { 242, 0 }, { 243, 0 }, { 244, 0 }, { 245, 0 }, { 246, 0 }, - { 247, 0 }, { 248, 0 }, { 249, 0 }, { 250, 0 }, { 251, 0 }, - { 252, 0 }, { 253, 0 }, { 254, 0 }, { 255, 0 }, { 256, 0 }, - { 0, 47 }, { 0,21054 }, { 0, 53 }, { 0,21052 }, { 0, 0 }, - - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 9, 0 }, { 10, 0 }, { 0, 0 }, - { 12, 0 }, { 13, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 32, 0 }, { 0, 0 }, { 36,-8481 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 48,2918 }, - { 49,2918 }, { 50,2918 }, { 51,2918 }, { 52,2918 }, { 53,2918 }, - - { 54,2918 }, { 55,2918 }, { 56,2918 }, { 57,2918 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 65,2918 }, { 66,2918 }, { 67,2918 }, { 68,2918 }, - { 69,2918 }, { 70,2918 }, { 71,2918 }, { 72,2918 }, { 73,2918 }, - { 74,2918 }, { 75,2918 }, { 76,2918 }, { 77,2918 }, { 78,2918 }, - { 79,2918 }, { 80,2918 }, { 81,2918 }, { 82,2918 }, { 83,2918 }, - { 84,2918 }, { 85,2918 }, { 86,2918 }, { 87,2918 }, { 88,2918 }, - { 89,2918 }, { 90,2918 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 95,2918 }, { 0, 0 }, { 97,2918 }, { 98,2918 }, - { 99,2918 }, { 100,2918 }, { 101,2918 }, { 102,2918 }, { 103,2918 }, - - { 104,2918 }, { 105,2918 }, { 106,2918 }, { 107,2918 }, { 108,2918 }, - { 109,2918 }, { 110,2918 }, { 111,2918 }, { 112,2918 }, { 113,2918 }, - { 114,2918 }, { 115,2918 }, { 116,2918 }, { 117,2918 }, { 118,2918 }, - { 119,2918 }, { 120,2918 }, { 121,2918 }, { 122,2918 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 128,2918 }, - { 129,2918 }, { 130,2918 }, { 131,2918 }, { 132,2918 }, { 133,2918 }, - { 134,2918 }, { 135,2918 }, { 136,2918 }, { 137,2918 }, { 138,2918 }, - { 139,2918 }, { 140,2918 }, { 141,2918 }, { 142,2918 }, { 143,2918 }, - { 144,2918 }, { 145,2918 }, { 146,2918 }, { 147,2918 }, { 148,2918 }, - { 149,2918 }, { 150,2918 }, { 151,2918 }, { 152,2918 }, { 153,2918 }, - - { 154,2918 }, { 155,2918 }, { 156,2918 }, { 157,2918 }, { 158,2918 }, - { 159,2918 }, { 160,2918 }, { 161,2918 }, { 162,2918 }, { 163,2918 }, - { 164,2918 }, { 165,2918 }, { 166,2918 }, { 167,2918 }, { 168,2918 }, - { 169,2918 }, { 170,2918 }, { 171,2918 }, { 172,2918 }, { 173,2918 }, - { 174,2918 }, { 175,2918 }, { 176,2918 }, { 177,2918 }, { 178,2918 }, - { 179,2918 }, { 180,2918 }, { 181,2918 }, { 182,2918 }, { 183,2918 }, - { 184,2918 }, { 185,2918 }, { 186,2918 }, { 187,2918 }, { 188,2918 }, - { 189,2918 }, { 190,2918 }, { 191,2918 }, { 192,2918 }, { 193,2918 }, - { 194,2918 }, { 195,2918 }, { 196,2918 }, { 197,2918 }, { 198,2918 }, - { 199,2918 }, { 200,2918 }, { 201,2918 }, { 202,2918 }, { 203,2918 }, - - { 204,2918 }, { 205,2918 }, { 206,2918 }, { 207,2918 }, { 208,2918 }, - { 209,2918 }, { 210,2918 }, { 211,2918 }, { 212,2918 }, { 213,2918 }, - { 214,2918 }, { 215,2918 }, { 216,2918 }, { 217,2918 }, { 218,2918 }, - { 219,2918 }, { 220,2918 }, { 221,2918 }, { 222,2918 }, { 223,2918 }, - { 224,2918 }, { 225,2918 }, { 226,2918 }, { 227,2918 }, { 228,2918 }, - { 229,2918 }, { 230,2918 }, { 231,2918 }, { 232,2918 }, { 233,2918 }, - { 234,2918 }, { 235,2918 }, { 236,2918 }, { 237,2918 }, { 238,2918 }, - { 239,2918 }, { 240,2918 }, { 241,2918 }, { 242,2918 }, { 243,2918 }, - { 244,2918 }, { 245,2918 }, { 246,2918 }, { 247,2918 }, { 248,2918 }, - { 249,2918 }, { 250,2918 }, { 251,2918 }, { 252,2918 }, { 253,2918 }, - - { 254,2918 }, { 255,2918 }, { 0, 53 }, { 0,20797 }, { 1,2918 }, - { 2,2918 }, { 3,2918 }, { 4,2918 }, { 5,2918 }, { 6,2918 }, - { 7,2918 }, { 8,2918 }, { 9,2918 }, { 0, 0 }, { 11,2918 }, - { 12,2918 }, { 0, 0 }, { 14,2918 }, { 15,2918 }, { 16,2918 }, - { 17,2918 }, { 18,2918 }, { 19,2918 }, { 20,2918 }, { 21,2918 }, - { 22,2918 }, { 23,2918 }, { 24,2918 }, { 25,2918 }, { 26,2918 }, - { 27,2918 }, { 28,2918 }, { 29,2918 }, { 30,2918 }, { 31,2918 }, - { 32,2918 }, { 33,2918 }, { 34,2918 }, { 35,2918 }, { 36,2918 }, - { 37,2918 }, { 38,2918 }, { 39,2918 }, { 40,2918 }, { 41,2918 }, - { 42,2918 }, { 43,2918 }, { 44,2918 }, { 45,2918 }, { 46,2918 }, - - { 47,2918 }, { 48,2918 }, { 49,2918 }, { 50,2918 }, { 51,2918 }, - { 52,2918 }, { 53,2918 }, { 54,2918 }, { 55,2918 }, { 56,2918 }, - { 57,2918 }, { 58,2918 }, { 59,2918 }, { 60,2918 }, { 61,2918 }, - { 62,2918 }, { 63,2918 }, { 64,2918 }, { 65,2918 }, { 66,2918 }, - { 67,2918 }, { 68,2918 }, { 69,2918 }, { 70,2918 }, { 71,2918 }, - { 72,2918 }, { 73,2918 }, { 74,2918 }, { 75,2918 }, { 76,2918 }, - { 77,2918 }, { 78,2918 }, { 79,2918 }, { 80,2918 }, { 81,2918 }, - { 82,2918 }, { 83,2918 }, { 84,2918 }, { 85,2918 }, { 86,2918 }, - { 87,2918 }, { 88,2918 }, { 89,2918 }, { 90,2918 }, { 91,2918 }, - { 92,2918 }, { 93,2918 }, { 94,2918 }, { 95,2918 }, { 96,2918 }, - - { 97,2918 }, { 98,2918 }, { 99,2918 }, { 100,2918 }, { 101,2918 }, - { 102,2918 }, { 103,2918 }, { 104,2918 }, { 105,2918 }, { 106,2918 }, - { 107,2918 }, { 108,2918 }, { 109,2918 }, { 110,2918 }, { 111,2918 }, - { 112,2918 }, { 113,2918 }, { 114,2918 }, { 115,2918 }, { 116,2918 }, - { 117,2918 }, { 118,2918 }, { 119,2918 }, { 120,2918 }, { 121,2918 }, - { 122,2918 }, { 123,2918 }, { 124,2918 }, { 125,2918 }, { 126,2918 }, - { 127,2918 }, { 128,2918 }, { 129,2918 }, { 130,2918 }, { 131,2918 }, - { 132,2918 }, { 133,2918 }, { 134,2918 }, { 135,2918 }, { 136,2918 }, - { 137,2918 }, { 138,2918 }, { 139,2918 }, { 140,2918 }, { 141,2918 }, - { 142,2918 }, { 143,2918 }, { 144,2918 }, { 145,2918 }, { 146,2918 }, - - { 147,2918 }, { 148,2918 }, { 149,2918 }, { 150,2918 }, { 151,2918 }, - { 152,2918 }, { 153,2918 }, { 154,2918 }, { 155,2918 }, { 156,2918 }, - { 157,2918 }, { 158,2918 }, { 159,2918 }, { 160,2918 }, { 161,2918 }, - { 162,2918 }, { 163,2918 }, { 164,2918 }, { 165,2918 }, { 166,2918 }, - { 167,2918 }, { 168,2918 }, { 169,2918 }, { 170,2918 }, { 171,2918 }, - { 172,2918 }, { 173,2918 }, { 174,2918 }, { 175,2918 }, { 176,2918 }, - { 177,2918 }, { 178,2918 }, { 179,2918 }, { 180,2918 }, { 181,2918 }, - { 182,2918 }, { 183,2918 }, { 184,2918 }, { 185,2918 }, { 186,2918 }, - { 187,2918 }, { 188,2918 }, { 189,2918 }, { 190,2918 }, { 191,2918 }, - { 192,2918 }, { 193,2918 }, { 194,2918 }, { 195,2918 }, { 196,2918 }, - - { 197,2918 }, { 198,2918 }, { 199,2918 }, { 200,2918 }, { 201,2918 }, - { 202,2918 }, { 203,2918 }, { 204,2918 }, { 205,2918 }, { 206,2918 }, - { 207,2918 }, { 208,2918 }, { 209,2918 }, { 210,2918 }, { 211,2918 }, - { 212,2918 }, { 213,2918 }, { 214,2918 }, { 215,2918 }, { 216,2918 }, - { 217,2918 }, { 218,2918 }, { 219,2918 }, { 220,2918 }, { 221,2918 }, - { 222,2918 }, { 223,2918 }, { 224,2918 }, { 225,2918 }, { 226,2918 }, - { 227,2918 }, { 228,2918 }, { 229,2918 }, { 230,2918 }, { 231,2918 }, - { 232,2918 }, { 233,2918 }, { 234,2918 }, { 235,2918 }, { 236,2918 }, - { 237,2918 }, { 238,2918 }, { 239,2918 }, { 240,2918 }, { 241,2918 }, - { 242,2918 }, { 243,2918 }, { 244,2918 }, { 245,2918 }, { 246,2918 }, - - { 247,2918 }, { 248,2918 }, { 249,2918 }, { 250,2918 }, { 251,2918 }, - { 252,2918 }, { 253,2918 }, { 254,2918 }, { 255,2918 }, { 256,2918 }, - { 0, 24 }, { 0,20539 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 0, 24 }, { 0,20534 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 9, 0 }, { 10, 5 }, { 0, 0 }, { 12, 0 }, { 13, 5 }, - { 9,2913 }, { 10,2913 }, { 0, 0 }, { 12,2913 }, { 13,2913 }, - { 0, 0 }, { 0, 26 }, { 0,20518 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 9, 0 }, { 10, 0 }, { 32, 0 }, { 12, 0 }, - { 13, 0 }, { 0, 0 }, { 0, 0 }, { 32,2913 }, { 0, 0 }, - - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 39,-8925 }, { 45,-8953 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 45,-8861 }, { 0, 0 }, { 0, 0 }, { 32, 0 }, - { 0, 26 }, { 0,20484 }, { 1,3168 }, { 2,3168 }, { 3,3168 }, - { 4,3168 }, { 5,3168 }, { 6,3168 }, { 7,3168 }, { 8,3168 }, - { 9,3168 }, { 0, 0 }, { 11,3168 }, { 12,3168 }, { 0, 0 }, - { 14,3168 }, { 15,3168 }, { 16,3168 }, { 17,3168 }, { 18,3168 }, - { 19,3168 }, { 20,3168 }, { 21,3168 }, { 22,3168 }, { 23,3168 }, - { 24,3168 }, { 25,3168 }, { 26,3168 }, { 27,3168 }, { 28,3168 }, - { 29,3168 }, { 30,3168 }, { 31,3168 }, { 32,3168 }, { 33,3168 }, - - { 34,3168 }, { 35,3168 }, { 36,3168 }, { 37,3168 }, { 38,3168 }, - { 39,3168 }, { 40,3168 }, { 41,3168 }, { 42,3168 }, { 43,3168 }, - { 44,3168 }, { 45,3168 }, { 46,3168 }, { 47,3168 }, { 48,3168 }, - { 49,3168 }, { 50,3168 }, { 51,3168 }, { 52,3168 }, { 53,3168 }, - { 54,3168 }, { 55,3168 }, { 56,3168 }, { 57,3168 }, { 58,3168 }, - { 59,3168 }, { 60,3168 }, { 61,3168 }, { 62,3168 }, { 63,3168 }, - { 64,3168 }, { 65,3168 }, { 66,3168 }, { 67,3168 }, { 68,3168 }, - { 69,3168 }, { 70,3168 }, { 71,3168 }, { 72,3168 }, { 73,3168 }, - { 74,3168 }, { 75,3168 }, { 76,3168 }, { 77,3168 }, { 78,3168 }, - { 79,3168 }, { 80,3168 }, { 81,3168 }, { 82,3168 }, { 83,3168 }, - - { 84,3168 }, { 85,3168 }, { 86,3168 }, { 87,3168 }, { 88,3168 }, - { 89,3168 }, { 90,3168 }, { 91,3168 }, { 92,3168 }, { 93,3168 }, - { 94,3168 }, { 95,3168 }, { 96,3168 }, { 97,3168 }, { 98,3168 }, - { 99,3168 }, { 100,3168 }, { 101,3168 }, { 102,3168 }, { 103,3168 }, - { 104,3168 }, { 105,3168 }, { 106,3168 }, { 107,3168 }, { 108,3168 }, - { 109,3168 }, { 110,3168 }, { 111,3168 }, { 112,3168 }, { 113,3168 }, - { 114,3168 }, { 115,3168 }, { 116,3168 }, { 117,3168 }, { 118,3168 }, - { 119,3168 }, { 120,3168 }, { 121,3168 }, { 122,3168 }, { 123,3168 }, - { 124,3168 }, { 125,3168 }, { 126,3168 }, { 127,3168 }, { 128,3168 }, - { 129,3168 }, { 130,3168 }, { 131,3168 }, { 132,3168 }, { 133,3168 }, - - { 134,3168 }, { 135,3168 }, { 136,3168 }, { 137,3168 }, { 138,3168 }, - { 139,3168 }, { 140,3168 }, { 141,3168 }, { 142,3168 }, { 143,3168 }, - { 144,3168 }, { 145,3168 }, { 146,3168 }, { 147,3168 }, { 148,3168 }, - { 149,3168 }, { 150,3168 }, { 151,3168 }, { 152,3168 }, { 153,3168 }, - { 154,3168 }, { 155,3168 }, { 156,3168 }, { 157,3168 }, { 158,3168 }, - { 159,3168 }, { 160,3168 }, { 161,3168 }, { 162,3168 }, { 163,3168 }, - { 164,3168 }, { 165,3168 }, { 166,3168 }, { 167,3168 }, { 168,3168 }, - { 169,3168 }, { 170,3168 }, { 171,3168 }, { 172,3168 }, { 173,3168 }, - { 174,3168 }, { 175,3168 }, { 176,3168 }, { 177,3168 }, { 178,3168 }, - { 179,3168 }, { 180,3168 }, { 181,3168 }, { 182,3168 }, { 183,3168 }, - - { 184,3168 }, { 185,3168 }, { 186,3168 }, { 187,3168 }, { 188,3168 }, - { 189,3168 }, { 190,3168 }, { 191,3168 }, { 192,3168 }, { 193,3168 }, - { 194,3168 }, { 195,3168 }, { 196,3168 }, { 197,3168 }, { 198,3168 }, - { 199,3168 }, { 200,3168 }, { 201,3168 }, { 202,3168 }, { 203,3168 }, - { 204,3168 }, { 205,3168 }, { 206,3168 }, { 207,3168 }, { 208,3168 }, - { 209,3168 }, { 210,3168 }, { 211,3168 }, { 212,3168 }, { 213,3168 }, - { 214,3168 }, { 215,3168 }, { 216,3168 }, { 217,3168 }, { 218,3168 }, - { 219,3168 }, { 220,3168 }, { 221,3168 }, { 222,3168 }, { 223,3168 }, - { 224,3168 }, { 225,3168 }, { 226,3168 }, { 227,3168 }, { 228,3168 }, - { 229,3168 }, { 230,3168 }, { 231,3168 }, { 232,3168 }, { 233,3168 }, - - { 234,3168 }, { 235,3168 }, { 236,3168 }, { 237,3168 }, { 238,3168 }, - { 239,3168 }, { 240,3168 }, { 241,3168 }, { 242,3168 }, { 243,3168 }, - { 244,3168 }, { 245,3168 }, { 246,3168 }, { 247,3168 }, { 248,3168 }, - { 249,3168 }, { 250,3168 }, { 251,3168 }, { 252,3168 }, { 253,3168 }, - { 254,3168 }, { 255,3168 }, { 256,3168 }, { 0, 37 }, { 0,20226 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 0, 37 }, { 0,20203 }, { 0, 0 }, { 0, 0 }, - - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 48,3168 }, { 49,3168 }, { 50,3168 }, - { 51,3168 }, { 52,3168 }, { 53,3168 }, { 54,3168 }, { 55,3168 }, - { 56,3168 }, { 57,3168 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 65,3168 }, - { 66,3168 }, { 67,3168 }, { 68,3168 }, { 69,3168 }, { 70,3168 }, - { 48,3168 }, { 49,3168 }, { 50,3168 }, { 51,3168 }, { 52,3168 }, - - { 53,3168 }, { 54,3168 }, { 55,3168 }, { 56,3168 }, { 57,3168 }, - { 0, 44 }, { 0,20144 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 65,3168 }, { 66,3168 }, { 67,3168 }, - { 68,3168 }, { 69,3168 }, { 70,3168 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 97,3168 }, { 98,3168 }, { 99,3168 }, { 100,3168 }, - { 101,3168 }, { 102,3168 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 36,-9772 }, { 0, 0 }, { 97,3168 }, - { 98,3168 }, { 99,3168 }, { 100,3168 }, { 101,3168 }, { 102,3168 }, + { 0, 23 }, { 0,3172 }, { 1, 0 }, { 2, 0 }, { 3, 0 }, + { 4, 0 }, { 5, 0 }, { 6, 0 }, { 7, 0 }, { 8, 0 }, + { 9, 0 }, { 10, 0 }, { 11, 0 }, { 12, 0 }, { 13, 0 }, + { 14, 0 }, { 15, 0 }, { 16, 0 }, { 17, 0 }, { 18, 0 }, + { 19, 0 }, { 20, 0 }, { 21, 0 }, { 22, 0 }, { 23, 0 }, + { 24, 0 }, { 25, 0 }, { 26, 0 }, { 27, 0 }, { 28, 0 }, + { 29, 0 }, { 30, 0 }, { 31, 0 }, { 32, 0 }, { 33, 0 }, + { 34, 0 }, { 35, 0 }, { 36, 0 }, { 37, 0 }, { 38, 0 }, + { 0, 0 }, { 40, 0 }, { 41, 0 }, { 42, 0 }, { 43, 0 }, + { 44, 0 }, { 45, 0 }, { 46, 0 }, { 47, 0 }, { 48, 0 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 48, 0 }, { 49, 0 }, { 50, 0 }, { 51, 0 }, { 52, 0 }, { 53, 0 }, - { 54, 0 }, { 55, 0 }, { 56, 0 }, { 57, 0 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 65, 0 }, { 66, 0 }, { 67, 0 }, { 68, 0 }, + { 54, 0 }, { 55, 0 }, { 56, 0 }, { 57, 0 }, { 58, 0 }, + { 59, 0 }, { 60, 0 }, { 61, 0 }, { 62, 0 }, { 63, 0 }, + { 64, 0 }, { 65, 0 }, { 66, 0 }, { 67, 0 }, { 68, 0 }, { 69, 0 }, { 70, 0 }, { 71, 0 }, { 72, 0 }, { 73, 0 }, { 74, 0 }, { 75, 0 }, { 76, 0 }, { 77, 0 }, { 78, 0 }, { 79, 0 }, { 80, 0 }, { 81, 0 }, { 82, 0 }, { 83, 0 }, { 84, 0 }, { 85, 0 }, { 86, 0 }, { 87, 0 }, { 88, 0 }, - { 89, 0 }, { 90, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, + { 89, 0 }, { 90, 0 }, { 91, 0 }, { 0, 0 }, { 93, 0 }, + { 94, 0 }, { 95, 0 }, { 96, 0 }, { 97, 0 }, { 98, 0 }, - { 0, 0 }, { 95, 0 }, { 0, 0 }, { 97, 0 }, { 98, 0 }, { 99, 0 }, { 100, 0 }, { 101, 0 }, { 102, 0 }, { 103, 0 }, { 104, 0 }, { 105, 0 }, { 106, 0 }, { 107, 0 }, { 108, 0 }, { 109, 0 }, { 110, 0 }, { 111, 0 }, { 112, 0 }, { 113, 0 }, { 114, 0 }, { 115, 0 }, { 116, 0 }, { 117, 0 }, { 118, 0 }, - { 119, 0 }, { 120, 0 }, { 121, 0 }, { 122, 0 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 128, 0 }, + { 119, 0 }, { 120, 0 }, { 121, 0 }, { 122, 0 }, { 123, 0 }, + { 124, 0 }, { 125, 0 }, { 126, 0 }, { 127, 0 }, { 128, 0 }, { 129, 0 }, { 130, 0 }, { 131, 0 }, { 132, 0 }, { 133, 0 }, { 134, 0 }, { 135, 0 }, { 136, 0 }, { 137, 0 }, { 138, 0 }, { 139, 0 }, { 140, 0 }, { 141, 0 }, { 142, 0 }, { 143, 0 }, - { 144, 0 }, { 145, 0 }, { 146, 0 }, { 147, 0 }, { 148, 0 }, + { 149, 0 }, { 150, 0 }, { 151, 0 }, { 152, 0 }, { 153, 0 }, { 154, 0 }, { 155, 0 }, { 156, 0 }, { 157, 0 }, { 158, 0 }, { 159, 0 }, { 160, 0 }, { 161, 0 }, { 162, 0 }, { 163, 0 }, @@ -4144,8 +3625,8 @@ static yyconst struct yy_trans_info yy_transition[37005] = { 179, 0 }, { 180, 0 }, { 181, 0 }, { 182, 0 }, { 183, 0 }, { 184, 0 }, { 185, 0 }, { 186, 0 }, { 187, 0 }, { 188, 0 }, { 189, 0 }, { 190, 0 }, { 191, 0 }, { 192, 0 }, { 193, 0 }, - { 194, 0 }, { 195, 0 }, { 196, 0 }, { 197, 0 }, { 198, 0 }, + { 199, 0 }, { 200, 0 }, { 201, 0 }, { 202, 0 }, { 203, 0 }, { 204, 0 }, { 205, 0 }, { 206, 0 }, { 207, 0 }, { 208, 0 }, { 209, 0 }, { 210, 0 }, { 211, 0 }, { 212, 0 }, { 213, 0 }, @@ -4155,414 +3636,198 @@ static yyconst struct yy_trans_info yy_transition[37005] = { 229, 0 }, { 230, 0 }, { 231, 0 }, { 232, 0 }, { 233, 0 }, { 234, 0 }, { 235, 0 }, { 236, 0 }, { 237, 0 }, { 238, 0 }, { 239, 0 }, { 240, 0 }, { 241, 0 }, { 242, 0 }, { 243, 0 }, - { 244, 0 }, { 245, 0 }, { 246, 0 }, { 247, 0 }, { 248, 0 }, + { 249, 0 }, { 250, 0 }, { 251, 0 }, { 252, 0 }, { 253, 0 }, - { 254, 0 }, { 255, 0 }, { 0, 1 }, { 0,19887 }, { 1, 0 }, - { 2, 0 }, { 3, 0 }, { 4, 0 }, { 5, 0 }, { 6, 0 }, - { 7, 0 }, { 8, 0 }, { 9, 0 }, { 0, 0 }, { 11, 0 }, - { 12, 0 }, { 0, 0 }, { 14, 0 }, { 15, 0 }, { 16, 0 }, - { 17, 0 }, { 18, 0 }, { 19, 0 }, { 20, 0 }, { 21, 0 }, - { 22, 0 }, { 23, 0 }, { 24, 0 }, { 25, 0 }, { 26, 0 }, - { 27, 0 }, { 28, 0 }, { 29, 0 }, { 30, 0 }, { 31, 0 }, - { 32, 0 }, { 33, 0 }, { 34, 0 }, { 35, 0 }, { 36, 0 }, + { 254, 0 }, { 255, 0 }, { 256, 0 }, { 0, 30 }, { 0,2914 }, + { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, + { 0, 0 }, { 0, 28 }, { 0,2906 }, { 0, 0 }, { 0, 0 }, + { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, + { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, + { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, + { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 28 }, + { 0,2883 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, + { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 37, 0 }, { 38, 0 }, { 39, 0 }, { 40, 0 }, { 41, 0 }, - { 42, 0 }, { 43, 0 }, { 44, 0 }, { 45, 0 }, { 46, 0 }, - { 47, 0 }, { 48, 0 }, { 49, 0 }, { 50, 0 }, { 51, 0 }, - { 52, 0 }, { 53, 0 }, { 54, 0 }, { 55, 0 }, { 56, 0 }, - { 57, 0 }, { 58, 0 }, { 59, 0 }, { 60, 0 }, { 61, 0 }, - { 62, 0 }, { 63, 0 }, { 64, 0 }, { 65, 0 }, { 66, 0 }, - { 67, 0 }, { 68, 0 }, { 69, 0 }, { 70, 0 }, { 71, 0 }, - { 72, 0 }, { 73, 0 }, { 74, 0 }, { 75, 0 }, { 76, 0 }, - { 77, 0 }, { 78, 0 }, { 79, 0 }, { 80, 0 }, { 81, 0 }, - { 82, 0 }, { 83, 0 }, { 84, 0 }, { 85, 0 }, { 86, 0 }, + { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, + { 0, 0 }, { 0, 0 }, { 48,1652 }, { 49,1652 }, { 50,1652 }, + { 51,1652 }, { 52,1652 }, { 53,1652 }, { 54,1652 }, { 55,1652 }, + { 48,1676 }, { 49,1676 }, { 50,1676 }, { 51,1676 }, { 52,1676 }, + { 53,1676 }, { 54,1676 }, { 55,1676 }, { 56,1676 }, { 57,1676 }, + { 0, 0 }, { 0, 0 }, { 0, 29 }, { 0,2845 }, { 0, 0 }, + { 0, 0 }, { 0, 0 }, { 65,1676 }, { 66,1676 }, { 67,1676 }, + { 68,1676 }, { 69,1676 }, { 70,1676 }, { 48,1691 }, { 49,1691 }, + { 50,1691 }, { 51,1691 }, { 52,1691 }, { 53,1691 }, { 54,1691 }, + { 55,1691 }, { 56,1691 }, { 57,1691 }, { 0, 0 }, { 0, 0 }, - { 87, 0 }, { 88, 0 }, { 89, 0 }, { 90, 0 }, { 91, 0 }, - { 92, 0 }, { 93, 0 }, { 94, 0 }, { 95, 0 }, { 96, 0 }, - { 97, 0 }, { 98, 0 }, { 99, 0 }, { 100, 0 }, { 101, 0 }, - { 102, 0 }, { 103, 0 }, { 104, 0 }, { 105, 0 }, { 106, 0 }, - { 107, 0 }, { 108, 0 }, { 109, 0 }, { 110, 0 }, { 111, 0 }, - { 112, 0 }, { 113, 0 }, { 114, 0 }, { 115, 0 }, { 116, 0 }, - { 117, 0 }, { 118, 0 }, { 119, 0 }, { 120, 0 }, { 121, 0 }, - { 122, 0 }, { 123, 0 }, { 124, 0 }, { 125, 0 }, { 126, 0 }, - { 127, 0 }, { 128, 0 }, { 129, 0 }, { 130, 0 }, { 131, 0 }, - { 132, 0 }, { 133, 0 }, { 134, 0 }, { 135, 0 }, { 136, 0 }, + { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, + { 65,1691 }, { 66,1691 }, { 67,1691 }, { 68,1691 }, { 69,1691 }, + { 70,1691 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 97,1676 }, + { 98,1676 }, { 99,1676 }, { 100,1676 }, { 101,1676 }, { 102,1676 }, + { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, + { 0, 0 }, { 48,1676 }, { 49,1676 }, { 50,1676 }, { 51,1676 }, + { 52,1676 }, { 53,1676 }, { 54,1676 }, { 55,1676 }, { 56,1676 }, + { 57,1676 }, { 0, 0 }, { 97,1691 }, { 98,1691 }, { 99,1691 }, + { 100,1691 }, { 101,1691 }, { 102,1691 }, { 65,1676 }, { 66,1676 }, + { 67,1676 }, { 68,1676 }, { 69,1676 }, { 70,1676 }, { 0, 0 }, - { 137, 0 }, { 138, 0 }, { 139, 0 }, { 140, 0 }, { 141, 0 }, - { 142, 0 }, { 143, 0 }, { 144, 0 }, { 145, 0 }, { 146, 0 }, - { 147, 0 }, { 148, 0 }, { 149, 0 }, { 150, 0 }, { 151, 0 }, - { 152, 0 }, { 153, 0 }, { 154, 0 }, { 155, 0 }, { 156, 0 }, - { 157, 0 }, { 158, 0 }, { 159, 0 }, { 160, 0 }, { 161, 0 }, - { 162, 0 }, { 163, 0 }, { 164, 0 }, { 165, 0 }, { 166, 0 }, - { 167, 0 }, { 168, 0 }, { 169, 0 }, { 170, 0 }, { 171, 0 }, - { 172, 0 }, { 173, 0 }, { 174, 0 }, { 175, 0 }, { 176, 0 }, - { 177, 0 }, { 178, 0 }, { 179, 0 }, { 180, 0 }, { 181, 0 }, - { 182, 0 }, { 183, 0 }, { 184, 0 }, { 185, 0 }, { 186, 0 }, + { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, + { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, + { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, + { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, + { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, + { 97,1676 }, { 98,1676 }, { 99,1676 }, { 100,1676 }, { 101,1676 }, + { 102,1676 }, { 0, 36 }, { 0,2741 }, { 1, 0 }, { 2, 0 }, + { 3, 0 }, { 4, 0 }, { 5, 0 }, { 6, 0 }, { 7, 0 }, + { 8, 0 }, { 9, 0 }, { 10, 0 }, { 11, 0 }, { 12, 0 }, + { 13, 0 }, { 14, 0 }, { 15, 0 }, { 16, 0 }, { 17, 0 }, - { 187, 0 }, { 188, 0 }, { 189, 0 }, { 190, 0 }, { 191, 0 }, - { 192, 0 }, { 193, 0 }, { 194, 0 }, { 195, 0 }, { 196, 0 }, - { 197, 0 }, { 198, 0 }, { 199, 0 }, { 200, 0 }, { 201, 0 }, - { 202, 0 }, { 203, 0 }, { 204, 0 }, { 205, 0 }, { 206, 0 }, - { 207, 0 }, { 208, 0 }, { 209, 0 }, { 210, 0 }, { 211, 0 }, - { 212, 0 }, { 213, 0 }, { 214, 0 }, { 215, 0 }, { 216, 0 }, - { 217, 0 }, { 218, 0 }, { 219, 0 }, { 220, 0 }, { 221, 0 }, - { 222, 0 }, { 223, 0 }, { 224, 0 }, { 225, 0 }, { 226, 0 }, - { 227, 0 }, { 228, 0 }, { 229, 0 }, { 230, 0 }, { 231, 0 }, - { 232, 0 }, { 233, 0 }, { 234, 0 }, { 235, 0 }, { 236, 0 }, + { 18, 0 }, { 19, 0 }, { 20, 0 }, { 21, 0 }, { 22, 0 }, + { 23, 0 }, { 24, 0 }, { 25, 0 }, { 26, 0 }, { 27, 0 }, + { 28, 0 }, { 29, 0 }, { 30, 0 }, { 31, 0 }, { 32, 0 }, + { 33, 0 }, { 34, 0 }, { 35, 0 }, { 0, 0 }, { 37, 0 }, + { 38, 0 }, { 39, 0 }, { 40, 0 }, { 41, 0 }, { 42, 0 }, + { 43, 0 }, { 44, 0 }, { 45, 0 }, { 46, 0 }, { 47, 0 }, + { 48, 0 }, { 49, 0 }, { 50, 0 }, { 51, 0 }, { 52, 0 }, + { 53, 0 }, { 54, 0 }, { 55, 0 }, { 56, 0 }, { 57, 0 }, + { 58, 0 }, { 59, 0 }, { 60, 0 }, { 61, 0 }, { 62, 0 }, + { 63, 0 }, { 64, 0 }, { 65, 0 }, { 66, 0 }, { 67, 0 }, - { 237, 0 }, { 238, 0 }, { 239, 0 }, { 240, 0 }, { 241, 0 }, - { 242, 0 }, { 243, 0 }, { 244, 0 }, { 245, 0 }, { 246, 0 }, - { 247, 0 }, { 248, 0 }, { 249, 0 }, { 250, 0 }, { 251, 0 }, - { 252, 0 }, { 253, 0 }, { 254, 0 }, { 255, 0 }, { 256, 0 }, - { 0, 1 }, { 0,19629 }, { 1,-258 }, { 2,-258 }, { 3,-258 }, - { 4,-258 }, { 5,-258 }, { 6,-258 }, { 7,-258 }, { 8,-258 }, - { 9,-258 }, { 0, 0 }, { 11,-258 }, { 12,-258 }, { 0, 0 }, - { 14,-258 }, { 15,-258 }, { 16,-258 }, { 17,-258 }, { 18,-258 }, - { 19,-258 }, { 20,-258 }, { 21,-258 }, { 22,-258 }, { 23,-258 }, - { 24,-258 }, { 25,-258 }, { 26,-258 }, { 27,-258 }, { 28,-258 }, - - { 29,-258 }, { 30,-258 }, { 31,-258 }, { 32,-258 }, { 33, 0 }, - { 34,-258 }, { 35, 0 }, { 36,-258 }, { 37, 0 }, { 38, 0 }, - { 39,-258 }, { 40,-258 }, { 41,-258 }, { 42, 0 }, { 43, 0 }, - { 44,-258 }, { 45, 0 }, { 46,-258 }, { 47, 0 }, { 48,-258 }, - { 49,-258 }, { 50,-258 }, { 51,-258 }, { 52,-258 }, { 53,-258 }, - { 54,-258 }, { 55,-258 }, { 56,-258 }, { 57,-258 }, { 58,-258 }, - { 59,-258 }, { 60, 0 }, { 61, 0 }, { 62, 0 }, { 63, 0 }, - { 64, 0 }, { 65,-258 }, { 66,-258 }, { 67,-258 }, { 68,-258 }, - { 69,-258 }, { 70,-258 }, { 71,-258 }, { 72,-258 }, { 73,-258 }, - { 74,-258 }, { 75,-258 }, { 76,-258 }, { 77,-258 }, { 78,-258 }, - - { 79,-258 }, { 80,-258 }, { 81,-258 }, { 82,-258 }, { 83,-258 }, - { 84,-258 }, { 85,-258 }, { 86,-258 }, { 87,-258 }, { 88,-258 }, - { 89,-258 }, { 90,-258 }, { 91,-258 }, { 92,-258 }, { 93,-258 }, - { 94, 0 }, { 95,-258 }, { 96, 0 }, { 97,-258 }, { 98,-258 }, - { 99,-258 }, { 100,-258 }, { 101,-258 }, { 102,-258 }, { 103,-258 }, - { 104,-258 }, { 105,-258 }, { 106,-258 }, { 107,-258 }, { 108,-258 }, - { 109,-258 }, { 110,-258 }, { 111,-258 }, { 112,-258 }, { 113,-258 }, - { 114,-258 }, { 115,-258 }, { 116,-258 }, { 117,-258 }, { 118,-258 }, - { 119,-258 }, { 120,-258 }, { 121,-258 }, { 122,-258 }, { 123,-258 }, - { 124, 0 }, { 125,-258 }, { 126, 0 }, { 127,-258 }, { 128,-258 }, - - { 129,-258 }, { 130,-258 }, { 131,-258 }, { 132,-258 }, { 133,-258 }, - { 134,-258 }, { 135,-258 }, { 136,-258 }, { 137,-258 }, { 138,-258 }, - { 139,-258 }, { 140,-258 }, { 141,-258 }, { 142,-258 }, { 143,-258 }, - { 144,-258 }, { 145,-258 }, { 146,-258 }, { 147,-258 }, { 148,-258 }, - { 149,-258 }, { 150,-258 }, { 151,-258 }, { 152,-258 }, { 153,-258 }, - { 154,-258 }, { 155,-258 }, { 156,-258 }, { 157,-258 }, { 158,-258 }, - { 159,-258 }, { 160,-258 }, { 161,-258 }, { 162,-258 }, { 163,-258 }, - { 164,-258 }, { 165,-258 }, { 166,-258 }, { 167,-258 }, { 168,-258 }, - { 169,-258 }, { 170,-258 }, { 171,-258 }, { 172,-258 }, { 173,-258 }, - { 174,-258 }, { 175,-258 }, { 176,-258 }, { 177,-258 }, { 178,-258 }, - - { 179,-258 }, { 180,-258 }, { 181,-258 }, { 182,-258 }, { 183,-258 }, - { 184,-258 }, { 185,-258 }, { 186,-258 }, { 187,-258 }, { 188,-258 }, - { 189,-258 }, { 190,-258 }, { 191,-258 }, { 192,-258 }, { 193,-258 }, - { 194,-258 }, { 195,-258 }, { 196,-258 }, { 197,-258 }, { 198,-258 }, - { 199,-258 }, { 200,-258 }, { 201,-258 }, { 202,-258 }, { 203,-258 }, - { 204,-258 }, { 205,-258 }, { 206,-258 }, { 207,-258 }, { 208,-258 }, - { 209,-258 }, { 210,-258 }, { 211,-258 }, { 212,-258 }, { 213,-258 }, - { 214,-258 }, { 215,-258 }, { 216,-258 }, { 217,-258 }, { 218,-258 }, - { 219,-258 }, { 220,-258 }, { 221,-258 }, { 222,-258 }, { 223,-258 }, - { 224,-258 }, { 225,-258 }, { 226,-258 }, { 227,-258 }, { 228,-258 }, - - { 229,-258 }, { 230,-258 }, { 231,-258 }, { 232,-258 }, { 233,-258 }, - { 234,-258 }, { 235,-258 }, { 236,-258 }, { 237,-258 }, { 238,-258 }, - { 239,-258 }, { 240,-258 }, { 241,-258 }, { 242,-258 }, { 243,-258 }, - { 244,-258 }, { 245,-258 }, { 246,-258 }, { 247,-258 }, { 248,-258 }, - { 249,-258 }, { 250,-258 }, { 251,-258 }, { 252,-258 }, { 253,-258 }, - { 254,-258 }, { 255,-258 }, { 256,-258 }, { 0, 2 }, { 0,19371 }, - { 0, 73 }, { 0,19369 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - - { 0, 0 }, { 0, 0 }, { 0, 77 }, { 0,19347 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 33, 0 }, { 0, 0 }, { 35, 0 }, - { 0, 0 }, { 37, 0 }, { 38, 0 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 42, 0 }, { 43, 0 }, { 0, 0 }, { 45, 0 }, - { 0, 0 }, { 47, 0 }, { 0, 0 }, { 0, 0 }, { 48, 0 }, - { 49, 0 }, { 50, 0 }, { 51, 0 }, { 52, 0 }, { 53, 0 }, - { 54, 0 }, { 55, 0 }, { 56, 0 }, { 57, 0 }, { 60, 0 }, - { 61, 0 }, { 62, 0 }, { 63, 0 }, { 64, 0 }, { 0, 75 }, - { 0,19305 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, + { 68, 0 }, { 69, 0 }, { 70, 0 }, { 71, 0 }, { 72, 0 }, + { 73, 0 }, { 74, 0 }, { 75, 0 }, { 76, 0 }, { 77, 0 }, + { 78, 0 }, { 79, 0 }, { 80, 0 }, { 81, 0 }, { 82, 0 }, + { 83, 0 }, { 84, 0 }, { 85, 0 }, { 86, 0 }, { 87, 0 }, + { 88, 0 }, { 89, 0 }, { 90, 0 }, { 91, 0 }, { 92, 0 }, + { 93, 0 }, { 94, 0 }, { 95, 0 }, { 96, 0 }, { 97, 0 }, + { 98, 0 }, { 99, 0 }, { 100, 0 }, { 101, 0 }, { 102, 0 }, + { 103, 0 }, { 104, 0 }, { 105, 0 }, { 106, 0 }, { 107, 0 }, + { 108, 0 }, { 109, 0 }, { 110, 0 }, { 111, 0 }, { 112, 0 }, + { 113, 0 }, { 114, 0 }, { 115, 0 }, { 116, 0 }, { 117, 0 }, - { 69,-4404 }, { 48, 42 }, { 49, 42 }, { 50, 42 }, { 51, 42 }, - { 52, 42 }, { 53, 42 }, { 54, 42 }, { 55, 42 }, { 56, 42 }, - { 57, 42 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 94, 0 }, { 0, 0 }, - { 96, 0 }, { 0, 9 }, { 0,19273 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 101,-4404 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 9, 0 }, { 10, 0 }, { 0, 0 }, { 12, 0 }, - { 13, 0 }, { 0, 0 }, { 0, 0 }, { 48, 0 }, { 49, 0 }, - { 50, 0 }, { 51, 0 }, { 52, 0 }, { 53, 0 }, { 54, 0 }, + { 118, 0 }, { 119, 0 }, { 120, 0 }, { 121, 0 }, { 122, 0 }, + { 123, 0 }, { 124, 0 }, { 125, 0 }, { 126, 0 }, { 127, 0 }, + { 128, 0 }, { 129, 0 }, { 130, 0 }, { 131, 0 }, { 132, 0 }, + { 133, 0 }, { 134, 0 }, { 135, 0 }, { 136, 0 }, { 137, 0 }, + { 138, 0 }, { 139, 0 }, { 140, 0 }, { 141, 0 }, { 142, 0 }, + { 143, 0 }, { 144, 0 }, { 145, 0 }, { 146, 0 }, { 147, 0 }, + { 148, 0 }, { 149, 0 }, { 150, 0 }, { 151, 0 }, { 152, 0 }, + { 153, 0 }, { 154, 0 }, { 155, 0 }, { 156, 0 }, { 157, 0 }, + { 158, 0 }, { 159, 0 }, { 160, 0 }, { 161, 0 }, { 162, 0 }, + { 163, 0 }, { 164, 0 }, { 165, 0 }, { 166, 0 }, { 167, 0 }, + + { 168, 0 }, { 169, 0 }, { 170, 0 }, { 171, 0 }, { 172, 0 }, + { 173, 0 }, { 174, 0 }, { 175, 0 }, { 176, 0 }, { 177, 0 }, + { 178, 0 }, { 179, 0 }, { 180, 0 }, { 181, 0 }, { 182, 0 }, + { 183, 0 }, { 184, 0 }, { 185, 0 }, { 186, 0 }, { 187, 0 }, + { 188, 0 }, { 189, 0 }, { 190, 0 }, { 191, 0 }, { 192, 0 }, + { 193, 0 }, { 194, 0 }, { 195, 0 }, { 196, 0 }, { 197, 0 }, + { 198, 0 }, { 199, 0 }, { 200, 0 }, { 201, 0 }, { 202, 0 }, + { 203, 0 }, { 204, 0 }, { 205, 0 }, { 206, 0 }, { 207, 0 }, + { 208, 0 }, { 209, 0 }, { 210, 0 }, { 211, 0 }, { 212, 0 }, + { 213, 0 }, { 214, 0 }, { 215, 0 }, { 216, 0 }, { 217, 0 }, - { 55, 0 }, { 56, 0 }, { 57, 0 }, { 124, 0 }, { 0, 0 }, - { 126, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 32, 0 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 39,-10204 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 45,-10202 }, { 0, 9 }, { 0,19226 }, - { 1,2553 }, { 2,2553 }, { 3,2553 }, { 4,2553 }, { 5,2553 }, - { 6,2553 }, { 7,2553 }, { 8,2553 }, { 9,2811 }, { 10,-3788 }, - { 11,2553 }, { 12,2811 }, { 13,-3788 }, { 14,2553 }, { 15,2553 }, - { 16,2553 }, { 17,2553 }, { 18,2553 }, { 19,2553 }, { 20,2553 }, - { 21,2553 }, { 22,2553 }, { 23,2553 }, { 24,2553 }, { 25,2553 }, - - { 26,2553 }, { 27,2553 }, { 28,2553 }, { 29,2553 }, { 30,2553 }, - { 31,2553 }, { 32,2811 }, { 33,2553 }, { 34,2553 }, { 35,2553 }, - { 36,2553 }, { 37,2553 }, { 38,2553 }, { 39,2553 }, { 40,2553 }, - { 41,2553 }, { 42,2553 }, { 43,2553 }, { 44,2553 }, { 45,3069 }, - { 46,2553 }, { 47,2553 }, { 48,2553 }, { 49,2553 }, { 50,2553 }, - { 51,2553 }, { 52,2553 }, { 53,2553 }, { 54,2553 }, { 55,2553 }, - { 56,2553 }, { 57,2553 }, { 58,2553 }, { 59,2553 }, { 60,2553 }, - { 61,2553 }, { 62,2553 }, { 63,2553 }, { 64,2553 }, { 65,2553 }, - { 66,2553 }, { 67,2553 }, { 68,2553 }, { 69,2553 }, { 70,2553 }, - { 71,2553 }, { 72,2553 }, { 73,2553 }, { 74,2553 }, { 75,2553 }, - - { 76,2553 }, { 77,2553 }, { 78,2553 }, { 79,2553 }, { 80,2553 }, - { 81,2553 }, { 82,2553 }, { 83,2553 }, { 84,2553 }, { 85,2553 }, - { 86,2553 }, { 87,2553 }, { 88,2553 }, { 89,2553 }, { 90,2553 }, - { 91,2553 }, { 92,2553 }, { 93,2553 }, { 94,2553 }, { 95,2553 }, - { 96,2553 }, { 97,2553 }, { 98,2553 }, { 99,2553 }, { 100,2553 }, - { 101,2553 }, { 102,2553 }, { 103,2553 }, { 104,2553 }, { 105,2553 }, - { 106,2553 }, { 107,2553 }, { 108,2553 }, { 109,2553 }, { 110,2553 }, - { 111,2553 }, { 112,2553 }, { 113,2553 }, { 114,2553 }, { 115,2553 }, - { 116,2553 }, { 117,2553 }, { 118,2553 }, { 119,2553 }, { 120,2553 }, - { 121,2553 }, { 122,2553 }, { 123,2553 }, { 124,2553 }, { 125,2553 }, - - { 126,2553 }, { 127,2553 }, { 128,2553 }, { 129,2553 }, { 130,2553 }, - { 131,2553 }, { 132,2553 }, { 133,2553 }, { 134,2553 }, { 135,2553 }, - { 136,2553 }, { 137,2553 }, { 138,2553 }, { 139,2553 }, { 140,2553 }, - { 141,2553 }, { 142,2553 }, { 143,2553 }, { 144,2553 }, { 145,2553 }, - { 146,2553 }, { 147,2553 }, { 148,2553 }, { 149,2553 }, { 150,2553 }, - { 151,2553 }, { 152,2553 }, { 153,2553 }, { 154,2553 }, { 155,2553 }, - { 156,2553 }, { 157,2553 }, { 158,2553 }, { 159,2553 }, { 160,2553 }, - { 161,2553 }, { 162,2553 }, { 163,2553 }, { 164,2553 }, { 165,2553 }, - { 166,2553 }, { 167,2553 }, { 168,2553 }, { 169,2553 }, { 170,2553 }, - { 171,2553 }, { 172,2553 }, { 173,2553 }, { 174,2553 }, { 175,2553 }, - - { 176,2553 }, { 177,2553 }, { 178,2553 }, { 179,2553 }, { 180,2553 }, - { 181,2553 }, { 182,2553 }, { 183,2553 }, { 184,2553 }, { 185,2553 }, - { 186,2553 }, { 187,2553 }, { 188,2553 }, { 189,2553 }, { 190,2553 }, - { 191,2553 }, { 192,2553 }, { 193,2553 }, { 194,2553 }, { 195,2553 }, - { 196,2553 }, { 197,2553 }, { 198,2553 }, { 199,2553 }, { 200,2553 }, - { 201,2553 }, { 202,2553 }, { 203,2553 }, { 204,2553 }, { 205,2553 }, - { 206,2553 }, { 207,2553 }, { 208,2553 }, { 209,2553 }, { 210,2553 }, - { 211,2553 }, { 212,2553 }, { 213,2553 }, { 214,2553 }, { 215,2553 }, - { 216,2553 }, { 217,2553 }, { 218,2553 }, { 219,2553 }, { 220,2553 }, - { 221,2553 }, { 222,2553 }, { 223,2553 }, { 224,2553 }, { 225,2553 }, - - { 226,2553 }, { 227,2553 }, { 228,2553 }, { 229,2553 }, { 230,2553 }, - { 231,2553 }, { 232,2553 }, { 233,2553 }, { 234,2553 }, { 235,2553 }, - { 236,2553 }, { 237,2553 }, { 238,2553 }, { 239,2553 }, { 240,2553 }, - { 241,2553 }, { 242,2553 }, { 243,2553 }, { 244,2553 }, { 245,2553 }, - { 246,2553 }, { 247,2553 }, { 248,2553 }, { 249,2553 }, { 250,2553 }, - { 251,2553 }, { 252,2553 }, { 253,2553 }, { 254,2553 }, { 255,2553 }, - { 256,2553 }, { 0, 3 }, { 0,18968 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 16 }, { 0,18961 }, + { 218, 0 }, { 219, 0 }, { 220, 0 }, { 221, 0 }, { 222, 0 }, + { 223, 0 }, { 224, 0 }, { 225, 0 }, { 226, 0 }, { 227, 0 }, + { 228, 0 }, { 229, 0 }, { 230, 0 }, { 231, 0 }, { 232, 0 }, + { 233, 0 }, { 234, 0 }, { 235, 0 }, { 236, 0 }, { 237, 0 }, + { 238, 0 }, { 239, 0 }, { 240, 0 }, { 241, 0 }, { 242, 0 }, + { 243, 0 }, { 244, 0 }, { 245, 0 }, { 246, 0 }, { 247, 0 }, + { 248, 0 }, { 249, 0 }, { 250, 0 }, { 251, 0 }, { 252, 0 }, + { 253, 0 }, { 254, 0 }, { 255, 0 }, { 256, 0 }, { 0, 37 }, + { 0,2483 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 9, 0 }, { 10, 0 }, - { 0, 0 }, { 12, 0 }, { 13, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 33, 0 }, { 0, 0 }, { 35, 0 }, { 0, 0 }, { 37, 0 }, - { 38, 0 }, { 32, 0 }, { 0, 0 }, { 0, 0 }, { 42, 0 }, - { 43, 0 }, { 0, 0 }, { 45, 0 }, { 39,-10512 }, { 47, 0 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 45,-10507 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 60, 0 }, { 61, 0 }, { 62, 0 }, - { 63, 0 }, { 64, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, + { 0, 0 }, { 36,-8348 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, + { 0, 0 }, { 0, 0 }, { 0, 0 }, { 48,1373 }, { 49,1373 }, + { 50,1373 }, { 51,1373 }, { 52,1373 }, { 53,1373 }, { 54,1373 }, + { 55,1373 }, { 56,1373 }, { 57,1373 }, { 0, 0 }, { 0, 0 }, + { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, + { 65,1373 }, { 66,1373 }, { 67,1373 }, { 68,1373 }, { 69,1373 }, + { 70,1373 }, { 71,1373 }, { 72,1373 }, { 73,1373 }, { 74,1373 }, + { 75,1373 }, { 76,1373 }, { 77,1373 }, { 78,1373 }, { 79,1373 }, + { 80,1373 }, { 81,1373 }, { 82,1373 }, { 83,1373 }, { 84,1373 }, + { 85,1373 }, { 86,1373 }, { 87,1373 }, { 88,1373 }, { 89,1373 }, + { 90,1373 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, + { 95,1373 }, { 0, 0 }, { 97,1373 }, { 98,1373 }, { 99,1373 }, + { 100,1373 }, { 101,1373 }, { 102,1373 }, { 103,1373 }, { 104,1373 }, + { 105,1373 }, { 106,1373 }, { 107,1373 }, { 108,1373 }, { 109,1373 }, + + { 110,1373 }, { 111,1373 }, { 112,1373 }, { 113,1373 }, { 114,1373 }, + { 115,1373 }, { 116,1373 }, { 117,1373 }, { 118,1373 }, { 119,1373 }, + { 120,1373 }, { 121,1373 }, { 122,1373 }, { 0, 0 }, { 0, 0 }, + { 0, 0 }, { 0, 0 }, { 0, 0 }, { 128,1373 }, { 129,1373 }, + { 130,1373 }, { 131,1373 }, { 132,1373 }, { 133,1373 }, { 134,1373 }, + { 135,1373 }, { 136,1373 }, { 137,1373 }, { 138,1373 }, { 139,1373 }, + { 140,1373 }, { 141,1373 }, { 142,1373 }, { 143,1373 }, { 144,1373 }, + { 145,1373 }, { 146,1373 }, { 147,1373 }, { 148,1373 }, { 149,1373 }, + { 150,1373 }, { 151,1373 }, { 152,1373 }, { 153,1373 }, { 154,1373 }, + { 155,1373 }, { 156,1373 }, { 157,1373 }, { 158,1373 }, { 159,1373 }, + + { 160,1373 }, { 161,1373 }, { 162,1373 }, { 163,1373 }, { 164,1373 }, + { 165,1373 }, { 166,1373 }, { 167,1373 }, { 168,1373 }, { 169,1373 }, + { 170,1373 }, { 171,1373 }, { 172,1373 }, { 173,1373 }, { 174,1373 }, + { 175,1373 }, { 176,1373 }, { 177,1373 }, { 178,1373 }, { 179,1373 }, + { 180,1373 }, { 181,1373 }, { 182,1373 }, { 183,1373 }, { 184,1373 }, + { 185,1373 }, { 186,1373 }, { 187,1373 }, { 188,1373 }, { 189,1373 }, + { 190,1373 }, { 191,1373 }, { 192,1373 }, { 193,1373 }, { 194,1373 }, + { 195,1373 }, { 196,1373 }, { 197,1373 }, { 198,1373 }, { 199,1373 }, + { 200,1373 }, { 201,1373 }, { 202,1373 }, { 203,1373 }, { 204,1373 }, + { 205,1373 }, { 206,1373 }, { 207,1373 }, { 208,1373 }, { 209,1373 }, + + { 210,1373 }, { 211,1373 }, { 212,1373 }, { 213,1373 }, { 214,1373 }, + { 215,1373 }, { 216,1373 }, { 217,1373 }, { 218,1373 }, { 219,1373 }, + { 220,1373 }, { 221,1373 }, { 222,1373 }, { 223,1373 }, { 224,1373 }, + { 225,1373 }, { 226,1373 }, { 227,1373 }, { 228,1373 }, { 229,1373 }, + { 230,1373 }, { 231,1373 }, { 232,1373 }, { 233,1373 }, { 234,1373 }, + { 235,1373 }, { 236,1373 }, { 237,1373 }, { 238,1373 }, { 239,1373 }, + { 240,1373 }, { 241,1373 }, { 242,1373 }, { 243,1373 }, { 244,1373 }, + { 245,1373 }, { 246,1373 }, { 247,1373 }, { 248,1373 }, { 249,1373 }, + { 250,1373 }, { 251,1373 }, { 252,1373 }, { 253,1373 }, { 254,1373 }, + { 255,1373 }, { 0, 28 }, { 0,2226 }, { 0, 0 }, { 0, 0 }, + { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 94, 0 }, { 0, 0 }, { 96, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, + { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 28 }, + { 0,2203 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 124, 0 }, { 0, 0 }, { 126, 0 }, { 0, 16 }, - { 0,18840 }, { 1,3199 }, { 2,3199 }, { 3,3199 }, { 4,3199 }, - { 5,3199 }, { 6,3199 }, { 7,3199 }, { 8,3199 }, { 9,3457 }, - { 10,-3220 }, { 11,3199 }, { 12,3457 }, { 13,-3220 }, { 14,3199 }, - { 15,3199 }, { 16,3199 }, { 17,3199 }, { 18,3199 }, { 19,3199 }, - { 20,3199 }, { 21,3199 }, { 22,3199 }, { 23,3199 }, { 24,3199 }, - { 25,3199 }, { 26,3199 }, { 27,3199 }, { 28,3199 }, { 29,3199 }, - { 30,3199 }, { 31,3199 }, { 32,3457 }, { 33,3199 }, { 34,3199 }, - { 35,3199 }, { 36,3199 }, { 37,3199 }, { 38,3199 }, { 39,3199 }, - - { 40,3199 }, { 41,3199 }, { 42,3199 }, { 43,3199 }, { 44,3199 }, - { 45,3715 }, { 46,3199 }, { 47,3199 }, { 48,3199 }, { 49,3199 }, - { 50,3199 }, { 51,3199 }, { 52,3199 }, { 53,3199 }, { 54,3199 }, - { 55,3199 }, { 56,3199 }, { 57,3199 }, { 58,3199 }, { 59,3199 }, - { 60,3199 }, { 61,3199 }, { 62,3199 }, { 63,3199 }, { 64,3199 }, - { 65,3199 }, { 66,3199 }, { 67,3199 }, { 68,3199 }, { 69,3199 }, - { 70,3199 }, { 71,3199 }, { 72,3199 }, { 73,3199 }, { 74,3199 }, - { 75,3199 }, { 76,3199 }, { 77,3199 }, { 78,3199 }, { 79,3199 }, - { 80,3199 }, { 81,3199 }, { 82,3199 }, { 83,3199 }, { 84,3199 }, - { 85,3199 }, { 86,3199 }, { 87,3199 }, { 88,3199 }, { 89,3199 }, - - { 90,3199 }, { 91,3199 }, { 92,3199 }, { 93,3199 }, { 94,3199 }, - { 95,3199 }, { 96,3199 }, { 97,3199 }, { 98,3199 }, { 99,3199 }, - { 100,3199 }, { 101,3199 }, { 102,3199 }, { 103,3199 }, { 104,3199 }, - { 105,3199 }, { 106,3199 }, { 107,3199 }, { 108,3199 }, { 109,3199 }, - { 110,3199 }, { 111,3199 }, { 112,3199 }, { 113,3199 }, { 114,3199 }, - { 115,3199 }, { 116,3199 }, { 117,3199 }, { 118,3199 }, { 119,3199 }, - { 120,3199 }, { 121,3199 }, { 122,3199 }, { 123,3199 }, { 124,3199 }, - { 125,3199 }, { 126,3199 }, { 127,3199 }, { 128,3199 }, { 129,3199 }, - { 130,3199 }, { 131,3199 }, { 132,3199 }, { 133,3199 }, { 134,3199 }, - { 135,3199 }, { 136,3199 }, { 137,3199 }, { 138,3199 }, { 139,3199 }, - - { 140,3199 }, { 141,3199 }, { 142,3199 }, { 143,3199 }, { 144,3199 }, - { 145,3199 }, { 146,3199 }, { 147,3199 }, { 148,3199 }, { 149,3199 }, - { 150,3199 }, { 151,3199 }, { 152,3199 }, { 153,3199 }, { 154,3199 }, - { 155,3199 }, { 156,3199 }, { 157,3199 }, { 158,3199 }, { 159,3199 }, - { 160,3199 }, { 161,3199 }, { 162,3199 }, { 163,3199 }, { 164,3199 }, - { 165,3199 }, { 166,3199 }, { 167,3199 }, { 168,3199 }, { 169,3199 }, - { 170,3199 }, { 171,3199 }, { 172,3199 }, { 173,3199 }, { 174,3199 }, - { 175,3199 }, { 176,3199 }, { 177,3199 }, { 178,3199 }, { 179,3199 }, - { 180,3199 }, { 181,3199 }, { 182,3199 }, { 183,3199 }, { 184,3199 }, - { 185,3199 }, { 186,3199 }, { 187,3199 }, { 188,3199 }, { 189,3199 }, - - { 190,3199 }, { 191,3199 }, { 192,3199 }, { 193,3199 }, { 194,3199 }, - { 195,3199 }, { 196,3199 }, { 197,3199 }, { 198,3199 }, { 199,3199 }, - { 200,3199 }, { 201,3199 }, { 202,3199 }, { 203,3199 }, { 204,3199 }, - { 205,3199 }, { 206,3199 }, { 207,3199 }, { 208,3199 }, { 209,3199 }, - { 210,3199 }, { 211,3199 }, { 212,3199 }, { 213,3199 }, { 214,3199 }, - { 215,3199 }, { 216,3199 }, { 217,3199 }, { 218,3199 }, { 219,3199 }, - { 220,3199 }, { 221,3199 }, { 222,3199 }, { 223,3199 }, { 224,3199 }, - { 225,3199 }, { 226,3199 }, { 227,3199 }, { 228,3199 }, { 229,3199 }, - { 230,3199 }, { 231,3199 }, { 232,3199 }, { 233,3199 }, { 234,3199 }, - { 235,3199 }, { 236,3199 }, { 237,3199 }, { 238,3199 }, { 239,3199 }, - - { 240,3199 }, { 241,3199 }, { 242,3199 }, { 243,3199 }, { 244,3199 }, - { 245,3199 }, { 246,3199 }, { 247,3199 }, { 248,3199 }, { 249,3199 }, - { 250,3199 }, { 251,3199 }, { 252,3199 }, { 253,3199 }, { 254,3199 }, - { 255,3199 }, { 256,3199 }, { 0, 22 }, { 0,18582 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 9, 0 }, { 10, 0 }, { 0, 0 }, - { 12, 0 }, { 13, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - - { 32, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 39,-10877 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 45,-10850 }, { 0, 22 }, - { 0,18535 }, { 1,3926 }, { 2,3926 }, { 3,3926 }, { 4,3926 }, - { 5,3926 }, { 6,3926 }, { 7,3926 }, { 8,3926 }, { 9,4184 }, - { 10,-3215 }, { 11,3926 }, { 12,4184 }, { 13,-3215 }, { 14,3926 }, - { 15,3926 }, { 16,3926 }, { 17,3926 }, { 18,3926 }, { 19,3926 }, - { 20,3926 }, { 21,3926 }, { 22,3926 }, { 23,3926 }, { 24,3926 }, - { 25,3926 }, { 26,3926 }, { 27,3926 }, { 28,3926 }, { 29,3926 }, - { 30,3926 }, { 31,3926 }, { 32,4184 }, { 33,3926 }, { 34,3926 }, - - { 35,3926 }, { 36,3926 }, { 37,3926 }, { 38,3926 }, { 39,3926 }, - { 40,3926 }, { 41,3926 }, { 42,3926 }, { 43,3926 }, { 44,3926 }, - { 45,4442 }, { 46,3926 }, { 47,3926 }, { 48,3926 }, { 49,3926 }, - { 50,3926 }, { 51,3926 }, { 52,3926 }, { 53,3926 }, { 54,3926 }, - { 55,3926 }, { 56,3926 }, { 57,3926 }, { 58,3926 }, { 59,3926 }, - { 60,3926 }, { 61,3926 }, { 62,3926 }, { 63,3926 }, { 64,3926 }, - { 65,3926 }, { 66,3926 }, { 67,3926 }, { 68,3926 }, { 69,3926 }, - { 70,3926 }, { 71,3926 }, { 72,3926 }, { 73,3926 }, { 74,3926 }, - { 75,3926 }, { 76,3926 }, { 77,3926 }, { 78,3926 }, { 79,3926 }, - { 80,3926 }, { 81,3926 }, { 82,3926 }, { 83,3926 }, { 84,3926 }, - - { 85,3926 }, { 86,3926 }, { 87,3926 }, { 88,3926 }, { 89,3926 }, - { 90,3926 }, { 91,3926 }, { 92,3926 }, { 93,3926 }, { 94,3926 }, - { 95,3926 }, { 96,3926 }, { 97,3926 }, { 98,3926 }, { 99,3926 }, - { 100,3926 }, { 101,3926 }, { 102,3926 }, { 103,3926 }, { 104,3926 }, - { 105,3926 }, { 106,3926 }, { 107,3926 }, { 108,3926 }, { 109,3926 }, - { 110,3926 }, { 111,3926 }, { 112,3926 }, { 113,3926 }, { 114,3926 }, - { 115,3926 }, { 116,3926 }, { 117,3926 }, { 118,3926 }, { 119,3926 }, - { 120,3926 }, { 121,3926 }, { 122,3926 }, { 123,3926 }, { 124,3926 }, - { 125,3926 }, { 126,3926 }, { 127,3926 }, { 128,3926 }, { 129,3926 }, - { 130,3926 }, { 131,3926 }, { 132,3926 }, { 133,3926 }, { 134,3926 }, - - { 135,3926 }, { 136,3926 }, { 137,3926 }, { 138,3926 }, { 139,3926 }, - { 140,3926 }, { 141,3926 }, { 142,3926 }, { 143,3926 }, { 144,3926 }, - { 145,3926 }, { 146,3926 }, { 147,3926 }, { 148,3926 }, { 149,3926 }, - { 150,3926 }, { 151,3926 }, { 152,3926 }, { 153,3926 }, { 154,3926 }, - { 155,3926 }, { 156,3926 }, { 157,3926 }, { 158,3926 }, { 159,3926 }, - { 160,3926 }, { 161,3926 }, { 162,3926 }, { 163,3926 }, { 164,3926 }, - { 165,3926 }, { 166,3926 }, { 167,3926 }, { 168,3926 }, { 169,3926 }, - { 170,3926 }, { 171,3926 }, { 172,3926 }, { 173,3926 }, { 174,3926 }, - { 175,3926 }, { 176,3926 }, { 177,3926 }, { 178,3926 }, { 179,3926 }, - { 180,3926 }, { 181,3926 }, { 182,3926 }, { 183,3926 }, { 184,3926 }, - - { 185,3926 }, { 186,3926 }, { 187,3926 }, { 188,3926 }, { 189,3926 }, - { 190,3926 }, { 191,3926 }, { 192,3926 }, { 193,3926 }, { 194,3926 }, - { 195,3926 }, { 196,3926 }, { 197,3926 }, { 198,3926 }, { 199,3926 }, - { 200,3926 }, { 201,3926 }, { 202,3926 }, { 203,3926 }, { 204,3926 }, - { 205,3926 }, { 206,3926 }, { 207,3926 }, { 208,3926 }, { 209,3926 }, - { 210,3926 }, { 211,3926 }, { 212,3926 }, { 213,3926 }, { 214,3926 }, - { 215,3926 }, { 216,3926 }, { 217,3926 }, { 218,3926 }, { 219,3926 }, - { 220,3926 }, { 221,3926 }, { 222,3926 }, { 223,3926 }, { 224,3926 }, - { 225,3926 }, { 226,3926 }, { 227,3926 }, { 228,3926 }, { 229,3926 }, - { 230,3926 }, { 231,3926 }, { 232,3926 }, { 233,3926 }, { 234,3926 }, - - { 235,3926 }, { 236,3926 }, { 237,3926 }, { 238,3926 }, { 239,3926 }, - { 240,3926 }, { 241,3926 }, { 242,3926 }, { 243,3926 }, { 244,3926 }, - { 245,3926 }, { 246,3926 }, { 247,3926 }, { 248,3926 }, { 249,3926 }, - { 250,3926 }, { 251,3926 }, { 252,3926 }, { 253,3926 }, { 254,3926 }, - { 255,3926 }, { 256,3926 }, { 0, 39 }, { 0,18277 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 0, 37 }, { 0,18269 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 37 }, { 0,18246 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 48,-10829 }, { 49,-10829 }, { 50,-10829 }, { 51,-10829 }, - { 52,-10829 }, { 53,-10829 }, { 54,-10829 }, { 55,-10829 }, { 48,4434 }, - { 49,4434 }, { 50,4434 }, { 51,4434 }, { 52,4434 }, { 53,4434 }, - { 54,4434 }, { 55,4434 }, { 56,4434 }, { 57,4434 }, { 0, 0 }, - { 0, 0 }, { 0, 40 }, { 0,18208 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 65,4434 }, { 66,4434 }, { 67,4434 }, { 68,4434 }, - - { 69,4434 }, { 70,4434 }, { 48,4434 }, { 49,4434 }, { 50,4434 }, - { 51,4434 }, { 52,4434 }, { 53,4434 }, { 54,4434 }, { 55,4434 }, - { 56,4434 }, { 57,4434 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 65,4434 }, - { 66,4434 }, { 67,4434 }, { 68,4434 }, { 69,4434 }, { 70,4434 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 97,4434 }, { 98,4434 }, - { 99,4434 }, { 100,4434 }, { 101,4434 }, { 102,4434 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 48,-10896 }, { 49,-10896 }, { 50,-10896 }, { 51,-10896 }, { 52,-10896 }, - { 53,-10896 }, { 54,-10896 }, { 55,-10896 }, { 56,-10896 }, { 57,-10896 }, + { 48,1373 }, { 49,1373 }, { 50,1373 }, { 51,1373 }, { 52,1373 }, - { 0, 0 }, { 97,4434 }, { 98,4434 }, { 99,4434 }, { 100,4434 }, - { 101,4434 }, { 102,4434 }, { 65,-10896 }, { 66,-10896 }, { 67,-10896 }, - { 68,-10896 }, { 69,-10896 }, { 70,-10896 }, { 0, 47 }, { 0,18136 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, + { 53,1373 }, { 54,1373 }, { 55,1373 }, { 56,1373 }, { 57,1373 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, + { 0, 0 }, { 0, 0 }, { 65,1373 }, { 66,1373 }, { 67,1373 }, + { 68,1373 }, { 69,1373 }, { 70,1373 }, { 48,1373 }, { 49,1373 }, + { 50,1373 }, { 51,1373 }, { 52,1373 }, { 53,1373 }, { 54,1373 }, + { 55,1373 }, { 56,1373 }, { 57,1373 }, { 0, 34 }, { 0,2144 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, + { 65,1373 }, { 66,1373 }, { 67,1373 }, { 68,1373 }, { 69,1373 }, + { 70,1373 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 97,1373 }, + { 98,1373 }, { 99,1373 }, { 100,1373 }, { 101,1373 }, { 102,1373 }, + { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 97,-10896 }, - { 98,-10896 }, { 99,-10896 }, { 100,-10896 }, { 101,-10896 }, { 102,-10896 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - - { 36,-11399 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, + { 36,-8961 }, { 0, 0 }, { 97,1373 }, { 98,1373 }, { 99,1373 }, + { 100,1373 }, { 101,1373 }, { 102,1373 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 48, 0 }, { 49, 0 }, { 50, 0 }, { 51, 0 }, { 52, 0 }, { 53, 0 }, { 54, 0 }, { 55, 0 }, { 56, 0 }, { 57, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 65, 0 }, { 66, 0 }, { 67, 0 }, { 68, 0 }, { 69, 0 }, { 70, 0 }, + { 71, 0 }, { 72, 0 }, { 73, 0 }, { 74, 0 }, { 75, 0 }, { 76, 0 }, { 77, 0 }, { 78, 0 }, { 79, 0 }, { 80, 0 }, { 81, 0 }, { 82, 0 }, { 83, 0 }, { 84, 0 }, { 85, 0 }, - { 86, 0 }, { 87, 0 }, { 88, 0 }, { 89, 0 }, { 90, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 95, 0 }, { 0, 0 }, { 97, 0 }, { 98, 0 }, { 99, 0 }, { 100, 0 }, @@ -4570,10 +3835,10 @@ static yyconst struct yy_trans_info yy_transition[37005] = { 106, 0 }, { 107, 0 }, { 108, 0 }, { 109, 0 }, { 110, 0 }, { 111, 0 }, { 112, 0 }, { 113, 0 }, { 114, 0 }, { 115, 0 }, { 116, 0 }, { 117, 0 }, { 118, 0 }, { 119, 0 }, { 120, 0 }, + { 121, 0 }, { 122, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 128, 0 }, { 129, 0 }, { 130, 0 }, { 131, 0 }, { 132, 0 }, { 133, 0 }, { 134, 0 }, { 135, 0 }, - { 136, 0 }, { 137, 0 }, { 138, 0 }, { 139, 0 }, { 140, 0 }, { 141, 0 }, { 142, 0 }, { 143, 0 }, { 144, 0 }, { 145, 0 }, { 146, 0 }, { 147, 0 }, { 148, 0 }, { 149, 0 }, { 150, 0 }, @@ -4581,10 +3846,10 @@ static yyconst struct yy_trans_info yy_transition[37005] = { 156, 0 }, { 157, 0 }, { 158, 0 }, { 159, 0 }, { 160, 0 }, { 161, 0 }, { 162, 0 }, { 163, 0 }, { 164, 0 }, { 165, 0 }, { 166, 0 }, { 167, 0 }, { 168, 0 }, { 169, 0 }, { 170, 0 }, + { 171, 0 }, { 172, 0 }, { 173, 0 }, { 174, 0 }, { 175, 0 }, { 176, 0 }, { 177, 0 }, { 178, 0 }, { 179, 0 }, { 180, 0 }, { 181, 0 }, { 182, 0 }, { 183, 0 }, { 184, 0 }, { 185, 0 }, - { 186, 0 }, { 187, 0 }, { 188, 0 }, { 189, 0 }, { 190, 0 }, { 191, 0 }, { 192, 0 }, { 193, 0 }, { 194, 0 }, { 195, 0 }, { 196, 0 }, { 197, 0 }, { 198, 0 }, { 199, 0 }, { 200, 0 }, @@ -4592,21 +3857,21 @@ static yyconst struct yy_trans_info yy_transition[37005] = { 206, 0 }, { 207, 0 }, { 208, 0 }, { 209, 0 }, { 210, 0 }, { 211, 0 }, { 212, 0 }, { 213, 0 }, { 214, 0 }, { 215, 0 }, { 216, 0 }, { 217, 0 }, { 218, 0 }, { 219, 0 }, { 220, 0 }, + { 221, 0 }, { 222, 0 }, { 223, 0 }, { 224, 0 }, { 225, 0 }, { 226, 0 }, { 227, 0 }, { 228, 0 }, { 229, 0 }, { 230, 0 }, { 231, 0 }, { 232, 0 }, { 233, 0 }, { 234, 0 }, { 235, 0 }, - { 236, 0 }, { 237, 0 }, { 238, 0 }, { 239, 0 }, { 240, 0 }, { 241, 0 }, { 242, 0 }, { 243, 0 }, { 244, 0 }, { 245, 0 }, { 246, 0 }, { 247, 0 }, { 248, 0 }, { 249, 0 }, { 250, 0 }, { 251, 0 }, { 252, 0 }, { 253, 0 }, { 254, 0 }, { 255, 0 }, - { 0, 53 }, { 0,17879 }, { 1, 0 }, { 2, 0 }, { 3, 0 }, + { 0, 2 }, { 0,1887 }, { 1, 0 }, { 2, 0 }, { 3, 0 }, { 4, 0 }, { 5, 0 }, { 6, 0 }, { 7, 0 }, { 8, 0 }, { 9, 0 }, { 0, 0 }, { 11, 0 }, { 12, 0 }, { 0, 0 }, + { 14, 0 }, { 15, 0 }, { 16, 0 }, { 17, 0 }, { 18, 0 }, { 19, 0 }, { 20, 0 }, { 21, 0 }, { 22, 0 }, { 23, 0 }, { 24, 0 }, { 25, 0 }, { 26, 0 }, { 27, 0 }, { 28, 0 }, - { 29, 0 }, { 30, 0 }, { 31, 0 }, { 32, 0 }, { 33, 0 }, { 34, 0 }, { 35, 0 }, { 36, 0 }, { 37, 0 }, { 38, 0 }, { 39, 0 }, { 40, 0 }, { 41, 0 }, { 42, 0 }, { 43, 0 }, @@ -4614,10 +3879,10 @@ static yyconst struct yy_trans_info yy_transition[37005] = { 49, 0 }, { 50, 0 }, { 51, 0 }, { 52, 0 }, { 53, 0 }, { 54, 0 }, { 55, 0 }, { 56, 0 }, { 57, 0 }, { 58, 0 }, { 59, 0 }, { 60, 0 }, { 61, 0 }, { 62, 0 }, { 63, 0 }, + { 64, 0 }, { 65, 0 }, { 66, 0 }, { 67, 0 }, { 68, 0 }, { 69, 0 }, { 70, 0 }, { 71, 0 }, { 72, 0 }, { 73, 0 }, { 74, 0 }, { 75, 0 }, { 76, 0 }, { 77, 0 }, { 78, 0 }, - { 79, 0 }, { 80, 0 }, { 81, 0 }, { 82, 0 }, { 83, 0 }, { 84, 0 }, { 85, 0 }, { 86, 0 }, { 87, 0 }, { 88, 0 }, { 89, 0 }, { 90, 0 }, { 91, 0 }, { 92, 0 }, { 93, 0 }, @@ -4625,10 +3890,10 @@ static yyconst struct yy_trans_info yy_transition[37005] = { 99, 0 }, { 100, 0 }, { 101, 0 }, { 102, 0 }, { 103, 0 }, { 104, 0 }, { 105, 0 }, { 106, 0 }, { 107, 0 }, { 108, 0 }, { 109, 0 }, { 110, 0 }, { 111, 0 }, { 112, 0 }, { 113, 0 }, + { 114, 0 }, { 115, 0 }, { 116, 0 }, { 117, 0 }, { 118, 0 }, { 119, 0 }, { 120, 0 }, { 121, 0 }, { 122, 0 }, { 123, 0 }, { 124, 0 }, { 125, 0 }, { 126, 0 }, { 127, 0 }, { 128, 0 }, - { 129, 0 }, { 130, 0 }, { 131, 0 }, { 132, 0 }, { 133, 0 }, { 134, 0 }, { 135, 0 }, { 136, 0 }, { 137, 0 }, { 138, 0 }, { 139, 0 }, { 140, 0 }, { 141, 0 }, { 142, 0 }, { 143, 0 }, @@ -4636,10 +3901,10 @@ static yyconst struct yy_trans_info yy_transition[37005] = { 149, 0 }, { 150, 0 }, { 151, 0 }, { 152, 0 }, { 153, 0 }, { 154, 0 }, { 155, 0 }, { 156, 0 }, { 157, 0 }, { 158, 0 }, { 159, 0 }, { 160, 0 }, { 161, 0 }, { 162, 0 }, { 163, 0 }, + { 164, 0 }, { 165, 0 }, { 166, 0 }, { 167, 0 }, { 168, 0 }, { 169, 0 }, { 170, 0 }, { 171, 0 }, { 172, 0 }, { 173, 0 }, { 174, 0 }, { 175, 0 }, { 176, 0 }, { 177, 0 }, { 178, 0 }, - { 179, 0 }, { 180, 0 }, { 181, 0 }, { 182, 0 }, { 183, 0 }, { 184, 0 }, { 185, 0 }, { 186, 0 }, { 187, 0 }, { 188, 0 }, { 189, 0 }, { 190, 0 }, { 191, 0 }, { 192, 0 }, { 193, 0 }, @@ -4647,2828 +3912,51 @@ static yyconst struct yy_trans_info yy_transition[37005] = { 199, 0 }, { 200, 0 }, { 201, 0 }, { 202, 0 }, { 203, 0 }, { 204, 0 }, { 205, 0 }, { 206, 0 }, { 207, 0 }, { 208, 0 }, { 209, 0 }, { 210, 0 }, { 211, 0 }, { 212, 0 }, { 213, 0 }, + { 214, 0 }, { 215, 0 }, { 216, 0 }, { 217, 0 }, { 218, 0 }, { 219, 0 }, { 220, 0 }, { 221, 0 }, { 222, 0 }, { 223, 0 }, { 224, 0 }, { 225, 0 }, { 226, 0 }, { 227, 0 }, { 228, 0 }, - { 229, 0 }, { 230, 0 }, { 231, 0 }, { 232, 0 }, { 233, 0 }, { 234, 0 }, { 235, 0 }, { 236, 0 }, { 237, 0 }, { 238, 0 }, { 239, 0 }, { 240, 0 }, { 241, 0 }, { 242, 0 }, { 243, 0 }, { 244, 0 }, { 245, 0 }, { 246, 0 }, { 247, 0 }, { 248, 0 }, { 249, 0 }, { 250, 0 }, { 251, 0 }, { 252, 0 }, { 253, 0 }, - { 254, 0 }, { 255, 0 }, { 256, 0 }, { 0, 24 }, { 0,17621 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 9, 0 }, { 10, 0 }, - { 0, 0 }, { 12, 0 }, { 13, 0 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 32, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 39,-11838 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 45,-11774 }, - { 0, 24 }, { 0,17574 }, { 1,4124 }, { 2,4124 }, { 3,4124 }, - { 4,4124 }, { 5,4124 }, { 6,4124 }, { 7,4124 }, { 8,4124 }, - { 9,4382 }, { 10,-2960 }, { 11,4124 }, { 12,4382 }, { 13,-2960 }, - { 14,4124 }, { 15,4124 }, { 16,4124 }, { 17,4124 }, { 18,4124 }, - { 19,4124 }, { 20,4124 }, { 21,4124 }, { 22,4124 }, { 23,4124 }, - - { 24,4124 }, { 25,4124 }, { 26,4124 }, { 27,4124 }, { 28,4124 }, - { 29,4124 }, { 30,4124 }, { 31,4124 }, { 32,4382 }, { 33,4124 }, - { 34,4124 }, { 35,4124 }, { 36,4124 }, { 37,4124 }, { 38,4124 }, - { 39,4124 }, { 40,4124 }, { 41,4124 }, { 42,4124 }, { 43,4124 }, - { 44,4124 }, { 45,4640 }, { 46,4124 }, { 47,4124 }, { 48,4124 }, - { 49,4124 }, { 50,4124 }, { 51,4124 }, { 52,4124 }, { 53,4124 }, - { 54,4124 }, { 55,4124 }, { 56,4124 }, { 57,4124 }, { 58,4124 }, - { 59,4124 }, { 60,4124 }, { 61,4124 }, { 62,4124 }, { 63,4124 }, - { 64,4124 }, { 65,4124 }, { 66,4124 }, { 67,4124 }, { 68,4124 }, - { 69,4124 }, { 70,4124 }, { 71,4124 }, { 72,4124 }, { 73,4124 }, - - { 74,4124 }, { 75,4124 }, { 76,4124 }, { 77,4124 }, { 78,4124 }, - { 79,4124 }, { 80,4124 }, { 81,4124 }, { 82,4124 }, { 83,4124 }, - { 84,4124 }, { 85,4124 }, { 86,4124 }, { 87,4124 }, { 88,4124 }, - { 89,4124 }, { 90,4124 }, { 91,4124 }, { 92,4124 }, { 93,4124 }, - { 94,4124 }, { 95,4124 }, { 96,4124 }, { 97,4124 }, { 98,4124 }, - { 99,4124 }, { 100,4124 }, { 101,4124 }, { 102,4124 }, { 103,4124 }, - { 104,4124 }, { 105,4124 }, { 106,4124 }, { 107,4124 }, { 108,4124 }, - { 109,4124 }, { 110,4124 }, { 111,4124 }, { 112,4124 }, { 113,4124 }, - { 114,4124 }, { 115,4124 }, { 116,4124 }, { 117,4124 }, { 118,4124 }, - { 119,4124 }, { 120,4124 }, { 121,4124 }, { 122,4124 }, { 123,4124 }, - - { 124,4124 }, { 125,4124 }, { 126,4124 }, { 127,4124 }, { 128,4124 }, - { 129,4124 }, { 130,4124 }, { 131,4124 }, { 132,4124 }, { 133,4124 }, - { 134,4124 }, { 135,4124 }, { 136,4124 }, { 137,4124 }, { 138,4124 }, - { 139,4124 }, { 140,4124 }, { 141,4124 }, { 142,4124 }, { 143,4124 }, - { 144,4124 }, { 145,4124 }, { 146,4124 }, { 147,4124 }, { 148,4124 }, - { 149,4124 }, { 150,4124 }, { 151,4124 }, { 152,4124 }, { 153,4124 }, - { 154,4124 }, { 155,4124 }, { 156,4124 }, { 157,4124 }, { 158,4124 }, - { 159,4124 }, { 160,4124 }, { 161,4124 }, { 162,4124 }, { 163,4124 }, - { 164,4124 }, { 165,4124 }, { 166,4124 }, { 167,4124 }, { 168,4124 }, - { 169,4124 }, { 170,4124 }, { 171,4124 }, { 172,4124 }, { 173,4124 }, - - { 174,4124 }, { 175,4124 }, { 176,4124 }, { 177,4124 }, { 178,4124 }, - { 179,4124 }, { 180,4124 }, { 181,4124 }, { 182,4124 }, { 183,4124 }, - { 184,4124 }, { 185,4124 }, { 186,4124 }, { 187,4124 }, { 188,4124 }, - { 189,4124 }, { 190,4124 }, { 191,4124 }, { 192,4124 }, { 193,4124 }, - { 194,4124 }, { 195,4124 }, { 196,4124 }, { 197,4124 }, { 198,4124 }, - { 199,4124 }, { 200,4124 }, { 201,4124 }, { 202,4124 }, { 203,4124 }, - { 204,4124 }, { 205,4124 }, { 206,4124 }, { 207,4124 }, { 208,4124 }, - { 209,4124 }, { 210,4124 }, { 211,4124 }, { 212,4124 }, { 213,4124 }, - { 214,4124 }, { 215,4124 }, { 216,4124 }, { 217,4124 }, { 218,4124 }, - { 219,4124 }, { 220,4124 }, { 221,4124 }, { 222,4124 }, { 223,4124 }, - - { 224,4124 }, { 225,4124 }, { 226,4124 }, { 227,4124 }, { 228,4124 }, - { 229,4124 }, { 230,4124 }, { 231,4124 }, { 232,4124 }, { 233,4124 }, - { 234,4124 }, { 235,4124 }, { 236,4124 }, { 237,4124 }, { 238,4124 }, - { 239,4124 }, { 240,4124 }, { 241,4124 }, { 242,4124 }, { 243,4124 }, - { 244,4124 }, { 245,4124 }, { 246,4124 }, { 247,4124 }, { 248,4124 }, - { 249,4124 }, { 250,4124 }, { 251,4124 }, { 252,4124 }, { 253,4124 }, - { 254,4124 }, { 255,4124 }, { 256,4124 }, { 0, 26 }, { 0,17316 }, - { 1, 0 }, { 2, 0 }, { 3, 0 }, { 4, 0 }, { 5, 0 }, - { 6, 0 }, { 7, 0 }, { 8, 0 }, { 9, 0 }, { 0, 0 }, - { 11, 0 }, { 12, 0 }, { 0, 0 }, { 14, 0 }, { 15, 0 }, - - { 16, 0 }, { 17, 0 }, { 18, 0 }, { 19, 0 }, { 20, 0 }, - { 21, 0 }, { 22, 0 }, { 23, 0 }, { 24, 0 }, { 25, 0 }, - { 26, 0 }, { 27, 0 }, { 28, 0 }, { 29, 0 }, { 30, 0 }, - { 31, 0 }, { 32, 0 }, { 33, 0 }, { 34, 0 }, { 35, 0 }, - { 36, 0 }, { 37, 0 }, { 38, 0 }, { 39, 0 }, { 40, 0 }, - { 41, 0 }, { 42, 0 }, { 43, 0 }, { 44, 0 }, { 45, 0 }, - { 46, 0 }, { 47, 0 }, { 48, 0 }, { 49, 0 }, { 50, 0 }, - { 51, 0 }, { 52, 0 }, { 53, 0 }, { 54, 0 }, { 55, 0 }, - { 56, 0 }, { 57, 0 }, { 58, 0 }, { 59, 0 }, { 60, 0 }, - { 61, 0 }, { 62, 0 }, { 63, 0 }, { 64, 0 }, { 65, 0 }, - - { 66, 0 }, { 67, 0 }, { 68, 0 }, { 69, 0 }, { 70, 0 }, - { 71, 0 }, { 72, 0 }, { 73, 0 }, { 74, 0 }, { 75, 0 }, - { 76, 0 }, { 77, 0 }, { 78, 0 }, { 79, 0 }, { 80, 0 }, - { 81, 0 }, { 82, 0 }, { 83, 0 }, { 84, 0 }, { 85, 0 }, - { 86, 0 }, { 87, 0 }, { 88, 0 }, { 89, 0 }, { 90, 0 }, - { 91, 0 }, { 92, 0 }, { 93, 0 }, { 94, 0 }, { 95, 0 }, - { 96, 0 }, { 97, 0 }, { 98, 0 }, { 99, 0 }, { 100, 0 }, - { 101, 0 }, { 102, 0 }, { 103, 0 }, { 104, 0 }, { 105, 0 }, - { 106, 0 }, { 107, 0 }, { 108, 0 }, { 109, 0 }, { 110, 0 }, - { 111, 0 }, { 112, 0 }, { 113, 0 }, { 114, 0 }, { 115, 0 }, + { 254, 0 }, { 255, 0 }, { 256, 0 }, { 0, 2 }, { 0,1629 }, + { 1,-258 }, { 2,-258 }, { 3,-258 }, { 4,-258 }, { 5,-258 }, - { 116, 0 }, { 117, 0 }, { 118, 0 }, { 119, 0 }, { 120, 0 }, - { 121, 0 }, { 122, 0 }, { 123, 0 }, { 124, 0 }, { 125, 0 }, - { 126, 0 }, { 127, 0 }, { 128, 0 }, { 129, 0 }, { 130, 0 }, - { 131, 0 }, { 132, 0 }, { 133, 0 }, { 134, 0 }, { 135, 0 }, - { 136, 0 }, { 137, 0 }, { 138, 0 }, { 139, 0 }, { 140, 0 }, - { 141, 0 }, { 142, 0 }, { 143, 0 }, { 144, 0 }, { 145, 0 }, - { 146, 0 }, { 147, 0 }, { 148, 0 }, { 149, 0 }, { 150, 0 }, - { 151, 0 }, { 152, 0 }, { 153, 0 }, { 154, 0 }, { 155, 0 }, - { 156, 0 }, { 157, 0 }, { 158, 0 }, { 159, 0 }, { 160, 0 }, - { 161, 0 }, { 162, 0 }, { 163, 0 }, { 164, 0 }, { 165, 0 }, + { 6,-258 }, { 7,-258 }, { 8,-258 }, { 9,-258 }, { 0, 0 }, + { 11,-258 }, { 12,-258 }, { 0, 0 }, { 14,-258 }, { 15,-258 }, + { 16,-258 }, { 17,-258 }, { 18,-258 }, { 19,-258 }, { 20,-258 }, + { 21,-258 }, { 22,-258 }, { 23,-258 }, { 24,-258 }, { 25,-258 }, + { 26,-258 }, { 27,-258 }, { 28,-258 }, { 29,-258 }, { 30,-258 }, + { 31,-258 }, { 32,-258 }, { 33, 0 }, { 34,-258 }, { 35, 0 }, + { 36,-258 }, { 37, 0 }, { 38, 0 }, { 39,-258 }, { 40,-258 }, + { 41,-258 }, { 42, 0 }, { 43, 0 }, { 44,-258 }, { 45, 0 }, + { 46,-258 }, { 47, 0 }, { 48,-258 }, { 49,-258 }, { 50,-258 }, + { 51,-258 }, { 52,-258 }, { 53,-258 }, { 54,-258 }, { 55,-258 }, - { 166, 0 }, { 167, 0 }, { 168, 0 }, { 169, 0 }, { 170, 0 }, - { 171, 0 }, { 172, 0 }, { 173, 0 }, { 174, 0 }, { 175, 0 }, - { 176, 0 }, { 177, 0 }, { 178, 0 }, { 179, 0 }, { 180, 0 }, - { 181, 0 }, { 182, 0 }, { 183, 0 }, { 184, 0 }, { 185, 0 }, - { 186, 0 }, { 187, 0 }, { 188, 0 }, { 189, 0 }, { 190, 0 }, - { 191, 0 }, { 192, 0 }, { 193, 0 }, { 194, 0 }, { 195, 0 }, - { 196, 0 }, { 197, 0 }, { 198, 0 }, { 199, 0 }, { 200, 0 }, - { 201, 0 }, { 202, 0 }, { 203, 0 }, { 204, 0 }, { 205, 0 }, - { 206, 0 }, { 207, 0 }, { 208, 0 }, { 209, 0 }, { 210, 0 }, - { 211, 0 }, { 212, 0 }, { 213, 0 }, { 214, 0 }, { 215, 0 }, - - { 216, 0 }, { 217, 0 }, { 218, 0 }, { 219, 0 }, { 220, 0 }, - { 221, 0 }, { 222, 0 }, { 223, 0 }, { 224, 0 }, { 225, 0 }, - { 226, 0 }, { 227, 0 }, { 228, 0 }, { 229, 0 }, { 230, 0 }, - { 231, 0 }, { 232, 0 }, { 233, 0 }, { 234, 0 }, { 235, 0 }, - { 236, 0 }, { 237, 0 }, { 238, 0 }, { 239, 0 }, { 240, 0 }, - { 241, 0 }, { 242, 0 }, { 243, 0 }, { 244, 0 }, { 245, 0 }, - { 246, 0 }, { 247, 0 }, { 248, 0 }, { 249, 0 }, { 250, 0 }, - { 251, 0 }, { 252, 0 }, { 253, 0 }, { 254, 0 }, { 255, 0 }, - { 256, 0 }, { 0, 37 }, { 0,17058 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 37 }, - { 0,17035 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 48,4382 }, { 49,4382 }, { 50,4382 }, { 51,4382 }, { 52,4382 }, - { 53,4382 }, { 54,4382 }, { 55,4382 }, { 56,4382 }, { 57,4382 }, - - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 65,4382 }, { 66,4382 }, { 67,4382 }, - { 68,4382 }, { 69,4382 }, { 70,4382 }, { 48,4382 }, { 49,4382 }, - { 50,4382 }, { 51,4382 }, { 52,4382 }, { 53,4382 }, { 54,4382 }, - { 55,4382 }, { 56,4382 }, { 57,4382 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 65,4382 }, { 66,4382 }, { 67,4382 }, { 68,4382 }, { 69,4382 }, - { 70,4382 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 97,4382 }, - { 98,4382 }, { 99,4382 }, { 100,4382 }, { 101,4382 }, { 102,4382 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 97,4382 }, { 98,4382 }, { 99,4382 }, - { 100,4382 }, { 101,4382 }, { 102,4382 }, { 0, 9 }, { 0,16931 }, - { 1,4382 }, { 2,4382 }, { 3,4382 }, { 4,4382 }, { 5,4382 }, - { 6,4382 }, { 7,4382 }, { 8,4382 }, { 9,4640 }, { 10,4898 }, - { 11,4382 }, { 12,4640 }, { 13,4898 }, { 14,4382 }, { 15,4382 }, - { 16,4382 }, { 17,4382 }, { 18,4382 }, { 19,4382 }, { 20,4382 }, - { 21,4382 }, { 22,4382 }, { 23,4382 }, { 24,4382 }, { 25,4382 }, - { 26,4382 }, { 27,4382 }, { 28,4382 }, { 29,4382 }, { 30,4382 }, - - { 31,4382 }, { 32,4640 }, { 33,4382 }, { 34,4382 }, { 35,4382 }, - { 36,4382 }, { 37,4382 }, { 38,4382 }, { 39,4382 }, { 40,4382 }, - { 41,4382 }, { 42,4382 }, { 43,4382 }, { 44,4382 }, { 45,4945 }, - { 46,4382 }, { 47,4382 }, { 48,4382 }, { 49,4382 }, { 50,4382 }, - { 51,4382 }, { 52,4382 }, { 53,4382 }, { 54,4382 }, { 55,4382 }, - { 56,4382 }, { 57,4382 }, { 58,4382 }, { 59,4382 }, { 60,4382 }, - { 61,4382 }, { 62,4382 }, { 63,4382 }, { 64,4382 }, { 65,4382 }, - { 66,4382 }, { 67,4382 }, { 68,4382 }, { 69,4382 }, { 70,4382 }, - { 71,4382 }, { 72,4382 }, { 73,4382 }, { 74,4382 }, { 75,4382 }, - { 76,4382 }, { 77,4382 }, { 78,4382 }, { 79,4382 }, { 80,4382 }, - - { 81,4382 }, { 82,4382 }, { 83,4382 }, { 84,4382 }, { 85,4382 }, - { 86,4382 }, { 87,4382 }, { 88,4382 }, { 89,4382 }, { 90,4382 }, - { 91,4382 }, { 92,4382 }, { 93,4382 }, { 94,4382 }, { 95,4382 }, - { 96,4382 }, { 97,4382 }, { 98,4382 }, { 99,4382 }, { 100,4382 }, - { 101,4382 }, { 102,4382 }, { 103,4382 }, { 104,4382 }, { 105,4382 }, - { 106,4382 }, { 107,4382 }, { 108,4382 }, { 109,4382 }, { 110,4382 }, - { 111,4382 }, { 112,4382 }, { 113,4382 }, { 114,4382 }, { 115,4382 }, - { 116,4382 }, { 117,4382 }, { 118,4382 }, { 119,4382 }, { 120,4382 }, - { 121,4382 }, { 122,4382 }, { 123,4382 }, { 124,4382 }, { 125,4382 }, - { 126,4382 }, { 127,4382 }, { 128,4382 }, { 129,4382 }, { 130,4382 }, - - { 131,4382 }, { 132,4382 }, { 133,4382 }, { 134,4382 }, { 135,4382 }, - { 136,4382 }, { 137,4382 }, { 138,4382 }, { 139,4382 }, { 140,4382 }, - { 141,4382 }, { 142,4382 }, { 143,4382 }, { 144,4382 }, { 145,4382 }, - { 146,4382 }, { 147,4382 }, { 148,4382 }, { 149,4382 }, { 150,4382 }, - { 151,4382 }, { 152,4382 }, { 153,4382 }, { 154,4382 }, { 155,4382 }, - { 156,4382 }, { 157,4382 }, { 158,4382 }, { 159,4382 }, { 160,4382 }, - { 161,4382 }, { 162,4382 }, { 163,4382 }, { 164,4382 }, { 165,4382 }, - { 166,4382 }, { 167,4382 }, { 168,4382 }, { 169,4382 }, { 170,4382 }, - { 171,4382 }, { 172,4382 }, { 173,4382 }, { 174,4382 }, { 175,4382 }, - { 176,4382 }, { 177,4382 }, { 178,4382 }, { 179,4382 }, { 180,4382 }, - - { 181,4382 }, { 182,4382 }, { 183,4382 }, { 184,4382 }, { 185,4382 }, - { 186,4382 }, { 187,4382 }, { 188,4382 }, { 189,4382 }, { 190,4382 }, - { 191,4382 }, { 192,4382 }, { 193,4382 }, { 194,4382 }, { 195,4382 }, - { 196,4382 }, { 197,4382 }, { 198,4382 }, { 199,4382 }, { 200,4382 }, - { 201,4382 }, { 202,4382 }, { 203,4382 }, { 204,4382 }, { 205,4382 }, - { 206,4382 }, { 207,4382 }, { 208,4382 }, { 209,4382 }, { 210,4382 }, - { 211,4382 }, { 212,4382 }, { 213,4382 }, { 214,4382 }, { 215,4382 }, - { 216,4382 }, { 217,4382 }, { 218,4382 }, { 219,4382 }, { 220,4382 }, - { 221,4382 }, { 222,4382 }, { 223,4382 }, { 224,4382 }, { 225,4382 }, - { 226,4382 }, { 227,4382 }, { 228,4382 }, { 229,4382 }, { 230,4382 }, - - { 231,4382 }, { 232,4382 }, { 233,4382 }, { 234,4382 }, { 235,4382 }, - { 236,4382 }, { 237,4382 }, { 238,4382 }, { 239,4382 }, { 240,4382 }, - { 241,4382 }, { 242,4382 }, { 243,4382 }, { 244,4382 }, { 245,4382 }, - { 246,4382 }, { 247,4382 }, { 248,4382 }, { 249,4382 }, { 250,4382 }, - { 251,4382 }, { 252,4382 }, { 253,4382 }, { 254,4382 }, { 255,4382 }, - { 256,4382 }, { 0, 9 }, { 0,16673 }, { 1, 0 }, { 2, 0 }, - { 3, 0 }, { 4, 0 }, { 5, 0 }, { 6, 0 }, { 7, 0 }, - { 8, 0 }, { 9, 258 }, { 10,-6341 }, { 11, 0 }, { 12, 258 }, - { 13,-6341 }, { 14, 0 }, { 15, 0 }, { 16, 0 }, { 17, 0 }, - { 18, 0 }, { 19, 0 }, { 20, 0 }, { 21, 0 }, { 22, 0 }, - - { 23, 0 }, { 24, 0 }, { 25, 0 }, { 26, 0 }, { 27, 0 }, - { 28, 0 }, { 29, 0 }, { 30, 0 }, { 31, 0 }, { 32, 258 }, - { 33, 0 }, { 34, 0 }, { 35, 0 }, { 36, 0 }, { 37, 0 }, - { 38, 0 }, { 39, 0 }, { 40, 0 }, { 41, 0 }, { 42, 0 }, - { 43, 0 }, { 44, 0 }, { 45, 516 }, { 46, 0 }, { 47, 0 }, - { 48, 0 }, { 49, 0 }, { 50, 0 }, { 51, 0 }, { 52, 0 }, - { 53, 0 }, { 54, 0 }, { 55, 0 }, { 56, 0 }, { 57, 0 }, - { 58, 0 }, { 59, 0 }, { 60, 0 }, { 61, 0 }, { 62, 0 }, - { 63, 0 }, { 64, 0 }, { 65, 0 }, { 66, 0 }, { 67, 0 }, - { 68, 0 }, { 69, 0 }, { 70, 0 }, { 71, 0 }, { 72, 0 }, - - { 73, 0 }, { 74, 0 }, { 75, 0 }, { 76, 0 }, { 77, 0 }, - { 78, 0 }, { 79, 0 }, { 80, 0 }, { 81, 0 }, { 82, 0 }, - { 83, 0 }, { 84, 0 }, { 85, 0 }, { 86, 0 }, { 87, 0 }, - { 88, 0 }, { 89, 0 }, { 90, 0 }, { 91, 0 }, { 92, 0 }, - { 93, 0 }, { 94, 0 }, { 95, 0 }, { 96, 0 }, { 97, 0 }, - { 98, 0 }, { 99, 0 }, { 100, 0 }, { 101, 0 }, { 102, 0 }, - { 103, 0 }, { 104, 0 }, { 105, 0 }, { 106, 0 }, { 107, 0 }, - { 108, 0 }, { 109, 0 }, { 110, 0 }, { 111, 0 }, { 112, 0 }, - { 113, 0 }, { 114, 0 }, { 115, 0 }, { 116, 0 }, { 117, 0 }, - { 118, 0 }, { 119, 0 }, { 120, 0 }, { 121, 0 }, { 122, 0 }, - - { 123, 0 }, { 124, 0 }, { 125, 0 }, { 126, 0 }, { 127, 0 }, - { 128, 0 }, { 129, 0 }, { 130, 0 }, { 131, 0 }, { 132, 0 }, - { 133, 0 }, { 134, 0 }, { 135, 0 }, { 136, 0 }, { 137, 0 }, - { 138, 0 }, { 139, 0 }, { 140, 0 }, { 141, 0 }, { 142, 0 }, - { 143, 0 }, { 144, 0 }, { 145, 0 }, { 146, 0 }, { 147, 0 }, - { 148, 0 }, { 149, 0 }, { 150, 0 }, { 151, 0 }, { 152, 0 }, - { 153, 0 }, { 154, 0 }, { 155, 0 }, { 156, 0 }, { 157, 0 }, - { 158, 0 }, { 159, 0 }, { 160, 0 }, { 161, 0 }, { 162, 0 }, - { 163, 0 }, { 164, 0 }, { 165, 0 }, { 166, 0 }, { 167, 0 }, - { 168, 0 }, { 169, 0 }, { 170, 0 }, { 171, 0 }, { 172, 0 }, - - { 173, 0 }, { 174, 0 }, { 175, 0 }, { 176, 0 }, { 177, 0 }, - { 178, 0 }, { 179, 0 }, { 180, 0 }, { 181, 0 }, { 182, 0 }, - { 183, 0 }, { 184, 0 }, { 185, 0 }, { 186, 0 }, { 187, 0 }, - { 188, 0 }, { 189, 0 }, { 190, 0 }, { 191, 0 }, { 192, 0 }, - { 193, 0 }, { 194, 0 }, { 195, 0 }, { 196, 0 }, { 197, 0 }, - { 198, 0 }, { 199, 0 }, { 200, 0 }, { 201, 0 }, { 202, 0 }, - { 203, 0 }, { 204, 0 }, { 205, 0 }, { 206, 0 }, { 207, 0 }, - { 208, 0 }, { 209, 0 }, { 210, 0 }, { 211, 0 }, { 212, 0 }, - { 213, 0 }, { 214, 0 }, { 215, 0 }, { 216, 0 }, { 217, 0 }, - { 218, 0 }, { 219, 0 }, { 220, 0 }, { 221, 0 }, { 222, 0 }, - - { 223, 0 }, { 224, 0 }, { 225, 0 }, { 226, 0 }, { 227, 0 }, - { 228, 0 }, { 229, 0 }, { 230, 0 }, { 231, 0 }, { 232, 0 }, - { 233, 0 }, { 234, 0 }, { 235, 0 }, { 236, 0 }, { 237, 0 }, - { 238, 0 }, { 239, 0 }, { 240, 0 }, { 241, 0 }, { 242, 0 }, - { 243, 0 }, { 244, 0 }, { 245, 0 }, { 246, 0 }, { 247, 0 }, - { 248, 0 }, { 249, 0 }, { 250, 0 }, { 251, 0 }, { 252, 0 }, - { 253, 0 }, { 254, 0 }, { 255, 0 }, { 256, 0 }, { 0, 9 }, - { 0,16415 }, { 1,-258 }, { 2,-258 }, { 3,-258 }, { 4,-258 }, - { 5,-258 }, { 6,-258 }, { 7,-258 }, { 8,-258 }, { 9, 0 }, - { 10,-6599 }, { 11,-258 }, { 12, 0 }, { 13,-6599 }, { 14,-258 }, - - { 15,-258 }, { 16,-258 }, { 17,-258 }, { 18,-258 }, { 19,-258 }, - { 20,-258 }, { 21,-258 }, { 22,-258 }, { 23,-258 }, { 24,-258 }, - { 25,-258 }, { 26,-258 }, { 27,-258 }, { 28,-258 }, { 29,-258 }, - { 30,-258 }, { 31,-258 }, { 32, 0 }, { 33,-258 }, { 34,-258 }, - { 35,-258 }, { 36,-258 }, { 37,-258 }, { 38,-258 }, { 39,-258 }, - { 40,-258 }, { 41,-258 }, { 42,-258 }, { 43,-258 }, { 44,-258 }, - { 45, 258 }, { 46,-258 }, { 47,-258 }, { 48,-258 }, { 49,-258 }, - { 50,-258 }, { 51,-258 }, { 52,-258 }, { 53,-258 }, { 54,-258 }, - { 55,-258 }, { 56,-258 }, { 57,-258 }, { 58,-258 }, { 59,-258 }, - { 60,-258 }, { 61,-258 }, { 62,-258 }, { 63,-258 }, { 64,-258 }, - - { 65,-258 }, { 66,-258 }, { 67,-258 }, { 68,-258 }, { 69,-258 }, - { 70,-258 }, { 71,-258 }, { 72,-258 }, { 73,-258 }, { 74,-258 }, - { 75,-258 }, { 76,-258 }, { 77,-258 }, { 78,-258 }, { 79,-258 }, - { 80,-258 }, { 81,-258 }, { 82,-258 }, { 83,-258 }, { 84,-258 }, - { 85,-258 }, { 86,-258 }, { 87,-258 }, { 88,-258 }, { 89,-258 }, - { 90,-258 }, { 91,-258 }, { 92,-258 }, { 93,-258 }, { 94,-258 }, - { 95,-258 }, { 96,-258 }, { 97,-258 }, { 98,-258 }, { 99,-258 }, - { 100,-258 }, { 101,-258 }, { 102,-258 }, { 103,-258 }, { 104,-258 }, - { 105,-258 }, { 106,-258 }, { 107,-258 }, { 108,-258 }, { 109,-258 }, - { 110,-258 }, { 111,-258 }, { 112,-258 }, { 113,-258 }, { 114,-258 }, - - { 115,-258 }, { 116,-258 }, { 117,-258 }, { 118,-258 }, { 119,-258 }, - { 120,-258 }, { 121,-258 }, { 122,-258 }, { 123,-258 }, { 124,-258 }, - { 125,-258 }, { 126,-258 }, { 127,-258 }, { 128,-258 }, { 129,-258 }, - { 130,-258 }, { 131,-258 }, { 132,-258 }, { 133,-258 }, { 134,-258 }, - { 135,-258 }, { 136,-258 }, { 137,-258 }, { 138,-258 }, { 139,-258 }, - { 140,-258 }, { 141,-258 }, { 142,-258 }, { 143,-258 }, { 144,-258 }, - { 145,-258 }, { 146,-258 }, { 147,-258 }, { 148,-258 }, { 149,-258 }, - { 150,-258 }, { 151,-258 }, { 152,-258 }, { 153,-258 }, { 154,-258 }, - { 155,-258 }, { 156,-258 }, { 157,-258 }, { 158,-258 }, { 159,-258 }, - { 160,-258 }, { 161,-258 }, { 162,-258 }, { 163,-258 }, { 164,-258 }, - - { 165,-258 }, { 166,-258 }, { 167,-258 }, { 168,-258 }, { 169,-258 }, - { 170,-258 }, { 171,-258 }, { 172,-258 }, { 173,-258 }, { 174,-258 }, - { 175,-258 }, { 176,-258 }, { 177,-258 }, { 178,-258 }, { 179,-258 }, - { 180,-258 }, { 181,-258 }, { 182,-258 }, { 183,-258 }, { 184,-258 }, - { 185,-258 }, { 186,-258 }, { 187,-258 }, { 188,-258 }, { 189,-258 }, - { 190,-258 }, { 191,-258 }, { 192,-258 }, { 193,-258 }, { 194,-258 }, - { 195,-258 }, { 196,-258 }, { 197,-258 }, { 198,-258 }, { 199,-258 }, - { 200,-258 }, { 201,-258 }, { 202,-258 }, { 203,-258 }, { 204,-258 }, - { 205,-258 }, { 206,-258 }, { 207,-258 }, { 208,-258 }, { 209,-258 }, - { 210,-258 }, { 211,-258 }, { 212,-258 }, { 213,-258 }, { 214,-258 }, - - { 215,-258 }, { 216,-258 }, { 217,-258 }, { 218,-258 }, { 219,-258 }, - { 220,-258 }, { 221,-258 }, { 222,-258 }, { 223,-258 }, { 224,-258 }, - { 225,-258 }, { 226,-258 }, { 227,-258 }, { 228,-258 }, { 229,-258 }, - { 230,-258 }, { 231,-258 }, { 232,-258 }, { 233,-258 }, { 234,-258 }, - { 235,-258 }, { 236,-258 }, { 237,-258 }, { 238,-258 }, { 239,-258 }, - { 240,-258 }, { 241,-258 }, { 242,-258 }, { 243,-258 }, { 244,-258 }, - { 245,-258 }, { 246,-258 }, { 247,-258 }, { 248,-258 }, { 249,-258 }, - { 250,-258 }, { 251,-258 }, { 252,-258 }, { 253,-258 }, { 254,-258 }, - { 255,-258 }, { 256,-258 }, { 0, 9 }, { 0,16157 }, { 1,-516 }, - { 2,-516 }, { 3,-516 }, { 4,-516 }, { 5,-516 }, { 6,-516 }, - - { 7,-516 }, { 8,-516 }, { 9,-258 }, { 10,-6857 }, { 11,-516 }, - { 12,-258 }, { 13,-6857 }, { 14,-516 }, { 15,-516 }, { 16,-516 }, - { 17,-516 }, { 18,-516 }, { 19,-516 }, { 20,-516 }, { 21,-516 }, - { 22,-516 }, { 23,-516 }, { 24,-516 }, { 25,-516 }, { 26,-516 }, - { 27,-516 }, { 28,-516 }, { 29,-516 }, { 30,-516 }, { 31,-516 }, - { 32,-258 }, { 33,-516 }, { 34,-516 }, { 35,-516 }, { 36,-516 }, - { 37,-516 }, { 38,-516 }, { 39,-516 }, { 40,-516 }, { 41,-516 }, - { 42,-516 }, { 43,-516 }, { 44,-516 }, { 45,4429 }, { 46,-516 }, - { 47,-516 }, { 48,-516 }, { 49,-516 }, { 50,-516 }, { 51,-516 }, - { 52,-516 }, { 53,-516 }, { 54,-516 }, { 55,-516 }, { 56,-516 }, - - { 57,-516 }, { 58,-516 }, { 59,-516 }, { 60,-516 }, { 61,-516 }, - { 62,-516 }, { 63,-516 }, { 64,-516 }, { 65,-516 }, { 66,-516 }, - { 67,-516 }, { 68,-516 }, { 69,-516 }, { 70,-516 }, { 71,-516 }, - { 72,-516 }, { 73,-516 }, { 74,-516 }, { 75,-516 }, { 76,-516 }, - { 77,-516 }, { 78,-516 }, { 79,-516 }, { 80,-516 }, { 81,-516 }, - { 82,-516 }, { 83,-516 }, { 84,-516 }, { 85,-516 }, { 86,-516 }, - { 87,-516 }, { 88,-516 }, { 89,-516 }, { 90,-516 }, { 91,-516 }, - { 92,-516 }, { 93,-516 }, { 94,-516 }, { 95,-516 }, { 96,-516 }, - { 97,-516 }, { 98,-516 }, { 99,-516 }, { 100,-516 }, { 101,-516 }, - { 102,-516 }, { 103,-516 }, { 104,-516 }, { 105,-516 }, { 106,-516 }, - - { 107,-516 }, { 108,-516 }, { 109,-516 }, { 110,-516 }, { 111,-516 }, - { 112,-516 }, { 113,-516 }, { 114,-516 }, { 115,-516 }, { 116,-516 }, - { 117,-516 }, { 118,-516 }, { 119,-516 }, { 120,-516 }, { 121,-516 }, - { 122,-516 }, { 123,-516 }, { 124,-516 }, { 125,-516 }, { 126,-516 }, - { 127,-516 }, { 128,-516 }, { 129,-516 }, { 130,-516 }, { 131,-516 }, - { 132,-516 }, { 133,-516 }, { 134,-516 }, { 135,-516 }, { 136,-516 }, - { 137,-516 }, { 138,-516 }, { 139,-516 }, { 140,-516 }, { 141,-516 }, - { 142,-516 }, { 143,-516 }, { 144,-516 }, { 145,-516 }, { 146,-516 }, - { 147,-516 }, { 148,-516 }, { 149,-516 }, { 150,-516 }, { 151,-516 }, - { 152,-516 }, { 153,-516 }, { 154,-516 }, { 155,-516 }, { 156,-516 }, - - { 157,-516 }, { 158,-516 }, { 159,-516 }, { 160,-516 }, { 161,-516 }, - { 162,-516 }, { 163,-516 }, { 164,-516 }, { 165,-516 }, { 166,-516 }, - { 167,-516 }, { 168,-516 }, { 169,-516 }, { 170,-516 }, { 171,-516 }, - { 172,-516 }, { 173,-516 }, { 174,-516 }, { 175,-516 }, { 176,-516 }, - { 177,-516 }, { 178,-516 }, { 179,-516 }, { 180,-516 }, { 181,-516 }, - { 182,-516 }, { 183,-516 }, { 184,-516 }, { 185,-516 }, { 186,-516 }, - { 187,-516 }, { 188,-516 }, { 189,-516 }, { 190,-516 }, { 191,-516 }, - { 192,-516 }, { 193,-516 }, { 194,-516 }, { 195,-516 }, { 196,-516 }, - { 197,-516 }, { 198,-516 }, { 199,-516 }, { 200,-516 }, { 201,-516 }, - { 202,-516 }, { 203,-516 }, { 204,-516 }, { 205,-516 }, { 206,-516 }, - - { 207,-516 }, { 208,-516 }, { 209,-516 }, { 210,-516 }, { 211,-516 }, - { 212,-516 }, { 213,-516 }, { 214,-516 }, { 215,-516 }, { 216,-516 }, - { 217,-516 }, { 218,-516 }, { 219,-516 }, { 220,-516 }, { 221,-516 }, - { 222,-516 }, { 223,-516 }, { 224,-516 }, { 225,-516 }, { 226,-516 }, - { 227,-516 }, { 228,-516 }, { 229,-516 }, { 230,-516 }, { 231,-516 }, - { 232,-516 }, { 233,-516 }, { 234,-516 }, { 235,-516 }, { 236,-516 }, - { 237,-516 }, { 238,-516 }, { 239,-516 }, { 240,-516 }, { 241,-516 }, - { 242,-516 }, { 243,-516 }, { 244,-516 }, { 245,-516 }, { 246,-516 }, - { 247,-516 }, { 248,-516 }, { 249,-516 }, { 250,-516 }, { 251,-516 }, - { 252,-516 }, { 253,-516 }, { 254,-516 }, { 255,-516 }, { 256,-516 }, - - { 0, 16 }, { 0,15899 }, { 1,4429 }, { 2,4429 }, { 3,4429 }, - { 4,4429 }, { 5,4429 }, { 6,4429 }, { 7,4429 }, { 8,4429 }, - { 9,4687 }, { 10,4945 }, { 11,4429 }, { 12,4687 }, { 13,4945 }, - { 14,4429 }, { 15,4429 }, { 16,4429 }, { 17,4429 }, { 18,4429 }, - { 19,4429 }, { 20,4429 }, { 21,4429 }, { 22,4429 }, { 23,4429 }, - { 24,4429 }, { 25,4429 }, { 26,4429 }, { 27,4429 }, { 28,4429 }, - { 29,4429 }, { 30,4429 }, { 31,4429 }, { 32,4687 }, { 33,4429 }, - { 34,4429 }, { 35,4429 }, { 36,4429 }, { 37,4429 }, { 38,4429 }, - { 39,4429 }, { 40,4429 }, { 41,4429 }, { 42,4429 }, { 43,4429 }, - { 44,4429 }, { 45,4992 }, { 46,4429 }, { 47,4429 }, { 48,4429 }, - - { 49,4429 }, { 50,4429 }, { 51,4429 }, { 52,4429 }, { 53,4429 }, - { 54,4429 }, { 55,4429 }, { 56,4429 }, { 57,4429 }, { 58,4429 }, - { 59,4429 }, { 60,4429 }, { 61,4429 }, { 62,4429 }, { 63,4429 }, - { 64,4429 }, { 65,4429 }, { 66,4429 }, { 67,4429 }, { 68,4429 }, - { 69,4429 }, { 70,4429 }, { 71,4429 }, { 72,4429 }, { 73,4429 }, - { 74,4429 }, { 75,4429 }, { 76,4429 }, { 77,4429 }, { 78,4429 }, - { 79,4429 }, { 80,4429 }, { 81,4429 }, { 82,4429 }, { 83,4429 }, - { 84,4429 }, { 85,4429 }, { 86,4429 }, { 87,4429 }, { 88,4429 }, - { 89,4429 }, { 90,4429 }, { 91,4429 }, { 92,4429 }, { 93,4429 }, - { 94,4429 }, { 95,4429 }, { 96,4429 }, { 97,4429 }, { 98,4429 }, - - { 99,4429 }, { 100,4429 }, { 101,4429 }, { 102,4429 }, { 103,4429 }, - { 104,4429 }, { 105,4429 }, { 106,4429 }, { 107,4429 }, { 108,4429 }, - { 109,4429 }, { 110,4429 }, { 111,4429 }, { 112,4429 }, { 113,4429 }, - { 114,4429 }, { 115,4429 }, { 116,4429 }, { 117,4429 }, { 118,4429 }, - { 119,4429 }, { 120,4429 }, { 121,4429 }, { 122,4429 }, { 123,4429 }, - { 124,4429 }, { 125,4429 }, { 126,4429 }, { 127,4429 }, { 128,4429 }, - { 129,4429 }, { 130,4429 }, { 131,4429 }, { 132,4429 }, { 133,4429 }, - { 134,4429 }, { 135,4429 }, { 136,4429 }, { 137,4429 }, { 138,4429 }, - { 139,4429 }, { 140,4429 }, { 141,4429 }, { 142,4429 }, { 143,4429 }, - { 144,4429 }, { 145,4429 }, { 146,4429 }, { 147,4429 }, { 148,4429 }, - - { 149,4429 }, { 150,4429 }, { 151,4429 }, { 152,4429 }, { 153,4429 }, - { 154,4429 }, { 155,4429 }, { 156,4429 }, { 157,4429 }, { 158,4429 }, - { 159,4429 }, { 160,4429 }, { 161,4429 }, { 162,4429 }, { 163,4429 }, - { 164,4429 }, { 165,4429 }, { 166,4429 }, { 167,4429 }, { 168,4429 }, - { 169,4429 }, { 170,4429 }, { 171,4429 }, { 172,4429 }, { 173,4429 }, - { 174,4429 }, { 175,4429 }, { 176,4429 }, { 177,4429 }, { 178,4429 }, - { 179,4429 }, { 180,4429 }, { 181,4429 }, { 182,4429 }, { 183,4429 }, - { 184,4429 }, { 185,4429 }, { 186,4429 }, { 187,4429 }, { 188,4429 }, - { 189,4429 }, { 190,4429 }, { 191,4429 }, { 192,4429 }, { 193,4429 }, - { 194,4429 }, { 195,4429 }, { 196,4429 }, { 197,4429 }, { 198,4429 }, - - { 199,4429 }, { 200,4429 }, { 201,4429 }, { 202,4429 }, { 203,4429 }, - { 204,4429 }, { 205,4429 }, { 206,4429 }, { 207,4429 }, { 208,4429 }, - { 209,4429 }, { 210,4429 }, { 211,4429 }, { 212,4429 }, { 213,4429 }, - { 214,4429 }, { 215,4429 }, { 216,4429 }, { 217,4429 }, { 218,4429 }, - { 219,4429 }, { 220,4429 }, { 221,4429 }, { 222,4429 }, { 223,4429 }, - { 224,4429 }, { 225,4429 }, { 226,4429 }, { 227,4429 }, { 228,4429 }, - { 229,4429 }, { 230,4429 }, { 231,4429 }, { 232,4429 }, { 233,4429 }, - { 234,4429 }, { 235,4429 }, { 236,4429 }, { 237,4429 }, { 238,4429 }, - { 239,4429 }, { 240,4429 }, { 241,4429 }, { 242,4429 }, { 243,4429 }, - { 244,4429 }, { 245,4429 }, { 246,4429 }, { 247,4429 }, { 248,4429 }, - - { 249,4429 }, { 250,4429 }, { 251,4429 }, { 252,4429 }, { 253,4429 }, - { 254,4429 }, { 255,4429 }, { 256,4429 }, { 0, 16 }, { 0,15641 }, - { 1, 0 }, { 2, 0 }, { 3, 0 }, { 4, 0 }, { 5, 0 }, - { 6, 0 }, { 7, 0 }, { 8, 0 }, { 9, 258 }, { 10,-6419 }, - { 11, 0 }, { 12, 258 }, { 13,-6419 }, { 14, 0 }, { 15, 0 }, - { 16, 0 }, { 17, 0 }, { 18, 0 }, { 19, 0 }, { 20, 0 }, - { 21, 0 }, { 22, 0 }, { 23, 0 }, { 24, 0 }, { 25, 0 }, - { 26, 0 }, { 27, 0 }, { 28, 0 }, { 29, 0 }, { 30, 0 }, - { 31, 0 }, { 32, 258 }, { 33, 0 }, { 34, 0 }, { 35, 0 }, - { 36, 0 }, { 37, 0 }, { 38, 0 }, { 39, 0 }, { 40, 0 }, - - { 41, 0 }, { 42, 0 }, { 43, 0 }, { 44, 0 }, { 45, 516 }, - { 46, 0 }, { 47, 0 }, { 48, 0 }, { 49, 0 }, { 50, 0 }, - { 51, 0 }, { 52, 0 }, { 53, 0 }, { 54, 0 }, { 55, 0 }, - { 56, 0 }, { 57, 0 }, { 58, 0 }, { 59, 0 }, { 60, 0 }, - { 61, 0 }, { 62, 0 }, { 63, 0 }, { 64, 0 }, { 65, 0 }, - { 66, 0 }, { 67, 0 }, { 68, 0 }, { 69, 0 }, { 70, 0 }, - { 71, 0 }, { 72, 0 }, { 73, 0 }, { 74, 0 }, { 75, 0 }, - { 76, 0 }, { 77, 0 }, { 78, 0 }, { 79, 0 }, { 80, 0 }, - { 81, 0 }, { 82, 0 }, { 83, 0 }, { 84, 0 }, { 85, 0 }, - { 86, 0 }, { 87, 0 }, { 88, 0 }, { 89, 0 }, { 90, 0 }, - - { 91, 0 }, { 92, 0 }, { 93, 0 }, { 94, 0 }, { 95, 0 }, - { 96, 0 }, { 97, 0 }, { 98, 0 }, { 99, 0 }, { 100, 0 }, - { 101, 0 }, { 102, 0 }, { 103, 0 }, { 104, 0 }, { 105, 0 }, - { 106, 0 }, { 107, 0 }, { 108, 0 }, { 109, 0 }, { 110, 0 }, - { 111, 0 }, { 112, 0 }, { 113, 0 }, { 114, 0 }, { 115, 0 }, - { 116, 0 }, { 117, 0 }, { 118, 0 }, { 119, 0 }, { 120, 0 }, - { 121, 0 }, { 122, 0 }, { 123, 0 }, { 124, 0 }, { 125, 0 }, - { 126, 0 }, { 127, 0 }, { 128, 0 }, { 129, 0 }, { 130, 0 }, - { 131, 0 }, { 132, 0 }, { 133, 0 }, { 134, 0 }, { 135, 0 }, - { 136, 0 }, { 137, 0 }, { 138, 0 }, { 139, 0 }, { 140, 0 }, - - { 141, 0 }, { 142, 0 }, { 143, 0 }, { 144, 0 }, { 145, 0 }, - { 146, 0 }, { 147, 0 }, { 148, 0 }, { 149, 0 }, { 150, 0 }, - { 151, 0 }, { 152, 0 }, { 153, 0 }, { 154, 0 }, { 155, 0 }, - { 156, 0 }, { 157, 0 }, { 158, 0 }, { 159, 0 }, { 160, 0 }, - { 161, 0 }, { 162, 0 }, { 163, 0 }, { 164, 0 }, { 165, 0 }, - { 166, 0 }, { 167, 0 }, { 168, 0 }, { 169, 0 }, { 170, 0 }, - { 171, 0 }, { 172, 0 }, { 173, 0 }, { 174, 0 }, { 175, 0 }, - { 176, 0 }, { 177, 0 }, { 178, 0 }, { 179, 0 }, { 180, 0 }, - { 181, 0 }, { 182, 0 }, { 183, 0 }, { 184, 0 }, { 185, 0 }, - { 186, 0 }, { 187, 0 }, { 188, 0 }, { 189, 0 }, { 190, 0 }, - - { 191, 0 }, { 192, 0 }, { 193, 0 }, { 194, 0 }, { 195, 0 }, - { 196, 0 }, { 197, 0 }, { 198, 0 }, { 199, 0 }, { 200, 0 }, - { 201, 0 }, { 202, 0 }, { 203, 0 }, { 204, 0 }, { 205, 0 }, - { 206, 0 }, { 207, 0 }, { 208, 0 }, { 209, 0 }, { 210, 0 }, - { 211, 0 }, { 212, 0 }, { 213, 0 }, { 214, 0 }, { 215, 0 }, - { 216, 0 }, { 217, 0 }, { 218, 0 }, { 219, 0 }, { 220, 0 }, - { 221, 0 }, { 222, 0 }, { 223, 0 }, { 224, 0 }, { 225, 0 }, - { 226, 0 }, { 227, 0 }, { 228, 0 }, { 229, 0 }, { 230, 0 }, - { 231, 0 }, { 232, 0 }, { 233, 0 }, { 234, 0 }, { 235, 0 }, - { 236, 0 }, { 237, 0 }, { 238, 0 }, { 239, 0 }, { 240, 0 }, - - { 241, 0 }, { 242, 0 }, { 243, 0 }, { 244, 0 }, { 245, 0 }, - { 246, 0 }, { 247, 0 }, { 248, 0 }, { 249, 0 }, { 250, 0 }, - { 251, 0 }, { 252, 0 }, { 253, 0 }, { 254, 0 }, { 255, 0 }, - { 256, 0 }, { 0, 16 }, { 0,15383 }, { 1,-258 }, { 2,-258 }, - { 3,-258 }, { 4,-258 }, { 5,-258 }, { 6,-258 }, { 7,-258 }, - { 8,-258 }, { 9, 0 }, { 10,-6677 }, { 11,-258 }, { 12, 0 }, - { 13,-6677 }, { 14,-258 }, { 15,-258 }, { 16,-258 }, { 17,-258 }, - { 18,-258 }, { 19,-258 }, { 20,-258 }, { 21,-258 }, { 22,-258 }, - { 23,-258 }, { 24,-258 }, { 25,-258 }, { 26,-258 }, { 27,-258 }, - { 28,-258 }, { 29,-258 }, { 30,-258 }, { 31,-258 }, { 32, 0 }, - - { 33,-258 }, { 34,-258 }, { 35,-258 }, { 36,-258 }, { 37,-258 }, - { 38,-258 }, { 39,-258 }, { 40,-258 }, { 41,-258 }, { 42,-258 }, - { 43,-258 }, { 44,-258 }, { 45, 258 }, { 46,-258 }, { 47,-258 }, - { 48,-258 }, { 49,-258 }, { 50,-258 }, { 51,-258 }, { 52,-258 }, - { 53,-258 }, { 54,-258 }, { 55,-258 }, { 56,-258 }, { 57,-258 }, - { 58,-258 }, { 59,-258 }, { 60,-258 }, { 61,-258 }, { 62,-258 }, - { 63,-258 }, { 64,-258 }, { 65,-258 }, { 66,-258 }, { 67,-258 }, - { 68,-258 }, { 69,-258 }, { 70,-258 }, { 71,-258 }, { 72,-258 }, - { 73,-258 }, { 74,-258 }, { 75,-258 }, { 76,-258 }, { 77,-258 }, - { 78,-258 }, { 79,-258 }, { 80,-258 }, { 81,-258 }, { 82,-258 }, - - { 83,-258 }, { 84,-258 }, { 85,-258 }, { 86,-258 }, { 87,-258 }, - { 88,-258 }, { 89,-258 }, { 90,-258 }, { 91,-258 }, { 92,-258 }, - { 93,-258 }, { 94,-258 }, { 95,-258 }, { 96,-258 }, { 97,-258 }, - { 98,-258 }, { 99,-258 }, { 100,-258 }, { 101,-258 }, { 102,-258 }, - { 103,-258 }, { 104,-258 }, { 105,-258 }, { 106,-258 }, { 107,-258 }, - { 108,-258 }, { 109,-258 }, { 110,-258 }, { 111,-258 }, { 112,-258 }, - { 113,-258 }, { 114,-258 }, { 115,-258 }, { 116,-258 }, { 117,-258 }, - { 118,-258 }, { 119,-258 }, { 120,-258 }, { 121,-258 }, { 122,-258 }, - { 123,-258 }, { 124,-258 }, { 125,-258 }, { 126,-258 }, { 127,-258 }, - { 128,-258 }, { 129,-258 }, { 130,-258 }, { 131,-258 }, { 132,-258 }, - - { 133,-258 }, { 134,-258 }, { 135,-258 }, { 136,-258 }, { 137,-258 }, - { 138,-258 }, { 139,-258 }, { 140,-258 }, { 141,-258 }, { 142,-258 }, - { 143,-258 }, { 144,-258 }, { 145,-258 }, { 146,-258 }, { 147,-258 }, - { 148,-258 }, { 149,-258 }, { 150,-258 }, { 151,-258 }, { 152,-258 }, - { 153,-258 }, { 154,-258 }, { 155,-258 }, { 156,-258 }, { 157,-258 }, - { 158,-258 }, { 159,-258 }, { 160,-258 }, { 161,-258 }, { 162,-258 }, - { 163,-258 }, { 164,-258 }, { 165,-258 }, { 166,-258 }, { 167,-258 }, - { 168,-258 }, { 169,-258 }, { 170,-258 }, { 171,-258 }, { 172,-258 }, - { 173,-258 }, { 174,-258 }, { 175,-258 }, { 176,-258 }, { 177,-258 }, - { 178,-258 }, { 179,-258 }, { 180,-258 }, { 181,-258 }, { 182,-258 }, - - { 183,-258 }, { 184,-258 }, { 185,-258 }, { 186,-258 }, { 187,-258 }, - { 188,-258 }, { 189,-258 }, { 190,-258 }, { 191,-258 }, { 192,-258 }, - { 193,-258 }, { 194,-258 }, { 195,-258 }, { 196,-258 }, { 197,-258 }, - { 198,-258 }, { 199,-258 }, { 200,-258 }, { 201,-258 }, { 202,-258 }, - { 203,-258 }, { 204,-258 }, { 205,-258 }, { 206,-258 }, { 207,-258 }, - { 208,-258 }, { 209,-258 }, { 210,-258 }, { 211,-258 }, { 212,-258 }, - { 213,-258 }, { 214,-258 }, { 215,-258 }, { 216,-258 }, { 217,-258 }, - { 218,-258 }, { 219,-258 }, { 220,-258 }, { 221,-258 }, { 222,-258 }, - { 223,-258 }, { 224,-258 }, { 225,-258 }, { 226,-258 }, { 227,-258 }, - { 228,-258 }, { 229,-258 }, { 230,-258 }, { 231,-258 }, { 232,-258 }, - - { 233,-258 }, { 234,-258 }, { 235,-258 }, { 236,-258 }, { 237,-258 }, - { 238,-258 }, { 239,-258 }, { 240,-258 }, { 241,-258 }, { 242,-258 }, - { 243,-258 }, { 244,-258 }, { 245,-258 }, { 246,-258 }, { 247,-258 }, - { 248,-258 }, { 249,-258 }, { 250,-258 }, { 251,-258 }, { 252,-258 }, - { 253,-258 }, { 254,-258 }, { 255,-258 }, { 256,-258 }, { 0, 16 }, - { 0,15125 }, { 1,-516 }, { 2,-516 }, { 3,-516 }, { 4,-516 }, - { 5,-516 }, { 6,-516 }, { 7,-516 }, { 8,-516 }, { 9,-258 }, - { 10,-6935 }, { 11,-516 }, { 12,-258 }, { 13,-6935 }, { 14,-516 }, - { 15,-516 }, { 16,-516 }, { 17,-516 }, { 18,-516 }, { 19,-516 }, - { 20,-516 }, { 21,-516 }, { 22,-516 }, { 23,-516 }, { 24,-516 }, - - { 25,-516 }, { 26,-516 }, { 27,-516 }, { 28,-516 }, { 29,-516 }, - { 30,-516 }, { 31,-516 }, { 32,-258 }, { 33,-516 }, { 34,-516 }, - { 35,-516 }, { 36,-516 }, { 37,-516 }, { 38,-516 }, { 39,-516 }, - { 40,-516 }, { 41,-516 }, { 42,-516 }, { 43,-516 }, { 44,-516 }, - { 45,4476 }, { 46,-516 }, { 47,-516 }, { 48,-516 }, { 49,-516 }, - { 50,-516 }, { 51,-516 }, { 52,-516 }, { 53,-516 }, { 54,-516 }, - { 55,-516 }, { 56,-516 }, { 57,-516 }, { 58,-516 }, { 59,-516 }, - { 60,-516 }, { 61,-516 }, { 62,-516 }, { 63,-516 }, { 64,-516 }, - { 65,-516 }, { 66,-516 }, { 67,-516 }, { 68,-516 }, { 69,-516 }, - { 70,-516 }, { 71,-516 }, { 72,-516 }, { 73,-516 }, { 74,-516 }, - - { 75,-516 }, { 76,-516 }, { 77,-516 }, { 78,-516 }, { 79,-516 }, - { 80,-516 }, { 81,-516 }, { 82,-516 }, { 83,-516 }, { 84,-516 }, - { 85,-516 }, { 86,-516 }, { 87,-516 }, { 88,-516 }, { 89,-516 }, - { 90,-516 }, { 91,-516 }, { 92,-516 }, { 93,-516 }, { 94,-516 }, - { 95,-516 }, { 96,-516 }, { 97,-516 }, { 98,-516 }, { 99,-516 }, - { 100,-516 }, { 101,-516 }, { 102,-516 }, { 103,-516 }, { 104,-516 }, - { 105,-516 }, { 106,-516 }, { 107,-516 }, { 108,-516 }, { 109,-516 }, - { 110,-516 }, { 111,-516 }, { 112,-516 }, { 113,-516 }, { 114,-516 }, - { 115,-516 }, { 116,-516 }, { 117,-516 }, { 118,-516 }, { 119,-516 }, - { 120,-516 }, { 121,-516 }, { 122,-516 }, { 123,-516 }, { 124,-516 }, - - { 125,-516 }, { 126,-516 }, { 127,-516 }, { 128,-516 }, { 129,-516 }, - { 130,-516 }, { 131,-516 }, { 132,-516 }, { 133,-516 }, { 134,-516 }, - { 135,-516 }, { 136,-516 }, { 137,-516 }, { 138,-516 }, { 139,-516 }, - { 140,-516 }, { 141,-516 }, { 142,-516 }, { 143,-516 }, { 144,-516 }, - { 145,-516 }, { 146,-516 }, { 147,-516 }, { 148,-516 }, { 149,-516 }, - { 150,-516 }, { 151,-516 }, { 152,-516 }, { 153,-516 }, { 154,-516 }, - { 155,-516 }, { 156,-516 }, { 157,-516 }, { 158,-516 }, { 159,-516 }, - { 160,-516 }, { 161,-516 }, { 162,-516 }, { 163,-516 }, { 164,-516 }, - { 165,-516 }, { 166,-516 }, { 167,-516 }, { 168,-516 }, { 169,-516 }, - { 170,-516 }, { 171,-516 }, { 172,-516 }, { 173,-516 }, { 174,-516 }, - - { 175,-516 }, { 176,-516 }, { 177,-516 }, { 178,-516 }, { 179,-516 }, - { 180,-516 }, { 181,-516 }, { 182,-516 }, { 183,-516 }, { 184,-516 }, - { 185,-516 }, { 186,-516 }, { 187,-516 }, { 188,-516 }, { 189,-516 }, - { 190,-516 }, { 191,-516 }, { 192,-516 }, { 193,-516 }, { 194,-516 }, - { 195,-516 }, { 196,-516 }, { 197,-516 }, { 198,-516 }, { 199,-516 }, - { 200,-516 }, { 201,-516 }, { 202,-516 }, { 203,-516 }, { 204,-516 }, - { 205,-516 }, { 206,-516 }, { 207,-516 }, { 208,-516 }, { 209,-516 }, - { 210,-516 }, { 211,-516 }, { 212,-516 }, { 213,-516 }, { 214,-516 }, - { 215,-516 }, { 216,-516 }, { 217,-516 }, { 218,-516 }, { 219,-516 }, - { 220,-516 }, { 221,-516 }, { 222,-516 }, { 223,-516 }, { 224,-516 }, - - { 225,-516 }, { 226,-516 }, { 227,-516 }, { 228,-516 }, { 229,-516 }, - { 230,-516 }, { 231,-516 }, { 232,-516 }, { 233,-516 }, { 234,-516 }, - { 235,-516 }, { 236,-516 }, { 237,-516 }, { 238,-516 }, { 239,-516 }, - { 240,-516 }, { 241,-516 }, { 242,-516 }, { 243,-516 }, { 244,-516 }, - { 245,-516 }, { 246,-516 }, { 247,-516 }, { 248,-516 }, { 249,-516 }, - { 250,-516 }, { 251,-516 }, { 252,-516 }, { 253,-516 }, { 254,-516 }, - { 255,-516 }, { 256,-516 }, { 0, 22 }, { 0,14867 }, { 1,4476 }, - { 2,4476 }, { 3,4476 }, { 4,4476 }, { 5,4476 }, { 6,4476 }, - { 7,4476 }, { 8,4476 }, { 9,4734 }, { 10,4992 }, { 11,4476 }, - { 12,4734 }, { 13,4992 }, { 14,4476 }, { 15,4476 }, { 16,4476 }, - - { 17,4476 }, { 18,4476 }, { 19,4476 }, { 20,4476 }, { 21,4476 }, - { 22,4476 }, { 23,4476 }, { 24,4476 }, { 25,4476 }, { 26,4476 }, - { 27,4476 }, { 28,4476 }, { 29,4476 }, { 30,4476 }, { 31,4476 }, - { 32,4734 }, { 33,4476 }, { 34,4476 }, { 35,4476 }, { 36,4476 }, - { 37,4476 }, { 38,4476 }, { 39,4476 }, { 40,4476 }, { 41,4476 }, - { 42,4476 }, { 43,4476 }, { 44,4476 }, { 45,5039 }, { 46,4476 }, - { 47,4476 }, { 48,4476 }, { 49,4476 }, { 50,4476 }, { 51,4476 }, - { 52,4476 }, { 53,4476 }, { 54,4476 }, { 55,4476 }, { 56,4476 }, - { 57,4476 }, { 58,4476 }, { 59,4476 }, { 60,4476 }, { 61,4476 }, - { 62,4476 }, { 63,4476 }, { 64,4476 }, { 65,4476 }, { 66,4476 }, - - { 67,4476 }, { 68,4476 }, { 69,4476 }, { 70,4476 }, { 71,4476 }, - { 72,4476 }, { 73,4476 }, { 74,4476 }, { 75,4476 }, { 76,4476 }, - { 77,4476 }, { 78,4476 }, { 79,4476 }, { 80,4476 }, { 81,4476 }, - { 82,4476 }, { 83,4476 }, { 84,4476 }, { 85,4476 }, { 86,4476 }, - { 87,4476 }, { 88,4476 }, { 89,4476 }, { 90,4476 }, { 91,4476 }, - { 92,4476 }, { 93,4476 }, { 94,4476 }, { 95,4476 }, { 96,4476 }, - { 97,4476 }, { 98,4476 }, { 99,4476 }, { 100,4476 }, { 101,4476 }, - { 102,4476 }, { 103,4476 }, { 104,4476 }, { 105,4476 }, { 106,4476 }, - { 107,4476 }, { 108,4476 }, { 109,4476 }, { 110,4476 }, { 111,4476 }, - { 112,4476 }, { 113,4476 }, { 114,4476 }, { 115,4476 }, { 116,4476 }, - - { 117,4476 }, { 118,4476 }, { 119,4476 }, { 120,4476 }, { 121,4476 }, - { 122,4476 }, { 123,4476 }, { 124,4476 }, { 125,4476 }, { 126,4476 }, - { 127,4476 }, { 128,4476 }, { 129,4476 }, { 130,4476 }, { 131,4476 }, - { 132,4476 }, { 133,4476 }, { 134,4476 }, { 135,4476 }, { 136,4476 }, - { 137,4476 }, { 138,4476 }, { 139,4476 }, { 140,4476 }, { 141,4476 }, - { 142,4476 }, { 143,4476 }, { 144,4476 }, { 145,4476 }, { 146,4476 }, - { 147,4476 }, { 148,4476 }, { 149,4476 }, { 150,4476 }, { 151,4476 }, - { 152,4476 }, { 153,4476 }, { 154,4476 }, { 155,4476 }, { 156,4476 }, - { 157,4476 }, { 158,4476 }, { 159,4476 }, { 160,4476 }, { 161,4476 }, - { 162,4476 }, { 163,4476 }, { 164,4476 }, { 165,4476 }, { 166,4476 }, - - { 167,4476 }, { 168,4476 }, { 169,4476 }, { 170,4476 }, { 171,4476 }, - { 172,4476 }, { 173,4476 }, { 174,4476 }, { 175,4476 }, { 176,4476 }, - { 177,4476 }, { 178,4476 }, { 179,4476 }, { 180,4476 }, { 181,4476 }, - { 182,4476 }, { 183,4476 }, { 184,4476 }, { 185,4476 }, { 186,4476 }, - { 187,4476 }, { 188,4476 }, { 189,4476 }, { 190,4476 }, { 191,4476 }, - { 192,4476 }, { 193,4476 }, { 194,4476 }, { 195,4476 }, { 196,4476 }, - { 197,4476 }, { 198,4476 }, { 199,4476 }, { 200,4476 }, { 201,4476 }, - { 202,4476 }, { 203,4476 }, { 204,4476 }, { 205,4476 }, { 206,4476 }, - { 207,4476 }, { 208,4476 }, { 209,4476 }, { 210,4476 }, { 211,4476 }, - { 212,4476 }, { 213,4476 }, { 214,4476 }, { 215,4476 }, { 216,4476 }, - - { 217,4476 }, { 218,4476 }, { 219,4476 }, { 220,4476 }, { 221,4476 }, - { 222,4476 }, { 223,4476 }, { 224,4476 }, { 225,4476 }, { 226,4476 }, - { 227,4476 }, { 228,4476 }, { 229,4476 }, { 230,4476 }, { 231,4476 }, - { 232,4476 }, { 233,4476 }, { 234,4476 }, { 235,4476 }, { 236,4476 }, - { 237,4476 }, { 238,4476 }, { 239,4476 }, { 240,4476 }, { 241,4476 }, - { 242,4476 }, { 243,4476 }, { 244,4476 }, { 245,4476 }, { 246,4476 }, - { 247,4476 }, { 248,4476 }, { 249,4476 }, { 250,4476 }, { 251,4476 }, - { 252,4476 }, { 253,4476 }, { 254,4476 }, { 255,4476 }, { 256,4476 }, - { 0, 22 }, { 0,14609 }, { 1, 0 }, { 2, 0 }, { 3, 0 }, - { 4, 0 }, { 5, 0 }, { 6, 0 }, { 7, 0 }, { 8, 0 }, - - { 9, 258 }, { 10,-7141 }, { 11, 0 }, { 12, 258 }, { 13,-7141 }, - { 14, 0 }, { 15, 0 }, { 16, 0 }, { 17, 0 }, { 18, 0 }, - { 19, 0 }, { 20, 0 }, { 21, 0 }, { 22, 0 }, { 23, 0 }, - { 24, 0 }, { 25, 0 }, { 26, 0 }, { 27, 0 }, { 28, 0 }, - { 29, 0 }, { 30, 0 }, { 31, 0 }, { 32, 258 }, { 33, 0 }, - { 34, 0 }, { 35, 0 }, { 36, 0 }, { 37, 0 }, { 38, 0 }, - { 39, 0 }, { 40, 0 }, { 41, 0 }, { 42, 0 }, { 43, 0 }, - { 44, 0 }, { 45, 516 }, { 46, 0 }, { 47, 0 }, { 48, 0 }, - { 49, 0 }, { 50, 0 }, { 51, 0 }, { 52, 0 }, { 53, 0 }, - { 54, 0 }, { 55, 0 }, { 56, 0 }, { 57, 0 }, { 58, 0 }, - - { 59, 0 }, { 60, 0 }, { 61, 0 }, { 62, 0 }, { 63, 0 }, - { 64, 0 }, { 65, 0 }, { 66, 0 }, { 67, 0 }, { 68, 0 }, - { 69, 0 }, { 70, 0 }, { 71, 0 }, { 72, 0 }, { 73, 0 }, - { 74, 0 }, { 75, 0 }, { 76, 0 }, { 77, 0 }, { 78, 0 }, - { 79, 0 }, { 80, 0 }, { 81, 0 }, { 82, 0 }, { 83, 0 }, - { 84, 0 }, { 85, 0 }, { 86, 0 }, { 87, 0 }, { 88, 0 }, - { 89, 0 }, { 90, 0 }, { 91, 0 }, { 92, 0 }, { 93, 0 }, - { 94, 0 }, { 95, 0 }, { 96, 0 }, { 97, 0 }, { 98, 0 }, - { 99, 0 }, { 100, 0 }, { 101, 0 }, { 102, 0 }, { 103, 0 }, - { 104, 0 }, { 105, 0 }, { 106, 0 }, { 107, 0 }, { 108, 0 }, - - { 109, 0 }, { 110, 0 }, { 111, 0 }, { 112, 0 }, { 113, 0 }, - { 114, 0 }, { 115, 0 }, { 116, 0 }, { 117, 0 }, { 118, 0 }, - { 119, 0 }, { 120, 0 }, { 121, 0 }, { 122, 0 }, { 123, 0 }, - { 124, 0 }, { 125, 0 }, { 126, 0 }, { 127, 0 }, { 128, 0 }, - { 129, 0 }, { 130, 0 }, { 131, 0 }, { 132, 0 }, { 133, 0 }, - { 134, 0 }, { 135, 0 }, { 136, 0 }, { 137, 0 }, { 138, 0 }, - { 139, 0 }, { 140, 0 }, { 141, 0 }, { 142, 0 }, { 143, 0 }, - { 144, 0 }, { 145, 0 }, { 146, 0 }, { 147, 0 }, { 148, 0 }, - { 149, 0 }, { 150, 0 }, { 151, 0 }, { 152, 0 }, { 153, 0 }, - { 154, 0 }, { 155, 0 }, { 156, 0 }, { 157, 0 }, { 158, 0 }, - - { 159, 0 }, { 160, 0 }, { 161, 0 }, { 162, 0 }, { 163, 0 }, - { 164, 0 }, { 165, 0 }, { 166, 0 }, { 167, 0 }, { 168, 0 }, - { 169, 0 }, { 170, 0 }, { 171, 0 }, { 172, 0 }, { 173, 0 }, - { 174, 0 }, { 175, 0 }, { 176, 0 }, { 177, 0 }, { 178, 0 }, - { 179, 0 }, { 180, 0 }, { 181, 0 }, { 182, 0 }, { 183, 0 }, - { 184, 0 }, { 185, 0 }, { 186, 0 }, { 187, 0 }, { 188, 0 }, - { 189, 0 }, { 190, 0 }, { 191, 0 }, { 192, 0 }, { 193, 0 }, - { 194, 0 }, { 195, 0 }, { 196, 0 }, { 197, 0 }, { 198, 0 }, - { 199, 0 }, { 200, 0 }, { 201, 0 }, { 202, 0 }, { 203, 0 }, - { 204, 0 }, { 205, 0 }, { 206, 0 }, { 207, 0 }, { 208, 0 }, - - { 209, 0 }, { 210, 0 }, { 211, 0 }, { 212, 0 }, { 213, 0 }, - { 214, 0 }, { 215, 0 }, { 216, 0 }, { 217, 0 }, { 218, 0 }, - { 219, 0 }, { 220, 0 }, { 221, 0 }, { 222, 0 }, { 223, 0 }, - { 224, 0 }, { 225, 0 }, { 226, 0 }, { 227, 0 }, { 228, 0 }, - { 229, 0 }, { 230, 0 }, { 231, 0 }, { 232, 0 }, { 233, 0 }, - { 234, 0 }, { 235, 0 }, { 236, 0 }, { 237, 0 }, { 238, 0 }, - { 239, 0 }, { 240, 0 }, { 241, 0 }, { 242, 0 }, { 243, 0 }, - { 244, 0 }, { 245, 0 }, { 246, 0 }, { 247, 0 }, { 248, 0 }, - { 249, 0 }, { 250, 0 }, { 251, 0 }, { 252, 0 }, { 253, 0 }, - { 254, 0 }, { 255, 0 }, { 256, 0 }, { 0, 22 }, { 0,14351 }, - - { 1,-258 }, { 2,-258 }, { 3,-258 }, { 4,-258 }, { 5,-258 }, - { 6,-258 }, { 7,-258 }, { 8,-258 }, { 9, 0 }, { 10,-7399 }, - { 11,-258 }, { 12, 0 }, { 13,-7399 }, { 14,-258 }, { 15,-258 }, - { 16,-258 }, { 17,-258 }, { 18,-258 }, { 19,-258 }, { 20,-258 }, - { 21,-258 }, { 22,-258 }, { 23,-258 }, { 24,-258 }, { 25,-258 }, - { 26,-258 }, { 27,-258 }, { 28,-258 }, { 29,-258 }, { 30,-258 }, - { 31,-258 }, { 32, 0 }, { 33,-258 }, { 34,-258 }, { 35,-258 }, - { 36,-258 }, { 37,-258 }, { 38,-258 }, { 39,-258 }, { 40,-258 }, - { 41,-258 }, { 42,-258 }, { 43,-258 }, { 44,-258 }, { 45, 258 }, - { 46,-258 }, { 47,-258 }, { 48,-258 }, { 49,-258 }, { 50,-258 }, - - { 51,-258 }, { 52,-258 }, { 53,-258 }, { 54,-258 }, { 55,-258 }, - { 56,-258 }, { 57,-258 }, { 58,-258 }, { 59,-258 }, { 60,-258 }, - { 61,-258 }, { 62,-258 }, { 63,-258 }, { 64,-258 }, { 65,-258 }, - { 66,-258 }, { 67,-258 }, { 68,-258 }, { 69,-258 }, { 70,-258 }, - { 71,-258 }, { 72,-258 }, { 73,-258 }, { 74,-258 }, { 75,-258 }, - { 76,-258 }, { 77,-258 }, { 78,-258 }, { 79,-258 }, { 80,-258 }, - { 81,-258 }, { 82,-258 }, { 83,-258 }, { 84,-258 }, { 85,-258 }, - { 86,-258 }, { 87,-258 }, { 88,-258 }, { 89,-258 }, { 90,-258 }, - { 91,-258 }, { 92,-258 }, { 93,-258 }, { 94,-258 }, { 95,-258 }, - { 96,-258 }, { 97,-258 }, { 98,-258 }, { 99,-258 }, { 100,-258 }, - - { 101,-258 }, { 102,-258 }, { 103,-258 }, { 104,-258 }, { 105,-258 }, - { 106,-258 }, { 107,-258 }, { 108,-258 }, { 109,-258 }, { 110,-258 }, - { 111,-258 }, { 112,-258 }, { 113,-258 }, { 114,-258 }, { 115,-258 }, - { 116,-258 }, { 117,-258 }, { 118,-258 }, { 119,-258 }, { 120,-258 }, - { 121,-258 }, { 122,-258 }, { 123,-258 }, { 124,-258 }, { 125,-258 }, - { 126,-258 }, { 127,-258 }, { 128,-258 }, { 129,-258 }, { 130,-258 }, - { 131,-258 }, { 132,-258 }, { 133,-258 }, { 134,-258 }, { 135,-258 }, - { 136,-258 }, { 137,-258 }, { 138,-258 }, { 139,-258 }, { 140,-258 }, - { 141,-258 }, { 142,-258 }, { 143,-258 }, { 144,-258 }, { 145,-258 }, - { 146,-258 }, { 147,-258 }, { 148,-258 }, { 149,-258 }, { 150,-258 }, - - { 151,-258 }, { 152,-258 }, { 153,-258 }, { 154,-258 }, { 155,-258 }, - { 156,-258 }, { 157,-258 }, { 158,-258 }, { 159,-258 }, { 160,-258 }, - { 161,-258 }, { 162,-258 }, { 163,-258 }, { 164,-258 }, { 165,-258 }, - { 166,-258 }, { 167,-258 }, { 168,-258 }, { 169,-258 }, { 170,-258 }, - { 171,-258 }, { 172,-258 }, { 173,-258 }, { 174,-258 }, { 175,-258 }, - { 176,-258 }, { 177,-258 }, { 178,-258 }, { 179,-258 }, { 180,-258 }, - { 181,-258 }, { 182,-258 }, { 183,-258 }, { 184,-258 }, { 185,-258 }, - { 186,-258 }, { 187,-258 }, { 188,-258 }, { 189,-258 }, { 190,-258 }, - { 191,-258 }, { 192,-258 }, { 193,-258 }, { 194,-258 }, { 195,-258 }, - { 196,-258 }, { 197,-258 }, { 198,-258 }, { 199,-258 }, { 200,-258 }, - - { 201,-258 }, { 202,-258 }, { 203,-258 }, { 204,-258 }, { 205,-258 }, - { 206,-258 }, { 207,-258 }, { 208,-258 }, { 209,-258 }, { 210,-258 }, - { 211,-258 }, { 212,-258 }, { 213,-258 }, { 214,-258 }, { 215,-258 }, - { 216,-258 }, { 217,-258 }, { 218,-258 }, { 219,-258 }, { 220,-258 }, - { 221,-258 }, { 222,-258 }, { 223,-258 }, { 224,-258 }, { 225,-258 }, - { 226,-258 }, { 227,-258 }, { 228,-258 }, { 229,-258 }, { 230,-258 }, - { 231,-258 }, { 232,-258 }, { 233,-258 }, { 234,-258 }, { 235,-258 }, - { 236,-258 }, { 237,-258 }, { 238,-258 }, { 239,-258 }, { 240,-258 }, - { 241,-258 }, { 242,-258 }, { 243,-258 }, { 244,-258 }, { 245,-258 }, - { 246,-258 }, { 247,-258 }, { 248,-258 }, { 249,-258 }, { 250,-258 }, - - { 251,-258 }, { 252,-258 }, { 253,-258 }, { 254,-258 }, { 255,-258 }, - { 256,-258 }, { 0, 22 }, { 0,14093 }, { 1,-516 }, { 2,-516 }, - { 3,-516 }, { 4,-516 }, { 5,-516 }, { 6,-516 }, { 7,-516 }, - { 8,-516 }, { 9,-258 }, { 10,-7657 }, { 11,-516 }, { 12,-258 }, - { 13,-7657 }, { 14,-516 }, { 15,-516 }, { 16,-516 }, { 17,-516 }, - { 18,-516 }, { 19,-516 }, { 20,-516 }, { 21,-516 }, { 22,-516 }, - { 23,-516 }, { 24,-516 }, { 25,-516 }, { 26,-516 }, { 27,-516 }, - { 28,-516 }, { 29,-516 }, { 30,-516 }, { 31,-516 }, { 32,-258 }, - { 33,-516 }, { 34,-516 }, { 35,-516 }, { 36,-516 }, { 37,-516 }, - { 38,-516 }, { 39,-516 }, { 40,-516 }, { 41,-516 }, { 42,-516 }, - - { 43,-516 }, { 44,-516 }, { 45,4523 }, { 46,-516 }, { 47,-516 }, - { 48,-516 }, { 49,-516 }, { 50,-516 }, { 51,-516 }, { 52,-516 }, - { 53,-516 }, { 54,-516 }, { 55,-516 }, { 56,-516 }, { 57,-516 }, - { 58,-516 }, { 59,-516 }, { 60,-516 }, { 61,-516 }, { 62,-516 }, - { 63,-516 }, { 64,-516 }, { 65,-516 }, { 66,-516 }, { 67,-516 }, - { 68,-516 }, { 69,-516 }, { 70,-516 }, { 71,-516 }, { 72,-516 }, - { 73,-516 }, { 74,-516 }, { 75,-516 }, { 76,-516 }, { 77,-516 }, - { 78,-516 }, { 79,-516 }, { 80,-516 }, { 81,-516 }, { 82,-516 }, - { 83,-516 }, { 84,-516 }, { 85,-516 }, { 86,-516 }, { 87,-516 }, - { 88,-516 }, { 89,-516 }, { 90,-516 }, { 91,-516 }, { 92,-516 }, - - { 93,-516 }, { 94,-516 }, { 95,-516 }, { 96,-516 }, { 97,-516 }, - { 98,-516 }, { 99,-516 }, { 100,-516 }, { 101,-516 }, { 102,-516 }, - { 103,-516 }, { 104,-516 }, { 105,-516 }, { 106,-516 }, { 107,-516 }, - { 108,-516 }, { 109,-516 }, { 110,-516 }, { 111,-516 }, { 112,-516 }, - { 113,-516 }, { 114,-516 }, { 115,-516 }, { 116,-516 }, { 117,-516 }, - { 118,-516 }, { 119,-516 }, { 120,-516 }, { 121,-516 }, { 122,-516 }, - { 123,-516 }, { 124,-516 }, { 125,-516 }, { 126,-516 }, { 127,-516 }, - { 128,-516 }, { 129,-516 }, { 130,-516 }, { 131,-516 }, { 132,-516 }, - { 133,-516 }, { 134,-516 }, { 135,-516 }, { 136,-516 }, { 137,-516 }, - { 138,-516 }, { 139,-516 }, { 140,-516 }, { 141,-516 }, { 142,-516 }, - - { 143,-516 }, { 144,-516 }, { 145,-516 }, { 146,-516 }, { 147,-516 }, - { 148,-516 }, { 149,-516 }, { 150,-516 }, { 151,-516 }, { 152,-516 }, - { 153,-516 }, { 154,-516 }, { 155,-516 }, { 156,-516 }, { 157,-516 }, - { 158,-516 }, { 159,-516 }, { 160,-516 }, { 161,-516 }, { 162,-516 }, - { 163,-516 }, { 164,-516 }, { 165,-516 }, { 166,-516 }, { 167,-516 }, - { 168,-516 }, { 169,-516 }, { 170,-516 }, { 171,-516 }, { 172,-516 }, - { 173,-516 }, { 174,-516 }, { 175,-516 }, { 176,-516 }, { 177,-516 }, - { 178,-516 }, { 179,-516 }, { 180,-516 }, { 181,-516 }, { 182,-516 }, - { 183,-516 }, { 184,-516 }, { 185,-516 }, { 186,-516 }, { 187,-516 }, - { 188,-516 }, { 189,-516 }, { 190,-516 }, { 191,-516 }, { 192,-516 }, - - { 193,-516 }, { 194,-516 }, { 195,-516 }, { 196,-516 }, { 197,-516 }, - { 198,-516 }, { 199,-516 }, { 200,-516 }, { 201,-516 }, { 202,-516 }, - { 203,-516 }, { 204,-516 }, { 205,-516 }, { 206,-516 }, { 207,-516 }, - { 208,-516 }, { 209,-516 }, { 210,-516 }, { 211,-516 }, { 212,-516 }, - { 213,-516 }, { 214,-516 }, { 215,-516 }, { 216,-516 }, { 217,-516 }, - { 218,-516 }, { 219,-516 }, { 220,-516 }, { 221,-516 }, { 222,-516 }, - { 223,-516 }, { 224,-516 }, { 225,-516 }, { 226,-516 }, { 227,-516 }, - { 228,-516 }, { 229,-516 }, { 230,-516 }, { 231,-516 }, { 232,-516 }, - { 233,-516 }, { 234,-516 }, { 235,-516 }, { 236,-516 }, { 237,-516 }, - { 238,-516 }, { 239,-516 }, { 240,-516 }, { 241,-516 }, { 242,-516 }, - - { 243,-516 }, { 244,-516 }, { 245,-516 }, { 246,-516 }, { 247,-516 }, - { 248,-516 }, { 249,-516 }, { 250,-516 }, { 251,-516 }, { 252,-516 }, - { 253,-516 }, { 254,-516 }, { 255,-516 }, { 256,-516 }, { 0, 37 }, - { 0,13835 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 0, 37 }, { 0,13812 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 48,4523 }, { 49,4523 }, - { 50,4523 }, { 51,4523 }, { 52,4523 }, { 53,4523 }, { 54,4523 }, - { 55,4523 }, { 56,4523 }, { 57,4523 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 65,4523 }, { 66,4523 }, { 67,4523 }, { 68,4523 }, { 69,4523 }, - { 70,4523 }, { 48,4523 }, { 49,4523 }, { 50,4523 }, { 51,4523 }, - { 52,4523 }, { 53,4523 }, { 54,4523 }, { 55,4523 }, { 56,4523 }, - { 57,4523 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 65,4523 }, { 66,4523 }, - { 67,4523 }, { 68,4523 }, { 69,4523 }, { 70,4523 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 97,4523 }, { 98,4523 }, { 99,4523 }, - { 100,4523 }, { 101,4523 }, { 102,4523 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 97,4523 }, { 98,4523 }, { 99,4523 }, { 100,4523 }, { 101,4523 }, - { 102,4523 }, { 0, 24 }, { 0,13708 }, { 1,4523 }, { 2,4523 }, - { 3,4523 }, { 4,4523 }, { 5,4523 }, { 6,4523 }, { 7,4523 }, - - { 8,4523 }, { 9,4781 }, { 10,5039 }, { 11,4523 }, { 12,4781 }, - { 13,5039 }, { 14,4523 }, { 15,4523 }, { 16,4523 }, { 17,4523 }, - { 18,4523 }, { 19,4523 }, { 20,4523 }, { 21,4523 }, { 22,4523 }, - { 23,4523 }, { 24,4523 }, { 25,4523 }, { 26,4523 }, { 27,4523 }, - { 28,4523 }, { 29,4523 }, { 30,4523 }, { 31,4523 }, { 32,4781 }, - { 33,4523 }, { 34,4523 }, { 35,4523 }, { 36,4523 }, { 37,4523 }, - { 38,4523 }, { 39,4523 }, { 40,4523 }, { 41,4523 }, { 42,4523 }, - { 43,4523 }, { 44,4523 }, { 45,5086 }, { 46,4523 }, { 47,4523 }, - { 48,4523 }, { 49,4523 }, { 50,4523 }, { 51,4523 }, { 52,4523 }, - { 53,4523 }, { 54,4523 }, { 55,4523 }, { 56,4523 }, { 57,4523 }, - - { 58,4523 }, { 59,4523 }, { 60,4523 }, { 61,4523 }, { 62,4523 }, - { 63,4523 }, { 64,4523 }, { 65,4523 }, { 66,4523 }, { 67,4523 }, - { 68,4523 }, { 69,4523 }, { 70,4523 }, { 71,4523 }, { 72,4523 }, - { 73,4523 }, { 74,4523 }, { 75,4523 }, { 76,4523 }, { 77,4523 }, - { 78,4523 }, { 79,4523 }, { 80,4523 }, { 81,4523 }, { 82,4523 }, - { 83,4523 }, { 84,4523 }, { 85,4523 }, { 86,4523 }, { 87,4523 }, - { 88,4523 }, { 89,4523 }, { 90,4523 }, { 91,4523 }, { 92,4523 }, - { 93,4523 }, { 94,4523 }, { 95,4523 }, { 96,4523 }, { 97,4523 }, - { 98,4523 }, { 99,4523 }, { 100,4523 }, { 101,4523 }, { 102,4523 }, - { 103,4523 }, { 104,4523 }, { 105,4523 }, { 106,4523 }, { 107,4523 }, - - { 108,4523 }, { 109,4523 }, { 110,4523 }, { 111,4523 }, { 112,4523 }, - { 113,4523 }, { 114,4523 }, { 115,4523 }, { 116,4523 }, { 117,4523 }, - { 118,4523 }, { 119,4523 }, { 120,4523 }, { 121,4523 }, { 122,4523 }, - { 123,4523 }, { 124,4523 }, { 125,4523 }, { 126,4523 }, { 127,4523 }, - { 128,4523 }, { 129,4523 }, { 130,4523 }, { 131,4523 }, { 132,4523 }, - { 133,4523 }, { 134,4523 }, { 135,4523 }, { 136,4523 }, { 137,4523 }, - { 138,4523 }, { 139,4523 }, { 140,4523 }, { 141,4523 }, { 142,4523 }, - { 143,4523 }, { 144,4523 }, { 145,4523 }, { 146,4523 }, { 147,4523 }, - { 148,4523 }, { 149,4523 }, { 150,4523 }, { 151,4523 }, { 152,4523 }, - { 153,4523 }, { 154,4523 }, { 155,4523 }, { 156,4523 }, { 157,4523 }, - - { 158,4523 }, { 159,4523 }, { 160,4523 }, { 161,4523 }, { 162,4523 }, - { 163,4523 }, { 164,4523 }, { 165,4523 }, { 166,4523 }, { 167,4523 }, - { 168,4523 }, { 169,4523 }, { 170,4523 }, { 171,4523 }, { 172,4523 }, - { 173,4523 }, { 174,4523 }, { 175,4523 }, { 176,4523 }, { 177,4523 }, - { 178,4523 }, { 179,4523 }, { 180,4523 }, { 181,4523 }, { 182,4523 }, - { 183,4523 }, { 184,4523 }, { 185,4523 }, { 186,4523 }, { 187,4523 }, - { 188,4523 }, { 189,4523 }, { 190,4523 }, { 191,4523 }, { 192,4523 }, - { 193,4523 }, { 194,4523 }, { 195,4523 }, { 196,4523 }, { 197,4523 }, - { 198,4523 }, { 199,4523 }, { 200,4523 }, { 201,4523 }, { 202,4523 }, - { 203,4523 }, { 204,4523 }, { 205,4523 }, { 206,4523 }, { 207,4523 }, - - { 208,4523 }, { 209,4523 }, { 210,4523 }, { 211,4523 }, { 212,4523 }, - { 213,4523 }, { 214,4523 }, { 215,4523 }, { 216,4523 }, { 217,4523 }, - { 218,4523 }, { 219,4523 }, { 220,4523 }, { 221,4523 }, { 222,4523 }, - { 223,4523 }, { 224,4523 }, { 225,4523 }, { 226,4523 }, { 227,4523 }, - { 228,4523 }, { 229,4523 }, { 230,4523 }, { 231,4523 }, { 232,4523 }, - { 233,4523 }, { 234,4523 }, { 235,4523 }, { 236,4523 }, { 237,4523 }, - { 238,4523 }, { 239,4523 }, { 240,4523 }, { 241,4523 }, { 242,4523 }, - { 243,4523 }, { 244,4523 }, { 245,4523 }, { 246,4523 }, { 247,4523 }, - { 248,4523 }, { 249,4523 }, { 250,4523 }, { 251,4523 }, { 252,4523 }, - { 253,4523 }, { 254,4523 }, { 255,4523 }, { 256,4523 }, { 0, 24 }, - - { 0,13450 }, { 1, 0 }, { 2, 0 }, { 3, 0 }, { 4, 0 }, - { 5, 0 }, { 6, 0 }, { 7, 0 }, { 8, 0 }, { 9, 258 }, - { 10,-7084 }, { 11, 0 }, { 12, 258 }, { 13,-7084 }, { 14, 0 }, - { 15, 0 }, { 16, 0 }, { 17, 0 }, { 18, 0 }, { 19, 0 }, - { 20, 0 }, { 21, 0 }, { 22, 0 }, { 23, 0 }, { 24, 0 }, - { 25, 0 }, { 26, 0 }, { 27, 0 }, { 28, 0 }, { 29, 0 }, - { 30, 0 }, { 31, 0 }, { 32, 258 }, { 33, 0 }, { 34, 0 }, - { 35, 0 }, { 36, 0 }, { 37, 0 }, { 38, 0 }, { 39, 0 }, - { 40, 0 }, { 41, 0 }, { 42, 0 }, { 43, 0 }, { 44, 0 }, - { 45, 516 }, { 46, 0 }, { 47, 0 }, { 48, 0 }, { 49, 0 }, - - { 50, 0 }, { 51, 0 }, { 52, 0 }, { 53, 0 }, { 54, 0 }, - { 55, 0 }, { 56, 0 }, { 57, 0 }, { 58, 0 }, { 59, 0 }, - { 60, 0 }, { 61, 0 }, { 62, 0 }, { 63, 0 }, { 64, 0 }, - { 65, 0 }, { 66, 0 }, { 67, 0 }, { 68, 0 }, { 69, 0 }, - { 70, 0 }, { 71, 0 }, { 72, 0 }, { 73, 0 }, { 74, 0 }, - { 75, 0 }, { 76, 0 }, { 77, 0 }, { 78, 0 }, { 79, 0 }, - { 80, 0 }, { 81, 0 }, { 82, 0 }, { 83, 0 }, { 84, 0 }, - { 85, 0 }, { 86, 0 }, { 87, 0 }, { 88, 0 }, { 89, 0 }, - { 90, 0 }, { 91, 0 }, { 92, 0 }, { 93, 0 }, { 94, 0 }, - { 95, 0 }, { 96, 0 }, { 97, 0 }, { 98, 0 }, { 99, 0 }, - - { 100, 0 }, { 101, 0 }, { 102, 0 }, { 103, 0 }, { 104, 0 }, - { 105, 0 }, { 106, 0 }, { 107, 0 }, { 108, 0 }, { 109, 0 }, - { 110, 0 }, { 111, 0 }, { 112, 0 }, { 113, 0 }, { 114, 0 }, - { 115, 0 }, { 116, 0 }, { 117, 0 }, { 118, 0 }, { 119, 0 }, - { 120, 0 }, { 121, 0 }, { 122, 0 }, { 123, 0 }, { 124, 0 }, - { 125, 0 }, { 126, 0 }, { 127, 0 }, { 128, 0 }, { 129, 0 }, - { 130, 0 }, { 131, 0 }, { 132, 0 }, { 133, 0 }, { 134, 0 }, - { 135, 0 }, { 136, 0 }, { 137, 0 }, { 138, 0 }, { 139, 0 }, - { 140, 0 }, { 141, 0 }, { 142, 0 }, { 143, 0 }, { 144, 0 }, - { 145, 0 }, { 146, 0 }, { 147, 0 }, { 148, 0 }, { 149, 0 }, - - { 150, 0 }, { 151, 0 }, { 152, 0 }, { 153, 0 }, { 154, 0 }, - { 155, 0 }, { 156, 0 }, { 157, 0 }, { 158, 0 }, { 159, 0 }, - { 160, 0 }, { 161, 0 }, { 162, 0 }, { 163, 0 }, { 164, 0 }, - { 165, 0 }, { 166, 0 }, { 167, 0 }, { 168, 0 }, { 169, 0 }, - { 170, 0 }, { 171, 0 }, { 172, 0 }, { 173, 0 }, { 174, 0 }, - { 175, 0 }, { 176, 0 }, { 177, 0 }, { 178, 0 }, { 179, 0 }, - { 180, 0 }, { 181, 0 }, { 182, 0 }, { 183, 0 }, { 184, 0 }, - { 185, 0 }, { 186, 0 }, { 187, 0 }, { 188, 0 }, { 189, 0 }, - { 190, 0 }, { 191, 0 }, { 192, 0 }, { 193, 0 }, { 194, 0 }, - { 195, 0 }, { 196, 0 }, { 197, 0 }, { 198, 0 }, { 199, 0 }, - - { 200, 0 }, { 201, 0 }, { 202, 0 }, { 203, 0 }, { 204, 0 }, - { 205, 0 }, { 206, 0 }, { 207, 0 }, { 208, 0 }, { 209, 0 }, - { 210, 0 }, { 211, 0 }, { 212, 0 }, { 213, 0 }, { 214, 0 }, - { 215, 0 }, { 216, 0 }, { 217, 0 }, { 218, 0 }, { 219, 0 }, - { 220, 0 }, { 221, 0 }, { 222, 0 }, { 223, 0 }, { 224, 0 }, - { 225, 0 }, { 226, 0 }, { 227, 0 }, { 228, 0 }, { 229, 0 }, - { 230, 0 }, { 231, 0 }, { 232, 0 }, { 233, 0 }, { 234, 0 }, - { 235, 0 }, { 236, 0 }, { 237, 0 }, { 238, 0 }, { 239, 0 }, - { 240, 0 }, { 241, 0 }, { 242, 0 }, { 243, 0 }, { 244, 0 }, - { 245, 0 }, { 246, 0 }, { 247, 0 }, { 248, 0 }, { 249, 0 }, - - { 250, 0 }, { 251, 0 }, { 252, 0 }, { 253, 0 }, { 254, 0 }, - { 255, 0 }, { 256, 0 }, { 0, 24 }, { 0,13192 }, { 1,-258 }, - { 2,-258 }, { 3,-258 }, { 4,-258 }, { 5,-258 }, { 6,-258 }, - { 7,-258 }, { 8,-258 }, { 9, 0 }, { 10,-7342 }, { 11,-258 }, - { 12, 0 }, { 13,-7342 }, { 14,-258 }, { 15,-258 }, { 16,-258 }, - { 17,-258 }, { 18,-258 }, { 19,-258 }, { 20,-258 }, { 21,-258 }, - { 22,-258 }, { 23,-258 }, { 24,-258 }, { 25,-258 }, { 26,-258 }, - { 27,-258 }, { 28,-258 }, { 29,-258 }, { 30,-258 }, { 31,-258 }, - { 32, 0 }, { 33,-258 }, { 34,-258 }, { 35,-258 }, { 36,-258 }, - { 37,-258 }, { 38,-258 }, { 39,-258 }, { 40,-258 }, { 41,-258 }, - - { 42,-258 }, { 43,-258 }, { 44,-258 }, { 45, 258 }, { 46,-258 }, - { 47,-258 }, { 48,-258 }, { 49,-258 }, { 50,-258 }, { 51,-258 }, - { 52,-258 }, { 53,-258 }, { 54,-258 }, { 55,-258 }, { 56,-258 }, - { 57,-258 }, { 58,-258 }, { 59,-258 }, { 60,-258 }, { 61,-258 }, - { 62,-258 }, { 63,-258 }, { 64,-258 }, { 65,-258 }, { 66,-258 }, - { 67,-258 }, { 68,-258 }, { 69,-258 }, { 70,-258 }, { 71,-258 }, - { 72,-258 }, { 73,-258 }, { 74,-258 }, { 75,-258 }, { 76,-258 }, - { 77,-258 }, { 78,-258 }, { 79,-258 }, { 80,-258 }, { 81,-258 }, - { 82,-258 }, { 83,-258 }, { 84,-258 }, { 85,-258 }, { 86,-258 }, - { 87,-258 }, { 88,-258 }, { 89,-258 }, { 90,-258 }, { 91,-258 }, - - { 92,-258 }, { 93,-258 }, { 94,-258 }, { 95,-258 }, { 96,-258 }, - { 97,-258 }, { 98,-258 }, { 99,-258 }, { 100,-258 }, { 101,-258 }, - { 102,-258 }, { 103,-258 }, { 104,-258 }, { 105,-258 }, { 106,-258 }, - { 107,-258 }, { 108,-258 }, { 109,-258 }, { 110,-258 }, { 111,-258 }, - { 112,-258 }, { 113,-258 }, { 114,-258 }, { 115,-258 }, { 116,-258 }, - { 117,-258 }, { 118,-258 }, { 119,-258 }, { 120,-258 }, { 121,-258 }, - { 122,-258 }, { 123,-258 }, { 124,-258 }, { 125,-258 }, { 126,-258 }, - { 127,-258 }, { 128,-258 }, { 129,-258 }, { 130,-258 }, { 131,-258 }, - { 132,-258 }, { 133,-258 }, { 134,-258 }, { 135,-258 }, { 136,-258 }, - { 137,-258 }, { 138,-258 }, { 139,-258 }, { 140,-258 }, { 141,-258 }, - - { 142,-258 }, { 143,-258 }, { 144,-258 }, { 145,-258 }, { 146,-258 }, - { 147,-258 }, { 148,-258 }, { 149,-258 }, { 150,-258 }, { 151,-258 }, - { 152,-258 }, { 153,-258 }, { 154,-258 }, { 155,-258 }, { 156,-258 }, - { 157,-258 }, { 158,-258 }, { 159,-258 }, { 160,-258 }, { 161,-258 }, - { 162,-258 }, { 163,-258 }, { 164,-258 }, { 165,-258 }, { 166,-258 }, - { 167,-258 }, { 168,-258 }, { 169,-258 }, { 170,-258 }, { 171,-258 }, - { 172,-258 }, { 173,-258 }, { 174,-258 }, { 175,-258 }, { 176,-258 }, - { 177,-258 }, { 178,-258 }, { 179,-258 }, { 180,-258 }, { 181,-258 }, - { 182,-258 }, { 183,-258 }, { 184,-258 }, { 185,-258 }, { 186,-258 }, - { 187,-258 }, { 188,-258 }, { 189,-258 }, { 190,-258 }, { 191,-258 }, - - { 192,-258 }, { 193,-258 }, { 194,-258 }, { 195,-258 }, { 196,-258 }, - { 197,-258 }, { 198,-258 }, { 199,-258 }, { 200,-258 }, { 201,-258 }, - { 202,-258 }, { 203,-258 }, { 204,-258 }, { 205,-258 }, { 206,-258 }, - { 207,-258 }, { 208,-258 }, { 209,-258 }, { 210,-258 }, { 211,-258 }, - { 212,-258 }, { 213,-258 }, { 214,-258 }, { 215,-258 }, { 216,-258 }, - { 217,-258 }, { 218,-258 }, { 219,-258 }, { 220,-258 }, { 221,-258 }, - { 222,-258 }, { 223,-258 }, { 224,-258 }, { 225,-258 }, { 226,-258 }, - { 227,-258 }, { 228,-258 }, { 229,-258 }, { 230,-258 }, { 231,-258 }, - { 232,-258 }, { 233,-258 }, { 234,-258 }, { 235,-258 }, { 236,-258 }, - { 237,-258 }, { 238,-258 }, { 239,-258 }, { 240,-258 }, { 241,-258 }, - - { 242,-258 }, { 243,-258 }, { 244,-258 }, { 245,-258 }, { 246,-258 }, - { 247,-258 }, { 248,-258 }, { 249,-258 }, { 250,-258 }, { 251,-258 }, - { 252,-258 }, { 253,-258 }, { 254,-258 }, { 255,-258 }, { 256,-258 }, - { 0, 24 }, { 0,12934 }, { 1,-516 }, { 2,-516 }, { 3,-516 }, - { 4,-516 }, { 5,-516 }, { 6,-516 }, { 7,-516 }, { 8,-516 }, - { 9,-258 }, { 10,-7600 }, { 11,-516 }, { 12,-258 }, { 13,-7600 }, - { 14,-516 }, { 15,-516 }, { 16,-516 }, { 17,-516 }, { 18,-516 }, - { 19,-516 }, { 20,-516 }, { 21,-516 }, { 22,-516 }, { 23,-516 }, - { 24,-516 }, { 25,-516 }, { 26,-516 }, { 27,-516 }, { 28,-516 }, - { 29,-516 }, { 30,-516 }, { 31,-516 }, { 32,-258 }, { 33,-516 }, - - { 34,-516 }, { 35,-516 }, { 36,-516 }, { 37,-516 }, { 38,-516 }, - { 39,-516 }, { 40,-516 }, { 41,-516 }, { 42,-516 }, { 43,-516 }, - { 44,-516 }, { 45,4570 }, { 46,-516 }, { 47,-516 }, { 48,-516 }, - { 49,-516 }, { 50,-516 }, { 51,-516 }, { 52,-516 }, { 53,-516 }, - { 54,-516 }, { 55,-516 }, { 56,-516 }, { 57,-516 }, { 58,-516 }, - { 59,-516 }, { 60,-516 }, { 61,-516 }, { 62,-516 }, { 63,-516 }, - { 64,-516 }, { 65,-516 }, { 66,-516 }, { 67,-516 }, { 68,-516 }, - { 69,-516 }, { 70,-516 }, { 71,-516 }, { 72,-516 }, { 73,-516 }, - { 74,-516 }, { 75,-516 }, { 76,-516 }, { 77,-516 }, { 78,-516 }, - { 79,-516 }, { 80,-516 }, { 81,-516 }, { 82,-516 }, { 83,-516 }, - - { 84,-516 }, { 85,-516 }, { 86,-516 }, { 87,-516 }, { 88,-516 }, - { 89,-516 }, { 90,-516 }, { 91,-516 }, { 92,-516 }, { 93,-516 }, - { 94,-516 }, { 95,-516 }, { 96,-516 }, { 97,-516 }, { 98,-516 }, - { 99,-516 }, { 100,-516 }, { 101,-516 }, { 102,-516 }, { 103,-516 }, - { 104,-516 }, { 105,-516 }, { 106,-516 }, { 107,-516 }, { 108,-516 }, - { 109,-516 }, { 110,-516 }, { 111,-516 }, { 112,-516 }, { 113,-516 }, - { 114,-516 }, { 115,-516 }, { 116,-516 }, { 117,-516 }, { 118,-516 }, - { 119,-516 }, { 120,-516 }, { 121,-516 }, { 122,-516 }, { 123,-516 }, - { 124,-516 }, { 125,-516 }, { 126,-516 }, { 127,-516 }, { 128,-516 }, - { 129,-516 }, { 130,-516 }, { 131,-516 }, { 132,-516 }, { 133,-516 }, - - { 134,-516 }, { 135,-516 }, { 136,-516 }, { 137,-516 }, { 138,-516 }, - { 139,-516 }, { 140,-516 }, { 141,-516 }, { 142,-516 }, { 143,-516 }, - { 144,-516 }, { 145,-516 }, { 146,-516 }, { 147,-516 }, { 148,-516 }, - { 149,-516 }, { 150,-516 }, { 151,-516 }, { 152,-516 }, { 153,-516 }, - { 154,-516 }, { 155,-516 }, { 156,-516 }, { 157,-516 }, { 158,-516 }, - { 159,-516 }, { 160,-516 }, { 161,-516 }, { 162,-516 }, { 163,-516 }, - { 164,-516 }, { 165,-516 }, { 166,-516 }, { 167,-516 }, { 168,-516 }, - { 169,-516 }, { 170,-516 }, { 171,-516 }, { 172,-516 }, { 173,-516 }, - { 174,-516 }, { 175,-516 }, { 176,-516 }, { 177,-516 }, { 178,-516 }, - { 179,-516 }, { 180,-516 }, { 181,-516 }, { 182,-516 }, { 183,-516 }, - - { 184,-516 }, { 185,-516 }, { 186,-516 }, { 187,-516 }, { 188,-516 }, - { 189,-516 }, { 190,-516 }, { 191,-516 }, { 192,-516 }, { 193,-516 }, - { 194,-516 }, { 195,-516 }, { 196,-516 }, { 197,-516 }, { 198,-516 }, - { 199,-516 }, { 200,-516 }, { 201,-516 }, { 202,-516 }, { 203,-516 }, - { 204,-516 }, { 205,-516 }, { 206,-516 }, { 207,-516 }, { 208,-516 }, - { 209,-516 }, { 210,-516 }, { 211,-516 }, { 212,-516 }, { 213,-516 }, - { 214,-516 }, { 215,-516 }, { 216,-516 }, { 217,-516 }, { 218,-516 }, - { 219,-516 }, { 220,-516 }, { 221,-516 }, { 222,-516 }, { 223,-516 }, - { 224,-516 }, { 225,-516 }, { 226,-516 }, { 227,-516 }, { 228,-516 }, - { 229,-516 }, { 230,-516 }, { 231,-516 }, { 232,-516 }, { 233,-516 }, - - { 234,-516 }, { 235,-516 }, { 236,-516 }, { 237,-516 }, { 238,-516 }, - { 239,-516 }, { 240,-516 }, { 241,-516 }, { 242,-516 }, { 243,-516 }, - { 244,-516 }, { 245,-516 }, { 246,-516 }, { 247,-516 }, { 248,-516 }, - { 249,-516 }, { 250,-516 }, { 251,-516 }, { 252,-516 }, { 253,-516 }, - { 254,-516 }, { 255,-516 }, { 256,-516 }, { 0, 37 }, { 0,12676 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 0, 37 }, { 0,12653 }, { 0, 0 }, { 0, 0 }, - - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 48,4570 }, { 49,4570 }, { 50,4570 }, - { 51,4570 }, { 52,4570 }, { 53,4570 }, { 54,4570 }, { 55,4570 }, - { 56,4570 }, { 57,4570 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 65,4570 }, - { 66,4570 }, { 67,4570 }, { 68,4570 }, { 69,4570 }, { 70,4570 }, - { 48,4570 }, { 49,4570 }, { 50,4570 }, { 51,4570 }, { 52,4570 }, - - { 53,4570 }, { 54,4570 }, { 55,4570 }, { 56,4570 }, { 57,4570 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 65,4570 }, { 66,4570 }, { 67,4570 }, - { 68,4570 }, { 69,4570 }, { 70,4570 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 97,4570 }, { 98,4570 }, { 99,4570 }, { 100,4570 }, - { 101,4570 }, { 102,4570 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 97,4570 }, - { 98,4570 }, { 99,4570 }, { 100,4570 }, { 101,4570 }, { 102,4570 }, - - { 0, 9 }, { 0,12549 }, { 1, 0 }, { 2, 0 }, { 3, 0 }, - { 4, 0 }, { 5, 0 }, { 6, 0 }, { 7, 0 }, { 8, 0 }, - { 9, 258 }, { 10, 516 }, { 11, 0 }, { 12, 258 }, { 13, 516 }, - { 14, 0 }, { 15, 0 }, { 16, 0 }, { 17, 0 }, { 18, 0 }, - { 19, 0 }, { 20, 0 }, { 21, 0 }, { 22, 0 }, { 23, 0 }, - { 24, 0 }, { 25, 0 }, { 26, 0 }, { 27, 0 }, { 28, 0 }, - { 29, 0 }, { 30, 0 }, { 31, 0 }, { 32, 258 }, { 33, 0 }, - { 34, 0 }, { 35, 0 }, { 36, 0 }, { 37, 0 }, { 38, 0 }, - { 39, 0 }, { 40, 0 }, { 41, 0 }, { 42, 0 }, { 43, 0 }, - { 44, 0 }, { 45, 563 }, { 46, 0 }, { 47, 0 }, { 48, 0 }, - - { 49, 0 }, { 50, 0 }, { 51, 0 }, { 52, 0 }, { 53, 0 }, - { 54, 0 }, { 55, 0 }, { 56, 0 }, { 57, 0 }, { 58, 0 }, - { 59, 0 }, { 60, 0 }, { 61, 0 }, { 62, 0 }, { 63, 0 }, - { 64, 0 }, { 65, 0 }, { 66, 0 }, { 67, 0 }, { 68, 0 }, - { 69, 0 }, { 70, 0 }, { 71, 0 }, { 72, 0 }, { 73, 0 }, - { 74, 0 }, { 75, 0 }, { 76, 0 }, { 77, 0 }, { 78, 0 }, - { 79, 0 }, { 80, 0 }, { 81, 0 }, { 82, 0 }, { 83, 0 }, - { 84, 0 }, { 85, 0 }, { 86, 0 }, { 87, 0 }, { 88, 0 }, - { 89, 0 }, { 90, 0 }, { 91, 0 }, { 92, 0 }, { 93, 0 }, - { 94, 0 }, { 95, 0 }, { 96, 0 }, { 97, 0 }, { 98, 0 }, - - { 99, 0 }, { 100, 0 }, { 101, 0 }, { 102, 0 }, { 103, 0 }, - { 104, 0 }, { 105, 0 }, { 106, 0 }, { 107, 0 }, { 108, 0 }, - { 109, 0 }, { 110, 0 }, { 111, 0 }, { 112, 0 }, { 113, 0 }, - { 114, 0 }, { 115, 0 }, { 116, 0 }, { 117, 0 }, { 118, 0 }, - { 119, 0 }, { 120, 0 }, { 121, 0 }, { 122, 0 }, { 123, 0 }, - { 124, 0 }, { 125, 0 }, { 126, 0 }, { 127, 0 }, { 128, 0 }, - { 129, 0 }, { 130, 0 }, { 131, 0 }, { 132, 0 }, { 133, 0 }, - { 134, 0 }, { 135, 0 }, { 136, 0 }, { 137, 0 }, { 138, 0 }, - { 139, 0 }, { 140, 0 }, { 141, 0 }, { 142, 0 }, { 143, 0 }, - { 144, 0 }, { 145, 0 }, { 146, 0 }, { 147, 0 }, { 148, 0 }, - - { 149, 0 }, { 150, 0 }, { 151, 0 }, { 152, 0 }, { 153, 0 }, - { 154, 0 }, { 155, 0 }, { 156, 0 }, { 157, 0 }, { 158, 0 }, - { 159, 0 }, { 160, 0 }, { 161, 0 }, { 162, 0 }, { 163, 0 }, - { 164, 0 }, { 165, 0 }, { 166, 0 }, { 167, 0 }, { 168, 0 }, - { 169, 0 }, { 170, 0 }, { 171, 0 }, { 172, 0 }, { 173, 0 }, - { 174, 0 }, { 175, 0 }, { 176, 0 }, { 177, 0 }, { 178, 0 }, - { 179, 0 }, { 180, 0 }, { 181, 0 }, { 182, 0 }, { 183, 0 }, - { 184, 0 }, { 185, 0 }, { 186, 0 }, { 187, 0 }, { 188, 0 }, - { 189, 0 }, { 190, 0 }, { 191, 0 }, { 192, 0 }, { 193, 0 }, - { 194, 0 }, { 195, 0 }, { 196, 0 }, { 197, 0 }, { 198, 0 }, - - { 199, 0 }, { 200, 0 }, { 201, 0 }, { 202, 0 }, { 203, 0 }, - { 204, 0 }, { 205, 0 }, { 206, 0 }, { 207, 0 }, { 208, 0 }, - { 209, 0 }, { 210, 0 }, { 211, 0 }, { 212, 0 }, { 213, 0 }, - { 214, 0 }, { 215, 0 }, { 216, 0 }, { 217, 0 }, { 218, 0 }, - { 219, 0 }, { 220, 0 }, { 221, 0 }, { 222, 0 }, { 223, 0 }, - { 224, 0 }, { 225, 0 }, { 226, 0 }, { 227, 0 }, { 228, 0 }, - { 229, 0 }, { 230, 0 }, { 231, 0 }, { 232, 0 }, { 233, 0 }, - { 234, 0 }, { 235, 0 }, { 236, 0 }, { 237, 0 }, { 238, 0 }, - { 239, 0 }, { 240, 0 }, { 241, 0 }, { 242, 0 }, { 243, 0 }, - { 244, 0 }, { 245, 0 }, { 246, 0 }, { 247, 0 }, { 248, 0 }, - - { 249, 0 }, { 250, 0 }, { 251, 0 }, { 252, 0 }, { 253, 0 }, - { 254, 0 }, { 255, 0 }, { 256, 0 }, { 0, 9 }, { 0,12291 }, - { 1,-258 }, { 2,-258 }, { 3,-258 }, { 4,-258 }, { 5,-258 }, - { 6,-258 }, { 7,-258 }, { 8,-258 }, { 9, 0 }, { 10, 258 }, - { 11,-258 }, { 12, 0 }, { 13, 258 }, { 14,-258 }, { 15,-258 }, - { 16,-258 }, { 17,-258 }, { 18,-258 }, { 19,-258 }, { 20,-258 }, - { 21,-258 }, { 22,-258 }, { 23,-258 }, { 24,-258 }, { 25,-258 }, - { 26,-258 }, { 27,-258 }, { 28,-258 }, { 29,-258 }, { 30,-258 }, - { 31,-258 }, { 32, 0 }, { 33,-258 }, { 34,-258 }, { 35,-258 }, - { 36,-258 }, { 37,-258 }, { 38,-258 }, { 39,-258 }, { 40,-258 }, - - { 41,-258 }, { 42,-258 }, { 43,-258 }, { 44,-258 }, { 45, 305 }, - { 46,-258 }, { 47,-258 }, { 48,-258 }, { 49,-258 }, { 50,-258 }, - { 51,-258 }, { 52,-258 }, { 53,-258 }, { 54,-258 }, { 55,-258 }, - { 56,-258 }, { 57,-258 }, { 58,-258 }, { 59,-258 }, { 60,-258 }, - { 61,-258 }, { 62,-258 }, { 63,-258 }, { 64,-258 }, { 65,-258 }, - { 66,-258 }, { 67,-258 }, { 68,-258 }, { 69,-258 }, { 70,-258 }, - { 71,-258 }, { 72,-258 }, { 73,-258 }, { 74,-258 }, { 75,-258 }, - { 76,-258 }, { 77,-258 }, { 78,-258 }, { 79,-258 }, { 80,-258 }, - { 81,-258 }, { 82,-258 }, { 83,-258 }, { 84,-258 }, { 85,-258 }, - { 86,-258 }, { 87,-258 }, { 88,-258 }, { 89,-258 }, { 90,-258 }, - - { 91,-258 }, { 92,-258 }, { 93,-258 }, { 94,-258 }, { 95,-258 }, - { 96,-258 }, { 97,-258 }, { 98,-258 }, { 99,-258 }, { 100,-258 }, - { 101,-258 }, { 102,-258 }, { 103,-258 }, { 104,-258 }, { 105,-258 }, - { 106,-258 }, { 107,-258 }, { 108,-258 }, { 109,-258 }, { 110,-258 }, - { 111,-258 }, { 112,-258 }, { 113,-258 }, { 114,-258 }, { 115,-258 }, - { 116,-258 }, { 117,-258 }, { 118,-258 }, { 119,-258 }, { 120,-258 }, - { 121,-258 }, { 122,-258 }, { 123,-258 }, { 124,-258 }, { 125,-258 }, - { 126,-258 }, { 127,-258 }, { 128,-258 }, { 129,-258 }, { 130,-258 }, - { 131,-258 }, { 132,-258 }, { 133,-258 }, { 134,-258 }, { 135,-258 }, - { 136,-258 }, { 137,-258 }, { 138,-258 }, { 139,-258 }, { 140,-258 }, - - { 141,-258 }, { 142,-258 }, { 143,-258 }, { 144,-258 }, { 145,-258 }, - { 146,-258 }, { 147,-258 }, { 148,-258 }, { 149,-258 }, { 150,-258 }, - { 151,-258 }, { 152,-258 }, { 153,-258 }, { 154,-258 }, { 155,-258 }, - { 156,-258 }, { 157,-258 }, { 158,-258 }, { 159,-258 }, { 160,-258 }, - { 161,-258 }, { 162,-258 }, { 163,-258 }, { 164,-258 }, { 165,-258 }, - { 166,-258 }, { 167,-258 }, { 168,-258 }, { 169,-258 }, { 170,-258 }, - { 171,-258 }, { 172,-258 }, { 173,-258 }, { 174,-258 }, { 175,-258 }, - { 176,-258 }, { 177,-258 }, { 178,-258 }, { 179,-258 }, { 180,-258 }, - { 181,-258 }, { 182,-258 }, { 183,-258 }, { 184,-258 }, { 185,-258 }, - { 186,-258 }, { 187,-258 }, { 188,-258 }, { 189,-258 }, { 190,-258 }, - - { 191,-258 }, { 192,-258 }, { 193,-258 }, { 194,-258 }, { 195,-258 }, - { 196,-258 }, { 197,-258 }, { 198,-258 }, { 199,-258 }, { 200,-258 }, - { 201,-258 }, { 202,-258 }, { 203,-258 }, { 204,-258 }, { 205,-258 }, - { 206,-258 }, { 207,-258 }, { 208,-258 }, { 209,-258 }, { 210,-258 }, - { 211,-258 }, { 212,-258 }, { 213,-258 }, { 214,-258 }, { 215,-258 }, - { 216,-258 }, { 217,-258 }, { 218,-258 }, { 219,-258 }, { 220,-258 }, - { 221,-258 }, { 222,-258 }, { 223,-258 }, { 224,-258 }, { 225,-258 }, - { 226,-258 }, { 227,-258 }, { 228,-258 }, { 229,-258 }, { 230,-258 }, - { 231,-258 }, { 232,-258 }, { 233,-258 }, { 234,-258 }, { 235,-258 }, - { 236,-258 }, { 237,-258 }, { 238,-258 }, { 239,-258 }, { 240,-258 }, - - { 241,-258 }, { 242,-258 }, { 243,-258 }, { 244,-258 }, { 245,-258 }, - { 246,-258 }, { 247,-258 }, { 248,-258 }, { 249,-258 }, { 250,-258 }, - { 251,-258 }, { 252,-258 }, { 253,-258 }, { 254,-258 }, { 255,-258 }, - { 256,-258 }, { 0, 9 }, { 0,12033 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 9,-7240 }, { 10,-7240 }, { 0, 0 }, { 12,-7240 }, - { 13,-7240 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 32,-7240 }, - - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 39,-17444 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 45,-17442 }, { 0, 9 }, { 0,11986 }, - { 1,-563 }, { 2,-563 }, { 3,-563 }, { 4,-563 }, { 5,-563 }, - { 6,-563 }, { 7,-563 }, { 8,-563 }, { 9,-305 }, { 10, -47 }, - { 11,-563 }, { 12,-305 }, { 13, -47 }, { 14,-563 }, { 15,-563 }, - { 16,-563 }, { 17,-563 }, { 18,-563 }, { 19,-563 }, { 20,-563 }, - { 21,-563 }, { 22,-563 }, { 23,-563 }, { 24,-563 }, { 25,-563 }, - { 26,-563 }, { 27,-563 }, { 28,-563 }, { 29,-563 }, { 30,-563 }, - { 31,-563 }, { 32,-305 }, { 33,-563 }, { 34,-563 }, { 35,-563 }, - - { 36,-563 }, { 37,-563 }, { 38,-563 }, { 39,-563 }, { 40,-563 }, - { 41,-563 }, { 42,-563 }, { 43,-563 }, { 44,-563 }, { 45,4007 }, - { 46,-563 }, { 47,-563 }, { 48,-563 }, { 49,-563 }, { 50,-563 }, - { 51,-563 }, { 52,-563 }, { 53,-563 }, { 54,-563 }, { 55,-563 }, - { 56,-563 }, { 57,-563 }, { 58,-563 }, { 59,-563 }, { 60,-563 }, - { 61,-563 }, { 62,-563 }, { 63,-563 }, { 64,-563 }, { 65,-563 }, - { 66,-563 }, { 67,-563 }, { 68,-563 }, { 69,-563 }, { 70,-563 }, - { 71,-563 }, { 72,-563 }, { 73,-563 }, { 74,-563 }, { 75,-563 }, - { 76,-563 }, { 77,-563 }, { 78,-563 }, { 79,-563 }, { 80,-563 }, - { 81,-563 }, { 82,-563 }, { 83,-563 }, { 84,-563 }, { 85,-563 }, - - { 86,-563 }, { 87,-563 }, { 88,-563 }, { 89,-563 }, { 90,-563 }, - { 91,-563 }, { 92,-563 }, { 93,-563 }, { 94,-563 }, { 95,-563 }, - { 96,-563 }, { 97,-563 }, { 98,-563 }, { 99,-563 }, { 100,-563 }, - { 101,-563 }, { 102,-563 }, { 103,-563 }, { 104,-563 }, { 105,-563 }, - { 106,-563 }, { 107,-563 }, { 108,-563 }, { 109,-563 }, { 110,-563 }, - { 111,-563 }, { 112,-563 }, { 113,-563 }, { 114,-563 }, { 115,-563 }, - { 116,-563 }, { 117,-563 }, { 118,-563 }, { 119,-563 }, { 120,-563 }, - { 121,-563 }, { 122,-563 }, { 123,-563 }, { 124,-563 }, { 125,-563 }, - { 126,-563 }, { 127,-563 }, { 128,-563 }, { 129,-563 }, { 130,-563 }, - { 131,-563 }, { 132,-563 }, { 133,-563 }, { 134,-563 }, { 135,-563 }, - - { 136,-563 }, { 137,-563 }, { 138,-563 }, { 139,-563 }, { 140,-563 }, - { 141,-563 }, { 142,-563 }, { 143,-563 }, { 144,-563 }, { 145,-563 }, - { 146,-563 }, { 147,-563 }, { 148,-563 }, { 149,-563 }, { 150,-563 }, - { 151,-563 }, { 152,-563 }, { 153,-563 }, { 154,-563 }, { 155,-563 }, - { 156,-563 }, { 157,-563 }, { 158,-563 }, { 159,-563 }, { 160,-563 }, - { 161,-563 }, { 162,-563 }, { 163,-563 }, { 164,-563 }, { 165,-563 }, - { 166,-563 }, { 167,-563 }, { 168,-563 }, { 169,-563 }, { 170,-563 }, - { 171,-563 }, { 172,-563 }, { 173,-563 }, { 174,-563 }, { 175,-563 }, - { 176,-563 }, { 177,-563 }, { 178,-563 }, { 179,-563 }, { 180,-563 }, - { 181,-563 }, { 182,-563 }, { 183,-563 }, { 184,-563 }, { 185,-563 }, - - { 186,-563 }, { 187,-563 }, { 188,-563 }, { 189,-563 }, { 190,-563 }, - { 191,-563 }, { 192,-563 }, { 193,-563 }, { 194,-563 }, { 195,-563 }, - { 196,-563 }, { 197,-563 }, { 198,-563 }, { 199,-563 }, { 200,-563 }, - { 201,-563 }, { 202,-563 }, { 203,-563 }, { 204,-563 }, { 205,-563 }, - { 206,-563 }, { 207,-563 }, { 208,-563 }, { 209,-563 }, { 210,-563 }, - { 211,-563 }, { 212,-563 }, { 213,-563 }, { 214,-563 }, { 215,-563 }, - { 216,-563 }, { 217,-563 }, { 218,-563 }, { 219,-563 }, { 220,-563 }, - { 221,-563 }, { 222,-563 }, { 223,-563 }, { 224,-563 }, { 225,-563 }, - { 226,-563 }, { 227,-563 }, { 228,-563 }, { 229,-563 }, { 230,-563 }, - { 231,-563 }, { 232,-563 }, { 233,-563 }, { 234,-563 }, { 235,-563 }, - - { 236,-563 }, { 237,-563 }, { 238,-563 }, { 239,-563 }, { 240,-563 }, - { 241,-563 }, { 242,-563 }, { 243,-563 }, { 244,-563 }, { 245,-563 }, - { 246,-563 }, { 247,-563 }, { 248,-563 }, { 249,-563 }, { 250,-563 }, - { 251,-563 }, { 252,-563 }, { 253,-563 }, { 254,-563 }, { 255,-563 }, - { 256,-563 }, { 0, 9 }, { 0,11728 }, { 1,-4945 }, { 2,-4945 }, - { 3,-4945 }, { 4,-4945 }, { 5,-4945 }, { 6,-4945 }, { 7,-4945 }, - { 8,-4945 }, { 9,-4687 }, { 10,-11286 }, { 11,-4945 }, { 12,-4687 }, - { 13,-11286 }, { 14,-4945 }, { 15,-4945 }, { 16,-4945 }, { 17,-4945 }, - { 18,-4945 }, { 19,-4945 }, { 20,-4945 }, { 21,-4945 }, { 22,-4945 }, - { 23,-4945 }, { 24,-4945 }, { 25,-4945 }, { 26,-4945 }, { 27,-4945 }, - - { 28,-4945 }, { 29,-4945 }, { 30,-4945 }, { 31,-4945 }, { 32,-4687 }, - { 33,-4945 }, { 34,-4945 }, { 35,-4945 }, { 36,-4945 }, { 37,-4945 }, - { 38,-4945 }, { 39,-4945 }, { 40,-4945 }, { 41,-4945 }, { 42,-4945 }, - { 43,-4945 }, { 44,-4945 }, { 45, 0 }, { 46,-4945 }, { 47,-4945 }, - { 48,-4945 }, { 49,-4945 }, { 50,-4945 }, { 51,-4945 }, { 52,-4945 }, - { 53,-4945 }, { 54,-4945 }, { 55,-4945 }, { 56,-4945 }, { 57,-4945 }, - { 58,-4945 }, { 59,-4945 }, { 60,-4945 }, { 61,-4945 }, { 62,-4945 }, - { 63,-4945 }, { 64,-4945 }, { 65,-4945 }, { 66,-4945 }, { 67,-4945 }, - { 68,-4945 }, { 69,-4945 }, { 70,-4945 }, { 71,-4945 }, { 72,-4945 }, - { 73,-4945 }, { 74,-4945 }, { 75,-4945 }, { 76,-4945 }, { 77,-4945 }, - - { 78,-4945 }, { 79,-4945 }, { 80,-4945 }, { 81,-4945 }, { 82,-4945 }, - { 83,-4945 }, { 84,-4945 }, { 85,-4945 }, { 86,-4945 }, { 87,-4945 }, - { 88,-4945 }, { 89,-4945 }, { 90,-4945 }, { 91,-4945 }, { 92,-4945 }, - { 93,-4945 }, { 94,-4945 }, { 95,-4945 }, { 96,-4945 }, { 97,-4945 }, - { 98,-4945 }, { 99,-4945 }, { 100,-4945 }, { 101,-4945 }, { 102,-4945 }, - { 103,-4945 }, { 104,-4945 }, { 105,-4945 }, { 106,-4945 }, { 107,-4945 }, - { 108,-4945 }, { 109,-4945 }, { 110,-4945 }, { 111,-4945 }, { 112,-4945 }, - { 113,-4945 }, { 114,-4945 }, { 115,-4945 }, { 116,-4945 }, { 117,-4945 }, - { 118,-4945 }, { 119,-4945 }, { 120,-4945 }, { 121,-4945 }, { 122,-4945 }, - { 123,-4945 }, { 124,-4945 }, { 125,-4945 }, { 126,-4945 }, { 127,-4945 }, - - { 128,-4945 }, { 129,-4945 }, { 130,-4945 }, { 131,-4945 }, { 132,-4945 }, - { 133,-4945 }, { 134,-4945 }, { 135,-4945 }, { 136,-4945 }, { 137,-4945 }, - { 138,-4945 }, { 139,-4945 }, { 140,-4945 }, { 141,-4945 }, { 142,-4945 }, - { 143,-4945 }, { 144,-4945 }, { 145,-4945 }, { 146,-4945 }, { 147,-4945 }, - { 148,-4945 }, { 149,-4945 }, { 150,-4945 }, { 151,-4945 }, { 152,-4945 }, - { 153,-4945 }, { 154,-4945 }, { 155,-4945 }, { 156,-4945 }, { 157,-4945 }, - { 158,-4945 }, { 159,-4945 }, { 160,-4945 }, { 161,-4945 }, { 162,-4945 }, - { 163,-4945 }, { 164,-4945 }, { 165,-4945 }, { 166,-4945 }, { 167,-4945 }, - { 168,-4945 }, { 169,-4945 }, { 170,-4945 }, { 171,-4945 }, { 172,-4945 }, - { 173,-4945 }, { 174,-4945 }, { 175,-4945 }, { 176,-4945 }, { 177,-4945 }, - - { 178,-4945 }, { 179,-4945 }, { 180,-4945 }, { 181,-4945 }, { 182,-4945 }, - { 183,-4945 }, { 184,-4945 }, { 185,-4945 }, { 186,-4945 }, { 187,-4945 }, - { 188,-4945 }, { 189,-4945 }, { 190,-4945 }, { 191,-4945 }, { 192,-4945 }, - { 193,-4945 }, { 194,-4945 }, { 195,-4945 }, { 196,-4945 }, { 197,-4945 }, - { 198,-4945 }, { 199,-4945 }, { 200,-4945 }, { 201,-4945 }, { 202,-4945 }, - { 203,-4945 }, { 204,-4945 }, { 205,-4945 }, { 206,-4945 }, { 207,-4945 }, - { 208,-4945 }, { 209,-4945 }, { 210,-4945 }, { 211,-4945 }, { 212,-4945 }, - { 213,-4945 }, { 214,-4945 }, { 215,-4945 }, { 216,-4945 }, { 217,-4945 }, - { 218,-4945 }, { 219,-4945 }, { 220,-4945 }, { 221,-4945 }, { 222,-4945 }, - { 223,-4945 }, { 224,-4945 }, { 225,-4945 }, { 226,-4945 }, { 227,-4945 }, - - { 228,-4945 }, { 229,-4945 }, { 230,-4945 }, { 231,-4945 }, { 232,-4945 }, - { 233,-4945 }, { 234,-4945 }, { 235,-4945 }, { 236,-4945 }, { 237,-4945 }, - { 238,-4945 }, { 239,-4945 }, { 240,-4945 }, { 241,-4945 }, { 242,-4945 }, - { 243,-4945 }, { 244,-4945 }, { 245,-4945 }, { 246,-4945 }, { 247,-4945 }, - { 248,-4945 }, { 249,-4945 }, { 250,-4945 }, { 251,-4945 }, { 252,-4945 }, - { 253,-4945 }, { 254,-4945 }, { 255,-4945 }, { 256,-4945 }, { 0, 16 }, - { 0,11470 }, { 1, 0 }, { 2, 0 }, { 3, 0 }, { 4, 0 }, - { 5, 0 }, { 6, 0 }, { 7, 0 }, { 8, 0 }, { 9, 258 }, - { 10, 516 }, { 11, 0 }, { 12, 258 }, { 13, 516 }, { 14, 0 }, - { 15, 0 }, { 16, 0 }, { 17, 0 }, { 18, 0 }, { 19, 0 }, - - { 20, 0 }, { 21, 0 }, { 22, 0 }, { 23, 0 }, { 24, 0 }, - { 25, 0 }, { 26, 0 }, { 27, 0 }, { 28, 0 }, { 29, 0 }, - { 30, 0 }, { 31, 0 }, { 32, 258 }, { 33, 0 }, { 34, 0 }, - { 35, 0 }, { 36, 0 }, { 37, 0 }, { 38, 0 }, { 39, 0 }, - { 40, 0 }, { 41, 0 }, { 42, 0 }, { 43, 0 }, { 44, 0 }, - { 45, 563 }, { 46, 0 }, { 47, 0 }, { 48, 0 }, { 49, 0 }, - { 50, 0 }, { 51, 0 }, { 52, 0 }, { 53, 0 }, { 54, 0 }, - { 55, 0 }, { 56, 0 }, { 57, 0 }, { 58, 0 }, { 59, 0 }, - { 60, 0 }, { 61, 0 }, { 62, 0 }, { 63, 0 }, { 64, 0 }, - { 65, 0 }, { 66, 0 }, { 67, 0 }, { 68, 0 }, { 69, 0 }, - - { 70, 0 }, { 71, 0 }, { 72, 0 }, { 73, 0 }, { 74, 0 }, - { 75, 0 }, { 76, 0 }, { 77, 0 }, { 78, 0 }, { 79, 0 }, - { 80, 0 }, { 81, 0 }, { 82, 0 }, { 83, 0 }, { 84, 0 }, - { 85, 0 }, { 86, 0 }, { 87, 0 }, { 88, 0 }, { 89, 0 }, - { 90, 0 }, { 91, 0 }, { 92, 0 }, { 93, 0 }, { 94, 0 }, - { 95, 0 }, { 96, 0 }, { 97, 0 }, { 98, 0 }, { 99, 0 }, - { 100, 0 }, { 101, 0 }, { 102, 0 }, { 103, 0 }, { 104, 0 }, - { 105, 0 }, { 106, 0 }, { 107, 0 }, { 108, 0 }, { 109, 0 }, - { 110, 0 }, { 111, 0 }, { 112, 0 }, { 113, 0 }, { 114, 0 }, - { 115, 0 }, { 116, 0 }, { 117, 0 }, { 118, 0 }, { 119, 0 }, - - { 120, 0 }, { 121, 0 }, { 122, 0 }, { 123, 0 }, { 124, 0 }, - { 125, 0 }, { 126, 0 }, { 127, 0 }, { 128, 0 }, { 129, 0 }, - { 130, 0 }, { 131, 0 }, { 132, 0 }, { 133, 0 }, { 134, 0 }, - { 135, 0 }, { 136, 0 }, { 137, 0 }, { 138, 0 }, { 139, 0 }, - { 140, 0 }, { 141, 0 }, { 142, 0 }, { 143, 0 }, { 144, 0 }, - { 145, 0 }, { 146, 0 }, { 147, 0 }, { 148, 0 }, { 149, 0 }, - { 150, 0 }, { 151, 0 }, { 152, 0 }, { 153, 0 }, { 154, 0 }, - { 155, 0 }, { 156, 0 }, { 157, 0 }, { 158, 0 }, { 159, 0 }, - { 160, 0 }, { 161, 0 }, { 162, 0 }, { 163, 0 }, { 164, 0 }, - { 165, 0 }, { 166, 0 }, { 167, 0 }, { 168, 0 }, { 169, 0 }, - - { 170, 0 }, { 171, 0 }, { 172, 0 }, { 173, 0 }, { 174, 0 }, - { 175, 0 }, { 176, 0 }, { 177, 0 }, { 178, 0 }, { 179, 0 }, - { 180, 0 }, { 181, 0 }, { 182, 0 }, { 183, 0 }, { 184, 0 }, - { 185, 0 }, { 186, 0 }, { 187, 0 }, { 188, 0 }, { 189, 0 }, - { 190, 0 }, { 191, 0 }, { 192, 0 }, { 193, 0 }, { 194, 0 }, - { 195, 0 }, { 196, 0 }, { 197, 0 }, { 198, 0 }, { 199, 0 }, - { 200, 0 }, { 201, 0 }, { 202, 0 }, { 203, 0 }, { 204, 0 }, - { 205, 0 }, { 206, 0 }, { 207, 0 }, { 208, 0 }, { 209, 0 }, - { 210, 0 }, { 211, 0 }, { 212, 0 }, { 213, 0 }, { 214, 0 }, - { 215, 0 }, { 216, 0 }, { 217, 0 }, { 218, 0 }, { 219, 0 }, - - { 220, 0 }, { 221, 0 }, { 222, 0 }, { 223, 0 }, { 224, 0 }, - { 225, 0 }, { 226, 0 }, { 227, 0 }, { 228, 0 }, { 229, 0 }, - { 230, 0 }, { 231, 0 }, { 232, 0 }, { 233, 0 }, { 234, 0 }, - { 235, 0 }, { 236, 0 }, { 237, 0 }, { 238, 0 }, { 239, 0 }, - { 240, 0 }, { 241, 0 }, { 242, 0 }, { 243, 0 }, { 244, 0 }, - { 245, 0 }, { 246, 0 }, { 247, 0 }, { 248, 0 }, { 249, 0 }, - { 250, 0 }, { 251, 0 }, { 252, 0 }, { 253, 0 }, { 254, 0 }, - { 255, 0 }, { 256, 0 }, { 0, 16 }, { 0,11212 }, { 1,-258 }, - { 2,-258 }, { 3,-258 }, { 4,-258 }, { 5,-258 }, { 6,-258 }, - { 7,-258 }, { 8,-258 }, { 9, 0 }, { 10, 258 }, { 11,-258 }, - - { 12, 0 }, { 13, 258 }, { 14,-258 }, { 15,-258 }, { 16,-258 }, - { 17,-258 }, { 18,-258 }, { 19,-258 }, { 20,-258 }, { 21,-258 }, - { 22,-258 }, { 23,-258 }, { 24,-258 }, { 25,-258 }, { 26,-258 }, - { 27,-258 }, { 28,-258 }, { 29,-258 }, { 30,-258 }, { 31,-258 }, - { 32, 0 }, { 33,-258 }, { 34,-258 }, { 35,-258 }, { 36,-258 }, - { 37,-258 }, { 38,-258 }, { 39,-258 }, { 40,-258 }, { 41,-258 }, - { 42,-258 }, { 43,-258 }, { 44,-258 }, { 45, 305 }, { 46,-258 }, - { 47,-258 }, { 48,-258 }, { 49,-258 }, { 50,-258 }, { 51,-258 }, - { 52,-258 }, { 53,-258 }, { 54,-258 }, { 55,-258 }, { 56,-258 }, - { 57,-258 }, { 58,-258 }, { 59,-258 }, { 60,-258 }, { 61,-258 }, - - { 62,-258 }, { 63,-258 }, { 64,-258 }, { 65,-258 }, { 66,-258 }, - { 67,-258 }, { 68,-258 }, { 69,-258 }, { 70,-258 }, { 71,-258 }, - { 72,-258 }, { 73,-258 }, { 74,-258 }, { 75,-258 }, { 76,-258 }, - { 77,-258 }, { 78,-258 }, { 79,-258 }, { 80,-258 }, { 81,-258 }, - { 82,-258 }, { 83,-258 }, { 84,-258 }, { 85,-258 }, { 86,-258 }, - { 87,-258 }, { 88,-258 }, { 89,-258 }, { 90,-258 }, { 91,-258 }, - { 92,-258 }, { 93,-258 }, { 94,-258 }, { 95,-258 }, { 96,-258 }, - { 97,-258 }, { 98,-258 }, { 99,-258 }, { 100,-258 }, { 101,-258 }, - { 102,-258 }, { 103,-258 }, { 104,-258 }, { 105,-258 }, { 106,-258 }, - { 107,-258 }, { 108,-258 }, { 109,-258 }, { 110,-258 }, { 111,-258 }, - - { 112,-258 }, { 113,-258 }, { 114,-258 }, { 115,-258 }, { 116,-258 }, - { 117,-258 }, { 118,-258 }, { 119,-258 }, { 120,-258 }, { 121,-258 }, - { 122,-258 }, { 123,-258 }, { 124,-258 }, { 125,-258 }, { 126,-258 }, - { 127,-258 }, { 128,-258 }, { 129,-258 }, { 130,-258 }, { 131,-258 }, - { 132,-258 }, { 133,-258 }, { 134,-258 }, { 135,-258 }, { 136,-258 }, - { 137,-258 }, { 138,-258 }, { 139,-258 }, { 140,-258 }, { 141,-258 }, - { 142,-258 }, { 143,-258 }, { 144,-258 }, { 145,-258 }, { 146,-258 }, - { 147,-258 }, { 148,-258 }, { 149,-258 }, { 150,-258 }, { 151,-258 }, - { 152,-258 }, { 153,-258 }, { 154,-258 }, { 155,-258 }, { 156,-258 }, - { 157,-258 }, { 158,-258 }, { 159,-258 }, { 160,-258 }, { 161,-258 }, - - { 162,-258 }, { 163,-258 }, { 164,-258 }, { 165,-258 }, { 166,-258 }, - { 167,-258 }, { 168,-258 }, { 169,-258 }, { 170,-258 }, { 171,-258 }, - { 172,-258 }, { 173,-258 }, { 174,-258 }, { 175,-258 }, { 176,-258 }, - { 177,-258 }, { 178,-258 }, { 179,-258 }, { 180,-258 }, { 181,-258 }, - { 182,-258 }, { 183,-258 }, { 184,-258 }, { 185,-258 }, { 186,-258 }, - { 187,-258 }, { 188,-258 }, { 189,-258 }, { 190,-258 }, { 191,-258 }, - { 192,-258 }, { 193,-258 }, { 194,-258 }, { 195,-258 }, { 196,-258 }, - { 197,-258 }, { 198,-258 }, { 199,-258 }, { 200,-258 }, { 201,-258 }, - { 202,-258 }, { 203,-258 }, { 204,-258 }, { 205,-258 }, { 206,-258 }, - { 207,-258 }, { 208,-258 }, { 209,-258 }, { 210,-258 }, { 211,-258 }, - - { 212,-258 }, { 213,-258 }, { 214,-258 }, { 215,-258 }, { 216,-258 }, - { 217,-258 }, { 218,-258 }, { 219,-258 }, { 220,-258 }, { 221,-258 }, - { 222,-258 }, { 223,-258 }, { 224,-258 }, { 225,-258 }, { 226,-258 }, - { 227,-258 }, { 228,-258 }, { 229,-258 }, { 230,-258 }, { 231,-258 }, - { 232,-258 }, { 233,-258 }, { 234,-258 }, { 235,-258 }, { 236,-258 }, - { 237,-258 }, { 238,-258 }, { 239,-258 }, { 240,-258 }, { 241,-258 }, - { 242,-258 }, { 243,-258 }, { 244,-258 }, { 245,-258 }, { 246,-258 }, - { 247,-258 }, { 248,-258 }, { 249,-258 }, { 250,-258 }, { 251,-258 }, - { 252,-258 }, { 253,-258 }, { 254,-258 }, { 255,-258 }, { 256,-258 }, - { 0, 16 }, { 0,10954 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 9,-8007 }, { 10,-8007 }, { 0, 0 }, { 12,-8007 }, { 13,-8007 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 32,-8007 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 39,-18519 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 45,-18514 }, { 0, 16 }, { 0,10907 }, { 1,-563 }, - { 2,-563 }, { 3,-563 }, { 4,-563 }, { 5,-563 }, { 6,-563 }, - - { 7,-563 }, { 8,-563 }, { 9,-305 }, { 10, -47 }, { 11,-563 }, - { 12,-305 }, { 13, -47 }, { 14,-563 }, { 15,-563 }, { 16,-563 }, - { 17,-563 }, { 18,-563 }, { 19,-563 }, { 20,-563 }, { 21,-563 }, - { 22,-563 }, { 23,-563 }, { 24,-563 }, { 25,-563 }, { 26,-563 }, - { 27,-563 }, { 28,-563 }, { 29,-563 }, { 30,-563 }, { 31,-563 }, - { 32,-305 }, { 33,-563 }, { 34,-563 }, { 35,-563 }, { 36,-563 }, - { 37,-563 }, { 38,-563 }, { 39,-563 }, { 40,-563 }, { 41,-563 }, - { 42,-563 }, { 43,-563 }, { 44,-563 }, { 45,3186 }, { 46,-563 }, - { 47,-563 }, { 48,-563 }, { 49,-563 }, { 50,-563 }, { 51,-563 }, - { 52,-563 }, { 53,-563 }, { 54,-563 }, { 55,-563 }, { 56,-563 }, - - { 57,-563 }, { 58,-563 }, { 59,-563 }, { 60,-563 }, { 61,-563 }, - { 62,-563 }, { 63,-563 }, { 64,-563 }, { 65,-563 }, { 66,-563 }, - { 67,-563 }, { 68,-563 }, { 69,-563 }, { 70,-563 }, { 71,-563 }, - { 72,-563 }, { 73,-563 }, { 74,-563 }, { 75,-563 }, { 76,-563 }, - { 77,-563 }, { 78,-563 }, { 79,-563 }, { 80,-563 }, { 81,-563 }, - { 82,-563 }, { 83,-563 }, { 84,-563 }, { 85,-563 }, { 86,-563 }, - { 87,-563 }, { 88,-563 }, { 89,-563 }, { 90,-563 }, { 91,-563 }, - { 92,-563 }, { 93,-563 }, { 94,-563 }, { 95,-563 }, { 96,-563 }, - { 97,-563 }, { 98,-563 }, { 99,-563 }, { 100,-563 }, { 101,-563 }, - { 102,-563 }, { 103,-563 }, { 104,-563 }, { 105,-563 }, { 106,-563 }, - - { 107,-563 }, { 108,-563 }, { 109,-563 }, { 110,-563 }, { 111,-563 }, - { 112,-563 }, { 113,-563 }, { 114,-563 }, { 115,-563 }, { 116,-563 }, - { 117,-563 }, { 118,-563 }, { 119,-563 }, { 120,-563 }, { 121,-563 }, - { 122,-563 }, { 123,-563 }, { 124,-563 }, { 125,-563 }, { 126,-563 }, - { 127,-563 }, { 128,-563 }, { 129,-563 }, { 130,-563 }, { 131,-563 }, - { 132,-563 }, { 133,-563 }, { 134,-563 }, { 135,-563 }, { 136,-563 }, - { 137,-563 }, { 138,-563 }, { 139,-563 }, { 140,-563 }, { 141,-563 }, - { 142,-563 }, { 143,-563 }, { 144,-563 }, { 145,-563 }, { 146,-563 }, - { 147,-563 }, { 148,-563 }, { 149,-563 }, { 150,-563 }, { 151,-563 }, - { 152,-563 }, { 153,-563 }, { 154,-563 }, { 155,-563 }, { 156,-563 }, - - { 157,-563 }, { 158,-563 }, { 159,-563 }, { 160,-563 }, { 161,-563 }, - { 162,-563 }, { 163,-563 }, { 164,-563 }, { 165,-563 }, { 166,-563 }, - { 167,-563 }, { 168,-563 }, { 169,-563 }, { 170,-563 }, { 171,-563 }, - { 172,-563 }, { 173,-563 }, { 174,-563 }, { 175,-563 }, { 176,-563 }, - { 177,-563 }, { 178,-563 }, { 179,-563 }, { 180,-563 }, { 181,-563 }, - { 182,-563 }, { 183,-563 }, { 184,-563 }, { 185,-563 }, { 186,-563 }, - { 187,-563 }, { 188,-563 }, { 189,-563 }, { 190,-563 }, { 191,-563 }, - { 192,-563 }, { 193,-563 }, { 194,-563 }, { 195,-563 }, { 196,-563 }, - { 197,-563 }, { 198,-563 }, { 199,-563 }, { 200,-563 }, { 201,-563 }, - { 202,-563 }, { 203,-563 }, { 204,-563 }, { 205,-563 }, { 206,-563 }, - - { 207,-563 }, { 208,-563 }, { 209,-563 }, { 210,-563 }, { 211,-563 }, - { 212,-563 }, { 213,-563 }, { 214,-563 }, { 215,-563 }, { 216,-563 }, - { 217,-563 }, { 218,-563 }, { 219,-563 }, { 220,-563 }, { 221,-563 }, - { 222,-563 }, { 223,-563 }, { 224,-563 }, { 225,-563 }, { 226,-563 }, - { 227,-563 }, { 228,-563 }, { 229,-563 }, { 230,-563 }, { 231,-563 }, - { 232,-563 }, { 233,-563 }, { 234,-563 }, { 235,-563 }, { 236,-563 }, - { 237,-563 }, { 238,-563 }, { 239,-563 }, { 240,-563 }, { 241,-563 }, - { 242,-563 }, { 243,-563 }, { 244,-563 }, { 245,-563 }, { 246,-563 }, - { 247,-563 }, { 248,-563 }, { 249,-563 }, { 250,-563 }, { 251,-563 }, - { 252,-563 }, { 253,-563 }, { 254,-563 }, { 255,-563 }, { 256,-563 }, - - { 0, 16 }, { 0,10649 }, { 1,-4992 }, { 2,-4992 }, { 3,-4992 }, - { 4,-4992 }, { 5,-4992 }, { 6,-4992 }, { 7,-4992 }, { 8,-4992 }, - { 9,-4734 }, { 10,-11411 }, { 11,-4992 }, { 12,-4734 }, { 13,-11411 }, - { 14,-4992 }, { 15,-4992 }, { 16,-4992 }, { 17,-4992 }, { 18,-4992 }, - { 19,-4992 }, { 20,-4992 }, { 21,-4992 }, { 22,-4992 }, { 23,-4992 }, - { 24,-4992 }, { 25,-4992 }, { 26,-4992 }, { 27,-4992 }, { 28,-4992 }, - { 29,-4992 }, { 30,-4992 }, { 31,-4992 }, { 32,-4734 }, { 33,-4992 }, - { 34,-4992 }, { 35,-4992 }, { 36,-4992 }, { 37,-4992 }, { 38,-4992 }, - { 39,-4992 }, { 40,-4992 }, { 41,-4992 }, { 42,-4992 }, { 43,-4992 }, - { 44,-4992 }, { 45, 0 }, { 46,-4992 }, { 47,-4992 }, { 48,-4992 }, - - { 49,-4992 }, { 50,-4992 }, { 51,-4992 }, { 52,-4992 }, { 53,-4992 }, - { 54,-4992 }, { 55,-4992 }, { 56,-4992 }, { 57,-4992 }, { 58,-4992 }, - { 59,-4992 }, { 60,-4992 }, { 61,-4992 }, { 62,-4992 }, { 63,-4992 }, - { 64,-4992 }, { 65,-4992 }, { 66,-4992 }, { 67,-4992 }, { 68,-4992 }, - { 69,-4992 }, { 70,-4992 }, { 71,-4992 }, { 72,-4992 }, { 73,-4992 }, - { 74,-4992 }, { 75,-4992 }, { 76,-4992 }, { 77,-4992 }, { 78,-4992 }, - { 79,-4992 }, { 80,-4992 }, { 81,-4992 }, { 82,-4992 }, { 83,-4992 }, - { 84,-4992 }, { 85,-4992 }, { 86,-4992 }, { 87,-4992 }, { 88,-4992 }, - { 89,-4992 }, { 90,-4992 }, { 91,-4992 }, { 92,-4992 }, { 93,-4992 }, - { 94,-4992 }, { 95,-4992 }, { 96,-4992 }, { 97,-4992 }, { 98,-4992 }, - - { 99,-4992 }, { 100,-4992 }, { 101,-4992 }, { 102,-4992 }, { 103,-4992 }, - { 104,-4992 }, { 105,-4992 }, { 106,-4992 }, { 107,-4992 }, { 108,-4992 }, - { 109,-4992 }, { 110,-4992 }, { 111,-4992 }, { 112,-4992 }, { 113,-4992 }, - { 114,-4992 }, { 115,-4992 }, { 116,-4992 }, { 117,-4992 }, { 118,-4992 }, - { 119,-4992 }, { 120,-4992 }, { 121,-4992 }, { 122,-4992 }, { 123,-4992 }, - { 124,-4992 }, { 125,-4992 }, { 126,-4992 }, { 127,-4992 }, { 128,-4992 }, - { 129,-4992 }, { 130,-4992 }, { 131,-4992 }, { 132,-4992 }, { 133,-4992 }, - { 134,-4992 }, { 135,-4992 }, { 136,-4992 }, { 137,-4992 }, { 138,-4992 }, - { 139,-4992 }, { 140,-4992 }, { 141,-4992 }, { 142,-4992 }, { 143,-4992 }, - { 144,-4992 }, { 145,-4992 }, { 146,-4992 }, { 147,-4992 }, { 148,-4992 }, - - { 149,-4992 }, { 150,-4992 }, { 151,-4992 }, { 152,-4992 }, { 153,-4992 }, - { 154,-4992 }, { 155,-4992 }, { 156,-4992 }, { 157,-4992 }, { 158,-4992 }, - { 159,-4992 }, { 160,-4992 }, { 161,-4992 }, { 162,-4992 }, { 163,-4992 }, - { 164,-4992 }, { 165,-4992 }, { 166,-4992 }, { 167,-4992 }, { 168,-4992 }, - { 169,-4992 }, { 170,-4992 }, { 171,-4992 }, { 172,-4992 }, { 173,-4992 }, - { 174,-4992 }, { 175,-4992 }, { 176,-4992 }, { 177,-4992 }, { 178,-4992 }, - { 179,-4992 }, { 180,-4992 }, { 181,-4992 }, { 182,-4992 }, { 183,-4992 }, - { 184,-4992 }, { 185,-4992 }, { 186,-4992 }, { 187,-4992 }, { 188,-4992 }, - { 189,-4992 }, { 190,-4992 }, { 191,-4992 }, { 192,-4992 }, { 193,-4992 }, - { 194,-4992 }, { 195,-4992 }, { 196,-4992 }, { 197,-4992 }, { 198,-4992 }, - - { 199,-4992 }, { 200,-4992 }, { 201,-4992 }, { 202,-4992 }, { 203,-4992 }, - { 204,-4992 }, { 205,-4992 }, { 206,-4992 }, { 207,-4992 }, { 208,-4992 }, - { 209,-4992 }, { 210,-4992 }, { 211,-4992 }, { 212,-4992 }, { 213,-4992 }, - { 214,-4992 }, { 215,-4992 }, { 216,-4992 }, { 217,-4992 }, { 218,-4992 }, - { 219,-4992 }, { 220,-4992 }, { 221,-4992 }, { 222,-4992 }, { 223,-4992 }, - { 224,-4992 }, { 225,-4992 }, { 226,-4992 }, { 227,-4992 }, { 228,-4992 }, - { 229,-4992 }, { 230,-4992 }, { 231,-4992 }, { 232,-4992 }, { 233,-4992 }, - { 234,-4992 }, { 235,-4992 }, { 236,-4992 }, { 237,-4992 }, { 238,-4992 }, - { 239,-4992 }, { 240,-4992 }, { 241,-4992 }, { 242,-4992 }, { 243,-4992 }, - { 244,-4992 }, { 245,-4992 }, { 246,-4992 }, { 247,-4992 }, { 248,-4992 }, - - { 249,-4992 }, { 250,-4992 }, { 251,-4992 }, { 252,-4992 }, { 253,-4992 }, - { 254,-4992 }, { 255,-4992 }, { 256,-4992 }, { 0, 22 }, { 0,10391 }, - { 1, 0 }, { 2, 0 }, { 3, 0 }, { 4, 0 }, { 5, 0 }, - { 6, 0 }, { 7, 0 }, { 8, 0 }, { 9, 258 }, { 10, 516 }, - { 11, 0 }, { 12, 258 }, { 13, 516 }, { 14, 0 }, { 15, 0 }, - { 16, 0 }, { 17, 0 }, { 18, 0 }, { 19, 0 }, { 20, 0 }, - { 21, 0 }, { 22, 0 }, { 23, 0 }, { 24, 0 }, { 25, 0 }, - { 26, 0 }, { 27, 0 }, { 28, 0 }, { 29, 0 }, { 30, 0 }, - { 31, 0 }, { 32, 258 }, { 33, 0 }, { 34, 0 }, { 35, 0 }, - { 36, 0 }, { 37, 0 }, { 38, 0 }, { 39, 0 }, { 40, 0 }, - - { 41, 0 }, { 42, 0 }, { 43, 0 }, { 44, 0 }, { 45, 563 }, - { 46, 0 }, { 47, 0 }, { 48, 0 }, { 49, 0 }, { 50, 0 }, - { 51, 0 }, { 52, 0 }, { 53, 0 }, { 54, 0 }, { 55, 0 }, - { 56, 0 }, { 57, 0 }, { 58, 0 }, { 59, 0 }, { 60, 0 }, - { 61, 0 }, { 62, 0 }, { 63, 0 }, { 64, 0 }, { 65, 0 }, - { 66, 0 }, { 67, 0 }, { 68, 0 }, { 69, 0 }, { 70, 0 }, - { 71, 0 }, { 72, 0 }, { 73, 0 }, { 74, 0 }, { 75, 0 }, - { 76, 0 }, { 77, 0 }, { 78, 0 }, { 79, 0 }, { 80, 0 }, - { 81, 0 }, { 82, 0 }, { 83, 0 }, { 84, 0 }, { 85, 0 }, - { 86, 0 }, { 87, 0 }, { 88, 0 }, { 89, 0 }, { 90, 0 }, - - { 91, 0 }, { 92, 0 }, { 93, 0 }, { 94, 0 }, { 95, 0 }, - { 96, 0 }, { 97, 0 }, { 98, 0 }, { 99, 0 }, { 100, 0 }, - { 101, 0 }, { 102, 0 }, { 103, 0 }, { 104, 0 }, { 105, 0 }, - { 106, 0 }, { 107, 0 }, { 108, 0 }, { 109, 0 }, { 110, 0 }, - { 111, 0 }, { 112, 0 }, { 113, 0 }, { 114, 0 }, { 115, 0 }, - { 116, 0 }, { 117, 0 }, { 118, 0 }, { 119, 0 }, { 120, 0 }, - { 121, 0 }, { 122, 0 }, { 123, 0 }, { 124, 0 }, { 125, 0 }, - { 126, 0 }, { 127, 0 }, { 128, 0 }, { 129, 0 }, { 130, 0 }, - { 131, 0 }, { 132, 0 }, { 133, 0 }, { 134, 0 }, { 135, 0 }, - { 136, 0 }, { 137, 0 }, { 138, 0 }, { 139, 0 }, { 140, 0 }, - - { 141, 0 }, { 142, 0 }, { 143, 0 }, { 144, 0 }, { 145, 0 }, - { 146, 0 }, { 147, 0 }, { 148, 0 }, { 149, 0 }, { 150, 0 }, - { 151, 0 }, { 152, 0 }, { 153, 0 }, { 154, 0 }, { 155, 0 }, - { 156, 0 }, { 157, 0 }, { 158, 0 }, { 159, 0 }, { 160, 0 }, - { 161, 0 }, { 162, 0 }, { 163, 0 }, { 164, 0 }, { 165, 0 }, - { 166, 0 }, { 167, 0 }, { 168, 0 }, { 169, 0 }, { 170, 0 }, - { 171, 0 }, { 172, 0 }, { 173, 0 }, { 174, 0 }, { 175, 0 }, - { 176, 0 }, { 177, 0 }, { 178, 0 }, { 179, 0 }, { 180, 0 }, - { 181, 0 }, { 182, 0 }, { 183, 0 }, { 184, 0 }, { 185, 0 }, - { 186, 0 }, { 187, 0 }, { 188, 0 }, { 189, 0 }, { 190, 0 }, - - { 191, 0 }, { 192, 0 }, { 193, 0 }, { 194, 0 }, { 195, 0 }, - { 196, 0 }, { 197, 0 }, { 198, 0 }, { 199, 0 }, { 200, 0 }, - { 201, 0 }, { 202, 0 }, { 203, 0 }, { 204, 0 }, { 205, 0 }, - { 206, 0 }, { 207, 0 }, { 208, 0 }, { 209, 0 }, { 210, 0 }, - { 211, 0 }, { 212, 0 }, { 213, 0 }, { 214, 0 }, { 215, 0 }, - { 216, 0 }, { 217, 0 }, { 218, 0 }, { 219, 0 }, { 220, 0 }, - { 221, 0 }, { 222, 0 }, { 223, 0 }, { 224, 0 }, { 225, 0 }, - { 226, 0 }, { 227, 0 }, { 228, 0 }, { 229, 0 }, { 230, 0 }, - { 231, 0 }, { 232, 0 }, { 233, 0 }, { 234, 0 }, { 235, 0 }, - { 236, 0 }, { 237, 0 }, { 238, 0 }, { 239, 0 }, { 240, 0 }, - - { 241, 0 }, { 242, 0 }, { 243, 0 }, { 244, 0 }, { 245, 0 }, - { 246, 0 }, { 247, 0 }, { 248, 0 }, { 249, 0 }, { 250, 0 }, - { 251, 0 }, { 252, 0 }, { 253, 0 }, { 254, 0 }, { 255, 0 }, - { 256, 0 }, { 0, 22 }, { 0,10133 }, { 1,-258 }, { 2,-258 }, - { 3,-258 }, { 4,-258 }, { 5,-258 }, { 6,-258 }, { 7,-258 }, - { 8,-258 }, { 9, 0 }, { 10, 258 }, { 11,-258 }, { 12, 0 }, - { 13, 258 }, { 14,-258 }, { 15,-258 }, { 16,-258 }, { 17,-258 }, - { 18,-258 }, { 19,-258 }, { 20,-258 }, { 21,-258 }, { 22,-258 }, - { 23,-258 }, { 24,-258 }, { 25,-258 }, { 26,-258 }, { 27,-258 }, - { 28,-258 }, { 29,-258 }, { 30,-258 }, { 31,-258 }, { 32, 0 }, - - { 33,-258 }, { 34,-258 }, { 35,-258 }, { 36,-258 }, { 37,-258 }, - { 38,-258 }, { 39,-258 }, { 40,-258 }, { 41,-258 }, { 42,-258 }, - { 43,-258 }, { 44,-258 }, { 45, 305 }, { 46,-258 }, { 47,-258 }, - { 48,-258 }, { 49,-258 }, { 50,-258 }, { 51,-258 }, { 52,-258 }, - { 53,-258 }, { 54,-258 }, { 55,-258 }, { 56,-258 }, { 57,-258 }, - { 58,-258 }, { 59,-258 }, { 60,-258 }, { 61,-258 }, { 62,-258 }, - { 63,-258 }, { 64,-258 }, { 65,-258 }, { 66,-258 }, { 67,-258 }, - { 68,-258 }, { 69,-258 }, { 70,-258 }, { 71,-258 }, { 72,-258 }, - { 73,-258 }, { 74,-258 }, { 75,-258 }, { 76,-258 }, { 77,-258 }, - { 78,-258 }, { 79,-258 }, { 80,-258 }, { 81,-258 }, { 82,-258 }, - - { 83,-258 }, { 84,-258 }, { 85,-258 }, { 86,-258 }, { 87,-258 }, - { 88,-258 }, { 89,-258 }, { 90,-258 }, { 91,-258 }, { 92,-258 }, - { 93,-258 }, { 94,-258 }, { 95,-258 }, { 96,-258 }, { 97,-258 }, - { 98,-258 }, { 99,-258 }, { 100,-258 }, { 101,-258 }, { 102,-258 }, - { 103,-258 }, { 104,-258 }, { 105,-258 }, { 106,-258 }, { 107,-258 }, - { 108,-258 }, { 109,-258 }, { 110,-258 }, { 111,-258 }, { 112,-258 }, - { 113,-258 }, { 114,-258 }, { 115,-258 }, { 116,-258 }, { 117,-258 }, - { 118,-258 }, { 119,-258 }, { 120,-258 }, { 121,-258 }, { 122,-258 }, - { 123,-258 }, { 124,-258 }, { 125,-258 }, { 126,-258 }, { 127,-258 }, - { 128,-258 }, { 129,-258 }, { 130,-258 }, { 131,-258 }, { 132,-258 }, - - { 133,-258 }, { 134,-258 }, { 135,-258 }, { 136,-258 }, { 137,-258 }, - { 138,-258 }, { 139,-258 }, { 140,-258 }, { 141,-258 }, { 142,-258 }, - { 143,-258 }, { 144,-258 }, { 145,-258 }, { 146,-258 }, { 147,-258 }, - { 148,-258 }, { 149,-258 }, { 150,-258 }, { 151,-258 }, { 152,-258 }, - { 153,-258 }, { 154,-258 }, { 155,-258 }, { 156,-258 }, { 157,-258 }, - { 158,-258 }, { 159,-258 }, { 160,-258 }, { 161,-258 }, { 162,-258 }, - { 163,-258 }, { 164,-258 }, { 165,-258 }, { 166,-258 }, { 167,-258 }, - { 168,-258 }, { 169,-258 }, { 170,-258 }, { 171,-258 }, { 172,-258 }, - { 173,-258 }, { 174,-258 }, { 175,-258 }, { 176,-258 }, { 177,-258 }, - { 178,-258 }, { 179,-258 }, { 180,-258 }, { 181,-258 }, { 182,-258 }, - - { 183,-258 }, { 184,-258 }, { 185,-258 }, { 186,-258 }, { 187,-258 }, - { 188,-258 }, { 189,-258 }, { 190,-258 }, { 191,-258 }, { 192,-258 }, - { 193,-258 }, { 194,-258 }, { 195,-258 }, { 196,-258 }, { 197,-258 }, - { 198,-258 }, { 199,-258 }, { 200,-258 }, { 201,-258 }, { 202,-258 }, - { 203,-258 }, { 204,-258 }, { 205,-258 }, { 206,-258 }, { 207,-258 }, - { 208,-258 }, { 209,-258 }, { 210,-258 }, { 211,-258 }, { 212,-258 }, - { 213,-258 }, { 214,-258 }, { 215,-258 }, { 216,-258 }, { 217,-258 }, - { 218,-258 }, { 219,-258 }, { 220,-258 }, { 221,-258 }, { 222,-258 }, - { 223,-258 }, { 224,-258 }, { 225,-258 }, { 226,-258 }, { 227,-258 }, - { 228,-258 }, { 229,-258 }, { 230,-258 }, { 231,-258 }, { 232,-258 }, - - { 233,-258 }, { 234,-258 }, { 235,-258 }, { 236,-258 }, { 237,-258 }, - { 238,-258 }, { 239,-258 }, { 240,-258 }, { 241,-258 }, { 242,-258 }, - { 243,-258 }, { 244,-258 }, { 245,-258 }, { 246,-258 }, { 247,-258 }, - { 248,-258 }, { 249,-258 }, { 250,-258 }, { 251,-258 }, { 252,-258 }, - { 253,-258 }, { 254,-258 }, { 255,-258 }, { 256,-258 }, { 0, 22 }, - { 0,9875 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 9,-8707 }, - { 10,-8707 }, { 0, 0 }, { 12,-8707 }, { 13,-8707 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 32,-8707 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 39,-19584 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 45,-19557 }, { 0, 22 }, { 0,9828 }, { 1,-563 }, { 2,-563 }, - { 3,-563 }, { 4,-563 }, { 5,-563 }, { 6,-563 }, { 7,-563 }, - { 8,-563 }, { 9,-305 }, { 10, -47 }, { 11,-563 }, { 12,-305 }, - { 13, -47 }, { 14,-563 }, { 15,-563 }, { 16,-563 }, { 17,-563 }, - { 18,-563 }, { 19,-563 }, { 20,-563 }, { 21,-563 }, { 22,-563 }, - { 23,-563 }, { 24,-563 }, { 25,-563 }, { 26,-563 }, { 27,-563 }, - - { 28,-563 }, { 29,-563 }, { 30,-563 }, { 31,-563 }, { 32,-305 }, - { 33,-563 }, { 34,-563 }, { 35,-563 }, { 36,-563 }, { 37,-563 }, - { 38,-563 }, { 39,-563 }, { 40,-563 }, { 41,-563 }, { 42,-563 }, - { 43,-563 }, { 44,-563 }, { 45,2365 }, { 46,-563 }, { 47,-563 }, - { 48,-563 }, { 49,-563 }, { 50,-563 }, { 51,-563 }, { 52,-563 }, - { 53,-563 }, { 54,-563 }, { 55,-563 }, { 56,-563 }, { 57,-563 }, - { 58,-563 }, { 59,-563 }, { 60,-563 }, { 61,-563 }, { 62,-563 }, - { 63,-563 }, { 64,-563 }, { 65,-563 }, { 66,-563 }, { 67,-563 }, - { 68,-563 }, { 69,-563 }, { 70,-563 }, { 71,-563 }, { 72,-563 }, - { 73,-563 }, { 74,-563 }, { 75,-563 }, { 76,-563 }, { 77,-563 }, - - { 78,-563 }, { 79,-563 }, { 80,-563 }, { 81,-563 }, { 82,-563 }, - { 83,-563 }, { 84,-563 }, { 85,-563 }, { 86,-563 }, { 87,-563 }, - { 88,-563 }, { 89,-563 }, { 90,-563 }, { 91,-563 }, { 92,-563 }, - { 93,-563 }, { 94,-563 }, { 95,-563 }, { 96,-563 }, { 97,-563 }, - { 98,-563 }, { 99,-563 }, { 100,-563 }, { 101,-563 }, { 102,-563 }, - { 103,-563 }, { 104,-563 }, { 105,-563 }, { 106,-563 }, { 107,-563 }, - { 108,-563 }, { 109,-563 }, { 110,-563 }, { 111,-563 }, { 112,-563 }, - { 113,-563 }, { 114,-563 }, { 115,-563 }, { 116,-563 }, { 117,-563 }, - { 118,-563 }, { 119,-563 }, { 120,-563 }, { 121,-563 }, { 122,-563 }, - { 123,-563 }, { 124,-563 }, { 125,-563 }, { 126,-563 }, { 127,-563 }, - - { 128,-563 }, { 129,-563 }, { 130,-563 }, { 131,-563 }, { 132,-563 }, - { 133,-563 }, { 134,-563 }, { 135,-563 }, { 136,-563 }, { 137,-563 }, - { 138,-563 }, { 139,-563 }, { 140,-563 }, { 141,-563 }, { 142,-563 }, - { 143,-563 }, { 144,-563 }, { 145,-563 }, { 146,-563 }, { 147,-563 }, - { 148,-563 }, { 149,-563 }, { 150,-563 }, { 151,-563 }, { 152,-563 }, - { 153,-563 }, { 154,-563 }, { 155,-563 }, { 156,-563 }, { 157,-563 }, - { 158,-563 }, { 159,-563 }, { 160,-563 }, { 161,-563 }, { 162,-563 }, - { 163,-563 }, { 164,-563 }, { 165,-563 }, { 166,-563 }, { 167,-563 }, - { 168,-563 }, { 169,-563 }, { 170,-563 }, { 171,-563 }, { 172,-563 }, - { 173,-563 }, { 174,-563 }, { 175,-563 }, { 176,-563 }, { 177,-563 }, - - { 178,-563 }, { 179,-563 }, { 180,-563 }, { 181,-563 }, { 182,-563 }, - { 183,-563 }, { 184,-563 }, { 185,-563 }, { 186,-563 }, { 187,-563 }, - { 188,-563 }, { 189,-563 }, { 190,-563 }, { 191,-563 }, { 192,-563 }, - { 193,-563 }, { 194,-563 }, { 195,-563 }, { 196,-563 }, { 197,-563 }, - { 198,-563 }, { 199,-563 }, { 200,-563 }, { 201,-563 }, { 202,-563 }, - { 203,-563 }, { 204,-563 }, { 205,-563 }, { 206,-563 }, { 207,-563 }, - { 208,-563 }, { 209,-563 }, { 210,-563 }, { 211,-563 }, { 212,-563 }, - { 213,-563 }, { 214,-563 }, { 215,-563 }, { 216,-563 }, { 217,-563 }, - { 218,-563 }, { 219,-563 }, { 220,-563 }, { 221,-563 }, { 222,-563 }, - { 223,-563 }, { 224,-563 }, { 225,-563 }, { 226,-563 }, { 227,-563 }, - - { 228,-563 }, { 229,-563 }, { 230,-563 }, { 231,-563 }, { 232,-563 }, - { 233,-563 }, { 234,-563 }, { 235,-563 }, { 236,-563 }, { 237,-563 }, - { 238,-563 }, { 239,-563 }, { 240,-563 }, { 241,-563 }, { 242,-563 }, - { 243,-563 }, { 244,-563 }, { 245,-563 }, { 246,-563 }, { 247,-563 }, - { 248,-563 }, { 249,-563 }, { 250,-563 }, { 251,-563 }, { 252,-563 }, - { 253,-563 }, { 254,-563 }, { 255,-563 }, { 256,-563 }, { 0, 22 }, - { 0,9570 }, { 1,-5039 }, { 2,-5039 }, { 3,-5039 }, { 4,-5039 }, - { 5,-5039 }, { 6,-5039 }, { 7,-5039 }, { 8,-5039 }, { 9,-4781 }, - { 10,-12180 }, { 11,-5039 }, { 12,-4781 }, { 13,-12180 }, { 14,-5039 }, - { 15,-5039 }, { 16,-5039 }, { 17,-5039 }, { 18,-5039 }, { 19,-5039 }, - - { 20,-5039 }, { 21,-5039 }, { 22,-5039 }, { 23,-5039 }, { 24,-5039 }, - { 25,-5039 }, { 26,-5039 }, { 27,-5039 }, { 28,-5039 }, { 29,-5039 }, - { 30,-5039 }, { 31,-5039 }, { 32,-4781 }, { 33,-5039 }, { 34,-5039 }, - { 35,-5039 }, { 36,-5039 }, { 37,-5039 }, { 38,-5039 }, { 39,-5039 }, - { 40,-5039 }, { 41,-5039 }, { 42,-5039 }, { 43,-5039 }, { 44,-5039 }, - { 45, 0 }, { 46,-5039 }, { 47,-5039 }, { 48,-5039 }, { 49,-5039 }, - { 50,-5039 }, { 51,-5039 }, { 52,-5039 }, { 53,-5039 }, { 54,-5039 }, - { 55,-5039 }, { 56,-5039 }, { 57,-5039 }, { 58,-5039 }, { 59,-5039 }, - { 60,-5039 }, { 61,-5039 }, { 62,-5039 }, { 63,-5039 }, { 64,-5039 }, - { 65,-5039 }, { 66,-5039 }, { 67,-5039 }, { 68,-5039 }, { 69,-5039 }, - - { 70,-5039 }, { 71,-5039 }, { 72,-5039 }, { 73,-5039 }, { 74,-5039 }, - { 75,-5039 }, { 76,-5039 }, { 77,-5039 }, { 78,-5039 }, { 79,-5039 }, - { 80,-5039 }, { 81,-5039 }, { 82,-5039 }, { 83,-5039 }, { 84,-5039 }, - { 85,-5039 }, { 86,-5039 }, { 87,-5039 }, { 88,-5039 }, { 89,-5039 }, - { 90,-5039 }, { 91,-5039 }, { 92,-5039 }, { 93,-5039 }, { 94,-5039 }, - { 95,-5039 }, { 96,-5039 }, { 97,-5039 }, { 98,-5039 }, { 99,-5039 }, - { 100,-5039 }, { 101,-5039 }, { 102,-5039 }, { 103,-5039 }, { 104,-5039 }, - { 105,-5039 }, { 106,-5039 }, { 107,-5039 }, { 108,-5039 }, { 109,-5039 }, - { 110,-5039 }, { 111,-5039 }, { 112,-5039 }, { 113,-5039 }, { 114,-5039 }, - { 115,-5039 }, { 116,-5039 }, { 117,-5039 }, { 118,-5039 }, { 119,-5039 }, - - { 120,-5039 }, { 121,-5039 }, { 122,-5039 }, { 123,-5039 }, { 124,-5039 }, - { 125,-5039 }, { 126,-5039 }, { 127,-5039 }, { 128,-5039 }, { 129,-5039 }, - { 130,-5039 }, { 131,-5039 }, { 132,-5039 }, { 133,-5039 }, { 134,-5039 }, - { 135,-5039 }, { 136,-5039 }, { 137,-5039 }, { 138,-5039 }, { 139,-5039 }, - { 140,-5039 }, { 141,-5039 }, { 142,-5039 }, { 143,-5039 }, { 144,-5039 }, - { 145,-5039 }, { 146,-5039 }, { 147,-5039 }, { 148,-5039 }, { 149,-5039 }, - { 150,-5039 }, { 151,-5039 }, { 152,-5039 }, { 153,-5039 }, { 154,-5039 }, - { 155,-5039 }, { 156,-5039 }, { 157,-5039 }, { 158,-5039 }, { 159,-5039 }, - { 160,-5039 }, { 161,-5039 }, { 162,-5039 }, { 163,-5039 }, { 164,-5039 }, - { 165,-5039 }, { 166,-5039 }, { 167,-5039 }, { 168,-5039 }, { 169,-5039 }, - - { 170,-5039 }, { 171,-5039 }, { 172,-5039 }, { 173,-5039 }, { 174,-5039 }, - { 175,-5039 }, { 176,-5039 }, { 177,-5039 }, { 178,-5039 }, { 179,-5039 }, - { 180,-5039 }, { 181,-5039 }, { 182,-5039 }, { 183,-5039 }, { 184,-5039 }, - { 185,-5039 }, { 186,-5039 }, { 187,-5039 }, { 188,-5039 }, { 189,-5039 }, - { 190,-5039 }, { 191,-5039 }, { 192,-5039 }, { 193,-5039 }, { 194,-5039 }, - { 195,-5039 }, { 196,-5039 }, { 197,-5039 }, { 198,-5039 }, { 199,-5039 }, - { 200,-5039 }, { 201,-5039 }, { 202,-5039 }, { 203,-5039 }, { 204,-5039 }, - { 205,-5039 }, { 206,-5039 }, { 207,-5039 }, { 208,-5039 }, { 209,-5039 }, - { 210,-5039 }, { 211,-5039 }, { 212,-5039 }, { 213,-5039 }, { 214,-5039 }, - { 215,-5039 }, { 216,-5039 }, { 217,-5039 }, { 218,-5039 }, { 219,-5039 }, - - { 220,-5039 }, { 221,-5039 }, { 222,-5039 }, { 223,-5039 }, { 224,-5039 }, - { 225,-5039 }, { 226,-5039 }, { 227,-5039 }, { 228,-5039 }, { 229,-5039 }, - { 230,-5039 }, { 231,-5039 }, { 232,-5039 }, { 233,-5039 }, { 234,-5039 }, - { 235,-5039 }, { 236,-5039 }, { 237,-5039 }, { 238,-5039 }, { 239,-5039 }, - { 240,-5039 }, { 241,-5039 }, { 242,-5039 }, { 243,-5039 }, { 244,-5039 }, - { 245,-5039 }, { 246,-5039 }, { 247,-5039 }, { 248,-5039 }, { 249,-5039 }, - { 250,-5039 }, { 251,-5039 }, { 252,-5039 }, { 253,-5039 }, { 254,-5039 }, - { 255,-5039 }, { 256,-5039 }, { 0, 37 }, { 0,9312 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 0, 37 }, { 0,9289 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 48,2107 }, { 49,2107 }, { 50,2107 }, { 51,2107 }, - { 52,2107 }, { 53,2107 }, { 54,2107 }, { 55,2107 }, { 56,2107 }, - { 57,2107 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 65,2107 }, { 66,2107 }, - { 67,2107 }, { 68,2107 }, { 69,2107 }, { 70,2107 }, { 48,-19314 }, - { 49,-19314 }, { 50,-19314 }, { 51,-19314 }, { 52,-19314 }, { 53,-19314 }, - { 54,-19314 }, { 55,-19314 }, { 56,-19314 }, { 57,-19314 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 65,-19314 }, { 66,-19314 }, { 67,-19314 }, { 68,-19314 }, - { 69,-19314 }, { 70,-19314 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 97,2107 }, { 98,2107 }, { 99,2107 }, { 100,2107 }, { 101,2107 }, - { 102,2107 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 97,-19314 }, { 98,-19314 }, - { 99,-19314 }, { 100,-19314 }, { 101,-19314 }, { 102,-19314 }, { 0, 24 }, - { 0,9185 }, { 1, 0 }, { 2, 0 }, { 3, 0 }, { 4, 0 }, - { 5, 0 }, { 6, 0 }, { 7, 0 }, { 8, 0 }, { 9, 258 }, - { 10, 516 }, { 11, 0 }, { 12, 258 }, { 13, 516 }, { 14, 0 }, - { 15, 0 }, { 16, 0 }, { 17, 0 }, { 18, 0 }, { 19, 0 }, - { 20, 0 }, { 21, 0 }, { 22, 0 }, { 23, 0 }, { 24, 0 }, - { 25, 0 }, { 26, 0 }, { 27, 0 }, { 28, 0 }, { 29, 0 }, - { 30, 0 }, { 31, 0 }, { 32, 258 }, { 33, 0 }, { 34, 0 }, - - { 35, 0 }, { 36, 0 }, { 37, 0 }, { 38, 0 }, { 39, 0 }, - { 40, 0 }, { 41, 0 }, { 42, 0 }, { 43, 0 }, { 44, 0 }, - { 45, 563 }, { 46, 0 }, { 47, 0 }, { 48, 0 }, { 49, 0 }, - { 50, 0 }, { 51, 0 }, { 52, 0 }, { 53, 0 }, { 54, 0 }, - { 55, 0 }, { 56, 0 }, { 57, 0 }, { 58, 0 }, { 59, 0 }, - { 60, 0 }, { 61, 0 }, { 62, 0 }, { 63, 0 }, { 64, 0 }, - { 65, 0 }, { 66, 0 }, { 67, 0 }, { 68, 0 }, { 69, 0 }, - { 70, 0 }, { 71, 0 }, { 72, 0 }, { 73, 0 }, { 74, 0 }, - { 75, 0 }, { 76, 0 }, { 77, 0 }, { 78, 0 }, { 79, 0 }, - { 80, 0 }, { 81, 0 }, { 82, 0 }, { 83, 0 }, { 84, 0 }, - - { 85, 0 }, { 86, 0 }, { 87, 0 }, { 88, 0 }, { 89, 0 }, - { 90, 0 }, { 91, 0 }, { 92, 0 }, { 93, 0 }, { 94, 0 }, - { 95, 0 }, { 96, 0 }, { 97, 0 }, { 98, 0 }, { 99, 0 }, - { 100, 0 }, { 101, 0 }, { 102, 0 }, { 103, 0 }, { 104, 0 }, - { 105, 0 }, { 106, 0 }, { 107, 0 }, { 108, 0 }, { 109, 0 }, - { 110, 0 }, { 111, 0 }, { 112, 0 }, { 113, 0 }, { 114, 0 }, - { 115, 0 }, { 116, 0 }, { 117, 0 }, { 118, 0 }, { 119, 0 }, - { 120, 0 }, { 121, 0 }, { 122, 0 }, { 123, 0 }, { 124, 0 }, - { 125, 0 }, { 126, 0 }, { 127, 0 }, { 128, 0 }, { 129, 0 }, - { 130, 0 }, { 131, 0 }, { 132, 0 }, { 133, 0 }, { 134, 0 }, - - { 135, 0 }, { 136, 0 }, { 137, 0 }, { 138, 0 }, { 139, 0 }, - { 140, 0 }, { 141, 0 }, { 142, 0 }, { 143, 0 }, { 144, 0 }, - { 145, 0 }, { 146, 0 }, { 147, 0 }, { 148, 0 }, { 149, 0 }, - { 150, 0 }, { 151, 0 }, { 152, 0 }, { 153, 0 }, { 154, 0 }, - { 155, 0 }, { 156, 0 }, { 157, 0 }, { 158, 0 }, { 159, 0 }, - { 160, 0 }, { 161, 0 }, { 162, 0 }, { 163, 0 }, { 164, 0 }, - { 165, 0 }, { 166, 0 }, { 167, 0 }, { 168, 0 }, { 169, 0 }, - { 170, 0 }, { 171, 0 }, { 172, 0 }, { 173, 0 }, { 174, 0 }, - { 175, 0 }, { 176, 0 }, { 177, 0 }, { 178, 0 }, { 179, 0 }, - { 180, 0 }, { 181, 0 }, { 182, 0 }, { 183, 0 }, { 184, 0 }, - - { 185, 0 }, { 186, 0 }, { 187, 0 }, { 188, 0 }, { 189, 0 }, - { 190, 0 }, { 191, 0 }, { 192, 0 }, { 193, 0 }, { 194, 0 }, - { 195, 0 }, { 196, 0 }, { 197, 0 }, { 198, 0 }, { 199, 0 }, - { 200, 0 }, { 201, 0 }, { 202, 0 }, { 203, 0 }, { 204, 0 }, - { 205, 0 }, { 206, 0 }, { 207, 0 }, { 208, 0 }, { 209, 0 }, - { 210, 0 }, { 211, 0 }, { 212, 0 }, { 213, 0 }, { 214, 0 }, - { 215, 0 }, { 216, 0 }, { 217, 0 }, { 218, 0 }, { 219, 0 }, - { 220, 0 }, { 221, 0 }, { 222, 0 }, { 223, 0 }, { 224, 0 }, - { 225, 0 }, { 226, 0 }, { 227, 0 }, { 228, 0 }, { 229, 0 }, - { 230, 0 }, { 231, 0 }, { 232, 0 }, { 233, 0 }, { 234, 0 }, - - { 235, 0 }, { 236, 0 }, { 237, 0 }, { 238, 0 }, { 239, 0 }, - { 240, 0 }, { 241, 0 }, { 242, 0 }, { 243, 0 }, { 244, 0 }, - { 245, 0 }, { 246, 0 }, { 247, 0 }, { 248, 0 }, { 249, 0 }, - { 250, 0 }, { 251, 0 }, { 252, 0 }, { 253, 0 }, { 254, 0 }, - { 255, 0 }, { 256, 0 }, { 0, 24 }, { 0,8927 }, { 1,-258 }, - { 2,-258 }, { 3,-258 }, { 4,-258 }, { 5,-258 }, { 6,-258 }, - { 7,-258 }, { 8,-258 }, { 9, 0 }, { 10, 258 }, { 11,-258 }, - { 12, 0 }, { 13, 258 }, { 14,-258 }, { 15,-258 }, { 16,-258 }, - { 17,-258 }, { 18,-258 }, { 19,-258 }, { 20,-258 }, { 21,-258 }, - { 22,-258 }, { 23,-258 }, { 24,-258 }, { 25,-258 }, { 26,-258 }, - - { 27,-258 }, { 28,-258 }, { 29,-258 }, { 30,-258 }, { 31,-258 }, - { 32, 0 }, { 33,-258 }, { 34,-258 }, { 35,-258 }, { 36,-258 }, - { 37,-258 }, { 38,-258 }, { 39,-258 }, { 40,-258 }, { 41,-258 }, - { 42,-258 }, { 43,-258 }, { 44,-258 }, { 45, 305 }, { 46,-258 }, - { 47,-258 }, { 48,-258 }, { 49,-258 }, { 50,-258 }, { 51,-258 }, - { 52,-258 }, { 53,-258 }, { 54,-258 }, { 55,-258 }, { 56,-258 }, - { 57,-258 }, { 58,-258 }, { 59,-258 }, { 60,-258 }, { 61,-258 }, - { 62,-258 }, { 63,-258 }, { 64,-258 }, { 65,-258 }, { 66,-258 }, - { 67,-258 }, { 68,-258 }, { 69,-258 }, { 70,-258 }, { 71,-258 }, - { 72,-258 }, { 73,-258 }, { 74,-258 }, { 75,-258 }, { 76,-258 }, - - { 77,-258 }, { 78,-258 }, { 79,-258 }, { 80,-258 }, { 81,-258 }, - { 82,-258 }, { 83,-258 }, { 84,-258 }, { 85,-258 }, { 86,-258 }, - { 87,-258 }, { 88,-258 }, { 89,-258 }, { 90,-258 }, { 91,-258 }, - { 92,-258 }, { 93,-258 }, { 94,-258 }, { 95,-258 }, { 96,-258 }, - { 97,-258 }, { 98,-258 }, { 99,-258 }, { 100,-258 }, { 101,-258 }, - { 102,-258 }, { 103,-258 }, { 104,-258 }, { 105,-258 }, { 106,-258 }, - { 107,-258 }, { 108,-258 }, { 109,-258 }, { 110,-258 }, { 111,-258 }, - { 112,-258 }, { 113,-258 }, { 114,-258 }, { 115,-258 }, { 116,-258 }, - { 117,-258 }, { 118,-258 }, { 119,-258 }, { 120,-258 }, { 121,-258 }, - { 122,-258 }, { 123,-258 }, { 124,-258 }, { 125,-258 }, { 126,-258 }, - - { 127,-258 }, { 128,-258 }, { 129,-258 }, { 130,-258 }, { 131,-258 }, - { 132,-258 }, { 133,-258 }, { 134,-258 }, { 135,-258 }, { 136,-258 }, - { 137,-258 }, { 138,-258 }, { 139,-258 }, { 140,-258 }, { 141,-258 }, - { 142,-258 }, { 143,-258 }, { 144,-258 }, { 145,-258 }, { 146,-258 }, - { 147,-258 }, { 148,-258 }, { 149,-258 }, { 150,-258 }, { 151,-258 }, - { 152,-258 }, { 153,-258 }, { 154,-258 }, { 155,-258 }, { 156,-258 }, - { 157,-258 }, { 158,-258 }, { 159,-258 }, { 160,-258 }, { 161,-258 }, - { 162,-258 }, { 163,-258 }, { 164,-258 }, { 165,-258 }, { 166,-258 }, - { 167,-258 }, { 168,-258 }, { 169,-258 }, { 170,-258 }, { 171,-258 }, - { 172,-258 }, { 173,-258 }, { 174,-258 }, { 175,-258 }, { 176,-258 }, - - { 177,-258 }, { 178,-258 }, { 179,-258 }, { 180,-258 }, { 181,-258 }, - { 182,-258 }, { 183,-258 }, { 184,-258 }, { 185,-258 }, { 186,-258 }, - { 187,-258 }, { 188,-258 }, { 189,-258 }, { 190,-258 }, { 191,-258 }, - { 192,-258 }, { 193,-258 }, { 194,-258 }, { 195,-258 }, { 196,-258 }, - { 197,-258 }, { 198,-258 }, { 199,-258 }, { 200,-258 }, { 201,-258 }, - { 202,-258 }, { 203,-258 }, { 204,-258 }, { 205,-258 }, { 206,-258 }, - { 207,-258 }, { 208,-258 }, { 209,-258 }, { 210,-258 }, { 211,-258 }, - { 212,-258 }, { 213,-258 }, { 214,-258 }, { 215,-258 }, { 216,-258 }, - { 217,-258 }, { 218,-258 }, { 219,-258 }, { 220,-258 }, { 221,-258 }, - { 222,-258 }, { 223,-258 }, { 224,-258 }, { 225,-258 }, { 226,-258 }, - - { 227,-258 }, { 228,-258 }, { 229,-258 }, { 230,-258 }, { 231,-258 }, - { 232,-258 }, { 233,-258 }, { 234,-258 }, { 235,-258 }, { 236,-258 }, - { 237,-258 }, { 238,-258 }, { 239,-258 }, { 240,-258 }, { 241,-258 }, - { 242,-258 }, { 243,-258 }, { 244,-258 }, { 245,-258 }, { 246,-258 }, - { 247,-258 }, { 248,-258 }, { 249,-258 }, { 250,-258 }, { 251,-258 }, - { 252,-258 }, { 253,-258 }, { 254,-258 }, { 255,-258 }, { 256,-258 }, - { 0, 24 }, { 0,8669 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 9,-8952 }, { 10,-8952 }, { 0, 0 }, { 12,-8952 }, { 13,-8952 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 32,-8952 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 39,-20790 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 45,-20726 }, { 0, 24 }, { 0,8622 }, { 1,-563 }, - { 2,-563 }, { 3,-563 }, { 4,-563 }, { 5,-563 }, { 6,-563 }, - { 7,-563 }, { 8,-563 }, { 9,-305 }, { 10, -47 }, { 11,-563 }, - { 12,-305 }, { 13, -47 }, { 14,-563 }, { 15,-563 }, { 16,-563 }, - { 17,-563 }, { 18,-563 }, { 19,-563 }, { 20,-563 }, { 21,-563 }, - - { 22,-563 }, { 23,-563 }, { 24,-563 }, { 25,-563 }, { 26,-563 }, - { 27,-563 }, { 28,-563 }, { 29,-563 }, { 30,-563 }, { 31,-563 }, - { 32,-305 }, { 33,-563 }, { 34,-563 }, { 35,-563 }, { 36,-563 }, - { 37,-563 }, { 38,-563 }, { 39,-563 }, { 40,-563 }, { 41,-563 }, - { 42,-563 }, { 43,-563 }, { 44,-563 }, { 45,1521 }, { 46,-563 }, - { 47,-563 }, { 48,-563 }, { 49,-563 }, { 50,-563 }, { 51,-563 }, - { 52,-563 }, { 53,-563 }, { 54,-563 }, { 55,-563 }, { 56,-563 }, - { 57,-563 }, { 58,-563 }, { 59,-563 }, { 60,-563 }, { 61,-563 }, - { 62,-563 }, { 63,-563 }, { 64,-563 }, { 65,-563 }, { 66,-563 }, - { 67,-563 }, { 68,-563 }, { 69,-563 }, { 70,-563 }, { 71,-563 }, - - { 72,-563 }, { 73,-563 }, { 74,-563 }, { 75,-563 }, { 76,-563 }, - { 77,-563 }, { 78,-563 }, { 79,-563 }, { 80,-563 }, { 81,-563 }, - { 82,-563 }, { 83,-563 }, { 84,-563 }, { 85,-563 }, { 86,-563 }, - { 87,-563 }, { 88,-563 }, { 89,-563 }, { 90,-563 }, { 91,-563 }, - { 92,-563 }, { 93,-563 }, { 94,-563 }, { 95,-563 }, { 96,-563 }, - { 97,-563 }, { 98,-563 }, { 99,-563 }, { 100,-563 }, { 101,-563 }, - { 102,-563 }, { 103,-563 }, { 104,-563 }, { 105,-563 }, { 106,-563 }, - { 107,-563 }, { 108,-563 }, { 109,-563 }, { 110,-563 }, { 111,-563 }, - { 112,-563 }, { 113,-563 }, { 114,-563 }, { 115,-563 }, { 116,-563 }, - { 117,-563 }, { 118,-563 }, { 119,-563 }, { 120,-563 }, { 121,-563 }, - - { 122,-563 }, { 123,-563 }, { 124,-563 }, { 125,-563 }, { 126,-563 }, - { 127,-563 }, { 128,-563 }, { 129,-563 }, { 130,-563 }, { 131,-563 }, - { 132,-563 }, { 133,-563 }, { 134,-563 }, { 135,-563 }, { 136,-563 }, - { 137,-563 }, { 138,-563 }, { 139,-563 }, { 140,-563 }, { 141,-563 }, - { 142,-563 }, { 143,-563 }, { 144,-563 }, { 145,-563 }, { 146,-563 }, - { 147,-563 }, { 148,-563 }, { 149,-563 }, { 150,-563 }, { 151,-563 }, - { 152,-563 }, { 153,-563 }, { 154,-563 }, { 155,-563 }, { 156,-563 }, - { 157,-563 }, { 158,-563 }, { 159,-563 }, { 160,-563 }, { 161,-563 }, - { 162,-563 }, { 163,-563 }, { 164,-563 }, { 165,-563 }, { 166,-563 }, - { 167,-563 }, { 168,-563 }, { 169,-563 }, { 170,-563 }, { 171,-563 }, - - { 172,-563 }, { 173,-563 }, { 174,-563 }, { 175,-563 }, { 176,-563 }, - { 177,-563 }, { 178,-563 }, { 179,-563 }, { 180,-563 }, { 181,-563 }, - { 182,-563 }, { 183,-563 }, { 184,-563 }, { 185,-563 }, { 186,-563 }, - { 187,-563 }, { 188,-563 }, { 189,-563 }, { 190,-563 }, { 191,-563 }, - { 192,-563 }, { 193,-563 }, { 194,-563 }, { 195,-563 }, { 196,-563 }, - { 197,-563 }, { 198,-563 }, { 199,-563 }, { 200,-563 }, { 201,-563 }, - { 202,-563 }, { 203,-563 }, { 204,-563 }, { 205,-563 }, { 206,-563 }, - { 207,-563 }, { 208,-563 }, { 209,-563 }, { 210,-563 }, { 211,-563 }, - { 212,-563 }, { 213,-563 }, { 214,-563 }, { 215,-563 }, { 216,-563 }, - { 217,-563 }, { 218,-563 }, { 219,-563 }, { 220,-563 }, { 221,-563 }, - - { 222,-563 }, { 223,-563 }, { 224,-563 }, { 225,-563 }, { 226,-563 }, - { 227,-563 }, { 228,-563 }, { 229,-563 }, { 230,-563 }, { 231,-563 }, - { 232,-563 }, { 233,-563 }, { 234,-563 }, { 235,-563 }, { 236,-563 }, - { 237,-563 }, { 238,-563 }, { 239,-563 }, { 240,-563 }, { 241,-563 }, - { 242,-563 }, { 243,-563 }, { 244,-563 }, { 245,-563 }, { 246,-563 }, - { 247,-563 }, { 248,-563 }, { 249,-563 }, { 250,-563 }, { 251,-563 }, - { 252,-563 }, { 253,-563 }, { 254,-563 }, { 255,-563 }, { 256,-563 }, - { 0, 24 }, { 0,8364 }, { 1,-5086 }, { 2,-5086 }, { 3,-5086 }, - { 4,-5086 }, { 5,-5086 }, { 6,-5086 }, { 7,-5086 }, { 8,-5086 }, - { 9,-4828 }, { 10,-12170 }, { 11,-5086 }, { 12,-4828 }, { 13,-12170 }, - - { 14,-5086 }, { 15,-5086 }, { 16,-5086 }, { 17,-5086 }, { 18,-5086 }, - { 19,-5086 }, { 20,-5086 }, { 21,-5086 }, { 22,-5086 }, { 23,-5086 }, - { 24,-5086 }, { 25,-5086 }, { 26,-5086 }, { 27,-5086 }, { 28,-5086 }, - { 29,-5086 }, { 30,-5086 }, { 31,-5086 }, { 32,-4828 }, { 33,-5086 }, - { 34,-5086 }, { 35,-5086 }, { 36,-5086 }, { 37,-5086 }, { 38,-5086 }, - { 39,-5086 }, { 40,-5086 }, { 41,-5086 }, { 42,-5086 }, { 43,-5086 }, - { 44,-5086 }, { 45, 0 }, { 46,-5086 }, { 47,-5086 }, { 48,-5086 }, - { 49,-5086 }, { 50,-5086 }, { 51,-5086 }, { 52,-5086 }, { 53,-5086 }, - { 54,-5086 }, { 55,-5086 }, { 56,-5086 }, { 57,-5086 }, { 58,-5086 }, - { 59,-5086 }, { 60,-5086 }, { 61,-5086 }, { 62,-5086 }, { 63,-5086 }, - - { 64,-5086 }, { 65,-5086 }, { 66,-5086 }, { 67,-5086 }, { 68,-5086 }, - { 69,-5086 }, { 70,-5086 }, { 71,-5086 }, { 72,-5086 }, { 73,-5086 }, - { 74,-5086 }, { 75,-5086 }, { 76,-5086 }, { 77,-5086 }, { 78,-5086 }, - { 79,-5086 }, { 80,-5086 }, { 81,-5086 }, { 82,-5086 }, { 83,-5086 }, - { 84,-5086 }, { 85,-5086 }, { 86,-5086 }, { 87,-5086 }, { 88,-5086 }, - { 89,-5086 }, { 90,-5086 }, { 91,-5086 }, { 92,-5086 }, { 93,-5086 }, - { 94,-5086 }, { 95,-5086 }, { 96,-5086 }, { 97,-5086 }, { 98,-5086 }, - { 99,-5086 }, { 100,-5086 }, { 101,-5086 }, { 102,-5086 }, { 103,-5086 }, - { 104,-5086 }, { 105,-5086 }, { 106,-5086 }, { 107,-5086 }, { 108,-5086 }, - { 109,-5086 }, { 110,-5086 }, { 111,-5086 }, { 112,-5086 }, { 113,-5086 }, - - { 114,-5086 }, { 115,-5086 }, { 116,-5086 }, { 117,-5086 }, { 118,-5086 }, - { 119,-5086 }, { 120,-5086 }, { 121,-5086 }, { 122,-5086 }, { 123,-5086 }, - { 124,-5086 }, { 125,-5086 }, { 126,-5086 }, { 127,-5086 }, { 128,-5086 }, - { 129,-5086 }, { 130,-5086 }, { 131,-5086 }, { 132,-5086 }, { 133,-5086 }, - { 134,-5086 }, { 135,-5086 }, { 136,-5086 }, { 137,-5086 }, { 138,-5086 }, - { 139,-5086 }, { 140,-5086 }, { 141,-5086 }, { 142,-5086 }, { 143,-5086 }, - { 144,-5086 }, { 145,-5086 }, { 146,-5086 }, { 147,-5086 }, { 148,-5086 }, - { 149,-5086 }, { 150,-5086 }, { 151,-5086 }, { 152,-5086 }, { 153,-5086 }, - { 154,-5086 }, { 155,-5086 }, { 156,-5086 }, { 157,-5086 }, { 158,-5086 }, - { 159,-5086 }, { 160,-5086 }, { 161,-5086 }, { 162,-5086 }, { 163,-5086 }, - - { 164,-5086 }, { 165,-5086 }, { 166,-5086 }, { 167,-5086 }, { 168,-5086 }, - { 169,-5086 }, { 170,-5086 }, { 171,-5086 }, { 172,-5086 }, { 173,-5086 }, - { 174,-5086 }, { 175,-5086 }, { 176,-5086 }, { 177,-5086 }, { 178,-5086 }, - { 179,-5086 }, { 180,-5086 }, { 181,-5086 }, { 182,-5086 }, { 183,-5086 }, - { 184,-5086 }, { 185,-5086 }, { 186,-5086 }, { 187,-5086 }, { 188,-5086 }, - { 189,-5086 }, { 190,-5086 }, { 191,-5086 }, { 192,-5086 }, { 193,-5086 }, - { 194,-5086 }, { 195,-5086 }, { 196,-5086 }, { 197,-5086 }, { 198,-5086 }, - { 199,-5086 }, { 200,-5086 }, { 201,-5086 }, { 202,-5086 }, { 203,-5086 }, - { 204,-5086 }, { 205,-5086 }, { 206,-5086 }, { 207,-5086 }, { 208,-5086 }, - { 209,-5086 }, { 210,-5086 }, { 211,-5086 }, { 212,-5086 }, { 213,-5086 }, - - { 214,-5086 }, { 215,-5086 }, { 216,-5086 }, { 217,-5086 }, { 218,-5086 }, - { 219,-5086 }, { 220,-5086 }, { 221,-5086 }, { 222,-5086 }, { 223,-5086 }, - { 224,-5086 }, { 225,-5086 }, { 226,-5086 }, { 227,-5086 }, { 228,-5086 }, - { 229,-5086 }, { 230,-5086 }, { 231,-5086 }, { 232,-5086 }, { 233,-5086 }, - { 234,-5086 }, { 235,-5086 }, { 236,-5086 }, { 237,-5086 }, { 238,-5086 }, - { 239,-5086 }, { 240,-5086 }, { 241,-5086 }, { 242,-5086 }, { 243,-5086 }, - { 244,-5086 }, { 245,-5086 }, { 246,-5086 }, { 247,-5086 }, { 248,-5086 }, - { 249,-5086 }, { 250,-5086 }, { 251,-5086 }, { 252,-5086 }, { 253,-5086 }, - { 254,-5086 }, { 255,-5086 }, { 256,-5086 }, { 0, 37 }, { 0,8106 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 0, 37 }, { 0,8083 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 48,1263 }, { 49,1263 }, { 50,1263 }, - { 51,1263 }, { 52,1263 }, { 53,1263 }, { 54,1263 }, { 55,1263 }, - - { 56,1263 }, { 57,1263 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 65,1263 }, - { 66,1263 }, { 67,1263 }, { 68,1263 }, { 69,1263 }, { 70,1263 }, - { 48,-20508 }, { 49,-20508 }, { 50,-20508 }, { 51,-20508 }, { 52,-20508 }, - { 53,-20508 }, { 54,-20508 }, { 55,-20508 }, { 56,-20508 }, { 57,-20508 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 65,-20508 }, { 66,-20508 }, { 67,-20508 }, - { 68,-20508 }, { 69,-20508 }, { 70,-20508 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 97,1263 }, { 98,1263 }, { 99,1263 }, { 100,1263 }, - { 101,1263 }, { 102,1263 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 97,-20508 }, - { 98,-20508 }, { 99,-20508 }, { 100,-20508 }, { 101,-20508 }, { 102,-20508 }, - { 0, 9 }, { 0,7979 }, { 1,-4570 }, { 2,-4570 }, { 3,-4570 }, - { 4,-4570 }, { 5,-4570 }, { 6,-4570 }, { 7,-4570 }, { 8,-4570 }, - { 9,-4312 }, { 10,-4054 }, { 11,-4570 }, { 12,-4312 }, { 13,-4054 }, - { 14,-4570 }, { 15,-4570 }, { 16,-4570 }, { 17,-4570 }, { 18,-4570 }, - { 19,-4570 }, { 20,-4570 }, { 21,-4570 }, { 22,-4570 }, { 23,-4570 }, - { 24,-4570 }, { 25,-4570 }, { 26,-4570 }, { 27,-4570 }, { 28,-4570 }, - - { 29,-4570 }, { 30,-4570 }, { 31,-4570 }, { 32,-4312 }, { 33,-4570 }, - { 34,-4570 }, { 35,-4570 }, { 36,-4570 }, { 37,-4570 }, { 38,-4570 }, - { 39,-4570 }, { 40,-4570 }, { 41,-4570 }, { 42,-4570 }, { 43,-4570 }, - { 44,-4570 }, { 45, 0 }, { 46,-4570 }, { 47,-4570 }, { 48,-4570 }, - { 49,-4570 }, { 50,-4570 }, { 51,-4570 }, { 52,-4570 }, { 53,-4570 }, - { 54,-4570 }, { 55,-4570 }, { 56,-4570 }, { 57,-4570 }, { 58,-4570 }, - { 59,-4570 }, { 60,-4570 }, { 61,-4570 }, { 62,-4570 }, { 63,-4570 }, - { 64,-4570 }, { 65,-4570 }, { 66,-4570 }, { 67,-4570 }, { 68,-4570 }, - { 69,-4570 }, { 70,-4570 }, { 71,-4570 }, { 72,-4570 }, { 73,-4570 }, - { 74,-4570 }, { 75,-4570 }, { 76,-4570 }, { 77,-4570 }, { 78,-4570 }, - - { 79,-4570 }, { 80,-4570 }, { 81,-4570 }, { 82,-4570 }, { 83,-4570 }, - { 84,-4570 }, { 85,-4570 }, { 86,-4570 }, { 87,-4570 }, { 88,-4570 }, - { 89,-4570 }, { 90,-4570 }, { 91,-4570 }, { 92,-4570 }, { 93,-4570 }, - { 94,-4570 }, { 95,-4570 }, { 96,-4570 }, { 97,-4570 }, { 98,-4570 }, - { 99,-4570 }, { 100,-4570 }, { 101,-4570 }, { 102,-4570 }, { 103,-4570 }, - { 104,-4570 }, { 105,-4570 }, { 106,-4570 }, { 107,-4570 }, { 108,-4570 }, - { 109,-4570 }, { 110,-4570 }, { 111,-4570 }, { 112,-4570 }, { 113,-4570 }, - { 114,-4570 }, { 115,-4570 }, { 116,-4570 }, { 117,-4570 }, { 118,-4570 }, - { 119,-4570 }, { 120,-4570 }, { 121,-4570 }, { 122,-4570 }, { 123,-4570 }, - { 124,-4570 }, { 125,-4570 }, { 126,-4570 }, { 127,-4570 }, { 128,-4570 }, - - { 129,-4570 }, { 130,-4570 }, { 131,-4570 }, { 132,-4570 }, { 133,-4570 }, - { 134,-4570 }, { 135,-4570 }, { 136,-4570 }, { 137,-4570 }, { 138,-4570 }, - { 139,-4570 }, { 140,-4570 }, { 141,-4570 }, { 142,-4570 }, { 143,-4570 }, - { 144,-4570 }, { 145,-4570 }, { 146,-4570 }, { 147,-4570 }, { 148,-4570 }, - { 149,-4570 }, { 150,-4570 }, { 151,-4570 }, { 152,-4570 }, { 153,-4570 }, - { 154,-4570 }, { 155,-4570 }, { 156,-4570 }, { 157,-4570 }, { 158,-4570 }, - { 159,-4570 }, { 160,-4570 }, { 161,-4570 }, { 162,-4570 }, { 163,-4570 }, - { 164,-4570 }, { 165,-4570 }, { 166,-4570 }, { 167,-4570 }, { 168,-4570 }, - { 169,-4570 }, { 170,-4570 }, { 171,-4570 }, { 172,-4570 }, { 173,-4570 }, - { 174,-4570 }, { 175,-4570 }, { 176,-4570 }, { 177,-4570 }, { 178,-4570 }, - - { 179,-4570 }, { 180,-4570 }, { 181,-4570 }, { 182,-4570 }, { 183,-4570 }, - { 184,-4570 }, { 185,-4570 }, { 186,-4570 }, { 187,-4570 }, { 188,-4570 }, - { 189,-4570 }, { 190,-4570 }, { 191,-4570 }, { 192,-4570 }, { 193,-4570 }, - { 194,-4570 }, { 195,-4570 }, { 196,-4570 }, { 197,-4570 }, { 198,-4570 }, - { 199,-4570 }, { 200,-4570 }, { 201,-4570 }, { 202,-4570 }, { 203,-4570 }, - { 204,-4570 }, { 205,-4570 }, { 206,-4570 }, { 207,-4570 }, { 208,-4570 }, - { 209,-4570 }, { 210,-4570 }, { 211,-4570 }, { 212,-4570 }, { 213,-4570 }, - { 214,-4570 }, { 215,-4570 }, { 216,-4570 }, { 217,-4570 }, { 218,-4570 }, - { 219,-4570 }, { 220,-4570 }, { 221,-4570 }, { 222,-4570 }, { 223,-4570 }, - { 224,-4570 }, { 225,-4570 }, { 226,-4570 }, { 227,-4570 }, { 228,-4570 }, - - { 229,-4570 }, { 230,-4570 }, { 231,-4570 }, { 232,-4570 }, { 233,-4570 }, - { 234,-4570 }, { 235,-4570 }, { 236,-4570 }, { 237,-4570 }, { 238,-4570 }, - { 239,-4570 }, { 240,-4570 }, { 241,-4570 }, { 242,-4570 }, { 243,-4570 }, - { 244,-4570 }, { 245,-4570 }, { 246,-4570 }, { 247,-4570 }, { 248,-4570 }, - { 249,-4570 }, { 250,-4570 }, { 251,-4570 }, { 252,-4570 }, { 253,-4570 }, - { 254,-4570 }, { 255,-4570 }, { 256,-4570 }, { 0, 16 }, { 0,7721 }, - { 1,-3749 }, { 2,-3749 }, { 3,-3749 }, { 4,-3749 }, { 5,-3749 }, - { 6,-3749 }, { 7,-3749 }, { 8,-3749 }, { 9,-3491 }, { 10,-3233 }, - { 11,-3749 }, { 12,-3491 }, { 13,-3233 }, { 14,-3749 }, { 15,-3749 }, - { 16,-3749 }, { 17,-3749 }, { 18,-3749 }, { 19,-3749 }, { 20,-3749 }, - - { 21,-3749 }, { 22,-3749 }, { 23,-3749 }, { 24,-3749 }, { 25,-3749 }, - { 26,-3749 }, { 27,-3749 }, { 28,-3749 }, { 29,-3749 }, { 30,-3749 }, - { 31,-3749 }, { 32,-3491 }, { 33,-3749 }, { 34,-3749 }, { 35,-3749 }, - { 36,-3749 }, { 37,-3749 }, { 38,-3749 }, { 39,-3749 }, { 40,-3749 }, - { 41,-3749 }, { 42,-3749 }, { 43,-3749 }, { 44,-3749 }, { 45, 0 }, - { 46,-3749 }, { 47,-3749 }, { 48,-3749 }, { 49,-3749 }, { 50,-3749 }, - { 51,-3749 }, { 52,-3749 }, { 53,-3749 }, { 54,-3749 }, { 55,-3749 }, - { 56,-3749 }, { 57,-3749 }, { 58,-3749 }, { 59,-3749 }, { 60,-3749 }, - { 61,-3749 }, { 62,-3749 }, { 63,-3749 }, { 64,-3749 }, { 65,-3749 }, - { 66,-3749 }, { 67,-3749 }, { 68,-3749 }, { 69,-3749 }, { 70,-3749 }, - - { 71,-3749 }, { 72,-3749 }, { 73,-3749 }, { 74,-3749 }, { 75,-3749 }, - { 76,-3749 }, { 77,-3749 }, { 78,-3749 }, { 79,-3749 }, { 80,-3749 }, - { 81,-3749 }, { 82,-3749 }, { 83,-3749 }, { 84,-3749 }, { 85,-3749 }, - { 86,-3749 }, { 87,-3749 }, { 88,-3749 }, { 89,-3749 }, { 90,-3749 }, - { 91,-3749 }, { 92,-3749 }, { 93,-3749 }, { 94,-3749 }, { 95,-3749 }, - { 96,-3749 }, { 97,-3749 }, { 98,-3749 }, { 99,-3749 }, { 100,-3749 }, - { 101,-3749 }, { 102,-3749 }, { 103,-3749 }, { 104,-3749 }, { 105,-3749 }, - { 106,-3749 }, { 107,-3749 }, { 108,-3749 }, { 109,-3749 }, { 110,-3749 }, - { 111,-3749 }, { 112,-3749 }, { 113,-3749 }, { 114,-3749 }, { 115,-3749 }, - { 116,-3749 }, { 117,-3749 }, { 118,-3749 }, { 119,-3749 }, { 120,-3749 }, - - { 121,-3749 }, { 122,-3749 }, { 123,-3749 }, { 124,-3749 }, { 125,-3749 }, - { 126,-3749 }, { 127,-3749 }, { 128,-3749 }, { 129,-3749 }, { 130,-3749 }, - { 131,-3749 }, { 132,-3749 }, { 133,-3749 }, { 134,-3749 }, { 135,-3749 }, - { 136,-3749 }, { 137,-3749 }, { 138,-3749 }, { 139,-3749 }, { 140,-3749 }, - { 141,-3749 }, { 142,-3749 }, { 143,-3749 }, { 144,-3749 }, { 145,-3749 }, - { 146,-3749 }, { 147,-3749 }, { 148,-3749 }, { 149,-3749 }, { 150,-3749 }, - { 151,-3749 }, { 152,-3749 }, { 153,-3749 }, { 154,-3749 }, { 155,-3749 }, - { 156,-3749 }, { 157,-3749 }, { 158,-3749 }, { 159,-3749 }, { 160,-3749 }, - { 161,-3749 }, { 162,-3749 }, { 163,-3749 }, { 164,-3749 }, { 165,-3749 }, - { 166,-3749 }, { 167,-3749 }, { 168,-3749 }, { 169,-3749 }, { 170,-3749 }, - - { 171,-3749 }, { 172,-3749 }, { 173,-3749 }, { 174,-3749 }, { 175,-3749 }, - { 176,-3749 }, { 177,-3749 }, { 178,-3749 }, { 179,-3749 }, { 180,-3749 }, - { 181,-3749 }, { 182,-3749 }, { 183,-3749 }, { 184,-3749 }, { 185,-3749 }, - { 186,-3749 }, { 187,-3749 }, { 188,-3749 }, { 189,-3749 }, { 190,-3749 }, - { 191,-3749 }, { 192,-3749 }, { 193,-3749 }, { 194,-3749 }, { 195,-3749 }, - { 196,-3749 }, { 197,-3749 }, { 198,-3749 }, { 199,-3749 }, { 200,-3749 }, - { 201,-3749 }, { 202,-3749 }, { 203,-3749 }, { 204,-3749 }, { 205,-3749 }, - { 206,-3749 }, { 207,-3749 }, { 208,-3749 }, { 209,-3749 }, { 210,-3749 }, - { 211,-3749 }, { 212,-3749 }, { 213,-3749 }, { 214,-3749 }, { 215,-3749 }, - { 216,-3749 }, { 217,-3749 }, { 218,-3749 }, { 219,-3749 }, { 220,-3749 }, - - { 221,-3749 }, { 222,-3749 }, { 223,-3749 }, { 224,-3749 }, { 225,-3749 }, - { 226,-3749 }, { 227,-3749 }, { 228,-3749 }, { 229,-3749 }, { 230,-3749 }, - { 231,-3749 }, { 232,-3749 }, { 233,-3749 }, { 234,-3749 }, { 235,-3749 }, - { 236,-3749 }, { 237,-3749 }, { 238,-3749 }, { 239,-3749 }, { 240,-3749 }, - { 241,-3749 }, { 242,-3749 }, { 243,-3749 }, { 244,-3749 }, { 245,-3749 }, - { 246,-3749 }, { 247,-3749 }, { 248,-3749 }, { 249,-3749 }, { 250,-3749 }, - { 251,-3749 }, { 252,-3749 }, { 253,-3749 }, { 254,-3749 }, { 255,-3749 }, - { 256,-3749 }, { 0, 22 }, { 0,7463 }, { 1,-2928 }, { 2,-2928 }, - { 3,-2928 }, { 4,-2928 }, { 5,-2928 }, { 6,-2928 }, { 7,-2928 }, - { 8,-2928 }, { 9,-2670 }, { 10,-2412 }, { 11,-2928 }, { 12,-2670 }, - - { 13,-2412 }, { 14,-2928 }, { 15,-2928 }, { 16,-2928 }, { 17,-2928 }, - { 18,-2928 }, { 19,-2928 }, { 20,-2928 }, { 21,-2928 }, { 22,-2928 }, - { 23,-2928 }, { 24,-2928 }, { 25,-2928 }, { 26,-2928 }, { 27,-2928 }, - { 28,-2928 }, { 29,-2928 }, { 30,-2928 }, { 31,-2928 }, { 32,-2670 }, - { 33,-2928 }, { 34,-2928 }, { 35,-2928 }, { 36,-2928 }, { 37,-2928 }, - { 38,-2928 }, { 39,-2928 }, { 40,-2928 }, { 41,-2928 }, { 42,-2928 }, - { 43,-2928 }, { 44,-2928 }, { 45, 0 }, { 46,-2928 }, { 47,-2928 }, - { 48,-2928 }, { 49,-2928 }, { 50,-2928 }, { 51,-2928 }, { 52,-2928 }, - { 53,-2928 }, { 54,-2928 }, { 55,-2928 }, { 56,-2928 }, { 57,-2928 }, - { 58,-2928 }, { 59,-2928 }, { 60,-2928 }, { 61,-2928 }, { 62,-2928 }, - - { 63,-2928 }, { 64,-2928 }, { 65,-2928 }, { 66,-2928 }, { 67,-2928 }, - { 68,-2928 }, { 69,-2928 }, { 70,-2928 }, { 71,-2928 }, { 72,-2928 }, - { 73,-2928 }, { 74,-2928 }, { 75,-2928 }, { 76,-2928 }, { 77,-2928 }, - { 78,-2928 }, { 79,-2928 }, { 80,-2928 }, { 81,-2928 }, { 82,-2928 }, - { 83,-2928 }, { 84,-2928 }, { 85,-2928 }, { 86,-2928 }, { 87,-2928 }, - { 88,-2928 }, { 89,-2928 }, { 90,-2928 }, { 91,-2928 }, { 92,-2928 }, - { 93,-2928 }, { 94,-2928 }, { 95,-2928 }, { 96,-2928 }, { 97,-2928 }, - { 98,-2928 }, { 99,-2928 }, { 100,-2928 }, { 101,-2928 }, { 102,-2928 }, - { 103,-2928 }, { 104,-2928 }, { 105,-2928 }, { 106,-2928 }, { 107,-2928 }, - { 108,-2928 }, { 109,-2928 }, { 110,-2928 }, { 111,-2928 }, { 112,-2928 }, - - { 113,-2928 }, { 114,-2928 }, { 115,-2928 }, { 116,-2928 }, { 117,-2928 }, - { 118,-2928 }, { 119,-2928 }, { 120,-2928 }, { 121,-2928 }, { 122,-2928 }, - { 123,-2928 }, { 124,-2928 }, { 125,-2928 }, { 126,-2928 }, { 127,-2928 }, - { 128,-2928 }, { 129,-2928 }, { 130,-2928 }, { 131,-2928 }, { 132,-2928 }, - { 133,-2928 }, { 134,-2928 }, { 135,-2928 }, { 136,-2928 }, { 137,-2928 }, - { 138,-2928 }, { 139,-2928 }, { 140,-2928 }, { 141,-2928 }, { 142,-2928 }, - { 143,-2928 }, { 144,-2928 }, { 145,-2928 }, { 146,-2928 }, { 147,-2928 }, - { 148,-2928 }, { 149,-2928 }, { 150,-2928 }, { 151,-2928 }, { 152,-2928 }, - { 153,-2928 }, { 154,-2928 }, { 155,-2928 }, { 156,-2928 }, { 157,-2928 }, - { 158,-2928 }, { 159,-2928 }, { 160,-2928 }, { 161,-2928 }, { 162,-2928 }, - - { 163,-2928 }, { 164,-2928 }, { 165,-2928 }, { 166,-2928 }, { 167,-2928 }, - { 168,-2928 }, { 169,-2928 }, { 170,-2928 }, { 171,-2928 }, { 172,-2928 }, - { 173,-2928 }, { 174,-2928 }, { 175,-2928 }, { 176,-2928 }, { 177,-2928 }, - { 178,-2928 }, { 179,-2928 }, { 180,-2928 }, { 181,-2928 }, { 182,-2928 }, - { 183,-2928 }, { 184,-2928 }, { 185,-2928 }, { 186,-2928 }, { 187,-2928 }, - { 188,-2928 }, { 189,-2928 }, { 190,-2928 }, { 191,-2928 }, { 192,-2928 }, - { 193,-2928 }, { 194,-2928 }, { 195,-2928 }, { 196,-2928 }, { 197,-2928 }, - { 198,-2928 }, { 199,-2928 }, { 200,-2928 }, { 201,-2928 }, { 202,-2928 }, - { 203,-2928 }, { 204,-2928 }, { 205,-2928 }, { 206,-2928 }, { 207,-2928 }, - { 208,-2928 }, { 209,-2928 }, { 210,-2928 }, { 211,-2928 }, { 212,-2928 }, - - { 213,-2928 }, { 214,-2928 }, { 215,-2928 }, { 216,-2928 }, { 217,-2928 }, - { 218,-2928 }, { 219,-2928 }, { 220,-2928 }, { 221,-2928 }, { 222,-2928 }, - { 223,-2928 }, { 224,-2928 }, { 225,-2928 }, { 226,-2928 }, { 227,-2928 }, - { 228,-2928 }, { 229,-2928 }, { 230,-2928 }, { 231,-2928 }, { 232,-2928 }, - { 233,-2928 }, { 234,-2928 }, { 235,-2928 }, { 236,-2928 }, { 237,-2928 }, - { 238,-2928 }, { 239,-2928 }, { 240,-2928 }, { 241,-2928 }, { 242,-2928 }, - { 243,-2928 }, { 244,-2928 }, { 245,-2928 }, { 246,-2928 }, { 247,-2928 }, - { 248,-2928 }, { 249,-2928 }, { 250,-2928 }, { 251,-2928 }, { 252,-2928 }, - { 253,-2928 }, { 254,-2928 }, { 255,-2928 }, { 256,-2928 }, { 0, 37 }, - { 0,7205 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 48, 385 }, { 49, 385 }, - { 50, 385 }, { 51, 385 }, { 52, 385 }, { 53, 385 }, { 54, 385 }, - - { 55, 385 }, { 56, 385 }, { 57, 385 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 65, 385 }, { 66, 385 }, { 67, 385 }, { 68, 385 }, { 69, 385 }, - { 70, 385 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 97, 385 }, { 98, 385 }, { 99, 385 }, - { 100, 385 }, { 101, 385 }, { 102, 385 }, { 0, 24 }, { 0,7101 }, - - { 1,-2084 }, { 2,-2084 }, { 3,-2084 }, { 4,-2084 }, { 5,-2084 }, - { 6,-2084 }, { 7,-2084 }, { 8,-2084 }, { 9,-1826 }, { 10,-1568 }, - { 11,-2084 }, { 12,-1826 }, { 13,-1568 }, { 14,-2084 }, { 15,-2084 }, - { 16,-2084 }, { 17,-2084 }, { 18,-2084 }, { 19,-2084 }, { 20,-2084 }, - { 21,-2084 }, { 22,-2084 }, { 23,-2084 }, { 24,-2084 }, { 25,-2084 }, - { 26,-2084 }, { 27,-2084 }, { 28,-2084 }, { 29,-2084 }, { 30,-2084 }, - { 31,-2084 }, { 32,-1826 }, { 33,-2084 }, { 34,-2084 }, { 35,-2084 }, - { 36,-2084 }, { 37,-2084 }, { 38,-2084 }, { 39,-2084 }, { 40,-2084 }, - { 41,-2084 }, { 42,-2084 }, { 43,-2084 }, { 44,-2084 }, { 45, 0 }, - { 46,-2084 }, { 47,-2084 }, { 48,-2084 }, { 49,-2084 }, { 50,-2084 }, - - { 51,-2084 }, { 52,-2084 }, { 53,-2084 }, { 54,-2084 }, { 55,-2084 }, - { 56,-2084 }, { 57,-2084 }, { 58,-2084 }, { 59,-2084 }, { 60,-2084 }, - { 61,-2084 }, { 62,-2084 }, { 63,-2084 }, { 64,-2084 }, { 65,-2084 }, - { 66,-2084 }, { 67,-2084 }, { 68,-2084 }, { 69,-2084 }, { 70,-2084 }, - { 71,-2084 }, { 72,-2084 }, { 73,-2084 }, { 74,-2084 }, { 75,-2084 }, - { 76,-2084 }, { 77,-2084 }, { 78,-2084 }, { 79,-2084 }, { 80,-2084 }, - { 81,-2084 }, { 82,-2084 }, { 83,-2084 }, { 84,-2084 }, { 85,-2084 }, - { 86,-2084 }, { 87,-2084 }, { 88,-2084 }, { 89,-2084 }, { 90,-2084 }, - { 91,-2084 }, { 92,-2084 }, { 93,-2084 }, { 94,-2084 }, { 95,-2084 }, - { 96,-2084 }, { 97,-2084 }, { 98,-2084 }, { 99,-2084 }, { 100,-2084 }, - - { 101,-2084 }, { 102,-2084 }, { 103,-2084 }, { 104,-2084 }, { 105,-2084 }, - { 106,-2084 }, { 107,-2084 }, { 108,-2084 }, { 109,-2084 }, { 110,-2084 }, - { 111,-2084 }, { 112,-2084 }, { 113,-2084 }, { 114,-2084 }, { 115,-2084 }, - { 116,-2084 }, { 117,-2084 }, { 118,-2084 }, { 119,-2084 }, { 120,-2084 }, - { 121,-2084 }, { 122,-2084 }, { 123,-2084 }, { 124,-2084 }, { 125,-2084 }, - { 126,-2084 }, { 127,-2084 }, { 128,-2084 }, { 129,-2084 }, { 130,-2084 }, - { 131,-2084 }, { 132,-2084 }, { 133,-2084 }, { 134,-2084 }, { 135,-2084 }, - { 136,-2084 }, { 137,-2084 }, { 138,-2084 }, { 139,-2084 }, { 140,-2084 }, - { 141,-2084 }, { 142,-2084 }, { 143,-2084 }, { 144,-2084 }, { 145,-2084 }, - { 146,-2084 }, { 147,-2084 }, { 148,-2084 }, { 149,-2084 }, { 150,-2084 }, - - { 151,-2084 }, { 152,-2084 }, { 153,-2084 }, { 154,-2084 }, { 155,-2084 }, - { 156,-2084 }, { 157,-2084 }, { 158,-2084 }, { 159,-2084 }, { 160,-2084 }, - { 161,-2084 }, { 162,-2084 }, { 163,-2084 }, { 164,-2084 }, { 165,-2084 }, - { 166,-2084 }, { 167,-2084 }, { 168,-2084 }, { 169,-2084 }, { 170,-2084 }, - { 171,-2084 }, { 172,-2084 }, { 173,-2084 }, { 174,-2084 }, { 175,-2084 }, - { 176,-2084 }, { 177,-2084 }, { 178,-2084 }, { 179,-2084 }, { 180,-2084 }, - { 181,-2084 }, { 182,-2084 }, { 183,-2084 }, { 184,-2084 }, { 185,-2084 }, - { 186,-2084 }, { 187,-2084 }, { 188,-2084 }, { 189,-2084 }, { 190,-2084 }, - { 191,-2084 }, { 192,-2084 }, { 193,-2084 }, { 194,-2084 }, { 195,-2084 }, - { 196,-2084 }, { 197,-2084 }, { 198,-2084 }, { 199,-2084 }, { 200,-2084 }, - - { 201,-2084 }, { 202,-2084 }, { 203,-2084 }, { 204,-2084 }, { 205,-2084 }, - { 206,-2084 }, { 207,-2084 }, { 208,-2084 }, { 209,-2084 }, { 210,-2084 }, - { 211,-2084 }, { 212,-2084 }, { 213,-2084 }, { 214,-2084 }, { 215,-2084 }, - { 216,-2084 }, { 217,-2084 }, { 218,-2084 }, { 219,-2084 }, { 220,-2084 }, - { 221,-2084 }, { 222,-2084 }, { 223,-2084 }, { 224,-2084 }, { 225,-2084 }, - { 226,-2084 }, { 227,-2084 }, { 228,-2084 }, { 229,-2084 }, { 230,-2084 }, - { 231,-2084 }, { 232,-2084 }, { 233,-2084 }, { 234,-2084 }, { 235,-2084 }, - { 236,-2084 }, { 237,-2084 }, { 238,-2084 }, { 239,-2084 }, { 240,-2084 }, - { 241,-2084 }, { 242,-2084 }, { 243,-2084 }, { 244,-2084 }, { 245,-2084 }, - { 246,-2084 }, { 247,-2084 }, { 248,-2084 }, { 249,-2084 }, { 250,-2084 }, - - { 251,-2084 }, { 252,-2084 }, { 253,-2084 }, { 254,-2084 }, { 255,-2084 }, - { 256,-2084 }, { 0, 37 }, { 0,6843 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 37 }, - { 0,6820 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 48, 136 }, { 49, 136 }, { 50, 136 }, { 51, 136 }, { 52, 136 }, - { 53, 136 }, { 54, 136 }, { 55, 136 }, { 56, 136 }, { 57, 136 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 65, 136 }, { 66, 136 }, { 67, 136 }, - { 68, 136 }, { 69, 136 }, { 70, 136 }, { 48, 137 }, { 49, 137 }, - { 50, 137 }, { 51, 137 }, { 52, 137 }, { 53, 137 }, { 54, 137 }, - { 55, 137 }, { 56, 137 }, { 57, 137 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 65, 137 }, { 66, 137 }, { 67, 137 }, { 68, 137 }, { 69, 137 }, - - { 70, 137 }, { 0, 55 }, { 0,6748 }, { 0, 0 }, { 97, 136 }, - { 98, 136 }, { 99, 136 }, { 100, 136 }, { 101, 136 }, { 102, 136 }, - { 0, 0 }, { 9, 137 }, { 10, 137 }, { 0, 0 }, { 12, 137 }, - { 13, 137 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 0, 28 }, { 0,6724 }, { 97, 137 }, { 98, 137 }, { 99, 137 }, - { 100, 137 }, { 101, 137 }, { 102, 137 }, { 0, 0 }, { 32, 137 }, - { 9, 418 }, { 10, 418 }, { 0, 0 }, { 12, 418 }, { 13, 418 }, - { 0, 0 }, { 39, 184 }, { 0, 37 }, { 0,6707 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 45,-21611 }, { 0, 0 }, { 0, 0 }, - - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 32, 418 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 39, 465 }, { 0, 37 }, { 0,6683 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 45,-21624 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 48, 706 }, { 49, 706 }, { 50, 706 }, { 51, 706 }, - { 52, 706 }, { 53, 706 }, { 54, 706 }, { 55, 706 }, { 56, 706 }, - - { 57, 706 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 65, 706 }, { 66, 706 }, - { 67, 706 }, { 68, 706 }, { 69, 706 }, { 70, 706 }, { 0, 0 }, - { 48, 705 }, { 49, 705 }, { 50, 705 }, { 51, 705 }, { 52, 705 }, - { 53, 705 }, { 54, 705 }, { 55, 705 }, { 56, 705 }, { 57, 705 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 65, 705 }, { 66, 705 }, { 67, 705 }, - { 68, 705 }, { 69, 705 }, { 70, 705 }, { 0, 55 }, { 0,6611 }, - { 97, 706 }, { 98, 706 }, { 99, 706 }, { 100, 706 }, { 101, 706 }, - { 102, 706 }, { 0, 0 }, { 0, 0 }, { 9, 0 }, { 10, 0 }, - - { 0, 0 }, { 12, 0 }, { 13, 0 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 97, 705 }, - { 98, 705 }, { 99, 705 }, { 100, 705 }, { 101, 705 }, { 102, 705 }, - { 0, 0 }, { 32, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 39, 47 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 45,-21748 }, - { 0, 55 }, { 0,6564 }, { 1,-21777 }, { 2,-21777 }, { 3,-21777 }, - { 4,-21777 }, { 5,-21777 }, { 6,-21777 }, { 7,-21777 }, { 8,-21777 }, - { 9,-21777 }, { 10,-21777 }, { 11,-21777 }, { 12,-21777 }, { 13,-21777 }, - - { 14,-21777 }, { 15,-21777 }, { 16,-21777 }, { 17,-21777 }, { 18,-21777 }, - { 19,-21777 }, { 20,-21777 }, { 21,-21777 }, { 22,-21777 }, { 23,-21777 }, - { 24,-21777 }, { 25,-21777 }, { 26,-21777 }, { 27,-21777 }, { 28,-21777 }, - { 29,-21777 }, { 30,-21777 }, { 31,-21777 }, { 32,-21777 }, { 33,-21777 }, - { 34,-21777 }, { 35,-21777 }, { 36,-21777 }, { 37,-21777 }, { 38,-21777 }, - { 0, 0 }, { 40,-21777 }, { 41,-21777 }, { 42,-21777 }, { 43,-21777 }, - { 44,-21777 }, { 45,-21777 }, { 46,-21777 }, { 47,-21777 }, { 48,-21777 }, - { 49,-21777 }, { 50,-21777 }, { 51,-21777 }, { 52,-21777 }, { 53,-21777 }, - { 54,-21777 }, { 55,-21777 }, { 56,-21777 }, { 57,-21777 }, { 58,-21777 }, - { 59,-21777 }, { 60,-21777 }, { 61,-21777 }, { 62,-21777 }, { 63,-21777 }, - - { 64,-21777 }, { 65,-21777 }, { 66,-21777 }, { 67,-21777 }, { 68,-21777 }, - { 69,-21777 }, { 70,-21777 }, { 71,-21777 }, { 72,-21777 }, { 73,-21777 }, - { 74,-21777 }, { 75,-21777 }, { 76,-21777 }, { 77,-21777 }, { 78,-21777 }, - { 79,-21777 }, { 80,-21777 }, { 81,-21777 }, { 82,-21777 }, { 83,-21777 }, - { 84,-21777 }, { 85,-21777 }, { 86,-21777 }, { 87,-21777 }, { 88,-21777 }, - { 89,-21777 }, { 90,-21777 }, { 91,-21777 }, { 92,-21777 }, { 93,-21777 }, - { 94,-21777 }, { 95,-21777 }, { 96,-21777 }, { 97,-21777 }, { 98,-21777 }, - { 99,-21777 }, { 100,-21777 }, { 101,-21777 }, { 102,-21777 }, { 103,-21777 }, - { 104,-21777 }, { 105,-21777 }, { 106,-21777 }, { 107,-21777 }, { 108,-21777 }, - { 109,-21777 }, { 110,-21777 }, { 111,-21777 }, { 112,-21777 }, { 113,-21777 }, - - { 114,-21777 }, { 115,-21777 }, { 116,-21777 }, { 117,-21777 }, { 118,-21777 }, - { 119,-21777 }, { 120,-21777 }, { 121,-21777 }, { 122,-21777 }, { 123,-21777 }, - { 124,-21777 }, { 125,-21777 }, { 126,-21777 }, { 127,-21777 }, { 128,-21777 }, - { 129,-21777 }, { 130,-21777 }, { 131,-21777 }, { 132,-21777 }, { 133,-21777 }, - { 134,-21777 }, { 135,-21777 }, { 136,-21777 }, { 137,-21777 }, { 138,-21777 }, - { 139,-21777 }, { 140,-21777 }, { 141,-21777 }, { 142,-21777 }, { 143,-21777 }, - { 144,-21777 }, { 145,-21777 }, { 146,-21777 }, { 147,-21777 }, { 148,-21777 }, - { 149,-21777 }, { 150,-21777 }, { 151,-21777 }, { 152,-21777 }, { 153,-21777 }, - { 154,-21777 }, { 155,-21777 }, { 156,-21777 }, { 157,-21777 }, { 158,-21777 }, - { 159,-21777 }, { 160,-21777 }, { 161,-21777 }, { 162,-21777 }, { 163,-21777 }, - - { 164,-21777 }, { 165,-21777 }, { 166,-21777 }, { 167,-21777 }, { 168,-21777 }, - { 169,-21777 }, { 170,-21777 }, { 171,-21777 }, { 172,-21777 }, { 173,-21777 }, - { 174,-21777 }, { 175,-21777 }, { 176,-21777 }, { 177,-21777 }, { 178,-21777 }, - { 179,-21777 }, { 180,-21777 }, { 181,-21777 }, { 182,-21777 }, { 183,-21777 }, - { 184,-21777 }, { 185,-21777 }, { 186,-21777 }, { 187,-21777 }, { 188,-21777 }, - { 189,-21777 }, { 190,-21777 }, { 191,-21777 }, { 192,-21777 }, { 193,-21777 }, - { 194,-21777 }, { 195,-21777 }, { 196,-21777 }, { 197,-21777 }, { 198,-21777 }, - { 199,-21777 }, { 200,-21777 }, { 201,-21777 }, { 202,-21777 }, { 203,-21777 }, - { 204,-21777 }, { 205,-21777 }, { 206,-21777 }, { 207,-21777 }, { 208,-21777 }, - { 209,-21777 }, { 210,-21777 }, { 211,-21777 }, { 212,-21777 }, { 213,-21777 }, - - { 214,-21777 }, { 215,-21777 }, { 216,-21777 }, { 217,-21777 }, { 218,-21777 }, - { 219,-21777 }, { 220,-21777 }, { 221,-21777 }, { 222,-21777 }, { 223,-21777 }, - { 224,-21777 }, { 225,-21777 }, { 226,-21777 }, { 227,-21777 }, { 228,-21777 }, - { 229,-21777 }, { 230,-21777 }, { 231,-21777 }, { 232,-21777 }, { 233,-21777 }, - { 234,-21777 }, { 235,-21777 }, { 236,-21777 }, { 237,-21777 }, { 238,-21777 }, - { 239,-21777 }, { 240,-21777 }, { 241,-21777 }, { 242,-21777 }, { 243,-21777 }, - { 244,-21777 }, { 245,-21777 }, { 246,-21777 }, { 247,-21777 }, { 248,-21777 }, - { 249,-21777 }, { 250,-21777 }, { 251,-21777 }, { 252,-21777 }, { 253,-21777 }, - { 254,-21777 }, { 255,-21777 }, { 256,-21777 }, { 0, 28 }, { 0,6306 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 9, 0 }, { 10, 0 }, - { 0, 0 }, { 12, 0 }, { 13, 0 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 32, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 39, 47 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 45,-22042 }, - { 0, 28 }, { 0,6259 }, { 1,-22080 }, { 2,-22080 }, { 3,-22080 }, - { 4,-22080 }, { 5,-22080 }, { 6,-22080 }, { 7,-22080 }, { 8,-22080 }, - - { 9,-22080 }, { 10,-22080 }, { 11,-22080 }, { 12,-22080 }, { 13,-22080 }, - { 14,-22080 }, { 15,-22080 }, { 16,-22080 }, { 17,-22080 }, { 18,-22080 }, - { 19,-22080 }, { 20,-22080 }, { 21,-22080 }, { 22,-22080 }, { 23,-22080 }, - { 24,-22080 }, { 25,-22080 }, { 26,-22080 }, { 27,-22080 }, { 28,-22080 }, - { 29,-22080 }, { 30,-22080 }, { 31,-22080 }, { 32,-22080 }, { 33,-22080 }, - { 34,-22080 }, { 35,-22080 }, { 36,-22080 }, { 37,-22080 }, { 38,-22080 }, - { 0, 0 }, { 40,-22080 }, { 41,-22080 }, { 42,-22080 }, { 43,-22080 }, - { 44,-22080 }, { 45,-22080 }, { 46,-22080 }, { 47,-22080 }, { 48,-22080 }, - { 49,-22080 }, { 50,-22080 }, { 51,-22080 }, { 52,-22080 }, { 53,-22080 }, - { 54,-22080 }, { 55,-22080 }, { 56,-22080 }, { 57,-22080 }, { 58,-22080 }, - - { 59,-22080 }, { 60,-22080 }, { 61,-22080 }, { 62,-22080 }, { 63,-22080 }, - { 64,-22080 }, { 65,-22080 }, { 66,-22080 }, { 67,-22080 }, { 68,-22080 }, - { 69,-22080 }, { 70,-22080 }, { 71,-22080 }, { 72,-22080 }, { 73,-22080 }, - { 74,-22080 }, { 75,-22080 }, { 76,-22080 }, { 77,-22080 }, { 78,-22080 }, - { 79,-22080 }, { 80,-22080 }, { 81,-22080 }, { 82,-22080 }, { 83,-22080 }, - { 84,-22080 }, { 85,-22080 }, { 86,-22080 }, { 87,-22080 }, { 88,-22080 }, - { 89,-22080 }, { 90,-22080 }, { 91,-22080 }, { 92,-22080 }, { 93,-22080 }, - { 94,-22080 }, { 95,-22080 }, { 96,-22080 }, { 97,-22080 }, { 98,-22080 }, - { 99,-22080 }, { 100,-22080 }, { 101,-22080 }, { 102,-22080 }, { 103,-22080 }, - { 104,-22080 }, { 105,-22080 }, { 106,-22080 }, { 107,-22080 }, { 108,-22080 }, - - { 109,-22080 }, { 110,-22080 }, { 111,-22080 }, { 112,-22080 }, { 113,-22080 }, - { 114,-22080 }, { 115,-22080 }, { 116,-22080 }, { 117,-22080 }, { 118,-22080 }, - { 119,-22080 }, { 120,-22080 }, { 121,-22080 }, { 122,-22080 }, { 123,-22080 }, - { 124,-22080 }, { 125,-22080 }, { 126,-22080 }, { 127,-22080 }, { 128,-22080 }, - { 129,-22080 }, { 130,-22080 }, { 131,-22080 }, { 132,-22080 }, { 133,-22080 }, - { 134,-22080 }, { 135,-22080 }, { 136,-22080 }, { 137,-22080 }, { 138,-22080 }, - { 139,-22080 }, { 140,-22080 }, { 141,-22080 }, { 142,-22080 }, { 143,-22080 }, - { 144,-22080 }, { 145,-22080 }, { 146,-22080 }, { 147,-22080 }, { 148,-22080 }, - { 149,-22080 }, { 150,-22080 }, { 151,-22080 }, { 152,-22080 }, { 153,-22080 }, - { 154,-22080 }, { 155,-22080 }, { 156,-22080 }, { 157,-22080 }, { 158,-22080 }, - - { 159,-22080 }, { 160,-22080 }, { 161,-22080 }, { 162,-22080 }, { 163,-22080 }, - { 164,-22080 }, { 165,-22080 }, { 166,-22080 }, { 167,-22080 }, { 168,-22080 }, - { 169,-22080 }, { 170,-22080 }, { 171,-22080 }, { 172,-22080 }, { 173,-22080 }, - { 174,-22080 }, { 175,-22080 }, { 176,-22080 }, { 177,-22080 }, { 178,-22080 }, - { 179,-22080 }, { 180,-22080 }, { 181,-22080 }, { 182,-22080 }, { 183,-22080 }, - { 184,-22080 }, { 185,-22080 }, { 186,-22080 }, { 187,-22080 }, { 188,-22080 }, - { 189,-22080 }, { 190,-22080 }, { 191,-22080 }, { 192,-22080 }, { 193,-22080 }, - { 194,-22080 }, { 195,-22080 }, { 196,-22080 }, { 197,-22080 }, { 198,-22080 }, - { 199,-22080 }, { 200,-22080 }, { 201,-22080 }, { 202,-22080 }, { 203,-22080 }, - { 204,-22080 }, { 205,-22080 }, { 206,-22080 }, { 207,-22080 }, { 208,-22080 }, - - { 209,-22080 }, { 210,-22080 }, { 211,-22080 }, { 212,-22080 }, { 213,-22080 }, - { 214,-22080 }, { 215,-22080 }, { 216,-22080 }, { 217,-22080 }, { 218,-22080 }, - { 219,-22080 }, { 220,-22080 }, { 221,-22080 }, { 222,-22080 }, { 223,-22080 }, - { 224,-22080 }, { 225,-22080 }, { 226,-22080 }, { 227,-22080 }, { 228,-22080 }, - { 229,-22080 }, { 230,-22080 }, { 231,-22080 }, { 232,-22080 }, { 233,-22080 }, - { 234,-22080 }, { 235,-22080 }, { 236,-22080 }, { 237,-22080 }, { 238,-22080 }, - { 239,-22080 }, { 240,-22080 }, { 241,-22080 }, { 242,-22080 }, { 243,-22080 }, - { 244,-22080 }, { 245,-22080 }, { 246,-22080 }, { 247,-22080 }, { 248,-22080 }, - { 249,-22080 }, { 250,-22080 }, { 251,-22080 }, { 252,-22080 }, { 253,-22080 }, - { 254,-22080 }, { 255,-22080 }, { 256,-22080 }, { 0, 37 }, { 0,6001 }, - - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 0, 37 }, { 0,5978 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 48, 643 }, { 49, 643 }, { 50, 643 }, - - { 51, 643 }, { 52, 643 }, { 53, 643 }, { 54, 643 }, { 55, 643 }, - { 56, 643 }, { 57, 643 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 65, 643 }, - { 66, 643 }, { 67, 643 }, { 68, 643 }, { 69, 643 }, { 70, 643 }, - { 48,-22625 }, { 49,-22625 }, { 50,-22625 }, { 51,-22625 }, { 52,-22625 }, - { 53,-22625 }, { 54,-22625 }, { 55,-22625 }, { 56,-22625 }, { 57,-22625 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 65,-22625 }, { 66,-22625 }, { 67,-22625 }, - { 68,-22625 }, { 69,-22625 }, { 70,-22625 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 97, 643 }, { 98, 643 }, { 99, 643 }, { 100, 643 }, - - { 101, 643 }, { 102, 643 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 97,-22625 }, - { 98,-22625 }, { 99,-22625 }, { 100,-22625 }, { 101,-22625 }, { 102,-22625 }, - { 0, 55 }, { 0,5874 }, { 1, 620 }, { 2, 620 }, { 3, 620 }, - { 4, 620 }, { 5, 620 }, { 6, 620 }, { 7, 620 }, { 8, 620 }, - { 9, 878 }, { 10,-737 }, { 11, 620 }, { 12, 878 }, { 13,-737 }, - { 14, 620 }, { 15, 620 }, { 16, 620 }, { 17, 620 }, { 18, 620 }, - { 19, 620 }, { 20, 620 }, { 21, 620 }, { 22, 620 }, { 23, 620 }, - - { 24, 620 }, { 25, 620 }, { 26, 620 }, { 27, 620 }, { 28, 620 }, - { 29, 620 }, { 30, 620 }, { 31, 620 }, { 32, 878 }, { 33, 620 }, - { 34, 620 }, { 35, 620 }, { 36, 620 }, { 37, 620 }, { 38, 620 }, - { 39,1136 }, { 40, 620 }, { 41, 620 }, { 42, 620 }, { 43, 620 }, - { 44, 620 }, { 45,1394 }, { 46, 620 }, { 47, 620 }, { 48, 620 }, - { 49, 620 }, { 50, 620 }, { 51, 620 }, { 52, 620 }, { 53, 620 }, - { 54, 620 }, { 55, 620 }, { 56, 620 }, { 57, 620 }, { 58, 620 }, - { 59, 620 }, { 60, 620 }, { 61, 620 }, { 62, 620 }, { 63, 620 }, - { 64, 620 }, { 65, 620 }, { 66, 620 }, { 67, 620 }, { 68, 620 }, - { 69, 620 }, { 70, 620 }, { 71, 620 }, { 72, 620 }, { 73, 620 }, - - { 74, 620 }, { 75, 620 }, { 76, 620 }, { 77, 620 }, { 78, 620 }, - { 79, 620 }, { 80, 620 }, { 81, 620 }, { 82, 620 }, { 83, 620 }, - { 84, 620 }, { 85, 620 }, { 86, 620 }, { 87, 620 }, { 88, 620 }, - { 89, 620 }, { 90, 620 }, { 91, 620 }, { 92, 620 }, { 93, 620 }, - { 94, 620 }, { 95, 620 }, { 96, 620 }, { 97, 620 }, { 98, 620 }, - { 99, 620 }, { 100, 620 }, { 101, 620 }, { 102, 620 }, { 103, 620 }, - { 104, 620 }, { 105, 620 }, { 106, 620 }, { 107, 620 }, { 108, 620 }, - { 109, 620 }, { 110, 620 }, { 111, 620 }, { 112, 620 }, { 113, 620 }, - { 114, 620 }, { 115, 620 }, { 116, 620 }, { 117, 620 }, { 118, 620 }, - { 119, 620 }, { 120, 620 }, { 121, 620 }, { 122, 620 }, { 123, 620 }, - - { 124, 620 }, { 125, 620 }, { 126, 620 }, { 127, 620 }, { 128, 620 }, - { 129, 620 }, { 130, 620 }, { 131, 620 }, { 132, 620 }, { 133, 620 }, - { 134, 620 }, { 135, 620 }, { 136, 620 }, { 137, 620 }, { 138, 620 }, - { 139, 620 }, { 140, 620 }, { 141, 620 }, { 142, 620 }, { 143, 620 }, - { 144, 620 }, { 145, 620 }, { 146, 620 }, { 147, 620 }, { 148, 620 }, - { 149, 620 }, { 150, 620 }, { 151, 620 }, { 152, 620 }, { 153, 620 }, - { 154, 620 }, { 155, 620 }, { 156, 620 }, { 157, 620 }, { 158, 620 }, - { 159, 620 }, { 160, 620 }, { 161, 620 }, { 162, 620 }, { 163, 620 }, - { 164, 620 }, { 165, 620 }, { 166, 620 }, { 167, 620 }, { 168, 620 }, - { 169, 620 }, { 170, 620 }, { 171, 620 }, { 172, 620 }, { 173, 620 }, - - { 174, 620 }, { 175, 620 }, { 176, 620 }, { 177, 620 }, { 178, 620 }, - { 179, 620 }, { 180, 620 }, { 181, 620 }, { 182, 620 }, { 183, 620 }, - { 184, 620 }, { 185, 620 }, { 186, 620 }, { 187, 620 }, { 188, 620 }, - { 189, 620 }, { 190, 620 }, { 191, 620 }, { 192, 620 }, { 193, 620 }, - { 194, 620 }, { 195, 620 }, { 196, 620 }, { 197, 620 }, { 198, 620 }, - { 199, 620 }, { 200, 620 }, { 201, 620 }, { 202, 620 }, { 203, 620 }, - { 204, 620 }, { 205, 620 }, { 206, 620 }, { 207, 620 }, { 208, 620 }, - { 209, 620 }, { 210, 620 }, { 211, 620 }, { 212, 620 }, { 213, 620 }, - { 214, 620 }, { 215, 620 }, { 216, 620 }, { 217, 620 }, { 218, 620 }, - { 219, 620 }, { 220, 620 }, { 221, 620 }, { 222, 620 }, { 223, 620 }, - - { 224, 620 }, { 225, 620 }, { 226, 620 }, { 227, 620 }, { 228, 620 }, - { 229, 620 }, { 230, 620 }, { 231, 620 }, { 232, 620 }, { 233, 620 }, - { 234, 620 }, { 235, 620 }, { 236, 620 }, { 237, 620 }, { 238, 620 }, - { 239, 620 }, { 240, 620 }, { 241, 620 }, { 242, 620 }, { 243, 620 }, - { 244, 620 }, { 245, 620 }, { 246, 620 }, { 247, 620 }, { 248, 620 }, - { 249, 620 }, { 250, 620 }, { 251, 620 }, { 252, 620 }, { 253, 620 }, - { 254, 620 }, { 255, 620 }, { 256, 620 }, { 0, 28 }, { 0,5616 }, - { 1,1394 }, { 2,1394 }, { 3,1394 }, { 4,1394 }, { 5,1394 }, - { 6,1394 }, { 7,1394 }, { 8,1394 }, { 9,1652 }, { 10,-690 }, - { 11,1394 }, { 12,1652 }, { 13,-690 }, { 14,1394 }, { 15,1394 }, - - { 16,1394 }, { 17,1394 }, { 18,1394 }, { 19,1394 }, { 20,1394 }, - { 21,1394 }, { 22,1394 }, { 23,1394 }, { 24,1394 }, { 25,1394 }, - { 26,1394 }, { 27,1394 }, { 28,1394 }, { 29,1394 }, { 30,1394 }, - { 31,1394 }, { 32,1652 }, { 33,1394 }, { 34,1394 }, { 35,1394 }, - { 36,1394 }, { 37,1394 }, { 38,1394 }, { 39,1910 }, { 40,1394 }, - { 41,1394 }, { 42,1394 }, { 43,1394 }, { 44,1394 }, { 45,2168 }, - { 46,1394 }, { 47,1394 }, { 48,1394 }, { 49,1394 }, { 50,1394 }, - { 51,1394 }, { 52,1394 }, { 53,1394 }, { 54,1394 }, { 55,1394 }, - { 56,1394 }, { 57,1394 }, { 58,1394 }, { 59,1394 }, { 60,1394 }, - { 61,1394 }, { 62,1394 }, { 63,1394 }, { 64,1394 }, { 65,1394 }, - - { 66,1394 }, { 67,1394 }, { 68,1394 }, { 69,1394 }, { 70,1394 }, - { 71,1394 }, { 72,1394 }, { 73,1394 }, { 74,1394 }, { 75,1394 }, - { 76,1394 }, { 77,1394 }, { 78,1394 }, { 79,1394 }, { 80,1394 }, - { 81,1394 }, { 82,1394 }, { 83,1394 }, { 84,1394 }, { 85,1394 }, - { 86,1394 }, { 87,1394 }, { 88,1394 }, { 89,1394 }, { 90,1394 }, - { 91,1394 }, { 92,1394 }, { 93,1394 }, { 94,1394 }, { 95,1394 }, - { 96,1394 }, { 97,1394 }, { 98,1394 }, { 99,1394 }, { 100,1394 }, - { 101,1394 }, { 102,1394 }, { 103,1394 }, { 104,1394 }, { 105,1394 }, - { 106,1394 }, { 107,1394 }, { 108,1394 }, { 109,1394 }, { 110,1394 }, - { 111,1394 }, { 112,1394 }, { 113,1394 }, { 114,1394 }, { 115,1394 }, - - { 116,1394 }, { 117,1394 }, { 118,1394 }, { 119,1394 }, { 120,1394 }, - { 121,1394 }, { 122,1394 }, { 123,1394 }, { 124,1394 }, { 125,1394 }, - { 126,1394 }, { 127,1394 }, { 128,1394 }, { 129,1394 }, { 130,1394 }, - { 131,1394 }, { 132,1394 }, { 133,1394 }, { 134,1394 }, { 135,1394 }, - { 136,1394 }, { 137,1394 }, { 138,1394 }, { 139,1394 }, { 140,1394 }, - { 141,1394 }, { 142,1394 }, { 143,1394 }, { 144,1394 }, { 145,1394 }, - { 146,1394 }, { 147,1394 }, { 148,1394 }, { 149,1394 }, { 150,1394 }, - { 151,1394 }, { 152,1394 }, { 153,1394 }, { 154,1394 }, { 155,1394 }, - { 156,1394 }, { 157,1394 }, { 158,1394 }, { 159,1394 }, { 160,1394 }, - { 161,1394 }, { 162,1394 }, { 163,1394 }, { 164,1394 }, { 165,1394 }, - - { 166,1394 }, { 167,1394 }, { 168,1394 }, { 169,1394 }, { 170,1394 }, - { 171,1394 }, { 172,1394 }, { 173,1394 }, { 174,1394 }, { 175,1394 }, - { 176,1394 }, { 177,1394 }, { 178,1394 }, { 179,1394 }, { 180,1394 }, - { 181,1394 }, { 182,1394 }, { 183,1394 }, { 184,1394 }, { 185,1394 }, - { 186,1394 }, { 187,1394 }, { 188,1394 }, { 189,1394 }, { 190,1394 }, - { 191,1394 }, { 192,1394 }, { 193,1394 }, { 194,1394 }, { 195,1394 }, - { 196,1394 }, { 197,1394 }, { 198,1394 }, { 199,1394 }, { 200,1394 }, - { 201,1394 }, { 202,1394 }, { 203,1394 }, { 204,1394 }, { 205,1394 }, - { 206,1394 }, { 207,1394 }, { 208,1394 }, { 209,1394 }, { 210,1394 }, - { 211,1394 }, { 212,1394 }, { 213,1394 }, { 214,1394 }, { 215,1394 }, - - { 216,1394 }, { 217,1394 }, { 218,1394 }, { 219,1394 }, { 220,1394 }, - { 221,1394 }, { 222,1394 }, { 223,1394 }, { 224,1394 }, { 225,1394 }, - { 226,1394 }, { 227,1394 }, { 228,1394 }, { 229,1394 }, { 230,1394 }, - { 231,1394 }, { 232,1394 }, { 233,1394 }, { 234,1394 }, { 235,1394 }, - { 236,1394 }, { 237,1394 }, { 238,1394 }, { 239,1394 }, { 240,1394 }, - { 241,1394 }, { 242,1394 }, { 243,1394 }, { 244,1394 }, { 245,1394 }, - { 246,1394 }, { 247,1394 }, { 248,1394 }, { 249,1394 }, { 250,1394 }, - { 251,1394 }, { 252,1394 }, { 253,1394 }, { 254,1394 }, { 255,1394 }, - { 256,1394 }, { 0, 37 }, { 0,5358 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 48,-23233 }, { 49,-23233 }, { 50,-23233 }, { 51,-23233 }, { 52,-23233 }, - { 53,-23233 }, { 54,-23233 }, { 55,-23233 }, { 56,-23233 }, { 57,-23233 }, - - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 65,-23233 }, { 66,-23233 }, { 67,-23233 }, - { 68,-23233 }, { 69,-23233 }, { 70,-23233 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 97,-23233 }, - { 98,-23233 }, { 99,-23233 }, { 100,-23233 }, { 101,-23233 }, { 102,-23233 }, - { 0, 55 }, { 0,5254 }, { 1, 0 }, { 2, 0 }, { 3, 0 }, - - { 4, 0 }, { 5, 0 }, { 6, 0 }, { 7, 0 }, { 8, 0 }, - { 9, 258 }, { 10,-1357 }, { 11, 0 }, { 12, 258 }, { 13,-1357 }, - { 14, 0 }, { 15, 0 }, { 16, 0 }, { 17, 0 }, { 18, 0 }, - { 19, 0 }, { 20, 0 }, { 21, 0 }, { 22, 0 }, { 23, 0 }, - { 24, 0 }, { 25, 0 }, { 26, 0 }, { 27, 0 }, { 28, 0 }, - { 29, 0 }, { 30, 0 }, { 31, 0 }, { 32, 258 }, { 33, 0 }, - { 34, 0 }, { 35, 0 }, { 36, 0 }, { 37, 0 }, { 38, 0 }, - { 39, 516 }, { 40, 0 }, { 41, 0 }, { 42, 0 }, { 43, 0 }, - { 44, 0 }, { 45, 774 }, { 46, 0 }, { 47, 0 }, { 48, 0 }, - { 49, 0 }, { 50, 0 }, { 51, 0 }, { 52, 0 }, { 53, 0 }, - - { 54, 0 }, { 55, 0 }, { 56, 0 }, { 57, 0 }, { 58, 0 }, - { 59, 0 }, { 60, 0 }, { 61, 0 }, { 62, 0 }, { 63, 0 }, - { 64, 0 }, { 65, 0 }, { 66, 0 }, { 67, 0 }, { 68, 0 }, - { 69, 0 }, { 70, 0 }, { 71, 0 }, { 72, 0 }, { 73, 0 }, - { 74, 0 }, { 75, 0 }, { 76, 0 }, { 77, 0 }, { 78, 0 }, - { 79, 0 }, { 80, 0 }, { 81, 0 }, { 82, 0 }, { 83, 0 }, - { 84, 0 }, { 85, 0 }, { 86, 0 }, { 87, 0 }, { 88, 0 }, - { 89, 0 }, { 90, 0 }, { 91, 0 }, { 92, 0 }, { 93, 0 }, - { 94, 0 }, { 95, 0 }, { 96, 0 }, { 97, 0 }, { 98, 0 }, - { 99, 0 }, { 100, 0 }, { 101, 0 }, { 102, 0 }, { 103, 0 }, - - { 104, 0 }, { 105, 0 }, { 106, 0 }, { 107, 0 }, { 108, 0 }, - { 109, 0 }, { 110, 0 }, { 111, 0 }, { 112, 0 }, { 113, 0 }, - { 114, 0 }, { 115, 0 }, { 116, 0 }, { 117, 0 }, { 118, 0 }, - { 119, 0 }, { 120, 0 }, { 121, 0 }, { 122, 0 }, { 123, 0 }, - { 124, 0 }, { 125, 0 }, { 126, 0 }, { 127, 0 }, { 128, 0 }, - { 129, 0 }, { 130, 0 }, { 131, 0 }, { 132, 0 }, { 133, 0 }, - { 134, 0 }, { 135, 0 }, { 136, 0 }, { 137, 0 }, { 138, 0 }, - { 139, 0 }, { 140, 0 }, { 141, 0 }, { 142, 0 }, { 143, 0 }, - { 144, 0 }, { 145, 0 }, { 146, 0 }, { 147, 0 }, { 148, 0 }, - { 149, 0 }, { 150, 0 }, { 151, 0 }, { 152, 0 }, { 153, 0 }, - - { 154, 0 }, { 155, 0 }, { 156, 0 }, { 157, 0 }, { 158, 0 }, - { 159, 0 }, { 160, 0 }, { 161, 0 }, { 162, 0 }, { 163, 0 }, - { 164, 0 }, { 165, 0 }, { 166, 0 }, { 167, 0 }, { 168, 0 }, - { 169, 0 }, { 170, 0 }, { 171, 0 }, { 172, 0 }, { 173, 0 }, - { 174, 0 }, { 175, 0 }, { 176, 0 }, { 177, 0 }, { 178, 0 }, - { 179, 0 }, { 180, 0 }, { 181, 0 }, { 182, 0 }, { 183, 0 }, - { 184, 0 }, { 185, 0 }, { 186, 0 }, { 187, 0 }, { 188, 0 }, - { 189, 0 }, { 190, 0 }, { 191, 0 }, { 192, 0 }, { 193, 0 }, - { 194, 0 }, { 195, 0 }, { 196, 0 }, { 197, 0 }, { 198, 0 }, - { 199, 0 }, { 200, 0 }, { 201, 0 }, { 202, 0 }, { 203, 0 }, - - { 204, 0 }, { 205, 0 }, { 206, 0 }, { 207, 0 }, { 208, 0 }, - { 209, 0 }, { 210, 0 }, { 211, 0 }, { 212, 0 }, { 213, 0 }, - { 214, 0 }, { 215, 0 }, { 216, 0 }, { 217, 0 }, { 218, 0 }, - { 219, 0 }, { 220, 0 }, { 221, 0 }, { 222, 0 }, { 223, 0 }, - { 224, 0 }, { 225, 0 }, { 226, 0 }, { 227, 0 }, { 228, 0 }, - { 229, 0 }, { 230, 0 }, { 231, 0 }, { 232, 0 }, { 233, 0 }, - { 234, 0 }, { 235, 0 }, { 236, 0 }, { 237, 0 }, { 238, 0 }, - { 239, 0 }, { 240, 0 }, { 241, 0 }, { 242, 0 }, { 243, 0 }, - { 244, 0 }, { 245, 0 }, { 246, 0 }, { 247, 0 }, { 248, 0 }, - { 249, 0 }, { 250, 0 }, { 251, 0 }, { 252, 0 }, { 253, 0 }, - - { 254, 0 }, { 255, 0 }, { 256, 0 }, { 0, 55 }, { 0,4996 }, - { 1,-258 }, { 2,-258 }, { 3,-258 }, { 4,-258 }, { 5,-258 }, - { 6,-258 }, { 7,-258 }, { 8,-258 }, { 9, 0 }, { 10,-1615 }, - { 11,-258 }, { 12, 0 }, { 13,-1615 }, { 14,-258 }, { 15,-258 }, - { 16,-258 }, { 17,-258 }, { 18,-258 }, { 19,-258 }, { 20,-258 }, - { 21,-258 }, { 22,-258 }, { 23,-258 }, { 24,-258 }, { 25,-258 }, - { 26,-258 }, { 27,-258 }, { 28,-258 }, { 29,-258 }, { 30,-258 }, - { 31,-258 }, { 32, 0 }, { 33,-258 }, { 34,-258 }, { 35,-258 }, - { 36,-258 }, { 37,-258 }, { 38,-258 }, { 39, 258 }, { 40,-258 }, - { 41,-258 }, { 42,-258 }, { 43,-258 }, { 44,-258 }, { 45, 516 }, - - { 46,-258 }, { 47,-258 }, { 48,-258 }, { 49,-258 }, { 50,-258 }, - { 51,-258 }, { 52,-258 }, { 53,-258 }, { 54,-258 }, { 55,-258 }, - { 56,-258 }, { 57,-258 }, { 58,-258 }, { 59,-258 }, { 60,-258 }, - { 61,-258 }, { 62,-258 }, { 63,-258 }, { 64,-258 }, { 65,-258 }, + { 56,-258 }, { 57,-258 }, { 58,-258 }, { 59,-258 }, { 60, 0 }, + { 61, 0 }, { 62, 0 }, { 63, 0 }, { 64, 0 }, { 65,-258 }, { 66,-258 }, { 67,-258 }, { 68,-258 }, { 69,-258 }, { 70,-258 }, { 71,-258 }, { 72,-258 }, { 73,-258 }, { 74,-258 }, { 75,-258 }, { 76,-258 }, { 77,-258 }, { 78,-258 }, { 79,-258 }, { 80,-258 }, { 81,-258 }, { 82,-258 }, { 83,-258 }, { 84,-258 }, { 85,-258 }, { 86,-258 }, { 87,-258 }, { 88,-258 }, { 89,-258 }, { 90,-258 }, - { 91,-258 }, { 92,-258 }, { 93,-258 }, { 94,-258 }, { 95,-258 }, - - { 96,-258 }, { 97,-258 }, { 98,-258 }, { 99,-258 }, { 100,-258 }, + { 91,-258 }, { 92,-258 }, { 93,-258 }, { 94, 0 }, { 95,-258 }, + { 96, 0 }, { 97,-258 }, { 98,-258 }, { 99,-258 }, { 100,-258 }, { 101,-258 }, { 102,-258 }, { 103,-258 }, { 104,-258 }, { 105,-258 }, + { 106,-258 }, { 107,-258 }, { 108,-258 }, { 109,-258 }, { 110,-258 }, { 111,-258 }, { 112,-258 }, { 113,-258 }, { 114,-258 }, { 115,-258 }, { 116,-258 }, { 117,-258 }, { 118,-258 }, { 119,-258 }, { 120,-258 }, - { 121,-258 }, { 122,-258 }, { 123,-258 }, { 124,-258 }, { 125,-258 }, - { 126,-258 }, { 127,-258 }, { 128,-258 }, { 129,-258 }, { 130,-258 }, + { 121,-258 }, { 122,-258 }, { 123,-258 }, { 124, 0 }, { 125,-258 }, + { 126, 0 }, { 127,-258 }, { 128,-258 }, { 129,-258 }, { 130,-258 }, { 131,-258 }, { 132,-258 }, { 133,-258 }, { 134,-258 }, { 135,-258 }, { 136,-258 }, { 137,-258 }, { 138,-258 }, { 139,-258 }, { 140,-258 }, { 141,-258 }, { 142,-258 }, { 143,-258 }, { 144,-258 }, { 145,-258 }, - { 146,-258 }, { 147,-258 }, { 148,-258 }, { 149,-258 }, { 150,-258 }, { 151,-258 }, { 152,-258 }, { 153,-258 }, { 154,-258 }, { 155,-258 }, + { 156,-258 }, { 157,-258 }, { 158,-258 }, { 159,-258 }, { 160,-258 }, { 161,-258 }, { 162,-258 }, { 163,-258 }, { 164,-258 }, { 165,-258 }, { 166,-258 }, { 167,-258 }, { 168,-258 }, { 169,-258 }, { 170,-258 }, @@ -7477,9 +3965,9 @@ static yyconst struct yy_trans_info yy_transition[37005] = { 181,-258 }, { 182,-258 }, { 183,-258 }, { 184,-258 }, { 185,-258 }, { 186,-258 }, { 187,-258 }, { 188,-258 }, { 189,-258 }, { 190,-258 }, { 191,-258 }, { 192,-258 }, { 193,-258 }, { 194,-258 }, { 195,-258 }, - { 196,-258 }, { 197,-258 }, { 198,-258 }, { 199,-258 }, { 200,-258 }, { 201,-258 }, { 202,-258 }, { 203,-258 }, { 204,-258 }, { 205,-258 }, + { 206,-258 }, { 207,-258 }, { 208,-258 }, { 209,-258 }, { 210,-258 }, { 211,-258 }, { 212,-258 }, { 213,-258 }, { 214,-258 }, { 215,-258 }, { 216,-258 }, { 217,-258 }, { 218,-258 }, { 219,-258 }, { 220,-258 }, @@ -7488,153 +3976,97 @@ static yyconst struct yy_trans_info yy_transition[37005] = { 231,-258 }, { 232,-258 }, { 233,-258 }, { 234,-258 }, { 235,-258 }, { 236,-258 }, { 237,-258 }, { 238,-258 }, { 239,-258 }, { 240,-258 }, { 241,-258 }, { 242,-258 }, { 243,-258 }, { 244,-258 }, { 245,-258 }, - { 246,-258 }, { 247,-258 }, { 248,-258 }, { 249,-258 }, { 250,-258 }, { 251,-258 }, { 252,-258 }, { 253,-258 }, { 254,-258 }, { 255,-258 }, - { 256,-258 }, { 0, 55 }, { 0,4738 }, { 1,1548 }, { 2,1548 }, - { 3,1548 }, { 4,1548 }, { 5,1548 }, { 6,1548 }, { 7,1548 }, - { 8,1548 }, { 9,1806 }, { 10,2064 }, { 11,1548 }, { 12,1806 }, - { 13,2064 }, { 14,1548 }, { 15,1548 }, { 16,1548 }, { 17,1548 }, - { 18,1548 }, { 19,1548 }, { 20,1548 }, { 21,1548 }, { 22,1548 }, - { 23,1548 }, { 24,1548 }, { 25,1548 }, { 26,1548 }, { 27,1548 }, - { 28,1548 }, { 29,1548 }, { 30,1548 }, { 31,1548 }, { 32,1806 }, - { 33,1548 }, { 34,1548 }, { 35,1548 }, { 36,1548 }, { 37,1548 }, - - { 38,1548 }, { 39, 0 }, { 40,1548 }, { 41,1548 }, { 42,1548 }, - { 43,1548 }, { 44,1548 }, { 45,2111 }, { 46,1548 }, { 47,1548 }, - { 48,1548 }, { 49,1548 }, { 50,1548 }, { 51,1548 }, { 52,1548 }, - { 53,1548 }, { 54,1548 }, { 55,1548 }, { 56,1548 }, { 57,1548 }, - { 58,1548 }, { 59,1548 }, { 60,1548 }, { 61,1548 }, { 62,1548 }, - { 63,1548 }, { 64,1548 }, { 65,1548 }, { 66,1548 }, { 67,1548 }, - { 68,1548 }, { 69,1548 }, { 70,1548 }, { 71,1548 }, { 72,1548 }, - { 73,1548 }, { 74,1548 }, { 75,1548 }, { 76,1548 }, { 77,1548 }, - { 78,1548 }, { 79,1548 }, { 80,1548 }, { 81,1548 }, { 82,1548 }, - { 83,1548 }, { 84,1548 }, { 85,1548 }, { 86,1548 }, { 87,1548 }, - - { 88,1548 }, { 89,1548 }, { 90,1548 }, { 91,1548 }, { 92,1548 }, - { 93,1548 }, { 94,1548 }, { 95,1548 }, { 96,1548 }, { 97,1548 }, - { 98,1548 }, { 99,1548 }, { 100,1548 }, { 101,1548 }, { 102,1548 }, - { 103,1548 }, { 104,1548 }, { 105,1548 }, { 106,1548 }, { 107,1548 }, - { 108,1548 }, { 109,1548 }, { 110,1548 }, { 111,1548 }, { 112,1548 }, - { 113,1548 }, { 114,1548 }, { 115,1548 }, { 116,1548 }, { 117,1548 }, - { 118,1548 }, { 119,1548 }, { 120,1548 }, { 121,1548 }, { 122,1548 }, - { 123,1548 }, { 124,1548 }, { 125,1548 }, { 126,1548 }, { 127,1548 }, - { 128,1548 }, { 129,1548 }, { 130,1548 }, { 131,1548 }, { 132,1548 }, - { 133,1548 }, { 134,1548 }, { 135,1548 }, { 136,1548 }, { 137,1548 }, - - { 138,1548 }, { 139,1548 }, { 140,1548 }, { 141,1548 }, { 142,1548 }, - { 143,1548 }, { 144,1548 }, { 145,1548 }, { 146,1548 }, { 147,1548 }, - { 148,1548 }, { 149,1548 }, { 150,1548 }, { 151,1548 }, { 152,1548 }, - { 153,1548 }, { 154,1548 }, { 155,1548 }, { 156,1548 }, { 157,1548 }, - { 158,1548 }, { 159,1548 }, { 160,1548 }, { 161,1548 }, { 162,1548 }, - { 163,1548 }, { 164,1548 }, { 165,1548 }, { 166,1548 }, { 167,1548 }, - { 168,1548 }, { 169,1548 }, { 170,1548 }, { 171,1548 }, { 172,1548 }, - { 173,1548 }, { 174,1548 }, { 175,1548 }, { 176,1548 }, { 177,1548 }, - { 178,1548 }, { 179,1548 }, { 180,1548 }, { 181,1548 }, { 182,1548 }, - { 183,1548 }, { 184,1548 }, { 185,1548 }, { 186,1548 }, { 187,1548 }, - - { 188,1548 }, { 189,1548 }, { 190,1548 }, { 191,1548 }, { 192,1548 }, - { 193,1548 }, { 194,1548 }, { 195,1548 }, { 196,1548 }, { 197,1548 }, - { 198,1548 }, { 199,1548 }, { 200,1548 }, { 201,1548 }, { 202,1548 }, - { 203,1548 }, { 204,1548 }, { 205,1548 }, { 206,1548 }, { 207,1548 }, - { 208,1548 }, { 209,1548 }, { 210,1548 }, { 211,1548 }, { 212,1548 }, - { 213,1548 }, { 214,1548 }, { 215,1548 }, { 216,1548 }, { 217,1548 }, - { 218,1548 }, { 219,1548 }, { 220,1548 }, { 221,1548 }, { 222,1548 }, - { 223,1548 }, { 224,1548 }, { 225,1548 }, { 226,1548 }, { 227,1548 }, - { 228,1548 }, { 229,1548 }, { 230,1548 }, { 231,1548 }, { 232,1548 }, - { 233,1548 }, { 234,1548 }, { 235,1548 }, { 236,1548 }, { 237,1548 }, - - { 238,1548 }, { 239,1548 }, { 240,1548 }, { 241,1548 }, { 242,1548 }, - { 243,1548 }, { 244,1548 }, { 245,1548 }, { 246,1548 }, { 247,1548 }, - { 248,1548 }, { 249,1548 }, { 250,1548 }, { 251,1548 }, { 252,1548 }, - { 253,1548 }, { 254,1548 }, { 255,1548 }, { 256,1548 }, { 0, 55 }, - { 0,4480 }, { 1,-774 }, { 2,-774 }, { 3,-774 }, { 4,-774 }, - { 5,-774 }, { 6,-774 }, { 7,-774 }, { 8,-774 }, { 9,-516 }, - { 10,-2131 }, { 11,-774 }, { 12,-516 }, { 13,-2131 }, { 14,-774 }, - { 15,-774 }, { 16,-774 }, { 17,-774 }, { 18,-774 }, { 19,-774 }, - { 20,-774 }, { 21,-774 }, { 22,-774 }, { 23,-774 }, { 24,-774 }, - { 25,-774 }, { 26,-774 }, { 27,-774 }, { 28,-774 }, { 29,-774 }, - - { 30,-774 }, { 31,-774 }, { 32,-516 }, { 33,-774 }, { 34,-774 }, - { 35,-774 }, { 36,-774 }, { 37,-774 }, { 38,-774 }, { 39,-258 }, - { 40,-774 }, { 41,-774 }, { 42,-774 }, { 43,-774 }, { 44,-774 }, - { 45,2111 }, { 46,-774 }, { 47,-774 }, { 48,-774 }, { 49,-774 }, - { 50,-774 }, { 51,-774 }, { 52,-774 }, { 53,-774 }, { 54,-774 }, - { 55,-774 }, { 56,-774 }, { 57,-774 }, { 58,-774 }, { 59,-774 }, - { 60,-774 }, { 61,-774 }, { 62,-774 }, { 63,-774 }, { 64,-774 }, - { 65,-774 }, { 66,-774 }, { 67,-774 }, { 68,-774 }, { 69,-774 }, - { 70,-774 }, { 71,-774 }, { 72,-774 }, { 73,-774 }, { 74,-774 }, - { 75,-774 }, { 76,-774 }, { 77,-774 }, { 78,-774 }, { 79,-774 }, - - { 80,-774 }, { 81,-774 }, { 82,-774 }, { 83,-774 }, { 84,-774 }, - { 85,-774 }, { 86,-774 }, { 87,-774 }, { 88,-774 }, { 89,-774 }, - { 90,-774 }, { 91,-774 }, { 92,-774 }, { 93,-774 }, { 94,-774 }, - { 95,-774 }, { 96,-774 }, { 97,-774 }, { 98,-774 }, { 99,-774 }, - { 100,-774 }, { 101,-774 }, { 102,-774 }, { 103,-774 }, { 104,-774 }, - { 105,-774 }, { 106,-774 }, { 107,-774 }, { 108,-774 }, { 109,-774 }, - { 110,-774 }, { 111,-774 }, { 112,-774 }, { 113,-774 }, { 114,-774 }, - { 115,-774 }, { 116,-774 }, { 117,-774 }, { 118,-774 }, { 119,-774 }, - { 120,-774 }, { 121,-774 }, { 122,-774 }, { 123,-774 }, { 124,-774 }, - { 125,-774 }, { 126,-774 }, { 127,-774 }, { 128,-774 }, { 129,-774 }, - - { 130,-774 }, { 131,-774 }, { 132,-774 }, { 133,-774 }, { 134,-774 }, - { 135,-774 }, { 136,-774 }, { 137,-774 }, { 138,-774 }, { 139,-774 }, - { 140,-774 }, { 141,-774 }, { 142,-774 }, { 143,-774 }, { 144,-774 }, - { 145,-774 }, { 146,-774 }, { 147,-774 }, { 148,-774 }, { 149,-774 }, - { 150,-774 }, { 151,-774 }, { 152,-774 }, { 153,-774 }, { 154,-774 }, - { 155,-774 }, { 156,-774 }, { 157,-774 }, { 158,-774 }, { 159,-774 }, - { 160,-774 }, { 161,-774 }, { 162,-774 }, { 163,-774 }, { 164,-774 }, - { 165,-774 }, { 166,-774 }, { 167,-774 }, { 168,-774 }, { 169,-774 }, - { 170,-774 }, { 171,-774 }, { 172,-774 }, { 173,-774 }, { 174,-774 }, - { 175,-774 }, { 176,-774 }, { 177,-774 }, { 178,-774 }, { 179,-774 }, - - { 180,-774 }, { 181,-774 }, { 182,-774 }, { 183,-774 }, { 184,-774 }, - { 185,-774 }, { 186,-774 }, { 187,-774 }, { 188,-774 }, { 189,-774 }, - { 190,-774 }, { 191,-774 }, { 192,-774 }, { 193,-774 }, { 194,-774 }, - { 195,-774 }, { 196,-774 }, { 197,-774 }, { 198,-774 }, { 199,-774 }, - { 200,-774 }, { 201,-774 }, { 202,-774 }, { 203,-774 }, { 204,-774 }, - { 205,-774 }, { 206,-774 }, { 207,-774 }, { 208,-774 }, { 209,-774 }, - { 210,-774 }, { 211,-774 }, { 212,-774 }, { 213,-774 }, { 214,-774 }, - { 215,-774 }, { 216,-774 }, { 217,-774 }, { 218,-774 }, { 219,-774 }, - { 220,-774 }, { 221,-774 }, { 222,-774 }, { 223,-774 }, { 224,-774 }, - { 225,-774 }, { 226,-774 }, { 227,-774 }, { 228,-774 }, { 229,-774 }, - - { 230,-774 }, { 231,-774 }, { 232,-774 }, { 233,-774 }, { 234,-774 }, - { 235,-774 }, { 236,-774 }, { 237,-774 }, { 238,-774 }, { 239,-774 }, - { 240,-774 }, { 241,-774 }, { 242,-774 }, { 243,-774 }, { 244,-774 }, - { 245,-774 }, { 246,-774 }, { 247,-774 }, { 248,-774 }, { 249,-774 }, - { 250,-774 }, { 251,-774 }, { 252,-774 }, { 253,-774 }, { 254,-774 }, - { 255,-774 }, { 256,-774 }, { 0, 28 }, { 0,4222 }, { 1, 0 }, - { 2, 0 }, { 3, 0 }, { 4, 0 }, { 5, 0 }, { 6, 0 }, - { 7, 0 }, { 8, 0 }, { 9, 258 }, { 10,-2084 }, { 11, 0 }, - { 12, 258 }, { 13,-2084 }, { 14, 0 }, { 15, 0 }, { 16, 0 }, - { 17, 0 }, { 18, 0 }, { 19, 0 }, { 20, 0 }, { 21, 0 }, - { 22, 0 }, { 23, 0 }, { 24, 0 }, { 25, 0 }, { 26, 0 }, - { 27, 0 }, { 28, 0 }, { 29, 0 }, { 30, 0 }, { 31, 0 }, - { 32, 258 }, { 33, 0 }, { 34, 0 }, { 35, 0 }, { 36, 0 }, - { 37, 0 }, { 38, 0 }, { 39, 516 }, { 40, 0 }, { 41, 0 }, - { 42, 0 }, { 43, 0 }, { 44, 0 }, { 45, 774 }, { 46, 0 }, - { 47, 0 }, { 48, 0 }, { 49, 0 }, { 50, 0 }, { 51, 0 }, + { 256,-258 }, { 0, 3 }, { 0,1371 }, { 0, 59 }, { 0,1369 }, + { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, + { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, + { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, + { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, + { 0, 63 }, { 0,1347 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, + { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, + { 33, 0 }, { 0, 0 }, { 35, 0 }, { 0, 0 }, { 37, 0 }, + { 38, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 42, 0 }, + { 43, 0 }, { 0, 0 }, { 45, 0 }, { 0, 0 }, { 47, 0 }, + + { 0, 0 }, { 0, 0 }, { 48, 0 }, { 49, 0 }, { 50, 0 }, + { 51, 0 }, { 52, 0 }, { 53, 0 }, { 54, 0 }, { 55, 0 }, + { 56, 0 }, { 57, 0 }, { 60, 0 }, { 61, 0 }, { 62, 0 }, + { 63, 0 }, { 64, 0 }, { 0, 61 }, { 0,1305 }, { 0, 0 }, + { 0, 0 }, { 0, 0 }, { 0, 0 }, { 69,-3785 }, { 48, 42 }, + { 49, 42 }, { 50, 42 }, { 51, 42 }, { 52, 42 }, { 53, 42 }, + { 54, 42 }, { 55, 42 }, { 56, 42 }, { 57, 42 }, { 0, 0 }, + { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, + { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 4 }, { 0,1279 }, + { 0, 0 }, { 94, 0 }, { 0, 0 }, { 96, 0 }, { 0, 0 }, + + { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, + { 101,-3785 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, + { 0, 30 }, { 0,1262 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, + { 0, 0 }, { 48, 0 }, { 49, 0 }, { 50, 0 }, { 51, 0 }, { 52, 0 }, { 53, 0 }, { 54, 0 }, { 55, 0 }, { 56, 0 }, - { 57, 0 }, { 58, 0 }, { 59, 0 }, { 60, 0 }, { 61, 0 }, - { 62, 0 }, { 63, 0 }, { 64, 0 }, { 65, 0 }, { 66, 0 }, - { 67, 0 }, { 68, 0 }, { 69, 0 }, { 70, 0 }, { 71, 0 }, + { 57, 0 }, { 124, 0 }, { 33, 0 }, { 126, 0 }, { 35, 0 }, + { 0, 0 }, { 37, 0 }, { 38, 0 }, { 0, 0 }, { 0, 0 }, + { 0, 0 }, { 42, 0 }, { 43, 0 }, { 0, 0 }, { 45, 0 }, + { 0, 0 }, { 47, 0 }, { 0, 28 }, { 0,1230 }, { 0, 0 }, + { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, + { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 60, 0 }, + { 61, 0 }, { 62, 0 }, { 63, 0 }, { 64, 0 }, { 48,-9542 }, + { 49,-9542 }, { 50,-9542 }, { 51,-9542 }, { 52,-9542 }, { 53,-9542 }, + { 54,-9542 }, { 55,-9542 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, + { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, + { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, + { 0, 28 }, { 0,1192 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, + { 0, 0 }, { 0, 0 }, { 0, 0 }, { 94, 0 }, { 0, 0 }, + { 96, 0 }, { 48, 438 }, { 49, 438 }, { 50, 438 }, { 51, 438 }, + { 52, 438 }, { 53, 438 }, { 54, 438 }, { 55, 438 }, { 56, 438 }, + + { 57, 438 }, { 0, 0 }, { 0, 0 }, { 0, 31 }, { 0,1169 }, + { 0, 0 }, { 0, 0 }, { 0, 0 }, { 65, 438 }, { 66, 438 }, + { 67, 438 }, { 68, 438 }, { 69, 438 }, { 70, 438 }, { 0, 0 }, + { 0, 0 }, { 0, 0 }, { 0, 0 }, { 124, 0 }, { 0, 0 }, + { 126, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, + { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 48, 423 }, + { 49, 423 }, { 50, 423 }, { 51, 423 }, { 52, 423 }, { 53, 423 }, + { 54, 423 }, { 55, 423 }, { 56, 423 }, { 57, 423 }, { 0, 0 }, + { 97, 438 }, { 98, 438 }, { 99, 438 }, { 100, 438 }, { 101, 438 }, + { 102, 438 }, { 65, 423 }, { 66, 423 }, { 67, 423 }, { 68, 423 }, + + { 69, 423 }, { 70, 423 }, { 48,-9621 }, { 49,-9621 }, { 50,-9621 }, + { 51,-9621 }, { 52,-9621 }, { 53,-9621 }, { 54,-9621 }, { 55,-9621 }, + { 56,-9621 }, { 57,-9621 }, { 0, 37 }, { 0,1110 }, { 0, 0 }, + { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 65,-9621 }, + { 66,-9621 }, { 67,-9621 }, { 68,-9621 }, { 69,-9621 }, { 70,-9621 }, + { 0, 0 }, { 0, 0 }, { 0, 0 }, { 97, 423 }, { 98, 423 }, + { 99, 423 }, { 100, 423 }, { 101, 423 }, { 102, 423 }, { 0, 0 }, + { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, + { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, + { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 36,-9721 }, + + { 0, 0 }, { 97,-9621 }, { 98,-9621 }, { 99,-9621 }, { 100,-9621 }, + { 101,-9621 }, { 102,-9621 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, + { 0, 0 }, { 48, 0 }, { 49, 0 }, { 50, 0 }, { 51, 0 }, + { 52, 0 }, { 53, 0 }, { 54, 0 }, { 55, 0 }, { 56, 0 }, + { 57, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, + { 0, 0 }, { 0, 0 }, { 0, 0 }, { 65, 0 }, { 66, 0 }, + { 67, 0 }, { 68, 0 }, { 69, 0 }, { 70, 0 }, { 71, 0 }, { 72, 0 }, { 73, 0 }, { 74, 0 }, { 75, 0 }, { 76, 0 }, { 77, 0 }, { 78, 0 }, { 79, 0 }, { 80, 0 }, { 81, 0 }, { 82, 0 }, { 83, 0 }, { 84, 0 }, { 85, 0 }, { 86, 0 }, - { 87, 0 }, { 88, 0 }, { 89, 0 }, { 90, 0 }, { 91, 0 }, - { 92, 0 }, { 93, 0 }, { 94, 0 }, { 95, 0 }, { 96, 0 }, + + { 87, 0 }, { 88, 0 }, { 89, 0 }, { 90, 0 }, { 0, 0 }, + { 0, 0 }, { 0, 0 }, { 0, 0 }, { 95, 0 }, { 0, 0 }, { 97, 0 }, { 98, 0 }, { 99, 0 }, { 100, 0 }, { 101, 0 }, { 102, 0 }, { 103, 0 }, { 104, 0 }, { 105, 0 }, { 106, 0 }, { 107, 0 }, { 108, 0 }, { 109, 0 }, { 110, 0 }, { 111, 0 }, { 112, 0 }, { 113, 0 }, { 114, 0 }, { 115, 0 }, { 116, 0 }, { 117, 0 }, { 118, 0 }, { 119, 0 }, { 120, 0 }, { 121, 0 }, - - { 122, 0 }, { 123, 0 }, { 124, 0 }, { 125, 0 }, { 126, 0 }, - { 127, 0 }, { 128, 0 }, { 129, 0 }, { 130, 0 }, { 131, 0 }, + { 122, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, + { 0, 0 }, { 128, 0 }, { 129, 0 }, { 130, 0 }, { 131, 0 }, { 132, 0 }, { 133, 0 }, { 134, 0 }, { 135, 0 }, { 136, 0 }, + { 137, 0 }, { 138, 0 }, { 139, 0 }, { 140, 0 }, { 141, 0 }, { 142, 0 }, { 143, 0 }, { 144, 0 }, { 145, 0 }, { 146, 0 }, { 147, 0 }, { 148, 0 }, { 149, 0 }, { 150, 0 }, { 151, 0 }, @@ -7642,10 +4074,10 @@ static yyconst struct yy_trans_info yy_transition[37005] = { 157, 0 }, { 158, 0 }, { 159, 0 }, { 160, 0 }, { 161, 0 }, { 162, 0 }, { 163, 0 }, { 164, 0 }, { 165, 0 }, { 166, 0 }, { 167, 0 }, { 168, 0 }, { 169, 0 }, { 170, 0 }, { 171, 0 }, - { 172, 0 }, { 173, 0 }, { 174, 0 }, { 175, 0 }, { 176, 0 }, { 177, 0 }, { 178, 0 }, { 179, 0 }, { 180, 0 }, { 181, 0 }, { 182, 0 }, { 183, 0 }, { 184, 0 }, { 185, 0 }, { 186, 0 }, + { 187, 0 }, { 188, 0 }, { 189, 0 }, { 190, 0 }, { 191, 0 }, { 192, 0 }, { 193, 0 }, { 194, 0 }, { 195, 0 }, { 196, 0 }, { 197, 0 }, { 198, 0 }, { 199, 0 }, { 200, 0 }, { 201, 0 }, @@ -7653,890 +4085,204 @@ static yyconst struct yy_trans_info yy_transition[37005] = { 207, 0 }, { 208, 0 }, { 209, 0 }, { 210, 0 }, { 211, 0 }, { 212, 0 }, { 213, 0 }, { 214, 0 }, { 215, 0 }, { 216, 0 }, { 217, 0 }, { 218, 0 }, { 219, 0 }, { 220, 0 }, { 221, 0 }, - { 222, 0 }, { 223, 0 }, { 224, 0 }, { 225, 0 }, { 226, 0 }, { 227, 0 }, { 228, 0 }, { 229, 0 }, { 230, 0 }, { 231, 0 }, { 232, 0 }, { 233, 0 }, { 234, 0 }, { 235, 0 }, { 236, 0 }, + { 237, 0 }, { 238, 0 }, { 239, 0 }, { 240, 0 }, { 241, 0 }, { 242, 0 }, { 243, 0 }, { 244, 0 }, { 245, 0 }, { 246, 0 }, { 247, 0 }, { 248, 0 }, { 249, 0 }, { 250, 0 }, { 251, 0 }, - { 252, 0 }, { 253, 0 }, { 254, 0 }, { 255, 0 }, { 256, 0 }, - { 0, 28 }, { 0,3964 }, { 1,-258 }, { 2,-258 }, { 3,-258 }, - { 4,-258 }, { 5,-258 }, { 6,-258 }, { 7,-258 }, { 8,-258 }, - { 9, 0 }, { 10,-2342 }, { 11,-258 }, { 12, 0 }, { 13,-2342 }, - - { 14,-258 }, { 15,-258 }, { 16,-258 }, { 17,-258 }, { 18,-258 }, - { 19,-258 }, { 20,-258 }, { 21,-258 }, { 22,-258 }, { 23,-258 }, - { 24,-258 }, { 25,-258 }, { 26,-258 }, { 27,-258 }, { 28,-258 }, - { 29,-258 }, { 30,-258 }, { 31,-258 }, { 32, 0 }, { 33,-258 }, - { 34,-258 }, { 35,-258 }, { 36,-258 }, { 37,-258 }, { 38,-258 }, - { 39, 258 }, { 40,-258 }, { 41,-258 }, { 42,-258 }, { 43,-258 }, - { 44,-258 }, { 45, 516 }, { 46,-258 }, { 47,-258 }, { 48,-258 }, - { 49,-258 }, { 50,-258 }, { 51,-258 }, { 52,-258 }, { 53,-258 }, - { 54,-258 }, { 55,-258 }, { 56,-258 }, { 57,-258 }, { 58,-258 }, - { 59,-258 }, { 60,-258 }, { 61,-258 }, { 62,-258 }, { 63,-258 }, - - { 64,-258 }, { 65,-258 }, { 66,-258 }, { 67,-258 }, { 68,-258 }, - { 69,-258 }, { 70,-258 }, { 71,-258 }, { 72,-258 }, { 73,-258 }, - { 74,-258 }, { 75,-258 }, { 76,-258 }, { 77,-258 }, { 78,-258 }, - { 79,-258 }, { 80,-258 }, { 81,-258 }, { 82,-258 }, { 83,-258 }, - { 84,-258 }, { 85,-258 }, { 86,-258 }, { 87,-258 }, { 88,-258 }, - { 89,-258 }, { 90,-258 }, { 91,-258 }, { 92,-258 }, { 93,-258 }, - { 94,-258 }, { 95,-258 }, { 96,-258 }, { 97,-258 }, { 98,-258 }, - { 99,-258 }, { 100,-258 }, { 101,-258 }, { 102,-258 }, { 103,-258 }, - { 104,-258 }, { 105,-258 }, { 106,-258 }, { 107,-258 }, { 108,-258 }, - { 109,-258 }, { 110,-258 }, { 111,-258 }, { 112,-258 }, { 113,-258 }, - - { 114,-258 }, { 115,-258 }, { 116,-258 }, { 117,-258 }, { 118,-258 }, - { 119,-258 }, { 120,-258 }, { 121,-258 }, { 122,-258 }, { 123,-258 }, - { 124,-258 }, { 125,-258 }, { 126,-258 }, { 127,-258 }, { 128,-258 }, - { 129,-258 }, { 130,-258 }, { 131,-258 }, { 132,-258 }, { 133,-258 }, - { 134,-258 }, { 135,-258 }, { 136,-258 }, { 137,-258 }, { 138,-258 }, - { 139,-258 }, { 140,-258 }, { 141,-258 }, { 142,-258 }, { 143,-258 }, - { 144,-258 }, { 145,-258 }, { 146,-258 }, { 147,-258 }, { 148,-258 }, - { 149,-258 }, { 150,-258 }, { 151,-258 }, { 152,-258 }, { 153,-258 }, - { 154,-258 }, { 155,-258 }, { 156,-258 }, { 157,-258 }, { 158,-258 }, - { 159,-258 }, { 160,-258 }, { 161,-258 }, { 162,-258 }, { 163,-258 }, - - { 164,-258 }, { 165,-258 }, { 166,-258 }, { 167,-258 }, { 168,-258 }, - { 169,-258 }, { 170,-258 }, { 171,-258 }, { 172,-258 }, { 173,-258 }, - { 174,-258 }, { 175,-258 }, { 176,-258 }, { 177,-258 }, { 178,-258 }, - { 179,-258 }, { 180,-258 }, { 181,-258 }, { 182,-258 }, { 183,-258 }, - { 184,-258 }, { 185,-258 }, { 186,-258 }, { 187,-258 }, { 188,-258 }, - { 189,-258 }, { 190,-258 }, { 191,-258 }, { 192,-258 }, { 193,-258 }, - { 194,-258 }, { 195,-258 }, { 196,-258 }, { 197,-258 }, { 198,-258 }, - { 199,-258 }, { 200,-258 }, { 201,-258 }, { 202,-258 }, { 203,-258 }, - { 204,-258 }, { 205,-258 }, { 206,-258 }, { 207,-258 }, { 208,-258 }, - { 209,-258 }, { 210,-258 }, { 211,-258 }, { 212,-258 }, { 213,-258 }, - - { 214,-258 }, { 215,-258 }, { 216,-258 }, { 217,-258 }, { 218,-258 }, - { 219,-258 }, { 220,-258 }, { 221,-258 }, { 222,-258 }, { 223,-258 }, - { 224,-258 }, { 225,-258 }, { 226,-258 }, { 227,-258 }, { 228,-258 }, - { 229,-258 }, { 230,-258 }, { 231,-258 }, { 232,-258 }, { 233,-258 }, - { 234,-258 }, { 235,-258 }, { 236,-258 }, { 237,-258 }, { 238,-258 }, - { 239,-258 }, { 240,-258 }, { 241,-258 }, { 242,-258 }, { 243,-258 }, - { 244,-258 }, { 245,-258 }, { 246,-258 }, { 247,-258 }, { 248,-258 }, - { 249,-258 }, { 250,-258 }, { 251,-258 }, { 252,-258 }, { 253,-258 }, - { 254,-258 }, { 255,-258 }, { 256,-258 }, { 0, 28 }, { 0,3706 }, - { 1,1595 }, { 2,1595 }, { 3,1595 }, { 4,1595 }, { 5,1595 }, - - { 6,1595 }, { 7,1595 }, { 8,1595 }, { 9,1853 }, { 10,2111 }, - { 11,1595 }, { 12,1853 }, { 13,2111 }, { 14,1595 }, { 15,1595 }, - { 16,1595 }, { 17,1595 }, { 18,1595 }, { 19,1595 }, { 20,1595 }, - { 21,1595 }, { 22,1595 }, { 23,1595 }, { 24,1595 }, { 25,1595 }, - { 26,1595 }, { 27,1595 }, { 28,1595 }, { 29,1595 }, { 30,1595 }, - { 31,1595 }, { 32,1853 }, { 33,1595 }, { 34,1595 }, { 35,1595 }, - { 36,1595 }, { 37,1595 }, { 38,1595 }, { 39, 0 }, { 40,1595 }, - { 41,1595 }, { 42,1595 }, { 43,1595 }, { 44,1595 }, { 45,2158 }, - { 46,1595 }, { 47,1595 }, { 48,1595 }, { 49,1595 }, { 50,1595 }, - { 51,1595 }, { 52,1595 }, { 53,1595 }, { 54,1595 }, { 55,1595 }, - - { 56,1595 }, { 57,1595 }, { 58,1595 }, { 59,1595 }, { 60,1595 }, - { 61,1595 }, { 62,1595 }, { 63,1595 }, { 64,1595 }, { 65,1595 }, - { 66,1595 }, { 67,1595 }, { 68,1595 }, { 69,1595 }, { 70,1595 }, - { 71,1595 }, { 72,1595 }, { 73,1595 }, { 74,1595 }, { 75,1595 }, - { 76,1595 }, { 77,1595 }, { 78,1595 }, { 79,1595 }, { 80,1595 }, - { 81,1595 }, { 82,1595 }, { 83,1595 }, { 84,1595 }, { 85,1595 }, - { 86,1595 }, { 87,1595 }, { 88,1595 }, { 89,1595 }, { 90,1595 }, - { 91,1595 }, { 92,1595 }, { 93,1595 }, { 94,1595 }, { 95,1595 }, - { 96,1595 }, { 97,1595 }, { 98,1595 }, { 99,1595 }, { 100,1595 }, - { 101,1595 }, { 102,1595 }, { 103,1595 }, { 104,1595 }, { 105,1595 }, - - { 106,1595 }, { 107,1595 }, { 108,1595 }, { 109,1595 }, { 110,1595 }, - { 111,1595 }, { 112,1595 }, { 113,1595 }, { 114,1595 }, { 115,1595 }, - { 116,1595 }, { 117,1595 }, { 118,1595 }, { 119,1595 }, { 120,1595 }, - { 121,1595 }, { 122,1595 }, { 123,1595 }, { 124,1595 }, { 125,1595 }, - { 126,1595 }, { 127,1595 }, { 128,1595 }, { 129,1595 }, { 130,1595 }, - { 131,1595 }, { 132,1595 }, { 133,1595 }, { 134,1595 }, { 135,1595 }, - { 136,1595 }, { 137,1595 }, { 138,1595 }, { 139,1595 }, { 140,1595 }, - { 141,1595 }, { 142,1595 }, { 143,1595 }, { 144,1595 }, { 145,1595 }, - { 146,1595 }, { 147,1595 }, { 148,1595 }, { 149,1595 }, { 150,1595 }, - { 151,1595 }, { 152,1595 }, { 153,1595 }, { 154,1595 }, { 155,1595 }, - - { 156,1595 }, { 157,1595 }, { 158,1595 }, { 159,1595 }, { 160,1595 }, - { 161,1595 }, { 162,1595 }, { 163,1595 }, { 164,1595 }, { 165,1595 }, - { 166,1595 }, { 167,1595 }, { 168,1595 }, { 169,1595 }, { 170,1595 }, - { 171,1595 }, { 172,1595 }, { 173,1595 }, { 174,1595 }, { 175,1595 }, - { 176,1595 }, { 177,1595 }, { 178,1595 }, { 179,1595 }, { 180,1595 }, - { 181,1595 }, { 182,1595 }, { 183,1595 }, { 184,1595 }, { 185,1595 }, - { 186,1595 }, { 187,1595 }, { 188,1595 }, { 189,1595 }, { 190,1595 }, - { 191,1595 }, { 192,1595 }, { 193,1595 }, { 194,1595 }, { 195,1595 }, - { 196,1595 }, { 197,1595 }, { 198,1595 }, { 199,1595 }, { 200,1595 }, - { 201,1595 }, { 202,1595 }, { 203,1595 }, { 204,1595 }, { 205,1595 }, - - { 206,1595 }, { 207,1595 }, { 208,1595 }, { 209,1595 }, { 210,1595 }, - { 211,1595 }, { 212,1595 }, { 213,1595 }, { 214,1595 }, { 215,1595 }, - { 216,1595 }, { 217,1595 }, { 218,1595 }, { 219,1595 }, { 220,1595 }, - { 221,1595 }, { 222,1595 }, { 223,1595 }, { 224,1595 }, { 225,1595 }, - { 226,1595 }, { 227,1595 }, { 228,1595 }, { 229,1595 }, { 230,1595 }, - { 231,1595 }, { 232,1595 }, { 233,1595 }, { 234,1595 }, { 235,1595 }, - { 236,1595 }, { 237,1595 }, { 238,1595 }, { 239,1595 }, { 240,1595 }, - { 241,1595 }, { 242,1595 }, { 243,1595 }, { 244,1595 }, { 245,1595 }, - { 246,1595 }, { 247,1595 }, { 248,1595 }, { 249,1595 }, { 250,1595 }, - { 251,1595 }, { 252,1595 }, { 253,1595 }, { 254,1595 }, { 255,1595 }, - - { 256,1595 }, { 0, 28 }, { 0,3448 }, { 1,-774 }, { 2,-774 }, - { 3,-774 }, { 4,-774 }, { 5,-774 }, { 6,-774 }, { 7,-774 }, - { 8,-774 }, { 9,-516 }, { 10,-2858 }, { 11,-774 }, { 12,-516 }, - { 13,-2858 }, { 14,-774 }, { 15,-774 }, { 16,-774 }, { 17,-774 }, - { 18,-774 }, { 19,-774 }, { 20,-774 }, { 21,-774 }, { 22,-774 }, - { 23,-774 }, { 24,-774 }, { 25,-774 }, { 26,-774 }, { 27,-774 }, - { 28,-774 }, { 29,-774 }, { 30,-774 }, { 31,-774 }, { 32,-516 }, - { 33,-774 }, { 34,-774 }, { 35,-774 }, { 36,-774 }, { 37,-774 }, - { 38,-774 }, { 39,-258 }, { 40,-774 }, { 41,-774 }, { 42,-774 }, - { 43,-774 }, { 44,-774 }, { 45,2158 }, { 46,-774 }, { 47,-774 }, - - { 48,-774 }, { 49,-774 }, { 50,-774 }, { 51,-774 }, { 52,-774 }, - { 53,-774 }, { 54,-774 }, { 55,-774 }, { 56,-774 }, { 57,-774 }, - { 58,-774 }, { 59,-774 }, { 60,-774 }, { 61,-774 }, { 62,-774 }, - { 63,-774 }, { 64,-774 }, { 65,-774 }, { 66,-774 }, { 67,-774 }, - { 68,-774 }, { 69,-774 }, { 70,-774 }, { 71,-774 }, { 72,-774 }, - { 73,-774 }, { 74,-774 }, { 75,-774 }, { 76,-774 }, { 77,-774 }, - { 78,-774 }, { 79,-774 }, { 80,-774 }, { 81,-774 }, { 82,-774 }, - { 83,-774 }, { 84,-774 }, { 85,-774 }, { 86,-774 }, { 87,-774 }, - { 88,-774 }, { 89,-774 }, { 90,-774 }, { 91,-774 }, { 92,-774 }, - { 93,-774 }, { 94,-774 }, { 95,-774 }, { 96,-774 }, { 97,-774 }, - - { 98,-774 }, { 99,-774 }, { 100,-774 }, { 101,-774 }, { 102,-774 }, - { 103,-774 }, { 104,-774 }, { 105,-774 }, { 106,-774 }, { 107,-774 }, - { 108,-774 }, { 109,-774 }, { 110,-774 }, { 111,-774 }, { 112,-774 }, - { 113,-774 }, { 114,-774 }, { 115,-774 }, { 116,-774 }, { 117,-774 }, - { 118,-774 }, { 119,-774 }, { 120,-774 }, { 121,-774 }, { 122,-774 }, - { 123,-774 }, { 124,-774 }, { 125,-774 }, { 126,-774 }, { 127,-774 }, - { 128,-774 }, { 129,-774 }, { 130,-774 }, { 131,-774 }, { 132,-774 }, - { 133,-774 }, { 134,-774 }, { 135,-774 }, { 136,-774 }, { 137,-774 }, - { 138,-774 }, { 139,-774 }, { 140,-774 }, { 141,-774 }, { 142,-774 }, - { 143,-774 }, { 144,-774 }, { 145,-774 }, { 146,-774 }, { 147,-774 }, - - { 148,-774 }, { 149,-774 }, { 150,-774 }, { 151,-774 }, { 152,-774 }, - { 153,-774 }, { 154,-774 }, { 155,-774 }, { 156,-774 }, { 157,-774 }, - { 158,-774 }, { 159,-774 }, { 160,-774 }, { 161,-774 }, { 162,-774 }, - { 163,-774 }, { 164,-774 }, { 165,-774 }, { 166,-774 }, { 167,-774 }, - { 168,-774 }, { 169,-774 }, { 170,-774 }, { 171,-774 }, { 172,-774 }, - { 173,-774 }, { 174,-774 }, { 175,-774 }, { 176,-774 }, { 177,-774 }, - { 178,-774 }, { 179,-774 }, { 180,-774 }, { 181,-774 }, { 182,-774 }, - { 183,-774 }, { 184,-774 }, { 185,-774 }, { 186,-774 }, { 187,-774 }, - { 188,-774 }, { 189,-774 }, { 190,-774 }, { 191,-774 }, { 192,-774 }, - { 193,-774 }, { 194,-774 }, { 195,-774 }, { 196,-774 }, { 197,-774 }, - - { 198,-774 }, { 199,-774 }, { 200,-774 }, { 201,-774 }, { 202,-774 }, - { 203,-774 }, { 204,-774 }, { 205,-774 }, { 206,-774 }, { 207,-774 }, - { 208,-774 }, { 209,-774 }, { 210,-774 }, { 211,-774 }, { 212,-774 }, - { 213,-774 }, { 214,-774 }, { 215,-774 }, { 216,-774 }, { 217,-774 }, - { 218,-774 }, { 219,-774 }, { 220,-774 }, { 221,-774 }, { 222,-774 }, - { 223,-774 }, { 224,-774 }, { 225,-774 }, { 226,-774 }, { 227,-774 }, - { 228,-774 }, { 229,-774 }, { 230,-774 }, { 231,-774 }, { 232,-774 }, - { 233,-774 }, { 234,-774 }, { 235,-774 }, { 236,-774 }, { 237,-774 }, - { 238,-774 }, { 239,-774 }, { 240,-774 }, { 241,-774 }, { 242,-774 }, - { 243,-774 }, { 244,-774 }, { 245,-774 }, { 246,-774 }, { 247,-774 }, - - { 248,-774 }, { 249,-774 }, { 250,-774 }, { 251,-774 }, { 252,-774 }, - { 253,-774 }, { 254,-774 }, { 255,-774 }, { 256,-774 }, { 0, 55 }, - { 0,3190 }, { 1,-2064 }, { 2,-2064 }, { 3,-2064 }, { 4,-2064 }, - { 5,-2064 }, { 6,-2064 }, { 7,-2064 }, { 8,-2064 }, { 9,-1806 }, - { 10,-3421 }, { 11,-2064 }, { 12,-1806 }, { 13,-3421 }, { 14,-2064 }, - { 15,-2064 }, { 16,-2064 }, { 17,-2064 }, { 18,-2064 }, { 19,-2064 }, - { 20,-2064 }, { 21,-2064 }, { 22,-2064 }, { 23,-2064 }, { 24,-2064 }, - { 25,-2064 }, { 26,-2064 }, { 27,-2064 }, { 28,-2064 }, { 29,-2064 }, - { 30,-2064 }, { 31,-2064 }, { 32,-1806 }, { 33,-2064 }, { 34,-2064 }, - { 35,-2064 }, { 36,-2064 }, { 37,-2064 }, { 38,-2064 }, { 39,2158 }, - - { 40,-2064 }, { 41,-2064 }, { 42,-2064 }, { 43,-2064 }, { 44,-2064 }, - { 45,-1290 }, { 46,-2064 }, { 47,-2064 }, { 48,-2064 }, { 49,-2064 }, - { 50,-2064 }, { 51,-2064 }, { 52,-2064 }, { 53,-2064 }, { 54,-2064 }, - { 55,-2064 }, { 56,-2064 }, { 57,-2064 }, { 58,-2064 }, { 59,-2064 }, - { 60,-2064 }, { 61,-2064 }, { 62,-2064 }, { 63,-2064 }, { 64,-2064 }, - { 65,-2064 }, { 66,-2064 }, { 67,-2064 }, { 68,-2064 }, { 69,-2064 }, - { 70,-2064 }, { 71,-2064 }, { 72,-2064 }, { 73,-2064 }, { 74,-2064 }, - { 75,-2064 }, { 76,-2064 }, { 77,-2064 }, { 78,-2064 }, { 79,-2064 }, - { 80,-2064 }, { 81,-2064 }, { 82,-2064 }, { 83,-2064 }, { 84,-2064 }, - { 85,-2064 }, { 86,-2064 }, { 87,-2064 }, { 88,-2064 }, { 89,-2064 }, - - { 90,-2064 }, { 91,-2064 }, { 92,-2064 }, { 93,-2064 }, { 94,-2064 }, - { 95,-2064 }, { 96,-2064 }, { 97,-2064 }, { 98,-2064 }, { 99,-2064 }, - { 100,-2064 }, { 101,-2064 }, { 102,-2064 }, { 103,-2064 }, { 104,-2064 }, - { 105,-2064 }, { 106,-2064 }, { 107,-2064 }, { 108,-2064 }, { 109,-2064 }, - { 110,-2064 }, { 111,-2064 }, { 112,-2064 }, { 113,-2064 }, { 114,-2064 }, - { 115,-2064 }, { 116,-2064 }, { 117,-2064 }, { 118,-2064 }, { 119,-2064 }, - { 120,-2064 }, { 121,-2064 }, { 122,-2064 }, { 123,-2064 }, { 124,-2064 }, - { 125,-2064 }, { 126,-2064 }, { 127,-2064 }, { 128,-2064 }, { 129,-2064 }, - { 130,-2064 }, { 131,-2064 }, { 132,-2064 }, { 133,-2064 }, { 134,-2064 }, - { 135,-2064 }, { 136,-2064 }, { 137,-2064 }, { 138,-2064 }, { 139,-2064 }, - - { 140,-2064 }, { 141,-2064 }, { 142,-2064 }, { 143,-2064 }, { 144,-2064 }, - { 145,-2064 }, { 146,-2064 }, { 147,-2064 }, { 148,-2064 }, { 149,-2064 }, - { 150,-2064 }, { 151,-2064 }, { 152,-2064 }, { 153,-2064 }, { 154,-2064 }, - { 155,-2064 }, { 156,-2064 }, { 157,-2064 }, { 158,-2064 }, { 159,-2064 }, - { 160,-2064 }, { 161,-2064 }, { 162,-2064 }, { 163,-2064 }, { 164,-2064 }, - { 165,-2064 }, { 166,-2064 }, { 167,-2064 }, { 168,-2064 }, { 169,-2064 }, - { 170,-2064 }, { 171,-2064 }, { 172,-2064 }, { 173,-2064 }, { 174,-2064 }, - { 175,-2064 }, { 176,-2064 }, { 177,-2064 }, { 178,-2064 }, { 179,-2064 }, - { 180,-2064 }, { 181,-2064 }, { 182,-2064 }, { 183,-2064 }, { 184,-2064 }, - { 185,-2064 }, { 186,-2064 }, { 187,-2064 }, { 188,-2064 }, { 189,-2064 }, - - { 190,-2064 }, { 191,-2064 }, { 192,-2064 }, { 193,-2064 }, { 194,-2064 }, - { 195,-2064 }, { 196,-2064 }, { 197,-2064 }, { 198,-2064 }, { 199,-2064 }, - { 200,-2064 }, { 201,-2064 }, { 202,-2064 }, { 203,-2064 }, { 204,-2064 }, - { 205,-2064 }, { 206,-2064 }, { 207,-2064 }, { 208,-2064 }, { 209,-2064 }, - { 210,-2064 }, { 211,-2064 }, { 212,-2064 }, { 213,-2064 }, { 214,-2064 }, - { 215,-2064 }, { 216,-2064 }, { 217,-2064 }, { 218,-2064 }, { 219,-2064 }, - { 220,-2064 }, { 221,-2064 }, { 222,-2064 }, { 223,-2064 }, { 224,-2064 }, - { 225,-2064 }, { 226,-2064 }, { 227,-2064 }, { 228,-2064 }, { 229,-2064 }, - { 230,-2064 }, { 231,-2064 }, { 232,-2064 }, { 233,-2064 }, { 234,-2064 }, - { 235,-2064 }, { 236,-2064 }, { 237,-2064 }, { 238,-2064 }, { 239,-2064 }, - - { 240,-2064 }, { 241,-2064 }, { 242,-2064 }, { 243,-2064 }, { 244,-2064 }, - { 245,-2064 }, { 246,-2064 }, { 247,-2064 }, { 248,-2064 }, { 249,-2064 }, - { 250,-2064 }, { 251,-2064 }, { 252,-2064 }, { 253,-2064 }, { 254,-2064 }, - { 255,-2064 }, { 256,-2064 }, { 0, 55 }, { 0,2932 }, { 1,-2322 }, - { 2,-2322 }, { 3,-2322 }, { 4,-2322 }, { 5,-2322 }, { 6,-2322 }, - { 7,-2322 }, { 8,-2322 }, { 9,-2064 }, { 10,-3679 }, { 11,-2322 }, - { 12,-2064 }, { 13,-3679 }, { 14,-2322 }, { 15,-2322 }, { 16,-2322 }, - { 17,-2322 }, { 18,-2322 }, { 19,-2322 }, { 20,-2322 }, { 21,-2322 }, - { 22,-2322 }, { 23,-2322 }, { 24,-2322 }, { 25,-2322 }, { 26,-2322 }, - { 27,-2322 }, { 28,-2322 }, { 29,-2322 }, { 30,-2322 }, { 31,-2322 }, - - { 32,-2064 }, { 33,-2322 }, { 34,-2322 }, { 35,-2322 }, { 36,-2322 }, - { 37,-2322 }, { 38,-2322 }, { 39,1900 }, { 40,-2322 }, { 41,-2322 }, - { 42,-2322 }, { 43,-2322 }, { 44,-2322 }, { 45,-1548 }, { 46,-2322 }, - { 47,-2322 }, { 48,-2322 }, { 49,-2322 }, { 50,-2322 }, { 51,-2322 }, - { 52,-2322 }, { 53,-2322 }, { 54,-2322 }, { 55,-2322 }, { 56,-2322 }, - { 57,-2322 }, { 58,-2322 }, { 59,-2322 }, { 60,-2322 }, { 61,-2322 }, - { 62,-2322 }, { 63,-2322 }, { 64,-2322 }, { 65,-2322 }, { 66,-2322 }, - { 67,-2322 }, { 68,-2322 }, { 69,-2322 }, { 70,-2322 }, { 71,-2322 }, - { 72,-2322 }, { 73,-2322 }, { 74,-2322 }, { 75,-2322 }, { 76,-2322 }, - { 77,-2322 }, { 78,-2322 }, { 79,-2322 }, { 80,-2322 }, { 81,-2322 }, - - { 82,-2322 }, { 83,-2322 }, { 84,-2322 }, { 85,-2322 }, { 86,-2322 }, - { 87,-2322 }, { 88,-2322 }, { 89,-2322 }, { 90,-2322 }, { 91,-2322 }, - { 92,-2322 }, { 93,-2322 }, { 94,-2322 }, { 95,-2322 }, { 96,-2322 }, - { 97,-2322 }, { 98,-2322 }, { 99,-2322 }, { 100,-2322 }, { 101,-2322 }, - { 102,-2322 }, { 103,-2322 }, { 104,-2322 }, { 105,-2322 }, { 106,-2322 }, - { 107,-2322 }, { 108,-2322 }, { 109,-2322 }, { 110,-2322 }, { 111,-2322 }, - { 112,-2322 }, { 113,-2322 }, { 114,-2322 }, { 115,-2322 }, { 116,-2322 }, - { 117,-2322 }, { 118,-2322 }, { 119,-2322 }, { 120,-2322 }, { 121,-2322 }, - { 122,-2322 }, { 123,-2322 }, { 124,-2322 }, { 125,-2322 }, { 126,-2322 }, - { 127,-2322 }, { 128,-2322 }, { 129,-2322 }, { 130,-2322 }, { 131,-2322 }, - - { 132,-2322 }, { 133,-2322 }, { 134,-2322 }, { 135,-2322 }, { 136,-2322 }, - { 137,-2322 }, { 138,-2322 }, { 139,-2322 }, { 140,-2322 }, { 141,-2322 }, - { 142,-2322 }, { 143,-2322 }, { 144,-2322 }, { 145,-2322 }, { 146,-2322 }, - { 147,-2322 }, { 148,-2322 }, { 149,-2322 }, { 150,-2322 }, { 151,-2322 }, - { 152,-2322 }, { 153,-2322 }, { 154,-2322 }, { 155,-2322 }, { 156,-2322 }, - { 157,-2322 }, { 158,-2322 }, { 159,-2322 }, { 160,-2322 }, { 161,-2322 }, - { 162,-2322 }, { 163,-2322 }, { 164,-2322 }, { 165,-2322 }, { 166,-2322 }, - { 167,-2322 }, { 168,-2322 }, { 169,-2322 }, { 170,-2322 }, { 171,-2322 }, - { 172,-2322 }, { 173,-2322 }, { 174,-2322 }, { 175,-2322 }, { 176,-2322 }, - { 177,-2322 }, { 178,-2322 }, { 179,-2322 }, { 180,-2322 }, { 181,-2322 }, - - { 182,-2322 }, { 183,-2322 }, { 184,-2322 }, { 185,-2322 }, { 186,-2322 }, - { 187,-2322 }, { 188,-2322 }, { 189,-2322 }, { 190,-2322 }, { 191,-2322 }, - { 192,-2322 }, { 193,-2322 }, { 194,-2322 }, { 195,-2322 }, { 196,-2322 }, - { 197,-2322 }, { 198,-2322 }, { 199,-2322 }, { 200,-2322 }, { 201,-2322 }, - { 202,-2322 }, { 203,-2322 }, { 204,-2322 }, { 205,-2322 }, { 206,-2322 }, - { 207,-2322 }, { 208,-2322 }, { 209,-2322 }, { 210,-2322 }, { 211,-2322 }, - { 212,-2322 }, { 213,-2322 }, { 214,-2322 }, { 215,-2322 }, { 216,-2322 }, - { 217,-2322 }, { 218,-2322 }, { 219,-2322 }, { 220,-2322 }, { 221,-2322 }, - { 222,-2322 }, { 223,-2322 }, { 224,-2322 }, { 225,-2322 }, { 226,-2322 }, - { 227,-2322 }, { 228,-2322 }, { 229,-2322 }, { 230,-2322 }, { 231,-2322 }, - - { 232,-2322 }, { 233,-2322 }, { 234,-2322 }, { 235,-2322 }, { 236,-2322 }, - { 237,-2322 }, { 238,-2322 }, { 239,-2322 }, { 240,-2322 }, { 241,-2322 }, - { 242,-2322 }, { 243,-2322 }, { 244,-2322 }, { 245,-2322 }, { 246,-2322 }, - { 247,-2322 }, { 248,-2322 }, { 249,-2322 }, { 250,-2322 }, { 251,-2322 }, - { 252,-2322 }, { 253,-2322 }, { 254,-2322 }, { 255,-2322 }, { 256,-2322 }, - { 0, 55 }, { 0,2674 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 9,-3937 }, { 10,-3937 }, { 0, 0 }, { 12,-3937 }, { 13,-3937 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 32,-3937 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 39,1900 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 45,-25685 }, { 0, 55 }, { 0,2627 }, { 1,-2627 }, - { 2,-2627 }, { 3,-2627 }, { 4,-2627 }, { 5,-2627 }, { 6,-2627 }, - { 7,-2627 }, { 8,-2627 }, { 9,-2369 }, { 10,-3984 }, { 11,-2627 }, - { 12,-2369 }, { 13,-3984 }, { 14,-2627 }, { 15,-2627 }, { 16,-2627 }, - { 17,-2627 }, { 18,-2627 }, { 19,-2627 }, { 20,-2627 }, { 21,-2627 }, - { 22,-2627 }, { 23,-2627 }, { 24,-2627 }, { 25,-2627 }, { 26,-2627 }, - - { 27,-2627 }, { 28,-2627 }, { 29,-2627 }, { 30,-2627 }, { 31,-2627 }, - { 32,-2369 }, { 33,-2627 }, { 34,-2627 }, { 35,-2627 }, { 36,-2627 }, - { 37,-2627 }, { 38,-2627 }, { 39,1595 }, { 40,-2627 }, { 41,-2627 }, - { 42,-2627 }, { 43,-2627 }, { 44,-2627 }, { 45, 258 }, { 46,-2627 }, - { 47,-2627 }, { 48,-2627 }, { 49,-2627 }, { 50,-2627 }, { 51,-2627 }, - { 52,-2627 }, { 53,-2627 }, { 54,-2627 }, { 55,-2627 }, { 56,-2627 }, - { 57,-2627 }, { 58,-2627 }, { 59,-2627 }, { 60,-2627 }, { 61,-2627 }, - { 62,-2627 }, { 63,-2627 }, { 64,-2627 }, { 65,-2627 }, { 66,-2627 }, - { 67,-2627 }, { 68,-2627 }, { 69,-2627 }, { 70,-2627 }, { 71,-2627 }, - { 72,-2627 }, { 73,-2627 }, { 74,-2627 }, { 75,-2627 }, { 76,-2627 }, - - { 77,-2627 }, { 78,-2627 }, { 79,-2627 }, { 80,-2627 }, { 81,-2627 }, - { 82,-2627 }, { 83,-2627 }, { 84,-2627 }, { 85,-2627 }, { 86,-2627 }, - { 87,-2627 }, { 88,-2627 }, { 89,-2627 }, { 90,-2627 }, { 91,-2627 }, - { 92,-2627 }, { 93,-2627 }, { 94,-2627 }, { 95,-2627 }, { 96,-2627 }, - { 97,-2627 }, { 98,-2627 }, { 99,-2627 }, { 100,-2627 }, { 101,-2627 }, - { 102,-2627 }, { 103,-2627 }, { 104,-2627 }, { 105,-2627 }, { 106,-2627 }, - { 107,-2627 }, { 108,-2627 }, { 109,-2627 }, { 110,-2627 }, { 111,-2627 }, - { 112,-2627 }, { 113,-2627 }, { 114,-2627 }, { 115,-2627 }, { 116,-2627 }, - { 117,-2627 }, { 118,-2627 }, { 119,-2627 }, { 120,-2627 }, { 121,-2627 }, - { 122,-2627 }, { 123,-2627 }, { 124,-2627 }, { 125,-2627 }, { 126,-2627 }, - - { 127,-2627 }, { 128,-2627 }, { 129,-2627 }, { 130,-2627 }, { 131,-2627 }, - { 132,-2627 }, { 133,-2627 }, { 134,-2627 }, { 135,-2627 }, { 136,-2627 }, - { 137,-2627 }, { 138,-2627 }, { 139,-2627 }, { 140,-2627 }, { 141,-2627 }, - { 142,-2627 }, { 143,-2627 }, { 144,-2627 }, { 145,-2627 }, { 146,-2627 }, - { 147,-2627 }, { 148,-2627 }, { 149,-2627 }, { 150,-2627 }, { 151,-2627 }, - { 152,-2627 }, { 153,-2627 }, { 154,-2627 }, { 155,-2627 }, { 156,-2627 }, - { 157,-2627 }, { 158,-2627 }, { 159,-2627 }, { 160,-2627 }, { 161,-2627 }, - { 162,-2627 }, { 163,-2627 }, { 164,-2627 }, { 165,-2627 }, { 166,-2627 }, - { 167,-2627 }, { 168,-2627 }, { 169,-2627 }, { 170,-2627 }, { 171,-2627 }, - { 172,-2627 }, { 173,-2627 }, { 174,-2627 }, { 175,-2627 }, { 176,-2627 }, - - { 177,-2627 }, { 178,-2627 }, { 179,-2627 }, { 180,-2627 }, { 181,-2627 }, - { 182,-2627 }, { 183,-2627 }, { 184,-2627 }, { 185,-2627 }, { 186,-2627 }, - { 187,-2627 }, { 188,-2627 }, { 189,-2627 }, { 190,-2627 }, { 191,-2627 }, - { 192,-2627 }, { 193,-2627 }, { 194,-2627 }, { 195,-2627 }, { 196,-2627 }, - { 197,-2627 }, { 198,-2627 }, { 199,-2627 }, { 200,-2627 }, { 201,-2627 }, - { 202,-2627 }, { 203,-2627 }, { 204,-2627 }, { 205,-2627 }, { 206,-2627 }, - { 207,-2627 }, { 208,-2627 }, { 209,-2627 }, { 210,-2627 }, { 211,-2627 }, - { 212,-2627 }, { 213,-2627 }, { 214,-2627 }, { 215,-2627 }, { 216,-2627 }, - { 217,-2627 }, { 218,-2627 }, { 219,-2627 }, { 220,-2627 }, { 221,-2627 }, - { 222,-2627 }, { 223,-2627 }, { 224,-2627 }, { 225,-2627 }, { 226,-2627 }, - - { 227,-2627 }, { 228,-2627 }, { 229,-2627 }, { 230,-2627 }, { 231,-2627 }, - { 232,-2627 }, { 233,-2627 }, { 234,-2627 }, { 235,-2627 }, { 236,-2627 }, - { 237,-2627 }, { 238,-2627 }, { 239,-2627 }, { 240,-2627 }, { 241,-2627 }, - { 242,-2627 }, { 243,-2627 }, { 244,-2627 }, { 245,-2627 }, { 246,-2627 }, - { 247,-2627 }, { 248,-2627 }, { 249,-2627 }, { 250,-2627 }, { 251,-2627 }, - { 252,-2627 }, { 253,-2627 }, { 254,-2627 }, { 255,-2627 }, { 256,-2627 }, - { 0, 55 }, { 0,2369 }, { 1,-2885 }, { 2,-2885 }, { 3,-2885 }, - { 4,-2885 }, { 5,-2885 }, { 6,-2885 }, { 7,-2885 }, { 8,-2885 }, - { 9,-2627 }, { 10,-4242 }, { 11,-2885 }, { 12,-2627 }, { 13,-4242 }, - { 14,-2885 }, { 15,-2885 }, { 16,-2885 }, { 17,-2885 }, { 18,-2885 }, - - { 19,-2885 }, { 20,-2885 }, { 21,-2885 }, { 22,-2885 }, { 23,-2885 }, - { 24,-2885 }, { 25,-2885 }, { 26,-2885 }, { 27,-2885 }, { 28,-2885 }, - { 29,-2885 }, { 30,-2885 }, { 31,-2885 }, { 32,-2627 }, { 33,-2885 }, - { 34,-2885 }, { 35,-2885 }, { 36,-2885 }, { 37,-2885 }, { 38,-2885 }, - { 39,-2369 }, { 40,-2885 }, { 41,-2885 }, { 42,-2885 }, { 43,-2885 }, - { 44,-2885 }, { 45, 0 }, { 46,-2885 }, { 47,-2885 }, { 48,-2885 }, - { 49,-2885 }, { 50,-2885 }, { 51,-2885 }, { 52,-2885 }, { 53,-2885 }, - { 54,-2885 }, { 55,-2885 }, { 56,-2885 }, { 57,-2885 }, { 58,-2885 }, - { 59,-2885 }, { 60,-2885 }, { 61,-2885 }, { 62,-2885 }, { 63,-2885 }, - { 64,-2885 }, { 65,-2885 }, { 66,-2885 }, { 67,-2885 }, { 68,-2885 }, - - { 69,-2885 }, { 70,-2885 }, { 71,-2885 }, { 72,-2885 }, { 73,-2885 }, - { 74,-2885 }, { 75,-2885 }, { 76,-2885 }, { 77,-2885 }, { 78,-2885 }, - { 79,-2885 }, { 80,-2885 }, { 81,-2885 }, { 82,-2885 }, { 83,-2885 }, - { 84,-2885 }, { 85,-2885 }, { 86,-2885 }, { 87,-2885 }, { 88,-2885 }, - { 89,-2885 }, { 90,-2885 }, { 91,-2885 }, { 92,-2885 }, { 93,-2885 }, - { 94,-2885 }, { 95,-2885 }, { 96,-2885 }, { 97,-2885 }, { 98,-2885 }, - { 99,-2885 }, { 100,-2885 }, { 101,-2885 }, { 102,-2885 }, { 103,-2885 }, - { 104,-2885 }, { 105,-2885 }, { 106,-2885 }, { 107,-2885 }, { 108,-2885 }, - { 109,-2885 }, { 110,-2885 }, { 111,-2885 }, { 112,-2885 }, { 113,-2885 }, - { 114,-2885 }, { 115,-2885 }, { 116,-2885 }, { 117,-2885 }, { 118,-2885 }, - - { 119,-2885 }, { 120,-2885 }, { 121,-2885 }, { 122,-2885 }, { 123,-2885 }, - { 124,-2885 }, { 125,-2885 }, { 126,-2885 }, { 127,-2885 }, { 128,-2885 }, - { 129,-2885 }, { 130,-2885 }, { 131,-2885 }, { 132,-2885 }, { 133,-2885 }, - { 134,-2885 }, { 135,-2885 }, { 136,-2885 }, { 137,-2885 }, { 138,-2885 }, - { 139,-2885 }, { 140,-2885 }, { 141,-2885 }, { 142,-2885 }, { 143,-2885 }, - { 144,-2885 }, { 145,-2885 }, { 146,-2885 }, { 147,-2885 }, { 148,-2885 }, - { 149,-2885 }, { 150,-2885 }, { 151,-2885 }, { 152,-2885 }, { 153,-2885 }, - { 154,-2885 }, { 155,-2885 }, { 156,-2885 }, { 157,-2885 }, { 158,-2885 }, - { 159,-2885 }, { 160,-2885 }, { 161,-2885 }, { 162,-2885 }, { 163,-2885 }, - { 164,-2885 }, { 165,-2885 }, { 166,-2885 }, { 167,-2885 }, { 168,-2885 }, - - { 169,-2885 }, { 170,-2885 }, { 171,-2885 }, { 172,-2885 }, { 173,-2885 }, - { 174,-2885 }, { 175,-2885 }, { 176,-2885 }, { 177,-2885 }, { 178,-2885 }, - { 179,-2885 }, { 180,-2885 }, { 181,-2885 }, { 182,-2885 }, { 183,-2885 }, - { 184,-2885 }, { 185,-2885 }, { 186,-2885 }, { 187,-2885 }, { 188,-2885 }, - { 189,-2885 }, { 190,-2885 }, { 191,-2885 }, { 192,-2885 }, { 193,-2885 }, - { 194,-2885 }, { 195,-2885 }, { 196,-2885 }, { 197,-2885 }, { 198,-2885 }, - { 199,-2885 }, { 200,-2885 }, { 201,-2885 }, { 202,-2885 }, { 203,-2885 }, - { 204,-2885 }, { 205,-2885 }, { 206,-2885 }, { 207,-2885 }, { 208,-2885 }, - { 209,-2885 }, { 210,-2885 }, { 211,-2885 }, { 212,-2885 }, { 213,-2885 }, - { 214,-2885 }, { 215,-2885 }, { 216,-2885 }, { 217,-2885 }, { 218,-2885 }, - - { 219,-2885 }, { 220,-2885 }, { 221,-2885 }, { 222,-2885 }, { 223,-2885 }, - { 224,-2885 }, { 225,-2885 }, { 226,-2885 }, { 227,-2885 }, { 228,-2885 }, - { 229,-2885 }, { 230,-2885 }, { 231,-2885 }, { 232,-2885 }, { 233,-2885 }, - { 234,-2885 }, { 235,-2885 }, { 236,-2885 }, { 237,-2885 }, { 238,-2885 }, - { 239,-2885 }, { 240,-2885 }, { 241,-2885 }, { 242,-2885 }, { 243,-2885 }, - { 244,-2885 }, { 245,-2885 }, { 246,-2885 }, { 247,-2885 }, { 248,-2885 }, - { 249,-2885 }, { 250,-2885 }, { 251,-2885 }, { 252,-2885 }, { 253,-2885 }, - { 254,-2885 }, { 255,-2885 }, { 256,-2885 }, { 0, 28 }, { 0,2111 }, - { 1,-2111 }, { 2,-2111 }, { 3,-2111 }, { 4,-2111 }, { 5,-2111 }, - { 6,-2111 }, { 7,-2111 }, { 8,-2111 }, { 9,-1853 }, { 10,-4195 }, - - { 11,-2111 }, { 12,-1853 }, { 13,-4195 }, { 14,-2111 }, { 15,-2111 }, - { 16,-2111 }, { 17,-2111 }, { 18,-2111 }, { 19,-2111 }, { 20,-2111 }, - { 21,-2111 }, { 22,-2111 }, { 23,-2111 }, { 24,-2111 }, { 25,-2111 }, - { 26,-2111 }, { 27,-2111 }, { 28,-2111 }, { 29,-2111 }, { 30,-2111 }, - { 31,-2111 }, { 32,-1853 }, { 33,-2111 }, { 34,-2111 }, { 35,-2111 }, - { 36,-2111 }, { 37,-2111 }, { 38,-2111 }, { 39,1595 }, { 40,-2111 }, - { 41,-2111 }, { 42,-2111 }, { 43,-2111 }, { 44,-2111 }, { 45,-1337 }, - { 46,-2111 }, { 47,-2111 }, { 48,-2111 }, { 49,-2111 }, { 50,-2111 }, - { 51,-2111 }, { 52,-2111 }, { 53,-2111 }, { 54,-2111 }, { 55,-2111 }, - { 56,-2111 }, { 57,-2111 }, { 58,-2111 }, { 59,-2111 }, { 60,-2111 }, - - { 61,-2111 }, { 62,-2111 }, { 63,-2111 }, { 64,-2111 }, { 65,-2111 }, - { 66,-2111 }, { 67,-2111 }, { 68,-2111 }, { 69,-2111 }, { 70,-2111 }, - { 71,-2111 }, { 72,-2111 }, { 73,-2111 }, { 74,-2111 }, { 75,-2111 }, - { 76,-2111 }, { 77,-2111 }, { 78,-2111 }, { 79,-2111 }, { 80,-2111 }, - { 81,-2111 }, { 82,-2111 }, { 83,-2111 }, { 84,-2111 }, { 85,-2111 }, - { 86,-2111 }, { 87,-2111 }, { 88,-2111 }, { 89,-2111 }, { 90,-2111 }, - { 91,-2111 }, { 92,-2111 }, { 93,-2111 }, { 94,-2111 }, { 95,-2111 }, - { 96,-2111 }, { 97,-2111 }, { 98,-2111 }, { 99,-2111 }, { 100,-2111 }, - { 101,-2111 }, { 102,-2111 }, { 103,-2111 }, { 104,-2111 }, { 105,-2111 }, - { 106,-2111 }, { 107,-2111 }, { 108,-2111 }, { 109,-2111 }, { 110,-2111 }, - - { 111,-2111 }, { 112,-2111 }, { 113,-2111 }, { 114,-2111 }, { 115,-2111 }, - { 116,-2111 }, { 117,-2111 }, { 118,-2111 }, { 119,-2111 }, { 120,-2111 }, - { 121,-2111 }, { 122,-2111 }, { 123,-2111 }, { 124,-2111 }, { 125,-2111 }, - { 126,-2111 }, { 127,-2111 }, { 128,-2111 }, { 129,-2111 }, { 130,-2111 }, - { 131,-2111 }, { 132,-2111 }, { 133,-2111 }, { 134,-2111 }, { 135,-2111 }, - { 136,-2111 }, { 137,-2111 }, { 138,-2111 }, { 139,-2111 }, { 140,-2111 }, - { 141,-2111 }, { 142,-2111 }, { 143,-2111 }, { 144,-2111 }, { 145,-2111 }, - { 146,-2111 }, { 147,-2111 }, { 148,-2111 }, { 149,-2111 }, { 150,-2111 }, - { 151,-2111 }, { 152,-2111 }, { 153,-2111 }, { 154,-2111 }, { 155,-2111 }, - { 156,-2111 }, { 157,-2111 }, { 158,-2111 }, { 159,-2111 }, { 160,-2111 }, - - { 161,-2111 }, { 162,-2111 }, { 163,-2111 }, { 164,-2111 }, { 165,-2111 }, - { 166,-2111 }, { 167,-2111 }, { 168,-2111 }, { 169,-2111 }, { 170,-2111 }, - { 171,-2111 }, { 172,-2111 }, { 173,-2111 }, { 174,-2111 }, { 175,-2111 }, - { 176,-2111 }, { 177,-2111 }, { 178,-2111 }, { 179,-2111 }, { 180,-2111 }, - { 181,-2111 }, { 182,-2111 }, { 183,-2111 }, { 184,-2111 }, { 185,-2111 }, - { 186,-2111 }, { 187,-2111 }, { 188,-2111 }, { 189,-2111 }, { 190,-2111 }, - { 191,-2111 }, { 192,-2111 }, { 193,-2111 }, { 194,-2111 }, { 195,-2111 }, - { 196,-2111 }, { 197,-2111 }, { 198,-2111 }, { 199,-2111 }, { 200,-2111 }, - { 201,-2111 }, { 202,-2111 }, { 203,-2111 }, { 204,-2111 }, { 205,-2111 }, - { 206,-2111 }, { 207,-2111 }, { 208,-2111 }, { 209,-2111 }, { 210,-2111 }, - - { 211,-2111 }, { 212,-2111 }, { 213,-2111 }, { 214,-2111 }, { 215,-2111 }, - { 216,-2111 }, { 217,-2111 }, { 218,-2111 }, { 219,-2111 }, { 220,-2111 }, - { 221,-2111 }, { 222,-2111 }, { 223,-2111 }, { 224,-2111 }, { 225,-2111 }, - { 226,-2111 }, { 227,-2111 }, { 228,-2111 }, { 229,-2111 }, { 230,-2111 }, - { 231,-2111 }, { 232,-2111 }, { 233,-2111 }, { 234,-2111 }, { 235,-2111 }, - { 236,-2111 }, { 237,-2111 }, { 238,-2111 }, { 239,-2111 }, { 240,-2111 }, - { 241,-2111 }, { 242,-2111 }, { 243,-2111 }, { 244,-2111 }, { 245,-2111 }, - { 246,-2111 }, { 247,-2111 }, { 248,-2111 }, { 249,-2111 }, { 250,-2111 }, - { 251,-2111 }, { 252,-2111 }, { 253,-2111 }, { 254,-2111 }, { 255,-2111 }, - { 256,-2111 }, { 0, 28 }, { 0,1853 }, { 1,-2369 }, { 2,-2369 }, - - { 3,-2369 }, { 4,-2369 }, { 5,-2369 }, { 6,-2369 }, { 7,-2369 }, - { 8,-2369 }, { 9,-2111 }, { 10,-4453 }, { 11,-2369 }, { 12,-2111 }, - { 13,-4453 }, { 14,-2369 }, { 15,-2369 }, { 16,-2369 }, { 17,-2369 }, - { 18,-2369 }, { 19,-2369 }, { 20,-2369 }, { 21,-2369 }, { 22,-2369 }, - { 23,-2369 }, { 24,-2369 }, { 25,-2369 }, { 26,-2369 }, { 27,-2369 }, - { 28,-2369 }, { 29,-2369 }, { 30,-2369 }, { 31,-2369 }, { 32,-2111 }, - { 33,-2369 }, { 34,-2369 }, { 35,-2369 }, { 36,-2369 }, { 37,-2369 }, - { 38,-2369 }, { 39,1337 }, { 40,-2369 }, { 41,-2369 }, { 42,-2369 }, - { 43,-2369 }, { 44,-2369 }, { 45,-1595 }, { 46,-2369 }, { 47,-2369 }, - { 48,-2369 }, { 49,-2369 }, { 50,-2369 }, { 51,-2369 }, { 52,-2369 }, - - { 53,-2369 }, { 54,-2369 }, { 55,-2369 }, { 56,-2369 }, { 57,-2369 }, - { 58,-2369 }, { 59,-2369 }, { 60,-2369 }, { 61,-2369 }, { 62,-2369 }, - { 63,-2369 }, { 64,-2369 }, { 65,-2369 }, { 66,-2369 }, { 67,-2369 }, - { 68,-2369 }, { 69,-2369 }, { 70,-2369 }, { 71,-2369 }, { 72,-2369 }, - { 73,-2369 }, { 74,-2369 }, { 75,-2369 }, { 76,-2369 }, { 77,-2369 }, - { 78,-2369 }, { 79,-2369 }, { 80,-2369 }, { 81,-2369 }, { 82,-2369 }, - { 83,-2369 }, { 84,-2369 }, { 85,-2369 }, { 86,-2369 }, { 87,-2369 }, - { 88,-2369 }, { 89,-2369 }, { 90,-2369 }, { 91,-2369 }, { 92,-2369 }, - { 93,-2369 }, { 94,-2369 }, { 95,-2369 }, { 96,-2369 }, { 97,-2369 }, - { 98,-2369 }, { 99,-2369 }, { 100,-2369 }, { 101,-2369 }, { 102,-2369 }, - - { 103,-2369 }, { 104,-2369 }, { 105,-2369 }, { 106,-2369 }, { 107,-2369 }, - { 108,-2369 }, { 109,-2369 }, { 110,-2369 }, { 111,-2369 }, { 112,-2369 }, - { 113,-2369 }, { 114,-2369 }, { 115,-2369 }, { 116,-2369 }, { 117,-2369 }, - { 118,-2369 }, { 119,-2369 }, { 120,-2369 }, { 121,-2369 }, { 122,-2369 }, - { 123,-2369 }, { 124,-2369 }, { 125,-2369 }, { 126,-2369 }, { 127,-2369 }, - { 128,-2369 }, { 129,-2369 }, { 130,-2369 }, { 131,-2369 }, { 132,-2369 }, - { 133,-2369 }, { 134,-2369 }, { 135,-2369 }, { 136,-2369 }, { 137,-2369 }, - { 138,-2369 }, { 139,-2369 }, { 140,-2369 }, { 141,-2369 }, { 142,-2369 }, - { 143,-2369 }, { 144,-2369 }, { 145,-2369 }, { 146,-2369 }, { 147,-2369 }, - { 148,-2369 }, { 149,-2369 }, { 150,-2369 }, { 151,-2369 }, { 152,-2369 }, - - { 153,-2369 }, { 154,-2369 }, { 155,-2369 }, { 156,-2369 }, { 157,-2369 }, - { 158,-2369 }, { 159,-2369 }, { 160,-2369 }, { 161,-2369 }, { 162,-2369 }, - { 163,-2369 }, { 164,-2369 }, { 165,-2369 }, { 166,-2369 }, { 167,-2369 }, - { 168,-2369 }, { 169,-2369 }, { 170,-2369 }, { 171,-2369 }, { 172,-2369 }, - { 173,-2369 }, { 174,-2369 }, { 175,-2369 }, { 176,-2369 }, { 177,-2369 }, - { 178,-2369 }, { 179,-2369 }, { 180,-2369 }, { 181,-2369 }, { 182,-2369 }, - { 183,-2369 }, { 184,-2369 }, { 185,-2369 }, { 186,-2369 }, { 187,-2369 }, - { 188,-2369 }, { 189,-2369 }, { 190,-2369 }, { 191,-2369 }, { 192,-2369 }, - { 193,-2369 }, { 194,-2369 }, { 195,-2369 }, { 196,-2369 }, { 197,-2369 }, - { 198,-2369 }, { 199,-2369 }, { 200,-2369 }, { 201,-2369 }, { 202,-2369 }, - - { 203,-2369 }, { 204,-2369 }, { 205,-2369 }, { 206,-2369 }, { 207,-2369 }, - { 208,-2369 }, { 209,-2369 }, { 210,-2369 }, { 211,-2369 }, { 212,-2369 }, - { 213,-2369 }, { 214,-2369 }, { 215,-2369 }, { 216,-2369 }, { 217,-2369 }, - { 218,-2369 }, { 219,-2369 }, { 220,-2369 }, { 221,-2369 }, { 222,-2369 }, - { 223,-2369 }, { 224,-2369 }, { 225,-2369 }, { 226,-2369 }, { 227,-2369 }, - { 228,-2369 }, { 229,-2369 }, { 230,-2369 }, { 231,-2369 }, { 232,-2369 }, - { 233,-2369 }, { 234,-2369 }, { 235,-2369 }, { 236,-2369 }, { 237,-2369 }, - { 238,-2369 }, { 239,-2369 }, { 240,-2369 }, { 241,-2369 }, { 242,-2369 }, - { 243,-2369 }, { 244,-2369 }, { 245,-2369 }, { 246,-2369 }, { 247,-2369 }, - { 248,-2369 }, { 249,-2369 }, { 250,-2369 }, { 251,-2369 }, { 252,-2369 }, - - { 253,-2369 }, { 254,-2369 }, { 255,-2369 }, { 256,-2369 }, { 0, 28 }, - { 0,1595 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 9,-4711 }, - { 10,-4711 }, { 0, 0 }, { 12,-4711 }, { 13,-4711 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 32,-4711 }, { 0, 0 }, { 0, 0 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 39,1337 }, - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, - - { 45,-26753 }, { 0, 28 }, { 0,1548 }, { 1,-2674 }, { 2,-2674 }, - { 3,-2674 }, { 4,-2674 }, { 5,-2674 }, { 6,-2674 }, { 7,-2674 }, - { 8,-2674 }, { 9,-2416 }, { 10,-4758 }, { 11,-2674 }, { 12,-2416 }, - { 13,-4758 }, { 14,-2674 }, { 15,-2674 }, { 16,-2674 }, { 17,-2674 }, - { 18,-2674 }, { 19,-2674 }, { 20,-2674 }, { 21,-2674 }, { 22,-2674 }, - { 23,-2674 }, { 24,-2674 }, { 25,-2674 }, { 26,-2674 }, { 27,-2674 }, - { 28,-2674 }, { 29,-2674 }, { 30,-2674 }, { 31,-2674 }, { 32,-2416 }, - { 33,-2674 }, { 34,-2674 }, { 35,-2674 }, { 36,-2674 }, { 37,-2674 }, - { 38,-2674 }, { 39,1032 }, { 40,-2674 }, { 41,-2674 }, { 42,-2674 }, - { 43,-2674 }, { 44,-2674 }, { 45, 258 }, { 46,-2674 }, { 47,-2674 }, - - { 48,-2674 }, { 49,-2674 }, { 50,-2674 }, { 51,-2674 }, { 52,-2674 }, - { 53,-2674 }, { 54,-2674 }, { 55,-2674 }, { 56,-2674 }, { 57,-2674 }, - { 58,-2674 }, { 59,-2674 }, { 60,-2674 }, { 61,-2674 }, { 62,-2674 }, - { 63,-2674 }, { 64,-2674 }, { 65,-2674 }, { 66,-2674 }, { 67,-2674 }, - { 68,-2674 }, { 69,-2674 }, { 70,-2674 }, { 71,-2674 }, { 72,-2674 }, - { 73,-2674 }, { 74,-2674 }, { 75,-2674 }, { 76,-2674 }, { 77,-2674 }, - { 78,-2674 }, { 79,-2674 }, { 80,-2674 }, { 81,-2674 }, { 82,-2674 }, - { 83,-2674 }, { 84,-2674 }, { 85,-2674 }, { 86,-2674 }, { 87,-2674 }, - { 88,-2674 }, { 89,-2674 }, { 90,-2674 }, { 91,-2674 }, { 92,-2674 }, - { 93,-2674 }, { 94,-2674 }, { 95,-2674 }, { 96,-2674 }, { 97,-2674 }, - - { 98,-2674 }, { 99,-2674 }, { 100,-2674 }, { 101,-2674 }, { 102,-2674 }, - { 103,-2674 }, { 104,-2674 }, { 105,-2674 }, { 106,-2674 }, { 107,-2674 }, - { 108,-2674 }, { 109,-2674 }, { 110,-2674 }, { 111,-2674 }, { 112,-2674 }, - { 113,-2674 }, { 114,-2674 }, { 115,-2674 }, { 116,-2674 }, { 117,-2674 }, - { 118,-2674 }, { 119,-2674 }, { 120,-2674 }, { 121,-2674 }, { 122,-2674 }, - { 123,-2674 }, { 124,-2674 }, { 125,-2674 }, { 126,-2674 }, { 127,-2674 }, - { 128,-2674 }, { 129,-2674 }, { 130,-2674 }, { 131,-2674 }, { 132,-2674 }, - { 133,-2674 }, { 134,-2674 }, { 135,-2674 }, { 136,-2674 }, { 137,-2674 }, - { 138,-2674 }, { 139,-2674 }, { 140,-2674 }, { 141,-2674 }, { 142,-2674 }, - { 143,-2674 }, { 144,-2674 }, { 145,-2674 }, { 146,-2674 }, { 147,-2674 }, - - { 148,-2674 }, { 149,-2674 }, { 150,-2674 }, { 151,-2674 }, { 152,-2674 }, - { 153,-2674 }, { 154,-2674 }, { 155,-2674 }, { 156,-2674 }, { 157,-2674 }, - { 158,-2674 }, { 159,-2674 }, { 160,-2674 }, { 161,-2674 }, { 162,-2674 }, - { 163,-2674 }, { 164,-2674 }, { 165,-2674 }, { 166,-2674 }, { 167,-2674 }, - { 168,-2674 }, { 169,-2674 }, { 170,-2674 }, { 171,-2674 }, { 172,-2674 }, - { 173,-2674 }, { 174,-2674 }, { 175,-2674 }, { 176,-2674 }, { 177,-2674 }, - { 178,-2674 }, { 179,-2674 }, { 180,-2674 }, { 181,-2674 }, { 182,-2674 }, - { 183,-2674 }, { 184,-2674 }, { 185,-2674 }, { 186,-2674 }, { 187,-2674 }, - { 188,-2674 }, { 189,-2674 }, { 190,-2674 }, { 191,-2674 }, { 192,-2674 }, - { 193,-2674 }, { 194,-2674 }, { 195,-2674 }, { 196,-2674 }, { 197,-2674 }, - - { 198,-2674 }, { 199,-2674 }, { 200,-2674 }, { 201,-2674 }, { 202,-2674 }, - { 203,-2674 }, { 204,-2674 }, { 205,-2674 }, { 206,-2674 }, { 207,-2674 }, - { 208,-2674 }, { 209,-2674 }, { 210,-2674 }, { 211,-2674 }, { 212,-2674 }, - { 213,-2674 }, { 214,-2674 }, { 215,-2674 }, { 216,-2674 }, { 217,-2674 }, - { 218,-2674 }, { 219,-2674 }, { 220,-2674 }, { 221,-2674 }, { 222,-2674 }, - { 223,-2674 }, { 224,-2674 }, { 225,-2674 }, { 226,-2674 }, { 227,-2674 }, - { 228,-2674 }, { 229,-2674 }, { 230,-2674 }, { 231,-2674 }, { 232,-2674 }, - { 233,-2674 }, { 234,-2674 }, { 235,-2674 }, { 236,-2674 }, { 237,-2674 }, - { 238,-2674 }, { 239,-2674 }, { 240,-2674 }, { 241,-2674 }, { 242,-2674 }, - { 243,-2674 }, { 244,-2674 }, { 245,-2674 }, { 246,-2674 }, { 247,-2674 }, - - { 248,-2674 }, { 249,-2674 }, { 250,-2674 }, { 251,-2674 }, { 252,-2674 }, - { 253,-2674 }, { 254,-2674 }, { 255,-2674 }, { 256,-2674 }, { 0, 28 }, - { 0,1290 }, { 1,-2932 }, { 2,-2932 }, { 3,-2932 }, { 4,-2932 }, - { 5,-2932 }, { 6,-2932 }, { 7,-2932 }, { 8,-2932 }, { 9,-2674 }, - { 10,-5016 }, { 11,-2932 }, { 12,-2674 }, { 13,-5016 }, { 14,-2932 }, - { 15,-2932 }, { 16,-2932 }, { 17,-2932 }, { 18,-2932 }, { 19,-2932 }, - { 20,-2932 }, { 21,-2932 }, { 22,-2932 }, { 23,-2932 }, { 24,-2932 }, - { 25,-2932 }, { 26,-2932 }, { 27,-2932 }, { 28,-2932 }, { 29,-2932 }, - { 30,-2932 }, { 31,-2932 }, { 32,-2674 }, { 33,-2932 }, { 34,-2932 }, - { 35,-2932 }, { 36,-2932 }, { 37,-2932 }, { 38,-2932 }, { 39,-2416 }, - - { 40,-2932 }, { 41,-2932 }, { 42,-2932 }, { 43,-2932 }, { 44,-2932 }, - { 45, 0 }, { 46,-2932 }, { 47,-2932 }, { 48,-2932 }, { 49,-2932 }, - { 50,-2932 }, { 51,-2932 }, { 52,-2932 }, { 53,-2932 }, { 54,-2932 }, - { 55,-2932 }, { 56,-2932 }, { 57,-2932 }, { 58,-2932 }, { 59,-2932 }, - { 60,-2932 }, { 61,-2932 }, { 62,-2932 }, { 63,-2932 }, { 64,-2932 }, - { 65,-2932 }, { 66,-2932 }, { 67,-2932 }, { 68,-2932 }, { 69,-2932 }, - { 70,-2932 }, { 71,-2932 }, { 72,-2932 }, { 73,-2932 }, { 74,-2932 }, - { 75,-2932 }, { 76,-2932 }, { 77,-2932 }, { 78,-2932 }, { 79,-2932 }, - { 80,-2932 }, { 81,-2932 }, { 82,-2932 }, { 83,-2932 }, { 84,-2932 }, - { 85,-2932 }, { 86,-2932 }, { 87,-2932 }, { 88,-2932 }, { 89,-2932 }, - - { 90,-2932 }, { 91,-2932 }, { 92,-2932 }, { 93,-2932 }, { 94,-2932 }, - { 95,-2932 }, { 96,-2932 }, { 97,-2932 }, { 98,-2932 }, { 99,-2932 }, - { 100,-2932 }, { 101,-2932 }, { 102,-2932 }, { 103,-2932 }, { 104,-2932 }, - { 105,-2932 }, { 106,-2932 }, { 107,-2932 }, { 108,-2932 }, { 109,-2932 }, - { 110,-2932 }, { 111,-2932 }, { 112,-2932 }, { 113,-2932 }, { 114,-2932 }, - { 115,-2932 }, { 116,-2932 }, { 117,-2932 }, { 118,-2932 }, { 119,-2932 }, - { 120,-2932 }, { 121,-2932 }, { 122,-2932 }, { 123,-2932 }, { 124,-2932 }, - { 125,-2932 }, { 126,-2932 }, { 127,-2932 }, { 128,-2932 }, { 129,-2932 }, - { 130,-2932 }, { 131,-2932 }, { 132,-2932 }, { 133,-2932 }, { 134,-2932 }, - { 135,-2932 }, { 136,-2932 }, { 137,-2932 }, { 138,-2932 }, { 139,-2932 }, - - { 140,-2932 }, { 141,-2932 }, { 142,-2932 }, { 143,-2932 }, { 144,-2932 }, - { 145,-2932 }, { 146,-2932 }, { 147,-2932 }, { 148,-2932 }, { 149,-2932 }, - { 150,-2932 }, { 151,-2932 }, { 152,-2932 }, { 153,-2932 }, { 154,-2932 }, - { 155,-2932 }, { 156,-2932 }, { 157,-2932 }, { 158,-2932 }, { 159,-2932 }, - { 160,-2932 }, { 161,-2932 }, { 162,-2932 }, { 163,-2932 }, { 164,-2932 }, - { 165,-2932 }, { 166,-2932 }, { 167,-2932 }, { 168,-2932 }, { 169,-2932 }, - { 170,-2932 }, { 171,-2932 }, { 172,-2932 }, { 173,-2932 }, { 174,-2932 }, - { 175,-2932 }, { 176,-2932 }, { 177,-2932 }, { 178,-2932 }, { 179,-2932 }, - { 180,-2932 }, { 181,-2932 }, { 182,-2932 }, { 183,-2932 }, { 184,-2932 }, - { 185,-2932 }, { 186,-2932 }, { 187,-2932 }, { 188,-2932 }, { 189,-2932 }, - - { 190,-2932 }, { 191,-2932 }, { 192,-2932 }, { 193,-2932 }, { 194,-2932 }, - { 195,-2932 }, { 196,-2932 }, { 197,-2932 }, { 198,-2932 }, { 199,-2932 }, - { 200,-2932 }, { 201,-2932 }, { 202,-2932 }, { 203,-2932 }, { 204,-2932 }, - { 205,-2932 }, { 206,-2932 }, { 207,-2932 }, { 208,-2932 }, { 209,-2932 }, - { 210,-2932 }, { 211,-2932 }, { 212,-2932 }, { 213,-2932 }, { 214,-2932 }, - { 215,-2932 }, { 216,-2932 }, { 217,-2932 }, { 218,-2932 }, { 219,-2932 }, - { 220,-2932 }, { 221,-2932 }, { 222,-2932 }, { 223,-2932 }, { 224,-2932 }, - { 225,-2932 }, { 226,-2932 }, { 227,-2932 }, { 228,-2932 }, { 229,-2932 }, - { 230,-2932 }, { 231,-2932 }, { 232,-2932 }, { 233,-2932 }, { 234,-2932 }, - { 235,-2932 }, { 236,-2932 }, { 237,-2932 }, { 238,-2932 }, { 239,-2932 }, - - { 240,-2932 }, { 241,-2932 }, { 242,-2932 }, { 243,-2932 }, { 244,-2932 }, - { 245,-2932 }, { 246,-2932 }, { 247,-2932 }, { 248,-2932 }, { 249,-2932 }, - { 250,-2932 }, { 251,-2932 }, { 252,-2932 }, { 253,-2932 }, { 254,-2932 }, - { 255,-2932 }, { 256,-2932 }, { 0, 55 }, { 0,1032 }, { 1,-2158 }, - { 2,-2158 }, { 3,-2158 }, { 4,-2158 }, { 5,-2158 }, { 6,-2158 }, - { 7,-2158 }, { 8,-2158 }, { 9,-1900 }, { 10,-1642 }, { 11,-2158 }, - { 12,-1900 }, { 13,-1642 }, { 14,-2158 }, { 15,-2158 }, { 16,-2158 }, - { 17,-2158 }, { 18,-2158 }, { 19,-2158 }, { 20,-2158 }, { 21,-2158 }, - { 22,-2158 }, { 23,-2158 }, { 24,-2158 }, { 25,-2158 }, { 26,-2158 }, - { 27,-2158 }, { 28,-2158 }, { 29,-2158 }, { 30,-2158 }, { 31,-2158 }, - - { 32,-1900 }, { 33,-2158 }, { 34,-2158 }, { 35,-2158 }, { 36,-2158 }, - { 37,-2158 }, { 38,-2158 }, { 39,-3706 }, { 40,-2158 }, { 41,-2158 }, - { 42,-2158 }, { 43,-2158 }, { 44,-2158 }, { 45,-1595 }, { 46,-2158 }, - { 47,-2158 }, { 48,-2158 }, { 49,-2158 }, { 50,-2158 }, { 51,-2158 }, - { 52,-2158 }, { 53,-2158 }, { 54,-2158 }, { 55,-2158 }, { 56,-2158 }, - { 57,-2158 }, { 58,-2158 }, { 59,-2158 }, { 60,-2158 }, { 61,-2158 }, - { 62,-2158 }, { 63,-2158 }, { 64,-2158 }, { 65,-2158 }, { 66,-2158 }, - { 67,-2158 }, { 68,-2158 }, { 69,-2158 }, { 70,-2158 }, { 71,-2158 }, - { 72,-2158 }, { 73,-2158 }, { 74,-2158 }, { 75,-2158 }, { 76,-2158 }, - { 77,-2158 }, { 78,-2158 }, { 79,-2158 }, { 80,-2158 }, { 81,-2158 }, - - { 82,-2158 }, { 83,-2158 }, { 84,-2158 }, { 85,-2158 }, { 86,-2158 }, - { 87,-2158 }, { 88,-2158 }, { 89,-2158 }, { 90,-2158 }, { 91,-2158 }, - { 92,-2158 }, { 93,-2158 }, { 94,-2158 }, { 95,-2158 }, { 96,-2158 }, - { 97,-2158 }, { 98,-2158 }, { 99,-2158 }, { 100,-2158 }, { 101,-2158 }, - { 102,-2158 }, { 103,-2158 }, { 104,-2158 }, { 105,-2158 }, { 106,-2158 }, - { 107,-2158 }, { 108,-2158 }, { 109,-2158 }, { 110,-2158 }, { 111,-2158 }, - { 112,-2158 }, { 113,-2158 }, { 114,-2158 }, { 115,-2158 }, { 116,-2158 }, - { 117,-2158 }, { 118,-2158 }, { 119,-2158 }, { 120,-2158 }, { 121,-2158 }, - { 122,-2158 }, { 123,-2158 }, { 124,-2158 }, { 125,-2158 }, { 126,-2158 }, - { 127,-2158 }, { 128,-2158 }, { 129,-2158 }, { 130,-2158 }, { 131,-2158 }, - - { 132,-2158 }, { 133,-2158 }, { 134,-2158 }, { 135,-2158 }, { 136,-2158 }, - { 137,-2158 }, { 138,-2158 }, { 139,-2158 }, { 140,-2158 }, { 141,-2158 }, - { 142,-2158 }, { 143,-2158 }, { 144,-2158 }, { 145,-2158 }, { 146,-2158 }, - { 147,-2158 }, { 148,-2158 }, { 149,-2158 }, { 150,-2158 }, { 151,-2158 }, - { 152,-2158 }, { 153,-2158 }, { 154,-2158 }, { 155,-2158 }, { 156,-2158 }, - { 157,-2158 }, { 158,-2158 }, { 159,-2158 }, { 160,-2158 }, { 161,-2158 }, - { 162,-2158 }, { 163,-2158 }, { 164,-2158 }, { 165,-2158 }, { 166,-2158 }, - { 167,-2158 }, { 168,-2158 }, { 169,-2158 }, { 170,-2158 }, { 171,-2158 }, - { 172,-2158 }, { 173,-2158 }, { 174,-2158 }, { 175,-2158 }, { 176,-2158 }, - { 177,-2158 }, { 178,-2158 }, { 179,-2158 }, { 180,-2158 }, { 181,-2158 }, - - { 182,-2158 }, { 183,-2158 }, { 184,-2158 }, { 185,-2158 }, { 186,-2158 }, - { 187,-2158 }, { 188,-2158 }, { 189,-2158 }, { 190,-2158 }, { 191,-2158 }, - { 192,-2158 }, { 193,-2158 }, { 194,-2158 }, { 195,-2158 }, { 196,-2158 }, - { 197,-2158 }, { 198,-2158 }, { 199,-2158 }, { 200,-2158 }, { 201,-2158 }, - { 202,-2158 }, { 203,-2158 }, { 204,-2158 }, { 205,-2158 }, { 206,-2158 }, - { 207,-2158 }, { 208,-2158 }, { 209,-2158 }, { 210,-2158 }, { 211,-2158 }, - { 212,-2158 }, { 213,-2158 }, { 214,-2158 }, { 215,-2158 }, { 216,-2158 }, - { 217,-2158 }, { 218,-2158 }, { 219,-2158 }, { 220,-2158 }, { 221,-2158 }, - { 222,-2158 }, { 223,-2158 }, { 224,-2158 }, { 225,-2158 }, { 226,-2158 }, - { 227,-2158 }, { 228,-2158 }, { 229,-2158 }, { 230,-2158 }, { 231,-2158 }, - - { 232,-2158 }, { 233,-2158 }, { 234,-2158 }, { 235,-2158 }, { 236,-2158 }, - { 237,-2158 }, { 238,-2158 }, { 239,-2158 }, { 240,-2158 }, { 241,-2158 }, - { 242,-2158 }, { 243,-2158 }, { 244,-2158 }, { 245,-2158 }, { 246,-2158 }, - { 247,-2158 }, { 248,-2158 }, { 249,-2158 }, { 250,-2158 }, { 251,-2158 }, - { 252,-2158 }, { 253,-2158 }, { 254,-2158 }, { 255,-2158 }, { 256,-2158 }, - { 0, 55 }, { 0, 774 }, { 1,-27567 }, { 2,-27567 }, { 3,-27567 }, - { 4,-27567 }, { 5,-27567 }, { 6,-27567 }, { 7,-27567 }, { 8,-27567 }, - { 9,-27567 }, { 10,-27567 }, { 11,-27567 }, { 12,-27567 }, { 13,-27567 }, - { 14,-27567 }, { 15,-27567 }, { 16,-27567 }, { 17,-27567 }, { 18,-27567 }, - { 19,-27567 }, { 20,-27567 }, { 21,-27567 }, { 22,-27567 }, { 23,-27567 }, - - { 24,-27567 }, { 25,-27567 }, { 26,-27567 }, { 27,-27567 }, { 28,-27567 }, - { 29,-27567 }, { 30,-27567 }, { 31,-27567 }, { 32,-27567 }, { 33,-27567 }, - { 34,-27567 }, { 35,-27567 }, { 36,-27567 }, { 37,-27567 }, { 38,-27567 }, - { 0, 0 }, { 40,-27567 }, { 41,-27567 }, { 42,-27567 }, { 43,-27567 }, - { 44,-27567 }, { 45,-27567 }, { 46,-27567 }, { 47,-27567 }, { 48,-27567 }, - { 49,-27567 }, { 50,-27567 }, { 51,-27567 }, { 52,-27567 }, { 53,-27567 }, - { 54,-27567 }, { 55,-27567 }, { 56,-27567 }, { 57,-27567 }, { 58,-27567 }, - { 59,-27567 }, { 60,-27567 }, { 61,-27567 }, { 62,-27567 }, { 63,-27567 }, - { 64,-27567 }, { 65,-27567 }, { 66,-27567 }, { 67,-27567 }, { 68,-27567 }, - { 69,-27567 }, { 70,-27567 }, { 71,-27567 }, { 72,-27567 }, { 73,-27567 }, - - { 74,-27567 }, { 75,-27567 }, { 76,-27567 }, { 77,-27567 }, { 78,-27567 }, - { 79,-27567 }, { 80,-27567 }, { 81,-27567 }, { 82,-27567 }, { 83,-27567 }, - { 84,-27567 }, { 85,-27567 }, { 86,-27567 }, { 87,-27567 }, { 88,-27567 }, - { 89,-27567 }, { 90,-27567 }, { 91,-27567 }, { 92,-27567 }, { 93,-27567 }, - { 94,-27567 }, { 95,-27567 }, { 96,-27567 }, { 97,-27567 }, { 98,-27567 }, - { 99,-27567 }, { 100,-27567 }, { 101,-27567 }, { 102,-27567 }, { 103,-27567 }, - { 104,-27567 }, { 105,-27567 }, { 106,-27567 }, { 107,-27567 }, { 108,-27567 }, - { 109,-27567 }, { 110,-27567 }, { 111,-27567 }, { 112,-27567 }, { 113,-27567 }, - { 114,-27567 }, { 115,-27567 }, { 116,-27567 }, { 117,-27567 }, { 118,-27567 }, - { 119,-27567 }, { 120,-27567 }, { 121,-27567 }, { 122,-27567 }, { 123,-27567 }, - - { 124,-27567 }, { 125,-27567 }, { 126,-27567 }, { 127,-27567 }, { 128,-27567 }, - { 129,-27567 }, { 130,-27567 }, { 131,-27567 }, { 132,-27567 }, { 133,-27567 }, - { 134,-27567 }, { 135,-27567 }, { 136,-27567 }, { 137,-27567 }, { 138,-27567 }, - { 139,-27567 }, { 140,-27567 }, { 141,-27567 }, { 142,-27567 }, { 143,-27567 }, - { 144,-27567 }, { 145,-27567 }, { 146,-27567 }, { 147,-27567 }, { 148,-27567 }, - { 149,-27567 }, { 150,-27567 }, { 151,-27567 }, { 152,-27567 }, { 153,-27567 }, - { 154,-27567 }, { 155,-27567 }, { 156,-27567 }, { 157,-27567 }, { 158,-27567 }, - { 159,-27567 }, { 160,-27567 }, { 161,-27567 }, { 162,-27567 }, { 163,-27567 }, - { 164,-27567 }, { 165,-27567 }, { 166,-27567 }, { 167,-27567 }, { 168,-27567 }, - { 169,-27567 }, { 170,-27567 }, { 171,-27567 }, { 172,-27567 }, { 173,-27567 }, - - { 174,-27567 }, { 175,-27567 }, { 176,-27567 }, { 177,-27567 }, { 178,-27567 }, - { 179,-27567 }, { 180,-27567 }, { 181,-27567 }, { 182,-27567 }, { 183,-27567 }, - { 184,-27567 }, { 185,-27567 }, { 186,-27567 }, { 187,-27567 }, { 188,-27567 }, - { 189,-27567 }, { 190,-27567 }, { 191,-27567 }, { 192,-27567 }, { 193,-27567 }, - { 194,-27567 }, { 195,-27567 }, { 196,-27567 }, { 197,-27567 }, { 198,-27567 }, - { 199,-27567 }, { 200,-27567 }, { 201,-27567 }, { 202,-27567 }, { 203,-27567 }, - { 204,-27567 }, { 205,-27567 }, { 206,-27567 }, { 207,-27567 }, { 208,-27567 }, - { 209,-27567 }, { 210,-27567 }, { 211,-27567 }, { 212,-27567 }, { 213,-27567 }, - { 214,-27567 }, { 215,-27567 }, { 216,-27567 }, { 217,-27567 }, { 218,-27567 }, - { 219,-27567 }, { 220,-27567 }, { 221,-27567 }, { 222,-27567 }, { 223,-27567 }, - - { 224,-27567 }, { 225,-27567 }, { 226,-27567 }, { 227,-27567 }, { 228,-27567 }, - { 229,-27567 }, { 230,-27567 }, { 231,-27567 }, { 232,-27567 }, { 233,-27567 }, - { 234,-27567 }, { 235,-27567 }, { 236,-27567 }, { 237,-27567 }, { 238,-27567 }, - { 239,-27567 }, { 240,-27567 }, { 241,-27567 }, { 242,-27567 }, { 243,-27567 }, - { 244,-27567 }, { 245,-27567 }, { 246,-27567 }, { 247,-27567 }, { 248,-27567 }, - { 249,-27567 }, { 250,-27567 }, { 251,-27567 }, { 252,-27567 }, { 253,-27567 }, - { 254,-27567 }, { 255,-27567 }, { 256,-27567 }, { 0, 28 }, { 0, 516 }, - { 1,-1595 }, { 2,-1595 }, { 3,-1595 }, { 4,-1595 }, { 5,-1595 }, - { 6,-1595 }, { 7,-1595 }, { 8,-1595 }, { 9,-1337 }, { 10,-1079 }, - { 11,-1595 }, { 12,-1337 }, { 13,-1079 }, { 14,-1595 }, { 15,-1595 }, - - { 16,-1595 }, { 17,-1595 }, { 18,-1595 }, { 19,-1595 }, { 20,-1595 }, - { 21,-1595 }, { 22,-1595 }, { 23,-1595 }, { 24,-1595 }, { 25,-1595 }, - { 26,-1595 }, { 27,-1595 }, { 28,-1595 }, { 29,-1595 }, { 30,-1595 }, - { 31,-1595 }, { 32,-1337 }, { 33,-1595 }, { 34,-1595 }, { 35,-1595 }, - { 36,-1595 }, { 37,-1595 }, { 38,-1595 }, { 39,-3190 }, { 40,-1595 }, - { 41,-1595 }, { 42,-1595 }, { 43,-1595 }, { 44,-1595 }, { 45,-1032 }, - { 46,-1595 }, { 47,-1595 }, { 48,-1595 }, { 49,-1595 }, { 50,-1595 }, - { 51,-1595 }, { 52,-1595 }, { 53,-1595 }, { 54,-1595 }, { 55,-1595 }, - { 56,-1595 }, { 57,-1595 }, { 58,-1595 }, { 59,-1595 }, { 60,-1595 }, - { 61,-1595 }, { 62,-1595 }, { 63,-1595 }, { 64,-1595 }, { 65,-1595 }, - - { 66,-1595 }, { 67,-1595 }, { 68,-1595 }, { 69,-1595 }, { 70,-1595 }, - { 71,-1595 }, { 72,-1595 }, { 73,-1595 }, { 74,-1595 }, { 75,-1595 }, - { 76,-1595 }, { 77,-1595 }, { 78,-1595 }, { 79,-1595 }, { 80,-1595 }, - { 81,-1595 }, { 82,-1595 }, { 83,-1595 }, { 84,-1595 }, { 85,-1595 }, - { 86,-1595 }, { 87,-1595 }, { 88,-1595 }, { 89,-1595 }, { 90,-1595 }, - { 91,-1595 }, { 92,-1595 }, { 93,-1595 }, { 94,-1595 }, { 95,-1595 }, - { 96,-1595 }, { 97,-1595 }, { 98,-1595 }, { 99,-1595 }, { 100,-1595 }, - { 101,-1595 }, { 102,-1595 }, { 103,-1595 }, { 104,-1595 }, { 105,-1595 }, - { 106,-1595 }, { 107,-1595 }, { 108,-1595 }, { 109,-1595 }, { 110,-1595 }, - { 111,-1595 }, { 112,-1595 }, { 113,-1595 }, { 114,-1595 }, { 115,-1595 }, - - { 116,-1595 }, { 117,-1595 }, { 118,-1595 }, { 119,-1595 }, { 120,-1595 }, - { 121,-1595 }, { 122,-1595 }, { 123,-1595 }, { 124,-1595 }, { 125,-1595 }, - { 126,-1595 }, { 127,-1595 }, { 128,-1595 }, { 129,-1595 }, { 130,-1595 }, - { 131,-1595 }, { 132,-1595 }, { 133,-1595 }, { 134,-1595 }, { 135,-1595 }, - { 136,-1595 }, { 137,-1595 }, { 138,-1595 }, { 139,-1595 }, { 140,-1595 }, - { 141,-1595 }, { 142,-1595 }, { 143,-1595 }, { 144,-1595 }, { 145,-1595 }, - { 146,-1595 }, { 147,-1595 }, { 148,-1595 }, { 149,-1595 }, { 150,-1595 }, - { 151,-1595 }, { 152,-1595 }, { 153,-1595 }, { 154,-1595 }, { 155,-1595 }, - { 156,-1595 }, { 157,-1595 }, { 158,-1595 }, { 159,-1595 }, { 160,-1595 }, - { 161,-1595 }, { 162,-1595 }, { 163,-1595 }, { 164,-1595 }, { 165,-1595 }, - - { 166,-1595 }, { 167,-1595 }, { 168,-1595 }, { 169,-1595 }, { 170,-1595 }, - { 171,-1595 }, { 172,-1595 }, { 173,-1595 }, { 174,-1595 }, { 175,-1595 }, - { 176,-1595 }, { 177,-1595 }, { 178,-1595 }, { 179,-1595 }, { 180,-1595 }, - { 181,-1595 }, { 182,-1595 }, { 183,-1595 }, { 184,-1595 }, { 185,-1595 }, - { 186,-1595 }, { 187,-1595 }, { 188,-1595 }, { 189,-1595 }, { 190,-1595 }, - { 191,-1595 }, { 192,-1595 }, { 193,-1595 }, { 194,-1595 }, { 195,-1595 }, - { 196,-1595 }, { 197,-1595 }, { 198,-1595 }, { 199,-1595 }, { 200,-1595 }, - { 201,-1595 }, { 202,-1595 }, { 203,-1595 }, { 204,-1595 }, { 205,-1595 }, - { 206,-1595 }, { 207,-1595 }, { 208,-1595 }, { 209,-1595 }, { 210,-1595 }, - { 211,-1595 }, { 212,-1595 }, { 213,-1595 }, { 214,-1595 }, { 215,-1595 }, - - { 216,-1595 }, { 217,-1595 }, { 218,-1595 }, { 219,-1595 }, { 220,-1595 }, - { 221,-1595 }, { 222,-1595 }, { 223,-1595 }, { 224,-1595 }, { 225,-1595 }, - { 226,-1595 }, { 227,-1595 }, { 228,-1595 }, { 229,-1595 }, { 230,-1595 }, - { 231,-1595 }, { 232,-1595 }, { 233,-1595 }, { 234,-1595 }, { 235,-1595 }, - { 236,-1595 }, { 237,-1595 }, { 238,-1595 }, { 239,-1595 }, { 240,-1595 }, - { 241,-1595 }, { 242,-1595 }, { 243,-1595 }, { 244,-1595 }, { 245,-1595 }, - { 246,-1595 }, { 247,-1595 }, { 248,-1595 }, { 249,-1595 }, { 250,-1595 }, - { 251,-1595 }, { 252,-1595 }, { 253,-1595 }, { 254,-1595 }, { 255,-1595 }, - { 256,-1595 }, { 0, 28 }, { 0, 258 }, { 1,-28081 }, { 2,-28081 }, - { 3,-28081 }, { 4,-28081 }, { 5,-28081 }, { 6,-28081 }, { 7,-28081 }, - - { 8,-28081 }, { 9,-28081 }, { 10,-28081 }, { 11,-28081 }, { 12,-28081 }, - { 13,-28081 }, { 14,-28081 }, { 15,-28081 }, { 16,-28081 }, { 17,-28081 }, - { 18,-28081 }, { 19,-28081 }, { 20,-28081 }, { 21,-28081 }, { 22,-28081 }, - { 23,-28081 }, { 24,-28081 }, { 25,-28081 }, { 26,-28081 }, { 27,-28081 }, - { 28,-28081 }, { 29,-28081 }, { 30,-28081 }, { 31,-28081 }, { 32,-28081 }, - { 33,-28081 }, { 34,-28081 }, { 35,-28081 }, { 36,-28081 }, { 37,-28081 }, - { 38,-28081 }, { 0, 0 }, { 40,-28081 }, { 41,-28081 }, { 42,-28081 }, - { 43,-28081 }, { 44,-28081 }, { 45,-28081 }, { 46,-28081 }, { 47,-28081 }, - { 48,-28081 }, { 49,-28081 }, { 50,-28081 }, { 51,-28081 }, { 52,-28081 }, - { 53,-28081 }, { 54,-28081 }, { 55,-28081 }, { 56,-28081 }, { 57,-28081 }, - - { 58,-28081 }, { 59,-28081 }, { 60,-28081 }, { 61,-28081 }, { 62,-28081 }, - { 63,-28081 }, { 64,-28081 }, { 65,-28081 }, { 66,-28081 }, { 67,-28081 }, - { 68,-28081 }, { 69,-28081 }, { 70,-28081 }, { 71,-28081 }, { 72,-28081 }, - { 73,-28081 }, { 74,-28081 }, { 75,-28081 }, { 76,-28081 }, { 77,-28081 }, - { 78,-28081 }, { 79,-28081 }, { 80,-28081 }, { 81,-28081 }, { 82,-28081 }, - { 83,-28081 }, { 84,-28081 }, { 85,-28081 }, { 86,-28081 }, { 87,-28081 }, - { 88,-28081 }, { 89,-28081 }, { 90,-28081 }, { 91,-28081 }, { 92,-28081 }, - { 93,-28081 }, { 94,-28081 }, { 95,-28081 }, { 96,-28081 }, { 97,-28081 }, - { 98,-28081 }, { 99,-28081 }, { 100,-28081 }, { 101,-28081 }, { 102,-28081 }, - { 103,-28081 }, { 104,-28081 }, { 105,-28081 }, { 106,-28081 }, { 107,-28081 }, - - { 108,-28081 }, { 109,-28081 }, { 110,-28081 }, { 111,-28081 }, { 112,-28081 }, - { 113,-28081 }, { 114,-28081 }, { 115,-28081 }, { 116,-28081 }, { 117,-28081 }, - { 118,-28081 }, { 119,-28081 }, { 120,-28081 }, { 121,-28081 }, { 122,-28081 }, - { 123,-28081 }, { 124,-28081 }, { 125,-28081 }, { 126,-28081 }, { 127,-28081 }, - { 128,-28081 }, { 129,-28081 }, { 130,-28081 }, { 131,-28081 }, { 132,-28081 }, - { 133,-28081 }, { 134,-28081 }, { 135,-28081 }, { 136,-28081 }, { 137,-28081 }, - { 138,-28081 }, { 139,-28081 }, { 140,-28081 }, { 141,-28081 }, { 142,-28081 }, - { 143,-28081 }, { 144,-28081 }, { 145,-28081 }, { 146,-28081 }, { 147,-28081 }, - { 148,-28081 }, { 149,-28081 }, { 150,-28081 }, { 151,-28081 }, { 152,-28081 }, - { 153,-28081 }, { 154,-28081 }, { 155,-28081 }, { 156,-28081 }, { 157,-28081 }, - - { 158,-28081 }, { 159,-28081 }, { 160,-28081 }, { 161,-28081 }, { 162,-28081 }, - { 163,-28081 }, { 164,-28081 }, { 165,-28081 }, { 166,-28081 }, { 167,-28081 }, - { 168,-28081 }, { 169,-28081 }, { 170,-28081 }, { 171,-28081 }, { 172,-28081 }, - { 173,-28081 }, { 174,-28081 }, { 175,-28081 }, { 176,-28081 }, { 177,-28081 }, - { 178,-28081 }, { 179,-28081 }, { 180,-28081 }, { 181,-28081 }, { 182,-28081 }, - { 183,-28081 }, { 184,-28081 }, { 185,-28081 }, { 186,-28081 }, { 187,-28081 }, - { 188,-28081 }, { 189,-28081 }, { 190,-28081 }, { 191,-28081 }, { 192,-28081 }, - { 193,-28081 }, { 194,-28081 }, { 195,-28081 }, { 196,-28081 }, { 197,-28081 }, - { 198,-28081 }, { 199,-28081 }, { 200,-28081 }, { 201,-28081 }, { 202,-28081 }, - { 203,-28081 }, { 204,-28081 }, { 205,-28081 }, { 206,-28081 }, { 207,-28081 }, - - { 208,-28081 }, { 209,-28081 }, { 210,-28081 }, { 211,-28081 }, { 212,-28081 }, - { 213,-28081 }, { 214,-28081 }, { 215,-28081 }, { 216,-28081 }, { 217,-28081 }, - { 218,-28081 }, { 219,-28081 }, { 220,-28081 }, { 221,-28081 }, { 222,-28081 }, - { 223,-28081 }, { 224,-28081 }, { 225,-28081 }, { 226,-28081 }, { 227,-28081 }, - { 228,-28081 }, { 229,-28081 }, { 230,-28081 }, { 231,-28081 }, { 232,-28081 }, - { 233,-28081 }, { 234,-28081 }, { 235,-28081 }, { 236,-28081 }, { 237,-28081 }, - { 238,-28081 }, { 239,-28081 }, { 240,-28081 }, { 241,-28081 }, { 242,-28081 }, - { 243,-28081 }, { 244,-28081 }, { 245,-28081 }, { 246,-28081 }, { 247,-28081 }, - { 248,-28081 }, { 249,-28081 }, { 250,-28081 }, { 251,-28081 }, { 252,-28081 }, - { 253,-28081 }, { 254,-28081 }, { 255,-28081 }, { 256,-28081 }, { 257, 81 }, - - { 1, 0 }, }; - -static __thread yyconst struct yy_trans_info *yy_start_state_list[27] = + { 252, 0 }, { 253, 0 }, { 254, 0 }, { 255, 0 }, { 0, 28 }, + { 0, 853 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, + { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, + { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, + { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, + { 0, 0 }, { 0, 0 }, { 0, 28 }, { 0, 830 }, { 0, 0 }, + { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, + + { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, + { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, + { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, + { 0, 0 }, { 0, 0 }, { 0, 0 }, { 48, 143 }, { 49, 143 }, + { 50, 143 }, { 51, 143 }, { 52, 143 }, { 53, 143 }, { 54, 143 }, + { 55, 143 }, { 56, 143 }, { 57, 143 }, { 0, 0 }, { 0, 0 }, + { 0, 28 }, { 0, 792 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, + { 65, 143 }, { 66, 143 }, { 67, 143 }, { 68, 143 }, { 69, 143 }, + { 70, 143 }, { 48, 143 }, { 49, 143 }, { 50, 143 }, { 51, 143 }, + { 52, 143 }, { 53, 143 }, { 54, 143 }, { 55, 143 }, { 56, 143 }, + + { 57, 143 }, { 0, 0 }, { 0, 0 }, { 0, 28 }, { 0, 769 }, + { 0, 0 }, { 0, 0 }, { 0, 0 }, { 65, 143 }, { 66, 143 }, + { 67, 143 }, { 68, 143 }, { 69, 143 }, { 70, 143 }, { 0, 0 }, + { 0, 0 }, { 0, 0 }, { 97, 143 }, { 98, 143 }, { 99, 143 }, + { 100, 143 }, { 101, 143 }, { 102, 143 }, { 0, 0 }, { 0, 0 }, + { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 48, 143 }, + { 49, 143 }, { 50, 143 }, { 51, 143 }, { 52, 143 }, { 53, 143 }, + { 54, 143 }, { 55, 143 }, { 56, 143 }, { 57, 143 }, { 0, 0 }, + { 97, 143 }, { 98, 143 }, { 99, 143 }, { 100, 143 }, { 101, 143 }, + { 102, 143 }, { 65, 143 }, { 66, 143 }, { 67, 143 }, { 68, 143 }, + + { 69, 143 }, { 70, 143 }, { 48, 143 }, { 49, 143 }, { 50, 143 }, + { 51, 143 }, { 52, 143 }, { 53, 143 }, { 54, 143 }, { 55, 143 }, + { 56, 143 }, { 57, 143 }, { 0, 28 }, { 0, 710 }, { 0, 0 }, + { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 65, 143 }, + { 66, 143 }, { 67, 143 }, { 68, 143 }, { 69, 143 }, { 70, 143 }, + { 0, 0 }, { 0, 0 }, { 0, 0 }, { 97, 143 }, { 98, 143 }, + { 99, 143 }, { 100, 143 }, { 101, 143 }, { 102, 143 }, { 0, 0 }, + { 0, 28 }, { 0, 687 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, + { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, + { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, + + { 0, 0 }, { 97, 143 }, { 98, 143 }, { 99, 143 }, { 100, 143 }, + { 101, 143 }, { 102, 143 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, + { 0, 0 }, { 48, 143 }, { 49, 143 }, { 50, 143 }, { 51, 143 }, + { 52, 143 }, { 53, 143 }, { 54, 143 }, { 55, 143 }, { 56, 143 }, + { 57, 143 }, { 0, 0 }, { 0, 0 }, { 0, 28 }, { 0, 649 }, + { 0, 0 }, { 0, 0 }, { 0, 0 }, { 65, 143 }, { 66, 143 }, + { 67, 143 }, { 68, 143 }, { 69, 143 }, { 70, 143 }, { 48, 143 }, + { 49, 143 }, { 50, 143 }, { 51, 143 }, { 52, 143 }, { 53, 143 }, + { 54, 143 }, { 55, 143 }, { 56, 143 }, { 57, 143 }, { 0, 0 }, + { 0, 0 }, { 0, 28 }, { 0, 626 }, { 0, 0 }, { 0, 0 }, + + { 0, 0 }, { 65, 143 }, { 66, 143 }, { 67, 143 }, { 68, 143 }, + { 69, 143 }, { 70, 143 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, + { 97, 143 }, { 98, 143 }, { 99, 143 }, { 100, 143 }, { 101, 143 }, + { 102, 143 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, + { 0, 0 }, { 0, 0 }, { 48, 143 }, { 49, 143 }, { 50, 143 }, + { 51, 143 }, { 52, 143 }, { 53, 143 }, { 54, 143 }, { 55, 143 }, + { 56, 143 }, { 57, 143 }, { 0, 0 }, { 97, 143 }, { 98, 143 }, + { 99, 143 }, { 100, 143 }, { 101, 143 }, { 102, 143 }, { 65, 143 }, + { 66, 143 }, { 67, 143 }, { 68, 143 }, { 69, 143 }, { 70, 143 }, + { 48,-10162 }, { 49,-10162 }, { 50,-10162 }, { 51,-10162 }, { 52,-10162 }, + + { 53,-10162 }, { 54,-10162 }, { 55,-10162 }, { 56,-10162 }, { 57,-10162 }, + { 0, 28 }, { 0, 567 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, + { 0, 0 }, { 0, 0 }, { 65,-10162 }, { 66,-10162 }, { 67,-10162 }, + { 68,-10162 }, { 69,-10162 }, { 70,-10162 }, { 0, 0 }, { 0, 0 }, + { 0, 0 }, { 97, 143 }, { 98, 143 }, { 99, 143 }, { 100, 143 }, + { 101, 143 }, { 102, 143 }, { 0, 0 }, { 0, 28 }, { 0, 544 }, + { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, + { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, + { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 97,-10162 }, + { 98,-10162 }, { 99,-10162 }, { 100,-10162 }, { 101,-10162 }, { 102,-10162 }, + + { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 48, 84 }, + { 49, 84 }, { 50, 84 }, { 51, 84 }, { 52, 84 }, { 53, 84 }, + { 54, 84 }, { 55, 84 }, { 56, 84 }, { 57, 84 }, { 0, 0 }, + { 0, 0 }, { 0, 28 }, { 0, 506 }, { 0, 0 }, { 0, 0 }, + { 0, 0 }, { 65, 84 }, { 66, 84 }, { 67, 84 }, { 68, 84 }, + { 69, 84 }, { 70, 84 }, { 48,-10242 }, { 49,-10242 }, { 50,-10242 }, + { 51,-10242 }, { 52,-10242 }, { 53,-10242 }, { 54,-10242 }, { 55,-10242 }, + { 56,-10242 }, { 57,-10242 }, { 0, 0 }, { 0, 0 }, { 0, 28 }, + { 0, 483 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 65,-10242 }, + { 66,-10242 }, { 67,-10242 }, { 68,-10242 }, { 69,-10242 }, { 70,-10242 }, + + { 0, 0 }, { 0, 0 }, { 0, 0 }, { 97, 84 }, { 98, 84 }, + { 99, 84 }, { 100, 84 }, { 101, 84 }, { 102, 84 }, { 0, 0 }, + { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, + { 48, 82 }, { 49, 82 }, { 50, 82 }, { 51, 82 }, { 52, 82 }, + { 53, 82 }, { 54, 82 }, { 55, 82 }, { 56, 82 }, { 57, 82 }, + { 0, 0 }, { 97,-10242 }, { 98,-10242 }, { 99,-10242 }, { 100,-10242 }, + { 101,-10242 }, { 102,-10242 }, { 65, 82 }, { 66, 82 }, { 67, 82 }, + { 68, 82 }, { 69, 82 }, { 70, 82 }, { 48, 82 }, { 49, 82 }, + { 50, 82 }, { 51, 82 }, { 52, 82 }, { 53, 82 }, { 54, 82 }, + { 55, 82 }, { 56, 82 }, { 57, 82 }, { 0, 28 }, { 0, 424 }, + + { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, + { 65, 82 }, { 66, 82 }, { 67, 82 }, { 68, 82 }, { 69, 82 }, + { 70, 82 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 97, 82 }, + { 98, 82 }, { 99, 82 }, { 100, 82 }, { 101, 82 }, { 102, 82 }, + { 0, 0 }, { 0, 28 }, { 0, 401 }, { 0, 0 }, { 0, 0 }, + { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, + { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, + { 0, 0 }, { 0, 0 }, { 97, 82 }, { 98, 82 }, { 99, 82 }, + { 100, 82 }, { 101, 82 }, { 102, 82 }, { 0, 0 }, { 0, 0 }, + { 0, 0 }, { 0, 0 }, { 48, 61 }, { 49, 61 }, { 50, 61 }, + + { 51, 61 }, { 52, 61 }, { 53, 61 }, { 54, 61 }, { 55, 61 }, + { 56, 61 }, { 57, 61 }, { 0, 0 }, { 0, 0 }, { 0, 28 }, + { 0, 363 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 65, 61 }, + { 66, 61 }, { 67, 61 }, { 68, 61 }, { 69, 61 }, { 70, 61 }, + { 48, 61 }, { 49, 61 }, { 50, 61 }, { 51, 61 }, { 52, 61 }, + { 53, 61 }, { 54, 61 }, { 55, 61 }, { 56, 61 }, { 57, 61 }, + { 0, 0 }, { 0, 0 }, { 0, 28 }, { 0, 340 }, { 0, 0 }, + { 0, 0 }, { 0, 0 }, { 65, 61 }, { 66, 61 }, { 67, 61 }, + { 68, 61 }, { 69, 61 }, { 70, 61 }, { 0, 0 }, { 0, 0 }, + { 0, 0 }, { 97, 61 }, { 98, 61 }, { 99, 61 }, { 100, 61 }, + + { 101, 61 }, { 102, 61 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, + { 0, 0 }, { 0, 0 }, { 0, 0 }, { 48, 82 }, { 49, 82 }, + { 50, 82 }, { 51, 82 }, { 52, 82 }, { 53, 82 }, { 54, 82 }, + { 55, 82 }, { 56, 82 }, { 57, 82 }, { 0, 0 }, { 97, 61 }, + { 98, 61 }, { 99, 61 }, { 100, 61 }, { 101, 61 }, { 102, 61 }, + { 65, 82 }, { 66, 82 }, { 67, 82 }, { 68, 82 }, { 69, 82 }, + { 70, 82 }, { 48, 82 }, { 49, 82 }, { 50, 82 }, { 51, 82 }, + { 52, 82 }, { 53, 82 }, { 54, 82 }, { 55, 82 }, { 56, 82 }, + { 57, 82 }, { 0, 28 }, { 0, 281 }, { 0, 0 }, { 0, 0 }, + { 0, 0 }, { 0, 0 }, { 0, 0 }, { 65, 82 }, { 66, 82 }, + + { 67, 82 }, { 68, 82 }, { 69, 82 }, { 70, 82 }, { 0, 0 }, + { 0, 0 }, { 0, 0 }, { 97, 82 }, { 98, 82 }, { 99, 82 }, + { 100, 82 }, { 101, 82 }, { 102, 82 }, { 0, 0 }, { 0, 28 }, + { 0, 258 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, + { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, + { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, + { 97, 82 }, { 98, 82 }, { 99, 82 }, { 100, 82 }, { 101, 82 }, + { 102, 82 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, + { 48,-10507 }, { 49,-10507 }, { 50,-10507 }, { 51,-10507 }, { 52,-10507 }, + { 53,-10507 }, { 54,-10507 }, { 55,-10507 }, { 56,-10507 }, { 57,-10507 }, + + { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, + { 0, 0 }, { 0, 0 }, { 65,-10507 }, { 66,-10507 }, { 67,-10507 }, + { 68,-10507 }, { 69,-10507 }, { 70,-10507 }, { 48,-10528 }, { 49,-10528 }, + { 50,-10528 }, { 51,-10528 }, { 52,-10528 }, { 53,-10528 }, { 54,-10528 }, + { 55,-10528 }, { 56,-10528 }, { 57,-10528 }, { 0, 0 }, { 0, 0 }, + { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, + { 65,-10528 }, { 66,-10528 }, { 67,-10528 }, { 68,-10528 }, { 69,-10528 }, + { 70,-10528 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 97,-10507 }, + { 98,-10507 }, { 99,-10507 }, { 100,-10507 }, { 101,-10507 }, { 102,-10507 }, + { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, + + { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, + { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, + { 0, 0 }, { 0, 0 }, { 97,-10528 }, { 98,-10528 }, { 99,-10528 }, + { 100,-10528 }, { 101,-10528 }, { 102,-10528 }, { 0, 0 }, { 0, 0 }, + { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, + { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, + { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, + { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, + { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, + { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, + + { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, + { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, + { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, + { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, + { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, + { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, + { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, + { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, + { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, + { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, + + { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, + { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, + { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, + { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, + { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, + { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, + { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, + { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, + { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, + { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, + + { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, + { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, + { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, + { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, + { 0, 0 }, { 0, 0 }, { 257, 67 }, { 1, 0 }, }; + +static __thread yyconst struct yy_trans_info *yy_start_state_list[25] = { &yy_transition[1], &yy_transition[3], @@ -8563,8 +4309,6 @@ static __thread yyconst struct yy_trans_info *yy_start_state_list[27] = &yy_transition[5421], &yy_transition[5679], &yy_transition[5937], - &yy_transition[6195], - &yy_transition[6453], } ; @@ -8578,7 +4322,10 @@ static __thread yyconst struct yy_trans_info *yy_start_state_list[27] = #define YY_RESTORE_YY_MORE_OFFSET #line 1 "scan.l" -#line 44 "scan.l" +#line 46 "scan.l" + +/* LCOV_EXCL_START */ + /* Avoid exit() on fatal scanner errors (a bit ugly -- see yy_fatal_error) */ #undef fprintf #define fprintf(file, fmt, msg) fprintf_to_ereport(fmt, msg) @@ -8602,6 +4349,21 @@ __thread bool escape_string_warning = true; __thread bool standard_conforming_strings = true; +/* + * Constant data exported from this file. This array maps from the + * zero-based keyword numbers returned by ScanKeywordLookup to the + * Bison token numbers needed by gram.y. This is exported because + * callers need to pass it to scanner_init, if they are using the + * standard keyword list ScanKeywords. + */ +#define PG_KEYWORD(kwname, value, category) value, + +const uint16 ScanKeywordTokens[] = { +#include "parser/kwlist.h" +}; + +#undef PG_KEYWORD + /* * Set the type of YYSTYPE. */ @@ -8627,18 +4389,25 @@ __thread bool standard_conforming_strings = true; */ #define ADVANCE_YYLLOC(delta) ( *(yylloc) += (delta) ) +/* + * Sometimes, we do want yylloc to point into the middle of a token; this is + * useful for instance to throw an error about an escape sequence within a + * string literal. But if we find no error there, we want to revert yylloc + * to the token start, so that that's the location reported to the parser. + * Use PUSH_YYLLOC/POP_YYLLOC to save/restore yylloc around such code. + * (Currently the implied "stack" is just one location, but someday we might + * need to nest these.) + */ +#define PUSH_YYLLOC() (yyextra->save_yylloc = *(yylloc)) +#define POP_YYLLOC() (*(yylloc) = yyextra->save_yylloc) + #define startlit() ( yyextra->literallen = 0 ) static void addlit(char *ytext, int yleng, core_yyscan_t yyscanner); static void addlitchar(unsigned char ychar, core_yyscan_t yyscanner); static char *litbufdup(core_yyscan_t yyscanner); -static char *litbuf_udeescape(unsigned char escape, core_yyscan_t yyscanner); static unsigned char unescape_single_char(unsigned char c, core_yyscan_t yyscanner); static int process_integer_literal(const char *token, YYSTYPE *lval); -static bool is_utf16_surrogate_first(pg_wchar c); -static bool is_utf16_surrogate_second(pg_wchar c); -static pg_wchar surrogate_pair_to_codepoint(pg_wchar first, pg_wchar second); static void addunicode(pg_wchar c, yyscan_t yyscanner); -static bool check_uescapechar(unsigned char escape); #define yyerror(msg) scanner_yyerror(msg, yyscanner) @@ -8673,12 +4442,11 @@ extern void core_yyset_column(int column_no, yyscan_t yyscanner); * delimited identifiers (double-quoted identifiers) * hexadecimal numeric string * standard quoted strings + * quote stop (detect continued strings) * extended quoted strings (support backslash escape sequences) * $foo$ quoted strings * quoted identifier with Unicode escapes - * end of a quoted identifier with Unicode escapes, UESCAPE can follow * quoted string with Unicode escapes - * end of a quoted string with Unicode escapes, UESCAPE can follow * Unicode surrogate pair in extended quoted string * * Remember to add an <> case whenever you add a new exclusive state! @@ -8695,7 +4463,6 @@ extern void core_yyset_column(int column_no, yyscan_t yyscanner); - /* * In order to make the world safe for Windows and Mac clients as well as * Unix ones, we accept either \n or \r as a newline. A DOS-style \r\n @@ -8711,7 +4478,7 @@ extern void core_yyset_column(int column_no, yyscan_t yyscanner); * XXX perhaps \f (formfeed) should be treated as a newline as well? * * XXX if you change the set of whitespace characters, fix scanner_isspace() - * to agree, and see also the plpgsql lexer. + * to agree. */ /* * SQL requires at least one newline in the whitespace separating @@ -8719,14 +4486,13 @@ extern void core_yyset_column(int column_no, yyscan_t yyscanner); * to argue? Note that {whitespace_with_newline} should not have * after * it, whereas {whitespace} should generally have a * after it... */ +/* If we see {quote} then {quotecontinue}, the quoted string continues */ /* - * To ensure that {quotecontinue} can be scanned without having to back up - * if the full pattern isn't matched, we include trailing whitespace in - * {quotestop}. This matches all cases where {quotecontinue} fails to match, - * except for {quote} followed by whitespace and just one "-" (not two, - * which would start a {comment}). To cover that we have {quotefail}. - * The actions for {quotestop} and {quotefail} must throw back characters - * beyond the quote proper. + * {quotecontinuefail} is needed to avoid lexer backup when we fail to match + * {quotecontinue}. It might seem that this could just be {whitespace}*, + * but if there's a dash after {whitespace_with_newline}, it must be consumed + * to see if there's another dash --- which would start a {comment} and thus + * allow continuation of the {quotecontinue} token. */ /* Bit string * It is tempting to scan the string for only those characters @@ -8756,11 +4522,8 @@ extern void core_yyset_column(int column_no, yyscan_t yyscanner); /* Double quote * Allows embedded spaces and other special characters into identifiers. */ -/* Unicode escapes */ -/* error rule to avoid backup */ /* Quoted identifier with Unicode escapes */ /* Quoted string with Unicode escapes */ -/* Optional UESCAPE after a quoted string or identifier with Unicode escapes. */ /* error rule to avoid backup */ /* C-style comments * @@ -8820,21 +4583,20 @@ extern void core_yyset_column(int column_no, yyscan_t yyscanner); * Note that xcstart must appear before operator, as explained above! * Also whitespace (comment) must appear before operator. */ -#line 8772 "scan.c" +#line 4538 "scan.c" #define INITIAL 0 #define xb 1 #define xc 2 #define xd 3 #define xh 4 -#define xe 5 -#define xq 6 -#define xdolq 7 -#define xui 8 -#define xuiend 9 +#define xq 5 +#define xqs 6 +#define xe 7 +#define xdolq 8 +#define xui 9 #define xus 10 -#define xusend 11 -#define xeu 12 +#define xeu 11 #ifndef YY_NO_UNISTD_H /* Special case for "unistd.h", since it is non-ANSI. We include it way @@ -9071,10 +4833,10 @@ YY_DECL register int yy_act; struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; -#line 405 "scan.l" +#line 420 "scan.l" -#line 9026 "scan.c" +#line 4791 "scan.c" yylval = yylval_param; @@ -9144,14 +4906,22 @@ YY_DECL case 1: /* rule 1 can match eol */ YY_RULE_SETUP -#line 407 "scan.l" +#line 422 "scan.l" { /* ignore */ } YY_BREAK case 2: YY_RULE_SETUP -#line 411 "scan.l" +#line 426 "scan.l" +{ + SET_YYLLOC(); + return SQL_COMMENT; + } + YY_BREAK +case 3: +YY_RULE_SETUP +#line 431 "scan.l" { /* Set location in case of syntax error in comment */ SET_YYLLOC(); @@ -9161,54 +4931,62 @@ YY_RULE_SETUP yyless(2); } YY_BREAK -case 3: + +case 4: YY_RULE_SETUP -#line 420 "scan.l" +#line 441 "scan.l" { (yyextra->xcdepth)++; /* Put back any characters past slash-star; see above */ yyless(2); } YY_BREAK -case 4: +case 5: YY_RULE_SETUP -#line 426 "scan.l" +#line 447 "scan.l" { if (yyextra->xcdepth <= 0) + { BEGIN(INITIAL); + yyextra->yyllocend = yytext - yyextra->scanbuf + yyleng; + return C_COMMENT; + } else (yyextra->xcdepth)--; } YY_BREAK -case 5: -/* rule 5 can match eol */ +case 6: +/* rule 6 can match eol */ YY_RULE_SETUP -#line 433 "scan.l" +#line 458 "scan.l" { /* ignore */ } YY_BREAK -case 6: +case 7: YY_RULE_SETUP -#line 437 "scan.l" +#line 462 "scan.l" { /* ignore */ } YY_BREAK -case 7: +case 8: YY_RULE_SETUP -#line 441 "scan.l" +#line 466 "scan.l" { /* ignore */ } YY_BREAK case YY_STATE_EOF(xc): -#line 445 "scan.l" -{ yyerror("unterminated /* comment"); } +#line 470 "scan.l" +{ + yyerror("unterminated /* comment"); + } YY_BREAK -case 8: +/* */ +case 9: YY_RULE_SETUP -#line 447 "scan.l" +#line 475 "scan.l" { /* Binary bit type. * At some point we should simply pass the string @@ -9222,49 +5000,24 @@ YY_RULE_SETUP addlitchar('b', yyscanner); } YY_BREAK -case 9: -/* rule 9 can match eol */ -#line 460 "scan.l" case 10: /* rule 10 can match eol */ -YY_RULE_SETUP -#line 460 "scan.l" -{ - yyless(1); - BEGIN(INITIAL); - yylval->str = litbufdup(yyscanner); - return BCONST; - } - YY_BREAK +#line 488 "scan.l" case 11: /* rule 11 can match eol */ -#line 467 "scan.l" -case 12: -/* rule 12 can match eol */ YY_RULE_SETUP -#line 467 "scan.l" +#line 488 "scan.l" { addlit(yytext, yyleng, yyscanner); } YY_BREAK -case 13: -/* rule 13 can match eol */ -#line 471 "scan.l" -case 14: -/* rule 14 can match eol */ -YY_RULE_SETUP -#line 471 "scan.l" -{ - /* ignore */ - } - YY_BREAK case YY_STATE_EOF(xb): -#line 474 "scan.l" +#line 491 "scan.l" { yyerror("unterminated bit string literal"); } YY_BREAK -case 15: +case 12: YY_RULE_SETUP -#line 476 "scan.l" +#line 493 "scan.l" { /* Hexadecimal bit type. * At some point we should simply pass the string @@ -9278,56 +5031,43 @@ YY_RULE_SETUP addlitchar('x', yyscanner); } YY_BREAK -case 16: -/* rule 16 can match eol */ -#line 489 "scan.l" -case 17: -/* rule 17 can match eol */ -YY_RULE_SETUP -#line 489 "scan.l" -{ - yyless(1); - BEGIN(INITIAL); - yylval->str = litbufdup(yyscanner); - return XCONST; - } - YY_BREAK case YY_STATE_EOF(xh): -#line 495 "scan.l" +#line 505 "scan.l" { yyerror("unterminated hexadecimal string literal"); } YY_BREAK -case 18: +case 13: YY_RULE_SETUP -#line 497 "scan.l" +#line 507 "scan.l" { /* National character. * We will pass this along as a normal character string, * but preceded with an internally-generated "NCHAR". */ - const ScanKeyword *keyword; + int kwnum; SET_YYLLOC(); yyless(1); /* eat only 'n' this time */ - keyword = ScanKeywordLookup("nchar", - yyextra->keywords, - yyextra->num_keywords); - if (keyword != NULL) + kwnum = ScanKeywordLookup("nchar", + yyextra->keywordlist); + if (kwnum >= 0) { - yylval->keyword = keyword->name; - return keyword->value; + yylval->keyword = GetScanKeyword(kwnum, + yyextra->keywordlist); + return yyextra->keyword_tokens[kwnum]; } else { /* If NCHAR isn't a keyword, just return "n" */ yylval->str = pstrdup("n"); + yyextra->yyllocend = yytext - yyextra->scanbuf + yyleng; return IDENT; } } YY_BREAK -case 19: +case 14: YY_RULE_SETUP -#line 523 "scan.l" +#line 534 "scan.l" { yyextra->warn_on_first_escape = true; yyextra->saw_non_ascii = false; @@ -9339,9 +5079,9 @@ YY_RULE_SETUP startlit(); } YY_BREAK -case 20: +case 15: YY_RULE_SETUP -#line 533 "scan.l" +#line 544 "scan.l" { yyextra->warn_on_first_escape = false; yyextra->saw_non_ascii = false; @@ -9350,9 +5090,9 @@ YY_RULE_SETUP startlit(); } YY_BREAK -case 21: +case 16: YY_RULE_SETUP -#line 540 "scan.l" +#line 551 "scan.l" { SET_YYLLOC(); if (!yyextra->standard_conforming_strings) @@ -9365,116 +5105,125 @@ YY_RULE_SETUP startlit(); } YY_BREAK -case 22: -/* rule 22 can match eol */ -#line 552 "scan.l" -case 23: -/* rule 23 can match eol */ +case 17: YY_RULE_SETUP -#line 552 "scan.l" +#line 563 "scan.l" { - yyless(1); - BEGIN(INITIAL); /* - * check that the data remains valid if it might have been - * made invalid by unescaping any chars. + * When we are scanning a quoted string and see an end + * quote, we must look ahead for a possible continuation. + * If we don't see one, we know the end quote was in fact + * the end of the string. To reduce the lexer table size, + * we use a single "xqs" state to do the lookahead for all + * types of strings. */ - if (yyextra->saw_non_ascii) - pg_verifymbstr(yyextra->literalbuf, - yyextra->literallen, - false); - yylval->str = litbufdup(yyscanner); - return SCONST; - } - YY_BREAK -case 24: -/* rule 24 can match eol */ -#line 567 "scan.l" -case 25: -/* rule 25 can match eol */ -YY_RULE_SETUP -#line 567 "scan.l" -{ - /* throw back all but the quote */ - yyless(1); - /* xusend state looks for possible UESCAPE */ - BEGIN(xusend); - } - YY_BREAK -case 26: -/* rule 26 can match eol */ -YY_RULE_SETUP -#line 573 "scan.l" -{ - /* stay in xusend state over whitespace */ + yyextra->state_before_str_stop = YYSTATE; + BEGIN(xqs); } YY_BREAK -case YY_STATE_EOF(xusend): -#line 576 "scan.l" -case 27: -/* rule 27 can match eol */ -#line 578 "scan.l" -case 28: -/* rule 28 can match eol */ +case 18: +/* rule 18 can match eol */ YY_RULE_SETUP -#line 578 "scan.l" +#line 575 "scan.l" { - /* no UESCAPE after the quote, throw back everything */ - yyless(0); - BEGIN(INITIAL); - yylval->str = litbuf_udeescape('\\', yyscanner); - return SCONST; + /* + * Found a quote continuation, so return to the in-quote + * state and continue scanning the literal. Nothing is + * added to the literal's contents. + */ + BEGIN(yyextra->state_before_str_stop); } YY_BREAK -case 29: -/* rule 29 can match eol */ -YY_RULE_SETUP +case 19: +/* rule 19 can match eol */ +#line 584 "scan.l" +case 20: +/* rule 20 can match eol */ +#line 585 "scan.l" +case YY_STATE_EOF(xqs): #line 585 "scan.l" { - /* found UESCAPE after the end quote */ + /* + * Failed to see a quote continuation. Throw back + * everything after the end quote, and handle the string + * according to the state we were in previously. + */ + yyless(0); BEGIN(INITIAL); - if (!check_uescapechar(yytext[yyleng - 2])) + + switch (yyextra->state_before_str_stop) { - SET_YYLLOC(); - ADVANCE_YYLLOC(yyleng - 2); - yyerror("invalid Unicode escape character"); + case xb: + yylval->str = litbufdup(yyscanner); + yyextra->yyllocend = yytext - yyextra->scanbuf + yyleng; + return BCONST; + case xh: + yylval->str = litbufdup(yyscanner); + yyextra->yyllocend = yytext - yyextra->scanbuf + yyleng; + return XCONST; + case xq: + case xe: + /* + * Check that the data remains valid, if it might + * have been made invalid by unescaping any chars. + */ + if (yyextra->saw_non_ascii) + pg_verifymbstr(yyextra->literalbuf, + yyextra->literallen, + false); + yylval->str = litbufdup(yyscanner); + yyextra->yyllocend = yytext - yyextra->scanbuf + yyleng; + return SCONST; + case xus: + yylval->str = litbufdup(yyscanner); + yyextra->yyllocend = yytext - yyextra->scanbuf + yyleng; + return USCONST; + default: + yyerror("unhandled previous state in xqs"); } - yylval->str = litbuf_udeescape(yytext[yyleng - 2], - yyscanner); - return SCONST; } YY_BREAK -case 30: +case 21: YY_RULE_SETUP -#line 598 "scan.l" +#line 626 "scan.l" { addlitchar('\'', yyscanner); } YY_BREAK -case 31: -/* rule 31 can match eol */ +case 22: +/* rule 22 can match eol */ YY_RULE_SETUP -#line 601 "scan.l" +#line 629 "scan.l" { addlit(yytext, yyleng, yyscanner); } YY_BREAK -case 32: -/* rule 32 can match eol */ +case 23: +/* rule 23 can match eol */ YY_RULE_SETUP -#line 604 "scan.l" +#line 632 "scan.l" { addlit(yytext, yyleng, yyscanner); } YY_BREAK -case 33: +case 24: YY_RULE_SETUP -#line 607 "scan.l" +#line 635 "scan.l" { pg_wchar c = strtoul(yytext + 2, NULL, 16); + /* + * For consistency with other productions, issue any + * escape warning with cursor pointing to start of string. + * We might want to change that, someday. + */ check_escape_warning(yyscanner); + /* Remember start of overall string token ... */ + PUSH_YYLLOC(); + /* ... and set the error cursor to point at this esc seq */ + SET_YYLLOC(); + if (is_utf16_surrogate_first(c)) { yyextra->utf16_first_part = c; @@ -9484,43 +5233,54 @@ YY_RULE_SETUP yyerror("invalid Unicode surrogate pair"); else addunicode(c, yyscanner); + + /* Restore yylloc to be start of string token */ + POP_YYLLOC(); } YY_BREAK -case 34: +case 25: YY_RULE_SETUP -#line 622 "scan.l" +#line 663 "scan.l" { pg_wchar c = strtoul(yytext + 2, NULL, 16); + /* Remember start of overall string token ... */ + PUSH_YYLLOC(); + /* ... and set the error cursor to point at this esc seq */ + SET_YYLLOC(); + if (!is_utf16_surrogate_second(c)) yyerror("invalid Unicode surrogate pair"); c = surrogate_pair_to_codepoint(yyextra->utf16_first_part, c); - - addunicode(c, yyscanner); - - BEGIN(xe); - } - YY_BREAK -case 35: -YY_RULE_SETUP -#line 634 "scan.l" -{ yyerror("invalid Unicode surrogate pair"); } - YY_BREAK -case 36: -/* rule 36 can match eol */ -YY_RULE_SETUP -#line 635 "scan.l" -{ yyerror("invalid Unicode surrogate pair"); } + + addunicode(c, yyscanner); + + /* Restore yylloc to be start of string token */ + POP_YYLLOC(); + + BEGIN(xe); + } YY_BREAK +case 26: +#line 684 "scan.l" +case 27: +/* rule 27 can match eol */ +#line 685 "scan.l" case YY_STATE_EOF(xeu): -#line 636 "scan.l" -{ yyerror("invalid Unicode surrogate pair"); } +#line 685 "scan.l" +{ + /* Set the error cursor to point at missing esc seq */ + SET_YYLLOC(); + yyerror("invalid Unicode surrogate pair"); + } YY_BREAK -case 37: +case 28: YY_RULE_SETUP -#line 637 "scan.l" +#line 690 "scan.l" { + /* Set the error cursor to point at malformed esc seq */ + SET_YYLLOC(); ereport(ERROR, (errcode(ERRCODE_INVALID_ESCAPE_SEQUENCE), errmsg("invalid Unicode escape"), @@ -9528,10 +5288,10 @@ YY_RULE_SETUP lexer_errposition())); } YY_BREAK -case 38: -/* rule 38 can match eol */ +case 29: +/* rule 29 can match eol */ YY_RULE_SETUP -#line 644 "scan.l" +#line 699 "scan.l" { if (yytext[1] == '\'') { @@ -9549,9 +5309,9 @@ YY_RULE_SETUP yyscanner); } YY_BREAK -case 39: +case 30: YY_RULE_SETUP -#line 660 "scan.l" +#line 715 "scan.l" { unsigned char c = strtoul(yytext + 1, NULL, 8); @@ -9561,9 +5321,9 @@ YY_RULE_SETUP yyextra->saw_non_ascii = true; } YY_BREAK -case 40: +case 31: YY_RULE_SETUP -#line 668 "scan.l" +#line 723 "scan.l" { unsigned char c = strtoul(yytext + 2, NULL, 16); @@ -9573,17 +5333,9 @@ YY_RULE_SETUP yyextra->saw_non_ascii = true; } YY_BREAK -case 41: -/* rule 41 can match eol */ -YY_RULE_SETUP -#line 676 "scan.l" -{ - /* ignore */ - } - YY_BREAK -case 42: +case 32: YY_RULE_SETUP -#line 679 "scan.l" +#line 731 "scan.l" { /* This is only needed for \ just before EOF */ addlitchar(yytext[0], yyscanner); @@ -9592,12 +5344,12 @@ YY_RULE_SETUP case YY_STATE_EOF(xq): case YY_STATE_EOF(xe): case YY_STATE_EOF(xus): -#line 683 "scan.l" +#line 735 "scan.l" { yyerror("unterminated quoted string"); } YY_BREAK -case 43: +case 33: YY_RULE_SETUP -#line 685 "scan.l" +#line 737 "scan.l" { SET_YYLLOC(); yyextra->dolqstart = pstrdup(yytext); @@ -9605,9 +5357,9 @@ YY_RULE_SETUP startlit(); } YY_BREAK -case 44: +case 34: YY_RULE_SETUP -#line 691 "scan.l" +#line 743 "scan.l" { SET_YYLLOC(); /* throw back all but the initial "$" */ @@ -9616,9 +5368,9 @@ YY_RULE_SETUP return yytext[0]; } YY_BREAK -case 45: +case 35: YY_RULE_SETUP -#line 698 "scan.l" +#line 750 "scan.l" { if (strcmp(yytext, yyextra->dolqstart) == 0) { @@ -9626,6 +5378,7 @@ YY_RULE_SETUP yyextra->dolqstart = NULL; BEGIN(INITIAL); yylval->str = litbufdup(yyscanner); + yyextra->yyllocend = yytext - yyextra->scanbuf + yyleng; return SCONST; } else @@ -9640,54 +5393,54 @@ YY_RULE_SETUP } } YY_BREAK -case 46: -/* rule 46 can match eol */ +case 36: +/* rule 36 can match eol */ YY_RULE_SETUP -#line 718 "scan.l" +#line 771 "scan.l" { addlit(yytext, yyleng, yyscanner); } YY_BREAK -case 47: +case 37: YY_RULE_SETUP -#line 721 "scan.l" +#line 774 "scan.l" { addlit(yytext, yyleng, yyscanner); } YY_BREAK -case 48: +case 38: YY_RULE_SETUP -#line 724 "scan.l" +#line 777 "scan.l" { /* This is only needed for $ inside the quoted text */ addlitchar(yytext[0], yyscanner); } YY_BREAK case YY_STATE_EOF(xdolq): -#line 728 "scan.l" +#line 781 "scan.l" { yyerror("unterminated dollar-quoted string"); } YY_BREAK -case 49: +case 39: YY_RULE_SETUP -#line 730 "scan.l" +#line 783 "scan.l" { SET_YYLLOC(); BEGIN(xd); startlit(); } YY_BREAK -case 50: +case 40: YY_RULE_SETUP -#line 735 "scan.l" +#line 788 "scan.l" { SET_YYLLOC(); BEGIN(xui); startlit(); } YY_BREAK -case 51: +case 41: YY_RULE_SETUP -#line 740 "scan.l" +#line 793 "scan.l" { char *ident; @@ -9698,102 +5451,46 @@ YY_RULE_SETUP if (yyextra->literallen >= NAMEDATALEN) truncate_identifier(ident, yyextra->literallen, true); yylval->str = ident; + yyextra->yyllocend = yytext - yyextra->scanbuf + yyleng; return IDENT; } YY_BREAK -case 52: -YY_RULE_SETUP -#line 752 "scan.l" -{ - yyless(1); - /* xuiend state looks for possible UESCAPE */ - BEGIN(xuiend); - } - YY_BREAK -case 53: -/* rule 53 can match eol */ -YY_RULE_SETUP -#line 757 "scan.l" -{ - /* stay in xuiend state over whitespace */ - } - YY_BREAK -case YY_STATE_EOF(xuiend): -#line 760 "scan.l" -case 54: -/* rule 54 can match eol */ -#line 762 "scan.l" -case 55: -/* rule 55 can match eol */ -YY_RULE_SETUP -#line 762 "scan.l" -{ - /* no UESCAPE after the quote, throw back everything */ - char *ident; - int identlen; - - yyless(0); - - BEGIN(INITIAL); - if (yyextra->literallen == 0) - yyerror("zero-length delimited identifier"); - ident = litbuf_udeescape('\\', yyscanner); - identlen = strlen(ident); - if (identlen >= NAMEDATALEN) - truncate_identifier(ident, identlen, true); - yylval->str = ident; - return IDENT; - } - YY_BREAK -case 56: -/* rule 56 can match eol */ +case 42: YY_RULE_SETUP -#line 779 "scan.l" +#line 806 "scan.l" { - /* found UESCAPE after the end quote */ - char *ident; - int identlen; - BEGIN(INITIAL); if (yyextra->literallen == 0) yyerror("zero-length delimited identifier"); - if (!check_uescapechar(yytext[yyleng - 2])) - { - SET_YYLLOC(); - ADVANCE_YYLLOC(yyleng - 2); - yyerror("invalid Unicode escape character"); - } - ident = litbuf_udeescape(yytext[yyleng - 2], yyscanner); - identlen = strlen(ident); - if (identlen >= NAMEDATALEN) - truncate_identifier(ident, identlen, true); - yylval->str = ident; - return IDENT; + /* can't truncate till after we de-escape the ident */ + yylval->str = litbufdup(yyscanner); + yyextra->yyllocend = yytext - yyextra->scanbuf + yyleng; + return UIDENT; } YY_BREAK -case 57: +case 43: YY_RULE_SETUP -#line 800 "scan.l" +#line 815 "scan.l" { addlitchar('"', yyscanner); } YY_BREAK -case 58: -/* rule 58 can match eol */ +case 44: +/* rule 44 can match eol */ YY_RULE_SETUP -#line 803 "scan.l" +#line 818 "scan.l" { addlit(yytext, yyleng, yyscanner); } YY_BREAK case YY_STATE_EOF(xd): case YY_STATE_EOF(xui): -#line 806 "scan.l" +#line 821 "scan.l" { yyerror("unterminated quoted identifier"); } YY_BREAK -case 59: +case 45: YY_RULE_SETUP -#line 808 "scan.l" +#line 823 "scan.l" { char *ident; @@ -9803,94 +5500,95 @@ YY_RULE_SETUP /* and treat it as {identifier} */ ident = downcase_truncate_identifier(yytext, yyleng, true); yylval->str = ident; + yyextra->yyllocend = yytext - yyextra->scanbuf + yyleng; return IDENT; } YY_BREAK -case 60: +case 46: YY_RULE_SETUP -#line 820 "scan.l" +#line 836 "scan.l" { - /* ignore E */ - return yytext[1]; - } + /* ignore E */ + return yytext[1]; + } YY_BREAK -case 61: +case 47: YY_RULE_SETUP -#line 825 "scan.l" +#line 841 "scan.l" { SET_YYLLOC(); return TYPECAST; } YY_BREAK -case 62: +case 48: YY_RULE_SETUP -#line 830 "scan.l" +#line 846 "scan.l" { SET_YYLLOC(); return DOT_DOT; } YY_BREAK -case 63: +case 49: YY_RULE_SETUP -#line 835 "scan.l" +#line 851 "scan.l" { SET_YYLLOC(); return COLON_EQUALS; } YY_BREAK -case 64: +case 50: YY_RULE_SETUP -#line 840 "scan.l" +#line 856 "scan.l" { SET_YYLLOC(); return EQUALS_GREATER; } YY_BREAK -case 65: +case 51: YY_RULE_SETUP -#line 845 "scan.l" +#line 861 "scan.l" { SET_YYLLOC(); return LESS_EQUALS; } YY_BREAK -case 66: +case 52: YY_RULE_SETUP -#line 850 "scan.l" +#line 866 "scan.l" { SET_YYLLOC(); return GREATER_EQUALS; } YY_BREAK -case 67: +case 53: YY_RULE_SETUP -#line 855 "scan.l" +#line 871 "scan.l" { /* We accept both "<>" and "!=" as meaning NOT_EQUALS */ SET_YYLLOC(); return NOT_EQUALS; } YY_BREAK -case 68: +case 54: YY_RULE_SETUP -#line 861 "scan.l" +#line 877 "scan.l" { /* We accept both "<>" and "!=" as meaning NOT_EQUALS */ SET_YYLLOC(); return NOT_EQUALS; } YY_BREAK -case 69: +case 55: YY_RULE_SETUP -#line 867 "scan.l" +#line 883 "scan.l" { SET_YYLLOC(); return yytext[0]; } YY_BREAK -case 70: +case 56: YY_RULE_SETUP -#line 872 "scan.l" +#line 888 "scan.l" { /* * Check for embedded slash-star or dash-dash; those @@ -9950,24 +5648,25 @@ YY_RULE_SETUP } } - /* We don't accept leading ? in any multi-character operators - * except for those in use by hstore, JSON and geometric operators. - * - * We don't accept contained or trailing ? in any - * multi-character operators. - * - * This is necessary in order to support normalized queries without - * spacing between ? as a substition character and a simple operator (e.g. "?=?") - */ - if (yytext[0] == '?' && - strcmp(yytext, "?|") != 0 && strcmp(yytext, "?&") != 0 && - strcmp(yytext, "?#") != 0 && strcmp(yytext, "?-") != 0 && - strcmp(yytext, "?-|") != 0 && strcmp(yytext, "?||") != 0) - nchars = 1; - - if (yytext[0] != '?' && strchr(yytext, '?')) - /* Lex up to just before the ? character */ - nchars = strchr(yytext, '?') - yytext; + /* We don't accept leading ? in any multi-character operators + * except for those in use by hstore, JSON and geometric operators. + * + * We don't accept contained or trailing ? in any + * multi-character operators, except for those in use by JSON operators. + * + * This is necessary in order to support normalized queries without + * spacing between ? as a substition character and a simple operator (e.g. "?=?") + */ + if (yytext[0] == '?' && + strcmp(yytext, "?|") != 0 && strcmp(yytext, "?&") != 0 && + strcmp(yytext, "?#") != 0 && strcmp(yytext, "?-") != 0 && + strcmp(yytext, "?-|") != 0 && strcmp(yytext, "?||") != 0) + nchars = 1; + + if (yytext[0] != '?' && strchr(yytext, '?') && + strcmp(yytext, "@?") != 0) + /* Lex up to just before the ? character */ + nchars = strchr(yytext, '?') - yytext; SET_YYLLOC(); @@ -10018,35 +5717,35 @@ YY_RULE_SETUP return Op; } YY_BREAK -case 71: +case 57: YY_RULE_SETUP -#line 999 "scan.l" +#line 1016 "scan.l" { SET_YYLLOC(); yylval->ival = atol(yytext + 1); return PARAM; } YY_BREAK -case 72: +case 58: YY_RULE_SETUP -#line 1005 "scan.l" +#line 1022 "scan.l" { SET_YYLLOC(); return process_integer_literal(yytext, yylval); } YY_BREAK -case 73: +case 59: YY_RULE_SETUP -#line 1009 "scan.l" +#line 1026 "scan.l" { SET_YYLLOC(); yylval->str = pstrdup(yytext); return FCONST; } YY_BREAK -case 74: +case 60: YY_RULE_SETUP -#line 1014 "scan.l" +#line 1031 "scan.l" { /* throw back the .., and treat as integer */ yyless(yyleng - 2); @@ -10054,65 +5753,60 @@ YY_RULE_SETUP return process_integer_literal(yytext, yylval); } YY_BREAK -case 75: +case 61: YY_RULE_SETUP -#line 1020 "scan.l" +#line 1037 "scan.l" { SET_YYLLOC(); yylval->str = pstrdup(yytext); return FCONST; } YY_BREAK -case 76: +case 62: YY_RULE_SETUP -#line 1025 "scan.l" +#line 1042 "scan.l" { /* - * throw back the [Ee], and treat as {decimal}. Note - * that it is possible the input is actually {integer}, - * but since this case will almost certainly lead to a - * syntax error anyway, we don't bother to distinguish. + * throw back the [Ee], and figure out whether what + * remains is an {integer} or {decimal}. */ yyless(yyleng - 1); SET_YYLLOC(); - yylval->str = pstrdup(yytext); - return FCONST; + return process_integer_literal(yytext, yylval); } YY_BREAK -case 77: +case 63: YY_RULE_SETUP -#line 1037 "scan.l" +#line 1051 "scan.l" { /* throw back the [Ee][+-], and proceed as above */ yyless(yyleng - 2); SET_YYLLOC(); - yylval->str = pstrdup(yytext); - return FCONST; + return process_integer_literal(yytext, yylval); } YY_BREAK -case 78: +case 64: YY_RULE_SETUP -#line 1046 "scan.l" +#line 1059 "scan.l" { - const ScanKeyword *keyword; + int kwnum; char *ident; - char *keyword_text = pstrdup(yytext); + char *keyword_text = pstrdup(yytext); SET_YYLLOC(); /* Is it a keyword? */ - if (yytext[yyleng - 1] == '?') - keyword_text[yyleng - 1] = '\0'; - - keyword = ScanKeywordLookup(keyword_text, - yyextra->keywords, - yyextra->num_keywords); - if (keyword != NULL) + if (yytext[yyleng - 1] == '?') + keyword_text[yyleng - 1] = '\0'; + kwnum = ScanKeywordLookup(keyword_text, + yyextra->keywordlist); + if (kwnum >= 0) { - if (keyword_text[yyleng - 1] == '\0') - yyless(yyleng - 1); - yylval->keyword = keyword->name; - return keyword->value; + if (keyword_text[yyleng - 1] == '\0') + yyless(yyleng - 1); + yylval->keyword = GetScanKeyword(kwnum, + yyextra->keywordlist); + return yyextra->keyword_tokens[kwnum]; } /* @@ -10121,30 +5815,31 @@ YY_RULE_SETUP */ ident = downcase_truncate_identifier(yytext, yyleng, true); yylval->str = ident; + yyextra->yyllocend = yytext - yyextra->scanbuf + yyleng; return IDENT; } YY_BREAK -case 79: +case 65: YY_RULE_SETUP -#line 1077 "scan.l" +#line 1090 "scan.l" { SET_YYLLOC(); return yytext[0]; } YY_BREAK case YY_STATE_EOF(INITIAL): -#line 1082 "scan.l" +#line 1095 "scan.l" { SET_YYLLOC(); yyterminate(); } YY_BREAK -case 80: +case 66: YY_RULE_SETUP -#line 1087 "scan.l" +#line 1100 "scan.l" YY_FATAL_ERROR( "flex scanner jammed" ); YY_BREAK -#line 10096 "scan.c" +#line 5794 "scan.c" case YY_END_OF_BUFFER: { @@ -11013,10 +6708,12 @@ static int yy_flex_strlen (yyconst char * s , yyscan_t yyscanner) #define YYTABLES_NAME "yytables" -#line 1087 "scan.l" +#line 1100 "scan.l" +/* LCOV_EXCL_STOP */ + /* * Arrange access to yyextra for subroutines of the main core_yylex() function. * We expect each subroutine to have a yyscanner parameter. Rather than @@ -11037,12 +6734,13 @@ static int yy_flex_strlen (yyconst char * s , yyscan_t yyscanner) * scanner_errposition * Report a lexer or grammar error cursor position, if possible. * - * This is expected to be used within an ereport() call. The return value + * This is expected to be used within an ereport() call, or via an error + * callback such as setup_scanner_errposition_callback(). The return value * is a dummy (always 0, in fact). * * Note that this can only be used for messages emitted during raw parsing - * (essentially, scan.l and gram.y), since it requires the yyscanner struct - * to still be available. + * (essentially, scan.l, parser.c, and gram.y), since it requires the + * yyscanner struct to still be available. */ int scanner_errposition(int location, core_yyscan_t yyscanner) @@ -11058,6 +6756,62 @@ scanner_errposition(int location, core_yyscan_t yyscanner) return errposition(pos); } +/* + * Error context callback for inserting scanner error location. + * + * Note that this will be called for *any* error occurring while the + * callback is installed. We avoid inserting an irrelevant error location + * if the error is a query cancel --- are there any other important cases? + */ +static void +scb_error_callback(void *arg) +{ + ScannerCallbackState *scbstate = (ScannerCallbackState *) arg; + + if (geterrcode() != ERRCODE_QUERY_CANCELED) + (void) scanner_errposition(scbstate->location, scbstate->yyscanner); +} + +/* + * setup_scanner_errposition_callback + * Arrange for non-scanner errors to report an error position + * + * Sometimes the scanner calls functions that aren't part of the scanner + * subsystem and can't reasonably be passed the yyscanner pointer; yet + * we would like any errors thrown in those functions to be tagged with an + * error location. Use this function to set up an error context stack + * entry that will accomplish that. Usage pattern: + * + * declare a local variable "ScannerCallbackState scbstate" + * ... + * setup_scanner_errposition_callback(&scbstate, yyscanner, location); + * call function that might throw error; + * cancel_scanner_errposition_callback(&scbstate); + */ +void +setup_scanner_errposition_callback(ScannerCallbackState *scbstate, + core_yyscan_t yyscanner, + int location) +{ + /* Setup error traceback support for ereport() */ + scbstate->yyscanner = yyscanner; + scbstate->location = location; + scbstate->errcallback.callback = scb_error_callback; + scbstate->errcallback.arg = (void *) scbstate; + scbstate->errcallback.previous = error_context_stack; + error_context_stack = &scbstate->errcallback; +} + +/* + * Cancel a previously-set-up errposition callback. + */ +void +cancel_scanner_errposition_callback(ScannerCallbackState *scbstate) +{ + /* Pop the error context stack */ + error_context_stack = scbstate->errcallback.previous; +} + /* * scanner_yyerror * Report a lexer or grammar error. @@ -11100,8 +6854,8 @@ scanner_yyerror(const char *message, core_yyscan_t yyscanner) core_yyscan_t scanner_init(const char *str, core_yy_extra_type *yyext, - const ScanKeyword *keywords, - int num_keywords) + const ScanKeywordList *keywordlist, + const uint16 *keyword_tokens) { Size slen = strlen(str); yyscan_t scanner; @@ -11111,8 +6865,8 @@ scanner_init(const char *str, core_yyset_extra(yyext, scanner); - yyext->keywords = keywords; - yyext->num_keywords = num_keywords; + yyext->keywordlist = keywordlist; + yyext->keyword_tokens = keyword_tokens; yyext->backslash_quote = backslash_quote; yyext->escape_string_warning = escape_string_warning; @@ -11209,22 +6963,21 @@ litbufdup(core_yyscan_t yyscanner) return new; } +/* + * Process {integer}. Note this will also do the right thing with {decimal}, + * ie digits and a decimal point. + */ static int process_integer_literal(const char *token, YYSTYPE *lval) { - long val; + int val; char *endptr; errno = 0; - val = strtol(token, &endptr, 10); - if (*endptr != '\0' || errno == ERANGE -#ifdef HAVE_LONG_INT_64 - /* if long > 32 bits, check for overflow of int4 */ - || val != (long) ((int32) val) -#endif - ) + val = strtoint(token, &endptr, 10); + if (*endptr != '\0' || errno == ERANGE) { - /* integer too large, treat it as a float */ + /* integer too large (or contains decimal pt), treat it as a float */ lval->str = pstrdup(token); return FCONST; } @@ -11232,231 +6985,23 @@ process_integer_literal(const char *token, YYSTYPE *lval) return ICONST; } -static unsigned int -hexval(unsigned char c) -{ - if (c >= '0' && c <= '9') - return c - '0'; - if (c >= 'a' && c <= 'f') - return c - 'a' + 0xA; - if (c >= 'A' && c <= 'F') - return c - 'A' + 0xA; - elog(ERROR, "invalid hexadecimal digit"); - return 0; /* not reached */ -} - -static void -check_unicode_value(pg_wchar c, char *loc, core_yyscan_t yyscanner) -{ - if (GetDatabaseEncoding() == PG_UTF8) - return; - - if (c > 0x7F) - { - ADVANCE_YYLLOC(loc - yyextra->literalbuf + 3); /* 3 for U&" */ - yyerror("Unicode escape values cannot be used for code point values above 007F when the server encoding is not UTF8"); - } -} - -static bool -is_utf16_surrogate_first(pg_wchar c) -{ - return (c >= 0xD800 && c <= 0xDBFF); -} - -static bool -is_utf16_surrogate_second(pg_wchar c) -{ - return (c >= 0xDC00 && c <= 0xDFFF); -} - -static pg_wchar -surrogate_pair_to_codepoint(pg_wchar first, pg_wchar second) -{ - return ((first & 0x3FF) << 10) + 0x10000 + (second & 0x3FF); -} - static void addunicode(pg_wchar c, core_yyscan_t yyscanner) { - char buf[8]; + ScannerCallbackState scbstate; + char buf[MAX_UNICODE_EQUIVALENT_STRING + 1]; - if (c == 0 || c > 0x10FFFF) + if (!is_valid_unicode_codepoint(c)) yyerror("invalid Unicode escape value"); - if (c > 0x7F) - { - if (GetDatabaseEncoding() != PG_UTF8) - yyerror("Unicode escape values cannot be used for code point values above 007F when the server encoding is not UTF8"); - yyextra->saw_non_ascii = true; - } - unicode_to_utf8(c, (unsigned char *) buf); - addlit(buf, pg_mblen(buf), yyscanner); -} - -/* is 'escape' acceptable as Unicode escape character (UESCAPE syntax) ? */ -static bool -check_uescapechar(unsigned char escape) -{ - if (isxdigit(escape) - || escape == '+' - || escape == '\'' - || escape == '"' - || scanner_isspace(escape)) - { - return false; - } - else - return true; -} - -/* like litbufdup, but handle unicode escapes */ -static char * -litbuf_udeescape(unsigned char escape, core_yyscan_t yyscanner) -{ - char *new; - char *litbuf, - *in, - *out; - pg_wchar pair_first = 0; - - /* Make literalbuf null-terminated to simplify the scanning loop */ - litbuf = yyextra->literalbuf; - litbuf[yyextra->literallen] = '\0'; - - /* - * This relies on the subtle assumption that a UTF-8 expansion cannot be - * longer than its escaped representation. - */ - new = palloc(yyextra->literallen + 1); - - in = litbuf; - out = new; - while (*in) - { - if (in[0] == escape) - { - if (in[1] == escape) - { - if (pair_first) - { - ADVANCE_YYLLOC(in - litbuf + 3); /* 3 for U&" */ - yyerror("invalid Unicode surrogate pair"); - } - *out++ = escape; - in += 2; - } - else if (isxdigit((unsigned char) in[1]) && - isxdigit((unsigned char) in[2]) && - isxdigit((unsigned char) in[3]) && - isxdigit((unsigned char) in[4])) - { - pg_wchar unicode; - - unicode = (hexval(in[1]) << 12) + - (hexval(in[2]) << 8) + - (hexval(in[3]) << 4) + - hexval(in[4]); - check_unicode_value(unicode, in, yyscanner); - if (pair_first) - { - if (is_utf16_surrogate_second(unicode)) - { - unicode = surrogate_pair_to_codepoint(pair_first, unicode); - pair_first = 0; - } - else - { - ADVANCE_YYLLOC(in - litbuf + 3); /* 3 for U&" */ - yyerror("invalid Unicode surrogate pair"); - } - } - else if (is_utf16_surrogate_second(unicode)) - yyerror("invalid Unicode surrogate pair"); - - if (is_utf16_surrogate_first(unicode)) - pair_first = unicode; - else - { - unicode_to_utf8(unicode, (unsigned char *) out); - out += pg_mblen(out); - } - in += 5; - } - else if (in[1] == '+' && - isxdigit((unsigned char) in[2]) && - isxdigit((unsigned char) in[3]) && - isxdigit((unsigned char) in[4]) && - isxdigit((unsigned char) in[5]) && - isxdigit((unsigned char) in[6]) && - isxdigit((unsigned char) in[7])) - { - pg_wchar unicode; - - unicode = (hexval(in[2]) << 20) + - (hexval(in[3]) << 16) + - (hexval(in[4]) << 12) + - (hexval(in[5]) << 8) + - (hexval(in[6]) << 4) + - hexval(in[7]); - check_unicode_value(unicode, in, yyscanner); - if (pair_first) - { - if (is_utf16_surrogate_second(unicode)) - { - unicode = surrogate_pair_to_codepoint(pair_first, unicode); - pair_first = 0; - } - else - { - ADVANCE_YYLLOC(in - litbuf + 3); /* 3 for U&" */ - yyerror("invalid Unicode surrogate pair"); - } - } - else if (is_utf16_surrogate_second(unicode)) - yyerror("invalid Unicode surrogate pair"); - - if (is_utf16_surrogate_first(unicode)) - pair_first = unicode; - else - { - unicode_to_utf8(unicode, (unsigned char *) out); - out += pg_mblen(out); - } - in += 8; - } - else - { - ADVANCE_YYLLOC(in - litbuf + 3); /* 3 for U&" */ - yyerror("invalid Unicode escape value"); - } - } - else - { - if (pair_first) - { - ADVANCE_YYLLOC(in - litbuf + 3); /* 3 for U&" */ - yyerror("invalid Unicode surrogate pair"); - } - *out++ = *in++; - } - } - - /* unfinished surrogate pair? */ - if (pair_first) - { - ADVANCE_YYLLOC(in - litbuf + 3); /* 3 for U&" */ - yyerror("invalid Unicode surrogate pair"); - } - - *out = '\0'; /* - * We could skip pg_verifymbstr if we didn't process any non-7-bit-ASCII - * codes; but it's probably not worth the trouble, since this isn't likely - * to be a performance-critical path. + * We expect that pg_unicode_to_server() will complain about any + * unconvertible code point, so we don't have to set saw_non_ascii. */ - pg_verifymbstr(new, out - new, false); - return new; + setup_scanner_errposition_callback(&scbstate, yyscanner, *(yylloc)); + pg_unicode_to_server(c, (unsigned char *) buf); + cancel_scanner_errposition_callback(&scbstate); + addlit(buf, strlen(buf), yyscanner); } static unsigned char diff --git a/parser/src_backend_parser_scansup.c b/parser/src_backend_parser_scansup.c index 3925612c..562deb18 100644 --- a/parser/src_backend_parser_scansup.c +++ b/parser/src_backend_parser_scansup.c @@ -1,8 +1,8 @@ /*-------------------------------------------------------------------- * Symbols referenced in this file: - * - truncate_identifier * - downcase_truncate_identifier * - downcase_identifier + * - truncate_identifier * - scanner_isspace *-------------------------------------------------------------------- */ @@ -13,7 +13,7 @@ * support routines for the lex/flex scanner, used by both the normal * backend as well as the bootstrap backend * - * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * @@ -26,9 +26,8 @@ #include -#include "parser/scansup.h" #include "mb/pg_wchar.h" - +#include "parser/scansup.h" /* ---------------- * scanstr @@ -139,7 +138,7 @@ truncate_identifier(char *ident, int len, bool warn) } /* - * scanner_isspace() --- return TRUE if flex scanner considers char whitespace + * scanner_isspace() --- return true if flex scanner considers char whitespace * * This should be used instead of the potentially locale-dependent isspace() * function when it's important to match the lexer's behavior. diff --git a/parser/src_backend_postmaster_postmaster.c b/parser/src_backend_postmaster_postmaster.c index 8e31a917..c3a8b61b 100644 --- a/parser/src_backend_postmaster_postmaster.c +++ b/parser/src_backend_postmaster_postmaster.c @@ -38,7 +38,7 @@ * clients. * * - * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * @@ -80,8 +80,6 @@ #include #include #include -#include -#include #include #include @@ -105,7 +103,9 @@ #include "access/xlog.h" #include "bootstrap/bootstrap.h" #include "catalog/pg_control.h" +#include "common/file_perm.h" #include "common/ip.h" +#include "common/string.h" #include "lib/ilist.h" #include "libpq/auth.h" #include "libpq/libpq.h" @@ -114,9 +114,11 @@ #include "miscadmin.h" #include "pg_getopt.h" #include "pgstat.h" +#include "port/pg_bswap.h" #include "postmaster/autovacuum.h" #include "postmaster/bgworker_internals.h" #include "postmaster/fork_process.h" +#include "postmaster/interrupt.h" #include "postmaster/pgarch.h" #include "postmaster/postmaster.h" #include "postmaster/syslogger.h" @@ -130,11 +132,11 @@ #include "tcop/tcopprot.h" #include "utils/builtins.h" #include "utils/datetime.h" -#include "utils/dynamic_loader.h" #include "utils/memutils.h" #include "utils/pidfile.h" #include "utils/ps_status.h" #include "utils/timeout.h" +#include "utils/timestamp.h" #include "utils/varlena.h" #ifdef EXEC_BACKEND @@ -207,9 +209,9 @@ static Backend *ShmemBackendArray; /* * ReservedBackends is the number of backends reserved for superuser use. - * This number is taken out of the pool size given by MaxBackends so + * This number is taken out of the pool size given by MaxConnections so * number of backend slots available to non-superusers is - * (MaxBackends - ReservedBackends). Note what this really means is + * (MaxConnections - ReservedBackends). Note what this really means is * "if there are <= ReservedBackends connections available, only superusers * can make new connections" --- pre-existing superuser connections don't * count against the limit. @@ -374,7 +376,7 @@ __thread bool ClientAuthInProgress = false; /* received START_AUTOVAC_LAUNCHER signal */ -/* the launcher needs to be signalled to communicate some condition */ +/* the launcher needs to be signaled to communicate some condition */ /* received START_WALRECEIVER signal */ @@ -384,16 +386,6 @@ __thread bool ClientAuthInProgress = false; -#ifndef HAVE_STRONG_RANDOM -/* - * State for assigning cancel keys. - * Also, the global MyCancelKey passes the cancel key assigned to a given - * backend from the postmaster to that backend (via fork). - */ -static unsigned int random_seed = 0; -static struct timeval random_start_time; -#endif - #ifdef USE_SSL /* Set when and if SSL has been initialized properly */ static bool LoadedSSL = false; @@ -409,30 +401,29 @@ static DNSServiceRef bonjour_sdref = NULL; static void CloseServerPorts(int status, Datum arg); static void unlink_external_pid_file(int status, Datum arg); static void getInstallationPaths(const char *argv0); -static void checkDataDir(void); +static void checkControlFile(void); static Port *ConnCreate(int serverFd); static void ConnFree(Port *port); -static void reset_shared(int port); +static void reset_shared(void); static void SIGHUP_handler(SIGNAL_ARGS); static void pmdie(SIGNAL_ARGS); static void reaper(SIGNAL_ARGS); static void sigusr1_handler(SIGNAL_ARGS); static void process_startup_packet_die(SIGNAL_ARGS); -static void process_startup_packet_quickdie(SIGNAL_ARGS); static void dummy_handler(SIGNAL_ARGS); static void StartupPacketTimeoutHandler(void); static void CleanupBackend(int pid, int exitstatus); static bool CleanupBackgroundWorker(int pid, int exitstatus); static void HandleChildCrash(int pid, int exitstatus, const char *procname); static void LogChildExit(int lev, const char *procname, - int pid, int exitstatus); + int pid, int exitstatus); static void PostmasterStateMachine(void); static void BackendInitialize(Port *port); static void BackendRun(Port *port) pg_attribute_noreturn(); static void ExitPostmaster(int status) pg_attribute_noreturn(); static int ServerLoop(void); static int BackendStartup(Port *port); -static int ProcessStartupPacket(Port *port, bool SSLdone); +static int ProcessStartupPacket(Port *port, bool ssl_done, bool gss_done); static void SendNegotiateProtocolVersion(List *unrecognized_protocol_options); static void processCancelRequest(Port *port, void *pkt); static int initMasks(fd_set *rmask); @@ -559,7 +550,7 @@ static void restore_backend_variables(BackendParameters *param, Port *port); static bool save_backend_variables(BackendParameters *param, Port *port); #else static bool save_backend_variables(BackendParameters *param, Port *port, - HANDLE childProcess, pid_t childPid); + HANDLE childProcess, pid_t childPid); #endif static void ShmemBackendArrayAdd(Backend *bn); @@ -591,23 +582,25 @@ HANDLE PostmasterHandle; /* * Postmaster main entry point */ +#ifdef SIGTTIN +#endif +#ifdef SIGTTOU +#endif #ifdef SIGXFSZ #endif #ifdef HAVE_INT_OPTRESET #endif #ifdef USE_SSL #endif -#ifdef USE_BONJOUR -#endif -#ifdef HAVE_UNIX_SOCKETS -#endif #ifdef WIN32 #endif #ifdef EXEC_BACKEND #endif -#ifdef HAVE_PTHREAD_IS_THREADED_NP +#ifdef USE_BONJOUR #endif -#ifndef HAVE_STRONG_RANDOM +#ifdef HAVE_UNIX_SOCKETS +#endif +#ifdef HAVE_PTHREAD_IS_THREADED_NP #endif @@ -629,14 +622,13 @@ HANDLE PostmasterHandle; #ifdef EXEC_BACKEND #endif - /* - * Validate the proposed data directory + * Check that pg_control exists in the correct location in the data directory. + * + * No attempt is made to validate the contents of pg_control here. This is + * just a sanity check to see if we are looking at a real data directory. */ -#if !defined(WIN32) && !defined(__CYGWIN__) -#endif -#if !defined(WIN32) && !defined(__CYGWIN__) -#endif + /* * Determine how long should we let ServerLoop sleep. @@ -674,12 +666,23 @@ HANDLE PostmasterHandle; * if that's what you want. Return STATUS_ERROR if you don't want to * send anything to the client, which would typically be appropriate * if we detect a communications failure.) + * + * Set ssl_done and/or gss_done when negotiation of an encrypted layer + * (currently, TLS or GSSAPI) is completed. A successful negotiation of either + * encryption layer sets both flags, but a rejected negotiation sets only the + * flag for that layer, since the client may wish to try the other one. We + * should make no assumption here about the order in which the client may make + * requests. */ #ifdef USE_SSL #else #endif #ifdef USE_SSL #endif +#ifdef ENABLE_GSS +#endif +#ifdef ENABLE_GSS +#endif /* * Send a NegotiateProtocolVersion to the client. This lets the client know @@ -707,6 +710,9 @@ HANDLE PostmasterHandle; #ifndef EXEC_BACKEND #else #endif +#ifndef EXEC_BACKEND /* make GNU Emacs 26.1 see brace balance */ +#else +#endif /* * canAcceptConnections --- check to see if database state allows connections @@ -722,17 +728,16 @@ HANDLE PostmasterHandle; * * Returns NULL on failure, other than out-of-memory which is fatal. */ -#ifndef EXEC_BACKEND -#if defined(ENABLE_GSS) || defined(ENABLE_SSPI) -#endif -#endif + /* * ConnFree -- free a local connection data structure + * + * Caller has already closed the socket if any, so there's not much + * to do here. */ -#ifdef USE_SSL -#endif + /* @@ -754,6 +759,14 @@ HANDLE PostmasterHandle; #endif +/* + * InitProcessGlobals -- set MyProcPid, MyStartTime[stamp], random seeds + * + * Called early in the postmaster and every backend. + */ + + + /* * reset_shared -- reset shared memory and semaphores */ @@ -926,8 +939,7 @@ HANDLE PostmasterHandle; * Shouldn't return at all. * If PostgresMain() fails, return status. */ -#ifndef HAVE_STRONG_RANDOM -#endif + #ifdef EXEC_BACKEND @@ -1010,9 +1022,9 @@ internal_forkexec(int argc, char *argv[], Port *port) { /* * As in OpenTemporaryFileInTablespace, try to make the temp-file - * directory + * directory, ignoring errors. */ - mkdir(PG_TEMP_FILES_DIR, S_IRWXU); + (void) MakePGDirectory(PG_TEMP_FILES_DIR); fp = AllocateFile(tmpfilename, PG_BINARY_W); if (!fp) @@ -1150,6 +1162,8 @@ internal_forkexec(int argc, char *argv[], Port *port) if (cmdLine[sizeof(cmdLine) - 2] != '\0') { elog(LOG, "subprocess command line too long"); + UnmapViewOfFile(param); + CloseHandle(paramHandle); return -1; } @@ -1166,6 +1180,8 @@ internal_forkexec(int argc, char *argv[], Port *port) { elog(LOG, "CreateProcess call failed: %m (error code %lu)", GetLastError()); + UnmapViewOfFile(param); + CloseHandle(paramHandle); return -1; } @@ -1181,6 +1197,8 @@ internal_forkexec(int argc, char *argv[], Port *port) GetLastError()))); CloseHandle(pi.hProcess); CloseHandle(pi.hThread); + UnmapViewOfFile(param); + CloseHandle(paramHandle); return -1; /* log made by save_backend_variables */ } @@ -1241,8 +1259,8 @@ internal_forkexec(int argc, char *argv[], Port *port) } /* - * Queue a waiter for to signal when this child dies. The wait will be - * handled automatically by an operating system thread pool. + * Queue a waiter to signal when this child dies. The wait will be handled + * automatically by an operating system thread pool. * * Note: use malloc instead of palloc, since it needs to be thread-safe. * Struct will be free():d from the callback function that runs on a @@ -1313,23 +1331,6 @@ SubPostmasterMain(int argc, char *argv[]) /* Close the postmaster's sockets (as soon as we know them) */ ClosePostmasterPorts(strcmp(argv[1], "--forklog") == 0); - /* - * Set reference point for stack-depth checking - */ - set_stack_base(); - - /* - * Set up memory area for GSS information. Mirrors the code in ConnCreate - * for the non-exec case. - */ -#if defined(ENABLE_GSS) || defined(ENABLE_SSPI) - port.gss = (pg_gssinfo *) calloc(1, sizeof(pg_gssinfo)); - if (!port.gss) - ereport(FATAL, - (errcode(ERRCODE_OUT_OF_MEMORY), - errmsg("out of memory"))); -#endif - /* * If appropriate, physically re-attach to shared memory segment. We want * to do this before going any further to ensure that we can attach at the @@ -1377,6 +1378,20 @@ SubPostmasterMain(int argc, char *argv[]) /* Read in remaining GUC variables */ read_nondefault_variables(); + /* + * Check that the data directory looks valid, which will also check the + * privileges on the data directory and update our umask and file/group + * variables for creating files later. Note: this should really be done + * before we create any files or directories. + */ + checkDataDir(); + + /* + * (re-)read control file, as it contains config. The postmaster will + * already have read this, but this process doesn't know about that. + */ + LocalProcessControlFile(false); + /* * Reload any libraries that were preloaded by the postmaster. Since we * exec'd this process, those libraries didn't come along with us; but we @@ -1431,7 +1446,7 @@ SubPostmasterMain(int argc, char *argv[]) InitProcess(); /* Attach process to shared data structures */ - CreateSharedMemoryAndSemaphores(0); + CreateSharedMemoryAndSemaphores(); /* And run the backend */ BackendRun(&port); /* does not return */ @@ -1445,7 +1460,7 @@ SubPostmasterMain(int argc, char *argv[]) InitAuxiliaryProcess(); /* Attach process to shared data structures */ - CreateSharedMemoryAndSemaphores(0); + CreateSharedMemoryAndSemaphores(); AuxiliaryProcessMain(argc - 2, argv + 2); /* does not return */ } @@ -1458,7 +1473,7 @@ SubPostmasterMain(int argc, char *argv[]) InitProcess(); /* Attach process to shared data structures */ - CreateSharedMemoryAndSemaphores(0); + CreateSharedMemoryAndSemaphores(); AutoVacLauncherMain(argc - 2, argv + 2); /* does not return */ } @@ -1471,7 +1486,7 @@ SubPostmasterMain(int argc, char *argv[]) InitProcess(); /* Attach process to shared data structures */ - CreateSharedMemoryAndSemaphores(0); + CreateSharedMemoryAndSemaphores(); AutoVacWorkerMain(argc - 2, argv + 2); /* does not return */ } @@ -1489,7 +1504,7 @@ SubPostmasterMain(int argc, char *argv[]) InitProcess(); /* Attach process to shared data structures */ - CreateSharedMemoryAndSemaphores(0); + CreateSharedMemoryAndSemaphores(); /* Fetch MyBgworkerEntry from shared memory */ shmem_slot = atoi(argv[1] + 15); @@ -1558,14 +1573,6 @@ SubPostmasterMain(int argc, char *argv[]) */ -/* - * SIGQUIT while processing startup packet. - * - * Some backend has bought the farm, - * so we need to stop what we're doing and exit. - */ - - /* * Dummy signal handler * @@ -1591,9 +1598,7 @@ SubPostmasterMain(int argc, char *argv[]) /* * Generate a random cancel key. */ -#ifdef HAVE_STRONG_RANDOM -#else -#endif + /* * Count up number of child processes of specified types (dead_end children @@ -1773,7 +1778,7 @@ extern pg_time_t first_syslogger_file_time; #else static bool write_duplicated_handle(HANDLE *dest, HANDLE src, HANDLE child); static bool write_inheritable_socket(InheritableSocket *dest, SOCKET src, - pid_t childPid); + pid_t childPid); static void read_inheritable_socket(SOCKET *dest, InheritableSocket *src); #endif @@ -2084,6 +2089,20 @@ restore_backend_variables(BackendParameters *param, Port *port) strlcpy(pkglib_path, param->pkglib_path, MAXPGPATH); strlcpy(ExtraOptions, param->ExtraOptions, MAXPGPATH); + + /* + * We need to restore fd.c's counts of externally-opened FDs; to avoid + * confusion, be sure to do this after restoring max_safe_fds. (Note: + * BackendInitialize will handle this for port->sock.) + */ +#ifndef WIN32 + if (postmaster_alive_fds[0] >= 0) + ReserveExternalFD(); + if (postmaster_alive_fds[1] >= 0) + ReserveExternalFD(); +#endif + if (pgStatSock != PGINVALID_SOCKET) + ReserveExternalFD(); } diff --git a/parser/src_backend_storage_ipc_ipc.c b/parser/src_backend_storage_ipc_ipc.c index cd3adb52..2b8f608f 100644 --- a/parser/src_backend_storage_ipc_ipc.c +++ b/parser/src_backend_storage_ipc_ipc.c @@ -15,7 +15,7 @@ * exit-time cleanup for either a postmaster or a backend. * * - * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * @@ -47,6 +47,11 @@ __thread bool proc_exit_inprogress = false; +/* + * Set when shmem_exit() is in progress. + */ + + /* * This flag tracks whether we've called atexit() in the current process * (or in the parent postmaster). @@ -167,7 +172,7 @@ void proc_exit(int code) { printf("Terminating process due to FATAL error\n"); e /* ---------------------------------------------------------------- * cancel_before_shmem_exit * - * this function removes a previously-registed before_shmem_exit + * this function removes a previously-registered before_shmem_exit * callback. For simplicity, only the latest entry can be * removed. (We could work harder but there is no need for * current uses.) diff --git a/parser/src_backend_storage_lmgr_s_lock.c b/parser/src_backend_storage_lmgr_s_lock.c index f37fe117..79054087 100644 --- a/parser/src_backend_storage_lmgr_s_lock.c +++ b/parser/src_backend_storage_lmgr_s_lock.c @@ -46,7 +46,7 @@ * the probability of unintended failure) than to fix the total time * spent. * - * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * @@ -60,9 +60,8 @@ #include #include -#include "storage/s_lock.h" #include "port/atomics.h" - +#include "storage/s_lock.h" #define MIN_SPINS_PER_DELAY 10 #define MAX_SPINS_PER_DELAY 1000 diff --git a/parser/src_backend_tcop_postgres.c b/parser/src_backend_tcop_postgres.c index 7420e29b..d7c84962 100644 --- a/parser/src_backend_tcop_postgres.c +++ b/parser/src_backend_tcop_postgres.c @@ -16,7 +16,7 @@ * postgres.c * POSTGRES C Backend Interface * - * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * @@ -55,18 +55,23 @@ #include "catalog/pg_type.h" #include "commands/async.h" #include "commands/prepare.h" +#include "executor/spi.h" +#include "jit/jit.h" #include "libpq/libpq.h" #include "libpq/pqformat.h" #include "libpq/pqsignal.h" +#include "mb/pg_wchar.h" +#include "mb/stringinfo_mb.h" #include "miscadmin.h" #include "nodes/print.h" -#include "optimizer/planner.h" -#include "pgstat.h" -#include "pg_trace.h" +#include "optimizer/optimizer.h" #include "parser/analyze.h" #include "parser/parser.h" #include "pg_getopt.h" +#include "pg_trace.h" +#include "pgstat.h" #include "postmaster/autovacuum.h" +#include "postmaster/interrupt.h" #include "postmaster/postmaster.h" #include "replication/logicallauncher.h" #include "replication/logicalworker.h" @@ -88,8 +93,6 @@ #include "utils/snapmgr.h" #include "utils/timeout.h" #include "utils/timestamp.h" -#include "mb/pg_wchar.h" - /* ---------------- * global variables @@ -178,6 +181,10 @@ char *register_stack_base_ptr = NULL; +/* reused buffer to pass to SendRowDescriptionMessage() */ + + + /* ---------------------------------------------------------------- * decls for routines only used in this file * ---------------------------------------------------------------- @@ -200,6 +207,8 @@ static bool IsTransactionExitStmtList(List *pstmts); static bool IsTransactionStmtList(List *pstmts); static void drop_unnamed_stmt(void); static void log_disconnections(int code, Datum arg); +static void enable_statement_timeout(void); +static void disable_statement_timeout(void); /* ---------------------------------------------------------------- @@ -310,6 +319,8 @@ static void log_disconnections(int code, Datum arg); */ #ifdef COPY_PARSE_PLAN_TREES #endif +#ifdef WRITE_READ_PARSE_PLAN_TREES +#endif /* @@ -320,6 +331,10 @@ static void log_disconnections(int code, Datum arg); #ifdef NOT_USED #endif #endif +#ifdef WRITE_READ_PARSE_PLAN_TREES +#ifdef NOT_USED +#endif +#endif /* * Generate plans for a list of already-rewritten queries. @@ -372,6 +387,8 @@ static void log_disconnections(int code, Datum arg); /* * check_log_duration * Determine whether current command's duration should be logged + * We also check if this statement in this transaction must be logged + * (regardless of its duration). * * Returns: * 0 if no logging is needed @@ -381,7 +398,7 @@ static void log_disconnections(int code, Datum arg); * If logging is needed, the duration in msec is formatted into msec_str[], * which must be a 32-byte buffer. * - * was_logged should be TRUE if caller already logged query details (this + * was_logged should be true if caller already logged query details (this * essentially prevents 2 from being returned). */ @@ -398,6 +415,8 @@ static void log_disconnections(int code, Datum arg); * errdetail_params * * Add an errdetail() line showing bind-parameter data, if available. + * Note that this is only used for statement logging, so it is controlled + * by log_parameter_max_length not log_parameter_max_length_on_error. */ @@ -465,7 +484,7 @@ static void log_disconnections(int code, Datum arg); */ /* - * quickdie() occurs when signalled SIGQUIT by the postmaster. + * quickdie() occurs when signaled SIGQUIT by the postmaster. * * Some backend has bought the farm, * so we need to stop what we're doing and exit. @@ -487,15 +506,6 @@ static void log_disconnections(int code, Datum arg); /* signal handler for floating point exception */ -/* - * SIGHUP: set flag to re-read config file at next convenient time. - * - * Sets the ConfigReloadPending flag, which should be checked at convenient - * places inside main loops. (Better than doing the reading in the signal - * handler, ey?) - */ - - /* * RecoveryConflictInterrupt: out-of-line portion of recovery conflict * handling following receipt of SIGUSR1. Designed to be similar to die() @@ -741,9 +751,26 @@ stack_is_too_deep(void) #if defined(HAVE_GETRUSAGE) +#if defined(__darwin__) +#else +#endif #endif /* HAVE_GETRUSAGE */ /* * on_proc_exit handler to log end of session */ + +/* + * Start statement timeout timer, if enabled. + * + * If there's already a timeout running, don't restart the timer. That + * enables compromises between accuracy of timeouts and cost of starting a + * timeout. + */ + + +/* + * Disable statement timeout, if active. + */ + diff --git a/parser/src_backend_utils_adt_datum.c b/parser/src_backend_utils_adt_datum.c index 248712e4..8597a653 100644 --- a/parser/src_backend_utils_adt_datum.c +++ b/parser/src_backend_utils_adt_datum.c @@ -11,7 +11,7 @@ * datum.c * POSTGRES Datum (abstract data type) manipulation routines. * - * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * @@ -50,6 +50,9 @@ #include "postgres.h" +#include "access/detoast.h" +#include "fmgr.h" +#include "utils/builtins.h" #include "utils/datum.h" #include "utils/expandeddatum.h" @@ -250,6 +253,34 @@ datumIsEqual(Datum value1, Datum value2, bool typByVal, int typLen) return res; } +/*------------------------------------------------------------------------- + * datum_image_eq + * + * Compares two datums for identical contents, based on byte images. Return + * true if the two datums are equal, false otherwise. + *------------------------------------------------------------------------- + */ + + +/*------------------------------------------------------------------------- + * btequalimage + * + * Generic "equalimage" support function. + * + * B-Tree operator classes whose equality function could safely be replaced by + * datum_image_eq() in all cases can use this as their "equalimage" support + * function. + * + * Currently, we unconditionally assume that any B-Tree operator class that + * registers btequalimage as its support function 4 must be able to safely use + * optimizations like deduplication (i.e. we return true unconditionally). If + * it ever proved necessary to rescind support for an operator class, we could + * do that in a targeted fashion by doing something with the opcintype + * argument. + *------------------------------------------------------------------------- + */ + + /*------------------------------------------------------------------------- * datumEstimateSpace * diff --git a/parser/src_backend_utils_adt_expandeddatum.c b/parser/src_backend_utils_adt_expandeddatum.c index 76cce714..85e578f3 100644 --- a/parser/src_backend_utils_adt_expandeddatum.c +++ b/parser/src_backend_utils_adt_expandeddatum.c @@ -11,7 +11,7 @@ * expandeddatum.c * Support functions for "expanded" value representations. * - * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * @@ -64,14 +64,14 @@ DatumGetEOHP(Datum d) Size EOH_get_flat_size(ExpandedObjectHeader *eohptr) { - return (*eohptr->eoh_methods->get_flat_size) (eohptr); + return eohptr->eoh_methods->get_flat_size(eohptr); } void EOH_flatten_into(ExpandedObjectHeader *eohptr, void *result, Size allocated_size) { - (*eohptr->eoh_methods->flatten_into) (eohptr, result, allocated_size); + eohptr->eoh_methods->flatten_into(eohptr, result, allocated_size); } /* diff --git a/parser/src_backend_utils_adt_format_type.c b/parser/src_backend_utils_adt_format_type.c index 60b68116..1deffc3e 100644 --- a/parser/src_backend_utils_adt_format_type.c +++ b/parser/src_backend_utils_adt_format_type.c @@ -10,7 +10,7 @@ * Display type names "nicely". * * - * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * IDENTIFICATION @@ -26,17 +26,12 @@ #include "access/htup_details.h" #include "catalog/namespace.h" #include "catalog/pg_type.h" +#include "mb/pg_wchar.h" #include "utils/builtins.h" #include "utils/lsyscache.h" #include "utils/numeric.h" #include "utils/syscache.h" -#include "mb/pg_wchar.h" - -#define MAX_INT32_LEN 11 -static char *format_type_internal(Oid type_oid, int32 typemod, - bool typemod_given, bool allow_invalid, - bool force_qualify); static char *printTypmod(const char *typname, int32 typmod, Oid typmodout); @@ -68,6 +63,30 @@ static char *printTypmod(const char *typname, int32 typmod, Oid typmodout); */ +/* + * format_type_extended + * Generate a possibly-qualified type name. + * + * The default behavior is to only qualify if the type is not in the search + * path, to ignore the given typmod, and to raise an error if a non-existent + * type_oid is given. + * + * The following bits in 'flags' modify the behavior: + * - FORMAT_TYPE_TYPEMOD_GIVEN + * include the typmod in the output (typmod could still be -1 though) + * - FORMAT_TYPE_ALLOW_INVALID + * if the type OID is invalid or unknown, return ??? or such instead + * of failing + * - FORMAT_TYPE_FORCE_QUALIFY + * always schema-qualify type names, regardless of search_path + * + * Note that TYPEMOD_GIVEN is not interchangeable with "typemod == -1"; + * see the comments above for format_type(). + * + * Returns a palloc'd string. + */ + + /* * This version is for use within the backend in error messages, etc. * One difference is that it will fail for an invalid type. @@ -88,18 +107,6 @@ char * format_type_be(Oid type_oid) { return pstrdup("-"); } */ -/* - * This version allows a nondefault typemod to be specified, and forces - * qualification of normal type names. - */ - - -/* - * Common workhorse. - */ - - - /* * Add typmod decoration to the basic type name */ diff --git a/parser/src_backend_utils_adt_ruleutils.c b/parser/src_backend_utils_adt_ruleutils.c index 272dfc0f..567afdb7 100644 --- a/parser/src_backend_utils_adt_ruleutils.c +++ b/parser/src_backend_utils_adt_ruleutils.c @@ -11,7 +11,7 @@ * Functions to convert stored expressions/querytrees back to * source text * - * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * @@ -28,10 +28,11 @@ #include "access/amapi.h" #include "access/htup_details.h" +#include "access/relation.h" #include "access/sysattr.h" +#include "access/table.h" #include "catalog/dependency.h" #include "catalog/indexing.h" -#include "catalog/partition.h" #include "catalog/pg_aggregate.h" #include "catalog/pg_am.h" #include "catalog/pg_authid.h" @@ -55,10 +56,11 @@ #include "miscadmin.h" #include "nodes/makefuncs.h" #include "nodes/nodeFuncs.h" -#include "optimizer/tlist.h" -#include "parser/parse_node.h" +#include "nodes/pathnodes.h" +#include "optimizer/optimizer.h" #include "parser/parse_agg.h" #include "parser/parse_func.h" +#include "parser/parse_node.h" #include "parser/parse_oper.h" #include "parser/parser.h" #include "parser/parsetree.h" @@ -71,16 +73,15 @@ #include "utils/guc.h" #include "utils/hsearch.h" #include "utils/lsyscache.h" +#include "utils/partcache.h" #include "utils/rel.h" #include "utils/ruleutils.h" #include "utils/snapmgr.h" #include "utils/syscache.h" -#include "utils/tqual.h" #include "utils/typcache.h" #include "utils/varlena.h" #include "utils/xml.h" - /* ---------- * Pretty formatting constants * ---------- @@ -121,10 +122,12 @@ typedef struct List *windowTList; /* targetlist for resolving WINDOW clause */ int prettyFlags; /* enabling of pretty-print functions */ int wrapColumn; /* max line length, or -1 for no limit */ - int indentLevel; /* current indent level for prettyprint */ - bool varprefix; /* TRUE to print prefixes on Vars */ + int indentLevel; /* current indent level for pretty-print */ + bool varprefix; /* true to print prefixes on Vars */ ParseExprKind special_exprkind; /* set only for exprkinds needing special * handling */ + Bitmapset *appendparents; /* if not null, map child Vars of these relids + * back to the parent rel */ } deparse_context; /* @@ -132,42 +135,49 @@ typedef struct * A Var having varlevelsup=N refers to the N'th item (counting from 0) in * the current context's namespaces list. * - * The rangetable is the list of actual RTEs from the query tree, and the - * cte list is the list of actual CTEs. - * + * rtable is the list of actual RTEs from the Query or PlannedStmt. * rtable_names holds the alias name to be used for each RTE (either a C * string, or NULL for nameless RTEs such as unnamed joins). * rtable_columns holds the column alias names to be used for each RTE. * + * subplans is a list of Plan trees for SubPlans and CTEs (it's only used + * in the PlannedStmt case). + * ctes is a list of CommonTableExpr nodes (only used in the Query case). + * appendrels, if not null (it's only used in the PlannedStmt case), is an + * array of AppendRelInfo nodes, indexed by child relid. We use that to map + * child-table Vars to their inheritance parents. + * * In some cases we need to make names of merged JOIN USING columns unique - * across the whole query, not only per-RTE. If so, unique_using is TRUE + * across the whole query, not only per-RTE. If so, unique_using is true * and using_names is a list of C strings representing names already assigned * to USING columns. * * When deparsing plan trees, there is always just a single item in the * deparse_namespace list (since a plan tree never contains Vars with - * varlevelsup > 0). We store the PlanState node that is the immediate + * varlevelsup > 0). We store the Plan node that is the immediate * parent of the expression to be deparsed, as well as a list of that - * PlanState's ancestors. In addition, we store its outer and inner subplan - * state nodes, as well as their plan nodes' targetlists, and the index tlist - * if the current plan node might contain INDEX_VAR Vars. (These fields could - * be derived on-the-fly from the current PlanState, but it seems notationally - * clearer to set them up as separate fields.) + * Plan's ancestors. In addition, we store its outer and inner subplan nodes, + * as well as their targetlists, and the index tlist if the current plan node + * might contain INDEX_VAR Vars. (These fields could be derived on-the-fly + * from the current Plan node, but it seems notationally clearer to set them + * up as separate fields.) */ typedef struct { List *rtable; /* List of RangeTblEntry nodes */ List *rtable_names; /* Parallel list of names for RTEs */ List *rtable_columns; /* Parallel list of deparse_columns structs */ + List *subplans; /* List of Plan trees for SubPlans */ List *ctes; /* List of CommonTableExpr nodes */ + AppendRelInfo **appendrels; /* Array of AppendRelInfo nodes, or NULL */ /* Workspace for column alias assignment: */ bool unique_using; /* Are we making USING names globally unique */ List *using_names; /* List of assigned names for USING columns */ /* Remaining fields are used only when deparsing a Plan tree: */ - PlanState *planstate; /* immediate parent of current expression */ - List *ancestors; /* ancestors of planstate */ - PlanState *outer_planstate; /* outer subplan state, or NULL if none */ - PlanState *inner_planstate; /* inner subplan state, or NULL if none */ + Plan *plan; /* immediate parent of current expression */ + List *ancestors; /* ancestors of plan */ + Plan *outer_plan; /* outer subnode, or NULL if none */ + Plan *inner_plan; /* inner subnode, or NULL if none */ List *outer_tlist; /* referent for OUTER_VAR Vars */ List *inner_tlist; /* referent for INNER_VAR Vars */ List *index_tlist; /* referent for INDEX_VAR Vars */ @@ -268,7 +278,8 @@ typedef struct * child RTE's attno and rightattnos[i] is zero; and conversely for a * column of the right child. But for merged columns produced by JOIN * USING/NATURAL JOIN, both leftattnos[i] and rightattnos[i] are nonzero. - * Also, if the column has been dropped, both are zero. + * Note that a simple reference might be to a child RTE column that's been + * dropped; but that's OK since the column could not be used in the query. * * If it's a JOIN USING, usingNames holds the alias names selected for the * merged columns (these might be different from the original USING list, @@ -294,6 +305,10 @@ typedef struct int counter; /* Largest addition used so far for name */ } NameHashEntry; +/* Callback signature for resolve_special_varno() */ +typedef void (*rsv_callback) (Node *node, deparse_context *context, + void *callback_arg); + /* ---------- * Global data @@ -318,168 +333,168 @@ __thread bool quote_all_identifiers = false; * ---------- */ static char *deparse_expression_pretty(Node *expr, List *dpcontext, - bool forceprefix, bool showimplicit, - int prettyFlags, int startIndent); + bool forceprefix, bool showimplicit, + int prettyFlags, int startIndent); static char *pg_get_viewdef_worker(Oid viewoid, - int prettyFlags, int wrapColumn); + int prettyFlags, int wrapColumn); static char *pg_get_triggerdef_worker(Oid trigid, bool pretty); -static void decompile_column_index_array(Datum column_index_array, Oid relId, - StringInfo buf); +static int decompile_column_index_array(Datum column_index_array, Oid relId, + StringInfo buf); static char *pg_get_ruledef_worker(Oid ruleoid, int prettyFlags); static char *pg_get_indexdef_worker(Oid indexrelid, int colno, - const Oid *excludeOps, - bool attrsOnly, bool showTblSpc, - int prettyFlags, bool missing_ok); + const Oid *excludeOps, + bool attrsOnly, bool keysOnly, + bool showTblSpc, bool inherits, + int prettyFlags, bool missing_ok); static char *pg_get_statisticsobj_worker(Oid statextid, bool missing_ok); static char *pg_get_partkeydef_worker(Oid relid, int prettyFlags, - bool attrsOnly, bool missing_ok); + bool attrsOnly, bool missing_ok); static char *pg_get_constraintdef_worker(Oid constraintId, bool fullCommand, - int prettyFlags, bool missing_ok); + int prettyFlags, bool missing_ok); static text *pg_get_expr_worker(text *expr, Oid relid, const char *relname, - int prettyFlags); -static int print_function_arguments(StringInfo buf, HeapTuple proctup, - bool print_table_args, bool print_defaults); + int prettyFlags); +static int print_function_arguments(StringInfo buf, HeapTuple proctup, + bool print_table_args, bool print_defaults); static void print_function_rettype(StringInfo buf, HeapTuple proctup); static void print_function_trftypes(StringInfo buf, HeapTuple proctup); static void set_rtable_names(deparse_namespace *dpns, List *parent_namespaces, - Bitmapset *rels_used); + Bitmapset *rels_used); static void set_deparse_for_query(deparse_namespace *dpns, Query *query, - List *parent_namespaces); + List *parent_namespaces); static void set_simple_column_names(deparse_namespace *dpns); static bool has_dangerous_join_using(deparse_namespace *dpns, Node *jtnode); static void set_using_names(deparse_namespace *dpns, Node *jtnode, - List *parentUsing); + List *parentUsing); static void set_relation_column_names(deparse_namespace *dpns, - RangeTblEntry *rte, - deparse_columns *colinfo); + RangeTblEntry *rte, + deparse_columns *colinfo); static void set_join_column_names(deparse_namespace *dpns, RangeTblEntry *rte, - deparse_columns *colinfo); -static bool colname_is_unique(char *colname, deparse_namespace *dpns, - deparse_columns *colinfo); + deparse_columns *colinfo); +static bool colname_is_unique(const char *colname, deparse_namespace *dpns, + deparse_columns *colinfo); static char *make_colname_unique(char *colname, deparse_namespace *dpns, - deparse_columns *colinfo); + deparse_columns *colinfo); static void expand_colnames_array_to(deparse_columns *colinfo, int n); static void identify_join_columns(JoinExpr *j, RangeTblEntry *jrte, - deparse_columns *colinfo); -static void flatten_join_using_qual(Node *qual, - List **leftvars, List **rightvars); + deparse_columns *colinfo); static char *get_rtable_name(int rtindex, deparse_context *context); -static void set_deparse_planstate(deparse_namespace *dpns, PlanState *ps); -static void push_child_plan(deparse_namespace *dpns, PlanState *ps, - deparse_namespace *save_dpns); +static void set_deparse_plan(deparse_namespace *dpns, Plan *plan); +static void push_child_plan(deparse_namespace *dpns, Plan *plan, + deparse_namespace *save_dpns); static void pop_child_plan(deparse_namespace *dpns, - deparse_namespace *save_dpns); + deparse_namespace *save_dpns); static void push_ancestor_plan(deparse_namespace *dpns, ListCell *ancestor_cell, - deparse_namespace *save_dpns); + deparse_namespace *save_dpns); static void pop_ancestor_plan(deparse_namespace *dpns, - deparse_namespace *save_dpns); + deparse_namespace *save_dpns); static void make_ruledef(StringInfo buf, HeapTuple ruletup, TupleDesc rulettc, - int prettyFlags); + int prettyFlags); static void make_viewdef(StringInfo buf, HeapTuple ruletup, TupleDesc rulettc, - int prettyFlags, int wrapColumn); + int prettyFlags, int wrapColumn); static void get_query_def(Query *query, StringInfo buf, List *parentnamespace, - TupleDesc resultDesc, - int prettyFlags, int wrapColumn, int startIndent); + TupleDesc resultDesc, + int prettyFlags, int wrapColumn, int startIndent); static void get_values_def(List *values_lists, deparse_context *context); static void get_with_clause(Query *query, deparse_context *context); static void get_select_query_def(Query *query, deparse_context *context, - TupleDesc resultDesc); + TupleDesc resultDesc); static void get_insert_query_def(Query *query, deparse_context *context); static void get_update_query_def(Query *query, deparse_context *context); static void get_update_query_targetlist_def(Query *query, List *targetList, - deparse_context *context, - RangeTblEntry *rte); + deparse_context *context, + RangeTblEntry *rte); static void get_delete_query_def(Query *query, deparse_context *context); static void get_utility_query_def(Query *query, deparse_context *context); static void get_basic_select_query(Query *query, deparse_context *context, - TupleDesc resultDesc); + TupleDesc resultDesc); static void get_target_list(List *targetList, deparse_context *context, - TupleDesc resultDesc); + TupleDesc resultDesc); static void get_setop_query(Node *setOp, Query *query, - deparse_context *context, - TupleDesc resultDesc); + deparse_context *context, + TupleDesc resultDesc); static Node *get_rule_sortgroupclause(Index ref, List *tlist, - bool force_colno, - deparse_context *context); + bool force_colno, + deparse_context *context); static void get_rule_groupingset(GroupingSet *gset, List *targetlist, - bool omit_parens, deparse_context *context); + bool omit_parens, deparse_context *context); static void get_rule_orderby(List *orderList, List *targetList, - bool force_colno, deparse_context *context); + bool force_colno, deparse_context *context); static void get_rule_windowclause(Query *query, deparse_context *context); static void get_rule_windowspec(WindowClause *wc, List *targetList, - deparse_context *context); + deparse_context *context); static char *get_variable(Var *var, int levelsup, bool istoplevel, - deparse_context *context); + deparse_context *context); static void get_special_variable(Node *node, deparse_context *context, - void *private); + void *callback_arg); static void resolve_special_varno(Node *node, deparse_context *context, - void *private, - void (*callback) (Node *, deparse_context *, void *)); + rsv_callback callback, void *callback_arg); static Node *find_param_referent(Param *param, deparse_context *context, - deparse_namespace **dpns_p, ListCell **ancestor_cell_p); + deparse_namespace **dpns_p, ListCell **ancestor_cell_p); static void get_parameter(Param *param, deparse_context *context); static const char *get_simple_binary_op_name(OpExpr *expr); static bool isSimpleNode(Node *node, Node *parentNode, int prettyFlags); static void appendContextKeyword(deparse_context *context, const char *str, - int indentBefore, int indentAfter, int indentPlus); + int indentBefore, int indentAfter, int indentPlus); static void removeStringInfoSpaces(StringInfo str); static void get_rule_expr(Node *node, deparse_context *context, - bool showimplicit); + bool showimplicit); static void get_rule_expr_toplevel(Node *node, deparse_context *context, - bool showimplicit); + bool showimplicit); static void get_rule_expr_funccall(Node *node, deparse_context *context, - bool showimplicit); + bool showimplicit); static bool looks_like_function(Node *node); static void get_oper_expr(OpExpr *expr, deparse_context *context); static void get_func_expr(FuncExpr *expr, deparse_context *context, - bool showimplicit); + bool showimplicit); static void get_agg_expr(Aggref *aggref, deparse_context *context, - Aggref *original_aggref); + Aggref *original_aggref); static void get_agg_combine_expr(Node *node, deparse_context *context, - void *private); + void *callback_arg); static void get_windowfunc_expr(WindowFunc *wfunc, deparse_context *context); static void get_coercion_expr(Node *arg, deparse_context *context, - Oid resulttype, int32 resulttypmod, - Node *parentNode); + Oid resulttype, int32 resulttypmod, + Node *parentNode); static void get_const_expr(Const *constval, deparse_context *context, - int showtype); + int showtype); static void get_const_collation(Const *constval, deparse_context *context); static void simple_quote_literal(StringInfo buf, const char *val); static void get_sublink_expr(SubLink *sublink, deparse_context *context); static void get_tablefunc(TableFunc *tf, deparse_context *context, - bool showimplicit); + bool showimplicit); static void get_from_clause(Query *query, const char *prefix, - deparse_context *context); + deparse_context *context); static void get_from_clause_item(Node *jtnode, Query *query, - deparse_context *context); + deparse_context *context); static void get_column_alias_list(deparse_columns *colinfo, - deparse_context *context); + deparse_context *context); static void get_from_clause_coldeflist(RangeTblFunction *rtfunc, - deparse_columns *colinfo, - deparse_context *context); + deparse_columns *colinfo, + deparse_context *context); static void get_tablesample_def(TableSampleClause *tablesample, - deparse_context *context); + deparse_context *context); static void get_opclass_name(Oid opclass, Oid actual_datatype, - StringInfo buf); + StringInfo buf); static Node *processIndirection(Node *node, deparse_context *context); -static void printSubscripts(ArrayRef *aref, deparse_context *context); +static void printSubscripts(SubscriptingRef *sbsref, deparse_context *context); static char *get_relation_name(Oid relid); static char *generate_relation_name(Oid relid, List *namespaces); static char *generate_qualified_relation_name(Oid relid); static char *generate_function_name(Oid funcid, int nargs, - List *argnames, Oid *argtypes, - bool has_variadic, bool *use_variadic_p, - ParseExprKind special_exprkind); + List *argnames, Oid *argtypes, + bool has_variadic, bool *use_variadic_p, + ParseExprKind special_exprkind); static char *generate_operator_name(Oid operid, Oid arg1, Oid arg2); static void add_cast_to(StringInfo buf, Oid typid); +static char *generate_qualified_type_name(Oid typid); static text *string_to_text(char *str); static char *flatten_reloptions(Oid relid); +static void get_reloptions(StringInfo buf, Datum reloptions); #define only_marker(rte) ((rte)->inh ? "" : "ONLY ") /* ---------- - * get_ruledef - Do it all and return a text + * pg_get_ruledef - Do it all and return a text * that could be used as a statement * to recreate the rule * ---------- @@ -494,7 +509,7 @@ static char *flatten_reloptions(Oid relid); /* ---------- - * get_viewdef - Mainly the same thing, but we + * pg_get_viewdef - Mainly the same thing, but we * only return the SELECT part of a view * ---------- */ @@ -516,7 +531,7 @@ static char *flatten_reloptions(Oid relid); /* ---------- - * get_triggerdef - Get the definition of a trigger + * pg_get_triggerdef - Get the definition of a trigger * ---------- */ @@ -526,7 +541,7 @@ static char *flatten_reloptions(Oid relid); /* ---------- - * get_indexdef - Get the definition of an index + * pg_get_indexdef - Get the definition of an index * * In the extended version, there is a colno argument as well as pretty bool. * if colno == 0, we want a complete index definition. @@ -548,7 +563,7 @@ static char *flatten_reloptions(Oid relid); */ -/* Internal version that just reports the column definitions */ +/* Internal version that just reports the key-column definitions */ /* @@ -575,7 +590,7 @@ static char *flatten_reloptions(Oid relid); * * Returns the partition key specification, ie, the following: * - * PARTITION BY { RANGE | LIST } (column opt_collation opt_opclass [, ...]) + * PARTITION BY { RANGE | LIST | HASH } (column opt_collation opt_opclass [, ...]) */ @@ -594,6 +609,14 @@ static char *flatten_reloptions(Oid relid); */ +/* + * pg_get_partconstrdef_string + * + * Returns the partition constraint as a C-string for the input relation, with + * the given alias. No pretty-printing. + */ + + /* * pg_get_constraintdef * @@ -617,13 +640,14 @@ static char *flatten_reloptions(Oid relid); /* * Convert an int16[] Datum into a comma-separated list of column names - * for the indicated relation; append the list to buf. + * for the indicated relation; append the list to buf. Returns the number + * of keys. */ /* ---------- - * get_expr - Decompile an expression tree + * pg_get_expr - Decompile an expression tree * * Input: an expression tree in nodeToString form, and a relation OID * @@ -643,7 +667,7 @@ static char *flatten_reloptions(Oid relid); /* ---------- - * get_userbyid - Get a user name by roleid and + * pg_get_userbyid - Get a user name by roleid and * fallback to 'unknown (OID=n)' * ---------- */ @@ -743,9 +767,9 @@ static char *flatten_reloptions(Oid relid); * for interpreting Vars in the node tree. It can be NIL if no Vars are * expected. * - * forceprefix is TRUE to force all Vars to be prefixed with their table names. + * forceprefix is true to force all Vars to be prefixed with their table names. * - * showimplicit is TRUE to force all implicit casts to be shown explicitly. + * showimplicit is true to force all implicit casts to be shown explicitly. * * Tries to pretty up the output according to prettyFlags and startIndent. * @@ -765,26 +789,26 @@ static char *flatten_reloptions(Oid relid); /* - * deparse_context_for_plan_rtable - Build deparse context for a plan's rtable + * deparse_context_for_plan_tree - Build deparse context for a Plan tree * * When deparsing an expression in a Plan tree, we use the plan's rangetable * to resolve names of simple Vars. The initialization of column names for * this is rather expensive if the rangetable is large, and it'll be the same * for every expression in the Plan tree; so we do it just once and re-use * the result of this function for each expression. (Note that the result - * is not usable until set_deparse_context_planstate() is applied to it.) + * is not usable until set_deparse_context_plan() is applied to it.) * - * In addition to the plan's rangetable list, pass the per-RTE alias names + * In addition to the PlannedStmt, pass the per-RTE alias names * assigned by a previous call to select_rtable_names_for_explain. */ /* - * set_deparse_context_planstate - Specify Plan node containing expression + * set_deparse_context_plan - Specify Plan node containing expression * * When deparsing an expression in a Plan tree, we might have to resolve * OUTER_VAR, INNER_VAR, or INDEX_VAR references. To do this, the caller must - * provide the parent PlanState node. Then OUTER_VAR and INNER_VAR references + * provide the parent Plan node. Then OUTER_VAR and INNER_VAR references * can be resolved by drilling down into the left and right child plans. * Similarly, INDEX_VAR references can be resolved by reference to the * indextlist given in a parent IndexOnlyScan node, or to the scan tlist in @@ -793,15 +817,12 @@ static char *flatten_reloptions(Oid relid); * for those, we can only deparse the indexqualorig fields, which won't * contain INDEX_VAR Vars.) * - * Note: planstate really ought to be declared as "PlanState *", but we use - * "Node *" to avoid having to include execnodes.h in ruleutils.h. - * - * The ancestors list is a list of the PlanState's parent PlanStates, the - * most-closely-nested first. This is needed to resolve PARAM_EXEC Params. - * Note we assume that all the PlanStates share the same rtable. + * The ancestors list is a list of the Plan's parent Plan and SubPlan nodes, + * the most-closely-nested first. This is needed to resolve PARAM_EXEC + * Params. Note we assume that all the Plan nodes share the same rtable. * * Once this function has been called, deparse_expression() can be called on - * subsidiary expression(s) of the specified PlanState node. To deparse + * subsidiary expression(s) of the specified Plan node. To deparse * expressions of a different Plan node in the same Plan tree, re-call this * function to identify the new parent Plan node. * @@ -936,17 +957,6 @@ static char *flatten_reloptions(Oid relid); */ -/* - * flatten_join_using_qual: extract Vars being joined from a JOIN/USING qual - * - * We assume that transformJoinUsingClause won't have produced anything except - * AND nodes, equality operator nodes, and possibly implicit coercions, and - * that the AND node inputs match left-to-right with the original USING list. - * - * Caller must initialize the result lists to NIL. - */ - - /* * get_rtable_name: convenience function to get a previously assigned RTE alias * @@ -955,12 +965,12 @@ static char *flatten_reloptions(Oid relid); /* - * set_deparse_planstate: set up deparse_namespace to parse subexpressions - * of a given PlanState node + * set_deparse_plan: set up deparse_namespace to parse subexpressions + * of a given Plan node * - * This sets the planstate, outer_planstate, inner_planstate, outer_tlist, - * inner_tlist, and index_tlist fields. Caller is responsible for adjusting - * the ancestors list if necessary. Note that the rtable and ctes fields do + * This sets the plan, outer_plan, inner_plan, outer_tlist, inner_tlist, + * and index_tlist fields. Caller is responsible for adjusting the ancestors + * list if necessary. Note that the rtable, subplans, and ctes fields do * not need to change when shifting attention to different plan nodes in a * single plan tree. */ @@ -1141,7 +1151,7 @@ static char *flatten_reloptions(Oid relid); * the Var's varlevelsup has to be interpreted with respect to a context * above the current one; levelsup indicates the offset. * - * If istoplevel is TRUE, the Var is at the top level of a SELECT's + * If istoplevel is true, the Var is at the top level of a SELECT's * targetlist, which means we need special treatment of whole-row Vars. * Instead of the normal "tab.*", we'll print "tab.*::typename", which is a * dirty hack to prevent "tab.*" from being expanded into multiple columns. @@ -1157,8 +1167,8 @@ static char *flatten_reloptions(Oid relid); /* * Deparse a Var which references OUTER_VAR, INNER_VAR, or INDEX_VAR. This - * routine is actually a callback for get_special_varno, which handles finding - * the correct TargetEntry. We get the expression contained in that + * routine is actually a callback for resolve_special_varno, which handles + * finding the correct TargetEntry. We get the expression contained in that * TargetEntry and just need to deparse it, a job we can throw back on * get_rule_expr. */ @@ -1427,10 +1437,18 @@ static char *flatten_reloptions(Oid relid); */ +/* + * generate_opclass_name + * Compute the name to display for a opclass specified by OID + * + * The result includes all necessary quoting and schema-prefixing. + */ + + /* * processIndirection - take care of array and subfield assignment * - * We strip any top-level FieldStore or assignment ArrayRef nodes that + * We strip any top-level FieldStore or assignment SubscriptingRef nodes that * appear in the input, printing them as decoration for the base column * name (which we assume the caller just printed). We might also need to * strip CoerceToDomain nodes, but only ones that appear above assignment @@ -1499,11 +1517,9 @@ quote_identifier(const char *ident) * Note: ScanKeywordLookup() does case-insensitive comparison, but * that's fine, since we already know we have all-lower-case. */ - const ScanKeyword *keyword = ScanKeywordLookup(ident, - ScanKeywords, - NumScanKeywords); + int kwnum = ScanKeywordLookup(ident, &ScanKeywords); - if (keyword != NULL && keyword->category != UNRESERVED_KEYWORD) + if (kwnum >= 0 && ScanKeywordCategories[kwnum] != UNRESERVED_KEYWORD) safe = false; } @@ -1575,7 +1591,7 @@ quote_identifier(const char *ident) * means a FuncExpr or Aggref, not some other way of calling a function), then * has_variadic must specify whether variadic arguments have been merged, * and *use_variadic_p will be set to indicate whether to print VARIADIC in - * the output. For non-FuncExpr cases, has_variadic should be FALSE and + * the output. For non-FuncExpr cases, has_variadic should be false and * use_variadic_p can be NULL. * * The result includes all necessary quoting and schema-prefixing. @@ -1624,6 +1640,17 @@ quote_identifier(const char *ident) */ +/* + * generate_qualified_type_name + * Compute the name to display for a type specified by OID + * + * This is different from format_type_be() in that we unconditionally + * schema-qualify the name. That also means no special syntax for + * SQL-standard type names ... although in current usage, this should + * only get used for domains, so such cases wouldn't occur anyway. + */ + + /* * generate_collation_name * Compute the name to display for a collation specified by OID @@ -1639,13 +1666,18 @@ quote_identifier(const char *ident) */ +/* + * Generate a C string representing a relation options from text[] datum. + */ + + /* * Generate a C string representing a relation's reloptions, or NULL if none. */ /* - * get_one_range_partition_bound_string + * get_range_partbound_string * A C string representation of one range partition bound */ diff --git a/parser/src_backend_utils_error_assert.c b/parser/src_backend_utils_error_assert.c index 09bbaa93..652eb2a4 100644 --- a/parser/src_backend_utils_error_assert.c +++ b/parser/src_backend_utils_error_assert.c @@ -9,7 +9,7 @@ * assert.c * Assert code. * - * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * @@ -24,6 +24,9 @@ #include "postgres.h" #include +#ifdef HAVE_EXECINFO_H +#include +#endif /* * ExceptionalCondition - Handles the failure of an Assert() @@ -48,6 +51,16 @@ ExceptionalCondition(const char *conditionName, /* Usually this shouldn't be needed, but make sure the msg went out */ fflush(stderr); +#ifdef HAVE_BACKTRACE_SYMBOLS + { + void *buf[100]; + int nframes; + + nframes = backtrace(buf, lengthof(buf)); + backtrace_symbols_fd(buf, nframes, fileno(stderr)); + } +#endif + #ifdef SLEEP_ON_ASSERT /* diff --git a/parser/src_backend_utils_error_elog.c b/parser/src_backend_utils_error_elog.c index 263e5ef7..735344d8 100644 --- a/parser/src_backend_utils_error_elog.c +++ b/parser/src_backend_utils_error_elog.c @@ -1,30 +1,28 @@ /*-------------------------------------------------------------------- * Symbols referenced in this file: - * - elog_start - * - write_stderr - * - err_gettext * - errstart * - PG_exception_stack + * - write_stderr + * - err_gettext * - in_error_recursion_trouble * - error_context_stack + * - errordata_stack_depth + * - errordata * - is_log_level_output * - recursion_depth + * - errmsg_internal + * - errcode + * - errmsg + * - errdetail * - errfinish * - pg_re_throw * - EmitErrorReport * - emit_log_hook * - send_message_to_server_log * - send_message_to_frontend - * - errmsg_internal - * - errcode - * - errmsg - * - errdetail - * - expand_fmt_string - * - useful_strerror - * - get_errno_symbol - * - errordata_stack_depth - * - errordata - * - elog_finish + * - matches_backtrace_functions + * - set_backtrace + * - geterrcode * - errhint * - errposition * - internalerrposition @@ -83,7 +81,7 @@ * overflow.) * * - * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * @@ -102,6 +100,9 @@ #ifdef HAVE_SYSLOG #include #endif +#ifdef HAVE_EXECINFO_H +#include +#endif #include "access/transam.h" #include "access/xact.h" @@ -109,6 +110,7 @@ #include "libpq/pqformat.h" #include "mb/pg_wchar.h" #include "miscadmin.h" +#include "postmaster/bgworker.h" #include "postmaster/postmaster.h" #include "postmaster/syslogger.h" #include "storage/ipc.h" @@ -213,6 +215,7 @@ static __thread int recursion_depth = 0; static const char *err_gettext(const char *str) pg_attribute_format_arg(1); +static pg_noinline void set_backtrace(ErrorData *edata, int num_skip); static void set_errdata_field(MemoryContextData *cxt, char **ptr, const char *str); static void write_console(const char *line, int len); static void setup_formatted_log_time(void); @@ -223,9 +226,6 @@ static void write_csvlog(ErrorData *edata); static void send_message_to_server_log(ErrorData *edata); static void write_pipe_chunks(char *data, int len, int dest); static void send_message_to_frontend(ErrorData *edata); -static char *expand_fmt_string(const char *fmt, ErrorData *edata); -static const char *useful_strerror(int errnum); -static const char *get_errno_symbol(int errnum); static const char *error_severity(int elevel); static void append_with_tabs(StringInfo buf, const char *str); static bool is_log_level_output(int elevel, int log_min_level); @@ -267,17 +267,15 @@ err_gettext(const char *str) /* * errstart --- begin an error-reporting cycle * - * Create a stack entry and store the given parameters in it. Subsequently, - * errmsg() and perhaps other routines will be called to further populate - * the stack entry. Finally, errfinish() will be called to actually process - * the error report. + * Create and initialize error stack entry. Subsequently, errmsg() and + * perhaps other routines will be called to further populate the stack entry. + * Finally, errfinish() will be called to actually process the error report. * - * Returns TRUE in normal case. Returns FALSE to short-circuit the error + * Returns true in normal case. Returns false to short-circuit the error * report (if it's a warning or lower and not to be reported anywhere). */ bool -errstart(int elevel, const char *filename, int lineno, - const char *funcname, const char *domain) +errstart(int elevel, const char *domain) { ErrorData *edata; bool output_to_server; @@ -331,7 +329,7 @@ errstart(int elevel, const char *filename, int lineno, /* * Now decide whether we need to process this report at all; if it's - * warning or less and not enabled for logging, just return FALSE without + * warning or less and not enabled for logging, just return false without * starting up any error logging machinery. */ @@ -365,8 +363,7 @@ errstart(int elevel, const char *filename, int lineno, if (ErrorContext == NULL) { /* Oops, hard crash time; very little we can do safely here */ - write_stderr("error occurred at %s:%d before error message processing is available\n", - filename ? filename : "(unknown file)", lineno); + write_stderr("error occurred before error message processing is available\n"); exit(2); } @@ -412,18 +409,6 @@ errstart(int elevel, const char *filename, int lineno, edata->elevel = elevel; edata->output_to_server = output_to_server; edata->output_to_client = output_to_client; - if (filename) - { - const char *slash; - - /* keep only base name, useful especially for vpath builds */ - slash = strrchr(filename, '/'); - if (slash) - filename = slash + 1; - } - edata->filename = filename; - edata->lineno = lineno; - edata->funcname = funcname; /* the default text domain is the backend's */ edata->domain = domain ? domain : PG_TEXTDOMAIN("postgres"); /* initialize context_domain the same way (see set_errcontext_domain()) */ @@ -447,16 +432,42 @@ errstart(int elevel, const char *filename, int lineno, return true; } +/* + * Checks whether the given funcname matches backtrace_functions; see + * check_backtrace_functions. + */ +static bool +matches_backtrace_functions(const char *funcname) +{ + char *p; + + if (!backtrace_symbol_list || funcname == NULL || funcname[0] == '\0') + return false; + + p = backtrace_symbol_list; + for (;;) + { + if (*p == '\0') /* end of backtrace_symbol_list */ + break; + + if (strcmp(funcname, p) == 0) + return true; + p += strlen(p) + 1; + } + + return false; +} + /* * errfinish --- end an error-reporting cycle * * Produce the appropriate error report(s) and pop the error stack. * - * If elevel is ERROR or worse, control does not return to the caller. - * See elog.h for the error level definitions. + * If elevel, as passed to errstart(), is ERROR or worse, control does not + * return to the caller. See elog.h for the error level definitions. */ void -errfinish(int dummy,...) +errfinish(const char *filename, int lineno, const char *funcname) { ErrorData *edata = &errordata[errordata_stack_depth]; int elevel; @@ -465,6 +476,22 @@ errfinish(int dummy,...) recursion_depth++; CHECK_STACK_DEPTH(); + + /* Save the last few bits of error state into the stack entry */ + if (filename) + { + const char *slash; + + /* keep only base name, useful especially for vpath builds */ + slash = strrchr(filename, '/'); + if (slash) + filename = slash + 1; + } + + edata->filename = filename; + edata->lineno = lineno; + edata->funcname = funcname; + elevel = edata->elevel; /* @@ -473,6 +500,12 @@ errfinish(int dummy,...) */ oldcontext = MemoryContextSwitchTo(ErrorContext); + if (!edata->backtrace && + edata->funcname && + backtrace_functions && + matches_backtrace_functions(edata->funcname)) + set_backtrace(edata, 2); + /* * Call any context callback functions. Errors occurring in callback * functions will be treated as recursive errors --- this ensures we will @@ -481,7 +514,7 @@ errfinish(int dummy,...) for (econtext = error_context_stack; econtext != NULL; econtext = econtext->previous) - (*econtext->callback) (econtext->arg); + econtext->callback(econtext->arg); /* * If ERROR (not more nor less) we pass it off to the current handler. @@ -537,6 +570,8 @@ errfinish(int dummy,...) pfree(edata->hint); if (edata->context) pfree(edata->context); + if (edata->backtrace) + pfree(edata->backtrace); if (edata->schema_name) pfree(edata->schema_name); if (edata->table_name) @@ -670,13 +705,10 @@ errcode(int sqlerrcode) */ #define EVALUATE_MESSAGE(domain, targetfield, appendval, translateit) \ { \ - char *fmtbuf; \ StringInfoData buf; \ /* Internationalize the error format string */ \ if ((translateit) && !in_error_recursion_trouble()) \ fmt = dgettext((domain), fmt); \ - /* Expand %m in format string */ \ - fmtbuf = expand_fmt_string(fmt, edata); \ initStringInfo(&buf); \ if ((appendval) && edata->targetfield) { \ appendStringInfoString(&buf, edata->targetfield); \ @@ -687,15 +719,14 @@ errcode(int sqlerrcode) { \ va_list args; \ int needed; \ + errno = edata->saved_errno; \ va_start(args, fmt); \ - needed = appendStringInfoVA(&buf, fmtbuf, args); \ + needed = appendStringInfoVA(&buf, fmt, args); \ va_end(args); \ if (needed == 0) \ break; \ enlargeStringInfo(&buf, needed); \ } \ - /* Done with expanded fmt */ \ - pfree(fmtbuf); \ /* Save the completed message into the stack item */ \ if (edata->targetfield) \ pfree(edata->targetfield); \ @@ -711,15 +742,12 @@ errcode(int sqlerrcode) #define EVALUATE_MESSAGE_PLURAL(domain, targetfield, appendval) \ { \ const char *fmt; \ - char *fmtbuf; \ StringInfoData buf; \ /* Internationalize the error format string */ \ if (!in_error_recursion_trouble()) \ fmt = dngettext((domain), fmt_singular, fmt_plural, n); \ else \ fmt = (n == 1 ? fmt_singular : fmt_plural); \ - /* Expand %m in format string */ \ - fmtbuf = expand_fmt_string(fmt, edata); \ initStringInfo(&buf); \ if ((appendval) && edata->targetfield) { \ appendStringInfoString(&buf, edata->targetfield); \ @@ -730,15 +758,14 @@ errcode(int sqlerrcode) { \ va_list args; \ int needed; \ + errno = edata->saved_errno; \ va_start(args, n); \ - needed = appendStringInfoVA(&buf, fmtbuf, args); \ + needed = appendStringInfoVA(&buf, fmt, args); \ va_end(args); \ if (needed == 0) \ break; \ enlargeStringInfo(&buf, needed); \ } \ - /* Done with expanded fmt */ \ - pfree(fmtbuf); \ /* Save the completed message into the stack item */ \ if (edata->targetfield) \ pfree(edata->targetfield); \ @@ -774,6 +801,47 @@ errmsg(const char *fmt,...) return 0; /* return value does not matter */ } +/* + * Add a backtrace to the containing ereport() call. This is intended to be + * added temporarily during debugging. + */ + + +/* + * Compute backtrace data and add it to the supplied ErrorData. num_skip + * specifies how many inner frames to skip. Use this to avoid showing the + * internal backtrace support functions in the backtrace. This requires that + * this and related functions are not inlined. + */ +static void +set_backtrace(ErrorData *edata, int num_skip) +{ + StringInfoData errtrace; + + initStringInfo(&errtrace); + +#ifdef HAVE_BACKTRACE_SYMBOLS + { + void *buf[100]; + int nframes; + char **strfrms; + + nframes = backtrace(buf, lengthof(buf)); + strfrms = backtrace_symbols(buf, nframes); + if (strfrms == NULL) + return; + + for (int i = num_skip; i < nframes; i++) + appendStringInfo(&errtrace, "\n%s", strfrms[i]); + free(strfrms); + } +#else + appendStringInfoString(&errtrace, + "backtrace generation is not supported by this installation"); +#endif + + edata->backtrace = errtrace.data; +} /* * errmsg_internal --- add a primary error message text to the current error @@ -917,16 +985,6 @@ errcontext_msg(const char *fmt,...) * translate it. Instead, each errcontext_msg() call should be preceded by * a set_errcontext_domain() call to specify the domain. This is usually * done transparently by the errcontext() macro. - * - * Although errcontext is primarily meant for use at call sites distant from - * the original ereport call, there are a few places that invoke errcontext - * within ereport. The expansion of errcontext as a comma expression calling - * set_errcontext_domain then errcontext_msg is problematic in this case, - * because the intended comma expression becomes two arguments to errfinish, - * which the compiler is at liberty to evaluate in either order. But in - * such a case, the set_errcontext_domain calls must be selecting the same - * TEXTDOMAIN value that the errstart call did, so order does not matter - * so long as errstart initializes context_domain along with domain. */ int set_errcontext_domain(const char *domain) @@ -1050,7 +1108,16 @@ internalerrquery(const char *query) * This is only intended for use in error callback subroutines, since there * is no other place outside elog.c where the concept is meaningful. */ +int +geterrcode(void) +{ + ErrorData *edata = &errordata[errordata_stack_depth]; + /* we don't bother incrementing recursion_depth */ + CHECK_STACK_DEPTH(); + + return edata->sqlerrcode; +} /* * geterrposition --- return the currently set error position (0 if none) @@ -1087,103 +1154,6 @@ getinternalerrposition(void) } -/* - * elog_start --- startup for old-style API - * - * All that we do here is stash the hidden filename/lineno/funcname - * arguments into a stack entry, along with the current value of errno. - * - * We need this to be separate from elog_finish because there's no other - * C89-compliant way to deal with inserting extra arguments into the elog - * call. (When using C99's __VA_ARGS__, we could possibly merge this with - * elog_finish, but there doesn't seem to be a good way to save errno before - * evaluating the format arguments if we do that.) - */ -void -elog_start(const char *filename, int lineno, const char *funcname) -{ - ErrorData *edata; - - /* Make sure that memory context initialization has finished */ - if (ErrorContext == NULL) - { - /* Oops, hard crash time; very little we can do safely here */ - write_stderr("error occurred at %s:%d before error message processing is available\n", - filename ? filename : "(unknown file)", lineno); - exit(2); - } - - if (++errordata_stack_depth >= ERRORDATA_STACK_SIZE) - { - /* - * Wups, stack not big enough. We treat this as a PANIC condition - * because it suggests an infinite loop of errors during error - * recovery. Note that the message is intentionally not localized, - * else failure to convert it to client encoding could cause further - * recursion. - */ - errordata_stack_depth = -1; /* make room on stack */ - ereport(PANIC, (errmsg_internal("ERRORDATA_STACK_SIZE exceeded"))); - } - - edata = &errordata[errordata_stack_depth]; - if (filename) - { - const char *slash; - - /* keep only base name, useful especially for vpath builds */ - slash = strrchr(filename, '/'); - if (slash) - filename = slash + 1; - } - edata->filename = filename; - edata->lineno = lineno; - edata->funcname = funcname; - /* errno is saved now so that error parameter eval can't change it */ - edata->saved_errno = errno; - - /* Use ErrorContext for any allocations done at this level. */ - edata->assoc_context = ErrorContext; -} - -/* - * elog_finish --- finish up for old-style API - */ -void -elog_finish(int elevel, const char *fmt,...) -{ - ErrorData *edata = &errordata[errordata_stack_depth]; - MemoryContext oldcontext; - - CHECK_STACK_DEPTH(); - - /* - * Do errstart() to see if we actually want to report the message. - */ - errordata_stack_depth--; - errno = edata->saved_errno; - if (!errstart(elevel, edata->filename, edata->lineno, edata->funcname, NULL)) - return; /* nothing to do */ - - /* - * Format error message just like errmsg_internal(). - */ - recursion_depth++; - oldcontext = MemoryContextSwitchTo(edata->assoc_context); - - edata->message_id = fmt; - EVALUATE_MESSAGE(edata->domain, message, false, false); - - MemoryContextSwitchTo(oldcontext); - recursion_depth--; - - /* - * And let errfinish() finish up. - */ - errfinish(0); -} - - /* * Functions to allow construction of error message strings separately from * the ereport() call itself. @@ -1297,6 +1267,8 @@ CopyErrorData(void) newedata->hint = pstrdup(newedata->hint); if (newedata->context) newedata->context = pstrdup(newedata->context); + if (newedata->backtrace) + newedata->backtrace = pstrdup(newedata->backtrace); if (newedata->schema_name) newedata->schema_name = pstrdup(newedata->schema_name); if (newedata->table_name) @@ -1414,7 +1386,7 @@ pg_re_throw(void) */ error_context_stack = NULL; - errfinish(0); + errfinish(edata->filename, edata->lineno, edata->funcname); } /* Doesn't return ... */ @@ -1668,272 +1640,6 @@ static void send_message_to_frontend(ErrorData *edata) {} */ -/* - * expand_fmt_string --- process special format codes in a format string - * - * We must replace %m with the appropriate strerror string, since vsnprintf - * won't know what to do with it. - * - * The result is a palloc'd string. - */ -static char * -expand_fmt_string(const char *fmt, ErrorData *edata) -{ - StringInfoData buf; - const char *cp; - - initStringInfo(&buf); - - for (cp = fmt; *cp; cp++) - { - if (cp[0] == '%' && cp[1] != '\0') - { - cp++; - if (*cp == 'm') - { - /* - * Replace %m by system error string. If there are any %'s in - * the string, we'd better double them so that vsnprintf won't - * misinterpret. - */ - const char *cp2; - - cp2 = useful_strerror(edata->saved_errno); - for (; *cp2; cp2++) - { - if (*cp2 == '%') - appendStringInfoCharMacro(&buf, '%'); - appendStringInfoCharMacro(&buf, *cp2); - } - } - else - { - /* copy % and next char --- this avoids trouble with %%m */ - appendStringInfoCharMacro(&buf, '%'); - appendStringInfoCharMacro(&buf, *cp); - } - } - else - appendStringInfoCharMacro(&buf, *cp); - } - - return buf.data; -} - - -/* - * A slightly cleaned-up version of strerror() - */ -static const char * -useful_strerror(int errnum) -{ - /* this buffer is only used if strerror() and get_errno_symbol() fail */ - static char errorstr_buf[48]; - const char *str; - -#ifdef WIN32 - /* Winsock error code range, per WinError.h */ - if (errnum >= 10000 && errnum <= 11999) - return pgwin32_socket_strerror(errnum); -#endif - str = strerror(errnum); - - /* - * Some strerror()s return an empty string for out-of-range errno. This - * is ANSI C spec compliant, but not exactly useful. Also, we may get - * back strings of question marks if libc cannot transcode the message to - * the codeset specified by LC_CTYPE. If we get nothing useful, first try - * get_errno_symbol(), and if that fails, print the numeric errno. - */ - if (str == NULL || *str == '\0' || *str == '?') - str = get_errno_symbol(errnum); - - if (str == NULL) - { - snprintf(errorstr_buf, sizeof(errorstr_buf), - /*------ - translator: This string will be truncated at 47 - characters expanded. */ - _("operating system error %d"), errnum); - str = errorstr_buf; - } - - return str; -} - -/* - * Returns a symbol (e.g. "ENOENT") for an errno code. - * Returns NULL if the code is unrecognized. - */ -static const char * -get_errno_symbol(int errnum) -{ - switch (errnum) - { - case E2BIG: - return "E2BIG"; - case EACCES: - return "EACCES"; -#ifdef EADDRINUSE - case EADDRINUSE: - return "EADDRINUSE"; -#endif -#ifdef EADDRNOTAVAIL - case EADDRNOTAVAIL: - return "EADDRNOTAVAIL"; -#endif - case EAFNOSUPPORT: - return "EAFNOSUPPORT"; -#ifdef EAGAIN - case EAGAIN: - return "EAGAIN"; -#endif -#ifdef EALREADY - case EALREADY: - return "EALREADY"; -#endif - case EBADF: - return "EBADF"; -#ifdef EBADMSG - case EBADMSG: - return "EBADMSG"; -#endif - case EBUSY: - return "EBUSY"; - case ECHILD: - return "ECHILD"; -#ifdef ECONNABORTED - case ECONNABORTED: - return "ECONNABORTED"; -#endif - case ECONNREFUSED: - return "ECONNREFUSED"; -#ifdef ECONNRESET - case ECONNRESET: - return "ECONNRESET"; -#endif - case EDEADLK: - return "EDEADLK"; - case EDOM: - return "EDOM"; - case EEXIST: - return "EEXIST"; - case EFAULT: - return "EFAULT"; - case EFBIG: - return "EFBIG"; -#ifdef EHOSTUNREACH - case EHOSTUNREACH: - return "EHOSTUNREACH"; -#endif - case EIDRM: - return "EIDRM"; - case EINPROGRESS: - return "EINPROGRESS"; - case EINTR: - return "EINTR"; - case EINVAL: - return "EINVAL"; - case EIO: - return "EIO"; -#ifdef EISCONN - case EISCONN: - return "EISCONN"; -#endif - case EISDIR: - return "EISDIR"; -#ifdef ELOOP - case ELOOP: - return "ELOOP"; -#endif - case EMFILE: - return "EMFILE"; - case EMLINK: - return "EMLINK"; - case EMSGSIZE: - return "EMSGSIZE"; - case ENAMETOOLONG: - return "ENAMETOOLONG"; - case ENFILE: - return "ENFILE"; - case ENOBUFS: - return "ENOBUFS"; - case ENODEV: - return "ENODEV"; - case ENOENT: - return "ENOENT"; - case ENOEXEC: - return "ENOEXEC"; - case ENOMEM: - return "ENOMEM"; - case ENOSPC: - return "ENOSPC"; - case ENOSYS: - return "ENOSYS"; -#ifdef ENOTCONN - case ENOTCONN: - return "ENOTCONN"; -#endif - case ENOTDIR: - return "ENOTDIR"; -#if defined(ENOTEMPTY) && (ENOTEMPTY != EEXIST) /* same code on AIX */ - case ENOTEMPTY: - return "ENOTEMPTY"; -#endif -#ifdef ENOTSOCK - case ENOTSOCK: - return "ENOTSOCK"; -#endif -#ifdef ENOTSUP - case ENOTSUP: - return "ENOTSUP"; -#endif - case ENOTTY: - return "ENOTTY"; - case ENXIO: - return "ENXIO"; -#if defined(EOPNOTSUPP) && (!defined(ENOTSUP) || (EOPNOTSUPP != ENOTSUP)) - case EOPNOTSUPP: - return "EOPNOTSUPP"; -#endif -#ifdef EOVERFLOW - case EOVERFLOW: - return "EOVERFLOW"; -#endif - case EPERM: - return "EPERM"; - case EPIPE: - return "EPIPE"; - case EPROTONOSUPPORT: - return "EPROTONOSUPPORT"; - case ERANGE: - return "ERANGE"; -#ifdef EROFS - case EROFS: - return "EROFS"; -#endif - case ESRCH: - return "ESRCH"; -#ifdef ETIMEDOUT - case ETIMEDOUT: - return "ETIMEDOUT"; -#endif -#ifdef ETXTBSY - case ETXTBSY: - return "ETXTBSY"; -#endif -#if defined(EWOULDBLOCK) && (!defined(EAGAIN) || (EWOULDBLOCK != EAGAIN)) - case EWOULDBLOCK: - return "EWOULDBLOCK"; -#endif - case EXDEV: - return "EXDEV"; - } - - return NULL; -} - - /* * error_severity --- get string representing elevel * diff --git a/parser/src_backend_utils_fmgr_fmgr.c b/parser/src_backend_utils_fmgr_fmgr.c new file mode 100644 index 00000000..1019279f --- /dev/null +++ b/parser/src_backend_utils_fmgr_fmgr.c @@ -0,0 +1,570 @@ +/*-------------------------------------------------------------------- + * Symbols referenced in this file: + * - FunctionCall5Coll + *-------------------------------------------------------------------- + */ + +/*------------------------------------------------------------------------- + * + * fmgr.c + * The Postgres function manager. + * + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group + * Portions Copyright (c) 1994, Regents of the University of California + * + * + * IDENTIFICATION + * src/backend/utils/fmgr/fmgr.c + * + *------------------------------------------------------------------------- + */ + +#include "postgres.h" + +#include "access/detoast.h" +#include "catalog/pg_language.h" +#include "catalog/pg_proc.h" +#include "catalog/pg_type.h" +#include "executor/functions.h" +#include "lib/stringinfo.h" +#include "miscadmin.h" +#include "nodes/makefuncs.h" +#include "nodes/nodeFuncs.h" +#include "pgstat.h" +#include "utils/acl.h" +#include "utils/builtins.h" +#include "utils/fmgrtab.h" +#include "utils/guc.h" +#include "utils/lsyscache.h" +#include "utils/syscache.h" + +/* + * Hooks for function calls + */ +PGDLLIMPORT + +PGDLLIMPORT + + +/* + * Hashtable for fast lookup of external C functions + */ +typedef struct +{ + /* fn_oid is the hash key and so must be first! */ + Oid fn_oid; /* OID of an external C function */ + TransactionId fn_xmin; /* for checking up-to-dateness */ + ItemPointerData fn_tid; + PGFunction user_fn; /* the function's address */ + const Pg_finfo_record *inforec; /* address of its info record */ +} CFuncHashTabEntry; + + + + +static void fmgr_info_cxt_security(Oid functionId, FmgrInfo *finfo, MemoryContext mcxt, + bool ignore_security); +static void fmgr_info_C_lang(Oid functionId, FmgrInfo *finfo, HeapTuple procedureTuple); +static void fmgr_info_other_lang(Oid functionId, FmgrInfo *finfo, HeapTuple procedureTuple); +static CFuncHashTabEntry *lookup_C_func(HeapTuple procedureTuple); +static void record_C_func(HeapTuple procedureTuple, + PGFunction user_fn, const Pg_finfo_record *inforec); + +/* extern so it's callable via JIT */ +extern Datum fmgr_security_definer(PG_FUNCTION_ARGS); + + +/* + * Lookup routines for builtin-function table. We can search by either Oid + * or name, but search by Oid is much faster. + */ + + + +/* + * Lookup a builtin by name. Note there can be more than one entry in + * the array with the same name, but they should all point to the same + * routine. + */ + + +/* + * This routine fills a FmgrInfo struct, given the OID + * of the function to be called. + * + * The caller's CurrentMemoryContext is used as the fn_mcxt of the info + * struct; this means that any subsidiary data attached to the info struct + * (either by fmgr_info itself, or later on by a function call handler) + * will be allocated in that context. The caller must ensure that this + * context is at least as long-lived as the info struct itself. This is + * not a problem in typical cases where the info struct is on the stack or + * in freshly-palloc'd space. However, if one intends to store an info + * struct in a long-lived table, it's better to use fmgr_info_cxt. + */ + + +/* + * Fill a FmgrInfo struct, specifying a memory context in which its + * subsidiary data should go. + */ + + +/* + * This one does the actual work. ignore_security is ordinarily false + * but is set to true when we need to avoid recursion. + */ + + +/* + * Return module and C function name providing implementation of functionId. + * + * If *mod == NULL and *fn == NULL, no C symbol is known to implement + * function. + * + * If *mod == NULL and *fn != NULL, the function is implemented by a symbol in + * the main binary. + * + * If *mod != NULL and *fn !=NULL the function is implemented in an extension + * shared object. + * + * The returned module and function names are pstrdup'ed into the current + * memory context. + */ + + + +/* + * Special fmgr_info processing for C-language functions. Note that + * finfo->fn_oid is not valid yet. + */ + + +/* + * Special fmgr_info processing for other-language functions. Note + * that finfo->fn_oid is not valid yet. + */ + + +/* + * Fetch and validate the information record for the given external function. + * The function is specified by a handle for the containing library + * (obtained from load_external_function) as well as the function name. + * + * If no info function exists for the given name an error is raised. + * + * This function is broken out of fmgr_info_C_lang so that fmgr_c_validator + * can validate the information record for a function not yet entered into + * pg_proc. + */ + + + +/*------------------------------------------------------------------------- + * Routines for caching lookup information for external C functions. + * + * The routines in dfmgr.c are relatively slow, so we try to avoid running + * them more than once per external function per session. We use a hash table + * with the function OID as the lookup key. + *------------------------------------------------------------------------- + */ + +/* + * lookup_C_func: try to find a C function in the hash table + * + * If an entry exists and is up to date, return it; else return NULL + */ + + +/* + * record_C_func: enter (or update) info about a C function in the hash table + */ + + +/* + * clear_external_function_hash: remove entries for a library being closed + * + * Presently we just zap the entire hash table, but later it might be worth + * the effort to remove only the entries associated with the given handle. + */ + + + +/* + * Copy an FmgrInfo struct + * + * This is inherently somewhat bogus since we can't reliably duplicate + * language-dependent subsidiary info. We cheat by zeroing fn_extra, + * instead, meaning that subsidiary info will have to be recomputed. + */ + + + +/* + * Specialized lookup routine for fmgr_internal_validator: given the alleged + * name of an internal function, return the OID of the function. + * If the name is not recognized, return InvalidOid. + */ + + + +/* + * Support for security-definer and proconfig-using functions. We support + * both of these features using the same call handler, because they are + * often used together and it would be inefficient (as well as notationally + * messy) to have two levels of call handler involved. + */ +struct fmgr_security_definer_cache +{ + FmgrInfo flinfo; /* lookup info for target function */ + Oid userid; /* userid to set, or InvalidOid */ + ArrayType *proconfig; /* GUC values to set, or NULL */ + Datum arg; /* passthrough argument for plugin modules */ +}; + +/* + * Function handler for security-definer/proconfig/plugin-hooked functions. + * We extract the OID of the actual function and do a fmgr lookup again. + * Then we fetch the pg_proc row and copy the owner ID and proconfig fields. + * (All this info is cached for the duration of the current query.) + * To execute a call, we temporarily replace the flinfo with the cached + * and looked-up one, while keeping the outer fcinfo (which contains all + * the actual arguments, etc.) intact. This is not re-entrant, but then + * the fcinfo itself can't be used reentrantly anyway. + */ + + + +/*------------------------------------------------------------------------- + * Support routines for callers of fmgr-compatible functions + *------------------------------------------------------------------------- + */ + +/* + * These are for invocation of a specifically named function with a + * directly-computed parameter list. Note that neither arguments nor result + * are allowed to be NULL. Also, the function cannot be one that needs to + * look at FmgrInfo, since there won't be any. + */ + + + + + + + + + + + + + + + + + + +/* + * These functions work like the DirectFunctionCall functions except that + * they use the flinfo parameter to initialise the fcinfo for the call. + * It's recommended that the callee only use the fn_extra and fn_mcxt + * fields, as other fields will typically describe the calling function + * not the callee. Conversely, the calling function should not have + * used fn_extra, unless its use is known to be compatible with the callee's. + */ + + + + + +/* + * These are for invocation of a previously-looked-up function with a + * directly-computed parameter list. Note that neither arguments nor result + * are allowed to be NULL. + */ + + + + + + + + + + +Datum +FunctionCall5Coll(FmgrInfo *flinfo, Oid collation, Datum arg1, Datum arg2, + Datum arg3, Datum arg4, Datum arg5) +{ + LOCAL_FCINFO(fcinfo, 5); + Datum result; + + InitFunctionCallInfoData(*fcinfo, flinfo, 5, collation, NULL, NULL); + + fcinfo->args[0].value = arg1; + fcinfo->args[0].isnull = false; + fcinfo->args[1].value = arg2; + fcinfo->args[1].isnull = false; + fcinfo->args[2].value = arg3; + fcinfo->args[2].isnull = false; + fcinfo->args[3].value = arg4; + fcinfo->args[3].isnull = false; + fcinfo->args[4].value = arg5; + fcinfo->args[4].isnull = false; + + result = FunctionCallInvoke(fcinfo); + + /* Check for null result, since caller is clearly not expecting one */ + if (fcinfo->isnull) + elog(ERROR, "function %u returned NULL", flinfo->fn_oid); + + return result; +} + + + + + + + + + + +/* + * These are for invocation of a function identified by OID with a + * directly-computed parameter list. Note that neither arguments nor result + * are allowed to be NULL. These are essentially fmgr_info() followed + * by FunctionCallN(). If the same function is to be invoked repeatedly, + * do the fmgr_info() once and then use FunctionCallN(). + */ + + + + + + + + + + + + + + + + + + + + + +/* + * Special cases for convenient invocation of datatype I/O functions. + */ + +/* + * Call a previously-looked-up datatype input function. + * + * "str" may be NULL to indicate we are reading a NULL. In this case + * the caller should assume the result is NULL, but we'll call the input + * function anyway if it's not strict. So this is almost but not quite + * the same as FunctionCall3. + */ + + +/* + * Call a previously-looked-up datatype output function. + * + * Do not call this on NULL datums. + * + * This is currently little more than window dressing for FunctionCall1. + */ + + +/* + * Call a previously-looked-up datatype binary-input function. + * + * "buf" may be NULL to indicate we are reading a NULL. In this case + * the caller should assume the result is NULL, but we'll call the receive + * function anyway if it's not strict. So this is almost but not quite + * the same as FunctionCall3. + */ + + +/* + * Call a previously-looked-up datatype binary-output function. + * + * Do not call this on NULL datums. + * + * This is little more than window dressing for FunctionCall1, but it does + * guarantee a non-toasted result, which strictly speaking the underlying + * function doesn't. + */ + + +/* + * As above, for I/O functions identified by OID. These are only to be used + * in seldom-executed code paths. They are not only slow but leak memory. + */ + + + + + + + + + +/*------------------------------------------------------------------------- + * Support routines for standard maybe-pass-by-reference datatypes + * + * int8 and float8 can be passed by value if Datum is wide enough. + * (For backwards-compatibility reasons, we allow pass-by-ref to be chosen + * at compile time even if pass-by-val is possible.) + * + * Note: there is only one switch controlling the pass-by-value option for + * both int8 and float8; this is to avoid making things unduly complicated + * for the timestamp types, which might have either representation. + *------------------------------------------------------------------------- + */ + +#ifndef USE_FLOAT8_BYVAL /* controls int8 too */ + +Datum +Int64GetDatum(int64 X) +{ + int64 *retval = (int64 *) palloc(sizeof(int64)); + + *retval = X; + return PointerGetDatum(retval); +} + +Datum +Float8GetDatum(float8 X) +{ + float8 *retval = (float8 *) palloc(sizeof(float8)); + + *retval = X; + return PointerGetDatum(retval); +} +#endif /* USE_FLOAT8_BYVAL */ + + +/*------------------------------------------------------------------------- + * Support routines for toastable datatypes + *------------------------------------------------------------------------- + */ + + + + + + + + + +/*------------------------------------------------------------------------- + * Support routines for extracting info from fn_expr parse tree + * + * These are needed by polymorphic functions, which accept multiple possible + * input types and need help from the parser to know what they've got. + * Also, some functions might be interested in whether a parameter is constant. + * Functions taking VARIADIC ANY also need to know about the VARIADIC keyword. + *------------------------------------------------------------------------- + */ + +/* + * Get the actual type OID of the function return type + * + * Returns InvalidOid if information is not available + */ + + +/* + * Get the actual type OID of a specific function argument (counting from 0) + * + * Returns InvalidOid if information is not available + */ + + +/* + * Get the actual type OID of a specific function argument (counting from 0), + * but working from the calling expression tree instead of FmgrInfo + * + * Returns InvalidOid if information is not available + */ + + +/* + * Find out whether a specific function argument is constant for the + * duration of a query + * + * Returns false if information is not available + */ + + +/* + * Find out whether a specific function argument is constant for the + * duration of a query, but working from the calling expression tree + * + * Returns false if information is not available + */ + + +/* + * Get the VARIADIC flag from the function invocation + * + * Returns false (the default assumption) if information is not available + * + * Note this is generally only of interest to VARIADIC ANY functions + */ + + +/* + * Set options to FmgrInfo of opclass support function. + * + * Opclass support functions are called outside of expressions. Thanks to that + * we can use fn_expr to store opclass options as bytea constant. + */ + + +/* + * Check if options are defined for opclass support function. + */ + + +/* + * Get options for opclass support function. + */ + + +/*------------------------------------------------------------------------- + * Support routines for procedural language implementations + *------------------------------------------------------------------------- + */ + +/* + * Verify that a validator is actually associated with the language of a + * particular function and that the user has access to both the language and + * the function. All validators should call this before doing anything + * substantial. Doing so ensures a user cannot achieve anything with explicit + * calls to validators that he could not achieve with CREATE FUNCTION or by + * simply calling an existing function. + * + * When this function returns false, callers should skip all validation work + * and call PG_RETURN_VOID(). This never happens at present; it is reserved + * for future expansion. + * + * In particular, checking that the validator corresponds to the function's + * language allows untrusted language validators to assume they process only + * superuser-chosen source code. (Untrusted language call handlers, by + * definition, do assume that.) A user lacking the USAGE language privilege + * would be unable to reach the validator through CREATE FUNCTION, so we check + * that to block explicit calls as well. Checking the EXECUTE privilege on + * the function is often superfluous, because most users can clone the + * function to get an executable copy. It is meaningful against users with no + * database TEMP right and no permanent schema CREATE right, thereby unable to + * create any function. Also, if the function tracks persistent state by + * function OID or name, validating the original function might permit more + * mischief than creating and validating a clone thereof. + */ + diff --git a/parser/src_backend_utils_hash_dynahash.c b/parser/src_backend_utils_hash_dynahash.c index 3c82f5cc..1ccbe49f 100644 --- a/parser/src_backend_utils_hash_dynahash.c +++ b/parser/src_backend_utils_hash_dynahash.c @@ -60,7 +60,7 @@ * function must be supplied; comparison defaults to memcmp() and key copying * to memcpy() when a user-defined hashing function is selected. * - * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * @@ -105,6 +105,8 @@ #include #include "access/xact.h" +#include "common/hashfn.h" +#include "port/pg_bitutils.h" #include "storage/shmem.h" #include "storage/spin.h" #include "utils/dynahash.h" @@ -262,7 +264,7 @@ struct HTAB */ #define MOD(x,y) ((x) & ((y)-1)) -#if HASH_STATISTICS +#ifdef HASH_STATISTICS static long hash_accesses, hash_collisions, hash_expansions; @@ -346,7 +348,7 @@ DynaHashAlloc(Size size) * Compute derived fields of hctl and build the initial directory/segment * arrays */ -#if HASH_DEBUG +#ifdef HASH_DEBUG #endif /* @@ -381,7 +383,7 @@ DynaHashAlloc(Size size) -#if HASH_STATISTICS +#ifdef HASH_STATISTICS #endif /*******************************SEARCH ROUTINES *****************************/ @@ -429,8 +431,8 @@ calc_bucket(HASHHDR *hctl, uint32 hash_val) * HASH_ENTER_NULL cannot be used with the default palloc-based allocator, * since palloc internally ereports on out-of-memory. * - * If foundPtr isn't NULL, then *foundPtr is set TRUE if we found an - * existing entry in the table, FALSE otherwise. This is needed in the + * If foundPtr isn't NULL, then *foundPtr is set true if we found an + * existing entry in the table, false otherwise. This is needed in the * HASH_ENTER case, but is redundant with the return value otherwise. * * For hash_search_with_hash_value, the hashvalue parameter must have been @@ -467,7 +469,7 @@ hash_search_with_hash_value(HTAB *hashp, HASHBUCKET *prevBucketPtr; HashCompareFunc match; -#if HASH_STATISTICS +#ifdef HASH_STATISTICS hash_accesses++; hctl->accesses++; #endif @@ -522,7 +524,7 @@ hash_search_with_hash_value(HTAB *hashp, break; prevBucketPtr = &(currBucket->link); currBucket = *prevBucketPtr; -#if HASH_STATISTICS +#ifdef HASH_STATISTICS hash_collisions++; hctl->collisions++; #endif @@ -634,20 +636,20 @@ hash_search_with_hash_value(HTAB *hashp, * Therefore this cannot suffer an out-of-memory failure, even if there are * other processes operating in other partitions of the hashtable. * - * Returns TRUE if successful, FALSE if the requested new hash key is already + * Returns true if successful, false if the requested new hash key is already * present. Throws error if the specified entry pointer isn't actually a * table member. * * NB: currently, there is no special case for old and new hash keys being - * identical, which means we'll report FALSE for that situation. This is + * identical, which means we'll report false for that situation. This is * preferable for existing uses. * * NB: for a partitioned hashtable, caller must hold lock on both relevant * partitions, if the new hash key would belong to a different partition. */ -#if HASH_STATISTICS +#ifdef HASH_STATISTICS #endif -#if HASH_STATISTICS +#ifdef HASH_STATISTICS #endif /* @@ -1009,7 +1011,9 @@ hash_corrupted(HTAB *hashp) } /* calculate ceil(log base 2) of num */ - +#if SIZEOF_LONG < 8 +#else +#endif /* calculate first power of 2 >= num, bounded to what will fit in a long */ diff --git a/parser/src_backend_utils_init_globals.c b/parser/src_backend_utils_init_globals.c index 8b0dc78c..52798be2 100644 --- a/parser/src_backend_utils_init_globals.c +++ b/parser/src_backend_utils_init_globals.c @@ -14,7 +14,7 @@ * globals.c * global variable declarations * - * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * @@ -29,6 +29,7 @@ */ #include "postgres.h" +#include "common/file_perm.h" #include "libpq/libpq-be.h" #include "libpq/pqcomm.h" #include "miscadmin.h" @@ -37,7 +38,7 @@ -__thread volatile bool InterruptPending = false; +__thread volatile sig_atomic_t InterruptPending = false; @@ -57,6 +58,7 @@ __thread volatile uint32 CritSectionCount = 0; + /* * MyLatch points to the latch that should be used for signal handling by the * current process. It will either point to a process local latch if the @@ -74,6 +76,12 @@ __thread volatile uint32 CritSectionCount = 0; */ +/* + * Mode of the data directory. The default is 0700 but it may be changed in + * checkDataDir() to 0750 if the data directory actually has that mode. + */ + + /* debugging output file */ /* full path to my executable */ @@ -131,6 +139,7 @@ __thread bool ExitOnAnyError = false; + /* * Primary determinants of sizes of shared-memory structures. * @@ -155,3 +164,5 @@ __thread bool ExitOnAnyError = false; /* working state for vacuum */ + + diff --git a/parser/src_backend_utils_mb_mbutils.c b/parser/src_backend_utils_mb_mbutils.c index 397a0855..19f7f962 100644 --- a/parser/src_backend_utils_mb_mbutils.c +++ b/parser/src_backend_utils_mb_mbutils.c @@ -1,14 +1,21 @@ /*-------------------------------------------------------------------- * Symbols referenced in this file: - * - GetDatabaseEncoding - * - DatabaseEncoding - * - pg_get_client_encoding - * - ClientEncoding * - pg_mbcliplen * - pg_encoding_mbcliplen * - cliplen - * - pg_mblen + * - DatabaseEncoding + * - pg_verifymbstr + * - pg_verify_mbstr_len + * - report_invalid_encoding + * - GetDatabaseEncoding + * - pg_get_client_encoding + * - ClientEncoding + * - pg_database_encoding_max_length + * - pg_unicode_to_server + * - GetDatabaseEncodingName + * - Utf8ToServerConvProc * - pg_mbstrlen_with_len + * - pg_mblen * - SetDatabaseEncoding *-------------------------------------------------------------------- */ @@ -38,7 +45,7 @@ * the result is validly encoded according to the destination encoding. * * - * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * @@ -56,17 +63,6 @@ #include "utils/memutils.h" #include "utils/syscache.h" -/* - * When converting strings between different encodings, we assume that space - * for converted result is 4-to-1 growth in the worst case. The rate for - * currently supported encoding pairs are within 3 (SJIS JIS X0201 half width - * kanna -> UTF8 is the worst case). So "4" should be enough for the moment. - * - * Note that this is not the same as the maximum character width in any - * particular encoding. - */ -#define MAX_CONVERSION_GROWTH 4 - /* * We maintain a simple linked list caching the fmgr lookup info for the * currently selected conversion functions, as well as any that have been @@ -93,6 +89,14 @@ typedef struct ConvProcInfo +/* + * This variable stores the conversion function to convert from UTF-8 + * to the server encoding. It's NULL if the server encoding *is* UTF-8, + * or if we lack a conversion function for this. + */ +static __thread FmgrInfo *Utf8ToServerConvProc = NULL; + + /* * These variables track the currently-selected encodings. */ @@ -114,7 +118,7 @@ static __thread const pg_enc2name *DatabaseEncoding = &pg_enc2name_tbl[PG_SQL_AS /* Internal functions */ static char *perform_default_encoding_conversion(const char *src, - int len, bool is_client_to_server); + int len, bool is_client_to_server); static int cliplen(const char *str, int len, int limit); @@ -242,6 +246,73 @@ pg_get_client_encoding(void) */ +/* + * Convert a single Unicode code point into a string in the server encoding. + * + * The code point given by "c" is converted and stored at *s, which must + * have at least MAX_UNICODE_EQUIVALENT_STRING+1 bytes available. + * The output will have a trailing '\0'. Throws error if the conversion + * cannot be performed. + * + * Note that this relies on having previously looked up any required + * conversion function. That's partly for speed but mostly because the parser + * may call this outside any transaction, or in an aborted transaction. + */ +void +pg_unicode_to_server(pg_wchar c, unsigned char *s) +{ + unsigned char c_as_utf8[MAX_MULTIBYTE_CHAR_LEN + 1]; + int c_as_utf8_len; + int server_encoding; + + /* + * Complain if invalid Unicode code point. The choice of errcode here is + * debatable, but really our caller should have checked this anyway. + */ + if (!is_valid_unicode_codepoint(c)) + ereport(ERROR, + (errcode(ERRCODE_SYNTAX_ERROR), + errmsg("invalid Unicode code point"))); + + /* Otherwise, if it's in ASCII range, conversion is trivial */ + if (c <= 0x7F) + { + s[0] = (unsigned char) c; + s[1] = '\0'; + return; + } + + /* If the server encoding is UTF-8, we just need to reformat the code */ + server_encoding = GetDatabaseEncoding(); + if (server_encoding == PG_UTF8) + { + unicode_to_utf8(c, s); + s[pg_utf_mblen(s)] = '\0'; + return; + } + + /* For all other cases, we must have a conversion function available */ + if (Utf8ToServerConvProc == NULL) + ereport(ERROR, + (errcode(ERRCODE_FEATURE_NOT_SUPPORTED), + errmsg("conversion between %s and %s is not supported", + pg_enc2name_tbl[PG_UTF8].name, + GetDatabaseEncodingName()))); + + /* Construct UTF-8 source string */ + unicode_to_utf8(c, c_as_utf8); + c_as_utf8_len = pg_utf_mblen(c_as_utf8); + c_as_utf8[c_as_utf8_len] = '\0'; + + /* Convert, or throw error if we can't */ + FunctionCall5(Utf8ToServerConvProc, + Int32GetDatum(PG_UTF8), + Int32GetDatum(server_encoding), + CStringGetDatum(c_as_utf8), + CStringGetDatum(s), + Int32GetDatum(c_as_utf8_len)); +} + /* convert a multibyte string to a wchar */ @@ -265,7 +336,7 @@ pg_get_client_encoding(void) int pg_mblen(const char *mbstr) { - return ((*pg_wchar_table[DatabaseEncoding->encoding].mblen) ((const unsigned char *) mbstr)); + return pg_wchar_table[DatabaseEncoding->encoding].mblen((const unsigned char *) mbstr); } /* returns the display length of a multibyte character */ @@ -463,6 +534,14 @@ GetDatabaseEncoding(void) return DatabaseEncoding->encoding; } +const char * +GetDatabaseEncodingName(void) +{ + return DatabaseEncoding->name; +} + + + @@ -477,6 +556,215 @@ GetDatabaseEncoding(void) */ + +/* + * Generic character incrementer function. + * + * Not knowing anything about the properties of the encoding in use, we just + * keep incrementing the last byte until we get a validly-encoded result, + * or we run out of values to try. We don't bother to try incrementing + * higher-order bytes, so there's no growth in runtime for wider characters. + * (If we did try to do that, we'd need to consider the likelihood that 255 + * is not a valid final byte in the encoding.) + */ + + +/* + * UTF-8 character incrementer function. + * + * For a one-byte character less than 0x7F, we just increment the byte. + * + * For a multibyte character, every byte but the first must fall between 0x80 + * and 0xBF; and the first byte must be between 0xC0 and 0xF4. We increment + * the last byte that's not already at its maximum value. If we can't find a + * byte that's less than the maximum allowable value, we simply fail. We also + * need some special-case logic to skip regions used for surrogate pair + * handling, as those should not occur in valid UTF-8. + * + * Note that we don't reset lower-order bytes back to their minimums, since + * we can't afford to make an exhaustive search (see make_greater_string). + */ + + +/* + * EUC-JP character incrementer function. + * + * If the sequence starts with SS2 (0x8e), it must be a two-byte sequence + * representing JIS X 0201 characters with the second byte ranging between + * 0xa1 and 0xdf. We just increment the last byte if it's less than 0xdf, + * and otherwise rewrite the whole sequence to 0xa1 0xa1. + * + * If the sequence starts with SS3 (0x8f), it must be a three-byte sequence + * in which the last two bytes range between 0xa1 and 0xfe. The last byte + * is incremented if possible, otherwise the second-to-last byte. + * + * If the sequence starts with a value other than the above and its MSB + * is set, it must be a two-byte sequence representing JIS X 0208 characters + * with both bytes ranging between 0xa1 and 0xfe. The last byte is + * incremented if possible, otherwise the second-to-last byte. + * + * Otherwise, the sequence is a single-byte ASCII character. It is + * incremented up to 0x7f. + */ + + +/* + * get the character incrementer for the encoding for the current database + */ + + +/* + * fetch maximum length of the encoding for the current database + */ +int +pg_database_encoding_max_length(void) +{ + return pg_wchar_table[GetDatabaseEncoding()].maxmblen; +} + +/* + * Verify mbstr to make sure that it is validly encoded in the current + * database encoding. Otherwise same as pg_verify_mbstr(). + */ +bool +pg_verifymbstr(const char *mbstr, int len, bool noError) +{ + return + pg_verify_mbstr_len(GetDatabaseEncoding(), mbstr, len, noError) >= 0; +} + +/* + * Verify mbstr to make sure that it is validly encoded in the specified + * encoding. + */ + + +/* + * Verify mbstr to make sure that it is validly encoded in the specified + * encoding. + * + * mbstr is not necessarily zero terminated; length of mbstr is + * specified by len. + * + * If OK, return length of string in the encoding. + * If a problem is found, return -1 when noError is + * true; when noError is false, ereport() a descriptive message. + */ +int +pg_verify_mbstr_len(int encoding, const char *mbstr, int len, bool noError) +{ + mbverifier mbverify; + int mb_len; + + Assert(PG_VALID_ENCODING(encoding)); + + /* + * In single-byte encodings, we need only reject nulls (\0). + */ + if (pg_encoding_max_length(encoding) <= 1) + { + const char *nullpos = memchr(mbstr, 0, len); + + if (nullpos == NULL) + return len; + if (noError) + return -1; + report_invalid_encoding(encoding, nullpos, 1); + } + + /* fetch function pointer just once */ + mbverify = pg_wchar_table[encoding].mbverify; + + mb_len = 0; + + while (len > 0) + { + int l; + + /* fast path for ASCII-subset characters */ + if (!IS_HIGHBIT_SET(*mbstr)) + { + if (*mbstr != '\0') + { + mb_len++; + mbstr++; + len--; + continue; + } + if (noError) + return -1; + report_invalid_encoding(encoding, mbstr, len); + } + + l = (*mbverify) ((const unsigned char *) mbstr, len); + + if (l < 0) + { + if (noError) + return -1; + report_invalid_encoding(encoding, mbstr, len); + } + + mbstr += l; + len -= l; + mb_len++; + } + return mb_len; +} + +/* + * check_encoding_conversion_args: check arguments of a conversion function + * + * "expected" arguments can be either an encoding ID or -1 to indicate that + * the caller will check whether it accepts the ID. + * + * Note: the errors here are not really user-facing, so elog instead of + * ereport seems sufficient. Also, we trust that the "expected" encoding + * arguments are valid encoding IDs, but we don't trust the actuals. + */ + + +/* + * report_invalid_encoding: complain about invalid multibyte character + * + * note: len is remaining length of string, not length of character; + * len must be greater than zero, as we always examine the first byte. + */ +void +report_invalid_encoding(int encoding, const char *mbstr, int len) +{ + int l = pg_encoding_mblen(encoding, mbstr); + char buf[8 * 5 + 1]; + char *p = buf; + int j, + jlimit; + + jlimit = Min(l, len); + jlimit = Min(jlimit, 8); /* prevent buffer overrun */ + + for (j = 0; j < jlimit; j++) + { + p += sprintf(p, "0x%02x", (unsigned char) mbstr[j]); + if (j < jlimit - 1) + p += sprintf(p, " "); + } + + ereport(ERROR, + (errcode(ERRCODE_CHARACTER_NOT_IN_REPERTOIRE), + errmsg("invalid byte sequence for encoding \"%s\": %s", + pg_enc2name_tbl[encoding].name, + buf))); +} + +/* + * report_untranslatable_char: complain about untranslatable character + * + * note: len is remaining length of string, not length of character; + * len must be greater than zero, as we always examine the first byte. + */ + + + #ifdef WIN32 /* * Convert from MessageEncoding to a palloc'ed, null-terminated utf16 @@ -548,4 +836,4 @@ pgwin32_message_to_UTF16(const char *str, int len, int *utf16len) return utf16; } -#endif +#endif /* WIN32 */ diff --git a/parser/src_backend_utils_misc_guc.c b/parser/src_backend_utils_misc_guc.c index 4537c72b..5be929b9 100644 --- a/parser/src_backend_utils_misc_guc.c +++ b/parser/src_backend_utils_misc_guc.c @@ -2,6 +2,8 @@ * Symbols referenced in this file: * - log_min_messages * - client_min_messages + * - backtrace_functions + * - backtrace_symbol_list * - check_function_bodies *-------------------------------------------------------------------- */ @@ -14,7 +16,7 @@ * See src/backend/utils/misc/README for more information. * * - * Copyright (c) 2000-2017, PostgreSQL Global Development Group + * Copyright (c) 2000-2020, PostgreSQL Global Development Group * Written by Peter Eisentraut . * * IDENTIFICATION @@ -37,26 +39,30 @@ #include "access/commit_ts.h" #include "access/gin.h" #include "access/rmgr.h" +#include "access/tableam.h" #include "access/transam.h" #include "access/twophase.h" #include "access/xact.h" #include "access/xlog_internal.h" #include "catalog/namespace.h" #include "catalog/pg_authid.h" +#include "catalog/storage.h" #include "commands/async.h" #include "commands/prepare.h" +#include "commands/trigger.h" #include "commands/user.h" #include "commands/vacuum.h" #include "commands/variable.h" -#include "commands/trigger.h" +#include "common/string.h" #include "funcapi.h" +#include "jit/jit.h" #include "libpq/auth.h" -#include "libpq/be-fsstubs.h" #include "libpq/libpq.h" #include "libpq/pqformat.h" #include "miscadmin.h" #include "optimizer/cost.h" #include "optimizer/geqo.h" +#include "optimizer/optimizer.h" #include "optimizer/paths.h" #include "optimizer/planmain.h" #include "parser/parse_expr.h" @@ -71,24 +77,29 @@ #include "postmaster/syslogger.h" #include "postmaster/walwriter.h" #include "replication/logicallauncher.h" +#include "replication/reorderbuffer.h" #include "replication/slot.h" #include "replication/syncrep.h" #include "replication/walreceiver.h" #include "replication/walsender.h" #include "storage/bufmgr.h" #include "storage/dsm_impl.h" -#include "storage/standby.h" #include "storage/fd.h" +#include "storage/large_object.h" #include "storage/pg_shmem.h" -#include "storage/proc.h" #include "storage/predicate.h" +#include "storage/proc.h" +#include "storage/standby.h" #include "tcop/tcopprot.h" #include "tsearch/ts_cache.h" +#include "utils/acl.h" #include "utils/builtins.h" #include "utils/bytea.h" +#include "utils/float.h" #include "utils/guc_tables.h" #include "utils/memutils.h" #include "utils/pg_locale.h" +#include "utils/pg_lsn.h" #include "utils/plancache.h" #include "utils/portal.h" #include "utils/ps_status.h" @@ -124,6 +135,7 @@ extern int CommitSiblings; extern char *default_tablespace; extern char *temp_tablespaces; extern bool ignore_checksum_failure; +extern bool ignore_invalid_pages; extern bool synchronize_seqscans; #ifdef TRACE_SYNCSCAN @@ -143,23 +155,23 @@ extern bool optimize_bounded_sort; static void do_serialize(char **destptr, Size *maxbytes, const char *fmt,...) pg_attribute_printf(3, 4); static void set_config_sourcefile(const char *name, char *sourcefile, - int sourceline); + int sourceline); static bool call_bool_check_hook(struct config_bool *conf, bool *newval, - void **extra, GucSource source, int elevel); + void **extra, GucSource source, int elevel); static bool call_int_check_hook(struct config_int *conf, int *newval, - void **extra, GucSource source, int elevel); + void **extra, GucSource source, int elevel); static bool call_real_check_hook(struct config_real *conf, double *newval, - void **extra, GucSource source, int elevel); + void **extra, GucSource source, int elevel); static bool call_string_check_hook(struct config_string *conf, char **newval, - void **extra, GucSource source, int elevel); + void **extra, GucSource source, int elevel); static bool call_enum_check_hook(struct config_enum *conf, int *newval, - void **extra, GucSource source, int elevel); + void **extra, GucSource source, int elevel); static bool check_log_destination(char **newval, void **extra, GucSource source); static void assign_log_destination(const char *newval, void *extra); static bool check_wal_consistency_checking(char **newval, void **extra, - GucSource source); + GucSource source); static void assign_wal_consistency_checking(const char *newval, void *extra); #ifdef HAVE_SYSLOG @@ -171,7 +183,6 @@ static int syslog_facility = 0; static void assign_syslog_facility(int newval, void *extra); static void assign_syslog_ident(const char *newval, void *extra); static void assign_session_replication_role(int newval, void *extra); -static bool check_client_min_messages(int *newval, void **extra, GucSource source); static bool check_temp_buffers(int *newval, void **extra, GucSource source); static bool check_bonjour(bool *newval, void **extra, GucSource source); static bool check_ssl(bool *newval, void **extra, GucSource source); @@ -185,25 +196,45 @@ static const char *show_archive_command(void); static void assign_tcp_keepalives_idle(int newval, void *extra); static void assign_tcp_keepalives_interval(int newval, void *extra); static void assign_tcp_keepalives_count(int newval, void *extra); +static void assign_tcp_user_timeout(int newval, void *extra); static const char *show_tcp_keepalives_idle(void); static const char *show_tcp_keepalives_interval(void); static const char *show_tcp_keepalives_count(void); +static const char *show_tcp_user_timeout(void); static bool check_maxconnections(int *newval, void **extra, GucSource source); static bool check_max_worker_processes(int *newval, void **extra, GucSource source); static bool check_autovacuum_max_workers(int *newval, void **extra, GucSource source); +static bool check_max_wal_senders(int *newval, void **extra, GucSource source); static bool check_autovacuum_work_mem(int *newval, void **extra, GucSource source); static bool check_effective_io_concurrency(int *newval, void **extra, GucSource source); -static void assign_effective_io_concurrency(int newval, void *extra); +static bool check_maintenance_io_concurrency(int *newval, void **extra, GucSource source); static void assign_pgstat_temp_directory(const char *newval, void *extra); static bool check_application_name(char **newval, void **extra, GucSource source); static void assign_application_name(const char *newval, void *extra); static bool check_cluster_name(char **newval, void **extra, GucSource source); static const char *show_unix_socket_permissions(void); static const char *show_log_file_mode(void); +static const char *show_data_directory_mode(void); +static bool check_backtrace_functions(char **newval, void **extra, GucSource source); +static void assign_backtrace_functions(const char *newval, void *extra); +static bool check_recovery_target_timeline(char **newval, void **extra, GucSource source); +static void assign_recovery_target_timeline(const char *newval, void *extra); +static bool check_recovery_target(char **newval, void **extra, GucSource source); +static void assign_recovery_target(const char *newval, void *extra); +static bool check_recovery_target_xid(char **newval, void **extra, GucSource source); +static void assign_recovery_target_xid(const char *newval, void *extra); +static bool check_recovery_target_time(char **newval, void **extra, GucSource source); +static void assign_recovery_target_time(const char *newval, void *extra); +static bool check_recovery_target_name(char **newval, void **extra, GucSource source); +static void assign_recovery_target_name(const char *newval, void *extra); +static bool check_recovery_target_lsn(char **newval, void **extra, GucSource source); +static void assign_recovery_target_lsn(const char *newval, void *extra); +static bool check_primary_slot_name(char **newval, void **extra, GucSource source); +static bool check_default_with_oids(bool *newval, void **extra, GucSource source); /* Private functions in guc-file.l that need to be called from guc.c */ static ConfigVariable *ProcessConfigFileInternal(GucContext context, - bool applySettings, int elevel); + bool applySettings, int elevel); /* @@ -214,9 +245,13 @@ static ConfigVariable *ProcessConfigFileInternal(GucContext context, +StaticAssertDecl(lengthof(bytea_output_options) == (BYTEA_OUTPUT_HEX + 2), + "array length mismatch"); + /* * We have different sets for client and server message level options because - * they sort slightly different (see "log" level) + * they sort slightly different (see "log" level), and because "fatal"/"panic" + * aren't sensible for client_min_messages. */ @@ -224,24 +259,45 @@ static ConfigVariable *ProcessConfigFileInternal(GucContext context, +StaticAssertDecl(lengthof(intervalstyle_options) == (INTSTYLE_ISO_8601 + 2), + "array length mismatch"); + +StaticAssertDecl(lengthof(log_error_verbosity_options) == (PGERROR_VERBOSE + 2), + "array length mismatch"); +StaticAssertDecl(lengthof(log_statement_options) == (LOGSTMT_ALL + 2), + "array length mismatch"); + + +StaticAssertDecl(lengthof(session_replication_role_options) == (SESSION_REPLICATION_ROLE_LOCAL + 2), + "array length mismatch"); + #ifdef HAVE_SYSLOG #else #endif +StaticAssertDecl(lengthof(track_function_options) == (TRACK_FUNC_ALL + 2), + "array length mismatch"); + +StaticAssertDecl(lengthof(xmlbinary_options) == (XMLBINARY_HEX + 2), + "array length mismatch"); + +StaticAssertDecl(lengthof(xmloption_options) == (XMLOPTION_CONTENT + 2), + "array length mismatch"); + /* * Although only "on", "off", and "safe_encoding" are documented, we * accept all the likely variants of "on" and "off". @@ -268,6 +324,8 @@ static ConfigVariable *ProcessConfigFileInternal(GucContext context, + + /* * password_encryption used to be a boolean, so accept all the likely * variants of "on", too. "off" used to store passwords in plaintext, @@ -275,11 +333,24 @@ static ConfigVariable *ProcessConfigFileInternal(GucContext context, */ + + +StaticAssertDecl(lengthof(ssl_protocol_versions_info) == (PG_TLS1_3_VERSION + 2), + "array length mismatch"); + +#ifndef WIN32 +#endif +#ifndef EXEC_BACKEND +#endif +#ifdef WIN32 +#endif + /* * Options for enum values stored in other modules */ extern const struct config_enum_entry wal_level_options[]; extern const struct config_enum_entry archive_mode_options[]; +extern const struct config_enum_entry recovery_target_action_options[]; extern const struct config_enum_entry sync_method_options[]; extern const struct config_enum_entry dynamic_shared_memory_options[]; @@ -304,6 +375,11 @@ extern const struct config_enum_entry dynamic_shared_memory_options[]; __thread bool check_function_bodies = true; +/* + * This GUC exists solely for backward compatibility, check its definition for + * details. + */ + @@ -319,6 +395,16 @@ __thread int client_min_messages = NOTICE; +__thread char *backtrace_functions; + +__thread char *backtrace_symbol_list; + + + + + + + @@ -373,6 +459,10 @@ __thread int client_min_messages = NOTICE; + + + + @@ -389,6 +479,9 @@ __thread int client_min_messages = NOTICE; */ +StaticAssertDecl(lengthof(GucContext_Names) == (PGC_USERSET + 1), + "array length mismatch"); + /* * Displayable names for source types (enum GucSource) * @@ -396,11 +489,17 @@ __thread int client_min_messages = NOTICE; */ +StaticAssertDecl(lengthof(GucSource_Names) == (PGC_S_SESSION + 1), + "array length mismatch"); + /* * Displayable names for the groupings defined in enum config_group */ +StaticAssertDecl(lengthof(config_group_names) == (DEVELOPER_OPTIONS + 2), + "array length mismatch"); + /* * Displayable names for GUC variable types (enum config_type) * @@ -408,6 +507,9 @@ __thread int client_min_messages = NOTICE; */ +StaticAssertDecl(lengthof(config_type_names) == (PGC_ENUM + 1), + "array length mismatch"); + /* * Unit conversion tables. * @@ -415,13 +517,13 @@ __thread int client_min_messages = NOTICE; * For each supported conversion from one unit to another, we have an entry * in the table. * - * To keep things simple, and to avoid intermediate-value overflows, + * To keep things simple, and to avoid possible roundoff error, * conversions are never chained. There needs to be a direct conversion * between all units (of the same type). * - * The conversions from each base unit must be kept in order from greatest - * to smallest unit; convert_from_base_unit() relies on that. (The order of - * the base units does not matter.) + * The conversions for each base unit must be kept in order from greatest to + * smallest human-friendly unit; convert_xxx_from_base_unit() rely on that. + * (The order of the base-unit groups does not matter.) */ #define MAX_UNIT_LEN 3 /* length of longest recognized unit string */ @@ -430,9 +532,7 @@ typedef struct char unit[MAX_UNIT_LEN + 1]; /* unit, as a string, like "kB" or * "min" */ int base_unit; /* GUC_UNIT_XXX */ - int multiplier; /* If positive, multiply the value with this - * for unit -> base_unit conversion. If - * negative, divide (with the absolute value) */ + double multiplier; /* Factor for converting unit -> base_unit */ } unit_conversion; /* Ensure that the constants in the tables don't overflow or underflow */ @@ -442,9 +542,6 @@ typedef struct #if XLOG_BLCKSZ < 1024 || XLOG_BLCKSZ > (1024*1024) #error XLOG_BLCKSZ must be between 1KB and 1MB #endif -#if XLOG_SEG_SIZE < (1024*1024) || XLOG_SEG_SIZE > (1024*1024*1024) -#error XLOG_SEG_SIZE must be between 1MB and 1GB -#endif @@ -509,6 +606,9 @@ typedef struct #ifdef USE_PREFETCH #else #endif +#ifdef USE_PREFETCH +#else +#endif @@ -520,6 +620,9 @@ typedef struct #ifdef USE_SSL #else #endif +#ifdef USE_OPENSSL +#else +#endif #ifdef USE_SSL #else #endif @@ -553,9 +656,9 @@ typedef struct - /* TRUE if need to do commit/abort work */ + /* true if need to do commit/abort work */ - /* TRUE to enable GUC_REPORT */ + /* true to enable GUC_REPORT */ /* 1 when in main transaction */ @@ -567,18 +670,18 @@ static void InitializeOneGUCOption(struct config_generic *gconf); static void push_old_value(struct config_generic *gconf, GucAction action); static void ReportGUCOption(struct config_generic *record); static void reapply_stacked_values(struct config_generic *variable, - struct config_string *pHolder, - GucStack *stack, - const char *curvalue, - GucContext curscontext, GucSource cursource); + struct config_string *pHolder, + GucStack *stack, + const char *curvalue, + GucContext curscontext, GucSource cursource); static void ShowGUCConfigOption(const char *name, DestReceiver *dest); static void ShowAllGUCConfig(DestReceiver *dest); static char *_ShowOption(struct config_generic *record, bool use_units); static bool validate_option_array_item(const char *name, const char *value, - bool skipIfNoPermissions); + bool skipIfNoPermissions); static void write_auto_conf_file(int fd, const char *filename, ConfigVariable *head_p); static void replace_auto_config_value(ConfigVariable **head_p, ConfigVariable **tail_p, - const char *name, const char *value); + const char *name, const char *value); /* @@ -657,7 +760,7 @@ static void replace_auto_config_value(ConfigVariable **head_p, ConfigVariable ** /* * Look up option NAME. If it exists, return a pointer to its record, - * else return NULL. If create_placeholders is TRUE, we'll create a + * else return NULL. If create_placeholders is true, we'll create a * placeholder record for a valid-looking custom variable name. */ @@ -767,39 +870,62 @@ static void replace_auto_config_value(ConfigVariable **head_p, ConfigVariable ** /* * Convert a value from one of the human-friendly units ("kB", "min" etc.) * to the given base unit. 'value' and 'unit' are the input value and unit - * to convert from. The converted value is stored in *base_value. + * to convert from (there can be trailing spaces in the unit string). + * The converted value is stored in *base_value. + * It's caller's responsibility to round off the converted value as necessary + * and check for out-of-range. * * Returns true on success, false if the input unit is not recognized. */ /* - * Convert a value in some base unit to a human-friendly unit. The output - * unit is chosen so that it's the greatest unit that can represent the value - * without loss. For example, if the base unit is GUC_UNIT_KB, 1024 is - * converted to 1 MB, but 1025 is represented as 1025 kB. + * Convert an integer value in some base unit to a human-friendly unit. + * + * The output unit is chosen so that it's the greatest unit that can represent + * the value without loss. For example, if the base unit is GUC_UNIT_KB, 1024 + * is converted to 1 MB, but 1025 is represented as 1025 kB. + */ + + +/* + * Convert a floating-point value in some base unit to a human-friendly unit. + * + * Same as above, except we have to do the math a bit differently, and + * there's a possibility that we don't find any exact divisor. + */ + + +/* + * Return the name of a GUC's base unit (e.g. "ms") given its flags. + * Return NULL if the GUC is unitless. */ /* * Try to parse value as an integer. The accepted formats are the - * usual decimal, octal, or hexadecimal formats, optionally followed by - * a unit name if "flags" indicates a unit is allowed. + * usual decimal, octal, or hexadecimal formats, as well as floating-point + * formats (which will be rounded to integer after any units conversion). + * Optionally, the value can be followed by a unit name if "flags" indicates + * a unit is allowed. * * If the string parses okay, return true, else false. * If okay and result is not NULL, return the value in *result. * If not okay and hintmsg is not NULL, *hintmsg is set to a suitable - * HINT message, or NULL if no hint provided. + * HINT message, or NULL if no hint provided. */ - - /* * Try to parse value as a floating point number in the usual format. + * Optionally, the value can be followed by a unit name if "flags" indicates + * a unit is allowed. + * * If the string parses okay, return true, else false. * If okay and result is not NULL, return the value in *result. + * If not okay and hintmsg is not NULL, *hintmsg is set to a suitable + * HINT message, or NULL if no hint provided. */ @@ -819,7 +945,7 @@ static void replace_auto_config_value(ConfigVariable **head_p, ConfigVariable ** * Lookup the value for an enum option with the selected name * (case-insensitive). * If the enum option is found, sets the retval value and returns - * true. If it's not found, return FALSE and retval is set to 0. + * true. If it's not found, return false and retval is set to 0. */ @@ -1073,6 +1199,14 @@ static void replace_auto_config_value(ConfigVariable **head_p, ConfigVariable ** */ +/* + * Return an array of modified GUC options to show in EXPLAIN. + * + * We only report options related to query planning (marked with GUC_EXPLAIN), + * with values different from their built-in defaults. + */ + + /* * Return GUC variable value by name; optionally return canonical form of * name. If the GUC is unset, then throw an error unless missing_ok is true, @@ -1100,7 +1234,7 @@ static void replace_auto_config_value(ConfigVariable **head_p, ConfigVariable ** /* * show_config_by_name_missing_ok - equiv to SHOW X command but implemented as * a function. If X does not exist, suppress the error and just return NULL - * if missing_ok is TRUE. + * if missing_ok is true. */ @@ -1496,7 +1630,7 @@ read_nondefault_variables(void) * or NULL for the Delete/Reset cases. If skipIfNoPermissions is true, it's * not an error to have no permissions to set the option. * - * Returns TRUE if OK, FALSE if skipIfNoPermissions is true and user does not + * Returns true if OK, false if skipIfNoPermissions is true and user does not * have permission to change this option (all other error cases result in an * error being thrown). */ @@ -1557,8 +1691,6 @@ read_nondefault_variables(void) - - #ifndef USE_BONJOUR #endif @@ -1609,11 +1741,16 @@ read_nondefault_variables(void) -#ifdef USE_PREFETCH -#else + + + + + + +#ifndef USE_PREFETCH #endif /* USE_PREFETCH */ -#ifdef USE_PREFETCH +#ifndef USE_PREFETCH #endif /* USE_PREFETCH */ @@ -1628,4 +1765,67 @@ read_nondefault_variables(void) + + +/* + * We split the input string, where commas separate function names + * and certain whitespace chars are ignored, into a \0-separated (and + * \0\0-terminated) list of function names. This formulation allows + * easy scanning when an error is thrown while avoiding the use of + * non-reentrant strtok(), as well as keeping the output data in a + * single palloc() chunk. + */ + + + + + + + + +/* + * Recovery target settings: Only one of the several recovery_target* settings + * may be set. Setting a second one results in an error. The global variable + * recoveryTarget tracks which kind of recovery target was chosen. Other + * variables store the actual target value (for example a string or a xid). + * The assign functions of the parameters check whether a competing parameter + * was already set. But we want to allow setting the same parameter multiple + * times. We also want to allow unsetting a parameter and setting a different + * one, so we unset recoveryTarget when the parameter is set to an empty + * string. + */ + + + + + + + + + + + +/* + * The interpretation of the recovery_target_time string can depend on the + * time zone setting, so we need to wait until after all GUC processing is + * done before we can do the final parsing of the string. This check function + * only does a parsing pass to catch syntax errors, but we store the string + * and parse it again when we need to use it. + */ + + + + + + + + + + + + + + + + #include "guc-file.c" diff --git a/parser/src_backend_utils_mmgr_aset.c b/parser/src_backend_utils_mmgr_aset.c index 9c7ed49b..16ae7e3d 100644 --- a/parser/src_backend_utils_mmgr_aset.c +++ b/parser/src_backend_utils_mmgr_aset.c @@ -1,20 +1,19 @@ /*-------------------------------------------------------------------- * Symbols referenced in this file: - * - AllocSetContextCreate + * - AllocSetContextCreateInternal + * - context_freelists * - AllocSetMethods * - AllocSetAlloc * - AllocSetFreeIndex - * - LogTable256 * - AllocSetFree * - AllocSetRealloc - * - AllocSetInit * - AllocSetReset * - AllocSetDelete * - AllocSetGetChunkSpace * - AllocSetIsEmpty * - AllocSetStats * - AllocSetCheck - * - AllocSetContextCreate + * - AllocSetDeleteFreeList *-------------------------------------------------------------------- */ @@ -27,7 +26,7 @@ * type. * * - * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * IDENTIFICATION @@ -66,12 +65,10 @@ #include "postgres.h" +#include "port/pg_bitutils.h" #include "utils/memdebug.h" #include "utils/memutils.h" -/* Define this to detail debug alloc information */ -/* #define HAVE_ALLOCINFO */ - /*-------------------- * Chunk freelist k holds chunks of size 1 << (k + ALLOC_MINBITS), * for k = 0 .. ALLOCSET_NUM_FREELISTS-1. @@ -113,6 +110,9 @@ * * Blocks allocated to hold oversize chunks do not follow this rule, however; * they are just however big they need to be to hold that single chunk. + * + * Also, if a minContextSize is specified, the first block has that size, + * and then initBlockSize is used for the next one. *-------------------- */ @@ -133,7 +133,7 @@ typedef void *AllocPointer; * * Note: header.isReset means there is nothing for AllocSetReset to do. * This is different from the aset being physically empty (empty blocks list) - * because we may still have a keeper block. It's also different from the set + * because we will still have a keeper block. It's also different from the set * being logically empty, because we don't attempt to detect pfree'ing the * last active chunk. */ @@ -148,7 +148,9 @@ typedef struct AllocSetContext Size maxBlockSize; /* maximum block size */ Size nextBlockSize; /* next block size to allocate */ Size allocChunkLimit; /* effective chunk size limit */ - AllocBlock keeper; /* if not NULL, keep this block over resets */ + AllocBlock keeper; /* keep this block over resets */ + /* freelist this context could be put in, or -1 if not a candidate: */ + int freeListIndex; /* index in context_freelists[], or -1 */ } AllocSetContext; typedef AllocSetContext *AllocSet; @@ -177,6 +179,14 @@ typedef struct AllocBlockData /* * AllocChunk * The prefix of each piece of memory in an AllocBlock + * + * Note: to meet the memory context APIs, the payload area of the chunk must + * be maxaligned, and the "aset" link must be immediately adjacent to the + * payload area (cf. GetMemoryChunkContext). We simplify matters for this + * module by requiring sizeof(AllocChunkData) to be maxaligned, and then + * we can ensure things work by adding any required alignment padding before + * the "aset" field. There is a static assertion below that the alignment + * is done correctly. */ typedef struct AllocChunkData { @@ -186,18 +196,30 @@ typedef struct AllocChunkData /* when debugging memory usage, also store actual requested size */ /* this is zero in a free chunk */ Size requested_size; -#if MAXIMUM_ALIGNOF > 4 && SIZEOF_VOID_P == 4 - Size padding; -#endif +#define ALLOCCHUNK_RAWSIZE (SIZEOF_SIZE_T * 2 + SIZEOF_VOID_P) +#else +#define ALLOCCHUNK_RAWSIZE (SIZEOF_SIZE_T + SIZEOF_VOID_P) #endif /* MEMORY_CONTEXT_CHECKING */ + /* ensure proper alignment by adding padding if needed */ +#if (ALLOCCHUNK_RAWSIZE % MAXIMUM_ALIGNOF) != 0 + char padding[MAXIMUM_ALIGNOF - ALLOCCHUNK_RAWSIZE % MAXIMUM_ALIGNOF]; +#endif + /* aset is the owning aset if allocated, or the freelist link if free */ void *aset; - /* there must not be any padding to reach a MAXALIGN boundary here! */ } AllocChunkData; +/* + * Only the "aset" field should be accessed outside this module. + * We keep the rest of an allocated chunk's header marked NOACCESS when using + * valgrind. But note that chunk headers that are in a freelist are kept + * accessible, for simplicity. + */ +#define ALLOCCHUNK_PRIVATE_LEN offsetof(AllocChunkData, aset) + /* * AllocPointerIsValid * True iff pointer is valid allocation pointer. @@ -215,19 +237,62 @@ typedef struct AllocChunkData #define AllocChunkGetPointer(chk) \ ((AllocPointer)(((char *)(chk)) + ALLOC_CHUNKHDRSZ)) +/* + * Rather than repeatedly creating and deleting memory contexts, we keep some + * freed contexts in freelists so that we can hand them out again with little + * work. Before putting a context in a freelist, we reset it so that it has + * only its initial malloc chunk and no others. To be a candidate for a + * freelist, a context must have the same minContextSize/initBlockSize as + * other contexts in the list; but its maxBlockSize is irrelevant since that + * doesn't affect the size of the initial chunk. + * + * We currently provide one freelist for ALLOCSET_DEFAULT_SIZES contexts + * and one for ALLOCSET_SMALL_SIZES contexts; the latter works for + * ALLOCSET_START_SMALL_SIZES too, since only the maxBlockSize differs. + * + * Ordinarily, we re-use freelist contexts in last-in-first-out order, in + * hopes of improving locality of reference. But if there get to be too + * many contexts in the list, we'd prefer to drop the most-recently-created + * contexts in hopes of keeping the process memory map compact. + * We approximate that by simply deleting all existing entries when the list + * overflows, on the assumption that queries that allocate a lot of contexts + * will probably free them in more or less reverse order of allocation. + * + * Contexts in a freelist are chained via their nextchild pointers. + */ +#define MAX_FREE_CONTEXTS 100 /* arbitrary limit on freelist length */ + +typedef struct AllocSetFreeList +{ + int num_free; /* current list length */ + AllocSetContext *first_free; /* list header */ +} AllocSetFreeList; + +/* context_freelists[0] is for default params, [1] for small params */ +static __thread AllocSetFreeList context_freelists[2] = +{ + { + 0, NULL + }, + { + 0, NULL + } +}; + + /* * These functions implement the MemoryContext API for AllocSet contexts. */ static void *AllocSetAlloc(MemoryContext context, Size size); static void AllocSetFree(MemoryContext context, void *pointer); static void *AllocSetRealloc(MemoryContext context, void *pointer, Size size); -static void AllocSetInit(MemoryContext context); static void AllocSetReset(MemoryContext context); static void AllocSetDelete(MemoryContext context); static Size AllocSetGetChunkSpace(MemoryContext context, void *pointer); static bool AllocSetIsEmpty(MemoryContext context); -static void AllocSetStats(MemoryContext context, int level, bool print, - MemoryContextCounters *totals); +static void AllocSetStats(MemoryContext context, + MemoryStatsPrintFunc printfunc, void *passthru, + MemoryContextCounters *totals); #ifdef MEMORY_CONTEXT_CHECKING static void AllocSetCheck(MemoryContext context); @@ -240,7 +305,6 @@ static const MemoryContextMethods AllocSetMethods = { AllocSetAlloc, AllocSetFree, AllocSetRealloc, - AllocSetInit, AllocSetReset, AllocSetDelete, AllocSetGetChunkSpace, @@ -251,33 +315,6 @@ static const MemoryContextMethods AllocSetMethods = { #endif }; -/* - * Table for AllocSetFreeIndex - */ -#define LT16(n) n, n, n, n, n, n, n, n, n, n, n, n, n, n, n, n - -static const unsigned char LogTable256[256] = -{ - 0, 1, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4, 4, 4, - LT16(5), LT16(6), LT16(6), LT16(7), LT16(7), LT16(7), LT16(7), - LT16(8), LT16(8), LT16(8), LT16(8), LT16(8), LT16(8), LT16(8), LT16(8) -}; - -/* ---------- - * Debug macros - * ---------- - */ -#ifdef HAVE_ALLOCINFO -#define AllocFreeInfo(_cxt, _chunk) \ - fprintf(stderr, "AllocFree: %s: %p, %zu\n", \ - (_cxt)->header.name, (_chunk), (_chunk)->size) -#define AllocAllocInfo(_cxt, _chunk) \ - fprintf(stderr, "AllocAlloc: %s: %p, %zu\n", \ - (_cxt)->header.name, (_chunk), (_chunk)->size) -#else -#define AllocFreeInfo(_cxt, _chunk) -#define AllocAllocInfo(_cxt, _chunk) -#endif /* ---------- * AllocSetFreeIndex - @@ -291,24 +328,41 @@ static inline int AllocSetFreeIndex(Size size) { int idx; - unsigned int t, - tsize; if (size > (1 << ALLOC_MINBITS)) { - tsize = (size - 1) >> ALLOC_MINBITS; - - /* - * At this point we need to obtain log2(tsize)+1, ie, the number of - * not-all-zero bits at the right. We used to do this with a - * shift-and-count loop, but this function is enough of a hotspot to - * justify micro-optimization effort. The best approach seems to be - * to use a lookup table. Note that this code assumes that - * ALLOCSET_NUM_FREELISTS <= 17, since we only cope with two bytes of - * the tsize value. + /*---------- + * At this point we must compute ceil(log2(size >> ALLOC_MINBITS)). + * This is the same as + * pg_leftmost_one_pos32((size - 1) >> ALLOC_MINBITS) + 1 + * or equivalently + * pg_leftmost_one_pos32(size - 1) - ALLOC_MINBITS + 1 + * + * However, rather than just calling that function, we duplicate the + * logic here, allowing an additional optimization. It's reasonable + * to assume that ALLOC_CHUNK_LIMIT fits in 16 bits, so we can unroll + * the byte-at-a-time loop in pg_leftmost_one_pos32 and just handle + * the last two bytes. + * + * Yes, this function is enough of a hot-spot to make it worth this + * much trouble. + *---------- */ +#ifdef HAVE__BUILTIN_CLZ + idx = 31 - __builtin_clz((uint32) size - 1) - ALLOC_MINBITS + 1; +#else + uint32 t, + tsize; + + /* Statically assert that we only have a 16-bit input value. */ + StaticAssertStmt(ALLOC_CHUNK_LIMIT < (1 << 16), + "ALLOC_CHUNK_LIMIT must be less than 64kB"); + + tsize = size - 1; t = tsize >> 8; - idx = t ? LogTable256[t] + 8 : LogTable256[tsize]; + idx = t ? pg_leftmost_one_pos[t] + 8 : pg_leftmost_one_pos[tsize]; + idx -= ALLOC_MINBITS - 1; +#endif Assert(idx < ALLOCSET_NUM_FREELISTS); } @@ -325,63 +379,152 @@ AllocSetFreeIndex(Size size) /* - * AllocSetContextCreate + * AllocSetContextCreateInternal * Create a new AllocSet context. * * parent: parent context, or NULL if top-level context - * name: name of context (for debugging only, need not be unique) + * name: name of context (must be statically allocated) * minContextSize: minimum context size * initBlockSize: initial allocation block size * maxBlockSize: maximum allocation block size * - * Notes: the name string will be copied into context-lifespan storage. * Most callers should abstract the context size parameters using a macro * such as ALLOCSET_DEFAULT_SIZES. + * + * Note: don't call this directly; go through the wrapper macro + * AllocSetContextCreate. */ MemoryContext -AllocSetContextCreate(MemoryContext parent, - const char *name, - Size minContextSize, - Size initBlockSize, - Size maxBlockSize) +AllocSetContextCreateInternal(MemoryContext parent, + const char *name, + Size minContextSize, + Size initBlockSize, + Size maxBlockSize) { + int freeListIndex; + Size firstBlockSize; AllocSet set; + AllocBlock block; + /* Assert we padded AllocChunkData properly */ + StaticAssertStmt(ALLOC_CHUNKHDRSZ == MAXALIGN(ALLOC_CHUNKHDRSZ), + "sizeof(AllocChunkData) is not maxaligned"); StaticAssertStmt(offsetof(AllocChunkData, aset) + sizeof(MemoryContext) == - MAXALIGN(sizeof(AllocChunkData)), + ALLOC_CHUNKHDRSZ, "padding calculation in AllocChunkData is wrong"); /* - * First, validate allocation parameters. (If we're going to throw an - * error, we should do so before the context is created, not after.) We - * somewhat arbitrarily enforce a minimum 1K block size. + * First, validate allocation parameters. Once these were regular runtime + * test and elog's, but in practice Asserts seem sufficient because nobody + * varies their parameters at runtime. We somewhat arbitrarily enforce a + * minimum 1K block size. */ - if (initBlockSize != MAXALIGN(initBlockSize) || - initBlockSize < 1024) - elog(ERROR, "invalid initBlockSize for memory context: %zu", - initBlockSize); - if (maxBlockSize != MAXALIGN(maxBlockSize) || - maxBlockSize < initBlockSize || - !AllocHugeSizeIsValid(maxBlockSize)) /* must be safe to double */ - elog(ERROR, "invalid maxBlockSize for memory context: %zu", - maxBlockSize); - if (minContextSize != 0 && - (minContextSize != MAXALIGN(minContextSize) || - minContextSize <= ALLOC_BLOCKHDRSZ + ALLOC_CHUNKHDRSZ)) - elog(ERROR, "invalid minContextSize for memory context: %zu", - minContextSize); - - /* Do the type-independent part of context creation */ - set = (AllocSet) MemoryContextCreate(T_AllocSetContext, - sizeof(AllocSetContext), - &AllocSetMethods, - parent, - name); - - /* Save allocation parameters */ + Assert(initBlockSize == MAXALIGN(initBlockSize) && + initBlockSize >= 1024); + Assert(maxBlockSize == MAXALIGN(maxBlockSize) && + maxBlockSize >= initBlockSize && + AllocHugeSizeIsValid(maxBlockSize)); /* must be safe to double */ + Assert(minContextSize == 0 || + (minContextSize == MAXALIGN(minContextSize) && + minContextSize >= 1024 && + minContextSize <= maxBlockSize)); + + /* + * Check whether the parameters match either available freelist. We do + * not need to demand a match of maxBlockSize. + */ + if (minContextSize == ALLOCSET_DEFAULT_MINSIZE && + initBlockSize == ALLOCSET_DEFAULT_INITSIZE) + freeListIndex = 0; + else if (minContextSize == ALLOCSET_SMALL_MINSIZE && + initBlockSize == ALLOCSET_SMALL_INITSIZE) + freeListIndex = 1; + else + freeListIndex = -1; + + /* + * If a suitable freelist entry exists, just recycle that context. + */ + if (freeListIndex >= 0) + { + AllocSetFreeList *freelist = &context_freelists[freeListIndex]; + + if (freelist->first_free != NULL) + { + /* Remove entry from freelist */ + set = freelist->first_free; + freelist->first_free = (AllocSet) set->header.nextchild; + freelist->num_free--; + + /* Update its maxBlockSize; everything else should be OK */ + set->maxBlockSize = maxBlockSize; + + /* Reinitialize its header, installing correct name and parent */ + MemoryContextCreate((MemoryContext) set, + T_AllocSetContext, + &AllocSetMethods, + parent, + name); + + ((MemoryContext) set)->mem_allocated = + set->keeper->endptr - ((char *) set); + + return (MemoryContext) set; + } + } + + /* Determine size of initial block */ + firstBlockSize = MAXALIGN(sizeof(AllocSetContext)) + + ALLOC_BLOCKHDRSZ + ALLOC_CHUNKHDRSZ; + if (minContextSize != 0) + firstBlockSize = Max(firstBlockSize, minContextSize); + else + firstBlockSize = Max(firstBlockSize, initBlockSize); + + /* + * Allocate the initial block. Unlike other aset.c blocks, it starts with + * the context header and its block header follows that. + */ + set = (AllocSet) malloc(firstBlockSize); + if (set == NULL) + { + if (TopMemoryContext) + MemoryContextStats(TopMemoryContext); + ereport(ERROR, + (errcode(ERRCODE_OUT_OF_MEMORY), + errmsg("out of memory"), + errdetail("Failed while creating memory context \"%s\".", + name))); + } + + /* + * Avoid writing code that can fail between here and MemoryContextCreate; + * we'd leak the header/initial block if we ereport in this stretch. + */ + + /* Fill in the initial block's block header */ + block = (AllocBlock) (((char *) set) + MAXALIGN(sizeof(AllocSetContext))); + block->aset = set; + block->freeptr = ((char *) block) + ALLOC_BLOCKHDRSZ; + block->endptr = ((char *) set) + firstBlockSize; + block->prev = NULL; + block->next = NULL; + + /* Mark unallocated space NOACCESS; leave the block header alone. */ + VALGRIND_MAKE_MEM_NOACCESS(block->freeptr, block->endptr - block->freeptr); + + /* Remember block as part of block list */ + set->blocks = block; + /* Mark block as not to be released at reset time */ + set->keeper = block; + + /* Finish filling in aset-specific parts of the context header */ + MemSetAligned(set->freelist, 0, sizeof(set->freelist)); + set->initBlockSize = initBlockSize; set->maxBlockSize = maxBlockSize; set->nextBlockSize = initBlockSize; + set->freeListIndex = freeListIndex; /* * Compute the allocation chunk size limit for this context. It can't be @@ -407,64 +550,18 @@ AllocSetContextCreate(MemoryContext parent, (Size) ((maxBlockSize - ALLOC_BLOCKHDRSZ) / ALLOC_CHUNK_FRACTION)) set->allocChunkLimit >>= 1; - /* - * Grab always-allocated space, if requested - */ - if (minContextSize > 0) - { - Size blksize = minContextSize; - AllocBlock block; - - block = (AllocBlock) malloc(blksize); - if (block == NULL) - { - MemoryContextStats(TopMemoryContext); - ereport(ERROR, - (errcode(ERRCODE_OUT_OF_MEMORY), - errmsg("out of memory"), - errdetail("Failed while creating memory context \"%s\".", - name))); - } - block->aset = set; - block->freeptr = ((char *) block) + ALLOC_BLOCKHDRSZ; - block->endptr = ((char *) block) + blksize; - block->prev = NULL; - block->next = set->blocks; - if (block->next) - block->next->prev = block; - set->blocks = block; - /* Mark block as not to be released at reset time */ - set->keeper = block; + /* Finally, do the type-independent part of context creation */ + MemoryContextCreate((MemoryContext) set, + T_AllocSetContext, + &AllocSetMethods, + parent, + name); - /* Mark unallocated space NOACCESS; leave the block header alone. */ - VALGRIND_MAKE_MEM_NOACCESS(block->freeptr, - blksize - ALLOC_BLOCKHDRSZ); - } + ((MemoryContext) set)->mem_allocated = firstBlockSize; return (MemoryContext) set; } -/* - * AllocSetInit - * Context-type-specific initialization routine. - * - * This is called by MemoryContextCreate() after setting up the - * generic MemoryContext fields and before linking the new context - * into the context tree. We must do whatever is needed to make the - * new context minimally valid for deletion. We must *not* risk - * failure --- thus, for example, allocating more memory is not cool. - * (AllocSetContextCreate can allocate memory when it gets control - * back, however.) - */ -static void -AllocSetInit(MemoryContext context) -{ - /* - * Since MemoryContextCreate already zeroed the context node, we don't - * have to do anything here: it's already OK. - */ -} - /* * AllocSetReset * Frees all memory which is allocated in the given set. @@ -472,15 +569,18 @@ AllocSetInit(MemoryContext context) * Actually, this routine has some discretion about what to do. * It should mark all allocated chunks freed, but it need not necessarily * give back all the resources the set owns. Our actual implementation is - * that we hang onto any "keeper" block specified for the set. In this way, - * we don't thrash malloc() when a context is repeatedly reset after small - * allocations, which is typical behavior for per-tuple contexts. + * that we give back all but the "keeper" block (which we must keep, since + * it shares a malloc chunk with the context header). In this way, we don't + * thrash malloc() when a context is repeatedly reset after small allocations, + * which is typical behavior for per-tuple contexts. */ static void AllocSetReset(MemoryContext context) { AllocSet set = (AllocSet) context; AllocBlock block; + Size keepersize PG_USED_FOR_ASSERTS_ONLY + = set->keeper->endptr - ((char *) set); AssertArg(AllocSetIsValid(set)); @@ -494,7 +594,7 @@ AllocSetReset(MemoryContext context) block = set->blocks; - /* New blocks list is either empty or just the keeper block */ + /* New blocks list will be just the keeper block */ set->blocks = set->keeper; while (block != NULL) @@ -519,6 +619,8 @@ AllocSetReset(MemoryContext context) else { /* Normal case, release the block */ + context->mem_allocated -= block->endptr - ((char *) block); + #ifdef CLOBBER_FREED_MEMORY wipe_mem(block, block->freeptr - ((char *) block)); #endif @@ -527,6 +629,8 @@ AllocSetReset(MemoryContext context) block = next; } + Assert(context->mem_allocated == keepersize); + /* Reset block size allocation sequence, too */ set->nextBlockSize = set->initBlockSize; } @@ -537,13 +641,14 @@ AllocSetReset(MemoryContext context) * in preparation for deletion of the set. * * Unlike AllocSetReset, this *must* free all resources of the set. - * But note we are not responsible for deleting the context node itself. */ static void AllocSetDelete(MemoryContext context) { AllocSet set = (AllocSet) context; AllocBlock block = set->blocks; + Size keepersize PG_USED_FOR_ASSERTS_ONLY + = set->keeper->endptr - ((char *) set); AssertArg(AllocSetIsValid(set)); @@ -552,21 +657,70 @@ AllocSetDelete(MemoryContext context) AllocSetCheck(context); #endif - /* Make it look empty, just in case... */ - MemSetAligned(set->freelist, 0, sizeof(set->freelist)); - set->blocks = NULL; - set->keeper = NULL; + /* + * If the context is a candidate for a freelist, put it into that freelist + * instead of destroying it. + */ + if (set->freeListIndex >= 0) + { + AllocSetFreeList *freelist = &context_freelists[set->freeListIndex]; + /* + * Reset the context, if it needs it, so that we aren't hanging on to + * more than the initial malloc chunk. + */ + if (!context->isReset) + MemoryContextResetOnly(context); + + /* + * If the freelist is full, just discard what's already in it. See + * comments with context_freelists[]. + */ + if (freelist->num_free >= MAX_FREE_CONTEXTS) + { + while (freelist->first_free != NULL) + { + AllocSetContext *oldset = freelist->first_free; + + freelist->first_free = (AllocSetContext *) oldset->header.nextchild; + freelist->num_free--; + + /* All that remains is to free the header/initial block */ + free(oldset); + } + Assert(freelist->num_free == 0); + } + + /* Now add the just-deleted context to the freelist. */ + set->header.nextchild = (MemoryContext) freelist->first_free; + freelist->first_free = set; + freelist->num_free++; + + return; + } + + /* Free all blocks, except the keeper which is part of context header */ while (block != NULL) { AllocBlock next = block->next; + if (block != set->keeper) + context->mem_allocated -= block->endptr - ((char *) block); + #ifdef CLOBBER_FREED_MEMORY wipe_mem(block, block->freeptr - ((char *) block)); #endif - free(block); + + if (block != set->keeper) + free(block); + block = next; } + + Assert(context->mem_allocated == keepersize); + + /* Finally, free the context header, including the keeper block */ + free(set); } /* @@ -577,6 +731,10 @@ AllocSetDelete(MemoryContext context) * No request may exceed: * MAXALIGN_DOWN(SIZE_MAX) - ALLOC_BLOCKHDRSZ - ALLOC_CHUNKHDRSZ * All callers use a much-lower limit. + * + * Note: when using valgrind, it doesn't matter how the returned allocation + * is marked, as mcxt.c will set it to UNDEFINED. In some paths we will + * return space that is marked NOACCESS - AllocSetRealloc has to beware! */ static void * AllocSetAlloc(MemoryContext context, Size size) @@ -601,6 +759,9 @@ AllocSetAlloc(MemoryContext context, Size size) block = (AllocBlock) malloc(blksize); if (block == NULL) return NULL; + + context->mem_allocated += blksize; + block->aset = set; block->freeptr = block->endptr = ((char *) block) + blksize; @@ -608,7 +769,6 @@ AllocSetAlloc(MemoryContext context, Size size) chunk->aset = set; chunk->size = chunk_size; #ifdef MEMORY_CONTEXT_CHECKING - /* Valgrind: Will be made NOACCESS below. */ chunk->requested_size = size; /* set mark to catch clobber of "unused" space */ if (size < chunk_size) @@ -638,16 +798,12 @@ AllocSetAlloc(MemoryContext context, Size size) set->blocks = block; } - AllocAllocInfo(set, chunk); + /* Ensure any padding bytes are marked NOACCESS. */ + VALGRIND_MAKE_MEM_NOACCESS((char *) AllocChunkGetPointer(chunk) + size, + chunk_size - size); - /* - * Chunk's metadata fields remain DEFINED. The requested allocation - * itself can be NOACCESS or UNDEFINED; our caller will soon make it - * UNDEFINED. Make extra space at the end of the chunk, if any, - * NOACCESS. - */ - VALGRIND_MAKE_MEM_NOACCESS((char *) chunk + ALLOC_CHUNKHDRSZ, - chunk_size - ALLOC_CHUNKHDRSZ); + /* Disallow external access to private part of chunk header. */ + VALGRIND_MAKE_MEM_NOACCESS(chunk, ALLOCCHUNK_PRIVATE_LEN); return AllocChunkGetPointer(chunk); } @@ -669,10 +825,7 @@ AllocSetAlloc(MemoryContext context, Size size) chunk->aset = (void *) set; #ifdef MEMORY_CONTEXT_CHECKING - /* Valgrind: Free list requested_size should be DEFINED. */ chunk->requested_size = size; - VALGRIND_MAKE_MEM_NOACCESS(&chunk->requested_size, - sizeof(chunk->requested_size)); /* set mark to catch clobber of "unused" space */ if (size < chunk->size) set_sentinel(AllocChunkGetPointer(chunk), size); @@ -682,7 +835,13 @@ AllocSetAlloc(MemoryContext context, Size size) randomize_mem((char *) AllocChunkGetPointer(chunk), size); #endif - AllocAllocInfo(set, chunk); + /* Ensure any padding bytes are marked NOACCESS. */ + VALGRIND_MAKE_MEM_NOACCESS((char *) AllocChunkGetPointer(chunk) + size, + chunk->size - size); + + /* Disallow external access to private part of chunk header. */ + VALGRIND_MAKE_MEM_NOACCESS(chunk, ALLOCCHUNK_PRIVATE_LEN); + return AllocChunkGetPointer(chunk); } @@ -781,7 +940,7 @@ AllocSetAlloc(MemoryContext context, Size size) /* * We could be asking for pretty big blocks here, so cope if malloc - * fails. But give up if there's less than a meg or so available... + * fails. But give up if there's less than 1 MB or so available... */ while (block == NULL && blksize > 1024 * 1024) { @@ -794,22 +953,12 @@ AllocSetAlloc(MemoryContext context, Size size) if (block == NULL) return NULL; + context->mem_allocated += blksize; + block->aset = set; block->freeptr = ((char *) block) + ALLOC_BLOCKHDRSZ; block->endptr = ((char *) block) + blksize; - /* - * If this is the first block of the set, make it the "keeper" block. - * Formerly, a keeper block could only be created during context - * creation, but allowing it to happen here lets us have fast reset - * cycling even for contexts created with minContextSize = 0; that way - * we don't have to force space to be allocated in contexts that might - * never need any space. Don't mark an oversize block as a keeper, - * however. - */ - if (set->keeper == NULL && blksize == set->initBlockSize) - set->keeper = block; - /* Mark unallocated space NOACCESS. */ VALGRIND_MAKE_MEM_NOACCESS(block->freeptr, blksize - ALLOC_BLOCKHDRSZ); @@ -836,8 +985,6 @@ AllocSetAlloc(MemoryContext context, Size size) chunk->size = chunk_size; #ifdef MEMORY_CONTEXT_CHECKING chunk->requested_size = size; - VALGRIND_MAKE_MEM_NOACCESS(&chunk->requested_size, - sizeof(chunk->requested_size)); /* set mark to catch clobber of "unused" space */ if (size < chunk->size) set_sentinel(AllocChunkGetPointer(chunk), size); @@ -847,7 +994,13 @@ AllocSetAlloc(MemoryContext context, Size size) randomize_mem((char *) AllocChunkGetPointer(chunk), size); #endif - AllocAllocInfo(set, chunk); + /* Ensure any padding bytes are marked NOACCESS. */ + VALGRIND_MAKE_MEM_NOACCESS((char *) AllocChunkGetPointer(chunk) + size, + chunk_size - size); + + /* Disallow external access to private part of chunk header. */ + VALGRIND_MAKE_MEM_NOACCESS(chunk, ALLOCCHUNK_PRIVATE_LEN); + return AllocChunkGetPointer(chunk); } @@ -861,11 +1014,10 @@ AllocSetFree(MemoryContext context, void *pointer) AllocSet set = (AllocSet) context; AllocChunk chunk = AllocPointerGetChunk(pointer); - AllocFreeInfo(set, chunk); + /* Allow access to private part of chunk header. */ + VALGRIND_MAKE_MEM_DEFINED(chunk, ALLOCCHUNK_PRIVATE_LEN); #ifdef MEMORY_CONTEXT_CHECKING - VALGRIND_MAKE_MEM_DEFINED(&chunk->requested_size, - sizeof(chunk->requested_size)); /* Test for someone scribbling on unused space in chunk */ if (chunk->requested_size < chunk->size) if (!sentinel_ok(pointer, chunk->requested_size)) @@ -899,6 +1051,9 @@ AllocSetFree(MemoryContext context, void *pointer) set->blocks = block->next; if (block->next) block->next->prev = block->prev; + + context->mem_allocated -= block->endptr - ((char *) block); + #ifdef CLOBBER_FREED_MEMORY wipe_mem(block, block->freeptr - ((char *) block)); #endif @@ -940,11 +1095,14 @@ AllocSetRealloc(MemoryContext context, void *pointer, Size size) { AllocSet set = (AllocSet) context; AllocChunk chunk = AllocPointerGetChunk(pointer); - Size oldsize = chunk->size; + Size oldsize; + + /* Allow access to private part of chunk header. */ + VALGRIND_MAKE_MEM_DEFINED(chunk, ALLOCCHUNK_PRIVATE_LEN); + + oldsize = chunk->size; #ifdef MEMORY_CONTEXT_CHECKING - VALGRIND_MAKE_MEM_DEFINED(&chunk->requested_size, - sizeof(chunk->requested_size)); /* Test for someone scribbling on unused space in chunk */ if (chunk->requested_size < oldsize) if (!sentinel_ok(pointer, chunk->requested_size)) @@ -962,6 +1120,7 @@ AllocSetRealloc(MemoryContext context, void *pointer, Size size) AllocBlock block = (AllocBlock) (((char *) chunk) - ALLOC_BLOCKHDRSZ); Size chksize; Size blksize; + Size oldblksize; /* * Try to verify that we have a sane block pointer: it should @@ -985,9 +1144,20 @@ AllocSetRealloc(MemoryContext context, void *pointer, Size size) /* Do the realloc */ blksize = chksize + ALLOC_BLOCKHDRSZ + ALLOC_CHUNKHDRSZ; + oldblksize = block->endptr - ((char *) block); + block = (AllocBlock) realloc(block, blksize); if (block == NULL) + { + /* Disallow external access to private part of chunk header. */ + VALGRIND_MAKE_MEM_NOACCESS(chunk, ALLOCCHUNK_PRIVATE_LEN); return NULL; + } + + /* updated separately, not to underflow when (oldblksize > blksize) */ + context->mem_allocated -= oldblksize; + context->mem_allocated += blksize; + block->freeptr = block->endptr = ((char *) block) + blksize; /* Update pointers since block has likely been moved */ @@ -1021,8 +1191,6 @@ AllocSetRealloc(MemoryContext context, void *pointer, Size size) #endif chunk->requested_size = size; - VALGRIND_MAKE_MEM_NOACCESS(&chunk->requested_size, - sizeof(chunk->requested_size)); /* set mark to catch clobber of "unused" space */ if (size < chunk->size) @@ -1037,9 +1205,12 @@ AllocSetRealloc(MemoryContext context, void *pointer, Size size) VALGRIND_MAKE_MEM_DEFINED(pointer, oldsize); #endif - /* Make any trailing alignment padding NOACCESS. */ + /* Ensure any padding bytes are marked NOACCESS. */ VALGRIND_MAKE_MEM_NOACCESS((char *) pointer + size, chksize - size); + /* Disallow external access to private part of chunk header. */ + VALGRIND_MAKE_MEM_NOACCESS(chunk, ALLOCCHUNK_PRIVATE_LEN); + return pointer; } @@ -1061,8 +1232,6 @@ AllocSetRealloc(MemoryContext context, void *pointer, Size size) #endif chunk->requested_size = size; - VALGRIND_MAKE_MEM_NOACCESS(&chunk->requested_size, - sizeof(chunk->requested_size)); /* * If this is an increase, mark any newly-available part UNDEFINED. @@ -1089,6 +1258,9 @@ AllocSetRealloc(MemoryContext context, void *pointer, Size size) VALGRIND_MAKE_MEM_DEFINED(pointer, size); #endif + /* Disallow external access to private part of chunk header. */ + VALGRIND_MAKE_MEM_NOACCESS(chunk, ALLOCCHUNK_PRIVATE_LEN); + return pointer; } else @@ -1111,14 +1283,19 @@ AllocSetRealloc(MemoryContext context, void *pointer, Size size) /* leave immediately if request was not completed */ if (newPointer == NULL) + { + /* Disallow external access to private part of chunk header. */ + VALGRIND_MAKE_MEM_NOACCESS(chunk, ALLOCCHUNK_PRIVATE_LEN); return NULL; + } /* - * AllocSetAlloc() just made the region NOACCESS. Change it to - * UNDEFINED for the moment; memcpy() will then transfer definedness - * from the old allocation to the new. If we know the old allocation, - * copy just that much. Otherwise, make the entire old chunk defined - * to avoid errors as we copy the currently-NOACCESS trailing bytes. + * AllocSetAlloc() may have returned a region that is still NOACCESS. + * Change it to UNDEFINED for the moment; memcpy() will then transfer + * definedness from the old allocation to the new. If we know the old + * allocation, copy just that much. Otherwise, make the entire old + * chunk defined to avoid errors as we copy the currently-NOACCESS + * trailing bytes. */ VALGRIND_MAKE_MEM_UNDEFINED(newPointer, size); #ifdef MEMORY_CONTEXT_CHECKING @@ -1146,8 +1323,12 @@ static Size AllocSetGetChunkSpace(MemoryContext context, void *pointer) { AllocChunk chunk = AllocPointerGetChunk(pointer); + Size result; - return chunk->size + ALLOC_CHUNKHDRSZ; + VALGRIND_MAKE_MEM_DEFINED(chunk, ALLOCCHUNK_PRIVATE_LEN); + result = chunk->size + ALLOC_CHUNKHDRSZ; + VALGRIND_MAKE_MEM_NOACCESS(chunk, ALLOCCHUNK_PRIVATE_LEN); + return result; } /* @@ -1172,22 +1353,26 @@ AllocSetIsEmpty(MemoryContext context) * AllocSetStats * Compute stats about memory consumption of an allocset. * - * level: recursion level (0 at top level); used for print indentation. - * print: true to print stats to stderr. - * totals: if not NULL, add stats about this allocset into *totals. + * printfunc: if not NULL, pass a human-readable stats string to this. + * passthru: pass this pointer through to printfunc. + * totals: if not NULL, add stats about this context into *totals. */ static void -AllocSetStats(MemoryContext context, int level, bool print, +AllocSetStats(MemoryContext context, + MemoryStatsPrintFunc printfunc, void *passthru, MemoryContextCounters *totals) { AllocSet set = (AllocSet) context; Size nblocks = 0; Size freechunks = 0; - Size totalspace = 0; + Size totalspace; Size freespace = 0; AllocBlock block; int fidx; + /* Include context header in totalspace */ + totalspace = MAXALIGN(sizeof(AllocSetContext)); + for (block = set->blocks; block != NULL; block = block->next) { nblocks++; @@ -1206,16 +1391,15 @@ AllocSetStats(MemoryContext context, int level, bool print, } } - if (print) + if (printfunc) { - int i; - - for (i = 0; i < level; i++) - fprintf(stderr, " "); - fprintf(stderr, - "%s: %zu total in %zd blocks; %zu free (%zd chunks); %zu used\n", - set->header.name, totalspace, nblocks, freespace, freechunks, - totalspace - freespace); + char stats_string[200]; + + snprintf(stats_string, sizeof(stats_string), + "%zu total in %zd blocks; %zu free (%zd chunks); %zu used", + totalspace, nblocks, freespace, freechunks, + totalspace - freespace); + printfunc(context, passthru, stats_string); } if (totals) @@ -1242,9 +1426,10 @@ static void AllocSetCheck(MemoryContext context) { AllocSet set = (AllocSet) context; - char *name = set->header.name; + const char *name = set->header.name; AllocBlock prevblock; AllocBlock block; + Size total_allocated = 0; for (prevblock = NULL, block = set->blocks; block != NULL; @@ -1255,6 +1440,11 @@ AllocSetCheck(MemoryContext context) long blk_data = 0; long nchunks = 0; + if (set->keeper == block) + total_allocated += block->endptr - ((char *) set); + else + total_allocated += block->endptr - ((char *) block); + /* * Empty block - empty can be keeper-block only */ @@ -1284,13 +1474,11 @@ AllocSetCheck(MemoryContext context) Size chsize, dsize; + /* Allow access to private part of chunk header. */ + VALGRIND_MAKE_MEM_DEFINED(chunk, ALLOCCHUNK_PRIVATE_LEN); + chsize = chunk->size; /* aligned chunk size */ - VALGRIND_MAKE_MEM_DEFINED(&chunk->requested_size, - sizeof(chunk->requested_size)); dsize = chunk->requested_size; /* real data */ - if (dsize > 0) /* not on a free list */ - VALGRIND_MAKE_MEM_NOACCESS(&chunk->requested_size, - sizeof(chunk->requested_size)); /* * Check chunk size @@ -1311,20 +1499,28 @@ AllocSetCheck(MemoryContext context) /* * If chunk is allocated, check for correct aset pointer. (If it's * free, the aset is the freelist pointer, which we can't check as - * easily...) + * easily...) Note this is an incomplete test, since palloc(0) + * produces an allocated chunk with requested_size == 0. */ if (dsize > 0 && chunk->aset != (void *) set) elog(WARNING, "problem in alloc set %s: bogus aset link in block %p, chunk %p", name, block, chunk); /* - * Check for overwrite of "unallocated" space in chunk + * Check for overwrite of padding space in an allocated chunk. */ - if (dsize > 0 && dsize < chsize && + if (chunk->aset == (void *) set && dsize < chsize && !sentinel_ok(chunk, ALLOC_CHUNKHDRSZ + dsize)) elog(WARNING, "problem in alloc set %s: detected write past chunk end in block %p, chunk %p", name, block, chunk); + /* + * If chunk is allocated, disallow external access to private part + * of chunk header. + */ + if (chunk->aset == (void *) set) + VALGRIND_MAKE_MEM_NOACCESS(chunk, ALLOCCHUNK_PRIVATE_LEN); + blk_data += chsize; nchunks++; @@ -1335,6 +1531,30 @@ AllocSetCheck(MemoryContext context) elog(WARNING, "problem in alloc set %s: found inconsistent memory block %p", name, block); } + + Assert(total_allocated == context->mem_allocated); } #endif /* MEMORY_CONTEXT_CHECKING */ + +void +AllocSetDeleteFreeList(MemoryContext context) +{ + AllocSet set = (AllocSet) context; + if (set->freeListIndex >= 0) + { + AllocSetFreeList *freelist = &context_freelists[set->freeListIndex]; + + while (freelist->first_free != NULL) + { + AllocSetContext *oldset = freelist->first_free; + + freelist->first_free = (AllocSetContext *) oldset->header.nextchild; + freelist->num_free--; + + /* All that remains is to free the header/initial block */ + free(oldset); + } + Assert(freelist->num_free == 0); + } +} diff --git a/parser/src_backend_utils_mmgr_mcxt.c b/parser/src_backend_utils_mmgr_mcxt.c index 7b54d732..20dec893 100644 --- a/parser/src_backend_utils_mmgr_mcxt.c +++ b/parser/src_backend_utils_mmgr_mcxt.c @@ -7,13 +7,14 @@ * - TopMemoryContext * - CurrentMemoryContext * - MemoryContextSetParent - * - pfree * - MemoryContextCallResetCallbacks * - MemoryContextResetOnly * - repalloc * - MemoryContextStats * - MemoryContextStatsDetail * - MemoryContextStatsInternal + * - MemoryContextStatsPrint + * - pfree * - pstrdup * - MemoryContextStrdup * - MemoryContextAlloc @@ -41,7 +42,7 @@ * context's MemoryContextMethods struct. * * - * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * @@ -53,6 +54,7 @@ #include "postgres.h" +#include "mb/pg_wchar.h" #include "miscadmin.h" #include "utils/memdebug.h" #include "utils/memutils.h" @@ -88,8 +90,10 @@ __thread MemoryContext ErrorContext = NULL; static void MemoryContextCallResetCallbacks(MemoryContext context); static void MemoryContextStatsInternal(MemoryContext context, int level, - bool print, int max_children, - MemoryContextCounters *totals); + bool print, int max_children, + MemoryContextCounters *totals); +static void MemoryContextStatsPrint(MemoryContext context, void *passthru, + const char *stats_string); /* * You should not do memory allocations within a critical section, because @@ -126,9 +130,7 @@ MemoryContextInit(void) AssertState(TopMemoryContext == NULL); /* - * First, initialize TopMemoryContext, which will hold the MemoryContext - * nodes for all other contexts. (There is special-case code in - * MemoryContextCreate() to handle this call.) + * First, initialize TopMemoryContext, which is the parent of all others. */ TopMemoryContext = AllocSetContextCreate((MemoryContext) NULL, "TopMemoryContext", @@ -194,7 +196,18 @@ MemoryContextResetOnly(MemoryContext context) if (!context->isReset) { MemoryContextCallResetCallbacks(context); - (*context->methods->reset) (context); + + /* + * If context->ident points into the context's memory, it will become + * a dangling pointer. We could prevent that by setting it to NULL + * here, but that would break valid coding patterns that keep the + * ident elsewhere, e.g. in a parent context. Another idea is to use + * MemoryContextContains(), but we don't require ident strings to be + * in separately-palloc'd chunks, so that risks false positives. So + * for now we assume the programmer got it right. + */ + + context->methods->reset(context); context->isReset = true; VALGRIND_DESTROY_MEMPOOL(context); VALGRIND_CREATE_MEMPOOL(context, 0, false); @@ -214,10 +227,9 @@ MemoryContextResetOnly(MemoryContext context) * Delete a context and its descendants, and release all space * allocated therein. * - * The type-specific delete routine removes all subsidiary storage - * for the context, but we have to delete the context node itself, - * as well as recurse to get the children. We must also delink the - * node from its parent, if it has one. + * The type-specific delete routine removes all storage for the context, + * but we have to recurse to handle the children. + * We must also delink the context from its parent, if it has one. */ void MemoryContextDelete(MemoryContext context) @@ -228,7 +240,9 @@ MemoryContextDelete(MemoryContext context) /* And not CurrentMemoryContext, either */ Assert(context != CurrentMemoryContext); - MemoryContextDeleteChildren(context); + /* save a function call in common case where there are no children */ + if (context->firstchild != NULL) + MemoryContextDeleteChildren(context); /* * It's not entirely clear whether 'tis better to do this before or after @@ -245,9 +259,16 @@ MemoryContextDelete(MemoryContext context) */ MemoryContextSetParent(context, NULL); - (*context->methods->delete_context) (context); + /* + * Also reset the context's ident pointer, in case it points into the + * context. This would only matter if someone tries to get stats on the + * (already unlinked) context, which is unlikely, but let's be safe. + */ + context->ident = NULL; + + context->methods->delete_context(context); + VALGRIND_DESTROY_MEMPOOL(context); - pfree(context); } /* @@ -303,10 +324,22 @@ MemoryContextCallResetCallbacks(MemoryContext context) while ((cb = context->reset_cbs) != NULL) { context->reset_cbs = cb->next; - (*cb->func) (cb->arg); + cb->func(cb->arg); } } +/* + * MemoryContextSetIdentifier + * Set the identifier string for a memory context. + * + * An identifier can be provided to help distinguish among different contexts + * of the same kind in memory context stats dumps. The identifier string + * must live at least as long as the context it is for; typically it is + * allocated inside that context, so that it automatically goes away on + * context deletion. Pass id = NULL to forget any old identifier. + */ + + /* * MemoryContextSetParent * Change a context to belong to a new parent (or no parent). @@ -412,6 +445,12 @@ MemoryContextAllowInCriticalSection(MemoryContext context, bool allow) */ +/* + * Find the memory allocated to blocks for this memory context. If recurse is + * true, also include children. + */ + + /* * MemoryContextStats * Print statistics about the named context and all its descendants. @@ -467,7 +506,10 @@ MemoryContextStatsInternal(MemoryContext context, int level, AssertArg(MemoryContextIsValid(context)); /* Examine the context itself */ - (*context->methods->stats) (context, level, print, totals); + context->methods->stats(context, + print ? MemoryContextStatsPrint : NULL, + (void *) &level, + totals); /* * Examine children. If there are more than max_children of them, we do @@ -518,6 +560,67 @@ MemoryContextStatsInternal(MemoryContext context, int level, } } +/* + * MemoryContextStatsPrint + * Print callback used by MemoryContextStatsInternal + * + * For now, the passthru pointer just points to "int level"; later we might + * make that more complicated. + */ +static void +MemoryContextStatsPrint(MemoryContext context, void *passthru, + const char *stats_string) +{ + int level = *(int *) passthru; + const char *name = context->name; + const char *ident = context->ident; + int i; + + /* + * It seems preferable to label dynahash contexts with just the hash table + * name. Those are already unique enough, so the "dynahash" part isn't + * very helpful, and this way is more consistent with pre-v11 practice. + */ + if (ident && strcmp(name, "dynahash") == 0) + { + name = ident; + ident = NULL; + } + + for (i = 0; i < level; i++) + fprintf(stderr, " "); + fprintf(stderr, "%s: %s", name, stats_string); + if (ident) + { + /* + * Some contexts may have very long identifiers (e.g., SQL queries). + * Arbitrarily truncate at 100 bytes, but be careful not to break + * multibyte characters. Also, replace ASCII control characters, such + * as newlines, with spaces. + */ + int idlen = strlen(ident); + bool truncated = false; + + if (idlen > 100) + { + idlen = pg_mbcliplen(ident, idlen, 100); + truncated = true; + } + fprintf(stderr, ": "); + while (idlen-- > 0) + { + unsigned char c = *ident++; + + if (c < ' ') + c = ' '; + fputc(c, stderr); + } + if (truncated) + fprintf(stderr, "..."); + } + fputc('\n', stderr); +} + /* * MemoryContextCheck * Check all chunks in the named context. @@ -541,100 +644,63 @@ MemoryContextStatsInternal(MemoryContext context, int level, */ -/*-------------------- +/* * MemoryContextCreate * Context-type-independent part of context creation. * * This is only intended to be called by context-type-specific * context creation routines, not by the unwashed masses. * - * The context creation procedure is a little bit tricky because - * we want to be sure that we don't leave the context tree invalid - * in case of failure (such as insufficient memory to allocate the - * context node itself). The procedure goes like this: - * 1. Context-type-specific routine first calls MemoryContextCreate(), - * passing the appropriate tag/size/methods values (the methods - * pointer will ordinarily point to statically allocated data). - * The parent and name parameters usually come from the caller. - * 2. MemoryContextCreate() attempts to allocate the context node, - * plus space for the name. If this fails we can ereport() with no - * damage done. - * 3. We fill in all of the type-independent MemoryContext fields. - * 4. We call the type-specific init routine (using the methods pointer). - * The init routine is required to make the node minimally valid - * with zero chance of failure --- it can't allocate more memory, - * for example. - * 5. Now we have a minimally valid node that can behave correctly - * when told to reset or delete itself. We link the node to its - * parent (if any), making the node part of the context tree. - * 6. We return to the context-type-specific routine, which finishes + * The memory context creation procedure goes like this: + * 1. Context-type-specific routine makes some initial space allocation, + * including enough space for the context header. If it fails, + * it can ereport() with no damage done. + * 2. Context-type-specific routine sets up all type-specific fields of + * the header (those beyond MemoryContextData proper), as well as any + * other management fields it needs to have a fully valid context. + * Usually, failure in this step is impossible, but if it's possible + * the initial space allocation should be freed before ereport'ing. + * 3. Context-type-specific routine calls MemoryContextCreate() to fill in + * the generic header fields and link the context into the context tree. + * 4. We return to the context-type-specific routine, which finishes * up type-specific initialization. This routine can now do things * that might fail (like allocate more memory), so long as it's * sure the node is left in a state that delete will handle. * - * This protocol doesn't prevent us from leaking memory if step 6 fails - * during creation of a top-level context, since there's no parent link - * in that case. However, if you run out of memory while you're building - * a top-level context, you might as well go home anyway... - * - * Normally, the context node and the name are allocated from - * TopMemoryContext (NOT from the parent context, since the node must - * survive resets of its parent context!). However, this routine is itself - * used to create TopMemoryContext! If we see that TopMemoryContext is NULL, - * we assume we are creating TopMemoryContext and use malloc() to allocate - * the node. - * - * Note that the name field of a MemoryContext does not point to - * separately-allocated storage, so it should not be freed at context - * deletion. - *-------------------- - */ -MemoryContext -MemoryContextCreate(NodeTag tag, Size size, + * node: the as-yet-uninitialized common part of the context header node. + * tag: NodeTag code identifying the memory context type. + * methods: context-type-specific methods (usually statically allocated). + * parent: parent context, or NULL if this will be a top-level context. + * name: name of context (must be statically allocated). + * + * Context routines generally assume that MemoryContextCreate can't fail, + * so this can contain Assert but not elog/ereport. + */ +void +MemoryContextCreate(MemoryContext node, + NodeTag tag, const MemoryContextMethods *methods, MemoryContext parent, const char *name) { - MemoryContext node; - Size needed = size + strlen(name) + 1; - - /* creating new memory contexts is not allowed in a critical section */ + /* Creating new memory contexts is not allowed in a critical section */ Assert(CritSectionCount == 0); - /* Get space for node and name */ - if (TopMemoryContext != NULL) - { - /* Normal case: allocate the node in TopMemoryContext */ - node = (MemoryContext) MemoryContextAlloc(TopMemoryContext, - needed); - } - else - { - /* Special case for startup: use good ol' malloc */ - node = (MemoryContext) malloc(needed); - Assert(node != NULL); - } - - /* Initialize the node as best we can */ - MemSet(node, 0, size); + /* Initialize all standard fields of memory context header */ node->type = tag; + node->isReset = true; node->methods = methods; - node->parent = NULL; /* for the moment */ + node->parent = parent; node->firstchild = NULL; + node->mem_allocated = 0; node->prevchild = NULL; - node->nextchild = NULL; - node->isReset = true; - node->name = ((char *) node) + size; - strcpy(node->name, name); + node->name = name; + node->ident = NULL; + node->reset_cbs = NULL; - /* Type-specific routine finishes any other essential initialization */ - (*node->methods->init) (node); - - /* OK to link node to parent (if any) */ - /* Could use MemoryContextSetParent here, but doesn't seem worthwhile */ + /* OK to link node into context tree */ if (parent) { - node->parent = parent; node->nextchild = parent->firstchild; if (parent->firstchild != NULL) parent->firstchild->prevchild = node; @@ -642,11 +708,13 @@ MemoryContextCreate(NodeTag tag, Size size, /* inherit allowInCritSection flag from parent */ node->allowInCritSection = parent->allowInCritSection; } + else + { + node->nextchild = NULL; + node->allowInCritSection = false; + } VALGRIND_CREATE_MEMPOOL(node, 0, false); - - /* Return to type-specific creation routine to finish up */ - return node; } /* @@ -669,14 +737,22 @@ MemoryContextAlloc(MemoryContext context, Size size) context->isReset = false; - ret = (*context->methods->alloc) (context, size); - if (ret == NULL) + ret = context->methods->alloc(context, size); + if (unlikely(ret == NULL)) { MemoryContextStats(TopMemoryContext); + + /* + * Here, and elsewhere in this module, we show the target context's + * "name" but not its "ident" (if any) in user-visible error messages. + * The "ident" string might contain security-sensitive data, such as + * values in SQL commands. + */ ereport(ERROR, (errcode(ERRCODE_OUT_OF_MEMORY), errmsg("out of memory"), - errdetail("Failed on request of size %zu.", size))); + errdetail("Failed on request of size %zu in memory context \"%s\".", + size, context->name))); } VALGRIND_MEMPOOL_ALLOC(context, ret, size); @@ -704,14 +780,15 @@ MemoryContextAllocZero(MemoryContext context, Size size) context->isReset = false; - ret = (*context->methods->alloc) (context, size); - if (ret == NULL) + ret = context->methods->alloc(context, size); + if (unlikely(ret == NULL)) { MemoryContextStats(TopMemoryContext); ereport(ERROR, (errcode(ERRCODE_OUT_OF_MEMORY), errmsg("out of memory"), - errdetail("Failed on request of size %zu.", size))); + errdetail("Failed on request of size %zu in memory context \"%s\".", + size, context->name))); } VALGRIND_MEMPOOL_ALLOC(context, ret, size); @@ -741,14 +818,15 @@ MemoryContextAllocZeroAligned(MemoryContext context, Size size) context->isReset = false; - ret = (*context->methods->alloc) (context, size); - if (ret == NULL) + ret = context->methods->alloc(context, size); + if (unlikely(ret == NULL)) { MemoryContextStats(TopMemoryContext); ereport(ERROR, (errcode(ERRCODE_OUT_OF_MEMORY), errmsg("out of memory"), - errdetail("Failed on request of size %zu.", size))); + errdetail("Failed on request of size %zu in memory context \"%s\".", + size, context->name))); } VALGRIND_MEMPOOL_ALLOC(context, ret, size); @@ -769,26 +847,28 @@ palloc(Size size) { /* duplicates MemoryContextAlloc to avoid increased overhead */ void *ret; + MemoryContext context = CurrentMemoryContext; - AssertArg(MemoryContextIsValid(CurrentMemoryContext)); - AssertNotInCriticalSection(CurrentMemoryContext); + AssertArg(MemoryContextIsValid(context)); + AssertNotInCriticalSection(context); if (!AllocSizeIsValid(size)) elog(ERROR, "invalid memory alloc request size %zu", size); - CurrentMemoryContext->isReset = false; + context->isReset = false; - ret = (*CurrentMemoryContext->methods->alloc) (CurrentMemoryContext, size); - if (ret == NULL) + ret = context->methods->alloc(context, size); + if (unlikely(ret == NULL)) { MemoryContextStats(TopMemoryContext); ereport(ERROR, (errcode(ERRCODE_OUT_OF_MEMORY), errmsg("out of memory"), - errdetail("Failed on request of size %zu.", size))); + errdetail("Failed on request of size %zu in memory context \"%s\".", + size, context->name))); } - VALGRIND_MEMPOOL_ALLOC(CurrentMemoryContext, ret, size); + VALGRIND_MEMPOOL_ALLOC(context, ret, size); return ret; } @@ -798,26 +878,28 @@ palloc0(Size size) { /* duplicates MemoryContextAllocZero to avoid increased overhead */ void *ret; + MemoryContext context = CurrentMemoryContext; - AssertArg(MemoryContextIsValid(CurrentMemoryContext)); - AssertNotInCriticalSection(CurrentMemoryContext); + AssertArg(MemoryContextIsValid(context)); + AssertNotInCriticalSection(context); if (!AllocSizeIsValid(size)) elog(ERROR, "invalid memory alloc request size %zu", size); - CurrentMemoryContext->isReset = false; + context->isReset = false; - ret = (*CurrentMemoryContext->methods->alloc) (CurrentMemoryContext, size); - if (ret == NULL) + ret = context->methods->alloc(context, size); + if (unlikely(ret == NULL)) { MemoryContextStats(TopMemoryContext); ereport(ERROR, (errcode(ERRCODE_OUT_OF_MEMORY), errmsg("out of memory"), - errdetail("Failed on request of size %zu.", size))); + errdetail("Failed on request of size %zu in memory context \"%s\".", + size, context->name))); } - VALGRIND_MEMPOOL_ALLOC(CurrentMemoryContext, ret, size); + VALGRIND_MEMPOOL_ALLOC(context, ret, size); MemSetAligned(ret, 0, size); @@ -835,7 +917,7 @@ pfree(void *pointer) { MemoryContext context = GetMemoryChunkContext(pointer); - (*context->methods->free_p) (context, pointer); + context->methods->free_p(context, pointer); VALGRIND_MEMPOOL_FREE(context, pointer); } @@ -857,14 +939,15 @@ repalloc(void *pointer, Size size) /* isReset must be false already */ Assert(!context->isReset); - ret = (*context->methods->realloc) (context, pointer, size); - if (ret == NULL) + ret = context->methods->realloc(context, pointer, size); + if (unlikely(ret == NULL)) { MemoryContextStats(TopMemoryContext); ereport(ERROR, (errcode(ERRCODE_OUT_OF_MEMORY), errmsg("out of memory"), - errdetail("Failed on request of size %zu.", size))); + errdetail("Failed on request of size %zu in memory context \"%s\".", + size, context->name))); } VALGRIND_MEMPOOL_CHANGE(context, pointer, ret, size); diff --git a/parser/src_backend_utils_mb_encnames.c b/parser/src_common_encnames.c similarity index 79% rename from parser/src_backend_utils_mb_encnames.c rename to parser/src_common_encnames.c index ed3637aa..c3bb6bf0 100644 --- a/parser/src_backend_utils_mb_encnames.c +++ b/parser/src_common_encnames.c @@ -4,18 +4,19 @@ *-------------------------------------------------------------------- */ -/* - * Encoding names and routines for work with it. All - * in this file is shared between FE and BE. +/*------------------------------------------------------------------------- + * + * encnames.c + * Encoding names and routines for working with them. + * + * Portions Copyright (c) 2001-2020, PostgreSQL Global Development Group + * + * IDENTIFICATION + * src/common/encnames.c * - * src/backend/utils/mb/encnames.c + *------------------------------------------------------------------------- */ -#ifdef FRONTEND -#include "postgres_fe.h" -#else -#include "postgres.h" -#include "utils/builtins.h" -#endif +#include "c.h" #include #include @@ -53,6 +54,7 @@ typedef struct pg_encname #else #define DEF_ENC2NAME(name, codepage) { #name, PG_##name, codepage } #endif + const pg_enc2name pg_enc2name_tbl[] = { DEF_ENC2NAME(SQL_ASCII, 0), @@ -108,10 +110,8 @@ const pg_enc2name pg_enc2name_tbl[] = -#ifndef FRONTEND - /* - * Table of encoding names for ICU + * Table of encoding names for ICU (currently covers backend encodings only) * * Reference: * @@ -120,10 +120,15 @@ const pg_enc2name pg_enc2name_tbl[] = +/* + * Is this encoding supported by ICU? + */ +/* + * Returns ICU's name for encoding, or NULL if not supported + */ -#endif /* not FRONTEND */ /* ---------- @@ -136,29 +141,18 @@ const pg_enc2name pg_enc2name_tbl[] = -/* ---------- - * Remove irrelevant chars from encoding name - * ---------- +/* + * Remove irrelevant chars from encoding name, store at *newkey + * + * (Caller's responsibility to provide a large enough buffer) */ -/* ---------- +/* * Search encoding by encoding name * - * Returns encoding ID, or -1 for error - * ---------- + * Returns encoding ID, or -1 if not recognized */ -#ifdef FRONTEND -#else -#endif - -#ifndef FRONTEND - -#endif -#ifndef FRONTEND - - -#endif diff --git a/parser/src_common_keywords.c b/parser/src_common_keywords.c index 6a925135..99298c44 100644 --- a/parser/src_common_keywords.c +++ b/parser/src_common_keywords.c @@ -1,18 +1,16 @@ /*-------------------------------------------------------------------- * Symbols referenced in this file: - * - ScanKeywords - * - NumScanKeywords - * - ScanKeywordLookup + * - ScanKeywordCategories *-------------------------------------------------------------------- */ /*------------------------------------------------------------------------- * * keywords.c - * lexical token lookup for key words in PostgreSQL + * PostgreSQL's list of SQL keywords * * - * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * @@ -21,102 +19,21 @@ * *------------------------------------------------------------------------- */ -#ifndef FRONTEND -#include "postgres.h" -#else -#include "postgres_fe.h" -#endif +#include "c.h" -#ifndef FRONTEND - -#include "parser/gramparse.h" +#include "common/keywords.h" -#define PG_KEYWORD(a,b,c) {a,b,c}, -#else +/* ScanKeywordList lookup data for SQL keywords */ -#include "common/keywords.h" - -/* - * We don't need the token number for frontend uses, so leave it out to avoid - * requiring backend headers that won't compile cleanly here. - */ -#define PG_KEYWORD(a,b,c) {a,0,c}, +#include "kwlist_d.h" -#endif /* FRONTEND */ +/* Keyword categories for SQL keywords */ +#define PG_KEYWORD(kwname, value, category) category, -const ScanKeyword ScanKeywords[] = { +const uint8 ScanKeywordCategories[SCANKEYWORDS_NUM_KEYWORDS] = { #include "parser/kwlist.h" }; -const int NumScanKeywords = lengthof(ScanKeywords); - - -/* - * ScanKeywordLookup - see if a given word is a keyword - * - * The table to be searched is passed explicitly, so that this can be used - * to search keyword lists other than the standard list appearing above. - * - * Returns a pointer to the ScanKeyword table entry, or NULL if no match. - * - * The match is done case-insensitively. Note that we deliberately use a - * dumbed-down case conversion that will only translate 'A'-'Z' into 'a'-'z', - * even if we are in a locale where tolower() would produce more or different - * translations. This is to conform to the SQL99 spec, which says that - * keywords are to be matched in this way even though non-keyword identifiers - * receive a different case-normalization mapping. - */ -const ScanKeyword * -ScanKeywordLookup(const char *text, - const ScanKeyword *keywords, - int num_keywords) -{ - int len, - i; - char word[NAMEDATALEN]; - const ScanKeyword *low; - const ScanKeyword *high; - - len = strlen(text); - /* We assume all keywords are shorter than NAMEDATALEN. */ - if (len >= NAMEDATALEN) - return NULL; - - /* - * Apply an ASCII-only downcasing. We must not use tolower() since it may - * produce the wrong translation in some locales (eg, Turkish). - */ - for (i = 0; i < len; i++) - { - char ch = text[i]; - - if (ch >= 'A' && ch <= 'Z') - ch += 'a' - 'A'; - word[i] = ch; - } - word[len] = '\0'; - - /* - * Now do a binary search using plain strcmp() comparison. - */ - low = keywords; - high = keywords + (num_keywords - 1); - while (low <= high) - { - const ScanKeyword *middle; - int difference; - - middle = low + (high - low) / 2; - difference = strcmp(middle->name, word); - if (difference == 0) - return middle; - else if (difference < 0) - low = middle + 1; - else - high = middle - 1; - } - - return NULL; -} +#undef PG_KEYWORD diff --git a/parser/src_common_kwlist_d.h b/parser/src_common_kwlist_d.h new file mode 100644 index 00000000..5a359e59 --- /dev/null +++ b/parser/src_common_kwlist_d.h @@ -0,0 +1,1081 @@ +/*-------------------------------------------------------------------- + * Symbols referenced in this file: + * - ScanKeywords + * - ScanKeywords_kw_string + * - ScanKeywords_kw_offsets + * - ScanKeywords_hash_func + *-------------------------------------------------------------------- + */ + +/*------------------------------------------------------------------------- + * + * kwlist_d.h + * List of keywords represented as a ScanKeywordList. + * + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group + * Portions Copyright (c) 1994, Regents of the University of California + * + * NOTES + * ****************************** + * *** DO NOT EDIT THIS FILE! *** + * ****************************** + * + * It has been GENERATED by src/tools/gen_keywordlist.pl + * + *------------------------------------------------------------------------- + */ + +#ifndef KWLIST_D_H +#define KWLIST_D_H + +#include "common/kwlookup.h" + +static const char ScanKeywords_kw_string[] = + "abort\0" + "absolute\0" + "access\0" + "action\0" + "add\0" + "admin\0" + "after\0" + "aggregate\0" + "all\0" + "also\0" + "alter\0" + "always\0" + "analyse\0" + "analyze\0" + "and\0" + "any\0" + "array\0" + "as\0" + "asc\0" + "assertion\0" + "assignment\0" + "asymmetric\0" + "at\0" + "attach\0" + "attribute\0" + "authorization\0" + "backward\0" + "before\0" + "begin\0" + "between\0" + "bigint\0" + "binary\0" + "bit\0" + "boolean\0" + "both\0" + "by\0" + "cache\0" + "call\0" + "called\0" + "cascade\0" + "cascaded\0" + "case\0" + "cast\0" + "catalog\0" + "chain\0" + "char\0" + "character\0" + "characteristics\0" + "check\0" + "checkpoint\0" + "class\0" + "close\0" + "cluster\0" + "coalesce\0" + "collate\0" + "collation\0" + "column\0" + "columns\0" + "comment\0" + "comments\0" + "commit\0" + "committed\0" + "concurrently\0" + "configuration\0" + "conflict\0" + "connection\0" + "constraint\0" + "constraints\0" + "content\0" + "continue\0" + "conversion\0" + "copy\0" + "cost\0" + "create\0" + "cross\0" + "csv\0" + "cube\0" + "current\0" + "current_catalog\0" + "current_date\0" + "current_role\0" + "current_schema\0" + "current_time\0" + "current_timestamp\0" + "current_user\0" + "cursor\0" + "cycle\0" + "data\0" + "database\0" + "day\0" + "deallocate\0" + "dec\0" + "decimal\0" + "declare\0" + "default\0" + "defaults\0" + "deferrable\0" + "deferred\0" + "definer\0" + "delete\0" + "delimiter\0" + "delimiters\0" + "depends\0" + "desc\0" + "detach\0" + "dictionary\0" + "disable\0" + "discard\0" + "distinct\0" + "do\0" + "document\0" + "domain\0" + "double\0" + "drop\0" + "each\0" + "else\0" + "enable\0" + "encoding\0" + "encrypted\0" + "end\0" + "enum\0" + "escape\0" + "event\0" + "except\0" + "exclude\0" + "excluding\0" + "exclusive\0" + "execute\0" + "exists\0" + "explain\0" + "expression\0" + "extension\0" + "external\0" + "extract\0" + "false\0" + "family\0" + "fetch\0" + "filter\0" + "first\0" + "float\0" + "following\0" + "for\0" + "force\0" + "foreign\0" + "forward\0" + "freeze\0" + "from\0" + "full\0" + "function\0" + "functions\0" + "generated\0" + "global\0" + "grant\0" + "granted\0" + "greatest\0" + "group\0" + "grouping\0" + "groups\0" + "handler\0" + "having\0" + "header\0" + "hold\0" + "hour\0" + "identity\0" + "if\0" + "ilike\0" + "immediate\0" + "immutable\0" + "implicit\0" + "import\0" + "in\0" + "include\0" + "including\0" + "increment\0" + "index\0" + "indexes\0" + "inherit\0" + "inherits\0" + "initially\0" + "inline\0" + "inner\0" + "inout\0" + "input\0" + "insensitive\0" + "insert\0" + "instead\0" + "int\0" + "integer\0" + "intersect\0" + "interval\0" + "into\0" + "invoker\0" + "is\0" + "isnull\0" + "isolation\0" + "join\0" + "key\0" + "label\0" + "language\0" + "large\0" + "last\0" + "lateral\0" + "leading\0" + "leakproof\0" + "least\0" + "left\0" + "level\0" + "like\0" + "limit\0" + "listen\0" + "load\0" + "local\0" + "localtime\0" + "localtimestamp\0" + "location\0" + "lock\0" + "locked\0" + "logged\0" + "mapping\0" + "match\0" + "materialized\0" + "maxvalue\0" + "method\0" + "minute\0" + "minvalue\0" + "mode\0" + "month\0" + "move\0" + "name\0" + "names\0" + "national\0" + "natural\0" + "nchar\0" + "new\0" + "next\0" + "nfc\0" + "nfd\0" + "nfkc\0" + "nfkd\0" + "no\0" + "none\0" + "normalize\0" + "normalized\0" + "not\0" + "nothing\0" + "notify\0" + "notnull\0" + "nowait\0" + "null\0" + "nullif\0" + "nulls\0" + "numeric\0" + "object\0" + "of\0" + "off\0" + "offset\0" + "oids\0" + "old\0" + "on\0" + "only\0" + "operator\0" + "option\0" + "options\0" + "or\0" + "order\0" + "ordinality\0" + "others\0" + "out\0" + "outer\0" + "over\0" + "overlaps\0" + "overlay\0" + "overriding\0" + "owned\0" + "owner\0" + "parallel\0" + "parser\0" + "partial\0" + "partition\0" + "passing\0" + "password\0" + "placing\0" + "plans\0" + "policy\0" + "position\0" + "preceding\0" + "precision\0" + "prepare\0" + "prepared\0" + "preserve\0" + "primary\0" + "prior\0" + "privileges\0" + "procedural\0" + "procedure\0" + "procedures\0" + "program\0" + "publication\0" + "quote\0" + "range\0" + "read\0" + "real\0" + "reassign\0" + "recheck\0" + "recursive\0" + "ref\0" + "references\0" + "referencing\0" + "refresh\0" + "reindex\0" + "relative\0" + "release\0" + "rename\0" + "repeatable\0" + "replace\0" + "replica\0" + "reset\0" + "restart\0" + "restrict\0" + "returning\0" + "returns\0" + "revoke\0" + "right\0" + "role\0" + "rollback\0" + "rollup\0" + "routine\0" + "routines\0" + "row\0" + "rows\0" + "rule\0" + "savepoint\0" + "schema\0" + "schemas\0" + "scroll\0" + "search\0" + "second\0" + "security\0" + "select\0" + "sequence\0" + "sequences\0" + "serializable\0" + "server\0" + "session\0" + "session_user\0" + "set\0" + "setof\0" + "sets\0" + "share\0" + "show\0" + "similar\0" + "simple\0" + "skip\0" + "smallint\0" + "snapshot\0" + "some\0" + "sql\0" + "stable\0" + "standalone\0" + "start\0" + "statement\0" + "statistics\0" + "stdin\0" + "stdout\0" + "storage\0" + "stored\0" + "strict\0" + "strip\0" + "subscription\0" + "substring\0" + "support\0" + "symmetric\0" + "sysid\0" + "system\0" + "table\0" + "tables\0" + "tablesample\0" + "tablespace\0" + "temp\0" + "template\0" + "temporary\0" + "text\0" + "then\0" + "ties\0" + "time\0" + "timestamp\0" + "to\0" + "trailing\0" + "transaction\0" + "transform\0" + "treat\0" + "trigger\0" + "trim\0" + "true\0" + "truncate\0" + "trusted\0" + "type\0" + "types\0" + "uescape\0" + "unbounded\0" + "uncommitted\0" + "unencrypted\0" + "union\0" + "unique\0" + "unknown\0" + "unlisten\0" + "unlogged\0" + "until\0" + "update\0" + "user\0" + "using\0" + "vacuum\0" + "valid\0" + "validate\0" + "validator\0" + "value\0" + "values\0" + "varchar\0" + "variadic\0" + "varying\0" + "verbose\0" + "version\0" + "view\0" + "views\0" + "volatile\0" + "when\0" + "where\0" + "whitespace\0" + "window\0" + "with\0" + "within\0" + "without\0" + "work\0" + "wrapper\0" + "write\0" + "xml\0" + "xmlattributes\0" + "xmlconcat\0" + "xmlelement\0" + "xmlexists\0" + "xmlforest\0" + "xmlnamespaces\0" + "xmlparse\0" + "xmlpi\0" + "xmlroot\0" + "xmlserialize\0" + "xmltable\0" + "year\0" + "yes\0" + "zone"; + +static const uint16 ScanKeywords_kw_offsets[] = { + 0, + 6, + 15, + 22, + 29, + 33, + 39, + 45, + 55, + 59, + 64, + 70, + 77, + 85, + 93, + 97, + 101, + 107, + 110, + 114, + 124, + 135, + 146, + 149, + 156, + 166, + 180, + 189, + 196, + 202, + 210, + 217, + 224, + 228, + 236, + 241, + 244, + 250, + 255, + 262, + 270, + 279, + 284, + 289, + 297, + 303, + 308, + 318, + 334, + 340, + 351, + 357, + 363, + 371, + 380, + 388, + 398, + 405, + 413, + 421, + 430, + 437, + 447, + 460, + 474, + 483, + 494, + 505, + 517, + 525, + 534, + 545, + 550, + 555, + 562, + 568, + 572, + 577, + 585, + 601, + 614, + 627, + 642, + 655, + 673, + 686, + 693, + 699, + 704, + 713, + 717, + 728, + 732, + 740, + 748, + 756, + 765, + 776, + 785, + 793, + 800, + 810, + 821, + 829, + 834, + 841, + 852, + 860, + 868, + 877, + 880, + 889, + 896, + 903, + 908, + 913, + 918, + 925, + 934, + 944, + 948, + 953, + 960, + 966, + 973, + 981, + 991, + 1001, + 1009, + 1016, + 1024, + 1035, + 1045, + 1054, + 1062, + 1068, + 1075, + 1081, + 1088, + 1094, + 1100, + 1110, + 1114, + 1120, + 1128, + 1136, + 1143, + 1148, + 1153, + 1162, + 1172, + 1182, + 1189, + 1195, + 1203, + 1212, + 1218, + 1227, + 1234, + 1242, + 1249, + 1256, + 1261, + 1266, + 1275, + 1278, + 1284, + 1294, + 1304, + 1313, + 1320, + 1323, + 1331, + 1341, + 1351, + 1357, + 1365, + 1373, + 1382, + 1392, + 1399, + 1405, + 1411, + 1417, + 1429, + 1436, + 1444, + 1448, + 1456, + 1466, + 1475, + 1480, + 1488, + 1491, + 1498, + 1508, + 1513, + 1517, + 1523, + 1532, + 1538, + 1543, + 1551, + 1559, + 1569, + 1575, + 1580, + 1586, + 1591, + 1597, + 1604, + 1609, + 1615, + 1625, + 1640, + 1649, + 1654, + 1661, + 1668, + 1676, + 1682, + 1695, + 1704, + 1711, + 1718, + 1727, + 1732, + 1738, + 1743, + 1748, + 1754, + 1763, + 1771, + 1777, + 1781, + 1786, + 1790, + 1794, + 1799, + 1804, + 1807, + 1812, + 1822, + 1833, + 1837, + 1845, + 1852, + 1860, + 1867, + 1872, + 1879, + 1885, + 1893, + 1900, + 1903, + 1907, + 1914, + 1919, + 1923, + 1926, + 1931, + 1940, + 1947, + 1955, + 1958, + 1964, + 1975, + 1982, + 1986, + 1992, + 1997, + 2006, + 2014, + 2025, + 2031, + 2037, + 2046, + 2053, + 2061, + 2071, + 2079, + 2088, + 2096, + 2102, + 2109, + 2118, + 2128, + 2138, + 2146, + 2155, + 2164, + 2172, + 2178, + 2189, + 2200, + 2210, + 2221, + 2229, + 2241, + 2247, + 2253, + 2258, + 2263, + 2272, + 2280, + 2290, + 2294, + 2305, + 2317, + 2325, + 2333, + 2342, + 2350, + 2357, + 2368, + 2376, + 2384, + 2390, + 2398, + 2407, + 2417, + 2425, + 2432, + 2438, + 2443, + 2452, + 2459, + 2467, + 2476, + 2480, + 2485, + 2490, + 2500, + 2507, + 2515, + 2522, + 2529, + 2536, + 2545, + 2552, + 2561, + 2571, + 2584, + 2591, + 2599, + 2612, + 2616, + 2622, + 2627, + 2633, + 2638, + 2646, + 2653, + 2658, + 2667, + 2676, + 2681, + 2685, + 2692, + 2703, + 2709, + 2719, + 2730, + 2736, + 2743, + 2751, + 2758, + 2765, + 2771, + 2784, + 2794, + 2802, + 2812, + 2818, + 2825, + 2831, + 2838, + 2850, + 2861, + 2866, + 2875, + 2885, + 2890, + 2895, + 2900, + 2905, + 2915, + 2918, + 2927, + 2939, + 2949, + 2955, + 2963, + 2968, + 2973, + 2982, + 2990, + 2995, + 3001, + 3009, + 3019, + 3031, + 3043, + 3049, + 3056, + 3064, + 3073, + 3082, + 3088, + 3095, + 3100, + 3106, + 3113, + 3119, + 3128, + 3138, + 3144, + 3151, + 3159, + 3168, + 3176, + 3184, + 3192, + 3197, + 3203, + 3212, + 3217, + 3223, + 3234, + 3241, + 3246, + 3253, + 3261, + 3266, + 3274, + 3280, + 3284, + 3298, + 3308, + 3319, + 3329, + 3339, + 3353, + 3362, + 3368, + 3376, + 3389, + 3398, + 3403, + 3407, +}; + +#define SCANKEYWORDS_NUM_KEYWORDS 450 + +static int +ScanKeywords_hash_func(const void *key, size_t keylen) +{ + static const int16 h[901] = { + -172, 32767, 32767, 32767, 0, 56, 362, 32767, + 0, 90, -251, 332, 32767, 66, 298, 0, + 32767, 88, 27, 22, -125, 317, 0, 32767, + -35, 0, 32767, 32767, 32767, 52, 32767, 275, + 32767, -277, 32767, 32767, 316, 177, 32767, 0, + 398, 58, 272, -88, 0, -147, 242, 143, + 401, 0, 32767, 0, 293, 355, 0, 0, + 303, 32767, 225, 580, 0, 378, 0, 0, + 32767, -25, -312, 32767, -210, 0, 32767, -19, + 32767, 91, 307, 354, 32767, 32767, -18, 36, + 32767, 32767, 402, 292, 165, 274, 0, 32767, + 10, -20, 32767, 294, 32767, -622, 326, 32767, + -128, 0, 33, 32767, 32767, 325, 32767, 276, + 343, 32767, 96, 173, 32767, 32767, 32767, 0, + 32767, 320, -128, 32767, 357, 24, -9, 427, + 32767, 32767, 0, 32767, 0, 0, 32767, 32767, + 405, 32767, 125, 32767, 0, 32767, -40, 32767, + 0, 80, 0, 32767, 0, 95, -146, 0, + 32767, 26, 165, 32767, 41, 32767, 418, 32767, + 32767, 40, 32767, 147, 32767, 32767, 32767, 91, + 110, 9, 305, -340, 32767, 103, 32767, 0, + 329, 32767, 32767, 310, 32767, 32767, 147, -262, + 422, 393, 382, 136, 32767, 177, 0, 32767, + 32767, 102, 0, 32767, 83, 141, 28, 167, + -421, 32767, 38, 111, 0, 479, 32767, 32767, + 29, 439, 32767, 427, -6, 182, 32767, 74, + 32767, 360, 236, 32767, 32767, 327, -63, 162, + 154, 184, 90, 263, 115, 127, 539, 347, + -72, 32767, -159, 32767, -249, 152, 32767, 357, + 404, -110, 32767, 404, 345, 32767, 80, 352, + 422, 61, 32767, 32767, 32767, 243, 126, 117, + 32767, 0, 32767, 32767, 208, 32767, 32767, -20, + 430, -195, 32767, 32767, 32767, 118, -62, 32767, + 32767, 98, 136, 0, 0, 32767, 261, 32767, + 0, 32767, 230, 37, 750, 154, 32767, -86, + 87, 32767, 6, 61, 32767, 205, 32767, 517, + 107, 66, 304, 32767, 0, 32767, 32767, 32767, + 333, 32767, 357, 239, 32767, 32767, 437, -26, + 32767, 210, 0, 20, 369, 10, 32767, -78, + 616, 70, 0, 32767, 86, 32767, 0, 32767, + 14, 60, 32, 32767, 373, 32767, -218, 320, + 32767, 268, 32767, 32767, 425, -67, 0, 32767, + 252, 32767, -93, 193, -362, -140, 32767, -328, + 32767, 0, 319, 336, 32767, 121, 0, 32767, + 207, 32767, 481, -176, 276, 47, 235, 32767, + 0, 221, 32767, 228, 32767, 84, 32767, 32767, + 32767, 32767, 32767, 32767, 290, 32767, 32767, 84, + -170, 82, 246, -43, 201, 155, -7, 299, + 32767, 32767, 241, 32767, -418, 32767, 32767, -303, + 32767, 32767, -40, 308, 32767, 0, 178, -67, + 32767, 273, 32767, 0, 32767, 69, 387, 32767, + 341, 0, 0, -19, 324, -88, 166, 32767, + 6, 20, 32767, 17, 22, 359, 32767, 32767, + 172, 0, 32767, 0, 206, 88, 0, 32767, + 35, 0, 275, 114, 339, 32767, 32767, 32767, + 32767, 32767, 524, 0, -52, 191, -115, 9, + 200, 102, 0, 32767, 3, 0, 0, 0, + -288, 0, -132, 32767, 0, 32767, 300, 0, + 0, 0, 212, 32767, 260, 32767, -279, 104, + 506, 0, 640, 38, 268, 32767, 131, 32767, + 32767, 32767, 32767, 0, 0, 32767, 32767, 18, + 100, 44, 67, 270, 245, 283, 224, -66, + 32767, 32767, 32767, -67, 32767, 389, 32767, 0, + 125, 354, 32767, 32767, -21, 124, 0, 204, + 32767, 0, 99, 32767, 267, 32767, 0, 32767, + 32767, 231, 32767, -129, -113, 108, 23, 0, + 0, 32767, 32767, 0, 32767, 269, 32767, 32767, + -133, 32767, -384, 32767, 32767, 0, 32767, 32767, + 32767, 0, 32767, 32767, 32767, 0, 322, 424, + 117, -29, 32767, 32767, 145, 0, 0, 323, + 119, 32767, 32767, 32767, 392, -164, -143, -25, + -106, 0, 97, 32767, 32767, 235, 32767, 0, + 32767, 411, 363, 32767, 31, 32767, 443, 32767, + 76, 29, 32767, 323, 32767, 142, 32767, 0, + 244, 0, 32767, 28, 32767, 0, 377, -8, + -45, 32767, 37, 0, 350, 0, 32767, 32767, + 38, 416, 32767, 265, -78, -308, -51, 705, + 32767, 32767, 0, 66, 0, 32767, 32767, 32767, + 81, -250, 32767, 1, 421, 32767, 32767, 0, + 32767, 401, 198, 32767, 256, 290, 210, 32767, + 32767, 32767, 32767, 0, 444, 211, -99, 220, + 64, 32767, 32767, 32767, 32767, 190, 19, 0, + 216, 32767, 262, 32767, 404, 562, -222, 0, + 0, -162, 32767, 192, 65, 32767, 150, 191, + 0, 218, 267, 32767, 32767, 32767, 399, 189, + 356, 532, 0, 32767, 429, 32767, 32767, 54, + 279, 151, 0, 353, 394, 176, 215, 32767, + 15, 153, 137, 92, 420, 47, 253, 0, + 298, 32767, 32767, 32767, 234, 164, 241, 32767, + 0, 409, 0, 32767, 0, 32767, 0, 70, + 32767, 32767, 32767, 0, 32767, 32767, 32767, -138, + 32767, 32767, -46, 32767, 97, 32767, 0, -126, + 32767, 169, 322, 392, 32767, 0, 32767, 32767, + 0, 282, 296, 32767, 0, 403, 32767, -24, + 32767, -34, 32767, 32767, 32767, 418, 32767, 0, + 97, 238, 32767, 144, 428, 32767, 2, 32767, + 32767, 32767, 194, -182, 12, 32767, 391, 32767, + 880, 32767, 32767, 50, 331, 0, 0, 358, + 20, 32767, 32767, 222, 317, 32767, 0, 125, + 32767, 0, 32767, 284, 32767, 32767, 197, 0, + 63, 32767, 0, 188, 32767, 32767, 147, 190, + 344, 32767, -42, 32767, 0, 187, 32767, 32767, + 350, 32767, 0, 0, 127, 32767, 32767, 161, + 32767, 0, 0, 382, 32767, 32767, 316, 130, + 32767, 379, 32767, 383, 368, 93, -195, 0, + 233, 73, 32767, 100, 32767, 338, 90, 32767, + 258, 32767, 32767, 235, 175, 32767, 32767, 0, + -9, 0, 0, 32767, 32767, 111, 417, 330, + 0, 0, 225, 32767, 0, 0, 32767, 0, + 64, 32767, 32767, 16, 113, 29, 0, 32767, + 32767, 0, 43, 0, 365, -41, -284, 0, + 0, 0, 61, 314, 255, 0, 32767, 145, + 32767, -445, 32767, 32767, 154, + }; + + const unsigned char *k = (const unsigned char *) key; + uint32 a = 0; + uint32 b = 3; + + while (keylen--) + { + unsigned char c = *k++ | 0x20; + + a = a * 31 + c; + b = b * 127 + c; + } + return h[a % 901] + h[b % 901]; +} + +const ScanKeywordList ScanKeywords = { + ScanKeywords_kw_string, + ScanKeywords_kw_offsets, + ScanKeywords_hash_func, + SCANKEYWORDS_NUM_KEYWORDS, + 17 +}; + +#endif /* KWLIST_D_H */ diff --git a/parser/src_common_kwlookup.c b/parser/src_common_kwlookup.c new file mode 100644 index 00000000..05cbac22 --- /dev/null +++ b/parser/src_common_kwlookup.c @@ -0,0 +1,91 @@ +/*-------------------------------------------------------------------- + * Symbols referenced in this file: + * - ScanKeywordLookup + *-------------------------------------------------------------------- + */ + +/*------------------------------------------------------------------------- + * + * kwlookup.c + * Key word lookup for PostgreSQL + * + * + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group + * Portions Copyright (c) 1994, Regents of the University of California + * + * + * IDENTIFICATION + * src/common/kwlookup.c + * + *------------------------------------------------------------------------- + */ +#include "c.h" + +#include "common/kwlookup.h" + + +/* + * ScanKeywordLookup - see if a given word is a keyword + * + * The list of keywords to be matched against is passed as a ScanKeywordList. + * + * Returns the keyword number (0..N-1) of the keyword, or -1 if no match. + * Callers typically use the keyword number to index into information + * arrays, but that is no concern of this code. + * + * The match is done case-insensitively. Note that we deliberately use a + * dumbed-down case conversion that will only translate 'A'-'Z' into 'a'-'z', + * even if we are in a locale where tolower() would produce more or different + * translations. This is to conform to the SQL99 spec, which says that + * keywords are to be matched in this way even though non-keyword identifiers + * receive a different case-normalization mapping. + */ +int +ScanKeywordLookup(const char *str, + const ScanKeywordList *keywords) +{ + size_t len; + int h; + const char *kw; + + /* + * Reject immediately if too long to be any keyword. This saves useless + * hashing and downcasing work on long strings. + */ + len = strlen(str); + if (len > keywords->max_kw_len) + return -1; + + /* + * Compute the hash function. We assume it was generated to produce + * case-insensitive results. Since it's a perfect hash, we need only + * match to the specific keyword it identifies. + */ + h = keywords->hash(str, len); + + /* An out-of-range result implies no match */ + if (h < 0 || h >= keywords->num_keywords) + return -1; + + /* + * Compare character-by-character to see if we have a match, applying an + * ASCII-only downcasing to the input characters. We must not use + * tolower() since it may produce the wrong translation in some locales + * (eg, Turkish). + */ + kw = GetScanKeyword(h, keywords); + while (*str != '\0') + { + char ch = *str++; + + if (ch >= 'A' && ch <= 'Z') + ch += 'a' - 'A'; + if (ch != *kw++) + return -1; + } + if (*kw != '\0') + return -1; + + /* Success! */ + return h; +} diff --git a/parser/src_common_psprintf.c b/parser/src_common_psprintf.c index 80cc91e3..b0ec2f17 100644 --- a/parser/src_common_psprintf.c +++ b/parser/src_common_psprintf.c @@ -11,7 +11,7 @@ * sprintf into an allocated-on-demand buffer * * - * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * @@ -52,6 +52,7 @@ char * psprintf(const char *fmt,...) { + int save_errno = errno; size_t len = 128; /* initial assumption about buffer size */ for (;;) @@ -67,6 +68,7 @@ psprintf(const char *fmt,...) result = (char *) palloc(len); /* Try to format the data. */ + errno = save_errno; va_start(args, fmt); newlen = pvsnprintf(result, len, fmt, args); va_end(args); @@ -84,7 +86,7 @@ psprintf(const char *fmt,...) * pvsnprintf * * Attempt to format text data under the control of fmt (an sprintf-style - * format string) and insert it into buf (which has length len, len > 0). + * format string) and insert it into buf (which has length len). * * If successful, return the number of bytes emitted, not counting the * trailing zero byte. This will always be strictly less than len. @@ -96,14 +98,14 @@ psprintf(const char *fmt,...) * Other error cases do not return, but exit via elog(ERROR) or exit(). * Hence, this shouldn't be used inside libpq. * - * This function exists mainly to centralize our workarounds for - * non-C99-compliant vsnprintf implementations. Generally, any call that - * pays any attention to the return value should go through here rather - * than calling snprintf or vsnprintf directly. + * Caution: callers must be sure to preserve their entry-time errno + * when looping, in case the fmt contains "%m". * * Note that the semantics of the return value are not exactly C99's. * First, we don't promise that the estimated buffer size is exactly right; * callers must be prepared to loop multiple times to get the right size. + * (Given a C99-compliant vsnprintf, that won't happen, but it is rumored + * that some implementations don't always return the same value ...) * Second, we return the recommended buffer size, not one less than that; * this lets overflow concerns be handled here rather than in the callers. */ @@ -112,28 +114,10 @@ pvsnprintf(char *buf, size_t len, const char *fmt, va_list args) { int nprinted; - Assert(len > 0); - - errno = 0; - - /* - * Assert check here is to catch buggy vsnprintf that overruns the - * specified buffer length. Solaris 7 in 64-bit mode is an example of a - * platform with such a bug. - */ -#ifdef USE_ASSERT_CHECKING - buf[len - 1] = '\0'; -#endif - nprinted = vsnprintf(buf, len, fmt, args); - Assert(buf[len - 1] == '\0'); - - /* - * If vsnprintf reports an error other than ENOMEM, fail. The possible - * causes of this are not user-facing errors, so elog should be enough. - */ - if (nprinted < 0 && errno != 0 && errno != ENOMEM) + /* We assume failure means the fmt is bogus, hence hard failure is OK */ + if (unlikely(nprinted < 0)) { #ifndef FRONTEND elog(ERROR, "vsnprintf failed: %m with format string \"%s\"", fmt); @@ -144,42 +128,21 @@ pvsnprintf(char *buf, size_t len, const char *fmt, va_list args) #endif } - /* - * Note: some versions of vsnprintf return the number of chars actually - * stored, not the total space needed as C99 specifies. And at least one - * returns -1 on failure. Be conservative about believing whether the - * print worked. - */ - if (nprinted >= 0 && (size_t) nprinted < len - 1) + if ((size_t) nprinted < len) { /* Success. Note nprinted does not include trailing null. */ return (size_t) nprinted; } - if (nprinted >= 0 && (size_t) nprinted > len) - { - /* - * This appears to be a C99-compliant vsnprintf, so believe its - * estimate of the required space. (If it's wrong, the logic will - * still work, but we may loop multiple times.) Note that the space - * needed should be only nprinted+1 bytes, but we'd better allocate - * one more than that so that the test above will succeed next time. - * - * In the corner case where the required space just barely overflows, - * fall through so that we'll error out below (possibly after - * looping). - */ - if ((size_t) nprinted <= MaxAllocSize - 2) - return nprinted + 2; - } - /* - * Buffer overrun, and we don't know how much space is needed. Estimate - * twice the previous buffer size, but not more than MaxAllocSize; if we - * are already at MaxAllocSize, choke. Note we use this palloc-oriented - * overflow limit even when in frontend. + * We assume a C99-compliant vsnprintf, so believe its estimate of the + * required space, and add one for the trailing null. (If it's wrong, the + * logic will still work, but we may loop multiple times.) + * + * Choke if the required space would exceed MaxAllocSize. Note we use + * this palloc-oriented overflow limit even when in frontend. */ - if (len >= MaxAllocSize) + if (unlikely((size_t) nprinted > MaxAllocSize - 1)) { #ifndef FRONTEND ereport(ERROR, @@ -191,8 +154,5 @@ pvsnprintf(char *buf, size_t len, const char *fmt, va_list args) #endif } - if (len >= MaxAllocSize / 2) - return MaxAllocSize; - - return len * 2; + return nprinted + 1; } diff --git a/parser/src_common_string.c b/parser/src_common_string.c new file mode 100644 index 00000000..c677617e --- /dev/null +++ b/parser/src_common_string.c @@ -0,0 +1,86 @@ +/*-------------------------------------------------------------------- + * Symbols referenced in this file: + * - strtoint + *-------------------------------------------------------------------- + */ + +/*------------------------------------------------------------------------- + * + * string.c + * string handling helpers + * + * + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group + * Portions Copyright (c) 1994, Regents of the University of California + * + * + * IDENTIFICATION + * src/common/string.c + * + *------------------------------------------------------------------------- + */ + + +#ifndef FRONTEND +#include "postgres.h" +#else +#include "postgres_fe.h" +#endif + +#include "common/string.h" + + +/* + * Returns whether the string `str' has the postfix `end'. + */ + + + +/* + * strtoint --- just like strtol, but returns int not long + */ +int +strtoint(const char *pg_restrict str, char **pg_restrict endptr, int base) +{ + long val; + + val = strtol(str, endptr, base); + if (val != (int) val) + errno = ERANGE; + return (int) val; +} + + +/* + * pg_clean_ascii -- Replace any non-ASCII chars with a '?' char + * + * Modifies the string passed in which must be '\0'-terminated. + * + * This function exists specifically to deal with filtering out + * non-ASCII characters in a few places where the client can provide an almost + * arbitrary string (and it isn't checked to ensure it's a valid username or + * database name or similar) and we don't want to have control characters or other + * things ending up in the log file where server admins might end up with a + * messed up terminal when looking at them. + * + * In general, this function should NOT be used- instead, consider how to handle + * the string without needing to filter out the non-ASCII characters. + * + * Ultimately, we'd like to improve the situation to not require stripping out + * all non-ASCII but perform more intelligent filtering which would allow UTF or + * similar, but it's unclear exactly what we should allow, so stick to ASCII only + * for now. + */ + + + +/* + * pg_strip_crlf -- Remove any trailing newline and carriage return + * + * Removes any trailing newline and carriage return characters (\r on + * Windows) in the input string, zero-terminating it. + * + * The passed in string must be zero-terminated. This function returns + * the new length of the string. + */ + diff --git a/parser/src_backend_lib_stringinfo.c b/parser/src_common_stringinfo.c similarity index 81% rename from parser/src_backend_lib_stringinfo.c rename to parser/src_common_stringinfo.c index 2aa4abdc..09eb7046 100644 --- a/parser/src_backend_lib_stringinfo.c +++ b/parser/src_common_stringinfo.c @@ -16,21 +16,34 @@ * * stringinfo.c * - * StringInfo provides an indefinitely-extensible string data type. - * It can be used to buffer either ordinary C strings (null-terminated text) - * or arbitrary binary data. All storage is allocated with palloc(). + * StringInfo provides an extensible string data type (currently limited to a + * length of 1GB). It can be used to buffer either ordinary C strings + * (null-terminated text) or arbitrary binary data. All storage is allocated + * with palloc() (falling back to malloc in frontend code). * - * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * - * src/backend/lib/stringinfo.c + * src/common/stringinfo.c * *------------------------------------------------------------------------- */ + +#ifndef FRONTEND + #include "postgres.h" +#include "utils/memutils.h" + +#else + +#include "postgres_fe.h" + +/* It's possible we could use a different value for this in frontend code */ +#define MaxAllocSize ((Size) 0x3fffffff) /* 1 gigabyte - 1 */ + +#endif #include "lib/stringinfo.h" -#include "utils/memutils.h" /* @@ -81,12 +94,15 @@ resetStringInfo(StringInfo str) void appendStringInfo(StringInfo str, const char *fmt,...) { + int save_errno = errno; + for (;;) { va_list args; int needed; /* Try to format the data. */ + errno = save_errno; va_start(args, fmt); needed = appendStringInfoVA(str, fmt, args); va_end(args); @@ -109,6 +125,9 @@ appendStringInfo(StringInfo str, const char *fmt,...) * pass the return value to enlargeStringInfo() before trying again; see * appendStringInfo for standard usage pattern. * + * Caution: callers must be sure to preserve their entry-time errno + * when looping, in case the fmt contains "%m". + * * XXX This API is ugly, but there seems no alternative given the C spec's * restrictions on what can portably be done with va_list arguments: you have * to redo va_start before you can rescan the argument list, and we can't do @@ -206,7 +225,7 @@ appendStringInfoSpaces(StringInfo str, int count) * appendBinaryStringInfo * * Append arbitrary binary data to a StringInfo, allocating more space - * if necessary. + * if necessary. Ensures that a trailing null byte is present. */ void appendBinaryStringInfo(StringInfo str, const char *data, int datalen) @@ -228,6 +247,14 @@ appendBinaryStringInfo(StringInfo str, const char *data, int datalen) str->data[str->len] = '\0'; } +/* + * appendBinaryStringInfoNT + * + * Append arbitrary binary data to a StringInfo, allocating more space + * if necessary. Does not ensure a trailing null-byte exists. + */ + + /* * enlargeStringInfo * @@ -240,10 +267,10 @@ appendBinaryStringInfo(StringInfo str, const char *data, int datalen) * can save some palloc overhead by enlarging the buffer before starting * to store data in it. * - * NB: because we use repalloc() to enlarge the buffer, the string buffer - * will remain allocated in the same memory context that was current when - * initStringInfo was called, even if another context is now current. - * This is the desired and indeed critical behavior! + * NB: In the backend, because we use repalloc() to enlarge the buffer, the + * string buffer will remain allocated in the same memory context that was + * current when initStringInfo was called, even if another context is now + * current. This is the desired and indeed critical behavior! */ void enlargeStringInfo(StringInfo str, int needed) @@ -255,13 +282,29 @@ enlargeStringInfo(StringInfo str, int needed) * an overflow or infinite loop in the following. */ if (needed < 0) /* should not happen */ + { +#ifndef FRONTEND elog(ERROR, "invalid string enlargement request size: %d", needed); +#else + fprintf(stderr, "invalid string enlargement request size: %d\n", needed); + exit(EXIT_FAILURE); +#endif + } if (((Size) needed) >= (MaxAllocSize - (Size) str->len)) + { +#ifndef FRONTEND ereport(ERROR, (errcode(ERRCODE_PROGRAM_LIMIT_EXCEEDED), errmsg("out of memory"), errdetail("Cannot enlarge string buffer containing %d bytes by %d more bytes.", str->len, needed))); +#else + fprintf(stderr, + _("out of memory\n\nCannot enlarge string buffer containing %d bytes by %d more bytes.\n"), + str->len, needed); + exit(EXIT_FAILURE); +#endif + } needed += str->len + 1; /* total space required now */ diff --git a/parser/src_backend_utils_mb_wchar.c b/parser/src_common_wchar.c similarity index 78% rename from parser/src_backend_utils_mb_wchar.c rename to parser/src_common_wchar.c index 592c3028..8a1228e5 100644 --- a/parser/src_backend_utils_mb_wchar.c +++ b/parser/src_common_wchar.c @@ -1,10 +1,6 @@ /*-------------------------------------------------------------------- * Symbols referenced in this file: - * - pg_verifymbstr - * - pg_verify_mbstr_len * - pg_encoding_max_length - * - report_invalid_encoding - * - pg_encoding_mblen * - pg_wchar_table * - pg_utf_mblen * - pg_mule_mblen @@ -67,37 +63,45 @@ * - pg_johab_mblen * - pg_johab_dsplen * - pg_johab_verifier - * - pg_database_encoding_max_length + * - pg_encoding_mblen *-------------------------------------------------------------------- */ -/* - * conversion functions between pg_wchar and multibyte streams. - * Tatsuo Ishii - * src/backend/utils/mb/wchar.c +/*------------------------------------------------------------------------- + * + * wchar.c + * Functions for working with multibyte characters in various encodings. * + * Portions Copyright (c) 1998-2020, PostgreSQL Global Development Group + * + * IDENTIFICATION + * src/common/wchar.c + * + *------------------------------------------------------------------------- */ -/* can be used in either frontend or backend */ -#ifdef FRONTEND -#include "postgres_fe.h" -#else -#include "postgres.h" -#endif +#include "c.h" #include "mb/pg_wchar.h" /* - * conversion to pg_wchar is done by "table driven." - * to add an encoding support, define mb2wchar_with_len(), mblen(), dsplen() - * for the particular encoding. Note that if the encoding is only - * supported in the client, you don't need to define - * mb2wchar_with_len() function (SJIS is the case). + * Operations on multi-byte encodings are driven by a table of helper + * functions. + * + * To add an encoding support, define mblen(), dsplen() and verifier() for + * the encoding. For server-encodings, also define mb2wchar() and wchar2mb() + * conversion functions. * * These functions generally assume that their input is validly formed. * The "verifier" functions, further down in the file, have to be more - * paranoid. We expect that mblen() does not need to examine more than - * the first byte of the character to discover the correct length. + * paranoid. + * + * We expect that mblen() does not need to examine more than the first byte + * of the character to discover the correct length. GB18030 is an exception + * to that rule, though, as it also looks at second byte. But even that + * behaves in a predictable way, if you only pass the first byte: it will + * treat 4-byte encoded characters as two 2-byte encoded characters, which is + * good enough for all current uses. * * Note: for the display output of psql to work properly, the return values * of the dsplen functions must conform to the Unicode standard. In particular @@ -637,7 +641,7 @@ pg_utf_mblen(const unsigned char *s) /* * This is an implementation of wcwidth() and wcswidth() as defined in * "The Single UNIX Specification, Version 2, The Open Group, 1997" - * + * * * Markus Kuhn -- 2001-09-08 -- public domain * @@ -709,43 +713,7 @@ mbbisearch(pg_wchar ucs, const struct mbinterval *table, int max) static int ucs_wcwidth(pg_wchar ucs) { - /* sorted list of non-overlapping intervals of non-spacing characters */ - static const struct mbinterval combining[] = { - {0x0300, 0x034E}, {0x0360, 0x0362}, {0x0483, 0x0486}, - {0x0488, 0x0489}, {0x0591, 0x05A1}, {0x05A3, 0x05B9}, - {0x05BB, 0x05BD}, {0x05BF, 0x05BF}, {0x05C1, 0x05C2}, - {0x05C4, 0x05C4}, {0x064B, 0x0655}, {0x0670, 0x0670}, - {0x06D6, 0x06E4}, {0x06E7, 0x06E8}, {0x06EA, 0x06ED}, - {0x070F, 0x070F}, {0x0711, 0x0711}, {0x0730, 0x074A}, - {0x07A6, 0x07B0}, {0x0901, 0x0902}, {0x093C, 0x093C}, - {0x0941, 0x0948}, {0x094D, 0x094D}, {0x0951, 0x0954}, - {0x0962, 0x0963}, {0x0981, 0x0981}, {0x09BC, 0x09BC}, - {0x09C1, 0x09C4}, {0x09CD, 0x09CD}, {0x09E2, 0x09E3}, - {0x0A02, 0x0A02}, {0x0A3C, 0x0A3C}, {0x0A41, 0x0A42}, - {0x0A47, 0x0A48}, {0x0A4B, 0x0A4D}, {0x0A70, 0x0A71}, - {0x0A81, 0x0A82}, {0x0ABC, 0x0ABC}, {0x0AC1, 0x0AC5}, - {0x0AC7, 0x0AC8}, {0x0ACD, 0x0ACD}, {0x0B01, 0x0B01}, - {0x0B3C, 0x0B3C}, {0x0B3F, 0x0B3F}, {0x0B41, 0x0B43}, - {0x0B4D, 0x0B4D}, {0x0B56, 0x0B56}, {0x0B82, 0x0B82}, - {0x0BC0, 0x0BC0}, {0x0BCD, 0x0BCD}, {0x0C3E, 0x0C40}, - {0x0C46, 0x0C48}, {0x0C4A, 0x0C4D}, {0x0C55, 0x0C56}, - {0x0CBF, 0x0CBF}, {0x0CC6, 0x0CC6}, {0x0CCC, 0x0CCD}, - {0x0D41, 0x0D43}, {0x0D4D, 0x0D4D}, {0x0DCA, 0x0DCA}, - {0x0DD2, 0x0DD4}, {0x0DD6, 0x0DD6}, {0x0E31, 0x0E31}, - {0x0E34, 0x0E3A}, {0x0E47, 0x0E4E}, {0x0EB1, 0x0EB1}, - {0x0EB4, 0x0EB9}, {0x0EBB, 0x0EBC}, {0x0EC8, 0x0ECD}, - {0x0F18, 0x0F19}, {0x0F35, 0x0F35}, {0x0F37, 0x0F37}, - {0x0F39, 0x0F39}, {0x0F71, 0x0F7E}, {0x0F80, 0x0F84}, - {0x0F86, 0x0F87}, {0x0F90, 0x0F97}, {0x0F99, 0x0FBC}, - {0x0FC6, 0x0FC6}, {0x102D, 0x1030}, {0x1032, 0x1032}, - {0x1036, 0x1037}, {0x1039, 0x1039}, {0x1058, 0x1059}, - {0x1160, 0x11FF}, {0x17B7, 0x17BD}, {0x17C6, 0x17C6}, - {0x17C9, 0x17D3}, {0x180B, 0x180E}, {0x18A9, 0x18A9}, - {0x200B, 0x200F}, {0x202A, 0x202E}, {0x206A, 0x206F}, - {0x20D0, 0x20E3}, {0x302A, 0x302F}, {0x3099, 0x309A}, - {0xFB1E, 0xFB1E}, {0xFE20, 0xFE23}, {0xFEFF, 0xFEFF}, - {0xFFF9, 0xFFFB} - }; +#include "common/unicode_combining_table.h" /* test for 8-bit control characters */ if (ucs == 0) @@ -935,6 +903,7 @@ pg_wchar2mule_with_len(const pg_wchar *from, unsigned char *to, int len) return cnt; } +/* exported for direct use by conv.c */ int pg_mule_mblen(const unsigned char *s) { @@ -1146,6 +1115,17 @@ pg_uhc_dsplen(const unsigned char *s) * GB18030 * Added by Bill Huang , */ + +/* + * Unlike all other mblen() functions, this also looks at the second byte of + * the input. However, if you only pass the first byte of a multi-byte + * string, and \0 as the second byte, this still works in a predictable way: + * a 4-byte character will be reported as two 2-byte characters. That's + * enough for all current uses, as a client-only encoding. It works that + * way, because in any valid 4-byte GB18030-encoded character, the third and + * fourth byte look like a 2-byte encoded character, when looked at + * separately. + */ static int pg_gb18030_mblen(const unsigned char *s) { @@ -1584,60 +1564,6 @@ pg_utf8_islegal(const unsigned char *source, int length) return true; } -#ifndef FRONTEND - -/* - * Generic character incrementer function. - * - * Not knowing anything about the properties of the encoding in use, we just - * keep incrementing the last byte until we get a validly-encoded result, - * or we run out of values to try. We don't bother to try incrementing - * higher-order bytes, so there's no growth in runtime for wider characters. - * (If we did try to do that, we'd need to consider the likelihood that 255 - * is not a valid final byte in the encoding.) - */ - - -/* - * UTF-8 character incrementer function. - * - * For a one-byte character less than 0x7F, we just increment the byte. - * - * For a multibyte character, every byte but the first must fall between 0x80 - * and 0xBF; and the first byte must be between 0xC0 and 0xF4. We increment - * the last byte that's not already at its maximum value. If we can't find a - * byte that's less than the maximum allowable value, we simply fail. We also - * need some special-case logic to skip regions used for surrogate pair - * handling, as those should not occur in valid UTF-8. - * - * Note that we don't reset lower-order bytes back to their minimums, since - * we can't afford to make an exhaustive search (see make_greater_string). - */ - - -/* - * EUC-JP character incrementer function. - * - * If the sequence starts with SS2 (0x8e), it must be a two-byte sequence - * representing JIS X 0201 characters with the second byte ranging between - * 0xa1 and 0xdf. We just increment the last byte if it's less than 0xdf, - * and otherwise rewrite the whole sequence to 0xa1 0xa1. - * - * If the sequence starts with SS3 (0x8f), it must be a three-byte sequence - * in which the last two bytes range between 0xa1 and 0xfe. The last byte - * is incremented if possible, otherwise the second-to-last byte. - * - * If the sequence starts with a value other than the above and its MSB - * is set, it must be a two-byte sequence representing JIS X 0208 characters - * with both bytes ranging between 0xa1 and 0xfe. The last byte is - * incremented if possible, otherwise the second-to-last byte. - * - * Otherwise, the sequence is a single-byte ASCII character. It is - * incremented up to 0x7f. - */ - -#endif /* !FRONTEND */ - /* *------------------------------------------------------------------- @@ -1690,9 +1616,6 @@ const pg_wchar_tbl pg_wchar_table[] = { {0, 0, pg_sjis_mblen, pg_sjis_dsplen, pg_sjis_verifier, 2} /* PG_SHIFT_JIS_2004 */ }; -/* returns the byte length of a word for mule internal code */ - - /* * Returns the byte length of a multibyte character. */ @@ -1700,8 +1623,8 @@ int pg_encoding_mblen(int encoding, const char *mbstr) { return (PG_VALID_ENCODING(encoding) ? - ((*pg_wchar_table[encoding].mblen) ((const unsigned char *) mbstr)) : - ((*pg_wchar_table[PG_SQL_ASCII].mblen) ((const unsigned char *) mbstr))); + pg_wchar_table[encoding].mblen((const unsigned char *) mbstr) : + pg_wchar_table[PG_SQL_ASCII].mblen((const unsigned char *) mbstr)); } /* @@ -1726,163 +1649,3 @@ pg_encoding_max_length(int encoding) return pg_wchar_table[encoding].maxmblen; } - -#ifndef FRONTEND - -/* - * fetch maximum length of the encoding for the current database - */ -int -pg_database_encoding_max_length(void) -{ - return pg_wchar_table[GetDatabaseEncoding()].maxmblen; -} - -/* - * get the character incrementer for the encoding for the current database - */ - - -/* - * Verify mbstr to make sure that it is validly encoded in the current - * database encoding. Otherwise same as pg_verify_mbstr(). - */ -bool -pg_verifymbstr(const char *mbstr, int len, bool noError) -{ - return - pg_verify_mbstr_len(GetDatabaseEncoding(), mbstr, len, noError) >= 0; -} - -/* - * Verify mbstr to make sure that it is validly encoded in the specified - * encoding. - */ - - -/* - * Verify mbstr to make sure that it is validly encoded in the specified - * encoding. - * - * mbstr is not necessarily zero terminated; length of mbstr is - * specified by len. - * - * If OK, return length of string in the encoding. - * If a problem is found, return -1 when noError is - * true; when noError is false, ereport() a descriptive message. - */ -int -pg_verify_mbstr_len(int encoding, const char *mbstr, int len, bool noError) -{ - mbverifier mbverify; - int mb_len; - - Assert(PG_VALID_ENCODING(encoding)); - - /* - * In single-byte encodings, we need only reject nulls (\0). - */ - if (pg_encoding_max_length(encoding) <= 1) - { - const char *nullpos = memchr(mbstr, 0, len); - - if (nullpos == NULL) - return len; - if (noError) - return -1; - report_invalid_encoding(encoding, nullpos, 1); - } - - /* fetch function pointer just once */ - mbverify = pg_wchar_table[encoding].mbverify; - - mb_len = 0; - - while (len > 0) - { - int l; - - /* fast path for ASCII-subset characters */ - if (!IS_HIGHBIT_SET(*mbstr)) - { - if (*mbstr != '\0') - { - mb_len++; - mbstr++; - len--; - continue; - } - if (noError) - return -1; - report_invalid_encoding(encoding, mbstr, len); - } - - l = (*mbverify) ((const unsigned char *) mbstr, len); - - if (l < 0) - { - if (noError) - return -1; - report_invalid_encoding(encoding, mbstr, len); - } - - mbstr += l; - len -= l; - mb_len++; - } - return mb_len; -} - -/* - * check_encoding_conversion_args: check arguments of a conversion function - * - * "expected" arguments can be either an encoding ID or -1 to indicate that - * the caller will check whether it accepts the ID. - * - * Note: the errors here are not really user-facing, so elog instead of - * ereport seems sufficient. Also, we trust that the "expected" encoding - * arguments are valid encoding IDs, but we don't trust the actuals. - */ - - -/* - * report_invalid_encoding: complain about invalid multibyte character - * - * note: len is remaining length of string, not length of character; - * len must be greater than zero, as we always examine the first byte. - */ -void -report_invalid_encoding(int encoding, const char *mbstr, int len) -{ - int l = pg_encoding_mblen(encoding, mbstr); - char buf[8 * 5 + 1]; - char *p = buf; - int j, - jlimit; - - jlimit = Min(l, len); - jlimit = Min(jlimit, 8); /* prevent buffer overrun */ - - for (j = 0; j < jlimit; j++) - { - p += sprintf(p, "0x%02x", (unsigned char) mbstr[j]); - if (j < jlimit - 1) - p += sprintf(p, " "); - } - - ereport(ERROR, - (errcode(ERRCODE_CHARACTER_NOT_IN_REPERTOIRE), - errmsg("invalid byte sequence for encoding \"%s\": %s", - pg_enc2name_tbl[encoding].name, - buf))); -} - -/* - * report_untranslatable_char: complain about untranslatable character - * - * note: len is remaining length of string, not length of character; - * len must be greater than zero, as we always examine the first byte. - */ - - -#endif /* !FRONTEND */ diff --git a/parser/src_pl_plpgsql_src_pl_comp.c b/parser/src_pl_plpgsql_src_pl_comp.c index 2848141a..3f54b842 100644 --- a/parser/src_pl_plpgsql_src_pl_comp.c +++ b/parser/src_pl_plpgsql_src_pl_comp.c @@ -14,9 +14,9 @@ * - plpgsql_build_variable * - plpgsql_adddatum * - plpgsql_build_record - * - build_row_from_class * - plpgsql_build_datatype * - plpgsql_parse_tripword + * - plpgsql_build_recfield * - plpgsql_parse_dblword * - plpgsql_parse_word * - plpgsql_add_initdatums @@ -39,7 +39,7 @@ * pl_comp.c - Compiler part of the PL/pgSQL * procedural language * - * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * @@ -56,11 +56,11 @@ #include "access/htup_details.h" #include "catalog/namespace.h" #include "catalog/pg_proc.h" -#include "catalog/pg_proc_fn.h" #include "catalog/pg_type.h" #include "funcapi.h" #include "nodes/makefuncs.h" #include "parser/parse_type.h" +#include "plpgsql.h" #include "utils/builtins.h" #include "utils/guc.h" #include "utils/lsyscache.h" @@ -68,9 +68,7 @@ #include "utils/regproc.h" #include "utils/rel.h" #include "utils/syscache.h" - -#include "plpgsql.h" - +#include "utils/typcache.h" /* ---------- * Our own local and global variables @@ -137,10 +135,10 @@ static const ExceptionLabelMap exception_label_map[] = { * ---------- */ static PLpgSQL_function *do_compile(FunctionCallInfo fcinfo, - HeapTuple procTup, - PLpgSQL_function *function, - PLpgSQL_func_hashkey *hashkey, - bool forValidator); + HeapTuple procTup, + PLpgSQL_function *function, + PLpgSQL_func_hashkey *hashkey, + bool forValidator); static void plpgsql_compile_error_callback(void *arg); static void add_parameter_name(PLpgSQL_nsitem_type itemtype, int itemno, const char *name); static void add_dummy_return(PLpgSQL_function *function); @@ -148,22 +146,22 @@ static Node *plpgsql_pre_column_ref(ParseState *pstate, ColumnRef *cref); static Node *plpgsql_post_column_ref(ParseState *pstate, ColumnRef *cref, Node *var); static Node *plpgsql_param_ref(ParseState *pstate, ParamRef *pref); static Node *resolve_column_ref(ParseState *pstate, PLpgSQL_expr *expr, - ColumnRef *cref, bool error_if_no_field); + ColumnRef *cref, bool error_if_no_field); static Node *make_datum_param(PLpgSQL_expr *expr, int dno, int location); -static PLpgSQL_row *build_row_from_class(Oid classOid); static PLpgSQL_row *build_row_from_vars(PLpgSQL_variable **vars, int numvars); -static PLpgSQL_type *build_datatype(HeapTuple typeTup, int32 typmod, Oid collation); +static PLpgSQL_type *build_datatype(HeapTuple typeTup, int32 typmod, + Oid collation, TypeName *origtypname); static void compute_function_hashkey(FunctionCallInfo fcinfo, - Form_pg_proc procStruct, - PLpgSQL_func_hashkey *hashkey, - bool forValidator); + Form_pg_proc procStruct, + PLpgSQL_func_hashkey *hashkey, + bool forValidator); static void plpgsql_resolve_polymorphic_argtypes(int numargs, - Oid *argtypes, char *argmodes, - Node *call_expr, bool forValidator, - const char *proname); + Oid *argtypes, char *argmodes, + Node *call_expr, bool forValidator, + const char *proname); static PLpgSQL_function *plpgsql_HashTableLookup(PLpgSQL_func_hashkey *func_key); static void plpgsql_HashTableInsert(PLpgSQL_function *function, - PLpgSQL_func_hashkey *func_key); + PLpgSQL_func_hashkey *func_key); static void plpgsql_HashTableDelete(PLpgSQL_function *function); static void delete_function(PLpgSQL_function *func); @@ -272,6 +270,8 @@ plpgsql_compile_inline(char *proc_source) function->extra_warnings = 0; function->extra_errors = 0; + function->nstatements = 0; + plpgsql_ns_init(); plpgsql_ns_push(func_name, PLPGSQL_LABEL_BLOCK); plpgsql_DumpExecTree = false; @@ -281,13 +281,15 @@ plpgsql_compile_inline(char *proc_source) function->fn_rettype = VOIDOID; function->fn_retset = false; function->fn_retistuple = false; + function->fn_retisdomain = false; + function->fn_prokind = PROKIND_FUNCTION; /* a bit of hardwired knowledge about type VOID here */ function->fn_retbyval = true; function->fn_rettyplen = sizeof(int32); /* * Remember if function is STABLE/IMMUTABLE. XXX would it be better to - * set this TRUE inside a read-only transaction? Not clear. + * set this true inside a read-only transaction? Not clear. */ function->fn_readonly = false; @@ -297,7 +299,8 @@ plpgsql_compile_inline(char *proc_source) var = plpgsql_build_variable("found", 0, plpgsql_build_datatype(BOOLOID, -1, - InvalidOid), + InvalidOid, + NULL), true); function->found_varno = var->dno; @@ -390,6 +393,7 @@ add_dummy_return(PLpgSQL_function *function) new = palloc0(sizeof(PLpgSQL_stmt_block)); new->cmd_type = PLPGSQL_STMT_BLOCK; + new->stmtid = ++function->nstatements; new->body = list_make1(function->action); function->action = new; @@ -401,6 +405,7 @@ add_dummy_return(PLpgSQL_function *function) new = palloc0(sizeof(PLpgSQL_stmt_return)); new->cmd_type = PLPGSQL_STMT_RETURN; + new->stmtid = ++function->nstatements; new->expr = NULL; new->retvarno = function->out_param_varno; @@ -461,24 +466,27 @@ add_dummy_return(PLpgSQL_function *function) * yytxt is the original token text; we need this to check for quoting, * so that later checks for unreserved keywords work properly. * - * If recognized as a variable, fill in *wdatum and return TRUE; - * if not recognized, fill in *word and return FALSE. + * We attempt to recognize the token as a variable only if lookup is true + * and the plpgsql_IdentifierLookup context permits it. + * + * If recognized as a variable, fill in *wdatum and return true; + * if not recognized, fill in *word and return false. * (Note: those two pointers actually point to members of the same union, * but for notational reasons we pass them separately.) * ---------- */ bool -plpgsql_parse_word(char *word1, const char *yytxt, +plpgsql_parse_word(char *word1, const char *yytxt, bool lookup, PLwdatum *wdatum, PLword *word) { PLpgSQL_nsitem *ns; /* - * We should do nothing in DECLARE sections. In SQL expressions, there's - * no need to do anything either --- lookup will happen when the - * expression is compiled. + * We should not lookup variables in DECLARE sections. In SQL + * expressions, there's no need to do so either --- lookup will happen + * when the expression is compiled. */ - if (plpgsql_IdentifierLookup == IDENTIFIER_LOOKUP_NORMAL) + if (lookup && plpgsql_IdentifierLookup == IDENTIFIER_LOOKUP_NORMAL) { /* * Do a lookup in the current namespace stack @@ -492,7 +500,6 @@ plpgsql_parse_word(char *word1, const char *yytxt, switch (ns->itemtype) { case PLPGSQL_NSTYPE_VAR: - case PLPGSQL_NSTYPE_ROW: case PLPGSQL_NSTYPE_REC: wdatum->datum = plpgsql_Datums[ns->itemno]; wdatum->ident = word1; @@ -568,14 +575,11 @@ plpgsql_parse_dblword(char *word1, char *word2, * datum whether it is or not --- any error will be * detected later. */ + PLpgSQL_rec *rec; PLpgSQL_recfield *new; - new = palloc(sizeof(PLpgSQL_recfield)); - new->dtype = PLPGSQL_DTYPE_RECFIELD; - new->fieldname = pstrdup(word2); - new->recparentno = ns->itemno; - - plpgsql_adddatum((PLpgSQL_datum *) new); + rec = (PLpgSQL_rec *) (plpgsql_Datums[ns->itemno]); + new = plpgsql_build_recfield(rec, word2); wdatum->datum = (PLpgSQL_datum *) new; } @@ -589,43 +593,6 @@ plpgsql_parse_dblword(char *word1, char *word2, wdatum->idents = idents; return true; - case PLPGSQL_NSTYPE_ROW: - if (nnames == 1) - { - /* - * First word is a row name, so second word could be a - * field in this row. Again, no error now if it - * isn't. - */ - PLpgSQL_row *row; - int i; - - row = (PLpgSQL_row *) (plpgsql_Datums[ns->itemno]); - for (i = 0; i < row->nfields; i++) - { - if (row->fieldnames[i] && - strcmp(row->fieldnames[i], word2) == 0) - { - wdatum->datum = plpgsql_Datums[row->varnos[i]]; - wdatum->ident = NULL; - wdatum->quoted = false; /* not used */ - wdatum->idents = idents; - return true; - } - } - /* fall through to return CWORD */ - } - else - { - /* Block-qualified reference to row variable. */ - wdatum->datum = plpgsql_Datums[ns->itemno]; - wdatum->ident = NULL; - wdatum->quoted = false; /* not used */ - wdatum->idents = idents; - return true; - } - break; - default: break; } @@ -679,14 +646,11 @@ plpgsql_parse_tripword(char *word1, char *word2, char *word3, * words 1/2 are a record name, so third word could be * a field in this record. */ + PLpgSQL_rec *rec; PLpgSQL_recfield *new; - new = palloc(sizeof(PLpgSQL_recfield)); - new->dtype = PLPGSQL_DTYPE_RECFIELD; - new->fieldname = pstrdup(word3); - new->recparentno = ns->itemno; - - plpgsql_adddatum((PLpgSQL_datum *) new); + rec = (PLpgSQL_rec *) (plpgsql_Datums[ns->itemno]); + new = plpgsql_build_recfield(rec, word3); wdatum->datum = (PLpgSQL_datum *) new; wdatum->ident = NULL; @@ -695,32 +659,6 @@ plpgsql_parse_tripword(char *word1, char *word2, char *word3, return true; } - case PLPGSQL_NSTYPE_ROW: - { - /* - * words 1/2 are a row name, so third word could be a - * field in this row. - */ - PLpgSQL_row *row; - int i; - - row = (PLpgSQL_row *) (plpgsql_Datums[ns->itemno]); - for (i = 0; i < row->nfields; i++) - { - if (row->fieldnames[i] && - strcmp(row->fieldnames[i], word3) == 0) - { - wdatum->datum = plpgsql_Datums[row->varnos[i]]; - wdatum->ident = NULL; - wdatum->quoted = false; /* not used */ - wdatum->idents = idents; - return true; - } - } - /* fall through to return CWORD */ - break; - } - default: break; } @@ -771,8 +709,8 @@ PLpgSQL_type * plpgsql_parse_cwordrowtype(List *idents) { return NULL; } * plpgsql_build_variable - build a datum-array entry of a given * datatype * - * The returned struct may be a PLpgSQL_var, PLpgSQL_row, or - * PLpgSQL_rec depending on the given datatype, and is allocated via + * The returned struct may be a PLpgSQL_var or PLpgSQL_rec + * depending on the given datatype, and is allocated via * palloc. The struct is automatically added to the current datum * array, and optionally to the current namespace. */ @@ -794,7 +732,7 @@ plpgsql_build_variable(const char *refname, int lineno, PLpgSQL_type *dtype, var->refname = pstrdup(refname); var->lineno = lineno; var->datatype = dtype; - /* other fields might be filled by caller */ + /* other fields are left as 0, might be changed by caller */ /* preset to NULL */ var->value = 0; @@ -809,31 +747,14 @@ plpgsql_build_variable(const char *refname, int lineno, PLpgSQL_type *dtype, result = (PLpgSQL_variable *) var; break; } - case PLPGSQL_TTYPE_ROW: - { - /* Composite type -- build a row variable */ - PLpgSQL_row *row; - - row = build_row_from_class(dtype->typrelid); - - row->dtype = PLPGSQL_DTYPE_ROW; - row->refname = pstrdup(refname); - row->lineno = lineno; - - plpgsql_adddatum((PLpgSQL_datum *) row); - if (add2namespace) - plpgsql_ns_additem(PLPGSQL_NSTYPE_ROW, - row->dno, - refname); - result = (PLpgSQL_variable *) row; - break; - } case PLPGSQL_TTYPE_REC: { - /* "record" type -- build a record variable */ + /* Composite type -- build a record variable */ PLpgSQL_rec *rec; - rec = plpgsql_build_record(refname, lineno, add2namespace); + rec = plpgsql_build_record(refname, lineno, + dtype, dtype->typoid, + add2namespace); result = (PLpgSQL_variable *) rec; break; } @@ -857,7 +778,9 @@ plpgsql_build_variable(const char *refname, int lineno, PLpgSQL_type *dtype, * Build empty named record variable, and optionally add it to namespace */ PLpgSQL_rec * -plpgsql_build_record(const char *refname, int lineno, bool add2namespace) +plpgsql_build_record(const char *refname, int lineno, + PLpgSQL_type *dtype, Oid rectypeid, + bool add2namespace) { PLpgSQL_rec *rec; @@ -865,10 +788,11 @@ plpgsql_build_record(const char *refname, int lineno, bool add2namespace) rec->dtype = PLPGSQL_DTYPE_REC; rec->refname = pstrdup(refname); rec->lineno = lineno; - rec->tup = NULL; - rec->tupdesc = NULL; - rec->freetup = false; - rec->freetupdesc = false; + /* other fields are left as 0, might be changed by caller */ + rec->datatype = dtype; + rec->rectypeid = rectypeid; + rec->firstfield = -1; + rec->erh = NULL; plpgsql_adddatum((PLpgSQL_datum *) rec); if (add2namespace) plpgsql_ns_additem(PLPGSQL_NSTYPE_REC, rec->dno, rec->refname); @@ -877,28 +801,69 @@ plpgsql_build_record(const char *refname, int lineno, bool add2namespace) } /* - * Build a row-variable data structure given the pg_class OID. + * Build a row-variable data structure given the component variables. + * Include a rowtupdesc, since we will need to materialize the row result. */ -static PLpgSQL_row *build_row_from_class(Oid classOid) { return NULL; } /* - * Build a row-variable data structure given the component variables. + * Build a RECFIELD datum for the named field of the specified record variable + * + * If there's already such a datum, just return it; we don't need duplicates. */ +PLpgSQL_recfield * +plpgsql_build_recfield(PLpgSQL_rec *rec, const char *fldname) +{ + PLpgSQL_recfield *recfield; + int i; + /* search for an existing datum referencing this field */ + i = rec->firstfield; + while (i >= 0) + { + PLpgSQL_recfield *fld = (PLpgSQL_recfield *) plpgsql_Datums[i]; + + Assert(fld->dtype == PLPGSQL_DTYPE_RECFIELD && + fld->recparentno == rec->dno); + if (strcmp(fld->fieldname, fldname) == 0) + return fld; + i = fld->nextfield; + } + + /* nope, so make a new one */ + recfield = palloc0(sizeof(PLpgSQL_recfield)); + recfield->dtype = PLPGSQL_DTYPE_RECFIELD; + recfield->fieldname = pstrdup(fldname); + recfield->recparentno = rec->dno; + recfield->rectupledescid = INVALID_TUPLEDESC_IDENTIFIER; + + plpgsql_adddatum((PLpgSQL_datum *) recfield); + + /* now we can link it into the parent's chain */ + recfield->nextfield = rec->firstfield; + rec->firstfield = recfield->dno; + + return recfield; +} /* * plpgsql_build_datatype - * Build PLpgSQL_type struct given type OID, typmod, and collation. + * Build PLpgSQL_type struct given type OID, typmod, collation, + * and type's parsed name. * * If collation is not InvalidOid then it overrides the type's default * collation. But collation is ignored if the datatype is non-collatable. + * + * origtypname is the parsed form of what the user wrote as the type name. + * It can be NULL if the type could not be a composite type, or if it was + * identified by OID to begin with (e.g., it's a function argument type). */ -PLpgSQL_type * plpgsql_build_datatype(Oid typeOid, int32 typmod, Oid collation) { PLpgSQL_type *typ; typ = (PLpgSQL_type *) palloc0(sizeof(PLpgSQL_type)); typ->typname = pstrdup("UNKNOWN"); typ->ttype = PLPGSQL_TTYPE_SCALAR; return typ; } +PLpgSQL_type * plpgsql_build_datatype(Oid typeOid, int32 typmod, Oid collation, TypeName *origtypname) { PLpgSQL_type *typ; typ = (PLpgSQL_type *) palloc0(sizeof(PLpgSQL_type)); typ->typname = pstrdup("UNKNOWN"); typ->ttype = PLPGSQL_TTYPE_SCALAR; return typ; } /* * Utility subroutine to make a PLpgSQL_type struct given a pg_type entry + * and additional details (see comments for plpgsql_build_datatype). */ @@ -1014,7 +979,7 @@ plpgsql_start_datums(void) * ---------- */ void -plpgsql_adddatum(PLpgSQL_datum *new) +plpgsql_adddatum(PLpgSQL_datum *newdatum) { if (plpgsql_nDatums == datums_alloc) { @@ -1022,21 +987,18 @@ plpgsql_adddatum(PLpgSQL_datum *new) plpgsql_Datums = repalloc(plpgsql_Datums, sizeof(PLpgSQL_datum *) * datums_alloc); } - new->dno = plpgsql_nDatums; - plpgsql_Datums[plpgsql_nDatums++] = new; + newdatum->dno = plpgsql_nDatums; + plpgsql_Datums[plpgsql_nDatums++] = newdatum; } /* ---------- * plpgsql_finish_datums Copy completed datum info into function struct. - * - * This is also responsible for building resettable_datums, a bitmapset - * of the dnos of all ROW, REC, and RECFIELD datums in the function. * ---------- */ void plpgsql_finish_datums(PLpgSQL_function *function) { - Bitmapset *resettable_datums = NULL; + Size copiable_size = 0; int i; function->ndatums = plpgsql_nDatums; @@ -1044,32 +1006,35 @@ plpgsql_finish_datums(PLpgSQL_function *function) for (i = 0; i < plpgsql_nDatums; i++) { function->datums[i] = plpgsql_Datums[i]; + + /* This must agree with copy_plpgsql_datums on what is copiable */ switch (function->datums[i]->dtype) { - case PLPGSQL_DTYPE_ROW: + case PLPGSQL_DTYPE_VAR: + case PLPGSQL_DTYPE_PROMISE: + copiable_size += MAXALIGN(sizeof(PLpgSQL_var)); + break; case PLPGSQL_DTYPE_REC: - case PLPGSQL_DTYPE_RECFIELD: - resettable_datums = bms_add_member(resettable_datums, i); + copiable_size += MAXALIGN(sizeof(PLpgSQL_rec)); break; - default: break; } } - function->resettable_datums = resettable_datums; + function->copiable_size = copiable_size; } /* ---------- * plpgsql_add_initdatums Make an array of the datum numbers of - * all the simple VAR datums created since the last call + * all the initializable datums created since the last call * to this function. * * If varnos is NULL, we just forget any datum entries created since the * last call. * - * This is used around a DECLARE section to create a list of the VARs - * that have to be initialized at block entry. Note that VARs can also + * This is used around a DECLARE section to create a list of the datums + * that have to be initialized at block entry. Note that datums can also * be created elsewhere than DECLARE, eg by a FOR-loop, but it is then * the responsibility of special-purpose code to initialize them. * ---------- @@ -1080,11 +1045,16 @@ plpgsql_add_initdatums(int **varnos) int i; int n = 0; + /* + * The set of dtypes recognized here must match what exec_stmt_block() + * cares about (re)initializing at block entry. + */ for (i = datums_last; i < plpgsql_nDatums; i++) { switch (plpgsql_Datums[i]->dtype) { case PLPGSQL_DTYPE_VAR: + case PLPGSQL_DTYPE_REC: n++; break; @@ -1105,6 +1075,7 @@ plpgsql_add_initdatums(int **varnos) switch (plpgsql_Datums[i]->dtype) { case PLPGSQL_DTYPE_VAR: + case PLPGSQL_DTYPE_REC: (*varnos)[n++] = plpgsql_Datums[i]->dno; default: @@ -1152,7 +1123,7 @@ plpgsql_add_initdatums(int **varnos) */ -/* exported so we can call it from plpgsql_init() */ +/* exported so we can call it from _PG_init() */ diff --git a/parser/src_pl_plpgsql_src_pl_funcs.c b/parser/src_pl_plpgsql_src_pl_funcs.c index 6113fe2c..ea9b66bb 100644 --- a/parser/src_pl_plpgsql_src_pl_funcs.c +++ b/parser/src_pl_plpgsql_src_pl_funcs.c @@ -38,6 +38,10 @@ * - free_fetch * - free_close * - free_perform + * - free_call + * - free_commit + * - free_rollback + * - free_set *-------------------------------------------------------------------- */ @@ -46,7 +50,7 @@ * pl_funcs.c - Misc functions for the PL/pgSQL * procedural language * - * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * @@ -58,10 +62,8 @@ #include "postgres.h" -#include "utils/memutils.h" - #include "plpgsql.h" - +#include "utils/memutils.h" /* ---------- * Local variables for namespace handling @@ -157,7 +159,7 @@ plpgsql_ns_additem(PLpgSQL_nsitem_type itemtype, int itemno, const char *name) * * Note that this only searches for variables, not labels. * - * If localmode is TRUE, only the topmost block level is searched. + * If localmode is true, only the topmost block level is searched. * * name1 must be non-NULL. Pass NULL for name2 and/or name3 if parsing a name * with fewer than three components. @@ -286,8 +288,6 @@ plpgsql_getdiag_kindname(PLpgSQL_getdiag_kind kind) { case PLPGSQL_GETDIAG_ROW_COUNT: return "ROW_COUNT"; - case PLPGSQL_GETDIAG_RESULT_OID: - return "RESULT_OID"; case PLPGSQL_GETDIAG_CONTEXT: return "PG_CONTEXT"; case PLPGSQL_GETDIAG_ERROR_CONTEXT: @@ -350,6 +350,10 @@ static void free_open(PLpgSQL_stmt_open *stmt); static void free_fetch(PLpgSQL_stmt_fetch *stmt); static void free_close(PLpgSQL_stmt_close *stmt); static void free_perform(PLpgSQL_stmt_perform *stmt); +static void free_call(PLpgSQL_stmt_call *stmt); +static void free_commit(PLpgSQL_stmt_commit *stmt); +static void free_rollback(PLpgSQL_stmt_rollback *stmt); +static void free_set(PLpgSQL_stmt_set *stmt); static void free_expr(PLpgSQL_expr *expr); @@ -430,6 +434,18 @@ free_stmt(PLpgSQL_stmt *stmt) case PLPGSQL_STMT_PERFORM: free_perform((PLpgSQL_stmt_perform *) stmt); break; + case PLPGSQL_STMT_CALL: + free_call((PLpgSQL_stmt_call *) stmt); + break; + case PLPGSQL_STMT_COMMIT: + free_commit((PLpgSQL_stmt_commit *) stmt); + break; + case PLPGSQL_STMT_ROLLBACK: + free_rollback((PLpgSQL_stmt_rollback *) stmt); + break; + case PLPGSQL_STMT_SET: + free_set((PLpgSQL_stmt_set *) stmt); + break; default: elog(ERROR, "unrecognized cmd_type: %d", stmt->cmd_type); break; @@ -577,6 +593,28 @@ free_perform(PLpgSQL_stmt_perform *stmt) free_expr(stmt->expr); } +static void +free_call(PLpgSQL_stmt_call *stmt) +{ + free_expr(stmt->expr); +} + +static void +free_commit(PLpgSQL_stmt_commit *stmt) +{ +} + +static void +free_rollback(PLpgSQL_stmt_rollback *stmt) +{ +} + +static void +free_set(PLpgSQL_stmt_set *stmt) +{ + free_expr(stmt->expr); +} + static void free_exit(PLpgSQL_stmt_exit *stmt) { @@ -687,6 +725,7 @@ plpgsql_free_function_memory(PLpgSQL_function *func) switch (d->dtype) { case PLPGSQL_DTYPE_VAR: + case PLPGSQL_DTYPE_PROMISE: { PLpgSQL_var *var = (PLpgSQL_var *) d; @@ -697,6 +736,11 @@ plpgsql_free_function_memory(PLpgSQL_function *func) case PLPGSQL_DTYPE_ROW: break; case PLPGSQL_DTYPE_REC: + { + PLpgSQL_rec *rec = (PLpgSQL_rec *) d; + + free_expr(rec->default_val); + } break; case PLPGSQL_DTYPE_RECFIELD: break; @@ -757,6 +801,10 @@ static void dump_fetch(PLpgSQL_stmt_fetch *stmt); static void dump_cursor_direction(PLpgSQL_stmt_fetch *stmt); static void dump_close(PLpgSQL_stmt_close *stmt); static void dump_perform(PLpgSQL_stmt_perform *stmt); +static void dump_call(PLpgSQL_stmt_call *stmt); +static void dump_commit(PLpgSQL_stmt_commit *stmt); +static void dump_rollback(PLpgSQL_stmt_rollback *stmt); +static void dump_set(PLpgSQL_stmt_set *stmt); static void dump_expr(PLpgSQL_expr *expr); @@ -810,6 +858,14 @@ static void dump_expr(PLpgSQL_expr *expr); + + + + + + + + diff --git a/parser/src_pl_plpgsql_src_pl_gram.c b/parser/src_pl_plpgsql_src_pl_gram.c index 597513c2..a25edee1 100644 --- a/parser/src_pl_plpgsql_src_pl_gram.c +++ b/parser/src_pl_plpgsql_src_pl_gram.c @@ -3,8 +3,8 @@ * - plpgsql_yyparse * - plpgsql_yynerrs * - plpgsql_yychar - * - plpgsql_yylloc * - plpgsql_yylval + * - plpgsql_yylloc * - yypact * - yytranslate * - yycheck @@ -47,17 +47,17 @@ *-------------------------------------------------------------------- */ -/* A Bison parser, made by GNU Bison 3.3.2. */ +/* A Bison parser, made by GNU Bison 2.3. */ -/* Bison implementation for Yacc-like parsers in C +/* Skeleton implementation for Bison's Yacc-like parsers in C - Copyright (C) 1984, 1989-1990, 2000-2015, 2018-2019 Free Software Foundation, - Inc. + Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006 + Free Software Foundation, Inc. - This program is free software: you can redistribute it and/or modify + This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. + the Free Software Foundation; either version 2, or (at your option) + any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of @@ -65,7 +65,9 @@ GNU General Public License for more details. You should have received a copy of the GNU General Public License - along with this program. If not, see . */ + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. */ /* As a special exception, you may create a larger work that contains part or all of the Bison parser skeleton and distribute that work @@ -90,14 +92,11 @@ define necessary library symbols; they are noted "INFRINGES ON USER NAME SPACE" below. */ -/* Undocumented macros, especially those whose name start with YY_, - are private implementation details. Do not rely on them. */ - /* Identify Bison output. */ #define YYBISON 1 /* Bison version. */ -#define YYBISON_VERSION "3.3.2" +#define YYBISON_VERSION "2.3" /* Skeleton name. */ #define YYSKELETON_NAME "yacc.c" @@ -105,32 +104,300 @@ /* Pure parsers. */ #define YYPURE 0 -/* Push parsers. */ -#define YYPUSH 0 - -/* Pull parsers. */ -#define YYPULL 1 - +/* Using locations. */ +#define YYLSP_NEEDED 1 /* Substitute the variable and function names. */ -#define yyparse plpgsql_yyparse -#define yylex plpgsql_yylex -#define yyerror plpgsql_yyerror -#define yydebug plpgsql_yydebug -#define yynerrs plpgsql_yynerrs - -#define yylval plpgsql_yylval -#define yychar plpgsql_yychar -#define yylloc plpgsql_yylloc - -/* First part of user prologue. */ -#line 1 "pl_gram.y" /* yacc.c:337 */ +#define yyparse plpgsql_yyparse +#define yylex plpgsql_yylex +#define yyerror plpgsql_yyerror +#define yylval plpgsql_yylval +#define yychar plpgsql_yychar +#define yydebug plpgsql_yydebug +#define yynerrs plpgsql_yynerrs +#define yylloc plpgsql_yylloc + +/* Tokens. */ +#ifndef YYTOKENTYPE +# define YYTOKENTYPE + /* Put the tokens into the symbol table, so that GDB and other debuggers + know about them. */ + enum yytokentype { + IDENT = 258, + UIDENT = 259, + FCONST = 260, + SCONST = 261, + USCONST = 262, + BCONST = 263, + XCONST = 264, + Op = 265, + ICONST = 266, + PARAM = 267, + TYPECAST = 268, + DOT_DOT = 269, + COLON_EQUALS = 270, + EQUALS_GREATER = 271, + LESS_EQUALS = 272, + GREATER_EQUALS = 273, + NOT_EQUALS = 274, + SQL_COMMENT = 275, + C_COMMENT = 276, + T_WORD = 277, + T_CWORD = 278, + T_DATUM = 279, + LESS_LESS = 280, + GREATER_GREATER = 281, + K_ABSOLUTE = 282, + K_ALIAS = 283, + K_ALL = 284, + K_AND = 285, + K_ARRAY = 286, + K_ASSERT = 287, + K_BACKWARD = 288, + K_BEGIN = 289, + K_BY = 290, + K_CALL = 291, + K_CASE = 292, + K_CHAIN = 293, + K_CLOSE = 294, + K_COLLATE = 295, + K_COLUMN = 296, + K_COLUMN_NAME = 297, + K_COMMIT = 298, + K_CONSTANT = 299, + K_CONSTRAINT = 300, + K_CONSTRAINT_NAME = 301, + K_CONTINUE = 302, + K_CURRENT = 303, + K_CURSOR = 304, + K_DATATYPE = 305, + K_DEBUG = 306, + K_DECLARE = 307, + K_DEFAULT = 308, + K_DETAIL = 309, + K_DIAGNOSTICS = 310, + K_DO = 311, + K_DUMP = 312, + K_ELSE = 313, + K_ELSIF = 314, + K_END = 315, + K_ERRCODE = 316, + K_ERROR = 317, + K_EXCEPTION = 318, + K_EXECUTE = 319, + K_EXIT = 320, + K_FETCH = 321, + K_FIRST = 322, + K_FOR = 323, + K_FOREACH = 324, + K_FORWARD = 325, + K_FROM = 326, + K_GET = 327, + K_HINT = 328, + K_IF = 329, + K_IMPORT = 330, + K_IN = 331, + K_INFO = 332, + K_INSERT = 333, + K_INTO = 334, + K_IS = 335, + K_LAST = 336, + K_LOG = 337, + K_LOOP = 338, + K_MESSAGE = 339, + K_MESSAGE_TEXT = 340, + K_MOVE = 341, + K_NEXT = 342, + K_NO = 343, + K_NOT = 344, + K_NOTICE = 345, + K_NULL = 346, + K_OPEN = 347, + K_OPTION = 348, + K_OR = 349, + K_PERFORM = 350, + K_PG_CONTEXT = 351, + K_PG_DATATYPE_NAME = 352, + K_PG_EXCEPTION_CONTEXT = 353, + K_PG_EXCEPTION_DETAIL = 354, + K_PG_EXCEPTION_HINT = 355, + K_PRINT_STRICT_PARAMS = 356, + K_PRIOR = 357, + K_QUERY = 358, + K_RAISE = 359, + K_RELATIVE = 360, + K_RESET = 361, + K_RETURN = 362, + K_RETURNED_SQLSTATE = 363, + K_REVERSE = 364, + K_ROLLBACK = 365, + K_ROW_COUNT = 366, + K_ROWTYPE = 367, + K_SCHEMA = 368, + K_SCHEMA_NAME = 369, + K_SCROLL = 370, + K_SET = 371, + K_SLICE = 372, + K_SQLSTATE = 373, + K_STACKED = 374, + K_STRICT = 375, + K_TABLE = 376, + K_TABLE_NAME = 377, + K_THEN = 378, + K_TO = 379, + K_TYPE = 380, + K_USE_COLUMN = 381, + K_USE_VARIABLE = 382, + K_USING = 383, + K_VARIABLE_CONFLICT = 384, + K_WARNING = 385, + K_WHEN = 386, + K_WHILE = 387 + }; +#endif +/* Tokens. */ +#define IDENT 258 +#define UIDENT 259 +#define FCONST 260 +#define SCONST 261 +#define USCONST 262 +#define BCONST 263 +#define XCONST 264 +#define Op 265 +#define ICONST 266 +#define PARAM 267 +#define TYPECAST 268 +#define DOT_DOT 269 +#define COLON_EQUALS 270 +#define EQUALS_GREATER 271 +#define LESS_EQUALS 272 +#define GREATER_EQUALS 273 +#define NOT_EQUALS 274 +#define SQL_COMMENT 275 +#define C_COMMENT 276 +#define T_WORD 277 +#define T_CWORD 278 +#define T_DATUM 279 +#define LESS_LESS 280 +#define GREATER_GREATER 281 +#define K_ABSOLUTE 282 +#define K_ALIAS 283 +#define K_ALL 284 +#define K_AND 285 +#define K_ARRAY 286 +#define K_ASSERT 287 +#define K_BACKWARD 288 +#define K_BEGIN 289 +#define K_BY 290 +#define K_CALL 291 +#define K_CASE 292 +#define K_CHAIN 293 +#define K_CLOSE 294 +#define K_COLLATE 295 +#define K_COLUMN 296 +#define K_COLUMN_NAME 297 +#define K_COMMIT 298 +#define K_CONSTANT 299 +#define K_CONSTRAINT 300 +#define K_CONSTRAINT_NAME 301 +#define K_CONTINUE 302 +#define K_CURRENT 303 +#define K_CURSOR 304 +#define K_DATATYPE 305 +#define K_DEBUG 306 +#define K_DECLARE 307 +#define K_DEFAULT 308 +#define K_DETAIL 309 +#define K_DIAGNOSTICS 310 +#define K_DO 311 +#define K_DUMP 312 +#define K_ELSE 313 +#define K_ELSIF 314 +#define K_END 315 +#define K_ERRCODE 316 +#define K_ERROR 317 +#define K_EXCEPTION 318 +#define K_EXECUTE 319 +#define K_EXIT 320 +#define K_FETCH 321 +#define K_FIRST 322 +#define K_FOR 323 +#define K_FOREACH 324 +#define K_FORWARD 325 +#define K_FROM 326 +#define K_GET 327 +#define K_HINT 328 +#define K_IF 329 +#define K_IMPORT 330 +#define K_IN 331 +#define K_INFO 332 +#define K_INSERT 333 +#define K_INTO 334 +#define K_IS 335 +#define K_LAST 336 +#define K_LOG 337 +#define K_LOOP 338 +#define K_MESSAGE 339 +#define K_MESSAGE_TEXT 340 +#define K_MOVE 341 +#define K_NEXT 342 +#define K_NO 343 +#define K_NOT 344 +#define K_NOTICE 345 +#define K_NULL 346 +#define K_OPEN 347 +#define K_OPTION 348 +#define K_OR 349 +#define K_PERFORM 350 +#define K_PG_CONTEXT 351 +#define K_PG_DATATYPE_NAME 352 +#define K_PG_EXCEPTION_CONTEXT 353 +#define K_PG_EXCEPTION_DETAIL 354 +#define K_PG_EXCEPTION_HINT 355 +#define K_PRINT_STRICT_PARAMS 356 +#define K_PRIOR 357 +#define K_QUERY 358 +#define K_RAISE 359 +#define K_RELATIVE 360 +#define K_RESET 361 +#define K_RETURN 362 +#define K_RETURNED_SQLSTATE 363 +#define K_REVERSE 364 +#define K_ROLLBACK 365 +#define K_ROW_COUNT 366 +#define K_ROWTYPE 367 +#define K_SCHEMA 368 +#define K_SCHEMA_NAME 369 +#define K_SCROLL 370 +#define K_SET 371 +#define K_SLICE 372 +#define K_SQLSTATE 373 +#define K_STACKED 374 +#define K_STRICT 375 +#define K_TABLE 376 +#define K_TABLE_NAME 377 +#define K_THEN 378 +#define K_TO 379 +#define K_TYPE 380 +#define K_USE_COLUMN 381 +#define K_USE_VARIABLE 382 +#define K_USING 383 +#define K_VARIABLE_CONFLICT 384 +#define K_WARNING 385 +#define K_WHEN 386 +#define K_WHILE 387 + + + + +/* Copy the first part of user declarations. */ +#line 1 "pl_gram.y" /*------------------------------------------------------------------------- * * pl_gram.y - Parser for the PL/pgSQL procedural language * - * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * @@ -143,6 +410,7 @@ #include "postgres.h" #include "catalog/namespace.h" +#include "catalog/pg_proc.h" #include "catalog/pg_type.h" #include "parser/parser.h" #include "parser/parse_type.h" @@ -217,7 +485,7 @@ static PLpgSQL_stmt *make_case(int location, PLpgSQL_expr *t_expr, List *case_when_list, List *else_stmts); static char *NameOfDatum(PLwdatum *wdatum); static void check_assignable(PLpgSQL_datum *datum, int location); -static void read_into_target(PLpgSQL_rec **rec, PLpgSQL_row **row, +static void read_into_target(PLpgSQL_variable **target, bool *strict); static PLpgSQL_row *read_into_scalar_list(char *initial_name, PLpgSQL_datum *initial_datum, @@ -238,18 +506,11 @@ static List *read_raise_options(void); static void check_raise_parameters(PLpgSQL_stmt_raise *stmt); -#line 193 "pl_gram.c" /* yacc.c:337 */ -# ifndef YY_NULLPTR -# if defined __cplusplus -# if 201103L <= __cplusplus -# define YY_NULLPTR nullptr -# else -# define YY_NULLPTR 0 -# endif -# else -# define YY_NULLPTR ((void*)0) -# endif -# endif + +/* Enabling traces. */ +#ifndef YYDEBUG +# define YYDEBUG 0 +#endif /* Enabling verbose error messages. */ #ifdef YYERROR_VERBOSE @@ -259,152 +520,15 @@ static void check_raise_parameters(PLpgSQL_stmt_raise *stmt); # define YYERROR_VERBOSE 0 #endif -/* In a future release of Bison, this section will be replaced - by #include "pl_gram.h". */ -#ifndef YY_PLPGSQL_YY_PL_GRAM_H_INCLUDED -# define YY_PLPGSQL_YY_PL_GRAM_H_INCLUDED -/* Debug traces. */ -#ifndef YYDEBUG -# define YYDEBUG 0 -#endif -#if YYDEBUG -extern int plpgsql_yydebug; -#endif - -/* Token type. */ -#ifndef YYTOKENTYPE -# define YYTOKENTYPE - enum yytokentype - { - IDENT = 258, - FCONST = 259, - SCONST = 260, - BCONST = 261, - XCONST = 262, - Op = 263, - ICONST = 264, - PARAM = 265, - TYPECAST = 266, - DOT_DOT = 267, - COLON_EQUALS = 268, - EQUALS_GREATER = 269, - LESS_EQUALS = 270, - GREATER_EQUALS = 271, - NOT_EQUALS = 272, - T_WORD = 273, - T_CWORD = 274, - T_DATUM = 275, - LESS_LESS = 276, - GREATER_GREATER = 277, - K_ABSOLUTE = 278, - K_ALIAS = 279, - K_ALL = 280, - K_ARRAY = 281, - K_ASSERT = 282, - K_BACKWARD = 283, - K_BEGIN = 284, - K_BY = 285, - K_CASE = 286, - K_CLOSE = 287, - K_COLLATE = 288, - K_COLUMN = 289, - K_COLUMN_NAME = 290, - K_CONSTANT = 291, - K_CONSTRAINT = 292, - K_CONSTRAINT_NAME = 293, - K_CONTINUE = 294, - K_CURRENT = 295, - K_CURSOR = 296, - K_DATATYPE = 297, - K_DEBUG = 298, - K_DECLARE = 299, - K_DEFAULT = 300, - K_DETAIL = 301, - K_DIAGNOSTICS = 302, - K_DUMP = 303, - K_ELSE = 304, - K_ELSIF = 305, - K_END = 306, - K_ERRCODE = 307, - K_ERROR = 308, - K_EXCEPTION = 309, - K_EXECUTE = 310, - K_EXIT = 311, - K_FETCH = 312, - K_FIRST = 313, - K_FOR = 314, - K_FOREACH = 315, - K_FORWARD = 316, - K_FROM = 317, - K_GET = 318, - K_HINT = 319, - K_IF = 320, - K_IMPORT = 321, - K_IN = 322, - K_INFO = 323, - K_INSERT = 324, - K_INTO = 325, - K_IS = 326, - K_LAST = 327, - K_LOG = 328, - K_LOOP = 329, - K_MESSAGE = 330, - K_MESSAGE_TEXT = 331, - K_MOVE = 332, - K_NEXT = 333, - K_NO = 334, - K_NOT = 335, - K_NOTICE = 336, - K_NULL = 337, - K_OPEN = 338, - K_OPTION = 339, - K_OR = 340, - K_PERFORM = 341, - K_PG_CONTEXT = 342, - K_PG_DATATYPE_NAME = 343, - K_PG_EXCEPTION_CONTEXT = 344, - K_PG_EXCEPTION_DETAIL = 345, - K_PG_EXCEPTION_HINT = 346, - K_PRINT_STRICT_PARAMS = 347, - K_PRIOR = 348, - K_QUERY = 349, - K_RAISE = 350, - K_RELATIVE = 351, - K_RESULT_OID = 352, - K_RETURN = 353, - K_RETURNED_SQLSTATE = 354, - K_REVERSE = 355, - K_ROW_COUNT = 356, - K_ROWTYPE = 357, - K_SCHEMA = 358, - K_SCHEMA_NAME = 359, - K_SCROLL = 360, - K_SLICE = 361, - K_SQLSTATE = 362, - K_STACKED = 363, - K_STRICT = 364, - K_TABLE = 365, - K_TABLE_NAME = 366, - K_THEN = 367, - K_TO = 368, - K_TYPE = 369, - K_USE_COLUMN = 370, - K_USE_VARIABLE = 371, - K_USING = 372, - K_VARIABLE_CONFLICT = 373, - K_WARNING = 374, - K_WHEN = 375, - K_WHILE = 376 - }; +/* Enabling the token table. */ +#ifndef YYTOKEN_TABLE +# define YYTOKEN_TABLE 0 #endif -/* Value type. */ #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED - -union YYSTYPE +typedef union YYSTYPE +#line 120 "pl_gram.y" { -#line 119 "pl_gram.y" /* yacc.c:352 */ - core_YYSTYPE core_yystype; /* these fields must match core_YYSTYPE: */ int ival; @@ -426,8 +550,7 @@ union YYSTYPE char *name; int lineno; PLpgSQL_datum *scalar; - PLpgSQL_rec *rec; - PLpgSQL_row *row; + PLpgSQL_datum *row; } forvariable; struct { @@ -454,37 +577,34 @@ union YYSTYPE PLpgSQL_diag_item *diagitem; PLpgSQL_stmt_fetch *fetch; PLpgSQL_case_when *casewhen; - -#line 410 "pl_gram.c" /* yacc.c:352 */ -}; - -typedef union YYSTYPE YYSTYPE; -# define YYSTYPE_IS_TRIVIAL 1 +} +/* Line 193 of yacc.c. */ +#line 534 "pl_gram.c" + YYSTYPE; +# define yystype YYSTYPE /* obsolescent; will be withdrawn */ # define YYSTYPE_IS_DECLARED 1 +# define YYSTYPE_IS_TRIVIAL 1 #endif -/* Location type. */ #if ! defined YYLTYPE && ! defined YYLTYPE_IS_DECLARED -typedef struct YYLTYPE YYLTYPE; -struct YYLTYPE +typedef struct YYLTYPE { int first_line; int first_column; int last_line; int last_column; -}; +} YYLTYPE; +# define yyltype YYLTYPE /* obsolescent; will be withdrawn */ # define YYLTYPE_IS_DECLARED 1 # define YYLTYPE_IS_TRIVIAL 1 #endif -extern __thread YYSTYPE plpgsql_yylval; -extern __thread YYLTYPE plpgsql_yylloc; -int plpgsql_yyparse (void); - -#endif /* !YY_PLPGSQL_YY_PL_GRAM_H_INCLUDED */ +/* Copy the second part of user declarations. */ +/* Line 216 of yacc.c. */ +#line 559 "pl_gram.c" #ifdef short # undef short @@ -498,20 +618,23 @@ typedef unsigned char yytype_uint8; #ifdef YYTYPE_INT8 typedef YYTYPE_INT8 yytype_int8; -#else +#elif (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) typedef signed char yytype_int8; +#else +typedef short int yytype_int8; #endif #ifdef YYTYPE_UINT16 typedef YYTYPE_UINT16 yytype_uint16; #else -typedef unsigned short yytype_uint16; +typedef unsigned short int yytype_uint16; #endif #ifdef YYTYPE_INT16 typedef YYTYPE_INT16 yytype_int16; #else -typedef short yytype_int16; +typedef short int yytype_int16; #endif #ifndef YYSIZE_T @@ -519,11 +642,12 @@ typedef short yytype_int16; # define YYSIZE_T __SIZE_TYPE__ # elif defined size_t # define YYSIZE_T size_t -# elif ! defined YYSIZE_T +# elif ! defined YYSIZE_T && (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) # include /* INFRINGES ON USER NAME SPACE */ # define YYSIZE_T size_t # else -# define YYSIZE_T unsigned +# define YYSIZE_T unsigned int # endif #endif @@ -533,59 +657,39 @@ typedef short yytype_int16; # if defined YYENABLE_NLS && YYENABLE_NLS # if ENABLE_NLS # include /* INFRINGES ON USER NAME SPACE */ -# define YY_(Msgid) dgettext ("bison-runtime", Msgid) +# define YY_(msgid) dgettext ("bison-runtime", msgid) # endif # endif # ifndef YY_ -# define YY_(Msgid) Msgid -# endif -#endif - -#ifndef YY_ATTRIBUTE -# if (defined __GNUC__ \ - && (2 < __GNUC__ || (__GNUC__ == 2 && 96 <= __GNUC_MINOR__))) \ - || defined __SUNPRO_C && 0x5110 <= __SUNPRO_C -# define YY_ATTRIBUTE(Spec) __attribute__(Spec) -# else -# define YY_ATTRIBUTE(Spec) /* empty */ +# define YY_(msgid) msgid # endif #endif -#ifndef YY_ATTRIBUTE_PURE -# define YY_ATTRIBUTE_PURE YY_ATTRIBUTE ((__pure__)) -#endif - -#ifndef YY_ATTRIBUTE_UNUSED -# define YY_ATTRIBUTE_UNUSED YY_ATTRIBUTE ((__unused__)) -#endif - /* Suppress unused-variable warnings by "using" E. */ #if ! defined lint || defined __GNUC__ -# define YYUSE(E) ((void) (E)) +# define YYUSE(e) ((void) (e)) #else -# define YYUSE(E) /* empty */ +# define YYUSE(e) /* empty */ #endif -#if defined __GNUC__ && ! defined __ICC && 407 <= __GNUC__ * 100 + __GNUC_MINOR__ -/* Suppress an incorrect diagnostic about yylval being uninitialized. */ -# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \ - _Pragma ("GCC diagnostic push") \ - _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"")\ - _Pragma ("GCC diagnostic ignored \"-Wmaybe-uninitialized\"") -# define YY_IGNORE_MAYBE_UNINITIALIZED_END \ - _Pragma ("GCC diagnostic pop") +/* Identity function, used to suppress warnings about constant conditions. */ +#ifndef lint +# define YYID(n) (n) #else -# define YY_INITIAL_VALUE(Value) Value -#endif -#ifndef YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN -# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN -# define YY_IGNORE_MAYBE_UNINITIALIZED_END +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +static int +YYID (int i) +#else +static int +YYID (i) + int i; #endif -#ifndef YY_INITIAL_VALUE -# define YY_INITIAL_VALUE(Value) /* Nothing. */ +{ + return i; +} #endif - #if ! defined yyoverflow || YYERROR_VERBOSE /* The parser invokes alloca or malloc; define the necessary symbols. */ @@ -603,11 +707,11 @@ typedef short yytype_int16; # define alloca _alloca # else # define YYSTACK_ALLOC alloca -# if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS +# if ! defined _ALLOCA_H && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) # include /* INFRINGES ON USER NAME SPACE */ - /* Use EXIT_SUCCESS as a witness for stdlib.h. */ -# ifndef EXIT_SUCCESS -# define EXIT_SUCCESS 0 +# ifndef _STDLIB_H +# define _STDLIB_H 1 # endif # endif # endif @@ -615,8 +719,8 @@ typedef short yytype_int16; # endif # ifdef YYSTACK_ALLOC - /* Pacify GCC's 'empty if-body' warning. */ -# define YYSTACK_FREE(Ptr) do { /* empty */; } while (0) + /* Pacify GCC's `empty if-body' warning. */ +# define YYSTACK_FREE(Ptr) do { /* empty */; } while (YYID (0)) # ifndef YYSTACK_ALLOC_MAXIMUM /* The OS might guarantee only one guard page at the bottom of the stack, and a page size can be as small as 4096 bytes. So we cannot safely @@ -630,23 +734,25 @@ typedef short yytype_int16; # ifndef YYSTACK_ALLOC_MAXIMUM # define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM # endif -# if (defined __cplusplus && ! defined EXIT_SUCCESS \ +# if (defined __cplusplus && ! defined _STDLIB_H \ && ! ((defined YYMALLOC || defined malloc) \ - && (defined YYFREE || defined free))) + && (defined YYFREE || defined free))) # include /* INFRINGES ON USER NAME SPACE */ -# ifndef EXIT_SUCCESS -# define EXIT_SUCCESS 0 +# ifndef _STDLIB_H +# define _STDLIB_H 1 # endif # endif # ifndef YYMALLOC # define YYMALLOC malloc -# if ! defined malloc && ! defined EXIT_SUCCESS +# if ! defined malloc && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */ # endif # endif # ifndef YYFREE # define YYFREE free -# if ! defined free && ! defined EXIT_SUCCESS +# if ! defined free && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) void free (void *); /* INFRINGES ON USER NAME SPACE */ # endif # endif @@ -656,15 +762,15 @@ void free (void *); /* INFRINGES ON USER NAME SPACE */ #if (! defined yyoverflow \ && (! defined __cplusplus \ - || (defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL \ - && defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL))) + || (defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL \ + && defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL))) /* A type that is properly aligned for any stack member. */ union yyalloc { - yytype_int16 yyss_alloc; - YYSTYPE yyvs_alloc; - YYLTYPE yyls_alloc; + yytype_int16 yyss; + YYSTYPE yyvs; + YYLTYPE yyls; }; /* The size of the maximum gap between one aligned stack and the next. */ @@ -676,82 +782,76 @@ union yyalloc ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE) + sizeof (YYLTYPE)) \ + 2 * YYSTACK_GAP_MAXIMUM) -# define YYCOPY_NEEDED 1 +/* Copy COUNT objects from FROM to TO. The source and destination do + not overlap. */ +# ifndef YYCOPY +# if defined __GNUC__ && 1 < __GNUC__ +# define YYCOPY(To, From, Count) \ + __builtin_memcpy (To, From, (Count) * sizeof (*(From))) +# else +# define YYCOPY(To, From, Count) \ + do \ + { \ + YYSIZE_T yyi; \ + for (yyi = 0; yyi < (Count); yyi++) \ + (To)[yyi] = (From)[yyi]; \ + } \ + while (YYID (0)) +# endif +# endif /* Relocate STACK from its old location to the new one. The local variables YYSIZE and YYSTACKSIZE give the old and new number of elements in the stack, and YYPTR gives the new location of the stack. Advance YYPTR to a properly aligned location for the next stack. */ -# define YYSTACK_RELOCATE(Stack_alloc, Stack) \ - do \ - { \ - YYSIZE_T yynewbytes; \ - YYCOPY (&yyptr->Stack_alloc, Stack, yysize); \ - Stack = &yyptr->Stack_alloc; \ - yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \ - yyptr += yynewbytes / sizeof (*yyptr); \ - } \ - while (0) +# define YYSTACK_RELOCATE(Stack) \ + do \ + { \ + YYSIZE_T yynewbytes; \ + YYCOPY (&yyptr->Stack, Stack, yysize); \ + Stack = &yyptr->Stack; \ + yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \ + yyptr += yynewbytes / sizeof (*yyptr); \ + } \ + while (YYID (0)) #endif -#if defined YYCOPY_NEEDED && YYCOPY_NEEDED -/* Copy COUNT objects from SRC to DST. The source and destination do - not overlap. */ -# ifndef YYCOPY -# if defined __GNUC__ && 1 < __GNUC__ -# define YYCOPY(Dst, Src, Count) \ - __builtin_memcpy (Dst, Src, (Count) * sizeof (*(Src))) -# else -# define YYCOPY(Dst, Src, Count) \ - do \ - { \ - YYSIZE_T yyi; \ - for (yyi = 0; yyi < (Count); yyi++) \ - (Dst)[yyi] = (Src)[yyi]; \ - } \ - while (0) -# endif -# endif -#endif /* !YYCOPY_NEEDED */ - /* YYFINAL -- State number of the termination state. */ #define YYFINAL 3 /* YYLAST -- Last index in YYTABLE. */ -#define YYLAST 1205 +#define YYLAST 1465 /* YYNTOKENS -- Number of terminals. */ -#define YYNTOKENS 129 +#define YYNTOKENS 140 /* YYNNTS -- Number of nonterminals. */ -#define YYNNTS 85 +#define YYNNTS 90 /* YYNRULES -- Number of rules. */ -#define YYNRULES 238 -/* YYNSTATES -- Number of states. */ -#define YYNSTATES 317 +#define YYNRULES 258 +/* YYNRULES -- Number of states. */ +#define YYNSTATES 342 +/* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */ #define YYUNDEFTOK 2 -#define YYMAXUTOK 376 +#define YYMAXUTOK 387 -/* YYTRANSLATE(TOKEN-NUM) -- Symbol number corresponding to TOKEN-NUM - as returned by yylex, with out-of-bounds checking. */ -#define YYTRANSLATE(YYX) \ - ((unsigned) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK) +#define YYTRANSLATE(YYX) \ + ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK) -/* YYTRANSLATE[TOKEN-NUM] -- Symbol number corresponding to TOKEN-NUM - as returned by yylex. */ +/* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX. */ static const yytype_uint8 yytranslate[] = { 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 122, 2, 2, 2, 2, - 124, 125, 2, 2, 126, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 123, - 2, 127, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 133, 2, 2, 2, 2, + 135, 136, 2, 2, 137, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 134, + 2, 138, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 128, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 139, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, @@ -779,96 +879,201 @@ static const yytype_uint8 yytranslate[] = 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, - 115, 116, 117, 118, 119, 120, 121 + 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, + 125, 126, 127, 128, 129, 130, 131, 132 }; #if YYDEBUG - /* YYRLINE[YYN] -- Source line where rule number YYN was defined. */ +/* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in + YYRHS. */ +static const yytype_uint16 yyprhs[] = +{ + 0, 0, 3, 7, 8, 11, 15, 19, 23, 27, + 31, 33, 35, 36, 38, 45, 47, 50, 54, 56, + 59, 61, 63, 65, 69, 76, 82, 83, 91, 92, + 95, 97, 98, 99, 103, 105, 109, 112, 114, 116, + 118, 120, 122, 124, 126, 127, 129, 130, 131, 134, + 137, 140, 141, 144, 146, 148, 150, 152, 154, 156, + 157, 160, 163, 165, 167, 169, 171, 173, 175, 177, + 179, 181, 183, 185, 187, 189, 191, 193, 195, 197, + 199, 201, 203, 205, 207, 209, 211, 214, 216, 218, + 222, 228, 229, 231, 233, 237, 239, 243, 244, 246, + 248, 250, 252, 256, 265, 266, 271, 272, 275, 283, + 284, 287, 289, 293, 294, 297, 301, 306, 311, 314, + 316, 318, 320, 329, 330, 333, 337, 339, 341, 343, + 345, 347, 353, 355, 357, 359, 361, 363, 366, 371, + 376, 377, 381, 384, 388, 392, 395, 399, 400, 402, + 404, 406, 408, 410, 411, 412, 416, 419, 421, 426, + 430, 432, 434, 435, 436, 437, 438, 439, 443, 444, + 448, 449, 451, 453, 456, 458, 460, 462, 464, 466, + 468, 470, 472, 474, 476, 478, 480, 482, 484, 486, + 488, 490, 492, 494, 496, 498, 500, 502, 504, 506, + 508, 510, 512, 514, 516, 518, 520, 522, 524, 526, + 528, 530, 532, 534, 536, 538, 540, 542, 544, 546, + 548, 550, 552, 554, 556, 558, 560, 562, 564, 566, + 568, 570, 572, 574, 576, 578, 580, 582, 584, 586, + 588, 590, 592, 594, 596, 598, 600, 602, 604, 606, + 608, 610, 612, 614, 616, 618, 620, 622, 624 +}; + +/* YYRHS -- A `-1'-separated list of the rules' RHS. */ +static const yytype_int16 yyrhs[] = +{ + 141, 0, -1, 142, 146, 145, -1, -1, 142, 143, + -1, 133, 93, 57, -1, 133, 101, 144, -1, 133, + 129, 62, -1, 133, 129, 127, -1, 133, 129, 126, + -1, 22, -1, 229, -1, -1, 134, -1, 147, 34, + 168, 214, 60, 226, -1, 224, -1, 224, 148, -1, + 224, 148, 149, -1, 52, -1, 149, 150, -1, 150, + -1, 151, -1, 52, -1, 25, 228, 26, -1, 160, + 161, 162, 163, 164, 165, -1, 160, 28, 68, 159, + 134, -1, -1, 160, 153, 49, 152, 155, 158, 154, + -1, -1, 88, 115, -1, 115, -1, -1, -1, 135, + 156, 136, -1, 157, -1, 156, 137, 157, -1, 160, + 162, -1, 80, -1, 68, -1, 22, -1, 229, -1, + 23, -1, 22, -1, 229, -1, -1, 44, -1, -1, + -1, 40, 22, -1, 40, 229, -1, 40, 23, -1, + -1, 89, 91, -1, 134, -1, 166, -1, 167, -1, + 53, -1, 138, -1, 15, -1, -1, 168, 169, -1, + 146, 134, -1, 172, -1, 180, -1, 183, -1, 188, + -1, 189, -1, 190, -1, 193, -1, 195, -1, 197, + -1, 198, -1, 199, -1, 201, -1, 202, -1, 170, + -1, 171, -1, 173, -1, 203, -1, 204, -1, 205, + -1, 207, -1, 208, -1, 209, -1, 210, -1, 212, + -1, 95, 220, -1, 36, -1, 56, -1, 179, 167, + 220, -1, 72, 174, 55, 175, 134, -1, -1, 48, + -1, 119, -1, 175, 137, 176, -1, 176, -1, 178, + 167, 177, -1, -1, 179, -1, 22, -1, 23, -1, + 24, -1, 179, 139, 221, -1, 74, 222, 168, 181, + 182, 60, 74, 134, -1, -1, 181, 59, 222, 168, + -1, -1, 58, 168, -1, 37, 184, 185, 187, 60, + 37, 134, -1, -1, 185, 186, -1, 186, -1, 131, + 222, 168, -1, -1, 58, 168, -1, 225, 83, 200, + -1, 225, 132, 223, 200, -1, 225, 68, 191, 200, + -1, 192, 76, -1, 24, -1, 22, -1, 23, -1, + 225, 69, 192, 194, 76, 31, 223, 200, -1, -1, + 117, 11, -1, 196, 226, 227, -1, 65, -1, 47, + -1, 107, -1, 104, -1, 32, -1, 168, 60, 83, + 226, 134, -1, 75, -1, 78, -1, 22, -1, 23, + -1, 64, -1, 92, 213, -1, 66, 206, 213, 79, + -1, 86, 206, 213, 134, -1, -1, 39, 213, 134, + -1, 91, 134, -1, 43, 211, 134, -1, 110, 211, + 134, -1, 30, 38, -1, 30, 88, 38, -1, -1, + 116, -1, 106, -1, 24, -1, 22, -1, 23, -1, + -1, -1, 63, 215, 216, -1, 216, 217, -1, 217, + -1, 131, 218, 123, 168, -1, 218, 94, 219, -1, + 219, -1, 228, -1, -1, -1, -1, -1, -1, 25, + 228, 26, -1, -1, 25, 228, 26, -1, -1, 228, + -1, 134, -1, 131, 220, -1, 22, -1, 229, -1, + 24, -1, 27, -1, 28, -1, 30, -1, 31, -1, + 32, -1, 33, -1, 36, -1, 38, -1, 39, -1, + 40, -1, 41, -1, 42, -1, 43, -1, 44, -1, + 45, -1, 46, -1, 47, -1, 48, -1, 49, -1, + 50, -1, 51, -1, 53, -1, 54, -1, 55, -1, + 56, -1, 57, -1, 59, -1, 61, -1, 62, -1, + 63, -1, 65, -1, 66, -1, 67, -1, 70, -1, + 72, -1, 73, -1, 75, -1, 77, -1, 78, -1, + 80, -1, 81, -1, 82, -1, 84, -1, 85, -1, + 86, -1, 87, -1, 88, -1, 90, -1, 92, -1, + 93, -1, 95, -1, 96, -1, 97, -1, 98, -1, + 99, -1, 100, -1, 101, -1, 102, -1, 103, -1, + 104, -1, 105, -1, 106, -1, 107, -1, 108, -1, + 109, -1, 110, -1, 111, -1, 112, -1, 113, -1, + 114, -1, 115, -1, 116, -1, 117, -1, 118, -1, + 119, -1, 121, -1, 122, -1, 125, -1, 126, -1, + 127, -1, 129, -1, 130, -1 +}; + +/* YYRLINE[YYN] -- source line where rule number YYN was defined. */ static const yytype_uint16 yyrline[] = { - 0, 353, 353, 359, 360, 363, 367, 376, 380, 384, - 390, 394, 399, 400, 403, 425, 433, 440, 449, 461, - 462, 465, 466, 470, 483, 538, 544, 543, 596, 599, - 603, 610, 616, 619, 648, 652, 658, 666, 667, 669, - 684, 699, 727, 755, 786, 787, 792, 803, 804, 809, - 814, 821, 822, 826, 828, 834, 835, 843, 844, 848, - 849, 859, 861, 863, 865, 867, 869, 871, 873, 875, - 877, 879, 881, 883, 885, 887, 889, 891, 893, 895, - 897, 899, 903, 916, 930, 993, 996, 1000, 1006, 1010, - 1016, 1029, 1076, 1087, 1092, 1100, 1105, 1122, 1139, 1142, - 1156, 1159, 1165, 1172, 1186, 1190, 1196, 1208, 1211, 1226, - 1243, 1261, 1295, 1557, 1589, 1604, 1611, 1654, 1657, 1663, - 1715, 1719, 1725, 1751, 1895, 1918, 1936, 1940, 1944, 1954, - 1966, 2030, 2107, 2139, 2152, 2157, 2170, 2177, 2199, 2204, - 2212, 2214, 2213, 2253, 2257, 2263, 2276, 2285, 2291, 2328, - 2332, 2336, 2340, 2344, 2348, 2356, 2360, 2368, 2371, 2378, - 2380, 2387, 2391, 2395, 2404, 2405, 2406, 2407, 2408, 2409, - 2410, 2411, 2412, 2413, 2414, 2415, 2416, 2417, 2418, 2419, - 2420, 2421, 2422, 2423, 2424, 2425, 2426, 2427, 2428, 2429, - 2430, 2431, 2432, 2433, 2434, 2435, 2436, 2437, 2438, 2439, - 2440, 2441, 2442, 2443, 2444, 2445, 2446, 2447, 2448, 2449, - 2450, 2451, 2452, 2453, 2454, 2455, 2456, 2457, 2458, 2459, - 2460, 2461, 2462, 2463, 2464, 2465, 2466, 2467, 2468, 2469, - 2470, 2471, 2472, 2473, 2474, 2475, 2476, 2477, 2478 + 0, 364, 364, 370, 371, 374, 378, 387, 391, 395, + 401, 405, 410, 411, 414, 437, 445, 452, 461, 473, + 474, 477, 478, 482, 495, 533, 539, 538, 591, 594, + 598, 605, 611, 614, 645, 649, 655, 663, 664, 666, + 681, 696, 724, 752, 783, 784, 789, 800, 801, 806, + 811, 818, 819, 823, 825, 831, 832, 840, 841, 845, + 846, 856, 858, 860, 862, 864, 866, 868, 870, 872, + 874, 876, 878, 880, 882, 884, 886, 888, 890, 892, + 894, 896, 898, 900, 902, 904, 908, 922, 936, 953, + 968, 1031, 1034, 1038, 1044, 1048, 1054, 1067, 1111, 1122, + 1127, 1135, 1140, 1157, 1175, 1178, 1192, 1195, 1201, 1208, + 1222, 1226, 1232, 1244, 1247, 1262, 1280, 1299, 1333, 1595, + 1621, 1635, 1642, 1681, 1684, 1690, 1743, 1747, 1753, 1779, + 1924, 1948, 1966, 1970, 1974, 1984, 1996, 2060, 2138, 2168, + 2181, 2186, 2200, 2207, 2221, 2236, 2237, 2238, 2241, 2254, + 2269, 2291, 2296, 2304, 2306, 2305, 2347, 2351, 2357, 2370, + 2379, 2385, 2422, 2426, 2430, 2434, 2438, 2442, 2450, 2454, + 2462, 2465, 2472, 2474, 2481, 2485, 2489, 2498, 2499, 2500, + 2501, 2502, 2503, 2504, 2505, 2506, 2507, 2508, 2509, 2510, + 2511, 2512, 2513, 2514, 2515, 2516, 2517, 2518, 2519, 2520, + 2521, 2522, 2523, 2524, 2525, 2526, 2527, 2528, 2529, 2530, + 2531, 2532, 2533, 2534, 2535, 2536, 2537, 2538, 2539, 2540, + 2541, 2542, 2543, 2544, 2545, 2546, 2547, 2548, 2549, 2550, + 2551, 2552, 2553, 2554, 2555, 2556, 2557, 2558, 2559, 2560, + 2561, 2562, 2563, 2564, 2565, 2566, 2567, 2568, 2569, 2570, + 2571, 2572, 2573, 2574, 2575, 2576, 2577, 2578, 2579 }; #endif -#if YYDEBUG || YYERROR_VERBOSE || 0 +#if YYDEBUG || YYERROR_VERBOSE || YYTOKEN_TABLE /* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM. First, the terminals, then, starting at YYNTOKENS, nonterminals. */ static const char *const yytname[] = { - "$end", "error", "$undefined", "IDENT", "FCONST", "SCONST", "BCONST", - "XCONST", "Op", "ICONST", "PARAM", "TYPECAST", "DOT_DOT", "COLON_EQUALS", - "EQUALS_GREATER", "LESS_EQUALS", "GREATER_EQUALS", "NOT_EQUALS", - "T_WORD", "T_CWORD", "T_DATUM", "LESS_LESS", "GREATER_GREATER", - "K_ABSOLUTE", "K_ALIAS", "K_ALL", "K_ARRAY", "K_ASSERT", "K_BACKWARD", - "K_BEGIN", "K_BY", "K_CASE", "K_CLOSE", "K_COLLATE", "K_COLUMN", - "K_COLUMN_NAME", "K_CONSTANT", "K_CONSTRAINT", "K_CONSTRAINT_NAME", - "K_CONTINUE", "K_CURRENT", "K_CURSOR", "K_DATATYPE", "K_DEBUG", - "K_DECLARE", "K_DEFAULT", "K_DETAIL", "K_DIAGNOSTICS", "K_DUMP", - "K_ELSE", "K_ELSIF", "K_END", "K_ERRCODE", "K_ERROR", "K_EXCEPTION", - "K_EXECUTE", "K_EXIT", "K_FETCH", "K_FIRST", "K_FOR", "K_FOREACH", - "K_FORWARD", "K_FROM", "K_GET", "K_HINT", "K_IF", "K_IMPORT", "K_IN", - "K_INFO", "K_INSERT", "K_INTO", "K_IS", "K_LAST", "K_LOG", "K_LOOP", - "K_MESSAGE", "K_MESSAGE_TEXT", "K_MOVE", "K_NEXT", "K_NO", "K_NOT", - "K_NOTICE", "K_NULL", "K_OPEN", "K_OPTION", "K_OR", "K_PERFORM", - "K_PG_CONTEXT", "K_PG_DATATYPE_NAME", "K_PG_EXCEPTION_CONTEXT", - "K_PG_EXCEPTION_DETAIL", "K_PG_EXCEPTION_HINT", "K_PRINT_STRICT_PARAMS", - "K_PRIOR", "K_QUERY", "K_RAISE", "K_RELATIVE", "K_RESULT_OID", - "K_RETURN", "K_RETURNED_SQLSTATE", "K_REVERSE", "K_ROW_COUNT", - "K_ROWTYPE", "K_SCHEMA", "K_SCHEMA_NAME", "K_SCROLL", "K_SLICE", - "K_SQLSTATE", "K_STACKED", "K_STRICT", "K_TABLE", "K_TABLE_NAME", - "K_THEN", "K_TO", "K_TYPE", "K_USE_COLUMN", "K_USE_VARIABLE", "K_USING", - "K_VARIABLE_CONFLICT", "K_WARNING", "K_WHEN", "K_WHILE", "'#'", "';'", - "'('", "')'", "','", "'='", "'['", "$accept", "pl_function", - "comp_options", "comp_option", "option_value", "opt_semi", "pl_block", - "decl_sect", "decl_start", "decl_stmts", "decl_stmt", "decl_statement", - "$@1", "opt_scrollable", "decl_cursor_query", "decl_cursor_args", - "decl_cursor_arglist", "decl_cursor_arg", "decl_is_for", - "decl_aliasitem", "decl_varname", "decl_const", "decl_datatype", - "decl_collate", "decl_notnull", "decl_defval", "decl_defkey", - "assign_operator", "proc_sect", "proc_stmt", "stmt_perform", - "stmt_assign", "stmt_getdiag", "getdiag_area_opt", "getdiag_list", - "getdiag_list_item", "getdiag_item", "getdiag_target", "assign_var", - "stmt_if", "stmt_elsifs", "stmt_else", "stmt_case", - "opt_expr_until_when", "case_when_list", "case_when", "opt_case_else", - "stmt_loop", "stmt_while", "stmt_for", "for_control", "for_variable", - "stmt_foreach_a", "foreach_slice", "stmt_exit", "exit_type", - "stmt_return", "stmt_raise", "stmt_assert", "loop_body", "stmt_execsql", - "stmt_dynexecute", "stmt_open", "stmt_fetch", "stmt_move", - "opt_fetch_direction", "stmt_close", "stmt_null", "cursor_variable", - "exception_sect", "@2", "proc_exceptions", "proc_exception", - "proc_conditions", "proc_condition", "expr_until_semi", + "$end", "error", "$undefined", "IDENT", "UIDENT", "FCONST", "SCONST", + "USCONST", "BCONST", "XCONST", "Op", "ICONST", "PARAM", "TYPECAST", + "DOT_DOT", "COLON_EQUALS", "EQUALS_GREATER", "LESS_EQUALS", + "GREATER_EQUALS", "NOT_EQUALS", "SQL_COMMENT", "C_COMMENT", "T_WORD", + "T_CWORD", "T_DATUM", "LESS_LESS", "GREATER_GREATER", "K_ABSOLUTE", + "K_ALIAS", "K_ALL", "K_AND", "K_ARRAY", "K_ASSERT", "K_BACKWARD", + "K_BEGIN", "K_BY", "K_CALL", "K_CASE", "K_CHAIN", "K_CLOSE", "K_COLLATE", + "K_COLUMN", "K_COLUMN_NAME", "K_COMMIT", "K_CONSTANT", "K_CONSTRAINT", + "K_CONSTRAINT_NAME", "K_CONTINUE", "K_CURRENT", "K_CURSOR", "K_DATATYPE", + "K_DEBUG", "K_DECLARE", "K_DEFAULT", "K_DETAIL", "K_DIAGNOSTICS", "K_DO", + "K_DUMP", "K_ELSE", "K_ELSIF", "K_END", "K_ERRCODE", "K_ERROR", + "K_EXCEPTION", "K_EXECUTE", "K_EXIT", "K_FETCH", "K_FIRST", "K_FOR", + "K_FOREACH", "K_FORWARD", "K_FROM", "K_GET", "K_HINT", "K_IF", + "K_IMPORT", "K_IN", "K_INFO", "K_INSERT", "K_INTO", "K_IS", "K_LAST", + "K_LOG", "K_LOOP", "K_MESSAGE", "K_MESSAGE_TEXT", "K_MOVE", "K_NEXT", + "K_NO", "K_NOT", "K_NOTICE", "K_NULL", "K_OPEN", "K_OPTION", "K_OR", + "K_PERFORM", "K_PG_CONTEXT", "K_PG_DATATYPE_NAME", + "K_PG_EXCEPTION_CONTEXT", "K_PG_EXCEPTION_DETAIL", "K_PG_EXCEPTION_HINT", + "K_PRINT_STRICT_PARAMS", "K_PRIOR", "K_QUERY", "K_RAISE", "K_RELATIVE", + "K_RESET", "K_RETURN", "K_RETURNED_SQLSTATE", "K_REVERSE", "K_ROLLBACK", + "K_ROW_COUNT", "K_ROWTYPE", "K_SCHEMA", "K_SCHEMA_NAME", "K_SCROLL", + "K_SET", "K_SLICE", "K_SQLSTATE", "K_STACKED", "K_STRICT", "K_TABLE", + "K_TABLE_NAME", "K_THEN", "K_TO", "K_TYPE", "K_USE_COLUMN", + "K_USE_VARIABLE", "K_USING", "K_VARIABLE_CONFLICT", "K_WARNING", + "K_WHEN", "K_WHILE", "'#'", "';'", "'('", "')'", "','", "'='", "'['", + "$accept", "pl_function", "comp_options", "comp_option", "option_value", + "opt_semi", "pl_block", "decl_sect", "decl_start", "decl_stmts", + "decl_stmt", "decl_statement", "@1", "opt_scrollable", + "decl_cursor_query", "decl_cursor_args", "decl_cursor_arglist", + "decl_cursor_arg", "decl_is_for", "decl_aliasitem", "decl_varname", + "decl_const", "decl_datatype", "decl_collate", "decl_notnull", + "decl_defval", "decl_defkey", "assign_operator", "proc_sect", + "proc_stmt", "stmt_perform", "stmt_call", "stmt_assign", "stmt_getdiag", + "getdiag_area_opt", "getdiag_list", "getdiag_list_item", "getdiag_item", + "getdiag_target", "assign_var", "stmt_if", "stmt_elsifs", "stmt_else", + "stmt_case", "opt_expr_until_when", "case_when_list", "case_when", + "opt_case_else", "stmt_loop", "stmt_while", "stmt_for", "for_control", + "for_variable", "stmt_foreach_a", "foreach_slice", "stmt_exit", + "exit_type", "stmt_return", "stmt_raise", "stmt_assert", "loop_body", + "stmt_execsql", "stmt_dynexecute", "stmt_open", "stmt_fetch", + "stmt_move", "opt_fetch_direction", "stmt_close", "stmt_null", + "stmt_commit", "stmt_rollback", "opt_transaction_chain", "stmt_set", + "cursor_variable", "exception_sect", "@2", "proc_exceptions", + "proc_exception", "proc_conditions", "proc_condition", "expr_until_semi", "expr_until_rightbracket", "expr_until_then", "expr_until_loop", "opt_block_label", "opt_loop_label", "opt_label", "opt_exitcond", - "any_identifier", "unreserved_keyword", YY_NULLPTR + "any_identifier", "unreserved_keyword", 0 }; #endif # ifdef YYPRINT -/* YYTOKNUM[NUM] -- (External) token number corresponding to the - (internal) symbol number NUM (which must be that of a token). */ +/* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to + token YYLEX-NUM. */ static const yytype_uint16 yytoknum[] = { 0, 256, 257, 258, 259, 260, 261, 262, 263, 264, @@ -883,550 +1088,598 @@ static const yytype_uint16 yytoknum[] = 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, - 375, 376, 35, 59, 40, 41, 44, 61, 91 + 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, + 385, 386, 387, 35, 59, 40, 41, 44, 61, 91 }; # endif -#define YYPACT_NINF -245 - -#define yypact_value_is_default(Yystate) \ - (!!((Yystate) == (-245))) - -#define YYTABLE_NINF -155 +/* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ +static const yytype_uint8 yyr1[] = +{ + 0, 140, 141, 142, 142, 143, 143, 143, 143, 143, + 144, 144, 145, 145, 146, 147, 147, 147, 148, 149, + 149, 150, 150, 150, 151, 151, 152, 151, 153, 153, + 153, 154, 155, 155, 156, 156, 157, 158, 158, 159, + 159, 159, 160, 160, 161, 161, 162, 163, 163, 163, + 163, 164, 164, 165, 165, 166, 166, 167, 167, 168, + 168, 169, 169, 169, 169, 169, 169, 169, 169, 169, + 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, + 169, 169, 169, 169, 169, 169, 170, 171, 171, 172, + 173, 174, 174, 174, 175, 175, 176, 177, 178, 178, + 178, 179, 179, 180, 181, 181, 182, 182, 183, 184, + 185, 185, 186, 187, 187, 188, 189, 190, 191, 192, + 192, 192, 193, 194, 194, 195, 196, 196, 197, 198, + 199, 200, 201, 201, 201, 201, 202, 203, 204, 205, + 206, 207, 208, 209, 210, 211, 211, 211, 212, 212, + 213, 213, 213, 214, 215, 214, 216, 216, 217, 218, + 218, 219, 220, 221, 222, 223, 224, 224, 225, 225, + 226, 226, 227, 227, 228, 228, 228, 229, 229, 229, + 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, + 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, + 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, + 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, + 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, + 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, + 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, + 229, 229, 229, 229, 229, 229, 229, 229, 229 +}; -#define yytable_value_is_error(Yytable_value) \ - 0 +/* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */ +static const yytype_uint8 yyr2[] = +{ + 0, 2, 3, 0, 2, 3, 3, 3, 3, 3, + 1, 1, 0, 1, 6, 1, 2, 3, 1, 2, + 1, 1, 1, 3, 6, 5, 0, 7, 0, 2, + 1, 0, 0, 3, 1, 3, 2, 1, 1, 1, + 1, 1, 1, 1, 0, 1, 0, 0, 2, 2, + 2, 0, 2, 1, 1, 1, 1, 1, 1, 0, + 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 2, 1, 1, 3, + 5, 0, 1, 1, 3, 1, 3, 0, 1, 1, + 1, 1, 3, 8, 0, 4, 0, 2, 7, 0, + 2, 1, 3, 0, 2, 3, 4, 4, 2, 1, + 1, 1, 8, 0, 2, 3, 1, 1, 1, 1, + 1, 5, 1, 1, 1, 1, 1, 2, 4, 4, + 0, 3, 2, 3, 3, 2, 3, 0, 1, 1, + 1, 1, 1, 0, 0, 3, 2, 1, 4, 3, + 1, 1, 0, 0, 0, 0, 0, 3, 0, 3, + 0, 1, 1, 2, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1 +}; - /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing - STATE-NUM. */ -static const yytype_int16 yypact[] = +/* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state + STATE-NUM when YYTABLE doesn't specify something else to do. Zero + means the default is an error. */ +static const yytype_uint16 yydefact[] = { - -245, 42, -18, -245, 303, -57, -245, -75, 24, 22, - -245, -245, -245, -245, -245, -245, -245, -245, -245, -245, - -245, -245, -245, -245, -245, -245, -245, -245, -245, -245, - -245, -245, -245, -245, -245, -245, -245, -245, -245, -245, - -245, -245, -245, -245, -245, -245, -245, -245, -245, -245, - -245, -245, -245, -245, -245, -245, -245, -245, -245, -245, - -245, -245, -245, -245, -245, -245, -245, -245, -245, -245, - -245, -245, -245, -245, -245, -245, -245, -245, -245, -245, - -245, -245, -245, -245, -245, -245, -245, 51, -245, 16, - 606, -29, -245, -245, -245, -245, 201, -245, -245, -245, - -245, -245, -245, -245, -245, 927, -245, 303, -245, 201, - -245, -245, -5, -245, -245, -245, -245, 303, -245, -245, - 76, -245, -245, -245, -245, -245, -23, -245, -245, -245, - -245, -48, 76, -245, -245, -245, -41, -245, -245, -245, - -245, -11, -245, -245, -245, -245, -245, -245, -245, 303, - -245, -245, -245, -245, -245, -245, -245, -245, -245, -245, - 33, -20, 66, -245, 31, -245, -3, -245, 57, -245, - 86, -9, -245, -245, -245, -14, -2, 76, -245, -245, - 65, -245, 76, -245, -245, -245, -245, -245, -245, -245, - -245, -79, -245, 303, 87, 87, -245, -245, -245, 405, - -245, -245, 91, 3, -245, -39, -245, -245, 303, -2, - -245, 55, 103, 807, 4, -245, -245, -245, -245, -245, - -245, -245, -245, -245, -245, 59, 27, 987, -245, -245, - -245, -245, 5, -245, 10, 507, 56, -245, -245, -245, - 84, -56, -245, -245, -245, -245, -245, -245, -58, -245, - -7, 9, 20, -245, -245, -245, -245, 130, 74, 70, - -245, -245, 705, -13, -245, -245, -245, 63, -8, -6, - 1047, 118, 303, -245, -245, 103, -245, -245, -245, 100, - -245, 126, 303, -47, -245, -245, -245, -245, -245, -245, - -245, -245, -245, -245, -245, 30, -245, 111, -245, -245, - 1107, -245, 89, -245, 34, -245, 705, -245, -245, -245, - 867, 35, -245, -245, -245, -245, -245 + 3, 0, 166, 1, 0, 0, 4, 12, 0, 15, + 174, 176, 177, 178, 179, 180, 181, 182, 183, 184, + 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, + 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, + 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, + 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, + 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, + 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, + 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, + 255, 256, 257, 258, 0, 175, 0, 0, 0, 13, + 2, 59, 18, 16, 167, 5, 10, 6, 11, 7, + 9, 8, 168, 42, 0, 22, 17, 20, 21, 44, + 43, 134, 135, 101, 0, 130, 87, 109, 0, 147, + 127, 88, 154, 136, 126, 140, 91, 164, 132, 133, + 140, 0, 0, 162, 129, 149, 128, 147, 148, 0, + 60, 75, 76, 62, 77, 0, 63, 64, 65, 66, + 67, 68, 69, 170, 70, 71, 72, 73, 74, 78, + 79, 80, 81, 82, 83, 84, 85, 0, 0, 0, + 19, 0, 45, 0, 30, 0, 46, 0, 0, 151, + 152, 150, 0, 0, 0, 0, 0, 92, 93, 0, + 59, 0, 142, 137, 86, 0, 61, 58, 57, 163, + 162, 0, 171, 170, 0, 0, 59, 165, 23, 0, + 29, 26, 47, 169, 164, 113, 111, 141, 145, 0, + 143, 0, 155, 157, 0, 0, 168, 0, 144, 102, + 89, 162, 172, 125, 14, 120, 121, 119, 59, 0, + 123, 168, 115, 59, 39, 41, 0, 40, 32, 0, + 51, 59, 59, 110, 0, 146, 0, 160, 161, 156, + 138, 99, 100, 0, 95, 0, 98, 106, 139, 173, + 117, 118, 0, 0, 0, 116, 25, 0, 0, 48, + 50, 49, 0, 0, 168, 168, 0, 0, 59, 90, + 0, 97, 59, 164, 0, 124, 0, 170, 0, 34, + 46, 38, 37, 31, 52, 56, 53, 24, 54, 55, + 0, 159, 168, 94, 96, 168, 59, 0, 165, 0, + 33, 0, 36, 27, 108, 168, 0, 59, 131, 35, + 103, 122 }; - /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM. - Performed when YYTABLE does not specify something else to do. Zero - means the default is an error. */ -static const yytype_uint8 yydefact[] = +/* YYDEFGOTO[NTERM-NUM]. */ +static const yytype_int16 yydefgoto[] = { - 3, 0, 153, 1, 0, 0, 4, 12, 0, 15, - 161, 163, 164, 165, 166, 167, 168, 169, 170, 171, - 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, - 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, - 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, - 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, - 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, - 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, - 232, 233, 234, 235, 236, 237, 238, 0, 162, 0, - 0, 0, 13, 2, 59, 18, 16, 154, 5, 10, - 6, 11, 7, 9, 8, 155, 42, 0, 22, 17, - 20, 21, 44, 43, 128, 129, 95, 0, 124, 103, - 0, 121, 141, 130, 120, 134, 85, 151, 126, 127, - 134, 0, 0, 149, 123, 122, 0, 60, 75, 62, - 76, 0, 63, 64, 65, 66, 67, 68, 69, 157, - 70, 71, 72, 73, 74, 77, 78, 79, 80, 81, - 0, 0, 0, 19, 0, 45, 0, 30, 0, 46, - 0, 0, 138, 139, 137, 0, 0, 0, 86, 87, - 0, 59, 0, 136, 131, 82, 61, 58, 57, 150, - 149, 0, 158, 157, 0, 0, 59, 152, 23, 0, - 29, 26, 47, 156, 151, 107, 105, 135, 0, 142, - 144, 0, 0, 155, 0, 96, 83, 149, 159, 119, - 14, 114, 115, 113, 59, 0, 117, 155, 109, 59, - 39, 41, 0, 40, 32, 0, 51, 59, 59, 104, - 0, 0, 147, 148, 143, 132, 93, 94, 0, 89, - 0, 92, 100, 133, 160, 111, 112, 0, 0, 0, - 110, 25, 0, 0, 48, 50, 49, 0, 0, 155, - 155, 0, 0, 59, 84, 0, 91, 59, 151, 0, - 118, 0, 157, 0, 34, 46, 38, 37, 31, 52, - 56, 53, 24, 54, 55, 0, 146, 155, 88, 90, - 155, 59, 0, 152, 0, 33, 0, 36, 27, 102, - 155, 0, 59, 125, 35, 97, 116 + -1, 1, 2, 6, 107, 100, 149, 8, 103, 116, + 117, 118, 258, 185, 333, 288, 308, 309, 313, 256, + 119, 186, 222, 260, 293, 317, 318, 210, 251, 150, + 151, 152, 153, 154, 199, 273, 274, 324, 275, 155, + 156, 277, 304, 157, 188, 225, 226, 264, 158, 159, + 160, 248, 249, 161, 283, 162, 163, 164, 165, 166, + 252, 167, 168, 169, 170, 171, 196, 172, 173, 174, + 175, 194, 176, 192, 177, 195, 232, 233, 266, 267, + 204, 239, 200, 253, 9, 178, 211, 243, 212, 95 }; - /* YYPGOTO[NTERM-NUM]. */ -static const yytype_int16 yypgoto[] = +/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing + STATE-NUM. */ +#define YYPACT_NINF -272 +static const yytype_int16 yypact[] = { - -245, -245, -245, -245, -245, -245, 154, -245, -245, -245, - 50, -245, -245, -245, -245, -245, -245, -146, -245, -245, - -244, -245, -124, -245, -245, -245, -245, -216, -90, -245, - -245, -245, -245, -245, -245, -112, -245, -245, -182, -245, - -245, -245, -245, -245, -245, -40, -245, -245, -245, -245, - -245, -31, -245, -245, -245, -245, -245, -245, -245, -213, - -245, -245, -245, -245, -245, 39, -245, -245, -110, -245, - -245, -245, -38, -245, -102, -162, -245, -195, -131, -245, - -245, -185, -245, -4, -89 + -272, 34, -17, -272, 365, -71, -272, -92, 15, 20, + -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, + -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, + -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, + -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, + -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, + -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, + -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, + -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, + -272, -272, -272, -272, 48, -272, 25, 689, -49, -272, + -272, -272, -272, 256, -272, -272, -272, -272, -272, -272, + -272, -272, 1082, -272, 365, -272, 256, -272, -272, 3, + -272, -272, -272, -272, 365, -272, -272, -272, 40, 55, + -272, -272, -272, -272, -272, -272, -36, -272, -272, -272, + -272, -48, 40, -272, -272, -272, -272, 55, -272, -46, + -272, -272, -272, -272, -272, -13, -272, -272, -272, -272, + -272, -272, -272, 365, -272, -272, -272, -272, -272, -272, + -272, -272, -272, -272, -272, -272, -272, 42, -51, 68, + -272, 36, -272, -6, -272, 57, -272, 89, -12, -272, + -272, -272, -1, -19, 0, 4, 40, -272, -272, 72, + -272, 40, -272, -272, -272, 2, -272, -272, -272, -272, + -272, -80, -272, 365, 77, 77, -272, -272, -272, 474, + -272, -272, 91, -7, -272, -47, -272, -272, -272, 92, + -272, 365, 4, -272, 58, 90, 904, 5, -272, -272, + -272, -272, -272, -272, -272, -272, -272, -272, -272, 62, + 23, 1171, -272, -272, -272, -272, 7, -272, 8, 583, + 53, -272, -272, -272, 84, -272, -73, -272, -272, -272, + -272, -272, -272, -66, -272, -9, 6, -3, -272, -272, + -272, -272, 135, 71, 65, -272, -272, 795, -39, -272, + -272, -272, 59, -10, 1, 1260, 112, 365, -272, -272, + 90, -272, -272, -272, 93, -272, 120, 365, -15, -272, + -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, + 18, -272, 146, -272, -272, 1349, -272, 80, -272, 21, + -272, 795, -272, -272, -272, 993, 22, -272, -272, -272, + -272, -272 }; - /* YYDEFGOTO[NTERM-NUM]. */ -static const yytype_int16 yydefgoto[] = +/* YYPGOTO[NTERM-NUM]. */ +static const yytype_int16 yypgoto[] = { - -1, 1, 2, 6, 100, 93, 136, 8, 96, 109, - 110, 111, 234, 168, 308, 263, 283, 284, 288, 232, - 112, 169, 202, 236, 268, 292, 293, 190, 227, 137, - 138, 139, 140, 180, 248, 249, 299, 250, 141, 142, - 252, 279, 143, 171, 205, 206, 240, 144, 145, 146, - 224, 225, 147, 258, 148, 149, 150, 151, 152, 228, - 153, 154, 155, 156, 157, 177, 158, 159, 175, 160, - 176, 209, 210, 241, 242, 185, 215, 181, 229, 9, - 161, 191, 219, 192, 88 + -272, -272, -272, -272, -272, -272, 155, -272, -272, -272, + 43, -272, -272, -272, -272, -272, -272, -173, -272, -272, + -271, -272, -150, -272, -272, -272, -272, -247, -97, -272, + -272, -272, -272, -272, -272, -272, -139, -272, -272, -220, + -272, -272, -272, -272, -272, -272, -63, -272, -272, -272, + -272, -272, -43, -272, -272, -272, -272, -272, -272, -272, + -239, -272, -272, -272, -272, -272, 26, -272, -272, -272, + -272, 27, -272, -106, -272, -272, -272, -65, -272, -124, + -171, -272, -214, -153, -272, -272, -210, -272, -4, -96 }; - /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If - positive, shift that token. If negative, reduce the rule whose - number is the opposite. If YYTABLE_NINF, syntax error. */ +/* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If + positive, shift that token. If negative, reduce the rule which + number is the opposite. If zero, do what YYDEFACT says. + If YYTABLE_NINF, syntax error. */ +#define YYTABLE_NINF -168 static const yytype_int16 yytable[] = { - 87, 101, 187, 4, 105, 187, 187, 113, 220, 237, - 238, 255, 114, 115, 116, 117, 260, 178, 285, 164, - 113, 118, 184, -153, 102, 119, 120, 89, 216, 272, - 251, 165, -154, 121, 276, 90, -28, 290, -153, 194, - 195, 217, 3, -106, 218, -106, 286, -154, 92, 123, - 124, 125, 294, 94, 196, 254, 273, 126, 287, 127, - 128, 91, 285, 129, 98, 274, 95, 211, 275, 277, - 278, 130, 214, 97, 166, 183, 131, 132, 305, 306, - 133, 204, 186, 301, 193, 179, 103, 104, 198, 134, - 199, 213, 135, 251, 172, 173, 174, 304, 201, 316, - 167, 197, 200, 162, 5, 221, 222, 223, 203, 207, - 233, 204, 212, 170, -106, 291, 188, 189, 208, 188, - 188, 246, 247, 116, 235, 245, 256, 253, 261, 114, - 115, 116, 117, 257, 262, 271, 267, 189, 118, 280, - -153, 281, 119, 120, 282, 289, 266, 269, 270, 295, - 121, 302, 303, 309, 311, -153, 7, 313, 315, 163, - 314, 307, -145, 298, 226, 239, 123, 124, 125, 182, - 296, 244, 312, 113, 126, 0, 127, 128, 0, 0, - 129, 0, 0, 297, 0, 0, 0, 300, 130, 0, - 0, 0, 0, 131, 132, 0, 0, 133, 0, 0, - 0, 0, 0, 0, 243, 0, 134, 0, 0, 135, - 0, 310, 0, 0, 0, 0, 0, 113, 0, 106, - 0, 0, 107, 0, 12, 13, 0, 14, 15, 16, - 0, -145, 0, 17, 18, 19, 20, 21, 22, 23, - 24, 25, 26, 27, 28, 108, 29, 30, 31, 32, - 0, 33, 0, 34, 35, 36, 0, 37, 38, 39, - 0, 0, 40, 0, 41, 42, 0, 43, 243, 44, - 45, 0, 46, 47, 48, 0, 49, 50, 51, 52, - 53, 0, 54, 0, 55, 56, 0, 57, 58, 59, - 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, - 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, - 0, 80, 81, 0, 0, 82, 83, 84, 0, 85, - 86, 10, 0, 11, 0, 0, 12, 13, 0, 14, - 15, 16, 0, 0, 0, 17, 18, 19, 20, 21, - 22, 23, 24, 25, 26, 27, 28, 0, 29, 30, - 31, 32, 0, 33, 0, 34, 35, 36, 0, 37, - 38, 39, 0, 0, 40, 0, 41, 42, 0, 43, - 0, 44, 45, 0, 46, 47, 48, 0, 49, 50, - 51, 52, 53, 0, 54, 0, 55, 56, 0, 57, - 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, - 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, - 78, 79, 0, 80, 81, 0, 0, 82, 83, 84, - 0, 85, 86, 230, 231, 0, 0, 0, 12, 13, - 0, 14, 15, 16, 0, 0, 0, 17, 18, 19, - 20, 21, 22, 23, 24, 25, 26, 27, 28, 0, - 29, 30, 31, 32, 0, 33, 0, 34, 35, 36, - 0, 37, 38, 39, 0, 0, 40, 0, 41, 42, - 0, 43, 0, 44, 45, 0, 46, 47, 48, 0, - 49, 50, 51, 52, 53, 0, 54, 0, 55, 56, - 0, 57, 58, 59, 60, 61, 62, 63, 64, 65, - 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, - 76, 77, 78, 79, 0, 80, 81, 0, 0, 82, - 83, 84, 0, 85, 86, 264, 265, 0, 0, 0, - 12, 13, 0, 14, 15, 16, 0, 0, 0, 17, - 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, - 28, 0, 29, 30, 31, 32, 0, 33, 0, 34, - 35, 36, 0, 37, 38, 39, 0, 0, 40, 0, - 41, 42, 0, 43, 0, 44, 45, 0, 46, 47, - 48, 0, 49, 50, 51, 52, 53, 0, 54, 0, - 55, 56, 0, 57, 58, 59, 60, 61, 62, 63, + 94, 108, 207, 244, 112, 207, 207, 120, 4, 280, + 261, 262, 197, 109, 285, 276, 310, 214, 215, 228, + 120, 297, 96, 121, 122, 123, 124, -167, 301, 311, + 97, 181, 216, 125, 3, -166, 203, 126, 127, 240, + 128, 312, 99, 315, 129, -167, 319, 182, 130, 101, + 298, 241, -28, -166, 242, 302, 303, 131, 98, -112, + 310, -112, 189, 190, 191, 133, 134, 135, 299, 229, + 279, 300, 102, 136, 104, 137, 138, 110, 111, 139, + 276, 217, 105, 198, 224, 193, 202, 140, 206, 326, + 234, 183, 141, 142, 218, 237, 143, 329, 341, 245, + 246, 247, 213, 236, 219, 144, 221, 145, 146, 220, + 179, 147, 271, 272, 123, 223, 5, 148, 184, 224, + 187, 330, 331, 257, 316, 208, 209, 235, 208, 208, + 265, 259, -112, 227, 230, 231, 238, 270, 281, 278, + 282, 286, 292, 287, 296, 209, 305, 306, 307, 320, + 314, 328, 334, 327, 336, 338, 340, 7, 339, 180, + 332, 323, 263, 291, 294, 295, 201, 269, 121, 122, + 123, 124, 250, 321, 205, 337, 0, 0, 125, 0, + -166, 0, 126, 127, 0, 128, 0, 0, 0, 129, + 0, 120, 0, 130, 0, 0, 0, 0, -166, 0, + 0, 322, 131, 0, 0, 325, -158, 0, 0, 0, + 133, 134, 135, 0, 0, 0, 0, 0, 136, 0, + 137, 138, 0, 0, 139, 0, 0, 268, 0, 335, + 0, 0, 140, 0, 0, 120, 0, 141, 142, 0, + 0, 143, 0, 0, 0, 0, 0, 0, 0, 0, + 144, 0, 145, 146, 0, 0, 147, 0, 0, 0, + 0, 0, 148, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, -158, 113, 0, + 0, 114, 0, 12, 13, 0, 14, 15, 16, 17, + 0, 0, 18, 268, 19, 20, 21, 22, 23, 24, + 25, 26, 27, 28, 29, 30, 31, 32, 115, 33, + 34, 35, 36, 37, 0, 38, 0, 39, 40, 41, + 0, 42, 43, 44, 0, 0, 45, 0, 46, 47, + 0, 48, 0, 49, 50, 0, 51, 52, 53, 0, + 54, 55, 56, 57, 58, 0, 59, 0, 60, 61, + 0, 62, 63, 64, 65, 66, 67, 68, 69, 70, + 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, + 81, 82, 83, 84, 85, 86, 0, 87, 88, 0, + 0, 89, 90, 91, 0, 92, 93, 10, 0, 11, + 0, 0, 12, 13, 0, 14, 15, 16, 17, 0, + 0, 18, 0, 19, 20, 21, 22, 23, 24, 25, + 26, 27, 28, 29, 30, 31, 32, 0, 33, 34, + 35, 36, 37, 0, 38, 0, 39, 40, 41, 0, + 42, 43, 44, 0, 0, 45, 0, 46, 47, 0, + 48, 0, 49, 50, 0, 51, 52, 53, 0, 54, + 55, 56, 57, 58, 0, 59, 0, 60, 61, 0, + 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, + 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, + 82, 83, 84, 85, 86, 0, 87, 88, 0, 0, + 89, 90, 91, 0, 92, 93, 254, 255, 0, 0, + 0, 12, 13, 0, 14, 15, 16, 17, 0, 0, + 18, 0, 19, 20, 21, 22, 23, 24, 25, 26, + 27, 28, 29, 30, 31, 32, 0, 33, 34, 35, + 36, 37, 0, 38, 0, 39, 40, 41, 0, 42, + 43, 44, 0, 0, 45, 0, 46, 47, 0, 48, + 0, 49, 50, 0, 51, 52, 53, 0, 54, 55, + 56, 57, 58, 0, 59, 0, 60, 61, 0, 62, + 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, + 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, + 83, 84, 85, 86, 0, 87, 88, 0, 0, 89, + 90, 91, 0, 92, 93, 289, 290, 0, 0, 0, + 12, 13, 0, 14, 15, 16, 17, 0, 0, 18, + 0, 19, 20, 21, 22, 23, 24, 25, 26, 27, + 28, 29, 30, 31, 32, 0, 33, 34, 35, 36, + 37, 0, 38, 0, 39, 40, 41, 0, 42, 43, + 44, 0, 0, 45, 0, 46, 47, 0, 48, 0, + 49, 50, 0, 51, 52, 53, 0, 54, 55, 56, + 57, 58, 0, 59, 0, 60, 61, 0, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, - 74, 75, 76, 77, 78, 79, 0, 80, 81, 0, - 0, 82, 83, 84, 99, 85, 86, 0, 0, 12, - 13, 0, 14, 15, 16, 0, 0, 0, 17, 18, - 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, - 0, 29, 30, 31, 32, 0, 33, 0, 34, 35, - 36, 0, 37, 38, 39, 0, 0, 40, 0, 41, - 42, 0, 43, 0, 44, 45, 0, 46, 47, 48, - 0, 49, 50, 51, 52, 53, 0, 54, 0, 55, - 56, 0, 57, 58, 59, 60, 61, 62, 63, 64, - 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, - 75, 76, 77, 78, 79, 0, 80, 81, 0, 0, - 82, 83, 84, 106, 85, 86, 0, 0, 12, 13, - 0, 14, 15, 16, 0, 0, 0, 17, 18, 19, - 20, 21, 22, 23, 24, 25, 26, 27, 28, 0, - 29, 30, 31, 32, 0, 33, 0, 34, 35, 36, - 0, 37, 38, 39, 0, 0, 40, 0, 41, 42, - 0, 43, 0, 44, 45, 0, 46, 47, 48, 0, - 49, 50, 51, 52, 53, 0, 54, 0, 55, 56, - 0, 57, 58, 59, 60, 61, 62, 63, 64, 65, - 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, - 76, 77, 78, 79, 0, 80, 81, 0, 0, 82, - 83, 84, 0, 85, 86, 114, 115, 116, 117, 0, - 0, 0, 0, 0, 118, 0, -153, 0, 119, 120, - 0, 0, 0, 0, 0, 0, 121, 0, 0, 0, - 0, -153, 0, 0, 0, 0, -98, -98, -98, 0, - 0, 0, 123, 124, 125, 0, 0, 0, 0, 0, - 126, 0, 127, 128, 0, 0, 129, 0, 0, 0, - 0, 0, 0, 0, 130, 114, 115, 116, 117, 131, - 132, 0, 0, 133, 118, 0, -153, 0, 119, 120, - 0, 0, 134, 0, 0, 135, 121, 0, 0, 0, - 0, -153, 0, 0, 0, 0, -99, -99, -99, 0, - 0, 0, 123, 124, 125, 0, 0, 0, 0, 0, - 126, 0, 127, 128, 0, 0, 129, 0, 0, 0, - 0, 0, 0, 0, 130, 114, 115, 116, 117, 131, - 132, 0, 0, 133, 118, 0, -153, 0, 119, 120, - 0, 0, 134, 0, 0, 135, 121, 0, 0, 0, - 0, -153, 0, 0, 0, 0, 0, 0, -140, 0, - 0, 122, 123, 124, 125, 0, 0, 0, 0, 0, - 126, 0, 127, 128, 0, 0, 129, 0, 0, 0, - 0, 0, 0, 0, 130, 114, 115, 116, 117, 131, - 132, 0, 0, 133, 118, 0, -153, 0, 119, 120, - 0, 0, 134, 0, 0, 135, 121, 0, 0, 0, - 0, -153, 0, 0, 0, 0, 0, 0, 259, 0, - 0, 0, 123, 124, 125, 0, 0, 0, 0, 0, - 126, 0, 127, 128, 0, 0, 129, 0, 0, 0, - 0, 0, 0, 0, 130, 114, 115, 116, 117, 131, - 132, 0, 0, 133, 118, 0, -153, 0, 119, 120, - 0, 0, 134, 0, 0, 135, 121, 0, 0, 0, - 0, -153, 0, 0, 0, 0, 0, 0, -108, 0, - 0, 0, 123, 124, 125, 0, 0, 0, 0, 0, - 126, 0, 127, 128, 0, 0, 129, 0, 0, 0, - 0, 0, 0, 0, 130, 114, 115, 116, 117, 131, - 132, 0, 0, 133, 118, 0, -153, 0, 119, 120, - 0, 0, 134, 0, 0, 135, 121, 0, 0, 0, - 0, -153, 0, 0, 0, 0, 0, 0, -101, 0, - 0, 0, 123, 124, 125, 0, 0, 0, 0, 0, - 126, 0, 127, 128, 0, 0, 129, 0, 0, 0, - 0, 0, 0, 0, 130, 0, 0, 0, 0, 131, - 132, 0, 0, 133, 0, 0, 0, 0, 0, 0, - 0, 0, 134, 0, 0, 135 + 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, + 84, 85, 86, 0, 87, 88, 0, 0, 89, 90, + 91, 106, 92, 93, 0, 0, 12, 13, 0, 14, + 15, 16, 17, 0, 0, 18, 0, 19, 20, 21, + 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, + 32, 0, 33, 34, 35, 36, 37, 0, 38, 0, + 39, 40, 41, 0, 42, 43, 44, 0, 0, 45, + 0, 46, 47, 0, 48, 0, 49, 50, 0, 51, + 52, 53, 0, 54, 55, 56, 57, 58, 0, 59, + 0, 60, 61, 0, 62, 63, 64, 65, 66, 67, + 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, + 78, 79, 80, 81, 82, 83, 84, 85, 86, 0, + 87, 88, 0, 0, 89, 90, 91, 113, 92, 93, + 0, 0, 12, 13, 0, 14, 15, 16, 17, 0, + 0, 18, 0, 19, 20, 21, 22, 23, 24, 25, + 26, 27, 28, 29, 30, 31, 32, 0, 33, 34, + 35, 36, 37, 0, 38, 0, 39, 40, 41, 0, + 42, 43, 44, 0, 0, 45, 0, 46, 47, 0, + 48, 0, 49, 50, 0, 51, 52, 53, 0, 54, + 55, 56, 57, 58, 0, 59, 0, 60, 61, 0, + 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, + 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, + 82, 83, 84, 85, 86, 0, 87, 88, 0, 0, + 89, 90, 91, 0, 92, 93, 121, 122, 123, 124, + 0, 0, 0, 0, 0, 0, 125, 0, -166, 0, + 126, 127, 0, 128, 0, 0, 0, 129, 0, 0, + 0, 130, 0, 0, 0, 0, -166, 0, 0, 0, + 131, 0, -104, -104, -104, 0, 0, 0, 133, 134, + 135, 0, 0, 0, 0, 0, 136, 0, 137, 138, + 0, 0, 139, 0, 0, 0, 0, 0, 0, 0, + 140, 0, 0, 0, 0, 141, 142, 0, 0, 143, + 0, 0, 0, 0, 0, 0, 0, 0, 144, 0, + 145, 146, 0, 0, 147, 121, 122, 123, 124, 0, + 148, 0, 0, 0, 0, 125, 0, -166, 0, 126, + 127, 0, 128, 0, 0, 0, 129, 0, 0, 0, + 130, 0, 0, 0, 0, -166, 0, 0, 0, 131, + 0, -105, -105, -105, 0, 0, 0, 133, 134, 135, + 0, 0, 0, 0, 0, 136, 0, 137, 138, 0, + 0, 139, 0, 0, 0, 0, 0, 0, 0, 140, + 0, 0, 0, 0, 141, 142, 0, 0, 143, 0, + 0, 0, 0, 0, 0, 0, 0, 144, 0, 145, + 146, 0, 0, 147, 121, 122, 123, 124, 0, 148, + 0, 0, 0, 0, 125, 0, -166, 0, 126, 127, + 0, 128, 0, 0, 0, 129, 0, 0, 0, 130, + 0, 0, 0, 0, -166, 0, 0, 0, 131, 0, + 0, 0, -153, 0, 0, 132, 133, 134, 135, 0, + 0, 0, 0, 0, 136, 0, 137, 138, 0, 0, + 139, 0, 0, 0, 0, 0, 0, 0, 140, 0, + 0, 0, 0, 141, 142, 0, 0, 143, 0, 0, + 0, 0, 0, 0, 0, 0, 144, 0, 145, 146, + 0, 0, 147, 121, 122, 123, 124, 0, 148, 0, + 0, 0, 0, 125, 0, -166, 0, 126, 127, 0, + 128, 0, 0, 0, 129, 0, 0, 0, 130, 0, + 0, 0, 0, -166, 0, 0, 0, 131, 0, 0, + 0, 284, 0, 0, 0, 133, 134, 135, 0, 0, + 0, 0, 0, 136, 0, 137, 138, 0, 0, 139, + 0, 0, 0, 0, 0, 0, 0, 140, 0, 0, + 0, 0, 141, 142, 0, 0, 143, 0, 0, 0, + 0, 0, 0, 0, 0, 144, 0, 145, 146, 0, + 0, 147, 121, 122, 123, 124, 0, 148, 0, 0, + 0, 0, 125, 0, -166, 0, 126, 127, 0, 128, + 0, 0, 0, 129, 0, 0, 0, 130, 0, 0, + 0, 0, -166, 0, 0, 0, 131, 0, 0, 0, + -114, 0, 0, 0, 133, 134, 135, 0, 0, 0, + 0, 0, 136, 0, 137, 138, 0, 0, 139, 0, + 0, 0, 0, 0, 0, 0, 140, 0, 0, 0, + 0, 141, 142, 0, 0, 143, 0, 0, 0, 0, + 0, 0, 0, 0, 144, 0, 145, 146, 0, 0, + 147, 121, 122, 123, 124, 0, 148, 0, 0, 0, + 0, 125, 0, -166, 0, 126, 127, 0, 128, 0, + 0, 0, 129, 0, 0, 0, 130, 0, 0, 0, + 0, -166, 0, 0, 0, 131, 0, 0, 0, -107, + 0, 0, 0, 133, 134, 135, 0, 0, 0, 0, + 0, 136, 0, 137, 138, 0, 0, 139, 0, 0, + 0, 0, 0, 0, 0, 140, 0, 0, 0, 0, + 141, 142, 0, 0, 143, 0, 0, 0, 0, 0, + 0, 0, 0, 144, 0, 145, 146, 0, 0, 147, + 0, 0, 0, 0, 0, 148 }; static const yytype_int16 yycheck[] = { - 4, 90, 13, 21, 94, 13, 13, 96, 193, 204, - 49, 224, 18, 19, 20, 21, 229, 40, 262, 24, - 109, 27, 132, 29, 53, 31, 32, 84, 190, 85, - 212, 36, 29, 39, 250, 92, 41, 45, 44, 59, - 60, 120, 0, 49, 123, 51, 59, 44, 123, 55, - 56, 57, 268, 29, 74, 217, 112, 63, 71, 65, - 66, 118, 306, 69, 48, 123, 44, 177, 126, 49, - 50, 77, 182, 22, 79, 123, 82, 83, 125, 126, - 86, 120, 123, 278, 51, 108, 115, 116, 22, 95, - 59, 181, 98, 275, 18, 19, 20, 282, 41, 312, - 105, 121, 105, 107, 122, 18, 19, 20, 22, 123, - 199, 120, 47, 117, 120, 123, 127, 128, 120, 127, - 127, 18, 19, 20, 33, 70, 67, 123, 123, 18, - 19, 20, 21, 106, 124, 51, 80, 128, 27, 9, - 29, 67, 31, 32, 74, 82, 235, 237, 238, 31, - 39, 51, 26, 123, 65, 44, 2, 123, 123, 109, - 306, 285, 51, 275, 195, 205, 55, 56, 57, 130, - 272, 209, 303, 262, 63, -1, 65, 66, -1, -1, - 69, -1, -1, 273, -1, -1, -1, 277, 77, -1, - -1, -1, -1, 82, 83, -1, -1, 86, -1, -1, - -1, -1, -1, -1, 208, -1, 95, -1, -1, 98, - -1, 301, -1, -1, -1, -1, -1, 306, -1, 18, - -1, -1, 21, -1, 23, 24, -1, 26, 27, 28, - -1, 120, -1, 32, 33, 34, 35, 36, 37, 38, - 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, - -1, 50, -1, 52, 53, 54, -1, 56, 57, 58, - -1, -1, 61, -1, 63, 64, -1, 66, 272, 68, - 69, -1, 71, 72, 73, -1, 75, 76, 77, 78, - 79, -1, 81, -1, 83, 84, -1, 86, 87, 88, - 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, - 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, - -1, 110, 111, -1, -1, 114, 115, 116, -1, 118, - 119, 18, -1, 20, -1, -1, 23, 24, -1, 26, - 27, 28, -1, -1, -1, 32, 33, 34, 35, 36, - 37, 38, 39, 40, 41, 42, 43, -1, 45, 46, - 47, 48, -1, 50, -1, 52, 53, 54, -1, 56, - 57, 58, -1, -1, 61, -1, 63, 64, -1, 66, - -1, 68, 69, -1, 71, 72, 73, -1, 75, 76, - 77, 78, 79, -1, 81, -1, 83, 84, -1, 86, - 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, - 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, - 107, 108, -1, 110, 111, -1, -1, 114, 115, 116, - -1, 118, 119, 18, 19, -1, -1, -1, 23, 24, - -1, 26, 27, 28, -1, -1, -1, 32, 33, 34, - 35, 36, 37, 38, 39, 40, 41, 42, 43, -1, - 45, 46, 47, 48, -1, 50, -1, 52, 53, 54, - -1, 56, 57, 58, -1, -1, 61, -1, 63, 64, - -1, 66, -1, 68, 69, -1, 71, 72, 73, -1, - 75, 76, 77, 78, 79, -1, 81, -1, 83, 84, - -1, 86, 87, 88, 89, 90, 91, 92, 93, 94, + 4, 97, 15, 213, 101, 15, 15, 103, 25, 248, + 224, 58, 48, 62, 253, 235, 287, 68, 69, 38, + 116, 94, 93, 22, 23, 24, 25, 34, 275, 68, + 101, 28, 83, 32, 0, 34, 142, 36, 37, 210, + 39, 80, 134, 53, 43, 52, 293, 44, 47, 34, + 123, 131, 49, 52, 134, 58, 59, 56, 129, 58, + 331, 60, 22, 23, 24, 64, 65, 66, 134, 88, + 241, 137, 52, 72, 26, 74, 75, 126, 127, 78, + 300, 132, 57, 119, 131, 30, 134, 86, 134, 303, + 196, 88, 91, 92, 26, 201, 95, 307, 337, 22, + 23, 24, 60, 200, 68, 104, 49, 106, 107, 115, + 114, 110, 22, 23, 24, 26, 133, 116, 115, 131, + 124, 136, 137, 219, 134, 138, 139, 55, 138, 138, + 38, 40, 131, 134, 134, 131, 134, 79, 76, 134, + 117, 134, 89, 135, 60, 139, 11, 76, 83, 37, + 91, 31, 134, 60, 74, 134, 134, 2, 331, 116, + 310, 300, 225, 259, 261, 262, 140, 232, 22, 23, + 24, 25, 215, 297, 147, 328, -1, -1, 32, -1, + 34, -1, 36, 37, -1, 39, -1, -1, -1, 43, + -1, 287, -1, 47, -1, -1, -1, -1, 52, -1, + -1, 298, 56, -1, -1, 302, 60, -1, -1, -1, + 64, 65, 66, -1, -1, -1, -1, -1, 72, -1, + 74, 75, -1, -1, 78, -1, -1, 231, -1, 326, + -1, -1, 86, -1, -1, 331, -1, 91, 92, -1, + -1, 95, -1, -1, -1, -1, -1, -1, -1, -1, + 104, -1, 106, 107, -1, -1, 110, -1, -1, -1, + -1, -1, 116, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 131, 22, -1, + -1, 25, -1, 27, 28, -1, 30, 31, 32, 33, + -1, -1, 36, 297, 38, 39, 40, 41, 42, 43, + 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, + 54, 55, 56, 57, -1, 59, -1, 61, 62, 63, + -1, 65, 66, 67, -1, -1, 70, -1, 72, 73, + -1, 75, -1, 77, 78, -1, 80, 81, 82, -1, + 84, 85, 86, 87, 88, -1, 90, -1, 92, 93, + -1, 95, 96, 97, 98, 99, 100, 101, 102, 103, + 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, + 114, 115, 116, 117, 118, 119, -1, 121, 122, -1, + -1, 125, 126, 127, -1, 129, 130, 22, -1, 24, + -1, -1, 27, 28, -1, 30, 31, 32, 33, -1, + -1, 36, -1, 38, 39, 40, 41, 42, 43, 44, + 45, 46, 47, 48, 49, 50, 51, -1, 53, 54, + 55, 56, 57, -1, 59, -1, 61, 62, 63, -1, + 65, 66, 67, -1, -1, 70, -1, 72, 73, -1, + 75, -1, 77, 78, -1, 80, 81, 82, -1, 84, + 85, 86, 87, 88, -1, 90, -1, 92, 93, -1, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, - 105, 106, 107, 108, -1, 110, 111, -1, -1, 114, - 115, 116, -1, 118, 119, 18, 19, -1, -1, -1, - 23, 24, -1, 26, 27, 28, -1, -1, -1, 32, - 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, - 43, -1, 45, 46, 47, 48, -1, 50, -1, 52, - 53, 54, -1, 56, 57, 58, -1, -1, 61, -1, - 63, 64, -1, 66, -1, 68, 69, -1, 71, 72, - 73, -1, 75, 76, 77, 78, 79, -1, 81, -1, - 83, 84, -1, 86, 87, 88, 89, 90, 91, 92, - 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, - 103, 104, 105, 106, 107, 108, -1, 110, 111, -1, - -1, 114, 115, 116, 18, 118, 119, -1, -1, 23, - 24, -1, 26, 27, 28, -1, -1, -1, 32, 33, - 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, - -1, 45, 46, 47, 48, -1, 50, -1, 52, 53, - 54, -1, 56, 57, 58, -1, -1, 61, -1, 63, - 64, -1, 66, -1, 68, 69, -1, 71, 72, 73, - -1, 75, 76, 77, 78, 79, -1, 81, -1, 83, - 84, -1, 86, 87, 88, 89, 90, 91, 92, 93, - 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, - 104, 105, 106, 107, 108, -1, 110, 111, -1, -1, - 114, 115, 116, 18, 118, 119, -1, -1, 23, 24, - -1, 26, 27, 28, -1, -1, -1, 32, 33, 34, - 35, 36, 37, 38, 39, 40, 41, 42, 43, -1, - 45, 46, 47, 48, -1, 50, -1, 52, 53, 54, - -1, 56, 57, 58, -1, -1, 61, -1, 63, 64, - -1, 66, -1, 68, 69, -1, 71, 72, 73, -1, - 75, 76, 77, 78, 79, -1, 81, -1, 83, 84, - -1, 86, 87, 88, 89, 90, 91, 92, 93, 94, + 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, + 115, 116, 117, 118, 119, -1, 121, 122, -1, -1, + 125, 126, 127, -1, 129, 130, 22, 23, -1, -1, + -1, 27, 28, -1, 30, 31, 32, 33, -1, -1, + 36, -1, 38, 39, 40, 41, 42, 43, 44, 45, + 46, 47, 48, 49, 50, 51, -1, 53, 54, 55, + 56, 57, -1, 59, -1, 61, 62, 63, -1, 65, + 66, 67, -1, -1, 70, -1, 72, 73, -1, 75, + -1, 77, 78, -1, 80, 81, 82, -1, 84, 85, + 86, 87, 88, -1, 90, -1, 92, 93, -1, 95, + 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, + 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, + 116, 117, 118, 119, -1, 121, 122, -1, -1, 125, + 126, 127, -1, 129, 130, 22, 23, -1, -1, -1, + 27, 28, -1, 30, 31, 32, 33, -1, -1, 36, + -1, 38, 39, 40, 41, 42, 43, 44, 45, 46, + 47, 48, 49, 50, 51, -1, 53, 54, 55, 56, + 57, -1, 59, -1, 61, 62, 63, -1, 65, 66, + 67, -1, -1, 70, -1, 72, 73, -1, 75, -1, + 77, 78, -1, 80, 81, 82, -1, 84, 85, 86, + 87, 88, -1, 90, -1, 92, 93, -1, 95, 96, + 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, + 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, + 117, 118, 119, -1, 121, 122, -1, -1, 125, 126, + 127, 22, 129, 130, -1, -1, 27, 28, -1, 30, + 31, 32, 33, -1, -1, 36, -1, 38, 39, 40, + 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, + 51, -1, 53, 54, 55, 56, 57, -1, 59, -1, + 61, 62, 63, -1, 65, 66, 67, -1, -1, 70, + -1, 72, 73, -1, 75, -1, 77, 78, -1, 80, + 81, 82, -1, 84, 85, 86, 87, 88, -1, 90, + -1, 92, 93, -1, 95, 96, 97, 98, 99, 100, + 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, + 111, 112, 113, 114, 115, 116, 117, 118, 119, -1, + 121, 122, -1, -1, 125, 126, 127, 22, 129, 130, + -1, -1, 27, 28, -1, 30, 31, 32, 33, -1, + -1, 36, -1, 38, 39, 40, 41, 42, 43, 44, + 45, 46, 47, 48, 49, 50, 51, -1, 53, 54, + 55, 56, 57, -1, 59, -1, 61, 62, 63, -1, + 65, 66, 67, -1, -1, 70, -1, 72, 73, -1, + 75, -1, 77, 78, -1, 80, 81, 82, -1, 84, + 85, 86, 87, 88, -1, 90, -1, 92, 93, -1, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, - 105, 106, 107, 108, -1, 110, 111, -1, -1, 114, - 115, 116, -1, 118, 119, 18, 19, 20, 21, -1, - -1, -1, -1, -1, 27, -1, 29, -1, 31, 32, - -1, -1, -1, -1, -1, -1, 39, -1, -1, -1, - -1, 44, -1, -1, -1, -1, 49, 50, 51, -1, - -1, -1, 55, 56, 57, -1, -1, -1, -1, -1, - 63, -1, 65, 66, -1, -1, 69, -1, -1, -1, - -1, -1, -1, -1, 77, 18, 19, 20, 21, 82, - 83, -1, -1, 86, 27, -1, 29, -1, 31, 32, - -1, -1, 95, -1, -1, 98, 39, -1, -1, -1, - -1, 44, -1, -1, -1, -1, 49, 50, 51, -1, - -1, -1, 55, 56, 57, -1, -1, -1, -1, -1, - 63, -1, 65, 66, -1, -1, 69, -1, -1, -1, - -1, -1, -1, -1, 77, 18, 19, 20, 21, 82, - 83, -1, -1, 86, 27, -1, 29, -1, 31, 32, - -1, -1, 95, -1, -1, 98, 39, -1, -1, -1, - -1, 44, -1, -1, -1, -1, -1, -1, 51, -1, - -1, 54, 55, 56, 57, -1, -1, -1, -1, -1, - 63, -1, 65, 66, -1, -1, 69, -1, -1, -1, - -1, -1, -1, -1, 77, 18, 19, 20, 21, 82, - 83, -1, -1, 86, 27, -1, 29, -1, 31, 32, - -1, -1, 95, -1, -1, 98, 39, -1, -1, -1, - -1, 44, -1, -1, -1, -1, -1, -1, 51, -1, - -1, -1, 55, 56, 57, -1, -1, -1, -1, -1, - 63, -1, 65, 66, -1, -1, 69, -1, -1, -1, - -1, -1, -1, -1, 77, 18, 19, 20, 21, 82, - 83, -1, -1, 86, 27, -1, 29, -1, 31, 32, - -1, -1, 95, -1, -1, 98, 39, -1, -1, -1, - -1, 44, -1, -1, -1, -1, -1, -1, 51, -1, - -1, -1, 55, 56, 57, -1, -1, -1, -1, -1, - 63, -1, 65, 66, -1, -1, 69, -1, -1, -1, - -1, -1, -1, -1, 77, 18, 19, 20, 21, 82, - 83, -1, -1, 86, 27, -1, 29, -1, 31, 32, - -1, -1, 95, -1, -1, 98, 39, -1, -1, -1, - -1, 44, -1, -1, -1, -1, -1, -1, 51, -1, - -1, -1, 55, 56, 57, -1, -1, -1, -1, -1, - 63, -1, 65, 66, -1, -1, 69, -1, -1, -1, - -1, -1, -1, -1, 77, -1, -1, -1, -1, 82, - 83, -1, -1, 86, -1, -1, -1, -1, -1, -1, - -1, -1, 95, -1, -1, 98 + 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, + 115, 116, 117, 118, 119, -1, 121, 122, -1, -1, + 125, 126, 127, -1, 129, 130, 22, 23, 24, 25, + -1, -1, -1, -1, -1, -1, 32, -1, 34, -1, + 36, 37, -1, 39, -1, -1, -1, 43, -1, -1, + -1, 47, -1, -1, -1, -1, 52, -1, -1, -1, + 56, -1, 58, 59, 60, -1, -1, -1, 64, 65, + 66, -1, -1, -1, -1, -1, 72, -1, 74, 75, + -1, -1, 78, -1, -1, -1, -1, -1, -1, -1, + 86, -1, -1, -1, -1, 91, 92, -1, -1, 95, + -1, -1, -1, -1, -1, -1, -1, -1, 104, -1, + 106, 107, -1, -1, 110, 22, 23, 24, 25, -1, + 116, -1, -1, -1, -1, 32, -1, 34, -1, 36, + 37, -1, 39, -1, -1, -1, 43, -1, -1, -1, + 47, -1, -1, -1, -1, 52, -1, -1, -1, 56, + -1, 58, 59, 60, -1, -1, -1, 64, 65, 66, + -1, -1, -1, -1, -1, 72, -1, 74, 75, -1, + -1, 78, -1, -1, -1, -1, -1, -1, -1, 86, + -1, -1, -1, -1, 91, 92, -1, -1, 95, -1, + -1, -1, -1, -1, -1, -1, -1, 104, -1, 106, + 107, -1, -1, 110, 22, 23, 24, 25, -1, 116, + -1, -1, -1, -1, 32, -1, 34, -1, 36, 37, + -1, 39, -1, -1, -1, 43, -1, -1, -1, 47, + -1, -1, -1, -1, 52, -1, -1, -1, 56, -1, + -1, -1, 60, -1, -1, 63, 64, 65, 66, -1, + -1, -1, -1, -1, 72, -1, 74, 75, -1, -1, + 78, -1, -1, -1, -1, -1, -1, -1, 86, -1, + -1, -1, -1, 91, 92, -1, -1, 95, -1, -1, + -1, -1, -1, -1, -1, -1, 104, -1, 106, 107, + -1, -1, 110, 22, 23, 24, 25, -1, 116, -1, + -1, -1, -1, 32, -1, 34, -1, 36, 37, -1, + 39, -1, -1, -1, 43, -1, -1, -1, 47, -1, + -1, -1, -1, 52, -1, -1, -1, 56, -1, -1, + -1, 60, -1, -1, -1, 64, 65, 66, -1, -1, + -1, -1, -1, 72, -1, 74, 75, -1, -1, 78, + -1, -1, -1, -1, -1, -1, -1, 86, -1, -1, + -1, -1, 91, 92, -1, -1, 95, -1, -1, -1, + -1, -1, -1, -1, -1, 104, -1, 106, 107, -1, + -1, 110, 22, 23, 24, 25, -1, 116, -1, -1, + -1, -1, 32, -1, 34, -1, 36, 37, -1, 39, + -1, -1, -1, 43, -1, -1, -1, 47, -1, -1, + -1, -1, 52, -1, -1, -1, 56, -1, -1, -1, + 60, -1, -1, -1, 64, 65, 66, -1, -1, -1, + -1, -1, 72, -1, 74, 75, -1, -1, 78, -1, + -1, -1, -1, -1, -1, -1, 86, -1, -1, -1, + -1, 91, 92, -1, -1, 95, -1, -1, -1, -1, + -1, -1, -1, -1, 104, -1, 106, 107, -1, -1, + 110, 22, 23, 24, 25, -1, 116, -1, -1, -1, + -1, 32, -1, 34, -1, 36, 37, -1, 39, -1, + -1, -1, 43, -1, -1, -1, 47, -1, -1, -1, + -1, 52, -1, -1, -1, 56, -1, -1, -1, 60, + -1, -1, -1, 64, 65, 66, -1, -1, -1, -1, + -1, 72, -1, 74, 75, -1, -1, 78, -1, -1, + -1, -1, -1, -1, -1, 86, -1, -1, -1, -1, + 91, 92, -1, -1, 95, -1, -1, -1, -1, -1, + -1, -1, -1, 104, -1, 106, 107, -1, -1, 110, + -1, -1, -1, -1, -1, 116 }; - /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing - symbol of state STATE-NUM. */ +/* YYSTOS[STATE-NUM] -- The (internal number of the) accessing + symbol of state STATE-NUM. */ static const yytype_uint8 yystos[] = { - 0, 130, 131, 0, 21, 122, 132, 135, 136, 208, - 18, 20, 23, 24, 26, 27, 28, 32, 33, 34, - 35, 36, 37, 38, 39, 40, 41, 42, 43, 45, - 46, 47, 48, 50, 52, 53, 54, 56, 57, 58, - 61, 63, 64, 66, 68, 69, 71, 72, 73, 75, - 76, 77, 78, 79, 81, 83, 84, 86, 87, 88, - 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, - 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, - 110, 111, 114, 115, 116, 118, 119, 212, 213, 84, - 92, 118, 123, 134, 29, 44, 137, 22, 48, 18, - 133, 213, 53, 115, 116, 157, 18, 21, 44, 138, - 139, 140, 149, 213, 18, 19, 20, 21, 27, 31, - 32, 39, 54, 55, 56, 57, 63, 65, 66, 69, - 77, 82, 83, 86, 95, 98, 135, 158, 159, 160, - 161, 167, 168, 171, 176, 177, 178, 181, 183, 184, - 185, 186, 187, 189, 190, 191, 192, 193, 195, 196, - 198, 209, 212, 139, 24, 36, 79, 105, 142, 150, - 212, 172, 18, 19, 20, 197, 199, 194, 40, 108, - 162, 206, 194, 123, 197, 204, 123, 13, 127, 128, - 156, 210, 212, 51, 59, 60, 74, 121, 22, 59, - 105, 41, 151, 22, 120, 173, 174, 123, 120, 200, - 201, 197, 47, 157, 197, 205, 204, 120, 123, 211, - 210, 18, 19, 20, 179, 180, 180, 157, 188, 207, - 18, 19, 148, 213, 141, 33, 152, 206, 49, 174, - 175, 202, 203, 212, 201, 70, 18, 19, 163, 164, - 166, 167, 169, 123, 204, 188, 67, 106, 182, 51, - 188, 123, 124, 144, 18, 19, 213, 80, 153, 157, - 157, 51, 85, 112, 123, 126, 156, 49, 50, 170, - 9, 67, 74, 145, 146, 149, 59, 71, 147, 82, - 45, 123, 154, 155, 156, 31, 203, 157, 164, 165, - 157, 206, 51, 26, 210, 125, 126, 151, 143, 123, - 157, 65, 207, 123, 146, 123, 188 -}; - - /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ -static const yytype_uint8 yyr1[] = -{ - 0, 129, 130, 131, 131, 132, 132, 132, 132, 132, - 133, 133, 134, 134, 135, 136, 136, 136, 137, 138, - 138, 139, 139, 139, 140, 140, 141, 140, 142, 142, - 142, 143, 144, 144, 145, 145, 146, 147, 147, 148, - 148, 148, 149, 149, 150, 150, 151, 152, 152, 152, - 152, 153, 153, 154, 154, 155, 155, 156, 156, 157, - 157, 158, 158, 158, 158, 158, 158, 158, 158, 158, - 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, - 158, 158, 159, 160, 161, 162, 162, 162, 163, 163, - 164, 165, 166, 166, 166, 167, 167, 168, 169, 169, - 170, 170, 171, 172, 173, 173, 174, 175, 175, 176, - 177, 178, 179, 180, 180, 180, 181, 182, 182, 183, - 184, 184, 185, 186, 187, 188, 189, 189, 189, 189, - 190, 191, 192, 193, 194, 195, 196, 197, 197, 197, - 198, 199, 198, 200, 200, 201, 202, 202, 203, 204, - 205, 206, 207, 208, 208, 209, 209, 210, 210, 211, - 211, 212, 212, 212, 213, 213, 213, 213, 213, 213, - 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, - 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, - 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, - 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, - 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, - 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, - 213, 213, 213, 213, 213, 213, 213, 213, 213 + 0, 141, 142, 0, 25, 133, 143, 146, 147, 224, + 22, 24, 27, 28, 30, 31, 32, 33, 36, 38, + 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, + 49, 50, 51, 53, 54, 55, 56, 57, 59, 61, + 62, 63, 65, 66, 67, 70, 72, 73, 75, 77, + 78, 80, 81, 82, 84, 85, 86, 87, 88, 90, + 92, 93, 95, 96, 97, 98, 99, 100, 101, 102, + 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, + 113, 114, 115, 116, 117, 118, 119, 121, 122, 125, + 126, 127, 129, 130, 228, 229, 93, 101, 129, 134, + 145, 34, 52, 148, 26, 57, 22, 144, 229, 62, + 126, 127, 168, 22, 25, 52, 149, 150, 151, 160, + 229, 22, 23, 24, 25, 32, 36, 37, 39, 43, + 47, 56, 63, 64, 65, 66, 72, 74, 75, 78, + 86, 91, 92, 95, 104, 106, 107, 110, 116, 146, + 169, 170, 171, 172, 173, 179, 180, 183, 188, 189, + 190, 193, 195, 196, 197, 198, 199, 201, 202, 203, + 204, 205, 207, 208, 209, 210, 212, 214, 225, 228, + 150, 28, 44, 88, 115, 153, 161, 228, 184, 22, + 23, 24, 213, 30, 211, 215, 206, 48, 119, 174, + 222, 206, 134, 213, 220, 211, 134, 15, 138, 139, + 167, 226, 228, 60, 68, 69, 83, 132, 26, 68, + 115, 49, 162, 26, 131, 185, 186, 134, 38, 88, + 134, 131, 216, 217, 213, 55, 168, 213, 134, 221, + 220, 131, 134, 227, 226, 22, 23, 24, 191, 192, + 192, 168, 200, 223, 22, 23, 159, 229, 152, 40, + 163, 222, 58, 186, 187, 38, 218, 219, 228, 217, + 79, 22, 23, 175, 176, 178, 179, 181, 134, 220, + 200, 76, 117, 194, 60, 200, 134, 135, 155, 22, + 23, 229, 89, 164, 168, 168, 60, 94, 123, 134, + 137, 167, 58, 59, 182, 11, 76, 83, 156, 157, + 160, 68, 80, 158, 91, 53, 134, 165, 166, 167, + 37, 219, 168, 176, 177, 168, 222, 60, 31, 226, + 136, 137, 162, 154, 134, 168, 74, 223, 134, 157, + 134, 200 }; - /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN. */ -static const yytype_uint8 yyr2[] = -{ - 0, 2, 3, 0, 2, 3, 3, 3, 3, 3, - 1, 1, 0, 1, 6, 1, 2, 3, 1, 2, - 1, 1, 1, 3, 6, 5, 0, 7, 0, 2, - 1, 0, 0, 3, 1, 3, 2, 1, 1, 1, - 1, 1, 1, 1, 0, 1, 0, 0, 2, 2, - 2, 0, 2, 1, 1, 1, 1, 1, 1, 0, - 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 2, 3, 5, 0, 1, 1, 3, 1, - 3, 0, 1, 1, 1, 1, 3, 8, 0, 4, - 0, 2, 7, 0, 2, 1, 3, 0, 2, 3, - 4, 4, 2, 1, 1, 1, 8, 0, 2, 3, - 1, 1, 1, 1, 1, 5, 1, 1, 1, 1, - 1, 2, 4, 4, 0, 3, 2, 1, 1, 1, - 0, 0, 3, 2, 1, 4, 3, 1, 1, 0, - 0, 0, 0, 0, 3, 0, 3, 0, 1, 1, - 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1 -}; +#define yyerrok (yyerrstatus = 0) +#define yyclearin (yychar = YYEMPTY) +#define YYEMPTY (-2) +#define YYEOF 0 +#define YYACCEPT goto yyacceptlab +#define YYABORT goto yyabortlab +#define YYERROR goto yyerrorlab -#define yyerrok (yyerrstatus = 0) -#define yyclearin (yychar = YYEMPTY) -#define YYEMPTY (-2) -#define YYEOF 0 -#define YYACCEPT goto yyacceptlab -#define YYABORT goto yyabortlab -#define YYERROR goto yyerrorlab +/* Like YYERROR except do call yyerror. This remains here temporarily + to ease the transition to the new meaning of YYERROR, for GCC. + Once GCC version 2 has supplanted version 1, this can go. */ +#define YYFAIL goto yyerrlab #define YYRECOVERING() (!!yyerrstatus) -#define YYBACKUP(Token, Value) \ - do \ - if (yychar == YYEMPTY) \ - { \ - yychar = (Token); \ - yylval = (Value); \ - YYPOPSTACK (yylen); \ - yystate = *yyssp; \ - goto yybackup; \ - } \ - else \ - { \ - yyerror (YY_("syntax error: cannot back up")); \ - YYERROR; \ - } \ - while (0) - -/* Error token number */ -#define YYTERROR 1 -#define YYERRCODE 256 +#define YYBACKUP(Token, Value) \ +do \ + if (yychar == YYEMPTY && yylen == 1) \ + { \ + yychar = (Token); \ + yylval = (Value); \ + yytoken = YYTRANSLATE (yychar); \ + YYPOPSTACK (1); \ + goto yybackup; \ + } \ + else \ + { \ + yyerror (YY_("syntax error: cannot back up")); \ + YYERROR; \ + } \ +while (YYID (0)) + + +#define YYTERROR 1 +#define YYERRCODE 256 /* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N]. If N is 0, then set CURRENT to the empty location which ends the previous symbol: RHS[0] (always defined). */ +#define YYRHSLOC(Rhs, K) ((Rhs)[K]) #ifndef YYLLOC_DEFAULT -# define YYLLOC_DEFAULT(Current, Rhs, N) \ - do \ - if (N) \ - { \ - (Current).first_line = YYRHSLOC (Rhs, 1).first_line; \ - (Current).first_column = YYRHSLOC (Rhs, 1).first_column; \ - (Current).last_line = YYRHSLOC (Rhs, N).last_line; \ - (Current).last_column = YYRHSLOC (Rhs, N).last_column; \ - } \ - else \ - { \ - (Current).first_line = (Current).last_line = \ - YYRHSLOC (Rhs, 0).last_line; \ - (Current).first_column = (Current).last_column = \ - YYRHSLOC (Rhs, 0).last_column; \ - } \ - while (0) +# define YYLLOC_DEFAULT(Current, Rhs, N) \ + do \ + if (YYID (N)) \ + { \ + (Current).first_line = YYRHSLOC (Rhs, 1).first_line; \ + (Current).first_column = YYRHSLOC (Rhs, 1).first_column; \ + (Current).last_line = YYRHSLOC (Rhs, N).last_line; \ + (Current).last_column = YYRHSLOC (Rhs, N).last_column; \ + } \ + else \ + { \ + (Current).first_line = (Current).last_line = \ + YYRHSLOC (Rhs, 0).last_line; \ + (Current).first_column = (Current).last_column = \ + YYRHSLOC (Rhs, 0).last_column; \ + } \ + while (YYID (0)) #endif -#define YYRHSLOC(Rhs, K) ((Rhs)[K]) - - -/* Enable debugging if requested. */ -#if YYDEBUG - -# ifndef YYFPRINTF -# include /* INFRINGES ON USER NAME SPACE */ -# define YYFPRINTF fprintf -# endif - -# define YYDPRINTF(Args) \ -do { \ - if (yydebug) \ - YYFPRINTF Args; \ -} while (0) - /* YY_LOCATION_PRINT -- Print the location on the stream. This macro was not mandated originally: define only if we know @@ -1434,90 +1687,111 @@ do { \ #ifndef YY_LOCATION_PRINT # if defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL - -/* Print *YYLOCP on YYO. Private, do not rely on its existence. */ - -YY_ATTRIBUTE_UNUSED -static int -yy_location_print_ (FILE *yyo, YYLTYPE const * const yylocp) -{ - int res = 0; - int end_col = 0 != yylocp->last_column ? yylocp->last_column - 1 : 0; - if (0 <= yylocp->first_line) - { - res += YYFPRINTF (yyo, "%d", yylocp->first_line); - if (0 <= yylocp->first_column) - res += YYFPRINTF (yyo, ".%d", yylocp->first_column); - } - if (0 <= yylocp->last_line) - { - if (yylocp->first_line < yylocp->last_line) - { - res += YYFPRINTF (yyo, "-%d", yylocp->last_line); - if (0 <= end_col) - res += YYFPRINTF (yyo, ".%d", end_col); - } - else if (0 <= end_col && yylocp->first_column < end_col) - res += YYFPRINTF (yyo, "-%d", end_col); - } - return res; - } - -# define YY_LOCATION_PRINT(File, Loc) \ - yy_location_print_ (File, &(Loc)) - +# define YY_LOCATION_PRINT(File, Loc) \ + fprintf (File, "%d.%d-%d.%d", \ + (Loc).first_line, (Loc).first_column, \ + (Loc).last_line, (Loc).last_column) # else # define YY_LOCATION_PRINT(File, Loc) ((void) 0) # endif #endif -# define YY_SYMBOL_PRINT(Title, Type, Value, Location) \ -do { \ - if (yydebug) \ - { \ - YYFPRINTF (stderr, "%s ", Title); \ - yy_symbol_print (stderr, \ - Type, Value, Location); \ - YYFPRINTF (stderr, "\n"); \ - } \ -} while (0) +/* YYLEX -- calling `yylex' with the right arguments. */ +#ifdef YYLEX_PARAM +# define YYLEX yylex (YYLEX_PARAM) +#else +# define YYLEX yylex () +#endif -/*-----------------------------------. -| Print this symbol's value on YYO. | -`-----------------------------------*/ +/* Enable debugging if requested. */ +#if YYDEBUG +# ifndef YYFPRINTF +# include /* INFRINGES ON USER NAME SPACE */ +# define YYFPRINTF fprintf +# endif + +# define YYDPRINTF(Args) \ +do { \ + if (yydebug) \ + YYFPRINTF Args; \ +} while (YYID (0)) + +# define YY_SYMBOL_PRINT(Title, Type, Value, Location) \ +do { \ + if (yydebug) \ + { \ + YYFPRINTF (stderr, "%s ", Title); \ + yy_symbol_print (stderr, \ + Type, Value, Location); \ + YYFPRINTF (stderr, "\n"); \ + } \ +} while (YYID (0)) + + +/*--------------------------------. +| Print this symbol on YYOUTPUT. | +`--------------------------------*/ + +/*ARGSUSED*/ +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) static void -yy_symbol_value_print (FILE *yyo, int yytype, YYSTYPE const * const yyvaluep, YYLTYPE const * const yylocationp) +yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep, YYLTYPE const * const yylocationp) +#else +static void +yy_symbol_value_print (yyoutput, yytype, yyvaluep, yylocationp) + FILE *yyoutput; + int yytype; + YYSTYPE const * const yyvaluep; + YYLTYPE const * const yylocationp; +#endif { - FILE *yyoutput = yyo; - YYUSE (yyoutput); - YYUSE (yylocationp); if (!yyvaluep) return; + YYUSE (yylocationp); # ifdef YYPRINT if (yytype < YYNTOKENS) - YYPRINT (yyo, yytoknum[yytype], *yyvaluep); + YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep); +# else + YYUSE (yyoutput); # endif - YYUSE (yytype); + switch (yytype) + { + default: + break; + } } -/*---------------------------. -| Print this symbol on YYO. | -`---------------------------*/ +/*--------------------------------. +| Print this symbol on YYOUTPUT. | +`--------------------------------*/ +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +static void +yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep, YYLTYPE const * const yylocationp) +#else static void -yy_symbol_print (FILE *yyo, int yytype, YYSTYPE const * const yyvaluep, YYLTYPE const * const yylocationp) +yy_symbol_print (yyoutput, yytype, yyvaluep, yylocationp) + FILE *yyoutput; + int yytype; + YYSTYPE const * const yyvaluep; + YYLTYPE const * const yylocationp; +#endif { - YYFPRINTF (yyo, "%s %s (", - yytype < YYNTOKENS ? "token" : "nterm", yytname[yytype]); + if (yytype < YYNTOKENS) + YYFPRINTF (yyoutput, "token %s (", yytname[yytype]); + else + YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]); - YY_LOCATION_PRINT (yyo, *yylocationp); - YYFPRINTF (yyo, ": "); - yy_symbol_value_print (yyo, yytype, yyvaluep, yylocationp); - YYFPRINTF (yyo, ")"); + YY_LOCATION_PRINT (yyoutput, *yylocationp); + YYFPRINTF (yyoutput, ": "); + yy_symbol_value_print (yyoutput, yytype, yyvaluep, yylocationp); + YYFPRINTF (yyoutput, ")"); } /*------------------------------------------------------------------. @@ -1525,54 +1799,67 @@ yy_symbol_print (FILE *yyo, int yytype, YYSTYPE const * const yyvaluep, YYLTYPE | TOP (included). | `------------------------------------------------------------------*/ +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) static void -yy_stack_print (yytype_int16 *yybottom, yytype_int16 *yytop) +yy_stack_print (yytype_int16 *bottom, yytype_int16 *top) +#else +static void +yy_stack_print (bottom, top) + yytype_int16 *bottom; + yytype_int16 *top; +#endif { YYFPRINTF (stderr, "Stack now"); - for (; yybottom <= yytop; yybottom++) - { - int yybot = *yybottom; - YYFPRINTF (stderr, " %d", yybot); - } + for (; bottom <= top; ++bottom) + YYFPRINTF (stderr, " %d", *bottom); YYFPRINTF (stderr, "\n"); } -# define YY_STACK_PRINT(Bottom, Top) \ -do { \ - if (yydebug) \ - yy_stack_print ((Bottom), (Top)); \ -} while (0) +# define YY_STACK_PRINT(Bottom, Top) \ +do { \ + if (yydebug) \ + yy_stack_print ((Bottom), (Top)); \ +} while (YYID (0)) /*------------------------------------------------. | Report that the YYRULE is going to be reduced. | `------------------------------------------------*/ +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +static void +yy_reduce_print (YYSTYPE *yyvsp, YYLTYPE *yylsp, int yyrule) +#else static void -yy_reduce_print (yytype_int16 *yyssp, YYSTYPE *yyvsp, YYLTYPE *yylsp, int yyrule) +yy_reduce_print (yyvsp, yylsp, yyrule) + YYSTYPE *yyvsp; + YYLTYPE *yylsp; + int yyrule; +#endif { - unsigned long yylno = yyrline[yyrule]; int yynrhs = yyr2[yyrule]; int yyi; + unsigned long int yylno = yyrline[yyrule]; YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n", - yyrule - 1, yylno); + yyrule - 1, yylno); /* The symbols being reduced. */ for (yyi = 0; yyi < yynrhs; yyi++) { - YYFPRINTF (stderr, " $%d = ", yyi + 1); - yy_symbol_print (stderr, - yystos[yyssp[yyi + 1 - yynrhs]], - &yyvsp[(yyi + 1) - (yynrhs)] - , &(yylsp[(yyi + 1) - (yynrhs)]) ); - YYFPRINTF (stderr, "\n"); + fprintf (stderr, " $%d = ", yyi + 1); + yy_symbol_print (stderr, yyrhs[yyprhs[yyrule] + yyi], + &(yyvsp[(yyi + 1) - (yynrhs)]) + , &(yylsp[(yyi + 1) - (yynrhs)]) ); + fprintf (stderr, "\n"); } } -# define YY_REDUCE_PRINT(Rule) \ -do { \ - if (yydebug) \ - yy_reduce_print (yyssp, yyvsp, yylsp, Rule); \ -} while (0) +# define YY_REDUCE_PRINT(Rule) \ +do { \ + if (yydebug) \ + yy_reduce_print (yyvsp, yylsp, Rule); \ +} while (YYID (0)) /* Nonzero means print parse trace. It is left uninitialized so that multiple parsers can coexist. */ @@ -1586,7 +1873,7 @@ int yydebug; /* YYINITDEPTH -- initial size of the parser's stacks. */ -#ifndef YYINITDEPTH +#ifndef YYINITDEPTH # define YYINITDEPTH 200 #endif @@ -1601,6 +1888,7 @@ int yydebug; # define YYMAXDEPTH 10000 #endif + #if YYERROR_VERBOSE @@ -1609,8 +1897,15 @@ int yydebug; # define yystrlen strlen # else /* Return the length of YYSTR. */ +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) static YYSIZE_T yystrlen (const char *yystr) +#else +static YYSIZE_T +yystrlen (yystr) + const char *yystr; +#endif { YYSIZE_T yylen; for (yylen = 0; yystr[yylen]; yylen++) @@ -1626,8 +1921,16 @@ yystrlen (const char *yystr) # else /* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in YYDEST. */ +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) static char * yystpcpy (char *yydest, const char *yysrc) +#else +static char * +yystpcpy (yydest, yysrc) + char *yydest; + const char *yysrc; +#endif { char *yyd = yydest; const char *yys = yysrc; @@ -1657,265 +1960,250 @@ yytnamerr (char *yyres, const char *yystr) char const *yyp = yystr; for (;;) - switch (*++yyp) - { - case '\'': - case ',': - goto do_not_strip_quotes; - - case '\\': - if (*++yyp != '\\') - goto do_not_strip_quotes; - else - goto append; - - append: - default: - if (yyres) - yyres[yyn] = *yyp; - yyn++; - break; - - case '"': - if (yyres) - yyres[yyn] = '\0'; - return yyn; - } + switch (*++yyp) + { + case '\'': + case ',': + goto do_not_strip_quotes; + + case '\\': + if (*++yyp != '\\') + goto do_not_strip_quotes; + /* Fall through. */ + default: + if (yyres) + yyres[yyn] = *yyp; + yyn++; + break; + + case '"': + if (yyres) + yyres[yyn] = '\0'; + return yyn; + } do_not_strip_quotes: ; } if (! yyres) return yystrlen (yystr); - return (YYSIZE_T) (yystpcpy (yyres, yystr) - yyres); + return yystpcpy (yyres, yystr) - yyres; } # endif -/* Copy into *YYMSG, which is of size *YYMSG_ALLOC, an error message - about the unexpected token YYTOKEN for the state stack whose top is - YYSSP. - - Return 0 if *YYMSG was successfully written. Return 1 if *YYMSG is - not large enough to hold the message. In that case, also set - *YYMSG_ALLOC to the required number of bytes. Return 2 if the - required number of bytes is too large to store. */ -static int -yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg, - yytype_int16 *yyssp, int yytoken) +/* Copy into YYRESULT an error message about the unexpected token + YYCHAR while in state YYSTATE. Return the number of bytes copied, + including the terminating null byte. If YYRESULT is null, do not + copy anything; just return the number of bytes that would be + copied. As a special case, return 0 if an ordinary "syntax error" + message will do. Return YYSIZE_MAXIMUM if overflow occurs during + size calculation. */ +static YYSIZE_T +yysyntax_error (char *yyresult, int yystate, int yychar) { - YYSIZE_T yysize0 = yytnamerr (YY_NULLPTR, yytname[yytoken]); - YYSIZE_T yysize = yysize0; - enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 }; - /* Internationalized format string. */ - const char *yyformat = YY_NULLPTR; - /* Arguments of yyformat. */ - char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM]; - /* Number of reported tokens (one for the "unexpected", one per - "expected"). */ - int yycount = 0; - - /* There are many possibilities here to consider: - - If this state is a consistent state with a default action, then - the only way this function was invoked is if the default action - is an error action. In that case, don't check for expected - tokens because there are none. - - The only way there can be no lookahead present (in yychar) is if - this state is a consistent state with a default action. Thus, - detecting the absence of a lookahead is sufficient to determine - that there is no unexpected or expected token to report. In that - case, just report a simple "syntax error". - - Don't assume there isn't a lookahead just because this state is a - consistent state with a default action. There might have been a - previous inconsistent state, consistent state with a non-default - action, or user semantic action that manipulated yychar. - - Of course, the expected token list depends on states to have - correct lookahead information, and it depends on the parser not - to perform extra reductions after fetching a lookahead from the - scanner and before detecting a syntax error. Thus, state merging - (from LALR or IELR) and default reductions corrupt the expected - token list. However, the list is correct for canonical LR with - one exception: it will still contain any token that will not be - accepted due to an error action in a later state. - */ - if (yytoken != YYEMPTY) - { - int yyn = yypact[*yyssp]; - yyarg[yycount++] = yytname[yytoken]; - if (!yypact_value_is_default (yyn)) - { - /* Start YYX at -YYN if negative to avoid negative indexes in - YYCHECK. In other words, skip the first -YYN actions for - this state because they are default actions. */ - int yyxbegin = yyn < 0 ? -yyn : 0; - /* Stay within bounds of both yycheck and yytname. */ - int yychecklim = YYLAST - yyn + 1; - int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS; - int yyx; - - for (yyx = yyxbegin; yyx < yyxend; ++yyx) - if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR - && !yytable_value_is_error (yytable[yyx + yyn])) - { - if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM) - { - yycount = 1; - yysize = yysize0; - break; - } - yyarg[yycount++] = yytname[yyx]; - { - YYSIZE_T yysize1 = yysize + yytnamerr (YY_NULLPTR, yytname[yyx]); - if (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM) - yysize = yysize1; - else - return 2; - } - } - } - } - - switch (yycount) - { -# define YYCASE_(N, S) \ - case N: \ - yyformat = S; \ - break - default: /* Avoid compiler warnings. */ - YYCASE_(0, YY_("syntax error")); - YYCASE_(1, YY_("syntax error, unexpected %s")); - YYCASE_(2, YY_("syntax error, unexpected %s, expecting %s")); - YYCASE_(3, YY_("syntax error, unexpected %s, expecting %s or %s")); - YYCASE_(4, YY_("syntax error, unexpected %s, expecting %s or %s or %s")); - YYCASE_(5, YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s")); -# undef YYCASE_ - } + int yyn = yypact[yystate]; - { - YYSIZE_T yysize1 = yysize + yystrlen (yyformat); - if (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM) + if (! (YYPACT_NINF < yyn && yyn <= YYLAST)) + return 0; + else + { + int yytype = YYTRANSLATE (yychar); + YYSIZE_T yysize0 = yytnamerr (0, yytname[yytype]); + YYSIZE_T yysize = yysize0; + YYSIZE_T yysize1; + int yysize_overflow = 0; + enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 }; + char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM]; + int yyx; + +# if 0 + /* This is so xgettext sees the translatable formats that are + constructed on the fly. */ + YY_("syntax error, unexpected %s"); + YY_("syntax error, unexpected %s, expecting %s"); + YY_("syntax error, unexpected %s, expecting %s or %s"); + YY_("syntax error, unexpected %s, expecting %s or %s or %s"); + YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s"); +# endif + char *yyfmt; + char const *yyf; + static char const yyunexpected[] = "syntax error, unexpected %s"; + static char const yyexpecting[] = ", expecting %s"; + static char const yyor[] = " or %s"; + char yyformat[sizeof yyunexpected + + sizeof yyexpecting - 1 + + ((YYERROR_VERBOSE_ARGS_MAXIMUM - 2) + * (sizeof yyor - 1))]; + char const *yyprefix = yyexpecting; + + /* Start YYX at -YYN if negative to avoid negative indexes in + YYCHECK. */ + int yyxbegin = yyn < 0 ? -yyn : 0; + + /* Stay within bounds of both yycheck and yytname. */ + int yychecklim = YYLAST - yyn + 1; + int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS; + int yycount = 1; + + yyarg[0] = yytname[yytype]; + yyfmt = yystpcpy (yyformat, yyunexpected); + + for (yyx = yyxbegin; yyx < yyxend; ++yyx) + if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR) + { + if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM) + { + yycount = 1; + yysize = yysize0; + yyformat[sizeof yyunexpected - 1] = '\0'; + break; + } + yyarg[yycount++] = yytname[yyx]; + yysize1 = yysize + yytnamerr (0, yytname[yyx]); + yysize_overflow |= (yysize1 < yysize); + yysize = yysize1; + yyfmt = yystpcpy (yyfmt, yyprefix); + yyprefix = yyor; + } + + yyf = YY_(yyformat); + yysize1 = yysize + yystrlen (yyf); + yysize_overflow |= (yysize1 < yysize); yysize = yysize1; - else - return 2; - } - if (*yymsg_alloc < yysize) - { - *yymsg_alloc = 2 * yysize; - if (! (yysize <= *yymsg_alloc - && *yymsg_alloc <= YYSTACK_ALLOC_MAXIMUM)) - *yymsg_alloc = YYSTACK_ALLOC_MAXIMUM; - return 1; - } + if (yysize_overflow) + return YYSIZE_MAXIMUM; - /* Avoid sprintf, as that infringes on the user's name space. - Don't have undefined behavior even if the translation - produced a string with the wrong number of "%s"s. */ - { - char *yyp = *yymsg; - int yyi = 0; - while ((*yyp = *yyformat) != '\0') - if (*yyp == '%' && yyformat[1] == 's' && yyi < yycount) - { - yyp += yytnamerr (yyp, yyarg[yyi++]); - yyformat += 2; - } - else - { - yyp++; - yyformat++; - } - } - return 0; + if (yyresult) + { + /* Avoid sprintf, as that infringes on the user's name space. + Don't have undefined behavior even if the translation + produced a string with the wrong number of "%s"s. */ + char *yyp = yyresult; + int yyi = 0; + while ((*yyp = *yyf) != '\0') + { + if (*yyp == '%' && yyf[1] == 's' && yyi < yycount) + { + yyp += yytnamerr (yyp, yyarg[yyi++]); + yyf += 2; + } + else + { + yyp++; + yyf++; + } + } + } + return yysize; + } } #endif /* YYERROR_VERBOSE */ + /*-----------------------------------------------. | Release the memory associated to this symbol. | `-----------------------------------------------*/ +/*ARGSUSED*/ +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) static void yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocationp) +#else +static void +yydestruct (yymsg, yytype, yyvaluep, yylocationp) + const char *yymsg; + int yytype; + YYSTYPE *yyvaluep; + YYLTYPE *yylocationp; +#endif { YYUSE (yyvaluep); YYUSE (yylocationp); + if (!yymsg) yymsg = "Deleting"; YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp); - YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN - YYUSE (yytype); - YY_IGNORE_MAYBE_UNINITIALIZED_END + switch (yytype) + { + + default: + break; + } } + +/* Prevent warnings from -Wmissing-prototypes. */ + +#ifdef YYPARSE_PARAM +#if defined __STDC__ || defined __cplusplus +int yyparse (void *YYPARSE_PARAM); +#else +int yyparse (); +#endif +#else /* ! YYPARSE_PARAM */ +#if defined __STDC__ || defined __cplusplus +int yyparse (void); +#else +int yyparse (); +#endif +#endif /* ! YYPARSE_PARAM */ -/* The lookahead symbol. */ +/* The look-ahead symbol. */ __thread int yychar; -/* The semantic value of the lookahead symbol. */ +/* The semantic value of the look-ahead symbol. */ __thread YYSTYPE yylval; -/* Location data for the lookahead symbol. */ -__thread YYLTYPE yylloc -# if defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL - = { 1, 1, 1, 1 } -# endif -; + /* Number of syntax errors so far. */ __thread int yynerrs; +/* Location data for the look-ahead symbol. */ +__thread YYLTYPE yylloc; + + /*----------. | yyparse. | `----------*/ +#ifdef YYPARSE_PARAM +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +int +yyparse (void *YYPARSE_PARAM) +#else +int +yyparse (YYPARSE_PARAM) + void *YYPARSE_PARAM; +#endif +#else /* ! YYPARSE_PARAM */ +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) int yyparse (void) -{ - int yystate; - /* Number of tokens to shift before error messages enabled. */ - int yyerrstatus; - - /* The stacks and their tools: - 'yyss': related to states. - 'yyvs': related to semantic values. - 'yyls': related to locations. - - Refer to the stacks through separate pointers, to allow yyoverflow - to reallocate them elsewhere. */ - - /* The state stack. */ - yytype_int16 yyssa[YYINITDEPTH]; - yytype_int16 *yyss; - yytype_int16 *yyssp; - - /* The semantic value stack. */ - YYSTYPE yyvsa[YYINITDEPTH]; - YYSTYPE *yyvs; - YYSTYPE *yyvsp; - - /* The location stack. */ - YYLTYPE yylsa[YYINITDEPTH]; - YYLTYPE *yyls; - YYLTYPE *yylsp; - - /* The locations where the error started and ended. */ - YYLTYPE yyerror_range[3]; - - YYSIZE_T yystacksize; +#else +int +yyparse () +#endif +#endif +{ + + int yystate; int yyn; int yyresult; - /* Lookahead token as an internal (translated) token number. */ + /* Number of tokens to shift before error messages enabled. */ + int yyerrstatus; + /* Look-ahead token as an internal (translated) token number. */ int yytoken = 0; - /* The variables used to return semantic value and location from the - action routines. */ - YYSTYPE yyval; - YYLTYPE yyloc; - #if YYERROR_VERBOSE /* Buffer for error messages, and its allocated size. */ char yymsgbuf[128]; @@ -1923,134 +2211,167 @@ yyparse (void) YYSIZE_T yymsg_alloc = sizeof yymsgbuf; #endif + /* Three stacks and their tools: + `yyss': related to states, + `yyvs': related to semantic values, + `yyls': related to locations. + + Refer to the stacks thru separate pointers, to allow yyoverflow + to reallocate them elsewhere. */ + + /* The state stack. */ + yytype_int16 yyssa[YYINITDEPTH]; + yytype_int16 *yyss = yyssa; + yytype_int16 *yyssp; + + /* The semantic value stack. */ + YYSTYPE yyvsa[YYINITDEPTH]; + YYSTYPE *yyvs = yyvsa; + YYSTYPE *yyvsp; + + /* The location stack. */ + YYLTYPE yylsa[YYINITDEPTH]; + YYLTYPE *yyls = yylsa; + YYLTYPE *yylsp; + /* The locations where the error started and ended. */ + YYLTYPE yyerror_range[2]; + #define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N), yylsp -= (N)) + YYSIZE_T yystacksize = YYINITDEPTH; + + /* The variables used to return semantic value and location from the + action routines. */ + YYSTYPE yyval; + YYLTYPE yyloc; + /* The number of symbols on the RHS of the reduced rule. Keep to zero when no symbol should be popped. */ int yylen = 0; - yyssp = yyss = yyssa; - yyvsp = yyvs = yyvsa; - yylsp = yyls = yylsa; - yystacksize = YYINITDEPTH; - YYDPRINTF ((stderr, "Starting parse\n")); yystate = 0; yyerrstatus = 0; yynerrs = 0; - yychar = YYEMPTY; /* Cause a token to be read. */ - yylsp[0] = yylloc; - goto yysetstate; + yychar = YYEMPTY; /* Cause a token to be read. */ + + /* Initialize stack pointers. + Waste one element of value and location stack + so that they stay on the same level as the state stack. + The wasted elements are never initialized. */ + + yyssp = yyss; + yyvsp = yyvs; + yylsp = yyls; +#if defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL + /* Initialize the default location before parsing starts. */ + yylloc.first_line = yylloc.last_line = 1; + yylloc.first_column = yylloc.last_column = 0; +#endif + goto yysetstate; /*------------------------------------------------------------. -| yynewstate -- push a new state, which is found in yystate. | +| yynewstate -- Push a new state, which is found in yystate. | `------------------------------------------------------------*/ -yynewstate: + yynewstate: /* In all cases, when you get here, the value and location stacks have just been pushed. So pushing a state here evens the stacks. */ yyssp++; - -/*--------------------------------------------------------------------. -| yynewstate -- set current state (the top of the stack) to yystate. | -`--------------------------------------------------------------------*/ -yysetstate: - *yyssp = (yytype_int16) yystate; + yysetstate: + *yyssp = yystate; if (yyss + yystacksize - 1 <= yyssp) -#if !defined yyoverflow && !defined YYSTACK_RELOCATE - goto yyexhaustedlab; -#else { /* Get the current used size of the three stacks, in elements. */ - YYSIZE_T yysize = (YYSIZE_T) (yyssp - yyss + 1); + YYSIZE_T yysize = yyssp - yyss + 1; -# if defined yyoverflow +#ifdef yyoverflow { - /* Give user a chance to reallocate the stack. Use copies of - these so that the &'s don't force the real ones into - memory. */ - YYSTYPE *yyvs1 = yyvs; - yytype_int16 *yyss1 = yyss; - YYLTYPE *yyls1 = yyls; - - /* Each stack pointer address is followed by the size of the - data in use in that stack, in bytes. This used to be a - conditional around just the two extra args, but that might - be undefined if yyoverflow is a macro. */ - yyoverflow (YY_("memory exhausted"), - &yyss1, yysize * sizeof (*yyssp), - &yyvs1, yysize * sizeof (*yyvsp), - &yyls1, yysize * sizeof (*yylsp), - &yystacksize); - yyss = yyss1; - yyvs = yyvs1; - yyls = yyls1; + /* Give user a chance to reallocate the stack. Use copies of + these so that the &'s don't force the real ones into + memory. */ + YYSTYPE *yyvs1 = yyvs; + yytype_int16 *yyss1 = yyss; + YYLTYPE *yyls1 = yyls; + + /* Each stack pointer address is followed by the size of the + data in use in that stack, in bytes. This used to be a + conditional around just the two extra args, but that might + be undefined if yyoverflow is a macro. */ + yyoverflow (YY_("memory exhausted"), + &yyss1, yysize * sizeof (*yyssp), + &yyvs1, yysize * sizeof (*yyvsp), + &yyls1, yysize * sizeof (*yylsp), + &yystacksize); + yyls = yyls1; + yyss = yyss1; + yyvs = yyvs1; } -# else /* defined YYSTACK_RELOCATE */ +#else /* no yyoverflow */ +# ifndef YYSTACK_RELOCATE + goto yyexhaustedlab; +# else /* Extend the stack our own way. */ if (YYMAXDEPTH <= yystacksize) - goto yyexhaustedlab; + goto yyexhaustedlab; yystacksize *= 2; if (YYMAXDEPTH < yystacksize) - yystacksize = YYMAXDEPTH; + yystacksize = YYMAXDEPTH; { - yytype_int16 *yyss1 = yyss; - union yyalloc *yyptr = - (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize)); - if (! yyptr) - goto yyexhaustedlab; - YYSTACK_RELOCATE (yyss_alloc, yyss); - YYSTACK_RELOCATE (yyvs_alloc, yyvs); - YYSTACK_RELOCATE (yyls_alloc, yyls); -# undef YYSTACK_RELOCATE - if (yyss1 != yyssa) - YYSTACK_FREE (yyss1); + yytype_int16 *yyss1 = yyss; + union yyalloc *yyptr = + (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize)); + if (! yyptr) + goto yyexhaustedlab; + YYSTACK_RELOCATE (yyss); + YYSTACK_RELOCATE (yyvs); + YYSTACK_RELOCATE (yyls); +# undef YYSTACK_RELOCATE + if (yyss1 != yyssa) + YYSTACK_FREE (yyss1); } # endif +#endif /* no yyoverflow */ yyssp = yyss + yysize - 1; yyvsp = yyvs + yysize - 1; yylsp = yyls + yysize - 1; YYDPRINTF ((stderr, "Stack size increased to %lu\n", - (unsigned long) yystacksize)); + (unsigned long int) yystacksize)); if (yyss + yystacksize - 1 <= yyssp) - YYABORT; + YYABORT; } -#endif /* !defined yyoverflow && !defined YYSTACK_RELOCATE */ YYDPRINTF ((stderr, "Entering state %d\n", yystate)); - if (yystate == YYFINAL) - YYACCEPT; - goto yybackup; - /*-----------. | yybackup. | `-----------*/ yybackup: + /* Do appropriate processing given the current state. Read a - lookahead token if we need one and don't already have one. */ + look-ahead token if we need one and don't already have one. */ - /* First try to decide what to do without reference to lookahead token. */ + /* First try to decide what to do without reference to look-ahead token. */ yyn = yypact[yystate]; - if (yypact_value_is_default (yyn)) + if (yyn == YYPACT_NINF) goto yydefault; - /* Not known => get a lookahead token if don't already have one. */ + /* Not known => get a look-ahead token if don't already have one. */ - /* YYCHAR is either YYEMPTY or YYEOF or a valid lookahead symbol. */ + /* YYCHAR is either YYEMPTY or YYEOF or a valid look-ahead symbol. */ if (yychar == YYEMPTY) { YYDPRINTF ((stderr, "Reading a token: ")); - yychar = yylex (); + yychar = YYLEX; } if (yychar <= YYEOF) @@ -2072,27 +2393,29 @@ yyparse (void) yyn = yytable[yyn]; if (yyn <= 0) { - if (yytable_value_is_error (yyn)) - goto yyerrlab; + if (yyn == 0 || yyn == YYTABLE_NINF) + goto yyerrlab; yyn = -yyn; goto yyreduce; } + if (yyn == YYFINAL) + YYACCEPT; + /* Count tokens shifted since error; after three, turn off error status. */ if (yyerrstatus) yyerrstatus--; - /* Shift the lookahead token. */ + /* Shift the look-ahead token. */ YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc); - /* Discard the shifted token. */ - yychar = YYEMPTY; + /* Discard the shifted token unless it is eof. */ + if (yychar != YYEOF) + yychar = YYEMPTY; yystate = yyn; - YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN *++yyvsp = yylval; - YY_IGNORE_MAYBE_UNINITIALIZED_END *++yylsp = yylloc; goto yynewstate; @@ -2108,14 +2431,14 @@ yyparse (void) /*-----------------------------. -| yyreduce -- do a reduction. | +| yyreduce -- Do a reduction. | `-----------------------------*/ yyreduce: /* yyn is the number of a rule to reduce with. */ yylen = yyr2[yyn]; /* If YYLEN is nonzero, implement the default value of the action: - '$$ = $1'. + `$$ = $1'. Otherwise, the following line sets YYVAL to garbage. This behavior is undocumented and Bison @@ -2124,140 +2447,128 @@ yyparse (void) GCC warning that YYVAL may be used uninitialized. */ yyval = yyvsp[1-yylen]; - /* Default location. */ + /* Default location. */ YYLLOC_DEFAULT (yyloc, (yylsp - yylen), yylen); - yyerror_range[1] = yyloc; YY_REDUCE_PRINT (yyn); switch (yyn) { case 2: -#line 354 "pl_gram.y" /* yacc.c:1652 */ +#line 365 "pl_gram.y" { - plpgsql_parse_result = (PLpgSQL_stmt_block *) (yyvsp[-1].stmt); - } -#line 2087 "pl_gram.c" /* yacc.c:1652 */ + plpgsql_parse_result = (PLpgSQL_stmt_block *) (yyvsp[(2) - (3)].stmt); + ;} break; case 5: -#line 364 "pl_gram.y" /* yacc.c:1652 */ +#line 375 "pl_gram.y" { plpgsql_DumpExecTree = true; - } -#line 2095 "pl_gram.c" /* yacc.c:1652 */ + ;} break; case 6: -#line 368 "pl_gram.y" /* yacc.c:1652 */ +#line 379 "pl_gram.y" { - if (strcmp((yyvsp[0].str), "on") == 0) + if (strcmp((yyvsp[(3) - (3)].str), "on") == 0) plpgsql_curr_compile->print_strict_params = true; - else if (strcmp((yyvsp[0].str), "off") == 0) + else if (strcmp((yyvsp[(3) - (3)].str), "off") == 0) plpgsql_curr_compile->print_strict_params = false; else - elog(ERROR, "unrecognized print_strict_params option %s", (yyvsp[0].str)); - } -#line 2108 "pl_gram.c" /* yacc.c:1652 */ + elog(ERROR, "unrecognized print_strict_params option %s", (yyvsp[(3) - (3)].str)); + ;} break; case 7: -#line 377 "pl_gram.y" /* yacc.c:1652 */ +#line 388 "pl_gram.y" { plpgsql_curr_compile->resolve_option = PLPGSQL_RESOLVE_ERROR; - } -#line 2116 "pl_gram.c" /* yacc.c:1652 */ + ;} break; case 8: -#line 381 "pl_gram.y" /* yacc.c:1652 */ +#line 392 "pl_gram.y" { plpgsql_curr_compile->resolve_option = PLPGSQL_RESOLVE_VARIABLE; - } -#line 2124 "pl_gram.c" /* yacc.c:1652 */ + ;} break; case 9: -#line 385 "pl_gram.y" /* yacc.c:1652 */ +#line 396 "pl_gram.y" { plpgsql_curr_compile->resolve_option = PLPGSQL_RESOLVE_COLUMN; - } -#line 2132 "pl_gram.c" /* yacc.c:1652 */ + ;} break; case 10: -#line 391 "pl_gram.y" /* yacc.c:1652 */ +#line 402 "pl_gram.y" { - (yyval.str) = (yyvsp[0].word).ident; - } -#line 2140 "pl_gram.c" /* yacc.c:1652 */ + (yyval.str) = (yyvsp[(1) - (1)].word).ident; + ;} break; case 11: -#line 395 "pl_gram.y" /* yacc.c:1652 */ +#line 406 "pl_gram.y" { - (yyval.str) = pstrdup((yyvsp[0].keyword)); - } -#line 2148 "pl_gram.c" /* yacc.c:1652 */ + (yyval.str) = pstrdup((yyvsp[(1) - (1)].keyword)); + ;} break; case 14: -#line 404 "pl_gram.y" /* yacc.c:1652 */ +#line 415 "pl_gram.y" { PLpgSQL_stmt_block *new; new = palloc0(sizeof(PLpgSQL_stmt_block)); new->cmd_type = PLPGSQL_STMT_BLOCK; - new->lineno = plpgsql_location_to_lineno((yylsp[-4])); - new->label = (yyvsp[-5].declhdr).label; - new->n_initvars = (yyvsp[-5].declhdr).n_initvars; - new->initvarnos = (yyvsp[-5].declhdr).initvarnos; - new->body = (yyvsp[-3].list); - new->exceptions = (yyvsp[-2].exception_block); - - check_labels((yyvsp[-5].declhdr).label, (yyvsp[0].str), (yylsp[0])); + new->lineno = plpgsql_location_to_lineno((yylsp[(2) - (6)])); + new->stmtid = ++plpgsql_curr_compile->nstatements; + new->label = (yyvsp[(1) - (6)].declhdr).label; + new->n_initvars = (yyvsp[(1) - (6)].declhdr).n_initvars; + new->initvarnos = (yyvsp[(1) - (6)].declhdr).initvarnos; + new->body = (yyvsp[(3) - (6)].list); + new->exceptions = (yyvsp[(4) - (6)].exception_block); + + check_labels((yyvsp[(1) - (6)].declhdr).label, (yyvsp[(6) - (6)].str), (yylsp[(6) - (6)])); plpgsql_ns_pop(); (yyval.stmt) = (PLpgSQL_stmt *)new; - } -#line 2171 "pl_gram.c" /* yacc.c:1652 */ + ;} break; case 15: -#line 426 "pl_gram.y" /* yacc.c:1652 */ +#line 438 "pl_gram.y" { /* done with decls, so resume identifier lookup */ plpgsql_IdentifierLookup = IDENTIFIER_LOOKUP_NORMAL; - (yyval.declhdr).label = (yyvsp[0].str); + (yyval.declhdr).label = (yyvsp[(1) - (1)].str); (yyval.declhdr).n_initvars = 0; (yyval.declhdr).initvarnos = NULL; - } -#line 2183 "pl_gram.c" /* yacc.c:1652 */ + ;} break; case 16: -#line 434 "pl_gram.y" /* yacc.c:1652 */ +#line 446 "pl_gram.y" { plpgsql_IdentifierLookup = IDENTIFIER_LOOKUP_NORMAL; - (yyval.declhdr).label = (yyvsp[-1].str); + (yyval.declhdr).label = (yyvsp[(1) - (2)].str); (yyval.declhdr).n_initvars = 0; (yyval.declhdr).initvarnos = NULL; - } -#line 2194 "pl_gram.c" /* yacc.c:1652 */ + ;} break; case 17: -#line 441 "pl_gram.y" /* yacc.c:1652 */ +#line 453 "pl_gram.y" { plpgsql_IdentifierLookup = IDENTIFIER_LOOKUP_NORMAL; - (yyval.declhdr).label = (yyvsp[-2].str); + (yyval.declhdr).label = (yyvsp[(1) - (3)].str); /* Remember variables declared in decl_stmts */ (yyval.declhdr).n_initvars = plpgsql_add_initdatums(&((yyval.declhdr).initvarnos)); - } -#line 2205 "pl_gram.c" /* yacc.c:1652 */ + ;} break; case 18: -#line 450 "pl_gram.y" /* yacc.c:1652 */ +#line 462 "pl_gram.y" { /* Forget any variables created before block */ plpgsql_add_initdatums(NULL); @@ -2266,20 +2577,18 @@ yyparse (void) * we process the decl_stmts */ plpgsql_IdentifierLookup = IDENTIFIER_LOOKUP_DECLARE; - } -#line 2219 "pl_gram.c" /* yacc.c:1652 */ + ;} break; case 22: -#line 467 "pl_gram.y" /* yacc.c:1652 */ +#line 479 "pl_gram.y" { /* We allow useless extra DECLAREs */ - } -#line 2227 "pl_gram.c" /* yacc.c:1652 */ + ;} break; case 23: -#line 471 "pl_gram.y" /* yacc.c:1652 */ +#line 483 "pl_gram.y" { /* * Throw a helpful error if user tries to put block @@ -2288,13 +2597,12 @@ yyparse (void) ereport(ERROR, (errcode(ERRCODE_SYNTAX_ERROR), errmsg("block label must be placed before DECLARE, not after"), - parser_errposition((yylsp[-2])))); - } -#line 2242 "pl_gram.c" /* yacc.c:1652 */ + parser_errposition((yylsp[(1) - (3)])))); + ;} break; case 24: -#line 484 "pl_gram.y" /* yacc.c:1652 */ +#line 496 "pl_gram.y" { PLpgSQL_variable *var; @@ -2304,71 +2612,51 @@ yyparse (void) * a freshly built struct not shared with other * variables. */ - if (OidIsValid((yyvsp[-2].oid))) + if (OidIsValid((yyvsp[(4) - (6)].oid))) { - if (!OidIsValid((yyvsp[-3].dtype)->collation)) + if (!OidIsValid((yyvsp[(3) - (6)].dtype)->collation)) ereport(ERROR, (errcode(ERRCODE_DATATYPE_MISMATCH), errmsg("collations are not supported by type %s", - format_type_be((yyvsp[-3].dtype)->typoid)), - parser_errposition((yylsp[-2])))); - (yyvsp[-3].dtype)->collation = (yyvsp[-2].oid); + format_type_be((yyvsp[(3) - (6)].dtype)->typoid)), + parser_errposition((yylsp[(4) - (6)])))); + (yyvsp[(3) - (6)].dtype)->collation = (yyvsp[(4) - (6)].oid); } - var = plpgsql_build_variable((yyvsp[-5].varname).name, (yyvsp[-5].varname).lineno, - (yyvsp[-3].dtype), true); - if ((yyvsp[-4].boolean)) - { - if (var->dtype == PLPGSQL_DTYPE_VAR) - ((PLpgSQL_var *) var)->isconst = (yyvsp[-4].boolean); - else - ereport(ERROR, - (errcode(ERRCODE_FEATURE_NOT_SUPPORTED), - errmsg("row or record variable cannot be CONSTANT"), - parser_errposition((yylsp[-4])))); - } - if ((yyvsp[-1].boolean)) - { - if (var->dtype == PLPGSQL_DTYPE_VAR) - ((PLpgSQL_var *) var)->notnull = (yyvsp[-1].boolean); - else - ereport(ERROR, - (errcode(ERRCODE_FEATURE_NOT_SUPPORTED), - errmsg("row or record variable cannot be NOT NULL"), - parser_errposition((yylsp[-2])))); + var = plpgsql_build_variable((yyvsp[(1) - (6)].varname).name, (yyvsp[(1) - (6)].varname).lineno, + (yyvsp[(3) - (6)].dtype), true); + var->isconst = (yyvsp[(2) - (6)].boolean); + var->notnull = (yyvsp[(5) - (6)].boolean); + var->default_val = (yyvsp[(6) - (6)].expr); - } - if ((yyvsp[0].expr) != NULL) - { - if (var->dtype == PLPGSQL_DTYPE_VAR) - ((PLpgSQL_var *) var)->default_val = (yyvsp[0].expr); - else - ereport(ERROR, - (errcode(ERRCODE_FEATURE_NOT_SUPPORTED), - errmsg("default value for row or record variable is not supported"), - parser_errposition((yylsp[-1])))); - } - } -#line 2301 "pl_gram.c" /* yacc.c:1652 */ + /* + * The combination of NOT NULL without an initializer + * can't work, so let's reject it at compile time. + */ + if (var->notnull && var->default_val == NULL) + ereport(ERROR, + (errcode(ERRCODE_NULL_VALUE_NOT_ALLOWED), + errmsg("variable \"%s\" must have a default value, since it's declared NOT NULL", + var->refname), + parser_errposition((yylsp[(5) - (6)])))); + ;} break; case 25: -#line 539 "pl_gram.y" /* yacc.c:1652 */ +#line 534 "pl_gram.y" { - plpgsql_ns_additem((yyvsp[-1].nsitem)->itemtype, - (yyvsp[-1].nsitem)->itemno, (yyvsp[-4].varname).name); - } -#line 2310 "pl_gram.c" /* yacc.c:1652 */ + plpgsql_ns_additem((yyvsp[(4) - (5)].nsitem)->itemtype, + (yyvsp[(4) - (5)].nsitem)->itemno, (yyvsp[(1) - (5)].varname).name); + ;} break; case 26: -#line 544 "pl_gram.y" /* yacc.c:1652 */ - { plpgsql_ns_push((yyvsp[-2].varname).name, PLPGSQL_LABEL_OTHER); } -#line 2316 "pl_gram.c" /* yacc.c:1652 */ +#line 539 "pl_gram.y" + { plpgsql_ns_push((yyvsp[(1) - (3)].varname).name, PLPGSQL_LABEL_OTHER); ;} break; case 27: -#line 546 "pl_gram.y" /* yacc.c:1652 */ +#line 541 "pl_gram.y" { PLpgSQL_var *new; PLpgSQL_expr *curname_def; @@ -2380,15 +2668,15 @@ yyparse (void) plpgsql_ns_pop(); new = (PLpgSQL_var *) - plpgsql_build_variable((yyvsp[-6].varname).name, (yyvsp[-6].varname).lineno, + plpgsql_build_variable((yyvsp[(1) - (7)].varname).name, (yyvsp[(1) - (7)].varname).lineno, plpgsql_build_datatype(REFCURSOROID, -1, - InvalidOid), + InvalidOid, + NULL), true); curname_def = palloc0(sizeof(PLpgSQL_expr)); - curname_def->dtype = PLPGSQL_DTYPE_EXPR; strcpy(buf, "SELECT "); cp1 = new->refname; cp2 = buf + strlen(buf); @@ -2409,58 +2697,52 @@ yyparse (void) curname_def->query = pstrdup(buf); new->default_val = curname_def; - new->cursor_explicit_expr = (yyvsp[0].expr); - if ((yyvsp[-2].datum) == NULL) + new->cursor_explicit_expr = (yyvsp[(7) - (7)].expr); + if ((yyvsp[(5) - (7)].datum) == NULL) new->cursor_explicit_argrow = -1; else - new->cursor_explicit_argrow = (yyvsp[-2].datum)->dno; - new->cursor_options = CURSOR_OPT_FAST_PLAN | (yyvsp[-5].ival); - } -#line 2368 "pl_gram.c" /* yacc.c:1652 */ + new->cursor_explicit_argrow = (yyvsp[(5) - (7)].datum)->dno; + new->cursor_options = CURSOR_OPT_FAST_PLAN | (yyvsp[(2) - (7)].ival); + ;} break; case 28: -#line 596 "pl_gram.y" /* yacc.c:1652 */ +#line 591 "pl_gram.y" { (yyval.ival) = 0; - } -#line 2376 "pl_gram.c" /* yacc.c:1652 */ + ;} break; case 29: -#line 600 "pl_gram.y" /* yacc.c:1652 */ +#line 595 "pl_gram.y" { (yyval.ival) = CURSOR_OPT_NO_SCROLL; - } -#line 2384 "pl_gram.c" /* yacc.c:1652 */ + ;} break; case 30: -#line 604 "pl_gram.y" /* yacc.c:1652 */ +#line 599 "pl_gram.y" { (yyval.ival) = CURSOR_OPT_SCROLL; - } -#line 2392 "pl_gram.c" /* yacc.c:1652 */ + ;} break; case 31: -#line 610 "pl_gram.y" /* yacc.c:1652 */ +#line 605 "pl_gram.y" { (yyval.expr) = read_sql_stmt(""); - } -#line 2400 "pl_gram.c" /* yacc.c:1652 */ + ;} break; case 32: -#line 616 "pl_gram.y" /* yacc.c:1652 */ +#line 611 "pl_gram.y" { (yyval.datum) = NULL; - } -#line 2408 "pl_gram.c" /* yacc.c:1652 */ + ;} break; case 33: -#line 620 "pl_gram.y" /* yacc.c:1652 */ +#line 615 "pl_gram.y" { PLpgSQL_row *new; int i; @@ -2468,108 +2750,104 @@ yyparse (void) new = palloc0(sizeof(PLpgSQL_row)); new->dtype = PLPGSQL_DTYPE_ROW; - new->lineno = plpgsql_location_to_lineno((yylsp[-2])); + new->refname = "(unnamed row)"; + new->lineno = plpgsql_location_to_lineno((yylsp[(1) - (3)])); new->rowtupdesc = NULL; - new->nfields = list_length((yyvsp[-1].list)); + new->nfields = list_length((yyvsp[(2) - (3)].list)); new->fieldnames = palloc(new->nfields * sizeof(char *)); new->varnos = palloc(new->nfields * sizeof(int)); i = 0; - foreach (l, (yyvsp[-1].list)) + foreach (l, (yyvsp[(2) - (3)].list)) { PLpgSQL_variable *arg = (PLpgSQL_variable *) lfirst(l); + Assert(!arg->isconst); new->fieldnames[i] = arg->refname; new->varnos[i] = arg->dno; i++; } - list_free((yyvsp[-1].list)); + list_free((yyvsp[(2) - (3)].list)); plpgsql_adddatum((PLpgSQL_datum *) new); (yyval.datum) = (PLpgSQL_datum *) new; - } -#line 2439 "pl_gram.c" /* yacc.c:1652 */ + ;} break; case 34: -#line 649 "pl_gram.y" /* yacc.c:1652 */ +#line 646 "pl_gram.y" { - (yyval.list) = list_make1((yyvsp[0].datum)); - } -#line 2447 "pl_gram.c" /* yacc.c:1652 */ + (yyval.list) = list_make1((yyvsp[(1) - (1)].datum)); + ;} break; case 35: -#line 653 "pl_gram.y" /* yacc.c:1652 */ +#line 650 "pl_gram.y" { - (yyval.list) = lappend((yyvsp[-2].list), (yyvsp[0].datum)); - } -#line 2455 "pl_gram.c" /* yacc.c:1652 */ + (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].datum)); + ;} break; case 36: -#line 659 "pl_gram.y" /* yacc.c:1652 */ +#line 656 "pl_gram.y" { (yyval.datum) = (PLpgSQL_datum *) - plpgsql_build_variable((yyvsp[-1].varname).name, (yyvsp[-1].varname).lineno, - (yyvsp[0].dtype), true); - } -#line 2465 "pl_gram.c" /* yacc.c:1652 */ + plpgsql_build_variable((yyvsp[(1) - (2)].varname).name, (yyvsp[(1) - (2)].varname).lineno, + (yyvsp[(2) - (2)].dtype), true); + ;} break; case 39: -#line 670 "pl_gram.y" /* yacc.c:1652 */ +#line 667 "pl_gram.y" { PLpgSQL_nsitem *nsi; nsi = plpgsql_ns_lookup(plpgsql_ns_top(), false, - (yyvsp[0].word).ident, NULL, NULL, + (yyvsp[(1) - (1)].word).ident, NULL, NULL, NULL); if (nsi == NULL) ereport(ERROR, (errcode(ERRCODE_UNDEFINED_OBJECT), errmsg("variable \"%s\" does not exist", - (yyvsp[0].word).ident), - parser_errposition((yylsp[0])))); + (yyvsp[(1) - (1)].word).ident), + parser_errposition((yylsp[(1) - (1)])))); (yyval.nsitem) = nsi; - } -#line 2484 "pl_gram.c" /* yacc.c:1652 */ + ;} break; case 40: -#line 685 "pl_gram.y" /* yacc.c:1652 */ +#line 682 "pl_gram.y" { PLpgSQL_nsitem *nsi; nsi = plpgsql_ns_lookup(plpgsql_ns_top(), false, - (yyvsp[0].keyword), NULL, NULL, + (yyvsp[(1) - (1)].keyword), NULL, NULL, NULL); if (nsi == NULL) ereport(ERROR, (errcode(ERRCODE_UNDEFINED_OBJECT), errmsg("variable \"%s\" does not exist", - (yyvsp[0].keyword)), - parser_errposition((yylsp[0])))); + (yyvsp[(1) - (1)].keyword)), + parser_errposition((yylsp[(1) - (1)])))); (yyval.nsitem) = nsi; - } -#line 2503 "pl_gram.c" /* yacc.c:1652 */ + ;} break; case 41: -#line 700 "pl_gram.y" /* yacc.c:1652 */ +#line 697 "pl_gram.y" { PLpgSQL_nsitem *nsi; - if (list_length((yyvsp[0].cword).idents) == 2) + if (list_length((yyvsp[(1) - (1)].cword).idents) == 2) nsi = plpgsql_ns_lookup(plpgsql_ns_top(), false, - strVal(linitial((yyvsp[0].cword).idents)), - strVal(lsecond((yyvsp[0].cword).idents)), + strVal(linitial((yyvsp[(1) - (1)].cword).idents)), + strVal(lsecond((yyvsp[(1) - (1)].cword).idents)), NULL, NULL); - else if (list_length((yyvsp[0].cword).idents) == 3) + else if (list_length((yyvsp[(1) - (1)].cword).idents) == 3) nsi = plpgsql_ns_lookup(plpgsql_ns_top(), false, - strVal(linitial((yyvsp[0].cword).idents)), - strVal(lsecond((yyvsp[0].cword).idents)), - strVal(lthird((yyvsp[0].cword).idents)), + strVal(linitial((yyvsp[(1) - (1)].cword).idents)), + strVal(lsecond((yyvsp[(1) - (1)].cword).idents)), + strVal(lthird((yyvsp[(1) - (1)].cword).idents)), NULL); else nsi = NULL; @@ -2577,24 +2855,23 @@ yyparse (void) ereport(ERROR, (errcode(ERRCODE_UNDEFINED_OBJECT), errmsg("variable \"%s\" does not exist", - NameListToString((yyvsp[0].cword).idents)), - parser_errposition((yylsp[0])))); + NameListToString((yyvsp[(1) - (1)].cword).idents)), + parser_errposition((yylsp[(1) - (1)])))); (yyval.nsitem) = nsi; - } -#line 2533 "pl_gram.c" /* yacc.c:1652 */ + ;} break; case 42: -#line 728 "pl_gram.y" /* yacc.c:1652 */ +#line 725 "pl_gram.y" { - (yyval.varname).name = (yyvsp[0].word).ident; - (yyval.varname).lineno = plpgsql_location_to_lineno((yylsp[0])); + (yyval.varname).name = (yyvsp[(1) - (1)].word).ident; + (yyval.varname).lineno = plpgsql_location_to_lineno((yylsp[(1) - (1)])); /* * Check to make sure name isn't already declared * in the current block. */ if (plpgsql_ns_lookup(plpgsql_ns_top(), true, - (yyvsp[0].word).ident, NULL, NULL, + (yyvsp[(1) - (1)].word).ident, NULL, NULL, NULL) != NULL) yyerror("duplicate declaration"); @@ -2603,30 +2880,29 @@ yyparse (void) { PLpgSQL_nsitem *nsi; nsi = plpgsql_ns_lookup(plpgsql_ns_top(), false, - (yyvsp[0].word).ident, NULL, NULL, NULL); + (yyvsp[(1) - (1)].word).ident, NULL, NULL, NULL); if (nsi != NULL) ereport(plpgsql_curr_compile->extra_errors & PLPGSQL_XCHECK_SHADOWVAR ? ERROR : WARNING, (errcode(ERRCODE_DUPLICATE_ALIAS), errmsg("variable \"%s\" shadows a previously defined variable", - (yyvsp[0].word).ident), - parser_errposition((yylsp[0])))); + (yyvsp[(1) - (1)].word).ident), + parser_errposition((yylsp[(1) - (1)])))); } - } -#line 2565 "pl_gram.c" /* yacc.c:1652 */ + ;} break; case 43: -#line 756 "pl_gram.y" /* yacc.c:1652 */ +#line 753 "pl_gram.y" { - (yyval.varname).name = pstrdup((yyvsp[0].keyword)); - (yyval.varname).lineno = plpgsql_location_to_lineno((yylsp[0])); + (yyval.varname).name = pstrdup((yyvsp[(1) - (1)].keyword)); + (yyval.varname).lineno = plpgsql_location_to_lineno((yylsp[(1) - (1)])); /* * Check to make sure name isn't already declared * in the current block. */ if (plpgsql_ns_lookup(plpgsql_ns_top(), true, - (yyvsp[0].keyword), NULL, NULL, + (yyvsp[(1) - (1)].keyword), NULL, NULL, NULL) != NULL) yyerror("duplicate declaration"); @@ -2635,33 +2911,30 @@ yyparse (void) { PLpgSQL_nsitem *nsi; nsi = plpgsql_ns_lookup(plpgsql_ns_top(), false, - (yyvsp[0].keyword), NULL, NULL, NULL); + (yyvsp[(1) - (1)].keyword), NULL, NULL, NULL); if (nsi != NULL) ereport(plpgsql_curr_compile->extra_errors & PLPGSQL_XCHECK_SHADOWVAR ? ERROR : WARNING, (errcode(ERRCODE_DUPLICATE_ALIAS), errmsg("variable \"%s\" shadows a previously defined variable", - (yyvsp[0].keyword)), - parser_errposition((yylsp[0])))); + (yyvsp[(1) - (1)].keyword)), + parser_errposition((yylsp[(1) - (1)])))); } - } -#line 2597 "pl_gram.c" /* yacc.c:1652 */ + ;} break; case 44: -#line 786 "pl_gram.y" /* yacc.c:1652 */ - { (yyval.boolean) = false; } -#line 2603 "pl_gram.c" /* yacc.c:1652 */ +#line 783 "pl_gram.y" + { (yyval.boolean) = false; ;} break; case 45: -#line 788 "pl_gram.y" /* yacc.c:1652 */ - { (yyval.boolean) = true; } -#line 2609 "pl_gram.c" /* yacc.c:1652 */ +#line 785 "pl_gram.y" + { (yyval.boolean) = true; ;} break; case 46: -#line 792 "pl_gram.y" /* yacc.c:1652 */ +#line 789 "pl_gram.y" { /* * If there's a lookahead token, read_datatype @@ -2669,254 +2942,278 @@ yyparse (void) */ (yyval.dtype) = read_datatype(yychar); yyclearin; - } -#line 2622 "pl_gram.c" /* yacc.c:1652 */ + ;} break; case 47: -#line 803 "pl_gram.y" /* yacc.c:1652 */ - { (yyval.oid) = InvalidOid; } -#line 2628 "pl_gram.c" /* yacc.c:1652 */ +#line 800 "pl_gram.y" + { (yyval.oid) = InvalidOid; ;} break; case 48: -#line 805 "pl_gram.y" /* yacc.c:1652 */ +#line 802 "pl_gram.y" { - (yyval.oid) = get_collation_oid(list_make1(makeString((yyvsp[0].word).ident)), + (yyval.oid) = get_collation_oid(list_make1(makeString((yyvsp[(2) - (2)].word).ident)), false); - } -#line 2637 "pl_gram.c" /* yacc.c:1652 */ + ;} break; case 49: -#line 810 "pl_gram.y" /* yacc.c:1652 */ +#line 807 "pl_gram.y" { - (yyval.oid) = get_collation_oid(list_make1(makeString(pstrdup((yyvsp[0].keyword)))), + (yyval.oid) = get_collation_oid(list_make1(makeString(pstrdup((yyvsp[(2) - (2)].keyword)))), false); - } -#line 2646 "pl_gram.c" /* yacc.c:1652 */ + ;} break; case 50: -#line 815 "pl_gram.y" /* yacc.c:1652 */ +#line 812 "pl_gram.y" { - (yyval.oid) = get_collation_oid((yyvsp[0].cword).idents, false); - } -#line 2654 "pl_gram.c" /* yacc.c:1652 */ + (yyval.oid) = get_collation_oid((yyvsp[(2) - (2)].cword).idents, false); + ;} break; case 51: -#line 821 "pl_gram.y" /* yacc.c:1652 */ - { (yyval.boolean) = false; } -#line 2660 "pl_gram.c" /* yacc.c:1652 */ +#line 818 "pl_gram.y" + { (yyval.boolean) = false; ;} break; case 52: -#line 823 "pl_gram.y" /* yacc.c:1652 */ - { (yyval.boolean) = true; } -#line 2666 "pl_gram.c" /* yacc.c:1652 */ +#line 820 "pl_gram.y" + { (yyval.boolean) = true; ;} break; case 53: -#line 827 "pl_gram.y" /* yacc.c:1652 */ - { (yyval.expr) = NULL; } -#line 2672 "pl_gram.c" /* yacc.c:1652 */ +#line 824 "pl_gram.y" + { (yyval.expr) = NULL; ;} break; case 54: -#line 829 "pl_gram.y" /* yacc.c:1652 */ +#line 826 "pl_gram.y" { (yyval.expr) = read_sql_expression(';', ";"); - } -#line 2680 "pl_gram.c" /* yacc.c:1652 */ + ;} break; case 59: -#line 848 "pl_gram.y" /* yacc.c:1652 */ - { (yyval.list) = NIL; } -#line 2686 "pl_gram.c" /* yacc.c:1652 */ +#line 845 "pl_gram.y" + { (yyval.list) = NIL; ;} break; case 60: -#line 850 "pl_gram.y" /* yacc.c:1652 */ +#line 847 "pl_gram.y" { /* don't bother linking null statements into list */ - if ((yyvsp[0].stmt) == NULL) - (yyval.list) = (yyvsp[-1].list); + if ((yyvsp[(2) - (2)].stmt) == NULL) + (yyval.list) = (yyvsp[(1) - (2)].list); else - (yyval.list) = lappend((yyvsp[-1].list), (yyvsp[0].stmt)); - } -#line 2698 "pl_gram.c" /* yacc.c:1652 */ + (yyval.list) = lappend((yyvsp[(1) - (2)].list), (yyvsp[(2) - (2)].stmt)); + ;} break; case 61: -#line 860 "pl_gram.y" /* yacc.c:1652 */ - { (yyval.stmt) = (yyvsp[-1].stmt); } -#line 2704 "pl_gram.c" /* yacc.c:1652 */ +#line 857 "pl_gram.y" + { (yyval.stmt) = (yyvsp[(1) - (2)].stmt); ;} break; case 62: -#line 862 "pl_gram.y" /* yacc.c:1652 */ - { (yyval.stmt) = (yyvsp[0].stmt); } -#line 2710 "pl_gram.c" /* yacc.c:1652 */ +#line 859 "pl_gram.y" + { (yyval.stmt) = (yyvsp[(1) - (1)].stmt); ;} break; case 63: -#line 864 "pl_gram.y" /* yacc.c:1652 */ - { (yyval.stmt) = (yyvsp[0].stmt); } -#line 2716 "pl_gram.c" /* yacc.c:1652 */ +#line 861 "pl_gram.y" + { (yyval.stmt) = (yyvsp[(1) - (1)].stmt); ;} break; case 64: -#line 866 "pl_gram.y" /* yacc.c:1652 */ - { (yyval.stmt) = (yyvsp[0].stmt); } -#line 2722 "pl_gram.c" /* yacc.c:1652 */ +#line 863 "pl_gram.y" + { (yyval.stmt) = (yyvsp[(1) - (1)].stmt); ;} break; case 65: -#line 868 "pl_gram.y" /* yacc.c:1652 */ - { (yyval.stmt) = (yyvsp[0].stmt); } -#line 2728 "pl_gram.c" /* yacc.c:1652 */ +#line 865 "pl_gram.y" + { (yyval.stmt) = (yyvsp[(1) - (1)].stmt); ;} break; case 66: -#line 870 "pl_gram.y" /* yacc.c:1652 */ - { (yyval.stmt) = (yyvsp[0].stmt); } -#line 2734 "pl_gram.c" /* yacc.c:1652 */ +#line 867 "pl_gram.y" + { (yyval.stmt) = (yyvsp[(1) - (1)].stmt); ;} break; case 67: -#line 872 "pl_gram.y" /* yacc.c:1652 */ - { (yyval.stmt) = (yyvsp[0].stmt); } -#line 2740 "pl_gram.c" /* yacc.c:1652 */ +#line 869 "pl_gram.y" + { (yyval.stmt) = (yyvsp[(1) - (1)].stmt); ;} break; case 68: -#line 874 "pl_gram.y" /* yacc.c:1652 */ - { (yyval.stmt) = (yyvsp[0].stmt); } -#line 2746 "pl_gram.c" /* yacc.c:1652 */ +#line 871 "pl_gram.y" + { (yyval.stmt) = (yyvsp[(1) - (1)].stmt); ;} break; case 69: -#line 876 "pl_gram.y" /* yacc.c:1652 */ - { (yyval.stmt) = (yyvsp[0].stmt); } -#line 2752 "pl_gram.c" /* yacc.c:1652 */ +#line 873 "pl_gram.y" + { (yyval.stmt) = (yyvsp[(1) - (1)].stmt); ;} break; case 70: -#line 878 "pl_gram.y" /* yacc.c:1652 */ - { (yyval.stmt) = (yyvsp[0].stmt); } -#line 2758 "pl_gram.c" /* yacc.c:1652 */ +#line 875 "pl_gram.y" + { (yyval.stmt) = (yyvsp[(1) - (1)].stmt); ;} break; case 71: -#line 880 "pl_gram.y" /* yacc.c:1652 */ - { (yyval.stmt) = (yyvsp[0].stmt); } -#line 2764 "pl_gram.c" /* yacc.c:1652 */ +#line 877 "pl_gram.y" + { (yyval.stmt) = (yyvsp[(1) - (1)].stmt); ;} break; case 72: -#line 882 "pl_gram.y" /* yacc.c:1652 */ - { (yyval.stmt) = (yyvsp[0].stmt); } -#line 2770 "pl_gram.c" /* yacc.c:1652 */ +#line 879 "pl_gram.y" + { (yyval.stmt) = (yyvsp[(1) - (1)].stmt); ;} break; case 73: -#line 884 "pl_gram.y" /* yacc.c:1652 */ - { (yyval.stmt) = (yyvsp[0].stmt); } -#line 2776 "pl_gram.c" /* yacc.c:1652 */ +#line 881 "pl_gram.y" + { (yyval.stmt) = (yyvsp[(1) - (1)].stmt); ;} break; case 74: -#line 886 "pl_gram.y" /* yacc.c:1652 */ - { (yyval.stmt) = (yyvsp[0].stmt); } -#line 2782 "pl_gram.c" /* yacc.c:1652 */ +#line 883 "pl_gram.y" + { (yyval.stmt) = (yyvsp[(1) - (1)].stmt); ;} break; case 75: -#line 888 "pl_gram.y" /* yacc.c:1652 */ - { (yyval.stmt) = (yyvsp[0].stmt); } -#line 2788 "pl_gram.c" /* yacc.c:1652 */ +#line 885 "pl_gram.y" + { (yyval.stmt) = (yyvsp[(1) - (1)].stmt); ;} break; case 76: -#line 890 "pl_gram.y" /* yacc.c:1652 */ - { (yyval.stmt) = (yyvsp[0].stmt); } -#line 2794 "pl_gram.c" /* yacc.c:1652 */ +#line 887 "pl_gram.y" + { (yyval.stmt) = (yyvsp[(1) - (1)].stmt); ;} break; case 77: -#line 892 "pl_gram.y" /* yacc.c:1652 */ - { (yyval.stmt) = (yyvsp[0].stmt); } -#line 2800 "pl_gram.c" /* yacc.c:1652 */ +#line 889 "pl_gram.y" + { (yyval.stmt) = (yyvsp[(1) - (1)].stmt); ;} break; case 78: -#line 894 "pl_gram.y" /* yacc.c:1652 */ - { (yyval.stmt) = (yyvsp[0].stmt); } -#line 2806 "pl_gram.c" /* yacc.c:1652 */ +#line 891 "pl_gram.y" + { (yyval.stmt) = (yyvsp[(1) - (1)].stmt); ;} + break; + + case 79: +#line 893 "pl_gram.y" + { (yyval.stmt) = (yyvsp[(1) - (1)].stmt); ;} break; - case 79: -#line 896 "pl_gram.y" /* yacc.c:1652 */ - { (yyval.stmt) = (yyvsp[0].stmt); } -#line 2812 "pl_gram.c" /* yacc.c:1652 */ - break; + case 80: +#line 895 "pl_gram.y" + { (yyval.stmt) = (yyvsp[(1) - (1)].stmt); ;} + break; + + case 81: +#line 897 "pl_gram.y" + { (yyval.stmt) = (yyvsp[(1) - (1)].stmt); ;} + break; + + case 82: +#line 899 "pl_gram.y" + { (yyval.stmt) = (yyvsp[(1) - (1)].stmt); ;} + break; + + case 83: +#line 901 "pl_gram.y" + { (yyval.stmt) = (yyvsp[(1) - (1)].stmt); ;} + break; + + case 84: +#line 903 "pl_gram.y" + { (yyval.stmt) = (yyvsp[(1) - (1)].stmt); ;} + break; + + case 85: +#line 905 "pl_gram.y" + { (yyval.stmt) = (yyvsp[(1) - (1)].stmt); ;} + break; + + case 86: +#line 909 "pl_gram.y" + { + PLpgSQL_stmt_perform *new; + + new = palloc0(sizeof(PLpgSQL_stmt_perform)); + new->cmd_type = PLPGSQL_STMT_PERFORM; + new->lineno = plpgsql_location_to_lineno((yylsp[(1) - (2)])); + new->stmtid = ++plpgsql_curr_compile->nstatements; + new->expr = (yyvsp[(2) - (2)].expr); + + (yyval.stmt) = (PLpgSQL_stmt *)new; + ;} + break; + + case 87: +#line 923 "pl_gram.y" + { + PLpgSQL_stmt_call *new; + + new = palloc0(sizeof(PLpgSQL_stmt_call)); + new->cmd_type = PLPGSQL_STMT_CALL; + new->lineno = plpgsql_location_to_lineno((yylsp[(1) - (1)])); + new->stmtid = ++plpgsql_curr_compile->nstatements; + new->expr = read_sql_stmt("CALL "); + new->is_call = true; - case 80: -#line 898 "pl_gram.y" /* yacc.c:1652 */ - { (yyval.stmt) = (yyvsp[0].stmt); } -#line 2818 "pl_gram.c" /* yacc.c:1652 */ - break; + (yyval.stmt) = (PLpgSQL_stmt *)new; - case 81: -#line 900 "pl_gram.y" /* yacc.c:1652 */ - { (yyval.stmt) = (yyvsp[0].stmt); } -#line 2824 "pl_gram.c" /* yacc.c:1652 */ + ;} break; - case 82: -#line 904 "pl_gram.y" /* yacc.c:1652 */ + case 88: +#line 937 "pl_gram.y" { - PLpgSQL_stmt_perform *new; + /* use the same structures as for CALL, for simplicity */ + PLpgSQL_stmt_call *new; - new = palloc0(sizeof(PLpgSQL_stmt_perform)); - new->cmd_type = PLPGSQL_STMT_PERFORM; - new->lineno = plpgsql_location_to_lineno((yylsp[-1])); - new->expr = (yyvsp[0].expr); + new = palloc0(sizeof(PLpgSQL_stmt_call)); + new->cmd_type = PLPGSQL_STMT_CALL; + new->lineno = plpgsql_location_to_lineno((yylsp[(1) - (1)])); + new->stmtid = ++plpgsql_curr_compile->nstatements; + new->expr = read_sql_stmt("DO "); + new->is_call = false; (yyval.stmt) = (PLpgSQL_stmt *)new; - } -#line 2839 "pl_gram.c" /* yacc.c:1652 */ + + ;} break; - case 83: -#line 917 "pl_gram.y" /* yacc.c:1652 */ + case 89: +#line 954 "pl_gram.y" { PLpgSQL_stmt_assign *new; new = palloc0(sizeof(PLpgSQL_stmt_assign)); new->cmd_type = PLPGSQL_STMT_ASSIGN; - new->lineno = plpgsql_location_to_lineno((yylsp[-2])); - new->varno = (yyvsp[-2].datum)->dno; - new->expr = (yyvsp[0].expr); + new->lineno = plpgsql_location_to_lineno((yylsp[(1) - (3)])); + new->stmtid = ++plpgsql_curr_compile->nstatements; + new->varno = (yyvsp[(1) - (3)].datum)->dno; + new->expr = (yyvsp[(3) - (3)].expr); (yyval.stmt) = (PLpgSQL_stmt *)new; - } -#line 2855 "pl_gram.c" /* yacc.c:1652 */ + ;} break; - case 84: -#line 931 "pl_gram.y" /* yacc.c:1652 */ + case 90: +#line 969 "pl_gram.y" { PLpgSQL_stmt_getdiag *new; ListCell *lc; new = palloc0(sizeof(PLpgSQL_stmt_getdiag)); new->cmd_type = PLPGSQL_STMT_GETDIAG; - new->lineno = plpgsql_location_to_lineno((yylsp[-4])); - new->is_stacked = (yyvsp[-3].boolean); - new->diag_items = (yyvsp[-1].list); + new->lineno = plpgsql_location_to_lineno((yylsp[(1) - (5)])); + new->stmtid = ++plpgsql_curr_compile->nstatements; + new->is_stacked = (yyvsp[(2) - (5)].boolean); + new->diag_items = (yyvsp[(4) - (5)].list); /* * Check information items are valid for area option. @@ -2929,13 +3226,12 @@ yyparse (void) { /* these fields are disallowed in stacked case */ case PLPGSQL_GETDIAG_ROW_COUNT: - case PLPGSQL_GETDIAG_RESULT_OID: if (new->is_stacked) ereport(ERROR, (errcode(ERRCODE_SYNTAX_ERROR), errmsg("diagnostics item %s is not allowed in GET STACKED DIAGNOSTICS", plpgsql_getdiag_kindname(ditem->kind)), - parser_errposition((yylsp[-4])))); + parser_errposition((yylsp[(1) - (5)])))); break; /* these fields are disallowed in current case */ case PLPGSQL_GETDIAG_ERROR_CONTEXT: @@ -2953,7 +3249,7 @@ yyparse (void) (errcode(ERRCODE_SYNTAX_ERROR), errmsg("diagnostics item %s is not allowed in GET CURRENT DIAGNOSTICS", plpgsql_getdiag_kindname(ditem->kind)), - parser_errposition((yylsp[-4])))); + parser_errposition((yylsp[(1) - (5)])))); break; /* these fields are allowed in either case */ case PLPGSQL_GETDIAG_CONTEXT: @@ -2966,75 +3262,65 @@ yyparse (void) } (yyval.stmt) = (PLpgSQL_stmt *)new; - } -#line 2919 "pl_gram.c" /* yacc.c:1652 */ + ;} break; - case 85: -#line 993 "pl_gram.y" /* yacc.c:1652 */ + case 91: +#line 1031 "pl_gram.y" { (yyval.boolean) = false; - } -#line 2927 "pl_gram.c" /* yacc.c:1652 */ + ;} break; - case 86: -#line 997 "pl_gram.y" /* yacc.c:1652 */ + case 92: +#line 1035 "pl_gram.y" { (yyval.boolean) = false; - } -#line 2935 "pl_gram.c" /* yacc.c:1652 */ + ;} break; - case 87: -#line 1001 "pl_gram.y" /* yacc.c:1652 */ + case 93: +#line 1039 "pl_gram.y" { (yyval.boolean) = true; - } -#line 2943 "pl_gram.c" /* yacc.c:1652 */ + ;} break; - case 88: -#line 1007 "pl_gram.y" /* yacc.c:1652 */ + case 94: +#line 1045 "pl_gram.y" { - (yyval.list) = lappend((yyvsp[-2].list), (yyvsp[0].diagitem)); - } -#line 2951 "pl_gram.c" /* yacc.c:1652 */ + (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].diagitem)); + ;} break; - case 89: -#line 1011 "pl_gram.y" /* yacc.c:1652 */ + case 95: +#line 1049 "pl_gram.y" { - (yyval.list) = list_make1((yyvsp[0].diagitem)); - } -#line 2959 "pl_gram.c" /* yacc.c:1652 */ + (yyval.list) = list_make1((yyvsp[(1) - (1)].diagitem)); + ;} break; - case 90: -#line 1017 "pl_gram.y" /* yacc.c:1652 */ + case 96: +#line 1055 "pl_gram.y" { PLpgSQL_diag_item *new; new = palloc(sizeof(PLpgSQL_diag_item)); - new->target = (yyvsp[-2].datum)->dno; - new->kind = (yyvsp[0].ival); + new->target = (yyvsp[(1) - (3)].datum)->dno; + new->kind = (yyvsp[(3) - (3)].ival); (yyval.diagitem) = new; - } -#line 2973 "pl_gram.c" /* yacc.c:1652 */ + ;} break; - case 91: -#line 1029 "pl_gram.y" /* yacc.c:1652 */ + case 97: +#line 1067 "pl_gram.y" { int tok = yylex(); if (tok_is_keyword(tok, &yylval, K_ROW_COUNT, "row_count")) (yyval.ival) = PLPGSQL_GETDIAG_ROW_COUNT; - else if (tok_is_keyword(tok, &yylval, - K_RESULT_OID, "result_oid")) - (yyval.ival) = PLPGSQL_GETDIAG_RESULT_OID; else if (tok_is_keyword(tok, &yylval, K_PG_CONTEXT, "pg_context")) (yyval.ival) = PLPGSQL_GETDIAG_CONTEXT; @@ -3070,138 +3356,127 @@ yyparse (void) (yyval.ival) = PLPGSQL_GETDIAG_RETURNED_SQLSTATE; else yyerror("unrecognized GET DIAGNOSTICS item"); - } -#line 3023 "pl_gram.c" /* yacc.c:1652 */ + ;} break; - case 92: -#line 1077 "pl_gram.y" /* yacc.c:1652 */ + case 98: +#line 1112 "pl_gram.y" { - if ((yyvsp[0].datum)->dtype == PLPGSQL_DTYPE_ROW || - (yyvsp[0].datum)->dtype == PLPGSQL_DTYPE_REC) + if ((yyvsp[(1) - (1)].datum)->dtype == PLPGSQL_DTYPE_ROW || + (yyvsp[(1) - (1)].datum)->dtype == PLPGSQL_DTYPE_REC) ereport(ERROR, (errcode(ERRCODE_SYNTAX_ERROR), errmsg("\"%s\" is not a scalar variable", - ((PLpgSQL_variable *) (yyvsp[0].datum))->refname), - parser_errposition((yylsp[0])))); - (yyval.datum) = (yyvsp[0].datum); - } -#line 3038 "pl_gram.c" /* yacc.c:1652 */ + ((PLpgSQL_variable *) (yyvsp[(1) - (1)].datum))->refname), + parser_errposition((yylsp[(1) - (1)])))); + (yyval.datum) = (yyvsp[(1) - (1)].datum); + ;} break; - case 93: -#line 1088 "pl_gram.y" /* yacc.c:1652 */ + case 99: +#line 1123 "pl_gram.y" { /* just to give a better message than "syntax error" */ - word_is_not_variable(&((yyvsp[0].word)), (yylsp[0])); - } -#line 3047 "pl_gram.c" /* yacc.c:1652 */ + word_is_not_variable(&((yyvsp[(1) - (1)].word)), (yylsp[(1) - (1)])); + ;} break; - case 94: -#line 1093 "pl_gram.y" /* yacc.c:1652 */ + case 100: +#line 1128 "pl_gram.y" { /* just to give a better message than "syntax error" */ - cword_is_not_variable(&((yyvsp[0].cword)), (yylsp[0])); - } -#line 3056 "pl_gram.c" /* yacc.c:1652 */ + cword_is_not_variable(&((yyvsp[(1) - (1)].cword)), (yylsp[(1) - (1)])); + ;} break; - case 95: -#line 1101 "pl_gram.y" /* yacc.c:1652 */ + case 101: +#line 1136 "pl_gram.y" { - check_assignable((yyvsp[0].wdatum).datum, (yylsp[0])); - (yyval.datum) = (yyvsp[0].wdatum).datum; - } -#line 3065 "pl_gram.c" /* yacc.c:1652 */ + check_assignable((yyvsp[(1) - (1)].wdatum).datum, (yylsp[(1) - (1)])); + (yyval.datum) = (yyvsp[(1) - (1)].wdatum).datum; + ;} break; - case 96: -#line 1106 "pl_gram.y" /* yacc.c:1652 */ + case 102: +#line 1141 "pl_gram.y" { PLpgSQL_arrayelem *new; new = palloc0(sizeof(PLpgSQL_arrayelem)); new->dtype = PLPGSQL_DTYPE_ARRAYELEM; - new->subscript = (yyvsp[0].expr); - new->arrayparentno = (yyvsp[-2].datum)->dno; + new->subscript = (yyvsp[(3) - (3)].expr); + new->arrayparentno = (yyvsp[(1) - (3)].datum)->dno; /* initialize cached type data to "not valid" */ new->parenttypoid = InvalidOid; plpgsql_adddatum((PLpgSQL_datum *) new); (yyval.datum) = (PLpgSQL_datum *) new; - } -#line 3084 "pl_gram.c" /* yacc.c:1652 */ + ;} break; - case 97: -#line 1123 "pl_gram.y" /* yacc.c:1652 */ + case 103: +#line 1158 "pl_gram.y" { PLpgSQL_stmt_if *new; new = palloc0(sizeof(PLpgSQL_stmt_if)); new->cmd_type = PLPGSQL_STMT_IF; - new->lineno = plpgsql_location_to_lineno((yylsp[-7])); - new->cond = (yyvsp[-6].expr); - new->then_body = (yyvsp[-5].list); - new->elsif_list = (yyvsp[-4].list); - new->else_body = (yyvsp[-3].list); + new->lineno = plpgsql_location_to_lineno((yylsp[(1) - (8)])); + new->stmtid = ++plpgsql_curr_compile->nstatements; + new->cond = (yyvsp[(2) - (8)].expr); + new->then_body = (yyvsp[(3) - (8)].list); + new->elsif_list = (yyvsp[(4) - (8)].list); + new->else_body = (yyvsp[(5) - (8)].list); (yyval.stmt) = (PLpgSQL_stmt *)new; - } -#line 3102 "pl_gram.c" /* yacc.c:1652 */ + ;} break; - case 98: -#line 1139 "pl_gram.y" /* yacc.c:1652 */ + case 104: +#line 1175 "pl_gram.y" { (yyval.list) = NIL; - } -#line 3110 "pl_gram.c" /* yacc.c:1652 */ + ;} break; - case 99: -#line 1143 "pl_gram.y" /* yacc.c:1652 */ + case 105: +#line 1179 "pl_gram.y" { PLpgSQL_if_elsif *new; new = palloc0(sizeof(PLpgSQL_if_elsif)); - new->lineno = plpgsql_location_to_lineno((yylsp[-2])); - new->cond = (yyvsp[-1].expr); - new->stmts = (yyvsp[0].list); + new->lineno = plpgsql_location_to_lineno((yylsp[(2) - (4)])); + new->cond = (yyvsp[(3) - (4)].expr); + new->stmts = (yyvsp[(4) - (4)].list); - (yyval.list) = lappend((yyvsp[-3].list), new); - } -#line 3125 "pl_gram.c" /* yacc.c:1652 */ + (yyval.list) = lappend((yyvsp[(1) - (4)].list), new); + ;} break; - case 100: -#line 1156 "pl_gram.y" /* yacc.c:1652 */ + case 106: +#line 1192 "pl_gram.y" { (yyval.list) = NIL; - } -#line 3133 "pl_gram.c" /* yacc.c:1652 */ + ;} break; - case 101: -#line 1160 "pl_gram.y" /* yacc.c:1652 */ + case 107: +#line 1196 "pl_gram.y" { - (yyval.list) = (yyvsp[0].list); - } -#line 3141 "pl_gram.c" /* yacc.c:1652 */ + (yyval.list) = (yyvsp[(2) - (2)].list); + ;} break; - case 102: -#line 1166 "pl_gram.y" /* yacc.c:1652 */ + case 108: +#line 1202 "pl_gram.y" { - (yyval.stmt) = make_case((yylsp[-6]), (yyvsp[-5].expr), (yyvsp[-4].list), (yyvsp[-3].list)); - } -#line 3149 "pl_gram.c" /* yacc.c:1652 */ + (yyval.stmt) = make_case((yylsp[(1) - (7)]), (yyvsp[(2) - (7)].expr), (yyvsp[(3) - (7)].list), (yyvsp[(4) - (7)].list)); + ;} break; - case 103: -#line 1172 "pl_gram.y" /* yacc.c:1652 */ + case 109: +#line 1208 "pl_gram.y" { PLpgSQL_expr *expr = NULL; int tok = yylex(); @@ -3213,49 +3488,44 @@ yyparse (void) } plpgsql_push_back_token(K_WHEN); (yyval.expr) = expr; - } -#line 3166 "pl_gram.c" /* yacc.c:1652 */ + ;} break; - case 104: -#line 1187 "pl_gram.y" /* yacc.c:1652 */ + case 110: +#line 1223 "pl_gram.y" { - (yyval.list) = lappend((yyvsp[-1].list), (yyvsp[0].casewhen)); - } -#line 3174 "pl_gram.c" /* yacc.c:1652 */ + (yyval.list) = lappend((yyvsp[(1) - (2)].list), (yyvsp[(2) - (2)].casewhen)); + ;} break; - case 105: -#line 1191 "pl_gram.y" /* yacc.c:1652 */ + case 111: +#line 1227 "pl_gram.y" { - (yyval.list) = list_make1((yyvsp[0].casewhen)); - } -#line 3182 "pl_gram.c" /* yacc.c:1652 */ + (yyval.list) = list_make1((yyvsp[(1) - (1)].casewhen)); + ;} break; - case 106: -#line 1197 "pl_gram.y" /* yacc.c:1652 */ + case 112: +#line 1233 "pl_gram.y" { PLpgSQL_case_when *new = palloc(sizeof(PLpgSQL_case_when)); - new->lineno = plpgsql_location_to_lineno((yylsp[-2])); - new->expr = (yyvsp[-1].expr); - new->stmts = (yyvsp[0].list); + new->lineno = plpgsql_location_to_lineno((yylsp[(1) - (3)])); + new->expr = (yyvsp[(2) - (3)].expr); + new->stmts = (yyvsp[(3) - (3)].list); (yyval.casewhen) = new; - } -#line 3195 "pl_gram.c" /* yacc.c:1652 */ + ;} break; - case 107: -#line 1208 "pl_gram.y" /* yacc.c:1652 */ + case 113: +#line 1244 "pl_gram.y" { (yyval.list) = NIL; - } -#line 3203 "pl_gram.c" /* yacc.c:1652 */ + ;} break; - case 108: -#line 1212 "pl_gram.y" /* yacc.c:1652 */ + case 114: +#line 1248 "pl_gram.y" { /* * proc_sect could return an empty list, but we @@ -3263,91 +3533,89 @@ yyparse (void) * Simplest fix is to return a list with one NULL * pointer, which make_case() must take care of. */ - if ((yyvsp[0].list) != NIL) - (yyval.list) = (yyvsp[0].list); + if ((yyvsp[(2) - (2)].list) != NIL) + (yyval.list) = (yyvsp[(2) - (2)].list); else (yyval.list) = list_make1(NULL); - } -#line 3220 "pl_gram.c" /* yacc.c:1652 */ + ;} break; - case 109: -#line 1227 "pl_gram.y" /* yacc.c:1652 */ + case 115: +#line 1263 "pl_gram.y" { PLpgSQL_stmt_loop *new; new = palloc0(sizeof(PLpgSQL_stmt_loop)); new->cmd_type = PLPGSQL_STMT_LOOP; - new->lineno = plpgsql_location_to_lineno((yylsp[-1])); - new->label = (yyvsp[-2].str); - new->body = (yyvsp[0].loop_body).stmts; + new->lineno = plpgsql_location_to_lineno((yylsp[(2) - (3)])); + new->stmtid = ++plpgsql_curr_compile->nstatements; + new->label = (yyvsp[(1) - (3)].str); + new->body = (yyvsp[(3) - (3)].loop_body).stmts; - check_labels((yyvsp[-2].str), (yyvsp[0].loop_body).end_label, (yyvsp[0].loop_body).end_label_location); + check_labels((yyvsp[(1) - (3)].str), (yyvsp[(3) - (3)].loop_body).end_label, (yyvsp[(3) - (3)].loop_body).end_label_location); plpgsql_ns_pop(); (yyval.stmt) = (PLpgSQL_stmt *)new; - } -#line 3239 "pl_gram.c" /* yacc.c:1652 */ + ;} break; - case 110: -#line 1244 "pl_gram.y" /* yacc.c:1652 */ + case 116: +#line 1281 "pl_gram.y" { PLpgSQL_stmt_while *new; new = palloc0(sizeof(PLpgSQL_stmt_while)); new->cmd_type = PLPGSQL_STMT_WHILE; - new->lineno = plpgsql_location_to_lineno((yylsp[-2])); - new->label = (yyvsp[-3].str); - new->cond = (yyvsp[-1].expr); - new->body = (yyvsp[0].loop_body).stmts; + new->lineno = plpgsql_location_to_lineno((yylsp[(2) - (4)])); + new->stmtid = ++plpgsql_curr_compile->nstatements; + new->label = (yyvsp[(1) - (4)].str); + new->cond = (yyvsp[(3) - (4)].expr); + new->body = (yyvsp[(4) - (4)].loop_body).stmts; - check_labels((yyvsp[-3].str), (yyvsp[0].loop_body).end_label, (yyvsp[0].loop_body).end_label_location); + check_labels((yyvsp[(1) - (4)].str), (yyvsp[(4) - (4)].loop_body).end_label, (yyvsp[(4) - (4)].loop_body).end_label_location); plpgsql_ns_pop(); (yyval.stmt) = (PLpgSQL_stmt *)new; - } -#line 3259 "pl_gram.c" /* yacc.c:1652 */ + ;} break; - case 111: -#line 1262 "pl_gram.y" /* yacc.c:1652 */ + case 117: +#line 1300 "pl_gram.y" { /* This runs after we've scanned the loop body */ - if ((yyvsp[-1].stmt)->cmd_type == PLPGSQL_STMT_FORI) + if ((yyvsp[(3) - (4)].stmt)->cmd_type == PLPGSQL_STMT_FORI) { PLpgSQL_stmt_fori *new; - new = (PLpgSQL_stmt_fori *) (yyvsp[-1].stmt); - new->lineno = plpgsql_location_to_lineno((yylsp[-2])); - new->label = (yyvsp[-3].str); - new->body = (yyvsp[0].loop_body).stmts; + new = (PLpgSQL_stmt_fori *) (yyvsp[(3) - (4)].stmt); + new->lineno = plpgsql_location_to_lineno((yylsp[(2) - (4)])); + new->label = (yyvsp[(1) - (4)].str); + new->body = (yyvsp[(4) - (4)].loop_body).stmts; (yyval.stmt) = (PLpgSQL_stmt *) new; } else { PLpgSQL_stmt_forq *new; - Assert((yyvsp[-1].stmt)->cmd_type == PLPGSQL_STMT_FORS || - (yyvsp[-1].stmt)->cmd_type == PLPGSQL_STMT_FORC || - (yyvsp[-1].stmt)->cmd_type == PLPGSQL_STMT_DYNFORS); + Assert((yyvsp[(3) - (4)].stmt)->cmd_type == PLPGSQL_STMT_FORS || + (yyvsp[(3) - (4)].stmt)->cmd_type == PLPGSQL_STMT_FORC || + (yyvsp[(3) - (4)].stmt)->cmd_type == PLPGSQL_STMT_DYNFORS); /* forq is the common supertype of all three */ - new = (PLpgSQL_stmt_forq *) (yyvsp[-1].stmt); - new->lineno = plpgsql_location_to_lineno((yylsp[-2])); - new->label = (yyvsp[-3].str); - new->body = (yyvsp[0].loop_body).stmts; + new = (PLpgSQL_stmt_forq *) (yyvsp[(3) - (4)].stmt); + new->lineno = plpgsql_location_to_lineno((yylsp[(2) - (4)])); + new->label = (yyvsp[(1) - (4)].str); + new->body = (yyvsp[(4) - (4)].loop_body).stmts; (yyval.stmt) = (PLpgSQL_stmt *) new; } - check_labels((yyvsp[-3].str), (yyvsp[0].loop_body).end_label, (yyvsp[0].loop_body).end_label_location); + check_labels((yyvsp[(1) - (4)].str), (yyvsp[(4) - (4)].loop_body).end_label, (yyvsp[(4) - (4)].loop_body).end_label_location); /* close namespace started in opt_loop_label */ plpgsql_ns_pop(); - } -#line 3295 "pl_gram.c" /* yacc.c:1652 */ + ;} break; - case 112: -#line 1296 "pl_gram.y" /* yacc.c:1652 */ + case 118: +#line 1334 "pl_gram.y" { int tok = yylex(); int tokloc = yylloc; @@ -3365,29 +3633,26 @@ yyparse (void) new = palloc0(sizeof(PLpgSQL_stmt_dynfors)); new->cmd_type = PLPGSQL_STMT_DYNFORS; - if ((yyvsp[-1].forvariable).rec) - { - new->rec = (yyvsp[-1].forvariable).rec; - check_assignable((PLpgSQL_datum *) new->rec, (yylsp[-1])); - } - else if ((yyvsp[-1].forvariable).row) + new->stmtid = ++plpgsql_curr_compile->nstatements; + if ((yyvsp[(1) - (2)].forvariable).row) { - new->row = (yyvsp[-1].forvariable).row; - check_assignable((PLpgSQL_datum *) new->row, (yylsp[-1])); + new->var = (PLpgSQL_variable *) (yyvsp[(1) - (2)].forvariable).row; + check_assignable((yyvsp[(1) - (2)].forvariable).row, (yylsp[(1) - (2)])); } - else if ((yyvsp[-1].forvariable).scalar) + else if ((yyvsp[(1) - (2)].forvariable).scalar) { /* convert single scalar to list */ - new->row = make_scalar_list1((yyvsp[-1].forvariable).name, (yyvsp[-1].forvariable).scalar, - (yyvsp[-1].forvariable).lineno, (yylsp[-1])); - /* no need for check_assignable */ + new->var = (PLpgSQL_variable *) + make_scalar_list1((yyvsp[(1) - (2)].forvariable).name, (yyvsp[(1) - (2)].forvariable).scalar, + (yyvsp[(1) - (2)].forvariable).lineno, (yylsp[(1) - (2)])); + /* make_scalar_list1 did check_assignable */ } else { ereport(ERROR, (errcode(ERRCODE_DATATYPE_MISMATCH), - errmsg("loop variable of loop over rows must be a record or row variable or list of scalar variables"), - parser_errposition((yylsp[-1])))); + errmsg("loop variable of loop over rows must be a record variable or list of scalar variables"), + parser_errposition((yylsp[(1) - (2)])))); } new->query = expr; @@ -3414,14 +3679,15 @@ yyparse (void) new = (PLpgSQL_stmt_forc *) palloc0(sizeof(PLpgSQL_stmt_forc)); new->cmd_type = PLPGSQL_STMT_FORC; + new->stmtid = ++plpgsql_curr_compile->nstatements; new->curvar = cursor->dno; /* Should have had a single variable name */ - if ((yyvsp[-1].forvariable).scalar && (yyvsp[-1].forvariable).row) + if ((yyvsp[(1) - (2)].forvariable).scalar && (yyvsp[(1) - (2)].forvariable).row) ereport(ERROR, (errcode(ERRCODE_SYNTAX_ERROR), errmsg("cursor FOR loop must have only one target variable"), - parser_errposition((yylsp[-1])))); + parser_errposition((yylsp[(1) - (2)])))); /* can't use an unbound cursor this way */ if (cursor->cursor_explicit_expr == NULL) @@ -3436,9 +3702,12 @@ yyparse (void) "LOOP"); /* create loop's private RECORD variable */ - new->rec = plpgsql_build_record((yyvsp[-1].forvariable).name, - (yyvsp[-1].forvariable).lineno, - true); + new->var = (PLpgSQL_variable *) + plpgsql_build_record((yyvsp[(1) - (2)].forvariable).name, + (yyvsp[(1) - (2)].forvariable).lineno, + NULL, + RECORDOID, + true); (yyval.stmt) = (PLpgSQL_stmt *) new; } @@ -3508,23 +3777,25 @@ yyparse (void) expr_by = NULL; /* Should have had a single variable name */ - if ((yyvsp[-1].forvariable).scalar && (yyvsp[-1].forvariable).row) + if ((yyvsp[(1) - (2)].forvariable).scalar && (yyvsp[(1) - (2)].forvariable).row) ereport(ERROR, (errcode(ERRCODE_SYNTAX_ERROR), errmsg("integer FOR loop must have only one target variable"), - parser_errposition((yylsp[-1])))); + parser_errposition((yylsp[(1) - (2)])))); /* create loop's private variable */ fvar = (PLpgSQL_var *) - plpgsql_build_variable((yyvsp[-1].forvariable).name, - (yyvsp[-1].forvariable).lineno, + plpgsql_build_variable((yyvsp[(1) - (2)].forvariable).name, + (yyvsp[(1) - (2)].forvariable).lineno, plpgsql_build_datatype(INT4OID, -1, - InvalidOid), + InvalidOid, + NULL), true); new = palloc0(sizeof(PLpgSQL_stmt_fori)); new->cmd_type = PLPGSQL_STMT_FORI; + new->stmtid = ++plpgsql_curr_compile->nstatements; new->var = fvar; new->reverse = reverse; new->lower = expr1; @@ -3559,201 +3830,181 @@ yyparse (void) new = palloc0(sizeof(PLpgSQL_stmt_fors)); new->cmd_type = PLPGSQL_STMT_FORS; - if ((yyvsp[-1].forvariable).rec) - { - new->rec = (yyvsp[-1].forvariable).rec; - check_assignable((PLpgSQL_datum *) new->rec, (yylsp[-1])); - } - else if ((yyvsp[-1].forvariable).row) + new->stmtid = ++plpgsql_curr_compile->nstatements; + if ((yyvsp[(1) - (2)].forvariable).row) { - new->row = (yyvsp[-1].forvariable).row; - check_assignable((PLpgSQL_datum *) new->row, (yylsp[-1])); + new->var = (PLpgSQL_variable *) (yyvsp[(1) - (2)].forvariable).row; + check_assignable((yyvsp[(1) - (2)].forvariable).row, (yylsp[(1) - (2)])); } - else if ((yyvsp[-1].forvariable).scalar) + else if ((yyvsp[(1) - (2)].forvariable).scalar) { /* convert single scalar to list */ - new->row = make_scalar_list1((yyvsp[-1].forvariable).name, (yyvsp[-1].forvariable).scalar, - (yyvsp[-1].forvariable).lineno, (yylsp[-1])); - /* no need for check_assignable */ + new->var = (PLpgSQL_variable *) + make_scalar_list1((yyvsp[(1) - (2)].forvariable).name, (yyvsp[(1) - (2)].forvariable).scalar, + (yyvsp[(1) - (2)].forvariable).lineno, (yylsp[(1) - (2)])); + /* make_scalar_list1 did check_assignable */ } else { ereport(ERROR, (errcode(ERRCODE_SYNTAX_ERROR), - errmsg("loop variable of loop over rows must be a record or row variable or list of scalar variables"), - parser_errposition((yylsp[-1])))); + errmsg("loop variable of loop over rows must be a record variable or list of scalar variables"), + parser_errposition((yylsp[(1) - (2)])))); } new->query = expr1; (yyval.stmt) = (PLpgSQL_stmt *) new; } } - } -#line 3541 "pl_gram.c" /* yacc.c:1652 */ + ;} break; - case 113: -#line 1558 "pl_gram.y" /* yacc.c:1652 */ + case 119: +#line 1596 "pl_gram.y" { - (yyval.forvariable).name = NameOfDatum(&((yyvsp[0].wdatum))); - (yyval.forvariable).lineno = plpgsql_location_to_lineno((yylsp[0])); - if ((yyvsp[0].wdatum).datum->dtype == PLPGSQL_DTYPE_ROW) - { - (yyval.forvariable).scalar = NULL; - (yyval.forvariable).rec = NULL; - (yyval.forvariable).row = (PLpgSQL_row *) (yyvsp[0].wdatum).datum; - } - else if ((yyvsp[0].wdatum).datum->dtype == PLPGSQL_DTYPE_REC) + (yyval.forvariable).name = NameOfDatum(&((yyvsp[(1) - (1)].wdatum))); + (yyval.forvariable).lineno = plpgsql_location_to_lineno((yylsp[(1) - (1)])); + if ((yyvsp[(1) - (1)].wdatum).datum->dtype == PLPGSQL_DTYPE_ROW || + (yyvsp[(1) - (1)].wdatum).datum->dtype == PLPGSQL_DTYPE_REC) { (yyval.forvariable).scalar = NULL; - (yyval.forvariable).rec = (PLpgSQL_rec *) (yyvsp[0].wdatum).datum; - (yyval.forvariable).row = NULL; + (yyval.forvariable).row = (yyvsp[(1) - (1)].wdatum).datum; } else { int tok; - (yyval.forvariable).scalar = (yyvsp[0].wdatum).datum; - (yyval.forvariable).rec = NULL; + (yyval.forvariable).scalar = (yyvsp[(1) - (1)].wdatum).datum; (yyval.forvariable).row = NULL; /* check for comma-separated list */ tok = yylex(); plpgsql_push_back_token(tok); if (tok == ',') - (yyval.forvariable).row = read_into_scalar_list((yyval.forvariable).name, - (yyval.forvariable).scalar, - (yylsp[0])); + (yyval.forvariable).row = (PLpgSQL_datum *) + read_into_scalar_list((yyval.forvariable).name, + (yyval.forvariable).scalar, + (yylsp[(1) - (1)])); } - } -#line 3577 "pl_gram.c" /* yacc.c:1652 */ + ;} break; - case 114: -#line 1590 "pl_gram.y" /* yacc.c:1652 */ + case 120: +#line 1622 "pl_gram.y" { int tok; - (yyval.forvariable).name = (yyvsp[0].word).ident; - (yyval.forvariable).lineno = plpgsql_location_to_lineno((yylsp[0])); + (yyval.forvariable).name = (yyvsp[(1) - (1)].word).ident; + (yyval.forvariable).lineno = plpgsql_location_to_lineno((yylsp[(1) - (1)])); (yyval.forvariable).scalar = NULL; - (yyval.forvariable).rec = NULL; (yyval.forvariable).row = NULL; /* check for comma-separated list */ tok = yylex(); plpgsql_push_back_token(tok); if (tok == ',') - word_is_not_variable(&((yyvsp[0].word)), (yylsp[0])); - } -#line 3596 "pl_gram.c" /* yacc.c:1652 */ + word_is_not_variable(&((yyvsp[(1) - (1)].word)), (yylsp[(1) - (1)])); + ;} break; - case 115: -#line 1605 "pl_gram.y" /* yacc.c:1652 */ + case 121: +#line 1636 "pl_gram.y" { /* just to give a better message than "syntax error" */ - cword_is_not_variable(&((yyvsp[0].cword)), (yylsp[0])); - } -#line 3605 "pl_gram.c" /* yacc.c:1652 */ + cword_is_not_variable(&((yyvsp[(1) - (1)].cword)), (yylsp[(1) - (1)])); + ;} break; - case 116: -#line 1612 "pl_gram.y" /* yacc.c:1652 */ + case 122: +#line 1643 "pl_gram.y" { PLpgSQL_stmt_foreach_a *new; new = palloc0(sizeof(PLpgSQL_stmt_foreach_a)); new->cmd_type = PLPGSQL_STMT_FOREACH_A; - new->lineno = plpgsql_location_to_lineno((yylsp[-6])); - new->label = (yyvsp[-7].str); - new->slice = (yyvsp[-4].ival); - new->expr = (yyvsp[-1].expr); - new->body = (yyvsp[0].loop_body).stmts; - - if ((yyvsp[-5].forvariable).rec) + new->lineno = plpgsql_location_to_lineno((yylsp[(2) - (8)])); + new->stmtid = ++plpgsql_curr_compile->nstatements; + new->label = (yyvsp[(1) - (8)].str); + new->slice = (yyvsp[(4) - (8)].ival); + new->expr = (yyvsp[(7) - (8)].expr); + new->body = (yyvsp[(8) - (8)].loop_body).stmts; + + if ((yyvsp[(3) - (8)].forvariable).row) { - new->varno = (yyvsp[-5].forvariable).rec->dno; - check_assignable((PLpgSQL_datum *) (yyvsp[-5].forvariable).rec, (yylsp[-5])); + new->varno = (yyvsp[(3) - (8)].forvariable).row->dno; + check_assignable((yyvsp[(3) - (8)].forvariable).row, (yylsp[(3) - (8)])); } - else if ((yyvsp[-5].forvariable).row) + else if ((yyvsp[(3) - (8)].forvariable).scalar) { - new->varno = (yyvsp[-5].forvariable).row->dno; - check_assignable((PLpgSQL_datum *) (yyvsp[-5].forvariable).row, (yylsp[-5])); - } - else if ((yyvsp[-5].forvariable).scalar) - { - new->varno = (yyvsp[-5].forvariable).scalar->dno; - check_assignable((yyvsp[-5].forvariable).scalar, (yylsp[-5])); + new->varno = (yyvsp[(3) - (8)].forvariable).scalar->dno; + check_assignable((yyvsp[(3) - (8)].forvariable).scalar, (yylsp[(3) - (8)])); } else { ereport(ERROR, (errcode(ERRCODE_SYNTAX_ERROR), errmsg("loop variable of FOREACH must be a known variable or list of variables"), - parser_errposition((yylsp[-5])))); + parser_errposition((yylsp[(3) - (8)])))); } - check_labels((yyvsp[-7].str), (yyvsp[0].loop_body).end_label, (yyvsp[0].loop_body).end_label_location); + check_labels((yyvsp[(1) - (8)].str), (yyvsp[(8) - (8)].loop_body).end_label, (yyvsp[(8) - (8)].loop_body).end_label_location); plpgsql_ns_pop(); (yyval.stmt) = (PLpgSQL_stmt *) new; - } -#line 3649 "pl_gram.c" /* yacc.c:1652 */ + ;} break; - case 117: -#line 1654 "pl_gram.y" /* yacc.c:1652 */ + case 123: +#line 1681 "pl_gram.y" { (yyval.ival) = 0; - } -#line 3657 "pl_gram.c" /* yacc.c:1652 */ + ;} break; - case 118: -#line 1658 "pl_gram.y" /* yacc.c:1652 */ + case 124: +#line 1685 "pl_gram.y" { - (yyval.ival) = (yyvsp[0].ival); - } -#line 3665 "pl_gram.c" /* yacc.c:1652 */ + (yyval.ival) = (yyvsp[(2) - (2)].ival); + ;} break; - case 119: -#line 1664 "pl_gram.y" /* yacc.c:1652 */ + case 125: +#line 1691 "pl_gram.y" { PLpgSQL_stmt_exit *new; new = palloc0(sizeof(PLpgSQL_stmt_exit)); new->cmd_type = PLPGSQL_STMT_EXIT; - new->is_exit = (yyvsp[-2].boolean); - new->lineno = plpgsql_location_to_lineno((yylsp[-2])); - new->label = (yyvsp[-1].str); - new->cond = (yyvsp[0].expr); + new->stmtid = ++plpgsql_curr_compile->nstatements; + new->is_exit = (yyvsp[(1) - (3)].boolean); + new->lineno = plpgsql_location_to_lineno((yylsp[(1) - (3)])); + new->label = (yyvsp[(2) - (3)].str); + new->cond = (yyvsp[(3) - (3)].expr); - if ((yyvsp[-1].str)) + if ((yyvsp[(2) - (3)].str)) { /* We have a label, so verify it exists */ PLpgSQL_nsitem *label; - label = plpgsql_ns_lookup_label(plpgsql_ns_top(), (yyvsp[-1].str)); + label = plpgsql_ns_lookup_label(plpgsql_ns_top(), (yyvsp[(2) - (3)].str)); if (label == NULL) ereport(ERROR, (errcode(ERRCODE_SYNTAX_ERROR), errmsg("there is no label \"%s\" " "attached to any block or loop enclosing this statement", - (yyvsp[-1].str)), - parser_errposition((yylsp[-1])))); + (yyvsp[(2) - (3)].str)), + parser_errposition((yylsp[(2) - (3)])))); /* CONTINUE only allows loop labels */ if (label->itemno != PLPGSQL_LABEL_LOOP && !new->is_exit) ereport(ERROR, (errcode(ERRCODE_SYNTAX_ERROR), errmsg("block label \"%s\" cannot be used in CONTINUE", - (yyvsp[-1].str)), - parser_errposition((yylsp[-1])))); + (yyvsp[(2) - (3)].str)), + parser_errposition((yylsp[(2) - (3)])))); } else { /* * No label, so make sure there is some loop (an - * unlabelled EXIT does not match a block, so this + * unlabeled EXIT does not match a block, so this * is the same test for both EXIT and CONTINUE) */ if (plpgsql_ns_find_nearest_loop(plpgsql_ns_top()) == NULL) @@ -3762,32 +4013,29 @@ yyparse (void) new->is_exit ? errmsg("EXIT cannot be used outside a loop, unless it has a label") : errmsg("CONTINUE cannot be used outside a loop"), - parser_errposition((yylsp[-2])))); + parser_errposition((yylsp[(1) - (3)])))); } (yyval.stmt) = (PLpgSQL_stmt *)new; - } -#line 3719 "pl_gram.c" /* yacc.c:1652 */ + ;} break; - case 120: -#line 1716 "pl_gram.y" /* yacc.c:1652 */ + case 126: +#line 1744 "pl_gram.y" { (yyval.boolean) = true; - } -#line 3727 "pl_gram.c" /* yacc.c:1652 */ + ;} break; - case 121: -#line 1720 "pl_gram.y" /* yacc.c:1652 */ + case 127: +#line 1748 "pl_gram.y" { (yyval.boolean) = false; - } -#line 3735 "pl_gram.c" /* yacc.c:1652 */ + ;} break; - case 122: -#line 1726 "pl_gram.y" /* yacc.c:1652 */ + case 128: +#line 1754 "pl_gram.y" { int tok; @@ -3798,24 +4046,23 @@ yyparse (void) if (tok_is_keyword(tok, &yylval, K_NEXT, "next")) { - (yyval.stmt) = make_return_next_stmt((yylsp[0])); + (yyval.stmt) = make_return_next_stmt((yylsp[(1) - (1)])); } else if (tok_is_keyword(tok, &yylval, K_QUERY, "query")) { - (yyval.stmt) = make_return_query_stmt((yylsp[0])); + (yyval.stmt) = make_return_query_stmt((yylsp[(1) - (1)])); } else { plpgsql_push_back_token(tok); - (yyval.stmt) = make_return_stmt((yylsp[0])); + (yyval.stmt) = make_return_stmt((yylsp[(1) - (1)])); } - } -#line 3763 "pl_gram.c" /* yacc.c:1652 */ + ;} break; - case 123: -#line 1752 "pl_gram.y" /* yacc.c:1652 */ + case 129: +#line 1780 "pl_gram.y" { PLpgSQL_stmt_raise *new; int tok; @@ -3823,7 +4070,8 @@ yyparse (void) new = palloc(sizeof(PLpgSQL_stmt_raise)); new->cmd_type = PLPGSQL_STMT_RAISE; - new->lineno = plpgsql_location_to_lineno((yylsp[0])); + new->lineno = plpgsql_location_to_lineno((yylsp[(1) - (1)])); + new->stmtid = ++plpgsql_curr_compile->nstatements; new->elog_level = ERROR; /* default */ new->condname = NULL; new->message = NULL; @@ -3956,12 +4204,11 @@ yyparse (void) check_raise_parameters(new); (yyval.stmt) = (PLpgSQL_stmt *)new; - } -#line 3909 "pl_gram.c" /* yacc.c:1652 */ + ;} break; - case 124: -#line 1896 "pl_gram.y" /* yacc.c:1652 */ + case 130: +#line 1925 "pl_gram.y" { PLpgSQL_stmt_assert *new; int tok; @@ -3969,7 +4216,8 @@ yyparse (void) new = palloc(sizeof(PLpgSQL_stmt_assert)); new->cmd_type = PLPGSQL_STMT_ASSERT; - new->lineno = plpgsql_location_to_lineno((yylsp[0])); + new->lineno = plpgsql_location_to_lineno((yylsp[(1) - (1)])); + new->stmtid = ++plpgsql_curr_compile->nstatements; new->cond = read_sql_expression2(',', ';', ", or ;", @@ -3981,66 +4229,60 @@ yyparse (void) new->message = NULL; (yyval.stmt) = (PLpgSQL_stmt *) new; - } -#line 3934 "pl_gram.c" /* yacc.c:1652 */ + ;} break; - case 125: -#line 1919 "pl_gram.y" /* yacc.c:1652 */ + case 131: +#line 1949 "pl_gram.y" { - (yyval.loop_body).stmts = (yyvsp[-4].list); - (yyval.loop_body).end_label = (yyvsp[-1].str); - (yyval.loop_body).end_label_location = (yylsp[-1]); - } -#line 3944 "pl_gram.c" /* yacc.c:1652 */ + (yyval.loop_body).stmts = (yyvsp[(1) - (5)].list); + (yyval.loop_body).end_label = (yyvsp[(4) - (5)].str); + (yyval.loop_body).end_label_location = (yylsp[(4) - (5)]); + ;} break; - case 126: -#line 1937 "pl_gram.y" /* yacc.c:1652 */ + case 132: +#line 1967 "pl_gram.y" { - (yyval.stmt) = make_execsql_stmt(K_IMPORT, (yylsp[0])); - } -#line 3952 "pl_gram.c" /* yacc.c:1652 */ + (yyval.stmt) = make_execsql_stmt(K_IMPORT, (yylsp[(1) - (1)])); + ;} break; - case 127: -#line 1941 "pl_gram.y" /* yacc.c:1652 */ + case 133: +#line 1971 "pl_gram.y" { - (yyval.stmt) = make_execsql_stmt(K_INSERT, (yylsp[0])); - } -#line 3960 "pl_gram.c" /* yacc.c:1652 */ + (yyval.stmt) = make_execsql_stmt(K_INSERT, (yylsp[(1) - (1)])); + ;} break; - case 128: -#line 1945 "pl_gram.y" /* yacc.c:1652 */ + case 134: +#line 1975 "pl_gram.y" { int tok; tok = yylex(); plpgsql_push_back_token(tok); if (tok == '=' || tok == COLON_EQUALS || tok == '[') - word_is_not_variable(&((yyvsp[0].word)), (yylsp[0])); - (yyval.stmt) = make_execsql_stmt(T_WORD, (yylsp[0])); - } -#line 3974 "pl_gram.c" /* yacc.c:1652 */ + word_is_not_variable(&((yyvsp[(1) - (1)].word)), (yylsp[(1) - (1)])); + (yyval.stmt) = make_execsql_stmt(T_WORD, (yylsp[(1) - (1)])); + ;} break; - case 129: -#line 1955 "pl_gram.y" /* yacc.c:1652 */ + case 135: +#line 1985 "pl_gram.y" { int tok; tok = yylex(); plpgsql_push_back_token(tok); if (tok == '=' || tok == COLON_EQUALS || tok == '[') - cword_is_not_variable(&((yyvsp[0].cword)), (yylsp[0])); - (yyval.stmt) = make_execsql_stmt(T_CWORD, (yylsp[0])); - } -#line 3988 "pl_gram.c" /* yacc.c:1652 */ + cword_is_not_variable(&((yyvsp[(1) - (1)].cword)), (yylsp[(1) - (1)])); + (yyval.stmt) = make_execsql_stmt(T_CWORD, (yylsp[(1) - (1)])); + ;} break; - case 130: -#line 1967 "pl_gram.y" /* yacc.c:1652 */ + case 136: +#line 1997 "pl_gram.y" { PLpgSQL_stmt_dynexecute *new; PLpgSQL_expr *expr; @@ -4054,12 +4296,12 @@ yyparse (void) new = palloc(sizeof(PLpgSQL_stmt_dynexecute)); new->cmd_type = PLPGSQL_STMT_DYNEXECUTE; - new->lineno = plpgsql_location_to_lineno((yylsp[0])); + new->lineno = plpgsql_location_to_lineno((yylsp[(1) - (1)])); + new->stmtid = ++plpgsql_curr_compile->nstatements; new->query = expr; new->into = false; new->strict = false; - new->rec = NULL; - new->row = NULL; + new->target = NULL; new->params = NIL; /* @@ -4076,7 +4318,7 @@ yyparse (void) if (new->into) /* multiple INTO */ yyerror("syntax error"); new->into = true; - read_into_target(&new->rec, &new->row, &new->strict); + read_into_target(&new->target, &new->strict); endtoken = yylex(); } else if (endtoken == K_USING) @@ -4100,23 +4342,23 @@ yyparse (void) } (yyval.stmt) = (PLpgSQL_stmt *)new; - } -#line 4053 "pl_gram.c" /* yacc.c:1652 */ + ;} break; - case 131: -#line 2031 "pl_gram.y" /* yacc.c:1652 */ + case 137: +#line 2061 "pl_gram.y" { PLpgSQL_stmt_open *new; int tok; new = palloc0(sizeof(PLpgSQL_stmt_open)); new->cmd_type = PLPGSQL_STMT_OPEN; - new->lineno = plpgsql_location_to_lineno((yylsp[-1])); - new->curvar = (yyvsp[0].var)->dno; + new->lineno = plpgsql_location_to_lineno((yylsp[(1) - (2)])); + new->stmtid = ++plpgsql_curr_compile->nstatements; + new->curvar = (yyvsp[(2) - (2)].var)->dno; new->cursor_options = CURSOR_OPT_FAST_PLAN; - if ((yyvsp[0].var)->cursor_explicit_expr == NULL) + if ((yyvsp[(2) - (2)].var)->cursor_explicit_expr == NULL) { /* be nice if we could use opt_scrollable here */ tok = yylex(); @@ -4175,23 +4417,21 @@ yyparse (void) else { /* predefined cursor query, so read args */ - new->argquery = read_cursor_args((yyvsp[0].var), ';', ";"); + new->argquery = read_cursor_args((yyvsp[(2) - (2)].var), ';', ";"); } (yyval.stmt) = (PLpgSQL_stmt *)new; - } -#line 4132 "pl_gram.c" /* yacc.c:1652 */ + ;} break; - case 132: -#line 2108 "pl_gram.y" /* yacc.c:1652 */ + case 138: +#line 2139 "pl_gram.y" { - PLpgSQL_stmt_fetch *fetch = (yyvsp[-2].fetch); - PLpgSQL_rec *rec; - PLpgSQL_row *row; + PLpgSQL_stmt_fetch *fetch = (yyvsp[(2) - (4)].fetch); + PLpgSQL_variable *target; /* We have already parsed everything through the INTO keyword */ - read_into_target(&rec, &row, NULL); + read_into_target(&target, NULL); if (yylex() != ';') yyerror("syntax error"); @@ -4204,117 +4444,184 @@ yyparse (void) ereport(ERROR, (errcode(ERRCODE_FEATURE_NOT_SUPPORTED), errmsg("FETCH statement cannot return multiple rows"), - parser_errposition((yylsp[-3])))); + parser_errposition((yylsp[(1) - (4)])))); - fetch->lineno = plpgsql_location_to_lineno((yylsp[-3])); - fetch->rec = rec; - fetch->row = row; - fetch->curvar = (yyvsp[-1].var)->dno; + fetch->lineno = plpgsql_location_to_lineno((yylsp[(1) - (4)])); + fetch->target = target; + fetch->curvar = (yyvsp[(3) - (4)].var)->dno; fetch->is_move = false; (yyval.stmt) = (PLpgSQL_stmt *)fetch; - } -#line 4166 "pl_gram.c" /* yacc.c:1652 */ + ;} break; - case 133: -#line 2140 "pl_gram.y" /* yacc.c:1652 */ + case 139: +#line 2169 "pl_gram.y" { - PLpgSQL_stmt_fetch *fetch = (yyvsp[-2].fetch); + PLpgSQL_stmt_fetch *fetch = (yyvsp[(2) - (4)].fetch); - fetch->lineno = plpgsql_location_to_lineno((yylsp[-3])); - fetch->curvar = (yyvsp[-1].var)->dno; + fetch->lineno = plpgsql_location_to_lineno((yylsp[(1) - (4)])); + fetch->curvar = (yyvsp[(3) - (4)].var)->dno; fetch->is_move = true; (yyval.stmt) = (PLpgSQL_stmt *)fetch; - } -#line 4180 "pl_gram.c" /* yacc.c:1652 */ + ;} break; - case 134: -#line 2152 "pl_gram.y" /* yacc.c:1652 */ + case 140: +#line 2181 "pl_gram.y" { (yyval.fetch) = read_fetch_direction(); - } -#line 4188 "pl_gram.c" /* yacc.c:1652 */ + ;} break; - case 135: -#line 2158 "pl_gram.y" /* yacc.c:1652 */ + case 141: +#line 2187 "pl_gram.y" { PLpgSQL_stmt_close *new; new = palloc(sizeof(PLpgSQL_stmt_close)); new->cmd_type = PLPGSQL_STMT_CLOSE; - new->lineno = plpgsql_location_to_lineno((yylsp[-2])); - new->curvar = (yyvsp[-1].var)->dno; + new->lineno = plpgsql_location_to_lineno((yylsp[(1) - (3)])); + new->stmtid = ++plpgsql_curr_compile->nstatements; + new->curvar = (yyvsp[(2) - (3)].var)->dno; (yyval.stmt) = (PLpgSQL_stmt *)new; - } -#line 4203 "pl_gram.c" /* yacc.c:1652 */ + ;} break; - case 136: -#line 2171 "pl_gram.y" /* yacc.c:1652 */ + case 142: +#line 2201 "pl_gram.y" { /* We do not bother building a node for NULL */ (yyval.stmt) = NULL; - } -#line 4212 "pl_gram.c" /* yacc.c:1652 */ + ;} break; - case 137: -#line 2178 "pl_gram.y" /* yacc.c:1652 */ + case 143: +#line 2208 "pl_gram.y" + { + PLpgSQL_stmt_commit *new; + + new = palloc(sizeof(PLpgSQL_stmt_commit)); + new->cmd_type = PLPGSQL_STMT_COMMIT; + new->lineno = plpgsql_location_to_lineno((yylsp[(1) - (3)])); + new->stmtid = ++plpgsql_curr_compile->nstatements; + new->chain = (yyvsp[(2) - (3)].ival); + + (yyval.stmt) = (PLpgSQL_stmt *)new; + ;} + break; + + case 144: +#line 2222 "pl_gram.y" + { + PLpgSQL_stmt_rollback *new; + + new = palloc(sizeof(PLpgSQL_stmt_rollback)); + new->cmd_type = PLPGSQL_STMT_ROLLBACK; + new->lineno = plpgsql_location_to_lineno((yylsp[(1) - (3)])); + new->stmtid = ++plpgsql_curr_compile->nstatements; + new->chain = (yyvsp[(2) - (3)].ival); + + (yyval.stmt) = (PLpgSQL_stmt *)new; + ;} + break; + + case 145: +#line 2236 "pl_gram.y" + { (yyval.ival) = true; ;} + break; + + case 146: +#line 2237 "pl_gram.y" + { (yyval.ival) = false; ;} + break; + + case 147: +#line 2238 "pl_gram.y" + { (yyval.ival) = false; ;} + break; + + case 148: +#line 2242 "pl_gram.y" + { + PLpgSQL_stmt_set *new; + + new = palloc0(sizeof(PLpgSQL_stmt_set)); + new->cmd_type = PLPGSQL_STMT_SET; + new->lineno = plpgsql_location_to_lineno((yylsp[(1) - (1)])); + new->stmtid = ++plpgsql_curr_compile->nstatements; + + new->expr = read_sql_stmt("SET "); + + (yyval.stmt) = (PLpgSQL_stmt *)new; + ;} + break; + + case 149: +#line 2255 "pl_gram.y" + { + PLpgSQL_stmt_set *new; + + new = palloc0(sizeof(PLpgSQL_stmt_set)); + new->cmd_type = PLPGSQL_STMT_SET; + new->lineno = plpgsql_location_to_lineno((yylsp[(1) - (1)])); + new->stmtid = ++plpgsql_curr_compile->nstatements; + new->expr = read_sql_stmt("RESET "); + + (yyval.stmt) = (PLpgSQL_stmt *)new; + ;} + break; + + case 150: +#line 2270 "pl_gram.y" { /* * In principle we should support a cursor_variable * that is an array element, but for now we don't, so * just throw an error if next token is '['. */ - if ((yyvsp[0].wdatum).datum->dtype != PLPGSQL_DTYPE_VAR || + if ((yyvsp[(1) - (1)].wdatum).datum->dtype != PLPGSQL_DTYPE_VAR || plpgsql_peek() == '[') ereport(ERROR, (errcode(ERRCODE_DATATYPE_MISMATCH), errmsg("cursor variable must be a simple variable"), - parser_errposition((yylsp[0])))); + parser_errposition((yylsp[(1) - (1)])))); - if (((PLpgSQL_var *) (yyvsp[0].wdatum).datum)->datatype->typoid != REFCURSOROID) + if (((PLpgSQL_var *) (yyvsp[(1) - (1)].wdatum).datum)->datatype->typoid != REFCURSOROID) ereport(ERROR, (errcode(ERRCODE_DATATYPE_MISMATCH), errmsg("variable \"%s\" must be of type cursor or refcursor", - ((PLpgSQL_var *) (yyvsp[0].wdatum).datum)->refname), - parser_errposition((yylsp[0])))); - (yyval.var) = (PLpgSQL_var *) (yyvsp[0].wdatum).datum; - } -#line 4238 "pl_gram.c" /* yacc.c:1652 */ + ((PLpgSQL_var *) (yyvsp[(1) - (1)].wdatum).datum)->refname), + parser_errposition((yylsp[(1) - (1)])))); + (yyval.var) = (PLpgSQL_var *) (yyvsp[(1) - (1)].wdatum).datum; + ;} break; - case 138: -#line 2200 "pl_gram.y" /* yacc.c:1652 */ + case 151: +#line 2292 "pl_gram.y" { /* just to give a better message than "syntax error" */ - word_is_not_variable(&((yyvsp[0].word)), (yylsp[0])); - } -#line 4247 "pl_gram.c" /* yacc.c:1652 */ + word_is_not_variable(&((yyvsp[(1) - (1)].word)), (yylsp[(1) - (1)])); + ;} break; - case 139: -#line 2205 "pl_gram.y" /* yacc.c:1652 */ + case 152: +#line 2297 "pl_gram.y" { /* just to give a better message than "syntax error" */ - cword_is_not_variable(&((yyvsp[0].cword)), (yylsp[0])); - } -#line 4256 "pl_gram.c" /* yacc.c:1652 */ + cword_is_not_variable(&((yyvsp[(1) - (1)].cword)), (yylsp[(1) - (1)])); + ;} break; - case 140: -#line 2212 "pl_gram.y" /* yacc.c:1652 */ - { (yyval.exception_block) = NULL; } -#line 4262 "pl_gram.c" /* yacc.c:1652 */ + case 153: +#line 2304 "pl_gram.y" + { (yyval.exception_block) = NULL; ;} break; - case 141: -#line 2214 "pl_gram.y" /* yacc.c:1652 */ + case 154: +#line 2306 "pl_gram.y" { /* * We use a mid-rule action to add these @@ -4323,100 +4630,95 @@ yyparse (void) * scope of the names extends to the end of the * current block. */ - int lineno = plpgsql_location_to_lineno((yylsp[0])); + int lineno = plpgsql_location_to_lineno((yylsp[(1) - (1)])); PLpgSQL_exception_block *new = palloc(sizeof(PLpgSQL_exception_block)); PLpgSQL_variable *var; var = plpgsql_build_variable("sqlstate", lineno, plpgsql_build_datatype(TEXTOID, -1, - plpgsql_curr_compile->fn_input_collation), + plpgsql_curr_compile->fn_input_collation, + NULL), true); - ((PLpgSQL_var *) var)->isconst = true; + var->isconst = true; new->sqlstate_varno = var->dno; var = plpgsql_build_variable("sqlerrm", lineno, plpgsql_build_datatype(TEXTOID, -1, - plpgsql_curr_compile->fn_input_collation), + plpgsql_curr_compile->fn_input_collation, + NULL), true); - ((PLpgSQL_var *) var)->isconst = true; + var->isconst = true; new->sqlerrm_varno = var->dno; (yyval.exception_block) = new; - } -#line 4297 "pl_gram.c" /* yacc.c:1652 */ + ;} break; - case 142: -#line 2245 "pl_gram.y" /* yacc.c:1652 */ + case 155: +#line 2339 "pl_gram.y" { - PLpgSQL_exception_block *new = (yyvsp[-1].exception_block); - new->exc_list = (yyvsp[0].list); + PLpgSQL_exception_block *new = (yyvsp[(2) - (3)].exception_block); + new->exc_list = (yyvsp[(3) - (3)].list); (yyval.exception_block) = new; - } -#line 4308 "pl_gram.c" /* yacc.c:1652 */ + ;} break; - case 143: -#line 2254 "pl_gram.y" /* yacc.c:1652 */ + case 156: +#line 2348 "pl_gram.y" { - (yyval.list) = lappend((yyvsp[-1].list), (yyvsp[0].exception)); - } -#line 4316 "pl_gram.c" /* yacc.c:1652 */ + (yyval.list) = lappend((yyvsp[(1) - (2)].list), (yyvsp[(2) - (2)].exception)); + ;} break; - case 144: -#line 2258 "pl_gram.y" /* yacc.c:1652 */ + case 157: +#line 2352 "pl_gram.y" { - (yyval.list) = list_make1((yyvsp[0].exception)); - } -#line 4324 "pl_gram.c" /* yacc.c:1652 */ + (yyval.list) = list_make1((yyvsp[(1) - (1)].exception)); + ;} break; - case 145: -#line 2264 "pl_gram.y" /* yacc.c:1652 */ + case 158: +#line 2358 "pl_gram.y" { PLpgSQL_exception *new; new = palloc0(sizeof(PLpgSQL_exception)); - new->lineno = plpgsql_location_to_lineno((yylsp[-3])); - new->conditions = (yyvsp[-2].condition); - new->action = (yyvsp[0].list); + new->lineno = plpgsql_location_to_lineno((yylsp[(1) - (4)])); + new->conditions = (yyvsp[(2) - (4)].condition); + new->action = (yyvsp[(4) - (4)].list); (yyval.exception) = new; - } -#line 4339 "pl_gram.c" /* yacc.c:1652 */ + ;} break; - case 146: -#line 2277 "pl_gram.y" /* yacc.c:1652 */ + case 159: +#line 2371 "pl_gram.y" { PLpgSQL_condition *old; - for (old = (yyvsp[-2].condition); old->next != NULL; old = old->next) + for (old = (yyvsp[(1) - (3)].condition); old->next != NULL; old = old->next) /* skip */ ; - old->next = (yyvsp[0].condition); - (yyval.condition) = (yyvsp[-2].condition); - } -#line 4352 "pl_gram.c" /* yacc.c:1652 */ + old->next = (yyvsp[(3) - (3)].condition); + (yyval.condition) = (yyvsp[(1) - (3)].condition); + ;} break; - case 147: -#line 2286 "pl_gram.y" /* yacc.c:1652 */ + case 160: +#line 2380 "pl_gram.y" { - (yyval.condition) = (yyvsp[0].condition); - } -#line 4360 "pl_gram.c" /* yacc.c:1652 */ + (yyval.condition) = (yyvsp[(1) - (1)].condition); + ;} break; - case 148: -#line 2292 "pl_gram.y" /* yacc.c:1652 */ + case 161: +#line 2386 "pl_gram.y" { - if (strcmp((yyvsp[0].str), "sqlstate") != 0) + if (strcmp((yyvsp[(1) - (1)].str), "sqlstate") != 0) { - (yyval.condition) = plpgsql_parse_err_condition((yyvsp[0].str)); + (yyval.condition) = plpgsql_parse_err_condition((yyvsp[(1) - (1)].str)); } else { @@ -4445,140 +4747,114 @@ yyparse (void) (yyval.condition) = new; } - } -#line 4398 "pl_gram.c" /* yacc.c:1652 */ + ;} break; - case 149: -#line 2328 "pl_gram.y" /* yacc.c:1652 */ - { (yyval.expr) = read_sql_expression(';', ";"); } -#line 4404 "pl_gram.c" /* yacc.c:1652 */ + case 162: +#line 2422 "pl_gram.y" + { (yyval.expr) = read_sql_expression(';', ";"); ;} break; - case 150: -#line 2332 "pl_gram.y" /* yacc.c:1652 */ - { (yyval.expr) = read_sql_expression(']', "]"); } -#line 4410 "pl_gram.c" /* yacc.c:1652 */ + case 163: +#line 2426 "pl_gram.y" + { (yyval.expr) = read_sql_expression(']', "]"); ;} break; - case 151: -#line 2336 "pl_gram.y" /* yacc.c:1652 */ - { (yyval.expr) = read_sql_expression(K_THEN, "THEN"); } -#line 4416 "pl_gram.c" /* yacc.c:1652 */ + case 164: +#line 2430 "pl_gram.y" + { (yyval.expr) = read_sql_expression(K_THEN, "THEN"); ;} break; - case 152: -#line 2340 "pl_gram.y" /* yacc.c:1652 */ - { (yyval.expr) = read_sql_expression(K_LOOP, "LOOP"); } -#line 4422 "pl_gram.c" /* yacc.c:1652 */ + case 165: +#line 2434 "pl_gram.y" + { (yyval.expr) = read_sql_expression(K_LOOP, "LOOP"); ;} break; - case 153: -#line 2344 "pl_gram.y" /* yacc.c:1652 */ + case 166: +#line 2438 "pl_gram.y" { plpgsql_ns_push(NULL, PLPGSQL_LABEL_BLOCK); (yyval.str) = NULL; - } -#line 4431 "pl_gram.c" /* yacc.c:1652 */ + ;} break; - case 154: -#line 2349 "pl_gram.y" /* yacc.c:1652 */ + case 167: +#line 2443 "pl_gram.y" { - plpgsql_ns_push((yyvsp[-1].str), PLPGSQL_LABEL_BLOCK); - (yyval.str) = (yyvsp[-1].str); - } -#line 4440 "pl_gram.c" /* yacc.c:1652 */ + plpgsql_ns_push((yyvsp[(2) - (3)].str), PLPGSQL_LABEL_BLOCK); + (yyval.str) = (yyvsp[(2) - (3)].str); + ;} break; - case 155: -#line 2356 "pl_gram.y" /* yacc.c:1652 */ + case 168: +#line 2450 "pl_gram.y" { plpgsql_ns_push(NULL, PLPGSQL_LABEL_LOOP); (yyval.str) = NULL; - } -#line 4449 "pl_gram.c" /* yacc.c:1652 */ + ;} break; - case 156: -#line 2361 "pl_gram.y" /* yacc.c:1652 */ + case 169: +#line 2455 "pl_gram.y" { - plpgsql_ns_push((yyvsp[-1].str), PLPGSQL_LABEL_LOOP); - (yyval.str) = (yyvsp[-1].str); - } -#line 4458 "pl_gram.c" /* yacc.c:1652 */ + plpgsql_ns_push((yyvsp[(2) - (3)].str), PLPGSQL_LABEL_LOOP); + (yyval.str) = (yyvsp[(2) - (3)].str); + ;} break; - case 157: -#line 2368 "pl_gram.y" /* yacc.c:1652 */ + case 170: +#line 2462 "pl_gram.y" { (yyval.str) = NULL; - } -#line 4466 "pl_gram.c" /* yacc.c:1652 */ + ;} break; - case 158: -#line 2372 "pl_gram.y" /* yacc.c:1652 */ + case 171: +#line 2466 "pl_gram.y" { /* label validity will be checked by outer production */ - (yyval.str) = (yyvsp[0].str); - } -#line 4475 "pl_gram.c" /* yacc.c:1652 */ + (yyval.str) = (yyvsp[(1) - (1)].str); + ;} break; - case 159: -#line 2379 "pl_gram.y" /* yacc.c:1652 */ - { (yyval.expr) = NULL; } -#line 4481 "pl_gram.c" /* yacc.c:1652 */ + case 172: +#line 2473 "pl_gram.y" + { (yyval.expr) = NULL; ;} break; - case 160: -#line 2381 "pl_gram.y" /* yacc.c:1652 */ - { (yyval.expr) = (yyvsp[0].expr); } -#line 4487 "pl_gram.c" /* yacc.c:1652 */ + case 173: +#line 2475 "pl_gram.y" + { (yyval.expr) = (yyvsp[(2) - (2)].expr); ;} break; - case 161: -#line 2388 "pl_gram.y" /* yacc.c:1652 */ + case 174: +#line 2482 "pl_gram.y" { - (yyval.str) = (yyvsp[0].word).ident; - } -#line 4495 "pl_gram.c" /* yacc.c:1652 */ + (yyval.str) = (yyvsp[(1) - (1)].word).ident; + ;} break; - case 162: -#line 2392 "pl_gram.y" /* yacc.c:1652 */ + case 175: +#line 2486 "pl_gram.y" { - (yyval.str) = pstrdup((yyvsp[0].keyword)); - } -#line 4503 "pl_gram.c" /* yacc.c:1652 */ + (yyval.str) = pstrdup((yyvsp[(1) - (1)].keyword)); + ;} break; - case 163: -#line 2396 "pl_gram.y" /* yacc.c:1652 */ + case 176: +#line 2490 "pl_gram.y" { - if ((yyvsp[0].wdatum).ident == NULL) /* composite name not OK */ + if ((yyvsp[(1) - (1)].wdatum).ident == NULL) /* composite name not OK */ yyerror("syntax error"); - (yyval.str) = (yyvsp[0].wdatum).ident; - } -#line 4513 "pl_gram.c" /* yacc.c:1652 */ + (yyval.str) = (yyvsp[(1) - (1)].wdatum).ident; + ;} break; -#line 4517 "pl_gram.c" /* yacc.c:1652 */ +/* Line 1267 of yacc.c. */ +#line 4803 "pl_gram.c" default: break; } - /* User semantic actions sometimes alter yychar, and that requires - that yytoken be updated with the new translation. We take the - approach of translating immediately before every use of yytoken. - One alternative is translating here after every semantic action, - but that translation would be missed if the semantic action invokes - YYABORT, YYACCEPT, or YYERROR immediately after altering yychar or - if it invokes YYBACKUP. In the case of YYABORT or YYACCEPT, an - incorrect destructor might then be invoked immediately. In the - case of YYERROR or YYBACKUP, subsequent parser actions might lead - to an incorrect destructor call or verbose syntax error message - before the lookahead is translated. */ YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc); YYPOPSTACK (yylen); @@ -4588,28 +4864,25 @@ yyparse (void) *++yyvsp = yyval; *++yylsp = yyloc; - /* Now 'shift' the result of the reduction. Determine what state + /* Now `shift' the result of the reduction. Determine what state that goes to, based on the state we popped back to and the rule number reduced by. */ - { - const int yylhs = yyr1[yyn] - YYNTOKENS; - const int yyi = yypgoto[yylhs] + *yyssp; - yystate = (0 <= yyi && yyi <= YYLAST && yycheck[yyi] == *yyssp - ? yytable[yyi] - : yydefgoto[yylhs]); - } + + yyn = yyr1[yyn]; + + yystate = yypgoto[yyn - YYNTOKENS] + *yyssp; + if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp) + yystate = yytable[yystate]; + else + yystate = yydefgoto[yyn - YYNTOKENS]; goto yynewstate; -/*--------------------------------------. -| yyerrlab -- here on detecting error. | -`--------------------------------------*/ +/*------------------------------------. +| yyerrlab -- here on detecting error | +`------------------------------------*/ yyerrlab: - /* Make sure we have latest lookahead translation. See comments at - user semantic actions for why this is necessary. */ - yytoken = yychar == YYEMPTY ? YYEMPTY : YYTRANSLATE (yychar); - /* If not already recovering from an error, report this error. */ if (!yyerrstatus) { @@ -4617,61 +4890,62 @@ yyparse (void) #if ! YYERROR_VERBOSE yyerror (YY_("syntax error")); #else -# define YYSYNTAX_ERROR yysyntax_error (&yymsg_alloc, &yymsg, \ - yyssp, yytoken) { - char const *yymsgp = YY_("syntax error"); - int yysyntax_error_status; - yysyntax_error_status = YYSYNTAX_ERROR; - if (yysyntax_error_status == 0) - yymsgp = yymsg; - else if (yysyntax_error_status == 1) - { - if (yymsg != yymsgbuf) - YYSTACK_FREE (yymsg); - yymsg = (char *) YYSTACK_ALLOC (yymsg_alloc); - if (!yymsg) - { - yymsg = yymsgbuf; - yymsg_alloc = sizeof yymsgbuf; - yysyntax_error_status = 2; - } - else - { - yysyntax_error_status = YYSYNTAX_ERROR; - yymsgp = yymsg; - } - } - yyerror (yymsgp); - if (yysyntax_error_status == 2) - goto yyexhaustedlab; + YYSIZE_T yysize = yysyntax_error (0, yystate, yychar); + if (yymsg_alloc < yysize && yymsg_alloc < YYSTACK_ALLOC_MAXIMUM) + { + YYSIZE_T yyalloc = 2 * yysize; + if (! (yysize <= yyalloc && yyalloc <= YYSTACK_ALLOC_MAXIMUM)) + yyalloc = YYSTACK_ALLOC_MAXIMUM; + if (yymsg != yymsgbuf) + YYSTACK_FREE (yymsg); + yymsg = (char *) YYSTACK_ALLOC (yyalloc); + if (yymsg) + yymsg_alloc = yyalloc; + else + { + yymsg = yymsgbuf; + yymsg_alloc = sizeof yymsgbuf; + } + } + + if (0 < yysize && yysize <= yymsg_alloc) + { + (void) yysyntax_error (yymsg, yystate, yychar); + yyerror (yymsg); + } + else + { + yyerror (YY_("syntax error")); + if (yysize != 0) + goto yyexhaustedlab; + } } -# undef YYSYNTAX_ERROR #endif } - yyerror_range[1] = yylloc; + yyerror_range[0] = yylloc; if (yyerrstatus == 3) { - /* If just tried and failed to reuse lookahead token after an - error, discard it. */ + /* If just tried and failed to reuse look-ahead token after an + error, discard it. */ if (yychar <= YYEOF) - { - /* Return failure if at end of input. */ - if (yychar == YYEOF) - YYABORT; - } + { + /* Return failure if at end of input. */ + if (yychar == YYEOF) + YYABORT; + } else - { - yydestruct ("Error: discarding", - yytoken, &yylval, &yylloc); - yychar = YYEMPTY; - } + { + yydestruct ("Error: discarding", + yytoken, &yylval, &yylloc); + yychar = YYEMPTY; + } } - /* Else will try to reuse lookahead token after shifting the error + /* Else will try to reuse look-ahead token after shifting the error token. */ goto yyerrlab1; @@ -4680,12 +4954,15 @@ yyparse (void) | yyerrorlab -- error raised explicitly by YYERROR. | `---------------------------------------------------*/ yyerrorlab: - /* Pacify compilers when the user code never invokes YYERROR and the - label yyerrorlab therefore never appears in user code. */ - if (0) - YYERROR; - /* Do not reclaim the symbols of the rule whose action triggered + /* Pacify compilers like GCC when the user code never invokes + YYERROR and the label yyerrorlab therefore never appears in user + code. */ + if (/*CONSTCOND*/ 0) + goto yyerrorlab; + + yyerror_range[0] = yylsp[1-yylen]; + /* Do not reclaim the symbols of the rule which action triggered this YYERROR. */ YYPOPSTACK (yylen); yylen = 0; @@ -4698,42 +4975,43 @@ yyparse (void) | yyerrlab1 -- common code for both syntax error and YYERROR. | `-------------------------------------------------------------*/ yyerrlab1: - yyerrstatus = 3; /* Each real token shifted decrements this. */ + yyerrstatus = 3; /* Each real token shifted decrements this. */ for (;;) { yyn = yypact[yystate]; - if (!yypact_value_is_default (yyn)) - { - yyn += YYTERROR; - if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR) - { - yyn = yytable[yyn]; - if (0 < yyn) - break; - } - } + if (yyn != YYPACT_NINF) + { + yyn += YYTERROR; + if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR) + { + yyn = yytable[yyn]; + if (0 < yyn) + break; + } + } /* Pop the current state because it cannot handle the error token. */ if (yyssp == yyss) - YYABORT; + YYABORT; - yyerror_range[1] = *yylsp; + yyerror_range[0] = *yylsp; yydestruct ("Error: popping", - yystos[yystate], yyvsp, yylsp); + yystos[yystate], yyvsp, yylsp); YYPOPSTACK (1); yystate = *yyssp; YY_STACK_PRINT (yyss, yyssp); } - YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN + if (yyn == YYFINAL) + YYACCEPT; + *++yyvsp = yylval; - YY_IGNORE_MAYBE_UNINITIALIZED_END - yyerror_range[2] = yylloc; + yyerror_range[1] = yylloc; /* Using YYLLOC is tempting, but would change the location of - the lookahead. YYLOC is available though. */ - YYLLOC_DEFAULT (yyloc, yyerror_range, 2); + the look-ahead. YYLOC is available though. */ + YYLLOC_DEFAULT (yyloc, (yyerror_range - 1), 2); *++yylsp = yyloc; /* Shift the error token. */ @@ -4750,7 +5028,6 @@ yyparse (void) yyresult = 0; goto yyreturn; - /*-----------------------------------. | yyabortlab -- YYABORT comes here. | `-----------------------------------*/ @@ -4758,8 +5035,7 @@ yyparse (void) yyresult = 1; goto yyreturn; - -#if !defined yyoverflow || YYERROR_VERBOSE +#ifndef yyoverflow /*-------------------------------------------------. | yyexhaustedlab -- memory exhaustion comes here. | `-------------------------------------------------*/ @@ -4769,27 +5045,18 @@ yyparse (void) /* Fall through. */ #endif - -/*-----------------------------------------------------. -| yyreturn -- parsing is finished, return the result. | -`-----------------------------------------------------*/ yyreturn: - if (yychar != YYEMPTY) - { - /* Make sure we have latest lookahead translation. See comments at - user semantic actions for why this is necessary. */ - yytoken = YYTRANSLATE (yychar); - yydestruct ("Cleanup: discarding lookahead", - yytoken, &yylval, &yylloc); - } - /* Do not reclaim the symbols of the rule whose action triggered + if (yychar != YYEOF && yychar != YYEMPTY) + yydestruct ("Cleanup: discarding lookahead", + yytoken, &yylval, &yylloc); + /* Do not reclaim the symbols of the rule which action triggered this YYABORT or YYACCEPT. */ YYPOPSTACK (yylen); YY_STACK_PRINT (yyss, yyssp); while (yyssp != yyss) { yydestruct ("Cleanup: popping", - yystos[*yyssp], yyvsp, yylsp); + yystos[*yyssp], yyvsp, yylsp); YYPOPSTACK (1); } #ifndef yyoverflow @@ -4800,9 +5067,12 @@ yyparse (void) if (yymsg != yymsgbuf) YYSTACK_FREE (yymsg); #endif - return yyresult; + /* Make sure YYID is used. */ + return YYID (yyresult); } -#line 2481 "pl_gram.y" /* yacc.c:1918 */ + + +#line 2582 "pl_gram.y" /* @@ -5010,7 +5280,6 @@ read_sql_construct(int until, } expr = palloc0(sizeof(PLpgSQL_expr)); - expr->dtype = PLPGSQL_DTYPE_EXPR; expr->query = pstrdup(ds.data); expr->plan = NULL; expr->paramnos = NULL; @@ -5167,8 +5436,7 @@ make_execsql_stmt(int firsttoken, int location) IdentifierLookup save_IdentifierLookup; PLpgSQL_stmt_execsql *execsql; PLpgSQL_expr *expr; - PLpgSQL_row *row = NULL; - PLpgSQL_rec *rec = NULL; + PLpgSQL_variable *target = NULL; int tok; int prev_tok; bool have_into = false; @@ -5232,7 +5500,7 @@ make_execsql_stmt(int firsttoken, int location) have_into = true; into_start_loc = yylloc; plpgsql_IdentifierLookup = IDENTIFIER_LOOKUP_NORMAL; - read_into_target(&rec, &row, &have_strict); + read_into_target(&target, &have_strict); plpgsql_IdentifierLookup = IDENTIFIER_LOOKUP_EXPR; } } @@ -5258,7 +5526,6 @@ make_execsql_stmt(int firsttoken, int location) ds.data[--ds.len] = '\0'; expr = palloc0(sizeof(PLpgSQL_expr)); - expr->dtype = PLPGSQL_DTYPE_EXPR; expr->query = pstrdup(ds.data); expr->plan = NULL; expr->paramnos = NULL; @@ -5271,11 +5538,11 @@ make_execsql_stmt(int firsttoken, int location) execsql = palloc(sizeof(PLpgSQL_stmt_execsql)); execsql->cmd_type = PLPGSQL_STMT_EXECSQL; execsql->lineno = plpgsql_location_to_lineno(location); + execsql->stmtid = ++plpgsql_curr_compile->nstatements; execsql->sqlstmt = expr; execsql->into = have_into; execsql->strict = have_strict; - execsql->rec = rec; - execsql->row = row; + execsql->target = target; return (PLpgSQL_stmt *) execsql; } @@ -5297,6 +5564,7 @@ read_fetch_direction(void) */ fetch = (PLpgSQL_stmt_fetch *) palloc0(sizeof(PLpgSQL_stmt_fetch)); fetch->cmd_type = PLPGSQL_STMT_FETCH; + fetch->stmtid = ++plpgsql_curr_compile->nstatements; /* set direction defaults: */ fetch->direction = FETCH_FORWARD; fetch->how_many = 1; @@ -5483,6 +5751,7 @@ make_return_next_stmt(int location) new = palloc0(sizeof(PLpgSQL_stmt_return_next)); new->cmd_type = PLPGSQL_STMT_RETURN_NEXT; new->lineno = plpgsql_location_to_lineno(location); + new->stmtid = ++plpgsql_curr_compile->nstatements; new->expr = NULL; new->retvarno = -1; @@ -5505,6 +5774,7 @@ make_return_next_stmt(int location) if (tok == T_DATUM && plpgsql_peek() == ';' && (yylval.wdatum.datum->dtype == PLPGSQL_DTYPE_VAR || + yylval.wdatum.datum->dtype == PLPGSQL_DTYPE_PROMISE || yylval.wdatum.datum->dtype == PLPGSQL_DTYPE_ROW || yylval.wdatum.datum->dtype == PLPGSQL_DTYPE_REC)) { @@ -5545,6 +5815,7 @@ make_return_query_stmt(int location) new = palloc0(sizeof(PLpgSQL_stmt_return_query)); new->cmd_type = PLPGSQL_STMT_RETURN_QUERY; new->lineno = plpgsql_location_to_lineno(location); + new->stmtid = ++plpgsql_curr_compile->nstatements; /* check for RETURN QUERY EXECUTE */ if ((tok = yylex()) != K_EXECUTE) @@ -5592,24 +5863,27 @@ check_assignable(PLpgSQL_datum *datum, int location) switch (datum->dtype) { case PLPGSQL_DTYPE_VAR: - if (((PLpgSQL_var *) datum)->isconst) + case PLPGSQL_DTYPE_PROMISE: + case PLPGSQL_DTYPE_REC: + if (((PLpgSQL_variable *) datum)->isconst) ereport(ERROR, (errcode(ERRCODE_ERROR_IN_ASSIGNMENT), - errmsg("\"%s\" is declared CONSTANT", - ((PLpgSQL_var *) datum)->refname), + errmsg("variable \"%s\" is declared CONSTANT", + ((PLpgSQL_variable *) datum)->refname), parser_errposition(location))); break; case PLPGSQL_DTYPE_ROW: - /* always assignable? */ - break; - case PLPGSQL_DTYPE_REC: - /* always assignable? What about NEW/OLD? */ + /* always assignable; member vars were checked at compile time */ break; case PLPGSQL_DTYPE_RECFIELD: - /* always assignable? */ + /* assignable if parent record is */ + check_assignable(plpgsql_Datums[((PLpgSQL_recfield *) datum)->recparentno], + location); break; case PLPGSQL_DTYPE_ARRAYELEM: - /* always assignable? */ + /* assignable if parent array is */ + check_assignable(plpgsql_Datums[((PLpgSQL_arrayelem *) datum)->arrayparentno], + location); break; default: elog(ERROR, "unrecognized dtype: %d", datum->dtype); @@ -5622,13 +5896,12 @@ check_assignable(PLpgSQL_datum *datum, int location) * INTO keyword. */ static void -read_into_target(PLpgSQL_rec **rec, PLpgSQL_row **row, bool *strict) +read_into_target(PLpgSQL_variable **target, bool *strict) { int tok; /* Set default results */ - *rec = NULL; - *row = NULL; + *target = NULL; if (strict) *strict = false; @@ -5649,34 +5922,24 @@ read_into_target(PLpgSQL_rec **rec, PLpgSQL_row **row, bool *strict) switch (tok) { case T_DATUM: - if (yylval.wdatum.datum->dtype == PLPGSQL_DTYPE_ROW) - { - check_assignable(yylval.wdatum.datum, yylloc); - *row = (PLpgSQL_row *) yylval.wdatum.datum; - - if ((tok = yylex()) == ',') - ereport(ERROR, - (errcode(ERRCODE_SYNTAX_ERROR), - errmsg("record or row variable cannot be part of multiple-item INTO list"), - parser_errposition(yylloc))); - plpgsql_push_back_token(tok); - } - else if (yylval.wdatum.datum->dtype == PLPGSQL_DTYPE_REC) + if (yylval.wdatum.datum->dtype == PLPGSQL_DTYPE_ROW || + yylval.wdatum.datum->dtype == PLPGSQL_DTYPE_REC) { check_assignable(yylval.wdatum.datum, yylloc); - *rec = (PLpgSQL_rec *) yylval.wdatum.datum; + *target = (PLpgSQL_variable *) yylval.wdatum.datum; if ((tok = yylex()) == ',') ereport(ERROR, (errcode(ERRCODE_SYNTAX_ERROR), - errmsg("record or row variable cannot be part of multiple-item INTO list"), + errmsg("record variable cannot be part of multiple-item INTO list"), parser_errposition(yylloc))); plpgsql_push_back_token(tok); } else { - *row = read_into_scalar_list(NameOfDatum(&(yylval.wdatum)), - yylval.wdatum.datum, yylloc); + *target = (PLpgSQL_variable *) + read_into_scalar_list(NameOfDatum(&(yylval.wdatum)), + yylval.wdatum.datum, yylloc); } break; @@ -5745,9 +6008,9 @@ read_into_scalar_list(char *initial_name, */ plpgsql_push_back_token(tok); - row = palloc(sizeof(PLpgSQL_row)); + row = palloc0(sizeof(PLpgSQL_row)); row->dtype = PLPGSQL_DTYPE_ROW; - row->refname = pstrdup("*internal*"); + row->refname = "(unnamed row)"; row->lineno = plpgsql_location_to_lineno(initial_location); row->rowtupdesc = NULL; row->nfields = nfields; @@ -5780,9 +6043,9 @@ make_scalar_list1(char *initial_name, check_assignable(initial_datum, location); - row = palloc(sizeof(PLpgSQL_row)); + row = palloc0(sizeof(PLpgSQL_row)); row->dtype = PLPGSQL_DTYPE_ROW; - row->refname = pstrdup("*internal*"); + row->refname = "(unnamed row)"; row->lineno = lineno; row->rowtupdesc = NULL; row->nfields = 1; @@ -5871,7 +6134,7 @@ plpgsql_sql_error_callback(void *arg) internalerrposition(myerrpos + errpos - cbarg->leaderlen - 1); } - /* In any case, flush errposition --- we want internalerrpos only */ + /* In any case, flush errposition --- we want internalerrposition only */ errposition(0); } @@ -5898,7 +6161,7 @@ check_labels(const char *start_label, const char *end_label, int end_location) if (!start_label) ereport(ERROR, (errcode(ERRCODE_SYNTAX_ERROR), - errmsg("end label \"%s\" specified for unlabelled block", + errmsg("end label \"%s\" specified for unlabeled block", end_label), parser_errposition(end_location))); @@ -6074,7 +6337,6 @@ read_cursor_args(PLpgSQL_var *cursor, int until, const char *expected) appendStringInfoChar(&ds, ';'); expr = palloc0(sizeof(PLpgSQL_expr)); - expr->dtype = PLPGSQL_DTYPE_EXPR; expr->query = pstrdup(ds.data); expr->plan = NULL; expr->paramnos = NULL; @@ -6200,6 +6462,7 @@ make_case(int location, PLpgSQL_expr *t_expr, new = palloc(sizeof(PLpgSQL_stmt_case)); new->cmd_type = PLPGSQL_STMT_CASE; new->lineno = plpgsql_location_to_lineno(location); + new->stmtid = ++plpgsql_curr_compile->nstatements; new->t_expr = t_expr; new->t_varno = 0; new->case_when_list = case_when_list; @@ -6236,7 +6499,8 @@ make_case(int location, PLpgSQL_expr *t_expr, plpgsql_build_variable(varname, new->lineno, plpgsql_build_datatype(INT4OID, -1, - InvalidOid), + InvalidOid, + NULL), true); new->t_varno = t_var->dno; @@ -6266,3 +6530,4 @@ make_case(int location, PLpgSQL_expr *t_expr, return (PLpgSQL_stmt *) new; } + diff --git a/parser/src_pl_plpgsql_src_pl_handler.c b/parser/src_pl_plpgsql_src_pl_handler.c index fe1a675d..2ccae6af 100644 --- a/parser/src_pl_plpgsql_src_pl_handler.c +++ b/parser/src_pl_plpgsql_src_pl_handler.c @@ -10,7 +10,7 @@ * pl_handler.c - Handler for the PL/pgSQL * procedural language * - * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * @@ -27,15 +27,13 @@ #include "catalog/pg_type.h" #include "funcapi.h" #include "miscadmin.h" +#include "plpgsql.h" #include "utils/builtins.h" #include "utils/guc.h" #include "utils/lsyscache.h" #include "utils/syscache.h" #include "utils/varlena.h" -#include "plpgsql.h" - - static bool plpgsql_extra_checks_check_hook(char **newvalue, void **extra, GucSource source); static void plpgsql_extra_warnings_assign_hook(const char *newvalue, void *extra); static void plpgsql_extra_errors_assign_hook(const char *newvalue, void *extra); diff --git a/parser/src_pl_plpgsql_src_pl_reserved_kwlist_d.h b/parser/src_pl_plpgsql_src_pl_reserved_kwlist_d.h new file mode 100644 index 00000000..bd8789d9 --- /dev/null +++ b/parser/src_pl_plpgsql_src_pl_reserved_kwlist_d.h @@ -0,0 +1,123 @@ +/*-------------------------------------------------------------------- + * Symbols referenced in this file: + * - ReservedPLKeywords + * - ReservedPLKeywords_kw_string + * - ReservedPLKeywords_kw_offsets + * - ReservedPLKeywords_hash_func + *-------------------------------------------------------------------- + */ + +/*------------------------------------------------------------------------- + * + * pl_reserved_kwlist_d.h + * List of keywords represented as a ScanKeywordList. + * + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group + * Portions Copyright (c) 1994, Regents of the University of California + * + * NOTES + * ****************************** + * *** DO NOT EDIT THIS FILE! *** + * ****************************** + * + * It has been GENERATED by src/tools/gen_keywordlist.pl + * + *------------------------------------------------------------------------- + */ + +#ifndef PL_RESERVED_KWLIST_D_H +#define PL_RESERVED_KWLIST_D_H + +#include "common/kwlookup.h" + +static const char ReservedPLKeywords_kw_string[] = + "all\0" + "begin\0" + "by\0" + "case\0" + "declare\0" + "else\0" + "end\0" + "execute\0" + "for\0" + "foreach\0" + "from\0" + "if\0" + "in\0" + "into\0" + "loop\0" + "not\0" + "null\0" + "or\0" + "strict\0" + "then\0" + "to\0" + "using\0" + "when\0" + "while"; + +static const uint16 ReservedPLKeywords_kw_offsets[] = { + 0, + 4, + 10, + 13, + 18, + 26, + 31, + 35, + 43, + 47, + 55, + 60, + 63, + 66, + 71, + 76, + 80, + 85, + 88, + 95, + 100, + 103, + 109, + 114, +}; + +#define RESERVEDPLKEYWORDS_NUM_KEYWORDS 24 + +static int +ReservedPLKeywords_hash_func(const void *key, size_t keylen) +{ + static const int8 h[49] = { + -2, 127, 7, 127, 0, 127, 127, 127, + 18, 5, 127, 27, 127, 0, 127, 127, + 0, 39, 32, 22, 10, 127, 19, -26, + 127, -11, 0, 12, 127, 127, -1, 28, + 20, 0, 23, 127, 0, 14, -8, 127, + 127, 127, 13, 5, 127, -23, 1, 0, + 127, + }; + + const unsigned char *k = (const unsigned char *) key; + uint32 a = 0; + uint32 b = 1; + + while (keylen--) + { + unsigned char c = *k++ | 0x20; + + a = a * 31 + c; + b = b * 127 + c; + } + return h[a % 49] + h[b % 49]; +} + +static const ScanKeywordList ReservedPLKeywords = { + ReservedPLKeywords_kw_string, + ReservedPLKeywords_kw_offsets, + ReservedPLKeywords_hash_func, + RESERVEDPLKEYWORDS_NUM_KEYWORDS, + 7 +}; + +#endif /* PL_RESERVED_KWLIST_D_H */ diff --git a/parser/src_pl_plpgsql_src_pl_scanner.c b/parser/src_pl_plpgsql_src_pl_scanner.c index d1fca1e9..c26a7876 100644 --- a/parser/src_pl_plpgsql_src_pl_scanner.c +++ b/parser/src_pl_plpgsql_src_pl_scanner.c @@ -4,8 +4,7 @@ * - plpgsql_IdentifierLookup * - yyscanner * - core_yy - * - reserved_keywords - * - num_reserved_keywords + * - ReservedPLKeywordTokens * - scanorig * - plpgsql_yytoken * - num_pushbacks @@ -18,8 +17,7 @@ * - pushback_token * - pushback_auxdata * - push_back_token - * - unreserved_keywords - * - num_unreserved_keywords + * - UnreservedPLKeywordTokens * - plpgsql_yyleng * - plpgsql_location_to_lineno * - plpgsql_scanner_errposition @@ -40,7 +38,7 @@ * lexical scanning for PL/pgSQL * * - * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * @@ -58,9 +56,6 @@ #include "pl_gram.h" /* must be after parser/scanner.h */ -#define PG_KEYWORD(a,b,c) {a,b,c}, - - /* Klugy flag to tell scanner how to look up identifiers */ __thread IdentifierLookup plpgsql_IdentifierLookup = IDENTIFIER_LOOKUP_NORMAL; @@ -68,7 +63,9 @@ __thread IdentifierLookup plpgsql_IdentifierLookup = IDENTIFIER_LOOKUP_NORMAL; /* * A word about keywords: * - * We keep reserved and unreserved keywords in separate arrays. The + * We keep reserved and unreserved keywords in separate headers. Be careful + * not to put the same word in both headers. Also be sure that pl_gram.y's + * unreserved_keyword production agrees with the unreserved header. The * reserved keywords are passed to the core scanner, so they will be * recognized before (and instead of) any variable name. Unreserved words * are checked for separately, usually after determining that the identifier @@ -94,125 +91,22 @@ __thread IdentifierLookup plpgsql_IdentifierLookup = IDENTIFIER_LOOKUP_NORMAL; * BEGIN BY DECLARE EXECUTE FOREACH IF LOOP STRICT WHILE */ -/* - * Lists of keyword (name, token-value, category) entries. - * - * !!WARNING!!: These lists must be sorted by ASCII name, because binary - * search is used to locate entries. - * - * Be careful not to put the same word in both lists. Also be sure that - * pl_gram.y's unreserved_keyword production agrees with the second list. - */ +/* ScanKeywordList lookup data for PL/pgSQL keywords */ +#include "pl_reserved_kwlist_d.h" +#include "pl_unreserved_kwlist_d.h" + +/* Token codes for PL/pgSQL keywords */ +#define PG_KEYWORD(kwname, value) value, -static const ScanKeyword reserved_keywords[] = { - PG_KEYWORD("all", K_ALL, RESERVED_KEYWORD) - PG_KEYWORD("begin", K_BEGIN, RESERVED_KEYWORD) - PG_KEYWORD("by", K_BY, RESERVED_KEYWORD) - PG_KEYWORD("case", K_CASE, RESERVED_KEYWORD) - PG_KEYWORD("declare", K_DECLARE, RESERVED_KEYWORD) - PG_KEYWORD("else", K_ELSE, RESERVED_KEYWORD) - PG_KEYWORD("end", K_END, RESERVED_KEYWORD) - PG_KEYWORD("execute", K_EXECUTE, RESERVED_KEYWORD) - PG_KEYWORD("for", K_FOR, RESERVED_KEYWORD) - PG_KEYWORD("foreach", K_FOREACH, RESERVED_KEYWORD) - PG_KEYWORD("from", K_FROM, RESERVED_KEYWORD) - PG_KEYWORD("if", K_IF, RESERVED_KEYWORD) - PG_KEYWORD("in", K_IN, RESERVED_KEYWORD) - PG_KEYWORD("into", K_INTO, RESERVED_KEYWORD) - PG_KEYWORD("loop", K_LOOP, RESERVED_KEYWORD) - PG_KEYWORD("not", K_NOT, RESERVED_KEYWORD) - PG_KEYWORD("null", K_NULL, RESERVED_KEYWORD) - PG_KEYWORD("or", K_OR, RESERVED_KEYWORD) - PG_KEYWORD("strict", K_STRICT, RESERVED_KEYWORD) - PG_KEYWORD("then", K_THEN, RESERVED_KEYWORD) - PG_KEYWORD("to", K_TO, RESERVED_KEYWORD) - PG_KEYWORD("using", K_USING, RESERVED_KEYWORD) - PG_KEYWORD("when", K_WHEN, RESERVED_KEYWORD) - PG_KEYWORD("while", K_WHILE, RESERVED_KEYWORD) +static const uint16 ReservedPLKeywordTokens[] = { +#include "pl_reserved_kwlist.h" }; -static const int num_reserved_keywords = lengthof(reserved_keywords); - -static const ScanKeyword unreserved_keywords[] = { - PG_KEYWORD("absolute", K_ABSOLUTE, UNRESERVED_KEYWORD) - PG_KEYWORD("alias", K_ALIAS, UNRESERVED_KEYWORD) - PG_KEYWORD("array", K_ARRAY, UNRESERVED_KEYWORD) - PG_KEYWORD("assert", K_ASSERT, UNRESERVED_KEYWORD) - PG_KEYWORD("backward", K_BACKWARD, UNRESERVED_KEYWORD) - PG_KEYWORD("close", K_CLOSE, UNRESERVED_KEYWORD) - PG_KEYWORD("collate", K_COLLATE, UNRESERVED_KEYWORD) - PG_KEYWORD("column", K_COLUMN, UNRESERVED_KEYWORD) - PG_KEYWORD("column_name", K_COLUMN_NAME, UNRESERVED_KEYWORD) - PG_KEYWORD("constant", K_CONSTANT, UNRESERVED_KEYWORD) - PG_KEYWORD("constraint", K_CONSTRAINT, UNRESERVED_KEYWORD) - PG_KEYWORD("constraint_name", K_CONSTRAINT_NAME, UNRESERVED_KEYWORD) - PG_KEYWORD("continue", K_CONTINUE, UNRESERVED_KEYWORD) - PG_KEYWORD("current", K_CURRENT, UNRESERVED_KEYWORD) - PG_KEYWORD("cursor", K_CURSOR, UNRESERVED_KEYWORD) - PG_KEYWORD("datatype", K_DATATYPE, UNRESERVED_KEYWORD) - PG_KEYWORD("debug", K_DEBUG, UNRESERVED_KEYWORD) - PG_KEYWORD("default", K_DEFAULT, UNRESERVED_KEYWORD) - PG_KEYWORD("detail", K_DETAIL, UNRESERVED_KEYWORD) - PG_KEYWORD("diagnostics", K_DIAGNOSTICS, UNRESERVED_KEYWORD) - PG_KEYWORD("dump", K_DUMP, UNRESERVED_KEYWORD) - PG_KEYWORD("elseif", K_ELSIF, UNRESERVED_KEYWORD) - PG_KEYWORD("elsif", K_ELSIF, UNRESERVED_KEYWORD) - PG_KEYWORD("errcode", K_ERRCODE, UNRESERVED_KEYWORD) - PG_KEYWORD("error", K_ERROR, UNRESERVED_KEYWORD) - PG_KEYWORD("exception", K_EXCEPTION, UNRESERVED_KEYWORD) - PG_KEYWORD("exit", K_EXIT, UNRESERVED_KEYWORD) - PG_KEYWORD("fetch", K_FETCH, UNRESERVED_KEYWORD) - PG_KEYWORD("first", K_FIRST, UNRESERVED_KEYWORD) - PG_KEYWORD("forward", K_FORWARD, UNRESERVED_KEYWORD) - PG_KEYWORD("get", K_GET, UNRESERVED_KEYWORD) - PG_KEYWORD("hint", K_HINT, UNRESERVED_KEYWORD) - PG_KEYWORD("import", K_IMPORT, UNRESERVED_KEYWORD) - PG_KEYWORD("info", K_INFO, UNRESERVED_KEYWORD) - PG_KEYWORD("insert", K_INSERT, UNRESERVED_KEYWORD) - PG_KEYWORD("is", K_IS, UNRESERVED_KEYWORD) - PG_KEYWORD("last", K_LAST, UNRESERVED_KEYWORD) - PG_KEYWORD("log", K_LOG, UNRESERVED_KEYWORD) - PG_KEYWORD("message", K_MESSAGE, UNRESERVED_KEYWORD) - PG_KEYWORD("message_text", K_MESSAGE_TEXT, UNRESERVED_KEYWORD) - PG_KEYWORD("move", K_MOVE, UNRESERVED_KEYWORD) - PG_KEYWORD("next", K_NEXT, UNRESERVED_KEYWORD) - PG_KEYWORD("no", K_NO, UNRESERVED_KEYWORD) - PG_KEYWORD("notice", K_NOTICE, UNRESERVED_KEYWORD) - PG_KEYWORD("open", K_OPEN, UNRESERVED_KEYWORD) - PG_KEYWORD("option", K_OPTION, UNRESERVED_KEYWORD) - PG_KEYWORD("perform", K_PERFORM, UNRESERVED_KEYWORD) - PG_KEYWORD("pg_context", K_PG_CONTEXT, UNRESERVED_KEYWORD) - PG_KEYWORD("pg_datatype_name", K_PG_DATATYPE_NAME, UNRESERVED_KEYWORD) - PG_KEYWORD("pg_exception_context", K_PG_EXCEPTION_CONTEXT, UNRESERVED_KEYWORD) - PG_KEYWORD("pg_exception_detail", K_PG_EXCEPTION_DETAIL, UNRESERVED_KEYWORD) - PG_KEYWORD("pg_exception_hint", K_PG_EXCEPTION_HINT, UNRESERVED_KEYWORD) - PG_KEYWORD("print_strict_params", K_PRINT_STRICT_PARAMS, UNRESERVED_KEYWORD) - PG_KEYWORD("prior", K_PRIOR, UNRESERVED_KEYWORD) - PG_KEYWORD("query", K_QUERY, UNRESERVED_KEYWORD) - PG_KEYWORD("raise", K_RAISE, UNRESERVED_KEYWORD) - PG_KEYWORD("relative", K_RELATIVE, UNRESERVED_KEYWORD) - PG_KEYWORD("result_oid", K_RESULT_OID, UNRESERVED_KEYWORD) - PG_KEYWORD("return", K_RETURN, UNRESERVED_KEYWORD) - PG_KEYWORD("returned_sqlstate", K_RETURNED_SQLSTATE, UNRESERVED_KEYWORD) - PG_KEYWORD("reverse", K_REVERSE, UNRESERVED_KEYWORD) - PG_KEYWORD("row_count", K_ROW_COUNT, UNRESERVED_KEYWORD) - PG_KEYWORD("rowtype", K_ROWTYPE, UNRESERVED_KEYWORD) - PG_KEYWORD("schema", K_SCHEMA, UNRESERVED_KEYWORD) - PG_KEYWORD("schema_name", K_SCHEMA_NAME, UNRESERVED_KEYWORD) - PG_KEYWORD("scroll", K_SCROLL, UNRESERVED_KEYWORD) - PG_KEYWORD("slice", K_SLICE, UNRESERVED_KEYWORD) - PG_KEYWORD("sqlstate", K_SQLSTATE, UNRESERVED_KEYWORD) - PG_KEYWORD("stacked", K_STACKED, UNRESERVED_KEYWORD) - PG_KEYWORD("table", K_TABLE, UNRESERVED_KEYWORD) - PG_KEYWORD("table_name", K_TABLE_NAME, UNRESERVED_KEYWORD) - PG_KEYWORD("type", K_TYPE, UNRESERVED_KEYWORD) - PG_KEYWORD("use_column", K_USE_COLUMN, UNRESERVED_KEYWORD) - PG_KEYWORD("use_variable", K_USE_VARIABLE, UNRESERVED_KEYWORD) - PG_KEYWORD("variable_conflict", K_VARIABLE_CONFLICT, UNRESERVED_KEYWORD) - PG_KEYWORD("warning", K_WARNING, UNRESERVED_KEYWORD) +static const uint16 UnreservedPLKeywordTokens[] = { +#include "pl_unreserved_kwlist.h" }; -static const int num_unreserved_keywords = lengthof(unreserved_keywords); +#undef PG_KEYWORD /* * This macro must recognize all tokens that can immediately precede a @@ -299,7 +193,7 @@ plpgsql_yylex(void) { int tok1; TokenAuxData aux1; - const ScanKeyword *kw; + int kwnum; tok1 = internal_yylex(&aux1); if (tok1 == IDENT || tok1 == PARAM) @@ -371,16 +265,17 @@ plpgsql_yylex(void) push_back_token(tok2, &aux2); if (plpgsql_parse_word(aux1.lval.str, core_yy.scanbuf + aux1.lloc, + true, &aux1.lval.wdatum, &aux1.lval.word)) tok1 = T_DATUM; else if (!aux1.lval.word.quoted && - (kw = ScanKeywordLookup(aux1.lval.word.ident, - unreserved_keywords, - num_unreserved_keywords))) + (kwnum = ScanKeywordLookup(aux1.lval.word.ident, + &UnreservedPLKeywords)) >= 0) { - aux1.lval.keyword = kw->name; - tok1 = kw->value; + aux1.lval.keyword = GetScanKeyword(kwnum, + &UnreservedPLKeywords); + tok1 = UnreservedPLKeywordTokens[kwnum]; } else tok1 = T_WORD; @@ -392,53 +287,40 @@ plpgsql_yylex(void) push_back_token(tok2, &aux2); /* - * If we are at start of statement, prefer unreserved keywords - * over variable names, unless the next token is assignment or - * '[', in which case prefer variable names. (Note we need not - * consider '.' as the next token; that case was handled above, - * and we always prefer variable names in that case.) If we are - * not at start of statement, always prefer variable names over - * unreserved keywords. + * See if it matches a variable name, except in the context where + * we are at start of statement and the next token isn't + * assignment or '['. In that case, it couldn't validly be a + * variable name, and skipping the lookup allows variable names to + * be used that would conflict with plpgsql or core keywords that + * introduce statements (e.g., "comment"). Without this special + * logic, every statement-introducing keyword would effectively be + * reserved in PL/pgSQL, which would be unpleasant. + * + * If it isn't a variable name, try to match against unreserved + * plpgsql keywords. If not one of those either, it's T_WORD. + * + * Note: we must call plpgsql_parse_word even if we don't want to + * do variable lookup, because it sets up aux1.lval.word for the + * non-variable cases. */ - if (AT_STMT_START(plpgsql_yytoken) && - !(tok2 == '=' || tok2 == COLON_EQUALS || tok2 == '[')) + if (plpgsql_parse_word(aux1.lval.str, + core_yy.scanbuf + aux1.lloc, + (!AT_STMT_START(plpgsql_yytoken) || + (tok2 == '=' || tok2 == COLON_EQUALS || + tok2 == '[')), + &aux1.lval.wdatum, + &aux1.lval.word)) + tok1 = T_DATUM; + else if (!aux1.lval.word.quoted && + (kwnum = ScanKeywordLookup(aux1.lval.word.ident, + &UnreservedPLKeywords)) >= 0) { - /* try for unreserved keyword, then for variable name */ - if (core_yy.scanbuf[aux1.lloc] != '"' && - (kw = ScanKeywordLookup(aux1.lval.str, - unreserved_keywords, - num_unreserved_keywords))) - { - aux1.lval.keyword = kw->name; - tok1 = kw->value; - } - else if (plpgsql_parse_word(aux1.lval.str, - core_yy.scanbuf + aux1.lloc, - &aux1.lval.wdatum, - &aux1.lval.word)) - tok1 = T_DATUM; - else - tok1 = T_WORD; + aux1.lval.keyword = GetScanKeyword(kwnum, + &UnreservedPLKeywords); + tok1 = UnreservedPLKeywordTokens[kwnum]; } else - { - /* try for variable name, then for unreserved keyword */ - if (plpgsql_parse_word(aux1.lval.str, - core_yy.scanbuf + aux1.lloc, - &aux1.lval.wdatum, - &aux1.lval.word)) - tok1 = T_DATUM; - else if (!aux1.lval.word.quoted && - (kw = ScanKeywordLookup(aux1.lval.word.ident, - unreserved_keywords, - num_unreserved_keywords))) - { - aux1.lval.keyword = kw->name; - tok1 = kw->value; - } - else - tok1 = T_WORD; - } + tok1 = T_WORD; } } else @@ -506,6 +388,11 @@ internal_yylex(TokenAuxData *auxdata) { auxdata->lval.str = pstrdup(yytext); } + + else if (token == SQL_COMMENT || token == C_COMMENT) + { + token = internal_yylex(auxdata); + } } return token; @@ -552,9 +439,9 @@ plpgsql_token_is_unreserved_keyword(int token) { int i; - for (i = 0; i < num_unreserved_keywords; i++) + for (i = 0; i < lengthof(UnreservedPLKeywordTokens); i++) { - if (unreserved_keywords[i].value == token) + if (UnreservedPLKeywordTokens[i] == token) return true; } return false; @@ -751,7 +638,7 @@ plpgsql_scanner_init(const char *str) { /* Start up the core scanner */ yyscanner = scanner_init(str, &core_yy, - reserved_keywords, num_reserved_keywords); + &ReservedPLKeywords, ReservedPLKeywordTokens); /* * scanorig points to the original string, which unlike the scanner's diff --git a/parser/src_pl_plpgsql_src_pl_unreserved_kwlist_d.h b/parser/src_pl_plpgsql_src_pl_unreserved_kwlist_d.h new file mode 100644 index 00000000..d43663a4 --- /dev/null +++ b/parser/src_pl_plpgsql_src_pl_unreserved_kwlist_d.h @@ -0,0 +1,255 @@ +/*-------------------------------------------------------------------- + * Symbols referenced in this file: + * - UnreservedPLKeywords + * - UnreservedPLKeywords_kw_string + * - UnreservedPLKeywords_kw_offsets + * - UnreservedPLKeywords_hash_func + *-------------------------------------------------------------------- + */ + +/*------------------------------------------------------------------------- + * + * pl_unreserved_kwlist_d.h + * List of keywords represented as a ScanKeywordList. + * + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group + * Portions Copyright (c) 1994, Regents of the University of California + * + * NOTES + * ****************************** + * *** DO NOT EDIT THIS FILE! *** + * ****************************** + * + * It has been GENERATED by src/tools/gen_keywordlist.pl + * + *------------------------------------------------------------------------- + */ + +#ifndef PL_UNRESERVED_KWLIST_D_H +#define PL_UNRESERVED_KWLIST_D_H + +#include "common/kwlookup.h" + +static const char UnreservedPLKeywords_kw_string[] = + "absolute\0" + "alias\0" + "and\0" + "array\0" + "assert\0" + "backward\0" + "call\0" + "chain\0" + "close\0" + "collate\0" + "column\0" + "column_name\0" + "commit\0" + "constant\0" + "constraint\0" + "constraint_name\0" + "continue\0" + "current\0" + "cursor\0" + "datatype\0" + "debug\0" + "default\0" + "detail\0" + "diagnostics\0" + "do\0" + "dump\0" + "elseif\0" + "elsif\0" + "errcode\0" + "error\0" + "exception\0" + "exit\0" + "fetch\0" + "first\0" + "forward\0" + "get\0" + "hint\0" + "import\0" + "info\0" + "insert\0" + "is\0" + "last\0" + "log\0" + "message\0" + "message_text\0" + "move\0" + "next\0" + "no\0" + "notice\0" + "open\0" + "option\0" + "perform\0" + "pg_context\0" + "pg_datatype_name\0" + "pg_exception_context\0" + "pg_exception_detail\0" + "pg_exception_hint\0" + "print_strict_params\0" + "prior\0" + "query\0" + "raise\0" + "relative\0" + "reset\0" + "return\0" + "returned_sqlstate\0" + "reverse\0" + "rollback\0" + "row_count\0" + "rowtype\0" + "schema\0" + "schema_name\0" + "scroll\0" + "set\0" + "slice\0" + "sqlstate\0" + "stacked\0" + "table\0" + "table_name\0" + "type\0" + "use_column\0" + "use_variable\0" + "variable_conflict\0" + "warning"; + +static const uint16 UnreservedPLKeywords_kw_offsets[] = { + 0, + 9, + 15, + 19, + 25, + 32, + 41, + 46, + 52, + 58, + 66, + 73, + 85, + 92, + 101, + 112, + 128, + 137, + 145, + 152, + 161, + 167, + 175, + 182, + 194, + 197, + 202, + 209, + 215, + 223, + 229, + 239, + 244, + 250, + 256, + 264, + 268, + 273, + 280, + 285, + 292, + 295, + 300, + 304, + 312, + 325, + 330, + 335, + 338, + 345, + 350, + 357, + 365, + 376, + 393, + 414, + 434, + 452, + 472, + 478, + 484, + 490, + 499, + 505, + 512, + 530, + 538, + 547, + 557, + 565, + 572, + 584, + 591, + 595, + 601, + 610, + 618, + 624, + 635, + 640, + 651, + 664, + 682, +}; + +#define UNRESERVEDPLKEYWORDS_NUM_KEYWORDS 83 + +static int +UnreservedPLKeywords_hash_func(const void *key, size_t keylen) +{ + static const int16 h[167] = { + 10, 32767, 32767, 57, 32767, 62, 21, 32767, + 54, 18, 32767, 58, 59, -54, 47, 0, + -22, -64, 32767, -22, 33, 44, -5, 32767, + 32767, 43, 57, 102, 32767, -65, 7, 32767, + 13, 32767, -28, 14, 32767, 32767, 82, 32767, + 0, 0, 32767, 8, -43, 0, 19, 8, + 75, -58, 32767, 32767, 0, 22, 29, 32767, + -50, 6, 32767, 0, 30, 32767, 32767, 29, + 0, 104, 32767, 32767, 26, 0, 32767, 32767, + -9, 2, 32767, 50, 39, 38, 39, 80, + 32767, 32767, 32767, 32767, -67, 89, 32767, -40, + 64, 32767, 32767, 26, 10, 27, 32767, 19, + 51, -13, 26, 32767, 32767, 32767, 84, 23, + 0, 66, 12, -5, 32767, 32767, 0, 50, + 141, 72, 45, 32767, 32767, 0, -22, 0, + 32767, 32767, -34, 0, 19, -5, 32767, 32767, + 32767, 0, 37, 13, 32767, 32767, 32767, 32767, + -68, -4, 32767, 32767, 78, 32767, 32767, 0, + 85, 32767, 32767, 32767, -93, 32767, 0, 0, + 32767, 74, 5, 32767, 32767, 71, 0, 32767, + 32767, 0, 32767, 32767, 32767, 46, 70, + }; + + const unsigned char *k = (const unsigned char *) key; + uint32 a = 0; + uint32 b = 1; + + while (keylen--) + { + unsigned char c = *k++ | 0x20; + + a = a * 31 + c; + b = b * 127 + c; + } + return h[a % 167] + h[b % 167]; +} + +static const ScanKeywordList UnreservedPLKeywords = { + UnreservedPLKeywords_kw_string, + UnreservedPLKeywords_kw_offsets, + UnreservedPLKeywords_hash_func, + UNRESERVEDPLKEYWORDS_NUM_KEYWORDS, + 20 +}; + +#endif /* PL_UNRESERVED_KWLIST_D_H */ diff --git a/parser/src_port_erand48.c b/parser/src_port_erand48.c index 4a4b9d83..f8525a9b 100644 --- a/parser/src_port_erand48.c +++ b/parser/src_port_erand48.c @@ -2,8 +2,6 @@ * Symbols referenced in this file: * - pg_lrand48 * - _dorand48 - * - _rand48_mult - * - _rand48_add * - _rand48_seed *-------------------------------------------------------------------- */ @@ -24,7 +22,7 @@ * erand48() is strangely coded to be almost-but-not-quite thread-safe, * which doesn't matter for the backend but is important for pgbench. * - * Portions Copyright (c) 1996-2018, PostgreSQL Global Development Group + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * * Portions Copyright (c) 1993 Martin Birgmeier * All rights reserved. @@ -47,13 +45,14 @@ #include +/* These values are specified by POSIX */ +#define RAND48_MULT UINT64CONST(0x0005deece66d) +#define RAND48_ADD UINT64CONST(0x000b) + +/* POSIX specifies 0x330e's use in srand48, but the other bits are arbitrary */ #define RAND48_SEED_0 (0x330e) #define RAND48_SEED_1 (0xabcd) #define RAND48_SEED_2 (0x1234) -#define RAND48_MULT_0 (0xe66d) -#define RAND48_MULT_1 (0xdeec) -#define RAND48_MULT_2 (0x0005) -#define RAND48_ADD (0x000b) static __thread unsigned short _rand48_seed[3] = { RAND48_SEED_0, @@ -61,37 +60,32 @@ static __thread unsigned short _rand48_seed[3] = { RAND48_SEED_2 }; -static __thread unsigned short _rand48_mult[3] = { - RAND48_MULT_0, - RAND48_MULT_1, - RAND48_MULT_2 -}; - -static __thread unsigned short _rand48_add = RAND48_ADD; - /* * Advance the 48-bit value stored in xseed[] to the next "random" number. + * + * Also returns the value of that number --- without masking it to 48 bits. + * If caller uses the result, it must mask off the bits it wants. */ -static void +static uint64 _dorand48(unsigned short xseed[3]) { - unsigned long accu; - unsigned short temp[2]; - - accu = (unsigned long) _rand48_mult[0] * (unsigned long) xseed[0] + - (unsigned long) _rand48_add; - temp[0] = (unsigned short) accu; /* lower 16 bits */ - accu >>= sizeof(unsigned short) * 8; - accu += (unsigned long) _rand48_mult[0] * (unsigned long) xseed[1] + - (unsigned long) _rand48_mult[1] * (unsigned long) xseed[0]; - temp[1] = (unsigned short) accu; /* middle 16 bits */ - accu >>= sizeof(unsigned short) * 8; - accu += _rand48_mult[0] * xseed[2] + _rand48_mult[1] * xseed[1] + _rand48_mult[2] * xseed[0]; - xseed[0] = temp[0]; - xseed[1] = temp[1]; - xseed[2] = (unsigned short) accu; + /* + * We do the arithmetic in uint64; any type wider than 48 bits would work. + */ + uint64 in; + uint64 out; + + in = (uint64) xseed[2] << 32 | (uint64) xseed[1] << 16 | (uint64) xseed[0]; + + out = in * RAND48_MULT + RAND48_ADD; + + xseed[0] = out & 0xFFFF; + xseed[1] = (out >> 16) & 0xFFFF; + xseed[2] = (out >> 32) & 0xFFFF; + + return out; } @@ -108,8 +102,9 @@ _dorand48(unsigned short xseed[3]) long pg_lrand48(void) { - _dorand48(_rand48_seed); - return ((long) _rand48_seed[2] << 15) + ((long) _rand48_seed[1] >> 1); + uint64 x = _dorand48(_rand48_seed); + + return (x >> 17) & UINT64CONST(0x7FFFFFFF); } /* diff --git a/parser/src_port_pg_bitutils.c b/parser/src_port_pg_bitutils.c new file mode 100644 index 00000000..847c02a3 --- /dev/null +++ b/parser/src_port_pg_bitutils.c @@ -0,0 +1,246 @@ +/*-------------------------------------------------------------------- + * Symbols referenced in this file: + * - pg_popcount64 + * - pg_popcount64_choose + * - pg_popcount32 + * - pg_popcount32_choose + * - pg_popcount_available + * - pg_popcount32_asm + * - pg_popcount64_asm + * - pg_popcount32_slow + * - pg_popcount64_slow + *-------------------------------------------------------------------- + */ + +/*------------------------------------------------------------------------- + * + * pg_bitutils.c + * Miscellaneous functions for bit-wise operations. + * + * Copyright (c) 2019-2020, PostgreSQL Global Development Group + * + * IDENTIFICATION + * src/port/pg_bitutils.c + * + *------------------------------------------------------------------------- + */ +#include "c.h" + +#ifdef HAVE__GET_CPUID +#include +#endif +#ifdef HAVE__CPUID +#include +#endif + +#include "port/pg_bitutils.h" + + +/* + * Array giving the position of the left-most set bit for each possible + * byte value. We count the right-most position as the 0th bit, and the + * left-most the 7th bit. The 0th entry of the array should not be used. + * + * Note: this is not used by the functions in pg_bitutils.h when + * HAVE__BUILTIN_CLZ is defined, but we provide it anyway, so that + * extensions possibly compiled with a different compiler can use it. + */ + + +/* + * Array giving the position of the right-most set bit for each possible + * byte value. We count the right-most position as the 0th bit, and the + * left-most the 7th bit. The 0th entry of the array should not be used. + * + * Note: this is not used by the functions in pg_bitutils.h when + * HAVE__BUILTIN_CTZ is defined, but we provide it anyway, so that + * extensions possibly compiled with a different compiler can use it. + */ + + +/* + * Array giving the number of 1-bits in each possible byte value. + * + * Note: we export this for use by functions in which explicit use + * of the popcount functions seems unlikely to be a win. + */ + + +/* + * On x86_64, we can use the hardware popcount instruction, but only if + * we can verify that the CPU supports it via the cpuid instruction. + * + * Otherwise, we fall back to __builtin_popcount if the compiler has that, + * or a hand-rolled implementation if not. + */ +#ifdef HAVE_X86_64_POPCNTQ +#if defined(HAVE__GET_CPUID) || defined(HAVE__CPUID) +#define USE_POPCNT_ASM 1 +#endif +#endif + +static int pg_popcount32_slow(uint32 word); +static int pg_popcount64_slow(uint64 word); + +#ifdef USE_POPCNT_ASM +static bool pg_popcount_available(void); +static int pg_popcount32_choose(uint32 word); +static int pg_popcount64_choose(uint64 word); +static int pg_popcount32_asm(uint32 word); +static int pg_popcount64_asm(uint64 word); + +int (*pg_popcount32) (uint32 word) = pg_popcount32_choose; +int (*pg_popcount64) (uint64 word) = pg_popcount64_choose; +#else +int (*pg_popcount32) (uint32 word) = pg_popcount32_slow; +int (*pg_popcount64) (uint64 word) = pg_popcount64_slow; +#endif /* USE_POPCNT_ASM */ + +#ifdef USE_POPCNT_ASM + +/* + * Return true if CPUID indicates that the POPCNT instruction is available. + */ +static bool +pg_popcount_available(void) +{ + unsigned int exx[4] = {0, 0, 0, 0}; + +#if defined(HAVE__GET_CPUID) + __get_cpuid(1, &exx[0], &exx[1], &exx[2], &exx[3]); +#elif defined(HAVE__CPUID) + __cpuid(exx, 1); +#else +#error cpuid instruction not available +#endif + + return (exx[2] & (1 << 23)) != 0; /* POPCNT */ +} + +/* + * These functions get called on the first call to pg_popcount32 etc. + * They detect whether we can use the asm implementations, and replace + * the function pointers so that subsequent calls are routed directly to + * the chosen implementation. + */ +static int +pg_popcount32_choose(uint32 word) +{ + if (pg_popcount_available()) + { + pg_popcount32 = pg_popcount32_asm; + pg_popcount64 = pg_popcount64_asm; + } + else + { + pg_popcount32 = pg_popcount32_slow; + pg_popcount64 = pg_popcount64_slow; + } + + return pg_popcount32(word); +} + +static int +pg_popcount64_choose(uint64 word) +{ + if (pg_popcount_available()) + { + pg_popcount32 = pg_popcount32_asm; + pg_popcount64 = pg_popcount64_asm; + } + else + { + pg_popcount32 = pg_popcount32_slow; + pg_popcount64 = pg_popcount64_slow; + } + + return pg_popcount64(word); +} + +/* + * pg_popcount32_asm + * Return the number of 1 bits set in word + */ +static int +pg_popcount32_asm(uint32 word) +{ + uint32 res; + +__asm__ __volatile__(" popcntl %1,%0\n":"=q"(res):"rm"(word):"cc"); + return (int) res; +} + +/* + * pg_popcount64_asm + * Return the number of 1 bits set in word + */ +static int +pg_popcount64_asm(uint64 word) +{ + uint64 res; + +__asm__ __volatile__(" popcntq %1,%0\n":"=q"(res):"rm"(word):"cc"); + return (int) res; +} + +#endif /* USE_POPCNT_ASM */ + + +/* + * pg_popcount32_slow + * Return the number of 1 bits set in word + */ +static int +pg_popcount32_slow(uint32 word) +{ +#ifdef HAVE__BUILTIN_POPCOUNT + return __builtin_popcount(word); +#else /* !HAVE__BUILTIN_POPCOUNT */ + int result = 0; + + while (word != 0) + { + result += pg_number_of_ones[word & 255]; + word >>= 8; + } + + return result; +#endif /* HAVE__BUILTIN_POPCOUNT */ +} + +/* + * pg_popcount64_slow + * Return the number of 1 bits set in word + */ +static int +pg_popcount64_slow(uint64 word) +{ +#ifdef HAVE__BUILTIN_POPCOUNT +#if defined(HAVE_LONG_INT_64) + return __builtin_popcountl(word); +#elif defined(HAVE_LONG_LONG_INT_64) + return __builtin_popcountll(word); +#else +#error must have a working 64-bit integer datatype +#endif +#else /* !HAVE__BUILTIN_POPCOUNT */ + int result = 0; + + while (word != 0) + { + result += pg_number_of_ones[word & 255]; + word >>= 8; + } + + return result; +#endif /* HAVE__BUILTIN_POPCOUNT */ +} + + +/* + * pg_popcount + * Returns the number of 1-bits in buf + */ +#if SIZEOF_VOID_P >= 8 +#else +#endif diff --git a/parser/src_port_pgsleep.c b/parser/src_port_pgsleep.c index 71a1e6d3..4bf1d583 100644 --- a/parser/src_port_pgsleep.c +++ b/parser/src_port_pgsleep.c @@ -10,7 +10,7 @@ * Portable delay handling. * * - * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * * src/port/pgsleep.c * diff --git a/parser/src_port_pgstrcasecmp.c b/parser/src_port_pgstrcasecmp.c new file mode 100644 index 00000000..a0372de9 --- /dev/null +++ b/parser/src_port_pgstrcasecmp.c @@ -0,0 +1,83 @@ +/*-------------------------------------------------------------------- + * Symbols referenced in this file: + * - pg_toupper + *-------------------------------------------------------------------- + */ + +/*------------------------------------------------------------------------- + * + * pgstrcasecmp.c + * Portable SQL-like case-independent comparisons and conversions. + * + * SQL99 specifies Unicode-aware case normalization, which we don't yet + * have the infrastructure for. Instead we use tolower() to provide a + * locale-aware translation. However, there are some locales where this + * is not right either (eg, Turkish may do strange things with 'i' and + * 'I'). Our current compromise is to use tolower() for characters with + * the high bit set, and use an ASCII-only downcasing for 7-bit + * characters. + * + * NB: this code should match downcase_truncate_identifier() in scansup.c. + * + * We also provide strict ASCII-only case conversion functions, which can + * be used to implement C/POSIX case folding semantics no matter what the + * C library thinks the locale is. + * + * + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group + * + * src/port/pgstrcasecmp.c + * + *------------------------------------------------------------------------- + */ +#include "c.h" + +#include + + +/* + * Case-independent comparison of two null-terminated strings. + */ + + +/* + * Case-independent comparison of two not-necessarily-null-terminated strings. + * At most n bytes will be examined from each string. + */ + + +/* + * Fold a character to upper case. + * + * Unlike some versions of toupper(), this is safe to apply to characters + * that aren't lower case letters. Note however that the whole thing is + * a bit bogus for multibyte character sets. + */ +unsigned char +pg_toupper(unsigned char ch) +{ + if (ch >= 'a' && ch <= 'z') + ch += 'A' - 'a'; + else if (IS_HIGHBIT_SET(ch) && islower(ch)) + ch = toupper(ch); + return ch; +} + +/* + * Fold a character to lower case. + * + * Unlike some versions of tolower(), this is safe to apply to characters + * that aren't upper case letters. Note however that the whole thing is + * a bit bogus for multibyte character sets. + */ + + +/* + * Fold a character to upper case, following C/POSIX locale rules. + */ + + +/* + * Fold a character to lower case, following C/POSIX locale rules. + */ + diff --git a/parser/src_port_qsort.c b/parser/src_port_qsort.c index c3e147de..5f75d065 100644 --- a/parser/src_port_qsort.c +++ b/parser/src_port_qsort.c @@ -57,7 +57,7 @@ static char *med3(char *a, char *b, char *c, - int (*cmp) (const void *, const void *)); + int (*cmp) (const void *, const void *)); static void swapfunc(char *, char *, size_t, int); /* diff --git a/parser/src_port_random.c b/parser/src_port_random.c index 672e27ed..020c22f6 100644 --- a/parser/src_port_random.c +++ b/parser/src_port_random.c @@ -9,7 +9,7 @@ * random.c * random() wrapper * - * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * @@ -25,7 +25,7 @@ long -random() +random(void) { return pg_lrand48(); } diff --git a/parser/src_port_snprintf.c b/parser/src_port_snprintf.c new file mode 100644 index 00000000..1b3f1710 --- /dev/null +++ b/parser/src_port_snprintf.c @@ -0,0 +1,1449 @@ +/*-------------------------------------------------------------------- + * Symbols referenced in this file: + * - pg_vfprintf + * - dopr + * - pg_snprintf + * - pg_vsnprintf + * - strchrnul + * - dostr + * - find_arguments + * - fmtint + * - adjust_sign + * - compute_padlen + * - leading_pad + * - dopr_outchmulti + * - trailing_pad + * - fmtchar + * - fmtstr + * - fmtptr + * - fmtfloat + * - dopr_outch + * - flushbuffer + * - pg_fprintf + * - pg_sprintf + * - pg_vsprintf + * - pg_printf + *-------------------------------------------------------------------- + */ + +/* + * Copyright (c) 1983, 1995, 1996 Eric P. Allman + * Copyright (c) 1988, 1993 + * The Regents of the University of California. All rights reserved. + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. Neither the name of the University nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * src/port/snprintf.c + */ + +#include "c.h" + +#include + +/* + * We used to use the platform's NL_ARGMAX here, but that's a bad idea, + * first because the point of this module is to remove platform dependencies + * not perpetuate them, and second because some platforms use ridiculously + * large values, leading to excessive stack consumption in dopr(). + */ +#define PG_NL_ARGMAX 31 + + +/* + * SNPRINTF, VSNPRINTF and friends + * + * These versions have been grabbed off the net. They have been + * cleaned up to compile properly and support for most of the C99 + * specification has been added. Remaining unimplemented features are: + * + * 1. No locale support: the radix character is always '.' and the ' + * (single quote) format flag is ignored. + * + * 2. No support for the "%n" format specification. + * + * 3. No support for wide characters ("lc" and "ls" formats). + * + * 4. No support for "long double" ("Lf" and related formats). + * + * 5. Space and '#' flags are not implemented. + * + * In addition, we support some extensions over C99: + * + * 1. Argument order control through "%n$" and "*n$", as required by POSIX. + * + * 2. "%m" expands to the value of strerror(errno), where errno is the + * value that variable had at the start of the call. This is a glibc + * extension, but a very useful one. + * + * + * Historically the result values of sprintf/snprintf varied across platforms. + * This implementation now follows the C99 standard: + * + * 1. -1 is returned if an error is detected in the format string, or if + * a write to the target stream fails (as reported by fwrite). Note that + * overrunning snprintf's target buffer is *not* an error. + * + * 2. For successful writes to streams, the actual number of bytes written + * to the stream is returned. + * + * 3. For successful sprintf/snprintf, the number of bytes that would have + * been written to an infinite-size buffer (excluding the trailing '\0') + * is returned. snprintf will truncate its output to fit in the buffer + * (ensuring a trailing '\0' unless count == 0), but this is not reflected + * in the function result. + * + * snprintf buffer overrun can be detected by checking for function result + * greater than or equal to the supplied count. + */ + +/************************************************************** + * Original: + * Patrick Powell Tue Apr 11 09:48:21 PDT 1995 + * A bombproof version of doprnt (dopr) included. + * Sigh. This sort of thing is always nasty do deal with. Note that + * the version here does not include floating point. (now it does ... tgl) + **************************************************************/ + +/* Prevent recursion */ +#undef vsnprintf +#undef snprintf +#undef vsprintf +#undef sprintf +#undef vfprintf +#undef fprintf +#undef vprintf +#undef printf + +/* + * Info about where the formatted output is going. + * + * dopr and subroutines will not write at/past bufend, but snprintf + * reserves one byte, ensuring it may place the trailing '\0' there. + * + * In snprintf, we use nchars to count the number of bytes dropped on the + * floor due to buffer overrun. The correct result of snprintf is thus + * (bufptr - bufstart) + nchars. (This isn't as inconsistent as it might + * seem: nchars is the number of emitted bytes that are not in the buffer now, + * either because we sent them to the stream or because we couldn't fit them + * into the buffer to begin with.) + */ +typedef struct +{ + char *bufptr; /* next buffer output position */ + char *bufstart; /* first buffer element */ + char *bufend; /* last+1 buffer element, or NULL */ + /* bufend == NULL is for sprintf, where we assume buf is big enough */ + FILE *stream; /* eventual output destination, or NULL */ + int nchars; /* # chars sent to stream, or dropped */ + bool failed; /* call is a failure; errno is set */ +} PrintfTarget; + +/* + * Info about the type and value of a formatting parameter. Note that we + * don't currently support "long double", "wint_t", or "wchar_t *" data, + * nor the '%n' formatting code; else we'd need more types. Also, at this + * level we need not worry about signed vs unsigned values. + */ +typedef enum +{ + ATYPE_NONE = 0, + ATYPE_INT, + ATYPE_LONG, + ATYPE_LONGLONG, + ATYPE_DOUBLE, + ATYPE_CHARPTR +} PrintfArgType; + +typedef union +{ + int i; + long l; + long long ll; + double d; + char *cptr; +} PrintfArgValue; + + +static void flushbuffer(PrintfTarget *target); +static void dopr(PrintfTarget *target, const char *format, va_list args); + + +/* + * Externally visible entry points. + * + * All of these are just wrappers around dopr(). Note it's essential that + * they not change the value of "errno" before reaching dopr(). + */ + +int +pg_vsnprintf(char *str, size_t count, const char *fmt, va_list args) +{ + PrintfTarget target; + char onebyte[1]; + + /* + * C99 allows the case str == NULL when count == 0. Rather than + * special-casing this situation further down, we substitute a one-byte + * local buffer. Callers cannot tell, since the function result doesn't + * depend on count. + */ + if (count == 0) + { + str = onebyte; + count = 1; + } + target.bufstart = target.bufptr = str; + target.bufend = str + count - 1; + target.stream = NULL; + target.nchars = 0; + target.failed = false; + dopr(&target, fmt, args); + *(target.bufptr) = '\0'; + return target.failed ? -1 : (target.bufptr - target.bufstart + + target.nchars); +} + +int +pg_snprintf(char *str, size_t count, const char *fmt,...) +{ + int len; + va_list args; + + va_start(args, fmt); + len = pg_vsnprintf(str, count, fmt, args); + va_end(args); + return len; +} + +int +pg_vsprintf(char *str, const char *fmt, va_list args) +{ + PrintfTarget target; + + target.bufstart = target.bufptr = str; + target.bufend = NULL; + target.stream = NULL; + target.nchars = 0; /* not really used in this case */ + target.failed = false; + dopr(&target, fmt, args); + *(target.bufptr) = '\0'; + return target.failed ? -1 : (target.bufptr - target.bufstart + + target.nchars); +} + +int +pg_sprintf(char *str, const char *fmt,...) +{ + int len; + va_list args; + + va_start(args, fmt); + len = pg_vsprintf(str, fmt, args); + va_end(args); + return len; +} + +int +pg_vfprintf(FILE *stream, const char *fmt, va_list args) +{ + PrintfTarget target; + char buffer[1024]; /* size is arbitrary */ + + if (stream == NULL) + { + errno = EINVAL; + return -1; + } + target.bufstart = target.bufptr = buffer; + target.bufend = buffer + sizeof(buffer); /* use the whole buffer */ + target.stream = stream; + target.nchars = 0; + target.failed = false; + dopr(&target, fmt, args); + /* dump any remaining buffer contents */ + flushbuffer(&target); + return target.failed ? -1 : target.nchars; +} + +int +pg_fprintf(FILE *stream, const char *fmt,...) +{ + int len; + va_list args; + + va_start(args, fmt); + len = pg_vfprintf(stream, fmt, args); + va_end(args); + return len; +} + + + +int +pg_printf(const char *fmt,...) +{ + int len; + va_list args; + + va_start(args, fmt); + len = pg_vfprintf(stdout, fmt, args); + va_end(args); + return len; +} + +/* + * Attempt to write the entire buffer to target->stream; discard the entire + * buffer in any case. Call this only when target->stream is defined. + */ +static void +flushbuffer(PrintfTarget *target) +{ + size_t nc = target->bufptr - target->bufstart; + + /* + * Don't write anything if we already failed; this is to ensure we + * preserve the original failure's errno. + */ + if (!target->failed && nc > 0) + { + size_t written; + + written = fwrite(target->bufstart, 1, nc, target->stream); + target->nchars += written; + if (written != nc) + target->failed = true; + } + target->bufptr = target->bufstart; +} + + +static bool find_arguments(const char *format, va_list args, + PrintfArgValue *argvalues); +static void fmtstr(const char *value, int leftjust, int minlen, int maxwidth, + int pointflag, PrintfTarget *target); +static void fmtptr(void *value, PrintfTarget *target); +static void fmtint(long long value, char type, int forcesign, + int leftjust, int minlen, int zpad, int precision, int pointflag, + PrintfTarget *target); +static void fmtchar(int value, int leftjust, int minlen, PrintfTarget *target); +static void fmtfloat(double value, char type, int forcesign, + int leftjust, int minlen, int zpad, int precision, int pointflag, + PrintfTarget *target); +static void dostr(const char *str, int slen, PrintfTarget *target); +static void dopr_outch(int c, PrintfTarget *target); +static void dopr_outchmulti(int c, int slen, PrintfTarget *target); +static int adjust_sign(int is_negative, int forcesign, int *signvalue); +static int compute_padlen(int minlen, int vallen, int leftjust); +static void leading_pad(int zpad, int signvalue, int *padlen, + PrintfTarget *target); +static void trailing_pad(int padlen, PrintfTarget *target); + +/* + * If strchrnul exists (it's a glibc-ism), it's a good bit faster than the + * equivalent manual loop. If it doesn't exist, provide a replacement. + * + * Note: glibc declares this as returning "char *", but that would require + * casting away const internally, so we don't follow that detail. + */ +#ifndef HAVE_STRCHRNUL + +static inline const char * +strchrnul(const char *s, int c) +{ + while (*s != '\0' && *s != c) + s++; + return s; +} + +#else + +/* + * glibc's declares strchrnul only if _GNU_SOURCE is defined. + * While we typically use that on glibc platforms, configure will set + * HAVE_STRCHRNUL whether it's used or not. Fill in the missing declaration + * so that this file will compile cleanly with or without _GNU_SOURCE. + */ +#ifndef _GNU_SOURCE +extern char *strchrnul(const char *s, int c); +#endif + +#endif /* HAVE_STRCHRNUL */ + + +/* + * dopr(): the guts of *printf for all cases. + */ +static void +dopr(PrintfTarget *target, const char *format, va_list args) +{ + int save_errno = errno; + const char *first_pct = NULL; + int ch; + bool have_dollar; + bool have_star; + bool afterstar; + int accum; + int longlongflag; + int longflag; + int pointflag; + int leftjust; + int fieldwidth; + int precision; + int zpad; + int forcesign; + int fmtpos; + int cvalue; + long long numvalue; + double fvalue; + char *strvalue; + PrintfArgValue argvalues[PG_NL_ARGMAX + 1]; + + /* + * Initially, we suppose the format string does not use %n$. The first + * time we come to a conversion spec that has that, we'll call + * find_arguments() to check for consistent use of %n$ and fill the + * argvalues array with the argument values in the correct order. + */ + have_dollar = false; + + while (*format != '\0') + { + /* Locate next conversion specifier */ + if (*format != '%') + { + /* Scan to next '%' or end of string */ + const char *next_pct = strchrnul(format + 1, '%'); + + /* Dump literal data we just scanned over */ + dostr(format, next_pct - format, target); + if (target->failed) + break; + + if (*next_pct == '\0') + break; + format = next_pct; + } + + /* + * Remember start of first conversion spec; if we find %n$, then it's + * sufficient for find_arguments() to start here, without rescanning + * earlier literal text. + */ + if (first_pct == NULL) + first_pct = format; + + /* Process conversion spec starting at *format */ + format++; + + /* Fast path for conversion spec that is exactly %s */ + if (*format == 's') + { + format++; + strvalue = va_arg(args, char *); + Assert(strvalue != NULL); + dostr(strvalue, strlen(strvalue), target); + if (target->failed) + break; + continue; + } + + fieldwidth = precision = zpad = leftjust = forcesign = 0; + longflag = longlongflag = pointflag = 0; + fmtpos = accum = 0; + have_star = afterstar = false; +nextch2: + ch = *format++; + switch (ch) + { + case '-': + leftjust = 1; + goto nextch2; + case '+': + forcesign = 1; + goto nextch2; + case '0': + /* set zero padding if no nonzero digits yet */ + if (accum == 0 && !pointflag) + zpad = '0'; + /* FALL THRU */ + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': + accum = accum * 10 + (ch - '0'); + goto nextch2; + case '.': + if (have_star) + have_star = false; + else + fieldwidth = accum; + pointflag = 1; + accum = 0; + goto nextch2; + case '*': + if (have_dollar) + { + /* + * We'll process value after reading n$. Note it's OK to + * assume have_dollar is set correctly, because in a valid + * format string the initial % must have had n$ if * does. + */ + afterstar = true; + } + else + { + /* fetch and process value now */ + int starval = va_arg(args, int); + + if (pointflag) + { + precision = starval; + if (precision < 0) + { + precision = 0; + pointflag = 0; + } + } + else + { + fieldwidth = starval; + if (fieldwidth < 0) + { + leftjust = 1; + fieldwidth = -fieldwidth; + } + } + } + have_star = true; + accum = 0; + goto nextch2; + case '$': + /* First dollar sign? */ + if (!have_dollar) + { + /* Yup, so examine all conversion specs in format */ + if (!find_arguments(first_pct, args, argvalues)) + goto bad_format; + have_dollar = true; + } + if (afterstar) + { + /* fetch and process star value */ + int starval = argvalues[accum].i; + + if (pointflag) + { + precision = starval; + if (precision < 0) + { + precision = 0; + pointflag = 0; + } + } + else + { + fieldwidth = starval; + if (fieldwidth < 0) + { + leftjust = 1; + fieldwidth = -fieldwidth; + } + } + afterstar = false; + } + else + fmtpos = accum; + accum = 0; + goto nextch2; + case 'l': + if (longflag) + longlongflag = 1; + else + longflag = 1; + goto nextch2; + case 'z': +#if SIZEOF_SIZE_T == 8 +#ifdef HAVE_LONG_INT_64 + longflag = 1; +#elif defined(HAVE_LONG_LONG_INT_64) + longlongflag = 1; +#else +#error "Don't know how to print 64bit integers" +#endif +#else + /* assume size_t is same size as int */ +#endif + goto nextch2; + case 'h': + case '\'': + /* ignore these */ + goto nextch2; + case 'd': + case 'i': + if (!have_star) + { + if (pointflag) + precision = accum; + else + fieldwidth = accum; + } + if (have_dollar) + { + if (longlongflag) + numvalue = argvalues[fmtpos].ll; + else if (longflag) + numvalue = argvalues[fmtpos].l; + else + numvalue = argvalues[fmtpos].i; + } + else + { + if (longlongflag) + numvalue = va_arg(args, long long); + else if (longflag) + numvalue = va_arg(args, long); + else + numvalue = va_arg(args, int); + } + fmtint(numvalue, ch, forcesign, leftjust, fieldwidth, zpad, + precision, pointflag, target); + break; + case 'o': + case 'u': + case 'x': + case 'X': + if (!have_star) + { + if (pointflag) + precision = accum; + else + fieldwidth = accum; + } + if (have_dollar) + { + if (longlongflag) + numvalue = (unsigned long long) argvalues[fmtpos].ll; + else if (longflag) + numvalue = (unsigned long) argvalues[fmtpos].l; + else + numvalue = (unsigned int) argvalues[fmtpos].i; + } + else + { + if (longlongflag) + numvalue = (unsigned long long) va_arg(args, long long); + else if (longflag) + numvalue = (unsigned long) va_arg(args, long); + else + numvalue = (unsigned int) va_arg(args, int); + } + fmtint(numvalue, ch, forcesign, leftjust, fieldwidth, zpad, + precision, pointflag, target); + break; + case 'c': + if (!have_star) + { + if (pointflag) + precision = accum; + else + fieldwidth = accum; + } + if (have_dollar) + cvalue = (unsigned char) argvalues[fmtpos].i; + else + cvalue = (unsigned char) va_arg(args, int); + fmtchar(cvalue, leftjust, fieldwidth, target); + break; + case 's': + if (!have_star) + { + if (pointflag) + precision = accum; + else + fieldwidth = accum; + } + if (have_dollar) + strvalue = argvalues[fmtpos].cptr; + else + strvalue = va_arg(args, char *); + /* Whine if someone tries to print a NULL string */ + Assert(strvalue != NULL); + fmtstr(strvalue, leftjust, fieldwidth, precision, pointflag, + target); + break; + case 'p': + /* fieldwidth/leftjust are ignored ... */ + if (have_dollar) + strvalue = argvalues[fmtpos].cptr; + else + strvalue = va_arg(args, char *); + fmtptr((void *) strvalue, target); + break; + case 'e': + case 'E': + case 'f': + case 'g': + case 'G': + if (!have_star) + { + if (pointflag) + precision = accum; + else + fieldwidth = accum; + } + if (have_dollar) + fvalue = argvalues[fmtpos].d; + else + fvalue = va_arg(args, double); + fmtfloat(fvalue, ch, forcesign, leftjust, + fieldwidth, zpad, + precision, pointflag, + target); + break; + case 'm': + { + char errbuf[PG_STRERROR_R_BUFLEN]; + const char *errm = strerror_r(save_errno, + errbuf, sizeof(errbuf)); + + dostr(errm, strlen(errm), target); + } + break; + case '%': + dopr_outch('%', target); + break; + default: + + /* + * Anything else --- in particular, '\0' indicating end of + * format string --- is bogus. + */ + goto bad_format; + } + + /* Check for failure after each conversion spec */ + if (target->failed) + break; + } + + return; + +bad_format: + errno = EINVAL; + target->failed = true; +} + +/* + * find_arguments(): sort out the arguments for a format spec with %n$ + * + * If format is valid, return true and fill argvalues[i] with the value + * for the conversion spec that has %i$ or *i$. Else return false. + */ +static bool +find_arguments(const char *format, va_list args, + PrintfArgValue *argvalues) +{ + int ch; + bool afterstar; + int accum; + int longlongflag; + int longflag; + int fmtpos; + int i; + int last_dollar; + PrintfArgType argtypes[PG_NL_ARGMAX + 1]; + + /* Initialize to "no dollar arguments known" */ + last_dollar = 0; + MemSet(argtypes, 0, sizeof(argtypes)); + + /* + * This loop must accept the same format strings as the one in dopr(). + * However, we don't need to analyze them to the same level of detail. + * + * Since we're only called if there's a dollar-type spec somewhere, we can + * fail immediately if we find a non-dollar spec. Per the C99 standard, + * all argument references in the format string must be one or the other. + */ + while (*format != '\0') + { + /* Locate next conversion specifier */ + if (*format != '%') + { + /* Unlike dopr, we can just quit if there's no more specifiers */ + format = strchr(format + 1, '%'); + if (format == NULL) + break; + } + + /* Process conversion spec starting at *format */ + format++; + longflag = longlongflag = 0; + fmtpos = accum = 0; + afterstar = false; +nextch1: + ch = *format++; + switch (ch) + { + case '-': + case '+': + goto nextch1; + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': + accum = accum * 10 + (ch - '0'); + goto nextch1; + case '.': + accum = 0; + goto nextch1; + case '*': + if (afterstar) + return false; /* previous star missing dollar */ + afterstar = true; + accum = 0; + goto nextch1; + case '$': + if (accum <= 0 || accum > PG_NL_ARGMAX) + return false; + if (afterstar) + { + if (argtypes[accum] && + argtypes[accum] != ATYPE_INT) + return false; + argtypes[accum] = ATYPE_INT; + last_dollar = Max(last_dollar, accum); + afterstar = false; + } + else + fmtpos = accum; + accum = 0; + goto nextch1; + case 'l': + if (longflag) + longlongflag = 1; + else + longflag = 1; + goto nextch1; + case 'z': +#if SIZEOF_SIZE_T == 8 +#ifdef HAVE_LONG_INT_64 + longflag = 1; +#elif defined(HAVE_LONG_LONG_INT_64) + longlongflag = 1; +#else +#error "Don't know how to print 64bit integers" +#endif +#else + /* assume size_t is same size as int */ +#endif + goto nextch1; + case 'h': + case '\'': + /* ignore these */ + goto nextch1; + case 'd': + case 'i': + case 'o': + case 'u': + case 'x': + case 'X': + if (fmtpos) + { + PrintfArgType atype; + + if (longlongflag) + atype = ATYPE_LONGLONG; + else if (longflag) + atype = ATYPE_LONG; + else + atype = ATYPE_INT; + if (argtypes[fmtpos] && + argtypes[fmtpos] != atype) + return false; + argtypes[fmtpos] = atype; + last_dollar = Max(last_dollar, fmtpos); + } + else + return false; /* non-dollar conversion spec */ + break; + case 'c': + if (fmtpos) + { + if (argtypes[fmtpos] && + argtypes[fmtpos] != ATYPE_INT) + return false; + argtypes[fmtpos] = ATYPE_INT; + last_dollar = Max(last_dollar, fmtpos); + } + else + return false; /* non-dollar conversion spec */ + break; + case 's': + case 'p': + if (fmtpos) + { + if (argtypes[fmtpos] && + argtypes[fmtpos] != ATYPE_CHARPTR) + return false; + argtypes[fmtpos] = ATYPE_CHARPTR; + last_dollar = Max(last_dollar, fmtpos); + } + else + return false; /* non-dollar conversion spec */ + break; + case 'e': + case 'E': + case 'f': + case 'g': + case 'G': + if (fmtpos) + { + if (argtypes[fmtpos] && + argtypes[fmtpos] != ATYPE_DOUBLE) + return false; + argtypes[fmtpos] = ATYPE_DOUBLE; + last_dollar = Max(last_dollar, fmtpos); + } + else + return false; /* non-dollar conversion spec */ + break; + case 'm': + case '%': + break; + default: + return false; /* bogus format string */ + } + + /* + * If we finish the spec with afterstar still set, there's a + * non-dollar star in there. + */ + if (afterstar) + return false; /* non-dollar conversion spec */ + } + + /* + * Format appears valid so far, so collect the arguments in physical + * order. (Since we rejected any non-dollar specs that would have + * collected arguments, we know that dopr() hasn't collected any yet.) + */ + for (i = 1; i <= last_dollar; i++) + { + switch (argtypes[i]) + { + case ATYPE_NONE: + return false; + case ATYPE_INT: + argvalues[i].i = va_arg(args, int); + break; + case ATYPE_LONG: + argvalues[i].l = va_arg(args, long); + break; + case ATYPE_LONGLONG: + argvalues[i].ll = va_arg(args, long long); + break; + case ATYPE_DOUBLE: + argvalues[i].d = va_arg(args, double); + break; + case ATYPE_CHARPTR: + argvalues[i].cptr = va_arg(args, char *); + break; + } + } + + return true; +} + +static void +fmtstr(const char *value, int leftjust, int minlen, int maxwidth, + int pointflag, PrintfTarget *target) +{ + int padlen, + vallen; /* amount to pad */ + + /* + * If a maxwidth (precision) is specified, we must not fetch more bytes + * than that. + */ + if (pointflag) + vallen = strnlen(value, maxwidth); + else + vallen = strlen(value); + + padlen = compute_padlen(minlen, vallen, leftjust); + + if (padlen > 0) + { + dopr_outchmulti(' ', padlen, target); + padlen = 0; + } + + dostr(value, vallen, target); + + trailing_pad(padlen, target); +} + +static void +fmtptr(void *value, PrintfTarget *target) +{ + int vallen; + char convert[64]; + + /* we rely on regular C library's sprintf to do the basic conversion */ + vallen = sprintf(convert, "%p", value); + if (vallen < 0) + target->failed = true; + else + dostr(convert, vallen, target); +} + +static void +fmtint(long long value, char type, int forcesign, int leftjust, + int minlen, int zpad, int precision, int pointflag, + PrintfTarget *target) +{ + unsigned long long base; + unsigned long long uvalue; + int dosign; + const char *cvt = "0123456789abcdef"; + int signvalue = 0; + char convert[64]; + int vallen = 0; + int padlen; /* amount to pad */ + int zeropad; /* extra leading zeroes */ + + switch (type) + { + case 'd': + case 'i': + base = 10; + dosign = 1; + break; + case 'o': + base = 8; + dosign = 0; + break; + case 'u': + base = 10; + dosign = 0; + break; + case 'x': + base = 16; + dosign = 0; + break; + case 'X': + cvt = "0123456789ABCDEF"; + base = 16; + dosign = 0; + break; + default: + return; /* keep compiler quiet */ + } + + /* disable MSVC warning about applying unary minus to an unsigned value */ +#ifdef _MSC_VER +#pragma warning(push) +#pragma warning(disable: 4146) +#endif + /* Handle +/- */ + if (dosign && adjust_sign((value < 0), forcesign, &signvalue)) + uvalue = -(unsigned long long) value; + else + uvalue = (unsigned long long) value; +#ifdef _MSC_VER +#pragma warning(pop) +#endif + + /* + * SUS: the result of converting 0 with an explicit precision of 0 is no + * characters + */ + if (value == 0 && pointflag && precision == 0) + vallen = 0; + else + { + /* make integer string */ + do + { + convert[sizeof(convert) - (++vallen)] = cvt[uvalue % base]; + uvalue = uvalue / base; + } while (uvalue); + } + + zeropad = Max(0, precision - vallen); + + padlen = compute_padlen(minlen, vallen + zeropad, leftjust); + + leading_pad(zpad, signvalue, &padlen, target); + + if (zeropad > 0) + dopr_outchmulti('0', zeropad, target); + + dostr(convert + sizeof(convert) - vallen, vallen, target); + + trailing_pad(padlen, target); +} + +static void +fmtchar(int value, int leftjust, int minlen, PrintfTarget *target) +{ + int padlen; /* amount to pad */ + + padlen = compute_padlen(minlen, 1, leftjust); + + if (padlen > 0) + { + dopr_outchmulti(' ', padlen, target); + padlen = 0; + } + + dopr_outch(value, target); + + trailing_pad(padlen, target); +} + +static void +fmtfloat(double value, char type, int forcesign, int leftjust, + int minlen, int zpad, int precision, int pointflag, + PrintfTarget *target) +{ + int signvalue = 0; + int prec; + int vallen; + char fmt[8]; + char convert[1024]; + int zeropadlen = 0; /* amount to pad with zeroes */ + int padlen; /* amount to pad with spaces */ + + /* + * We rely on the regular C library's sprintf to do the basic conversion, + * then handle padding considerations here. + * + * The dynamic range of "double" is about 1E+-308 for IEEE math, and not + * too wildly more than that with other hardware. In "f" format, sprintf + * could therefore generate at most 308 characters to the left of the + * decimal point; while we need to allow the precision to get as high as + * 308+17 to ensure that we don't truncate significant digits from very + * small values. To handle both these extremes, we use a buffer of 1024 + * bytes and limit requested precision to 350 digits; this should prevent + * buffer overrun even with non-IEEE math. If the original precision + * request was more than 350, separately pad with zeroes. + * + * We handle infinities and NaNs specially to ensure platform-independent + * output. + */ + if (precision < 0) /* cover possible overflow of "accum" */ + precision = 0; + prec = Min(precision, 350); + + if (isnan(value)) + { + strcpy(convert, "NaN"); + vallen = 3; + /* no zero padding, regardless of precision spec */ + } + else + { + /* + * Handle sign (NaNs have no sign, so we don't do this in the case + * above). "value < 0.0" will not be true for IEEE minus zero, so we + * detect that by looking for the case where value equals 0.0 + * according to == but not according to memcmp. + */ + static const double dzero = 0.0; + + if (adjust_sign((value < 0.0 || + (value == 0.0 && + memcmp(&value, &dzero, sizeof(double)) != 0)), + forcesign, &signvalue)) + value = -value; + + if (isinf(value)) + { + strcpy(convert, "Infinity"); + vallen = 8; + /* no zero padding, regardless of precision spec */ + } + else if (pointflag) + { + zeropadlen = precision - prec; + fmt[0] = '%'; + fmt[1] = '.'; + fmt[2] = '*'; + fmt[3] = type; + fmt[4] = '\0'; + vallen = sprintf(convert, fmt, prec, value); + } + else + { + fmt[0] = '%'; + fmt[1] = type; + fmt[2] = '\0'; + vallen = sprintf(convert, fmt, value); + } + if (vallen < 0) + goto fail; + + /* + * Windows, alone among our supported platforms, likes to emit + * three-digit exponent fields even when two digits would do. Hack + * such results to look like the way everyone else does it. + */ +#ifdef WIN32 + if (vallen >= 6 && + convert[vallen - 5] == 'e' && + convert[vallen - 3] == '0') + { + convert[vallen - 3] = convert[vallen - 2]; + convert[vallen - 2] = convert[vallen - 1]; + vallen--; + } +#endif + } + + padlen = compute_padlen(minlen, vallen + zeropadlen, leftjust); + + leading_pad(zpad, signvalue, &padlen, target); + + if (zeropadlen > 0) + { + /* If 'e' or 'E' format, inject zeroes before the exponent */ + char *epos = strrchr(convert, 'e'); + + if (!epos) + epos = strrchr(convert, 'E'); + if (epos) + { + /* pad before exponent */ + dostr(convert, epos - convert, target); + dopr_outchmulti('0', zeropadlen, target); + dostr(epos, vallen - (epos - convert), target); + } + else + { + /* no exponent, pad after the digits */ + dostr(convert, vallen, target); + dopr_outchmulti('0', zeropadlen, target); + } + } + else + { + /* no zero padding, just emit the number as-is */ + dostr(convert, vallen, target); + } + + trailing_pad(padlen, target); + return; + +fail: + target->failed = true; +} + +/* + * Nonstandard entry point to print a double value efficiently. + * + * This is approximately equivalent to strfromd(), but has an API more + * adapted to what float8out() wants. The behavior is like snprintf() + * with a format of "%.ng", where n is the specified precision. + * However, the target buffer must be nonempty (i.e. count > 0), and + * the precision is silently bounded to a sane range. + */ +#ifdef WIN32 +#endif + + +static void +dostr(const char *str, int slen, PrintfTarget *target) +{ + /* fast path for common case of slen == 1 */ + if (slen == 1) + { + dopr_outch(*str, target); + return; + } + + while (slen > 0) + { + int avail; + + if (target->bufend != NULL) + avail = target->bufend - target->bufptr; + else + avail = slen; + if (avail <= 0) + { + /* buffer full, can we dump to stream? */ + if (target->stream == NULL) + { + target->nchars += slen; /* no, lose the data */ + return; + } + flushbuffer(target); + continue; + } + avail = Min(avail, slen); + memmove(target->bufptr, str, avail); + target->bufptr += avail; + str += avail; + slen -= avail; + } +} + +static void +dopr_outch(int c, PrintfTarget *target) +{ + if (target->bufend != NULL && target->bufptr >= target->bufend) + { + /* buffer full, can we dump to stream? */ + if (target->stream == NULL) + { + target->nchars++; /* no, lose the data */ + return; + } + flushbuffer(target); + } + *(target->bufptr++) = c; +} + +static void +dopr_outchmulti(int c, int slen, PrintfTarget *target) +{ + /* fast path for common case of slen == 1 */ + if (slen == 1) + { + dopr_outch(c, target); + return; + } + + while (slen > 0) + { + int avail; + + if (target->bufend != NULL) + avail = target->bufend - target->bufptr; + else + avail = slen; + if (avail <= 0) + { + /* buffer full, can we dump to stream? */ + if (target->stream == NULL) + { + target->nchars += slen; /* no, lose the data */ + return; + } + flushbuffer(target); + continue; + } + avail = Min(avail, slen); + memset(target->bufptr, c, avail); + target->bufptr += avail; + slen -= avail; + } +} + + +static int +adjust_sign(int is_negative, int forcesign, int *signvalue) +{ + if (is_negative) + { + *signvalue = '-'; + return true; + } + else if (forcesign) + *signvalue = '+'; + return false; +} + + +static int +compute_padlen(int minlen, int vallen, int leftjust) +{ + int padlen; + + padlen = minlen - vallen; + if (padlen < 0) + padlen = 0; + if (leftjust) + padlen = -padlen; + return padlen; +} + + +static void +leading_pad(int zpad, int signvalue, int *padlen, PrintfTarget *target) +{ + int maxpad; + + if (*padlen > 0 && zpad) + { + if (signvalue) + { + dopr_outch(signvalue, target); + --(*padlen); + signvalue = 0; + } + if (*padlen > 0) + { + dopr_outchmulti(zpad, *padlen, target); + *padlen = 0; + } + } + maxpad = (signvalue != 0); + if (*padlen > maxpad) + { + dopr_outchmulti(' ', *padlen - maxpad, target); + *padlen = maxpad; + } + if (signvalue) + { + dopr_outch(signvalue, target); + if (*padlen > 0) + --(*padlen); + else if (*padlen < 0) + ++(*padlen); + } +} + + +static void +trailing_pad(int padlen, PrintfTarget *target) +{ + if (padlen < 0) + dopr_outchmulti(' ', -padlen, target); +} diff --git a/parser/src_port_strerror.c b/parser/src_port_strerror.c new file mode 100644 index 00000000..61483b5c --- /dev/null +++ b/parser/src_port_strerror.c @@ -0,0 +1,324 @@ +/*-------------------------------------------------------------------- + * Symbols referenced in this file: + * - pg_strerror_r + * - gnuish_strerror_r + * - get_errno_symbol + *-------------------------------------------------------------------- + */ + +/*------------------------------------------------------------------------- + * + * strerror.c + * Replacements for standard strerror() and strerror_r() functions + * + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group + * Portions Copyright (c) 1994, Regents of the University of California + * + * + * IDENTIFICATION + * src/port/strerror.c + * + *------------------------------------------------------------------------- + */ +#include "c.h" + +/* + * Within this file, "strerror" means the platform's function not pg_strerror, + * and likewise for "strerror_r" + */ +#undef strerror +#undef strerror_r + +static char *gnuish_strerror_r(int errnum, char *buf, size_t buflen); +static char *get_errno_symbol(int errnum); +#ifdef WIN32 +static char *win32_socket_strerror(int errnum, char *buf, size_t buflen); +#endif + + +/* + * A slightly cleaned-up version of strerror() + */ + + +/* + * A slightly cleaned-up version of strerror_r() + */ +char * +pg_strerror_r(int errnum, char *buf, size_t buflen) +{ + char *str; + + /* If it's a Windows Winsock error, that needs special handling */ +#ifdef WIN32 + /* Winsock error code range, per WinError.h */ + if (errnum >= 10000 && errnum <= 11999) + return win32_socket_strerror(errnum, buf, buflen); +#endif + + /* Try the platform's strerror_r(), or maybe just strerror() */ + str = gnuish_strerror_r(errnum, buf, buflen); + + /* + * Some strerror()s return an empty string for out-of-range errno. This + * is ANSI C spec compliant, but not exactly useful. Also, we may get + * back strings of question marks if libc cannot transcode the message to + * the codeset specified by LC_CTYPE. If we get nothing useful, first try + * get_errno_symbol(), and if that fails, print the numeric errno. + */ + if (str == NULL || *str == '\0' || *str == '?') + str = get_errno_symbol(errnum); + + if (str == NULL) + { + snprintf(buf, buflen, _("operating system error %d"), errnum); + str = buf; + } + + return str; +} + +/* + * Simple wrapper to emulate GNU strerror_r if what the platform provides is + * POSIX. Also, if platform lacks strerror_r altogether, fall back to plain + * strerror; it might not be very thread-safe, but tough luck. + */ +static char * +gnuish_strerror_r(int errnum, char *buf, size_t buflen) +{ +#ifdef HAVE_STRERROR_R +#ifdef STRERROR_R_INT + /* POSIX API */ + if (strerror_r(errnum, buf, buflen) == 0) + return buf; + return NULL; /* let caller deal with failure */ +#else + /* GNU API */ + return strerror_r(errnum, buf, buflen); +#endif +#else /* !HAVE_STRERROR_R */ + char *sbuf = strerror(errnum); + + if (sbuf == NULL) /* can this still happen anywhere? */ + return NULL; + /* To minimize thread-unsafety hazard, copy into caller's buffer */ + strlcpy(buf, sbuf, buflen); + return buf; +#endif +} + +/* + * Returns a symbol (e.g. "ENOENT") for an errno code. + * Returns NULL if the code is unrecognized. + */ +static char * +get_errno_symbol(int errnum) +{ + switch (errnum) + { + case E2BIG: + return "E2BIG"; + case EACCES: + return "EACCES"; +#ifdef EADDRINUSE + case EADDRINUSE: + return "EADDRINUSE"; +#endif +#ifdef EADDRNOTAVAIL + case EADDRNOTAVAIL: + return "EADDRNOTAVAIL"; +#endif + case EAFNOSUPPORT: + return "EAFNOSUPPORT"; +#ifdef EAGAIN + case EAGAIN: + return "EAGAIN"; +#endif +#ifdef EALREADY + case EALREADY: + return "EALREADY"; +#endif + case EBADF: + return "EBADF"; +#ifdef EBADMSG + case EBADMSG: + return "EBADMSG"; +#endif + case EBUSY: + return "EBUSY"; + case ECHILD: + return "ECHILD"; +#ifdef ECONNABORTED + case ECONNABORTED: + return "ECONNABORTED"; +#endif + case ECONNREFUSED: + return "ECONNREFUSED"; +#ifdef ECONNRESET + case ECONNRESET: + return "ECONNRESET"; +#endif + case EDEADLK: + return "EDEADLK"; + case EDOM: + return "EDOM"; + case EEXIST: + return "EEXIST"; + case EFAULT: + return "EFAULT"; + case EFBIG: + return "EFBIG"; +#ifdef EHOSTUNREACH + case EHOSTUNREACH: + return "EHOSTUNREACH"; +#endif + case EIDRM: + return "EIDRM"; + case EINPROGRESS: + return "EINPROGRESS"; + case EINTR: + return "EINTR"; + case EINVAL: + return "EINVAL"; + case EIO: + return "EIO"; +#ifdef EISCONN + case EISCONN: + return "EISCONN"; +#endif + case EISDIR: + return "EISDIR"; +#ifdef ELOOP + case ELOOP: + return "ELOOP"; +#endif + case EMFILE: + return "EMFILE"; + case EMLINK: + return "EMLINK"; + case EMSGSIZE: + return "EMSGSIZE"; + case ENAMETOOLONG: + return "ENAMETOOLONG"; + case ENFILE: + return "ENFILE"; + case ENOBUFS: + return "ENOBUFS"; + case ENODEV: + return "ENODEV"; + case ENOENT: + return "ENOENT"; + case ENOEXEC: + return "ENOEXEC"; + case ENOMEM: + return "ENOMEM"; + case ENOSPC: + return "ENOSPC"; + case ENOSYS: + return "ENOSYS"; +#ifdef ENOTCONN + case ENOTCONN: + return "ENOTCONN"; +#endif + case ENOTDIR: + return "ENOTDIR"; +#if defined(ENOTEMPTY) && (ENOTEMPTY != EEXIST) /* same code on AIX */ + case ENOTEMPTY: + return "ENOTEMPTY"; +#endif +#ifdef ENOTSOCK + case ENOTSOCK: + return "ENOTSOCK"; +#endif +#ifdef ENOTSUP + case ENOTSUP: + return "ENOTSUP"; +#endif + case ENOTTY: + return "ENOTTY"; + case ENXIO: + return "ENXIO"; +#if defined(EOPNOTSUPP) && (!defined(ENOTSUP) || (EOPNOTSUPP != ENOTSUP)) + case EOPNOTSUPP: + return "EOPNOTSUPP"; +#endif +#ifdef EOVERFLOW + case EOVERFLOW: + return "EOVERFLOW"; +#endif + case EPERM: + return "EPERM"; + case EPIPE: + return "EPIPE"; + case EPROTONOSUPPORT: + return "EPROTONOSUPPORT"; + case ERANGE: + return "ERANGE"; +#ifdef EROFS + case EROFS: + return "EROFS"; +#endif + case ESRCH: + return "ESRCH"; +#ifdef ETIMEDOUT + case ETIMEDOUT: + return "ETIMEDOUT"; +#endif +#ifdef ETXTBSY + case ETXTBSY: + return "ETXTBSY"; +#endif +#if defined(EWOULDBLOCK) && (!defined(EAGAIN) || (EWOULDBLOCK != EAGAIN)) + case EWOULDBLOCK: + return "EWOULDBLOCK"; +#endif + case EXDEV: + return "EXDEV"; + } + + return NULL; +} + + +#ifdef WIN32 + +/* + * Windows' strerror() doesn't know the Winsock codes, so handle them this way + */ +static char * +win32_socket_strerror(int errnum, char *buf, size_t buflen) +{ + static HANDLE handleDLL = INVALID_HANDLE_VALUE; + + if (handleDLL == INVALID_HANDLE_VALUE) + { + handleDLL = LoadLibraryEx("netmsg.dll", NULL, + DONT_RESOLVE_DLL_REFERENCES | LOAD_LIBRARY_AS_DATAFILE); + if (handleDLL == NULL) + { + snprintf(buf, buflen, + "winsock error %d (could not load netmsg.dll to translate: error code %lu)", + errnum, GetLastError()); + return buf; + } + } + + ZeroMemory(buf, buflen); + if (FormatMessage(FORMAT_MESSAGE_IGNORE_INSERTS | + FORMAT_MESSAGE_FROM_SYSTEM | + FORMAT_MESSAGE_FROM_HMODULE, + handleDLL, + errnum, + MAKELANGID(LANG_ENGLISH, SUBLANG_DEFAULT), + buf, + buflen - 1, + NULL) == 0) + { + /* Failed to get id */ + snprintf(buf, buflen, "unrecognized winsock error %d", errnum); + } + + return buf; +} + +#endif /* WIN32 */ diff --git a/parser/src_port_strnlen.c b/parser/src_port_strnlen.c new file mode 100644 index 00000000..44987f81 --- /dev/null +++ b/parser/src_port_strnlen.c @@ -0,0 +1,39 @@ +/*-------------------------------------------------------------------- + * Symbols referenced in this file: + * - strnlen + *-------------------------------------------------------------------- + */ + +/*------------------------------------------------------------------------- + * + * strnlen.c + * Fallback implementation of strnlen(). + * + * + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group + * Portions Copyright (c) 1994, Regents of the University of California + * + * IDENTIFICATION + * src/port/strnlen.c + * + *------------------------------------------------------------------------- + */ + +#include "c.h" + +/* + * Implementation of posix' strnlen for systems where it's not available. + * + * Returns the number of characters before a null-byte in the string pointed + * to by str, unless there's no null-byte before maxlen. In the latter case + * maxlen is returned. + */ +size_t +strnlen(const char *str, size_t maxlen) +{ + const char *p = str; + + while (maxlen-- > 0 && *p) + p++; + return p - str; +} diff --git a/parser/xxhash.c b/parser/xxhash.c new file mode 100644 index 00000000..728fd686 --- /dev/null +++ b/parser/xxhash.c @@ -0,0 +1,43 @@ +/* + * xxHash - Extremely Fast Hash algorithm + * Copyright (C) 2012-2020 Yann Collet + * + * BSD 2-Clause License (https://www.opensource.org/licenses/bsd-license.php) + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following disclaimer + * in the documentation and/or other materials provided with the + * distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * You can contact the author at: + * - xxHash homepage: https://www.xxhash.com + * - xxHash source repository: https://github.com/Cyan4973/xxHash + */ + + +/* + * xxhash.c instantiates functions defined in xxhash.h + */ + +#define XXH_STATIC_LINKING_ONLY /* access advanced declarations */ +#define XXH_IMPLEMENTATION /* access definitions */ + +#include "xxhash.h" \ No newline at end of file diff --git a/parsetree_list.go b/parsetree_list.go deleted file mode 100644 index f7a6672c..00000000 --- a/parsetree_list.go +++ /dev/null @@ -1,48 +0,0 @@ -package pg_query - -import ( - "encoding/hex" - "encoding/json" - "fmt" - - nodes "github.com/lfittl/pg_query_go/nodes" -) - -type ParsetreeList struct { - Statements []nodes.Node -} - -func (input ParsetreeList) MarshalJSON() ([]byte, error) { - type ParsetreeListAlias ParsetreeList - return json.Marshal(input.Statements) -} - -func (output *ParsetreeList) UnmarshalJSON(input []byte) (err error) { - var list []json.RawMessage - err = json.Unmarshal([]byte(input), &list) - if err != nil { - return - } - - for _, nodeJson := range list { - var node nodes.Node - node, err = nodes.UnmarshalNodeJSON(nodeJson) - if err != nil { - return - } - output.Statements = append(output.Statements, node) - } - - return -} - -func (input ParsetreeList) Fingerprint() string { - const fingerprintVersion uint = 2 - - ctx := nodes.NewFingerprintHashContext() - for _, node := range input.Statements { - node.Fingerprint(ctx, nil, "") - } - - return fmt.Sprintf("%02x%s", fingerprintVersion, hex.EncodeToString(ctx.Sum())) -} diff --git a/pg_query.go b/pg_query.go index 3d0dfde0..a7328a82 100644 --- a/pg_query.go +++ b/pg_query.go @@ -1,8 +1,7 @@ package pg_query import ( - "encoding/json" - "runtime/debug" + proto "github.com/golang/protobuf/proto" "github.com/lfittl/pg_query_go/parser" ) @@ -13,23 +12,14 @@ func ParseToJSON(input string) (result string, err error) { } // Parse the given SQL statement into an AST (native Go structs) -func Parse(input string) (tree ParsetreeList, err error) { - jsonTree, err := ParseToJSON(input) +func Parse(input string) (tree *ParseResult, err error) { + protobufTree, err := parser.ParseToProtobuf(input) if err != nil { return } - // JSON unmarshalling can panic in edge cases we don't support yet. This is - // still a *bug that needs to be fixed*, but this way the caller can expect an - // error to be returned always, instead of a panic - defer func() { - if r := recover(); r != nil { - debug.PrintStack() - err = r.(error) - } - }() - - err = json.Unmarshal([]byte(jsonTree), &tree) + tree = &ParseResult{} + err = proto.Unmarshal(protobufTree, tree) return } diff --git a/pg_query.pb.go b/pg_query.pb.go new file mode 100644 index 00000000..683d14e7 --- /dev/null +++ b/pg_query.pb.go @@ -0,0 +1,36075 @@ +// This file is autogenerated by ./scripts/generate_protobuf_and_funcs.rb + +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.23.0 +// protoc v3.15.3 +// source: pg_query.proto + +package pg_query + +import ( + proto "github.com/golang/protobuf/proto" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + reflect "reflect" + sync "sync" +) + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +// This is a compile-time assertion that a sufficiently up-to-date version +// of the legacy proto package is being used. +const _ = proto.ProtoPackageIsVersion4 + +type OverridingKind int32 + +const ( + OverridingKind_OVERRIDING_KIND_UNDEFINED OverridingKind = 0 + OverridingKind_OVERRIDING_NOT_SET OverridingKind = 1 + OverridingKind_OVERRIDING_USER_VALUE OverridingKind = 2 + OverridingKind_OVERRIDING_SYSTEM_VALUE OverridingKind = 3 +) + +// Enum value maps for OverridingKind. +var ( + OverridingKind_name = map[int32]string{ + 0: "OVERRIDING_KIND_UNDEFINED", + 1: "OVERRIDING_NOT_SET", + 2: "OVERRIDING_USER_VALUE", + 3: "OVERRIDING_SYSTEM_VALUE", + } + OverridingKind_value = map[string]int32{ + "OVERRIDING_KIND_UNDEFINED": 0, + "OVERRIDING_NOT_SET": 1, + "OVERRIDING_USER_VALUE": 2, + "OVERRIDING_SYSTEM_VALUE": 3, + } +) + +func (x OverridingKind) Enum() *OverridingKind { + p := new(OverridingKind) + *p = x + return p +} + +func (x OverridingKind) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (OverridingKind) Descriptor() protoreflect.EnumDescriptor { + return file_pg_query_proto_enumTypes[0].Descriptor() +} + +func (OverridingKind) Type() protoreflect.EnumType { + return &file_pg_query_proto_enumTypes[0] +} + +func (x OverridingKind) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use OverridingKind.Descriptor instead. +func (OverridingKind) EnumDescriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{0} +} + +type QuerySource int32 + +const ( + QuerySource_QUERY_SOURCE_UNDEFINED QuerySource = 0 + QuerySource_QSRC_ORIGINAL QuerySource = 1 + QuerySource_QSRC_PARSER QuerySource = 2 + QuerySource_QSRC_INSTEAD_RULE QuerySource = 3 + QuerySource_QSRC_QUAL_INSTEAD_RULE QuerySource = 4 + QuerySource_QSRC_NON_INSTEAD_RULE QuerySource = 5 +) + +// Enum value maps for QuerySource. +var ( + QuerySource_name = map[int32]string{ + 0: "QUERY_SOURCE_UNDEFINED", + 1: "QSRC_ORIGINAL", + 2: "QSRC_PARSER", + 3: "QSRC_INSTEAD_RULE", + 4: "QSRC_QUAL_INSTEAD_RULE", + 5: "QSRC_NON_INSTEAD_RULE", + } + QuerySource_value = map[string]int32{ + "QUERY_SOURCE_UNDEFINED": 0, + "QSRC_ORIGINAL": 1, + "QSRC_PARSER": 2, + "QSRC_INSTEAD_RULE": 3, + "QSRC_QUAL_INSTEAD_RULE": 4, + "QSRC_NON_INSTEAD_RULE": 5, + } +) + +func (x QuerySource) Enum() *QuerySource { + p := new(QuerySource) + *p = x + return p +} + +func (x QuerySource) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (QuerySource) Descriptor() protoreflect.EnumDescriptor { + return file_pg_query_proto_enumTypes[1].Descriptor() +} + +func (QuerySource) Type() protoreflect.EnumType { + return &file_pg_query_proto_enumTypes[1] +} + +func (x QuerySource) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use QuerySource.Descriptor instead. +func (QuerySource) EnumDescriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{1} +} + +type SortByDir int32 + +const ( + SortByDir_SORT_BY_DIR_UNDEFINED SortByDir = 0 + SortByDir_SORTBY_DEFAULT SortByDir = 1 + SortByDir_SORTBY_ASC SortByDir = 2 + SortByDir_SORTBY_DESC SortByDir = 3 + SortByDir_SORTBY_USING SortByDir = 4 +) + +// Enum value maps for SortByDir. +var ( + SortByDir_name = map[int32]string{ + 0: "SORT_BY_DIR_UNDEFINED", + 1: "SORTBY_DEFAULT", + 2: "SORTBY_ASC", + 3: "SORTBY_DESC", + 4: "SORTBY_USING", + } + SortByDir_value = map[string]int32{ + "SORT_BY_DIR_UNDEFINED": 0, + "SORTBY_DEFAULT": 1, + "SORTBY_ASC": 2, + "SORTBY_DESC": 3, + "SORTBY_USING": 4, + } +) + +func (x SortByDir) Enum() *SortByDir { + p := new(SortByDir) + *p = x + return p +} + +func (x SortByDir) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (SortByDir) Descriptor() protoreflect.EnumDescriptor { + return file_pg_query_proto_enumTypes[2].Descriptor() +} + +func (SortByDir) Type() protoreflect.EnumType { + return &file_pg_query_proto_enumTypes[2] +} + +func (x SortByDir) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use SortByDir.Descriptor instead. +func (SortByDir) EnumDescriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{2} +} + +type SortByNulls int32 + +const ( + SortByNulls_SORT_BY_NULLS_UNDEFINED SortByNulls = 0 + SortByNulls_SORTBY_NULLS_DEFAULT SortByNulls = 1 + SortByNulls_SORTBY_NULLS_FIRST SortByNulls = 2 + SortByNulls_SORTBY_NULLS_LAST SortByNulls = 3 +) + +// Enum value maps for SortByNulls. +var ( + SortByNulls_name = map[int32]string{ + 0: "SORT_BY_NULLS_UNDEFINED", + 1: "SORTBY_NULLS_DEFAULT", + 2: "SORTBY_NULLS_FIRST", + 3: "SORTBY_NULLS_LAST", + } + SortByNulls_value = map[string]int32{ + "SORT_BY_NULLS_UNDEFINED": 0, + "SORTBY_NULLS_DEFAULT": 1, + "SORTBY_NULLS_FIRST": 2, + "SORTBY_NULLS_LAST": 3, + } +) + +func (x SortByNulls) Enum() *SortByNulls { + p := new(SortByNulls) + *p = x + return p +} + +func (x SortByNulls) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (SortByNulls) Descriptor() protoreflect.EnumDescriptor { + return file_pg_query_proto_enumTypes[3].Descriptor() +} + +func (SortByNulls) Type() protoreflect.EnumType { + return &file_pg_query_proto_enumTypes[3] +} + +func (x SortByNulls) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use SortByNulls.Descriptor instead. +func (SortByNulls) EnumDescriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{3} +} + +type A_Expr_Kind int32 + +const ( + A_Expr_Kind_A_EXPR_KIND_UNDEFINED A_Expr_Kind = 0 + A_Expr_Kind_AEXPR_OP A_Expr_Kind = 1 + A_Expr_Kind_AEXPR_OP_ANY A_Expr_Kind = 2 + A_Expr_Kind_AEXPR_OP_ALL A_Expr_Kind = 3 + A_Expr_Kind_AEXPR_DISTINCT A_Expr_Kind = 4 + A_Expr_Kind_AEXPR_NOT_DISTINCT A_Expr_Kind = 5 + A_Expr_Kind_AEXPR_NULLIF A_Expr_Kind = 6 + A_Expr_Kind_AEXPR_OF A_Expr_Kind = 7 + A_Expr_Kind_AEXPR_IN A_Expr_Kind = 8 + A_Expr_Kind_AEXPR_LIKE A_Expr_Kind = 9 + A_Expr_Kind_AEXPR_ILIKE A_Expr_Kind = 10 + A_Expr_Kind_AEXPR_SIMILAR A_Expr_Kind = 11 + A_Expr_Kind_AEXPR_BETWEEN A_Expr_Kind = 12 + A_Expr_Kind_AEXPR_NOT_BETWEEN A_Expr_Kind = 13 + A_Expr_Kind_AEXPR_BETWEEN_SYM A_Expr_Kind = 14 + A_Expr_Kind_AEXPR_NOT_BETWEEN_SYM A_Expr_Kind = 15 + A_Expr_Kind_AEXPR_PAREN A_Expr_Kind = 16 +) + +// Enum value maps for A_Expr_Kind. +var ( + A_Expr_Kind_name = map[int32]string{ + 0: "A_EXPR_KIND_UNDEFINED", + 1: "AEXPR_OP", + 2: "AEXPR_OP_ANY", + 3: "AEXPR_OP_ALL", + 4: "AEXPR_DISTINCT", + 5: "AEXPR_NOT_DISTINCT", + 6: "AEXPR_NULLIF", + 7: "AEXPR_OF", + 8: "AEXPR_IN", + 9: "AEXPR_LIKE", + 10: "AEXPR_ILIKE", + 11: "AEXPR_SIMILAR", + 12: "AEXPR_BETWEEN", + 13: "AEXPR_NOT_BETWEEN", + 14: "AEXPR_BETWEEN_SYM", + 15: "AEXPR_NOT_BETWEEN_SYM", + 16: "AEXPR_PAREN", + } + A_Expr_Kind_value = map[string]int32{ + "A_EXPR_KIND_UNDEFINED": 0, + "AEXPR_OP": 1, + "AEXPR_OP_ANY": 2, + "AEXPR_OP_ALL": 3, + "AEXPR_DISTINCT": 4, + "AEXPR_NOT_DISTINCT": 5, + "AEXPR_NULLIF": 6, + "AEXPR_OF": 7, + "AEXPR_IN": 8, + "AEXPR_LIKE": 9, + "AEXPR_ILIKE": 10, + "AEXPR_SIMILAR": 11, + "AEXPR_BETWEEN": 12, + "AEXPR_NOT_BETWEEN": 13, + "AEXPR_BETWEEN_SYM": 14, + "AEXPR_NOT_BETWEEN_SYM": 15, + "AEXPR_PAREN": 16, + } +) + +func (x A_Expr_Kind) Enum() *A_Expr_Kind { + p := new(A_Expr_Kind) + *p = x + return p +} + +func (x A_Expr_Kind) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (A_Expr_Kind) Descriptor() protoreflect.EnumDescriptor { + return file_pg_query_proto_enumTypes[4].Descriptor() +} + +func (A_Expr_Kind) Type() protoreflect.EnumType { + return &file_pg_query_proto_enumTypes[4] +} + +func (x A_Expr_Kind) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use A_Expr_Kind.Descriptor instead. +func (A_Expr_Kind) EnumDescriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{4} +} + +type RoleSpecType int32 + +const ( + RoleSpecType_ROLE_SPEC_TYPE_UNDEFINED RoleSpecType = 0 + RoleSpecType_ROLESPEC_CSTRING RoleSpecType = 1 + RoleSpecType_ROLESPEC_CURRENT_USER RoleSpecType = 2 + RoleSpecType_ROLESPEC_SESSION_USER RoleSpecType = 3 + RoleSpecType_ROLESPEC_PUBLIC RoleSpecType = 4 +) + +// Enum value maps for RoleSpecType. +var ( + RoleSpecType_name = map[int32]string{ + 0: "ROLE_SPEC_TYPE_UNDEFINED", + 1: "ROLESPEC_CSTRING", + 2: "ROLESPEC_CURRENT_USER", + 3: "ROLESPEC_SESSION_USER", + 4: "ROLESPEC_PUBLIC", + } + RoleSpecType_value = map[string]int32{ + "ROLE_SPEC_TYPE_UNDEFINED": 0, + "ROLESPEC_CSTRING": 1, + "ROLESPEC_CURRENT_USER": 2, + "ROLESPEC_SESSION_USER": 3, + "ROLESPEC_PUBLIC": 4, + } +) + +func (x RoleSpecType) Enum() *RoleSpecType { + p := new(RoleSpecType) + *p = x + return p +} + +func (x RoleSpecType) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (RoleSpecType) Descriptor() protoreflect.EnumDescriptor { + return file_pg_query_proto_enumTypes[5].Descriptor() +} + +func (RoleSpecType) Type() protoreflect.EnumType { + return &file_pg_query_proto_enumTypes[5] +} + +func (x RoleSpecType) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use RoleSpecType.Descriptor instead. +func (RoleSpecType) EnumDescriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{5} +} + +type TableLikeOption int32 + +const ( + TableLikeOption_TABLE_LIKE_OPTION_UNDEFINED TableLikeOption = 0 + TableLikeOption_CREATE_TABLE_LIKE_COMMENTS TableLikeOption = 1 + TableLikeOption_CREATE_TABLE_LIKE_CONSTRAINTS TableLikeOption = 2 + TableLikeOption_CREATE_TABLE_LIKE_DEFAULTS TableLikeOption = 3 + TableLikeOption_CREATE_TABLE_LIKE_GENERATED TableLikeOption = 4 + TableLikeOption_CREATE_TABLE_LIKE_IDENTITY TableLikeOption = 5 + TableLikeOption_CREATE_TABLE_LIKE_INDEXES TableLikeOption = 6 + TableLikeOption_CREATE_TABLE_LIKE_STATISTICS TableLikeOption = 7 + TableLikeOption_CREATE_TABLE_LIKE_STORAGE TableLikeOption = 8 + TableLikeOption_CREATE_TABLE_LIKE_ALL TableLikeOption = 9 +) + +// Enum value maps for TableLikeOption. +var ( + TableLikeOption_name = map[int32]string{ + 0: "TABLE_LIKE_OPTION_UNDEFINED", + 1: "CREATE_TABLE_LIKE_COMMENTS", + 2: "CREATE_TABLE_LIKE_CONSTRAINTS", + 3: "CREATE_TABLE_LIKE_DEFAULTS", + 4: "CREATE_TABLE_LIKE_GENERATED", + 5: "CREATE_TABLE_LIKE_IDENTITY", + 6: "CREATE_TABLE_LIKE_INDEXES", + 7: "CREATE_TABLE_LIKE_STATISTICS", + 8: "CREATE_TABLE_LIKE_STORAGE", + 9: "CREATE_TABLE_LIKE_ALL", + } + TableLikeOption_value = map[string]int32{ + "TABLE_LIKE_OPTION_UNDEFINED": 0, + "CREATE_TABLE_LIKE_COMMENTS": 1, + "CREATE_TABLE_LIKE_CONSTRAINTS": 2, + "CREATE_TABLE_LIKE_DEFAULTS": 3, + "CREATE_TABLE_LIKE_GENERATED": 4, + "CREATE_TABLE_LIKE_IDENTITY": 5, + "CREATE_TABLE_LIKE_INDEXES": 6, + "CREATE_TABLE_LIKE_STATISTICS": 7, + "CREATE_TABLE_LIKE_STORAGE": 8, + "CREATE_TABLE_LIKE_ALL": 9, + } +) + +func (x TableLikeOption) Enum() *TableLikeOption { + p := new(TableLikeOption) + *p = x + return p +} + +func (x TableLikeOption) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (TableLikeOption) Descriptor() protoreflect.EnumDescriptor { + return file_pg_query_proto_enumTypes[6].Descriptor() +} + +func (TableLikeOption) Type() protoreflect.EnumType { + return &file_pg_query_proto_enumTypes[6] +} + +func (x TableLikeOption) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use TableLikeOption.Descriptor instead. +func (TableLikeOption) EnumDescriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{6} +} + +type DefElemAction int32 + +const ( + DefElemAction_DEF_ELEM_ACTION_UNDEFINED DefElemAction = 0 + DefElemAction_DEFELEM_UNSPEC DefElemAction = 1 + DefElemAction_DEFELEM_SET DefElemAction = 2 + DefElemAction_DEFELEM_ADD DefElemAction = 3 + DefElemAction_DEFELEM_DROP DefElemAction = 4 +) + +// Enum value maps for DefElemAction. +var ( + DefElemAction_name = map[int32]string{ + 0: "DEF_ELEM_ACTION_UNDEFINED", + 1: "DEFELEM_UNSPEC", + 2: "DEFELEM_SET", + 3: "DEFELEM_ADD", + 4: "DEFELEM_DROP", + } + DefElemAction_value = map[string]int32{ + "DEF_ELEM_ACTION_UNDEFINED": 0, + "DEFELEM_UNSPEC": 1, + "DEFELEM_SET": 2, + "DEFELEM_ADD": 3, + "DEFELEM_DROP": 4, + } +) + +func (x DefElemAction) Enum() *DefElemAction { + p := new(DefElemAction) + *p = x + return p +} + +func (x DefElemAction) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (DefElemAction) Descriptor() protoreflect.EnumDescriptor { + return file_pg_query_proto_enumTypes[7].Descriptor() +} + +func (DefElemAction) Type() protoreflect.EnumType { + return &file_pg_query_proto_enumTypes[7] +} + +func (x DefElemAction) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use DefElemAction.Descriptor instead. +func (DefElemAction) EnumDescriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{7} +} + +type PartitionRangeDatumKind int32 + +const ( + PartitionRangeDatumKind_PARTITION_RANGE_DATUM_KIND_UNDEFINED PartitionRangeDatumKind = 0 + PartitionRangeDatumKind_PARTITION_RANGE_DATUM_MINVALUE PartitionRangeDatumKind = 1 + PartitionRangeDatumKind_PARTITION_RANGE_DATUM_VALUE PartitionRangeDatumKind = 2 + PartitionRangeDatumKind_PARTITION_RANGE_DATUM_MAXVALUE PartitionRangeDatumKind = 3 +) + +// Enum value maps for PartitionRangeDatumKind. +var ( + PartitionRangeDatumKind_name = map[int32]string{ + 0: "PARTITION_RANGE_DATUM_KIND_UNDEFINED", + 1: "PARTITION_RANGE_DATUM_MINVALUE", + 2: "PARTITION_RANGE_DATUM_VALUE", + 3: "PARTITION_RANGE_DATUM_MAXVALUE", + } + PartitionRangeDatumKind_value = map[string]int32{ + "PARTITION_RANGE_DATUM_KIND_UNDEFINED": 0, + "PARTITION_RANGE_DATUM_MINVALUE": 1, + "PARTITION_RANGE_DATUM_VALUE": 2, + "PARTITION_RANGE_DATUM_MAXVALUE": 3, + } +) + +func (x PartitionRangeDatumKind) Enum() *PartitionRangeDatumKind { + p := new(PartitionRangeDatumKind) + *p = x + return p +} + +func (x PartitionRangeDatumKind) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (PartitionRangeDatumKind) Descriptor() protoreflect.EnumDescriptor { + return file_pg_query_proto_enumTypes[8].Descriptor() +} + +func (PartitionRangeDatumKind) Type() protoreflect.EnumType { + return &file_pg_query_proto_enumTypes[8] +} + +func (x PartitionRangeDatumKind) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use PartitionRangeDatumKind.Descriptor instead. +func (PartitionRangeDatumKind) EnumDescriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{8} +} + +type RTEKind int32 + +const ( + RTEKind_RTEKIND_UNDEFINED RTEKind = 0 + RTEKind_RTE_RELATION RTEKind = 1 + RTEKind_RTE_SUBQUERY RTEKind = 2 + RTEKind_RTE_JOIN RTEKind = 3 + RTEKind_RTE_FUNCTION RTEKind = 4 + RTEKind_RTE_TABLEFUNC RTEKind = 5 + RTEKind_RTE_VALUES RTEKind = 6 + RTEKind_RTE_CTE RTEKind = 7 + RTEKind_RTE_NAMEDTUPLESTORE RTEKind = 8 + RTEKind_RTE_RESULT RTEKind = 9 +) + +// Enum value maps for RTEKind. +var ( + RTEKind_name = map[int32]string{ + 0: "RTEKIND_UNDEFINED", + 1: "RTE_RELATION", + 2: "RTE_SUBQUERY", + 3: "RTE_JOIN", + 4: "RTE_FUNCTION", + 5: "RTE_TABLEFUNC", + 6: "RTE_VALUES", + 7: "RTE_CTE", + 8: "RTE_NAMEDTUPLESTORE", + 9: "RTE_RESULT", + } + RTEKind_value = map[string]int32{ + "RTEKIND_UNDEFINED": 0, + "RTE_RELATION": 1, + "RTE_SUBQUERY": 2, + "RTE_JOIN": 3, + "RTE_FUNCTION": 4, + "RTE_TABLEFUNC": 5, + "RTE_VALUES": 6, + "RTE_CTE": 7, + "RTE_NAMEDTUPLESTORE": 8, + "RTE_RESULT": 9, + } +) + +func (x RTEKind) Enum() *RTEKind { + p := new(RTEKind) + *p = x + return p +} + +func (x RTEKind) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (RTEKind) Descriptor() protoreflect.EnumDescriptor { + return file_pg_query_proto_enumTypes[9].Descriptor() +} + +func (RTEKind) Type() protoreflect.EnumType { + return &file_pg_query_proto_enumTypes[9] +} + +func (x RTEKind) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use RTEKind.Descriptor instead. +func (RTEKind) EnumDescriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{9} +} + +type WCOKind int32 + +const ( + WCOKind_WCOKIND_UNDEFINED WCOKind = 0 + WCOKind_WCO_VIEW_CHECK WCOKind = 1 + WCOKind_WCO_RLS_INSERT_CHECK WCOKind = 2 + WCOKind_WCO_RLS_UPDATE_CHECK WCOKind = 3 + WCOKind_WCO_RLS_CONFLICT_CHECK WCOKind = 4 +) + +// Enum value maps for WCOKind. +var ( + WCOKind_name = map[int32]string{ + 0: "WCOKIND_UNDEFINED", + 1: "WCO_VIEW_CHECK", + 2: "WCO_RLS_INSERT_CHECK", + 3: "WCO_RLS_UPDATE_CHECK", + 4: "WCO_RLS_CONFLICT_CHECK", + } + WCOKind_value = map[string]int32{ + "WCOKIND_UNDEFINED": 0, + "WCO_VIEW_CHECK": 1, + "WCO_RLS_INSERT_CHECK": 2, + "WCO_RLS_UPDATE_CHECK": 3, + "WCO_RLS_CONFLICT_CHECK": 4, + } +) + +func (x WCOKind) Enum() *WCOKind { + p := new(WCOKind) + *p = x + return p +} + +func (x WCOKind) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (WCOKind) Descriptor() protoreflect.EnumDescriptor { + return file_pg_query_proto_enumTypes[10].Descriptor() +} + +func (WCOKind) Type() protoreflect.EnumType { + return &file_pg_query_proto_enumTypes[10] +} + +func (x WCOKind) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use WCOKind.Descriptor instead. +func (WCOKind) EnumDescriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{10} +} + +type GroupingSetKind int32 + +const ( + GroupingSetKind_GROUPING_SET_KIND_UNDEFINED GroupingSetKind = 0 + GroupingSetKind_GROUPING_SET_EMPTY GroupingSetKind = 1 + GroupingSetKind_GROUPING_SET_SIMPLE GroupingSetKind = 2 + GroupingSetKind_GROUPING_SET_ROLLUP GroupingSetKind = 3 + GroupingSetKind_GROUPING_SET_CUBE GroupingSetKind = 4 + GroupingSetKind_GROUPING_SET_SETS GroupingSetKind = 5 +) + +// Enum value maps for GroupingSetKind. +var ( + GroupingSetKind_name = map[int32]string{ + 0: "GROUPING_SET_KIND_UNDEFINED", + 1: "GROUPING_SET_EMPTY", + 2: "GROUPING_SET_SIMPLE", + 3: "GROUPING_SET_ROLLUP", + 4: "GROUPING_SET_CUBE", + 5: "GROUPING_SET_SETS", + } + GroupingSetKind_value = map[string]int32{ + "GROUPING_SET_KIND_UNDEFINED": 0, + "GROUPING_SET_EMPTY": 1, + "GROUPING_SET_SIMPLE": 2, + "GROUPING_SET_ROLLUP": 3, + "GROUPING_SET_CUBE": 4, + "GROUPING_SET_SETS": 5, + } +) + +func (x GroupingSetKind) Enum() *GroupingSetKind { + p := new(GroupingSetKind) + *p = x + return p +} + +func (x GroupingSetKind) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (GroupingSetKind) Descriptor() protoreflect.EnumDescriptor { + return file_pg_query_proto_enumTypes[11].Descriptor() +} + +func (GroupingSetKind) Type() protoreflect.EnumType { + return &file_pg_query_proto_enumTypes[11] +} + +func (x GroupingSetKind) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use GroupingSetKind.Descriptor instead. +func (GroupingSetKind) EnumDescriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{11} +} + +type CTEMaterialize int32 + +const ( + CTEMaterialize_CTEMATERIALIZE_UNDEFINED CTEMaterialize = 0 + CTEMaterialize_CTEMaterializeDefault CTEMaterialize = 1 + CTEMaterialize_CTEMaterializeAlways CTEMaterialize = 2 + CTEMaterialize_CTEMaterializeNever CTEMaterialize = 3 +) + +// Enum value maps for CTEMaterialize. +var ( + CTEMaterialize_name = map[int32]string{ + 0: "CTEMATERIALIZE_UNDEFINED", + 1: "CTEMaterializeDefault", + 2: "CTEMaterializeAlways", + 3: "CTEMaterializeNever", + } + CTEMaterialize_value = map[string]int32{ + "CTEMATERIALIZE_UNDEFINED": 0, + "CTEMaterializeDefault": 1, + "CTEMaterializeAlways": 2, + "CTEMaterializeNever": 3, + } +) + +func (x CTEMaterialize) Enum() *CTEMaterialize { + p := new(CTEMaterialize) + *p = x + return p +} + +func (x CTEMaterialize) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (CTEMaterialize) Descriptor() protoreflect.EnumDescriptor { + return file_pg_query_proto_enumTypes[12].Descriptor() +} + +func (CTEMaterialize) Type() protoreflect.EnumType { + return &file_pg_query_proto_enumTypes[12] +} + +func (x CTEMaterialize) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use CTEMaterialize.Descriptor instead. +func (CTEMaterialize) EnumDescriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{12} +} + +type SetOperation int32 + +const ( + SetOperation_SET_OPERATION_UNDEFINED SetOperation = 0 + SetOperation_SETOP_NONE SetOperation = 1 + SetOperation_SETOP_UNION SetOperation = 2 + SetOperation_SETOP_INTERSECT SetOperation = 3 + SetOperation_SETOP_EXCEPT SetOperation = 4 +) + +// Enum value maps for SetOperation. +var ( + SetOperation_name = map[int32]string{ + 0: "SET_OPERATION_UNDEFINED", + 1: "SETOP_NONE", + 2: "SETOP_UNION", + 3: "SETOP_INTERSECT", + 4: "SETOP_EXCEPT", + } + SetOperation_value = map[string]int32{ + "SET_OPERATION_UNDEFINED": 0, + "SETOP_NONE": 1, + "SETOP_UNION": 2, + "SETOP_INTERSECT": 3, + "SETOP_EXCEPT": 4, + } +) + +func (x SetOperation) Enum() *SetOperation { + p := new(SetOperation) + *p = x + return p +} + +func (x SetOperation) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (SetOperation) Descriptor() protoreflect.EnumDescriptor { + return file_pg_query_proto_enumTypes[13].Descriptor() +} + +func (SetOperation) Type() protoreflect.EnumType { + return &file_pg_query_proto_enumTypes[13] +} + +func (x SetOperation) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use SetOperation.Descriptor instead. +func (SetOperation) EnumDescriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{13} +} + +type ObjectType int32 + +const ( + ObjectType_OBJECT_TYPE_UNDEFINED ObjectType = 0 + ObjectType_OBJECT_ACCESS_METHOD ObjectType = 1 + ObjectType_OBJECT_AGGREGATE ObjectType = 2 + ObjectType_OBJECT_AMOP ObjectType = 3 + ObjectType_OBJECT_AMPROC ObjectType = 4 + ObjectType_OBJECT_ATTRIBUTE ObjectType = 5 + ObjectType_OBJECT_CAST ObjectType = 6 + ObjectType_OBJECT_COLUMN ObjectType = 7 + ObjectType_OBJECT_COLLATION ObjectType = 8 + ObjectType_OBJECT_CONVERSION ObjectType = 9 + ObjectType_OBJECT_DATABASE ObjectType = 10 + ObjectType_OBJECT_DEFAULT ObjectType = 11 + ObjectType_OBJECT_DEFACL ObjectType = 12 + ObjectType_OBJECT_DOMAIN ObjectType = 13 + ObjectType_OBJECT_DOMCONSTRAINT ObjectType = 14 + ObjectType_OBJECT_EVENT_TRIGGER ObjectType = 15 + ObjectType_OBJECT_EXTENSION ObjectType = 16 + ObjectType_OBJECT_FDW ObjectType = 17 + ObjectType_OBJECT_FOREIGN_SERVER ObjectType = 18 + ObjectType_OBJECT_FOREIGN_TABLE ObjectType = 19 + ObjectType_OBJECT_FUNCTION ObjectType = 20 + ObjectType_OBJECT_INDEX ObjectType = 21 + ObjectType_OBJECT_LANGUAGE ObjectType = 22 + ObjectType_OBJECT_LARGEOBJECT ObjectType = 23 + ObjectType_OBJECT_MATVIEW ObjectType = 24 + ObjectType_OBJECT_OPCLASS ObjectType = 25 + ObjectType_OBJECT_OPERATOR ObjectType = 26 + ObjectType_OBJECT_OPFAMILY ObjectType = 27 + ObjectType_OBJECT_POLICY ObjectType = 28 + ObjectType_OBJECT_PROCEDURE ObjectType = 29 + ObjectType_OBJECT_PUBLICATION ObjectType = 30 + ObjectType_OBJECT_PUBLICATION_REL ObjectType = 31 + ObjectType_OBJECT_ROLE ObjectType = 32 + ObjectType_OBJECT_ROUTINE ObjectType = 33 + ObjectType_OBJECT_RULE ObjectType = 34 + ObjectType_OBJECT_SCHEMA ObjectType = 35 + ObjectType_OBJECT_SEQUENCE ObjectType = 36 + ObjectType_OBJECT_SUBSCRIPTION ObjectType = 37 + ObjectType_OBJECT_STATISTIC_EXT ObjectType = 38 + ObjectType_OBJECT_TABCONSTRAINT ObjectType = 39 + ObjectType_OBJECT_TABLE ObjectType = 40 + ObjectType_OBJECT_TABLESPACE ObjectType = 41 + ObjectType_OBJECT_TRANSFORM ObjectType = 42 + ObjectType_OBJECT_TRIGGER ObjectType = 43 + ObjectType_OBJECT_TSCONFIGURATION ObjectType = 44 + ObjectType_OBJECT_TSDICTIONARY ObjectType = 45 + ObjectType_OBJECT_TSPARSER ObjectType = 46 + ObjectType_OBJECT_TSTEMPLATE ObjectType = 47 + ObjectType_OBJECT_TYPE ObjectType = 48 + ObjectType_OBJECT_USER_MAPPING ObjectType = 49 + ObjectType_OBJECT_VIEW ObjectType = 50 +) + +// Enum value maps for ObjectType. +var ( + ObjectType_name = map[int32]string{ + 0: "OBJECT_TYPE_UNDEFINED", + 1: "OBJECT_ACCESS_METHOD", + 2: "OBJECT_AGGREGATE", + 3: "OBJECT_AMOP", + 4: "OBJECT_AMPROC", + 5: "OBJECT_ATTRIBUTE", + 6: "OBJECT_CAST", + 7: "OBJECT_COLUMN", + 8: "OBJECT_COLLATION", + 9: "OBJECT_CONVERSION", + 10: "OBJECT_DATABASE", + 11: "OBJECT_DEFAULT", + 12: "OBJECT_DEFACL", + 13: "OBJECT_DOMAIN", + 14: "OBJECT_DOMCONSTRAINT", + 15: "OBJECT_EVENT_TRIGGER", + 16: "OBJECT_EXTENSION", + 17: "OBJECT_FDW", + 18: "OBJECT_FOREIGN_SERVER", + 19: "OBJECT_FOREIGN_TABLE", + 20: "OBJECT_FUNCTION", + 21: "OBJECT_INDEX", + 22: "OBJECT_LANGUAGE", + 23: "OBJECT_LARGEOBJECT", + 24: "OBJECT_MATVIEW", + 25: "OBJECT_OPCLASS", + 26: "OBJECT_OPERATOR", + 27: "OBJECT_OPFAMILY", + 28: "OBJECT_POLICY", + 29: "OBJECT_PROCEDURE", + 30: "OBJECT_PUBLICATION", + 31: "OBJECT_PUBLICATION_REL", + 32: "OBJECT_ROLE", + 33: "OBJECT_ROUTINE", + 34: "OBJECT_RULE", + 35: "OBJECT_SCHEMA", + 36: "OBJECT_SEQUENCE", + 37: "OBJECT_SUBSCRIPTION", + 38: "OBJECT_STATISTIC_EXT", + 39: "OBJECT_TABCONSTRAINT", + 40: "OBJECT_TABLE", + 41: "OBJECT_TABLESPACE", + 42: "OBJECT_TRANSFORM", + 43: "OBJECT_TRIGGER", + 44: "OBJECT_TSCONFIGURATION", + 45: "OBJECT_TSDICTIONARY", + 46: "OBJECT_TSPARSER", + 47: "OBJECT_TSTEMPLATE", + 48: "OBJECT_TYPE", + 49: "OBJECT_USER_MAPPING", + 50: "OBJECT_VIEW", + } + ObjectType_value = map[string]int32{ + "OBJECT_TYPE_UNDEFINED": 0, + "OBJECT_ACCESS_METHOD": 1, + "OBJECT_AGGREGATE": 2, + "OBJECT_AMOP": 3, + "OBJECT_AMPROC": 4, + "OBJECT_ATTRIBUTE": 5, + "OBJECT_CAST": 6, + "OBJECT_COLUMN": 7, + "OBJECT_COLLATION": 8, + "OBJECT_CONVERSION": 9, + "OBJECT_DATABASE": 10, + "OBJECT_DEFAULT": 11, + "OBJECT_DEFACL": 12, + "OBJECT_DOMAIN": 13, + "OBJECT_DOMCONSTRAINT": 14, + "OBJECT_EVENT_TRIGGER": 15, + "OBJECT_EXTENSION": 16, + "OBJECT_FDW": 17, + "OBJECT_FOREIGN_SERVER": 18, + "OBJECT_FOREIGN_TABLE": 19, + "OBJECT_FUNCTION": 20, + "OBJECT_INDEX": 21, + "OBJECT_LANGUAGE": 22, + "OBJECT_LARGEOBJECT": 23, + "OBJECT_MATVIEW": 24, + "OBJECT_OPCLASS": 25, + "OBJECT_OPERATOR": 26, + "OBJECT_OPFAMILY": 27, + "OBJECT_POLICY": 28, + "OBJECT_PROCEDURE": 29, + "OBJECT_PUBLICATION": 30, + "OBJECT_PUBLICATION_REL": 31, + "OBJECT_ROLE": 32, + "OBJECT_ROUTINE": 33, + "OBJECT_RULE": 34, + "OBJECT_SCHEMA": 35, + "OBJECT_SEQUENCE": 36, + "OBJECT_SUBSCRIPTION": 37, + "OBJECT_STATISTIC_EXT": 38, + "OBJECT_TABCONSTRAINT": 39, + "OBJECT_TABLE": 40, + "OBJECT_TABLESPACE": 41, + "OBJECT_TRANSFORM": 42, + "OBJECT_TRIGGER": 43, + "OBJECT_TSCONFIGURATION": 44, + "OBJECT_TSDICTIONARY": 45, + "OBJECT_TSPARSER": 46, + "OBJECT_TSTEMPLATE": 47, + "OBJECT_TYPE": 48, + "OBJECT_USER_MAPPING": 49, + "OBJECT_VIEW": 50, + } +) + +func (x ObjectType) Enum() *ObjectType { + p := new(ObjectType) + *p = x + return p +} + +func (x ObjectType) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (ObjectType) Descriptor() protoreflect.EnumDescriptor { + return file_pg_query_proto_enumTypes[14].Descriptor() +} + +func (ObjectType) Type() protoreflect.EnumType { + return &file_pg_query_proto_enumTypes[14] +} + +func (x ObjectType) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use ObjectType.Descriptor instead. +func (ObjectType) EnumDescriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{14} +} + +type DropBehavior int32 + +const ( + DropBehavior_DROP_BEHAVIOR_UNDEFINED DropBehavior = 0 + DropBehavior_DROP_RESTRICT DropBehavior = 1 + DropBehavior_DROP_CASCADE DropBehavior = 2 +) + +// Enum value maps for DropBehavior. +var ( + DropBehavior_name = map[int32]string{ + 0: "DROP_BEHAVIOR_UNDEFINED", + 1: "DROP_RESTRICT", + 2: "DROP_CASCADE", + } + DropBehavior_value = map[string]int32{ + "DROP_BEHAVIOR_UNDEFINED": 0, + "DROP_RESTRICT": 1, + "DROP_CASCADE": 2, + } +) + +func (x DropBehavior) Enum() *DropBehavior { + p := new(DropBehavior) + *p = x + return p +} + +func (x DropBehavior) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (DropBehavior) Descriptor() protoreflect.EnumDescriptor { + return file_pg_query_proto_enumTypes[15].Descriptor() +} + +func (DropBehavior) Type() protoreflect.EnumType { + return &file_pg_query_proto_enumTypes[15] +} + +func (x DropBehavior) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use DropBehavior.Descriptor instead. +func (DropBehavior) EnumDescriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{15} +} + +type AlterTableType int32 + +const ( + AlterTableType_ALTER_TABLE_TYPE_UNDEFINED AlterTableType = 0 + AlterTableType_AT_AddColumn AlterTableType = 1 + AlterTableType_AT_AddColumnRecurse AlterTableType = 2 + AlterTableType_AT_AddColumnToView AlterTableType = 3 + AlterTableType_AT_ColumnDefault AlterTableType = 4 + AlterTableType_AT_CookedColumnDefault AlterTableType = 5 + AlterTableType_AT_DropNotNull AlterTableType = 6 + AlterTableType_AT_SetNotNull AlterTableType = 7 + AlterTableType_AT_DropExpression AlterTableType = 8 + AlterTableType_AT_CheckNotNull AlterTableType = 9 + AlterTableType_AT_SetStatistics AlterTableType = 10 + AlterTableType_AT_SetOptions AlterTableType = 11 + AlterTableType_AT_ResetOptions AlterTableType = 12 + AlterTableType_AT_SetStorage AlterTableType = 13 + AlterTableType_AT_DropColumn AlterTableType = 14 + AlterTableType_AT_DropColumnRecurse AlterTableType = 15 + AlterTableType_AT_AddIndex AlterTableType = 16 + AlterTableType_AT_ReAddIndex AlterTableType = 17 + AlterTableType_AT_AddConstraint AlterTableType = 18 + AlterTableType_AT_AddConstraintRecurse AlterTableType = 19 + AlterTableType_AT_ReAddConstraint AlterTableType = 20 + AlterTableType_AT_ReAddDomainConstraint AlterTableType = 21 + AlterTableType_AT_AlterConstraint AlterTableType = 22 + AlterTableType_AT_ValidateConstraint AlterTableType = 23 + AlterTableType_AT_ValidateConstraintRecurse AlterTableType = 24 + AlterTableType_AT_AddIndexConstraint AlterTableType = 25 + AlterTableType_AT_DropConstraint AlterTableType = 26 + AlterTableType_AT_DropConstraintRecurse AlterTableType = 27 + AlterTableType_AT_ReAddComment AlterTableType = 28 + AlterTableType_AT_AlterColumnType AlterTableType = 29 + AlterTableType_AT_AlterColumnGenericOptions AlterTableType = 30 + AlterTableType_AT_ChangeOwner AlterTableType = 31 + AlterTableType_AT_ClusterOn AlterTableType = 32 + AlterTableType_AT_DropCluster AlterTableType = 33 + AlterTableType_AT_SetLogged AlterTableType = 34 + AlterTableType_AT_SetUnLogged AlterTableType = 35 + AlterTableType_AT_DropOids AlterTableType = 36 + AlterTableType_AT_SetTableSpace AlterTableType = 37 + AlterTableType_AT_SetRelOptions AlterTableType = 38 + AlterTableType_AT_ResetRelOptions AlterTableType = 39 + AlterTableType_AT_ReplaceRelOptions AlterTableType = 40 + AlterTableType_AT_EnableTrig AlterTableType = 41 + AlterTableType_AT_EnableAlwaysTrig AlterTableType = 42 + AlterTableType_AT_EnableReplicaTrig AlterTableType = 43 + AlterTableType_AT_DisableTrig AlterTableType = 44 + AlterTableType_AT_EnableTrigAll AlterTableType = 45 + AlterTableType_AT_DisableTrigAll AlterTableType = 46 + AlterTableType_AT_EnableTrigUser AlterTableType = 47 + AlterTableType_AT_DisableTrigUser AlterTableType = 48 + AlterTableType_AT_EnableRule AlterTableType = 49 + AlterTableType_AT_EnableAlwaysRule AlterTableType = 50 + AlterTableType_AT_EnableReplicaRule AlterTableType = 51 + AlterTableType_AT_DisableRule AlterTableType = 52 + AlterTableType_AT_AddInherit AlterTableType = 53 + AlterTableType_AT_DropInherit AlterTableType = 54 + AlterTableType_AT_AddOf AlterTableType = 55 + AlterTableType_AT_DropOf AlterTableType = 56 + AlterTableType_AT_ReplicaIdentity AlterTableType = 57 + AlterTableType_AT_EnableRowSecurity AlterTableType = 58 + AlterTableType_AT_DisableRowSecurity AlterTableType = 59 + AlterTableType_AT_ForceRowSecurity AlterTableType = 60 + AlterTableType_AT_NoForceRowSecurity AlterTableType = 61 + AlterTableType_AT_GenericOptions AlterTableType = 62 + AlterTableType_AT_AttachPartition AlterTableType = 63 + AlterTableType_AT_DetachPartition AlterTableType = 64 + AlterTableType_AT_AddIdentity AlterTableType = 65 + AlterTableType_AT_SetIdentity AlterTableType = 66 + AlterTableType_AT_DropIdentity AlterTableType = 67 +) + +// Enum value maps for AlterTableType. +var ( + AlterTableType_name = map[int32]string{ + 0: "ALTER_TABLE_TYPE_UNDEFINED", + 1: "AT_AddColumn", + 2: "AT_AddColumnRecurse", + 3: "AT_AddColumnToView", + 4: "AT_ColumnDefault", + 5: "AT_CookedColumnDefault", + 6: "AT_DropNotNull", + 7: "AT_SetNotNull", + 8: "AT_DropExpression", + 9: "AT_CheckNotNull", + 10: "AT_SetStatistics", + 11: "AT_SetOptions", + 12: "AT_ResetOptions", + 13: "AT_SetStorage", + 14: "AT_DropColumn", + 15: "AT_DropColumnRecurse", + 16: "AT_AddIndex", + 17: "AT_ReAddIndex", + 18: "AT_AddConstraint", + 19: "AT_AddConstraintRecurse", + 20: "AT_ReAddConstraint", + 21: "AT_ReAddDomainConstraint", + 22: "AT_AlterConstraint", + 23: "AT_ValidateConstraint", + 24: "AT_ValidateConstraintRecurse", + 25: "AT_AddIndexConstraint", + 26: "AT_DropConstraint", + 27: "AT_DropConstraintRecurse", + 28: "AT_ReAddComment", + 29: "AT_AlterColumnType", + 30: "AT_AlterColumnGenericOptions", + 31: "AT_ChangeOwner", + 32: "AT_ClusterOn", + 33: "AT_DropCluster", + 34: "AT_SetLogged", + 35: "AT_SetUnLogged", + 36: "AT_DropOids", + 37: "AT_SetTableSpace", + 38: "AT_SetRelOptions", + 39: "AT_ResetRelOptions", + 40: "AT_ReplaceRelOptions", + 41: "AT_EnableTrig", + 42: "AT_EnableAlwaysTrig", + 43: "AT_EnableReplicaTrig", + 44: "AT_DisableTrig", + 45: "AT_EnableTrigAll", + 46: "AT_DisableTrigAll", + 47: "AT_EnableTrigUser", + 48: "AT_DisableTrigUser", + 49: "AT_EnableRule", + 50: "AT_EnableAlwaysRule", + 51: "AT_EnableReplicaRule", + 52: "AT_DisableRule", + 53: "AT_AddInherit", + 54: "AT_DropInherit", + 55: "AT_AddOf", + 56: "AT_DropOf", + 57: "AT_ReplicaIdentity", + 58: "AT_EnableRowSecurity", + 59: "AT_DisableRowSecurity", + 60: "AT_ForceRowSecurity", + 61: "AT_NoForceRowSecurity", + 62: "AT_GenericOptions", + 63: "AT_AttachPartition", + 64: "AT_DetachPartition", + 65: "AT_AddIdentity", + 66: "AT_SetIdentity", + 67: "AT_DropIdentity", + } + AlterTableType_value = map[string]int32{ + "ALTER_TABLE_TYPE_UNDEFINED": 0, + "AT_AddColumn": 1, + "AT_AddColumnRecurse": 2, + "AT_AddColumnToView": 3, + "AT_ColumnDefault": 4, + "AT_CookedColumnDefault": 5, + "AT_DropNotNull": 6, + "AT_SetNotNull": 7, + "AT_DropExpression": 8, + "AT_CheckNotNull": 9, + "AT_SetStatistics": 10, + "AT_SetOptions": 11, + "AT_ResetOptions": 12, + "AT_SetStorage": 13, + "AT_DropColumn": 14, + "AT_DropColumnRecurse": 15, + "AT_AddIndex": 16, + "AT_ReAddIndex": 17, + "AT_AddConstraint": 18, + "AT_AddConstraintRecurse": 19, + "AT_ReAddConstraint": 20, + "AT_ReAddDomainConstraint": 21, + "AT_AlterConstraint": 22, + "AT_ValidateConstraint": 23, + "AT_ValidateConstraintRecurse": 24, + "AT_AddIndexConstraint": 25, + "AT_DropConstraint": 26, + "AT_DropConstraintRecurse": 27, + "AT_ReAddComment": 28, + "AT_AlterColumnType": 29, + "AT_AlterColumnGenericOptions": 30, + "AT_ChangeOwner": 31, + "AT_ClusterOn": 32, + "AT_DropCluster": 33, + "AT_SetLogged": 34, + "AT_SetUnLogged": 35, + "AT_DropOids": 36, + "AT_SetTableSpace": 37, + "AT_SetRelOptions": 38, + "AT_ResetRelOptions": 39, + "AT_ReplaceRelOptions": 40, + "AT_EnableTrig": 41, + "AT_EnableAlwaysTrig": 42, + "AT_EnableReplicaTrig": 43, + "AT_DisableTrig": 44, + "AT_EnableTrigAll": 45, + "AT_DisableTrigAll": 46, + "AT_EnableTrigUser": 47, + "AT_DisableTrigUser": 48, + "AT_EnableRule": 49, + "AT_EnableAlwaysRule": 50, + "AT_EnableReplicaRule": 51, + "AT_DisableRule": 52, + "AT_AddInherit": 53, + "AT_DropInherit": 54, + "AT_AddOf": 55, + "AT_DropOf": 56, + "AT_ReplicaIdentity": 57, + "AT_EnableRowSecurity": 58, + "AT_DisableRowSecurity": 59, + "AT_ForceRowSecurity": 60, + "AT_NoForceRowSecurity": 61, + "AT_GenericOptions": 62, + "AT_AttachPartition": 63, + "AT_DetachPartition": 64, + "AT_AddIdentity": 65, + "AT_SetIdentity": 66, + "AT_DropIdentity": 67, + } +) + +func (x AlterTableType) Enum() *AlterTableType { + p := new(AlterTableType) + *p = x + return p +} + +func (x AlterTableType) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (AlterTableType) Descriptor() protoreflect.EnumDescriptor { + return file_pg_query_proto_enumTypes[16].Descriptor() +} + +func (AlterTableType) Type() protoreflect.EnumType { + return &file_pg_query_proto_enumTypes[16] +} + +func (x AlterTableType) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use AlterTableType.Descriptor instead. +func (AlterTableType) EnumDescriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{16} +} + +type GrantTargetType int32 + +const ( + GrantTargetType_GRANT_TARGET_TYPE_UNDEFINED GrantTargetType = 0 + GrantTargetType_ACL_TARGET_OBJECT GrantTargetType = 1 + GrantTargetType_ACL_TARGET_ALL_IN_SCHEMA GrantTargetType = 2 + GrantTargetType_ACL_TARGET_DEFAULTS GrantTargetType = 3 +) + +// Enum value maps for GrantTargetType. +var ( + GrantTargetType_name = map[int32]string{ + 0: "GRANT_TARGET_TYPE_UNDEFINED", + 1: "ACL_TARGET_OBJECT", + 2: "ACL_TARGET_ALL_IN_SCHEMA", + 3: "ACL_TARGET_DEFAULTS", + } + GrantTargetType_value = map[string]int32{ + "GRANT_TARGET_TYPE_UNDEFINED": 0, + "ACL_TARGET_OBJECT": 1, + "ACL_TARGET_ALL_IN_SCHEMA": 2, + "ACL_TARGET_DEFAULTS": 3, + } +) + +func (x GrantTargetType) Enum() *GrantTargetType { + p := new(GrantTargetType) + *p = x + return p +} + +func (x GrantTargetType) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (GrantTargetType) Descriptor() protoreflect.EnumDescriptor { + return file_pg_query_proto_enumTypes[17].Descriptor() +} + +func (GrantTargetType) Type() protoreflect.EnumType { + return &file_pg_query_proto_enumTypes[17] +} + +func (x GrantTargetType) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use GrantTargetType.Descriptor instead. +func (GrantTargetType) EnumDescriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{17} +} + +type VariableSetKind int32 + +const ( + VariableSetKind_VARIABLE_SET_KIND_UNDEFINED VariableSetKind = 0 + VariableSetKind_VAR_SET_VALUE VariableSetKind = 1 + VariableSetKind_VAR_SET_DEFAULT VariableSetKind = 2 + VariableSetKind_VAR_SET_CURRENT VariableSetKind = 3 + VariableSetKind_VAR_SET_MULTI VariableSetKind = 4 + VariableSetKind_VAR_RESET VariableSetKind = 5 + VariableSetKind_VAR_RESET_ALL VariableSetKind = 6 +) + +// Enum value maps for VariableSetKind. +var ( + VariableSetKind_name = map[int32]string{ + 0: "VARIABLE_SET_KIND_UNDEFINED", + 1: "VAR_SET_VALUE", + 2: "VAR_SET_DEFAULT", + 3: "VAR_SET_CURRENT", + 4: "VAR_SET_MULTI", + 5: "VAR_RESET", + 6: "VAR_RESET_ALL", + } + VariableSetKind_value = map[string]int32{ + "VARIABLE_SET_KIND_UNDEFINED": 0, + "VAR_SET_VALUE": 1, + "VAR_SET_DEFAULT": 2, + "VAR_SET_CURRENT": 3, + "VAR_SET_MULTI": 4, + "VAR_RESET": 5, + "VAR_RESET_ALL": 6, + } +) + +func (x VariableSetKind) Enum() *VariableSetKind { + p := new(VariableSetKind) + *p = x + return p +} + +func (x VariableSetKind) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (VariableSetKind) Descriptor() protoreflect.EnumDescriptor { + return file_pg_query_proto_enumTypes[18].Descriptor() +} + +func (VariableSetKind) Type() protoreflect.EnumType { + return &file_pg_query_proto_enumTypes[18] +} + +func (x VariableSetKind) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use VariableSetKind.Descriptor instead. +func (VariableSetKind) EnumDescriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{18} +} + +type ConstrType int32 + +const ( + ConstrType_CONSTR_TYPE_UNDEFINED ConstrType = 0 + ConstrType_CONSTR_NULL ConstrType = 1 + ConstrType_CONSTR_NOTNULL ConstrType = 2 + ConstrType_CONSTR_DEFAULT ConstrType = 3 + ConstrType_CONSTR_IDENTITY ConstrType = 4 + ConstrType_CONSTR_GENERATED ConstrType = 5 + ConstrType_CONSTR_CHECK ConstrType = 6 + ConstrType_CONSTR_PRIMARY ConstrType = 7 + ConstrType_CONSTR_UNIQUE ConstrType = 8 + ConstrType_CONSTR_EXCLUSION ConstrType = 9 + ConstrType_CONSTR_FOREIGN ConstrType = 10 + ConstrType_CONSTR_ATTR_DEFERRABLE ConstrType = 11 + ConstrType_CONSTR_ATTR_NOT_DEFERRABLE ConstrType = 12 + ConstrType_CONSTR_ATTR_DEFERRED ConstrType = 13 + ConstrType_CONSTR_ATTR_IMMEDIATE ConstrType = 14 +) + +// Enum value maps for ConstrType. +var ( + ConstrType_name = map[int32]string{ + 0: "CONSTR_TYPE_UNDEFINED", + 1: "CONSTR_NULL", + 2: "CONSTR_NOTNULL", + 3: "CONSTR_DEFAULT", + 4: "CONSTR_IDENTITY", + 5: "CONSTR_GENERATED", + 6: "CONSTR_CHECK", + 7: "CONSTR_PRIMARY", + 8: "CONSTR_UNIQUE", + 9: "CONSTR_EXCLUSION", + 10: "CONSTR_FOREIGN", + 11: "CONSTR_ATTR_DEFERRABLE", + 12: "CONSTR_ATTR_NOT_DEFERRABLE", + 13: "CONSTR_ATTR_DEFERRED", + 14: "CONSTR_ATTR_IMMEDIATE", + } + ConstrType_value = map[string]int32{ + "CONSTR_TYPE_UNDEFINED": 0, + "CONSTR_NULL": 1, + "CONSTR_NOTNULL": 2, + "CONSTR_DEFAULT": 3, + "CONSTR_IDENTITY": 4, + "CONSTR_GENERATED": 5, + "CONSTR_CHECK": 6, + "CONSTR_PRIMARY": 7, + "CONSTR_UNIQUE": 8, + "CONSTR_EXCLUSION": 9, + "CONSTR_FOREIGN": 10, + "CONSTR_ATTR_DEFERRABLE": 11, + "CONSTR_ATTR_NOT_DEFERRABLE": 12, + "CONSTR_ATTR_DEFERRED": 13, + "CONSTR_ATTR_IMMEDIATE": 14, + } +) + +func (x ConstrType) Enum() *ConstrType { + p := new(ConstrType) + *p = x + return p +} + +func (x ConstrType) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (ConstrType) Descriptor() protoreflect.EnumDescriptor { + return file_pg_query_proto_enumTypes[19].Descriptor() +} + +func (ConstrType) Type() protoreflect.EnumType { + return &file_pg_query_proto_enumTypes[19] +} + +func (x ConstrType) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use ConstrType.Descriptor instead. +func (ConstrType) EnumDescriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{19} +} + +type ImportForeignSchemaType int32 + +const ( + ImportForeignSchemaType_IMPORT_FOREIGN_SCHEMA_TYPE_UNDEFINED ImportForeignSchemaType = 0 + ImportForeignSchemaType_FDW_IMPORT_SCHEMA_ALL ImportForeignSchemaType = 1 + ImportForeignSchemaType_FDW_IMPORT_SCHEMA_LIMIT_TO ImportForeignSchemaType = 2 + ImportForeignSchemaType_FDW_IMPORT_SCHEMA_EXCEPT ImportForeignSchemaType = 3 +) + +// Enum value maps for ImportForeignSchemaType. +var ( + ImportForeignSchemaType_name = map[int32]string{ + 0: "IMPORT_FOREIGN_SCHEMA_TYPE_UNDEFINED", + 1: "FDW_IMPORT_SCHEMA_ALL", + 2: "FDW_IMPORT_SCHEMA_LIMIT_TO", + 3: "FDW_IMPORT_SCHEMA_EXCEPT", + } + ImportForeignSchemaType_value = map[string]int32{ + "IMPORT_FOREIGN_SCHEMA_TYPE_UNDEFINED": 0, + "FDW_IMPORT_SCHEMA_ALL": 1, + "FDW_IMPORT_SCHEMA_LIMIT_TO": 2, + "FDW_IMPORT_SCHEMA_EXCEPT": 3, + } +) + +func (x ImportForeignSchemaType) Enum() *ImportForeignSchemaType { + p := new(ImportForeignSchemaType) + *p = x + return p +} + +func (x ImportForeignSchemaType) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (ImportForeignSchemaType) Descriptor() protoreflect.EnumDescriptor { + return file_pg_query_proto_enumTypes[20].Descriptor() +} + +func (ImportForeignSchemaType) Type() protoreflect.EnumType { + return &file_pg_query_proto_enumTypes[20] +} + +func (x ImportForeignSchemaType) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use ImportForeignSchemaType.Descriptor instead. +func (ImportForeignSchemaType) EnumDescriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{20} +} + +type RoleStmtType int32 + +const ( + RoleStmtType_ROLE_STMT_TYPE_UNDEFINED RoleStmtType = 0 + RoleStmtType_ROLESTMT_ROLE RoleStmtType = 1 + RoleStmtType_ROLESTMT_USER RoleStmtType = 2 + RoleStmtType_ROLESTMT_GROUP RoleStmtType = 3 +) + +// Enum value maps for RoleStmtType. +var ( + RoleStmtType_name = map[int32]string{ + 0: "ROLE_STMT_TYPE_UNDEFINED", + 1: "ROLESTMT_ROLE", + 2: "ROLESTMT_USER", + 3: "ROLESTMT_GROUP", + } + RoleStmtType_value = map[string]int32{ + "ROLE_STMT_TYPE_UNDEFINED": 0, + "ROLESTMT_ROLE": 1, + "ROLESTMT_USER": 2, + "ROLESTMT_GROUP": 3, + } +) + +func (x RoleStmtType) Enum() *RoleStmtType { + p := new(RoleStmtType) + *p = x + return p +} + +func (x RoleStmtType) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (RoleStmtType) Descriptor() protoreflect.EnumDescriptor { + return file_pg_query_proto_enumTypes[21].Descriptor() +} + +func (RoleStmtType) Type() protoreflect.EnumType { + return &file_pg_query_proto_enumTypes[21] +} + +func (x RoleStmtType) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use RoleStmtType.Descriptor instead. +func (RoleStmtType) EnumDescriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{21} +} + +type FetchDirection int32 + +const ( + FetchDirection_FETCH_DIRECTION_UNDEFINED FetchDirection = 0 + FetchDirection_FETCH_FORWARD FetchDirection = 1 + FetchDirection_FETCH_BACKWARD FetchDirection = 2 + FetchDirection_FETCH_ABSOLUTE FetchDirection = 3 + FetchDirection_FETCH_RELATIVE FetchDirection = 4 +) + +// Enum value maps for FetchDirection. +var ( + FetchDirection_name = map[int32]string{ + 0: "FETCH_DIRECTION_UNDEFINED", + 1: "FETCH_FORWARD", + 2: "FETCH_BACKWARD", + 3: "FETCH_ABSOLUTE", + 4: "FETCH_RELATIVE", + } + FetchDirection_value = map[string]int32{ + "FETCH_DIRECTION_UNDEFINED": 0, + "FETCH_FORWARD": 1, + "FETCH_BACKWARD": 2, + "FETCH_ABSOLUTE": 3, + "FETCH_RELATIVE": 4, + } +) + +func (x FetchDirection) Enum() *FetchDirection { + p := new(FetchDirection) + *p = x + return p +} + +func (x FetchDirection) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (FetchDirection) Descriptor() protoreflect.EnumDescriptor { + return file_pg_query_proto_enumTypes[22].Descriptor() +} + +func (FetchDirection) Type() protoreflect.EnumType { + return &file_pg_query_proto_enumTypes[22] +} + +func (x FetchDirection) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use FetchDirection.Descriptor instead. +func (FetchDirection) EnumDescriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{22} +} + +type FunctionParameterMode int32 + +const ( + FunctionParameterMode_FUNCTION_PARAMETER_MODE_UNDEFINED FunctionParameterMode = 0 + FunctionParameterMode_FUNC_PARAM_IN FunctionParameterMode = 1 + FunctionParameterMode_FUNC_PARAM_OUT FunctionParameterMode = 2 + FunctionParameterMode_FUNC_PARAM_INOUT FunctionParameterMode = 3 + FunctionParameterMode_FUNC_PARAM_VARIADIC FunctionParameterMode = 4 + FunctionParameterMode_FUNC_PARAM_TABLE FunctionParameterMode = 5 +) + +// Enum value maps for FunctionParameterMode. +var ( + FunctionParameterMode_name = map[int32]string{ + 0: "FUNCTION_PARAMETER_MODE_UNDEFINED", + 1: "FUNC_PARAM_IN", + 2: "FUNC_PARAM_OUT", + 3: "FUNC_PARAM_INOUT", + 4: "FUNC_PARAM_VARIADIC", + 5: "FUNC_PARAM_TABLE", + } + FunctionParameterMode_value = map[string]int32{ + "FUNCTION_PARAMETER_MODE_UNDEFINED": 0, + "FUNC_PARAM_IN": 1, + "FUNC_PARAM_OUT": 2, + "FUNC_PARAM_INOUT": 3, + "FUNC_PARAM_VARIADIC": 4, + "FUNC_PARAM_TABLE": 5, + } +) + +func (x FunctionParameterMode) Enum() *FunctionParameterMode { + p := new(FunctionParameterMode) + *p = x + return p +} + +func (x FunctionParameterMode) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (FunctionParameterMode) Descriptor() protoreflect.EnumDescriptor { + return file_pg_query_proto_enumTypes[23].Descriptor() +} + +func (FunctionParameterMode) Type() protoreflect.EnumType { + return &file_pg_query_proto_enumTypes[23] +} + +func (x FunctionParameterMode) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use FunctionParameterMode.Descriptor instead. +func (FunctionParameterMode) EnumDescriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{23} +} + +type TransactionStmtKind int32 + +const ( + TransactionStmtKind_TRANSACTION_STMT_KIND_UNDEFINED TransactionStmtKind = 0 + TransactionStmtKind_TRANS_STMT_BEGIN TransactionStmtKind = 1 + TransactionStmtKind_TRANS_STMT_START TransactionStmtKind = 2 + TransactionStmtKind_TRANS_STMT_COMMIT TransactionStmtKind = 3 + TransactionStmtKind_TRANS_STMT_ROLLBACK TransactionStmtKind = 4 + TransactionStmtKind_TRANS_STMT_SAVEPOINT TransactionStmtKind = 5 + TransactionStmtKind_TRANS_STMT_RELEASE TransactionStmtKind = 6 + TransactionStmtKind_TRANS_STMT_ROLLBACK_TO TransactionStmtKind = 7 + TransactionStmtKind_TRANS_STMT_PREPARE TransactionStmtKind = 8 + TransactionStmtKind_TRANS_STMT_COMMIT_PREPARED TransactionStmtKind = 9 + TransactionStmtKind_TRANS_STMT_ROLLBACK_PREPARED TransactionStmtKind = 10 +) + +// Enum value maps for TransactionStmtKind. +var ( + TransactionStmtKind_name = map[int32]string{ + 0: "TRANSACTION_STMT_KIND_UNDEFINED", + 1: "TRANS_STMT_BEGIN", + 2: "TRANS_STMT_START", + 3: "TRANS_STMT_COMMIT", + 4: "TRANS_STMT_ROLLBACK", + 5: "TRANS_STMT_SAVEPOINT", + 6: "TRANS_STMT_RELEASE", + 7: "TRANS_STMT_ROLLBACK_TO", + 8: "TRANS_STMT_PREPARE", + 9: "TRANS_STMT_COMMIT_PREPARED", + 10: "TRANS_STMT_ROLLBACK_PREPARED", + } + TransactionStmtKind_value = map[string]int32{ + "TRANSACTION_STMT_KIND_UNDEFINED": 0, + "TRANS_STMT_BEGIN": 1, + "TRANS_STMT_START": 2, + "TRANS_STMT_COMMIT": 3, + "TRANS_STMT_ROLLBACK": 4, + "TRANS_STMT_SAVEPOINT": 5, + "TRANS_STMT_RELEASE": 6, + "TRANS_STMT_ROLLBACK_TO": 7, + "TRANS_STMT_PREPARE": 8, + "TRANS_STMT_COMMIT_PREPARED": 9, + "TRANS_STMT_ROLLBACK_PREPARED": 10, + } +) + +func (x TransactionStmtKind) Enum() *TransactionStmtKind { + p := new(TransactionStmtKind) + *p = x + return p +} + +func (x TransactionStmtKind) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (TransactionStmtKind) Descriptor() protoreflect.EnumDescriptor { + return file_pg_query_proto_enumTypes[24].Descriptor() +} + +func (TransactionStmtKind) Type() protoreflect.EnumType { + return &file_pg_query_proto_enumTypes[24] +} + +func (x TransactionStmtKind) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use TransactionStmtKind.Descriptor instead. +func (TransactionStmtKind) EnumDescriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{24} +} + +type ViewCheckOption int32 + +const ( + ViewCheckOption_VIEW_CHECK_OPTION_UNDEFINED ViewCheckOption = 0 + ViewCheckOption_NO_CHECK_OPTION ViewCheckOption = 1 + ViewCheckOption_LOCAL_CHECK_OPTION ViewCheckOption = 2 + ViewCheckOption_CASCADED_CHECK_OPTION ViewCheckOption = 3 +) + +// Enum value maps for ViewCheckOption. +var ( + ViewCheckOption_name = map[int32]string{ + 0: "VIEW_CHECK_OPTION_UNDEFINED", + 1: "NO_CHECK_OPTION", + 2: "LOCAL_CHECK_OPTION", + 3: "CASCADED_CHECK_OPTION", + } + ViewCheckOption_value = map[string]int32{ + "VIEW_CHECK_OPTION_UNDEFINED": 0, + "NO_CHECK_OPTION": 1, + "LOCAL_CHECK_OPTION": 2, + "CASCADED_CHECK_OPTION": 3, + } +) + +func (x ViewCheckOption) Enum() *ViewCheckOption { + p := new(ViewCheckOption) + *p = x + return p +} + +func (x ViewCheckOption) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (ViewCheckOption) Descriptor() protoreflect.EnumDescriptor { + return file_pg_query_proto_enumTypes[25].Descriptor() +} + +func (ViewCheckOption) Type() protoreflect.EnumType { + return &file_pg_query_proto_enumTypes[25] +} + +func (x ViewCheckOption) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use ViewCheckOption.Descriptor instead. +func (ViewCheckOption) EnumDescriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{25} +} + +type ClusterOption int32 + +const ( + ClusterOption_CLUSTER_OPTION_UNDEFINED ClusterOption = 0 + ClusterOption_CLUOPT_RECHECK ClusterOption = 1 + ClusterOption_CLUOPT_VERBOSE ClusterOption = 2 +) + +// Enum value maps for ClusterOption. +var ( + ClusterOption_name = map[int32]string{ + 0: "CLUSTER_OPTION_UNDEFINED", + 1: "CLUOPT_RECHECK", + 2: "CLUOPT_VERBOSE", + } + ClusterOption_value = map[string]int32{ + "CLUSTER_OPTION_UNDEFINED": 0, + "CLUOPT_RECHECK": 1, + "CLUOPT_VERBOSE": 2, + } +) + +func (x ClusterOption) Enum() *ClusterOption { + p := new(ClusterOption) + *p = x + return p +} + +func (x ClusterOption) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (ClusterOption) Descriptor() protoreflect.EnumDescriptor { + return file_pg_query_proto_enumTypes[26].Descriptor() +} + +func (ClusterOption) Type() protoreflect.EnumType { + return &file_pg_query_proto_enumTypes[26] +} + +func (x ClusterOption) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use ClusterOption.Descriptor instead. +func (ClusterOption) EnumDescriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{26} +} + +type DiscardMode int32 + +const ( + DiscardMode_DISCARD_MODE_UNDEFINED DiscardMode = 0 + DiscardMode_DISCARD_ALL DiscardMode = 1 + DiscardMode_DISCARD_PLANS DiscardMode = 2 + DiscardMode_DISCARD_SEQUENCES DiscardMode = 3 + DiscardMode_DISCARD_TEMP DiscardMode = 4 +) + +// Enum value maps for DiscardMode. +var ( + DiscardMode_name = map[int32]string{ + 0: "DISCARD_MODE_UNDEFINED", + 1: "DISCARD_ALL", + 2: "DISCARD_PLANS", + 3: "DISCARD_SEQUENCES", + 4: "DISCARD_TEMP", + } + DiscardMode_value = map[string]int32{ + "DISCARD_MODE_UNDEFINED": 0, + "DISCARD_ALL": 1, + "DISCARD_PLANS": 2, + "DISCARD_SEQUENCES": 3, + "DISCARD_TEMP": 4, + } +) + +func (x DiscardMode) Enum() *DiscardMode { + p := new(DiscardMode) + *p = x + return p +} + +func (x DiscardMode) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (DiscardMode) Descriptor() protoreflect.EnumDescriptor { + return file_pg_query_proto_enumTypes[27].Descriptor() +} + +func (DiscardMode) Type() protoreflect.EnumType { + return &file_pg_query_proto_enumTypes[27] +} + +func (x DiscardMode) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use DiscardMode.Descriptor instead. +func (DiscardMode) EnumDescriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{27} +} + +type ReindexObjectType int32 + +const ( + ReindexObjectType_REINDEX_OBJECT_TYPE_UNDEFINED ReindexObjectType = 0 + ReindexObjectType_REINDEX_OBJECT_INDEX ReindexObjectType = 1 + ReindexObjectType_REINDEX_OBJECT_TABLE ReindexObjectType = 2 + ReindexObjectType_REINDEX_OBJECT_SCHEMA ReindexObjectType = 3 + ReindexObjectType_REINDEX_OBJECT_SYSTEM ReindexObjectType = 4 + ReindexObjectType_REINDEX_OBJECT_DATABASE ReindexObjectType = 5 +) + +// Enum value maps for ReindexObjectType. +var ( + ReindexObjectType_name = map[int32]string{ + 0: "REINDEX_OBJECT_TYPE_UNDEFINED", + 1: "REINDEX_OBJECT_INDEX", + 2: "REINDEX_OBJECT_TABLE", + 3: "REINDEX_OBJECT_SCHEMA", + 4: "REINDEX_OBJECT_SYSTEM", + 5: "REINDEX_OBJECT_DATABASE", + } + ReindexObjectType_value = map[string]int32{ + "REINDEX_OBJECT_TYPE_UNDEFINED": 0, + "REINDEX_OBJECT_INDEX": 1, + "REINDEX_OBJECT_TABLE": 2, + "REINDEX_OBJECT_SCHEMA": 3, + "REINDEX_OBJECT_SYSTEM": 4, + "REINDEX_OBJECT_DATABASE": 5, + } +) + +func (x ReindexObjectType) Enum() *ReindexObjectType { + p := new(ReindexObjectType) + *p = x + return p +} + +func (x ReindexObjectType) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (ReindexObjectType) Descriptor() protoreflect.EnumDescriptor { + return file_pg_query_proto_enumTypes[28].Descriptor() +} + +func (ReindexObjectType) Type() protoreflect.EnumType { + return &file_pg_query_proto_enumTypes[28] +} + +func (x ReindexObjectType) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use ReindexObjectType.Descriptor instead. +func (ReindexObjectType) EnumDescriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{28} +} + +type AlterTSConfigType int32 + +const ( + AlterTSConfigType_ALTER_TSCONFIG_TYPE_UNDEFINED AlterTSConfigType = 0 + AlterTSConfigType_ALTER_TSCONFIG_ADD_MAPPING AlterTSConfigType = 1 + AlterTSConfigType_ALTER_TSCONFIG_ALTER_MAPPING_FOR_TOKEN AlterTSConfigType = 2 + AlterTSConfigType_ALTER_TSCONFIG_REPLACE_DICT AlterTSConfigType = 3 + AlterTSConfigType_ALTER_TSCONFIG_REPLACE_DICT_FOR_TOKEN AlterTSConfigType = 4 + AlterTSConfigType_ALTER_TSCONFIG_DROP_MAPPING AlterTSConfigType = 5 +) + +// Enum value maps for AlterTSConfigType. +var ( + AlterTSConfigType_name = map[int32]string{ + 0: "ALTER_TSCONFIG_TYPE_UNDEFINED", + 1: "ALTER_TSCONFIG_ADD_MAPPING", + 2: "ALTER_TSCONFIG_ALTER_MAPPING_FOR_TOKEN", + 3: "ALTER_TSCONFIG_REPLACE_DICT", + 4: "ALTER_TSCONFIG_REPLACE_DICT_FOR_TOKEN", + 5: "ALTER_TSCONFIG_DROP_MAPPING", + } + AlterTSConfigType_value = map[string]int32{ + "ALTER_TSCONFIG_TYPE_UNDEFINED": 0, + "ALTER_TSCONFIG_ADD_MAPPING": 1, + "ALTER_TSCONFIG_ALTER_MAPPING_FOR_TOKEN": 2, + "ALTER_TSCONFIG_REPLACE_DICT": 3, + "ALTER_TSCONFIG_REPLACE_DICT_FOR_TOKEN": 4, + "ALTER_TSCONFIG_DROP_MAPPING": 5, + } +) + +func (x AlterTSConfigType) Enum() *AlterTSConfigType { + p := new(AlterTSConfigType) + *p = x + return p +} + +func (x AlterTSConfigType) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (AlterTSConfigType) Descriptor() protoreflect.EnumDescriptor { + return file_pg_query_proto_enumTypes[29].Descriptor() +} + +func (AlterTSConfigType) Type() protoreflect.EnumType { + return &file_pg_query_proto_enumTypes[29] +} + +func (x AlterTSConfigType) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use AlterTSConfigType.Descriptor instead. +func (AlterTSConfigType) EnumDescriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{29} +} + +type AlterSubscriptionType int32 + +const ( + AlterSubscriptionType_ALTER_SUBSCRIPTION_TYPE_UNDEFINED AlterSubscriptionType = 0 + AlterSubscriptionType_ALTER_SUBSCRIPTION_OPTIONS AlterSubscriptionType = 1 + AlterSubscriptionType_ALTER_SUBSCRIPTION_CONNECTION AlterSubscriptionType = 2 + AlterSubscriptionType_ALTER_SUBSCRIPTION_PUBLICATION AlterSubscriptionType = 3 + AlterSubscriptionType_ALTER_SUBSCRIPTION_REFRESH AlterSubscriptionType = 4 + AlterSubscriptionType_ALTER_SUBSCRIPTION_ENABLED AlterSubscriptionType = 5 +) + +// Enum value maps for AlterSubscriptionType. +var ( + AlterSubscriptionType_name = map[int32]string{ + 0: "ALTER_SUBSCRIPTION_TYPE_UNDEFINED", + 1: "ALTER_SUBSCRIPTION_OPTIONS", + 2: "ALTER_SUBSCRIPTION_CONNECTION", + 3: "ALTER_SUBSCRIPTION_PUBLICATION", + 4: "ALTER_SUBSCRIPTION_REFRESH", + 5: "ALTER_SUBSCRIPTION_ENABLED", + } + AlterSubscriptionType_value = map[string]int32{ + "ALTER_SUBSCRIPTION_TYPE_UNDEFINED": 0, + "ALTER_SUBSCRIPTION_OPTIONS": 1, + "ALTER_SUBSCRIPTION_CONNECTION": 2, + "ALTER_SUBSCRIPTION_PUBLICATION": 3, + "ALTER_SUBSCRIPTION_REFRESH": 4, + "ALTER_SUBSCRIPTION_ENABLED": 5, + } +) + +func (x AlterSubscriptionType) Enum() *AlterSubscriptionType { + p := new(AlterSubscriptionType) + *p = x + return p +} + +func (x AlterSubscriptionType) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (AlterSubscriptionType) Descriptor() protoreflect.EnumDescriptor { + return file_pg_query_proto_enumTypes[30].Descriptor() +} + +func (AlterSubscriptionType) Type() protoreflect.EnumType { + return &file_pg_query_proto_enumTypes[30] +} + +func (x AlterSubscriptionType) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use AlterSubscriptionType.Descriptor instead. +func (AlterSubscriptionType) EnumDescriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{30} +} + +type OnCommitAction int32 + +const ( + OnCommitAction_ON_COMMIT_ACTION_UNDEFINED OnCommitAction = 0 + OnCommitAction_ONCOMMIT_NOOP OnCommitAction = 1 + OnCommitAction_ONCOMMIT_PRESERVE_ROWS OnCommitAction = 2 + OnCommitAction_ONCOMMIT_DELETE_ROWS OnCommitAction = 3 + OnCommitAction_ONCOMMIT_DROP OnCommitAction = 4 +) + +// Enum value maps for OnCommitAction. +var ( + OnCommitAction_name = map[int32]string{ + 0: "ON_COMMIT_ACTION_UNDEFINED", + 1: "ONCOMMIT_NOOP", + 2: "ONCOMMIT_PRESERVE_ROWS", + 3: "ONCOMMIT_DELETE_ROWS", + 4: "ONCOMMIT_DROP", + } + OnCommitAction_value = map[string]int32{ + "ON_COMMIT_ACTION_UNDEFINED": 0, + "ONCOMMIT_NOOP": 1, + "ONCOMMIT_PRESERVE_ROWS": 2, + "ONCOMMIT_DELETE_ROWS": 3, + "ONCOMMIT_DROP": 4, + } +) + +func (x OnCommitAction) Enum() *OnCommitAction { + p := new(OnCommitAction) + *p = x + return p +} + +func (x OnCommitAction) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (OnCommitAction) Descriptor() protoreflect.EnumDescriptor { + return file_pg_query_proto_enumTypes[31].Descriptor() +} + +func (OnCommitAction) Type() protoreflect.EnumType { + return &file_pg_query_proto_enumTypes[31] +} + +func (x OnCommitAction) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use OnCommitAction.Descriptor instead. +func (OnCommitAction) EnumDescriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{31} +} + +type ParamKind int32 + +const ( + ParamKind_PARAM_KIND_UNDEFINED ParamKind = 0 + ParamKind_PARAM_EXTERN ParamKind = 1 + ParamKind_PARAM_EXEC ParamKind = 2 + ParamKind_PARAM_SUBLINK ParamKind = 3 + ParamKind_PARAM_MULTIEXPR ParamKind = 4 +) + +// Enum value maps for ParamKind. +var ( + ParamKind_name = map[int32]string{ + 0: "PARAM_KIND_UNDEFINED", + 1: "PARAM_EXTERN", + 2: "PARAM_EXEC", + 3: "PARAM_SUBLINK", + 4: "PARAM_MULTIEXPR", + } + ParamKind_value = map[string]int32{ + "PARAM_KIND_UNDEFINED": 0, + "PARAM_EXTERN": 1, + "PARAM_EXEC": 2, + "PARAM_SUBLINK": 3, + "PARAM_MULTIEXPR": 4, + } +) + +func (x ParamKind) Enum() *ParamKind { + p := new(ParamKind) + *p = x + return p +} + +func (x ParamKind) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (ParamKind) Descriptor() protoreflect.EnumDescriptor { + return file_pg_query_proto_enumTypes[32].Descriptor() +} + +func (ParamKind) Type() protoreflect.EnumType { + return &file_pg_query_proto_enumTypes[32] +} + +func (x ParamKind) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use ParamKind.Descriptor instead. +func (ParamKind) EnumDescriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{32} +} + +type CoercionContext int32 + +const ( + CoercionContext_COERCION_CONTEXT_UNDEFINED CoercionContext = 0 + CoercionContext_COERCION_IMPLICIT CoercionContext = 1 + CoercionContext_COERCION_ASSIGNMENT CoercionContext = 2 + CoercionContext_COERCION_EXPLICIT CoercionContext = 3 +) + +// Enum value maps for CoercionContext. +var ( + CoercionContext_name = map[int32]string{ + 0: "COERCION_CONTEXT_UNDEFINED", + 1: "COERCION_IMPLICIT", + 2: "COERCION_ASSIGNMENT", + 3: "COERCION_EXPLICIT", + } + CoercionContext_value = map[string]int32{ + "COERCION_CONTEXT_UNDEFINED": 0, + "COERCION_IMPLICIT": 1, + "COERCION_ASSIGNMENT": 2, + "COERCION_EXPLICIT": 3, + } +) + +func (x CoercionContext) Enum() *CoercionContext { + p := new(CoercionContext) + *p = x + return p +} + +func (x CoercionContext) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (CoercionContext) Descriptor() protoreflect.EnumDescriptor { + return file_pg_query_proto_enumTypes[33].Descriptor() +} + +func (CoercionContext) Type() protoreflect.EnumType { + return &file_pg_query_proto_enumTypes[33] +} + +func (x CoercionContext) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use CoercionContext.Descriptor instead. +func (CoercionContext) EnumDescriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{33} +} + +type CoercionForm int32 + +const ( + CoercionForm_COERCION_FORM_UNDEFINED CoercionForm = 0 + CoercionForm_COERCE_EXPLICIT_CALL CoercionForm = 1 + CoercionForm_COERCE_EXPLICIT_CAST CoercionForm = 2 + CoercionForm_COERCE_IMPLICIT_CAST CoercionForm = 3 +) + +// Enum value maps for CoercionForm. +var ( + CoercionForm_name = map[int32]string{ + 0: "COERCION_FORM_UNDEFINED", + 1: "COERCE_EXPLICIT_CALL", + 2: "COERCE_EXPLICIT_CAST", + 3: "COERCE_IMPLICIT_CAST", + } + CoercionForm_value = map[string]int32{ + "COERCION_FORM_UNDEFINED": 0, + "COERCE_EXPLICIT_CALL": 1, + "COERCE_EXPLICIT_CAST": 2, + "COERCE_IMPLICIT_CAST": 3, + } +) + +func (x CoercionForm) Enum() *CoercionForm { + p := new(CoercionForm) + *p = x + return p +} + +func (x CoercionForm) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (CoercionForm) Descriptor() protoreflect.EnumDescriptor { + return file_pg_query_proto_enumTypes[34].Descriptor() +} + +func (CoercionForm) Type() protoreflect.EnumType { + return &file_pg_query_proto_enumTypes[34] +} + +func (x CoercionForm) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use CoercionForm.Descriptor instead. +func (CoercionForm) EnumDescriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{34} +} + +type BoolExprType int32 + +const ( + BoolExprType_BOOL_EXPR_TYPE_UNDEFINED BoolExprType = 0 + BoolExprType_AND_EXPR BoolExprType = 1 + BoolExprType_OR_EXPR BoolExprType = 2 + BoolExprType_NOT_EXPR BoolExprType = 3 +) + +// Enum value maps for BoolExprType. +var ( + BoolExprType_name = map[int32]string{ + 0: "BOOL_EXPR_TYPE_UNDEFINED", + 1: "AND_EXPR", + 2: "OR_EXPR", + 3: "NOT_EXPR", + } + BoolExprType_value = map[string]int32{ + "BOOL_EXPR_TYPE_UNDEFINED": 0, + "AND_EXPR": 1, + "OR_EXPR": 2, + "NOT_EXPR": 3, + } +) + +func (x BoolExprType) Enum() *BoolExprType { + p := new(BoolExprType) + *p = x + return p +} + +func (x BoolExprType) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (BoolExprType) Descriptor() protoreflect.EnumDescriptor { + return file_pg_query_proto_enumTypes[35].Descriptor() +} + +func (BoolExprType) Type() protoreflect.EnumType { + return &file_pg_query_proto_enumTypes[35] +} + +func (x BoolExprType) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use BoolExprType.Descriptor instead. +func (BoolExprType) EnumDescriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{35} +} + +type SubLinkType int32 + +const ( + SubLinkType_SUB_LINK_TYPE_UNDEFINED SubLinkType = 0 + SubLinkType_EXISTS_SUBLINK SubLinkType = 1 + SubLinkType_ALL_SUBLINK SubLinkType = 2 + SubLinkType_ANY_SUBLINK SubLinkType = 3 + SubLinkType_ROWCOMPARE_SUBLINK SubLinkType = 4 + SubLinkType_EXPR_SUBLINK SubLinkType = 5 + SubLinkType_MULTIEXPR_SUBLINK SubLinkType = 6 + SubLinkType_ARRAY_SUBLINK SubLinkType = 7 + SubLinkType_CTE_SUBLINK SubLinkType = 8 +) + +// Enum value maps for SubLinkType. +var ( + SubLinkType_name = map[int32]string{ + 0: "SUB_LINK_TYPE_UNDEFINED", + 1: "EXISTS_SUBLINK", + 2: "ALL_SUBLINK", + 3: "ANY_SUBLINK", + 4: "ROWCOMPARE_SUBLINK", + 5: "EXPR_SUBLINK", + 6: "MULTIEXPR_SUBLINK", + 7: "ARRAY_SUBLINK", + 8: "CTE_SUBLINK", + } + SubLinkType_value = map[string]int32{ + "SUB_LINK_TYPE_UNDEFINED": 0, + "EXISTS_SUBLINK": 1, + "ALL_SUBLINK": 2, + "ANY_SUBLINK": 3, + "ROWCOMPARE_SUBLINK": 4, + "EXPR_SUBLINK": 5, + "MULTIEXPR_SUBLINK": 6, + "ARRAY_SUBLINK": 7, + "CTE_SUBLINK": 8, + } +) + +func (x SubLinkType) Enum() *SubLinkType { + p := new(SubLinkType) + *p = x + return p +} + +func (x SubLinkType) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (SubLinkType) Descriptor() protoreflect.EnumDescriptor { + return file_pg_query_proto_enumTypes[36].Descriptor() +} + +func (SubLinkType) Type() protoreflect.EnumType { + return &file_pg_query_proto_enumTypes[36] +} + +func (x SubLinkType) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use SubLinkType.Descriptor instead. +func (SubLinkType) EnumDescriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{36} +} + +type RowCompareType int32 + +const ( + RowCompareType_ROW_COMPARE_TYPE_UNDEFINED RowCompareType = 0 + RowCompareType_ROWCOMPARE_LT RowCompareType = 1 + RowCompareType_ROWCOMPARE_LE RowCompareType = 2 + RowCompareType_ROWCOMPARE_EQ RowCompareType = 3 + RowCompareType_ROWCOMPARE_GE RowCompareType = 4 + RowCompareType_ROWCOMPARE_GT RowCompareType = 5 + RowCompareType_ROWCOMPARE_NE RowCompareType = 6 +) + +// Enum value maps for RowCompareType. +var ( + RowCompareType_name = map[int32]string{ + 0: "ROW_COMPARE_TYPE_UNDEFINED", + 1: "ROWCOMPARE_LT", + 2: "ROWCOMPARE_LE", + 3: "ROWCOMPARE_EQ", + 4: "ROWCOMPARE_GE", + 5: "ROWCOMPARE_GT", + 6: "ROWCOMPARE_NE", + } + RowCompareType_value = map[string]int32{ + "ROW_COMPARE_TYPE_UNDEFINED": 0, + "ROWCOMPARE_LT": 1, + "ROWCOMPARE_LE": 2, + "ROWCOMPARE_EQ": 3, + "ROWCOMPARE_GE": 4, + "ROWCOMPARE_GT": 5, + "ROWCOMPARE_NE": 6, + } +) + +func (x RowCompareType) Enum() *RowCompareType { + p := new(RowCompareType) + *p = x + return p +} + +func (x RowCompareType) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (RowCompareType) Descriptor() protoreflect.EnumDescriptor { + return file_pg_query_proto_enumTypes[37].Descriptor() +} + +func (RowCompareType) Type() protoreflect.EnumType { + return &file_pg_query_proto_enumTypes[37] +} + +func (x RowCompareType) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use RowCompareType.Descriptor instead. +func (RowCompareType) EnumDescriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{37} +} + +type MinMaxOp int32 + +const ( + MinMaxOp_MIN_MAX_OP_UNDEFINED MinMaxOp = 0 + MinMaxOp_IS_GREATEST MinMaxOp = 1 + MinMaxOp_IS_LEAST MinMaxOp = 2 +) + +// Enum value maps for MinMaxOp. +var ( + MinMaxOp_name = map[int32]string{ + 0: "MIN_MAX_OP_UNDEFINED", + 1: "IS_GREATEST", + 2: "IS_LEAST", + } + MinMaxOp_value = map[string]int32{ + "MIN_MAX_OP_UNDEFINED": 0, + "IS_GREATEST": 1, + "IS_LEAST": 2, + } +) + +func (x MinMaxOp) Enum() *MinMaxOp { + p := new(MinMaxOp) + *p = x + return p +} + +func (x MinMaxOp) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (MinMaxOp) Descriptor() protoreflect.EnumDescriptor { + return file_pg_query_proto_enumTypes[38].Descriptor() +} + +func (MinMaxOp) Type() protoreflect.EnumType { + return &file_pg_query_proto_enumTypes[38] +} + +func (x MinMaxOp) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use MinMaxOp.Descriptor instead. +func (MinMaxOp) EnumDescriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{38} +} + +type SQLValueFunctionOp int32 + +const ( + SQLValueFunctionOp_SQLVALUE_FUNCTION_OP_UNDEFINED SQLValueFunctionOp = 0 + SQLValueFunctionOp_SVFOP_CURRENT_DATE SQLValueFunctionOp = 1 + SQLValueFunctionOp_SVFOP_CURRENT_TIME SQLValueFunctionOp = 2 + SQLValueFunctionOp_SVFOP_CURRENT_TIME_N SQLValueFunctionOp = 3 + SQLValueFunctionOp_SVFOP_CURRENT_TIMESTAMP SQLValueFunctionOp = 4 + SQLValueFunctionOp_SVFOP_CURRENT_TIMESTAMP_N SQLValueFunctionOp = 5 + SQLValueFunctionOp_SVFOP_LOCALTIME SQLValueFunctionOp = 6 + SQLValueFunctionOp_SVFOP_LOCALTIME_N SQLValueFunctionOp = 7 + SQLValueFunctionOp_SVFOP_LOCALTIMESTAMP SQLValueFunctionOp = 8 + SQLValueFunctionOp_SVFOP_LOCALTIMESTAMP_N SQLValueFunctionOp = 9 + SQLValueFunctionOp_SVFOP_CURRENT_ROLE SQLValueFunctionOp = 10 + SQLValueFunctionOp_SVFOP_CURRENT_USER SQLValueFunctionOp = 11 + SQLValueFunctionOp_SVFOP_USER SQLValueFunctionOp = 12 + SQLValueFunctionOp_SVFOP_SESSION_USER SQLValueFunctionOp = 13 + SQLValueFunctionOp_SVFOP_CURRENT_CATALOG SQLValueFunctionOp = 14 + SQLValueFunctionOp_SVFOP_CURRENT_SCHEMA SQLValueFunctionOp = 15 +) + +// Enum value maps for SQLValueFunctionOp. +var ( + SQLValueFunctionOp_name = map[int32]string{ + 0: "SQLVALUE_FUNCTION_OP_UNDEFINED", + 1: "SVFOP_CURRENT_DATE", + 2: "SVFOP_CURRENT_TIME", + 3: "SVFOP_CURRENT_TIME_N", + 4: "SVFOP_CURRENT_TIMESTAMP", + 5: "SVFOP_CURRENT_TIMESTAMP_N", + 6: "SVFOP_LOCALTIME", + 7: "SVFOP_LOCALTIME_N", + 8: "SVFOP_LOCALTIMESTAMP", + 9: "SVFOP_LOCALTIMESTAMP_N", + 10: "SVFOP_CURRENT_ROLE", + 11: "SVFOP_CURRENT_USER", + 12: "SVFOP_USER", + 13: "SVFOP_SESSION_USER", + 14: "SVFOP_CURRENT_CATALOG", + 15: "SVFOP_CURRENT_SCHEMA", + } + SQLValueFunctionOp_value = map[string]int32{ + "SQLVALUE_FUNCTION_OP_UNDEFINED": 0, + "SVFOP_CURRENT_DATE": 1, + "SVFOP_CURRENT_TIME": 2, + "SVFOP_CURRENT_TIME_N": 3, + "SVFOP_CURRENT_TIMESTAMP": 4, + "SVFOP_CURRENT_TIMESTAMP_N": 5, + "SVFOP_LOCALTIME": 6, + "SVFOP_LOCALTIME_N": 7, + "SVFOP_LOCALTIMESTAMP": 8, + "SVFOP_LOCALTIMESTAMP_N": 9, + "SVFOP_CURRENT_ROLE": 10, + "SVFOP_CURRENT_USER": 11, + "SVFOP_USER": 12, + "SVFOP_SESSION_USER": 13, + "SVFOP_CURRENT_CATALOG": 14, + "SVFOP_CURRENT_SCHEMA": 15, + } +) + +func (x SQLValueFunctionOp) Enum() *SQLValueFunctionOp { + p := new(SQLValueFunctionOp) + *p = x + return p +} + +func (x SQLValueFunctionOp) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (SQLValueFunctionOp) Descriptor() protoreflect.EnumDescriptor { + return file_pg_query_proto_enumTypes[39].Descriptor() +} + +func (SQLValueFunctionOp) Type() protoreflect.EnumType { + return &file_pg_query_proto_enumTypes[39] +} + +func (x SQLValueFunctionOp) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use SQLValueFunctionOp.Descriptor instead. +func (SQLValueFunctionOp) EnumDescriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{39} +} + +type XmlExprOp int32 + +const ( + XmlExprOp_XML_EXPR_OP_UNDEFINED XmlExprOp = 0 + XmlExprOp_IS_XMLCONCAT XmlExprOp = 1 + XmlExprOp_IS_XMLELEMENT XmlExprOp = 2 + XmlExprOp_IS_XMLFOREST XmlExprOp = 3 + XmlExprOp_IS_XMLPARSE XmlExprOp = 4 + XmlExprOp_IS_XMLPI XmlExprOp = 5 + XmlExprOp_IS_XMLROOT XmlExprOp = 6 + XmlExprOp_IS_XMLSERIALIZE XmlExprOp = 7 + XmlExprOp_IS_DOCUMENT XmlExprOp = 8 +) + +// Enum value maps for XmlExprOp. +var ( + XmlExprOp_name = map[int32]string{ + 0: "XML_EXPR_OP_UNDEFINED", + 1: "IS_XMLCONCAT", + 2: "IS_XMLELEMENT", + 3: "IS_XMLFOREST", + 4: "IS_XMLPARSE", + 5: "IS_XMLPI", + 6: "IS_XMLROOT", + 7: "IS_XMLSERIALIZE", + 8: "IS_DOCUMENT", + } + XmlExprOp_value = map[string]int32{ + "XML_EXPR_OP_UNDEFINED": 0, + "IS_XMLCONCAT": 1, + "IS_XMLELEMENT": 2, + "IS_XMLFOREST": 3, + "IS_XMLPARSE": 4, + "IS_XMLPI": 5, + "IS_XMLROOT": 6, + "IS_XMLSERIALIZE": 7, + "IS_DOCUMENT": 8, + } +) + +func (x XmlExprOp) Enum() *XmlExprOp { + p := new(XmlExprOp) + *p = x + return p +} + +func (x XmlExprOp) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (XmlExprOp) Descriptor() protoreflect.EnumDescriptor { + return file_pg_query_proto_enumTypes[40].Descriptor() +} + +func (XmlExprOp) Type() protoreflect.EnumType { + return &file_pg_query_proto_enumTypes[40] +} + +func (x XmlExprOp) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use XmlExprOp.Descriptor instead. +func (XmlExprOp) EnumDescriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{40} +} + +type XmlOptionType int32 + +const ( + XmlOptionType_XML_OPTION_TYPE_UNDEFINED XmlOptionType = 0 + XmlOptionType_XMLOPTION_DOCUMENT XmlOptionType = 1 + XmlOptionType_XMLOPTION_CONTENT XmlOptionType = 2 +) + +// Enum value maps for XmlOptionType. +var ( + XmlOptionType_name = map[int32]string{ + 0: "XML_OPTION_TYPE_UNDEFINED", + 1: "XMLOPTION_DOCUMENT", + 2: "XMLOPTION_CONTENT", + } + XmlOptionType_value = map[string]int32{ + "XML_OPTION_TYPE_UNDEFINED": 0, + "XMLOPTION_DOCUMENT": 1, + "XMLOPTION_CONTENT": 2, + } +) + +func (x XmlOptionType) Enum() *XmlOptionType { + p := new(XmlOptionType) + *p = x + return p +} + +func (x XmlOptionType) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (XmlOptionType) Descriptor() protoreflect.EnumDescriptor { + return file_pg_query_proto_enumTypes[41].Descriptor() +} + +func (XmlOptionType) Type() protoreflect.EnumType { + return &file_pg_query_proto_enumTypes[41] +} + +func (x XmlOptionType) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use XmlOptionType.Descriptor instead. +func (XmlOptionType) EnumDescriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{41} +} + +type NullTestType int32 + +const ( + NullTestType_NULL_TEST_TYPE_UNDEFINED NullTestType = 0 + NullTestType_IS_NULL NullTestType = 1 + NullTestType_IS_NOT_NULL NullTestType = 2 +) + +// Enum value maps for NullTestType. +var ( + NullTestType_name = map[int32]string{ + 0: "NULL_TEST_TYPE_UNDEFINED", + 1: "IS_NULL", + 2: "IS_NOT_NULL", + } + NullTestType_value = map[string]int32{ + "NULL_TEST_TYPE_UNDEFINED": 0, + "IS_NULL": 1, + "IS_NOT_NULL": 2, + } +) + +func (x NullTestType) Enum() *NullTestType { + p := new(NullTestType) + *p = x + return p +} + +func (x NullTestType) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (NullTestType) Descriptor() protoreflect.EnumDescriptor { + return file_pg_query_proto_enumTypes[42].Descriptor() +} + +func (NullTestType) Type() protoreflect.EnumType { + return &file_pg_query_proto_enumTypes[42] +} + +func (x NullTestType) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use NullTestType.Descriptor instead. +func (NullTestType) EnumDescriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{42} +} + +type BoolTestType int32 + +const ( + BoolTestType_BOOL_TEST_TYPE_UNDEFINED BoolTestType = 0 + BoolTestType_IS_TRUE BoolTestType = 1 + BoolTestType_IS_NOT_TRUE BoolTestType = 2 + BoolTestType_IS_FALSE BoolTestType = 3 + BoolTestType_IS_NOT_FALSE BoolTestType = 4 + BoolTestType_IS_UNKNOWN BoolTestType = 5 + BoolTestType_IS_NOT_UNKNOWN BoolTestType = 6 +) + +// Enum value maps for BoolTestType. +var ( + BoolTestType_name = map[int32]string{ + 0: "BOOL_TEST_TYPE_UNDEFINED", + 1: "IS_TRUE", + 2: "IS_NOT_TRUE", + 3: "IS_FALSE", + 4: "IS_NOT_FALSE", + 5: "IS_UNKNOWN", + 6: "IS_NOT_UNKNOWN", + } + BoolTestType_value = map[string]int32{ + "BOOL_TEST_TYPE_UNDEFINED": 0, + "IS_TRUE": 1, + "IS_NOT_TRUE": 2, + "IS_FALSE": 3, + "IS_NOT_FALSE": 4, + "IS_UNKNOWN": 5, + "IS_NOT_UNKNOWN": 6, + } +) + +func (x BoolTestType) Enum() *BoolTestType { + p := new(BoolTestType) + *p = x + return p +} + +func (x BoolTestType) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (BoolTestType) Descriptor() protoreflect.EnumDescriptor { + return file_pg_query_proto_enumTypes[43].Descriptor() +} + +func (BoolTestType) Type() protoreflect.EnumType { + return &file_pg_query_proto_enumTypes[43] +} + +func (x BoolTestType) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use BoolTestType.Descriptor instead. +func (BoolTestType) EnumDescriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{43} +} + +type CmdType int32 + +const ( + CmdType_CMD_TYPE_UNDEFINED CmdType = 0 + CmdType_CMD_UNKNOWN CmdType = 1 + CmdType_CMD_SELECT CmdType = 2 + CmdType_CMD_UPDATE CmdType = 3 + CmdType_CMD_INSERT CmdType = 4 + CmdType_CMD_DELETE CmdType = 5 + CmdType_CMD_UTILITY CmdType = 6 + CmdType_CMD_NOTHING CmdType = 7 +) + +// Enum value maps for CmdType. +var ( + CmdType_name = map[int32]string{ + 0: "CMD_TYPE_UNDEFINED", + 1: "CMD_UNKNOWN", + 2: "CMD_SELECT", + 3: "CMD_UPDATE", + 4: "CMD_INSERT", + 5: "CMD_DELETE", + 6: "CMD_UTILITY", + 7: "CMD_NOTHING", + } + CmdType_value = map[string]int32{ + "CMD_TYPE_UNDEFINED": 0, + "CMD_UNKNOWN": 1, + "CMD_SELECT": 2, + "CMD_UPDATE": 3, + "CMD_INSERT": 4, + "CMD_DELETE": 5, + "CMD_UTILITY": 6, + "CMD_NOTHING": 7, + } +) + +func (x CmdType) Enum() *CmdType { + p := new(CmdType) + *p = x + return p +} + +func (x CmdType) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (CmdType) Descriptor() protoreflect.EnumDescriptor { + return file_pg_query_proto_enumTypes[44].Descriptor() +} + +func (CmdType) Type() protoreflect.EnumType { + return &file_pg_query_proto_enumTypes[44] +} + +func (x CmdType) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use CmdType.Descriptor instead. +func (CmdType) EnumDescriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{44} +} + +type JoinType int32 + +const ( + JoinType_JOIN_TYPE_UNDEFINED JoinType = 0 + JoinType_JOIN_INNER JoinType = 1 + JoinType_JOIN_LEFT JoinType = 2 + JoinType_JOIN_FULL JoinType = 3 + JoinType_JOIN_RIGHT JoinType = 4 + JoinType_JOIN_SEMI JoinType = 5 + JoinType_JOIN_ANTI JoinType = 6 + JoinType_JOIN_UNIQUE_OUTER JoinType = 7 + JoinType_JOIN_UNIQUE_INNER JoinType = 8 +) + +// Enum value maps for JoinType. +var ( + JoinType_name = map[int32]string{ + 0: "JOIN_TYPE_UNDEFINED", + 1: "JOIN_INNER", + 2: "JOIN_LEFT", + 3: "JOIN_FULL", + 4: "JOIN_RIGHT", + 5: "JOIN_SEMI", + 6: "JOIN_ANTI", + 7: "JOIN_UNIQUE_OUTER", + 8: "JOIN_UNIQUE_INNER", + } + JoinType_value = map[string]int32{ + "JOIN_TYPE_UNDEFINED": 0, + "JOIN_INNER": 1, + "JOIN_LEFT": 2, + "JOIN_FULL": 3, + "JOIN_RIGHT": 4, + "JOIN_SEMI": 5, + "JOIN_ANTI": 6, + "JOIN_UNIQUE_OUTER": 7, + "JOIN_UNIQUE_INNER": 8, + } +) + +func (x JoinType) Enum() *JoinType { + p := new(JoinType) + *p = x + return p +} + +func (x JoinType) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (JoinType) Descriptor() protoreflect.EnumDescriptor { + return file_pg_query_proto_enumTypes[45].Descriptor() +} + +func (JoinType) Type() protoreflect.EnumType { + return &file_pg_query_proto_enumTypes[45] +} + +func (x JoinType) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use JoinType.Descriptor instead. +func (JoinType) EnumDescriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{45} +} + +type AggStrategy int32 + +const ( + AggStrategy_AGG_STRATEGY_UNDEFINED AggStrategy = 0 + AggStrategy_AGG_PLAIN AggStrategy = 1 + AggStrategy_AGG_SORTED AggStrategy = 2 + AggStrategy_AGG_HASHED AggStrategy = 3 + AggStrategy_AGG_MIXED AggStrategy = 4 +) + +// Enum value maps for AggStrategy. +var ( + AggStrategy_name = map[int32]string{ + 0: "AGG_STRATEGY_UNDEFINED", + 1: "AGG_PLAIN", + 2: "AGG_SORTED", + 3: "AGG_HASHED", + 4: "AGG_MIXED", + } + AggStrategy_value = map[string]int32{ + "AGG_STRATEGY_UNDEFINED": 0, + "AGG_PLAIN": 1, + "AGG_SORTED": 2, + "AGG_HASHED": 3, + "AGG_MIXED": 4, + } +) + +func (x AggStrategy) Enum() *AggStrategy { + p := new(AggStrategy) + *p = x + return p +} + +func (x AggStrategy) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (AggStrategy) Descriptor() protoreflect.EnumDescriptor { + return file_pg_query_proto_enumTypes[46].Descriptor() +} + +func (AggStrategy) Type() protoreflect.EnumType { + return &file_pg_query_proto_enumTypes[46] +} + +func (x AggStrategy) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use AggStrategy.Descriptor instead. +func (AggStrategy) EnumDescriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{46} +} + +type AggSplit int32 + +const ( + AggSplit_AGG_SPLIT_UNDEFINED AggSplit = 0 + AggSplit_AGGSPLIT_SIMPLE AggSplit = 1 + AggSplit_AGGSPLIT_INITIAL_SERIAL AggSplit = 2 + AggSplit_AGGSPLIT_FINAL_DESERIAL AggSplit = 3 +) + +// Enum value maps for AggSplit. +var ( + AggSplit_name = map[int32]string{ + 0: "AGG_SPLIT_UNDEFINED", + 1: "AGGSPLIT_SIMPLE", + 2: "AGGSPLIT_INITIAL_SERIAL", + 3: "AGGSPLIT_FINAL_DESERIAL", + } + AggSplit_value = map[string]int32{ + "AGG_SPLIT_UNDEFINED": 0, + "AGGSPLIT_SIMPLE": 1, + "AGGSPLIT_INITIAL_SERIAL": 2, + "AGGSPLIT_FINAL_DESERIAL": 3, + } +) + +func (x AggSplit) Enum() *AggSplit { + p := new(AggSplit) + *p = x + return p +} + +func (x AggSplit) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (AggSplit) Descriptor() protoreflect.EnumDescriptor { + return file_pg_query_proto_enumTypes[47].Descriptor() +} + +func (AggSplit) Type() protoreflect.EnumType { + return &file_pg_query_proto_enumTypes[47] +} + +func (x AggSplit) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use AggSplit.Descriptor instead. +func (AggSplit) EnumDescriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{47} +} + +type SetOpCmd int32 + +const ( + SetOpCmd_SET_OP_CMD_UNDEFINED SetOpCmd = 0 + SetOpCmd_SETOPCMD_INTERSECT SetOpCmd = 1 + SetOpCmd_SETOPCMD_INTERSECT_ALL SetOpCmd = 2 + SetOpCmd_SETOPCMD_EXCEPT SetOpCmd = 3 + SetOpCmd_SETOPCMD_EXCEPT_ALL SetOpCmd = 4 +) + +// Enum value maps for SetOpCmd. +var ( + SetOpCmd_name = map[int32]string{ + 0: "SET_OP_CMD_UNDEFINED", + 1: "SETOPCMD_INTERSECT", + 2: "SETOPCMD_INTERSECT_ALL", + 3: "SETOPCMD_EXCEPT", + 4: "SETOPCMD_EXCEPT_ALL", + } + SetOpCmd_value = map[string]int32{ + "SET_OP_CMD_UNDEFINED": 0, + "SETOPCMD_INTERSECT": 1, + "SETOPCMD_INTERSECT_ALL": 2, + "SETOPCMD_EXCEPT": 3, + "SETOPCMD_EXCEPT_ALL": 4, + } +) + +func (x SetOpCmd) Enum() *SetOpCmd { + p := new(SetOpCmd) + *p = x + return p +} + +func (x SetOpCmd) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (SetOpCmd) Descriptor() protoreflect.EnumDescriptor { + return file_pg_query_proto_enumTypes[48].Descriptor() +} + +func (SetOpCmd) Type() protoreflect.EnumType { + return &file_pg_query_proto_enumTypes[48] +} + +func (x SetOpCmd) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use SetOpCmd.Descriptor instead. +func (SetOpCmd) EnumDescriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{48} +} + +type SetOpStrategy int32 + +const ( + SetOpStrategy_SET_OP_STRATEGY_UNDEFINED SetOpStrategy = 0 + SetOpStrategy_SETOP_SORTED SetOpStrategy = 1 + SetOpStrategy_SETOP_HASHED SetOpStrategy = 2 +) + +// Enum value maps for SetOpStrategy. +var ( + SetOpStrategy_name = map[int32]string{ + 0: "SET_OP_STRATEGY_UNDEFINED", + 1: "SETOP_SORTED", + 2: "SETOP_HASHED", + } + SetOpStrategy_value = map[string]int32{ + "SET_OP_STRATEGY_UNDEFINED": 0, + "SETOP_SORTED": 1, + "SETOP_HASHED": 2, + } +) + +func (x SetOpStrategy) Enum() *SetOpStrategy { + p := new(SetOpStrategy) + *p = x + return p +} + +func (x SetOpStrategy) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (SetOpStrategy) Descriptor() protoreflect.EnumDescriptor { + return file_pg_query_proto_enumTypes[49].Descriptor() +} + +func (SetOpStrategy) Type() protoreflect.EnumType { + return &file_pg_query_proto_enumTypes[49] +} + +func (x SetOpStrategy) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use SetOpStrategy.Descriptor instead. +func (SetOpStrategy) EnumDescriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{49} +} + +type OnConflictAction int32 + +const ( + OnConflictAction_ON_CONFLICT_ACTION_UNDEFINED OnConflictAction = 0 + OnConflictAction_ONCONFLICT_NONE OnConflictAction = 1 + OnConflictAction_ONCONFLICT_NOTHING OnConflictAction = 2 + OnConflictAction_ONCONFLICT_UPDATE OnConflictAction = 3 +) + +// Enum value maps for OnConflictAction. +var ( + OnConflictAction_name = map[int32]string{ + 0: "ON_CONFLICT_ACTION_UNDEFINED", + 1: "ONCONFLICT_NONE", + 2: "ONCONFLICT_NOTHING", + 3: "ONCONFLICT_UPDATE", + } + OnConflictAction_value = map[string]int32{ + "ON_CONFLICT_ACTION_UNDEFINED": 0, + "ONCONFLICT_NONE": 1, + "ONCONFLICT_NOTHING": 2, + "ONCONFLICT_UPDATE": 3, + } +) + +func (x OnConflictAction) Enum() *OnConflictAction { + p := new(OnConflictAction) + *p = x + return p +} + +func (x OnConflictAction) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (OnConflictAction) Descriptor() protoreflect.EnumDescriptor { + return file_pg_query_proto_enumTypes[50].Descriptor() +} + +func (OnConflictAction) Type() protoreflect.EnumType { + return &file_pg_query_proto_enumTypes[50] +} + +func (x OnConflictAction) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use OnConflictAction.Descriptor instead. +func (OnConflictAction) EnumDescriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{50} +} + +type LimitOption int32 + +const ( + LimitOption_LIMIT_OPTION_UNDEFINED LimitOption = 0 + LimitOption_LIMIT_OPTION_DEFAULT LimitOption = 1 + LimitOption_LIMIT_OPTION_COUNT LimitOption = 2 + LimitOption_LIMIT_OPTION_WITH_TIES LimitOption = 3 +) + +// Enum value maps for LimitOption. +var ( + LimitOption_name = map[int32]string{ + 0: "LIMIT_OPTION_UNDEFINED", + 1: "LIMIT_OPTION_DEFAULT", + 2: "LIMIT_OPTION_COUNT", + 3: "LIMIT_OPTION_WITH_TIES", + } + LimitOption_value = map[string]int32{ + "LIMIT_OPTION_UNDEFINED": 0, + "LIMIT_OPTION_DEFAULT": 1, + "LIMIT_OPTION_COUNT": 2, + "LIMIT_OPTION_WITH_TIES": 3, + } +) + +func (x LimitOption) Enum() *LimitOption { + p := new(LimitOption) + *p = x + return p +} + +func (x LimitOption) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (LimitOption) Descriptor() protoreflect.EnumDescriptor { + return file_pg_query_proto_enumTypes[51].Descriptor() +} + +func (LimitOption) Type() protoreflect.EnumType { + return &file_pg_query_proto_enumTypes[51] +} + +func (x LimitOption) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use LimitOption.Descriptor instead. +func (LimitOption) EnumDescriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{51} +} + +type LockClauseStrength int32 + +const ( + LockClauseStrength_LOCK_CLAUSE_STRENGTH_UNDEFINED LockClauseStrength = 0 + LockClauseStrength_LCS_NONE LockClauseStrength = 1 + LockClauseStrength_LCS_FORKEYSHARE LockClauseStrength = 2 + LockClauseStrength_LCS_FORSHARE LockClauseStrength = 3 + LockClauseStrength_LCS_FORNOKEYUPDATE LockClauseStrength = 4 + LockClauseStrength_LCS_FORUPDATE LockClauseStrength = 5 +) + +// Enum value maps for LockClauseStrength. +var ( + LockClauseStrength_name = map[int32]string{ + 0: "LOCK_CLAUSE_STRENGTH_UNDEFINED", + 1: "LCS_NONE", + 2: "LCS_FORKEYSHARE", + 3: "LCS_FORSHARE", + 4: "LCS_FORNOKEYUPDATE", + 5: "LCS_FORUPDATE", + } + LockClauseStrength_value = map[string]int32{ + "LOCK_CLAUSE_STRENGTH_UNDEFINED": 0, + "LCS_NONE": 1, + "LCS_FORKEYSHARE": 2, + "LCS_FORSHARE": 3, + "LCS_FORNOKEYUPDATE": 4, + "LCS_FORUPDATE": 5, + } +) + +func (x LockClauseStrength) Enum() *LockClauseStrength { + p := new(LockClauseStrength) + *p = x + return p +} + +func (x LockClauseStrength) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (LockClauseStrength) Descriptor() protoreflect.EnumDescriptor { + return file_pg_query_proto_enumTypes[52].Descriptor() +} + +func (LockClauseStrength) Type() protoreflect.EnumType { + return &file_pg_query_proto_enumTypes[52] +} + +func (x LockClauseStrength) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use LockClauseStrength.Descriptor instead. +func (LockClauseStrength) EnumDescriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{52} +} + +type LockWaitPolicy int32 + +const ( + LockWaitPolicy_LOCK_WAIT_POLICY_UNDEFINED LockWaitPolicy = 0 + LockWaitPolicy_LockWaitBlock LockWaitPolicy = 1 + LockWaitPolicy_LockWaitSkip LockWaitPolicy = 2 + LockWaitPolicy_LockWaitError LockWaitPolicy = 3 +) + +// Enum value maps for LockWaitPolicy. +var ( + LockWaitPolicy_name = map[int32]string{ + 0: "LOCK_WAIT_POLICY_UNDEFINED", + 1: "LockWaitBlock", + 2: "LockWaitSkip", + 3: "LockWaitError", + } + LockWaitPolicy_value = map[string]int32{ + "LOCK_WAIT_POLICY_UNDEFINED": 0, + "LockWaitBlock": 1, + "LockWaitSkip": 2, + "LockWaitError": 3, + } +) + +func (x LockWaitPolicy) Enum() *LockWaitPolicy { + p := new(LockWaitPolicy) + *p = x + return p +} + +func (x LockWaitPolicy) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (LockWaitPolicy) Descriptor() protoreflect.EnumDescriptor { + return file_pg_query_proto_enumTypes[53].Descriptor() +} + +func (LockWaitPolicy) Type() protoreflect.EnumType { + return &file_pg_query_proto_enumTypes[53] +} + +func (x LockWaitPolicy) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use LockWaitPolicy.Descriptor instead. +func (LockWaitPolicy) EnumDescriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{53} +} + +type LockTupleMode int32 + +const ( + LockTupleMode_LOCK_TUPLE_MODE_UNDEFINED LockTupleMode = 0 + LockTupleMode_LockTupleKeyShare LockTupleMode = 1 + LockTupleMode_LockTupleShare LockTupleMode = 2 + LockTupleMode_LockTupleNoKeyExclusive LockTupleMode = 3 + LockTupleMode_LockTupleExclusive LockTupleMode = 4 +) + +// Enum value maps for LockTupleMode. +var ( + LockTupleMode_name = map[int32]string{ + 0: "LOCK_TUPLE_MODE_UNDEFINED", + 1: "LockTupleKeyShare", + 2: "LockTupleShare", + 3: "LockTupleNoKeyExclusive", + 4: "LockTupleExclusive", + } + LockTupleMode_value = map[string]int32{ + "LOCK_TUPLE_MODE_UNDEFINED": 0, + "LockTupleKeyShare": 1, + "LockTupleShare": 2, + "LockTupleNoKeyExclusive": 3, + "LockTupleExclusive": 4, + } +) + +func (x LockTupleMode) Enum() *LockTupleMode { + p := new(LockTupleMode) + *p = x + return p +} + +func (x LockTupleMode) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (LockTupleMode) Descriptor() protoreflect.EnumDescriptor { + return file_pg_query_proto_enumTypes[54].Descriptor() +} + +func (LockTupleMode) Type() protoreflect.EnumType { + return &file_pg_query_proto_enumTypes[54] +} + +func (x LockTupleMode) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use LockTupleMode.Descriptor instead. +func (LockTupleMode) EnumDescriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{54} +} + +type KeywordKind int32 + +const ( + KeywordKind_NO_KEYWORD KeywordKind = 0 + KeywordKind_UNRESERVED_KEYWORD KeywordKind = 1 + KeywordKind_COL_NAME_KEYWORD KeywordKind = 2 + KeywordKind_TYPE_FUNC_NAME_KEYWORD KeywordKind = 3 + KeywordKind_RESERVED_KEYWORD KeywordKind = 4 +) + +// Enum value maps for KeywordKind. +var ( + KeywordKind_name = map[int32]string{ + 0: "NO_KEYWORD", + 1: "UNRESERVED_KEYWORD", + 2: "COL_NAME_KEYWORD", + 3: "TYPE_FUNC_NAME_KEYWORD", + 4: "RESERVED_KEYWORD", + } + KeywordKind_value = map[string]int32{ + "NO_KEYWORD": 0, + "UNRESERVED_KEYWORD": 1, + "COL_NAME_KEYWORD": 2, + "TYPE_FUNC_NAME_KEYWORD": 3, + "RESERVED_KEYWORD": 4, + } +) + +func (x KeywordKind) Enum() *KeywordKind { + p := new(KeywordKind) + *p = x + return p +} + +func (x KeywordKind) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (KeywordKind) Descriptor() protoreflect.EnumDescriptor { + return file_pg_query_proto_enumTypes[55].Descriptor() +} + +func (KeywordKind) Type() protoreflect.EnumType { + return &file_pg_query_proto_enumTypes[55] +} + +func (x KeywordKind) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use KeywordKind.Descriptor instead. +func (KeywordKind) EnumDescriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{55} +} + +type Token int32 + +const ( + Token_NUL Token = 0 + // Single-character tokens that are returned 1:1 (identical with "self" list in scan.l) + // Either supporting syntax, or single-character operators (some can be both) + // Also see https://www.postgresql.org/docs/12/sql-syntax-lexical.html#SQL-SYNTAX-SPECIAL-CHARS + Token_ASCII_37 Token = 37 // "%" + Token_ASCII_40 Token = 40 // "(" + Token_ASCII_41 Token = 41 // ")" + Token_ASCII_42 Token = 42 // "*" + Token_ASCII_43 Token = 43 // "+" + Token_ASCII_44 Token = 44 // "," + Token_ASCII_45 Token = 45 // "-" + Token_ASCII_46 Token = 46 // "." + Token_ASCII_47 Token = 47 // "/" + Token_ASCII_58 Token = 58 // ":" + Token_ASCII_59 Token = 59 // ";" + Token_ASCII_60 Token = 60 // "<" + Token_ASCII_61 Token = 61 // "=" + Token_ASCII_62 Token = 62 // ">" + Token_ASCII_63 Token = 63 // "?" + Token_ASCII_91 Token = 91 // "[" + Token_ASCII_93 Token = 93 // "]" + Token_ASCII_94 Token = 94 // "^" + // Named tokens in scan.l + Token_IDENT Token = 258 + Token_UIDENT Token = 259 + Token_FCONST Token = 260 + Token_SCONST Token = 261 + Token_USCONST Token = 262 + Token_BCONST Token = 263 + Token_XCONST Token = 264 + Token_Op Token = 265 + Token_ICONST Token = 266 + Token_PARAM Token = 267 + Token_TYPECAST Token = 268 + Token_DOT_DOT Token = 269 + Token_COLON_EQUALS Token = 270 + Token_EQUALS_GREATER Token = 271 + Token_LESS_EQUALS Token = 272 + Token_GREATER_EQUALS Token = 273 + Token_NOT_EQUALS Token = 274 + Token_SQL_COMMENT Token = 275 + Token_C_COMMENT Token = 276 + Token_ABORT_P Token = 277 + Token_ABSOLUTE_P Token = 278 + Token_ACCESS Token = 279 + Token_ACTION Token = 280 + Token_ADD_P Token = 281 + Token_ADMIN Token = 282 + Token_AFTER Token = 283 + Token_AGGREGATE Token = 284 + Token_ALL Token = 285 + Token_ALSO Token = 286 + Token_ALTER Token = 287 + Token_ALWAYS Token = 288 + Token_ANALYSE Token = 289 + Token_ANALYZE Token = 290 + Token_AND Token = 291 + Token_ANY Token = 292 + Token_ARRAY Token = 293 + Token_AS Token = 294 + Token_ASC Token = 295 + Token_ASSERTION Token = 296 + Token_ASSIGNMENT Token = 297 + Token_ASYMMETRIC Token = 298 + Token_AT Token = 299 + Token_ATTACH Token = 300 + Token_ATTRIBUTE Token = 301 + Token_AUTHORIZATION Token = 302 + Token_BACKWARD Token = 303 + Token_BEFORE Token = 304 + Token_BEGIN_P Token = 305 + Token_BETWEEN Token = 306 + Token_BIGINT Token = 307 + Token_BINARY Token = 308 + Token_BIT Token = 309 + Token_BOOLEAN_P Token = 310 + Token_BOTH Token = 311 + Token_BY Token = 312 + Token_CACHE Token = 313 + Token_CALL Token = 314 + Token_CALLED Token = 315 + Token_CASCADE Token = 316 + Token_CASCADED Token = 317 + Token_CASE Token = 318 + Token_CAST Token = 319 + Token_CATALOG_P Token = 320 + Token_CHAIN Token = 321 + Token_CHAR_P Token = 322 + Token_CHARACTER Token = 323 + Token_CHARACTERISTICS Token = 324 + Token_CHECK Token = 325 + Token_CHECKPOINT Token = 326 + Token_CLASS Token = 327 + Token_CLOSE Token = 328 + Token_CLUSTER Token = 329 + Token_COALESCE Token = 330 + Token_COLLATE Token = 331 + Token_COLLATION Token = 332 + Token_COLUMN Token = 333 + Token_COLUMNS Token = 334 + Token_COMMENT Token = 335 + Token_COMMENTS Token = 336 + Token_COMMIT Token = 337 + Token_COMMITTED Token = 338 + Token_CONCURRENTLY Token = 339 + Token_CONFIGURATION Token = 340 + Token_CONFLICT Token = 341 + Token_CONNECTION Token = 342 + Token_CONSTRAINT Token = 343 + Token_CONSTRAINTS Token = 344 + Token_CONTENT_P Token = 345 + Token_CONTINUE_P Token = 346 + Token_CONVERSION_P Token = 347 + Token_COPY Token = 348 + Token_COST Token = 349 + Token_CREATE Token = 350 + Token_CROSS Token = 351 + Token_CSV Token = 352 + Token_CUBE Token = 353 + Token_CURRENT_P Token = 354 + Token_CURRENT_CATALOG Token = 355 + Token_CURRENT_DATE Token = 356 + Token_CURRENT_ROLE Token = 357 + Token_CURRENT_SCHEMA Token = 358 + Token_CURRENT_TIME Token = 359 + Token_CURRENT_TIMESTAMP Token = 360 + Token_CURRENT_USER Token = 361 + Token_CURSOR Token = 362 + Token_CYCLE Token = 363 + Token_DATA_P Token = 364 + Token_DATABASE Token = 365 + Token_DAY_P Token = 366 + Token_DEALLOCATE Token = 367 + Token_DEC Token = 368 + Token_DECIMAL_P Token = 369 + Token_DECLARE Token = 370 + Token_DEFAULT Token = 371 + Token_DEFAULTS Token = 372 + Token_DEFERRABLE Token = 373 + Token_DEFERRED Token = 374 + Token_DEFINER Token = 375 + Token_DELETE_P Token = 376 + Token_DELIMITER Token = 377 + Token_DELIMITERS Token = 378 + Token_DEPENDS Token = 379 + Token_DESC Token = 380 + Token_DETACH Token = 381 + Token_DICTIONARY Token = 382 + Token_DISABLE_P Token = 383 + Token_DISCARD Token = 384 + Token_DISTINCT Token = 385 + Token_DO Token = 386 + Token_DOCUMENT_P Token = 387 + Token_DOMAIN_P Token = 388 + Token_DOUBLE_P Token = 389 + Token_DROP Token = 390 + Token_EACH Token = 391 + Token_ELSE Token = 392 + Token_ENABLE_P Token = 393 + Token_ENCODING Token = 394 + Token_ENCRYPTED Token = 395 + Token_END_P Token = 396 + Token_ENUM_P Token = 397 + Token_ESCAPE Token = 398 + Token_EVENT Token = 399 + Token_EXCEPT Token = 400 + Token_EXCLUDE Token = 401 + Token_EXCLUDING Token = 402 + Token_EXCLUSIVE Token = 403 + Token_EXECUTE Token = 404 + Token_EXISTS Token = 405 + Token_EXPLAIN Token = 406 + Token_EXPRESSION Token = 407 + Token_EXTENSION Token = 408 + Token_EXTERNAL Token = 409 + Token_EXTRACT Token = 410 + Token_FALSE_P Token = 411 + Token_FAMILY Token = 412 + Token_FETCH Token = 413 + Token_FILTER Token = 414 + Token_FIRST_P Token = 415 + Token_FLOAT_P Token = 416 + Token_FOLLOWING Token = 417 + Token_FOR Token = 418 + Token_FORCE Token = 419 + Token_FOREIGN Token = 420 + Token_FORWARD Token = 421 + Token_FREEZE Token = 422 + Token_FROM Token = 423 + Token_FULL Token = 424 + Token_FUNCTION Token = 425 + Token_FUNCTIONS Token = 426 + Token_GENERATED Token = 427 + Token_GLOBAL Token = 428 + Token_GRANT Token = 429 + Token_GRANTED Token = 430 + Token_GREATEST Token = 431 + Token_GROUP_P Token = 432 + Token_GROUPING Token = 433 + Token_GROUPS Token = 434 + Token_HANDLER Token = 435 + Token_HAVING Token = 436 + Token_HEADER_P Token = 437 + Token_HOLD Token = 438 + Token_HOUR_P Token = 439 + Token_IDENTITY_P Token = 440 + Token_IF_P Token = 441 + Token_ILIKE Token = 442 + Token_IMMEDIATE Token = 443 + Token_IMMUTABLE Token = 444 + Token_IMPLICIT_P Token = 445 + Token_IMPORT_P Token = 446 + Token_IN_P Token = 447 + Token_INCLUDE Token = 448 + Token_INCLUDING Token = 449 + Token_INCREMENT Token = 450 + Token_INDEX Token = 451 + Token_INDEXES Token = 452 + Token_INHERIT Token = 453 + Token_INHERITS Token = 454 + Token_INITIALLY Token = 455 + Token_INLINE_P Token = 456 + Token_INNER_P Token = 457 + Token_INOUT Token = 458 + Token_INPUT_P Token = 459 + Token_INSENSITIVE Token = 460 + Token_INSERT Token = 461 + Token_INSTEAD Token = 462 + Token_INT_P Token = 463 + Token_INTEGER Token = 464 + Token_INTERSECT Token = 465 + Token_INTERVAL Token = 466 + Token_INTO Token = 467 + Token_INVOKER Token = 468 + Token_IS Token = 469 + Token_ISNULL Token = 470 + Token_ISOLATION Token = 471 + Token_JOIN Token = 472 + Token_KEY Token = 473 + Token_LABEL Token = 474 + Token_LANGUAGE Token = 475 + Token_LARGE_P Token = 476 + Token_LAST_P Token = 477 + Token_LATERAL_P Token = 478 + Token_LEADING Token = 479 + Token_LEAKPROOF Token = 480 + Token_LEAST Token = 481 + Token_LEFT Token = 482 + Token_LEVEL Token = 483 + Token_LIKE Token = 484 + Token_LIMIT Token = 485 + Token_LISTEN Token = 486 + Token_LOAD Token = 487 + Token_LOCAL Token = 488 + Token_LOCALTIME Token = 489 + Token_LOCALTIMESTAMP Token = 490 + Token_LOCATION Token = 491 + Token_LOCK_P Token = 492 + Token_LOCKED Token = 493 + Token_LOGGED Token = 494 + Token_MAPPING Token = 495 + Token_MATCH Token = 496 + Token_MATERIALIZED Token = 497 + Token_MAXVALUE Token = 498 + Token_METHOD Token = 499 + Token_MINUTE_P Token = 500 + Token_MINVALUE Token = 501 + Token_MODE Token = 502 + Token_MONTH_P Token = 503 + Token_MOVE Token = 504 + Token_NAME_P Token = 505 + Token_NAMES Token = 506 + Token_NATIONAL Token = 507 + Token_NATURAL Token = 508 + Token_NCHAR Token = 509 + Token_NEW Token = 510 + Token_NEXT Token = 511 + Token_NFC Token = 512 + Token_NFD Token = 513 + Token_NFKC Token = 514 + Token_NFKD Token = 515 + Token_NO Token = 516 + Token_NONE Token = 517 + Token_NORMALIZE Token = 518 + Token_NORMALIZED Token = 519 + Token_NOT Token = 520 + Token_NOTHING Token = 521 + Token_NOTIFY Token = 522 + Token_NOTNULL Token = 523 + Token_NOWAIT Token = 524 + Token_NULL_P Token = 525 + Token_NULLIF Token = 526 + Token_NULLS_P Token = 527 + Token_NUMERIC Token = 528 + Token_OBJECT_P Token = 529 + Token_OF Token = 530 + Token_OFF Token = 531 + Token_OFFSET Token = 532 + Token_OIDS Token = 533 + Token_OLD Token = 534 + Token_ON Token = 535 + Token_ONLY Token = 536 + Token_OPERATOR Token = 537 + Token_OPTION Token = 538 + Token_OPTIONS Token = 539 + Token_OR Token = 540 + Token_ORDER Token = 541 + Token_ORDINALITY Token = 542 + Token_OTHERS Token = 543 + Token_OUT_P Token = 544 + Token_OUTER_P Token = 545 + Token_OVER Token = 546 + Token_OVERLAPS Token = 547 + Token_OVERLAY Token = 548 + Token_OVERRIDING Token = 549 + Token_OWNED Token = 550 + Token_OWNER Token = 551 + Token_PARALLEL Token = 552 + Token_PARSER Token = 553 + Token_PARTIAL Token = 554 + Token_PARTITION Token = 555 + Token_PASSING Token = 556 + Token_PASSWORD Token = 557 + Token_PLACING Token = 558 + Token_PLANS Token = 559 + Token_POLICY Token = 560 + Token_POSITION Token = 561 + Token_PRECEDING Token = 562 + Token_PRECISION Token = 563 + Token_PRESERVE Token = 564 + Token_PREPARE Token = 565 + Token_PREPARED Token = 566 + Token_PRIMARY Token = 567 + Token_PRIOR Token = 568 + Token_PRIVILEGES Token = 569 + Token_PROCEDURAL Token = 570 + Token_PROCEDURE Token = 571 + Token_PROCEDURES Token = 572 + Token_PROGRAM Token = 573 + Token_PUBLICATION Token = 574 + Token_QUOTE Token = 575 + Token_RANGE Token = 576 + Token_READ Token = 577 + Token_REAL Token = 578 + Token_REASSIGN Token = 579 + Token_RECHECK Token = 580 + Token_RECURSIVE Token = 581 + Token_REF Token = 582 + Token_REFERENCES Token = 583 + Token_REFERENCING Token = 584 + Token_REFRESH Token = 585 + Token_REINDEX Token = 586 + Token_RELATIVE_P Token = 587 + Token_RELEASE Token = 588 + Token_RENAME Token = 589 + Token_REPEATABLE Token = 590 + Token_REPLACE Token = 591 + Token_REPLICA Token = 592 + Token_RESET Token = 593 + Token_RESTART Token = 594 + Token_RESTRICT Token = 595 + Token_RETURNING Token = 596 + Token_RETURNS Token = 597 + Token_REVOKE Token = 598 + Token_RIGHT Token = 599 + Token_ROLE Token = 600 + Token_ROLLBACK Token = 601 + Token_ROLLUP Token = 602 + Token_ROUTINE Token = 603 + Token_ROUTINES Token = 604 + Token_ROW Token = 605 + Token_ROWS Token = 606 + Token_RULE Token = 607 + Token_SAVEPOINT Token = 608 + Token_SCHEMA Token = 609 + Token_SCHEMAS Token = 610 + Token_SCROLL Token = 611 + Token_SEARCH Token = 612 + Token_SECOND_P Token = 613 + Token_SECURITY Token = 614 + Token_SELECT Token = 615 + Token_SEQUENCE Token = 616 + Token_SEQUENCES Token = 617 + Token_SERIALIZABLE Token = 618 + Token_SERVER Token = 619 + Token_SESSION Token = 620 + Token_SESSION_USER Token = 621 + Token_SET Token = 622 + Token_SETS Token = 623 + Token_SETOF Token = 624 + Token_SHARE Token = 625 + Token_SHOW Token = 626 + Token_SIMILAR Token = 627 + Token_SIMPLE Token = 628 + Token_SKIP Token = 629 + Token_SMALLINT Token = 630 + Token_SNAPSHOT Token = 631 + Token_SOME Token = 632 + Token_SQL_P Token = 633 + Token_STABLE Token = 634 + Token_STANDALONE_P Token = 635 + Token_START Token = 636 + Token_STATEMENT Token = 637 + Token_STATISTICS Token = 638 + Token_STDIN Token = 639 + Token_STDOUT Token = 640 + Token_STORAGE Token = 641 + Token_STORED Token = 642 + Token_STRICT_P Token = 643 + Token_STRIP_P Token = 644 + Token_SUBSCRIPTION Token = 645 + Token_SUBSTRING Token = 646 + Token_SUPPORT Token = 647 + Token_SYMMETRIC Token = 648 + Token_SYSID Token = 649 + Token_SYSTEM_P Token = 650 + Token_TABLE Token = 651 + Token_TABLES Token = 652 + Token_TABLESAMPLE Token = 653 + Token_TABLESPACE Token = 654 + Token_TEMP Token = 655 + Token_TEMPLATE Token = 656 + Token_TEMPORARY Token = 657 + Token_TEXT_P Token = 658 + Token_THEN Token = 659 + Token_TIES Token = 660 + Token_TIME Token = 661 + Token_TIMESTAMP Token = 662 + Token_TO Token = 663 + Token_TRAILING Token = 664 + Token_TRANSACTION Token = 665 + Token_TRANSFORM Token = 666 + Token_TREAT Token = 667 + Token_TRIGGER Token = 668 + Token_TRIM Token = 669 + Token_TRUE_P Token = 670 + Token_TRUNCATE Token = 671 + Token_TRUSTED Token = 672 + Token_TYPE_P Token = 673 + Token_TYPES_P Token = 674 + Token_UESCAPE Token = 675 + Token_UNBOUNDED Token = 676 + Token_UNCOMMITTED Token = 677 + Token_UNENCRYPTED Token = 678 + Token_UNION Token = 679 + Token_UNIQUE Token = 680 + Token_UNKNOWN Token = 681 + Token_UNLISTEN Token = 682 + Token_UNLOGGED Token = 683 + Token_UNTIL Token = 684 + Token_UPDATE Token = 685 + Token_USER Token = 686 + Token_USING Token = 687 + Token_VACUUM Token = 688 + Token_VALID Token = 689 + Token_VALIDATE Token = 690 + Token_VALIDATOR Token = 691 + Token_VALUE_P Token = 692 + Token_VALUES Token = 693 + Token_VARCHAR Token = 694 + Token_VARIADIC Token = 695 + Token_VARYING Token = 696 + Token_VERBOSE Token = 697 + Token_VERSION_P Token = 698 + Token_VIEW Token = 699 + Token_VIEWS Token = 700 + Token_VOLATILE Token = 701 + Token_WHEN Token = 702 + Token_WHERE Token = 703 + Token_WHITESPACE_P Token = 704 + Token_WINDOW Token = 705 + Token_WITH Token = 706 + Token_WITHIN Token = 707 + Token_WITHOUT Token = 708 + Token_WORK Token = 709 + Token_WRAPPER Token = 710 + Token_WRITE Token = 711 + Token_XML_P Token = 712 + Token_XMLATTRIBUTES Token = 713 + Token_XMLCONCAT Token = 714 + Token_XMLELEMENT Token = 715 + Token_XMLEXISTS Token = 716 + Token_XMLFOREST Token = 717 + Token_XMLNAMESPACES Token = 718 + Token_XMLPARSE Token = 719 + Token_XMLPI Token = 720 + Token_XMLROOT Token = 721 + Token_XMLSERIALIZE Token = 722 + Token_XMLTABLE Token = 723 + Token_YEAR_P Token = 724 + Token_YES_P Token = 725 + Token_ZONE Token = 726 + Token_NOT_LA Token = 727 + Token_NULLS_LA Token = 728 + Token_WITH_LA Token = 729 + Token_POSTFIXOP Token = 730 + Token_UMINUS Token = 731 +) + +// Enum value maps for Token. +var ( + Token_name = map[int32]string{ + 0: "NUL", + 37: "ASCII_37", + 40: "ASCII_40", + 41: "ASCII_41", + 42: "ASCII_42", + 43: "ASCII_43", + 44: "ASCII_44", + 45: "ASCII_45", + 46: "ASCII_46", + 47: "ASCII_47", + 58: "ASCII_58", + 59: "ASCII_59", + 60: "ASCII_60", + 61: "ASCII_61", + 62: "ASCII_62", + 63: "ASCII_63", + 91: "ASCII_91", + 93: "ASCII_93", + 94: "ASCII_94", + 258: "IDENT", + 259: "UIDENT", + 260: "FCONST", + 261: "SCONST", + 262: "USCONST", + 263: "BCONST", + 264: "XCONST", + 265: "Op", + 266: "ICONST", + 267: "PARAM", + 268: "TYPECAST", + 269: "DOT_DOT", + 270: "COLON_EQUALS", + 271: "EQUALS_GREATER", + 272: "LESS_EQUALS", + 273: "GREATER_EQUALS", + 274: "NOT_EQUALS", + 275: "SQL_COMMENT", + 276: "C_COMMENT", + 277: "ABORT_P", + 278: "ABSOLUTE_P", + 279: "ACCESS", + 280: "ACTION", + 281: "ADD_P", + 282: "ADMIN", + 283: "AFTER", + 284: "AGGREGATE", + 285: "ALL", + 286: "ALSO", + 287: "ALTER", + 288: "ALWAYS", + 289: "ANALYSE", + 290: "ANALYZE", + 291: "AND", + 292: "ANY", + 293: "ARRAY", + 294: "AS", + 295: "ASC", + 296: "ASSERTION", + 297: "ASSIGNMENT", + 298: "ASYMMETRIC", + 299: "AT", + 300: "ATTACH", + 301: "ATTRIBUTE", + 302: "AUTHORIZATION", + 303: "BACKWARD", + 304: "BEFORE", + 305: "BEGIN_P", + 306: "BETWEEN", + 307: "BIGINT", + 308: "BINARY", + 309: "BIT", + 310: "BOOLEAN_P", + 311: "BOTH", + 312: "BY", + 313: "CACHE", + 314: "CALL", + 315: "CALLED", + 316: "CASCADE", + 317: "CASCADED", + 318: "CASE", + 319: "CAST", + 320: "CATALOG_P", + 321: "CHAIN", + 322: "CHAR_P", + 323: "CHARACTER", + 324: "CHARACTERISTICS", + 325: "CHECK", + 326: "CHECKPOINT", + 327: "CLASS", + 328: "CLOSE", + 329: "CLUSTER", + 330: "COALESCE", + 331: "COLLATE", + 332: "COLLATION", + 333: "COLUMN", + 334: "COLUMNS", + 335: "COMMENT", + 336: "COMMENTS", + 337: "COMMIT", + 338: "COMMITTED", + 339: "CONCURRENTLY", + 340: "CONFIGURATION", + 341: "CONFLICT", + 342: "CONNECTION", + 343: "CONSTRAINT", + 344: "CONSTRAINTS", + 345: "CONTENT_P", + 346: "CONTINUE_P", + 347: "CONVERSION_P", + 348: "COPY", + 349: "COST", + 350: "CREATE", + 351: "CROSS", + 352: "CSV", + 353: "CUBE", + 354: "CURRENT_P", + 355: "CURRENT_CATALOG", + 356: "CURRENT_DATE", + 357: "CURRENT_ROLE", + 358: "CURRENT_SCHEMA", + 359: "CURRENT_TIME", + 360: "CURRENT_TIMESTAMP", + 361: "CURRENT_USER", + 362: "CURSOR", + 363: "CYCLE", + 364: "DATA_P", + 365: "DATABASE", + 366: "DAY_P", + 367: "DEALLOCATE", + 368: "DEC", + 369: "DECIMAL_P", + 370: "DECLARE", + 371: "DEFAULT", + 372: "DEFAULTS", + 373: "DEFERRABLE", + 374: "DEFERRED", + 375: "DEFINER", + 376: "DELETE_P", + 377: "DELIMITER", + 378: "DELIMITERS", + 379: "DEPENDS", + 380: "DESC", + 381: "DETACH", + 382: "DICTIONARY", + 383: "DISABLE_P", + 384: "DISCARD", + 385: "DISTINCT", + 386: "DO", + 387: "DOCUMENT_P", + 388: "DOMAIN_P", + 389: "DOUBLE_P", + 390: "DROP", + 391: "EACH", + 392: "ELSE", + 393: "ENABLE_P", + 394: "ENCODING", + 395: "ENCRYPTED", + 396: "END_P", + 397: "ENUM_P", + 398: "ESCAPE", + 399: "EVENT", + 400: "EXCEPT", + 401: "EXCLUDE", + 402: "EXCLUDING", + 403: "EXCLUSIVE", + 404: "EXECUTE", + 405: "EXISTS", + 406: "EXPLAIN", + 407: "EXPRESSION", + 408: "EXTENSION", + 409: "EXTERNAL", + 410: "EXTRACT", + 411: "FALSE_P", + 412: "FAMILY", + 413: "FETCH", + 414: "FILTER", + 415: "FIRST_P", + 416: "FLOAT_P", + 417: "FOLLOWING", + 418: "FOR", + 419: "FORCE", + 420: "FOREIGN", + 421: "FORWARD", + 422: "FREEZE", + 423: "FROM", + 424: "FULL", + 425: "FUNCTION", + 426: "FUNCTIONS", + 427: "GENERATED", + 428: "GLOBAL", + 429: "GRANT", + 430: "GRANTED", + 431: "GREATEST", + 432: "GROUP_P", + 433: "GROUPING", + 434: "GROUPS", + 435: "HANDLER", + 436: "HAVING", + 437: "HEADER_P", + 438: "HOLD", + 439: "HOUR_P", + 440: "IDENTITY_P", + 441: "IF_P", + 442: "ILIKE", + 443: "IMMEDIATE", + 444: "IMMUTABLE", + 445: "IMPLICIT_P", + 446: "IMPORT_P", + 447: "IN_P", + 448: "INCLUDE", + 449: "INCLUDING", + 450: "INCREMENT", + 451: "INDEX", + 452: "INDEXES", + 453: "INHERIT", + 454: "INHERITS", + 455: "INITIALLY", + 456: "INLINE_P", + 457: "INNER_P", + 458: "INOUT", + 459: "INPUT_P", + 460: "INSENSITIVE", + 461: "INSERT", + 462: "INSTEAD", + 463: "INT_P", + 464: "INTEGER", + 465: "INTERSECT", + 466: "INTERVAL", + 467: "INTO", + 468: "INVOKER", + 469: "IS", + 470: "ISNULL", + 471: "ISOLATION", + 472: "JOIN", + 473: "KEY", + 474: "LABEL", + 475: "LANGUAGE", + 476: "LARGE_P", + 477: "LAST_P", + 478: "LATERAL_P", + 479: "LEADING", + 480: "LEAKPROOF", + 481: "LEAST", + 482: "LEFT", + 483: "LEVEL", + 484: "LIKE", + 485: "LIMIT", + 486: "LISTEN", + 487: "LOAD", + 488: "LOCAL", + 489: "LOCALTIME", + 490: "LOCALTIMESTAMP", + 491: "LOCATION", + 492: "LOCK_P", + 493: "LOCKED", + 494: "LOGGED", + 495: "MAPPING", + 496: "MATCH", + 497: "MATERIALIZED", + 498: "MAXVALUE", + 499: "METHOD", + 500: "MINUTE_P", + 501: "MINVALUE", + 502: "MODE", + 503: "MONTH_P", + 504: "MOVE", + 505: "NAME_P", + 506: "NAMES", + 507: "NATIONAL", + 508: "NATURAL", + 509: "NCHAR", + 510: "NEW", + 511: "NEXT", + 512: "NFC", + 513: "NFD", + 514: "NFKC", + 515: "NFKD", + 516: "NO", + 517: "NONE", + 518: "NORMALIZE", + 519: "NORMALIZED", + 520: "NOT", + 521: "NOTHING", + 522: "NOTIFY", + 523: "NOTNULL", + 524: "NOWAIT", + 525: "NULL_P", + 526: "NULLIF", + 527: "NULLS_P", + 528: "NUMERIC", + 529: "OBJECT_P", + 530: "OF", + 531: "OFF", + 532: "OFFSET", + 533: "OIDS", + 534: "OLD", + 535: "ON", + 536: "ONLY", + 537: "OPERATOR", + 538: "OPTION", + 539: "OPTIONS", + 540: "OR", + 541: "ORDER", + 542: "ORDINALITY", + 543: "OTHERS", + 544: "OUT_P", + 545: "OUTER_P", + 546: "OVER", + 547: "OVERLAPS", + 548: "OVERLAY", + 549: "OVERRIDING", + 550: "OWNED", + 551: "OWNER", + 552: "PARALLEL", + 553: "PARSER", + 554: "PARTIAL", + 555: "PARTITION", + 556: "PASSING", + 557: "PASSWORD", + 558: "PLACING", + 559: "PLANS", + 560: "POLICY", + 561: "POSITION", + 562: "PRECEDING", + 563: "PRECISION", + 564: "PRESERVE", + 565: "PREPARE", + 566: "PREPARED", + 567: "PRIMARY", + 568: "PRIOR", + 569: "PRIVILEGES", + 570: "PROCEDURAL", + 571: "PROCEDURE", + 572: "PROCEDURES", + 573: "PROGRAM", + 574: "PUBLICATION", + 575: "QUOTE", + 576: "RANGE", + 577: "READ", + 578: "REAL", + 579: "REASSIGN", + 580: "RECHECK", + 581: "RECURSIVE", + 582: "REF", + 583: "REFERENCES", + 584: "REFERENCING", + 585: "REFRESH", + 586: "REINDEX", + 587: "RELATIVE_P", + 588: "RELEASE", + 589: "RENAME", + 590: "REPEATABLE", + 591: "REPLACE", + 592: "REPLICA", + 593: "RESET", + 594: "RESTART", + 595: "RESTRICT", + 596: "RETURNING", + 597: "RETURNS", + 598: "REVOKE", + 599: "RIGHT", + 600: "ROLE", + 601: "ROLLBACK", + 602: "ROLLUP", + 603: "ROUTINE", + 604: "ROUTINES", + 605: "ROW", + 606: "ROWS", + 607: "RULE", + 608: "SAVEPOINT", + 609: "SCHEMA", + 610: "SCHEMAS", + 611: "SCROLL", + 612: "SEARCH", + 613: "SECOND_P", + 614: "SECURITY", + 615: "SELECT", + 616: "SEQUENCE", + 617: "SEQUENCES", + 618: "SERIALIZABLE", + 619: "SERVER", + 620: "SESSION", + 621: "SESSION_USER", + 622: "SET", + 623: "SETS", + 624: "SETOF", + 625: "SHARE", + 626: "SHOW", + 627: "SIMILAR", + 628: "SIMPLE", + 629: "SKIP", + 630: "SMALLINT", + 631: "SNAPSHOT", + 632: "SOME", + 633: "SQL_P", + 634: "STABLE", + 635: "STANDALONE_P", + 636: "START", + 637: "STATEMENT", + 638: "STATISTICS", + 639: "STDIN", + 640: "STDOUT", + 641: "STORAGE", + 642: "STORED", + 643: "STRICT_P", + 644: "STRIP_P", + 645: "SUBSCRIPTION", + 646: "SUBSTRING", + 647: "SUPPORT", + 648: "SYMMETRIC", + 649: "SYSID", + 650: "SYSTEM_P", + 651: "TABLE", + 652: "TABLES", + 653: "TABLESAMPLE", + 654: "TABLESPACE", + 655: "TEMP", + 656: "TEMPLATE", + 657: "TEMPORARY", + 658: "TEXT_P", + 659: "THEN", + 660: "TIES", + 661: "TIME", + 662: "TIMESTAMP", + 663: "TO", + 664: "TRAILING", + 665: "TRANSACTION", + 666: "TRANSFORM", + 667: "TREAT", + 668: "TRIGGER", + 669: "TRIM", + 670: "TRUE_P", + 671: "TRUNCATE", + 672: "TRUSTED", + 673: "TYPE_P", + 674: "TYPES_P", + 675: "UESCAPE", + 676: "UNBOUNDED", + 677: "UNCOMMITTED", + 678: "UNENCRYPTED", + 679: "UNION", + 680: "UNIQUE", + 681: "UNKNOWN", + 682: "UNLISTEN", + 683: "UNLOGGED", + 684: "UNTIL", + 685: "UPDATE", + 686: "USER", + 687: "USING", + 688: "VACUUM", + 689: "VALID", + 690: "VALIDATE", + 691: "VALIDATOR", + 692: "VALUE_P", + 693: "VALUES", + 694: "VARCHAR", + 695: "VARIADIC", + 696: "VARYING", + 697: "VERBOSE", + 698: "VERSION_P", + 699: "VIEW", + 700: "VIEWS", + 701: "VOLATILE", + 702: "WHEN", + 703: "WHERE", + 704: "WHITESPACE_P", + 705: "WINDOW", + 706: "WITH", + 707: "WITHIN", + 708: "WITHOUT", + 709: "WORK", + 710: "WRAPPER", + 711: "WRITE", + 712: "XML_P", + 713: "XMLATTRIBUTES", + 714: "XMLCONCAT", + 715: "XMLELEMENT", + 716: "XMLEXISTS", + 717: "XMLFOREST", + 718: "XMLNAMESPACES", + 719: "XMLPARSE", + 720: "XMLPI", + 721: "XMLROOT", + 722: "XMLSERIALIZE", + 723: "XMLTABLE", + 724: "YEAR_P", + 725: "YES_P", + 726: "ZONE", + 727: "NOT_LA", + 728: "NULLS_LA", + 729: "WITH_LA", + 730: "POSTFIXOP", + 731: "UMINUS", + } + Token_value = map[string]int32{ + "NUL": 0, + "ASCII_37": 37, + "ASCII_40": 40, + "ASCII_41": 41, + "ASCII_42": 42, + "ASCII_43": 43, + "ASCII_44": 44, + "ASCII_45": 45, + "ASCII_46": 46, + "ASCII_47": 47, + "ASCII_58": 58, + "ASCII_59": 59, + "ASCII_60": 60, + "ASCII_61": 61, + "ASCII_62": 62, + "ASCII_63": 63, + "ASCII_91": 91, + "ASCII_93": 93, + "ASCII_94": 94, + "IDENT": 258, + "UIDENT": 259, + "FCONST": 260, + "SCONST": 261, + "USCONST": 262, + "BCONST": 263, + "XCONST": 264, + "Op": 265, + "ICONST": 266, + "PARAM": 267, + "TYPECAST": 268, + "DOT_DOT": 269, + "COLON_EQUALS": 270, + "EQUALS_GREATER": 271, + "LESS_EQUALS": 272, + "GREATER_EQUALS": 273, + "NOT_EQUALS": 274, + "SQL_COMMENT": 275, + "C_COMMENT": 276, + "ABORT_P": 277, + "ABSOLUTE_P": 278, + "ACCESS": 279, + "ACTION": 280, + "ADD_P": 281, + "ADMIN": 282, + "AFTER": 283, + "AGGREGATE": 284, + "ALL": 285, + "ALSO": 286, + "ALTER": 287, + "ALWAYS": 288, + "ANALYSE": 289, + "ANALYZE": 290, + "AND": 291, + "ANY": 292, + "ARRAY": 293, + "AS": 294, + "ASC": 295, + "ASSERTION": 296, + "ASSIGNMENT": 297, + "ASYMMETRIC": 298, + "AT": 299, + "ATTACH": 300, + "ATTRIBUTE": 301, + "AUTHORIZATION": 302, + "BACKWARD": 303, + "BEFORE": 304, + "BEGIN_P": 305, + "BETWEEN": 306, + "BIGINT": 307, + "BINARY": 308, + "BIT": 309, + "BOOLEAN_P": 310, + "BOTH": 311, + "BY": 312, + "CACHE": 313, + "CALL": 314, + "CALLED": 315, + "CASCADE": 316, + "CASCADED": 317, + "CASE": 318, + "CAST": 319, + "CATALOG_P": 320, + "CHAIN": 321, + "CHAR_P": 322, + "CHARACTER": 323, + "CHARACTERISTICS": 324, + "CHECK": 325, + "CHECKPOINT": 326, + "CLASS": 327, + "CLOSE": 328, + "CLUSTER": 329, + "COALESCE": 330, + "COLLATE": 331, + "COLLATION": 332, + "COLUMN": 333, + "COLUMNS": 334, + "COMMENT": 335, + "COMMENTS": 336, + "COMMIT": 337, + "COMMITTED": 338, + "CONCURRENTLY": 339, + "CONFIGURATION": 340, + "CONFLICT": 341, + "CONNECTION": 342, + "CONSTRAINT": 343, + "CONSTRAINTS": 344, + "CONTENT_P": 345, + "CONTINUE_P": 346, + "CONVERSION_P": 347, + "COPY": 348, + "COST": 349, + "CREATE": 350, + "CROSS": 351, + "CSV": 352, + "CUBE": 353, + "CURRENT_P": 354, + "CURRENT_CATALOG": 355, + "CURRENT_DATE": 356, + "CURRENT_ROLE": 357, + "CURRENT_SCHEMA": 358, + "CURRENT_TIME": 359, + "CURRENT_TIMESTAMP": 360, + "CURRENT_USER": 361, + "CURSOR": 362, + "CYCLE": 363, + "DATA_P": 364, + "DATABASE": 365, + "DAY_P": 366, + "DEALLOCATE": 367, + "DEC": 368, + "DECIMAL_P": 369, + "DECLARE": 370, + "DEFAULT": 371, + "DEFAULTS": 372, + "DEFERRABLE": 373, + "DEFERRED": 374, + "DEFINER": 375, + "DELETE_P": 376, + "DELIMITER": 377, + "DELIMITERS": 378, + "DEPENDS": 379, + "DESC": 380, + "DETACH": 381, + "DICTIONARY": 382, + "DISABLE_P": 383, + "DISCARD": 384, + "DISTINCT": 385, + "DO": 386, + "DOCUMENT_P": 387, + "DOMAIN_P": 388, + "DOUBLE_P": 389, + "DROP": 390, + "EACH": 391, + "ELSE": 392, + "ENABLE_P": 393, + "ENCODING": 394, + "ENCRYPTED": 395, + "END_P": 396, + "ENUM_P": 397, + "ESCAPE": 398, + "EVENT": 399, + "EXCEPT": 400, + "EXCLUDE": 401, + "EXCLUDING": 402, + "EXCLUSIVE": 403, + "EXECUTE": 404, + "EXISTS": 405, + "EXPLAIN": 406, + "EXPRESSION": 407, + "EXTENSION": 408, + "EXTERNAL": 409, + "EXTRACT": 410, + "FALSE_P": 411, + "FAMILY": 412, + "FETCH": 413, + "FILTER": 414, + "FIRST_P": 415, + "FLOAT_P": 416, + "FOLLOWING": 417, + "FOR": 418, + "FORCE": 419, + "FOREIGN": 420, + "FORWARD": 421, + "FREEZE": 422, + "FROM": 423, + "FULL": 424, + "FUNCTION": 425, + "FUNCTIONS": 426, + "GENERATED": 427, + "GLOBAL": 428, + "GRANT": 429, + "GRANTED": 430, + "GREATEST": 431, + "GROUP_P": 432, + "GROUPING": 433, + "GROUPS": 434, + "HANDLER": 435, + "HAVING": 436, + "HEADER_P": 437, + "HOLD": 438, + "HOUR_P": 439, + "IDENTITY_P": 440, + "IF_P": 441, + "ILIKE": 442, + "IMMEDIATE": 443, + "IMMUTABLE": 444, + "IMPLICIT_P": 445, + "IMPORT_P": 446, + "IN_P": 447, + "INCLUDE": 448, + "INCLUDING": 449, + "INCREMENT": 450, + "INDEX": 451, + "INDEXES": 452, + "INHERIT": 453, + "INHERITS": 454, + "INITIALLY": 455, + "INLINE_P": 456, + "INNER_P": 457, + "INOUT": 458, + "INPUT_P": 459, + "INSENSITIVE": 460, + "INSERT": 461, + "INSTEAD": 462, + "INT_P": 463, + "INTEGER": 464, + "INTERSECT": 465, + "INTERVAL": 466, + "INTO": 467, + "INVOKER": 468, + "IS": 469, + "ISNULL": 470, + "ISOLATION": 471, + "JOIN": 472, + "KEY": 473, + "LABEL": 474, + "LANGUAGE": 475, + "LARGE_P": 476, + "LAST_P": 477, + "LATERAL_P": 478, + "LEADING": 479, + "LEAKPROOF": 480, + "LEAST": 481, + "LEFT": 482, + "LEVEL": 483, + "LIKE": 484, + "LIMIT": 485, + "LISTEN": 486, + "LOAD": 487, + "LOCAL": 488, + "LOCALTIME": 489, + "LOCALTIMESTAMP": 490, + "LOCATION": 491, + "LOCK_P": 492, + "LOCKED": 493, + "LOGGED": 494, + "MAPPING": 495, + "MATCH": 496, + "MATERIALIZED": 497, + "MAXVALUE": 498, + "METHOD": 499, + "MINUTE_P": 500, + "MINVALUE": 501, + "MODE": 502, + "MONTH_P": 503, + "MOVE": 504, + "NAME_P": 505, + "NAMES": 506, + "NATIONAL": 507, + "NATURAL": 508, + "NCHAR": 509, + "NEW": 510, + "NEXT": 511, + "NFC": 512, + "NFD": 513, + "NFKC": 514, + "NFKD": 515, + "NO": 516, + "NONE": 517, + "NORMALIZE": 518, + "NORMALIZED": 519, + "NOT": 520, + "NOTHING": 521, + "NOTIFY": 522, + "NOTNULL": 523, + "NOWAIT": 524, + "NULL_P": 525, + "NULLIF": 526, + "NULLS_P": 527, + "NUMERIC": 528, + "OBJECT_P": 529, + "OF": 530, + "OFF": 531, + "OFFSET": 532, + "OIDS": 533, + "OLD": 534, + "ON": 535, + "ONLY": 536, + "OPERATOR": 537, + "OPTION": 538, + "OPTIONS": 539, + "OR": 540, + "ORDER": 541, + "ORDINALITY": 542, + "OTHERS": 543, + "OUT_P": 544, + "OUTER_P": 545, + "OVER": 546, + "OVERLAPS": 547, + "OVERLAY": 548, + "OVERRIDING": 549, + "OWNED": 550, + "OWNER": 551, + "PARALLEL": 552, + "PARSER": 553, + "PARTIAL": 554, + "PARTITION": 555, + "PASSING": 556, + "PASSWORD": 557, + "PLACING": 558, + "PLANS": 559, + "POLICY": 560, + "POSITION": 561, + "PRECEDING": 562, + "PRECISION": 563, + "PRESERVE": 564, + "PREPARE": 565, + "PREPARED": 566, + "PRIMARY": 567, + "PRIOR": 568, + "PRIVILEGES": 569, + "PROCEDURAL": 570, + "PROCEDURE": 571, + "PROCEDURES": 572, + "PROGRAM": 573, + "PUBLICATION": 574, + "QUOTE": 575, + "RANGE": 576, + "READ": 577, + "REAL": 578, + "REASSIGN": 579, + "RECHECK": 580, + "RECURSIVE": 581, + "REF": 582, + "REFERENCES": 583, + "REFERENCING": 584, + "REFRESH": 585, + "REINDEX": 586, + "RELATIVE_P": 587, + "RELEASE": 588, + "RENAME": 589, + "REPEATABLE": 590, + "REPLACE": 591, + "REPLICA": 592, + "RESET": 593, + "RESTART": 594, + "RESTRICT": 595, + "RETURNING": 596, + "RETURNS": 597, + "REVOKE": 598, + "RIGHT": 599, + "ROLE": 600, + "ROLLBACK": 601, + "ROLLUP": 602, + "ROUTINE": 603, + "ROUTINES": 604, + "ROW": 605, + "ROWS": 606, + "RULE": 607, + "SAVEPOINT": 608, + "SCHEMA": 609, + "SCHEMAS": 610, + "SCROLL": 611, + "SEARCH": 612, + "SECOND_P": 613, + "SECURITY": 614, + "SELECT": 615, + "SEQUENCE": 616, + "SEQUENCES": 617, + "SERIALIZABLE": 618, + "SERVER": 619, + "SESSION": 620, + "SESSION_USER": 621, + "SET": 622, + "SETS": 623, + "SETOF": 624, + "SHARE": 625, + "SHOW": 626, + "SIMILAR": 627, + "SIMPLE": 628, + "SKIP": 629, + "SMALLINT": 630, + "SNAPSHOT": 631, + "SOME": 632, + "SQL_P": 633, + "STABLE": 634, + "STANDALONE_P": 635, + "START": 636, + "STATEMENT": 637, + "STATISTICS": 638, + "STDIN": 639, + "STDOUT": 640, + "STORAGE": 641, + "STORED": 642, + "STRICT_P": 643, + "STRIP_P": 644, + "SUBSCRIPTION": 645, + "SUBSTRING": 646, + "SUPPORT": 647, + "SYMMETRIC": 648, + "SYSID": 649, + "SYSTEM_P": 650, + "TABLE": 651, + "TABLES": 652, + "TABLESAMPLE": 653, + "TABLESPACE": 654, + "TEMP": 655, + "TEMPLATE": 656, + "TEMPORARY": 657, + "TEXT_P": 658, + "THEN": 659, + "TIES": 660, + "TIME": 661, + "TIMESTAMP": 662, + "TO": 663, + "TRAILING": 664, + "TRANSACTION": 665, + "TRANSFORM": 666, + "TREAT": 667, + "TRIGGER": 668, + "TRIM": 669, + "TRUE_P": 670, + "TRUNCATE": 671, + "TRUSTED": 672, + "TYPE_P": 673, + "TYPES_P": 674, + "UESCAPE": 675, + "UNBOUNDED": 676, + "UNCOMMITTED": 677, + "UNENCRYPTED": 678, + "UNION": 679, + "UNIQUE": 680, + "UNKNOWN": 681, + "UNLISTEN": 682, + "UNLOGGED": 683, + "UNTIL": 684, + "UPDATE": 685, + "USER": 686, + "USING": 687, + "VACUUM": 688, + "VALID": 689, + "VALIDATE": 690, + "VALIDATOR": 691, + "VALUE_P": 692, + "VALUES": 693, + "VARCHAR": 694, + "VARIADIC": 695, + "VARYING": 696, + "VERBOSE": 697, + "VERSION_P": 698, + "VIEW": 699, + "VIEWS": 700, + "VOLATILE": 701, + "WHEN": 702, + "WHERE": 703, + "WHITESPACE_P": 704, + "WINDOW": 705, + "WITH": 706, + "WITHIN": 707, + "WITHOUT": 708, + "WORK": 709, + "WRAPPER": 710, + "WRITE": 711, + "XML_P": 712, + "XMLATTRIBUTES": 713, + "XMLCONCAT": 714, + "XMLELEMENT": 715, + "XMLEXISTS": 716, + "XMLFOREST": 717, + "XMLNAMESPACES": 718, + "XMLPARSE": 719, + "XMLPI": 720, + "XMLROOT": 721, + "XMLSERIALIZE": 722, + "XMLTABLE": 723, + "YEAR_P": 724, + "YES_P": 725, + "ZONE": 726, + "NOT_LA": 727, + "NULLS_LA": 728, + "WITH_LA": 729, + "POSTFIXOP": 730, + "UMINUS": 731, + } +) + +func (x Token) Enum() *Token { + p := new(Token) + *p = x + return p +} + +func (x Token) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (Token) Descriptor() protoreflect.EnumDescriptor { + return file_pg_query_proto_enumTypes[56].Descriptor() +} + +func (Token) Type() protoreflect.EnumType { + return &file_pg_query_proto_enumTypes[56] +} + +func (x Token) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use Token.Descriptor instead. +func (Token) EnumDescriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{56} +} + +type ParseResult struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Version int32 `protobuf:"varint,1,opt,name=version,proto3" json:"version,omitempty"` + Stmts []*RawStmt `protobuf:"bytes,2,rep,name=stmts,proto3" json:"stmts,omitempty"` +} + +func (x *ParseResult) Reset() { + *x = ParseResult{} + if protoimpl.UnsafeEnabled { + mi := &file_pg_query_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ParseResult) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ParseResult) ProtoMessage() {} + +func (x *ParseResult) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[0] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ParseResult.ProtoReflect.Descriptor instead. +func (*ParseResult) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{0} +} + +func (x *ParseResult) GetVersion() int32 { + if x != nil { + return x.Version + } + return 0 +} + +func (x *ParseResult) GetStmts() []*RawStmt { + if x != nil { + return x.Stmts + } + return nil +} + +type ScanResult struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Version int32 `protobuf:"varint,1,opt,name=version,proto3" json:"version,omitempty"` + Tokens []*ScanToken `protobuf:"bytes,2,rep,name=tokens,proto3" json:"tokens,omitempty"` +} + +func (x *ScanResult) Reset() { + *x = ScanResult{} + if protoimpl.UnsafeEnabled { + mi := &file_pg_query_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ScanResult) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ScanResult) ProtoMessage() {} + +func (x *ScanResult) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[1] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ScanResult.ProtoReflect.Descriptor instead. +func (*ScanResult) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{1} +} + +func (x *ScanResult) GetVersion() int32 { + if x != nil { + return x.Version + } + return 0 +} + +func (x *ScanResult) GetTokens() []*ScanToken { + if x != nil { + return x.Tokens + } + return nil +} + +type Node struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Types that are assignable to Node: + // *Node_Alias + // *Node_RangeVar + // *Node_TableFunc + // *Node_Expr + // *Node_Var + // *Node_Param + // *Node_Aggref + // *Node_GroupingFunc + // *Node_WindowFunc + // *Node_SubscriptingRef + // *Node_FuncExpr + // *Node_NamedArgExpr + // *Node_OpExpr + // *Node_DistinctExpr + // *Node_NullIfExpr + // *Node_ScalarArrayOpExpr + // *Node_BoolExpr + // *Node_SubLink + // *Node_SubPlan + // *Node_AlternativeSubPlan + // *Node_FieldSelect + // *Node_FieldStore + // *Node_RelabelType + // *Node_CoerceViaIo + // *Node_ArrayCoerceExpr + // *Node_ConvertRowtypeExpr + // *Node_CollateExpr + // *Node_CaseExpr + // *Node_CaseWhen + // *Node_CaseTestExpr + // *Node_ArrayExpr + // *Node_RowExpr + // *Node_RowCompareExpr + // *Node_CoalesceExpr + // *Node_MinMaxExpr + // *Node_SqlvalueFunction + // *Node_XmlExpr + // *Node_NullTest + // *Node_BooleanTest + // *Node_CoerceToDomain + // *Node_CoerceToDomainValue + // *Node_SetToDefault + // *Node_CurrentOfExpr + // *Node_NextValueExpr + // *Node_InferenceElem + // *Node_TargetEntry + // *Node_RangeTblRef + // *Node_JoinExpr + // *Node_FromExpr + // *Node_OnConflictExpr + // *Node_IntoClause + // *Node_RawStmt + // *Node_Query + // *Node_InsertStmt + // *Node_DeleteStmt + // *Node_UpdateStmt + // *Node_SelectStmt + // *Node_AlterTableStmt + // *Node_AlterTableCmd + // *Node_AlterDomainStmt + // *Node_SetOperationStmt + // *Node_GrantStmt + // *Node_GrantRoleStmt + // *Node_AlterDefaultPrivilegesStmt + // *Node_ClosePortalStmt + // *Node_ClusterStmt + // *Node_CopyStmt + // *Node_CreateStmt + // *Node_DefineStmt + // *Node_DropStmt + // *Node_TruncateStmt + // *Node_CommentStmt + // *Node_FetchStmt + // *Node_IndexStmt + // *Node_CreateFunctionStmt + // *Node_AlterFunctionStmt + // *Node_DoStmt + // *Node_RenameStmt + // *Node_RuleStmt + // *Node_NotifyStmt + // *Node_ListenStmt + // *Node_UnlistenStmt + // *Node_TransactionStmt + // *Node_ViewStmt + // *Node_LoadStmt + // *Node_CreateDomainStmt + // *Node_CreatedbStmt + // *Node_DropdbStmt + // *Node_VacuumStmt + // *Node_ExplainStmt + // *Node_CreateTableAsStmt + // *Node_CreateSeqStmt + // *Node_AlterSeqStmt + // *Node_VariableSetStmt + // *Node_VariableShowStmt + // *Node_DiscardStmt + // *Node_CreateTrigStmt + // *Node_CreatePlangStmt + // *Node_CreateRoleStmt + // *Node_AlterRoleStmt + // *Node_DropRoleStmt + // *Node_LockStmt + // *Node_ConstraintsSetStmt + // *Node_ReindexStmt + // *Node_CheckPointStmt + // *Node_CreateSchemaStmt + // *Node_AlterDatabaseStmt + // *Node_AlterDatabaseSetStmt + // *Node_AlterRoleSetStmt + // *Node_CreateConversionStmt + // *Node_CreateCastStmt + // *Node_CreateOpClassStmt + // *Node_CreateOpFamilyStmt + // *Node_AlterOpFamilyStmt + // *Node_PrepareStmt + // *Node_ExecuteStmt + // *Node_DeallocateStmt + // *Node_DeclareCursorStmt + // *Node_CreateTableSpaceStmt + // *Node_DropTableSpaceStmt + // *Node_AlterObjectDependsStmt + // *Node_AlterObjectSchemaStmt + // *Node_AlterOwnerStmt + // *Node_AlterOperatorStmt + // *Node_AlterTypeStmt + // *Node_DropOwnedStmt + // *Node_ReassignOwnedStmt + // *Node_CompositeTypeStmt + // *Node_CreateEnumStmt + // *Node_CreateRangeStmt + // *Node_AlterEnumStmt + // *Node_AlterTsdictionaryStmt + // *Node_AlterTsconfigurationStmt + // *Node_CreateFdwStmt + // *Node_AlterFdwStmt + // *Node_CreateForeignServerStmt + // *Node_AlterForeignServerStmt + // *Node_CreateUserMappingStmt + // *Node_AlterUserMappingStmt + // *Node_DropUserMappingStmt + // *Node_AlterTableSpaceOptionsStmt + // *Node_AlterTableMoveAllStmt + // *Node_SecLabelStmt + // *Node_CreateForeignTableStmt + // *Node_ImportForeignSchemaStmt + // *Node_CreateExtensionStmt + // *Node_AlterExtensionStmt + // *Node_AlterExtensionContentsStmt + // *Node_CreateEventTrigStmt + // *Node_AlterEventTrigStmt + // *Node_RefreshMatViewStmt + // *Node_ReplicaIdentityStmt + // *Node_AlterSystemStmt + // *Node_CreatePolicyStmt + // *Node_AlterPolicyStmt + // *Node_CreateTransformStmt + // *Node_CreateAmStmt + // *Node_CreatePublicationStmt + // *Node_AlterPublicationStmt + // *Node_CreateSubscriptionStmt + // *Node_AlterSubscriptionStmt + // *Node_DropSubscriptionStmt + // *Node_CreateStatsStmt + // *Node_AlterCollationStmt + // *Node_CallStmt + // *Node_AlterStatsStmt + // *Node_AExpr + // *Node_ColumnRef + // *Node_ParamRef + // *Node_AConst + // *Node_FuncCall + // *Node_AStar + // *Node_AIndices + // *Node_AIndirection + // *Node_AArrayExpr + // *Node_ResTarget + // *Node_MultiAssignRef + // *Node_TypeCast + // *Node_CollateClause + // *Node_SortBy + // *Node_WindowDef + // *Node_RangeSubselect + // *Node_RangeFunction + // *Node_RangeTableSample + // *Node_RangeTableFunc + // *Node_RangeTableFuncCol + // *Node_TypeName + // *Node_ColumnDef + // *Node_IndexElem + // *Node_Constraint + // *Node_DefElem + // *Node_RangeTblEntry + // *Node_RangeTblFunction + // *Node_TableSampleClause + // *Node_WithCheckOption + // *Node_SortGroupClause + // *Node_GroupingSet + // *Node_WindowClause + // *Node_ObjectWithArgs + // *Node_AccessPriv + // *Node_CreateOpClassItem + // *Node_TableLikeClause + // *Node_FunctionParameter + // *Node_LockingClause + // *Node_RowMarkClause + // *Node_XmlSerialize + // *Node_WithClause + // *Node_InferClause + // *Node_OnConflictClause + // *Node_CommonTableExpr + // *Node_RoleSpec + // *Node_TriggerTransition + // *Node_PartitionElem + // *Node_PartitionSpec + // *Node_PartitionBoundSpec + // *Node_PartitionRangeDatum + // *Node_PartitionCmd + // *Node_VacuumRelation + // *Node_InlineCodeBlock + // *Node_CallContext + // *Node_Integer + // *Node_Float + // *Node_String_ + // *Node_BitString + // *Node_Null + // *Node_List + // *Node_IntList + // *Node_OidList + Node isNode_Node `protobuf_oneof:"node"` +} + +func (x *Node) Reset() { + *x = Node{} + if protoimpl.UnsafeEnabled { + mi := &file_pg_query_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Node) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Node) ProtoMessage() {} + +func (x *Node) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[2] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Node.ProtoReflect.Descriptor instead. +func (*Node) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{2} +} + +func (m *Node) GetNode() isNode_Node { + if m != nil { + return m.Node + } + return nil +} + +func (x *Node) GetAlias() *Alias { + if x, ok := x.GetNode().(*Node_Alias); ok { + return x.Alias + } + return nil +} + +func (x *Node) GetRangeVar() *RangeVar { + if x, ok := x.GetNode().(*Node_RangeVar); ok { + return x.RangeVar + } + return nil +} + +func (x *Node) GetTableFunc() *TableFunc { + if x, ok := x.GetNode().(*Node_TableFunc); ok { + return x.TableFunc + } + return nil +} + +func (x *Node) GetExpr() *Expr { + if x, ok := x.GetNode().(*Node_Expr); ok { + return x.Expr + } + return nil +} + +func (x *Node) GetVar() *Var { + if x, ok := x.GetNode().(*Node_Var); ok { + return x.Var + } + return nil +} + +func (x *Node) GetParam() *Param { + if x, ok := x.GetNode().(*Node_Param); ok { + return x.Param + } + return nil +} + +func (x *Node) GetAggref() *Aggref { + if x, ok := x.GetNode().(*Node_Aggref); ok { + return x.Aggref + } + return nil +} + +func (x *Node) GetGroupingFunc() *GroupingFunc { + if x, ok := x.GetNode().(*Node_GroupingFunc); ok { + return x.GroupingFunc + } + return nil +} + +func (x *Node) GetWindowFunc() *WindowFunc { + if x, ok := x.GetNode().(*Node_WindowFunc); ok { + return x.WindowFunc + } + return nil +} + +func (x *Node) GetSubscriptingRef() *SubscriptingRef { + if x, ok := x.GetNode().(*Node_SubscriptingRef); ok { + return x.SubscriptingRef + } + return nil +} + +func (x *Node) GetFuncExpr() *FuncExpr { + if x, ok := x.GetNode().(*Node_FuncExpr); ok { + return x.FuncExpr + } + return nil +} + +func (x *Node) GetNamedArgExpr() *NamedArgExpr { + if x, ok := x.GetNode().(*Node_NamedArgExpr); ok { + return x.NamedArgExpr + } + return nil +} + +func (x *Node) GetOpExpr() *OpExpr { + if x, ok := x.GetNode().(*Node_OpExpr); ok { + return x.OpExpr + } + return nil +} + +func (x *Node) GetDistinctExpr() *DistinctExpr { + if x, ok := x.GetNode().(*Node_DistinctExpr); ok { + return x.DistinctExpr + } + return nil +} + +func (x *Node) GetNullIfExpr() *NullIfExpr { + if x, ok := x.GetNode().(*Node_NullIfExpr); ok { + return x.NullIfExpr + } + return nil +} + +func (x *Node) GetScalarArrayOpExpr() *ScalarArrayOpExpr { + if x, ok := x.GetNode().(*Node_ScalarArrayOpExpr); ok { + return x.ScalarArrayOpExpr + } + return nil +} + +func (x *Node) GetBoolExpr() *BoolExpr { + if x, ok := x.GetNode().(*Node_BoolExpr); ok { + return x.BoolExpr + } + return nil +} + +func (x *Node) GetSubLink() *SubLink { + if x, ok := x.GetNode().(*Node_SubLink); ok { + return x.SubLink + } + return nil +} + +func (x *Node) GetSubPlan() *SubPlan { + if x, ok := x.GetNode().(*Node_SubPlan); ok { + return x.SubPlan + } + return nil +} + +func (x *Node) GetAlternativeSubPlan() *AlternativeSubPlan { + if x, ok := x.GetNode().(*Node_AlternativeSubPlan); ok { + return x.AlternativeSubPlan + } + return nil +} + +func (x *Node) GetFieldSelect() *FieldSelect { + if x, ok := x.GetNode().(*Node_FieldSelect); ok { + return x.FieldSelect + } + return nil +} + +func (x *Node) GetFieldStore() *FieldStore { + if x, ok := x.GetNode().(*Node_FieldStore); ok { + return x.FieldStore + } + return nil +} + +func (x *Node) GetRelabelType() *RelabelType { + if x, ok := x.GetNode().(*Node_RelabelType); ok { + return x.RelabelType + } + return nil +} + +func (x *Node) GetCoerceViaIo() *CoerceViaIO { + if x, ok := x.GetNode().(*Node_CoerceViaIo); ok { + return x.CoerceViaIo + } + return nil +} + +func (x *Node) GetArrayCoerceExpr() *ArrayCoerceExpr { + if x, ok := x.GetNode().(*Node_ArrayCoerceExpr); ok { + return x.ArrayCoerceExpr + } + return nil +} + +func (x *Node) GetConvertRowtypeExpr() *ConvertRowtypeExpr { + if x, ok := x.GetNode().(*Node_ConvertRowtypeExpr); ok { + return x.ConvertRowtypeExpr + } + return nil +} + +func (x *Node) GetCollateExpr() *CollateExpr { + if x, ok := x.GetNode().(*Node_CollateExpr); ok { + return x.CollateExpr + } + return nil +} + +func (x *Node) GetCaseExpr() *CaseExpr { + if x, ok := x.GetNode().(*Node_CaseExpr); ok { + return x.CaseExpr + } + return nil +} + +func (x *Node) GetCaseWhen() *CaseWhen { + if x, ok := x.GetNode().(*Node_CaseWhen); ok { + return x.CaseWhen + } + return nil +} + +func (x *Node) GetCaseTestExpr() *CaseTestExpr { + if x, ok := x.GetNode().(*Node_CaseTestExpr); ok { + return x.CaseTestExpr + } + return nil +} + +func (x *Node) GetArrayExpr() *ArrayExpr { + if x, ok := x.GetNode().(*Node_ArrayExpr); ok { + return x.ArrayExpr + } + return nil +} + +func (x *Node) GetRowExpr() *RowExpr { + if x, ok := x.GetNode().(*Node_RowExpr); ok { + return x.RowExpr + } + return nil +} + +func (x *Node) GetRowCompareExpr() *RowCompareExpr { + if x, ok := x.GetNode().(*Node_RowCompareExpr); ok { + return x.RowCompareExpr + } + return nil +} + +func (x *Node) GetCoalesceExpr() *CoalesceExpr { + if x, ok := x.GetNode().(*Node_CoalesceExpr); ok { + return x.CoalesceExpr + } + return nil +} + +func (x *Node) GetMinMaxExpr() *MinMaxExpr { + if x, ok := x.GetNode().(*Node_MinMaxExpr); ok { + return x.MinMaxExpr + } + return nil +} + +func (x *Node) GetSqlvalueFunction() *SQLValueFunction { + if x, ok := x.GetNode().(*Node_SqlvalueFunction); ok { + return x.SqlvalueFunction + } + return nil +} + +func (x *Node) GetXmlExpr() *XmlExpr { + if x, ok := x.GetNode().(*Node_XmlExpr); ok { + return x.XmlExpr + } + return nil +} + +func (x *Node) GetNullTest() *NullTest { + if x, ok := x.GetNode().(*Node_NullTest); ok { + return x.NullTest + } + return nil +} + +func (x *Node) GetBooleanTest() *BooleanTest { + if x, ok := x.GetNode().(*Node_BooleanTest); ok { + return x.BooleanTest + } + return nil +} + +func (x *Node) GetCoerceToDomain() *CoerceToDomain { + if x, ok := x.GetNode().(*Node_CoerceToDomain); ok { + return x.CoerceToDomain + } + return nil +} + +func (x *Node) GetCoerceToDomainValue() *CoerceToDomainValue { + if x, ok := x.GetNode().(*Node_CoerceToDomainValue); ok { + return x.CoerceToDomainValue + } + return nil +} + +func (x *Node) GetSetToDefault() *SetToDefault { + if x, ok := x.GetNode().(*Node_SetToDefault); ok { + return x.SetToDefault + } + return nil +} + +func (x *Node) GetCurrentOfExpr() *CurrentOfExpr { + if x, ok := x.GetNode().(*Node_CurrentOfExpr); ok { + return x.CurrentOfExpr + } + return nil +} + +func (x *Node) GetNextValueExpr() *NextValueExpr { + if x, ok := x.GetNode().(*Node_NextValueExpr); ok { + return x.NextValueExpr + } + return nil +} + +func (x *Node) GetInferenceElem() *InferenceElem { + if x, ok := x.GetNode().(*Node_InferenceElem); ok { + return x.InferenceElem + } + return nil +} + +func (x *Node) GetTargetEntry() *TargetEntry { + if x, ok := x.GetNode().(*Node_TargetEntry); ok { + return x.TargetEntry + } + return nil +} + +func (x *Node) GetRangeTblRef() *RangeTblRef { + if x, ok := x.GetNode().(*Node_RangeTblRef); ok { + return x.RangeTblRef + } + return nil +} + +func (x *Node) GetJoinExpr() *JoinExpr { + if x, ok := x.GetNode().(*Node_JoinExpr); ok { + return x.JoinExpr + } + return nil +} + +func (x *Node) GetFromExpr() *FromExpr { + if x, ok := x.GetNode().(*Node_FromExpr); ok { + return x.FromExpr + } + return nil +} + +func (x *Node) GetOnConflictExpr() *OnConflictExpr { + if x, ok := x.GetNode().(*Node_OnConflictExpr); ok { + return x.OnConflictExpr + } + return nil +} + +func (x *Node) GetIntoClause() *IntoClause { + if x, ok := x.GetNode().(*Node_IntoClause); ok { + return x.IntoClause + } + return nil +} + +func (x *Node) GetRawStmt() *RawStmt { + if x, ok := x.GetNode().(*Node_RawStmt); ok { + return x.RawStmt + } + return nil +} + +func (x *Node) GetQuery() *Query { + if x, ok := x.GetNode().(*Node_Query); ok { + return x.Query + } + return nil +} + +func (x *Node) GetInsertStmt() *InsertStmt { + if x, ok := x.GetNode().(*Node_InsertStmt); ok { + return x.InsertStmt + } + return nil +} + +func (x *Node) GetDeleteStmt() *DeleteStmt { + if x, ok := x.GetNode().(*Node_DeleteStmt); ok { + return x.DeleteStmt + } + return nil +} + +func (x *Node) GetUpdateStmt() *UpdateStmt { + if x, ok := x.GetNode().(*Node_UpdateStmt); ok { + return x.UpdateStmt + } + return nil +} + +func (x *Node) GetSelectStmt() *SelectStmt { + if x, ok := x.GetNode().(*Node_SelectStmt); ok { + return x.SelectStmt + } + return nil +} + +func (x *Node) GetAlterTableStmt() *AlterTableStmt { + if x, ok := x.GetNode().(*Node_AlterTableStmt); ok { + return x.AlterTableStmt + } + return nil +} + +func (x *Node) GetAlterTableCmd() *AlterTableCmd { + if x, ok := x.GetNode().(*Node_AlterTableCmd); ok { + return x.AlterTableCmd + } + return nil +} + +func (x *Node) GetAlterDomainStmt() *AlterDomainStmt { + if x, ok := x.GetNode().(*Node_AlterDomainStmt); ok { + return x.AlterDomainStmt + } + return nil +} + +func (x *Node) GetSetOperationStmt() *SetOperationStmt { + if x, ok := x.GetNode().(*Node_SetOperationStmt); ok { + return x.SetOperationStmt + } + return nil +} + +func (x *Node) GetGrantStmt() *GrantStmt { + if x, ok := x.GetNode().(*Node_GrantStmt); ok { + return x.GrantStmt + } + return nil +} + +func (x *Node) GetGrantRoleStmt() *GrantRoleStmt { + if x, ok := x.GetNode().(*Node_GrantRoleStmt); ok { + return x.GrantRoleStmt + } + return nil +} + +func (x *Node) GetAlterDefaultPrivilegesStmt() *AlterDefaultPrivilegesStmt { + if x, ok := x.GetNode().(*Node_AlterDefaultPrivilegesStmt); ok { + return x.AlterDefaultPrivilegesStmt + } + return nil +} + +func (x *Node) GetClosePortalStmt() *ClosePortalStmt { + if x, ok := x.GetNode().(*Node_ClosePortalStmt); ok { + return x.ClosePortalStmt + } + return nil +} + +func (x *Node) GetClusterStmt() *ClusterStmt { + if x, ok := x.GetNode().(*Node_ClusterStmt); ok { + return x.ClusterStmt + } + return nil +} + +func (x *Node) GetCopyStmt() *CopyStmt { + if x, ok := x.GetNode().(*Node_CopyStmt); ok { + return x.CopyStmt + } + return nil +} + +func (x *Node) GetCreateStmt() *CreateStmt { + if x, ok := x.GetNode().(*Node_CreateStmt); ok { + return x.CreateStmt + } + return nil +} + +func (x *Node) GetDefineStmt() *DefineStmt { + if x, ok := x.GetNode().(*Node_DefineStmt); ok { + return x.DefineStmt + } + return nil +} + +func (x *Node) GetDropStmt() *DropStmt { + if x, ok := x.GetNode().(*Node_DropStmt); ok { + return x.DropStmt + } + return nil +} + +func (x *Node) GetTruncateStmt() *TruncateStmt { + if x, ok := x.GetNode().(*Node_TruncateStmt); ok { + return x.TruncateStmt + } + return nil +} + +func (x *Node) GetCommentStmt() *CommentStmt { + if x, ok := x.GetNode().(*Node_CommentStmt); ok { + return x.CommentStmt + } + return nil +} + +func (x *Node) GetFetchStmt() *FetchStmt { + if x, ok := x.GetNode().(*Node_FetchStmt); ok { + return x.FetchStmt + } + return nil +} + +func (x *Node) GetIndexStmt() *IndexStmt { + if x, ok := x.GetNode().(*Node_IndexStmt); ok { + return x.IndexStmt + } + return nil +} + +func (x *Node) GetCreateFunctionStmt() *CreateFunctionStmt { + if x, ok := x.GetNode().(*Node_CreateFunctionStmt); ok { + return x.CreateFunctionStmt + } + return nil +} + +func (x *Node) GetAlterFunctionStmt() *AlterFunctionStmt { + if x, ok := x.GetNode().(*Node_AlterFunctionStmt); ok { + return x.AlterFunctionStmt + } + return nil +} + +func (x *Node) GetDoStmt() *DoStmt { + if x, ok := x.GetNode().(*Node_DoStmt); ok { + return x.DoStmt + } + return nil +} + +func (x *Node) GetRenameStmt() *RenameStmt { + if x, ok := x.GetNode().(*Node_RenameStmt); ok { + return x.RenameStmt + } + return nil +} + +func (x *Node) GetRuleStmt() *RuleStmt { + if x, ok := x.GetNode().(*Node_RuleStmt); ok { + return x.RuleStmt + } + return nil +} + +func (x *Node) GetNotifyStmt() *NotifyStmt { + if x, ok := x.GetNode().(*Node_NotifyStmt); ok { + return x.NotifyStmt + } + return nil +} + +func (x *Node) GetListenStmt() *ListenStmt { + if x, ok := x.GetNode().(*Node_ListenStmt); ok { + return x.ListenStmt + } + return nil +} + +func (x *Node) GetUnlistenStmt() *UnlistenStmt { + if x, ok := x.GetNode().(*Node_UnlistenStmt); ok { + return x.UnlistenStmt + } + return nil +} + +func (x *Node) GetTransactionStmt() *TransactionStmt { + if x, ok := x.GetNode().(*Node_TransactionStmt); ok { + return x.TransactionStmt + } + return nil +} + +func (x *Node) GetViewStmt() *ViewStmt { + if x, ok := x.GetNode().(*Node_ViewStmt); ok { + return x.ViewStmt + } + return nil +} + +func (x *Node) GetLoadStmt() *LoadStmt { + if x, ok := x.GetNode().(*Node_LoadStmt); ok { + return x.LoadStmt + } + return nil +} + +func (x *Node) GetCreateDomainStmt() *CreateDomainStmt { + if x, ok := x.GetNode().(*Node_CreateDomainStmt); ok { + return x.CreateDomainStmt + } + return nil +} + +func (x *Node) GetCreatedbStmt() *CreatedbStmt { + if x, ok := x.GetNode().(*Node_CreatedbStmt); ok { + return x.CreatedbStmt + } + return nil +} + +func (x *Node) GetDropdbStmt() *DropdbStmt { + if x, ok := x.GetNode().(*Node_DropdbStmt); ok { + return x.DropdbStmt + } + return nil +} + +func (x *Node) GetVacuumStmt() *VacuumStmt { + if x, ok := x.GetNode().(*Node_VacuumStmt); ok { + return x.VacuumStmt + } + return nil +} + +func (x *Node) GetExplainStmt() *ExplainStmt { + if x, ok := x.GetNode().(*Node_ExplainStmt); ok { + return x.ExplainStmt + } + return nil +} + +func (x *Node) GetCreateTableAsStmt() *CreateTableAsStmt { + if x, ok := x.GetNode().(*Node_CreateTableAsStmt); ok { + return x.CreateTableAsStmt + } + return nil +} + +func (x *Node) GetCreateSeqStmt() *CreateSeqStmt { + if x, ok := x.GetNode().(*Node_CreateSeqStmt); ok { + return x.CreateSeqStmt + } + return nil +} + +func (x *Node) GetAlterSeqStmt() *AlterSeqStmt { + if x, ok := x.GetNode().(*Node_AlterSeqStmt); ok { + return x.AlterSeqStmt + } + return nil +} + +func (x *Node) GetVariableSetStmt() *VariableSetStmt { + if x, ok := x.GetNode().(*Node_VariableSetStmt); ok { + return x.VariableSetStmt + } + return nil +} + +func (x *Node) GetVariableShowStmt() *VariableShowStmt { + if x, ok := x.GetNode().(*Node_VariableShowStmt); ok { + return x.VariableShowStmt + } + return nil +} + +func (x *Node) GetDiscardStmt() *DiscardStmt { + if x, ok := x.GetNode().(*Node_DiscardStmt); ok { + return x.DiscardStmt + } + return nil +} + +func (x *Node) GetCreateTrigStmt() *CreateTrigStmt { + if x, ok := x.GetNode().(*Node_CreateTrigStmt); ok { + return x.CreateTrigStmt + } + return nil +} + +func (x *Node) GetCreatePlangStmt() *CreatePLangStmt { + if x, ok := x.GetNode().(*Node_CreatePlangStmt); ok { + return x.CreatePlangStmt + } + return nil +} + +func (x *Node) GetCreateRoleStmt() *CreateRoleStmt { + if x, ok := x.GetNode().(*Node_CreateRoleStmt); ok { + return x.CreateRoleStmt + } + return nil +} + +func (x *Node) GetAlterRoleStmt() *AlterRoleStmt { + if x, ok := x.GetNode().(*Node_AlterRoleStmt); ok { + return x.AlterRoleStmt + } + return nil +} + +func (x *Node) GetDropRoleStmt() *DropRoleStmt { + if x, ok := x.GetNode().(*Node_DropRoleStmt); ok { + return x.DropRoleStmt + } + return nil +} + +func (x *Node) GetLockStmt() *LockStmt { + if x, ok := x.GetNode().(*Node_LockStmt); ok { + return x.LockStmt + } + return nil +} + +func (x *Node) GetConstraintsSetStmt() *ConstraintsSetStmt { + if x, ok := x.GetNode().(*Node_ConstraintsSetStmt); ok { + return x.ConstraintsSetStmt + } + return nil +} + +func (x *Node) GetReindexStmt() *ReindexStmt { + if x, ok := x.GetNode().(*Node_ReindexStmt); ok { + return x.ReindexStmt + } + return nil +} + +func (x *Node) GetCheckPointStmt() *CheckPointStmt { + if x, ok := x.GetNode().(*Node_CheckPointStmt); ok { + return x.CheckPointStmt + } + return nil +} + +func (x *Node) GetCreateSchemaStmt() *CreateSchemaStmt { + if x, ok := x.GetNode().(*Node_CreateSchemaStmt); ok { + return x.CreateSchemaStmt + } + return nil +} + +func (x *Node) GetAlterDatabaseStmt() *AlterDatabaseStmt { + if x, ok := x.GetNode().(*Node_AlterDatabaseStmt); ok { + return x.AlterDatabaseStmt + } + return nil +} + +func (x *Node) GetAlterDatabaseSetStmt() *AlterDatabaseSetStmt { + if x, ok := x.GetNode().(*Node_AlterDatabaseSetStmt); ok { + return x.AlterDatabaseSetStmt + } + return nil +} + +func (x *Node) GetAlterRoleSetStmt() *AlterRoleSetStmt { + if x, ok := x.GetNode().(*Node_AlterRoleSetStmt); ok { + return x.AlterRoleSetStmt + } + return nil +} + +func (x *Node) GetCreateConversionStmt() *CreateConversionStmt { + if x, ok := x.GetNode().(*Node_CreateConversionStmt); ok { + return x.CreateConversionStmt + } + return nil +} + +func (x *Node) GetCreateCastStmt() *CreateCastStmt { + if x, ok := x.GetNode().(*Node_CreateCastStmt); ok { + return x.CreateCastStmt + } + return nil +} + +func (x *Node) GetCreateOpClassStmt() *CreateOpClassStmt { + if x, ok := x.GetNode().(*Node_CreateOpClassStmt); ok { + return x.CreateOpClassStmt + } + return nil +} + +func (x *Node) GetCreateOpFamilyStmt() *CreateOpFamilyStmt { + if x, ok := x.GetNode().(*Node_CreateOpFamilyStmt); ok { + return x.CreateOpFamilyStmt + } + return nil +} + +func (x *Node) GetAlterOpFamilyStmt() *AlterOpFamilyStmt { + if x, ok := x.GetNode().(*Node_AlterOpFamilyStmt); ok { + return x.AlterOpFamilyStmt + } + return nil +} + +func (x *Node) GetPrepareStmt() *PrepareStmt { + if x, ok := x.GetNode().(*Node_PrepareStmt); ok { + return x.PrepareStmt + } + return nil +} + +func (x *Node) GetExecuteStmt() *ExecuteStmt { + if x, ok := x.GetNode().(*Node_ExecuteStmt); ok { + return x.ExecuteStmt + } + return nil +} + +func (x *Node) GetDeallocateStmt() *DeallocateStmt { + if x, ok := x.GetNode().(*Node_DeallocateStmt); ok { + return x.DeallocateStmt + } + return nil +} + +func (x *Node) GetDeclareCursorStmt() *DeclareCursorStmt { + if x, ok := x.GetNode().(*Node_DeclareCursorStmt); ok { + return x.DeclareCursorStmt + } + return nil +} + +func (x *Node) GetCreateTableSpaceStmt() *CreateTableSpaceStmt { + if x, ok := x.GetNode().(*Node_CreateTableSpaceStmt); ok { + return x.CreateTableSpaceStmt + } + return nil +} + +func (x *Node) GetDropTableSpaceStmt() *DropTableSpaceStmt { + if x, ok := x.GetNode().(*Node_DropTableSpaceStmt); ok { + return x.DropTableSpaceStmt + } + return nil +} + +func (x *Node) GetAlterObjectDependsStmt() *AlterObjectDependsStmt { + if x, ok := x.GetNode().(*Node_AlterObjectDependsStmt); ok { + return x.AlterObjectDependsStmt + } + return nil +} + +func (x *Node) GetAlterObjectSchemaStmt() *AlterObjectSchemaStmt { + if x, ok := x.GetNode().(*Node_AlterObjectSchemaStmt); ok { + return x.AlterObjectSchemaStmt + } + return nil +} + +func (x *Node) GetAlterOwnerStmt() *AlterOwnerStmt { + if x, ok := x.GetNode().(*Node_AlterOwnerStmt); ok { + return x.AlterOwnerStmt + } + return nil +} + +func (x *Node) GetAlterOperatorStmt() *AlterOperatorStmt { + if x, ok := x.GetNode().(*Node_AlterOperatorStmt); ok { + return x.AlterOperatorStmt + } + return nil +} + +func (x *Node) GetAlterTypeStmt() *AlterTypeStmt { + if x, ok := x.GetNode().(*Node_AlterTypeStmt); ok { + return x.AlterTypeStmt + } + return nil +} + +func (x *Node) GetDropOwnedStmt() *DropOwnedStmt { + if x, ok := x.GetNode().(*Node_DropOwnedStmt); ok { + return x.DropOwnedStmt + } + return nil +} + +func (x *Node) GetReassignOwnedStmt() *ReassignOwnedStmt { + if x, ok := x.GetNode().(*Node_ReassignOwnedStmt); ok { + return x.ReassignOwnedStmt + } + return nil +} + +func (x *Node) GetCompositeTypeStmt() *CompositeTypeStmt { + if x, ok := x.GetNode().(*Node_CompositeTypeStmt); ok { + return x.CompositeTypeStmt + } + return nil +} + +func (x *Node) GetCreateEnumStmt() *CreateEnumStmt { + if x, ok := x.GetNode().(*Node_CreateEnumStmt); ok { + return x.CreateEnumStmt + } + return nil +} + +func (x *Node) GetCreateRangeStmt() *CreateRangeStmt { + if x, ok := x.GetNode().(*Node_CreateRangeStmt); ok { + return x.CreateRangeStmt + } + return nil +} + +func (x *Node) GetAlterEnumStmt() *AlterEnumStmt { + if x, ok := x.GetNode().(*Node_AlterEnumStmt); ok { + return x.AlterEnumStmt + } + return nil +} + +func (x *Node) GetAlterTsdictionaryStmt() *AlterTSDictionaryStmt { + if x, ok := x.GetNode().(*Node_AlterTsdictionaryStmt); ok { + return x.AlterTsdictionaryStmt + } + return nil +} + +func (x *Node) GetAlterTsconfigurationStmt() *AlterTSConfigurationStmt { + if x, ok := x.GetNode().(*Node_AlterTsconfigurationStmt); ok { + return x.AlterTsconfigurationStmt + } + return nil +} + +func (x *Node) GetCreateFdwStmt() *CreateFdwStmt { + if x, ok := x.GetNode().(*Node_CreateFdwStmt); ok { + return x.CreateFdwStmt + } + return nil +} + +func (x *Node) GetAlterFdwStmt() *AlterFdwStmt { + if x, ok := x.GetNode().(*Node_AlterFdwStmt); ok { + return x.AlterFdwStmt + } + return nil +} + +func (x *Node) GetCreateForeignServerStmt() *CreateForeignServerStmt { + if x, ok := x.GetNode().(*Node_CreateForeignServerStmt); ok { + return x.CreateForeignServerStmt + } + return nil +} + +func (x *Node) GetAlterForeignServerStmt() *AlterForeignServerStmt { + if x, ok := x.GetNode().(*Node_AlterForeignServerStmt); ok { + return x.AlterForeignServerStmt + } + return nil +} + +func (x *Node) GetCreateUserMappingStmt() *CreateUserMappingStmt { + if x, ok := x.GetNode().(*Node_CreateUserMappingStmt); ok { + return x.CreateUserMappingStmt + } + return nil +} + +func (x *Node) GetAlterUserMappingStmt() *AlterUserMappingStmt { + if x, ok := x.GetNode().(*Node_AlterUserMappingStmt); ok { + return x.AlterUserMappingStmt + } + return nil +} + +func (x *Node) GetDropUserMappingStmt() *DropUserMappingStmt { + if x, ok := x.GetNode().(*Node_DropUserMappingStmt); ok { + return x.DropUserMappingStmt + } + return nil +} + +func (x *Node) GetAlterTableSpaceOptionsStmt() *AlterTableSpaceOptionsStmt { + if x, ok := x.GetNode().(*Node_AlterTableSpaceOptionsStmt); ok { + return x.AlterTableSpaceOptionsStmt + } + return nil +} + +func (x *Node) GetAlterTableMoveAllStmt() *AlterTableMoveAllStmt { + if x, ok := x.GetNode().(*Node_AlterTableMoveAllStmt); ok { + return x.AlterTableMoveAllStmt + } + return nil +} + +func (x *Node) GetSecLabelStmt() *SecLabelStmt { + if x, ok := x.GetNode().(*Node_SecLabelStmt); ok { + return x.SecLabelStmt + } + return nil +} + +func (x *Node) GetCreateForeignTableStmt() *CreateForeignTableStmt { + if x, ok := x.GetNode().(*Node_CreateForeignTableStmt); ok { + return x.CreateForeignTableStmt + } + return nil +} + +func (x *Node) GetImportForeignSchemaStmt() *ImportForeignSchemaStmt { + if x, ok := x.GetNode().(*Node_ImportForeignSchemaStmt); ok { + return x.ImportForeignSchemaStmt + } + return nil +} + +func (x *Node) GetCreateExtensionStmt() *CreateExtensionStmt { + if x, ok := x.GetNode().(*Node_CreateExtensionStmt); ok { + return x.CreateExtensionStmt + } + return nil +} + +func (x *Node) GetAlterExtensionStmt() *AlterExtensionStmt { + if x, ok := x.GetNode().(*Node_AlterExtensionStmt); ok { + return x.AlterExtensionStmt + } + return nil +} + +func (x *Node) GetAlterExtensionContentsStmt() *AlterExtensionContentsStmt { + if x, ok := x.GetNode().(*Node_AlterExtensionContentsStmt); ok { + return x.AlterExtensionContentsStmt + } + return nil +} + +func (x *Node) GetCreateEventTrigStmt() *CreateEventTrigStmt { + if x, ok := x.GetNode().(*Node_CreateEventTrigStmt); ok { + return x.CreateEventTrigStmt + } + return nil +} + +func (x *Node) GetAlterEventTrigStmt() *AlterEventTrigStmt { + if x, ok := x.GetNode().(*Node_AlterEventTrigStmt); ok { + return x.AlterEventTrigStmt + } + return nil +} + +func (x *Node) GetRefreshMatViewStmt() *RefreshMatViewStmt { + if x, ok := x.GetNode().(*Node_RefreshMatViewStmt); ok { + return x.RefreshMatViewStmt + } + return nil +} + +func (x *Node) GetReplicaIdentityStmt() *ReplicaIdentityStmt { + if x, ok := x.GetNode().(*Node_ReplicaIdentityStmt); ok { + return x.ReplicaIdentityStmt + } + return nil +} + +func (x *Node) GetAlterSystemStmt() *AlterSystemStmt { + if x, ok := x.GetNode().(*Node_AlterSystemStmt); ok { + return x.AlterSystemStmt + } + return nil +} + +func (x *Node) GetCreatePolicyStmt() *CreatePolicyStmt { + if x, ok := x.GetNode().(*Node_CreatePolicyStmt); ok { + return x.CreatePolicyStmt + } + return nil +} + +func (x *Node) GetAlterPolicyStmt() *AlterPolicyStmt { + if x, ok := x.GetNode().(*Node_AlterPolicyStmt); ok { + return x.AlterPolicyStmt + } + return nil +} + +func (x *Node) GetCreateTransformStmt() *CreateTransformStmt { + if x, ok := x.GetNode().(*Node_CreateTransformStmt); ok { + return x.CreateTransformStmt + } + return nil +} + +func (x *Node) GetCreateAmStmt() *CreateAmStmt { + if x, ok := x.GetNode().(*Node_CreateAmStmt); ok { + return x.CreateAmStmt + } + return nil +} + +func (x *Node) GetCreatePublicationStmt() *CreatePublicationStmt { + if x, ok := x.GetNode().(*Node_CreatePublicationStmt); ok { + return x.CreatePublicationStmt + } + return nil +} + +func (x *Node) GetAlterPublicationStmt() *AlterPublicationStmt { + if x, ok := x.GetNode().(*Node_AlterPublicationStmt); ok { + return x.AlterPublicationStmt + } + return nil +} + +func (x *Node) GetCreateSubscriptionStmt() *CreateSubscriptionStmt { + if x, ok := x.GetNode().(*Node_CreateSubscriptionStmt); ok { + return x.CreateSubscriptionStmt + } + return nil +} + +func (x *Node) GetAlterSubscriptionStmt() *AlterSubscriptionStmt { + if x, ok := x.GetNode().(*Node_AlterSubscriptionStmt); ok { + return x.AlterSubscriptionStmt + } + return nil +} + +func (x *Node) GetDropSubscriptionStmt() *DropSubscriptionStmt { + if x, ok := x.GetNode().(*Node_DropSubscriptionStmt); ok { + return x.DropSubscriptionStmt + } + return nil +} + +func (x *Node) GetCreateStatsStmt() *CreateStatsStmt { + if x, ok := x.GetNode().(*Node_CreateStatsStmt); ok { + return x.CreateStatsStmt + } + return nil +} + +func (x *Node) GetAlterCollationStmt() *AlterCollationStmt { + if x, ok := x.GetNode().(*Node_AlterCollationStmt); ok { + return x.AlterCollationStmt + } + return nil +} + +func (x *Node) GetCallStmt() *CallStmt { + if x, ok := x.GetNode().(*Node_CallStmt); ok { + return x.CallStmt + } + return nil +} + +func (x *Node) GetAlterStatsStmt() *AlterStatsStmt { + if x, ok := x.GetNode().(*Node_AlterStatsStmt); ok { + return x.AlterStatsStmt + } + return nil +} + +func (x *Node) GetAExpr() *A_Expr { + if x, ok := x.GetNode().(*Node_AExpr); ok { + return x.AExpr + } + return nil +} + +func (x *Node) GetColumnRef() *ColumnRef { + if x, ok := x.GetNode().(*Node_ColumnRef); ok { + return x.ColumnRef + } + return nil +} + +func (x *Node) GetParamRef() *ParamRef { + if x, ok := x.GetNode().(*Node_ParamRef); ok { + return x.ParamRef + } + return nil +} + +func (x *Node) GetAConst() *A_Const { + if x, ok := x.GetNode().(*Node_AConst); ok { + return x.AConst + } + return nil +} + +func (x *Node) GetFuncCall() *FuncCall { + if x, ok := x.GetNode().(*Node_FuncCall); ok { + return x.FuncCall + } + return nil +} + +func (x *Node) GetAStar() *A_Star { + if x, ok := x.GetNode().(*Node_AStar); ok { + return x.AStar + } + return nil +} + +func (x *Node) GetAIndices() *A_Indices { + if x, ok := x.GetNode().(*Node_AIndices); ok { + return x.AIndices + } + return nil +} + +func (x *Node) GetAIndirection() *A_Indirection { + if x, ok := x.GetNode().(*Node_AIndirection); ok { + return x.AIndirection + } + return nil +} + +func (x *Node) GetAArrayExpr() *A_ArrayExpr { + if x, ok := x.GetNode().(*Node_AArrayExpr); ok { + return x.AArrayExpr + } + return nil +} + +func (x *Node) GetResTarget() *ResTarget { + if x, ok := x.GetNode().(*Node_ResTarget); ok { + return x.ResTarget + } + return nil +} + +func (x *Node) GetMultiAssignRef() *MultiAssignRef { + if x, ok := x.GetNode().(*Node_MultiAssignRef); ok { + return x.MultiAssignRef + } + return nil +} + +func (x *Node) GetTypeCast() *TypeCast { + if x, ok := x.GetNode().(*Node_TypeCast); ok { + return x.TypeCast + } + return nil +} + +func (x *Node) GetCollateClause() *CollateClause { + if x, ok := x.GetNode().(*Node_CollateClause); ok { + return x.CollateClause + } + return nil +} + +func (x *Node) GetSortBy() *SortBy { + if x, ok := x.GetNode().(*Node_SortBy); ok { + return x.SortBy + } + return nil +} + +func (x *Node) GetWindowDef() *WindowDef { + if x, ok := x.GetNode().(*Node_WindowDef); ok { + return x.WindowDef + } + return nil +} + +func (x *Node) GetRangeSubselect() *RangeSubselect { + if x, ok := x.GetNode().(*Node_RangeSubselect); ok { + return x.RangeSubselect + } + return nil +} + +func (x *Node) GetRangeFunction() *RangeFunction { + if x, ok := x.GetNode().(*Node_RangeFunction); ok { + return x.RangeFunction + } + return nil +} + +func (x *Node) GetRangeTableSample() *RangeTableSample { + if x, ok := x.GetNode().(*Node_RangeTableSample); ok { + return x.RangeTableSample + } + return nil +} + +func (x *Node) GetRangeTableFunc() *RangeTableFunc { + if x, ok := x.GetNode().(*Node_RangeTableFunc); ok { + return x.RangeTableFunc + } + return nil +} + +func (x *Node) GetRangeTableFuncCol() *RangeTableFuncCol { + if x, ok := x.GetNode().(*Node_RangeTableFuncCol); ok { + return x.RangeTableFuncCol + } + return nil +} + +func (x *Node) GetTypeName() *TypeName { + if x, ok := x.GetNode().(*Node_TypeName); ok { + return x.TypeName + } + return nil +} + +func (x *Node) GetColumnDef() *ColumnDef { + if x, ok := x.GetNode().(*Node_ColumnDef); ok { + return x.ColumnDef + } + return nil +} + +func (x *Node) GetIndexElem() *IndexElem { + if x, ok := x.GetNode().(*Node_IndexElem); ok { + return x.IndexElem + } + return nil +} + +func (x *Node) GetConstraint() *Constraint { + if x, ok := x.GetNode().(*Node_Constraint); ok { + return x.Constraint + } + return nil +} + +func (x *Node) GetDefElem() *DefElem { + if x, ok := x.GetNode().(*Node_DefElem); ok { + return x.DefElem + } + return nil +} + +func (x *Node) GetRangeTblEntry() *RangeTblEntry { + if x, ok := x.GetNode().(*Node_RangeTblEntry); ok { + return x.RangeTblEntry + } + return nil +} + +func (x *Node) GetRangeTblFunction() *RangeTblFunction { + if x, ok := x.GetNode().(*Node_RangeTblFunction); ok { + return x.RangeTblFunction + } + return nil +} + +func (x *Node) GetTableSampleClause() *TableSampleClause { + if x, ok := x.GetNode().(*Node_TableSampleClause); ok { + return x.TableSampleClause + } + return nil +} + +func (x *Node) GetWithCheckOption() *WithCheckOption { + if x, ok := x.GetNode().(*Node_WithCheckOption); ok { + return x.WithCheckOption + } + return nil +} + +func (x *Node) GetSortGroupClause() *SortGroupClause { + if x, ok := x.GetNode().(*Node_SortGroupClause); ok { + return x.SortGroupClause + } + return nil +} + +func (x *Node) GetGroupingSet() *GroupingSet { + if x, ok := x.GetNode().(*Node_GroupingSet); ok { + return x.GroupingSet + } + return nil +} + +func (x *Node) GetWindowClause() *WindowClause { + if x, ok := x.GetNode().(*Node_WindowClause); ok { + return x.WindowClause + } + return nil +} + +func (x *Node) GetObjectWithArgs() *ObjectWithArgs { + if x, ok := x.GetNode().(*Node_ObjectWithArgs); ok { + return x.ObjectWithArgs + } + return nil +} + +func (x *Node) GetAccessPriv() *AccessPriv { + if x, ok := x.GetNode().(*Node_AccessPriv); ok { + return x.AccessPriv + } + return nil +} + +func (x *Node) GetCreateOpClassItem() *CreateOpClassItem { + if x, ok := x.GetNode().(*Node_CreateOpClassItem); ok { + return x.CreateOpClassItem + } + return nil +} + +func (x *Node) GetTableLikeClause() *TableLikeClause { + if x, ok := x.GetNode().(*Node_TableLikeClause); ok { + return x.TableLikeClause + } + return nil +} + +func (x *Node) GetFunctionParameter() *FunctionParameter { + if x, ok := x.GetNode().(*Node_FunctionParameter); ok { + return x.FunctionParameter + } + return nil +} + +func (x *Node) GetLockingClause() *LockingClause { + if x, ok := x.GetNode().(*Node_LockingClause); ok { + return x.LockingClause + } + return nil +} + +func (x *Node) GetRowMarkClause() *RowMarkClause { + if x, ok := x.GetNode().(*Node_RowMarkClause); ok { + return x.RowMarkClause + } + return nil +} + +func (x *Node) GetXmlSerialize() *XmlSerialize { + if x, ok := x.GetNode().(*Node_XmlSerialize); ok { + return x.XmlSerialize + } + return nil +} + +func (x *Node) GetWithClause() *WithClause { + if x, ok := x.GetNode().(*Node_WithClause); ok { + return x.WithClause + } + return nil +} + +func (x *Node) GetInferClause() *InferClause { + if x, ok := x.GetNode().(*Node_InferClause); ok { + return x.InferClause + } + return nil +} + +func (x *Node) GetOnConflictClause() *OnConflictClause { + if x, ok := x.GetNode().(*Node_OnConflictClause); ok { + return x.OnConflictClause + } + return nil +} + +func (x *Node) GetCommonTableExpr() *CommonTableExpr { + if x, ok := x.GetNode().(*Node_CommonTableExpr); ok { + return x.CommonTableExpr + } + return nil +} + +func (x *Node) GetRoleSpec() *RoleSpec { + if x, ok := x.GetNode().(*Node_RoleSpec); ok { + return x.RoleSpec + } + return nil +} + +func (x *Node) GetTriggerTransition() *TriggerTransition { + if x, ok := x.GetNode().(*Node_TriggerTransition); ok { + return x.TriggerTransition + } + return nil +} + +func (x *Node) GetPartitionElem() *PartitionElem { + if x, ok := x.GetNode().(*Node_PartitionElem); ok { + return x.PartitionElem + } + return nil +} + +func (x *Node) GetPartitionSpec() *PartitionSpec { + if x, ok := x.GetNode().(*Node_PartitionSpec); ok { + return x.PartitionSpec + } + return nil +} + +func (x *Node) GetPartitionBoundSpec() *PartitionBoundSpec { + if x, ok := x.GetNode().(*Node_PartitionBoundSpec); ok { + return x.PartitionBoundSpec + } + return nil +} + +func (x *Node) GetPartitionRangeDatum() *PartitionRangeDatum { + if x, ok := x.GetNode().(*Node_PartitionRangeDatum); ok { + return x.PartitionRangeDatum + } + return nil +} + +func (x *Node) GetPartitionCmd() *PartitionCmd { + if x, ok := x.GetNode().(*Node_PartitionCmd); ok { + return x.PartitionCmd + } + return nil +} + +func (x *Node) GetVacuumRelation() *VacuumRelation { + if x, ok := x.GetNode().(*Node_VacuumRelation); ok { + return x.VacuumRelation + } + return nil +} + +func (x *Node) GetInlineCodeBlock() *InlineCodeBlock { + if x, ok := x.GetNode().(*Node_InlineCodeBlock); ok { + return x.InlineCodeBlock + } + return nil +} + +func (x *Node) GetCallContext() *CallContext { + if x, ok := x.GetNode().(*Node_CallContext); ok { + return x.CallContext + } + return nil +} + +func (x *Node) GetInteger() *Integer { + if x, ok := x.GetNode().(*Node_Integer); ok { + return x.Integer + } + return nil +} + +func (x *Node) GetFloat() *Float { + if x, ok := x.GetNode().(*Node_Float); ok { + return x.Float + } + return nil +} + +func (x *Node) GetString_() *String { + if x, ok := x.GetNode().(*Node_String_); ok { + return x.String_ + } + return nil +} + +func (x *Node) GetBitString() *BitString { + if x, ok := x.GetNode().(*Node_BitString); ok { + return x.BitString + } + return nil +} + +func (x *Node) GetNull() *Null { + if x, ok := x.GetNode().(*Node_Null); ok { + return x.Null + } + return nil +} + +func (x *Node) GetList() *List { + if x, ok := x.GetNode().(*Node_List); ok { + return x.List + } + return nil +} + +func (x *Node) GetIntList() *IntList { + if x, ok := x.GetNode().(*Node_IntList); ok { + return x.IntList + } + return nil +} + +func (x *Node) GetOidList() *OidList { + if x, ok := x.GetNode().(*Node_OidList); ok { + return x.OidList + } + return nil +} + +type isNode_Node interface { + isNode_Node() +} + +type Node_Alias struct { + Alias *Alias `protobuf:"bytes,1,opt,name=alias,json=Alias,proto3,oneof"` +} + +type Node_RangeVar struct { + RangeVar *RangeVar `protobuf:"bytes,2,opt,name=range_var,json=RangeVar,proto3,oneof"` +} + +type Node_TableFunc struct { + TableFunc *TableFunc `protobuf:"bytes,3,opt,name=table_func,json=TableFunc,proto3,oneof"` +} + +type Node_Expr struct { + Expr *Expr `protobuf:"bytes,4,opt,name=expr,json=Expr,proto3,oneof"` +} + +type Node_Var struct { + Var *Var `protobuf:"bytes,5,opt,name=var,json=Var,proto3,oneof"` +} + +type Node_Param struct { + Param *Param `protobuf:"bytes,6,opt,name=param,json=Param,proto3,oneof"` +} + +type Node_Aggref struct { + Aggref *Aggref `protobuf:"bytes,7,opt,name=aggref,json=Aggref,proto3,oneof"` +} + +type Node_GroupingFunc struct { + GroupingFunc *GroupingFunc `protobuf:"bytes,8,opt,name=grouping_func,json=GroupingFunc,proto3,oneof"` +} + +type Node_WindowFunc struct { + WindowFunc *WindowFunc `protobuf:"bytes,9,opt,name=window_func,json=WindowFunc,proto3,oneof"` +} + +type Node_SubscriptingRef struct { + SubscriptingRef *SubscriptingRef `protobuf:"bytes,10,opt,name=subscripting_ref,json=SubscriptingRef,proto3,oneof"` +} + +type Node_FuncExpr struct { + FuncExpr *FuncExpr `protobuf:"bytes,11,opt,name=func_expr,json=FuncExpr,proto3,oneof"` +} + +type Node_NamedArgExpr struct { + NamedArgExpr *NamedArgExpr `protobuf:"bytes,12,opt,name=named_arg_expr,json=NamedArgExpr,proto3,oneof"` +} + +type Node_OpExpr struct { + OpExpr *OpExpr `protobuf:"bytes,13,opt,name=op_expr,json=OpExpr,proto3,oneof"` +} + +type Node_DistinctExpr struct { + DistinctExpr *DistinctExpr `protobuf:"bytes,14,opt,name=distinct_expr,json=DistinctExpr,proto3,oneof"` +} + +type Node_NullIfExpr struct { + NullIfExpr *NullIfExpr `protobuf:"bytes,15,opt,name=null_if_expr,json=NullIfExpr,proto3,oneof"` +} + +type Node_ScalarArrayOpExpr struct { + ScalarArrayOpExpr *ScalarArrayOpExpr `protobuf:"bytes,16,opt,name=scalar_array_op_expr,json=ScalarArrayOpExpr,proto3,oneof"` +} + +type Node_BoolExpr struct { + BoolExpr *BoolExpr `protobuf:"bytes,17,opt,name=bool_expr,json=BoolExpr,proto3,oneof"` +} + +type Node_SubLink struct { + SubLink *SubLink `protobuf:"bytes,18,opt,name=sub_link,json=SubLink,proto3,oneof"` +} + +type Node_SubPlan struct { + SubPlan *SubPlan `protobuf:"bytes,19,opt,name=sub_plan,json=SubPlan,proto3,oneof"` +} + +type Node_AlternativeSubPlan struct { + AlternativeSubPlan *AlternativeSubPlan `protobuf:"bytes,20,opt,name=alternative_sub_plan,json=AlternativeSubPlan,proto3,oneof"` +} + +type Node_FieldSelect struct { + FieldSelect *FieldSelect `protobuf:"bytes,21,opt,name=field_select,json=FieldSelect,proto3,oneof"` +} + +type Node_FieldStore struct { + FieldStore *FieldStore `protobuf:"bytes,22,opt,name=field_store,json=FieldStore,proto3,oneof"` +} + +type Node_RelabelType struct { + RelabelType *RelabelType `protobuf:"bytes,23,opt,name=relabel_type,json=RelabelType,proto3,oneof"` +} + +type Node_CoerceViaIo struct { + CoerceViaIo *CoerceViaIO `protobuf:"bytes,24,opt,name=coerce_via_io,json=CoerceViaIO,proto3,oneof"` +} + +type Node_ArrayCoerceExpr struct { + ArrayCoerceExpr *ArrayCoerceExpr `protobuf:"bytes,25,opt,name=array_coerce_expr,json=ArrayCoerceExpr,proto3,oneof"` +} + +type Node_ConvertRowtypeExpr struct { + ConvertRowtypeExpr *ConvertRowtypeExpr `protobuf:"bytes,26,opt,name=convert_rowtype_expr,json=ConvertRowtypeExpr,proto3,oneof"` +} + +type Node_CollateExpr struct { + CollateExpr *CollateExpr `protobuf:"bytes,27,opt,name=collate_expr,json=CollateExpr,proto3,oneof"` +} + +type Node_CaseExpr struct { + CaseExpr *CaseExpr `protobuf:"bytes,28,opt,name=case_expr,json=CaseExpr,proto3,oneof"` +} + +type Node_CaseWhen struct { + CaseWhen *CaseWhen `protobuf:"bytes,29,opt,name=case_when,json=CaseWhen,proto3,oneof"` +} + +type Node_CaseTestExpr struct { + CaseTestExpr *CaseTestExpr `protobuf:"bytes,30,opt,name=case_test_expr,json=CaseTestExpr,proto3,oneof"` +} + +type Node_ArrayExpr struct { + ArrayExpr *ArrayExpr `protobuf:"bytes,31,opt,name=array_expr,json=ArrayExpr,proto3,oneof"` +} + +type Node_RowExpr struct { + RowExpr *RowExpr `protobuf:"bytes,32,opt,name=row_expr,json=RowExpr,proto3,oneof"` +} + +type Node_RowCompareExpr struct { + RowCompareExpr *RowCompareExpr `protobuf:"bytes,33,opt,name=row_compare_expr,json=RowCompareExpr,proto3,oneof"` +} + +type Node_CoalesceExpr struct { + CoalesceExpr *CoalesceExpr `protobuf:"bytes,34,opt,name=coalesce_expr,json=CoalesceExpr,proto3,oneof"` +} + +type Node_MinMaxExpr struct { + MinMaxExpr *MinMaxExpr `protobuf:"bytes,35,opt,name=min_max_expr,json=MinMaxExpr,proto3,oneof"` +} + +type Node_SqlvalueFunction struct { + SqlvalueFunction *SQLValueFunction `protobuf:"bytes,36,opt,name=sqlvalue_function,json=SQLValueFunction,proto3,oneof"` +} + +type Node_XmlExpr struct { + XmlExpr *XmlExpr `protobuf:"bytes,37,opt,name=xml_expr,json=XmlExpr,proto3,oneof"` +} + +type Node_NullTest struct { + NullTest *NullTest `protobuf:"bytes,38,opt,name=null_test,json=NullTest,proto3,oneof"` +} + +type Node_BooleanTest struct { + BooleanTest *BooleanTest `protobuf:"bytes,39,opt,name=boolean_test,json=BooleanTest,proto3,oneof"` +} + +type Node_CoerceToDomain struct { + CoerceToDomain *CoerceToDomain `protobuf:"bytes,40,opt,name=coerce_to_domain,json=CoerceToDomain,proto3,oneof"` +} + +type Node_CoerceToDomainValue struct { + CoerceToDomainValue *CoerceToDomainValue `protobuf:"bytes,41,opt,name=coerce_to_domain_value,json=CoerceToDomainValue,proto3,oneof"` +} + +type Node_SetToDefault struct { + SetToDefault *SetToDefault `protobuf:"bytes,42,opt,name=set_to_default,json=SetToDefault,proto3,oneof"` +} + +type Node_CurrentOfExpr struct { + CurrentOfExpr *CurrentOfExpr `protobuf:"bytes,43,opt,name=current_of_expr,json=CurrentOfExpr,proto3,oneof"` +} + +type Node_NextValueExpr struct { + NextValueExpr *NextValueExpr `protobuf:"bytes,44,opt,name=next_value_expr,json=NextValueExpr,proto3,oneof"` +} + +type Node_InferenceElem struct { + InferenceElem *InferenceElem `protobuf:"bytes,45,opt,name=inference_elem,json=InferenceElem,proto3,oneof"` +} + +type Node_TargetEntry struct { + TargetEntry *TargetEntry `protobuf:"bytes,46,opt,name=target_entry,json=TargetEntry,proto3,oneof"` +} + +type Node_RangeTblRef struct { + RangeTblRef *RangeTblRef `protobuf:"bytes,47,opt,name=range_tbl_ref,json=RangeTblRef,proto3,oneof"` +} + +type Node_JoinExpr struct { + JoinExpr *JoinExpr `protobuf:"bytes,48,opt,name=join_expr,json=JoinExpr,proto3,oneof"` +} + +type Node_FromExpr struct { + FromExpr *FromExpr `protobuf:"bytes,49,opt,name=from_expr,json=FromExpr,proto3,oneof"` +} + +type Node_OnConflictExpr struct { + OnConflictExpr *OnConflictExpr `protobuf:"bytes,50,opt,name=on_conflict_expr,json=OnConflictExpr,proto3,oneof"` +} + +type Node_IntoClause struct { + IntoClause *IntoClause `protobuf:"bytes,51,opt,name=into_clause,json=IntoClause,proto3,oneof"` +} + +type Node_RawStmt struct { + RawStmt *RawStmt `protobuf:"bytes,52,opt,name=raw_stmt,json=RawStmt,proto3,oneof"` +} + +type Node_Query struct { + Query *Query `protobuf:"bytes,53,opt,name=query,json=Query,proto3,oneof"` +} + +type Node_InsertStmt struct { + InsertStmt *InsertStmt `protobuf:"bytes,54,opt,name=insert_stmt,json=InsertStmt,proto3,oneof"` +} + +type Node_DeleteStmt struct { + DeleteStmt *DeleteStmt `protobuf:"bytes,55,opt,name=delete_stmt,json=DeleteStmt,proto3,oneof"` +} + +type Node_UpdateStmt struct { + UpdateStmt *UpdateStmt `protobuf:"bytes,56,opt,name=update_stmt,json=UpdateStmt,proto3,oneof"` +} + +type Node_SelectStmt struct { + SelectStmt *SelectStmt `protobuf:"bytes,57,opt,name=select_stmt,json=SelectStmt,proto3,oneof"` +} + +type Node_AlterTableStmt struct { + AlterTableStmt *AlterTableStmt `protobuf:"bytes,58,opt,name=alter_table_stmt,json=AlterTableStmt,proto3,oneof"` +} + +type Node_AlterTableCmd struct { + AlterTableCmd *AlterTableCmd `protobuf:"bytes,59,opt,name=alter_table_cmd,json=AlterTableCmd,proto3,oneof"` +} + +type Node_AlterDomainStmt struct { + AlterDomainStmt *AlterDomainStmt `protobuf:"bytes,60,opt,name=alter_domain_stmt,json=AlterDomainStmt,proto3,oneof"` +} + +type Node_SetOperationStmt struct { + SetOperationStmt *SetOperationStmt `protobuf:"bytes,61,opt,name=set_operation_stmt,json=SetOperationStmt,proto3,oneof"` +} + +type Node_GrantStmt struct { + GrantStmt *GrantStmt `protobuf:"bytes,62,opt,name=grant_stmt,json=GrantStmt,proto3,oneof"` +} + +type Node_GrantRoleStmt struct { + GrantRoleStmt *GrantRoleStmt `protobuf:"bytes,63,opt,name=grant_role_stmt,json=GrantRoleStmt,proto3,oneof"` +} + +type Node_AlterDefaultPrivilegesStmt struct { + AlterDefaultPrivilegesStmt *AlterDefaultPrivilegesStmt `protobuf:"bytes,64,opt,name=alter_default_privileges_stmt,json=AlterDefaultPrivilegesStmt,proto3,oneof"` +} + +type Node_ClosePortalStmt struct { + ClosePortalStmt *ClosePortalStmt `protobuf:"bytes,65,opt,name=close_portal_stmt,json=ClosePortalStmt,proto3,oneof"` +} + +type Node_ClusterStmt struct { + ClusterStmt *ClusterStmt `protobuf:"bytes,66,opt,name=cluster_stmt,json=ClusterStmt,proto3,oneof"` +} + +type Node_CopyStmt struct { + CopyStmt *CopyStmt `protobuf:"bytes,67,opt,name=copy_stmt,json=CopyStmt,proto3,oneof"` +} + +type Node_CreateStmt struct { + CreateStmt *CreateStmt `protobuf:"bytes,68,opt,name=create_stmt,json=CreateStmt,proto3,oneof"` +} + +type Node_DefineStmt struct { + DefineStmt *DefineStmt `protobuf:"bytes,69,opt,name=define_stmt,json=DefineStmt,proto3,oneof"` +} + +type Node_DropStmt struct { + DropStmt *DropStmt `protobuf:"bytes,70,opt,name=drop_stmt,json=DropStmt,proto3,oneof"` +} + +type Node_TruncateStmt struct { + TruncateStmt *TruncateStmt `protobuf:"bytes,71,opt,name=truncate_stmt,json=TruncateStmt,proto3,oneof"` +} + +type Node_CommentStmt struct { + CommentStmt *CommentStmt `protobuf:"bytes,72,opt,name=comment_stmt,json=CommentStmt,proto3,oneof"` +} + +type Node_FetchStmt struct { + FetchStmt *FetchStmt `protobuf:"bytes,73,opt,name=fetch_stmt,json=FetchStmt,proto3,oneof"` +} + +type Node_IndexStmt struct { + IndexStmt *IndexStmt `protobuf:"bytes,74,opt,name=index_stmt,json=IndexStmt,proto3,oneof"` +} + +type Node_CreateFunctionStmt struct { + CreateFunctionStmt *CreateFunctionStmt `protobuf:"bytes,75,opt,name=create_function_stmt,json=CreateFunctionStmt,proto3,oneof"` +} + +type Node_AlterFunctionStmt struct { + AlterFunctionStmt *AlterFunctionStmt `protobuf:"bytes,76,opt,name=alter_function_stmt,json=AlterFunctionStmt,proto3,oneof"` +} + +type Node_DoStmt struct { + DoStmt *DoStmt `protobuf:"bytes,77,opt,name=do_stmt,json=DoStmt,proto3,oneof"` +} + +type Node_RenameStmt struct { + RenameStmt *RenameStmt `protobuf:"bytes,78,opt,name=rename_stmt,json=RenameStmt,proto3,oneof"` +} + +type Node_RuleStmt struct { + RuleStmt *RuleStmt `protobuf:"bytes,79,opt,name=rule_stmt,json=RuleStmt,proto3,oneof"` +} + +type Node_NotifyStmt struct { + NotifyStmt *NotifyStmt `protobuf:"bytes,80,opt,name=notify_stmt,json=NotifyStmt,proto3,oneof"` +} + +type Node_ListenStmt struct { + ListenStmt *ListenStmt `protobuf:"bytes,81,opt,name=listen_stmt,json=ListenStmt,proto3,oneof"` +} + +type Node_UnlistenStmt struct { + UnlistenStmt *UnlistenStmt `protobuf:"bytes,82,opt,name=unlisten_stmt,json=UnlistenStmt,proto3,oneof"` +} + +type Node_TransactionStmt struct { + TransactionStmt *TransactionStmt `protobuf:"bytes,83,opt,name=transaction_stmt,json=TransactionStmt,proto3,oneof"` +} + +type Node_ViewStmt struct { + ViewStmt *ViewStmt `protobuf:"bytes,84,opt,name=view_stmt,json=ViewStmt,proto3,oneof"` +} + +type Node_LoadStmt struct { + LoadStmt *LoadStmt `protobuf:"bytes,85,opt,name=load_stmt,json=LoadStmt,proto3,oneof"` +} + +type Node_CreateDomainStmt struct { + CreateDomainStmt *CreateDomainStmt `protobuf:"bytes,86,opt,name=create_domain_stmt,json=CreateDomainStmt,proto3,oneof"` +} + +type Node_CreatedbStmt struct { + CreatedbStmt *CreatedbStmt `protobuf:"bytes,87,opt,name=createdb_stmt,json=CreatedbStmt,proto3,oneof"` +} + +type Node_DropdbStmt struct { + DropdbStmt *DropdbStmt `protobuf:"bytes,88,opt,name=dropdb_stmt,json=DropdbStmt,proto3,oneof"` +} + +type Node_VacuumStmt struct { + VacuumStmt *VacuumStmt `protobuf:"bytes,89,opt,name=vacuum_stmt,json=VacuumStmt,proto3,oneof"` +} + +type Node_ExplainStmt struct { + ExplainStmt *ExplainStmt `protobuf:"bytes,90,opt,name=explain_stmt,json=ExplainStmt,proto3,oneof"` +} + +type Node_CreateTableAsStmt struct { + CreateTableAsStmt *CreateTableAsStmt `protobuf:"bytes,91,opt,name=create_table_as_stmt,json=CreateTableAsStmt,proto3,oneof"` +} + +type Node_CreateSeqStmt struct { + CreateSeqStmt *CreateSeqStmt `protobuf:"bytes,92,opt,name=create_seq_stmt,json=CreateSeqStmt,proto3,oneof"` +} + +type Node_AlterSeqStmt struct { + AlterSeqStmt *AlterSeqStmt `protobuf:"bytes,93,opt,name=alter_seq_stmt,json=AlterSeqStmt,proto3,oneof"` +} + +type Node_VariableSetStmt struct { + VariableSetStmt *VariableSetStmt `protobuf:"bytes,94,opt,name=variable_set_stmt,json=VariableSetStmt,proto3,oneof"` +} + +type Node_VariableShowStmt struct { + VariableShowStmt *VariableShowStmt `protobuf:"bytes,95,opt,name=variable_show_stmt,json=VariableShowStmt,proto3,oneof"` +} + +type Node_DiscardStmt struct { + DiscardStmt *DiscardStmt `protobuf:"bytes,96,opt,name=discard_stmt,json=DiscardStmt,proto3,oneof"` +} + +type Node_CreateTrigStmt struct { + CreateTrigStmt *CreateTrigStmt `protobuf:"bytes,97,opt,name=create_trig_stmt,json=CreateTrigStmt,proto3,oneof"` +} + +type Node_CreatePlangStmt struct { + CreatePlangStmt *CreatePLangStmt `protobuf:"bytes,98,opt,name=create_plang_stmt,json=CreatePLangStmt,proto3,oneof"` +} + +type Node_CreateRoleStmt struct { + CreateRoleStmt *CreateRoleStmt `protobuf:"bytes,99,opt,name=create_role_stmt,json=CreateRoleStmt,proto3,oneof"` +} + +type Node_AlterRoleStmt struct { + AlterRoleStmt *AlterRoleStmt `protobuf:"bytes,100,opt,name=alter_role_stmt,json=AlterRoleStmt,proto3,oneof"` +} + +type Node_DropRoleStmt struct { + DropRoleStmt *DropRoleStmt `protobuf:"bytes,101,opt,name=drop_role_stmt,json=DropRoleStmt,proto3,oneof"` +} + +type Node_LockStmt struct { + LockStmt *LockStmt `protobuf:"bytes,102,opt,name=lock_stmt,json=LockStmt,proto3,oneof"` +} + +type Node_ConstraintsSetStmt struct { + ConstraintsSetStmt *ConstraintsSetStmt `protobuf:"bytes,103,opt,name=constraints_set_stmt,json=ConstraintsSetStmt,proto3,oneof"` +} + +type Node_ReindexStmt struct { + ReindexStmt *ReindexStmt `protobuf:"bytes,104,opt,name=reindex_stmt,json=ReindexStmt,proto3,oneof"` +} + +type Node_CheckPointStmt struct { + CheckPointStmt *CheckPointStmt `protobuf:"bytes,105,opt,name=check_point_stmt,json=CheckPointStmt,proto3,oneof"` +} + +type Node_CreateSchemaStmt struct { + CreateSchemaStmt *CreateSchemaStmt `protobuf:"bytes,106,opt,name=create_schema_stmt,json=CreateSchemaStmt,proto3,oneof"` +} + +type Node_AlterDatabaseStmt struct { + AlterDatabaseStmt *AlterDatabaseStmt `protobuf:"bytes,107,opt,name=alter_database_stmt,json=AlterDatabaseStmt,proto3,oneof"` +} + +type Node_AlterDatabaseSetStmt struct { + AlterDatabaseSetStmt *AlterDatabaseSetStmt `protobuf:"bytes,108,opt,name=alter_database_set_stmt,json=AlterDatabaseSetStmt,proto3,oneof"` +} + +type Node_AlterRoleSetStmt struct { + AlterRoleSetStmt *AlterRoleSetStmt `protobuf:"bytes,109,opt,name=alter_role_set_stmt,json=AlterRoleSetStmt,proto3,oneof"` +} + +type Node_CreateConversionStmt struct { + CreateConversionStmt *CreateConversionStmt `protobuf:"bytes,110,opt,name=create_conversion_stmt,json=CreateConversionStmt,proto3,oneof"` +} + +type Node_CreateCastStmt struct { + CreateCastStmt *CreateCastStmt `protobuf:"bytes,111,opt,name=create_cast_stmt,json=CreateCastStmt,proto3,oneof"` +} + +type Node_CreateOpClassStmt struct { + CreateOpClassStmt *CreateOpClassStmt `protobuf:"bytes,112,opt,name=create_op_class_stmt,json=CreateOpClassStmt,proto3,oneof"` +} + +type Node_CreateOpFamilyStmt struct { + CreateOpFamilyStmt *CreateOpFamilyStmt `protobuf:"bytes,113,opt,name=create_op_family_stmt,json=CreateOpFamilyStmt,proto3,oneof"` +} + +type Node_AlterOpFamilyStmt struct { + AlterOpFamilyStmt *AlterOpFamilyStmt `protobuf:"bytes,114,opt,name=alter_op_family_stmt,json=AlterOpFamilyStmt,proto3,oneof"` +} + +type Node_PrepareStmt struct { + PrepareStmt *PrepareStmt `protobuf:"bytes,115,opt,name=prepare_stmt,json=PrepareStmt,proto3,oneof"` +} + +type Node_ExecuteStmt struct { + ExecuteStmt *ExecuteStmt `protobuf:"bytes,116,opt,name=execute_stmt,json=ExecuteStmt,proto3,oneof"` +} + +type Node_DeallocateStmt struct { + DeallocateStmt *DeallocateStmt `protobuf:"bytes,117,opt,name=deallocate_stmt,json=DeallocateStmt,proto3,oneof"` +} + +type Node_DeclareCursorStmt struct { + DeclareCursorStmt *DeclareCursorStmt `protobuf:"bytes,118,opt,name=declare_cursor_stmt,json=DeclareCursorStmt,proto3,oneof"` +} + +type Node_CreateTableSpaceStmt struct { + CreateTableSpaceStmt *CreateTableSpaceStmt `protobuf:"bytes,119,opt,name=create_table_space_stmt,json=CreateTableSpaceStmt,proto3,oneof"` +} + +type Node_DropTableSpaceStmt struct { + DropTableSpaceStmt *DropTableSpaceStmt `protobuf:"bytes,120,opt,name=drop_table_space_stmt,json=DropTableSpaceStmt,proto3,oneof"` +} + +type Node_AlterObjectDependsStmt struct { + AlterObjectDependsStmt *AlterObjectDependsStmt `protobuf:"bytes,121,opt,name=alter_object_depends_stmt,json=AlterObjectDependsStmt,proto3,oneof"` +} + +type Node_AlterObjectSchemaStmt struct { + AlterObjectSchemaStmt *AlterObjectSchemaStmt `protobuf:"bytes,122,opt,name=alter_object_schema_stmt,json=AlterObjectSchemaStmt,proto3,oneof"` +} + +type Node_AlterOwnerStmt struct { + AlterOwnerStmt *AlterOwnerStmt `protobuf:"bytes,123,opt,name=alter_owner_stmt,json=AlterOwnerStmt,proto3,oneof"` +} + +type Node_AlterOperatorStmt struct { + AlterOperatorStmt *AlterOperatorStmt `protobuf:"bytes,124,opt,name=alter_operator_stmt,json=AlterOperatorStmt,proto3,oneof"` +} + +type Node_AlterTypeStmt struct { + AlterTypeStmt *AlterTypeStmt `protobuf:"bytes,125,opt,name=alter_type_stmt,json=AlterTypeStmt,proto3,oneof"` +} + +type Node_DropOwnedStmt struct { + DropOwnedStmt *DropOwnedStmt `protobuf:"bytes,126,opt,name=drop_owned_stmt,json=DropOwnedStmt,proto3,oneof"` +} + +type Node_ReassignOwnedStmt struct { + ReassignOwnedStmt *ReassignOwnedStmt `protobuf:"bytes,127,opt,name=reassign_owned_stmt,json=ReassignOwnedStmt,proto3,oneof"` +} + +type Node_CompositeTypeStmt struct { + CompositeTypeStmt *CompositeTypeStmt `protobuf:"bytes,128,opt,name=composite_type_stmt,json=CompositeTypeStmt,proto3,oneof"` +} + +type Node_CreateEnumStmt struct { + CreateEnumStmt *CreateEnumStmt `protobuf:"bytes,129,opt,name=create_enum_stmt,json=CreateEnumStmt,proto3,oneof"` +} + +type Node_CreateRangeStmt struct { + CreateRangeStmt *CreateRangeStmt `protobuf:"bytes,130,opt,name=create_range_stmt,json=CreateRangeStmt,proto3,oneof"` +} + +type Node_AlterEnumStmt struct { + AlterEnumStmt *AlterEnumStmt `protobuf:"bytes,131,opt,name=alter_enum_stmt,json=AlterEnumStmt,proto3,oneof"` +} + +type Node_AlterTsdictionaryStmt struct { + AlterTsdictionaryStmt *AlterTSDictionaryStmt `protobuf:"bytes,132,opt,name=alter_tsdictionary_stmt,json=AlterTSDictionaryStmt,proto3,oneof"` +} + +type Node_AlterTsconfigurationStmt struct { + AlterTsconfigurationStmt *AlterTSConfigurationStmt `protobuf:"bytes,133,opt,name=alter_tsconfiguration_stmt,json=AlterTSConfigurationStmt,proto3,oneof"` +} + +type Node_CreateFdwStmt struct { + CreateFdwStmt *CreateFdwStmt `protobuf:"bytes,134,opt,name=create_fdw_stmt,json=CreateFdwStmt,proto3,oneof"` +} + +type Node_AlterFdwStmt struct { + AlterFdwStmt *AlterFdwStmt `protobuf:"bytes,135,opt,name=alter_fdw_stmt,json=AlterFdwStmt,proto3,oneof"` +} + +type Node_CreateForeignServerStmt struct { + CreateForeignServerStmt *CreateForeignServerStmt `protobuf:"bytes,136,opt,name=create_foreign_server_stmt,json=CreateForeignServerStmt,proto3,oneof"` +} + +type Node_AlterForeignServerStmt struct { + AlterForeignServerStmt *AlterForeignServerStmt `protobuf:"bytes,137,opt,name=alter_foreign_server_stmt,json=AlterForeignServerStmt,proto3,oneof"` +} + +type Node_CreateUserMappingStmt struct { + CreateUserMappingStmt *CreateUserMappingStmt `protobuf:"bytes,138,opt,name=create_user_mapping_stmt,json=CreateUserMappingStmt,proto3,oneof"` +} + +type Node_AlterUserMappingStmt struct { + AlterUserMappingStmt *AlterUserMappingStmt `protobuf:"bytes,139,opt,name=alter_user_mapping_stmt,json=AlterUserMappingStmt,proto3,oneof"` +} + +type Node_DropUserMappingStmt struct { + DropUserMappingStmt *DropUserMappingStmt `protobuf:"bytes,140,opt,name=drop_user_mapping_stmt,json=DropUserMappingStmt,proto3,oneof"` +} + +type Node_AlterTableSpaceOptionsStmt struct { + AlterTableSpaceOptionsStmt *AlterTableSpaceOptionsStmt `protobuf:"bytes,141,opt,name=alter_table_space_options_stmt,json=AlterTableSpaceOptionsStmt,proto3,oneof"` +} + +type Node_AlterTableMoveAllStmt struct { + AlterTableMoveAllStmt *AlterTableMoveAllStmt `protobuf:"bytes,142,opt,name=alter_table_move_all_stmt,json=AlterTableMoveAllStmt,proto3,oneof"` +} + +type Node_SecLabelStmt struct { + SecLabelStmt *SecLabelStmt `protobuf:"bytes,143,opt,name=sec_label_stmt,json=SecLabelStmt,proto3,oneof"` +} + +type Node_CreateForeignTableStmt struct { + CreateForeignTableStmt *CreateForeignTableStmt `protobuf:"bytes,144,opt,name=create_foreign_table_stmt,json=CreateForeignTableStmt,proto3,oneof"` +} + +type Node_ImportForeignSchemaStmt struct { + ImportForeignSchemaStmt *ImportForeignSchemaStmt `protobuf:"bytes,145,opt,name=import_foreign_schema_stmt,json=ImportForeignSchemaStmt,proto3,oneof"` +} + +type Node_CreateExtensionStmt struct { + CreateExtensionStmt *CreateExtensionStmt `protobuf:"bytes,146,opt,name=create_extension_stmt,json=CreateExtensionStmt,proto3,oneof"` +} + +type Node_AlterExtensionStmt struct { + AlterExtensionStmt *AlterExtensionStmt `protobuf:"bytes,147,opt,name=alter_extension_stmt,json=AlterExtensionStmt,proto3,oneof"` +} + +type Node_AlterExtensionContentsStmt struct { + AlterExtensionContentsStmt *AlterExtensionContentsStmt `protobuf:"bytes,148,opt,name=alter_extension_contents_stmt,json=AlterExtensionContentsStmt,proto3,oneof"` +} + +type Node_CreateEventTrigStmt struct { + CreateEventTrigStmt *CreateEventTrigStmt `protobuf:"bytes,149,opt,name=create_event_trig_stmt,json=CreateEventTrigStmt,proto3,oneof"` +} + +type Node_AlterEventTrigStmt struct { + AlterEventTrigStmt *AlterEventTrigStmt `protobuf:"bytes,150,opt,name=alter_event_trig_stmt,json=AlterEventTrigStmt,proto3,oneof"` +} + +type Node_RefreshMatViewStmt struct { + RefreshMatViewStmt *RefreshMatViewStmt `protobuf:"bytes,151,opt,name=refresh_mat_view_stmt,json=RefreshMatViewStmt,proto3,oneof"` +} + +type Node_ReplicaIdentityStmt struct { + ReplicaIdentityStmt *ReplicaIdentityStmt `protobuf:"bytes,152,opt,name=replica_identity_stmt,json=ReplicaIdentityStmt,proto3,oneof"` +} + +type Node_AlterSystemStmt struct { + AlterSystemStmt *AlterSystemStmt `protobuf:"bytes,153,opt,name=alter_system_stmt,json=AlterSystemStmt,proto3,oneof"` +} + +type Node_CreatePolicyStmt struct { + CreatePolicyStmt *CreatePolicyStmt `protobuf:"bytes,154,opt,name=create_policy_stmt,json=CreatePolicyStmt,proto3,oneof"` +} + +type Node_AlterPolicyStmt struct { + AlterPolicyStmt *AlterPolicyStmt `protobuf:"bytes,155,opt,name=alter_policy_stmt,json=AlterPolicyStmt,proto3,oneof"` +} + +type Node_CreateTransformStmt struct { + CreateTransformStmt *CreateTransformStmt `protobuf:"bytes,156,opt,name=create_transform_stmt,json=CreateTransformStmt,proto3,oneof"` +} + +type Node_CreateAmStmt struct { + CreateAmStmt *CreateAmStmt `protobuf:"bytes,157,opt,name=create_am_stmt,json=CreateAmStmt,proto3,oneof"` +} + +type Node_CreatePublicationStmt struct { + CreatePublicationStmt *CreatePublicationStmt `protobuf:"bytes,158,opt,name=create_publication_stmt,json=CreatePublicationStmt,proto3,oneof"` +} + +type Node_AlterPublicationStmt struct { + AlterPublicationStmt *AlterPublicationStmt `protobuf:"bytes,159,opt,name=alter_publication_stmt,json=AlterPublicationStmt,proto3,oneof"` +} + +type Node_CreateSubscriptionStmt struct { + CreateSubscriptionStmt *CreateSubscriptionStmt `protobuf:"bytes,160,opt,name=create_subscription_stmt,json=CreateSubscriptionStmt,proto3,oneof"` +} + +type Node_AlterSubscriptionStmt struct { + AlterSubscriptionStmt *AlterSubscriptionStmt `protobuf:"bytes,161,opt,name=alter_subscription_stmt,json=AlterSubscriptionStmt,proto3,oneof"` +} + +type Node_DropSubscriptionStmt struct { + DropSubscriptionStmt *DropSubscriptionStmt `protobuf:"bytes,162,opt,name=drop_subscription_stmt,json=DropSubscriptionStmt,proto3,oneof"` +} + +type Node_CreateStatsStmt struct { + CreateStatsStmt *CreateStatsStmt `protobuf:"bytes,163,opt,name=create_stats_stmt,json=CreateStatsStmt,proto3,oneof"` +} + +type Node_AlterCollationStmt struct { + AlterCollationStmt *AlterCollationStmt `protobuf:"bytes,164,opt,name=alter_collation_stmt,json=AlterCollationStmt,proto3,oneof"` +} + +type Node_CallStmt struct { + CallStmt *CallStmt `protobuf:"bytes,165,opt,name=call_stmt,json=CallStmt,proto3,oneof"` +} + +type Node_AlterStatsStmt struct { + AlterStatsStmt *AlterStatsStmt `protobuf:"bytes,166,opt,name=alter_stats_stmt,json=AlterStatsStmt,proto3,oneof"` +} + +type Node_AExpr struct { + AExpr *A_Expr `protobuf:"bytes,167,opt,name=a_expr,json=A_Expr,proto3,oneof"` +} + +type Node_ColumnRef struct { + ColumnRef *ColumnRef `protobuf:"bytes,168,opt,name=column_ref,json=ColumnRef,proto3,oneof"` +} + +type Node_ParamRef struct { + ParamRef *ParamRef `protobuf:"bytes,169,opt,name=param_ref,json=ParamRef,proto3,oneof"` +} + +type Node_AConst struct { + AConst *A_Const `protobuf:"bytes,170,opt,name=a_const,json=A_Const,proto3,oneof"` +} + +type Node_FuncCall struct { + FuncCall *FuncCall `protobuf:"bytes,171,opt,name=func_call,json=FuncCall,proto3,oneof"` +} + +type Node_AStar struct { + AStar *A_Star `protobuf:"bytes,172,opt,name=a_star,json=A_Star,proto3,oneof"` +} + +type Node_AIndices struct { + AIndices *A_Indices `protobuf:"bytes,173,opt,name=a_indices,json=A_Indices,proto3,oneof"` +} + +type Node_AIndirection struct { + AIndirection *A_Indirection `protobuf:"bytes,174,opt,name=a_indirection,json=A_Indirection,proto3,oneof"` +} + +type Node_AArrayExpr struct { + AArrayExpr *A_ArrayExpr `protobuf:"bytes,175,opt,name=a_array_expr,json=A_ArrayExpr,proto3,oneof"` +} + +type Node_ResTarget struct { + ResTarget *ResTarget `protobuf:"bytes,176,opt,name=res_target,json=ResTarget,proto3,oneof"` +} + +type Node_MultiAssignRef struct { + MultiAssignRef *MultiAssignRef `protobuf:"bytes,177,opt,name=multi_assign_ref,json=MultiAssignRef,proto3,oneof"` +} + +type Node_TypeCast struct { + TypeCast *TypeCast `protobuf:"bytes,178,opt,name=type_cast,json=TypeCast,proto3,oneof"` +} + +type Node_CollateClause struct { + CollateClause *CollateClause `protobuf:"bytes,179,opt,name=collate_clause,json=CollateClause,proto3,oneof"` +} + +type Node_SortBy struct { + SortBy *SortBy `protobuf:"bytes,180,opt,name=sort_by,json=SortBy,proto3,oneof"` +} + +type Node_WindowDef struct { + WindowDef *WindowDef `protobuf:"bytes,181,opt,name=window_def,json=WindowDef,proto3,oneof"` +} + +type Node_RangeSubselect struct { + RangeSubselect *RangeSubselect `protobuf:"bytes,182,opt,name=range_subselect,json=RangeSubselect,proto3,oneof"` +} + +type Node_RangeFunction struct { + RangeFunction *RangeFunction `protobuf:"bytes,183,opt,name=range_function,json=RangeFunction,proto3,oneof"` +} + +type Node_RangeTableSample struct { + RangeTableSample *RangeTableSample `protobuf:"bytes,184,opt,name=range_table_sample,json=RangeTableSample,proto3,oneof"` +} + +type Node_RangeTableFunc struct { + RangeTableFunc *RangeTableFunc `protobuf:"bytes,185,opt,name=range_table_func,json=RangeTableFunc,proto3,oneof"` +} + +type Node_RangeTableFuncCol struct { + RangeTableFuncCol *RangeTableFuncCol `protobuf:"bytes,186,opt,name=range_table_func_col,json=RangeTableFuncCol,proto3,oneof"` +} + +type Node_TypeName struct { + TypeName *TypeName `protobuf:"bytes,187,opt,name=type_name,json=TypeName,proto3,oneof"` +} + +type Node_ColumnDef struct { + ColumnDef *ColumnDef `protobuf:"bytes,188,opt,name=column_def,json=ColumnDef,proto3,oneof"` +} + +type Node_IndexElem struct { + IndexElem *IndexElem `protobuf:"bytes,189,opt,name=index_elem,json=IndexElem,proto3,oneof"` +} + +type Node_Constraint struct { + Constraint *Constraint `protobuf:"bytes,190,opt,name=constraint,json=Constraint,proto3,oneof"` +} + +type Node_DefElem struct { + DefElem *DefElem `protobuf:"bytes,191,opt,name=def_elem,json=DefElem,proto3,oneof"` +} + +type Node_RangeTblEntry struct { + RangeTblEntry *RangeTblEntry `protobuf:"bytes,192,opt,name=range_tbl_entry,json=RangeTblEntry,proto3,oneof"` +} + +type Node_RangeTblFunction struct { + RangeTblFunction *RangeTblFunction `protobuf:"bytes,193,opt,name=range_tbl_function,json=RangeTblFunction,proto3,oneof"` +} + +type Node_TableSampleClause struct { + TableSampleClause *TableSampleClause `protobuf:"bytes,194,opt,name=table_sample_clause,json=TableSampleClause,proto3,oneof"` +} + +type Node_WithCheckOption struct { + WithCheckOption *WithCheckOption `protobuf:"bytes,195,opt,name=with_check_option,json=WithCheckOption,proto3,oneof"` +} + +type Node_SortGroupClause struct { + SortGroupClause *SortGroupClause `protobuf:"bytes,196,opt,name=sort_group_clause,json=SortGroupClause,proto3,oneof"` +} + +type Node_GroupingSet struct { + GroupingSet *GroupingSet `protobuf:"bytes,197,opt,name=grouping_set,json=GroupingSet,proto3,oneof"` +} + +type Node_WindowClause struct { + WindowClause *WindowClause `protobuf:"bytes,198,opt,name=window_clause,json=WindowClause,proto3,oneof"` +} + +type Node_ObjectWithArgs struct { + ObjectWithArgs *ObjectWithArgs `protobuf:"bytes,199,opt,name=object_with_args,json=ObjectWithArgs,proto3,oneof"` +} + +type Node_AccessPriv struct { + AccessPriv *AccessPriv `protobuf:"bytes,200,opt,name=access_priv,json=AccessPriv,proto3,oneof"` +} + +type Node_CreateOpClassItem struct { + CreateOpClassItem *CreateOpClassItem `protobuf:"bytes,201,opt,name=create_op_class_item,json=CreateOpClassItem,proto3,oneof"` +} + +type Node_TableLikeClause struct { + TableLikeClause *TableLikeClause `protobuf:"bytes,202,opt,name=table_like_clause,json=TableLikeClause,proto3,oneof"` +} + +type Node_FunctionParameter struct { + FunctionParameter *FunctionParameter `protobuf:"bytes,203,opt,name=function_parameter,json=FunctionParameter,proto3,oneof"` +} + +type Node_LockingClause struct { + LockingClause *LockingClause `protobuf:"bytes,204,opt,name=locking_clause,json=LockingClause,proto3,oneof"` +} + +type Node_RowMarkClause struct { + RowMarkClause *RowMarkClause `protobuf:"bytes,205,opt,name=row_mark_clause,json=RowMarkClause,proto3,oneof"` +} + +type Node_XmlSerialize struct { + XmlSerialize *XmlSerialize `protobuf:"bytes,206,opt,name=xml_serialize,json=XmlSerialize,proto3,oneof"` +} + +type Node_WithClause struct { + WithClause *WithClause `protobuf:"bytes,207,opt,name=with_clause,json=WithClause,proto3,oneof"` +} + +type Node_InferClause struct { + InferClause *InferClause `protobuf:"bytes,208,opt,name=infer_clause,json=InferClause,proto3,oneof"` +} + +type Node_OnConflictClause struct { + OnConflictClause *OnConflictClause `protobuf:"bytes,209,opt,name=on_conflict_clause,json=OnConflictClause,proto3,oneof"` +} + +type Node_CommonTableExpr struct { + CommonTableExpr *CommonTableExpr `protobuf:"bytes,210,opt,name=common_table_expr,json=CommonTableExpr,proto3,oneof"` +} + +type Node_RoleSpec struct { + RoleSpec *RoleSpec `protobuf:"bytes,211,opt,name=role_spec,json=RoleSpec,proto3,oneof"` +} + +type Node_TriggerTransition struct { + TriggerTransition *TriggerTransition `protobuf:"bytes,212,opt,name=trigger_transition,json=TriggerTransition,proto3,oneof"` +} + +type Node_PartitionElem struct { + PartitionElem *PartitionElem `protobuf:"bytes,213,opt,name=partition_elem,json=PartitionElem,proto3,oneof"` +} + +type Node_PartitionSpec struct { + PartitionSpec *PartitionSpec `protobuf:"bytes,214,opt,name=partition_spec,json=PartitionSpec,proto3,oneof"` +} + +type Node_PartitionBoundSpec struct { + PartitionBoundSpec *PartitionBoundSpec `protobuf:"bytes,215,opt,name=partition_bound_spec,json=PartitionBoundSpec,proto3,oneof"` +} + +type Node_PartitionRangeDatum struct { + PartitionRangeDatum *PartitionRangeDatum `protobuf:"bytes,216,opt,name=partition_range_datum,json=PartitionRangeDatum,proto3,oneof"` +} + +type Node_PartitionCmd struct { + PartitionCmd *PartitionCmd `protobuf:"bytes,217,opt,name=partition_cmd,json=PartitionCmd,proto3,oneof"` +} + +type Node_VacuumRelation struct { + VacuumRelation *VacuumRelation `protobuf:"bytes,218,opt,name=vacuum_relation,json=VacuumRelation,proto3,oneof"` +} + +type Node_InlineCodeBlock struct { + InlineCodeBlock *InlineCodeBlock `protobuf:"bytes,219,opt,name=inline_code_block,json=InlineCodeBlock,proto3,oneof"` +} + +type Node_CallContext struct { + CallContext *CallContext `protobuf:"bytes,220,opt,name=call_context,json=CallContext,proto3,oneof"` +} + +type Node_Integer struct { + Integer *Integer `protobuf:"bytes,221,opt,name=integer,json=Integer,proto3,oneof"` +} + +type Node_Float struct { + Float *Float `protobuf:"bytes,222,opt,name=float,json=Float,proto3,oneof"` +} + +type Node_String_ struct { + String_ *String `protobuf:"bytes,223,opt,name=string,json=String,proto3,oneof"` +} + +type Node_BitString struct { + BitString *BitString `protobuf:"bytes,224,opt,name=bit_string,json=BitString,proto3,oneof"` +} + +type Node_Null struct { + Null *Null `protobuf:"bytes,225,opt,name=null,json=Null,proto3,oneof"` +} + +type Node_List struct { + List *List `protobuf:"bytes,226,opt,name=list,json=List,proto3,oneof"` +} + +type Node_IntList struct { + IntList *IntList `protobuf:"bytes,227,opt,name=int_list,json=IntList,proto3,oneof"` +} + +type Node_OidList struct { + OidList *OidList `protobuf:"bytes,228,opt,name=oid_list,json=OidList,proto3,oneof"` +} + +func (*Node_Alias) isNode_Node() {} + +func (*Node_RangeVar) isNode_Node() {} + +func (*Node_TableFunc) isNode_Node() {} + +func (*Node_Expr) isNode_Node() {} + +func (*Node_Var) isNode_Node() {} + +func (*Node_Param) isNode_Node() {} + +func (*Node_Aggref) isNode_Node() {} + +func (*Node_GroupingFunc) isNode_Node() {} + +func (*Node_WindowFunc) isNode_Node() {} + +func (*Node_SubscriptingRef) isNode_Node() {} + +func (*Node_FuncExpr) isNode_Node() {} + +func (*Node_NamedArgExpr) isNode_Node() {} + +func (*Node_OpExpr) isNode_Node() {} + +func (*Node_DistinctExpr) isNode_Node() {} + +func (*Node_NullIfExpr) isNode_Node() {} + +func (*Node_ScalarArrayOpExpr) isNode_Node() {} + +func (*Node_BoolExpr) isNode_Node() {} + +func (*Node_SubLink) isNode_Node() {} + +func (*Node_SubPlan) isNode_Node() {} + +func (*Node_AlternativeSubPlan) isNode_Node() {} + +func (*Node_FieldSelect) isNode_Node() {} + +func (*Node_FieldStore) isNode_Node() {} + +func (*Node_RelabelType) isNode_Node() {} + +func (*Node_CoerceViaIo) isNode_Node() {} + +func (*Node_ArrayCoerceExpr) isNode_Node() {} + +func (*Node_ConvertRowtypeExpr) isNode_Node() {} + +func (*Node_CollateExpr) isNode_Node() {} + +func (*Node_CaseExpr) isNode_Node() {} + +func (*Node_CaseWhen) isNode_Node() {} + +func (*Node_CaseTestExpr) isNode_Node() {} + +func (*Node_ArrayExpr) isNode_Node() {} + +func (*Node_RowExpr) isNode_Node() {} + +func (*Node_RowCompareExpr) isNode_Node() {} + +func (*Node_CoalesceExpr) isNode_Node() {} + +func (*Node_MinMaxExpr) isNode_Node() {} + +func (*Node_SqlvalueFunction) isNode_Node() {} + +func (*Node_XmlExpr) isNode_Node() {} + +func (*Node_NullTest) isNode_Node() {} + +func (*Node_BooleanTest) isNode_Node() {} + +func (*Node_CoerceToDomain) isNode_Node() {} + +func (*Node_CoerceToDomainValue) isNode_Node() {} + +func (*Node_SetToDefault) isNode_Node() {} + +func (*Node_CurrentOfExpr) isNode_Node() {} + +func (*Node_NextValueExpr) isNode_Node() {} + +func (*Node_InferenceElem) isNode_Node() {} + +func (*Node_TargetEntry) isNode_Node() {} + +func (*Node_RangeTblRef) isNode_Node() {} + +func (*Node_JoinExpr) isNode_Node() {} + +func (*Node_FromExpr) isNode_Node() {} + +func (*Node_OnConflictExpr) isNode_Node() {} + +func (*Node_IntoClause) isNode_Node() {} + +func (*Node_RawStmt) isNode_Node() {} + +func (*Node_Query) isNode_Node() {} + +func (*Node_InsertStmt) isNode_Node() {} + +func (*Node_DeleteStmt) isNode_Node() {} + +func (*Node_UpdateStmt) isNode_Node() {} + +func (*Node_SelectStmt) isNode_Node() {} + +func (*Node_AlterTableStmt) isNode_Node() {} + +func (*Node_AlterTableCmd) isNode_Node() {} + +func (*Node_AlterDomainStmt) isNode_Node() {} + +func (*Node_SetOperationStmt) isNode_Node() {} + +func (*Node_GrantStmt) isNode_Node() {} + +func (*Node_GrantRoleStmt) isNode_Node() {} + +func (*Node_AlterDefaultPrivilegesStmt) isNode_Node() {} + +func (*Node_ClosePortalStmt) isNode_Node() {} + +func (*Node_ClusterStmt) isNode_Node() {} + +func (*Node_CopyStmt) isNode_Node() {} + +func (*Node_CreateStmt) isNode_Node() {} + +func (*Node_DefineStmt) isNode_Node() {} + +func (*Node_DropStmt) isNode_Node() {} + +func (*Node_TruncateStmt) isNode_Node() {} + +func (*Node_CommentStmt) isNode_Node() {} + +func (*Node_FetchStmt) isNode_Node() {} + +func (*Node_IndexStmt) isNode_Node() {} + +func (*Node_CreateFunctionStmt) isNode_Node() {} + +func (*Node_AlterFunctionStmt) isNode_Node() {} + +func (*Node_DoStmt) isNode_Node() {} + +func (*Node_RenameStmt) isNode_Node() {} + +func (*Node_RuleStmt) isNode_Node() {} + +func (*Node_NotifyStmt) isNode_Node() {} + +func (*Node_ListenStmt) isNode_Node() {} + +func (*Node_UnlistenStmt) isNode_Node() {} + +func (*Node_TransactionStmt) isNode_Node() {} + +func (*Node_ViewStmt) isNode_Node() {} + +func (*Node_LoadStmt) isNode_Node() {} + +func (*Node_CreateDomainStmt) isNode_Node() {} + +func (*Node_CreatedbStmt) isNode_Node() {} + +func (*Node_DropdbStmt) isNode_Node() {} + +func (*Node_VacuumStmt) isNode_Node() {} + +func (*Node_ExplainStmt) isNode_Node() {} + +func (*Node_CreateTableAsStmt) isNode_Node() {} + +func (*Node_CreateSeqStmt) isNode_Node() {} + +func (*Node_AlterSeqStmt) isNode_Node() {} + +func (*Node_VariableSetStmt) isNode_Node() {} + +func (*Node_VariableShowStmt) isNode_Node() {} + +func (*Node_DiscardStmt) isNode_Node() {} + +func (*Node_CreateTrigStmt) isNode_Node() {} + +func (*Node_CreatePlangStmt) isNode_Node() {} + +func (*Node_CreateRoleStmt) isNode_Node() {} + +func (*Node_AlterRoleStmt) isNode_Node() {} + +func (*Node_DropRoleStmt) isNode_Node() {} + +func (*Node_LockStmt) isNode_Node() {} + +func (*Node_ConstraintsSetStmt) isNode_Node() {} + +func (*Node_ReindexStmt) isNode_Node() {} + +func (*Node_CheckPointStmt) isNode_Node() {} + +func (*Node_CreateSchemaStmt) isNode_Node() {} + +func (*Node_AlterDatabaseStmt) isNode_Node() {} + +func (*Node_AlterDatabaseSetStmt) isNode_Node() {} + +func (*Node_AlterRoleSetStmt) isNode_Node() {} + +func (*Node_CreateConversionStmt) isNode_Node() {} + +func (*Node_CreateCastStmt) isNode_Node() {} + +func (*Node_CreateOpClassStmt) isNode_Node() {} + +func (*Node_CreateOpFamilyStmt) isNode_Node() {} + +func (*Node_AlterOpFamilyStmt) isNode_Node() {} + +func (*Node_PrepareStmt) isNode_Node() {} + +func (*Node_ExecuteStmt) isNode_Node() {} + +func (*Node_DeallocateStmt) isNode_Node() {} + +func (*Node_DeclareCursorStmt) isNode_Node() {} + +func (*Node_CreateTableSpaceStmt) isNode_Node() {} + +func (*Node_DropTableSpaceStmt) isNode_Node() {} + +func (*Node_AlterObjectDependsStmt) isNode_Node() {} + +func (*Node_AlterObjectSchemaStmt) isNode_Node() {} + +func (*Node_AlterOwnerStmt) isNode_Node() {} + +func (*Node_AlterOperatorStmt) isNode_Node() {} + +func (*Node_AlterTypeStmt) isNode_Node() {} + +func (*Node_DropOwnedStmt) isNode_Node() {} + +func (*Node_ReassignOwnedStmt) isNode_Node() {} + +func (*Node_CompositeTypeStmt) isNode_Node() {} + +func (*Node_CreateEnumStmt) isNode_Node() {} + +func (*Node_CreateRangeStmt) isNode_Node() {} + +func (*Node_AlterEnumStmt) isNode_Node() {} + +func (*Node_AlterTsdictionaryStmt) isNode_Node() {} + +func (*Node_AlterTsconfigurationStmt) isNode_Node() {} + +func (*Node_CreateFdwStmt) isNode_Node() {} + +func (*Node_AlterFdwStmt) isNode_Node() {} + +func (*Node_CreateForeignServerStmt) isNode_Node() {} + +func (*Node_AlterForeignServerStmt) isNode_Node() {} + +func (*Node_CreateUserMappingStmt) isNode_Node() {} + +func (*Node_AlterUserMappingStmt) isNode_Node() {} + +func (*Node_DropUserMappingStmt) isNode_Node() {} + +func (*Node_AlterTableSpaceOptionsStmt) isNode_Node() {} + +func (*Node_AlterTableMoveAllStmt) isNode_Node() {} + +func (*Node_SecLabelStmt) isNode_Node() {} + +func (*Node_CreateForeignTableStmt) isNode_Node() {} + +func (*Node_ImportForeignSchemaStmt) isNode_Node() {} + +func (*Node_CreateExtensionStmt) isNode_Node() {} + +func (*Node_AlterExtensionStmt) isNode_Node() {} + +func (*Node_AlterExtensionContentsStmt) isNode_Node() {} + +func (*Node_CreateEventTrigStmt) isNode_Node() {} + +func (*Node_AlterEventTrigStmt) isNode_Node() {} + +func (*Node_RefreshMatViewStmt) isNode_Node() {} + +func (*Node_ReplicaIdentityStmt) isNode_Node() {} + +func (*Node_AlterSystemStmt) isNode_Node() {} + +func (*Node_CreatePolicyStmt) isNode_Node() {} + +func (*Node_AlterPolicyStmt) isNode_Node() {} + +func (*Node_CreateTransformStmt) isNode_Node() {} + +func (*Node_CreateAmStmt) isNode_Node() {} + +func (*Node_CreatePublicationStmt) isNode_Node() {} + +func (*Node_AlterPublicationStmt) isNode_Node() {} + +func (*Node_CreateSubscriptionStmt) isNode_Node() {} + +func (*Node_AlterSubscriptionStmt) isNode_Node() {} + +func (*Node_DropSubscriptionStmt) isNode_Node() {} + +func (*Node_CreateStatsStmt) isNode_Node() {} + +func (*Node_AlterCollationStmt) isNode_Node() {} + +func (*Node_CallStmt) isNode_Node() {} + +func (*Node_AlterStatsStmt) isNode_Node() {} + +func (*Node_AExpr) isNode_Node() {} + +func (*Node_ColumnRef) isNode_Node() {} + +func (*Node_ParamRef) isNode_Node() {} + +func (*Node_AConst) isNode_Node() {} + +func (*Node_FuncCall) isNode_Node() {} + +func (*Node_AStar) isNode_Node() {} + +func (*Node_AIndices) isNode_Node() {} + +func (*Node_AIndirection) isNode_Node() {} + +func (*Node_AArrayExpr) isNode_Node() {} + +func (*Node_ResTarget) isNode_Node() {} + +func (*Node_MultiAssignRef) isNode_Node() {} + +func (*Node_TypeCast) isNode_Node() {} + +func (*Node_CollateClause) isNode_Node() {} + +func (*Node_SortBy) isNode_Node() {} + +func (*Node_WindowDef) isNode_Node() {} + +func (*Node_RangeSubselect) isNode_Node() {} + +func (*Node_RangeFunction) isNode_Node() {} + +func (*Node_RangeTableSample) isNode_Node() {} + +func (*Node_RangeTableFunc) isNode_Node() {} + +func (*Node_RangeTableFuncCol) isNode_Node() {} + +func (*Node_TypeName) isNode_Node() {} + +func (*Node_ColumnDef) isNode_Node() {} + +func (*Node_IndexElem) isNode_Node() {} + +func (*Node_Constraint) isNode_Node() {} + +func (*Node_DefElem) isNode_Node() {} + +func (*Node_RangeTblEntry) isNode_Node() {} + +func (*Node_RangeTblFunction) isNode_Node() {} + +func (*Node_TableSampleClause) isNode_Node() {} + +func (*Node_WithCheckOption) isNode_Node() {} + +func (*Node_SortGroupClause) isNode_Node() {} + +func (*Node_GroupingSet) isNode_Node() {} + +func (*Node_WindowClause) isNode_Node() {} + +func (*Node_ObjectWithArgs) isNode_Node() {} + +func (*Node_AccessPriv) isNode_Node() {} + +func (*Node_CreateOpClassItem) isNode_Node() {} + +func (*Node_TableLikeClause) isNode_Node() {} + +func (*Node_FunctionParameter) isNode_Node() {} + +func (*Node_LockingClause) isNode_Node() {} + +func (*Node_RowMarkClause) isNode_Node() {} + +func (*Node_XmlSerialize) isNode_Node() {} + +func (*Node_WithClause) isNode_Node() {} + +func (*Node_InferClause) isNode_Node() {} + +func (*Node_OnConflictClause) isNode_Node() {} + +func (*Node_CommonTableExpr) isNode_Node() {} + +func (*Node_RoleSpec) isNode_Node() {} + +func (*Node_TriggerTransition) isNode_Node() {} + +func (*Node_PartitionElem) isNode_Node() {} + +func (*Node_PartitionSpec) isNode_Node() {} + +func (*Node_PartitionBoundSpec) isNode_Node() {} + +func (*Node_PartitionRangeDatum) isNode_Node() {} + +func (*Node_PartitionCmd) isNode_Node() {} + +func (*Node_VacuumRelation) isNode_Node() {} + +func (*Node_InlineCodeBlock) isNode_Node() {} + +func (*Node_CallContext) isNode_Node() {} + +func (*Node_Integer) isNode_Node() {} + +func (*Node_Float) isNode_Node() {} + +func (*Node_String_) isNode_Node() {} + +func (*Node_BitString) isNode_Node() {} + +func (*Node_Null) isNode_Node() {} + +func (*Node_List) isNode_Node() {} + +func (*Node_IntList) isNode_Node() {} + +func (*Node_OidList) isNode_Node() {} + +type Integer struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Ival int32 `protobuf:"varint,1,opt,name=ival,proto3" json:"ival,omitempty"` // machine integer +} + +func (x *Integer) Reset() { + *x = Integer{} + if protoimpl.UnsafeEnabled { + mi := &file_pg_query_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Integer) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Integer) ProtoMessage() {} + +func (x *Integer) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[3] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Integer.ProtoReflect.Descriptor instead. +func (*Integer) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{3} +} + +func (x *Integer) GetIval() int32 { + if x != nil { + return x.Ival + } + return 0 +} + +type Float struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Str string `protobuf:"bytes,1,opt,name=str,proto3" json:"str,omitempty"` // string +} + +func (x *Float) Reset() { + *x = Float{} + if protoimpl.UnsafeEnabled { + mi := &file_pg_query_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Float) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Float) ProtoMessage() {} + +func (x *Float) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[4] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Float.ProtoReflect.Descriptor instead. +func (*Float) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{4} +} + +func (x *Float) GetStr() string { + if x != nil { + return x.Str + } + return "" +} + +type String struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Str string `protobuf:"bytes,1,opt,name=str,proto3" json:"str,omitempty"` // string +} + +func (x *String) Reset() { + *x = String{} + if protoimpl.UnsafeEnabled { + mi := &file_pg_query_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *String) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*String) ProtoMessage() {} + +func (x *String) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[5] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use String.ProtoReflect.Descriptor instead. +func (*String) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{5} +} + +func (x *String) GetStr() string { + if x != nil { + return x.Str + } + return "" +} + +type BitString struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Str string `protobuf:"bytes,1,opt,name=str,proto3" json:"str,omitempty"` // string +} + +func (x *BitString) Reset() { + *x = BitString{} + if protoimpl.UnsafeEnabled { + mi := &file_pg_query_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *BitString) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*BitString) ProtoMessage() {} + +func (x *BitString) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[6] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use BitString.ProtoReflect.Descriptor instead. +func (*BitString) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{6} +} + +func (x *BitString) GetStr() string { + if x != nil { + return x.Str + } + return "" +} + +type Null struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *Null) Reset() { + *x = Null{} + if protoimpl.UnsafeEnabled { + mi := &file_pg_query_proto_msgTypes[7] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Null) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Null) ProtoMessage() {} + +func (x *Null) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[7] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Null.ProtoReflect.Descriptor instead. +func (*Null) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{7} +} + +type List struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Items []*Node `protobuf:"bytes,1,rep,name=items,proto3" json:"items,omitempty"` +} + +func (x *List) Reset() { + *x = List{} + if protoimpl.UnsafeEnabled { + mi := &file_pg_query_proto_msgTypes[8] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *List) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*List) ProtoMessage() {} + +func (x *List) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[8] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use List.ProtoReflect.Descriptor instead. +func (*List) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{8} +} + +func (x *List) GetItems() []*Node { + if x != nil { + return x.Items + } + return nil +} + +type OidList struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Items []*Node `protobuf:"bytes,1,rep,name=items,proto3" json:"items,omitempty"` +} + +func (x *OidList) Reset() { + *x = OidList{} + if protoimpl.UnsafeEnabled { + mi := &file_pg_query_proto_msgTypes[9] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *OidList) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*OidList) ProtoMessage() {} + +func (x *OidList) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[9] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use OidList.ProtoReflect.Descriptor instead. +func (*OidList) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{9} +} + +func (x *OidList) GetItems() []*Node { + if x != nil { + return x.Items + } + return nil +} + +type IntList struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Items []*Node `protobuf:"bytes,1,rep,name=items,proto3" json:"items,omitempty"` +} + +func (x *IntList) Reset() { + *x = IntList{} + if protoimpl.UnsafeEnabled { + mi := &file_pg_query_proto_msgTypes[10] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *IntList) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*IntList) ProtoMessage() {} + +func (x *IntList) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[10] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use IntList.ProtoReflect.Descriptor instead. +func (*IntList) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{10} +} + +func (x *IntList) GetItems() []*Node { + if x != nil { + return x.Items + } + return nil +} + +type Alias struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Aliasname string `protobuf:"bytes,1,opt,name=aliasname,proto3" json:"aliasname,omitempty"` + Colnames []*Node `protobuf:"bytes,2,rep,name=colnames,proto3" json:"colnames,omitempty"` +} + +func (x *Alias) Reset() { + *x = Alias{} + if protoimpl.UnsafeEnabled { + mi := &file_pg_query_proto_msgTypes[11] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Alias) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Alias) ProtoMessage() {} + +func (x *Alias) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[11] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Alias.ProtoReflect.Descriptor instead. +func (*Alias) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{11} +} + +func (x *Alias) GetAliasname() string { + if x != nil { + return x.Aliasname + } + return "" +} + +func (x *Alias) GetColnames() []*Node { + if x != nil { + return x.Colnames + } + return nil +} + +type RangeVar struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Catalogname string `protobuf:"bytes,1,opt,name=catalogname,proto3" json:"catalogname,omitempty"` + Schemaname string `protobuf:"bytes,2,opt,name=schemaname,proto3" json:"schemaname,omitempty"` + Relname string `protobuf:"bytes,3,opt,name=relname,proto3" json:"relname,omitempty"` + Inh bool `protobuf:"varint,4,opt,name=inh,proto3" json:"inh,omitempty"` + Relpersistence string `protobuf:"bytes,5,opt,name=relpersistence,proto3" json:"relpersistence,omitempty"` + Alias *Alias `protobuf:"bytes,6,opt,name=alias,proto3" json:"alias,omitempty"` + Location int32 `protobuf:"varint,7,opt,name=location,proto3" json:"location,omitempty"` +} + +func (x *RangeVar) Reset() { + *x = RangeVar{} + if protoimpl.UnsafeEnabled { + mi := &file_pg_query_proto_msgTypes[12] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *RangeVar) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*RangeVar) ProtoMessage() {} + +func (x *RangeVar) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[12] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use RangeVar.ProtoReflect.Descriptor instead. +func (*RangeVar) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{12} +} + +func (x *RangeVar) GetCatalogname() string { + if x != nil { + return x.Catalogname + } + return "" +} + +func (x *RangeVar) GetSchemaname() string { + if x != nil { + return x.Schemaname + } + return "" +} + +func (x *RangeVar) GetRelname() string { + if x != nil { + return x.Relname + } + return "" +} + +func (x *RangeVar) GetInh() bool { + if x != nil { + return x.Inh + } + return false +} + +func (x *RangeVar) GetRelpersistence() string { + if x != nil { + return x.Relpersistence + } + return "" +} + +func (x *RangeVar) GetAlias() *Alias { + if x != nil { + return x.Alias + } + return nil +} + +func (x *RangeVar) GetLocation() int32 { + if x != nil { + return x.Location + } + return 0 +} + +type TableFunc struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + NsUris []*Node `protobuf:"bytes,1,rep,name=ns_uris,proto3" json:"ns_uris,omitempty"` + NsNames []*Node `protobuf:"bytes,2,rep,name=ns_names,proto3" json:"ns_names,omitempty"` + Docexpr *Node `protobuf:"bytes,3,opt,name=docexpr,proto3" json:"docexpr,omitempty"` + Rowexpr *Node `protobuf:"bytes,4,opt,name=rowexpr,proto3" json:"rowexpr,omitempty"` + Colnames []*Node `protobuf:"bytes,5,rep,name=colnames,proto3" json:"colnames,omitempty"` + Coltypes []*Node `protobuf:"bytes,6,rep,name=coltypes,proto3" json:"coltypes,omitempty"` + Coltypmods []*Node `protobuf:"bytes,7,rep,name=coltypmods,proto3" json:"coltypmods,omitempty"` + Colcollations []*Node `protobuf:"bytes,8,rep,name=colcollations,proto3" json:"colcollations,omitempty"` + Colexprs []*Node `protobuf:"bytes,9,rep,name=colexprs,proto3" json:"colexprs,omitempty"` + Coldefexprs []*Node `protobuf:"bytes,10,rep,name=coldefexprs,proto3" json:"coldefexprs,omitempty"` + Notnulls []uint64 `protobuf:"varint,11,rep,packed,name=notnulls,proto3" json:"notnulls,omitempty"` + Ordinalitycol int32 `protobuf:"varint,12,opt,name=ordinalitycol,proto3" json:"ordinalitycol,omitempty"` + Location int32 `protobuf:"varint,13,opt,name=location,proto3" json:"location,omitempty"` +} + +func (x *TableFunc) Reset() { + *x = TableFunc{} + if protoimpl.UnsafeEnabled { + mi := &file_pg_query_proto_msgTypes[13] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *TableFunc) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*TableFunc) ProtoMessage() {} + +func (x *TableFunc) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[13] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use TableFunc.ProtoReflect.Descriptor instead. +func (*TableFunc) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{13} +} + +func (x *TableFunc) GetNsUris() []*Node { + if x != nil { + return x.NsUris + } + return nil +} + +func (x *TableFunc) GetNsNames() []*Node { + if x != nil { + return x.NsNames + } + return nil +} + +func (x *TableFunc) GetDocexpr() *Node { + if x != nil { + return x.Docexpr + } + return nil +} + +func (x *TableFunc) GetRowexpr() *Node { + if x != nil { + return x.Rowexpr + } + return nil +} + +func (x *TableFunc) GetColnames() []*Node { + if x != nil { + return x.Colnames + } + return nil +} + +func (x *TableFunc) GetColtypes() []*Node { + if x != nil { + return x.Coltypes + } + return nil +} + +func (x *TableFunc) GetColtypmods() []*Node { + if x != nil { + return x.Coltypmods + } + return nil +} + +func (x *TableFunc) GetColcollations() []*Node { + if x != nil { + return x.Colcollations + } + return nil +} + +func (x *TableFunc) GetColexprs() []*Node { + if x != nil { + return x.Colexprs + } + return nil +} + +func (x *TableFunc) GetColdefexprs() []*Node { + if x != nil { + return x.Coldefexprs + } + return nil +} + +func (x *TableFunc) GetNotnulls() []uint64 { + if x != nil { + return x.Notnulls + } + return nil +} + +func (x *TableFunc) GetOrdinalitycol() int32 { + if x != nil { + return x.Ordinalitycol + } + return 0 +} + +func (x *TableFunc) GetLocation() int32 { + if x != nil { + return x.Location + } + return 0 +} + +type Expr struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *Expr) Reset() { + *x = Expr{} + if protoimpl.UnsafeEnabled { + mi := &file_pg_query_proto_msgTypes[14] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Expr) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Expr) ProtoMessage() {} + +func (x *Expr) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[14] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Expr.ProtoReflect.Descriptor instead. +func (*Expr) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{14} +} + +type Var struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Xpr *Node `protobuf:"bytes,1,opt,name=xpr,proto3" json:"xpr,omitempty"` + Varno uint32 `protobuf:"varint,2,opt,name=varno,proto3" json:"varno,omitempty"` + Varattno int32 `protobuf:"varint,3,opt,name=varattno,proto3" json:"varattno,omitempty"` + Vartype uint32 `protobuf:"varint,4,opt,name=vartype,proto3" json:"vartype,omitempty"` + Vartypmod int32 `protobuf:"varint,5,opt,name=vartypmod,proto3" json:"vartypmod,omitempty"` + Varcollid uint32 `protobuf:"varint,6,opt,name=varcollid,proto3" json:"varcollid,omitempty"` + Varlevelsup uint32 `protobuf:"varint,7,opt,name=varlevelsup,proto3" json:"varlevelsup,omitempty"` + Varnosyn uint32 `protobuf:"varint,8,opt,name=varnosyn,proto3" json:"varnosyn,omitempty"` + Varattnosyn int32 `protobuf:"varint,9,opt,name=varattnosyn,proto3" json:"varattnosyn,omitempty"` + Location int32 `protobuf:"varint,10,opt,name=location,proto3" json:"location,omitempty"` +} + +func (x *Var) Reset() { + *x = Var{} + if protoimpl.UnsafeEnabled { + mi := &file_pg_query_proto_msgTypes[15] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Var) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Var) ProtoMessage() {} + +func (x *Var) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[15] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Var.ProtoReflect.Descriptor instead. +func (*Var) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{15} +} + +func (x *Var) GetXpr() *Node { + if x != nil { + return x.Xpr + } + return nil +} + +func (x *Var) GetVarno() uint32 { + if x != nil { + return x.Varno + } + return 0 +} + +func (x *Var) GetVarattno() int32 { + if x != nil { + return x.Varattno + } + return 0 +} + +func (x *Var) GetVartype() uint32 { + if x != nil { + return x.Vartype + } + return 0 +} + +func (x *Var) GetVartypmod() int32 { + if x != nil { + return x.Vartypmod + } + return 0 +} + +func (x *Var) GetVarcollid() uint32 { + if x != nil { + return x.Varcollid + } + return 0 +} + +func (x *Var) GetVarlevelsup() uint32 { + if x != nil { + return x.Varlevelsup + } + return 0 +} + +func (x *Var) GetVarnosyn() uint32 { + if x != nil { + return x.Varnosyn + } + return 0 +} + +func (x *Var) GetVarattnosyn() int32 { + if x != nil { + return x.Varattnosyn + } + return 0 +} + +func (x *Var) GetLocation() int32 { + if x != nil { + return x.Location + } + return 0 +} + +type Param struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Xpr *Node `protobuf:"bytes,1,opt,name=xpr,proto3" json:"xpr,omitempty"` + Paramkind ParamKind `protobuf:"varint,2,opt,name=paramkind,proto3,enum=pg_query.ParamKind" json:"paramkind,omitempty"` + Paramid int32 `protobuf:"varint,3,opt,name=paramid,proto3" json:"paramid,omitempty"` + Paramtype uint32 `protobuf:"varint,4,opt,name=paramtype,proto3" json:"paramtype,omitempty"` + Paramtypmod int32 `protobuf:"varint,5,opt,name=paramtypmod,proto3" json:"paramtypmod,omitempty"` + Paramcollid uint32 `protobuf:"varint,6,opt,name=paramcollid,proto3" json:"paramcollid,omitempty"` + Location int32 `protobuf:"varint,7,opt,name=location,proto3" json:"location,omitempty"` +} + +func (x *Param) Reset() { + *x = Param{} + if protoimpl.UnsafeEnabled { + mi := &file_pg_query_proto_msgTypes[16] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Param) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Param) ProtoMessage() {} + +func (x *Param) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[16] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Param.ProtoReflect.Descriptor instead. +func (*Param) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{16} +} + +func (x *Param) GetXpr() *Node { + if x != nil { + return x.Xpr + } + return nil +} + +func (x *Param) GetParamkind() ParamKind { + if x != nil { + return x.Paramkind + } + return ParamKind_PARAM_KIND_UNDEFINED +} + +func (x *Param) GetParamid() int32 { + if x != nil { + return x.Paramid + } + return 0 +} + +func (x *Param) GetParamtype() uint32 { + if x != nil { + return x.Paramtype + } + return 0 +} + +func (x *Param) GetParamtypmod() int32 { + if x != nil { + return x.Paramtypmod + } + return 0 +} + +func (x *Param) GetParamcollid() uint32 { + if x != nil { + return x.Paramcollid + } + return 0 +} + +func (x *Param) GetLocation() int32 { + if x != nil { + return x.Location + } + return 0 +} + +type Aggref struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Xpr *Node `protobuf:"bytes,1,opt,name=xpr,proto3" json:"xpr,omitempty"` + Aggfnoid uint32 `protobuf:"varint,2,opt,name=aggfnoid,proto3" json:"aggfnoid,omitempty"` + Aggtype uint32 `protobuf:"varint,3,opt,name=aggtype,proto3" json:"aggtype,omitempty"` + Aggcollid uint32 `protobuf:"varint,4,opt,name=aggcollid,proto3" json:"aggcollid,omitempty"` + Inputcollid uint32 `protobuf:"varint,5,opt,name=inputcollid,proto3" json:"inputcollid,omitempty"` + Aggtranstype uint32 `protobuf:"varint,6,opt,name=aggtranstype,proto3" json:"aggtranstype,omitempty"` + Aggargtypes []*Node `protobuf:"bytes,7,rep,name=aggargtypes,proto3" json:"aggargtypes,omitempty"` + Aggdirectargs []*Node `protobuf:"bytes,8,rep,name=aggdirectargs,proto3" json:"aggdirectargs,omitempty"` + Args []*Node `protobuf:"bytes,9,rep,name=args,proto3" json:"args,omitempty"` + Aggorder []*Node `protobuf:"bytes,10,rep,name=aggorder,proto3" json:"aggorder,omitempty"` + Aggdistinct []*Node `protobuf:"bytes,11,rep,name=aggdistinct,proto3" json:"aggdistinct,omitempty"` + Aggfilter *Node `protobuf:"bytes,12,opt,name=aggfilter,proto3" json:"aggfilter,omitempty"` + Aggstar bool `protobuf:"varint,13,opt,name=aggstar,proto3" json:"aggstar,omitempty"` + Aggvariadic bool `protobuf:"varint,14,opt,name=aggvariadic,proto3" json:"aggvariadic,omitempty"` + Aggkind string `protobuf:"bytes,15,opt,name=aggkind,proto3" json:"aggkind,omitempty"` + Agglevelsup uint32 `protobuf:"varint,16,opt,name=agglevelsup,proto3" json:"agglevelsup,omitempty"` + Aggsplit AggSplit `protobuf:"varint,17,opt,name=aggsplit,proto3,enum=pg_query.AggSplit" json:"aggsplit,omitempty"` + Location int32 `protobuf:"varint,18,opt,name=location,proto3" json:"location,omitempty"` +} + +func (x *Aggref) Reset() { + *x = Aggref{} + if protoimpl.UnsafeEnabled { + mi := &file_pg_query_proto_msgTypes[17] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Aggref) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Aggref) ProtoMessage() {} + +func (x *Aggref) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[17] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Aggref.ProtoReflect.Descriptor instead. +func (*Aggref) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{17} +} + +func (x *Aggref) GetXpr() *Node { + if x != nil { + return x.Xpr + } + return nil +} + +func (x *Aggref) GetAggfnoid() uint32 { + if x != nil { + return x.Aggfnoid + } + return 0 +} + +func (x *Aggref) GetAggtype() uint32 { + if x != nil { + return x.Aggtype + } + return 0 +} + +func (x *Aggref) GetAggcollid() uint32 { + if x != nil { + return x.Aggcollid + } + return 0 +} + +func (x *Aggref) GetInputcollid() uint32 { + if x != nil { + return x.Inputcollid + } + return 0 +} + +func (x *Aggref) GetAggtranstype() uint32 { + if x != nil { + return x.Aggtranstype + } + return 0 +} + +func (x *Aggref) GetAggargtypes() []*Node { + if x != nil { + return x.Aggargtypes + } + return nil +} + +func (x *Aggref) GetAggdirectargs() []*Node { + if x != nil { + return x.Aggdirectargs + } + return nil +} + +func (x *Aggref) GetArgs() []*Node { + if x != nil { + return x.Args + } + return nil +} + +func (x *Aggref) GetAggorder() []*Node { + if x != nil { + return x.Aggorder + } + return nil +} + +func (x *Aggref) GetAggdistinct() []*Node { + if x != nil { + return x.Aggdistinct + } + return nil +} + +func (x *Aggref) GetAggfilter() *Node { + if x != nil { + return x.Aggfilter + } + return nil +} + +func (x *Aggref) GetAggstar() bool { + if x != nil { + return x.Aggstar + } + return false +} + +func (x *Aggref) GetAggvariadic() bool { + if x != nil { + return x.Aggvariadic + } + return false +} + +func (x *Aggref) GetAggkind() string { + if x != nil { + return x.Aggkind + } + return "" +} + +func (x *Aggref) GetAgglevelsup() uint32 { + if x != nil { + return x.Agglevelsup + } + return 0 +} + +func (x *Aggref) GetAggsplit() AggSplit { + if x != nil { + return x.Aggsplit + } + return AggSplit_AGG_SPLIT_UNDEFINED +} + +func (x *Aggref) GetLocation() int32 { + if x != nil { + return x.Location + } + return 0 +} + +type GroupingFunc struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Xpr *Node `protobuf:"bytes,1,opt,name=xpr,proto3" json:"xpr,omitempty"` + Args []*Node `protobuf:"bytes,2,rep,name=args,proto3" json:"args,omitempty"` + Refs []*Node `protobuf:"bytes,3,rep,name=refs,proto3" json:"refs,omitempty"` + Cols []*Node `protobuf:"bytes,4,rep,name=cols,proto3" json:"cols,omitempty"` + Agglevelsup uint32 `protobuf:"varint,5,opt,name=agglevelsup,proto3" json:"agglevelsup,omitempty"` + Location int32 `protobuf:"varint,6,opt,name=location,proto3" json:"location,omitempty"` +} + +func (x *GroupingFunc) Reset() { + *x = GroupingFunc{} + if protoimpl.UnsafeEnabled { + mi := &file_pg_query_proto_msgTypes[18] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GroupingFunc) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GroupingFunc) ProtoMessage() {} + +func (x *GroupingFunc) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[18] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GroupingFunc.ProtoReflect.Descriptor instead. +func (*GroupingFunc) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{18} +} + +func (x *GroupingFunc) GetXpr() *Node { + if x != nil { + return x.Xpr + } + return nil +} + +func (x *GroupingFunc) GetArgs() []*Node { + if x != nil { + return x.Args + } + return nil +} + +func (x *GroupingFunc) GetRefs() []*Node { + if x != nil { + return x.Refs + } + return nil +} + +func (x *GroupingFunc) GetCols() []*Node { + if x != nil { + return x.Cols + } + return nil +} + +func (x *GroupingFunc) GetAgglevelsup() uint32 { + if x != nil { + return x.Agglevelsup + } + return 0 +} + +func (x *GroupingFunc) GetLocation() int32 { + if x != nil { + return x.Location + } + return 0 +} + +type WindowFunc struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Xpr *Node `protobuf:"bytes,1,opt,name=xpr,proto3" json:"xpr,omitempty"` + Winfnoid uint32 `protobuf:"varint,2,opt,name=winfnoid,proto3" json:"winfnoid,omitempty"` + Wintype uint32 `protobuf:"varint,3,opt,name=wintype,proto3" json:"wintype,omitempty"` + Wincollid uint32 `protobuf:"varint,4,opt,name=wincollid,proto3" json:"wincollid,omitempty"` + Inputcollid uint32 `protobuf:"varint,5,opt,name=inputcollid,proto3" json:"inputcollid,omitempty"` + Args []*Node `protobuf:"bytes,6,rep,name=args,proto3" json:"args,omitempty"` + Aggfilter *Node `protobuf:"bytes,7,opt,name=aggfilter,proto3" json:"aggfilter,omitempty"` + Winref uint32 `protobuf:"varint,8,opt,name=winref,proto3" json:"winref,omitempty"` + Winstar bool `protobuf:"varint,9,opt,name=winstar,proto3" json:"winstar,omitempty"` + Winagg bool `protobuf:"varint,10,opt,name=winagg,proto3" json:"winagg,omitempty"` + Location int32 `protobuf:"varint,11,opt,name=location,proto3" json:"location,omitempty"` +} + +func (x *WindowFunc) Reset() { + *x = WindowFunc{} + if protoimpl.UnsafeEnabled { + mi := &file_pg_query_proto_msgTypes[19] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *WindowFunc) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*WindowFunc) ProtoMessage() {} + +func (x *WindowFunc) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[19] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use WindowFunc.ProtoReflect.Descriptor instead. +func (*WindowFunc) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{19} +} + +func (x *WindowFunc) GetXpr() *Node { + if x != nil { + return x.Xpr + } + return nil +} + +func (x *WindowFunc) GetWinfnoid() uint32 { + if x != nil { + return x.Winfnoid + } + return 0 +} + +func (x *WindowFunc) GetWintype() uint32 { + if x != nil { + return x.Wintype + } + return 0 +} + +func (x *WindowFunc) GetWincollid() uint32 { + if x != nil { + return x.Wincollid + } + return 0 +} + +func (x *WindowFunc) GetInputcollid() uint32 { + if x != nil { + return x.Inputcollid + } + return 0 +} + +func (x *WindowFunc) GetArgs() []*Node { + if x != nil { + return x.Args + } + return nil +} + +func (x *WindowFunc) GetAggfilter() *Node { + if x != nil { + return x.Aggfilter + } + return nil +} + +func (x *WindowFunc) GetWinref() uint32 { + if x != nil { + return x.Winref + } + return 0 +} + +func (x *WindowFunc) GetWinstar() bool { + if x != nil { + return x.Winstar + } + return false +} + +func (x *WindowFunc) GetWinagg() bool { + if x != nil { + return x.Winagg + } + return false +} + +func (x *WindowFunc) GetLocation() int32 { + if x != nil { + return x.Location + } + return 0 +} + +type SubscriptingRef struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Xpr *Node `protobuf:"bytes,1,opt,name=xpr,proto3" json:"xpr,omitempty"` + Refcontainertype uint32 `protobuf:"varint,2,opt,name=refcontainertype,proto3" json:"refcontainertype,omitempty"` + Refelemtype uint32 `protobuf:"varint,3,opt,name=refelemtype,proto3" json:"refelemtype,omitempty"` + Reftypmod int32 `protobuf:"varint,4,opt,name=reftypmod,proto3" json:"reftypmod,omitempty"` + Refcollid uint32 `protobuf:"varint,5,opt,name=refcollid,proto3" json:"refcollid,omitempty"` + Refupperindexpr []*Node `protobuf:"bytes,6,rep,name=refupperindexpr,proto3" json:"refupperindexpr,omitempty"` + Reflowerindexpr []*Node `protobuf:"bytes,7,rep,name=reflowerindexpr,proto3" json:"reflowerindexpr,omitempty"` + Refexpr *Node `protobuf:"bytes,8,opt,name=refexpr,proto3" json:"refexpr,omitempty"` + Refassgnexpr *Node `protobuf:"bytes,9,opt,name=refassgnexpr,proto3" json:"refassgnexpr,omitempty"` +} + +func (x *SubscriptingRef) Reset() { + *x = SubscriptingRef{} + if protoimpl.UnsafeEnabled { + mi := &file_pg_query_proto_msgTypes[20] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *SubscriptingRef) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SubscriptingRef) ProtoMessage() {} + +func (x *SubscriptingRef) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[20] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SubscriptingRef.ProtoReflect.Descriptor instead. +func (*SubscriptingRef) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{20} +} + +func (x *SubscriptingRef) GetXpr() *Node { + if x != nil { + return x.Xpr + } + return nil +} + +func (x *SubscriptingRef) GetRefcontainertype() uint32 { + if x != nil { + return x.Refcontainertype + } + return 0 +} + +func (x *SubscriptingRef) GetRefelemtype() uint32 { + if x != nil { + return x.Refelemtype + } + return 0 +} + +func (x *SubscriptingRef) GetReftypmod() int32 { + if x != nil { + return x.Reftypmod + } + return 0 +} + +func (x *SubscriptingRef) GetRefcollid() uint32 { + if x != nil { + return x.Refcollid + } + return 0 +} + +func (x *SubscriptingRef) GetRefupperindexpr() []*Node { + if x != nil { + return x.Refupperindexpr + } + return nil +} + +func (x *SubscriptingRef) GetReflowerindexpr() []*Node { + if x != nil { + return x.Reflowerindexpr + } + return nil +} + +func (x *SubscriptingRef) GetRefexpr() *Node { + if x != nil { + return x.Refexpr + } + return nil +} + +func (x *SubscriptingRef) GetRefassgnexpr() *Node { + if x != nil { + return x.Refassgnexpr + } + return nil +} + +type FuncExpr struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Xpr *Node `protobuf:"bytes,1,opt,name=xpr,proto3" json:"xpr,omitempty"` + Funcid uint32 `protobuf:"varint,2,opt,name=funcid,proto3" json:"funcid,omitempty"` + Funcresulttype uint32 `protobuf:"varint,3,opt,name=funcresulttype,proto3" json:"funcresulttype,omitempty"` + Funcretset bool `protobuf:"varint,4,opt,name=funcretset,proto3" json:"funcretset,omitempty"` + Funcvariadic bool `protobuf:"varint,5,opt,name=funcvariadic,proto3" json:"funcvariadic,omitempty"` + Funcformat CoercionForm `protobuf:"varint,6,opt,name=funcformat,proto3,enum=pg_query.CoercionForm" json:"funcformat,omitempty"` + Funccollid uint32 `protobuf:"varint,7,opt,name=funccollid,proto3" json:"funccollid,omitempty"` + Inputcollid uint32 `protobuf:"varint,8,opt,name=inputcollid,proto3" json:"inputcollid,omitempty"` + Args []*Node `protobuf:"bytes,9,rep,name=args,proto3" json:"args,omitempty"` + Location int32 `protobuf:"varint,10,opt,name=location,proto3" json:"location,omitempty"` +} + +func (x *FuncExpr) Reset() { + *x = FuncExpr{} + if protoimpl.UnsafeEnabled { + mi := &file_pg_query_proto_msgTypes[21] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *FuncExpr) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*FuncExpr) ProtoMessage() {} + +func (x *FuncExpr) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[21] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use FuncExpr.ProtoReflect.Descriptor instead. +func (*FuncExpr) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{21} +} + +func (x *FuncExpr) GetXpr() *Node { + if x != nil { + return x.Xpr + } + return nil +} + +func (x *FuncExpr) GetFuncid() uint32 { + if x != nil { + return x.Funcid + } + return 0 +} + +func (x *FuncExpr) GetFuncresulttype() uint32 { + if x != nil { + return x.Funcresulttype + } + return 0 +} + +func (x *FuncExpr) GetFuncretset() bool { + if x != nil { + return x.Funcretset + } + return false +} + +func (x *FuncExpr) GetFuncvariadic() bool { + if x != nil { + return x.Funcvariadic + } + return false +} + +func (x *FuncExpr) GetFuncformat() CoercionForm { + if x != nil { + return x.Funcformat + } + return CoercionForm_COERCION_FORM_UNDEFINED +} + +func (x *FuncExpr) GetFunccollid() uint32 { + if x != nil { + return x.Funccollid + } + return 0 +} + +func (x *FuncExpr) GetInputcollid() uint32 { + if x != nil { + return x.Inputcollid + } + return 0 +} + +func (x *FuncExpr) GetArgs() []*Node { + if x != nil { + return x.Args + } + return nil +} + +func (x *FuncExpr) GetLocation() int32 { + if x != nil { + return x.Location + } + return 0 +} + +type NamedArgExpr struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Xpr *Node `protobuf:"bytes,1,opt,name=xpr,proto3" json:"xpr,omitempty"` + Arg *Node `protobuf:"bytes,2,opt,name=arg,proto3" json:"arg,omitempty"` + Name string `protobuf:"bytes,3,opt,name=name,proto3" json:"name,omitempty"` + Argnumber int32 `protobuf:"varint,4,opt,name=argnumber,proto3" json:"argnumber,omitempty"` + Location int32 `protobuf:"varint,5,opt,name=location,proto3" json:"location,omitempty"` +} + +func (x *NamedArgExpr) Reset() { + *x = NamedArgExpr{} + if protoimpl.UnsafeEnabled { + mi := &file_pg_query_proto_msgTypes[22] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *NamedArgExpr) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*NamedArgExpr) ProtoMessage() {} + +func (x *NamedArgExpr) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[22] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use NamedArgExpr.ProtoReflect.Descriptor instead. +func (*NamedArgExpr) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{22} +} + +func (x *NamedArgExpr) GetXpr() *Node { + if x != nil { + return x.Xpr + } + return nil +} + +func (x *NamedArgExpr) GetArg() *Node { + if x != nil { + return x.Arg + } + return nil +} + +func (x *NamedArgExpr) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *NamedArgExpr) GetArgnumber() int32 { + if x != nil { + return x.Argnumber + } + return 0 +} + +func (x *NamedArgExpr) GetLocation() int32 { + if x != nil { + return x.Location + } + return 0 +} + +type OpExpr struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Xpr *Node `protobuf:"bytes,1,opt,name=xpr,proto3" json:"xpr,omitempty"` + Opno uint32 `protobuf:"varint,2,opt,name=opno,proto3" json:"opno,omitempty"` + Opfuncid uint32 `protobuf:"varint,3,opt,name=opfuncid,proto3" json:"opfuncid,omitempty"` + Opresulttype uint32 `protobuf:"varint,4,opt,name=opresulttype,proto3" json:"opresulttype,omitempty"` + Opretset bool `protobuf:"varint,5,opt,name=opretset,proto3" json:"opretset,omitempty"` + Opcollid uint32 `protobuf:"varint,6,opt,name=opcollid,proto3" json:"opcollid,omitempty"` + Inputcollid uint32 `protobuf:"varint,7,opt,name=inputcollid,proto3" json:"inputcollid,omitempty"` + Args []*Node `protobuf:"bytes,8,rep,name=args,proto3" json:"args,omitempty"` + Location int32 `protobuf:"varint,9,opt,name=location,proto3" json:"location,omitempty"` +} + +func (x *OpExpr) Reset() { + *x = OpExpr{} + if protoimpl.UnsafeEnabled { + mi := &file_pg_query_proto_msgTypes[23] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *OpExpr) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*OpExpr) ProtoMessage() {} + +func (x *OpExpr) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[23] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use OpExpr.ProtoReflect.Descriptor instead. +func (*OpExpr) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{23} +} + +func (x *OpExpr) GetXpr() *Node { + if x != nil { + return x.Xpr + } + return nil +} + +func (x *OpExpr) GetOpno() uint32 { + if x != nil { + return x.Opno + } + return 0 +} + +func (x *OpExpr) GetOpfuncid() uint32 { + if x != nil { + return x.Opfuncid + } + return 0 +} + +func (x *OpExpr) GetOpresulttype() uint32 { + if x != nil { + return x.Opresulttype + } + return 0 +} + +func (x *OpExpr) GetOpretset() bool { + if x != nil { + return x.Opretset + } + return false +} + +func (x *OpExpr) GetOpcollid() uint32 { + if x != nil { + return x.Opcollid + } + return 0 +} + +func (x *OpExpr) GetInputcollid() uint32 { + if x != nil { + return x.Inputcollid + } + return 0 +} + +func (x *OpExpr) GetArgs() []*Node { + if x != nil { + return x.Args + } + return nil +} + +func (x *OpExpr) GetLocation() int32 { + if x != nil { + return x.Location + } + return 0 +} + +type DistinctExpr struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Xpr *Node `protobuf:"bytes,1,opt,name=xpr,proto3" json:"xpr,omitempty"` + Opno uint32 `protobuf:"varint,2,opt,name=opno,proto3" json:"opno,omitempty"` + Opfuncid uint32 `protobuf:"varint,3,opt,name=opfuncid,proto3" json:"opfuncid,omitempty"` + Opresulttype uint32 `protobuf:"varint,4,opt,name=opresulttype,proto3" json:"opresulttype,omitempty"` + Opretset bool `protobuf:"varint,5,opt,name=opretset,proto3" json:"opretset,omitempty"` + Opcollid uint32 `protobuf:"varint,6,opt,name=opcollid,proto3" json:"opcollid,omitempty"` + Inputcollid uint32 `protobuf:"varint,7,opt,name=inputcollid,proto3" json:"inputcollid,omitempty"` + Args []*Node `protobuf:"bytes,8,rep,name=args,proto3" json:"args,omitempty"` + Location int32 `protobuf:"varint,9,opt,name=location,proto3" json:"location,omitempty"` +} + +func (x *DistinctExpr) Reset() { + *x = DistinctExpr{} + if protoimpl.UnsafeEnabled { + mi := &file_pg_query_proto_msgTypes[24] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *DistinctExpr) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DistinctExpr) ProtoMessage() {} + +func (x *DistinctExpr) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[24] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use DistinctExpr.ProtoReflect.Descriptor instead. +func (*DistinctExpr) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{24} +} + +func (x *DistinctExpr) GetXpr() *Node { + if x != nil { + return x.Xpr + } + return nil +} + +func (x *DistinctExpr) GetOpno() uint32 { + if x != nil { + return x.Opno + } + return 0 +} + +func (x *DistinctExpr) GetOpfuncid() uint32 { + if x != nil { + return x.Opfuncid + } + return 0 +} + +func (x *DistinctExpr) GetOpresulttype() uint32 { + if x != nil { + return x.Opresulttype + } + return 0 +} + +func (x *DistinctExpr) GetOpretset() bool { + if x != nil { + return x.Opretset + } + return false +} + +func (x *DistinctExpr) GetOpcollid() uint32 { + if x != nil { + return x.Opcollid + } + return 0 +} + +func (x *DistinctExpr) GetInputcollid() uint32 { + if x != nil { + return x.Inputcollid + } + return 0 +} + +func (x *DistinctExpr) GetArgs() []*Node { + if x != nil { + return x.Args + } + return nil +} + +func (x *DistinctExpr) GetLocation() int32 { + if x != nil { + return x.Location + } + return 0 +} + +type NullIfExpr struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Xpr *Node `protobuf:"bytes,1,opt,name=xpr,proto3" json:"xpr,omitempty"` + Opno uint32 `protobuf:"varint,2,opt,name=opno,proto3" json:"opno,omitempty"` + Opfuncid uint32 `protobuf:"varint,3,opt,name=opfuncid,proto3" json:"opfuncid,omitempty"` + Opresulttype uint32 `protobuf:"varint,4,opt,name=opresulttype,proto3" json:"opresulttype,omitempty"` + Opretset bool `protobuf:"varint,5,opt,name=opretset,proto3" json:"opretset,omitempty"` + Opcollid uint32 `protobuf:"varint,6,opt,name=opcollid,proto3" json:"opcollid,omitempty"` + Inputcollid uint32 `protobuf:"varint,7,opt,name=inputcollid,proto3" json:"inputcollid,omitempty"` + Args []*Node `protobuf:"bytes,8,rep,name=args,proto3" json:"args,omitempty"` + Location int32 `protobuf:"varint,9,opt,name=location,proto3" json:"location,omitempty"` +} + +func (x *NullIfExpr) Reset() { + *x = NullIfExpr{} + if protoimpl.UnsafeEnabled { + mi := &file_pg_query_proto_msgTypes[25] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *NullIfExpr) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*NullIfExpr) ProtoMessage() {} + +func (x *NullIfExpr) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[25] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use NullIfExpr.ProtoReflect.Descriptor instead. +func (*NullIfExpr) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{25} +} + +func (x *NullIfExpr) GetXpr() *Node { + if x != nil { + return x.Xpr + } + return nil +} + +func (x *NullIfExpr) GetOpno() uint32 { + if x != nil { + return x.Opno + } + return 0 +} + +func (x *NullIfExpr) GetOpfuncid() uint32 { + if x != nil { + return x.Opfuncid + } + return 0 +} + +func (x *NullIfExpr) GetOpresulttype() uint32 { + if x != nil { + return x.Opresulttype + } + return 0 +} + +func (x *NullIfExpr) GetOpretset() bool { + if x != nil { + return x.Opretset + } + return false +} + +func (x *NullIfExpr) GetOpcollid() uint32 { + if x != nil { + return x.Opcollid + } + return 0 +} + +func (x *NullIfExpr) GetInputcollid() uint32 { + if x != nil { + return x.Inputcollid + } + return 0 +} + +func (x *NullIfExpr) GetArgs() []*Node { + if x != nil { + return x.Args + } + return nil +} + +func (x *NullIfExpr) GetLocation() int32 { + if x != nil { + return x.Location + } + return 0 +} + +type ScalarArrayOpExpr struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Xpr *Node `protobuf:"bytes,1,opt,name=xpr,proto3" json:"xpr,omitempty"` + Opno uint32 `protobuf:"varint,2,opt,name=opno,proto3" json:"opno,omitempty"` + Opfuncid uint32 `protobuf:"varint,3,opt,name=opfuncid,proto3" json:"opfuncid,omitempty"` + UseOr bool `protobuf:"varint,4,opt,name=use_or,json=useOr,proto3" json:"use_or,omitempty"` + Inputcollid uint32 `protobuf:"varint,5,opt,name=inputcollid,proto3" json:"inputcollid,omitempty"` + Args []*Node `protobuf:"bytes,6,rep,name=args,proto3" json:"args,omitempty"` + Location int32 `protobuf:"varint,7,opt,name=location,proto3" json:"location,omitempty"` +} + +func (x *ScalarArrayOpExpr) Reset() { + *x = ScalarArrayOpExpr{} + if protoimpl.UnsafeEnabled { + mi := &file_pg_query_proto_msgTypes[26] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ScalarArrayOpExpr) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ScalarArrayOpExpr) ProtoMessage() {} + +func (x *ScalarArrayOpExpr) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[26] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ScalarArrayOpExpr.ProtoReflect.Descriptor instead. +func (*ScalarArrayOpExpr) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{26} +} + +func (x *ScalarArrayOpExpr) GetXpr() *Node { + if x != nil { + return x.Xpr + } + return nil +} + +func (x *ScalarArrayOpExpr) GetOpno() uint32 { + if x != nil { + return x.Opno + } + return 0 +} + +func (x *ScalarArrayOpExpr) GetOpfuncid() uint32 { + if x != nil { + return x.Opfuncid + } + return 0 +} + +func (x *ScalarArrayOpExpr) GetUseOr() bool { + if x != nil { + return x.UseOr + } + return false +} + +func (x *ScalarArrayOpExpr) GetInputcollid() uint32 { + if x != nil { + return x.Inputcollid + } + return 0 +} + +func (x *ScalarArrayOpExpr) GetArgs() []*Node { + if x != nil { + return x.Args + } + return nil +} + +func (x *ScalarArrayOpExpr) GetLocation() int32 { + if x != nil { + return x.Location + } + return 0 +} + +type BoolExpr struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Xpr *Node `protobuf:"bytes,1,opt,name=xpr,proto3" json:"xpr,omitempty"` + Boolop BoolExprType `protobuf:"varint,2,opt,name=boolop,proto3,enum=pg_query.BoolExprType" json:"boolop,omitempty"` + Args []*Node `protobuf:"bytes,3,rep,name=args,proto3" json:"args,omitempty"` + Location int32 `protobuf:"varint,4,opt,name=location,proto3" json:"location,omitempty"` +} + +func (x *BoolExpr) Reset() { + *x = BoolExpr{} + if protoimpl.UnsafeEnabled { + mi := &file_pg_query_proto_msgTypes[27] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *BoolExpr) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*BoolExpr) ProtoMessage() {} + +func (x *BoolExpr) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[27] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use BoolExpr.ProtoReflect.Descriptor instead. +func (*BoolExpr) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{27} +} + +func (x *BoolExpr) GetXpr() *Node { + if x != nil { + return x.Xpr + } + return nil +} + +func (x *BoolExpr) GetBoolop() BoolExprType { + if x != nil { + return x.Boolop + } + return BoolExprType_BOOL_EXPR_TYPE_UNDEFINED +} + +func (x *BoolExpr) GetArgs() []*Node { + if x != nil { + return x.Args + } + return nil +} + +func (x *BoolExpr) GetLocation() int32 { + if x != nil { + return x.Location + } + return 0 +} + +type SubLink struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Xpr *Node `protobuf:"bytes,1,opt,name=xpr,proto3" json:"xpr,omitempty"` + SubLinkType SubLinkType `protobuf:"varint,2,opt,name=sub_link_type,json=subLinkType,proto3,enum=pg_query.SubLinkType" json:"sub_link_type,omitempty"` + SubLinkId int32 `protobuf:"varint,3,opt,name=sub_link_id,json=subLinkId,proto3" json:"sub_link_id,omitempty"` + Testexpr *Node `protobuf:"bytes,4,opt,name=testexpr,proto3" json:"testexpr,omitempty"` + OperName []*Node `protobuf:"bytes,5,rep,name=oper_name,json=operName,proto3" json:"oper_name,omitempty"` + Subselect *Node `protobuf:"bytes,6,opt,name=subselect,proto3" json:"subselect,omitempty"` + Location int32 `protobuf:"varint,7,opt,name=location,proto3" json:"location,omitempty"` +} + +func (x *SubLink) Reset() { + *x = SubLink{} + if protoimpl.UnsafeEnabled { + mi := &file_pg_query_proto_msgTypes[28] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *SubLink) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SubLink) ProtoMessage() {} + +func (x *SubLink) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[28] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SubLink.ProtoReflect.Descriptor instead. +func (*SubLink) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{28} +} + +func (x *SubLink) GetXpr() *Node { + if x != nil { + return x.Xpr + } + return nil +} + +func (x *SubLink) GetSubLinkType() SubLinkType { + if x != nil { + return x.SubLinkType + } + return SubLinkType_SUB_LINK_TYPE_UNDEFINED +} + +func (x *SubLink) GetSubLinkId() int32 { + if x != nil { + return x.SubLinkId + } + return 0 +} + +func (x *SubLink) GetTestexpr() *Node { + if x != nil { + return x.Testexpr + } + return nil +} + +func (x *SubLink) GetOperName() []*Node { + if x != nil { + return x.OperName + } + return nil +} + +func (x *SubLink) GetSubselect() *Node { + if x != nil { + return x.Subselect + } + return nil +} + +func (x *SubLink) GetLocation() int32 { + if x != nil { + return x.Location + } + return 0 +} + +type SubPlan struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Xpr *Node `protobuf:"bytes,1,opt,name=xpr,proto3" json:"xpr,omitempty"` + SubLinkType SubLinkType `protobuf:"varint,2,opt,name=sub_link_type,json=subLinkType,proto3,enum=pg_query.SubLinkType" json:"sub_link_type,omitempty"` + Testexpr *Node `protobuf:"bytes,3,opt,name=testexpr,proto3" json:"testexpr,omitempty"` + ParamIds []*Node `protobuf:"bytes,4,rep,name=param_ids,json=paramIds,proto3" json:"param_ids,omitempty"` + PlanId int32 `protobuf:"varint,5,opt,name=plan_id,proto3" json:"plan_id,omitempty"` + PlanName string `protobuf:"bytes,6,opt,name=plan_name,proto3" json:"plan_name,omitempty"` + FirstColType uint32 `protobuf:"varint,7,opt,name=first_col_type,json=firstColType,proto3" json:"first_col_type,omitempty"` + FirstColTypmod int32 `protobuf:"varint,8,opt,name=first_col_typmod,json=firstColTypmod,proto3" json:"first_col_typmod,omitempty"` + FirstColCollation uint32 `protobuf:"varint,9,opt,name=first_col_collation,json=firstColCollation,proto3" json:"first_col_collation,omitempty"` + UseHashTable bool `protobuf:"varint,10,opt,name=use_hash_table,json=useHashTable,proto3" json:"use_hash_table,omitempty"` + UnknownEqFalse bool `protobuf:"varint,11,opt,name=unknown_eq_false,json=unknownEqFalse,proto3" json:"unknown_eq_false,omitempty"` + ParallelSafe bool `protobuf:"varint,12,opt,name=parallel_safe,proto3" json:"parallel_safe,omitempty"` + SetParam []*Node `protobuf:"bytes,13,rep,name=set_param,json=setParam,proto3" json:"set_param,omitempty"` + ParParam []*Node `protobuf:"bytes,14,rep,name=par_param,json=parParam,proto3" json:"par_param,omitempty"` + Args []*Node `protobuf:"bytes,15,rep,name=args,proto3" json:"args,omitempty"` + StartupCost float64 `protobuf:"fixed64,16,opt,name=startup_cost,proto3" json:"startup_cost,omitempty"` + PerCallCost float64 `protobuf:"fixed64,17,opt,name=per_call_cost,proto3" json:"per_call_cost,omitempty"` +} + +func (x *SubPlan) Reset() { + *x = SubPlan{} + if protoimpl.UnsafeEnabled { + mi := &file_pg_query_proto_msgTypes[29] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *SubPlan) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SubPlan) ProtoMessage() {} + +func (x *SubPlan) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[29] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SubPlan.ProtoReflect.Descriptor instead. +func (*SubPlan) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{29} +} + +func (x *SubPlan) GetXpr() *Node { + if x != nil { + return x.Xpr + } + return nil +} + +func (x *SubPlan) GetSubLinkType() SubLinkType { + if x != nil { + return x.SubLinkType + } + return SubLinkType_SUB_LINK_TYPE_UNDEFINED +} + +func (x *SubPlan) GetTestexpr() *Node { + if x != nil { + return x.Testexpr + } + return nil +} + +func (x *SubPlan) GetParamIds() []*Node { + if x != nil { + return x.ParamIds + } + return nil +} + +func (x *SubPlan) GetPlanId() int32 { + if x != nil { + return x.PlanId + } + return 0 +} + +func (x *SubPlan) GetPlanName() string { + if x != nil { + return x.PlanName + } + return "" +} + +func (x *SubPlan) GetFirstColType() uint32 { + if x != nil { + return x.FirstColType + } + return 0 +} + +func (x *SubPlan) GetFirstColTypmod() int32 { + if x != nil { + return x.FirstColTypmod + } + return 0 +} + +func (x *SubPlan) GetFirstColCollation() uint32 { + if x != nil { + return x.FirstColCollation + } + return 0 +} + +func (x *SubPlan) GetUseHashTable() bool { + if x != nil { + return x.UseHashTable + } + return false +} + +func (x *SubPlan) GetUnknownEqFalse() bool { + if x != nil { + return x.UnknownEqFalse + } + return false +} + +func (x *SubPlan) GetParallelSafe() bool { + if x != nil { + return x.ParallelSafe + } + return false +} + +func (x *SubPlan) GetSetParam() []*Node { + if x != nil { + return x.SetParam + } + return nil +} + +func (x *SubPlan) GetParParam() []*Node { + if x != nil { + return x.ParParam + } + return nil +} + +func (x *SubPlan) GetArgs() []*Node { + if x != nil { + return x.Args + } + return nil +} + +func (x *SubPlan) GetStartupCost() float64 { + if x != nil { + return x.StartupCost + } + return 0 +} + +func (x *SubPlan) GetPerCallCost() float64 { + if x != nil { + return x.PerCallCost + } + return 0 +} + +type AlternativeSubPlan struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Xpr *Node `protobuf:"bytes,1,opt,name=xpr,proto3" json:"xpr,omitempty"` + Subplans []*Node `protobuf:"bytes,2,rep,name=subplans,proto3" json:"subplans,omitempty"` +} + +func (x *AlternativeSubPlan) Reset() { + *x = AlternativeSubPlan{} + if protoimpl.UnsafeEnabled { + mi := &file_pg_query_proto_msgTypes[30] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *AlternativeSubPlan) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*AlternativeSubPlan) ProtoMessage() {} + +func (x *AlternativeSubPlan) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[30] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use AlternativeSubPlan.ProtoReflect.Descriptor instead. +func (*AlternativeSubPlan) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{30} +} + +func (x *AlternativeSubPlan) GetXpr() *Node { + if x != nil { + return x.Xpr + } + return nil +} + +func (x *AlternativeSubPlan) GetSubplans() []*Node { + if x != nil { + return x.Subplans + } + return nil +} + +type FieldSelect struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Xpr *Node `protobuf:"bytes,1,opt,name=xpr,proto3" json:"xpr,omitempty"` + Arg *Node `protobuf:"bytes,2,opt,name=arg,proto3" json:"arg,omitempty"` + Fieldnum int32 `protobuf:"varint,3,opt,name=fieldnum,proto3" json:"fieldnum,omitempty"` + Resulttype uint32 `protobuf:"varint,4,opt,name=resulttype,proto3" json:"resulttype,omitempty"` + Resulttypmod int32 `protobuf:"varint,5,opt,name=resulttypmod,proto3" json:"resulttypmod,omitempty"` + Resultcollid uint32 `protobuf:"varint,6,opt,name=resultcollid,proto3" json:"resultcollid,omitempty"` +} + +func (x *FieldSelect) Reset() { + *x = FieldSelect{} + if protoimpl.UnsafeEnabled { + mi := &file_pg_query_proto_msgTypes[31] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *FieldSelect) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*FieldSelect) ProtoMessage() {} + +func (x *FieldSelect) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[31] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use FieldSelect.ProtoReflect.Descriptor instead. +func (*FieldSelect) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{31} +} + +func (x *FieldSelect) GetXpr() *Node { + if x != nil { + return x.Xpr + } + return nil +} + +func (x *FieldSelect) GetArg() *Node { + if x != nil { + return x.Arg + } + return nil +} + +func (x *FieldSelect) GetFieldnum() int32 { + if x != nil { + return x.Fieldnum + } + return 0 +} + +func (x *FieldSelect) GetResulttype() uint32 { + if x != nil { + return x.Resulttype + } + return 0 +} + +func (x *FieldSelect) GetResulttypmod() int32 { + if x != nil { + return x.Resulttypmod + } + return 0 +} + +func (x *FieldSelect) GetResultcollid() uint32 { + if x != nil { + return x.Resultcollid + } + return 0 +} + +type FieldStore struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Xpr *Node `protobuf:"bytes,1,opt,name=xpr,proto3" json:"xpr,omitempty"` + Arg *Node `protobuf:"bytes,2,opt,name=arg,proto3" json:"arg,omitempty"` + Newvals []*Node `protobuf:"bytes,3,rep,name=newvals,proto3" json:"newvals,omitempty"` + Fieldnums []*Node `protobuf:"bytes,4,rep,name=fieldnums,proto3" json:"fieldnums,omitempty"` + Resulttype uint32 `protobuf:"varint,5,opt,name=resulttype,proto3" json:"resulttype,omitempty"` +} + +func (x *FieldStore) Reset() { + *x = FieldStore{} + if protoimpl.UnsafeEnabled { + mi := &file_pg_query_proto_msgTypes[32] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *FieldStore) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*FieldStore) ProtoMessage() {} + +func (x *FieldStore) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[32] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use FieldStore.ProtoReflect.Descriptor instead. +func (*FieldStore) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{32} +} + +func (x *FieldStore) GetXpr() *Node { + if x != nil { + return x.Xpr + } + return nil +} + +func (x *FieldStore) GetArg() *Node { + if x != nil { + return x.Arg + } + return nil +} + +func (x *FieldStore) GetNewvals() []*Node { + if x != nil { + return x.Newvals + } + return nil +} + +func (x *FieldStore) GetFieldnums() []*Node { + if x != nil { + return x.Fieldnums + } + return nil +} + +func (x *FieldStore) GetResulttype() uint32 { + if x != nil { + return x.Resulttype + } + return 0 +} + +type RelabelType struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Xpr *Node `protobuf:"bytes,1,opt,name=xpr,proto3" json:"xpr,omitempty"` + Arg *Node `protobuf:"bytes,2,opt,name=arg,proto3" json:"arg,omitempty"` + Resulttype uint32 `protobuf:"varint,3,opt,name=resulttype,proto3" json:"resulttype,omitempty"` + Resulttypmod int32 `protobuf:"varint,4,opt,name=resulttypmod,proto3" json:"resulttypmod,omitempty"` + Resultcollid uint32 `protobuf:"varint,5,opt,name=resultcollid,proto3" json:"resultcollid,omitempty"` + Relabelformat CoercionForm `protobuf:"varint,6,opt,name=relabelformat,proto3,enum=pg_query.CoercionForm" json:"relabelformat,omitempty"` + Location int32 `protobuf:"varint,7,opt,name=location,proto3" json:"location,omitempty"` +} + +func (x *RelabelType) Reset() { + *x = RelabelType{} + if protoimpl.UnsafeEnabled { + mi := &file_pg_query_proto_msgTypes[33] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *RelabelType) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*RelabelType) ProtoMessage() {} + +func (x *RelabelType) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[33] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use RelabelType.ProtoReflect.Descriptor instead. +func (*RelabelType) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{33} +} + +func (x *RelabelType) GetXpr() *Node { + if x != nil { + return x.Xpr + } + return nil +} + +func (x *RelabelType) GetArg() *Node { + if x != nil { + return x.Arg + } + return nil +} + +func (x *RelabelType) GetResulttype() uint32 { + if x != nil { + return x.Resulttype + } + return 0 +} + +func (x *RelabelType) GetResulttypmod() int32 { + if x != nil { + return x.Resulttypmod + } + return 0 +} + +func (x *RelabelType) GetResultcollid() uint32 { + if x != nil { + return x.Resultcollid + } + return 0 +} + +func (x *RelabelType) GetRelabelformat() CoercionForm { + if x != nil { + return x.Relabelformat + } + return CoercionForm_COERCION_FORM_UNDEFINED +} + +func (x *RelabelType) GetLocation() int32 { + if x != nil { + return x.Location + } + return 0 +} + +type CoerceViaIO struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Xpr *Node `protobuf:"bytes,1,opt,name=xpr,proto3" json:"xpr,omitempty"` + Arg *Node `protobuf:"bytes,2,opt,name=arg,proto3" json:"arg,omitempty"` + Resulttype uint32 `protobuf:"varint,3,opt,name=resulttype,proto3" json:"resulttype,omitempty"` + Resultcollid uint32 `protobuf:"varint,4,opt,name=resultcollid,proto3" json:"resultcollid,omitempty"` + Coerceformat CoercionForm `protobuf:"varint,5,opt,name=coerceformat,proto3,enum=pg_query.CoercionForm" json:"coerceformat,omitempty"` + Location int32 `protobuf:"varint,6,opt,name=location,proto3" json:"location,omitempty"` +} + +func (x *CoerceViaIO) Reset() { + *x = CoerceViaIO{} + if protoimpl.UnsafeEnabled { + mi := &file_pg_query_proto_msgTypes[34] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *CoerceViaIO) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CoerceViaIO) ProtoMessage() {} + +func (x *CoerceViaIO) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[34] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CoerceViaIO.ProtoReflect.Descriptor instead. +func (*CoerceViaIO) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{34} +} + +func (x *CoerceViaIO) GetXpr() *Node { + if x != nil { + return x.Xpr + } + return nil +} + +func (x *CoerceViaIO) GetArg() *Node { + if x != nil { + return x.Arg + } + return nil +} + +func (x *CoerceViaIO) GetResulttype() uint32 { + if x != nil { + return x.Resulttype + } + return 0 +} + +func (x *CoerceViaIO) GetResultcollid() uint32 { + if x != nil { + return x.Resultcollid + } + return 0 +} + +func (x *CoerceViaIO) GetCoerceformat() CoercionForm { + if x != nil { + return x.Coerceformat + } + return CoercionForm_COERCION_FORM_UNDEFINED +} + +func (x *CoerceViaIO) GetLocation() int32 { + if x != nil { + return x.Location + } + return 0 +} + +type ArrayCoerceExpr struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Xpr *Node `protobuf:"bytes,1,opt,name=xpr,proto3" json:"xpr,omitempty"` + Arg *Node `protobuf:"bytes,2,opt,name=arg,proto3" json:"arg,omitempty"` + Elemexpr *Node `protobuf:"bytes,3,opt,name=elemexpr,proto3" json:"elemexpr,omitempty"` + Resulttype uint32 `protobuf:"varint,4,opt,name=resulttype,proto3" json:"resulttype,omitempty"` + Resulttypmod int32 `protobuf:"varint,5,opt,name=resulttypmod,proto3" json:"resulttypmod,omitempty"` + Resultcollid uint32 `protobuf:"varint,6,opt,name=resultcollid,proto3" json:"resultcollid,omitempty"` + Coerceformat CoercionForm `protobuf:"varint,7,opt,name=coerceformat,proto3,enum=pg_query.CoercionForm" json:"coerceformat,omitempty"` + Location int32 `protobuf:"varint,8,opt,name=location,proto3" json:"location,omitempty"` +} + +func (x *ArrayCoerceExpr) Reset() { + *x = ArrayCoerceExpr{} + if protoimpl.UnsafeEnabled { + mi := &file_pg_query_proto_msgTypes[35] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ArrayCoerceExpr) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ArrayCoerceExpr) ProtoMessage() {} + +func (x *ArrayCoerceExpr) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[35] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ArrayCoerceExpr.ProtoReflect.Descriptor instead. +func (*ArrayCoerceExpr) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{35} +} + +func (x *ArrayCoerceExpr) GetXpr() *Node { + if x != nil { + return x.Xpr + } + return nil +} + +func (x *ArrayCoerceExpr) GetArg() *Node { + if x != nil { + return x.Arg + } + return nil +} + +func (x *ArrayCoerceExpr) GetElemexpr() *Node { + if x != nil { + return x.Elemexpr + } + return nil +} + +func (x *ArrayCoerceExpr) GetResulttype() uint32 { + if x != nil { + return x.Resulttype + } + return 0 +} + +func (x *ArrayCoerceExpr) GetResulttypmod() int32 { + if x != nil { + return x.Resulttypmod + } + return 0 +} + +func (x *ArrayCoerceExpr) GetResultcollid() uint32 { + if x != nil { + return x.Resultcollid + } + return 0 +} + +func (x *ArrayCoerceExpr) GetCoerceformat() CoercionForm { + if x != nil { + return x.Coerceformat + } + return CoercionForm_COERCION_FORM_UNDEFINED +} + +func (x *ArrayCoerceExpr) GetLocation() int32 { + if x != nil { + return x.Location + } + return 0 +} + +type ConvertRowtypeExpr struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Xpr *Node `protobuf:"bytes,1,opt,name=xpr,proto3" json:"xpr,omitempty"` + Arg *Node `protobuf:"bytes,2,opt,name=arg,proto3" json:"arg,omitempty"` + Resulttype uint32 `protobuf:"varint,3,opt,name=resulttype,proto3" json:"resulttype,omitempty"` + Convertformat CoercionForm `protobuf:"varint,4,opt,name=convertformat,proto3,enum=pg_query.CoercionForm" json:"convertformat,omitempty"` + Location int32 `protobuf:"varint,5,opt,name=location,proto3" json:"location,omitempty"` +} + +func (x *ConvertRowtypeExpr) Reset() { + *x = ConvertRowtypeExpr{} + if protoimpl.UnsafeEnabled { + mi := &file_pg_query_proto_msgTypes[36] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ConvertRowtypeExpr) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ConvertRowtypeExpr) ProtoMessage() {} + +func (x *ConvertRowtypeExpr) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[36] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ConvertRowtypeExpr.ProtoReflect.Descriptor instead. +func (*ConvertRowtypeExpr) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{36} +} + +func (x *ConvertRowtypeExpr) GetXpr() *Node { + if x != nil { + return x.Xpr + } + return nil +} + +func (x *ConvertRowtypeExpr) GetArg() *Node { + if x != nil { + return x.Arg + } + return nil +} + +func (x *ConvertRowtypeExpr) GetResulttype() uint32 { + if x != nil { + return x.Resulttype + } + return 0 +} + +func (x *ConvertRowtypeExpr) GetConvertformat() CoercionForm { + if x != nil { + return x.Convertformat + } + return CoercionForm_COERCION_FORM_UNDEFINED +} + +func (x *ConvertRowtypeExpr) GetLocation() int32 { + if x != nil { + return x.Location + } + return 0 +} + +type CollateExpr struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Xpr *Node `protobuf:"bytes,1,opt,name=xpr,proto3" json:"xpr,omitempty"` + Arg *Node `protobuf:"bytes,2,opt,name=arg,proto3" json:"arg,omitempty"` + CollOid uint32 `protobuf:"varint,3,opt,name=coll_oid,json=collOid,proto3" json:"coll_oid,omitempty"` + Location int32 `protobuf:"varint,4,opt,name=location,proto3" json:"location,omitempty"` +} + +func (x *CollateExpr) Reset() { + *x = CollateExpr{} + if protoimpl.UnsafeEnabled { + mi := &file_pg_query_proto_msgTypes[37] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *CollateExpr) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CollateExpr) ProtoMessage() {} + +func (x *CollateExpr) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[37] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CollateExpr.ProtoReflect.Descriptor instead. +func (*CollateExpr) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{37} +} + +func (x *CollateExpr) GetXpr() *Node { + if x != nil { + return x.Xpr + } + return nil +} + +func (x *CollateExpr) GetArg() *Node { + if x != nil { + return x.Arg + } + return nil +} + +func (x *CollateExpr) GetCollOid() uint32 { + if x != nil { + return x.CollOid + } + return 0 +} + +func (x *CollateExpr) GetLocation() int32 { + if x != nil { + return x.Location + } + return 0 +} + +type CaseExpr struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Xpr *Node `protobuf:"bytes,1,opt,name=xpr,proto3" json:"xpr,omitempty"` + Casetype uint32 `protobuf:"varint,2,opt,name=casetype,proto3" json:"casetype,omitempty"` + Casecollid uint32 `protobuf:"varint,3,opt,name=casecollid,proto3" json:"casecollid,omitempty"` + Arg *Node `protobuf:"bytes,4,opt,name=arg,proto3" json:"arg,omitempty"` + Args []*Node `protobuf:"bytes,5,rep,name=args,proto3" json:"args,omitempty"` + Defresult *Node `protobuf:"bytes,6,opt,name=defresult,proto3" json:"defresult,omitempty"` + Location int32 `protobuf:"varint,7,opt,name=location,proto3" json:"location,omitempty"` +} + +func (x *CaseExpr) Reset() { + *x = CaseExpr{} + if protoimpl.UnsafeEnabled { + mi := &file_pg_query_proto_msgTypes[38] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *CaseExpr) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CaseExpr) ProtoMessage() {} + +func (x *CaseExpr) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[38] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CaseExpr.ProtoReflect.Descriptor instead. +func (*CaseExpr) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{38} +} + +func (x *CaseExpr) GetXpr() *Node { + if x != nil { + return x.Xpr + } + return nil +} + +func (x *CaseExpr) GetCasetype() uint32 { + if x != nil { + return x.Casetype + } + return 0 +} + +func (x *CaseExpr) GetCasecollid() uint32 { + if x != nil { + return x.Casecollid + } + return 0 +} + +func (x *CaseExpr) GetArg() *Node { + if x != nil { + return x.Arg + } + return nil +} + +func (x *CaseExpr) GetArgs() []*Node { + if x != nil { + return x.Args + } + return nil +} + +func (x *CaseExpr) GetDefresult() *Node { + if x != nil { + return x.Defresult + } + return nil +} + +func (x *CaseExpr) GetLocation() int32 { + if x != nil { + return x.Location + } + return 0 +} + +type CaseWhen struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Xpr *Node `protobuf:"bytes,1,opt,name=xpr,proto3" json:"xpr,omitempty"` + Expr *Node `protobuf:"bytes,2,opt,name=expr,proto3" json:"expr,omitempty"` + Result *Node `protobuf:"bytes,3,opt,name=result,proto3" json:"result,omitempty"` + Location int32 `protobuf:"varint,4,opt,name=location,proto3" json:"location,omitempty"` +} + +func (x *CaseWhen) Reset() { + *x = CaseWhen{} + if protoimpl.UnsafeEnabled { + mi := &file_pg_query_proto_msgTypes[39] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *CaseWhen) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CaseWhen) ProtoMessage() {} + +func (x *CaseWhen) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[39] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CaseWhen.ProtoReflect.Descriptor instead. +func (*CaseWhen) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{39} +} + +func (x *CaseWhen) GetXpr() *Node { + if x != nil { + return x.Xpr + } + return nil +} + +func (x *CaseWhen) GetExpr() *Node { + if x != nil { + return x.Expr + } + return nil +} + +func (x *CaseWhen) GetResult() *Node { + if x != nil { + return x.Result + } + return nil +} + +func (x *CaseWhen) GetLocation() int32 { + if x != nil { + return x.Location + } + return 0 +} + +type CaseTestExpr struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Xpr *Node `protobuf:"bytes,1,opt,name=xpr,proto3" json:"xpr,omitempty"` + TypeId uint32 `protobuf:"varint,2,opt,name=type_id,json=typeId,proto3" json:"type_id,omitempty"` + TypeMod int32 `protobuf:"varint,3,opt,name=type_mod,json=typeMod,proto3" json:"type_mod,omitempty"` + Collation uint32 `protobuf:"varint,4,opt,name=collation,proto3" json:"collation,omitempty"` +} + +func (x *CaseTestExpr) Reset() { + *x = CaseTestExpr{} + if protoimpl.UnsafeEnabled { + mi := &file_pg_query_proto_msgTypes[40] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *CaseTestExpr) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CaseTestExpr) ProtoMessage() {} + +func (x *CaseTestExpr) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[40] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CaseTestExpr.ProtoReflect.Descriptor instead. +func (*CaseTestExpr) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{40} +} + +func (x *CaseTestExpr) GetXpr() *Node { + if x != nil { + return x.Xpr + } + return nil +} + +func (x *CaseTestExpr) GetTypeId() uint32 { + if x != nil { + return x.TypeId + } + return 0 +} + +func (x *CaseTestExpr) GetTypeMod() int32 { + if x != nil { + return x.TypeMod + } + return 0 +} + +func (x *CaseTestExpr) GetCollation() uint32 { + if x != nil { + return x.Collation + } + return 0 +} + +type ArrayExpr struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Xpr *Node `protobuf:"bytes,1,opt,name=xpr,proto3" json:"xpr,omitempty"` + ArrayTypeid uint32 `protobuf:"varint,2,opt,name=array_typeid,proto3" json:"array_typeid,omitempty"` + ArrayCollid uint32 `protobuf:"varint,3,opt,name=array_collid,proto3" json:"array_collid,omitempty"` + ElementTypeid uint32 `protobuf:"varint,4,opt,name=element_typeid,proto3" json:"element_typeid,omitempty"` + Elements []*Node `protobuf:"bytes,5,rep,name=elements,proto3" json:"elements,omitempty"` + Multidims bool `protobuf:"varint,6,opt,name=multidims,proto3" json:"multidims,omitempty"` + Location int32 `protobuf:"varint,7,opt,name=location,proto3" json:"location,omitempty"` +} + +func (x *ArrayExpr) Reset() { + *x = ArrayExpr{} + if protoimpl.UnsafeEnabled { + mi := &file_pg_query_proto_msgTypes[41] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ArrayExpr) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ArrayExpr) ProtoMessage() {} + +func (x *ArrayExpr) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[41] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ArrayExpr.ProtoReflect.Descriptor instead. +func (*ArrayExpr) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{41} +} + +func (x *ArrayExpr) GetXpr() *Node { + if x != nil { + return x.Xpr + } + return nil +} + +func (x *ArrayExpr) GetArrayTypeid() uint32 { + if x != nil { + return x.ArrayTypeid + } + return 0 +} + +func (x *ArrayExpr) GetArrayCollid() uint32 { + if x != nil { + return x.ArrayCollid + } + return 0 +} + +func (x *ArrayExpr) GetElementTypeid() uint32 { + if x != nil { + return x.ElementTypeid + } + return 0 +} + +func (x *ArrayExpr) GetElements() []*Node { + if x != nil { + return x.Elements + } + return nil +} + +func (x *ArrayExpr) GetMultidims() bool { + if x != nil { + return x.Multidims + } + return false +} + +func (x *ArrayExpr) GetLocation() int32 { + if x != nil { + return x.Location + } + return 0 +} + +type RowExpr struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Xpr *Node `protobuf:"bytes,1,opt,name=xpr,proto3" json:"xpr,omitempty"` + Args []*Node `protobuf:"bytes,2,rep,name=args,proto3" json:"args,omitempty"` + RowTypeid uint32 `protobuf:"varint,3,opt,name=row_typeid,proto3" json:"row_typeid,omitempty"` + RowFormat CoercionForm `protobuf:"varint,4,opt,name=row_format,proto3,enum=pg_query.CoercionForm" json:"row_format,omitempty"` + Colnames []*Node `protobuf:"bytes,5,rep,name=colnames,proto3" json:"colnames,omitempty"` + Location int32 `protobuf:"varint,6,opt,name=location,proto3" json:"location,omitempty"` +} + +func (x *RowExpr) Reset() { + *x = RowExpr{} + if protoimpl.UnsafeEnabled { + mi := &file_pg_query_proto_msgTypes[42] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *RowExpr) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*RowExpr) ProtoMessage() {} + +func (x *RowExpr) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[42] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use RowExpr.ProtoReflect.Descriptor instead. +func (*RowExpr) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{42} +} + +func (x *RowExpr) GetXpr() *Node { + if x != nil { + return x.Xpr + } + return nil +} + +func (x *RowExpr) GetArgs() []*Node { + if x != nil { + return x.Args + } + return nil +} + +func (x *RowExpr) GetRowTypeid() uint32 { + if x != nil { + return x.RowTypeid + } + return 0 +} + +func (x *RowExpr) GetRowFormat() CoercionForm { + if x != nil { + return x.RowFormat + } + return CoercionForm_COERCION_FORM_UNDEFINED +} + +func (x *RowExpr) GetColnames() []*Node { + if x != nil { + return x.Colnames + } + return nil +} + +func (x *RowExpr) GetLocation() int32 { + if x != nil { + return x.Location + } + return 0 +} + +type RowCompareExpr struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Xpr *Node `protobuf:"bytes,1,opt,name=xpr,proto3" json:"xpr,omitempty"` + Rctype RowCompareType `protobuf:"varint,2,opt,name=rctype,proto3,enum=pg_query.RowCompareType" json:"rctype,omitempty"` + Opnos []*Node `protobuf:"bytes,3,rep,name=opnos,proto3" json:"opnos,omitempty"` + Opfamilies []*Node `protobuf:"bytes,4,rep,name=opfamilies,proto3" json:"opfamilies,omitempty"` + Inputcollids []*Node `protobuf:"bytes,5,rep,name=inputcollids,proto3" json:"inputcollids,omitempty"` + Largs []*Node `protobuf:"bytes,6,rep,name=largs,proto3" json:"largs,omitempty"` + Rargs []*Node `protobuf:"bytes,7,rep,name=rargs,proto3" json:"rargs,omitempty"` +} + +func (x *RowCompareExpr) Reset() { + *x = RowCompareExpr{} + if protoimpl.UnsafeEnabled { + mi := &file_pg_query_proto_msgTypes[43] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *RowCompareExpr) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*RowCompareExpr) ProtoMessage() {} + +func (x *RowCompareExpr) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[43] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use RowCompareExpr.ProtoReflect.Descriptor instead. +func (*RowCompareExpr) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{43} +} + +func (x *RowCompareExpr) GetXpr() *Node { + if x != nil { + return x.Xpr + } + return nil +} + +func (x *RowCompareExpr) GetRctype() RowCompareType { + if x != nil { + return x.Rctype + } + return RowCompareType_ROW_COMPARE_TYPE_UNDEFINED +} + +func (x *RowCompareExpr) GetOpnos() []*Node { + if x != nil { + return x.Opnos + } + return nil +} + +func (x *RowCompareExpr) GetOpfamilies() []*Node { + if x != nil { + return x.Opfamilies + } + return nil +} + +func (x *RowCompareExpr) GetInputcollids() []*Node { + if x != nil { + return x.Inputcollids + } + return nil +} + +func (x *RowCompareExpr) GetLargs() []*Node { + if x != nil { + return x.Largs + } + return nil +} + +func (x *RowCompareExpr) GetRargs() []*Node { + if x != nil { + return x.Rargs + } + return nil +} + +type CoalesceExpr struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Xpr *Node `protobuf:"bytes,1,opt,name=xpr,proto3" json:"xpr,omitempty"` + Coalescetype uint32 `protobuf:"varint,2,opt,name=coalescetype,proto3" json:"coalescetype,omitempty"` + Coalescecollid uint32 `protobuf:"varint,3,opt,name=coalescecollid,proto3" json:"coalescecollid,omitempty"` + Args []*Node `protobuf:"bytes,4,rep,name=args,proto3" json:"args,omitempty"` + Location int32 `protobuf:"varint,5,opt,name=location,proto3" json:"location,omitempty"` +} + +func (x *CoalesceExpr) Reset() { + *x = CoalesceExpr{} + if protoimpl.UnsafeEnabled { + mi := &file_pg_query_proto_msgTypes[44] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *CoalesceExpr) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CoalesceExpr) ProtoMessage() {} + +func (x *CoalesceExpr) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[44] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CoalesceExpr.ProtoReflect.Descriptor instead. +func (*CoalesceExpr) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{44} +} + +func (x *CoalesceExpr) GetXpr() *Node { + if x != nil { + return x.Xpr + } + return nil +} + +func (x *CoalesceExpr) GetCoalescetype() uint32 { + if x != nil { + return x.Coalescetype + } + return 0 +} + +func (x *CoalesceExpr) GetCoalescecollid() uint32 { + if x != nil { + return x.Coalescecollid + } + return 0 +} + +func (x *CoalesceExpr) GetArgs() []*Node { + if x != nil { + return x.Args + } + return nil +} + +func (x *CoalesceExpr) GetLocation() int32 { + if x != nil { + return x.Location + } + return 0 +} + +type MinMaxExpr struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Xpr *Node `protobuf:"bytes,1,opt,name=xpr,proto3" json:"xpr,omitempty"` + Minmaxtype uint32 `protobuf:"varint,2,opt,name=minmaxtype,proto3" json:"minmaxtype,omitempty"` + Minmaxcollid uint32 `protobuf:"varint,3,opt,name=minmaxcollid,proto3" json:"minmaxcollid,omitempty"` + Inputcollid uint32 `protobuf:"varint,4,opt,name=inputcollid,proto3" json:"inputcollid,omitempty"` + Op MinMaxOp `protobuf:"varint,5,opt,name=op,proto3,enum=pg_query.MinMaxOp" json:"op,omitempty"` + Args []*Node `protobuf:"bytes,6,rep,name=args,proto3" json:"args,omitempty"` + Location int32 `protobuf:"varint,7,opt,name=location,proto3" json:"location,omitempty"` +} + +func (x *MinMaxExpr) Reset() { + *x = MinMaxExpr{} + if protoimpl.UnsafeEnabled { + mi := &file_pg_query_proto_msgTypes[45] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *MinMaxExpr) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*MinMaxExpr) ProtoMessage() {} + +func (x *MinMaxExpr) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[45] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use MinMaxExpr.ProtoReflect.Descriptor instead. +func (*MinMaxExpr) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{45} +} + +func (x *MinMaxExpr) GetXpr() *Node { + if x != nil { + return x.Xpr + } + return nil +} + +func (x *MinMaxExpr) GetMinmaxtype() uint32 { + if x != nil { + return x.Minmaxtype + } + return 0 +} + +func (x *MinMaxExpr) GetMinmaxcollid() uint32 { + if x != nil { + return x.Minmaxcollid + } + return 0 +} + +func (x *MinMaxExpr) GetInputcollid() uint32 { + if x != nil { + return x.Inputcollid + } + return 0 +} + +func (x *MinMaxExpr) GetOp() MinMaxOp { + if x != nil { + return x.Op + } + return MinMaxOp_MIN_MAX_OP_UNDEFINED +} + +func (x *MinMaxExpr) GetArgs() []*Node { + if x != nil { + return x.Args + } + return nil +} + +func (x *MinMaxExpr) GetLocation() int32 { + if x != nil { + return x.Location + } + return 0 +} + +type SQLValueFunction struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Xpr *Node `protobuf:"bytes,1,opt,name=xpr,proto3" json:"xpr,omitempty"` + Op SQLValueFunctionOp `protobuf:"varint,2,opt,name=op,proto3,enum=pg_query.SQLValueFunctionOp" json:"op,omitempty"` + Type uint32 `protobuf:"varint,3,opt,name=type,proto3" json:"type,omitempty"` + Typmod int32 `protobuf:"varint,4,opt,name=typmod,proto3" json:"typmod,omitempty"` + Location int32 `protobuf:"varint,5,opt,name=location,proto3" json:"location,omitempty"` +} + +func (x *SQLValueFunction) Reset() { + *x = SQLValueFunction{} + if protoimpl.UnsafeEnabled { + mi := &file_pg_query_proto_msgTypes[46] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *SQLValueFunction) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SQLValueFunction) ProtoMessage() {} + +func (x *SQLValueFunction) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[46] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SQLValueFunction.ProtoReflect.Descriptor instead. +func (*SQLValueFunction) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{46} +} + +func (x *SQLValueFunction) GetXpr() *Node { + if x != nil { + return x.Xpr + } + return nil +} + +func (x *SQLValueFunction) GetOp() SQLValueFunctionOp { + if x != nil { + return x.Op + } + return SQLValueFunctionOp_SQLVALUE_FUNCTION_OP_UNDEFINED +} + +func (x *SQLValueFunction) GetType() uint32 { + if x != nil { + return x.Type + } + return 0 +} + +func (x *SQLValueFunction) GetTypmod() int32 { + if x != nil { + return x.Typmod + } + return 0 +} + +func (x *SQLValueFunction) GetLocation() int32 { + if x != nil { + return x.Location + } + return 0 +} + +type XmlExpr struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Xpr *Node `protobuf:"bytes,1,opt,name=xpr,proto3" json:"xpr,omitempty"` + Op XmlExprOp `protobuf:"varint,2,opt,name=op,proto3,enum=pg_query.XmlExprOp" json:"op,omitempty"` + Name string `protobuf:"bytes,3,opt,name=name,proto3" json:"name,omitempty"` + NamedArgs []*Node `protobuf:"bytes,4,rep,name=named_args,proto3" json:"named_args,omitempty"` + ArgNames []*Node `protobuf:"bytes,5,rep,name=arg_names,proto3" json:"arg_names,omitempty"` + Args []*Node `protobuf:"bytes,6,rep,name=args,proto3" json:"args,omitempty"` + Xmloption XmlOptionType `protobuf:"varint,7,opt,name=xmloption,proto3,enum=pg_query.XmlOptionType" json:"xmloption,omitempty"` + Type uint32 `protobuf:"varint,8,opt,name=type,proto3" json:"type,omitempty"` + Typmod int32 `protobuf:"varint,9,opt,name=typmod,proto3" json:"typmod,omitempty"` + Location int32 `protobuf:"varint,10,opt,name=location,proto3" json:"location,omitempty"` +} + +func (x *XmlExpr) Reset() { + *x = XmlExpr{} + if protoimpl.UnsafeEnabled { + mi := &file_pg_query_proto_msgTypes[47] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *XmlExpr) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*XmlExpr) ProtoMessage() {} + +func (x *XmlExpr) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[47] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use XmlExpr.ProtoReflect.Descriptor instead. +func (*XmlExpr) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{47} +} + +func (x *XmlExpr) GetXpr() *Node { + if x != nil { + return x.Xpr + } + return nil +} + +func (x *XmlExpr) GetOp() XmlExprOp { + if x != nil { + return x.Op + } + return XmlExprOp_XML_EXPR_OP_UNDEFINED +} + +func (x *XmlExpr) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *XmlExpr) GetNamedArgs() []*Node { + if x != nil { + return x.NamedArgs + } + return nil +} + +func (x *XmlExpr) GetArgNames() []*Node { + if x != nil { + return x.ArgNames + } + return nil +} + +func (x *XmlExpr) GetArgs() []*Node { + if x != nil { + return x.Args + } + return nil +} + +func (x *XmlExpr) GetXmloption() XmlOptionType { + if x != nil { + return x.Xmloption + } + return XmlOptionType_XML_OPTION_TYPE_UNDEFINED +} + +func (x *XmlExpr) GetType() uint32 { + if x != nil { + return x.Type + } + return 0 +} + +func (x *XmlExpr) GetTypmod() int32 { + if x != nil { + return x.Typmod + } + return 0 +} + +func (x *XmlExpr) GetLocation() int32 { + if x != nil { + return x.Location + } + return 0 +} + +type NullTest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Xpr *Node `protobuf:"bytes,1,opt,name=xpr,proto3" json:"xpr,omitempty"` + Arg *Node `protobuf:"bytes,2,opt,name=arg,proto3" json:"arg,omitempty"` + Nulltesttype NullTestType `protobuf:"varint,3,opt,name=nulltesttype,proto3,enum=pg_query.NullTestType" json:"nulltesttype,omitempty"` + Argisrow bool `protobuf:"varint,4,opt,name=argisrow,proto3" json:"argisrow,omitempty"` + Location int32 `protobuf:"varint,5,opt,name=location,proto3" json:"location,omitempty"` +} + +func (x *NullTest) Reset() { + *x = NullTest{} + if protoimpl.UnsafeEnabled { + mi := &file_pg_query_proto_msgTypes[48] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *NullTest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*NullTest) ProtoMessage() {} + +func (x *NullTest) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[48] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use NullTest.ProtoReflect.Descriptor instead. +func (*NullTest) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{48} +} + +func (x *NullTest) GetXpr() *Node { + if x != nil { + return x.Xpr + } + return nil +} + +func (x *NullTest) GetArg() *Node { + if x != nil { + return x.Arg + } + return nil +} + +func (x *NullTest) GetNulltesttype() NullTestType { + if x != nil { + return x.Nulltesttype + } + return NullTestType_NULL_TEST_TYPE_UNDEFINED +} + +func (x *NullTest) GetArgisrow() bool { + if x != nil { + return x.Argisrow + } + return false +} + +func (x *NullTest) GetLocation() int32 { + if x != nil { + return x.Location + } + return 0 +} + +type BooleanTest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Xpr *Node `protobuf:"bytes,1,opt,name=xpr,proto3" json:"xpr,omitempty"` + Arg *Node `protobuf:"bytes,2,opt,name=arg,proto3" json:"arg,omitempty"` + Booltesttype BoolTestType `protobuf:"varint,3,opt,name=booltesttype,proto3,enum=pg_query.BoolTestType" json:"booltesttype,omitempty"` + Location int32 `protobuf:"varint,4,opt,name=location,proto3" json:"location,omitempty"` +} + +func (x *BooleanTest) Reset() { + *x = BooleanTest{} + if protoimpl.UnsafeEnabled { + mi := &file_pg_query_proto_msgTypes[49] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *BooleanTest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*BooleanTest) ProtoMessage() {} + +func (x *BooleanTest) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[49] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use BooleanTest.ProtoReflect.Descriptor instead. +func (*BooleanTest) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{49} +} + +func (x *BooleanTest) GetXpr() *Node { + if x != nil { + return x.Xpr + } + return nil +} + +func (x *BooleanTest) GetArg() *Node { + if x != nil { + return x.Arg + } + return nil +} + +func (x *BooleanTest) GetBooltesttype() BoolTestType { + if x != nil { + return x.Booltesttype + } + return BoolTestType_BOOL_TEST_TYPE_UNDEFINED +} + +func (x *BooleanTest) GetLocation() int32 { + if x != nil { + return x.Location + } + return 0 +} + +type CoerceToDomain struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Xpr *Node `protobuf:"bytes,1,opt,name=xpr,proto3" json:"xpr,omitempty"` + Arg *Node `protobuf:"bytes,2,opt,name=arg,proto3" json:"arg,omitempty"` + Resulttype uint32 `protobuf:"varint,3,opt,name=resulttype,proto3" json:"resulttype,omitempty"` + Resulttypmod int32 `protobuf:"varint,4,opt,name=resulttypmod,proto3" json:"resulttypmod,omitempty"` + Resultcollid uint32 `protobuf:"varint,5,opt,name=resultcollid,proto3" json:"resultcollid,omitempty"` + Coercionformat CoercionForm `protobuf:"varint,6,opt,name=coercionformat,proto3,enum=pg_query.CoercionForm" json:"coercionformat,omitempty"` + Location int32 `protobuf:"varint,7,opt,name=location,proto3" json:"location,omitempty"` +} + +func (x *CoerceToDomain) Reset() { + *x = CoerceToDomain{} + if protoimpl.UnsafeEnabled { + mi := &file_pg_query_proto_msgTypes[50] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *CoerceToDomain) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CoerceToDomain) ProtoMessage() {} + +func (x *CoerceToDomain) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[50] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CoerceToDomain.ProtoReflect.Descriptor instead. +func (*CoerceToDomain) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{50} +} + +func (x *CoerceToDomain) GetXpr() *Node { + if x != nil { + return x.Xpr + } + return nil +} + +func (x *CoerceToDomain) GetArg() *Node { + if x != nil { + return x.Arg + } + return nil +} + +func (x *CoerceToDomain) GetResulttype() uint32 { + if x != nil { + return x.Resulttype + } + return 0 +} + +func (x *CoerceToDomain) GetResulttypmod() int32 { + if x != nil { + return x.Resulttypmod + } + return 0 +} + +func (x *CoerceToDomain) GetResultcollid() uint32 { + if x != nil { + return x.Resultcollid + } + return 0 +} + +func (x *CoerceToDomain) GetCoercionformat() CoercionForm { + if x != nil { + return x.Coercionformat + } + return CoercionForm_COERCION_FORM_UNDEFINED +} + +func (x *CoerceToDomain) GetLocation() int32 { + if x != nil { + return x.Location + } + return 0 +} + +type CoerceToDomainValue struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Xpr *Node `protobuf:"bytes,1,opt,name=xpr,proto3" json:"xpr,omitempty"` + TypeId uint32 `protobuf:"varint,2,opt,name=type_id,json=typeId,proto3" json:"type_id,omitempty"` + TypeMod int32 `protobuf:"varint,3,opt,name=type_mod,json=typeMod,proto3" json:"type_mod,omitempty"` + Collation uint32 `protobuf:"varint,4,opt,name=collation,proto3" json:"collation,omitempty"` + Location int32 `protobuf:"varint,5,opt,name=location,proto3" json:"location,omitempty"` +} + +func (x *CoerceToDomainValue) Reset() { + *x = CoerceToDomainValue{} + if protoimpl.UnsafeEnabled { + mi := &file_pg_query_proto_msgTypes[51] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *CoerceToDomainValue) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CoerceToDomainValue) ProtoMessage() {} + +func (x *CoerceToDomainValue) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[51] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CoerceToDomainValue.ProtoReflect.Descriptor instead. +func (*CoerceToDomainValue) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{51} +} + +func (x *CoerceToDomainValue) GetXpr() *Node { + if x != nil { + return x.Xpr + } + return nil +} + +func (x *CoerceToDomainValue) GetTypeId() uint32 { + if x != nil { + return x.TypeId + } + return 0 +} + +func (x *CoerceToDomainValue) GetTypeMod() int32 { + if x != nil { + return x.TypeMod + } + return 0 +} + +func (x *CoerceToDomainValue) GetCollation() uint32 { + if x != nil { + return x.Collation + } + return 0 +} + +func (x *CoerceToDomainValue) GetLocation() int32 { + if x != nil { + return x.Location + } + return 0 +} + +type SetToDefault struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Xpr *Node `protobuf:"bytes,1,opt,name=xpr,proto3" json:"xpr,omitempty"` + TypeId uint32 `protobuf:"varint,2,opt,name=type_id,json=typeId,proto3" json:"type_id,omitempty"` + TypeMod int32 `protobuf:"varint,3,opt,name=type_mod,json=typeMod,proto3" json:"type_mod,omitempty"` + Collation uint32 `protobuf:"varint,4,opt,name=collation,proto3" json:"collation,omitempty"` + Location int32 `protobuf:"varint,5,opt,name=location,proto3" json:"location,omitempty"` +} + +func (x *SetToDefault) Reset() { + *x = SetToDefault{} + if protoimpl.UnsafeEnabled { + mi := &file_pg_query_proto_msgTypes[52] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *SetToDefault) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SetToDefault) ProtoMessage() {} + +func (x *SetToDefault) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[52] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SetToDefault.ProtoReflect.Descriptor instead. +func (*SetToDefault) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{52} +} + +func (x *SetToDefault) GetXpr() *Node { + if x != nil { + return x.Xpr + } + return nil +} + +func (x *SetToDefault) GetTypeId() uint32 { + if x != nil { + return x.TypeId + } + return 0 +} + +func (x *SetToDefault) GetTypeMod() int32 { + if x != nil { + return x.TypeMod + } + return 0 +} + +func (x *SetToDefault) GetCollation() uint32 { + if x != nil { + return x.Collation + } + return 0 +} + +func (x *SetToDefault) GetLocation() int32 { + if x != nil { + return x.Location + } + return 0 +} + +type CurrentOfExpr struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Xpr *Node `protobuf:"bytes,1,opt,name=xpr,proto3" json:"xpr,omitempty"` + Cvarno uint32 `protobuf:"varint,2,opt,name=cvarno,proto3" json:"cvarno,omitempty"` + CursorName string `protobuf:"bytes,3,opt,name=cursor_name,proto3" json:"cursor_name,omitempty"` + CursorParam int32 `protobuf:"varint,4,opt,name=cursor_param,proto3" json:"cursor_param,omitempty"` +} + +func (x *CurrentOfExpr) Reset() { + *x = CurrentOfExpr{} + if protoimpl.UnsafeEnabled { + mi := &file_pg_query_proto_msgTypes[53] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *CurrentOfExpr) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CurrentOfExpr) ProtoMessage() {} + +func (x *CurrentOfExpr) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[53] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CurrentOfExpr.ProtoReflect.Descriptor instead. +func (*CurrentOfExpr) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{53} +} + +func (x *CurrentOfExpr) GetXpr() *Node { + if x != nil { + return x.Xpr + } + return nil +} + +func (x *CurrentOfExpr) GetCvarno() uint32 { + if x != nil { + return x.Cvarno + } + return 0 +} + +func (x *CurrentOfExpr) GetCursorName() string { + if x != nil { + return x.CursorName + } + return "" +} + +func (x *CurrentOfExpr) GetCursorParam() int32 { + if x != nil { + return x.CursorParam + } + return 0 +} + +type NextValueExpr struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Xpr *Node `protobuf:"bytes,1,opt,name=xpr,proto3" json:"xpr,omitempty"` + Seqid uint32 `protobuf:"varint,2,opt,name=seqid,proto3" json:"seqid,omitempty"` + TypeId uint32 `protobuf:"varint,3,opt,name=type_id,json=typeId,proto3" json:"type_id,omitempty"` +} + +func (x *NextValueExpr) Reset() { + *x = NextValueExpr{} + if protoimpl.UnsafeEnabled { + mi := &file_pg_query_proto_msgTypes[54] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *NextValueExpr) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*NextValueExpr) ProtoMessage() {} + +func (x *NextValueExpr) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[54] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use NextValueExpr.ProtoReflect.Descriptor instead. +func (*NextValueExpr) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{54} +} + +func (x *NextValueExpr) GetXpr() *Node { + if x != nil { + return x.Xpr + } + return nil +} + +func (x *NextValueExpr) GetSeqid() uint32 { + if x != nil { + return x.Seqid + } + return 0 +} + +func (x *NextValueExpr) GetTypeId() uint32 { + if x != nil { + return x.TypeId + } + return 0 +} + +type InferenceElem struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Xpr *Node `protobuf:"bytes,1,opt,name=xpr,proto3" json:"xpr,omitempty"` + Expr *Node `protobuf:"bytes,2,opt,name=expr,proto3" json:"expr,omitempty"` + Infercollid uint32 `protobuf:"varint,3,opt,name=infercollid,proto3" json:"infercollid,omitempty"` + Inferopclass uint32 `protobuf:"varint,4,opt,name=inferopclass,proto3" json:"inferopclass,omitempty"` +} + +func (x *InferenceElem) Reset() { + *x = InferenceElem{} + if protoimpl.UnsafeEnabled { + mi := &file_pg_query_proto_msgTypes[55] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *InferenceElem) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*InferenceElem) ProtoMessage() {} + +func (x *InferenceElem) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[55] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use InferenceElem.ProtoReflect.Descriptor instead. +func (*InferenceElem) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{55} +} + +func (x *InferenceElem) GetXpr() *Node { + if x != nil { + return x.Xpr + } + return nil +} + +func (x *InferenceElem) GetExpr() *Node { + if x != nil { + return x.Expr + } + return nil +} + +func (x *InferenceElem) GetInfercollid() uint32 { + if x != nil { + return x.Infercollid + } + return 0 +} + +func (x *InferenceElem) GetInferopclass() uint32 { + if x != nil { + return x.Inferopclass + } + return 0 +} + +type TargetEntry struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Xpr *Node `protobuf:"bytes,1,opt,name=xpr,proto3" json:"xpr,omitempty"` + Expr *Node `protobuf:"bytes,2,opt,name=expr,proto3" json:"expr,omitempty"` + Resno int32 `protobuf:"varint,3,opt,name=resno,proto3" json:"resno,omitempty"` + Resname string `protobuf:"bytes,4,opt,name=resname,proto3" json:"resname,omitempty"` + Ressortgroupref uint32 `protobuf:"varint,5,opt,name=ressortgroupref,proto3" json:"ressortgroupref,omitempty"` + Resorigtbl uint32 `protobuf:"varint,6,opt,name=resorigtbl,proto3" json:"resorigtbl,omitempty"` + Resorigcol int32 `protobuf:"varint,7,opt,name=resorigcol,proto3" json:"resorigcol,omitempty"` + Resjunk bool `protobuf:"varint,8,opt,name=resjunk,proto3" json:"resjunk,omitempty"` +} + +func (x *TargetEntry) Reset() { + *x = TargetEntry{} + if protoimpl.UnsafeEnabled { + mi := &file_pg_query_proto_msgTypes[56] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *TargetEntry) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*TargetEntry) ProtoMessage() {} + +func (x *TargetEntry) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[56] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use TargetEntry.ProtoReflect.Descriptor instead. +func (*TargetEntry) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{56} +} + +func (x *TargetEntry) GetXpr() *Node { + if x != nil { + return x.Xpr + } + return nil +} + +func (x *TargetEntry) GetExpr() *Node { + if x != nil { + return x.Expr + } + return nil +} + +func (x *TargetEntry) GetResno() int32 { + if x != nil { + return x.Resno + } + return 0 +} + +func (x *TargetEntry) GetResname() string { + if x != nil { + return x.Resname + } + return "" +} + +func (x *TargetEntry) GetRessortgroupref() uint32 { + if x != nil { + return x.Ressortgroupref + } + return 0 +} + +func (x *TargetEntry) GetResorigtbl() uint32 { + if x != nil { + return x.Resorigtbl + } + return 0 +} + +func (x *TargetEntry) GetResorigcol() int32 { + if x != nil { + return x.Resorigcol + } + return 0 +} + +func (x *TargetEntry) GetResjunk() bool { + if x != nil { + return x.Resjunk + } + return false +} + +type RangeTblRef struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Rtindex int32 `protobuf:"varint,1,opt,name=rtindex,proto3" json:"rtindex,omitempty"` +} + +func (x *RangeTblRef) Reset() { + *x = RangeTblRef{} + if protoimpl.UnsafeEnabled { + mi := &file_pg_query_proto_msgTypes[57] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *RangeTblRef) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*RangeTblRef) ProtoMessage() {} + +func (x *RangeTblRef) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[57] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use RangeTblRef.ProtoReflect.Descriptor instead. +func (*RangeTblRef) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{57} +} + +func (x *RangeTblRef) GetRtindex() int32 { + if x != nil { + return x.Rtindex + } + return 0 +} + +type JoinExpr struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Jointype JoinType `protobuf:"varint,1,opt,name=jointype,proto3,enum=pg_query.JoinType" json:"jointype,omitempty"` + IsNatural bool `protobuf:"varint,2,opt,name=is_natural,json=isNatural,proto3" json:"is_natural,omitempty"` + Larg *Node `protobuf:"bytes,3,opt,name=larg,proto3" json:"larg,omitempty"` + Rarg *Node `protobuf:"bytes,4,opt,name=rarg,proto3" json:"rarg,omitempty"` + UsingClause []*Node `protobuf:"bytes,5,rep,name=using_clause,json=usingClause,proto3" json:"using_clause,omitempty"` + Quals *Node `protobuf:"bytes,6,opt,name=quals,proto3" json:"quals,omitempty"` + Alias *Alias `protobuf:"bytes,7,opt,name=alias,proto3" json:"alias,omitempty"` + Rtindex int32 `protobuf:"varint,8,opt,name=rtindex,proto3" json:"rtindex,omitempty"` +} + +func (x *JoinExpr) Reset() { + *x = JoinExpr{} + if protoimpl.UnsafeEnabled { + mi := &file_pg_query_proto_msgTypes[58] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *JoinExpr) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*JoinExpr) ProtoMessage() {} + +func (x *JoinExpr) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[58] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use JoinExpr.ProtoReflect.Descriptor instead. +func (*JoinExpr) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{58} +} + +func (x *JoinExpr) GetJointype() JoinType { + if x != nil { + return x.Jointype + } + return JoinType_JOIN_TYPE_UNDEFINED +} + +func (x *JoinExpr) GetIsNatural() bool { + if x != nil { + return x.IsNatural + } + return false +} + +func (x *JoinExpr) GetLarg() *Node { + if x != nil { + return x.Larg + } + return nil +} + +func (x *JoinExpr) GetRarg() *Node { + if x != nil { + return x.Rarg + } + return nil +} + +func (x *JoinExpr) GetUsingClause() []*Node { + if x != nil { + return x.UsingClause + } + return nil +} + +func (x *JoinExpr) GetQuals() *Node { + if x != nil { + return x.Quals + } + return nil +} + +func (x *JoinExpr) GetAlias() *Alias { + if x != nil { + return x.Alias + } + return nil +} + +func (x *JoinExpr) GetRtindex() int32 { + if x != nil { + return x.Rtindex + } + return 0 +} + +type FromExpr struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Fromlist []*Node `protobuf:"bytes,1,rep,name=fromlist,proto3" json:"fromlist,omitempty"` + Quals *Node `protobuf:"bytes,2,opt,name=quals,proto3" json:"quals,omitempty"` +} + +func (x *FromExpr) Reset() { + *x = FromExpr{} + if protoimpl.UnsafeEnabled { + mi := &file_pg_query_proto_msgTypes[59] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *FromExpr) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*FromExpr) ProtoMessage() {} + +func (x *FromExpr) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[59] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use FromExpr.ProtoReflect.Descriptor instead. +func (*FromExpr) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{59} +} + +func (x *FromExpr) GetFromlist() []*Node { + if x != nil { + return x.Fromlist + } + return nil +} + +func (x *FromExpr) GetQuals() *Node { + if x != nil { + return x.Quals + } + return nil +} + +type OnConflictExpr struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Action OnConflictAction `protobuf:"varint,1,opt,name=action,proto3,enum=pg_query.OnConflictAction" json:"action,omitempty"` + ArbiterElems []*Node `protobuf:"bytes,2,rep,name=arbiter_elems,json=arbiterElems,proto3" json:"arbiter_elems,omitempty"` + ArbiterWhere *Node `protobuf:"bytes,3,opt,name=arbiter_where,json=arbiterWhere,proto3" json:"arbiter_where,omitempty"` + Constraint uint32 `protobuf:"varint,4,opt,name=constraint,proto3" json:"constraint,omitempty"` + OnConflictSet []*Node `protobuf:"bytes,5,rep,name=on_conflict_set,json=onConflictSet,proto3" json:"on_conflict_set,omitempty"` + OnConflictWhere *Node `protobuf:"bytes,6,opt,name=on_conflict_where,json=onConflictWhere,proto3" json:"on_conflict_where,omitempty"` + ExclRelIndex int32 `protobuf:"varint,7,opt,name=excl_rel_index,json=exclRelIndex,proto3" json:"excl_rel_index,omitempty"` + ExclRelTlist []*Node `protobuf:"bytes,8,rep,name=excl_rel_tlist,json=exclRelTlist,proto3" json:"excl_rel_tlist,omitempty"` +} + +func (x *OnConflictExpr) Reset() { + *x = OnConflictExpr{} + if protoimpl.UnsafeEnabled { + mi := &file_pg_query_proto_msgTypes[60] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *OnConflictExpr) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*OnConflictExpr) ProtoMessage() {} + +func (x *OnConflictExpr) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[60] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use OnConflictExpr.ProtoReflect.Descriptor instead. +func (*OnConflictExpr) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{60} +} + +func (x *OnConflictExpr) GetAction() OnConflictAction { + if x != nil { + return x.Action + } + return OnConflictAction_ON_CONFLICT_ACTION_UNDEFINED +} + +func (x *OnConflictExpr) GetArbiterElems() []*Node { + if x != nil { + return x.ArbiterElems + } + return nil +} + +func (x *OnConflictExpr) GetArbiterWhere() *Node { + if x != nil { + return x.ArbiterWhere + } + return nil +} + +func (x *OnConflictExpr) GetConstraint() uint32 { + if x != nil { + return x.Constraint + } + return 0 +} + +func (x *OnConflictExpr) GetOnConflictSet() []*Node { + if x != nil { + return x.OnConflictSet + } + return nil +} + +func (x *OnConflictExpr) GetOnConflictWhere() *Node { + if x != nil { + return x.OnConflictWhere + } + return nil +} + +func (x *OnConflictExpr) GetExclRelIndex() int32 { + if x != nil { + return x.ExclRelIndex + } + return 0 +} + +func (x *OnConflictExpr) GetExclRelTlist() []*Node { + if x != nil { + return x.ExclRelTlist + } + return nil +} + +type IntoClause struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Rel *RangeVar `protobuf:"bytes,1,opt,name=rel,proto3" json:"rel,omitempty"` + ColNames []*Node `protobuf:"bytes,2,rep,name=col_names,json=colNames,proto3" json:"col_names,omitempty"` + AccessMethod string `protobuf:"bytes,3,opt,name=access_method,json=accessMethod,proto3" json:"access_method,omitempty"` + Options []*Node `protobuf:"bytes,4,rep,name=options,proto3" json:"options,omitempty"` + OnCommit OnCommitAction `protobuf:"varint,5,opt,name=on_commit,json=onCommit,proto3,enum=pg_query.OnCommitAction" json:"on_commit,omitempty"` + TableSpaceName string `protobuf:"bytes,6,opt,name=table_space_name,json=tableSpaceName,proto3" json:"table_space_name,omitempty"` + ViewQuery *Node `protobuf:"bytes,7,opt,name=view_query,json=viewQuery,proto3" json:"view_query,omitempty"` + SkipData bool `protobuf:"varint,8,opt,name=skip_data,json=skipData,proto3" json:"skip_data,omitempty"` +} + +func (x *IntoClause) Reset() { + *x = IntoClause{} + if protoimpl.UnsafeEnabled { + mi := &file_pg_query_proto_msgTypes[61] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *IntoClause) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*IntoClause) ProtoMessage() {} + +func (x *IntoClause) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[61] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use IntoClause.ProtoReflect.Descriptor instead. +func (*IntoClause) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{61} +} + +func (x *IntoClause) GetRel() *RangeVar { + if x != nil { + return x.Rel + } + return nil +} + +func (x *IntoClause) GetColNames() []*Node { + if x != nil { + return x.ColNames + } + return nil +} + +func (x *IntoClause) GetAccessMethod() string { + if x != nil { + return x.AccessMethod + } + return "" +} + +func (x *IntoClause) GetOptions() []*Node { + if x != nil { + return x.Options + } + return nil +} + +func (x *IntoClause) GetOnCommit() OnCommitAction { + if x != nil { + return x.OnCommit + } + return OnCommitAction_ON_COMMIT_ACTION_UNDEFINED +} + +func (x *IntoClause) GetTableSpaceName() string { + if x != nil { + return x.TableSpaceName + } + return "" +} + +func (x *IntoClause) GetViewQuery() *Node { + if x != nil { + return x.ViewQuery + } + return nil +} + +func (x *IntoClause) GetSkipData() bool { + if x != nil { + return x.SkipData + } + return false +} + +type RawStmt struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Stmt *Node `protobuf:"bytes,1,opt,name=stmt,proto3" json:"stmt,omitempty"` + StmtLocation int32 `protobuf:"varint,2,opt,name=stmt_location,proto3" json:"stmt_location,omitempty"` + StmtLen int32 `protobuf:"varint,3,opt,name=stmt_len,proto3" json:"stmt_len,omitempty"` +} + +func (x *RawStmt) Reset() { + *x = RawStmt{} + if protoimpl.UnsafeEnabled { + mi := &file_pg_query_proto_msgTypes[62] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *RawStmt) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*RawStmt) ProtoMessage() {} + +func (x *RawStmt) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[62] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use RawStmt.ProtoReflect.Descriptor instead. +func (*RawStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{62} +} + +func (x *RawStmt) GetStmt() *Node { + if x != nil { + return x.Stmt + } + return nil +} + +func (x *RawStmt) GetStmtLocation() int32 { + if x != nil { + return x.StmtLocation + } + return 0 +} + +func (x *RawStmt) GetStmtLen() int32 { + if x != nil { + return x.StmtLen + } + return 0 +} + +type Query struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + CommandType CmdType `protobuf:"varint,1,opt,name=command_type,json=commandType,proto3,enum=pg_query.CmdType" json:"command_type,omitempty"` + QuerySource QuerySource `protobuf:"varint,2,opt,name=query_source,json=querySource,proto3,enum=pg_query.QuerySource" json:"query_source,omitempty"` + CanSetTag bool `protobuf:"varint,3,opt,name=can_set_tag,json=canSetTag,proto3" json:"can_set_tag,omitempty"` + UtilityStmt *Node `protobuf:"bytes,4,opt,name=utility_stmt,json=utilityStmt,proto3" json:"utility_stmt,omitempty"` + ResultRelation int32 `protobuf:"varint,5,opt,name=result_relation,json=resultRelation,proto3" json:"result_relation,omitempty"` + HasAggs bool `protobuf:"varint,6,opt,name=has_aggs,json=hasAggs,proto3" json:"has_aggs,omitempty"` + HasWindowFuncs bool `protobuf:"varint,7,opt,name=has_window_funcs,json=hasWindowFuncs,proto3" json:"has_window_funcs,omitempty"` + HasTargetSrfs bool `protobuf:"varint,8,opt,name=has_target_srfs,json=hasTargetSRFs,proto3" json:"has_target_srfs,omitempty"` + HasSubLinks bool `protobuf:"varint,9,opt,name=has_sub_links,json=hasSubLinks,proto3" json:"has_sub_links,omitempty"` + HasDistinctOn bool `protobuf:"varint,10,opt,name=has_distinct_on,json=hasDistinctOn,proto3" json:"has_distinct_on,omitempty"` + HasRecursive bool `protobuf:"varint,11,opt,name=has_recursive,json=hasRecursive,proto3" json:"has_recursive,omitempty"` + HasModifyingCte bool `protobuf:"varint,12,opt,name=has_modifying_cte,json=hasModifyingCTE,proto3" json:"has_modifying_cte,omitempty"` + HasForUpdate bool `protobuf:"varint,13,opt,name=has_for_update,json=hasForUpdate,proto3" json:"has_for_update,omitempty"` + HasRowSecurity bool `protobuf:"varint,14,opt,name=has_row_security,json=hasRowSecurity,proto3" json:"has_row_security,omitempty"` + CteList []*Node `protobuf:"bytes,15,rep,name=cte_list,json=cteList,proto3" json:"cte_list,omitempty"` + Rtable []*Node `protobuf:"bytes,16,rep,name=rtable,proto3" json:"rtable,omitempty"` + Jointree *FromExpr `protobuf:"bytes,17,opt,name=jointree,proto3" json:"jointree,omitempty"` + TargetList []*Node `protobuf:"bytes,18,rep,name=target_list,json=targetList,proto3" json:"target_list,omitempty"` + Override OverridingKind `protobuf:"varint,19,opt,name=override,proto3,enum=pg_query.OverridingKind" json:"override,omitempty"` + OnConflict *OnConflictExpr `protobuf:"bytes,20,opt,name=on_conflict,json=onConflict,proto3" json:"on_conflict,omitempty"` + ReturningList []*Node `protobuf:"bytes,21,rep,name=returning_list,json=returningList,proto3" json:"returning_list,omitempty"` + GroupClause []*Node `protobuf:"bytes,22,rep,name=group_clause,json=groupClause,proto3" json:"group_clause,omitempty"` + GroupingSets []*Node `protobuf:"bytes,23,rep,name=grouping_sets,json=groupingSets,proto3" json:"grouping_sets,omitempty"` + HavingQual *Node `protobuf:"bytes,24,opt,name=having_qual,json=havingQual,proto3" json:"having_qual,omitempty"` + WindowClause []*Node `protobuf:"bytes,25,rep,name=window_clause,json=windowClause,proto3" json:"window_clause,omitempty"` + DistinctClause []*Node `protobuf:"bytes,26,rep,name=distinct_clause,json=distinctClause,proto3" json:"distinct_clause,omitempty"` + SortClause []*Node `protobuf:"bytes,27,rep,name=sort_clause,json=sortClause,proto3" json:"sort_clause,omitempty"` + LimitOffset *Node `protobuf:"bytes,28,opt,name=limit_offset,json=limitOffset,proto3" json:"limit_offset,omitempty"` + LimitCount *Node `protobuf:"bytes,29,opt,name=limit_count,json=limitCount,proto3" json:"limit_count,omitempty"` + LimitOption LimitOption `protobuf:"varint,30,opt,name=limit_option,json=limitOption,proto3,enum=pg_query.LimitOption" json:"limit_option,omitempty"` + RowMarks []*Node `protobuf:"bytes,31,rep,name=row_marks,json=rowMarks,proto3" json:"row_marks,omitempty"` + SetOperations *Node `protobuf:"bytes,32,opt,name=set_operations,json=setOperations,proto3" json:"set_operations,omitempty"` + ConstraintDeps []*Node `protobuf:"bytes,33,rep,name=constraint_deps,json=constraintDeps,proto3" json:"constraint_deps,omitempty"` + WithCheckOptions []*Node `protobuf:"bytes,34,rep,name=with_check_options,json=withCheckOptions,proto3" json:"with_check_options,omitempty"` + StmtLocation int32 `protobuf:"varint,35,opt,name=stmt_location,proto3" json:"stmt_location,omitempty"` + StmtLen int32 `protobuf:"varint,36,opt,name=stmt_len,proto3" json:"stmt_len,omitempty"` +} + +func (x *Query) Reset() { + *x = Query{} + if protoimpl.UnsafeEnabled { + mi := &file_pg_query_proto_msgTypes[63] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Query) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Query) ProtoMessage() {} + +func (x *Query) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[63] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Query.ProtoReflect.Descriptor instead. +func (*Query) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{63} +} + +func (x *Query) GetCommandType() CmdType { + if x != nil { + return x.CommandType + } + return CmdType_CMD_TYPE_UNDEFINED +} + +func (x *Query) GetQuerySource() QuerySource { + if x != nil { + return x.QuerySource + } + return QuerySource_QUERY_SOURCE_UNDEFINED +} + +func (x *Query) GetCanSetTag() bool { + if x != nil { + return x.CanSetTag + } + return false +} + +func (x *Query) GetUtilityStmt() *Node { + if x != nil { + return x.UtilityStmt + } + return nil +} + +func (x *Query) GetResultRelation() int32 { + if x != nil { + return x.ResultRelation + } + return 0 +} + +func (x *Query) GetHasAggs() bool { + if x != nil { + return x.HasAggs + } + return false +} + +func (x *Query) GetHasWindowFuncs() bool { + if x != nil { + return x.HasWindowFuncs + } + return false +} + +func (x *Query) GetHasTargetSrfs() bool { + if x != nil { + return x.HasTargetSrfs + } + return false +} + +func (x *Query) GetHasSubLinks() bool { + if x != nil { + return x.HasSubLinks + } + return false +} + +func (x *Query) GetHasDistinctOn() bool { + if x != nil { + return x.HasDistinctOn + } + return false +} + +func (x *Query) GetHasRecursive() bool { + if x != nil { + return x.HasRecursive + } + return false +} + +func (x *Query) GetHasModifyingCte() bool { + if x != nil { + return x.HasModifyingCte + } + return false +} + +func (x *Query) GetHasForUpdate() bool { + if x != nil { + return x.HasForUpdate + } + return false +} + +func (x *Query) GetHasRowSecurity() bool { + if x != nil { + return x.HasRowSecurity + } + return false +} + +func (x *Query) GetCteList() []*Node { + if x != nil { + return x.CteList + } + return nil +} + +func (x *Query) GetRtable() []*Node { + if x != nil { + return x.Rtable + } + return nil +} + +func (x *Query) GetJointree() *FromExpr { + if x != nil { + return x.Jointree + } + return nil +} + +func (x *Query) GetTargetList() []*Node { + if x != nil { + return x.TargetList + } + return nil +} + +func (x *Query) GetOverride() OverridingKind { + if x != nil { + return x.Override + } + return OverridingKind_OVERRIDING_KIND_UNDEFINED +} + +func (x *Query) GetOnConflict() *OnConflictExpr { + if x != nil { + return x.OnConflict + } + return nil +} + +func (x *Query) GetReturningList() []*Node { + if x != nil { + return x.ReturningList + } + return nil +} + +func (x *Query) GetGroupClause() []*Node { + if x != nil { + return x.GroupClause + } + return nil +} + +func (x *Query) GetGroupingSets() []*Node { + if x != nil { + return x.GroupingSets + } + return nil +} + +func (x *Query) GetHavingQual() *Node { + if x != nil { + return x.HavingQual + } + return nil +} + +func (x *Query) GetWindowClause() []*Node { + if x != nil { + return x.WindowClause + } + return nil +} + +func (x *Query) GetDistinctClause() []*Node { + if x != nil { + return x.DistinctClause + } + return nil +} + +func (x *Query) GetSortClause() []*Node { + if x != nil { + return x.SortClause + } + return nil +} + +func (x *Query) GetLimitOffset() *Node { + if x != nil { + return x.LimitOffset + } + return nil +} + +func (x *Query) GetLimitCount() *Node { + if x != nil { + return x.LimitCount + } + return nil +} + +func (x *Query) GetLimitOption() LimitOption { + if x != nil { + return x.LimitOption + } + return LimitOption_LIMIT_OPTION_UNDEFINED +} + +func (x *Query) GetRowMarks() []*Node { + if x != nil { + return x.RowMarks + } + return nil +} + +func (x *Query) GetSetOperations() *Node { + if x != nil { + return x.SetOperations + } + return nil +} + +func (x *Query) GetConstraintDeps() []*Node { + if x != nil { + return x.ConstraintDeps + } + return nil +} + +func (x *Query) GetWithCheckOptions() []*Node { + if x != nil { + return x.WithCheckOptions + } + return nil +} + +func (x *Query) GetStmtLocation() int32 { + if x != nil { + return x.StmtLocation + } + return 0 +} + +func (x *Query) GetStmtLen() int32 { + if x != nil { + return x.StmtLen + } + return 0 +} + +type InsertStmt struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Relation *RangeVar `protobuf:"bytes,1,opt,name=relation,proto3" json:"relation,omitempty"` + Cols []*Node `protobuf:"bytes,2,rep,name=cols,proto3" json:"cols,omitempty"` + SelectStmt *Node `protobuf:"bytes,3,opt,name=select_stmt,json=selectStmt,proto3" json:"select_stmt,omitempty"` + OnConflictClause *OnConflictClause `protobuf:"bytes,4,opt,name=on_conflict_clause,json=onConflictClause,proto3" json:"on_conflict_clause,omitempty"` + ReturningList []*Node `protobuf:"bytes,5,rep,name=returning_list,json=returningList,proto3" json:"returning_list,omitempty"` + WithClause *WithClause `protobuf:"bytes,6,opt,name=with_clause,json=withClause,proto3" json:"with_clause,omitempty"` + Override OverridingKind `protobuf:"varint,7,opt,name=override,proto3,enum=pg_query.OverridingKind" json:"override,omitempty"` +} + +func (x *InsertStmt) Reset() { + *x = InsertStmt{} + if protoimpl.UnsafeEnabled { + mi := &file_pg_query_proto_msgTypes[64] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *InsertStmt) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*InsertStmt) ProtoMessage() {} + +func (x *InsertStmt) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[64] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use InsertStmt.ProtoReflect.Descriptor instead. +func (*InsertStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{64} +} + +func (x *InsertStmt) GetRelation() *RangeVar { + if x != nil { + return x.Relation + } + return nil +} + +func (x *InsertStmt) GetCols() []*Node { + if x != nil { + return x.Cols + } + return nil +} + +func (x *InsertStmt) GetSelectStmt() *Node { + if x != nil { + return x.SelectStmt + } + return nil +} + +func (x *InsertStmt) GetOnConflictClause() *OnConflictClause { + if x != nil { + return x.OnConflictClause + } + return nil +} + +func (x *InsertStmt) GetReturningList() []*Node { + if x != nil { + return x.ReturningList + } + return nil +} + +func (x *InsertStmt) GetWithClause() *WithClause { + if x != nil { + return x.WithClause + } + return nil +} + +func (x *InsertStmt) GetOverride() OverridingKind { + if x != nil { + return x.Override + } + return OverridingKind_OVERRIDING_KIND_UNDEFINED +} + +type DeleteStmt struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Relation *RangeVar `protobuf:"bytes,1,opt,name=relation,proto3" json:"relation,omitempty"` + UsingClause []*Node `protobuf:"bytes,2,rep,name=using_clause,json=usingClause,proto3" json:"using_clause,omitempty"` + WhereClause *Node `protobuf:"bytes,3,opt,name=where_clause,json=whereClause,proto3" json:"where_clause,omitempty"` + ReturningList []*Node `protobuf:"bytes,4,rep,name=returning_list,json=returningList,proto3" json:"returning_list,omitempty"` + WithClause *WithClause `protobuf:"bytes,5,opt,name=with_clause,json=withClause,proto3" json:"with_clause,omitempty"` +} + +func (x *DeleteStmt) Reset() { + *x = DeleteStmt{} + if protoimpl.UnsafeEnabled { + mi := &file_pg_query_proto_msgTypes[65] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *DeleteStmt) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DeleteStmt) ProtoMessage() {} + +func (x *DeleteStmt) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[65] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use DeleteStmt.ProtoReflect.Descriptor instead. +func (*DeleteStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{65} +} + +func (x *DeleteStmt) GetRelation() *RangeVar { + if x != nil { + return x.Relation + } + return nil +} + +func (x *DeleteStmt) GetUsingClause() []*Node { + if x != nil { + return x.UsingClause + } + return nil +} + +func (x *DeleteStmt) GetWhereClause() *Node { + if x != nil { + return x.WhereClause + } + return nil +} + +func (x *DeleteStmt) GetReturningList() []*Node { + if x != nil { + return x.ReturningList + } + return nil +} + +func (x *DeleteStmt) GetWithClause() *WithClause { + if x != nil { + return x.WithClause + } + return nil +} + +type UpdateStmt struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Relation *RangeVar `protobuf:"bytes,1,opt,name=relation,proto3" json:"relation,omitempty"` + TargetList []*Node `protobuf:"bytes,2,rep,name=target_list,json=targetList,proto3" json:"target_list,omitempty"` + WhereClause *Node `protobuf:"bytes,3,opt,name=where_clause,json=whereClause,proto3" json:"where_clause,omitempty"` + FromClause []*Node `protobuf:"bytes,4,rep,name=from_clause,json=fromClause,proto3" json:"from_clause,omitempty"` + ReturningList []*Node `protobuf:"bytes,5,rep,name=returning_list,json=returningList,proto3" json:"returning_list,omitempty"` + WithClause *WithClause `protobuf:"bytes,6,opt,name=with_clause,json=withClause,proto3" json:"with_clause,omitempty"` +} + +func (x *UpdateStmt) Reset() { + *x = UpdateStmt{} + if protoimpl.UnsafeEnabled { + mi := &file_pg_query_proto_msgTypes[66] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *UpdateStmt) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*UpdateStmt) ProtoMessage() {} + +func (x *UpdateStmt) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[66] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use UpdateStmt.ProtoReflect.Descriptor instead. +func (*UpdateStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{66} +} + +func (x *UpdateStmt) GetRelation() *RangeVar { + if x != nil { + return x.Relation + } + return nil +} + +func (x *UpdateStmt) GetTargetList() []*Node { + if x != nil { + return x.TargetList + } + return nil +} + +func (x *UpdateStmt) GetWhereClause() *Node { + if x != nil { + return x.WhereClause + } + return nil +} + +func (x *UpdateStmt) GetFromClause() []*Node { + if x != nil { + return x.FromClause + } + return nil +} + +func (x *UpdateStmt) GetReturningList() []*Node { + if x != nil { + return x.ReturningList + } + return nil +} + +func (x *UpdateStmt) GetWithClause() *WithClause { + if x != nil { + return x.WithClause + } + return nil +} + +type SelectStmt struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + DistinctClause []*Node `protobuf:"bytes,1,rep,name=distinct_clause,json=distinctClause,proto3" json:"distinct_clause,omitempty"` + IntoClause *IntoClause `protobuf:"bytes,2,opt,name=into_clause,json=intoClause,proto3" json:"into_clause,omitempty"` + TargetList []*Node `protobuf:"bytes,3,rep,name=target_list,json=targetList,proto3" json:"target_list,omitempty"` + FromClause []*Node `protobuf:"bytes,4,rep,name=from_clause,json=fromClause,proto3" json:"from_clause,omitempty"` + WhereClause *Node `protobuf:"bytes,5,opt,name=where_clause,json=whereClause,proto3" json:"where_clause,omitempty"` + GroupClause []*Node `protobuf:"bytes,6,rep,name=group_clause,json=groupClause,proto3" json:"group_clause,omitempty"` + HavingClause *Node `protobuf:"bytes,7,opt,name=having_clause,json=havingClause,proto3" json:"having_clause,omitempty"` + WindowClause []*Node `protobuf:"bytes,8,rep,name=window_clause,json=windowClause,proto3" json:"window_clause,omitempty"` + ValuesLists []*Node `protobuf:"bytes,9,rep,name=values_lists,json=valuesLists,proto3" json:"values_lists,omitempty"` + SortClause []*Node `protobuf:"bytes,10,rep,name=sort_clause,json=sortClause,proto3" json:"sort_clause,omitempty"` + LimitOffset *Node `protobuf:"bytes,11,opt,name=limit_offset,json=limitOffset,proto3" json:"limit_offset,omitempty"` + LimitCount *Node `protobuf:"bytes,12,opt,name=limit_count,json=limitCount,proto3" json:"limit_count,omitempty"` + LimitOption LimitOption `protobuf:"varint,13,opt,name=limit_option,json=limitOption,proto3,enum=pg_query.LimitOption" json:"limit_option,omitempty"` + LockingClause []*Node `protobuf:"bytes,14,rep,name=locking_clause,json=lockingClause,proto3" json:"locking_clause,omitempty"` + WithClause *WithClause `protobuf:"bytes,15,opt,name=with_clause,json=withClause,proto3" json:"with_clause,omitempty"` + Op SetOperation `protobuf:"varint,16,opt,name=op,proto3,enum=pg_query.SetOperation" json:"op,omitempty"` + All bool `protobuf:"varint,17,opt,name=all,proto3" json:"all,omitempty"` + Larg *SelectStmt `protobuf:"bytes,18,opt,name=larg,proto3" json:"larg,omitempty"` + Rarg *SelectStmt `protobuf:"bytes,19,opt,name=rarg,proto3" json:"rarg,omitempty"` +} + +func (x *SelectStmt) Reset() { + *x = SelectStmt{} + if protoimpl.UnsafeEnabled { + mi := &file_pg_query_proto_msgTypes[67] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *SelectStmt) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SelectStmt) ProtoMessage() {} + +func (x *SelectStmt) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[67] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SelectStmt.ProtoReflect.Descriptor instead. +func (*SelectStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{67} +} + +func (x *SelectStmt) GetDistinctClause() []*Node { + if x != nil { + return x.DistinctClause + } + return nil +} + +func (x *SelectStmt) GetIntoClause() *IntoClause { + if x != nil { + return x.IntoClause + } + return nil +} + +func (x *SelectStmt) GetTargetList() []*Node { + if x != nil { + return x.TargetList + } + return nil +} + +func (x *SelectStmt) GetFromClause() []*Node { + if x != nil { + return x.FromClause + } + return nil +} + +func (x *SelectStmt) GetWhereClause() *Node { + if x != nil { + return x.WhereClause + } + return nil +} + +func (x *SelectStmt) GetGroupClause() []*Node { + if x != nil { + return x.GroupClause + } + return nil +} + +func (x *SelectStmt) GetHavingClause() *Node { + if x != nil { + return x.HavingClause + } + return nil +} + +func (x *SelectStmt) GetWindowClause() []*Node { + if x != nil { + return x.WindowClause + } + return nil +} + +func (x *SelectStmt) GetValuesLists() []*Node { + if x != nil { + return x.ValuesLists + } + return nil +} + +func (x *SelectStmt) GetSortClause() []*Node { + if x != nil { + return x.SortClause + } + return nil +} + +func (x *SelectStmt) GetLimitOffset() *Node { + if x != nil { + return x.LimitOffset + } + return nil +} + +func (x *SelectStmt) GetLimitCount() *Node { + if x != nil { + return x.LimitCount + } + return nil +} + +func (x *SelectStmt) GetLimitOption() LimitOption { + if x != nil { + return x.LimitOption + } + return LimitOption_LIMIT_OPTION_UNDEFINED +} + +func (x *SelectStmt) GetLockingClause() []*Node { + if x != nil { + return x.LockingClause + } + return nil +} + +func (x *SelectStmt) GetWithClause() *WithClause { + if x != nil { + return x.WithClause + } + return nil +} + +func (x *SelectStmt) GetOp() SetOperation { + if x != nil { + return x.Op + } + return SetOperation_SET_OPERATION_UNDEFINED +} + +func (x *SelectStmt) GetAll() bool { + if x != nil { + return x.All + } + return false +} + +func (x *SelectStmt) GetLarg() *SelectStmt { + if x != nil { + return x.Larg + } + return nil +} + +func (x *SelectStmt) GetRarg() *SelectStmt { + if x != nil { + return x.Rarg + } + return nil +} + +type AlterTableStmt struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Relation *RangeVar `protobuf:"bytes,1,opt,name=relation,proto3" json:"relation,omitempty"` + Cmds []*Node `protobuf:"bytes,2,rep,name=cmds,proto3" json:"cmds,omitempty"` + Relkind ObjectType `protobuf:"varint,3,opt,name=relkind,proto3,enum=pg_query.ObjectType" json:"relkind,omitempty"` + MissingOk bool `protobuf:"varint,4,opt,name=missing_ok,proto3" json:"missing_ok,omitempty"` +} + +func (x *AlterTableStmt) Reset() { + *x = AlterTableStmt{} + if protoimpl.UnsafeEnabled { + mi := &file_pg_query_proto_msgTypes[68] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *AlterTableStmt) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*AlterTableStmt) ProtoMessage() {} + +func (x *AlterTableStmt) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[68] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use AlterTableStmt.ProtoReflect.Descriptor instead. +func (*AlterTableStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{68} +} + +func (x *AlterTableStmt) GetRelation() *RangeVar { + if x != nil { + return x.Relation + } + return nil +} + +func (x *AlterTableStmt) GetCmds() []*Node { + if x != nil { + return x.Cmds + } + return nil +} + +func (x *AlterTableStmt) GetRelkind() ObjectType { + if x != nil { + return x.Relkind + } + return ObjectType_OBJECT_TYPE_UNDEFINED +} + +func (x *AlterTableStmt) GetMissingOk() bool { + if x != nil { + return x.MissingOk + } + return false +} + +type AlterTableCmd struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Subtype AlterTableType `protobuf:"varint,1,opt,name=subtype,proto3,enum=pg_query.AlterTableType" json:"subtype,omitempty"` + Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` + Num int32 `protobuf:"varint,3,opt,name=num,proto3" json:"num,omitempty"` + Newowner *RoleSpec `protobuf:"bytes,4,opt,name=newowner,proto3" json:"newowner,omitempty"` + Def *Node `protobuf:"bytes,5,opt,name=def,proto3" json:"def,omitempty"` + Behavior DropBehavior `protobuf:"varint,6,opt,name=behavior,proto3,enum=pg_query.DropBehavior" json:"behavior,omitempty"` + MissingOk bool `protobuf:"varint,7,opt,name=missing_ok,proto3" json:"missing_ok,omitempty"` +} + +func (x *AlterTableCmd) Reset() { + *x = AlterTableCmd{} + if protoimpl.UnsafeEnabled { + mi := &file_pg_query_proto_msgTypes[69] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *AlterTableCmd) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*AlterTableCmd) ProtoMessage() {} + +func (x *AlterTableCmd) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[69] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use AlterTableCmd.ProtoReflect.Descriptor instead. +func (*AlterTableCmd) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{69} +} + +func (x *AlterTableCmd) GetSubtype() AlterTableType { + if x != nil { + return x.Subtype + } + return AlterTableType_ALTER_TABLE_TYPE_UNDEFINED +} + +func (x *AlterTableCmd) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *AlterTableCmd) GetNum() int32 { + if x != nil { + return x.Num + } + return 0 +} + +func (x *AlterTableCmd) GetNewowner() *RoleSpec { + if x != nil { + return x.Newowner + } + return nil +} + +func (x *AlterTableCmd) GetDef() *Node { + if x != nil { + return x.Def + } + return nil +} + +func (x *AlterTableCmd) GetBehavior() DropBehavior { + if x != nil { + return x.Behavior + } + return DropBehavior_DROP_BEHAVIOR_UNDEFINED +} + +func (x *AlterTableCmd) GetMissingOk() bool { + if x != nil { + return x.MissingOk + } + return false +} + +type AlterDomainStmt struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Subtype string `protobuf:"bytes,1,opt,name=subtype,proto3" json:"subtype,omitempty"` + TypeName []*Node `protobuf:"bytes,2,rep,name=type_name,json=typeName,proto3" json:"type_name,omitempty"` + Name string `protobuf:"bytes,3,opt,name=name,proto3" json:"name,omitempty"` + Def *Node `protobuf:"bytes,4,opt,name=def,proto3" json:"def,omitempty"` + Behavior DropBehavior `protobuf:"varint,5,opt,name=behavior,proto3,enum=pg_query.DropBehavior" json:"behavior,omitempty"` + MissingOk bool `protobuf:"varint,6,opt,name=missing_ok,proto3" json:"missing_ok,omitempty"` +} + +func (x *AlterDomainStmt) Reset() { + *x = AlterDomainStmt{} + if protoimpl.UnsafeEnabled { + mi := &file_pg_query_proto_msgTypes[70] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *AlterDomainStmt) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*AlterDomainStmt) ProtoMessage() {} + +func (x *AlterDomainStmt) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[70] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use AlterDomainStmt.ProtoReflect.Descriptor instead. +func (*AlterDomainStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{70} +} + +func (x *AlterDomainStmt) GetSubtype() string { + if x != nil { + return x.Subtype + } + return "" +} + +func (x *AlterDomainStmt) GetTypeName() []*Node { + if x != nil { + return x.TypeName + } + return nil +} + +func (x *AlterDomainStmt) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *AlterDomainStmt) GetDef() *Node { + if x != nil { + return x.Def + } + return nil +} + +func (x *AlterDomainStmt) GetBehavior() DropBehavior { + if x != nil { + return x.Behavior + } + return DropBehavior_DROP_BEHAVIOR_UNDEFINED +} + +func (x *AlterDomainStmt) GetMissingOk() bool { + if x != nil { + return x.MissingOk + } + return false +} + +type SetOperationStmt struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Op SetOperation `protobuf:"varint,1,opt,name=op,proto3,enum=pg_query.SetOperation" json:"op,omitempty"` + All bool `protobuf:"varint,2,opt,name=all,proto3" json:"all,omitempty"` + Larg *Node `protobuf:"bytes,3,opt,name=larg,proto3" json:"larg,omitempty"` + Rarg *Node `protobuf:"bytes,4,opt,name=rarg,proto3" json:"rarg,omitempty"` + ColTypes []*Node `protobuf:"bytes,5,rep,name=col_types,json=colTypes,proto3" json:"col_types,omitempty"` + ColTypmods []*Node `protobuf:"bytes,6,rep,name=col_typmods,json=colTypmods,proto3" json:"col_typmods,omitempty"` + ColCollations []*Node `protobuf:"bytes,7,rep,name=col_collations,json=colCollations,proto3" json:"col_collations,omitempty"` + GroupClauses []*Node `protobuf:"bytes,8,rep,name=group_clauses,json=groupClauses,proto3" json:"group_clauses,omitempty"` +} + +func (x *SetOperationStmt) Reset() { + *x = SetOperationStmt{} + if protoimpl.UnsafeEnabled { + mi := &file_pg_query_proto_msgTypes[71] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *SetOperationStmt) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SetOperationStmt) ProtoMessage() {} + +func (x *SetOperationStmt) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[71] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SetOperationStmt.ProtoReflect.Descriptor instead. +func (*SetOperationStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{71} +} + +func (x *SetOperationStmt) GetOp() SetOperation { + if x != nil { + return x.Op + } + return SetOperation_SET_OPERATION_UNDEFINED +} + +func (x *SetOperationStmt) GetAll() bool { + if x != nil { + return x.All + } + return false +} + +func (x *SetOperationStmt) GetLarg() *Node { + if x != nil { + return x.Larg + } + return nil +} + +func (x *SetOperationStmt) GetRarg() *Node { + if x != nil { + return x.Rarg + } + return nil +} + +func (x *SetOperationStmt) GetColTypes() []*Node { + if x != nil { + return x.ColTypes + } + return nil +} + +func (x *SetOperationStmt) GetColTypmods() []*Node { + if x != nil { + return x.ColTypmods + } + return nil +} + +func (x *SetOperationStmt) GetColCollations() []*Node { + if x != nil { + return x.ColCollations + } + return nil +} + +func (x *SetOperationStmt) GetGroupClauses() []*Node { + if x != nil { + return x.GroupClauses + } + return nil +} + +type GrantStmt struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + IsGrant bool `protobuf:"varint,1,opt,name=is_grant,proto3" json:"is_grant,omitempty"` + Targtype GrantTargetType `protobuf:"varint,2,opt,name=targtype,proto3,enum=pg_query.GrantTargetType" json:"targtype,omitempty"` + Objtype ObjectType `protobuf:"varint,3,opt,name=objtype,proto3,enum=pg_query.ObjectType" json:"objtype,omitempty"` + Objects []*Node `protobuf:"bytes,4,rep,name=objects,proto3" json:"objects,omitempty"` + Privileges []*Node `protobuf:"bytes,5,rep,name=privileges,proto3" json:"privileges,omitempty"` + Grantees []*Node `protobuf:"bytes,6,rep,name=grantees,proto3" json:"grantees,omitempty"` + GrantOption bool `protobuf:"varint,7,opt,name=grant_option,proto3" json:"grant_option,omitempty"` + Behavior DropBehavior `protobuf:"varint,8,opt,name=behavior,proto3,enum=pg_query.DropBehavior" json:"behavior,omitempty"` +} + +func (x *GrantStmt) Reset() { + *x = GrantStmt{} + if protoimpl.UnsafeEnabled { + mi := &file_pg_query_proto_msgTypes[72] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GrantStmt) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GrantStmt) ProtoMessage() {} + +func (x *GrantStmt) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[72] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GrantStmt.ProtoReflect.Descriptor instead. +func (*GrantStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{72} +} + +func (x *GrantStmt) GetIsGrant() bool { + if x != nil { + return x.IsGrant + } + return false +} + +func (x *GrantStmt) GetTargtype() GrantTargetType { + if x != nil { + return x.Targtype + } + return GrantTargetType_GRANT_TARGET_TYPE_UNDEFINED +} + +func (x *GrantStmt) GetObjtype() ObjectType { + if x != nil { + return x.Objtype + } + return ObjectType_OBJECT_TYPE_UNDEFINED +} + +func (x *GrantStmt) GetObjects() []*Node { + if x != nil { + return x.Objects + } + return nil +} + +func (x *GrantStmt) GetPrivileges() []*Node { + if x != nil { + return x.Privileges + } + return nil +} + +func (x *GrantStmt) GetGrantees() []*Node { + if x != nil { + return x.Grantees + } + return nil +} + +func (x *GrantStmt) GetGrantOption() bool { + if x != nil { + return x.GrantOption + } + return false +} + +func (x *GrantStmt) GetBehavior() DropBehavior { + if x != nil { + return x.Behavior + } + return DropBehavior_DROP_BEHAVIOR_UNDEFINED +} + +type GrantRoleStmt struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + GrantedRoles []*Node `protobuf:"bytes,1,rep,name=granted_roles,proto3" json:"granted_roles,omitempty"` + GranteeRoles []*Node `protobuf:"bytes,2,rep,name=grantee_roles,proto3" json:"grantee_roles,omitempty"` + IsGrant bool `protobuf:"varint,3,opt,name=is_grant,proto3" json:"is_grant,omitempty"` + AdminOpt bool `protobuf:"varint,4,opt,name=admin_opt,proto3" json:"admin_opt,omitempty"` + Grantor *RoleSpec `protobuf:"bytes,5,opt,name=grantor,proto3" json:"grantor,omitempty"` + Behavior DropBehavior `protobuf:"varint,6,opt,name=behavior,proto3,enum=pg_query.DropBehavior" json:"behavior,omitempty"` +} + +func (x *GrantRoleStmt) Reset() { + *x = GrantRoleStmt{} + if protoimpl.UnsafeEnabled { + mi := &file_pg_query_proto_msgTypes[73] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GrantRoleStmt) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GrantRoleStmt) ProtoMessage() {} + +func (x *GrantRoleStmt) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[73] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GrantRoleStmt.ProtoReflect.Descriptor instead. +func (*GrantRoleStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{73} +} + +func (x *GrantRoleStmt) GetGrantedRoles() []*Node { + if x != nil { + return x.GrantedRoles + } + return nil +} + +func (x *GrantRoleStmt) GetGranteeRoles() []*Node { + if x != nil { + return x.GranteeRoles + } + return nil +} + +func (x *GrantRoleStmt) GetIsGrant() bool { + if x != nil { + return x.IsGrant + } + return false +} + +func (x *GrantRoleStmt) GetAdminOpt() bool { + if x != nil { + return x.AdminOpt + } + return false +} + +func (x *GrantRoleStmt) GetGrantor() *RoleSpec { + if x != nil { + return x.Grantor + } + return nil +} + +func (x *GrantRoleStmt) GetBehavior() DropBehavior { + if x != nil { + return x.Behavior + } + return DropBehavior_DROP_BEHAVIOR_UNDEFINED +} + +type AlterDefaultPrivilegesStmt struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Options []*Node `protobuf:"bytes,1,rep,name=options,proto3" json:"options,omitempty"` + Action *GrantStmt `protobuf:"bytes,2,opt,name=action,proto3" json:"action,omitempty"` +} + +func (x *AlterDefaultPrivilegesStmt) Reset() { + *x = AlterDefaultPrivilegesStmt{} + if protoimpl.UnsafeEnabled { + mi := &file_pg_query_proto_msgTypes[74] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *AlterDefaultPrivilegesStmt) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*AlterDefaultPrivilegesStmt) ProtoMessage() {} + +func (x *AlterDefaultPrivilegesStmt) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[74] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use AlterDefaultPrivilegesStmt.ProtoReflect.Descriptor instead. +func (*AlterDefaultPrivilegesStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{74} +} + +func (x *AlterDefaultPrivilegesStmt) GetOptions() []*Node { + if x != nil { + return x.Options + } + return nil +} + +func (x *AlterDefaultPrivilegesStmt) GetAction() *GrantStmt { + if x != nil { + return x.Action + } + return nil +} + +type ClosePortalStmt struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Portalname string `protobuf:"bytes,1,opt,name=portalname,proto3" json:"portalname,omitempty"` +} + +func (x *ClosePortalStmt) Reset() { + *x = ClosePortalStmt{} + if protoimpl.UnsafeEnabled { + mi := &file_pg_query_proto_msgTypes[75] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ClosePortalStmt) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ClosePortalStmt) ProtoMessage() {} + +func (x *ClosePortalStmt) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[75] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ClosePortalStmt.ProtoReflect.Descriptor instead. +func (*ClosePortalStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{75} +} + +func (x *ClosePortalStmt) GetPortalname() string { + if x != nil { + return x.Portalname + } + return "" +} + +type ClusterStmt struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Relation *RangeVar `protobuf:"bytes,1,opt,name=relation,proto3" json:"relation,omitempty"` + Indexname string `protobuf:"bytes,2,opt,name=indexname,proto3" json:"indexname,omitempty"` + Options int32 `protobuf:"varint,3,opt,name=options,proto3" json:"options,omitempty"` +} + +func (x *ClusterStmt) Reset() { + *x = ClusterStmt{} + if protoimpl.UnsafeEnabled { + mi := &file_pg_query_proto_msgTypes[76] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ClusterStmt) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ClusterStmt) ProtoMessage() {} + +func (x *ClusterStmt) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[76] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ClusterStmt.ProtoReflect.Descriptor instead. +func (*ClusterStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{76} +} + +func (x *ClusterStmt) GetRelation() *RangeVar { + if x != nil { + return x.Relation + } + return nil +} + +func (x *ClusterStmt) GetIndexname() string { + if x != nil { + return x.Indexname + } + return "" +} + +func (x *ClusterStmt) GetOptions() int32 { + if x != nil { + return x.Options + } + return 0 +} + +type CopyStmt struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Relation *RangeVar `protobuf:"bytes,1,opt,name=relation,proto3" json:"relation,omitempty"` + Query *Node `protobuf:"bytes,2,opt,name=query,proto3" json:"query,omitempty"` + Attlist []*Node `protobuf:"bytes,3,rep,name=attlist,proto3" json:"attlist,omitempty"` + IsFrom bool `protobuf:"varint,4,opt,name=is_from,proto3" json:"is_from,omitempty"` + IsProgram bool `protobuf:"varint,5,opt,name=is_program,proto3" json:"is_program,omitempty"` + Filename string `protobuf:"bytes,6,opt,name=filename,proto3" json:"filename,omitempty"` + Options []*Node `protobuf:"bytes,7,rep,name=options,proto3" json:"options,omitempty"` + WhereClause *Node `protobuf:"bytes,8,opt,name=where_clause,json=whereClause,proto3" json:"where_clause,omitempty"` +} + +func (x *CopyStmt) Reset() { + *x = CopyStmt{} + if protoimpl.UnsafeEnabled { + mi := &file_pg_query_proto_msgTypes[77] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *CopyStmt) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CopyStmt) ProtoMessage() {} + +func (x *CopyStmt) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[77] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CopyStmt.ProtoReflect.Descriptor instead. +func (*CopyStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{77} +} + +func (x *CopyStmt) GetRelation() *RangeVar { + if x != nil { + return x.Relation + } + return nil +} + +func (x *CopyStmt) GetQuery() *Node { + if x != nil { + return x.Query + } + return nil +} + +func (x *CopyStmt) GetAttlist() []*Node { + if x != nil { + return x.Attlist + } + return nil +} + +func (x *CopyStmt) GetIsFrom() bool { + if x != nil { + return x.IsFrom + } + return false +} + +func (x *CopyStmt) GetIsProgram() bool { + if x != nil { + return x.IsProgram + } + return false +} + +func (x *CopyStmt) GetFilename() string { + if x != nil { + return x.Filename + } + return "" +} + +func (x *CopyStmt) GetOptions() []*Node { + if x != nil { + return x.Options + } + return nil +} + +func (x *CopyStmt) GetWhereClause() *Node { + if x != nil { + return x.WhereClause + } + return nil +} + +type CreateStmt struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Relation *RangeVar `protobuf:"bytes,1,opt,name=relation,proto3" json:"relation,omitempty"` + TableElts []*Node `protobuf:"bytes,2,rep,name=table_elts,json=tableElts,proto3" json:"table_elts,omitempty"` + InhRelations []*Node `protobuf:"bytes,3,rep,name=inh_relations,json=inhRelations,proto3" json:"inh_relations,omitempty"` + Partbound *PartitionBoundSpec `protobuf:"bytes,4,opt,name=partbound,proto3" json:"partbound,omitempty"` + Partspec *PartitionSpec `protobuf:"bytes,5,opt,name=partspec,proto3" json:"partspec,omitempty"` + OfTypename *TypeName `protobuf:"bytes,6,opt,name=of_typename,json=ofTypename,proto3" json:"of_typename,omitempty"` + Constraints []*Node `protobuf:"bytes,7,rep,name=constraints,proto3" json:"constraints,omitempty"` + Options []*Node `protobuf:"bytes,8,rep,name=options,proto3" json:"options,omitempty"` + Oncommit OnCommitAction `protobuf:"varint,9,opt,name=oncommit,proto3,enum=pg_query.OnCommitAction" json:"oncommit,omitempty"` + Tablespacename string `protobuf:"bytes,10,opt,name=tablespacename,proto3" json:"tablespacename,omitempty"` + AccessMethod string `protobuf:"bytes,11,opt,name=access_method,json=accessMethod,proto3" json:"access_method,omitempty"` + IfNotExists bool `protobuf:"varint,12,opt,name=if_not_exists,proto3" json:"if_not_exists,omitempty"` +} + +func (x *CreateStmt) Reset() { + *x = CreateStmt{} + if protoimpl.UnsafeEnabled { + mi := &file_pg_query_proto_msgTypes[78] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *CreateStmt) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CreateStmt) ProtoMessage() {} + +func (x *CreateStmt) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[78] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CreateStmt.ProtoReflect.Descriptor instead. +func (*CreateStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{78} +} + +func (x *CreateStmt) GetRelation() *RangeVar { + if x != nil { + return x.Relation + } + return nil +} + +func (x *CreateStmt) GetTableElts() []*Node { + if x != nil { + return x.TableElts + } + return nil +} + +func (x *CreateStmt) GetInhRelations() []*Node { + if x != nil { + return x.InhRelations + } + return nil +} + +func (x *CreateStmt) GetPartbound() *PartitionBoundSpec { + if x != nil { + return x.Partbound + } + return nil +} + +func (x *CreateStmt) GetPartspec() *PartitionSpec { + if x != nil { + return x.Partspec + } + return nil +} + +func (x *CreateStmt) GetOfTypename() *TypeName { + if x != nil { + return x.OfTypename + } + return nil +} + +func (x *CreateStmt) GetConstraints() []*Node { + if x != nil { + return x.Constraints + } + return nil +} + +func (x *CreateStmt) GetOptions() []*Node { + if x != nil { + return x.Options + } + return nil +} + +func (x *CreateStmt) GetOncommit() OnCommitAction { + if x != nil { + return x.Oncommit + } + return OnCommitAction_ON_COMMIT_ACTION_UNDEFINED +} + +func (x *CreateStmt) GetTablespacename() string { + if x != nil { + return x.Tablespacename + } + return "" +} + +func (x *CreateStmt) GetAccessMethod() string { + if x != nil { + return x.AccessMethod + } + return "" +} + +func (x *CreateStmt) GetIfNotExists() bool { + if x != nil { + return x.IfNotExists + } + return false +} + +type DefineStmt struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Kind ObjectType `protobuf:"varint,1,opt,name=kind,proto3,enum=pg_query.ObjectType" json:"kind,omitempty"` + Oldstyle bool `protobuf:"varint,2,opt,name=oldstyle,proto3" json:"oldstyle,omitempty"` + Defnames []*Node `protobuf:"bytes,3,rep,name=defnames,proto3" json:"defnames,omitempty"` + Args []*Node `protobuf:"bytes,4,rep,name=args,proto3" json:"args,omitempty"` + Definition []*Node `protobuf:"bytes,5,rep,name=definition,proto3" json:"definition,omitempty"` + IfNotExists bool `protobuf:"varint,6,opt,name=if_not_exists,proto3" json:"if_not_exists,omitempty"` + Replace bool `protobuf:"varint,7,opt,name=replace,proto3" json:"replace,omitempty"` +} + +func (x *DefineStmt) Reset() { + *x = DefineStmt{} + if protoimpl.UnsafeEnabled { + mi := &file_pg_query_proto_msgTypes[79] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *DefineStmt) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DefineStmt) ProtoMessage() {} + +func (x *DefineStmt) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[79] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use DefineStmt.ProtoReflect.Descriptor instead. +func (*DefineStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{79} +} + +func (x *DefineStmt) GetKind() ObjectType { + if x != nil { + return x.Kind + } + return ObjectType_OBJECT_TYPE_UNDEFINED +} + +func (x *DefineStmt) GetOldstyle() bool { + if x != nil { + return x.Oldstyle + } + return false +} + +func (x *DefineStmt) GetDefnames() []*Node { + if x != nil { + return x.Defnames + } + return nil +} + +func (x *DefineStmt) GetArgs() []*Node { + if x != nil { + return x.Args + } + return nil +} + +func (x *DefineStmt) GetDefinition() []*Node { + if x != nil { + return x.Definition + } + return nil +} + +func (x *DefineStmt) GetIfNotExists() bool { + if x != nil { + return x.IfNotExists + } + return false +} + +func (x *DefineStmt) GetReplace() bool { + if x != nil { + return x.Replace + } + return false +} + +type DropStmt struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Objects []*Node `protobuf:"bytes,1,rep,name=objects,proto3" json:"objects,omitempty"` + RemoveType ObjectType `protobuf:"varint,2,opt,name=remove_type,json=removeType,proto3,enum=pg_query.ObjectType" json:"remove_type,omitempty"` + Behavior DropBehavior `protobuf:"varint,3,opt,name=behavior,proto3,enum=pg_query.DropBehavior" json:"behavior,omitempty"` + MissingOk bool `protobuf:"varint,4,opt,name=missing_ok,proto3" json:"missing_ok,omitempty"` + Concurrent bool `protobuf:"varint,5,opt,name=concurrent,proto3" json:"concurrent,omitempty"` +} + +func (x *DropStmt) Reset() { + *x = DropStmt{} + if protoimpl.UnsafeEnabled { + mi := &file_pg_query_proto_msgTypes[80] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *DropStmt) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DropStmt) ProtoMessage() {} + +func (x *DropStmt) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[80] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use DropStmt.ProtoReflect.Descriptor instead. +func (*DropStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{80} +} + +func (x *DropStmt) GetObjects() []*Node { + if x != nil { + return x.Objects + } + return nil +} + +func (x *DropStmt) GetRemoveType() ObjectType { + if x != nil { + return x.RemoveType + } + return ObjectType_OBJECT_TYPE_UNDEFINED +} + +func (x *DropStmt) GetBehavior() DropBehavior { + if x != nil { + return x.Behavior + } + return DropBehavior_DROP_BEHAVIOR_UNDEFINED +} + +func (x *DropStmt) GetMissingOk() bool { + if x != nil { + return x.MissingOk + } + return false +} + +func (x *DropStmt) GetConcurrent() bool { + if x != nil { + return x.Concurrent + } + return false +} + +type TruncateStmt struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Relations []*Node `protobuf:"bytes,1,rep,name=relations,proto3" json:"relations,omitempty"` + RestartSeqs bool `protobuf:"varint,2,opt,name=restart_seqs,proto3" json:"restart_seqs,omitempty"` + Behavior DropBehavior `protobuf:"varint,3,opt,name=behavior,proto3,enum=pg_query.DropBehavior" json:"behavior,omitempty"` +} + +func (x *TruncateStmt) Reset() { + *x = TruncateStmt{} + if protoimpl.UnsafeEnabled { + mi := &file_pg_query_proto_msgTypes[81] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *TruncateStmt) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*TruncateStmt) ProtoMessage() {} + +func (x *TruncateStmt) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[81] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use TruncateStmt.ProtoReflect.Descriptor instead. +func (*TruncateStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{81} +} + +func (x *TruncateStmt) GetRelations() []*Node { + if x != nil { + return x.Relations + } + return nil +} + +func (x *TruncateStmt) GetRestartSeqs() bool { + if x != nil { + return x.RestartSeqs + } + return false +} + +func (x *TruncateStmt) GetBehavior() DropBehavior { + if x != nil { + return x.Behavior + } + return DropBehavior_DROP_BEHAVIOR_UNDEFINED +} + +type CommentStmt struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Objtype ObjectType `protobuf:"varint,1,opt,name=objtype,proto3,enum=pg_query.ObjectType" json:"objtype,omitempty"` + Object *Node `protobuf:"bytes,2,opt,name=object,proto3" json:"object,omitempty"` + Comment string `protobuf:"bytes,3,opt,name=comment,proto3" json:"comment,omitempty"` +} + +func (x *CommentStmt) Reset() { + *x = CommentStmt{} + if protoimpl.UnsafeEnabled { + mi := &file_pg_query_proto_msgTypes[82] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *CommentStmt) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CommentStmt) ProtoMessage() {} + +func (x *CommentStmt) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[82] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CommentStmt.ProtoReflect.Descriptor instead. +func (*CommentStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{82} +} + +func (x *CommentStmt) GetObjtype() ObjectType { + if x != nil { + return x.Objtype + } + return ObjectType_OBJECT_TYPE_UNDEFINED +} + +func (x *CommentStmt) GetObject() *Node { + if x != nil { + return x.Object + } + return nil +} + +func (x *CommentStmt) GetComment() string { + if x != nil { + return x.Comment + } + return "" +} + +type FetchStmt struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Direction FetchDirection `protobuf:"varint,1,opt,name=direction,proto3,enum=pg_query.FetchDirection" json:"direction,omitempty"` + HowMany int64 `protobuf:"varint,2,opt,name=how_many,json=howMany,proto3" json:"how_many,omitempty"` + Portalname string `protobuf:"bytes,3,opt,name=portalname,proto3" json:"portalname,omitempty"` + Ismove bool `protobuf:"varint,4,opt,name=ismove,proto3" json:"ismove,omitempty"` +} + +func (x *FetchStmt) Reset() { + *x = FetchStmt{} + if protoimpl.UnsafeEnabled { + mi := &file_pg_query_proto_msgTypes[83] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *FetchStmt) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*FetchStmt) ProtoMessage() {} + +func (x *FetchStmt) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[83] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use FetchStmt.ProtoReflect.Descriptor instead. +func (*FetchStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{83} +} + +func (x *FetchStmt) GetDirection() FetchDirection { + if x != nil { + return x.Direction + } + return FetchDirection_FETCH_DIRECTION_UNDEFINED +} + +func (x *FetchStmt) GetHowMany() int64 { + if x != nil { + return x.HowMany + } + return 0 +} + +func (x *FetchStmt) GetPortalname() string { + if x != nil { + return x.Portalname + } + return "" +} + +func (x *FetchStmt) GetIsmove() bool { + if x != nil { + return x.Ismove + } + return false +} + +type IndexStmt struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Idxname string `protobuf:"bytes,1,opt,name=idxname,proto3" json:"idxname,omitempty"` + Relation *RangeVar `protobuf:"bytes,2,opt,name=relation,proto3" json:"relation,omitempty"` + AccessMethod string `protobuf:"bytes,3,opt,name=access_method,json=accessMethod,proto3" json:"access_method,omitempty"` + TableSpace string `protobuf:"bytes,4,opt,name=table_space,json=tableSpace,proto3" json:"table_space,omitempty"` + IndexParams []*Node `protobuf:"bytes,5,rep,name=index_params,json=indexParams,proto3" json:"index_params,omitempty"` + IndexIncludingParams []*Node `protobuf:"bytes,6,rep,name=index_including_params,json=indexIncludingParams,proto3" json:"index_including_params,omitempty"` + Options []*Node `protobuf:"bytes,7,rep,name=options,proto3" json:"options,omitempty"` + WhereClause *Node `protobuf:"bytes,8,opt,name=where_clause,json=whereClause,proto3" json:"where_clause,omitempty"` + ExcludeOpNames []*Node `protobuf:"bytes,9,rep,name=exclude_op_names,json=excludeOpNames,proto3" json:"exclude_op_names,omitempty"` + Idxcomment string `protobuf:"bytes,10,opt,name=idxcomment,proto3" json:"idxcomment,omitempty"` + IndexOid uint32 `protobuf:"varint,11,opt,name=index_oid,json=indexOid,proto3" json:"index_oid,omitempty"` + OldNode uint32 `protobuf:"varint,12,opt,name=old_node,json=oldNode,proto3" json:"old_node,omitempty"` + OldCreateSubid uint32 `protobuf:"varint,13,opt,name=old_create_subid,json=oldCreateSubid,proto3" json:"old_create_subid,omitempty"` + OldFirstRelfilenodeSubid uint32 `protobuf:"varint,14,opt,name=old_first_relfilenode_subid,json=oldFirstRelfilenodeSubid,proto3" json:"old_first_relfilenode_subid,omitempty"` + Unique bool `protobuf:"varint,15,opt,name=unique,proto3" json:"unique,omitempty"` + Primary bool `protobuf:"varint,16,opt,name=primary,proto3" json:"primary,omitempty"` + Isconstraint bool `protobuf:"varint,17,opt,name=isconstraint,proto3" json:"isconstraint,omitempty"` + Deferrable bool `protobuf:"varint,18,opt,name=deferrable,proto3" json:"deferrable,omitempty"` + Initdeferred bool `protobuf:"varint,19,opt,name=initdeferred,proto3" json:"initdeferred,omitempty"` + Transformed bool `protobuf:"varint,20,opt,name=transformed,proto3" json:"transformed,omitempty"` + Concurrent bool `protobuf:"varint,21,opt,name=concurrent,proto3" json:"concurrent,omitempty"` + IfNotExists bool `protobuf:"varint,22,opt,name=if_not_exists,proto3" json:"if_not_exists,omitempty"` + ResetDefaultTblspc bool `protobuf:"varint,23,opt,name=reset_default_tblspc,proto3" json:"reset_default_tblspc,omitempty"` +} + +func (x *IndexStmt) Reset() { + *x = IndexStmt{} + if protoimpl.UnsafeEnabled { + mi := &file_pg_query_proto_msgTypes[84] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *IndexStmt) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*IndexStmt) ProtoMessage() {} + +func (x *IndexStmt) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[84] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use IndexStmt.ProtoReflect.Descriptor instead. +func (*IndexStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{84} +} + +func (x *IndexStmt) GetIdxname() string { + if x != nil { + return x.Idxname + } + return "" +} + +func (x *IndexStmt) GetRelation() *RangeVar { + if x != nil { + return x.Relation + } + return nil +} + +func (x *IndexStmt) GetAccessMethod() string { + if x != nil { + return x.AccessMethod + } + return "" +} + +func (x *IndexStmt) GetTableSpace() string { + if x != nil { + return x.TableSpace + } + return "" +} + +func (x *IndexStmt) GetIndexParams() []*Node { + if x != nil { + return x.IndexParams + } + return nil +} + +func (x *IndexStmt) GetIndexIncludingParams() []*Node { + if x != nil { + return x.IndexIncludingParams + } + return nil +} + +func (x *IndexStmt) GetOptions() []*Node { + if x != nil { + return x.Options + } + return nil +} + +func (x *IndexStmt) GetWhereClause() *Node { + if x != nil { + return x.WhereClause + } + return nil +} + +func (x *IndexStmt) GetExcludeOpNames() []*Node { + if x != nil { + return x.ExcludeOpNames + } + return nil +} + +func (x *IndexStmt) GetIdxcomment() string { + if x != nil { + return x.Idxcomment + } + return "" +} + +func (x *IndexStmt) GetIndexOid() uint32 { + if x != nil { + return x.IndexOid + } + return 0 +} + +func (x *IndexStmt) GetOldNode() uint32 { + if x != nil { + return x.OldNode + } + return 0 +} + +func (x *IndexStmt) GetOldCreateSubid() uint32 { + if x != nil { + return x.OldCreateSubid + } + return 0 +} + +func (x *IndexStmt) GetOldFirstRelfilenodeSubid() uint32 { + if x != nil { + return x.OldFirstRelfilenodeSubid + } + return 0 +} + +func (x *IndexStmt) GetUnique() bool { + if x != nil { + return x.Unique + } + return false +} + +func (x *IndexStmt) GetPrimary() bool { + if x != nil { + return x.Primary + } + return false +} + +func (x *IndexStmt) GetIsconstraint() bool { + if x != nil { + return x.Isconstraint + } + return false +} + +func (x *IndexStmt) GetDeferrable() bool { + if x != nil { + return x.Deferrable + } + return false +} + +func (x *IndexStmt) GetInitdeferred() bool { + if x != nil { + return x.Initdeferred + } + return false +} + +func (x *IndexStmt) GetTransformed() bool { + if x != nil { + return x.Transformed + } + return false +} + +func (x *IndexStmt) GetConcurrent() bool { + if x != nil { + return x.Concurrent + } + return false +} + +func (x *IndexStmt) GetIfNotExists() bool { + if x != nil { + return x.IfNotExists + } + return false +} + +func (x *IndexStmt) GetResetDefaultTblspc() bool { + if x != nil { + return x.ResetDefaultTblspc + } + return false +} + +type CreateFunctionStmt struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + IsProcedure bool `protobuf:"varint,1,opt,name=is_procedure,proto3" json:"is_procedure,omitempty"` + Replace bool `protobuf:"varint,2,opt,name=replace,proto3" json:"replace,omitempty"` + Funcname []*Node `protobuf:"bytes,3,rep,name=funcname,proto3" json:"funcname,omitempty"` + Parameters []*Node `protobuf:"bytes,4,rep,name=parameters,proto3" json:"parameters,omitempty"` + ReturnType *TypeName `protobuf:"bytes,5,opt,name=return_type,json=returnType,proto3" json:"return_type,omitempty"` + Options []*Node `protobuf:"bytes,6,rep,name=options,proto3" json:"options,omitempty"` +} + +func (x *CreateFunctionStmt) Reset() { + *x = CreateFunctionStmt{} + if protoimpl.UnsafeEnabled { + mi := &file_pg_query_proto_msgTypes[85] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *CreateFunctionStmt) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CreateFunctionStmt) ProtoMessage() {} + +func (x *CreateFunctionStmt) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[85] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CreateFunctionStmt.ProtoReflect.Descriptor instead. +func (*CreateFunctionStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{85} +} + +func (x *CreateFunctionStmt) GetIsProcedure() bool { + if x != nil { + return x.IsProcedure + } + return false +} + +func (x *CreateFunctionStmt) GetReplace() bool { + if x != nil { + return x.Replace + } + return false +} + +func (x *CreateFunctionStmt) GetFuncname() []*Node { + if x != nil { + return x.Funcname + } + return nil +} + +func (x *CreateFunctionStmt) GetParameters() []*Node { + if x != nil { + return x.Parameters + } + return nil +} + +func (x *CreateFunctionStmt) GetReturnType() *TypeName { + if x != nil { + return x.ReturnType + } + return nil +} + +func (x *CreateFunctionStmt) GetOptions() []*Node { + if x != nil { + return x.Options + } + return nil +} + +type AlterFunctionStmt struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Objtype ObjectType `protobuf:"varint,1,opt,name=objtype,proto3,enum=pg_query.ObjectType" json:"objtype,omitempty"` + Func *ObjectWithArgs `protobuf:"bytes,2,opt,name=func,proto3" json:"func,omitempty"` + Actions []*Node `protobuf:"bytes,3,rep,name=actions,proto3" json:"actions,omitempty"` +} + +func (x *AlterFunctionStmt) Reset() { + *x = AlterFunctionStmt{} + if protoimpl.UnsafeEnabled { + mi := &file_pg_query_proto_msgTypes[86] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *AlterFunctionStmt) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*AlterFunctionStmt) ProtoMessage() {} + +func (x *AlterFunctionStmt) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[86] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use AlterFunctionStmt.ProtoReflect.Descriptor instead. +func (*AlterFunctionStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{86} +} + +func (x *AlterFunctionStmt) GetObjtype() ObjectType { + if x != nil { + return x.Objtype + } + return ObjectType_OBJECT_TYPE_UNDEFINED +} + +func (x *AlterFunctionStmt) GetFunc() *ObjectWithArgs { + if x != nil { + return x.Func + } + return nil +} + +func (x *AlterFunctionStmt) GetActions() []*Node { + if x != nil { + return x.Actions + } + return nil +} + +type DoStmt struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Args []*Node `protobuf:"bytes,1,rep,name=args,proto3" json:"args,omitempty"` +} + +func (x *DoStmt) Reset() { + *x = DoStmt{} + if protoimpl.UnsafeEnabled { + mi := &file_pg_query_proto_msgTypes[87] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *DoStmt) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DoStmt) ProtoMessage() {} + +func (x *DoStmt) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[87] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use DoStmt.ProtoReflect.Descriptor instead. +func (*DoStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{87} +} + +func (x *DoStmt) GetArgs() []*Node { + if x != nil { + return x.Args + } + return nil +} + +type RenameStmt struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + RenameType ObjectType `protobuf:"varint,1,opt,name=rename_type,json=renameType,proto3,enum=pg_query.ObjectType" json:"rename_type,omitempty"` + RelationType ObjectType `protobuf:"varint,2,opt,name=relation_type,json=relationType,proto3,enum=pg_query.ObjectType" json:"relation_type,omitempty"` + Relation *RangeVar `protobuf:"bytes,3,opt,name=relation,proto3" json:"relation,omitempty"` + Object *Node `protobuf:"bytes,4,opt,name=object,proto3" json:"object,omitempty"` + Subname string `protobuf:"bytes,5,opt,name=subname,proto3" json:"subname,omitempty"` + Newname string `protobuf:"bytes,6,opt,name=newname,proto3" json:"newname,omitempty"` + Behavior DropBehavior `protobuf:"varint,7,opt,name=behavior,proto3,enum=pg_query.DropBehavior" json:"behavior,omitempty"` + MissingOk bool `protobuf:"varint,8,opt,name=missing_ok,proto3" json:"missing_ok,omitempty"` +} + +func (x *RenameStmt) Reset() { + *x = RenameStmt{} + if protoimpl.UnsafeEnabled { + mi := &file_pg_query_proto_msgTypes[88] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *RenameStmt) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*RenameStmt) ProtoMessage() {} + +func (x *RenameStmt) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[88] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use RenameStmt.ProtoReflect.Descriptor instead. +func (*RenameStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{88} +} + +func (x *RenameStmt) GetRenameType() ObjectType { + if x != nil { + return x.RenameType + } + return ObjectType_OBJECT_TYPE_UNDEFINED +} + +func (x *RenameStmt) GetRelationType() ObjectType { + if x != nil { + return x.RelationType + } + return ObjectType_OBJECT_TYPE_UNDEFINED +} + +func (x *RenameStmt) GetRelation() *RangeVar { + if x != nil { + return x.Relation + } + return nil +} + +func (x *RenameStmt) GetObject() *Node { + if x != nil { + return x.Object + } + return nil +} + +func (x *RenameStmt) GetSubname() string { + if x != nil { + return x.Subname + } + return "" +} + +func (x *RenameStmt) GetNewname() string { + if x != nil { + return x.Newname + } + return "" +} + +func (x *RenameStmt) GetBehavior() DropBehavior { + if x != nil { + return x.Behavior + } + return DropBehavior_DROP_BEHAVIOR_UNDEFINED +} + +func (x *RenameStmt) GetMissingOk() bool { + if x != nil { + return x.MissingOk + } + return false +} + +type RuleStmt struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Relation *RangeVar `protobuf:"bytes,1,opt,name=relation,proto3" json:"relation,omitempty"` + Rulename string `protobuf:"bytes,2,opt,name=rulename,proto3" json:"rulename,omitempty"` + WhereClause *Node `protobuf:"bytes,3,opt,name=where_clause,json=whereClause,proto3" json:"where_clause,omitempty"` + Event CmdType `protobuf:"varint,4,opt,name=event,proto3,enum=pg_query.CmdType" json:"event,omitempty"` + Instead bool `protobuf:"varint,5,opt,name=instead,proto3" json:"instead,omitempty"` + Actions []*Node `protobuf:"bytes,6,rep,name=actions,proto3" json:"actions,omitempty"` + Replace bool `protobuf:"varint,7,opt,name=replace,proto3" json:"replace,omitempty"` +} + +func (x *RuleStmt) Reset() { + *x = RuleStmt{} + if protoimpl.UnsafeEnabled { + mi := &file_pg_query_proto_msgTypes[89] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *RuleStmt) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*RuleStmt) ProtoMessage() {} + +func (x *RuleStmt) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[89] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use RuleStmt.ProtoReflect.Descriptor instead. +func (*RuleStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{89} +} + +func (x *RuleStmt) GetRelation() *RangeVar { + if x != nil { + return x.Relation + } + return nil +} + +func (x *RuleStmt) GetRulename() string { + if x != nil { + return x.Rulename + } + return "" +} + +func (x *RuleStmt) GetWhereClause() *Node { + if x != nil { + return x.WhereClause + } + return nil +} + +func (x *RuleStmt) GetEvent() CmdType { + if x != nil { + return x.Event + } + return CmdType_CMD_TYPE_UNDEFINED +} + +func (x *RuleStmt) GetInstead() bool { + if x != nil { + return x.Instead + } + return false +} + +func (x *RuleStmt) GetActions() []*Node { + if x != nil { + return x.Actions + } + return nil +} + +func (x *RuleStmt) GetReplace() bool { + if x != nil { + return x.Replace + } + return false +} + +type NotifyStmt struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Conditionname string `protobuf:"bytes,1,opt,name=conditionname,proto3" json:"conditionname,omitempty"` + Payload string `protobuf:"bytes,2,opt,name=payload,proto3" json:"payload,omitempty"` +} + +func (x *NotifyStmt) Reset() { + *x = NotifyStmt{} + if protoimpl.UnsafeEnabled { + mi := &file_pg_query_proto_msgTypes[90] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *NotifyStmt) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*NotifyStmt) ProtoMessage() {} + +func (x *NotifyStmt) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[90] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use NotifyStmt.ProtoReflect.Descriptor instead. +func (*NotifyStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{90} +} + +func (x *NotifyStmt) GetConditionname() string { + if x != nil { + return x.Conditionname + } + return "" +} + +func (x *NotifyStmt) GetPayload() string { + if x != nil { + return x.Payload + } + return "" +} + +type ListenStmt struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Conditionname string `protobuf:"bytes,1,opt,name=conditionname,proto3" json:"conditionname,omitempty"` +} + +func (x *ListenStmt) Reset() { + *x = ListenStmt{} + if protoimpl.UnsafeEnabled { + mi := &file_pg_query_proto_msgTypes[91] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ListenStmt) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ListenStmt) ProtoMessage() {} + +func (x *ListenStmt) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[91] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ListenStmt.ProtoReflect.Descriptor instead. +func (*ListenStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{91} +} + +func (x *ListenStmt) GetConditionname() string { + if x != nil { + return x.Conditionname + } + return "" +} + +type UnlistenStmt struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Conditionname string `protobuf:"bytes,1,opt,name=conditionname,proto3" json:"conditionname,omitempty"` +} + +func (x *UnlistenStmt) Reset() { + *x = UnlistenStmt{} + if protoimpl.UnsafeEnabled { + mi := &file_pg_query_proto_msgTypes[92] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *UnlistenStmt) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*UnlistenStmt) ProtoMessage() {} + +func (x *UnlistenStmt) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[92] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use UnlistenStmt.ProtoReflect.Descriptor instead. +func (*UnlistenStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{92} +} + +func (x *UnlistenStmt) GetConditionname() string { + if x != nil { + return x.Conditionname + } + return "" +} + +type TransactionStmt struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Kind TransactionStmtKind `protobuf:"varint,1,opt,name=kind,proto3,enum=pg_query.TransactionStmtKind" json:"kind,omitempty"` + Options []*Node `protobuf:"bytes,2,rep,name=options,proto3" json:"options,omitempty"` + SavepointName string `protobuf:"bytes,3,opt,name=savepoint_name,proto3" json:"savepoint_name,omitempty"` + Gid string `protobuf:"bytes,4,opt,name=gid,proto3" json:"gid,omitempty"` + Chain bool `protobuf:"varint,5,opt,name=chain,proto3" json:"chain,omitempty"` +} + +func (x *TransactionStmt) Reset() { + *x = TransactionStmt{} + if protoimpl.UnsafeEnabled { + mi := &file_pg_query_proto_msgTypes[93] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *TransactionStmt) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*TransactionStmt) ProtoMessage() {} + +func (x *TransactionStmt) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[93] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use TransactionStmt.ProtoReflect.Descriptor instead. +func (*TransactionStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{93} +} + +func (x *TransactionStmt) GetKind() TransactionStmtKind { + if x != nil { + return x.Kind + } + return TransactionStmtKind_TRANSACTION_STMT_KIND_UNDEFINED +} + +func (x *TransactionStmt) GetOptions() []*Node { + if x != nil { + return x.Options + } + return nil +} + +func (x *TransactionStmt) GetSavepointName() string { + if x != nil { + return x.SavepointName + } + return "" +} + +func (x *TransactionStmt) GetGid() string { + if x != nil { + return x.Gid + } + return "" +} + +func (x *TransactionStmt) GetChain() bool { + if x != nil { + return x.Chain + } + return false +} + +type ViewStmt struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + View *RangeVar `protobuf:"bytes,1,opt,name=view,proto3" json:"view,omitempty"` + Aliases []*Node `protobuf:"bytes,2,rep,name=aliases,proto3" json:"aliases,omitempty"` + Query *Node `protobuf:"bytes,3,opt,name=query,proto3" json:"query,omitempty"` + Replace bool `protobuf:"varint,4,opt,name=replace,proto3" json:"replace,omitempty"` + Options []*Node `protobuf:"bytes,5,rep,name=options,proto3" json:"options,omitempty"` + WithCheckOption ViewCheckOption `protobuf:"varint,6,opt,name=with_check_option,json=withCheckOption,proto3,enum=pg_query.ViewCheckOption" json:"with_check_option,omitempty"` +} + +func (x *ViewStmt) Reset() { + *x = ViewStmt{} + if protoimpl.UnsafeEnabled { + mi := &file_pg_query_proto_msgTypes[94] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ViewStmt) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ViewStmt) ProtoMessage() {} + +func (x *ViewStmt) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[94] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ViewStmt.ProtoReflect.Descriptor instead. +func (*ViewStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{94} +} + +func (x *ViewStmt) GetView() *RangeVar { + if x != nil { + return x.View + } + return nil +} + +func (x *ViewStmt) GetAliases() []*Node { + if x != nil { + return x.Aliases + } + return nil +} + +func (x *ViewStmt) GetQuery() *Node { + if x != nil { + return x.Query + } + return nil +} + +func (x *ViewStmt) GetReplace() bool { + if x != nil { + return x.Replace + } + return false +} + +func (x *ViewStmt) GetOptions() []*Node { + if x != nil { + return x.Options + } + return nil +} + +func (x *ViewStmt) GetWithCheckOption() ViewCheckOption { + if x != nil { + return x.WithCheckOption + } + return ViewCheckOption_VIEW_CHECK_OPTION_UNDEFINED +} + +type LoadStmt struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Filename string `protobuf:"bytes,1,opt,name=filename,proto3" json:"filename,omitempty"` +} + +func (x *LoadStmt) Reset() { + *x = LoadStmt{} + if protoimpl.UnsafeEnabled { + mi := &file_pg_query_proto_msgTypes[95] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *LoadStmt) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*LoadStmt) ProtoMessage() {} + +func (x *LoadStmt) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[95] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use LoadStmt.ProtoReflect.Descriptor instead. +func (*LoadStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{95} +} + +func (x *LoadStmt) GetFilename() string { + if x != nil { + return x.Filename + } + return "" +} + +type CreateDomainStmt struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Domainname []*Node `protobuf:"bytes,1,rep,name=domainname,proto3" json:"domainname,omitempty"` + TypeName *TypeName `protobuf:"bytes,2,opt,name=type_name,json=typeName,proto3" json:"type_name,omitempty"` + CollClause *CollateClause `protobuf:"bytes,3,opt,name=coll_clause,json=collClause,proto3" json:"coll_clause,omitempty"` + Constraints []*Node `protobuf:"bytes,4,rep,name=constraints,proto3" json:"constraints,omitempty"` +} + +func (x *CreateDomainStmt) Reset() { + *x = CreateDomainStmt{} + if protoimpl.UnsafeEnabled { + mi := &file_pg_query_proto_msgTypes[96] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *CreateDomainStmt) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CreateDomainStmt) ProtoMessage() {} + +func (x *CreateDomainStmt) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[96] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CreateDomainStmt.ProtoReflect.Descriptor instead. +func (*CreateDomainStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{96} +} + +func (x *CreateDomainStmt) GetDomainname() []*Node { + if x != nil { + return x.Domainname + } + return nil +} + +func (x *CreateDomainStmt) GetTypeName() *TypeName { + if x != nil { + return x.TypeName + } + return nil +} + +func (x *CreateDomainStmt) GetCollClause() *CollateClause { + if x != nil { + return x.CollClause + } + return nil +} + +func (x *CreateDomainStmt) GetConstraints() []*Node { + if x != nil { + return x.Constraints + } + return nil +} + +type CreatedbStmt struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Dbname string `protobuf:"bytes,1,opt,name=dbname,proto3" json:"dbname,omitempty"` + Options []*Node `protobuf:"bytes,2,rep,name=options,proto3" json:"options,omitempty"` +} + +func (x *CreatedbStmt) Reset() { + *x = CreatedbStmt{} + if protoimpl.UnsafeEnabled { + mi := &file_pg_query_proto_msgTypes[97] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *CreatedbStmt) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CreatedbStmt) ProtoMessage() {} + +func (x *CreatedbStmt) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[97] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CreatedbStmt.ProtoReflect.Descriptor instead. +func (*CreatedbStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{97} +} + +func (x *CreatedbStmt) GetDbname() string { + if x != nil { + return x.Dbname + } + return "" +} + +func (x *CreatedbStmt) GetOptions() []*Node { + if x != nil { + return x.Options + } + return nil +} + +type DropdbStmt struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Dbname string `protobuf:"bytes,1,opt,name=dbname,proto3" json:"dbname,omitempty"` + MissingOk bool `protobuf:"varint,2,opt,name=missing_ok,proto3" json:"missing_ok,omitempty"` + Options []*Node `protobuf:"bytes,3,rep,name=options,proto3" json:"options,omitempty"` +} + +func (x *DropdbStmt) Reset() { + *x = DropdbStmt{} + if protoimpl.UnsafeEnabled { + mi := &file_pg_query_proto_msgTypes[98] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *DropdbStmt) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DropdbStmt) ProtoMessage() {} + +func (x *DropdbStmt) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[98] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use DropdbStmt.ProtoReflect.Descriptor instead. +func (*DropdbStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{98} +} + +func (x *DropdbStmt) GetDbname() string { + if x != nil { + return x.Dbname + } + return "" +} + +func (x *DropdbStmt) GetMissingOk() bool { + if x != nil { + return x.MissingOk + } + return false +} + +func (x *DropdbStmt) GetOptions() []*Node { + if x != nil { + return x.Options + } + return nil +} + +type VacuumStmt struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Options []*Node `protobuf:"bytes,1,rep,name=options,proto3" json:"options,omitempty"` + Rels []*Node `protobuf:"bytes,2,rep,name=rels,proto3" json:"rels,omitempty"` + IsVacuumcmd bool `protobuf:"varint,3,opt,name=is_vacuumcmd,proto3" json:"is_vacuumcmd,omitempty"` +} + +func (x *VacuumStmt) Reset() { + *x = VacuumStmt{} + if protoimpl.UnsafeEnabled { + mi := &file_pg_query_proto_msgTypes[99] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *VacuumStmt) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*VacuumStmt) ProtoMessage() {} + +func (x *VacuumStmt) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[99] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use VacuumStmt.ProtoReflect.Descriptor instead. +func (*VacuumStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{99} +} + +func (x *VacuumStmt) GetOptions() []*Node { + if x != nil { + return x.Options + } + return nil +} + +func (x *VacuumStmt) GetRels() []*Node { + if x != nil { + return x.Rels + } + return nil +} + +func (x *VacuumStmt) GetIsVacuumcmd() bool { + if x != nil { + return x.IsVacuumcmd + } + return false +} + +type ExplainStmt struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Query *Node `protobuf:"bytes,1,opt,name=query,proto3" json:"query,omitempty"` + Options []*Node `protobuf:"bytes,2,rep,name=options,proto3" json:"options,omitempty"` +} + +func (x *ExplainStmt) Reset() { + *x = ExplainStmt{} + if protoimpl.UnsafeEnabled { + mi := &file_pg_query_proto_msgTypes[100] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ExplainStmt) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ExplainStmt) ProtoMessage() {} + +func (x *ExplainStmt) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[100] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ExplainStmt.ProtoReflect.Descriptor instead. +func (*ExplainStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{100} +} + +func (x *ExplainStmt) GetQuery() *Node { + if x != nil { + return x.Query + } + return nil +} + +func (x *ExplainStmt) GetOptions() []*Node { + if x != nil { + return x.Options + } + return nil +} + +type CreateTableAsStmt struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Query *Node `protobuf:"bytes,1,opt,name=query,proto3" json:"query,omitempty"` + Into *IntoClause `protobuf:"bytes,2,opt,name=into,proto3" json:"into,omitempty"` + Relkind ObjectType `protobuf:"varint,3,opt,name=relkind,proto3,enum=pg_query.ObjectType" json:"relkind,omitempty"` + IsSelectInto bool `protobuf:"varint,4,opt,name=is_select_into,proto3" json:"is_select_into,omitempty"` + IfNotExists bool `protobuf:"varint,5,opt,name=if_not_exists,proto3" json:"if_not_exists,omitempty"` +} + +func (x *CreateTableAsStmt) Reset() { + *x = CreateTableAsStmt{} + if protoimpl.UnsafeEnabled { + mi := &file_pg_query_proto_msgTypes[101] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *CreateTableAsStmt) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CreateTableAsStmt) ProtoMessage() {} + +func (x *CreateTableAsStmt) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[101] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CreateTableAsStmt.ProtoReflect.Descriptor instead. +func (*CreateTableAsStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{101} +} + +func (x *CreateTableAsStmt) GetQuery() *Node { + if x != nil { + return x.Query + } + return nil +} + +func (x *CreateTableAsStmt) GetInto() *IntoClause { + if x != nil { + return x.Into + } + return nil +} + +func (x *CreateTableAsStmt) GetRelkind() ObjectType { + if x != nil { + return x.Relkind + } + return ObjectType_OBJECT_TYPE_UNDEFINED +} + +func (x *CreateTableAsStmt) GetIsSelectInto() bool { + if x != nil { + return x.IsSelectInto + } + return false +} + +func (x *CreateTableAsStmt) GetIfNotExists() bool { + if x != nil { + return x.IfNotExists + } + return false +} + +type CreateSeqStmt struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Sequence *RangeVar `protobuf:"bytes,1,opt,name=sequence,proto3" json:"sequence,omitempty"` + Options []*Node `protobuf:"bytes,2,rep,name=options,proto3" json:"options,omitempty"` + OwnerId uint32 `protobuf:"varint,3,opt,name=owner_id,json=ownerId,proto3" json:"owner_id,omitempty"` + ForIdentity bool `protobuf:"varint,4,opt,name=for_identity,proto3" json:"for_identity,omitempty"` + IfNotExists bool `protobuf:"varint,5,opt,name=if_not_exists,proto3" json:"if_not_exists,omitempty"` +} + +func (x *CreateSeqStmt) Reset() { + *x = CreateSeqStmt{} + if protoimpl.UnsafeEnabled { + mi := &file_pg_query_proto_msgTypes[102] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *CreateSeqStmt) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CreateSeqStmt) ProtoMessage() {} + +func (x *CreateSeqStmt) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[102] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CreateSeqStmt.ProtoReflect.Descriptor instead. +func (*CreateSeqStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{102} +} + +func (x *CreateSeqStmt) GetSequence() *RangeVar { + if x != nil { + return x.Sequence + } + return nil +} + +func (x *CreateSeqStmt) GetOptions() []*Node { + if x != nil { + return x.Options + } + return nil +} + +func (x *CreateSeqStmt) GetOwnerId() uint32 { + if x != nil { + return x.OwnerId + } + return 0 +} + +func (x *CreateSeqStmt) GetForIdentity() bool { + if x != nil { + return x.ForIdentity + } + return false +} + +func (x *CreateSeqStmt) GetIfNotExists() bool { + if x != nil { + return x.IfNotExists + } + return false +} + +type AlterSeqStmt struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Sequence *RangeVar `protobuf:"bytes,1,opt,name=sequence,proto3" json:"sequence,omitempty"` + Options []*Node `protobuf:"bytes,2,rep,name=options,proto3" json:"options,omitempty"` + ForIdentity bool `protobuf:"varint,3,opt,name=for_identity,proto3" json:"for_identity,omitempty"` + MissingOk bool `protobuf:"varint,4,opt,name=missing_ok,proto3" json:"missing_ok,omitempty"` +} + +func (x *AlterSeqStmt) Reset() { + *x = AlterSeqStmt{} + if protoimpl.UnsafeEnabled { + mi := &file_pg_query_proto_msgTypes[103] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *AlterSeqStmt) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*AlterSeqStmt) ProtoMessage() {} + +func (x *AlterSeqStmt) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[103] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use AlterSeqStmt.ProtoReflect.Descriptor instead. +func (*AlterSeqStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{103} +} + +func (x *AlterSeqStmt) GetSequence() *RangeVar { + if x != nil { + return x.Sequence + } + return nil +} + +func (x *AlterSeqStmt) GetOptions() []*Node { + if x != nil { + return x.Options + } + return nil +} + +func (x *AlterSeqStmt) GetForIdentity() bool { + if x != nil { + return x.ForIdentity + } + return false +} + +func (x *AlterSeqStmt) GetMissingOk() bool { + if x != nil { + return x.MissingOk + } + return false +} + +type VariableSetStmt struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Kind VariableSetKind `protobuf:"varint,1,opt,name=kind,proto3,enum=pg_query.VariableSetKind" json:"kind,omitempty"` + Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` + Args []*Node `protobuf:"bytes,3,rep,name=args,proto3" json:"args,omitempty"` + IsLocal bool `protobuf:"varint,4,opt,name=is_local,proto3" json:"is_local,omitempty"` +} + +func (x *VariableSetStmt) Reset() { + *x = VariableSetStmt{} + if protoimpl.UnsafeEnabled { + mi := &file_pg_query_proto_msgTypes[104] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *VariableSetStmt) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*VariableSetStmt) ProtoMessage() {} + +func (x *VariableSetStmt) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[104] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use VariableSetStmt.ProtoReflect.Descriptor instead. +func (*VariableSetStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{104} +} + +func (x *VariableSetStmt) GetKind() VariableSetKind { + if x != nil { + return x.Kind + } + return VariableSetKind_VARIABLE_SET_KIND_UNDEFINED +} + +func (x *VariableSetStmt) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *VariableSetStmt) GetArgs() []*Node { + if x != nil { + return x.Args + } + return nil +} + +func (x *VariableSetStmt) GetIsLocal() bool { + if x != nil { + return x.IsLocal + } + return false +} + +type VariableShowStmt struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` +} + +func (x *VariableShowStmt) Reset() { + *x = VariableShowStmt{} + if protoimpl.UnsafeEnabled { + mi := &file_pg_query_proto_msgTypes[105] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *VariableShowStmt) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*VariableShowStmt) ProtoMessage() {} + +func (x *VariableShowStmt) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[105] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use VariableShowStmt.ProtoReflect.Descriptor instead. +func (*VariableShowStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{105} +} + +func (x *VariableShowStmt) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +type DiscardStmt struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Target DiscardMode `protobuf:"varint,1,opt,name=target,proto3,enum=pg_query.DiscardMode" json:"target,omitempty"` +} + +func (x *DiscardStmt) Reset() { + *x = DiscardStmt{} + if protoimpl.UnsafeEnabled { + mi := &file_pg_query_proto_msgTypes[106] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *DiscardStmt) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DiscardStmt) ProtoMessage() {} + +func (x *DiscardStmt) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[106] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use DiscardStmt.ProtoReflect.Descriptor instead. +func (*DiscardStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{106} +} + +func (x *DiscardStmt) GetTarget() DiscardMode { + if x != nil { + return x.Target + } + return DiscardMode_DISCARD_MODE_UNDEFINED +} + +type CreateTrigStmt struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Trigname string `protobuf:"bytes,1,opt,name=trigname,proto3" json:"trigname,omitempty"` + Relation *RangeVar `protobuf:"bytes,2,opt,name=relation,proto3" json:"relation,omitempty"` + Funcname []*Node `protobuf:"bytes,3,rep,name=funcname,proto3" json:"funcname,omitempty"` + Args []*Node `protobuf:"bytes,4,rep,name=args,proto3" json:"args,omitempty"` + Row bool `protobuf:"varint,5,opt,name=row,proto3" json:"row,omitempty"` + Timing int32 `protobuf:"varint,6,opt,name=timing,proto3" json:"timing,omitempty"` + Events int32 `protobuf:"varint,7,opt,name=events,proto3" json:"events,omitempty"` + Columns []*Node `protobuf:"bytes,8,rep,name=columns,proto3" json:"columns,omitempty"` + WhenClause *Node `protobuf:"bytes,9,opt,name=when_clause,json=whenClause,proto3" json:"when_clause,omitempty"` + Isconstraint bool `protobuf:"varint,10,opt,name=isconstraint,proto3" json:"isconstraint,omitempty"` + TransitionRels []*Node `protobuf:"bytes,11,rep,name=transition_rels,json=transitionRels,proto3" json:"transition_rels,omitempty"` + Deferrable bool `protobuf:"varint,12,opt,name=deferrable,proto3" json:"deferrable,omitempty"` + Initdeferred bool `protobuf:"varint,13,opt,name=initdeferred,proto3" json:"initdeferred,omitempty"` + Constrrel *RangeVar `protobuf:"bytes,14,opt,name=constrrel,proto3" json:"constrrel,omitempty"` +} + +func (x *CreateTrigStmt) Reset() { + *x = CreateTrigStmt{} + if protoimpl.UnsafeEnabled { + mi := &file_pg_query_proto_msgTypes[107] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *CreateTrigStmt) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CreateTrigStmt) ProtoMessage() {} + +func (x *CreateTrigStmt) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[107] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CreateTrigStmt.ProtoReflect.Descriptor instead. +func (*CreateTrigStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{107} +} + +func (x *CreateTrigStmt) GetTrigname() string { + if x != nil { + return x.Trigname + } + return "" +} + +func (x *CreateTrigStmt) GetRelation() *RangeVar { + if x != nil { + return x.Relation + } + return nil +} + +func (x *CreateTrigStmt) GetFuncname() []*Node { + if x != nil { + return x.Funcname + } + return nil +} + +func (x *CreateTrigStmt) GetArgs() []*Node { + if x != nil { + return x.Args + } + return nil +} + +func (x *CreateTrigStmt) GetRow() bool { + if x != nil { + return x.Row + } + return false +} + +func (x *CreateTrigStmt) GetTiming() int32 { + if x != nil { + return x.Timing + } + return 0 +} + +func (x *CreateTrigStmt) GetEvents() int32 { + if x != nil { + return x.Events + } + return 0 +} + +func (x *CreateTrigStmt) GetColumns() []*Node { + if x != nil { + return x.Columns + } + return nil +} + +func (x *CreateTrigStmt) GetWhenClause() *Node { + if x != nil { + return x.WhenClause + } + return nil +} + +func (x *CreateTrigStmt) GetIsconstraint() bool { + if x != nil { + return x.Isconstraint + } + return false +} + +func (x *CreateTrigStmt) GetTransitionRels() []*Node { + if x != nil { + return x.TransitionRels + } + return nil +} + +func (x *CreateTrigStmt) GetDeferrable() bool { + if x != nil { + return x.Deferrable + } + return false +} + +func (x *CreateTrigStmt) GetInitdeferred() bool { + if x != nil { + return x.Initdeferred + } + return false +} + +func (x *CreateTrigStmt) GetConstrrel() *RangeVar { + if x != nil { + return x.Constrrel + } + return nil +} + +type CreatePLangStmt struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Replace bool `protobuf:"varint,1,opt,name=replace,proto3" json:"replace,omitempty"` + Plname string `protobuf:"bytes,2,opt,name=plname,proto3" json:"plname,omitempty"` + Plhandler []*Node `protobuf:"bytes,3,rep,name=plhandler,proto3" json:"plhandler,omitempty"` + Plinline []*Node `protobuf:"bytes,4,rep,name=plinline,proto3" json:"plinline,omitempty"` + Plvalidator []*Node `protobuf:"bytes,5,rep,name=plvalidator,proto3" json:"plvalidator,omitempty"` + Pltrusted bool `protobuf:"varint,6,opt,name=pltrusted,proto3" json:"pltrusted,omitempty"` +} + +func (x *CreatePLangStmt) Reset() { + *x = CreatePLangStmt{} + if protoimpl.UnsafeEnabled { + mi := &file_pg_query_proto_msgTypes[108] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *CreatePLangStmt) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CreatePLangStmt) ProtoMessage() {} + +func (x *CreatePLangStmt) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[108] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CreatePLangStmt.ProtoReflect.Descriptor instead. +func (*CreatePLangStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{108} +} + +func (x *CreatePLangStmt) GetReplace() bool { + if x != nil { + return x.Replace + } + return false +} + +func (x *CreatePLangStmt) GetPlname() string { + if x != nil { + return x.Plname + } + return "" +} + +func (x *CreatePLangStmt) GetPlhandler() []*Node { + if x != nil { + return x.Plhandler + } + return nil +} + +func (x *CreatePLangStmt) GetPlinline() []*Node { + if x != nil { + return x.Plinline + } + return nil +} + +func (x *CreatePLangStmt) GetPlvalidator() []*Node { + if x != nil { + return x.Plvalidator + } + return nil +} + +func (x *CreatePLangStmt) GetPltrusted() bool { + if x != nil { + return x.Pltrusted + } + return false +} + +type CreateRoleStmt struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + StmtType RoleStmtType `protobuf:"varint,1,opt,name=stmt_type,proto3,enum=pg_query.RoleStmtType" json:"stmt_type,omitempty"` + Role string `protobuf:"bytes,2,opt,name=role,proto3" json:"role,omitempty"` + Options []*Node `protobuf:"bytes,3,rep,name=options,proto3" json:"options,omitempty"` +} + +func (x *CreateRoleStmt) Reset() { + *x = CreateRoleStmt{} + if protoimpl.UnsafeEnabled { + mi := &file_pg_query_proto_msgTypes[109] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *CreateRoleStmt) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CreateRoleStmt) ProtoMessage() {} + +func (x *CreateRoleStmt) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[109] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CreateRoleStmt.ProtoReflect.Descriptor instead. +func (*CreateRoleStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{109} +} + +func (x *CreateRoleStmt) GetStmtType() RoleStmtType { + if x != nil { + return x.StmtType + } + return RoleStmtType_ROLE_STMT_TYPE_UNDEFINED +} + +func (x *CreateRoleStmt) GetRole() string { + if x != nil { + return x.Role + } + return "" +} + +func (x *CreateRoleStmt) GetOptions() []*Node { + if x != nil { + return x.Options + } + return nil +} + +type AlterRoleStmt struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Role *RoleSpec `protobuf:"bytes,1,opt,name=role,proto3" json:"role,omitempty"` + Options []*Node `protobuf:"bytes,2,rep,name=options,proto3" json:"options,omitempty"` + Action int32 `protobuf:"varint,3,opt,name=action,proto3" json:"action,omitempty"` +} + +func (x *AlterRoleStmt) Reset() { + *x = AlterRoleStmt{} + if protoimpl.UnsafeEnabled { + mi := &file_pg_query_proto_msgTypes[110] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *AlterRoleStmt) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*AlterRoleStmt) ProtoMessage() {} + +func (x *AlterRoleStmt) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[110] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use AlterRoleStmt.ProtoReflect.Descriptor instead. +func (*AlterRoleStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{110} +} + +func (x *AlterRoleStmt) GetRole() *RoleSpec { + if x != nil { + return x.Role + } + return nil +} + +func (x *AlterRoleStmt) GetOptions() []*Node { + if x != nil { + return x.Options + } + return nil +} + +func (x *AlterRoleStmt) GetAction() int32 { + if x != nil { + return x.Action + } + return 0 +} + +type DropRoleStmt struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Roles []*Node `protobuf:"bytes,1,rep,name=roles,proto3" json:"roles,omitempty"` + MissingOk bool `protobuf:"varint,2,opt,name=missing_ok,proto3" json:"missing_ok,omitempty"` +} + +func (x *DropRoleStmt) Reset() { + *x = DropRoleStmt{} + if protoimpl.UnsafeEnabled { + mi := &file_pg_query_proto_msgTypes[111] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *DropRoleStmt) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DropRoleStmt) ProtoMessage() {} + +func (x *DropRoleStmt) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[111] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use DropRoleStmt.ProtoReflect.Descriptor instead. +func (*DropRoleStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{111} +} + +func (x *DropRoleStmt) GetRoles() []*Node { + if x != nil { + return x.Roles + } + return nil +} + +func (x *DropRoleStmt) GetMissingOk() bool { + if x != nil { + return x.MissingOk + } + return false +} + +type LockStmt struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Relations []*Node `protobuf:"bytes,1,rep,name=relations,proto3" json:"relations,omitempty"` + Mode int32 `protobuf:"varint,2,opt,name=mode,proto3" json:"mode,omitempty"` + Nowait bool `protobuf:"varint,3,opt,name=nowait,proto3" json:"nowait,omitempty"` +} + +func (x *LockStmt) Reset() { + *x = LockStmt{} + if protoimpl.UnsafeEnabled { + mi := &file_pg_query_proto_msgTypes[112] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *LockStmt) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*LockStmt) ProtoMessage() {} + +func (x *LockStmt) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[112] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use LockStmt.ProtoReflect.Descriptor instead. +func (*LockStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{112} +} + +func (x *LockStmt) GetRelations() []*Node { + if x != nil { + return x.Relations + } + return nil +} + +func (x *LockStmt) GetMode() int32 { + if x != nil { + return x.Mode + } + return 0 +} + +func (x *LockStmt) GetNowait() bool { + if x != nil { + return x.Nowait + } + return false +} + +type ConstraintsSetStmt struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Constraints []*Node `protobuf:"bytes,1,rep,name=constraints,proto3" json:"constraints,omitempty"` + Deferred bool `protobuf:"varint,2,opt,name=deferred,proto3" json:"deferred,omitempty"` +} + +func (x *ConstraintsSetStmt) Reset() { + *x = ConstraintsSetStmt{} + if protoimpl.UnsafeEnabled { + mi := &file_pg_query_proto_msgTypes[113] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ConstraintsSetStmt) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ConstraintsSetStmt) ProtoMessage() {} + +func (x *ConstraintsSetStmt) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[113] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ConstraintsSetStmt.ProtoReflect.Descriptor instead. +func (*ConstraintsSetStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{113} +} + +func (x *ConstraintsSetStmt) GetConstraints() []*Node { + if x != nil { + return x.Constraints + } + return nil +} + +func (x *ConstraintsSetStmt) GetDeferred() bool { + if x != nil { + return x.Deferred + } + return false +} + +type ReindexStmt struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Kind ReindexObjectType `protobuf:"varint,1,opt,name=kind,proto3,enum=pg_query.ReindexObjectType" json:"kind,omitempty"` + Relation *RangeVar `protobuf:"bytes,2,opt,name=relation,proto3" json:"relation,omitempty"` + Name string `protobuf:"bytes,3,opt,name=name,proto3" json:"name,omitempty"` + Options int32 `protobuf:"varint,4,opt,name=options,proto3" json:"options,omitempty"` + Concurrent bool `protobuf:"varint,5,opt,name=concurrent,proto3" json:"concurrent,omitempty"` +} + +func (x *ReindexStmt) Reset() { + *x = ReindexStmt{} + if protoimpl.UnsafeEnabled { + mi := &file_pg_query_proto_msgTypes[114] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ReindexStmt) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ReindexStmt) ProtoMessage() {} + +func (x *ReindexStmt) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[114] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ReindexStmt.ProtoReflect.Descriptor instead. +func (*ReindexStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{114} +} + +func (x *ReindexStmt) GetKind() ReindexObjectType { + if x != nil { + return x.Kind + } + return ReindexObjectType_REINDEX_OBJECT_TYPE_UNDEFINED +} + +func (x *ReindexStmt) GetRelation() *RangeVar { + if x != nil { + return x.Relation + } + return nil +} + +func (x *ReindexStmt) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *ReindexStmt) GetOptions() int32 { + if x != nil { + return x.Options + } + return 0 +} + +func (x *ReindexStmt) GetConcurrent() bool { + if x != nil { + return x.Concurrent + } + return false +} + +type CheckPointStmt struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *CheckPointStmt) Reset() { + *x = CheckPointStmt{} + if protoimpl.UnsafeEnabled { + mi := &file_pg_query_proto_msgTypes[115] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *CheckPointStmt) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CheckPointStmt) ProtoMessage() {} + +func (x *CheckPointStmt) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[115] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CheckPointStmt.ProtoReflect.Descriptor instead. +func (*CheckPointStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{115} +} + +type CreateSchemaStmt struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Schemaname string `protobuf:"bytes,1,opt,name=schemaname,proto3" json:"schemaname,omitempty"` + Authrole *RoleSpec `protobuf:"bytes,2,opt,name=authrole,proto3" json:"authrole,omitempty"` + SchemaElts []*Node `protobuf:"bytes,3,rep,name=schema_elts,json=schemaElts,proto3" json:"schema_elts,omitempty"` + IfNotExists bool `protobuf:"varint,4,opt,name=if_not_exists,proto3" json:"if_not_exists,omitempty"` +} + +func (x *CreateSchemaStmt) Reset() { + *x = CreateSchemaStmt{} + if protoimpl.UnsafeEnabled { + mi := &file_pg_query_proto_msgTypes[116] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *CreateSchemaStmt) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CreateSchemaStmt) ProtoMessage() {} + +func (x *CreateSchemaStmt) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[116] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CreateSchemaStmt.ProtoReflect.Descriptor instead. +func (*CreateSchemaStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{116} +} + +func (x *CreateSchemaStmt) GetSchemaname() string { + if x != nil { + return x.Schemaname + } + return "" +} + +func (x *CreateSchemaStmt) GetAuthrole() *RoleSpec { + if x != nil { + return x.Authrole + } + return nil +} + +func (x *CreateSchemaStmt) GetSchemaElts() []*Node { + if x != nil { + return x.SchemaElts + } + return nil +} + +func (x *CreateSchemaStmt) GetIfNotExists() bool { + if x != nil { + return x.IfNotExists + } + return false +} + +type AlterDatabaseStmt struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Dbname string `protobuf:"bytes,1,opt,name=dbname,proto3" json:"dbname,omitempty"` + Options []*Node `protobuf:"bytes,2,rep,name=options,proto3" json:"options,omitempty"` +} + +func (x *AlterDatabaseStmt) Reset() { + *x = AlterDatabaseStmt{} + if protoimpl.UnsafeEnabled { + mi := &file_pg_query_proto_msgTypes[117] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *AlterDatabaseStmt) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*AlterDatabaseStmt) ProtoMessage() {} + +func (x *AlterDatabaseStmt) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[117] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use AlterDatabaseStmt.ProtoReflect.Descriptor instead. +func (*AlterDatabaseStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{117} +} + +func (x *AlterDatabaseStmt) GetDbname() string { + if x != nil { + return x.Dbname + } + return "" +} + +func (x *AlterDatabaseStmt) GetOptions() []*Node { + if x != nil { + return x.Options + } + return nil +} + +type AlterDatabaseSetStmt struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Dbname string `protobuf:"bytes,1,opt,name=dbname,proto3" json:"dbname,omitempty"` + Setstmt *VariableSetStmt `protobuf:"bytes,2,opt,name=setstmt,proto3" json:"setstmt,omitempty"` +} + +func (x *AlterDatabaseSetStmt) Reset() { + *x = AlterDatabaseSetStmt{} + if protoimpl.UnsafeEnabled { + mi := &file_pg_query_proto_msgTypes[118] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *AlterDatabaseSetStmt) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*AlterDatabaseSetStmt) ProtoMessage() {} + +func (x *AlterDatabaseSetStmt) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[118] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use AlterDatabaseSetStmt.ProtoReflect.Descriptor instead. +func (*AlterDatabaseSetStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{118} +} + +func (x *AlterDatabaseSetStmt) GetDbname() string { + if x != nil { + return x.Dbname + } + return "" +} + +func (x *AlterDatabaseSetStmt) GetSetstmt() *VariableSetStmt { + if x != nil { + return x.Setstmt + } + return nil +} + +type AlterRoleSetStmt struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Role *RoleSpec `protobuf:"bytes,1,opt,name=role,proto3" json:"role,omitempty"` + Database string `protobuf:"bytes,2,opt,name=database,proto3" json:"database,omitempty"` + Setstmt *VariableSetStmt `protobuf:"bytes,3,opt,name=setstmt,proto3" json:"setstmt,omitempty"` +} + +func (x *AlterRoleSetStmt) Reset() { + *x = AlterRoleSetStmt{} + if protoimpl.UnsafeEnabled { + mi := &file_pg_query_proto_msgTypes[119] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *AlterRoleSetStmt) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*AlterRoleSetStmt) ProtoMessage() {} + +func (x *AlterRoleSetStmt) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[119] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use AlterRoleSetStmt.ProtoReflect.Descriptor instead. +func (*AlterRoleSetStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{119} +} + +func (x *AlterRoleSetStmt) GetRole() *RoleSpec { + if x != nil { + return x.Role + } + return nil +} + +func (x *AlterRoleSetStmt) GetDatabase() string { + if x != nil { + return x.Database + } + return "" +} + +func (x *AlterRoleSetStmt) GetSetstmt() *VariableSetStmt { + if x != nil { + return x.Setstmt + } + return nil +} + +type CreateConversionStmt struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + ConversionName []*Node `protobuf:"bytes,1,rep,name=conversion_name,proto3" json:"conversion_name,omitempty"` + ForEncodingName string `protobuf:"bytes,2,opt,name=for_encoding_name,proto3" json:"for_encoding_name,omitempty"` + ToEncodingName string `protobuf:"bytes,3,opt,name=to_encoding_name,proto3" json:"to_encoding_name,omitempty"` + FuncName []*Node `protobuf:"bytes,4,rep,name=func_name,proto3" json:"func_name,omitempty"` + Def bool `protobuf:"varint,5,opt,name=def,proto3" json:"def,omitempty"` +} + +func (x *CreateConversionStmt) Reset() { + *x = CreateConversionStmt{} + if protoimpl.UnsafeEnabled { + mi := &file_pg_query_proto_msgTypes[120] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *CreateConversionStmt) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CreateConversionStmt) ProtoMessage() {} + +func (x *CreateConversionStmt) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[120] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CreateConversionStmt.ProtoReflect.Descriptor instead. +func (*CreateConversionStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{120} +} + +func (x *CreateConversionStmt) GetConversionName() []*Node { + if x != nil { + return x.ConversionName + } + return nil +} + +func (x *CreateConversionStmt) GetForEncodingName() string { + if x != nil { + return x.ForEncodingName + } + return "" +} + +func (x *CreateConversionStmt) GetToEncodingName() string { + if x != nil { + return x.ToEncodingName + } + return "" +} + +func (x *CreateConversionStmt) GetFuncName() []*Node { + if x != nil { + return x.FuncName + } + return nil +} + +func (x *CreateConversionStmt) GetDef() bool { + if x != nil { + return x.Def + } + return false +} + +type CreateCastStmt struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Sourcetype *TypeName `protobuf:"bytes,1,opt,name=sourcetype,proto3" json:"sourcetype,omitempty"` + Targettype *TypeName `protobuf:"bytes,2,opt,name=targettype,proto3" json:"targettype,omitempty"` + Func *ObjectWithArgs `protobuf:"bytes,3,opt,name=func,proto3" json:"func,omitempty"` + Context CoercionContext `protobuf:"varint,4,opt,name=context,proto3,enum=pg_query.CoercionContext" json:"context,omitempty"` + Inout bool `protobuf:"varint,5,opt,name=inout,proto3" json:"inout,omitempty"` +} + +func (x *CreateCastStmt) Reset() { + *x = CreateCastStmt{} + if protoimpl.UnsafeEnabled { + mi := &file_pg_query_proto_msgTypes[121] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *CreateCastStmt) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CreateCastStmt) ProtoMessage() {} + +func (x *CreateCastStmt) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[121] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CreateCastStmt.ProtoReflect.Descriptor instead. +func (*CreateCastStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{121} +} + +func (x *CreateCastStmt) GetSourcetype() *TypeName { + if x != nil { + return x.Sourcetype + } + return nil +} + +func (x *CreateCastStmt) GetTargettype() *TypeName { + if x != nil { + return x.Targettype + } + return nil +} + +func (x *CreateCastStmt) GetFunc() *ObjectWithArgs { + if x != nil { + return x.Func + } + return nil +} + +func (x *CreateCastStmt) GetContext() CoercionContext { + if x != nil { + return x.Context + } + return CoercionContext_COERCION_CONTEXT_UNDEFINED +} + +func (x *CreateCastStmt) GetInout() bool { + if x != nil { + return x.Inout + } + return false +} + +type CreateOpClassStmt struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Opclassname []*Node `protobuf:"bytes,1,rep,name=opclassname,proto3" json:"opclassname,omitempty"` + Opfamilyname []*Node `protobuf:"bytes,2,rep,name=opfamilyname,proto3" json:"opfamilyname,omitempty"` + Amname string `protobuf:"bytes,3,opt,name=amname,proto3" json:"amname,omitempty"` + Datatype *TypeName `protobuf:"bytes,4,opt,name=datatype,proto3" json:"datatype,omitempty"` + Items []*Node `protobuf:"bytes,5,rep,name=items,proto3" json:"items,omitempty"` + IsDefault bool `protobuf:"varint,6,opt,name=is_default,json=isDefault,proto3" json:"is_default,omitempty"` +} + +func (x *CreateOpClassStmt) Reset() { + *x = CreateOpClassStmt{} + if protoimpl.UnsafeEnabled { + mi := &file_pg_query_proto_msgTypes[122] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *CreateOpClassStmt) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CreateOpClassStmt) ProtoMessage() {} + +func (x *CreateOpClassStmt) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[122] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CreateOpClassStmt.ProtoReflect.Descriptor instead. +func (*CreateOpClassStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{122} +} + +func (x *CreateOpClassStmt) GetOpclassname() []*Node { + if x != nil { + return x.Opclassname + } + return nil +} + +func (x *CreateOpClassStmt) GetOpfamilyname() []*Node { + if x != nil { + return x.Opfamilyname + } + return nil +} + +func (x *CreateOpClassStmt) GetAmname() string { + if x != nil { + return x.Amname + } + return "" +} + +func (x *CreateOpClassStmt) GetDatatype() *TypeName { + if x != nil { + return x.Datatype + } + return nil +} + +func (x *CreateOpClassStmt) GetItems() []*Node { + if x != nil { + return x.Items + } + return nil +} + +func (x *CreateOpClassStmt) GetIsDefault() bool { + if x != nil { + return x.IsDefault + } + return false +} + +type CreateOpFamilyStmt struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Opfamilyname []*Node `protobuf:"bytes,1,rep,name=opfamilyname,proto3" json:"opfamilyname,omitempty"` + Amname string `protobuf:"bytes,2,opt,name=amname,proto3" json:"amname,omitempty"` +} + +func (x *CreateOpFamilyStmt) Reset() { + *x = CreateOpFamilyStmt{} + if protoimpl.UnsafeEnabled { + mi := &file_pg_query_proto_msgTypes[123] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *CreateOpFamilyStmt) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CreateOpFamilyStmt) ProtoMessage() {} + +func (x *CreateOpFamilyStmt) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[123] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CreateOpFamilyStmt.ProtoReflect.Descriptor instead. +func (*CreateOpFamilyStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{123} +} + +func (x *CreateOpFamilyStmt) GetOpfamilyname() []*Node { + if x != nil { + return x.Opfamilyname + } + return nil +} + +func (x *CreateOpFamilyStmt) GetAmname() string { + if x != nil { + return x.Amname + } + return "" +} + +type AlterOpFamilyStmt struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Opfamilyname []*Node `protobuf:"bytes,1,rep,name=opfamilyname,proto3" json:"opfamilyname,omitempty"` + Amname string `protobuf:"bytes,2,opt,name=amname,proto3" json:"amname,omitempty"` + IsDrop bool `protobuf:"varint,3,opt,name=is_drop,json=isDrop,proto3" json:"is_drop,omitempty"` + Items []*Node `protobuf:"bytes,4,rep,name=items,proto3" json:"items,omitempty"` +} + +func (x *AlterOpFamilyStmt) Reset() { + *x = AlterOpFamilyStmt{} + if protoimpl.UnsafeEnabled { + mi := &file_pg_query_proto_msgTypes[124] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *AlterOpFamilyStmt) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*AlterOpFamilyStmt) ProtoMessage() {} + +func (x *AlterOpFamilyStmt) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[124] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use AlterOpFamilyStmt.ProtoReflect.Descriptor instead. +func (*AlterOpFamilyStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{124} +} + +func (x *AlterOpFamilyStmt) GetOpfamilyname() []*Node { + if x != nil { + return x.Opfamilyname + } + return nil +} + +func (x *AlterOpFamilyStmt) GetAmname() string { + if x != nil { + return x.Amname + } + return "" +} + +func (x *AlterOpFamilyStmt) GetIsDrop() bool { + if x != nil { + return x.IsDrop + } + return false +} + +func (x *AlterOpFamilyStmt) GetItems() []*Node { + if x != nil { + return x.Items + } + return nil +} + +type PrepareStmt struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + Argtypes []*Node `protobuf:"bytes,2,rep,name=argtypes,proto3" json:"argtypes,omitempty"` + Query *Node `protobuf:"bytes,3,opt,name=query,proto3" json:"query,omitempty"` +} + +func (x *PrepareStmt) Reset() { + *x = PrepareStmt{} + if protoimpl.UnsafeEnabled { + mi := &file_pg_query_proto_msgTypes[125] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PrepareStmt) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PrepareStmt) ProtoMessage() {} + +func (x *PrepareStmt) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[125] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PrepareStmt.ProtoReflect.Descriptor instead. +func (*PrepareStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{125} +} + +func (x *PrepareStmt) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *PrepareStmt) GetArgtypes() []*Node { + if x != nil { + return x.Argtypes + } + return nil +} + +func (x *PrepareStmt) GetQuery() *Node { + if x != nil { + return x.Query + } + return nil +} + +type ExecuteStmt struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + Params []*Node `protobuf:"bytes,2,rep,name=params,proto3" json:"params,omitempty"` +} + +func (x *ExecuteStmt) Reset() { + *x = ExecuteStmt{} + if protoimpl.UnsafeEnabled { + mi := &file_pg_query_proto_msgTypes[126] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ExecuteStmt) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ExecuteStmt) ProtoMessage() {} + +func (x *ExecuteStmt) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[126] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ExecuteStmt.ProtoReflect.Descriptor instead. +func (*ExecuteStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{126} +} + +func (x *ExecuteStmt) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *ExecuteStmt) GetParams() []*Node { + if x != nil { + return x.Params + } + return nil +} + +type DeallocateStmt struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` +} + +func (x *DeallocateStmt) Reset() { + *x = DeallocateStmt{} + if protoimpl.UnsafeEnabled { + mi := &file_pg_query_proto_msgTypes[127] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *DeallocateStmt) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DeallocateStmt) ProtoMessage() {} + +func (x *DeallocateStmt) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[127] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use DeallocateStmt.ProtoReflect.Descriptor instead. +func (*DeallocateStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{127} +} + +func (x *DeallocateStmt) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +type DeclareCursorStmt struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Portalname string `protobuf:"bytes,1,opt,name=portalname,proto3" json:"portalname,omitempty"` + Options int32 `protobuf:"varint,2,opt,name=options,proto3" json:"options,omitempty"` + Query *Node `protobuf:"bytes,3,opt,name=query,proto3" json:"query,omitempty"` +} + +func (x *DeclareCursorStmt) Reset() { + *x = DeclareCursorStmt{} + if protoimpl.UnsafeEnabled { + mi := &file_pg_query_proto_msgTypes[128] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *DeclareCursorStmt) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DeclareCursorStmt) ProtoMessage() {} + +func (x *DeclareCursorStmt) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[128] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use DeclareCursorStmt.ProtoReflect.Descriptor instead. +func (*DeclareCursorStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{128} +} + +func (x *DeclareCursorStmt) GetPortalname() string { + if x != nil { + return x.Portalname + } + return "" +} + +func (x *DeclareCursorStmt) GetOptions() int32 { + if x != nil { + return x.Options + } + return 0 +} + +func (x *DeclareCursorStmt) GetQuery() *Node { + if x != nil { + return x.Query + } + return nil +} + +type CreateTableSpaceStmt struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Tablespacename string `protobuf:"bytes,1,opt,name=tablespacename,proto3" json:"tablespacename,omitempty"` + Owner *RoleSpec `protobuf:"bytes,2,opt,name=owner,proto3" json:"owner,omitempty"` + Location string `protobuf:"bytes,3,opt,name=location,proto3" json:"location,omitempty"` + Options []*Node `protobuf:"bytes,4,rep,name=options,proto3" json:"options,omitempty"` +} + +func (x *CreateTableSpaceStmt) Reset() { + *x = CreateTableSpaceStmt{} + if protoimpl.UnsafeEnabled { + mi := &file_pg_query_proto_msgTypes[129] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *CreateTableSpaceStmt) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CreateTableSpaceStmt) ProtoMessage() {} + +func (x *CreateTableSpaceStmt) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[129] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CreateTableSpaceStmt.ProtoReflect.Descriptor instead. +func (*CreateTableSpaceStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{129} +} + +func (x *CreateTableSpaceStmt) GetTablespacename() string { + if x != nil { + return x.Tablespacename + } + return "" +} + +func (x *CreateTableSpaceStmt) GetOwner() *RoleSpec { + if x != nil { + return x.Owner + } + return nil +} + +func (x *CreateTableSpaceStmt) GetLocation() string { + if x != nil { + return x.Location + } + return "" +} + +func (x *CreateTableSpaceStmt) GetOptions() []*Node { + if x != nil { + return x.Options + } + return nil +} + +type DropTableSpaceStmt struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Tablespacename string `protobuf:"bytes,1,opt,name=tablespacename,proto3" json:"tablespacename,omitempty"` + MissingOk bool `protobuf:"varint,2,opt,name=missing_ok,proto3" json:"missing_ok,omitempty"` +} + +func (x *DropTableSpaceStmt) Reset() { + *x = DropTableSpaceStmt{} + if protoimpl.UnsafeEnabled { + mi := &file_pg_query_proto_msgTypes[130] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *DropTableSpaceStmt) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DropTableSpaceStmt) ProtoMessage() {} + +func (x *DropTableSpaceStmt) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[130] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use DropTableSpaceStmt.ProtoReflect.Descriptor instead. +func (*DropTableSpaceStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{130} +} + +func (x *DropTableSpaceStmt) GetTablespacename() string { + if x != nil { + return x.Tablespacename + } + return "" +} + +func (x *DropTableSpaceStmt) GetMissingOk() bool { + if x != nil { + return x.MissingOk + } + return false +} + +type AlterObjectDependsStmt struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + ObjectType ObjectType `protobuf:"varint,1,opt,name=object_type,json=objectType,proto3,enum=pg_query.ObjectType" json:"object_type,omitempty"` + Relation *RangeVar `protobuf:"bytes,2,opt,name=relation,proto3" json:"relation,omitempty"` + Object *Node `protobuf:"bytes,3,opt,name=object,proto3" json:"object,omitempty"` + Extname *Node `protobuf:"bytes,4,opt,name=extname,proto3" json:"extname,omitempty"` + Remove bool `protobuf:"varint,5,opt,name=remove,proto3" json:"remove,omitempty"` +} + +func (x *AlterObjectDependsStmt) Reset() { + *x = AlterObjectDependsStmt{} + if protoimpl.UnsafeEnabled { + mi := &file_pg_query_proto_msgTypes[131] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *AlterObjectDependsStmt) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*AlterObjectDependsStmt) ProtoMessage() {} + +func (x *AlterObjectDependsStmt) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[131] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use AlterObjectDependsStmt.ProtoReflect.Descriptor instead. +func (*AlterObjectDependsStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{131} +} + +func (x *AlterObjectDependsStmt) GetObjectType() ObjectType { + if x != nil { + return x.ObjectType + } + return ObjectType_OBJECT_TYPE_UNDEFINED +} + +func (x *AlterObjectDependsStmt) GetRelation() *RangeVar { + if x != nil { + return x.Relation + } + return nil +} + +func (x *AlterObjectDependsStmt) GetObject() *Node { + if x != nil { + return x.Object + } + return nil +} + +func (x *AlterObjectDependsStmt) GetExtname() *Node { + if x != nil { + return x.Extname + } + return nil +} + +func (x *AlterObjectDependsStmt) GetRemove() bool { + if x != nil { + return x.Remove + } + return false +} + +type AlterObjectSchemaStmt struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + ObjectType ObjectType `protobuf:"varint,1,opt,name=object_type,json=objectType,proto3,enum=pg_query.ObjectType" json:"object_type,omitempty"` + Relation *RangeVar `protobuf:"bytes,2,opt,name=relation,proto3" json:"relation,omitempty"` + Object *Node `protobuf:"bytes,3,opt,name=object,proto3" json:"object,omitempty"` + Newschema string `protobuf:"bytes,4,opt,name=newschema,proto3" json:"newschema,omitempty"` + MissingOk bool `protobuf:"varint,5,opt,name=missing_ok,proto3" json:"missing_ok,omitempty"` +} + +func (x *AlterObjectSchemaStmt) Reset() { + *x = AlterObjectSchemaStmt{} + if protoimpl.UnsafeEnabled { + mi := &file_pg_query_proto_msgTypes[132] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *AlterObjectSchemaStmt) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*AlterObjectSchemaStmt) ProtoMessage() {} + +func (x *AlterObjectSchemaStmt) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[132] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use AlterObjectSchemaStmt.ProtoReflect.Descriptor instead. +func (*AlterObjectSchemaStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{132} +} + +func (x *AlterObjectSchemaStmt) GetObjectType() ObjectType { + if x != nil { + return x.ObjectType + } + return ObjectType_OBJECT_TYPE_UNDEFINED +} + +func (x *AlterObjectSchemaStmt) GetRelation() *RangeVar { + if x != nil { + return x.Relation + } + return nil +} + +func (x *AlterObjectSchemaStmt) GetObject() *Node { + if x != nil { + return x.Object + } + return nil +} + +func (x *AlterObjectSchemaStmt) GetNewschema() string { + if x != nil { + return x.Newschema + } + return "" +} + +func (x *AlterObjectSchemaStmt) GetMissingOk() bool { + if x != nil { + return x.MissingOk + } + return false +} + +type AlterOwnerStmt struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + ObjectType ObjectType `protobuf:"varint,1,opt,name=object_type,json=objectType,proto3,enum=pg_query.ObjectType" json:"object_type,omitempty"` + Relation *RangeVar `protobuf:"bytes,2,opt,name=relation,proto3" json:"relation,omitempty"` + Object *Node `protobuf:"bytes,3,opt,name=object,proto3" json:"object,omitempty"` + Newowner *RoleSpec `protobuf:"bytes,4,opt,name=newowner,proto3" json:"newowner,omitempty"` +} + +func (x *AlterOwnerStmt) Reset() { + *x = AlterOwnerStmt{} + if protoimpl.UnsafeEnabled { + mi := &file_pg_query_proto_msgTypes[133] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *AlterOwnerStmt) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*AlterOwnerStmt) ProtoMessage() {} + +func (x *AlterOwnerStmt) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[133] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use AlterOwnerStmt.ProtoReflect.Descriptor instead. +func (*AlterOwnerStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{133} +} + +func (x *AlterOwnerStmt) GetObjectType() ObjectType { + if x != nil { + return x.ObjectType + } + return ObjectType_OBJECT_TYPE_UNDEFINED +} + +func (x *AlterOwnerStmt) GetRelation() *RangeVar { + if x != nil { + return x.Relation + } + return nil +} + +func (x *AlterOwnerStmt) GetObject() *Node { + if x != nil { + return x.Object + } + return nil +} + +func (x *AlterOwnerStmt) GetNewowner() *RoleSpec { + if x != nil { + return x.Newowner + } + return nil +} + +type AlterOperatorStmt struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Opername *ObjectWithArgs `protobuf:"bytes,1,opt,name=opername,proto3" json:"opername,omitempty"` + Options []*Node `protobuf:"bytes,2,rep,name=options,proto3" json:"options,omitempty"` +} + +func (x *AlterOperatorStmt) Reset() { + *x = AlterOperatorStmt{} + if protoimpl.UnsafeEnabled { + mi := &file_pg_query_proto_msgTypes[134] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *AlterOperatorStmt) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*AlterOperatorStmt) ProtoMessage() {} + +func (x *AlterOperatorStmt) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[134] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use AlterOperatorStmt.ProtoReflect.Descriptor instead. +func (*AlterOperatorStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{134} +} + +func (x *AlterOperatorStmt) GetOpername() *ObjectWithArgs { + if x != nil { + return x.Opername + } + return nil +} + +func (x *AlterOperatorStmt) GetOptions() []*Node { + if x != nil { + return x.Options + } + return nil +} + +type AlterTypeStmt struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + TypeName []*Node `protobuf:"bytes,1,rep,name=type_name,json=typeName,proto3" json:"type_name,omitempty"` + Options []*Node `protobuf:"bytes,2,rep,name=options,proto3" json:"options,omitempty"` +} + +func (x *AlterTypeStmt) Reset() { + *x = AlterTypeStmt{} + if protoimpl.UnsafeEnabled { + mi := &file_pg_query_proto_msgTypes[135] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *AlterTypeStmt) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*AlterTypeStmt) ProtoMessage() {} + +func (x *AlterTypeStmt) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[135] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use AlterTypeStmt.ProtoReflect.Descriptor instead. +func (*AlterTypeStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{135} +} + +func (x *AlterTypeStmt) GetTypeName() []*Node { + if x != nil { + return x.TypeName + } + return nil +} + +func (x *AlterTypeStmt) GetOptions() []*Node { + if x != nil { + return x.Options + } + return nil +} + +type DropOwnedStmt struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Roles []*Node `protobuf:"bytes,1,rep,name=roles,proto3" json:"roles,omitempty"` + Behavior DropBehavior `protobuf:"varint,2,opt,name=behavior,proto3,enum=pg_query.DropBehavior" json:"behavior,omitempty"` +} + +func (x *DropOwnedStmt) Reset() { + *x = DropOwnedStmt{} + if protoimpl.UnsafeEnabled { + mi := &file_pg_query_proto_msgTypes[136] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *DropOwnedStmt) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DropOwnedStmt) ProtoMessage() {} + +func (x *DropOwnedStmt) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[136] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use DropOwnedStmt.ProtoReflect.Descriptor instead. +func (*DropOwnedStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{136} +} + +func (x *DropOwnedStmt) GetRoles() []*Node { + if x != nil { + return x.Roles + } + return nil +} + +func (x *DropOwnedStmt) GetBehavior() DropBehavior { + if x != nil { + return x.Behavior + } + return DropBehavior_DROP_BEHAVIOR_UNDEFINED +} + +type ReassignOwnedStmt struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Roles []*Node `protobuf:"bytes,1,rep,name=roles,proto3" json:"roles,omitempty"` + Newrole *RoleSpec `protobuf:"bytes,2,opt,name=newrole,proto3" json:"newrole,omitempty"` +} + +func (x *ReassignOwnedStmt) Reset() { + *x = ReassignOwnedStmt{} + if protoimpl.UnsafeEnabled { + mi := &file_pg_query_proto_msgTypes[137] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ReassignOwnedStmt) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ReassignOwnedStmt) ProtoMessage() {} + +func (x *ReassignOwnedStmt) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[137] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ReassignOwnedStmt.ProtoReflect.Descriptor instead. +func (*ReassignOwnedStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{137} +} + +func (x *ReassignOwnedStmt) GetRoles() []*Node { + if x != nil { + return x.Roles + } + return nil +} + +func (x *ReassignOwnedStmt) GetNewrole() *RoleSpec { + if x != nil { + return x.Newrole + } + return nil +} + +type CompositeTypeStmt struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Typevar *RangeVar `protobuf:"bytes,1,opt,name=typevar,proto3" json:"typevar,omitempty"` + Coldeflist []*Node `protobuf:"bytes,2,rep,name=coldeflist,proto3" json:"coldeflist,omitempty"` +} + +func (x *CompositeTypeStmt) Reset() { + *x = CompositeTypeStmt{} + if protoimpl.UnsafeEnabled { + mi := &file_pg_query_proto_msgTypes[138] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *CompositeTypeStmt) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CompositeTypeStmt) ProtoMessage() {} + +func (x *CompositeTypeStmt) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[138] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CompositeTypeStmt.ProtoReflect.Descriptor instead. +func (*CompositeTypeStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{138} +} + +func (x *CompositeTypeStmt) GetTypevar() *RangeVar { + if x != nil { + return x.Typevar + } + return nil +} + +func (x *CompositeTypeStmt) GetColdeflist() []*Node { + if x != nil { + return x.Coldeflist + } + return nil +} + +type CreateEnumStmt struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + TypeName []*Node `protobuf:"bytes,1,rep,name=type_name,json=typeName,proto3" json:"type_name,omitempty"` + Vals []*Node `protobuf:"bytes,2,rep,name=vals,proto3" json:"vals,omitempty"` +} + +func (x *CreateEnumStmt) Reset() { + *x = CreateEnumStmt{} + if protoimpl.UnsafeEnabled { + mi := &file_pg_query_proto_msgTypes[139] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *CreateEnumStmt) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CreateEnumStmt) ProtoMessage() {} + +func (x *CreateEnumStmt) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[139] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CreateEnumStmt.ProtoReflect.Descriptor instead. +func (*CreateEnumStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{139} +} + +func (x *CreateEnumStmt) GetTypeName() []*Node { + if x != nil { + return x.TypeName + } + return nil +} + +func (x *CreateEnumStmt) GetVals() []*Node { + if x != nil { + return x.Vals + } + return nil +} + +type CreateRangeStmt struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + TypeName []*Node `protobuf:"bytes,1,rep,name=type_name,json=typeName,proto3" json:"type_name,omitempty"` + Params []*Node `protobuf:"bytes,2,rep,name=params,proto3" json:"params,omitempty"` +} + +func (x *CreateRangeStmt) Reset() { + *x = CreateRangeStmt{} + if protoimpl.UnsafeEnabled { + mi := &file_pg_query_proto_msgTypes[140] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *CreateRangeStmt) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CreateRangeStmt) ProtoMessage() {} + +func (x *CreateRangeStmt) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[140] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CreateRangeStmt.ProtoReflect.Descriptor instead. +func (*CreateRangeStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{140} +} + +func (x *CreateRangeStmt) GetTypeName() []*Node { + if x != nil { + return x.TypeName + } + return nil +} + +func (x *CreateRangeStmt) GetParams() []*Node { + if x != nil { + return x.Params + } + return nil +} + +type AlterEnumStmt struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + TypeName []*Node `protobuf:"bytes,1,rep,name=type_name,json=typeName,proto3" json:"type_name,omitempty"` + OldVal string `protobuf:"bytes,2,opt,name=old_val,json=oldVal,proto3" json:"old_val,omitempty"` + NewVal string `protobuf:"bytes,3,opt,name=new_val,json=newVal,proto3" json:"new_val,omitempty"` + NewValNeighbor string `protobuf:"bytes,4,opt,name=new_val_neighbor,json=newValNeighbor,proto3" json:"new_val_neighbor,omitempty"` + NewValIsAfter bool `protobuf:"varint,5,opt,name=new_val_is_after,json=newValIsAfter,proto3" json:"new_val_is_after,omitempty"` + SkipIfNewValExists bool `protobuf:"varint,6,opt,name=skip_if_new_val_exists,json=skipIfNewValExists,proto3" json:"skip_if_new_val_exists,omitempty"` +} + +func (x *AlterEnumStmt) Reset() { + *x = AlterEnumStmt{} + if protoimpl.UnsafeEnabled { + mi := &file_pg_query_proto_msgTypes[141] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *AlterEnumStmt) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*AlterEnumStmt) ProtoMessage() {} + +func (x *AlterEnumStmt) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[141] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use AlterEnumStmt.ProtoReflect.Descriptor instead. +func (*AlterEnumStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{141} +} + +func (x *AlterEnumStmt) GetTypeName() []*Node { + if x != nil { + return x.TypeName + } + return nil +} + +func (x *AlterEnumStmt) GetOldVal() string { + if x != nil { + return x.OldVal + } + return "" +} + +func (x *AlterEnumStmt) GetNewVal() string { + if x != nil { + return x.NewVal + } + return "" +} + +func (x *AlterEnumStmt) GetNewValNeighbor() string { + if x != nil { + return x.NewValNeighbor + } + return "" +} + +func (x *AlterEnumStmt) GetNewValIsAfter() bool { + if x != nil { + return x.NewValIsAfter + } + return false +} + +func (x *AlterEnumStmt) GetSkipIfNewValExists() bool { + if x != nil { + return x.SkipIfNewValExists + } + return false +} + +type AlterTSDictionaryStmt struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Dictname []*Node `protobuf:"bytes,1,rep,name=dictname,proto3" json:"dictname,omitempty"` + Options []*Node `protobuf:"bytes,2,rep,name=options,proto3" json:"options,omitempty"` +} + +func (x *AlterTSDictionaryStmt) Reset() { + *x = AlterTSDictionaryStmt{} + if protoimpl.UnsafeEnabled { + mi := &file_pg_query_proto_msgTypes[142] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *AlterTSDictionaryStmt) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*AlterTSDictionaryStmt) ProtoMessage() {} + +func (x *AlterTSDictionaryStmt) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[142] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use AlterTSDictionaryStmt.ProtoReflect.Descriptor instead. +func (*AlterTSDictionaryStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{142} +} + +func (x *AlterTSDictionaryStmt) GetDictname() []*Node { + if x != nil { + return x.Dictname + } + return nil +} + +func (x *AlterTSDictionaryStmt) GetOptions() []*Node { + if x != nil { + return x.Options + } + return nil +} + +type AlterTSConfigurationStmt struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Kind AlterTSConfigType `protobuf:"varint,1,opt,name=kind,proto3,enum=pg_query.AlterTSConfigType" json:"kind,omitempty"` + Cfgname []*Node `protobuf:"bytes,2,rep,name=cfgname,proto3" json:"cfgname,omitempty"` + Tokentype []*Node `protobuf:"bytes,3,rep,name=tokentype,proto3" json:"tokentype,omitempty"` + Dicts []*Node `protobuf:"bytes,4,rep,name=dicts,proto3" json:"dicts,omitempty"` + Override bool `protobuf:"varint,5,opt,name=override,proto3" json:"override,omitempty"` + Replace bool `protobuf:"varint,6,opt,name=replace,proto3" json:"replace,omitempty"` + MissingOk bool `protobuf:"varint,7,opt,name=missing_ok,proto3" json:"missing_ok,omitempty"` +} + +func (x *AlterTSConfigurationStmt) Reset() { + *x = AlterTSConfigurationStmt{} + if protoimpl.UnsafeEnabled { + mi := &file_pg_query_proto_msgTypes[143] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *AlterTSConfigurationStmt) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*AlterTSConfigurationStmt) ProtoMessage() {} + +func (x *AlterTSConfigurationStmt) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[143] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use AlterTSConfigurationStmt.ProtoReflect.Descriptor instead. +func (*AlterTSConfigurationStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{143} +} + +func (x *AlterTSConfigurationStmt) GetKind() AlterTSConfigType { + if x != nil { + return x.Kind + } + return AlterTSConfigType_ALTER_TSCONFIG_TYPE_UNDEFINED +} + +func (x *AlterTSConfigurationStmt) GetCfgname() []*Node { + if x != nil { + return x.Cfgname + } + return nil +} + +func (x *AlterTSConfigurationStmt) GetTokentype() []*Node { + if x != nil { + return x.Tokentype + } + return nil +} + +func (x *AlterTSConfigurationStmt) GetDicts() []*Node { + if x != nil { + return x.Dicts + } + return nil +} + +func (x *AlterTSConfigurationStmt) GetOverride() bool { + if x != nil { + return x.Override + } + return false +} + +func (x *AlterTSConfigurationStmt) GetReplace() bool { + if x != nil { + return x.Replace + } + return false +} + +func (x *AlterTSConfigurationStmt) GetMissingOk() bool { + if x != nil { + return x.MissingOk + } + return false +} + +type CreateFdwStmt struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Fdwname string `protobuf:"bytes,1,opt,name=fdwname,proto3" json:"fdwname,omitempty"` + FuncOptions []*Node `protobuf:"bytes,2,rep,name=func_options,proto3" json:"func_options,omitempty"` + Options []*Node `protobuf:"bytes,3,rep,name=options,proto3" json:"options,omitempty"` +} + +func (x *CreateFdwStmt) Reset() { + *x = CreateFdwStmt{} + if protoimpl.UnsafeEnabled { + mi := &file_pg_query_proto_msgTypes[144] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *CreateFdwStmt) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CreateFdwStmt) ProtoMessage() {} + +func (x *CreateFdwStmt) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[144] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CreateFdwStmt.ProtoReflect.Descriptor instead. +func (*CreateFdwStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{144} +} + +func (x *CreateFdwStmt) GetFdwname() string { + if x != nil { + return x.Fdwname + } + return "" +} + +func (x *CreateFdwStmt) GetFuncOptions() []*Node { + if x != nil { + return x.FuncOptions + } + return nil +} + +func (x *CreateFdwStmt) GetOptions() []*Node { + if x != nil { + return x.Options + } + return nil +} + +type AlterFdwStmt struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Fdwname string `protobuf:"bytes,1,opt,name=fdwname,proto3" json:"fdwname,omitempty"` + FuncOptions []*Node `protobuf:"bytes,2,rep,name=func_options,proto3" json:"func_options,omitempty"` + Options []*Node `protobuf:"bytes,3,rep,name=options,proto3" json:"options,omitempty"` +} + +func (x *AlterFdwStmt) Reset() { + *x = AlterFdwStmt{} + if protoimpl.UnsafeEnabled { + mi := &file_pg_query_proto_msgTypes[145] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *AlterFdwStmt) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*AlterFdwStmt) ProtoMessage() {} + +func (x *AlterFdwStmt) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[145] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use AlterFdwStmt.ProtoReflect.Descriptor instead. +func (*AlterFdwStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{145} +} + +func (x *AlterFdwStmt) GetFdwname() string { + if x != nil { + return x.Fdwname + } + return "" +} + +func (x *AlterFdwStmt) GetFuncOptions() []*Node { + if x != nil { + return x.FuncOptions + } + return nil +} + +func (x *AlterFdwStmt) GetOptions() []*Node { + if x != nil { + return x.Options + } + return nil +} + +type CreateForeignServerStmt struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Servername string `protobuf:"bytes,1,opt,name=servername,proto3" json:"servername,omitempty"` + Servertype string `protobuf:"bytes,2,opt,name=servertype,proto3" json:"servertype,omitempty"` + Version string `protobuf:"bytes,3,opt,name=version,proto3" json:"version,omitempty"` + Fdwname string `protobuf:"bytes,4,opt,name=fdwname,proto3" json:"fdwname,omitempty"` + IfNotExists bool `protobuf:"varint,5,opt,name=if_not_exists,proto3" json:"if_not_exists,omitempty"` + Options []*Node `protobuf:"bytes,6,rep,name=options,proto3" json:"options,omitempty"` +} + +func (x *CreateForeignServerStmt) Reset() { + *x = CreateForeignServerStmt{} + if protoimpl.UnsafeEnabled { + mi := &file_pg_query_proto_msgTypes[146] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *CreateForeignServerStmt) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CreateForeignServerStmt) ProtoMessage() {} + +func (x *CreateForeignServerStmt) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[146] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CreateForeignServerStmt.ProtoReflect.Descriptor instead. +func (*CreateForeignServerStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{146} +} + +func (x *CreateForeignServerStmt) GetServername() string { + if x != nil { + return x.Servername + } + return "" +} + +func (x *CreateForeignServerStmt) GetServertype() string { + if x != nil { + return x.Servertype + } + return "" +} + +func (x *CreateForeignServerStmt) GetVersion() string { + if x != nil { + return x.Version + } + return "" +} + +func (x *CreateForeignServerStmt) GetFdwname() string { + if x != nil { + return x.Fdwname + } + return "" +} + +func (x *CreateForeignServerStmt) GetIfNotExists() bool { + if x != nil { + return x.IfNotExists + } + return false +} + +func (x *CreateForeignServerStmt) GetOptions() []*Node { + if x != nil { + return x.Options + } + return nil +} + +type AlterForeignServerStmt struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Servername string `protobuf:"bytes,1,opt,name=servername,proto3" json:"servername,omitempty"` + Version string `protobuf:"bytes,2,opt,name=version,proto3" json:"version,omitempty"` + Options []*Node `protobuf:"bytes,3,rep,name=options,proto3" json:"options,omitempty"` + HasVersion bool `protobuf:"varint,4,opt,name=has_version,proto3" json:"has_version,omitempty"` +} + +func (x *AlterForeignServerStmt) Reset() { + *x = AlterForeignServerStmt{} + if protoimpl.UnsafeEnabled { + mi := &file_pg_query_proto_msgTypes[147] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *AlterForeignServerStmt) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*AlterForeignServerStmt) ProtoMessage() {} + +func (x *AlterForeignServerStmt) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[147] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use AlterForeignServerStmt.ProtoReflect.Descriptor instead. +func (*AlterForeignServerStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{147} +} + +func (x *AlterForeignServerStmt) GetServername() string { + if x != nil { + return x.Servername + } + return "" +} + +func (x *AlterForeignServerStmt) GetVersion() string { + if x != nil { + return x.Version + } + return "" +} + +func (x *AlterForeignServerStmt) GetOptions() []*Node { + if x != nil { + return x.Options + } + return nil +} + +func (x *AlterForeignServerStmt) GetHasVersion() bool { + if x != nil { + return x.HasVersion + } + return false +} + +type CreateUserMappingStmt struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + User *RoleSpec `protobuf:"bytes,1,opt,name=user,proto3" json:"user,omitempty"` + Servername string `protobuf:"bytes,2,opt,name=servername,proto3" json:"servername,omitempty"` + IfNotExists bool `protobuf:"varint,3,opt,name=if_not_exists,proto3" json:"if_not_exists,omitempty"` + Options []*Node `protobuf:"bytes,4,rep,name=options,proto3" json:"options,omitempty"` +} + +func (x *CreateUserMappingStmt) Reset() { + *x = CreateUserMappingStmt{} + if protoimpl.UnsafeEnabled { + mi := &file_pg_query_proto_msgTypes[148] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *CreateUserMappingStmt) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CreateUserMappingStmt) ProtoMessage() {} + +func (x *CreateUserMappingStmt) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[148] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CreateUserMappingStmt.ProtoReflect.Descriptor instead. +func (*CreateUserMappingStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{148} +} + +func (x *CreateUserMappingStmt) GetUser() *RoleSpec { + if x != nil { + return x.User + } + return nil +} + +func (x *CreateUserMappingStmt) GetServername() string { + if x != nil { + return x.Servername + } + return "" +} + +func (x *CreateUserMappingStmt) GetIfNotExists() bool { + if x != nil { + return x.IfNotExists + } + return false +} + +func (x *CreateUserMappingStmt) GetOptions() []*Node { + if x != nil { + return x.Options + } + return nil +} + +type AlterUserMappingStmt struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + User *RoleSpec `protobuf:"bytes,1,opt,name=user,proto3" json:"user,omitempty"` + Servername string `protobuf:"bytes,2,opt,name=servername,proto3" json:"servername,omitempty"` + Options []*Node `protobuf:"bytes,3,rep,name=options,proto3" json:"options,omitempty"` +} + +func (x *AlterUserMappingStmt) Reset() { + *x = AlterUserMappingStmt{} + if protoimpl.UnsafeEnabled { + mi := &file_pg_query_proto_msgTypes[149] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *AlterUserMappingStmt) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*AlterUserMappingStmt) ProtoMessage() {} + +func (x *AlterUserMappingStmt) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[149] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use AlterUserMappingStmt.ProtoReflect.Descriptor instead. +func (*AlterUserMappingStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{149} +} + +func (x *AlterUserMappingStmt) GetUser() *RoleSpec { + if x != nil { + return x.User + } + return nil +} + +func (x *AlterUserMappingStmt) GetServername() string { + if x != nil { + return x.Servername + } + return "" +} + +func (x *AlterUserMappingStmt) GetOptions() []*Node { + if x != nil { + return x.Options + } + return nil +} + +type DropUserMappingStmt struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + User *RoleSpec `protobuf:"bytes,1,opt,name=user,proto3" json:"user,omitempty"` + Servername string `protobuf:"bytes,2,opt,name=servername,proto3" json:"servername,omitempty"` + MissingOk bool `protobuf:"varint,3,opt,name=missing_ok,proto3" json:"missing_ok,omitempty"` +} + +func (x *DropUserMappingStmt) Reset() { + *x = DropUserMappingStmt{} + if protoimpl.UnsafeEnabled { + mi := &file_pg_query_proto_msgTypes[150] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *DropUserMappingStmt) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DropUserMappingStmt) ProtoMessage() {} + +func (x *DropUserMappingStmt) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[150] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use DropUserMappingStmt.ProtoReflect.Descriptor instead. +func (*DropUserMappingStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{150} +} + +func (x *DropUserMappingStmt) GetUser() *RoleSpec { + if x != nil { + return x.User + } + return nil +} + +func (x *DropUserMappingStmt) GetServername() string { + if x != nil { + return x.Servername + } + return "" +} + +func (x *DropUserMappingStmt) GetMissingOk() bool { + if x != nil { + return x.MissingOk + } + return false +} + +type AlterTableSpaceOptionsStmt struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Tablespacename string `protobuf:"bytes,1,opt,name=tablespacename,proto3" json:"tablespacename,omitempty"` + Options []*Node `protobuf:"bytes,2,rep,name=options,proto3" json:"options,omitempty"` + IsReset bool `protobuf:"varint,3,opt,name=is_reset,json=isReset,proto3" json:"is_reset,omitempty"` +} + +func (x *AlterTableSpaceOptionsStmt) Reset() { + *x = AlterTableSpaceOptionsStmt{} + if protoimpl.UnsafeEnabled { + mi := &file_pg_query_proto_msgTypes[151] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *AlterTableSpaceOptionsStmt) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*AlterTableSpaceOptionsStmt) ProtoMessage() {} + +func (x *AlterTableSpaceOptionsStmt) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[151] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use AlterTableSpaceOptionsStmt.ProtoReflect.Descriptor instead. +func (*AlterTableSpaceOptionsStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{151} +} + +func (x *AlterTableSpaceOptionsStmt) GetTablespacename() string { + if x != nil { + return x.Tablespacename + } + return "" +} + +func (x *AlterTableSpaceOptionsStmt) GetOptions() []*Node { + if x != nil { + return x.Options + } + return nil +} + +func (x *AlterTableSpaceOptionsStmt) GetIsReset() bool { + if x != nil { + return x.IsReset + } + return false +} + +type AlterTableMoveAllStmt struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + OrigTablespacename string `protobuf:"bytes,1,opt,name=orig_tablespacename,proto3" json:"orig_tablespacename,omitempty"` + Objtype ObjectType `protobuf:"varint,2,opt,name=objtype,proto3,enum=pg_query.ObjectType" json:"objtype,omitempty"` + Roles []*Node `protobuf:"bytes,3,rep,name=roles,proto3" json:"roles,omitempty"` + NewTablespacename string `protobuf:"bytes,4,opt,name=new_tablespacename,proto3" json:"new_tablespacename,omitempty"` + Nowait bool `protobuf:"varint,5,opt,name=nowait,proto3" json:"nowait,omitempty"` +} + +func (x *AlterTableMoveAllStmt) Reset() { + *x = AlterTableMoveAllStmt{} + if protoimpl.UnsafeEnabled { + mi := &file_pg_query_proto_msgTypes[152] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *AlterTableMoveAllStmt) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*AlterTableMoveAllStmt) ProtoMessage() {} + +func (x *AlterTableMoveAllStmt) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[152] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use AlterTableMoveAllStmt.ProtoReflect.Descriptor instead. +func (*AlterTableMoveAllStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{152} +} + +func (x *AlterTableMoveAllStmt) GetOrigTablespacename() string { + if x != nil { + return x.OrigTablespacename + } + return "" +} + +func (x *AlterTableMoveAllStmt) GetObjtype() ObjectType { + if x != nil { + return x.Objtype + } + return ObjectType_OBJECT_TYPE_UNDEFINED +} + +func (x *AlterTableMoveAllStmt) GetRoles() []*Node { + if x != nil { + return x.Roles + } + return nil +} + +func (x *AlterTableMoveAllStmt) GetNewTablespacename() string { + if x != nil { + return x.NewTablespacename + } + return "" +} + +func (x *AlterTableMoveAllStmt) GetNowait() bool { + if x != nil { + return x.Nowait + } + return false +} + +type SecLabelStmt struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Objtype ObjectType `protobuf:"varint,1,opt,name=objtype,proto3,enum=pg_query.ObjectType" json:"objtype,omitempty"` + Object *Node `protobuf:"bytes,2,opt,name=object,proto3" json:"object,omitempty"` + Provider string `protobuf:"bytes,3,opt,name=provider,proto3" json:"provider,omitempty"` + Label string `protobuf:"bytes,4,opt,name=label,proto3" json:"label,omitempty"` +} + +func (x *SecLabelStmt) Reset() { + *x = SecLabelStmt{} + if protoimpl.UnsafeEnabled { + mi := &file_pg_query_proto_msgTypes[153] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *SecLabelStmt) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SecLabelStmt) ProtoMessage() {} + +func (x *SecLabelStmt) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[153] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SecLabelStmt.ProtoReflect.Descriptor instead. +func (*SecLabelStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{153} +} + +func (x *SecLabelStmt) GetObjtype() ObjectType { + if x != nil { + return x.Objtype + } + return ObjectType_OBJECT_TYPE_UNDEFINED +} + +func (x *SecLabelStmt) GetObject() *Node { + if x != nil { + return x.Object + } + return nil +} + +func (x *SecLabelStmt) GetProvider() string { + if x != nil { + return x.Provider + } + return "" +} + +func (x *SecLabelStmt) GetLabel() string { + if x != nil { + return x.Label + } + return "" +} + +type CreateForeignTableStmt struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + BaseStmt *CreateStmt `protobuf:"bytes,1,opt,name=base_stmt,json=base,proto3" json:"base_stmt,omitempty"` + Servername string `protobuf:"bytes,2,opt,name=servername,proto3" json:"servername,omitempty"` + Options []*Node `protobuf:"bytes,3,rep,name=options,proto3" json:"options,omitempty"` +} + +func (x *CreateForeignTableStmt) Reset() { + *x = CreateForeignTableStmt{} + if protoimpl.UnsafeEnabled { + mi := &file_pg_query_proto_msgTypes[154] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *CreateForeignTableStmt) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CreateForeignTableStmt) ProtoMessage() {} + +func (x *CreateForeignTableStmt) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[154] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CreateForeignTableStmt.ProtoReflect.Descriptor instead. +func (*CreateForeignTableStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{154} +} + +func (x *CreateForeignTableStmt) GetBaseStmt() *CreateStmt { + if x != nil { + return x.BaseStmt + } + return nil +} + +func (x *CreateForeignTableStmt) GetServername() string { + if x != nil { + return x.Servername + } + return "" +} + +func (x *CreateForeignTableStmt) GetOptions() []*Node { + if x != nil { + return x.Options + } + return nil +} + +type ImportForeignSchemaStmt struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + ServerName string `protobuf:"bytes,1,opt,name=server_name,proto3" json:"server_name,omitempty"` + RemoteSchema string `protobuf:"bytes,2,opt,name=remote_schema,proto3" json:"remote_schema,omitempty"` + LocalSchema string `protobuf:"bytes,3,opt,name=local_schema,proto3" json:"local_schema,omitempty"` + ListType ImportForeignSchemaType `protobuf:"varint,4,opt,name=list_type,proto3,enum=pg_query.ImportForeignSchemaType" json:"list_type,omitempty"` + TableList []*Node `protobuf:"bytes,5,rep,name=table_list,proto3" json:"table_list,omitempty"` + Options []*Node `protobuf:"bytes,6,rep,name=options,proto3" json:"options,omitempty"` +} + +func (x *ImportForeignSchemaStmt) Reset() { + *x = ImportForeignSchemaStmt{} + if protoimpl.UnsafeEnabled { + mi := &file_pg_query_proto_msgTypes[155] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ImportForeignSchemaStmt) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ImportForeignSchemaStmt) ProtoMessage() {} + +func (x *ImportForeignSchemaStmt) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[155] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ImportForeignSchemaStmt.ProtoReflect.Descriptor instead. +func (*ImportForeignSchemaStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{155} +} + +func (x *ImportForeignSchemaStmt) GetServerName() string { + if x != nil { + return x.ServerName + } + return "" +} + +func (x *ImportForeignSchemaStmt) GetRemoteSchema() string { + if x != nil { + return x.RemoteSchema + } + return "" +} + +func (x *ImportForeignSchemaStmt) GetLocalSchema() string { + if x != nil { + return x.LocalSchema + } + return "" +} + +func (x *ImportForeignSchemaStmt) GetListType() ImportForeignSchemaType { + if x != nil { + return x.ListType + } + return ImportForeignSchemaType_IMPORT_FOREIGN_SCHEMA_TYPE_UNDEFINED +} + +func (x *ImportForeignSchemaStmt) GetTableList() []*Node { + if x != nil { + return x.TableList + } + return nil +} + +func (x *ImportForeignSchemaStmt) GetOptions() []*Node { + if x != nil { + return x.Options + } + return nil +} + +type CreateExtensionStmt struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Extname string `protobuf:"bytes,1,opt,name=extname,proto3" json:"extname,omitempty"` + IfNotExists bool `protobuf:"varint,2,opt,name=if_not_exists,proto3" json:"if_not_exists,omitempty"` + Options []*Node `protobuf:"bytes,3,rep,name=options,proto3" json:"options,omitempty"` +} + +func (x *CreateExtensionStmt) Reset() { + *x = CreateExtensionStmt{} + if protoimpl.UnsafeEnabled { + mi := &file_pg_query_proto_msgTypes[156] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *CreateExtensionStmt) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CreateExtensionStmt) ProtoMessage() {} + +func (x *CreateExtensionStmt) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[156] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CreateExtensionStmt.ProtoReflect.Descriptor instead. +func (*CreateExtensionStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{156} +} + +func (x *CreateExtensionStmt) GetExtname() string { + if x != nil { + return x.Extname + } + return "" +} + +func (x *CreateExtensionStmt) GetIfNotExists() bool { + if x != nil { + return x.IfNotExists + } + return false +} + +func (x *CreateExtensionStmt) GetOptions() []*Node { + if x != nil { + return x.Options + } + return nil +} + +type AlterExtensionStmt struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Extname string `protobuf:"bytes,1,opt,name=extname,proto3" json:"extname,omitempty"` + Options []*Node `protobuf:"bytes,2,rep,name=options,proto3" json:"options,omitempty"` +} + +func (x *AlterExtensionStmt) Reset() { + *x = AlterExtensionStmt{} + if protoimpl.UnsafeEnabled { + mi := &file_pg_query_proto_msgTypes[157] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *AlterExtensionStmt) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*AlterExtensionStmt) ProtoMessage() {} + +func (x *AlterExtensionStmt) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[157] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use AlterExtensionStmt.ProtoReflect.Descriptor instead. +func (*AlterExtensionStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{157} +} + +func (x *AlterExtensionStmt) GetExtname() string { + if x != nil { + return x.Extname + } + return "" +} + +func (x *AlterExtensionStmt) GetOptions() []*Node { + if x != nil { + return x.Options + } + return nil +} + +type AlterExtensionContentsStmt struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Extname string `protobuf:"bytes,1,opt,name=extname,proto3" json:"extname,omitempty"` + Action int32 `protobuf:"varint,2,opt,name=action,proto3" json:"action,omitempty"` + Objtype ObjectType `protobuf:"varint,3,opt,name=objtype,proto3,enum=pg_query.ObjectType" json:"objtype,omitempty"` + Object *Node `protobuf:"bytes,4,opt,name=object,proto3" json:"object,omitempty"` +} + +func (x *AlterExtensionContentsStmt) Reset() { + *x = AlterExtensionContentsStmt{} + if protoimpl.UnsafeEnabled { + mi := &file_pg_query_proto_msgTypes[158] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *AlterExtensionContentsStmt) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*AlterExtensionContentsStmt) ProtoMessage() {} + +func (x *AlterExtensionContentsStmt) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[158] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use AlterExtensionContentsStmt.ProtoReflect.Descriptor instead. +func (*AlterExtensionContentsStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{158} +} + +func (x *AlterExtensionContentsStmt) GetExtname() string { + if x != nil { + return x.Extname + } + return "" +} + +func (x *AlterExtensionContentsStmt) GetAction() int32 { + if x != nil { + return x.Action + } + return 0 +} + +func (x *AlterExtensionContentsStmt) GetObjtype() ObjectType { + if x != nil { + return x.Objtype + } + return ObjectType_OBJECT_TYPE_UNDEFINED +} + +func (x *AlterExtensionContentsStmt) GetObject() *Node { + if x != nil { + return x.Object + } + return nil +} + +type CreateEventTrigStmt struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Trigname string `protobuf:"bytes,1,opt,name=trigname,proto3" json:"trigname,omitempty"` + Eventname string `protobuf:"bytes,2,opt,name=eventname,proto3" json:"eventname,omitempty"` + Whenclause []*Node `protobuf:"bytes,3,rep,name=whenclause,proto3" json:"whenclause,omitempty"` + Funcname []*Node `protobuf:"bytes,4,rep,name=funcname,proto3" json:"funcname,omitempty"` +} + +func (x *CreateEventTrigStmt) Reset() { + *x = CreateEventTrigStmt{} + if protoimpl.UnsafeEnabled { + mi := &file_pg_query_proto_msgTypes[159] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *CreateEventTrigStmt) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CreateEventTrigStmt) ProtoMessage() {} + +func (x *CreateEventTrigStmt) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[159] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CreateEventTrigStmt.ProtoReflect.Descriptor instead. +func (*CreateEventTrigStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{159} +} + +func (x *CreateEventTrigStmt) GetTrigname() string { + if x != nil { + return x.Trigname + } + return "" +} + +func (x *CreateEventTrigStmt) GetEventname() string { + if x != nil { + return x.Eventname + } + return "" +} + +func (x *CreateEventTrigStmt) GetWhenclause() []*Node { + if x != nil { + return x.Whenclause + } + return nil +} + +func (x *CreateEventTrigStmt) GetFuncname() []*Node { + if x != nil { + return x.Funcname + } + return nil +} + +type AlterEventTrigStmt struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Trigname string `protobuf:"bytes,1,opt,name=trigname,proto3" json:"trigname,omitempty"` + Tgenabled string `protobuf:"bytes,2,opt,name=tgenabled,proto3" json:"tgenabled,omitempty"` +} + +func (x *AlterEventTrigStmt) Reset() { + *x = AlterEventTrigStmt{} + if protoimpl.UnsafeEnabled { + mi := &file_pg_query_proto_msgTypes[160] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *AlterEventTrigStmt) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*AlterEventTrigStmt) ProtoMessage() {} + +func (x *AlterEventTrigStmt) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[160] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use AlterEventTrigStmt.ProtoReflect.Descriptor instead. +func (*AlterEventTrigStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{160} +} + +func (x *AlterEventTrigStmt) GetTrigname() string { + if x != nil { + return x.Trigname + } + return "" +} + +func (x *AlterEventTrigStmt) GetTgenabled() string { + if x != nil { + return x.Tgenabled + } + return "" +} + +type RefreshMatViewStmt struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Concurrent bool `protobuf:"varint,1,opt,name=concurrent,proto3" json:"concurrent,omitempty"` + SkipData bool `protobuf:"varint,2,opt,name=skip_data,json=skipData,proto3" json:"skip_data,omitempty"` + Relation *RangeVar `protobuf:"bytes,3,opt,name=relation,proto3" json:"relation,omitempty"` +} + +func (x *RefreshMatViewStmt) Reset() { + *x = RefreshMatViewStmt{} + if protoimpl.UnsafeEnabled { + mi := &file_pg_query_proto_msgTypes[161] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *RefreshMatViewStmt) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*RefreshMatViewStmt) ProtoMessage() {} + +func (x *RefreshMatViewStmt) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[161] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use RefreshMatViewStmt.ProtoReflect.Descriptor instead. +func (*RefreshMatViewStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{161} +} + +func (x *RefreshMatViewStmt) GetConcurrent() bool { + if x != nil { + return x.Concurrent + } + return false +} + +func (x *RefreshMatViewStmt) GetSkipData() bool { + if x != nil { + return x.SkipData + } + return false +} + +func (x *RefreshMatViewStmt) GetRelation() *RangeVar { + if x != nil { + return x.Relation + } + return nil +} + +type ReplicaIdentityStmt struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + IdentityType string `protobuf:"bytes,1,opt,name=identity_type,proto3" json:"identity_type,omitempty"` + Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` +} + +func (x *ReplicaIdentityStmt) Reset() { + *x = ReplicaIdentityStmt{} + if protoimpl.UnsafeEnabled { + mi := &file_pg_query_proto_msgTypes[162] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ReplicaIdentityStmt) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ReplicaIdentityStmt) ProtoMessage() {} + +func (x *ReplicaIdentityStmt) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[162] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ReplicaIdentityStmt.ProtoReflect.Descriptor instead. +func (*ReplicaIdentityStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{162} +} + +func (x *ReplicaIdentityStmt) GetIdentityType() string { + if x != nil { + return x.IdentityType + } + return "" +} + +func (x *ReplicaIdentityStmt) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +type AlterSystemStmt struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Setstmt *VariableSetStmt `protobuf:"bytes,1,opt,name=setstmt,proto3" json:"setstmt,omitempty"` +} + +func (x *AlterSystemStmt) Reset() { + *x = AlterSystemStmt{} + if protoimpl.UnsafeEnabled { + mi := &file_pg_query_proto_msgTypes[163] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *AlterSystemStmt) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*AlterSystemStmt) ProtoMessage() {} + +func (x *AlterSystemStmt) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[163] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use AlterSystemStmt.ProtoReflect.Descriptor instead. +func (*AlterSystemStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{163} +} + +func (x *AlterSystemStmt) GetSetstmt() *VariableSetStmt { + if x != nil { + return x.Setstmt + } + return nil +} + +type CreatePolicyStmt struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + PolicyName string `protobuf:"bytes,1,opt,name=policy_name,proto3" json:"policy_name,omitempty"` + Table *RangeVar `protobuf:"bytes,2,opt,name=table,proto3" json:"table,omitempty"` + CmdName string `protobuf:"bytes,3,opt,name=cmd_name,proto3" json:"cmd_name,omitempty"` + Permissive bool `protobuf:"varint,4,opt,name=permissive,proto3" json:"permissive,omitempty"` + Roles []*Node `protobuf:"bytes,5,rep,name=roles,proto3" json:"roles,omitempty"` + Qual *Node `protobuf:"bytes,6,opt,name=qual,proto3" json:"qual,omitempty"` + WithCheck *Node `protobuf:"bytes,7,opt,name=with_check,proto3" json:"with_check,omitempty"` +} + +func (x *CreatePolicyStmt) Reset() { + *x = CreatePolicyStmt{} + if protoimpl.UnsafeEnabled { + mi := &file_pg_query_proto_msgTypes[164] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *CreatePolicyStmt) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CreatePolicyStmt) ProtoMessage() {} + +func (x *CreatePolicyStmt) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[164] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CreatePolicyStmt.ProtoReflect.Descriptor instead. +func (*CreatePolicyStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{164} +} + +func (x *CreatePolicyStmt) GetPolicyName() string { + if x != nil { + return x.PolicyName + } + return "" +} + +func (x *CreatePolicyStmt) GetTable() *RangeVar { + if x != nil { + return x.Table + } + return nil +} + +func (x *CreatePolicyStmt) GetCmdName() string { + if x != nil { + return x.CmdName + } + return "" +} + +func (x *CreatePolicyStmt) GetPermissive() bool { + if x != nil { + return x.Permissive + } + return false +} + +func (x *CreatePolicyStmt) GetRoles() []*Node { + if x != nil { + return x.Roles + } + return nil +} + +func (x *CreatePolicyStmt) GetQual() *Node { + if x != nil { + return x.Qual + } + return nil +} + +func (x *CreatePolicyStmt) GetWithCheck() *Node { + if x != nil { + return x.WithCheck + } + return nil +} + +type AlterPolicyStmt struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + PolicyName string `protobuf:"bytes,1,opt,name=policy_name,proto3" json:"policy_name,omitempty"` + Table *RangeVar `protobuf:"bytes,2,opt,name=table,proto3" json:"table,omitempty"` + Roles []*Node `protobuf:"bytes,3,rep,name=roles,proto3" json:"roles,omitempty"` + Qual *Node `protobuf:"bytes,4,opt,name=qual,proto3" json:"qual,omitempty"` + WithCheck *Node `protobuf:"bytes,5,opt,name=with_check,proto3" json:"with_check,omitempty"` +} + +func (x *AlterPolicyStmt) Reset() { + *x = AlterPolicyStmt{} + if protoimpl.UnsafeEnabled { + mi := &file_pg_query_proto_msgTypes[165] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *AlterPolicyStmt) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*AlterPolicyStmt) ProtoMessage() {} + +func (x *AlterPolicyStmt) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[165] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use AlterPolicyStmt.ProtoReflect.Descriptor instead. +func (*AlterPolicyStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{165} +} + +func (x *AlterPolicyStmt) GetPolicyName() string { + if x != nil { + return x.PolicyName + } + return "" +} + +func (x *AlterPolicyStmt) GetTable() *RangeVar { + if x != nil { + return x.Table + } + return nil +} + +func (x *AlterPolicyStmt) GetRoles() []*Node { + if x != nil { + return x.Roles + } + return nil +} + +func (x *AlterPolicyStmt) GetQual() *Node { + if x != nil { + return x.Qual + } + return nil +} + +func (x *AlterPolicyStmt) GetWithCheck() *Node { + if x != nil { + return x.WithCheck + } + return nil +} + +type CreateTransformStmt struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Replace bool `protobuf:"varint,1,opt,name=replace,proto3" json:"replace,omitempty"` + TypeName *TypeName `protobuf:"bytes,2,opt,name=type_name,proto3" json:"type_name,omitempty"` + Lang string `protobuf:"bytes,3,opt,name=lang,proto3" json:"lang,omitempty"` + Fromsql *ObjectWithArgs `protobuf:"bytes,4,opt,name=fromsql,proto3" json:"fromsql,omitempty"` + Tosql *ObjectWithArgs `protobuf:"bytes,5,opt,name=tosql,proto3" json:"tosql,omitempty"` +} + +func (x *CreateTransformStmt) Reset() { + *x = CreateTransformStmt{} + if protoimpl.UnsafeEnabled { + mi := &file_pg_query_proto_msgTypes[166] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *CreateTransformStmt) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CreateTransformStmt) ProtoMessage() {} + +func (x *CreateTransformStmt) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[166] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CreateTransformStmt.ProtoReflect.Descriptor instead. +func (*CreateTransformStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{166} +} + +func (x *CreateTransformStmt) GetReplace() bool { + if x != nil { + return x.Replace + } + return false +} + +func (x *CreateTransformStmt) GetTypeName() *TypeName { + if x != nil { + return x.TypeName + } + return nil +} + +func (x *CreateTransformStmt) GetLang() string { + if x != nil { + return x.Lang + } + return "" +} + +func (x *CreateTransformStmt) GetFromsql() *ObjectWithArgs { + if x != nil { + return x.Fromsql + } + return nil +} + +func (x *CreateTransformStmt) GetTosql() *ObjectWithArgs { + if x != nil { + return x.Tosql + } + return nil +} + +type CreateAmStmt struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Amname string `protobuf:"bytes,1,opt,name=amname,proto3" json:"amname,omitempty"` + HandlerName []*Node `protobuf:"bytes,2,rep,name=handler_name,proto3" json:"handler_name,omitempty"` + Amtype string `protobuf:"bytes,3,opt,name=amtype,proto3" json:"amtype,omitempty"` +} + +func (x *CreateAmStmt) Reset() { + *x = CreateAmStmt{} + if protoimpl.UnsafeEnabled { + mi := &file_pg_query_proto_msgTypes[167] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *CreateAmStmt) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CreateAmStmt) ProtoMessage() {} + +func (x *CreateAmStmt) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[167] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CreateAmStmt.ProtoReflect.Descriptor instead. +func (*CreateAmStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{167} +} + +func (x *CreateAmStmt) GetAmname() string { + if x != nil { + return x.Amname + } + return "" +} + +func (x *CreateAmStmt) GetHandlerName() []*Node { + if x != nil { + return x.HandlerName + } + return nil +} + +func (x *CreateAmStmt) GetAmtype() string { + if x != nil { + return x.Amtype + } + return "" +} + +type CreatePublicationStmt struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Pubname string `protobuf:"bytes,1,opt,name=pubname,proto3" json:"pubname,omitempty"` + Options []*Node `protobuf:"bytes,2,rep,name=options,proto3" json:"options,omitempty"` + Tables []*Node `protobuf:"bytes,3,rep,name=tables,proto3" json:"tables,omitempty"` + ForAllTables bool `protobuf:"varint,4,opt,name=for_all_tables,proto3" json:"for_all_tables,omitempty"` +} + +func (x *CreatePublicationStmt) Reset() { + *x = CreatePublicationStmt{} + if protoimpl.UnsafeEnabled { + mi := &file_pg_query_proto_msgTypes[168] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *CreatePublicationStmt) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CreatePublicationStmt) ProtoMessage() {} + +func (x *CreatePublicationStmt) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[168] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CreatePublicationStmt.ProtoReflect.Descriptor instead. +func (*CreatePublicationStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{168} +} + +func (x *CreatePublicationStmt) GetPubname() string { + if x != nil { + return x.Pubname + } + return "" +} + +func (x *CreatePublicationStmt) GetOptions() []*Node { + if x != nil { + return x.Options + } + return nil +} + +func (x *CreatePublicationStmt) GetTables() []*Node { + if x != nil { + return x.Tables + } + return nil +} + +func (x *CreatePublicationStmt) GetForAllTables() bool { + if x != nil { + return x.ForAllTables + } + return false +} + +type AlterPublicationStmt struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Pubname string `protobuf:"bytes,1,opt,name=pubname,proto3" json:"pubname,omitempty"` + Options []*Node `protobuf:"bytes,2,rep,name=options,proto3" json:"options,omitempty"` + Tables []*Node `protobuf:"bytes,3,rep,name=tables,proto3" json:"tables,omitempty"` + ForAllTables bool `protobuf:"varint,4,opt,name=for_all_tables,proto3" json:"for_all_tables,omitempty"` + TableAction DefElemAction `protobuf:"varint,5,opt,name=table_action,json=tableAction,proto3,enum=pg_query.DefElemAction" json:"table_action,omitempty"` +} + +func (x *AlterPublicationStmt) Reset() { + *x = AlterPublicationStmt{} + if protoimpl.UnsafeEnabled { + mi := &file_pg_query_proto_msgTypes[169] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *AlterPublicationStmt) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*AlterPublicationStmt) ProtoMessage() {} + +func (x *AlterPublicationStmt) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[169] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use AlterPublicationStmt.ProtoReflect.Descriptor instead. +func (*AlterPublicationStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{169} +} + +func (x *AlterPublicationStmt) GetPubname() string { + if x != nil { + return x.Pubname + } + return "" +} + +func (x *AlterPublicationStmt) GetOptions() []*Node { + if x != nil { + return x.Options + } + return nil +} + +func (x *AlterPublicationStmt) GetTables() []*Node { + if x != nil { + return x.Tables + } + return nil +} + +func (x *AlterPublicationStmt) GetForAllTables() bool { + if x != nil { + return x.ForAllTables + } + return false +} + +func (x *AlterPublicationStmt) GetTableAction() DefElemAction { + if x != nil { + return x.TableAction + } + return DefElemAction_DEF_ELEM_ACTION_UNDEFINED +} + +type CreateSubscriptionStmt struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Subname string `protobuf:"bytes,1,opt,name=subname,proto3" json:"subname,omitempty"` + Conninfo string `protobuf:"bytes,2,opt,name=conninfo,proto3" json:"conninfo,omitempty"` + Publication []*Node `protobuf:"bytes,3,rep,name=publication,proto3" json:"publication,omitempty"` + Options []*Node `protobuf:"bytes,4,rep,name=options,proto3" json:"options,omitempty"` +} + +func (x *CreateSubscriptionStmt) Reset() { + *x = CreateSubscriptionStmt{} + if protoimpl.UnsafeEnabled { + mi := &file_pg_query_proto_msgTypes[170] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *CreateSubscriptionStmt) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CreateSubscriptionStmt) ProtoMessage() {} + +func (x *CreateSubscriptionStmt) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[170] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CreateSubscriptionStmt.ProtoReflect.Descriptor instead. +func (*CreateSubscriptionStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{170} +} + +func (x *CreateSubscriptionStmt) GetSubname() string { + if x != nil { + return x.Subname + } + return "" +} + +func (x *CreateSubscriptionStmt) GetConninfo() string { + if x != nil { + return x.Conninfo + } + return "" +} + +func (x *CreateSubscriptionStmt) GetPublication() []*Node { + if x != nil { + return x.Publication + } + return nil +} + +func (x *CreateSubscriptionStmt) GetOptions() []*Node { + if x != nil { + return x.Options + } + return nil +} + +type AlterSubscriptionStmt struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Kind AlterSubscriptionType `protobuf:"varint,1,opt,name=kind,proto3,enum=pg_query.AlterSubscriptionType" json:"kind,omitempty"` + Subname string `protobuf:"bytes,2,opt,name=subname,proto3" json:"subname,omitempty"` + Conninfo string `protobuf:"bytes,3,opt,name=conninfo,proto3" json:"conninfo,omitempty"` + Publication []*Node `protobuf:"bytes,4,rep,name=publication,proto3" json:"publication,omitempty"` + Options []*Node `protobuf:"bytes,5,rep,name=options,proto3" json:"options,omitempty"` +} + +func (x *AlterSubscriptionStmt) Reset() { + *x = AlterSubscriptionStmt{} + if protoimpl.UnsafeEnabled { + mi := &file_pg_query_proto_msgTypes[171] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *AlterSubscriptionStmt) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*AlterSubscriptionStmt) ProtoMessage() {} + +func (x *AlterSubscriptionStmt) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[171] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use AlterSubscriptionStmt.ProtoReflect.Descriptor instead. +func (*AlterSubscriptionStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{171} +} + +func (x *AlterSubscriptionStmt) GetKind() AlterSubscriptionType { + if x != nil { + return x.Kind + } + return AlterSubscriptionType_ALTER_SUBSCRIPTION_TYPE_UNDEFINED +} + +func (x *AlterSubscriptionStmt) GetSubname() string { + if x != nil { + return x.Subname + } + return "" +} + +func (x *AlterSubscriptionStmt) GetConninfo() string { + if x != nil { + return x.Conninfo + } + return "" +} + +func (x *AlterSubscriptionStmt) GetPublication() []*Node { + if x != nil { + return x.Publication + } + return nil +} + +func (x *AlterSubscriptionStmt) GetOptions() []*Node { + if x != nil { + return x.Options + } + return nil +} + +type DropSubscriptionStmt struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Subname string `protobuf:"bytes,1,opt,name=subname,proto3" json:"subname,omitempty"` + MissingOk bool `protobuf:"varint,2,opt,name=missing_ok,proto3" json:"missing_ok,omitempty"` + Behavior DropBehavior `protobuf:"varint,3,opt,name=behavior,proto3,enum=pg_query.DropBehavior" json:"behavior,omitempty"` +} + +func (x *DropSubscriptionStmt) Reset() { + *x = DropSubscriptionStmt{} + if protoimpl.UnsafeEnabled { + mi := &file_pg_query_proto_msgTypes[172] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *DropSubscriptionStmt) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DropSubscriptionStmt) ProtoMessage() {} + +func (x *DropSubscriptionStmt) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[172] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use DropSubscriptionStmt.ProtoReflect.Descriptor instead. +func (*DropSubscriptionStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{172} +} + +func (x *DropSubscriptionStmt) GetSubname() string { + if x != nil { + return x.Subname + } + return "" +} + +func (x *DropSubscriptionStmt) GetMissingOk() bool { + if x != nil { + return x.MissingOk + } + return false +} + +func (x *DropSubscriptionStmt) GetBehavior() DropBehavior { + if x != nil { + return x.Behavior + } + return DropBehavior_DROP_BEHAVIOR_UNDEFINED +} + +type CreateStatsStmt struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Defnames []*Node `protobuf:"bytes,1,rep,name=defnames,proto3" json:"defnames,omitempty"` + StatTypes []*Node `protobuf:"bytes,2,rep,name=stat_types,proto3" json:"stat_types,omitempty"` + Exprs []*Node `protobuf:"bytes,3,rep,name=exprs,proto3" json:"exprs,omitempty"` + Relations []*Node `protobuf:"bytes,4,rep,name=relations,proto3" json:"relations,omitempty"` + Stxcomment string `protobuf:"bytes,5,opt,name=stxcomment,proto3" json:"stxcomment,omitempty"` + IfNotExists bool `protobuf:"varint,6,opt,name=if_not_exists,proto3" json:"if_not_exists,omitempty"` +} + +func (x *CreateStatsStmt) Reset() { + *x = CreateStatsStmt{} + if protoimpl.UnsafeEnabled { + mi := &file_pg_query_proto_msgTypes[173] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *CreateStatsStmt) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CreateStatsStmt) ProtoMessage() {} + +func (x *CreateStatsStmt) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[173] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CreateStatsStmt.ProtoReflect.Descriptor instead. +func (*CreateStatsStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{173} +} + +func (x *CreateStatsStmt) GetDefnames() []*Node { + if x != nil { + return x.Defnames + } + return nil +} + +func (x *CreateStatsStmt) GetStatTypes() []*Node { + if x != nil { + return x.StatTypes + } + return nil +} + +func (x *CreateStatsStmt) GetExprs() []*Node { + if x != nil { + return x.Exprs + } + return nil +} + +func (x *CreateStatsStmt) GetRelations() []*Node { + if x != nil { + return x.Relations + } + return nil +} + +func (x *CreateStatsStmt) GetStxcomment() string { + if x != nil { + return x.Stxcomment + } + return "" +} + +func (x *CreateStatsStmt) GetIfNotExists() bool { + if x != nil { + return x.IfNotExists + } + return false +} + +type AlterCollationStmt struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Collname []*Node `protobuf:"bytes,1,rep,name=collname,proto3" json:"collname,omitempty"` +} + +func (x *AlterCollationStmt) Reset() { + *x = AlterCollationStmt{} + if protoimpl.UnsafeEnabled { + mi := &file_pg_query_proto_msgTypes[174] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *AlterCollationStmt) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*AlterCollationStmt) ProtoMessage() {} + +func (x *AlterCollationStmt) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[174] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use AlterCollationStmt.ProtoReflect.Descriptor instead. +func (*AlterCollationStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{174} +} + +func (x *AlterCollationStmt) GetCollname() []*Node { + if x != nil { + return x.Collname + } + return nil +} + +type CallStmt struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Funccall *FuncCall `protobuf:"bytes,1,opt,name=funccall,proto3" json:"funccall,omitempty"` + Funcexpr *FuncExpr `protobuf:"bytes,2,opt,name=funcexpr,proto3" json:"funcexpr,omitempty"` +} + +func (x *CallStmt) Reset() { + *x = CallStmt{} + if protoimpl.UnsafeEnabled { + mi := &file_pg_query_proto_msgTypes[175] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *CallStmt) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CallStmt) ProtoMessage() {} + +func (x *CallStmt) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[175] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CallStmt.ProtoReflect.Descriptor instead. +func (*CallStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{175} +} + +func (x *CallStmt) GetFunccall() *FuncCall { + if x != nil { + return x.Funccall + } + return nil +} + +func (x *CallStmt) GetFuncexpr() *FuncExpr { + if x != nil { + return x.Funcexpr + } + return nil +} + +type AlterStatsStmt struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Defnames []*Node `protobuf:"bytes,1,rep,name=defnames,proto3" json:"defnames,omitempty"` + Stxstattarget int32 `protobuf:"varint,2,opt,name=stxstattarget,proto3" json:"stxstattarget,omitempty"` + MissingOk bool `protobuf:"varint,3,opt,name=missing_ok,proto3" json:"missing_ok,omitempty"` +} + +func (x *AlterStatsStmt) Reset() { + *x = AlterStatsStmt{} + if protoimpl.UnsafeEnabled { + mi := &file_pg_query_proto_msgTypes[176] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *AlterStatsStmt) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*AlterStatsStmt) ProtoMessage() {} + +func (x *AlterStatsStmt) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[176] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use AlterStatsStmt.ProtoReflect.Descriptor instead. +func (*AlterStatsStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{176} +} + +func (x *AlterStatsStmt) GetDefnames() []*Node { + if x != nil { + return x.Defnames + } + return nil +} + +func (x *AlterStatsStmt) GetStxstattarget() int32 { + if x != nil { + return x.Stxstattarget + } + return 0 +} + +func (x *AlterStatsStmt) GetMissingOk() bool { + if x != nil { + return x.MissingOk + } + return false +} + +type A_Expr struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Kind A_Expr_Kind `protobuf:"varint,1,opt,name=kind,proto3,enum=pg_query.A_Expr_Kind" json:"kind,omitempty"` + Name []*Node `protobuf:"bytes,2,rep,name=name,proto3" json:"name,omitempty"` + Lexpr *Node `protobuf:"bytes,3,opt,name=lexpr,proto3" json:"lexpr,omitempty"` + Rexpr *Node `protobuf:"bytes,4,opt,name=rexpr,proto3" json:"rexpr,omitempty"` + Location int32 `protobuf:"varint,5,opt,name=location,proto3" json:"location,omitempty"` +} + +func (x *A_Expr) Reset() { + *x = A_Expr{} + if protoimpl.UnsafeEnabled { + mi := &file_pg_query_proto_msgTypes[177] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *A_Expr) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*A_Expr) ProtoMessage() {} + +func (x *A_Expr) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[177] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use A_Expr.ProtoReflect.Descriptor instead. +func (*A_Expr) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{177} +} + +func (x *A_Expr) GetKind() A_Expr_Kind { + if x != nil { + return x.Kind + } + return A_Expr_Kind_A_EXPR_KIND_UNDEFINED +} + +func (x *A_Expr) GetName() []*Node { + if x != nil { + return x.Name + } + return nil +} + +func (x *A_Expr) GetLexpr() *Node { + if x != nil { + return x.Lexpr + } + return nil +} + +func (x *A_Expr) GetRexpr() *Node { + if x != nil { + return x.Rexpr + } + return nil +} + +func (x *A_Expr) GetLocation() int32 { + if x != nil { + return x.Location + } + return 0 +} + +type ColumnRef struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Fields []*Node `protobuf:"bytes,1,rep,name=fields,proto3" json:"fields,omitempty"` + Location int32 `protobuf:"varint,2,opt,name=location,proto3" json:"location,omitempty"` +} + +func (x *ColumnRef) Reset() { + *x = ColumnRef{} + if protoimpl.UnsafeEnabled { + mi := &file_pg_query_proto_msgTypes[178] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ColumnRef) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ColumnRef) ProtoMessage() {} + +func (x *ColumnRef) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[178] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ColumnRef.ProtoReflect.Descriptor instead. +func (*ColumnRef) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{178} +} + +func (x *ColumnRef) GetFields() []*Node { + if x != nil { + return x.Fields + } + return nil +} + +func (x *ColumnRef) GetLocation() int32 { + if x != nil { + return x.Location + } + return 0 +} + +type ParamRef struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Number int32 `protobuf:"varint,1,opt,name=number,proto3" json:"number,omitempty"` + Location int32 `protobuf:"varint,2,opt,name=location,proto3" json:"location,omitempty"` +} + +func (x *ParamRef) Reset() { + *x = ParamRef{} + if protoimpl.UnsafeEnabled { + mi := &file_pg_query_proto_msgTypes[179] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ParamRef) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ParamRef) ProtoMessage() {} + +func (x *ParamRef) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[179] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ParamRef.ProtoReflect.Descriptor instead. +func (*ParamRef) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{179} +} + +func (x *ParamRef) GetNumber() int32 { + if x != nil { + return x.Number + } + return 0 +} + +func (x *ParamRef) GetLocation() int32 { + if x != nil { + return x.Location + } + return 0 +} + +type A_Const struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Val *Node `protobuf:"bytes,1,opt,name=val,proto3" json:"val,omitempty"` + Location int32 `protobuf:"varint,2,opt,name=location,proto3" json:"location,omitempty"` +} + +func (x *A_Const) Reset() { + *x = A_Const{} + if protoimpl.UnsafeEnabled { + mi := &file_pg_query_proto_msgTypes[180] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *A_Const) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*A_Const) ProtoMessage() {} + +func (x *A_Const) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[180] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use A_Const.ProtoReflect.Descriptor instead. +func (*A_Const) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{180} +} + +func (x *A_Const) GetVal() *Node { + if x != nil { + return x.Val + } + return nil +} + +func (x *A_Const) GetLocation() int32 { + if x != nil { + return x.Location + } + return 0 +} + +type FuncCall struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Funcname []*Node `protobuf:"bytes,1,rep,name=funcname,proto3" json:"funcname,omitempty"` + Args []*Node `protobuf:"bytes,2,rep,name=args,proto3" json:"args,omitempty"` + AggOrder []*Node `protobuf:"bytes,3,rep,name=agg_order,proto3" json:"agg_order,omitempty"` + AggFilter *Node `protobuf:"bytes,4,opt,name=agg_filter,proto3" json:"agg_filter,omitempty"` + AggWithinGroup bool `protobuf:"varint,5,opt,name=agg_within_group,proto3" json:"agg_within_group,omitempty"` + AggStar bool `protobuf:"varint,6,opt,name=agg_star,proto3" json:"agg_star,omitempty"` + AggDistinct bool `protobuf:"varint,7,opt,name=agg_distinct,proto3" json:"agg_distinct,omitempty"` + FuncVariadic bool `protobuf:"varint,8,opt,name=func_variadic,proto3" json:"func_variadic,omitempty"` + Over *WindowDef `protobuf:"bytes,9,opt,name=over,proto3" json:"over,omitempty"` + Location int32 `protobuf:"varint,10,opt,name=location,proto3" json:"location,omitempty"` +} + +func (x *FuncCall) Reset() { + *x = FuncCall{} + if protoimpl.UnsafeEnabled { + mi := &file_pg_query_proto_msgTypes[181] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *FuncCall) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*FuncCall) ProtoMessage() {} + +func (x *FuncCall) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[181] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use FuncCall.ProtoReflect.Descriptor instead. +func (*FuncCall) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{181} +} + +func (x *FuncCall) GetFuncname() []*Node { + if x != nil { + return x.Funcname + } + return nil +} + +func (x *FuncCall) GetArgs() []*Node { + if x != nil { + return x.Args + } + return nil +} + +func (x *FuncCall) GetAggOrder() []*Node { + if x != nil { + return x.AggOrder + } + return nil +} + +func (x *FuncCall) GetAggFilter() *Node { + if x != nil { + return x.AggFilter + } + return nil +} + +func (x *FuncCall) GetAggWithinGroup() bool { + if x != nil { + return x.AggWithinGroup + } + return false +} + +func (x *FuncCall) GetAggStar() bool { + if x != nil { + return x.AggStar + } + return false +} + +func (x *FuncCall) GetAggDistinct() bool { + if x != nil { + return x.AggDistinct + } + return false +} + +func (x *FuncCall) GetFuncVariadic() bool { + if x != nil { + return x.FuncVariadic + } + return false +} + +func (x *FuncCall) GetOver() *WindowDef { + if x != nil { + return x.Over + } + return nil +} + +func (x *FuncCall) GetLocation() int32 { + if x != nil { + return x.Location + } + return 0 +} + +type A_Star struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *A_Star) Reset() { + *x = A_Star{} + if protoimpl.UnsafeEnabled { + mi := &file_pg_query_proto_msgTypes[182] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *A_Star) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*A_Star) ProtoMessage() {} + +func (x *A_Star) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[182] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use A_Star.ProtoReflect.Descriptor instead. +func (*A_Star) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{182} +} + +type A_Indices struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + IsSlice bool `protobuf:"varint,1,opt,name=is_slice,proto3" json:"is_slice,omitempty"` + Lidx *Node `protobuf:"bytes,2,opt,name=lidx,proto3" json:"lidx,omitempty"` + Uidx *Node `protobuf:"bytes,3,opt,name=uidx,proto3" json:"uidx,omitempty"` +} + +func (x *A_Indices) Reset() { + *x = A_Indices{} + if protoimpl.UnsafeEnabled { + mi := &file_pg_query_proto_msgTypes[183] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *A_Indices) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*A_Indices) ProtoMessage() {} + +func (x *A_Indices) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[183] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use A_Indices.ProtoReflect.Descriptor instead. +func (*A_Indices) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{183} +} + +func (x *A_Indices) GetIsSlice() bool { + if x != nil { + return x.IsSlice + } + return false +} + +func (x *A_Indices) GetLidx() *Node { + if x != nil { + return x.Lidx + } + return nil +} + +func (x *A_Indices) GetUidx() *Node { + if x != nil { + return x.Uidx + } + return nil +} + +type A_Indirection struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Arg *Node `protobuf:"bytes,1,opt,name=arg,proto3" json:"arg,omitempty"` + Indirection []*Node `protobuf:"bytes,2,rep,name=indirection,proto3" json:"indirection,omitempty"` +} + +func (x *A_Indirection) Reset() { + *x = A_Indirection{} + if protoimpl.UnsafeEnabled { + mi := &file_pg_query_proto_msgTypes[184] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *A_Indirection) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*A_Indirection) ProtoMessage() {} + +func (x *A_Indirection) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[184] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use A_Indirection.ProtoReflect.Descriptor instead. +func (*A_Indirection) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{184} +} + +func (x *A_Indirection) GetArg() *Node { + if x != nil { + return x.Arg + } + return nil +} + +func (x *A_Indirection) GetIndirection() []*Node { + if x != nil { + return x.Indirection + } + return nil +} + +type A_ArrayExpr struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Elements []*Node `protobuf:"bytes,1,rep,name=elements,proto3" json:"elements,omitempty"` + Location int32 `protobuf:"varint,2,opt,name=location,proto3" json:"location,omitempty"` +} + +func (x *A_ArrayExpr) Reset() { + *x = A_ArrayExpr{} + if protoimpl.UnsafeEnabled { + mi := &file_pg_query_proto_msgTypes[185] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *A_ArrayExpr) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*A_ArrayExpr) ProtoMessage() {} + +func (x *A_ArrayExpr) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[185] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use A_ArrayExpr.ProtoReflect.Descriptor instead. +func (*A_ArrayExpr) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{185} +} + +func (x *A_ArrayExpr) GetElements() []*Node { + if x != nil { + return x.Elements + } + return nil +} + +func (x *A_ArrayExpr) GetLocation() int32 { + if x != nil { + return x.Location + } + return 0 +} + +type ResTarget struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + Indirection []*Node `protobuf:"bytes,2,rep,name=indirection,proto3" json:"indirection,omitempty"` + Val *Node `protobuf:"bytes,3,opt,name=val,proto3" json:"val,omitempty"` + Location int32 `protobuf:"varint,4,opt,name=location,proto3" json:"location,omitempty"` +} + +func (x *ResTarget) Reset() { + *x = ResTarget{} + if protoimpl.UnsafeEnabled { + mi := &file_pg_query_proto_msgTypes[186] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ResTarget) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ResTarget) ProtoMessage() {} + +func (x *ResTarget) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[186] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ResTarget.ProtoReflect.Descriptor instead. +func (*ResTarget) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{186} +} + +func (x *ResTarget) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *ResTarget) GetIndirection() []*Node { + if x != nil { + return x.Indirection + } + return nil +} + +func (x *ResTarget) GetVal() *Node { + if x != nil { + return x.Val + } + return nil +} + +func (x *ResTarget) GetLocation() int32 { + if x != nil { + return x.Location + } + return 0 +} + +type MultiAssignRef struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Source *Node `protobuf:"bytes,1,opt,name=source,proto3" json:"source,omitempty"` + Colno int32 `protobuf:"varint,2,opt,name=colno,proto3" json:"colno,omitempty"` + Ncolumns int32 `protobuf:"varint,3,opt,name=ncolumns,proto3" json:"ncolumns,omitempty"` +} + +func (x *MultiAssignRef) Reset() { + *x = MultiAssignRef{} + if protoimpl.UnsafeEnabled { + mi := &file_pg_query_proto_msgTypes[187] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *MultiAssignRef) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*MultiAssignRef) ProtoMessage() {} + +func (x *MultiAssignRef) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[187] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use MultiAssignRef.ProtoReflect.Descriptor instead. +func (*MultiAssignRef) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{187} +} + +func (x *MultiAssignRef) GetSource() *Node { + if x != nil { + return x.Source + } + return nil +} + +func (x *MultiAssignRef) GetColno() int32 { + if x != nil { + return x.Colno + } + return 0 +} + +func (x *MultiAssignRef) GetNcolumns() int32 { + if x != nil { + return x.Ncolumns + } + return 0 +} + +type TypeCast struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Arg *Node `protobuf:"bytes,1,opt,name=arg,proto3" json:"arg,omitempty"` + TypeName *TypeName `protobuf:"bytes,2,opt,name=type_name,json=typeName,proto3" json:"type_name,omitempty"` + Location int32 `protobuf:"varint,3,opt,name=location,proto3" json:"location,omitempty"` +} + +func (x *TypeCast) Reset() { + *x = TypeCast{} + if protoimpl.UnsafeEnabled { + mi := &file_pg_query_proto_msgTypes[188] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *TypeCast) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*TypeCast) ProtoMessage() {} + +func (x *TypeCast) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[188] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use TypeCast.ProtoReflect.Descriptor instead. +func (*TypeCast) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{188} +} + +func (x *TypeCast) GetArg() *Node { + if x != nil { + return x.Arg + } + return nil +} + +func (x *TypeCast) GetTypeName() *TypeName { + if x != nil { + return x.TypeName + } + return nil +} + +func (x *TypeCast) GetLocation() int32 { + if x != nil { + return x.Location + } + return 0 +} + +type CollateClause struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Arg *Node `protobuf:"bytes,1,opt,name=arg,proto3" json:"arg,omitempty"` + Collname []*Node `protobuf:"bytes,2,rep,name=collname,proto3" json:"collname,omitempty"` + Location int32 `protobuf:"varint,3,opt,name=location,proto3" json:"location,omitempty"` +} + +func (x *CollateClause) Reset() { + *x = CollateClause{} + if protoimpl.UnsafeEnabled { + mi := &file_pg_query_proto_msgTypes[189] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *CollateClause) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CollateClause) ProtoMessage() {} + +func (x *CollateClause) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[189] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CollateClause.ProtoReflect.Descriptor instead. +func (*CollateClause) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{189} +} + +func (x *CollateClause) GetArg() *Node { + if x != nil { + return x.Arg + } + return nil +} + +func (x *CollateClause) GetCollname() []*Node { + if x != nil { + return x.Collname + } + return nil +} + +func (x *CollateClause) GetLocation() int32 { + if x != nil { + return x.Location + } + return 0 +} + +type SortBy struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Node *Node `protobuf:"bytes,1,opt,name=node,proto3" json:"node,omitempty"` + SortbyDir SortByDir `protobuf:"varint,2,opt,name=sortby_dir,proto3,enum=pg_query.SortByDir" json:"sortby_dir,omitempty"` + SortbyNulls SortByNulls `protobuf:"varint,3,opt,name=sortby_nulls,proto3,enum=pg_query.SortByNulls" json:"sortby_nulls,omitempty"` + UseOp []*Node `protobuf:"bytes,4,rep,name=use_op,json=useOp,proto3" json:"use_op,omitempty"` + Location int32 `protobuf:"varint,5,opt,name=location,proto3" json:"location,omitempty"` +} + +func (x *SortBy) Reset() { + *x = SortBy{} + if protoimpl.UnsafeEnabled { + mi := &file_pg_query_proto_msgTypes[190] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *SortBy) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SortBy) ProtoMessage() {} + +func (x *SortBy) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[190] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SortBy.ProtoReflect.Descriptor instead. +func (*SortBy) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{190} +} + +func (x *SortBy) GetNode() *Node { + if x != nil { + return x.Node + } + return nil +} + +func (x *SortBy) GetSortbyDir() SortByDir { + if x != nil { + return x.SortbyDir + } + return SortByDir_SORT_BY_DIR_UNDEFINED +} + +func (x *SortBy) GetSortbyNulls() SortByNulls { + if x != nil { + return x.SortbyNulls + } + return SortByNulls_SORT_BY_NULLS_UNDEFINED +} + +func (x *SortBy) GetUseOp() []*Node { + if x != nil { + return x.UseOp + } + return nil +} + +func (x *SortBy) GetLocation() int32 { + if x != nil { + return x.Location + } + return 0 +} + +type WindowDef struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + Refname string `protobuf:"bytes,2,opt,name=refname,proto3" json:"refname,omitempty"` + PartitionClause []*Node `protobuf:"bytes,3,rep,name=partition_clause,json=partitionClause,proto3" json:"partition_clause,omitempty"` + OrderClause []*Node `protobuf:"bytes,4,rep,name=order_clause,json=orderClause,proto3" json:"order_clause,omitempty"` + FrameOptions int32 `protobuf:"varint,5,opt,name=frame_options,json=frameOptions,proto3" json:"frame_options,omitempty"` + StartOffset *Node `protobuf:"bytes,6,opt,name=start_offset,json=startOffset,proto3" json:"start_offset,omitempty"` + EndOffset *Node `protobuf:"bytes,7,opt,name=end_offset,json=endOffset,proto3" json:"end_offset,omitempty"` + Location int32 `protobuf:"varint,8,opt,name=location,proto3" json:"location,omitempty"` +} + +func (x *WindowDef) Reset() { + *x = WindowDef{} + if protoimpl.UnsafeEnabled { + mi := &file_pg_query_proto_msgTypes[191] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *WindowDef) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*WindowDef) ProtoMessage() {} + +func (x *WindowDef) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[191] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use WindowDef.ProtoReflect.Descriptor instead. +func (*WindowDef) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{191} +} + +func (x *WindowDef) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *WindowDef) GetRefname() string { + if x != nil { + return x.Refname + } + return "" +} + +func (x *WindowDef) GetPartitionClause() []*Node { + if x != nil { + return x.PartitionClause + } + return nil +} + +func (x *WindowDef) GetOrderClause() []*Node { + if x != nil { + return x.OrderClause + } + return nil +} + +func (x *WindowDef) GetFrameOptions() int32 { + if x != nil { + return x.FrameOptions + } + return 0 +} + +func (x *WindowDef) GetStartOffset() *Node { + if x != nil { + return x.StartOffset + } + return nil +} + +func (x *WindowDef) GetEndOffset() *Node { + if x != nil { + return x.EndOffset + } + return nil +} + +func (x *WindowDef) GetLocation() int32 { + if x != nil { + return x.Location + } + return 0 +} + +type RangeSubselect struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Lateral bool `protobuf:"varint,1,opt,name=lateral,proto3" json:"lateral,omitempty"` + Subquery *Node `protobuf:"bytes,2,opt,name=subquery,proto3" json:"subquery,omitempty"` + Alias *Alias `protobuf:"bytes,3,opt,name=alias,proto3" json:"alias,omitempty"` +} + +func (x *RangeSubselect) Reset() { + *x = RangeSubselect{} + if protoimpl.UnsafeEnabled { + mi := &file_pg_query_proto_msgTypes[192] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *RangeSubselect) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*RangeSubselect) ProtoMessage() {} + +func (x *RangeSubselect) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[192] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use RangeSubselect.ProtoReflect.Descriptor instead. +func (*RangeSubselect) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{192} +} + +func (x *RangeSubselect) GetLateral() bool { + if x != nil { + return x.Lateral + } + return false +} + +func (x *RangeSubselect) GetSubquery() *Node { + if x != nil { + return x.Subquery + } + return nil +} + +func (x *RangeSubselect) GetAlias() *Alias { + if x != nil { + return x.Alias + } + return nil +} + +type RangeFunction struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Lateral bool `protobuf:"varint,1,opt,name=lateral,proto3" json:"lateral,omitempty"` + Ordinality bool `protobuf:"varint,2,opt,name=ordinality,proto3" json:"ordinality,omitempty"` + IsRowsfrom bool `protobuf:"varint,3,opt,name=is_rowsfrom,proto3" json:"is_rowsfrom,omitempty"` + Functions []*Node `protobuf:"bytes,4,rep,name=functions,proto3" json:"functions,omitempty"` + Alias *Alias `protobuf:"bytes,5,opt,name=alias,proto3" json:"alias,omitempty"` + Coldeflist []*Node `protobuf:"bytes,6,rep,name=coldeflist,proto3" json:"coldeflist,omitempty"` +} + +func (x *RangeFunction) Reset() { + *x = RangeFunction{} + if protoimpl.UnsafeEnabled { + mi := &file_pg_query_proto_msgTypes[193] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *RangeFunction) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*RangeFunction) ProtoMessage() {} + +func (x *RangeFunction) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[193] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use RangeFunction.ProtoReflect.Descriptor instead. +func (*RangeFunction) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{193} +} + +func (x *RangeFunction) GetLateral() bool { + if x != nil { + return x.Lateral + } + return false +} + +func (x *RangeFunction) GetOrdinality() bool { + if x != nil { + return x.Ordinality + } + return false +} + +func (x *RangeFunction) GetIsRowsfrom() bool { + if x != nil { + return x.IsRowsfrom + } + return false +} + +func (x *RangeFunction) GetFunctions() []*Node { + if x != nil { + return x.Functions + } + return nil +} + +func (x *RangeFunction) GetAlias() *Alias { + if x != nil { + return x.Alias + } + return nil +} + +func (x *RangeFunction) GetColdeflist() []*Node { + if x != nil { + return x.Coldeflist + } + return nil +} + +type RangeTableSample struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Relation *Node `protobuf:"bytes,1,opt,name=relation,proto3" json:"relation,omitempty"` + Method []*Node `protobuf:"bytes,2,rep,name=method,proto3" json:"method,omitempty"` + Args []*Node `protobuf:"bytes,3,rep,name=args,proto3" json:"args,omitempty"` + Repeatable *Node `protobuf:"bytes,4,opt,name=repeatable,proto3" json:"repeatable,omitempty"` + Location int32 `protobuf:"varint,5,opt,name=location,proto3" json:"location,omitempty"` +} + +func (x *RangeTableSample) Reset() { + *x = RangeTableSample{} + if protoimpl.UnsafeEnabled { + mi := &file_pg_query_proto_msgTypes[194] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *RangeTableSample) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*RangeTableSample) ProtoMessage() {} + +func (x *RangeTableSample) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[194] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use RangeTableSample.ProtoReflect.Descriptor instead. +func (*RangeTableSample) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{194} +} + +func (x *RangeTableSample) GetRelation() *Node { + if x != nil { + return x.Relation + } + return nil +} + +func (x *RangeTableSample) GetMethod() []*Node { + if x != nil { + return x.Method + } + return nil +} + +func (x *RangeTableSample) GetArgs() []*Node { + if x != nil { + return x.Args + } + return nil +} + +func (x *RangeTableSample) GetRepeatable() *Node { + if x != nil { + return x.Repeatable + } + return nil +} + +func (x *RangeTableSample) GetLocation() int32 { + if x != nil { + return x.Location + } + return 0 +} + +type RangeTableFunc struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Lateral bool `protobuf:"varint,1,opt,name=lateral,proto3" json:"lateral,omitempty"` + Docexpr *Node `protobuf:"bytes,2,opt,name=docexpr,proto3" json:"docexpr,omitempty"` + Rowexpr *Node `protobuf:"bytes,3,opt,name=rowexpr,proto3" json:"rowexpr,omitempty"` + Namespaces []*Node `protobuf:"bytes,4,rep,name=namespaces,proto3" json:"namespaces,omitempty"` + Columns []*Node `protobuf:"bytes,5,rep,name=columns,proto3" json:"columns,omitempty"` + Alias *Alias `protobuf:"bytes,6,opt,name=alias,proto3" json:"alias,omitempty"` + Location int32 `protobuf:"varint,7,opt,name=location,proto3" json:"location,omitempty"` +} + +func (x *RangeTableFunc) Reset() { + *x = RangeTableFunc{} + if protoimpl.UnsafeEnabled { + mi := &file_pg_query_proto_msgTypes[195] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *RangeTableFunc) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*RangeTableFunc) ProtoMessage() {} + +func (x *RangeTableFunc) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[195] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use RangeTableFunc.ProtoReflect.Descriptor instead. +func (*RangeTableFunc) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{195} +} + +func (x *RangeTableFunc) GetLateral() bool { + if x != nil { + return x.Lateral + } + return false +} + +func (x *RangeTableFunc) GetDocexpr() *Node { + if x != nil { + return x.Docexpr + } + return nil +} + +func (x *RangeTableFunc) GetRowexpr() *Node { + if x != nil { + return x.Rowexpr + } + return nil +} + +func (x *RangeTableFunc) GetNamespaces() []*Node { + if x != nil { + return x.Namespaces + } + return nil +} + +func (x *RangeTableFunc) GetColumns() []*Node { + if x != nil { + return x.Columns + } + return nil +} + +func (x *RangeTableFunc) GetAlias() *Alias { + if x != nil { + return x.Alias + } + return nil +} + +func (x *RangeTableFunc) GetLocation() int32 { + if x != nil { + return x.Location + } + return 0 +} + +type RangeTableFuncCol struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Colname string `protobuf:"bytes,1,opt,name=colname,proto3" json:"colname,omitempty"` + TypeName *TypeName `protobuf:"bytes,2,opt,name=type_name,json=typeName,proto3" json:"type_name,omitempty"` + ForOrdinality bool `protobuf:"varint,3,opt,name=for_ordinality,proto3" json:"for_ordinality,omitempty"` + IsNotNull bool `protobuf:"varint,4,opt,name=is_not_null,proto3" json:"is_not_null,omitempty"` + Colexpr *Node `protobuf:"bytes,5,opt,name=colexpr,proto3" json:"colexpr,omitempty"` + Coldefexpr *Node `protobuf:"bytes,6,opt,name=coldefexpr,proto3" json:"coldefexpr,omitempty"` + Location int32 `protobuf:"varint,7,opt,name=location,proto3" json:"location,omitempty"` +} + +func (x *RangeTableFuncCol) Reset() { + *x = RangeTableFuncCol{} + if protoimpl.UnsafeEnabled { + mi := &file_pg_query_proto_msgTypes[196] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *RangeTableFuncCol) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*RangeTableFuncCol) ProtoMessage() {} + +func (x *RangeTableFuncCol) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[196] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use RangeTableFuncCol.ProtoReflect.Descriptor instead. +func (*RangeTableFuncCol) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{196} +} + +func (x *RangeTableFuncCol) GetColname() string { + if x != nil { + return x.Colname + } + return "" +} + +func (x *RangeTableFuncCol) GetTypeName() *TypeName { + if x != nil { + return x.TypeName + } + return nil +} + +func (x *RangeTableFuncCol) GetForOrdinality() bool { + if x != nil { + return x.ForOrdinality + } + return false +} + +func (x *RangeTableFuncCol) GetIsNotNull() bool { + if x != nil { + return x.IsNotNull + } + return false +} + +func (x *RangeTableFuncCol) GetColexpr() *Node { + if x != nil { + return x.Colexpr + } + return nil +} + +func (x *RangeTableFuncCol) GetColdefexpr() *Node { + if x != nil { + return x.Coldefexpr + } + return nil +} + +func (x *RangeTableFuncCol) GetLocation() int32 { + if x != nil { + return x.Location + } + return 0 +} + +type TypeName struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Names []*Node `protobuf:"bytes,1,rep,name=names,proto3" json:"names,omitempty"` + TypeOid uint32 `protobuf:"varint,2,opt,name=type_oid,json=typeOid,proto3" json:"type_oid,omitempty"` + Setof bool `protobuf:"varint,3,opt,name=setof,proto3" json:"setof,omitempty"` + PctType bool `protobuf:"varint,4,opt,name=pct_type,proto3" json:"pct_type,omitempty"` + Typmods []*Node `protobuf:"bytes,5,rep,name=typmods,proto3" json:"typmods,omitempty"` + Typemod int32 `protobuf:"varint,6,opt,name=typemod,proto3" json:"typemod,omitempty"` + ArrayBounds []*Node `protobuf:"bytes,7,rep,name=array_bounds,json=arrayBounds,proto3" json:"array_bounds,omitempty"` + Location int32 `protobuf:"varint,8,opt,name=location,proto3" json:"location,omitempty"` +} + +func (x *TypeName) Reset() { + *x = TypeName{} + if protoimpl.UnsafeEnabled { + mi := &file_pg_query_proto_msgTypes[197] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *TypeName) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*TypeName) ProtoMessage() {} + +func (x *TypeName) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[197] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use TypeName.ProtoReflect.Descriptor instead. +func (*TypeName) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{197} +} + +func (x *TypeName) GetNames() []*Node { + if x != nil { + return x.Names + } + return nil +} + +func (x *TypeName) GetTypeOid() uint32 { + if x != nil { + return x.TypeOid + } + return 0 +} + +func (x *TypeName) GetSetof() bool { + if x != nil { + return x.Setof + } + return false +} + +func (x *TypeName) GetPctType() bool { + if x != nil { + return x.PctType + } + return false +} + +func (x *TypeName) GetTypmods() []*Node { + if x != nil { + return x.Typmods + } + return nil +} + +func (x *TypeName) GetTypemod() int32 { + if x != nil { + return x.Typemod + } + return 0 +} + +func (x *TypeName) GetArrayBounds() []*Node { + if x != nil { + return x.ArrayBounds + } + return nil +} + +func (x *TypeName) GetLocation() int32 { + if x != nil { + return x.Location + } + return 0 +} + +type ColumnDef struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Colname string `protobuf:"bytes,1,opt,name=colname,proto3" json:"colname,omitempty"` + TypeName *TypeName `protobuf:"bytes,2,opt,name=type_name,json=typeName,proto3" json:"type_name,omitempty"` + Inhcount int32 `protobuf:"varint,3,opt,name=inhcount,proto3" json:"inhcount,omitempty"` + IsLocal bool `protobuf:"varint,4,opt,name=is_local,proto3" json:"is_local,omitempty"` + IsNotNull bool `protobuf:"varint,5,opt,name=is_not_null,proto3" json:"is_not_null,omitempty"` + IsFromType bool `protobuf:"varint,6,opt,name=is_from_type,proto3" json:"is_from_type,omitempty"` + Storage string `protobuf:"bytes,7,opt,name=storage,proto3" json:"storage,omitempty"` + RawDefault *Node `protobuf:"bytes,8,opt,name=raw_default,proto3" json:"raw_default,omitempty"` + CookedDefault *Node `protobuf:"bytes,9,opt,name=cooked_default,proto3" json:"cooked_default,omitempty"` + Identity string `protobuf:"bytes,10,opt,name=identity,proto3" json:"identity,omitempty"` + IdentitySequence *RangeVar `protobuf:"bytes,11,opt,name=identity_sequence,json=identitySequence,proto3" json:"identity_sequence,omitempty"` + Generated string `protobuf:"bytes,12,opt,name=generated,proto3" json:"generated,omitempty"` + CollClause *CollateClause `protobuf:"bytes,13,opt,name=coll_clause,json=collClause,proto3" json:"coll_clause,omitempty"` + CollOid uint32 `protobuf:"varint,14,opt,name=coll_oid,json=collOid,proto3" json:"coll_oid,omitempty"` + Constraints []*Node `protobuf:"bytes,15,rep,name=constraints,proto3" json:"constraints,omitempty"` + Fdwoptions []*Node `protobuf:"bytes,16,rep,name=fdwoptions,proto3" json:"fdwoptions,omitempty"` + Location int32 `protobuf:"varint,17,opt,name=location,proto3" json:"location,omitempty"` +} + +func (x *ColumnDef) Reset() { + *x = ColumnDef{} + if protoimpl.UnsafeEnabled { + mi := &file_pg_query_proto_msgTypes[198] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ColumnDef) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ColumnDef) ProtoMessage() {} + +func (x *ColumnDef) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[198] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ColumnDef.ProtoReflect.Descriptor instead. +func (*ColumnDef) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{198} +} + +func (x *ColumnDef) GetColname() string { + if x != nil { + return x.Colname + } + return "" +} + +func (x *ColumnDef) GetTypeName() *TypeName { + if x != nil { + return x.TypeName + } + return nil +} + +func (x *ColumnDef) GetInhcount() int32 { + if x != nil { + return x.Inhcount + } + return 0 +} + +func (x *ColumnDef) GetIsLocal() bool { + if x != nil { + return x.IsLocal + } + return false +} + +func (x *ColumnDef) GetIsNotNull() bool { + if x != nil { + return x.IsNotNull + } + return false +} + +func (x *ColumnDef) GetIsFromType() bool { + if x != nil { + return x.IsFromType + } + return false +} + +func (x *ColumnDef) GetStorage() string { + if x != nil { + return x.Storage + } + return "" +} + +func (x *ColumnDef) GetRawDefault() *Node { + if x != nil { + return x.RawDefault + } + return nil +} + +func (x *ColumnDef) GetCookedDefault() *Node { + if x != nil { + return x.CookedDefault + } + return nil +} + +func (x *ColumnDef) GetIdentity() string { + if x != nil { + return x.Identity + } + return "" +} + +func (x *ColumnDef) GetIdentitySequence() *RangeVar { + if x != nil { + return x.IdentitySequence + } + return nil +} + +func (x *ColumnDef) GetGenerated() string { + if x != nil { + return x.Generated + } + return "" +} + +func (x *ColumnDef) GetCollClause() *CollateClause { + if x != nil { + return x.CollClause + } + return nil +} + +func (x *ColumnDef) GetCollOid() uint32 { + if x != nil { + return x.CollOid + } + return 0 +} + +func (x *ColumnDef) GetConstraints() []*Node { + if x != nil { + return x.Constraints + } + return nil +} + +func (x *ColumnDef) GetFdwoptions() []*Node { + if x != nil { + return x.Fdwoptions + } + return nil +} + +func (x *ColumnDef) GetLocation() int32 { + if x != nil { + return x.Location + } + return 0 +} + +type IndexElem struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + Expr *Node `protobuf:"bytes,2,opt,name=expr,proto3" json:"expr,omitempty"` + Indexcolname string `protobuf:"bytes,3,opt,name=indexcolname,proto3" json:"indexcolname,omitempty"` + Collation []*Node `protobuf:"bytes,4,rep,name=collation,proto3" json:"collation,omitempty"` + Opclass []*Node `protobuf:"bytes,5,rep,name=opclass,proto3" json:"opclass,omitempty"` + Opclassopts []*Node `protobuf:"bytes,6,rep,name=opclassopts,proto3" json:"opclassopts,omitempty"` + Ordering SortByDir `protobuf:"varint,7,opt,name=ordering,proto3,enum=pg_query.SortByDir" json:"ordering,omitempty"` + NullsOrdering SortByNulls `protobuf:"varint,8,opt,name=nulls_ordering,proto3,enum=pg_query.SortByNulls" json:"nulls_ordering,omitempty"` +} + +func (x *IndexElem) Reset() { + *x = IndexElem{} + if protoimpl.UnsafeEnabled { + mi := &file_pg_query_proto_msgTypes[199] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *IndexElem) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*IndexElem) ProtoMessage() {} + +func (x *IndexElem) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[199] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use IndexElem.ProtoReflect.Descriptor instead. +func (*IndexElem) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{199} +} + +func (x *IndexElem) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *IndexElem) GetExpr() *Node { + if x != nil { + return x.Expr + } + return nil +} + +func (x *IndexElem) GetIndexcolname() string { + if x != nil { + return x.Indexcolname + } + return "" +} + +func (x *IndexElem) GetCollation() []*Node { + if x != nil { + return x.Collation + } + return nil +} + +func (x *IndexElem) GetOpclass() []*Node { + if x != nil { + return x.Opclass + } + return nil +} + +func (x *IndexElem) GetOpclassopts() []*Node { + if x != nil { + return x.Opclassopts + } + return nil +} + +func (x *IndexElem) GetOrdering() SortByDir { + if x != nil { + return x.Ordering + } + return SortByDir_SORT_BY_DIR_UNDEFINED +} + +func (x *IndexElem) GetNullsOrdering() SortByNulls { + if x != nil { + return x.NullsOrdering + } + return SortByNulls_SORT_BY_NULLS_UNDEFINED +} + +type Constraint struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Contype ConstrType `protobuf:"varint,1,opt,name=contype,proto3,enum=pg_query.ConstrType" json:"contype,omitempty"` + Conname string `protobuf:"bytes,2,opt,name=conname,proto3" json:"conname,omitempty"` + Deferrable bool `protobuf:"varint,3,opt,name=deferrable,proto3" json:"deferrable,omitempty"` + Initdeferred bool `protobuf:"varint,4,opt,name=initdeferred,proto3" json:"initdeferred,omitempty"` + Location int32 `protobuf:"varint,5,opt,name=location,proto3" json:"location,omitempty"` + IsNoInherit bool `protobuf:"varint,6,opt,name=is_no_inherit,proto3" json:"is_no_inherit,omitempty"` + RawExpr *Node `protobuf:"bytes,7,opt,name=raw_expr,proto3" json:"raw_expr,omitempty"` + CookedExpr string `protobuf:"bytes,8,opt,name=cooked_expr,proto3" json:"cooked_expr,omitempty"` + GeneratedWhen string `protobuf:"bytes,9,opt,name=generated_when,proto3" json:"generated_when,omitempty"` + Keys []*Node `protobuf:"bytes,10,rep,name=keys,proto3" json:"keys,omitempty"` + Including []*Node `protobuf:"bytes,11,rep,name=including,proto3" json:"including,omitempty"` + Exclusions []*Node `protobuf:"bytes,12,rep,name=exclusions,proto3" json:"exclusions,omitempty"` + Options []*Node `protobuf:"bytes,13,rep,name=options,proto3" json:"options,omitempty"` + Indexname string `protobuf:"bytes,14,opt,name=indexname,proto3" json:"indexname,omitempty"` + Indexspace string `protobuf:"bytes,15,opt,name=indexspace,proto3" json:"indexspace,omitempty"` + ResetDefaultTblspc bool `protobuf:"varint,16,opt,name=reset_default_tblspc,proto3" json:"reset_default_tblspc,omitempty"` + AccessMethod string `protobuf:"bytes,17,opt,name=access_method,proto3" json:"access_method,omitempty"` + WhereClause *Node `protobuf:"bytes,18,opt,name=where_clause,proto3" json:"where_clause,omitempty"` + Pktable *RangeVar `protobuf:"bytes,19,opt,name=pktable,proto3" json:"pktable,omitempty"` + FkAttrs []*Node `protobuf:"bytes,20,rep,name=fk_attrs,proto3" json:"fk_attrs,omitempty"` + PkAttrs []*Node `protobuf:"bytes,21,rep,name=pk_attrs,proto3" json:"pk_attrs,omitempty"` + FkMatchtype string `protobuf:"bytes,22,opt,name=fk_matchtype,proto3" json:"fk_matchtype,omitempty"` + FkUpdAction string `protobuf:"bytes,23,opt,name=fk_upd_action,proto3" json:"fk_upd_action,omitempty"` + FkDelAction string `protobuf:"bytes,24,opt,name=fk_del_action,proto3" json:"fk_del_action,omitempty"` + OldConpfeqop []*Node `protobuf:"bytes,25,rep,name=old_conpfeqop,proto3" json:"old_conpfeqop,omitempty"` + OldPktableOid uint32 `protobuf:"varint,26,opt,name=old_pktable_oid,proto3" json:"old_pktable_oid,omitempty"` + SkipValidation bool `protobuf:"varint,27,opt,name=skip_validation,proto3" json:"skip_validation,omitempty"` + InitiallyValid bool `protobuf:"varint,28,opt,name=initially_valid,proto3" json:"initially_valid,omitempty"` +} + +func (x *Constraint) Reset() { + *x = Constraint{} + if protoimpl.UnsafeEnabled { + mi := &file_pg_query_proto_msgTypes[200] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Constraint) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Constraint) ProtoMessage() {} + +func (x *Constraint) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[200] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Constraint.ProtoReflect.Descriptor instead. +func (*Constraint) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{200} +} + +func (x *Constraint) GetContype() ConstrType { + if x != nil { + return x.Contype + } + return ConstrType_CONSTR_TYPE_UNDEFINED +} + +func (x *Constraint) GetConname() string { + if x != nil { + return x.Conname + } + return "" +} + +func (x *Constraint) GetDeferrable() bool { + if x != nil { + return x.Deferrable + } + return false +} + +func (x *Constraint) GetInitdeferred() bool { + if x != nil { + return x.Initdeferred + } + return false +} + +func (x *Constraint) GetLocation() int32 { + if x != nil { + return x.Location + } + return 0 +} + +func (x *Constraint) GetIsNoInherit() bool { + if x != nil { + return x.IsNoInherit + } + return false +} + +func (x *Constraint) GetRawExpr() *Node { + if x != nil { + return x.RawExpr + } + return nil +} + +func (x *Constraint) GetCookedExpr() string { + if x != nil { + return x.CookedExpr + } + return "" +} + +func (x *Constraint) GetGeneratedWhen() string { + if x != nil { + return x.GeneratedWhen + } + return "" +} + +func (x *Constraint) GetKeys() []*Node { + if x != nil { + return x.Keys + } + return nil +} + +func (x *Constraint) GetIncluding() []*Node { + if x != nil { + return x.Including + } + return nil +} + +func (x *Constraint) GetExclusions() []*Node { + if x != nil { + return x.Exclusions + } + return nil +} + +func (x *Constraint) GetOptions() []*Node { + if x != nil { + return x.Options + } + return nil +} + +func (x *Constraint) GetIndexname() string { + if x != nil { + return x.Indexname + } + return "" +} + +func (x *Constraint) GetIndexspace() string { + if x != nil { + return x.Indexspace + } + return "" +} + +func (x *Constraint) GetResetDefaultTblspc() bool { + if x != nil { + return x.ResetDefaultTblspc + } + return false +} + +func (x *Constraint) GetAccessMethod() string { + if x != nil { + return x.AccessMethod + } + return "" +} + +func (x *Constraint) GetWhereClause() *Node { + if x != nil { + return x.WhereClause + } + return nil +} + +func (x *Constraint) GetPktable() *RangeVar { + if x != nil { + return x.Pktable + } + return nil +} + +func (x *Constraint) GetFkAttrs() []*Node { + if x != nil { + return x.FkAttrs + } + return nil +} + +func (x *Constraint) GetPkAttrs() []*Node { + if x != nil { + return x.PkAttrs + } + return nil +} + +func (x *Constraint) GetFkMatchtype() string { + if x != nil { + return x.FkMatchtype + } + return "" +} + +func (x *Constraint) GetFkUpdAction() string { + if x != nil { + return x.FkUpdAction + } + return "" +} + +func (x *Constraint) GetFkDelAction() string { + if x != nil { + return x.FkDelAction + } + return "" +} + +func (x *Constraint) GetOldConpfeqop() []*Node { + if x != nil { + return x.OldConpfeqop + } + return nil +} + +func (x *Constraint) GetOldPktableOid() uint32 { + if x != nil { + return x.OldPktableOid + } + return 0 +} + +func (x *Constraint) GetSkipValidation() bool { + if x != nil { + return x.SkipValidation + } + return false +} + +func (x *Constraint) GetInitiallyValid() bool { + if x != nil { + return x.InitiallyValid + } + return false +} + +type DefElem struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Defnamespace string `protobuf:"bytes,1,opt,name=defnamespace,proto3" json:"defnamespace,omitempty"` + Defname string `protobuf:"bytes,2,opt,name=defname,proto3" json:"defname,omitempty"` + Arg *Node `protobuf:"bytes,3,opt,name=arg,proto3" json:"arg,omitempty"` + Defaction DefElemAction `protobuf:"varint,4,opt,name=defaction,proto3,enum=pg_query.DefElemAction" json:"defaction,omitempty"` + Location int32 `protobuf:"varint,5,opt,name=location,proto3" json:"location,omitempty"` +} + +func (x *DefElem) Reset() { + *x = DefElem{} + if protoimpl.UnsafeEnabled { + mi := &file_pg_query_proto_msgTypes[201] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *DefElem) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DefElem) ProtoMessage() {} + +func (x *DefElem) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[201] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use DefElem.ProtoReflect.Descriptor instead. +func (*DefElem) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{201} +} + +func (x *DefElem) GetDefnamespace() string { + if x != nil { + return x.Defnamespace + } + return "" +} + +func (x *DefElem) GetDefname() string { + if x != nil { + return x.Defname + } + return "" +} + +func (x *DefElem) GetArg() *Node { + if x != nil { + return x.Arg + } + return nil +} + +func (x *DefElem) GetDefaction() DefElemAction { + if x != nil { + return x.Defaction + } + return DefElemAction_DEF_ELEM_ACTION_UNDEFINED +} + +func (x *DefElem) GetLocation() int32 { + if x != nil { + return x.Location + } + return 0 +} + +type RangeTblEntry struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Rtekind RTEKind `protobuf:"varint,1,opt,name=rtekind,proto3,enum=pg_query.RTEKind" json:"rtekind,omitempty"` + Relid uint32 `protobuf:"varint,2,opt,name=relid,proto3" json:"relid,omitempty"` + Relkind string `protobuf:"bytes,3,opt,name=relkind,proto3" json:"relkind,omitempty"` + Rellockmode int32 `protobuf:"varint,4,opt,name=rellockmode,proto3" json:"rellockmode,omitempty"` + Tablesample *TableSampleClause `protobuf:"bytes,5,opt,name=tablesample,proto3" json:"tablesample,omitempty"` + Subquery *Query `protobuf:"bytes,6,opt,name=subquery,proto3" json:"subquery,omitempty"` + SecurityBarrier bool `protobuf:"varint,7,opt,name=security_barrier,proto3" json:"security_barrier,omitempty"` + Jointype JoinType `protobuf:"varint,8,opt,name=jointype,proto3,enum=pg_query.JoinType" json:"jointype,omitempty"` + Joinmergedcols int32 `protobuf:"varint,9,opt,name=joinmergedcols,proto3" json:"joinmergedcols,omitempty"` + Joinaliasvars []*Node `protobuf:"bytes,10,rep,name=joinaliasvars,proto3" json:"joinaliasvars,omitempty"` + Joinleftcols []*Node `protobuf:"bytes,11,rep,name=joinleftcols,proto3" json:"joinleftcols,omitempty"` + Joinrightcols []*Node `protobuf:"bytes,12,rep,name=joinrightcols,proto3" json:"joinrightcols,omitempty"` + Functions []*Node `protobuf:"bytes,13,rep,name=functions,proto3" json:"functions,omitempty"` + Funcordinality bool `protobuf:"varint,14,opt,name=funcordinality,proto3" json:"funcordinality,omitempty"` + Tablefunc *TableFunc `protobuf:"bytes,15,opt,name=tablefunc,proto3" json:"tablefunc,omitempty"` + ValuesLists []*Node `protobuf:"bytes,16,rep,name=values_lists,proto3" json:"values_lists,omitempty"` + Ctename string `protobuf:"bytes,17,opt,name=ctename,proto3" json:"ctename,omitempty"` + Ctelevelsup uint32 `protobuf:"varint,18,opt,name=ctelevelsup,proto3" json:"ctelevelsup,omitempty"` + SelfReference bool `protobuf:"varint,19,opt,name=self_reference,proto3" json:"self_reference,omitempty"` + Coltypes []*Node `protobuf:"bytes,20,rep,name=coltypes,proto3" json:"coltypes,omitempty"` + Coltypmods []*Node `protobuf:"bytes,21,rep,name=coltypmods,proto3" json:"coltypmods,omitempty"` + Colcollations []*Node `protobuf:"bytes,22,rep,name=colcollations,proto3" json:"colcollations,omitempty"` + Enrname string `protobuf:"bytes,23,opt,name=enrname,proto3" json:"enrname,omitempty"` + Enrtuples float64 `protobuf:"fixed64,24,opt,name=enrtuples,proto3" json:"enrtuples,omitempty"` + Alias *Alias `protobuf:"bytes,25,opt,name=alias,proto3" json:"alias,omitempty"` + Eref *Alias `protobuf:"bytes,26,opt,name=eref,proto3" json:"eref,omitempty"` + Lateral bool `protobuf:"varint,27,opt,name=lateral,proto3" json:"lateral,omitempty"` + Inh bool `protobuf:"varint,28,opt,name=inh,proto3" json:"inh,omitempty"` + InFromCl bool `protobuf:"varint,29,opt,name=in_from_cl,json=inFromCl,proto3" json:"in_from_cl,omitempty"` + RequiredPerms uint32 `protobuf:"varint,30,opt,name=required_perms,json=requiredPerms,proto3" json:"required_perms,omitempty"` + CheckAsUser uint32 `protobuf:"varint,31,opt,name=check_as_user,json=checkAsUser,proto3" json:"check_as_user,omitempty"` + SelectedCols []uint64 `protobuf:"varint,32,rep,packed,name=selected_cols,json=selectedCols,proto3" json:"selected_cols,omitempty"` + InsertedCols []uint64 `protobuf:"varint,33,rep,packed,name=inserted_cols,json=insertedCols,proto3" json:"inserted_cols,omitempty"` + UpdatedCols []uint64 `protobuf:"varint,34,rep,packed,name=updated_cols,json=updatedCols,proto3" json:"updated_cols,omitempty"` + ExtraUpdatedCols []uint64 `protobuf:"varint,35,rep,packed,name=extra_updated_cols,json=extraUpdatedCols,proto3" json:"extra_updated_cols,omitempty"` + SecurityQuals []*Node `protobuf:"bytes,36,rep,name=security_quals,json=securityQuals,proto3" json:"security_quals,omitempty"` +} + +func (x *RangeTblEntry) Reset() { + *x = RangeTblEntry{} + if protoimpl.UnsafeEnabled { + mi := &file_pg_query_proto_msgTypes[202] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *RangeTblEntry) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*RangeTblEntry) ProtoMessage() {} + +func (x *RangeTblEntry) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[202] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use RangeTblEntry.ProtoReflect.Descriptor instead. +func (*RangeTblEntry) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{202} +} + +func (x *RangeTblEntry) GetRtekind() RTEKind { + if x != nil { + return x.Rtekind + } + return RTEKind_RTEKIND_UNDEFINED +} + +func (x *RangeTblEntry) GetRelid() uint32 { + if x != nil { + return x.Relid + } + return 0 +} + +func (x *RangeTblEntry) GetRelkind() string { + if x != nil { + return x.Relkind + } + return "" +} + +func (x *RangeTblEntry) GetRellockmode() int32 { + if x != nil { + return x.Rellockmode + } + return 0 +} + +func (x *RangeTblEntry) GetTablesample() *TableSampleClause { + if x != nil { + return x.Tablesample + } + return nil +} + +func (x *RangeTblEntry) GetSubquery() *Query { + if x != nil { + return x.Subquery + } + return nil +} + +func (x *RangeTblEntry) GetSecurityBarrier() bool { + if x != nil { + return x.SecurityBarrier + } + return false +} + +func (x *RangeTblEntry) GetJointype() JoinType { + if x != nil { + return x.Jointype + } + return JoinType_JOIN_TYPE_UNDEFINED +} + +func (x *RangeTblEntry) GetJoinmergedcols() int32 { + if x != nil { + return x.Joinmergedcols + } + return 0 +} + +func (x *RangeTblEntry) GetJoinaliasvars() []*Node { + if x != nil { + return x.Joinaliasvars + } + return nil +} + +func (x *RangeTblEntry) GetJoinleftcols() []*Node { + if x != nil { + return x.Joinleftcols + } + return nil +} + +func (x *RangeTblEntry) GetJoinrightcols() []*Node { + if x != nil { + return x.Joinrightcols + } + return nil +} + +func (x *RangeTblEntry) GetFunctions() []*Node { + if x != nil { + return x.Functions + } + return nil +} + +func (x *RangeTblEntry) GetFuncordinality() bool { + if x != nil { + return x.Funcordinality + } + return false +} + +func (x *RangeTblEntry) GetTablefunc() *TableFunc { + if x != nil { + return x.Tablefunc + } + return nil +} + +func (x *RangeTblEntry) GetValuesLists() []*Node { + if x != nil { + return x.ValuesLists + } + return nil +} + +func (x *RangeTblEntry) GetCtename() string { + if x != nil { + return x.Ctename + } + return "" +} + +func (x *RangeTblEntry) GetCtelevelsup() uint32 { + if x != nil { + return x.Ctelevelsup + } + return 0 +} + +func (x *RangeTblEntry) GetSelfReference() bool { + if x != nil { + return x.SelfReference + } + return false +} + +func (x *RangeTblEntry) GetColtypes() []*Node { + if x != nil { + return x.Coltypes + } + return nil +} + +func (x *RangeTblEntry) GetColtypmods() []*Node { + if x != nil { + return x.Coltypmods + } + return nil +} + +func (x *RangeTblEntry) GetColcollations() []*Node { + if x != nil { + return x.Colcollations + } + return nil +} + +func (x *RangeTblEntry) GetEnrname() string { + if x != nil { + return x.Enrname + } + return "" +} + +func (x *RangeTblEntry) GetEnrtuples() float64 { + if x != nil { + return x.Enrtuples + } + return 0 +} + +func (x *RangeTblEntry) GetAlias() *Alias { + if x != nil { + return x.Alias + } + return nil +} + +func (x *RangeTblEntry) GetEref() *Alias { + if x != nil { + return x.Eref + } + return nil +} + +func (x *RangeTblEntry) GetLateral() bool { + if x != nil { + return x.Lateral + } + return false +} + +func (x *RangeTblEntry) GetInh() bool { + if x != nil { + return x.Inh + } + return false +} + +func (x *RangeTblEntry) GetInFromCl() bool { + if x != nil { + return x.InFromCl + } + return false +} + +func (x *RangeTblEntry) GetRequiredPerms() uint32 { + if x != nil { + return x.RequiredPerms + } + return 0 +} + +func (x *RangeTblEntry) GetCheckAsUser() uint32 { + if x != nil { + return x.CheckAsUser + } + return 0 +} + +func (x *RangeTblEntry) GetSelectedCols() []uint64 { + if x != nil { + return x.SelectedCols + } + return nil +} + +func (x *RangeTblEntry) GetInsertedCols() []uint64 { + if x != nil { + return x.InsertedCols + } + return nil +} + +func (x *RangeTblEntry) GetUpdatedCols() []uint64 { + if x != nil { + return x.UpdatedCols + } + return nil +} + +func (x *RangeTblEntry) GetExtraUpdatedCols() []uint64 { + if x != nil { + return x.ExtraUpdatedCols + } + return nil +} + +func (x *RangeTblEntry) GetSecurityQuals() []*Node { + if x != nil { + return x.SecurityQuals + } + return nil +} + +type RangeTblFunction struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Funcexpr *Node `protobuf:"bytes,1,opt,name=funcexpr,proto3" json:"funcexpr,omitempty"` + Funccolcount int32 `protobuf:"varint,2,opt,name=funccolcount,proto3" json:"funccolcount,omitempty"` + Funccolnames []*Node `protobuf:"bytes,3,rep,name=funccolnames,proto3" json:"funccolnames,omitempty"` + Funccoltypes []*Node `protobuf:"bytes,4,rep,name=funccoltypes,proto3" json:"funccoltypes,omitempty"` + Funccoltypmods []*Node `protobuf:"bytes,5,rep,name=funccoltypmods,proto3" json:"funccoltypmods,omitempty"` + Funccolcollations []*Node `protobuf:"bytes,6,rep,name=funccolcollations,proto3" json:"funccolcollations,omitempty"` + Funcparams []uint64 `protobuf:"varint,7,rep,packed,name=funcparams,proto3" json:"funcparams,omitempty"` +} + +func (x *RangeTblFunction) Reset() { + *x = RangeTblFunction{} + if protoimpl.UnsafeEnabled { + mi := &file_pg_query_proto_msgTypes[203] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *RangeTblFunction) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*RangeTblFunction) ProtoMessage() {} + +func (x *RangeTblFunction) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[203] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use RangeTblFunction.ProtoReflect.Descriptor instead. +func (*RangeTblFunction) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{203} +} + +func (x *RangeTblFunction) GetFuncexpr() *Node { + if x != nil { + return x.Funcexpr + } + return nil +} + +func (x *RangeTblFunction) GetFunccolcount() int32 { + if x != nil { + return x.Funccolcount + } + return 0 +} + +func (x *RangeTblFunction) GetFunccolnames() []*Node { + if x != nil { + return x.Funccolnames + } + return nil +} + +func (x *RangeTblFunction) GetFunccoltypes() []*Node { + if x != nil { + return x.Funccoltypes + } + return nil +} + +func (x *RangeTblFunction) GetFunccoltypmods() []*Node { + if x != nil { + return x.Funccoltypmods + } + return nil +} + +func (x *RangeTblFunction) GetFunccolcollations() []*Node { + if x != nil { + return x.Funccolcollations + } + return nil +} + +func (x *RangeTblFunction) GetFuncparams() []uint64 { + if x != nil { + return x.Funcparams + } + return nil +} + +type TableSampleClause struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Tsmhandler uint32 `protobuf:"varint,1,opt,name=tsmhandler,proto3" json:"tsmhandler,omitempty"` + Args []*Node `protobuf:"bytes,2,rep,name=args,proto3" json:"args,omitempty"` + Repeatable *Node `protobuf:"bytes,3,opt,name=repeatable,proto3" json:"repeatable,omitempty"` +} + +func (x *TableSampleClause) Reset() { + *x = TableSampleClause{} + if protoimpl.UnsafeEnabled { + mi := &file_pg_query_proto_msgTypes[204] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *TableSampleClause) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*TableSampleClause) ProtoMessage() {} + +func (x *TableSampleClause) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[204] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use TableSampleClause.ProtoReflect.Descriptor instead. +func (*TableSampleClause) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{204} +} + +func (x *TableSampleClause) GetTsmhandler() uint32 { + if x != nil { + return x.Tsmhandler + } + return 0 +} + +func (x *TableSampleClause) GetArgs() []*Node { + if x != nil { + return x.Args + } + return nil +} + +func (x *TableSampleClause) GetRepeatable() *Node { + if x != nil { + return x.Repeatable + } + return nil +} + +type WithCheckOption struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Kind WCOKind `protobuf:"varint,1,opt,name=kind,proto3,enum=pg_query.WCOKind" json:"kind,omitempty"` + Relname string `protobuf:"bytes,2,opt,name=relname,proto3" json:"relname,omitempty"` + Polname string `protobuf:"bytes,3,opt,name=polname,proto3" json:"polname,omitempty"` + Qual *Node `protobuf:"bytes,4,opt,name=qual,proto3" json:"qual,omitempty"` + Cascaded bool `protobuf:"varint,5,opt,name=cascaded,proto3" json:"cascaded,omitempty"` +} + +func (x *WithCheckOption) Reset() { + *x = WithCheckOption{} + if protoimpl.UnsafeEnabled { + mi := &file_pg_query_proto_msgTypes[205] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *WithCheckOption) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*WithCheckOption) ProtoMessage() {} + +func (x *WithCheckOption) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[205] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use WithCheckOption.ProtoReflect.Descriptor instead. +func (*WithCheckOption) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{205} +} + +func (x *WithCheckOption) GetKind() WCOKind { + if x != nil { + return x.Kind + } + return WCOKind_WCOKIND_UNDEFINED +} + +func (x *WithCheckOption) GetRelname() string { + if x != nil { + return x.Relname + } + return "" +} + +func (x *WithCheckOption) GetPolname() string { + if x != nil { + return x.Polname + } + return "" +} + +func (x *WithCheckOption) GetQual() *Node { + if x != nil { + return x.Qual + } + return nil +} + +func (x *WithCheckOption) GetCascaded() bool { + if x != nil { + return x.Cascaded + } + return false +} + +type SortGroupClause struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + TleSortGroupRef uint32 `protobuf:"varint,1,opt,name=tle_sort_group_ref,json=tleSortGroupRef,proto3" json:"tle_sort_group_ref,omitempty"` + Eqop uint32 `protobuf:"varint,2,opt,name=eqop,proto3" json:"eqop,omitempty"` + Sortop uint32 `protobuf:"varint,3,opt,name=sortop,proto3" json:"sortop,omitempty"` + NullsFirst bool `protobuf:"varint,4,opt,name=nulls_first,proto3" json:"nulls_first,omitempty"` + Hashable bool `protobuf:"varint,5,opt,name=hashable,proto3" json:"hashable,omitempty"` +} + +func (x *SortGroupClause) Reset() { + *x = SortGroupClause{} + if protoimpl.UnsafeEnabled { + mi := &file_pg_query_proto_msgTypes[206] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *SortGroupClause) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SortGroupClause) ProtoMessage() {} + +func (x *SortGroupClause) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[206] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SortGroupClause.ProtoReflect.Descriptor instead. +func (*SortGroupClause) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{206} +} + +func (x *SortGroupClause) GetTleSortGroupRef() uint32 { + if x != nil { + return x.TleSortGroupRef + } + return 0 +} + +func (x *SortGroupClause) GetEqop() uint32 { + if x != nil { + return x.Eqop + } + return 0 +} + +func (x *SortGroupClause) GetSortop() uint32 { + if x != nil { + return x.Sortop + } + return 0 +} + +func (x *SortGroupClause) GetNullsFirst() bool { + if x != nil { + return x.NullsFirst + } + return false +} + +func (x *SortGroupClause) GetHashable() bool { + if x != nil { + return x.Hashable + } + return false +} + +type GroupingSet struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Kind GroupingSetKind `protobuf:"varint,1,opt,name=kind,proto3,enum=pg_query.GroupingSetKind" json:"kind,omitempty"` + Content []*Node `protobuf:"bytes,2,rep,name=content,proto3" json:"content,omitempty"` + Location int32 `protobuf:"varint,3,opt,name=location,proto3" json:"location,omitempty"` +} + +func (x *GroupingSet) Reset() { + *x = GroupingSet{} + if protoimpl.UnsafeEnabled { + mi := &file_pg_query_proto_msgTypes[207] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GroupingSet) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GroupingSet) ProtoMessage() {} + +func (x *GroupingSet) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[207] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GroupingSet.ProtoReflect.Descriptor instead. +func (*GroupingSet) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{207} +} + +func (x *GroupingSet) GetKind() GroupingSetKind { + if x != nil { + return x.Kind + } + return GroupingSetKind_GROUPING_SET_KIND_UNDEFINED +} + +func (x *GroupingSet) GetContent() []*Node { + if x != nil { + return x.Content + } + return nil +} + +func (x *GroupingSet) GetLocation() int32 { + if x != nil { + return x.Location + } + return 0 +} + +type WindowClause struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + Refname string `protobuf:"bytes,2,opt,name=refname,proto3" json:"refname,omitempty"` + PartitionClause []*Node `protobuf:"bytes,3,rep,name=partition_clause,json=partitionClause,proto3" json:"partition_clause,omitempty"` + OrderClause []*Node `protobuf:"bytes,4,rep,name=order_clause,json=orderClause,proto3" json:"order_clause,omitempty"` + FrameOptions int32 `protobuf:"varint,5,opt,name=frame_options,json=frameOptions,proto3" json:"frame_options,omitempty"` + StartOffset *Node `protobuf:"bytes,6,opt,name=start_offset,json=startOffset,proto3" json:"start_offset,omitempty"` + EndOffset *Node `protobuf:"bytes,7,opt,name=end_offset,json=endOffset,proto3" json:"end_offset,omitempty"` + StartInRangeFunc uint32 `protobuf:"varint,8,opt,name=start_in_range_func,json=startInRangeFunc,proto3" json:"start_in_range_func,omitempty"` + EndInRangeFunc uint32 `protobuf:"varint,9,opt,name=end_in_range_func,json=endInRangeFunc,proto3" json:"end_in_range_func,omitempty"` + InRangeColl uint32 `protobuf:"varint,10,opt,name=in_range_coll,json=inRangeColl,proto3" json:"in_range_coll,omitempty"` + InRangeAsc bool `protobuf:"varint,11,opt,name=in_range_asc,json=inRangeAsc,proto3" json:"in_range_asc,omitempty"` + InRangeNullsFirst bool `protobuf:"varint,12,opt,name=in_range_nulls_first,json=inRangeNullsFirst,proto3" json:"in_range_nulls_first,omitempty"` + Winref uint32 `protobuf:"varint,13,opt,name=winref,proto3" json:"winref,omitempty"` + CopiedOrder bool `protobuf:"varint,14,opt,name=copied_order,json=copiedOrder,proto3" json:"copied_order,omitempty"` +} + +func (x *WindowClause) Reset() { + *x = WindowClause{} + if protoimpl.UnsafeEnabled { + mi := &file_pg_query_proto_msgTypes[208] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *WindowClause) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*WindowClause) ProtoMessage() {} + +func (x *WindowClause) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[208] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use WindowClause.ProtoReflect.Descriptor instead. +func (*WindowClause) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{208} +} + +func (x *WindowClause) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *WindowClause) GetRefname() string { + if x != nil { + return x.Refname + } + return "" +} + +func (x *WindowClause) GetPartitionClause() []*Node { + if x != nil { + return x.PartitionClause + } + return nil +} + +func (x *WindowClause) GetOrderClause() []*Node { + if x != nil { + return x.OrderClause + } + return nil +} + +func (x *WindowClause) GetFrameOptions() int32 { + if x != nil { + return x.FrameOptions + } + return 0 +} + +func (x *WindowClause) GetStartOffset() *Node { + if x != nil { + return x.StartOffset + } + return nil +} + +func (x *WindowClause) GetEndOffset() *Node { + if x != nil { + return x.EndOffset + } + return nil +} + +func (x *WindowClause) GetStartInRangeFunc() uint32 { + if x != nil { + return x.StartInRangeFunc + } + return 0 +} + +func (x *WindowClause) GetEndInRangeFunc() uint32 { + if x != nil { + return x.EndInRangeFunc + } + return 0 +} + +func (x *WindowClause) GetInRangeColl() uint32 { + if x != nil { + return x.InRangeColl + } + return 0 +} + +func (x *WindowClause) GetInRangeAsc() bool { + if x != nil { + return x.InRangeAsc + } + return false +} + +func (x *WindowClause) GetInRangeNullsFirst() bool { + if x != nil { + return x.InRangeNullsFirst + } + return false +} + +func (x *WindowClause) GetWinref() uint32 { + if x != nil { + return x.Winref + } + return 0 +} + +func (x *WindowClause) GetCopiedOrder() bool { + if x != nil { + return x.CopiedOrder + } + return false +} + +type ObjectWithArgs struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Objname []*Node `protobuf:"bytes,1,rep,name=objname,proto3" json:"objname,omitempty"` + Objargs []*Node `protobuf:"bytes,2,rep,name=objargs,proto3" json:"objargs,omitempty"` + ArgsUnspecified bool `protobuf:"varint,3,opt,name=args_unspecified,proto3" json:"args_unspecified,omitempty"` +} + +func (x *ObjectWithArgs) Reset() { + *x = ObjectWithArgs{} + if protoimpl.UnsafeEnabled { + mi := &file_pg_query_proto_msgTypes[209] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ObjectWithArgs) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ObjectWithArgs) ProtoMessage() {} + +func (x *ObjectWithArgs) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[209] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ObjectWithArgs.ProtoReflect.Descriptor instead. +func (*ObjectWithArgs) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{209} +} + +func (x *ObjectWithArgs) GetObjname() []*Node { + if x != nil { + return x.Objname + } + return nil +} + +func (x *ObjectWithArgs) GetObjargs() []*Node { + if x != nil { + return x.Objargs + } + return nil +} + +func (x *ObjectWithArgs) GetArgsUnspecified() bool { + if x != nil { + return x.ArgsUnspecified + } + return false +} + +type AccessPriv struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + PrivName string `protobuf:"bytes,1,opt,name=priv_name,proto3" json:"priv_name,omitempty"` + Cols []*Node `protobuf:"bytes,2,rep,name=cols,proto3" json:"cols,omitempty"` +} + +func (x *AccessPriv) Reset() { + *x = AccessPriv{} + if protoimpl.UnsafeEnabled { + mi := &file_pg_query_proto_msgTypes[210] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *AccessPriv) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*AccessPriv) ProtoMessage() {} + +func (x *AccessPriv) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[210] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use AccessPriv.ProtoReflect.Descriptor instead. +func (*AccessPriv) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{210} +} + +func (x *AccessPriv) GetPrivName() string { + if x != nil { + return x.PrivName + } + return "" +} + +func (x *AccessPriv) GetCols() []*Node { + if x != nil { + return x.Cols + } + return nil +} + +type CreateOpClassItem struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Itemtype int32 `protobuf:"varint,1,opt,name=itemtype,proto3" json:"itemtype,omitempty"` + Name *ObjectWithArgs `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` + Number int32 `protobuf:"varint,3,opt,name=number,proto3" json:"number,omitempty"` + OrderFamily []*Node `protobuf:"bytes,4,rep,name=order_family,proto3" json:"order_family,omitempty"` + ClassArgs []*Node `protobuf:"bytes,5,rep,name=class_args,proto3" json:"class_args,omitempty"` + Storedtype *TypeName `protobuf:"bytes,6,opt,name=storedtype,proto3" json:"storedtype,omitempty"` +} + +func (x *CreateOpClassItem) Reset() { + *x = CreateOpClassItem{} + if protoimpl.UnsafeEnabled { + mi := &file_pg_query_proto_msgTypes[211] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *CreateOpClassItem) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CreateOpClassItem) ProtoMessage() {} + +func (x *CreateOpClassItem) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[211] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CreateOpClassItem.ProtoReflect.Descriptor instead. +func (*CreateOpClassItem) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{211} +} + +func (x *CreateOpClassItem) GetItemtype() int32 { + if x != nil { + return x.Itemtype + } + return 0 +} + +func (x *CreateOpClassItem) GetName() *ObjectWithArgs { + if x != nil { + return x.Name + } + return nil +} + +func (x *CreateOpClassItem) GetNumber() int32 { + if x != nil { + return x.Number + } + return 0 +} + +func (x *CreateOpClassItem) GetOrderFamily() []*Node { + if x != nil { + return x.OrderFamily + } + return nil +} + +func (x *CreateOpClassItem) GetClassArgs() []*Node { + if x != nil { + return x.ClassArgs + } + return nil +} + +func (x *CreateOpClassItem) GetStoredtype() *TypeName { + if x != nil { + return x.Storedtype + } + return nil +} + +type TableLikeClause struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Relation *RangeVar `protobuf:"bytes,1,opt,name=relation,proto3" json:"relation,omitempty"` + Options uint32 `protobuf:"varint,2,opt,name=options,proto3" json:"options,omitempty"` +} + +func (x *TableLikeClause) Reset() { + *x = TableLikeClause{} + if protoimpl.UnsafeEnabled { + mi := &file_pg_query_proto_msgTypes[212] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *TableLikeClause) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*TableLikeClause) ProtoMessage() {} + +func (x *TableLikeClause) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[212] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use TableLikeClause.ProtoReflect.Descriptor instead. +func (*TableLikeClause) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{212} +} + +func (x *TableLikeClause) GetRelation() *RangeVar { + if x != nil { + return x.Relation + } + return nil +} + +func (x *TableLikeClause) GetOptions() uint32 { + if x != nil { + return x.Options + } + return 0 +} + +type FunctionParameter struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + ArgType *TypeName `protobuf:"bytes,2,opt,name=arg_type,json=argType,proto3" json:"arg_type,omitempty"` + Mode FunctionParameterMode `protobuf:"varint,3,opt,name=mode,proto3,enum=pg_query.FunctionParameterMode" json:"mode,omitempty"` + Defexpr *Node `protobuf:"bytes,4,opt,name=defexpr,proto3" json:"defexpr,omitempty"` +} + +func (x *FunctionParameter) Reset() { + *x = FunctionParameter{} + if protoimpl.UnsafeEnabled { + mi := &file_pg_query_proto_msgTypes[213] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *FunctionParameter) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*FunctionParameter) ProtoMessage() {} + +func (x *FunctionParameter) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[213] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use FunctionParameter.ProtoReflect.Descriptor instead. +func (*FunctionParameter) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{213} +} + +func (x *FunctionParameter) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *FunctionParameter) GetArgType() *TypeName { + if x != nil { + return x.ArgType + } + return nil +} + +func (x *FunctionParameter) GetMode() FunctionParameterMode { + if x != nil { + return x.Mode + } + return FunctionParameterMode_FUNCTION_PARAMETER_MODE_UNDEFINED +} + +func (x *FunctionParameter) GetDefexpr() *Node { + if x != nil { + return x.Defexpr + } + return nil +} + +type LockingClause struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + LockedRels []*Node `protobuf:"bytes,1,rep,name=locked_rels,json=lockedRels,proto3" json:"locked_rels,omitempty"` + Strength LockClauseStrength `protobuf:"varint,2,opt,name=strength,proto3,enum=pg_query.LockClauseStrength" json:"strength,omitempty"` + WaitPolicy LockWaitPolicy `protobuf:"varint,3,opt,name=wait_policy,json=waitPolicy,proto3,enum=pg_query.LockWaitPolicy" json:"wait_policy,omitempty"` +} + +func (x *LockingClause) Reset() { + *x = LockingClause{} + if protoimpl.UnsafeEnabled { + mi := &file_pg_query_proto_msgTypes[214] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *LockingClause) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*LockingClause) ProtoMessage() {} + +func (x *LockingClause) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[214] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use LockingClause.ProtoReflect.Descriptor instead. +func (*LockingClause) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{214} +} + +func (x *LockingClause) GetLockedRels() []*Node { + if x != nil { + return x.LockedRels + } + return nil +} + +func (x *LockingClause) GetStrength() LockClauseStrength { + if x != nil { + return x.Strength + } + return LockClauseStrength_LOCK_CLAUSE_STRENGTH_UNDEFINED +} + +func (x *LockingClause) GetWaitPolicy() LockWaitPolicy { + if x != nil { + return x.WaitPolicy + } + return LockWaitPolicy_LOCK_WAIT_POLICY_UNDEFINED +} + +type RowMarkClause struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Rti uint32 `protobuf:"varint,1,opt,name=rti,proto3" json:"rti,omitempty"` + Strength LockClauseStrength `protobuf:"varint,2,opt,name=strength,proto3,enum=pg_query.LockClauseStrength" json:"strength,omitempty"` + WaitPolicy LockWaitPolicy `protobuf:"varint,3,opt,name=wait_policy,json=waitPolicy,proto3,enum=pg_query.LockWaitPolicy" json:"wait_policy,omitempty"` + PushedDown bool `protobuf:"varint,4,opt,name=pushed_down,json=pushedDown,proto3" json:"pushed_down,omitempty"` +} + +func (x *RowMarkClause) Reset() { + *x = RowMarkClause{} + if protoimpl.UnsafeEnabled { + mi := &file_pg_query_proto_msgTypes[215] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *RowMarkClause) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*RowMarkClause) ProtoMessage() {} + +func (x *RowMarkClause) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[215] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use RowMarkClause.ProtoReflect.Descriptor instead. +func (*RowMarkClause) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{215} +} + +func (x *RowMarkClause) GetRti() uint32 { + if x != nil { + return x.Rti + } + return 0 +} + +func (x *RowMarkClause) GetStrength() LockClauseStrength { + if x != nil { + return x.Strength + } + return LockClauseStrength_LOCK_CLAUSE_STRENGTH_UNDEFINED +} + +func (x *RowMarkClause) GetWaitPolicy() LockWaitPolicy { + if x != nil { + return x.WaitPolicy + } + return LockWaitPolicy_LOCK_WAIT_POLICY_UNDEFINED +} + +func (x *RowMarkClause) GetPushedDown() bool { + if x != nil { + return x.PushedDown + } + return false +} + +type XmlSerialize struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Xmloption XmlOptionType `protobuf:"varint,1,opt,name=xmloption,proto3,enum=pg_query.XmlOptionType" json:"xmloption,omitempty"` + Expr *Node `protobuf:"bytes,2,opt,name=expr,proto3" json:"expr,omitempty"` + TypeName *TypeName `protobuf:"bytes,3,opt,name=type_name,json=typeName,proto3" json:"type_name,omitempty"` + Location int32 `protobuf:"varint,4,opt,name=location,proto3" json:"location,omitempty"` +} + +func (x *XmlSerialize) Reset() { + *x = XmlSerialize{} + if protoimpl.UnsafeEnabled { + mi := &file_pg_query_proto_msgTypes[216] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *XmlSerialize) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*XmlSerialize) ProtoMessage() {} + +func (x *XmlSerialize) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[216] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use XmlSerialize.ProtoReflect.Descriptor instead. +func (*XmlSerialize) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{216} +} + +func (x *XmlSerialize) GetXmloption() XmlOptionType { + if x != nil { + return x.Xmloption + } + return XmlOptionType_XML_OPTION_TYPE_UNDEFINED +} + +func (x *XmlSerialize) GetExpr() *Node { + if x != nil { + return x.Expr + } + return nil +} + +func (x *XmlSerialize) GetTypeName() *TypeName { + if x != nil { + return x.TypeName + } + return nil +} + +func (x *XmlSerialize) GetLocation() int32 { + if x != nil { + return x.Location + } + return 0 +} + +type WithClause struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Ctes []*Node `protobuf:"bytes,1,rep,name=ctes,proto3" json:"ctes,omitempty"` + Recursive bool `protobuf:"varint,2,opt,name=recursive,proto3" json:"recursive,omitempty"` + Location int32 `protobuf:"varint,3,opt,name=location,proto3" json:"location,omitempty"` +} + +func (x *WithClause) Reset() { + *x = WithClause{} + if protoimpl.UnsafeEnabled { + mi := &file_pg_query_proto_msgTypes[217] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *WithClause) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*WithClause) ProtoMessage() {} + +func (x *WithClause) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[217] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use WithClause.ProtoReflect.Descriptor instead. +func (*WithClause) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{217} +} + +func (x *WithClause) GetCtes() []*Node { + if x != nil { + return x.Ctes + } + return nil +} + +func (x *WithClause) GetRecursive() bool { + if x != nil { + return x.Recursive + } + return false +} + +func (x *WithClause) GetLocation() int32 { + if x != nil { + return x.Location + } + return 0 +} + +type InferClause struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + IndexElems []*Node `protobuf:"bytes,1,rep,name=index_elems,json=indexElems,proto3" json:"index_elems,omitempty"` + WhereClause *Node `protobuf:"bytes,2,opt,name=where_clause,json=whereClause,proto3" json:"where_clause,omitempty"` + Conname string `protobuf:"bytes,3,opt,name=conname,proto3" json:"conname,omitempty"` + Location int32 `protobuf:"varint,4,opt,name=location,proto3" json:"location,omitempty"` +} + +func (x *InferClause) Reset() { + *x = InferClause{} + if protoimpl.UnsafeEnabled { + mi := &file_pg_query_proto_msgTypes[218] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *InferClause) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*InferClause) ProtoMessage() {} + +func (x *InferClause) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[218] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use InferClause.ProtoReflect.Descriptor instead. +func (*InferClause) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{218} +} + +func (x *InferClause) GetIndexElems() []*Node { + if x != nil { + return x.IndexElems + } + return nil +} + +func (x *InferClause) GetWhereClause() *Node { + if x != nil { + return x.WhereClause + } + return nil +} + +func (x *InferClause) GetConname() string { + if x != nil { + return x.Conname + } + return "" +} + +func (x *InferClause) GetLocation() int32 { + if x != nil { + return x.Location + } + return 0 +} + +type OnConflictClause struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Action OnConflictAction `protobuf:"varint,1,opt,name=action,proto3,enum=pg_query.OnConflictAction" json:"action,omitempty"` + Infer *InferClause `protobuf:"bytes,2,opt,name=infer,proto3" json:"infer,omitempty"` + TargetList []*Node `protobuf:"bytes,3,rep,name=target_list,json=targetList,proto3" json:"target_list,omitempty"` + WhereClause *Node `protobuf:"bytes,4,opt,name=where_clause,json=whereClause,proto3" json:"where_clause,omitempty"` + Location int32 `protobuf:"varint,5,opt,name=location,proto3" json:"location,omitempty"` +} + +func (x *OnConflictClause) Reset() { + *x = OnConflictClause{} + if protoimpl.UnsafeEnabled { + mi := &file_pg_query_proto_msgTypes[219] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *OnConflictClause) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*OnConflictClause) ProtoMessage() {} + +func (x *OnConflictClause) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[219] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use OnConflictClause.ProtoReflect.Descriptor instead. +func (*OnConflictClause) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{219} +} + +func (x *OnConflictClause) GetAction() OnConflictAction { + if x != nil { + return x.Action + } + return OnConflictAction_ON_CONFLICT_ACTION_UNDEFINED +} + +func (x *OnConflictClause) GetInfer() *InferClause { + if x != nil { + return x.Infer + } + return nil +} + +func (x *OnConflictClause) GetTargetList() []*Node { + if x != nil { + return x.TargetList + } + return nil +} + +func (x *OnConflictClause) GetWhereClause() *Node { + if x != nil { + return x.WhereClause + } + return nil +} + +func (x *OnConflictClause) GetLocation() int32 { + if x != nil { + return x.Location + } + return 0 +} + +type CommonTableExpr struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Ctename string `protobuf:"bytes,1,opt,name=ctename,proto3" json:"ctename,omitempty"` + Aliascolnames []*Node `protobuf:"bytes,2,rep,name=aliascolnames,proto3" json:"aliascolnames,omitempty"` + Ctematerialized CTEMaterialize `protobuf:"varint,3,opt,name=ctematerialized,proto3,enum=pg_query.CTEMaterialize" json:"ctematerialized,omitempty"` + Ctequery *Node `protobuf:"bytes,4,opt,name=ctequery,proto3" json:"ctequery,omitempty"` + Location int32 `protobuf:"varint,5,opt,name=location,proto3" json:"location,omitempty"` + Cterecursive bool `protobuf:"varint,6,opt,name=cterecursive,proto3" json:"cterecursive,omitempty"` + Cterefcount int32 `protobuf:"varint,7,opt,name=cterefcount,proto3" json:"cterefcount,omitempty"` + Ctecolnames []*Node `protobuf:"bytes,8,rep,name=ctecolnames,proto3" json:"ctecolnames,omitempty"` + Ctecoltypes []*Node `protobuf:"bytes,9,rep,name=ctecoltypes,proto3" json:"ctecoltypes,omitempty"` + Ctecoltypmods []*Node `protobuf:"bytes,10,rep,name=ctecoltypmods,proto3" json:"ctecoltypmods,omitempty"` + Ctecolcollations []*Node `protobuf:"bytes,11,rep,name=ctecolcollations,proto3" json:"ctecolcollations,omitempty"` +} + +func (x *CommonTableExpr) Reset() { + *x = CommonTableExpr{} + if protoimpl.UnsafeEnabled { + mi := &file_pg_query_proto_msgTypes[220] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *CommonTableExpr) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CommonTableExpr) ProtoMessage() {} + +func (x *CommonTableExpr) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[220] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CommonTableExpr.ProtoReflect.Descriptor instead. +func (*CommonTableExpr) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{220} +} + +func (x *CommonTableExpr) GetCtename() string { + if x != nil { + return x.Ctename + } + return "" +} + +func (x *CommonTableExpr) GetAliascolnames() []*Node { + if x != nil { + return x.Aliascolnames + } + return nil +} + +func (x *CommonTableExpr) GetCtematerialized() CTEMaterialize { + if x != nil { + return x.Ctematerialized + } + return CTEMaterialize_CTEMATERIALIZE_UNDEFINED +} + +func (x *CommonTableExpr) GetCtequery() *Node { + if x != nil { + return x.Ctequery + } + return nil +} + +func (x *CommonTableExpr) GetLocation() int32 { + if x != nil { + return x.Location + } + return 0 +} + +func (x *CommonTableExpr) GetCterecursive() bool { + if x != nil { + return x.Cterecursive + } + return false +} + +func (x *CommonTableExpr) GetCterefcount() int32 { + if x != nil { + return x.Cterefcount + } + return 0 +} + +func (x *CommonTableExpr) GetCtecolnames() []*Node { + if x != nil { + return x.Ctecolnames + } + return nil +} + +func (x *CommonTableExpr) GetCtecoltypes() []*Node { + if x != nil { + return x.Ctecoltypes + } + return nil +} + +func (x *CommonTableExpr) GetCtecoltypmods() []*Node { + if x != nil { + return x.Ctecoltypmods + } + return nil +} + +func (x *CommonTableExpr) GetCtecolcollations() []*Node { + if x != nil { + return x.Ctecolcollations + } + return nil +} + +type RoleSpec struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Roletype RoleSpecType `protobuf:"varint,1,opt,name=roletype,proto3,enum=pg_query.RoleSpecType" json:"roletype,omitempty"` + Rolename string `protobuf:"bytes,2,opt,name=rolename,proto3" json:"rolename,omitempty"` + Location int32 `protobuf:"varint,3,opt,name=location,proto3" json:"location,omitempty"` +} + +func (x *RoleSpec) Reset() { + *x = RoleSpec{} + if protoimpl.UnsafeEnabled { + mi := &file_pg_query_proto_msgTypes[221] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *RoleSpec) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*RoleSpec) ProtoMessage() {} + +func (x *RoleSpec) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[221] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use RoleSpec.ProtoReflect.Descriptor instead. +func (*RoleSpec) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{221} +} + +func (x *RoleSpec) GetRoletype() RoleSpecType { + if x != nil { + return x.Roletype + } + return RoleSpecType_ROLE_SPEC_TYPE_UNDEFINED +} + +func (x *RoleSpec) GetRolename() string { + if x != nil { + return x.Rolename + } + return "" +} + +func (x *RoleSpec) GetLocation() int32 { + if x != nil { + return x.Location + } + return 0 +} + +type TriggerTransition struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + IsNew bool `protobuf:"varint,2,opt,name=is_new,json=isNew,proto3" json:"is_new,omitempty"` + IsTable bool `protobuf:"varint,3,opt,name=is_table,json=isTable,proto3" json:"is_table,omitempty"` +} + +func (x *TriggerTransition) Reset() { + *x = TriggerTransition{} + if protoimpl.UnsafeEnabled { + mi := &file_pg_query_proto_msgTypes[222] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *TriggerTransition) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*TriggerTransition) ProtoMessage() {} + +func (x *TriggerTransition) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[222] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use TriggerTransition.ProtoReflect.Descriptor instead. +func (*TriggerTransition) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{222} +} + +func (x *TriggerTransition) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *TriggerTransition) GetIsNew() bool { + if x != nil { + return x.IsNew + } + return false +} + +func (x *TriggerTransition) GetIsTable() bool { + if x != nil { + return x.IsTable + } + return false +} + +type PartitionElem struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + Expr *Node `protobuf:"bytes,2,opt,name=expr,proto3" json:"expr,omitempty"` + Collation []*Node `protobuf:"bytes,3,rep,name=collation,proto3" json:"collation,omitempty"` + Opclass []*Node `protobuf:"bytes,4,rep,name=opclass,proto3" json:"opclass,omitempty"` + Location int32 `protobuf:"varint,5,opt,name=location,proto3" json:"location,omitempty"` +} + +func (x *PartitionElem) Reset() { + *x = PartitionElem{} + if protoimpl.UnsafeEnabled { + mi := &file_pg_query_proto_msgTypes[223] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PartitionElem) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PartitionElem) ProtoMessage() {} + +func (x *PartitionElem) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[223] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PartitionElem.ProtoReflect.Descriptor instead. +func (*PartitionElem) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{223} +} + +func (x *PartitionElem) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *PartitionElem) GetExpr() *Node { + if x != nil { + return x.Expr + } + return nil +} + +func (x *PartitionElem) GetCollation() []*Node { + if x != nil { + return x.Collation + } + return nil +} + +func (x *PartitionElem) GetOpclass() []*Node { + if x != nil { + return x.Opclass + } + return nil +} + +func (x *PartitionElem) GetLocation() int32 { + if x != nil { + return x.Location + } + return 0 +} + +type PartitionSpec struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Strategy string `protobuf:"bytes,1,opt,name=strategy,proto3" json:"strategy,omitempty"` + PartParams []*Node `protobuf:"bytes,2,rep,name=part_params,json=partParams,proto3" json:"part_params,omitempty"` + Location int32 `protobuf:"varint,3,opt,name=location,proto3" json:"location,omitempty"` +} + +func (x *PartitionSpec) Reset() { + *x = PartitionSpec{} + if protoimpl.UnsafeEnabled { + mi := &file_pg_query_proto_msgTypes[224] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PartitionSpec) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PartitionSpec) ProtoMessage() {} + +func (x *PartitionSpec) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[224] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PartitionSpec.ProtoReflect.Descriptor instead. +func (*PartitionSpec) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{224} +} + +func (x *PartitionSpec) GetStrategy() string { + if x != nil { + return x.Strategy + } + return "" +} + +func (x *PartitionSpec) GetPartParams() []*Node { + if x != nil { + return x.PartParams + } + return nil +} + +func (x *PartitionSpec) GetLocation() int32 { + if x != nil { + return x.Location + } + return 0 +} + +type PartitionBoundSpec struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Strategy string `protobuf:"bytes,1,opt,name=strategy,proto3" json:"strategy,omitempty"` + IsDefault bool `protobuf:"varint,2,opt,name=is_default,proto3" json:"is_default,omitempty"` + Modulus int32 `protobuf:"varint,3,opt,name=modulus,proto3" json:"modulus,omitempty"` + Remainder int32 `protobuf:"varint,4,opt,name=remainder,proto3" json:"remainder,omitempty"` + Listdatums []*Node `protobuf:"bytes,5,rep,name=listdatums,proto3" json:"listdatums,omitempty"` + Lowerdatums []*Node `protobuf:"bytes,6,rep,name=lowerdatums,proto3" json:"lowerdatums,omitempty"` + Upperdatums []*Node `protobuf:"bytes,7,rep,name=upperdatums,proto3" json:"upperdatums,omitempty"` + Location int32 `protobuf:"varint,8,opt,name=location,proto3" json:"location,omitempty"` +} + +func (x *PartitionBoundSpec) Reset() { + *x = PartitionBoundSpec{} + if protoimpl.UnsafeEnabled { + mi := &file_pg_query_proto_msgTypes[225] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PartitionBoundSpec) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PartitionBoundSpec) ProtoMessage() {} + +func (x *PartitionBoundSpec) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[225] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PartitionBoundSpec.ProtoReflect.Descriptor instead. +func (*PartitionBoundSpec) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{225} +} + +func (x *PartitionBoundSpec) GetStrategy() string { + if x != nil { + return x.Strategy + } + return "" +} + +func (x *PartitionBoundSpec) GetIsDefault() bool { + if x != nil { + return x.IsDefault + } + return false +} + +func (x *PartitionBoundSpec) GetModulus() int32 { + if x != nil { + return x.Modulus + } + return 0 +} + +func (x *PartitionBoundSpec) GetRemainder() int32 { + if x != nil { + return x.Remainder + } + return 0 +} + +func (x *PartitionBoundSpec) GetListdatums() []*Node { + if x != nil { + return x.Listdatums + } + return nil +} + +func (x *PartitionBoundSpec) GetLowerdatums() []*Node { + if x != nil { + return x.Lowerdatums + } + return nil +} + +func (x *PartitionBoundSpec) GetUpperdatums() []*Node { + if x != nil { + return x.Upperdatums + } + return nil +} + +func (x *PartitionBoundSpec) GetLocation() int32 { + if x != nil { + return x.Location + } + return 0 +} + +type PartitionRangeDatum struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Kind PartitionRangeDatumKind `protobuf:"varint,1,opt,name=kind,proto3,enum=pg_query.PartitionRangeDatumKind" json:"kind,omitempty"` + Value *Node `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"` + Location int32 `protobuf:"varint,3,opt,name=location,proto3" json:"location,omitempty"` +} + +func (x *PartitionRangeDatum) Reset() { + *x = PartitionRangeDatum{} + if protoimpl.UnsafeEnabled { + mi := &file_pg_query_proto_msgTypes[226] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PartitionRangeDatum) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PartitionRangeDatum) ProtoMessage() {} + +func (x *PartitionRangeDatum) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[226] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PartitionRangeDatum.ProtoReflect.Descriptor instead. +func (*PartitionRangeDatum) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{226} +} + +func (x *PartitionRangeDatum) GetKind() PartitionRangeDatumKind { + if x != nil { + return x.Kind + } + return PartitionRangeDatumKind_PARTITION_RANGE_DATUM_KIND_UNDEFINED +} + +func (x *PartitionRangeDatum) GetValue() *Node { + if x != nil { + return x.Value + } + return nil +} + +func (x *PartitionRangeDatum) GetLocation() int32 { + if x != nil { + return x.Location + } + return 0 +} + +type PartitionCmd struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Name *RangeVar `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + Bound *PartitionBoundSpec `protobuf:"bytes,2,opt,name=bound,proto3" json:"bound,omitempty"` +} + +func (x *PartitionCmd) Reset() { + *x = PartitionCmd{} + if protoimpl.UnsafeEnabled { + mi := &file_pg_query_proto_msgTypes[227] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PartitionCmd) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PartitionCmd) ProtoMessage() {} + +func (x *PartitionCmd) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[227] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PartitionCmd.ProtoReflect.Descriptor instead. +func (*PartitionCmd) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{227} +} + +func (x *PartitionCmd) GetName() *RangeVar { + if x != nil { + return x.Name + } + return nil +} + +func (x *PartitionCmd) GetBound() *PartitionBoundSpec { + if x != nil { + return x.Bound + } + return nil +} + +type VacuumRelation struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Relation *RangeVar `protobuf:"bytes,1,opt,name=relation,proto3" json:"relation,omitempty"` + Oid uint32 `protobuf:"varint,2,opt,name=oid,proto3" json:"oid,omitempty"` + VaCols []*Node `protobuf:"bytes,3,rep,name=va_cols,proto3" json:"va_cols,omitempty"` +} + +func (x *VacuumRelation) Reset() { + *x = VacuumRelation{} + if protoimpl.UnsafeEnabled { + mi := &file_pg_query_proto_msgTypes[228] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *VacuumRelation) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*VacuumRelation) ProtoMessage() {} + +func (x *VacuumRelation) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[228] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use VacuumRelation.ProtoReflect.Descriptor instead. +func (*VacuumRelation) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{228} +} + +func (x *VacuumRelation) GetRelation() *RangeVar { + if x != nil { + return x.Relation + } + return nil +} + +func (x *VacuumRelation) GetOid() uint32 { + if x != nil { + return x.Oid + } + return 0 +} + +func (x *VacuumRelation) GetVaCols() []*Node { + if x != nil { + return x.VaCols + } + return nil +} + +type InlineCodeBlock struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + SourceText string `protobuf:"bytes,1,opt,name=source_text,proto3" json:"source_text,omitempty"` + LangOid uint32 `protobuf:"varint,2,opt,name=lang_oid,json=langOid,proto3" json:"lang_oid,omitempty"` + LangIsTrusted bool `protobuf:"varint,3,opt,name=lang_is_trusted,json=langIsTrusted,proto3" json:"lang_is_trusted,omitempty"` + Atomic bool `protobuf:"varint,4,opt,name=atomic,proto3" json:"atomic,omitempty"` +} + +func (x *InlineCodeBlock) Reset() { + *x = InlineCodeBlock{} + if protoimpl.UnsafeEnabled { + mi := &file_pg_query_proto_msgTypes[229] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *InlineCodeBlock) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*InlineCodeBlock) ProtoMessage() {} + +func (x *InlineCodeBlock) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[229] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use InlineCodeBlock.ProtoReflect.Descriptor instead. +func (*InlineCodeBlock) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{229} +} + +func (x *InlineCodeBlock) GetSourceText() string { + if x != nil { + return x.SourceText + } + return "" +} + +func (x *InlineCodeBlock) GetLangOid() uint32 { + if x != nil { + return x.LangOid + } + return 0 +} + +func (x *InlineCodeBlock) GetLangIsTrusted() bool { + if x != nil { + return x.LangIsTrusted + } + return false +} + +func (x *InlineCodeBlock) GetAtomic() bool { + if x != nil { + return x.Atomic + } + return false +} + +type CallContext struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Atomic bool `protobuf:"varint,1,opt,name=atomic,proto3" json:"atomic,omitempty"` +} + +func (x *CallContext) Reset() { + *x = CallContext{} + if protoimpl.UnsafeEnabled { + mi := &file_pg_query_proto_msgTypes[230] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *CallContext) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CallContext) ProtoMessage() {} + +func (x *CallContext) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[230] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CallContext.ProtoReflect.Descriptor instead. +func (*CallContext) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{230} +} + +func (x *CallContext) GetAtomic() bool { + if x != nil { + return x.Atomic + } + return false +} + +type ScanToken struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Start int32 `protobuf:"varint,1,opt,name=start,proto3" json:"start,omitempty"` + End int32 `protobuf:"varint,2,opt,name=end,proto3" json:"end,omitempty"` + Token Token `protobuf:"varint,4,opt,name=token,proto3,enum=pg_query.Token" json:"token,omitempty"` + KeywordKind KeywordKind `protobuf:"varint,5,opt,name=keyword_kind,json=keywordKind,proto3,enum=pg_query.KeywordKind" json:"keyword_kind,omitempty"` +} + +func (x *ScanToken) Reset() { + *x = ScanToken{} + if protoimpl.UnsafeEnabled { + mi := &file_pg_query_proto_msgTypes[231] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ScanToken) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ScanToken) ProtoMessage() {} + +func (x *ScanToken) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[231] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ScanToken.ProtoReflect.Descriptor instead. +func (*ScanToken) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{231} +} + +func (x *ScanToken) GetStart() int32 { + if x != nil { + return x.Start + } + return 0 +} + +func (x *ScanToken) GetEnd() int32 { + if x != nil { + return x.End + } + return 0 +} + +func (x *ScanToken) GetToken() Token { + if x != nil { + return x.Token + } + return Token_NUL +} + +func (x *ScanToken) GetKeywordKind() KeywordKind { + if x != nil { + return x.KeywordKind + } + return KeywordKind_NO_KEYWORD +} + +var File_pg_query_proto protoreflect.FileDescriptor + +var file_pg_query_proto_rawDesc = []byte{ + 0x0a, 0x0e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x12, 0x08, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x22, 0x50, 0x0a, 0x0b, 0x50, 0x61, + 0x72, 0x73, 0x65, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, + 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, + 0x69, 0x6f, 0x6e, 0x12, 0x27, 0x0a, 0x05, 0x73, 0x74, 0x6d, 0x74, 0x73, 0x18, 0x02, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x52, 0x61, + 0x77, 0x53, 0x74, 0x6d, 0x74, 0x52, 0x05, 0x73, 0x74, 0x6d, 0x74, 0x73, 0x22, 0x53, 0x0a, 0x0a, + 0x53, 0x63, 0x61, 0x6e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, + 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x76, 0x65, 0x72, + 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x2b, 0x0a, 0x06, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x18, 0x02, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, + 0x53, 0x63, 0x61, 0x6e, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x06, 0x74, 0x6f, 0x6b, 0x65, 0x6e, + 0x73, 0x22, 0xae, 0x77, 0x0a, 0x04, 0x4e, 0x6f, 0x64, 0x65, 0x12, 0x27, 0x0a, 0x05, 0x61, 0x6c, + 0x69, 0x61, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x70, 0x67, 0x5f, 0x71, + 0x75, 0x65, 0x72, 0x79, 0x2e, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x48, 0x00, 0x52, 0x05, 0x41, 0x6c, + 0x69, 0x61, 0x73, 0x12, 0x31, 0x0a, 0x09, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x76, 0x61, 0x72, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, + 0x79, 0x2e, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x56, 0x61, 0x72, 0x48, 0x00, 0x52, 0x08, 0x52, 0x61, + 0x6e, 0x67, 0x65, 0x56, 0x61, 0x72, 0x12, 0x34, 0x0a, 0x0a, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, + 0x66, 0x75, 0x6e, 0x63, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x70, 0x67, 0x5f, + 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x46, 0x75, 0x6e, 0x63, 0x48, + 0x00, 0x52, 0x09, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x46, 0x75, 0x6e, 0x63, 0x12, 0x24, 0x0a, 0x04, + 0x65, 0x78, 0x70, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x67, 0x5f, + 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x45, 0x78, 0x70, 0x72, 0x48, 0x00, 0x52, 0x04, 0x45, 0x78, + 0x70, 0x72, 0x12, 0x21, 0x0a, 0x03, 0x76, 0x61, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x0d, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x56, 0x61, 0x72, 0x48, 0x00, + 0x52, 0x03, 0x56, 0x61, 0x72, 0x12, 0x27, 0x0a, 0x05, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x18, 0x06, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, + 0x50, 0x61, 0x72, 0x61, 0x6d, 0x48, 0x00, 0x52, 0x05, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x12, 0x2a, + 0x0a, 0x06, 0x61, 0x67, 0x67, 0x72, 0x65, 0x66, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, + 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x41, 0x67, 0x67, 0x72, 0x65, 0x66, + 0x48, 0x00, 0x52, 0x06, 0x41, 0x67, 0x67, 0x72, 0x65, 0x66, 0x12, 0x3d, 0x0a, 0x0d, 0x67, 0x72, + 0x6f, 0x75, 0x70, 0x69, 0x6e, 0x67, 0x5f, 0x66, 0x75, 0x6e, 0x63, 0x18, 0x08, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x16, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x47, 0x72, 0x6f, + 0x75, 0x70, 0x69, 0x6e, 0x67, 0x46, 0x75, 0x6e, 0x63, 0x48, 0x00, 0x52, 0x0c, 0x47, 0x72, 0x6f, + 0x75, 0x70, 0x69, 0x6e, 0x67, 0x46, 0x75, 0x6e, 0x63, 0x12, 0x37, 0x0a, 0x0b, 0x77, 0x69, 0x6e, + 0x64, 0x6f, 0x77, 0x5f, 0x66, 0x75, 0x6e, 0x63, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, + 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x57, 0x69, 0x6e, 0x64, 0x6f, 0x77, + 0x46, 0x75, 0x6e, 0x63, 0x48, 0x00, 0x52, 0x0a, 0x57, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x46, 0x75, + 0x6e, 0x63, 0x12, 0x46, 0x0a, 0x10, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, + 0x6e, 0x67, 0x5f, 0x72, 0x65, 0x66, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x70, + 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, + 0x74, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x66, 0x48, 0x00, 0x52, 0x0f, 0x53, 0x75, 0x62, 0x73, 0x63, + 0x72, 0x69, 0x70, 0x74, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x66, 0x12, 0x31, 0x0a, 0x09, 0x66, 0x75, + 0x6e, 0x63, 0x5f, 0x65, 0x78, 0x70, 0x72, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, + 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x46, 0x75, 0x6e, 0x63, 0x45, 0x78, 0x70, + 0x72, 0x48, 0x00, 0x52, 0x08, 0x46, 0x75, 0x6e, 0x63, 0x45, 0x78, 0x70, 0x72, 0x12, 0x3e, 0x0a, + 0x0e, 0x6e, 0x61, 0x6d, 0x65, 0x64, 0x5f, 0x61, 0x72, 0x67, 0x5f, 0x65, 0x78, 0x70, 0x72, 0x18, + 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, + 0x2e, 0x4e, 0x61, 0x6d, 0x65, 0x64, 0x41, 0x72, 0x67, 0x45, 0x78, 0x70, 0x72, 0x48, 0x00, 0x52, + 0x0c, 0x4e, 0x61, 0x6d, 0x65, 0x64, 0x41, 0x72, 0x67, 0x45, 0x78, 0x70, 0x72, 0x12, 0x2b, 0x0a, + 0x07, 0x6f, 0x70, 0x5f, 0x65, 0x78, 0x70, 0x72, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, + 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4f, 0x70, 0x45, 0x78, 0x70, 0x72, + 0x48, 0x00, 0x52, 0x06, 0x4f, 0x70, 0x45, 0x78, 0x70, 0x72, 0x12, 0x3d, 0x0a, 0x0d, 0x64, 0x69, + 0x73, 0x74, 0x69, 0x6e, 0x63, 0x74, 0x5f, 0x65, 0x78, 0x70, 0x72, 0x18, 0x0e, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x16, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x44, 0x69, 0x73, + 0x74, 0x69, 0x6e, 0x63, 0x74, 0x45, 0x78, 0x70, 0x72, 0x48, 0x00, 0x52, 0x0c, 0x44, 0x69, 0x73, + 0x74, 0x69, 0x6e, 0x63, 0x74, 0x45, 0x78, 0x70, 0x72, 0x12, 0x38, 0x0a, 0x0c, 0x6e, 0x75, 0x6c, + 0x6c, 0x5f, 0x69, 0x66, 0x5f, 0x65, 0x78, 0x70, 0x72, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x14, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4e, 0x75, 0x6c, 0x6c, 0x49, + 0x66, 0x45, 0x78, 0x70, 0x72, 0x48, 0x00, 0x52, 0x0a, 0x4e, 0x75, 0x6c, 0x6c, 0x49, 0x66, 0x45, + 0x78, 0x70, 0x72, 0x12, 0x4e, 0x0a, 0x14, 0x73, 0x63, 0x61, 0x6c, 0x61, 0x72, 0x5f, 0x61, 0x72, + 0x72, 0x61, 0x79, 0x5f, 0x6f, 0x70, 0x5f, 0x65, 0x78, 0x70, 0x72, 0x18, 0x10, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x1b, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x53, 0x63, 0x61, + 0x6c, 0x61, 0x72, 0x41, 0x72, 0x72, 0x61, 0x79, 0x4f, 0x70, 0x45, 0x78, 0x70, 0x72, 0x48, 0x00, + 0x52, 0x11, 0x53, 0x63, 0x61, 0x6c, 0x61, 0x72, 0x41, 0x72, 0x72, 0x61, 0x79, 0x4f, 0x70, 0x45, + 0x78, 0x70, 0x72, 0x12, 0x31, 0x0a, 0x09, 0x62, 0x6f, 0x6f, 0x6c, 0x5f, 0x65, 0x78, 0x70, 0x72, + 0x18, 0x11, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, + 0x79, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x45, 0x78, 0x70, 0x72, 0x48, 0x00, 0x52, 0x08, 0x42, 0x6f, + 0x6f, 0x6c, 0x45, 0x78, 0x70, 0x72, 0x12, 0x2e, 0x0a, 0x08, 0x73, 0x75, 0x62, 0x5f, 0x6c, 0x69, + 0x6e, 0x6b, 0x18, 0x12, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, + 0x65, 0x72, 0x79, 0x2e, 0x53, 0x75, 0x62, 0x4c, 0x69, 0x6e, 0x6b, 0x48, 0x00, 0x52, 0x07, 0x53, + 0x75, 0x62, 0x4c, 0x69, 0x6e, 0x6b, 0x12, 0x2e, 0x0a, 0x08, 0x73, 0x75, 0x62, 0x5f, 0x70, 0x6c, + 0x61, 0x6e, 0x18, 0x13, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, + 0x65, 0x72, 0x79, 0x2e, 0x53, 0x75, 0x62, 0x50, 0x6c, 0x61, 0x6e, 0x48, 0x00, 0x52, 0x07, 0x53, + 0x75, 0x62, 0x50, 0x6c, 0x61, 0x6e, 0x12, 0x50, 0x0a, 0x14, 0x61, 0x6c, 0x74, 0x65, 0x72, 0x6e, + 0x61, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x73, 0x75, 0x62, 0x5f, 0x70, 0x6c, 0x61, 0x6e, 0x18, 0x14, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, + 0x41, 0x6c, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x74, 0x69, 0x76, 0x65, 0x53, 0x75, 0x62, 0x50, 0x6c, + 0x61, 0x6e, 0x48, 0x00, 0x52, 0x12, 0x41, 0x6c, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x74, 0x69, 0x76, + 0x65, 0x53, 0x75, 0x62, 0x50, 0x6c, 0x61, 0x6e, 0x12, 0x3a, 0x0a, 0x0c, 0x66, 0x69, 0x65, 0x6c, + 0x64, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x18, 0x15, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, + 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x53, + 0x65, 0x6c, 0x65, 0x63, 0x74, 0x48, 0x00, 0x52, 0x0b, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x53, 0x65, + 0x6c, 0x65, 0x63, 0x74, 0x12, 0x37, 0x0a, 0x0b, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x73, 0x74, + 0x6f, 0x72, 0x65, 0x18, 0x16, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x70, 0x67, 0x5f, 0x71, + 0x75, 0x65, 0x72, 0x79, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x48, + 0x00, 0x52, 0x0a, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x12, 0x3a, 0x0a, + 0x0c, 0x72, 0x65, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x17, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x52, + 0x65, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x48, 0x00, 0x52, 0x0b, 0x52, 0x65, + 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x12, 0x3b, 0x0a, 0x0d, 0x63, 0x6f, 0x65, + 0x72, 0x63, 0x65, 0x5f, 0x76, 0x69, 0x61, 0x5f, 0x69, 0x6f, 0x18, 0x18, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x15, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x43, 0x6f, 0x65, 0x72, + 0x63, 0x65, 0x56, 0x69, 0x61, 0x49, 0x4f, 0x48, 0x00, 0x52, 0x0b, 0x43, 0x6f, 0x65, 0x72, 0x63, + 0x65, 0x56, 0x69, 0x61, 0x49, 0x4f, 0x12, 0x47, 0x0a, 0x11, 0x61, 0x72, 0x72, 0x61, 0x79, 0x5f, + 0x63, 0x6f, 0x65, 0x72, 0x63, 0x65, 0x5f, 0x65, 0x78, 0x70, 0x72, 0x18, 0x19, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x19, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x41, 0x72, 0x72, + 0x61, 0x79, 0x43, 0x6f, 0x65, 0x72, 0x63, 0x65, 0x45, 0x78, 0x70, 0x72, 0x48, 0x00, 0x52, 0x0f, + 0x41, 0x72, 0x72, 0x61, 0x79, 0x43, 0x6f, 0x65, 0x72, 0x63, 0x65, 0x45, 0x78, 0x70, 0x72, 0x12, + 0x50, 0x0a, 0x14, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x74, 0x5f, 0x72, 0x6f, 0x77, 0x74, 0x79, + 0x70, 0x65, 0x5f, 0x65, 0x78, 0x70, 0x72, 0x18, 0x1a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, + 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x74, + 0x52, 0x6f, 0x77, 0x74, 0x79, 0x70, 0x65, 0x45, 0x78, 0x70, 0x72, 0x48, 0x00, 0x52, 0x12, 0x43, + 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x74, 0x52, 0x6f, 0x77, 0x74, 0x79, 0x70, 0x65, 0x45, 0x78, 0x70, + 0x72, 0x12, 0x3a, 0x0a, 0x0c, 0x63, 0x6f, 0x6c, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x65, 0x78, 0x70, + 0x72, 0x18, 0x1b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, + 0x72, 0x79, 0x2e, 0x43, 0x6f, 0x6c, 0x6c, 0x61, 0x74, 0x65, 0x45, 0x78, 0x70, 0x72, 0x48, 0x00, + 0x52, 0x0b, 0x43, 0x6f, 0x6c, 0x6c, 0x61, 0x74, 0x65, 0x45, 0x78, 0x70, 0x72, 0x12, 0x31, 0x0a, + 0x09, 0x63, 0x61, 0x73, 0x65, 0x5f, 0x65, 0x78, 0x70, 0x72, 0x18, 0x1c, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x12, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x43, 0x61, 0x73, 0x65, + 0x45, 0x78, 0x70, 0x72, 0x48, 0x00, 0x52, 0x08, 0x43, 0x61, 0x73, 0x65, 0x45, 0x78, 0x70, 0x72, + 0x12, 0x31, 0x0a, 0x09, 0x63, 0x61, 0x73, 0x65, 0x5f, 0x77, 0x68, 0x65, 0x6e, 0x18, 0x1d, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x43, + 0x61, 0x73, 0x65, 0x57, 0x68, 0x65, 0x6e, 0x48, 0x00, 0x52, 0x08, 0x43, 0x61, 0x73, 0x65, 0x57, + 0x68, 0x65, 0x6e, 0x12, 0x3e, 0x0a, 0x0e, 0x63, 0x61, 0x73, 0x65, 0x5f, 0x74, 0x65, 0x73, 0x74, + 0x5f, 0x65, 0x78, 0x70, 0x72, 0x18, 0x1e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x70, 0x67, + 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x43, 0x61, 0x73, 0x65, 0x54, 0x65, 0x73, 0x74, 0x45, + 0x78, 0x70, 0x72, 0x48, 0x00, 0x52, 0x0c, 0x43, 0x61, 0x73, 0x65, 0x54, 0x65, 0x73, 0x74, 0x45, + 0x78, 0x70, 0x72, 0x12, 0x34, 0x0a, 0x0a, 0x61, 0x72, 0x72, 0x61, 0x79, 0x5f, 0x65, 0x78, 0x70, + 0x72, 0x18, 0x1f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, + 0x72, 0x79, 0x2e, 0x41, 0x72, 0x72, 0x61, 0x79, 0x45, 0x78, 0x70, 0x72, 0x48, 0x00, 0x52, 0x09, + 0x41, 0x72, 0x72, 0x61, 0x79, 0x45, 0x78, 0x70, 0x72, 0x12, 0x2e, 0x0a, 0x08, 0x72, 0x6f, 0x77, + 0x5f, 0x65, 0x78, 0x70, 0x72, 0x18, 0x20, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x70, 0x67, + 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x52, 0x6f, 0x77, 0x45, 0x78, 0x70, 0x72, 0x48, 0x00, + 0x52, 0x07, 0x52, 0x6f, 0x77, 0x45, 0x78, 0x70, 0x72, 0x12, 0x44, 0x0a, 0x10, 0x72, 0x6f, 0x77, + 0x5f, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x72, 0x65, 0x5f, 0x65, 0x78, 0x70, 0x72, 0x18, 0x21, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x52, + 0x6f, 0x77, 0x43, 0x6f, 0x6d, 0x70, 0x61, 0x72, 0x65, 0x45, 0x78, 0x70, 0x72, 0x48, 0x00, 0x52, + 0x0e, 0x52, 0x6f, 0x77, 0x43, 0x6f, 0x6d, 0x70, 0x61, 0x72, 0x65, 0x45, 0x78, 0x70, 0x72, 0x12, + 0x3d, 0x0a, 0x0d, 0x63, 0x6f, 0x61, 0x6c, 0x65, 0x73, 0x63, 0x65, 0x5f, 0x65, 0x78, 0x70, 0x72, + 0x18, 0x22, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, + 0x79, 0x2e, 0x43, 0x6f, 0x61, 0x6c, 0x65, 0x73, 0x63, 0x65, 0x45, 0x78, 0x70, 0x72, 0x48, 0x00, + 0x52, 0x0c, 0x43, 0x6f, 0x61, 0x6c, 0x65, 0x73, 0x63, 0x65, 0x45, 0x78, 0x70, 0x72, 0x12, 0x38, + 0x0a, 0x0c, 0x6d, 0x69, 0x6e, 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x65, 0x78, 0x70, 0x72, 0x18, 0x23, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, + 0x4d, 0x69, 0x6e, 0x4d, 0x61, 0x78, 0x45, 0x78, 0x70, 0x72, 0x48, 0x00, 0x52, 0x0a, 0x4d, 0x69, + 0x6e, 0x4d, 0x61, 0x78, 0x45, 0x78, 0x70, 0x72, 0x12, 0x49, 0x0a, 0x11, 0x73, 0x71, 0x6c, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x5f, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x24, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x53, + 0x51, 0x4c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x46, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x48, + 0x00, 0x52, 0x10, 0x53, 0x51, 0x4c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x46, 0x75, 0x6e, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x12, 0x2e, 0x0a, 0x08, 0x78, 0x6d, 0x6c, 0x5f, 0x65, 0x78, 0x70, 0x72, 0x18, + 0x25, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, + 0x2e, 0x58, 0x6d, 0x6c, 0x45, 0x78, 0x70, 0x72, 0x48, 0x00, 0x52, 0x07, 0x58, 0x6d, 0x6c, 0x45, + 0x78, 0x70, 0x72, 0x12, 0x31, 0x0a, 0x09, 0x6e, 0x75, 0x6c, 0x6c, 0x5f, 0x74, 0x65, 0x73, 0x74, + 0x18, 0x26, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, + 0x79, 0x2e, 0x4e, 0x75, 0x6c, 0x6c, 0x54, 0x65, 0x73, 0x74, 0x48, 0x00, 0x52, 0x08, 0x4e, 0x75, + 0x6c, 0x6c, 0x54, 0x65, 0x73, 0x74, 0x12, 0x3a, 0x0a, 0x0c, 0x62, 0x6f, 0x6f, 0x6c, 0x65, 0x61, + 0x6e, 0x5f, 0x74, 0x65, 0x73, 0x74, 0x18, 0x27, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x70, + 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x65, 0x61, 0x6e, 0x54, + 0x65, 0x73, 0x74, 0x48, 0x00, 0x52, 0x0b, 0x42, 0x6f, 0x6f, 0x6c, 0x65, 0x61, 0x6e, 0x54, 0x65, + 0x73, 0x74, 0x12, 0x44, 0x0a, 0x10, 0x63, 0x6f, 0x65, 0x72, 0x63, 0x65, 0x5f, 0x74, 0x6f, 0x5f, + 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x18, 0x28, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x70, + 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x43, 0x6f, 0x65, 0x72, 0x63, 0x65, 0x54, 0x6f, + 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x48, 0x00, 0x52, 0x0e, 0x43, 0x6f, 0x65, 0x72, 0x63, 0x65, + 0x54, 0x6f, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x12, 0x54, 0x0a, 0x16, 0x63, 0x6f, 0x65, 0x72, + 0x63, 0x65, 0x5f, 0x74, 0x6f, 0x5f, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x5f, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x18, 0x29, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, + 0x65, 0x72, 0x79, 0x2e, 0x43, 0x6f, 0x65, 0x72, 0x63, 0x65, 0x54, 0x6f, 0x44, 0x6f, 0x6d, 0x61, + 0x69, 0x6e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x48, 0x00, 0x52, 0x13, 0x43, 0x6f, 0x65, 0x72, 0x63, + 0x65, 0x54, 0x6f, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x3e, + 0x0a, 0x0e, 0x73, 0x65, 0x74, 0x5f, 0x74, 0x6f, 0x5f, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, + 0x18, 0x2a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, + 0x79, 0x2e, 0x53, 0x65, 0x74, 0x54, 0x6f, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x48, 0x00, + 0x52, 0x0c, 0x53, 0x65, 0x74, 0x54, 0x6f, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x12, 0x41, + 0x0a, 0x0f, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x6f, 0x66, 0x5f, 0x65, 0x78, 0x70, + 0x72, 0x18, 0x2b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, + 0x72, 0x79, 0x2e, 0x43, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x4f, 0x66, 0x45, 0x78, 0x70, 0x72, + 0x48, 0x00, 0x52, 0x0d, 0x43, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x4f, 0x66, 0x45, 0x78, 0x70, + 0x72, 0x12, 0x41, 0x0a, 0x0f, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x5f, + 0x65, 0x78, 0x70, 0x72, 0x18, 0x2c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x70, 0x67, 0x5f, + 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4e, 0x65, 0x78, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x45, + 0x78, 0x70, 0x72, 0x48, 0x00, 0x52, 0x0d, 0x4e, 0x65, 0x78, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, + 0x45, 0x78, 0x70, 0x72, 0x12, 0x40, 0x0a, 0x0e, 0x69, 0x6e, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, + 0x65, 0x5f, 0x65, 0x6c, 0x65, 0x6d, 0x18, 0x2d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x70, + 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x49, 0x6e, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, + 0x65, 0x45, 0x6c, 0x65, 0x6d, 0x48, 0x00, 0x52, 0x0d, 0x49, 0x6e, 0x66, 0x65, 0x72, 0x65, 0x6e, + 0x63, 0x65, 0x45, 0x6c, 0x65, 0x6d, 0x12, 0x3a, 0x0a, 0x0c, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, + 0x5f, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x18, 0x2e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x70, + 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x45, 0x6e, + 0x74, 0x72, 0x79, 0x48, 0x00, 0x52, 0x0b, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x45, 0x6e, 0x74, + 0x72, 0x79, 0x12, 0x3b, 0x0a, 0x0d, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x74, 0x62, 0x6c, 0x5f, + 0x72, 0x65, 0x66, 0x18, 0x2f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x70, 0x67, 0x5f, 0x71, + 0x75, 0x65, 0x72, 0x79, 0x2e, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x54, 0x62, 0x6c, 0x52, 0x65, 0x66, + 0x48, 0x00, 0x52, 0x0b, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x54, 0x62, 0x6c, 0x52, 0x65, 0x66, 0x12, + 0x31, 0x0a, 0x09, 0x6a, 0x6f, 0x69, 0x6e, 0x5f, 0x65, 0x78, 0x70, 0x72, 0x18, 0x30, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4a, 0x6f, + 0x69, 0x6e, 0x45, 0x78, 0x70, 0x72, 0x48, 0x00, 0x52, 0x08, 0x4a, 0x6f, 0x69, 0x6e, 0x45, 0x78, + 0x70, 0x72, 0x12, 0x31, 0x0a, 0x09, 0x66, 0x72, 0x6f, 0x6d, 0x5f, 0x65, 0x78, 0x70, 0x72, 0x18, + 0x31, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, + 0x2e, 0x46, 0x72, 0x6f, 0x6d, 0x45, 0x78, 0x70, 0x72, 0x48, 0x00, 0x52, 0x08, 0x46, 0x72, 0x6f, + 0x6d, 0x45, 0x78, 0x70, 0x72, 0x12, 0x44, 0x0a, 0x10, 0x6f, 0x6e, 0x5f, 0x63, 0x6f, 0x6e, 0x66, + 0x6c, 0x69, 0x63, 0x74, 0x5f, 0x65, 0x78, 0x70, 0x72, 0x18, 0x32, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x18, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4f, 0x6e, 0x43, 0x6f, 0x6e, + 0x66, 0x6c, 0x69, 0x63, 0x74, 0x45, 0x78, 0x70, 0x72, 0x48, 0x00, 0x52, 0x0e, 0x4f, 0x6e, 0x43, + 0x6f, 0x6e, 0x66, 0x6c, 0x69, 0x63, 0x74, 0x45, 0x78, 0x70, 0x72, 0x12, 0x37, 0x0a, 0x0b, 0x69, + 0x6e, 0x74, 0x6f, 0x5f, 0x63, 0x6c, 0x61, 0x75, 0x73, 0x65, 0x18, 0x33, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x14, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x49, 0x6e, 0x74, 0x6f, + 0x43, 0x6c, 0x61, 0x75, 0x73, 0x65, 0x48, 0x00, 0x52, 0x0a, 0x49, 0x6e, 0x74, 0x6f, 0x43, 0x6c, + 0x61, 0x75, 0x73, 0x65, 0x12, 0x2e, 0x0a, 0x08, 0x72, 0x61, 0x77, 0x5f, 0x73, 0x74, 0x6d, 0x74, + 0x18, 0x34, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, + 0x79, 0x2e, 0x52, 0x61, 0x77, 0x53, 0x74, 0x6d, 0x74, 0x48, 0x00, 0x52, 0x07, 0x52, 0x61, 0x77, + 0x53, 0x74, 0x6d, 0x74, 0x12, 0x27, 0x0a, 0x05, 0x71, 0x75, 0x65, 0x72, 0x79, 0x18, 0x35, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x51, + 0x75, 0x65, 0x72, 0x79, 0x48, 0x00, 0x52, 0x05, 0x51, 0x75, 0x65, 0x72, 0x79, 0x12, 0x37, 0x0a, + 0x0b, 0x69, 0x6e, 0x73, 0x65, 0x72, 0x74, 0x5f, 0x73, 0x74, 0x6d, 0x74, 0x18, 0x36, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x49, 0x6e, + 0x73, 0x65, 0x72, 0x74, 0x53, 0x74, 0x6d, 0x74, 0x48, 0x00, 0x52, 0x0a, 0x49, 0x6e, 0x73, 0x65, + 0x72, 0x74, 0x53, 0x74, 0x6d, 0x74, 0x12, 0x37, 0x0a, 0x0b, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, + 0x5f, 0x73, 0x74, 0x6d, 0x74, 0x18, 0x37, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x70, 0x67, + 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x74, 0x6d, + 0x74, 0x48, 0x00, 0x52, 0x0a, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x74, 0x6d, 0x74, 0x12, + 0x37, 0x0a, 0x0b, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x73, 0x74, 0x6d, 0x74, 0x18, 0x38, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, + 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x74, 0x6d, 0x74, 0x48, 0x00, 0x52, 0x0a, 0x55, 0x70, + 0x64, 0x61, 0x74, 0x65, 0x53, 0x74, 0x6d, 0x74, 0x12, 0x37, 0x0a, 0x0b, 0x73, 0x65, 0x6c, 0x65, + 0x63, 0x74, 0x5f, 0x73, 0x74, 0x6d, 0x74, 0x18, 0x39, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, + 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x53, + 0x74, 0x6d, 0x74, 0x48, 0x00, 0x52, 0x0a, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x53, 0x74, 0x6d, + 0x74, 0x12, 0x44, 0x0a, 0x10, 0x61, 0x6c, 0x74, 0x65, 0x72, 0x5f, 0x74, 0x61, 0x62, 0x6c, 0x65, + 0x5f, 0x73, 0x74, 0x6d, 0x74, 0x18, 0x3a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x70, 0x67, + 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x41, 0x6c, 0x74, 0x65, 0x72, 0x54, 0x61, 0x62, 0x6c, + 0x65, 0x53, 0x74, 0x6d, 0x74, 0x48, 0x00, 0x52, 0x0e, 0x41, 0x6c, 0x74, 0x65, 0x72, 0x54, 0x61, + 0x62, 0x6c, 0x65, 0x53, 0x74, 0x6d, 0x74, 0x12, 0x41, 0x0a, 0x0f, 0x61, 0x6c, 0x74, 0x65, 0x72, + 0x5f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x63, 0x6d, 0x64, 0x18, 0x3b, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x17, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x41, 0x6c, 0x74, 0x65, + 0x72, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x43, 0x6d, 0x64, 0x48, 0x00, 0x52, 0x0d, 0x41, 0x6c, 0x74, + 0x65, 0x72, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x43, 0x6d, 0x64, 0x12, 0x47, 0x0a, 0x11, 0x61, 0x6c, + 0x74, 0x65, 0x72, 0x5f, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x5f, 0x73, 0x74, 0x6d, 0x74, 0x18, + 0x3c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, + 0x2e, 0x41, 0x6c, 0x74, 0x65, 0x72, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x53, 0x74, 0x6d, 0x74, + 0x48, 0x00, 0x52, 0x0f, 0x41, 0x6c, 0x74, 0x65, 0x72, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x53, + 0x74, 0x6d, 0x74, 0x12, 0x4a, 0x0a, 0x12, 0x73, 0x65, 0x74, 0x5f, 0x6f, 0x70, 0x65, 0x72, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x74, 0x6d, 0x74, 0x18, 0x3d, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x1a, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x53, 0x65, 0x74, 0x4f, 0x70, + 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x6d, 0x74, 0x48, 0x00, 0x52, 0x10, 0x53, + 0x65, 0x74, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x6d, 0x74, 0x12, + 0x34, 0x0a, 0x0a, 0x67, 0x72, 0x61, 0x6e, 0x74, 0x5f, 0x73, 0x74, 0x6d, 0x74, 0x18, 0x3e, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x47, + 0x72, 0x61, 0x6e, 0x74, 0x53, 0x74, 0x6d, 0x74, 0x48, 0x00, 0x52, 0x09, 0x47, 0x72, 0x61, 0x6e, + 0x74, 0x53, 0x74, 0x6d, 0x74, 0x12, 0x41, 0x0a, 0x0f, 0x67, 0x72, 0x61, 0x6e, 0x74, 0x5f, 0x72, + 0x6f, 0x6c, 0x65, 0x5f, 0x73, 0x74, 0x6d, 0x74, 0x18, 0x3f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, + 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x47, 0x72, 0x61, 0x6e, 0x74, 0x52, + 0x6f, 0x6c, 0x65, 0x53, 0x74, 0x6d, 0x74, 0x48, 0x00, 0x52, 0x0d, 0x47, 0x72, 0x61, 0x6e, 0x74, + 0x52, 0x6f, 0x6c, 0x65, 0x53, 0x74, 0x6d, 0x74, 0x12, 0x69, 0x0a, 0x1d, 0x61, 0x6c, 0x74, 0x65, + 0x72, 0x5f, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x70, 0x72, 0x69, 0x76, 0x69, 0x6c, + 0x65, 0x67, 0x65, 0x73, 0x5f, 0x73, 0x74, 0x6d, 0x74, 0x18, 0x40, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x24, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x41, 0x6c, 0x74, 0x65, 0x72, + 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, + 0x73, 0x53, 0x74, 0x6d, 0x74, 0x48, 0x00, 0x52, 0x1a, 0x41, 0x6c, 0x74, 0x65, 0x72, 0x44, 0x65, + 0x66, 0x61, 0x75, 0x6c, 0x74, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x73, 0x53, + 0x74, 0x6d, 0x74, 0x12, 0x47, 0x0a, 0x11, 0x63, 0x6c, 0x6f, 0x73, 0x65, 0x5f, 0x70, 0x6f, 0x72, + 0x74, 0x61, 0x6c, 0x5f, 0x73, 0x74, 0x6d, 0x74, 0x18, 0x41, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, + 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x43, 0x6c, 0x6f, 0x73, 0x65, 0x50, + 0x6f, 0x72, 0x74, 0x61, 0x6c, 0x53, 0x74, 0x6d, 0x74, 0x48, 0x00, 0x52, 0x0f, 0x43, 0x6c, 0x6f, + 0x73, 0x65, 0x50, 0x6f, 0x72, 0x74, 0x61, 0x6c, 0x53, 0x74, 0x6d, 0x74, 0x12, 0x3a, 0x0a, 0x0c, + 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x73, 0x74, 0x6d, 0x74, 0x18, 0x42, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x43, 0x6c, + 0x75, 0x73, 0x74, 0x65, 0x72, 0x53, 0x74, 0x6d, 0x74, 0x48, 0x00, 0x52, 0x0b, 0x43, 0x6c, 0x75, + 0x73, 0x74, 0x65, 0x72, 0x53, 0x74, 0x6d, 0x74, 0x12, 0x31, 0x0a, 0x09, 0x63, 0x6f, 0x70, 0x79, + 0x5f, 0x73, 0x74, 0x6d, 0x74, 0x18, 0x43, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x70, 0x67, + 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x43, 0x6f, 0x70, 0x79, 0x53, 0x74, 0x6d, 0x74, 0x48, + 0x00, 0x52, 0x08, 0x43, 0x6f, 0x70, 0x79, 0x53, 0x74, 0x6d, 0x74, 0x12, 0x37, 0x0a, 0x0b, 0x63, + 0x72, 0x65, 0x61, 0x74, 0x65, 0x5f, 0x73, 0x74, 0x6d, 0x74, 0x18, 0x44, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x14, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x43, 0x72, 0x65, 0x61, + 0x74, 0x65, 0x53, 0x74, 0x6d, 0x74, 0x48, 0x00, 0x52, 0x0a, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, + 0x53, 0x74, 0x6d, 0x74, 0x12, 0x37, 0x0a, 0x0b, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x5f, 0x73, + 0x74, 0x6d, 0x74, 0x18, 0x45, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x70, 0x67, 0x5f, 0x71, + 0x75, 0x65, 0x72, 0x79, 0x2e, 0x44, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x53, 0x74, 0x6d, 0x74, 0x48, + 0x00, 0x52, 0x0a, 0x44, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x53, 0x74, 0x6d, 0x74, 0x12, 0x31, 0x0a, + 0x09, 0x64, 0x72, 0x6f, 0x70, 0x5f, 0x73, 0x74, 0x6d, 0x74, 0x18, 0x46, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x12, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x44, 0x72, 0x6f, 0x70, + 0x53, 0x74, 0x6d, 0x74, 0x48, 0x00, 0x52, 0x08, 0x44, 0x72, 0x6f, 0x70, 0x53, 0x74, 0x6d, 0x74, + 0x12, 0x3d, 0x0a, 0x0d, 0x74, 0x72, 0x75, 0x6e, 0x63, 0x61, 0x74, 0x65, 0x5f, 0x73, 0x74, 0x6d, + 0x74, 0x18, 0x47, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, + 0x72, 0x79, 0x2e, 0x54, 0x72, 0x75, 0x6e, 0x63, 0x61, 0x74, 0x65, 0x53, 0x74, 0x6d, 0x74, 0x48, + 0x00, 0x52, 0x0c, 0x54, 0x72, 0x75, 0x6e, 0x63, 0x61, 0x74, 0x65, 0x53, 0x74, 0x6d, 0x74, 0x12, + 0x3a, 0x0a, 0x0c, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x73, 0x74, 0x6d, 0x74, 0x18, + 0x48, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, + 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x53, 0x74, 0x6d, 0x74, 0x48, 0x00, 0x52, 0x0b, + 0x43, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x53, 0x74, 0x6d, 0x74, 0x12, 0x34, 0x0a, 0x0a, 0x66, + 0x65, 0x74, 0x63, 0x68, 0x5f, 0x73, 0x74, 0x6d, 0x74, 0x18, 0x49, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x13, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x46, 0x65, 0x74, 0x63, 0x68, + 0x53, 0x74, 0x6d, 0x74, 0x48, 0x00, 0x52, 0x09, 0x46, 0x65, 0x74, 0x63, 0x68, 0x53, 0x74, 0x6d, + 0x74, 0x12, 0x34, 0x0a, 0x0a, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x5f, 0x73, 0x74, 0x6d, 0x74, 0x18, + 0x4a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, + 0x2e, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x53, 0x74, 0x6d, 0x74, 0x48, 0x00, 0x52, 0x09, 0x49, 0x6e, + 0x64, 0x65, 0x78, 0x53, 0x74, 0x6d, 0x74, 0x12, 0x50, 0x0a, 0x14, 0x63, 0x72, 0x65, 0x61, 0x74, + 0x65, 0x5f, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x74, 0x6d, 0x74, 0x18, + 0x4b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, + 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x46, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, + 0x74, 0x6d, 0x74, 0x48, 0x00, 0x52, 0x12, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x46, 0x75, 0x6e, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x6d, 0x74, 0x12, 0x4d, 0x0a, 0x13, 0x61, 0x6c, 0x74, + 0x65, 0x72, 0x5f, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x74, 0x6d, 0x74, + 0x18, 0x4c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, + 0x79, 0x2e, 0x41, 0x6c, 0x74, 0x65, 0x72, 0x46, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, + 0x74, 0x6d, 0x74, 0x48, 0x00, 0x52, 0x11, 0x41, 0x6c, 0x74, 0x65, 0x72, 0x46, 0x75, 0x6e, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x6d, 0x74, 0x12, 0x2b, 0x0a, 0x07, 0x64, 0x6f, 0x5f, 0x73, + 0x74, 0x6d, 0x74, 0x18, 0x4d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x70, 0x67, 0x5f, 0x71, + 0x75, 0x65, 0x72, 0x79, 0x2e, 0x44, 0x6f, 0x53, 0x74, 0x6d, 0x74, 0x48, 0x00, 0x52, 0x06, 0x44, + 0x6f, 0x53, 0x74, 0x6d, 0x74, 0x12, 0x37, 0x0a, 0x0b, 0x72, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x5f, + 0x73, 0x74, 0x6d, 0x74, 0x18, 0x4e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x70, 0x67, 0x5f, + 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x52, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x53, 0x74, 0x6d, 0x74, + 0x48, 0x00, 0x52, 0x0a, 0x52, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x53, 0x74, 0x6d, 0x74, 0x12, 0x31, + 0x0a, 0x09, 0x72, 0x75, 0x6c, 0x65, 0x5f, 0x73, 0x74, 0x6d, 0x74, 0x18, 0x4f, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x12, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x52, 0x75, 0x6c, + 0x65, 0x53, 0x74, 0x6d, 0x74, 0x48, 0x00, 0x52, 0x08, 0x52, 0x75, 0x6c, 0x65, 0x53, 0x74, 0x6d, + 0x74, 0x12, 0x37, 0x0a, 0x0b, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x5f, 0x73, 0x74, 0x6d, 0x74, + 0x18, 0x50, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, + 0x79, 0x2e, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x53, 0x74, 0x6d, 0x74, 0x48, 0x00, 0x52, 0x0a, + 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x53, 0x74, 0x6d, 0x74, 0x12, 0x37, 0x0a, 0x0b, 0x6c, 0x69, + 0x73, 0x74, 0x65, 0x6e, 0x5f, 0x73, 0x74, 0x6d, 0x74, 0x18, 0x51, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x14, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x65, + 0x6e, 0x53, 0x74, 0x6d, 0x74, 0x48, 0x00, 0x52, 0x0a, 0x4c, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x53, + 0x74, 0x6d, 0x74, 0x12, 0x3d, 0x0a, 0x0d, 0x75, 0x6e, 0x6c, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x5f, + 0x73, 0x74, 0x6d, 0x74, 0x18, 0x52, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x70, 0x67, 0x5f, + 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x55, 0x6e, 0x6c, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x53, 0x74, + 0x6d, 0x74, 0x48, 0x00, 0x52, 0x0c, 0x55, 0x6e, 0x6c, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x53, 0x74, + 0x6d, 0x74, 0x12, 0x46, 0x0a, 0x10, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x5f, 0x73, 0x74, 0x6d, 0x74, 0x18, 0x53, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x70, + 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x6d, 0x74, 0x48, 0x00, 0x52, 0x0f, 0x54, 0x72, 0x61, 0x6e, 0x73, + 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x6d, 0x74, 0x12, 0x31, 0x0a, 0x09, 0x76, 0x69, + 0x65, 0x77, 0x5f, 0x73, 0x74, 0x6d, 0x74, 0x18, 0x54, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, + 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x56, 0x69, 0x65, 0x77, 0x53, 0x74, 0x6d, + 0x74, 0x48, 0x00, 0x52, 0x08, 0x56, 0x69, 0x65, 0x77, 0x53, 0x74, 0x6d, 0x74, 0x12, 0x31, 0x0a, + 0x09, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x73, 0x74, 0x6d, 0x74, 0x18, 0x55, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x12, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4c, 0x6f, 0x61, 0x64, + 0x53, 0x74, 0x6d, 0x74, 0x48, 0x00, 0x52, 0x08, 0x4c, 0x6f, 0x61, 0x64, 0x53, 0x74, 0x6d, 0x74, + 0x12, 0x4a, 0x0a, 0x12, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x5f, 0x64, 0x6f, 0x6d, 0x61, 0x69, + 0x6e, 0x5f, 0x73, 0x74, 0x6d, 0x74, 0x18, 0x56, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x70, + 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x44, 0x6f, + 0x6d, 0x61, 0x69, 0x6e, 0x53, 0x74, 0x6d, 0x74, 0x48, 0x00, 0x52, 0x10, 0x43, 0x72, 0x65, 0x61, + 0x74, 0x65, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x53, 0x74, 0x6d, 0x74, 0x12, 0x3d, 0x0a, 0x0d, + 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x62, 0x5f, 0x73, 0x74, 0x6d, 0x74, 0x18, 0x57, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x43, + 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x62, 0x53, 0x74, 0x6d, 0x74, 0x48, 0x00, 0x52, 0x0c, 0x43, + 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x62, 0x53, 0x74, 0x6d, 0x74, 0x12, 0x37, 0x0a, 0x0b, 0x64, + 0x72, 0x6f, 0x70, 0x64, 0x62, 0x5f, 0x73, 0x74, 0x6d, 0x74, 0x18, 0x58, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x14, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x44, 0x72, 0x6f, 0x70, + 0x64, 0x62, 0x53, 0x74, 0x6d, 0x74, 0x48, 0x00, 0x52, 0x0a, 0x44, 0x72, 0x6f, 0x70, 0x64, 0x62, + 0x53, 0x74, 0x6d, 0x74, 0x12, 0x37, 0x0a, 0x0b, 0x76, 0x61, 0x63, 0x75, 0x75, 0x6d, 0x5f, 0x73, + 0x74, 0x6d, 0x74, 0x18, 0x59, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x70, 0x67, 0x5f, 0x71, + 0x75, 0x65, 0x72, 0x79, 0x2e, 0x56, 0x61, 0x63, 0x75, 0x75, 0x6d, 0x53, 0x74, 0x6d, 0x74, 0x48, + 0x00, 0x52, 0x0a, 0x56, 0x61, 0x63, 0x75, 0x75, 0x6d, 0x53, 0x74, 0x6d, 0x74, 0x12, 0x3a, 0x0a, + 0x0c, 0x65, 0x78, 0x70, 0x6c, 0x61, 0x69, 0x6e, 0x5f, 0x73, 0x74, 0x6d, 0x74, 0x18, 0x5a, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x45, + 0x78, 0x70, 0x6c, 0x61, 0x69, 0x6e, 0x53, 0x74, 0x6d, 0x74, 0x48, 0x00, 0x52, 0x0b, 0x45, 0x78, + 0x70, 0x6c, 0x61, 0x69, 0x6e, 0x53, 0x74, 0x6d, 0x74, 0x12, 0x4e, 0x0a, 0x14, 0x63, 0x72, 0x65, + 0x61, 0x74, 0x65, 0x5f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x61, 0x73, 0x5f, 0x73, 0x74, 0x6d, + 0x74, 0x18, 0x5b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, + 0x72, 0x79, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x41, 0x73, + 0x53, 0x74, 0x6d, 0x74, 0x48, 0x00, 0x52, 0x11, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x61, + 0x62, 0x6c, 0x65, 0x41, 0x73, 0x53, 0x74, 0x6d, 0x74, 0x12, 0x41, 0x0a, 0x0f, 0x63, 0x72, 0x65, + 0x61, 0x74, 0x65, 0x5f, 0x73, 0x65, 0x71, 0x5f, 0x73, 0x74, 0x6d, 0x74, 0x18, 0x5c, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x43, 0x72, + 0x65, 0x61, 0x74, 0x65, 0x53, 0x65, 0x71, 0x53, 0x74, 0x6d, 0x74, 0x48, 0x00, 0x52, 0x0d, 0x43, + 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, 0x65, 0x71, 0x53, 0x74, 0x6d, 0x74, 0x12, 0x3e, 0x0a, 0x0e, + 0x61, 0x6c, 0x74, 0x65, 0x72, 0x5f, 0x73, 0x65, 0x71, 0x5f, 0x73, 0x74, 0x6d, 0x74, 0x18, 0x5d, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, + 0x41, 0x6c, 0x74, 0x65, 0x72, 0x53, 0x65, 0x71, 0x53, 0x74, 0x6d, 0x74, 0x48, 0x00, 0x52, 0x0c, + 0x41, 0x6c, 0x74, 0x65, 0x72, 0x53, 0x65, 0x71, 0x53, 0x74, 0x6d, 0x74, 0x12, 0x47, 0x0a, 0x11, + 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x73, 0x74, 0x6d, + 0x74, 0x18, 0x5e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, + 0x72, 0x79, 0x2e, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x53, 0x65, 0x74, 0x53, 0x74, + 0x6d, 0x74, 0x48, 0x00, 0x52, 0x0f, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x53, 0x65, + 0x74, 0x53, 0x74, 0x6d, 0x74, 0x12, 0x4a, 0x0a, 0x12, 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, + 0x65, 0x5f, 0x73, 0x68, 0x6f, 0x77, 0x5f, 0x73, 0x74, 0x6d, 0x74, 0x18, 0x5f, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x1a, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x56, 0x61, 0x72, + 0x69, 0x61, 0x62, 0x6c, 0x65, 0x53, 0x68, 0x6f, 0x77, 0x53, 0x74, 0x6d, 0x74, 0x48, 0x00, 0x52, + 0x10, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x53, 0x68, 0x6f, 0x77, 0x53, 0x74, 0x6d, + 0x74, 0x12, 0x3a, 0x0a, 0x0c, 0x64, 0x69, 0x73, 0x63, 0x61, 0x72, 0x64, 0x5f, 0x73, 0x74, 0x6d, + 0x74, 0x18, 0x60, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, + 0x72, 0x79, 0x2e, 0x44, 0x69, 0x73, 0x63, 0x61, 0x72, 0x64, 0x53, 0x74, 0x6d, 0x74, 0x48, 0x00, + 0x52, 0x0b, 0x44, 0x69, 0x73, 0x63, 0x61, 0x72, 0x64, 0x53, 0x74, 0x6d, 0x74, 0x12, 0x44, 0x0a, + 0x10, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x72, 0x69, 0x67, 0x5f, 0x73, 0x74, 0x6d, + 0x74, 0x18, 0x61, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, + 0x72, 0x79, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x72, 0x69, 0x67, 0x53, 0x74, 0x6d, + 0x74, 0x48, 0x00, 0x52, 0x0e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x72, 0x69, 0x67, 0x53, + 0x74, 0x6d, 0x74, 0x12, 0x47, 0x0a, 0x11, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x5f, 0x70, 0x6c, + 0x61, 0x6e, 0x67, 0x5f, 0x73, 0x74, 0x6d, 0x74, 0x18, 0x62, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, + 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, + 0x50, 0x4c, 0x61, 0x6e, 0x67, 0x53, 0x74, 0x6d, 0x74, 0x48, 0x00, 0x52, 0x0f, 0x43, 0x72, 0x65, + 0x61, 0x74, 0x65, 0x50, 0x4c, 0x61, 0x6e, 0x67, 0x53, 0x74, 0x6d, 0x74, 0x12, 0x44, 0x0a, 0x10, + 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x5f, 0x72, 0x6f, 0x6c, 0x65, 0x5f, 0x73, 0x74, 0x6d, 0x74, + 0x18, 0x63, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, + 0x79, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x6f, 0x6c, 0x65, 0x53, 0x74, 0x6d, 0x74, + 0x48, 0x00, 0x52, 0x0e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x6f, 0x6c, 0x65, 0x53, 0x74, + 0x6d, 0x74, 0x12, 0x41, 0x0a, 0x0f, 0x61, 0x6c, 0x74, 0x65, 0x72, 0x5f, 0x72, 0x6f, 0x6c, 0x65, + 0x5f, 0x73, 0x74, 0x6d, 0x74, 0x18, 0x64, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x70, 0x67, + 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x41, 0x6c, 0x74, 0x65, 0x72, 0x52, 0x6f, 0x6c, 0x65, + 0x53, 0x74, 0x6d, 0x74, 0x48, 0x00, 0x52, 0x0d, 0x41, 0x6c, 0x74, 0x65, 0x72, 0x52, 0x6f, 0x6c, + 0x65, 0x53, 0x74, 0x6d, 0x74, 0x12, 0x3e, 0x0a, 0x0e, 0x64, 0x72, 0x6f, 0x70, 0x5f, 0x72, 0x6f, + 0x6c, 0x65, 0x5f, 0x73, 0x74, 0x6d, 0x74, 0x18, 0x65, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, + 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x44, 0x72, 0x6f, 0x70, 0x52, 0x6f, 0x6c, + 0x65, 0x53, 0x74, 0x6d, 0x74, 0x48, 0x00, 0x52, 0x0c, 0x44, 0x72, 0x6f, 0x70, 0x52, 0x6f, 0x6c, + 0x65, 0x53, 0x74, 0x6d, 0x74, 0x12, 0x31, 0x0a, 0x09, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x73, 0x74, + 0x6d, 0x74, 0x18, 0x66, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, + 0x65, 0x72, 0x79, 0x2e, 0x4c, 0x6f, 0x63, 0x6b, 0x53, 0x74, 0x6d, 0x74, 0x48, 0x00, 0x52, 0x08, + 0x4c, 0x6f, 0x63, 0x6b, 0x53, 0x74, 0x6d, 0x74, 0x12, 0x50, 0x0a, 0x14, 0x63, 0x6f, 0x6e, 0x73, + 0x74, 0x72, 0x61, 0x69, 0x6e, 0x74, 0x73, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x73, 0x74, 0x6d, 0x74, + 0x18, 0x67, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, + 0x79, 0x2e, 0x43, 0x6f, 0x6e, 0x73, 0x74, 0x72, 0x61, 0x69, 0x6e, 0x74, 0x73, 0x53, 0x65, 0x74, + 0x53, 0x74, 0x6d, 0x74, 0x48, 0x00, 0x52, 0x12, 0x43, 0x6f, 0x6e, 0x73, 0x74, 0x72, 0x61, 0x69, + 0x6e, 0x74, 0x73, 0x53, 0x65, 0x74, 0x53, 0x74, 0x6d, 0x74, 0x12, 0x3a, 0x0a, 0x0c, 0x72, 0x65, + 0x69, 0x6e, 0x64, 0x65, 0x78, 0x5f, 0x73, 0x74, 0x6d, 0x74, 0x18, 0x68, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x15, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x52, 0x65, 0x69, 0x6e, + 0x64, 0x65, 0x78, 0x53, 0x74, 0x6d, 0x74, 0x48, 0x00, 0x52, 0x0b, 0x52, 0x65, 0x69, 0x6e, 0x64, + 0x65, 0x78, 0x53, 0x74, 0x6d, 0x74, 0x12, 0x44, 0x0a, 0x10, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x5f, + 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x5f, 0x73, 0x74, 0x6d, 0x74, 0x18, 0x69, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x18, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x43, 0x68, 0x65, 0x63, + 0x6b, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x53, 0x74, 0x6d, 0x74, 0x48, 0x00, 0x52, 0x0e, 0x43, 0x68, + 0x65, 0x63, 0x6b, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x53, 0x74, 0x6d, 0x74, 0x12, 0x4a, 0x0a, 0x12, + 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x5f, 0x73, 0x74, + 0x6d, 0x74, 0x18, 0x6a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, + 0x65, 0x72, 0x79, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, + 0x53, 0x74, 0x6d, 0x74, 0x48, 0x00, 0x52, 0x10, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, 0x63, + 0x68, 0x65, 0x6d, 0x61, 0x53, 0x74, 0x6d, 0x74, 0x12, 0x4d, 0x0a, 0x13, 0x61, 0x6c, 0x74, 0x65, + 0x72, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x5f, 0x73, 0x74, 0x6d, 0x74, 0x18, + 0x6b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, + 0x2e, 0x41, 0x6c, 0x74, 0x65, 0x72, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x53, 0x74, + 0x6d, 0x74, 0x48, 0x00, 0x52, 0x11, 0x41, 0x6c, 0x74, 0x65, 0x72, 0x44, 0x61, 0x74, 0x61, 0x62, + 0x61, 0x73, 0x65, 0x53, 0x74, 0x6d, 0x74, 0x12, 0x57, 0x0a, 0x17, 0x61, 0x6c, 0x74, 0x65, 0x72, + 0x5f, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x73, 0x74, + 0x6d, 0x74, 0x18, 0x6c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, + 0x65, 0x72, 0x79, 0x2e, 0x41, 0x6c, 0x74, 0x65, 0x72, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, + 0x65, 0x53, 0x65, 0x74, 0x53, 0x74, 0x6d, 0x74, 0x48, 0x00, 0x52, 0x14, 0x41, 0x6c, 0x74, 0x65, + 0x72, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x53, 0x65, 0x74, 0x53, 0x74, 0x6d, 0x74, + 0x12, 0x4b, 0x0a, 0x13, 0x61, 0x6c, 0x74, 0x65, 0x72, 0x5f, 0x72, 0x6f, 0x6c, 0x65, 0x5f, 0x73, + 0x65, 0x74, 0x5f, 0x73, 0x74, 0x6d, 0x74, 0x18, 0x6d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, + 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x41, 0x6c, 0x74, 0x65, 0x72, 0x52, 0x6f, + 0x6c, 0x65, 0x53, 0x65, 0x74, 0x53, 0x74, 0x6d, 0x74, 0x48, 0x00, 0x52, 0x10, 0x41, 0x6c, 0x74, + 0x65, 0x72, 0x52, 0x6f, 0x6c, 0x65, 0x53, 0x65, 0x74, 0x53, 0x74, 0x6d, 0x74, 0x12, 0x56, 0x0a, + 0x16, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x69, + 0x6f, 0x6e, 0x5f, 0x73, 0x74, 0x6d, 0x74, 0x18, 0x6e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, + 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, + 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x6d, 0x74, 0x48, 0x00, 0x52, + 0x14, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, + 0x6e, 0x53, 0x74, 0x6d, 0x74, 0x12, 0x44, 0x0a, 0x10, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x5f, + 0x63, 0x61, 0x73, 0x74, 0x5f, 0x73, 0x74, 0x6d, 0x74, 0x18, 0x6f, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x18, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, + 0x65, 0x43, 0x61, 0x73, 0x74, 0x53, 0x74, 0x6d, 0x74, 0x48, 0x00, 0x52, 0x0e, 0x43, 0x72, 0x65, + 0x61, 0x74, 0x65, 0x43, 0x61, 0x73, 0x74, 0x53, 0x74, 0x6d, 0x74, 0x12, 0x4e, 0x0a, 0x14, 0x63, + 0x72, 0x65, 0x61, 0x74, 0x65, 0x5f, 0x6f, 0x70, 0x5f, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x5f, 0x73, + 0x74, 0x6d, 0x74, 0x18, 0x70, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x70, 0x67, 0x5f, 0x71, + 0x75, 0x65, 0x72, 0x79, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4f, 0x70, 0x43, 0x6c, 0x61, + 0x73, 0x73, 0x53, 0x74, 0x6d, 0x74, 0x48, 0x00, 0x52, 0x11, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, + 0x4f, 0x70, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x53, 0x74, 0x6d, 0x74, 0x12, 0x51, 0x0a, 0x15, 0x63, + 0x72, 0x65, 0x61, 0x74, 0x65, 0x5f, 0x6f, 0x70, 0x5f, 0x66, 0x61, 0x6d, 0x69, 0x6c, 0x79, 0x5f, + 0x73, 0x74, 0x6d, 0x74, 0x18, 0x71, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x70, 0x67, 0x5f, + 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4f, 0x70, 0x46, 0x61, + 0x6d, 0x69, 0x6c, 0x79, 0x53, 0x74, 0x6d, 0x74, 0x48, 0x00, 0x52, 0x12, 0x43, 0x72, 0x65, 0x61, + 0x74, 0x65, 0x4f, 0x70, 0x46, 0x61, 0x6d, 0x69, 0x6c, 0x79, 0x53, 0x74, 0x6d, 0x74, 0x12, 0x4e, + 0x0a, 0x14, 0x61, 0x6c, 0x74, 0x65, 0x72, 0x5f, 0x6f, 0x70, 0x5f, 0x66, 0x61, 0x6d, 0x69, 0x6c, + 0x79, 0x5f, 0x73, 0x74, 0x6d, 0x74, 0x18, 0x72, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x70, + 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x41, 0x6c, 0x74, 0x65, 0x72, 0x4f, 0x70, 0x46, + 0x61, 0x6d, 0x69, 0x6c, 0x79, 0x53, 0x74, 0x6d, 0x74, 0x48, 0x00, 0x52, 0x11, 0x41, 0x6c, 0x74, + 0x65, 0x72, 0x4f, 0x70, 0x46, 0x61, 0x6d, 0x69, 0x6c, 0x79, 0x53, 0x74, 0x6d, 0x74, 0x12, 0x3a, + 0x0a, 0x0c, 0x70, 0x72, 0x65, 0x70, 0x61, 0x72, 0x65, 0x5f, 0x73, 0x74, 0x6d, 0x74, 0x18, 0x73, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, + 0x50, 0x72, 0x65, 0x70, 0x61, 0x72, 0x65, 0x53, 0x74, 0x6d, 0x74, 0x48, 0x00, 0x52, 0x0b, 0x50, + 0x72, 0x65, 0x70, 0x61, 0x72, 0x65, 0x53, 0x74, 0x6d, 0x74, 0x12, 0x3a, 0x0a, 0x0c, 0x65, 0x78, + 0x65, 0x63, 0x75, 0x74, 0x65, 0x5f, 0x73, 0x74, 0x6d, 0x74, 0x18, 0x74, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x15, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x45, 0x78, 0x65, 0x63, + 0x75, 0x74, 0x65, 0x53, 0x74, 0x6d, 0x74, 0x48, 0x00, 0x52, 0x0b, 0x45, 0x78, 0x65, 0x63, 0x75, + 0x74, 0x65, 0x53, 0x74, 0x6d, 0x74, 0x12, 0x43, 0x0a, 0x0f, 0x64, 0x65, 0x61, 0x6c, 0x6c, 0x6f, + 0x63, 0x61, 0x74, 0x65, 0x5f, 0x73, 0x74, 0x6d, 0x74, 0x18, 0x75, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x18, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x44, 0x65, 0x61, 0x6c, 0x6c, + 0x6f, 0x63, 0x61, 0x74, 0x65, 0x53, 0x74, 0x6d, 0x74, 0x48, 0x00, 0x52, 0x0e, 0x44, 0x65, 0x61, + 0x6c, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x65, 0x53, 0x74, 0x6d, 0x74, 0x12, 0x4d, 0x0a, 0x13, 0x64, + 0x65, 0x63, 0x6c, 0x61, 0x72, 0x65, 0x5f, 0x63, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x5f, 0x73, 0x74, + 0x6d, 0x74, 0x18, 0x76, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, + 0x65, 0x72, 0x79, 0x2e, 0x44, 0x65, 0x63, 0x6c, 0x61, 0x72, 0x65, 0x43, 0x75, 0x72, 0x73, 0x6f, + 0x72, 0x53, 0x74, 0x6d, 0x74, 0x48, 0x00, 0x52, 0x11, 0x44, 0x65, 0x63, 0x6c, 0x61, 0x72, 0x65, + 0x43, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x53, 0x74, 0x6d, 0x74, 0x12, 0x57, 0x0a, 0x17, 0x63, 0x72, + 0x65, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x73, 0x70, 0x61, 0x63, 0x65, + 0x5f, 0x73, 0x74, 0x6d, 0x74, 0x18, 0x77, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x70, 0x67, + 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x61, 0x62, + 0x6c, 0x65, 0x53, 0x70, 0x61, 0x63, 0x65, 0x53, 0x74, 0x6d, 0x74, 0x48, 0x00, 0x52, 0x14, 0x43, + 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x53, 0x70, 0x61, 0x63, 0x65, 0x53, + 0x74, 0x6d, 0x74, 0x12, 0x51, 0x0a, 0x15, 0x64, 0x72, 0x6f, 0x70, 0x5f, 0x74, 0x61, 0x62, 0x6c, + 0x65, 0x5f, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x73, 0x74, 0x6d, 0x74, 0x18, 0x78, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x44, 0x72, + 0x6f, 0x70, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x53, 0x70, 0x61, 0x63, 0x65, 0x53, 0x74, 0x6d, 0x74, + 0x48, 0x00, 0x52, 0x12, 0x44, 0x72, 0x6f, 0x70, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x53, 0x70, 0x61, + 0x63, 0x65, 0x53, 0x74, 0x6d, 0x74, 0x12, 0x5d, 0x0a, 0x19, 0x61, 0x6c, 0x74, 0x65, 0x72, 0x5f, + 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x64, 0x65, 0x70, 0x65, 0x6e, 0x64, 0x73, 0x5f, 0x73, + 0x74, 0x6d, 0x74, 0x18, 0x79, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x70, 0x67, 0x5f, 0x71, + 0x75, 0x65, 0x72, 0x79, 0x2e, 0x41, 0x6c, 0x74, 0x65, 0x72, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, + 0x44, 0x65, 0x70, 0x65, 0x6e, 0x64, 0x73, 0x53, 0x74, 0x6d, 0x74, 0x48, 0x00, 0x52, 0x16, 0x41, + 0x6c, 0x74, 0x65, 0x72, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x44, 0x65, 0x70, 0x65, 0x6e, 0x64, + 0x73, 0x53, 0x74, 0x6d, 0x74, 0x12, 0x5a, 0x0a, 0x18, 0x61, 0x6c, 0x74, 0x65, 0x72, 0x5f, 0x6f, + 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x5f, 0x73, 0x74, 0x6d, + 0x74, 0x18, 0x7a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, + 0x72, 0x79, 0x2e, 0x41, 0x6c, 0x74, 0x65, 0x72, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x53, 0x63, + 0x68, 0x65, 0x6d, 0x61, 0x53, 0x74, 0x6d, 0x74, 0x48, 0x00, 0x52, 0x15, 0x41, 0x6c, 0x74, 0x65, + 0x72, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x53, 0x74, 0x6d, + 0x74, 0x12, 0x44, 0x0a, 0x10, 0x61, 0x6c, 0x74, 0x65, 0x72, 0x5f, 0x6f, 0x77, 0x6e, 0x65, 0x72, + 0x5f, 0x73, 0x74, 0x6d, 0x74, 0x18, 0x7b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x70, 0x67, + 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x41, 0x6c, 0x74, 0x65, 0x72, 0x4f, 0x77, 0x6e, 0x65, + 0x72, 0x53, 0x74, 0x6d, 0x74, 0x48, 0x00, 0x52, 0x0e, 0x41, 0x6c, 0x74, 0x65, 0x72, 0x4f, 0x77, + 0x6e, 0x65, 0x72, 0x53, 0x74, 0x6d, 0x74, 0x12, 0x4d, 0x0a, 0x13, 0x61, 0x6c, 0x74, 0x65, 0x72, + 0x5f, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x5f, 0x73, 0x74, 0x6d, 0x74, 0x18, 0x7c, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, + 0x41, 0x6c, 0x74, 0x65, 0x72, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x53, 0x74, 0x6d, + 0x74, 0x48, 0x00, 0x52, 0x11, 0x41, 0x6c, 0x74, 0x65, 0x72, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, + 0x6f, 0x72, 0x53, 0x74, 0x6d, 0x74, 0x12, 0x41, 0x0a, 0x0f, 0x61, 0x6c, 0x74, 0x65, 0x72, 0x5f, + 0x74, 0x79, 0x70, 0x65, 0x5f, 0x73, 0x74, 0x6d, 0x74, 0x18, 0x7d, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x17, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x41, 0x6c, 0x74, 0x65, 0x72, + 0x54, 0x79, 0x70, 0x65, 0x53, 0x74, 0x6d, 0x74, 0x48, 0x00, 0x52, 0x0d, 0x41, 0x6c, 0x74, 0x65, + 0x72, 0x54, 0x79, 0x70, 0x65, 0x53, 0x74, 0x6d, 0x74, 0x12, 0x41, 0x0a, 0x0f, 0x64, 0x72, 0x6f, + 0x70, 0x5f, 0x6f, 0x77, 0x6e, 0x65, 0x64, 0x5f, 0x73, 0x74, 0x6d, 0x74, 0x18, 0x7e, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x44, 0x72, + 0x6f, 0x70, 0x4f, 0x77, 0x6e, 0x65, 0x64, 0x53, 0x74, 0x6d, 0x74, 0x48, 0x00, 0x52, 0x0d, 0x44, + 0x72, 0x6f, 0x70, 0x4f, 0x77, 0x6e, 0x65, 0x64, 0x53, 0x74, 0x6d, 0x74, 0x12, 0x4d, 0x0a, 0x13, + 0x72, 0x65, 0x61, 0x73, 0x73, 0x69, 0x67, 0x6e, 0x5f, 0x6f, 0x77, 0x6e, 0x65, 0x64, 0x5f, 0x73, + 0x74, 0x6d, 0x74, 0x18, 0x7f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x70, 0x67, 0x5f, 0x71, + 0x75, 0x65, 0x72, 0x79, 0x2e, 0x52, 0x65, 0x61, 0x73, 0x73, 0x69, 0x67, 0x6e, 0x4f, 0x77, 0x6e, + 0x65, 0x64, 0x53, 0x74, 0x6d, 0x74, 0x48, 0x00, 0x52, 0x11, 0x52, 0x65, 0x61, 0x73, 0x73, 0x69, + 0x67, 0x6e, 0x4f, 0x77, 0x6e, 0x65, 0x64, 0x53, 0x74, 0x6d, 0x74, 0x12, 0x4e, 0x0a, 0x13, 0x63, + 0x6f, 0x6d, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x5f, 0x73, 0x74, + 0x6d, 0x74, 0x18, 0x80, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x70, 0x67, 0x5f, 0x71, + 0x75, 0x65, 0x72, 0x79, 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x65, 0x54, 0x79, + 0x70, 0x65, 0x53, 0x74, 0x6d, 0x74, 0x48, 0x00, 0x52, 0x11, 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x73, + 0x69, 0x74, 0x65, 0x54, 0x79, 0x70, 0x65, 0x53, 0x74, 0x6d, 0x74, 0x12, 0x45, 0x0a, 0x10, 0x63, + 0x72, 0x65, 0x61, 0x74, 0x65, 0x5f, 0x65, 0x6e, 0x75, 0x6d, 0x5f, 0x73, 0x74, 0x6d, 0x74, 0x18, + 0x81, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, + 0x79, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x45, 0x6e, 0x75, 0x6d, 0x53, 0x74, 0x6d, 0x74, + 0x48, 0x00, 0x52, 0x0e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x45, 0x6e, 0x75, 0x6d, 0x53, 0x74, + 0x6d, 0x74, 0x12, 0x48, 0x0a, 0x11, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x5f, 0x72, 0x61, 0x6e, + 0x67, 0x65, 0x5f, 0x73, 0x74, 0x6d, 0x74, 0x18, 0x82, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, + 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, + 0x52, 0x61, 0x6e, 0x67, 0x65, 0x53, 0x74, 0x6d, 0x74, 0x48, 0x00, 0x52, 0x0f, 0x43, 0x72, 0x65, + 0x61, 0x74, 0x65, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x53, 0x74, 0x6d, 0x74, 0x12, 0x42, 0x0a, 0x0f, + 0x61, 0x6c, 0x74, 0x65, 0x72, 0x5f, 0x65, 0x6e, 0x75, 0x6d, 0x5f, 0x73, 0x74, 0x6d, 0x74, 0x18, + 0x83, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, + 0x79, 0x2e, 0x41, 0x6c, 0x74, 0x65, 0x72, 0x45, 0x6e, 0x75, 0x6d, 0x53, 0x74, 0x6d, 0x74, 0x48, + 0x00, 0x52, 0x0d, 0x41, 0x6c, 0x74, 0x65, 0x72, 0x45, 0x6e, 0x75, 0x6d, 0x53, 0x74, 0x6d, 0x74, + 0x12, 0x5a, 0x0a, 0x17, 0x61, 0x6c, 0x74, 0x65, 0x72, 0x5f, 0x74, 0x73, 0x64, 0x69, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x61, 0x72, 0x79, 0x5f, 0x73, 0x74, 0x6d, 0x74, 0x18, 0x84, 0x01, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x41, 0x6c, + 0x74, 0x65, 0x72, 0x54, 0x53, 0x44, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x72, 0x79, 0x53, + 0x74, 0x6d, 0x74, 0x48, 0x00, 0x52, 0x15, 0x41, 0x6c, 0x74, 0x65, 0x72, 0x54, 0x53, 0x44, 0x69, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x72, 0x79, 0x53, 0x74, 0x6d, 0x74, 0x12, 0x63, 0x0a, 0x1a, + 0x61, 0x6c, 0x74, 0x65, 0x72, 0x5f, 0x74, 0x73, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x74, 0x6d, 0x74, 0x18, 0x85, 0x01, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x22, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x41, 0x6c, 0x74, + 0x65, 0x72, 0x54, 0x53, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x53, 0x74, 0x6d, 0x74, 0x48, 0x00, 0x52, 0x18, 0x41, 0x6c, 0x74, 0x65, 0x72, 0x54, 0x53, + 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x6d, + 0x74, 0x12, 0x42, 0x0a, 0x0f, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x5f, 0x66, 0x64, 0x77, 0x5f, + 0x73, 0x74, 0x6d, 0x74, 0x18, 0x86, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x70, 0x67, + 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x46, 0x64, 0x77, + 0x53, 0x74, 0x6d, 0x74, 0x48, 0x00, 0x52, 0x0d, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x46, 0x64, + 0x77, 0x53, 0x74, 0x6d, 0x74, 0x12, 0x3f, 0x0a, 0x0e, 0x61, 0x6c, 0x74, 0x65, 0x72, 0x5f, 0x66, + 0x64, 0x77, 0x5f, 0x73, 0x74, 0x6d, 0x74, 0x18, 0x87, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, + 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x41, 0x6c, 0x74, 0x65, 0x72, 0x46, + 0x64, 0x77, 0x53, 0x74, 0x6d, 0x74, 0x48, 0x00, 0x52, 0x0c, 0x41, 0x6c, 0x74, 0x65, 0x72, 0x46, + 0x64, 0x77, 0x53, 0x74, 0x6d, 0x74, 0x12, 0x61, 0x0a, 0x1a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, + 0x5f, 0x66, 0x6f, 0x72, 0x65, 0x69, 0x67, 0x6e, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, + 0x73, 0x74, 0x6d, 0x74, 0x18, 0x88, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x70, 0x67, + 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x46, 0x6f, 0x72, + 0x65, 0x69, 0x67, 0x6e, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x53, 0x74, 0x6d, 0x74, 0x48, 0x00, + 0x52, 0x17, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x46, 0x6f, 0x72, 0x65, 0x69, 0x67, 0x6e, 0x53, + 0x65, 0x72, 0x76, 0x65, 0x72, 0x53, 0x74, 0x6d, 0x74, 0x12, 0x5e, 0x0a, 0x19, 0x61, 0x6c, 0x74, + 0x65, 0x72, 0x5f, 0x66, 0x6f, 0x72, 0x65, 0x69, 0x67, 0x6e, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x65, + 0x72, 0x5f, 0x73, 0x74, 0x6d, 0x74, 0x18, 0x89, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, + 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x41, 0x6c, 0x74, 0x65, 0x72, 0x46, 0x6f, + 0x72, 0x65, 0x69, 0x67, 0x6e, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x53, 0x74, 0x6d, 0x74, 0x48, + 0x00, 0x52, 0x16, 0x41, 0x6c, 0x74, 0x65, 0x72, 0x46, 0x6f, 0x72, 0x65, 0x69, 0x67, 0x6e, 0x53, + 0x65, 0x72, 0x76, 0x65, 0x72, 0x53, 0x74, 0x6d, 0x74, 0x12, 0x5b, 0x0a, 0x18, 0x63, 0x72, 0x65, + 0x61, 0x74, 0x65, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x6d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, + 0x5f, 0x73, 0x74, 0x6d, 0x74, 0x18, 0x8a, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x70, + 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x55, 0x73, + 0x65, 0x72, 0x4d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x53, 0x74, 0x6d, 0x74, 0x48, 0x00, 0x52, + 0x15, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x4d, 0x61, 0x70, 0x70, 0x69, + 0x6e, 0x67, 0x53, 0x74, 0x6d, 0x74, 0x12, 0x58, 0x0a, 0x17, 0x61, 0x6c, 0x74, 0x65, 0x72, 0x5f, + 0x75, 0x73, 0x65, 0x72, 0x5f, 0x6d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x5f, 0x73, 0x74, 0x6d, + 0x74, 0x18, 0x8b, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, + 0x65, 0x72, 0x79, 0x2e, 0x41, 0x6c, 0x74, 0x65, 0x72, 0x55, 0x73, 0x65, 0x72, 0x4d, 0x61, 0x70, + 0x70, 0x69, 0x6e, 0x67, 0x53, 0x74, 0x6d, 0x74, 0x48, 0x00, 0x52, 0x14, 0x41, 0x6c, 0x74, 0x65, + 0x72, 0x55, 0x73, 0x65, 0x72, 0x4d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x53, 0x74, 0x6d, 0x74, + 0x12, 0x55, 0x0a, 0x16, 0x64, 0x72, 0x6f, 0x70, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x6d, 0x61, + 0x70, 0x70, 0x69, 0x6e, 0x67, 0x5f, 0x73, 0x74, 0x6d, 0x74, 0x18, 0x8c, 0x01, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x1d, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x44, 0x72, 0x6f, + 0x70, 0x55, 0x73, 0x65, 0x72, 0x4d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x53, 0x74, 0x6d, 0x74, + 0x48, 0x00, 0x52, 0x13, 0x44, 0x72, 0x6f, 0x70, 0x55, 0x73, 0x65, 0x72, 0x4d, 0x61, 0x70, 0x70, + 0x69, 0x6e, 0x67, 0x53, 0x74, 0x6d, 0x74, 0x12, 0x6b, 0x0a, 0x1e, 0x61, 0x6c, 0x74, 0x65, 0x72, + 0x5f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x6f, 0x70, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x5f, 0x73, 0x74, 0x6d, 0x74, 0x18, 0x8d, 0x01, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x24, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x41, 0x6c, 0x74, 0x65, + 0x72, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x53, 0x70, 0x61, 0x63, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x53, 0x74, 0x6d, 0x74, 0x48, 0x00, 0x52, 0x1a, 0x41, 0x6c, 0x74, 0x65, 0x72, 0x54, + 0x61, 0x62, 0x6c, 0x65, 0x53, 0x70, 0x61, 0x63, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x53, 0x74, 0x6d, 0x74, 0x12, 0x5c, 0x0a, 0x19, 0x61, 0x6c, 0x74, 0x65, 0x72, 0x5f, 0x74, 0x61, + 0x62, 0x6c, 0x65, 0x5f, 0x6d, 0x6f, 0x76, 0x65, 0x5f, 0x61, 0x6c, 0x6c, 0x5f, 0x73, 0x74, 0x6d, + 0x74, 0x18, 0x8e, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, + 0x65, 0x72, 0x79, 0x2e, 0x41, 0x6c, 0x74, 0x65, 0x72, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x4d, 0x6f, + 0x76, 0x65, 0x41, 0x6c, 0x6c, 0x53, 0x74, 0x6d, 0x74, 0x48, 0x00, 0x52, 0x15, 0x41, 0x6c, 0x74, + 0x65, 0x72, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x4d, 0x6f, 0x76, 0x65, 0x41, 0x6c, 0x6c, 0x53, 0x74, + 0x6d, 0x74, 0x12, 0x3f, 0x0a, 0x0e, 0x73, 0x65, 0x63, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x5f, + 0x73, 0x74, 0x6d, 0x74, 0x18, 0x8f, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x70, 0x67, + 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x53, 0x65, 0x63, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x53, + 0x74, 0x6d, 0x74, 0x48, 0x00, 0x52, 0x0c, 0x53, 0x65, 0x63, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x53, + 0x74, 0x6d, 0x74, 0x12, 0x5e, 0x0a, 0x19, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x5f, 0x66, 0x6f, + 0x72, 0x65, 0x69, 0x67, 0x6e, 0x5f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x73, 0x74, 0x6d, 0x74, + 0x18, 0x90, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, + 0x72, 0x79, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x46, 0x6f, 0x72, 0x65, 0x69, 0x67, 0x6e, + 0x54, 0x61, 0x62, 0x6c, 0x65, 0x53, 0x74, 0x6d, 0x74, 0x48, 0x00, 0x52, 0x16, 0x43, 0x72, 0x65, + 0x61, 0x74, 0x65, 0x46, 0x6f, 0x72, 0x65, 0x69, 0x67, 0x6e, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x53, + 0x74, 0x6d, 0x74, 0x12, 0x61, 0x0a, 0x1a, 0x69, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x66, 0x6f, + 0x72, 0x65, 0x69, 0x67, 0x6e, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x5f, 0x73, 0x74, 0x6d, + 0x74, 0x18, 0x91, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, + 0x65, 0x72, 0x79, 0x2e, 0x49, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x46, 0x6f, 0x72, 0x65, 0x69, 0x67, + 0x6e, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x53, 0x74, 0x6d, 0x74, 0x48, 0x00, 0x52, 0x17, 0x49, + 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x46, 0x6f, 0x72, 0x65, 0x69, 0x67, 0x6e, 0x53, 0x63, 0x68, 0x65, + 0x6d, 0x61, 0x53, 0x74, 0x6d, 0x74, 0x12, 0x54, 0x0a, 0x15, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, + 0x5f, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x74, 0x6d, 0x74, 0x18, + 0x92, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, + 0x79, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, + 0x6e, 0x53, 0x74, 0x6d, 0x74, 0x48, 0x00, 0x52, 0x13, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x45, + 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x6d, 0x74, 0x12, 0x51, 0x0a, 0x14, + 0x61, 0x6c, 0x74, 0x65, 0x72, 0x5f, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x5f, + 0x73, 0x74, 0x6d, 0x74, 0x18, 0x93, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x70, 0x67, + 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x41, 0x6c, 0x74, 0x65, 0x72, 0x45, 0x78, 0x74, 0x65, + 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x6d, 0x74, 0x48, 0x00, 0x52, 0x12, 0x41, 0x6c, 0x74, + 0x65, 0x72, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x6d, 0x74, 0x12, + 0x6a, 0x0a, 0x1d, 0x61, 0x6c, 0x74, 0x65, 0x72, 0x5f, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, + 0x6f, 0x6e, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x73, 0x5f, 0x73, 0x74, 0x6d, 0x74, + 0x18, 0x94, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, + 0x72, 0x79, 0x2e, 0x41, 0x6c, 0x74, 0x65, 0x72, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, + 0x6e, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x73, 0x53, 0x74, 0x6d, 0x74, 0x48, 0x00, 0x52, + 0x1a, 0x41, 0x6c, 0x74, 0x65, 0x72, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x43, + 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x73, 0x53, 0x74, 0x6d, 0x74, 0x12, 0x55, 0x0a, 0x16, 0x63, + 0x72, 0x65, 0x61, 0x74, 0x65, 0x5f, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x5f, 0x74, 0x72, 0x69, 0x67, + 0x5f, 0x73, 0x74, 0x6d, 0x74, 0x18, 0x95, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x70, + 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x45, 0x76, + 0x65, 0x6e, 0x74, 0x54, 0x72, 0x69, 0x67, 0x53, 0x74, 0x6d, 0x74, 0x48, 0x00, 0x52, 0x13, 0x43, + 0x72, 0x65, 0x61, 0x74, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x54, 0x72, 0x69, 0x67, 0x53, 0x74, + 0x6d, 0x74, 0x12, 0x52, 0x0a, 0x15, 0x61, 0x6c, 0x74, 0x65, 0x72, 0x5f, 0x65, 0x76, 0x65, 0x6e, + 0x74, 0x5f, 0x74, 0x72, 0x69, 0x67, 0x5f, 0x73, 0x74, 0x6d, 0x74, 0x18, 0x96, 0x01, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x41, 0x6c, + 0x74, 0x65, 0x72, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x54, 0x72, 0x69, 0x67, 0x53, 0x74, 0x6d, 0x74, + 0x48, 0x00, 0x52, 0x12, 0x41, 0x6c, 0x74, 0x65, 0x72, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x54, 0x72, + 0x69, 0x67, 0x53, 0x74, 0x6d, 0x74, 0x12, 0x52, 0x0a, 0x15, 0x72, 0x65, 0x66, 0x72, 0x65, 0x73, + 0x68, 0x5f, 0x6d, 0x61, 0x74, 0x5f, 0x76, 0x69, 0x65, 0x77, 0x5f, 0x73, 0x74, 0x6d, 0x74, 0x18, + 0x97, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, + 0x79, 0x2e, 0x52, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x4d, 0x61, 0x74, 0x56, 0x69, 0x65, 0x77, + 0x53, 0x74, 0x6d, 0x74, 0x48, 0x00, 0x52, 0x12, 0x52, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x4d, + 0x61, 0x74, 0x56, 0x69, 0x65, 0x77, 0x53, 0x74, 0x6d, 0x74, 0x12, 0x54, 0x0a, 0x15, 0x72, 0x65, + 0x70, 0x6c, 0x69, 0x63, 0x61, 0x5f, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x5f, 0x73, + 0x74, 0x6d, 0x74, 0x18, 0x98, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x70, 0x67, 0x5f, + 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x49, 0x64, 0x65, + 0x6e, 0x74, 0x69, 0x74, 0x79, 0x53, 0x74, 0x6d, 0x74, 0x48, 0x00, 0x52, 0x13, 0x52, 0x65, 0x70, + 0x6c, 0x69, 0x63, 0x61, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x53, 0x74, 0x6d, 0x74, + 0x12, 0x48, 0x0a, 0x11, 0x61, 0x6c, 0x74, 0x65, 0x72, 0x5f, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, + 0x5f, 0x73, 0x74, 0x6d, 0x74, 0x18, 0x99, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x70, + 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x41, 0x6c, 0x74, 0x65, 0x72, 0x53, 0x79, 0x73, + 0x74, 0x65, 0x6d, 0x53, 0x74, 0x6d, 0x74, 0x48, 0x00, 0x52, 0x0f, 0x41, 0x6c, 0x74, 0x65, 0x72, + 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x53, 0x74, 0x6d, 0x74, 0x12, 0x4b, 0x0a, 0x12, 0x63, 0x72, + 0x65, 0x61, 0x74, 0x65, 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5f, 0x73, 0x74, 0x6d, 0x74, + 0x18, 0x9a, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, + 0x72, 0x79, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x53, + 0x74, 0x6d, 0x74, 0x48, 0x00, 0x52, 0x10, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, 0x6f, 0x6c, + 0x69, 0x63, 0x79, 0x53, 0x74, 0x6d, 0x74, 0x12, 0x48, 0x0a, 0x11, 0x61, 0x6c, 0x74, 0x65, 0x72, + 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5f, 0x73, 0x74, 0x6d, 0x74, 0x18, 0x9b, 0x01, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x41, + 0x6c, 0x74, 0x65, 0x72, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x53, 0x74, 0x6d, 0x74, 0x48, 0x00, + 0x52, 0x0f, 0x41, 0x6c, 0x74, 0x65, 0x72, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x53, 0x74, 0x6d, + 0x74, 0x12, 0x54, 0x0a, 0x15, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x72, 0x61, 0x6e, + 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x5f, 0x73, 0x74, 0x6d, 0x74, 0x18, 0x9c, 0x01, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x1d, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x43, 0x72, 0x65, + 0x61, 0x74, 0x65, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x53, 0x74, 0x6d, 0x74, + 0x48, 0x00, 0x52, 0x13, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, + 0x6f, 0x72, 0x6d, 0x53, 0x74, 0x6d, 0x74, 0x12, 0x3f, 0x0a, 0x0e, 0x63, 0x72, 0x65, 0x61, 0x74, + 0x65, 0x5f, 0x61, 0x6d, 0x5f, 0x73, 0x74, 0x6d, 0x74, 0x18, 0x9d, 0x01, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x16, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x43, 0x72, 0x65, 0x61, + 0x74, 0x65, 0x41, 0x6d, 0x53, 0x74, 0x6d, 0x74, 0x48, 0x00, 0x52, 0x0c, 0x43, 0x72, 0x65, 0x61, + 0x74, 0x65, 0x41, 0x6d, 0x53, 0x74, 0x6d, 0x74, 0x12, 0x5a, 0x0a, 0x17, 0x63, 0x72, 0x65, 0x61, + 0x74, 0x65, 0x5f, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, + 0x74, 0x6d, 0x74, 0x18, 0x9e, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x70, 0x67, 0x5f, + 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, 0x75, 0x62, 0x6c, + 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x6d, 0x74, 0x48, 0x00, 0x52, 0x15, 0x43, + 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x53, 0x74, 0x6d, 0x74, 0x12, 0x57, 0x0a, 0x16, 0x61, 0x6c, 0x74, 0x65, 0x72, 0x5f, 0x70, 0x75, + 0x62, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x74, 0x6d, 0x74, 0x18, 0x9f, + 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, + 0x2e, 0x41, 0x6c, 0x74, 0x65, 0x72, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x53, 0x74, 0x6d, 0x74, 0x48, 0x00, 0x52, 0x14, 0x41, 0x6c, 0x74, 0x65, 0x72, 0x50, 0x75, + 0x62, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x6d, 0x74, 0x12, 0x5d, 0x0a, + 0x18, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x5f, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, + 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x74, 0x6d, 0x74, 0x18, 0xa0, 0x01, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x20, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x43, 0x72, 0x65, 0x61, + 0x74, 0x65, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, + 0x6d, 0x74, 0x48, 0x00, 0x52, 0x16, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, 0x75, 0x62, 0x73, + 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x6d, 0x74, 0x12, 0x5a, 0x0a, 0x17, + 0x61, 0x6c, 0x74, 0x65, 0x72, 0x5f, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, + 0x6f, 0x6e, 0x5f, 0x73, 0x74, 0x6d, 0x74, 0x18, 0xa1, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, + 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x41, 0x6c, 0x74, 0x65, 0x72, 0x53, + 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x6d, 0x74, 0x48, + 0x00, 0x52, 0x15, 0x41, 0x6c, 0x74, 0x65, 0x72, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, + 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x6d, 0x74, 0x12, 0x57, 0x0a, 0x16, 0x64, 0x72, 0x6f, 0x70, + 0x5f, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x74, + 0x6d, 0x74, 0x18, 0xa2, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x70, 0x67, 0x5f, 0x71, + 0x75, 0x65, 0x72, 0x79, 0x2e, 0x44, 0x72, 0x6f, 0x70, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, + 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x6d, 0x74, 0x48, 0x00, 0x52, 0x14, 0x44, 0x72, 0x6f, + 0x70, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x6d, + 0x74, 0x12, 0x48, 0x0a, 0x11, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x5f, 0x73, 0x74, 0x61, 0x74, + 0x73, 0x5f, 0x73, 0x74, 0x6d, 0x74, 0x18, 0xa3, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, + 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, + 0x74, 0x61, 0x74, 0x73, 0x53, 0x74, 0x6d, 0x74, 0x48, 0x00, 0x52, 0x0f, 0x43, 0x72, 0x65, 0x61, + 0x74, 0x65, 0x53, 0x74, 0x61, 0x74, 0x73, 0x53, 0x74, 0x6d, 0x74, 0x12, 0x51, 0x0a, 0x14, 0x61, + 0x6c, 0x74, 0x65, 0x72, 0x5f, 0x63, 0x6f, 0x6c, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, + 0x74, 0x6d, 0x74, 0x18, 0xa4, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x70, 0x67, 0x5f, + 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x41, 0x6c, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6c, 0x6c, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x6d, 0x74, 0x48, 0x00, 0x52, 0x12, 0x41, 0x6c, 0x74, 0x65, + 0x72, 0x43, 0x6f, 0x6c, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x6d, 0x74, 0x12, 0x32, + 0x0a, 0x09, 0x63, 0x61, 0x6c, 0x6c, 0x5f, 0x73, 0x74, 0x6d, 0x74, 0x18, 0xa5, 0x01, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x43, 0x61, + 0x6c, 0x6c, 0x53, 0x74, 0x6d, 0x74, 0x48, 0x00, 0x52, 0x08, 0x43, 0x61, 0x6c, 0x6c, 0x53, 0x74, + 0x6d, 0x74, 0x12, 0x45, 0x0a, 0x10, 0x61, 0x6c, 0x74, 0x65, 0x72, 0x5f, 0x73, 0x74, 0x61, 0x74, + 0x73, 0x5f, 0x73, 0x74, 0x6d, 0x74, 0x18, 0xa6, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, + 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x41, 0x6c, 0x74, 0x65, 0x72, 0x53, 0x74, + 0x61, 0x74, 0x73, 0x53, 0x74, 0x6d, 0x74, 0x48, 0x00, 0x52, 0x0e, 0x41, 0x6c, 0x74, 0x65, 0x72, + 0x53, 0x74, 0x61, 0x74, 0x73, 0x53, 0x74, 0x6d, 0x74, 0x12, 0x2b, 0x0a, 0x06, 0x61, 0x5f, 0x65, + 0x78, 0x70, 0x72, 0x18, 0xa7, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x70, 0x67, 0x5f, + 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x41, 0x5f, 0x45, 0x78, 0x70, 0x72, 0x48, 0x00, 0x52, 0x06, + 0x41, 0x5f, 0x45, 0x78, 0x70, 0x72, 0x12, 0x35, 0x0a, 0x0a, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, + 0x5f, 0x72, 0x65, 0x66, 0x18, 0xa8, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x70, 0x67, + 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x52, 0x65, 0x66, + 0x48, 0x00, 0x52, 0x09, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x52, 0x65, 0x66, 0x12, 0x32, 0x0a, + 0x09, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x5f, 0x72, 0x65, 0x66, 0x18, 0xa9, 0x01, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x12, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x50, 0x61, 0x72, + 0x61, 0x6d, 0x52, 0x65, 0x66, 0x48, 0x00, 0x52, 0x08, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x52, 0x65, + 0x66, 0x12, 0x2e, 0x0a, 0x07, 0x61, 0x5f, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x18, 0xaa, 0x01, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x41, + 0x5f, 0x43, 0x6f, 0x6e, 0x73, 0x74, 0x48, 0x00, 0x52, 0x07, 0x41, 0x5f, 0x43, 0x6f, 0x6e, 0x73, + 0x74, 0x12, 0x32, 0x0a, 0x09, 0x66, 0x75, 0x6e, 0x63, 0x5f, 0x63, 0x61, 0x6c, 0x6c, 0x18, 0xab, + 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, + 0x2e, 0x46, 0x75, 0x6e, 0x63, 0x43, 0x61, 0x6c, 0x6c, 0x48, 0x00, 0x52, 0x08, 0x46, 0x75, 0x6e, + 0x63, 0x43, 0x61, 0x6c, 0x6c, 0x12, 0x2b, 0x0a, 0x06, 0x61, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x18, + 0xac, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, + 0x79, 0x2e, 0x41, 0x5f, 0x53, 0x74, 0x61, 0x72, 0x48, 0x00, 0x52, 0x06, 0x41, 0x5f, 0x53, 0x74, + 0x61, 0x72, 0x12, 0x34, 0x0a, 0x09, 0x61, 0x5f, 0x69, 0x6e, 0x64, 0x69, 0x63, 0x65, 0x73, 0x18, + 0xad, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, + 0x79, 0x2e, 0x41, 0x5f, 0x49, 0x6e, 0x64, 0x69, 0x63, 0x65, 0x73, 0x48, 0x00, 0x52, 0x09, 0x41, + 0x5f, 0x49, 0x6e, 0x64, 0x69, 0x63, 0x65, 0x73, 0x12, 0x40, 0x0a, 0x0d, 0x61, 0x5f, 0x69, 0x6e, + 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0xae, 0x01, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x17, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x41, 0x5f, 0x49, 0x6e, + 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x0d, 0x41, 0x5f, 0x49, + 0x6e, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x3b, 0x0a, 0x0c, 0x61, 0x5f, + 0x61, 0x72, 0x72, 0x61, 0x79, 0x5f, 0x65, 0x78, 0x70, 0x72, 0x18, 0xaf, 0x01, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x15, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x41, 0x5f, 0x41, + 0x72, 0x72, 0x61, 0x79, 0x45, 0x78, 0x70, 0x72, 0x48, 0x00, 0x52, 0x0b, 0x41, 0x5f, 0x41, 0x72, + 0x72, 0x61, 0x79, 0x45, 0x78, 0x70, 0x72, 0x12, 0x35, 0x0a, 0x0a, 0x72, 0x65, 0x73, 0x5f, 0x74, + 0x61, 0x72, 0x67, 0x65, 0x74, 0x18, 0xb0, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x70, + 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x52, 0x65, 0x73, 0x54, 0x61, 0x72, 0x67, 0x65, + 0x74, 0x48, 0x00, 0x52, 0x09, 0x52, 0x65, 0x73, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x12, 0x45, + 0x0a, 0x10, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x5f, 0x61, 0x73, 0x73, 0x69, 0x67, 0x6e, 0x5f, 0x72, + 0x65, 0x66, 0x18, 0xb1, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x70, 0x67, 0x5f, 0x71, + 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x41, 0x73, 0x73, 0x69, 0x67, 0x6e, + 0x52, 0x65, 0x66, 0x48, 0x00, 0x52, 0x0e, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x41, 0x73, 0x73, 0x69, + 0x67, 0x6e, 0x52, 0x65, 0x66, 0x12, 0x32, 0x0a, 0x09, 0x74, 0x79, 0x70, 0x65, 0x5f, 0x63, 0x61, + 0x73, 0x74, 0x18, 0xb2, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x70, 0x67, 0x5f, 0x71, + 0x75, 0x65, 0x72, 0x79, 0x2e, 0x54, 0x79, 0x70, 0x65, 0x43, 0x61, 0x73, 0x74, 0x48, 0x00, 0x52, + 0x08, 0x54, 0x79, 0x70, 0x65, 0x43, 0x61, 0x73, 0x74, 0x12, 0x41, 0x0a, 0x0e, 0x63, 0x6f, 0x6c, + 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x63, 0x6c, 0x61, 0x75, 0x73, 0x65, 0x18, 0xb3, 0x01, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x43, 0x6f, + 0x6c, 0x6c, 0x61, 0x74, 0x65, 0x43, 0x6c, 0x61, 0x75, 0x73, 0x65, 0x48, 0x00, 0x52, 0x0d, 0x43, + 0x6f, 0x6c, 0x6c, 0x61, 0x74, 0x65, 0x43, 0x6c, 0x61, 0x75, 0x73, 0x65, 0x12, 0x2c, 0x0a, 0x07, + 0x73, 0x6f, 0x72, 0x74, 0x5f, 0x62, 0x79, 0x18, 0xb4, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, + 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x53, 0x6f, 0x72, 0x74, 0x42, 0x79, + 0x48, 0x00, 0x52, 0x06, 0x53, 0x6f, 0x72, 0x74, 0x42, 0x79, 0x12, 0x35, 0x0a, 0x0a, 0x77, 0x69, + 0x6e, 0x64, 0x6f, 0x77, 0x5f, 0x64, 0x65, 0x66, 0x18, 0xb5, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x13, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x57, 0x69, 0x6e, 0x64, 0x6f, + 0x77, 0x44, 0x65, 0x66, 0x48, 0x00, 0x52, 0x09, 0x57, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x44, 0x65, + 0x66, 0x12, 0x44, 0x0a, 0x0f, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x73, 0x75, 0x62, 0x73, 0x65, + 0x6c, 0x65, 0x63, 0x74, 0x18, 0xb6, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x70, 0x67, + 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x53, 0x75, 0x62, 0x73, + 0x65, 0x6c, 0x65, 0x63, 0x74, 0x48, 0x00, 0x52, 0x0e, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x53, 0x75, + 0x62, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x12, 0x41, 0x0a, 0x0e, 0x72, 0x61, 0x6e, 0x67, 0x65, + 0x5f, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0xb7, 0x01, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x17, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x52, 0x61, 0x6e, 0x67, + 0x65, 0x46, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x0d, 0x52, 0x61, 0x6e, + 0x67, 0x65, 0x46, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x4b, 0x0a, 0x12, 0x72, 0x61, + 0x6e, 0x67, 0x65, 0x5f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, + 0x18, 0xb8, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, + 0x72, 0x79, 0x2e, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x53, 0x61, 0x6d, + 0x70, 0x6c, 0x65, 0x48, 0x00, 0x52, 0x10, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x54, 0x61, 0x62, 0x6c, + 0x65, 0x53, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x12, 0x45, 0x0a, 0x10, 0x72, 0x61, 0x6e, 0x67, 0x65, + 0x5f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x66, 0x75, 0x6e, 0x63, 0x18, 0xb9, 0x01, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x52, 0x61, + 0x6e, 0x67, 0x65, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x46, 0x75, 0x6e, 0x63, 0x48, 0x00, 0x52, 0x0e, + 0x52, 0x61, 0x6e, 0x67, 0x65, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x46, 0x75, 0x6e, 0x63, 0x12, 0x4f, + 0x0a, 0x14, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x66, 0x75, + 0x6e, 0x63, 0x5f, 0x63, 0x6f, 0x6c, 0x18, 0xba, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, + 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x54, 0x61, + 0x62, 0x6c, 0x65, 0x46, 0x75, 0x6e, 0x63, 0x43, 0x6f, 0x6c, 0x48, 0x00, 0x52, 0x11, 0x52, 0x61, + 0x6e, 0x67, 0x65, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x46, 0x75, 0x6e, 0x63, 0x43, 0x6f, 0x6c, 0x12, + 0x32, 0x0a, 0x09, 0x74, 0x79, 0x70, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0xbb, 0x01, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x54, + 0x79, 0x70, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x48, 0x00, 0x52, 0x08, 0x54, 0x79, 0x70, 0x65, 0x4e, + 0x61, 0x6d, 0x65, 0x12, 0x35, 0x0a, 0x0a, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x5f, 0x64, 0x65, + 0x66, 0x18, 0xbc, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, + 0x65, 0x72, 0x79, 0x2e, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x44, 0x65, 0x66, 0x48, 0x00, 0x52, + 0x09, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x44, 0x65, 0x66, 0x12, 0x35, 0x0a, 0x0a, 0x69, 0x6e, + 0x64, 0x65, 0x78, 0x5f, 0x65, 0x6c, 0x65, 0x6d, 0x18, 0xbd, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x13, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x49, 0x6e, 0x64, 0x65, 0x78, + 0x45, 0x6c, 0x65, 0x6d, 0x48, 0x00, 0x52, 0x09, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x45, 0x6c, 0x65, + 0x6d, 0x12, 0x37, 0x0a, 0x0a, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x72, 0x61, 0x69, 0x6e, 0x74, 0x18, + 0xbe, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, + 0x79, 0x2e, 0x43, 0x6f, 0x6e, 0x73, 0x74, 0x72, 0x61, 0x69, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x0a, + 0x43, 0x6f, 0x6e, 0x73, 0x74, 0x72, 0x61, 0x69, 0x6e, 0x74, 0x12, 0x2f, 0x0a, 0x08, 0x64, 0x65, + 0x66, 0x5f, 0x65, 0x6c, 0x65, 0x6d, 0x18, 0xbf, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, + 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x44, 0x65, 0x66, 0x45, 0x6c, 0x65, 0x6d, + 0x48, 0x00, 0x52, 0x07, 0x44, 0x65, 0x66, 0x45, 0x6c, 0x65, 0x6d, 0x12, 0x42, 0x0a, 0x0f, 0x72, + 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x74, 0x62, 0x6c, 0x5f, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x18, 0xc0, + 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, + 0x2e, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x54, 0x62, 0x6c, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x48, 0x00, + 0x52, 0x0d, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x54, 0x62, 0x6c, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, + 0x4b, 0x0a, 0x12, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x74, 0x62, 0x6c, 0x5f, 0x66, 0x75, 0x6e, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0xc1, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x70, + 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x54, 0x62, 0x6c, + 0x46, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x10, 0x52, 0x61, 0x6e, 0x67, + 0x65, 0x54, 0x62, 0x6c, 0x46, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x4e, 0x0a, 0x13, + 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x5f, 0x63, 0x6c, 0x61, + 0x75, 0x73, 0x65, 0x18, 0xc2, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x70, 0x67, 0x5f, + 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x53, 0x61, 0x6d, 0x70, 0x6c, + 0x65, 0x43, 0x6c, 0x61, 0x75, 0x73, 0x65, 0x48, 0x00, 0x52, 0x11, 0x54, 0x61, 0x62, 0x6c, 0x65, + 0x53, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x43, 0x6c, 0x61, 0x75, 0x73, 0x65, 0x12, 0x48, 0x0a, 0x11, + 0x77, 0x69, 0x74, 0x68, 0x5f, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, + 0x6e, 0x18, 0xc3, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, + 0x65, 0x72, 0x79, 0x2e, 0x57, 0x69, 0x74, 0x68, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x4f, 0x70, 0x74, + 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x0f, 0x57, 0x69, 0x74, 0x68, 0x43, 0x68, 0x65, 0x63, 0x6b, + 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x48, 0x0a, 0x11, 0x73, 0x6f, 0x72, 0x74, 0x5f, 0x67, + 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x63, 0x6c, 0x61, 0x75, 0x73, 0x65, 0x18, 0xc4, 0x01, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x53, 0x6f, + 0x72, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x43, 0x6c, 0x61, 0x75, 0x73, 0x65, 0x48, 0x00, 0x52, + 0x0f, 0x53, 0x6f, 0x72, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x43, 0x6c, 0x61, 0x75, 0x73, 0x65, + 0x12, 0x3b, 0x0a, 0x0c, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x69, 0x6e, 0x67, 0x5f, 0x73, 0x65, 0x74, + 0x18, 0xc5, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, + 0x72, 0x79, 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x69, 0x6e, 0x67, 0x53, 0x65, 0x74, 0x48, 0x00, + 0x52, 0x0b, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x69, 0x6e, 0x67, 0x53, 0x65, 0x74, 0x12, 0x3e, 0x0a, + 0x0d, 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x5f, 0x63, 0x6c, 0x61, 0x75, 0x73, 0x65, 0x18, 0xc6, + 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, + 0x2e, 0x57, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x43, 0x6c, 0x61, 0x75, 0x73, 0x65, 0x48, 0x00, 0x52, + 0x0c, 0x57, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x43, 0x6c, 0x61, 0x75, 0x73, 0x65, 0x12, 0x45, 0x0a, + 0x10, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x77, 0x69, 0x74, 0x68, 0x5f, 0x61, 0x72, 0x67, + 0x73, 0x18, 0xc7, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, + 0x65, 0x72, 0x79, 0x2e, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x57, 0x69, 0x74, 0x68, 0x41, 0x72, + 0x67, 0x73, 0x48, 0x00, 0x52, 0x0e, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x57, 0x69, 0x74, 0x68, + 0x41, 0x72, 0x67, 0x73, 0x12, 0x38, 0x0a, 0x0b, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x5f, 0x70, + 0x72, 0x69, 0x76, 0x18, 0xc8, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x70, 0x67, 0x5f, + 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x50, 0x72, 0x69, 0x76, + 0x48, 0x00, 0x52, 0x0a, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x50, 0x72, 0x69, 0x76, 0x12, 0x4f, + 0x0a, 0x14, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x5f, 0x6f, 0x70, 0x5f, 0x63, 0x6c, 0x61, 0x73, + 0x73, 0x5f, 0x69, 0x74, 0x65, 0x6d, 0x18, 0xc9, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, + 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4f, + 0x70, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x49, 0x74, 0x65, 0x6d, 0x48, 0x00, 0x52, 0x11, 0x43, 0x72, + 0x65, 0x61, 0x74, 0x65, 0x4f, 0x70, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x49, 0x74, 0x65, 0x6d, 0x12, + 0x48, 0x0a, 0x11, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x6c, 0x69, 0x6b, 0x65, 0x5f, 0x63, 0x6c, + 0x61, 0x75, 0x73, 0x65, 0x18, 0xca, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x70, 0x67, + 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x4c, 0x69, 0x6b, 0x65, + 0x43, 0x6c, 0x61, 0x75, 0x73, 0x65, 0x48, 0x00, 0x52, 0x0f, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x4c, + 0x69, 0x6b, 0x65, 0x43, 0x6c, 0x61, 0x75, 0x73, 0x65, 0x12, 0x4d, 0x0a, 0x12, 0x66, 0x75, 0x6e, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x18, + 0xcb, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, + 0x79, 0x2e, 0x46, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, + 0x74, 0x65, 0x72, 0x48, 0x00, 0x52, 0x11, 0x46, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x50, + 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x12, 0x41, 0x0a, 0x0e, 0x6c, 0x6f, 0x63, 0x6b, + 0x69, 0x6e, 0x67, 0x5f, 0x63, 0x6c, 0x61, 0x75, 0x73, 0x65, 0x18, 0xcc, 0x01, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x17, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4c, 0x6f, 0x63, + 0x6b, 0x69, 0x6e, 0x67, 0x43, 0x6c, 0x61, 0x75, 0x73, 0x65, 0x48, 0x00, 0x52, 0x0d, 0x4c, 0x6f, + 0x63, 0x6b, 0x69, 0x6e, 0x67, 0x43, 0x6c, 0x61, 0x75, 0x73, 0x65, 0x12, 0x42, 0x0a, 0x0f, 0x72, + 0x6f, 0x77, 0x5f, 0x6d, 0x61, 0x72, 0x6b, 0x5f, 0x63, 0x6c, 0x61, 0x75, 0x73, 0x65, 0x18, 0xcd, + 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, + 0x2e, 0x52, 0x6f, 0x77, 0x4d, 0x61, 0x72, 0x6b, 0x43, 0x6c, 0x61, 0x75, 0x73, 0x65, 0x48, 0x00, + 0x52, 0x0d, 0x52, 0x6f, 0x77, 0x4d, 0x61, 0x72, 0x6b, 0x43, 0x6c, 0x61, 0x75, 0x73, 0x65, 0x12, + 0x3e, 0x0a, 0x0d, 0x78, 0x6d, 0x6c, 0x5f, 0x73, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x69, 0x7a, 0x65, + 0x18, 0xce, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, + 0x72, 0x79, 0x2e, 0x58, 0x6d, 0x6c, 0x53, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x48, + 0x00, 0x52, 0x0c, 0x58, 0x6d, 0x6c, 0x53, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x12, + 0x38, 0x0a, 0x0b, 0x77, 0x69, 0x74, 0x68, 0x5f, 0x63, 0x6c, 0x61, 0x75, 0x73, 0x65, 0x18, 0xcf, + 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, + 0x2e, 0x57, 0x69, 0x74, 0x68, 0x43, 0x6c, 0x61, 0x75, 0x73, 0x65, 0x48, 0x00, 0x52, 0x0a, 0x57, + 0x69, 0x74, 0x68, 0x43, 0x6c, 0x61, 0x75, 0x73, 0x65, 0x12, 0x3b, 0x0a, 0x0c, 0x69, 0x6e, 0x66, + 0x65, 0x72, 0x5f, 0x63, 0x6c, 0x61, 0x75, 0x73, 0x65, 0x18, 0xd0, 0x01, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x15, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x49, 0x6e, 0x66, 0x65, + 0x72, 0x43, 0x6c, 0x61, 0x75, 0x73, 0x65, 0x48, 0x00, 0x52, 0x0b, 0x49, 0x6e, 0x66, 0x65, 0x72, + 0x43, 0x6c, 0x61, 0x75, 0x73, 0x65, 0x12, 0x4b, 0x0a, 0x12, 0x6f, 0x6e, 0x5f, 0x63, 0x6f, 0x6e, + 0x66, 0x6c, 0x69, 0x63, 0x74, 0x5f, 0x63, 0x6c, 0x61, 0x75, 0x73, 0x65, 0x18, 0xd1, 0x01, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4f, + 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x6c, 0x69, 0x63, 0x74, 0x43, 0x6c, 0x61, 0x75, 0x73, 0x65, 0x48, + 0x00, 0x52, 0x10, 0x4f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x6c, 0x69, 0x63, 0x74, 0x43, 0x6c, 0x61, + 0x75, 0x73, 0x65, 0x12, 0x48, 0x0a, 0x11, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x5f, 0x74, 0x61, + 0x62, 0x6c, 0x65, 0x5f, 0x65, 0x78, 0x70, 0x72, 0x18, 0xd2, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x19, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, + 0x6e, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x45, 0x78, 0x70, 0x72, 0x48, 0x00, 0x52, 0x0f, 0x43, 0x6f, + 0x6d, 0x6d, 0x6f, 0x6e, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x45, 0x78, 0x70, 0x72, 0x12, 0x32, 0x0a, + 0x09, 0x72, 0x6f, 0x6c, 0x65, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x18, 0xd3, 0x01, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x12, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x52, 0x6f, 0x6c, + 0x65, 0x53, 0x70, 0x65, 0x63, 0x48, 0x00, 0x52, 0x08, 0x52, 0x6f, 0x6c, 0x65, 0x53, 0x70, 0x65, + 0x63, 0x12, 0x4d, 0x0a, 0x12, 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x5f, 0x74, 0x72, 0x61, + 0x6e, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0xd4, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, + 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, + 0x72, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x11, 0x54, + 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, + 0x12, 0x41, 0x0a, 0x0e, 0x70, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x65, 0x6c, + 0x65, 0x6d, 0x18, 0xd5, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x70, 0x67, 0x5f, 0x71, + 0x75, 0x65, 0x72, 0x79, 0x2e, 0x50, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x6c, + 0x65, 0x6d, 0x48, 0x00, 0x52, 0x0d, 0x50, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x45, + 0x6c, 0x65, 0x6d, 0x12, 0x41, 0x0a, 0x0e, 0x70, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, + 0x5f, 0x73, 0x70, 0x65, 0x63, 0x18, 0xd6, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x70, + 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x50, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, + 0x6e, 0x53, 0x70, 0x65, 0x63, 0x48, 0x00, 0x52, 0x0d, 0x50, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, + 0x6f, 0x6e, 0x53, 0x70, 0x65, 0x63, 0x12, 0x51, 0x0a, 0x14, 0x70, 0x61, 0x72, 0x74, 0x69, 0x74, + 0x69, 0x6f, 0x6e, 0x5f, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x18, 0xd7, + 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, + 0x2e, 0x50, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x53, + 0x70, 0x65, 0x63, 0x48, 0x00, 0x52, 0x12, 0x50, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, + 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x53, 0x70, 0x65, 0x63, 0x12, 0x54, 0x0a, 0x15, 0x70, 0x61, 0x72, + 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x64, 0x61, 0x74, + 0x75, 0x6d, 0x18, 0xd8, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x70, 0x67, 0x5f, 0x71, + 0x75, 0x65, 0x72, 0x79, 0x2e, 0x50, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x61, + 0x6e, 0x67, 0x65, 0x44, 0x61, 0x74, 0x75, 0x6d, 0x48, 0x00, 0x52, 0x13, 0x50, 0x61, 0x72, 0x74, + 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x44, 0x61, 0x74, 0x75, 0x6d, 0x12, + 0x3e, 0x0a, 0x0d, 0x70, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x6d, 0x64, + 0x18, 0xd9, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, + 0x72, 0x79, 0x2e, 0x50, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6d, 0x64, 0x48, + 0x00, 0x52, 0x0c, 0x50, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6d, 0x64, 0x12, + 0x44, 0x0a, 0x0f, 0x76, 0x61, 0x63, 0x75, 0x75, 0x6d, 0x5f, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x18, 0xda, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x70, 0x67, 0x5f, 0x71, + 0x75, 0x65, 0x72, 0x79, 0x2e, 0x56, 0x61, 0x63, 0x75, 0x75, 0x6d, 0x52, 0x65, 0x6c, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x0e, 0x56, 0x61, 0x63, 0x75, 0x75, 0x6d, 0x52, 0x65, 0x6c, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x48, 0x0a, 0x11, 0x69, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x5f, + 0x63, 0x6f, 0x64, 0x65, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x18, 0xdb, 0x01, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x19, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x49, 0x6e, 0x6c, + 0x69, 0x6e, 0x65, 0x43, 0x6f, 0x64, 0x65, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x48, 0x00, 0x52, 0x0f, + 0x49, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x43, 0x6f, 0x64, 0x65, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x12, + 0x3b, 0x0a, 0x0c, 0x63, 0x61, 0x6c, 0x6c, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x18, + 0xdc, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, + 0x79, 0x2e, 0x43, 0x61, 0x6c, 0x6c, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x48, 0x00, 0x52, + 0x0b, 0x43, 0x61, 0x6c, 0x6c, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x12, 0x2e, 0x0a, 0x07, + 0x69, 0x6e, 0x74, 0x65, 0x67, 0x65, 0x72, 0x18, 0xdd, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, + 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x65, + 0x72, 0x48, 0x00, 0x52, 0x07, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x65, 0x72, 0x12, 0x28, 0x0a, 0x05, + 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x18, 0xde, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x70, + 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x46, 0x6c, 0x6f, 0x61, 0x74, 0x48, 0x00, 0x52, + 0x05, 0x46, 0x6c, 0x6f, 0x61, 0x74, 0x12, 0x2b, 0x0a, 0x06, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, + 0x18, 0xdf, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, + 0x72, 0x79, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x48, 0x00, 0x52, 0x06, 0x53, 0x74, 0x72, + 0x69, 0x6e, 0x67, 0x12, 0x35, 0x0a, 0x0a, 0x62, 0x69, 0x74, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e, + 0x67, 0x18, 0xe0, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, + 0x65, 0x72, 0x79, 0x2e, 0x42, 0x69, 0x74, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x48, 0x00, 0x52, + 0x09, 0x42, 0x69, 0x74, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x12, 0x25, 0x0a, 0x04, 0x6e, 0x75, + 0x6c, 0x6c, 0x18, 0xe1, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x67, 0x5f, 0x71, + 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4e, 0x75, 0x6c, 0x6c, 0x48, 0x00, 0x52, 0x04, 0x4e, 0x75, 0x6c, + 0x6c, 0x12, 0x25, 0x0a, 0x04, 0x6c, 0x69, 0x73, 0x74, 0x18, 0xe2, 0x01, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x0e, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4c, 0x69, 0x73, 0x74, + 0x48, 0x00, 0x52, 0x04, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x2f, 0x0a, 0x08, 0x69, 0x6e, 0x74, 0x5f, + 0x6c, 0x69, 0x73, 0x74, 0x18, 0xe3, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x70, 0x67, + 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x49, 0x6e, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x48, 0x00, + 0x52, 0x07, 0x49, 0x6e, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x2f, 0x0a, 0x08, 0x6f, 0x69, 0x64, + 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0xe4, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x70, + 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4f, 0x69, 0x64, 0x4c, 0x69, 0x73, 0x74, 0x48, + 0x00, 0x52, 0x07, 0x4f, 0x69, 0x64, 0x4c, 0x69, 0x73, 0x74, 0x42, 0x06, 0x0a, 0x04, 0x6e, 0x6f, + 0x64, 0x65, 0x22, 0x1d, 0x0a, 0x07, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x65, 0x72, 0x12, 0x12, 0x0a, + 0x04, 0x69, 0x76, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x69, 0x76, 0x61, + 0x6c, 0x22, 0x19, 0x0a, 0x05, 0x46, 0x6c, 0x6f, 0x61, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x73, 0x74, + 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x73, 0x74, 0x72, 0x22, 0x1a, 0x0a, 0x06, + 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x12, 0x10, 0x0a, 0x03, 0x73, 0x74, 0x72, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x03, 0x73, 0x74, 0x72, 0x22, 0x1d, 0x0a, 0x09, 0x42, 0x69, 0x74, 0x53, + 0x74, 0x72, 0x69, 0x6e, 0x67, 0x12, 0x10, 0x0a, 0x03, 0x73, 0x74, 0x72, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x03, 0x73, 0x74, 0x72, 0x22, 0x06, 0x0a, 0x04, 0x4e, 0x75, 0x6c, 0x6c, 0x22, + 0x2c, 0x0a, 0x04, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x24, 0x0a, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, + 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, + 0x79, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x22, 0x2f, 0x0a, + 0x07, 0x4f, 0x69, 0x64, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x24, 0x0a, 0x05, 0x69, 0x74, 0x65, 0x6d, + 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, + 0x72, 0x79, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x22, 0x2f, + 0x0a, 0x07, 0x49, 0x6e, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x24, 0x0a, 0x05, 0x69, 0x74, 0x65, + 0x6d, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, + 0x65, 0x72, 0x79, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x22, + 0x51, 0x0a, 0x05, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x61, 0x6c, 0x69, 0x61, + 0x73, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x6c, 0x69, + 0x61, 0x73, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x2a, 0x0a, 0x08, 0x63, 0x6f, 0x6c, 0x6e, 0x61, 0x6d, + 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, + 0x65, 0x72, 0x79, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x08, 0x63, 0x6f, 0x6c, 0x6e, 0x61, 0x6d, + 0x65, 0x73, 0x22, 0xe3, 0x01, 0x0a, 0x08, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x56, 0x61, 0x72, 0x12, + 0x20, 0x0a, 0x0b, 0x63, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x63, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x6e, 0x61, 0x6d, + 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x6e, 0x61, 0x6d, 0x65, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x6e, 0x61, 0x6d, + 0x65, 0x12, 0x18, 0x0a, 0x07, 0x72, 0x65, 0x6c, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x07, 0x72, 0x65, 0x6c, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x69, + 0x6e, 0x68, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x03, 0x69, 0x6e, 0x68, 0x12, 0x26, 0x0a, + 0x0e, 0x72, 0x65, 0x6c, 0x70, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x63, 0x65, 0x18, + 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x72, 0x65, 0x6c, 0x70, 0x65, 0x72, 0x73, 0x69, 0x73, + 0x74, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x25, 0x0a, 0x05, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x18, 0x06, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, + 0x41, 0x6c, 0x69, 0x61, 0x73, 0x52, 0x05, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x12, 0x1a, 0x0a, 0x08, + 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, + 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xaf, 0x04, 0x0a, 0x09, 0x54, 0x61, 0x62, + 0x6c, 0x65, 0x46, 0x75, 0x6e, 0x63, 0x12, 0x28, 0x0a, 0x07, 0x6e, 0x73, 0x5f, 0x75, 0x72, 0x69, + 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, + 0x72, 0x79, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x07, 0x6e, 0x73, 0x5f, 0x75, 0x72, 0x69, 0x73, + 0x12, 0x2a, 0x0a, 0x08, 0x6e, 0x73, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4e, 0x6f, + 0x64, 0x65, 0x52, 0x08, 0x6e, 0x73, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x28, 0x0a, 0x07, + 0x64, 0x6f, 0x63, 0x65, 0x78, 0x70, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, + 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x07, 0x64, + 0x6f, 0x63, 0x65, 0x78, 0x70, 0x72, 0x12, 0x28, 0x0a, 0x07, 0x72, 0x6f, 0x77, 0x65, 0x78, 0x70, + 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, + 0x72, 0x79, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x07, 0x72, 0x6f, 0x77, 0x65, 0x78, 0x70, 0x72, + 0x12, 0x2a, 0x0a, 0x08, 0x63, 0x6f, 0x6c, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x05, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4e, 0x6f, + 0x64, 0x65, 0x52, 0x08, 0x63, 0x6f, 0x6c, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x2a, 0x0a, 0x08, + 0x63, 0x6f, 0x6c, 0x74, 0x79, 0x70, 0x65, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, + 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x08, + 0x63, 0x6f, 0x6c, 0x74, 0x79, 0x70, 0x65, 0x73, 0x12, 0x2e, 0x0a, 0x0a, 0x63, 0x6f, 0x6c, 0x74, + 0x79, 0x70, 0x6d, 0x6f, 0x64, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, + 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x0a, 0x63, 0x6f, + 0x6c, 0x74, 0x79, 0x70, 0x6d, 0x6f, 0x64, 0x73, 0x12, 0x34, 0x0a, 0x0d, 0x63, 0x6f, 0x6c, 0x63, + 0x6f, 0x6c, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x0e, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, + 0x0d, 0x63, 0x6f, 0x6c, 0x63, 0x6f, 0x6c, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x2a, + 0x0a, 0x08, 0x63, 0x6f, 0x6c, 0x65, 0x78, 0x70, 0x72, 0x73, 0x18, 0x09, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x0e, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4e, 0x6f, 0x64, 0x65, + 0x52, 0x08, 0x63, 0x6f, 0x6c, 0x65, 0x78, 0x70, 0x72, 0x73, 0x12, 0x30, 0x0a, 0x0b, 0x63, 0x6f, + 0x6c, 0x64, 0x65, 0x66, 0x65, 0x78, 0x70, 0x72, 0x73, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x0e, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, + 0x0b, 0x63, 0x6f, 0x6c, 0x64, 0x65, 0x66, 0x65, 0x78, 0x70, 0x72, 0x73, 0x12, 0x1a, 0x0a, 0x08, + 0x6e, 0x6f, 0x74, 0x6e, 0x75, 0x6c, 0x6c, 0x73, 0x18, 0x0b, 0x20, 0x03, 0x28, 0x04, 0x52, 0x08, + 0x6e, 0x6f, 0x74, 0x6e, 0x75, 0x6c, 0x6c, 0x73, 0x12, 0x24, 0x0a, 0x0d, 0x6f, 0x72, 0x64, 0x69, + 0x6e, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x63, 0x6f, 0x6c, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x0d, 0x6f, 0x72, 0x64, 0x69, 0x6e, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x63, 0x6f, 0x6c, 0x12, 0x1a, + 0x0a, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x06, 0x0a, 0x04, 0x45, 0x78, + 0x70, 0x72, 0x22, 0xab, 0x02, 0x0a, 0x03, 0x56, 0x61, 0x72, 0x12, 0x20, 0x0a, 0x03, 0x78, 0x70, + 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, + 0x72, 0x79, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x03, 0x78, 0x70, 0x72, 0x12, 0x14, 0x0a, 0x05, + 0x76, 0x61, 0x72, 0x6e, 0x6f, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x76, 0x61, 0x72, + 0x6e, 0x6f, 0x12, 0x1a, 0x0a, 0x08, 0x76, 0x61, 0x72, 0x61, 0x74, 0x74, 0x6e, 0x6f, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x76, 0x61, 0x72, 0x61, 0x74, 0x74, 0x6e, 0x6f, 0x12, 0x18, + 0x0a, 0x07, 0x76, 0x61, 0x72, 0x74, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x52, + 0x07, 0x76, 0x61, 0x72, 0x74, 0x79, 0x70, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x76, 0x61, 0x72, 0x74, + 0x79, 0x70, 0x6d, 0x6f, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x76, 0x61, 0x72, + 0x74, 0x79, 0x70, 0x6d, 0x6f, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x76, 0x61, 0x72, 0x63, 0x6f, 0x6c, + 0x6c, 0x69, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x09, 0x76, 0x61, 0x72, 0x63, 0x6f, + 0x6c, 0x6c, 0x69, 0x64, 0x12, 0x20, 0x0a, 0x0b, 0x76, 0x61, 0x72, 0x6c, 0x65, 0x76, 0x65, 0x6c, + 0x73, 0x75, 0x70, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0b, 0x76, 0x61, 0x72, 0x6c, 0x65, + 0x76, 0x65, 0x6c, 0x73, 0x75, 0x70, 0x12, 0x1a, 0x0a, 0x08, 0x76, 0x61, 0x72, 0x6e, 0x6f, 0x73, + 0x79, 0x6e, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x08, 0x76, 0x61, 0x72, 0x6e, 0x6f, 0x73, + 0x79, 0x6e, 0x12, 0x20, 0x0a, 0x0b, 0x76, 0x61, 0x72, 0x61, 0x74, 0x74, 0x6e, 0x6f, 0x73, 0x79, + 0x6e, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x76, 0x61, 0x72, 0x61, 0x74, 0x74, 0x6e, + 0x6f, 0x73, 0x79, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x22, 0xf4, 0x01, 0x0a, 0x05, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x12, 0x20, 0x0a, 0x03, 0x78, 0x70, + 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, + 0x72, 0x79, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x03, 0x78, 0x70, 0x72, 0x12, 0x31, 0x0a, 0x09, + 0x70, 0x61, 0x72, 0x61, 0x6d, 0x6b, 0x69, 0x6e, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, + 0x13, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x50, 0x61, 0x72, 0x61, 0x6d, + 0x4b, 0x69, 0x6e, 0x64, 0x52, 0x09, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x6b, 0x69, 0x6e, 0x64, 0x12, + 0x18, 0x0a, 0x07, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x07, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x69, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x70, 0x61, 0x72, + 0x61, 0x6d, 0x74, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x09, 0x70, 0x61, + 0x72, 0x61, 0x6d, 0x74, 0x79, 0x70, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x70, 0x61, 0x72, 0x61, 0x6d, + 0x74, 0x79, 0x70, 0x6d, 0x6f, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x70, 0x61, + 0x72, 0x61, 0x6d, 0x74, 0x79, 0x70, 0x6d, 0x6f, 0x64, 0x12, 0x20, 0x0a, 0x0b, 0x70, 0x61, 0x72, + 0x61, 0x6d, 0x63, 0x6f, 0x6c, 0x6c, 0x69, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0b, + 0x70, 0x61, 0x72, 0x61, 0x6d, 0x63, 0x6f, 0x6c, 0x6c, 0x69, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x6c, + 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x6c, + 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xa0, 0x05, 0x0a, 0x06, 0x41, 0x67, 0x67, 0x72, + 0x65, 0x66, 0x12, 0x20, 0x0a, 0x03, 0x78, 0x70, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x0e, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, + 0x03, 0x78, 0x70, 0x72, 0x12, 0x1a, 0x0a, 0x08, 0x61, 0x67, 0x67, 0x66, 0x6e, 0x6f, 0x69, 0x64, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x08, 0x61, 0x67, 0x67, 0x66, 0x6e, 0x6f, 0x69, 0x64, + 0x12, 0x18, 0x0a, 0x07, 0x61, 0x67, 0x67, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x0d, 0x52, 0x07, 0x61, 0x67, 0x67, 0x74, 0x79, 0x70, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x61, 0x67, + 0x67, 0x63, 0x6f, 0x6c, 0x6c, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x09, 0x61, + 0x67, 0x67, 0x63, 0x6f, 0x6c, 0x6c, 0x69, 0x64, 0x12, 0x20, 0x0a, 0x0b, 0x69, 0x6e, 0x70, 0x75, + 0x74, 0x63, 0x6f, 0x6c, 0x6c, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0b, 0x69, + 0x6e, 0x70, 0x75, 0x74, 0x63, 0x6f, 0x6c, 0x6c, 0x69, 0x64, 0x12, 0x22, 0x0a, 0x0c, 0x61, 0x67, + 0x67, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x74, 0x79, 0x70, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0d, + 0x52, 0x0c, 0x61, 0x67, 0x67, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x74, 0x79, 0x70, 0x65, 0x12, 0x30, + 0x0a, 0x0b, 0x61, 0x67, 0x67, 0x61, 0x72, 0x67, 0x74, 0x79, 0x70, 0x65, 0x73, 0x18, 0x07, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4e, + 0x6f, 0x64, 0x65, 0x52, 0x0b, 0x61, 0x67, 0x67, 0x61, 0x72, 0x67, 0x74, 0x79, 0x70, 0x65, 0x73, + 0x12, 0x34, 0x0a, 0x0d, 0x61, 0x67, 0x67, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x61, 0x72, 0x67, + 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, + 0x72, 0x79, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x0d, 0x61, 0x67, 0x67, 0x64, 0x69, 0x72, 0x65, + 0x63, 0x74, 0x61, 0x72, 0x67, 0x73, 0x12, 0x22, 0x0a, 0x04, 0x61, 0x72, 0x67, 0x73, 0x18, 0x09, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, + 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x04, 0x61, 0x72, 0x67, 0x73, 0x12, 0x2a, 0x0a, 0x08, 0x61, 0x67, + 0x67, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, + 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x08, 0x61, 0x67, + 0x67, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x12, 0x30, 0x0a, 0x0b, 0x61, 0x67, 0x67, 0x64, 0x69, 0x73, + 0x74, 0x69, 0x6e, 0x63, 0x74, 0x18, 0x0b, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x67, + 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x0b, 0x61, 0x67, 0x67, + 0x64, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x63, 0x74, 0x12, 0x2c, 0x0a, 0x09, 0x61, 0x67, 0x67, 0x66, + 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x67, + 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x09, 0x61, 0x67, 0x67, + 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x18, 0x0a, 0x07, 0x61, 0x67, 0x67, 0x73, 0x74, 0x61, + 0x72, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x61, 0x67, 0x67, 0x73, 0x74, 0x61, 0x72, + 0x12, 0x20, 0x0a, 0x0b, 0x61, 0x67, 0x67, 0x76, 0x61, 0x72, 0x69, 0x61, 0x64, 0x69, 0x63, 0x18, + 0x0e, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x61, 0x67, 0x67, 0x76, 0x61, 0x72, 0x69, 0x61, 0x64, + 0x69, 0x63, 0x12, 0x18, 0x0a, 0x07, 0x61, 0x67, 0x67, 0x6b, 0x69, 0x6e, 0x64, 0x18, 0x0f, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x67, 0x67, 0x6b, 0x69, 0x6e, 0x64, 0x12, 0x20, 0x0a, 0x0b, + 0x61, 0x67, 0x67, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x73, 0x75, 0x70, 0x18, 0x10, 0x20, 0x01, 0x28, + 0x0d, 0x52, 0x0b, 0x61, 0x67, 0x67, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x73, 0x75, 0x70, 0x12, 0x2e, + 0x0a, 0x08, 0x61, 0x67, 0x67, 0x73, 0x70, 0x6c, 0x69, 0x74, 0x18, 0x11, 0x20, 0x01, 0x28, 0x0e, + 0x32, 0x12, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x41, 0x67, 0x67, 0x53, + 0x70, 0x6c, 0x69, 0x74, 0x52, 0x08, 0x61, 0x67, 0x67, 0x73, 0x70, 0x6c, 0x69, 0x74, 0x12, 0x1a, + 0x0a, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x12, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xda, 0x01, 0x0a, 0x0c, 0x47, + 0x72, 0x6f, 0x75, 0x70, 0x69, 0x6e, 0x67, 0x46, 0x75, 0x6e, 0x63, 0x12, 0x20, 0x0a, 0x03, 0x78, + 0x70, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, + 0x65, 0x72, 0x79, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x03, 0x78, 0x70, 0x72, 0x12, 0x22, 0x0a, + 0x04, 0x61, 0x72, 0x67, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x67, + 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x04, 0x61, 0x72, 0x67, + 0x73, 0x12, 0x22, 0x0a, 0x04, 0x72, 0x65, 0x66, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x0e, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, + 0x04, 0x72, 0x65, 0x66, 0x73, 0x12, 0x22, 0x0a, 0x04, 0x63, 0x6f, 0x6c, 0x73, 0x18, 0x04, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4e, + 0x6f, 0x64, 0x65, 0x52, 0x04, 0x63, 0x6f, 0x6c, 0x73, 0x12, 0x20, 0x0a, 0x0b, 0x61, 0x67, 0x67, + 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x73, 0x75, 0x70, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0b, + 0x61, 0x67, 0x67, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x73, 0x75, 0x70, 0x12, 0x1a, 0x0a, 0x08, 0x6c, + 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x6c, + 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xdc, 0x02, 0x0a, 0x0a, 0x57, 0x69, 0x6e, 0x64, + 0x6f, 0x77, 0x46, 0x75, 0x6e, 0x63, 0x12, 0x20, 0x0a, 0x03, 0x78, 0x70, 0x72, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4e, + 0x6f, 0x64, 0x65, 0x52, 0x03, 0x78, 0x70, 0x72, 0x12, 0x1a, 0x0a, 0x08, 0x77, 0x69, 0x6e, 0x66, + 0x6e, 0x6f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x08, 0x77, 0x69, 0x6e, 0x66, + 0x6e, 0x6f, 0x69, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x77, 0x69, 0x6e, 0x74, 0x79, 0x70, 0x65, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x07, 0x77, 0x69, 0x6e, 0x74, 0x79, 0x70, 0x65, 0x12, 0x1c, + 0x0a, 0x09, 0x77, 0x69, 0x6e, 0x63, 0x6f, 0x6c, 0x6c, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x0d, 0x52, 0x09, 0x77, 0x69, 0x6e, 0x63, 0x6f, 0x6c, 0x6c, 0x69, 0x64, 0x12, 0x20, 0x0a, 0x0b, + 0x69, 0x6e, 0x70, 0x75, 0x74, 0x63, 0x6f, 0x6c, 0x6c, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, + 0x0d, 0x52, 0x0b, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x63, 0x6f, 0x6c, 0x6c, 0x69, 0x64, 0x12, 0x22, + 0x0a, 0x04, 0x61, 0x72, 0x67, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, + 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x04, 0x61, 0x72, + 0x67, 0x73, 0x12, 0x2c, 0x0a, 0x09, 0x61, 0x67, 0x67, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, + 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, + 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x09, 0x61, 0x67, 0x67, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, + 0x12, 0x16, 0x0a, 0x06, 0x77, 0x69, 0x6e, 0x72, 0x65, 0x66, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0d, + 0x52, 0x06, 0x77, 0x69, 0x6e, 0x72, 0x65, 0x66, 0x12, 0x18, 0x0a, 0x07, 0x77, 0x69, 0x6e, 0x73, + 0x74, 0x61, 0x72, 0x18, 0x09, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x77, 0x69, 0x6e, 0x73, 0x74, + 0x61, 0x72, 0x12, 0x16, 0x0a, 0x06, 0x77, 0x69, 0x6e, 0x61, 0x67, 0x67, 0x18, 0x0a, 0x20, 0x01, + 0x28, 0x08, 0x52, 0x06, 0x77, 0x69, 0x6e, 0x61, 0x67, 0x67, 0x12, 0x1a, 0x0a, 0x08, 0x6c, 0x6f, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x6c, 0x6f, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x8f, 0x03, 0x0a, 0x0f, 0x53, 0x75, 0x62, 0x73, 0x63, + 0x72, 0x69, 0x70, 0x74, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x66, 0x12, 0x20, 0x0a, 0x03, 0x78, 0x70, + 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, + 0x72, 0x79, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x03, 0x78, 0x70, 0x72, 0x12, 0x2a, 0x0a, 0x10, + 0x72, 0x65, 0x66, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x74, 0x79, 0x70, 0x65, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x10, 0x72, 0x65, 0x66, 0x63, 0x6f, 0x6e, 0x74, 0x61, + 0x69, 0x6e, 0x65, 0x72, 0x74, 0x79, 0x70, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x72, 0x65, 0x66, 0x65, + 0x6c, 0x65, 0x6d, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0b, 0x72, + 0x65, 0x66, 0x65, 0x6c, 0x65, 0x6d, 0x74, 0x79, 0x70, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x72, 0x65, + 0x66, 0x74, 0x79, 0x70, 0x6d, 0x6f, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x72, + 0x65, 0x66, 0x74, 0x79, 0x70, 0x6d, 0x6f, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x72, 0x65, 0x66, 0x63, + 0x6f, 0x6c, 0x6c, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x09, 0x72, 0x65, 0x66, + 0x63, 0x6f, 0x6c, 0x6c, 0x69, 0x64, 0x12, 0x38, 0x0a, 0x0f, 0x72, 0x65, 0x66, 0x75, 0x70, 0x70, + 0x65, 0x72, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x70, 0x72, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x0e, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, + 0x0f, 0x72, 0x65, 0x66, 0x75, 0x70, 0x70, 0x65, 0x72, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x70, 0x72, + 0x12, 0x38, 0x0a, 0x0f, 0x72, 0x65, 0x66, 0x6c, 0x6f, 0x77, 0x65, 0x72, 0x69, 0x6e, 0x64, 0x65, + 0x78, 0x70, 0x72, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x67, 0x5f, 0x71, + 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x0f, 0x72, 0x65, 0x66, 0x6c, 0x6f, + 0x77, 0x65, 0x72, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x70, 0x72, 0x12, 0x28, 0x0a, 0x07, 0x72, 0x65, + 0x66, 0x65, 0x78, 0x70, 0x72, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x67, + 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x07, 0x72, 0x65, 0x66, + 0x65, 0x78, 0x70, 0x72, 0x12, 0x32, 0x0a, 0x0c, 0x72, 0x65, 0x66, 0x61, 0x73, 0x73, 0x67, 0x6e, + 0x65, 0x78, 0x70, 0x72, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x67, 0x5f, + 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x0c, 0x72, 0x65, 0x66, 0x61, + 0x73, 0x73, 0x67, 0x6e, 0x65, 0x78, 0x70, 0x72, 0x22, 0xea, 0x02, 0x0a, 0x08, 0x46, 0x75, 0x6e, + 0x63, 0x45, 0x78, 0x70, 0x72, 0x12, 0x20, 0x0a, 0x03, 0x78, 0x70, 0x72, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4e, 0x6f, + 0x64, 0x65, 0x52, 0x03, 0x78, 0x70, 0x72, 0x12, 0x16, 0x0a, 0x06, 0x66, 0x75, 0x6e, 0x63, 0x69, + 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x06, 0x66, 0x75, 0x6e, 0x63, 0x69, 0x64, 0x12, + 0x26, 0x0a, 0x0e, 0x66, 0x75, 0x6e, 0x63, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x74, 0x79, 0x70, + 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0e, 0x66, 0x75, 0x6e, 0x63, 0x72, 0x65, 0x73, + 0x75, 0x6c, 0x74, 0x74, 0x79, 0x70, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x75, 0x6e, 0x63, 0x72, + 0x65, 0x74, 0x73, 0x65, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x66, 0x75, 0x6e, + 0x63, 0x72, 0x65, 0x74, 0x73, 0x65, 0x74, 0x12, 0x22, 0x0a, 0x0c, 0x66, 0x75, 0x6e, 0x63, 0x76, + 0x61, 0x72, 0x69, 0x61, 0x64, 0x69, 0x63, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x66, + 0x75, 0x6e, 0x63, 0x76, 0x61, 0x72, 0x69, 0x61, 0x64, 0x69, 0x63, 0x12, 0x36, 0x0a, 0x0a, 0x66, + 0x75, 0x6e, 0x63, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0e, 0x32, + 0x16, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x43, 0x6f, 0x65, 0x72, 0x63, + 0x69, 0x6f, 0x6e, 0x46, 0x6f, 0x72, 0x6d, 0x52, 0x0a, 0x66, 0x75, 0x6e, 0x63, 0x66, 0x6f, 0x72, + 0x6d, 0x61, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x75, 0x6e, 0x63, 0x63, 0x6f, 0x6c, 0x6c, 0x69, + 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x66, 0x75, 0x6e, 0x63, 0x63, 0x6f, 0x6c, + 0x6c, 0x69, 0x64, 0x12, 0x20, 0x0a, 0x0b, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x63, 0x6f, 0x6c, 0x6c, + 0x69, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0b, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x63, + 0x6f, 0x6c, 0x6c, 0x69, 0x64, 0x12, 0x22, 0x0a, 0x04, 0x61, 0x72, 0x67, 0x73, 0x18, 0x09, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4e, + 0x6f, 0x64, 0x65, 0x52, 0x04, 0x61, 0x72, 0x67, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x6c, 0x6f, 0x63, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x6c, 0x6f, 0x63, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xa0, 0x01, 0x0a, 0x0c, 0x4e, 0x61, 0x6d, 0x65, 0x64, 0x41, + 0x72, 0x67, 0x45, 0x78, 0x70, 0x72, 0x12, 0x20, 0x0a, 0x03, 0x78, 0x70, 0x72, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4e, + 0x6f, 0x64, 0x65, 0x52, 0x03, 0x78, 0x70, 0x72, 0x12, 0x20, 0x0a, 0x03, 0x61, 0x72, 0x67, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, + 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x03, 0x61, 0x72, 0x67, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, + 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1c, + 0x0a, 0x09, 0x61, 0x72, 0x67, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x09, 0x61, 0x72, 0x67, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x1a, 0x0a, 0x08, + 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, + 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x98, 0x02, 0x0a, 0x06, 0x4f, 0x70, 0x45, + 0x78, 0x70, 0x72, 0x12, 0x20, 0x0a, 0x03, 0x78, 0x70, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x0e, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4e, 0x6f, 0x64, 0x65, + 0x52, 0x03, 0x78, 0x70, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x6f, 0x70, 0x6e, 0x6f, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0d, 0x52, 0x04, 0x6f, 0x70, 0x6e, 0x6f, 0x12, 0x1a, 0x0a, 0x08, 0x6f, 0x70, 0x66, + 0x75, 0x6e, 0x63, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x08, 0x6f, 0x70, 0x66, + 0x75, 0x6e, 0x63, 0x69, 0x64, 0x12, 0x22, 0x0a, 0x0c, 0x6f, 0x70, 0x72, 0x65, 0x73, 0x75, 0x6c, + 0x74, 0x74, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0c, 0x6f, 0x70, 0x72, + 0x65, 0x73, 0x75, 0x6c, 0x74, 0x74, 0x79, 0x70, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x6f, 0x70, 0x72, + 0x65, 0x74, 0x73, 0x65, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x6f, 0x70, 0x72, + 0x65, 0x74, 0x73, 0x65, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x6f, 0x70, 0x63, 0x6f, 0x6c, 0x6c, 0x69, + 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x08, 0x6f, 0x70, 0x63, 0x6f, 0x6c, 0x6c, 0x69, + 0x64, 0x12, 0x20, 0x0a, 0x0b, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x63, 0x6f, 0x6c, 0x6c, 0x69, 0x64, + 0x18, 0x07, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0b, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x63, 0x6f, 0x6c, + 0x6c, 0x69, 0x64, 0x12, 0x22, 0x0a, 0x04, 0x61, 0x72, 0x67, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4e, 0x6f, 0x64, + 0x65, 0x52, 0x04, 0x61, 0x72, 0x67, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x22, 0x9e, 0x02, 0x0a, 0x0c, 0x44, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x63, 0x74, + 0x45, 0x78, 0x70, 0x72, 0x12, 0x20, 0x0a, 0x03, 0x78, 0x70, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4e, 0x6f, 0x64, + 0x65, 0x52, 0x03, 0x78, 0x70, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x6f, 0x70, 0x6e, 0x6f, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0d, 0x52, 0x04, 0x6f, 0x70, 0x6e, 0x6f, 0x12, 0x1a, 0x0a, 0x08, 0x6f, 0x70, + 0x66, 0x75, 0x6e, 0x63, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x08, 0x6f, 0x70, + 0x66, 0x75, 0x6e, 0x63, 0x69, 0x64, 0x12, 0x22, 0x0a, 0x0c, 0x6f, 0x70, 0x72, 0x65, 0x73, 0x75, + 0x6c, 0x74, 0x74, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0c, 0x6f, 0x70, + 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x74, 0x79, 0x70, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x6f, 0x70, + 0x72, 0x65, 0x74, 0x73, 0x65, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x6f, 0x70, + 0x72, 0x65, 0x74, 0x73, 0x65, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x6f, 0x70, 0x63, 0x6f, 0x6c, 0x6c, + 0x69, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x08, 0x6f, 0x70, 0x63, 0x6f, 0x6c, 0x6c, + 0x69, 0x64, 0x12, 0x20, 0x0a, 0x0b, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x63, 0x6f, 0x6c, 0x6c, 0x69, + 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0b, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x63, 0x6f, + 0x6c, 0x6c, 0x69, 0x64, 0x12, 0x22, 0x0a, 0x04, 0x61, 0x72, 0x67, 0x73, 0x18, 0x08, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4e, 0x6f, + 0x64, 0x65, 0x52, 0x04, 0x61, 0x72, 0x67, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x6c, 0x6f, 0x63, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x6c, 0x6f, 0x63, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x9c, 0x02, 0x0a, 0x0a, 0x4e, 0x75, 0x6c, 0x6c, 0x49, 0x66, 0x45, + 0x78, 0x70, 0x72, 0x12, 0x20, 0x0a, 0x03, 0x78, 0x70, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x0e, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4e, 0x6f, 0x64, 0x65, + 0x52, 0x03, 0x78, 0x70, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x6f, 0x70, 0x6e, 0x6f, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0d, 0x52, 0x04, 0x6f, 0x70, 0x6e, 0x6f, 0x12, 0x1a, 0x0a, 0x08, 0x6f, 0x70, 0x66, + 0x75, 0x6e, 0x63, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x08, 0x6f, 0x70, 0x66, + 0x75, 0x6e, 0x63, 0x69, 0x64, 0x12, 0x22, 0x0a, 0x0c, 0x6f, 0x70, 0x72, 0x65, 0x73, 0x75, 0x6c, + 0x74, 0x74, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0c, 0x6f, 0x70, 0x72, + 0x65, 0x73, 0x75, 0x6c, 0x74, 0x74, 0x79, 0x70, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x6f, 0x70, 0x72, + 0x65, 0x74, 0x73, 0x65, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x6f, 0x70, 0x72, + 0x65, 0x74, 0x73, 0x65, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x6f, 0x70, 0x63, 0x6f, 0x6c, 0x6c, 0x69, + 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x08, 0x6f, 0x70, 0x63, 0x6f, 0x6c, 0x6c, 0x69, + 0x64, 0x12, 0x20, 0x0a, 0x0b, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x63, 0x6f, 0x6c, 0x6c, 0x69, 0x64, + 0x18, 0x07, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0b, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x63, 0x6f, 0x6c, + 0x6c, 0x69, 0x64, 0x12, 0x22, 0x0a, 0x04, 0x61, 0x72, 0x67, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4e, 0x6f, 0x64, + 0x65, 0x52, 0x04, 0x61, 0x72, 0x67, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x22, 0xde, 0x01, 0x0a, 0x11, 0x53, 0x63, 0x61, 0x6c, 0x61, 0x72, 0x41, 0x72, + 0x72, 0x61, 0x79, 0x4f, 0x70, 0x45, 0x78, 0x70, 0x72, 0x12, 0x20, 0x0a, 0x03, 0x78, 0x70, 0x72, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, + 0x79, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x03, 0x78, 0x70, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x6f, + 0x70, 0x6e, 0x6f, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x04, 0x6f, 0x70, 0x6e, 0x6f, 0x12, + 0x1a, 0x0a, 0x08, 0x6f, 0x70, 0x66, 0x75, 0x6e, 0x63, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x0d, 0x52, 0x08, 0x6f, 0x70, 0x66, 0x75, 0x6e, 0x63, 0x69, 0x64, 0x12, 0x15, 0x0a, 0x06, 0x75, + 0x73, 0x65, 0x5f, 0x6f, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x75, 0x73, 0x65, + 0x4f, 0x72, 0x12, 0x20, 0x0a, 0x0b, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x63, 0x6f, 0x6c, 0x6c, 0x69, + 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0b, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x63, 0x6f, + 0x6c, 0x6c, 0x69, 0x64, 0x12, 0x22, 0x0a, 0x04, 0x61, 0x72, 0x67, 0x73, 0x18, 0x06, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4e, 0x6f, + 0x64, 0x65, 0x52, 0x04, 0x61, 0x72, 0x67, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x6c, 0x6f, 0x63, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x6c, 0x6f, 0x63, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x9c, 0x01, 0x0a, 0x08, 0x42, 0x6f, 0x6f, 0x6c, 0x45, 0x78, 0x70, + 0x72, 0x12, 0x20, 0x0a, 0x03, 0x78, 0x70, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, + 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x03, + 0x78, 0x70, 0x72, 0x12, 0x2e, 0x0a, 0x06, 0x62, 0x6f, 0x6f, 0x6c, 0x6f, 0x70, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0e, 0x32, 0x16, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x42, + 0x6f, 0x6f, 0x6c, 0x45, 0x78, 0x70, 0x72, 0x54, 0x79, 0x70, 0x65, 0x52, 0x06, 0x62, 0x6f, 0x6f, + 0x6c, 0x6f, 0x70, 0x12, 0x22, 0x0a, 0x04, 0x61, 0x72, 0x67, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4e, 0x6f, 0x64, + 0x65, 0x52, 0x04, 0x61, 0x72, 0x67, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x22, 0xa9, 0x02, 0x0a, 0x07, 0x53, 0x75, 0x62, 0x4c, 0x69, 0x6e, 0x6b, 0x12, + 0x20, 0x0a, 0x03, 0x78, 0x70, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, + 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x03, 0x78, 0x70, + 0x72, 0x12, 0x39, 0x0a, 0x0d, 0x73, 0x75, 0x62, 0x5f, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x74, 0x79, + 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x15, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, + 0x65, 0x72, 0x79, 0x2e, 0x53, 0x75, 0x62, 0x4c, 0x69, 0x6e, 0x6b, 0x54, 0x79, 0x70, 0x65, 0x52, + 0x0b, 0x73, 0x75, 0x62, 0x4c, 0x69, 0x6e, 0x6b, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1e, 0x0a, 0x0b, + 0x73, 0x75, 0x62, 0x5f, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x09, 0x73, 0x75, 0x62, 0x4c, 0x69, 0x6e, 0x6b, 0x49, 0x64, 0x12, 0x2a, 0x0a, 0x08, + 0x74, 0x65, 0x73, 0x74, 0x65, 0x78, 0x70, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, + 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x08, + 0x74, 0x65, 0x73, 0x74, 0x65, 0x78, 0x70, 0x72, 0x12, 0x2b, 0x0a, 0x09, 0x6f, 0x70, 0x65, 0x72, + 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x67, + 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x08, 0x6f, 0x70, 0x65, + 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x2c, 0x0a, 0x09, 0x73, 0x75, 0x62, 0x73, 0x65, 0x6c, 0x65, + 0x63, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, + 0x65, 0x72, 0x79, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x09, 0x73, 0x75, 0x62, 0x73, 0x65, 0x6c, + 0x65, 0x63, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, + 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, + 0xb5, 0x05, 0x0a, 0x07, 0x53, 0x75, 0x62, 0x50, 0x6c, 0x61, 0x6e, 0x12, 0x20, 0x0a, 0x03, 0x78, + 0x70, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, + 0x65, 0x72, 0x79, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x03, 0x78, 0x70, 0x72, 0x12, 0x39, 0x0a, + 0x0d, 0x73, 0x75, 0x62, 0x5f, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0e, 0x32, 0x15, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, + 0x53, 0x75, 0x62, 0x4c, 0x69, 0x6e, 0x6b, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0b, 0x73, 0x75, 0x62, + 0x4c, 0x69, 0x6e, 0x6b, 0x54, 0x79, 0x70, 0x65, 0x12, 0x2a, 0x0a, 0x08, 0x74, 0x65, 0x73, 0x74, + 0x65, 0x78, 0x70, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x67, 0x5f, + 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x08, 0x74, 0x65, 0x73, 0x74, + 0x65, 0x78, 0x70, 0x72, 0x12, 0x2b, 0x0a, 0x09, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x5f, 0x69, 0x64, + 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, + 0x72, 0x79, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x08, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x49, 0x64, + 0x73, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x6c, 0x61, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x07, 0x70, 0x6c, 0x61, 0x6e, 0x5f, 0x69, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x70, + 0x6c, 0x61, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, + 0x70, 0x6c, 0x61, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x24, 0x0a, 0x0e, 0x66, 0x69, 0x72, + 0x73, 0x74, 0x5f, 0x63, 0x6f, 0x6c, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, + 0x0d, 0x52, 0x0c, 0x66, 0x69, 0x72, 0x73, 0x74, 0x43, 0x6f, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x12, + 0x28, 0x0a, 0x10, 0x66, 0x69, 0x72, 0x73, 0x74, 0x5f, 0x63, 0x6f, 0x6c, 0x5f, 0x74, 0x79, 0x70, + 0x6d, 0x6f, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0e, 0x66, 0x69, 0x72, 0x73, 0x74, + 0x43, 0x6f, 0x6c, 0x54, 0x79, 0x70, 0x6d, 0x6f, 0x64, 0x12, 0x2e, 0x0a, 0x13, 0x66, 0x69, 0x72, + 0x73, 0x74, 0x5f, 0x63, 0x6f, 0x6c, 0x5f, 0x63, 0x6f, 0x6c, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x18, 0x09, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x11, 0x66, 0x69, 0x72, 0x73, 0x74, 0x43, 0x6f, 0x6c, + 0x43, 0x6f, 0x6c, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x24, 0x0a, 0x0e, 0x75, 0x73, 0x65, + 0x5f, 0x68, 0x61, 0x73, 0x68, 0x5f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, + 0x08, 0x52, 0x0c, 0x75, 0x73, 0x65, 0x48, 0x61, 0x73, 0x68, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x12, + 0x28, 0x0a, 0x10, 0x75, 0x6e, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x5f, 0x65, 0x71, 0x5f, 0x66, 0x61, + 0x6c, 0x73, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, 0x75, 0x6e, 0x6b, 0x6e, 0x6f, + 0x77, 0x6e, 0x45, 0x71, 0x46, 0x61, 0x6c, 0x73, 0x65, 0x12, 0x24, 0x0a, 0x0d, 0x70, 0x61, 0x72, + 0x61, 0x6c, 0x6c, 0x65, 0x6c, 0x5f, 0x73, 0x61, 0x66, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x08, + 0x52, 0x0d, 0x70, 0x61, 0x72, 0x61, 0x6c, 0x6c, 0x65, 0x6c, 0x5f, 0x73, 0x61, 0x66, 0x65, 0x12, + 0x2b, 0x0a, 0x09, 0x73, 0x65, 0x74, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x18, 0x0d, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4e, 0x6f, + 0x64, 0x65, 0x52, 0x08, 0x73, 0x65, 0x74, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x12, 0x2b, 0x0a, 0x09, + 0x70, 0x61, 0x72, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x18, 0x0e, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x0e, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, + 0x08, 0x70, 0x61, 0x72, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x12, 0x22, 0x0a, 0x04, 0x61, 0x72, 0x67, + 0x73, 0x18, 0x0f, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, + 0x72, 0x79, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x04, 0x61, 0x72, 0x67, 0x73, 0x12, 0x22, 0x0a, + 0x0c, 0x73, 0x74, 0x61, 0x72, 0x74, 0x75, 0x70, 0x5f, 0x63, 0x6f, 0x73, 0x74, 0x18, 0x10, 0x20, + 0x01, 0x28, 0x01, 0x52, 0x0c, 0x73, 0x74, 0x61, 0x72, 0x74, 0x75, 0x70, 0x5f, 0x63, 0x6f, 0x73, + 0x74, 0x12, 0x24, 0x0a, 0x0d, 0x70, 0x65, 0x72, 0x5f, 0x63, 0x61, 0x6c, 0x6c, 0x5f, 0x63, 0x6f, + 0x73, 0x74, 0x18, 0x11, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0d, 0x70, 0x65, 0x72, 0x5f, 0x63, 0x61, + 0x6c, 0x6c, 0x5f, 0x63, 0x6f, 0x73, 0x74, 0x22, 0x62, 0x0a, 0x12, 0x41, 0x6c, 0x74, 0x65, 0x72, + 0x6e, 0x61, 0x74, 0x69, 0x76, 0x65, 0x53, 0x75, 0x62, 0x50, 0x6c, 0x61, 0x6e, 0x12, 0x20, 0x0a, + 0x03, 0x78, 0x70, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x67, 0x5f, + 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x03, 0x78, 0x70, 0x72, 0x12, + 0x2a, 0x0a, 0x08, 0x73, 0x75, 0x62, 0x70, 0x6c, 0x61, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4e, 0x6f, 0x64, + 0x65, 0x52, 0x08, 0x73, 0x75, 0x62, 0x70, 0x6c, 0x61, 0x6e, 0x73, 0x22, 0xd5, 0x01, 0x0a, 0x0b, + 0x46, 0x69, 0x65, 0x6c, 0x64, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x12, 0x20, 0x0a, 0x03, 0x78, + 0x70, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, + 0x65, 0x72, 0x79, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x03, 0x78, 0x70, 0x72, 0x12, 0x20, 0x0a, + 0x03, 0x61, 0x72, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x67, 0x5f, + 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x03, 0x61, 0x72, 0x67, 0x12, + 0x1a, 0x0a, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x6e, 0x75, 0x6d, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x6e, 0x75, 0x6d, 0x12, 0x1e, 0x0a, 0x0a, 0x72, + 0x65, 0x73, 0x75, 0x6c, 0x74, 0x74, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x52, + 0x0a, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x74, 0x79, 0x70, 0x65, 0x12, 0x22, 0x0a, 0x0c, 0x72, + 0x65, 0x73, 0x75, 0x6c, 0x74, 0x74, 0x79, 0x70, 0x6d, 0x6f, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x0c, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x74, 0x79, 0x70, 0x6d, 0x6f, 0x64, 0x12, + 0x22, 0x0a, 0x0c, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x63, 0x6f, 0x6c, 0x6c, 0x69, 0x64, 0x18, + 0x06, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0c, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x63, 0x6f, 0x6c, + 0x6c, 0x69, 0x64, 0x22, 0xc8, 0x01, 0x0a, 0x0a, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x53, 0x74, 0x6f, + 0x72, 0x65, 0x12, 0x20, 0x0a, 0x03, 0x78, 0x70, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x0e, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, + 0x03, 0x78, 0x70, 0x72, 0x12, 0x20, 0x0a, 0x03, 0x61, 0x72, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4e, 0x6f, 0x64, + 0x65, 0x52, 0x03, 0x61, 0x72, 0x67, 0x12, 0x28, 0x0a, 0x07, 0x6e, 0x65, 0x77, 0x76, 0x61, 0x6c, + 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, + 0x72, 0x79, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x07, 0x6e, 0x65, 0x77, 0x76, 0x61, 0x6c, 0x73, + 0x12, 0x2c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x6e, 0x75, 0x6d, 0x73, 0x18, 0x04, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4e, + 0x6f, 0x64, 0x65, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x6e, 0x75, 0x6d, 0x73, 0x12, 0x1e, + 0x0a, 0x0a, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x74, 0x79, 0x70, 0x65, 0x18, 0x05, 0x20, 0x01, + 0x28, 0x0d, 0x52, 0x0a, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x74, 0x79, 0x70, 0x65, 0x22, 0x93, + 0x02, 0x0a, 0x0b, 0x52, 0x65, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x12, 0x20, + 0x0a, 0x03, 0x78, 0x70, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x67, + 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x03, 0x78, 0x70, 0x72, + 0x12, 0x20, 0x0a, 0x03, 0x61, 0x72, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, + 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x03, 0x61, + 0x72, 0x67, 0x12, 0x1e, 0x0a, 0x0a, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x74, 0x79, 0x70, 0x65, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x74, 0x79, + 0x70, 0x65, 0x12, 0x22, 0x0a, 0x0c, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x74, 0x79, 0x70, 0x6d, + 0x6f, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, + 0x74, 0x79, 0x70, 0x6d, 0x6f, 0x64, 0x12, 0x22, 0x0a, 0x0c, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, + 0x63, 0x6f, 0x6c, 0x6c, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0c, 0x72, 0x65, + 0x73, 0x75, 0x6c, 0x74, 0x63, 0x6f, 0x6c, 0x6c, 0x69, 0x64, 0x12, 0x3c, 0x0a, 0x0d, 0x72, 0x65, + 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, + 0x0e, 0x32, 0x16, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x43, 0x6f, 0x65, + 0x72, 0x63, 0x69, 0x6f, 0x6e, 0x46, 0x6f, 0x72, 0x6d, 0x52, 0x0d, 0x72, 0x65, 0x6c, 0x61, 0x62, + 0x65, 0x6c, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x6c, 0x6f, 0x63, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x6c, 0x6f, 0x63, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xed, 0x01, 0x0a, 0x0b, 0x43, 0x6f, 0x65, 0x72, 0x63, 0x65, 0x56, + 0x69, 0x61, 0x49, 0x4f, 0x12, 0x20, 0x0a, 0x03, 0x78, 0x70, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4e, 0x6f, 0x64, + 0x65, 0x52, 0x03, 0x78, 0x70, 0x72, 0x12, 0x20, 0x0a, 0x03, 0x61, 0x72, 0x67, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4e, + 0x6f, 0x64, 0x65, 0x52, 0x03, 0x61, 0x72, 0x67, 0x12, 0x1e, 0x0a, 0x0a, 0x72, 0x65, 0x73, 0x75, + 0x6c, 0x74, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x72, 0x65, + 0x73, 0x75, 0x6c, 0x74, 0x74, 0x79, 0x70, 0x65, 0x12, 0x22, 0x0a, 0x0c, 0x72, 0x65, 0x73, 0x75, + 0x6c, 0x74, 0x63, 0x6f, 0x6c, 0x6c, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0c, + 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x63, 0x6f, 0x6c, 0x6c, 0x69, 0x64, 0x12, 0x3a, 0x0a, 0x0c, + 0x63, 0x6f, 0x65, 0x72, 0x63, 0x65, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x18, 0x05, 0x20, 0x01, + 0x28, 0x0e, 0x32, 0x16, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x43, 0x6f, + 0x65, 0x72, 0x63, 0x69, 0x6f, 0x6e, 0x46, 0x6f, 0x72, 0x6d, 0x52, 0x0c, 0x63, 0x6f, 0x65, 0x72, + 0x63, 0x65, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x6c, 0x6f, 0x63, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x6c, 0x6f, 0x63, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xc1, 0x02, 0x0a, 0x0f, 0x41, 0x72, 0x72, 0x61, 0x79, 0x43, 0x6f, + 0x65, 0x72, 0x63, 0x65, 0x45, 0x78, 0x70, 0x72, 0x12, 0x20, 0x0a, 0x03, 0x78, 0x70, 0x72, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, + 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x03, 0x78, 0x70, 0x72, 0x12, 0x20, 0x0a, 0x03, 0x61, 0x72, + 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, + 0x72, 0x79, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x03, 0x61, 0x72, 0x67, 0x12, 0x2a, 0x0a, 0x08, + 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x78, 0x70, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, + 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x08, + 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x78, 0x70, 0x72, 0x12, 0x1e, 0x0a, 0x0a, 0x72, 0x65, 0x73, 0x75, + 0x6c, 0x74, 0x74, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x72, 0x65, + 0x73, 0x75, 0x6c, 0x74, 0x74, 0x79, 0x70, 0x65, 0x12, 0x22, 0x0a, 0x0c, 0x72, 0x65, 0x73, 0x75, + 0x6c, 0x74, 0x74, 0x79, 0x70, 0x6d, 0x6f, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, + 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x74, 0x79, 0x70, 0x6d, 0x6f, 0x64, 0x12, 0x22, 0x0a, 0x0c, + 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x63, 0x6f, 0x6c, 0x6c, 0x69, 0x64, 0x18, 0x06, 0x20, 0x01, + 0x28, 0x0d, 0x52, 0x0c, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x63, 0x6f, 0x6c, 0x6c, 0x69, 0x64, + 0x12, 0x3a, 0x0a, 0x0c, 0x63, 0x6f, 0x65, 0x72, 0x63, 0x65, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, + 0x18, 0x07, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x16, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, + 0x79, 0x2e, 0x43, 0x6f, 0x65, 0x72, 0x63, 0x69, 0x6f, 0x6e, 0x46, 0x6f, 0x72, 0x6d, 0x52, 0x0c, + 0x63, 0x6f, 0x65, 0x72, 0x63, 0x65, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x12, 0x1a, 0x0a, 0x08, + 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, + 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xd2, 0x01, 0x0a, 0x12, 0x43, 0x6f, 0x6e, + 0x76, 0x65, 0x72, 0x74, 0x52, 0x6f, 0x77, 0x74, 0x79, 0x70, 0x65, 0x45, 0x78, 0x70, 0x72, 0x12, + 0x20, 0x0a, 0x03, 0x78, 0x70, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, + 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x03, 0x78, 0x70, + 0x72, 0x12, 0x20, 0x0a, 0x03, 0x61, 0x72, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, + 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x03, + 0x61, 0x72, 0x67, 0x12, 0x1e, 0x0a, 0x0a, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x74, 0x79, 0x70, + 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x74, + 0x79, 0x70, 0x65, 0x12, 0x3c, 0x0a, 0x0d, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x74, 0x66, 0x6f, + 0x72, 0x6d, 0x61, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x16, 0x2e, 0x70, 0x67, 0x5f, + 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x43, 0x6f, 0x65, 0x72, 0x63, 0x69, 0x6f, 0x6e, 0x46, 0x6f, + 0x72, 0x6d, 0x52, 0x0d, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x61, + 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x88, 0x01, + 0x0a, 0x0b, 0x43, 0x6f, 0x6c, 0x6c, 0x61, 0x74, 0x65, 0x45, 0x78, 0x70, 0x72, 0x12, 0x20, 0x0a, + 0x03, 0x78, 0x70, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x67, 0x5f, + 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x03, 0x78, 0x70, 0x72, 0x12, + 0x20, 0x0a, 0x03, 0x61, 0x72, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, + 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x03, 0x61, 0x72, + 0x67, 0x12, 0x19, 0x0a, 0x08, 0x63, 0x6f, 0x6c, 0x6c, 0x5f, 0x6f, 0x69, 0x64, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x0d, 0x52, 0x07, 0x63, 0x6f, 0x6c, 0x6c, 0x4f, 0x69, 0x64, 0x12, 0x1a, 0x0a, 0x08, + 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, + 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xf8, 0x01, 0x0a, 0x08, 0x43, 0x61, 0x73, + 0x65, 0x45, 0x78, 0x70, 0x72, 0x12, 0x20, 0x0a, 0x03, 0x78, 0x70, 0x72, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4e, 0x6f, + 0x64, 0x65, 0x52, 0x03, 0x78, 0x70, 0x72, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x61, 0x73, 0x65, 0x74, + 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x08, 0x63, 0x61, 0x73, 0x65, 0x74, + 0x79, 0x70, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x63, 0x61, 0x73, 0x65, 0x63, 0x6f, 0x6c, 0x6c, 0x69, + 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x63, 0x61, 0x73, 0x65, 0x63, 0x6f, 0x6c, + 0x6c, 0x69, 0x64, 0x12, 0x20, 0x0a, 0x03, 0x61, 0x72, 0x67, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x0e, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4e, 0x6f, 0x64, 0x65, + 0x52, 0x03, 0x61, 0x72, 0x67, 0x12, 0x22, 0x0a, 0x04, 0x61, 0x72, 0x67, 0x73, 0x18, 0x05, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4e, + 0x6f, 0x64, 0x65, 0x52, 0x04, 0x61, 0x72, 0x67, 0x73, 0x12, 0x2c, 0x0a, 0x09, 0x64, 0x65, 0x66, + 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, + 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x09, 0x64, 0x65, + 0x66, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x22, 0x94, 0x01, 0x0a, 0x08, 0x43, 0x61, 0x73, 0x65, 0x57, 0x68, 0x65, 0x6e, + 0x12, 0x20, 0x0a, 0x03, 0x78, 0x70, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, + 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x03, 0x78, + 0x70, 0x72, 0x12, 0x22, 0x0a, 0x04, 0x65, 0x78, 0x70, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x0e, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4e, 0x6f, 0x64, 0x65, + 0x52, 0x04, 0x65, 0x78, 0x70, 0x72, 0x12, 0x26, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, + 0x79, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x1a, + 0x0a, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x82, 0x01, 0x0a, 0x0c, 0x43, + 0x61, 0x73, 0x65, 0x54, 0x65, 0x73, 0x74, 0x45, 0x78, 0x70, 0x72, 0x12, 0x20, 0x0a, 0x03, 0x78, + 0x70, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, + 0x65, 0x72, 0x79, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x03, 0x78, 0x70, 0x72, 0x12, 0x17, 0x0a, + 0x07, 0x74, 0x79, 0x70, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x06, + 0x74, 0x79, 0x70, 0x65, 0x49, 0x64, 0x12, 0x19, 0x0a, 0x08, 0x74, 0x79, 0x70, 0x65, 0x5f, 0x6d, + 0x6f, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x74, 0x79, 0x70, 0x65, 0x4d, 0x6f, + 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x6f, 0x6c, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x0d, 0x52, 0x09, 0x63, 0x6f, 0x6c, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, + 0x83, 0x02, 0x0a, 0x09, 0x41, 0x72, 0x72, 0x61, 0x79, 0x45, 0x78, 0x70, 0x72, 0x12, 0x20, 0x0a, + 0x03, 0x78, 0x70, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x67, 0x5f, + 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x03, 0x78, 0x70, 0x72, 0x12, + 0x22, 0x0a, 0x0c, 0x61, 0x72, 0x72, 0x61, 0x79, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x69, 0x64, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0c, 0x61, 0x72, 0x72, 0x61, 0x79, 0x5f, 0x74, 0x79, 0x70, + 0x65, 0x69, 0x64, 0x12, 0x22, 0x0a, 0x0c, 0x61, 0x72, 0x72, 0x61, 0x79, 0x5f, 0x63, 0x6f, 0x6c, + 0x6c, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0c, 0x61, 0x72, 0x72, 0x61, 0x79, + 0x5f, 0x63, 0x6f, 0x6c, 0x6c, 0x69, 0x64, 0x12, 0x26, 0x0a, 0x0e, 0x65, 0x6c, 0x65, 0x6d, 0x65, + 0x6e, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x52, + 0x0e, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x69, 0x64, 0x12, + 0x2a, 0x0a, 0x08, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4e, 0x6f, 0x64, + 0x65, 0x52, 0x08, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x6d, + 0x75, 0x6c, 0x74, 0x69, 0x64, 0x69, 0x6d, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, + 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x64, 0x69, 0x6d, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x6c, 0x6f, 0x63, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x6c, 0x6f, 0x63, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xef, 0x01, 0x0a, 0x07, 0x52, 0x6f, 0x77, 0x45, 0x78, 0x70, + 0x72, 0x12, 0x20, 0x0a, 0x03, 0x78, 0x70, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, + 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x03, + 0x78, 0x70, 0x72, 0x12, 0x22, 0x0a, 0x04, 0x61, 0x72, 0x67, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4e, 0x6f, 0x64, + 0x65, 0x52, 0x04, 0x61, 0x72, 0x67, 0x73, 0x12, 0x1e, 0x0a, 0x0a, 0x72, 0x6f, 0x77, 0x5f, 0x74, + 0x79, 0x70, 0x65, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x72, 0x6f, 0x77, + 0x5f, 0x74, 0x79, 0x70, 0x65, 0x69, 0x64, 0x12, 0x36, 0x0a, 0x0a, 0x72, 0x6f, 0x77, 0x5f, 0x66, + 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x16, 0x2e, 0x70, 0x67, + 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x43, 0x6f, 0x65, 0x72, 0x63, 0x69, 0x6f, 0x6e, 0x46, + 0x6f, 0x72, 0x6d, 0x52, 0x0a, 0x72, 0x6f, 0x77, 0x5f, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x12, + 0x2a, 0x0a, 0x08, 0x63, 0x6f, 0x6c, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4e, 0x6f, 0x64, + 0x65, 0x52, 0x08, 0x63, 0x6f, 0x6c, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x6c, + 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x6c, + 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xba, 0x02, 0x0a, 0x0e, 0x52, 0x6f, 0x77, 0x43, + 0x6f, 0x6d, 0x70, 0x61, 0x72, 0x65, 0x45, 0x78, 0x70, 0x72, 0x12, 0x20, 0x0a, 0x03, 0x78, 0x70, + 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, + 0x72, 0x79, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x03, 0x78, 0x70, 0x72, 0x12, 0x30, 0x0a, 0x06, + 0x72, 0x63, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x18, 0x2e, 0x70, + 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x52, 0x6f, 0x77, 0x43, 0x6f, 0x6d, 0x70, 0x61, + 0x72, 0x65, 0x54, 0x79, 0x70, 0x65, 0x52, 0x06, 0x72, 0x63, 0x74, 0x79, 0x70, 0x65, 0x12, 0x24, + 0x0a, 0x05, 0x6f, 0x70, 0x6e, 0x6f, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, + 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x05, 0x6f, + 0x70, 0x6e, 0x6f, 0x73, 0x12, 0x2e, 0x0a, 0x0a, 0x6f, 0x70, 0x66, 0x61, 0x6d, 0x69, 0x6c, 0x69, + 0x65, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, + 0x65, 0x72, 0x79, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x0a, 0x6f, 0x70, 0x66, 0x61, 0x6d, 0x69, + 0x6c, 0x69, 0x65, 0x73, 0x12, 0x32, 0x0a, 0x0c, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x63, 0x6f, 0x6c, + 0x6c, 0x69, 0x64, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x67, 0x5f, + 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x0c, 0x69, 0x6e, 0x70, 0x75, + 0x74, 0x63, 0x6f, 0x6c, 0x6c, 0x69, 0x64, 0x73, 0x12, 0x24, 0x0a, 0x05, 0x6c, 0x61, 0x72, 0x67, + 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, + 0x72, 0x79, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x05, 0x6c, 0x61, 0x72, 0x67, 0x73, 0x12, 0x24, + 0x0a, 0x05, 0x72, 0x61, 0x72, 0x67, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, + 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x05, 0x72, + 0x61, 0x72, 0x67, 0x73, 0x22, 0xbc, 0x01, 0x0a, 0x0c, 0x43, 0x6f, 0x61, 0x6c, 0x65, 0x73, 0x63, + 0x65, 0x45, 0x78, 0x70, 0x72, 0x12, 0x20, 0x0a, 0x03, 0x78, 0x70, 0x72, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4e, 0x6f, + 0x64, 0x65, 0x52, 0x03, 0x78, 0x70, 0x72, 0x12, 0x22, 0x0a, 0x0c, 0x63, 0x6f, 0x61, 0x6c, 0x65, + 0x73, 0x63, 0x65, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0c, 0x63, + 0x6f, 0x61, 0x6c, 0x65, 0x73, 0x63, 0x65, 0x74, 0x79, 0x70, 0x65, 0x12, 0x26, 0x0a, 0x0e, 0x63, + 0x6f, 0x61, 0x6c, 0x65, 0x73, 0x63, 0x65, 0x63, 0x6f, 0x6c, 0x6c, 0x69, 0x64, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x0d, 0x52, 0x0e, 0x63, 0x6f, 0x61, 0x6c, 0x65, 0x73, 0x63, 0x65, 0x63, 0x6f, 0x6c, + 0x6c, 0x69, 0x64, 0x12, 0x22, 0x0a, 0x04, 0x61, 0x72, 0x67, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4e, 0x6f, 0x64, + 0x65, 0x52, 0x04, 0x61, 0x72, 0x67, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x22, 0xf8, 0x01, 0x0a, 0x0a, 0x4d, 0x69, 0x6e, 0x4d, 0x61, 0x78, 0x45, 0x78, + 0x70, 0x72, 0x12, 0x20, 0x0a, 0x03, 0x78, 0x70, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x0e, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, + 0x03, 0x78, 0x70, 0x72, 0x12, 0x1e, 0x0a, 0x0a, 0x6d, 0x69, 0x6e, 0x6d, 0x61, 0x78, 0x74, 0x79, + 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x6d, 0x69, 0x6e, 0x6d, 0x61, 0x78, + 0x74, 0x79, 0x70, 0x65, 0x12, 0x22, 0x0a, 0x0c, 0x6d, 0x69, 0x6e, 0x6d, 0x61, 0x78, 0x63, 0x6f, + 0x6c, 0x6c, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0c, 0x6d, 0x69, 0x6e, 0x6d, + 0x61, 0x78, 0x63, 0x6f, 0x6c, 0x6c, 0x69, 0x64, 0x12, 0x20, 0x0a, 0x0b, 0x69, 0x6e, 0x70, 0x75, + 0x74, 0x63, 0x6f, 0x6c, 0x6c, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0b, 0x69, + 0x6e, 0x70, 0x75, 0x74, 0x63, 0x6f, 0x6c, 0x6c, 0x69, 0x64, 0x12, 0x22, 0x0a, 0x02, 0x6f, 0x70, + 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x12, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, + 0x79, 0x2e, 0x4d, 0x69, 0x6e, 0x4d, 0x61, 0x78, 0x4f, 0x70, 0x52, 0x02, 0x6f, 0x70, 0x12, 0x22, + 0x0a, 0x04, 0x61, 0x72, 0x67, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, + 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x04, 0x61, 0x72, + 0x67, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x07, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xaa, + 0x01, 0x0a, 0x10, 0x53, 0x51, 0x4c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x46, 0x75, 0x6e, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x12, 0x20, 0x0a, 0x03, 0x78, 0x70, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x0e, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4e, 0x6f, 0x64, 0x65, + 0x52, 0x03, 0x78, 0x70, 0x72, 0x12, 0x2c, 0x0a, 0x02, 0x6f, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0e, 0x32, 0x1c, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x53, 0x51, 0x4c, + 0x56, 0x61, 0x6c, 0x75, 0x65, 0x46, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4f, 0x70, 0x52, + 0x02, 0x6f, 0x70, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x0d, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x74, 0x79, 0x70, 0x6d, 0x6f, + 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x74, 0x79, 0x70, 0x6d, 0x6f, 0x64, 0x12, + 0x1a, 0x0a, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xe5, 0x02, 0x0a, 0x07, + 0x58, 0x6d, 0x6c, 0x45, 0x78, 0x70, 0x72, 0x12, 0x20, 0x0a, 0x03, 0x78, 0x70, 0x72, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, + 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x03, 0x78, 0x70, 0x72, 0x12, 0x23, 0x0a, 0x02, 0x6f, 0x70, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x13, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, + 0x2e, 0x58, 0x6d, 0x6c, 0x45, 0x78, 0x70, 0x72, 0x4f, 0x70, 0x52, 0x02, 0x6f, 0x70, 0x12, 0x12, + 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, + 0x6d, 0x65, 0x12, 0x2e, 0x0a, 0x0a, 0x6e, 0x61, 0x6d, 0x65, 0x64, 0x5f, 0x61, 0x72, 0x67, 0x73, + 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, + 0x79, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x0a, 0x6e, 0x61, 0x6d, 0x65, 0x64, 0x5f, 0x61, 0x72, + 0x67, 0x73, 0x12, 0x2c, 0x0a, 0x09, 0x61, 0x72, 0x67, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x18, + 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, + 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x09, 0x61, 0x72, 0x67, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, + 0x12, 0x22, 0x0a, 0x04, 0x61, 0x72, 0x67, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, + 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x04, + 0x61, 0x72, 0x67, 0x73, 0x12, 0x35, 0x0a, 0x09, 0x78, 0x6d, 0x6c, 0x6f, 0x70, 0x74, 0x69, 0x6f, + 0x6e, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x17, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, + 0x72, 0x79, 0x2e, 0x58, 0x6d, 0x6c, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, + 0x52, 0x09, 0x78, 0x6d, 0x6c, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x74, + 0x79, 0x70, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, + 0x16, 0x0a, 0x06, 0x74, 0x79, 0x70, 0x6d, 0x6f, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x06, 0x74, 0x79, 0x70, 0x6d, 0x6f, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x22, 0xc2, 0x01, 0x0a, 0x08, 0x4e, 0x75, 0x6c, 0x6c, 0x54, 0x65, 0x73, 0x74, + 0x12, 0x20, 0x0a, 0x03, 0x78, 0x70, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, + 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x03, 0x78, + 0x70, 0x72, 0x12, 0x20, 0x0a, 0x03, 0x61, 0x72, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x0e, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, + 0x03, 0x61, 0x72, 0x67, 0x12, 0x3a, 0x0a, 0x0c, 0x6e, 0x75, 0x6c, 0x6c, 0x74, 0x65, 0x73, 0x74, + 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x16, 0x2e, 0x70, 0x67, 0x5f, + 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4e, 0x75, 0x6c, 0x6c, 0x54, 0x65, 0x73, 0x74, 0x54, 0x79, + 0x70, 0x65, 0x52, 0x0c, 0x6e, 0x75, 0x6c, 0x6c, 0x74, 0x65, 0x73, 0x74, 0x74, 0x79, 0x70, 0x65, + 0x12, 0x1a, 0x0a, 0x08, 0x61, 0x72, 0x67, 0x69, 0x73, 0x72, 0x6f, 0x77, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x08, 0x52, 0x08, 0x61, 0x72, 0x67, 0x69, 0x73, 0x72, 0x6f, 0x77, 0x12, 0x1a, 0x0a, 0x08, + 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, + 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xa9, 0x01, 0x0a, 0x0b, 0x42, 0x6f, 0x6f, + 0x6c, 0x65, 0x61, 0x6e, 0x54, 0x65, 0x73, 0x74, 0x12, 0x20, 0x0a, 0x03, 0x78, 0x70, 0x72, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, + 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x03, 0x78, 0x70, 0x72, 0x12, 0x20, 0x0a, 0x03, 0x61, 0x72, + 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, + 0x72, 0x79, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x03, 0x61, 0x72, 0x67, 0x12, 0x3a, 0x0a, 0x0c, + 0x62, 0x6f, 0x6f, 0x6c, 0x74, 0x65, 0x73, 0x74, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x0e, 0x32, 0x16, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x42, 0x6f, + 0x6f, 0x6c, 0x54, 0x65, 0x73, 0x74, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0c, 0x62, 0x6f, 0x6f, 0x6c, + 0x74, 0x65, 0x73, 0x74, 0x74, 0x79, 0x70, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x6c, 0x6f, 0x63, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x6c, 0x6f, 0x63, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x98, 0x02, 0x0a, 0x0e, 0x43, 0x6f, 0x65, 0x72, 0x63, 0x65, 0x54, + 0x6f, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x12, 0x20, 0x0a, 0x03, 0x78, 0x70, 0x72, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, + 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x03, 0x78, 0x70, 0x72, 0x12, 0x20, 0x0a, 0x03, 0x61, 0x72, 0x67, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, + 0x79, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x03, 0x61, 0x72, 0x67, 0x12, 0x1e, 0x0a, 0x0a, 0x72, + 0x65, 0x73, 0x75, 0x6c, 0x74, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, + 0x0a, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x74, 0x79, 0x70, 0x65, 0x12, 0x22, 0x0a, 0x0c, 0x72, + 0x65, 0x73, 0x75, 0x6c, 0x74, 0x74, 0x79, 0x70, 0x6d, 0x6f, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x0c, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x74, 0x79, 0x70, 0x6d, 0x6f, 0x64, 0x12, + 0x22, 0x0a, 0x0c, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x63, 0x6f, 0x6c, 0x6c, 0x69, 0x64, 0x18, + 0x05, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0c, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x63, 0x6f, 0x6c, + 0x6c, 0x69, 0x64, 0x12, 0x3e, 0x0a, 0x0e, 0x63, 0x6f, 0x65, 0x72, 0x63, 0x69, 0x6f, 0x6e, 0x66, + 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x16, 0x2e, 0x70, 0x67, + 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x43, 0x6f, 0x65, 0x72, 0x63, 0x69, 0x6f, 0x6e, 0x46, + 0x6f, 0x72, 0x6d, 0x52, 0x0e, 0x63, 0x6f, 0x65, 0x72, 0x63, 0x69, 0x6f, 0x6e, 0x66, 0x6f, 0x72, + 0x6d, 0x61, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, + 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, + 0xa5, 0x01, 0x0a, 0x13, 0x43, 0x6f, 0x65, 0x72, 0x63, 0x65, 0x54, 0x6f, 0x44, 0x6f, 0x6d, 0x61, + 0x69, 0x6e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x20, 0x0a, 0x03, 0x78, 0x70, 0x72, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, + 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x03, 0x78, 0x70, 0x72, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x79, 0x70, + 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x06, 0x74, 0x79, 0x70, 0x65, + 0x49, 0x64, 0x12, 0x19, 0x0a, 0x08, 0x74, 0x79, 0x70, 0x65, 0x5f, 0x6d, 0x6f, 0x64, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x74, 0x79, 0x70, 0x65, 0x4d, 0x6f, 0x64, 0x12, 0x1c, 0x0a, + 0x09, 0x63, 0x6f, 0x6c, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, + 0x52, 0x09, 0x63, 0x6f, 0x6c, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x6c, + 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x6c, + 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x9e, 0x01, 0x0a, 0x0c, 0x53, 0x65, 0x74, 0x54, + 0x6f, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x12, 0x20, 0x0a, 0x03, 0x78, 0x70, 0x72, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, + 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x03, 0x78, 0x70, 0x72, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x79, + 0x70, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x06, 0x74, 0x79, 0x70, + 0x65, 0x49, 0x64, 0x12, 0x19, 0x0a, 0x08, 0x74, 0x79, 0x70, 0x65, 0x5f, 0x6d, 0x6f, 0x64, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x74, 0x79, 0x70, 0x65, 0x4d, 0x6f, 0x64, 0x12, 0x1c, + 0x0a, 0x09, 0x63, 0x6f, 0x6c, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x0d, 0x52, 0x09, 0x63, 0x6f, 0x6c, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1a, 0x0a, 0x08, + 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, + 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x8f, 0x01, 0x0a, 0x0d, 0x43, 0x75, 0x72, + 0x72, 0x65, 0x6e, 0x74, 0x4f, 0x66, 0x45, 0x78, 0x70, 0x72, 0x12, 0x20, 0x0a, 0x03, 0x78, 0x70, + 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, + 0x72, 0x79, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x03, 0x78, 0x70, 0x72, 0x12, 0x16, 0x0a, 0x06, + 0x63, 0x76, 0x61, 0x72, 0x6e, 0x6f, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x06, 0x63, 0x76, + 0x61, 0x72, 0x6e, 0x6f, 0x12, 0x20, 0x0a, 0x0b, 0x63, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x5f, 0x6e, + 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x63, 0x75, 0x72, 0x73, 0x6f, + 0x72, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x22, 0x0a, 0x0c, 0x63, 0x75, 0x72, 0x73, 0x6f, 0x72, + 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x63, 0x75, + 0x72, 0x73, 0x6f, 0x72, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x22, 0x60, 0x0a, 0x0d, 0x4e, 0x65, + 0x78, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x45, 0x78, 0x70, 0x72, 0x12, 0x20, 0x0a, 0x03, 0x78, + 0x70, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, + 0x65, 0x72, 0x79, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x03, 0x78, 0x70, 0x72, 0x12, 0x14, 0x0a, + 0x05, 0x73, 0x65, 0x71, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x73, 0x65, + 0x71, 0x69, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x79, 0x70, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x0d, 0x52, 0x06, 0x74, 0x79, 0x70, 0x65, 0x49, 0x64, 0x22, 0x9b, 0x01, 0x0a, + 0x0d, 0x49, 0x6e, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x45, 0x6c, 0x65, 0x6d, 0x12, 0x20, + 0x0a, 0x03, 0x78, 0x70, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x67, + 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x03, 0x78, 0x70, 0x72, + 0x12, 0x22, 0x0a, 0x04, 0x65, 0x78, 0x70, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, + 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x04, + 0x65, 0x78, 0x70, 0x72, 0x12, 0x20, 0x0a, 0x0b, 0x69, 0x6e, 0x66, 0x65, 0x72, 0x63, 0x6f, 0x6c, + 0x6c, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0b, 0x69, 0x6e, 0x66, 0x65, 0x72, + 0x63, 0x6f, 0x6c, 0x6c, 0x69, 0x64, 0x12, 0x22, 0x0a, 0x0c, 0x69, 0x6e, 0x66, 0x65, 0x72, 0x6f, + 0x70, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0c, 0x69, 0x6e, + 0x66, 0x65, 0x72, 0x6f, 0x70, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x22, 0x87, 0x02, 0x0a, 0x0b, 0x54, + 0x61, 0x72, 0x67, 0x65, 0x74, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x20, 0x0a, 0x03, 0x78, 0x70, + 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, + 0x72, 0x79, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x03, 0x78, 0x70, 0x72, 0x12, 0x22, 0x0a, 0x04, + 0x65, 0x78, 0x70, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x67, 0x5f, + 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x04, 0x65, 0x78, 0x70, 0x72, + 0x12, 0x14, 0x0a, 0x05, 0x72, 0x65, 0x73, 0x6e, 0x6f, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x05, 0x72, 0x65, 0x73, 0x6e, 0x6f, 0x12, 0x18, 0x0a, 0x07, 0x72, 0x65, 0x73, 0x6e, 0x61, 0x6d, + 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x72, 0x65, 0x73, 0x6e, 0x61, 0x6d, 0x65, + 0x12, 0x28, 0x0a, 0x0f, 0x72, 0x65, 0x73, 0x73, 0x6f, 0x72, 0x74, 0x67, 0x72, 0x6f, 0x75, 0x70, + 0x72, 0x65, 0x66, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0f, 0x72, 0x65, 0x73, 0x73, 0x6f, + 0x72, 0x74, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x72, 0x65, 0x66, 0x12, 0x1e, 0x0a, 0x0a, 0x72, 0x65, + 0x73, 0x6f, 0x72, 0x69, 0x67, 0x74, 0x62, 0x6c, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, + 0x72, 0x65, 0x73, 0x6f, 0x72, 0x69, 0x67, 0x74, 0x62, 0x6c, 0x12, 0x1e, 0x0a, 0x0a, 0x72, 0x65, + 0x73, 0x6f, 0x72, 0x69, 0x67, 0x63, 0x6f, 0x6c, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, + 0x72, 0x65, 0x73, 0x6f, 0x72, 0x69, 0x67, 0x63, 0x6f, 0x6c, 0x12, 0x18, 0x0a, 0x07, 0x72, 0x65, + 0x73, 0x6a, 0x75, 0x6e, 0x6b, 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x72, 0x65, 0x73, + 0x6a, 0x75, 0x6e, 0x6b, 0x22, 0x27, 0x0a, 0x0b, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x54, 0x62, 0x6c, + 0x52, 0x65, 0x66, 0x12, 0x18, 0x0a, 0x07, 0x72, 0x74, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x72, 0x74, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x22, 0xbb, 0x02, + 0x0a, 0x08, 0x4a, 0x6f, 0x69, 0x6e, 0x45, 0x78, 0x70, 0x72, 0x12, 0x2e, 0x0a, 0x08, 0x6a, 0x6f, + 0x69, 0x6e, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x12, 0x2e, 0x70, + 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4a, 0x6f, 0x69, 0x6e, 0x54, 0x79, 0x70, 0x65, + 0x52, 0x08, 0x6a, 0x6f, 0x69, 0x6e, 0x74, 0x79, 0x70, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x69, 0x73, + 0x5f, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x61, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, + 0x69, 0x73, 0x4e, 0x61, 0x74, 0x75, 0x72, 0x61, 0x6c, 0x12, 0x22, 0x0a, 0x04, 0x6c, 0x61, 0x72, + 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, + 0x72, 0x79, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x04, 0x6c, 0x61, 0x72, 0x67, 0x12, 0x22, 0x0a, + 0x04, 0x72, 0x61, 0x72, 0x67, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x67, + 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x04, 0x72, 0x61, 0x72, + 0x67, 0x12, 0x31, 0x0a, 0x0c, 0x75, 0x73, 0x69, 0x6e, 0x67, 0x5f, 0x63, 0x6c, 0x61, 0x75, 0x73, + 0x65, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, + 0x72, 0x79, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x0b, 0x75, 0x73, 0x69, 0x6e, 0x67, 0x43, 0x6c, + 0x61, 0x75, 0x73, 0x65, 0x12, 0x24, 0x0a, 0x05, 0x71, 0x75, 0x61, 0x6c, 0x73, 0x18, 0x06, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4e, + 0x6f, 0x64, 0x65, 0x52, 0x05, 0x71, 0x75, 0x61, 0x6c, 0x73, 0x12, 0x25, 0x0a, 0x05, 0x61, 0x6c, + 0x69, 0x61, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x70, 0x67, 0x5f, 0x71, + 0x75, 0x65, 0x72, 0x79, 0x2e, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x52, 0x05, 0x61, 0x6c, 0x69, 0x61, + 0x73, 0x12, 0x18, 0x0a, 0x07, 0x72, 0x74, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x08, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x07, 0x72, 0x74, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x22, 0x5c, 0x0a, 0x08, 0x46, + 0x72, 0x6f, 0x6d, 0x45, 0x78, 0x70, 0x72, 0x12, 0x2a, 0x0a, 0x08, 0x66, 0x72, 0x6f, 0x6d, 0x6c, + 0x69, 0x73, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x67, 0x5f, 0x71, + 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x08, 0x66, 0x72, 0x6f, 0x6d, 0x6c, + 0x69, 0x73, 0x74, 0x12, 0x24, 0x0a, 0x05, 0x71, 0x75, 0x61, 0x6c, 0x73, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4e, 0x6f, + 0x64, 0x65, 0x52, 0x05, 0x71, 0x75, 0x61, 0x6c, 0x73, 0x22, 0x9e, 0x03, 0x0a, 0x0e, 0x4f, 0x6e, + 0x43, 0x6f, 0x6e, 0x66, 0x6c, 0x69, 0x63, 0x74, 0x45, 0x78, 0x70, 0x72, 0x12, 0x32, 0x0a, 0x06, + 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1a, 0x2e, 0x70, + 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x6c, 0x69, + 0x63, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x12, 0x33, 0x0a, 0x0d, 0x61, 0x72, 0x62, 0x69, 0x74, 0x65, 0x72, 0x5f, 0x65, 0x6c, 0x65, 0x6d, + 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, + 0x72, 0x79, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x0c, 0x61, 0x72, 0x62, 0x69, 0x74, 0x65, 0x72, + 0x45, 0x6c, 0x65, 0x6d, 0x73, 0x12, 0x33, 0x0a, 0x0d, 0x61, 0x72, 0x62, 0x69, 0x74, 0x65, 0x72, + 0x5f, 0x77, 0x68, 0x65, 0x72, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, + 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x0c, 0x61, 0x72, + 0x62, 0x69, 0x74, 0x65, 0x72, 0x57, 0x68, 0x65, 0x72, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x63, 0x6f, + 0x6e, 0x73, 0x74, 0x72, 0x61, 0x69, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, + 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x72, 0x61, 0x69, 0x6e, 0x74, 0x12, 0x36, 0x0a, 0x0f, 0x6f, 0x6e, + 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x6c, 0x69, 0x63, 0x74, 0x5f, 0x73, 0x65, 0x74, 0x18, 0x05, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4e, + 0x6f, 0x64, 0x65, 0x52, 0x0d, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x6c, 0x69, 0x63, 0x74, 0x53, + 0x65, 0x74, 0x12, 0x3a, 0x0a, 0x11, 0x6f, 0x6e, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x6c, 0x69, 0x63, + 0x74, 0x5f, 0x77, 0x68, 0x65, 0x72, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, + 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x0f, 0x6f, + 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x6c, 0x69, 0x63, 0x74, 0x57, 0x68, 0x65, 0x72, 0x65, 0x12, 0x24, + 0x0a, 0x0e, 0x65, 0x78, 0x63, 0x6c, 0x5f, 0x72, 0x65, 0x6c, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, + 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x65, 0x78, 0x63, 0x6c, 0x52, 0x65, 0x6c, 0x49, + 0x6e, 0x64, 0x65, 0x78, 0x12, 0x34, 0x0a, 0x0e, 0x65, 0x78, 0x63, 0x6c, 0x5f, 0x72, 0x65, 0x6c, + 0x5f, 0x74, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, + 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x0c, 0x65, 0x78, + 0x63, 0x6c, 0x52, 0x65, 0x6c, 0x54, 0x6c, 0x69, 0x73, 0x74, 0x22, 0xdb, 0x02, 0x0a, 0x0a, 0x49, + 0x6e, 0x74, 0x6f, 0x43, 0x6c, 0x61, 0x75, 0x73, 0x65, 0x12, 0x24, 0x0a, 0x03, 0x72, 0x65, 0x6c, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, + 0x79, 0x2e, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x56, 0x61, 0x72, 0x52, 0x03, 0x72, 0x65, 0x6c, 0x12, + 0x2b, 0x0a, 0x09, 0x63, 0x6f, 0x6c, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4e, 0x6f, + 0x64, 0x65, 0x52, 0x08, 0x63, 0x6f, 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x23, 0x0a, 0x0d, + 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x5f, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x0c, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x4d, 0x65, 0x74, 0x68, 0x6f, + 0x64, 0x12, 0x28, 0x0a, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x04, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4e, 0x6f, + 0x64, 0x65, 0x52, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x35, 0x0a, 0x09, 0x6f, + 0x6e, 0x5f, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x18, + 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4f, 0x6e, 0x43, 0x6f, 0x6d, 0x6d, + 0x69, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x08, 0x6f, 0x6e, 0x43, 0x6f, 0x6d, 0x6d, + 0x69, 0x74, 0x12, 0x28, 0x0a, 0x10, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x73, 0x70, 0x61, 0x63, + 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x74, 0x61, + 0x62, 0x6c, 0x65, 0x53, 0x70, 0x61, 0x63, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x2d, 0x0a, 0x0a, + 0x76, 0x69, 0x65, 0x77, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x0e, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4e, 0x6f, 0x64, 0x65, + 0x52, 0x09, 0x76, 0x69, 0x65, 0x77, 0x51, 0x75, 0x65, 0x72, 0x79, 0x12, 0x1b, 0x0a, 0x09, 0x73, + 0x6b, 0x69, 0x70, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, + 0x73, 0x6b, 0x69, 0x70, 0x44, 0x61, 0x74, 0x61, 0x22, 0x6f, 0x0a, 0x07, 0x52, 0x61, 0x77, 0x53, + 0x74, 0x6d, 0x74, 0x12, 0x22, 0x0a, 0x04, 0x73, 0x74, 0x6d, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4e, 0x6f, 0x64, + 0x65, 0x52, 0x04, 0x73, 0x74, 0x6d, 0x74, 0x12, 0x24, 0x0a, 0x0d, 0x73, 0x74, 0x6d, 0x74, 0x5f, + 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, + 0x73, 0x74, 0x6d, 0x74, 0x5f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1a, 0x0a, + 0x08, 0x73, 0x74, 0x6d, 0x74, 0x5f, 0x6c, 0x65, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x08, 0x73, 0x74, 0x6d, 0x74, 0x5f, 0x6c, 0x65, 0x6e, 0x22, 0x9c, 0x0d, 0x0a, 0x05, 0x51, 0x75, + 0x65, 0x72, 0x79, 0x12, 0x34, 0x0a, 0x0c, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x5f, 0x74, + 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x11, 0x2e, 0x70, 0x67, 0x5f, 0x71, + 0x75, 0x65, 0x72, 0x79, 0x2e, 0x43, 0x6d, 0x64, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0b, 0x63, 0x6f, + 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x54, 0x79, 0x70, 0x65, 0x12, 0x38, 0x0a, 0x0c, 0x71, 0x75, 0x65, + 0x72, 0x79, 0x5f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, + 0x15, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, + 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x0b, 0x71, 0x75, 0x65, 0x72, 0x79, 0x53, 0x6f, 0x75, + 0x72, 0x63, 0x65, 0x12, 0x1e, 0x0a, 0x0b, 0x63, 0x61, 0x6e, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x74, + 0x61, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x63, 0x61, 0x6e, 0x53, 0x65, 0x74, + 0x54, 0x61, 0x67, 0x12, 0x31, 0x0a, 0x0c, 0x75, 0x74, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x5f, 0x73, + 0x74, 0x6d, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x67, 0x5f, 0x71, + 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x0b, 0x75, 0x74, 0x69, 0x6c, 0x69, + 0x74, 0x79, 0x53, 0x74, 0x6d, 0x74, 0x12, 0x27, 0x0a, 0x0f, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, + 0x5f, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x0e, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, + 0x19, 0x0a, 0x08, 0x68, 0x61, 0x73, 0x5f, 0x61, 0x67, 0x67, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, + 0x08, 0x52, 0x07, 0x68, 0x61, 0x73, 0x41, 0x67, 0x67, 0x73, 0x12, 0x28, 0x0a, 0x10, 0x68, 0x61, + 0x73, 0x5f, 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x5f, 0x66, 0x75, 0x6e, 0x63, 0x73, 0x18, 0x07, + 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, 0x68, 0x61, 0x73, 0x57, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x46, + 0x75, 0x6e, 0x63, 0x73, 0x12, 0x26, 0x0a, 0x0f, 0x68, 0x61, 0x73, 0x5f, 0x74, 0x61, 0x72, 0x67, + 0x65, 0x74, 0x5f, 0x73, 0x72, 0x66, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x68, + 0x61, 0x73, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x53, 0x52, 0x46, 0x73, 0x12, 0x22, 0x0a, 0x0d, + 0x68, 0x61, 0x73, 0x5f, 0x73, 0x75, 0x62, 0x5f, 0x6c, 0x69, 0x6e, 0x6b, 0x73, 0x18, 0x09, 0x20, + 0x01, 0x28, 0x08, 0x52, 0x0b, 0x68, 0x61, 0x73, 0x53, 0x75, 0x62, 0x4c, 0x69, 0x6e, 0x6b, 0x73, + 0x12, 0x26, 0x0a, 0x0f, 0x68, 0x61, 0x73, 0x5f, 0x64, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x63, 0x74, + 0x5f, 0x6f, 0x6e, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x68, 0x61, 0x73, 0x44, 0x69, + 0x73, 0x74, 0x69, 0x6e, 0x63, 0x74, 0x4f, 0x6e, 0x12, 0x23, 0x0a, 0x0d, 0x68, 0x61, 0x73, 0x5f, + 0x72, 0x65, 0x63, 0x75, 0x72, 0x73, 0x69, 0x76, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x08, 0x52, + 0x0c, 0x68, 0x61, 0x73, 0x52, 0x65, 0x63, 0x75, 0x72, 0x73, 0x69, 0x76, 0x65, 0x12, 0x2a, 0x0a, + 0x11, 0x68, 0x61, 0x73, 0x5f, 0x6d, 0x6f, 0x64, 0x69, 0x66, 0x79, 0x69, 0x6e, 0x67, 0x5f, 0x63, + 0x74, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0f, 0x68, 0x61, 0x73, 0x4d, 0x6f, 0x64, + 0x69, 0x66, 0x79, 0x69, 0x6e, 0x67, 0x43, 0x54, 0x45, 0x12, 0x24, 0x0a, 0x0e, 0x68, 0x61, 0x73, + 0x5f, 0x66, 0x6f, 0x72, 0x5f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x18, 0x0d, 0x20, 0x01, 0x28, + 0x08, 0x52, 0x0c, 0x68, 0x61, 0x73, 0x46, 0x6f, 0x72, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x12, + 0x28, 0x0a, 0x10, 0x68, 0x61, 0x73, 0x5f, 0x72, 0x6f, 0x77, 0x5f, 0x73, 0x65, 0x63, 0x75, 0x72, + 0x69, 0x74, 0x79, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, 0x68, 0x61, 0x73, 0x52, 0x6f, + 0x77, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x12, 0x29, 0x0a, 0x08, 0x63, 0x74, 0x65, + 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x0f, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x67, + 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x07, 0x63, 0x74, 0x65, + 0x4c, 0x69, 0x73, 0x74, 0x12, 0x26, 0x0a, 0x06, 0x72, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x10, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, + 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x06, 0x72, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x2e, 0x0a, 0x08, + 0x6a, 0x6f, 0x69, 0x6e, 0x74, 0x72, 0x65, 0x65, 0x18, 0x11, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, + 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x46, 0x72, 0x6f, 0x6d, 0x45, 0x78, + 0x70, 0x72, 0x52, 0x08, 0x6a, 0x6f, 0x69, 0x6e, 0x74, 0x72, 0x65, 0x65, 0x12, 0x2f, 0x0a, 0x0b, + 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x12, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4e, 0x6f, 0x64, + 0x65, 0x52, 0x0a, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x34, 0x0a, + 0x08, 0x6f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x18, 0x13, 0x20, 0x01, 0x28, 0x0e, 0x32, + 0x18, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4f, 0x76, 0x65, 0x72, 0x72, + 0x69, 0x64, 0x69, 0x6e, 0x67, 0x4b, 0x69, 0x6e, 0x64, 0x52, 0x08, 0x6f, 0x76, 0x65, 0x72, 0x72, + 0x69, 0x64, 0x65, 0x12, 0x39, 0x0a, 0x0b, 0x6f, 0x6e, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x6c, 0x69, + 0x63, 0x74, 0x18, 0x14, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, + 0x65, 0x72, 0x79, 0x2e, 0x4f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x6c, 0x69, 0x63, 0x74, 0x45, 0x78, + 0x70, 0x72, 0x52, 0x0a, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x6c, 0x69, 0x63, 0x74, 0x12, 0x35, + 0x0a, 0x0e, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x69, 0x6e, 0x67, 0x5f, 0x6c, 0x69, 0x73, 0x74, + 0x18, 0x15, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, + 0x79, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x0d, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x69, 0x6e, + 0x67, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x31, 0x0a, 0x0c, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x63, + 0x6c, 0x61, 0x75, 0x73, 0x65, 0x18, 0x16, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x67, + 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x0b, 0x67, 0x72, 0x6f, + 0x75, 0x70, 0x43, 0x6c, 0x61, 0x75, 0x73, 0x65, 0x12, 0x33, 0x0a, 0x0d, 0x67, 0x72, 0x6f, 0x75, + 0x70, 0x69, 0x6e, 0x67, 0x5f, 0x73, 0x65, 0x74, 0x73, 0x18, 0x17, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x0e, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, + 0x0c, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x69, 0x6e, 0x67, 0x53, 0x65, 0x74, 0x73, 0x12, 0x2f, 0x0a, + 0x0b, 0x68, 0x61, 0x76, 0x69, 0x6e, 0x67, 0x5f, 0x71, 0x75, 0x61, 0x6c, 0x18, 0x18, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4e, 0x6f, + 0x64, 0x65, 0x52, 0x0a, 0x68, 0x61, 0x76, 0x69, 0x6e, 0x67, 0x51, 0x75, 0x61, 0x6c, 0x12, 0x33, + 0x0a, 0x0d, 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x5f, 0x63, 0x6c, 0x61, 0x75, 0x73, 0x65, 0x18, + 0x19, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, + 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x0c, 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x43, 0x6c, 0x61, + 0x75, 0x73, 0x65, 0x12, 0x37, 0x0a, 0x0f, 0x64, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x63, 0x74, 0x5f, + 0x63, 0x6c, 0x61, 0x75, 0x73, 0x65, 0x18, 0x1a, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, + 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x0e, 0x64, 0x69, + 0x73, 0x74, 0x69, 0x6e, 0x63, 0x74, 0x43, 0x6c, 0x61, 0x75, 0x73, 0x65, 0x12, 0x2f, 0x0a, 0x0b, + 0x73, 0x6f, 0x72, 0x74, 0x5f, 0x63, 0x6c, 0x61, 0x75, 0x73, 0x65, 0x18, 0x1b, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4e, 0x6f, 0x64, + 0x65, 0x52, 0x0a, 0x73, 0x6f, 0x72, 0x74, 0x43, 0x6c, 0x61, 0x75, 0x73, 0x65, 0x12, 0x31, 0x0a, + 0x0c, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x1c, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4e, + 0x6f, 0x64, 0x65, 0x52, 0x0b, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, + 0x12, 0x2f, 0x0a, 0x0b, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, + 0x1d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, + 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x0a, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x43, 0x6f, 0x75, 0x6e, + 0x74, 0x12, 0x38, 0x0a, 0x0c, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, + 0x6e, 0x18, 0x1e, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x15, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, + 0x72, 0x79, 0x2e, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0b, + 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2b, 0x0a, 0x09, 0x72, + 0x6f, 0x77, 0x5f, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x18, 0x1f, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, + 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x08, + 0x72, 0x6f, 0x77, 0x4d, 0x61, 0x72, 0x6b, 0x73, 0x12, 0x35, 0x0a, 0x0e, 0x73, 0x65, 0x74, 0x5f, + 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x20, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x0e, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4e, 0x6f, 0x64, 0x65, + 0x52, 0x0d, 0x73, 0x65, 0x74, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, + 0x37, 0x0a, 0x0f, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x72, 0x61, 0x69, 0x6e, 0x74, 0x5f, 0x64, 0x65, + 0x70, 0x73, 0x18, 0x21, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, + 0x65, 0x72, 0x79, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x0e, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x72, + 0x61, 0x69, 0x6e, 0x74, 0x44, 0x65, 0x70, 0x73, 0x12, 0x3c, 0x0a, 0x12, 0x77, 0x69, 0x74, 0x68, + 0x5f, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x22, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, + 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x10, 0x77, 0x69, 0x74, 0x68, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x4f, + 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x24, 0x0a, 0x0d, 0x73, 0x74, 0x6d, 0x74, 0x5f, 0x6c, + 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x23, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x73, + 0x74, 0x6d, 0x74, 0x5f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1a, 0x0a, 0x08, + 0x73, 0x74, 0x6d, 0x74, 0x5f, 0x6c, 0x65, 0x6e, 0x18, 0x24, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, + 0x73, 0x74, 0x6d, 0x74, 0x5f, 0x6c, 0x65, 0x6e, 0x22, 0xff, 0x02, 0x0a, 0x0a, 0x49, 0x6e, 0x73, + 0x65, 0x72, 0x74, 0x53, 0x74, 0x6d, 0x74, 0x12, 0x2e, 0x0a, 0x08, 0x72, 0x65, 0x6c, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x70, 0x67, 0x5f, 0x71, + 0x75, 0x65, 0x72, 0x79, 0x2e, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x56, 0x61, 0x72, 0x52, 0x08, 0x72, + 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x22, 0x0a, 0x04, 0x63, 0x6f, 0x6c, 0x73, 0x18, + 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, + 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x04, 0x63, 0x6f, 0x6c, 0x73, 0x12, 0x2f, 0x0a, 0x0b, 0x73, + 0x65, 0x6c, 0x65, 0x63, 0x74, 0x5f, 0x73, 0x74, 0x6d, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x0e, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4e, 0x6f, 0x64, 0x65, + 0x52, 0x0a, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x53, 0x74, 0x6d, 0x74, 0x12, 0x48, 0x0a, 0x12, + 0x6f, 0x6e, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x6c, 0x69, 0x63, 0x74, 0x5f, 0x63, 0x6c, 0x61, 0x75, + 0x73, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, + 0x65, 0x72, 0x79, 0x2e, 0x4f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x6c, 0x69, 0x63, 0x74, 0x43, 0x6c, + 0x61, 0x75, 0x73, 0x65, 0x52, 0x10, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x6c, 0x69, 0x63, 0x74, + 0x43, 0x6c, 0x61, 0x75, 0x73, 0x65, 0x12, 0x35, 0x0a, 0x0e, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, + 0x69, 0x6e, 0x67, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, + 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x0d, + 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x69, 0x6e, 0x67, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x35, 0x0a, + 0x0b, 0x77, 0x69, 0x74, 0x68, 0x5f, 0x63, 0x6c, 0x61, 0x75, 0x73, 0x65, 0x18, 0x06, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x57, 0x69, + 0x74, 0x68, 0x43, 0x6c, 0x61, 0x75, 0x73, 0x65, 0x52, 0x0a, 0x77, 0x69, 0x74, 0x68, 0x43, 0x6c, + 0x61, 0x75, 0x73, 0x65, 0x12, 0x34, 0x0a, 0x08, 0x6f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, + 0x18, 0x07, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x18, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, + 0x79, 0x2e, 0x4f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x69, 0x6e, 0x67, 0x4b, 0x69, 0x6e, 0x64, + 0x52, 0x08, 0x6f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x22, 0x90, 0x02, 0x0a, 0x0a, 0x44, + 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x74, 0x6d, 0x74, 0x12, 0x2e, 0x0a, 0x08, 0x72, 0x65, 0x6c, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x70, 0x67, + 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x56, 0x61, 0x72, 0x52, + 0x08, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x31, 0x0a, 0x0c, 0x75, 0x73, 0x69, + 0x6e, 0x67, 0x5f, 0x63, 0x6c, 0x61, 0x75, 0x73, 0x65, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x0e, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, + 0x0b, 0x75, 0x73, 0x69, 0x6e, 0x67, 0x43, 0x6c, 0x61, 0x75, 0x73, 0x65, 0x12, 0x31, 0x0a, 0x0c, + 0x77, 0x68, 0x65, 0x72, 0x65, 0x5f, 0x63, 0x6c, 0x61, 0x75, 0x73, 0x65, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4e, 0x6f, + 0x64, 0x65, 0x52, 0x0b, 0x77, 0x68, 0x65, 0x72, 0x65, 0x43, 0x6c, 0x61, 0x75, 0x73, 0x65, 0x12, + 0x35, 0x0a, 0x0e, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x69, 0x6e, 0x67, 0x5f, 0x6c, 0x69, 0x73, + 0x74, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, + 0x72, 0x79, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x0d, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x69, + 0x6e, 0x67, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x35, 0x0a, 0x0b, 0x77, 0x69, 0x74, 0x68, 0x5f, 0x63, + 0x6c, 0x61, 0x75, 0x73, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x70, 0x67, + 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x57, 0x69, 0x74, 0x68, 0x43, 0x6c, 0x61, 0x75, 0x73, + 0x65, 0x52, 0x0a, 0x77, 0x69, 0x74, 0x68, 0x43, 0x6c, 0x61, 0x75, 0x73, 0x65, 0x22, 0xbf, 0x02, + 0x0a, 0x0a, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x74, 0x6d, 0x74, 0x12, 0x2e, 0x0a, 0x08, + 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, + 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x56, + 0x61, 0x72, 0x52, 0x08, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2f, 0x0a, 0x0b, + 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x02, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4e, 0x6f, 0x64, + 0x65, 0x52, 0x0a, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x31, 0x0a, + 0x0c, 0x77, 0x68, 0x65, 0x72, 0x65, 0x5f, 0x63, 0x6c, 0x61, 0x75, 0x73, 0x65, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4e, + 0x6f, 0x64, 0x65, 0x52, 0x0b, 0x77, 0x68, 0x65, 0x72, 0x65, 0x43, 0x6c, 0x61, 0x75, 0x73, 0x65, + 0x12, 0x2f, 0x0a, 0x0b, 0x66, 0x72, 0x6f, 0x6d, 0x5f, 0x63, 0x6c, 0x61, 0x75, 0x73, 0x65, 0x18, + 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, + 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x0a, 0x66, 0x72, 0x6f, 0x6d, 0x43, 0x6c, 0x61, 0x75, 0x73, + 0x65, 0x12, 0x35, 0x0a, 0x0e, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x69, 0x6e, 0x67, 0x5f, 0x6c, + 0x69, 0x73, 0x74, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x67, 0x5f, 0x71, + 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x0d, 0x72, 0x65, 0x74, 0x75, 0x72, + 0x6e, 0x69, 0x6e, 0x67, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x35, 0x0a, 0x0b, 0x77, 0x69, 0x74, 0x68, + 0x5f, 0x63, 0x6c, 0x61, 0x75, 0x73, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, + 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x57, 0x69, 0x74, 0x68, 0x43, 0x6c, 0x61, + 0x75, 0x73, 0x65, 0x52, 0x0a, 0x77, 0x69, 0x74, 0x68, 0x43, 0x6c, 0x61, 0x75, 0x73, 0x65, 0x22, + 0xac, 0x07, 0x0a, 0x0a, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x53, 0x74, 0x6d, 0x74, 0x12, 0x37, + 0x0a, 0x0f, 0x64, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x63, 0x74, 0x5f, 0x63, 0x6c, 0x61, 0x75, 0x73, + 0x65, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, + 0x72, 0x79, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x0e, 0x64, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x63, + 0x74, 0x43, 0x6c, 0x61, 0x75, 0x73, 0x65, 0x12, 0x35, 0x0a, 0x0b, 0x69, 0x6e, 0x74, 0x6f, 0x5f, + 0x63, 0x6c, 0x61, 0x75, 0x73, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x70, + 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x49, 0x6e, 0x74, 0x6f, 0x43, 0x6c, 0x61, 0x75, + 0x73, 0x65, 0x52, 0x0a, 0x69, 0x6e, 0x74, 0x6f, 0x43, 0x6c, 0x61, 0x75, 0x73, 0x65, 0x12, 0x2f, + 0x0a, 0x0b, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x03, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4e, + 0x6f, 0x64, 0x65, 0x52, 0x0a, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x12, + 0x2f, 0x0a, 0x0b, 0x66, 0x72, 0x6f, 0x6d, 0x5f, 0x63, 0x6c, 0x61, 0x75, 0x73, 0x65, 0x18, 0x04, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, + 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x0a, 0x66, 0x72, 0x6f, 0x6d, 0x43, 0x6c, 0x61, 0x75, 0x73, 0x65, + 0x12, 0x31, 0x0a, 0x0c, 0x77, 0x68, 0x65, 0x72, 0x65, 0x5f, 0x63, 0x6c, 0x61, 0x75, 0x73, 0x65, + 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, + 0x79, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x0b, 0x77, 0x68, 0x65, 0x72, 0x65, 0x43, 0x6c, 0x61, + 0x75, 0x73, 0x65, 0x12, 0x31, 0x0a, 0x0c, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x63, 0x6c, 0x61, + 0x75, 0x73, 0x65, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x67, 0x5f, 0x71, + 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x0b, 0x67, 0x72, 0x6f, 0x75, 0x70, + 0x43, 0x6c, 0x61, 0x75, 0x73, 0x65, 0x12, 0x33, 0x0a, 0x0d, 0x68, 0x61, 0x76, 0x69, 0x6e, 0x67, + 0x5f, 0x63, 0x6c, 0x61, 0x75, 0x73, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, + 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x0c, 0x68, + 0x61, 0x76, 0x69, 0x6e, 0x67, 0x43, 0x6c, 0x61, 0x75, 0x73, 0x65, 0x12, 0x33, 0x0a, 0x0d, 0x77, + 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x5f, 0x63, 0x6c, 0x61, 0x75, 0x73, 0x65, 0x18, 0x08, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4e, 0x6f, + 0x64, 0x65, 0x52, 0x0c, 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x43, 0x6c, 0x61, 0x75, 0x73, 0x65, + 0x12, 0x31, 0x0a, 0x0c, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x73, + 0x18, 0x09, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, + 0x79, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x0b, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x4c, 0x69, + 0x73, 0x74, 0x73, 0x12, 0x2f, 0x0a, 0x0b, 0x73, 0x6f, 0x72, 0x74, 0x5f, 0x63, 0x6c, 0x61, 0x75, + 0x73, 0x65, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, + 0x65, 0x72, 0x79, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x0a, 0x73, 0x6f, 0x72, 0x74, 0x43, 0x6c, + 0x61, 0x75, 0x73, 0x65, 0x12, 0x31, 0x0a, 0x0c, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x5f, 0x6f, 0x66, + 0x66, 0x73, 0x65, 0x74, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x67, 0x5f, + 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x0b, 0x6c, 0x69, 0x6d, 0x69, + 0x74, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x12, 0x2f, 0x0a, 0x0b, 0x6c, 0x69, 0x6d, 0x69, 0x74, + 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, + 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x0a, 0x6c, 0x69, + 0x6d, 0x69, 0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x38, 0x0a, 0x0c, 0x6c, 0x69, 0x6d, 0x69, + 0x74, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x15, + 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x4f, + 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0b, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x4f, 0x70, 0x74, 0x69, + 0x6f, 0x6e, 0x12, 0x35, 0x0a, 0x0e, 0x6c, 0x6f, 0x63, 0x6b, 0x69, 0x6e, 0x67, 0x5f, 0x63, 0x6c, + 0x61, 0x75, 0x73, 0x65, 0x18, 0x0e, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x67, 0x5f, + 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x0d, 0x6c, 0x6f, 0x63, 0x6b, + 0x69, 0x6e, 0x67, 0x43, 0x6c, 0x61, 0x75, 0x73, 0x65, 0x12, 0x35, 0x0a, 0x0b, 0x77, 0x69, 0x74, + 0x68, 0x5f, 0x63, 0x6c, 0x61, 0x75, 0x73, 0x65, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, + 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x57, 0x69, 0x74, 0x68, 0x43, 0x6c, + 0x61, 0x75, 0x73, 0x65, 0x52, 0x0a, 0x77, 0x69, 0x74, 0x68, 0x43, 0x6c, 0x61, 0x75, 0x73, 0x65, + 0x12, 0x26, 0x0a, 0x02, 0x6f, 0x70, 0x18, 0x10, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x16, 0x2e, 0x70, + 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x53, 0x65, 0x74, 0x4f, 0x70, 0x65, 0x72, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x02, 0x6f, 0x70, 0x12, 0x10, 0x0a, 0x03, 0x61, 0x6c, 0x6c, 0x18, + 0x11, 0x20, 0x01, 0x28, 0x08, 0x52, 0x03, 0x61, 0x6c, 0x6c, 0x12, 0x28, 0x0a, 0x04, 0x6c, 0x61, + 0x72, 0x67, 0x18, 0x12, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, + 0x65, 0x72, 0x79, 0x2e, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x53, 0x74, 0x6d, 0x74, 0x52, 0x04, + 0x6c, 0x61, 0x72, 0x67, 0x12, 0x28, 0x0a, 0x04, 0x72, 0x61, 0x72, 0x67, 0x18, 0x13, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x53, 0x65, + 0x6c, 0x65, 0x63, 0x74, 0x53, 0x74, 0x6d, 0x74, 0x52, 0x04, 0x72, 0x61, 0x72, 0x67, 0x22, 0xb4, + 0x01, 0x0a, 0x0e, 0x41, 0x6c, 0x74, 0x65, 0x72, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x53, 0x74, 0x6d, + 0x74, 0x12, 0x2e, 0x0a, 0x08, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x52, + 0x61, 0x6e, 0x67, 0x65, 0x56, 0x61, 0x72, 0x52, 0x08, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x12, 0x22, 0x0a, 0x04, 0x63, 0x6d, 0x64, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x0e, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, + 0x04, 0x63, 0x6d, 0x64, 0x73, 0x12, 0x2e, 0x0a, 0x07, 0x72, 0x65, 0x6c, 0x6b, 0x69, 0x6e, 0x64, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x14, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, + 0x79, 0x2e, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x54, 0x79, 0x70, 0x65, 0x52, 0x07, 0x72, 0x65, + 0x6c, 0x6b, 0x69, 0x6e, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6e, 0x67, + 0x5f, 0x6f, 0x6b, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x6d, 0x69, 0x73, 0x73, 0x69, + 0x6e, 0x67, 0x5f, 0x6f, 0x6b, 0x22, 0x8f, 0x02, 0x0a, 0x0d, 0x41, 0x6c, 0x74, 0x65, 0x72, 0x54, + 0x61, 0x62, 0x6c, 0x65, 0x43, 0x6d, 0x64, 0x12, 0x32, 0x0a, 0x07, 0x73, 0x75, 0x62, 0x74, 0x79, + 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x18, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, + 0x65, 0x72, 0x79, 0x2e, 0x41, 0x6c, 0x74, 0x65, 0x72, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x54, 0x79, + 0x70, 0x65, 0x52, 0x07, 0x73, 0x75, 0x62, 0x74, 0x79, 0x70, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, + 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, + 0x10, 0x0a, 0x03, 0x6e, 0x75, 0x6d, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x6e, 0x75, + 0x6d, 0x12, 0x2e, 0x0a, 0x08, 0x6e, 0x65, 0x77, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x52, + 0x6f, 0x6c, 0x65, 0x53, 0x70, 0x65, 0x63, 0x52, 0x08, 0x6e, 0x65, 0x77, 0x6f, 0x77, 0x6e, 0x65, + 0x72, 0x12, 0x20, 0x0a, 0x03, 0x64, 0x65, 0x66, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, + 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x03, + 0x64, 0x65, 0x66, 0x12, 0x32, 0x0a, 0x08, 0x62, 0x65, 0x68, 0x61, 0x76, 0x69, 0x6f, 0x72, 0x18, + 0x06, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x16, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, + 0x2e, 0x44, 0x72, 0x6f, 0x70, 0x42, 0x65, 0x68, 0x61, 0x76, 0x69, 0x6f, 0x72, 0x52, 0x08, 0x62, + 0x65, 0x68, 0x61, 0x76, 0x69, 0x6f, 0x72, 0x12, 0x1e, 0x0a, 0x0a, 0x6d, 0x69, 0x73, 0x73, 0x69, + 0x6e, 0x67, 0x5f, 0x6f, 0x6b, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x6d, 0x69, 0x73, + 0x73, 0x69, 0x6e, 0x67, 0x5f, 0x6f, 0x6b, 0x22, 0xe2, 0x01, 0x0a, 0x0f, 0x41, 0x6c, 0x74, 0x65, + 0x72, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x53, 0x74, 0x6d, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x73, + 0x75, 0x62, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x73, 0x75, + 0x62, 0x74, 0x79, 0x70, 0x65, 0x12, 0x2b, 0x0a, 0x09, 0x74, 0x79, 0x70, 0x65, 0x5f, 0x6e, 0x61, + 0x6d, 0x65, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, + 0x65, 0x72, 0x79, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x08, 0x74, 0x79, 0x70, 0x65, 0x4e, 0x61, + 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x03, 0x64, 0x65, 0x66, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4e, + 0x6f, 0x64, 0x65, 0x52, 0x03, 0x64, 0x65, 0x66, 0x12, 0x32, 0x0a, 0x08, 0x62, 0x65, 0x68, 0x61, + 0x76, 0x69, 0x6f, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x16, 0x2e, 0x70, 0x67, 0x5f, + 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x44, 0x72, 0x6f, 0x70, 0x42, 0x65, 0x68, 0x61, 0x76, 0x69, + 0x6f, 0x72, 0x52, 0x08, 0x62, 0x65, 0x68, 0x61, 0x76, 0x69, 0x6f, 0x72, 0x12, 0x1e, 0x0a, 0x0a, + 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6e, 0x67, 0x5f, 0x6f, 0x6b, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, + 0x52, 0x0a, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6e, 0x67, 0x5f, 0x6f, 0x6b, 0x22, 0xde, 0x02, 0x0a, + 0x10, 0x53, 0x65, 0x74, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x6d, + 0x74, 0x12, 0x26, 0x0a, 0x02, 0x6f, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x16, 0x2e, + 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x53, 0x65, 0x74, 0x4f, 0x70, 0x65, 0x72, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x02, 0x6f, 0x70, 0x12, 0x10, 0x0a, 0x03, 0x61, 0x6c, 0x6c, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x03, 0x61, 0x6c, 0x6c, 0x12, 0x22, 0x0a, 0x04, 0x6c, + 0x61, 0x72, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x67, 0x5f, 0x71, + 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x04, 0x6c, 0x61, 0x72, 0x67, 0x12, + 0x22, 0x0a, 0x04, 0x72, 0x61, 0x72, 0x67, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, + 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x04, 0x72, + 0x61, 0x72, 0x67, 0x12, 0x2b, 0x0a, 0x09, 0x63, 0x6f, 0x6c, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x73, + 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, + 0x79, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x08, 0x63, 0x6f, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, + 0x12, 0x2f, 0x0a, 0x0b, 0x63, 0x6f, 0x6c, 0x5f, 0x74, 0x79, 0x70, 0x6d, 0x6f, 0x64, 0x73, 0x18, + 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, + 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x0a, 0x63, 0x6f, 0x6c, 0x54, 0x79, 0x70, 0x6d, 0x6f, 0x64, + 0x73, 0x12, 0x35, 0x0a, 0x0e, 0x63, 0x6f, 0x6c, 0x5f, 0x63, 0x6f, 0x6c, 0x6c, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x67, 0x5f, 0x71, + 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x0d, 0x63, 0x6f, 0x6c, 0x43, 0x6f, + 0x6c, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x33, 0x0a, 0x0d, 0x67, 0x72, 0x6f, 0x75, + 0x70, 0x5f, 0x63, 0x6c, 0x61, 0x75, 0x73, 0x65, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x0e, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, + 0x0c, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x43, 0x6c, 0x61, 0x75, 0x73, 0x65, 0x73, 0x22, 0xec, 0x02, + 0x0a, 0x09, 0x47, 0x72, 0x61, 0x6e, 0x74, 0x53, 0x74, 0x6d, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x69, + 0x73, 0x5f, 0x67, 0x72, 0x61, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x69, + 0x73, 0x5f, 0x67, 0x72, 0x61, 0x6e, 0x74, 0x12, 0x35, 0x0a, 0x08, 0x74, 0x61, 0x72, 0x67, 0x74, + 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x19, 0x2e, 0x70, 0x67, 0x5f, 0x71, + 0x75, 0x65, 0x72, 0x79, 0x2e, 0x47, 0x72, 0x61, 0x6e, 0x74, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, + 0x54, 0x79, 0x70, 0x65, 0x52, 0x08, 0x74, 0x61, 0x72, 0x67, 0x74, 0x79, 0x70, 0x65, 0x12, 0x2e, + 0x0a, 0x07, 0x6f, 0x62, 0x6a, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, + 0x14, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4f, 0x62, 0x6a, 0x65, 0x63, + 0x74, 0x54, 0x79, 0x70, 0x65, 0x52, 0x07, 0x6f, 0x62, 0x6a, 0x74, 0x79, 0x70, 0x65, 0x12, 0x28, + 0x0a, 0x07, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x0e, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, + 0x07, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x12, 0x2e, 0x0a, 0x0a, 0x70, 0x72, 0x69, 0x76, + 0x69, 0x6c, 0x65, 0x67, 0x65, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, + 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x0a, 0x70, 0x72, + 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x73, 0x12, 0x2a, 0x0a, 0x08, 0x67, 0x72, 0x61, 0x6e, + 0x74, 0x65, 0x65, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x67, 0x5f, + 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x08, 0x67, 0x72, 0x61, 0x6e, + 0x74, 0x65, 0x65, 0x73, 0x12, 0x22, 0x0a, 0x0c, 0x67, 0x72, 0x61, 0x6e, 0x74, 0x5f, 0x6f, 0x70, + 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x67, 0x72, 0x61, 0x6e, + 0x74, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x32, 0x0a, 0x08, 0x62, 0x65, 0x68, 0x61, + 0x76, 0x69, 0x6f, 0x72, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x16, 0x2e, 0x70, 0x67, 0x5f, + 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x44, 0x72, 0x6f, 0x70, 0x42, 0x65, 0x68, 0x61, 0x76, 0x69, + 0x6f, 0x72, 0x52, 0x08, 0x62, 0x65, 0x68, 0x61, 0x76, 0x69, 0x6f, 0x72, 0x22, 0x97, 0x02, 0x0a, + 0x0d, 0x47, 0x72, 0x61, 0x6e, 0x74, 0x52, 0x6f, 0x6c, 0x65, 0x53, 0x74, 0x6d, 0x74, 0x12, 0x34, + 0x0a, 0x0d, 0x67, 0x72, 0x61, 0x6e, 0x74, 0x65, 0x64, 0x5f, 0x72, 0x6f, 0x6c, 0x65, 0x73, 0x18, + 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, + 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x0d, 0x67, 0x72, 0x61, 0x6e, 0x74, 0x65, 0x64, 0x5f, 0x72, + 0x6f, 0x6c, 0x65, 0x73, 0x12, 0x34, 0x0a, 0x0d, 0x67, 0x72, 0x61, 0x6e, 0x74, 0x65, 0x65, 0x5f, + 0x72, 0x6f, 0x6c, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x67, + 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x0d, 0x67, 0x72, 0x61, + 0x6e, 0x74, 0x65, 0x65, 0x5f, 0x72, 0x6f, 0x6c, 0x65, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x69, 0x73, + 0x5f, 0x67, 0x72, 0x61, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x69, 0x73, + 0x5f, 0x67, 0x72, 0x61, 0x6e, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x5f, + 0x6f, 0x70, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x61, 0x64, 0x6d, 0x69, 0x6e, + 0x5f, 0x6f, 0x70, 0x74, 0x12, 0x2c, 0x0a, 0x07, 0x67, 0x72, 0x61, 0x6e, 0x74, 0x6f, 0x72, 0x18, + 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, + 0x2e, 0x52, 0x6f, 0x6c, 0x65, 0x53, 0x70, 0x65, 0x63, 0x52, 0x07, 0x67, 0x72, 0x61, 0x6e, 0x74, + 0x6f, 0x72, 0x12, 0x32, 0x0a, 0x08, 0x62, 0x65, 0x68, 0x61, 0x76, 0x69, 0x6f, 0x72, 0x18, 0x06, + 0x20, 0x01, 0x28, 0x0e, 0x32, 0x16, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, + 0x44, 0x72, 0x6f, 0x70, 0x42, 0x65, 0x68, 0x61, 0x76, 0x69, 0x6f, 0x72, 0x52, 0x08, 0x62, 0x65, + 0x68, 0x61, 0x76, 0x69, 0x6f, 0x72, 0x22, 0x73, 0x0a, 0x1a, 0x41, 0x6c, 0x74, 0x65, 0x72, 0x44, + 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x73, + 0x53, 0x74, 0x6d, 0x74, 0x12, 0x28, 0x0a, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, + 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, + 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x2b, + 0x0a, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, + 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x47, 0x72, 0x61, 0x6e, 0x74, 0x53, + 0x74, 0x6d, 0x74, 0x52, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x31, 0x0a, 0x0f, 0x43, + 0x6c, 0x6f, 0x73, 0x65, 0x50, 0x6f, 0x72, 0x74, 0x61, 0x6c, 0x53, 0x74, 0x6d, 0x74, 0x12, 0x1e, + 0x0a, 0x0a, 0x70, 0x6f, 0x72, 0x74, 0x61, 0x6c, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0a, 0x70, 0x6f, 0x72, 0x74, 0x61, 0x6c, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x75, + 0x0a, 0x0b, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x53, 0x74, 0x6d, 0x74, 0x12, 0x2e, 0x0a, + 0x08, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x12, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x52, 0x61, 0x6e, 0x67, 0x65, + 0x56, 0x61, 0x72, 0x52, 0x08, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1c, 0x0a, + 0x09, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x09, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x6f, + 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x6f, 0x70, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0xbd, 0x02, 0x0a, 0x08, 0x43, 0x6f, 0x70, 0x79, 0x53, 0x74, + 0x6d, 0x74, 0x12, 0x2e, 0x0a, 0x08, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, + 0x52, 0x61, 0x6e, 0x67, 0x65, 0x56, 0x61, 0x72, 0x52, 0x08, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x12, 0x24, 0x0a, 0x05, 0x71, 0x75, 0x65, 0x72, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4e, 0x6f, 0x64, + 0x65, 0x52, 0x05, 0x71, 0x75, 0x65, 0x72, 0x79, 0x12, 0x28, 0x0a, 0x07, 0x61, 0x74, 0x74, 0x6c, + 0x69, 0x73, 0x74, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x67, 0x5f, 0x71, + 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x07, 0x61, 0x74, 0x74, 0x6c, 0x69, + 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x69, 0x73, 0x5f, 0x66, 0x72, 0x6f, 0x6d, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x08, 0x52, 0x07, 0x69, 0x73, 0x5f, 0x66, 0x72, 0x6f, 0x6d, 0x12, 0x1e, 0x0a, 0x0a, + 0x69, 0x73, 0x5f, 0x70, 0x72, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, + 0x52, 0x0a, 0x69, 0x73, 0x5f, 0x70, 0x72, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x12, 0x1a, 0x0a, 0x08, + 0x66, 0x69, 0x6c, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, + 0x66, 0x69, 0x6c, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x28, 0x0a, 0x07, 0x6f, 0x70, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x67, 0x5f, 0x71, + 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x12, 0x31, 0x0a, 0x0c, 0x77, 0x68, 0x65, 0x72, 0x65, 0x5f, 0x63, 0x6c, 0x61, 0x75, + 0x73, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, + 0x65, 0x72, 0x79, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x0b, 0x77, 0x68, 0x65, 0x72, 0x65, 0x43, + 0x6c, 0x61, 0x75, 0x73, 0x65, 0x22, 0xcb, 0x04, 0x0a, 0x0a, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, + 0x53, 0x74, 0x6d, 0x74, 0x12, 0x2e, 0x0a, 0x08, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, + 0x79, 0x2e, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x56, 0x61, 0x72, 0x52, 0x08, 0x72, 0x65, 0x6c, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2d, 0x0a, 0x0a, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x65, 0x6c, + 0x74, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, + 0x65, 0x72, 0x79, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x09, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x45, + 0x6c, 0x74, 0x73, 0x12, 0x33, 0x0a, 0x0d, 0x69, 0x6e, 0x68, 0x5f, 0x72, 0x65, 0x6c, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x67, 0x5f, + 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x0c, 0x69, 0x6e, 0x68, 0x52, + 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x3a, 0x0a, 0x09, 0x70, 0x61, 0x72, 0x74, + 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x70, 0x67, + 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x50, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, + 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x53, 0x70, 0x65, 0x63, 0x52, 0x09, 0x70, 0x61, 0x72, 0x74, 0x62, + 0x6f, 0x75, 0x6e, 0x64, 0x12, 0x33, 0x0a, 0x08, 0x70, 0x61, 0x72, 0x74, 0x73, 0x70, 0x65, 0x63, + 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, + 0x79, 0x2e, 0x50, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x70, 0x65, 0x63, 0x52, + 0x08, 0x70, 0x61, 0x72, 0x74, 0x73, 0x70, 0x65, 0x63, 0x12, 0x33, 0x0a, 0x0b, 0x6f, 0x66, 0x5f, + 0x74, 0x79, 0x70, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, + 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x54, 0x79, 0x70, 0x65, 0x4e, 0x61, + 0x6d, 0x65, 0x52, 0x0a, 0x6f, 0x66, 0x54, 0x79, 0x70, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x30, + 0x0a, 0x0b, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x72, 0x61, 0x69, 0x6e, 0x74, 0x73, 0x18, 0x07, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4e, + 0x6f, 0x64, 0x65, 0x52, 0x0b, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x72, 0x61, 0x69, 0x6e, 0x74, 0x73, + 0x12, 0x28, 0x0a, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4e, 0x6f, 0x64, + 0x65, 0x52, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x34, 0x0a, 0x08, 0x6f, 0x6e, + 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x18, 0x2e, 0x70, + 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4f, 0x6e, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, + 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x08, 0x6f, 0x6e, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, + 0x12, 0x26, 0x0a, 0x0e, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x6e, 0x61, + 0x6d, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x73, + 0x70, 0x61, 0x63, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x61, 0x63, 0x63, 0x65, + 0x73, 0x73, 0x5f, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x0c, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x12, 0x24, 0x0a, + 0x0d, 0x69, 0x66, 0x5f, 0x6e, 0x6f, 0x74, 0x5f, 0x65, 0x78, 0x69, 0x73, 0x74, 0x73, 0x18, 0x0c, + 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x69, 0x66, 0x5f, 0x6e, 0x6f, 0x74, 0x5f, 0x65, 0x78, 0x69, + 0x73, 0x74, 0x73, 0x22, 0x92, 0x02, 0x0a, 0x0a, 0x44, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x53, 0x74, + 0x6d, 0x74, 0x12, 0x28, 0x0a, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, + 0x32, 0x14, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4f, 0x62, 0x6a, 0x65, + 0x63, 0x74, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x12, 0x1a, 0x0a, 0x08, + 0x6f, 0x6c, 0x64, 0x73, 0x74, 0x79, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, + 0x6f, 0x6c, 0x64, 0x73, 0x74, 0x79, 0x6c, 0x65, 0x12, 0x2a, 0x0a, 0x08, 0x64, 0x65, 0x66, 0x6e, + 0x61, 0x6d, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x67, 0x5f, + 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x08, 0x64, 0x65, 0x66, 0x6e, + 0x61, 0x6d, 0x65, 0x73, 0x12, 0x22, 0x0a, 0x04, 0x61, 0x72, 0x67, 0x73, 0x18, 0x04, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4e, 0x6f, + 0x64, 0x65, 0x52, 0x04, 0x61, 0x72, 0x67, 0x73, 0x12, 0x2e, 0x0a, 0x0a, 0x64, 0x65, 0x66, 0x69, + 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, + 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x0a, 0x64, 0x65, + 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x24, 0x0a, 0x0d, 0x69, 0x66, 0x5f, 0x6e, + 0x6f, 0x74, 0x5f, 0x65, 0x78, 0x69, 0x73, 0x74, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, + 0x0d, 0x69, 0x66, 0x5f, 0x6e, 0x6f, 0x74, 0x5f, 0x65, 0x78, 0x69, 0x73, 0x74, 0x73, 0x12, 0x18, + 0x0a, 0x07, 0x72, 0x65, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, + 0x07, 0x72, 0x65, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x22, 0xdf, 0x01, 0x0a, 0x08, 0x44, 0x72, 0x6f, + 0x70, 0x53, 0x74, 0x6d, 0x74, 0x12, 0x28, 0x0a, 0x07, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, + 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, + 0x79, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x07, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x12, + 0x35, 0x0a, 0x0b, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0e, 0x32, 0x14, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, + 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0a, 0x72, 0x65, 0x6d, 0x6f, + 0x76, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x32, 0x0a, 0x08, 0x62, 0x65, 0x68, 0x61, 0x76, 0x69, + 0x6f, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x16, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, + 0x65, 0x72, 0x79, 0x2e, 0x44, 0x72, 0x6f, 0x70, 0x42, 0x65, 0x68, 0x61, 0x76, 0x69, 0x6f, 0x72, + 0x52, 0x08, 0x62, 0x65, 0x68, 0x61, 0x76, 0x69, 0x6f, 0x72, 0x12, 0x1e, 0x0a, 0x0a, 0x6d, 0x69, + 0x73, 0x73, 0x69, 0x6e, 0x67, 0x5f, 0x6f, 0x6b, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, + 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6e, 0x67, 0x5f, 0x6f, 0x6b, 0x12, 0x1e, 0x0a, 0x0a, 0x63, 0x6f, + 0x6e, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, + 0x63, 0x6f, 0x6e, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x22, 0x94, 0x01, 0x0a, 0x0c, 0x54, + 0x72, 0x75, 0x6e, 0x63, 0x61, 0x74, 0x65, 0x53, 0x74, 0x6d, 0x74, 0x12, 0x2c, 0x0a, 0x09, 0x72, + 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, + 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x09, + 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x22, 0x0a, 0x0c, 0x72, 0x65, 0x73, + 0x74, 0x61, 0x72, 0x74, 0x5f, 0x73, 0x65, 0x71, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, + 0x0c, 0x72, 0x65, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x73, 0x65, 0x71, 0x73, 0x12, 0x32, 0x0a, + 0x08, 0x62, 0x65, 0x68, 0x61, 0x76, 0x69, 0x6f, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, + 0x16, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x44, 0x72, 0x6f, 0x70, 0x42, + 0x65, 0x68, 0x61, 0x76, 0x69, 0x6f, 0x72, 0x52, 0x08, 0x62, 0x65, 0x68, 0x61, 0x76, 0x69, 0x6f, + 0x72, 0x22, 0x7f, 0x0a, 0x0b, 0x43, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x53, 0x74, 0x6d, 0x74, + 0x12, 0x2e, 0x0a, 0x07, 0x6f, 0x62, 0x6a, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0e, 0x32, 0x14, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4f, 0x62, 0x6a, + 0x65, 0x63, 0x74, 0x54, 0x79, 0x70, 0x65, 0x52, 0x07, 0x6f, 0x62, 0x6a, 0x74, 0x79, 0x70, 0x65, + 0x12, 0x26, 0x0a, 0x06, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x0e, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4e, 0x6f, 0x64, 0x65, + 0x52, 0x06, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x6d, 0x6d, + 0x65, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6f, 0x6d, 0x6d, 0x65, + 0x6e, 0x74, 0x22, 0x96, 0x01, 0x0a, 0x09, 0x46, 0x65, 0x74, 0x63, 0x68, 0x53, 0x74, 0x6d, 0x74, + 0x12, 0x36, 0x0a, 0x09, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0e, 0x32, 0x18, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x46, + 0x65, 0x74, 0x63, 0x68, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x09, 0x64, + 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x19, 0x0a, 0x08, 0x68, 0x6f, 0x77, 0x5f, + 0x6d, 0x61, 0x6e, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x68, 0x6f, 0x77, 0x4d, + 0x61, 0x6e, 0x79, 0x12, 0x1e, 0x0a, 0x0a, 0x70, 0x6f, 0x72, 0x74, 0x61, 0x6c, 0x6e, 0x61, 0x6d, + 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x70, 0x6f, 0x72, 0x74, 0x61, 0x6c, 0x6e, + 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x69, 0x73, 0x6d, 0x6f, 0x76, 0x65, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x08, 0x52, 0x06, 0x69, 0x73, 0x6d, 0x6f, 0x76, 0x65, 0x22, 0xa2, 0x07, 0x0a, 0x09, + 0x49, 0x6e, 0x64, 0x65, 0x78, 0x53, 0x74, 0x6d, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x69, 0x64, 0x78, + 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x69, 0x64, 0x78, 0x6e, + 0x61, 0x6d, 0x65, 0x12, 0x2e, 0x0a, 0x08, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, + 0x2e, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x56, 0x61, 0x72, 0x52, 0x08, 0x72, 0x65, 0x6c, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x12, 0x23, 0x0a, 0x0d, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x5f, 0x6d, 0x65, + 0x74, 0x68, 0x6f, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x61, 0x63, 0x63, 0x65, + 0x73, 0x73, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x74, 0x61, 0x62, 0x6c, + 0x65, 0x5f, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x74, + 0x61, 0x62, 0x6c, 0x65, 0x53, 0x70, 0x61, 0x63, 0x65, 0x12, 0x31, 0x0a, 0x0c, 0x69, 0x6e, 0x64, + 0x65, 0x78, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x0e, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, + 0x0b, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x44, 0x0a, 0x16, + 0x69, 0x6e, 0x64, 0x65, 0x78, 0x5f, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x69, 0x6e, 0x67, 0x5f, + 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, + 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x14, 0x69, 0x6e, + 0x64, 0x65, 0x78, 0x49, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x69, 0x6e, 0x67, 0x50, 0x61, 0x72, 0x61, + 0x6d, 0x73, 0x12, 0x28, 0x0a, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x07, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4e, + 0x6f, 0x64, 0x65, 0x52, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x31, 0x0a, 0x0c, + 0x77, 0x68, 0x65, 0x72, 0x65, 0x5f, 0x63, 0x6c, 0x61, 0x75, 0x73, 0x65, 0x18, 0x08, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4e, 0x6f, + 0x64, 0x65, 0x52, 0x0b, 0x77, 0x68, 0x65, 0x72, 0x65, 0x43, 0x6c, 0x61, 0x75, 0x73, 0x65, 0x12, + 0x38, 0x0a, 0x10, 0x65, 0x78, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x5f, 0x6f, 0x70, 0x5f, 0x6e, 0x61, + 0x6d, 0x65, 0x73, 0x18, 0x09, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x67, 0x5f, 0x71, + 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x0e, 0x65, 0x78, 0x63, 0x6c, 0x75, + 0x64, 0x65, 0x4f, 0x70, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x1e, 0x0a, 0x0a, 0x69, 0x64, 0x78, + 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x69, + 0x64, 0x78, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x69, 0x6e, 0x64, + 0x65, 0x78, 0x5f, 0x6f, 0x69, 0x64, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x08, 0x69, 0x6e, + 0x64, 0x65, 0x78, 0x4f, 0x69, 0x64, 0x12, 0x19, 0x0a, 0x08, 0x6f, 0x6c, 0x64, 0x5f, 0x6e, 0x6f, + 0x64, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x07, 0x6f, 0x6c, 0x64, 0x4e, 0x6f, 0x64, + 0x65, 0x12, 0x28, 0x0a, 0x10, 0x6f, 0x6c, 0x64, 0x5f, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x5f, + 0x73, 0x75, 0x62, 0x69, 0x64, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0e, 0x6f, 0x6c, 0x64, + 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, 0x75, 0x62, 0x69, 0x64, 0x12, 0x3d, 0x0a, 0x1b, 0x6f, + 0x6c, 0x64, 0x5f, 0x66, 0x69, 0x72, 0x73, 0x74, 0x5f, 0x72, 0x65, 0x6c, 0x66, 0x69, 0x6c, 0x65, + 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x73, 0x75, 0x62, 0x69, 0x64, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0d, + 0x52, 0x18, 0x6f, 0x6c, 0x64, 0x46, 0x69, 0x72, 0x73, 0x74, 0x52, 0x65, 0x6c, 0x66, 0x69, 0x6c, + 0x65, 0x6e, 0x6f, 0x64, 0x65, 0x53, 0x75, 0x62, 0x69, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x75, 0x6e, + 0x69, 0x71, 0x75, 0x65, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x75, 0x6e, 0x69, 0x71, + 0x75, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x18, 0x10, 0x20, + 0x01, 0x28, 0x08, 0x52, 0x07, 0x70, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x12, 0x22, 0x0a, 0x0c, + 0x69, 0x73, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x72, 0x61, 0x69, 0x6e, 0x74, 0x18, 0x11, 0x20, 0x01, + 0x28, 0x08, 0x52, 0x0c, 0x69, 0x73, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x72, 0x61, 0x69, 0x6e, 0x74, + 0x12, 0x1e, 0x0a, 0x0a, 0x64, 0x65, 0x66, 0x65, 0x72, 0x72, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x12, + 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x64, 0x65, 0x66, 0x65, 0x72, 0x72, 0x61, 0x62, 0x6c, 0x65, + 0x12, 0x22, 0x0a, 0x0c, 0x69, 0x6e, 0x69, 0x74, 0x64, 0x65, 0x66, 0x65, 0x72, 0x72, 0x65, 0x64, + 0x18, 0x13, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x69, 0x6e, 0x69, 0x74, 0x64, 0x65, 0x66, 0x65, + 0x72, 0x72, 0x65, 0x64, 0x12, 0x20, 0x0a, 0x0b, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, + 0x6d, 0x65, 0x64, 0x18, 0x14, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x74, 0x72, 0x61, 0x6e, 0x73, + 0x66, 0x6f, 0x72, 0x6d, 0x65, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x63, 0x6f, 0x6e, 0x63, 0x75, 0x72, + 0x72, 0x65, 0x6e, 0x74, 0x18, 0x15, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x63, 0x6f, 0x6e, 0x63, + 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x24, 0x0a, 0x0d, 0x69, 0x66, 0x5f, 0x6e, 0x6f, 0x74, + 0x5f, 0x65, 0x78, 0x69, 0x73, 0x74, 0x73, 0x18, 0x16, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x69, + 0x66, 0x5f, 0x6e, 0x6f, 0x74, 0x5f, 0x65, 0x78, 0x69, 0x73, 0x74, 0x73, 0x12, 0x32, 0x0a, 0x14, + 0x72, 0x65, 0x73, 0x65, 0x74, 0x5f, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x74, 0x62, + 0x6c, 0x73, 0x70, 0x63, 0x18, 0x17, 0x20, 0x01, 0x28, 0x08, 0x52, 0x14, 0x72, 0x65, 0x73, 0x65, + 0x74, 0x5f, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x74, 0x62, 0x6c, 0x73, 0x70, 0x63, + 0x22, 0x8d, 0x02, 0x0a, 0x12, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x46, 0x75, 0x6e, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x6d, 0x74, 0x12, 0x22, 0x0a, 0x0c, 0x69, 0x73, 0x5f, 0x70, 0x72, + 0x6f, 0x63, 0x65, 0x64, 0x75, 0x72, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x69, + 0x73, 0x5f, 0x70, 0x72, 0x6f, 0x63, 0x65, 0x64, 0x75, 0x72, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x72, + 0x65, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x72, 0x65, + 0x70, 0x6c, 0x61, 0x63, 0x65, 0x12, 0x2a, 0x0a, 0x08, 0x66, 0x75, 0x6e, 0x63, 0x6e, 0x61, 0x6d, + 0x65, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, + 0x72, 0x79, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x08, 0x66, 0x75, 0x6e, 0x63, 0x6e, 0x61, 0x6d, + 0x65, 0x12, 0x2e, 0x0a, 0x0a, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x18, + 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, + 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x0a, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, + 0x73, 0x12, 0x33, 0x0a, 0x0b, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x5f, 0x74, 0x79, 0x70, 0x65, + 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, + 0x79, 0x2e, 0x54, 0x79, 0x70, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x52, 0x0a, 0x72, 0x65, 0x74, 0x75, + 0x72, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x28, 0x0a, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, + 0x72, 0x79, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x22, 0x9b, 0x01, 0x0a, 0x11, 0x41, 0x6c, 0x74, 0x65, 0x72, 0x46, 0x75, 0x6e, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x53, 0x74, 0x6d, 0x74, 0x12, 0x2e, 0x0a, 0x07, 0x6f, 0x62, 0x6a, 0x74, 0x79, 0x70, + 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x14, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, + 0x72, 0x79, 0x2e, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x54, 0x79, 0x70, 0x65, 0x52, 0x07, 0x6f, + 0x62, 0x6a, 0x74, 0x79, 0x70, 0x65, 0x12, 0x2c, 0x0a, 0x04, 0x66, 0x75, 0x6e, 0x63, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, + 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x57, 0x69, 0x74, 0x68, 0x41, 0x72, 0x67, 0x73, 0x52, 0x04, + 0x66, 0x75, 0x6e, 0x63, 0x12, 0x28, 0x0a, 0x07, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, + 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, + 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x07, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x2c, + 0x0a, 0x06, 0x44, 0x6f, 0x53, 0x74, 0x6d, 0x74, 0x12, 0x22, 0x0a, 0x04, 0x61, 0x72, 0x67, 0x73, + 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, + 0x79, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x04, 0x61, 0x72, 0x67, 0x73, 0x22, 0xde, 0x02, 0x0a, + 0x0a, 0x52, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x53, 0x74, 0x6d, 0x74, 0x12, 0x35, 0x0a, 0x0b, 0x72, + 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, + 0x32, 0x14, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4f, 0x62, 0x6a, 0x65, + 0x63, 0x74, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0a, 0x72, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x54, 0x79, + 0x70, 0x65, 0x12, 0x39, 0x0a, 0x0d, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, + 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x14, 0x2e, 0x70, 0x67, 0x5f, 0x71, + 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x54, 0x79, 0x70, 0x65, 0x52, + 0x0c, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x2e, 0x0a, + 0x08, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x12, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x52, 0x61, 0x6e, 0x67, 0x65, + 0x56, 0x61, 0x72, 0x52, 0x08, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x26, 0x0a, + 0x06, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, + 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x06, 0x6f, + 0x62, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x75, 0x62, 0x6e, 0x61, 0x6d, 0x65, + 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x73, 0x75, 0x62, 0x6e, 0x61, 0x6d, 0x65, 0x12, + 0x18, 0x0a, 0x07, 0x6e, 0x65, 0x77, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x07, 0x6e, 0x65, 0x77, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x32, 0x0a, 0x08, 0x62, 0x65, 0x68, + 0x61, 0x76, 0x69, 0x6f, 0x72, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x16, 0x2e, 0x70, 0x67, + 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x44, 0x72, 0x6f, 0x70, 0x42, 0x65, 0x68, 0x61, 0x76, + 0x69, 0x6f, 0x72, 0x52, 0x08, 0x62, 0x65, 0x68, 0x61, 0x76, 0x69, 0x6f, 0x72, 0x12, 0x1e, 0x0a, + 0x0a, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6e, 0x67, 0x5f, 0x6f, 0x6b, 0x18, 0x08, 0x20, 0x01, 0x28, + 0x08, 0x52, 0x0a, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6e, 0x67, 0x5f, 0x6f, 0x6b, 0x22, 0x90, 0x02, + 0x0a, 0x08, 0x52, 0x75, 0x6c, 0x65, 0x53, 0x74, 0x6d, 0x74, 0x12, 0x2e, 0x0a, 0x08, 0x72, 0x65, + 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x70, + 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x56, 0x61, 0x72, + 0x52, 0x08, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x72, 0x75, + 0x6c, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x72, 0x75, + 0x6c, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x31, 0x0a, 0x0c, 0x77, 0x68, 0x65, 0x72, 0x65, 0x5f, + 0x63, 0x6c, 0x61, 0x75, 0x73, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, + 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x0b, 0x77, 0x68, + 0x65, 0x72, 0x65, 0x43, 0x6c, 0x61, 0x75, 0x73, 0x65, 0x12, 0x27, 0x0a, 0x05, 0x65, 0x76, 0x65, + 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x11, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, + 0x65, 0x72, 0x79, 0x2e, 0x43, 0x6d, 0x64, 0x54, 0x79, 0x70, 0x65, 0x52, 0x05, 0x65, 0x76, 0x65, + 0x6e, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x69, 0x6e, 0x73, 0x74, 0x65, 0x61, 0x64, 0x18, 0x05, 0x20, + 0x01, 0x28, 0x08, 0x52, 0x07, 0x69, 0x6e, 0x73, 0x74, 0x65, 0x61, 0x64, 0x12, 0x28, 0x0a, 0x07, + 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, + 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x07, 0x61, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x72, 0x65, 0x70, 0x6c, 0x61, 0x63, + 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x72, 0x65, 0x70, 0x6c, 0x61, 0x63, 0x65, + 0x22, 0x4c, 0x0a, 0x0a, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x53, 0x74, 0x6d, 0x74, 0x12, 0x24, + 0x0a, 0x0d, 0x63, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x6e, 0x61, 0x6d, 0x65, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x63, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, + 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x22, 0x32, + 0x0a, 0x0a, 0x4c, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x53, 0x74, 0x6d, 0x74, 0x12, 0x24, 0x0a, 0x0d, + 0x63, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x0d, 0x63, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x6e, 0x61, + 0x6d, 0x65, 0x22, 0x34, 0x0a, 0x0c, 0x55, 0x6e, 0x6c, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x53, 0x74, + 0x6d, 0x74, 0x12, 0x24, 0x0a, 0x0d, 0x63, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x6e, + 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x63, 0x6f, 0x6e, 0x64, 0x69, + 0x74, 0x69, 0x6f, 0x6e, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0xbe, 0x01, 0x0a, 0x0f, 0x54, 0x72, 0x61, + 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x6d, 0x74, 0x12, 0x31, 0x0a, 0x04, + 0x6b, 0x69, 0x6e, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1d, 0x2e, 0x70, 0x67, 0x5f, + 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x53, 0x74, 0x6d, 0x74, 0x4b, 0x69, 0x6e, 0x64, 0x52, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x12, + 0x28, 0x0a, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x0e, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4e, 0x6f, 0x64, 0x65, + 0x52, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x26, 0x0a, 0x0e, 0x73, 0x61, 0x76, + 0x65, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x0e, 0x73, 0x61, 0x76, 0x65, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x5f, 0x6e, 0x61, 0x6d, + 0x65, 0x12, 0x10, 0x0a, 0x03, 0x67, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, + 0x67, 0x69, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x18, 0x05, 0x20, 0x01, + 0x28, 0x08, 0x52, 0x05, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x22, 0x8d, 0x02, 0x0a, 0x08, 0x56, 0x69, + 0x65, 0x77, 0x53, 0x74, 0x6d, 0x74, 0x12, 0x26, 0x0a, 0x04, 0x76, 0x69, 0x65, 0x77, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, + 0x52, 0x61, 0x6e, 0x67, 0x65, 0x56, 0x61, 0x72, 0x52, 0x04, 0x76, 0x69, 0x65, 0x77, 0x12, 0x28, + 0x0a, 0x07, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x0e, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, + 0x07, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x65, 0x73, 0x12, 0x24, 0x0a, 0x05, 0x71, 0x75, 0x65, 0x72, + 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, + 0x72, 0x79, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x05, 0x71, 0x75, 0x65, 0x72, 0x79, 0x12, 0x18, + 0x0a, 0x07, 0x72, 0x65, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, + 0x07, 0x72, 0x65, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x12, 0x28, 0x0a, 0x07, 0x6f, 0x70, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x67, 0x5f, 0x71, + 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x12, 0x45, 0x0a, 0x11, 0x77, 0x69, 0x74, 0x68, 0x5f, 0x63, 0x68, 0x65, 0x63, 0x6b, + 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x19, 0x2e, + 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x56, 0x69, 0x65, 0x77, 0x43, 0x68, 0x65, + 0x63, 0x6b, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0f, 0x77, 0x69, 0x74, 0x68, 0x43, 0x68, + 0x65, 0x63, 0x6b, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x26, 0x0a, 0x08, 0x4c, 0x6f, 0x61, + 0x64, 0x53, 0x74, 0x6d, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x66, 0x69, 0x6c, 0x65, 0x6e, 0x61, 0x6d, + 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x66, 0x69, 0x6c, 0x65, 0x6e, 0x61, 0x6d, + 0x65, 0x22, 0xdf, 0x01, 0x0a, 0x10, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x44, 0x6f, 0x6d, 0x61, + 0x69, 0x6e, 0x53, 0x74, 0x6d, 0x74, 0x12, 0x2e, 0x0a, 0x0a, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, + 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x67, 0x5f, + 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x0a, 0x64, 0x6f, 0x6d, 0x61, + 0x69, 0x6e, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x2f, 0x0a, 0x09, 0x74, 0x79, 0x70, 0x65, 0x5f, 0x6e, + 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x70, 0x67, 0x5f, 0x71, + 0x75, 0x65, 0x72, 0x79, 0x2e, 0x54, 0x79, 0x70, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x52, 0x08, 0x74, + 0x79, 0x70, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x38, 0x0a, 0x0b, 0x63, 0x6f, 0x6c, 0x6c, 0x5f, + 0x63, 0x6c, 0x61, 0x75, 0x73, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x70, + 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x43, 0x6f, 0x6c, 0x6c, 0x61, 0x74, 0x65, 0x43, + 0x6c, 0x61, 0x75, 0x73, 0x65, 0x52, 0x0a, 0x63, 0x6f, 0x6c, 0x6c, 0x43, 0x6c, 0x61, 0x75, 0x73, + 0x65, 0x12, 0x30, 0x0a, 0x0b, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x72, 0x61, 0x69, 0x6e, 0x74, 0x73, + 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, + 0x79, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x0b, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x72, 0x61, 0x69, + 0x6e, 0x74, 0x73, 0x22, 0x50, 0x0a, 0x0c, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x62, 0x53, + 0x74, 0x6d, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x64, 0x62, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x06, 0x64, 0x62, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x28, 0x0a, 0x07, 0x6f, + 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, + 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x07, 0x6f, 0x70, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x6e, 0x0a, 0x0a, 0x44, 0x72, 0x6f, 0x70, 0x64, 0x62, 0x53, + 0x74, 0x6d, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x64, 0x62, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x06, 0x64, 0x62, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x6d, + 0x69, 0x73, 0x73, 0x69, 0x6e, 0x67, 0x5f, 0x6f, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, + 0x0a, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6e, 0x67, 0x5f, 0x6f, 0x6b, 0x12, 0x28, 0x0a, 0x07, 0x6f, + 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, + 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x07, 0x6f, 0x70, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x7e, 0x0a, 0x0a, 0x56, 0x61, 0x63, 0x75, 0x75, 0x6d, 0x53, + 0x74, 0x6d, 0x74, 0x12, 0x28, 0x0a, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, + 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x22, 0x0a, + 0x04, 0x72, 0x65, 0x6c, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x67, + 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x04, 0x72, 0x65, 0x6c, + 0x73, 0x12, 0x22, 0x0a, 0x0c, 0x69, 0x73, 0x5f, 0x76, 0x61, 0x63, 0x75, 0x75, 0x6d, 0x63, 0x6d, + 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x69, 0x73, 0x5f, 0x76, 0x61, 0x63, 0x75, + 0x75, 0x6d, 0x63, 0x6d, 0x64, 0x22, 0x5d, 0x0a, 0x0b, 0x45, 0x78, 0x70, 0x6c, 0x61, 0x69, 0x6e, + 0x53, 0x74, 0x6d, 0x74, 0x12, 0x24, 0x0a, 0x05, 0x71, 0x75, 0x65, 0x72, 0x79, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4e, + 0x6f, 0x64, 0x65, 0x52, 0x05, 0x71, 0x75, 0x65, 0x72, 0x79, 0x12, 0x28, 0x0a, 0x07, 0x6f, 0x70, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x67, + 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x07, 0x6f, 0x70, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x22, 0xe1, 0x01, 0x0a, 0x11, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, + 0x61, 0x62, 0x6c, 0x65, 0x41, 0x73, 0x53, 0x74, 0x6d, 0x74, 0x12, 0x24, 0x0a, 0x05, 0x71, 0x75, + 0x65, 0x72, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x67, 0x5f, 0x71, + 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x05, 0x71, 0x75, 0x65, 0x72, 0x79, + 0x12, 0x28, 0x0a, 0x04, 0x69, 0x6e, 0x74, 0x6f, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, + 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x49, 0x6e, 0x74, 0x6f, 0x43, 0x6c, + 0x61, 0x75, 0x73, 0x65, 0x52, 0x04, 0x69, 0x6e, 0x74, 0x6f, 0x12, 0x2e, 0x0a, 0x07, 0x72, 0x65, + 0x6c, 0x6b, 0x69, 0x6e, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x14, 0x2e, 0x70, 0x67, + 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x54, 0x79, 0x70, + 0x65, 0x52, 0x07, 0x72, 0x65, 0x6c, 0x6b, 0x69, 0x6e, 0x64, 0x12, 0x26, 0x0a, 0x0e, 0x69, 0x73, + 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x5f, 0x69, 0x6e, 0x74, 0x6f, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x08, 0x52, 0x0e, 0x69, 0x73, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x5f, 0x69, 0x6e, + 0x74, 0x6f, 0x12, 0x24, 0x0a, 0x0d, 0x69, 0x66, 0x5f, 0x6e, 0x6f, 0x74, 0x5f, 0x65, 0x78, 0x69, + 0x73, 0x74, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x69, 0x66, 0x5f, 0x6e, 0x6f, + 0x74, 0x5f, 0x65, 0x78, 0x69, 0x73, 0x74, 0x73, 0x22, 0xce, 0x01, 0x0a, 0x0d, 0x43, 0x72, 0x65, + 0x61, 0x74, 0x65, 0x53, 0x65, 0x71, 0x53, 0x74, 0x6d, 0x74, 0x12, 0x2e, 0x0a, 0x08, 0x73, 0x65, + 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x70, + 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x56, 0x61, 0x72, + 0x52, 0x08, 0x73, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x28, 0x0a, 0x07, 0x6f, 0x70, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x67, + 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x07, 0x6f, 0x70, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x19, 0x0a, 0x08, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x5f, 0x69, 0x64, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x07, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x49, 0x64, 0x12, + 0x22, 0x0a, 0x0c, 0x66, 0x6f, 0x72, 0x5f, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x66, 0x6f, 0x72, 0x5f, 0x69, 0x64, 0x65, 0x6e, 0x74, + 0x69, 0x74, 0x79, 0x12, 0x24, 0x0a, 0x0d, 0x69, 0x66, 0x5f, 0x6e, 0x6f, 0x74, 0x5f, 0x65, 0x78, + 0x69, 0x73, 0x74, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x69, 0x66, 0x5f, 0x6e, + 0x6f, 0x74, 0x5f, 0x65, 0x78, 0x69, 0x73, 0x74, 0x73, 0x22, 0xac, 0x01, 0x0a, 0x0c, 0x41, 0x6c, + 0x74, 0x65, 0x72, 0x53, 0x65, 0x71, 0x53, 0x74, 0x6d, 0x74, 0x12, 0x2e, 0x0a, 0x08, 0x73, 0x65, + 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x70, + 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x56, 0x61, 0x72, + 0x52, 0x08, 0x73, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x28, 0x0a, 0x07, 0x6f, 0x70, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x67, + 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x07, 0x6f, 0x70, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x22, 0x0a, 0x0c, 0x66, 0x6f, 0x72, 0x5f, 0x69, 0x64, 0x65, 0x6e, + 0x74, 0x69, 0x74, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x66, 0x6f, 0x72, 0x5f, + 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x12, 0x1e, 0x0a, 0x0a, 0x6d, 0x69, 0x73, 0x73, + 0x69, 0x6e, 0x67, 0x5f, 0x6f, 0x6b, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x6d, 0x69, + 0x73, 0x73, 0x69, 0x6e, 0x67, 0x5f, 0x6f, 0x6b, 0x22, 0x94, 0x01, 0x0a, 0x0f, 0x56, 0x61, 0x72, + 0x69, 0x61, 0x62, 0x6c, 0x65, 0x53, 0x65, 0x74, 0x53, 0x74, 0x6d, 0x74, 0x12, 0x2d, 0x0a, 0x04, + 0x6b, 0x69, 0x6e, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x19, 0x2e, 0x70, 0x67, 0x5f, + 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x53, 0x65, + 0x74, 0x4b, 0x69, 0x6e, 0x64, 0x52, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, + 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, + 0x22, 0x0a, 0x04, 0x61, 0x72, 0x67, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, + 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x04, 0x61, + 0x72, 0x67, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x69, 0x73, 0x5f, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x69, 0x73, 0x5f, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x22, + 0x26, 0x0a, 0x10, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x53, 0x68, 0x6f, 0x77, 0x53, + 0x74, 0x6d, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x3c, 0x0a, 0x0b, 0x44, 0x69, 0x73, 0x63, 0x61, + 0x72, 0x64, 0x53, 0x74, 0x6d, 0x74, 0x12, 0x2d, 0x0a, 0x06, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x15, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, + 0x79, 0x2e, 0x44, 0x69, 0x73, 0x63, 0x61, 0x72, 0x64, 0x4d, 0x6f, 0x64, 0x65, 0x52, 0x06, 0x74, + 0x61, 0x72, 0x67, 0x65, 0x74, 0x22, 0x9c, 0x04, 0x0a, 0x0e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, + 0x54, 0x72, 0x69, 0x67, 0x53, 0x74, 0x6d, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x74, 0x72, 0x69, 0x67, + 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x74, 0x72, 0x69, 0x67, + 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x2e, 0x0a, 0x08, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, + 0x79, 0x2e, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x56, 0x61, 0x72, 0x52, 0x08, 0x72, 0x65, 0x6c, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2a, 0x0a, 0x08, 0x66, 0x75, 0x6e, 0x63, 0x6e, 0x61, 0x6d, 0x65, + 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, + 0x79, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x08, 0x66, 0x75, 0x6e, 0x63, 0x6e, 0x61, 0x6d, 0x65, + 0x12, 0x22, 0x0a, 0x04, 0x61, 0x72, 0x67, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, + 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x04, + 0x61, 0x72, 0x67, 0x73, 0x12, 0x10, 0x0a, 0x03, 0x72, 0x6f, 0x77, 0x18, 0x05, 0x20, 0x01, 0x28, + 0x08, 0x52, 0x03, 0x72, 0x6f, 0x77, 0x12, 0x16, 0x0a, 0x06, 0x74, 0x69, 0x6d, 0x69, 0x6e, 0x67, + 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x74, 0x69, 0x6d, 0x69, 0x6e, 0x67, 0x12, 0x16, + 0x0a, 0x06, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, + 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x28, 0x0a, 0x07, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, + 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, + 0x72, 0x79, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x07, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x73, + 0x12, 0x2f, 0x0a, 0x0b, 0x77, 0x68, 0x65, 0x6e, 0x5f, 0x63, 0x6c, 0x61, 0x75, 0x73, 0x65, 0x18, + 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, + 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x0a, 0x77, 0x68, 0x65, 0x6e, 0x43, 0x6c, 0x61, 0x75, 0x73, + 0x65, 0x12, 0x22, 0x0a, 0x0c, 0x69, 0x73, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x72, 0x61, 0x69, 0x6e, + 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x69, 0x73, 0x63, 0x6f, 0x6e, 0x73, 0x74, + 0x72, 0x61, 0x69, 0x6e, 0x74, 0x12, 0x37, 0x0a, 0x0f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x69, 0x74, + 0x69, 0x6f, 0x6e, 0x5f, 0x72, 0x65, 0x6c, 0x73, 0x18, 0x0b, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, + 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x0e, + 0x74, 0x72, 0x61, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x6c, 0x73, 0x12, 0x1e, + 0x0a, 0x0a, 0x64, 0x65, 0x66, 0x65, 0x72, 0x72, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x0c, 0x20, 0x01, + 0x28, 0x08, 0x52, 0x0a, 0x64, 0x65, 0x66, 0x65, 0x72, 0x72, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x22, + 0x0a, 0x0c, 0x69, 0x6e, 0x69, 0x74, 0x64, 0x65, 0x66, 0x65, 0x72, 0x72, 0x65, 0x64, 0x18, 0x0d, + 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x69, 0x6e, 0x69, 0x74, 0x64, 0x65, 0x66, 0x65, 0x72, 0x72, + 0x65, 0x64, 0x12, 0x30, 0x0a, 0x09, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x72, 0x72, 0x65, 0x6c, 0x18, + 0x0e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, + 0x2e, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x56, 0x61, 0x72, 0x52, 0x09, 0x63, 0x6f, 0x6e, 0x73, 0x74, + 0x72, 0x72, 0x65, 0x6c, 0x22, 0xed, 0x01, 0x0a, 0x0f, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, + 0x4c, 0x61, 0x6e, 0x67, 0x53, 0x74, 0x6d, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x72, 0x65, 0x70, 0x6c, + 0x61, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x72, 0x65, 0x70, 0x6c, 0x61, + 0x63, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x70, 0x6c, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x06, 0x70, 0x6c, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x2c, 0x0a, 0x09, 0x70, 0x6c, + 0x68, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x72, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, + 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x09, 0x70, + 0x6c, 0x68, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x72, 0x12, 0x2a, 0x0a, 0x08, 0x70, 0x6c, 0x69, 0x6e, + 0x6c, 0x69, 0x6e, 0x65, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x67, 0x5f, + 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x08, 0x70, 0x6c, 0x69, 0x6e, + 0x6c, 0x69, 0x6e, 0x65, 0x12, 0x30, 0x0a, 0x0b, 0x70, 0x6c, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, + 0x74, 0x6f, 0x72, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x67, 0x5f, 0x71, + 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x0b, 0x70, 0x6c, 0x76, 0x61, 0x6c, + 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x1c, 0x0a, 0x09, 0x70, 0x6c, 0x74, 0x72, 0x75, 0x73, + 0x74, 0x65, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x70, 0x6c, 0x74, 0x72, 0x75, + 0x73, 0x74, 0x65, 0x64, 0x22, 0x84, 0x01, 0x0a, 0x0e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, + 0x6f, 0x6c, 0x65, 0x53, 0x74, 0x6d, 0x74, 0x12, 0x34, 0x0a, 0x09, 0x73, 0x74, 0x6d, 0x74, 0x5f, + 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x16, 0x2e, 0x70, 0x67, 0x5f, + 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x52, 0x6f, 0x6c, 0x65, 0x53, 0x74, 0x6d, 0x74, 0x54, 0x79, + 0x70, 0x65, 0x52, 0x09, 0x73, 0x74, 0x6d, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x12, 0x12, 0x0a, + 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x72, 0x6f, 0x6c, + 0x65, 0x12, 0x28, 0x0a, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x03, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4e, 0x6f, + 0x64, 0x65, 0x52, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x79, 0x0a, 0x0d, 0x41, + 0x6c, 0x74, 0x65, 0x72, 0x52, 0x6f, 0x6c, 0x65, 0x53, 0x74, 0x6d, 0x74, 0x12, 0x26, 0x0a, 0x04, + 0x72, 0x6f, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x70, 0x67, 0x5f, + 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x52, 0x6f, 0x6c, 0x65, 0x53, 0x70, 0x65, 0x63, 0x52, 0x04, + 0x72, 0x6f, 0x6c, 0x65, 0x12, 0x28, 0x0a, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, + 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, + 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x16, + 0x0a, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, + 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x54, 0x0a, 0x0c, 0x44, 0x72, 0x6f, 0x70, 0x52, 0x6f, + 0x6c, 0x65, 0x53, 0x74, 0x6d, 0x74, 0x12, 0x24, 0x0a, 0x05, 0x72, 0x6f, 0x6c, 0x65, 0x73, 0x18, + 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, + 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x05, 0x72, 0x6f, 0x6c, 0x65, 0x73, 0x12, 0x1e, 0x0a, 0x0a, + 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6e, 0x67, 0x5f, 0x6f, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, + 0x52, 0x0a, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6e, 0x67, 0x5f, 0x6f, 0x6b, 0x22, 0x64, 0x0a, 0x08, + 0x4c, 0x6f, 0x63, 0x6b, 0x53, 0x74, 0x6d, 0x74, 0x12, 0x2c, 0x0a, 0x09, 0x72, 0x65, 0x6c, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x67, + 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x09, 0x72, 0x65, 0x6c, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x6d, 0x6f, 0x64, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x6e, 0x6f, + 0x77, 0x61, 0x69, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x6e, 0x6f, 0x77, 0x61, + 0x69, 0x74, 0x22, 0x62, 0x0a, 0x12, 0x43, 0x6f, 0x6e, 0x73, 0x74, 0x72, 0x61, 0x69, 0x6e, 0x74, + 0x73, 0x53, 0x65, 0x74, 0x53, 0x74, 0x6d, 0x74, 0x12, 0x30, 0x0a, 0x0b, 0x63, 0x6f, 0x6e, 0x73, + 0x74, 0x72, 0x61, 0x69, 0x6e, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, + 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x0b, 0x63, + 0x6f, 0x6e, 0x73, 0x74, 0x72, 0x61, 0x69, 0x6e, 0x74, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x64, 0x65, + 0x66, 0x65, 0x72, 0x72, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x64, 0x65, + 0x66, 0x65, 0x72, 0x72, 0x65, 0x64, 0x22, 0xbc, 0x01, 0x0a, 0x0b, 0x52, 0x65, 0x69, 0x6e, 0x64, + 0x65, 0x78, 0x53, 0x74, 0x6d, 0x74, 0x12, 0x2f, 0x0a, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1b, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, + 0x52, 0x65, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x54, 0x79, 0x70, + 0x65, 0x52, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x12, 0x2e, 0x0a, 0x08, 0x72, 0x65, 0x6c, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x70, 0x67, 0x5f, 0x71, + 0x75, 0x65, 0x72, 0x79, 0x2e, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x56, 0x61, 0x72, 0x52, 0x08, 0x72, + 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x6f, + 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x6f, 0x70, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x1e, 0x0a, 0x0a, 0x63, 0x6f, 0x6e, 0x63, 0x75, 0x72, 0x72, + 0x65, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x63, 0x6f, 0x6e, 0x63, 0x75, + 0x72, 0x72, 0x65, 0x6e, 0x74, 0x22, 0x10, 0x0a, 0x0e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x50, 0x6f, + 0x69, 0x6e, 0x74, 0x53, 0x74, 0x6d, 0x74, 0x22, 0xb9, 0x01, 0x0a, 0x10, 0x43, 0x72, 0x65, 0x61, + 0x74, 0x65, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x53, 0x74, 0x6d, 0x74, 0x12, 0x1e, 0x0a, 0x0a, + 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0a, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x2e, 0x0a, 0x08, + 0x61, 0x75, 0x74, 0x68, 0x72, 0x6f, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, + 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x52, 0x6f, 0x6c, 0x65, 0x53, 0x70, + 0x65, 0x63, 0x52, 0x08, 0x61, 0x75, 0x74, 0x68, 0x72, 0x6f, 0x6c, 0x65, 0x12, 0x2f, 0x0a, 0x0b, + 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x5f, 0x65, 0x6c, 0x74, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4e, 0x6f, 0x64, + 0x65, 0x52, 0x0a, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x45, 0x6c, 0x74, 0x73, 0x12, 0x24, 0x0a, + 0x0d, 0x69, 0x66, 0x5f, 0x6e, 0x6f, 0x74, 0x5f, 0x65, 0x78, 0x69, 0x73, 0x74, 0x73, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x69, 0x66, 0x5f, 0x6e, 0x6f, 0x74, 0x5f, 0x65, 0x78, 0x69, + 0x73, 0x74, 0x73, 0x22, 0x55, 0x0a, 0x11, 0x41, 0x6c, 0x74, 0x65, 0x72, 0x44, 0x61, 0x74, 0x61, + 0x62, 0x61, 0x73, 0x65, 0x53, 0x74, 0x6d, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x64, 0x62, 0x6e, 0x61, + 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x64, 0x62, 0x6e, 0x61, 0x6d, 0x65, + 0x12, 0x28, 0x0a, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4e, 0x6f, 0x64, + 0x65, 0x52, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x63, 0x0a, 0x14, 0x41, 0x6c, + 0x74, 0x65, 0x72, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x53, 0x65, 0x74, 0x53, 0x74, + 0x6d, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x64, 0x62, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x06, 0x64, 0x62, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x33, 0x0a, 0x07, 0x73, 0x65, + 0x74, 0x73, 0x74, 0x6d, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x70, 0x67, + 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x53, + 0x65, 0x74, 0x53, 0x74, 0x6d, 0x74, 0x52, 0x07, 0x73, 0x65, 0x74, 0x73, 0x74, 0x6d, 0x74, 0x22, + 0x8b, 0x01, 0x0a, 0x10, 0x41, 0x6c, 0x74, 0x65, 0x72, 0x52, 0x6f, 0x6c, 0x65, 0x53, 0x65, 0x74, + 0x53, 0x74, 0x6d, 0x74, 0x12, 0x26, 0x0a, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x52, 0x6f, + 0x6c, 0x65, 0x53, 0x70, 0x65, 0x63, 0x52, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x12, 0x1a, 0x0a, 0x08, + 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, + 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x12, 0x33, 0x0a, 0x07, 0x73, 0x65, 0x74, 0x73, + 0x74, 0x6d, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x70, 0x67, 0x5f, 0x71, + 0x75, 0x65, 0x72, 0x79, 0x2e, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x53, 0x65, 0x74, + 0x53, 0x74, 0x6d, 0x74, 0x52, 0x07, 0x73, 0x65, 0x74, 0x73, 0x74, 0x6d, 0x74, 0x22, 0xea, 0x01, + 0x0a, 0x14, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x69, + 0x6f, 0x6e, 0x53, 0x74, 0x6d, 0x74, 0x12, 0x38, 0x0a, 0x0f, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, + 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x0e, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, + 0x0f, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, + 0x12, 0x2c, 0x0a, 0x11, 0x66, 0x6f, 0x72, 0x5f, 0x65, 0x6e, 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, + 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x66, 0x6f, 0x72, + 0x5f, 0x65, 0x6e, 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x2a, + 0x0a, 0x10, 0x74, 0x6f, 0x5f, 0x65, 0x6e, 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x6e, 0x61, + 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x74, 0x6f, 0x5f, 0x65, 0x6e, 0x63, + 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x2c, 0x0a, 0x09, 0x66, 0x75, + 0x6e, 0x63, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, + 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x09, 0x66, + 0x75, 0x6e, 0x63, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x64, 0x65, 0x66, 0x18, + 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x03, 0x64, 0x65, 0x66, 0x22, 0xf1, 0x01, 0x0a, 0x0e, 0x43, + 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x61, 0x73, 0x74, 0x53, 0x74, 0x6d, 0x74, 0x12, 0x32, 0x0a, + 0x0a, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x12, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x54, 0x79, 0x70, + 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x52, 0x0a, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x74, 0x79, 0x70, + 0x65, 0x12, 0x32, 0x0a, 0x0a, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x74, 0x79, 0x70, 0x65, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, + 0x2e, 0x54, 0x79, 0x70, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x52, 0x0a, 0x74, 0x61, 0x72, 0x67, 0x65, + 0x74, 0x74, 0x79, 0x70, 0x65, 0x12, 0x2c, 0x0a, 0x04, 0x66, 0x75, 0x6e, 0x63, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4f, + 0x62, 0x6a, 0x65, 0x63, 0x74, 0x57, 0x69, 0x74, 0x68, 0x41, 0x72, 0x67, 0x73, 0x52, 0x04, 0x66, + 0x75, 0x6e, 0x63, 0x12, 0x33, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x0e, 0x32, 0x19, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, + 0x43, 0x6f, 0x65, 0x72, 0x63, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x52, + 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x69, 0x6e, 0x6f, 0x75, + 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x69, 0x6e, 0x6f, 0x75, 0x74, 0x22, 0x86, + 0x02, 0x0a, 0x11, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4f, 0x70, 0x43, 0x6c, 0x61, 0x73, 0x73, + 0x53, 0x74, 0x6d, 0x74, 0x12, 0x30, 0x0a, 0x0b, 0x6f, 0x70, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x6e, + 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x67, 0x5f, 0x71, + 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x0b, 0x6f, 0x70, 0x63, 0x6c, 0x61, + 0x73, 0x73, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x32, 0x0a, 0x0c, 0x6f, 0x70, 0x66, 0x61, 0x6d, 0x69, + 0x6c, 0x79, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, + 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x0c, 0x6f, 0x70, + 0x66, 0x61, 0x6d, 0x69, 0x6c, 0x79, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x6d, + 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x61, 0x6d, 0x6e, 0x61, + 0x6d, 0x65, 0x12, 0x2e, 0x0a, 0x08, 0x64, 0x61, 0x74, 0x61, 0x74, 0x79, 0x70, 0x65, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, + 0x54, 0x79, 0x70, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x52, 0x08, 0x64, 0x61, 0x74, 0x61, 0x74, 0x79, + 0x70, 0x65, 0x12, 0x24, 0x0a, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4e, 0x6f, 0x64, + 0x65, 0x52, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x69, 0x73, 0x5f, 0x64, + 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x69, 0x73, + 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x22, 0x60, 0x0a, 0x12, 0x43, 0x72, 0x65, 0x61, 0x74, + 0x65, 0x4f, 0x70, 0x46, 0x61, 0x6d, 0x69, 0x6c, 0x79, 0x53, 0x74, 0x6d, 0x74, 0x12, 0x32, 0x0a, + 0x0c, 0x6f, 0x70, 0x66, 0x61, 0x6d, 0x69, 0x6c, 0x79, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4e, + 0x6f, 0x64, 0x65, 0x52, 0x0c, 0x6f, 0x70, 0x66, 0x61, 0x6d, 0x69, 0x6c, 0x79, 0x6e, 0x61, 0x6d, + 0x65, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x6d, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x06, 0x61, 0x6d, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x9e, 0x01, 0x0a, 0x11, 0x41, 0x6c, + 0x74, 0x65, 0x72, 0x4f, 0x70, 0x46, 0x61, 0x6d, 0x69, 0x6c, 0x79, 0x53, 0x74, 0x6d, 0x74, 0x12, + 0x32, 0x0a, 0x0c, 0x6f, 0x70, 0x66, 0x61, 0x6d, 0x69, 0x6c, 0x79, 0x6e, 0x61, 0x6d, 0x65, 0x18, + 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, + 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x0c, 0x6f, 0x70, 0x66, 0x61, 0x6d, 0x69, 0x6c, 0x79, 0x6e, + 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x6d, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x06, 0x61, 0x6d, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x17, 0x0a, 0x07, 0x69, + 0x73, 0x5f, 0x64, 0x72, 0x6f, 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x69, 0x73, + 0x44, 0x72, 0x6f, 0x70, 0x12, 0x24, 0x0a, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x04, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4e, + 0x6f, 0x64, 0x65, 0x52, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x22, 0x73, 0x0a, 0x0b, 0x50, 0x72, + 0x65, 0x70, 0x61, 0x72, 0x65, 0x53, 0x74, 0x6d, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, + 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x2a, 0x0a, + 0x08, 0x61, 0x72, 0x67, 0x74, 0x79, 0x70, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x0e, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, + 0x08, 0x61, 0x72, 0x67, 0x74, 0x79, 0x70, 0x65, 0x73, 0x12, 0x24, 0x0a, 0x05, 0x71, 0x75, 0x65, + 0x72, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, + 0x65, 0x72, 0x79, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x05, 0x71, 0x75, 0x65, 0x72, 0x79, 0x22, + 0x49, 0x0a, 0x0b, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0x53, 0x74, 0x6d, 0x74, 0x12, 0x12, + 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, + 0x6d, 0x65, 0x12, 0x26, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x02, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4e, 0x6f, + 0x64, 0x65, 0x52, 0x06, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x22, 0x24, 0x0a, 0x0e, 0x44, 0x65, + 0x61, 0x6c, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x65, 0x53, 0x74, 0x6d, 0x74, 0x12, 0x12, 0x0a, 0x04, + 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, + 0x22, 0x73, 0x0a, 0x11, 0x44, 0x65, 0x63, 0x6c, 0x61, 0x72, 0x65, 0x43, 0x75, 0x72, 0x73, 0x6f, + 0x72, 0x53, 0x74, 0x6d, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x70, 0x6f, 0x72, 0x74, 0x61, 0x6c, 0x6e, + 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x70, 0x6f, 0x72, 0x74, 0x61, + 0x6c, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, + 0x24, 0x0a, 0x05, 0x71, 0x75, 0x65, 0x72, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, + 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x05, + 0x71, 0x75, 0x65, 0x72, 0x79, 0x22, 0xae, 0x01, 0x0a, 0x14, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, + 0x54, 0x61, 0x62, 0x6c, 0x65, 0x53, 0x70, 0x61, 0x63, 0x65, 0x53, 0x74, 0x6d, 0x74, 0x12, 0x26, + 0x0a, 0x0e, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x6e, 0x61, 0x6d, 0x65, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x70, 0x61, + 0x63, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x28, 0x0a, 0x05, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, + 0x2e, 0x52, 0x6f, 0x6c, 0x65, 0x53, 0x70, 0x65, 0x63, 0x52, 0x05, 0x6f, 0x77, 0x6e, 0x65, 0x72, + 0x12, 0x1a, 0x0a, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x28, 0x0a, 0x07, + 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, + 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x07, 0x6f, + 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x5c, 0x0a, 0x12, 0x44, 0x72, 0x6f, 0x70, 0x54, 0x61, + 0x62, 0x6c, 0x65, 0x53, 0x70, 0x61, 0x63, 0x65, 0x53, 0x74, 0x6d, 0x74, 0x12, 0x26, 0x0a, 0x0e, + 0x74, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, + 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6e, 0x67, 0x5f, + 0x6f, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6e, + 0x67, 0x5f, 0x6f, 0x6b, 0x22, 0xe9, 0x01, 0x0a, 0x16, 0x41, 0x6c, 0x74, 0x65, 0x72, 0x4f, 0x62, + 0x6a, 0x65, 0x63, 0x74, 0x44, 0x65, 0x70, 0x65, 0x6e, 0x64, 0x73, 0x53, 0x74, 0x6d, 0x74, 0x12, + 0x35, 0x0a, 0x0b, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0e, 0x32, 0x14, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, + 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0a, 0x6f, 0x62, 0x6a, 0x65, + 0x63, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x2e, 0x0a, 0x08, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, + 0x65, 0x72, 0x79, 0x2e, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x56, 0x61, 0x72, 0x52, 0x08, 0x72, 0x65, + 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x26, 0x0a, 0x06, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, + 0x79, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x06, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x28, + 0x0a, 0x07, 0x65, 0x78, 0x74, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x0e, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, + 0x07, 0x65, 0x78, 0x74, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x6d, 0x6f, + 0x76, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, + 0x22, 0xe4, 0x01, 0x0a, 0x15, 0x41, 0x6c, 0x74, 0x65, 0x72, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, + 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x53, 0x74, 0x6d, 0x74, 0x12, 0x35, 0x0a, 0x0b, 0x6f, 0x62, + 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, + 0x14, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4f, 0x62, 0x6a, 0x65, 0x63, + 0x74, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0a, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x54, 0x79, 0x70, + 0x65, 0x12, 0x2e, 0x0a, 0x08, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x52, + 0x61, 0x6e, 0x67, 0x65, 0x56, 0x61, 0x72, 0x52, 0x08, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x12, 0x26, 0x0a, 0x06, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4e, 0x6f, 0x64, + 0x65, 0x52, 0x06, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x65, 0x77, + 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x65, + 0x77, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x12, 0x1e, 0x0a, 0x0a, 0x6d, 0x69, 0x73, 0x73, 0x69, + 0x6e, 0x67, 0x5f, 0x6f, 0x6b, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x6d, 0x69, 0x73, + 0x73, 0x69, 0x6e, 0x67, 0x5f, 0x6f, 0x6b, 0x22, 0xcf, 0x01, 0x0a, 0x0e, 0x41, 0x6c, 0x74, 0x65, + 0x72, 0x4f, 0x77, 0x6e, 0x65, 0x72, 0x53, 0x74, 0x6d, 0x74, 0x12, 0x35, 0x0a, 0x0b, 0x6f, 0x62, + 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, + 0x14, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4f, 0x62, 0x6a, 0x65, 0x63, + 0x74, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0a, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x54, 0x79, 0x70, + 0x65, 0x12, 0x2e, 0x0a, 0x08, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x52, + 0x61, 0x6e, 0x67, 0x65, 0x56, 0x61, 0x72, 0x52, 0x08, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x12, 0x26, 0x0a, 0x06, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4e, 0x6f, 0x64, + 0x65, 0x52, 0x06, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x2e, 0x0a, 0x08, 0x6e, 0x65, 0x77, + 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x70, 0x67, + 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x52, 0x6f, 0x6c, 0x65, 0x53, 0x70, 0x65, 0x63, 0x52, + 0x08, 0x6e, 0x65, 0x77, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x22, 0x73, 0x0a, 0x11, 0x41, 0x6c, 0x74, + 0x65, 0x72, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x53, 0x74, 0x6d, 0x74, 0x12, 0x34, + 0x0a, 0x08, 0x6f, 0x70, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x18, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4f, 0x62, 0x6a, 0x65, + 0x63, 0x74, 0x57, 0x69, 0x74, 0x68, 0x41, 0x72, 0x67, 0x73, 0x52, 0x08, 0x6f, 0x70, 0x65, 0x72, + 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x28, 0x0a, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, + 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, + 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x66, + 0x0a, 0x0d, 0x41, 0x6c, 0x74, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x53, 0x74, 0x6d, 0x74, 0x12, + 0x2b, 0x0a, 0x09, 0x74, 0x79, 0x70, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4e, 0x6f, + 0x64, 0x65, 0x52, 0x08, 0x74, 0x79, 0x70, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x28, 0x0a, 0x07, + 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, + 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x07, 0x6f, + 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x69, 0x0a, 0x0d, 0x44, 0x72, 0x6f, 0x70, 0x4f, 0x77, + 0x6e, 0x65, 0x64, 0x53, 0x74, 0x6d, 0x74, 0x12, 0x24, 0x0a, 0x05, 0x72, 0x6f, 0x6c, 0x65, 0x73, + 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, + 0x79, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x05, 0x72, 0x6f, 0x6c, 0x65, 0x73, 0x12, 0x32, 0x0a, + 0x08, 0x62, 0x65, 0x68, 0x61, 0x76, 0x69, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, + 0x16, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x44, 0x72, 0x6f, 0x70, 0x42, + 0x65, 0x68, 0x61, 0x76, 0x69, 0x6f, 0x72, 0x52, 0x08, 0x62, 0x65, 0x68, 0x61, 0x76, 0x69, 0x6f, + 0x72, 0x22, 0x67, 0x0a, 0x11, 0x52, 0x65, 0x61, 0x73, 0x73, 0x69, 0x67, 0x6e, 0x4f, 0x77, 0x6e, + 0x65, 0x64, 0x53, 0x74, 0x6d, 0x74, 0x12, 0x24, 0x0a, 0x05, 0x72, 0x6f, 0x6c, 0x65, 0x73, 0x18, + 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, + 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x05, 0x72, 0x6f, 0x6c, 0x65, 0x73, 0x12, 0x2c, 0x0a, 0x07, + 0x6e, 0x65, 0x77, 0x72, 0x6f, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, + 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x52, 0x6f, 0x6c, 0x65, 0x53, 0x70, 0x65, + 0x63, 0x52, 0x07, 0x6e, 0x65, 0x77, 0x72, 0x6f, 0x6c, 0x65, 0x22, 0x71, 0x0a, 0x11, 0x43, 0x6f, + 0x6d, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x65, 0x54, 0x79, 0x70, 0x65, 0x53, 0x74, 0x6d, 0x74, 0x12, + 0x2c, 0x0a, 0x07, 0x74, 0x79, 0x70, 0x65, 0x76, 0x61, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x12, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x52, 0x61, 0x6e, 0x67, + 0x65, 0x56, 0x61, 0x72, 0x52, 0x07, 0x74, 0x79, 0x70, 0x65, 0x76, 0x61, 0x72, 0x12, 0x2e, 0x0a, + 0x0a, 0x63, 0x6f, 0x6c, 0x64, 0x65, 0x66, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x02, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4e, 0x6f, 0x64, + 0x65, 0x52, 0x0a, 0x63, 0x6f, 0x6c, 0x64, 0x65, 0x66, 0x6c, 0x69, 0x73, 0x74, 0x22, 0x61, 0x0a, + 0x0e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x45, 0x6e, 0x75, 0x6d, 0x53, 0x74, 0x6d, 0x74, 0x12, + 0x2b, 0x0a, 0x09, 0x74, 0x79, 0x70, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4e, 0x6f, + 0x64, 0x65, 0x52, 0x08, 0x74, 0x79, 0x70, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x22, 0x0a, 0x04, + 0x76, 0x61, 0x6c, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x67, 0x5f, + 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x04, 0x76, 0x61, 0x6c, 0x73, + 0x22, 0x66, 0x0a, 0x0f, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x53, + 0x74, 0x6d, 0x74, 0x12, 0x2b, 0x0a, 0x09, 0x74, 0x79, 0x70, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, + 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, + 0x79, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x08, 0x74, 0x79, 0x70, 0x65, 0x4e, 0x61, 0x6d, 0x65, + 0x12, 0x26, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x0e, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4e, 0x6f, 0x64, 0x65, + 0x52, 0x06, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x22, 0xf5, 0x01, 0x0a, 0x0d, 0x41, 0x6c, 0x74, + 0x65, 0x72, 0x45, 0x6e, 0x75, 0x6d, 0x53, 0x74, 0x6d, 0x74, 0x12, 0x2b, 0x0a, 0x09, 0x74, 0x79, + 0x70, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, + 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x08, 0x74, + 0x79, 0x70, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x17, 0x0a, 0x07, 0x6f, 0x6c, 0x64, 0x5f, 0x76, + 0x61, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6f, 0x6c, 0x64, 0x56, 0x61, 0x6c, + 0x12, 0x17, 0x0a, 0x07, 0x6e, 0x65, 0x77, 0x5f, 0x76, 0x61, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x06, 0x6e, 0x65, 0x77, 0x56, 0x61, 0x6c, 0x12, 0x28, 0x0a, 0x10, 0x6e, 0x65, 0x77, + 0x5f, 0x76, 0x61, 0x6c, 0x5f, 0x6e, 0x65, 0x69, 0x67, 0x68, 0x62, 0x6f, 0x72, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x0e, 0x6e, 0x65, 0x77, 0x56, 0x61, 0x6c, 0x4e, 0x65, 0x69, 0x67, 0x68, + 0x62, 0x6f, 0x72, 0x12, 0x27, 0x0a, 0x10, 0x6e, 0x65, 0x77, 0x5f, 0x76, 0x61, 0x6c, 0x5f, 0x69, + 0x73, 0x5f, 0x61, 0x66, 0x74, 0x65, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x6e, + 0x65, 0x77, 0x56, 0x61, 0x6c, 0x49, 0x73, 0x41, 0x66, 0x74, 0x65, 0x72, 0x12, 0x32, 0x0a, 0x16, + 0x73, 0x6b, 0x69, 0x70, 0x5f, 0x69, 0x66, 0x5f, 0x6e, 0x65, 0x77, 0x5f, 0x76, 0x61, 0x6c, 0x5f, + 0x65, 0x78, 0x69, 0x73, 0x74, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x12, 0x73, 0x6b, + 0x69, 0x70, 0x49, 0x66, 0x4e, 0x65, 0x77, 0x56, 0x61, 0x6c, 0x45, 0x78, 0x69, 0x73, 0x74, 0x73, + 0x22, 0x6d, 0x0a, 0x15, 0x41, 0x6c, 0x74, 0x65, 0x72, 0x54, 0x53, 0x44, 0x69, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x61, 0x72, 0x79, 0x53, 0x74, 0x6d, 0x74, 0x12, 0x2a, 0x0a, 0x08, 0x64, 0x69, 0x63, + 0x74, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x67, + 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x08, 0x64, 0x69, 0x63, + 0x74, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x28, 0x0a, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, + 0x79, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, + 0x9f, 0x02, 0x0a, 0x18, 0x41, 0x6c, 0x74, 0x65, 0x72, 0x54, 0x53, 0x43, 0x6f, 0x6e, 0x66, 0x69, + 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x6d, 0x74, 0x12, 0x2f, 0x0a, 0x04, + 0x6b, 0x69, 0x6e, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1b, 0x2e, 0x70, 0x67, 0x5f, + 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x41, 0x6c, 0x74, 0x65, 0x72, 0x54, 0x53, 0x43, 0x6f, 0x6e, + 0x66, 0x69, 0x67, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x12, 0x28, 0x0a, + 0x07, 0x63, 0x66, 0x67, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, + 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x07, + 0x63, 0x66, 0x67, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x2c, 0x0a, 0x09, 0x74, 0x6f, 0x6b, 0x65, 0x6e, + 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x67, 0x5f, + 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x09, 0x74, 0x6f, 0x6b, 0x65, + 0x6e, 0x74, 0x79, 0x70, 0x65, 0x12, 0x24, 0x0a, 0x05, 0x64, 0x69, 0x63, 0x74, 0x73, 0x18, 0x04, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, + 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x05, 0x64, 0x69, 0x63, 0x74, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x6f, + 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x6f, + 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x72, 0x65, 0x70, 0x6c, 0x61, + 0x63, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x72, 0x65, 0x70, 0x6c, 0x61, 0x63, + 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6e, 0x67, 0x5f, 0x6f, 0x6b, 0x18, + 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6e, 0x67, 0x5f, 0x6f, + 0x6b, 0x22, 0x87, 0x01, 0x0a, 0x0d, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x46, 0x64, 0x77, 0x53, + 0x74, 0x6d, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x66, 0x64, 0x77, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x66, 0x64, 0x77, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x32, 0x0a, + 0x0c, 0x66, 0x75, 0x6e, 0x63, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x02, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4e, + 0x6f, 0x64, 0x65, 0x52, 0x0c, 0x66, 0x75, 0x6e, 0x63, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x12, 0x28, 0x0a, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x03, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4e, 0x6f, + 0x64, 0x65, 0x52, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x86, 0x01, 0x0a, 0x0c, + 0x41, 0x6c, 0x74, 0x65, 0x72, 0x46, 0x64, 0x77, 0x53, 0x74, 0x6d, 0x74, 0x12, 0x18, 0x0a, 0x07, + 0x66, 0x64, 0x77, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x66, + 0x64, 0x77, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x32, 0x0a, 0x0c, 0x66, 0x75, 0x6e, 0x63, 0x5f, 0x6f, + 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, + 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x0c, 0x66, 0x75, + 0x6e, 0x63, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x28, 0x0a, 0x07, 0x6f, 0x70, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x67, + 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x07, 0x6f, 0x70, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x22, 0xdd, 0x01, 0x0a, 0x17, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x46, + 0x6f, 0x72, 0x65, 0x69, 0x67, 0x6e, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x53, 0x74, 0x6d, 0x74, + 0x12, 0x1e, 0x0a, 0x0a, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, + 0x12, 0x1e, 0x0a, 0x0a, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x74, 0x79, 0x70, 0x65, + 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x66, 0x64, + 0x77, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x66, 0x64, 0x77, + 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x24, 0x0a, 0x0d, 0x69, 0x66, 0x5f, 0x6e, 0x6f, 0x74, 0x5f, 0x65, + 0x78, 0x69, 0x73, 0x74, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x69, 0x66, 0x5f, + 0x6e, 0x6f, 0x74, 0x5f, 0x65, 0x78, 0x69, 0x73, 0x74, 0x73, 0x12, 0x28, 0x0a, 0x07, 0x6f, 0x70, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x67, + 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x07, 0x6f, 0x70, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x9e, 0x01, 0x0a, 0x16, 0x41, 0x6c, 0x74, 0x65, 0x72, 0x46, 0x6f, + 0x72, 0x65, 0x69, 0x67, 0x6e, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x53, 0x74, 0x6d, 0x74, 0x12, + 0x1e, 0x0a, 0x0a, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x12, + 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x28, 0x0a, 0x07, 0x6f, 0x70, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x67, 0x5f, + 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x07, 0x6f, 0x70, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x12, 0x20, 0x0a, 0x0b, 0x68, 0x61, 0x73, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, + 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x68, 0x61, 0x73, 0x5f, 0x76, 0x65, + 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0xaf, 0x01, 0x0a, 0x15, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, + 0x55, 0x73, 0x65, 0x72, 0x4d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x53, 0x74, 0x6d, 0x74, 0x12, + 0x26, 0x0a, 0x04, 0x75, 0x73, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, + 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x52, 0x6f, 0x6c, 0x65, 0x53, 0x70, 0x65, + 0x63, 0x52, 0x04, 0x75, 0x73, 0x65, 0x72, 0x12, 0x1e, 0x0a, 0x0a, 0x73, 0x65, 0x72, 0x76, 0x65, + 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x65, 0x72, + 0x76, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x24, 0x0a, 0x0d, 0x69, 0x66, 0x5f, 0x6e, 0x6f, + 0x74, 0x5f, 0x65, 0x78, 0x69, 0x73, 0x74, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, + 0x69, 0x66, 0x5f, 0x6e, 0x6f, 0x74, 0x5f, 0x65, 0x78, 0x69, 0x73, 0x74, 0x73, 0x12, 0x28, 0x0a, + 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, + 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x07, + 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x88, 0x01, 0x0a, 0x14, 0x41, 0x6c, 0x74, 0x65, + 0x72, 0x55, 0x73, 0x65, 0x72, 0x4d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x53, 0x74, 0x6d, 0x74, + 0x12, 0x26, 0x0a, 0x04, 0x75, 0x73, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, + 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x52, 0x6f, 0x6c, 0x65, 0x53, 0x70, + 0x65, 0x63, 0x52, 0x04, 0x75, 0x73, 0x65, 0x72, 0x12, 0x1e, 0x0a, 0x0a, 0x73, 0x65, 0x72, 0x76, + 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x65, + 0x72, 0x76, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x28, 0x0a, 0x07, 0x6f, 0x70, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x67, 0x5f, 0x71, + 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x22, 0x7d, 0x0a, 0x13, 0x44, 0x72, 0x6f, 0x70, 0x55, 0x73, 0x65, 0x72, 0x4d, 0x61, + 0x70, 0x70, 0x69, 0x6e, 0x67, 0x53, 0x74, 0x6d, 0x74, 0x12, 0x26, 0x0a, 0x04, 0x75, 0x73, 0x65, + 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, + 0x72, 0x79, 0x2e, 0x52, 0x6f, 0x6c, 0x65, 0x53, 0x70, 0x65, 0x63, 0x52, 0x04, 0x75, 0x73, 0x65, + 0x72, 0x12, 0x1e, 0x0a, 0x0a, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x6e, 0x61, 0x6d, + 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6e, 0x67, 0x5f, 0x6f, 0x6b, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6e, 0x67, 0x5f, 0x6f, + 0x6b, 0x22, 0x89, 0x01, 0x0a, 0x1a, 0x41, 0x6c, 0x74, 0x65, 0x72, 0x54, 0x61, 0x62, 0x6c, 0x65, + 0x53, 0x70, 0x61, 0x63, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x53, 0x74, 0x6d, 0x74, + 0x12, 0x26, 0x0a, 0x0e, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x6e, 0x61, + 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x73, + 0x70, 0x61, 0x63, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x28, 0x0a, 0x07, 0x6f, 0x70, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x67, 0x5f, 0x71, + 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x12, 0x19, 0x0a, 0x08, 0x69, 0x73, 0x5f, 0x72, 0x65, 0x73, 0x65, 0x74, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x69, 0x73, 0x52, 0x65, 0x73, 0x65, 0x74, 0x22, 0xe7, 0x01, + 0x0a, 0x15, 0x41, 0x6c, 0x74, 0x65, 0x72, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x4d, 0x6f, 0x76, 0x65, + 0x41, 0x6c, 0x6c, 0x53, 0x74, 0x6d, 0x74, 0x12, 0x30, 0x0a, 0x13, 0x6f, 0x72, 0x69, 0x67, 0x5f, + 0x74, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x13, 0x6f, 0x72, 0x69, 0x67, 0x5f, 0x74, 0x61, 0x62, 0x6c, 0x65, + 0x73, 0x70, 0x61, 0x63, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x2e, 0x0a, 0x07, 0x6f, 0x62, 0x6a, + 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x14, 0x2e, 0x70, 0x67, 0x5f, + 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x54, 0x79, 0x70, 0x65, + 0x52, 0x07, 0x6f, 0x62, 0x6a, 0x74, 0x79, 0x70, 0x65, 0x12, 0x24, 0x0a, 0x05, 0x72, 0x6f, 0x6c, + 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, + 0x65, 0x72, 0x79, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x05, 0x72, 0x6f, 0x6c, 0x65, 0x73, 0x12, + 0x2e, 0x0a, 0x12, 0x6e, 0x65, 0x77, 0x5f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x70, 0x61, 0x63, + 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x12, 0x6e, 0x65, 0x77, + 0x5f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x12, + 0x16, 0x0a, 0x06, 0x6e, 0x6f, 0x77, 0x61, 0x69, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, + 0x06, 0x6e, 0x6f, 0x77, 0x61, 0x69, 0x74, 0x22, 0x98, 0x01, 0x0a, 0x0c, 0x53, 0x65, 0x63, 0x4c, + 0x61, 0x62, 0x65, 0x6c, 0x53, 0x74, 0x6d, 0x74, 0x12, 0x2e, 0x0a, 0x07, 0x6f, 0x62, 0x6a, 0x74, + 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x14, 0x2e, 0x70, 0x67, 0x5f, 0x71, + 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x54, 0x79, 0x70, 0x65, 0x52, + 0x07, 0x6f, 0x62, 0x6a, 0x74, 0x79, 0x70, 0x65, 0x12, 0x26, 0x0a, 0x06, 0x6f, 0x62, 0x6a, 0x65, + 0x63, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, + 0x65, 0x72, 0x79, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x06, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, + 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x12, 0x14, 0x0a, 0x05, + 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x6c, 0x61, 0x62, + 0x65, 0x6c, 0x22, 0x91, 0x01, 0x0a, 0x16, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x46, 0x6f, 0x72, + 0x65, 0x69, 0x67, 0x6e, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x53, 0x74, 0x6d, 0x74, 0x12, 0x2d, 0x0a, + 0x09, 0x62, 0x61, 0x73, 0x65, 0x5f, 0x73, 0x74, 0x6d, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x14, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x43, 0x72, 0x65, 0x61, + 0x74, 0x65, 0x53, 0x74, 0x6d, 0x74, 0x52, 0x04, 0x62, 0x61, 0x73, 0x65, 0x12, 0x1e, 0x0a, 0x0a, + 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0a, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x28, 0x0a, 0x07, + 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, + 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x07, 0x6f, + 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0xa0, 0x02, 0x0a, 0x17, 0x49, 0x6d, 0x70, 0x6f, 0x72, + 0x74, 0x46, 0x6f, 0x72, 0x65, 0x69, 0x67, 0x6e, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x53, 0x74, + 0x6d, 0x74, 0x12, 0x20, 0x0a, 0x0b, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x6e, 0x61, 0x6d, + 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, + 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x24, 0x0a, 0x0d, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x5f, 0x73, + 0x63, 0x68, 0x65, 0x6d, 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x72, 0x65, 0x6d, + 0x6f, 0x74, 0x65, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x12, 0x22, 0x0a, 0x0c, 0x6c, 0x6f, + 0x63, 0x61, 0x6c, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0c, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x12, 0x3f, + 0x0a, 0x09, 0x6c, 0x69, 0x73, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x0e, 0x32, 0x21, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x49, 0x6d, 0x70, + 0x6f, 0x72, 0x74, 0x46, 0x6f, 0x72, 0x65, 0x69, 0x67, 0x6e, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, + 0x54, 0x79, 0x70, 0x65, 0x52, 0x09, 0x6c, 0x69, 0x73, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x12, + 0x2e, 0x0a, 0x0a, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x05, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4e, + 0x6f, 0x64, 0x65, 0x52, 0x0a, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x12, + 0x28, 0x0a, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x0e, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4e, 0x6f, 0x64, 0x65, + 0x52, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x7f, 0x0a, 0x13, 0x43, 0x72, 0x65, + 0x61, 0x74, 0x65, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x6d, 0x74, + 0x12, 0x18, 0x0a, 0x07, 0x65, 0x78, 0x74, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x07, 0x65, 0x78, 0x74, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x24, 0x0a, 0x0d, 0x69, 0x66, + 0x5f, 0x6e, 0x6f, 0x74, 0x5f, 0x65, 0x78, 0x69, 0x73, 0x74, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x08, 0x52, 0x0d, 0x69, 0x66, 0x5f, 0x6e, 0x6f, 0x74, 0x5f, 0x65, 0x78, 0x69, 0x73, 0x74, 0x73, + 0x12, 0x28, 0x0a, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4e, 0x6f, 0x64, + 0x65, 0x52, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x58, 0x0a, 0x12, 0x41, 0x6c, + 0x74, 0x65, 0x72, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x6d, 0x74, + 0x12, 0x18, 0x0a, 0x07, 0x65, 0x78, 0x74, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x07, 0x65, 0x78, 0x74, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x28, 0x0a, 0x07, 0x6f, 0x70, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x67, + 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x07, 0x6f, 0x70, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x22, 0xa6, 0x01, 0x0a, 0x1a, 0x41, 0x6c, 0x74, 0x65, 0x72, 0x45, 0x78, + 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x73, 0x53, + 0x74, 0x6d, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x65, 0x78, 0x74, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x65, 0x78, 0x74, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, + 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x61, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2e, 0x0a, 0x07, 0x6f, 0x62, 0x6a, 0x74, 0x79, 0x70, 0x65, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x14, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, + 0x79, 0x2e, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x54, 0x79, 0x70, 0x65, 0x52, 0x07, 0x6f, 0x62, + 0x6a, 0x74, 0x79, 0x70, 0x65, 0x12, 0x26, 0x0a, 0x06, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, + 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x06, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x22, 0xab, 0x01, + 0x0a, 0x13, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x54, 0x72, 0x69, + 0x67, 0x53, 0x74, 0x6d, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x74, 0x72, 0x69, 0x67, 0x6e, 0x61, 0x6d, + 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x74, 0x72, 0x69, 0x67, 0x6e, 0x61, 0x6d, + 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x6e, 0x61, 0x6d, 0x65, 0x12, + 0x2e, 0x0a, 0x0a, 0x77, 0x68, 0x65, 0x6e, 0x63, 0x6c, 0x61, 0x75, 0x73, 0x65, 0x18, 0x03, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4e, + 0x6f, 0x64, 0x65, 0x52, 0x0a, 0x77, 0x68, 0x65, 0x6e, 0x63, 0x6c, 0x61, 0x75, 0x73, 0x65, 0x12, + 0x2a, 0x0a, 0x08, 0x66, 0x75, 0x6e, 0x63, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4e, 0x6f, 0x64, + 0x65, 0x52, 0x08, 0x66, 0x75, 0x6e, 0x63, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x4e, 0x0a, 0x12, 0x41, + 0x6c, 0x74, 0x65, 0x72, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x54, 0x72, 0x69, 0x67, 0x53, 0x74, 0x6d, + 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x74, 0x72, 0x69, 0x67, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x08, 0x74, 0x72, 0x69, 0x67, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1c, 0x0a, + 0x09, 0x74, 0x67, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x09, 0x74, 0x67, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x22, 0x81, 0x01, 0x0a, 0x12, + 0x52, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x4d, 0x61, 0x74, 0x56, 0x69, 0x65, 0x77, 0x53, 0x74, + 0x6d, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x63, 0x6f, 0x6e, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x63, 0x6f, 0x6e, 0x63, 0x75, 0x72, 0x72, 0x65, + 0x6e, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x73, 0x6b, 0x69, 0x70, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x73, 0x6b, 0x69, 0x70, 0x44, 0x61, 0x74, 0x61, 0x12, + 0x2e, 0x0a, 0x08, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x12, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x52, 0x61, 0x6e, + 0x67, 0x65, 0x56, 0x61, 0x72, 0x52, 0x08, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, + 0x4f, 0x0a, 0x13, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, + 0x74, 0x79, 0x53, 0x74, 0x6d, 0x74, 0x12, 0x24, 0x0a, 0x0d, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, + 0x74, 0x79, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x69, + 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x12, 0x12, 0x0a, 0x04, + 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, + 0x22, 0x46, 0x0a, 0x0f, 0x41, 0x6c, 0x74, 0x65, 0x72, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x53, + 0x74, 0x6d, 0x74, 0x12, 0x33, 0x0a, 0x07, 0x73, 0x65, 0x74, 0x73, 0x74, 0x6d, 0x74, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, + 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x53, 0x65, 0x74, 0x53, 0x74, 0x6d, 0x74, 0x52, + 0x07, 0x73, 0x65, 0x74, 0x73, 0x74, 0x6d, 0x74, 0x22, 0x94, 0x02, 0x0a, 0x10, 0x43, 0x72, 0x65, + 0x61, 0x74, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x53, 0x74, 0x6d, 0x74, 0x12, 0x20, 0x0a, + 0x0b, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0b, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x12, + 0x28, 0x0a, 0x05, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, + 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x56, + 0x61, 0x72, 0x52, 0x05, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x6d, 0x64, + 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x6d, 0x64, + 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x70, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, + 0x69, 0x76, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x70, 0x65, 0x72, 0x6d, 0x69, + 0x73, 0x73, 0x69, 0x76, 0x65, 0x12, 0x24, 0x0a, 0x05, 0x72, 0x6f, 0x6c, 0x65, 0x73, 0x18, 0x05, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, + 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x05, 0x72, 0x6f, 0x6c, 0x65, 0x73, 0x12, 0x22, 0x0a, 0x04, 0x71, + 0x75, 0x61, 0x6c, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x67, 0x5f, 0x71, + 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x04, 0x71, 0x75, 0x61, 0x6c, 0x12, + 0x2e, 0x0a, 0x0a, 0x77, 0x69, 0x74, 0x68, 0x5f, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x18, 0x07, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4e, + 0x6f, 0x64, 0x65, 0x52, 0x0a, 0x77, 0x69, 0x74, 0x68, 0x5f, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x22, + 0xd7, 0x01, 0x0a, 0x0f, 0x41, 0x6c, 0x74, 0x65, 0x72, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x53, + 0x74, 0x6d, 0x74, 0x12, 0x20, 0x0a, 0x0b, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5f, 0x6e, 0x61, + 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, + 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x28, 0x0a, 0x05, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, + 0x52, 0x61, 0x6e, 0x67, 0x65, 0x56, 0x61, 0x72, 0x52, 0x05, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x12, + 0x24, 0x0a, 0x05, 0x72, 0x6f, 0x6c, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, + 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x05, + 0x72, 0x6f, 0x6c, 0x65, 0x73, 0x12, 0x22, 0x0a, 0x04, 0x71, 0x75, 0x61, 0x6c, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4e, + 0x6f, 0x64, 0x65, 0x52, 0x04, 0x71, 0x75, 0x61, 0x6c, 0x12, 0x2e, 0x0a, 0x0a, 0x77, 0x69, 0x74, + 0x68, 0x5f, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, + 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x0a, 0x77, + 0x69, 0x74, 0x68, 0x5f, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x22, 0xd9, 0x01, 0x0a, 0x13, 0x43, 0x72, + 0x65, 0x61, 0x74, 0x65, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x53, 0x74, 0x6d, + 0x74, 0x12, 0x18, 0x0a, 0x07, 0x72, 0x65, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x08, 0x52, 0x07, 0x72, 0x65, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x12, 0x30, 0x0a, 0x09, 0x74, + 0x79, 0x70, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, + 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x54, 0x79, 0x70, 0x65, 0x4e, 0x61, + 0x6d, 0x65, 0x52, 0x09, 0x74, 0x79, 0x70, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, + 0x04, 0x6c, 0x61, 0x6e, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6c, 0x61, 0x6e, + 0x67, 0x12, 0x32, 0x0a, 0x07, 0x66, 0x72, 0x6f, 0x6d, 0x73, 0x71, 0x6c, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4f, 0x62, + 0x6a, 0x65, 0x63, 0x74, 0x57, 0x69, 0x74, 0x68, 0x41, 0x72, 0x67, 0x73, 0x52, 0x07, 0x66, 0x72, + 0x6f, 0x6d, 0x73, 0x71, 0x6c, 0x12, 0x2e, 0x0a, 0x05, 0x74, 0x6f, 0x73, 0x71, 0x6c, 0x18, 0x05, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, + 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x57, 0x69, 0x74, 0x68, 0x41, 0x72, 0x67, 0x73, 0x52, 0x05, + 0x74, 0x6f, 0x73, 0x71, 0x6c, 0x22, 0x72, 0x0a, 0x0c, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, + 0x6d, 0x53, 0x74, 0x6d, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x6d, 0x6e, 0x61, 0x6d, 0x65, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x61, 0x6d, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x32, 0x0a, + 0x0c, 0x68, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x72, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4e, + 0x6f, 0x64, 0x65, 0x52, 0x0c, 0x68, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x72, 0x5f, 0x6e, 0x61, 0x6d, + 0x65, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x6d, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x06, 0x61, 0x6d, 0x74, 0x79, 0x70, 0x65, 0x22, 0xab, 0x01, 0x0a, 0x15, 0x43, 0x72, + 0x65, 0x61, 0x74, 0x65, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, + 0x74, 0x6d, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x75, 0x62, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x75, 0x62, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x28, 0x0a, + 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, + 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x07, + 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x26, 0x0a, 0x06, 0x74, 0x61, 0x62, 0x6c, 0x65, + 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, + 0x72, 0x79, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x06, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x12, + 0x26, 0x0a, 0x0e, 0x66, 0x6f, 0x72, 0x5f, 0x61, 0x6c, 0x6c, 0x5f, 0x74, 0x61, 0x62, 0x6c, 0x65, + 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, 0x66, 0x6f, 0x72, 0x5f, 0x61, 0x6c, 0x6c, + 0x5f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x22, 0xe6, 0x01, 0x0a, 0x14, 0x41, 0x6c, 0x74, 0x65, + 0x72, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x6d, 0x74, + 0x12, 0x18, 0x0a, 0x07, 0x70, 0x75, 0x62, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x07, 0x70, 0x75, 0x62, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x28, 0x0a, 0x07, 0x6f, 0x70, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x67, + 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x07, 0x6f, 0x70, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x26, 0x0a, 0x06, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x18, 0x03, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, + 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x06, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x12, 0x26, 0x0a, 0x0e, + 0x66, 0x6f, 0x72, 0x5f, 0x61, 0x6c, 0x6c, 0x5f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, 0x66, 0x6f, 0x72, 0x5f, 0x61, 0x6c, 0x6c, 0x5f, 0x74, 0x61, + 0x62, 0x6c, 0x65, 0x73, 0x12, 0x3a, 0x0a, 0x0c, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x61, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x17, 0x2e, 0x70, 0x67, 0x5f, + 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x44, 0x65, 0x66, 0x45, 0x6c, 0x65, 0x6d, 0x41, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x52, 0x0b, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x22, 0xaa, 0x01, 0x0a, 0x16, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, 0x75, 0x62, 0x73, 0x63, + 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x6d, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x73, + 0x75, 0x62, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x73, 0x75, + 0x62, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x6f, 0x6e, 0x6e, 0x69, 0x6e, 0x66, + 0x6f, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x6f, 0x6e, 0x6e, 0x69, 0x6e, 0x66, + 0x6f, 0x12, 0x30, 0x0a, 0x0b, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, + 0x79, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x0b, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x12, 0x28, 0x0a, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x04, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, + 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0xde, 0x01, + 0x0a, 0x15, 0x41, 0x6c, 0x74, 0x65, 0x72, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, + 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x6d, 0x74, 0x12, 0x33, 0x0a, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1f, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, + 0x2e, 0x41, 0x6c, 0x74, 0x65, 0x72, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, + 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x12, 0x18, 0x0a, 0x07, + 0x73, 0x75, 0x62, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x73, + 0x75, 0x62, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x6f, 0x6e, 0x6e, 0x69, 0x6e, + 0x66, 0x6f, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x6f, 0x6e, 0x6e, 0x69, 0x6e, + 0x66, 0x6f, 0x12, 0x30, 0x0a, 0x0b, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, + 0x72, 0x79, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x0b, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x28, 0x0a, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, + 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, + 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x84, + 0x01, 0x0a, 0x14, 0x44, 0x72, 0x6f, 0x70, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, + 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x6d, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x75, 0x62, 0x6e, 0x61, + 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x73, 0x75, 0x62, 0x6e, 0x61, 0x6d, + 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6e, 0x67, 0x5f, 0x6f, 0x6b, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6e, 0x67, 0x5f, 0x6f, + 0x6b, 0x12, 0x32, 0x0a, 0x08, 0x62, 0x65, 0x68, 0x61, 0x76, 0x69, 0x6f, 0x72, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x0e, 0x32, 0x16, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x44, + 0x72, 0x6f, 0x70, 0x42, 0x65, 0x68, 0x61, 0x76, 0x69, 0x6f, 0x72, 0x52, 0x08, 0x62, 0x65, 0x68, + 0x61, 0x76, 0x69, 0x6f, 0x72, 0x22, 0x87, 0x02, 0x0a, 0x0f, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, + 0x53, 0x74, 0x61, 0x74, 0x73, 0x53, 0x74, 0x6d, 0x74, 0x12, 0x2a, 0x0a, 0x08, 0x64, 0x65, 0x66, + 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x67, + 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x08, 0x64, 0x65, 0x66, + 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x2e, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x74, 0x5f, 0x74, 0x79, + 0x70, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x67, 0x5f, 0x71, + 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x0a, 0x73, 0x74, 0x61, 0x74, 0x5f, + 0x74, 0x79, 0x70, 0x65, 0x73, 0x12, 0x24, 0x0a, 0x05, 0x65, 0x78, 0x70, 0x72, 0x73, 0x18, 0x03, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, + 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x05, 0x65, 0x78, 0x70, 0x72, 0x73, 0x12, 0x2c, 0x0a, 0x09, 0x72, + 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, + 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x09, + 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x1e, 0x0a, 0x0a, 0x73, 0x74, 0x78, + 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, + 0x74, 0x78, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x24, 0x0a, 0x0d, 0x69, 0x66, 0x5f, + 0x6e, 0x6f, 0x74, 0x5f, 0x65, 0x78, 0x69, 0x73, 0x74, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, + 0x52, 0x0d, 0x69, 0x66, 0x5f, 0x6e, 0x6f, 0x74, 0x5f, 0x65, 0x78, 0x69, 0x73, 0x74, 0x73, 0x22, + 0x40, 0x0a, 0x12, 0x41, 0x6c, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6c, 0x6c, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x53, 0x74, 0x6d, 0x74, 0x12, 0x2a, 0x0a, 0x08, 0x63, 0x6f, 0x6c, 0x6c, 0x6e, 0x61, 0x6d, + 0x65, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, + 0x72, 0x79, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x08, 0x63, 0x6f, 0x6c, 0x6c, 0x6e, 0x61, 0x6d, + 0x65, 0x22, 0x6a, 0x0a, 0x08, 0x43, 0x61, 0x6c, 0x6c, 0x53, 0x74, 0x6d, 0x74, 0x12, 0x2e, 0x0a, + 0x08, 0x66, 0x75, 0x6e, 0x63, 0x63, 0x61, 0x6c, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x12, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x46, 0x75, 0x6e, 0x63, 0x43, + 0x61, 0x6c, 0x6c, 0x52, 0x08, 0x66, 0x75, 0x6e, 0x63, 0x63, 0x61, 0x6c, 0x6c, 0x12, 0x2e, 0x0a, + 0x08, 0x66, 0x75, 0x6e, 0x63, 0x65, 0x78, 0x70, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x12, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x46, 0x75, 0x6e, 0x63, 0x45, + 0x78, 0x70, 0x72, 0x52, 0x08, 0x66, 0x75, 0x6e, 0x63, 0x65, 0x78, 0x70, 0x72, 0x22, 0x82, 0x01, + 0x0a, 0x0e, 0x41, 0x6c, 0x74, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x73, 0x53, 0x74, 0x6d, 0x74, + 0x12, 0x2a, 0x0a, 0x08, 0x64, 0x65, 0x66, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4e, 0x6f, + 0x64, 0x65, 0x52, 0x08, 0x64, 0x65, 0x66, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x24, 0x0a, 0x0d, + 0x73, 0x74, 0x78, 0x73, 0x74, 0x61, 0x74, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x0d, 0x73, 0x74, 0x78, 0x73, 0x74, 0x61, 0x74, 0x74, 0x61, 0x72, 0x67, + 0x65, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6e, 0x67, 0x5f, 0x6f, 0x6b, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6e, 0x67, 0x5f, + 0x6f, 0x6b, 0x22, 0xbf, 0x01, 0x0a, 0x06, 0x41, 0x5f, 0x45, 0x78, 0x70, 0x72, 0x12, 0x29, 0x0a, + 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x15, 0x2e, 0x70, 0x67, + 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x41, 0x5f, 0x45, 0x78, 0x70, 0x72, 0x5f, 0x4b, 0x69, + 0x6e, 0x64, 0x52, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x12, 0x22, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, + 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, + 0x79, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x24, 0x0a, 0x05, + 0x6c, 0x65, 0x78, 0x70, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x67, + 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x05, 0x6c, 0x65, 0x78, + 0x70, 0x72, 0x12, 0x24, 0x0a, 0x05, 0x72, 0x65, 0x78, 0x70, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4e, 0x6f, 0x64, + 0x65, 0x52, 0x05, 0x72, 0x65, 0x78, 0x70, 0x72, 0x12, 0x1a, 0x0a, 0x08, 0x6c, 0x6f, 0x63, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x6c, 0x6f, 0x63, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x4f, 0x0a, 0x09, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x52, 0x65, + 0x66, 0x12, 0x26, 0x0a, 0x06, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4e, 0x6f, 0x64, + 0x65, 0x52, 0x06, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x6c, 0x6f, 0x63, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x6c, 0x6f, 0x63, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x3e, 0x0a, 0x08, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x52, 0x65, + 0x66, 0x12, 0x16, 0x0a, 0x06, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x06, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x1a, 0x0a, 0x08, 0x6c, 0x6f, 0x63, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x6c, 0x6f, 0x63, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x47, 0x0a, 0x07, 0x41, 0x5f, 0x43, 0x6f, 0x6e, 0x73, 0x74, + 0x12, 0x20, 0x0a, 0x03, 0x76, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, + 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x03, 0x76, + 0x61, 0x6c, 0x12, 0x1a, 0x0a, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x8f, + 0x03, 0x0a, 0x08, 0x46, 0x75, 0x6e, 0x63, 0x43, 0x61, 0x6c, 0x6c, 0x12, 0x2a, 0x0a, 0x08, 0x66, + 0x75, 0x6e, 0x63, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, + 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x08, 0x66, + 0x75, 0x6e, 0x63, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x22, 0x0a, 0x04, 0x61, 0x72, 0x67, 0x73, 0x18, + 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, + 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x04, 0x61, 0x72, 0x67, 0x73, 0x12, 0x2c, 0x0a, 0x09, 0x61, + 0x67, 0x67, 0x5f, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, + 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x09, + 0x61, 0x67, 0x67, 0x5f, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x12, 0x2e, 0x0a, 0x0a, 0x61, 0x67, 0x67, + 0x5f, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, + 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x0a, 0x61, + 0x67, 0x67, 0x5f, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x2a, 0x0a, 0x10, 0x61, 0x67, 0x67, + 0x5f, 0x77, 0x69, 0x74, 0x68, 0x69, 0x6e, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x05, 0x20, + 0x01, 0x28, 0x08, 0x52, 0x10, 0x61, 0x67, 0x67, 0x5f, 0x77, 0x69, 0x74, 0x68, 0x69, 0x6e, 0x5f, + 0x67, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x1a, 0x0a, 0x08, 0x61, 0x67, 0x67, 0x5f, 0x73, 0x74, 0x61, + 0x72, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x61, 0x67, 0x67, 0x5f, 0x73, 0x74, 0x61, + 0x72, 0x12, 0x22, 0x0a, 0x0c, 0x61, 0x67, 0x67, 0x5f, 0x64, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x63, + 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x61, 0x67, 0x67, 0x5f, 0x64, 0x69, 0x73, + 0x74, 0x69, 0x6e, 0x63, 0x74, 0x12, 0x24, 0x0a, 0x0d, 0x66, 0x75, 0x6e, 0x63, 0x5f, 0x76, 0x61, + 0x72, 0x69, 0x61, 0x64, 0x69, 0x63, 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x66, 0x75, + 0x6e, 0x63, 0x5f, 0x76, 0x61, 0x72, 0x69, 0x61, 0x64, 0x69, 0x63, 0x12, 0x27, 0x0a, 0x04, 0x6f, + 0x76, 0x65, 0x72, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x70, 0x67, 0x5f, 0x71, + 0x75, 0x65, 0x72, 0x79, 0x2e, 0x57, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x44, 0x65, 0x66, 0x52, 0x04, + 0x6f, 0x76, 0x65, 0x72, 0x12, 0x1a, 0x0a, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x22, 0x08, 0x0a, 0x06, 0x41, 0x5f, 0x53, 0x74, 0x61, 0x72, 0x22, 0x6f, 0x0a, 0x09, 0x41, 0x5f, + 0x49, 0x6e, 0x64, 0x69, 0x63, 0x65, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x69, 0x73, 0x5f, 0x73, 0x6c, + 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x69, 0x73, 0x5f, 0x73, 0x6c, + 0x69, 0x63, 0x65, 0x12, 0x22, 0x0a, 0x04, 0x6c, 0x69, 0x64, 0x78, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4e, 0x6f, 0x64, + 0x65, 0x52, 0x04, 0x6c, 0x69, 0x64, 0x78, 0x12, 0x22, 0x0a, 0x04, 0x75, 0x69, 0x64, 0x78, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, + 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x04, 0x75, 0x69, 0x64, 0x78, 0x22, 0x63, 0x0a, 0x0d, 0x41, + 0x5f, 0x49, 0x6e, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x20, 0x0a, 0x03, + 0x61, 0x72, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x67, 0x5f, 0x71, + 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x03, 0x61, 0x72, 0x67, 0x12, 0x30, + 0x0a, 0x0b, 0x69, 0x6e, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4e, + 0x6f, 0x64, 0x65, 0x52, 0x0b, 0x69, 0x6e, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x22, 0x55, 0x0a, 0x0b, 0x41, 0x5f, 0x41, 0x72, 0x72, 0x61, 0x79, 0x45, 0x78, 0x70, 0x72, 0x12, + 0x2a, 0x0a, 0x08, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4e, 0x6f, 0x64, + 0x65, 0x52, 0x08, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x6c, + 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x6c, + 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x8f, 0x01, 0x0a, 0x09, 0x52, 0x65, 0x73, 0x54, + 0x61, 0x72, 0x67, 0x65, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x30, 0x0a, 0x0b, 0x69, 0x6e, 0x64, + 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, + 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x0b, + 0x69, 0x6e, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x20, 0x0a, 0x03, 0x76, + 0x61, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, + 0x65, 0x72, 0x79, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x03, 0x76, 0x61, 0x6c, 0x12, 0x1a, 0x0a, + 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x6a, 0x0a, 0x0e, 0x4d, 0x75, 0x6c, + 0x74, 0x69, 0x41, 0x73, 0x73, 0x69, 0x67, 0x6e, 0x52, 0x65, 0x66, 0x12, 0x26, 0x0a, 0x06, 0x73, + 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x67, + 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x06, 0x73, 0x6f, 0x75, + 0x72, 0x63, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x6c, 0x6e, 0x6f, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x05, 0x63, 0x6f, 0x6c, 0x6e, 0x6f, 0x12, 0x1a, 0x0a, 0x08, 0x6e, 0x63, 0x6f, + 0x6c, 0x75, 0x6d, 0x6e, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x6e, 0x63, 0x6f, + 0x6c, 0x75, 0x6d, 0x6e, 0x73, 0x22, 0x79, 0x0a, 0x08, 0x54, 0x79, 0x70, 0x65, 0x43, 0x61, 0x73, + 0x74, 0x12, 0x20, 0x0a, 0x03, 0x61, 0x72, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, + 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x03, + 0x61, 0x72, 0x67, 0x12, 0x2f, 0x0a, 0x09, 0x74, 0x79, 0x70, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, + 0x79, 0x2e, 0x54, 0x79, 0x70, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x52, 0x08, 0x74, 0x79, 0x70, 0x65, + 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x22, 0x79, 0x0a, 0x0d, 0x43, 0x6f, 0x6c, 0x6c, 0x61, 0x74, 0x65, 0x43, 0x6c, 0x61, 0x75, 0x73, + 0x65, 0x12, 0x20, 0x0a, 0x03, 0x61, 0x72, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, + 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x03, + 0x61, 0x72, 0x67, 0x12, 0x2a, 0x0a, 0x08, 0x63, 0x6f, 0x6c, 0x6c, 0x6e, 0x61, 0x6d, 0x65, 0x18, + 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, + 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x08, 0x63, 0x6f, 0x6c, 0x6c, 0x6e, 0x61, 0x6d, 0x65, 0x12, + 0x1a, 0x0a, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xdf, 0x01, 0x0a, 0x06, + 0x53, 0x6f, 0x72, 0x74, 0x42, 0x79, 0x12, 0x22, 0x0a, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, + 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x12, 0x33, 0x0a, 0x0a, 0x73, 0x6f, + 0x72, 0x74, 0x62, 0x79, 0x5f, 0x64, 0x69, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x13, + 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x53, 0x6f, 0x72, 0x74, 0x42, 0x79, + 0x44, 0x69, 0x72, 0x52, 0x0a, 0x73, 0x6f, 0x72, 0x74, 0x62, 0x79, 0x5f, 0x64, 0x69, 0x72, 0x12, + 0x39, 0x0a, 0x0c, 0x73, 0x6f, 0x72, 0x74, 0x62, 0x79, 0x5f, 0x6e, 0x75, 0x6c, 0x6c, 0x73, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x15, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, + 0x2e, 0x53, 0x6f, 0x72, 0x74, 0x42, 0x79, 0x4e, 0x75, 0x6c, 0x6c, 0x73, 0x52, 0x0c, 0x73, 0x6f, + 0x72, 0x74, 0x62, 0x79, 0x5f, 0x6e, 0x75, 0x6c, 0x6c, 0x73, 0x12, 0x25, 0x0a, 0x06, 0x75, 0x73, + 0x65, 0x5f, 0x6f, 0x70, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x67, 0x5f, + 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x05, 0x75, 0x73, 0x65, 0x4f, + 0x70, 0x12, 0x1a, 0x0a, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xca, 0x02, + 0x0a, 0x09, 0x57, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x44, 0x65, 0x66, 0x12, 0x12, 0x0a, 0x04, 0x6e, + 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, + 0x18, 0x0a, 0x07, 0x72, 0x65, 0x66, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x07, 0x72, 0x65, 0x66, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x39, 0x0a, 0x10, 0x70, 0x61, 0x72, + 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x6c, 0x61, 0x75, 0x73, 0x65, 0x18, 0x03, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4e, + 0x6f, 0x64, 0x65, 0x52, 0x0f, 0x70, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6c, + 0x61, 0x75, 0x73, 0x65, 0x12, 0x31, 0x0a, 0x0c, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x5f, 0x63, 0x6c, + 0x61, 0x75, 0x73, 0x65, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x67, 0x5f, + 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x0b, 0x6f, 0x72, 0x64, 0x65, + 0x72, 0x43, 0x6c, 0x61, 0x75, 0x73, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x66, 0x72, 0x61, 0x6d, 0x65, + 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, + 0x66, 0x72, 0x61, 0x6d, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x31, 0x0a, 0x0c, + 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x06, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4e, 0x6f, + 0x64, 0x65, 0x52, 0x0b, 0x73, 0x74, 0x61, 0x72, 0x74, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x12, + 0x2d, 0x0a, 0x0a, 0x65, 0x6e, 0x64, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x07, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4e, + 0x6f, 0x64, 0x65, 0x52, 0x09, 0x65, 0x6e, 0x64, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x12, 0x1a, + 0x0a, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x7d, 0x0a, 0x0e, 0x52, 0x61, + 0x6e, 0x67, 0x65, 0x53, 0x75, 0x62, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x12, 0x18, 0x0a, 0x07, + 0x6c, 0x61, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x6c, + 0x61, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x12, 0x2a, 0x0a, 0x08, 0x73, 0x75, 0x62, 0x71, 0x75, 0x65, + 0x72, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, + 0x65, 0x72, 0x79, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x08, 0x73, 0x75, 0x62, 0x71, 0x75, 0x65, + 0x72, 0x79, 0x12, 0x25, 0x0a, 0x05, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x0f, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x41, 0x6c, 0x69, + 0x61, 0x73, 0x52, 0x05, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x22, 0xf0, 0x01, 0x0a, 0x0d, 0x52, 0x61, + 0x6e, 0x67, 0x65, 0x46, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x6c, + 0x61, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x6c, 0x61, + 0x74, 0x65, 0x72, 0x61, 0x6c, 0x12, 0x1e, 0x0a, 0x0a, 0x6f, 0x72, 0x64, 0x69, 0x6e, 0x61, 0x6c, + 0x69, 0x74, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x6f, 0x72, 0x64, 0x69, 0x6e, + 0x61, 0x6c, 0x69, 0x74, 0x79, 0x12, 0x20, 0x0a, 0x0b, 0x69, 0x73, 0x5f, 0x72, 0x6f, 0x77, 0x73, + 0x66, 0x72, 0x6f, 0x6d, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x69, 0x73, 0x5f, 0x72, + 0x6f, 0x77, 0x73, 0x66, 0x72, 0x6f, 0x6d, 0x12, 0x2c, 0x0a, 0x09, 0x66, 0x75, 0x6e, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x67, 0x5f, + 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x09, 0x66, 0x75, 0x6e, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x25, 0x0a, 0x05, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x18, 0x05, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, + 0x41, 0x6c, 0x69, 0x61, 0x73, 0x52, 0x05, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x12, 0x2e, 0x0a, 0x0a, + 0x63, 0x6f, 0x6c, 0x64, 0x65, 0x66, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x0e, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4e, 0x6f, 0x64, 0x65, + 0x52, 0x0a, 0x63, 0x6f, 0x6c, 0x64, 0x65, 0x66, 0x6c, 0x69, 0x73, 0x74, 0x22, 0xd6, 0x01, 0x0a, + 0x10, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x53, 0x61, 0x6d, 0x70, 0x6c, + 0x65, 0x12, 0x2a, 0x0a, 0x08, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4e, + 0x6f, 0x64, 0x65, 0x52, 0x08, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x26, 0x0a, + 0x06, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, + 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x06, 0x6d, + 0x65, 0x74, 0x68, 0x6f, 0x64, 0x12, 0x22, 0x0a, 0x04, 0x61, 0x72, 0x67, 0x73, 0x18, 0x03, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4e, + 0x6f, 0x64, 0x65, 0x52, 0x04, 0x61, 0x72, 0x67, 0x73, 0x12, 0x2e, 0x0a, 0x0a, 0x72, 0x65, 0x70, + 0x65, 0x61, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, + 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x0a, 0x72, + 0x65, 0x70, 0x65, 0x61, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x6c, 0x6f, 0x63, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x6c, 0x6f, 0x63, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x9b, 0x02, 0x0a, 0x0e, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x54, + 0x61, 0x62, 0x6c, 0x65, 0x46, 0x75, 0x6e, 0x63, 0x12, 0x18, 0x0a, 0x07, 0x6c, 0x61, 0x74, 0x65, + 0x72, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x6c, 0x61, 0x74, 0x65, 0x72, + 0x61, 0x6c, 0x12, 0x28, 0x0a, 0x07, 0x64, 0x6f, 0x63, 0x65, 0x78, 0x70, 0x72, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4e, + 0x6f, 0x64, 0x65, 0x52, 0x07, 0x64, 0x6f, 0x63, 0x65, 0x78, 0x70, 0x72, 0x12, 0x28, 0x0a, 0x07, + 0x72, 0x6f, 0x77, 0x65, 0x78, 0x70, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, + 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x07, 0x72, + 0x6f, 0x77, 0x65, 0x78, 0x70, 0x72, 0x12, 0x2e, 0x0a, 0x0a, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, + 0x61, 0x63, 0x65, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x67, 0x5f, + 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x0a, 0x6e, 0x61, 0x6d, 0x65, + 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x12, 0x28, 0x0a, 0x07, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, + 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, + 0x72, 0x79, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x07, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x73, + 0x12, 0x25, 0x0a, 0x05, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x0f, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x41, 0x6c, 0x69, 0x61, 0x73, + 0x52, 0x05, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x22, 0x9e, 0x02, 0x0a, 0x11, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x54, 0x61, 0x62, + 0x6c, 0x65, 0x46, 0x75, 0x6e, 0x63, 0x43, 0x6f, 0x6c, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x6c, + 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6f, 0x6c, 0x6e, + 0x61, 0x6d, 0x65, 0x12, 0x2f, 0x0a, 0x09, 0x74, 0x79, 0x70, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, + 0x79, 0x2e, 0x54, 0x79, 0x70, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x52, 0x08, 0x74, 0x79, 0x70, 0x65, + 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x26, 0x0a, 0x0e, 0x66, 0x6f, 0x72, 0x5f, 0x6f, 0x72, 0x64, 0x69, + 0x6e, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, 0x66, 0x6f, + 0x72, 0x5f, 0x6f, 0x72, 0x64, 0x69, 0x6e, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x12, 0x20, 0x0a, 0x0b, + 0x69, 0x73, 0x5f, 0x6e, 0x6f, 0x74, 0x5f, 0x6e, 0x75, 0x6c, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x08, 0x52, 0x0b, 0x69, 0x73, 0x5f, 0x6e, 0x6f, 0x74, 0x5f, 0x6e, 0x75, 0x6c, 0x6c, 0x12, 0x28, + 0x0a, 0x07, 0x63, 0x6f, 0x6c, 0x65, 0x78, 0x70, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x0e, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, + 0x07, 0x63, 0x6f, 0x6c, 0x65, 0x78, 0x70, 0x72, 0x12, 0x2e, 0x0a, 0x0a, 0x63, 0x6f, 0x6c, 0x64, + 0x65, 0x66, 0x65, 0x78, 0x70, 0x72, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, + 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x0a, 0x63, 0x6f, + 0x6c, 0x64, 0x65, 0x66, 0x65, 0x78, 0x70, 0x72, 0x12, 0x1a, 0x0a, 0x08, 0x6c, 0x6f, 0x63, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x6c, 0x6f, 0x63, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x90, 0x02, 0x0a, 0x08, 0x54, 0x79, 0x70, 0x65, 0x4e, 0x61, 0x6d, + 0x65, 0x12, 0x24, 0x0a, 0x05, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x0e, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4e, 0x6f, 0x64, 0x65, + 0x52, 0x05, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x19, 0x0a, 0x08, 0x74, 0x79, 0x70, 0x65, 0x5f, + 0x6f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x07, 0x74, 0x79, 0x70, 0x65, 0x4f, + 0x69, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x65, 0x74, 0x6f, 0x66, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x08, 0x52, 0x05, 0x73, 0x65, 0x74, 0x6f, 0x66, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x63, 0x74, 0x5f, + 0x74, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x70, 0x63, 0x74, 0x5f, + 0x74, 0x79, 0x70, 0x65, 0x12, 0x28, 0x0a, 0x07, 0x74, 0x79, 0x70, 0x6d, 0x6f, 0x64, 0x73, 0x18, + 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, + 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x07, 0x74, 0x79, 0x70, 0x6d, 0x6f, 0x64, 0x73, 0x12, 0x18, + 0x0a, 0x07, 0x74, 0x79, 0x70, 0x65, 0x6d, 0x6f, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x07, 0x74, 0x79, 0x70, 0x65, 0x6d, 0x6f, 0x64, 0x12, 0x31, 0x0a, 0x0c, 0x61, 0x72, 0x72, 0x61, + 0x79, 0x5f, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, + 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x0b, + 0x61, 0x72, 0x72, 0x61, 0x79, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x6c, + 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x6c, + 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xa6, 0x05, 0x0a, 0x09, 0x43, 0x6f, 0x6c, 0x75, + 0x6d, 0x6e, 0x44, 0x65, 0x66, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x6c, 0x6e, 0x61, 0x6d, 0x65, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6f, 0x6c, 0x6e, 0x61, 0x6d, 0x65, 0x12, + 0x2f, 0x0a, 0x09, 0x74, 0x79, 0x70, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x54, 0x79, + 0x70, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x52, 0x08, 0x74, 0x79, 0x70, 0x65, 0x4e, 0x61, 0x6d, 0x65, + 0x12, 0x1a, 0x0a, 0x08, 0x69, 0x6e, 0x68, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x08, 0x69, 0x6e, 0x68, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1a, 0x0a, 0x08, + 0x69, 0x73, 0x5f, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, + 0x69, 0x73, 0x5f, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x12, 0x20, 0x0a, 0x0b, 0x69, 0x73, 0x5f, 0x6e, + 0x6f, 0x74, 0x5f, 0x6e, 0x75, 0x6c, 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x69, + 0x73, 0x5f, 0x6e, 0x6f, 0x74, 0x5f, 0x6e, 0x75, 0x6c, 0x6c, 0x12, 0x22, 0x0a, 0x0c, 0x69, 0x73, + 0x5f, 0x66, 0x72, 0x6f, 0x6d, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, + 0x52, 0x0c, 0x69, 0x73, 0x5f, 0x66, 0x72, 0x6f, 0x6d, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x12, 0x18, + 0x0a, 0x07, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x07, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x12, 0x30, 0x0a, 0x0b, 0x72, 0x61, 0x77, 0x5f, + 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, + 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x0b, 0x72, + 0x61, 0x77, 0x5f, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x12, 0x36, 0x0a, 0x0e, 0x63, 0x6f, + 0x6f, 0x6b, 0x65, 0x64, 0x5f, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x18, 0x09, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4e, 0x6f, + 0x64, 0x65, 0x52, 0x0e, 0x63, 0x6f, 0x6f, 0x6b, 0x65, 0x64, 0x5f, 0x64, 0x65, 0x66, 0x61, 0x75, + 0x6c, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x18, 0x0a, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x12, 0x3f, + 0x0a, 0x11, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x5f, 0x73, 0x65, 0x71, 0x75, 0x65, + 0x6e, 0x63, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x70, 0x67, 0x5f, 0x71, + 0x75, 0x65, 0x72, 0x79, 0x2e, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x56, 0x61, 0x72, 0x52, 0x10, 0x69, + 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x53, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x12, + 0x1c, 0x0a, 0x09, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x18, 0x0c, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x09, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x12, 0x38, 0x0a, + 0x0b, 0x63, 0x6f, 0x6c, 0x6c, 0x5f, 0x63, 0x6c, 0x61, 0x75, 0x73, 0x65, 0x18, 0x0d, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x43, 0x6f, + 0x6c, 0x6c, 0x61, 0x74, 0x65, 0x43, 0x6c, 0x61, 0x75, 0x73, 0x65, 0x52, 0x0a, 0x63, 0x6f, 0x6c, + 0x6c, 0x43, 0x6c, 0x61, 0x75, 0x73, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x63, 0x6f, 0x6c, 0x6c, 0x5f, + 0x6f, 0x69, 0x64, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x07, 0x63, 0x6f, 0x6c, 0x6c, 0x4f, + 0x69, 0x64, 0x12, 0x30, 0x0a, 0x0b, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x72, 0x61, 0x69, 0x6e, 0x74, + 0x73, 0x18, 0x0f, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, + 0x72, 0x79, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x0b, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x72, 0x61, + 0x69, 0x6e, 0x74, 0x73, 0x12, 0x2e, 0x0a, 0x0a, 0x66, 0x64, 0x77, 0x6f, 0x70, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x18, 0x10, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, + 0x65, 0x72, 0x79, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x0a, 0x66, 0x64, 0x77, 0x6f, 0x70, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x18, 0x11, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x22, 0xe1, 0x02, 0x0a, 0x09, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x45, 0x6c, 0x65, 0x6d, 0x12, 0x12, + 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, + 0x6d, 0x65, 0x12, 0x22, 0x0a, 0x04, 0x65, 0x78, 0x70, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x0e, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4e, 0x6f, 0x64, 0x65, + 0x52, 0x04, 0x65, 0x78, 0x70, 0x72, 0x12, 0x22, 0x0a, 0x0c, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x63, + 0x6f, 0x6c, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x69, 0x6e, + 0x64, 0x65, 0x78, 0x63, 0x6f, 0x6c, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x2c, 0x0a, 0x09, 0x63, 0x6f, + 0x6c, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, + 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x09, 0x63, + 0x6f, 0x6c, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x28, 0x0a, 0x07, 0x6f, 0x70, 0x63, 0x6c, + 0x61, 0x73, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x67, 0x5f, 0x71, + 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x07, 0x6f, 0x70, 0x63, 0x6c, 0x61, + 0x73, 0x73, 0x12, 0x30, 0x0a, 0x0b, 0x6f, 0x70, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x6f, 0x70, 0x74, + 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, + 0x72, 0x79, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x0b, 0x6f, 0x70, 0x63, 0x6c, 0x61, 0x73, 0x73, + 0x6f, 0x70, 0x74, 0x73, 0x12, 0x2f, 0x0a, 0x08, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x69, 0x6e, 0x67, + 0x18, 0x07, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x13, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, + 0x79, 0x2e, 0x53, 0x6f, 0x72, 0x74, 0x42, 0x79, 0x44, 0x69, 0x72, 0x52, 0x08, 0x6f, 0x72, 0x64, + 0x65, 0x72, 0x69, 0x6e, 0x67, 0x12, 0x3d, 0x0a, 0x0e, 0x6e, 0x75, 0x6c, 0x6c, 0x73, 0x5f, 0x6f, + 0x72, 0x64, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x15, 0x2e, + 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x53, 0x6f, 0x72, 0x74, 0x42, 0x79, 0x4e, + 0x75, 0x6c, 0x6c, 0x73, 0x52, 0x0e, 0x6e, 0x75, 0x6c, 0x6c, 0x73, 0x5f, 0x6f, 0x72, 0x64, 0x65, + 0x72, 0x69, 0x6e, 0x67, 0x22, 0xf4, 0x08, 0x0a, 0x0a, 0x43, 0x6f, 0x6e, 0x73, 0x74, 0x72, 0x61, + 0x69, 0x6e, 0x74, 0x12, 0x2e, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0e, 0x32, 0x14, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, + 0x43, 0x6f, 0x6e, 0x73, 0x74, 0x72, 0x54, 0x79, 0x70, 0x65, 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74, + 0x79, 0x70, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1e, 0x0a, + 0x0a, 0x64, 0x65, 0x66, 0x65, 0x72, 0x72, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x08, 0x52, 0x0a, 0x64, 0x65, 0x66, 0x65, 0x72, 0x72, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x22, 0x0a, + 0x0c, 0x69, 0x6e, 0x69, 0x74, 0x64, 0x65, 0x66, 0x65, 0x72, 0x72, 0x65, 0x64, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x08, 0x52, 0x0c, 0x69, 0x6e, 0x69, 0x74, 0x64, 0x65, 0x66, 0x65, 0x72, 0x72, 0x65, + 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x24, 0x0a, + 0x0d, 0x69, 0x73, 0x5f, 0x6e, 0x6f, 0x5f, 0x69, 0x6e, 0x68, 0x65, 0x72, 0x69, 0x74, 0x18, 0x06, + 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x69, 0x73, 0x5f, 0x6e, 0x6f, 0x5f, 0x69, 0x6e, 0x68, 0x65, + 0x72, 0x69, 0x74, 0x12, 0x2a, 0x0a, 0x08, 0x72, 0x61, 0x77, 0x5f, 0x65, 0x78, 0x70, 0x72, 0x18, + 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, + 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x08, 0x72, 0x61, 0x77, 0x5f, 0x65, 0x78, 0x70, 0x72, 0x12, + 0x20, 0x0a, 0x0b, 0x63, 0x6f, 0x6f, 0x6b, 0x65, 0x64, 0x5f, 0x65, 0x78, 0x70, 0x72, 0x18, 0x08, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x63, 0x6f, 0x6f, 0x6b, 0x65, 0x64, 0x5f, 0x65, 0x78, 0x70, + 0x72, 0x12, 0x26, 0x0a, 0x0e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x77, + 0x68, 0x65, 0x6e, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x67, 0x65, 0x6e, 0x65, 0x72, + 0x61, 0x74, 0x65, 0x64, 0x5f, 0x77, 0x68, 0x65, 0x6e, 0x12, 0x22, 0x0a, 0x04, 0x6b, 0x65, 0x79, + 0x73, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, + 0x72, 0x79, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x04, 0x6b, 0x65, 0x79, 0x73, 0x12, 0x2c, 0x0a, + 0x09, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x69, 0x6e, 0x67, 0x18, 0x0b, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x0e, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4e, 0x6f, 0x64, 0x65, + 0x52, 0x09, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x69, 0x6e, 0x67, 0x12, 0x2e, 0x0a, 0x0a, 0x65, + 0x78, 0x63, 0x6c, 0x75, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x0c, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x0e, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, + 0x0a, 0x65, 0x78, 0x63, 0x6c, 0x75, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x28, 0x0a, 0x07, 0x6f, + 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x0d, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, + 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x07, 0x6f, 0x70, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x6e, 0x61, + 0x6d, 0x65, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x6e, + 0x61, 0x6d, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x73, 0x70, 0x61, 0x63, + 0x65, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x73, 0x70, + 0x61, 0x63, 0x65, 0x12, 0x32, 0x0a, 0x14, 0x72, 0x65, 0x73, 0x65, 0x74, 0x5f, 0x64, 0x65, 0x66, + 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x74, 0x62, 0x6c, 0x73, 0x70, 0x63, 0x18, 0x10, 0x20, 0x01, 0x28, + 0x08, 0x52, 0x14, 0x72, 0x65, 0x73, 0x65, 0x74, 0x5f, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, + 0x5f, 0x74, 0x62, 0x6c, 0x73, 0x70, 0x63, 0x12, 0x24, 0x0a, 0x0d, 0x61, 0x63, 0x63, 0x65, 0x73, + 0x73, 0x5f, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x18, 0x11, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, + 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x5f, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x12, 0x32, 0x0a, + 0x0c, 0x77, 0x68, 0x65, 0x72, 0x65, 0x5f, 0x63, 0x6c, 0x61, 0x75, 0x73, 0x65, 0x18, 0x12, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4e, + 0x6f, 0x64, 0x65, 0x52, 0x0c, 0x77, 0x68, 0x65, 0x72, 0x65, 0x5f, 0x63, 0x6c, 0x61, 0x75, 0x73, + 0x65, 0x12, 0x2c, 0x0a, 0x07, 0x70, 0x6b, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x13, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x52, 0x61, + 0x6e, 0x67, 0x65, 0x56, 0x61, 0x72, 0x52, 0x07, 0x70, 0x6b, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x12, + 0x2a, 0x0a, 0x08, 0x66, 0x6b, 0x5f, 0x61, 0x74, 0x74, 0x72, 0x73, 0x18, 0x14, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4e, 0x6f, 0x64, + 0x65, 0x52, 0x08, 0x66, 0x6b, 0x5f, 0x61, 0x74, 0x74, 0x72, 0x73, 0x12, 0x2a, 0x0a, 0x08, 0x70, + 0x6b, 0x5f, 0x61, 0x74, 0x74, 0x72, 0x73, 0x18, 0x15, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, + 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x08, 0x70, + 0x6b, 0x5f, 0x61, 0x74, 0x74, 0x72, 0x73, 0x12, 0x22, 0x0a, 0x0c, 0x66, 0x6b, 0x5f, 0x6d, 0x61, + 0x74, 0x63, 0x68, 0x74, 0x79, 0x70, 0x65, 0x18, 0x16, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x66, + 0x6b, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x74, 0x79, 0x70, 0x65, 0x12, 0x24, 0x0a, 0x0d, 0x66, + 0x6b, 0x5f, 0x75, 0x70, 0x64, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x17, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0d, 0x66, 0x6b, 0x5f, 0x75, 0x70, 0x64, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x12, 0x24, 0x0a, 0x0d, 0x66, 0x6b, 0x5f, 0x64, 0x65, 0x6c, 0x5f, 0x61, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x18, 0x18, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x66, 0x6b, 0x5f, 0x64, 0x65, 0x6c, + 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x34, 0x0a, 0x0d, 0x6f, 0x6c, 0x64, 0x5f, 0x63, + 0x6f, 0x6e, 0x70, 0x66, 0x65, 0x71, 0x6f, 0x70, 0x18, 0x19, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, + 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x0d, + 0x6f, 0x6c, 0x64, 0x5f, 0x63, 0x6f, 0x6e, 0x70, 0x66, 0x65, 0x71, 0x6f, 0x70, 0x12, 0x28, 0x0a, + 0x0f, 0x6f, 0x6c, 0x64, 0x5f, 0x70, 0x6b, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x6f, 0x69, 0x64, + 0x18, 0x1a, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0f, 0x6f, 0x6c, 0x64, 0x5f, 0x70, 0x6b, 0x74, 0x61, + 0x62, 0x6c, 0x65, 0x5f, 0x6f, 0x69, 0x64, 0x12, 0x28, 0x0a, 0x0f, 0x73, 0x6b, 0x69, 0x70, 0x5f, + 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x1b, 0x20, 0x01, 0x28, 0x08, + 0x52, 0x0f, 0x73, 0x6b, 0x69, 0x70, 0x5f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x12, 0x28, 0x0a, 0x0f, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, 0x6c, 0x79, 0x5f, 0x76, + 0x61, 0x6c, 0x69, 0x64, 0x18, 0x1c, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0f, 0x69, 0x6e, 0x69, 0x74, + 0x69, 0x61, 0x6c, 0x6c, 0x79, 0x5f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x22, 0xbc, 0x01, 0x0a, 0x07, + 0x44, 0x65, 0x66, 0x45, 0x6c, 0x65, 0x6d, 0x12, 0x22, 0x0a, 0x0c, 0x64, 0x65, 0x66, 0x6e, 0x61, + 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x64, + 0x65, 0x66, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x64, + 0x65, 0x66, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x64, 0x65, + 0x66, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x03, 0x61, 0x72, 0x67, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4e, 0x6f, + 0x64, 0x65, 0x52, 0x03, 0x61, 0x72, 0x67, 0x12, 0x35, 0x0a, 0x09, 0x64, 0x65, 0x66, 0x61, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x17, 0x2e, 0x70, 0x67, 0x5f, + 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x44, 0x65, 0x66, 0x45, 0x6c, 0x65, 0x6d, 0x41, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x52, 0x09, 0x64, 0x65, 0x66, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1a, + 0x0a, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xbc, 0x0b, 0x0a, 0x0d, 0x52, + 0x61, 0x6e, 0x67, 0x65, 0x54, 0x62, 0x6c, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x2b, 0x0a, 0x07, + 0x72, 0x74, 0x65, 0x6b, 0x69, 0x6e, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x11, 0x2e, + 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x52, 0x54, 0x45, 0x4b, 0x69, 0x6e, 0x64, + 0x52, 0x07, 0x72, 0x74, 0x65, 0x6b, 0x69, 0x6e, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x72, 0x65, 0x6c, + 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x72, 0x65, 0x6c, 0x69, 0x64, 0x12, + 0x18, 0x0a, 0x07, 0x72, 0x65, 0x6c, 0x6b, 0x69, 0x6e, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x07, 0x72, 0x65, 0x6c, 0x6b, 0x69, 0x6e, 0x64, 0x12, 0x20, 0x0a, 0x0b, 0x72, 0x65, 0x6c, + 0x6c, 0x6f, 0x63, 0x6b, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, + 0x72, 0x65, 0x6c, 0x6c, 0x6f, 0x63, 0x6b, 0x6d, 0x6f, 0x64, 0x65, 0x12, 0x3d, 0x0a, 0x0b, 0x74, + 0x61, 0x62, 0x6c, 0x65, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x1b, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x54, 0x61, 0x62, 0x6c, + 0x65, 0x53, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x43, 0x6c, 0x61, 0x75, 0x73, 0x65, 0x52, 0x0b, 0x74, + 0x61, 0x62, 0x6c, 0x65, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x12, 0x2b, 0x0a, 0x08, 0x73, 0x75, + 0x62, 0x71, 0x75, 0x65, 0x72, 0x79, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x70, + 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x52, 0x08, 0x73, + 0x75, 0x62, 0x71, 0x75, 0x65, 0x72, 0x79, 0x12, 0x2a, 0x0a, 0x10, 0x73, 0x65, 0x63, 0x75, 0x72, + 0x69, 0x74, 0x79, 0x5f, 0x62, 0x61, 0x72, 0x72, 0x69, 0x65, 0x72, 0x18, 0x07, 0x20, 0x01, 0x28, + 0x08, 0x52, 0x10, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x5f, 0x62, 0x61, 0x72, 0x72, + 0x69, 0x65, 0x72, 0x12, 0x2e, 0x0a, 0x08, 0x6a, 0x6f, 0x69, 0x6e, 0x74, 0x79, 0x70, 0x65, 0x18, + 0x08, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x12, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, + 0x2e, 0x4a, 0x6f, 0x69, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x08, 0x6a, 0x6f, 0x69, 0x6e, 0x74, + 0x79, 0x70, 0x65, 0x12, 0x26, 0x0a, 0x0e, 0x6a, 0x6f, 0x69, 0x6e, 0x6d, 0x65, 0x72, 0x67, 0x65, + 0x64, 0x63, 0x6f, 0x6c, 0x73, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0e, 0x6a, 0x6f, 0x69, + 0x6e, 0x6d, 0x65, 0x72, 0x67, 0x65, 0x64, 0x63, 0x6f, 0x6c, 0x73, 0x12, 0x34, 0x0a, 0x0d, 0x6a, + 0x6f, 0x69, 0x6e, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x76, 0x61, 0x72, 0x73, 0x18, 0x0a, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4e, 0x6f, + 0x64, 0x65, 0x52, 0x0d, 0x6a, 0x6f, 0x69, 0x6e, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x76, 0x61, 0x72, + 0x73, 0x12, 0x32, 0x0a, 0x0c, 0x6a, 0x6f, 0x69, 0x6e, 0x6c, 0x65, 0x66, 0x74, 0x63, 0x6f, 0x6c, + 0x73, 0x18, 0x0b, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, + 0x72, 0x79, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x0c, 0x6a, 0x6f, 0x69, 0x6e, 0x6c, 0x65, 0x66, + 0x74, 0x63, 0x6f, 0x6c, 0x73, 0x12, 0x34, 0x0a, 0x0d, 0x6a, 0x6f, 0x69, 0x6e, 0x72, 0x69, 0x67, + 0x68, 0x74, 0x63, 0x6f, 0x6c, 0x73, 0x18, 0x0c, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, + 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x0d, 0x6a, 0x6f, + 0x69, 0x6e, 0x72, 0x69, 0x67, 0x68, 0x74, 0x63, 0x6f, 0x6c, 0x73, 0x12, 0x2c, 0x0a, 0x09, 0x66, + 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x0d, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, + 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x09, + 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x26, 0x0a, 0x0e, 0x66, 0x75, 0x6e, + 0x63, 0x6f, 0x72, 0x64, 0x69, 0x6e, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x18, 0x0e, 0x20, 0x01, 0x28, + 0x08, 0x52, 0x0e, 0x66, 0x75, 0x6e, 0x63, 0x6f, 0x72, 0x64, 0x69, 0x6e, 0x61, 0x6c, 0x69, 0x74, + 0x79, 0x12, 0x31, 0x0a, 0x09, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x66, 0x75, 0x6e, 0x63, 0x18, 0x0f, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, + 0x54, 0x61, 0x62, 0x6c, 0x65, 0x46, 0x75, 0x6e, 0x63, 0x52, 0x09, 0x74, 0x61, 0x62, 0x6c, 0x65, + 0x66, 0x75, 0x6e, 0x63, 0x12, 0x32, 0x0a, 0x0c, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x5f, 0x6c, + 0x69, 0x73, 0x74, 0x73, 0x18, 0x10, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x67, 0x5f, + 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x0c, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x73, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x74, 0x65, 0x6e, + 0x61, 0x6d, 0x65, 0x18, 0x11, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x74, 0x65, 0x6e, 0x61, + 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x63, 0x74, 0x65, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x73, 0x75, + 0x70, 0x18, 0x12, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0b, 0x63, 0x74, 0x65, 0x6c, 0x65, 0x76, 0x65, + 0x6c, 0x73, 0x75, 0x70, 0x12, 0x26, 0x0a, 0x0e, 0x73, 0x65, 0x6c, 0x66, 0x5f, 0x72, 0x65, 0x66, + 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x18, 0x13, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, 0x73, 0x65, + 0x6c, 0x66, 0x5f, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x2a, 0x0a, 0x08, + 0x63, 0x6f, 0x6c, 0x74, 0x79, 0x70, 0x65, 0x73, 0x18, 0x14, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, + 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x08, + 0x63, 0x6f, 0x6c, 0x74, 0x79, 0x70, 0x65, 0x73, 0x12, 0x2e, 0x0a, 0x0a, 0x63, 0x6f, 0x6c, 0x74, + 0x79, 0x70, 0x6d, 0x6f, 0x64, 0x73, 0x18, 0x15, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, + 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x0a, 0x63, 0x6f, + 0x6c, 0x74, 0x79, 0x70, 0x6d, 0x6f, 0x64, 0x73, 0x12, 0x34, 0x0a, 0x0d, 0x63, 0x6f, 0x6c, 0x63, + 0x6f, 0x6c, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x16, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x0e, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, + 0x0d, 0x63, 0x6f, 0x6c, 0x63, 0x6f, 0x6c, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x18, + 0x0a, 0x07, 0x65, 0x6e, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x17, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x07, 0x65, 0x6e, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x65, 0x6e, 0x72, 0x74, + 0x75, 0x70, 0x6c, 0x65, 0x73, 0x18, 0x18, 0x20, 0x01, 0x28, 0x01, 0x52, 0x09, 0x65, 0x6e, 0x72, + 0x74, 0x75, 0x70, 0x6c, 0x65, 0x73, 0x12, 0x25, 0x0a, 0x05, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x18, + 0x19, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, + 0x2e, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x52, 0x05, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x12, 0x23, 0x0a, + 0x04, 0x65, 0x72, 0x65, 0x66, 0x18, 0x1a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x70, 0x67, + 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x52, 0x04, 0x65, 0x72, + 0x65, 0x66, 0x12, 0x18, 0x0a, 0x07, 0x6c, 0x61, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x18, 0x1b, 0x20, + 0x01, 0x28, 0x08, 0x52, 0x07, 0x6c, 0x61, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x12, 0x10, 0x0a, 0x03, + 0x69, 0x6e, 0x68, 0x18, 0x1c, 0x20, 0x01, 0x28, 0x08, 0x52, 0x03, 0x69, 0x6e, 0x68, 0x12, 0x1c, + 0x0a, 0x0a, 0x69, 0x6e, 0x5f, 0x66, 0x72, 0x6f, 0x6d, 0x5f, 0x63, 0x6c, 0x18, 0x1d, 0x20, 0x01, + 0x28, 0x08, 0x52, 0x08, 0x69, 0x6e, 0x46, 0x72, 0x6f, 0x6d, 0x43, 0x6c, 0x12, 0x25, 0x0a, 0x0e, + 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x5f, 0x70, 0x65, 0x72, 0x6d, 0x73, 0x18, 0x1e, + 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0d, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x50, 0x65, + 0x72, 0x6d, 0x73, 0x12, 0x22, 0x0a, 0x0d, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x5f, 0x61, 0x73, 0x5f, + 0x75, 0x73, 0x65, 0x72, 0x18, 0x1f, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0b, 0x63, 0x68, 0x65, 0x63, + 0x6b, 0x41, 0x73, 0x55, 0x73, 0x65, 0x72, 0x12, 0x23, 0x0a, 0x0d, 0x73, 0x65, 0x6c, 0x65, 0x63, + 0x74, 0x65, 0x64, 0x5f, 0x63, 0x6f, 0x6c, 0x73, 0x18, 0x20, 0x20, 0x03, 0x28, 0x04, 0x52, 0x0c, + 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x65, 0x64, 0x43, 0x6f, 0x6c, 0x73, 0x12, 0x23, 0x0a, 0x0d, + 0x69, 0x6e, 0x73, 0x65, 0x72, 0x74, 0x65, 0x64, 0x5f, 0x63, 0x6f, 0x6c, 0x73, 0x18, 0x21, 0x20, + 0x03, 0x28, 0x04, 0x52, 0x0c, 0x69, 0x6e, 0x73, 0x65, 0x72, 0x74, 0x65, 0x64, 0x43, 0x6f, 0x6c, + 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x63, 0x6f, 0x6c, + 0x73, 0x18, 0x22, 0x20, 0x03, 0x28, 0x04, 0x52, 0x0b, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, + 0x43, 0x6f, 0x6c, 0x73, 0x12, 0x2c, 0x0a, 0x12, 0x65, 0x78, 0x74, 0x72, 0x61, 0x5f, 0x75, 0x70, + 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x63, 0x6f, 0x6c, 0x73, 0x18, 0x23, 0x20, 0x03, 0x28, 0x04, + 0x52, 0x10, 0x65, 0x78, 0x74, 0x72, 0x61, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x43, 0x6f, + 0x6c, 0x73, 0x12, 0x35, 0x0a, 0x0e, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x5f, 0x71, + 0x75, 0x61, 0x6c, 0x73, 0x18, 0x24, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x67, 0x5f, + 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x0d, 0x73, 0x65, 0x63, 0x75, + 0x72, 0x69, 0x74, 0x79, 0x51, 0x75, 0x61, 0x6c, 0x73, 0x22, 0xe0, 0x02, 0x0a, 0x10, 0x52, 0x61, + 0x6e, 0x67, 0x65, 0x54, 0x62, 0x6c, 0x46, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2a, + 0x0a, 0x08, 0x66, 0x75, 0x6e, 0x63, 0x65, 0x78, 0x70, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x0e, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4e, 0x6f, 0x64, 0x65, + 0x52, 0x08, 0x66, 0x75, 0x6e, 0x63, 0x65, 0x78, 0x70, 0x72, 0x12, 0x22, 0x0a, 0x0c, 0x66, 0x75, + 0x6e, 0x63, 0x63, 0x6f, 0x6c, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x0c, 0x66, 0x75, 0x6e, 0x63, 0x63, 0x6f, 0x6c, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x32, + 0x0a, 0x0c, 0x66, 0x75, 0x6e, 0x63, 0x63, 0x6f, 0x6c, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x03, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, + 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x0c, 0x66, 0x75, 0x6e, 0x63, 0x63, 0x6f, 0x6c, 0x6e, 0x61, 0x6d, + 0x65, 0x73, 0x12, 0x32, 0x0a, 0x0c, 0x66, 0x75, 0x6e, 0x63, 0x63, 0x6f, 0x6c, 0x74, 0x79, 0x70, + 0x65, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, + 0x65, 0x72, 0x79, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x0c, 0x66, 0x75, 0x6e, 0x63, 0x63, 0x6f, + 0x6c, 0x74, 0x79, 0x70, 0x65, 0x73, 0x12, 0x36, 0x0a, 0x0e, 0x66, 0x75, 0x6e, 0x63, 0x63, 0x6f, + 0x6c, 0x74, 0x79, 0x70, 0x6d, 0x6f, 0x64, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, + 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x0e, + 0x66, 0x75, 0x6e, 0x63, 0x63, 0x6f, 0x6c, 0x74, 0x79, 0x70, 0x6d, 0x6f, 0x64, 0x73, 0x12, 0x3c, + 0x0a, 0x11, 0x66, 0x75, 0x6e, 0x63, 0x63, 0x6f, 0x6c, 0x63, 0x6f, 0x6c, 0x6c, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x67, 0x5f, 0x71, + 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x11, 0x66, 0x75, 0x6e, 0x63, 0x63, + 0x6f, 0x6c, 0x63, 0x6f, 0x6c, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x1e, 0x0a, 0x0a, + 0x66, 0x75, 0x6e, 0x63, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x04, + 0x52, 0x0a, 0x66, 0x75, 0x6e, 0x63, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x22, 0x87, 0x01, 0x0a, + 0x11, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x53, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x43, 0x6c, 0x61, 0x75, + 0x73, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x74, 0x73, 0x6d, 0x68, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x72, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x74, 0x73, 0x6d, 0x68, 0x61, 0x6e, 0x64, 0x6c, + 0x65, 0x72, 0x12, 0x22, 0x0a, 0x04, 0x61, 0x72, 0x67, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x0e, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4e, 0x6f, 0x64, 0x65, + 0x52, 0x04, 0x61, 0x72, 0x67, 0x73, 0x12, 0x2e, 0x0a, 0x0a, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, + 0x61, 0x62, 0x6c, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x67, 0x5f, + 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x0a, 0x72, 0x65, 0x70, 0x65, + 0x61, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x22, 0xac, 0x01, 0x0a, 0x0f, 0x57, 0x69, 0x74, 0x68, 0x43, + 0x68, 0x65, 0x63, 0x6b, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x25, 0x0a, 0x04, 0x6b, 0x69, + 0x6e, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x11, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, + 0x65, 0x72, 0x79, 0x2e, 0x57, 0x43, 0x4f, 0x4b, 0x69, 0x6e, 0x64, 0x52, 0x04, 0x6b, 0x69, 0x6e, + 0x64, 0x12, 0x18, 0x0a, 0x07, 0x72, 0x65, 0x6c, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x07, 0x72, 0x65, 0x6c, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x70, + 0x6f, 0x6c, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x6f, + 0x6c, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x22, 0x0a, 0x04, 0x71, 0x75, 0x61, 0x6c, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4e, + 0x6f, 0x64, 0x65, 0x52, 0x04, 0x71, 0x75, 0x61, 0x6c, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x61, 0x73, + 0x63, 0x61, 0x64, 0x65, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x63, 0x61, 0x73, + 0x63, 0x61, 0x64, 0x65, 0x64, 0x22, 0xa8, 0x01, 0x0a, 0x0f, 0x53, 0x6f, 0x72, 0x74, 0x47, 0x72, + 0x6f, 0x75, 0x70, 0x43, 0x6c, 0x61, 0x75, 0x73, 0x65, 0x12, 0x2b, 0x0a, 0x12, 0x74, 0x6c, 0x65, + 0x5f, 0x73, 0x6f, 0x72, 0x74, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x72, 0x65, 0x66, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0f, 0x74, 0x6c, 0x65, 0x53, 0x6f, 0x72, 0x74, 0x47, 0x72, + 0x6f, 0x75, 0x70, 0x52, 0x65, 0x66, 0x12, 0x12, 0x0a, 0x04, 0x65, 0x71, 0x6f, 0x70, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0d, 0x52, 0x04, 0x65, 0x71, 0x6f, 0x70, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x6f, + 0x72, 0x74, 0x6f, 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x06, 0x73, 0x6f, 0x72, 0x74, + 0x6f, 0x70, 0x12, 0x20, 0x0a, 0x0b, 0x6e, 0x75, 0x6c, 0x6c, 0x73, 0x5f, 0x66, 0x69, 0x72, 0x73, + 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x6e, 0x75, 0x6c, 0x6c, 0x73, 0x5f, 0x66, + 0x69, 0x72, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x68, 0x61, 0x73, 0x68, 0x61, 0x62, 0x6c, 0x65, + 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x68, 0x61, 0x73, 0x68, 0x61, 0x62, 0x6c, 0x65, + 0x22, 0x82, 0x01, 0x0a, 0x0b, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x69, 0x6e, 0x67, 0x53, 0x65, 0x74, + 0x12, 0x2d, 0x0a, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x19, + 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x69, + 0x6e, 0x67, 0x53, 0x65, 0x74, 0x4b, 0x69, 0x6e, 0x64, 0x52, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x12, + 0x28, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x0e, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4e, 0x6f, 0x64, 0x65, + 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x6c, 0x6f, 0x63, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x6c, 0x6f, 0x63, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xbd, 0x04, 0x0a, 0x0c, 0x57, 0x69, 0x6e, 0x64, 0x6f, 0x77, + 0x43, 0x6c, 0x61, 0x75, 0x73, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x72, 0x65, + 0x66, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x72, 0x65, 0x66, + 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x39, 0x0a, 0x10, 0x70, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, + 0x6e, 0x5f, 0x63, 0x6c, 0x61, 0x75, 0x73, 0x65, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, + 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x0f, + 0x70, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6c, 0x61, 0x75, 0x73, 0x65, 0x12, + 0x31, 0x0a, 0x0c, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x5f, 0x63, 0x6c, 0x61, 0x75, 0x73, 0x65, 0x18, + 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, + 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x0b, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x43, 0x6c, 0x61, 0x75, + 0x73, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x5f, 0x6f, 0x70, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x66, 0x72, 0x61, 0x6d, 0x65, + 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x31, 0x0a, 0x0c, 0x73, 0x74, 0x61, 0x72, 0x74, + 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, + 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x0b, 0x73, + 0x74, 0x61, 0x72, 0x74, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x12, 0x2d, 0x0a, 0x0a, 0x65, 0x6e, + 0x64, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, + 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x09, + 0x65, 0x6e, 0x64, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x12, 0x2d, 0x0a, 0x13, 0x73, 0x74, 0x61, + 0x72, 0x74, 0x5f, 0x69, 0x6e, 0x5f, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x66, 0x75, 0x6e, 0x63, + 0x18, 0x08, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x10, 0x73, 0x74, 0x61, 0x72, 0x74, 0x49, 0x6e, 0x52, + 0x61, 0x6e, 0x67, 0x65, 0x46, 0x75, 0x6e, 0x63, 0x12, 0x29, 0x0a, 0x11, 0x65, 0x6e, 0x64, 0x5f, + 0x69, 0x6e, 0x5f, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x66, 0x75, 0x6e, 0x63, 0x18, 0x09, 0x20, + 0x01, 0x28, 0x0d, 0x52, 0x0e, 0x65, 0x6e, 0x64, 0x49, 0x6e, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x46, + 0x75, 0x6e, 0x63, 0x12, 0x22, 0x0a, 0x0d, 0x69, 0x6e, 0x5f, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x5f, + 0x63, 0x6f, 0x6c, 0x6c, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0b, 0x69, 0x6e, 0x52, 0x61, + 0x6e, 0x67, 0x65, 0x43, 0x6f, 0x6c, 0x6c, 0x12, 0x20, 0x0a, 0x0c, 0x69, 0x6e, 0x5f, 0x72, 0x61, + 0x6e, 0x67, 0x65, 0x5f, 0x61, 0x73, 0x63, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x69, + 0x6e, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x41, 0x73, 0x63, 0x12, 0x2f, 0x0a, 0x14, 0x69, 0x6e, 0x5f, + 0x72, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x6e, 0x75, 0x6c, 0x6c, 0x73, 0x5f, 0x66, 0x69, 0x72, 0x73, + 0x74, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x08, 0x52, 0x11, 0x69, 0x6e, 0x52, 0x61, 0x6e, 0x67, 0x65, + 0x4e, 0x75, 0x6c, 0x6c, 0x73, 0x46, 0x69, 0x72, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x77, 0x69, + 0x6e, 0x72, 0x65, 0x66, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x06, 0x77, 0x69, 0x6e, 0x72, + 0x65, 0x66, 0x12, 0x21, 0x0a, 0x0c, 0x63, 0x6f, 0x70, 0x69, 0x65, 0x64, 0x5f, 0x6f, 0x72, 0x64, + 0x65, 0x72, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x63, 0x6f, 0x70, 0x69, 0x65, 0x64, + 0x4f, 0x72, 0x64, 0x65, 0x72, 0x22, 0x90, 0x01, 0x0a, 0x0e, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, + 0x57, 0x69, 0x74, 0x68, 0x41, 0x72, 0x67, 0x73, 0x12, 0x28, 0x0a, 0x07, 0x6f, 0x62, 0x6a, 0x6e, + 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x67, 0x5f, 0x71, + 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x07, 0x6f, 0x62, 0x6a, 0x6e, 0x61, + 0x6d, 0x65, 0x12, 0x28, 0x0a, 0x07, 0x6f, 0x62, 0x6a, 0x61, 0x72, 0x67, 0x73, 0x18, 0x02, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4e, + 0x6f, 0x64, 0x65, 0x52, 0x07, 0x6f, 0x62, 0x6a, 0x61, 0x72, 0x67, 0x73, 0x12, 0x2a, 0x0a, 0x10, + 0x61, 0x72, 0x67, 0x73, 0x5f, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x10, 0x61, 0x72, 0x67, 0x73, 0x5f, 0x75, 0x6e, 0x73, + 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x22, 0x4e, 0x0a, 0x0a, 0x41, 0x63, 0x63, 0x65, + 0x73, 0x73, 0x50, 0x72, 0x69, 0x76, 0x12, 0x1c, 0x0a, 0x09, 0x70, 0x72, 0x69, 0x76, 0x5f, 0x6e, + 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x72, 0x69, 0x76, 0x5f, + 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x22, 0x0a, 0x04, 0x63, 0x6f, 0x6c, 0x73, 0x18, 0x02, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4e, 0x6f, + 0x64, 0x65, 0x52, 0x04, 0x63, 0x6f, 0x6c, 0x73, 0x22, 0x8d, 0x02, 0x0a, 0x11, 0x43, 0x72, 0x65, + 0x61, 0x74, 0x65, 0x4f, 0x70, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x49, 0x74, 0x65, 0x6d, 0x12, 0x1a, + 0x0a, 0x08, 0x69, 0x74, 0x65, 0x6d, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x08, 0x69, 0x74, 0x65, 0x6d, 0x74, 0x79, 0x70, 0x65, 0x12, 0x2c, 0x0a, 0x04, 0x6e, 0x61, + 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, + 0x65, 0x72, 0x79, 0x2e, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x57, 0x69, 0x74, 0x68, 0x41, 0x72, + 0x67, 0x73, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x6e, 0x75, 0x6d, 0x62, + 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, + 0x12, 0x32, 0x0a, 0x0c, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x5f, 0x66, 0x61, 0x6d, 0x69, 0x6c, 0x79, + 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, + 0x79, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x0c, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x5f, 0x66, 0x61, + 0x6d, 0x69, 0x6c, 0x79, 0x12, 0x2e, 0x0a, 0x0a, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x5f, 0x61, 0x72, + 0x67, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, + 0x65, 0x72, 0x79, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x0a, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x5f, + 0x61, 0x72, 0x67, 0x73, 0x12, 0x32, 0x0a, 0x0a, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x64, 0x74, 0x79, + 0x70, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, + 0x65, 0x72, 0x79, 0x2e, 0x54, 0x79, 0x70, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x52, 0x0a, 0x73, 0x74, + 0x6f, 0x72, 0x65, 0x64, 0x74, 0x79, 0x70, 0x65, 0x22, 0x5b, 0x0a, 0x0f, 0x54, 0x61, 0x62, 0x6c, + 0x65, 0x4c, 0x69, 0x6b, 0x65, 0x43, 0x6c, 0x61, 0x75, 0x73, 0x65, 0x12, 0x2e, 0x0a, 0x08, 0x72, + 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, + 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x56, 0x61, + 0x72, 0x52, 0x08, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x6f, + 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x07, 0x6f, 0x70, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0xb5, 0x01, 0x0a, 0x11, 0x46, 0x75, 0x6e, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x6e, + 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, + 0x2d, 0x0a, 0x08, 0x61, 0x72, 0x67, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x12, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x54, 0x79, 0x70, + 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x52, 0x07, 0x61, 0x72, 0x67, 0x54, 0x79, 0x70, 0x65, 0x12, 0x33, + 0x0a, 0x04, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1f, 0x2e, 0x70, + 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x46, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x4d, 0x6f, 0x64, 0x65, 0x52, 0x04, 0x6d, + 0x6f, 0x64, 0x65, 0x12, 0x28, 0x0a, 0x07, 0x64, 0x65, 0x66, 0x65, 0x78, 0x70, 0x72, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, + 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x07, 0x64, 0x65, 0x66, 0x65, 0x78, 0x70, 0x72, 0x22, 0xb5, 0x01, + 0x0a, 0x0d, 0x4c, 0x6f, 0x63, 0x6b, 0x69, 0x6e, 0x67, 0x43, 0x6c, 0x61, 0x75, 0x73, 0x65, 0x12, + 0x2f, 0x0a, 0x0b, 0x6c, 0x6f, 0x63, 0x6b, 0x65, 0x64, 0x5f, 0x72, 0x65, 0x6c, 0x73, 0x18, 0x01, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, + 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x0a, 0x6c, 0x6f, 0x63, 0x6b, 0x65, 0x64, 0x52, 0x65, 0x6c, 0x73, + 0x12, 0x38, 0x0a, 0x08, 0x73, 0x74, 0x72, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x0e, 0x32, 0x1c, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4c, 0x6f, + 0x63, 0x6b, 0x43, 0x6c, 0x61, 0x75, 0x73, 0x65, 0x53, 0x74, 0x72, 0x65, 0x6e, 0x67, 0x74, 0x68, + 0x52, 0x08, 0x73, 0x74, 0x72, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x12, 0x39, 0x0a, 0x0b, 0x77, 0x61, + 0x69, 0x74, 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, + 0x18, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4c, 0x6f, 0x63, 0x6b, 0x57, + 0x61, 0x69, 0x74, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x0a, 0x77, 0x61, 0x69, 0x74, 0x50, + 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x22, 0xb7, 0x01, 0x0a, 0x0d, 0x52, 0x6f, 0x77, 0x4d, 0x61, 0x72, + 0x6b, 0x43, 0x6c, 0x61, 0x75, 0x73, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x72, 0x74, 0x69, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0d, 0x52, 0x03, 0x72, 0x74, 0x69, 0x12, 0x38, 0x0a, 0x08, 0x73, 0x74, 0x72, + 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1c, 0x2e, 0x70, 0x67, + 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4c, 0x6f, 0x63, 0x6b, 0x43, 0x6c, 0x61, 0x75, 0x73, + 0x65, 0x53, 0x74, 0x72, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x52, 0x08, 0x73, 0x74, 0x72, 0x65, 0x6e, + 0x67, 0x74, 0x68, 0x12, 0x39, 0x0a, 0x0b, 0x77, 0x61, 0x69, 0x74, 0x5f, 0x70, 0x6f, 0x6c, 0x69, + 0x63, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x18, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, + 0x65, 0x72, 0x79, 0x2e, 0x4c, 0x6f, 0x63, 0x6b, 0x57, 0x61, 0x69, 0x74, 0x50, 0x6f, 0x6c, 0x69, + 0x63, 0x79, 0x52, 0x0a, 0x77, 0x61, 0x69, 0x74, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x1f, + 0x0a, 0x0b, 0x70, 0x75, 0x73, 0x68, 0x65, 0x64, 0x5f, 0x64, 0x6f, 0x77, 0x6e, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x08, 0x52, 0x0a, 0x70, 0x75, 0x73, 0x68, 0x65, 0x64, 0x44, 0x6f, 0x77, 0x6e, 0x22, + 0xb6, 0x01, 0x0a, 0x0c, 0x58, 0x6d, 0x6c, 0x53, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x69, 0x7a, 0x65, + 0x12, 0x35, 0x0a, 0x09, 0x78, 0x6d, 0x6c, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0e, 0x32, 0x17, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x58, + 0x6d, 0x6c, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x09, 0x78, 0x6d, + 0x6c, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x22, 0x0a, 0x04, 0x65, 0x78, 0x70, 0x72, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, + 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x04, 0x65, 0x78, 0x70, 0x72, 0x12, 0x2f, 0x0a, 0x09, 0x74, + 0x79, 0x70, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, + 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x54, 0x79, 0x70, 0x65, 0x4e, 0x61, + 0x6d, 0x65, 0x52, 0x08, 0x74, 0x79, 0x70, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, + 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, + 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x6a, 0x0a, 0x0a, 0x57, 0x69, 0x74, 0x68, + 0x43, 0x6c, 0x61, 0x75, 0x73, 0x65, 0x12, 0x22, 0x0a, 0x04, 0x63, 0x74, 0x65, 0x73, 0x18, 0x01, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, + 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x04, 0x63, 0x74, 0x65, 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x72, 0x65, + 0x63, 0x75, 0x72, 0x73, 0x69, 0x76, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x72, + 0x65, 0x63, 0x75, 0x72, 0x73, 0x69, 0x76, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x6c, 0x6f, 0x63, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x6c, 0x6f, 0x63, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xa7, 0x01, 0x0a, 0x0b, 0x49, 0x6e, 0x66, 0x65, 0x72, 0x43, 0x6c, + 0x61, 0x75, 0x73, 0x65, 0x12, 0x2f, 0x0a, 0x0b, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x5f, 0x65, 0x6c, + 0x65, 0x6d, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x67, 0x5f, 0x71, + 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x0a, 0x69, 0x6e, 0x64, 0x65, 0x78, + 0x45, 0x6c, 0x65, 0x6d, 0x73, 0x12, 0x31, 0x0a, 0x0c, 0x77, 0x68, 0x65, 0x72, 0x65, 0x5f, 0x63, + 0x6c, 0x61, 0x75, 0x73, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x67, + 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x0b, 0x77, 0x68, 0x65, + 0x72, 0x65, 0x43, 0x6c, 0x61, 0x75, 0x73, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x6e, + 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x6e, 0x61, + 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xf3, + 0x01, 0x0a, 0x10, 0x4f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x6c, 0x69, 0x63, 0x74, 0x43, 0x6c, 0x61, + 0x75, 0x73, 0x65, 0x12, 0x32, 0x0a, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0e, 0x32, 0x1a, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4f, + 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x6c, 0x69, 0x63, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, + 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2b, 0x0a, 0x05, 0x69, 0x6e, 0x66, 0x65, 0x72, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, + 0x79, 0x2e, 0x49, 0x6e, 0x66, 0x65, 0x72, 0x43, 0x6c, 0x61, 0x75, 0x73, 0x65, 0x52, 0x05, 0x69, + 0x6e, 0x66, 0x65, 0x72, 0x12, 0x2f, 0x0a, 0x0b, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x6c, + 0x69, 0x73, 0x74, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x67, 0x5f, 0x71, + 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x0a, 0x74, 0x61, 0x72, 0x67, 0x65, + 0x74, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x31, 0x0a, 0x0c, 0x77, 0x68, 0x65, 0x72, 0x65, 0x5f, 0x63, + 0x6c, 0x61, 0x75, 0x73, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x67, + 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x0b, 0x77, 0x68, 0x65, + 0x72, 0x65, 0x43, 0x6c, 0x61, 0x75, 0x73, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x6c, 0x6f, 0x63, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x6c, 0x6f, 0x63, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x89, 0x04, 0x0a, 0x0f, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x54, + 0x61, 0x62, 0x6c, 0x65, 0x45, 0x78, 0x70, 0x72, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x74, 0x65, 0x6e, + 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x74, 0x65, 0x6e, 0x61, + 0x6d, 0x65, 0x12, 0x34, 0x0a, 0x0d, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x63, 0x6f, 0x6c, 0x6e, 0x61, + 0x6d, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x67, 0x5f, 0x71, + 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x0d, 0x61, 0x6c, 0x69, 0x61, 0x73, + 0x63, 0x6f, 0x6c, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x42, 0x0a, 0x0f, 0x63, 0x74, 0x65, 0x6d, + 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x0e, 0x32, 0x18, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x43, 0x54, 0x45, + 0x4d, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x52, 0x0f, 0x63, 0x74, 0x65, + 0x6d, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x12, 0x2a, 0x0a, 0x08, + 0x63, 0x74, 0x65, 0x71, 0x75, 0x65, 0x72, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, + 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x08, + 0x63, 0x74, 0x65, 0x71, 0x75, 0x65, 0x72, 0x79, 0x12, 0x1a, 0x0a, 0x08, 0x6c, 0x6f, 0x63, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x6c, 0x6f, 0x63, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x22, 0x0a, 0x0c, 0x63, 0x74, 0x65, 0x72, 0x65, 0x63, 0x75, 0x72, + 0x73, 0x69, 0x76, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x63, 0x74, 0x65, 0x72, + 0x65, 0x63, 0x75, 0x72, 0x73, 0x69, 0x76, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x63, 0x74, 0x65, 0x72, + 0x65, 0x66, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x63, + 0x74, 0x65, 0x72, 0x65, 0x66, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x30, 0x0a, 0x0b, 0x63, 0x74, + 0x65, 0x63, 0x6f, 0x6c, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x0e, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, + 0x0b, 0x63, 0x74, 0x65, 0x63, 0x6f, 0x6c, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x30, 0x0a, 0x0b, + 0x63, 0x74, 0x65, 0x63, 0x6f, 0x6c, 0x74, 0x79, 0x70, 0x65, 0x73, 0x18, 0x09, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4e, 0x6f, 0x64, + 0x65, 0x52, 0x0b, 0x63, 0x74, 0x65, 0x63, 0x6f, 0x6c, 0x74, 0x79, 0x70, 0x65, 0x73, 0x12, 0x34, + 0x0a, 0x0d, 0x63, 0x74, 0x65, 0x63, 0x6f, 0x6c, 0x74, 0x79, 0x70, 0x6d, 0x6f, 0x64, 0x73, 0x18, + 0x0a, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, + 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x0d, 0x63, 0x74, 0x65, 0x63, 0x6f, 0x6c, 0x74, 0x79, 0x70, + 0x6d, 0x6f, 0x64, 0x73, 0x12, 0x3a, 0x0a, 0x10, 0x63, 0x74, 0x65, 0x63, 0x6f, 0x6c, 0x63, 0x6f, + 0x6c, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x0b, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, + 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x10, + 0x63, 0x74, 0x65, 0x63, 0x6f, 0x6c, 0x63, 0x6f, 0x6c, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x22, 0x76, 0x0a, 0x08, 0x52, 0x6f, 0x6c, 0x65, 0x53, 0x70, 0x65, 0x63, 0x12, 0x32, 0x0a, 0x08, + 0x72, 0x6f, 0x6c, 0x65, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x16, + 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x52, 0x6f, 0x6c, 0x65, 0x53, 0x70, + 0x65, 0x63, 0x54, 0x79, 0x70, 0x65, 0x52, 0x08, 0x72, 0x6f, 0x6c, 0x65, 0x74, 0x79, 0x70, 0x65, + 0x12, 0x1a, 0x0a, 0x08, 0x72, 0x6f, 0x6c, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x08, 0x72, 0x6f, 0x6c, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, + 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, + 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x59, 0x0a, 0x11, 0x54, 0x72, 0x69, 0x67, + 0x67, 0x65, 0x72, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, + 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, + 0x65, 0x12, 0x15, 0x0a, 0x06, 0x69, 0x73, 0x5f, 0x6e, 0x65, 0x77, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x08, 0x52, 0x05, 0x69, 0x73, 0x4e, 0x65, 0x77, 0x12, 0x19, 0x0a, 0x08, 0x69, 0x73, 0x5f, 0x74, + 0x61, 0x62, 0x6c, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x69, 0x73, 0x54, 0x61, + 0x62, 0x6c, 0x65, 0x22, 0xbb, 0x01, 0x0a, 0x0d, 0x50, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, + 0x6e, 0x45, 0x6c, 0x65, 0x6d, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x22, 0x0a, 0x04, 0x65, 0x78, 0x70, + 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, + 0x72, 0x79, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x04, 0x65, 0x78, 0x70, 0x72, 0x12, 0x2c, 0x0a, + 0x09, 0x63, 0x6f, 0x6c, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x0e, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4e, 0x6f, 0x64, 0x65, + 0x52, 0x09, 0x63, 0x6f, 0x6c, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x28, 0x0a, 0x07, 0x6f, + 0x70, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, + 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x07, 0x6f, 0x70, + 0x63, 0x6c, 0x61, 0x73, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x22, 0x78, 0x0a, 0x0d, 0x50, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x70, + 0x65, 0x63, 0x12, 0x1a, 0x0a, 0x08, 0x73, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x73, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x12, 0x2f, + 0x0a, 0x0b, 0x70, 0x61, 0x72, 0x74, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x02, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4e, + 0x6f, 0x64, 0x65, 0x52, 0x0a, 0x70, 0x61, 0x72, 0x74, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, + 0x1a, 0x0a, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xb8, 0x02, 0x0a, 0x12, + 0x50, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x53, 0x70, + 0x65, 0x63, 0x12, 0x1a, 0x0a, 0x08, 0x73, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x73, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x12, 0x1e, + 0x0a, 0x0a, 0x69, 0x73, 0x5f, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x08, 0x52, 0x0a, 0x69, 0x73, 0x5f, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x12, 0x18, + 0x0a, 0x07, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x75, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x07, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x75, 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x72, 0x65, 0x6d, 0x61, + 0x69, 0x6e, 0x64, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x72, 0x65, 0x6d, + 0x61, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x12, 0x2e, 0x0a, 0x0a, 0x6c, 0x69, 0x73, 0x74, 0x64, 0x61, + 0x74, 0x75, 0x6d, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x67, 0x5f, + 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x0a, 0x6c, 0x69, 0x73, 0x74, + 0x64, 0x61, 0x74, 0x75, 0x6d, 0x73, 0x12, 0x30, 0x0a, 0x0b, 0x6c, 0x6f, 0x77, 0x65, 0x72, 0x64, + 0x61, 0x74, 0x75, 0x6d, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x67, + 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x0b, 0x6c, 0x6f, 0x77, + 0x65, 0x72, 0x64, 0x61, 0x74, 0x75, 0x6d, 0x73, 0x12, 0x30, 0x0a, 0x0b, 0x75, 0x70, 0x70, 0x65, + 0x72, 0x64, 0x61, 0x74, 0x75, 0x6d, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, + 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x0b, 0x75, + 0x70, 0x70, 0x65, 0x72, 0x64, 0x61, 0x74, 0x75, 0x6d, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x6c, 0x6f, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x6c, 0x6f, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x8e, 0x01, 0x0a, 0x13, 0x50, 0x61, 0x72, 0x74, 0x69, + 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x44, 0x61, 0x74, 0x75, 0x6d, 0x12, 0x35, + 0x0a, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x21, 0x2e, 0x70, + 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x50, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, + 0x6e, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x44, 0x61, 0x74, 0x75, 0x6d, 0x4b, 0x69, 0x6e, 0x64, 0x52, + 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x12, 0x24, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, + 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x6c, + 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x6c, + 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x6a, 0x0a, 0x0c, 0x50, 0x61, 0x72, 0x74, 0x69, + 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6d, 0x64, 0x12, 0x26, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, + 0x2e, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x56, 0x61, 0x72, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, + 0x32, 0x0a, 0x05, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, + 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x50, 0x61, 0x72, 0x74, 0x69, 0x74, + 0x69, 0x6f, 0x6e, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x53, 0x70, 0x65, 0x63, 0x52, 0x05, 0x62, 0x6f, + 0x75, 0x6e, 0x64, 0x22, 0x7c, 0x0a, 0x0e, 0x56, 0x61, 0x63, 0x75, 0x75, 0x6d, 0x52, 0x65, 0x6c, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2e, 0x0a, 0x08, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, + 0x72, 0x79, 0x2e, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x56, 0x61, 0x72, 0x52, 0x08, 0x72, 0x65, 0x6c, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x10, 0x0a, 0x03, 0x6f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x0d, 0x52, 0x03, 0x6f, 0x69, 0x64, 0x12, 0x28, 0x0a, 0x07, 0x76, 0x61, 0x5f, 0x63, 0x6f, + 0x6c, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, + 0x65, 0x72, 0x79, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x07, 0x76, 0x61, 0x5f, 0x63, 0x6f, 0x6c, + 0x73, 0x22, 0x8e, 0x01, 0x0a, 0x0f, 0x49, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x43, 0x6f, 0x64, 0x65, + 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x12, 0x20, 0x0a, 0x0b, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, + 0x74, 0x65, 0x78, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x73, 0x6f, 0x75, 0x72, + 0x63, 0x65, 0x5f, 0x74, 0x65, 0x78, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x6c, 0x61, 0x6e, 0x67, 0x5f, + 0x6f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x07, 0x6c, 0x61, 0x6e, 0x67, 0x4f, + 0x69, 0x64, 0x12, 0x26, 0x0a, 0x0f, 0x6c, 0x61, 0x6e, 0x67, 0x5f, 0x69, 0x73, 0x5f, 0x74, 0x72, + 0x75, 0x73, 0x74, 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x6c, 0x61, 0x6e, + 0x67, 0x49, 0x73, 0x54, 0x72, 0x75, 0x73, 0x74, 0x65, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x74, + 0x6f, 0x6d, 0x69, 0x63, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x61, 0x74, 0x6f, 0x6d, + 0x69, 0x63, 0x22, 0x25, 0x0a, 0x0b, 0x43, 0x61, 0x6c, 0x6c, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, + 0x74, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x74, 0x6f, 0x6d, 0x69, 0x63, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x08, 0x52, 0x06, 0x61, 0x74, 0x6f, 0x6d, 0x69, 0x63, 0x22, 0x94, 0x01, 0x0a, 0x09, 0x53, 0x63, + 0x61, 0x6e, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x12, 0x10, 0x0a, + 0x03, 0x65, 0x6e, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x65, 0x6e, 0x64, 0x12, + 0x25, 0x0a, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x0f, + 0x2e, 0x70, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, + 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x38, 0x0a, 0x0c, 0x6b, 0x65, 0x79, 0x77, 0x6f, 0x72, + 0x64, 0x5f, 0x6b, 0x69, 0x6e, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x15, 0x2e, 0x70, + 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4b, 0x65, 0x79, 0x77, 0x6f, 0x72, 0x64, 0x4b, + 0x69, 0x6e, 0x64, 0x52, 0x0b, 0x6b, 0x65, 0x79, 0x77, 0x6f, 0x72, 0x64, 0x4b, 0x69, 0x6e, 0x64, + 0x2a, 0x7f, 0x0a, 0x0e, 0x4f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x69, 0x6e, 0x67, 0x4b, 0x69, + 0x6e, 0x64, 0x12, 0x1d, 0x0a, 0x19, 0x4f, 0x56, 0x45, 0x52, 0x52, 0x49, 0x44, 0x49, 0x4e, 0x47, + 0x5f, 0x4b, 0x49, 0x4e, 0x44, 0x5f, 0x55, 0x4e, 0x44, 0x45, 0x46, 0x49, 0x4e, 0x45, 0x44, 0x10, + 0x00, 0x12, 0x16, 0x0a, 0x12, 0x4f, 0x56, 0x45, 0x52, 0x52, 0x49, 0x44, 0x49, 0x4e, 0x47, 0x5f, + 0x4e, 0x4f, 0x54, 0x5f, 0x53, 0x45, 0x54, 0x10, 0x01, 0x12, 0x19, 0x0a, 0x15, 0x4f, 0x56, 0x45, + 0x52, 0x52, 0x49, 0x44, 0x49, 0x4e, 0x47, 0x5f, 0x55, 0x53, 0x45, 0x52, 0x5f, 0x56, 0x41, 0x4c, + 0x55, 0x45, 0x10, 0x02, 0x12, 0x1b, 0x0a, 0x17, 0x4f, 0x56, 0x45, 0x52, 0x52, 0x49, 0x44, 0x49, + 0x4e, 0x47, 0x5f, 0x53, 0x59, 0x53, 0x54, 0x45, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x10, + 0x03, 0x2a, 0x9b, 0x01, 0x0a, 0x0b, 0x51, 0x75, 0x65, 0x72, 0x79, 0x53, 0x6f, 0x75, 0x72, 0x63, + 0x65, 0x12, 0x1a, 0x0a, 0x16, 0x51, 0x55, 0x45, 0x52, 0x59, 0x5f, 0x53, 0x4f, 0x55, 0x52, 0x43, + 0x45, 0x5f, 0x55, 0x4e, 0x44, 0x45, 0x46, 0x49, 0x4e, 0x45, 0x44, 0x10, 0x00, 0x12, 0x11, 0x0a, + 0x0d, 0x51, 0x53, 0x52, 0x43, 0x5f, 0x4f, 0x52, 0x49, 0x47, 0x49, 0x4e, 0x41, 0x4c, 0x10, 0x01, + 0x12, 0x0f, 0x0a, 0x0b, 0x51, 0x53, 0x52, 0x43, 0x5f, 0x50, 0x41, 0x52, 0x53, 0x45, 0x52, 0x10, + 0x02, 0x12, 0x15, 0x0a, 0x11, 0x51, 0x53, 0x52, 0x43, 0x5f, 0x49, 0x4e, 0x53, 0x54, 0x45, 0x41, + 0x44, 0x5f, 0x52, 0x55, 0x4c, 0x45, 0x10, 0x03, 0x12, 0x1a, 0x0a, 0x16, 0x51, 0x53, 0x52, 0x43, + 0x5f, 0x51, 0x55, 0x41, 0x4c, 0x5f, 0x49, 0x4e, 0x53, 0x54, 0x45, 0x41, 0x44, 0x5f, 0x52, 0x55, + 0x4c, 0x45, 0x10, 0x04, 0x12, 0x19, 0x0a, 0x15, 0x51, 0x53, 0x52, 0x43, 0x5f, 0x4e, 0x4f, 0x4e, + 0x5f, 0x49, 0x4e, 0x53, 0x54, 0x45, 0x41, 0x44, 0x5f, 0x52, 0x55, 0x4c, 0x45, 0x10, 0x05, 0x2a, + 0x6d, 0x0a, 0x09, 0x53, 0x6f, 0x72, 0x74, 0x42, 0x79, 0x44, 0x69, 0x72, 0x12, 0x19, 0x0a, 0x15, + 0x53, 0x4f, 0x52, 0x54, 0x5f, 0x42, 0x59, 0x5f, 0x44, 0x49, 0x52, 0x5f, 0x55, 0x4e, 0x44, 0x45, + 0x46, 0x49, 0x4e, 0x45, 0x44, 0x10, 0x00, 0x12, 0x12, 0x0a, 0x0e, 0x53, 0x4f, 0x52, 0x54, 0x42, + 0x59, 0x5f, 0x44, 0x45, 0x46, 0x41, 0x55, 0x4c, 0x54, 0x10, 0x01, 0x12, 0x0e, 0x0a, 0x0a, 0x53, + 0x4f, 0x52, 0x54, 0x42, 0x59, 0x5f, 0x41, 0x53, 0x43, 0x10, 0x02, 0x12, 0x0f, 0x0a, 0x0b, 0x53, + 0x4f, 0x52, 0x54, 0x42, 0x59, 0x5f, 0x44, 0x45, 0x53, 0x43, 0x10, 0x03, 0x12, 0x10, 0x0a, 0x0c, + 0x53, 0x4f, 0x52, 0x54, 0x42, 0x59, 0x5f, 0x55, 0x53, 0x49, 0x4e, 0x47, 0x10, 0x04, 0x2a, 0x73, + 0x0a, 0x0b, 0x53, 0x6f, 0x72, 0x74, 0x42, 0x79, 0x4e, 0x75, 0x6c, 0x6c, 0x73, 0x12, 0x1b, 0x0a, + 0x17, 0x53, 0x4f, 0x52, 0x54, 0x5f, 0x42, 0x59, 0x5f, 0x4e, 0x55, 0x4c, 0x4c, 0x53, 0x5f, 0x55, + 0x4e, 0x44, 0x45, 0x46, 0x49, 0x4e, 0x45, 0x44, 0x10, 0x00, 0x12, 0x18, 0x0a, 0x14, 0x53, 0x4f, + 0x52, 0x54, 0x42, 0x59, 0x5f, 0x4e, 0x55, 0x4c, 0x4c, 0x53, 0x5f, 0x44, 0x45, 0x46, 0x41, 0x55, + 0x4c, 0x54, 0x10, 0x01, 0x12, 0x16, 0x0a, 0x12, 0x53, 0x4f, 0x52, 0x54, 0x42, 0x59, 0x5f, 0x4e, + 0x55, 0x4c, 0x4c, 0x53, 0x5f, 0x46, 0x49, 0x52, 0x53, 0x54, 0x10, 0x02, 0x12, 0x15, 0x0a, 0x11, + 0x53, 0x4f, 0x52, 0x54, 0x42, 0x59, 0x5f, 0x4e, 0x55, 0x4c, 0x4c, 0x53, 0x5f, 0x4c, 0x41, 0x53, + 0x54, 0x10, 0x03, 0x2a, 0xd5, 0x02, 0x0a, 0x0b, 0x41, 0x5f, 0x45, 0x78, 0x70, 0x72, 0x5f, 0x4b, + 0x69, 0x6e, 0x64, 0x12, 0x19, 0x0a, 0x15, 0x41, 0x5f, 0x45, 0x58, 0x50, 0x52, 0x5f, 0x4b, 0x49, + 0x4e, 0x44, 0x5f, 0x55, 0x4e, 0x44, 0x45, 0x46, 0x49, 0x4e, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0c, + 0x0a, 0x08, 0x41, 0x45, 0x58, 0x50, 0x52, 0x5f, 0x4f, 0x50, 0x10, 0x01, 0x12, 0x10, 0x0a, 0x0c, + 0x41, 0x45, 0x58, 0x50, 0x52, 0x5f, 0x4f, 0x50, 0x5f, 0x41, 0x4e, 0x59, 0x10, 0x02, 0x12, 0x10, + 0x0a, 0x0c, 0x41, 0x45, 0x58, 0x50, 0x52, 0x5f, 0x4f, 0x50, 0x5f, 0x41, 0x4c, 0x4c, 0x10, 0x03, + 0x12, 0x12, 0x0a, 0x0e, 0x41, 0x45, 0x58, 0x50, 0x52, 0x5f, 0x44, 0x49, 0x53, 0x54, 0x49, 0x4e, + 0x43, 0x54, 0x10, 0x04, 0x12, 0x16, 0x0a, 0x12, 0x41, 0x45, 0x58, 0x50, 0x52, 0x5f, 0x4e, 0x4f, + 0x54, 0x5f, 0x44, 0x49, 0x53, 0x54, 0x49, 0x4e, 0x43, 0x54, 0x10, 0x05, 0x12, 0x10, 0x0a, 0x0c, + 0x41, 0x45, 0x58, 0x50, 0x52, 0x5f, 0x4e, 0x55, 0x4c, 0x4c, 0x49, 0x46, 0x10, 0x06, 0x12, 0x0c, + 0x0a, 0x08, 0x41, 0x45, 0x58, 0x50, 0x52, 0x5f, 0x4f, 0x46, 0x10, 0x07, 0x12, 0x0c, 0x0a, 0x08, + 0x41, 0x45, 0x58, 0x50, 0x52, 0x5f, 0x49, 0x4e, 0x10, 0x08, 0x12, 0x0e, 0x0a, 0x0a, 0x41, 0x45, + 0x58, 0x50, 0x52, 0x5f, 0x4c, 0x49, 0x4b, 0x45, 0x10, 0x09, 0x12, 0x0f, 0x0a, 0x0b, 0x41, 0x45, + 0x58, 0x50, 0x52, 0x5f, 0x49, 0x4c, 0x49, 0x4b, 0x45, 0x10, 0x0a, 0x12, 0x11, 0x0a, 0x0d, 0x41, + 0x45, 0x58, 0x50, 0x52, 0x5f, 0x53, 0x49, 0x4d, 0x49, 0x4c, 0x41, 0x52, 0x10, 0x0b, 0x12, 0x11, + 0x0a, 0x0d, 0x41, 0x45, 0x58, 0x50, 0x52, 0x5f, 0x42, 0x45, 0x54, 0x57, 0x45, 0x45, 0x4e, 0x10, + 0x0c, 0x12, 0x15, 0x0a, 0x11, 0x41, 0x45, 0x58, 0x50, 0x52, 0x5f, 0x4e, 0x4f, 0x54, 0x5f, 0x42, + 0x45, 0x54, 0x57, 0x45, 0x45, 0x4e, 0x10, 0x0d, 0x12, 0x15, 0x0a, 0x11, 0x41, 0x45, 0x58, 0x50, + 0x52, 0x5f, 0x42, 0x45, 0x54, 0x57, 0x45, 0x45, 0x4e, 0x5f, 0x53, 0x59, 0x4d, 0x10, 0x0e, 0x12, + 0x19, 0x0a, 0x15, 0x41, 0x45, 0x58, 0x50, 0x52, 0x5f, 0x4e, 0x4f, 0x54, 0x5f, 0x42, 0x45, 0x54, + 0x57, 0x45, 0x45, 0x4e, 0x5f, 0x53, 0x59, 0x4d, 0x10, 0x0f, 0x12, 0x0f, 0x0a, 0x0b, 0x41, 0x45, + 0x58, 0x50, 0x52, 0x5f, 0x50, 0x41, 0x52, 0x45, 0x4e, 0x10, 0x10, 0x2a, 0x8d, 0x01, 0x0a, 0x0c, + 0x52, 0x6f, 0x6c, 0x65, 0x53, 0x70, 0x65, 0x63, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1c, 0x0a, 0x18, + 0x52, 0x4f, 0x4c, 0x45, 0x5f, 0x53, 0x50, 0x45, 0x43, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, + 0x4e, 0x44, 0x45, 0x46, 0x49, 0x4e, 0x45, 0x44, 0x10, 0x00, 0x12, 0x14, 0x0a, 0x10, 0x52, 0x4f, + 0x4c, 0x45, 0x53, 0x50, 0x45, 0x43, 0x5f, 0x43, 0x53, 0x54, 0x52, 0x49, 0x4e, 0x47, 0x10, 0x01, + 0x12, 0x19, 0x0a, 0x15, 0x52, 0x4f, 0x4c, 0x45, 0x53, 0x50, 0x45, 0x43, 0x5f, 0x43, 0x55, 0x52, + 0x52, 0x45, 0x4e, 0x54, 0x5f, 0x55, 0x53, 0x45, 0x52, 0x10, 0x02, 0x12, 0x19, 0x0a, 0x15, 0x52, + 0x4f, 0x4c, 0x45, 0x53, 0x50, 0x45, 0x43, 0x5f, 0x53, 0x45, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x5f, + 0x55, 0x53, 0x45, 0x52, 0x10, 0x03, 0x12, 0x13, 0x0a, 0x0f, 0x52, 0x4f, 0x4c, 0x45, 0x53, 0x50, + 0x45, 0x43, 0x5f, 0x50, 0x55, 0x42, 0x4c, 0x49, 0x43, 0x10, 0x04, 0x2a, 0xd1, 0x02, 0x0a, 0x0f, + 0x54, 0x61, 0x62, 0x6c, 0x65, 0x4c, 0x69, 0x6b, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, + 0x1f, 0x0a, 0x1b, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x4c, 0x49, 0x4b, 0x45, 0x5f, 0x4f, 0x50, + 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x55, 0x4e, 0x44, 0x45, 0x46, 0x49, 0x4e, 0x45, 0x44, 0x10, 0x00, + 0x12, 0x1e, 0x0a, 0x1a, 0x43, 0x52, 0x45, 0x41, 0x54, 0x45, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, + 0x5f, 0x4c, 0x49, 0x4b, 0x45, 0x5f, 0x43, 0x4f, 0x4d, 0x4d, 0x45, 0x4e, 0x54, 0x53, 0x10, 0x01, + 0x12, 0x21, 0x0a, 0x1d, 0x43, 0x52, 0x45, 0x41, 0x54, 0x45, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, + 0x5f, 0x4c, 0x49, 0x4b, 0x45, 0x5f, 0x43, 0x4f, 0x4e, 0x53, 0x54, 0x52, 0x41, 0x49, 0x4e, 0x54, + 0x53, 0x10, 0x02, 0x12, 0x1e, 0x0a, 0x1a, 0x43, 0x52, 0x45, 0x41, 0x54, 0x45, 0x5f, 0x54, 0x41, + 0x42, 0x4c, 0x45, 0x5f, 0x4c, 0x49, 0x4b, 0x45, 0x5f, 0x44, 0x45, 0x46, 0x41, 0x55, 0x4c, 0x54, + 0x53, 0x10, 0x03, 0x12, 0x1f, 0x0a, 0x1b, 0x43, 0x52, 0x45, 0x41, 0x54, 0x45, 0x5f, 0x54, 0x41, + 0x42, 0x4c, 0x45, 0x5f, 0x4c, 0x49, 0x4b, 0x45, 0x5f, 0x47, 0x45, 0x4e, 0x45, 0x52, 0x41, 0x54, + 0x45, 0x44, 0x10, 0x04, 0x12, 0x1e, 0x0a, 0x1a, 0x43, 0x52, 0x45, 0x41, 0x54, 0x45, 0x5f, 0x54, + 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x4c, 0x49, 0x4b, 0x45, 0x5f, 0x49, 0x44, 0x45, 0x4e, 0x54, 0x49, + 0x54, 0x59, 0x10, 0x05, 0x12, 0x1d, 0x0a, 0x19, 0x43, 0x52, 0x45, 0x41, 0x54, 0x45, 0x5f, 0x54, + 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x4c, 0x49, 0x4b, 0x45, 0x5f, 0x49, 0x4e, 0x44, 0x45, 0x58, 0x45, + 0x53, 0x10, 0x06, 0x12, 0x20, 0x0a, 0x1c, 0x43, 0x52, 0x45, 0x41, 0x54, 0x45, 0x5f, 0x54, 0x41, + 0x42, 0x4c, 0x45, 0x5f, 0x4c, 0x49, 0x4b, 0x45, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x49, 0x53, 0x54, + 0x49, 0x43, 0x53, 0x10, 0x07, 0x12, 0x1d, 0x0a, 0x19, 0x43, 0x52, 0x45, 0x41, 0x54, 0x45, 0x5f, + 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x4c, 0x49, 0x4b, 0x45, 0x5f, 0x53, 0x54, 0x4f, 0x52, 0x41, + 0x47, 0x45, 0x10, 0x08, 0x12, 0x19, 0x0a, 0x15, 0x43, 0x52, 0x45, 0x41, 0x54, 0x45, 0x5f, 0x54, + 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x4c, 0x49, 0x4b, 0x45, 0x5f, 0x41, 0x4c, 0x4c, 0x10, 0x09, 0x2a, + 0x76, 0x0a, 0x0d, 0x44, 0x65, 0x66, 0x45, 0x6c, 0x65, 0x6d, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x12, 0x1d, 0x0a, 0x19, 0x44, 0x45, 0x46, 0x5f, 0x45, 0x4c, 0x45, 0x4d, 0x5f, 0x41, 0x43, 0x54, + 0x49, 0x4f, 0x4e, 0x5f, 0x55, 0x4e, 0x44, 0x45, 0x46, 0x49, 0x4e, 0x45, 0x44, 0x10, 0x00, 0x12, + 0x12, 0x0a, 0x0e, 0x44, 0x45, 0x46, 0x45, 0x4c, 0x45, 0x4d, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, + 0x43, 0x10, 0x01, 0x12, 0x0f, 0x0a, 0x0b, 0x44, 0x45, 0x46, 0x45, 0x4c, 0x45, 0x4d, 0x5f, 0x53, + 0x45, 0x54, 0x10, 0x02, 0x12, 0x0f, 0x0a, 0x0b, 0x44, 0x45, 0x46, 0x45, 0x4c, 0x45, 0x4d, 0x5f, + 0x41, 0x44, 0x44, 0x10, 0x03, 0x12, 0x10, 0x0a, 0x0c, 0x44, 0x45, 0x46, 0x45, 0x4c, 0x45, 0x4d, + 0x5f, 0x44, 0x52, 0x4f, 0x50, 0x10, 0x04, 0x2a, 0xac, 0x01, 0x0a, 0x17, 0x50, 0x61, 0x72, 0x74, + 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x44, 0x61, 0x74, 0x75, 0x6d, 0x4b, + 0x69, 0x6e, 0x64, 0x12, 0x28, 0x0a, 0x24, 0x50, 0x41, 0x52, 0x54, 0x49, 0x54, 0x49, 0x4f, 0x4e, + 0x5f, 0x52, 0x41, 0x4e, 0x47, 0x45, 0x5f, 0x44, 0x41, 0x54, 0x55, 0x4d, 0x5f, 0x4b, 0x49, 0x4e, + 0x44, 0x5f, 0x55, 0x4e, 0x44, 0x45, 0x46, 0x49, 0x4e, 0x45, 0x44, 0x10, 0x00, 0x12, 0x22, 0x0a, + 0x1e, 0x50, 0x41, 0x52, 0x54, 0x49, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x52, 0x41, 0x4e, 0x47, 0x45, + 0x5f, 0x44, 0x41, 0x54, 0x55, 0x4d, 0x5f, 0x4d, 0x49, 0x4e, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x10, + 0x01, 0x12, 0x1f, 0x0a, 0x1b, 0x50, 0x41, 0x52, 0x54, 0x49, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x52, + 0x41, 0x4e, 0x47, 0x45, 0x5f, 0x44, 0x41, 0x54, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, + 0x10, 0x02, 0x12, 0x22, 0x0a, 0x1e, 0x50, 0x41, 0x52, 0x54, 0x49, 0x54, 0x49, 0x4f, 0x4e, 0x5f, + 0x52, 0x41, 0x4e, 0x47, 0x45, 0x5f, 0x44, 0x41, 0x54, 0x55, 0x4d, 0x5f, 0x4d, 0x41, 0x58, 0x56, + 0x41, 0x4c, 0x55, 0x45, 0x10, 0x03, 0x2a, 0xbd, 0x01, 0x0a, 0x07, 0x52, 0x54, 0x45, 0x4b, 0x69, + 0x6e, 0x64, 0x12, 0x15, 0x0a, 0x11, 0x52, 0x54, 0x45, 0x4b, 0x49, 0x4e, 0x44, 0x5f, 0x55, 0x4e, + 0x44, 0x45, 0x46, 0x49, 0x4e, 0x45, 0x44, 0x10, 0x00, 0x12, 0x10, 0x0a, 0x0c, 0x52, 0x54, 0x45, + 0x5f, 0x52, 0x45, 0x4c, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x01, 0x12, 0x10, 0x0a, 0x0c, 0x52, + 0x54, 0x45, 0x5f, 0x53, 0x55, 0x42, 0x51, 0x55, 0x45, 0x52, 0x59, 0x10, 0x02, 0x12, 0x0c, 0x0a, + 0x08, 0x52, 0x54, 0x45, 0x5f, 0x4a, 0x4f, 0x49, 0x4e, 0x10, 0x03, 0x12, 0x10, 0x0a, 0x0c, 0x52, + 0x54, 0x45, 0x5f, 0x46, 0x55, 0x4e, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x04, 0x12, 0x11, 0x0a, + 0x0d, 0x52, 0x54, 0x45, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x46, 0x55, 0x4e, 0x43, 0x10, 0x05, + 0x12, 0x0e, 0x0a, 0x0a, 0x52, 0x54, 0x45, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x53, 0x10, 0x06, + 0x12, 0x0b, 0x0a, 0x07, 0x52, 0x54, 0x45, 0x5f, 0x43, 0x54, 0x45, 0x10, 0x07, 0x12, 0x17, 0x0a, + 0x13, 0x52, 0x54, 0x45, 0x5f, 0x4e, 0x41, 0x4d, 0x45, 0x44, 0x54, 0x55, 0x50, 0x4c, 0x45, 0x53, + 0x54, 0x4f, 0x52, 0x45, 0x10, 0x08, 0x12, 0x0e, 0x0a, 0x0a, 0x52, 0x54, 0x45, 0x5f, 0x52, 0x45, + 0x53, 0x55, 0x4c, 0x54, 0x10, 0x09, 0x2a, 0x84, 0x01, 0x0a, 0x07, 0x57, 0x43, 0x4f, 0x4b, 0x69, + 0x6e, 0x64, 0x12, 0x15, 0x0a, 0x11, 0x57, 0x43, 0x4f, 0x4b, 0x49, 0x4e, 0x44, 0x5f, 0x55, 0x4e, + 0x44, 0x45, 0x46, 0x49, 0x4e, 0x45, 0x44, 0x10, 0x00, 0x12, 0x12, 0x0a, 0x0e, 0x57, 0x43, 0x4f, + 0x5f, 0x56, 0x49, 0x45, 0x57, 0x5f, 0x43, 0x48, 0x45, 0x43, 0x4b, 0x10, 0x01, 0x12, 0x18, 0x0a, + 0x14, 0x57, 0x43, 0x4f, 0x5f, 0x52, 0x4c, 0x53, 0x5f, 0x49, 0x4e, 0x53, 0x45, 0x52, 0x54, 0x5f, + 0x43, 0x48, 0x45, 0x43, 0x4b, 0x10, 0x02, 0x12, 0x18, 0x0a, 0x14, 0x57, 0x43, 0x4f, 0x5f, 0x52, + 0x4c, 0x53, 0x5f, 0x55, 0x50, 0x44, 0x41, 0x54, 0x45, 0x5f, 0x43, 0x48, 0x45, 0x43, 0x4b, 0x10, + 0x03, 0x12, 0x1a, 0x0a, 0x16, 0x57, 0x43, 0x4f, 0x5f, 0x52, 0x4c, 0x53, 0x5f, 0x43, 0x4f, 0x4e, + 0x46, 0x4c, 0x49, 0x43, 0x54, 0x5f, 0x43, 0x48, 0x45, 0x43, 0x4b, 0x10, 0x04, 0x2a, 0xaa, 0x01, + 0x0a, 0x0f, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x69, 0x6e, 0x67, 0x53, 0x65, 0x74, 0x4b, 0x69, 0x6e, + 0x64, 0x12, 0x1f, 0x0a, 0x1b, 0x47, 0x52, 0x4f, 0x55, 0x50, 0x49, 0x4e, 0x47, 0x5f, 0x53, 0x45, + 0x54, 0x5f, 0x4b, 0x49, 0x4e, 0x44, 0x5f, 0x55, 0x4e, 0x44, 0x45, 0x46, 0x49, 0x4e, 0x45, 0x44, + 0x10, 0x00, 0x12, 0x16, 0x0a, 0x12, 0x47, 0x52, 0x4f, 0x55, 0x50, 0x49, 0x4e, 0x47, 0x5f, 0x53, + 0x45, 0x54, 0x5f, 0x45, 0x4d, 0x50, 0x54, 0x59, 0x10, 0x01, 0x12, 0x17, 0x0a, 0x13, 0x47, 0x52, + 0x4f, 0x55, 0x50, 0x49, 0x4e, 0x47, 0x5f, 0x53, 0x45, 0x54, 0x5f, 0x53, 0x49, 0x4d, 0x50, 0x4c, + 0x45, 0x10, 0x02, 0x12, 0x17, 0x0a, 0x13, 0x47, 0x52, 0x4f, 0x55, 0x50, 0x49, 0x4e, 0x47, 0x5f, + 0x53, 0x45, 0x54, 0x5f, 0x52, 0x4f, 0x4c, 0x4c, 0x55, 0x50, 0x10, 0x03, 0x12, 0x15, 0x0a, 0x11, + 0x47, 0x52, 0x4f, 0x55, 0x50, 0x49, 0x4e, 0x47, 0x5f, 0x53, 0x45, 0x54, 0x5f, 0x43, 0x55, 0x42, + 0x45, 0x10, 0x04, 0x12, 0x15, 0x0a, 0x11, 0x47, 0x52, 0x4f, 0x55, 0x50, 0x49, 0x4e, 0x47, 0x5f, + 0x53, 0x45, 0x54, 0x5f, 0x53, 0x45, 0x54, 0x53, 0x10, 0x05, 0x2a, 0x7c, 0x0a, 0x0e, 0x43, 0x54, + 0x45, 0x4d, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x12, 0x1c, 0x0a, 0x18, + 0x43, 0x54, 0x45, 0x4d, 0x41, 0x54, 0x45, 0x52, 0x49, 0x41, 0x4c, 0x49, 0x5a, 0x45, 0x5f, 0x55, + 0x4e, 0x44, 0x45, 0x46, 0x49, 0x4e, 0x45, 0x44, 0x10, 0x00, 0x12, 0x19, 0x0a, 0x15, 0x43, 0x54, + 0x45, 0x4d, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x44, 0x65, 0x66, 0x61, + 0x75, 0x6c, 0x74, 0x10, 0x01, 0x12, 0x18, 0x0a, 0x14, 0x43, 0x54, 0x45, 0x4d, 0x61, 0x74, 0x65, + 0x72, 0x69, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x41, 0x6c, 0x77, 0x61, 0x79, 0x73, 0x10, 0x02, 0x12, + 0x17, 0x0a, 0x13, 0x43, 0x54, 0x45, 0x4d, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x69, 0x7a, + 0x65, 0x4e, 0x65, 0x76, 0x65, 0x72, 0x10, 0x03, 0x2a, 0x73, 0x0a, 0x0c, 0x53, 0x65, 0x74, 0x4f, + 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1b, 0x0a, 0x17, 0x53, 0x45, 0x54, 0x5f, + 0x4f, 0x50, 0x45, 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x55, 0x4e, 0x44, 0x45, 0x46, 0x49, + 0x4e, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0e, 0x0a, 0x0a, 0x53, 0x45, 0x54, 0x4f, 0x50, 0x5f, 0x4e, + 0x4f, 0x4e, 0x45, 0x10, 0x01, 0x12, 0x0f, 0x0a, 0x0b, 0x53, 0x45, 0x54, 0x4f, 0x50, 0x5f, 0x55, + 0x4e, 0x49, 0x4f, 0x4e, 0x10, 0x02, 0x12, 0x13, 0x0a, 0x0f, 0x53, 0x45, 0x54, 0x4f, 0x50, 0x5f, + 0x49, 0x4e, 0x54, 0x45, 0x52, 0x53, 0x45, 0x43, 0x54, 0x10, 0x03, 0x12, 0x10, 0x0a, 0x0c, 0x53, + 0x45, 0x54, 0x4f, 0x50, 0x5f, 0x45, 0x58, 0x43, 0x45, 0x50, 0x54, 0x10, 0x04, 0x2a, 0xdd, 0x08, + 0x0a, 0x0a, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x19, 0x0a, 0x15, + 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x44, 0x45, + 0x46, 0x49, 0x4e, 0x45, 0x44, 0x10, 0x00, 0x12, 0x18, 0x0a, 0x14, 0x4f, 0x42, 0x4a, 0x45, 0x43, + 0x54, 0x5f, 0x41, 0x43, 0x43, 0x45, 0x53, 0x53, 0x5f, 0x4d, 0x45, 0x54, 0x48, 0x4f, 0x44, 0x10, + 0x01, 0x12, 0x14, 0x0a, 0x10, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x41, 0x47, 0x47, 0x52, + 0x45, 0x47, 0x41, 0x54, 0x45, 0x10, 0x02, 0x12, 0x0f, 0x0a, 0x0b, 0x4f, 0x42, 0x4a, 0x45, 0x43, + 0x54, 0x5f, 0x41, 0x4d, 0x4f, 0x50, 0x10, 0x03, 0x12, 0x11, 0x0a, 0x0d, 0x4f, 0x42, 0x4a, 0x45, + 0x43, 0x54, 0x5f, 0x41, 0x4d, 0x50, 0x52, 0x4f, 0x43, 0x10, 0x04, 0x12, 0x14, 0x0a, 0x10, 0x4f, + 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x49, 0x42, 0x55, 0x54, 0x45, 0x10, + 0x05, 0x12, 0x0f, 0x0a, 0x0b, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x43, 0x41, 0x53, 0x54, + 0x10, 0x06, 0x12, 0x11, 0x0a, 0x0d, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x43, 0x4f, 0x4c, + 0x55, 0x4d, 0x4e, 0x10, 0x07, 0x12, 0x14, 0x0a, 0x10, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, + 0x43, 0x4f, 0x4c, 0x4c, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x08, 0x12, 0x15, 0x0a, 0x11, 0x4f, + 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x43, 0x4f, 0x4e, 0x56, 0x45, 0x52, 0x53, 0x49, 0x4f, 0x4e, + 0x10, 0x09, 0x12, 0x13, 0x0a, 0x0f, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x44, 0x41, 0x54, + 0x41, 0x42, 0x41, 0x53, 0x45, 0x10, 0x0a, 0x12, 0x12, 0x0a, 0x0e, 0x4f, 0x42, 0x4a, 0x45, 0x43, + 0x54, 0x5f, 0x44, 0x45, 0x46, 0x41, 0x55, 0x4c, 0x54, 0x10, 0x0b, 0x12, 0x11, 0x0a, 0x0d, 0x4f, + 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x44, 0x45, 0x46, 0x41, 0x43, 0x4c, 0x10, 0x0c, 0x12, 0x11, + 0x0a, 0x0d, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x44, 0x4f, 0x4d, 0x41, 0x49, 0x4e, 0x10, + 0x0d, 0x12, 0x18, 0x0a, 0x14, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x44, 0x4f, 0x4d, 0x43, + 0x4f, 0x4e, 0x53, 0x54, 0x52, 0x41, 0x49, 0x4e, 0x54, 0x10, 0x0e, 0x12, 0x18, 0x0a, 0x14, 0x4f, + 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x54, 0x52, 0x49, 0x47, + 0x47, 0x45, 0x52, 0x10, 0x0f, 0x12, 0x14, 0x0a, 0x10, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, + 0x45, 0x58, 0x54, 0x45, 0x4e, 0x53, 0x49, 0x4f, 0x4e, 0x10, 0x10, 0x12, 0x0e, 0x0a, 0x0a, 0x4f, + 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x46, 0x44, 0x57, 0x10, 0x11, 0x12, 0x19, 0x0a, 0x15, 0x4f, + 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x46, 0x4f, 0x52, 0x45, 0x49, 0x47, 0x4e, 0x5f, 0x53, 0x45, + 0x52, 0x56, 0x45, 0x52, 0x10, 0x12, 0x12, 0x18, 0x0a, 0x14, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, + 0x5f, 0x46, 0x4f, 0x52, 0x45, 0x49, 0x47, 0x4e, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x10, 0x13, + 0x12, 0x13, 0x0a, 0x0f, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x46, 0x55, 0x4e, 0x43, 0x54, + 0x49, 0x4f, 0x4e, 0x10, 0x14, 0x12, 0x10, 0x0a, 0x0c, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, + 0x49, 0x4e, 0x44, 0x45, 0x58, 0x10, 0x15, 0x12, 0x13, 0x0a, 0x0f, 0x4f, 0x42, 0x4a, 0x45, 0x43, + 0x54, 0x5f, 0x4c, 0x41, 0x4e, 0x47, 0x55, 0x41, 0x47, 0x45, 0x10, 0x16, 0x12, 0x16, 0x0a, 0x12, + 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x4c, 0x41, 0x52, 0x47, 0x45, 0x4f, 0x42, 0x4a, 0x45, + 0x43, 0x54, 0x10, 0x17, 0x12, 0x12, 0x0a, 0x0e, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x4d, + 0x41, 0x54, 0x56, 0x49, 0x45, 0x57, 0x10, 0x18, 0x12, 0x12, 0x0a, 0x0e, 0x4f, 0x42, 0x4a, 0x45, + 0x43, 0x54, 0x5f, 0x4f, 0x50, 0x43, 0x4c, 0x41, 0x53, 0x53, 0x10, 0x19, 0x12, 0x13, 0x0a, 0x0f, + 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x4f, 0x50, 0x45, 0x52, 0x41, 0x54, 0x4f, 0x52, 0x10, + 0x1a, 0x12, 0x13, 0x0a, 0x0f, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x4f, 0x50, 0x46, 0x41, + 0x4d, 0x49, 0x4c, 0x59, 0x10, 0x1b, 0x12, 0x11, 0x0a, 0x0d, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, + 0x5f, 0x50, 0x4f, 0x4c, 0x49, 0x43, 0x59, 0x10, 0x1c, 0x12, 0x14, 0x0a, 0x10, 0x4f, 0x42, 0x4a, + 0x45, 0x43, 0x54, 0x5f, 0x50, 0x52, 0x4f, 0x43, 0x45, 0x44, 0x55, 0x52, 0x45, 0x10, 0x1d, 0x12, + 0x16, 0x0a, 0x12, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x50, 0x55, 0x42, 0x4c, 0x49, 0x43, + 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x1e, 0x12, 0x1a, 0x0a, 0x16, 0x4f, 0x42, 0x4a, 0x45, 0x43, + 0x54, 0x5f, 0x50, 0x55, 0x42, 0x4c, 0x49, 0x43, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x52, 0x45, + 0x4c, 0x10, 0x1f, 0x12, 0x0f, 0x0a, 0x0b, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x52, 0x4f, + 0x4c, 0x45, 0x10, 0x20, 0x12, 0x12, 0x0a, 0x0e, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x52, + 0x4f, 0x55, 0x54, 0x49, 0x4e, 0x45, 0x10, 0x21, 0x12, 0x0f, 0x0a, 0x0b, 0x4f, 0x42, 0x4a, 0x45, + 0x43, 0x54, 0x5f, 0x52, 0x55, 0x4c, 0x45, 0x10, 0x22, 0x12, 0x11, 0x0a, 0x0d, 0x4f, 0x42, 0x4a, + 0x45, 0x43, 0x54, 0x5f, 0x53, 0x43, 0x48, 0x45, 0x4d, 0x41, 0x10, 0x23, 0x12, 0x13, 0x0a, 0x0f, + 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x53, 0x45, 0x51, 0x55, 0x45, 0x4e, 0x43, 0x45, 0x10, + 0x24, 0x12, 0x17, 0x0a, 0x13, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x53, 0x55, 0x42, 0x53, + 0x43, 0x52, 0x49, 0x50, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x25, 0x12, 0x18, 0x0a, 0x14, 0x4f, 0x42, + 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x49, 0x53, 0x54, 0x49, 0x43, 0x5f, 0x45, + 0x58, 0x54, 0x10, 0x26, 0x12, 0x18, 0x0a, 0x14, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x54, + 0x41, 0x42, 0x43, 0x4f, 0x4e, 0x53, 0x54, 0x52, 0x41, 0x49, 0x4e, 0x54, 0x10, 0x27, 0x12, 0x10, + 0x0a, 0x0c, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x10, 0x28, + 0x12, 0x15, 0x0a, 0x11, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, + 0x53, 0x50, 0x41, 0x43, 0x45, 0x10, 0x29, 0x12, 0x14, 0x0a, 0x10, 0x4f, 0x42, 0x4a, 0x45, 0x43, + 0x54, 0x5f, 0x54, 0x52, 0x41, 0x4e, 0x53, 0x46, 0x4f, 0x52, 0x4d, 0x10, 0x2a, 0x12, 0x12, 0x0a, + 0x0e, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x54, 0x52, 0x49, 0x47, 0x47, 0x45, 0x52, 0x10, + 0x2b, 0x12, 0x1a, 0x0a, 0x16, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x54, 0x53, 0x43, 0x4f, + 0x4e, 0x46, 0x49, 0x47, 0x55, 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x2c, 0x12, 0x17, 0x0a, + 0x13, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x54, 0x53, 0x44, 0x49, 0x43, 0x54, 0x49, 0x4f, + 0x4e, 0x41, 0x52, 0x59, 0x10, 0x2d, 0x12, 0x13, 0x0a, 0x0f, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, + 0x5f, 0x54, 0x53, 0x50, 0x41, 0x52, 0x53, 0x45, 0x52, 0x10, 0x2e, 0x12, 0x15, 0x0a, 0x11, 0x4f, + 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x54, 0x53, 0x54, 0x45, 0x4d, 0x50, 0x4c, 0x41, 0x54, 0x45, + 0x10, 0x2f, 0x12, 0x0f, 0x0a, 0x0b, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x54, 0x59, 0x50, + 0x45, 0x10, 0x30, 0x12, 0x17, 0x0a, 0x13, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x55, 0x53, + 0x45, 0x52, 0x5f, 0x4d, 0x41, 0x50, 0x50, 0x49, 0x4e, 0x47, 0x10, 0x31, 0x12, 0x0f, 0x0a, 0x0b, + 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x56, 0x49, 0x45, 0x57, 0x10, 0x32, 0x2a, 0x50, 0x0a, + 0x0c, 0x44, 0x72, 0x6f, 0x70, 0x42, 0x65, 0x68, 0x61, 0x76, 0x69, 0x6f, 0x72, 0x12, 0x1b, 0x0a, + 0x17, 0x44, 0x52, 0x4f, 0x50, 0x5f, 0x42, 0x45, 0x48, 0x41, 0x56, 0x49, 0x4f, 0x52, 0x5f, 0x55, + 0x4e, 0x44, 0x45, 0x46, 0x49, 0x4e, 0x45, 0x44, 0x10, 0x00, 0x12, 0x11, 0x0a, 0x0d, 0x44, 0x52, + 0x4f, 0x50, 0x5f, 0x52, 0x45, 0x53, 0x54, 0x52, 0x49, 0x43, 0x54, 0x10, 0x01, 0x12, 0x10, 0x0a, + 0x0c, 0x44, 0x52, 0x4f, 0x50, 0x5f, 0x43, 0x41, 0x53, 0x43, 0x41, 0x44, 0x45, 0x10, 0x02, 0x2a, + 0x9f, 0x0c, 0x0a, 0x0e, 0x41, 0x6c, 0x74, 0x65, 0x72, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x54, 0x79, + 0x70, 0x65, 0x12, 0x1e, 0x0a, 0x1a, 0x41, 0x4c, 0x54, 0x45, 0x52, 0x5f, 0x54, 0x41, 0x42, 0x4c, + 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x44, 0x45, 0x46, 0x49, 0x4e, 0x45, 0x44, + 0x10, 0x00, 0x12, 0x10, 0x0a, 0x0c, 0x41, 0x54, 0x5f, 0x41, 0x64, 0x64, 0x43, 0x6f, 0x6c, 0x75, + 0x6d, 0x6e, 0x10, 0x01, 0x12, 0x17, 0x0a, 0x13, 0x41, 0x54, 0x5f, 0x41, 0x64, 0x64, 0x43, 0x6f, + 0x6c, 0x75, 0x6d, 0x6e, 0x52, 0x65, 0x63, 0x75, 0x72, 0x73, 0x65, 0x10, 0x02, 0x12, 0x16, 0x0a, + 0x12, 0x41, 0x54, 0x5f, 0x41, 0x64, 0x64, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x54, 0x6f, 0x56, + 0x69, 0x65, 0x77, 0x10, 0x03, 0x12, 0x14, 0x0a, 0x10, 0x41, 0x54, 0x5f, 0x43, 0x6f, 0x6c, 0x75, + 0x6d, 0x6e, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x10, 0x04, 0x12, 0x1a, 0x0a, 0x16, 0x41, + 0x54, 0x5f, 0x43, 0x6f, 0x6f, 0x6b, 0x65, 0x64, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x44, 0x65, + 0x66, 0x61, 0x75, 0x6c, 0x74, 0x10, 0x05, 0x12, 0x12, 0x0a, 0x0e, 0x41, 0x54, 0x5f, 0x44, 0x72, + 0x6f, 0x70, 0x4e, 0x6f, 0x74, 0x4e, 0x75, 0x6c, 0x6c, 0x10, 0x06, 0x12, 0x11, 0x0a, 0x0d, 0x41, + 0x54, 0x5f, 0x53, 0x65, 0x74, 0x4e, 0x6f, 0x74, 0x4e, 0x75, 0x6c, 0x6c, 0x10, 0x07, 0x12, 0x15, + 0x0a, 0x11, 0x41, 0x54, 0x5f, 0x44, 0x72, 0x6f, 0x70, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, + 0x69, 0x6f, 0x6e, 0x10, 0x08, 0x12, 0x13, 0x0a, 0x0f, 0x41, 0x54, 0x5f, 0x43, 0x68, 0x65, 0x63, + 0x6b, 0x4e, 0x6f, 0x74, 0x4e, 0x75, 0x6c, 0x6c, 0x10, 0x09, 0x12, 0x14, 0x0a, 0x10, 0x41, 0x54, + 0x5f, 0x53, 0x65, 0x74, 0x53, 0x74, 0x61, 0x74, 0x69, 0x73, 0x74, 0x69, 0x63, 0x73, 0x10, 0x0a, + 0x12, 0x11, 0x0a, 0x0d, 0x41, 0x54, 0x5f, 0x53, 0x65, 0x74, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x10, 0x0b, 0x12, 0x13, 0x0a, 0x0f, 0x41, 0x54, 0x5f, 0x52, 0x65, 0x73, 0x65, 0x74, 0x4f, + 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x10, 0x0c, 0x12, 0x11, 0x0a, 0x0d, 0x41, 0x54, 0x5f, 0x53, + 0x65, 0x74, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x10, 0x0d, 0x12, 0x11, 0x0a, 0x0d, 0x41, + 0x54, 0x5f, 0x44, 0x72, 0x6f, 0x70, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x10, 0x0e, 0x12, 0x18, + 0x0a, 0x14, 0x41, 0x54, 0x5f, 0x44, 0x72, 0x6f, 0x70, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x52, + 0x65, 0x63, 0x75, 0x72, 0x73, 0x65, 0x10, 0x0f, 0x12, 0x0f, 0x0a, 0x0b, 0x41, 0x54, 0x5f, 0x41, + 0x64, 0x64, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x10, 0x10, 0x12, 0x11, 0x0a, 0x0d, 0x41, 0x54, 0x5f, + 0x52, 0x65, 0x41, 0x64, 0x64, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x10, 0x11, 0x12, 0x14, 0x0a, 0x10, + 0x41, 0x54, 0x5f, 0x41, 0x64, 0x64, 0x43, 0x6f, 0x6e, 0x73, 0x74, 0x72, 0x61, 0x69, 0x6e, 0x74, + 0x10, 0x12, 0x12, 0x1b, 0x0a, 0x17, 0x41, 0x54, 0x5f, 0x41, 0x64, 0x64, 0x43, 0x6f, 0x6e, 0x73, + 0x74, 0x72, 0x61, 0x69, 0x6e, 0x74, 0x52, 0x65, 0x63, 0x75, 0x72, 0x73, 0x65, 0x10, 0x13, 0x12, + 0x16, 0x0a, 0x12, 0x41, 0x54, 0x5f, 0x52, 0x65, 0x41, 0x64, 0x64, 0x43, 0x6f, 0x6e, 0x73, 0x74, + 0x72, 0x61, 0x69, 0x6e, 0x74, 0x10, 0x14, 0x12, 0x1c, 0x0a, 0x18, 0x41, 0x54, 0x5f, 0x52, 0x65, + 0x41, 0x64, 0x64, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x43, 0x6f, 0x6e, 0x73, 0x74, 0x72, 0x61, + 0x69, 0x6e, 0x74, 0x10, 0x15, 0x12, 0x16, 0x0a, 0x12, 0x41, 0x54, 0x5f, 0x41, 0x6c, 0x74, 0x65, + 0x72, 0x43, 0x6f, 0x6e, 0x73, 0x74, 0x72, 0x61, 0x69, 0x6e, 0x74, 0x10, 0x16, 0x12, 0x19, 0x0a, + 0x15, 0x41, 0x54, 0x5f, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x73, + 0x74, 0x72, 0x61, 0x69, 0x6e, 0x74, 0x10, 0x17, 0x12, 0x20, 0x0a, 0x1c, 0x41, 0x54, 0x5f, 0x56, + 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x73, 0x74, 0x72, 0x61, 0x69, 0x6e, + 0x74, 0x52, 0x65, 0x63, 0x75, 0x72, 0x73, 0x65, 0x10, 0x18, 0x12, 0x19, 0x0a, 0x15, 0x41, 0x54, + 0x5f, 0x41, 0x64, 0x64, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x43, 0x6f, 0x6e, 0x73, 0x74, 0x72, 0x61, + 0x69, 0x6e, 0x74, 0x10, 0x19, 0x12, 0x15, 0x0a, 0x11, 0x41, 0x54, 0x5f, 0x44, 0x72, 0x6f, 0x70, + 0x43, 0x6f, 0x6e, 0x73, 0x74, 0x72, 0x61, 0x69, 0x6e, 0x74, 0x10, 0x1a, 0x12, 0x1c, 0x0a, 0x18, + 0x41, 0x54, 0x5f, 0x44, 0x72, 0x6f, 0x70, 0x43, 0x6f, 0x6e, 0x73, 0x74, 0x72, 0x61, 0x69, 0x6e, + 0x74, 0x52, 0x65, 0x63, 0x75, 0x72, 0x73, 0x65, 0x10, 0x1b, 0x12, 0x13, 0x0a, 0x0f, 0x41, 0x54, + 0x5f, 0x52, 0x65, 0x41, 0x64, 0x64, 0x43, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x1c, 0x12, + 0x16, 0x0a, 0x12, 0x41, 0x54, 0x5f, 0x41, 0x6c, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6c, 0x75, 0x6d, + 0x6e, 0x54, 0x79, 0x70, 0x65, 0x10, 0x1d, 0x12, 0x20, 0x0a, 0x1c, 0x41, 0x54, 0x5f, 0x41, 0x6c, + 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, + 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x10, 0x1e, 0x12, 0x12, 0x0a, 0x0e, 0x41, 0x54, 0x5f, + 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x4f, 0x77, 0x6e, 0x65, 0x72, 0x10, 0x1f, 0x12, 0x10, 0x0a, + 0x0c, 0x41, 0x54, 0x5f, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x4f, 0x6e, 0x10, 0x20, 0x12, + 0x12, 0x0a, 0x0e, 0x41, 0x54, 0x5f, 0x44, 0x72, 0x6f, 0x70, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, + 0x72, 0x10, 0x21, 0x12, 0x10, 0x0a, 0x0c, 0x41, 0x54, 0x5f, 0x53, 0x65, 0x74, 0x4c, 0x6f, 0x67, + 0x67, 0x65, 0x64, 0x10, 0x22, 0x12, 0x12, 0x0a, 0x0e, 0x41, 0x54, 0x5f, 0x53, 0x65, 0x74, 0x55, + 0x6e, 0x4c, 0x6f, 0x67, 0x67, 0x65, 0x64, 0x10, 0x23, 0x12, 0x0f, 0x0a, 0x0b, 0x41, 0x54, 0x5f, + 0x44, 0x72, 0x6f, 0x70, 0x4f, 0x69, 0x64, 0x73, 0x10, 0x24, 0x12, 0x14, 0x0a, 0x10, 0x41, 0x54, + 0x5f, 0x53, 0x65, 0x74, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x53, 0x70, 0x61, 0x63, 0x65, 0x10, 0x25, + 0x12, 0x14, 0x0a, 0x10, 0x41, 0x54, 0x5f, 0x53, 0x65, 0x74, 0x52, 0x65, 0x6c, 0x4f, 0x70, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x10, 0x26, 0x12, 0x16, 0x0a, 0x12, 0x41, 0x54, 0x5f, 0x52, 0x65, 0x73, + 0x65, 0x74, 0x52, 0x65, 0x6c, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x10, 0x27, 0x12, 0x18, + 0x0a, 0x14, 0x41, 0x54, 0x5f, 0x52, 0x65, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x52, 0x65, 0x6c, 0x4f, + 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x10, 0x28, 0x12, 0x11, 0x0a, 0x0d, 0x41, 0x54, 0x5f, 0x45, + 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x54, 0x72, 0x69, 0x67, 0x10, 0x29, 0x12, 0x17, 0x0a, 0x13, 0x41, + 0x54, 0x5f, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x41, 0x6c, 0x77, 0x61, 0x79, 0x73, 0x54, 0x72, + 0x69, 0x67, 0x10, 0x2a, 0x12, 0x18, 0x0a, 0x14, 0x41, 0x54, 0x5f, 0x45, 0x6e, 0x61, 0x62, 0x6c, + 0x65, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x54, 0x72, 0x69, 0x67, 0x10, 0x2b, 0x12, 0x12, + 0x0a, 0x0e, 0x41, 0x54, 0x5f, 0x44, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x54, 0x72, 0x69, 0x67, + 0x10, 0x2c, 0x12, 0x14, 0x0a, 0x10, 0x41, 0x54, 0x5f, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x54, + 0x72, 0x69, 0x67, 0x41, 0x6c, 0x6c, 0x10, 0x2d, 0x12, 0x15, 0x0a, 0x11, 0x41, 0x54, 0x5f, 0x44, + 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x54, 0x72, 0x69, 0x67, 0x41, 0x6c, 0x6c, 0x10, 0x2e, 0x12, + 0x15, 0x0a, 0x11, 0x41, 0x54, 0x5f, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x54, 0x72, 0x69, 0x67, + 0x55, 0x73, 0x65, 0x72, 0x10, 0x2f, 0x12, 0x16, 0x0a, 0x12, 0x41, 0x54, 0x5f, 0x44, 0x69, 0x73, + 0x61, 0x62, 0x6c, 0x65, 0x54, 0x72, 0x69, 0x67, 0x55, 0x73, 0x65, 0x72, 0x10, 0x30, 0x12, 0x11, + 0x0a, 0x0d, 0x41, 0x54, 0x5f, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x75, 0x6c, 0x65, 0x10, + 0x31, 0x12, 0x17, 0x0a, 0x13, 0x41, 0x54, 0x5f, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x41, 0x6c, + 0x77, 0x61, 0x79, 0x73, 0x52, 0x75, 0x6c, 0x65, 0x10, 0x32, 0x12, 0x18, 0x0a, 0x14, 0x41, 0x54, + 0x5f, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x52, 0x75, + 0x6c, 0x65, 0x10, 0x33, 0x12, 0x12, 0x0a, 0x0e, 0x41, 0x54, 0x5f, 0x44, 0x69, 0x73, 0x61, 0x62, + 0x6c, 0x65, 0x52, 0x75, 0x6c, 0x65, 0x10, 0x34, 0x12, 0x11, 0x0a, 0x0d, 0x41, 0x54, 0x5f, 0x41, + 0x64, 0x64, 0x49, 0x6e, 0x68, 0x65, 0x72, 0x69, 0x74, 0x10, 0x35, 0x12, 0x12, 0x0a, 0x0e, 0x41, + 0x54, 0x5f, 0x44, 0x72, 0x6f, 0x70, 0x49, 0x6e, 0x68, 0x65, 0x72, 0x69, 0x74, 0x10, 0x36, 0x12, + 0x0c, 0x0a, 0x08, 0x41, 0x54, 0x5f, 0x41, 0x64, 0x64, 0x4f, 0x66, 0x10, 0x37, 0x12, 0x0d, 0x0a, + 0x09, 0x41, 0x54, 0x5f, 0x44, 0x72, 0x6f, 0x70, 0x4f, 0x66, 0x10, 0x38, 0x12, 0x16, 0x0a, 0x12, + 0x41, 0x54, 0x5f, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, + 0x74, 0x79, 0x10, 0x39, 0x12, 0x18, 0x0a, 0x14, 0x41, 0x54, 0x5f, 0x45, 0x6e, 0x61, 0x62, 0x6c, + 0x65, 0x52, 0x6f, 0x77, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x10, 0x3a, 0x12, 0x19, + 0x0a, 0x15, 0x41, 0x54, 0x5f, 0x44, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x6f, 0x77, 0x53, + 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x10, 0x3b, 0x12, 0x17, 0x0a, 0x13, 0x41, 0x54, 0x5f, + 0x46, 0x6f, 0x72, 0x63, 0x65, 0x52, 0x6f, 0x77, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, + 0x10, 0x3c, 0x12, 0x19, 0x0a, 0x15, 0x41, 0x54, 0x5f, 0x4e, 0x6f, 0x46, 0x6f, 0x72, 0x63, 0x65, + 0x52, 0x6f, 0x77, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x10, 0x3d, 0x12, 0x15, 0x0a, + 0x11, 0x41, 0x54, 0x5f, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x4f, 0x70, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x10, 0x3e, 0x12, 0x16, 0x0a, 0x12, 0x41, 0x54, 0x5f, 0x41, 0x74, 0x74, 0x61, 0x63, + 0x68, 0x50, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x10, 0x3f, 0x12, 0x16, 0x0a, 0x12, + 0x41, 0x54, 0x5f, 0x44, 0x65, 0x74, 0x61, 0x63, 0x68, 0x50, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, + 0x6f, 0x6e, 0x10, 0x40, 0x12, 0x12, 0x0a, 0x0e, 0x41, 0x54, 0x5f, 0x41, 0x64, 0x64, 0x49, 0x64, + 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x10, 0x41, 0x12, 0x12, 0x0a, 0x0e, 0x41, 0x54, 0x5f, 0x53, + 0x65, 0x74, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x10, 0x42, 0x12, 0x13, 0x0a, 0x0f, + 0x41, 0x54, 0x5f, 0x44, 0x72, 0x6f, 0x70, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x10, + 0x43, 0x2a, 0x80, 0x01, 0x0a, 0x0f, 0x47, 0x72, 0x61, 0x6e, 0x74, 0x54, 0x61, 0x72, 0x67, 0x65, + 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1f, 0x0a, 0x1b, 0x47, 0x52, 0x41, 0x4e, 0x54, 0x5f, 0x54, + 0x41, 0x52, 0x47, 0x45, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x44, 0x45, 0x46, + 0x49, 0x4e, 0x45, 0x44, 0x10, 0x00, 0x12, 0x15, 0x0a, 0x11, 0x41, 0x43, 0x4c, 0x5f, 0x54, 0x41, + 0x52, 0x47, 0x45, 0x54, 0x5f, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x10, 0x01, 0x12, 0x1c, 0x0a, + 0x18, 0x41, 0x43, 0x4c, 0x5f, 0x54, 0x41, 0x52, 0x47, 0x45, 0x54, 0x5f, 0x41, 0x4c, 0x4c, 0x5f, + 0x49, 0x4e, 0x5f, 0x53, 0x43, 0x48, 0x45, 0x4d, 0x41, 0x10, 0x02, 0x12, 0x17, 0x0a, 0x13, 0x41, + 0x43, 0x4c, 0x5f, 0x54, 0x41, 0x52, 0x47, 0x45, 0x54, 0x5f, 0x44, 0x45, 0x46, 0x41, 0x55, 0x4c, + 0x54, 0x53, 0x10, 0x03, 0x2a, 0xa4, 0x01, 0x0a, 0x0f, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, + 0x65, 0x53, 0x65, 0x74, 0x4b, 0x69, 0x6e, 0x64, 0x12, 0x1f, 0x0a, 0x1b, 0x56, 0x41, 0x52, 0x49, + 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x53, 0x45, 0x54, 0x5f, 0x4b, 0x49, 0x4e, 0x44, 0x5f, 0x55, 0x4e, + 0x44, 0x45, 0x46, 0x49, 0x4e, 0x45, 0x44, 0x10, 0x00, 0x12, 0x11, 0x0a, 0x0d, 0x56, 0x41, 0x52, + 0x5f, 0x53, 0x45, 0x54, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x10, 0x01, 0x12, 0x13, 0x0a, 0x0f, + 0x56, 0x41, 0x52, 0x5f, 0x53, 0x45, 0x54, 0x5f, 0x44, 0x45, 0x46, 0x41, 0x55, 0x4c, 0x54, 0x10, + 0x02, 0x12, 0x13, 0x0a, 0x0f, 0x56, 0x41, 0x52, 0x5f, 0x53, 0x45, 0x54, 0x5f, 0x43, 0x55, 0x52, + 0x52, 0x45, 0x4e, 0x54, 0x10, 0x03, 0x12, 0x11, 0x0a, 0x0d, 0x56, 0x41, 0x52, 0x5f, 0x53, 0x45, + 0x54, 0x5f, 0x4d, 0x55, 0x4c, 0x54, 0x49, 0x10, 0x04, 0x12, 0x0d, 0x0a, 0x09, 0x56, 0x41, 0x52, + 0x5f, 0x52, 0x45, 0x53, 0x45, 0x54, 0x10, 0x05, 0x12, 0x11, 0x0a, 0x0d, 0x56, 0x41, 0x52, 0x5f, + 0x52, 0x45, 0x53, 0x45, 0x54, 0x5f, 0x41, 0x4c, 0x4c, 0x10, 0x06, 0x2a, 0xdf, 0x02, 0x0a, 0x0a, + 0x43, 0x6f, 0x6e, 0x73, 0x74, 0x72, 0x54, 0x79, 0x70, 0x65, 0x12, 0x19, 0x0a, 0x15, 0x43, 0x4f, + 0x4e, 0x53, 0x54, 0x52, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x44, 0x45, 0x46, 0x49, + 0x4e, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0f, 0x0a, 0x0b, 0x43, 0x4f, 0x4e, 0x53, 0x54, 0x52, 0x5f, + 0x4e, 0x55, 0x4c, 0x4c, 0x10, 0x01, 0x12, 0x12, 0x0a, 0x0e, 0x43, 0x4f, 0x4e, 0x53, 0x54, 0x52, + 0x5f, 0x4e, 0x4f, 0x54, 0x4e, 0x55, 0x4c, 0x4c, 0x10, 0x02, 0x12, 0x12, 0x0a, 0x0e, 0x43, 0x4f, + 0x4e, 0x53, 0x54, 0x52, 0x5f, 0x44, 0x45, 0x46, 0x41, 0x55, 0x4c, 0x54, 0x10, 0x03, 0x12, 0x13, + 0x0a, 0x0f, 0x43, 0x4f, 0x4e, 0x53, 0x54, 0x52, 0x5f, 0x49, 0x44, 0x45, 0x4e, 0x54, 0x49, 0x54, + 0x59, 0x10, 0x04, 0x12, 0x14, 0x0a, 0x10, 0x43, 0x4f, 0x4e, 0x53, 0x54, 0x52, 0x5f, 0x47, 0x45, + 0x4e, 0x45, 0x52, 0x41, 0x54, 0x45, 0x44, 0x10, 0x05, 0x12, 0x10, 0x0a, 0x0c, 0x43, 0x4f, 0x4e, + 0x53, 0x54, 0x52, 0x5f, 0x43, 0x48, 0x45, 0x43, 0x4b, 0x10, 0x06, 0x12, 0x12, 0x0a, 0x0e, 0x43, + 0x4f, 0x4e, 0x53, 0x54, 0x52, 0x5f, 0x50, 0x52, 0x49, 0x4d, 0x41, 0x52, 0x59, 0x10, 0x07, 0x12, + 0x11, 0x0a, 0x0d, 0x43, 0x4f, 0x4e, 0x53, 0x54, 0x52, 0x5f, 0x55, 0x4e, 0x49, 0x51, 0x55, 0x45, + 0x10, 0x08, 0x12, 0x14, 0x0a, 0x10, 0x43, 0x4f, 0x4e, 0x53, 0x54, 0x52, 0x5f, 0x45, 0x58, 0x43, + 0x4c, 0x55, 0x53, 0x49, 0x4f, 0x4e, 0x10, 0x09, 0x12, 0x12, 0x0a, 0x0e, 0x43, 0x4f, 0x4e, 0x53, + 0x54, 0x52, 0x5f, 0x46, 0x4f, 0x52, 0x45, 0x49, 0x47, 0x4e, 0x10, 0x0a, 0x12, 0x1a, 0x0a, 0x16, + 0x43, 0x4f, 0x4e, 0x53, 0x54, 0x52, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x44, 0x45, 0x46, 0x45, + 0x52, 0x52, 0x41, 0x42, 0x4c, 0x45, 0x10, 0x0b, 0x12, 0x1e, 0x0a, 0x1a, 0x43, 0x4f, 0x4e, 0x53, + 0x54, 0x52, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x4e, 0x4f, 0x54, 0x5f, 0x44, 0x45, 0x46, 0x45, + 0x52, 0x52, 0x41, 0x42, 0x4c, 0x45, 0x10, 0x0c, 0x12, 0x18, 0x0a, 0x14, 0x43, 0x4f, 0x4e, 0x53, + 0x54, 0x52, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x44, 0x45, 0x46, 0x45, 0x52, 0x52, 0x45, 0x44, + 0x10, 0x0d, 0x12, 0x19, 0x0a, 0x15, 0x43, 0x4f, 0x4e, 0x53, 0x54, 0x52, 0x5f, 0x41, 0x54, 0x54, + 0x52, 0x5f, 0x49, 0x4d, 0x4d, 0x45, 0x44, 0x49, 0x41, 0x54, 0x45, 0x10, 0x0e, 0x2a, 0x9c, 0x01, + 0x0a, 0x17, 0x49, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x46, 0x6f, 0x72, 0x65, 0x69, 0x67, 0x6e, 0x53, + 0x63, 0x68, 0x65, 0x6d, 0x61, 0x54, 0x79, 0x70, 0x65, 0x12, 0x28, 0x0a, 0x24, 0x49, 0x4d, 0x50, + 0x4f, 0x52, 0x54, 0x5f, 0x46, 0x4f, 0x52, 0x45, 0x49, 0x47, 0x4e, 0x5f, 0x53, 0x43, 0x48, 0x45, + 0x4d, 0x41, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x44, 0x45, 0x46, 0x49, 0x4e, 0x45, + 0x44, 0x10, 0x00, 0x12, 0x19, 0x0a, 0x15, 0x46, 0x44, 0x57, 0x5f, 0x49, 0x4d, 0x50, 0x4f, 0x52, + 0x54, 0x5f, 0x53, 0x43, 0x48, 0x45, 0x4d, 0x41, 0x5f, 0x41, 0x4c, 0x4c, 0x10, 0x01, 0x12, 0x1e, + 0x0a, 0x1a, 0x46, 0x44, 0x57, 0x5f, 0x49, 0x4d, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x43, 0x48, + 0x45, 0x4d, 0x41, 0x5f, 0x4c, 0x49, 0x4d, 0x49, 0x54, 0x5f, 0x54, 0x4f, 0x10, 0x02, 0x12, 0x1c, + 0x0a, 0x18, 0x46, 0x44, 0x57, 0x5f, 0x49, 0x4d, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x43, 0x48, + 0x45, 0x4d, 0x41, 0x5f, 0x45, 0x58, 0x43, 0x45, 0x50, 0x54, 0x10, 0x03, 0x2a, 0x66, 0x0a, 0x0c, + 0x52, 0x6f, 0x6c, 0x65, 0x53, 0x74, 0x6d, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1c, 0x0a, 0x18, + 0x52, 0x4f, 0x4c, 0x45, 0x5f, 0x53, 0x54, 0x4d, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, + 0x4e, 0x44, 0x45, 0x46, 0x49, 0x4e, 0x45, 0x44, 0x10, 0x00, 0x12, 0x11, 0x0a, 0x0d, 0x52, 0x4f, + 0x4c, 0x45, 0x53, 0x54, 0x4d, 0x54, 0x5f, 0x52, 0x4f, 0x4c, 0x45, 0x10, 0x01, 0x12, 0x11, 0x0a, + 0x0d, 0x52, 0x4f, 0x4c, 0x45, 0x53, 0x54, 0x4d, 0x54, 0x5f, 0x55, 0x53, 0x45, 0x52, 0x10, 0x02, + 0x12, 0x12, 0x0a, 0x0e, 0x52, 0x4f, 0x4c, 0x45, 0x53, 0x54, 0x4d, 0x54, 0x5f, 0x47, 0x52, 0x4f, + 0x55, 0x50, 0x10, 0x03, 0x2a, 0x7e, 0x0a, 0x0e, 0x46, 0x65, 0x74, 0x63, 0x68, 0x44, 0x69, 0x72, + 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1d, 0x0a, 0x19, 0x46, 0x45, 0x54, 0x43, 0x48, 0x5f, + 0x44, 0x49, 0x52, 0x45, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x55, 0x4e, 0x44, 0x45, 0x46, 0x49, + 0x4e, 0x45, 0x44, 0x10, 0x00, 0x12, 0x11, 0x0a, 0x0d, 0x46, 0x45, 0x54, 0x43, 0x48, 0x5f, 0x46, + 0x4f, 0x52, 0x57, 0x41, 0x52, 0x44, 0x10, 0x01, 0x12, 0x12, 0x0a, 0x0e, 0x46, 0x45, 0x54, 0x43, + 0x48, 0x5f, 0x42, 0x41, 0x43, 0x4b, 0x57, 0x41, 0x52, 0x44, 0x10, 0x02, 0x12, 0x12, 0x0a, 0x0e, + 0x46, 0x45, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x42, 0x53, 0x4f, 0x4c, 0x55, 0x54, 0x45, 0x10, 0x03, + 0x12, 0x12, 0x0a, 0x0e, 0x46, 0x45, 0x54, 0x43, 0x48, 0x5f, 0x52, 0x45, 0x4c, 0x41, 0x54, 0x49, + 0x56, 0x45, 0x10, 0x04, 0x2a, 0xaa, 0x01, 0x0a, 0x15, 0x46, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x25, + 0x0a, 0x21, 0x46, 0x55, 0x4e, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x50, 0x41, 0x52, 0x41, 0x4d, + 0x45, 0x54, 0x45, 0x52, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x55, 0x4e, 0x44, 0x45, 0x46, 0x49, + 0x4e, 0x45, 0x44, 0x10, 0x00, 0x12, 0x11, 0x0a, 0x0d, 0x46, 0x55, 0x4e, 0x43, 0x5f, 0x50, 0x41, + 0x52, 0x41, 0x4d, 0x5f, 0x49, 0x4e, 0x10, 0x01, 0x12, 0x12, 0x0a, 0x0e, 0x46, 0x55, 0x4e, 0x43, + 0x5f, 0x50, 0x41, 0x52, 0x41, 0x4d, 0x5f, 0x4f, 0x55, 0x54, 0x10, 0x02, 0x12, 0x14, 0x0a, 0x10, + 0x46, 0x55, 0x4e, 0x43, 0x5f, 0x50, 0x41, 0x52, 0x41, 0x4d, 0x5f, 0x49, 0x4e, 0x4f, 0x55, 0x54, + 0x10, 0x03, 0x12, 0x17, 0x0a, 0x13, 0x46, 0x55, 0x4e, 0x43, 0x5f, 0x50, 0x41, 0x52, 0x41, 0x4d, + 0x5f, 0x56, 0x41, 0x52, 0x49, 0x41, 0x44, 0x49, 0x43, 0x10, 0x04, 0x12, 0x14, 0x0a, 0x10, 0x46, + 0x55, 0x4e, 0x43, 0x5f, 0x50, 0x41, 0x52, 0x41, 0x4d, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x10, + 0x05, 0x2a, 0xbe, 0x02, 0x0a, 0x13, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x53, 0x74, 0x6d, 0x74, 0x4b, 0x69, 0x6e, 0x64, 0x12, 0x23, 0x0a, 0x1f, 0x54, 0x52, 0x41, + 0x4e, 0x53, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x53, 0x54, 0x4d, 0x54, 0x5f, 0x4b, 0x49, + 0x4e, 0x44, 0x5f, 0x55, 0x4e, 0x44, 0x45, 0x46, 0x49, 0x4e, 0x45, 0x44, 0x10, 0x00, 0x12, 0x14, + 0x0a, 0x10, 0x54, 0x52, 0x41, 0x4e, 0x53, 0x5f, 0x53, 0x54, 0x4d, 0x54, 0x5f, 0x42, 0x45, 0x47, + 0x49, 0x4e, 0x10, 0x01, 0x12, 0x14, 0x0a, 0x10, 0x54, 0x52, 0x41, 0x4e, 0x53, 0x5f, 0x53, 0x54, + 0x4d, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x52, 0x54, 0x10, 0x02, 0x12, 0x15, 0x0a, 0x11, 0x54, 0x52, + 0x41, 0x4e, 0x53, 0x5f, 0x53, 0x54, 0x4d, 0x54, 0x5f, 0x43, 0x4f, 0x4d, 0x4d, 0x49, 0x54, 0x10, + 0x03, 0x12, 0x17, 0x0a, 0x13, 0x54, 0x52, 0x41, 0x4e, 0x53, 0x5f, 0x53, 0x54, 0x4d, 0x54, 0x5f, + 0x52, 0x4f, 0x4c, 0x4c, 0x42, 0x41, 0x43, 0x4b, 0x10, 0x04, 0x12, 0x18, 0x0a, 0x14, 0x54, 0x52, + 0x41, 0x4e, 0x53, 0x5f, 0x53, 0x54, 0x4d, 0x54, 0x5f, 0x53, 0x41, 0x56, 0x45, 0x50, 0x4f, 0x49, + 0x4e, 0x54, 0x10, 0x05, 0x12, 0x16, 0x0a, 0x12, 0x54, 0x52, 0x41, 0x4e, 0x53, 0x5f, 0x53, 0x54, + 0x4d, 0x54, 0x5f, 0x52, 0x45, 0x4c, 0x45, 0x41, 0x53, 0x45, 0x10, 0x06, 0x12, 0x1a, 0x0a, 0x16, + 0x54, 0x52, 0x41, 0x4e, 0x53, 0x5f, 0x53, 0x54, 0x4d, 0x54, 0x5f, 0x52, 0x4f, 0x4c, 0x4c, 0x42, + 0x41, 0x43, 0x4b, 0x5f, 0x54, 0x4f, 0x10, 0x07, 0x12, 0x16, 0x0a, 0x12, 0x54, 0x52, 0x41, 0x4e, + 0x53, 0x5f, 0x53, 0x54, 0x4d, 0x54, 0x5f, 0x50, 0x52, 0x45, 0x50, 0x41, 0x52, 0x45, 0x10, 0x08, + 0x12, 0x1e, 0x0a, 0x1a, 0x54, 0x52, 0x41, 0x4e, 0x53, 0x5f, 0x53, 0x54, 0x4d, 0x54, 0x5f, 0x43, + 0x4f, 0x4d, 0x4d, 0x49, 0x54, 0x5f, 0x50, 0x52, 0x45, 0x50, 0x41, 0x52, 0x45, 0x44, 0x10, 0x09, + 0x12, 0x20, 0x0a, 0x1c, 0x54, 0x52, 0x41, 0x4e, 0x53, 0x5f, 0x53, 0x54, 0x4d, 0x54, 0x5f, 0x52, + 0x4f, 0x4c, 0x4c, 0x42, 0x41, 0x43, 0x4b, 0x5f, 0x50, 0x52, 0x45, 0x50, 0x41, 0x52, 0x45, 0x44, + 0x10, 0x0a, 0x2a, 0x7a, 0x0a, 0x0f, 0x56, 0x69, 0x65, 0x77, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x4f, + 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1f, 0x0a, 0x1b, 0x56, 0x49, 0x45, 0x57, 0x5f, 0x43, 0x48, + 0x45, 0x43, 0x4b, 0x5f, 0x4f, 0x50, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x55, 0x4e, 0x44, 0x45, 0x46, + 0x49, 0x4e, 0x45, 0x44, 0x10, 0x00, 0x12, 0x13, 0x0a, 0x0f, 0x4e, 0x4f, 0x5f, 0x43, 0x48, 0x45, + 0x43, 0x4b, 0x5f, 0x4f, 0x50, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x01, 0x12, 0x16, 0x0a, 0x12, 0x4c, + 0x4f, 0x43, 0x41, 0x4c, 0x5f, 0x43, 0x48, 0x45, 0x43, 0x4b, 0x5f, 0x4f, 0x50, 0x54, 0x49, 0x4f, + 0x4e, 0x10, 0x02, 0x12, 0x19, 0x0a, 0x15, 0x43, 0x41, 0x53, 0x43, 0x41, 0x44, 0x45, 0x44, 0x5f, + 0x43, 0x48, 0x45, 0x43, 0x4b, 0x5f, 0x4f, 0x50, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x03, 0x2a, 0x55, + 0x0a, 0x0d, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, + 0x1c, 0x0a, 0x18, 0x43, 0x4c, 0x55, 0x53, 0x54, 0x45, 0x52, 0x5f, 0x4f, 0x50, 0x54, 0x49, 0x4f, + 0x4e, 0x5f, 0x55, 0x4e, 0x44, 0x45, 0x46, 0x49, 0x4e, 0x45, 0x44, 0x10, 0x00, 0x12, 0x12, 0x0a, + 0x0e, 0x43, 0x4c, 0x55, 0x4f, 0x50, 0x54, 0x5f, 0x52, 0x45, 0x43, 0x48, 0x45, 0x43, 0x4b, 0x10, + 0x01, 0x12, 0x12, 0x0a, 0x0e, 0x43, 0x4c, 0x55, 0x4f, 0x50, 0x54, 0x5f, 0x56, 0x45, 0x52, 0x42, + 0x4f, 0x53, 0x45, 0x10, 0x02, 0x2a, 0x76, 0x0a, 0x0b, 0x44, 0x69, 0x73, 0x63, 0x61, 0x72, 0x64, + 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x1a, 0x0a, 0x16, 0x44, 0x49, 0x53, 0x43, 0x41, 0x52, 0x44, 0x5f, + 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x55, 0x4e, 0x44, 0x45, 0x46, 0x49, 0x4e, 0x45, 0x44, 0x10, 0x00, + 0x12, 0x0f, 0x0a, 0x0b, 0x44, 0x49, 0x53, 0x43, 0x41, 0x52, 0x44, 0x5f, 0x41, 0x4c, 0x4c, 0x10, + 0x01, 0x12, 0x11, 0x0a, 0x0d, 0x44, 0x49, 0x53, 0x43, 0x41, 0x52, 0x44, 0x5f, 0x50, 0x4c, 0x41, + 0x4e, 0x53, 0x10, 0x02, 0x12, 0x15, 0x0a, 0x11, 0x44, 0x49, 0x53, 0x43, 0x41, 0x52, 0x44, 0x5f, + 0x53, 0x45, 0x51, 0x55, 0x45, 0x4e, 0x43, 0x45, 0x53, 0x10, 0x03, 0x12, 0x10, 0x0a, 0x0c, 0x44, + 0x49, 0x53, 0x43, 0x41, 0x52, 0x44, 0x5f, 0x54, 0x45, 0x4d, 0x50, 0x10, 0x04, 0x2a, 0xbd, 0x01, + 0x0a, 0x11, 0x52, 0x65, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x54, + 0x79, 0x70, 0x65, 0x12, 0x21, 0x0a, 0x1d, 0x52, 0x45, 0x49, 0x4e, 0x44, 0x45, 0x58, 0x5f, 0x4f, + 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x44, 0x45, 0x46, + 0x49, 0x4e, 0x45, 0x44, 0x10, 0x00, 0x12, 0x18, 0x0a, 0x14, 0x52, 0x45, 0x49, 0x4e, 0x44, 0x45, + 0x58, 0x5f, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x49, 0x4e, 0x44, 0x45, 0x58, 0x10, 0x01, + 0x12, 0x18, 0x0a, 0x14, 0x52, 0x45, 0x49, 0x4e, 0x44, 0x45, 0x58, 0x5f, 0x4f, 0x42, 0x4a, 0x45, + 0x43, 0x54, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x10, 0x02, 0x12, 0x19, 0x0a, 0x15, 0x52, 0x45, + 0x49, 0x4e, 0x44, 0x45, 0x58, 0x5f, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x53, 0x43, 0x48, + 0x45, 0x4d, 0x41, 0x10, 0x03, 0x12, 0x19, 0x0a, 0x15, 0x52, 0x45, 0x49, 0x4e, 0x44, 0x45, 0x58, + 0x5f, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x53, 0x59, 0x53, 0x54, 0x45, 0x4d, 0x10, 0x04, + 0x12, 0x1b, 0x0a, 0x17, 0x52, 0x45, 0x49, 0x4e, 0x44, 0x45, 0x58, 0x5f, 0x4f, 0x42, 0x4a, 0x45, + 0x43, 0x54, 0x5f, 0x44, 0x41, 0x54, 0x41, 0x42, 0x41, 0x53, 0x45, 0x10, 0x05, 0x2a, 0xef, 0x01, + 0x0a, 0x11, 0x41, 0x6c, 0x74, 0x65, 0x72, 0x54, 0x53, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x54, + 0x79, 0x70, 0x65, 0x12, 0x21, 0x0a, 0x1d, 0x41, 0x4c, 0x54, 0x45, 0x52, 0x5f, 0x54, 0x53, 0x43, + 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x44, 0x45, 0x46, + 0x49, 0x4e, 0x45, 0x44, 0x10, 0x00, 0x12, 0x1e, 0x0a, 0x1a, 0x41, 0x4c, 0x54, 0x45, 0x52, 0x5f, + 0x54, 0x53, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x5f, 0x41, 0x44, 0x44, 0x5f, 0x4d, 0x41, 0x50, + 0x50, 0x49, 0x4e, 0x47, 0x10, 0x01, 0x12, 0x2a, 0x0a, 0x26, 0x41, 0x4c, 0x54, 0x45, 0x52, 0x5f, + 0x54, 0x53, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x5f, 0x41, 0x4c, 0x54, 0x45, 0x52, 0x5f, 0x4d, + 0x41, 0x50, 0x50, 0x49, 0x4e, 0x47, 0x5f, 0x46, 0x4f, 0x52, 0x5f, 0x54, 0x4f, 0x4b, 0x45, 0x4e, + 0x10, 0x02, 0x12, 0x1f, 0x0a, 0x1b, 0x41, 0x4c, 0x54, 0x45, 0x52, 0x5f, 0x54, 0x53, 0x43, 0x4f, + 0x4e, 0x46, 0x49, 0x47, 0x5f, 0x52, 0x45, 0x50, 0x4c, 0x41, 0x43, 0x45, 0x5f, 0x44, 0x49, 0x43, + 0x54, 0x10, 0x03, 0x12, 0x29, 0x0a, 0x25, 0x41, 0x4c, 0x54, 0x45, 0x52, 0x5f, 0x54, 0x53, 0x43, + 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x5f, 0x52, 0x45, 0x50, 0x4c, 0x41, 0x43, 0x45, 0x5f, 0x44, 0x49, + 0x43, 0x54, 0x5f, 0x46, 0x4f, 0x52, 0x5f, 0x54, 0x4f, 0x4b, 0x45, 0x4e, 0x10, 0x04, 0x12, 0x1f, + 0x0a, 0x1b, 0x41, 0x4c, 0x54, 0x45, 0x52, 0x5f, 0x54, 0x53, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, + 0x5f, 0x44, 0x52, 0x4f, 0x50, 0x5f, 0x4d, 0x41, 0x50, 0x50, 0x49, 0x4e, 0x47, 0x10, 0x05, 0x2a, + 0xe5, 0x01, 0x0a, 0x15, 0x41, 0x6c, 0x74, 0x65, 0x72, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, + 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x25, 0x0a, 0x21, 0x41, 0x4c, 0x54, + 0x45, 0x52, 0x5f, 0x53, 0x55, 0x42, 0x53, 0x43, 0x52, 0x49, 0x50, 0x54, 0x49, 0x4f, 0x4e, 0x5f, + 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x44, 0x45, 0x46, 0x49, 0x4e, 0x45, 0x44, 0x10, 0x00, + 0x12, 0x1e, 0x0a, 0x1a, 0x41, 0x4c, 0x54, 0x45, 0x52, 0x5f, 0x53, 0x55, 0x42, 0x53, 0x43, 0x52, + 0x49, 0x50, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x4f, 0x50, 0x54, 0x49, 0x4f, 0x4e, 0x53, 0x10, 0x01, + 0x12, 0x21, 0x0a, 0x1d, 0x41, 0x4c, 0x54, 0x45, 0x52, 0x5f, 0x53, 0x55, 0x42, 0x53, 0x43, 0x52, + 0x49, 0x50, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x43, 0x4f, 0x4e, 0x4e, 0x45, 0x43, 0x54, 0x49, 0x4f, + 0x4e, 0x10, 0x02, 0x12, 0x22, 0x0a, 0x1e, 0x41, 0x4c, 0x54, 0x45, 0x52, 0x5f, 0x53, 0x55, 0x42, + 0x53, 0x43, 0x52, 0x49, 0x50, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x50, 0x55, 0x42, 0x4c, 0x49, 0x43, + 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x03, 0x12, 0x1e, 0x0a, 0x1a, 0x41, 0x4c, 0x54, 0x45, 0x52, + 0x5f, 0x53, 0x55, 0x42, 0x53, 0x43, 0x52, 0x49, 0x50, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x52, 0x45, + 0x46, 0x52, 0x45, 0x53, 0x48, 0x10, 0x04, 0x12, 0x1e, 0x0a, 0x1a, 0x41, 0x4c, 0x54, 0x45, 0x52, + 0x5f, 0x53, 0x55, 0x42, 0x53, 0x43, 0x52, 0x49, 0x50, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x45, 0x4e, + 0x41, 0x42, 0x4c, 0x45, 0x44, 0x10, 0x05, 0x2a, 0x8c, 0x01, 0x0a, 0x0e, 0x4f, 0x6e, 0x43, 0x6f, + 0x6d, 0x6d, 0x69, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1e, 0x0a, 0x1a, 0x4f, 0x4e, + 0x5f, 0x43, 0x4f, 0x4d, 0x4d, 0x49, 0x54, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x55, + 0x4e, 0x44, 0x45, 0x46, 0x49, 0x4e, 0x45, 0x44, 0x10, 0x00, 0x12, 0x11, 0x0a, 0x0d, 0x4f, 0x4e, + 0x43, 0x4f, 0x4d, 0x4d, 0x49, 0x54, 0x5f, 0x4e, 0x4f, 0x4f, 0x50, 0x10, 0x01, 0x12, 0x1a, 0x0a, + 0x16, 0x4f, 0x4e, 0x43, 0x4f, 0x4d, 0x4d, 0x49, 0x54, 0x5f, 0x50, 0x52, 0x45, 0x53, 0x45, 0x52, + 0x56, 0x45, 0x5f, 0x52, 0x4f, 0x57, 0x53, 0x10, 0x02, 0x12, 0x18, 0x0a, 0x14, 0x4f, 0x4e, 0x43, + 0x4f, 0x4d, 0x4d, 0x49, 0x54, 0x5f, 0x44, 0x45, 0x4c, 0x45, 0x54, 0x45, 0x5f, 0x52, 0x4f, 0x57, + 0x53, 0x10, 0x03, 0x12, 0x11, 0x0a, 0x0d, 0x4f, 0x4e, 0x43, 0x4f, 0x4d, 0x4d, 0x49, 0x54, 0x5f, + 0x44, 0x52, 0x4f, 0x50, 0x10, 0x04, 0x2a, 0x6f, 0x0a, 0x09, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x4b, + 0x69, 0x6e, 0x64, 0x12, 0x18, 0x0a, 0x14, 0x50, 0x41, 0x52, 0x41, 0x4d, 0x5f, 0x4b, 0x49, 0x4e, + 0x44, 0x5f, 0x55, 0x4e, 0x44, 0x45, 0x46, 0x49, 0x4e, 0x45, 0x44, 0x10, 0x00, 0x12, 0x10, 0x0a, + 0x0c, 0x50, 0x41, 0x52, 0x41, 0x4d, 0x5f, 0x45, 0x58, 0x54, 0x45, 0x52, 0x4e, 0x10, 0x01, 0x12, + 0x0e, 0x0a, 0x0a, 0x50, 0x41, 0x52, 0x41, 0x4d, 0x5f, 0x45, 0x58, 0x45, 0x43, 0x10, 0x02, 0x12, + 0x11, 0x0a, 0x0d, 0x50, 0x41, 0x52, 0x41, 0x4d, 0x5f, 0x53, 0x55, 0x42, 0x4c, 0x49, 0x4e, 0x4b, + 0x10, 0x03, 0x12, 0x13, 0x0a, 0x0f, 0x50, 0x41, 0x52, 0x41, 0x4d, 0x5f, 0x4d, 0x55, 0x4c, 0x54, + 0x49, 0x45, 0x58, 0x50, 0x52, 0x10, 0x04, 0x2a, 0x78, 0x0a, 0x0f, 0x43, 0x6f, 0x65, 0x72, 0x63, + 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x12, 0x1e, 0x0a, 0x1a, 0x43, 0x4f, + 0x45, 0x52, 0x43, 0x49, 0x4f, 0x4e, 0x5f, 0x43, 0x4f, 0x4e, 0x54, 0x45, 0x58, 0x54, 0x5f, 0x55, + 0x4e, 0x44, 0x45, 0x46, 0x49, 0x4e, 0x45, 0x44, 0x10, 0x00, 0x12, 0x15, 0x0a, 0x11, 0x43, 0x4f, + 0x45, 0x52, 0x43, 0x49, 0x4f, 0x4e, 0x5f, 0x49, 0x4d, 0x50, 0x4c, 0x49, 0x43, 0x49, 0x54, 0x10, + 0x01, 0x12, 0x17, 0x0a, 0x13, 0x43, 0x4f, 0x45, 0x52, 0x43, 0x49, 0x4f, 0x4e, 0x5f, 0x41, 0x53, + 0x53, 0x49, 0x47, 0x4e, 0x4d, 0x45, 0x4e, 0x54, 0x10, 0x02, 0x12, 0x15, 0x0a, 0x11, 0x43, 0x4f, + 0x45, 0x52, 0x43, 0x49, 0x4f, 0x4e, 0x5f, 0x45, 0x58, 0x50, 0x4c, 0x49, 0x43, 0x49, 0x54, 0x10, + 0x03, 0x2a, 0x79, 0x0a, 0x0c, 0x43, 0x6f, 0x65, 0x72, 0x63, 0x69, 0x6f, 0x6e, 0x46, 0x6f, 0x72, + 0x6d, 0x12, 0x1b, 0x0a, 0x17, 0x43, 0x4f, 0x45, 0x52, 0x43, 0x49, 0x4f, 0x4e, 0x5f, 0x46, 0x4f, + 0x52, 0x4d, 0x5f, 0x55, 0x4e, 0x44, 0x45, 0x46, 0x49, 0x4e, 0x45, 0x44, 0x10, 0x00, 0x12, 0x18, + 0x0a, 0x14, 0x43, 0x4f, 0x45, 0x52, 0x43, 0x45, 0x5f, 0x45, 0x58, 0x50, 0x4c, 0x49, 0x43, 0x49, + 0x54, 0x5f, 0x43, 0x41, 0x4c, 0x4c, 0x10, 0x01, 0x12, 0x18, 0x0a, 0x14, 0x43, 0x4f, 0x45, 0x52, + 0x43, 0x45, 0x5f, 0x45, 0x58, 0x50, 0x4c, 0x49, 0x43, 0x49, 0x54, 0x5f, 0x43, 0x41, 0x53, 0x54, + 0x10, 0x02, 0x12, 0x18, 0x0a, 0x14, 0x43, 0x4f, 0x45, 0x52, 0x43, 0x45, 0x5f, 0x49, 0x4d, 0x50, + 0x4c, 0x49, 0x43, 0x49, 0x54, 0x5f, 0x43, 0x41, 0x53, 0x54, 0x10, 0x03, 0x2a, 0x55, 0x0a, 0x0c, + 0x42, 0x6f, 0x6f, 0x6c, 0x45, 0x78, 0x70, 0x72, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1c, 0x0a, 0x18, + 0x42, 0x4f, 0x4f, 0x4c, 0x5f, 0x45, 0x58, 0x50, 0x52, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, + 0x4e, 0x44, 0x45, 0x46, 0x49, 0x4e, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0c, 0x0a, 0x08, 0x41, 0x4e, + 0x44, 0x5f, 0x45, 0x58, 0x50, 0x52, 0x10, 0x01, 0x12, 0x0b, 0x0a, 0x07, 0x4f, 0x52, 0x5f, 0x45, + 0x58, 0x50, 0x52, 0x10, 0x02, 0x12, 0x0c, 0x0a, 0x08, 0x4e, 0x4f, 0x54, 0x5f, 0x45, 0x58, 0x50, + 0x52, 0x10, 0x03, 0x2a, 0xc5, 0x01, 0x0a, 0x0b, 0x53, 0x75, 0x62, 0x4c, 0x69, 0x6e, 0x6b, 0x54, + 0x79, 0x70, 0x65, 0x12, 0x1b, 0x0a, 0x17, 0x53, 0x55, 0x42, 0x5f, 0x4c, 0x49, 0x4e, 0x4b, 0x5f, + 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x44, 0x45, 0x46, 0x49, 0x4e, 0x45, 0x44, 0x10, 0x00, + 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x58, 0x49, 0x53, 0x54, 0x53, 0x5f, 0x53, 0x55, 0x42, 0x4c, 0x49, + 0x4e, 0x4b, 0x10, 0x01, 0x12, 0x0f, 0x0a, 0x0b, 0x41, 0x4c, 0x4c, 0x5f, 0x53, 0x55, 0x42, 0x4c, + 0x49, 0x4e, 0x4b, 0x10, 0x02, 0x12, 0x0f, 0x0a, 0x0b, 0x41, 0x4e, 0x59, 0x5f, 0x53, 0x55, 0x42, + 0x4c, 0x49, 0x4e, 0x4b, 0x10, 0x03, 0x12, 0x16, 0x0a, 0x12, 0x52, 0x4f, 0x57, 0x43, 0x4f, 0x4d, + 0x50, 0x41, 0x52, 0x45, 0x5f, 0x53, 0x55, 0x42, 0x4c, 0x49, 0x4e, 0x4b, 0x10, 0x04, 0x12, 0x10, + 0x0a, 0x0c, 0x45, 0x58, 0x50, 0x52, 0x5f, 0x53, 0x55, 0x42, 0x4c, 0x49, 0x4e, 0x4b, 0x10, 0x05, + 0x12, 0x15, 0x0a, 0x11, 0x4d, 0x55, 0x4c, 0x54, 0x49, 0x45, 0x58, 0x50, 0x52, 0x5f, 0x53, 0x55, + 0x42, 0x4c, 0x49, 0x4e, 0x4b, 0x10, 0x06, 0x12, 0x11, 0x0a, 0x0d, 0x41, 0x52, 0x52, 0x41, 0x59, + 0x5f, 0x53, 0x55, 0x42, 0x4c, 0x49, 0x4e, 0x4b, 0x10, 0x07, 0x12, 0x0f, 0x0a, 0x0b, 0x43, 0x54, + 0x45, 0x5f, 0x53, 0x55, 0x42, 0x4c, 0x49, 0x4e, 0x4b, 0x10, 0x08, 0x2a, 0xa2, 0x01, 0x0a, 0x0e, + 0x52, 0x6f, 0x77, 0x43, 0x6f, 0x6d, 0x70, 0x61, 0x72, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1e, + 0x0a, 0x1a, 0x52, 0x4f, 0x57, 0x5f, 0x43, 0x4f, 0x4d, 0x50, 0x41, 0x52, 0x45, 0x5f, 0x54, 0x59, + 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x44, 0x45, 0x46, 0x49, 0x4e, 0x45, 0x44, 0x10, 0x00, 0x12, 0x11, + 0x0a, 0x0d, 0x52, 0x4f, 0x57, 0x43, 0x4f, 0x4d, 0x50, 0x41, 0x52, 0x45, 0x5f, 0x4c, 0x54, 0x10, + 0x01, 0x12, 0x11, 0x0a, 0x0d, 0x52, 0x4f, 0x57, 0x43, 0x4f, 0x4d, 0x50, 0x41, 0x52, 0x45, 0x5f, + 0x4c, 0x45, 0x10, 0x02, 0x12, 0x11, 0x0a, 0x0d, 0x52, 0x4f, 0x57, 0x43, 0x4f, 0x4d, 0x50, 0x41, + 0x52, 0x45, 0x5f, 0x45, 0x51, 0x10, 0x03, 0x12, 0x11, 0x0a, 0x0d, 0x52, 0x4f, 0x57, 0x43, 0x4f, + 0x4d, 0x50, 0x41, 0x52, 0x45, 0x5f, 0x47, 0x45, 0x10, 0x04, 0x12, 0x11, 0x0a, 0x0d, 0x52, 0x4f, + 0x57, 0x43, 0x4f, 0x4d, 0x50, 0x41, 0x52, 0x45, 0x5f, 0x47, 0x54, 0x10, 0x05, 0x12, 0x11, 0x0a, + 0x0d, 0x52, 0x4f, 0x57, 0x43, 0x4f, 0x4d, 0x50, 0x41, 0x52, 0x45, 0x5f, 0x4e, 0x45, 0x10, 0x06, + 0x2a, 0x43, 0x0a, 0x08, 0x4d, 0x69, 0x6e, 0x4d, 0x61, 0x78, 0x4f, 0x70, 0x12, 0x18, 0x0a, 0x14, + 0x4d, 0x49, 0x4e, 0x5f, 0x4d, 0x41, 0x58, 0x5f, 0x4f, 0x50, 0x5f, 0x55, 0x4e, 0x44, 0x45, 0x46, + 0x49, 0x4e, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0f, 0x0a, 0x0b, 0x49, 0x53, 0x5f, 0x47, 0x52, 0x45, + 0x41, 0x54, 0x45, 0x53, 0x54, 0x10, 0x01, 0x12, 0x0c, 0x0a, 0x08, 0x49, 0x53, 0x5f, 0x4c, 0x45, + 0x41, 0x53, 0x54, 0x10, 0x02, 0x2a, 0xad, 0x03, 0x0a, 0x12, 0x53, 0x51, 0x4c, 0x56, 0x61, 0x6c, + 0x75, 0x65, 0x46, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4f, 0x70, 0x12, 0x22, 0x0a, 0x1e, + 0x53, 0x51, 0x4c, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x5f, 0x46, 0x55, 0x4e, 0x43, 0x54, 0x49, 0x4f, + 0x4e, 0x5f, 0x4f, 0x50, 0x5f, 0x55, 0x4e, 0x44, 0x45, 0x46, 0x49, 0x4e, 0x45, 0x44, 0x10, 0x00, + 0x12, 0x16, 0x0a, 0x12, 0x53, 0x56, 0x46, 0x4f, 0x50, 0x5f, 0x43, 0x55, 0x52, 0x52, 0x45, 0x4e, + 0x54, 0x5f, 0x44, 0x41, 0x54, 0x45, 0x10, 0x01, 0x12, 0x16, 0x0a, 0x12, 0x53, 0x56, 0x46, 0x4f, + 0x50, 0x5f, 0x43, 0x55, 0x52, 0x52, 0x45, 0x4e, 0x54, 0x5f, 0x54, 0x49, 0x4d, 0x45, 0x10, 0x02, + 0x12, 0x18, 0x0a, 0x14, 0x53, 0x56, 0x46, 0x4f, 0x50, 0x5f, 0x43, 0x55, 0x52, 0x52, 0x45, 0x4e, + 0x54, 0x5f, 0x54, 0x49, 0x4d, 0x45, 0x5f, 0x4e, 0x10, 0x03, 0x12, 0x1b, 0x0a, 0x17, 0x53, 0x56, + 0x46, 0x4f, 0x50, 0x5f, 0x43, 0x55, 0x52, 0x52, 0x45, 0x4e, 0x54, 0x5f, 0x54, 0x49, 0x4d, 0x45, + 0x53, 0x54, 0x41, 0x4d, 0x50, 0x10, 0x04, 0x12, 0x1d, 0x0a, 0x19, 0x53, 0x56, 0x46, 0x4f, 0x50, + 0x5f, 0x43, 0x55, 0x52, 0x52, 0x45, 0x4e, 0x54, 0x5f, 0x54, 0x49, 0x4d, 0x45, 0x53, 0x54, 0x41, + 0x4d, 0x50, 0x5f, 0x4e, 0x10, 0x05, 0x12, 0x13, 0x0a, 0x0f, 0x53, 0x56, 0x46, 0x4f, 0x50, 0x5f, + 0x4c, 0x4f, 0x43, 0x41, 0x4c, 0x54, 0x49, 0x4d, 0x45, 0x10, 0x06, 0x12, 0x15, 0x0a, 0x11, 0x53, + 0x56, 0x46, 0x4f, 0x50, 0x5f, 0x4c, 0x4f, 0x43, 0x41, 0x4c, 0x54, 0x49, 0x4d, 0x45, 0x5f, 0x4e, + 0x10, 0x07, 0x12, 0x18, 0x0a, 0x14, 0x53, 0x56, 0x46, 0x4f, 0x50, 0x5f, 0x4c, 0x4f, 0x43, 0x41, + 0x4c, 0x54, 0x49, 0x4d, 0x45, 0x53, 0x54, 0x41, 0x4d, 0x50, 0x10, 0x08, 0x12, 0x1a, 0x0a, 0x16, + 0x53, 0x56, 0x46, 0x4f, 0x50, 0x5f, 0x4c, 0x4f, 0x43, 0x41, 0x4c, 0x54, 0x49, 0x4d, 0x45, 0x53, + 0x54, 0x41, 0x4d, 0x50, 0x5f, 0x4e, 0x10, 0x09, 0x12, 0x16, 0x0a, 0x12, 0x53, 0x56, 0x46, 0x4f, + 0x50, 0x5f, 0x43, 0x55, 0x52, 0x52, 0x45, 0x4e, 0x54, 0x5f, 0x52, 0x4f, 0x4c, 0x45, 0x10, 0x0a, + 0x12, 0x16, 0x0a, 0x12, 0x53, 0x56, 0x46, 0x4f, 0x50, 0x5f, 0x43, 0x55, 0x52, 0x52, 0x45, 0x4e, + 0x54, 0x5f, 0x55, 0x53, 0x45, 0x52, 0x10, 0x0b, 0x12, 0x0e, 0x0a, 0x0a, 0x53, 0x56, 0x46, 0x4f, + 0x50, 0x5f, 0x55, 0x53, 0x45, 0x52, 0x10, 0x0c, 0x12, 0x16, 0x0a, 0x12, 0x53, 0x56, 0x46, 0x4f, + 0x50, 0x5f, 0x53, 0x45, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x55, 0x53, 0x45, 0x52, 0x10, 0x0d, + 0x12, 0x19, 0x0a, 0x15, 0x53, 0x56, 0x46, 0x4f, 0x50, 0x5f, 0x43, 0x55, 0x52, 0x52, 0x45, 0x4e, + 0x54, 0x5f, 0x43, 0x41, 0x54, 0x41, 0x4c, 0x4f, 0x47, 0x10, 0x0e, 0x12, 0x18, 0x0a, 0x14, 0x53, + 0x56, 0x46, 0x4f, 0x50, 0x5f, 0x43, 0x55, 0x52, 0x52, 0x45, 0x4e, 0x54, 0x5f, 0x53, 0x43, 0x48, + 0x45, 0x4d, 0x41, 0x10, 0x0f, 0x2a, 0xb2, 0x01, 0x0a, 0x09, 0x58, 0x6d, 0x6c, 0x45, 0x78, 0x70, + 0x72, 0x4f, 0x70, 0x12, 0x19, 0x0a, 0x15, 0x58, 0x4d, 0x4c, 0x5f, 0x45, 0x58, 0x50, 0x52, 0x5f, + 0x4f, 0x50, 0x5f, 0x55, 0x4e, 0x44, 0x45, 0x46, 0x49, 0x4e, 0x45, 0x44, 0x10, 0x00, 0x12, 0x10, + 0x0a, 0x0c, 0x49, 0x53, 0x5f, 0x58, 0x4d, 0x4c, 0x43, 0x4f, 0x4e, 0x43, 0x41, 0x54, 0x10, 0x01, + 0x12, 0x11, 0x0a, 0x0d, 0x49, 0x53, 0x5f, 0x58, 0x4d, 0x4c, 0x45, 0x4c, 0x45, 0x4d, 0x45, 0x4e, + 0x54, 0x10, 0x02, 0x12, 0x10, 0x0a, 0x0c, 0x49, 0x53, 0x5f, 0x58, 0x4d, 0x4c, 0x46, 0x4f, 0x52, + 0x45, 0x53, 0x54, 0x10, 0x03, 0x12, 0x0f, 0x0a, 0x0b, 0x49, 0x53, 0x5f, 0x58, 0x4d, 0x4c, 0x50, + 0x41, 0x52, 0x53, 0x45, 0x10, 0x04, 0x12, 0x0c, 0x0a, 0x08, 0x49, 0x53, 0x5f, 0x58, 0x4d, 0x4c, + 0x50, 0x49, 0x10, 0x05, 0x12, 0x0e, 0x0a, 0x0a, 0x49, 0x53, 0x5f, 0x58, 0x4d, 0x4c, 0x52, 0x4f, + 0x4f, 0x54, 0x10, 0x06, 0x12, 0x13, 0x0a, 0x0f, 0x49, 0x53, 0x5f, 0x58, 0x4d, 0x4c, 0x53, 0x45, + 0x52, 0x49, 0x41, 0x4c, 0x49, 0x5a, 0x45, 0x10, 0x07, 0x12, 0x0f, 0x0a, 0x0b, 0x49, 0x53, 0x5f, + 0x44, 0x4f, 0x43, 0x55, 0x4d, 0x45, 0x4e, 0x54, 0x10, 0x08, 0x2a, 0x5d, 0x0a, 0x0d, 0x58, 0x6d, + 0x6c, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1d, 0x0a, 0x19, 0x58, + 0x4d, 0x4c, 0x5f, 0x4f, 0x50, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, + 0x4e, 0x44, 0x45, 0x46, 0x49, 0x4e, 0x45, 0x44, 0x10, 0x00, 0x12, 0x16, 0x0a, 0x12, 0x58, 0x4d, + 0x4c, 0x4f, 0x50, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x44, 0x4f, 0x43, 0x55, 0x4d, 0x45, 0x4e, 0x54, + 0x10, 0x01, 0x12, 0x15, 0x0a, 0x11, 0x58, 0x4d, 0x4c, 0x4f, 0x50, 0x54, 0x49, 0x4f, 0x4e, 0x5f, + 0x43, 0x4f, 0x4e, 0x54, 0x45, 0x4e, 0x54, 0x10, 0x02, 0x2a, 0x4a, 0x0a, 0x0c, 0x4e, 0x75, 0x6c, + 0x6c, 0x54, 0x65, 0x73, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1c, 0x0a, 0x18, 0x4e, 0x55, 0x4c, + 0x4c, 0x5f, 0x54, 0x45, 0x53, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x44, 0x45, + 0x46, 0x49, 0x4e, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0b, 0x0a, 0x07, 0x49, 0x53, 0x5f, 0x4e, 0x55, + 0x4c, 0x4c, 0x10, 0x01, 0x12, 0x0f, 0x0a, 0x0b, 0x49, 0x53, 0x5f, 0x4e, 0x4f, 0x54, 0x5f, 0x4e, + 0x55, 0x4c, 0x4c, 0x10, 0x02, 0x2a, 0x8e, 0x01, 0x0a, 0x0c, 0x42, 0x6f, 0x6f, 0x6c, 0x54, 0x65, + 0x73, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1c, 0x0a, 0x18, 0x42, 0x4f, 0x4f, 0x4c, 0x5f, 0x54, + 0x45, 0x53, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x44, 0x45, 0x46, 0x49, 0x4e, + 0x45, 0x44, 0x10, 0x00, 0x12, 0x0b, 0x0a, 0x07, 0x49, 0x53, 0x5f, 0x54, 0x52, 0x55, 0x45, 0x10, + 0x01, 0x12, 0x0f, 0x0a, 0x0b, 0x49, 0x53, 0x5f, 0x4e, 0x4f, 0x54, 0x5f, 0x54, 0x52, 0x55, 0x45, + 0x10, 0x02, 0x12, 0x0c, 0x0a, 0x08, 0x49, 0x53, 0x5f, 0x46, 0x41, 0x4c, 0x53, 0x45, 0x10, 0x03, + 0x12, 0x10, 0x0a, 0x0c, 0x49, 0x53, 0x5f, 0x4e, 0x4f, 0x54, 0x5f, 0x46, 0x41, 0x4c, 0x53, 0x45, + 0x10, 0x04, 0x12, 0x0e, 0x0a, 0x0a, 0x49, 0x53, 0x5f, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, + 0x10, 0x05, 0x12, 0x12, 0x0a, 0x0e, 0x49, 0x53, 0x5f, 0x4e, 0x4f, 0x54, 0x5f, 0x55, 0x4e, 0x4b, + 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x06, 0x2a, 0x94, 0x01, 0x0a, 0x07, 0x43, 0x6d, 0x64, 0x54, 0x79, + 0x70, 0x65, 0x12, 0x16, 0x0a, 0x12, 0x43, 0x4d, 0x44, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, + 0x4e, 0x44, 0x45, 0x46, 0x49, 0x4e, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0f, 0x0a, 0x0b, 0x43, 0x4d, + 0x44, 0x5f, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x01, 0x12, 0x0e, 0x0a, 0x0a, 0x43, + 0x4d, 0x44, 0x5f, 0x53, 0x45, 0x4c, 0x45, 0x43, 0x54, 0x10, 0x02, 0x12, 0x0e, 0x0a, 0x0a, 0x43, + 0x4d, 0x44, 0x5f, 0x55, 0x50, 0x44, 0x41, 0x54, 0x45, 0x10, 0x03, 0x12, 0x0e, 0x0a, 0x0a, 0x43, + 0x4d, 0x44, 0x5f, 0x49, 0x4e, 0x53, 0x45, 0x52, 0x54, 0x10, 0x04, 0x12, 0x0e, 0x0a, 0x0a, 0x43, + 0x4d, 0x44, 0x5f, 0x44, 0x45, 0x4c, 0x45, 0x54, 0x45, 0x10, 0x05, 0x12, 0x0f, 0x0a, 0x0b, 0x43, + 0x4d, 0x44, 0x5f, 0x55, 0x54, 0x49, 0x4c, 0x49, 0x54, 0x59, 0x10, 0x06, 0x12, 0x0f, 0x0a, 0x0b, + 0x43, 0x4d, 0x44, 0x5f, 0x4e, 0x4f, 0x54, 0x48, 0x49, 0x4e, 0x47, 0x10, 0x07, 0x2a, 0xad, 0x01, + 0x0a, 0x08, 0x4a, 0x6f, 0x69, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x17, 0x0a, 0x13, 0x4a, 0x4f, + 0x49, 0x4e, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x44, 0x45, 0x46, 0x49, 0x4e, 0x45, + 0x44, 0x10, 0x00, 0x12, 0x0e, 0x0a, 0x0a, 0x4a, 0x4f, 0x49, 0x4e, 0x5f, 0x49, 0x4e, 0x4e, 0x45, + 0x52, 0x10, 0x01, 0x12, 0x0d, 0x0a, 0x09, 0x4a, 0x4f, 0x49, 0x4e, 0x5f, 0x4c, 0x45, 0x46, 0x54, + 0x10, 0x02, 0x12, 0x0d, 0x0a, 0x09, 0x4a, 0x4f, 0x49, 0x4e, 0x5f, 0x46, 0x55, 0x4c, 0x4c, 0x10, + 0x03, 0x12, 0x0e, 0x0a, 0x0a, 0x4a, 0x4f, 0x49, 0x4e, 0x5f, 0x52, 0x49, 0x47, 0x48, 0x54, 0x10, + 0x04, 0x12, 0x0d, 0x0a, 0x09, 0x4a, 0x4f, 0x49, 0x4e, 0x5f, 0x53, 0x45, 0x4d, 0x49, 0x10, 0x05, + 0x12, 0x0d, 0x0a, 0x09, 0x4a, 0x4f, 0x49, 0x4e, 0x5f, 0x41, 0x4e, 0x54, 0x49, 0x10, 0x06, 0x12, + 0x15, 0x0a, 0x11, 0x4a, 0x4f, 0x49, 0x4e, 0x5f, 0x55, 0x4e, 0x49, 0x51, 0x55, 0x45, 0x5f, 0x4f, + 0x55, 0x54, 0x45, 0x52, 0x10, 0x07, 0x12, 0x15, 0x0a, 0x11, 0x4a, 0x4f, 0x49, 0x4e, 0x5f, 0x55, + 0x4e, 0x49, 0x51, 0x55, 0x45, 0x5f, 0x49, 0x4e, 0x4e, 0x45, 0x52, 0x10, 0x08, 0x2a, 0x67, 0x0a, + 0x0b, 0x41, 0x67, 0x67, 0x53, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x12, 0x1a, 0x0a, 0x16, + 0x41, 0x47, 0x47, 0x5f, 0x53, 0x54, 0x52, 0x41, 0x54, 0x45, 0x47, 0x59, 0x5f, 0x55, 0x4e, 0x44, + 0x45, 0x46, 0x49, 0x4e, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0d, 0x0a, 0x09, 0x41, 0x47, 0x47, 0x5f, + 0x50, 0x4c, 0x41, 0x49, 0x4e, 0x10, 0x01, 0x12, 0x0e, 0x0a, 0x0a, 0x41, 0x47, 0x47, 0x5f, 0x53, + 0x4f, 0x52, 0x54, 0x45, 0x44, 0x10, 0x02, 0x12, 0x0e, 0x0a, 0x0a, 0x41, 0x47, 0x47, 0x5f, 0x48, + 0x41, 0x53, 0x48, 0x45, 0x44, 0x10, 0x03, 0x12, 0x0d, 0x0a, 0x09, 0x41, 0x47, 0x47, 0x5f, 0x4d, + 0x49, 0x58, 0x45, 0x44, 0x10, 0x04, 0x2a, 0x72, 0x0a, 0x08, 0x41, 0x67, 0x67, 0x53, 0x70, 0x6c, + 0x69, 0x74, 0x12, 0x17, 0x0a, 0x13, 0x41, 0x47, 0x47, 0x5f, 0x53, 0x50, 0x4c, 0x49, 0x54, 0x5f, + 0x55, 0x4e, 0x44, 0x45, 0x46, 0x49, 0x4e, 0x45, 0x44, 0x10, 0x00, 0x12, 0x13, 0x0a, 0x0f, 0x41, + 0x47, 0x47, 0x53, 0x50, 0x4c, 0x49, 0x54, 0x5f, 0x53, 0x49, 0x4d, 0x50, 0x4c, 0x45, 0x10, 0x01, + 0x12, 0x1b, 0x0a, 0x17, 0x41, 0x47, 0x47, 0x53, 0x50, 0x4c, 0x49, 0x54, 0x5f, 0x49, 0x4e, 0x49, + 0x54, 0x49, 0x41, 0x4c, 0x5f, 0x53, 0x45, 0x52, 0x49, 0x41, 0x4c, 0x10, 0x02, 0x12, 0x1b, 0x0a, + 0x17, 0x41, 0x47, 0x47, 0x53, 0x50, 0x4c, 0x49, 0x54, 0x5f, 0x46, 0x49, 0x4e, 0x41, 0x4c, 0x5f, + 0x44, 0x45, 0x53, 0x45, 0x52, 0x49, 0x41, 0x4c, 0x10, 0x03, 0x2a, 0x86, 0x01, 0x0a, 0x08, 0x53, + 0x65, 0x74, 0x4f, 0x70, 0x43, 0x6d, 0x64, 0x12, 0x18, 0x0a, 0x14, 0x53, 0x45, 0x54, 0x5f, 0x4f, + 0x50, 0x5f, 0x43, 0x4d, 0x44, 0x5f, 0x55, 0x4e, 0x44, 0x45, 0x46, 0x49, 0x4e, 0x45, 0x44, 0x10, + 0x00, 0x12, 0x16, 0x0a, 0x12, 0x53, 0x45, 0x54, 0x4f, 0x50, 0x43, 0x4d, 0x44, 0x5f, 0x49, 0x4e, + 0x54, 0x45, 0x52, 0x53, 0x45, 0x43, 0x54, 0x10, 0x01, 0x12, 0x1a, 0x0a, 0x16, 0x53, 0x45, 0x54, + 0x4f, 0x50, 0x43, 0x4d, 0x44, 0x5f, 0x49, 0x4e, 0x54, 0x45, 0x52, 0x53, 0x45, 0x43, 0x54, 0x5f, + 0x41, 0x4c, 0x4c, 0x10, 0x02, 0x12, 0x13, 0x0a, 0x0f, 0x53, 0x45, 0x54, 0x4f, 0x50, 0x43, 0x4d, + 0x44, 0x5f, 0x45, 0x58, 0x43, 0x45, 0x50, 0x54, 0x10, 0x03, 0x12, 0x17, 0x0a, 0x13, 0x53, 0x45, + 0x54, 0x4f, 0x50, 0x43, 0x4d, 0x44, 0x5f, 0x45, 0x58, 0x43, 0x45, 0x50, 0x54, 0x5f, 0x41, 0x4c, + 0x4c, 0x10, 0x04, 0x2a, 0x52, 0x0a, 0x0d, 0x53, 0x65, 0x74, 0x4f, 0x70, 0x53, 0x74, 0x72, 0x61, + 0x74, 0x65, 0x67, 0x79, 0x12, 0x1d, 0x0a, 0x19, 0x53, 0x45, 0x54, 0x5f, 0x4f, 0x50, 0x5f, 0x53, + 0x54, 0x52, 0x41, 0x54, 0x45, 0x47, 0x59, 0x5f, 0x55, 0x4e, 0x44, 0x45, 0x46, 0x49, 0x4e, 0x45, + 0x44, 0x10, 0x00, 0x12, 0x10, 0x0a, 0x0c, 0x53, 0x45, 0x54, 0x4f, 0x50, 0x5f, 0x53, 0x4f, 0x52, + 0x54, 0x45, 0x44, 0x10, 0x01, 0x12, 0x10, 0x0a, 0x0c, 0x53, 0x45, 0x54, 0x4f, 0x50, 0x5f, 0x48, + 0x41, 0x53, 0x48, 0x45, 0x44, 0x10, 0x02, 0x2a, 0x78, 0x0a, 0x10, 0x4f, 0x6e, 0x43, 0x6f, 0x6e, + 0x66, 0x6c, 0x69, 0x63, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x20, 0x0a, 0x1c, 0x4f, + 0x4e, 0x5f, 0x43, 0x4f, 0x4e, 0x46, 0x4c, 0x49, 0x43, 0x54, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x4f, + 0x4e, 0x5f, 0x55, 0x4e, 0x44, 0x45, 0x46, 0x49, 0x4e, 0x45, 0x44, 0x10, 0x00, 0x12, 0x13, 0x0a, + 0x0f, 0x4f, 0x4e, 0x43, 0x4f, 0x4e, 0x46, 0x4c, 0x49, 0x43, 0x54, 0x5f, 0x4e, 0x4f, 0x4e, 0x45, + 0x10, 0x01, 0x12, 0x16, 0x0a, 0x12, 0x4f, 0x4e, 0x43, 0x4f, 0x4e, 0x46, 0x4c, 0x49, 0x43, 0x54, + 0x5f, 0x4e, 0x4f, 0x54, 0x48, 0x49, 0x4e, 0x47, 0x10, 0x02, 0x12, 0x15, 0x0a, 0x11, 0x4f, 0x4e, + 0x43, 0x4f, 0x4e, 0x46, 0x4c, 0x49, 0x43, 0x54, 0x5f, 0x55, 0x50, 0x44, 0x41, 0x54, 0x45, 0x10, + 0x03, 0x2a, 0x77, 0x0a, 0x0b, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, + 0x12, 0x1a, 0x0a, 0x16, 0x4c, 0x49, 0x4d, 0x49, 0x54, 0x5f, 0x4f, 0x50, 0x54, 0x49, 0x4f, 0x4e, + 0x5f, 0x55, 0x4e, 0x44, 0x45, 0x46, 0x49, 0x4e, 0x45, 0x44, 0x10, 0x00, 0x12, 0x18, 0x0a, 0x14, + 0x4c, 0x49, 0x4d, 0x49, 0x54, 0x5f, 0x4f, 0x50, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x44, 0x45, 0x46, + 0x41, 0x55, 0x4c, 0x54, 0x10, 0x01, 0x12, 0x16, 0x0a, 0x12, 0x4c, 0x49, 0x4d, 0x49, 0x54, 0x5f, + 0x4f, 0x50, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x10, 0x02, 0x12, 0x1a, + 0x0a, 0x16, 0x4c, 0x49, 0x4d, 0x49, 0x54, 0x5f, 0x4f, 0x50, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x57, + 0x49, 0x54, 0x48, 0x5f, 0x54, 0x49, 0x45, 0x53, 0x10, 0x03, 0x2a, 0x98, 0x01, 0x0a, 0x12, 0x4c, + 0x6f, 0x63, 0x6b, 0x43, 0x6c, 0x61, 0x75, 0x73, 0x65, 0x53, 0x74, 0x72, 0x65, 0x6e, 0x67, 0x74, + 0x68, 0x12, 0x22, 0x0a, 0x1e, 0x4c, 0x4f, 0x43, 0x4b, 0x5f, 0x43, 0x4c, 0x41, 0x55, 0x53, 0x45, + 0x5f, 0x53, 0x54, 0x52, 0x45, 0x4e, 0x47, 0x54, 0x48, 0x5f, 0x55, 0x4e, 0x44, 0x45, 0x46, 0x49, + 0x4e, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0c, 0x0a, 0x08, 0x4c, 0x43, 0x53, 0x5f, 0x4e, 0x4f, 0x4e, + 0x45, 0x10, 0x01, 0x12, 0x13, 0x0a, 0x0f, 0x4c, 0x43, 0x53, 0x5f, 0x46, 0x4f, 0x52, 0x4b, 0x45, + 0x59, 0x53, 0x48, 0x41, 0x52, 0x45, 0x10, 0x02, 0x12, 0x10, 0x0a, 0x0c, 0x4c, 0x43, 0x53, 0x5f, + 0x46, 0x4f, 0x52, 0x53, 0x48, 0x41, 0x52, 0x45, 0x10, 0x03, 0x12, 0x16, 0x0a, 0x12, 0x4c, 0x43, + 0x53, 0x5f, 0x46, 0x4f, 0x52, 0x4e, 0x4f, 0x4b, 0x45, 0x59, 0x55, 0x50, 0x44, 0x41, 0x54, 0x45, + 0x10, 0x04, 0x12, 0x11, 0x0a, 0x0d, 0x4c, 0x43, 0x53, 0x5f, 0x46, 0x4f, 0x52, 0x55, 0x50, 0x44, + 0x41, 0x54, 0x45, 0x10, 0x05, 0x2a, 0x68, 0x0a, 0x0e, 0x4c, 0x6f, 0x63, 0x6b, 0x57, 0x61, 0x69, + 0x74, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x1e, 0x0a, 0x1a, 0x4c, 0x4f, 0x43, 0x4b, 0x5f, + 0x57, 0x41, 0x49, 0x54, 0x5f, 0x50, 0x4f, 0x4c, 0x49, 0x43, 0x59, 0x5f, 0x55, 0x4e, 0x44, 0x45, + 0x46, 0x49, 0x4e, 0x45, 0x44, 0x10, 0x00, 0x12, 0x11, 0x0a, 0x0d, 0x4c, 0x6f, 0x63, 0x6b, 0x57, + 0x61, 0x69, 0x74, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x10, 0x01, 0x12, 0x10, 0x0a, 0x0c, 0x4c, 0x6f, + 0x63, 0x6b, 0x57, 0x61, 0x69, 0x74, 0x53, 0x6b, 0x69, 0x70, 0x10, 0x02, 0x12, 0x11, 0x0a, 0x0d, + 0x4c, 0x6f, 0x63, 0x6b, 0x57, 0x61, 0x69, 0x74, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x10, 0x03, 0x2a, + 0x8e, 0x01, 0x0a, 0x0d, 0x4c, 0x6f, 0x63, 0x6b, 0x54, 0x75, 0x70, 0x6c, 0x65, 0x4d, 0x6f, 0x64, + 0x65, 0x12, 0x1d, 0x0a, 0x19, 0x4c, 0x4f, 0x43, 0x4b, 0x5f, 0x54, 0x55, 0x50, 0x4c, 0x45, 0x5f, + 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x55, 0x4e, 0x44, 0x45, 0x46, 0x49, 0x4e, 0x45, 0x44, 0x10, 0x00, + 0x12, 0x15, 0x0a, 0x11, 0x4c, 0x6f, 0x63, 0x6b, 0x54, 0x75, 0x70, 0x6c, 0x65, 0x4b, 0x65, 0x79, + 0x53, 0x68, 0x61, 0x72, 0x65, 0x10, 0x01, 0x12, 0x12, 0x0a, 0x0e, 0x4c, 0x6f, 0x63, 0x6b, 0x54, + 0x75, 0x70, 0x6c, 0x65, 0x53, 0x68, 0x61, 0x72, 0x65, 0x10, 0x02, 0x12, 0x1b, 0x0a, 0x17, 0x4c, + 0x6f, 0x63, 0x6b, 0x54, 0x75, 0x70, 0x6c, 0x65, 0x4e, 0x6f, 0x4b, 0x65, 0x79, 0x45, 0x78, 0x63, + 0x6c, 0x75, 0x73, 0x69, 0x76, 0x65, 0x10, 0x03, 0x12, 0x16, 0x0a, 0x12, 0x4c, 0x6f, 0x63, 0x6b, + 0x54, 0x75, 0x70, 0x6c, 0x65, 0x45, 0x78, 0x63, 0x6c, 0x75, 0x73, 0x69, 0x76, 0x65, 0x10, 0x04, + 0x2a, 0x7d, 0x0a, 0x0b, 0x4b, 0x65, 0x79, 0x77, 0x6f, 0x72, 0x64, 0x4b, 0x69, 0x6e, 0x64, 0x12, + 0x0e, 0x0a, 0x0a, 0x4e, 0x4f, 0x5f, 0x4b, 0x45, 0x59, 0x57, 0x4f, 0x52, 0x44, 0x10, 0x00, 0x12, + 0x16, 0x0a, 0x12, 0x55, 0x4e, 0x52, 0x45, 0x53, 0x45, 0x52, 0x56, 0x45, 0x44, 0x5f, 0x4b, 0x45, + 0x59, 0x57, 0x4f, 0x52, 0x44, 0x10, 0x01, 0x12, 0x14, 0x0a, 0x10, 0x43, 0x4f, 0x4c, 0x5f, 0x4e, + 0x41, 0x4d, 0x45, 0x5f, 0x4b, 0x45, 0x59, 0x57, 0x4f, 0x52, 0x44, 0x10, 0x02, 0x12, 0x1a, 0x0a, + 0x16, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x46, 0x55, 0x4e, 0x43, 0x5f, 0x4e, 0x41, 0x4d, 0x45, 0x5f, + 0x4b, 0x45, 0x59, 0x57, 0x4f, 0x52, 0x44, 0x10, 0x03, 0x12, 0x14, 0x0a, 0x10, 0x52, 0x45, 0x53, + 0x45, 0x52, 0x56, 0x45, 0x44, 0x5f, 0x4b, 0x45, 0x59, 0x57, 0x4f, 0x52, 0x44, 0x10, 0x04, 0x2a, + 0xd3, 0x35, 0x0a, 0x05, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x07, 0x0a, 0x03, 0x4e, 0x55, 0x4c, + 0x10, 0x00, 0x12, 0x0c, 0x0a, 0x08, 0x41, 0x53, 0x43, 0x49, 0x49, 0x5f, 0x33, 0x37, 0x10, 0x25, + 0x12, 0x0c, 0x0a, 0x08, 0x41, 0x53, 0x43, 0x49, 0x49, 0x5f, 0x34, 0x30, 0x10, 0x28, 0x12, 0x0c, + 0x0a, 0x08, 0x41, 0x53, 0x43, 0x49, 0x49, 0x5f, 0x34, 0x31, 0x10, 0x29, 0x12, 0x0c, 0x0a, 0x08, + 0x41, 0x53, 0x43, 0x49, 0x49, 0x5f, 0x34, 0x32, 0x10, 0x2a, 0x12, 0x0c, 0x0a, 0x08, 0x41, 0x53, + 0x43, 0x49, 0x49, 0x5f, 0x34, 0x33, 0x10, 0x2b, 0x12, 0x0c, 0x0a, 0x08, 0x41, 0x53, 0x43, 0x49, + 0x49, 0x5f, 0x34, 0x34, 0x10, 0x2c, 0x12, 0x0c, 0x0a, 0x08, 0x41, 0x53, 0x43, 0x49, 0x49, 0x5f, + 0x34, 0x35, 0x10, 0x2d, 0x12, 0x0c, 0x0a, 0x08, 0x41, 0x53, 0x43, 0x49, 0x49, 0x5f, 0x34, 0x36, + 0x10, 0x2e, 0x12, 0x0c, 0x0a, 0x08, 0x41, 0x53, 0x43, 0x49, 0x49, 0x5f, 0x34, 0x37, 0x10, 0x2f, + 0x12, 0x0c, 0x0a, 0x08, 0x41, 0x53, 0x43, 0x49, 0x49, 0x5f, 0x35, 0x38, 0x10, 0x3a, 0x12, 0x0c, + 0x0a, 0x08, 0x41, 0x53, 0x43, 0x49, 0x49, 0x5f, 0x35, 0x39, 0x10, 0x3b, 0x12, 0x0c, 0x0a, 0x08, + 0x41, 0x53, 0x43, 0x49, 0x49, 0x5f, 0x36, 0x30, 0x10, 0x3c, 0x12, 0x0c, 0x0a, 0x08, 0x41, 0x53, + 0x43, 0x49, 0x49, 0x5f, 0x36, 0x31, 0x10, 0x3d, 0x12, 0x0c, 0x0a, 0x08, 0x41, 0x53, 0x43, 0x49, + 0x49, 0x5f, 0x36, 0x32, 0x10, 0x3e, 0x12, 0x0c, 0x0a, 0x08, 0x41, 0x53, 0x43, 0x49, 0x49, 0x5f, + 0x36, 0x33, 0x10, 0x3f, 0x12, 0x0c, 0x0a, 0x08, 0x41, 0x53, 0x43, 0x49, 0x49, 0x5f, 0x39, 0x31, + 0x10, 0x5b, 0x12, 0x0c, 0x0a, 0x08, 0x41, 0x53, 0x43, 0x49, 0x49, 0x5f, 0x39, 0x33, 0x10, 0x5d, + 0x12, 0x0c, 0x0a, 0x08, 0x41, 0x53, 0x43, 0x49, 0x49, 0x5f, 0x39, 0x34, 0x10, 0x5e, 0x12, 0x0a, + 0x0a, 0x05, 0x49, 0x44, 0x45, 0x4e, 0x54, 0x10, 0x82, 0x02, 0x12, 0x0b, 0x0a, 0x06, 0x55, 0x49, + 0x44, 0x45, 0x4e, 0x54, 0x10, 0x83, 0x02, 0x12, 0x0b, 0x0a, 0x06, 0x46, 0x43, 0x4f, 0x4e, 0x53, + 0x54, 0x10, 0x84, 0x02, 0x12, 0x0b, 0x0a, 0x06, 0x53, 0x43, 0x4f, 0x4e, 0x53, 0x54, 0x10, 0x85, + 0x02, 0x12, 0x0c, 0x0a, 0x07, 0x55, 0x53, 0x43, 0x4f, 0x4e, 0x53, 0x54, 0x10, 0x86, 0x02, 0x12, + 0x0b, 0x0a, 0x06, 0x42, 0x43, 0x4f, 0x4e, 0x53, 0x54, 0x10, 0x87, 0x02, 0x12, 0x0b, 0x0a, 0x06, + 0x58, 0x43, 0x4f, 0x4e, 0x53, 0x54, 0x10, 0x88, 0x02, 0x12, 0x07, 0x0a, 0x02, 0x4f, 0x70, 0x10, + 0x89, 0x02, 0x12, 0x0b, 0x0a, 0x06, 0x49, 0x43, 0x4f, 0x4e, 0x53, 0x54, 0x10, 0x8a, 0x02, 0x12, + 0x0a, 0x0a, 0x05, 0x50, 0x41, 0x52, 0x41, 0x4d, 0x10, 0x8b, 0x02, 0x12, 0x0d, 0x0a, 0x08, 0x54, + 0x59, 0x50, 0x45, 0x43, 0x41, 0x53, 0x54, 0x10, 0x8c, 0x02, 0x12, 0x0c, 0x0a, 0x07, 0x44, 0x4f, + 0x54, 0x5f, 0x44, 0x4f, 0x54, 0x10, 0x8d, 0x02, 0x12, 0x11, 0x0a, 0x0c, 0x43, 0x4f, 0x4c, 0x4f, + 0x4e, 0x5f, 0x45, 0x51, 0x55, 0x41, 0x4c, 0x53, 0x10, 0x8e, 0x02, 0x12, 0x13, 0x0a, 0x0e, 0x45, + 0x51, 0x55, 0x41, 0x4c, 0x53, 0x5f, 0x47, 0x52, 0x45, 0x41, 0x54, 0x45, 0x52, 0x10, 0x8f, 0x02, + 0x12, 0x10, 0x0a, 0x0b, 0x4c, 0x45, 0x53, 0x53, 0x5f, 0x45, 0x51, 0x55, 0x41, 0x4c, 0x53, 0x10, + 0x90, 0x02, 0x12, 0x13, 0x0a, 0x0e, 0x47, 0x52, 0x45, 0x41, 0x54, 0x45, 0x52, 0x5f, 0x45, 0x51, + 0x55, 0x41, 0x4c, 0x53, 0x10, 0x91, 0x02, 0x12, 0x0f, 0x0a, 0x0a, 0x4e, 0x4f, 0x54, 0x5f, 0x45, + 0x51, 0x55, 0x41, 0x4c, 0x53, 0x10, 0x92, 0x02, 0x12, 0x10, 0x0a, 0x0b, 0x53, 0x51, 0x4c, 0x5f, + 0x43, 0x4f, 0x4d, 0x4d, 0x45, 0x4e, 0x54, 0x10, 0x93, 0x02, 0x12, 0x0e, 0x0a, 0x09, 0x43, 0x5f, + 0x43, 0x4f, 0x4d, 0x4d, 0x45, 0x4e, 0x54, 0x10, 0x94, 0x02, 0x12, 0x0c, 0x0a, 0x07, 0x41, 0x42, + 0x4f, 0x52, 0x54, 0x5f, 0x50, 0x10, 0x95, 0x02, 0x12, 0x0f, 0x0a, 0x0a, 0x41, 0x42, 0x53, 0x4f, + 0x4c, 0x55, 0x54, 0x45, 0x5f, 0x50, 0x10, 0x96, 0x02, 0x12, 0x0b, 0x0a, 0x06, 0x41, 0x43, 0x43, + 0x45, 0x53, 0x53, 0x10, 0x97, 0x02, 0x12, 0x0b, 0x0a, 0x06, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, + 0x10, 0x98, 0x02, 0x12, 0x0a, 0x0a, 0x05, 0x41, 0x44, 0x44, 0x5f, 0x50, 0x10, 0x99, 0x02, 0x12, + 0x0a, 0x0a, 0x05, 0x41, 0x44, 0x4d, 0x49, 0x4e, 0x10, 0x9a, 0x02, 0x12, 0x0a, 0x0a, 0x05, 0x41, + 0x46, 0x54, 0x45, 0x52, 0x10, 0x9b, 0x02, 0x12, 0x0e, 0x0a, 0x09, 0x41, 0x47, 0x47, 0x52, 0x45, + 0x47, 0x41, 0x54, 0x45, 0x10, 0x9c, 0x02, 0x12, 0x08, 0x0a, 0x03, 0x41, 0x4c, 0x4c, 0x10, 0x9d, + 0x02, 0x12, 0x09, 0x0a, 0x04, 0x41, 0x4c, 0x53, 0x4f, 0x10, 0x9e, 0x02, 0x12, 0x0a, 0x0a, 0x05, + 0x41, 0x4c, 0x54, 0x45, 0x52, 0x10, 0x9f, 0x02, 0x12, 0x0b, 0x0a, 0x06, 0x41, 0x4c, 0x57, 0x41, + 0x59, 0x53, 0x10, 0xa0, 0x02, 0x12, 0x0c, 0x0a, 0x07, 0x41, 0x4e, 0x41, 0x4c, 0x59, 0x53, 0x45, + 0x10, 0xa1, 0x02, 0x12, 0x0c, 0x0a, 0x07, 0x41, 0x4e, 0x41, 0x4c, 0x59, 0x5a, 0x45, 0x10, 0xa2, + 0x02, 0x12, 0x08, 0x0a, 0x03, 0x41, 0x4e, 0x44, 0x10, 0xa3, 0x02, 0x12, 0x08, 0x0a, 0x03, 0x41, + 0x4e, 0x59, 0x10, 0xa4, 0x02, 0x12, 0x0a, 0x0a, 0x05, 0x41, 0x52, 0x52, 0x41, 0x59, 0x10, 0xa5, + 0x02, 0x12, 0x07, 0x0a, 0x02, 0x41, 0x53, 0x10, 0xa6, 0x02, 0x12, 0x08, 0x0a, 0x03, 0x41, 0x53, + 0x43, 0x10, 0xa7, 0x02, 0x12, 0x0e, 0x0a, 0x09, 0x41, 0x53, 0x53, 0x45, 0x52, 0x54, 0x49, 0x4f, + 0x4e, 0x10, 0xa8, 0x02, 0x12, 0x0f, 0x0a, 0x0a, 0x41, 0x53, 0x53, 0x49, 0x47, 0x4e, 0x4d, 0x45, + 0x4e, 0x54, 0x10, 0xa9, 0x02, 0x12, 0x0f, 0x0a, 0x0a, 0x41, 0x53, 0x59, 0x4d, 0x4d, 0x45, 0x54, + 0x52, 0x49, 0x43, 0x10, 0xaa, 0x02, 0x12, 0x07, 0x0a, 0x02, 0x41, 0x54, 0x10, 0xab, 0x02, 0x12, + 0x0b, 0x0a, 0x06, 0x41, 0x54, 0x54, 0x41, 0x43, 0x48, 0x10, 0xac, 0x02, 0x12, 0x0e, 0x0a, 0x09, + 0x41, 0x54, 0x54, 0x52, 0x49, 0x42, 0x55, 0x54, 0x45, 0x10, 0xad, 0x02, 0x12, 0x12, 0x0a, 0x0d, + 0x41, 0x55, 0x54, 0x48, 0x4f, 0x52, 0x49, 0x5a, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0xae, 0x02, + 0x12, 0x0d, 0x0a, 0x08, 0x42, 0x41, 0x43, 0x4b, 0x57, 0x41, 0x52, 0x44, 0x10, 0xaf, 0x02, 0x12, + 0x0b, 0x0a, 0x06, 0x42, 0x45, 0x46, 0x4f, 0x52, 0x45, 0x10, 0xb0, 0x02, 0x12, 0x0c, 0x0a, 0x07, + 0x42, 0x45, 0x47, 0x49, 0x4e, 0x5f, 0x50, 0x10, 0xb1, 0x02, 0x12, 0x0c, 0x0a, 0x07, 0x42, 0x45, + 0x54, 0x57, 0x45, 0x45, 0x4e, 0x10, 0xb2, 0x02, 0x12, 0x0b, 0x0a, 0x06, 0x42, 0x49, 0x47, 0x49, + 0x4e, 0x54, 0x10, 0xb3, 0x02, 0x12, 0x0b, 0x0a, 0x06, 0x42, 0x49, 0x4e, 0x41, 0x52, 0x59, 0x10, + 0xb4, 0x02, 0x12, 0x08, 0x0a, 0x03, 0x42, 0x49, 0x54, 0x10, 0xb5, 0x02, 0x12, 0x0e, 0x0a, 0x09, + 0x42, 0x4f, 0x4f, 0x4c, 0x45, 0x41, 0x4e, 0x5f, 0x50, 0x10, 0xb6, 0x02, 0x12, 0x09, 0x0a, 0x04, + 0x42, 0x4f, 0x54, 0x48, 0x10, 0xb7, 0x02, 0x12, 0x07, 0x0a, 0x02, 0x42, 0x59, 0x10, 0xb8, 0x02, + 0x12, 0x0a, 0x0a, 0x05, 0x43, 0x41, 0x43, 0x48, 0x45, 0x10, 0xb9, 0x02, 0x12, 0x09, 0x0a, 0x04, + 0x43, 0x41, 0x4c, 0x4c, 0x10, 0xba, 0x02, 0x12, 0x0b, 0x0a, 0x06, 0x43, 0x41, 0x4c, 0x4c, 0x45, + 0x44, 0x10, 0xbb, 0x02, 0x12, 0x0c, 0x0a, 0x07, 0x43, 0x41, 0x53, 0x43, 0x41, 0x44, 0x45, 0x10, + 0xbc, 0x02, 0x12, 0x0d, 0x0a, 0x08, 0x43, 0x41, 0x53, 0x43, 0x41, 0x44, 0x45, 0x44, 0x10, 0xbd, + 0x02, 0x12, 0x09, 0x0a, 0x04, 0x43, 0x41, 0x53, 0x45, 0x10, 0xbe, 0x02, 0x12, 0x09, 0x0a, 0x04, + 0x43, 0x41, 0x53, 0x54, 0x10, 0xbf, 0x02, 0x12, 0x0e, 0x0a, 0x09, 0x43, 0x41, 0x54, 0x41, 0x4c, + 0x4f, 0x47, 0x5f, 0x50, 0x10, 0xc0, 0x02, 0x12, 0x0a, 0x0a, 0x05, 0x43, 0x48, 0x41, 0x49, 0x4e, + 0x10, 0xc1, 0x02, 0x12, 0x0b, 0x0a, 0x06, 0x43, 0x48, 0x41, 0x52, 0x5f, 0x50, 0x10, 0xc2, 0x02, + 0x12, 0x0e, 0x0a, 0x09, 0x43, 0x48, 0x41, 0x52, 0x41, 0x43, 0x54, 0x45, 0x52, 0x10, 0xc3, 0x02, + 0x12, 0x14, 0x0a, 0x0f, 0x43, 0x48, 0x41, 0x52, 0x41, 0x43, 0x54, 0x45, 0x52, 0x49, 0x53, 0x54, + 0x49, 0x43, 0x53, 0x10, 0xc4, 0x02, 0x12, 0x0a, 0x0a, 0x05, 0x43, 0x48, 0x45, 0x43, 0x4b, 0x10, + 0xc5, 0x02, 0x12, 0x0f, 0x0a, 0x0a, 0x43, 0x48, 0x45, 0x43, 0x4b, 0x50, 0x4f, 0x49, 0x4e, 0x54, + 0x10, 0xc6, 0x02, 0x12, 0x0a, 0x0a, 0x05, 0x43, 0x4c, 0x41, 0x53, 0x53, 0x10, 0xc7, 0x02, 0x12, + 0x0a, 0x0a, 0x05, 0x43, 0x4c, 0x4f, 0x53, 0x45, 0x10, 0xc8, 0x02, 0x12, 0x0c, 0x0a, 0x07, 0x43, + 0x4c, 0x55, 0x53, 0x54, 0x45, 0x52, 0x10, 0xc9, 0x02, 0x12, 0x0d, 0x0a, 0x08, 0x43, 0x4f, 0x41, + 0x4c, 0x45, 0x53, 0x43, 0x45, 0x10, 0xca, 0x02, 0x12, 0x0c, 0x0a, 0x07, 0x43, 0x4f, 0x4c, 0x4c, + 0x41, 0x54, 0x45, 0x10, 0xcb, 0x02, 0x12, 0x0e, 0x0a, 0x09, 0x43, 0x4f, 0x4c, 0x4c, 0x41, 0x54, + 0x49, 0x4f, 0x4e, 0x10, 0xcc, 0x02, 0x12, 0x0b, 0x0a, 0x06, 0x43, 0x4f, 0x4c, 0x55, 0x4d, 0x4e, + 0x10, 0xcd, 0x02, 0x12, 0x0c, 0x0a, 0x07, 0x43, 0x4f, 0x4c, 0x55, 0x4d, 0x4e, 0x53, 0x10, 0xce, + 0x02, 0x12, 0x0c, 0x0a, 0x07, 0x43, 0x4f, 0x4d, 0x4d, 0x45, 0x4e, 0x54, 0x10, 0xcf, 0x02, 0x12, + 0x0d, 0x0a, 0x08, 0x43, 0x4f, 0x4d, 0x4d, 0x45, 0x4e, 0x54, 0x53, 0x10, 0xd0, 0x02, 0x12, 0x0b, + 0x0a, 0x06, 0x43, 0x4f, 0x4d, 0x4d, 0x49, 0x54, 0x10, 0xd1, 0x02, 0x12, 0x0e, 0x0a, 0x09, 0x43, + 0x4f, 0x4d, 0x4d, 0x49, 0x54, 0x54, 0x45, 0x44, 0x10, 0xd2, 0x02, 0x12, 0x11, 0x0a, 0x0c, 0x43, + 0x4f, 0x4e, 0x43, 0x55, 0x52, 0x52, 0x45, 0x4e, 0x54, 0x4c, 0x59, 0x10, 0xd3, 0x02, 0x12, 0x12, + 0x0a, 0x0d, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x55, 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x10, + 0xd4, 0x02, 0x12, 0x0d, 0x0a, 0x08, 0x43, 0x4f, 0x4e, 0x46, 0x4c, 0x49, 0x43, 0x54, 0x10, 0xd5, + 0x02, 0x12, 0x0f, 0x0a, 0x0a, 0x43, 0x4f, 0x4e, 0x4e, 0x45, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x10, + 0xd6, 0x02, 0x12, 0x0f, 0x0a, 0x0a, 0x43, 0x4f, 0x4e, 0x53, 0x54, 0x52, 0x41, 0x49, 0x4e, 0x54, + 0x10, 0xd7, 0x02, 0x12, 0x10, 0x0a, 0x0b, 0x43, 0x4f, 0x4e, 0x53, 0x54, 0x52, 0x41, 0x49, 0x4e, + 0x54, 0x53, 0x10, 0xd8, 0x02, 0x12, 0x0e, 0x0a, 0x09, 0x43, 0x4f, 0x4e, 0x54, 0x45, 0x4e, 0x54, + 0x5f, 0x50, 0x10, 0xd9, 0x02, 0x12, 0x0f, 0x0a, 0x0a, 0x43, 0x4f, 0x4e, 0x54, 0x49, 0x4e, 0x55, + 0x45, 0x5f, 0x50, 0x10, 0xda, 0x02, 0x12, 0x11, 0x0a, 0x0c, 0x43, 0x4f, 0x4e, 0x56, 0x45, 0x52, + 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x50, 0x10, 0xdb, 0x02, 0x12, 0x09, 0x0a, 0x04, 0x43, 0x4f, 0x50, + 0x59, 0x10, 0xdc, 0x02, 0x12, 0x09, 0x0a, 0x04, 0x43, 0x4f, 0x53, 0x54, 0x10, 0xdd, 0x02, 0x12, + 0x0b, 0x0a, 0x06, 0x43, 0x52, 0x45, 0x41, 0x54, 0x45, 0x10, 0xde, 0x02, 0x12, 0x0a, 0x0a, 0x05, + 0x43, 0x52, 0x4f, 0x53, 0x53, 0x10, 0xdf, 0x02, 0x12, 0x08, 0x0a, 0x03, 0x43, 0x53, 0x56, 0x10, + 0xe0, 0x02, 0x12, 0x09, 0x0a, 0x04, 0x43, 0x55, 0x42, 0x45, 0x10, 0xe1, 0x02, 0x12, 0x0e, 0x0a, + 0x09, 0x43, 0x55, 0x52, 0x52, 0x45, 0x4e, 0x54, 0x5f, 0x50, 0x10, 0xe2, 0x02, 0x12, 0x14, 0x0a, + 0x0f, 0x43, 0x55, 0x52, 0x52, 0x45, 0x4e, 0x54, 0x5f, 0x43, 0x41, 0x54, 0x41, 0x4c, 0x4f, 0x47, + 0x10, 0xe3, 0x02, 0x12, 0x11, 0x0a, 0x0c, 0x43, 0x55, 0x52, 0x52, 0x45, 0x4e, 0x54, 0x5f, 0x44, + 0x41, 0x54, 0x45, 0x10, 0xe4, 0x02, 0x12, 0x11, 0x0a, 0x0c, 0x43, 0x55, 0x52, 0x52, 0x45, 0x4e, + 0x54, 0x5f, 0x52, 0x4f, 0x4c, 0x45, 0x10, 0xe5, 0x02, 0x12, 0x13, 0x0a, 0x0e, 0x43, 0x55, 0x52, + 0x52, 0x45, 0x4e, 0x54, 0x5f, 0x53, 0x43, 0x48, 0x45, 0x4d, 0x41, 0x10, 0xe6, 0x02, 0x12, 0x11, + 0x0a, 0x0c, 0x43, 0x55, 0x52, 0x52, 0x45, 0x4e, 0x54, 0x5f, 0x54, 0x49, 0x4d, 0x45, 0x10, 0xe7, + 0x02, 0x12, 0x16, 0x0a, 0x11, 0x43, 0x55, 0x52, 0x52, 0x45, 0x4e, 0x54, 0x5f, 0x54, 0x49, 0x4d, + 0x45, 0x53, 0x54, 0x41, 0x4d, 0x50, 0x10, 0xe8, 0x02, 0x12, 0x11, 0x0a, 0x0c, 0x43, 0x55, 0x52, + 0x52, 0x45, 0x4e, 0x54, 0x5f, 0x55, 0x53, 0x45, 0x52, 0x10, 0xe9, 0x02, 0x12, 0x0b, 0x0a, 0x06, + 0x43, 0x55, 0x52, 0x53, 0x4f, 0x52, 0x10, 0xea, 0x02, 0x12, 0x0a, 0x0a, 0x05, 0x43, 0x59, 0x43, + 0x4c, 0x45, 0x10, 0xeb, 0x02, 0x12, 0x0b, 0x0a, 0x06, 0x44, 0x41, 0x54, 0x41, 0x5f, 0x50, 0x10, + 0xec, 0x02, 0x12, 0x0d, 0x0a, 0x08, 0x44, 0x41, 0x54, 0x41, 0x42, 0x41, 0x53, 0x45, 0x10, 0xed, + 0x02, 0x12, 0x0a, 0x0a, 0x05, 0x44, 0x41, 0x59, 0x5f, 0x50, 0x10, 0xee, 0x02, 0x12, 0x0f, 0x0a, + 0x0a, 0x44, 0x45, 0x41, 0x4c, 0x4c, 0x4f, 0x43, 0x41, 0x54, 0x45, 0x10, 0xef, 0x02, 0x12, 0x08, + 0x0a, 0x03, 0x44, 0x45, 0x43, 0x10, 0xf0, 0x02, 0x12, 0x0e, 0x0a, 0x09, 0x44, 0x45, 0x43, 0x49, + 0x4d, 0x41, 0x4c, 0x5f, 0x50, 0x10, 0xf1, 0x02, 0x12, 0x0c, 0x0a, 0x07, 0x44, 0x45, 0x43, 0x4c, + 0x41, 0x52, 0x45, 0x10, 0xf2, 0x02, 0x12, 0x0c, 0x0a, 0x07, 0x44, 0x45, 0x46, 0x41, 0x55, 0x4c, + 0x54, 0x10, 0xf3, 0x02, 0x12, 0x0d, 0x0a, 0x08, 0x44, 0x45, 0x46, 0x41, 0x55, 0x4c, 0x54, 0x53, + 0x10, 0xf4, 0x02, 0x12, 0x0f, 0x0a, 0x0a, 0x44, 0x45, 0x46, 0x45, 0x52, 0x52, 0x41, 0x42, 0x4c, + 0x45, 0x10, 0xf5, 0x02, 0x12, 0x0d, 0x0a, 0x08, 0x44, 0x45, 0x46, 0x45, 0x52, 0x52, 0x45, 0x44, + 0x10, 0xf6, 0x02, 0x12, 0x0c, 0x0a, 0x07, 0x44, 0x45, 0x46, 0x49, 0x4e, 0x45, 0x52, 0x10, 0xf7, + 0x02, 0x12, 0x0d, 0x0a, 0x08, 0x44, 0x45, 0x4c, 0x45, 0x54, 0x45, 0x5f, 0x50, 0x10, 0xf8, 0x02, + 0x12, 0x0e, 0x0a, 0x09, 0x44, 0x45, 0x4c, 0x49, 0x4d, 0x49, 0x54, 0x45, 0x52, 0x10, 0xf9, 0x02, + 0x12, 0x0f, 0x0a, 0x0a, 0x44, 0x45, 0x4c, 0x49, 0x4d, 0x49, 0x54, 0x45, 0x52, 0x53, 0x10, 0xfa, + 0x02, 0x12, 0x0c, 0x0a, 0x07, 0x44, 0x45, 0x50, 0x45, 0x4e, 0x44, 0x53, 0x10, 0xfb, 0x02, 0x12, + 0x09, 0x0a, 0x04, 0x44, 0x45, 0x53, 0x43, 0x10, 0xfc, 0x02, 0x12, 0x0b, 0x0a, 0x06, 0x44, 0x45, + 0x54, 0x41, 0x43, 0x48, 0x10, 0xfd, 0x02, 0x12, 0x0f, 0x0a, 0x0a, 0x44, 0x49, 0x43, 0x54, 0x49, + 0x4f, 0x4e, 0x41, 0x52, 0x59, 0x10, 0xfe, 0x02, 0x12, 0x0e, 0x0a, 0x09, 0x44, 0x49, 0x53, 0x41, + 0x42, 0x4c, 0x45, 0x5f, 0x50, 0x10, 0xff, 0x02, 0x12, 0x0c, 0x0a, 0x07, 0x44, 0x49, 0x53, 0x43, + 0x41, 0x52, 0x44, 0x10, 0x80, 0x03, 0x12, 0x0d, 0x0a, 0x08, 0x44, 0x49, 0x53, 0x54, 0x49, 0x4e, + 0x43, 0x54, 0x10, 0x81, 0x03, 0x12, 0x07, 0x0a, 0x02, 0x44, 0x4f, 0x10, 0x82, 0x03, 0x12, 0x0f, + 0x0a, 0x0a, 0x44, 0x4f, 0x43, 0x55, 0x4d, 0x45, 0x4e, 0x54, 0x5f, 0x50, 0x10, 0x83, 0x03, 0x12, + 0x0d, 0x0a, 0x08, 0x44, 0x4f, 0x4d, 0x41, 0x49, 0x4e, 0x5f, 0x50, 0x10, 0x84, 0x03, 0x12, 0x0d, + 0x0a, 0x08, 0x44, 0x4f, 0x55, 0x42, 0x4c, 0x45, 0x5f, 0x50, 0x10, 0x85, 0x03, 0x12, 0x09, 0x0a, + 0x04, 0x44, 0x52, 0x4f, 0x50, 0x10, 0x86, 0x03, 0x12, 0x09, 0x0a, 0x04, 0x45, 0x41, 0x43, 0x48, + 0x10, 0x87, 0x03, 0x12, 0x09, 0x0a, 0x04, 0x45, 0x4c, 0x53, 0x45, 0x10, 0x88, 0x03, 0x12, 0x0d, + 0x0a, 0x08, 0x45, 0x4e, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x50, 0x10, 0x89, 0x03, 0x12, 0x0d, 0x0a, + 0x08, 0x45, 0x4e, 0x43, 0x4f, 0x44, 0x49, 0x4e, 0x47, 0x10, 0x8a, 0x03, 0x12, 0x0e, 0x0a, 0x09, + 0x45, 0x4e, 0x43, 0x52, 0x59, 0x50, 0x54, 0x45, 0x44, 0x10, 0x8b, 0x03, 0x12, 0x0a, 0x0a, 0x05, + 0x45, 0x4e, 0x44, 0x5f, 0x50, 0x10, 0x8c, 0x03, 0x12, 0x0b, 0x0a, 0x06, 0x45, 0x4e, 0x55, 0x4d, + 0x5f, 0x50, 0x10, 0x8d, 0x03, 0x12, 0x0b, 0x0a, 0x06, 0x45, 0x53, 0x43, 0x41, 0x50, 0x45, 0x10, + 0x8e, 0x03, 0x12, 0x0a, 0x0a, 0x05, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x10, 0x8f, 0x03, 0x12, 0x0b, + 0x0a, 0x06, 0x45, 0x58, 0x43, 0x45, 0x50, 0x54, 0x10, 0x90, 0x03, 0x12, 0x0c, 0x0a, 0x07, 0x45, + 0x58, 0x43, 0x4c, 0x55, 0x44, 0x45, 0x10, 0x91, 0x03, 0x12, 0x0e, 0x0a, 0x09, 0x45, 0x58, 0x43, + 0x4c, 0x55, 0x44, 0x49, 0x4e, 0x47, 0x10, 0x92, 0x03, 0x12, 0x0e, 0x0a, 0x09, 0x45, 0x58, 0x43, + 0x4c, 0x55, 0x53, 0x49, 0x56, 0x45, 0x10, 0x93, 0x03, 0x12, 0x0c, 0x0a, 0x07, 0x45, 0x58, 0x45, + 0x43, 0x55, 0x54, 0x45, 0x10, 0x94, 0x03, 0x12, 0x0b, 0x0a, 0x06, 0x45, 0x58, 0x49, 0x53, 0x54, + 0x53, 0x10, 0x95, 0x03, 0x12, 0x0c, 0x0a, 0x07, 0x45, 0x58, 0x50, 0x4c, 0x41, 0x49, 0x4e, 0x10, + 0x96, 0x03, 0x12, 0x0f, 0x0a, 0x0a, 0x45, 0x58, 0x50, 0x52, 0x45, 0x53, 0x53, 0x49, 0x4f, 0x4e, + 0x10, 0x97, 0x03, 0x12, 0x0e, 0x0a, 0x09, 0x45, 0x58, 0x54, 0x45, 0x4e, 0x53, 0x49, 0x4f, 0x4e, + 0x10, 0x98, 0x03, 0x12, 0x0d, 0x0a, 0x08, 0x45, 0x58, 0x54, 0x45, 0x52, 0x4e, 0x41, 0x4c, 0x10, + 0x99, 0x03, 0x12, 0x0c, 0x0a, 0x07, 0x45, 0x58, 0x54, 0x52, 0x41, 0x43, 0x54, 0x10, 0x9a, 0x03, + 0x12, 0x0c, 0x0a, 0x07, 0x46, 0x41, 0x4c, 0x53, 0x45, 0x5f, 0x50, 0x10, 0x9b, 0x03, 0x12, 0x0b, + 0x0a, 0x06, 0x46, 0x41, 0x4d, 0x49, 0x4c, 0x59, 0x10, 0x9c, 0x03, 0x12, 0x0a, 0x0a, 0x05, 0x46, + 0x45, 0x54, 0x43, 0x48, 0x10, 0x9d, 0x03, 0x12, 0x0b, 0x0a, 0x06, 0x46, 0x49, 0x4c, 0x54, 0x45, + 0x52, 0x10, 0x9e, 0x03, 0x12, 0x0c, 0x0a, 0x07, 0x46, 0x49, 0x52, 0x53, 0x54, 0x5f, 0x50, 0x10, + 0x9f, 0x03, 0x12, 0x0c, 0x0a, 0x07, 0x46, 0x4c, 0x4f, 0x41, 0x54, 0x5f, 0x50, 0x10, 0xa0, 0x03, + 0x12, 0x0e, 0x0a, 0x09, 0x46, 0x4f, 0x4c, 0x4c, 0x4f, 0x57, 0x49, 0x4e, 0x47, 0x10, 0xa1, 0x03, + 0x12, 0x08, 0x0a, 0x03, 0x46, 0x4f, 0x52, 0x10, 0xa2, 0x03, 0x12, 0x0a, 0x0a, 0x05, 0x46, 0x4f, + 0x52, 0x43, 0x45, 0x10, 0xa3, 0x03, 0x12, 0x0c, 0x0a, 0x07, 0x46, 0x4f, 0x52, 0x45, 0x49, 0x47, + 0x4e, 0x10, 0xa4, 0x03, 0x12, 0x0c, 0x0a, 0x07, 0x46, 0x4f, 0x52, 0x57, 0x41, 0x52, 0x44, 0x10, + 0xa5, 0x03, 0x12, 0x0b, 0x0a, 0x06, 0x46, 0x52, 0x45, 0x45, 0x5a, 0x45, 0x10, 0xa6, 0x03, 0x12, + 0x09, 0x0a, 0x04, 0x46, 0x52, 0x4f, 0x4d, 0x10, 0xa7, 0x03, 0x12, 0x09, 0x0a, 0x04, 0x46, 0x55, + 0x4c, 0x4c, 0x10, 0xa8, 0x03, 0x12, 0x0d, 0x0a, 0x08, 0x46, 0x55, 0x4e, 0x43, 0x54, 0x49, 0x4f, + 0x4e, 0x10, 0xa9, 0x03, 0x12, 0x0e, 0x0a, 0x09, 0x46, 0x55, 0x4e, 0x43, 0x54, 0x49, 0x4f, 0x4e, + 0x53, 0x10, 0xaa, 0x03, 0x12, 0x0e, 0x0a, 0x09, 0x47, 0x45, 0x4e, 0x45, 0x52, 0x41, 0x54, 0x45, + 0x44, 0x10, 0xab, 0x03, 0x12, 0x0b, 0x0a, 0x06, 0x47, 0x4c, 0x4f, 0x42, 0x41, 0x4c, 0x10, 0xac, + 0x03, 0x12, 0x0a, 0x0a, 0x05, 0x47, 0x52, 0x41, 0x4e, 0x54, 0x10, 0xad, 0x03, 0x12, 0x0c, 0x0a, + 0x07, 0x47, 0x52, 0x41, 0x4e, 0x54, 0x45, 0x44, 0x10, 0xae, 0x03, 0x12, 0x0d, 0x0a, 0x08, 0x47, + 0x52, 0x45, 0x41, 0x54, 0x45, 0x53, 0x54, 0x10, 0xaf, 0x03, 0x12, 0x0c, 0x0a, 0x07, 0x47, 0x52, + 0x4f, 0x55, 0x50, 0x5f, 0x50, 0x10, 0xb0, 0x03, 0x12, 0x0d, 0x0a, 0x08, 0x47, 0x52, 0x4f, 0x55, + 0x50, 0x49, 0x4e, 0x47, 0x10, 0xb1, 0x03, 0x12, 0x0b, 0x0a, 0x06, 0x47, 0x52, 0x4f, 0x55, 0x50, + 0x53, 0x10, 0xb2, 0x03, 0x12, 0x0c, 0x0a, 0x07, 0x48, 0x41, 0x4e, 0x44, 0x4c, 0x45, 0x52, 0x10, + 0xb3, 0x03, 0x12, 0x0b, 0x0a, 0x06, 0x48, 0x41, 0x56, 0x49, 0x4e, 0x47, 0x10, 0xb4, 0x03, 0x12, + 0x0d, 0x0a, 0x08, 0x48, 0x45, 0x41, 0x44, 0x45, 0x52, 0x5f, 0x50, 0x10, 0xb5, 0x03, 0x12, 0x09, + 0x0a, 0x04, 0x48, 0x4f, 0x4c, 0x44, 0x10, 0xb6, 0x03, 0x12, 0x0b, 0x0a, 0x06, 0x48, 0x4f, 0x55, + 0x52, 0x5f, 0x50, 0x10, 0xb7, 0x03, 0x12, 0x0f, 0x0a, 0x0a, 0x49, 0x44, 0x45, 0x4e, 0x54, 0x49, + 0x54, 0x59, 0x5f, 0x50, 0x10, 0xb8, 0x03, 0x12, 0x09, 0x0a, 0x04, 0x49, 0x46, 0x5f, 0x50, 0x10, + 0xb9, 0x03, 0x12, 0x0a, 0x0a, 0x05, 0x49, 0x4c, 0x49, 0x4b, 0x45, 0x10, 0xba, 0x03, 0x12, 0x0e, + 0x0a, 0x09, 0x49, 0x4d, 0x4d, 0x45, 0x44, 0x49, 0x41, 0x54, 0x45, 0x10, 0xbb, 0x03, 0x12, 0x0e, + 0x0a, 0x09, 0x49, 0x4d, 0x4d, 0x55, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x10, 0xbc, 0x03, 0x12, 0x0f, + 0x0a, 0x0a, 0x49, 0x4d, 0x50, 0x4c, 0x49, 0x43, 0x49, 0x54, 0x5f, 0x50, 0x10, 0xbd, 0x03, 0x12, + 0x0d, 0x0a, 0x08, 0x49, 0x4d, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x50, 0x10, 0xbe, 0x03, 0x12, 0x09, + 0x0a, 0x04, 0x49, 0x4e, 0x5f, 0x50, 0x10, 0xbf, 0x03, 0x12, 0x0c, 0x0a, 0x07, 0x49, 0x4e, 0x43, + 0x4c, 0x55, 0x44, 0x45, 0x10, 0xc0, 0x03, 0x12, 0x0e, 0x0a, 0x09, 0x49, 0x4e, 0x43, 0x4c, 0x55, + 0x44, 0x49, 0x4e, 0x47, 0x10, 0xc1, 0x03, 0x12, 0x0e, 0x0a, 0x09, 0x49, 0x4e, 0x43, 0x52, 0x45, + 0x4d, 0x45, 0x4e, 0x54, 0x10, 0xc2, 0x03, 0x12, 0x0a, 0x0a, 0x05, 0x49, 0x4e, 0x44, 0x45, 0x58, + 0x10, 0xc3, 0x03, 0x12, 0x0c, 0x0a, 0x07, 0x49, 0x4e, 0x44, 0x45, 0x58, 0x45, 0x53, 0x10, 0xc4, + 0x03, 0x12, 0x0c, 0x0a, 0x07, 0x49, 0x4e, 0x48, 0x45, 0x52, 0x49, 0x54, 0x10, 0xc5, 0x03, 0x12, + 0x0d, 0x0a, 0x08, 0x49, 0x4e, 0x48, 0x45, 0x52, 0x49, 0x54, 0x53, 0x10, 0xc6, 0x03, 0x12, 0x0e, + 0x0a, 0x09, 0x49, 0x4e, 0x49, 0x54, 0x49, 0x41, 0x4c, 0x4c, 0x59, 0x10, 0xc7, 0x03, 0x12, 0x0d, + 0x0a, 0x08, 0x49, 0x4e, 0x4c, 0x49, 0x4e, 0x45, 0x5f, 0x50, 0x10, 0xc8, 0x03, 0x12, 0x0c, 0x0a, + 0x07, 0x49, 0x4e, 0x4e, 0x45, 0x52, 0x5f, 0x50, 0x10, 0xc9, 0x03, 0x12, 0x0a, 0x0a, 0x05, 0x49, + 0x4e, 0x4f, 0x55, 0x54, 0x10, 0xca, 0x03, 0x12, 0x0c, 0x0a, 0x07, 0x49, 0x4e, 0x50, 0x55, 0x54, + 0x5f, 0x50, 0x10, 0xcb, 0x03, 0x12, 0x10, 0x0a, 0x0b, 0x49, 0x4e, 0x53, 0x45, 0x4e, 0x53, 0x49, + 0x54, 0x49, 0x56, 0x45, 0x10, 0xcc, 0x03, 0x12, 0x0b, 0x0a, 0x06, 0x49, 0x4e, 0x53, 0x45, 0x52, + 0x54, 0x10, 0xcd, 0x03, 0x12, 0x0c, 0x0a, 0x07, 0x49, 0x4e, 0x53, 0x54, 0x45, 0x41, 0x44, 0x10, + 0xce, 0x03, 0x12, 0x0a, 0x0a, 0x05, 0x49, 0x4e, 0x54, 0x5f, 0x50, 0x10, 0xcf, 0x03, 0x12, 0x0c, + 0x0a, 0x07, 0x49, 0x4e, 0x54, 0x45, 0x47, 0x45, 0x52, 0x10, 0xd0, 0x03, 0x12, 0x0e, 0x0a, 0x09, + 0x49, 0x4e, 0x54, 0x45, 0x52, 0x53, 0x45, 0x43, 0x54, 0x10, 0xd1, 0x03, 0x12, 0x0d, 0x0a, 0x08, + 0x49, 0x4e, 0x54, 0x45, 0x52, 0x56, 0x41, 0x4c, 0x10, 0xd2, 0x03, 0x12, 0x09, 0x0a, 0x04, 0x49, + 0x4e, 0x54, 0x4f, 0x10, 0xd3, 0x03, 0x12, 0x0c, 0x0a, 0x07, 0x49, 0x4e, 0x56, 0x4f, 0x4b, 0x45, + 0x52, 0x10, 0xd4, 0x03, 0x12, 0x07, 0x0a, 0x02, 0x49, 0x53, 0x10, 0xd5, 0x03, 0x12, 0x0b, 0x0a, + 0x06, 0x49, 0x53, 0x4e, 0x55, 0x4c, 0x4c, 0x10, 0xd6, 0x03, 0x12, 0x0e, 0x0a, 0x09, 0x49, 0x53, + 0x4f, 0x4c, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0xd7, 0x03, 0x12, 0x09, 0x0a, 0x04, 0x4a, 0x4f, + 0x49, 0x4e, 0x10, 0xd8, 0x03, 0x12, 0x08, 0x0a, 0x03, 0x4b, 0x45, 0x59, 0x10, 0xd9, 0x03, 0x12, + 0x0a, 0x0a, 0x05, 0x4c, 0x41, 0x42, 0x45, 0x4c, 0x10, 0xda, 0x03, 0x12, 0x0d, 0x0a, 0x08, 0x4c, + 0x41, 0x4e, 0x47, 0x55, 0x41, 0x47, 0x45, 0x10, 0xdb, 0x03, 0x12, 0x0c, 0x0a, 0x07, 0x4c, 0x41, + 0x52, 0x47, 0x45, 0x5f, 0x50, 0x10, 0xdc, 0x03, 0x12, 0x0b, 0x0a, 0x06, 0x4c, 0x41, 0x53, 0x54, + 0x5f, 0x50, 0x10, 0xdd, 0x03, 0x12, 0x0e, 0x0a, 0x09, 0x4c, 0x41, 0x54, 0x45, 0x52, 0x41, 0x4c, + 0x5f, 0x50, 0x10, 0xde, 0x03, 0x12, 0x0c, 0x0a, 0x07, 0x4c, 0x45, 0x41, 0x44, 0x49, 0x4e, 0x47, + 0x10, 0xdf, 0x03, 0x12, 0x0e, 0x0a, 0x09, 0x4c, 0x45, 0x41, 0x4b, 0x50, 0x52, 0x4f, 0x4f, 0x46, + 0x10, 0xe0, 0x03, 0x12, 0x0a, 0x0a, 0x05, 0x4c, 0x45, 0x41, 0x53, 0x54, 0x10, 0xe1, 0x03, 0x12, + 0x09, 0x0a, 0x04, 0x4c, 0x45, 0x46, 0x54, 0x10, 0xe2, 0x03, 0x12, 0x0a, 0x0a, 0x05, 0x4c, 0x45, + 0x56, 0x45, 0x4c, 0x10, 0xe3, 0x03, 0x12, 0x09, 0x0a, 0x04, 0x4c, 0x49, 0x4b, 0x45, 0x10, 0xe4, + 0x03, 0x12, 0x0a, 0x0a, 0x05, 0x4c, 0x49, 0x4d, 0x49, 0x54, 0x10, 0xe5, 0x03, 0x12, 0x0b, 0x0a, + 0x06, 0x4c, 0x49, 0x53, 0x54, 0x45, 0x4e, 0x10, 0xe6, 0x03, 0x12, 0x09, 0x0a, 0x04, 0x4c, 0x4f, + 0x41, 0x44, 0x10, 0xe7, 0x03, 0x12, 0x0a, 0x0a, 0x05, 0x4c, 0x4f, 0x43, 0x41, 0x4c, 0x10, 0xe8, + 0x03, 0x12, 0x0e, 0x0a, 0x09, 0x4c, 0x4f, 0x43, 0x41, 0x4c, 0x54, 0x49, 0x4d, 0x45, 0x10, 0xe9, + 0x03, 0x12, 0x13, 0x0a, 0x0e, 0x4c, 0x4f, 0x43, 0x41, 0x4c, 0x54, 0x49, 0x4d, 0x45, 0x53, 0x54, + 0x41, 0x4d, 0x50, 0x10, 0xea, 0x03, 0x12, 0x0d, 0x0a, 0x08, 0x4c, 0x4f, 0x43, 0x41, 0x54, 0x49, + 0x4f, 0x4e, 0x10, 0xeb, 0x03, 0x12, 0x0b, 0x0a, 0x06, 0x4c, 0x4f, 0x43, 0x4b, 0x5f, 0x50, 0x10, + 0xec, 0x03, 0x12, 0x0b, 0x0a, 0x06, 0x4c, 0x4f, 0x43, 0x4b, 0x45, 0x44, 0x10, 0xed, 0x03, 0x12, + 0x0b, 0x0a, 0x06, 0x4c, 0x4f, 0x47, 0x47, 0x45, 0x44, 0x10, 0xee, 0x03, 0x12, 0x0c, 0x0a, 0x07, + 0x4d, 0x41, 0x50, 0x50, 0x49, 0x4e, 0x47, 0x10, 0xef, 0x03, 0x12, 0x0a, 0x0a, 0x05, 0x4d, 0x41, + 0x54, 0x43, 0x48, 0x10, 0xf0, 0x03, 0x12, 0x11, 0x0a, 0x0c, 0x4d, 0x41, 0x54, 0x45, 0x52, 0x49, + 0x41, 0x4c, 0x49, 0x5a, 0x45, 0x44, 0x10, 0xf1, 0x03, 0x12, 0x0d, 0x0a, 0x08, 0x4d, 0x41, 0x58, + 0x56, 0x41, 0x4c, 0x55, 0x45, 0x10, 0xf2, 0x03, 0x12, 0x0b, 0x0a, 0x06, 0x4d, 0x45, 0x54, 0x48, + 0x4f, 0x44, 0x10, 0xf3, 0x03, 0x12, 0x0d, 0x0a, 0x08, 0x4d, 0x49, 0x4e, 0x55, 0x54, 0x45, 0x5f, + 0x50, 0x10, 0xf4, 0x03, 0x12, 0x0d, 0x0a, 0x08, 0x4d, 0x49, 0x4e, 0x56, 0x41, 0x4c, 0x55, 0x45, + 0x10, 0xf5, 0x03, 0x12, 0x09, 0x0a, 0x04, 0x4d, 0x4f, 0x44, 0x45, 0x10, 0xf6, 0x03, 0x12, 0x0c, + 0x0a, 0x07, 0x4d, 0x4f, 0x4e, 0x54, 0x48, 0x5f, 0x50, 0x10, 0xf7, 0x03, 0x12, 0x09, 0x0a, 0x04, + 0x4d, 0x4f, 0x56, 0x45, 0x10, 0xf8, 0x03, 0x12, 0x0b, 0x0a, 0x06, 0x4e, 0x41, 0x4d, 0x45, 0x5f, + 0x50, 0x10, 0xf9, 0x03, 0x12, 0x0a, 0x0a, 0x05, 0x4e, 0x41, 0x4d, 0x45, 0x53, 0x10, 0xfa, 0x03, + 0x12, 0x0d, 0x0a, 0x08, 0x4e, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x41, 0x4c, 0x10, 0xfb, 0x03, 0x12, + 0x0c, 0x0a, 0x07, 0x4e, 0x41, 0x54, 0x55, 0x52, 0x41, 0x4c, 0x10, 0xfc, 0x03, 0x12, 0x0a, 0x0a, + 0x05, 0x4e, 0x43, 0x48, 0x41, 0x52, 0x10, 0xfd, 0x03, 0x12, 0x08, 0x0a, 0x03, 0x4e, 0x45, 0x57, + 0x10, 0xfe, 0x03, 0x12, 0x09, 0x0a, 0x04, 0x4e, 0x45, 0x58, 0x54, 0x10, 0xff, 0x03, 0x12, 0x08, + 0x0a, 0x03, 0x4e, 0x46, 0x43, 0x10, 0x80, 0x04, 0x12, 0x08, 0x0a, 0x03, 0x4e, 0x46, 0x44, 0x10, + 0x81, 0x04, 0x12, 0x09, 0x0a, 0x04, 0x4e, 0x46, 0x4b, 0x43, 0x10, 0x82, 0x04, 0x12, 0x09, 0x0a, + 0x04, 0x4e, 0x46, 0x4b, 0x44, 0x10, 0x83, 0x04, 0x12, 0x07, 0x0a, 0x02, 0x4e, 0x4f, 0x10, 0x84, + 0x04, 0x12, 0x09, 0x0a, 0x04, 0x4e, 0x4f, 0x4e, 0x45, 0x10, 0x85, 0x04, 0x12, 0x0e, 0x0a, 0x09, + 0x4e, 0x4f, 0x52, 0x4d, 0x41, 0x4c, 0x49, 0x5a, 0x45, 0x10, 0x86, 0x04, 0x12, 0x0f, 0x0a, 0x0a, + 0x4e, 0x4f, 0x52, 0x4d, 0x41, 0x4c, 0x49, 0x5a, 0x45, 0x44, 0x10, 0x87, 0x04, 0x12, 0x08, 0x0a, + 0x03, 0x4e, 0x4f, 0x54, 0x10, 0x88, 0x04, 0x12, 0x0c, 0x0a, 0x07, 0x4e, 0x4f, 0x54, 0x48, 0x49, + 0x4e, 0x47, 0x10, 0x89, 0x04, 0x12, 0x0b, 0x0a, 0x06, 0x4e, 0x4f, 0x54, 0x49, 0x46, 0x59, 0x10, + 0x8a, 0x04, 0x12, 0x0c, 0x0a, 0x07, 0x4e, 0x4f, 0x54, 0x4e, 0x55, 0x4c, 0x4c, 0x10, 0x8b, 0x04, + 0x12, 0x0b, 0x0a, 0x06, 0x4e, 0x4f, 0x57, 0x41, 0x49, 0x54, 0x10, 0x8c, 0x04, 0x12, 0x0b, 0x0a, + 0x06, 0x4e, 0x55, 0x4c, 0x4c, 0x5f, 0x50, 0x10, 0x8d, 0x04, 0x12, 0x0b, 0x0a, 0x06, 0x4e, 0x55, + 0x4c, 0x4c, 0x49, 0x46, 0x10, 0x8e, 0x04, 0x12, 0x0c, 0x0a, 0x07, 0x4e, 0x55, 0x4c, 0x4c, 0x53, + 0x5f, 0x50, 0x10, 0x8f, 0x04, 0x12, 0x0c, 0x0a, 0x07, 0x4e, 0x55, 0x4d, 0x45, 0x52, 0x49, 0x43, + 0x10, 0x90, 0x04, 0x12, 0x0d, 0x0a, 0x08, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x50, 0x10, + 0x91, 0x04, 0x12, 0x07, 0x0a, 0x02, 0x4f, 0x46, 0x10, 0x92, 0x04, 0x12, 0x08, 0x0a, 0x03, 0x4f, + 0x46, 0x46, 0x10, 0x93, 0x04, 0x12, 0x0b, 0x0a, 0x06, 0x4f, 0x46, 0x46, 0x53, 0x45, 0x54, 0x10, + 0x94, 0x04, 0x12, 0x09, 0x0a, 0x04, 0x4f, 0x49, 0x44, 0x53, 0x10, 0x95, 0x04, 0x12, 0x08, 0x0a, + 0x03, 0x4f, 0x4c, 0x44, 0x10, 0x96, 0x04, 0x12, 0x07, 0x0a, 0x02, 0x4f, 0x4e, 0x10, 0x97, 0x04, + 0x12, 0x09, 0x0a, 0x04, 0x4f, 0x4e, 0x4c, 0x59, 0x10, 0x98, 0x04, 0x12, 0x0d, 0x0a, 0x08, 0x4f, + 0x50, 0x45, 0x52, 0x41, 0x54, 0x4f, 0x52, 0x10, 0x99, 0x04, 0x12, 0x0b, 0x0a, 0x06, 0x4f, 0x50, + 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x9a, 0x04, 0x12, 0x0c, 0x0a, 0x07, 0x4f, 0x50, 0x54, 0x49, 0x4f, + 0x4e, 0x53, 0x10, 0x9b, 0x04, 0x12, 0x07, 0x0a, 0x02, 0x4f, 0x52, 0x10, 0x9c, 0x04, 0x12, 0x0a, + 0x0a, 0x05, 0x4f, 0x52, 0x44, 0x45, 0x52, 0x10, 0x9d, 0x04, 0x12, 0x0f, 0x0a, 0x0a, 0x4f, 0x52, + 0x44, 0x49, 0x4e, 0x41, 0x4c, 0x49, 0x54, 0x59, 0x10, 0x9e, 0x04, 0x12, 0x0b, 0x0a, 0x06, 0x4f, + 0x54, 0x48, 0x45, 0x52, 0x53, 0x10, 0x9f, 0x04, 0x12, 0x0a, 0x0a, 0x05, 0x4f, 0x55, 0x54, 0x5f, + 0x50, 0x10, 0xa0, 0x04, 0x12, 0x0c, 0x0a, 0x07, 0x4f, 0x55, 0x54, 0x45, 0x52, 0x5f, 0x50, 0x10, + 0xa1, 0x04, 0x12, 0x09, 0x0a, 0x04, 0x4f, 0x56, 0x45, 0x52, 0x10, 0xa2, 0x04, 0x12, 0x0d, 0x0a, + 0x08, 0x4f, 0x56, 0x45, 0x52, 0x4c, 0x41, 0x50, 0x53, 0x10, 0xa3, 0x04, 0x12, 0x0c, 0x0a, 0x07, + 0x4f, 0x56, 0x45, 0x52, 0x4c, 0x41, 0x59, 0x10, 0xa4, 0x04, 0x12, 0x0f, 0x0a, 0x0a, 0x4f, 0x56, + 0x45, 0x52, 0x52, 0x49, 0x44, 0x49, 0x4e, 0x47, 0x10, 0xa5, 0x04, 0x12, 0x0a, 0x0a, 0x05, 0x4f, + 0x57, 0x4e, 0x45, 0x44, 0x10, 0xa6, 0x04, 0x12, 0x0a, 0x0a, 0x05, 0x4f, 0x57, 0x4e, 0x45, 0x52, + 0x10, 0xa7, 0x04, 0x12, 0x0d, 0x0a, 0x08, 0x50, 0x41, 0x52, 0x41, 0x4c, 0x4c, 0x45, 0x4c, 0x10, + 0xa8, 0x04, 0x12, 0x0b, 0x0a, 0x06, 0x50, 0x41, 0x52, 0x53, 0x45, 0x52, 0x10, 0xa9, 0x04, 0x12, + 0x0c, 0x0a, 0x07, 0x50, 0x41, 0x52, 0x54, 0x49, 0x41, 0x4c, 0x10, 0xaa, 0x04, 0x12, 0x0e, 0x0a, + 0x09, 0x50, 0x41, 0x52, 0x54, 0x49, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0xab, 0x04, 0x12, 0x0c, 0x0a, + 0x07, 0x50, 0x41, 0x53, 0x53, 0x49, 0x4e, 0x47, 0x10, 0xac, 0x04, 0x12, 0x0d, 0x0a, 0x08, 0x50, + 0x41, 0x53, 0x53, 0x57, 0x4f, 0x52, 0x44, 0x10, 0xad, 0x04, 0x12, 0x0c, 0x0a, 0x07, 0x50, 0x4c, + 0x41, 0x43, 0x49, 0x4e, 0x47, 0x10, 0xae, 0x04, 0x12, 0x0a, 0x0a, 0x05, 0x50, 0x4c, 0x41, 0x4e, + 0x53, 0x10, 0xaf, 0x04, 0x12, 0x0b, 0x0a, 0x06, 0x50, 0x4f, 0x4c, 0x49, 0x43, 0x59, 0x10, 0xb0, + 0x04, 0x12, 0x0d, 0x0a, 0x08, 0x50, 0x4f, 0x53, 0x49, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0xb1, 0x04, + 0x12, 0x0e, 0x0a, 0x09, 0x50, 0x52, 0x45, 0x43, 0x45, 0x44, 0x49, 0x4e, 0x47, 0x10, 0xb2, 0x04, + 0x12, 0x0e, 0x0a, 0x09, 0x50, 0x52, 0x45, 0x43, 0x49, 0x53, 0x49, 0x4f, 0x4e, 0x10, 0xb3, 0x04, + 0x12, 0x0d, 0x0a, 0x08, 0x50, 0x52, 0x45, 0x53, 0x45, 0x52, 0x56, 0x45, 0x10, 0xb4, 0x04, 0x12, + 0x0c, 0x0a, 0x07, 0x50, 0x52, 0x45, 0x50, 0x41, 0x52, 0x45, 0x10, 0xb5, 0x04, 0x12, 0x0d, 0x0a, + 0x08, 0x50, 0x52, 0x45, 0x50, 0x41, 0x52, 0x45, 0x44, 0x10, 0xb6, 0x04, 0x12, 0x0c, 0x0a, 0x07, + 0x50, 0x52, 0x49, 0x4d, 0x41, 0x52, 0x59, 0x10, 0xb7, 0x04, 0x12, 0x0a, 0x0a, 0x05, 0x50, 0x52, + 0x49, 0x4f, 0x52, 0x10, 0xb8, 0x04, 0x12, 0x0f, 0x0a, 0x0a, 0x50, 0x52, 0x49, 0x56, 0x49, 0x4c, + 0x45, 0x47, 0x45, 0x53, 0x10, 0xb9, 0x04, 0x12, 0x0f, 0x0a, 0x0a, 0x50, 0x52, 0x4f, 0x43, 0x45, + 0x44, 0x55, 0x52, 0x41, 0x4c, 0x10, 0xba, 0x04, 0x12, 0x0e, 0x0a, 0x09, 0x50, 0x52, 0x4f, 0x43, + 0x45, 0x44, 0x55, 0x52, 0x45, 0x10, 0xbb, 0x04, 0x12, 0x0f, 0x0a, 0x0a, 0x50, 0x52, 0x4f, 0x43, + 0x45, 0x44, 0x55, 0x52, 0x45, 0x53, 0x10, 0xbc, 0x04, 0x12, 0x0c, 0x0a, 0x07, 0x50, 0x52, 0x4f, + 0x47, 0x52, 0x41, 0x4d, 0x10, 0xbd, 0x04, 0x12, 0x10, 0x0a, 0x0b, 0x50, 0x55, 0x42, 0x4c, 0x49, + 0x43, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0xbe, 0x04, 0x12, 0x0a, 0x0a, 0x05, 0x51, 0x55, 0x4f, + 0x54, 0x45, 0x10, 0xbf, 0x04, 0x12, 0x0a, 0x0a, 0x05, 0x52, 0x41, 0x4e, 0x47, 0x45, 0x10, 0xc0, + 0x04, 0x12, 0x09, 0x0a, 0x04, 0x52, 0x45, 0x41, 0x44, 0x10, 0xc1, 0x04, 0x12, 0x09, 0x0a, 0x04, + 0x52, 0x45, 0x41, 0x4c, 0x10, 0xc2, 0x04, 0x12, 0x0d, 0x0a, 0x08, 0x52, 0x45, 0x41, 0x53, 0x53, + 0x49, 0x47, 0x4e, 0x10, 0xc3, 0x04, 0x12, 0x0c, 0x0a, 0x07, 0x52, 0x45, 0x43, 0x48, 0x45, 0x43, + 0x4b, 0x10, 0xc4, 0x04, 0x12, 0x0e, 0x0a, 0x09, 0x52, 0x45, 0x43, 0x55, 0x52, 0x53, 0x49, 0x56, + 0x45, 0x10, 0xc5, 0x04, 0x12, 0x08, 0x0a, 0x03, 0x52, 0x45, 0x46, 0x10, 0xc6, 0x04, 0x12, 0x0f, + 0x0a, 0x0a, 0x52, 0x45, 0x46, 0x45, 0x52, 0x45, 0x4e, 0x43, 0x45, 0x53, 0x10, 0xc7, 0x04, 0x12, + 0x10, 0x0a, 0x0b, 0x52, 0x45, 0x46, 0x45, 0x52, 0x45, 0x4e, 0x43, 0x49, 0x4e, 0x47, 0x10, 0xc8, + 0x04, 0x12, 0x0c, 0x0a, 0x07, 0x52, 0x45, 0x46, 0x52, 0x45, 0x53, 0x48, 0x10, 0xc9, 0x04, 0x12, + 0x0c, 0x0a, 0x07, 0x52, 0x45, 0x49, 0x4e, 0x44, 0x45, 0x58, 0x10, 0xca, 0x04, 0x12, 0x0f, 0x0a, + 0x0a, 0x52, 0x45, 0x4c, 0x41, 0x54, 0x49, 0x56, 0x45, 0x5f, 0x50, 0x10, 0xcb, 0x04, 0x12, 0x0c, + 0x0a, 0x07, 0x52, 0x45, 0x4c, 0x45, 0x41, 0x53, 0x45, 0x10, 0xcc, 0x04, 0x12, 0x0b, 0x0a, 0x06, + 0x52, 0x45, 0x4e, 0x41, 0x4d, 0x45, 0x10, 0xcd, 0x04, 0x12, 0x0f, 0x0a, 0x0a, 0x52, 0x45, 0x50, + 0x45, 0x41, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x10, 0xce, 0x04, 0x12, 0x0c, 0x0a, 0x07, 0x52, 0x45, + 0x50, 0x4c, 0x41, 0x43, 0x45, 0x10, 0xcf, 0x04, 0x12, 0x0c, 0x0a, 0x07, 0x52, 0x45, 0x50, 0x4c, + 0x49, 0x43, 0x41, 0x10, 0xd0, 0x04, 0x12, 0x0a, 0x0a, 0x05, 0x52, 0x45, 0x53, 0x45, 0x54, 0x10, + 0xd1, 0x04, 0x12, 0x0c, 0x0a, 0x07, 0x52, 0x45, 0x53, 0x54, 0x41, 0x52, 0x54, 0x10, 0xd2, 0x04, + 0x12, 0x0d, 0x0a, 0x08, 0x52, 0x45, 0x53, 0x54, 0x52, 0x49, 0x43, 0x54, 0x10, 0xd3, 0x04, 0x12, + 0x0e, 0x0a, 0x09, 0x52, 0x45, 0x54, 0x55, 0x52, 0x4e, 0x49, 0x4e, 0x47, 0x10, 0xd4, 0x04, 0x12, + 0x0c, 0x0a, 0x07, 0x52, 0x45, 0x54, 0x55, 0x52, 0x4e, 0x53, 0x10, 0xd5, 0x04, 0x12, 0x0b, 0x0a, + 0x06, 0x52, 0x45, 0x56, 0x4f, 0x4b, 0x45, 0x10, 0xd6, 0x04, 0x12, 0x0a, 0x0a, 0x05, 0x52, 0x49, + 0x47, 0x48, 0x54, 0x10, 0xd7, 0x04, 0x12, 0x09, 0x0a, 0x04, 0x52, 0x4f, 0x4c, 0x45, 0x10, 0xd8, + 0x04, 0x12, 0x0d, 0x0a, 0x08, 0x52, 0x4f, 0x4c, 0x4c, 0x42, 0x41, 0x43, 0x4b, 0x10, 0xd9, 0x04, + 0x12, 0x0b, 0x0a, 0x06, 0x52, 0x4f, 0x4c, 0x4c, 0x55, 0x50, 0x10, 0xda, 0x04, 0x12, 0x0c, 0x0a, + 0x07, 0x52, 0x4f, 0x55, 0x54, 0x49, 0x4e, 0x45, 0x10, 0xdb, 0x04, 0x12, 0x0d, 0x0a, 0x08, 0x52, + 0x4f, 0x55, 0x54, 0x49, 0x4e, 0x45, 0x53, 0x10, 0xdc, 0x04, 0x12, 0x08, 0x0a, 0x03, 0x52, 0x4f, + 0x57, 0x10, 0xdd, 0x04, 0x12, 0x09, 0x0a, 0x04, 0x52, 0x4f, 0x57, 0x53, 0x10, 0xde, 0x04, 0x12, + 0x09, 0x0a, 0x04, 0x52, 0x55, 0x4c, 0x45, 0x10, 0xdf, 0x04, 0x12, 0x0e, 0x0a, 0x09, 0x53, 0x41, + 0x56, 0x45, 0x50, 0x4f, 0x49, 0x4e, 0x54, 0x10, 0xe0, 0x04, 0x12, 0x0b, 0x0a, 0x06, 0x53, 0x43, + 0x48, 0x45, 0x4d, 0x41, 0x10, 0xe1, 0x04, 0x12, 0x0c, 0x0a, 0x07, 0x53, 0x43, 0x48, 0x45, 0x4d, + 0x41, 0x53, 0x10, 0xe2, 0x04, 0x12, 0x0b, 0x0a, 0x06, 0x53, 0x43, 0x52, 0x4f, 0x4c, 0x4c, 0x10, + 0xe3, 0x04, 0x12, 0x0b, 0x0a, 0x06, 0x53, 0x45, 0x41, 0x52, 0x43, 0x48, 0x10, 0xe4, 0x04, 0x12, + 0x0d, 0x0a, 0x08, 0x53, 0x45, 0x43, 0x4f, 0x4e, 0x44, 0x5f, 0x50, 0x10, 0xe5, 0x04, 0x12, 0x0d, + 0x0a, 0x08, 0x53, 0x45, 0x43, 0x55, 0x52, 0x49, 0x54, 0x59, 0x10, 0xe6, 0x04, 0x12, 0x0b, 0x0a, + 0x06, 0x53, 0x45, 0x4c, 0x45, 0x43, 0x54, 0x10, 0xe7, 0x04, 0x12, 0x0d, 0x0a, 0x08, 0x53, 0x45, + 0x51, 0x55, 0x45, 0x4e, 0x43, 0x45, 0x10, 0xe8, 0x04, 0x12, 0x0e, 0x0a, 0x09, 0x53, 0x45, 0x51, + 0x55, 0x45, 0x4e, 0x43, 0x45, 0x53, 0x10, 0xe9, 0x04, 0x12, 0x11, 0x0a, 0x0c, 0x53, 0x45, 0x52, + 0x49, 0x41, 0x4c, 0x49, 0x5a, 0x41, 0x42, 0x4c, 0x45, 0x10, 0xea, 0x04, 0x12, 0x0b, 0x0a, 0x06, + 0x53, 0x45, 0x52, 0x56, 0x45, 0x52, 0x10, 0xeb, 0x04, 0x12, 0x0c, 0x0a, 0x07, 0x53, 0x45, 0x53, + 0x53, 0x49, 0x4f, 0x4e, 0x10, 0xec, 0x04, 0x12, 0x11, 0x0a, 0x0c, 0x53, 0x45, 0x53, 0x53, 0x49, + 0x4f, 0x4e, 0x5f, 0x55, 0x53, 0x45, 0x52, 0x10, 0xed, 0x04, 0x12, 0x08, 0x0a, 0x03, 0x53, 0x45, + 0x54, 0x10, 0xee, 0x04, 0x12, 0x09, 0x0a, 0x04, 0x53, 0x45, 0x54, 0x53, 0x10, 0xef, 0x04, 0x12, + 0x0a, 0x0a, 0x05, 0x53, 0x45, 0x54, 0x4f, 0x46, 0x10, 0xf0, 0x04, 0x12, 0x0a, 0x0a, 0x05, 0x53, + 0x48, 0x41, 0x52, 0x45, 0x10, 0xf1, 0x04, 0x12, 0x09, 0x0a, 0x04, 0x53, 0x48, 0x4f, 0x57, 0x10, + 0xf2, 0x04, 0x12, 0x0c, 0x0a, 0x07, 0x53, 0x49, 0x4d, 0x49, 0x4c, 0x41, 0x52, 0x10, 0xf3, 0x04, + 0x12, 0x0b, 0x0a, 0x06, 0x53, 0x49, 0x4d, 0x50, 0x4c, 0x45, 0x10, 0xf4, 0x04, 0x12, 0x09, 0x0a, + 0x04, 0x53, 0x4b, 0x49, 0x50, 0x10, 0xf5, 0x04, 0x12, 0x0d, 0x0a, 0x08, 0x53, 0x4d, 0x41, 0x4c, + 0x4c, 0x49, 0x4e, 0x54, 0x10, 0xf6, 0x04, 0x12, 0x0d, 0x0a, 0x08, 0x53, 0x4e, 0x41, 0x50, 0x53, + 0x48, 0x4f, 0x54, 0x10, 0xf7, 0x04, 0x12, 0x09, 0x0a, 0x04, 0x53, 0x4f, 0x4d, 0x45, 0x10, 0xf8, + 0x04, 0x12, 0x0a, 0x0a, 0x05, 0x53, 0x51, 0x4c, 0x5f, 0x50, 0x10, 0xf9, 0x04, 0x12, 0x0b, 0x0a, + 0x06, 0x53, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x10, 0xfa, 0x04, 0x12, 0x11, 0x0a, 0x0c, 0x53, 0x54, + 0x41, 0x4e, 0x44, 0x41, 0x4c, 0x4f, 0x4e, 0x45, 0x5f, 0x50, 0x10, 0xfb, 0x04, 0x12, 0x0a, 0x0a, + 0x05, 0x53, 0x54, 0x41, 0x52, 0x54, 0x10, 0xfc, 0x04, 0x12, 0x0e, 0x0a, 0x09, 0x53, 0x54, 0x41, + 0x54, 0x45, 0x4d, 0x45, 0x4e, 0x54, 0x10, 0xfd, 0x04, 0x12, 0x0f, 0x0a, 0x0a, 0x53, 0x54, 0x41, + 0x54, 0x49, 0x53, 0x54, 0x49, 0x43, 0x53, 0x10, 0xfe, 0x04, 0x12, 0x0a, 0x0a, 0x05, 0x53, 0x54, + 0x44, 0x49, 0x4e, 0x10, 0xff, 0x04, 0x12, 0x0b, 0x0a, 0x06, 0x53, 0x54, 0x44, 0x4f, 0x55, 0x54, + 0x10, 0x80, 0x05, 0x12, 0x0c, 0x0a, 0x07, 0x53, 0x54, 0x4f, 0x52, 0x41, 0x47, 0x45, 0x10, 0x81, + 0x05, 0x12, 0x0b, 0x0a, 0x06, 0x53, 0x54, 0x4f, 0x52, 0x45, 0x44, 0x10, 0x82, 0x05, 0x12, 0x0d, + 0x0a, 0x08, 0x53, 0x54, 0x52, 0x49, 0x43, 0x54, 0x5f, 0x50, 0x10, 0x83, 0x05, 0x12, 0x0c, 0x0a, + 0x07, 0x53, 0x54, 0x52, 0x49, 0x50, 0x5f, 0x50, 0x10, 0x84, 0x05, 0x12, 0x11, 0x0a, 0x0c, 0x53, + 0x55, 0x42, 0x53, 0x43, 0x52, 0x49, 0x50, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x85, 0x05, 0x12, 0x0e, + 0x0a, 0x09, 0x53, 0x55, 0x42, 0x53, 0x54, 0x52, 0x49, 0x4e, 0x47, 0x10, 0x86, 0x05, 0x12, 0x0c, + 0x0a, 0x07, 0x53, 0x55, 0x50, 0x50, 0x4f, 0x52, 0x54, 0x10, 0x87, 0x05, 0x12, 0x0e, 0x0a, 0x09, + 0x53, 0x59, 0x4d, 0x4d, 0x45, 0x54, 0x52, 0x49, 0x43, 0x10, 0x88, 0x05, 0x12, 0x0a, 0x0a, 0x05, + 0x53, 0x59, 0x53, 0x49, 0x44, 0x10, 0x89, 0x05, 0x12, 0x0d, 0x0a, 0x08, 0x53, 0x59, 0x53, 0x54, + 0x45, 0x4d, 0x5f, 0x50, 0x10, 0x8a, 0x05, 0x12, 0x0a, 0x0a, 0x05, 0x54, 0x41, 0x42, 0x4c, 0x45, + 0x10, 0x8b, 0x05, 0x12, 0x0b, 0x0a, 0x06, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x53, 0x10, 0x8c, 0x05, + 0x12, 0x10, 0x0a, 0x0b, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x53, 0x41, 0x4d, 0x50, 0x4c, 0x45, 0x10, + 0x8d, 0x05, 0x12, 0x0f, 0x0a, 0x0a, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x53, 0x50, 0x41, 0x43, 0x45, + 0x10, 0x8e, 0x05, 0x12, 0x09, 0x0a, 0x04, 0x54, 0x45, 0x4d, 0x50, 0x10, 0x8f, 0x05, 0x12, 0x0d, + 0x0a, 0x08, 0x54, 0x45, 0x4d, 0x50, 0x4c, 0x41, 0x54, 0x45, 0x10, 0x90, 0x05, 0x12, 0x0e, 0x0a, + 0x09, 0x54, 0x45, 0x4d, 0x50, 0x4f, 0x52, 0x41, 0x52, 0x59, 0x10, 0x91, 0x05, 0x12, 0x0b, 0x0a, + 0x06, 0x54, 0x45, 0x58, 0x54, 0x5f, 0x50, 0x10, 0x92, 0x05, 0x12, 0x09, 0x0a, 0x04, 0x54, 0x48, + 0x45, 0x4e, 0x10, 0x93, 0x05, 0x12, 0x09, 0x0a, 0x04, 0x54, 0x49, 0x45, 0x53, 0x10, 0x94, 0x05, + 0x12, 0x09, 0x0a, 0x04, 0x54, 0x49, 0x4d, 0x45, 0x10, 0x95, 0x05, 0x12, 0x0e, 0x0a, 0x09, 0x54, + 0x49, 0x4d, 0x45, 0x53, 0x54, 0x41, 0x4d, 0x50, 0x10, 0x96, 0x05, 0x12, 0x07, 0x0a, 0x02, 0x54, + 0x4f, 0x10, 0x97, 0x05, 0x12, 0x0d, 0x0a, 0x08, 0x54, 0x52, 0x41, 0x49, 0x4c, 0x49, 0x4e, 0x47, + 0x10, 0x98, 0x05, 0x12, 0x10, 0x0a, 0x0b, 0x54, 0x52, 0x41, 0x4e, 0x53, 0x41, 0x43, 0x54, 0x49, + 0x4f, 0x4e, 0x10, 0x99, 0x05, 0x12, 0x0e, 0x0a, 0x09, 0x54, 0x52, 0x41, 0x4e, 0x53, 0x46, 0x4f, + 0x52, 0x4d, 0x10, 0x9a, 0x05, 0x12, 0x0a, 0x0a, 0x05, 0x54, 0x52, 0x45, 0x41, 0x54, 0x10, 0x9b, + 0x05, 0x12, 0x0c, 0x0a, 0x07, 0x54, 0x52, 0x49, 0x47, 0x47, 0x45, 0x52, 0x10, 0x9c, 0x05, 0x12, + 0x09, 0x0a, 0x04, 0x54, 0x52, 0x49, 0x4d, 0x10, 0x9d, 0x05, 0x12, 0x0b, 0x0a, 0x06, 0x54, 0x52, + 0x55, 0x45, 0x5f, 0x50, 0x10, 0x9e, 0x05, 0x12, 0x0d, 0x0a, 0x08, 0x54, 0x52, 0x55, 0x4e, 0x43, + 0x41, 0x54, 0x45, 0x10, 0x9f, 0x05, 0x12, 0x0c, 0x0a, 0x07, 0x54, 0x52, 0x55, 0x53, 0x54, 0x45, + 0x44, 0x10, 0xa0, 0x05, 0x12, 0x0b, 0x0a, 0x06, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x50, 0x10, 0xa1, + 0x05, 0x12, 0x0c, 0x0a, 0x07, 0x54, 0x59, 0x50, 0x45, 0x53, 0x5f, 0x50, 0x10, 0xa2, 0x05, 0x12, + 0x0c, 0x0a, 0x07, 0x55, 0x45, 0x53, 0x43, 0x41, 0x50, 0x45, 0x10, 0xa3, 0x05, 0x12, 0x0e, 0x0a, + 0x09, 0x55, 0x4e, 0x42, 0x4f, 0x55, 0x4e, 0x44, 0x45, 0x44, 0x10, 0xa4, 0x05, 0x12, 0x10, 0x0a, + 0x0b, 0x55, 0x4e, 0x43, 0x4f, 0x4d, 0x4d, 0x49, 0x54, 0x54, 0x45, 0x44, 0x10, 0xa5, 0x05, 0x12, + 0x10, 0x0a, 0x0b, 0x55, 0x4e, 0x45, 0x4e, 0x43, 0x52, 0x59, 0x50, 0x54, 0x45, 0x44, 0x10, 0xa6, + 0x05, 0x12, 0x0a, 0x0a, 0x05, 0x55, 0x4e, 0x49, 0x4f, 0x4e, 0x10, 0xa7, 0x05, 0x12, 0x0b, 0x0a, + 0x06, 0x55, 0x4e, 0x49, 0x51, 0x55, 0x45, 0x10, 0xa8, 0x05, 0x12, 0x0c, 0x0a, 0x07, 0x55, 0x4e, + 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0xa9, 0x05, 0x12, 0x0d, 0x0a, 0x08, 0x55, 0x4e, 0x4c, 0x49, + 0x53, 0x54, 0x45, 0x4e, 0x10, 0xaa, 0x05, 0x12, 0x0d, 0x0a, 0x08, 0x55, 0x4e, 0x4c, 0x4f, 0x47, + 0x47, 0x45, 0x44, 0x10, 0xab, 0x05, 0x12, 0x0a, 0x0a, 0x05, 0x55, 0x4e, 0x54, 0x49, 0x4c, 0x10, + 0xac, 0x05, 0x12, 0x0b, 0x0a, 0x06, 0x55, 0x50, 0x44, 0x41, 0x54, 0x45, 0x10, 0xad, 0x05, 0x12, + 0x09, 0x0a, 0x04, 0x55, 0x53, 0x45, 0x52, 0x10, 0xae, 0x05, 0x12, 0x0a, 0x0a, 0x05, 0x55, 0x53, + 0x49, 0x4e, 0x47, 0x10, 0xaf, 0x05, 0x12, 0x0b, 0x0a, 0x06, 0x56, 0x41, 0x43, 0x55, 0x55, 0x4d, + 0x10, 0xb0, 0x05, 0x12, 0x0a, 0x0a, 0x05, 0x56, 0x41, 0x4c, 0x49, 0x44, 0x10, 0xb1, 0x05, 0x12, + 0x0d, 0x0a, 0x08, 0x56, 0x41, 0x4c, 0x49, 0x44, 0x41, 0x54, 0x45, 0x10, 0xb2, 0x05, 0x12, 0x0e, + 0x0a, 0x09, 0x56, 0x41, 0x4c, 0x49, 0x44, 0x41, 0x54, 0x4f, 0x52, 0x10, 0xb3, 0x05, 0x12, 0x0c, + 0x0a, 0x07, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x5f, 0x50, 0x10, 0xb4, 0x05, 0x12, 0x0b, 0x0a, 0x06, + 0x56, 0x41, 0x4c, 0x55, 0x45, 0x53, 0x10, 0xb5, 0x05, 0x12, 0x0c, 0x0a, 0x07, 0x56, 0x41, 0x52, + 0x43, 0x48, 0x41, 0x52, 0x10, 0xb6, 0x05, 0x12, 0x0d, 0x0a, 0x08, 0x56, 0x41, 0x52, 0x49, 0x41, + 0x44, 0x49, 0x43, 0x10, 0xb7, 0x05, 0x12, 0x0c, 0x0a, 0x07, 0x56, 0x41, 0x52, 0x59, 0x49, 0x4e, + 0x47, 0x10, 0xb8, 0x05, 0x12, 0x0c, 0x0a, 0x07, 0x56, 0x45, 0x52, 0x42, 0x4f, 0x53, 0x45, 0x10, + 0xb9, 0x05, 0x12, 0x0e, 0x0a, 0x09, 0x56, 0x45, 0x52, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x50, 0x10, + 0xba, 0x05, 0x12, 0x09, 0x0a, 0x04, 0x56, 0x49, 0x45, 0x57, 0x10, 0xbb, 0x05, 0x12, 0x0a, 0x0a, + 0x05, 0x56, 0x49, 0x45, 0x57, 0x53, 0x10, 0xbc, 0x05, 0x12, 0x0d, 0x0a, 0x08, 0x56, 0x4f, 0x4c, + 0x41, 0x54, 0x49, 0x4c, 0x45, 0x10, 0xbd, 0x05, 0x12, 0x09, 0x0a, 0x04, 0x57, 0x48, 0x45, 0x4e, + 0x10, 0xbe, 0x05, 0x12, 0x0a, 0x0a, 0x05, 0x57, 0x48, 0x45, 0x52, 0x45, 0x10, 0xbf, 0x05, 0x12, + 0x11, 0x0a, 0x0c, 0x57, 0x48, 0x49, 0x54, 0x45, 0x53, 0x50, 0x41, 0x43, 0x45, 0x5f, 0x50, 0x10, + 0xc0, 0x05, 0x12, 0x0b, 0x0a, 0x06, 0x57, 0x49, 0x4e, 0x44, 0x4f, 0x57, 0x10, 0xc1, 0x05, 0x12, + 0x09, 0x0a, 0x04, 0x57, 0x49, 0x54, 0x48, 0x10, 0xc2, 0x05, 0x12, 0x0b, 0x0a, 0x06, 0x57, 0x49, + 0x54, 0x48, 0x49, 0x4e, 0x10, 0xc3, 0x05, 0x12, 0x0c, 0x0a, 0x07, 0x57, 0x49, 0x54, 0x48, 0x4f, + 0x55, 0x54, 0x10, 0xc4, 0x05, 0x12, 0x09, 0x0a, 0x04, 0x57, 0x4f, 0x52, 0x4b, 0x10, 0xc5, 0x05, + 0x12, 0x0c, 0x0a, 0x07, 0x57, 0x52, 0x41, 0x50, 0x50, 0x45, 0x52, 0x10, 0xc6, 0x05, 0x12, 0x0a, + 0x0a, 0x05, 0x57, 0x52, 0x49, 0x54, 0x45, 0x10, 0xc7, 0x05, 0x12, 0x0a, 0x0a, 0x05, 0x58, 0x4d, + 0x4c, 0x5f, 0x50, 0x10, 0xc8, 0x05, 0x12, 0x12, 0x0a, 0x0d, 0x58, 0x4d, 0x4c, 0x41, 0x54, 0x54, + 0x52, 0x49, 0x42, 0x55, 0x54, 0x45, 0x53, 0x10, 0xc9, 0x05, 0x12, 0x0e, 0x0a, 0x09, 0x58, 0x4d, + 0x4c, 0x43, 0x4f, 0x4e, 0x43, 0x41, 0x54, 0x10, 0xca, 0x05, 0x12, 0x0f, 0x0a, 0x0a, 0x58, 0x4d, + 0x4c, 0x45, 0x4c, 0x45, 0x4d, 0x45, 0x4e, 0x54, 0x10, 0xcb, 0x05, 0x12, 0x0e, 0x0a, 0x09, 0x58, + 0x4d, 0x4c, 0x45, 0x58, 0x49, 0x53, 0x54, 0x53, 0x10, 0xcc, 0x05, 0x12, 0x0e, 0x0a, 0x09, 0x58, + 0x4d, 0x4c, 0x46, 0x4f, 0x52, 0x45, 0x53, 0x54, 0x10, 0xcd, 0x05, 0x12, 0x12, 0x0a, 0x0d, 0x58, + 0x4d, 0x4c, 0x4e, 0x41, 0x4d, 0x45, 0x53, 0x50, 0x41, 0x43, 0x45, 0x53, 0x10, 0xce, 0x05, 0x12, + 0x0d, 0x0a, 0x08, 0x58, 0x4d, 0x4c, 0x50, 0x41, 0x52, 0x53, 0x45, 0x10, 0xcf, 0x05, 0x12, 0x0a, + 0x0a, 0x05, 0x58, 0x4d, 0x4c, 0x50, 0x49, 0x10, 0xd0, 0x05, 0x12, 0x0c, 0x0a, 0x07, 0x58, 0x4d, + 0x4c, 0x52, 0x4f, 0x4f, 0x54, 0x10, 0xd1, 0x05, 0x12, 0x11, 0x0a, 0x0c, 0x58, 0x4d, 0x4c, 0x53, + 0x45, 0x52, 0x49, 0x41, 0x4c, 0x49, 0x5a, 0x45, 0x10, 0xd2, 0x05, 0x12, 0x0d, 0x0a, 0x08, 0x58, + 0x4d, 0x4c, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x10, 0xd3, 0x05, 0x12, 0x0b, 0x0a, 0x06, 0x59, 0x45, + 0x41, 0x52, 0x5f, 0x50, 0x10, 0xd4, 0x05, 0x12, 0x0a, 0x0a, 0x05, 0x59, 0x45, 0x53, 0x5f, 0x50, + 0x10, 0xd5, 0x05, 0x12, 0x09, 0x0a, 0x04, 0x5a, 0x4f, 0x4e, 0x45, 0x10, 0xd6, 0x05, 0x12, 0x0b, + 0x0a, 0x06, 0x4e, 0x4f, 0x54, 0x5f, 0x4c, 0x41, 0x10, 0xd7, 0x05, 0x12, 0x0d, 0x0a, 0x08, 0x4e, + 0x55, 0x4c, 0x4c, 0x53, 0x5f, 0x4c, 0x41, 0x10, 0xd8, 0x05, 0x12, 0x0c, 0x0a, 0x07, 0x57, 0x49, + 0x54, 0x48, 0x5f, 0x4c, 0x41, 0x10, 0xd9, 0x05, 0x12, 0x0e, 0x0a, 0x09, 0x50, 0x4f, 0x53, 0x54, + 0x46, 0x49, 0x58, 0x4f, 0x50, 0x10, 0xda, 0x05, 0x12, 0x0b, 0x0a, 0x06, 0x55, 0x4d, 0x49, 0x4e, + 0x55, 0x53, 0x10, 0xdb, 0x05, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +} + +var ( + file_pg_query_proto_rawDescOnce sync.Once + file_pg_query_proto_rawDescData = file_pg_query_proto_rawDesc +) + +func file_pg_query_proto_rawDescGZIP() []byte { + file_pg_query_proto_rawDescOnce.Do(func() { + file_pg_query_proto_rawDescData = protoimpl.X.CompressGZIP(file_pg_query_proto_rawDescData) + }) + return file_pg_query_proto_rawDescData +} + +var file_pg_query_proto_enumTypes = make([]protoimpl.EnumInfo, 57) +var file_pg_query_proto_msgTypes = make([]protoimpl.MessageInfo, 232) +var file_pg_query_proto_goTypes = []interface{}{ + (OverridingKind)(0), // 0: pg_query.OverridingKind + (QuerySource)(0), // 1: pg_query.QuerySource + (SortByDir)(0), // 2: pg_query.SortByDir + (SortByNulls)(0), // 3: pg_query.SortByNulls + (A_Expr_Kind)(0), // 4: pg_query.A_Expr_Kind + (RoleSpecType)(0), // 5: pg_query.RoleSpecType + (TableLikeOption)(0), // 6: pg_query.TableLikeOption + (DefElemAction)(0), // 7: pg_query.DefElemAction + (PartitionRangeDatumKind)(0), // 8: pg_query.PartitionRangeDatumKind + (RTEKind)(0), // 9: pg_query.RTEKind + (WCOKind)(0), // 10: pg_query.WCOKind + (GroupingSetKind)(0), // 11: pg_query.GroupingSetKind + (CTEMaterialize)(0), // 12: pg_query.CTEMaterialize + (SetOperation)(0), // 13: pg_query.SetOperation + (ObjectType)(0), // 14: pg_query.ObjectType + (DropBehavior)(0), // 15: pg_query.DropBehavior + (AlterTableType)(0), // 16: pg_query.AlterTableType + (GrantTargetType)(0), // 17: pg_query.GrantTargetType + (VariableSetKind)(0), // 18: pg_query.VariableSetKind + (ConstrType)(0), // 19: pg_query.ConstrType + (ImportForeignSchemaType)(0), // 20: pg_query.ImportForeignSchemaType + (RoleStmtType)(0), // 21: pg_query.RoleStmtType + (FetchDirection)(0), // 22: pg_query.FetchDirection + (FunctionParameterMode)(0), // 23: pg_query.FunctionParameterMode + (TransactionStmtKind)(0), // 24: pg_query.TransactionStmtKind + (ViewCheckOption)(0), // 25: pg_query.ViewCheckOption + (ClusterOption)(0), // 26: pg_query.ClusterOption + (DiscardMode)(0), // 27: pg_query.DiscardMode + (ReindexObjectType)(0), // 28: pg_query.ReindexObjectType + (AlterTSConfigType)(0), // 29: pg_query.AlterTSConfigType + (AlterSubscriptionType)(0), // 30: pg_query.AlterSubscriptionType + (OnCommitAction)(0), // 31: pg_query.OnCommitAction + (ParamKind)(0), // 32: pg_query.ParamKind + (CoercionContext)(0), // 33: pg_query.CoercionContext + (CoercionForm)(0), // 34: pg_query.CoercionForm + (BoolExprType)(0), // 35: pg_query.BoolExprType + (SubLinkType)(0), // 36: pg_query.SubLinkType + (RowCompareType)(0), // 37: pg_query.RowCompareType + (MinMaxOp)(0), // 38: pg_query.MinMaxOp + (SQLValueFunctionOp)(0), // 39: pg_query.SQLValueFunctionOp + (XmlExprOp)(0), // 40: pg_query.XmlExprOp + (XmlOptionType)(0), // 41: pg_query.XmlOptionType + (NullTestType)(0), // 42: pg_query.NullTestType + (BoolTestType)(0), // 43: pg_query.BoolTestType + (CmdType)(0), // 44: pg_query.CmdType + (JoinType)(0), // 45: pg_query.JoinType + (AggStrategy)(0), // 46: pg_query.AggStrategy + (AggSplit)(0), // 47: pg_query.AggSplit + (SetOpCmd)(0), // 48: pg_query.SetOpCmd + (SetOpStrategy)(0), // 49: pg_query.SetOpStrategy + (OnConflictAction)(0), // 50: pg_query.OnConflictAction + (LimitOption)(0), // 51: pg_query.LimitOption + (LockClauseStrength)(0), // 52: pg_query.LockClauseStrength + (LockWaitPolicy)(0), // 53: pg_query.LockWaitPolicy + (LockTupleMode)(0), // 54: pg_query.LockTupleMode + (KeywordKind)(0), // 55: pg_query.KeywordKind + (Token)(0), // 56: pg_query.Token + (*ParseResult)(nil), // 57: pg_query.ParseResult + (*ScanResult)(nil), // 58: pg_query.ScanResult + (*Node)(nil), // 59: pg_query.Node + (*Integer)(nil), // 60: pg_query.Integer + (*Float)(nil), // 61: pg_query.Float + (*String)(nil), // 62: pg_query.String + (*BitString)(nil), // 63: pg_query.BitString + (*Null)(nil), // 64: pg_query.Null + (*List)(nil), // 65: pg_query.List + (*OidList)(nil), // 66: pg_query.OidList + (*IntList)(nil), // 67: pg_query.IntList + (*Alias)(nil), // 68: pg_query.Alias + (*RangeVar)(nil), // 69: pg_query.RangeVar + (*TableFunc)(nil), // 70: pg_query.TableFunc + (*Expr)(nil), // 71: pg_query.Expr + (*Var)(nil), // 72: pg_query.Var + (*Param)(nil), // 73: pg_query.Param + (*Aggref)(nil), // 74: pg_query.Aggref + (*GroupingFunc)(nil), // 75: pg_query.GroupingFunc + (*WindowFunc)(nil), // 76: pg_query.WindowFunc + (*SubscriptingRef)(nil), // 77: pg_query.SubscriptingRef + (*FuncExpr)(nil), // 78: pg_query.FuncExpr + (*NamedArgExpr)(nil), // 79: pg_query.NamedArgExpr + (*OpExpr)(nil), // 80: pg_query.OpExpr + (*DistinctExpr)(nil), // 81: pg_query.DistinctExpr + (*NullIfExpr)(nil), // 82: pg_query.NullIfExpr + (*ScalarArrayOpExpr)(nil), // 83: pg_query.ScalarArrayOpExpr + (*BoolExpr)(nil), // 84: pg_query.BoolExpr + (*SubLink)(nil), // 85: pg_query.SubLink + (*SubPlan)(nil), // 86: pg_query.SubPlan + (*AlternativeSubPlan)(nil), // 87: pg_query.AlternativeSubPlan + (*FieldSelect)(nil), // 88: pg_query.FieldSelect + (*FieldStore)(nil), // 89: pg_query.FieldStore + (*RelabelType)(nil), // 90: pg_query.RelabelType + (*CoerceViaIO)(nil), // 91: pg_query.CoerceViaIO + (*ArrayCoerceExpr)(nil), // 92: pg_query.ArrayCoerceExpr + (*ConvertRowtypeExpr)(nil), // 93: pg_query.ConvertRowtypeExpr + (*CollateExpr)(nil), // 94: pg_query.CollateExpr + (*CaseExpr)(nil), // 95: pg_query.CaseExpr + (*CaseWhen)(nil), // 96: pg_query.CaseWhen + (*CaseTestExpr)(nil), // 97: pg_query.CaseTestExpr + (*ArrayExpr)(nil), // 98: pg_query.ArrayExpr + (*RowExpr)(nil), // 99: pg_query.RowExpr + (*RowCompareExpr)(nil), // 100: pg_query.RowCompareExpr + (*CoalesceExpr)(nil), // 101: pg_query.CoalesceExpr + (*MinMaxExpr)(nil), // 102: pg_query.MinMaxExpr + (*SQLValueFunction)(nil), // 103: pg_query.SQLValueFunction + (*XmlExpr)(nil), // 104: pg_query.XmlExpr + (*NullTest)(nil), // 105: pg_query.NullTest + (*BooleanTest)(nil), // 106: pg_query.BooleanTest + (*CoerceToDomain)(nil), // 107: pg_query.CoerceToDomain + (*CoerceToDomainValue)(nil), // 108: pg_query.CoerceToDomainValue + (*SetToDefault)(nil), // 109: pg_query.SetToDefault + (*CurrentOfExpr)(nil), // 110: pg_query.CurrentOfExpr + (*NextValueExpr)(nil), // 111: pg_query.NextValueExpr + (*InferenceElem)(nil), // 112: pg_query.InferenceElem + (*TargetEntry)(nil), // 113: pg_query.TargetEntry + (*RangeTblRef)(nil), // 114: pg_query.RangeTblRef + (*JoinExpr)(nil), // 115: pg_query.JoinExpr + (*FromExpr)(nil), // 116: pg_query.FromExpr + (*OnConflictExpr)(nil), // 117: pg_query.OnConflictExpr + (*IntoClause)(nil), // 118: pg_query.IntoClause + (*RawStmt)(nil), // 119: pg_query.RawStmt + (*Query)(nil), // 120: pg_query.Query + (*InsertStmt)(nil), // 121: pg_query.InsertStmt + (*DeleteStmt)(nil), // 122: pg_query.DeleteStmt + (*UpdateStmt)(nil), // 123: pg_query.UpdateStmt + (*SelectStmt)(nil), // 124: pg_query.SelectStmt + (*AlterTableStmt)(nil), // 125: pg_query.AlterTableStmt + (*AlterTableCmd)(nil), // 126: pg_query.AlterTableCmd + (*AlterDomainStmt)(nil), // 127: pg_query.AlterDomainStmt + (*SetOperationStmt)(nil), // 128: pg_query.SetOperationStmt + (*GrantStmt)(nil), // 129: pg_query.GrantStmt + (*GrantRoleStmt)(nil), // 130: pg_query.GrantRoleStmt + (*AlterDefaultPrivilegesStmt)(nil), // 131: pg_query.AlterDefaultPrivilegesStmt + (*ClosePortalStmt)(nil), // 132: pg_query.ClosePortalStmt + (*ClusterStmt)(nil), // 133: pg_query.ClusterStmt + (*CopyStmt)(nil), // 134: pg_query.CopyStmt + (*CreateStmt)(nil), // 135: pg_query.CreateStmt + (*DefineStmt)(nil), // 136: pg_query.DefineStmt + (*DropStmt)(nil), // 137: pg_query.DropStmt + (*TruncateStmt)(nil), // 138: pg_query.TruncateStmt + (*CommentStmt)(nil), // 139: pg_query.CommentStmt + (*FetchStmt)(nil), // 140: pg_query.FetchStmt + (*IndexStmt)(nil), // 141: pg_query.IndexStmt + (*CreateFunctionStmt)(nil), // 142: pg_query.CreateFunctionStmt + (*AlterFunctionStmt)(nil), // 143: pg_query.AlterFunctionStmt + (*DoStmt)(nil), // 144: pg_query.DoStmt + (*RenameStmt)(nil), // 145: pg_query.RenameStmt + (*RuleStmt)(nil), // 146: pg_query.RuleStmt + (*NotifyStmt)(nil), // 147: pg_query.NotifyStmt + (*ListenStmt)(nil), // 148: pg_query.ListenStmt + (*UnlistenStmt)(nil), // 149: pg_query.UnlistenStmt + (*TransactionStmt)(nil), // 150: pg_query.TransactionStmt + (*ViewStmt)(nil), // 151: pg_query.ViewStmt + (*LoadStmt)(nil), // 152: pg_query.LoadStmt + (*CreateDomainStmt)(nil), // 153: pg_query.CreateDomainStmt + (*CreatedbStmt)(nil), // 154: pg_query.CreatedbStmt + (*DropdbStmt)(nil), // 155: pg_query.DropdbStmt + (*VacuumStmt)(nil), // 156: pg_query.VacuumStmt + (*ExplainStmt)(nil), // 157: pg_query.ExplainStmt + (*CreateTableAsStmt)(nil), // 158: pg_query.CreateTableAsStmt + (*CreateSeqStmt)(nil), // 159: pg_query.CreateSeqStmt + (*AlterSeqStmt)(nil), // 160: pg_query.AlterSeqStmt + (*VariableSetStmt)(nil), // 161: pg_query.VariableSetStmt + (*VariableShowStmt)(nil), // 162: pg_query.VariableShowStmt + (*DiscardStmt)(nil), // 163: pg_query.DiscardStmt + (*CreateTrigStmt)(nil), // 164: pg_query.CreateTrigStmt + (*CreatePLangStmt)(nil), // 165: pg_query.CreatePLangStmt + (*CreateRoleStmt)(nil), // 166: pg_query.CreateRoleStmt + (*AlterRoleStmt)(nil), // 167: pg_query.AlterRoleStmt + (*DropRoleStmt)(nil), // 168: pg_query.DropRoleStmt + (*LockStmt)(nil), // 169: pg_query.LockStmt + (*ConstraintsSetStmt)(nil), // 170: pg_query.ConstraintsSetStmt + (*ReindexStmt)(nil), // 171: pg_query.ReindexStmt + (*CheckPointStmt)(nil), // 172: pg_query.CheckPointStmt + (*CreateSchemaStmt)(nil), // 173: pg_query.CreateSchemaStmt + (*AlterDatabaseStmt)(nil), // 174: pg_query.AlterDatabaseStmt + (*AlterDatabaseSetStmt)(nil), // 175: pg_query.AlterDatabaseSetStmt + (*AlterRoleSetStmt)(nil), // 176: pg_query.AlterRoleSetStmt + (*CreateConversionStmt)(nil), // 177: pg_query.CreateConversionStmt + (*CreateCastStmt)(nil), // 178: pg_query.CreateCastStmt + (*CreateOpClassStmt)(nil), // 179: pg_query.CreateOpClassStmt + (*CreateOpFamilyStmt)(nil), // 180: pg_query.CreateOpFamilyStmt + (*AlterOpFamilyStmt)(nil), // 181: pg_query.AlterOpFamilyStmt + (*PrepareStmt)(nil), // 182: pg_query.PrepareStmt + (*ExecuteStmt)(nil), // 183: pg_query.ExecuteStmt + (*DeallocateStmt)(nil), // 184: pg_query.DeallocateStmt + (*DeclareCursorStmt)(nil), // 185: pg_query.DeclareCursorStmt + (*CreateTableSpaceStmt)(nil), // 186: pg_query.CreateTableSpaceStmt + (*DropTableSpaceStmt)(nil), // 187: pg_query.DropTableSpaceStmt + (*AlterObjectDependsStmt)(nil), // 188: pg_query.AlterObjectDependsStmt + (*AlterObjectSchemaStmt)(nil), // 189: pg_query.AlterObjectSchemaStmt + (*AlterOwnerStmt)(nil), // 190: pg_query.AlterOwnerStmt + (*AlterOperatorStmt)(nil), // 191: pg_query.AlterOperatorStmt + (*AlterTypeStmt)(nil), // 192: pg_query.AlterTypeStmt + (*DropOwnedStmt)(nil), // 193: pg_query.DropOwnedStmt + (*ReassignOwnedStmt)(nil), // 194: pg_query.ReassignOwnedStmt + (*CompositeTypeStmt)(nil), // 195: pg_query.CompositeTypeStmt + (*CreateEnumStmt)(nil), // 196: pg_query.CreateEnumStmt + (*CreateRangeStmt)(nil), // 197: pg_query.CreateRangeStmt + (*AlterEnumStmt)(nil), // 198: pg_query.AlterEnumStmt + (*AlterTSDictionaryStmt)(nil), // 199: pg_query.AlterTSDictionaryStmt + (*AlterTSConfigurationStmt)(nil), // 200: pg_query.AlterTSConfigurationStmt + (*CreateFdwStmt)(nil), // 201: pg_query.CreateFdwStmt + (*AlterFdwStmt)(nil), // 202: pg_query.AlterFdwStmt + (*CreateForeignServerStmt)(nil), // 203: pg_query.CreateForeignServerStmt + (*AlterForeignServerStmt)(nil), // 204: pg_query.AlterForeignServerStmt + (*CreateUserMappingStmt)(nil), // 205: pg_query.CreateUserMappingStmt + (*AlterUserMappingStmt)(nil), // 206: pg_query.AlterUserMappingStmt + (*DropUserMappingStmt)(nil), // 207: pg_query.DropUserMappingStmt + (*AlterTableSpaceOptionsStmt)(nil), // 208: pg_query.AlterTableSpaceOptionsStmt + (*AlterTableMoveAllStmt)(nil), // 209: pg_query.AlterTableMoveAllStmt + (*SecLabelStmt)(nil), // 210: pg_query.SecLabelStmt + (*CreateForeignTableStmt)(nil), // 211: pg_query.CreateForeignTableStmt + (*ImportForeignSchemaStmt)(nil), // 212: pg_query.ImportForeignSchemaStmt + (*CreateExtensionStmt)(nil), // 213: pg_query.CreateExtensionStmt + (*AlterExtensionStmt)(nil), // 214: pg_query.AlterExtensionStmt + (*AlterExtensionContentsStmt)(nil), // 215: pg_query.AlterExtensionContentsStmt + (*CreateEventTrigStmt)(nil), // 216: pg_query.CreateEventTrigStmt + (*AlterEventTrigStmt)(nil), // 217: pg_query.AlterEventTrigStmt + (*RefreshMatViewStmt)(nil), // 218: pg_query.RefreshMatViewStmt + (*ReplicaIdentityStmt)(nil), // 219: pg_query.ReplicaIdentityStmt + (*AlterSystemStmt)(nil), // 220: pg_query.AlterSystemStmt + (*CreatePolicyStmt)(nil), // 221: pg_query.CreatePolicyStmt + (*AlterPolicyStmt)(nil), // 222: pg_query.AlterPolicyStmt + (*CreateTransformStmt)(nil), // 223: pg_query.CreateTransformStmt + (*CreateAmStmt)(nil), // 224: pg_query.CreateAmStmt + (*CreatePublicationStmt)(nil), // 225: pg_query.CreatePublicationStmt + (*AlterPublicationStmt)(nil), // 226: pg_query.AlterPublicationStmt + (*CreateSubscriptionStmt)(nil), // 227: pg_query.CreateSubscriptionStmt + (*AlterSubscriptionStmt)(nil), // 228: pg_query.AlterSubscriptionStmt + (*DropSubscriptionStmt)(nil), // 229: pg_query.DropSubscriptionStmt + (*CreateStatsStmt)(nil), // 230: pg_query.CreateStatsStmt + (*AlterCollationStmt)(nil), // 231: pg_query.AlterCollationStmt + (*CallStmt)(nil), // 232: pg_query.CallStmt + (*AlterStatsStmt)(nil), // 233: pg_query.AlterStatsStmt + (*A_Expr)(nil), // 234: pg_query.A_Expr + (*ColumnRef)(nil), // 235: pg_query.ColumnRef + (*ParamRef)(nil), // 236: pg_query.ParamRef + (*A_Const)(nil), // 237: pg_query.A_Const + (*FuncCall)(nil), // 238: pg_query.FuncCall + (*A_Star)(nil), // 239: pg_query.A_Star + (*A_Indices)(nil), // 240: pg_query.A_Indices + (*A_Indirection)(nil), // 241: pg_query.A_Indirection + (*A_ArrayExpr)(nil), // 242: pg_query.A_ArrayExpr + (*ResTarget)(nil), // 243: pg_query.ResTarget + (*MultiAssignRef)(nil), // 244: pg_query.MultiAssignRef + (*TypeCast)(nil), // 245: pg_query.TypeCast + (*CollateClause)(nil), // 246: pg_query.CollateClause + (*SortBy)(nil), // 247: pg_query.SortBy + (*WindowDef)(nil), // 248: pg_query.WindowDef + (*RangeSubselect)(nil), // 249: pg_query.RangeSubselect + (*RangeFunction)(nil), // 250: pg_query.RangeFunction + (*RangeTableSample)(nil), // 251: pg_query.RangeTableSample + (*RangeTableFunc)(nil), // 252: pg_query.RangeTableFunc + (*RangeTableFuncCol)(nil), // 253: pg_query.RangeTableFuncCol + (*TypeName)(nil), // 254: pg_query.TypeName + (*ColumnDef)(nil), // 255: pg_query.ColumnDef + (*IndexElem)(nil), // 256: pg_query.IndexElem + (*Constraint)(nil), // 257: pg_query.Constraint + (*DefElem)(nil), // 258: pg_query.DefElem + (*RangeTblEntry)(nil), // 259: pg_query.RangeTblEntry + (*RangeTblFunction)(nil), // 260: pg_query.RangeTblFunction + (*TableSampleClause)(nil), // 261: pg_query.TableSampleClause + (*WithCheckOption)(nil), // 262: pg_query.WithCheckOption + (*SortGroupClause)(nil), // 263: pg_query.SortGroupClause + (*GroupingSet)(nil), // 264: pg_query.GroupingSet + (*WindowClause)(nil), // 265: pg_query.WindowClause + (*ObjectWithArgs)(nil), // 266: pg_query.ObjectWithArgs + (*AccessPriv)(nil), // 267: pg_query.AccessPriv + (*CreateOpClassItem)(nil), // 268: pg_query.CreateOpClassItem + (*TableLikeClause)(nil), // 269: pg_query.TableLikeClause + (*FunctionParameter)(nil), // 270: pg_query.FunctionParameter + (*LockingClause)(nil), // 271: pg_query.LockingClause + (*RowMarkClause)(nil), // 272: pg_query.RowMarkClause + (*XmlSerialize)(nil), // 273: pg_query.XmlSerialize + (*WithClause)(nil), // 274: pg_query.WithClause + (*InferClause)(nil), // 275: pg_query.InferClause + (*OnConflictClause)(nil), // 276: pg_query.OnConflictClause + (*CommonTableExpr)(nil), // 277: pg_query.CommonTableExpr + (*RoleSpec)(nil), // 278: pg_query.RoleSpec + (*TriggerTransition)(nil), // 279: pg_query.TriggerTransition + (*PartitionElem)(nil), // 280: pg_query.PartitionElem + (*PartitionSpec)(nil), // 281: pg_query.PartitionSpec + (*PartitionBoundSpec)(nil), // 282: pg_query.PartitionBoundSpec + (*PartitionRangeDatum)(nil), // 283: pg_query.PartitionRangeDatum + (*PartitionCmd)(nil), // 284: pg_query.PartitionCmd + (*VacuumRelation)(nil), // 285: pg_query.VacuumRelation + (*InlineCodeBlock)(nil), // 286: pg_query.InlineCodeBlock + (*CallContext)(nil), // 287: pg_query.CallContext + (*ScanToken)(nil), // 288: pg_query.ScanToken +} +var file_pg_query_proto_depIdxs = []int32{ + 119, // 0: pg_query.ParseResult.stmts:type_name -> pg_query.RawStmt + 288, // 1: pg_query.ScanResult.tokens:type_name -> pg_query.ScanToken + 68, // 2: pg_query.Node.alias:type_name -> pg_query.Alias + 69, // 3: pg_query.Node.range_var:type_name -> pg_query.RangeVar + 70, // 4: pg_query.Node.table_func:type_name -> pg_query.TableFunc + 71, // 5: pg_query.Node.expr:type_name -> pg_query.Expr + 72, // 6: pg_query.Node.var:type_name -> pg_query.Var + 73, // 7: pg_query.Node.param:type_name -> pg_query.Param + 74, // 8: pg_query.Node.aggref:type_name -> pg_query.Aggref + 75, // 9: pg_query.Node.grouping_func:type_name -> pg_query.GroupingFunc + 76, // 10: pg_query.Node.window_func:type_name -> pg_query.WindowFunc + 77, // 11: pg_query.Node.subscripting_ref:type_name -> pg_query.SubscriptingRef + 78, // 12: pg_query.Node.func_expr:type_name -> pg_query.FuncExpr + 79, // 13: pg_query.Node.named_arg_expr:type_name -> pg_query.NamedArgExpr + 80, // 14: pg_query.Node.op_expr:type_name -> pg_query.OpExpr + 81, // 15: pg_query.Node.distinct_expr:type_name -> pg_query.DistinctExpr + 82, // 16: pg_query.Node.null_if_expr:type_name -> pg_query.NullIfExpr + 83, // 17: pg_query.Node.scalar_array_op_expr:type_name -> pg_query.ScalarArrayOpExpr + 84, // 18: pg_query.Node.bool_expr:type_name -> pg_query.BoolExpr + 85, // 19: pg_query.Node.sub_link:type_name -> pg_query.SubLink + 86, // 20: pg_query.Node.sub_plan:type_name -> pg_query.SubPlan + 87, // 21: pg_query.Node.alternative_sub_plan:type_name -> pg_query.AlternativeSubPlan + 88, // 22: pg_query.Node.field_select:type_name -> pg_query.FieldSelect + 89, // 23: pg_query.Node.field_store:type_name -> pg_query.FieldStore + 90, // 24: pg_query.Node.relabel_type:type_name -> pg_query.RelabelType + 91, // 25: pg_query.Node.coerce_via_io:type_name -> pg_query.CoerceViaIO + 92, // 26: pg_query.Node.array_coerce_expr:type_name -> pg_query.ArrayCoerceExpr + 93, // 27: pg_query.Node.convert_rowtype_expr:type_name -> pg_query.ConvertRowtypeExpr + 94, // 28: pg_query.Node.collate_expr:type_name -> pg_query.CollateExpr + 95, // 29: pg_query.Node.case_expr:type_name -> pg_query.CaseExpr + 96, // 30: pg_query.Node.case_when:type_name -> pg_query.CaseWhen + 97, // 31: pg_query.Node.case_test_expr:type_name -> pg_query.CaseTestExpr + 98, // 32: pg_query.Node.array_expr:type_name -> pg_query.ArrayExpr + 99, // 33: pg_query.Node.row_expr:type_name -> pg_query.RowExpr + 100, // 34: pg_query.Node.row_compare_expr:type_name -> pg_query.RowCompareExpr + 101, // 35: pg_query.Node.coalesce_expr:type_name -> pg_query.CoalesceExpr + 102, // 36: pg_query.Node.min_max_expr:type_name -> pg_query.MinMaxExpr + 103, // 37: pg_query.Node.sqlvalue_function:type_name -> pg_query.SQLValueFunction + 104, // 38: pg_query.Node.xml_expr:type_name -> pg_query.XmlExpr + 105, // 39: pg_query.Node.null_test:type_name -> pg_query.NullTest + 106, // 40: pg_query.Node.boolean_test:type_name -> pg_query.BooleanTest + 107, // 41: pg_query.Node.coerce_to_domain:type_name -> pg_query.CoerceToDomain + 108, // 42: pg_query.Node.coerce_to_domain_value:type_name -> pg_query.CoerceToDomainValue + 109, // 43: pg_query.Node.set_to_default:type_name -> pg_query.SetToDefault + 110, // 44: pg_query.Node.current_of_expr:type_name -> pg_query.CurrentOfExpr + 111, // 45: pg_query.Node.next_value_expr:type_name -> pg_query.NextValueExpr + 112, // 46: pg_query.Node.inference_elem:type_name -> pg_query.InferenceElem + 113, // 47: pg_query.Node.target_entry:type_name -> pg_query.TargetEntry + 114, // 48: pg_query.Node.range_tbl_ref:type_name -> pg_query.RangeTblRef + 115, // 49: pg_query.Node.join_expr:type_name -> pg_query.JoinExpr + 116, // 50: pg_query.Node.from_expr:type_name -> pg_query.FromExpr + 117, // 51: pg_query.Node.on_conflict_expr:type_name -> pg_query.OnConflictExpr + 118, // 52: pg_query.Node.into_clause:type_name -> pg_query.IntoClause + 119, // 53: pg_query.Node.raw_stmt:type_name -> pg_query.RawStmt + 120, // 54: pg_query.Node.query:type_name -> pg_query.Query + 121, // 55: pg_query.Node.insert_stmt:type_name -> pg_query.InsertStmt + 122, // 56: pg_query.Node.delete_stmt:type_name -> pg_query.DeleteStmt + 123, // 57: pg_query.Node.update_stmt:type_name -> pg_query.UpdateStmt + 124, // 58: pg_query.Node.select_stmt:type_name -> pg_query.SelectStmt + 125, // 59: pg_query.Node.alter_table_stmt:type_name -> pg_query.AlterTableStmt + 126, // 60: pg_query.Node.alter_table_cmd:type_name -> pg_query.AlterTableCmd + 127, // 61: pg_query.Node.alter_domain_stmt:type_name -> pg_query.AlterDomainStmt + 128, // 62: pg_query.Node.set_operation_stmt:type_name -> pg_query.SetOperationStmt + 129, // 63: pg_query.Node.grant_stmt:type_name -> pg_query.GrantStmt + 130, // 64: pg_query.Node.grant_role_stmt:type_name -> pg_query.GrantRoleStmt + 131, // 65: pg_query.Node.alter_default_privileges_stmt:type_name -> pg_query.AlterDefaultPrivilegesStmt + 132, // 66: pg_query.Node.close_portal_stmt:type_name -> pg_query.ClosePortalStmt + 133, // 67: pg_query.Node.cluster_stmt:type_name -> pg_query.ClusterStmt + 134, // 68: pg_query.Node.copy_stmt:type_name -> pg_query.CopyStmt + 135, // 69: pg_query.Node.create_stmt:type_name -> pg_query.CreateStmt + 136, // 70: pg_query.Node.define_stmt:type_name -> pg_query.DefineStmt + 137, // 71: pg_query.Node.drop_stmt:type_name -> pg_query.DropStmt + 138, // 72: pg_query.Node.truncate_stmt:type_name -> pg_query.TruncateStmt + 139, // 73: pg_query.Node.comment_stmt:type_name -> pg_query.CommentStmt + 140, // 74: pg_query.Node.fetch_stmt:type_name -> pg_query.FetchStmt + 141, // 75: pg_query.Node.index_stmt:type_name -> pg_query.IndexStmt + 142, // 76: pg_query.Node.create_function_stmt:type_name -> pg_query.CreateFunctionStmt + 143, // 77: pg_query.Node.alter_function_stmt:type_name -> pg_query.AlterFunctionStmt + 144, // 78: pg_query.Node.do_stmt:type_name -> pg_query.DoStmt + 145, // 79: pg_query.Node.rename_stmt:type_name -> pg_query.RenameStmt + 146, // 80: pg_query.Node.rule_stmt:type_name -> pg_query.RuleStmt + 147, // 81: pg_query.Node.notify_stmt:type_name -> pg_query.NotifyStmt + 148, // 82: pg_query.Node.listen_stmt:type_name -> pg_query.ListenStmt + 149, // 83: pg_query.Node.unlisten_stmt:type_name -> pg_query.UnlistenStmt + 150, // 84: pg_query.Node.transaction_stmt:type_name -> pg_query.TransactionStmt + 151, // 85: pg_query.Node.view_stmt:type_name -> pg_query.ViewStmt + 152, // 86: pg_query.Node.load_stmt:type_name -> pg_query.LoadStmt + 153, // 87: pg_query.Node.create_domain_stmt:type_name -> pg_query.CreateDomainStmt + 154, // 88: pg_query.Node.createdb_stmt:type_name -> pg_query.CreatedbStmt + 155, // 89: pg_query.Node.dropdb_stmt:type_name -> pg_query.DropdbStmt + 156, // 90: pg_query.Node.vacuum_stmt:type_name -> pg_query.VacuumStmt + 157, // 91: pg_query.Node.explain_stmt:type_name -> pg_query.ExplainStmt + 158, // 92: pg_query.Node.create_table_as_stmt:type_name -> pg_query.CreateTableAsStmt + 159, // 93: pg_query.Node.create_seq_stmt:type_name -> pg_query.CreateSeqStmt + 160, // 94: pg_query.Node.alter_seq_stmt:type_name -> pg_query.AlterSeqStmt + 161, // 95: pg_query.Node.variable_set_stmt:type_name -> pg_query.VariableSetStmt + 162, // 96: pg_query.Node.variable_show_stmt:type_name -> pg_query.VariableShowStmt + 163, // 97: pg_query.Node.discard_stmt:type_name -> pg_query.DiscardStmt + 164, // 98: pg_query.Node.create_trig_stmt:type_name -> pg_query.CreateTrigStmt + 165, // 99: pg_query.Node.create_plang_stmt:type_name -> pg_query.CreatePLangStmt + 166, // 100: pg_query.Node.create_role_stmt:type_name -> pg_query.CreateRoleStmt + 167, // 101: pg_query.Node.alter_role_stmt:type_name -> pg_query.AlterRoleStmt + 168, // 102: pg_query.Node.drop_role_stmt:type_name -> pg_query.DropRoleStmt + 169, // 103: pg_query.Node.lock_stmt:type_name -> pg_query.LockStmt + 170, // 104: pg_query.Node.constraints_set_stmt:type_name -> pg_query.ConstraintsSetStmt + 171, // 105: pg_query.Node.reindex_stmt:type_name -> pg_query.ReindexStmt + 172, // 106: pg_query.Node.check_point_stmt:type_name -> pg_query.CheckPointStmt + 173, // 107: pg_query.Node.create_schema_stmt:type_name -> pg_query.CreateSchemaStmt + 174, // 108: pg_query.Node.alter_database_stmt:type_name -> pg_query.AlterDatabaseStmt + 175, // 109: pg_query.Node.alter_database_set_stmt:type_name -> pg_query.AlterDatabaseSetStmt + 176, // 110: pg_query.Node.alter_role_set_stmt:type_name -> pg_query.AlterRoleSetStmt + 177, // 111: pg_query.Node.create_conversion_stmt:type_name -> pg_query.CreateConversionStmt + 178, // 112: pg_query.Node.create_cast_stmt:type_name -> pg_query.CreateCastStmt + 179, // 113: pg_query.Node.create_op_class_stmt:type_name -> pg_query.CreateOpClassStmt + 180, // 114: pg_query.Node.create_op_family_stmt:type_name -> pg_query.CreateOpFamilyStmt + 181, // 115: pg_query.Node.alter_op_family_stmt:type_name -> pg_query.AlterOpFamilyStmt + 182, // 116: pg_query.Node.prepare_stmt:type_name -> pg_query.PrepareStmt + 183, // 117: pg_query.Node.execute_stmt:type_name -> pg_query.ExecuteStmt + 184, // 118: pg_query.Node.deallocate_stmt:type_name -> pg_query.DeallocateStmt + 185, // 119: pg_query.Node.declare_cursor_stmt:type_name -> pg_query.DeclareCursorStmt + 186, // 120: pg_query.Node.create_table_space_stmt:type_name -> pg_query.CreateTableSpaceStmt + 187, // 121: pg_query.Node.drop_table_space_stmt:type_name -> pg_query.DropTableSpaceStmt + 188, // 122: pg_query.Node.alter_object_depends_stmt:type_name -> pg_query.AlterObjectDependsStmt + 189, // 123: pg_query.Node.alter_object_schema_stmt:type_name -> pg_query.AlterObjectSchemaStmt + 190, // 124: pg_query.Node.alter_owner_stmt:type_name -> pg_query.AlterOwnerStmt + 191, // 125: pg_query.Node.alter_operator_stmt:type_name -> pg_query.AlterOperatorStmt + 192, // 126: pg_query.Node.alter_type_stmt:type_name -> pg_query.AlterTypeStmt + 193, // 127: pg_query.Node.drop_owned_stmt:type_name -> pg_query.DropOwnedStmt + 194, // 128: pg_query.Node.reassign_owned_stmt:type_name -> pg_query.ReassignOwnedStmt + 195, // 129: pg_query.Node.composite_type_stmt:type_name -> pg_query.CompositeTypeStmt + 196, // 130: pg_query.Node.create_enum_stmt:type_name -> pg_query.CreateEnumStmt + 197, // 131: pg_query.Node.create_range_stmt:type_name -> pg_query.CreateRangeStmt + 198, // 132: pg_query.Node.alter_enum_stmt:type_name -> pg_query.AlterEnumStmt + 199, // 133: pg_query.Node.alter_tsdictionary_stmt:type_name -> pg_query.AlterTSDictionaryStmt + 200, // 134: pg_query.Node.alter_tsconfiguration_stmt:type_name -> pg_query.AlterTSConfigurationStmt + 201, // 135: pg_query.Node.create_fdw_stmt:type_name -> pg_query.CreateFdwStmt + 202, // 136: pg_query.Node.alter_fdw_stmt:type_name -> pg_query.AlterFdwStmt + 203, // 137: pg_query.Node.create_foreign_server_stmt:type_name -> pg_query.CreateForeignServerStmt + 204, // 138: pg_query.Node.alter_foreign_server_stmt:type_name -> pg_query.AlterForeignServerStmt + 205, // 139: pg_query.Node.create_user_mapping_stmt:type_name -> pg_query.CreateUserMappingStmt + 206, // 140: pg_query.Node.alter_user_mapping_stmt:type_name -> pg_query.AlterUserMappingStmt + 207, // 141: pg_query.Node.drop_user_mapping_stmt:type_name -> pg_query.DropUserMappingStmt + 208, // 142: pg_query.Node.alter_table_space_options_stmt:type_name -> pg_query.AlterTableSpaceOptionsStmt + 209, // 143: pg_query.Node.alter_table_move_all_stmt:type_name -> pg_query.AlterTableMoveAllStmt + 210, // 144: pg_query.Node.sec_label_stmt:type_name -> pg_query.SecLabelStmt + 211, // 145: pg_query.Node.create_foreign_table_stmt:type_name -> pg_query.CreateForeignTableStmt + 212, // 146: pg_query.Node.import_foreign_schema_stmt:type_name -> pg_query.ImportForeignSchemaStmt + 213, // 147: pg_query.Node.create_extension_stmt:type_name -> pg_query.CreateExtensionStmt + 214, // 148: pg_query.Node.alter_extension_stmt:type_name -> pg_query.AlterExtensionStmt + 215, // 149: pg_query.Node.alter_extension_contents_stmt:type_name -> pg_query.AlterExtensionContentsStmt + 216, // 150: pg_query.Node.create_event_trig_stmt:type_name -> pg_query.CreateEventTrigStmt + 217, // 151: pg_query.Node.alter_event_trig_stmt:type_name -> pg_query.AlterEventTrigStmt + 218, // 152: pg_query.Node.refresh_mat_view_stmt:type_name -> pg_query.RefreshMatViewStmt + 219, // 153: pg_query.Node.replica_identity_stmt:type_name -> pg_query.ReplicaIdentityStmt + 220, // 154: pg_query.Node.alter_system_stmt:type_name -> pg_query.AlterSystemStmt + 221, // 155: pg_query.Node.create_policy_stmt:type_name -> pg_query.CreatePolicyStmt + 222, // 156: pg_query.Node.alter_policy_stmt:type_name -> pg_query.AlterPolicyStmt + 223, // 157: pg_query.Node.create_transform_stmt:type_name -> pg_query.CreateTransformStmt + 224, // 158: pg_query.Node.create_am_stmt:type_name -> pg_query.CreateAmStmt + 225, // 159: pg_query.Node.create_publication_stmt:type_name -> pg_query.CreatePublicationStmt + 226, // 160: pg_query.Node.alter_publication_stmt:type_name -> pg_query.AlterPublicationStmt + 227, // 161: pg_query.Node.create_subscription_stmt:type_name -> pg_query.CreateSubscriptionStmt + 228, // 162: pg_query.Node.alter_subscription_stmt:type_name -> pg_query.AlterSubscriptionStmt + 229, // 163: pg_query.Node.drop_subscription_stmt:type_name -> pg_query.DropSubscriptionStmt + 230, // 164: pg_query.Node.create_stats_stmt:type_name -> pg_query.CreateStatsStmt + 231, // 165: pg_query.Node.alter_collation_stmt:type_name -> pg_query.AlterCollationStmt + 232, // 166: pg_query.Node.call_stmt:type_name -> pg_query.CallStmt + 233, // 167: pg_query.Node.alter_stats_stmt:type_name -> pg_query.AlterStatsStmt + 234, // 168: pg_query.Node.a_expr:type_name -> pg_query.A_Expr + 235, // 169: pg_query.Node.column_ref:type_name -> pg_query.ColumnRef + 236, // 170: pg_query.Node.param_ref:type_name -> pg_query.ParamRef + 237, // 171: pg_query.Node.a_const:type_name -> pg_query.A_Const + 238, // 172: pg_query.Node.func_call:type_name -> pg_query.FuncCall + 239, // 173: pg_query.Node.a_star:type_name -> pg_query.A_Star + 240, // 174: pg_query.Node.a_indices:type_name -> pg_query.A_Indices + 241, // 175: pg_query.Node.a_indirection:type_name -> pg_query.A_Indirection + 242, // 176: pg_query.Node.a_array_expr:type_name -> pg_query.A_ArrayExpr + 243, // 177: pg_query.Node.res_target:type_name -> pg_query.ResTarget + 244, // 178: pg_query.Node.multi_assign_ref:type_name -> pg_query.MultiAssignRef + 245, // 179: pg_query.Node.type_cast:type_name -> pg_query.TypeCast + 246, // 180: pg_query.Node.collate_clause:type_name -> pg_query.CollateClause + 247, // 181: pg_query.Node.sort_by:type_name -> pg_query.SortBy + 248, // 182: pg_query.Node.window_def:type_name -> pg_query.WindowDef + 249, // 183: pg_query.Node.range_subselect:type_name -> pg_query.RangeSubselect + 250, // 184: pg_query.Node.range_function:type_name -> pg_query.RangeFunction + 251, // 185: pg_query.Node.range_table_sample:type_name -> pg_query.RangeTableSample + 252, // 186: pg_query.Node.range_table_func:type_name -> pg_query.RangeTableFunc + 253, // 187: pg_query.Node.range_table_func_col:type_name -> pg_query.RangeTableFuncCol + 254, // 188: pg_query.Node.type_name:type_name -> pg_query.TypeName + 255, // 189: pg_query.Node.column_def:type_name -> pg_query.ColumnDef + 256, // 190: pg_query.Node.index_elem:type_name -> pg_query.IndexElem + 257, // 191: pg_query.Node.constraint:type_name -> pg_query.Constraint + 258, // 192: pg_query.Node.def_elem:type_name -> pg_query.DefElem + 259, // 193: pg_query.Node.range_tbl_entry:type_name -> pg_query.RangeTblEntry + 260, // 194: pg_query.Node.range_tbl_function:type_name -> pg_query.RangeTblFunction + 261, // 195: pg_query.Node.table_sample_clause:type_name -> pg_query.TableSampleClause + 262, // 196: pg_query.Node.with_check_option:type_name -> pg_query.WithCheckOption + 263, // 197: pg_query.Node.sort_group_clause:type_name -> pg_query.SortGroupClause + 264, // 198: pg_query.Node.grouping_set:type_name -> pg_query.GroupingSet + 265, // 199: pg_query.Node.window_clause:type_name -> pg_query.WindowClause + 266, // 200: pg_query.Node.object_with_args:type_name -> pg_query.ObjectWithArgs + 267, // 201: pg_query.Node.access_priv:type_name -> pg_query.AccessPriv + 268, // 202: pg_query.Node.create_op_class_item:type_name -> pg_query.CreateOpClassItem + 269, // 203: pg_query.Node.table_like_clause:type_name -> pg_query.TableLikeClause + 270, // 204: pg_query.Node.function_parameter:type_name -> pg_query.FunctionParameter + 271, // 205: pg_query.Node.locking_clause:type_name -> pg_query.LockingClause + 272, // 206: pg_query.Node.row_mark_clause:type_name -> pg_query.RowMarkClause + 273, // 207: pg_query.Node.xml_serialize:type_name -> pg_query.XmlSerialize + 274, // 208: pg_query.Node.with_clause:type_name -> pg_query.WithClause + 275, // 209: pg_query.Node.infer_clause:type_name -> pg_query.InferClause + 276, // 210: pg_query.Node.on_conflict_clause:type_name -> pg_query.OnConflictClause + 277, // 211: pg_query.Node.common_table_expr:type_name -> pg_query.CommonTableExpr + 278, // 212: pg_query.Node.role_spec:type_name -> pg_query.RoleSpec + 279, // 213: pg_query.Node.trigger_transition:type_name -> pg_query.TriggerTransition + 280, // 214: pg_query.Node.partition_elem:type_name -> pg_query.PartitionElem + 281, // 215: pg_query.Node.partition_spec:type_name -> pg_query.PartitionSpec + 282, // 216: pg_query.Node.partition_bound_spec:type_name -> pg_query.PartitionBoundSpec + 283, // 217: pg_query.Node.partition_range_datum:type_name -> pg_query.PartitionRangeDatum + 284, // 218: pg_query.Node.partition_cmd:type_name -> pg_query.PartitionCmd + 285, // 219: pg_query.Node.vacuum_relation:type_name -> pg_query.VacuumRelation + 286, // 220: pg_query.Node.inline_code_block:type_name -> pg_query.InlineCodeBlock + 287, // 221: pg_query.Node.call_context:type_name -> pg_query.CallContext + 60, // 222: pg_query.Node.integer:type_name -> pg_query.Integer + 61, // 223: pg_query.Node.float:type_name -> pg_query.Float + 62, // 224: pg_query.Node.string:type_name -> pg_query.String + 63, // 225: pg_query.Node.bit_string:type_name -> pg_query.BitString + 64, // 226: pg_query.Node.null:type_name -> pg_query.Null + 65, // 227: pg_query.Node.list:type_name -> pg_query.List + 67, // 228: pg_query.Node.int_list:type_name -> pg_query.IntList + 66, // 229: pg_query.Node.oid_list:type_name -> pg_query.OidList + 59, // 230: pg_query.List.items:type_name -> pg_query.Node + 59, // 231: pg_query.OidList.items:type_name -> pg_query.Node + 59, // 232: pg_query.IntList.items:type_name -> pg_query.Node + 59, // 233: pg_query.Alias.colnames:type_name -> pg_query.Node + 68, // 234: pg_query.RangeVar.alias:type_name -> pg_query.Alias + 59, // 235: pg_query.TableFunc.ns_uris:type_name -> pg_query.Node + 59, // 236: pg_query.TableFunc.ns_names:type_name -> pg_query.Node + 59, // 237: pg_query.TableFunc.docexpr:type_name -> pg_query.Node + 59, // 238: pg_query.TableFunc.rowexpr:type_name -> pg_query.Node + 59, // 239: pg_query.TableFunc.colnames:type_name -> pg_query.Node + 59, // 240: pg_query.TableFunc.coltypes:type_name -> pg_query.Node + 59, // 241: pg_query.TableFunc.coltypmods:type_name -> pg_query.Node + 59, // 242: pg_query.TableFunc.colcollations:type_name -> pg_query.Node + 59, // 243: pg_query.TableFunc.colexprs:type_name -> pg_query.Node + 59, // 244: pg_query.TableFunc.coldefexprs:type_name -> pg_query.Node + 59, // 245: pg_query.Var.xpr:type_name -> pg_query.Node + 59, // 246: pg_query.Param.xpr:type_name -> pg_query.Node + 32, // 247: pg_query.Param.paramkind:type_name -> pg_query.ParamKind + 59, // 248: pg_query.Aggref.xpr:type_name -> pg_query.Node + 59, // 249: pg_query.Aggref.aggargtypes:type_name -> pg_query.Node + 59, // 250: pg_query.Aggref.aggdirectargs:type_name -> pg_query.Node + 59, // 251: pg_query.Aggref.args:type_name -> pg_query.Node + 59, // 252: pg_query.Aggref.aggorder:type_name -> pg_query.Node + 59, // 253: pg_query.Aggref.aggdistinct:type_name -> pg_query.Node + 59, // 254: pg_query.Aggref.aggfilter:type_name -> pg_query.Node + 47, // 255: pg_query.Aggref.aggsplit:type_name -> pg_query.AggSplit + 59, // 256: pg_query.GroupingFunc.xpr:type_name -> pg_query.Node + 59, // 257: pg_query.GroupingFunc.args:type_name -> pg_query.Node + 59, // 258: pg_query.GroupingFunc.refs:type_name -> pg_query.Node + 59, // 259: pg_query.GroupingFunc.cols:type_name -> pg_query.Node + 59, // 260: pg_query.WindowFunc.xpr:type_name -> pg_query.Node + 59, // 261: pg_query.WindowFunc.args:type_name -> pg_query.Node + 59, // 262: pg_query.WindowFunc.aggfilter:type_name -> pg_query.Node + 59, // 263: pg_query.SubscriptingRef.xpr:type_name -> pg_query.Node + 59, // 264: pg_query.SubscriptingRef.refupperindexpr:type_name -> pg_query.Node + 59, // 265: pg_query.SubscriptingRef.reflowerindexpr:type_name -> pg_query.Node + 59, // 266: pg_query.SubscriptingRef.refexpr:type_name -> pg_query.Node + 59, // 267: pg_query.SubscriptingRef.refassgnexpr:type_name -> pg_query.Node + 59, // 268: pg_query.FuncExpr.xpr:type_name -> pg_query.Node + 34, // 269: pg_query.FuncExpr.funcformat:type_name -> pg_query.CoercionForm + 59, // 270: pg_query.FuncExpr.args:type_name -> pg_query.Node + 59, // 271: pg_query.NamedArgExpr.xpr:type_name -> pg_query.Node + 59, // 272: pg_query.NamedArgExpr.arg:type_name -> pg_query.Node + 59, // 273: pg_query.OpExpr.xpr:type_name -> pg_query.Node + 59, // 274: pg_query.OpExpr.args:type_name -> pg_query.Node + 59, // 275: pg_query.DistinctExpr.xpr:type_name -> pg_query.Node + 59, // 276: pg_query.DistinctExpr.args:type_name -> pg_query.Node + 59, // 277: pg_query.NullIfExpr.xpr:type_name -> pg_query.Node + 59, // 278: pg_query.NullIfExpr.args:type_name -> pg_query.Node + 59, // 279: pg_query.ScalarArrayOpExpr.xpr:type_name -> pg_query.Node + 59, // 280: pg_query.ScalarArrayOpExpr.args:type_name -> pg_query.Node + 59, // 281: pg_query.BoolExpr.xpr:type_name -> pg_query.Node + 35, // 282: pg_query.BoolExpr.boolop:type_name -> pg_query.BoolExprType + 59, // 283: pg_query.BoolExpr.args:type_name -> pg_query.Node + 59, // 284: pg_query.SubLink.xpr:type_name -> pg_query.Node + 36, // 285: pg_query.SubLink.sub_link_type:type_name -> pg_query.SubLinkType + 59, // 286: pg_query.SubLink.testexpr:type_name -> pg_query.Node + 59, // 287: pg_query.SubLink.oper_name:type_name -> pg_query.Node + 59, // 288: pg_query.SubLink.subselect:type_name -> pg_query.Node + 59, // 289: pg_query.SubPlan.xpr:type_name -> pg_query.Node + 36, // 290: pg_query.SubPlan.sub_link_type:type_name -> pg_query.SubLinkType + 59, // 291: pg_query.SubPlan.testexpr:type_name -> pg_query.Node + 59, // 292: pg_query.SubPlan.param_ids:type_name -> pg_query.Node + 59, // 293: pg_query.SubPlan.set_param:type_name -> pg_query.Node + 59, // 294: pg_query.SubPlan.par_param:type_name -> pg_query.Node + 59, // 295: pg_query.SubPlan.args:type_name -> pg_query.Node + 59, // 296: pg_query.AlternativeSubPlan.xpr:type_name -> pg_query.Node + 59, // 297: pg_query.AlternativeSubPlan.subplans:type_name -> pg_query.Node + 59, // 298: pg_query.FieldSelect.xpr:type_name -> pg_query.Node + 59, // 299: pg_query.FieldSelect.arg:type_name -> pg_query.Node + 59, // 300: pg_query.FieldStore.xpr:type_name -> pg_query.Node + 59, // 301: pg_query.FieldStore.arg:type_name -> pg_query.Node + 59, // 302: pg_query.FieldStore.newvals:type_name -> pg_query.Node + 59, // 303: pg_query.FieldStore.fieldnums:type_name -> pg_query.Node + 59, // 304: pg_query.RelabelType.xpr:type_name -> pg_query.Node + 59, // 305: pg_query.RelabelType.arg:type_name -> pg_query.Node + 34, // 306: pg_query.RelabelType.relabelformat:type_name -> pg_query.CoercionForm + 59, // 307: pg_query.CoerceViaIO.xpr:type_name -> pg_query.Node + 59, // 308: pg_query.CoerceViaIO.arg:type_name -> pg_query.Node + 34, // 309: pg_query.CoerceViaIO.coerceformat:type_name -> pg_query.CoercionForm + 59, // 310: pg_query.ArrayCoerceExpr.xpr:type_name -> pg_query.Node + 59, // 311: pg_query.ArrayCoerceExpr.arg:type_name -> pg_query.Node + 59, // 312: pg_query.ArrayCoerceExpr.elemexpr:type_name -> pg_query.Node + 34, // 313: pg_query.ArrayCoerceExpr.coerceformat:type_name -> pg_query.CoercionForm + 59, // 314: pg_query.ConvertRowtypeExpr.xpr:type_name -> pg_query.Node + 59, // 315: pg_query.ConvertRowtypeExpr.arg:type_name -> pg_query.Node + 34, // 316: pg_query.ConvertRowtypeExpr.convertformat:type_name -> pg_query.CoercionForm + 59, // 317: pg_query.CollateExpr.xpr:type_name -> pg_query.Node + 59, // 318: pg_query.CollateExpr.arg:type_name -> pg_query.Node + 59, // 319: pg_query.CaseExpr.xpr:type_name -> pg_query.Node + 59, // 320: pg_query.CaseExpr.arg:type_name -> pg_query.Node + 59, // 321: pg_query.CaseExpr.args:type_name -> pg_query.Node + 59, // 322: pg_query.CaseExpr.defresult:type_name -> pg_query.Node + 59, // 323: pg_query.CaseWhen.xpr:type_name -> pg_query.Node + 59, // 324: pg_query.CaseWhen.expr:type_name -> pg_query.Node + 59, // 325: pg_query.CaseWhen.result:type_name -> pg_query.Node + 59, // 326: pg_query.CaseTestExpr.xpr:type_name -> pg_query.Node + 59, // 327: pg_query.ArrayExpr.xpr:type_name -> pg_query.Node + 59, // 328: pg_query.ArrayExpr.elements:type_name -> pg_query.Node + 59, // 329: pg_query.RowExpr.xpr:type_name -> pg_query.Node + 59, // 330: pg_query.RowExpr.args:type_name -> pg_query.Node + 34, // 331: pg_query.RowExpr.row_format:type_name -> pg_query.CoercionForm + 59, // 332: pg_query.RowExpr.colnames:type_name -> pg_query.Node + 59, // 333: pg_query.RowCompareExpr.xpr:type_name -> pg_query.Node + 37, // 334: pg_query.RowCompareExpr.rctype:type_name -> pg_query.RowCompareType + 59, // 335: pg_query.RowCompareExpr.opnos:type_name -> pg_query.Node + 59, // 336: pg_query.RowCompareExpr.opfamilies:type_name -> pg_query.Node + 59, // 337: pg_query.RowCompareExpr.inputcollids:type_name -> pg_query.Node + 59, // 338: pg_query.RowCompareExpr.largs:type_name -> pg_query.Node + 59, // 339: pg_query.RowCompareExpr.rargs:type_name -> pg_query.Node + 59, // 340: pg_query.CoalesceExpr.xpr:type_name -> pg_query.Node + 59, // 341: pg_query.CoalesceExpr.args:type_name -> pg_query.Node + 59, // 342: pg_query.MinMaxExpr.xpr:type_name -> pg_query.Node + 38, // 343: pg_query.MinMaxExpr.op:type_name -> pg_query.MinMaxOp + 59, // 344: pg_query.MinMaxExpr.args:type_name -> pg_query.Node + 59, // 345: pg_query.SQLValueFunction.xpr:type_name -> pg_query.Node + 39, // 346: pg_query.SQLValueFunction.op:type_name -> pg_query.SQLValueFunctionOp + 59, // 347: pg_query.XmlExpr.xpr:type_name -> pg_query.Node + 40, // 348: pg_query.XmlExpr.op:type_name -> pg_query.XmlExprOp + 59, // 349: pg_query.XmlExpr.named_args:type_name -> pg_query.Node + 59, // 350: pg_query.XmlExpr.arg_names:type_name -> pg_query.Node + 59, // 351: pg_query.XmlExpr.args:type_name -> pg_query.Node + 41, // 352: pg_query.XmlExpr.xmloption:type_name -> pg_query.XmlOptionType + 59, // 353: pg_query.NullTest.xpr:type_name -> pg_query.Node + 59, // 354: pg_query.NullTest.arg:type_name -> pg_query.Node + 42, // 355: pg_query.NullTest.nulltesttype:type_name -> pg_query.NullTestType + 59, // 356: pg_query.BooleanTest.xpr:type_name -> pg_query.Node + 59, // 357: pg_query.BooleanTest.arg:type_name -> pg_query.Node + 43, // 358: pg_query.BooleanTest.booltesttype:type_name -> pg_query.BoolTestType + 59, // 359: pg_query.CoerceToDomain.xpr:type_name -> pg_query.Node + 59, // 360: pg_query.CoerceToDomain.arg:type_name -> pg_query.Node + 34, // 361: pg_query.CoerceToDomain.coercionformat:type_name -> pg_query.CoercionForm + 59, // 362: pg_query.CoerceToDomainValue.xpr:type_name -> pg_query.Node + 59, // 363: pg_query.SetToDefault.xpr:type_name -> pg_query.Node + 59, // 364: pg_query.CurrentOfExpr.xpr:type_name -> pg_query.Node + 59, // 365: pg_query.NextValueExpr.xpr:type_name -> pg_query.Node + 59, // 366: pg_query.InferenceElem.xpr:type_name -> pg_query.Node + 59, // 367: pg_query.InferenceElem.expr:type_name -> pg_query.Node + 59, // 368: pg_query.TargetEntry.xpr:type_name -> pg_query.Node + 59, // 369: pg_query.TargetEntry.expr:type_name -> pg_query.Node + 45, // 370: pg_query.JoinExpr.jointype:type_name -> pg_query.JoinType + 59, // 371: pg_query.JoinExpr.larg:type_name -> pg_query.Node + 59, // 372: pg_query.JoinExpr.rarg:type_name -> pg_query.Node + 59, // 373: pg_query.JoinExpr.using_clause:type_name -> pg_query.Node + 59, // 374: pg_query.JoinExpr.quals:type_name -> pg_query.Node + 68, // 375: pg_query.JoinExpr.alias:type_name -> pg_query.Alias + 59, // 376: pg_query.FromExpr.fromlist:type_name -> pg_query.Node + 59, // 377: pg_query.FromExpr.quals:type_name -> pg_query.Node + 50, // 378: pg_query.OnConflictExpr.action:type_name -> pg_query.OnConflictAction + 59, // 379: pg_query.OnConflictExpr.arbiter_elems:type_name -> pg_query.Node + 59, // 380: pg_query.OnConflictExpr.arbiter_where:type_name -> pg_query.Node + 59, // 381: pg_query.OnConflictExpr.on_conflict_set:type_name -> pg_query.Node + 59, // 382: pg_query.OnConflictExpr.on_conflict_where:type_name -> pg_query.Node + 59, // 383: pg_query.OnConflictExpr.excl_rel_tlist:type_name -> pg_query.Node + 69, // 384: pg_query.IntoClause.rel:type_name -> pg_query.RangeVar + 59, // 385: pg_query.IntoClause.col_names:type_name -> pg_query.Node + 59, // 386: pg_query.IntoClause.options:type_name -> pg_query.Node + 31, // 387: pg_query.IntoClause.on_commit:type_name -> pg_query.OnCommitAction + 59, // 388: pg_query.IntoClause.view_query:type_name -> pg_query.Node + 59, // 389: pg_query.RawStmt.stmt:type_name -> pg_query.Node + 44, // 390: pg_query.Query.command_type:type_name -> pg_query.CmdType + 1, // 391: pg_query.Query.query_source:type_name -> pg_query.QuerySource + 59, // 392: pg_query.Query.utility_stmt:type_name -> pg_query.Node + 59, // 393: pg_query.Query.cte_list:type_name -> pg_query.Node + 59, // 394: pg_query.Query.rtable:type_name -> pg_query.Node + 116, // 395: pg_query.Query.jointree:type_name -> pg_query.FromExpr + 59, // 396: pg_query.Query.target_list:type_name -> pg_query.Node + 0, // 397: pg_query.Query.override:type_name -> pg_query.OverridingKind + 117, // 398: pg_query.Query.on_conflict:type_name -> pg_query.OnConflictExpr + 59, // 399: pg_query.Query.returning_list:type_name -> pg_query.Node + 59, // 400: pg_query.Query.group_clause:type_name -> pg_query.Node + 59, // 401: pg_query.Query.grouping_sets:type_name -> pg_query.Node + 59, // 402: pg_query.Query.having_qual:type_name -> pg_query.Node + 59, // 403: pg_query.Query.window_clause:type_name -> pg_query.Node + 59, // 404: pg_query.Query.distinct_clause:type_name -> pg_query.Node + 59, // 405: pg_query.Query.sort_clause:type_name -> pg_query.Node + 59, // 406: pg_query.Query.limit_offset:type_name -> pg_query.Node + 59, // 407: pg_query.Query.limit_count:type_name -> pg_query.Node + 51, // 408: pg_query.Query.limit_option:type_name -> pg_query.LimitOption + 59, // 409: pg_query.Query.row_marks:type_name -> pg_query.Node + 59, // 410: pg_query.Query.set_operations:type_name -> pg_query.Node + 59, // 411: pg_query.Query.constraint_deps:type_name -> pg_query.Node + 59, // 412: pg_query.Query.with_check_options:type_name -> pg_query.Node + 69, // 413: pg_query.InsertStmt.relation:type_name -> pg_query.RangeVar + 59, // 414: pg_query.InsertStmt.cols:type_name -> pg_query.Node + 59, // 415: pg_query.InsertStmt.select_stmt:type_name -> pg_query.Node + 276, // 416: pg_query.InsertStmt.on_conflict_clause:type_name -> pg_query.OnConflictClause + 59, // 417: pg_query.InsertStmt.returning_list:type_name -> pg_query.Node + 274, // 418: pg_query.InsertStmt.with_clause:type_name -> pg_query.WithClause + 0, // 419: pg_query.InsertStmt.override:type_name -> pg_query.OverridingKind + 69, // 420: pg_query.DeleteStmt.relation:type_name -> pg_query.RangeVar + 59, // 421: pg_query.DeleteStmt.using_clause:type_name -> pg_query.Node + 59, // 422: pg_query.DeleteStmt.where_clause:type_name -> pg_query.Node + 59, // 423: pg_query.DeleteStmt.returning_list:type_name -> pg_query.Node + 274, // 424: pg_query.DeleteStmt.with_clause:type_name -> pg_query.WithClause + 69, // 425: pg_query.UpdateStmt.relation:type_name -> pg_query.RangeVar + 59, // 426: pg_query.UpdateStmt.target_list:type_name -> pg_query.Node + 59, // 427: pg_query.UpdateStmt.where_clause:type_name -> pg_query.Node + 59, // 428: pg_query.UpdateStmt.from_clause:type_name -> pg_query.Node + 59, // 429: pg_query.UpdateStmt.returning_list:type_name -> pg_query.Node + 274, // 430: pg_query.UpdateStmt.with_clause:type_name -> pg_query.WithClause + 59, // 431: pg_query.SelectStmt.distinct_clause:type_name -> pg_query.Node + 118, // 432: pg_query.SelectStmt.into_clause:type_name -> pg_query.IntoClause + 59, // 433: pg_query.SelectStmt.target_list:type_name -> pg_query.Node + 59, // 434: pg_query.SelectStmt.from_clause:type_name -> pg_query.Node + 59, // 435: pg_query.SelectStmt.where_clause:type_name -> pg_query.Node + 59, // 436: pg_query.SelectStmt.group_clause:type_name -> pg_query.Node + 59, // 437: pg_query.SelectStmt.having_clause:type_name -> pg_query.Node + 59, // 438: pg_query.SelectStmt.window_clause:type_name -> pg_query.Node + 59, // 439: pg_query.SelectStmt.values_lists:type_name -> pg_query.Node + 59, // 440: pg_query.SelectStmt.sort_clause:type_name -> pg_query.Node + 59, // 441: pg_query.SelectStmt.limit_offset:type_name -> pg_query.Node + 59, // 442: pg_query.SelectStmt.limit_count:type_name -> pg_query.Node + 51, // 443: pg_query.SelectStmt.limit_option:type_name -> pg_query.LimitOption + 59, // 444: pg_query.SelectStmt.locking_clause:type_name -> pg_query.Node + 274, // 445: pg_query.SelectStmt.with_clause:type_name -> pg_query.WithClause + 13, // 446: pg_query.SelectStmt.op:type_name -> pg_query.SetOperation + 124, // 447: pg_query.SelectStmt.larg:type_name -> pg_query.SelectStmt + 124, // 448: pg_query.SelectStmt.rarg:type_name -> pg_query.SelectStmt + 69, // 449: pg_query.AlterTableStmt.relation:type_name -> pg_query.RangeVar + 59, // 450: pg_query.AlterTableStmt.cmds:type_name -> pg_query.Node + 14, // 451: pg_query.AlterTableStmt.relkind:type_name -> pg_query.ObjectType + 16, // 452: pg_query.AlterTableCmd.subtype:type_name -> pg_query.AlterTableType + 278, // 453: pg_query.AlterTableCmd.newowner:type_name -> pg_query.RoleSpec + 59, // 454: pg_query.AlterTableCmd.def:type_name -> pg_query.Node + 15, // 455: pg_query.AlterTableCmd.behavior:type_name -> pg_query.DropBehavior + 59, // 456: pg_query.AlterDomainStmt.type_name:type_name -> pg_query.Node + 59, // 457: pg_query.AlterDomainStmt.def:type_name -> pg_query.Node + 15, // 458: pg_query.AlterDomainStmt.behavior:type_name -> pg_query.DropBehavior + 13, // 459: pg_query.SetOperationStmt.op:type_name -> pg_query.SetOperation + 59, // 460: pg_query.SetOperationStmt.larg:type_name -> pg_query.Node + 59, // 461: pg_query.SetOperationStmt.rarg:type_name -> pg_query.Node + 59, // 462: pg_query.SetOperationStmt.col_types:type_name -> pg_query.Node + 59, // 463: pg_query.SetOperationStmt.col_typmods:type_name -> pg_query.Node + 59, // 464: pg_query.SetOperationStmt.col_collations:type_name -> pg_query.Node + 59, // 465: pg_query.SetOperationStmt.group_clauses:type_name -> pg_query.Node + 17, // 466: pg_query.GrantStmt.targtype:type_name -> pg_query.GrantTargetType + 14, // 467: pg_query.GrantStmt.objtype:type_name -> pg_query.ObjectType + 59, // 468: pg_query.GrantStmt.objects:type_name -> pg_query.Node + 59, // 469: pg_query.GrantStmt.privileges:type_name -> pg_query.Node + 59, // 470: pg_query.GrantStmt.grantees:type_name -> pg_query.Node + 15, // 471: pg_query.GrantStmt.behavior:type_name -> pg_query.DropBehavior + 59, // 472: pg_query.GrantRoleStmt.granted_roles:type_name -> pg_query.Node + 59, // 473: pg_query.GrantRoleStmt.grantee_roles:type_name -> pg_query.Node + 278, // 474: pg_query.GrantRoleStmt.grantor:type_name -> pg_query.RoleSpec + 15, // 475: pg_query.GrantRoleStmt.behavior:type_name -> pg_query.DropBehavior + 59, // 476: pg_query.AlterDefaultPrivilegesStmt.options:type_name -> pg_query.Node + 129, // 477: pg_query.AlterDefaultPrivilegesStmt.action:type_name -> pg_query.GrantStmt + 69, // 478: pg_query.ClusterStmt.relation:type_name -> pg_query.RangeVar + 69, // 479: pg_query.CopyStmt.relation:type_name -> pg_query.RangeVar + 59, // 480: pg_query.CopyStmt.query:type_name -> pg_query.Node + 59, // 481: pg_query.CopyStmt.attlist:type_name -> pg_query.Node + 59, // 482: pg_query.CopyStmt.options:type_name -> pg_query.Node + 59, // 483: pg_query.CopyStmt.where_clause:type_name -> pg_query.Node + 69, // 484: pg_query.CreateStmt.relation:type_name -> pg_query.RangeVar + 59, // 485: pg_query.CreateStmt.table_elts:type_name -> pg_query.Node + 59, // 486: pg_query.CreateStmt.inh_relations:type_name -> pg_query.Node + 282, // 487: pg_query.CreateStmt.partbound:type_name -> pg_query.PartitionBoundSpec + 281, // 488: pg_query.CreateStmt.partspec:type_name -> pg_query.PartitionSpec + 254, // 489: pg_query.CreateStmt.of_typename:type_name -> pg_query.TypeName + 59, // 490: pg_query.CreateStmt.constraints:type_name -> pg_query.Node + 59, // 491: pg_query.CreateStmt.options:type_name -> pg_query.Node + 31, // 492: pg_query.CreateStmt.oncommit:type_name -> pg_query.OnCommitAction + 14, // 493: pg_query.DefineStmt.kind:type_name -> pg_query.ObjectType + 59, // 494: pg_query.DefineStmt.defnames:type_name -> pg_query.Node + 59, // 495: pg_query.DefineStmt.args:type_name -> pg_query.Node + 59, // 496: pg_query.DefineStmt.definition:type_name -> pg_query.Node + 59, // 497: pg_query.DropStmt.objects:type_name -> pg_query.Node + 14, // 498: pg_query.DropStmt.remove_type:type_name -> pg_query.ObjectType + 15, // 499: pg_query.DropStmt.behavior:type_name -> pg_query.DropBehavior + 59, // 500: pg_query.TruncateStmt.relations:type_name -> pg_query.Node + 15, // 501: pg_query.TruncateStmt.behavior:type_name -> pg_query.DropBehavior + 14, // 502: pg_query.CommentStmt.objtype:type_name -> pg_query.ObjectType + 59, // 503: pg_query.CommentStmt.object:type_name -> pg_query.Node + 22, // 504: pg_query.FetchStmt.direction:type_name -> pg_query.FetchDirection + 69, // 505: pg_query.IndexStmt.relation:type_name -> pg_query.RangeVar + 59, // 506: pg_query.IndexStmt.index_params:type_name -> pg_query.Node + 59, // 507: pg_query.IndexStmt.index_including_params:type_name -> pg_query.Node + 59, // 508: pg_query.IndexStmt.options:type_name -> pg_query.Node + 59, // 509: pg_query.IndexStmt.where_clause:type_name -> pg_query.Node + 59, // 510: pg_query.IndexStmt.exclude_op_names:type_name -> pg_query.Node + 59, // 511: pg_query.CreateFunctionStmt.funcname:type_name -> pg_query.Node + 59, // 512: pg_query.CreateFunctionStmt.parameters:type_name -> pg_query.Node + 254, // 513: pg_query.CreateFunctionStmt.return_type:type_name -> pg_query.TypeName + 59, // 514: pg_query.CreateFunctionStmt.options:type_name -> pg_query.Node + 14, // 515: pg_query.AlterFunctionStmt.objtype:type_name -> pg_query.ObjectType + 266, // 516: pg_query.AlterFunctionStmt.func:type_name -> pg_query.ObjectWithArgs + 59, // 517: pg_query.AlterFunctionStmt.actions:type_name -> pg_query.Node + 59, // 518: pg_query.DoStmt.args:type_name -> pg_query.Node + 14, // 519: pg_query.RenameStmt.rename_type:type_name -> pg_query.ObjectType + 14, // 520: pg_query.RenameStmt.relation_type:type_name -> pg_query.ObjectType + 69, // 521: pg_query.RenameStmt.relation:type_name -> pg_query.RangeVar + 59, // 522: pg_query.RenameStmt.object:type_name -> pg_query.Node + 15, // 523: pg_query.RenameStmt.behavior:type_name -> pg_query.DropBehavior + 69, // 524: pg_query.RuleStmt.relation:type_name -> pg_query.RangeVar + 59, // 525: pg_query.RuleStmt.where_clause:type_name -> pg_query.Node + 44, // 526: pg_query.RuleStmt.event:type_name -> pg_query.CmdType + 59, // 527: pg_query.RuleStmt.actions:type_name -> pg_query.Node + 24, // 528: pg_query.TransactionStmt.kind:type_name -> pg_query.TransactionStmtKind + 59, // 529: pg_query.TransactionStmt.options:type_name -> pg_query.Node + 69, // 530: pg_query.ViewStmt.view:type_name -> pg_query.RangeVar + 59, // 531: pg_query.ViewStmt.aliases:type_name -> pg_query.Node + 59, // 532: pg_query.ViewStmt.query:type_name -> pg_query.Node + 59, // 533: pg_query.ViewStmt.options:type_name -> pg_query.Node + 25, // 534: pg_query.ViewStmt.with_check_option:type_name -> pg_query.ViewCheckOption + 59, // 535: pg_query.CreateDomainStmt.domainname:type_name -> pg_query.Node + 254, // 536: pg_query.CreateDomainStmt.type_name:type_name -> pg_query.TypeName + 246, // 537: pg_query.CreateDomainStmt.coll_clause:type_name -> pg_query.CollateClause + 59, // 538: pg_query.CreateDomainStmt.constraints:type_name -> pg_query.Node + 59, // 539: pg_query.CreatedbStmt.options:type_name -> pg_query.Node + 59, // 540: pg_query.DropdbStmt.options:type_name -> pg_query.Node + 59, // 541: pg_query.VacuumStmt.options:type_name -> pg_query.Node + 59, // 542: pg_query.VacuumStmt.rels:type_name -> pg_query.Node + 59, // 543: pg_query.ExplainStmt.query:type_name -> pg_query.Node + 59, // 544: pg_query.ExplainStmt.options:type_name -> pg_query.Node + 59, // 545: pg_query.CreateTableAsStmt.query:type_name -> pg_query.Node + 118, // 546: pg_query.CreateTableAsStmt.into:type_name -> pg_query.IntoClause + 14, // 547: pg_query.CreateTableAsStmt.relkind:type_name -> pg_query.ObjectType + 69, // 548: pg_query.CreateSeqStmt.sequence:type_name -> pg_query.RangeVar + 59, // 549: pg_query.CreateSeqStmt.options:type_name -> pg_query.Node + 69, // 550: pg_query.AlterSeqStmt.sequence:type_name -> pg_query.RangeVar + 59, // 551: pg_query.AlterSeqStmt.options:type_name -> pg_query.Node + 18, // 552: pg_query.VariableSetStmt.kind:type_name -> pg_query.VariableSetKind + 59, // 553: pg_query.VariableSetStmt.args:type_name -> pg_query.Node + 27, // 554: pg_query.DiscardStmt.target:type_name -> pg_query.DiscardMode + 69, // 555: pg_query.CreateTrigStmt.relation:type_name -> pg_query.RangeVar + 59, // 556: pg_query.CreateTrigStmt.funcname:type_name -> pg_query.Node + 59, // 557: pg_query.CreateTrigStmt.args:type_name -> pg_query.Node + 59, // 558: pg_query.CreateTrigStmt.columns:type_name -> pg_query.Node + 59, // 559: pg_query.CreateTrigStmt.when_clause:type_name -> pg_query.Node + 59, // 560: pg_query.CreateTrigStmt.transition_rels:type_name -> pg_query.Node + 69, // 561: pg_query.CreateTrigStmt.constrrel:type_name -> pg_query.RangeVar + 59, // 562: pg_query.CreatePLangStmt.plhandler:type_name -> pg_query.Node + 59, // 563: pg_query.CreatePLangStmt.plinline:type_name -> pg_query.Node + 59, // 564: pg_query.CreatePLangStmt.plvalidator:type_name -> pg_query.Node + 21, // 565: pg_query.CreateRoleStmt.stmt_type:type_name -> pg_query.RoleStmtType + 59, // 566: pg_query.CreateRoleStmt.options:type_name -> pg_query.Node + 278, // 567: pg_query.AlterRoleStmt.role:type_name -> pg_query.RoleSpec + 59, // 568: pg_query.AlterRoleStmt.options:type_name -> pg_query.Node + 59, // 569: pg_query.DropRoleStmt.roles:type_name -> pg_query.Node + 59, // 570: pg_query.LockStmt.relations:type_name -> pg_query.Node + 59, // 571: pg_query.ConstraintsSetStmt.constraints:type_name -> pg_query.Node + 28, // 572: pg_query.ReindexStmt.kind:type_name -> pg_query.ReindexObjectType + 69, // 573: pg_query.ReindexStmt.relation:type_name -> pg_query.RangeVar + 278, // 574: pg_query.CreateSchemaStmt.authrole:type_name -> pg_query.RoleSpec + 59, // 575: pg_query.CreateSchemaStmt.schema_elts:type_name -> pg_query.Node + 59, // 576: pg_query.AlterDatabaseStmt.options:type_name -> pg_query.Node + 161, // 577: pg_query.AlterDatabaseSetStmt.setstmt:type_name -> pg_query.VariableSetStmt + 278, // 578: pg_query.AlterRoleSetStmt.role:type_name -> pg_query.RoleSpec + 161, // 579: pg_query.AlterRoleSetStmt.setstmt:type_name -> pg_query.VariableSetStmt + 59, // 580: pg_query.CreateConversionStmt.conversion_name:type_name -> pg_query.Node + 59, // 581: pg_query.CreateConversionStmt.func_name:type_name -> pg_query.Node + 254, // 582: pg_query.CreateCastStmt.sourcetype:type_name -> pg_query.TypeName + 254, // 583: pg_query.CreateCastStmt.targettype:type_name -> pg_query.TypeName + 266, // 584: pg_query.CreateCastStmt.func:type_name -> pg_query.ObjectWithArgs + 33, // 585: pg_query.CreateCastStmt.context:type_name -> pg_query.CoercionContext + 59, // 586: pg_query.CreateOpClassStmt.opclassname:type_name -> pg_query.Node + 59, // 587: pg_query.CreateOpClassStmt.opfamilyname:type_name -> pg_query.Node + 254, // 588: pg_query.CreateOpClassStmt.datatype:type_name -> pg_query.TypeName + 59, // 589: pg_query.CreateOpClassStmt.items:type_name -> pg_query.Node + 59, // 590: pg_query.CreateOpFamilyStmt.opfamilyname:type_name -> pg_query.Node + 59, // 591: pg_query.AlterOpFamilyStmt.opfamilyname:type_name -> pg_query.Node + 59, // 592: pg_query.AlterOpFamilyStmt.items:type_name -> pg_query.Node + 59, // 593: pg_query.PrepareStmt.argtypes:type_name -> pg_query.Node + 59, // 594: pg_query.PrepareStmt.query:type_name -> pg_query.Node + 59, // 595: pg_query.ExecuteStmt.params:type_name -> pg_query.Node + 59, // 596: pg_query.DeclareCursorStmt.query:type_name -> pg_query.Node + 278, // 597: pg_query.CreateTableSpaceStmt.owner:type_name -> pg_query.RoleSpec + 59, // 598: pg_query.CreateTableSpaceStmt.options:type_name -> pg_query.Node + 14, // 599: pg_query.AlterObjectDependsStmt.object_type:type_name -> pg_query.ObjectType + 69, // 600: pg_query.AlterObjectDependsStmt.relation:type_name -> pg_query.RangeVar + 59, // 601: pg_query.AlterObjectDependsStmt.object:type_name -> pg_query.Node + 59, // 602: pg_query.AlterObjectDependsStmt.extname:type_name -> pg_query.Node + 14, // 603: pg_query.AlterObjectSchemaStmt.object_type:type_name -> pg_query.ObjectType + 69, // 604: pg_query.AlterObjectSchemaStmt.relation:type_name -> pg_query.RangeVar + 59, // 605: pg_query.AlterObjectSchemaStmt.object:type_name -> pg_query.Node + 14, // 606: pg_query.AlterOwnerStmt.object_type:type_name -> pg_query.ObjectType + 69, // 607: pg_query.AlterOwnerStmt.relation:type_name -> pg_query.RangeVar + 59, // 608: pg_query.AlterOwnerStmt.object:type_name -> pg_query.Node + 278, // 609: pg_query.AlterOwnerStmt.newowner:type_name -> pg_query.RoleSpec + 266, // 610: pg_query.AlterOperatorStmt.opername:type_name -> pg_query.ObjectWithArgs + 59, // 611: pg_query.AlterOperatorStmt.options:type_name -> pg_query.Node + 59, // 612: pg_query.AlterTypeStmt.type_name:type_name -> pg_query.Node + 59, // 613: pg_query.AlterTypeStmt.options:type_name -> pg_query.Node + 59, // 614: pg_query.DropOwnedStmt.roles:type_name -> pg_query.Node + 15, // 615: pg_query.DropOwnedStmt.behavior:type_name -> pg_query.DropBehavior + 59, // 616: pg_query.ReassignOwnedStmt.roles:type_name -> pg_query.Node + 278, // 617: pg_query.ReassignOwnedStmt.newrole:type_name -> pg_query.RoleSpec + 69, // 618: pg_query.CompositeTypeStmt.typevar:type_name -> pg_query.RangeVar + 59, // 619: pg_query.CompositeTypeStmt.coldeflist:type_name -> pg_query.Node + 59, // 620: pg_query.CreateEnumStmt.type_name:type_name -> pg_query.Node + 59, // 621: pg_query.CreateEnumStmt.vals:type_name -> pg_query.Node + 59, // 622: pg_query.CreateRangeStmt.type_name:type_name -> pg_query.Node + 59, // 623: pg_query.CreateRangeStmt.params:type_name -> pg_query.Node + 59, // 624: pg_query.AlterEnumStmt.type_name:type_name -> pg_query.Node + 59, // 625: pg_query.AlterTSDictionaryStmt.dictname:type_name -> pg_query.Node + 59, // 626: pg_query.AlterTSDictionaryStmt.options:type_name -> pg_query.Node + 29, // 627: pg_query.AlterTSConfigurationStmt.kind:type_name -> pg_query.AlterTSConfigType + 59, // 628: pg_query.AlterTSConfigurationStmt.cfgname:type_name -> pg_query.Node + 59, // 629: pg_query.AlterTSConfigurationStmt.tokentype:type_name -> pg_query.Node + 59, // 630: pg_query.AlterTSConfigurationStmt.dicts:type_name -> pg_query.Node + 59, // 631: pg_query.CreateFdwStmt.func_options:type_name -> pg_query.Node + 59, // 632: pg_query.CreateFdwStmt.options:type_name -> pg_query.Node + 59, // 633: pg_query.AlterFdwStmt.func_options:type_name -> pg_query.Node + 59, // 634: pg_query.AlterFdwStmt.options:type_name -> pg_query.Node + 59, // 635: pg_query.CreateForeignServerStmt.options:type_name -> pg_query.Node + 59, // 636: pg_query.AlterForeignServerStmt.options:type_name -> pg_query.Node + 278, // 637: pg_query.CreateUserMappingStmt.user:type_name -> pg_query.RoleSpec + 59, // 638: pg_query.CreateUserMappingStmt.options:type_name -> pg_query.Node + 278, // 639: pg_query.AlterUserMappingStmt.user:type_name -> pg_query.RoleSpec + 59, // 640: pg_query.AlterUserMappingStmt.options:type_name -> pg_query.Node + 278, // 641: pg_query.DropUserMappingStmt.user:type_name -> pg_query.RoleSpec + 59, // 642: pg_query.AlterTableSpaceOptionsStmt.options:type_name -> pg_query.Node + 14, // 643: pg_query.AlterTableMoveAllStmt.objtype:type_name -> pg_query.ObjectType + 59, // 644: pg_query.AlterTableMoveAllStmt.roles:type_name -> pg_query.Node + 14, // 645: pg_query.SecLabelStmt.objtype:type_name -> pg_query.ObjectType + 59, // 646: pg_query.SecLabelStmt.object:type_name -> pg_query.Node + 135, // 647: pg_query.CreateForeignTableStmt.base_stmt:type_name -> pg_query.CreateStmt + 59, // 648: pg_query.CreateForeignTableStmt.options:type_name -> pg_query.Node + 20, // 649: pg_query.ImportForeignSchemaStmt.list_type:type_name -> pg_query.ImportForeignSchemaType + 59, // 650: pg_query.ImportForeignSchemaStmt.table_list:type_name -> pg_query.Node + 59, // 651: pg_query.ImportForeignSchemaStmt.options:type_name -> pg_query.Node + 59, // 652: pg_query.CreateExtensionStmt.options:type_name -> pg_query.Node + 59, // 653: pg_query.AlterExtensionStmt.options:type_name -> pg_query.Node + 14, // 654: pg_query.AlterExtensionContentsStmt.objtype:type_name -> pg_query.ObjectType + 59, // 655: pg_query.AlterExtensionContentsStmt.object:type_name -> pg_query.Node + 59, // 656: pg_query.CreateEventTrigStmt.whenclause:type_name -> pg_query.Node + 59, // 657: pg_query.CreateEventTrigStmt.funcname:type_name -> pg_query.Node + 69, // 658: pg_query.RefreshMatViewStmt.relation:type_name -> pg_query.RangeVar + 161, // 659: pg_query.AlterSystemStmt.setstmt:type_name -> pg_query.VariableSetStmt + 69, // 660: pg_query.CreatePolicyStmt.table:type_name -> pg_query.RangeVar + 59, // 661: pg_query.CreatePolicyStmt.roles:type_name -> pg_query.Node + 59, // 662: pg_query.CreatePolicyStmt.qual:type_name -> pg_query.Node + 59, // 663: pg_query.CreatePolicyStmt.with_check:type_name -> pg_query.Node + 69, // 664: pg_query.AlterPolicyStmt.table:type_name -> pg_query.RangeVar + 59, // 665: pg_query.AlterPolicyStmt.roles:type_name -> pg_query.Node + 59, // 666: pg_query.AlterPolicyStmt.qual:type_name -> pg_query.Node + 59, // 667: pg_query.AlterPolicyStmt.with_check:type_name -> pg_query.Node + 254, // 668: pg_query.CreateTransformStmt.type_name:type_name -> pg_query.TypeName + 266, // 669: pg_query.CreateTransformStmt.fromsql:type_name -> pg_query.ObjectWithArgs + 266, // 670: pg_query.CreateTransformStmt.tosql:type_name -> pg_query.ObjectWithArgs + 59, // 671: pg_query.CreateAmStmt.handler_name:type_name -> pg_query.Node + 59, // 672: pg_query.CreatePublicationStmt.options:type_name -> pg_query.Node + 59, // 673: pg_query.CreatePublicationStmt.tables:type_name -> pg_query.Node + 59, // 674: pg_query.AlterPublicationStmt.options:type_name -> pg_query.Node + 59, // 675: pg_query.AlterPublicationStmt.tables:type_name -> pg_query.Node + 7, // 676: pg_query.AlterPublicationStmt.table_action:type_name -> pg_query.DefElemAction + 59, // 677: pg_query.CreateSubscriptionStmt.publication:type_name -> pg_query.Node + 59, // 678: pg_query.CreateSubscriptionStmt.options:type_name -> pg_query.Node + 30, // 679: pg_query.AlterSubscriptionStmt.kind:type_name -> pg_query.AlterSubscriptionType + 59, // 680: pg_query.AlterSubscriptionStmt.publication:type_name -> pg_query.Node + 59, // 681: pg_query.AlterSubscriptionStmt.options:type_name -> pg_query.Node + 15, // 682: pg_query.DropSubscriptionStmt.behavior:type_name -> pg_query.DropBehavior + 59, // 683: pg_query.CreateStatsStmt.defnames:type_name -> pg_query.Node + 59, // 684: pg_query.CreateStatsStmt.stat_types:type_name -> pg_query.Node + 59, // 685: pg_query.CreateStatsStmt.exprs:type_name -> pg_query.Node + 59, // 686: pg_query.CreateStatsStmt.relations:type_name -> pg_query.Node + 59, // 687: pg_query.AlterCollationStmt.collname:type_name -> pg_query.Node + 238, // 688: pg_query.CallStmt.funccall:type_name -> pg_query.FuncCall + 78, // 689: pg_query.CallStmt.funcexpr:type_name -> pg_query.FuncExpr + 59, // 690: pg_query.AlterStatsStmt.defnames:type_name -> pg_query.Node + 4, // 691: pg_query.A_Expr.kind:type_name -> pg_query.A_Expr_Kind + 59, // 692: pg_query.A_Expr.name:type_name -> pg_query.Node + 59, // 693: pg_query.A_Expr.lexpr:type_name -> pg_query.Node + 59, // 694: pg_query.A_Expr.rexpr:type_name -> pg_query.Node + 59, // 695: pg_query.ColumnRef.fields:type_name -> pg_query.Node + 59, // 696: pg_query.A_Const.val:type_name -> pg_query.Node + 59, // 697: pg_query.FuncCall.funcname:type_name -> pg_query.Node + 59, // 698: pg_query.FuncCall.args:type_name -> pg_query.Node + 59, // 699: pg_query.FuncCall.agg_order:type_name -> pg_query.Node + 59, // 700: pg_query.FuncCall.agg_filter:type_name -> pg_query.Node + 248, // 701: pg_query.FuncCall.over:type_name -> pg_query.WindowDef + 59, // 702: pg_query.A_Indices.lidx:type_name -> pg_query.Node + 59, // 703: pg_query.A_Indices.uidx:type_name -> pg_query.Node + 59, // 704: pg_query.A_Indirection.arg:type_name -> pg_query.Node + 59, // 705: pg_query.A_Indirection.indirection:type_name -> pg_query.Node + 59, // 706: pg_query.A_ArrayExpr.elements:type_name -> pg_query.Node + 59, // 707: pg_query.ResTarget.indirection:type_name -> pg_query.Node + 59, // 708: pg_query.ResTarget.val:type_name -> pg_query.Node + 59, // 709: pg_query.MultiAssignRef.source:type_name -> pg_query.Node + 59, // 710: pg_query.TypeCast.arg:type_name -> pg_query.Node + 254, // 711: pg_query.TypeCast.type_name:type_name -> pg_query.TypeName + 59, // 712: pg_query.CollateClause.arg:type_name -> pg_query.Node + 59, // 713: pg_query.CollateClause.collname:type_name -> pg_query.Node + 59, // 714: pg_query.SortBy.node:type_name -> pg_query.Node + 2, // 715: pg_query.SortBy.sortby_dir:type_name -> pg_query.SortByDir + 3, // 716: pg_query.SortBy.sortby_nulls:type_name -> pg_query.SortByNulls + 59, // 717: pg_query.SortBy.use_op:type_name -> pg_query.Node + 59, // 718: pg_query.WindowDef.partition_clause:type_name -> pg_query.Node + 59, // 719: pg_query.WindowDef.order_clause:type_name -> pg_query.Node + 59, // 720: pg_query.WindowDef.start_offset:type_name -> pg_query.Node + 59, // 721: pg_query.WindowDef.end_offset:type_name -> pg_query.Node + 59, // 722: pg_query.RangeSubselect.subquery:type_name -> pg_query.Node + 68, // 723: pg_query.RangeSubselect.alias:type_name -> pg_query.Alias + 59, // 724: pg_query.RangeFunction.functions:type_name -> pg_query.Node + 68, // 725: pg_query.RangeFunction.alias:type_name -> pg_query.Alias + 59, // 726: pg_query.RangeFunction.coldeflist:type_name -> pg_query.Node + 59, // 727: pg_query.RangeTableSample.relation:type_name -> pg_query.Node + 59, // 728: pg_query.RangeTableSample.method:type_name -> pg_query.Node + 59, // 729: pg_query.RangeTableSample.args:type_name -> pg_query.Node + 59, // 730: pg_query.RangeTableSample.repeatable:type_name -> pg_query.Node + 59, // 731: pg_query.RangeTableFunc.docexpr:type_name -> pg_query.Node + 59, // 732: pg_query.RangeTableFunc.rowexpr:type_name -> pg_query.Node + 59, // 733: pg_query.RangeTableFunc.namespaces:type_name -> pg_query.Node + 59, // 734: pg_query.RangeTableFunc.columns:type_name -> pg_query.Node + 68, // 735: pg_query.RangeTableFunc.alias:type_name -> pg_query.Alias + 254, // 736: pg_query.RangeTableFuncCol.type_name:type_name -> pg_query.TypeName + 59, // 737: pg_query.RangeTableFuncCol.colexpr:type_name -> pg_query.Node + 59, // 738: pg_query.RangeTableFuncCol.coldefexpr:type_name -> pg_query.Node + 59, // 739: pg_query.TypeName.names:type_name -> pg_query.Node + 59, // 740: pg_query.TypeName.typmods:type_name -> pg_query.Node + 59, // 741: pg_query.TypeName.array_bounds:type_name -> pg_query.Node + 254, // 742: pg_query.ColumnDef.type_name:type_name -> pg_query.TypeName + 59, // 743: pg_query.ColumnDef.raw_default:type_name -> pg_query.Node + 59, // 744: pg_query.ColumnDef.cooked_default:type_name -> pg_query.Node + 69, // 745: pg_query.ColumnDef.identity_sequence:type_name -> pg_query.RangeVar + 246, // 746: pg_query.ColumnDef.coll_clause:type_name -> pg_query.CollateClause + 59, // 747: pg_query.ColumnDef.constraints:type_name -> pg_query.Node + 59, // 748: pg_query.ColumnDef.fdwoptions:type_name -> pg_query.Node + 59, // 749: pg_query.IndexElem.expr:type_name -> pg_query.Node + 59, // 750: pg_query.IndexElem.collation:type_name -> pg_query.Node + 59, // 751: pg_query.IndexElem.opclass:type_name -> pg_query.Node + 59, // 752: pg_query.IndexElem.opclassopts:type_name -> pg_query.Node + 2, // 753: pg_query.IndexElem.ordering:type_name -> pg_query.SortByDir + 3, // 754: pg_query.IndexElem.nulls_ordering:type_name -> pg_query.SortByNulls + 19, // 755: pg_query.Constraint.contype:type_name -> pg_query.ConstrType + 59, // 756: pg_query.Constraint.raw_expr:type_name -> pg_query.Node + 59, // 757: pg_query.Constraint.keys:type_name -> pg_query.Node + 59, // 758: pg_query.Constraint.including:type_name -> pg_query.Node + 59, // 759: pg_query.Constraint.exclusions:type_name -> pg_query.Node + 59, // 760: pg_query.Constraint.options:type_name -> pg_query.Node + 59, // 761: pg_query.Constraint.where_clause:type_name -> pg_query.Node + 69, // 762: pg_query.Constraint.pktable:type_name -> pg_query.RangeVar + 59, // 763: pg_query.Constraint.fk_attrs:type_name -> pg_query.Node + 59, // 764: pg_query.Constraint.pk_attrs:type_name -> pg_query.Node + 59, // 765: pg_query.Constraint.old_conpfeqop:type_name -> pg_query.Node + 59, // 766: pg_query.DefElem.arg:type_name -> pg_query.Node + 7, // 767: pg_query.DefElem.defaction:type_name -> pg_query.DefElemAction + 9, // 768: pg_query.RangeTblEntry.rtekind:type_name -> pg_query.RTEKind + 261, // 769: pg_query.RangeTblEntry.tablesample:type_name -> pg_query.TableSampleClause + 120, // 770: pg_query.RangeTblEntry.subquery:type_name -> pg_query.Query + 45, // 771: pg_query.RangeTblEntry.jointype:type_name -> pg_query.JoinType + 59, // 772: pg_query.RangeTblEntry.joinaliasvars:type_name -> pg_query.Node + 59, // 773: pg_query.RangeTblEntry.joinleftcols:type_name -> pg_query.Node + 59, // 774: pg_query.RangeTblEntry.joinrightcols:type_name -> pg_query.Node + 59, // 775: pg_query.RangeTblEntry.functions:type_name -> pg_query.Node + 70, // 776: pg_query.RangeTblEntry.tablefunc:type_name -> pg_query.TableFunc + 59, // 777: pg_query.RangeTblEntry.values_lists:type_name -> pg_query.Node + 59, // 778: pg_query.RangeTblEntry.coltypes:type_name -> pg_query.Node + 59, // 779: pg_query.RangeTblEntry.coltypmods:type_name -> pg_query.Node + 59, // 780: pg_query.RangeTblEntry.colcollations:type_name -> pg_query.Node + 68, // 781: pg_query.RangeTblEntry.alias:type_name -> pg_query.Alias + 68, // 782: pg_query.RangeTblEntry.eref:type_name -> pg_query.Alias + 59, // 783: pg_query.RangeTblEntry.security_quals:type_name -> pg_query.Node + 59, // 784: pg_query.RangeTblFunction.funcexpr:type_name -> pg_query.Node + 59, // 785: pg_query.RangeTblFunction.funccolnames:type_name -> pg_query.Node + 59, // 786: pg_query.RangeTblFunction.funccoltypes:type_name -> pg_query.Node + 59, // 787: pg_query.RangeTblFunction.funccoltypmods:type_name -> pg_query.Node + 59, // 788: pg_query.RangeTblFunction.funccolcollations:type_name -> pg_query.Node + 59, // 789: pg_query.TableSampleClause.args:type_name -> pg_query.Node + 59, // 790: pg_query.TableSampleClause.repeatable:type_name -> pg_query.Node + 10, // 791: pg_query.WithCheckOption.kind:type_name -> pg_query.WCOKind + 59, // 792: pg_query.WithCheckOption.qual:type_name -> pg_query.Node + 11, // 793: pg_query.GroupingSet.kind:type_name -> pg_query.GroupingSetKind + 59, // 794: pg_query.GroupingSet.content:type_name -> pg_query.Node + 59, // 795: pg_query.WindowClause.partition_clause:type_name -> pg_query.Node + 59, // 796: pg_query.WindowClause.order_clause:type_name -> pg_query.Node + 59, // 797: pg_query.WindowClause.start_offset:type_name -> pg_query.Node + 59, // 798: pg_query.WindowClause.end_offset:type_name -> pg_query.Node + 59, // 799: pg_query.ObjectWithArgs.objname:type_name -> pg_query.Node + 59, // 800: pg_query.ObjectWithArgs.objargs:type_name -> pg_query.Node + 59, // 801: pg_query.AccessPriv.cols:type_name -> pg_query.Node + 266, // 802: pg_query.CreateOpClassItem.name:type_name -> pg_query.ObjectWithArgs + 59, // 803: pg_query.CreateOpClassItem.order_family:type_name -> pg_query.Node + 59, // 804: pg_query.CreateOpClassItem.class_args:type_name -> pg_query.Node + 254, // 805: pg_query.CreateOpClassItem.storedtype:type_name -> pg_query.TypeName + 69, // 806: pg_query.TableLikeClause.relation:type_name -> pg_query.RangeVar + 254, // 807: pg_query.FunctionParameter.arg_type:type_name -> pg_query.TypeName + 23, // 808: pg_query.FunctionParameter.mode:type_name -> pg_query.FunctionParameterMode + 59, // 809: pg_query.FunctionParameter.defexpr:type_name -> pg_query.Node + 59, // 810: pg_query.LockingClause.locked_rels:type_name -> pg_query.Node + 52, // 811: pg_query.LockingClause.strength:type_name -> pg_query.LockClauseStrength + 53, // 812: pg_query.LockingClause.wait_policy:type_name -> pg_query.LockWaitPolicy + 52, // 813: pg_query.RowMarkClause.strength:type_name -> pg_query.LockClauseStrength + 53, // 814: pg_query.RowMarkClause.wait_policy:type_name -> pg_query.LockWaitPolicy + 41, // 815: pg_query.XmlSerialize.xmloption:type_name -> pg_query.XmlOptionType + 59, // 816: pg_query.XmlSerialize.expr:type_name -> pg_query.Node + 254, // 817: pg_query.XmlSerialize.type_name:type_name -> pg_query.TypeName + 59, // 818: pg_query.WithClause.ctes:type_name -> pg_query.Node + 59, // 819: pg_query.InferClause.index_elems:type_name -> pg_query.Node + 59, // 820: pg_query.InferClause.where_clause:type_name -> pg_query.Node + 50, // 821: pg_query.OnConflictClause.action:type_name -> pg_query.OnConflictAction + 275, // 822: pg_query.OnConflictClause.infer:type_name -> pg_query.InferClause + 59, // 823: pg_query.OnConflictClause.target_list:type_name -> pg_query.Node + 59, // 824: pg_query.OnConflictClause.where_clause:type_name -> pg_query.Node + 59, // 825: pg_query.CommonTableExpr.aliascolnames:type_name -> pg_query.Node + 12, // 826: pg_query.CommonTableExpr.ctematerialized:type_name -> pg_query.CTEMaterialize + 59, // 827: pg_query.CommonTableExpr.ctequery:type_name -> pg_query.Node + 59, // 828: pg_query.CommonTableExpr.ctecolnames:type_name -> pg_query.Node + 59, // 829: pg_query.CommonTableExpr.ctecoltypes:type_name -> pg_query.Node + 59, // 830: pg_query.CommonTableExpr.ctecoltypmods:type_name -> pg_query.Node + 59, // 831: pg_query.CommonTableExpr.ctecolcollations:type_name -> pg_query.Node + 5, // 832: pg_query.RoleSpec.roletype:type_name -> pg_query.RoleSpecType + 59, // 833: pg_query.PartitionElem.expr:type_name -> pg_query.Node + 59, // 834: pg_query.PartitionElem.collation:type_name -> pg_query.Node + 59, // 835: pg_query.PartitionElem.opclass:type_name -> pg_query.Node + 59, // 836: pg_query.PartitionSpec.part_params:type_name -> pg_query.Node + 59, // 837: pg_query.PartitionBoundSpec.listdatums:type_name -> pg_query.Node + 59, // 838: pg_query.PartitionBoundSpec.lowerdatums:type_name -> pg_query.Node + 59, // 839: pg_query.PartitionBoundSpec.upperdatums:type_name -> pg_query.Node + 8, // 840: pg_query.PartitionRangeDatum.kind:type_name -> pg_query.PartitionRangeDatumKind + 59, // 841: pg_query.PartitionRangeDatum.value:type_name -> pg_query.Node + 69, // 842: pg_query.PartitionCmd.name:type_name -> pg_query.RangeVar + 282, // 843: pg_query.PartitionCmd.bound:type_name -> pg_query.PartitionBoundSpec + 69, // 844: pg_query.VacuumRelation.relation:type_name -> pg_query.RangeVar + 59, // 845: pg_query.VacuumRelation.va_cols:type_name -> pg_query.Node + 56, // 846: pg_query.ScanToken.token:type_name -> pg_query.Token + 55, // 847: pg_query.ScanToken.keyword_kind:type_name -> pg_query.KeywordKind + 848, // [848:848] is the sub-list for method output_type + 848, // [848:848] is the sub-list for method input_type + 848, // [848:848] is the sub-list for extension type_name + 848, // [848:848] is the sub-list for extension extendee + 0, // [0:848] is the sub-list for field type_name +} + +func init() { file_pg_query_proto_init() } +func file_pg_query_proto_init() { + if File_pg_query_proto != nil { + return + } + if !protoimpl.UnsafeEnabled { + file_pg_query_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ParseResult); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pg_query_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ScanResult); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pg_query_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Node); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pg_query_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Integer); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pg_query_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Float); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pg_query_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*String); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pg_query_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*BitString); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pg_query_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Null); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pg_query_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*List); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pg_query_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*OidList); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pg_query_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*IntList); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pg_query_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Alias); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pg_query_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*RangeVar); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pg_query_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*TableFunc); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pg_query_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Expr); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pg_query_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Var); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pg_query_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Param); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pg_query_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Aggref); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pg_query_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GroupingFunc); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pg_query_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*WindowFunc); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pg_query_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SubscriptingRef); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pg_query_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*FuncExpr); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pg_query_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*NamedArgExpr); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pg_query_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*OpExpr); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pg_query_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*DistinctExpr); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pg_query_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*NullIfExpr); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pg_query_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ScalarArrayOpExpr); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pg_query_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*BoolExpr); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pg_query_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SubLink); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pg_query_proto_msgTypes[29].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SubPlan); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pg_query_proto_msgTypes[30].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*AlternativeSubPlan); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pg_query_proto_msgTypes[31].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*FieldSelect); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pg_query_proto_msgTypes[32].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*FieldStore); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pg_query_proto_msgTypes[33].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*RelabelType); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pg_query_proto_msgTypes[34].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CoerceViaIO); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pg_query_proto_msgTypes[35].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ArrayCoerceExpr); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pg_query_proto_msgTypes[36].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ConvertRowtypeExpr); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pg_query_proto_msgTypes[37].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CollateExpr); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pg_query_proto_msgTypes[38].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CaseExpr); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pg_query_proto_msgTypes[39].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CaseWhen); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pg_query_proto_msgTypes[40].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CaseTestExpr); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pg_query_proto_msgTypes[41].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ArrayExpr); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pg_query_proto_msgTypes[42].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*RowExpr); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pg_query_proto_msgTypes[43].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*RowCompareExpr); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pg_query_proto_msgTypes[44].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CoalesceExpr); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pg_query_proto_msgTypes[45].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*MinMaxExpr); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pg_query_proto_msgTypes[46].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SQLValueFunction); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pg_query_proto_msgTypes[47].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*XmlExpr); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pg_query_proto_msgTypes[48].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*NullTest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pg_query_proto_msgTypes[49].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*BooleanTest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pg_query_proto_msgTypes[50].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CoerceToDomain); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pg_query_proto_msgTypes[51].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CoerceToDomainValue); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pg_query_proto_msgTypes[52].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SetToDefault); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pg_query_proto_msgTypes[53].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CurrentOfExpr); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pg_query_proto_msgTypes[54].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*NextValueExpr); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pg_query_proto_msgTypes[55].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*InferenceElem); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pg_query_proto_msgTypes[56].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*TargetEntry); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pg_query_proto_msgTypes[57].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*RangeTblRef); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pg_query_proto_msgTypes[58].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*JoinExpr); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pg_query_proto_msgTypes[59].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*FromExpr); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pg_query_proto_msgTypes[60].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*OnConflictExpr); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pg_query_proto_msgTypes[61].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*IntoClause); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pg_query_proto_msgTypes[62].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*RawStmt); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pg_query_proto_msgTypes[63].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Query); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pg_query_proto_msgTypes[64].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*InsertStmt); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pg_query_proto_msgTypes[65].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*DeleteStmt); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pg_query_proto_msgTypes[66].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*UpdateStmt); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pg_query_proto_msgTypes[67].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SelectStmt); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pg_query_proto_msgTypes[68].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*AlterTableStmt); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pg_query_proto_msgTypes[69].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*AlterTableCmd); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pg_query_proto_msgTypes[70].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*AlterDomainStmt); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pg_query_proto_msgTypes[71].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SetOperationStmt); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pg_query_proto_msgTypes[72].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GrantStmt); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pg_query_proto_msgTypes[73].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GrantRoleStmt); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pg_query_proto_msgTypes[74].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*AlterDefaultPrivilegesStmt); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pg_query_proto_msgTypes[75].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ClosePortalStmt); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pg_query_proto_msgTypes[76].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ClusterStmt); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pg_query_proto_msgTypes[77].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CopyStmt); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pg_query_proto_msgTypes[78].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CreateStmt); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pg_query_proto_msgTypes[79].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*DefineStmt); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pg_query_proto_msgTypes[80].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*DropStmt); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pg_query_proto_msgTypes[81].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*TruncateStmt); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pg_query_proto_msgTypes[82].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CommentStmt); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pg_query_proto_msgTypes[83].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*FetchStmt); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pg_query_proto_msgTypes[84].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*IndexStmt); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pg_query_proto_msgTypes[85].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CreateFunctionStmt); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pg_query_proto_msgTypes[86].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*AlterFunctionStmt); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pg_query_proto_msgTypes[87].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*DoStmt); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pg_query_proto_msgTypes[88].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*RenameStmt); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pg_query_proto_msgTypes[89].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*RuleStmt); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pg_query_proto_msgTypes[90].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*NotifyStmt); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pg_query_proto_msgTypes[91].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ListenStmt); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pg_query_proto_msgTypes[92].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*UnlistenStmt); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pg_query_proto_msgTypes[93].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*TransactionStmt); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pg_query_proto_msgTypes[94].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ViewStmt); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pg_query_proto_msgTypes[95].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*LoadStmt); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pg_query_proto_msgTypes[96].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CreateDomainStmt); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pg_query_proto_msgTypes[97].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CreatedbStmt); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pg_query_proto_msgTypes[98].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*DropdbStmt); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pg_query_proto_msgTypes[99].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*VacuumStmt); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pg_query_proto_msgTypes[100].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ExplainStmt); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pg_query_proto_msgTypes[101].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CreateTableAsStmt); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pg_query_proto_msgTypes[102].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CreateSeqStmt); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pg_query_proto_msgTypes[103].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*AlterSeqStmt); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pg_query_proto_msgTypes[104].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*VariableSetStmt); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pg_query_proto_msgTypes[105].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*VariableShowStmt); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pg_query_proto_msgTypes[106].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*DiscardStmt); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pg_query_proto_msgTypes[107].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CreateTrigStmt); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pg_query_proto_msgTypes[108].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CreatePLangStmt); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pg_query_proto_msgTypes[109].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CreateRoleStmt); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pg_query_proto_msgTypes[110].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*AlterRoleStmt); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pg_query_proto_msgTypes[111].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*DropRoleStmt); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pg_query_proto_msgTypes[112].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*LockStmt); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pg_query_proto_msgTypes[113].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ConstraintsSetStmt); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pg_query_proto_msgTypes[114].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ReindexStmt); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pg_query_proto_msgTypes[115].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CheckPointStmt); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pg_query_proto_msgTypes[116].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CreateSchemaStmt); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pg_query_proto_msgTypes[117].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*AlterDatabaseStmt); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pg_query_proto_msgTypes[118].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*AlterDatabaseSetStmt); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pg_query_proto_msgTypes[119].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*AlterRoleSetStmt); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pg_query_proto_msgTypes[120].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CreateConversionStmt); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pg_query_proto_msgTypes[121].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CreateCastStmt); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pg_query_proto_msgTypes[122].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CreateOpClassStmt); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pg_query_proto_msgTypes[123].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CreateOpFamilyStmt); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pg_query_proto_msgTypes[124].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*AlterOpFamilyStmt); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pg_query_proto_msgTypes[125].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PrepareStmt); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pg_query_proto_msgTypes[126].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ExecuteStmt); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pg_query_proto_msgTypes[127].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*DeallocateStmt); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pg_query_proto_msgTypes[128].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*DeclareCursorStmt); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pg_query_proto_msgTypes[129].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CreateTableSpaceStmt); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pg_query_proto_msgTypes[130].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*DropTableSpaceStmt); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pg_query_proto_msgTypes[131].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*AlterObjectDependsStmt); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pg_query_proto_msgTypes[132].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*AlterObjectSchemaStmt); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pg_query_proto_msgTypes[133].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*AlterOwnerStmt); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pg_query_proto_msgTypes[134].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*AlterOperatorStmt); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pg_query_proto_msgTypes[135].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*AlterTypeStmt); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pg_query_proto_msgTypes[136].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*DropOwnedStmt); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pg_query_proto_msgTypes[137].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ReassignOwnedStmt); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pg_query_proto_msgTypes[138].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CompositeTypeStmt); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pg_query_proto_msgTypes[139].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CreateEnumStmt); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pg_query_proto_msgTypes[140].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CreateRangeStmt); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pg_query_proto_msgTypes[141].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*AlterEnumStmt); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pg_query_proto_msgTypes[142].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*AlterTSDictionaryStmt); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pg_query_proto_msgTypes[143].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*AlterTSConfigurationStmt); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pg_query_proto_msgTypes[144].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CreateFdwStmt); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pg_query_proto_msgTypes[145].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*AlterFdwStmt); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pg_query_proto_msgTypes[146].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CreateForeignServerStmt); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pg_query_proto_msgTypes[147].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*AlterForeignServerStmt); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pg_query_proto_msgTypes[148].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CreateUserMappingStmt); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pg_query_proto_msgTypes[149].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*AlterUserMappingStmt); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pg_query_proto_msgTypes[150].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*DropUserMappingStmt); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pg_query_proto_msgTypes[151].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*AlterTableSpaceOptionsStmt); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pg_query_proto_msgTypes[152].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*AlterTableMoveAllStmt); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pg_query_proto_msgTypes[153].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SecLabelStmt); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pg_query_proto_msgTypes[154].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CreateForeignTableStmt); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pg_query_proto_msgTypes[155].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ImportForeignSchemaStmt); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pg_query_proto_msgTypes[156].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CreateExtensionStmt); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pg_query_proto_msgTypes[157].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*AlterExtensionStmt); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pg_query_proto_msgTypes[158].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*AlterExtensionContentsStmt); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pg_query_proto_msgTypes[159].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CreateEventTrigStmt); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pg_query_proto_msgTypes[160].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*AlterEventTrigStmt); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pg_query_proto_msgTypes[161].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*RefreshMatViewStmt); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pg_query_proto_msgTypes[162].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ReplicaIdentityStmt); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pg_query_proto_msgTypes[163].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*AlterSystemStmt); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pg_query_proto_msgTypes[164].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CreatePolicyStmt); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pg_query_proto_msgTypes[165].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*AlterPolicyStmt); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pg_query_proto_msgTypes[166].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CreateTransformStmt); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pg_query_proto_msgTypes[167].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CreateAmStmt); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pg_query_proto_msgTypes[168].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CreatePublicationStmt); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pg_query_proto_msgTypes[169].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*AlterPublicationStmt); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pg_query_proto_msgTypes[170].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CreateSubscriptionStmt); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pg_query_proto_msgTypes[171].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*AlterSubscriptionStmt); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pg_query_proto_msgTypes[172].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*DropSubscriptionStmt); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pg_query_proto_msgTypes[173].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CreateStatsStmt); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pg_query_proto_msgTypes[174].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*AlterCollationStmt); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pg_query_proto_msgTypes[175].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CallStmt); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pg_query_proto_msgTypes[176].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*AlterStatsStmt); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pg_query_proto_msgTypes[177].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*A_Expr); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pg_query_proto_msgTypes[178].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ColumnRef); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pg_query_proto_msgTypes[179].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ParamRef); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pg_query_proto_msgTypes[180].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*A_Const); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pg_query_proto_msgTypes[181].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*FuncCall); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pg_query_proto_msgTypes[182].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*A_Star); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pg_query_proto_msgTypes[183].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*A_Indices); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pg_query_proto_msgTypes[184].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*A_Indirection); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pg_query_proto_msgTypes[185].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*A_ArrayExpr); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pg_query_proto_msgTypes[186].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ResTarget); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pg_query_proto_msgTypes[187].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*MultiAssignRef); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pg_query_proto_msgTypes[188].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*TypeCast); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pg_query_proto_msgTypes[189].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CollateClause); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pg_query_proto_msgTypes[190].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SortBy); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pg_query_proto_msgTypes[191].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*WindowDef); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pg_query_proto_msgTypes[192].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*RangeSubselect); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pg_query_proto_msgTypes[193].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*RangeFunction); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pg_query_proto_msgTypes[194].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*RangeTableSample); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pg_query_proto_msgTypes[195].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*RangeTableFunc); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pg_query_proto_msgTypes[196].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*RangeTableFuncCol); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pg_query_proto_msgTypes[197].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*TypeName); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pg_query_proto_msgTypes[198].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ColumnDef); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pg_query_proto_msgTypes[199].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*IndexElem); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pg_query_proto_msgTypes[200].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Constraint); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pg_query_proto_msgTypes[201].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*DefElem); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pg_query_proto_msgTypes[202].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*RangeTblEntry); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pg_query_proto_msgTypes[203].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*RangeTblFunction); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pg_query_proto_msgTypes[204].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*TableSampleClause); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pg_query_proto_msgTypes[205].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*WithCheckOption); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pg_query_proto_msgTypes[206].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SortGroupClause); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pg_query_proto_msgTypes[207].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GroupingSet); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pg_query_proto_msgTypes[208].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*WindowClause); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pg_query_proto_msgTypes[209].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ObjectWithArgs); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pg_query_proto_msgTypes[210].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*AccessPriv); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pg_query_proto_msgTypes[211].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CreateOpClassItem); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pg_query_proto_msgTypes[212].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*TableLikeClause); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pg_query_proto_msgTypes[213].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*FunctionParameter); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pg_query_proto_msgTypes[214].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*LockingClause); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pg_query_proto_msgTypes[215].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*RowMarkClause); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pg_query_proto_msgTypes[216].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*XmlSerialize); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pg_query_proto_msgTypes[217].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*WithClause); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pg_query_proto_msgTypes[218].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*InferClause); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pg_query_proto_msgTypes[219].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*OnConflictClause); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pg_query_proto_msgTypes[220].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CommonTableExpr); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pg_query_proto_msgTypes[221].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*RoleSpec); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pg_query_proto_msgTypes[222].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*TriggerTransition); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pg_query_proto_msgTypes[223].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PartitionElem); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pg_query_proto_msgTypes[224].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PartitionSpec); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pg_query_proto_msgTypes[225].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PartitionBoundSpec); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pg_query_proto_msgTypes[226].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PartitionRangeDatum); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pg_query_proto_msgTypes[227].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PartitionCmd); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pg_query_proto_msgTypes[228].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*VacuumRelation); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pg_query_proto_msgTypes[229].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*InlineCodeBlock); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pg_query_proto_msgTypes[230].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CallContext); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pg_query_proto_msgTypes[231].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ScanToken); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } + file_pg_query_proto_msgTypes[2].OneofWrappers = []interface{}{ + (*Node_Alias)(nil), + (*Node_RangeVar)(nil), + (*Node_TableFunc)(nil), + (*Node_Expr)(nil), + (*Node_Var)(nil), + (*Node_Param)(nil), + (*Node_Aggref)(nil), + (*Node_GroupingFunc)(nil), + (*Node_WindowFunc)(nil), + (*Node_SubscriptingRef)(nil), + (*Node_FuncExpr)(nil), + (*Node_NamedArgExpr)(nil), + (*Node_OpExpr)(nil), + (*Node_DistinctExpr)(nil), + (*Node_NullIfExpr)(nil), + (*Node_ScalarArrayOpExpr)(nil), + (*Node_BoolExpr)(nil), + (*Node_SubLink)(nil), + (*Node_SubPlan)(nil), + (*Node_AlternativeSubPlan)(nil), + (*Node_FieldSelect)(nil), + (*Node_FieldStore)(nil), + (*Node_RelabelType)(nil), + (*Node_CoerceViaIo)(nil), + (*Node_ArrayCoerceExpr)(nil), + (*Node_ConvertRowtypeExpr)(nil), + (*Node_CollateExpr)(nil), + (*Node_CaseExpr)(nil), + (*Node_CaseWhen)(nil), + (*Node_CaseTestExpr)(nil), + (*Node_ArrayExpr)(nil), + (*Node_RowExpr)(nil), + (*Node_RowCompareExpr)(nil), + (*Node_CoalesceExpr)(nil), + (*Node_MinMaxExpr)(nil), + (*Node_SqlvalueFunction)(nil), + (*Node_XmlExpr)(nil), + (*Node_NullTest)(nil), + (*Node_BooleanTest)(nil), + (*Node_CoerceToDomain)(nil), + (*Node_CoerceToDomainValue)(nil), + (*Node_SetToDefault)(nil), + (*Node_CurrentOfExpr)(nil), + (*Node_NextValueExpr)(nil), + (*Node_InferenceElem)(nil), + (*Node_TargetEntry)(nil), + (*Node_RangeTblRef)(nil), + (*Node_JoinExpr)(nil), + (*Node_FromExpr)(nil), + (*Node_OnConflictExpr)(nil), + (*Node_IntoClause)(nil), + (*Node_RawStmt)(nil), + (*Node_Query)(nil), + (*Node_InsertStmt)(nil), + (*Node_DeleteStmt)(nil), + (*Node_UpdateStmt)(nil), + (*Node_SelectStmt)(nil), + (*Node_AlterTableStmt)(nil), + (*Node_AlterTableCmd)(nil), + (*Node_AlterDomainStmt)(nil), + (*Node_SetOperationStmt)(nil), + (*Node_GrantStmt)(nil), + (*Node_GrantRoleStmt)(nil), + (*Node_AlterDefaultPrivilegesStmt)(nil), + (*Node_ClosePortalStmt)(nil), + (*Node_ClusterStmt)(nil), + (*Node_CopyStmt)(nil), + (*Node_CreateStmt)(nil), + (*Node_DefineStmt)(nil), + (*Node_DropStmt)(nil), + (*Node_TruncateStmt)(nil), + (*Node_CommentStmt)(nil), + (*Node_FetchStmt)(nil), + (*Node_IndexStmt)(nil), + (*Node_CreateFunctionStmt)(nil), + (*Node_AlterFunctionStmt)(nil), + (*Node_DoStmt)(nil), + (*Node_RenameStmt)(nil), + (*Node_RuleStmt)(nil), + (*Node_NotifyStmt)(nil), + (*Node_ListenStmt)(nil), + (*Node_UnlistenStmt)(nil), + (*Node_TransactionStmt)(nil), + (*Node_ViewStmt)(nil), + (*Node_LoadStmt)(nil), + (*Node_CreateDomainStmt)(nil), + (*Node_CreatedbStmt)(nil), + (*Node_DropdbStmt)(nil), + (*Node_VacuumStmt)(nil), + (*Node_ExplainStmt)(nil), + (*Node_CreateTableAsStmt)(nil), + (*Node_CreateSeqStmt)(nil), + (*Node_AlterSeqStmt)(nil), + (*Node_VariableSetStmt)(nil), + (*Node_VariableShowStmt)(nil), + (*Node_DiscardStmt)(nil), + (*Node_CreateTrigStmt)(nil), + (*Node_CreatePlangStmt)(nil), + (*Node_CreateRoleStmt)(nil), + (*Node_AlterRoleStmt)(nil), + (*Node_DropRoleStmt)(nil), + (*Node_LockStmt)(nil), + (*Node_ConstraintsSetStmt)(nil), + (*Node_ReindexStmt)(nil), + (*Node_CheckPointStmt)(nil), + (*Node_CreateSchemaStmt)(nil), + (*Node_AlterDatabaseStmt)(nil), + (*Node_AlterDatabaseSetStmt)(nil), + (*Node_AlterRoleSetStmt)(nil), + (*Node_CreateConversionStmt)(nil), + (*Node_CreateCastStmt)(nil), + (*Node_CreateOpClassStmt)(nil), + (*Node_CreateOpFamilyStmt)(nil), + (*Node_AlterOpFamilyStmt)(nil), + (*Node_PrepareStmt)(nil), + (*Node_ExecuteStmt)(nil), + (*Node_DeallocateStmt)(nil), + (*Node_DeclareCursorStmt)(nil), + (*Node_CreateTableSpaceStmt)(nil), + (*Node_DropTableSpaceStmt)(nil), + (*Node_AlterObjectDependsStmt)(nil), + (*Node_AlterObjectSchemaStmt)(nil), + (*Node_AlterOwnerStmt)(nil), + (*Node_AlterOperatorStmt)(nil), + (*Node_AlterTypeStmt)(nil), + (*Node_DropOwnedStmt)(nil), + (*Node_ReassignOwnedStmt)(nil), + (*Node_CompositeTypeStmt)(nil), + (*Node_CreateEnumStmt)(nil), + (*Node_CreateRangeStmt)(nil), + (*Node_AlterEnumStmt)(nil), + (*Node_AlterTsdictionaryStmt)(nil), + (*Node_AlterTsconfigurationStmt)(nil), + (*Node_CreateFdwStmt)(nil), + (*Node_AlterFdwStmt)(nil), + (*Node_CreateForeignServerStmt)(nil), + (*Node_AlterForeignServerStmt)(nil), + (*Node_CreateUserMappingStmt)(nil), + (*Node_AlterUserMappingStmt)(nil), + (*Node_DropUserMappingStmt)(nil), + (*Node_AlterTableSpaceOptionsStmt)(nil), + (*Node_AlterTableMoveAllStmt)(nil), + (*Node_SecLabelStmt)(nil), + (*Node_CreateForeignTableStmt)(nil), + (*Node_ImportForeignSchemaStmt)(nil), + (*Node_CreateExtensionStmt)(nil), + (*Node_AlterExtensionStmt)(nil), + (*Node_AlterExtensionContentsStmt)(nil), + (*Node_CreateEventTrigStmt)(nil), + (*Node_AlterEventTrigStmt)(nil), + (*Node_RefreshMatViewStmt)(nil), + (*Node_ReplicaIdentityStmt)(nil), + (*Node_AlterSystemStmt)(nil), + (*Node_CreatePolicyStmt)(nil), + (*Node_AlterPolicyStmt)(nil), + (*Node_CreateTransformStmt)(nil), + (*Node_CreateAmStmt)(nil), + (*Node_CreatePublicationStmt)(nil), + (*Node_AlterPublicationStmt)(nil), + (*Node_CreateSubscriptionStmt)(nil), + (*Node_AlterSubscriptionStmt)(nil), + (*Node_DropSubscriptionStmt)(nil), + (*Node_CreateStatsStmt)(nil), + (*Node_AlterCollationStmt)(nil), + (*Node_CallStmt)(nil), + (*Node_AlterStatsStmt)(nil), + (*Node_AExpr)(nil), + (*Node_ColumnRef)(nil), + (*Node_ParamRef)(nil), + (*Node_AConst)(nil), + (*Node_FuncCall)(nil), + (*Node_AStar)(nil), + (*Node_AIndices)(nil), + (*Node_AIndirection)(nil), + (*Node_AArrayExpr)(nil), + (*Node_ResTarget)(nil), + (*Node_MultiAssignRef)(nil), + (*Node_TypeCast)(nil), + (*Node_CollateClause)(nil), + (*Node_SortBy)(nil), + (*Node_WindowDef)(nil), + (*Node_RangeSubselect)(nil), + (*Node_RangeFunction)(nil), + (*Node_RangeTableSample)(nil), + (*Node_RangeTableFunc)(nil), + (*Node_RangeTableFuncCol)(nil), + (*Node_TypeName)(nil), + (*Node_ColumnDef)(nil), + (*Node_IndexElem)(nil), + (*Node_Constraint)(nil), + (*Node_DefElem)(nil), + (*Node_RangeTblEntry)(nil), + (*Node_RangeTblFunction)(nil), + (*Node_TableSampleClause)(nil), + (*Node_WithCheckOption)(nil), + (*Node_SortGroupClause)(nil), + (*Node_GroupingSet)(nil), + (*Node_WindowClause)(nil), + (*Node_ObjectWithArgs)(nil), + (*Node_AccessPriv)(nil), + (*Node_CreateOpClassItem)(nil), + (*Node_TableLikeClause)(nil), + (*Node_FunctionParameter)(nil), + (*Node_LockingClause)(nil), + (*Node_RowMarkClause)(nil), + (*Node_XmlSerialize)(nil), + (*Node_WithClause)(nil), + (*Node_InferClause)(nil), + (*Node_OnConflictClause)(nil), + (*Node_CommonTableExpr)(nil), + (*Node_RoleSpec)(nil), + (*Node_TriggerTransition)(nil), + (*Node_PartitionElem)(nil), + (*Node_PartitionSpec)(nil), + (*Node_PartitionBoundSpec)(nil), + (*Node_PartitionRangeDatum)(nil), + (*Node_PartitionCmd)(nil), + (*Node_VacuumRelation)(nil), + (*Node_InlineCodeBlock)(nil), + (*Node_CallContext)(nil), + (*Node_Integer)(nil), + (*Node_Float)(nil), + (*Node_String_)(nil), + (*Node_BitString)(nil), + (*Node_Null)(nil), + (*Node_List)(nil), + (*Node_IntList)(nil), + (*Node_OidList)(nil), + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_pg_query_proto_rawDesc, + NumEnums: 57, + NumMessages: 232, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_pg_query_proto_goTypes, + DependencyIndexes: file_pg_query_proto_depIdxs, + EnumInfos: file_pg_query_proto_enumTypes, + MessageInfos: file_pg_query_proto_msgTypes, + }.Build() + File_pg_query_proto = out.File + file_pg_query_proto_rawDesc = nil + file_pg_query_proto_goTypes = nil + file_pg_query_proto_depIdxs = nil +} diff --git a/testdata/fingerprint.json b/testdata/fingerprint.json index 4e75d28c..4724fe93 100644 --- a/testdata/fingerprint.json +++ b/testdata/fingerprint.json @@ -1,349 +1,429 @@ [ { "input": "SELECT 1", - "expectedParts": ["RawStmt", "stmt", "SelectStmt", "targetList", "ResTarget"], - "expectedHash": "02a281c251c3a43d2fe7457dff01f76c5cc523f8c8" + "expectedParts": ["RawStmt", "stmt", "SelectStmt", "limitOption", "LIMIT_OPTION_DEFAULT", "op", "SETOP_NONE", "targetList", "ResTarget"], + "expectedHash": "50fde20626009aba" }, { "input": "SELECT 2", - "expectedParts": ["RawStmt", "stmt", "SelectStmt", "targetList", "ResTarget"], - "expectedHash": "02a281c251c3a43d2fe7457dff01f76c5cc523f8c8" + "expectedParts": ["RawStmt", "stmt", "SelectStmt", "limitOption", "LIMIT_OPTION_DEFAULT", "op", "SETOP_NONE", "targetList", "ResTarget"], + "expectedHash": "50fde20626009aba" }, { "input": "SELECT ?", - "expectedParts": ["RawStmt", "stmt", "SelectStmt", "targetList", "ResTarget"], - "expectedHash": "02a281c251c3a43d2fe7457dff01f76c5cc523f8c8" + "expectedParts": ["RawStmt", "stmt", "SelectStmt", "limitOption", "LIMIT_OPTION_DEFAULT", "op", "SETOP_NONE", "targetList", "ResTarget"], + "expectedHash": "50fde20626009aba" }, { "input": "SELECT $1", - "expectedParts": ["RawStmt", "stmt", "SelectStmt", "targetList", "ResTarget"], - "expectedHash": "02a281c251c3a43d2fe7457dff01f76c5cc523f8c8" + "expectedParts": ["RawStmt", "stmt", "SelectStmt", "limitOption", "LIMIT_OPTION_DEFAULT", "op", "SETOP_NONE", "targetList", "ResTarget"], + "expectedHash": "50fde20626009aba" }, { "input": "SELECT 1; SELECT a FROM b", - "expectedParts": ["RawStmt", "stmt", "SelectStmt", "targetList", "ResTarget", + "expectedParts": ["RawStmt", "stmt", "SelectStmt", "limitOption", "LIMIT_OPTION_DEFAULT", "op", "SETOP_NONE", "targetList", "ResTarget", "RawStmt", "stmt", "SelectStmt", "fromClause", "RangeVar", "inh", "true", "relname", "b", "relpersistence", - "p", "targetList", "ResTarget", "val", "ColumnRef", "fields", "String", "str", "a"], - "expectedHash": "022d95ebf869846cd1d852ae7a62d2c927bffced73" + "p", "limitOption", "LIMIT_OPTION_DEFAULT", "op", "SETOP_NONE", "targetList", + "ResTarget", "val", "ColumnRef", "fields", "String", "str", "a"], + "expectedHash": "3efa3b10d558d06d" }, { "input": "SELECT COUNT(DISTINCT id), * FROM targets WHERE something IS NOT NULL AND elsewhere::interval < now()", "expectedParts": ["RawStmt", "stmt", "SelectStmt", "fromClause", "RangeVar", "inh", "true", "relname", - "targets", "relpersistence", "p", "targetList", "ResTarget", "val", "ColumnRef", - "fields", "A_Star", "ResTarget", "val", "FuncCall", "agg_distinct", "true", "args", - "ColumnRef", "fields", "String", "str", "id", "funcname", "String", "str", "count", - "whereClause", "BoolExpr", "args", "NullTest", "arg", "ColumnRef", "fields", "String", - "str", "something", "nulltesttype", "1", "A_Expr", "lexpr", "TypeCast", "arg", - "ColumnRef", "fields", "String", "str", "elsewhere", "typeName", "TypeName", + "targets", "relpersistence", "p", "limitOption", "LIMIT_OPTION_DEFAULT", "op", "SETOP_NONE", "targetList", "ResTarget", "val", + "FuncCall", "agg_distinct", "true", "args", "ColumnRef", "fields", "String", "str", "id", "funcname", "String", "str", "count", + "ResTarget", "val", "ColumnRef", "fields", "A_Star", + "whereClause", "BoolExpr", "args", "A_Expr", "kind", "AEXPR_OP", "lexpr", "TypeCast", "arg", + "ColumnRef", "fields", "String", "str", "elsewhere", "typeName", "names", "String", "str", "pg_catalog", "String", "str", "interval", "typemod", "-1", "name", "String", "str", "<", "rexpr", "FuncCall", "funcname", "String", - "str", "now"], - "expectedHash": "0271480ed85a1e9f9d4b71c7eafdd632b5a6bb443f" + "str", "now", "NullTest", "arg", "ColumnRef", "fields", "String", + "str", "something", "nulltesttype", "IS_NOT_NULL", "boolop", "AND_EXPR"], + "expectedHash": "4380dd02d56bbe1a" }, { "input": "INSERT INTO test (a, b) VALUES (?, ?)", "expectedParts": ["RawStmt", "stmt", "InsertStmt", "cols", "ResTarget", - "name", "a", "ResTarget", "name", "b", "relation", "RangeVar", - "inh", "true", "relname", "test", "relpersistence", "p", "selectStmt", "SelectStmt"], - "expectedHash": "02809368278814c4c8ec65e47425fdaf559483f8f6" + "name", "b", "ResTarget", "name", "a", "override", "OVERRIDING_NOT_SET", "relation", + "inh", "true", "relname", "test", "relpersistence", "p", "selectStmt", "SelectStmt", "limitOption", "LIMIT_OPTION_DEFAULT", "op", "SETOP_NONE"], + "expectedHash": "51e63b8083b48bdd" }, { "input": "INSERT INTO test (b, a) VALUES (?, ?)", "expectedParts": ["RawStmt", "stmt", "InsertStmt", "cols", "ResTarget", - "name", "a", "ResTarget", "name", "b", "relation", "RangeVar", - "inh", "true", "relname", "test", "relpersistence", "p", "selectStmt", "SelectStmt"], - "expectedHash": "02809368278814c4c8ec65e47425fdaf559483f8f6" + "name", "b", "ResTarget", "name", "a", "override", "OVERRIDING_NOT_SET", "relation", + "inh", "true", "relname", "test", "relpersistence", "p", "selectStmt", "SelectStmt", "limitOption", "LIMIT_OPTION_DEFAULT", "op", "SETOP_NONE"], + "expectedHash": "51e63b8083b48bdd" }, { "input": "INSERT INTO test (a, b) VALUES (ARRAY[?, ?, ?, ?], ?::timestamptz), (ARRAY[?, ?, ?, ?], ?::timestamptz), (?, ?::timestamptz)", "expectedParts": ["RawStmt", "stmt", "InsertStmt", "cols", "ResTarget", "name", - "a", "ResTarget", "name", "b", "relation", "RangeVar", "inh", "true", - "relname", "test", "relpersistence", "p", "selectStmt", "SelectStmt", - "valuesLists", "A_ArrayExpr", "TypeCast", "typeName", "TypeName", "names", - "String", "str", "timestamptz", "typemod", "-1", "TypeCast", "typeName", - "TypeName", "names", "String", "str", "timestamptz", "typemod", "-1"], - "expectedHash": "02822becf2500e9e1d2843b272c1a1cd5eef353409" + "b", "ResTarget", "name", "a", "override", "OVERRIDING_NOT_SET", "relation", "inh", "true", + "relname", "test", "relpersistence", "p", "selectStmt", "SelectStmt", "limitOption", "LIMIT_OPTION_DEFAULT", "op", "SETOP_NONE", + "valuesLists", "A_ArrayExpr"], + "expectedHash": "4dfdd5260cac5acf" }, { "input": "SELECT b AS x, a AS y FROM z", "expectedParts": ["RawStmt", "stmt", "SelectStmt", "fromClause", "RangeVar", "inh", "true", "relname", "z", - "relpersistence", "p", "targetList", "ResTarget", "val", "ColumnRef", "fields", - "String", "str", "a", "ResTarget", "val", "ColumnRef", "fields", "String", "str", "b"], - "expectedHash": "020a812d6225e62b9492df056a6cb92032faed2145" + "relpersistence", "p", "limitOption", "LIMIT_OPTION_DEFAULT", "op", "SETOP_NONE", "targetList", "ResTarget", "val", "ColumnRef", "fields", + "String", "str", "b", "ResTarget", "val", "ColumnRef", "fields", "String", "str", "a"], + "expectedHash": "1a8bf5d7614de3a5" + }, + { + "input": "SELECT * FROM x WHERE y = ?", + "expectedParts": ["RawStmt", "stmt", "SelectStmt", "fromClause", "RangeVar", "inh", "true", "relname", "x", + "relpersistence", "p", "limitOption", "LIMIT_OPTION_DEFAULT", "op", "SETOP_NONE", "targetList", "ResTarget", "val", "ColumnRef", "fields", "A_Star", + "whereClause", "A_Expr", "kind", "AEXPR_OP", "lexpr", "ColumnRef", "fields", "String", "str", "y", + "name", "String", "str", "="], + "expectedHash": "4ff39426bd074231" + }, + { + "input": "SELECT * FROM x WHERE y = ANY ($1)", + "expectedParts": ["RawStmt", "stmt", "SelectStmt", "fromClause", "RangeVar", "inh", "true", "relname", "x", + "relpersistence", "p", "limitOption", "LIMIT_OPTION_DEFAULT", "op", "SETOP_NONE", "targetList", "ResTarget", "val", "ColumnRef", "fields", "A_Star", + "whereClause", "A_Expr", "kind", "AEXPR_OP", "lexpr", "ColumnRef", "fields", "String", "str", "y", + "name", "String", "str", "="], + "expectedHash": "4ff39426bd074231" }, { "input": "SELECT * FROM x WHERE y IN (?)", "expectedParts": ["RawStmt", "stmt", "SelectStmt", "fromClause", "RangeVar", "inh", "true", "relname", "x", - "relpersistence", "p", "targetList", "ResTarget", "val", "ColumnRef", "fields", "A_Star", - "whereClause", "A_Expr", "kind", "7", "lexpr", "ColumnRef", "fields", "String", "str", "y", + "relpersistence", "p", "limitOption", "LIMIT_OPTION_DEFAULT", "op", "SETOP_NONE", "targetList", "ResTarget", "val", "ColumnRef", "fields", "A_Star", + "whereClause", "A_Expr", "kind", "AEXPR_OP", "lexpr", "ColumnRef", "fields", "String", "str", "y", "name", "String", "str", "="], - "expectedHash": "027d1fc50db3034002373ed901faf3bd0e53399373" + "expectedHash": "4ff39426bd074231" }, { "input": "SELECT * FROM x WHERE y IN (?, ?, ?)", "expectedParts": ["RawStmt", "stmt", "SelectStmt", "fromClause", "RangeVar", "inh", "true", "relname", "x", - "relpersistence", "p", "targetList", "ResTarget", "val", "ColumnRef", "fields", "A_Star", - "whereClause", "A_Expr", "kind", "7", "lexpr", "ColumnRef", "fields", "String", "str", "y", + "relpersistence", "p", "limitOption", "LIMIT_OPTION_DEFAULT", "op", "SETOP_NONE", "targetList", "ResTarget", "val", "ColumnRef", "fields", "A_Star", + "whereClause", "A_Expr", "kind", "AEXPR_OP", "lexpr", "ColumnRef", "fields", "String", "str", "y", "name", "String", "str", "="], - "expectedHash": "027d1fc50db3034002373ed901faf3bd0e53399373" + "expectedHash": "4ff39426bd074231" }, { "input": "SELECT * FROM x WHERE y IN ( ?::uuid )", "expectedParts": ["RawStmt", "stmt", "SelectStmt", "fromClause", "RangeVar", "inh", "true", "relname", "x", - "relpersistence", "p", "targetList", "ResTarget", "val", "ColumnRef", "fields", "A_Star", - "whereClause", "A_Expr", "kind", "7", "lexpr", "ColumnRef", "fields", "String", "str", "y", - "name", "String", "str", "=", "rexpr", "TypeCast", "typeName", "TypeName", "names", - "String", "str", "uuid", "typemod", "-1"], - "expectedHash": "0296be7c7a3f1807c10199d428a575d550be953191" + "relpersistence", "p", "limitOption", "LIMIT_OPTION_DEFAULT", "op", "SETOP_NONE", "targetList", "ResTarget", "val", "ColumnRef", "fields", "A_Star", + "whereClause", "A_Expr", "kind", "AEXPR_OP", "lexpr", "ColumnRef", "fields", "String", "str", "y", + "name", "String", "str", "="], + "expectedHash": "4ff39426bd074231" }, { "input": "SELECT * FROM x WHERE y IN ( ?::uuid, ?::uuid, ?::uuid )", "expectedParts": ["RawStmt", "stmt", "SelectStmt", "fromClause", "RangeVar", "inh", "true", "relname", "x", - "relpersistence", "p", "targetList", "ResTarget", "val", "ColumnRef", "fields", "A_Star", - "whereClause", "A_Expr", "kind", "7", "lexpr", "ColumnRef", "fields", "String", "str", "y", - "name", "String", "str", "=", "rexpr", "TypeCast", "typeName", "TypeName", "names", - "String", "str", "uuid", "typemod", "-1"], - "expectedHash": "0296be7c7a3f1807c10199d428a575d550be953191" + "relpersistence", "p", "limitOption", "LIMIT_OPTION_DEFAULT", "op", "SETOP_NONE", "targetList", "ResTarget", "val", "ColumnRef", "fields", "A_Star", + "whereClause", "A_Expr", "kind", "AEXPR_OP", "lexpr", "ColumnRef", "fields", "String", "str", "y", + "name", "String", "str", "="], + "expectedHash": "4ff39426bd074231" }, { "input": "PREPARE a123 AS SELECT a", "expectedParts": ["RawStmt", "stmt", "PrepareStmt", "query", "SelectStmt", + "limitOption", "LIMIT_OPTION_DEFAULT", "op", "SETOP_NONE", "targetList", "ResTarget", "val", "ColumnRef", "fields", "String", "str", "a"], - "expectedHash": "0219588a6aa1dbd44f69ed53c3a1d9310b429a209e" + "expectedHash": "9b5e6ead8be993e8" }, { "input": "EXECUTE a123", "expectedParts": ["RawStmt", "stmt", "ExecuteStmt"], - "expectedHash": "02b6b0d1fe77746f47d251c04fe0de2400ca931952" + "expectedHash": "44ef1d2beabd53e8" }, { "input": "DEALLOCATE a123", "expectedParts": ["RawStmt", "stmt", "DeallocateStmt"], - "expectedHash": "0285ab48ffa7645cf16d6a5544d4c33501ded1ee85" + "expectedHash": "d8a65a814fbc5f95" }, { "input": "DEALLOCATE ALL", "expectedParts": ["RawStmt", "stmt", "DeallocateStmt"], - "expectedHash": "0285ab48ffa7645cf16d6a5544d4c33501ded1ee85" + "expectedHash": "d8a65a814fbc5f95" }, { "input": "EXPLAIN ANALYZE SELECT a", "expectedParts": ["RawStmt", "stmt", "ExplainStmt", "options", "DefElem", - "defname", "analyze", "query", "SelectStmt", "targetList", "ResTarget", - "val", "ColumnRef", "fields", "String", "str", "a"], - "expectedHash": "02f8fdcce6547cedcaa90ffecb33c829a8cbeecce7" + "defaction", "DEFELEM_UNSPEC", "defname", "analyze", "query", "SelectStmt", "limitOption", "LIMIT_OPTION_DEFAULT", "op", "SETOP_NONE", + "targetList", "ResTarget", "val", "ColumnRef", "fields", "String", "str", "a"], + "expectedHash": "82845c1b5c6102e5" }, { "input": "WITH a AS (SELECT * FROM x WHERE x.y = ? AND x.z = 1) SELECT * FROM a", - "expectedParts": ["RawStmt", "stmt", "SelectStmt", "fromClause", "RangeVar", "inh", "true", "relname", "a", - "relpersistence", "p", "targetList", "ResTarget", "val", "ColumnRef", "fields", "A_Star", - "withClause", "WithClause", "ctes", "CommonTableExpr", "ctename", "a", "ctequery", - "SelectStmt", "fromClause", "RangeVar", "inh", "true", "relname", "x", "relpersistence", - "p", "targetList", "ResTarget", "val", "ColumnRef", "fields", "A_Star", "whereClause", - "BoolExpr", "args", "A_Expr", "lexpr", "ColumnRef", "fields", "String", - "str", "x", "String", "str", "y", "name", "String", "str", "=", - "A_Expr", "lexpr", "ColumnRef", "fields", "String", "str", "x", "String", "str", - "z", "name", "String", "str", "="], - "expectedHash": "0234e0886f3215dd300343b56771e123dc43089679" + "expectedParts": ["RawStmt", "stmt", "SelectStmt", "fromClause", "RangeVar", + "inh", "true", "relname", "a", "relpersistence", "p", "limitOption", + "LIMIT_OPTION_DEFAULT", "op", "SETOP_NONE", "targetList", "ResTarget", + "val", "ColumnRef", "fields", "A_Star", "withClause", + "ctes", "CommonTableExpr", "ctematerialized", "CTEMaterializeDefault", + "ctename", "a", "ctequery", "SelectStmt", "fromClause", "RangeVar", + "inh", "true", "relname", "x", "relpersistence", "p", "limitOption", + "LIMIT_OPTION_DEFAULT", "op", "SETOP_NONE", "targetList", "ResTarget", + "val", "ColumnRef", "fields", "A_Star", "whereClause", "BoolExpr", + "args", "A_Expr", "kind", "AEXPR_OP", "lexpr", "ColumnRef", "fields", + "String", "str", "x", "String", "str", "y", "name", "String", "str", + "=", "A_Expr", "kind", "AEXPR_OP", "lexpr", "ColumnRef", "fields", + "String", "str", "x", "String", "str", "z", "name", "String", "str", + "=", "boolop", "AND_EXPR"], + "expectedHash": "6831e38bbb3dd18c" }, { "input": "CREATE TABLE types (a float(2), b float(49), c NUMERIC(2, 3), d character(4), e char(5), f varchar(6), g character varying(7))", - "expectedParts": ["RawStmt", "stmt", "CreateStmt", "relation", "RangeVar", "inh", "true", "relname", "types", + "expectedParts": ["RawStmt", "stmt", "CreateStmt", "oncommit", "ONCOMMIT_NOOP", "relation", "inh", "true", "relname", "types", "relpersistence", "p", "tableElts", "ColumnDef", "colname", "a", "is_local", "true", - "typeName", "TypeName", "names", "String", "str", "pg_catalog", "String", "str", "float4", - "typemod", "-1", "ColumnDef", "colname", "b", "is_local", "true", "typeName", "TypeName", + "typeName", "names", "String", "str", "pg_catalog", "String", "str", "float4", + "typemod", "-1", "ColumnDef", "colname", "b", "is_local", "true", "typeName", "names", "String", "str", "pg_catalog", "String", "str", "float8", "typemod", "-1", - "ColumnDef", "colname", "c", "is_local", "true", "typeName", "TypeName", "names", + "ColumnDef", "colname", "c", "is_local", "true", "typeName", "names", "String", "str", "pg_catalog", "String", "str", "numeric", "typemod", "-1", - "ColumnDef", "colname", "d", "is_local", "true", "typeName", "TypeName", "names", "String", + "ColumnDef", "colname", "d", "is_local", "true", "typeName", "names", "String", "str", "pg_catalog", "String", "str", "bpchar", "typemod", "-1", "ColumnDef", - "colname", "e", "is_local", "true", "typeName", "TypeName", "names", "String", "str", + "colname", "e", "is_local", "true", "typeName", "names", "String", "str", "pg_catalog", "String", "str", "bpchar", "typemod", "-1", "ColumnDef", "colname", - "f", "is_local", "true", "typeName", "TypeName", "names", "String", "str", "pg_catalog", + "f", "is_local", "true", "typeName", "names", "String", "str", "pg_catalog", "String", "str", "varchar", "typemod", "-1", "ColumnDef", "colname", "g", - "is_local", "true", "typeName", "TypeName", "names", "String", "str", "pg_catalog", + "is_local", "true", "typeName", "names", "String", "str", "pg_catalog", "String", "str", "varchar", "typemod", "-1"], - "expectedHash": "02d627474d197317c5d9ff356caa89b6d18a5647ce" + "expectedHash": "008d6ba4aa0f4c6e" }, { "input": "CREATE VIEW view_a (a, b) AS WITH RECURSIVE view_a (a, b) AS (SELECT * FROM a(1)) SELECT \"a\", \"b\" FROM \"view_a\"", - "expectedParts": ["RawStmt", "stmt", "ViewStmt", "aliases", "String", "str", "a", "String", "str", "b", "query", - "SelectStmt", "fromClause", "RangeVar", "inh", "true", "relname", "view_a", "relpersistence", "p", - "targetList", "ResTarget", "val", "ColumnRef", "fields", "String", "str", "a", "ResTarget", "val", - "ColumnRef", "fields", "String", "str", "b", "withClause", "WithClause", "ctes", "CommonTableExpr", - "aliascolnames", "String", "str", "a", "String", "str", "b", "ctename", "view_a", "ctequery", - "SelectStmt", "fromClause", "RangeFunction", "functions", "FuncCall", "funcname", - "String", "str", "a", "targetList", "ResTarget", "val", "ColumnRef", "fields", "A_Star", - "recursive", "true", "view", "RangeVar", "inh", "true", "relname", "view_a", "relpersistence", "p"], - "expectedHash": "024666d87256b329fad0cc42ddb9688e111ed1107f" + "expectedParts": ["RawStmt", "stmt", "ViewStmt", "aliases", "String", "str", "a", + "String", "str", "b", "query", "SelectStmt", "fromClause", "RangeVar", "inh", "true", + "relname", "view_a", "relpersistence", "p", "limitOption", "LIMIT_OPTION_DEFAULT", "op", + "SETOP_NONE", "targetList", "ResTarget", "val", "ColumnRef", "fields", "String", + "str", "b", "ResTarget", "val", "ColumnRef", "fields", "String", "str", "a", + "withClause", "ctes", "CommonTableExpr", "aliascolnames", + "String", "str", "a", "String", "str", "b", "ctematerialized", "CTEMaterializeDefault", + "ctename", "view_a", "ctequery", "SelectStmt", "fromClause", "RangeFunction", + "functions", "FuncCall", "funcname", "String", "str", "a", "limitOption", "LIMIT_OPTION_DEFAULT", + "op", "SETOP_NONE", "targetList", "ResTarget", "val", "ColumnRef", "fields", "A_Star", + "recursive", "true", "view", "inh", "true", "relname", "view_a", + "relpersistence", "p", "withCheckOption", "NO_CHECK_OPTION"], + "expectedHash": "6236405577a6cea6" }, { "input": "VACUUM FULL my_table", - "expectedParts": ["RawStmt", "stmt", "VacuumStmt", "options", "17", "relation", - "RangeVar", "inh", "true", "relname", "my_table", "relpersistence", "p"], - "expectedHash": "026e33edee478fb8051ce69601bffb50e4f31cfc8d" + "expectedParts": ["RawStmt", "stmt", "VacuumStmt", "is_vacuumcmd", "true", "options", + "DefElem", "defaction", "DEFELEM_UNSPEC", "defname", "full", "rels", "VacuumRelation", "relation", + "inh", "true", "relname", "my_table", "relpersistence", "p"], + "expectedHash": "fdf2f4127644f4d8" }, { "input": "SELECT * FROM x AS a, y AS b", "expectedParts": ["RawStmt", "stmt", "SelectStmt", "fromClause", "RangeVar", "inh", "true", "relname", "x", "relpersistence", "p", "RangeVar", "inh", "true", "relname", "y", - "relpersistence", "p", "targetList", "ResTarget", "val", "ColumnRef", "fields", "A_Star"], - "expectedHash": "02e50dcae0f1a1e237231d9d8e411383ba7f25068c" + "relpersistence", "p", "limitOption", "LIMIT_OPTION_DEFAULT", "op", "SETOP_NONE", "targetList", "ResTarget", "val", "ColumnRef", "fields", "A_Star"], + "expectedHash": "4e9acae841dae228" }, { "input": "SELECT * FROM y AS a, x AS b", "expectedParts": ["RawStmt", "stmt", "SelectStmt", "fromClause", "RangeVar", "inh", "true", "relname", "x", "relpersistence", "p", "RangeVar", "inh", "true", "relname", "y", - "relpersistence", "p", "targetList", "ResTarget", "val", "ColumnRef", "fields", "A_Star"], - "expectedHash": "02e50dcae0f1a1e237231d9d8e411383ba7f25068c" + "relpersistence", "p", "limitOption", "LIMIT_OPTION_DEFAULT", "op", "SETOP_NONE", "targetList", "ResTarget", "val", "ColumnRef", "fields", "A_Star"], + "expectedHash": "4e9acae841dae228" }, { "input": "SELECT x AS a, y AS b FROM x", "expectedParts": ["RawStmt", "stmt", "SelectStmt", "fromClause", "RangeVar", "inh", "true", "relname", "x", - "relpersistence", "p", "targetList", "ResTarget", "val", "ColumnRef", "fields", "String", + "relpersistence", "p", "limitOption", "LIMIT_OPTION_DEFAULT", "op", "SETOP_NONE", "targetList", "ResTarget", "val", "ColumnRef", "fields", "String", "str", "x", "ResTarget", "val", "ColumnRef", "fields", "String", "str", "y"], - "expectedHash": "023e9771320c87e28d459a204cb9f7ec31b742143d" + "expectedHash": "65dff5f5e9a643ad" }, { "input": "SELECT y AS a, x AS b FROM x", "expectedParts": ["RawStmt", "stmt", "SelectStmt", "fromClause", "RangeVar", "inh", "true", "relname", "x", - "relpersistence", "p", "targetList", "ResTarget", "val", "ColumnRef", "fields", "String", + "relpersistence", "p", "limitOption", "LIMIT_OPTION_DEFAULT", "op", "SETOP_NONE", "targetList", "ResTarget", "val", "ColumnRef", "fields", "String", "str", "x", "ResTarget", "val", "ColumnRef", "fields", "String", "str", "y"], - "expectedHash": "023e9771320c87e28d459a204cb9f7ec31b742143d" + "expectedHash": "65dff5f5e9a643ad" }, { "input": "SELECT x, y FROM z", "expectedParts": ["RawStmt", "stmt", "SelectStmt", "fromClause", "RangeVar", "inh", "true", "relname", "z", - "relpersistence", "p", "targetList", "ResTarget", "val", "ColumnRef", "fields", + "relpersistence", "p", "limitOption", "LIMIT_OPTION_DEFAULT", "op", "SETOP_NONE", "targetList", "ResTarget", "val", "ColumnRef", "fields", "String", "str", "x", "ResTarget", "val", "ColumnRef", "fields", "String", "str", "y"], - "expectedHash": "025bad7941491107df4b3c6bc0be2dfca4eba836d9" + "expectedHash": "330267237da5535f" }, { "input": "SELECT y, x FROM z", "expectedParts": ["RawStmt", "stmt", "SelectStmt", "fromClause", "RangeVar", "inh", "true", "relname", "z", - "relpersistence", "p", "targetList", "ResTarget", "val", "ColumnRef", "fields", + "relpersistence", "p", "limitOption", "LIMIT_OPTION_DEFAULT", "op", "SETOP_NONE", "targetList", "ResTarget", "val", "ColumnRef", "fields", "String", "str", "x", "ResTarget", "val", "ColumnRef", "fields", "String", "str", "y"], - "expectedHash": "025bad7941491107df4b3c6bc0be2dfca4eba836d9" + "expectedHash": "330267237da5535f" }, { "input": "INSERT INTO films (code, title, did) VALUES ('UA502', 'Bananas', 105), ('T_601', 'Yojimbo', DEFAULT)", - "expectedParts": ["RawStmt", "stmt", "InsertStmt", "cols", "ResTarget", "name", "code", "ResTarget", "name", "did", - "ResTarget", "name", "title", "relation", "RangeVar", "inh", "true", "relname", "films", - "relpersistence", "p", "selectStmt", "SelectStmt"], - "expectedHash": "02f27f8c6bb6cdd696245cddb91d19ac5993a652f3" + "expectedParts": ["RawStmt", "stmt", "InsertStmt", "cols", "ResTarget", "name", "title", "ResTarget", "name", "did", + "ResTarget", "name", "code", "override", "OVERRIDING_NOT_SET", "relation", "inh", "true", "relname", "films", + "relpersistence", "p", "selectStmt", "SelectStmt", "limitOption", "LIMIT_OPTION_DEFAULT", "op", "SETOP_NONE"], + "expectedHash": "459fdc70778b841e" }, { "input": "INSERT INTO films (code, title, did) VALUES (?, ?, ?)", - "expectedParts": ["RawStmt", "stmt", "InsertStmt", "cols", "ResTarget", "name", "code", "ResTarget", "name", "did", - "ResTarget", "name", "title", "relation", "RangeVar", "inh", "true", "relname", "films", - "relpersistence", "p", "selectStmt", "SelectStmt"], - "expectedHash": "02f27f8c6bb6cdd696245cddb91d19ac5993a652f3" + "expectedParts": ["RawStmt", "stmt", "InsertStmt", "cols", "ResTarget", "name", "title", "ResTarget", "name", "did", + "ResTarget", "name", "code", "override", "OVERRIDING_NOT_SET", "relation", "inh", "true", "relname", "films", + "relpersistence", "p", "selectStmt", "SelectStmt", "limitOption", "LIMIT_OPTION_DEFAULT", "op", "SETOP_NONE"], + "expectedHash": "459fdc70778b841e" }, { "input": "SELECT * FROM a", "expectedParts": ["RawStmt", "stmt", "SelectStmt", "fromClause", "RangeVar", "inh", "true", "relname", "a", - "relpersistence", "p", "targetList", "ResTarget", "val", "ColumnRef", "fields", "A_Star"], - "expectedHash": "02229f8b4376f20089054768237e1013753c0bf26a" + "relpersistence", "p", "limitOption", "LIMIT_OPTION_DEFAULT", "op", "SETOP_NONE", "targetList", "ResTarget", "val", "ColumnRef", "fields", "A_Star"], + "expectedHash": "fcf44da7b597ef43" }, { "input": "SELECT * FROM a AS b", "expectedParts": ["RawStmt", "stmt", "SelectStmt", "fromClause", "RangeVar", "inh", "true", "relname", "a", - "relpersistence", "p", "targetList", "ResTarget", "val", "ColumnRef", "fields", "A_Star"], - "expectedHash": "02229f8b4376f20089054768237e1013753c0bf26a" + "relpersistence", "p", "limitOption", "LIMIT_OPTION_DEFAULT", "op", "SETOP_NONE", "targetList", "ResTarget", "val", "ColumnRef", "fields", "A_Star"], + "expectedHash": "fcf44da7b597ef43" }, { "input": "UPDATE users SET one_thing = $1, second_thing = $2 WHERE users.id = ?", - "expectedParts": ["RawStmt", "stmt", "UpdateStmt", "relation", "RangeVar", "inh", "true", "relname", "users", "relpersistence", "p", + "expectedParts": ["RawStmt", "stmt", "UpdateStmt", "relation", "inh", "true", "relname", "users", "relpersistence", "p", "targetList", "ResTarget", "name", "one_thing", "ResTarget", "name", "second_thing", - "whereClause", "A_Expr", "lexpr", "ColumnRef", "fields", "String", + "whereClause", "A_Expr", "kind", "AEXPR_OP", "lexpr", "ColumnRef", "fields", "String", "str", "users", "String", "str", "id", "name", "String", "str", "="], - "expectedHash": "020368c4589ee86e6ffb120a23f4eb229696ad6b5c" + "expectedHash": "a0ea386c1cfd1e69" }, { "input": "UPDATE users SET something_else = $1 WHERE users.id = ?", - "expectedParts": ["RawStmt", "stmt", "UpdateStmt", "relation", "RangeVar", "inh", "true", "relname", "users", "relpersistence", "p", - "targetList", "ResTarget", "name", "something_else", "whereClause", "A_Expr", "lexpr", "ColumnRef", "fields", "String", + "expectedParts": ["RawStmt", "stmt", "UpdateStmt", "relation", "inh", "true", "relname", "users", "relpersistence", "p", + "targetList", "ResTarget", "name", "something_else", "whereClause", "A_Expr", "kind", "AEXPR_OP", "lexpr", "ColumnRef", "fields", "String", "str", "users", "String", "str", "id", "name", "String", "str", "="], - "expectedHash": "0246b178c04ead24fa3e8eb1917bb6c694b84e6d54" + "expectedHash": "3172bc3e0d631d55" }, { "input": "UPDATE users SET something_else = (SELECT a FROM x WHERE uid = users.id LIMIT 1) WHERE users.id = ?", - "expectedParts": ["RawStmt", "stmt", "UpdateStmt", "relation", "RangeVar", "inh", "true", "relname", "users", "relpersistence", "p", - "targetList", "ResTarget", "name", "something_else", "val", "SubLink", "subLinkType", "4", "subselect", "SelectStmt", "fromClause", - "RangeVar", "inh", "true", "relname", "x", "relpersistence", "p", "targetList", "ResTarget", "val", "ColumnRef", - "fields", "String", "str", "a", "whereClause", "A_Expr", "lexpr", "ColumnRef", "fields", "String", "str", "uid", + "expectedParts": ["RawStmt", "stmt", "UpdateStmt", "relation", "inh", "true", "relname", "users", "relpersistence", "p", + "targetList", "ResTarget", "name", "something_else", "val", "SubLink", "subLinkType", "EXPR_SUBLINK", "subselect", "SelectStmt", "fromClause", + "RangeVar", "inh", "true", "relname", "x", "relpersistence", "p", "limitOption", "LIMIT_OPTION_COUNT", "op", "SETOP_NONE", "targetList", "ResTarget", "val", "ColumnRef", + "fields", "String", "str", "a", "whereClause", "A_Expr", "kind", "AEXPR_OP", "lexpr", "ColumnRef", "fields", "String", "str", "uid", "name", "String", "str", "=", "rexpr", "ColumnRef", "fields", "String", "str", "users", "String", "str", "id", - "whereClause", "A_Expr", "lexpr", "ColumnRef", "fields", "String", "str", "users", "String", "str", "id", "name", "String", "str", "="], - "expectedHash": "02af9dd92089b870cdbb316f211da5700e0a65a084" + "whereClause", "A_Expr", "kind", "AEXPR_OP", "lexpr", "ColumnRef", "fields", "String", "str", "users", "String", "str", "id", "name", "String", "str", "="], + "expectedHash": "f1127a8b91fbecbf" }, { "input": "SAVEPOINT some_id", - "expectedParts": ["RawStmt", "stmt", "TransactionStmt", "kind", "4"], - "expectedHash": "02af350f3cb116f536042f0ca82205cab64eae5098" + "expectedParts": ["RawStmt", "stmt", "TransactionStmt", "kind", "TRANS_STMT_SAVEPOINT"], + "expectedHash": "8ebd566ea1bf947b" }, { "input": "RELEASE some_id", - "expectedParts": ["RawStmt", "stmt", "TransactionStmt", "kind", "5"], - "expectedHash": "028ff67731681e941af7b992d6e1129aed11b345f3" + "expectedParts": ["RawStmt", "stmt", "TransactionStmt", "kind", "TRANS_STMT_RELEASE"], + "expectedHash": "60d618658252d2af" }, { "input": "PREPARE TRANSACTION 'some_id'", - "expectedParts": ["RawStmt", "stmt", "TransactionStmt", "kind", "7"], - "expectedHash": "02780d78fc4001d7c7b221dafc6a5f71d2a60bb519" + "expectedParts": ["RawStmt", "stmt", "TransactionStmt", "kind", "TRANS_STMT_PREPARE"], + "expectedHash": "d993959a33d627d4" }, { "input": "START TRANSACTION READ WRITE", - "expectedParts": ["RawStmt", "stmt", "TransactionStmt", "kind", "1"], - "expectedHash": "026533aebe647cd56cc75921de13fdd2b9c2fe4706" + "expectedParts": ["RawStmt", "stmt", "TransactionStmt", "kind", "TRANS_STMT_START"], + "expectedHash": "4ca25828c835d55a" }, { "input": "DECLARE cursor_123 CURSOR FOR SELECT * FROM test WHERE id = 123", "expectedParts": ["RawStmt", "stmt", "DeclareCursorStmt", "options", "32", "query", "SelectStmt", "fromClause", "RangeVar", "inh", "true", "relname", "test", "relpersistence", - "p", "targetList", "ResTarget", "val", "ColumnRef", "fields", "A_Star", - "whereClause", "A_Expr", "lexpr", "ColumnRef", "fields", "String", "str", + "p", "limitOption", "LIMIT_OPTION_DEFAULT", "op", "SETOP_NONE", + "targetList", "ResTarget", "val", "ColumnRef", "fields", "A_Star", + "whereClause", "A_Expr", "kind", "AEXPR_OP", "lexpr", "ColumnRef", "fields", "String", "str", "id", "name", "String", "str", "="], - "expectedHash": "0214e7d0f761512078aec86fbdeab6e06982703b79" + "expectedHash": "0119adaeb91afad0" }, { "input": "FETCH 1000 FROM cursor_123", - "expectedParts": ["RawStmt", "stmt", "FetchStmt", "howMany", "1000"], - "expectedHash": "0242fed093117245ef78fbfef8b7433d23e15deb82" + "expectedParts": ["RawStmt", "stmt", "FetchStmt", "direction", "FETCH_FORWARD", "howMany", "1000"], + "expectedHash": "37f4d2f6a957ae48" }, { "input": "CLOSE cursor_123", "expectedParts": ["RawStmt", "stmt", "ClosePortalStmt"], - "expectedHash": "02746b7bf7ec5d162462a8851f28c527553260e6c0" + "expectedHash": "2c7963684fc2bad9" }, { "input": "-- nothing", "expectedParts": [], - "expectedHash": "02da39a3ee5e6b4b0d3255bfef95601890afd80709" + "expectedHash": "d8d13f8b2da6c9ad" }, { "input": "CREATE FOREIGN TABLE ft1 () SERVER no_server", - "expectedParts": ["RawStmt", "stmt", "CreateForeignTableStmt", "base", "CreateStmt", "relation", "RangeVar", "inh", "true", "relname", "ft1", "relpersistence", "p", "servername", "no_server"], - "expectedHash": "02086f531f62abde7c63eeecd70f52f227009cc40a" + "expectedParts": ["RawStmt", "stmt", "CreateForeignTableStmt", "base", "oncommit", "ONCOMMIT_NOOP", "relation", "inh", "true", "relname", "ft1", "relpersistence", "p", "servername", "no_server"], + "expectedHash": "74481c4af7c76be1" }, { - "input": "UPDATE x SET a = 1, b = 2", - "expectedParts": ["RawStmt", "stmt", "UpdateStmt", "relation", "RangeVar", "inh", "true", "relname", "x", "relpersistence", "p", "targetList", "ResTarget", "name", "a", "ResTarget", "name", "b"], - "expectedHash": "02c888ae857224dffe91cbf2e6cc3abc6a59d38954" + "input": "UPDATE x SET a = 1, b = 2, c = 3", + "expectedParts": ["RawStmt", "stmt", "UpdateStmt", "relation", "inh", "true", "relname", "x", "relpersistence", "p", "targetList", "ResTarget", "name", "b", "ResTarget", "name", "c", "ResTarget", "name", "a"], + "expectedHash": "fd5c248c0e642ce4" }, { "input": "UPDATE x SET z = now()", - "expectedParts": ["RawStmt", "stmt", "UpdateStmt", "relation", "RangeVar", "inh", "true", "relname", "x", "relpersistence", "p", "targetList", "ResTarget", "name", "z", "val", "FuncCall", "funcname", "String", "str", "now"], - "expectedHash": "021eb7a0cdb9a1eb9b0bd0aa41b9e23a53f2c5c8b5" + "expectedParts": ["RawStmt", "stmt", "UpdateStmt", "relation", "inh", "true", "relname", "x", "relpersistence", "p", "targetList", "ResTarget", "name", "z", "val", "FuncCall", "funcname", "String", "str", "now"], + "expectedHash": "78fe872f5ec28674" }, { "input": "CREATE TEMPORARY TABLE my_temp_table (test_id integer NOT NULL) ON COMMIT DROP", - "expectedParts": ["RawStmt", "stmt", "CreateStmt", "oncommit", "3", "relation", "RangeVar", "inh", "true", "relpersistence", "t", "tableElts", "ColumnDef", "colname", "test_id", "constraints", "Constraint", "contype", "1", "is_local", "true", "typeName", "TypeName", "names", "String", "str", "pg_catalog", "String", "str", "int4", "typemod", "-1"], - "expectedHash": "0282b35175ec22cfdae1f954c7c0ceaee8bc74a0c1" + "expectedParts": ["RawStmt", "stmt", "CreateStmt", "oncommit", "ONCOMMIT_DROP", "relation","inh", "true", "relpersistence", "t", "tableElts", "ColumnDef", "colname", "test_id", "constraints", "Constraint", "contype", "CONSTR_NOTNULL", "is_local", "true", "typeName", "names", "String", "str", "pg_catalog", "String", "str", "int4", "typemod", "-1"], + "expectedHash": "1407ed5c5bb00967" }, { "input": "CREATE TEMPORARY TABLE my_temp_table AS SELECT 1", - "expectedParts": ["RawStmt", "stmt", "CreateTableAsStmt", "into", "IntoClause", "rel", "RangeVar", "inh", "true", "relpersistence", "t", "query", "SelectStmt", "targetList", "ResTarget", "relkind", "37"], - "expectedHash": "0257b59721145c9c48f37ca5466d756b902fb5fe9a" + "expectedParts": ["RawStmt", "stmt", "CreateTableAsStmt", "into", "onCommit", "ONCOMMIT_NOOP", "rel", "inh", "true", "relpersistence", "t", "query", "SelectStmt", "limitOption", "LIMIT_OPTION_DEFAULT", "op", "SETOP_NONE", "targetList", "ResTarget", "relkind", "OBJECT_TABLE"], + "expectedHash": "dd5fac57c3c4524c" + }, + { + "input": "SELECT INTERVAL (0) $2", + "expectedParts": ["RawStmt", "stmt", "SelectStmt", "limitOption", "LIMIT_OPTION_DEFAULT", "op", "SETOP_NONE", "targetList", "ResTarget"], + "expectedHash": "50fde20626009aba" + }, + { + "input": "SELECT INTERVAL (2) $2", + "expectedParts": ["RawStmt", "stmt", "SelectStmt", "limitOption", "LIMIT_OPTION_DEFAULT", "op", "SETOP_NONE", "targetList", "ResTarget"], + "expectedHash": "50fde20626009aba" + }, + { + "input": "SELECT * FROM t WHERE t.a IN (1, 2) AND t.b = 3", + "expectedParts": ["RawStmt", "stmt", "SelectStmt", "fromClause", "RangeVar", "inh", "true", "relname", "t", "relpersistence", "p", "limitOption", "LIMIT_OPTION_DEFAULT", "op", "SETOP_NONE", "targetList", "ResTarget", "val", "ColumnRef", "fields", "A_Star", "whereClause", "BoolExpr", "args", "A_Expr", "kind", "AEXPR_OP", "lexpr", "ColumnRef", "fields", "String", "str", "t", "String", "str", "a", "name", "String", "str", "=", "A_Expr", "kind", "AEXPR_OP", "lexpr", "ColumnRef", "fields", "String", "str", "t", "String", "str", "b", "name", "String", "str", "=", "boolop", "AND_EXPR"], + "expectedHash": "346aea01be9173b6" + }, + { + "input": "SELECT * FROM t WHERE t.b = 3 AND t.a IN (1, 2)", + "expectedParts": ["RawStmt", "stmt", "SelectStmt", "fromClause", "RangeVar", "inh", "true", "relname", "t", "relpersistence", "p", "limitOption", "LIMIT_OPTION_DEFAULT", "op", "SETOP_NONE", "targetList", "ResTarget", "val", "ColumnRef", "fields", "A_Star", "whereClause", "BoolExpr", "args", "A_Expr", "kind", "AEXPR_OP", "lexpr", "ColumnRef", "fields", "String", "str", "t", "String", "str", "a", "name", "String", "str", "=", "A_Expr", "kind", "AEXPR_OP", "lexpr", "ColumnRef", "fields", "String", "str", "t", "String", "str", "b", "name", "String", "str", "=", "boolop", "AND_EXPR"], + "expectedHash": "346aea01be9173b6" + }, + { + "input": "SELECT * FROM t WHERE a && '[1,2]'", + "expectedParts": ["RawStmt", "stmt", "SelectStmt", "fromClause", "RangeVar", "inh", "true", "relname", "t", "relpersistence", "p", "limitOption", "LIMIT_OPTION_DEFAULT", "op", "SETOP_NONE", "targetList", "ResTarget", "val", "ColumnRef", "fields", "A_Star", "whereClause", "A_Expr", "kind", "AEXPR_OP", "lexpr", "ColumnRef", "fields", "String", "str", "a", "name", "String", "str", "&&"], + "expectedHash": "673f199f13dfe665" + }, + { + "input": "SELECT * FROM t WHERE a && '[1,2]'::int4range", + "expectedParts": ["RawStmt", "stmt", "SelectStmt", "fromClause", "RangeVar", "inh", "true", "relname", "t", "relpersistence", "p", "limitOption", "LIMIT_OPTION_DEFAULT", "op", "SETOP_NONE", "targetList", "ResTarget", "val", "ColumnRef", "fields", "A_Star", "whereClause", "A_Expr", "kind", "AEXPR_OP", "lexpr", "ColumnRef", "fields", "String", "str", "a", "name", "String", "str", "&&"], + "expectedHash": "673f199f13dfe665" + }, + { + "input": "SELECT * FROM t_20210301_x", + "expectedParts": ["RawStmt", "stmt", "SelectStmt", "fromClause", "RangeVar", "inh", "true", "relname", "t__x", "relpersistence", "p", "limitOption", "LIMIT_OPTION_DEFAULT", "op", "SETOP_NONE", "targetList", "ResTarget", "val", "ColumnRef", "fields", "A_Star"], + "expectedHash": "6f8169980cd70a25" + }, + { + "input": "SELECT * FROM t_20210302_x", + "expectedParts": ["RawStmt", "stmt", "SelectStmt", "fromClause", "RangeVar", "inh", "true", "relname", "t__x", "relpersistence", "p", "limitOption", "LIMIT_OPTION_DEFAULT", "op", "SETOP_NONE", "targetList", "ResTarget", "val", "ColumnRef", "fields", "A_Star"], + "expectedHash": "6f8169980cd70a25" + }, + { + "input": "SELECT * FROM t_20210302_y", + "expectedParts": ["RawStmt", "stmt", "SelectStmt", "fromClause", "RangeVar", "inh", "true", "relname", "t__y", "relpersistence", "p", "limitOption", "LIMIT_OPTION_DEFAULT", "op", "SETOP_NONE", "targetList", "ResTarget", "val", "ColumnRef", "fields", "A_Star"], + "expectedHash": "d357dac4a24fcf1b" + }, + { + "input": "SELECT * FROM t_1", + "expectedParts": ["RawStmt", "stmt", "SelectStmt", "fromClause", "RangeVar", "inh", "true", "relname", "t_1", "relpersistence", "p", "limitOption", "LIMIT_OPTION_DEFAULT", "op", "SETOP_NONE", "targetList", "ResTarget", "val", "ColumnRef", "fields", "A_Star"], + "expectedHash": "018bd9230646143e" + }, + { + "input": "SELECT * FROM t_2", + "expectedParts": ["RawStmt", "stmt", "SelectStmt", "fromClause", "RangeVar", "inh", "true", "relname", "t_2", "relpersistence", "p", "limitOption", "LIMIT_OPTION_DEFAULT", "op", "SETOP_NONE", "targetList", "ResTarget", "val", "ColumnRef", "fields", "A_Star"], + "expectedHash": "3f1444da570c1a66" } ] diff --git a/util/testing.go b/util/testing.go index d97ac32d..dce55578 100644 --- a/util/testing.go +++ b/util/testing.go @@ -12,10 +12,10 @@ func MakeStrNode(str string) nodes.String { return nodes.String{Str: str} } -func MakeIntNode(ival int64) nodes.Integer { - return nodes.Integer{Ival: ival} +func MakeIntNode(ival int64) *nodes.Node { + return &nodes.Node{Node: &nodes.Node_Integer{Integer: &nodes.Integer{Ival: int32(ival)}}} // FIXME } -func MakeListNode(items []nodes.Node) nodes.List { +func MakeListNode(items []*nodes.Node) nodes.List { return nodes.List{Items: items} }